summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--INSTALL2
-rw-r--r--LICENSE.LGPL2
-rwxr-xr-xbin/createpackage3
-rwxr-xr-xbin/createpackage.bat44
-rwxr-xr-xbin/createpackage.pl439
-rwxr-xr-xbin/elf2e32_qtwrapper3
-rw-r--r--bin/elf2e32_qtwrapper.bat3
-rwxr-xr-xbin/elf2e32_qtwrapper.pl325
-rwxr-xr-xbin/findtr4
-rwxr-xr-xbin/fixqt4headers.pl5
-rwxr-xr-xbin/patch_capabilities3
-rw-r--r--bin/patch_capabilities.bat1
-rwxr-xr-xbin/patch_capabilities.pl398
-rwxr-xr-xbin/qtmodule-configtests108
-rwxr-xr-xbin/setcepaths.bat4
-rwxr-xr-xbin/syncqt36
-rwxr-xr-xbin/syncqt.bat4
-rw-r--r--config.tests/mac/coreservices/coreservices.mm4
-rw-r--r--config.tests/mac/corewlan/corewlantest.mm4
-rw-r--r--config.tests/mac/crc/main.cpp4
-rw-r--r--config.tests/mac/xcodeversion.cpp4
-rw-r--r--config.tests/qpa/wayland/wayland.cpp4
-rw-r--r--config.tests/qpa/xcb-poll-for-queued-event/xcb-poll-for-queued-event.cpp4
-rw-r--r--config.tests/qpa/xcb-render/xcb-render.cpp4
-rw-r--r--config.tests/qpa/xcb-xlib/xcb-xlib.cpp4
-rw-r--r--config.tests/qpa/xcb/xcb.cpp4
-rw-r--r--config.tests/qws/ahi/ahi.cpp4
-rw-r--r--config.tests/qws/directfb/directfb.cpp4
-rw-r--r--config.tests/qws/sound/sound.cpp4
-rw-r--r--config.tests/qws/svgalib/svgalib.cpp4
-rw-r--r--config.tests/unix/3dnow/3dnow.cpp4
-rw-r--r--config.tests/unix/alsa/alsatest.cpp4
-rw-r--r--config.tests/unix/avx/avx.cpp4
-rwxr-xr-xconfig.tests/unix/bsymbolic_functions.test2
-rw-r--r--config.tests/unix/clock-gettime/clock-gettime.cpp4
-rw-r--r--config.tests/unix/clock-monotonic/clock-monotonic.cpp4
-rw-r--r--config.tests/unix/cups/cups.cpp4
-rw-r--r--config.tests/unix/db2/db2.cpp4
-rw-r--r--config.tests/unix/dbus/dbus.cpp4
-rw-r--r--config.tests/unix/doubleformat/doubleformattest.cpp4
-rw-r--r--config.tests/unix/egl/egl.cpp4
-rw-r--r--config.tests/unix/egl4gles1/egl4gles1.cpp4
-rwxr-xr-xconfig.tests/unix/endian.test2
-rw-r--r--config.tests/unix/endian/endiantest.cpp4
-rw-r--r--config.tests/unix/floatmath/floatmath.cpp4
-rw-r--r--config.tests/unix/freetype/freetype.cpp4
-rw-r--r--config.tests/unix/getaddrinfo/getaddrinfotest.cpp4
-rw-r--r--config.tests/unix/getifaddrs/getifaddrs.cpp4
-rw-r--r--config.tests/unix/glib/glib.cpp4
-rw-r--r--config.tests/unix/gnu-libiconv/gnu-libiconv.cpp4
-rw-r--r--config.tests/unix/gstreamer/gstreamer.cpp4
-rw-r--r--config.tests/unix/ibase/ibase.cpp4
-rw-r--r--config.tests/unix/iconv/iconv.cpp4
-rw-r--r--config.tests/unix/iconv/iconv.pro2
-rw-r--r--config.tests/unix/icu/icu.cpp4
-rw-r--r--config.tests/unix/inotify/inotifytest.cpp4
-rw-r--r--config.tests/unix/iodbc/iodbc.cpp4
-rw-r--r--config.tests/unix/ipv6ifname/ipv6ifname.cpp4
-rw-r--r--config.tests/unix/iwmmxt/iwmmxt.cpp4
-rw-r--r--config.tests/unix/javascriptcore-jit/hwcap_test.cpp4
-rw-r--r--config.tests/unix/libjpeg/libjpeg.cpp4
-rw-r--r--config.tests/unix/libmng/libmng.cpp54
-rw-r--r--config.tests/unix/libmng/libmng.pro4
-rw-r--r--config.tests/unix/libpng/libpng.cpp4
-rw-r--r--config.tests/unix/libtiff/libtiff.cpp65
-rw-r--r--config.tests/unix/libtiff/libtiff.pro4
-rw-r--r--config.tests/unix/mmx/mmx.cpp4
-rw-r--r--config.tests/unix/mremap/mremap.cpp4
-rw-r--r--config.tests/unix/mysql/mysql.cpp4
-rw-r--r--config.tests/unix/neon/neon.cpp4
-rw-r--r--config.tests/unix/nis/nis.cpp4
-rwxr-xr-xconfig.tests/unix/objcopy.test2
-rw-r--r--config.tests/unix/oci/oci.cpp4
-rw-r--r--config.tests/unix/odbc/odbc.cpp4
-rw-r--r--config.tests/unix/opengldesktop/opengldesktop.cpp4
-rw-r--r--config.tests/unix/opengles1/opengles1.cpp4
-rw-r--r--config.tests/unix/opengles2/opengles2.cpp4
-rw-r--r--config.tests/unix/openssl/openssl.cpp4
-rw-r--r--config.tests/unix/openssl/openssl.pri10
-rw-r--r--config.tests/unix/openssl/openssl.pro1
-rw-r--r--config.tests/unix/openvg/openvg.cpp4
-rw-r--r--config.tests/unix/pcre/pcre.cpp52
-rw-r--r--config.tests/unix/pcre/pcre.pro3
-rw-r--r--config.tests/unix/psql/psql.cpp4
-rw-r--r--config.tests/unix/ptrsize/ptrsizetest.cpp4
-rw-r--r--config.tests/unix/pulseaudio/pulseaudio.cpp4
-rw-r--r--config.tests/unix/shivavg/shivavg.cpp4
-rw-r--r--config.tests/unix/sqlite/sqlite.cpp4
-rw-r--r--config.tests/unix/sqlite2/sqlite2.cpp4
-rw-r--r--config.tests/unix/sse/sse.cpp4
-rw-r--r--config.tests/unix/sse2/sse2.cpp4
-rw-r--r--config.tests/unix/sse3/sse3.cpp4
-rw-r--r--config.tests/unix/sse4_1/sse4_1.cpp4
-rw-r--r--config.tests/unix/sse4_2/sse4_2.cpp4
-rw-r--r--config.tests/unix/ssse3/ssse3.cpp4
-rw-r--r--config.tests/unix/stdint/main.cpp4
-rw-r--r--config.tests/unix/stl/stltest.cpp4
-rw-r--r--config.tests/unix/tds/tds.cpp4
-rw-r--r--config.tests/unix/tslib/tslib.cpp4
-rw-r--r--config.tests/unix/zlib/zlib.cpp4
-rw-r--r--config.tests/x11/fontconfig/fontconfig.cpp4
-rw-r--r--config.tests/x11/glxfbconfig/glxfbconfig.cpp4
-rw-r--r--config.tests/x11/mitshm/mitshm.cpp4
-rw-r--r--config.tests/x11/notype/notypetest.cpp4
-rw-r--r--config.tests/x11/opengl/opengl.cpp4
-rw-r--r--config.tests/x11/sm/sm.cpp4
-rw-r--r--config.tests/x11/xcursor/xcursor.cpp4
-rw-r--r--config.tests/x11/xfixes/xfixes.cpp4
-rw-r--r--config.tests/x11/xinerama/xinerama.cpp4
-rw-r--r--config.tests/x11/xinput/xinput.cpp4
-rw-r--r--config.tests/x11/xinput2/xinput2.cpp4
-rw-r--r--config.tests/x11/xkb/xkb.cpp4
-rw-r--r--config.tests/x11/xlib/xlib.cpp4
-rw-r--r--config.tests/x11/xrandr/xrandr.cpp4
-rw-r--r--config.tests/x11/xrender/xrender.cpp4
-rw-r--r--config.tests/x11/xshape/xshape.cpp4
-rw-r--r--config.tests/x11/xsync/xsync.cpp4
-rw-r--r--config.tests/x11/xvideo/xvideo.cpp4
-rwxr-xr-xconfigure754
-rw-r--r--dist/changes-5.0.0101
-rw-r--r--doc/src/core/containers.qdoc803
-rw-r--r--doc/src/core/implicit-sharing.qdoc138
-rw-r--r--doc/src/core/objectmodel/metaobjects.qdoc137
-rw-r--r--doc/src/core/objectmodel/object.qdoc124
-rw-r--r--doc/src/core/objectmodel/objecttrees.qdoc102
-rw-r--r--doc/src/core/objectmodel/properties.qdoc273
-rw-r--r--doc/src/core/objectmodel/signalsandslots.qdoc468
-rw-r--r--doc/src/core/qtcore.qdoc42
-rw-r--r--doc/src/core/threads-basics.qdoc572
-rw-r--r--doc/src/core/threads.qdoc705
-rw-r--r--doc/src/corelib/containers.qdoc803
-rw-r--r--doc/src/corelib/implicit-sharing.qdoc138
-rw-r--r--doc/src/corelib/json.qdoc118
-rw-r--r--doc/src/corelib/objectmodel/metaobjects.qdoc137
-rw-r--r--doc/src/corelib/objectmodel/object.qdoc124
-rw-r--r--doc/src/corelib/objectmodel/objecttrees.qdoc102
-rw-r--r--doc/src/corelib/objectmodel/properties.qdoc273
-rw-r--r--doc/src/corelib/objectmodel/signalsandslots.qdoc468
-rw-r--r--doc/src/corelib/qtcore.qdoc42
-rw-r--r--doc/src/corelib/threads-basics.qdoc572
-rw-r--r--doc/src/corelib/threads.qdoc705
-rw-r--r--doc/src/dbus/qtdbus.qdoc4
-rw-r--r--doc/src/examples/2dpainting.qdoc4
-rw-r--r--doc/src/examples/addressbook.qdoc4
-rw-r--r--doc/src/examples/affine.qdoc4
-rw-r--r--doc/src/examples/analogclock.qdoc4
-rw-r--r--doc/src/examples/animatedtiles.qdoc4
-rw-r--r--doc/src/examples/appchooser.qdoc4
-rw-r--r--doc/src/examples/application.qdoc4
-rw-r--r--doc/src/examples/applicationicon.qdoc25
-rw-r--r--doc/src/examples/arrowpad.qdoc4
-rw-r--r--doc/src/examples/basicdrawing.qdoc4
-rw-r--r--doc/src/examples/basicgraphicslayouts.qdoc4
-rw-r--r--doc/src/examples/basiclayouts.qdoc4
-rw-r--r--doc/src/examples/basicsortfiltermodel.qdoc4
-rw-r--r--doc/src/examples/bearermonitor.qdoc4
-rw-r--r--doc/src/examples/blockingfortuneclient.qdoc4
-rw-r--r--doc/src/examples/blurpicker.qdoc4
-rw-r--r--doc/src/examples/books.qdoc4
-rw-r--r--doc/src/examples/borderlayout.qdoc4
-rw-r--r--doc/src/examples/boxes.qdoc4
-rw-r--r--doc/src/examples/broadcastreceiver.qdoc4
-rw-r--r--doc/src/examples/broadcastsender.qdoc4
-rw-r--r--doc/src/examples/cachedtable.qdoc4
-rw-r--r--doc/src/examples/calculator.qdoc4
-rw-r--r--doc/src/examples/calendar.qdoc4
-rw-r--r--doc/src/examples/calendarwidget.qdoc4
-rw-r--r--doc/src/examples/charactermap.qdoc4
-rw-r--r--doc/src/examples/chart.qdoc4
-rw-r--r--doc/src/examples/chip.qdoc4
-rw-r--r--doc/src/examples/classwizard.qdoc4
-rw-r--r--doc/src/examples/codecs.qdoc4
-rw-r--r--doc/src/examples/codeeditor.qdoc4
-rw-r--r--doc/src/examples/coloreditorfactory.qdoc4
-rw-r--r--doc/src/examples/combowidgetmapper.qdoc4
-rw-r--r--doc/src/examples/completer.qdoc4
-rw-r--r--doc/src/examples/complexpingpong.qdoc4
-rw-r--r--doc/src/examples/composition.qdoc4
-rw-r--r--doc/src/examples/concentriccircles.qdoc4
-rw-r--r--doc/src/examples/configdialog.qdoc4
-rw-r--r--doc/src/examples/contiguouscache.qdoc4
-rw-r--r--doc/src/examples/cube.qdoc4
-rw-r--r--doc/src/examples/customcompleter.qdoc4
-rw-r--r--doc/src/examples/customsortfiltermodel.qdoc4
-rw-r--r--doc/src/examples/customtype.qdoc4
-rw-r--r--doc/src/examples/customtypesending.qdoc4
-rw-r--r--doc/src/examples/dbscreen.qdoc4
-rw-r--r--doc/src/examples/dbus-chat.qdoc4
-rw-r--r--doc/src/examples/deform.qdoc4
-rw-r--r--doc/src/examples/diagramscene.qdoc4
-rw-r--r--doc/src/examples/digiflip.qdoc4
-rw-r--r--doc/src/examples/digitalclock.qdoc4
-rw-r--r--doc/src/examples/dirview.qdoc4
-rw-r--r--doc/src/examples/dockwidgets.qdoc4
-rw-r--r--doc/src/examples/dombookmarks.qdoc4
-rw-r--r--doc/src/examples/dragdroprobot.qdoc4
-rw-r--r--doc/src/examples/draggableicons.qdoc4
-rw-r--r--doc/src/examples/draggabletext.qdoc4
-rw-r--r--doc/src/examples/drilldown.qdoc4
-rw-r--r--doc/src/examples/dropsite.qdoc4
-rw-r--r--doc/src/examples/dynamiclayouts.qdoc4
-rw-r--r--doc/src/examples/easing.qdoc4
-rw-r--r--doc/src/examples/echoplugin.qdoc4
-rw-r--r--doc/src/examples/editabletreemodel.qdoc4
-rw-r--r--doc/src/examples/elasticnodes.qdoc4
-rw-r--r--doc/src/examples/elidedlabel.qdoc4
-rw-r--r--doc/src/examples/embeddeddialogs.qdoc4
-rw-r--r--doc/src/examples/eventtransitions.qdoc4
-rw-r--r--doc/src/examples/extension.qdoc4
-rw-r--r--doc/src/examples/factorial.qdoc4
-rw-r--r--doc/src/examples/fademessage.qdoc4
-rw-r--r--doc/src/examples/fetchmore.qdoc4
-rw-r--r--doc/src/examples/findfiles.qdoc4
-rw-r--r--doc/src/examples/fingerpaint.qdoc4
-rw-r--r--doc/src/examples/flickable.qdoc4
-rw-r--r--doc/src/examples/flightinfo.qdoc4
-rw-r--r--doc/src/examples/flowlayout.qdoc4
-rw-r--r--doc/src/examples/fontsampler.qdoc4
-rw-r--r--doc/src/examples/fortuneclient.qdoc4
-rw-r--r--doc/src/examples/fortuneserver.qdoc4
-rw-r--r--doc/src/examples/framebufferobject2.qdoc4
-rw-r--r--doc/src/examples/fridgemagnets.qdoc4
-rw-r--r--doc/src/examples/frozencolumn.qdoc4
-rw-r--r--doc/src/examples/googlesuggest.qdoc4
-rw-r--r--doc/src/examples/grabber.qdoc4
-rw-r--r--doc/src/examples/gradients.qdoc4
-rw-r--r--doc/src/examples/groupbox.qdoc4
-rw-r--r--doc/src/examples/hellogl.qdoc4
-rw-r--r--doc/src/examples/hellogl_es.qdoc4
-rw-r--r--doc/src/examples/hellotr.qdoc4
-rw-r--r--doc/src/examples/htmlinfo.qdoc13
-rw-r--r--doc/src/examples/http.qdoc4
-rw-r--r--doc/src/examples/i18n.qdoc4
-rw-r--r--doc/src/examples/icons.qdoc4
-rw-r--r--doc/src/examples/imagecomposition.qdoc4
-rw-r--r--doc/src/examples/imagegestures.qdoc4
-rw-r--r--doc/src/examples/imageviewer.qdoc4
-rw-r--r--doc/src/examples/inputpanel.qdoc224
-rw-r--r--doc/src/examples/interview.qdoc4
-rw-r--r--doc/src/examples/licensewizard.qdoc4
-rw-r--r--doc/src/examples/lighting.qdoc4
-rw-r--r--doc/src/examples/lightmaps.qdoc4
-rw-r--r--doc/src/examples/lineedits.qdoc4
-rw-r--r--doc/src/examples/localfortuneclient.qdoc4
-rw-r--r--doc/src/examples/localfortuneserver.qdoc4
-rw-r--r--doc/src/examples/loopback.qdoc4
-rw-r--r--doc/src/examples/macmainwindow.qdoc4
-rw-r--r--doc/src/examples/maemovibration.qdoc4
-rw-r--r--doc/src/examples/mainwindow.qdoc4
-rw-r--r--doc/src/examples/mandelbrot.qdoc4
-rw-r--r--doc/src/examples/masterdetail.qdoc4
-rw-r--r--doc/src/examples/mdi.qdoc4
-rw-r--r--doc/src/examples/menus.qdoc4
-rw-r--r--doc/src/examples/mousecalibration.qdoc4
-rw-r--r--doc/src/examples/moveblocks.qdoc4
-rw-r--r--doc/src/examples/movie.qdoc4
-rw-r--r--doc/src/examples/multicastreceiver.qdoc4
-rw-r--r--doc/src/examples/multicastsender.qdoc4
-rw-r--r--doc/src/examples/multipleinheritance.qdoc4
-rw-r--r--doc/src/examples/network-chat.qdoc4
-rw-r--r--doc/src/examples/orderform.qdoc4
-rw-r--r--doc/src/examples/orientation.qdoc4
-rw-r--r--doc/src/examples/overpainting.qdoc4
-rw-r--r--doc/src/examples/padnavigator.qdoc4
-rw-r--r--doc/src/examples/painterpaths.qdoc4
-rw-r--r--doc/src/examples/pathstroke.qdoc4
-rw-r--r--doc/src/examples/pbuffers.qdoc4
-rw-r--r--doc/src/examples/pbuffers2.qdoc4
-rw-r--r--doc/src/examples/pinchzoom.qdoc4
-rw-r--r--doc/src/examples/pingpong.qdoc4
-rw-r--r--doc/src/examples/pixelator.qdoc4
-rw-r--r--doc/src/examples/plugandpaint.qdoc4
-rw-r--r--doc/src/examples/querymodel.qdoc4
-rw-r--r--doc/src/examples/queuedcustomtype.qdoc4
-rw-r--r--doc/src/examples/raycasting.qdoc4
-rw-r--r--doc/src/examples/recentfiles.qdoc4
-rw-r--r--doc/src/examples/regexp.qdoc4
-rw-r--r--doc/src/examples/relationaltablemodel.qdoc4
-rw-r--r--doc/src/examples/rogue.qdoc4
-rw-r--r--doc/src/examples/rsslisting.qdoc4
-rw-r--r--doc/src/examples/samplebuffers.qdoc4
-rw-r--r--doc/src/examples/saxbookmarks.qdoc4
-rw-r--r--doc/src/examples/screenshot.qdoc4
-rw-r--r--doc/src/examples/scribble.qdoc4
-rw-r--r--doc/src/examples/sdi.qdoc4
-rw-r--r--doc/src/examples/securesocketclient.qdoc4
-rw-r--r--doc/src/examples/semaphores.qdoc4
-rw-r--r--doc/src/examples/settingseditor.qdoc4
-rw-r--r--doc/src/examples/shapedclock.qdoc4
-rw-r--r--doc/src/examples/sharedmemory.qdoc4
-rw-r--r--doc/src/examples/simpledecoration.qdoc4
-rw-r--r--doc/src/examples/simpledommodel.qdoc4
-rw-r--r--doc/src/examples/simpletreemodel.qdoc4
-rw-r--r--doc/src/examples/simplewidgetmapper.qdoc4
-rw-r--r--doc/src/examples/sipdialog.qdoc4
-rw-r--r--doc/src/examples/sliders.qdoc4
-rw-r--r--doc/src/examples/spinboxdelegate.qdoc10
-rw-r--r--doc/src/examples/spinboxes.qdoc4
-rw-r--r--doc/src/examples/spreadsheet.qdoc4
-rw-r--r--doc/src/examples/sqlbrowser.qdoc4
-rw-r--r--doc/src/examples/sqlwidgetmapper.qdoc4
-rw-r--r--doc/src/examples/standarddialogs.qdoc4
-rw-r--r--doc/src/examples/stardelegate.qdoc4
-rw-r--r--doc/src/examples/states.qdoc4
-rw-r--r--doc/src/examples/stickman.qdoc4
-rw-r--r--doc/src/examples/styleexample.qdoc4
-rw-r--r--doc/src/examples/styleplugin.qdoc4
-rw-r--r--doc/src/examples/styles.qdoc4
-rw-r--r--doc/src/examples/stylesheet.qdoc4
-rw-r--r--doc/src/examples/sub-attaq.qdoc4
-rw-r--r--doc/src/examples/svgalib.qdoc4
-rw-r--r--doc/src/examples/symbianvibration.qdoc192
-rw-r--r--doc/src/examples/syntaxhighlighter.qdoc4
-rw-r--r--doc/src/examples/tabdialog.qdoc4
-rw-r--r--doc/src/examples/tablemodel.qdoc4
-rw-r--r--doc/src/examples/tablet.qdoc4
-rw-r--r--doc/src/examples/tetrix.qdoc4
-rw-r--r--doc/src/examples/textedit.qdoc4
-rw-r--r--doc/src/examples/textfinder.qdoc4
-rw-r--r--doc/src/examples/textures.qdoc4
-rw-r--r--doc/src/examples/threadedfortuneserver.qdoc4
-rw-r--r--doc/src/examples/tooltips.qdoc4
-rw-r--r--doc/src/examples/torrent.qdoc4
-rw-r--r--doc/src/examples/trafficlight.qdoc4
-rw-r--r--doc/src/examples/transformations.qdoc4
-rw-r--r--doc/src/examples/treemodelcompleter.qdoc4
-rw-r--r--doc/src/examples/trivialwizard.qdoc4
-rw-r--r--doc/src/examples/trollprint.qdoc4
-rw-r--r--doc/src/examples/twowaybutton.qdoc4
-rw-r--r--doc/src/examples/undo.qdoc4
-rw-r--r--doc/src/examples/undoframework.qdoc4
-rw-r--r--doc/src/examples/waitconditions.qdoc4
-rw-r--r--doc/src/examples/wiggly.qdoc4
-rw-r--r--doc/src/examples/windowflags.qdoc4
-rw-r--r--doc/src/examples/xmlstreamlint.qdoc4
-rw-r--r--doc/src/gui/coordsys.qdoc4
-rw-r--r--doc/src/gui/paintsystem.qdoc4
-rw-r--r--doc/src/gui/qtgui.qdoc4
-rw-r--r--doc/src/images/symbianvibration-example.pngbin23217 -> 0 bytes
-rw-r--r--doc/src/network/files-and-resources/datastreamformat.qdoc4
-rw-r--r--doc/src/network/files-and-resources/resources.qdoc4
-rw-r--r--doc/src/network/network-programming/bearermanagement.qdoc15
-rw-r--r--doc/src/network/network-programming/qtnetwork.qdoc4
-rw-r--r--doc/src/network/network-programming/ssl.qdoc4
-rw-r--r--doc/src/network/qtnetwork.qdoc4
-rw-r--r--doc/src/printsupport/printing.qdoc4
-rw-r--r--doc/src/printsupport/qtprintsupport.qdoc4
-rw-r--r--doc/src/snippets/brush/brush.cpp4
-rw-r--r--doc/src/snippets/brush/gradientcreationsnippet.cpp4
-rw-r--r--doc/src/snippets/buffer/buffer.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_containers.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_coordsys.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_examples_application.qdoc4
-rw-r--r--doc/src/snippets/code/doc_src_examples_arrowpad.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_examples_arrowpad.qdoc4
-rw-r--r--doc/src/snippets/code/doc_src_examples_dropsite.qdoc4
-rw-r--r--doc/src/snippets/code/doc_src_examples_editabletreemodel.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_examples_hellotr.qdoc4
-rw-r--r--doc/src/snippets/code/doc_src_examples_icons.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_examples_icons.qdoc4
-rw-r--r--doc/src/snippets/code/doc_src_examples_imageviewer.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_examples_imageviewer.qdoc4
-rw-r--r--doc/src/snippets/code/doc_src_examples_simpledommodel.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_examples_simpletreemodel.qdoc4
-rw-r--r--doc/src/snippets/code/doc_src_examples_svgalib.qdoc4
-rw-r--r--doc/src/snippets/code/doc_src_examples_textfinder.pro4
-rw-r--r--doc/src/snippets/code/doc_src_examples_trollprint.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_groups.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_layout.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_objecttrees.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_properties.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_qalgorithms.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_qcache.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_qiterator.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_qnamespace.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_qnamespace.qdoc4
-rw-r--r--doc/src/snippets/code/doc_src_qpair.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_qplugin.cpp6
-rw-r--r--doc/src/snippets/code/doc_src_qplugin.pro6
-rw-r--r--doc/src/snippets/code/doc_src_qset.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_qsignalspy.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_qt4-mainwindow.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_qt4-styles.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_qtcore.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_qtestevent.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_qtgui.pro4
-rw-r--r--doc/src/snippets/code/doc_src_qtnetwork.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_qtnetwork.pro4
-rw-r--r--doc/src/snippets/code/doc_src_qtsql.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_qtsql.pro4
-rw-r--r--doc/src/snippets/code/doc_src_qtxml.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_qtxml.pro4
-rw-r--r--doc/src/snippets/code/doc_src_qvarlengtharray.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_resources.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_resources.qdoc4
-rw-r--r--doc/src/snippets/code/doc_src_sql-driver.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_sql-driver.qdoc4
-rw-r--r--doc/src/snippets/code/doc_src_styles.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_stylesheet.cpp4
-rw-r--r--doc/src/snippets/code/doc_src_stylesheet.qdoc4
-rw-r--r--doc/src/snippets/code/src.gui.text.qtextdocumentwriter.cpp4
-rw-r--r--doc/src/snippets/code/src.qdbus.qdbuspendingcall.cpp4
-rw-r--r--doc/src/snippets/code/src.qdbus.qdbuspendingreply.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_codecs_qtextcodec.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_codecs_qtextcodecplugin.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_concurrent_qfuture.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_concurrent_qfuturesynchronizer.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_concurrent_qfuturewatcher.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_concurrent_qthreadpool.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_global_qglobal.cpp21
-rw-r--r--doc/src/snippets/code/src_corelib_io_qabstractfileengine.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_io_qdatastream.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_io_qdir.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_io_qdiriterator.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_io_qfile.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_io_qfileinfo.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_io_qiodevice.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_io_qprocess.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_io_qsettings.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_io_qtemporarydir.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_io_qtemporaryfile.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_io_qtextstream.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_io_qurl.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qabstracteventdispatcher.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp15
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qcoreapplication.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qmetaobject.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qmimedata.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qobject.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qsystemsemaphore.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qtimer.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_kernel_qvariant.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_plugin_qlibrary.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_plugin_quuid.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_statemachine_qstatemachine.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_thread_qatomic.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_thread_qmutex.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_thread_qmutexpool.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_thread_qreadwritelock.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_thread_qsemaphore.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_thread_qthread.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qbitarray.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qbytearray.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qdatetime.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qeasingcurve.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qhash.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qlinkedlist.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qlistdata.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qlocale.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qmap.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qpoint.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qqueue.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qrect.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qregexp.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qsize.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qstring.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qtimeline.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_tools_qvector.cpp4
-rw-r--r--doc/src/snippets/code/src_corelib_xml_qxmlstream.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_accessible_qaccessible.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_dialogs_qabstractprintdialog.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_dialogs_qfontdialog.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_dialogs_qmessagebox.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_dialogs_qwizard.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_effects_qgraphicseffect.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_embedded_qcopchannel_qws.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_embedded_qmouse_qws.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_embedded_qmousetslib_qws.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_embedded_qscreen_qws.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_embedded_qtransportauth_qws.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_embedded_qwindowsystem_qws.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_graphicsview_qgraphicsgridlayout.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_graphicsview_qgraphicslinearlayout.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_graphicsview_qgraphicsproxywidget.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_graphicsview_qgraphicsscene.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_graphicsview_qgraphicssceneevent.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_graphicsview_qgraphicsview.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_graphicsview_qgraphicswidget.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_image_qbitmap.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_image_qicon.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_image_qimage.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_image_qimagereader.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_image_qimagewriter.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_image_qmovie.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_image_qpixmap.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_image_qpixmapcache.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_image_qpixmapfilter.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_itemviews_qabstractitemview.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_itemviews_qdatawidgetmapper.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_itemviews_qidentityproxymodel.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_itemviews_qitemeditorfactory.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_itemviews_qitemselectionmodel.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_itemviews_qstandarditemmodel.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_itemviews_qtablewidget.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_itemviews_qtreewidget.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qaction.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qapplication.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qapplication_x11.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qclipboard.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qevent.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qformlayout.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qkeysequence.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qlayout.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qlayoutitem.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qshortcut.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qshortcutmap.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qsound.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_kernel_qwidget.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_painting_qbrush.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_painting_qcolor.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_painting_qdrawutil.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_painting_qmatrix.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_painting_qpainter.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_painting_qpainterpath.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_painting_qpen.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_painting_qregion.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_painting_qregion_unix.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_painting_qtransform.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_qopenglshaderprogram.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_qproxystyle.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_styles_qstyle.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_styles_qstyleoption.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_text_qfont.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_text_qfontmetrics.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_text_qsyntaxhighlighter.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_text_qtextcursor.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_text_qtextdocument.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_text_qtextlayout.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_util_qcompleter.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_util_qdesktopservices.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_util_qundostack.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qabstractbutton.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qabstractspinbox.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qcalendarwidget.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qcheckbox.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qdatetimeedit.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qdockwidget.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qframe.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qgroupbox.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qlabel.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qlineedit.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qmainwindow.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qmenu.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qmenubar.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qplaintextedit.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qpushbutton.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qradiobutton.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qrubberband.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qscrollarea.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qspinbox.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qsplashscreen.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qsplitter.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qstatusbar.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qtextbrowser.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qtextedit.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qvalidator.cpp4
-rw-r--r--doc/src/snippets/code/src_gui_widgets_qworkspace.cpp4
-rw-r--r--doc/src/snippets/code/src_network_access_qftp.cpp4
-rw-r--r--doc/src/snippets/code/src_network_access_qhttp.cpp4
-rw-r--r--doc/src/snippets/code/src_network_access_qhttpmultipart.cpp4
-rw-r--r--doc/src/snippets/code/src_network_access_qhttppart.cpp4
-rw-r--r--doc/src/snippets/code/src_network_access_qnetworkaccessmanager.cpp4
-rw-r--r--doc/src/snippets/code/src_network_access_qnetworkdiskcache.cpp4
-rw-r--r--doc/src/snippets/code/src_network_access_qnetworkreply.cpp4
-rw-r--r--doc/src/snippets/code/src_network_access_qnetworkrequest.cpp4
-rw-r--r--doc/src/snippets/code/src_network_bearer_qnetworkconfigmanager.cpp4
-rw-r--r--doc/src/snippets/code/src_network_kernel_qdnslookup.cpp73
-rw-r--r--doc/src/snippets/code/src_network_kernel_qhostaddress.cpp4
-rw-r--r--doc/src/snippets/code/src_network_kernel_qhostinfo.cpp4
-rw-r--r--doc/src/snippets/code/src_network_kernel_qnetworkproxy.cpp4
-rw-r--r--doc/src/snippets/code/src_network_socket_qabstractsocket.cpp4
-rw-r--r--doc/src/snippets/code/src_network_socket_qlocalsocket_unix.cpp4
-rw-r--r--doc/src/snippets/code/src_network_socket_qnativesocketengine.cpp4
-rw-r--r--doc/src/snippets/code/src_network_socket_qtcpserver.cpp4
-rw-r--r--doc/src/snippets/code/src_network_socket_qudpsocket.cpp4
-rw-r--r--doc/src/snippets/code/src_network_ssl_qsslcertificate.cpp4
-rw-r--r--doc/src/snippets/code/src_network_ssl_qsslconfiguration.cpp4
-rw-r--r--doc/src/snippets/code/src_network_ssl_qsslsocket.cpp4
-rw-r--r--doc/src/snippets/code/src_opengl_qgl.cpp4
-rw-r--r--doc/src/snippets/code/src_opengl_qglcolormap.cpp4
-rw-r--r--doc/src/snippets/code/src_opengl_qglpixelbuffer.cpp4
-rw-r--r--doc/src/snippets/code/src_opengl_qglshaderprogram.cpp4
-rw-r--r--doc/src/snippets/code/src_qdbus_qdbusabstractinterface.cpp4
-rw-r--r--doc/src/snippets/code/src_qdbus_qdbusargument.cpp4
-rw-r--r--doc/src/snippets/code/src_qdbus_qdbuscontext.cpp4
-rw-r--r--doc/src/snippets/code/src_qdbus_qdbusinterface.cpp4
-rw-r--r--doc/src/snippets/code/src_qdbus_qdbusmetatype.cpp4
-rw-r--r--doc/src/snippets/code/src_qdbus_qdbusreply.cpp4
-rw-r--r--doc/src/snippets/code/src_qtestlib_qtestcase.cpp4
-rw-r--r--doc/src/snippets/code/src_sql_kernel_qsqldatabase.cpp4
-rw-r--r--doc/src/snippets/code/src_sql_kernel_qsqldriver.cpp4
-rw-r--r--doc/src/snippets/code/src_sql_kernel_qsqlerror.cpp4
-rw-r--r--doc/src/snippets/code/src_sql_kernel_qsqlindex.cpp4
-rw-r--r--doc/src/snippets/code/src_sql_kernel_qsqlquery.cpp4
-rw-r--r--doc/src/snippets/code/src_sql_kernel_qsqlresult.cpp4
-rw-r--r--doc/src/snippets/code/src_sql_models_qsqlquerymodel.cpp4
-rw-r--r--doc/src/snippets/code/src_xml_dom_qdom.cpp4
-rw-r--r--doc/src/snippets/code/src_xml_sax_qxml.cpp4
-rw-r--r--doc/src/snippets/customstyle/customstyle.cpp4
-rw-r--r--doc/src/snippets/customstyle/customstyle.h4
-rw-r--r--doc/src/snippets/customviewstyle.cpp4
-rw-r--r--doc/src/snippets/dialogs/dialogs.cpp4
-rw-r--r--doc/src/snippets/dockwidgets/mainwindow.cpp4
-rw-r--r--doc/src/snippets/dragging/mainwindow.cpp4
-rw-r--r--doc/src/snippets/droparea.cpp4
-rw-r--r--doc/src/snippets/file/file.cpp4
-rw-r--r--doc/src/snippets/filedialogurls.cpp4
-rw-r--r--doc/src/snippets/fileinfo/main.cpp4
-rw-r--r--doc/src/snippets/graphicssceneadditemsnippet.cpp4
-rw-r--r--doc/src/snippets/image/image.cpp4
-rw-r--r--doc/src/snippets/image/supportedformat.cpp4
-rw-r--r--doc/src/snippets/javastyle.cpp4
-rw-r--r--doc/src/snippets/layouts/layouts.cpp4
-rw-r--r--doc/src/snippets/mainwindowsnippet.cpp4
-rw-r--r--doc/src/snippets/matrix/matrix.cpp4
-rw-r--r--doc/src/snippets/mdiareasnippets.cpp4
-rw-r--r--doc/src/snippets/myscrollarea.cpp4
-rw-r--r--doc/src/snippets/network/tcpwait.cpp4
-rw-r--r--doc/src/snippets/ntfsp.cpp4
-rw-r--r--doc/src/snippets/picture/picture.cpp4
-rw-r--r--doc/src/snippets/pointer/pointer.cpp4
-rw-r--r--doc/src/snippets/polygon/polygon.cpp4
-rw-r--r--doc/src/snippets/printing-qprinter/errors.cpp4
-rw-r--r--doc/src/snippets/printing-qprinter/object.cpp4
-rw-r--r--doc/src/snippets/process/process.cpp4
-rw-r--r--doc/src/snippets/qdbusextratypes/qdbusextratypes.cpp4
-rw-r--r--doc/src/snippets/qdebug/qdebugsnippet.cpp4
-rw-r--r--doc/src/snippets/qdir-listfiles/main.cpp4
-rw-r--r--doc/src/snippets/qdir-namefilters/main.cpp4
-rw-r--r--doc/src/snippets/qelapsedtimer/main.cpp4
-rw-r--r--doc/src/snippets/qfontdatabase/main.cpp4
-rw-r--r--doc/src/snippets/qlistwidget-using/mainwindow.cpp4
-rw-r--r--doc/src/snippets/qlogging/qloggingsnippet.cpp54
-rw-r--r--doc/src/snippets/qmacnativewidget/main.mm4
-rw-r--r--doc/src/snippets/qmetaobject-invokable/main.cpp4
-rw-r--r--doc/src/snippets/qmetaobject-invokable/window.cpp4
-rw-r--r--doc/src/snippets/qmetaobject-invokable/window.h4
-rw-r--r--doc/src/snippets/qprocess-environment/main.cpp4
-rw-r--r--doc/src/snippets/qprocess/qprocess-simpleexecution.cpp4
-rw-r--r--doc/src/snippets/qsignalmapper/buttonwidget.cpp4
-rw-r--r--doc/src/snippets/qsignalmapper/buttonwidget.h4
-rw-r--r--doc/src/snippets/qsortfilterproxymodel-details/main.cpp4
-rw-r--r--doc/src/snippets/qsplashscreen/main.cpp4
-rw-r--r--doc/src/snippets/qstack/main.cpp4
-rw-r--r--doc/src/snippets/qstackedlayout/main.cpp4
-rw-r--r--doc/src/snippets/qstackedwidget/main.cpp4
-rw-r--r--doc/src/snippets/qstatustipevent/main.cpp4
-rw-r--r--doc/src/snippets/qstring/main.cpp19
-rw-r--r--doc/src/snippets/qstring/stringbuilder.cpp4
-rw-r--r--doc/src/snippets/qstringlist/main.cpp4
-rw-r--r--doc/src/snippets/qstringlistmodel/main.cpp4
-rw-r--r--doc/src/snippets/qstyleoption/main.cpp4
-rw-r--r--doc/src/snippets/qstyleplugin/main.cpp4
-rw-r--r--doc/src/snippets/qtablewidget-resizing/mainwindow.cpp4
-rw-r--r--doc/src/snippets/qtablewidget-using/mainwindow.cpp4
-rw-r--r--doc/src/snippets/qtcast/qtcast.cpp4
-rw-r--r--doc/src/snippets/qtreewidget-using/mainwindow.cpp4
-rw-r--r--doc/src/snippets/qtreewidgetitemiterator-using/mainwindow.cpp4
-rw-r--r--doc/src/snippets/quiloader/main.cpp4
-rw-r--r--doc/src/snippets/quiloader/mywidget.cpp4
-rw-r--r--doc/src/snippets/qx11embedcontainer/main.cpp4
-rw-r--r--doc/src/snippets/qx11embedwidget/main.cpp4
-rw-r--r--doc/src/snippets/qxmlstreamwriter/main.cpp4
-rw-r--r--doc/src/snippets/separations/finalwidget.cpp4
-rw-r--r--doc/src/snippets/settings/settings.cpp4
-rw-r--r--doc/src/snippets/shareddirmodel/main.cpp4
-rw-r--r--doc/src/snippets/sharedemployee/employee.h4
-rw-r--r--doc/src/snippets/sharedemployee/main.cpp4
-rw-r--r--doc/src/snippets/signalmapper/filereader.cpp4
-rw-r--r--doc/src/snippets/signalsandslots/lcdnumber.h4
-rw-r--r--doc/src/snippets/signalsandslots/signalsandslots.cpp4
-rw-r--r--doc/src/snippets/signalsandslots/signalsandslots.h4
-rw-r--r--doc/src/snippets/splitter/splitter.cpp4
-rw-r--r--doc/src/snippets/splitterhandle/splitter.cpp4
-rw-r--r--doc/src/snippets/splitterhandle/splitter.h4
-rw-r--r--doc/src/snippets/sqldatabase/sqldatabase.cpp4
-rw-r--r--doc/src/snippets/streaming/main.cpp4
-rw-r--r--doc/src/snippets/styles/styles.cpp4
-rw-r--r--doc/src/snippets/stylesheet/common-mistakes.cpp4
-rw-r--r--doc/src/snippets/textblock-fragments/xmlwriter.cpp4
-rw-r--r--doc/src/snippets/textdocument-css/main.cpp4
-rw-r--r--doc/src/snippets/textdocument-imagedrop/textedit.cpp4
-rw-r--r--doc/src/snippets/textdocument-listitemstyles/main.cpp4
-rw-r--r--doc/src/snippets/textdocument-listitemstyles/mainwindow.cpp4
-rw-r--r--doc/src/snippets/textdocument-listitemstyles/mainwindow.h4
-rw-r--r--doc/src/snippets/textdocument-lists/mainwindow.cpp4
-rw-r--r--doc/src/snippets/textdocument-resources/main.cpp4
-rw-r--r--doc/src/snippets/textdocument-tables/mainwindow.cpp4
-rw-r--r--doc/src/snippets/textdocument-texttable/main.cpp4
-rw-r--r--doc/src/snippets/textdocumentendsnippet.cpp4
-rw-r--r--doc/src/snippets/threads/threads.cpp4
-rw-r--r--doc/src/snippets/threads/threads.h4
-rw-r--r--doc/src/snippets/timeline/main.cpp4
-rw-r--r--doc/src/snippets/timers/timers.cpp4
-rw-r--r--doc/src/snippets/transform/main.cpp4
-rw-r--r--doc/src/snippets/whatsthis/whatsthis.cpp4
-rw-r--r--doc/src/snippets/widget-mask/main.cpp4
-rw-r--r--doc/src/snippets/widgetdelegate.cpp4
-rw-r--r--doc/src/snippets/widgetprinting.cpp4
-rw-r--r--doc/src/snippets/widgets-tutorial/template.cpp4
-rw-r--r--doc/src/snippets/xml/rsslisting/handler.cpp4
-rw-r--r--doc/src/snippets/xml/rsslisting/rsslisting.cpp4
-rw-r--r--doc/src/snippets/xml/simpleparse/main.cpp4
-rw-r--r--doc/src/sql/qtsql.qdoc4
-rw-r--r--doc/src/sql/sql-programming/qsqldatatype-table.qdoc4
-rw-r--r--doc/src/sql/sql-programming/sql-driver.qdoc4
-rw-r--r--doc/src/sql/sql-programming/sql-programming.qdoc4
-rw-r--r--doc/src/widgets/addressbook-fr.qdoc4
-rw-r--r--doc/src/widgets/addressbook.qdoc4
-rw-r--r--doc/src/widgets/modelview.qdoc4
-rw-r--r--doc/src/widgets/qtwidgets.qdoc4
-rw-r--r--doc/src/widgets/widgets-and-layouts/focus.qdoc4
-rw-r--r--doc/src/widgets/widgets-and-layouts/gallery-cde.qdoc4
-rw-r--r--doc/src/widgets/widgets-and-layouts/gallery-cleanlooks.qdoc4
-rw-r--r--doc/src/widgets/widgets-and-layouts/gallery-gtk.qdoc4
-rw-r--r--doc/src/widgets/widgets-and-layouts/gallery-macintosh.qdoc4
-rw-r--r--doc/src/widgets/widgets-and-layouts/gallery-motif.qdoc4
-rw-r--r--doc/src/widgets/widgets-and-layouts/gallery-plastique.qdoc4
-rw-r--r--doc/src/widgets/widgets-and-layouts/gallery-windows.qdoc4
-rw-r--r--doc/src/widgets/widgets-and-layouts/gallery-windowsvista.qdoc4
-rw-r--r--doc/src/widgets/widgets-and-layouts/gallery-windowsxp.qdoc4
-rw-r--r--doc/src/widgets/widgets-and-layouts/gallery.qdoc4
-rw-r--r--doc/src/widgets/widgets-and-layouts/layout.qdoc4
-rw-r--r--doc/src/widgets/widgets-and-layouts/styles.qdoc4
-rw-r--r--doc/src/widgets/widgets-and-layouts/stylesheet.qdoc4
-rw-r--r--doc/src/widgets/widgets-and-layouts/widgets.qdoc4
-rw-r--r--doc/src/widgets/widgets-tutorial.qdoc4
-rw-r--r--doc/src/widgets/windows-and-dialogs/dialogs.qdoc4
-rw-r--r--doc/src/widgets/windows-and-dialogs/mainwindow.qdoc4
-rw-r--r--doc/src/xml/qtxml.qdoc4
-rw-r--r--examples/animation/animatedtiles/main.cpp4
-rw-r--r--examples/animation/appchooser/main.cpp4
-rw-r--r--examples/animation/easing/animation.h4
-rw-r--r--examples/animation/easing/main.cpp4
-rw-r--r--examples/animation/easing/window.cpp4
-rw-r--r--examples/animation/easing/window.h4
-rw-r--r--examples/animation/moveblocks/main.cpp4
-rw-r--r--examples/animation/states/main.cpp4
-rw-r--r--examples/animation/stickman/animation.cpp4
-rw-r--r--examples/animation/stickman/animation.h4
-rw-r--r--examples/animation/stickman/graphicsview.cpp4
-rw-r--r--examples/animation/stickman/graphicsview.h4
-rw-r--r--examples/animation/stickman/lifecycle.cpp4
-rw-r--r--examples/animation/stickman/lifecycle.h4
-rw-r--r--examples/animation/stickman/main.cpp4
-rw-r--r--examples/animation/stickman/node.cpp4
-rw-r--r--examples/animation/stickman/node.h4
-rw-r--r--examples/animation/stickman/rectbutton.cpp4
-rw-r--r--examples/animation/stickman/rectbutton.h4
-rw-r--r--examples/animation/stickman/stickman.cpp4
-rw-r--r--examples/animation/stickman/stickman.h4
-rw-r--r--examples/animation/sub-attaq/animationmanager.cpp4
-rw-r--r--examples/animation/sub-attaq/animationmanager.h4
-rw-r--r--examples/animation/sub-attaq/boat.cpp4
-rw-r--r--examples/animation/sub-attaq/boat.h4
-rw-r--r--examples/animation/sub-attaq/boat_p.h4
-rw-r--r--examples/animation/sub-attaq/bomb.cpp4
-rw-r--r--examples/animation/sub-attaq/bomb.h4
-rw-r--r--examples/animation/sub-attaq/graphicsscene.cpp4
-rw-r--r--examples/animation/sub-attaq/graphicsscene.h4
-rw-r--r--examples/animation/sub-attaq/main.cpp4
-rw-r--r--examples/animation/sub-attaq/mainwindow.cpp4
-rw-r--r--examples/animation/sub-attaq/mainwindow.h4
-rw-r--r--examples/animation/sub-attaq/pixmapitem.cpp4
-rw-r--r--examples/animation/sub-attaq/pixmapitem.h4
-rw-r--r--examples/animation/sub-attaq/progressitem.cpp4
-rw-r--r--examples/animation/sub-attaq/progressitem.h4
-rw-r--r--examples/animation/sub-attaq/qanimationstate.cpp4
-rw-r--r--examples/animation/sub-attaq/qanimationstate.h5
-rw-r--r--examples/animation/sub-attaq/states.cpp4
-rw-r--r--examples/animation/sub-attaq/states.h4
-rw-r--r--examples/animation/sub-attaq/submarine.cpp4
-rw-r--r--examples/animation/sub-attaq/submarine.h4
-rw-r--r--examples/animation/sub-attaq/submarine_p.h4
-rw-r--r--examples/animation/sub-attaq/textinformationitem.cpp4
-rw-r--r--examples/animation/sub-attaq/textinformationitem.h4
-rw-r--r--examples/animation/sub-attaq/torpedo.cpp4
-rw-r--r--examples/animation/sub-attaq/torpedo.h4
-rw-r--r--examples/dbus/complexpingpong/complexping.cpp4
-rw-r--r--examples/dbus/complexpingpong/complexping.h4
-rw-r--r--examples/dbus/complexpingpong/complexpong.cpp4
-rw-r--r--examples/dbus/complexpingpong/complexpong.h4
-rw-r--r--examples/dbus/complexpingpong/ping-common.h4
-rw-r--r--examples/dbus/dbus-chat/chat.cpp4
-rw-r--r--examples/dbus/dbus-chat/chat.h4
-rw-r--r--examples/dbus/dbus-chat/chat_adaptor.cpp4
-rw-r--r--examples/dbus/dbus-chat/chat_adaptor.h4
-rw-r--r--examples/dbus/dbus-chat/chat_interface.cpp4
-rw-r--r--examples/dbus/dbus-chat/chat_interface.h4
-rw-r--r--examples/dbus/listnames/listnames.cpp4
-rw-r--r--examples/dbus/pingpong/ping-common.h4
-rw-r--r--examples/dbus/pingpong/ping.cpp4
-rw-r--r--examples/dbus/pingpong/pong.cpp4
-rw-r--r--examples/dbus/pingpong/pong.h4
-rw-r--r--examples/dbus/remotecontrolledcar/car/car.cpp4
-rw-r--r--examples/dbus/remotecontrolledcar/car/car.h4
-rw-r--r--examples/dbus/remotecontrolledcar/car/car_adaptor.cpp4
-rw-r--r--examples/dbus/remotecontrolledcar/car/car_adaptor.h4
-rw-r--r--examples/dbus/remotecontrolledcar/car/main.cpp4
-rw-r--r--examples/dbus/remotecontrolledcar/controller/car_interface.cpp4
-rw-r--r--examples/dbus/remotecontrolledcar/controller/car_interface.h4
-rw-r--r--examples/dbus/remotecontrolledcar/controller/controller.cpp4
-rw-r--r--examples/dbus/remotecontrolledcar/controller/controller.h4
-rw-r--r--examples/dbus/remotecontrolledcar/controller/main.cpp4
-rw-r--r--examples/desktop/screenshot/main.cpp4
-rw-r--r--examples/desktop/screenshot/screenshot.cpp4
-rw-r--r--examples/desktop/screenshot/screenshot.h4
-rw-r--r--examples/dialogs/classwizard/classwizard.cpp6
-rw-r--r--examples/dialogs/classwizard/classwizard.h4
-rw-r--r--examples/dialogs/classwizard/main.cpp4
-rw-r--r--examples/dialogs/configdialog/configdialog.cpp4
-rw-r--r--examples/dialogs/configdialog/configdialog.h4
-rw-r--r--examples/dialogs/configdialog/main.cpp4
-rw-r--r--examples/dialogs/configdialog/pages.cpp4
-rw-r--r--examples/dialogs/configdialog/pages.h4
-rw-r--r--examples/dialogs/extension/finddialog.cpp4
-rw-r--r--examples/dialogs/extension/finddialog.h4
-rw-r--r--examples/dialogs/extension/main.cpp4
-rw-r--r--examples/dialogs/findfiles/main.cpp4
-rw-r--r--examples/dialogs/findfiles/window.cpp4
-rw-r--r--examples/dialogs/findfiles/window.h4
-rw-r--r--examples/dialogs/licensewizard/licensewizard.cpp4
-rw-r--r--examples/dialogs/licensewizard/licensewizard.h4
-rw-r--r--examples/dialogs/licensewizard/main.cpp4
-rw-r--r--examples/dialogs/sipdialog/dialog.cpp4
-rw-r--r--examples/dialogs/sipdialog/dialog.h4
-rw-r--r--examples/dialogs/sipdialog/main.cpp4
-rw-r--r--examples/dialogs/standarddialogs/dialog.cpp4
-rw-r--r--examples/dialogs/standarddialogs/dialog.h4
-rw-r--r--examples/dialogs/standarddialogs/main.cpp4
-rw-r--r--examples/dialogs/tabdialog/main.cpp4
-rw-r--r--examples/dialogs/tabdialog/tabdialog.cpp4
-rw-r--r--examples/dialogs/tabdialog/tabdialog.h4
-rw-r--r--examples/dialogs/trivialwizard/trivialwizard.cpp4
-rw-r--r--examples/draganddrop/draggableicons/dragwidget.cpp4
-rw-r--r--examples/draganddrop/draggableicons/dragwidget.h4
-rw-r--r--examples/draganddrop/draggableicons/main.cpp4
-rw-r--r--examples/draganddrop/draggabletext/draglabel.cpp4
-rw-r--r--examples/draganddrop/draggabletext/draglabel.h4
-rw-r--r--examples/draganddrop/draggabletext/dragwidget.cpp4
-rw-r--r--examples/draganddrop/draggabletext/dragwidget.h4
-rw-r--r--examples/draganddrop/draggabletext/main.cpp4
-rw-r--r--examples/draganddrop/dropsite/droparea.cpp4
-rw-r--r--examples/draganddrop/dropsite/droparea.h4
-rw-r--r--examples/draganddrop/dropsite/dropsitewindow.cpp4
-rw-r--r--examples/draganddrop/dropsite/dropsitewindow.h4
-rw-r--r--examples/draganddrop/dropsite/main.cpp4
-rw-r--r--examples/draganddrop/fridgemagnets/draglabel.cpp4
-rw-r--r--examples/draganddrop/fridgemagnets/draglabel.h4
-rw-r--r--examples/draganddrop/fridgemagnets/dragwidget.cpp4
-rw-r--r--examples/draganddrop/fridgemagnets/dragwidget.h4
-rw-r--r--examples/draganddrop/fridgemagnets/main.cpp4
-rw-r--r--examples/draganddrop/puzzle/main.cpp4
-rw-r--r--examples/draganddrop/puzzle/mainwindow.cpp4
-rw-r--r--examples/draganddrop/puzzle/mainwindow.h4
-rw-r--r--examples/draganddrop/puzzle/pieceslist.cpp4
-rw-r--r--examples/draganddrop/puzzle/pieceslist.h4
-rw-r--r--examples/draganddrop/puzzle/puzzlewidget.cpp4
-rw-r--r--examples/draganddrop/puzzle/puzzlewidget.h4
-rw-r--r--examples/effects/blurpicker/blureffect.cpp4
-rw-r--r--examples/effects/blurpicker/blureffect.h4
-rw-r--r--examples/effects/blurpicker/blurpicker.cpp4
-rw-r--r--examples/effects/blurpicker/blurpicker.h4
-rw-r--r--examples/effects/blurpicker/main.cpp4
-rw-r--r--examples/effects/fademessage/fademessage.cpp4
-rw-r--r--examples/effects/fademessage/fademessage.h4
-rw-r--r--examples/effects/fademessage/main.cpp4
-rw-r--r--examples/effects/lighting/lighting.cpp4
-rw-r--r--examples/effects/lighting/lighting.h4
-rw-r--r--examples/effects/lighting/main.cpp4
-rw-r--r--examples/embedded/digiflip/digiflip.cpp4
-rw-r--r--examples/embedded/flickable/flickable.cpp4
-rw-r--r--examples/embedded/flickable/flickable.h4
-rw-r--r--examples/embedded/flickable/main.cpp4
-rw-r--r--examples/embedded/flightinfo/flightinfo.cpp4
-rw-r--r--examples/embedded/lightmaps/lightmaps.cpp4
-rw-r--r--examples/embedded/lightmaps/lightmaps.h4
-rw-r--r--examples/embedded/lightmaps/main.cpp4
-rw-r--r--examples/embedded/lightmaps/mapzoom.cpp4
-rw-r--r--examples/embedded/lightmaps/mapzoom.h4
-rw-r--r--examples/embedded/lightmaps/slippymap.cpp4
-rw-r--r--examples/embedded/lightmaps/slippymap.h4
-rw-r--r--examples/embedded/raycasting/raycasting.cpp8
-rw-r--r--examples/embedded/styleexample/main.cpp4
-rw-r--r--examples/embedded/styleexample/stylewidget.cpp4
-rw-r--r--examples/embedded/styleexample/stylewidget.h4
-rw-r--r--examples/gestures/imagegestures/imagewidget.cpp4
-rw-r--r--examples/gestures/imagegestures/imagewidget.h4
-rw-r--r--examples/gestures/imagegestures/main.cpp4
-rw-r--r--examples/gestures/imagegestures/mainwidget.cpp4
-rw-r--r--examples/gestures/imagegestures/mainwidget.h4
-rw-r--r--examples/graphicsview/anchorlayout/main.cpp4
-rw-r--r--examples/graphicsview/basicgraphicslayouts/layoutitem.cpp4
-rw-r--r--examples/graphicsview/basicgraphicslayouts/layoutitem.h4
-rw-r--r--examples/graphicsview/basicgraphicslayouts/main.cpp4
-rw-r--r--examples/graphicsview/basicgraphicslayouts/window.cpp4
-rw-r--r--examples/graphicsview/basicgraphicslayouts/window.h4
-rw-r--r--examples/graphicsview/boxes/basic.fsh4
-rw-r--r--examples/graphicsview/boxes/basic.vsh4
-rw-r--r--examples/graphicsview/boxes/dotted.fsh4
-rw-r--r--examples/graphicsview/boxes/fresnel.fsh4
-rw-r--r--examples/graphicsview/boxes/glass.fsh4
-rw-r--r--examples/graphicsview/boxes/glbuffers.cpp4
-rw-r--r--examples/graphicsview/boxes/glbuffers.h4
-rw-r--r--examples/graphicsview/boxes/glextensions.cpp4
-rw-r--r--examples/graphicsview/boxes/glextensions.h4
-rw-r--r--examples/graphicsview/boxes/gltrianglemesh.h4
-rw-r--r--examples/graphicsview/boxes/granite.fsh4
-rw-r--r--examples/graphicsview/boxes/main.cpp4
-rw-r--r--examples/graphicsview/boxes/marble.fsh4
-rw-r--r--examples/graphicsview/boxes/qtbox.cpp4
-rw-r--r--examples/graphicsview/boxes/qtbox.h4
-rw-r--r--examples/graphicsview/boxes/reflection.fsh4
-rw-r--r--examples/graphicsview/boxes/refraction.fsh4
-rw-r--r--examples/graphicsview/boxes/roundedbox.cpp4
-rw-r--r--examples/graphicsview/boxes/roundedbox.h4
-rw-r--r--examples/graphicsview/boxes/scene.cpp4
-rw-r--r--examples/graphicsview/boxes/scene.h4
-rw-r--r--examples/graphicsview/boxes/trackball.cpp4
-rw-r--r--examples/graphicsview/boxes/trackball.h4
-rw-r--r--examples/graphicsview/boxes/wood.fsh4
-rw-r--r--examples/graphicsview/chip/chip.cpp4
-rw-r--r--examples/graphicsview/chip/chip.h4
-rw-r--r--examples/graphicsview/chip/main.cpp4
-rw-r--r--examples/graphicsview/chip/mainwindow.cpp4
-rw-r--r--examples/graphicsview/chip/mainwindow.h4
-rw-r--r--examples/graphicsview/chip/view.cpp4
-rw-r--r--examples/graphicsview/chip/view.h4
-rw-r--r--examples/graphicsview/collidingmice/main.cpp4
-rw-r--r--examples/graphicsview/collidingmice/mouse.cpp4
-rw-r--r--examples/graphicsview/collidingmice/mouse.h4
-rw-r--r--examples/graphicsview/diagramscene/arrow.cpp4
-rw-r--r--examples/graphicsview/diagramscene/arrow.h4
-rw-r--r--examples/graphicsview/diagramscene/diagramitem.cpp4
-rw-r--r--examples/graphicsview/diagramscene/diagramitem.h4
-rw-r--r--examples/graphicsview/diagramscene/diagramscene.cpp4
-rw-r--r--examples/graphicsview/diagramscene/diagramscene.h4
-rw-r--r--examples/graphicsview/diagramscene/diagramtextitem.cpp4
-rw-r--r--examples/graphicsview/diagramscene/diagramtextitem.h4
-rw-r--r--examples/graphicsview/diagramscene/main.cpp4
-rw-r--r--examples/graphicsview/diagramscene/mainwindow.cpp4
-rw-r--r--examples/graphicsview/diagramscene/mainwindow.h4
-rw-r--r--examples/graphicsview/dragdroprobot/coloritem.cpp4
-rw-r--r--examples/graphicsview/dragdroprobot/coloritem.h4
-rw-r--r--examples/graphicsview/dragdroprobot/main.cpp4
-rw-r--r--examples/graphicsview/dragdroprobot/robot.cpp4
-rw-r--r--examples/graphicsview/dragdroprobot/robot.h4
-rw-r--r--examples/graphicsview/elasticnodes/edge.cpp4
-rw-r--r--examples/graphicsview/elasticnodes/edge.h4
-rw-r--r--examples/graphicsview/elasticnodes/graphwidget.cpp4
-rw-r--r--examples/graphicsview/elasticnodes/graphwidget.h4
-rw-r--r--examples/graphicsview/elasticnodes/main.cpp4
-rw-r--r--examples/graphicsview/elasticnodes/node.cpp4
-rw-r--r--examples/graphicsview/elasticnodes/node.h4
-rw-r--r--examples/graphicsview/embeddeddialogs/customproxy.cpp4
-rw-r--r--examples/graphicsview/embeddeddialogs/customproxy.h4
-rw-r--r--examples/graphicsview/embeddeddialogs/embeddeddialog.cpp4
-rw-r--r--examples/graphicsview/embeddeddialogs/embeddeddialog.h4
-rw-r--r--examples/graphicsview/embeddeddialogs/main.cpp4
-rw-r--r--examples/graphicsview/flowlayout/flowlayout.cpp4
-rw-r--r--examples/graphicsview/flowlayout/flowlayout.h4
-rw-r--r--examples/graphicsview/flowlayout/main.cpp4
-rw-r--r--examples/graphicsview/flowlayout/window.cpp4
-rw-r--r--examples/graphicsview/flowlayout/window.h4
-rw-r--r--examples/graphicsview/padnavigator/flippablepad.cpp4
-rw-r--r--examples/graphicsview/padnavigator/flippablepad.h4
-rw-r--r--examples/graphicsview/padnavigator/main.cpp4
-rw-r--r--examples/graphicsview/padnavigator/padnavigator.cpp4
-rw-r--r--examples/graphicsview/padnavigator/padnavigator.h4
-rw-r--r--examples/graphicsview/padnavigator/roundrectitem.cpp4
-rw-r--r--examples/graphicsview/padnavigator/roundrectitem.h4
-rw-r--r--examples/graphicsview/padnavigator/splashitem.cpp4
-rw-r--r--examples/graphicsview/padnavigator/splashitem.h4
-rw-r--r--examples/graphicsview/simpleanchorlayout/main.cpp4
-rw-r--r--examples/graphicsview/weatheranchorlayout/main.cpp4
-rw-r--r--examples/ipc/localfortuneclient/client.cpp4
-rw-r--r--examples/ipc/localfortuneclient/client.h4
-rw-r--r--examples/ipc/localfortuneclient/main.cpp4
-rw-r--r--examples/ipc/localfortuneserver/main.cpp4
-rw-r--r--examples/ipc/localfortuneserver/server.cpp4
-rw-r--r--examples/ipc/localfortuneserver/server.h4
-rw-r--r--examples/ipc/sharedmemory/dialog.cpp4
-rw-r--r--examples/ipc/sharedmemory/dialog.h4
-rw-r--r--examples/ipc/sharedmemory/main.cpp4
-rw-r--r--examples/itemviews/addressbook/adddialog.cpp4
-rw-r--r--examples/itemviews/addressbook/adddialog.h4
-rw-r--r--examples/itemviews/addressbook/addresswidget.cpp4
-rw-r--r--examples/itemviews/addressbook/addresswidget.h4
-rw-r--r--examples/itemviews/addressbook/main.cpp4
-rw-r--r--examples/itemviews/addressbook/mainwindow.cpp4
-rw-r--r--examples/itemviews/addressbook/mainwindow.h4
-rw-r--r--examples/itemviews/addressbook/newaddresstab.cpp4
-rw-r--r--examples/itemviews/addressbook/newaddresstab.h4
-rw-r--r--examples/itemviews/addressbook/tablemodel.cpp4
-rw-r--r--examples/itemviews/addressbook/tablemodel.h4
-rw-r--r--examples/itemviews/basicsortfiltermodel/main.cpp4
-rw-r--r--examples/itemviews/basicsortfiltermodel/window.cpp4
-rw-r--r--examples/itemviews/basicsortfiltermodel/window.h4
-rw-r--r--examples/itemviews/chart/main.cpp4
-rw-r--r--examples/itemviews/chart/mainwindow.cpp4
-rw-r--r--examples/itemviews/chart/mainwindow.h4
-rw-r--r--examples/itemviews/chart/pieview.cpp7
-rw-r--r--examples/itemviews/chart/pieview.h6
-rw-r--r--examples/itemviews/coloreditorfactory/colorlisteditor.cpp4
-rw-r--r--examples/itemviews/coloreditorfactory/colorlisteditor.h4
-rw-r--r--examples/itemviews/coloreditorfactory/main.cpp4
-rw-r--r--examples/itemviews/coloreditorfactory/window.cpp4
-rw-r--r--examples/itemviews/coloreditorfactory/window.h4
-rw-r--r--examples/itemviews/combowidgetmapper/main.cpp4
-rw-r--r--examples/itemviews/combowidgetmapper/window.cpp4
-rw-r--r--examples/itemviews/combowidgetmapper/window.h4
-rw-r--r--examples/itemviews/customsortfiltermodel/main.cpp4
-rw-r--r--examples/itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp4
-rw-r--r--examples/itemviews/customsortfiltermodel/mysortfilterproxymodel.h4
-rw-r--r--examples/itemviews/customsortfiltermodel/window.cpp4
-rw-r--r--examples/itemviews/customsortfiltermodel/window.h4
-rw-r--r--examples/itemviews/dirview/main.cpp4
-rw-r--r--examples/itemviews/editabletreemodel/main.cpp4
-rw-r--r--examples/itemviews/editabletreemodel/mainwindow.cpp4
-rw-r--r--examples/itemviews/editabletreemodel/mainwindow.h4
-rw-r--r--examples/itemviews/editabletreemodel/treeitem.cpp4
-rw-r--r--examples/itemviews/editabletreemodel/treeitem.h4
-rw-r--r--examples/itemviews/editabletreemodel/treemodel.cpp4
-rw-r--r--examples/itemviews/editabletreemodel/treemodel.h4
-rw-r--r--examples/itemviews/fetchmore/filelistmodel.cpp4
-rw-r--r--examples/itemviews/fetchmore/filelistmodel.h4
-rw-r--r--examples/itemviews/fetchmore/main.cpp4
-rw-r--r--examples/itemviews/fetchmore/window.cpp4
-rw-r--r--examples/itemviews/fetchmore/window.h4
-rw-r--r--examples/itemviews/frozencolumn/freezetablewidget.cpp4
-rw-r--r--examples/itemviews/frozencolumn/freezetablewidget.h4
-rw-r--r--examples/itemviews/frozencolumn/main.cpp4
-rw-r--r--examples/itemviews/interview/main.cpp4
-rw-r--r--examples/itemviews/interview/model.cpp4
-rw-r--r--examples/itemviews/interview/model.h4
-rw-r--r--examples/itemviews/pixelator/imagemodel.cpp4
-rw-r--r--examples/itemviews/pixelator/imagemodel.h4
-rw-r--r--examples/itemviews/pixelator/main.cpp4
-rw-r--r--examples/itemviews/pixelator/mainwindow.cpp4
-rw-r--r--examples/itemviews/pixelator/mainwindow.h4
-rw-r--r--examples/itemviews/pixelator/pixeldelegate.cpp4
-rw-r--r--examples/itemviews/pixelator/pixeldelegate.h4
-rw-r--r--examples/itemviews/puzzle/main.cpp4
-rw-r--r--examples/itemviews/puzzle/mainwindow.cpp4
-rw-r--r--examples/itemviews/puzzle/mainwindow.h4
-rw-r--r--examples/itemviews/puzzle/piecesmodel.cpp4
-rw-r--r--examples/itemviews/puzzle/piecesmodel.h4
-rw-r--r--examples/itemviews/puzzle/puzzle.pro2
-rw-r--r--examples/itemviews/puzzle/puzzlewidget.cpp4
-rw-r--r--examples/itemviews/puzzle/puzzlewidget.h4
-rw-r--r--examples/itemviews/simpledommodel/domitem.cpp4
-rw-r--r--examples/itemviews/simpledommodel/domitem.h4
-rw-r--r--examples/itemviews/simpledommodel/dommodel.cpp4
-rw-r--r--examples/itemviews/simpledommodel/dommodel.h4
-rw-r--r--examples/itemviews/simpledommodel/main.cpp4
-rw-r--r--examples/itemviews/simpledommodel/mainwindow.cpp4
-rw-r--r--examples/itemviews/simpledommodel/mainwindow.h4
-rw-r--r--examples/itemviews/simpletreemodel/main.cpp4
-rw-r--r--examples/itemviews/simpletreemodel/treeitem.cpp4
-rw-r--r--examples/itemviews/simpletreemodel/treeitem.h4
-rw-r--r--examples/itemviews/simpletreemodel/treemodel.cpp4
-rw-r--r--examples/itemviews/simpletreemodel/treemodel.h4
-rw-r--r--examples/itemviews/simplewidgetmapper/main.cpp4
-rw-r--r--examples/itemviews/simplewidgetmapper/window.cpp4
-rw-r--r--examples/itemviews/simplewidgetmapper/window.h4
-rw-r--r--examples/itemviews/spinboxdelegate/delegate.cpp4
-rw-r--r--examples/itemviews/spinboxdelegate/delegate.h4
-rw-r--r--examples/itemviews/spinboxdelegate/main.cpp4
-rw-r--r--examples/itemviews/spreadsheet/main.cpp4
-rw-r--r--examples/itemviews/spreadsheet/printview.cpp4
-rw-r--r--examples/itemviews/spreadsheet/printview.h4
-rw-r--r--examples/itemviews/spreadsheet/spreadsheet.cpp4
-rw-r--r--examples/itemviews/spreadsheet/spreadsheet.h4
-rw-r--r--examples/itemviews/spreadsheet/spreadsheetdelegate.cpp4
-rw-r--r--examples/itemviews/spreadsheet/spreadsheetdelegate.h4
-rw-r--r--examples/itemviews/spreadsheet/spreadsheetitem.cpp4
-rw-r--r--examples/itemviews/spreadsheet/spreadsheetitem.h4
-rw-r--r--examples/itemviews/stardelegate/main.cpp4
-rw-r--r--examples/itemviews/stardelegate/stardelegate.cpp4
-rw-r--r--examples/itemviews/stardelegate/stardelegate.h4
-rw-r--r--examples/itemviews/stardelegate/stareditor.cpp4
-rw-r--r--examples/itemviews/stardelegate/stareditor.h4
-rw-r--r--examples/itemviews/stardelegate/starrating.cpp4
-rw-r--r--examples/itemviews/stardelegate/starrating.h4
-rw-r--r--examples/ja_JP/linguist/hellotr/main.cpp4
-rw-r--r--examples/layouts/basiclayouts/dialog.cpp4
-rw-r--r--examples/layouts/basiclayouts/dialog.h4
-rw-r--r--examples/layouts/basiclayouts/main.cpp4
-rw-r--r--examples/layouts/borderlayout/borderlayout.cpp4
-rw-r--r--examples/layouts/borderlayout/borderlayout.h4
-rw-r--r--examples/layouts/borderlayout/main.cpp4
-rw-r--r--examples/layouts/borderlayout/window.cpp4
-rw-r--r--examples/layouts/borderlayout/window.h4
-rw-r--r--examples/layouts/dynamiclayouts/dialog.cpp4
-rw-r--r--examples/layouts/dynamiclayouts/dialog.h4
-rw-r--r--examples/layouts/dynamiclayouts/main.cpp4
-rw-r--r--examples/layouts/flowlayout/flowlayout.cpp4
-rw-r--r--examples/layouts/flowlayout/flowlayout.h4
-rw-r--r--examples/layouts/flowlayout/main.cpp4
-rw-r--r--examples/layouts/flowlayout/window.cpp4
-rw-r--r--examples/layouts/flowlayout/window.h4
-rw-r--r--examples/linguist/arrowpad/arrowpad.cpp4
-rw-r--r--examples/linguist/arrowpad/arrowpad.h4
-rw-r--r--examples/linguist/arrowpad/main.cpp4
-rw-r--r--examples/linguist/arrowpad/mainwindow.cpp4
-rw-r--r--examples/linguist/arrowpad/mainwindow.h4
-rw-r--r--examples/linguist/hellotr/main.cpp4
-rw-r--r--examples/linguist/trollprint/main.cpp4
-rw-r--r--examples/linguist/trollprint/mainwindow.cpp4
-rw-r--r--examples/linguist/trollprint/mainwindow.h4
-rw-r--r--examples/linguist/trollprint/printpanel.cpp4
-rw-r--r--examples/linguist/trollprint/printpanel.h4
-rw-r--r--examples/mainwindows/application/main.cpp4
-rw-r--r--examples/mainwindows/application/mainwindow.cpp4
-rw-r--r--examples/mainwindows/application/mainwindow.h4
-rw-r--r--examples/mainwindows/dockwidgets/main.cpp4
-rw-r--r--examples/mainwindows/dockwidgets/mainwindow.cpp4
-rw-r--r--examples/mainwindows/dockwidgets/mainwindow.h4
-rw-r--r--examples/mainwindows/macmainwindow/macmainwindow.h4
-rw-r--r--examples/mainwindows/macmainwindow/macmainwindow.mm4
-rw-r--r--examples/mainwindows/macmainwindow/main.cpp4
-rw-r--r--examples/mainwindows/mainwindow/colorswatch.cpp4
-rw-r--r--examples/mainwindows/mainwindow/colorswatch.h4
-rw-r--r--examples/mainwindows/mainwindow/main.cpp4
-rw-r--r--examples/mainwindows/mainwindow/mainwindow.cpp4
-rw-r--r--examples/mainwindows/mainwindow/mainwindow.h4
-rw-r--r--examples/mainwindows/mainwindow/toolbar.cpp4
-rw-r--r--examples/mainwindows/mainwindow/toolbar.h4
-rw-r--r--examples/mainwindows/mdi/main.cpp4
-rw-r--r--examples/mainwindows/mdi/mainwindow.cpp4
-rw-r--r--examples/mainwindows/mdi/mainwindow.h4
-rw-r--r--examples/mainwindows/mdi/mdichild.cpp4
-rw-r--r--examples/mainwindows/mdi/mdichild.h4
-rw-r--r--examples/mainwindows/menus/main.cpp4
-rw-r--r--examples/mainwindows/menus/mainwindow.cpp4
-rw-r--r--examples/mainwindows/menus/mainwindow.h4
-rw-r--r--examples/mainwindows/recentfiles/main.cpp4
-rw-r--r--examples/mainwindows/recentfiles/mainwindow.cpp4
-rw-r--r--examples/mainwindows/recentfiles/mainwindow.h4
-rw-r--r--examples/mainwindows/sdi/main.cpp4
-rw-r--r--examples/mainwindows/sdi/mainwindow.cpp4
-rw-r--r--examples/mainwindows/sdi/mainwindow.h4
-rw-r--r--examples/network/bearermonitor/bearermonitor.cpp4
-rw-r--r--examples/network/bearermonitor/bearermonitor.h4
-rw-r--r--examples/network/bearermonitor/main.cpp4
-rw-r--r--examples/network/bearermonitor/sessionwidget.cpp4
-rw-r--r--examples/network/bearermonitor/sessionwidget.h4
-rw-r--r--examples/network/blockingfortuneclient/blockingclient.cpp4
-rw-r--r--examples/network/blockingfortuneclient/blockingclient.h4
-rw-r--r--examples/network/blockingfortuneclient/fortunethread.cpp4
-rw-r--r--examples/network/blockingfortuneclient/fortunethread.h4
-rw-r--r--examples/network/blockingfortuneclient/main.cpp4
-rw-r--r--examples/network/broadcastreceiver/main.cpp4
-rw-r--r--examples/network/broadcastreceiver/receiver.cpp4
-rw-r--r--examples/network/broadcastreceiver/receiver.h4
-rw-r--r--examples/network/broadcastsender/main.cpp4
-rw-r--r--examples/network/broadcastsender/sender.cpp4
-rw-r--r--examples/network/broadcastsender/sender.h4
-rw-r--r--examples/network/dnslookup/dnslookup.cpp155
-rw-r--r--examples/network/dnslookup/dnslookup.h61
-rw-r--r--examples/network/dnslookup/dnslookup.pro12
-rw-r--r--examples/network/download/main.cpp4
-rw-r--r--examples/network/downloadmanager/downloadmanager.cpp4
-rw-r--r--examples/network/downloadmanager/downloadmanager.h4
-rw-r--r--examples/network/downloadmanager/main.cpp4
-rw-r--r--examples/network/downloadmanager/textprogressbar.cpp4
-rw-r--r--examples/network/downloadmanager/textprogressbar.h4
-rw-r--r--examples/network/fortuneclient/client.cpp4
-rw-r--r--examples/network/fortuneclient/client.h4
-rw-r--r--examples/network/fortuneclient/main.cpp4
-rw-r--r--examples/network/fortuneserver/main.cpp4
-rw-r--r--examples/network/fortuneserver/server.cpp4
-rw-r--r--examples/network/fortuneserver/server.h4
-rw-r--r--examples/network/googlesuggest/googlesuggest.cpp4
-rw-r--r--examples/network/googlesuggest/googlesuggest.h4
-rw-r--r--examples/network/googlesuggest/main.cpp4
-rw-r--r--examples/network/googlesuggest/searchbox.cpp4
-rw-r--r--examples/network/googlesuggest/searchbox.h4
-rw-r--r--examples/network/http/httpwindow.cpp4
-rw-r--r--examples/network/http/httpwindow.h4
-rw-r--r--examples/network/http/main.cpp4
-rw-r--r--examples/network/loopback/dialog.cpp4
-rw-r--r--examples/network/loopback/dialog.h4
-rw-r--r--examples/network/loopback/main.cpp4
-rw-r--r--examples/network/multicastreceiver/main.cpp4
-rw-r--r--examples/network/multicastreceiver/receiver.cpp4
-rw-r--r--examples/network/multicastreceiver/receiver.h4
-rw-r--r--examples/network/multicastsender/main.cpp4
-rw-r--r--examples/network/multicastsender/sender.cpp4
-rw-r--r--examples/network/multicastsender/sender.h4
-rw-r--r--examples/network/network-chat/chatdialog.cpp4
-rw-r--r--examples/network/network-chat/chatdialog.h4
-rw-r--r--examples/network/network-chat/client.cpp4
-rw-r--r--examples/network/network-chat/client.h4
-rw-r--r--examples/network/network-chat/connection.cpp4
-rw-r--r--examples/network/network-chat/connection.h4
-rw-r--r--examples/network/network-chat/main.cpp4
-rw-r--r--examples/network/network-chat/peermanager.cpp4
-rw-r--r--examples/network/network-chat/peermanager.h4
-rw-r--r--examples/network/network-chat/server.cpp4
-rw-r--r--examples/network/network-chat/server.h4
-rw-r--r--examples/network/network.pro1
-rw-r--r--examples/network/securesocketclient/certificateinfo.cpp4
-rw-r--r--examples/network/securesocketclient/certificateinfo.h4
-rw-r--r--examples/network/securesocketclient/main.cpp4
-rw-r--r--examples/network/securesocketclient/sslclient.cpp4
-rw-r--r--examples/network/securesocketclient/sslclient.h4
-rw-r--r--examples/network/threadedfortuneserver/dialog.cpp4
-rw-r--r--examples/network/threadedfortuneserver/dialog.h4
-rw-r--r--examples/network/threadedfortuneserver/fortuneserver.cpp4
-rw-r--r--examples/network/threadedfortuneserver/fortuneserver.h4
-rw-r--r--examples/network/threadedfortuneserver/fortunethread.cpp4
-rw-r--r--examples/network/threadedfortuneserver/fortunethread.h4
-rw-r--r--examples/network/threadedfortuneserver/main.cpp4
-rw-r--r--examples/network/torrent/addtorrentdialog.cpp4
-rw-r--r--examples/network/torrent/addtorrentdialog.h4
-rw-r--r--examples/network/torrent/bencodeparser.cpp4
-rw-r--r--examples/network/torrent/bencodeparser.h4
-rw-r--r--examples/network/torrent/connectionmanager.cpp4
-rw-r--r--examples/network/torrent/connectionmanager.h4
-rw-r--r--examples/network/torrent/filemanager.cpp4
-rw-r--r--examples/network/torrent/filemanager.h4
-rw-r--r--examples/network/torrent/main.cpp4
-rw-r--r--examples/network/torrent/mainwindow.cpp4
-rw-r--r--examples/network/torrent/mainwindow.h4
-rw-r--r--examples/network/torrent/metainfo.cpp4
-rw-r--r--examples/network/torrent/metainfo.h4
-rw-r--r--examples/network/torrent/peerwireclient.cpp6
-rw-r--r--examples/network/torrent/peerwireclient.h6
-rw-r--r--examples/network/torrent/ratecontroller.cpp4
-rw-r--r--examples/network/torrent/ratecontroller.h4
-rw-r--r--examples/network/torrent/torrentclient.cpp4
-rw-r--r--examples/network/torrent/torrentclient.h4
-rw-r--r--examples/network/torrent/torrentserver.cpp4
-rw-r--r--examples/network/torrent/torrentserver.h4
-rw-r--r--examples/network/torrent/trackerclient.cpp4
-rw-r--r--examples/network/torrent/trackerclient.h4
-rw-r--r--examples/opengl/2dpainting/glwidget.cpp4
-rw-r--r--examples/opengl/2dpainting/glwidget.h4
-rw-r--r--examples/opengl/2dpainting/helper.cpp4
-rw-r--r--examples/opengl/2dpainting/helper.h4
-rw-r--r--examples/opengl/2dpainting/main.cpp4
-rw-r--r--examples/opengl/2dpainting/widget.cpp4
-rw-r--r--examples/opengl/2dpainting/widget.h4
-rw-r--r--examples/opengl/2dpainting/window.cpp4
-rw-r--r--examples/opengl/2dpainting/window.h4
-rw-r--r--examples/opengl/cube/geometryengine.cpp4
-rw-r--r--examples/opengl/cube/geometryengine.h4
-rw-r--r--examples/opengl/cube/main.cpp4
-rw-r--r--examples/opengl/cube/mainwidget.cpp4
-rw-r--r--examples/opengl/cube/mainwidget.h4
-rw-r--r--examples/opengl/framebufferobject2/glwidget.cpp4
-rw-r--r--examples/opengl/framebufferobject2/glwidget.h4
-rw-r--r--examples/opengl/framebufferobject2/main.cpp4
-rw-r--r--examples/opengl/grabber/glwidget.cpp4
-rw-r--r--examples/opengl/grabber/glwidget.h4
-rw-r--r--examples/opengl/grabber/main.cpp4
-rw-r--r--examples/opengl/grabber/mainwindow.cpp4
-rw-r--r--examples/opengl/grabber/mainwindow.h4
-rw-r--r--examples/opengl/hellogl/glwidget.cpp4
-rw-r--r--examples/opengl/hellogl/glwidget.h4
-rw-r--r--examples/opengl/hellogl/main.cpp4
-rw-r--r--examples/opengl/hellogl/window.cpp4
-rw-r--r--examples/opengl/hellogl/window.h4
-rw-r--r--examples/opengl/hellogl_es/glwindow.cpp6
-rw-r--r--examples/opengl/hellogl_es/glwindow.h4
-rw-r--r--examples/opengl/hellogl_es/main.cpp4
-rw-r--r--examples/opengl/hellogl_es2/bubble.cpp4
-rw-r--r--examples/opengl/hellogl_es2/bubble.h4
-rw-r--r--examples/opengl/hellogl_es2/glwidget.cpp4
-rw-r--r--examples/opengl/hellogl_es2/glwidget.h4
-rw-r--r--examples/opengl/hellogl_es2/main.cpp4
-rw-r--r--examples/opengl/hellogl_es2/mainwindow.cpp4
-rw-r--r--examples/opengl/hellogl_es2/mainwindow.h4
-rw-r--r--examples/opengl/hellowindow/hellowindow.cpp4
-rw-r--r--examples/opengl/hellowindow/hellowindow.h4
-rw-r--r--examples/opengl/hellowindow/main.cpp4
-rw-r--r--examples/opengl/overpainting/bubble.cpp4
-rw-r--r--examples/opengl/overpainting/bubble.h4
-rw-r--r--examples/opengl/overpainting/glwidget.cpp4
-rw-r--r--examples/opengl/overpainting/glwidget.h4
-rw-r--r--examples/opengl/overpainting/main.cpp4
-rw-r--r--examples/opengl/paintedwindow/main.cpp13
-rw-r--r--examples/opengl/paintedwindow/paintedwindow.cpp52
-rw-r--r--examples/opengl/paintedwindow/paintedwindow.h4
-rw-r--r--examples/opengl/pbuffers/cube.cpp4
-rw-r--r--examples/opengl/pbuffers/cube.h4
-rw-r--r--examples/opengl/pbuffers/glwidget.cpp4
-rw-r--r--examples/opengl/pbuffers/glwidget.h4
-rw-r--r--examples/opengl/pbuffers/main.cpp4
-rw-r--r--examples/opengl/pbuffers2/glwidget.cpp4
-rw-r--r--examples/opengl/pbuffers2/glwidget.h4
-rw-r--r--examples/opengl/pbuffers2/main.cpp4
-rw-r--r--examples/opengl/samplebuffers/glwidget.cpp4
-rw-r--r--examples/opengl/samplebuffers/glwidget.h4
-rw-r--r--examples/opengl/samplebuffers/main.cpp4
-rw-r--r--examples/opengl/shared/qtlogo.cpp4
-rw-r--r--examples/opengl/shared/qtlogo.h4
-rw-r--r--examples/opengl/textures/glwidget.cpp4
-rw-r--r--examples/opengl/textures/glwidget.h4
-rw-r--r--examples/opengl/textures/main.cpp4
-rw-r--r--examples/opengl/textures/window.cpp4
-rw-r--r--examples/opengl/textures/window.h4
-rw-r--r--examples/painting/affine/main.cpp4
-rw-r--r--examples/painting/affine/xform.cpp4
-rw-r--r--examples/painting/affine/xform.h4
-rw-r--r--examples/painting/basicdrawing/main.cpp4
-rw-r--r--examples/painting/basicdrawing/renderarea.cpp4
-rw-r--r--examples/painting/basicdrawing/renderarea.h4
-rw-r--r--examples/painting/basicdrawing/window.cpp4
-rw-r--r--examples/painting/basicdrawing/window.h4
-rw-r--r--examples/painting/composition/composition.cpp4
-rw-r--r--examples/painting/composition/composition.h4
-rw-r--r--examples/painting/composition/main.cpp4
-rw-r--r--examples/painting/concentriccircles/circlewidget.cpp4
-rw-r--r--examples/painting/concentriccircles/circlewidget.h4
-rw-r--r--examples/painting/concentriccircles/main.cpp4
-rw-r--r--examples/painting/concentriccircles/window.cpp4
-rw-r--r--examples/painting/concentriccircles/window.h4
-rw-r--r--examples/painting/deform/main.cpp4
-rw-r--r--examples/painting/deform/pathdeform.cpp4
-rw-r--r--examples/painting/deform/pathdeform.h4
-rw-r--r--examples/painting/fontsampler/main.cpp4
-rw-r--r--examples/painting/fontsampler/mainwindow.cpp4
-rw-r--r--examples/painting/fontsampler/mainwindow.h4
-rw-r--r--examples/painting/gradients/gradients.cpp4
-rw-r--r--examples/painting/gradients/gradients.h4
-rw-r--r--examples/painting/gradients/main.cpp4
-rw-r--r--examples/painting/imagecomposition/imagecomposer.cpp4
-rw-r--r--examples/painting/imagecomposition/imagecomposer.h4
-rw-r--r--examples/painting/imagecomposition/main.cpp4
-rw-r--r--examples/painting/painterpaths/main.cpp4
-rw-r--r--examples/painting/painterpaths/renderarea.cpp4
-rw-r--r--examples/painting/painterpaths/renderarea.h4
-rw-r--r--examples/painting/painterpaths/window.cpp4
-rw-r--r--examples/painting/painterpaths/window.h4
-rw-r--r--examples/painting/pathstroke/main.cpp4
-rw-r--r--examples/painting/pathstroke/pathstroke.cpp4
-rw-r--r--examples/painting/pathstroke/pathstroke.h4
-rw-r--r--examples/painting/shared/arthurstyle.cpp4
-rw-r--r--examples/painting/shared/arthurstyle.h4
-rw-r--r--examples/painting/shared/arthurwidgets.cpp4
-rw-r--r--examples/painting/shared/arthurwidgets.h4
-rw-r--r--examples/painting/shared/hoverpoints.cpp4
-rw-r--r--examples/painting/shared/hoverpoints.h4
-rw-r--r--examples/painting/transformations/main.cpp4
-rw-r--r--examples/painting/transformations/renderarea.cpp4
-rw-r--r--examples/painting/transformations/renderarea.h4
-rw-r--r--examples/painting/transformations/window.cpp4
-rw-r--r--examples/painting/transformations/window.h4
-rw-r--r--examples/qmake/precompile/main.cpp4
-rw-r--r--examples/qmake/precompile/mydialog.cpp4
-rw-r--r--examples/qmake/precompile/mydialog.h4
-rw-r--r--examples/qmake/precompile/myobject.cpp4
-rw-r--r--examples/qmake/precompile/myobject.h4
-rw-r--r--examples/qmake/precompile/stable.h4
-rw-r--r--examples/qmake/precompile/util.cpp4
-rw-r--r--examples/qmake/tutorial/hello.cpp4
-rw-r--r--examples/qmake/tutorial/hello.h4
-rw-r--r--examples/qmake/tutorial/hellounix.cpp4
-rw-r--r--examples/qmake/tutorial/hellowin.cpp4
-rw-r--r--examples/qmake/tutorial/main.cpp4
-rw-r--r--examples/qpa/windows/main.cpp8
-rw-r--r--examples/qpa/windows/window.cpp4
-rw-r--r--examples/qpa/windows/window.h4
-rw-r--r--examples/qtconcurrent/imagescaling/imagescaling.cpp4
-rw-r--r--examples/qtconcurrent/imagescaling/imagescaling.h5
-rw-r--r--examples/qtconcurrent/imagescaling/imagescaling.pro3
-rw-r--r--examples/qtconcurrent/imagescaling/main.cpp5
-rw-r--r--examples/qtconcurrent/map/main.cpp4
-rw-r--r--examples/qtconcurrent/map/map.pro3
-rw-r--r--examples/qtconcurrent/progressdialog/main.cpp5
-rw-r--r--examples/qtconcurrent/progressdialog/progressdialog.pro2
-rw-r--r--examples/qtconcurrent/runfunction/main.cpp4
-rw-r--r--examples/qtconcurrent/runfunction/runfunction.pro2
-rw-r--r--examples/qtconcurrent/wordcount/main.cpp4
-rw-r--r--examples/qtconcurrent/wordcount/wordcount.pro2
-rw-r--r--examples/qtestlib/tutorial1/testqstring.cpp4
-rw-r--r--examples/qtestlib/tutorial2/testqstring.cpp4
-rw-r--r--examples/qtestlib/tutorial3/testgui.cpp4
-rw-r--r--examples/qtestlib/tutorial4/testgui.cpp4
-rw-r--r--examples/qtestlib/tutorial5/benchmarking.cpp4
-rw-r--r--examples/qtestlib/tutorial5/containers.cpp4
-rw-r--r--examples/qws/dbscreen/dbscreen.cpp4
-rw-r--r--examples/qws/dbscreen/dbscreen.h4
-rw-r--r--examples/qws/dbscreen/dbscreendriverplugin.cpp4
-rw-r--r--examples/qws/framebuffer/main.c4
-rw-r--r--examples/qws/mousecalibration/calibration.cpp4
-rw-r--r--examples/qws/mousecalibration/calibration.h4
-rw-r--r--examples/qws/mousecalibration/main.cpp4
-rw-r--r--examples/qws/mousecalibration/scribblewidget.cpp4
-rw-r--r--examples/qws/mousecalibration/scribblewidget.h4
-rw-r--r--examples/qws/simpledecoration/analogclock.cpp4
-rw-r--r--examples/qws/simpledecoration/analogclock.h4
-rw-r--r--examples/qws/simpledecoration/main.cpp4
-rw-r--r--examples/qws/simpledecoration/mydecoration.cpp4
-rw-r--r--examples/qws/simpledecoration/mydecoration.h4
-rw-r--r--examples/qws/svgalib/svgalibpaintdevice.cpp4
-rw-r--r--examples/qws/svgalib/svgalibpaintdevice.h4
-rw-r--r--examples/qws/svgalib/svgalibpaintengine.cpp4
-rw-r--r--examples/qws/svgalib/svgalibpaintengine.h4
-rw-r--r--examples/qws/svgalib/svgalibplugin.cpp4
-rw-r--r--examples/qws/svgalib/svgalibscreen.cpp4
-rw-r--r--examples/qws/svgalib/svgalibscreen.h4
-rw-r--r--examples/qws/svgalib/svgalibsurface.cpp4
-rw-r--r--examples/qws/svgalib/svgalibsurface.h4
-rw-r--r--examples/richtext/calendar/calendar.pro2
-rw-r--r--examples/richtext/calendar/main.cpp4
-rw-r--r--examples/richtext/calendar/mainwindow.cpp4
-rw-r--r--examples/richtext/calendar/mainwindow.h4
-rw-r--r--examples/richtext/orderform/detailsdialog.cpp4
-rw-r--r--examples/richtext/orderform/detailsdialog.h4
-rw-r--r--examples/richtext/orderform/main.cpp4
-rw-r--r--examples/richtext/orderform/mainwindow.cpp4
-rw-r--r--examples/richtext/orderform/mainwindow.h4
-rw-r--r--examples/richtext/syntaxhighlighter/highlighter.cpp4
-rw-r--r--examples/richtext/syntaxhighlighter/highlighter.h4
-rw-r--r--examples/richtext/syntaxhighlighter/main.cpp4
-rw-r--r--examples/richtext/syntaxhighlighter/mainwindow.cpp4
-rw-r--r--examples/richtext/syntaxhighlighter/mainwindow.h4
-rw-r--r--examples/richtext/textedit/main.cpp4
-rw-r--r--examples/richtext/textedit/textedit.cpp4
-rw-r--r--examples/richtext/textedit/textedit.h4
-rw-r--r--examples/richtext/textedit/textedit.qdoc4
-rw-r--r--examples/scroller/graphicsview/main.cpp4
-rw-r--r--examples/sql/books/bookdelegate.cpp4
-rw-r--r--examples/sql/books/bookdelegate.h4
-rw-r--r--examples/sql/books/bookwindow.cpp4
-rw-r--r--examples/sql/books/bookwindow.h4
-rw-r--r--examples/sql/books/initdb.h4
-rw-r--r--examples/sql/books/main.cpp4
-rw-r--r--examples/sql/cachedtable/main.cpp4
-rw-r--r--examples/sql/cachedtable/tableeditor.cpp4
-rw-r--r--examples/sql/cachedtable/tableeditor.h4
-rw-r--r--examples/sql/connection.h4
-rw-r--r--examples/sql/drilldown/imageitem.cpp4
-rw-r--r--examples/sql/drilldown/imageitem.h4
-rw-r--r--examples/sql/drilldown/informationwindow.cpp4
-rw-r--r--examples/sql/drilldown/informationwindow.h4
-rw-r--r--examples/sql/drilldown/main.cpp4
-rw-r--r--examples/sql/drilldown/view.cpp4
-rw-r--r--examples/sql/drilldown/view.h4
-rw-r--r--examples/sql/masterdetail/database.h4
-rw-r--r--examples/sql/masterdetail/dialog.cpp4
-rw-r--r--examples/sql/masterdetail/dialog.h4
-rw-r--r--examples/sql/masterdetail/main.cpp4
-rw-r--r--examples/sql/masterdetail/mainwindow.cpp4
-rw-r--r--examples/sql/masterdetail/mainwindow.h4
-rw-r--r--examples/sql/querymodel/customsqlmodel.cpp4
-rw-r--r--examples/sql/querymodel/customsqlmodel.h4
-rw-r--r--examples/sql/querymodel/editablesqlmodel.cpp4
-rw-r--r--examples/sql/querymodel/editablesqlmodel.h4
-rw-r--r--examples/sql/querymodel/main.cpp4
-rw-r--r--examples/sql/relationaltablemodel/relationaltablemodel.cpp4
-rw-r--r--examples/sql/sqlbrowser/browser.cpp4
-rw-r--r--examples/sql/sqlbrowser/browser.h4
-rw-r--r--examples/sql/sqlbrowser/connectionwidget.cpp4
-rw-r--r--examples/sql/sqlbrowser/connectionwidget.h4
-rw-r--r--examples/sql/sqlbrowser/main.cpp4
-rw-r--r--examples/sql/sqlbrowser/qsqlconnectiondialog.cpp4
-rw-r--r--examples/sql/sqlbrowser/qsqlconnectiondialog.h4
-rw-r--r--examples/sql/sqlwidgetmapper/main.cpp4
-rw-r--r--examples/sql/sqlwidgetmapper/window.cpp4
-rw-r--r--examples/sql/sqlwidgetmapper/window.h4
-rw-r--r--examples/sql/tablemodel/tablemodel.cpp4
-rw-r--r--examples/statemachine/eventtransitions/main.cpp4
-rw-r--r--examples/statemachine/factorial/main.cpp4
-rw-r--r--examples/statemachine/pingpong/main.cpp4
-rw-r--r--examples/statemachine/rogue/main.cpp4
-rw-r--r--examples/statemachine/rogue/movementtransition.h4
-rw-r--r--examples/statemachine/rogue/window.cpp4
-rw-r--r--examples/statemachine/rogue/window.h4
-rw-r--r--examples/statemachine/trafficlight/main.cpp4
-rw-r--r--examples/statemachine/twowaybutton/main.cpp4
-rw-r--r--examples/threads/mandelbrot/main.cpp4
-rw-r--r--examples/threads/mandelbrot/mandelbrotwidget.cpp4
-rw-r--r--examples/threads/mandelbrot/mandelbrotwidget.h4
-rw-r--r--examples/threads/mandelbrot/renderthread.cpp4
-rw-r--r--examples/threads/mandelbrot/renderthread.h4
-rw-r--r--examples/threads/queuedcustomtype/block.cpp4
-rw-r--r--examples/threads/queuedcustomtype/block.h4
-rw-r--r--examples/threads/queuedcustomtype/main.cpp4
-rw-r--r--examples/threads/queuedcustomtype/renderthread.cpp4
-rw-r--r--examples/threads/queuedcustomtype/renderthread.h4
-rw-r--r--examples/threads/queuedcustomtype/window.cpp4
-rw-r--r--examples/threads/queuedcustomtype/window.h4
-rw-r--r--examples/threads/semaphores/semaphores.cpp4
-rw-r--r--examples/threads/waitconditions/waitconditions.cpp4
-rw-r--r--examples/tools/codecs/main.cpp4
-rw-r--r--examples/tools/codecs/mainwindow.cpp4
-rw-r--r--examples/tools/codecs/mainwindow.h4
-rw-r--r--examples/tools/codecs/previewform.cpp4
-rw-r--r--examples/tools/codecs/previewform.h4
-rw-r--r--examples/tools/completer/fsmodel.cpp4
-rw-r--r--examples/tools/completer/fsmodel.h4
-rw-r--r--examples/tools/completer/main.cpp4
-rw-r--r--examples/tools/completer/mainwindow.cpp4
-rw-r--r--examples/tools/completer/mainwindow.h4
-rw-r--r--examples/tools/contiguouscache/main.cpp4
-rw-r--r--examples/tools/contiguouscache/randomlistmodel.cpp4
-rw-r--r--examples/tools/contiguouscache/randomlistmodel.h4
-rw-r--r--examples/tools/customcompleter/main.cpp4
-rw-r--r--examples/tools/customcompleter/mainwindow.cpp4
-rw-r--r--examples/tools/customcompleter/mainwindow.h4
-rw-r--r--examples/tools/customcompleter/textedit.cpp4
-rw-r--r--examples/tools/customcompleter/textedit.h4
-rw-r--r--examples/tools/customtype/main.cpp6
-rw-r--r--examples/tools/customtype/message.cpp4
-rw-r--r--examples/tools/customtype/message.h4
-rw-r--r--examples/tools/customtypesending/main.cpp6
-rw-r--r--examples/tools/customtypesending/message.cpp4
-rw-r--r--examples/tools/customtypesending/message.h4
-rw-r--r--examples/tools/customtypesending/window.cpp4
-rw-r--r--examples/tools/customtypesending/window.h4
-rw-r--r--examples/tools/echoplugin/echowindow/echointerface.h4
-rw-r--r--examples/tools/echoplugin/echowindow/echowindow.cpp4
-rw-r--r--examples/tools/echoplugin/echowindow/echowindow.h4
-rw-r--r--examples/tools/echoplugin/echowindow/main.cpp4
-rw-r--r--examples/tools/echoplugin/plugin/echoplugin.cpp4
-rw-r--r--examples/tools/echoplugin/plugin/echoplugin.h4
-rw-r--r--examples/tools/i18n/languagechooser.cpp4
-rw-r--r--examples/tools/i18n/languagechooser.h4
-rw-r--r--examples/tools/i18n/main.cpp4
-rw-r--r--examples/tools/i18n/mainwindow.cpp4
-rw-r--r--examples/tools/i18n/mainwindow.h4
-rw-r--r--examples/tools/plugandpaint/interfaces.h4
-rw-r--r--examples/tools/plugandpaint/main.cpp4
-rw-r--r--examples/tools/plugandpaint/mainwindow.cpp4
-rw-r--r--examples/tools/plugandpaint/mainwindow.h4
-rw-r--r--examples/tools/plugandpaint/paintarea.cpp4
-rw-r--r--examples/tools/plugandpaint/paintarea.h4
-rw-r--r--examples/tools/plugandpaint/plugindialog.cpp4
-rw-r--r--examples/tools/plugandpaint/plugindialog.h4
-rw-r--r--examples/tools/plugandpaintplugins/basictools/basictoolsplugin.cpp4
-rw-r--r--examples/tools/plugandpaintplugins/basictools/basictoolsplugin.h4
-rw-r--r--examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.cpp4
-rw-r--r--examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.h4
-rw-r--r--examples/tools/regexp/main.cpp4
-rw-r--r--examples/tools/regexp/regexpdialog.cpp4
-rw-r--r--examples/tools/regexp/regexpdialog.h4
-rw-r--r--examples/tools/settingseditor/locationdialog.cpp4
-rw-r--r--examples/tools/settingseditor/locationdialog.h4
-rw-r--r--examples/tools/settingseditor/main.cpp4
-rw-r--r--examples/tools/settingseditor/mainwindow.cpp4
-rw-r--r--examples/tools/settingseditor/mainwindow.h4
-rw-r--r--examples/tools/settingseditor/settingstree.cpp4
-rw-r--r--examples/tools/settingseditor/settingstree.h4
-rw-r--r--examples/tools/settingseditor/variantdelegate.cpp4
-rw-r--r--examples/tools/settingseditor/variantdelegate.h4
-rw-r--r--examples/tools/styleplugin/plugin/simplestyle.cpp4
-rw-r--r--examples/tools/styleplugin/plugin/simplestyle.h4
-rw-r--r--examples/tools/styleplugin/plugin/simplestyleplugin.cpp4
-rw-r--r--examples/tools/styleplugin/plugin/simplestyleplugin.h4
-rw-r--r--examples/tools/styleplugin/stylewindow/main.cpp4
-rw-r--r--examples/tools/styleplugin/stylewindow/stylewindow.cpp4
-rw-r--r--examples/tools/styleplugin/stylewindow/stylewindow.h4
-rw-r--r--examples/tools/treemodelcompleter/main.cpp4
-rw-r--r--examples/tools/treemodelcompleter/mainwindow.cpp4
-rw-r--r--examples/tools/treemodelcompleter/mainwindow.h4
-rw-r--r--examples/tools/treemodelcompleter/treemodelcompleter.cpp4
-rw-r--r--examples/tools/treemodelcompleter/treemodelcompleter.h4
-rw-r--r--examples/tools/undo/commands.cpp4
-rw-r--r--examples/tools/undo/commands.h4
-rw-r--r--examples/tools/undo/document.cpp4
-rw-r--r--examples/tools/undo/document.h4
-rw-r--r--examples/tools/undo/main.cpp4
-rw-r--r--examples/tools/undo/mainwindow.cpp4
-rw-r--r--examples/tools/undo/mainwindow.h4
-rw-r--r--examples/tools/undoframework/commands.cpp4
-rw-r--r--examples/tools/undoframework/commands.h4
-rw-r--r--examples/tools/undoframework/diagramitem.cpp4
-rw-r--r--examples/tools/undoframework/diagramitem.h4
-rw-r--r--examples/tools/undoframework/diagramscene.cpp4
-rw-r--r--examples/tools/undoframework/diagramscene.h4
-rw-r--r--examples/tools/undoframework/main.cpp4
-rw-r--r--examples/tools/undoframework/mainwindow.cpp4
-rw-r--r--examples/tools/undoframework/mainwindow.h4
-rw-r--r--examples/touch/dials/main.cpp4
-rw-r--r--examples/touch/fingerpaint/main.cpp4
-rw-r--r--examples/touch/fingerpaint/mainwindow.cpp4
-rw-r--r--examples/touch/fingerpaint/mainwindow.h4
-rw-r--r--examples/touch/fingerpaint/scribblearea.cpp4
-rw-r--r--examples/touch/fingerpaint/scribblearea.h4
-rw-r--r--examples/touch/knobs/knob.cpp4
-rw-r--r--examples/touch/knobs/knob.h4
-rw-r--r--examples/touch/knobs/main.cpp4
-rw-r--r--examples/touch/pinchzoom/graphicsview.cpp4
-rw-r--r--examples/touch/pinchzoom/graphicsview.h4
-rw-r--r--examples/touch/pinchzoom/main.cpp4
-rw-r--r--examples/touch/pinchzoom/mouse.cpp4
-rw-r--r--examples/touch/pinchzoom/mouse.h4
-rw-r--r--examples/tutorials/addressbook-fr/README2
-rw-r--r--examples/tutorials/addressbook-fr/part1/addressbook.cpp4
-rw-r--r--examples/tutorials/addressbook-fr/part1/addressbook.h4
-rw-r--r--examples/tutorials/addressbook-fr/part1/main.cpp4
-rw-r--r--examples/tutorials/addressbook-fr/part2/addressbook.cpp4
-rw-r--r--examples/tutorials/addressbook-fr/part2/addressbook.h4
-rw-r--r--examples/tutorials/addressbook-fr/part2/main.cpp4
-rw-r--r--examples/tutorials/addressbook-fr/part3/addressbook.cpp4
-rw-r--r--examples/tutorials/addressbook-fr/part3/addressbook.h4
-rw-r--r--examples/tutorials/addressbook-fr/part3/main.cpp4
-rw-r--r--examples/tutorials/addressbook-fr/part4/addressbook.cpp4
-rw-r--r--examples/tutorials/addressbook-fr/part4/addressbook.h4
-rw-r--r--examples/tutorials/addressbook-fr/part4/main.cpp4
-rw-r--r--examples/tutorials/addressbook-fr/part5/addressbook.cpp4
-rw-r--r--examples/tutorials/addressbook-fr/part5/addressbook.h4
-rw-r--r--examples/tutorials/addressbook-fr/part5/finddialog.cpp4
-rw-r--r--examples/tutorials/addressbook-fr/part5/finddialog.h4
-rw-r--r--examples/tutorials/addressbook-fr/part5/main.cpp4
-rw-r--r--examples/tutorials/addressbook-fr/part6/addressbook.cpp4
-rw-r--r--examples/tutorials/addressbook-fr/part6/addressbook.h4
-rw-r--r--examples/tutorials/addressbook-fr/part6/finddialog.cpp4
-rw-r--r--examples/tutorials/addressbook-fr/part6/finddialog.h4
-rw-r--r--examples/tutorials/addressbook-fr/part6/main.cpp4
-rw-r--r--examples/tutorials/addressbook-fr/part7/addressbook.cpp4
-rw-r--r--examples/tutorials/addressbook-fr/part7/addressbook.h4
-rw-r--r--examples/tutorials/addressbook-fr/part7/finddialog.cpp4
-rw-r--r--examples/tutorials/addressbook-fr/part7/finddialog.h4
-rw-r--r--examples/tutorials/addressbook-fr/part7/main.cpp4
-rw-r--r--examples/tutorials/addressbook/README2
-rw-r--r--examples/tutorials/addressbook/part1/addressbook.cpp4
-rw-r--r--examples/tutorials/addressbook/part1/addressbook.h4
-rw-r--r--examples/tutorials/addressbook/part1/main.cpp4
-rw-r--r--examples/tutorials/addressbook/part2/addressbook.cpp4
-rw-r--r--examples/tutorials/addressbook/part2/addressbook.h4
-rw-r--r--examples/tutorials/addressbook/part2/main.cpp4
-rw-r--r--examples/tutorials/addressbook/part3/addressbook.cpp4
-rw-r--r--examples/tutorials/addressbook/part3/addressbook.h4
-rw-r--r--examples/tutorials/addressbook/part3/main.cpp4
-rw-r--r--examples/tutorials/addressbook/part4/addressbook.cpp4
-rw-r--r--examples/tutorials/addressbook/part4/addressbook.h4
-rw-r--r--examples/tutorials/addressbook/part4/main.cpp4
-rw-r--r--examples/tutorials/addressbook/part5/addressbook.cpp4
-rw-r--r--examples/tutorials/addressbook/part5/addressbook.h4
-rw-r--r--examples/tutorials/addressbook/part5/finddialog.cpp4
-rw-r--r--examples/tutorials/addressbook/part5/finddialog.h4
-rw-r--r--examples/tutorials/addressbook/part5/main.cpp4
-rw-r--r--examples/tutorials/addressbook/part6/addressbook.cpp4
-rw-r--r--examples/tutorials/addressbook/part6/addressbook.h4
-rw-r--r--examples/tutorials/addressbook/part6/finddialog.cpp4
-rw-r--r--examples/tutorials/addressbook/part6/finddialog.h4
-rw-r--r--examples/tutorials/addressbook/part6/main.cpp4
-rw-r--r--examples/tutorials/addressbook/part7/addressbook.cpp4
-rw-r--r--examples/tutorials/addressbook/part7/addressbook.h4
-rw-r--r--examples/tutorials/addressbook/part7/finddialog.cpp4
-rw-r--r--examples/tutorials/addressbook/part7/finddialog.h4
-rw-r--r--examples/tutorials/addressbook/part7/main.cpp4
-rw-r--r--examples/tutorials/gettingStarted/gsQt/part1/main.cpp4
-rw-r--r--examples/tutorials/gettingStarted/gsQt/part2/main.cpp4
-rw-r--r--examples/tutorials/gettingStarted/gsQt/part3/main.cpp4
-rw-r--r--examples/tutorials/gettingStarted/gsQt/part4/main.cpp4
-rw-r--r--examples/tutorials/gettingStarted/gsQt/part5/main.cpp4
-rw-r--r--examples/tutorials/modelview/1_readonly/main.cpp4
-rw-r--r--examples/tutorials/modelview/1_readonly/mymodel.cpp4
-rw-r--r--examples/tutorials/modelview/1_readonly/mymodel.h4
-rw-r--r--examples/tutorials/modelview/2_formatting/main.cpp4
-rw-r--r--examples/tutorials/modelview/2_formatting/mymodel.cpp4
-rw-r--r--examples/tutorials/modelview/2_formatting/mymodel.h4
-rw-r--r--examples/tutorials/modelview/3_changingmodel/main.cpp4
-rw-r--r--examples/tutorials/modelview/3_changingmodel/mymodel.cpp4
-rw-r--r--examples/tutorials/modelview/3_changingmodel/mymodel.h4
-rw-r--r--examples/tutorials/modelview/4_headers/main.cpp4
-rw-r--r--examples/tutorials/modelview/4_headers/mymodel.cpp4
-rw-r--r--examples/tutorials/modelview/4_headers/mymodel.h4
-rw-r--r--examples/tutorials/modelview/5_edit/main.cpp4
-rw-r--r--examples/tutorials/modelview/5_edit/mainwindow.cpp4
-rw-r--r--examples/tutorials/modelview/5_edit/mainwindow.h4
-rw-r--r--examples/tutorials/modelview/5_edit/mymodel.cpp4
-rw-r--r--examples/tutorials/modelview/5_edit/mymodel.h4
-rw-r--r--examples/tutorials/modelview/6_treeview/main.cpp4
-rw-r--r--examples/tutorials/modelview/6_treeview/mainwindow.cpp4
-rw-r--r--examples/tutorials/modelview/6_treeview/mainwindow.h4
-rw-r--r--examples/tutorials/modelview/7_selections/main.cpp4
-rw-r--r--examples/tutorials/modelview/7_selections/mainwindow.cpp4
-rw-r--r--examples/tutorials/modelview/7_selections/mainwindow.h4
-rw-r--r--examples/tutorials/threads/clock/clockthread.cpp4
-rw-r--r--examples/tutorials/threads/clock/clockthread.h4
-rw-r--r--examples/tutorials/threads/clock/main.cpp4
-rw-r--r--examples/tutorials/threads/helloconcurrent/helloconcurrent.cpp6
-rw-r--r--examples/tutorials/threads/helloconcurrent/helloconcurrent.pro1
-rw-r--r--examples/tutorials/threads/hellothread/hellothread.cpp4
-rw-r--r--examples/tutorials/threads/hellothread/hellothread.h4
-rw-r--r--examples/tutorials/threads/hellothread/main.cpp4
-rw-r--r--examples/tutorials/threads/hellothreadpool/hellothreadpool.cpp4
-rw-r--r--examples/tutorials/threads/movedobject/main.cpp4
-rw-r--r--examples/tutorials/threads/movedobject/thread.cpp4
-rw-r--r--examples/tutorials/threads/movedobject/thread.h4
-rw-r--r--examples/tutorials/threads/movedobject/workerobject.cpp4
-rw-r--r--examples/tutorials/threads/movedobject/workerobject.h4
-rw-r--r--examples/tutorials/threads/threads.pro3
-rw-r--r--examples/tutorials/widgets/childwidget/main.cpp4
-rw-r--r--examples/tutorials/widgets/nestedlayouts/main.cpp4
-rw-r--r--examples/tutorials/widgets/toplevel/main.cpp4
-rw-r--r--examples/tutorials/widgets/windowlayout/main.cpp4
-rw-r--r--examples/webkit/webkit-guide/_copyright.txt3
-rw-r--r--examples/webkit/webkit-guide/_image_assets.htm1
-rw-r--r--examples/webkit/webkit-guide/anim_accord.htm1
-rw-r--r--examples/webkit/webkit-guide/anim_demo-rotate.htm1
-rw-r--r--examples/webkit/webkit-guide/anim_demo-scale.htm1
-rw-r--r--examples/webkit/webkit-guide/anim_demo-skew.htm1
-rw-r--r--examples/webkit/webkit-guide/anim_gallery.htm1
-rw-r--r--examples/webkit/webkit-guide/anim_panel.htm1
-rw-r--r--examples/webkit/webkit-guide/anim_pulse.htm1
-rw-r--r--examples/webkit/webkit-guide/anim_skew.htm1
-rw-r--r--examples/webkit/webkit-guide/anim_slide1.htm1
-rw-r--r--examples/webkit/webkit-guide/anim_slide2.htm1
-rw-r--r--examples/webkit/webkit-guide/anim_slide3.htm1
-rw-r--r--examples/webkit/webkit-guide/anim_tabbedSkew.htm1
-rw-r--r--examples/webkit/webkit-guide/css/anim_accord.css4
-rw-r--r--examples/webkit/webkit-guide/css/anim_demo-rotate.css4
-rw-r--r--examples/webkit/webkit-guide/css/anim_demo-scale.css4
-rw-r--r--examples/webkit/webkit-guide/css/anim_demo-skew.css4
-rw-r--r--examples/webkit/webkit-guide/css/anim_gallery.css4
-rw-r--r--examples/webkit/webkit-guide/css/anim_panel.css4
-rw-r--r--examples/webkit/webkit-guide/css/anim_pulse.css4
-rw-r--r--examples/webkit/webkit-guide/css/anim_skew.css4
-rw-r--r--examples/webkit/webkit-guide/css/anim_slide.css4
-rw-r--r--examples/webkit/webkit-guide/css/anim_tabbedSkew.css4
-rw-r--r--examples/webkit/webkit-guide/css/css3_backgrounds.css4
-rw-r--r--examples/webkit/webkit-guide/css/css3_border-img.css4
-rw-r--r--examples/webkit/webkit-guide/css/css3_grad-radial.css4
-rw-r--r--examples/webkit/webkit-guide/css/css3_gradientBack.css4
-rw-r--r--examples/webkit/webkit-guide/css/css3_gradientBackStop.css4
-rw-r--r--examples/webkit/webkit-guide/css/css3_gradientButton.css4
-rw-r--r--examples/webkit/webkit-guide/css/css3_mask-grad.css4
-rw-r--r--examples/webkit/webkit-guide/css/css3_mask-img.css4
-rw-r--r--examples/webkit/webkit-guide/css/css3_multicol.css4
-rw-r--r--examples/webkit/webkit-guide/css/css3_reflect.css4
-rw-r--r--examples/webkit/webkit-guide/css/css3_scroll.css4
-rw-r--r--examples/webkit/webkit-guide/css/css3_sel-nth.css4
-rw-r--r--examples/webkit/webkit-guide/css/css3_shadow.css4
-rw-r--r--examples/webkit/webkit-guide/css/css3_shadowBlur.css4
-rw-r--r--examples/webkit/webkit-guide/css/css3_text-overflow.css4
-rw-r--r--examples/webkit/webkit-guide/css/css3_text-shadow.css4
-rw-r--r--examples/webkit/webkit-guide/css/css3_text-stroke.css4
-rw-r--r--examples/webkit/webkit-guide/css/form_tapper.css4
-rw-r--r--examples/webkit/webkit-guide/css/form_toggler.css4
-rw-r--r--examples/webkit/webkit-guide/css/layout_link-fmt.css4
-rw-r--r--examples/webkit/webkit-guide/css/layout_tbl-keyhole.css4
-rw-r--r--examples/webkit/webkit-guide/css/mob_condjs.css4
-rw-r--r--examples/webkit/webkit-guide/css/mob_mediaquery.css4
-rw-r--r--examples/webkit/webkit-guide/css/mobile.css4
-rw-r--r--examples/webkit/webkit-guide/css/mq_desktop.css4
-rw-r--r--examples/webkit/webkit-guide/css/mq_mobile.css4
-rw-r--r--examples/webkit/webkit-guide/css/mq_touch.css4
-rw-r--r--examples/webkit/webkit-guide/css/mqlayout_desktop.css4
-rw-r--r--examples/webkit/webkit-guide/css/mqlayout_mobile.css4
-rw-r--r--examples/webkit/webkit-guide/css/mqlayout_touch.css4
-rw-r--r--examples/webkit/webkit-guide/css/storage.css4
-rw-r--r--examples/webkit/webkit-guide/css3_backgrounds.htm1
-rw-r--r--examples/webkit/webkit-guide/css3_border-img.htm1
-rw-r--r--examples/webkit/webkit-guide/css3_grad-radial.htm1
-rw-r--r--examples/webkit/webkit-guide/css3_gradientBack.htm1
-rw-r--r--examples/webkit/webkit-guide/css3_gradientBackStop.htm1
-rw-r--r--examples/webkit/webkit-guide/css3_gradientButton.htm1
-rw-r--r--examples/webkit/webkit-guide/css3_mask-grad.htm1
-rw-r--r--examples/webkit/webkit-guide/css3_mask-img.htm1
-rw-r--r--examples/webkit/webkit-guide/css3_multicol.htm1
-rw-r--r--examples/webkit/webkit-guide/css3_reflect.htm1
-rw-r--r--examples/webkit/webkit-guide/css3_scroll.htm1
-rw-r--r--examples/webkit/webkit-guide/css3_sel-nth.htm1
-rw-r--r--examples/webkit/webkit-guide/css3_shadow.htm1
-rw-r--r--examples/webkit/webkit-guide/css3_text-overflow.htm1
-rw-r--r--examples/webkit/webkit-guide/css3_text-shadow.htm1
-rw-r--r--examples/webkit/webkit-guide/css3_text-stroke.htm1
-rw-r--r--examples/webkit/webkit-guide/form_tapper.htm1
-rw-r--r--examples/webkit/webkit-guide/form_toggler.htm1
-rwxr-xr-xexamples/webkit/webkit-guide/js/anim_accord.js4
-rwxr-xr-xexamples/webkit/webkit-guide/js/anim_gallery.js4
-rwxr-xr-xexamples/webkit/webkit-guide/js/anim_panel.js4
-rwxr-xr-xexamples/webkit/webkit-guide/js/anim_skew.js4
-rwxr-xr-xexamples/webkit/webkit-guide/js/css3_backgrounds.js4
-rwxr-xr-xexamples/webkit/webkit-guide/js/css3_border-img.js4
-rwxr-xr-xexamples/webkit/webkit-guide/js/css3_grad-radial.js4
-rwxr-xr-xexamples/webkit/webkit-guide/js/css3_mask-grad.js4
-rwxr-xr-xexamples/webkit/webkit-guide/js/css3_mask-img.js4
-rwxr-xr-xexamples/webkit/webkit-guide/js/css3_text-overflow.js4
-rwxr-xr-xexamples/webkit/webkit-guide/js/form_tapper.js4
-rwxr-xr-xexamples/webkit/webkit-guide/js/mob_condjs.js4
-rwxr-xr-xexamples/webkit/webkit-guide/js/mobile.js4
-rwxr-xr-xexamples/webkit/webkit-guide/js/storage.js4
-rw-r--r--examples/webkit/webkit-guide/layout_link-fmt.htm1
-rw-r--r--examples/webkit/webkit-guide/layout_tbl-keyhole.htm1
-rw-r--r--examples/webkit/webkit-guide/mob_condjs.htm1
-rw-r--r--examples/webkit/webkit-guide/mob_mediaquery.htm1
-rw-r--r--examples/webkit/webkit-guide/storage.htm1
-rw-r--r--examples/widgets/analogclock/analogclock.cpp4
-rw-r--r--examples/widgets/analogclock/analogclock.h4
-rw-r--r--examples/widgets/analogclock/main.cpp4
-rw-r--r--examples/widgets/applicationicon/main.cpp4
-rw-r--r--examples/widgets/calculator/button.cpp4
-rw-r--r--examples/widgets/calculator/button.h4
-rw-r--r--examples/widgets/calculator/calculator.cpp4
-rw-r--r--examples/widgets/calculator/calculator.h4
-rw-r--r--examples/widgets/calculator/main.cpp4
-rw-r--r--examples/widgets/calendarwidget/main.cpp4
-rw-r--r--examples/widgets/calendarwidget/window.cpp4
-rw-r--r--examples/widgets/calendarwidget/window.h4
-rw-r--r--examples/widgets/charactermap/characterwidget.cpp4
-rw-r--r--examples/widgets/charactermap/characterwidget.h4
-rw-r--r--examples/widgets/charactermap/main.cpp4
-rw-r--r--examples/widgets/charactermap/mainwindow.cpp4
-rw-r--r--examples/widgets/charactermap/mainwindow.h4
-rw-r--r--examples/widgets/codeeditor/codeeditor.cpp4
-rw-r--r--examples/widgets/codeeditor/codeeditor.h4
-rw-r--r--examples/widgets/codeeditor/main.cpp4
-rw-r--r--examples/widgets/digitalclock/digitalclock.cpp4
-rw-r--r--examples/widgets/digitalclock/digitalclock.h4
-rw-r--r--examples/widgets/digitalclock/main.cpp4
-rw-r--r--examples/widgets/elidedlabel/elidedlabel.cpp4
-rw-r--r--examples/widgets/elidedlabel/elidedlabel.h4
-rw-r--r--examples/widgets/elidedlabel/main.cpp4
-rw-r--r--examples/widgets/elidedlabel/testwidget.cpp4
-rw-r--r--examples/widgets/elidedlabel/testwidget.h4
-rw-r--r--examples/widgets/groupbox/main.cpp4
-rw-r--r--examples/widgets/groupbox/window.cpp4
-rw-r--r--examples/widgets/groupbox/window.h4
-rw-r--r--examples/widgets/icons/iconpreviewarea.cpp4
-rw-r--r--examples/widgets/icons/iconpreviewarea.h4
-rw-r--r--examples/widgets/icons/iconsizespinbox.cpp4
-rw-r--r--examples/widgets/icons/iconsizespinbox.h4
-rw-r--r--examples/widgets/icons/imagedelegate.cpp4
-rw-r--r--examples/widgets/icons/imagedelegate.h4
-rw-r--r--examples/widgets/icons/main.cpp4
-rw-r--r--examples/widgets/icons/mainwindow.cpp4
-rw-r--r--examples/widgets/icons/mainwindow.h4
-rw-r--r--examples/widgets/imageviewer/imageviewer.cpp4
-rw-r--r--examples/widgets/imageviewer/imageviewer.h4
-rw-r--r--examples/widgets/imageviewer/imageviewer.pro4
-rw-r--r--examples/widgets/imageviewer/main.cpp4
-rw-r--r--examples/widgets/lineedits/main.cpp4
-rw-r--r--examples/widgets/lineedits/window.cpp4
-rw-r--r--examples/widgets/lineedits/window.h4
-rw-r--r--examples/widgets/movie/animation.gifbin0 -> 42629 bytes
-rw-r--r--examples/widgets/movie/animation.mngbin5464 -> 0 bytes
-rw-r--r--examples/widgets/movie/main.cpp4
-rw-r--r--examples/widgets/movie/movie.pro5
-rw-r--r--examples/widgets/movie/movieplayer.cpp4
-rw-r--r--examples/widgets/movie/movieplayer.h4
-rw-r--r--examples/widgets/orientation/main.cpp4
-rw-r--r--examples/widgets/orientation/mainwindow.cpp4
-rw-r--r--examples/widgets/orientation/mainwindow.h4
-rw-r--r--examples/widgets/scribble/main.cpp4
-rw-r--r--examples/widgets/scribble/mainwindow.cpp4
-rw-r--r--examples/widgets/scribble/mainwindow.h4
-rw-r--r--examples/widgets/scribble/scribblearea.cpp4
-rw-r--r--examples/widgets/scribble/scribblearea.h4
-rw-r--r--examples/widgets/shapedclock/main.cpp4
-rw-r--r--examples/widgets/shapedclock/shapedclock.cpp4
-rw-r--r--examples/widgets/shapedclock/shapedclock.h4
-rw-r--r--examples/widgets/sliders/main.cpp4
-rw-r--r--examples/widgets/sliders/slidersgroup.cpp4
-rw-r--r--examples/widgets/sliders/slidersgroup.h4
-rw-r--r--examples/widgets/sliders/window.cpp4
-rw-r--r--examples/widgets/sliders/window.h4
-rw-r--r--examples/widgets/softkeys/main.cpp4
-rw-r--r--examples/widgets/softkeys/softkeys.cpp4
-rw-r--r--examples/widgets/softkeys/softkeys.h4
-rw-r--r--examples/widgets/spinboxes/main.cpp4
-rw-r--r--examples/widgets/spinboxes/window.cpp4
-rw-r--r--examples/widgets/spinboxes/window.h4
-rw-r--r--examples/widgets/styles/main.cpp4
-rw-r--r--examples/widgets/styles/norwegianwoodstyle.cpp4
-rw-r--r--examples/widgets/styles/norwegianwoodstyle.h4
-rw-r--r--examples/widgets/styles/widgetgallery.cpp4
-rw-r--r--examples/widgets/styles/widgetgallery.h4
-rw-r--r--examples/widgets/stylesheet/main.cpp4
-rw-r--r--examples/widgets/stylesheet/mainwindow.cpp4
-rw-r--r--examples/widgets/stylesheet/mainwindow.h4
-rw-r--r--examples/widgets/stylesheet/stylesheeteditor.cpp4
-rw-r--r--examples/widgets/stylesheet/stylesheeteditor.h4
-rw-r--r--examples/widgets/tablet/main.cpp4
-rw-r--r--examples/widgets/tablet/mainwindow.cpp4
-rw-r--r--examples/widgets/tablet/mainwindow.h4
-rw-r--r--examples/widgets/tablet/tabletapplication.cpp4
-rw-r--r--examples/widgets/tablet/tabletapplication.h4
-rw-r--r--examples/widgets/tablet/tabletcanvas.cpp4
-rw-r--r--examples/widgets/tablet/tabletcanvas.h4
-rw-r--r--examples/widgets/tetrix/main.cpp4
-rw-r--r--examples/widgets/tetrix/tetrixboard.cpp4
-rw-r--r--examples/widgets/tetrix/tetrixboard.h4
-rw-r--r--examples/widgets/tetrix/tetrixpiece.cpp4
-rw-r--r--examples/widgets/tetrix/tetrixpiece.h4
-rw-r--r--examples/widgets/tetrix/tetrixwindow.cpp4
-rw-r--r--examples/widgets/tetrix/tetrixwindow.h4
-rw-r--r--examples/widgets/tooltips/main.cpp4
-rw-r--r--examples/widgets/tooltips/shapeitem.cpp4
-rw-r--r--examples/widgets/tooltips/shapeitem.h4
-rw-r--r--examples/widgets/tooltips/sortingbox.cpp4
-rw-r--r--examples/widgets/tooltips/sortingbox.h4
-rw-r--r--examples/widgets/validators/ledwidget.cpp4
-rw-r--r--examples/widgets/validators/ledwidget.h4
-rw-r--r--examples/widgets/validators/localeselector.cpp4
-rw-r--r--examples/widgets/validators/localeselector.h4
-rw-r--r--examples/widgets/validators/main.cpp4
-rw-r--r--examples/widgets/wiggly/dialog.cpp4
-rw-r--r--examples/widgets/wiggly/dialog.h4
-rw-r--r--examples/widgets/wiggly/main.cpp4
-rw-r--r--examples/widgets/wiggly/wigglywidget.cpp4
-rw-r--r--examples/widgets/wiggly/wigglywidget.h4
-rw-r--r--examples/widgets/windowflags/controllerwindow.cpp4
-rw-r--r--examples/widgets/windowflags/controllerwindow.h4
-rw-r--r--examples/widgets/windowflags/main.cpp4
-rw-r--r--examples/widgets/windowflags/previewwindow.cpp4
-rw-r--r--examples/widgets/windowflags/previewwindow.h4
-rw-r--r--examples/xml/dombookmarks/main.cpp4
-rw-r--r--examples/xml/dombookmarks/mainwindow.cpp4
-rw-r--r--examples/xml/dombookmarks/mainwindow.h4
-rw-r--r--examples/xml/dombookmarks/xbeltree.cpp4
-rw-r--r--examples/xml/dombookmarks/xbeltree.h4
-rw-r--r--examples/xml/htmlinfo/main.cpp4
-rw-r--r--examples/xml/rsslisting/main.cpp4
-rw-r--r--examples/xml/rsslisting/rsslisting.cpp4
-rw-r--r--examples/xml/rsslisting/rsslisting.h4
-rw-r--r--examples/xml/saxbookmarks/main.cpp4
-rw-r--r--examples/xml/saxbookmarks/mainwindow.cpp4
-rw-r--r--examples/xml/saxbookmarks/mainwindow.h4
-rw-r--r--examples/xml/saxbookmarks/xbelgenerator.cpp4
-rw-r--r--examples/xml/saxbookmarks/xbelgenerator.h4
-rw-r--r--examples/xml/saxbookmarks/xbelhandler.cpp4
-rw-r--r--examples/xml/saxbookmarks/xbelhandler.h4
-rw-r--r--examples/xml/streambookmarks/main.cpp4
-rw-r--r--examples/xml/streambookmarks/mainwindow.cpp4
-rw-r--r--examples/xml/streambookmarks/mainwindow.h4
-rw-r--r--examples/xml/streambookmarks/xbelreader.cpp4
-rw-r--r--examples/xml/streambookmarks/xbelreader.h4
-rw-r--r--examples/xml/streambookmarks/xbelwriter.cpp4
-rw-r--r--examples/xml/streambookmarks/xbelwriter.h4
-rw-r--r--examples/xml/xmlstreamlint/main.cpp4
-rw-r--r--header.BSD4
-rw-r--r--header.FDL4
-rw-r--r--header.LGPL4
-rw-r--r--header.LGPL-ONLY6
-rw-r--r--mkspecs/aix-g++-64/qplatformdefs.h4
-rw-r--r--mkspecs/aix-g++/qplatformdefs.h4
-rw-r--r--mkspecs/aix-xlc-64/qplatformdefs.h4
-rw-r--r--mkspecs/aix-xlc/qplatformdefs.h4
-rw-r--r--mkspecs/common/aix/qplatformdefs.h4
-rw-r--r--mkspecs/common/c89/qplatformdefs.h4
-rw-r--r--mkspecs/common/g++-macx.conf3
-rw-r--r--mkspecs/common/gcc-base-macx.conf4
-rw-r--r--mkspecs/common/mac/qplatformdefs.h4
-rw-r--r--mkspecs/common/nacl/g++-nacl32.conf11
-rw-r--r--mkspecs/common/nacl/g++-nacl64.conf11
-rw-r--r--mkspecs/common/nacl/nacl-base.conf10
-rw-r--r--mkspecs/common/nacl/qplatformdefs.h56
-rw-r--r--mkspecs/common/posix/qplatformdefs.h4
-rw-r--r--mkspecs/common/qcc-base-qnx.conf69
-rw-r--r--mkspecs/common/qcc-base.conf36
-rw-r--r--mkspecs/common/wince/qplatformdefs.h4
-rw-r--r--mkspecs/cygwin-g++/qplatformdefs.h4
-rw-r--r--mkspecs/darwin-g++/qplatformdefs.h4
-rw-r--r--mkspecs/features/qt.prf29
-rw-r--r--mkspecs/features/qt_module_config.prf2
-rw-r--r--mkspecs/features/qtopia.prf1
-rw-r--r--mkspecs/features/qtopiainc.prf1
-rw-r--r--mkspecs/features/qtopialib.prf2
-rw-r--r--mkspecs/features/unix/gdb_dwarf_index.prf12
-rw-r--r--mkspecs/freebsd-g++/qplatformdefs.h4
-rw-r--r--mkspecs/freebsd-g++34/qplatformdefs.h4
-rw-r--r--mkspecs/freebsd-g++40/qplatformdefs.h4
-rw-r--r--mkspecs/freebsd-icc/qplatformdefs.h4
-rw-r--r--mkspecs/hpux-acc-64/qplatformdefs.h4
-rw-r--r--mkspecs/hpux-acc-o64/qplatformdefs.h4
-rw-r--r--mkspecs/hpux-acc/qplatformdefs.h4
-rw-r--r--mkspecs/hpux-g++-64/qplatformdefs.h4
-rw-r--r--mkspecs/hpux-g++/qplatformdefs.h4
-rw-r--r--mkspecs/hpuxi-acc-32/qplatformdefs.h4
-rw-r--r--mkspecs/hpuxi-acc-64/qplatformdefs.h4
-rw-r--r--mkspecs/hpuxi-g++-64/qplatformdefs.h4
-rw-r--r--mkspecs/hurd-g++/qplatformdefs.h4
-rw-r--r--mkspecs/irix-cc-64/qplatformdefs.h4
-rw-r--r--mkspecs/irix-cc/qplatformdefs.h4
-rw-r--r--mkspecs/irix-g++-64/qplatformdefs.h4
-rw-r--r--mkspecs/irix-g++/qplatformdefs.h4
-rw-r--r--mkspecs/linux-arm-gnueabi-g++/qplatformdefs.h4
-rw-r--r--mkspecs/linux-cxx/qplatformdefs.h4
-rw-r--r--mkspecs/linux-ecc-64/qplatformdefs.h4
-rw-r--r--mkspecs/linux-g++-32/qplatformdefs.h4
-rw-r--r--mkspecs/linux-g++-64/qplatformdefs.h4
-rw-r--r--mkspecs/linux-g++-maemo/qplatformdefs.h4
-rw-r--r--mkspecs/linux-g++/qplatformdefs.h4
-rw-r--r--mkspecs/linux-icc-32/qplatformdefs.h4
-rw-r--r--mkspecs/linux-icc-64/qplatformdefs.h4
-rw-r--r--mkspecs/linux-icc/qplatformdefs.h4
-rw-r--r--mkspecs/linux-kcc/qplatformdefs.h4
-rw-r--r--mkspecs/linux-llvm/qplatformdefs.h4
-rw-r--r--mkspecs/linux-lsb-g++/qplatformdefs.h4
-rw-r--r--mkspecs/linux-pgcc/qplatformdefs.h4
-rw-r--r--mkspecs/lynxos-g++/qplatformdefs.h4
-rw-r--r--mkspecs/macx-clang/Info.plist.app (renamed from mkspecs/unsupported/macx-clang/Info.plist.app)0
-rw-r--r--mkspecs/macx-clang/Info.plist.lib (renamed from mkspecs/unsupported/macx-clang/Info.plist.lib)0
-rw-r--r--mkspecs/macx-clang/qmake.conf21
-rw-r--r--mkspecs/macx-clang/qplatformdefs.h43
-rw-r--r--mkspecs/macx-g++/qplatformdefs.h4
-rw-r--r--mkspecs/macx-g++40/qplatformdefs.h4
-rw-r--r--mkspecs/macx-g++42/qplatformdefs.h4
-rw-r--r--mkspecs/macx-icc/qplatformdefs.h4
-rw-r--r--mkspecs/macx-llvm/qplatformdefs.h4
-rw-r--r--mkspecs/macx-pbuilder/qplatformdefs.h4
-rw-r--r--mkspecs/macx-xcode/qplatformdefs.h4
-rw-r--r--mkspecs/macx-xlc/qplatformdefs.h4
-rw-r--r--mkspecs/modules/README6
-rw-r--r--mkspecs/netbsd-g++/qplatformdefs.h4
-rw-r--r--mkspecs/openbsd-g++/qplatformdefs.h4
-rw-r--r--mkspecs/sco-cc/qplatformdefs.h4
-rw-r--r--mkspecs/sco-g++/qplatformdefs.h4
-rw-r--r--mkspecs/solaris-cc-64-stlport/qplatformdefs.h4
-rw-r--r--mkspecs/solaris-cc-64/qplatformdefs.h4
-rw-r--r--mkspecs/solaris-cc-stlport/qplatformdefs.h4
-rw-r--r--mkspecs/solaris-cc/qplatformdefs.h4
-rw-r--r--mkspecs/solaris-g++-64/qplatformdefs.h4
-rw-r--r--mkspecs/solaris-g++/qplatformdefs.h4
-rw-r--r--mkspecs/tru64-cxx/qplatformdefs.h4
-rw-r--r--mkspecs/tru64-g++/qplatformdefs.h4
-rw-r--r--mkspecs/unixware-cc/qplatformdefs.h4
-rw-r--r--mkspecs/unixware-g++/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/blackberry-armv7le-qcc/qmake.conf25
-rw-r--r--mkspecs/unsupported/blackberry-armv7le-qcc/qplatformdefs.h102
-rw-r--r--mkspecs/unsupported/blackberry-x86-qcc/qmake.conf25
-rw-r--r--mkspecs/unsupported/blackberry-x86-qcc/qplatformdefs.h102
-rw-r--r--mkspecs/unsupported/integrity-ghs/qmake.conf3
-rw-r--r--mkspecs/unsupported/integrity-ghs/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/linux-armcc/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/linux-clang/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/linux-host-g++/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/linux-scratchbox2-g++/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/macx-clang/qmake.conf21
-rw-r--r--mkspecs/unsupported/macx-clang/qplatformdefs.h43
-rw-r--r--mkspecs/unsupported/nacl-g++/qmake.conf14
-rw-r--r--mkspecs/unsupported/nacl-g++/qplatformdefs.h47
-rw-r--r--mkspecs/unsupported/nacl64-g++/qmake.conf14
-rw-r--r--mkspecs/unsupported/nacl64-g++/qplatformdefs.h47
-rw-r--r--mkspecs/unsupported/qnx-g++/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/qws/integrity-arm-cxarm/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/qws/integrity-ppc-cxppc/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/qws/linux-x86-openkode-g++/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/qws/qnx-641/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/qws/qnx-generic-g++/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/qws/qnx-i386-g++/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/qws/qnx-ppc-g++/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/vxworks-ppc-dcc/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/vxworks-ppc-g++/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/vxworks-simpentium-dcc/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/vxworks-simpentium-g++/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/win32-borland/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/win32-g++-cross/qplatformdefs.h4
-rw-r--r--mkspecs/unsupported/win32-msvc2003/qplatformdefs.h4
-rw-r--r--mkspecs/win32-g++/qplatformdefs.h4
-rw-r--r--mkspecs/win32-icc/qplatformdefs.h4
-rw-r--r--mkspecs/win32-msvc2005/qplatformdefs.h5
-rw-r--r--mkspecs/win32-msvc2008/qplatformdefs.h4
-rw-r--r--mkspecs/win32-msvc2010/qplatformdefs.h4
-rw-r--r--mkspecs/wince50standard-armv4i-msvc2005/qplatformdefs.h4
-rw-r--r--mkspecs/wince50standard-armv4i-msvc2008/qplatformdefs.h4
-rw-r--r--mkspecs/wince50standard-mipsii-msvc2005/qplatformdefs.h4
-rw-r--r--mkspecs/wince50standard-mipsii-msvc2008/qplatformdefs.h4
-rw-r--r--mkspecs/wince50standard-mipsiv-msvc2005/qplatformdefs.h4
-rw-r--r--mkspecs/wince50standard-mipsiv-msvc2008/qplatformdefs.h4
-rw-r--r--mkspecs/wince50standard-sh4-msvc2005/qplatformdefs.h4
-rw-r--r--mkspecs/wince50standard-sh4-msvc2008/qplatformdefs.h4
-rw-r--r--mkspecs/wince50standard-x86-msvc2005/qplatformdefs.h4
-rw-r--r--mkspecs/wince50standard-x86-msvc2008/qplatformdefs.h4
-rw-r--r--mkspecs/wince60standard-armv4i-msvc2005/qplatformdefs.h4
-rw-r--r--mkspecs/wince60standard-x86-msvc2005/qplatformdefs.h4
-rw-r--r--mkspecs/wince70embedded-armv4i-msvc2008/qplatformdefs.h4
-rw-r--r--mkspecs/wince70embedded-x86-msvc2008/qplatformdefs.h4
-rw-r--r--mkspecs/wincewm50pocket-msvc2005/qplatformdefs.h4
-rw-r--r--mkspecs/wincewm50pocket-msvc2008/qplatformdefs.h4
-rw-r--r--mkspecs/wincewm50smart-msvc2005/qplatformdefs.h4
-rw-r--r--mkspecs/wincewm50smart-msvc2008/qplatformdefs.h4
-rw-r--r--mkspecs/wincewm60professional-msvc2005/qplatformdefs.h4
-rw-r--r--mkspecs/wincewm60professional-msvc2008/qplatformdefs.h4
-rw-r--r--mkspecs/wincewm60standard-msvc2005/qplatformdefs.h4
-rw-r--r--mkspecs/wincewm60standard-msvc2008/qplatformdefs.h4
-rw-r--r--mkspecs/wincewm65professional-msvc2005/qplatformdefs.h4
-rw-r--r--mkspecs/wincewm65professional-msvc2008/qplatformdefs.h4
-rw-r--r--qmake/cachekeys.h4
-rw-r--r--qmake/generators/integrity/gbuild.cpp4
-rw-r--r--qmake/generators/integrity/gbuild.h4
-rw-r--r--qmake/generators/mac/pbuilder_pbx.cpp4
-rw-r--r--qmake/generators/mac/pbuilder_pbx.h4
-rw-r--r--qmake/generators/makefile.cpp6
-rw-r--r--qmake/generators/makefile.h4
-rw-r--r--qmake/generators/makefiledeps.cpp4
-rw-r--r--qmake/generators/makefiledeps.h4
-rw-r--r--qmake/generators/metamakefile.cpp4
-rw-r--r--qmake/generators/metamakefile.h4
-rw-r--r--qmake/generators/projectgenerator.cpp4
-rw-r--r--qmake/generators/projectgenerator.h4
-rw-r--r--qmake/generators/unix/unixmake.cpp4
-rw-r--r--qmake/generators/unix/unixmake.h4
-rw-r--r--qmake/generators/unix/unixmake2.cpp4
-rw-r--r--qmake/generators/win32/borland_bmake.cpp4
-rw-r--r--qmake/generators/win32/borland_bmake.h4
-rw-r--r--qmake/generators/win32/mingw_make.cpp4
-rw-r--r--qmake/generators/win32/mingw_make.h4
-rw-r--r--qmake/generators/win32/msbuild_objectmodel.cpp4
-rw-r--r--qmake/generators/win32/msbuild_objectmodel.h4
-rw-r--r--qmake/generators/win32/msvc_nmake.cpp4
-rw-r--r--qmake/generators/win32/msvc_nmake.h4
-rw-r--r--qmake/generators/win32/msvc_objectmodel.cpp4
-rw-r--r--qmake/generators/win32/msvc_objectmodel.h4
-rw-r--r--qmake/generators/win32/msvc_vcproj.cpp18
-rw-r--r--qmake/generators/win32/msvc_vcproj.h4
-rw-r--r--qmake/generators/win32/msvc_vcxproj.cpp4
-rw-r--r--qmake/generators/win32/msvc_vcxproj.h4
-rw-r--r--qmake/generators/win32/winmakefile.cpp4
-rw-r--r--qmake/generators/win32/winmakefile.h4
-rw-r--r--qmake/generators/xmloutput.cpp4
-rw-r--r--qmake/generators/xmloutput.h4
-rw-r--r--qmake/main.cpp30
-rw-r--r--qmake/meta.cpp30
-rw-r--r--qmake/meta.h4
-rw-r--r--qmake/option.cpp15
-rw-r--r--qmake/option.h16
-rw-r--r--qmake/project.cpp87
-rw-r--r--qmake/project.h6
-rw-r--r--qmake/property.cpp4
-rw-r--r--qmake/property.h4
-rw-r--r--qmake/qmake_pch.h4
-rw-r--r--qtbase.pro31
-rw-r--r--src/3rdparty/.gitattributes1
-rw-r--r--src/3rdparty/harfbuzz/src/harfbuzz-thai.c33
-rw-r--r--src/3rdparty/libgq.pri9
-rw-r--r--src/3rdparty/libgq/.gitignore37
-rw-r--r--src/3rdparty/libgq/Makefile.am4
-rw-r--r--src/3rdparty/libgq/README6
-rwxr-xr-xsrc/3rdparty/libgq/autogen.sh2
-rw-r--r--src/3rdparty/libgq/configure.ac23
-rw-r--r--src/3rdparty/libgq/debian/README.scratchbox28
-rw-r--r--src/3rdparty/libgq/debian/changelog31
-rw-r--r--src/3rdparty/libgq/debian/compat1
-rw-r--r--src/3rdparty/libgq/debian/control43
-rw-r--r--src/3rdparty/libgq/debian/copyright8
-rwxr-xr-xsrc/3rdparty/libgq/debian/fixup-scratchbox79
-rw-r--r--src/3rdparty/libgq/debian/libgq-gconf-dev.install5
-rw-r--r--src/3rdparty/libgq/debian/libgq-gconf-doc.install1
-rw-r--r--src/3rdparty/libgq/debian/libgq-gconf0.install1
-rw-r--r--src/3rdparty/libgq/debian/maemo-sanitize0
-rwxr-xr-xsrc/3rdparty/libgq/debian/rules32
-rw-r--r--src/3rdparty/libgq/gconf/Doxyfile1514
-rw-r--r--src/3rdparty/libgq/gconf/GConfItem1
-rw-r--r--src/3rdparty/libgq/gconf/Makefile.am37
-rw-r--r--src/3rdparty/libgq/gconf/gconfitem.cpp376
-rw-r--r--src/3rdparty/libgq/gconf/gconfitem.h147
-rw-r--r--src/3rdparty/libgq/gconf/gq-gconf.pc.in11
-rwxr-xr-xsrc/3rdparty/libgq/gconf/run-test-gconf49
-rw-r--r--src/3rdparty/libgq/gconf/test-gconf.cpp299
-rw-r--r--src/3rdparty/libgq/gconf/test-gconf.h86
-rw-r--r--src/3rdparty/libjpeg.pri5
-rw-r--r--src/3rdparty/libmng.pri25
-rw-r--r--src/3rdparty/libmng/CHANGES1447
-rw-r--r--src/3rdparty/libmng/LICENSE57
-rw-r--r--src/3rdparty/libmng/README36
-rw-r--r--src/3rdparty/libmng/README.autoconf213
-rw-r--r--src/3rdparty/libmng/README.config104
-rw-r--r--src/3rdparty/libmng/README.contrib95
-rw-r--r--src/3rdparty/libmng/README.dll41
-rw-r--r--src/3rdparty/libmng/README.examples48
-rw-r--r--src/3rdparty/libmng/README.footprint46
-rw-r--r--src/3rdparty/libmng/README.packaging24
-rw-r--r--src/3rdparty/libmng/doc/Plan1.pngbin9058 -> 0 bytes
-rw-r--r--src/3rdparty/libmng/doc/Plan2.pngbin8849 -> 0 bytes
-rw-r--r--src/3rdparty/libmng/doc/doc.readme19
-rw-r--r--src/3rdparty/libmng/doc/libmng.txt1107
-rw-r--r--src/3rdparty/libmng/doc/man/jng.537
-rw-r--r--src/3rdparty/libmng/doc/man/libmng.31146
-rw-r--r--src/3rdparty/libmng/doc/man/mng.542
-rw-r--r--src/3rdparty/libmng/doc/misc/magic.dif30
-rw-r--r--src/3rdparty/libmng/doc/rpm/libmng-1.0.10-rhconf.patch38
-rw-r--r--src/3rdparty/libmng/doc/rpm/libmng.spec116
-rw-r--r--src/3rdparty/libmng/libmng.h2932
-rw-r--r--src/3rdparty/libmng/libmng_callback_xs.c1239
-rw-r--r--src/3rdparty/libmng/libmng_chunk_descr.c6090
-rw-r--r--src/3rdparty/libmng/libmng_chunk_descr.h146
-rw-r--r--src/3rdparty/libmng/libmng_chunk_io.c10740
-rw-r--r--src/3rdparty/libmng/libmng_chunk_io.h415
-rw-r--r--src/3rdparty/libmng/libmng_chunk_prc.c4452
-rw-r--r--src/3rdparty/libmng/libmng_chunk_prc.h381
-rw-r--r--src/3rdparty/libmng/libmng_chunk_xs.c7016
-rw-r--r--src/3rdparty/libmng/libmng_chunks.h1026
-rw-r--r--src/3rdparty/libmng/libmng_cms.c758
-rw-r--r--src/3rdparty/libmng/libmng_cms.h92
-rw-r--r--src/3rdparty/libmng/libmng_conf.h295
-rw-r--r--src/3rdparty/libmng/libmng_data.h1032
-rw-r--r--src/3rdparty/libmng/libmng_display.c7140
-rw-r--r--src/3rdparty/libmng/libmng_display.h343
-rw-r--r--src/3rdparty/libmng/libmng_dither.c58
-rw-r--r--src/3rdparty/libmng/libmng_dither.h45
-rw-r--r--src/3rdparty/libmng/libmng_error.c326
-rw-r--r--src/3rdparty/libmng/libmng_error.h119
-rw-r--r--src/3rdparty/libmng/libmng_filter.c978
-rw-r--r--src/3rdparty/libmng/libmng_filter.h69
-rw-r--r--src/3rdparty/libmng/libmng_hlapi.c3001
-rw-r--r--src/3rdparty/libmng/libmng_jpeg.c1088
-rw-r--r--src/3rdparty/libmng/libmng_jpeg.h57
-rw-r--r--src/3rdparty/libmng/libmng_memory.h64
-rw-r--r--src/3rdparty/libmng/libmng_object_prc.c6998
-rw-r--r--src/3rdparty/libmng/libmng_object_prc.h690
-rw-r--r--src/3rdparty/libmng/libmng_objects.h635
-rw-r--r--src/3rdparty/libmng/libmng_pixels.c24610
-rw-r--r--src/3rdparty/libmng/libmng_pixels.h1147
-rw-r--r--src/3rdparty/libmng/libmng_prop_xs.c2799
-rw-r--r--src/3rdparty/libmng/libmng_read.c1369
-rw-r--r--src/3rdparty/libmng/libmng_read.h53
-rw-r--r--src/3rdparty/libmng/libmng_trace.c1683
-rw-r--r--src/3rdparty/libmng/libmng_trace.h1474
-rw-r--r--src/3rdparty/libmng/libmng_types.h574
-rw-r--r--src/3rdparty/libmng/libmng_write.c198
-rw-r--r--src/3rdparty/libmng/libmng_write.h49
-rw-r--r--src/3rdparty/libmng/libmng_zlib.c607
-rw-r--r--src/3rdparty/libmng/libmng_zlib.h60
-rw-r--r--src/3rdparty/libmng/makefiles/Makefile.am29
-rw-r--r--src/3rdparty/libmng/makefiles/README27
-rw-r--r--src/3rdparty/libmng/makefiles/configure.in193
-rw-r--r--src/3rdparty/libmng/makefiles/makefile.bcb3108
-rw-r--r--src/3rdparty/libmng/makefiles/makefile.dj155
-rw-r--r--src/3rdparty/libmng/makefiles/makefile.linux180
-rw-r--r--src/3rdparty/libmng/makefiles/makefile.mingw164
-rw-r--r--src/3rdparty/libmng/makefiles/makefile.mingwdll158
-rw-r--r--src/3rdparty/libmng/makefiles/makefile.qnx160
-rw-r--r--src/3rdparty/libmng/makefiles/makefile.unix67
-rw-r--r--src/3rdparty/libmng/makefiles/makefile.vcwin3299
-rwxr-xr-xsrc/3rdparty/libmng/unmaintained/autogen.sh50
-rw-r--r--src/3rdparty/libpng/pngpriv.h4
-rw-r--r--src/3rdparty/libtiff.pri43
-rw-r--r--src/3rdparty/libtiff/COPYRIGHT21
-rw-r--r--src/3rdparty/libtiff/ChangeLog4426
-rw-r--r--src/3rdparty/libtiff/HOWTO-RELEASE105
-rw-r--r--src/3rdparty/libtiff/README59
-rw-r--r--src/3rdparty/libtiff/README.vms12
-rw-r--r--src/3rdparty/libtiff/RELEASE-DATE1
-rw-r--r--src/3rdparty/libtiff/SConstruct171
-rw-r--r--src/3rdparty/libtiff/TODO12
-rw-r--r--src/3rdparty/libtiff/VERSION1
-rw-r--r--src/3rdparty/libtiff/html/TIFFTechNote2.html707
-rw-r--r--src/3rdparty/libtiff/html/addingtags.html292
-rw-r--r--src/3rdparty/libtiff/html/bugs.html63
-rw-r--r--src/3rdparty/libtiff/html/build.html880
-rw-r--r--src/3rdparty/libtiff/html/contrib.html209
-rw-r--r--src/3rdparty/libtiff/html/document.html48
-rw-r--r--src/3rdparty/libtiff/html/images.html41
-rw-r--r--src/3rdparty/libtiff/html/images/back.gifbin1000 -> 0 bytes
-rw-r--r--src/3rdparty/libtiff/html/images/bali.jpgbin26152 -> 0 bytes
-rw-r--r--src/3rdparty/libtiff/html/images/cat.gifbin12477 -> 0 bytes
-rw-r--r--src/3rdparty/libtiff/html/images/cover.jpgbin20189 -> 0 bytes
-rw-r--r--src/3rdparty/libtiff/html/images/cramps.gifbin13137 -> 0 bytes
-rw-r--r--src/3rdparty/libtiff/html/images/dave.gifbin8220 -> 0 bytes
-rw-r--r--src/3rdparty/libtiff/html/images/info.gifbin131 -> 0 bytes
-rw-r--r--src/3rdparty/libtiff/html/images/jello.jpgbin13744 -> 0 bytes
-rw-r--r--src/3rdparty/libtiff/html/images/jim.gifbin14493 -> 0 bytes
-rw-r--r--src/3rdparty/libtiff/html/images/note.gifbin264 -> 0 bytes
-rw-r--r--src/3rdparty/libtiff/html/images/oxford.gifbin6069 -> 0 bytes
-rw-r--r--src/3rdparty/libtiff/html/images/quad.jpgbin23904 -> 0 bytes
-rw-r--r--src/3rdparty/libtiff/html/images/ring.gifbin4275 -> 0 bytes
-rw-r--r--src/3rdparty/libtiff/html/images/smallliz.jpgbin16463 -> 0 bytes
-rw-r--r--src/3rdparty/libtiff/html/images/strike.gifbin5610 -> 0 bytes
-rw-r--r--src/3rdparty/libtiff/html/images/warning.gifbin287 -> 0 bytes
-rw-r--r--src/3rdparty/libtiff/html/index.html123
-rw-r--r--src/3rdparty/libtiff/html/internals.html572
-rw-r--r--src/3rdparty/libtiff/html/intro.html68
-rw-r--r--src/3rdparty/libtiff/html/libtiff.html747
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFClose.3tiff.html87
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFDataWidth.3tiff.html98
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFError.3tiff.html106
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFFlush.3tiff.html113
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFGetField.3tiff.html1446
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFOpen.3tiff.html421
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFPrintDirectory.3tiff.html225
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFRGBAImage.3tiff.html319
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFReadDirectory.3tiff.html218
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFReadEncodedStrip.3tiff.html133
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFReadEncodedTile.3tiff.html130
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFReadRGBAImage.3tiff.html301
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFReadRGBAStrip.3tiff.html208
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFReadRGBATile.3tiff.html261
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFReadRawStrip.3tiff.html109
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFReadRawTile.3tiff.html111
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFReadScanline.3tiff.html157
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFReadTile.3tiff.html133
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFSetDirectory.3tiff.html122
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFSetField.3tiff.html1362
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFWarning.3tiff.html108
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFWriteDirectory.3tiff.html176
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFWriteEncodedStrip.3tiff.html153
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFWriteEncodedTile.3tiff.html147
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFWriteRawStrip.3tiff.html144
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFWriteRawTile.3tiff.html128
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFWriteScanline.3tiff.html206
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFWriteTile.3tiff.html115
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFbuffer.3tiff.html116
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFcodec.3tiff.html116
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFcolor.3tiff.html975
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFmemory.3tiff.html110
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFquery.3tiff.html148
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFsize.3tiff.html95
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFstrip.3tiff.html129
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFswab.3tiff.html110
-rw-r--r--src/3rdparty/libtiff/html/man/TIFFtile.3tiff.html141
-rw-r--r--src/3rdparty/libtiff/html/man/fax2ps.1.html252
-rw-r--r--src/3rdparty/libtiff/html/man/fax2tiff.1.html607
-rw-r--r--src/3rdparty/libtiff/html/man/gif2tiff.1.html141
-rw-r--r--src/3rdparty/libtiff/html/man/index.html64
-rw-r--r--src/3rdparty/libtiff/html/man/libtiff.3tiff.html3137
-rw-r--r--src/3rdparty/libtiff/html/man/pal2rgb.1.html189
-rw-r--r--src/3rdparty/libtiff/html/man/ppm2tiff.1.html141
-rw-r--r--src/3rdparty/libtiff/html/man/ras2tiff.1.html139
-rw-r--r--src/3rdparty/libtiff/html/man/raw2tiff.1.html510
-rw-r--r--src/3rdparty/libtiff/html/man/rgb2ycbcr.1.html155
-rw-r--r--src/3rdparty/libtiff/html/man/sgi2tiff.1.html147
-rw-r--r--src/3rdparty/libtiff/html/man/thumbnail.1.html148
-rw-r--r--src/3rdparty/libtiff/html/man/tiff2bw.1.html161
-rw-r--r--src/3rdparty/libtiff/html/man/tiff2pdf.1.html609
-rw-r--r--src/3rdparty/libtiff/html/man/tiff2ps.1.html532
-rw-r--r--src/3rdparty/libtiff/html/man/tiff2rgba.1.html162
-rw-r--r--src/3rdparty/libtiff/html/man/tiffcmp.1.html156
-rw-r--r--src/3rdparty/libtiff/html/man/tiffcp.1.html522
-rw-r--r--src/3rdparty/libtiff/html/man/tiffcrop.1.html851
-rw-r--r--src/3rdparty/libtiff/html/man/tiffdither.1.html183
-rw-r--r--src/3rdparty/libtiff/html/man/tiffdump.1.html145
-rw-r--r--src/3rdparty/libtiff/html/man/tiffgt.1.html551
-rw-r--r--src/3rdparty/libtiff/html/man/tiffinfo.1.html196
-rw-r--r--src/3rdparty/libtiff/html/man/tiffmedian.1.html183
-rw-r--r--src/3rdparty/libtiff/html/man/tiffset.1.html176
-rw-r--r--src/3rdparty/libtiff/html/man/tiffsplit.1.html102
-rw-r--r--src/3rdparty/libtiff/html/man/tiffsv.1.html207
-rw-r--r--src/3rdparty/libtiff/html/misc.html116
-rw-r--r--src/3rdparty/libtiff/html/support.html655
-rw-r--r--src/3rdparty/libtiff/html/tools.html164
-rw-r--r--src/3rdparty/libtiff/html/v3.4beta007.html112
-rw-r--r--src/3rdparty/libtiff/html/v3.4beta016.html122
-rw-r--r--src/3rdparty/libtiff/html/v3.4beta018.html84
-rw-r--r--src/3rdparty/libtiff/html/v3.4beta024.html139
-rw-r--r--src/3rdparty/libtiff/html/v3.4beta028.html146
-rw-r--r--src/3rdparty/libtiff/html/v3.4beta029.html86
-rw-r--r--src/3rdparty/libtiff/html/v3.4beta031.html94
-rw-r--r--src/3rdparty/libtiff/html/v3.4beta032.html90
-rw-r--r--src/3rdparty/libtiff/html/v3.4beta033.html82
-rw-r--r--src/3rdparty/libtiff/html/v3.4beta034.html68
-rw-r--r--src/3rdparty/libtiff/html/v3.4beta035.html63
-rw-r--r--src/3rdparty/libtiff/html/v3.4beta036.html117
-rw-r--r--src/3rdparty/libtiff/html/v3.5.1.html75
-rw-r--r--src/3rdparty/libtiff/html/v3.5.2.html108
-rw-r--r--src/3rdparty/libtiff/html/v3.5.3.html132
-rw-r--r--src/3rdparty/libtiff/html/v3.5.4.html88
-rw-r--r--src/3rdparty/libtiff/html/v3.5.5.html155
-rw-r--r--src/3rdparty/libtiff/html/v3.5.6-beta.html185
-rw-r--r--src/3rdparty/libtiff/html/v3.5.7.html259
-rw-r--r--src/3rdparty/libtiff/html/v3.6.0.html434
-rw-r--r--src/3rdparty/libtiff/html/v3.6.1.html199
-rw-r--r--src/3rdparty/libtiff/html/v3.7.0.html144
-rw-r--r--src/3rdparty/libtiff/html/v3.7.0alpha.html249
-rw-r--r--src/3rdparty/libtiff/html/v3.7.0beta.html162
-rw-r--r--src/3rdparty/libtiff/html/v3.7.0beta2.html131
-rw-r--r--src/3rdparty/libtiff/html/v3.7.1.html233
-rw-r--r--src/3rdparty/libtiff/html/v3.7.2.html222
-rw-r--r--src/3rdparty/libtiff/html/v3.7.3.html230
-rw-r--r--src/3rdparty/libtiff/html/v3.7.4.html133
-rw-r--r--src/3rdparty/libtiff/html/v3.8.0.html199
-rw-r--r--src/3rdparty/libtiff/html/v3.8.1.html217
-rw-r--r--src/3rdparty/libtiff/html/v3.8.2.html137
-rw-r--r--src/3rdparty/libtiff/html/v3.9.0beta.html304
-rw-r--r--src/3rdparty/libtiff/html/v3.9.1.html115
-rw-r--r--src/3rdparty/libtiff/html/v3.9.2.html122
-rw-r--r--src/3rdparty/libtiff/libtiff/SConstruct73
-rw-r--r--src/3rdparty/libtiff/libtiff/libtiff.def140
-rw-r--r--src/3rdparty/libtiff/libtiff/mkg3states.c444
-rw-r--r--src/3rdparty/libtiff/libtiff/t4.h285
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_acorn.c519
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_apple.c274
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_atari.c243
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_aux.c275
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_close.c119
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_codec.c153
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_color.c275
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_compress.c288
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_config.h337
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_config.h-vms46
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_config.h.in309
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_config.vc.h56
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_config.wince.h67
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_dir.c1369
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_dir.h202
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_dirinfo.c881
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_dirread.c2016
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_dirwrite.c1407
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_dumpmode.c119
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_error.c73
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_extension.c111
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_fax3.c1603
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_fax3.h525
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_fax3sm.c1253
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_flush.c67
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_getimage.c2669
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_jbig.c378
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_jpeg.c2035
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_luv.c1622
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_lzw.c1122
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_msdos.c186
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_next.c147
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_ojpeg.c2427
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_open.c688
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_packbits.c293
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_pixarlog.c1364
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_predict.c729
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_predict.h70
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_print.c639
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_read.c741
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_stream.cxx295
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_strip.c363
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_swab.c235
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_thunder.c158
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_tile.c273
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_unix.c293
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_version.c33
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_warning.c74
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_win3.c225
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_win32.c402
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_wince.c281
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_write.c711
-rw-r--r--src/3rdparty/libtiff/libtiff/tif_zip.c412
-rw-r--r--src/3rdparty/libtiff/libtiff/tiff.h647
-rw-r--r--src/3rdparty/libtiff/libtiff/tiffconf.h110
-rw-r--r--src/3rdparty/libtiff/libtiff/tiffconf.h.in103
-rw-r--r--src/3rdparty/libtiff/libtiff/tiffconf.vc.h109
-rw-r--r--src/3rdparty/libtiff/libtiff/tiffconf.wince.h129
-rw-r--r--src/3rdparty/libtiff/libtiff/tiffio.h521
-rw-r--r--src/3rdparty/libtiff/libtiff/tiffio.hxx42
-rw-r--r--src/3rdparty/libtiff/libtiff/tiffiop.h343
-rw-r--r--src/3rdparty/libtiff/libtiff/tiffvers.h9
-rw-r--r--src/3rdparty/libtiff/libtiff/uvcode.h173
-rw-r--r--src/3rdparty/libtiff/nmake.opt218
-rw-r--r--src/3rdparty/libtiff/port/dummy.c12
-rw-r--r--src/3rdparty/libtiff/port/getopt.c124
-rw-r--r--src/3rdparty/libtiff/port/lfind.c62
-rw-r--r--src/3rdparty/libtiff/port/libport.h51
-rw-r--r--src/3rdparty/libtiff/port/strcasecmp.c50
-rw-r--r--src/3rdparty/libtiff/port/strtoul.c109
-rw-r--r--src/3rdparty/patches/libmng-1.0.10-endless-loop.patch65
-rw-r--r--src/3rdparty/pcre.pri38
-rw-r--r--src/3rdparty/pcre/config.h15
-rwxr-xr-xsrc/3rdparty/pcre/import_from_pcre_tarball.sh154
-rw-r--r--src/3rdparty/s60/eiksoftkeyimage.h95
-rw-r--r--src/3rdparty/sha1/sha1.cpp6
-rw-r--r--src/3rdparty/zlib_dependency.pri5
-rw-r--r--src/concurrent/concurrent.pro59
-rw-r--r--src/concurrent/qfuture.cpp697
-rw-r--r--src/concurrent/qfuture.h277
-rw-r--r--src/concurrent/qfutureinterface.cpp565
-rw-r--r--src/concurrent/qfutureinterface.h312
-rw-r--r--src/concurrent/qfutureinterface_p.h167
-rw-r--r--src/concurrent/qfuturesynchronizer.cpp156
-rw-r--r--src/concurrent/qfuturesynchronizer.h120
-rw-r--r--src/concurrent/qfuturewatcher.cpp592
-rw-r--r--src/concurrent/qfuturewatcher.h221
-rw-r--r--src/concurrent/qfuturewatcher_p.h90
-rw-r--r--src/concurrent/qtconcurrentcompilertest.h78
-rw-r--r--src/concurrent/qtconcurrentexception.cpp211
-rw-r--r--src/concurrent/qtconcurrentexception.h128
-rw-r--r--src/concurrent/qtconcurrentfilter.cpp330
-rw-r--r--src/concurrent/qtconcurrentfilter.h269
-rw-r--r--src/concurrent/qtconcurrentfilterkernel.h350
-rw-r--r--src/concurrent/qtconcurrentfunctionwrappers.h303
-rw-r--r--src/concurrent/qtconcurrentiteratekernel.cpp194
-rw-r--r--src/concurrent/qtconcurrentiteratekernel.h339
-rw-r--r--src/concurrent/qtconcurrentmap.cpp402
-rw-r--r--src/concurrent/qtconcurrentmap.h319
-rw-r--r--src/concurrent/qtconcurrentmapkernel.h272
-rw-r--r--src/concurrent/qtconcurrentmedian.h129
-rw-r--r--src/concurrent/qtconcurrentreducekernel.h254
-rw-r--r--src/concurrent/qtconcurrentresultstore.cpp256
-rw-r--r--src/concurrent/qtconcurrentresultstore.h238
-rw-r--r--src/concurrent/qtconcurrentrun.cpp152
-rw-r--r--src/concurrent/qtconcurrentrun.h347
-rw-r--r--src/concurrent/qtconcurrentrunbase.h154
-rw-r--r--src/concurrent/qtconcurrentstoredfunctioncall.h1312
-rw-r--r--src/concurrent/qtconcurrentthreadengine.cpp299
-rw-r--r--src/concurrent/qtconcurrentthreadengine.h284
-rw-r--r--src/corelib/animation/qabstractanimation.cpp4
-rw-r--r--src/corelib/animation/qabstractanimation.h5
-rw-r--r--src/corelib/animation/qabstractanimation_p.h8
-rw-r--r--src/corelib/animation/qanimationgroup.cpp4
-rw-r--r--src/corelib/animation/qanimationgroup.h5
-rw-r--r--src/corelib/animation/qanimationgroup_p.h4
-rw-r--r--src/corelib/animation/qparallelanimationgroup.cpp4
-rw-r--r--src/corelib/animation/qparallelanimationgroup.h5
-rw-r--r--src/corelib/animation/qparallelanimationgroup_p.h4
-rw-r--r--src/corelib/animation/qpauseanimation.cpp4
-rw-r--r--src/corelib/animation/qpauseanimation.h5
-rw-r--r--src/corelib/animation/qpropertyanimation.cpp6
-rw-r--r--src/corelib/animation/qpropertyanimation.h5
-rw-r--r--src/corelib/animation/qpropertyanimation_p.h4
-rw-r--r--src/corelib/animation/qsequentialanimationgroup.cpp4
-rw-r--r--src/corelib/animation/qsequentialanimationgroup.h5
-rw-r--r--src/corelib/animation/qsequentialanimationgroup_p.h4
-rw-r--r--src/corelib/animation/qvariantanimation.cpp4
-rw-r--r--src/corelib/animation/qvariantanimation.h5
-rw-r--r--src/corelib/animation/qvariantanimation_p.h4
-rw-r--r--src/corelib/arch/alpha/qatomic_alpha.s4
-rw-r--r--src/corelib/arch/arch.pri18
-rw-r--r--src/corelib/arch/arm/arch.pri4
-rw-r--r--src/corelib/arch/arm/qatomic_arm.cpp72
-rw-r--r--src/corelib/arch/avr32/arch.pri3
-rw-r--r--src/corelib/arch/bfin/arch.pri3
-rw-r--r--src/corelib/arch/generic/qatomic_generic_unix.cpp7
-rw-r--r--src/corelib/arch/generic/qatomic_generic_windows.cpp4
-rw-r--r--src/corelib/arch/i386/arch.pri4
-rw-r--r--src/corelib/arch/i386/qatomic_i386.s103
-rw-r--r--src/corelib/arch/ia64/arch.pri4
-rw-r--r--src/corelib/arch/ia64/qatomic_ia64.s74
-rw-r--r--src/corelib/arch/integrity/arch.pri3
-rw-r--r--src/corelib/arch/macosx/arch.pri6
-rw-r--r--src/corelib/arch/macosx/qatomic32_ppc.s169
-rw-r--r--src/corelib/arch/mips/arch.pri8
-rw-r--r--src/corelib/arch/mips/qatomic_mips32.s150
-rw-r--r--src/corelib/arch/mips/qatomic_mips64.s138
-rw-r--r--src/corelib/arch/parisc/q_ldcw.s4
-rw-r--r--src/corelib/arch/parisc/qatomic_parisc.cpp4
-rw-r--r--src/corelib/arch/powerpc/qatomic32.s4
-rw-r--r--src/corelib/arch/powerpc/qatomic64.s4
-rw-r--r--src/corelib/arch/qatomic_alpha.h4
-rw-r--r--src/corelib/arch/qatomic_arch.h26
-rw-r--r--src/corelib/arch/qatomic_arm.h14
-rw-r--r--src/corelib/arch/qatomic_armv5.h381
-rw-r--r--src/corelib/arch/qatomic_armv6.h564
-rw-r--r--src/corelib/arch/qatomic_armv7.h10
-rw-r--r--src/corelib/arch/qatomic_avr32.h252
-rw-r--r--src/corelib/arch/qatomic_bfin.h4
-rw-r--r--src/corelib/arch/qatomic_bootstrap.h99
-rw-r--r--src/corelib/arch/qatomic_cxx11.h247
-rw-r--r--src/corelib/arch/qatomic_gcc.h130
-rw-r--r--src/corelib/arch/qatomic_generic.h4
-rw-r--r--src/corelib/arch/qatomic_i386.h423
-rw-r--r--src/corelib/arch/qatomic_ia64.h969
-rw-r--r--src/corelib/arch/qatomic_integrity.h4
-rw-r--r--src/corelib/arch/qatomic_macosx.h57
-rw-r--r--src/corelib/arch/qatomic_mips.h837
-rw-r--r--src/corelib/arch/qatomic_msvc.h381
-rw-r--r--src/corelib/arch/qatomic_parisc.h4
-rw-r--r--src/corelib/arch/qatomic_powerpc.h4
-rw-r--r--src/corelib/arch/qatomic_s390.h4
-rw-r--r--src/corelib/arch/qatomic_sh.h4
-rw-r--r--src/corelib/arch/qatomic_sh4a.h4
-rw-r--r--src/corelib/arch/qatomic_sparc.h4
-rw-r--r--src/corelib/arch/qatomic_symbian.h313
-rw-r--r--src/corelib/arch/qatomic_vxworks.h4
-rw-r--r--src/corelib/arch/qatomic_windows.h496
-rw-r--r--src/corelib/arch/qatomic_windowsce.h56
-rw-r--r--src/corelib/arch/qatomic_x86_64.h396
-rw-r--r--src/corelib/arch/s390/arch.pri3
-rw-r--r--src/corelib/arch/sh/qatomic_sh.cpp4
-rw-r--r--src/corelib/arch/sh4a/arch.pri3
-rw-r--r--src/corelib/arch/sparc/qatomic32.s4
-rw-r--r--src/corelib/arch/sparc/qatomic64.s4
-rw-r--r--src/corelib/arch/sparc/qatomic_sparc.cpp4
-rw-r--r--src/corelib/arch/windows/arch.pri3
-rw-r--r--src/corelib/arch/x86_64/arch.pri4
-rw-r--r--src/corelib/arch/x86_64/qatomic_sun.s91
-rw-r--r--src/corelib/codecs/codecs.pri64
-rw-r--r--src/corelib/codecs/codecs.qdoc4
-rw-r--r--src/corelib/codecs/cp949codetbl_p.h648
-rw-r--r--src/corelib/codecs/qbig5codec.cpp12788
-rw-r--r--src/corelib/codecs/qbig5codec_p.h135
-rw-r--r--src/corelib/codecs/qeucjpcodec.cpp261
-rw-r--r--src/corelib/codecs/qeucjpcodec_p.h117
-rw-r--r--src/corelib/codecs/qeuckrcodec.cpp3571
-rw-r--r--src/corelib/codecs/qeuckrcodec_p.h140
-rw-r--r--src/corelib/codecs/qfontjpcodec.cpp145
-rw-r--r--src/corelib/codecs/qfontjpcodec_p.h104
-rw-r--r--src/corelib/codecs/qfontlaocodec.cpp4
-rw-r--r--src/corelib/codecs/qfontlaocodec_p.h4
-rw-r--r--src/corelib/codecs/qgb18030codec.cpp9265
-rw-r--r--src/corelib/codecs/qgb18030codec_p.h170
-rw-r--r--src/corelib/codecs/qiconvcodec.cpp15
-rw-r--r--src/corelib/codecs/qiconvcodec_p.h5
-rw-r--r--src/corelib/codecs/qisciicodec.cpp4
-rw-r--r--src/corelib/codecs/qisciicodec_p.h4
-rw-r--r--src/corelib/codecs/qjiscodec.cpp367
-rw-r--r--src/corelib/codecs/qjiscodec_p.h117
-rw-r--r--src/corelib/codecs/qjpunicode.cpp10700
-rw-r--r--src/corelib/codecs/qjpunicode_p.h185
-rw-r--r--src/corelib/codecs/qlatincodec.cpp4
-rw-r--r--src/corelib/codecs/qlatincodec_p.h4
-rw-r--r--src/corelib/codecs/qsimplecodec.cpp4
-rw-r--r--src/corelib/codecs/qsimplecodec_p.h4
-rw-r--r--src/corelib/codecs/qsjiscodec.cpp229
-rw-r--r--src/corelib/codecs/qsjiscodec_p.h117
-rw-r--r--src/corelib/codecs/qtextcodec.cpp126
-rw-r--r--src/corelib/codecs/qtextcodec.h5
-rw-r--r--src/corelib/codecs/qtextcodec_p.h4
-rw-r--r--src/corelib/codecs/qtextcodecplugin.cpp161
-rw-r--r--src/corelib/codecs/qtextcodecplugin.h96
-rw-r--r--src/corelib/codecs/qtsciicodec.cpp4
-rw-r--r--src/corelib/codecs/qtsciicodec_p.h4
-rw-r--r--src/corelib/codecs/qutfcodec.cpp4
-rw-r--r--src/corelib/codecs/qutfcodec_p.h4
-rw-r--r--src/corelib/concurrent/concurrent.pri42
-rw-r--r--src/corelib/concurrent/qfuture.cpp697
-rw-r--r--src/corelib/concurrent/qfuture.h278
-rw-r--r--src/corelib/concurrent/qfutureinterface.cpp565
-rw-r--r--src/corelib/concurrent/qfutureinterface.h313
-rw-r--r--src/corelib/concurrent/qfutureinterface_p.h167
-rw-r--r--src/corelib/concurrent/qfuturesynchronizer.cpp156
-rw-r--r--src/corelib/concurrent/qfuturesynchronizer.h121
-rw-r--r--src/corelib/concurrent/qfuturewatcher.cpp592
-rw-r--r--src/corelib/concurrent/qfuturewatcher.h222
-rw-r--r--src/corelib/concurrent/qfuturewatcher_p.h90
-rw-r--r--src/corelib/concurrent/qrunnable.cpp107
-rw-r--r--src/corelib/concurrent/qrunnable.h73
-rw-r--r--src/corelib/concurrent/qtconcurrentcompilertest.h79
-rw-r--r--src/corelib/concurrent/qtconcurrentexception.cpp211
-rw-r--r--src/corelib/concurrent/qtconcurrentexception.h129
-rw-r--r--src/corelib/concurrent/qtconcurrentfilter.cpp330
-rw-r--r--src/corelib/concurrent/qtconcurrentfilter.h270
-rw-r--r--src/corelib/concurrent/qtconcurrentfilterkernel.h351
-rw-r--r--src/corelib/concurrent/qtconcurrentfunctionwrappers.h304
-rw-r--r--src/corelib/concurrent/qtconcurrentiteratekernel.cpp199
-rw-r--r--src/corelib/concurrent/qtconcurrentiteratekernel.h340
-rw-r--r--src/corelib/concurrent/qtconcurrentmap.cpp402
-rw-r--r--src/corelib/concurrent/qtconcurrentmap.h320
-rw-r--r--src/corelib/concurrent/qtconcurrentmapkernel.h273
-rw-r--r--src/corelib/concurrent/qtconcurrentmedian.h130
-rw-r--r--src/corelib/concurrent/qtconcurrentreducekernel.h255
-rw-r--r--src/corelib/concurrent/qtconcurrentresultstore.cpp256
-rw-r--r--src/corelib/concurrent/qtconcurrentresultstore.h239
-rw-r--r--src/corelib/concurrent/qtconcurrentrun.cpp152
-rw-r--r--src/corelib/concurrent/qtconcurrentrun.h348
-rw-r--r--src/corelib/concurrent/qtconcurrentrunbase.h155
-rw-r--r--src/corelib/concurrent/qtconcurrentstoredfunctioncall.h1313
-rw-r--r--src/corelib/concurrent/qtconcurrentthreadengine.cpp299
-rw-r--r--src/corelib/concurrent/qtconcurrentthreadengine.h285
-rw-r--r--src/corelib/concurrent/qthreadpool.cpp651
-rw-r--r--src/corelib/concurrent/qthreadpool.h96
-rw-r--r--src/corelib/concurrent/qthreadpool_p.h107
-rw-r--r--src/corelib/corelib.pro14
-rw-r--r--src/corelib/global/global.pri8
-rw-r--r--src/corelib/global/qconfig-dist.h4
-rw-r--r--src/corelib/global/qconfig-large.h4
-rw-r--r--src/corelib/global/qconfig-medium.h7
-rw-r--r--src/corelib/global/qconfig-minimal.h7
-rw-r--r--src/corelib/global/qconfig-nacl.h7
-rw-r--r--src/corelib/global/qconfig-small.h7
-rw-r--r--src/corelib/global/qendian.h5
-rw-r--r--src/corelib/global/qendian.qdoc4
-rw-r--r--src/corelib/global/qfeatures.h284
-rw-r--r--src/corelib/global/qfeatures.txt332
-rw-r--r--src/corelib/global/qglobal.cpp242
-rw-r--r--src/corelib/global/qglobal.h337
-rw-r--r--src/corelib/global/qlibraryinfo.cpp6
-rw-r--r--src/corelib/global/qlibraryinfo.h5
-rw-r--r--src/corelib/global/qlogging.cpp76
-rw-r--r--src/corelib/global/qlogging.h161
-rw-r--r--src/corelib/global/qmalloc.cpp4
-rw-r--r--src/corelib/global/qnamespace.h12
-rw-r--r--src/corelib/global/qnamespace.qdoc25
-rw-r--r--src/corelib/global/qnumeric.cpp4
-rw-r--r--src/corelib/global/qnumeric.h5
-rw-r--r--src/corelib/global/qnumeric_p.h4
-rw-r--r--src/corelib/global/qt_pch.h4
-rw-r--r--src/corelib/global/qt_windows.h7
-rw-r--r--src/corelib/io/io.pri6
-rw-r--r--src/corelib/io/qabstractfileengine.cpp4
-rw-r--r--src/corelib/io/qabstractfileengine.h5
-rw-r--r--src/corelib/io/qabstractfileengine_p.h4
-rw-r--r--src/corelib/io/qbuffer.cpp4
-rw-r--r--src/corelib/io/qbuffer.h5
-rw-r--r--src/corelib/io/qdatastream.cpp6
-rw-r--r--src/corelib/io/qdatastream.h7
-rw-r--r--src/corelib/io/qdatastream_p.h4
-rw-r--r--src/corelib/io/qdataurl.cpp4
-rw-r--r--src/corelib/io/qdataurl_p.h4
-rw-r--r--src/corelib/io/qdebug.cpp12
-rw-r--r--src/corelib/io/qdebug.h35
-rw-r--r--src/corelib/io/qdir.cpp42
-rw-r--r--src/corelib/io/qdir.h10
-rw-r--r--src/corelib/io/qdir_p.h4
-rw-r--r--src/corelib/io/qdiriterator.cpp6
-rw-r--r--src/corelib/io/qdiriterator.h5
-rw-r--r--src/corelib/io/qfile.cpp93
-rw-r--r--src/corelib/io/qfile.h11
-rw-r--r--src/corelib/io/qfile_p.h7
-rw-r--r--src/corelib/io/qfileinfo.cpp6
-rw-r--r--src/corelib/io/qfileinfo.h5
-rw-r--r--src/corelib/io/qfileinfo_p.h9
-rw-r--r--src/corelib/io/qfilesystemengine.cpp32
-rw-r--r--src/corelib/io/qfilesystemengine_mac.cpp4
-rw-r--r--src/corelib/io/qfilesystemengine_p.h6
-rw-r--r--src/corelib/io/qfilesystemengine_unix.cpp4
-rw-r--r--src/corelib/io/qfilesystemengine_win.cpp27
-rw-r--r--src/corelib/io/qfilesystementry.cpp24
-rw-r--r--src/corelib/io/qfilesystementry_p.h8
-rw-r--r--src/corelib/io/qfilesystemiterator_p.h14
-rw-r--r--src/corelib/io/qfilesystemiterator_unix.cpp4
-rw-r--r--src/corelib/io/qfilesystemiterator_win.cpp6
-rw-r--r--src/corelib/io/qfilesystemmetadata_p.h55
-rw-r--r--src/corelib/io/qfilesystemwatcher.cpp4
-rw-r--r--src/corelib/io/qfilesystemwatcher.h5
-rw-r--r--src/corelib/io/qfilesystemwatcher_inotify.cpp8
-rw-r--r--src/corelib/io/qfilesystemwatcher_inotify_p.h4
-rw-r--r--src/corelib/io/qfilesystemwatcher_kqueue.cpp4
-rw-r--r--src/corelib/io/qfilesystemwatcher_kqueue_p.h4
-rw-r--r--src/corelib/io/qfilesystemwatcher_p.h4
-rw-r--r--src/corelib/io/qfilesystemwatcher_polling.cpp4
-rw-r--r--src/corelib/io/qfilesystemwatcher_polling_p.h4
-rw-r--r--src/corelib/io/qfilesystemwatcher_win.cpp11
-rw-r--r--src/corelib/io/qfilesystemwatcher_win_p.h19
-rw-r--r--src/corelib/io/qfsfileengine.cpp28
-rw-r--r--src/corelib/io/qfsfileengine.h11
-rw-r--r--src/corelib/io/qfsfileengine_iterator.cpp4
-rw-r--r--src/corelib/io/qfsfileengine_iterator_p.h4
-rw-r--r--src/corelib/io/qfsfileengine_p.h33
-rw-r--r--src/corelib/io/qfsfileengine_unix.cpp365
-rw-r--r--src/corelib/io/qfsfileengine_win.cpp6
-rw-r--r--src/corelib/io/qiodevice.cpp19
-rw-r--r--src/corelib/io/qiodevice.h5
-rw-r--r--src/corelib/io/qiodevice_p.h4
-rw-r--r--src/corelib/io/qnoncontiguousbytedevice.cpp4
-rw-r--r--src/corelib/io/qnoncontiguousbytedevice_p.h4
-rw-r--r--src/corelib/io/qprocess.cpp88
-rw-r--r--src/corelib/io/qprocess.h9
-rw-r--r--src/corelib/io/qprocess_p.h22
-rw-r--r--src/corelib/io/qprocess_unix.cpp22
-rw-r--r--src/corelib/io/qprocess_win.cpp217
-rw-r--r--src/corelib/io/qprocess_wince.cpp9
-rw-r--r--src/corelib/io/qresource.cpp6
-rw-r--r--src/corelib/io/qresource.h5
-rw-r--r--src/corelib/io/qresource_iterator.cpp4
-rw-r--r--src/corelib/io/qresource_iterator_p.h4
-rw-r--r--src/corelib/io/qresource_p.h4
-rw-r--r--src/corelib/io/qsettings.cpp32
-rw-r--r--src/corelib/io/qsettings.h5
-rw-r--r--src/corelib/io/qsettings_mac.cpp4
-rw-r--r--src/corelib/io/qsettings_p.h8
-rw-r--r--src/corelib/io/qsettings_win.cpp6
-rw-r--r--src/corelib/io/qstandardpaths.cpp12
-rw-r--r--src/corelib/io/qstandardpaths.h5
-rw-r--r--src/corelib/io/qstandardpaths_mac.cpp4
-rw-r--r--src/corelib/io/qstandardpaths_unix.cpp6
-rw-r--r--src/corelib/io/qstandardpaths_win.cpp8
-rw-r--r--src/corelib/io/qtemporarydir.cpp62
-rw-r--r--src/corelib/io/qtemporarydir.h5
-rw-r--r--src/corelib/io/qtemporaryfile.cpp40
-rw-r--r--src/corelib/io/qtemporaryfile.h5
-rw-r--r--src/corelib/io/qtextstream.cpp28
-rw-r--r--src/corelib/io/qtextstream.h8
-rw-r--r--src/corelib/io/qtldurl.cpp4
-rw-r--r--src/corelib/io/qtldurl_p.h4
-rw-r--r--src/corelib/io/qurl.cpp200
-rw-r--r--src/corelib/io/qurl.h34
-rw-r--r--src/corelib/io/qwindowspipereader.cpp167
-rw-r--r--src/corelib/io/qwindowspipereader_p.h20
-rw-r--r--src/corelib/io/qwindowspipewriter.cpp4
-rw-r--r--src/corelib/io/qwindowspipewriter_p.h5
-rw-r--r--src/corelib/io/qwinoverlappedionotifier.cpp228
-rw-r--r--src/corelib/io/qwinoverlappedionotifier_p.h101
-rw-r--r--src/corelib/itemmodels/qabstractitemmodel.cpp108
-rw-r--r--src/corelib/itemmodels/qabstractitemmodel.h37
-rw-r--r--src/corelib/itemmodels/qabstractitemmodel_p.h4
-rw-r--r--src/corelib/itemmodels/qabstractproxymodel.cpp4
-rw-r--r--src/corelib/itemmodels/qabstractproxymodel.h5
-rw-r--r--src/corelib/itemmodels/qabstractproxymodel_p.h4
-rw-r--r--src/corelib/itemmodels/qidentityproxymodel.cpp13
-rw-r--r--src/corelib/itemmodels/qidentityproxymodel.h6
-rw-r--r--src/corelib/itemmodels/qitemselectionmodel.cpp4
-rw-r--r--src/corelib/itemmodels/qitemselectionmodel.h5
-rw-r--r--src/corelib/itemmodels/qitemselectionmodel_p.h4
-rw-r--r--src/corelib/itemmodels/qsortfilterproxymodel.cpp4
-rw-r--r--src/corelib/itemmodels/qsortfilterproxymodel.h5
-rw-r--r--src/corelib/itemmodels/qstringlistmodel.cpp4
-rw-r--r--src/corelib/itemmodels/qstringlistmodel.h5
-rw-r--r--src/corelib/json/json.pri17
-rw-r--r--src/corelib/json/qjson.cpp427
-rw-r--r--src/corelib/json/qjson_p.h760
-rw-r--r--src/corelib/json/qjsonarray.cpp1014
-rw-r--r--src/corelib/json/qjsonarray.h223
-rw-r--r--src/corelib/json/qjsondocument.cpp536
-rw-r--r--src/corelib/json/qjsondocument.h125
-rw-r--r--src/corelib/json/qjsonobject.cpp1016
-rw-r--r--src/corelib/json/qjsonobject.h218
-rw-r--r--src/corelib/json/qjsonparser.cpp752
-rw-r--r--src/corelib/json/qjsonparser_p.h118
-rw-r--r--src/corelib/json/qjsonvalue.cpp569
-rw-r--r--src/corelib/json/qjsonvalue.h186
-rw-r--r--src/corelib/json/qjsonwriter.cpp280
-rw-r--r--src/corelib/json/qjsonwriter_p.h73
-rw-r--r--src/corelib/kernel/kernel.pri2
-rw-r--r--src/corelib/kernel/qabstracteventdispatcher.cpp4
-rw-r--r--src/corelib/kernel/qabstracteventdispatcher.h5
-rw-r--r--src/corelib/kernel/qabstracteventdispatcher_p.h4
-rw-r--r--src/corelib/kernel/qbasictimer.cpp4
-rw-r--r--src/corelib/kernel/qbasictimer.h5
-rw-r--r--src/corelib/kernel/qcore_mac.cpp4
-rw-r--r--src/corelib/kernel/qcore_mac_objc.mm54
-rw-r--r--src/corelib/kernel/qcore_mac_p.h13
-rw-r--r--src/corelib/kernel/qcore_unix.cpp4
-rw-r--r--src/corelib/kernel/qcore_unix_p.h10
-rw-r--r--src/corelib/kernel/qcoreapplication.cpp312
-rw-r--r--src/corelib/kernel/qcoreapplication.h17
-rw-r--r--src/corelib/kernel/qcoreapplication_mac.cpp4
-rw-r--r--src/corelib/kernel/qcoreapplication_p.h27
-rw-r--r--src/corelib/kernel/qcoreapplication_win.cpp10
-rw-r--r--src/corelib/kernel/qcorecmdlineargs_p.h19
-rw-r--r--src/corelib/kernel/qcoreevent.cpp4
-rw-r--r--src/corelib/kernel/qcoreevent.h5
-rw-r--r--src/corelib/kernel/qcoreglobaldata.cpp4
-rw-r--r--src/corelib/kernel/qcoreglobaldata_p.h4
-rw-r--r--src/corelib/kernel/qcrashhandler.cpp4
-rw-r--r--src/corelib/kernel/qcrashhandler_p.h4
-rw-r--r--src/corelib/kernel/qeventdispatcher_glib.cpp4
-rw-r--r--src/corelib/kernel/qeventdispatcher_glib_p.h4
-rw-r--r--src/corelib/kernel/qeventdispatcher_unix.cpp4
-rw-r--r--src/corelib/kernel/qeventdispatcher_unix_p.h4
-rw-r--r--src/corelib/kernel/qeventdispatcher_win.cpp14
-rw-r--r--src/corelib/kernel/qeventdispatcher_win_p.h5
-rw-r--r--src/corelib/kernel/qeventloop.cpp118
-rw-r--r--src/corelib/kernel/qeventloop.h31
-rw-r--r--src/corelib/kernel/qeventloop_p.h83
-rw-r--r--src/corelib/kernel/qfunctions_nacl.cpp4
-rw-r--r--src/corelib/kernel/qfunctions_nacl.h5
-rw-r--r--src/corelib/kernel/qfunctions_p.h4
-rw-r--r--src/corelib/kernel/qfunctions_vxworks.cpp4
-rw-r--r--src/corelib/kernel/qfunctions_vxworks.h5
-rw-r--r--src/corelib/kernel/qfunctions_wince.cpp4
-rw-r--r--src/corelib/kernel/qfunctions_wince.h5
-rw-r--r--src/corelib/kernel/qmath.cpp4
-rw-r--r--src/corelib/kernel/qmath.h159
-rw-r--r--src/corelib/kernel/qmath.qdoc4
-rw-r--r--src/corelib/kernel/qmetaobject.cpp18
-rw-r--r--src/corelib/kernel/qmetaobject.h5
-rw-r--r--src/corelib/kernel/qmetaobject_moc_p.h4
-rw-r--r--src/corelib/kernel/qmetaobject_p.h6
-rw-r--r--src/corelib/kernel/qmetaobjectbuilder.cpp80
-rw-r--r--src/corelib/kernel/qmetaobjectbuilder_p.h4
-rw-r--r--src/corelib/kernel/qmetatype.cpp289
-rw-r--r--src/corelib/kernel/qmetatype.h118
-rw-r--r--src/corelib/kernel/qmetatype_p.h6
-rw-r--r--src/corelib/kernel/qmetatypeswitcher_p.h4
-rw-r--r--src/corelib/kernel/qmimedata.cpp4
-rw-r--r--src/corelib/kernel/qmimedata.h5
-rw-r--r--src/corelib/kernel/qobject.cpp18
-rw-r--r--src/corelib/kernel/qobject.h7
-rw-r--r--src/corelib/kernel/qobject_impl.h5
-rw-r--r--src/corelib/kernel/qobject_p.h4
-rw-r--r--src/corelib/kernel/qobjectcleanuphandler.cpp4
-rw-r--r--src/corelib/kernel/qobjectcleanuphandler.h5
-rw-r--r--src/corelib/kernel/qobjectdefs.h14
-rw-r--r--src/corelib/kernel/qpointer.cpp4
-rw-r--r--src/corelib/kernel/qpointer.h5
-rw-r--r--src/corelib/kernel/qsharedmemory.cpp21
-rw-r--r--src/corelib/kernel/qsharedmemory.h5
-rw-r--r--src/corelib/kernel/qsharedmemory_p.h23
-rw-r--r--src/corelib/kernel/qsharedmemory_unix.cpp4
-rw-r--r--src/corelib/kernel/qsharedmemory_win.cpp5
-rw-r--r--src/corelib/kernel/qsignalmapper.cpp4
-rw-r--r--src/corelib/kernel/qsignalmapper.h5
-rw-r--r--src/corelib/kernel/qsocketnotifier.cpp4
-rw-r--r--src/corelib/kernel/qsocketnotifier.h5
-rw-r--r--src/corelib/kernel/qsystemerror.cpp70
-rw-r--r--src/corelib/kernel/qsystemerror_p.h4
-rw-r--r--src/corelib/kernel/qsystemsemaphore.cpp16
-rw-r--r--src/corelib/kernel/qsystemsemaphore.h5
-rw-r--r--src/corelib/kernel/qsystemsemaphore_p.h19
-rw-r--r--src/corelib/kernel/qsystemsemaphore_unix.cpp4
-rw-r--r--src/corelib/kernel/qsystemsemaphore_win.cpp5
-rw-r--r--src/corelib/kernel/qtcore_eval.cpp6
-rw-r--r--src/corelib/kernel/qtimer.cpp4
-rw-r--r--src/corelib/kernel/qtimer.h5
-rw-r--r--src/corelib/kernel/qtimerinfo_unix.cpp4
-rw-r--r--src/corelib/kernel/qtimerinfo_unix_p.h4
-rw-r--r--src/corelib/kernel/qtranslator.cpp8
-rw-r--r--src/corelib/kernel/qtranslator.h5
-rw-r--r--src/corelib/kernel/qtranslator_p.h4
-rw-r--r--src/corelib/kernel/qvariant.cpp120
-rw-r--r--src/corelib/kernel/qvariant.h9
-rw-r--r--src/corelib/kernel/qvariant_p.h4
-rw-r--r--src/corelib/kernel/qwineventnotifier.cpp4
-rw-r--r--src/corelib/kernel/qwineventnotifier.h5
-rw-r--r--src/corelib/plugin/qelfparser_p.cpp4
-rw-r--r--src/corelib/plugin/qelfparser_p.h4
-rw-r--r--src/corelib/plugin/qfactoryinterface.h5
-rw-r--r--src/corelib/plugin/qfactoryloader.cpp4
-rw-r--r--src/corelib/plugin/qfactoryloader_p.h4
-rw-r--r--src/corelib/plugin/qlibrary.cpp10
-rw-r--r--src/corelib/plugin/qlibrary.h5
-rw-r--r--src/corelib/plugin/qlibrary_p.h10
-rw-r--r--src/corelib/plugin/qlibrary_unix.cpp26
-rw-r--r--src/corelib/plugin/qlibrary_win.cpp6
-rw-r--r--src/corelib/plugin/qplugin.h5
-rw-r--r--src/corelib/plugin/qplugin.qdoc4
-rw-r--r--src/corelib/plugin/qpluginloader.cpp4
-rw-r--r--src/corelib/plugin/qpluginloader.h5
-rw-r--r--src/corelib/plugin/qsystemlibrary.cpp4
-rw-r--r--src/corelib/plugin/qsystemlibrary_p.h8
-rw-r--r--src/corelib/plugin/quuid.cpp6
-rw-r--r--src/corelib/plugin/quuid.h5
-rw-r--r--src/corelib/statemachine/qabstractstate.cpp4
-rw-r--r--src/corelib/statemachine/qabstractstate.h5
-rw-r--r--src/corelib/statemachine/qabstractstate_p.h4
-rw-r--r--src/corelib/statemachine/qabstracttransition.cpp4
-rw-r--r--src/corelib/statemachine/qabstracttransition.h5
-rw-r--r--src/corelib/statemachine/qabstracttransition_p.h4
-rw-r--r--src/corelib/statemachine/qeventtransition.cpp4
-rw-r--r--src/corelib/statemachine/qeventtransition.h5
-rw-r--r--src/corelib/statemachine/qeventtransition_p.h4
-rw-r--r--src/corelib/statemachine/qfinalstate.cpp4
-rw-r--r--src/corelib/statemachine/qfinalstate.h5
-rw-r--r--src/corelib/statemachine/qhistorystate.cpp4
-rw-r--r--src/corelib/statemachine/qhistorystate.h5
-rw-r--r--src/corelib/statemachine/qhistorystate_p.h4
-rw-r--r--src/corelib/statemachine/qsignaleventgenerator_p.h4
-rw-r--r--src/corelib/statemachine/qsignaltransition.cpp4
-rw-r--r--src/corelib/statemachine/qsignaltransition.h5
-rw-r--r--src/corelib/statemachine/qsignaltransition_p.h4
-rw-r--r--src/corelib/statemachine/qstate.cpp4
-rw-r--r--src/corelib/statemachine/qstate.h5
-rw-r--r--src/corelib/statemachine/qstate_p.h4
-rw-r--r--src/corelib/statemachine/qstatemachine.cpp6
-rw-r--r--src/corelib/statemachine/qstatemachine.h5
-rw-r--r--src/corelib/statemachine/qstatemachine_p.h4
-rw-r--r--src/corelib/thread/qatomic.cpp4
-rw-r--r--src/corelib/thread/qatomic.h7
-rw-r--r--src/corelib/thread/qbasicatomic.h232
-rw-r--r--src/corelib/thread/qgenericatomic.h234
-rw-r--r--src/corelib/thread/qmutex.cpp4
-rw-r--r--src/corelib/thread/qmutex.h5
-rw-r--r--src/corelib/thread/qmutex_linux.cpp4
-rw-r--r--src/corelib/thread/qmutex_mac.cpp4
-rw-r--r--src/corelib/thread/qmutex_p.h8
-rw-r--r--src/corelib/thread/qmutex_unix.cpp4
-rw-r--r--src/corelib/thread/qmutex_win.cpp7
-rw-r--r--src/corelib/thread/qmutexpool.cpp4
-rw-r--r--src/corelib/thread/qmutexpool_p.h4
-rw-r--r--src/corelib/thread/qoldbasicatomic.h18
-rw-r--r--src/corelib/thread/qorderedmutexlocker_p.h4
-rw-r--r--src/corelib/thread/qreadwritelock.cpp4
-rw-r--r--src/corelib/thread/qreadwritelock.h5
-rw-r--r--src/corelib/thread/qreadwritelock_p.h4
-rw-r--r--src/corelib/thread/qrunnable.cpp107
-rw-r--r--src/corelib/thread/qrunnable.h72
-rw-r--r--src/corelib/thread/qsemaphore.cpp4
-rw-r--r--src/corelib/thread/qsemaphore.h5
-rw-r--r--src/corelib/thread/qthread.cpp22
-rw-r--r--src/corelib/thread/qthread.h5
-rw-r--r--src/corelib/thread/qthread_p.h15
-rw-r--r--src/corelib/thread/qthread_unix.cpp4
-rw-r--r--src/corelib/thread/qthread_win.cpp4
-rw-r--r--src/corelib/thread/qthreadpool.cpp651
-rw-r--r--src/corelib/thread/qthreadpool.h95
-rw-r--r--src/corelib/thread/qthreadpool_p.h107
-rw-r--r--src/corelib/thread/qthreadstorage.cpp16
-rw-r--r--src/corelib/thread/qthreadstorage.h5
-rw-r--r--src/corelib/thread/qwaitcondition.h5
-rw-r--r--src/corelib/thread/qwaitcondition.qdoc4
-rw-r--r--src/corelib/thread/qwaitcondition_unix.cpp4
-rw-r--r--src/corelib/thread/qwaitcondition_win.cpp6
-rw-r--r--src/corelib/thread/thread.pri9
-rw-r--r--src/corelib/tools/qalgorithms.h5
-rw-r--r--src/corelib/tools/qalgorithms.qdoc4
-rw-r--r--src/corelib/tools/qbitarray.cpp4
-rw-r--r--src/corelib/tools/qbitarray.h5
-rw-r--r--src/corelib/tools/qbytearray.cpp12
-rw-r--r--src/corelib/tools/qbytearray.h23
-rw-r--r--src/corelib/tools/qbytearraymatcher.cpp4
-rw-r--r--src/corelib/tools/qbytearraymatcher.h5
-rw-r--r--src/corelib/tools/qbytedata_p.h4
-rw-r--r--src/corelib/tools/qcache.h5
-rw-r--r--src/corelib/tools/qcache.qdoc4
-rw-r--r--src/corelib/tools/qchar.cpp4
-rw-r--r--src/corelib/tools/qchar.h5
-rw-r--r--src/corelib/tools/qcontainerfwd.h5
-rw-r--r--src/corelib/tools/qcontiguouscache.cpp4
-rw-r--r--src/corelib/tools/qcontiguouscache.h5
-rw-r--r--src/corelib/tools/qcryptographichash.cpp8
-rw-r--r--src/corelib/tools/qcryptographichash.h5
-rw-r--r--src/corelib/tools/qdatetime.cpp643
-rw-r--r--src/corelib/tools/qdatetime.h47
-rw-r--r--src/corelib/tools/qdatetime_p.h11
-rw-r--r--src/corelib/tools/qeasingcurve.cpp4
-rw-r--r--src/corelib/tools/qeasingcurve.h5
-rw-r--r--src/corelib/tools/qelapsedtimer.cpp16
-rw-r--r--src/corelib/tools/qelapsedtimer.h5
-rw-r--r--src/corelib/tools/qelapsedtimer_generic.cpp4
-rw-r--r--src/corelib/tools/qelapsedtimer_mac.cpp4
-rw-r--r--src/corelib/tools/qelapsedtimer_symbian.cpp131
-rw-r--r--src/corelib/tools/qelapsedtimer_unix.cpp4
-rw-r--r--src/corelib/tools/qelapsedtimer_win.cpp12
-rw-r--r--src/corelib/tools/qfreelist.cpp4
-rw-r--r--src/corelib/tools/qfreelist_p.h5
-rw-r--r--src/corelib/tools/qharfbuzz.cpp4
-rw-r--r--src/corelib/tools/qharfbuzz_p.h4
-rw-r--r--src/corelib/tools/qhash.cpp4
-rw-r--r--src/corelib/tools/qhash.h5
-rw-r--r--src/corelib/tools/qiterator.h5
-rw-r--r--src/corelib/tools/qiterator.qdoc4
-rw-r--r--src/corelib/tools/qline.cpp4
-rw-r--r--src/corelib/tools/qline.h5
-rw-r--r--src/corelib/tools/qlinkedlist.cpp4
-rw-r--r--src/corelib/tools/qlinkedlist.h5
-rw-r--r--src/corelib/tools/qlist.cpp6
-rw-r--r--src/corelib/tools/qlist.h13
-rw-r--r--src/corelib/tools/qlocale.cpp84
-rw-r--r--src/corelib/tools/qlocale.h86
-rw-r--r--src/corelib/tools/qlocale.qdoc5
-rw-r--r--src/corelib/tools/qlocale_data_p.h4
-rw-r--r--src/corelib/tools/qlocale_icu.cpp4
-rw-r--r--src/corelib/tools/qlocale_mac.mm4
-rw-r--r--src/corelib/tools/qlocale_p.h90
-rw-r--r--src/corelib/tools/qlocale_symbian.cpp956
-rw-r--r--src/corelib/tools/qlocale_tools.cpp11
-rw-r--r--src/corelib/tools/qlocale_tools_p.h4
-rw-r--r--src/corelib/tools/qlocale_unix.cpp4
-rw-r--r--src/corelib/tools/qlocale_win.cpp8
-rw-r--r--src/corelib/tools/qmap.cpp4
-rw-r--r--src/corelib/tools/qmap.h5
-rw-r--r--src/corelib/tools/qmargins.cpp4
-rw-r--r--src/corelib/tools/qmargins.h5
-rw-r--r--src/corelib/tools/qpair.h5
-rw-r--r--src/corelib/tools/qpair.qdoc4
-rw-r--r--src/corelib/tools/qpodlist_p.h5
-rw-r--r--src/corelib/tools/qpoint.cpp4
-rw-r--r--src/corelib/tools/qpoint.h5
-rw-r--r--src/corelib/tools/qqueue.cpp4
-rw-r--r--src/corelib/tools/qqueue.h5
-rw-r--r--src/corelib/tools/qrect.cpp4
-rw-r--r--src/corelib/tools/qrect.h5
-rw-r--r--src/corelib/tools/qrefcount.cpp4
-rw-r--r--src/corelib/tools/qrefcount.h5
-rw-r--r--src/corelib/tools/qregexp.cpp19
-rw-r--r--src/corelib/tools/qregexp.h8
-rw-r--r--src/corelib/tools/qringbuffer_p.h4
-rw-r--r--src/corelib/tools/qscopedpointer.cpp4
-rw-r--r--src/corelib/tools/qscopedpointer.h9
-rw-r--r--src/corelib/tools/qscopedpointer_p.h5
-rw-r--r--src/corelib/tools/qscopedvaluerollback.cpp4
-rw-r--r--src/corelib/tools/qscopedvaluerollback.h5
-rw-r--r--src/corelib/tools/qset.h5
-rw-r--r--src/corelib/tools/qset.qdoc4
-rw-r--r--src/corelib/tools/qshareddata.cpp4
-rw-r--r--src/corelib/tools/qshareddata.h5
-rw-r--r--src/corelib/tools/qsharedpointer.cpp4
-rw-r--r--src/corelib/tools/qsharedpointer.h5
-rw-r--r--src/corelib/tools/qsharedpointer_impl.h18
-rw-r--r--src/corelib/tools/qsimd.cpp21
-rw-r--r--src/corelib/tools/qsimd_p.h8
-rw-r--r--src/corelib/tools/qsize.cpp4
-rw-r--r--src/corelib/tools/qsize.h5
-rw-r--r--src/corelib/tools/qstack.cpp4
-rw-r--r--src/corelib/tools/qstack.h5
-rw-r--r--src/corelib/tools/qstring.cpp227
-rw-r--r--src/corelib/tools/qstring.h72
-rw-r--r--src/corelib/tools/qstringbuilder.cpp4
-rw-r--r--src/corelib/tools/qstringbuilder.h5
-rw-r--r--src/corelib/tools/qstringlist.cpp14
-rw-r--r--src/corelib/tools/qstringlist.h13
-rw-r--r--src/corelib/tools/qstringmatcher.cpp4
-rw-r--r--src/corelib/tools/qstringmatcher.h5
-rw-r--r--src/corelib/tools/qtextboundaryfinder.cpp4
-rw-r--r--src/corelib/tools/qtextboundaryfinder.h5
-rw-r--r--src/corelib/tools/qtimeline.cpp4
-rw-r--r--src/corelib/tools/qtimeline.h5
-rw-r--r--src/corelib/tools/qtools_p.h4
-rw-r--r--src/corelib/tools/qunicodetables.cpp4
-rw-r--r--src/corelib/tools/qunicodetables_p.h4
-rw-r--r--src/corelib/tools/qvarlengtharray.h5
-rw-r--r--src/corelib/tools/qvarlengtharray.qdoc4
-rw-r--r--src/corelib/tools/qvector.cpp4
-rw-r--r--src/corelib/tools/qvector.h5
-rw-r--r--src/corelib/tools/qvsnprintf.cpp4
-rw-r--r--src/corelib/tools/tools.pri3
-rwxr-xr-xsrc/corelib/xml/make-parser.sh4
-rw-r--r--src/corelib/xml/qxmlstream.cpp4
-rw-r--r--src/corelib/xml/qxmlstream.g4
-rw-r--r--src/corelib/xml/qxmlstream.h5
-rw-r--r--src/corelib/xml/qxmlstream_p.h4
-rw-r--r--src/corelib/xml/qxmlutils.cpp4
-rw-r--r--src/corelib/xml/qxmlutils_p.h4
-rw-r--r--src/dbus/dbus.pro6
-rw-r--r--src/dbus/qdbus_symbols.cpp4
-rw-r--r--src/dbus/qdbus_symbols_p.h4
-rw-r--r--src/dbus/qdbusabstractadaptor.cpp4
-rw-r--r--src/dbus/qdbusabstractadaptor.h5
-rw-r--r--src/dbus/qdbusabstractadaptor_p.h4
-rw-r--r--src/dbus/qdbusabstractinterface.cpp8
-rw-r--r--src/dbus/qdbusabstractinterface.h5
-rw-r--r--src/dbus/qdbusabstractinterface_p.h4
-rw-r--r--src/dbus/qdbusargument.cpp6
-rw-r--r--src/dbus/qdbusargument.h5
-rw-r--r--src/dbus/qdbusargument_p.h4
-rw-r--r--src/dbus/qdbusconnection.cpp4
-rw-r--r--src/dbus/qdbusconnection.h5
-rw-r--r--src/dbus/qdbusconnection_p.h5
-rw-r--r--src/dbus/qdbusconnectioninterface.cpp4
-rw-r--r--src/dbus/qdbusconnectioninterface.h5
-rw-r--r--src/dbus/qdbusconnectionmanager_p.h4
-rw-r--r--src/dbus/qdbuscontext.cpp4
-rw-r--r--src/dbus/qdbuscontext.h5
-rw-r--r--src/dbus/qdbuscontext_p.h4
-rw-r--r--src/dbus/qdbusdemarshaller.cpp4
-rw-r--r--src/dbus/qdbuserror.cpp4
-rw-r--r--src/dbus/qdbuserror.h5
-rw-r--r--src/dbus/qdbusextratypes.cpp4
-rw-r--r--src/dbus/qdbusextratypes.h5
-rw-r--r--src/dbus/qdbusintegrator.cpp6
-rw-r--r--src/dbus/qdbusintegrator_p.h4
-rw-r--r--src/dbus/qdbusinterface.cpp4
-rw-r--r--src/dbus/qdbusinterface.h5
-rw-r--r--src/dbus/qdbusinterface_p.h4
-rw-r--r--src/dbus/qdbusinternalfilters.cpp24
-rw-r--r--src/dbus/qdbusintrospection.cpp21
-rw-r--r--src/dbus/qdbusintrospection_p.h16
-rw-r--r--src/dbus/qdbusmacros.h5
-rw-r--r--src/dbus/qdbusmarshaller.cpp4
-rw-r--r--src/dbus/qdbusmessage.cpp4
-rw-r--r--src/dbus/qdbusmessage.h5
-rw-r--r--src/dbus/qdbusmessage_p.h4
-rw-r--r--src/dbus/qdbusmetaobject.cpp158
-rw-r--r--src/dbus/qdbusmetaobject_p.h4
-rw-r--r--src/dbus/qdbusmetatype.cpp4
-rw-r--r--src/dbus/qdbusmetatype.h5
-rw-r--r--src/dbus/qdbusmetatype_p.h4
-rw-r--r--src/dbus/qdbusmisc.cpp16
-rw-r--r--src/dbus/qdbuspendingcall.cpp4
-rw-r--r--src/dbus/qdbuspendingcall.h5
-rw-r--r--src/dbus/qdbuspendingcall_p.h4
-rw-r--r--src/dbus/qdbuspendingreply.cpp4
-rw-r--r--src/dbus/qdbuspendingreply.h5
-rw-r--r--src/dbus/qdbusreply.cpp4
-rw-r--r--src/dbus/qdbusreply.h5
-rw-r--r--src/dbus/qdbusserver.cpp29
-rw-r--r--src/dbus/qdbusserver.h8
-rw-r--r--src/dbus/qdbusservicewatcher.cpp4
-rw-r--r--src/dbus/qdbusservicewatcher.h5
-rw-r--r--src/dbus/qdbusthreaddebug_p.h4
-rw-r--r--src/dbus/qdbusunixfiledescriptor.cpp4
-rw-r--r--src/dbus/qdbusunixfiledescriptor.h5
-rw-r--r--src/dbus/qdbusutil.cpp4
-rw-r--r--src/dbus/qdbusutil_p.h4
-rw-r--r--src/dbus/qdbusvirtualobject.cpp4
-rw-r--r--src/dbus/qdbusvirtualobject.h5
-rw-r--r--src/dbus/qdbusxmlgenerator.cpp8
-rw-r--r--src/dbus/qdbusxmlparser.cpp518
-rw-r--r--src/dbus/qdbusxmlparser_p.h15
-rw-r--r--src/gui/accessible/qaccessible.cpp74
-rw-r--r--src/gui/accessible/qaccessible.h41
-rw-r--r--src/gui/accessible/qaccessible2.cpp4
-rw-r--r--src/gui/accessible/qaccessible2.h5
-rw-r--r--src/gui/accessible/qaccessiblebridge.cpp4
-rw-r--r--src/gui/accessible/qaccessiblebridge.h10
-rw-r--r--src/gui/accessible/qaccessibleobject.cpp23
-rw-r--r--src/gui/accessible/qaccessibleobject.h6
-rw-r--r--src/gui/accessible/qaccessibleplugin.cpp4
-rw-r--r--src/gui/accessible/qaccessibleplugin.h7
-rw-r--r--src/gui/accessible/qplatformaccessibility_qpa.cpp28
-rw-r--r--src/gui/accessible/qplatformaccessibility_qpa.h7
-rw-r--r--src/gui/egl/egl.pri4
-rw-r--r--src/gui/egl/qegl.cpp4
-rw-r--r--src/gui/egl/qegl_p.h7
-rw-r--r--src/gui/egl/qegl_qpa.cpp4
-rw-r--r--src/gui/egl/qegl_stub.cpp298
-rw-r--r--src/gui/egl/qeglcontext_p.h4
-rw-r--r--src/gui/egl/qeglproperties.cpp4
-rw-r--r--src/gui/egl/qeglproperties_p.h4
-rw-r--r--src/gui/egl/qeglproperties_stub.cpp141
-rw-r--r--src/gui/image/image.pri9
-rw-r--r--src/gui/image/qbitmap.cpp4
-rw-r--r--src/gui/image/qbitmap.h5
-rw-r--r--src/gui/image/qbmphandler.cpp4
-rw-r--r--src/gui/image/qbmphandler_p.h4
-rw-r--r--src/gui/image/qgifhandler.cpp4
-rw-r--r--src/gui/image/qgifhandler_p.h4
-rw-r--r--src/gui/image/qimage.cpp73
-rw-r--r--src/gui/image/qimage.h27
-rw-r--r--src/gui/image/qimage_neon.cpp4
-rw-r--r--src/gui/image/qimage_p.h9
-rw-r--r--src/gui/image/qimage_sse2.cpp4
-rw-r--r--src/gui/image/qimage_ssse3.cpp4
-rw-r--r--src/gui/image/qimageiohandler.cpp4
-rw-r--r--src/gui/image/qimageiohandler.h7
-rw-r--r--src/gui/image/qimagepixmapcleanuphooks.cpp4
-rw-r--r--src/gui/image/qimagepixmapcleanuphooks_p.h4
-rw-r--r--src/gui/image/qimagereader.cpp51
-rw-r--r--src/gui/image/qimagereader.h5
-rw-r--r--src/gui/image/qimagewriter.cpp28
-rw-r--r--src/gui/image/qimagewriter.h5
-rw-r--r--src/gui/image/qjpeghandler.cpp4
-rw-r--r--src/gui/image/qjpeghandler_p.h4
-rw-r--r--src/gui/image/qmnghandler.cpp497
-rw-r--r--src/gui/image/qmnghandler.pri10
-rw-r--r--src/gui/image/qmnghandler_p.h83
-rw-r--r--src/gui/image/qmovie.cpp4
-rw-r--r--src/gui/image/qmovie.h5
-rw-r--r--src/gui/image/qnativeimage.cpp4
-rw-r--r--src/gui/image/qnativeimage_p.h4
-rw-r--r--src/gui/image/qpaintengine_pic.cpp4
-rw-r--r--src/gui/image/qpaintengine_pic_p.h4
-rw-r--r--src/gui/image/qpicture.cpp20
-rw-r--r--src/gui/image/qpicture.h5
-rw-r--r--src/gui/image/qpicture_p.h4
-rw-r--r--src/gui/image/qpictureformatplugin.cpp4
-rw-r--r--src/gui/image/qpictureformatplugin.h7
-rw-r--r--src/gui/image/qpixmap.cpp13
-rw-r--r--src/gui/image/qpixmap.h7
-rw-r--r--src/gui/image/qpixmap_blitter.cpp4
-rw-r--r--src/gui/image/qpixmap_blitter_p.h4
-rw-r--r--src/gui/image/qpixmap_qpa.cpp4
-rw-r--r--src/gui/image/qpixmap_raster.cpp4
-rw-r--r--src/gui/image/qpixmap_raster_p.h4
-rw-r--r--src/gui/image/qpixmap_win.cpp6
-rw-r--r--src/gui/image/qpixmapcache.cpp4
-rw-r--r--src/gui/image/qpixmapcache.h5
-rw-r--r--src/gui/image/qpixmapcache_p.h4
-rw-r--r--src/gui/image/qplatformpixmap.cpp6
-rw-r--r--src/gui/image/qplatformpixmap_qpa.h5
-rw-r--r--src/gui/image/qpnghandler.cpp4
-rw-r--r--src/gui/image/qpnghandler_p.h4
-rw-r--r--src/gui/image/qppmhandler.cpp4
-rw-r--r--src/gui/image/qppmhandler_p.h4
-rw-r--r--src/gui/image/qtiffhandler.cpp668
-rw-r--r--src/gui/image/qtiffhandler.pri10
-rw-r--r--src/gui/image/qtiffhandler_p.h78
-rw-r--r--src/gui/image/qvolatileimage.cpp4
-rw-r--r--src/gui/image/qvolatileimage_p.h4
-rw-r--r--src/gui/image/qvolatileimagedata.cpp4
-rw-r--r--src/gui/image/qvolatileimagedata_p.h4
-rw-r--r--src/gui/image/qvolatileimagedata_symbian.cpp474
-rw-r--r--src/gui/image/qxbmhandler.cpp4
-rw-r--r--src/gui/image/qxbmhandler_p.h4
-rw-r--r--src/gui/image/qxpmhandler.cpp4
-rw-r--r--src/gui/image/qxpmhandler_p.h4
-rw-r--r--src/gui/kernel/kernel.pri28
-rw-r--r--src/gui/kernel/qclipboard.cpp4
-rw-r--r--src/gui/kernel/qclipboard.h5
-rw-r--r--src/gui/kernel/qclipboard_qpa.cpp4
-rw-r--r--src/gui/kernel/qcursor.cpp4
-rw-r--r--src/gui/kernel/qcursor.h5
-rw-r--r--src/gui/kernel/qcursor_p.h4
-rw-r--r--src/gui/kernel/qcursor_qpa.cpp4
-rw-r--r--src/gui/kernel/qdnd.cpp4
-rw-r--r--src/gui/kernel/qdnd_p.h4
-rw-r--r--src/gui/kernel/qdrag.cpp4
-rw-r--r--src/gui/kernel/qdrag.h5
-rw-r--r--src/gui/kernel/qevent.cpp22
-rw-r--r--src/gui/kernel/qevent.h45
-rw-r--r--src/gui/kernel/qevent_p.h4
-rw-r--r--src/gui/kernel/qgenericplugin_qpa.cpp4
-rw-r--r--src/gui/kernel/qgenericplugin_qpa.h7
-rw-r--r--src/gui/kernel/qgenericpluginfactory_qpa.cpp4
-rw-r--r--src/gui/kernel/qgenericpluginfactory_qpa.h5
-rw-r--r--src/gui/kernel/qguiapplication.cpp176
-rw-r--r--src/gui/kernel/qguiapplication.h16
-rw-r--r--src/gui/kernel/qguiapplication_p.h14
-rw-r--r--src/gui/kernel/qguivariant.cpp38
-rw-r--r--src/gui/kernel/qinputmethod.cpp376
-rw-r--r--src/gui/kernel/qinputmethod.h134
-rw-r--r--src/gui/kernel/qinputmethod_p.h83
-rw-r--r--src/gui/kernel/qinputpanel.cpp347
-rw-r--r--src/gui/kernel/qinputpanel.h85
-rw-r--r--src/gui/kernel/qinputpanel_p.h33
-rw-r--r--src/gui/kernel/qkeymapper.cpp4
-rw-r--r--src/gui/kernel/qkeymapper_p.h4
-rw-r--r--src/gui/kernel/qkeymapper_qpa.cpp4
-rw-r--r--src/gui/kernel/qkeysequence.cpp208
-rw-r--r--src/gui/kernel/qkeysequence.h14
-rw-r--r--src/gui/kernel/qkeysequence_p.h4
-rw-r--r--src/gui/kernel/qopenglcontext.cpp88
-rw-r--r--src/gui/kernel/qopenglcontext.h19
-rw-r--r--src/gui/kernel/qopenglcontext_p.h28
-rw-r--r--src/gui/kernel/qpalette.cpp4
-rw-r--r--src/gui/kernel/qpalette.h5
-rw-r--r--src/gui/kernel/qplatformclipboard_qpa.cpp4
-rw-r--r--src/gui/kernel/qplatformclipboard_qpa.h5
-rw-r--r--src/gui/kernel/qplatformcursor_qpa.cpp4
-rw-r--r--src/gui/kernel/qplatformcursor_qpa.h5
-rw-r--r--src/gui/kernel/qplatformdialoghelper_qpa.cpp556
-rw-r--r--src/gui/kernel/qplatformdialoghelper_qpa.h314
-rw-r--r--src/gui/kernel/qplatformdrag_qpa.h5
-rw-r--r--src/gui/kernel/qplatforminputcontext_qpa.cpp32
-rw-r--r--src/gui/kernel/qplatforminputcontext_qpa.h5
-rw-r--r--src/gui/kernel/qplatformintegration_qpa.cpp36
-rw-r--r--src/gui/kernel/qplatformintegration_qpa.h13
-rw-r--r--src/gui/kernel/qplatformintegrationfactory_qpa.cpp4
-rw-r--r--src/gui/kernel/qplatformintegrationfactory_qpa_p.h5
-rw-r--r--src/gui/kernel/qplatformintegrationplugin_qpa.cpp4
-rw-r--r--src/gui/kernel/qplatformintegrationplugin_qpa.h5
-rw-r--r--src/gui/kernel/qplatformnativeinterface_qpa.cpp51
-rw-r--r--src/gui/kernel/qplatformnativeinterface_qpa.h8
-rw-r--r--src/gui/kernel/qplatformopenglcontext_qpa.cpp16
-rw-r--r--src/gui/kernel/qplatformopenglcontext_qpa.h8
-rw-r--r--src/gui/kernel/qplatformscreen_qpa.cpp33
-rw-r--r--src/gui/kernel/qplatformscreen_qpa.h8
-rw-r--r--src/gui/kernel/qplatformscreen_qpa_p.h4
-rw-r--r--src/gui/kernel/qplatformsharedgraphicscache_qpa.cpp212
-rw-r--r--src/gui/kernel/qplatformsharedgraphicscache_qpa.h97
-rw-r--r--src/gui/kernel/qplatformsurface_qpa.cpp8
-rw-r--r--src/gui/kernel/qplatformsurface_qpa.h11
-rw-r--r--src/gui/kernel/qplatformtheme_qpa.cpp12
-rw-r--r--src/gui/kernel/qplatformtheme_qpa.h16
-rw-r--r--src/gui/kernel/qplatformthemefactory_qpa.cpp4
-rw-r--r--src/gui/kernel/qplatformthemefactory_qpa_p.h5
-rw-r--r--src/gui/kernel/qplatformthemeplugin_qpa.cpp4
-rw-r--r--src/gui/kernel/qplatformthemeplugin_qpa.h5
-rw-r--r--src/gui/kernel/qplatformwindow_qpa.cpp35
-rw-r--r--src/gui/kernel/qplatformwindow_qpa.h8
-rw-r--r--src/gui/kernel/qscreen.cpp117
-rw-r--r--src/gui/kernel/qscreen.h23
-rw-r--r--src/gui/kernel/qscreen_p.h13
-rw-r--r--src/gui/kernel/qsessionmanager.h5
-rw-r--r--src/gui/kernel/qsessionmanager_qpa.cpp4
-rw-r--r--src/gui/kernel/qshortcutmap.cpp4
-rw-r--r--src/gui/kernel/qshortcutmap_p.h4
-rw-r--r--src/gui/kernel/qstylehints.cpp4
-rw-r--r--src/gui/kernel/qstylehints.h5
-rw-r--r--src/gui/kernel/qsurface.cpp51
-rw-r--r--src/gui/kernel/qsurface.h30
-rw-r--r--src/gui/kernel/qsurfaceformat.cpp4
-rw-r--r--src/gui/kernel/qsurfaceformat.h5
-rw-r--r--src/gui/kernel/qt_gui_pch.h4
-rw-r--r--src/gui/kernel/qtouchdevice.cpp14
-rw-r--r--src/gui/kernel/qtouchdevice.h5
-rw-r--r--src/gui/kernel/qtouchdevice_p.h5
-rw-r--r--src/gui/kernel/qwindow.cpp173
-rw-r--r--src/gui/kernel/qwindow.h21
-rw-r--r--src/gui/kernel/qwindow_p.h11
-rw-r--r--src/gui/kernel/qwindowdefs.h5
-rw-r--r--src/gui/kernel/qwindowdefs_win.h5
-rw-r--r--src/gui/kernel/qwindowsysteminterface_qpa.cpp28
-rw-r--r--src/gui/kernel/qwindowsysteminterface_qpa.h7
-rw-r--r--src/gui/kernel/qwindowsysteminterface_qpa_p.h5
-rw-r--r--src/gui/math3d/qgenericmatrix.cpp4
-rw-r--r--src/gui/math3d/qgenericmatrix.h5
-rw-r--r--src/gui/math3d/qmatrix4x4.cpp4
-rw-r--r--src/gui/math3d/qmatrix4x4.h7
-rw-r--r--src/gui/math3d/qquaternion.cpp4
-rw-r--r--src/gui/math3d/qquaternion.h5
-rw-r--r--src/gui/math3d/qvector2d.cpp4
-rw-r--r--src/gui/math3d/qvector2d.h5
-rw-r--r--src/gui/math3d/qvector3d.cpp4
-rw-r--r--src/gui/math3d/qvector3d.h5
-rw-r--r--src/gui/math3d/qvector4d.cpp4
-rw-r--r--src/gui/math3d/qvector4d.h5
-rw-r--r--src/gui/opengl/opengl.pri78
-rw-r--r--src/gui/opengl/qopengl.cpp4
-rw-r--r--src/gui/opengl/qopengl.h9
-rw-r--r--src/gui/opengl/qopengl2pexvertexarray.cpp4
-rw-r--r--src/gui/opengl/qopengl2pexvertexarray_p.h4
-rw-r--r--src/gui/opengl/qopengl_p.h4
-rw-r--r--src/gui/opengl/qopenglbuffer.cpp4
-rw-r--r--src/gui/opengl/qopenglbuffer.h9
-rw-r--r--src/gui/opengl/qopenglcustomshaderstage.cpp4
-rw-r--r--src/gui/opengl/qopenglcustomshaderstage_p.h5
-rw-r--r--src/gui/opengl/qopenglengineshadermanager.cpp4
-rw-r--r--src/gui/opengl/qopenglengineshadermanager_p.h5
-rw-r--r--src/gui/opengl/qopenglengineshadersource_p.h5
-rw-r--r--src/gui/opengl/qopenglextensions_p.h5
-rw-r--r--src/gui/opengl/qopenglframebufferobject.cpp46
-rw-r--r--src/gui/opengl/qopenglframebufferobject.h10
-rw-r--r--src/gui/opengl/qopenglframebufferobject_p.h4
-rw-r--r--src/gui/opengl/qopenglfunctions.cpp7
-rw-r--r--src/gui/opengl/qopenglfunctions.h11
-rw-r--r--src/gui/opengl/qopenglgradientcache.cpp4
-rw-r--r--src/gui/opengl/qopenglgradientcache_p.h4
-rw-r--r--src/gui/opengl/qopenglpaintdevice.cpp4
-rw-r--r--src/gui/opengl/qopenglpaintdevice.h9
-rw-r--r--src/gui/opengl/qopenglpaintengine.cpp6
-rw-r--r--src/gui/opengl/qopenglpaintengine_p.h4
-rw-r--r--src/gui/opengl/qopenglshadercache_meego_p.h5
-rw-r--r--src/gui/opengl/qopenglshadercache_p.h5
-rw-r--r--src/gui/opengl/qopenglshaderprogram.cpp4
-rw-r--r--src/gui/opengl/qopenglshaderprogram.h9
-rw-r--r--src/gui/opengl/qopengltexturecache.cpp4
-rw-r--r--src/gui/opengl/qopengltexturecache_p.h4
-rw-r--r--src/gui/opengl/qopengltextureglyphcache.cpp4
-rw-r--r--src/gui/opengl/qopengltextureglyphcache_p.h4
-rw-r--r--src/gui/opengl/qopengltriangulatingstroker.cpp4
-rw-r--r--src/gui/opengl/qopengltriangulatingstroker_p.h6
-rw-r--r--src/gui/opengl/qrbtree_p.h4
-rw-r--r--src/gui/opengl/qtriangulator.cpp4
-rw-r--r--src/gui/opengl/qtriangulator_p.h4
-rw-r--r--src/gui/painting/painting.pri13
-rw-r--r--src/gui/painting/qbackingstore.cpp4
-rw-r--r--src/gui/painting/qbackingstore.h5
-rw-r--r--src/gui/painting/qbezier.cpp4
-rw-r--r--src/gui/painting/qbezier_p.h4
-rw-r--r--src/gui/painting/qblendfunctions.cpp4
-rw-r--r--src/gui/painting/qblendfunctions_p.h4
-rw-r--r--src/gui/painting/qblittable.cpp4
-rw-r--r--src/gui/painting/qblittable_p.h4
-rw-r--r--src/gui/painting/qbrush.cpp4
-rw-r--r--src/gui/painting/qbrush.h5
-rw-r--r--src/gui/painting/qcolor.cpp4
-rw-r--r--src/gui/painting/qcolor.h5
-rw-r--r--src/gui/painting/qcolor_p.cpp4
-rw-r--r--src/gui/painting/qcolor_p.h4
-rw-r--r--src/gui/painting/qcosmeticstroker.cpp4
-rw-r--r--src/gui/painting/qcosmeticstroker_p.h5
-rw-r--r--src/gui/painting/qcssutil.cpp4
-rw-r--r--src/gui/painting/qcssutil_p.h4
-rw-r--r--src/gui/painting/qdatabuffer_p.h4
-rw-r--r--src/gui/painting/qdrawhelper.cpp4
-rw-r--r--src/gui/painting/qdrawhelper_arm_simd.cpp115
-rw-r--r--src/gui/painting/qdrawhelper_arm_simd_p.h76
-rw-r--r--src/gui/painting/qdrawhelper_iwmmxt.cpp4
-rw-r--r--src/gui/painting/qdrawhelper_mmx.cpp4
-rw-r--r--src/gui/painting/qdrawhelper_mmx3dnow.cpp4
-rw-r--r--src/gui/painting/qdrawhelper_mmx_p.h4
-rw-r--r--src/gui/painting/qdrawhelper_neon.cpp4
-rw-r--r--src/gui/painting/qdrawhelper_neon_asm.S4
-rw-r--r--src/gui/painting/qdrawhelper_neon_p.h4
-rw-r--r--src/gui/painting/qdrawhelper_p.h4
-rw-r--r--src/gui/painting/qdrawhelper_sse.cpp4
-rw-r--r--src/gui/painting/qdrawhelper_sse2.cpp4
-rw-r--r--src/gui/painting/qdrawhelper_sse3dnow.cpp4
-rw-r--r--src/gui/painting/qdrawhelper_sse_p.h4
-rw-r--r--src/gui/painting/qdrawhelper_ssse3.cpp4
-rw-r--r--src/gui/painting/qdrawhelper_x86_p.h4
-rw-r--r--src/gui/painting/qdrawingprimitive_sse2_p.h4
-rw-r--r--src/gui/painting/qemulationpaintengine.cpp4
-rw-r--r--src/gui/painting/qemulationpaintengine_p.h5
-rw-r--r--src/gui/painting/qfixed_p.h4
-rw-r--r--src/gui/painting/qgrayraster.c4
-rw-r--r--src/gui/painting/qgrayraster_p.h4
-rw-r--r--src/gui/painting/qimagescale.cpp4
-rw-r--r--src/gui/painting/qimagescale_p.h4
-rw-r--r--src/gui/painting/qmath_p.h4
-rw-r--r--src/gui/painting/qmatrix.cpp13
-rw-r--r--src/gui/painting/qmatrix.h8
-rw-r--r--src/gui/painting/qmemrotate.cpp4
-rw-r--r--src/gui/painting/qmemrotate_p.h4
-rw-r--r--src/gui/painting/qoutlinemapper.cpp4
-rw-r--r--src/gui/painting/qoutlinemapper_p.h4
-rw-r--r--src/gui/painting/qpagedpaintdevice.cpp4
-rw-r--r--src/gui/painting/qpagedpaintdevice.h5
-rw-r--r--src/gui/painting/qpagedpaintdevice_p.h4
-rw-r--r--src/gui/painting/qpaintbuffer.cpp4
-rw-r--r--src/gui/painting/qpaintbuffer_p.h4
-rw-r--r--src/gui/painting/qpaintdevice.cpp4
-rw-r--r--src/gui/painting/qpaintdevice.h5
-rw-r--r--src/gui/painting/qpaintdevice.qdoc4
-rw-r--r--src/gui/painting/qpaintdevice_qpa.cpp4
-rw-r--r--src/gui/painting/qpaintengine.cpp4
-rw-r--r--src/gui/painting/qpaintengine.h5
-rw-r--r--src/gui/painting/qpaintengine_blitter.cpp4
-rw-r--r--src/gui/painting/qpaintengine_blitter_p.h4
-rw-r--r--src/gui/painting/qpaintengine_p.h4
-rw-r--r--src/gui/painting/qpaintengine_raster.cpp20
-rw-r--r--src/gui/painting/qpaintengine_raster_p.h4
-rw-r--r--src/gui/painting/qpaintengineex.cpp4
-rw-r--r--src/gui/painting/qpaintengineex_p.h5
-rw-r--r--src/gui/painting/qpainter.cpp4
-rw-r--r--src/gui/painting/qpainter.h5
-rw-r--r--src/gui/painting/qpainter_p.h4
-rw-r--r--src/gui/painting/qpainterpath.cpp4
-rw-r--r--src/gui/painting/qpainterpath.h5
-rw-r--r--src/gui/painting/qpainterpath_p.h4
-rw-r--r--src/gui/painting/qpathclipper.cpp4
-rw-r--r--src/gui/painting/qpathclipper_p.h5
-rw-r--r--src/gui/painting/qpdf.cpp4
-rw-r--r--src/gui/painting/qpdf_p.h4
-rw-r--r--src/gui/painting/qpdfwriter.cpp4
-rw-r--r--src/gui/painting/qpdfwriter.h5
-rw-r--r--src/gui/painting/qpen.cpp4
-rw-r--r--src/gui/painting/qpen.h5
-rw-r--r--src/gui/painting/qpen_p.h4
-rw-r--r--src/gui/painting/qplatformbackingstore_qpa.cpp4
-rw-r--r--src/gui/painting/qplatformbackingstore_qpa.h5
-rw-r--r--src/gui/painting/qpolygon.cpp4
-rw-r--r--src/gui/painting/qpolygon.h5
-rw-r--r--src/gui/painting/qpolygonclipper_p.h4
-rw-r--r--src/gui/painting/qrasterdefs_p.h4
-rw-r--r--src/gui/painting/qrasterizer.cpp4
-rw-r--r--src/gui/painting/qrasterizer_p.h4
-rw-r--r--src/gui/painting/qregion.cpp21
-rw-r--r--src/gui/painting/qregion.h37
-rw-r--r--src/gui/painting/qrgb.h5
-rw-r--r--src/gui/painting/qstroker.cpp4
-rw-r--r--src/gui/painting/qstroker_p.h4
-rw-r--r--src/gui/painting/qtextureglyphcache.cpp16
-rw-r--r--src/gui/painting/qtextureglyphcache_p.h6
-rw-r--r--src/gui/painting/qtransform.cpp4
-rw-r--r--src/gui/painting/qtransform.h5
-rw-r--r--src/gui/painting/qvectorpath_p.h5
-rw-r--r--src/gui/text/qabstractfontengine_p.h4
-rw-r--r--src/gui/text/qabstracttextdocumentlayout.cpp4
-rw-r--r--src/gui/text/qabstracttextdocumentlayout.h8
-rw-r--r--src/gui/text/qabstracttextdocumentlayout_p.h4
-rw-r--r--src/gui/text/qcssparser.cpp4
-rw-r--r--src/gui/text/qcssparser_p.h4
-rw-r--r--src/gui/text/qcssscanner.cpp4
-rw-r--r--src/gui/text/qfont.cpp6
-rw-r--r--src/gui/text/qfont.h5
-rw-r--r--src/gui/text/qfont_p.h4
-rw-r--r--src/gui/text/qfont_qpa.cpp4
-rw-r--r--src/gui/text/qfontdatabase.cpp17
-rw-r--r--src/gui/text/qfontdatabase.h6
-rw-r--r--src/gui/text/qfontdatabase_qpa.cpp4
-rw-r--r--src/gui/text/qfontengine.cpp12
-rw-r--r--src/gui/text/qfontengine_ft.cpp15
-rw-r--r--src/gui/text/qfontengine_ft_p.h7
-rw-r--r--src/gui/text/qfontengine_p.h12
-rw-r--r--src/gui/text/qfontengine_qpa.cpp4
-rw-r--r--src/gui/text/qfontengine_qpa_p.h4
-rw-r--r--src/gui/text/qfontengine_qpf.cpp4
-rw-r--r--src/gui/text/qfontengine_qpf_p.h4
-rw-r--r--src/gui/text/qfontenginedirectwrite.cpp9
-rw-r--r--src/gui/text/qfontenginedirectwrite_p.h7
-rw-r--r--src/gui/text/qfontengineglyphcache_p.h4
-rw-r--r--src/gui/text/qfontinfo.h5
-rw-r--r--src/gui/text/qfontmetrics.cpp4
-rw-r--r--src/gui/text/qfontmetrics.h5
-rw-r--r--src/gui/text/qfontsubset.cpp4
-rw-r--r--src/gui/text/qfontsubset_p.h4
-rw-r--r--src/gui/text/qfragmentmap.cpp4
-rw-r--r--src/gui/text/qfragmentmap_p.h4
-rw-r--r--src/gui/text/qglyphrun.cpp4
-rw-r--r--src/gui/text/qglyphrun.h5
-rw-r--r--src/gui/text/qglyphrun_p.h4
-rw-r--r--src/gui/text/qlinecontrol.cpp1729
-rw-r--r--src/gui/text/qlinecontrol_p.h456
-rw-r--r--src/gui/text/qpfutil.cpp4
-rw-r--r--src/gui/text/qplatformfontdatabase_qpa.cpp4
-rw-r--r--src/gui/text/qplatformfontdatabase_qpa.h5
-rw-r--r--src/gui/text/qrawfont.cpp8
-rw-r--r--src/gui/text/qrawfont.h5
-rw-r--r--src/gui/text/qrawfont_ft.cpp4
-rw-r--r--src/gui/text/qrawfont_p.h4
-rw-r--r--src/gui/text/qrawfont_qpa.cpp4
-rw-r--r--src/gui/text/qstatictext.cpp4
-rw-r--r--src/gui/text/qstatictext.h5
-rw-r--r--src/gui/text/qstatictext_p.h4
-rw-r--r--src/gui/text/qsyntaxhighlighter.cpp4
-rw-r--r--src/gui/text/qsyntaxhighlighter.h5
-rw-r--r--src/gui/text/qtextcontrol.cpp2893
-rw-r--r--src/gui/text/qtextcontrol_p.h288
-rw-r--r--src/gui/text/qtextcontrol_p_p.h232
-rw-r--r--src/gui/text/qtextcursor.cpp4
-rw-r--r--src/gui/text/qtextcursor.h5
-rw-r--r--src/gui/text/qtextcursor_p.h4
-rw-r--r--src/gui/text/qtextdocument.cpp4
-rw-r--r--src/gui/text/qtextdocument.h5
-rw-r--r--src/gui/text/qtextdocument_p.cpp23
-rw-r--r--src/gui/text/qtextdocument_p.h4
-rw-r--r--src/gui/text/qtextdocumentfragment.cpp4
-rw-r--r--src/gui/text/qtextdocumentfragment.h5
-rw-r--r--src/gui/text/qtextdocumentfragment_p.h4
-rw-r--r--src/gui/text/qtextdocumentlayout.cpp4
-rw-r--r--src/gui/text/qtextdocumentlayout_p.h4
-rw-r--r--src/gui/text/qtextdocumentwriter.cpp4
-rw-r--r--src/gui/text/qtextdocumentwriter.h5
-rw-r--r--src/gui/text/qtextengine.cpp10
-rw-r--r--src/gui/text/qtextengine_p.h4
-rw-r--r--src/gui/text/qtextformat.cpp4
-rw-r--r--src/gui/text/qtextformat.h5
-rw-r--r--src/gui/text/qtextformat_p.h4
-rw-r--r--src/gui/text/qtexthtmlparser.cpp4
-rw-r--r--src/gui/text/qtexthtmlparser_p.h4
-rw-r--r--src/gui/text/qtextimagehandler.cpp4
-rw-r--r--src/gui/text/qtextimagehandler_p.h4
-rw-r--r--src/gui/text/qtextlayout.cpp11
-rw-r--r--src/gui/text/qtextlayout.h5
-rw-r--r--src/gui/text/qtextlist.cpp4
-rw-r--r--src/gui/text/qtextlist.h5
-rw-r--r--src/gui/text/qtextobject.cpp4
-rw-r--r--src/gui/text/qtextobject.h5
-rw-r--r--src/gui/text/qtextobject_p.h4
-rw-r--r--src/gui/text/qtextodfwriter.cpp4
-rw-r--r--src/gui/text/qtextodfwriter_p.h4
-rw-r--r--src/gui/text/qtextoption.cpp4
-rw-r--r--src/gui/text/qtextoption.h5
-rw-r--r--src/gui/text/qtexttable.cpp4
-rw-r--r--src/gui/text/qtexttable.h5
-rw-r--r--src/gui/text/qtexttable_p.h4
-rw-r--r--src/gui/text/qzip.cpp4
-rw-r--r--src/gui/text/qzipreader_p.h4
-rw-r--r--src/gui/text/qzipwriter_p.h4
-rw-r--r--src/gui/text/text.pri25
-rw-r--r--src/gui/util/qdesktopservices.cpp4
-rw-r--r--src/gui/util/qdesktopservices.h9
-rw-r--r--src/gui/util/qdesktopservices_mac.cpp4
-rw-r--r--src/gui/util/qdesktopservices_qpa.cpp4
-rw-r--r--src/gui/util/qdesktopservices_win.cpp4
-rw-r--r--src/gui/util/qdesktopservices_x11.cpp4
-rw-r--r--src/gui/util/qhexstring_p.h4
-rw-r--r--src/gui/util/qvalidator.cpp53
-rw-r--r--src/gui/util/qvalidator.h8
-rw-r--r--src/modules/qt_concurrent.pri15
-rw-r--r--src/modules/qt_dbus.pri2
-rw-r--r--src/network/access/access.pri2
-rw-r--r--src/network/access/qabstractnetworkcache.cpp4
-rw-r--r--src/network/access/qabstractnetworkcache.h5
-rw-r--r--src/network/access/qabstractnetworkcache_p.h4
-rw-r--r--src/network/access/qftp.cpp6
-rw-r--r--src/network/access/qftp_p.h5
-rw-r--r--src/network/access/qhttpheader.cpp770
-rw-r--r--src/network/access/qhttpheader_p.h147
-rw-r--r--src/network/access/qhttpmultipart.cpp4
-rw-r--r--src/network/access/qhttpmultipart.h5
-rw-r--r--src/network/access/qhttpmultipart_p.h4
-rw-r--r--src/network/access/qhttpnetworkconnection.cpp4
-rw-r--r--src/network/access/qhttpnetworkconnection_p.h4
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel.cpp4
-rw-r--r--src/network/access/qhttpnetworkconnectionchannel_p.h4
-rw-r--r--src/network/access/qhttpnetworkheader.cpp4
-rw-r--r--src/network/access/qhttpnetworkheader_p.h4
-rw-r--r--src/network/access/qhttpnetworkreply.cpp4
-rw-r--r--src/network/access/qhttpnetworkreply_p.h5
-rw-r--r--src/network/access/qhttpnetworkrequest.cpp4
-rw-r--r--src/network/access/qhttpnetworkrequest_p.h4
-rw-r--r--src/network/access/qhttpthreaddelegate.cpp4
-rw-r--r--src/network/access/qhttpthreaddelegate_p.h4
-rw-r--r--src/network/access/qnetworkaccessauthenticationmanager.cpp4
-rw-r--r--src/network/access/qnetworkaccessauthenticationmanager_p.h4
-rw-r--r--src/network/access/qnetworkaccessbackend.cpp4
-rw-r--r--src/network/access/qnetworkaccessbackend_p.h4
-rw-r--r--src/network/access/qnetworkaccesscache.cpp4
-rw-r--r--src/network/access/qnetworkaccesscache_p.h4
-rw-r--r--src/network/access/qnetworkaccesscachebackend.cpp4
-rw-r--r--src/network/access/qnetworkaccesscachebackend_p.h4
-rw-r--r--src/network/access/qnetworkaccessdebugpipebackend.cpp4
-rw-r--r--src/network/access/qnetworkaccessdebugpipebackend_p.h4
-rw-r--r--src/network/access/qnetworkaccessfilebackend.cpp4
-rw-r--r--src/network/access/qnetworkaccessfilebackend_p.h4
-rw-r--r--src/network/access/qnetworkaccessftpbackend.cpp4
-rw-r--r--src/network/access/qnetworkaccessftpbackend_p.h4
-rw-r--r--src/network/access/qnetworkaccessmanager.cpp5
-rw-r--r--src/network/access/qnetworkaccessmanager.h5
-rw-r--r--src/network/access/qnetworkaccessmanager_p.h4
-rw-r--r--src/network/access/qnetworkcookie.cpp41
-rw-r--r--src/network/access/qnetworkcookie.h8
-rw-r--r--src/network/access/qnetworkcookie_p.h4
-rw-r--r--src/network/access/qnetworkcookiejar.cpp150
-rw-r--r--src/network/access/qnetworkcookiejar.h10
-rw-r--r--src/network/access/qnetworkcookiejar_p.h4
-rw-r--r--src/network/access/qnetworkdiskcache.cpp4
-rw-r--r--src/network/access/qnetworkdiskcache.h5
-rw-r--r--src/network/access/qnetworkdiskcache_p.h4
-rw-r--r--src/network/access/qnetworkreply.cpp4
-rw-r--r--src/network/access/qnetworkreply.h5
-rw-r--r--src/network/access/qnetworkreply_p.h4
-rw-r--r--src/network/access/qnetworkreplydataimpl.cpp4
-rw-r--r--src/network/access/qnetworkreplydataimpl_p.h4
-rw-r--r--src/network/access/qnetworkreplyfileimpl.cpp4
-rw-r--r--src/network/access/qnetworkreplyfileimpl_p.h4
-rw-r--r--src/network/access/qnetworkreplyhttpimpl.cpp18
-rw-r--r--src/network/access/qnetworkreplyhttpimpl_p.h4
-rw-r--r--src/network/access/qnetworkreplyimpl.cpp4
-rw-r--r--src/network/access/qnetworkreplyimpl_p.h4
-rw-r--r--src/network/access/qnetworkrequest.cpp4
-rw-r--r--src/network/access/qnetworkrequest.h5
-rw-r--r--src/network/access/qnetworkrequest_p.h4
-rw-r--r--src/network/bearer/qbearerengine.cpp4
-rw-r--r--src/network/bearer/qbearerengine_p.h4
-rw-r--r--src/network/bearer/qbearerplugin.cpp4
-rw-r--r--src/network/bearer/qbearerplugin_p.h7
-rw-r--r--src/network/bearer/qnetworkconfigmanager.cpp38
-rw-r--r--src/network/bearer/qnetworkconfigmanager.h8
-rw-r--r--src/network/bearer/qnetworkconfigmanager_p.cpp40
-rw-r--r--src/network/bearer/qnetworkconfigmanager_p.h7
-rw-r--r--src/network/bearer/qnetworkconfiguration.cpp35
-rw-r--r--src/network/bearer/qnetworkconfiguration.h13
-rw-r--r--src/network/bearer/qnetworkconfiguration_p.h9
-rw-r--r--src/network/bearer/qnetworksession.cpp6
-rw-r--r--src/network/bearer/qnetworksession.h6
-rw-r--r--src/network/bearer/qnetworksession_p.h4
-rw-r--r--src/network/bearer/qsharednetworksession.cpp4
-rw-r--r--src/network/bearer/qsharednetworksession_p.h4
-rw-r--r--src/network/kernel/kernel.pri9
-rw-r--r--src/network/kernel/qauthenticator.cpp20
-rw-r--r--src/network/kernel/qauthenticator.h5
-rw-r--r--src/network/kernel/qauthenticator_p.h7
-rw-r--r--src/network/kernel/qdnslookup.cpp988
-rw-r--r--src/network/kernel/qdnslookup.h235
-rw-r--r--src/network/kernel/qdnslookup_p.h213
-rw-r--r--src/network/kernel/qdnslookup_unix.cpp322
-rw-r--r--src/network/kernel/qdnslookup_win.cpp177
-rw-r--r--src/network/kernel/qhostaddress.cpp4
-rw-r--r--src/network/kernel/qhostaddress.h5
-rw-r--r--src/network/kernel/qhostaddress_p.h4
-rw-r--r--src/network/kernel/qhostinfo.cpp4
-rw-r--r--src/network/kernel/qhostinfo.h5
-rw-r--r--src/network/kernel/qhostinfo_p.h4
-rw-r--r--src/network/kernel/qhostinfo_unix.cpp13
-rw-r--r--src/network/kernel/qhostinfo_win.cpp12
-rw-r--r--src/network/kernel/qnetworkinterface.cpp4
-rw-r--r--src/network/kernel/qnetworkinterface.h5
-rw-r--r--src/network/kernel/qnetworkinterface_p.h4
-rw-r--r--src/network/kernel/qnetworkinterface_unix.cpp4
-rw-r--r--src/network/kernel/qnetworkinterface_win.cpp4
-rw-r--r--src/network/kernel/qnetworkinterface_win_p.h4
-rw-r--r--src/network/kernel/qnetworkproxy.cpp4
-rw-r--r--src/network/kernel/qnetworkproxy.h5
-rw-r--r--src/network/kernel/qnetworkproxy_generic.cpp4
-rw-r--r--src/network/kernel/qnetworkproxy_mac.cpp4
-rw-r--r--src/network/kernel/qnetworkproxy_p.h4
-rw-r--r--src/network/kernel/qnetworkproxy_win.cpp6
-rw-r--r--src/network/kernel/qurlinfo.cpp4
-rw-r--r--src/network/kernel/qurlinfo.h5
-rw-r--r--src/network/socket/qabstractsocket.cpp112
-rw-r--r--src/network/socket/qabstractsocket.h35
-rw-r--r--src/network/socket/qabstractsocket_p.h6
-rw-r--r--src/network/socket/qabstractsocketengine.cpp4
-rw-r--r--src/network/socket/qabstractsocketengine_p.h4
-rw-r--r--src/network/socket/qhttpsocketengine.cpp58
-rw-r--r--src/network/socket/qhttpsocketengine_p.h7
-rw-r--r--src/network/socket/qlocalserver.cpp4
-rw-r--r--src/network/socket/qlocalserver.h5
-rw-r--r--src/network/socket/qlocalserver_p.h4
-rw-r--r--src/network/socket/qlocalserver_tcp.cpp4
-rw-r--r--src/network/socket/qlocalserver_unix.cpp4
-rw-r--r--src/network/socket/qlocalserver_win.cpp4
-rw-r--r--src/network/socket/qlocalsocket.cpp4
-rw-r--r--src/network/socket/qlocalsocket.h5
-rw-r--r--src/network/socket/qlocalsocket_p.h4
-rw-r--r--src/network/socket/qlocalsocket_tcp.cpp4
-rw-r--r--src/network/socket/qlocalsocket_unix.cpp4
-rw-r--r--src/network/socket/qlocalsocket_win.cpp6
-rw-r--r--src/network/socket/qnativesocketengine.cpp4
-rw-r--r--src/network/socket/qnativesocketengine_p.h4
-rw-r--r--src/network/socket/qnativesocketengine_unix.cpp4
-rw-r--r--src/network/socket/qnativesocketengine_win.cpp10
-rw-r--r--src/network/socket/qnet_unix_p.h4
-rw-r--r--src/network/socket/qsocks5socketengine.cpp4
-rw-r--r--src/network/socket/qsocks5socketengine_p.h4
-rw-r--r--src/network/socket/qtcpserver.cpp4
-rw-r--r--src/network/socket/qtcpserver.h5
-rw-r--r--src/network/socket/qtcpsocket.cpp4
-rw-r--r--src/network/socket/qtcpsocket.h5
-rw-r--r--src/network/socket/qtcpsocket_p.h4
-rw-r--r--src/network/socket/qudpsocket.cpp7
-rw-r--r--src/network/socket/qudpsocket.h5
-rw-r--r--src/network/ssl/qssl.cpp4
-rw-r--r--src/network/ssl/qssl.h5
-rw-r--r--src/network/ssl/qsslcertificate.cpp4
-rw-r--r--src/network/ssl/qsslcertificate.h8
-rw-r--r--src/network/ssl/qsslcertificate_p.h4
-rw-r--r--src/network/ssl/qsslcertificateextension.cpp4
-rw-r--r--src/network/ssl/qsslcertificateextension.h5
-rw-r--r--src/network/ssl/qsslcertificateextension_p.h4
-rw-r--r--src/network/ssl/qsslcipher.cpp4
-rw-r--r--src/network/ssl/qsslcipher.h5
-rw-r--r--src/network/ssl/qsslcipher_p.h4
-rw-r--r--src/network/ssl/qsslconfiguration.cpp4
-rw-r--r--src/network/ssl/qsslconfiguration.h7
-rw-r--r--src/network/ssl/qsslconfiguration_p.h4
-rw-r--r--src/network/ssl/qsslerror.cpp4
-rw-r--r--src/network/ssl/qsslerror.h5
-rw-r--r--src/network/ssl/qsslkey.cpp4
-rw-r--r--src/network/ssl/qsslkey.h5
-rw-r--r--src/network/ssl/qsslkey_p.h4
-rw-r--r--src/network/ssl/qsslsocket.cpp78
-rw-r--r--src/network/ssl/qsslsocket.h13
-rw-r--r--src/network/ssl/qsslsocket_openssl.cpp156
-rw-r--r--src/network/ssl/qsslsocket_openssl_p.h6
-rw-r--r--src/network/ssl/qsslsocket_openssl_symbols.cpp4
-rw-r--r--src/network/ssl/qsslsocket_openssl_symbols_p.h4
-rw-r--r--src/network/ssl/qsslsocket_p.h11
-rw-r--r--src/network/ssl/ssl.pri4
-rw-r--r--src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp4
-rw-r--r--src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h4
-rw-r--r--src/opengl/gl2paintengineex/qglcustomshaderstage.cpp4
-rw-r--r--src/opengl/gl2paintengineex/qglcustomshaderstage_p.h5
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadermanager.cpp4
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadermanager_p.h5
-rw-r--r--src/opengl/gl2paintengineex/qglengineshadersource_p.h5
-rw-r--r--src/opengl/gl2paintengineex/qglgradientcache.cpp4
-rw-r--r--src/opengl/gl2paintengineex/qglgradientcache_p.h4
-rw-r--r--src/opengl/gl2paintengineex/qglshadercache_meego_p.h5
-rw-r--r--src/opengl/gl2paintengineex/qglshadercache_p.h5
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp29
-rw-r--r--src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h4
-rw-r--r--src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp10
-rw-r--r--src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h10
-rw-r--r--src/opengl/gl2paintengineex/qtriangulatingstroker.cpp4
-rw-r--r--src/opengl/gl2paintengineex/qtriangulatingstroker_p.h4
-rw-r--r--src/opengl/qgl.cpp4
-rw-r--r--src/opengl/qgl.h5
-rw-r--r--src/opengl/qgl_p.h4
-rw-r--r--src/opengl/qgl_qpa.cpp4
-rw-r--r--src/opengl/qglbuffer.cpp4
-rw-r--r--src/opengl/qglbuffer.h5
-rw-r--r--src/opengl/qglcolormap.cpp4
-rw-r--r--src/opengl/qglcolormap.h5
-rw-r--r--src/opengl/qglextensions.cpp8
-rw-r--r--src/opengl/qglextensions_p.h4
-rw-r--r--src/opengl/qglframebufferobject.cpp18
-rw-r--r--src/opengl/qglframebufferobject.h5
-rw-r--r--src/opengl/qglframebufferobject_p.h4
-rw-r--r--src/opengl/qglfunctions.cpp7
-rw-r--r--src/opengl/qglfunctions.h8
-rw-r--r--src/opengl/qglpaintdevice.cpp4
-rw-r--r--src/opengl/qglpaintdevice_p.h4
-rw-r--r--src/opengl/qglpixelbuffer.cpp4
-rw-r--r--src/opengl/qglpixelbuffer.h5
-rw-r--r--src/opengl/qglpixelbuffer_p.h4
-rw-r--r--src/opengl/qglpixelbuffer_stub.cpp4
-rw-r--r--src/opengl/qglshaderprogram.cpp4
-rw-r--r--src/opengl/qglshaderprogram.h5
-rw-r--r--src/opengl/qgraphicsshadereffect.cpp4
-rw-r--r--src/opengl/qgraphicsshadereffect_p.h5
-rw-r--r--src/platformsupport/cglconvenience/cglconvenience.mm4
-rw-r--r--src/platformsupport/cglconvenience/cglconvenience_p.h4
-rw-r--r--src/platformsupport/dnd/qsimpledrag.cpp4
-rw-r--r--src/platformsupport/dnd/qsimpledrag_p.h4
-rw-r--r--src/platformsupport/eglconvenience/qeglconvenience.cpp4
-rw-r--r--src/platformsupport/eglconvenience/qeglconvenience_p.h4
-rw-r--r--src/platformsupport/eglconvenience/qeglplatformcontext.cpp4
-rw-r--r--src/platformsupport/eglconvenience/qeglplatformcontext_p.h4
-rw-r--r--src/platformsupport/eglconvenience/qxlibeglintegration.cpp4
-rw-r--r--src/platformsupport/eglconvenience/qxlibeglintegration_p.h4
-rw-r--r--src/platformsupport/eventdispatchers/qeventdispatcher_glib.cpp4
-rw-r--r--src/platformsupport/eventdispatchers/qeventdispatcher_glib_p.h4
-rw-r--r--src/platformsupport/eventdispatchers/qgenericunixeventdispatcher.cpp4
-rw-r--r--src/platformsupport/eventdispatchers/qgenericunixeventdispatcher_p.h4
-rw-r--r--src/platformsupport/eventdispatchers/qunixeventdispatcher_qpa.cpp4
-rw-r--r--src/platformsupport/eventdispatchers/qunixeventdispatcher_qpa_p.h4
-rw-r--r--src/platformsupport/fb_base/fb_base.cpp4
-rw-r--r--src/platformsupport/fb_base/fb_base_p.h4
-rw-r--r--src/platformsupport/fontdatabases/basic/basic.pri2
-rw-r--r--src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp11
-rw-r--r--src/platformsupport/fontdatabases/basic/qbasicfontdatabase_p.h8
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp4
-rw-r--r--src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h4
-rw-r--r--src/platformsupport/fontdatabases/genericunix/qgenericunixfontdatabase_p.h4
-rw-r--r--src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm17
-rw-r--r--src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h8
-rw-r--r--src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm14
-rw-r--r--src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h9
-rw-r--r--src/platformsupport/glxconvenience/qglxconvenience.cpp79
-rw-r--r--src/platformsupport/glxconvenience/qglxconvenience_p.h4
-rw-r--r--src/platformsupport/inputcontext/qplatforminputcontextfactory_qpa.cpp4
-rw-r--r--src/platformsupport/inputcontext/qplatforminputcontextfactory_qpa_p.h5
-rw-r--r--src/platformsupport/inputcontext/qplatforminputcontextplugin_qpa.cpp4
-rw-r--r--src/platformsupport/inputcontext/qplatforminputcontextplugin_qpa_p.h5
-rw-r--r--src/platformsupport/printersupport/genericunix/qgenericunixprintersupport.cpp4
-rw-r--r--src/platformsupport/printersupport/genericunix/qgenericunixprintersupport_p.h4
-rw-r--r--src/plugins/accessible/widgets/complexwidgets.cpp4
-rw-r--r--src/plugins/accessible/widgets/complexwidgets.h4
-rw-r--r--src/plugins/accessible/widgets/itemviews.cpp4
-rw-r--r--src/plugins/accessible/widgets/itemviews.h4
-rw-r--r--src/plugins/accessible/widgets/main.cpp4
-rw-r--r--src/plugins/accessible/widgets/qaccessiblemenu.cpp4
-rw-r--r--src/plugins/accessible/widgets/qaccessiblemenu.h4
-rw-r--r--src/plugins/accessible/widgets/qaccessiblewidgets.cpp4
-rw-r--r--src/plugins/accessible/widgets/qaccessiblewidgets.h4
-rw-r--r--src/plugins/accessible/widgets/rangecontrols.cpp4
-rw-r--r--src/plugins/accessible/widgets/rangecontrols.h4
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.cpp4
-rw-r--r--src/plugins/accessible/widgets/simplewidgets.h4
-rw-r--r--src/plugins/bearer/connman/main.cpp4
-rw-r--r--src/plugins/bearer/connman/qconnmanengine.cpp4
-rw-r--r--src/plugins/bearer/connman/qconnmanengine.h4
-rw-r--r--src/plugins/bearer/connman/qconnmanservice_linux.cpp4
-rw-r--r--src/plugins/bearer/connman/qconnmanservice_linux_p.h4
-rw-r--r--src/plugins/bearer/connman/qofonoservice_linux.cpp4
-rw-r--r--src/plugins/bearer/connman/qofonoservice_linux_p.h4
-rw-r--r--src/plugins/bearer/corewlan/main.cpp4
-rw-r--r--src/plugins/bearer/corewlan/qcorewlanengine.h4
-rw-r--r--src/plugins/bearer/corewlan/qcorewlanengine.mm53
-rw-r--r--src/plugins/bearer/generic/main.cpp4
-rw-r--r--src/plugins/bearer/generic/qgenericengine.cpp4
-rw-r--r--src/plugins/bearer/generic/qgenericengine.h4
-rw-r--r--src/plugins/bearer/nativewifi/main.cpp4
-rw-r--r--src/plugins/bearer/nativewifi/platformdefs.h4
-rw-r--r--src/plugins/bearer/nativewifi/qnativewifiengine.cpp4
-rw-r--r--src/plugins/bearer/nativewifi/qnativewifiengine.h4
-rw-r--r--src/plugins/bearer/networkmanager/main.cpp4
-rw-r--r--src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp4
-rw-r--r--src/plugins/bearer/networkmanager/qnetworkmanagerengine.h4
-rw-r--r--src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp4
-rw-r--r--src/plugins/bearer/networkmanager/qnetworkmanagerservice.h4
-rw-r--r--src/plugins/bearer/networkmanager/qnmdbushelper.cpp4
-rw-r--r--src/plugins/bearer/networkmanager/qnmdbushelper.h4
-rw-r--r--src/plugins/bearer/nla/main.cpp4
-rw-r--r--src/plugins/bearer/nla/qnlaengine.cpp4
-rw-r--r--src/plugins/bearer/nla/qnlaengine.h4
-rw-r--r--src/plugins/bearer/platformdefs_win.h4
-rw-r--r--src/plugins/bearer/qbearerengine_impl.h4
-rw-r--r--src/plugins/bearer/qnetworksession_impl.cpp4
-rw-r--r--src/plugins/bearer/qnetworksession_impl.h4
-rw-r--r--src/plugins/codecs/cn/cn.pro14
-rw-r--r--src/plugins/codecs/cn/main.cpp145
-rw-r--r--src/plugins/codecs/cn/qgb18030codec.cpp9265
-rw-r--r--src/plugins/codecs/cn/qgb18030codec.h159
-rw-r--r--src/plugins/codecs/codecs.pro4
-rw-r--r--src/plugins/codecs/jp/jp.pro25
-rw-r--r--src/plugins/codecs/jp/main.cpp149
-rw-r--r--src/plugins/codecs/jp/qeucjpcodec.cpp261
-rw-r--r--src/plugins/codecs/jp/qeucjpcodec.h106
-rw-r--r--src/plugins/codecs/jp/qfontjpcodec.cpp145
-rw-r--r--src/plugins/codecs/jp/qfontjpcodec.h93
-rw-r--r--src/plugins/codecs/jp/qjiscodec.cpp367
-rw-r--r--src/plugins/codecs/jp/qjiscodec.h106
-rw-r--r--src/plugins/codecs/jp/qjpunicode.cpp10700
-rw-r--r--src/plugins/codecs/jp/qjpunicode.h174
-rw-r--r--src/plugins/codecs/jp/qsjiscodec.cpp229
-rw-r--r--src/plugins/codecs/jp/qsjiscodec.h106
-rw-r--r--src/plugins/codecs/kr/cp949codetbl.h637
-rw-r--r--src/plugins/codecs/kr/kr.pro18
-rw-r--r--src/plugins/codecs/kr/main.cpp131
-rw-r--r--src/plugins/codecs/kr/qeuckrcodec.cpp3571
-rw-r--r--src/plugins/codecs/kr/qeuckrcodec.h129
-rw-r--r--src/plugins/codecs/tw/main.cpp138
-rw-r--r--src/plugins/codecs/tw/qbig5codec.cpp12788
-rw-r--r--src/plugins/codecs/tw/qbig5codec.h124
-rw-r--r--src/plugins/codecs/tw/tw.pro14
-rw-r--r--src/plugins/generic/generic.pro3
-rw-r--r--src/plugins/generic/linuxinput/main.cpp4
-rw-r--r--src/plugins/generic/linuxinput/qlinuxinput.cpp4
-rw-r--r--src/plugins/generic/linuxinput/qlinuxinput.h4
-rw-r--r--src/plugins/generic/meego/contextkitproperty.cpp85
-rw-r--r--src/plugins/generic/meego/contextkitproperty.h66
-rw-r--r--src/plugins/generic/meego/main.cpp75
-rw-r--r--src/plugins/generic/meego/meego.pro15
-rw-r--r--src/plugins/generic/meego/qmeegointegration.cpp81
-rw-r--r--src/plugins/generic/meego/qmeegointegration.h72
-rw-r--r--src/plugins/generic/touchscreen/main.cpp4
-rw-r--r--src/plugins/generic/touchscreen/qtoucheventsenderqpa.cpp4
-rw-r--r--src/plugins/generic/touchscreen/qtoucheventsenderqpa.h4
-rw-r--r--src/plugins/generic/touchscreen/qtouchscreen.cpp4
-rw-r--r--src/plugins/generic/touchscreen/qtouchscreen.h4
-rw-r--r--src/plugins/generic/tslib/main.cpp4
-rw-r--r--src/plugins/generic/tslib/qtslib.cpp4
-rw-r--r--src/plugins/generic/tslib/qtslib.h4
-rw-r--r--src/plugins/imageformats/gif/gif.pro2
-rw-r--r--src/plugins/imageformats/gif/main.cpp4
-rw-r--r--src/plugins/imageformats/ico/ico.pro2
-rw-r--r--src/plugins/imageformats/ico/main.cpp4
-rw-r--r--src/plugins/imageformats/ico/qicohandler.cpp4
-rw-r--r--src/plugins/imageformats/ico/qicohandler.h4
-rw-r--r--src/plugins/imageformats/imageformats.pro2
-rw-r--r--src/plugins/imageformats/jpeg/main.cpp4
-rw-r--r--src/plugins/imageformats/mng/main.cpp98
-rw-r--r--src/plugins/imageformats/mng/mng.pro17
-rw-r--r--src/plugins/imageformats/tiff/main.cpp97
-rw-r--r--src/plugins/imageformats/tiff/tiff.pro13
-rw-r--r--src/plugins/platforminputcontexts/ibus/main.cpp4
-rw-r--r--src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp22
-rw-r--r--src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h4
-rw-r--r--src/plugins/platforminputcontexts/ibus/qibustypes.cpp4
-rw-r--r--src/plugins/platforminputcontexts/ibus/qibustypes.h4
-rw-r--r--src/plugins/platforminputcontexts/maliit/contextadaptor.cpp158
-rw-r--r--src/plugins/platforminputcontexts/maliit/contextadaptor.h148
-rw-r--r--src/plugins/platforminputcontexts/maliit/main.cpp71
-rw-r--r--src/plugins/platforminputcontexts/maliit/maliit.pro19
-rw-r--r--src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.cpp599
-rw-r--r--src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.h97
-rw-r--r--src/plugins/platforminputcontexts/maliit/serveraddressproxy.cpp56
-rw-r--r--src/plugins/platforminputcontexts/maliit/serveraddressproxy.h84
-rw-r--r--src/plugins/platforminputcontexts/maliit/serverproxy.cpp56
-rw-r--r--src/plugins/platforminputcontexts/maliit/serverproxy.h166
-rw-r--r--src/plugins/platforminputcontexts/meego/contextadaptor.cpp158
-rw-r--r--src/plugins/platforminputcontexts/meego/contextadaptor.h148
-rw-r--r--src/plugins/platforminputcontexts/meego/main.cpp71
-rw-r--r--src/plugins/platforminputcontexts/meego/meego.pro17
-rw-r--r--src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.cpp546
-rw-r--r--src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.h96
-rw-r--r--src/plugins/platforminputcontexts/meego/serverproxy.cpp56
-rw-r--r--src/plugins/platforminputcontexts/meego/serverproxy.h166
-rw-r--r--src/plugins/platforminputcontexts/platforminputcontexts.pro3
-rw-r--r--src/plugins/platforms/cocoa/main.mm4
-rw-r--r--src/plugins/platforms/cocoa/qcocoaaccessibility.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoaaccessibility.mm78
-rw-r--r--src/plugins/platforms/cocoa/qcocoaaccessibilityelement.h11
-rw-r--r--src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm113
-rw-r--r--src/plugins/platforms/cocoa/qcocoaapplication.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoaapplication.mm4
-rw-r--r--src/plugins/platforms/cocoa/qcocoaapplicationdelegate.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm8
-rw-r--r--src/plugins/platforms/cocoa/qcocoaautoreleasepool.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoaautoreleasepool.mm4
-rw-r--r--src/plugins/platforms/cocoa/qcocoabackingstore.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoabackingstore.mm4
-rw-r--r--src/plugins/platforms/cocoa/qcocoacursor.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoacursor.mm4
-rw-r--r--src/plugins/platforms/cocoa/qcocoaeventdispatcher.h7
-rw-r--r--src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm70
-rw-r--r--src/plugins/platforms/cocoa/qcocoafiledialoghelper.h7
-rw-r--r--src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm66
-rw-r--r--src/plugins/platforms/cocoa/qcocoaglcontext.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoaglcontext.mm4
-rw-r--r--src/plugins/platforms/cocoa/qcocoahelpers.h87
-rw-r--r--src/plugins/platforms/cocoa/qcocoahelpers.mm80
-rw-r--r--src/plugins/platforms/cocoa/qcocoaintegration.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoaintegration.mm5
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenu.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenu.mm4
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenuloader.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoamenuloader.mm20
-rw-r--r--src/plugins/platforms/cocoa/qcocoanativeinterface.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoanativeinterface.mm6
-rw-r--r--src/plugins/platforms/cocoa/qcocoatheme.h8
-rw-r--r--src/plugins/platforms/cocoa/qcocoatheme.mm21
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.h4
-rw-r--r--src/plugins/platforms/cocoa/qcocoawindow.mm4
-rw-r--r--src/plugins/platforms/cocoa/qmacdefines_mac.h157
-rw-r--r--src/plugins/platforms/cocoa/qmenu_mac.h6
-rw-r--r--src/plugins/platforms/cocoa/qmenu_mac.mm36
-rw-r--r--src/plugins/platforms/cocoa/qmultitouch_mac.mm4
-rw-r--r--src/plugins/platforms/cocoa/qmultitouch_mac_p.h4
-rw-r--r--src/plugins/platforms/cocoa/qnsview.h7
-rw-r--r--src/plugins/platforms/cocoa/qnsview.mm4
-rw-r--r--src/plugins/platforms/cocoa/qnsviewaccessibility.mm10
-rw-r--r--src/plugins/platforms/cocoa/qnswindowdelegate.h4
-rw-r--r--src/plugins/platforms/cocoa/qnswindowdelegate.mm4
-rw-r--r--src/plugins/platforms/cocoa/qt_mac_p.h284
-rw-r--r--src/plugins/platforms/directfb/main.cpp4
-rw-r--r--src/plugins/platforms/directfb/qdirectfb_egl.cpp4
-rw-r--r--src/plugins/platforms/directfb/qdirectfb_egl.h4
-rw-r--r--src/plugins/platforms/directfb/qdirectfbbackingstore.cpp4
-rw-r--r--src/plugins/platforms/directfb/qdirectfbbackingstore.h4
-rw-r--r--src/plugins/platforms/directfb/qdirectfbblitter.cpp14
-rw-r--r--src/plugins/platforms/directfb/qdirectfbblitter.h4
-rw-r--r--src/plugins/platforms/directfb/qdirectfbconvenience.cpp4
-rw-r--r--src/plugins/platforms/directfb/qdirectfbconvenience.h4
-rw-r--r--src/plugins/platforms/directfb/qdirectfbcursor.cpp4
-rw-r--r--src/plugins/platforms/directfb/qdirectfbcursor.h4
-rw-r--r--src/plugins/platforms/directfb/qdirectfbglcontext.cpp4
-rw-r--r--src/plugins/platforms/directfb/qdirectfbglcontext.h4
-rw-r--r--src/plugins/platforms/directfb/qdirectfbinput.cpp4
-rw-r--r--src/plugins/platforms/directfb/qdirectfbinput.h4
-rw-r--r--src/plugins/platforms/directfb/qdirectfbintegration.cpp4
-rw-r--r--src/plugins/platforms/directfb/qdirectfbintegration.h4
-rw-r--r--src/plugins/platforms/directfb/qdirectfbscreen.cpp4
-rw-r--r--src/plugins/platforms/directfb/qdirectfbscreen.h4
-rw-r--r--src/plugins/platforms/directfb/qdirectfbwindow.cpp10
-rw-r--r--src/plugins/platforms/directfb/qdirectfbwindow.h4
-rw-r--r--src/plugins/platforms/eglfs/main.cpp4
-rw-r--r--src/plugins/platforms/eglfs/qeglfsbackingstore.cpp4
-rw-r--r--src/plugins/platforms/eglfs/qeglfsbackingstore.h4
-rw-r--r--src/plugins/platforms/eglfs/qeglfsintegration.cpp4
-rw-r--r--src/plugins/platforms/eglfs/qeglfsintegration.h4
-rw-r--r--src/plugins/platforms/eglfs/qeglfsscreen.cpp4
-rw-r--r--src/plugins/platforms/eglfs/qeglfsscreen.h4
-rw-r--r--src/plugins/platforms/eglfs/qeglfswindow.cpp4
-rw-r--r--src/plugins/platforms/eglfs/qeglfswindow.h4
-rw-r--r--src/plugins/platforms/kms/main.cpp4
-rw-r--r--src/plugins/platforms/kms/qkmsbackingstore.cpp4
-rw-r--r--src/plugins/platforms/kms/qkmsbackingstore.h4
-rw-r--r--src/plugins/platforms/kms/qkmsbuffermanager.cpp4
-rw-r--r--src/plugins/platforms/kms/qkmsbuffermanager.h4
-rw-r--r--src/plugins/platforms/kms/qkmscontext.cpp4
-rw-r--r--src/plugins/platforms/kms/qkmscontext.h4
-rw-r--r--src/plugins/platforms/kms/qkmscursor.cpp4
-rw-r--r--src/plugins/platforms/kms/qkmscursor.h4
-rw-r--r--src/plugins/platforms/kms/qkmsdevice.cpp4
-rw-r--r--src/plugins/platforms/kms/qkmsdevice.h4
-rw-r--r--src/plugins/platforms/kms/qkmsintegration.cpp4
-rw-r--r--src/plugins/platforms/kms/qkmsintegration.h4
-rw-r--r--src/plugins/platforms/kms/qkmsscreen.cpp4
-rw-r--r--src/plugins/platforms/kms/qkmsscreen.h4
-rw-r--r--src/plugins/platforms/kms/qkmswindow.cpp4
-rw-r--r--src/plugins/platforms/kms/qkmswindow.h4
-rw-r--r--src/plugins/platforms/linuxfb/main.cpp4
-rw-r--r--src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp4
-rw-r--r--src/plugins/platforms/linuxfb/qlinuxfbintegration.h4
-rw-r--r--src/plugins/platforms/minimal/main.cpp4
-rw-r--r--src/plugins/platforms/minimal/qminimalbackingstore.cpp26
-rw-r--r--src/plugins/platforms/minimal/qminimalbackingstore.h5
-rw-r--r--src/plugins/platforms/minimal/qminimalintegration.cpp4
-rw-r--r--src/plugins/platforms/minimal/qminimalintegration.h4
-rw-r--r--src/plugins/platforms/openkode/main.cpp4
-rw-r--r--src/plugins/platforms/openkode/openkodekeytranslator.h4
-rw-r--r--src/plugins/platforms/openkode/qopenkodeeventloopintegration.cpp4
-rw-r--r--src/plugins/platforms/openkode/qopenkodeeventloopintegration.h4
-rw-r--r--src/plugins/platforms/openkode/qopenkodeintegration.cpp4
-rw-r--r--src/plugins/platforms/openkode/qopenkodeintegration.h4
-rw-r--r--src/plugins/platforms/openkode/qopenkodewindow.cpp4
-rw-r--r--src/plugins/platforms/openkode/qopenkodewindow.h4
-rw-r--r--src/plugins/platforms/openkode/shaders/frag.glslf4
-rw-r--r--src/plugins/platforms/openkode/shaders/vert.glslv4
-rw-r--r--src/plugins/platforms/openvglite/main.cpp4
-rw-r--r--src/plugins/platforms/openvglite/qgraphicssystem_vglite.cpp4
-rw-r--r--src/plugins/platforms/openvglite/qgraphicssystem_vglite.h4
-rw-r--r--src/plugins/platforms/openvglite/qwindowsurface_vglite.cpp4
-rw-r--r--src/plugins/platforms/openvglite/qwindowsurface_vglite.h4
-rw-r--r--src/plugins/platforms/openwfd/main.cpp4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdbackingstore.cpp4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdbackingstore.h4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfddevice.cpp4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfddevice.h4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdevent.cpp4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdevent.h4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdglcontext.cpp4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdglcontext.h4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdintegration.cpp4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdintegration.h4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdnativeinterface.cpp4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdnativeinterface.h4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdoutputbuffer.cpp4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdoutputbuffer.h4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdport.cpp4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdport.h4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdportmode.cpp4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdportmode.h4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdscreen.cpp4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdscreen.h4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdwindow.cpp4
-rw-r--r--src/plugins/platforms/openwfd/qopenwfdwindow.h4
-rw-r--r--src/plugins/platforms/qvfb/main.cpp4
-rw-r--r--src/plugins/platforms/qvfb/qvfbintegration.cpp4
-rw-r--r--src/plugins/platforms/qvfb/qvfbintegration.h4
-rw-r--r--src/plugins/platforms/qvfb/qvfbwindowsurface.cpp4
-rw-r--r--src/plugins/platforms/qvfb/qvfbwindowsurface.h4
-rw-r--r--src/plugins/platforms/uikit/examples/qmltest/main.mm4
-rw-r--r--src/plugins/platforms/uikit/examples/qmltest/qml/main.qml4
-rw-r--r--src/plugins/platforms/uikit/examples/qmltest/qmlapplicationviewer/moc_qmlapplicationviewer.cpp4
-rw-r--r--src/plugins/platforms/uikit/examples/qmltest/qmlapplicationviewer/qmlapplicationviewer.cpp21
-rw-r--r--src/plugins/platforms/uikit/examples/qmltest/qmlapplicationviewer/qmlapplicationviewer.h4
-rw-r--r--src/plugins/platforms/uikit/main.mm4
-rw-r--r--src/plugins/platforms/uikit/quikiteventloop.h4
-rw-r--r--src/plugins/platforms/uikit/quikiteventloop.mm4
-rw-r--r--src/plugins/platforms/uikit/quikitintegration.h4
-rw-r--r--src/plugins/platforms/uikit/quikitintegration.mm4
-rw-r--r--src/plugins/platforms/uikit/quikitscreen.h4
-rw-r--r--src/plugins/platforms/uikit/quikitscreen.mm4
-rw-r--r--src/plugins/platforms/uikit/quikitsoftwareinputhandler.h4
-rw-r--r--src/plugins/platforms/uikit/quikitwindow.h4
-rw-r--r--src/plugins/platforms/uikit/quikitwindow.mm4
-rw-r--r--src/plugins/platforms/uikit/quikitwindowsurface.h4
-rw-r--r--src/plugins/platforms/uikit/quikitwindowsurface.mm4
-rw-r--r--src/plugins/platforms/vnc/main.cpp4
-rw-r--r--src/plugins/platforms/vnc/qvnccursor.cpp4
-rw-r--r--src/plugins/platforms/vnc/qvnccursor.h4
-rw-r--r--src/plugins/platforms/vnc/qvncintegration.cpp4
-rw-r--r--src/plugins/platforms/vnc/qvncintegration.h4
-rw-r--r--src/plugins/platforms/vnc/qvncserver.cpp4
-rw-r--r--src/plugins/platforms/vnc/qvncserver.h4
-rw-r--r--src/plugins/platforms/windows/array.h4
-rw-r--r--src/plugins/platforms/windows/main.cpp4
-rw-r--r--src/plugins/platforms/windows/qtwindows_additional.h5
-rw-r--r--src/plugins/platforms/windows/qtwindowsglobal.h7
-rw-r--r--src/plugins/platforms/windows/qwindowsaccessibility.cpp24
-rw-r--r--src/plugins/platforms/windows/qwindowsaccessibility.h14
-rw-r--r--src/plugins/platforms/windows/qwindowsbackingstore.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowsbackingstore.h4
-rw-r--r--src/plugins/platforms/windows/qwindowsclipboard.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowsclipboard.h4
-rw-r--r--src/plugins/platforms/windows/qwindowscontext.cpp91
-rw-r--r--src/plugins/platforms/windows/qwindowscontext.h10
-rw-r--r--src/plugins/platforms/windows/qwindowscursor.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowscursor.h4
-rw-r--r--src/plugins/platforms/windows/qwindowsdialoghelpers.cpp63
-rw-r--r--src/plugins/platforms/windows/qwindowsdialoghelpers.h17
-rw-r--r--src/plugins/platforms/windows/qwindowsdrag.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowsdrag.h4
-rw-r--r--src/plugins/platforms/windows/qwindowsfontdatabase.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowsfontdatabase.h4
-rw-r--r--src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp47
-rw-r--r--src/plugins/platforms/windows/qwindowsfontdatabase_ft.h4
-rw-r--r--src/plugins/platforms/windows/qwindowsfontengine.cpp9
-rw-r--r--src/plugins/platforms/windows/qwindowsfontengine.h9
-rw-r--r--src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h7
-rw-r--r--src/plugins/platforms/windows/qwindowsglcontext.cpp8
-rw-r--r--src/plugins/platforms/windows/qwindowsglcontext.h4
-rw-r--r--src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp14
-rw-r--r--src/plugins/platforms/windows/qwindowsguieventdispatcher.h5
-rw-r--r--src/plugins/platforms/windows/qwindowsinputcontext.cpp26
-rw-r--r--src/plugins/platforms/windows/qwindowsinputcontext.h4
-rw-r--r--src/plugins/platforms/windows/qwindowsintegration.cpp10
-rw-r--r--src/plugins/platforms/windows/qwindowsintegration.h6
-rw-r--r--src/plugins/platforms/windows/qwindowsinternalmimedata.h4
-rw-r--r--src/plugins/platforms/windows/qwindowskeymapper.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowskeymapper.h4
-rw-r--r--src/plugins/platforms/windows/qwindowsmime.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowsmime.h4
-rw-r--r--src/plugins/platforms/windows/qwindowsmousehandler.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowsmousehandler.h4
-rw-r--r--src/plugins/platforms/windows/qwindowsnativeimage.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowsnativeimage.h4
-rw-r--r--src/plugins/platforms/windows/qwindowsole.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowsole.h4
-rw-r--r--src/plugins/platforms/windows/qwindowsscreen.cpp214
-rw-r--r--src/plugins/platforms/windows/qwindowsscreen.h50
-rw-r--r--src/plugins/platforms/windows/qwindowstheme.cpp12
-rw-r--r--src/plugins/platforms/windows/qwindowstheme.h8
-rw-r--r--src/plugins/platforms/windows/qwindowswindow.cpp4
-rw-r--r--src/plugins/platforms/windows/qwindowswindow.h4
-rw-r--r--src/plugins/platforms/windows/windows.pro4
-rw-r--r--src/plugins/platforms/xcb/README4
-rw-r--r--src/plugins/platforms/xcb/main.cpp4
-rw-r--r--src/plugins/platforms/xcb/qdri2context.cpp4
-rw-r--r--src/plugins/platforms/xcb/qdri2context.h4
-rw-r--r--src/plugins/platforms/xcb/qglxintegration.cpp33
-rw-r--r--src/plugins/platforms/xcb/qglxintegration.h4
-rw-r--r--src/plugins/platforms/xcb/qxcbbackingstore.cpp12
-rw-r--r--src/plugins/platforms/xcb/qxcbbackingstore.h4
-rw-r--r--src/plugins/platforms/xcb/qxcbclipboard.cpp4
-rw-r--r--src/plugins/platforms/xcb/qxcbclipboard.h4
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection.cpp145
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection.h12
-rw-r--r--src/plugins/platforms/xcb/qxcbconnection_maemo.cpp4
-rw-r--r--src/plugins/platforms/xcb/qxcbcursor.cpp14
-rw-r--r--src/plugins/platforms/xcb/qxcbcursor.h4
-rw-r--r--src/plugins/platforms/xcb/qxcbdrag.cpp4
-rw-r--r--src/plugins/platforms/xcb/qxcbdrag.h4
-rw-r--r--src/plugins/platforms/xcb/qxcbeglsurface.h4
-rw-r--r--src/plugins/platforms/xcb/qxcbimage.cpp4
-rw-r--r--src/plugins/platforms/xcb/qxcbimage.h4
-rw-r--r--src/plugins/platforms/xcb/qxcbintegration.cpp39
-rw-r--r--src/plugins/platforms/xcb/qxcbintegration.h15
-rw-r--r--src/plugins/platforms/xcb/qxcbkeyboard.cpp4
-rw-r--r--src/plugins/platforms/xcb/qxcbkeyboard.h4
-rw-r--r--src/plugins/platforms/xcb/qxcbmime.cpp4
-rw-r--r--src/plugins/platforms/xcb/qxcbmime.h4
-rw-r--r--src/plugins/platforms/xcb/qxcbnativeinterface.cpp24
-rw-r--r--src/plugins/platforms/xcb/qxcbnativeinterface.h16
-rw-r--r--src/plugins/platforms/xcb/qxcbobject.h4
-rw-r--r--src/plugins/platforms/xcb/qxcbscreen.cpp10
-rw-r--r--src/plugins/platforms/xcb/qxcbscreen.h4
-rw-r--r--src/plugins/platforms/xcb/qxcbsharedbuffermanager.cpp640
-rw-r--r--src/plugins/platforms/xcb/qxcbsharedbuffermanager.h215
-rw-r--r--src/plugins/platforms/xcb/qxcbsharedgraphicscache.cpp290
-rw-r--r--src/plugins/platforms/xcb/qxcbsharedgraphicscache.h91
-rw-r--r--src/plugins/platforms/xcb/qxcbwindow.cpp58
-rw-r--r--src/plugins/platforms/xcb/qxcbwindow.h8
-rw-r--r--src/plugins/platforms/xcb/qxcbwmsupport.cpp4
-rw-r--r--src/plugins/platforms/xcb/qxcbwmsupport.h4
-rw-r--r--src/plugins/platforms/xcb/xcb.pro22
-rw-r--r--src/plugins/platforms/xlib/main.cpp4
-rw-r--r--src/plugins/platforms/xlib/qglxintegration.cpp20
-rw-r--r--src/plugins/platforms/xlib/qglxintegration.h4
-rw-r--r--src/plugins/platforms/xlib/qxlibbackingstore.cpp4
-rw-r--r--src/plugins/platforms/xlib/qxlibbackingstore.h4
-rw-r--r--src/plugins/platforms/xlib/qxlibclipboard.cpp4
-rw-r--r--src/plugins/platforms/xlib/qxlibclipboard.h4
-rw-r--r--src/plugins/platforms/xlib/qxlibcursor.cpp4
-rw-r--r--src/plugins/platforms/xlib/qxlibcursor.h4
-rw-r--r--src/plugins/platforms/xlib/qxlibdisplay.cpp4
-rw-r--r--src/plugins/platforms/xlib/qxlibdisplay.h4
-rw-r--r--src/plugins/platforms/xlib/qxlibintegration.cpp4
-rw-r--r--src/plugins/platforms/xlib/qxlibintegration.h4
-rw-r--r--src/plugins/platforms/xlib/qxlibkeyboard.cpp4
-rw-r--r--src/plugins/platforms/xlib/qxlibkeyboard.h4
-rw-r--r--src/plugins/platforms/xlib/qxlibmime.cpp4
-rw-r--r--src/plugins/platforms/xlib/qxlibmime.h4
-rw-r--r--src/plugins/platforms/xlib/qxlibnativeinterface.cpp4
-rw-r--r--src/plugins/platforms/xlib/qxlibnativeinterface.h4
-rw-r--r--src/plugins/platforms/xlib/qxlibscreen.cpp4
-rw-r--r--src/plugins/platforms/xlib/qxlibscreen.h4
-rw-r--r--src/plugins/platforms/xlib/qxlibstatic.cpp4
-rw-r--r--src/plugins/platforms/xlib/qxlibstatic.h4
-rw-r--r--src/plugins/platforms/xlib/qxlibwindow.cpp37
-rw-r--r--src/plugins/platforms/xlib/qxlibwindow.h4
-rw-r--r--src/plugins/plugins.pro7
-rw-r--r--src/plugins/printsupport/windows/main.cpp4
-rw-r--r--src/plugins/printsupport/windows/qwindowsprinterinfo.cpp4
-rw-r--r--src/plugins/printsupport/windows/qwindowsprintersupport.cpp8
-rw-r--r--src/plugins/printsupport/windows/qwindowsprintersupport.h9
-rw-r--r--src/plugins/sqldrivers/db2/main.cpp4
-rw-r--r--src/plugins/sqldrivers/ibase/main.cpp4
-rw-r--r--src/plugins/sqldrivers/mysql/main.cpp4
-rw-r--r--src/plugins/sqldrivers/oci/main.cpp4
-rw-r--r--src/plugins/sqldrivers/odbc/main.cpp4
-rw-r--r--src/plugins/sqldrivers/psql/main.cpp4
-rw-r--r--src/plugins/sqldrivers/sqldrivers.pro2
-rw-r--r--src/plugins/sqldrivers/sqlite/smain.cpp4
-rw-r--r--src/plugins/sqldrivers/sqlite2/smain.cpp4
-rw-r--r--src/plugins/sqldrivers/sqlite_symbian/SQLite3_v9.2.zipbin3119273 -> 0 bytes
-rw-r--r--src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pri52
-rw-r--r--src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pro9
-rw-r--r--src/plugins/sqldrivers/tds/main.cpp4
-rw-r--r--src/printsupport/dialogs/qabstractpagesetupdialog.cpp4
-rw-r--r--src/printsupport/dialogs/qabstractpagesetupdialog.h5
-rw-r--r--src/printsupport/dialogs/qabstractpagesetupdialog_p.h4
-rw-r--r--src/printsupport/dialogs/qabstractprintdialog.cpp7
-rw-r--r--src/printsupport/dialogs/qabstractprintdialog.h5
-rw-r--r--src/printsupport/dialogs/qabstractprintdialog_p.h4
-rw-r--r--src/printsupport/dialogs/qpagesetupdialog.cpp7
-rw-r--r--src/printsupport/dialogs/qpagesetupdialog.h5
-rw-r--r--src/printsupport/dialogs/qpagesetupdialog_mac.mm4
-rw-r--r--src/printsupport/dialogs/qpagesetupdialog_unix.cpp4
-rw-r--r--src/printsupport/dialogs/qpagesetupdialog_unix_p.h4
-rw-r--r--src/printsupport/dialogs/qpagesetupdialog_win.cpp4
-rw-r--r--src/printsupport/dialogs/qprintdialog.h5
-rw-r--r--src/printsupport/dialogs/qprintdialog.qdoc4
-rw-r--r--src/printsupport/dialogs/qprintdialog_mac.mm4
-rw-r--r--src/printsupport/dialogs/qprintdialog_unix.cpp4
-rw-r--r--src/printsupport/dialogs/qprintdialog_win.cpp4
-rw-r--r--src/printsupport/dialogs/qprintpreviewdialog.cpp7
-rw-r--r--src/printsupport/dialogs/qprintpreviewdialog.h5
-rw-r--r--src/printsupport/kernel/qcups.cpp4
-rw-r--r--src/printsupport/kernel/qcups_p.h4
-rw-r--r--src/printsupport/kernel/qpaintengine_alpha.cpp4
-rw-r--r--src/printsupport/kernel/qpaintengine_alpha_p.h4
-rw-r--r--src/printsupport/kernel/qpaintengine_preview.cpp4
-rw-r--r--src/printsupport/kernel/qpaintengine_preview_p.h4
-rw-r--r--src/printsupport/kernel/qplatformprintersupport_qpa.cpp4
-rw-r--r--src/printsupport/kernel/qplatformprintersupport_qpa.h5
-rw-r--r--src/printsupport/kernel/qplatformprintplugin.cpp4
-rw-r--r--src/printsupport/kernel/qplatformprintplugin_qpa.h5
-rw-r--r--src/printsupport/kernel/qprintengine.h5
-rw-r--r--src/printsupport/kernel/qprintengine_pdf.cpp4
-rw-r--r--src/printsupport/kernel/qprintengine_pdf_p.h4
-rw-r--r--src/printsupport/kernel/qprintengine_win.cpp4
-rw-r--r--src/printsupport/kernel/qprintengine_win_p.h7
-rw-r--r--src/printsupport/kernel/qprinter.cpp4
-rw-r--r--src/printsupport/kernel/qprinter.h5
-rw-r--r--src/printsupport/kernel/qprinter_p.h4
-rw-r--r--src/printsupport/kernel/qprinterinfo.cpp4
-rw-r--r--src/printsupport/kernel/qprinterinfo.h5
-rw-r--r--src/printsupport/kernel/qprinterinfo_p.h4
-rw-r--r--src/printsupport/kernel/qprinterinfo_unix.cpp4
-rw-r--r--src/printsupport/kernel/qprinterinfo_unix_p.h4
-rw-r--r--src/printsupport/widgets/qprintpreviewwidget.cpp15
-rw-r--r--src/printsupport/widgets/qprintpreviewwidget.h8
-rw-r--r--src/sql/drivers/db2/qsql_db2.cpp4
-rw-r--r--src/sql/drivers/db2/qsql_db2.h4
-rw-r--r--src/sql/drivers/ibase/qsql_ibase.cpp8
-rw-r--r--src/sql/drivers/ibase/qsql_ibase.h4
-rw-r--r--src/sql/drivers/mysql/qsql_mysql.cpp4
-rw-r--r--src/sql/drivers/mysql/qsql_mysql.h4
-rw-r--r--src/sql/drivers/oci/qsql_oci.cpp4
-rw-r--r--src/sql/drivers/oci/qsql_oci.h4
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.cpp4
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.h4
-rw-r--r--src/sql/drivers/psql/qsql_psql.cpp22
-rw-r--r--src/sql/drivers/psql/qsql_psql.h4
-rw-r--r--src/sql/drivers/sqlite/qsql_sqlite.cpp16
-rw-r--r--src/sql/drivers/sqlite/qsql_sqlite.h4
-rw-r--r--src/sql/drivers/sqlite/qsql_sqlite.pri2
-rw-r--r--src/sql/drivers/sqlite2/qsql_sqlite2.cpp12
-rw-r--r--src/sql/drivers/sqlite2/qsql_sqlite2.h4
-rw-r--r--src/sql/drivers/tds/qsql_tds.cpp16
-rw-r--r--src/sql/drivers/tds/qsql_tds.h4
-rw-r--r--src/sql/kernel/qsql.h5
-rw-r--r--src/sql/kernel/qsql.qdoc4
-rw-r--r--src/sql/kernel/qsqlcachedresult.cpp4
-rw-r--r--src/sql/kernel/qsqlcachedresult_p.h4
-rw-r--r--src/sql/kernel/qsqldatabase.cpp4
-rw-r--r--src/sql/kernel/qsqldatabase.h5
-rw-r--r--src/sql/kernel/qsqldriver.cpp25
-rw-r--r--src/sql/kernel/qsqldriver.h8
-rw-r--r--src/sql/kernel/qsqldriverplugin.cpp4
-rw-r--r--src/sql/kernel/qsqldriverplugin.h7
-rw-r--r--src/sql/kernel/qsqlerror.cpp4
-rw-r--r--src/sql/kernel/qsqlerror.h5
-rw-r--r--src/sql/kernel/qsqlfield.cpp4
-rw-r--r--src/sql/kernel/qsqlfield.h5
-rw-r--r--src/sql/kernel/qsqlindex.cpp4
-rw-r--r--src/sql/kernel/qsqlindex.h5
-rw-r--r--src/sql/kernel/qsqlnulldriver_p.h4
-rw-r--r--src/sql/kernel/qsqlquery.cpp4
-rw-r--r--src/sql/kernel/qsqlquery.h5
-rw-r--r--src/sql/kernel/qsqlrecord.cpp9
-rw-r--r--src/sql/kernel/qsqlrecord.h5
-rw-r--r--src/sql/kernel/qsqlresult.cpp4
-rw-r--r--src/sql/kernel/qsqlresult.h5
-rw-r--r--src/sql/models/qsqlquerymodel.cpp4
-rw-r--r--src/sql/models/qsqlquerymodel.h5
-rw-r--r--src/sql/models/qsqlquerymodel_p.h4
-rw-r--r--src/sql/models/qsqlrelationaldelegate.cpp4
-rw-r--r--src/sql/models/qsqlrelationaldelegate.h5
-rw-r--r--src/sql/models/qsqlrelationaltablemodel.cpp43
-rw-r--r--src/sql/models/qsqlrelationaltablemodel.h5
-rw-r--r--src/sql/models/qsqltablemodel.cpp487
-rw-r--r--src/sql/models/qsqltablemodel.h5
-rw-r--r--src/sql/models/qsqltablemodel_p.h30
-rw-r--r--src/sql/sql.pro11
-rw-r--r--src/src.pro6
-rw-r--r--src/testlib/qabstracttestlogger.cpp4
-rw-r--r--src/testlib/qabstracttestlogger_p.h4
-rw-r--r--src/testlib/qasciikey.cpp4
-rw-r--r--src/testlib/qbenchmark.cpp4
-rw-r--r--src/testlib/qbenchmark.h5
-rw-r--r--src/testlib/qbenchmark_p.h4
-rw-r--r--src/testlib/qbenchmarkevent.cpp4
-rw-r--r--src/testlib/qbenchmarkevent_p.h4
-rw-r--r--src/testlib/qbenchmarkmeasurement.cpp4
-rw-r--r--src/testlib/qbenchmarkmeasurement_p.h4
-rw-r--r--src/testlib/qbenchmarkmetric.cpp4
-rw-r--r--src/testlib/qbenchmarkmetric.h5
-rw-r--r--src/testlib/qbenchmarkmetric_p.h5
-rw-r--r--src/testlib/qbenchmarkvalgrind.cpp4
-rw-r--r--src/testlib/qbenchmarkvalgrind_p.h4
-rw-r--r--src/testlib/qplaintestlogger.cpp12
-rw-r--r--src/testlib/qplaintestlogger_p.h4
-rw-r--r--src/testlib/qsignaldumper.cpp4
-rw-r--r--src/testlib/qsignaldumper_p.h4
-rw-r--r--src/testlib/qsignalspy.h5
-rw-r--r--src/testlib/qsignalspy.qdoc4
-rw-r--r--src/testlib/qtest.h5
-rw-r--r--src/testlib/qtest_global.h5
-rw-r--r--src/testlib/qtest_gui.h5
-rw-r--r--src/testlib/qtestaccessible.h9
-rw-r--r--src/testlib/qtestassert.h5
-rw-r--r--src/testlib/qtestcase.cpp11
-rw-r--r--src/testlib/qtestcase.h9
-rw-r--r--src/testlib/qtestcoreelement_p.h5
-rw-r--r--src/testlib/qtestcorelist_p.h5
-rw-r--r--src/testlib/qtestdata.cpp4
-rw-r--r--src/testlib/qtestdata.h5
-rw-r--r--src/testlib/qtestelement.cpp4
-rw-r--r--src/testlib/qtestelement_p.h5
-rw-r--r--src/testlib/qtestelementattribute.cpp4
-rw-r--r--src/testlib/qtestelementattribute_p.h5
-rw-r--r--src/testlib/qtestevent.h5
-rw-r--r--src/testlib/qtestevent.qdoc4
-rw-r--r--src/testlib/qtesteventloop.h5
-rw-r--r--src/testlib/qtestkeyboard.h5
-rw-r--r--src/testlib/qtestlog.cpp38
-rw-r--r--src/testlib/qtestlog_p.h10
-rw-r--r--src/testlib/qtestmouse.h5
-rw-r--r--src/testlib/qtestresult.cpp38
-rw-r--r--src/testlib/qtestresult_p.h10
-rw-r--r--src/testlib/qtestspontaneevent.h5
-rw-r--r--src/testlib/qtestsystem.h5
-rw-r--r--src/testlib/qtesttable.cpp4
-rw-r--r--src/testlib/qtesttable_p.h4
-rw-r--r--src/testlib/qtesttouch.h5
-rw-r--r--src/testlib/qtestxunitstreamer.cpp4
-rw-r--r--src/testlib/qtestxunitstreamer_p.h5
-rw-r--r--src/testlib/qxmltestlogger.cpp4
-rw-r--r--src/testlib/qxmltestlogger_p.h4
-rw-r--r--src/testlib/qxunittestlogger.cpp4
-rw-r--r--src/testlib/qxunittestlogger_p.h4
-rw-r--r--src/tools/bootstrap/bootstrap.pri1
-rw-r--r--src/tools/bootstrap/bootstrap.pro1
-rw-r--r--src/tools/moc/generator.cpp17
-rw-r--r--src/tools/moc/generator.h4
-rw-r--r--src/tools/moc/keywords.cpp4
-rw-r--r--src/tools/moc/main.cpp4
-rw-r--r--src/tools/moc/moc.cpp4
-rw-r--r--src/tools/moc/moc.h4
-rw-r--r--src/tools/moc/mwerks_mac.cpp4
-rw-r--r--src/tools/moc/mwerks_mac.h4
-rw-r--r--src/tools/moc/outputrevision.h4
-rw-r--r--src/tools/moc/parser.cpp4
-rw-r--r--src/tools/moc/parser.h4
-rw-r--r--src/tools/moc/ppkeywords.cpp4
-rw-r--r--src/tools/moc/preprocessor.cpp4
-rw-r--r--src/tools/moc/preprocessor.h4
-rw-r--r--src/tools/moc/symbols.h4
-rw-r--r--src/tools/moc/token.cpp4
-rw-r--r--src/tools/moc/token.h4
-rwxr-xr-xsrc/tools/moc/util/generate.sh4
-rw-r--r--src/tools/moc/util/generate_keywords.cpp4
-rw-r--r--src/tools/moc/util/licenseheader.txt4
-rw-r--r--src/tools/moc/utils.h4
-rw-r--r--src/tools/rcc/main.cpp4
-rw-r--r--src/tools/rcc/rcc.cpp4
-rw-r--r--src/tools/rcc/rcc.h4
-rw-r--r--src/tools/tools.pro68
-rw-r--r--src/tools/uic/cpp/cppextractimages.cpp4
-rw-r--r--src/tools/uic/cpp/cppextractimages.h4
-rw-r--r--src/tools/uic/cpp/cppwritedeclaration.cpp4
-rw-r--r--src/tools/uic/cpp/cppwritedeclaration.h4
-rw-r--r--src/tools/uic/cpp/cppwriteicondata.cpp4
-rw-r--r--src/tools/uic/cpp/cppwriteicondata.h4
-rw-r--r--src/tools/uic/cpp/cppwriteicondeclaration.cpp4
-rw-r--r--src/tools/uic/cpp/cppwriteicondeclaration.h4
-rw-r--r--src/tools/uic/cpp/cppwriteiconinitialization.cpp4
-rw-r--r--src/tools/uic/cpp/cppwriteiconinitialization.h4
-rw-r--r--src/tools/uic/cpp/cppwriteincludes.cpp4
-rw-r--r--src/tools/uic/cpp/cppwriteincludes.h4
-rw-r--r--src/tools/uic/cpp/cppwriteinitialization.cpp54
-rw-r--r--src/tools/uic/cpp/cppwriteinitialization.h9
-rw-r--r--src/tools/uic/customwidgetsinfo.cpp4
-rw-r--r--src/tools/uic/customwidgetsinfo.h4
-rw-r--r--src/tools/uic/databaseinfo.cpp4
-rw-r--r--src/tools/uic/databaseinfo.h4
-rw-r--r--src/tools/uic/driver.cpp4
-rw-r--r--src/tools/uic/driver.h4
-rw-r--r--src/tools/uic/globaldefs.h4
-rw-r--r--src/tools/uic/main.cpp4
-rw-r--r--src/tools/uic/option.h4
-rw-r--r--src/tools/uic/qclass_lib_map.h37
-rw-r--r--src/tools/uic/treewalker.cpp4
-rw-r--r--src/tools/uic/treewalker.h4
-rw-r--r--src/tools/uic/ui4.cpp50
-rw-r--r--src/tools/uic/ui4.h28
-rw-r--r--src/tools/uic/uic.cpp4
-rw-r--r--src/tools/uic/uic.h4
-rw-r--r--src/tools/uic/uic.pro6
-rw-r--r--src/tools/uic/utils.h4
-rw-r--r--src/tools/uic/validator.cpp4
-rw-r--r--src/tools/uic/validator.h4
-rw-r--r--src/widgets/accessible/qaccessiblewidget.cpp96
-rw-r--r--src/widgets/accessible/qaccessiblewidget.h5
-rw-r--r--src/widgets/animation/qguivariantanimation.cpp4
-rw-r--r--src/widgets/dialogs/qcolordialog.cpp25
-rw-r--r--src/widgets/dialogs/qcolordialog.h5
-rw-r--r--src/widgets/dialogs/qcolordialog_mac.mm4
-rw-r--r--src/widgets/dialogs/qcolordialog_p.h4
-rw-r--r--src/widgets/dialogs/qdialog.cpp45
-rw-r--r--src/widgets/dialogs/qdialog.h5
-rw-r--r--src/widgets/dialogs/qdialog_p.h6
-rw-r--r--src/widgets/dialogs/qerrormessage.cpp16
-rw-r--r--src/widgets/dialogs/qerrormessage.h5
-rw-r--r--src/widgets/dialogs/qfiledialog.cpp154
-rw-r--r--src/widgets/dialogs/qfiledialog.h13
-rw-r--r--src/widgets/dialogs/qfiledialog.ui4
-rw-r--r--src/widgets/dialogs/qfiledialog_embedded.ui4
-rw-r--r--src/widgets/dialogs/qfiledialog_mac.mm4
-rw-r--r--src/widgets/dialogs/qfiledialog_p.h26
-rw-r--r--src/widgets/dialogs/qfileinfogatherer.cpp6
-rw-r--r--src/widgets/dialogs/qfileinfogatherer_p.h4
-rw-r--r--src/widgets/dialogs/qfilesystemmodel.cpp34
-rw-r--r--src/widgets/dialogs/qfilesystemmodel.h5
-rw-r--r--src/widgets/dialogs/qfilesystemmodel_p.h4
-rw-r--r--src/widgets/dialogs/qfontdialog.cpp31
-rw-r--r--src/widgets/dialogs/qfontdialog.h17
-rw-r--r--src/widgets/dialogs/qfontdialog_mac.mm4
-rw-r--r--src/widgets/dialogs/qfontdialog_p.h4
-rw-r--r--src/widgets/dialogs/qfscompleter_p.h6
-rw-r--r--src/widgets/dialogs/qinputdialog.cpp51
-rw-r--r--src/widgets/dialogs/qinputdialog.h37
-rw-r--r--src/widgets/dialogs/qmessagebox.cpp65
-rw-r--r--src/widgets/dialogs/qmessagebox.h12
-rw-r--r--src/widgets/dialogs/qnspanelproxy_mac.mm4
-rw-r--r--src/widgets/dialogs/qprogressdialog.cpp15
-rw-r--r--src/widgets/dialogs/qprogressdialog.h5
-rw-r--r--src/widgets/dialogs/qsidebar.cpp4
-rw-r--r--src/widgets/dialogs/qsidebar_p.h4
-rw-r--r--src/widgets/dialogs/qwizard.cpp21
-rw-r--r--src/widgets/dialogs/qwizard.h9
-rw-r--r--src/widgets/dialogs/qwizard_win.cpp25
-rw-r--r--src/widgets/dialogs/qwizard_win_p.h6
-rw-r--r--src/widgets/effects/qgraphicseffect.cpp4
-rw-r--r--src/widgets/effects/qgraphicseffect.h5
-rw-r--r--src/widgets/effects/qgraphicseffect_p.h4
-rw-r--r--src/widgets/effects/qpixmapfilter.cpp4
-rw-r--r--src/widgets/effects/qpixmapfilter_p.h5
-rw-r--r--src/widgets/graphicsview/graphicsview.pri1
-rw-r--r--src/widgets/graphicsview/qgraph_p.h4
-rw-r--r--src/widgets/graphicsview/qgraphicsanchorlayout.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicsanchorlayout.h7
-rw-r--r--src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicsanchorlayout_p.h4
-rw-r--r--src/widgets/graphicsview/qgraphicsgridlayout.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicsgridlayout.h7
-rw-r--r--src/widgets/graphicsview/qgraphicsitem.cpp24
-rw-r--r--src/widgets/graphicsview/qgraphicsitem.h9
-rw-r--r--src/widgets/graphicsview/qgraphicsitem_p.h6
-rw-r--r--src/widgets/graphicsview/qgraphicsitemanimation.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicsitemanimation.h7
-rw-r--r--src/widgets/graphicsview/qgraphicslayout.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicslayout.h9
-rw-r--r--src/widgets/graphicsview/qgraphicslayout_p.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicslayout_p.h6
-rw-r--r--src/widgets/graphicsview/qgraphicslayoutitem.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicslayoutitem.h9
-rw-r--r--src/widgets/graphicsview/qgraphicslayoutitem_p.h4
-rw-r--r--src/widgets/graphicsview/qgraphicslinearlayout.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicslinearlayout.h7
-rw-r--r--src/widgets/graphicsview/qgraphicsproxywidget.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicsproxywidget.h7
-rw-r--r--src/widgets/graphicsview/qgraphicsproxywidget_p.h6
-rw-r--r--src/widgets/graphicsview/qgraphicsscene.cpp10
-rw-r--r--src/widgets/graphicsview/qgraphicsscene.h7
-rw-r--r--src/widgets/graphicsview/qgraphicsscene_bsp.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicsscene_bsp_p.h6
-rw-r--r--src/widgets/graphicsview/qgraphicsscene_p.h6
-rw-r--r--src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicsscenebsptreeindex_p.h6
-rw-r--r--src/widgets/graphicsview/qgraphicssceneevent.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicssceneevent.h7
-rw-r--r--src/widgets/graphicsview/qgraphicssceneindex.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicssceneindex_p.h7
-rw-r--r--src/widgets/graphicsview/qgraphicsscenelinearindex.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicsscenelinearindex_p.h7
-rw-r--r--src/widgets/graphicsview/qgraphicstransform.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicstransform.h5
-rw-r--r--src/widgets/graphicsview/qgraphicstransform_p.h4
-rw-r--r--src/widgets/graphicsview/qgraphicsview.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicsview.h7
-rw-r--r--src/widgets/graphicsview/qgraphicsview_p.h6
-rw-r--r--src/widgets/graphicsview/qgraphicswidget.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicswidget.h11
-rw-r--r--src/widgets/graphicsview/qgraphicswidget_p.cpp4
-rw-r--r--src/widgets/graphicsview/qgraphicswidget_p.h8
-rw-r--r--src/widgets/graphicsview/qgridlayoutengine.cpp4
-rw-r--r--src/widgets/graphicsview/qgridlayoutengine_p.h4
-rw-r--r--src/widgets/graphicsview/qsimplex_p.cpp4
-rw-r--r--src/widgets/graphicsview/qsimplex_p.h4
-rw-r--r--src/widgets/itemviews/qabstractitemdelegate.cpp19
-rw-r--r--src/widgets/itemviews/qabstractitemdelegate.h7
-rw-r--r--src/widgets/itemviews/qabstractitemview.cpp57
-rw-r--r--src/widgets/itemviews/qabstractitemview.h7
-rw-r--r--src/widgets/itemviews/qabstractitemview_p.h13
-rw-r--r--src/widgets/itemviews/qbsptree.cpp4
-rw-r--r--src/widgets/itemviews/qbsptree_p.h4
-rw-r--r--src/widgets/itemviews/qcolumnview.cpp4
-rw-r--r--src/widgets/itemviews/qcolumnview.h5
-rw-r--r--src/widgets/itemviews/qcolumnview_p.h4
-rw-r--r--src/widgets/itemviews/qcolumnviewgrip.cpp4
-rw-r--r--src/widgets/itemviews/qcolumnviewgrip_p.h4
-rw-r--r--src/widgets/itemviews/qdatawidgetmapper.cpp4
-rw-r--r--src/widgets/itemviews/qdatawidgetmapper.h5
-rw-r--r--src/widgets/itemviews/qdirmodel.cpp14
-rw-r--r--src/widgets/itemviews/qdirmodel.h5
-rw-r--r--src/widgets/itemviews/qfileiconprovider.cpp16
-rw-r--r--src/widgets/itemviews/qfileiconprovider.h5
-rw-r--r--src/widgets/itemviews/qheaderview.cpp22
-rw-r--r--src/widgets/itemviews/qheaderview.h5
-rw-r--r--src/widgets/itemviews/qheaderview_p.h4
-rw-r--r--src/widgets/itemviews/qitemdelegate.cpp11
-rw-r--r--src/widgets/itemviews/qitemdelegate.h5
-rw-r--r--src/widgets/itemviews/qitemeditorfactory.cpp40
-rw-r--r--src/widgets/itemviews/qitemeditorfactory.h13
-rw-r--r--src/widgets/itemviews/qitemeditorfactory_p.h4
-rw-r--r--src/widgets/itemviews/qlistview.cpp10
-rw-r--r--src/widgets/itemviews/qlistview.h5
-rw-r--r--src/widgets/itemviews/qlistview_p.h4
-rw-r--r--src/widgets/itemviews/qlistwidget.cpp4
-rw-r--r--src/widgets/itemviews/qlistwidget.h5
-rw-r--r--src/widgets/itemviews/qlistwidget_p.h4
-rw-r--r--src/widgets/itemviews/qproxymodel.cpp4
-rw-r--r--src/widgets/itemviews/qproxymodel.h5
-rw-r--r--src/widgets/itemviews/qproxymodel_p.h4
-rw-r--r--src/widgets/itemviews/qstandarditemmodel.cpp13
-rw-r--r--src/widgets/itemviews/qstandarditemmodel.h7
-rw-r--r--src/widgets/itemviews/qstandarditemmodel_p.h4
-rw-r--r--src/widgets/itemviews/qstyleditemdelegate.cpp11
-rw-r--r--src/widgets/itemviews/qstyleditemdelegate.h5
-rw-r--r--src/widgets/itemviews/qtableview.cpp16
-rw-r--r--src/widgets/itemviews/qtableview.h5
-rw-r--r--src/widgets/itemviews/qtableview_p.h4
-rw-r--r--src/widgets/itemviews/qtablewidget.cpp4
-rw-r--r--src/widgets/itemviews/qtablewidget.h5
-rw-r--r--src/widgets/itemviews/qtablewidget_p.h4
-rw-r--r--src/widgets/itemviews/qtreeview.cpp14
-rw-r--r--src/widgets/itemviews/qtreeview.h5
-rw-r--r--src/widgets/itemviews/qtreeview_p.h4
-rw-r--r--src/widgets/itemviews/qtreewidget.cpp4
-rw-r--r--src/widgets/itemviews/qtreewidget.h5
-rw-r--r--src/widgets/itemviews/qtreewidget_p.h4
-rw-r--r--src/widgets/itemviews/qtreewidgetitemiterator.cpp4
-rw-r--r--src/widgets/itemviews/qtreewidgetitemiterator.h5
-rw-r--r--src/widgets/itemviews/qtreewidgetitemiterator_p.h4
-rw-r--r--src/widgets/itemviews/qwidgetitemdata_p.h4
-rw-r--r--src/widgets/kernel/kernel.pri8
-rw-r--r--src/widgets/kernel/qaction.cpp8
-rw-r--r--src/widgets/kernel/qaction.h5
-rw-r--r--src/widgets/kernel/qaction_p.h4
-rw-r--r--src/widgets/kernel/qactiongroup.cpp4
-rw-r--r--src/widgets/kernel/qactiongroup.h5
-rw-r--r--src/widgets/kernel/qapplication.cpp161
-rw-r--r--src/widgets/kernel/qapplication.h17
-rw-r--r--src/widgets/kernel/qapplication_p.h31
-rw-r--r--src/widgets/kernel/qapplication_qpa.cpp16
-rw-r--r--src/widgets/kernel/qboxlayout.cpp4
-rw-r--r--src/widgets/kernel/qboxlayout.h5
-rw-r--r--src/widgets/kernel/qdesktopwidget.cpp4
-rw-r--r--src/widgets/kernel/qdesktopwidget.h5
-rw-r--r--src/widgets/kernel/qdesktopwidget.qdoc4
-rw-r--r--src/widgets/kernel/qdesktopwidget_qpa.cpp4
-rw-r--r--src/widgets/kernel/qdesktopwidget_qpa_p.h4
-rw-r--r--src/widgets/kernel/qformlayout.cpp11
-rw-r--r--src/widgets/kernel/qformlayout.h5
-rw-r--r--src/widgets/kernel/qgesture.cpp4
-rw-r--r--src/widgets/kernel/qgesture.h5
-rw-r--r--src/widgets/kernel/qgesture_p.h4
-rw-r--r--src/widgets/kernel/qgesturemanager.cpp4
-rw-r--r--src/widgets/kernel/qgesturemanager_p.h4
-rw-r--r--src/widgets/kernel/qgesturerecognizer.cpp4
-rw-r--r--src/widgets/kernel/qgesturerecognizer.h5
-rw-r--r--src/widgets/kernel/qgridlayout.cpp4
-rw-r--r--src/widgets/kernel/qgridlayout.h5
-rw-r--r--src/widgets/kernel/qguiplatformplugin.cpp6
-rw-r--r--src/widgets/kernel/qguiplatformplugin_p.h5
-rw-r--r--src/widgets/kernel/qicon.cpp86
-rw-r--r--src/widgets/kernel/qicon.h7
-rw-r--r--src/widgets/kernel/qicon_p.h21
-rw-r--r--src/widgets/kernel/qiconengine.cpp96
-rw-r--r--src/widgets/kernel/qiconengine.h33
-rw-r--r--src/widgets/kernel/qiconengineplugin.cpp71
-rw-r--r--src/widgets/kernel/qiconengineplugin.h34
-rw-r--r--src/widgets/kernel/qiconloader.cpp27
-rw-r--r--src/widgets/kernel/qiconloader_p.h8
-rw-r--r--src/widgets/kernel/qinputcontext.cpp408
-rw-r--r--src/widgets/kernel/qinputcontext.h128
-rw-r--r--src/widgets/kernel/qlayout.cpp4
-rw-r--r--src/widgets/kernel/qlayout.h5
-rw-r--r--src/widgets/kernel/qlayout_p.h4
-rw-r--r--src/widgets/kernel/qlayoutengine.cpp4
-rw-r--r--src/widgets/kernel/qlayoutengine_p.h4
-rw-r--r--src/widgets/kernel/qlayoutitem.cpp4
-rw-r--r--src/widgets/kernel/qlayoutitem.h5
-rw-r--r--src/widgets/kernel/qplatformdialoghelper_qpa.cpp556
-rw-r--r--src/widgets/kernel/qplatformdialoghelper_qpa.h315
-rw-r--r--src/widgets/kernel/qplatformmenu_qpa.cpp4
-rw-r--r--src/widgets/kernel/qplatformmenu_qpa.h79
-rw-r--r--src/widgets/kernel/qshortcut.cpp4
-rw-r--r--src/widgets/kernel/qshortcut.h5
-rw-r--r--src/widgets/kernel/qsizepolicy.h5
-rw-r--r--src/widgets/kernel/qsizepolicy.qdoc4
-rw-r--r--src/widgets/kernel/qsoftkeymanager.cpp53
-rw-r--r--src/widgets/kernel/qsoftkeymanager_common_p.h7
-rw-r--r--src/widgets/kernel/qsoftkeymanager_p.h7
-rw-r--r--src/widgets/kernel/qstackedlayout.cpp4
-rw-r--r--src/widgets/kernel/qstackedlayout.h5
-rw-r--r--src/widgets/kernel/qstandardgestures.cpp4
-rw-r--r--src/widgets/kernel/qstandardgestures_p.h4
-rw-r--r--src/widgets/kernel/qt_widgets_pch.h4
-rw-r--r--src/widgets/kernel/qtooltip.cpp4
-rw-r--r--src/widgets/kernel/qtooltip.h5
-rw-r--r--src/widgets/kernel/qwhatsthis.cpp8
-rw-r--r--src/widgets/kernel/qwhatsthis.h5
-rw-r--r--src/widgets/kernel/qwidget.cpp228
-rw-r--r--src/widgets/kernel/qwidget.h22
-rw-r--r--src/widgets/kernel/qwidget_p.h10
-rw-r--r--src/widgets/kernel/qwidget_qpa.cpp4
-rw-r--r--src/widgets/kernel/qwidgetaction.cpp4
-rw-r--r--src/widgets/kernel/qwidgetaction.h5
-rw-r--r--src/widgets/kernel/qwidgetaction_p.h4
-rw-r--r--src/widgets/kernel/qwidgetbackingstore.cpp4
-rw-r--r--src/widgets/kernel/qwidgetbackingstore_p.h4
-rw-r--r--src/widgets/kernel/qwidgetsvariant.cpp4
-rw-r--r--src/widgets/kernel/qwidgetwindow_qpa.cpp9
-rw-r--r--src/widgets/kernel/qwidgetwindow_qpa_p.h6
-rw-r--r--src/widgets/platforms/mac/qapplication_mac.mm1878
-rw-r--r--src/widgets/platforms/mac/qclipboard_mac.cpp632
-rw-r--r--src/widgets/platforms/mac/qcocoaintrospection_mac.mm119
-rw-r--r--src/widgets/platforms/mac/qcocoaintrospection_p.h84
-rw-r--r--src/widgets/platforms/mac/qcocoapanel_mac.mm68
-rw-r--r--src/widgets/platforms/mac/qcocoapanel_mac_p.h81
-rw-r--r--src/widgets/platforms/mac/qcocoasharedwindowmethods_mac_p.h610
-rw-r--r--src/widgets/platforms/mac/qcocoaview_mac.mm1386
-rw-r--r--src/widgets/platforms/mac/qcocoaview_mac_p.h85
-rw-r--r--src/widgets/platforms/mac/qcocoawindow_mac.mm88
-rw-r--r--src/widgets/platforms/mac/qcocoawindow_mac_p.h95
-rw-r--r--src/widgets/platforms/mac/qcocoawindowcustomthemeframe_mac.mm60
-rw-r--r--src/widgets/platforms/mac/qcocoawindowcustomthemeframe_mac_p.h61
-rw-r--r--src/widgets/platforms/mac/qcocoawindowdelegate_mac.mm437
-rw-r--r--src/widgets/platforms/mac/qcocoawindowdelegate_mac_p.h108
-rw-r--r--src/widgets/platforms/mac/qcolormap_mac.cpp111
-rw-r--r--src/widgets/platforms/mac/qdesktopwidget_mac.mm257
-rw-r--r--src/widgets/platforms/mac/qdesktopwidget_mac_p.h75
-rw-r--r--src/widgets/platforms/mac/qdnd_mac.mm261
-rw-r--r--src/widgets/platforms/mac/qeventdispatcher_mac.mm1127
-rw-r--r--src/widgets/platforms/mac/qeventdispatcher_mac_p.h218
-rw-r--r--src/widgets/platforms/mac/qkeymapper_mac.cpp963
-rw-r--r--src/widgets/platforms/mac/qmacdefines_mac.h158
-rw-r--r--src/widgets/platforms/mac/qmacgesturerecognizer_mac.mm270
-rw-r--r--src/widgets/platforms/mac/qmacgesturerecognizer_mac_p.h104
-rw-r--r--src/widgets/platforms/mac/qmacinputcontext_mac.cpp124
-rw-r--r--src/widgets/platforms/mac/qmacinputcontext_p.h97
-rw-r--r--src/widgets/platforms/mac/qmime_mac.cpp1126
-rw-r--r--src/widgets/platforms/mac/qnsframeview_mac_p.h154
-rw-r--r--src/widgets/platforms/mac/qnsthemeframe_mac_p.h246
-rw-r--r--src/widgets/platforms/mac/qnstitledframe_mac_p.h205
-rw-r--r--src/widgets/platforms/mac/qpaintdevice_mac.cpp103
-rw-r--r--src/widgets/platforms/mac/qpaintengine_mac.cpp1538
-rw-r--r--src/widgets/platforms/mac/qpaintengine_mac_p.h256
-rw-r--r--src/widgets/platforms/mac/qpixmap_mac.cpp1062
-rw-r--r--src/widgets/platforms/mac/qpixmap_mac_p.h134
-rw-r--r--src/widgets/platforms/mac/qprintengine_mac.mm840
-rw-r--r--src/widgets/platforms/mac/qprintengine_mac_p.h162
-rw-r--r--src/widgets/platforms/mac/qprinterinfo_mac.cpp120
-rw-r--r--src/widgets/platforms/mac/qregion_mac.cpp50
-rw-r--r--src/widgets/platforms/mac/qt_cocoa_helpers_mac.mm1438
-rw-r--r--src/widgets/platforms/mac/qt_cocoa_helpers_mac_p.h308
-rw-r--r--src/widgets/platforms/mac/qt_mac.cpp129
-rw-r--r--src/widgets/platforms/mac/qt_mac_p.h284
-rw-r--r--src/widgets/platforms/mac/qwidget_mac.mm3089
-rw-r--r--src/widgets/statemachine/qbasickeyeventtransition.cpp4
-rw-r--r--src/widgets/statemachine/qbasickeyeventtransition_p.h4
-rw-r--r--src/widgets/statemachine/qbasicmouseeventtransition.cpp4
-rw-r--r--src/widgets/statemachine/qbasicmouseeventtransition_p.h4
-rw-r--r--src/widgets/statemachine/qguistatemachine.cpp10
-rw-r--r--src/widgets/statemachine/qkeyeventtransition.cpp4
-rw-r--r--src/widgets/statemachine/qkeyeventtransition.h5
-rw-r--r--src/widgets/statemachine/qmouseeventtransition.cpp4
-rw-r--r--src/widgets/statemachine/qmouseeventtransition.h5
-rw-r--r--src/widgets/styles/qcdestyle.cpp4
-rw-r--r--src/widgets/styles/qcdestyle.h5
-rw-r--r--src/widgets/styles/qcleanlooksstyle.cpp4
-rw-r--r--src/widgets/styles/qcleanlooksstyle.h5
-rw-r--r--src/widgets/styles/qcleanlooksstyle_p.h4
-rw-r--r--src/widgets/styles/qcommonstyle.cpp4
-rw-r--r--src/widgets/styles/qcommonstyle.h5
-rw-r--r--src/widgets/styles/qcommonstyle_p.h4
-rw-r--r--src/widgets/styles/qcommonstylepixmaps_p.h4
-rw-r--r--src/widgets/styles/qdrawutil.cpp4
-rw-r--r--src/widgets/styles/qdrawutil.h5
-rw-r--r--src/widgets/styles/qgtkpainter.cpp4
-rw-r--r--src/widgets/styles/qgtkpainter_p.h4
-rw-r--r--src/widgets/styles/qgtkstyle.cpp4
-rw-r--r--src/widgets/styles/qgtkstyle.h5
-rw-r--r--src/widgets/styles/qgtkstyle_p.cpp4
-rw-r--r--src/widgets/styles/qgtkstyle_p.h4
-rw-r--r--src/widgets/styles/qmacstyle.qdoc4
-rw-r--r--src/widgets/styles/qmacstyle_mac.h5
-rw-r--r--src/widgets/styles/qmacstyle_mac.mm10
-rw-r--r--src/widgets/styles/qmacstyle_mac_p.h4
-rw-r--r--src/widgets/styles/qmacstylepixmaps_mac_p.h4
-rw-r--r--src/widgets/styles/qmotifstyle.cpp23
-rw-r--r--src/widgets/styles/qmotifstyle.h5
-rw-r--r--src/widgets/styles/qmotifstyle_p.h4
-rw-r--r--src/widgets/styles/qplastiquestyle.cpp7
-rw-r--r--src/widgets/styles/qplastiquestyle.h5
-rw-r--r--src/widgets/styles/qproxystyle.cpp4
-rw-r--r--src/widgets/styles/qproxystyle.h5
-rw-r--r--src/widgets/styles/qproxystyle_p.h4
-rw-r--r--src/widgets/styles/qstyle.cpp6
-rw-r--r--src/widgets/styles/qstyle.h5
-rw-r--r--src/widgets/styles/qstyle_p.h4
-rw-r--r--src/widgets/styles/qstylefactory.cpp16
-rw-r--r--src/widgets/styles/qstylefactory.h5
-rw-r--r--src/widgets/styles/qstylehelper.cpp4
-rw-r--r--src/widgets/styles/qstylehelper_p.h4
-rw-r--r--src/widgets/styles/qstyleoption.cpp1607
-rw-r--r--src/widgets/styles/qstyleoption.h269
-rw-r--r--src/widgets/styles/qstylepainter.cpp4
-rw-r--r--src/widgets/styles/qstylepainter.h5
-rw-r--r--src/widgets/styles/qstyleplugin.cpp4
-rw-r--r--src/widgets/styles/qstyleplugin.h7
-rw-r--r--src/widgets/styles/qstylesheetstyle.cpp4
-rw-r--r--src/widgets/styles/qstylesheetstyle_default.cpp7
-rw-r--r--src/widgets/styles/qstylesheetstyle_p.h4
-rw-r--r--src/widgets/styles/qwindowscestyle.cpp4
-rw-r--r--src/widgets/styles/qwindowscestyle.h5
-rw-r--r--src/widgets/styles/qwindowscestyle_p.h4
-rw-r--r--src/widgets/styles/qwindowsmobilestyle.cpp4
-rw-r--r--src/widgets/styles/qwindowsmobilestyle.h5
-rw-r--r--src/widgets/styles/qwindowsmobilestyle_p.h4
-rw-r--r--src/widgets/styles/qwindowsstyle.cpp4
-rw-r--r--src/widgets/styles/qwindowsstyle.h5
-rw-r--r--src/widgets/styles/qwindowsstyle_p.h4
-rw-r--r--src/widgets/styles/qwindowsvistastyle.cpp4
-rw-r--r--src/widgets/styles/qwindowsvistastyle.h5
-rw-r--r--src/widgets/styles/qwindowsvistastyle_p.h4
-rw-r--r--src/widgets/styles/qwindowsxpstyle.cpp110
-rw-r--r--src/widgets/styles/qwindowsxpstyle.h5
-rw-r--r--src/widgets/styles/qwindowsxpstyle_p.h9
-rw-r--r--src/widgets/util/qcolormap.h5
-rw-r--r--src/widgets/util/qcolormap.qdoc4
-rw-r--r--src/widgets/util/qcolormap_qpa.cpp4
-rw-r--r--src/widgets/util/qcompleter.cpp21
-rw-r--r--src/widgets/util/qcompleter.h5
-rw-r--r--src/widgets/util/qcompleter_p.h4
-rw-r--r--src/widgets/util/qflickgesture.cpp4
-rw-r--r--src/widgets/util/qflickgesture_p.h4
-rw-r--r--src/widgets/util/qscroller.cpp17
-rw-r--r--src/widgets/util/qscroller.h5
-rw-r--r--src/widgets/util/qscroller_mac.mm4
-rw-r--r--src/widgets/util/qscroller_p.h4
-rw-r--r--src/widgets/util/qscrollerproperties.cpp4
-rw-r--r--src/widgets/util/qscrollerproperties.h5
-rw-r--r--src/widgets/util/qscrollerproperties_p.h4
-rw-r--r--src/widgets/util/qsystemtrayicon.cpp4
-rw-r--r--src/widgets/util/qsystemtrayicon.h5
-rw-r--r--src/widgets/util/qsystemtrayicon_mac.mm4
-rw-r--r--src/widgets/util/qsystemtrayicon_p.h4
-rw-r--r--src/widgets/util/qsystemtrayicon_qpa.cpp4
-rw-r--r--src/widgets/util/qsystemtrayicon_win.cpp4
-rw-r--r--src/widgets/util/qsystemtrayicon_wince.cpp4
-rw-r--r--src/widgets/util/qsystemtrayicon_x11.cpp4
-rw-r--r--src/widgets/util/qundogroup.cpp4
-rw-r--r--src/widgets/util/qundogroup.h5
-rw-r--r--src/widgets/util/qundostack.cpp4
-rw-r--r--src/widgets/util/qundostack.h5
-rw-r--r--src/widgets/util/qundostack_p.h4
-rw-r--r--src/widgets/util/qundoview.cpp4
-rw-r--r--src/widgets/util/qundoview.h5
-rw-r--r--src/widgets/widgets/qabstractbutton.cpp8
-rw-r--r--src/widgets/widgets/qabstractbutton.h5
-rw-r--r--src/widgets/widgets/qabstractbutton_p.h4
-rw-r--r--src/widgets/widgets/qabstractscrollarea.cpp18
-rw-r--r--src/widgets/widgets/qabstractscrollarea.h5
-rw-r--r--src/widgets/widgets/qabstractscrollarea_p.h4
-rw-r--r--src/widgets/widgets/qabstractslider.cpp6
-rw-r--r--src/widgets/widgets/qabstractslider.h5
-rw-r--r--src/widgets/widgets/qabstractslider_p.h4
-rw-r--r--src/widgets/widgets/qabstractspinbox.cpp8
-rw-r--r--src/widgets/widgets/qabstractspinbox.h5
-rw-r--r--src/widgets/widgets/qabstractspinbox_p.h4
-rw-r--r--src/widgets/widgets/qbuttongroup.cpp4
-rw-r--r--src/widgets/widgets/qbuttongroup.h5
-rw-r--r--src/widgets/widgets/qcalendartextnavigator_p.h4
-rw-r--r--src/widgets/widgets/qcalendarwidget.cpp4
-rw-r--r--src/widgets/widgets/qcalendarwidget.h5
-rw-r--r--src/widgets/widgets/qcheckbox.cpp4
-rw-r--r--src/widgets/widgets/qcheckbox.h5
-rw-r--r--src/widgets/widgets/qcocoatoolbardelegate_mac.mm6
-rw-r--r--src/widgets/widgets/qcocoatoolbardelegate_mac_p.h4
-rw-r--r--src/widgets/widgets/qcombobox.cpp82
-rw-r--r--src/widgets/widgets/qcombobox.h5
-rw-r--r--src/widgets/widgets/qcombobox_p.h8
-rw-r--r--src/widgets/widgets/qcommandlinkbutton.cpp4
-rw-r--r--src/widgets/widgets/qcommandlinkbutton.h5
-rw-r--r--src/widgets/widgets/qdatetimeedit.cpp4
-rw-r--r--src/widgets/widgets/qdatetimeedit.h5
-rw-r--r--src/widgets/widgets/qdatetimeedit_p.h4
-rw-r--r--src/widgets/widgets/qdial.cpp4
-rw-r--r--src/widgets/widgets/qdial.h5
-rw-r--r--src/widgets/widgets/qdialogbuttonbox.cpp4
-rw-r--r--src/widgets/widgets/qdialogbuttonbox.h5
-rw-r--r--src/widgets/widgets/qdockarealayout.cpp4
-rw-r--r--src/widgets/widgets/qdockarealayout_p.h4
-rw-r--r--src/widgets/widgets/qdockwidget.cpp4
-rw-r--r--src/widgets/widgets/qdockwidget.h5
-rw-r--r--src/widgets/widgets/qdockwidget_p.h4
-rw-r--r--src/widgets/widgets/qeffects.cpp4
-rw-r--r--src/widgets/widgets/qeffects_p.h4
-rw-r--r--src/widgets/widgets/qfocusframe.cpp4
-rw-r--r--src/widgets/widgets/qfocusframe.h5
-rw-r--r--src/widgets/widgets/qfontcombobox.cpp4
-rw-r--r--src/widgets/widgets/qfontcombobox.h5
-rw-r--r--src/widgets/widgets/qframe.cpp4
-rw-r--r--src/widgets/widgets/qframe.h5
-rw-r--r--src/widgets/widgets/qframe_p.h4
-rw-r--r--src/widgets/widgets/qgroupbox.cpp6
-rw-r--r--src/widgets/widgets/qgroupbox.h5
-rw-r--r--src/widgets/widgets/qlabel.cpp6
-rw-r--r--src/widgets/widgets/qlabel.h5
-rw-r--r--src/widgets/widgets/qlabel_p.h4
-rw-r--r--src/widgets/widgets/qlcdnumber.cpp22
-rw-r--r--src/widgets/widgets/qlcdnumber.h11
-rw-r--r--src/widgets/widgets/qlineedit.cpp10
-rw-r--r--src/widgets/widgets/qlineedit.h5
-rw-r--r--src/widgets/widgets/qlineedit_p.cpp19
-rw-r--r--src/widgets/widgets/qlineedit_p.h6
-rw-r--r--src/widgets/widgets/qmaccocoaviewcontainer_mac.h5
-rw-r--r--src/widgets/widgets/qmaccocoaviewcontainer_mac.mm4
-rw-r--r--src/widgets/widgets/qmacnativewidget_mac.h5
-rw-r--r--src/widgets/widgets/qmacnativewidget_mac.mm4
-rw-r--r--src/widgets/widgets/qmainwindow.cpp4
-rw-r--r--src/widgets/widgets/qmainwindow.h5
-rw-r--r--src/widgets/widgets/qmainwindowlayout.cpp4
-rw-r--r--src/widgets/widgets/qmainwindowlayout_mac.mm16
-rw-r--r--src/widgets/widgets/qmainwindowlayout_p.h4
-rw-r--r--src/widgets/widgets/qmdiarea.cpp4
-rw-r--r--src/widgets/widgets/qmdiarea.h5
-rw-r--r--src/widgets/widgets/qmdiarea_p.h4
-rw-r--r--src/widgets/widgets/qmdisubwindow.cpp4
-rw-r--r--src/widgets/widgets/qmdisubwindow.h5
-rw-r--r--src/widgets/widgets/qmdisubwindow_p.h4
-rw-r--r--src/widgets/widgets/qmenu.cpp28
-rw-r--r--src/widgets/widgets/qmenu.h5
-rw-r--r--src/widgets/widgets/qmenu_p.h57
-rw-r--r--src/widgets/widgets/qmenu_wince.cpp4
-rw-r--r--src/widgets/widgets/qmenu_wince_resource_p.h4
-rw-r--r--src/widgets/widgets/qmenubar.cpp60
-rw-r--r--src/widgets/widgets/qmenubar.h15
-rw-r--r--src/widgets/widgets/qmenubar_p.h47
-rw-r--r--src/widgets/widgets/qplaintextedit.cpp4
-rw-r--r--src/widgets/widgets/qplaintextedit.h5
-rw-r--r--src/widgets/widgets/qplaintextedit_p.h4
-rw-r--r--src/widgets/widgets/qprogressbar.cpp6
-rw-r--r--src/widgets/widgets/qprogressbar.h5
-rw-r--r--src/widgets/widgets/qpushbutton.cpp6
-rw-r--r--src/widgets/widgets/qpushbutton.h5
-rw-r--r--src/widgets/widgets/qpushbutton_p.h4
-rw-r--r--src/widgets/widgets/qradiobutton.cpp4
-rw-r--r--src/widgets/widgets/qradiobutton.h5
-rw-r--r--src/widgets/widgets/qrubberband.cpp4
-rw-r--r--src/widgets/widgets/qrubberband.h5
-rw-r--r--src/widgets/widgets/qscrollarea.cpp4
-rw-r--r--src/widgets/widgets/qscrollarea.h5
-rw-r--r--src/widgets/widgets/qscrollarea_p.h4
-rw-r--r--src/widgets/widgets/qscrollbar.cpp4
-rw-r--r--src/widgets/widgets/qscrollbar.h5
-rw-r--r--src/widgets/widgets/qsizegrip.cpp54
-rw-r--r--src/widgets/widgets/qsizegrip.h8
-rw-r--r--src/widgets/widgets/qslider.cpp4
-rw-r--r--src/widgets/widgets/qslider.h5
-rw-r--r--src/widgets/widgets/qspinbox.cpp8
-rw-r--r--src/widgets/widgets/qspinbox.h5
-rw-r--r--src/widgets/widgets/qsplashscreen.cpp4
-rw-r--r--src/widgets/widgets/qsplashscreen.h5
-rw-r--r--src/widgets/widgets/qsplitter.cpp4
-rw-r--r--src/widgets/widgets/qsplitter.h5
-rw-r--r--src/widgets/widgets/qsplitter_p.h4
-rw-r--r--src/widgets/widgets/qstackedwidget.cpp4
-rw-r--r--src/widgets/widgets/qstackedwidget.h5
-rw-r--r--src/widgets/widgets/qstatusbar.cpp4
-rw-r--r--src/widgets/widgets/qstatusbar.h5
-rw-r--r--src/widgets/widgets/qtabbar.cpp47
-rw-r--r--src/widgets/widgets/qtabbar.h5
-rw-r--r--src/widgets/widgets/qtabbar_p.h4
-rw-r--r--src/widgets/widgets/qtabwidget.cpp4
-rw-r--r--src/widgets/widgets/qtabwidget.h5
-rw-r--r--src/widgets/widgets/qtextbrowser.cpp4
-rw-r--r--src/widgets/widgets/qtextbrowser.h5
-rw-r--r--src/widgets/widgets/qtextedit.cpp4
-rw-r--r--src/widgets/widgets/qtextedit.h5
-rw-r--r--src/widgets/widgets/qtextedit_p.h4
-rw-r--r--src/widgets/widgets/qtoolbar.cpp4
-rw-r--r--src/widgets/widgets/qtoolbar.h5
-rw-r--r--src/widgets/widgets/qtoolbar_p.h4
-rw-r--r--src/widgets/widgets/qtoolbararealayout.cpp4
-rw-r--r--src/widgets/widgets/qtoolbararealayout_p.h4
-rw-r--r--src/widgets/widgets/qtoolbarextension.cpp4
-rw-r--r--src/widgets/widgets/qtoolbarextension_p.h4
-rw-r--r--src/widgets/widgets/qtoolbarlayout.cpp4
-rw-r--r--src/widgets/widgets/qtoolbarlayout_p.h4
-rw-r--r--src/widgets/widgets/qtoolbarseparator.cpp4
-rw-r--r--src/widgets/widgets/qtoolbarseparator_p.h4
-rw-r--r--src/widgets/widgets/qtoolbox.cpp4
-rw-r--r--src/widgets/widgets/qtoolbox.h5
-rw-r--r--src/widgets/widgets/qtoolbutton.cpp4
-rw-r--r--src/widgets/widgets/qtoolbutton.h5
-rw-r--r--src/widgets/widgets/qwidgetanimator.cpp4
-rw-r--r--src/widgets/widgets/qwidgetanimator_p.h4
-rw-r--r--src/widgets/widgets/qwidgetlinecontrol.cpp10
-rw-r--r--src/widgets/widgets/qwidgetlinecontrol_p.h11
-rw-r--r--src/widgets/widgets/qwidgetresizehandler.cpp7
-rw-r--r--src/widgets/widgets/qwidgetresizehandler_p.h4
-rw-r--r--src/widgets/widgets/qwidgettextcontrol.cpp12
-rw-r--r--src/widgets/widgets/qwidgettextcontrol_p.h5
-rw-r--r--src/widgets/widgets/qwidgettextcontrol_p_p.h4
-rw-r--r--src/widgets/widgets/qworkspace.cpp4
-rw-r--r--src/widgets/widgets/qworkspace.h5
-rw-r--r--src/winmain/qtmain_win.cpp4
-rw-r--r--src/xml/dom/qdom.cpp9
-rw-r--r--src/xml/dom/qdom.h5
-rw-r--r--src/xml/sax/qxml.cpp4
-rw-r--r--src/xml/sax/qxml.h5
-rw-r--r--src/xml/xml.pro2
-rw-r--r--sync.profile4
-rw-r--r--tests/auto/auto.pro5
-rw-r--r--tests/auto/compilerwarnings/data/test_cpp.txt4
-rw-r--r--tests/auto/concurrent/concurrent.pro12
-rw-r--r--tests/auto/concurrent/qfuture/.gitignore (renamed from tests/auto/corelib/concurrent/qfuture/.gitignore)0
-rw-r--r--tests/auto/concurrent/qfuture/qfuture.pro5
-rw-r--r--tests/auto/concurrent/qfuture/tst_qfuture.cpp1438
-rw-r--r--tests/auto/concurrent/qfuturesynchronizer/qfuturesynchronizer.pro4
-rw-r--r--tests/auto/concurrent/qfuturesynchronizer/tst_qfuturesynchronizer.cpp158
-rw-r--r--tests/auto/concurrent/qfuturewatcher/.gitignore (renamed from tests/auto/corelib/concurrent/qfuturewatcher/.gitignore)0
-rw-r--r--tests/auto/concurrent/qfuturewatcher/qfuturewatcher.pro4
-rw-r--r--tests/auto/concurrent/qfuturewatcher/tst_qfuturewatcher.cpp942
-rw-r--r--tests/auto/concurrent/qtconcurrentfilter/.gitignore (renamed from tests/auto/corelib/concurrent/qtconcurrentfilter/.gitignore)0
-rw-r--r--tests/auto/concurrent/qtconcurrentfilter/qtconcurrentfilter.pro7
-rw-r--r--tests/auto/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp1543
-rw-r--r--tests/auto/concurrent/qtconcurrentiteratekernel/.gitignore (renamed from tests/auto/corelib/concurrent/qtconcurrentiteratekernel/.gitignore)0
-rw-r--r--tests/auto/concurrent/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro4
-rw-r--r--tests/auto/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp310
-rw-r--r--tests/auto/concurrent/qtconcurrentmap/.gitignore (renamed from tests/auto/corelib/concurrent/qtconcurrentmap/.gitignore)0
-rw-r--r--tests/auto/concurrent/qtconcurrentmap/functions.h130
-rw-r--r--tests/auto/concurrent/qtconcurrentmap/qtconcurrentmap.pro5
-rw-r--r--tests/auto/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp2426
-rw-r--r--tests/auto/concurrent/qtconcurrentresultstore/qtconcurrentresultstore.pro5
-rw-r--r--tests/auto/concurrent/qtconcurrentresultstore/tst_qtconcurrentresultstore.cpp490
-rw-r--r--tests/auto/concurrent/qtconcurrentrun/.gitignore (renamed from tests/auto/corelib/concurrent/qtconcurrentrun/.gitignore)0
-rw-r--r--tests/auto/concurrent/qtconcurrentrun/qtconcurrentrun.pro4
-rw-r--r--tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp463
-rw-r--r--tests/auto/concurrent/qtconcurrentthreadengine/.gitignore (renamed from tests/auto/corelib/concurrent/qtconcurrentthreadengine/.gitignore)0
-rw-r--r--tests/auto/concurrent/qtconcurrentthreadengine/qtconcurrentthreadengine.pro4
-rw-r--r--tests/auto/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp520
-rw-r--r--tests/auto/corelib/animation/qabstractanimation/tst_qabstractanimation.cpp4
-rw-r--r--tests/auto/corelib/animation/qanimationgroup/tst_qanimationgroup.cpp4
-rw-r--r--tests/auto/corelib/animation/qparallelanimationgroup/tst_qparallelanimationgroup.cpp4
-rw-r--r--tests/auto/corelib/animation/qpauseanimation/tst_qpauseanimation.cpp4
-rw-r--r--tests/auto/corelib/animation/qpropertyanimation/tst_qpropertyanimation.cpp4
-rw-r--r--tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp4
-rw-r--r--tests/auto/corelib/animation/qvariantanimation/tst_qvariantanimation.cpp4
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/echo/main.cpp4
-rw-r--r--tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp86
-rw-r--r--tests/auto/corelib/codecs/utf8/tst_utf8.cpp4
-rw-r--r--tests/auto/corelib/concurrent/concurrent.pro13
-rw-r--r--tests/auto/corelib/concurrent/qfuture/qfuture.pro5
-rw-r--r--tests/auto/corelib/concurrent/qfuture/tst_qfuture.cpp1438
-rw-r--r--tests/auto/corelib/concurrent/qfuturesynchronizer/qfuturesynchronizer.pro4
-rw-r--r--tests/auto/corelib/concurrent/qfuturesynchronizer/tst_qfuturesynchronizer.cpp158
-rw-r--r--tests/auto/corelib/concurrent/qfuturewatcher/qfuturewatcher.pro4
-rw-r--r--tests/auto/corelib/concurrent/qfuturewatcher/tst_qfuturewatcher.cpp945
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentfilter/qtconcurrentfilter.pro7
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp1543
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro4
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp310
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentmap/functions.h130
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentmap/qtconcurrentmap.pro5
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp2426
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentresultstore/qtconcurrentresultstore.pro5
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentresultstore/tst_qtconcurrentresultstore.cpp490
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentrun/qtconcurrentrun.pro4
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp463
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentthreadengine/qtconcurrentthreadengine.pro4
-rw-r--r--tests/auto/corelib/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp520
-rw-r--r--tests/auto/corelib/concurrent/qthreadpool/tst_qthreadpool.cpp849
-rw-r--r--tests/auto/corelib/corelib.pro3
-rw-r--r--tests/auto/corelib/global/global.pro3
-rw-r--r--tests/auto/corelib/global/q_func_info/tst_q_func_info.cpp4
-rw-r--r--tests/auto/corelib/global/qflags/tst_qflags.cpp4
-rw-r--r--tests/auto/corelib/global/qgetputenv/tst_qgetputenv.cpp4
-rw-r--r--tests/auto/corelib/global/qglobal/tst_qglobal.cpp4
-rw-r--r--tests/auto/corelib/global/qmessagehandler/qmessagehandler.pro4
-rw-r--r--tests/auto/corelib/global/qmessagehandler/tst_qmessagehandler.cpp147
-rw-r--r--tests/auto/corelib/global/qnumeric/tst_qnumeric.cpp4
-rw-r--r--tests/auto/corelib/global/qrand/tst_qrand.cpp4
-rw-r--r--tests/auto/corelib/io/io.pro6
-rw-r--r--tests/auto/corelib/io/largefile/tst_largefile.cpp4
-rw-r--r--tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp97
-rw-r--r--tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp4
-rw-r--r--tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp66
-rw-r--r--tests/auto/corelib/io/qdebug/tst_qdebug.cpp69
-rw-r--r--tests/auto/corelib/io/qdir/testdir/dir/qrc_qdir.cpp4
-rw-r--r--tests/auto/corelib/io/qdir/testdir/dir/tst_qdir.cpp4
-rw-r--r--tests/auto/corelib/io/qdir/tst_qdir.cpp6
-rw-r--r--tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp4
-rw-r--r--tests/auto/corelib/io/qfile/stdinprocess/main.cpp4
-rw-r--r--tests/auto/corelib/io/qfile/test/test.pro9
-rw-r--r--tests/auto/corelib/io/qfile/tst_qfile.cpp16
-rw-r--r--tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp36
-rw-r--r--tests/auto/corelib/io/qfilesystementry/tst_qfilesystementry.cpp4
-rw-r--r--tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp4
-rw-r--r--tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp4
-rw-r--r--tests/auto/corelib/io/qnodebug/tst_qnodebug.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/fileWriterProcess/main.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testDetached/main.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testExitCodes/main.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testGuiProcess/main.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessCrash/main.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/main.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEOF/main.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEcho/main.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEcho2/main.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEcho3/main.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessEnvironment/main.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessLoopback/main.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessNormal/main.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessOutput/main.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testProcessSpacesArgs/main.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testSetWorkingDirectory/main.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testSoftExit/main_unix.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testSoftExit/main_win.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/testSpaceInName/main.cpp4
-rw-r--r--tests/auto/corelib/io/qprocess/tst_qprocess.cpp31
-rw-r--r--tests/auto/corelib/io/qprocessenvironment/tst_qprocessenvironment.cpp4
-rw-r--r--tests/auto/corelib/io/qresourceengine/tst_qresourceengine.cpp4
-rw-r--r--tests/auto/corelib/io/qsettings/tst_qsettings.cpp4
-rw-r--r--tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp5
-rw-r--r--tests/auto/corelib/io/qtemporarydir/tst_qtemporarydir.cpp7
-rw-r--r--tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp7
-rw-r--r--tests/auto/corelib/io/qtextstream/readAllStdinProcess/main.cpp4
-rw-r--r--tests/auto/corelib/io/qtextstream/readLineStdinProcess/main.cpp4
-rw-r--r--tests/auto/corelib/io/qtextstream/stdinProcess/main.cpp4
-rw-r--r--tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp19
-rw-r--r--tests/auto/corelib/io/qurl/idna-test.c4
-rw-r--r--tests/auto/corelib/io/qurl/tst_qurl.cpp157
-rw-r--r--tests/auto/corelib/io/qwinoverlappedionotifier/qwinoverlappedionotifier.pro4
-rw-r--r--tests/auto/corelib/io/qwinoverlappedionotifier/tst_qwinoverlappedionotifier.cpp212
-rw-r--r--tests/auto/corelib/itemmodels/qabstractitemmodel/qabstractitemmodel.pro2
-rw-r--r--tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp167
-rw-r--r--tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp4
-rw-r--r--tests/auto/corelib/itemmodels/qidentityproxymodel/tst_qidentityproxymodel.cpp4
-rw-r--r--tests/auto/corelib/itemmodels/qitemmodel/modelstotest.cpp4
-rw-r--r--tests/auto/corelib/itemmodels/qitemmodel/tst_qitemmodel.cpp4
-rw-r--r--tests/auto/corelib/itemmodels/qitemselectionmodel/tst_qitemselectionmodel.cpp4
-rw-r--r--tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp4
-rw-r--r--tests/auto/corelib/itemmodels/qstringlistmodel/qmodellistener.h4
-rw-r--r--tests/auto/corelib/itemmodels/qstringlistmodel/tst_qstringlistmodel.cpp4
-rw-r--r--tests/auto/corelib/json/json.pro8
-rw-r--r--tests/auto/corelib/json/test.bjsonbin0 -> 60992 bytes
-rw-r--r--tests/auto/corelib/json/test.json66
-rw-r--r--tests/auto/corelib/json/test2.json1
-rw-r--r--tests/auto/corelib/json/test3.json15
-rw-r--r--tests/auto/corelib/json/tst_qtjson.cpp1589
-rw-r--r--tests/auto/corelib/kernel/qcoreapplication/qcoreapplication.pro2
-rw-r--r--tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp126
-rw-r--r--tests/auto/corelib/kernel/qeventloop/qeventloop.pro2
-rw-r--r--tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp86
-rw-r--r--tests/auto/corelib/kernel/qmath/tst_qmath.cpp4
-rw-r--r--tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp4
-rw-r--r--tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp387
-rw-r--r--tests/auto/corelib/kernel/qmetaproperty/tst_qmetaproperty.cpp4
-rw-r--r--tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp107
-rw-r--r--tests/auto/corelib/kernel/qmimedata/tst_qmimedata.cpp4
-rw-r--r--tests/auto/corelib/kernel/qobject/moc_oldnormalizeobject.cpp4
-rw-r--r--tests/auto/corelib/kernel/qobject/oldnormalizeobject.h4
-rw-r--r--tests/auto/corelib/kernel/qobject/signalbug/signalbug.cpp4
-rw-r--r--tests/auto/corelib/kernel/qobject/signalbug/signalbug.h4
-rw-r--r--tests/auto/corelib/kernel/qobject/tst_qobject.cpp75
-rw-r--r--tests/auto/corelib/kernel/qobject/tst_qobject.pro4
-rw-r--r--tests/auto/corelib/kernel/qpointer/tst_qpointer.cpp4
-rw-r--r--tests/auto/corelib/kernel/qsignalmapper/tst_qsignalmapper.cpp4
-rw-r--r--tests/auto/corelib/kernel/qsocketnotifier/tst_qsocketnotifier.cpp4
-rw-r--r--tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp4
-rw-r--r--tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp4
-rw-r--r--tests/auto/corelib/kernel/qvariant/qvariant.pro1
-rw-r--r--tests/auto/corelib/kernel/qvariant/qvariant.qrc6
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/bool.binbin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/char.binbin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/double.binbin0 -> 29 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/float.binbin0 -> 27 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/int.binbin0 -> 19 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/long.binbin0 -> 25 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbitarray.binbin0 -> 31 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbitmap.binbin0 -> 27 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbrush.binbin0 -> 105 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbytearray.binbin0 -> 33 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qchar.binbin0 -> 21 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qcolor.binbin0 -> 32 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qcursor.binbin0 -> 25 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qdate.binbin0 -> 23 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qdatetime.binbin0 -> 36 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qeasingcurve.binbin0 -> 43 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qfont.binbin0 -> 73 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qicon.binbin0 -> 23 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qimage.binbin0 -> 25 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qkeysequence.binbin0 -> 41 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qline.binbin0 -> 35 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlinef.binbin0 -> 53 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlocale.binbin0 -> 37 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlonglong.binbin0 -> 35 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qmatrix.binbin0 -> 71 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qmatrix4x4.binbin0 -> 157 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpalette.binbin0 -> 5065 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpen.binbin0 -> 132 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpixmap.binbin0 -> 27 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpoint.binbin0 -> 29 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpointf.binbin0 -> 39 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpolygon.binbin0 -> 29 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qquaternion.binbin0 -> 63 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qrect.binbin0 -> 35 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qrectf.binbin0 -> 53 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qregexp.binbin0 -> 30 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qregion.binbin0 -> 27 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsize.binbin0 -> 27 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsizef.binbin0 -> 37 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsizepolicy.binbin0 -> 35 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qstring.binbin0 -> 27 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qstringlist.binbin0 -> 35 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtextformat.binbin0 -> 39 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtextlength.binbin0 -> 43 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtime.binbin0 -> 23 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtransform.binbin0 -> 101 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qulonglong.binbin0 -> 37 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qurl.binbin0 -> 21 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariant.binbin0 -> 34 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvarianthash.binbin0 -> 37 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariantlist.binbin0 -> 37 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariantmap.binbin0 -> 35 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector2d.binbin0 -> 43 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector3d.binbin0 -> 51 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector4d.binbin0 -> 59 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/short.binbin0 -> 21 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/uchar.binbin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/uint.binbin0 -> 21 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/ulong.binbin0 -> 27 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/ushort.binbin0 -> 23 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt4.9/void.binbin0 -> 21 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/bool.binbin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/char.binbin0 -> 18 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/double.binbin0 -> 29 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/float.binbin0 -> 27 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/int.binbin0 -> 19 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/long.binbin0 -> 25 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitarray.binbin0 -> 31 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitmap.binbin0 -> 27 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbrush.binbin0 -> 105 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbytearray.binbin0 -> 33 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qchar.binbin0 -> 21 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcolor.binbin0 -> 32 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcursor.binbin0 -> 25 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdate.binbin0 -> 23 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdatetime.binbin0 -> 36 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qeasingcurve.binbin0 -> 43 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qfont.binbin0 -> 89 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qicon.binbin0 -> 23 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qimage.binbin0 -> 25 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qkeysequence.binbin0 -> 41 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qline.binbin0 -> 35 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlinef.binbin0 -> 53 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlocale.binbin0 -> 37 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlonglong.binbin0 -> 35 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix.binbin0 -> 71 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix4x4.binbin0 -> 157 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpalette.binbin0 -> 5065 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpen.binbin0 -> 132 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpixmap.binbin0 -> 27 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpoint.binbin0 -> 29 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpointf.binbin0 -> 39 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygon.binbin0 -> 29 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygonf.binbin0 -> 31 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qquaternion.binbin0 -> 63 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qrect.binbin0 -> 35 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qrectf.binbin0 -> 53 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregexp.binbin0 -> 30 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregion.binbin0 -> 27 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsize.binbin0 -> 27 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsizef.binbin0 -> 37 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsizepolicy.binbin0 -> 35 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qstring.binbin0 -> 27 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qstringlist.binbin0 -> 35 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextformat.binbin0 -> 39 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextlength.binbin0 -> 43 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtime.binbin0 -> 23 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtransform.binbin0 -> 101 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qulonglong.binbin0 -> 37 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qurl.binbin0 -> 21 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/quuid.binbin0 -> 35 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariant.binbin0 -> 34 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvarianthash.binbin0 -> 37 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariantlist.binbin0 -> 37 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariantmap.binbin0 -> 35 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector2d.binbin0 -> 43 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector3d.binbin0 -> 51 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector4d.binbin0 -> 59 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/short.binbin0 -> 21 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/uchar.binbin0 -> 20 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/uint.binbin0 -> 21 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/ulong.binbin0 -> 27 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/ushort.binbin0 -> 23 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/stream/qt5.0/void.binbin0 -> 21 bytes
-rw-r--r--tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp186
-rw-r--r--tests/auto/corelib/kernel/qwineventnotifier/tst_qwineventnotifier.cpp4
-rw-r--r--tests/auto/corelib/plugin/qlibrary/lib/mylib.c4
-rw-r--r--tests/auto/corelib/plugin/qlibrary/lib2/mylib.c4
-rw-r--r--tests/auto/corelib/plugin/qlibrary/tst_qlibrary.cpp72
-rw-r--r--tests/auto/corelib/plugin/qplugin/debugplugin/main.cpp4
-rw-r--r--tests/auto/corelib/plugin/qplugin/releaseplugin/main.cpp4
-rw-r--r--tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp4
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.cpp4
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.h4
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/lib/mylib.c4
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/theplugin/plugininterface.h4
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.cpp4
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.h4
-rw-r--r--tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp4
-rw-r--r--tests/auto/corelib/plugin/quuid/testProcessUniqueness/main.cpp4
-rw-r--r--tests/auto/corelib/plugin/quuid/tst_quuid.cpp4
-rw-r--r--tests/auto/corelib/statemachine/qstate/tst_qstate.cpp4
-rw-r--r--tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp4
-rw-r--r--tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp4
-rw-r--r--tests/auto/corelib/thread/qatomicpointer/tst_qatomicpointer.cpp4
-rw-r--r--tests/auto/corelib/thread/qmutex/tst_qmutex.cpp4
-rw-r--r--tests/auto/corelib/thread/qmutexlocker/tst_qmutexlocker.cpp4
-rw-r--r--tests/auto/corelib/thread/qreadlocker/tst_qreadlocker.cpp4
-rw-r--r--tests/auto/corelib/thread/qreadwritelock/tst_qreadwritelock.cpp4
-rw-r--r--tests/auto/corelib/thread/qsemaphore/tst_qsemaphore.cpp4
-rw-r--r--tests/auto/corelib/thread/qthread/tst_qthread.cpp4
-rw-r--r--tests/auto/corelib/thread/qthreadonce/qthreadonce.cpp4
-rw-r--r--tests/auto/corelib/thread/qthreadonce/qthreadonce.h5
-rw-r--r--tests/auto/corelib/thread/qthreadonce/tst_qthreadonce.cpp4
-rw-r--r--tests/auto/corelib/thread/qthreadpool/.gitignore (renamed from tests/auto/corelib/concurrent/qthreadpool/.gitignore)0
-rw-r--r--tests/auto/corelib/thread/qthreadpool/qthreadpool.pro (renamed from tests/auto/corelib/concurrent/qthreadpool/qthreadpool.pro)0
-rw-r--r--tests/auto/corelib/thread/qthreadpool/tst_qthreadpool.cpp849
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/crashOnExit.cpp4
-rw-r--r--tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp4
-rw-r--r--tests/auto/corelib/thread/qwaitcondition/tst_qwaitcondition.cpp4
-rw-r--r--tests/auto/corelib/thread/qwritelocker/tst_qwritelocker.cpp4
-rw-r--r--tests/auto/corelib/thread/thread.pro1
-rw-r--r--tests/auto/corelib/tools/qalgorithms/tst_qalgorithms.cpp33
-rw-r--r--tests/auto/corelib/tools/qbitarray/tst_qbitarray.cpp4
-rw-r--r--tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp86
-rw-r--r--tests/auto/corelib/tools/qbytearraymatcher/tst_qbytearraymatcher.cpp4
-rw-r--r--tests/auto/corelib/tools/qcache/tst_qcache.cpp4
-rw-r--r--tests/auto/corelib/tools/qchar/tst_qchar.cpp4
-rw-r--r--tests/auto/corelib/tools/qcontiguouscache/tst_qcontiguouscache.cpp4
-rw-r--r--tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp4
-rw-r--r--tests/auto/corelib/tools/qdate/tst_qdate.cpp456
-rw-r--r--tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp24
-rw-r--r--tests/auto/corelib/tools/qeasingcurve/tst_qeasingcurve.cpp4
-rw-r--r--tests/auto/corelib/tools/qelapsedtimer/tst_qelapsedtimer.cpp4
-rw-r--r--tests/auto/corelib/tools/qexplicitlyshareddatapointer/tst_qexplicitlyshareddatapointer.cpp4
-rw-r--r--tests/auto/corelib/tools/qfreelist/tst_qfreelist.cpp4
-rw-r--r--tests/auto/corelib/tools/qhash/tst_qhash.cpp4
-rw-r--r--tests/auto/corelib/tools/qline/tst_qline.cpp4
-rw-r--r--tests/auto/corelib/tools/qlist/tst_qlist.cpp4
-rw-r--r--tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.cpp4
-rw-r--r--tests/auto/corelib/tools/qlocale/tst_qlocale.cpp44
-rw-r--r--tests/auto/corelib/tools/qmap/tst_qmap.cpp4
-rw-r--r--tests/auto/corelib/tools/qmargins/tst_qmargins.cpp4
-rw-r--r--tests/auto/corelib/tools/qpoint/tst_qpoint.cpp4
-rw-r--r--tests/auto/corelib/tools/qqueue/tst_qqueue.cpp4
-rw-r--r--tests/auto/corelib/tools/qrect/tst_qrect.cpp4
-rw-r--r--tests/auto/corelib/tools/qregexp/tst_qregexp.cpp10
-rw-r--r--tests/auto/corelib/tools/qringbuffer/tst_qringbuffer.cpp4
-rw-r--r--tests/auto/corelib/tools/qscopedpointer/tst_qscopedpointer.cpp4
-rw-r--r--tests/auto/corelib/tools/qscopedvaluerollback/tst_qscopedvaluerollback.cpp4
-rw-r--r--tests/auto/corelib/tools/qset/tst_qset.cpp4
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/externaltests.cpp23
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/externaltests.h4
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/forwarddeclaration.cpp4
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/forwarddeclared.cpp4
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/forwarddeclared.h4
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp4
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/wrapper.cpp4
-rw-r--r--tests/auto/corelib/tools/qsharedpointer/wrapper.h4
-rw-r--r--tests/auto/corelib/tools/qsize/tst_qsize.cpp4
-rw-r--r--tests/auto/corelib/tools/qsizef/tst_qsizef.cpp4
-rw-r--r--tests/auto/corelib/tools/qstl/tst_qstl.cpp4
-rw-r--r--tests/auto/corelib/tools/qstring/double_data.h4
-rw-r--r--tests/auto/corelib/tools/qstring/tst_qstring.cpp383
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/stringbuilder.cpp4
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/tst_qstringbuilder1.cpp4
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/tst_qstringbuilder2.cpp4
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/tst_qstringbuilder3.cpp4
-rw-r--r--tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/tst_qstringbuilder4.cpp4
-rw-r--r--tests/auto/corelib/tools/qstringlist/tst_qstringlist.cpp4
-rw-r--r--tests/auto/corelib/tools/qstringmatcher/tst_qstringmatcher.cpp4
-rw-r--r--tests/auto/corelib/tools/qstringref/tst_qstringref.cpp4
-rw-r--r--tests/auto/corelib/tools/qtextboundaryfinder/tst_qtextboundaryfinder.cpp4
-rw-r--r--tests/auto/corelib/tools/qtime/tst_qtime.cpp12
-rw-r--r--tests/auto/corelib/tools/qtimeline/tst_qtimeline.cpp4
-rw-r--r--tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp4
-rw-r--r--tests/auto/corelib/tools/qvector/tst_qvector.cpp4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/qc14n.h4
-rwxr-xr-xtests/auto/corelib/xml/qxmlstream/setupSuite.sh4
-rw-r--r--tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp10
-rw-r--r--tests/auto/dbus/qdbusabstractadaptor/myobject.h4
-rw-r--r--tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp4
-rw-r--r--tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp4
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/interface.cpp4
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/interface.h4
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/pinger.cpp4
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/pinger.h4
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp4
-rw-r--r--tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp4
-rw-r--r--tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp4
-rw-r--r--tests/auto/dbus/qdbusconnection_no_bus/tst_qdbusconnection_no_bus.cpp4
-rw-r--r--tests/auto/dbus/qdbuscontext/tst_qdbuscontext.cpp4
-rw-r--r--tests/auto/dbus/qdbusinterface/myobject.h4
-rw-r--r--tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp4
-rw-r--r--tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp6
-rw-r--r--tests/auto/dbus/qdbuslocalcalls/tst_qdbuslocalcalls.cpp4
-rw-r--r--tests/auto/dbus/qdbusmarshall/common.h4
-rw-r--r--tests/auto/dbus/qdbusmarshall/qpong/qpong.cpp4
-rw-r--r--tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp4
-rw-r--r--tests/auto/dbus/qdbusmetaobject/tst_qdbusmetaobject.cpp4
-rw-r--r--tests/auto/dbus/qdbusmetatype/tst_qdbusmetatype.cpp4
-rw-r--r--tests/auto/dbus/qdbuspendingcall/tst_qdbuspendingcall.cpp4
-rw-r--r--tests/auto/dbus/qdbuspendingreply/tst_qdbuspendingreply.cpp4
-rw-r--r--tests/auto/dbus/qdbusreply/tst_qdbusreply.cpp4
-rw-r--r--tests/auto/dbus/qdbusservicewatcher/tst_qdbusservicewatcher.cpp4
-rw-r--r--tests/auto/dbus/qdbusthreading/tst_qdbusthreading.cpp4
-rw-r--r--tests/auto/dbus/qdbustype/tst_qdbustype.cpp4
-rw-r--r--tests/auto/dbus/qdbusxmlparser/tst_qdbusxmlparser.cpp142
-rw-r--r--tests/auto/gui/image/qicoimageformat/qicoimageformat.pro8
-rw-r--r--tests/auto/gui/image/qicoimageformat/tst_qicoimageformat.cpp10
-rw-r--r--tests/auto/gui/image/qicon/qicon.pro11
-rw-r--r--tests/auto/gui/image/qicon/tst_qicon.cpp65
-rw-r--r--tests/auto/gui/image/qimage/images/image.tifbin2242 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimage/qimage.pro9
-rw-r--r--tests/auto/gui/image/qimage/tst_qimage.cpp49
-rw-r--r--tests/auto/gui/image/qimageiohandler/tst_qimageiohandler.cpp4
-rw-r--r--tests/auto/gui/image/qimagereader/images/ball.mngbin34394 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/corrupt-data.tifbin8590 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/corrupt.mngbin183 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/fire.mngbin44430 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/grayscale-ref.tifbin256182 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/grayscale.tifbin64162 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/image_100dpi.tifbin2242 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/rgba_adobedeflate_littleendian.tifbin4784 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/rgba_lzw_littleendian.tifbin26690 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/rgba_nocompression_bigendian.tifbin160384 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/rgba_nocompression_littleendian.tifbin160388 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/rgba_packbits_littleendian.tifbin161370 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/rgba_zipdeflate_littleendian.tifbin14728 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_1.tiffbin7740 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_2.tiffbin9570 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_3.tiffbin11392 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_4.tiffbin11392 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_5.tiffbin11392 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_6.tiffbin11392 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_7.tiffbin11392 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_8.tiffbin11392 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_1.tiffbin2382 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_2.tiffbin1608 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_3.tiffbin1608 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_4.tiffbin1608 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_5.tiffbin1608 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_6.tiffbin1608 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_7.tiffbin1608 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_8.tiffbin1608 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/original_indexed.tiffbin5922 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/original_mono.tiffbin786 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/original_rgb.tiffbin12608 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_1.tiffbin15560 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_2.tiffbin17972 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_3.tiffbin17324 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_4.tiffbin17324 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_5.tiffbin17648 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_6.tiffbin17324 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_7.tiffbin17324 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_8.tiffbin17324 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagereader/qimagereader.qrc4
-rw-r--r--tests/auto/gui/image/qimagereader/tst_qimagereader.cpp207
-rw-r--r--tests/auto/gui/image/qimagewriter/images/teapot.tiffbin262274 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qimagewriter/qimagewriter.pro10
-rw-r--r--tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp169
-rw-r--r--tests/auto/gui/image/qmovie/animations/dutch.mngbin18534 -> 0 bytes
-rw-r--r--tests/auto/gui/image/qmovie/qmovie.pro1
-rw-r--r--tests/auto/gui/image/qmovie/tst_qmovie.cpp10
-rw-r--r--tests/auto/gui/image/qpicture/tst_qpicture.cpp4
-rw-r--r--tests/auto/gui/image/qpixmap/qpixmap.pro20
-rw-r--r--tests/auto/gui/image/qpixmap/tst_qpixmap.cpp22
-rw-r--r--tests/auto/gui/image/qpixmapcache/tst_qpixmapcache.cpp4
-rw-r--r--tests/auto/gui/image/qpixmapfilter/tst_qpixmapfilter.cpp4
-rw-r--r--tests/auto/gui/image/qvolatileimage/tst_qvolatileimage.cpp4
-rw-r--r--tests/auto/gui/kernel/kernel.pro3
-rw-r--r--tests/auto/gui/kernel/qclipboard/copier/main.cpp4
-rw-r--r--tests/auto/gui/kernel/qclipboard/paster/main.cpp4
-rw-r--r--tests/auto/gui/kernel/qclipboard/qclipboard.pro6
-rw-r--r--tests/auto/gui/kernel/qclipboard/test/test.pro11
-rw-r--r--tests/auto/gui/kernel/qclipboard/tst_qclipboard.cpp12
-rw-r--r--tests/auto/gui/kernel/qdrag/tst_qdrag.cpp4
-rw-r--r--tests/auto/gui/kernel/qevent/tst_qevent.cpp4
-rw-r--r--tests/auto/gui/kernel/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.cpp4
-rw-r--r--tests/auto/gui/kernel/qfileopenevent/test/tst_qfileopenevent.cpp4
-rw-r--r--tests/auto/gui/kernel/qguiapplication/qguiapplication.pro4
-rw-r--r--tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp156
-rw-r--r--tests/auto/gui/kernel/qguimetatype/tst_qguimetatype.cpp4
-rw-r--r--tests/auto/gui/kernel/qguivariant/tst_qguivariant.cpp4
-rw-r--r--tests/auto/gui/kernel/qinputmethod/qinputmethod.pro4
-rw-r--r--tests/auto/gui/kernel/qinputmethod/tst_qinputmethod.cpp342
-rw-r--r--tests/auto/gui/kernel/qinputpanel/qinputpanel.pro4
-rw-r--r--tests/auto/gui/kernel/qinputpanel/tst_qinputpanel.cpp342
-rw-r--r--tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp55
-rw-r--r--tests/auto/gui/kernel/qmouseevent/tst_qmouseevent.cpp4
-rw-r--r--tests/auto/gui/kernel/qmouseevent_modal/tst_qmouseevent_modal.cpp4
-rw-r--r--tests/auto/gui/kernel/qpalette/tst_qpalette.cpp4
-rw-r--r--tests/auto/gui/kernel/qscreen/tst_qscreen.cpp25
-rw-r--r--tests/auto/gui/kernel/qshortcut/tst_qshortcut.cpp4
-rw-r--r--tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp4
-rw-r--r--tests/auto/gui/kernel/qwindow/tst_qwindow.cpp74
-rw-r--r--tests/auto/gui/math3d/qmatrixnxn/tst_qmatrixnxn.cpp4
-rw-r--r--tests/auto/gui/math3d/qquaternion/tst_qquaternion.cpp4
-rw-r--r--tests/auto/gui/math3d/qvectornd/tst_qvectornd.cpp4
-rw-r--r--tests/auto/gui/painting/qbrush/tst_qbrush.cpp4
-rw-r--r--tests/auto/gui/painting/qcolor/tst_qcolor.cpp4
-rw-r--r--tests/auto/gui/painting/qpaintengine/tst_qpaintengine.cpp4
-rw-r--r--tests/auto/gui/painting/qpainter/qpainter.pro12
-rw-r--r--tests/auto/gui/painting/qpainter/tst_qpainter.cpp18
-rw-r--r--tests/auto/gui/painting/qpainter/utils/createImages/main.cpp4
-rw-r--r--tests/auto/gui/painting/qpainterpath/tst_qpainterpath.cpp12
-rw-r--r--tests/auto/gui/painting/qpainterpathstroker/tst_qpainterpathstroker.cpp4
-rw-r--r--tests/auto/gui/painting/qpathclipper/pathcompare.h4
-rw-r--r--tests/auto/gui/painting/qpathclipper/paths.cpp4
-rw-r--r--tests/auto/gui/painting/qpathclipper/paths.h4
-rw-r--r--tests/auto/gui/painting/qpathclipper/tst_qpathclipper.cpp4
-rw-r--r--tests/auto/gui/painting/qpen/tst_qpen.cpp4
-rw-r--r--tests/auto/gui/painting/qpolygon/tst_qpolygon.cpp4
-rw-r--r--tests/auto/gui/painting/qprinter/tst_qprinter.cpp30
-rw-r--r--tests/auto/gui/painting/qprinterinfo/tst_qprinterinfo.cpp6
-rw-r--r--tests/auto/gui/painting/qregion/tst_qregion.cpp4
-rw-r--r--tests/auto/gui/painting/qtransform/tst_qtransform.cpp4
-rw-r--r--tests/auto/gui/painting/qwmatrix/tst_qwmatrix.cpp4
-rw-r--r--tests/auto/gui/qopengl/tst_qopengl.cpp13
-rw-r--r--tests/auto/gui/text/qabstracttextdocumentlayout/tst_qabstracttextdocumentlayout.cpp4
-rw-r--r--tests/auto/gui/text/qcssparser/tst_qcssparser.cpp4
-rw-r--r--tests/auto/gui/text/qfont/tst_qfont.cpp6
-rw-r--r--tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp12
-rw-r--r--tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp4
-rw-r--r--tests/auto/gui/text/qglyphrun/tst_qglyphrun.cpp4
-rw-r--r--tests/auto/gui/text/qrawfont/tst_qrawfont.cpp8
-rw-r--r--tests/auto/gui/text/qstatictext/tst_qstatictext.cpp4
-rw-r--r--tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp4
-rw-r--r--tests/auto/gui/text/qtextblock/tst_qtextblock.cpp4
-rw-r--r--tests/auto/gui/text/qtextcursor/tst_qtextcursor.cpp22
-rw-r--r--tests/auto/gui/text/qtextdocument/common.h4
-rw-r--r--tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp11
-rw-r--r--tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp4
-rw-r--r--tests/auto/gui/text/qtextdocumentlayout/tst_qtextdocumentlayout.cpp13
-rw-r--r--tests/auto/gui/text/qtextformat/tst_qtextformat.cpp4
-rw-r--r--tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp20
-rw-r--r--tests/auto/gui/text/qtextlist/tst_qtextlist.cpp4
-rw-r--r--tests/auto/gui/text/qtextobject/tst_qtextobject.cpp4
-rw-r--r--tests/auto/gui/text/qtextodfwriter/tst_qtextodfwriter.cpp4
-rw-r--r--tests/auto/gui/text/qtextpiecetable/tst_qtextpiecetable.cpp4
-rw-r--r--tests/auto/gui/text/qtextscriptengine/generate/main.cpp4
-rw-r--r--tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp34
-rw-r--r--tests/auto/gui/text/qtexttable/tst_qtexttable.cpp4
-rw-r--r--tests/auto/gui/text/qzip/tst_qzip.cpp4
-rw-r--r--tests/auto/gui/util/qdesktopservices/tst_qdesktopservices.cpp4
-rw-r--r--tests/auto/network-settings.h4
-rw-r--r--tests/auto/network/access/qabstractnetworkcache/tst_qabstractnetworkcache.cpp4
-rw-r--r--tests/auto/network/access/qftp/tst_qftp.cpp4
-rw-r--r--tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp4
-rw-r--r--tests/auto/network/access/qhttpnetworkreply/tst_qhttpnetworkreply.cpp4
-rw-r--r--tests/auto/network/access/qnetworkaccessmanager/tst_qnetworkaccessmanager.cpp4
-rw-r--r--tests/auto/network/access/qnetworkcachemetadata/tst_qnetworkcachemetadata.cpp4
-rw-r--r--tests/auto/network/access/qnetworkcookie/tst_qnetworkcookie.cpp4
-rw-r--r--tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp4
-rw-r--r--tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp7
-rw-r--r--tests/auto/network/access/qnetworkreply/echo/main.cpp4
-rw-r--r--tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp4
-rw-r--r--tests/auto/network/access/qnetworkrequest/tst_qnetworkrequest.cpp4
-rw-r--r--tests/auto/network/bearer/qbearertestcommon.h4
-rw-r--r--tests/auto/network/bearer/qnetworkconfiguration/tst_qnetworkconfiguration.cpp4
-rw-r--r--tests/auto/network/bearer/qnetworkconfigurationmanager/tst_qnetworkconfigurationmanager.cpp4
-rw-r--r--tests/auto/network/bearer/qnetworksession/lackey/main.cpp4
-rw-r--r--tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp20
-rw-r--r--tests/auto/network/kernel/kernel.pro2
-rw-r--r--tests/auto/network/kernel/qauthenticator/tst_qauthenticator.cpp4
-rw-r--r--tests/auto/network/kernel/qdnslookup/qdnslookup.pro7
-rw-r--r--tests/auto/network/kernel/qdnslookup/tst_qdnslookup.cpp274
-rw-r--r--tests/auto/network/kernel/qdnslookup_appless/qdnslookup_appless.pro7
-rw-r--r--tests/auto/network/kernel/qdnslookup_appless/tst_qdnslookup_appless.cpp92
-rw-r--r--tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp7
-rw-r--r--tests/auto/network/kernel/qhostinfo/qhostinfo.pro2
-rw-r--r--tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp4
-rw-r--r--tests/auto/network/kernel/qnetworkaddressentry/tst_qnetworkaddressentry.cpp4
-rw-r--r--tests/auto/network/kernel/qnetworkinterface/tst_qnetworkinterface.cpp4
-rw-r--r--tests/auto/network/kernel/qnetworkproxy/tst_qnetworkproxy.cpp4
-rw-r--r--tests/auto/network/kernel/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp4
-rw-r--r--tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp4
-rw-r--r--tests/auto/network/socket/qabstractsocket/tst_qabstractsocket.cpp4
-rw-r--r--tests/auto/network/socket/qhttpsocketengine/tst_qhttpsocketengine.cpp6
-rw-r--r--tests/auto/network/socket/qlocalsocket/example/client/main.cpp4
-rw-r--r--tests/auto/network/socket/qlocalsocket/example/server/main.cpp4
-rw-r--r--tests/auto/network/socket/qlocalsocket/lackey/main.cpp4
-rw-r--r--tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp4
-rw-r--r--tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp4
-rw-r--r--tests/auto/network/socket/qtcpserver/crashingServer/main.cpp4
-rw-r--r--tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp4
-rw-r--r--tests/auto/network/socket/qtcpsocket/stressTest/Test.cpp4
-rw-r--r--tests/auto/network/socket/qtcpsocket/stressTest/Test.h4
-rw-r--r--tests/auto/network/socket/qtcpsocket/stressTest/main.cpp4
-rw-r--r--tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp4
-rw-r--r--tests/auto/network/socket/qudpsocket/clientserver/main.cpp4
-rw-r--r--tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp4
-rw-r--r--tests/auto/network/socket/qudpsocket/udpServer/main.cpp4
-rwxr-xr-xtests/auto/network/ssl/qsslcertificate/certificates/gencertificates.sh4
-rw-r--r--tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp8
-rw-r--r--tests/auto/network/ssl/qsslcipher/tst_qsslcipher.cpp4
-rw-r--r--tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp4
-rwxr-xr-xtests/auto/network/ssl/qsslkey/keys/genkeys.sh4
-rw-r--r--tests/auto/network/ssl/qsslkey/qsslkey.pro1
-rw-r--r--tests/auto/network/ssl/qsslkey/tst_qsslkey.cpp4
-rw-r--r--tests/auto/network/ssl/qsslsocket/qsslsocket.pro1
-rw-r--r--tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp118
-rw-r--r--tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/tst_qsslsocket_onDemandCertificates_member.cpp4
-rw-r--r--tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/tst_qsslsocket_onDemandCertificates_static.cpp4
-rw-r--r--tests/auto/opengl/qgl/tst_qgl.cpp4
-rw-r--r--tests/auto/opengl/qglbuffer/tst_qglbuffer.cpp4
-rw-r--r--tests/auto/opengl/qglfunctions/tst_qglfunctions.cpp4
-rw-r--r--tests/auto/opengl/qglthreads/tst_qglthreads.cpp4
-rw-r--r--tests/auto/opengl/qglthreads/tst_qglthreads.h4
-rw-r--r--tests/auto/other/atwrapper/atWrapper.cpp4
-rw-r--r--tests/auto/other/atwrapper/atWrapper.h4
-rw-r--r--tests/auto/other/atwrapper/atWrapperAutotest.cpp4
-rw-r--r--tests/auto/other/baselineexample/tst_baselineexample.cpp4
-rw-r--r--tests/auto/other/collections/tst_collections.cpp12
-rw-r--r--tests/auto/other/compiler/baseclass.cpp4
-rw-r--r--tests/auto/other/compiler/baseclass.h4
-rw-r--r--tests/auto/other/compiler/derivedclass.cpp4
-rw-r--r--tests/auto/other/compiler/derivedclass.h4
-rw-r--r--tests/auto/other/compiler/tst_compiler.cpp4
-rw-r--r--tests/auto/other/exceptionsafety/tst_exceptionsafety.cpp4
-rw-r--r--tests/auto/other/exceptionsafety_objects/oomsimulator.h4
-rw-r--r--tests/auto/other/exceptionsafety_objects/tst_exceptionsafety_objects.cpp4
-rw-r--r--tests/auto/other/gestures/tst_gestures.cpp4
-rw-r--r--tests/auto/other/headersclean/tst_headersclean.cpp4
-rw-r--r--tests/auto/other/lancelot/paintcommands.cpp4
-rw-r--r--tests/auto/other/lancelot/paintcommands.h4
-rw-r--r--tests/auto/other/lancelot/tst_lancelot.cpp4
-rw-r--r--tests/auto/other/languagechange/tst_languagechange.cpp4
-rw-r--r--tests/auto/other/macgui/guitest.cpp6
-rw-r--r--tests/auto/other/macgui/guitest.h4
-rw-r--r--tests/auto/other/macgui/tst_macgui.cpp4
-rw-r--r--tests/auto/other/macnativeevents/expectedeventlist.cpp4
-rw-r--r--tests/auto/other/macnativeevents/expectedeventlist.h4
-rw-r--r--tests/auto/other/macnativeevents/nativeeventlist.cpp4
-rw-r--r--tests/auto/other/macnativeevents/nativeeventlist.h4
-rw-r--r--tests/auto/other/macnativeevents/qnativeevents.cpp4
-rw-r--r--tests/auto/other/macnativeevents/qnativeevents.h4
-rw-r--r--tests/auto/other/macnativeevents/qnativeevents_mac.cpp4
-rw-r--r--tests/auto/other/macnativeevents/tst_macnativeevents.cpp4
-rw-r--r--tests/auto/other/macplist/app/main.cpp4
-rw-r--r--tests/auto/other/macplist/tst_macplist.cpp4
-rw-r--r--tests/auto/other/modeltest/dynamictreemodel.cpp4
-rw-r--r--tests/auto/other/modeltest/dynamictreemodel.h4
-rw-r--r--tests/auto/other/modeltest/modeltest.cpp4
-rw-r--r--tests/auto/other/modeltest/modeltest.h4
-rw-r--r--tests/auto/other/modeltest/tst_modeltest.cpp4
-rw-r--r--tests/auto/other/networkselftest/tst_networkselftest.cpp4
-rw-r--r--tests/auto/other/other.pro1
-rw-r--r--tests/auto/other/qaccessibility/tst_qaccessibility.cpp115
-rw-r--r--tests/auto/other/qcomplextext/bidireorderstring.h4
-rw-r--r--tests/auto/other/qcomplextext/tst_qcomplextext.cpp8
-rw-r--r--tests/auto/other/qdirectpainter/.gitignore2
-rw-r--r--tests/auto/other/qdirectpainter/qdirectpainter.pro5
-rw-r--r--tests/auto/other/qdirectpainter/runDirectPainter/main.cpp81
-rw-r--r--tests/auto/other/qdirectpainter/runDirectPainter/runDirectPainter.pro7
-rw-r--r--tests/auto/other/qdirectpainter/test/test.pro7
-rw-r--r--tests/auto/other/qdirectpainter/tst_qdirectpainter.cpp242
-rw-r--r--tests/auto/other/qfocusevent/tst_qfocusevent.cpp12
-rw-r--r--tests/auto/other/qmultiscreen/tst_qmultiscreen.cpp4
-rw-r--r--tests/auto/other/qnetworkaccessmanager_and_qprogressdialog/tst_qnetworkaccessmanager_and_qprogressdialog.cpp4
-rw-r--r--tests/auto/other/qobjectperformance/tst_qobjectperformance.cpp4
-rw-r--r--tests/auto/other/qobjectrace/tst_qobjectrace.cpp4
-rw-r--r--tests/auto/other/qsharedpointer_and_qwidget/tst_qsharedpointer_and_qwidget.cpp4
-rwxr-xr-xtests/auto/other/qtokenautomaton/generateTokenizers.sh4
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/basic/basic.cpp4
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/basic/basic.h4
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.cpp4
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.h4
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.cpp4
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.h4
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.xml4
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.cpp4
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.h4
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.cpp4
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.h4
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.cpp4
-rw-r--r--tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.h4
-rw-r--r--tests/auto/other/qtokenautomaton/tst_qtokenautomaton.cpp4
-rw-r--r--tests/auto/other/windowsmobile/test/ddhelper.cpp4
-rw-r--r--tests/auto/other/windowsmobile/test/ddhelper.h4
-rw-r--r--tests/auto/other/windowsmobile/test/tst_windowsmobile.cpp4
-rw-r--r--tests/auto/other/windowsmobile/testQMenuBar/main.cpp4
-rw-r--r--tests/auto/platformquirks.h4
-rw-r--r--tests/auto/sql/kernel/qsql/tst_qsql.cpp4
-rw-r--r--tests/auto/sql/kernel/qsqldatabase/tst_databases.h4
-rw-r--r--tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp6
-rw-r--r--tests/auto/sql/kernel/qsqldriver/tst_qsqldriver.cpp4
-rw-r--r--tests/auto/sql/kernel/qsqlerror/tst_qsqlerror.cpp4
-rw-r--r--tests/auto/sql/kernel/qsqlfield/tst_qsqlfield.cpp4
-rw-r--r--tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp34
-rw-r--r--tests/auto/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp4
-rw-r--r--tests/auto/sql/kernel/qsqlthread/tst_qsqlthread.cpp4
-rw-r--r--tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp4
-rw-r--r--tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp4
-rw-r--r--tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp4
-rwxr-xr-xtests/auto/test.pl4
-rw-r--r--tests/auto/testlib/qsignalspy/tst_qsignalspy.cpp4
-rw-r--r--tests/auto/testlib/selftests/alive/qtestalive.cpp4
-rw-r--r--tests/auto/testlib/selftests/alive/tst_alive.cpp4
-rw-r--r--tests/auto/testlib/selftests/assert/tst_assert.cpp4
-rw-r--r--tests/auto/testlib/selftests/badxml/tst_badxml.cpp4
-rw-r--r--tests/auto/testlib/selftests/benchlibcallgrind/tst_benchlibcallgrind.cpp4
-rw-r--r--tests/auto/testlib/selftests/benchlibeventcounter/tst_benchlibeventcounter.cpp4
-rw-r--r--tests/auto/testlib/selftests/benchliboptions/tst_benchliboptions.cpp4
-rw-r--r--tests/auto/testlib/selftests/benchlibtickcounter/tst_benchlibtickcounter.cpp4
-rw-r--r--tests/auto/testlib/selftests/benchlibwalltime/tst_benchlibwalltime.cpp4
-rw-r--r--tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp4
-rw-r--r--tests/auto/testlib/selftests/commandlinedata/tst_commandlinedata.cpp4
-rw-r--r--tests/auto/testlib/selftests/counting/counting.pro7
-rw-r--r--tests/auto/testlib/selftests/counting/tst_counting.cpp216
-rw-r--r--tests/auto/testlib/selftests/crashes/tst_crashes.cpp4
-rw-r--r--tests/auto/testlib/selftests/datatable/tst_datatable.cpp4
-rw-r--r--tests/auto/testlib/selftests/datetime/tst_datetime.cpp4
-rw-r--r--tests/auto/testlib/selftests/differentexec/tst_differentexec.cpp4
-rw-r--r--tests/auto/testlib/selftests/exceptionthrow/tst_exceptionthrow.cpp4
-rw-r--r--tests/auto/testlib/selftests/expected_counting.lightxml78
-rw-r--r--tests/auto/testlib/selftests/expected_counting.txt32
-rw-r--r--tests/auto/testlib/selftests/expected_counting.xml81
-rw-r--r--tests/auto/testlib/selftests/expected_counting.xunitxml46
-rw-r--r--tests/auto/testlib/selftests/expected_expectfail.lightxml46
-rw-r--r--tests/auto/testlib/selftests/expected_expectfail.txt54
-rw-r--r--tests/auto/testlib/selftests/expected_expectfail.xml46
-rw-r--r--tests/auto/testlib/selftests/expected_expectfail.xunitxml27
-rw-r--r--tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp83
-rw-r--r--tests/auto/testlib/selftests/failinit/tst_failinit.cpp4
-rw-r--r--tests/auto/testlib/selftests/failinitdata/tst_failinitdata.cpp4
-rw-r--r--tests/auto/testlib/selftests/fetchbogus/tst_fetchbogus.cpp4
-rw-r--r--tests/auto/testlib/selftests/findtestdata/findtestdata.cpp14
-rw-r--r--tests/auto/testlib/selftests/float/tst_float.cpp4
-rw-r--r--tests/auto/testlib/selftests/globaldata/tst_globaldata.cpp4
-rw-r--r--tests/auto/testlib/selftests/longstring/tst_longstring.cpp4
-rw-r--r--tests/auto/testlib/selftests/maxwarnings/maxwarnings.cpp4
-rw-r--r--tests/auto/testlib/selftests/multiexec/tst_multiexec.cpp4
-rw-r--r--tests/auto/testlib/selftests/printdatatags/tst_printdatatags.cpp4
-rw-r--r--tests/auto/testlib/selftests/printdatatagswithglobaltags/tst_printdatatagswithglobaltags.cpp4
-rw-r--r--tests/auto/testlib/selftests/qexecstringlist/tst_qexecstringlist.cpp4
-rw-r--r--tests/auto/testlib/selftests/selftests.pri2
-rw-r--r--tests/auto/testlib/selftests/selftests.qrc4
-rw-r--r--tests/auto/testlib/selftests/singleskip/tst_singleskip.cpp4
-rw-r--r--tests/auto/testlib/selftests/skip/tst_skip.cpp4
-rw-r--r--tests/auto/testlib/selftests/skipinit/tst_skipinit.cpp4
-rw-r--r--tests/auto/testlib/selftests/skipinitdata/tst_skipinitdata.cpp4
-rw-r--r--tests/auto/testlib/selftests/sleep/tst_sleep.cpp4
-rw-r--r--tests/auto/testlib/selftests/strcmp/tst_strcmp.cpp4
-rw-r--r--tests/auto/testlib/selftests/subtest/tst_subtest.cpp4
-rw-r--r--tests/auto/testlib/selftests/tst_selftests.cpp5
-rw-r--r--tests/auto/testlib/selftests/warnings/tst_warnings.cpp4
-rw-r--r--tests/auto/testlib/selftests/xunit/tst_xunit.cpp4
-rw-r--r--tests/auto/tools/moc/Test.framework/Headers/testinterface.h4
-rw-r--r--tests/auto/tools/moc/assign-namespace.h4
-rw-r--r--tests/auto/tools/moc/backslash-newlines.h4
-rw-r--r--tests/auto/tools/moc/c-comments.h4
-rw-r--r--tests/auto/tools/moc/cstyle-enums.h4
-rw-r--r--tests/auto/tools/moc/cxx11-enums.h4
-rw-r--r--tests/auto/tools/moc/dir-in-include-path.h4
-rw-r--r--tests/auto/tools/moc/error-on-wrong-notify.h4
-rw-r--r--tests/auto/tools/moc/escapes-in-string-literals.h4
-rw-r--r--tests/auto/tools/moc/extraqualification.h4
-rw-r--r--tests/auto/tools/moc/forgotten-qinterface.h4
-rw-r--r--tests/auto/tools/moc/gadgetwithnoenums.h4
-rw-r--r--tests/auto/tools/moc/interface-from-framework.h4
-rw-r--r--tests/auto/tools/moc/macro-on-cmdline.h4
-rw-r--r--tests/auto/tools/moc/namespaced-flags.h4
-rw-r--r--tests/auto/tools/moc/no-keywords.h4
-rw-r--r--tests/auto/tools/moc/oldstyle-casts.h4
-rw-r--r--tests/auto/tools/moc/os9-newlines.h2
-rw-r--r--tests/auto/tools/moc/parse-boost.h4
-rw-r--r--tests/auto/tools/moc/pure-virtual-signals.h4
-rw-r--r--tests/auto/tools/moc/qinvokable.h4
-rw-r--r--tests/auto/tools/moc/qprivateslots.h4
-rw-r--r--tests/auto/tools/moc/single_function_keyword.h4
-rw-r--r--tests/auto/tools/moc/slots-with-void-template.h4
-rw-r--r--tests/auto/tools/moc/task189996.h4
-rw-r--r--tests/auto/tools/moc/task192552.h4
-rw-r--r--tests/auto/tools/moc/task234909.h4
-rw-r--r--tests/auto/tools/moc/task240368.h4
-rw-r--r--tests/auto/tools/moc/task87883.h4
-rw-r--r--tests/auto/tools/moc/template-gtgt.h4
-rw-r--r--tests/auto/tools/moc/testproject/Plugin/Plugin.h4
-rw-r--r--tests/auto/tools/moc/trigraphs.h4
-rw-r--r--tests/auto/tools/moc/tst_moc.cpp4
-rw-r--r--tests/auto/tools/moc/using-namespaces.h4
-rw-r--r--tests/auto/tools/moc/warn-on-multiple-qobject-subclasses.h4
-rw-r--r--tests/auto/tools/moc/warn-on-property-without-read.h4
-rw-r--r--tests/auto/tools/moc/win-newlines.h4
-rw-r--r--tests/auto/tools/qmake/testcompiler.cpp4
-rw-r--r--tests/auto/tools/qmake/testcompiler.h4
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/main.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/object1.h4
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/object2.h4
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/object3.h4
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/object4.h4
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/object5.h4
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/object6.h4
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/object7.h4
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/object8.h4
-rw-r--r--tests/auto/tools/qmake/testdata/findDeps/object9.h4
-rw-r--r--tests/auto/tools/qmake/testdata/findMocs/main.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/findMocs/object1.h4
-rw-r--r--tests/auto/tools/qmake/testdata/findMocs/object2.h4
-rw-r--r--tests/auto/tools/qmake/testdata/findMocs/object3.h4
-rw-r--r--tests/auto/tools/qmake/testdata/findMocs/object4.h4
-rw-r--r--tests/auto/tools/qmake/testdata/findMocs/object5.h4
-rw-r--r--tests/auto/tools/qmake/testdata/findMocs/object6.h4
-rw-r--r--tests/auto/tools/qmake/testdata/findMocs/object7.h4
-rw-r--r--tests/auto/tools/qmake/testdata/functions/1.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/functions/2.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/functions/one/1.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/functions/one/2.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/functions/three/wildcard21.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/functions/three/wildcard22.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/functions/two/1.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/functions/two/2.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/functions/wildcard21.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/functions/wildcard22.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/include_dir/main.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/include_dir/test_file.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/include_dir/test_file.h4
-rw-r--r--tests/auto/tools/qmake/testdata/include_function/main.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/install_depends/main.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/install_depends/test_file.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/install_depends/test_file.h4
-rw-r--r--tests/auto/tools/qmake/testdata/one_space/main.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/quotedfilenames/main.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/shadow_files/main.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/shadow_files/test_file.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/shadow_files/test_file.h4
-rw-r--r--tests/auto/tools/qmake/testdata/simple_app/main.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/simple_app/test_file.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/simple_app/test_file.h4
-rw-r--r--tests/auto/tools/qmake/testdata/simple_dll/simple.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/simple_dll/simple.h4
-rw-r--r--tests/auto/tools/qmake/testdata/simple_lib/simple.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/simple_lib/simple.h4
-rw-r--r--tests/auto/tools/qmake/testdata/subdir_via_pro_file_extra_target/simple/main.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/subdirs/simple_app/main.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/subdirs/simple_app/test_file.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/subdirs/simple_app/test_file.h4
-rw-r--r--tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple.cpp4
-rw-r--r--tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple.h4
-rw-r--r--tests/auto/tools/qmake/tst_qmake.cpp4
-rw-r--r--tests/auto/tools/rcc/tst_rcc.cpp4
-rw-r--r--tests/auto/tools/uic/baseline/batchtranslation.ui4
-rw-r--r--tests/auto/tools/uic/baseline/batchtranslation.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/config.ui4
-rw-r--r--tests/auto/tools/uic/baseline/config.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/finddialog.ui4
-rw-r--r--tests/auto/tools/uic/baseline/finddialog.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/formwindowsettings.ui4
-rw-r--r--tests/auto/tools/uic/baseline/formwindowsettings.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/helpdialog.ui4
-rw-r--r--tests/auto/tools/uic/baseline/helpdialog.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/listwidgeteditor.ui4
-rw-r--r--tests/auto/tools/uic/baseline/listwidgeteditor.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/newactiondialog.ui4
-rw-r--r--tests/auto/tools/uic/baseline/newactiondialog.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/newform.ui4
-rw-r--r--tests/auto/tools/uic/baseline/newform.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/orderdialog.ui4
-rw-r--r--tests/auto/tools/uic/baseline/orderdialog.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/paletteeditor.ui4
-rw-r--r--tests/auto/tools/uic/baseline/paletteeditor.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/phrasebookbox.ui4
-rw-r--r--tests/auto/tools/uic/baseline/phrasebookbox.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/plugindialog.ui4
-rw-r--r--tests/auto/tools/uic/baseline/plugindialog.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/previewwidget.ui4
-rw-r--r--tests/auto/tools/uic/baseline/previewwidget.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/qfiledialog.ui4
-rw-r--r--tests/auto/tools/uic/baseline/qfiledialog.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/qtgradientdialog.ui4
-rw-r--r--tests/auto/tools/uic/baseline/qtgradientdialog.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/qtgradienteditor.ui4
-rw-r--r--tests/auto/tools/uic/baseline/qtgradienteditor.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/qtgradientviewdialog.ui4
-rw-r--r--tests/auto/tools/uic/baseline/qtgradientviewdialog.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/saveformastemplate.ui4
-rw-r--r--tests/auto/tools/uic/baseline/saveformastemplate.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/statistics.ui4
-rw-r--r--tests/auto/tools/uic/baseline/statistics.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/stringlisteditor.ui4
-rw-r--r--tests/auto/tools/uic/baseline/stringlisteditor.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/tabbedbrowser.ui4
-rw-r--r--tests/auto/tools/uic/baseline/tabbedbrowser.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/tablewidgeteditor.ui4
-rw-r--r--tests/auto/tools/uic/baseline/tablewidgeteditor.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/translatedialog.ui4
-rw-r--r--tests/auto/tools/uic/baseline/translatedialog.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/treewidgeteditor.ui4
-rw-r--r--tests/auto/tools/uic/baseline/treewidgeteditor.ui.h4
-rw-r--r--tests/auto/tools/uic/baseline/trpreviewtool.ui4
-rw-r--r--tests/auto/tools/uic/baseline/trpreviewtool.ui.h4
-rw-r--r--tests/auto/tools/uic/tst_uic.cpp4
-rw-r--r--tests/auto/widgets/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp4
-rw-r--r--tests/auto/widgets/dialogs/qcolordialog/tst_qcolordialog.cpp8
-rw-r--r--tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp6
-rw-r--r--tests/auto/widgets/dialogs/qerrormessage/tst_qerrormessage.cpp4
-rw-r--r--tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp79
-rw-r--r--tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp9
-rw-r--r--tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp4
-rw-r--r--tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp9
-rw-r--r--tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog_mac_helpers.mm4
-rw-r--r--tests/auto/widgets/dialogs/qinputdialog/tst_qinputdialog.cpp30
-rw-r--r--tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp18
-rw-r--r--tests/auto/widgets/dialogs/qprogressdialog/tst_qprogressdialog.cpp4
-rw-r--r--tests/auto/widgets/dialogs/qsidebar/tst_qsidebar.cpp4
-rw-r--r--tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp22
-rw-r--r--tests/auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp4
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp6
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp18
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicseffectsource/tst_qgraphicseffectsource.cpp4
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp8
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp23
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp4
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicslayout/tst_qgraphicslayout.cpp4
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicslayoutitem/tst_qgraphicslayoutitem.cpp4
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp4
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsobject/tst_qgraphicsobject.cpp4
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicspixmapitem/tst_qgraphicspixmapitem.cpp4
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicspolygonitem/tst_qgraphicspolygonitem.cpp4
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp14
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp14
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicssceneindex/tst_qgraphicssceneindex.cpp4
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicstransform/tst_qgraphicstransform.cpp4
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp23
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview_2.cpp4
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicswidget/qgraphicswidget.pro1
-rw-r--r--tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp11
-rw-r--r--tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp36
-rw-r--r--tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp7
-rw-r--r--tests/auto/widgets/itemviews/qdatawidgetmapper/tst_qdatawidgetmapper.cpp4
-rw-r--r--tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp4
-rw-r--r--tests/auto/widgets/itemviews/qfileiconprovider/tst_qfileiconprovider.cpp4
-rw-r--r--tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp539
-rw-r--r--tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp10
-rw-r--r--tests/auto/widgets/itemviews/qitemeditorfactory/tst_qitemeditorfactory.cpp4
-rw-r--r--tests/auto/widgets/itemviews/qitemview/tst_qitemview.cpp4
-rw-r--r--tests/auto/widgets/itemviews/qitemview/viewstotest.cpp4
-rw-r--r--tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp4
-rw-r--r--tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp10
-rw-r--r--tests/auto/widgets/itemviews/qstandarditem/tst_qstandarditem.cpp4
-rw-r--r--tests/auto/widgets/itemviews/qstandarditemmodel/tst_qstandarditemmodel.cpp24
-rw-r--r--tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp4
-rw-r--r--tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp4
-rw-r--r--tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp7
-rw-r--r--tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp10
-rw-r--r--tests/auto/widgets/itemviews/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp4
-rw-r--r--tests/auto/widgets/kernel/kernel.pro2
-rw-r--r--tests/auto/widgets/kernel/qaction/tst_qaction.cpp4
-rw-r--r--tests/auto/widgets/kernel/qactiongroup/tst_qactiongroup.cpp4
-rw-r--r--tests/auto/widgets/kernel/qapplication/desktopsettingsaware/desktopsettingsaware.pro3
-rw-r--r--tests/auto/widgets/kernel/qapplication/desktopsettingsaware/main.cpp4
-rw-r--r--tests/auto/widgets/kernel/qapplication/modal/base.cpp4
-rw-r--r--tests/auto/widgets/kernel/qapplication/modal/base.h4
-rw-r--r--tests/auto/widgets/kernel/qapplication/modal/main.cpp4
-rw-r--r--tests/auto/widgets/kernel/qapplication/modal/modal.pro3
-rw-r--r--tests/auto/widgets/kernel/qapplication/qapplication.pro8
-rw-r--r--tests/auto/widgets/kernel/qapplication/test/test.pro18
-rw-r--r--tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp606
-rw-r--r--tests/auto/widgets/kernel/qapplication/wincmdline/main.cpp4
-rw-r--r--tests/auto/widgets/kernel/qapplication/wincmdline/wincmdline.pro3
-rw-r--r--tests/auto/widgets/kernel/qboxlayout/tst_qboxlayout.cpp4
-rw-r--r--tests/auto/widgets/kernel/qdesktopwidget/tst_qdesktopwidget.cpp4
-rw-r--r--tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp4
-rw-r--r--tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp4
-rw-r--r--tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp10
-rw-r--r--tests/auto/widgets/kernel/qstackedlayout/tst_qstackedlayout.cpp4
-rw-r--r--tests/auto/widgets/kernel/qtooltip/tst_qtooltip.cpp15
-rw-r--r--tests/auto/widgets/kernel/qwidget/qwidget.pro5
-rw-r--r--tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp194
-rw-r--r--tests/auto/widgets/kernel/qwidget/tst_qwidget_mac_helpers.h10
-rw-r--r--tests/auto/widgets/kernel/qwidget/tst_qwidget_mac_helpers.mm45
-rw-r--r--tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp13
-rw-r--r--tests/auto/widgets/kernel/qwidgetaction/tst_qwidgetaction.cpp6
-rw-r--r--tests/auto/widgets/shared/platforminputcontext.h4
-rw-r--r--tests/auto/widgets/styles/qmacstyle/tst_qmacstyle.cpp4
-rw-r--r--tests/auto/widgets/styles/qstyle/tst_qstyle.cpp8
-rw-r--r--tests/auto/widgets/styles/qstyleoption/tst_qstyleoption.cpp4
-rw-r--r--tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp23
-rw-r--r--tests/auto/widgets/util/qcompleter/tst_qcompleter.cpp4
-rw-r--r--tests/auto/widgets/util/qscroller/tst_qscroller.cpp4
-rw-r--r--tests/auto/widgets/util/qsystemtrayicon/tst_qsystemtrayicon.cpp4
-rw-r--r--tests/auto/widgets/util/qundogroup/tst_qundogroup.cpp4
-rw-r--r--tests/auto/widgets/util/qundostack/tst_qundostack.cpp4
-rw-r--r--tests/auto/widgets/util/util.pro4
-rw-r--r--tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp12
-rw-r--r--tests/auto/widgets/widgets/qabstractscrollarea/tst_qabstractscrollarea.cpp4
-rw-r--r--tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp26
-rw-r--r--tests/auto/widgets/widgets/qabstractspinbox/tst_qabstractspinbox.cpp4
-rw-r--r--tests/auto/widgets/widgets/qbuttongroup/tst_qbuttongroup.cpp6
-rw-r--r--tests/auto/widgets/widgets/qcalendarwidget/tst_qcalendarwidget.cpp4
-rw-r--r--tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp4
-rw-r--r--tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp11
-rw-r--r--tests/auto/widgets/widgets/qcommandlinkbutton/tst_qcommandlinkbutton.cpp4
-rw-r--r--tests/auto/widgets/widgets/qdatetimeedit/qdatetimeedit.pro4
-rw-r--r--tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp54
-rw-r--r--tests/auto/widgets/widgets/qdial/tst_qdial.cpp4
-rw-r--r--tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp4
-rw-r--r--tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp4
-rw-r--r--tests/auto/widgets/widgets/qdoublespinbox/tst_qdoublespinbox.cpp20
-rw-r--r--tests/auto/widgets/widgets/qdoublevalidator/tst_qdoublevalidator.cpp47
-rw-r--r--tests/auto/widgets/widgets/qfocusframe/tst_qfocusframe.cpp4
-rw-r--r--tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp4
-rw-r--r--tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp4
-rw-r--r--tests/auto/widgets/widgets/qintvalidator/tst_qintvalidator.cpp30
-rw-r--r--tests/auto/widgets/widgets/qlabel/qlabel.pro9
-rw-r--r--tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp8
-rw-r--r--tests/auto/widgets/widgets/qlcdnumber/tst_qlcdnumber.cpp4
-rw-r--r--tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp35
-rw-r--r--tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp4
-rw-r--r--tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp36
-rw-r--r--tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp46
-rw-r--r--tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp21
-rw-r--r--tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp28
-rw-r--r--tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp14
-rw-r--r--tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp6
-rw-r--r--tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp9
-rw-r--r--tests/auto/widgets/widgets/qradiobutton/tst_qradiobutton.cpp4
-rw-r--r--tests/auto/widgets/widgets/qregexpvalidator/tst_qregexpvalidator.cpp6
-rw-r--r--tests/auto/widgets/widgets/qscrollarea/tst_qscrollarea.cpp4
-rw-r--r--tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp6
-rw-r--r--tests/auto/widgets/widgets/qsizegrip/qsizegrip.pro2
-rw-r--r--tests/auto/widgets/widgets/qsizegrip/tst_qsizegrip.cpp6
-rw-r--r--tests/auto/widgets/widgets/qslider/tst_qslider.cpp4
-rw-r--r--tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp12
-rw-r--r--tests/auto/widgets/widgets/qsplitter/qsplitter.pro9
-rw-r--r--tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp6
-rw-r--r--tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp4
-rw-r--r--tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp6
-rw-r--r--tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp4
-rw-r--r--tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp6
-rw-r--r--tests/auto/widgets/widgets/qtextbrowser/qtextbrowser.html (renamed from tests/auto/widgets/widgets/qtextbrowser.html)0
-rw-r--r--tests/auto/widgets/widgets/qtextbrowser/qtextbrowser.pro9
-rw-r--r--tests/auto/widgets/widgets/qtextbrowser/tst_qtextbrowser.cpp28
-rw-r--r--tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp23
-rw-r--r--tests/auto/widgets/widgets/qtoolbar/tst_qtoolbar.cpp15
-rw-r--r--tests/auto/widgets/widgets/qtoolbox/tst_qtoolbox.cpp4
-rw-r--r--tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp4
-rw-r--r--tests/auto/widgets/widgets/qworkspace/tst_qworkspace.cpp6
-rw-r--r--tests/auto/xml/dom/qdom/qdom.pro9
-rw-r--r--tests/auto/xml/dom/qdom/tst_qdom.cpp66
-rw-r--r--tests/auto/xml/sax/qxml/qxml.pro6
-rw-r--r--tests/auto/xml/sax/qxml/tst_qxml.cpp9
-rw-r--r--tests/auto/xml/sax/qxmlinputsource/tst_qxmlinputsource.cpp4
-rwxr-xr-xtests/auto/xml/sax/qxmlsimplereader/generate_ref_files.sh4
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/parser/main.cpp4
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/parser/parser.cpp4
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/parser/parser.h4
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/qxmlsimplereader.pro6
-rw-r--r--tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp15
-rw-r--r--tests/baselineserver/shared/baselineprotocol.cpp4
-rw-r--r--tests/baselineserver/shared/baselineprotocol.h4
-rw-r--r--tests/baselineserver/shared/lookup3.cpp4
-rw-r--r--tests/baselineserver/shared/qbaselinetest.cpp4
-rw-r--r--tests/baselineserver/shared/qbaselinetest.h4
-rw-r--r--tests/baselineserver/src/baselineserver.cpp4
-rw-r--r--tests/baselineserver/src/baselineserver.h4
-rw-r--r--tests/baselineserver/src/main.cpp4
-rw-r--r--tests/baselineserver/src/report.cpp4
-rw-r--r--tests/baselineserver/src/report.h4
-rw-r--r--tests/benchmarks/corelib/codecs/qtextcodec/main.cpp4
-rw-r--r--tests/benchmarks/corelib/corelib.pro3
-rw-r--r--tests/benchmarks/corelib/io/qdir/10000/bench_qdir_10000.cpp4
-rw-r--r--tests/benchmarks/corelib/io/qdir/tree/bench_qdir_tree.cpp4
-rw-r--r--tests/benchmarks/corelib/io/qdiriterator/main.cpp4
-rw-r--r--tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.cpp4
-rw-r--r--tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.h5
-rw-r--r--tests/benchmarks/corelib/io/qfile/main.cpp4
-rw-r--r--tests/benchmarks/corelib/io/qfileinfo/main.cpp4
-rw-r--r--tests/benchmarks/corelib/io/qiodevice/main.cpp4
-rw-r--r--tests/benchmarks/corelib/io/qtemporaryfile/main.cpp4
-rw-r--r--tests/benchmarks/corelib/io/qurl/main.cpp4
-rw-r--r--tests/benchmarks/corelib/json/json.pro5
-rw-r--r--tests/benchmarks/corelib/json/numbers.json19
-rw-r--r--tests/benchmarks/corelib/json/tst_bench_qtbinaryjson.cpp126
-rw-r--r--tests/benchmarks/corelib/kernel/events/main.cpp4
-rw-r--r--tests/benchmarks/corelib/kernel/qcoreapplication/main.cpp4
-rw-r--r--tests/benchmarks/corelib/kernel/qmetaobject/main.cpp4
-rw-r--r--tests/benchmarks/corelib/kernel/qmetatype/tst_qmetatype.cpp6
-rw-r--r--tests/benchmarks/corelib/kernel/qobject/main.cpp4
-rw-r--r--tests/benchmarks/corelib/kernel/qobject/object.cpp4
-rw-r--r--tests/benchmarks/corelib/kernel/qobject/object.h4
-rw-r--r--tests/benchmarks/corelib/kernel/qtimer_vs_qmetaobject/tst_qtimer_vs_qmetaobject.cpp4
-rw-r--r--tests/benchmarks/corelib/kernel/qvariant/tst_qvariant.cpp6
-rw-r--r--tests/benchmarks/corelib/plugin/quuid/tst_quuid.cpp4
-rw-r--r--tests/benchmarks/corelib/thread/qmutex/tst_qmutex.cpp25
-rw-r--r--tests/benchmarks/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp4
-rw-r--r--tests/benchmarks/corelib/thread/qwaitcondition/tst_qwaitcondition.cpp4
-rw-r--r--tests/benchmarks/corelib/tools/containers-associative/main.cpp4
-rw-r--r--tests/benchmarks/corelib/tools/containers-sequential/main.cpp4
-rw-r--r--tests/benchmarks/corelib/tools/qalgorithms/.gitignore1
-rw-r--r--tests/benchmarks/corelib/tools/qalgorithms/qalgorithms.pro3
-rw-r--r--tests/benchmarks/corelib/tools/qalgorithms/tst_qalgorithms.cpp141
-rw-r--r--tests/benchmarks/corelib/tools/qbytearray/main.cpp4
-rw-r--r--tests/benchmarks/corelib/tools/qchar/main.cpp4
-rw-r--r--tests/benchmarks/corelib/tools/qcontiguouscache/main.cpp4
-rw-r--r--tests/benchmarks/corelib/tools/qhash/main.cpp128
-rw-r--r--tests/benchmarks/corelib/tools/qhash/main.h64
-rw-r--r--tests/benchmarks/corelib/tools/qhash/outofline.cpp30
-rw-r--r--tests/benchmarks/corelib/tools/qhash/paths_small_data.txt (renamed from tests/benchmarks/corelib/tools/qhash/data.txt)0
-rw-r--r--tests/benchmarks/corelib/tools/qhash/qhash.pro2
-rw-r--r--tests/benchmarks/corelib/tools/qhash/qhash_string.cpp131
-rw-r--r--tests/benchmarks/corelib/tools/qhash/qhash_string.h52
-rw-r--r--tests/benchmarks/corelib/tools/qlist/main.cpp4
-rw-r--r--tests/benchmarks/corelib/tools/qrect/main.cpp4
-rw-r--r--tests/benchmarks/corelib/tools/qregexp/main.cpp4
-rw-r--r--tests/benchmarks/corelib/tools/qstring/data.h4
-rw-r--r--tests/benchmarks/corelib/tools/qstring/generatelist.pl4
-rw-r--r--tests/benchmarks/corelib/tools/qstring/generatelist_char.pl4
-rw-r--r--tests/benchmarks/corelib/tools/qstring/main.cpp4
-rw-r--r--tests/benchmarks/corelib/tools/qstringbuilder/main.cpp4
-rw-r--r--tests/benchmarks/corelib/tools/qstringlist/main.cpp4
-rw-r--r--tests/benchmarks/corelib/tools/qvector/main.cpp4
-rw-r--r--tests/benchmarks/corelib/tools/qvector/outofline.cpp4
-rw-r--r--tests/benchmarks/corelib/tools/qvector/qrawvector.h5
-rw-r--r--tests/benchmarks/corelib/tools/tools.pro3
-rw-r--r--tests/benchmarks/dbus/qdbusperformance/server/server.cpp4
-rw-r--r--tests/benchmarks/dbus/qdbusperformance/serverobject.h4
-rw-r--r--tests/benchmarks/dbus/qdbusperformance/tst_qdbusperformance.cpp4
-rw-r--r--tests/benchmarks/dbus/qdbustype/main.cpp4
-rw-r--r--tests/benchmarks/gui/animation/qanimation/dummyanimation.cpp4
-rw-r--r--tests/benchmarks/gui/animation/qanimation/dummyanimation.h4
-rw-r--r--tests/benchmarks/gui/animation/qanimation/dummyobject.cpp4
-rw-r--r--tests/benchmarks/gui/animation/qanimation/dummyobject.h4
-rw-r--r--tests/benchmarks/gui/animation/qanimation/main.cpp4
-rw-r--r--tests/benchmarks/gui/animation/qanimation/rectanimation.cpp4
-rw-r--r--tests/benchmarks/gui/animation/qanimation/rectanimation.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/main.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemcontainer.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemcontainer.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemview.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemview.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractviewitem.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractviewitem.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglistview.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglistview.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitem.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitem.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcontainer.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcontainer.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listmodel.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listmodel.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listwidget.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listwidget.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/recycledlistitem.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/recycledlistitem.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/resourcemoninterface.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller_p.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/settings.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/settings.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelist.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelist.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/theme.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/theme.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview_p.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicslayout/tst_qgraphicslayout.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/main.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/main.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/main.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp4
-rw-r--r--tests/benchmarks/gui/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp4
-rw-r--r--tests/benchmarks/gui/image/blendbench/main.cpp4
-rw-r--r--tests/benchmarks/gui/image/qimageconversion/qimageconversion.pro2
-rw-r--r--tests/benchmarks/gui/image/qimageconversion/tst_qimageconversion.cpp4
-rw-r--r--tests/benchmarks/gui/image/qimagereader/images/ball.mngbin34394 -> 0 bytes
-rw-r--r--tests/benchmarks/gui/image/qimagereader/images/corrupt-data.tifbin8590 -> 0 bytes
-rw-r--r--tests/benchmarks/gui/image/qimagereader/images/corrupt.mngbin183 -> 0 bytes
-rw-r--r--tests/benchmarks/gui/image/qimagereader/images/fire.mngbin44430 -> 0 bytes
-rw-r--r--tests/benchmarks/gui/image/qimagereader/images/rgba_adobedeflate_littleendian.tifbin4784 -> 0 bytes
-rw-r--r--tests/benchmarks/gui/image/qimagereader/images/rgba_lzw_littleendian.tifbin26690 -> 0 bytes
-rw-r--r--tests/benchmarks/gui/image/qimagereader/images/rgba_nocompression_bigendian.tifbin160384 -> 0 bytes
-rw-r--r--tests/benchmarks/gui/image/qimagereader/images/rgba_nocompression_littleendian.tifbin160388 -> 0 bytes
-rw-r--r--tests/benchmarks/gui/image/qimagereader/images/rgba_packbits_littleendian.tifbin161370 -> 0 bytes
-rw-r--r--tests/benchmarks/gui/image/qimagereader/images/rgba_zipdeflate_littleendian.tifbin14728 -> 0 bytes
-rw-r--r--tests/benchmarks/gui/image/qimagereader/qimagereader.pro2
-rw-r--r--tests/benchmarks/gui/image/qimagereader/tst_qimagereader.cpp8
-rw-r--r--tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp4
-rw-r--r--tests/benchmarks/gui/image/qpixmapcache/tst_qpixmapcache.cpp4
-rw-r--r--tests/benchmarks/gui/itemviews/itemviews.pro3
-rw-r--r--tests/benchmarks/gui/itemviews/qheaderview/qheaderview.pro7
-rw-r--r--tests/benchmarks/gui/itemviews/qheaderview/qheaderviewbench.cpp264
-rw-r--r--tests/benchmarks/gui/itemviews/qtableview/tst_qtableview.cpp4
-rw-r--r--tests/benchmarks/gui/kernel/qapplication/main.cpp4
-rw-r--r--tests/benchmarks/gui/kernel/qguimetatype/tst_qguimetatype.cpp4
-rw-r--r--tests/benchmarks/gui/kernel/qguivariant/tst_qguivariant.cpp4
-rw-r--r--tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp4
-rw-r--r--tests/benchmarks/gui/math3d/qmatrix4x4/tst_qmatrix4x4.cpp4
-rw-r--r--tests/benchmarks/gui/math3d/qquaternion/tst_qquaternion.cpp4
-rw-r--r--tests/benchmarks/gui/painting/qpainter/tst_qpainter.cpp4
-rw-r--r--tests/benchmarks/gui/painting/qregion/main.cpp4
-rw-r--r--tests/benchmarks/gui/painting/qtbench/benchmarktests.h4
-rw-r--r--tests/benchmarks/gui/painting/qtbench/tst_qtbench.cpp4
-rw-r--r--tests/benchmarks/gui/painting/qtracebench/tst_qtracebench.cpp4
-rw-r--r--tests/benchmarks/gui/painting/qtransform/tst_qtransform.cpp4
-rw-r--r--tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp4
-rw-r--r--tests/benchmarks/gui/text/qfontmetrics/main.cpp4
-rw-r--r--tests/benchmarks/gui/text/qtext/main.cpp67
-rw-r--r--tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/main.cpp4
-rw-r--r--tests/benchmarks/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp4
-rw-r--r--tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp4
-rw-r--r--tests/benchmarks/network/kernel/qhostinfo/main.cpp4
-rw-r--r--tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp4
-rw-r--r--tests/benchmarks/network/ssl/qsslsocket/tst_qsslsocket.cpp4
-rw-r--r--tests/benchmarks/opengl/main.cpp4
-rw-r--r--tests/benchmarks/plugins/imageformats/jpeg/jpeg.cpp4
-rw-r--r--tests/benchmarks/sql/kernel/qsqlquery/main.cpp4
-rw-r--r--tests/manual/bearerex/bearerex.cpp4
-rw-r--r--tests/manual/bearerex/bearerex.h4
-rw-r--r--tests/manual/bearerex/datatransferer.cpp4
-rw-r--r--tests/manual/bearerex/datatransferer.h4
-rw-r--r--tests/manual/bearerex/main.cpp4
-rw-r--r--tests/manual/bearerex/xqlistwidget.cpp4
-rw-r--r--tests/manual/bearerex/xqlistwidget.h4
-rw-r--r--tests/manual/cmake/fail4/myobject.cpp4
-rw-r--r--tests/manual/cmake/fail4/myobject.h4
-rw-r--r--tests/manual/cmake/fail5/myobject.cpp4
-rw-r--r--tests/manual/cmake/fail5/myobject.h4
-rw-r--r--tests/manual/cmake/pass(needsquoting)6/mywidget.cpp4
-rw-r--r--tests/manual/cmake/pass(needsquoting)6/mywidget.h4
-rw-r--r--tests/manual/cmake/pass1/three.cpp4
-rw-r--r--tests/manual/cmake/pass1/two.cpp4
-rw-r--r--tests/manual/cmake/pass2/myobject.cpp4
-rw-r--r--tests/manual/cmake/pass2/myobject.h4
-rw-r--r--tests/manual/cmake/pass3/mywidget.cpp4
-rw-r--r--tests/manual/cmake/pass3/mywidget.h4
-rw-r--r--tests/manual/cocoa/qt_on_cocoa/main.mm4
-rw-r--r--tests/manual/cocoa/qt_on_cocoa/window.cpp4
-rw-r--r--tests/manual/cocoa/qt_on_cocoa/window.h4
-rw-r--r--tests/manual/gestures/graphicsview/gestures.cpp4
-rw-r--r--tests/manual/gestures/graphicsview/gestures.h4
-rw-r--r--tests/manual/gestures/graphicsview/imageitem.cpp4
-rw-r--r--tests/manual/gestures/graphicsview/imageitem.h4
-rw-r--r--tests/manual/gestures/graphicsview/main.cpp4
-rw-r--r--tests/manual/gestures/graphicsview/mousepangesturerecognizer.cpp4
-rw-r--r--tests/manual/gestures/graphicsview/mousepangesturerecognizer.h4
-rw-r--r--tests/manual/gestures/scrollarea/main.cpp4
-rw-r--r--tests/manual/gestures/scrollarea/mousepangesturerecognizer.cpp4
-rw-r--r--tests/manual/gestures/scrollarea/mousepangesturerecognizer.h4
-rw-r--r--tests/manual/inputmethodhints/inputmethodhints.cpp4
-rw-r--r--tests/manual/inputmethodhints/inputmethodhints.h4
-rw-r--r--tests/manual/inputmethodhints/main.cpp4
-rw-r--r--tests/manual/keypadnavigation/main.cpp4
-rw-r--r--tests/manual/lance/interactivewidget.cpp4
-rw-r--r--tests/manual/lance/interactivewidget.h4
-rw-r--r--tests/manual/lance/main.cpp4
-rw-r--r--tests/manual/lance/widgets.h4
-rwxr-xr-xtests/manual/mkspecs/test.sh4
-rw-r--r--tests/manual/network_remote_stresstest/tst_network_remote_stresstest.cpp4
-rw-r--r--tests/manual/network_stresstest/minihttpserver.cpp4
-rw-r--r--tests/manual/network_stresstest/minihttpserver.h4
-rw-r--r--tests/manual/network_stresstest/tst_network_stresstest.cpp4
-rw-r--r--tests/manual/qcursor/allcursors/main.cpp4
-rw-r--r--tests/manual/qcursor/allcursors/mainwindow.cpp4
-rw-r--r--tests/manual/qcursor/allcursors/mainwindow.h4
-rw-r--r--tests/manual/qcursor/grab_override/main.cpp4
-rw-r--r--tests/manual/qcursor/grab_override/mainwindow.cpp4
-rw-r--r--tests/manual/qcursor/grab_override/mainwindow.h4
-rw-r--r--tests/manual/qdesktopwidget/main.cpp4
-rw-r--r--tests/manual/qgraphicsitemgroup/customitem.cpp4
-rw-r--r--tests/manual/qgraphicsitemgroup/customitem.h4
-rw-r--r--tests/manual/qgraphicsitemgroup/main.cpp4
-rw-r--r--tests/manual/qgraphicsitemgroup/widget.cpp4
-rw-r--r--tests/manual/qgraphicsitemgroup/widget.h4
-rw-r--r--tests/manual/qgraphicslayout/flicker/main.cpp4
-rw-r--r--tests/manual/qgraphicslayout/flicker/window.cpp4
-rw-r--r--tests/manual/qgraphicslayout/flicker/window.h4
-rw-r--r--tests/manual/qhttpnetworkconnection/main.cpp4
-rw-r--r--tests/manual/qimagereader/main.cpp4
-rw-r--r--tests/manual/qlocale/calendar.cpp4
-rw-r--r--tests/manual/qlocale/calendar.h4
-rw-r--r--tests/manual/qlocale/currency.cpp4
-rw-r--r--tests/manual/qlocale/currency.h4
-rw-r--r--tests/manual/qlocale/dateformats.cpp4
-rw-r--r--tests/manual/qlocale/dateformats.h4
-rw-r--r--tests/manual/qlocale/info.cpp4
-rw-r--r--tests/manual/qlocale/info.h4
-rw-r--r--tests/manual/qlocale/languages.cpp4
-rw-r--r--tests/manual/qlocale/languages.h4
-rw-r--r--tests/manual/qlocale/main.cpp4
-rw-r--r--tests/manual/qlocale/miscellaneous.cpp4
-rw-r--r--tests/manual/qlocale/miscellaneous.h4
-rw-r--r--tests/manual/qlocale/numberformats.cpp4
-rw-r--r--tests/manual/qlocale/numberformats.h4
-rw-r--r--tests/manual/qlocale/window.cpp4
-rw-r--r--tests/manual/qlocale/window.h4
-rw-r--r--tests/manual/qnetworkaccessmanager/qget/qget.cpp4
-rw-r--r--tests/manual/qnetworkaccessmanager/qget/qget.h4
-rw-r--r--tests/manual/qnetworkaccessmanager/qget/qget.pro3
-rw-r--r--tests/manual/qnetworkreply/main.cpp4
-rw-r--r--tests/manual/qssloptions/main.cpp4
-rw-r--r--tests/manual/qtabletevent/device_information/main.cpp4
-rw-r--r--tests/manual/qtabletevent/device_information/tabletwidget.cpp4
-rw-r--r--tests/manual/qtabletevent/device_information/tabletwidget.h4
-rw-r--r--tests/manual/qtabletevent/event_compression/main.cpp4
-rw-r--r--tests/manual/qtabletevent/event_compression/mousestatwidget.cpp4
-rw-r--r--tests/manual/qtabletevent/event_compression/mousestatwidget.h4
-rw-r--r--tests/manual/qtabletevent/regular_widgets/main.cpp4
-rw-r--r--tests/manual/qtbug-8933/main.cpp4
-rw-r--r--tests/manual/qtbug-8933/widget.cpp4
-rw-r--r--tests/manual/qtbug-8933/widget.h4
-rw-r--r--tests/manual/qtouchevent/main.cpp4
-rw-r--r--tests/manual/qtouchevent/touchwidget.cpp4
-rw-r--r--tests/manual/qtouchevent/touchwidget.h4
-rw-r--r--tests/manual/qwidget_zorder/main.cpp4
-rw-r--r--tests/manual/repaint/mainwindow/main.cpp4
-rw-r--r--tests/manual/repaint/scrollarea/main.cpp4
-rw-r--r--tests/manual/repaint/shared/shared.h4
-rw-r--r--tests/manual/repaint/splitter/main.cpp4
-rw-r--r--tests/manual/repaint/tableview/main.cpp4
-rw-r--r--tests/manual/repaint/task141091/main.cpp4
-rw-r--r--tests/manual/repaint/toplevel/main.cpp4
-rw-r--r--tests/manual/repaint/widget/main.cpp4
-rw-r--r--tests/manual/socketengine/main.cpp4
-rw-r--r--tests/manual/textrendering/glyphshaping/main.cpp4
-rw-r--r--tests/manual/textrendering/textperformance/main.cpp4
-rw-r--r--tests/manual/widgets/itemviews/delegate/example.cpp86
-rw-r--r--tests/manual/widgets/itemviews/delegate/example.pro2
-rw-r--r--tests/manual/windowflags/controllerwindow.cpp4
-rw-r--r--tests/manual/windowflags/controllerwindow.h4
-rw-r--r--tests/manual/windowflags/main.cpp4
-rw-r--r--tests/manual/windowflags/previewwindow.cpp4
-rw-r--r--tests/manual/windowflags/previewwindow.h4
-rw-r--r--tests/shared/filesystem.h4
-rw-r--r--tools/configure/configure.pro2
-rw-r--r--tools/configure/configure_pch.h4
-rw-r--r--tools/configure/configureapp.cpp332
-rw-r--r--tools/configure/configureapp.h4
-rw-r--r--tools/configure/environment.cpp4
-rw-r--r--tools/configure/environment.h4
-rw-r--r--tools/configure/main.cpp4
-rw-r--r--tools/configure/tools.cpp4
-rw-r--r--tools/configure/tools.h4
-rw-r--r--tools/shared/windows/registry.cpp4
-rw-r--r--tools/shared/windows/registry_p.h4
-rw-r--r--util/accessibilityinspector/accessibilityinspector.cpp78
-rw-r--r--util/accessibilityinspector/accessibilityinspector.h78
-rw-r--r--util/accessibilityinspector/accessibilityinspector.pri6
-rw-r--r--util/accessibilityinspector/accessibilityscenemanager.cpp93
-rw-r--r--util/accessibilityinspector/accessibilityscenemanager.h78
-rw-r--r--util/accessibilityinspector/main.cpp78
-rw-r--r--util/accessibilityinspector/optionswidget.cpp78
-rw-r--r--util/accessibilityinspector/optionswidget.h78
-rw-r--r--util/accessibilityinspector/screenreader.cpp89
-rw-r--r--util/accessibilityinspector/screenreader.h82
-rw-r--r--util/accessibilityinspector/screenreader_mac.mm60
-rw-r--r--util/corelib/qurl-generateTLDs/main.cpp4
-rw-r--r--util/lexgen/configfile.cpp4
-rw-r--r--util/lexgen/configfile.h4
-rw-r--r--util/lexgen/generator.cpp4
-rw-r--r--util/lexgen/generator.h4
-rw-r--r--util/lexgen/global.h4
-rw-r--r--util/lexgen/main.cpp4
-rw-r--r--util/lexgen/nfa.cpp4
-rw-r--r--util/lexgen/nfa.h4
-rw-r--r--util/lexgen/re2nfa.cpp4
-rw-r--r--util/lexgen/re2nfa.h4
-rw-r--r--util/lexgen/tests/tst_lexgen.cpp4
-rw-r--r--util/lexgen/tokenizer.cpp4
-rwxr-xr-xutil/local_database/cldr2qlocalexml.py4
-rwxr-xr-xutil/local_database/dateconverter.py4
-rw-r--r--util/local_database/enumdata.py4
-rwxr-xr-xutil/local_database/qlocalexml2cpp.py4
-rw-r--r--util/local_database/testlocales/localemodel.cpp4
-rw-r--r--util/local_database/testlocales/localemodel.h4
-rw-r--r--util/local_database/testlocales/localewidget.cpp4
-rw-r--r--util/local_database/testlocales/localewidget.h4
-rw-r--r--util/local_database/testlocales/main.cpp4
-rw-r--r--util/local_database/xpathlite.py4
-rw-r--r--util/plugintest/main.cpp4
-rw-r--r--util/s60pixelmetrics/bld.inf45
-rw-r--r--util/s60pixelmetrics/pixel_metrics.cpp1255
-rw-r--r--util/s60pixelmetrics/pixel_metrics.h218
-rw-r--r--util/s60pixelmetrics/pm_mapper.hrh66
-rw-r--r--util/s60pixelmetrics/pm_mapper.mmp91
-rw-r--r--util/s60pixelmetrics/pm_mapper.pkg32
-rw-r--r--util/s60pixelmetrics/pm_mapper.rss160
-rw-r--r--util/s60pixelmetrics/pm_mapper_reg.rss57
-rw-r--r--util/s60pixelmetrics/pm_mapperapp.cpp959
-rw-r--r--util/s60pixelmetrics/pm_mapperapp.h190
-rw-r--r--util/s60pixelmetrics/pm_mapperview.cpp375
-rw-r--r--util/s60pixelmetrics/pm_mapperview.h228
-rw-r--r--util/s60theme/README31
-rw-r--r--util/s60theme/main.cpp110
-rw-r--r--util/s60theme/s60theme.pro12
-rw-r--r--util/s60theme/s60themeconvert.cpp312
-rw-r--r--util/s60theme/s60themeconvert.h54
-rwxr-xr-xutil/scripts/make_qfeatures_dot_h8
-rw-r--r--util/unicode/codecs/big5/main.cpp4
-rw-r--r--util/unicode/main.cpp8
-rwxr-xr-xutil/unicode/writingSystems.sh4
-rw-r--r--util/xkbdatagen/main.cpp8
6465 files changed, 108760 insertions, 305709 deletions
diff --git a/.gitignore b/.gitignore
index 90010e3f1b..c059b26111 100644
--- a/.gitignore
+++ b/.gitignore
@@ -100,6 +100,7 @@ mkspecs/qconfig.pri
moc_*.cpp
qmake/qmake.exe
qmake/Makefile.bak
+qmake/qmake_pch.pch
src/corelib/global/qconfig.cpp
src/corelib/global/qconfig.h
src/corelib/global/qconfig.h.qmake
diff --git a/INSTALL b/INSTALL
index 7279f06f58..25781a4825 100644
--- a/INSTALL
+++ b/INSTALL
@@ -10,5 +10,3 @@ Mac OS X: http://qt.nokia.com/doc/%SHORTVERSION%/install-mac.html
Windows: http://qt.nokia.com/doc/%SHORTVERSION%/install-win.html
Windows CE: http://qt.nokia.com/doc/%SHORTVERSION%/install-wince.html
X11 Platforms: http://qt.nokia.com/doc/%SHORTVERSION%/install-x11.html
-Symbian Platform: http://qt.nokia.com/doc/%SHORTVERSION%/install-symbian.html
-
diff --git a/LICENSE.LGPL b/LICENSE.LGPL
index a32ac8471b..19d190d65d 100644
--- a/LICENSE.LGPL
+++ b/LICENSE.LGPL
@@ -1,7 +1,7 @@
GNU LESSER GENERAL PUBLIC LICENSE
The Qt GUI Toolkit is Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- Contact: Nokia Corporation (qt-info@nokia.com)
+ Contact: http://www.qt-project.org/
You may use, distribute and copy the Qt GUI Toolkit under the terms of
GNU Lesser General Public License version 2.1, which is displayed below.
diff --git a/bin/createpackage b/bin/createpackage
deleted file mode 100755
index fdd4eebdea..0000000000
--- a/bin/createpackage
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-scriptpath=`dirname $0`
-perl $scriptpath/createpackage.pl "$@"
diff --git a/bin/createpackage.bat b/bin/createpackage.bat
deleted file mode 100755
index cd0480dd39..0000000000
--- a/bin/createpackage.bat
+++ /dev/null
@@ -1,44 +0,0 @@
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-::
-:: Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
-::
-:: This file is part of the test suite 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$
-::
-:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
-
-@echo off
-set scriptpath=%~dp0
-perl %scriptpath%createpackage.pl %*
diff --git a/bin/createpackage.pl b/bin/createpackage.pl
deleted file mode 100755
index c723e6574b..0000000000
--- a/bin/createpackage.pl
+++ /dev/null
@@ -1,439 +0,0 @@
-#!/usr/bin/perl
-#############################################################################
-##
-## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
-##
-## This file is part of the S60 port 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$
-##
-#############################################################################
-
-############################################################################################
-#
-# Convenience script for creating signed packages you can install on your phone.
-#
-############################################################################################
-
-use strict;
-
-# use a command-line parsing module
-use Getopt::Long;
-# Use file name parsing module
-use File::Basename;
-# Use File::Spec services mainly rel2abs
-use File::Spec;
-# Use File::Path - to make stub sis target directory
-use File::Path;
-# use CWD abs_bath, which is exported only on request
-use Cwd 'abs_path';
-use File::Copy;
-
-sub Usage() {
- print <<ENDUSAGESTRING;
-
-==============================================================================================
-Convenience script for creating signed packages you can install on your phone.
-
-Usage: createpackage.pl [options] templatepkg [target]-[platform] [certificate key [passphrase]]
-
-Where supported options are as follows:
- [-i|install] = Install the package right away using PC suite.
- [-p|preprocess] = Only preprocess the template .pkg file.
- [-c|certfile <file>] = The file containing certificate information for signing.
- The file can have several certificates, each specified in
- separate line. The certificate, key and passphrase in line
- must be ';' separated. Lines starting with '#' are treated
- as a comments. Also empty lines are ignored. The paths in
- <file> can be absolute or relative to <file>.
- [-u|unsigned] = Preserves the unsigned package.
- [-o|only-unsigned] = Creates only unsigned package.
- [-s|stub] = Generates stub sis for ROM.
- [-n|sisname <name>] = Specifies the final sis name.
- [-g|gcce-is-armv5] = Convert gcce platform to armv5.
- [-d|dont-patch] = Skip automatic patching of capabilities and pkg file if default certificate
- is used. Instead non-self-signable capabilities just cause warnings.
- [-t|tmp-dir <path>] = Specifies temporary directory to be used for package creation.
- Defaults to 'createpackage_tmp' under same directory as templatepkg.
-Where parameters are as follows:
- templatepkg = Name of .pkg file template
- target = Either debug or release
- platform = One of the supported platform
- winscw | gcce | armv5 | armv6 | armv7
- Note that when packaging binaries built using gcce and symbian-sbsv2
- mkspec, armv5 must be used for platform instead of gcce.
- certificate = The certificate file used for signing
- key = The certificate's private key file
- passphrase = The passphrase of the certificate's private key file
-
-Example:
- createpackage.pl fluidlauncher_template.pkg release-armv5
-
-Example with certfile:
- createpackage.pl -c=mycerts.txt fluidlauncher_template.pkg release-armv5
-
- Content of 'mycerts.txt' must be something like this:
- # This is comment line, also the empty lines are ignored
- rd.cer;rd-key.pem
- .\\cert\\mycert.cer;.\\cert\\mykey.key;yourpassword
- X:\\QtS60\\s60installs\\selfsigned.cer;X:\\QtS60\\s60installs\\selfsigned.key
-
-If no certificate and key files are provided, either a RnD certificate or
-a self-signed certificate from QtDir\\src\\s60installs directory is used.
-In the latter case the resulting package will also be automatically patched
-using patch_capabilities.pl script, which makes it unsuitable for distribution.
-Always specify certificates explicitly if you wish to distribute your package.
-
-==============================================================================================
-
-ENDUSAGESTRING
-
- exit();
-}
-
-# Read given options
-my $install = "";
-my $preprocessonly = "";
-my $certfile = "";
-my $preserveUnsigned = "";
-my $stub = "";
-my $signed_sis_name = "";
-my $onlyUnsigned = "";
-my $convertGcce = "";
-my $dontPatchCaps = "";
-my $tempPackageDir = "";
-
-unless (GetOptions('i|install' => \$install,
- 'p|preprocess' => \$preprocessonly,
- 'c|certfile=s' => \$certfile,
- 'u|unsigned' => \$preserveUnsigned,
- 'o|only-unsigned' => \$onlyUnsigned,
- 's|stub' => \$stub,
- 'n|sisname=s' => \$signed_sis_name,
- 'g|gcce-is-armv5' => \$convertGcce,
- 'd|dont-patch' => \$dontPatchCaps,
- 't|tmp-dir=s' => \$tempPackageDir,)) {
- Usage();
-}
-
-my $epocroot = $ENV{EPOCROOT};
-my $epocToolsDir = "";
-if ($epocroot ne "") {
- $epocroot =~ s,\\,/,g;
- if ($epocroot =~ m,[^/]$,) {
- $epocroot = $epocroot."/";
- }
- $epocToolsDir = "${epocroot}epoc32/tools/";
-}
-
-my $certfilepath = abs_path(dirname($certfile));
-
-# Read params to variables
-my $templatepkg = $ARGV[0];
-my $targetplatform = lc $ARGV[1];
-
-if ($targetplatform eq "") {
- $targetplatform = "-";
-}
-
-my @tmpvalues = split('-', $targetplatform);
-my $target;
-$target = $tmpvalues[0] or $target = "";
-my $platform;
-$platform = $tmpvalues[1] or $platform = "";
-
-if ($platform =~ m/^gcce$/i) {
- if (($convertGcce ne "")) {
- $platform = "armv5";
- } elsif ($ENV{SBS_HOME}) {
- # Print a informative note in case suspected misuse is detected.
- print "\nNote: You should use armv5 as platform or specify -g parameter to convert platform\n";
- print " when packaging gcce binaries built using symbian-sbsv2 mkspec.\n\n";
- }
-}
-
-# Convert visual target to real target (debug->udeb and release->urel)
-$target =~ s/debug/udeb/i;
-$target =~ s/release/urel/i;
-
-my $certificate;
-$certificate = $ARGV[2] or $certificate = "";
-my $key;
-$key = $ARGV[3] or $key = "";
-my $passphrase;
-$passphrase = $ARGV[4] or $passphrase = "";
-
-if ($tempPackageDir eq "") {
- my ($templateVolume, $templatePath, $templateFileName) = File::Spec->splitpath($templatepkg);
- $tempPackageDir = File::Spec->catpath($templateVolume, $templatePath."createpackage_tmp", "");
-}
-
-mkpath($tempPackageDir);
-
-# Generate output pkg basename (i.e. file name without extension)
-my $pkgoutputbasename = $templatepkg;
-$pkgoutputbasename =~ s/_template/_$targetplatform/g;
-$pkgoutputbasename =~ s/_installer\.pkg/_installer___temp\.pkg/g;
-$pkgoutputbasename =~ s/\.pkg//g;
-
-# Store output file names to variables
-my ($dummy1, $dummy2, $pkgoutput) = File::Spec->splitpath($pkgoutputbasename.".pkg");
-$pkgoutput = $tempPackageDir."/".$pkgoutput;
-my $sisoutputbasename;
-if ($signed_sis_name eq "") {
- $sisoutputbasename = $pkgoutputbasename;
- $sisoutputbasename =~ s/_$targetplatform//g;
- $sisoutputbasename =~ s/_installer___temp/_installer/g;
- $signed_sis_name = $sisoutputbasename.".sis";
-} else {
- $sisoutputbasename = $signed_sis_name;
- if ($sisoutputbasename =~ m/(\.sis$|\.sisx$)/i) {
- $sisoutputbasename =~ s/$1//i;
- } else {
- $signed_sis_name = $signed_sis_name.".sis";
- }
-}
-
-my $installer_unsigned_app_sis_name = "";
-my $installer_app_sis_name = "";
-
-if ($templatepkg =~ m/_installer\.pkg$/i && $onlyUnsigned) {
- $installer_unsigned_app_sis_name = $templatepkg;
- $installer_unsigned_app_sis_name =~ s/_installer.pkg$/_unsigned.sis/i;
- $installer_app_sis_name = $installer_unsigned_app_sis_name;
- $installer_app_sis_name =~ s/_unsigned.sis$/.sis/;
-}
-
-my $unsigned_sis_name = $sisoutputbasename."_unsigned.sis";
-my $stub_sis_name = $sisoutputbasename.".sis";
-
-my $certtext = $certificate;
-
-# Check some pre-conditions and print error messages if needed.
-unless (length($templatepkg)) {
- print "\nERROR: Template PKG filename is not defined!\n";
- Usage();
-}
-
-# Check template exist
-stat($templatepkg);
-unless( -e _ ) {
- print "\nERROR: Package description file '$templatepkg' does not exist!\n";
- Usage();
-}
-
-# Check certifcate preconditions and set default certificate variables if needed
-if (length($certificate)) {
- unless(length($key)) {
- print "\nERROR: Custom certificate key file parameter missing.!\n";
- Usage();
- }
-} else {
- #If no certificate is given, check default options
- my $scriptpath = dirname(__FILE__);
- my $certpath = File::Spec->catdir($scriptpath, File::Spec->updir(), "src/s60installs");
-
- unless (-e $certpath) {
- my $qmakeCmd = File::Spec->catfile($scriptpath, "qmake");
- $certpath = `$qmakeCmd -query QT_INSTALL_PREFIX`;
- $certpath =~ s/\s+$//;
- $certpath = File::Spec->catdir($certpath, "src/s60installs");
- }
-
- $certtext = "RnD";
- $certificate = File::Spec->catfile($certpath, "rd.cer");
- $key = File::Spec->catfile($certpath, "rd-key.pem");
-
- stat($certificate);
- unless( -e _ ) {
- $certtext = "Self Signed";
- $certificate = File::Spec->catfile($certpath, "selfsigned.cer");
- $key = File::Spec->catfile($certpath, "selfsigned.key");
- }
-}
-
-# Read the certificates from file to two dimensional array
-my @certificates;
-if (length($certfile)) {
- open CERTFILE, "<$certfile" or die $!;
- while(<CERTFILE>){
- s/#.*//; # ignore comments by erasing them
- next if /^(\s)*$/; # skip blank lines
- chomp; # remove trailing newline characters
- my @certinfo = split(';', $_); # split row to certinfo
-
- # Trim spaces
- for(@certinfo) {
- s/^\s+//;
- s/\s+$//;
- }
-
- # Do some validation
- unless(scalar(@certinfo) >= 2 && scalar(@certinfo) <= 3 && length($certinfo[0]) && length($certinfo[1]) ) {
- print "\nERROR: $certfile line '$_' does not contain valid information!\n";
- Usage();
- }
-
- push @certificates, [@certinfo]; # push data to two dimensional array
- }
-}
-
-# Remove any existing .sis packages
-unlink $unsigned_sis_name;
-if (!$onlyUnsigned) {
- unlink $signed_sis_name;
-}
-unlink $pkgoutput;
-
-# Preprocess PKG
-
-local $/;
-# read template file
-open( TEMPLATE, $templatepkg) or die "ERROR: '$templatepkg': $!";
-$_=<TEMPLATE>;
-close (TEMPLATE);
-
-# If the pkg file does not contain macros, there is no need for platform or target.
-if (m/\$\(PLATFORM\)/) {
- unless (length($platform) && length($target)) {
- print "\nERROR: Platform or target is not defined!\n";
- Usage();
- }
-}
-
-# replace the PKG variables
-s/\$\(PLATFORM\)/$platform/gm;
-s/\$\(TARGET\)/$target/gm;
-
-if ($installer_unsigned_app_sis_name ne "") {
- s/$installer_app_sis_name\"/$installer_unsigned_app_sis_name\"/;
-}
-
-#write the output
-open( OUTPUT, ">$pkgoutput" ) or die "ERROR: '$pkgoutput' $!";
-print OUTPUT $_;
-close OUTPUT;
-
-if ($preprocessonly) {
- # Copy preprocessed file from tmp dir to pkg file dir
- my ($templateVolume, $templatePath, $templateFileName) = File::Spec->splitpath($templatepkg);
- my ($dummy1, $dummy2, $copyFileName) = File::Spec->splitpath($pkgoutput);
- my $copyTarget = File::Spec->catpath($templateVolume, $templatePath, $copyFileName);
- copy($pkgoutput, $copyTarget) or die "Preprocessed pkg file '$pkgoutput' cannot be copied.";
- exit;
-}
-
-if($stub) {
- if(!($epocroot)) { die("ERROR: EPOCROOT must be set to create stub sis files"); }
- my $systeminstall = "${epocroot}epoc32/data/z/system/install";
- mkpath($systeminstall);
- my $stub_sis_name = $systeminstall."/".$stub_sis_name;
- # Create stub SIS.
- system ("${epocToolsDir}makesis -s $pkgoutput $stub_sis_name");
-} else {
- if ($certtext eq "Self Signed"
- && !@certificates
- && $templatepkg !~ m/_installer\.pkg$/i
- && !$onlyUnsigned) {
- my $patch_capabilities = File::Spec->catfile(dirname($0), "patch_capabilities");
- if ($dontPatchCaps) {
- system ("$patch_capabilities -c $pkgoutput") and print ("Warning: Package check for self-signing viability failed. Installing the package on a device will most likely fail!\n\n");
- } else {
- print("Auto-patching self-signed package.\n");
- system ("$patch_capabilities -t $tempPackageDir $pkgoutput") and die ("ERROR: Automatic patching failed");
- }
- }
-
- # Create SIS.
- # The 'and' is because system uses 0 to indicate success.
- system ("${epocToolsDir}makesis $pkgoutput $unsigned_sis_name") and die ("ERROR: makesis failed");
-
- print("\n");
-
- my $targetInsert = "";
- if ($targetplatform ne "-") {
- $targetInsert = " for $targetplatform";
- }
-
- if ($onlyUnsigned) {
- stat($unsigned_sis_name);
- if( -e _ ) {
- print ("Successfully created unsigned package ${unsigned_sis_name}${targetInsert}!\n");
- } else {
- print ("\nUnsigned package creation failed!\n");
- }
-
- print ("\n");
- exit;
- }
-
- # Sign SIS with certificate info given as an argument.
- my $relcert = File::Spec->abs2rel($certificate);
- my $relkey = File::Spec->abs2rel($key);
- # The 'and' is because system uses 0 to indicate success.
- system ("${epocToolsDir}signsis $unsigned_sis_name $signed_sis_name $relcert $relkey $passphrase") and die ("ERROR: signsis failed");
-
- # Check if creating signed SIS Succeeded
- stat($signed_sis_name);
- if( -e _ ) {
- print ("Successfully created signed package ${signed_sis_name}${targetInsert} using certificate: $certtext!\n");
-
- # Sign with additional certificates & keys
- for my $row ( @certificates ) {
- # Get certificate absolute file names, relative paths are relative to certfilepath
- my $relcert = File::Spec->abs2rel(File::Spec->rel2abs( $row->[0], $certfilepath));
- my $relkey = File::Spec->abs2rel(File::Spec->rel2abs( $row->[1], $certfilepath));
-
- system ("${epocToolsDir}signsis $signed_sis_name $signed_sis_name $relcert $relkey $row->[2]");
- print ("\tAdditionally signed the SIS with certificate: $row->[0]!\n");
- }
-
- # remove temporary unsigned sis
- if (!$preserveUnsigned) {
- unlink $unsigned_sis_name;
- }
-
- # Install the sis if requested
- if ($install) {
- print ("\nInstalling $signed_sis_name...\n");
- system ("$signed_sis_name");
- }
- } else {
- # Lets leave the generated PKG for problem solving purposes
- print ("\nSIS creation failed!\n");
- }
- print ("\n");
-}
-
-#end of file
diff --git a/bin/elf2e32_qtwrapper b/bin/elf2e32_qtwrapper
deleted file mode 100755
index a3a4065f30..0000000000
--- a/bin/elf2e32_qtwrapper
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-scriptpath=`dirname $0`
-perl $scriptpath/elf2e32_qtwrapper.pl "$@"
diff --git a/bin/elf2e32_qtwrapper.bat b/bin/elf2e32_qtwrapper.bat
deleted file mode 100644
index 52910df007..0000000000
--- a/bin/elf2e32_qtwrapper.bat
+++ /dev/null
@@ -1,3 +0,0 @@
-@echo off
-set scriptpath=%~dp0
-perl %scriptpath%elf2e32_qtwrapper.pl %*
diff --git a/bin/elf2e32_qtwrapper.pl b/bin/elf2e32_qtwrapper.pl
deleted file mode 100755
index e3e1cb1802..0000000000
--- a/bin/elf2e32_qtwrapper.pl
+++ /dev/null
@@ -1,325 +0,0 @@
-#!/usr/bin/perl -w
-#############################################################################
-##
-## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
-##
-## This file is part of the utilities 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$
-##
-#############################################################################
-
-# A script to get around some shortcomings in elf2e32, namely:
-# - Returning 0 even when there are errors.
-# - Excluding symbols from the dso file even when they are present in the ELF file.
-# - Including symbols in the the dso file even when they are not present in the ELF file.
-# - Overwriting the old dso file even when there are no changes (increases build time).
-
-use File::Copy;
-
-my @args = ();
-my @definput;
-my @defoutput;
-my @dso;
-my @tmpdso;
-foreach (@ARGV) {
- if (/^--definput/o) {
- @definput = split('=', $_);
- } elsif (/^--defoutput/o) {
- @defoutput = split('=', $_);
- } elsif (/^--dso/o) {
- @dso = split('=', $_);
- } elsif (/^--tmpdso/o) {
- @tmpdso = split('=', $_);
- $tmpdso[0] = "--dso";
- } else {
- push(@args, $_);
- }
-}
-
-@definput = () if (!@definput || ! -e $definput[1]);
-
-if (@dso && !@tmpdso || !@dso && @tmpdso) {
- print("--dso and --tmpdso must be used together.\n");
- exit 1;
-}
-
-my $buildingLibrary = (@defoutput && @dso) ? 1 : 0;
-
-my $fixupFile = "";
-my $runCount = 0;
-my $returnCode = 0;
-
-# For debugging. Make it nonzero to give verbose output.
-my $debugScript = 1;
-my @usedDefFiles;
-sub recordDefFile {
- return if (!$debugScript);
-
- my ($msg, $file) = @_;
- my $content = "$msg, $file:\n";
- my $defFileFd;
- if (!open($defFileFd, "< $file")) {
- print("Warning: Could not open $file (for debug analysis)\n");
- return;
- }
- while (<$defFileFd>) {
- $content .= $_;
- }
-
- push(@usedDefFiles, $content);
-}
-sub printRecordedDefFiles {
- return if (!$debugScript);
-
- foreach (@usedDefFiles) {
- print ("$_\n");
- }
-}
-
-sub missingSymbolMismatch
-{
- my $missingSymbolSum = $_[0];
-
- printRecordedDefFiles;
-
- print("Bug in the native elf2e32 tool: Number of missing symbols does not\n");
- print("match number of removed symbols in the output DEF file.\n\n");
-
- print("Original elf2e32 output:\n");
- print(" $missingSymbolSum Frozen Export\(s\) missing from the ELF file\n\n");
-
- print("However $defoutput[1] contains more missing entries than that.\n\n");
-
- print("This needs to be fixed manually in the DEF file.\n");
- exit(2);
-}
-
-if ($debugScript) {
- print("PATH: $ENV{PATH}\n");
- print("EPOCROOT: $ENV{EPOCROOT}\n");
-}
-
-while (1) {
- if (++$runCount > 2) {
- printRecordedDefFiles if ($debugScript);
- print("Internal error in $0, link succeeded, but exports may be wrong.\n");
- last;
- }
-
- my $elf2e32Pipe;
- my $elf2e32Cmd = "elf2e32 @args"
- . " " . join("=", @definput)
- . " " . join("=", @defoutput)
- . " " . join("=", @tmpdso);
- open($elf2e32Pipe, "$elf2e32Cmd 2>&1 |") or die ("Could not run elf2e32");
-
- my %fixupSymbols;
- my $foundBrokenSymbols = 0;
- my $missingSymbolSum = 0;
- my $missingSymbolCount = 0;
- my $errors = 0;
- while (<$elf2e32Pipe>) {
- print;
- if (/Error:/io) {
- $errors = 1;
- } elsif (/symbol ([a-z0-9_]+) absent in the DEF file, but present in the ELF file/io) {
- $fixupSymbols{$1} = 1;
- $foundBrokenSymbols = 1;
- } elsif (/([0-9]+) Frozen Export\(s\) missing from the ELF file/io) {
- $missingSymbolSum = $1;
- $foundBrokenSymbols = 1;
- }
- }
- close($elf2e32Pipe);
-
- if ($debugScript) {
- recordDefFile("Run no $runCount, elf2e32 DEF file input", "$definput[1]");
- recordDefFile("Run no $runCount, elf2e32 DEF file output", "$defoutput[1]");
- }
-
- if ($errors) {
- $returnCode = 1;
- last;
- }
-
- if ($buildingLibrary && $runCount == 1) {
- my $tmpDefFile;
- my $newDefFile;
- my $origDefFile;
- my $savedNewDefFileLine = "";
- if ($definput[1]) {
- open($origDefFile, "< $definput[1]") or die("Could not open $definput[1]");
- }
- open($newDefFile, "< $defoutput[1]") or die("Could not open $defoutput[1]");
- open($tmpDefFile, "> $defoutput[1].tmp") or die("Could not open $defoutput[1].tmp");
- print($tmpDefFile "EXPORTS\n") or die("Could not write to temporary DEF file: $!");
- $fixupFile = "$defoutput[1].tmp";
- while (1) {
- my $origDefLine;
- my $origSym;
- my $origOrdinal;
- my $origExtraData;
- my $newDefLine;
- my $newSym;
- my $newOrdinal;
- my $newExtraData;
- my $defLine;
- my $sym;
- my $ordinal;
- my $extraData;
- if ($definput[1]) {
- # Read from original def file, and skip non-symbol lines
- while (1) {
- $origDefLine = <$origDefFile>;
- if (defined($origDefLine)) {
- $origDefLine =~ s/[\n\r]//;
- if ($origDefLine =~ /([a-z0-9_]+) +\@ *([0-9]+) (.*)/i) {
- $origSym = $1;
- $origOrdinal = $2;
- $origExtraData = $3;
- last;
- }
- } else {
- last;
- }
- }
- }
-
- if ($savedNewDefFileLine) {
- # This happens if the new def file was missing an entry.
- $newDefLine = $savedNewDefFileLine;
- $newDefLine =~ /([a-z0-9_]+) +\@ *([0-9]+) (.*)/i or die("$0: Shouldn't happen");
- $newSym = $1;
- $newOrdinal = $2;
- $newExtraData = $3;
- } else {
- # Read from new def file, and skip non-symbol lines
- while (1) {
- $newDefLine = <$newDefFile>;
- if (defined($newDefLine)) {
- $newDefLine =~ s/[\n\r]//;
- if ($newDefLine =~ /([a-z0-9_]+) +\@ *([0-9]+) (.*)/i) {
- $newSym = $1;
- $newOrdinal = $2;
- $newExtraData = $3;
- last;
- }
- } else {
- last;
- }
- }
- }
- $savedNewDefFileLine = "";
- last if (!defined($origDefLine) && !defined($newDefLine));
-
- if (defined($origOrdinal) && (!defined($newOrdinal) || $origOrdinal != $newOrdinal)) {
- # If the symbol is missing from the new def file, use the original symbol.
- $savedNewDefFileLine = $newDefLine;
- $defLine = $origDefLine;
- $sym = $origSym;
- $ordinal = $origOrdinal;
- $extraData = $origExtraData;
- } else {
- $defLine = $newDefLine;
- $sym = $newSym;
- $ordinal = $newOrdinal;
- if ($newExtraData =~ /ABSENT/) {
- # Special case to keep "DATA [0-9]+" data in absent entries.
- $extraData = $origExtraData;
- } else {
- $extraData = $newExtraData;
- }
- }
- if (exists($fixupSymbols{$sym})) {
- # Fix symbols that have returned after first being marked ABSENT.
- $extraData =~ s/ ABSENT//;
- } elsif ($defLine =~ s/; MISSING://) {
- # Auto-absent symbols.
- $extraData .= " ABSENT";
- if (++$missingSymbolCount > $missingSymbolSum) {
- missingSymbolMismatch($missingSymbolSum);
- }
- }
- print($tmpDefFile "\t$sym \@ $ordinal $extraData\n") or die("Could not write to temporary DEF file: $!");
- }
- print($tmpDefFile "\n") or die("Could not write to temporary DEF file: $!");
- close($origDefFile) if ($definput[1]);
- close($newDefFile);
- close($tmpDefFile);
-
- $definput[1] = "$defoutput[1].tmp";
-
- }
- if (!$foundBrokenSymbols || $errors) {
- last;
- }
-
- print("Rerunning elf2e32 due to DEF file / ELF file mismatch\n");
-};
-
-if ($fixupFile) {
- unlink($defoutput[1]);
- move($fixupFile, $defoutput[1]);
-}
-
-exit $returnCode if ($returnCode != 0);
-
-if ($buildingLibrary) {
- my $differenceFound = 0;
-
- if (-e $dso[1]) {
- my $dsoFile;
- my $tmpdsoFile;
- my $dsoBuf;
- my $tmpdsoBuf;
- open($dsoFile, "< $dso[1]") or die("Could not open $dso[1]");
- open($tmpdsoFile, "< $tmpdso[1]") or die("Could not open $tmpdso[1]");
- binmode($dsoFile);
- binmode($tmpdsoFile);
- while(read($dsoFile, $dsoBuf, 4096) && read($tmpdsoFile, $tmpdsoBuf, 4096)) {
- if ($dsoBuf ne $tmpdsoBuf) {
- $differenceFound = 1;
- }
- }
- close($tmpdsoFile);
- close($dsoFile);
- } else {
- $differenceFound = 1;
- }
-
- if ($differenceFound) {
- copy($tmpdso[1], $dso[1]) or die("Could not copy $tmpdso[1] to $dso[1]: $!");
- }
-}
diff --git a/bin/findtr b/bin/findtr
index b72efcbda8..54bdf9bea6 100755
--- a/bin/findtr
+++ b/bin/findtr
@@ -3,8 +3,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is part of the translations of the Qt Toolkit.
##
@@ -37,6 +36,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
diff --git a/bin/fixqt4headers.pl b/bin/fixqt4headers.pl
index 597f785367..2c92f727b7 100755
--- a/bin/fixqt4headers.pl
+++ b/bin/fixqt4headers.pl
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is part of the porting tools of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
@@ -141,6 +141,7 @@ sub findQtHeaders
die "This script requires the QTDIR environment variable pointing to Qt 5\n" unless $qtdir;
findQtHeaders('QtCore', $qtdir);
+findQtHeaders('QtConcurrent', $qtdir);
findQtHeaders('QtWidgets', $qtdir);
findQtHeaders('QtPrintSupport', $qtdir);
diff --git a/bin/patch_capabilities b/bin/patch_capabilities
deleted file mode 100755
index 0d8962260e..0000000000
--- a/bin/patch_capabilities
+++ /dev/null
@@ -1,3 +0,0 @@
-#!/bin/sh
-scriptpath=`dirname $0`
-perl $scriptpath/patch_capabilities.pl "$@"
diff --git a/bin/patch_capabilities.bat b/bin/patch_capabilities.bat
deleted file mode 100644
index 6a0c4d777a..0000000000
--- a/bin/patch_capabilities.bat
+++ /dev/null
@@ -1 +0,0 @@
-@perl.exe -S %~dp0patch_capabilities.pl %*
diff --git a/bin/patch_capabilities.pl b/bin/patch_capabilities.pl
deleted file mode 100755
index 3afbba1050..0000000000
--- a/bin/patch_capabilities.pl
+++ /dev/null
@@ -1,398 +0,0 @@
-#!/usr/bin/perl
-#############################################################################
-##
-## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
-##
-## This file is part of the S60 port 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$
-##
-#############################################################################
-
-#######################################################################
-#
-# A script for setting binary capabilities based on .pkg file contents.
-#
-#######################################################################
-
-#
-# Note: Please make sure to output all changes done to the pkg file in a print statements
-# starting with "Patching: " to ease integration into IDEs!
-#
-
-use File::Copy;
-use File::Spec;
-use File::Path;
-
-sub Usage() {
- print("This script can be used to set capabilities of all binaries\n");
- print("specified for deployment in a .pkg file.\n");
- print("If no capabilities are given, the binaries will be given the\n");
- print("capabilities supported by self-signed certificates.\n\n");
- print(" *** NOTE: If *_template.pkg file is given and one is using symbian-abld or\n");
- print(" symbian-sbsv2 platform, 'target-platform' is REQUIRED. ***\n\n");
- print(" *** NOTE2: When patching gcce binaries built with symbian-sbsv2 toolchain,\n");
- print(" armv5 must be specified as platform.\n");
- print("\nUsage: patch_capabilities.pl [-c|-t tmp_path] pkg_filename [target-platform [capability list]]\n");
- print("\nE.g. patch_capabilities.pl myapp_template.pkg release-armv5 \"All -TCB\"\n");
- print("\nThe parameter -c can be used to just check if package is compatible with self-signing\n");
- print("without actually doing any patching.\n");
- print("Explicit capability list cannot be used with -c parameter.\n");
- print("\nThe parameter -t can be used to specify a dir under which the temporary files are created.\n");
- print("Defaults to 'patch_capabilities_tmp' under the path to pkg file.\n");
- exit();
-}
-
-sub trim($) {
- my $string = shift;
- $string =~ s/^\s+//;
- $string =~ s/\s+$//;
- return $string;
-}
-
-my $epocroot = $ENV{EPOCROOT};
-my $epocToolsDir = "";
-if ($epocroot ne "") {
- $epocroot =~ s,\\,/,g;
- if ($epocroot =~ m,[^/]$,) {
- $epocroot = $epocroot."/";
- }
- $epocToolsDir = "${epocroot}epoc32/tools/";
-}
-
-my $nullDevice = "/dev/null";
-$nullDevice = "NUL" if ($^O =~ /MSWin/);
-
-my @capabilitiesToAllow = ("LocalServices", "NetworkServices", "ReadUserData", "UserEnvironment", "WriteUserData", "Location");
-my @capabilitiesSpecified = ();
-
-# If arguments were given to the script,
-if (@ARGV)
-{
- # Parse the first given script argument as a ".pkg" file name.
- my $pkgFileName = shift(@ARGV);
- my $justCheck = "";
- my $msgPrefix = "Patching:";
- my $tempPatchPath = "";
-
- if ($pkgFileName eq "-c") {
- $pkgFileName = shift(@ARGV);
- $justCheck = true;
- $msgPrefix = "Warning:";
- }
-
- if ($pkgFileName eq "-t") {
- $tempPatchPath = shift(@ARGV);
- $pkgFileName = shift(@ARGV);
- }
-
- my ($pkgVolume, $pkgPath, $pkgPlainFileName) = File::Spec->splitpath($pkgFileName);
- if ($tempPatchPath eq "") {
- $tempPatchPath = File::Spec->catpath($pkgVolume, $pkgPath."patch_capabilities_tmp", "");
- }
-
- mkpath($tempPatchPath);
-
- # These variables will only be set for template .pkg files.
- my $target;
- my $platform;
-
- # Check if using template .pkg and set target/platform variables
- if (($pkgFileName =~ m|_template\.pkg$|i) && -r($pkgFileName))
- {
- my $targetplatform;
- my $templateFile;
- my $templateContents;
- open($templateFile, "< $pkgFileName") or die ("Could not open $pkgFileName");
- $templateContents = <$templateFile>;
- close($templateFile);
- unless (($targetplatform = shift(@ARGV)) || $templateContents !~ /\$\(PLATFORM\)/)
- {
- Usage();
- }
- $targetplatform = "-" if (!$targetplatform);
- my @tmpvalues = split('-', $targetplatform);
- $target = $tmpvalues[0];
- $platform = $tmpvalues[1];
-
- # Convert visual target to real target (debug->udeb and release->urel)
- $target =~ s/debug/udeb/i;
- $target =~ s/release/urel/i;
-
- if (($platform =~ m/^gcce$/i) && ($ENV{SBS_HOME})) {
- # Print a informative note in case suspected misuse is detected.
- print "\nNote: You must use armv5 as platform when packaging gcce binaries built using symbian-sbsv2 mkspec.\n";
- }
- }
-
- # If the specified ".pkg" file exists (and can be read),
- if (($pkgFileName =~ m|\.pkg$|i) && -r($pkgFileName))
- {
- print ("\n");
- if ($justCheck) {
- print ("Checking");
- } else {
- print ("Patching");
- }
- print (" package file and relevant binaries...\n");
-
- if (!$justCheck) {
- # If there are more arguments given, parse them as capabilities.
- if (@ARGV)
- {
- @capabilitiesSpecified = ();
- while (@ARGV)
- {
- push (@capabilitiesSpecified, pop(@ARGV));
- }
- }
- }
-
- # Start with no binaries listed.
- my @binaries = ();
- my $binariesDelimeter = "///";
-
- my $tempPkgFileName = $tempPatchPath."/__TEMP__".$pkgPlainFileName;
-
- if (!$justCheck) {
- unlink($tempPkgFileName);
- open (NEW_PKG, ">>".$tempPkgFileName);
- }
- open (PKG, "<".$pkgFileName);
-
- my $checkFailed = "";
- my $somethingPatched = "";
-
- # Parse each line.
- while (<PKG>)
- {
- my $line = $_;
- my $newLine = $line;
-
- # Patch pkg UID if it's in protected range
- if ($line =~ m/^\#.*\((0x[0-7][0-9a-fA-F]*)\).*$/)
- {
- my $oldUID = $1;
- print ("$msgPrefix UID $oldUID is not compatible with self-signing!\n");
-
- if ($justCheck) {
- $checkFailed = true;
- } else {
- my $newUID = $oldUID;
- $newUID =~ s/0x./0xE/i;
- $newLine =~ s/$oldUID/$newUID/;
- print ("$msgPrefix Package UID changed to: $newUID.\n");
- $somethingPatched = true;
- }
- }
-
- # If the line specifies a file, parse the source and destination locations.
- if ($line =~ m|^ *\"([^\"]+)\"\s*\-\s*\"([^\"]+)\"|)
- {
- my $sourcePath = $1;
-
- # If the given file is a binary, check the target and binary type (+ the actual filename) from its path.
- if ($sourcePath =~ m:\w+(\.dll|\.exe)$:i)
- {
- # Do preprocessing for template pkg,
- # In case of template pkg target and platform variables are set
- if(length($target) && length($platform))
- {
- $sourcePath =~ s/\$\(PLATFORM\)/$platform/gm;
- $sourcePath =~ s/\$\(TARGET\)/$target/gm;
- }
-
- my ($dummy1, $dummy2, $binaryBaseName) = File::Spec->splitpath($sourcePath);
-
- if ($justCheck) {
- push (@binaries, $binaryBaseName.$binariesDelimeter.$sourcePath);
- } else {
- # Copy original files over to patching dir
- # Patching dir will be flat to make it cleanable with QMAKE_CLEAN, so path
- # will be collapsed into the file name to avoid name collisions in the rare
- # case where custom pkg rules are used to install files with same names from
- # different directories (probably using platform checks to choose only one of them.)
- my $patchedSourcePath = $sourcePath;
- $patchedSourcePath =~ s/[\/\\:]/_/g;
- $patchedSourcePath = "$tempPatchPath/$patchedSourcePath";
- $newLine =~ s/^.*(\.dll|\.exe)(.*)(\.dll|\.exe)/\"$patchedSourcePath$2$3/i;
-
- copy($sourcePath, $patchedSourcePath) or die "$sourcePath cannot be copied for patching.";
- push (@binaries, $binaryBaseName.$binariesDelimeter.$patchedSourcePath);
- }
- }
- }
-
- print NEW_PKG $newLine;
-
- chomp ($line);
- }
-
- close (PKG);
- if (!$justCheck) {
- close (NEW_PKG);
-
- unlink($pkgFileName);
- rename($tempPkgFileName, $pkgFileName);
- }
- print ("\n");
-
- my $baseCommandToExecute = "${epocToolsDir}elftran -vid 0x0 -capability \"%s\" ";
-
- # Actually set the capabilities of the listed binaries.
- foreach my $binariesItem(@binaries)
- {
- $binariesItem =~ m|^(.*)$binariesDelimeter(.*)$|;
- my $binaryBaseName = $1;
- my $binaryPath = $2;
-
- # Create the command line for setting the capabilities.
- my $commandToExecute = $baseCommandToExecute;
- my $executeNeeded = "";
- if (@capabilitiesSpecified)
- {
- $commandToExecute = sprintf($baseCommandToExecute, join(" ", @capabilitiesSpecified));
- $executeNeeded = true;
- my $capString = join(" ", @capabilitiesSpecified);
- print ("$msgPrefix Patching the the Vendor ID to 0 and the capabilities used to: \"$capString\" in \"$binaryBaseName\".\n");
- } else {
- # Test which capabilities are present and then restrict them to the allowed set.
- # This avoid raising the capabilities of apps that already have none.
- my $dllCaps;
- open($dllCaps, "${epocToolsDir}elftran -dump s $binaryPath |") or die ("ERROR: Could not execute elftran");
- my $capsFound = 0;
- my $originalVid;
- my @capabilitiesToSet;
- my $capabilitiesToAllow = join(" ", @capabilitiesToAllow);
- my @capabilitiesToDrop;
- while (<$dllCaps>) {
- if (/^Secure ID: ([0-7][0-9a-fA-F]*)$/) {
- my $exeSid = $1;
- if ($binaryBaseName =~ /\.exe$/) {
- # Installer refuses to install protected executables in a self signed package, so abort if one is detected.
- # We can't simply just patch the executable SID, as any registration resources executable uses will be linked to it via SID.
- print ("$msgPrefix Executable with SID in the protected range (0x$exeSid) detected: \"$binaryBaseName\". A self-signed sis with protected executables is not supported.\n\n");
- $checkFailed = true;
- }
- }
- if (/^Vendor ID: ([0-9a-fA-F]*)$/) {
- $originalVid = "$1";
- }
- if (!$capsFound) {
- $capsFound = 1 if (/Capabilities:/);
- } else {
- $_ = trim($_);
- if ($capabilitiesToAllow =~ /$_/) {
- push(@capabilitiesToSet, $_);
- if (Location =~ /$_/i) {
- print ("$msgPrefix \"Location\" capability detected for binary: \"$binaryBaseName\". This capability is not self-signable for S60 3rd edition feature pack 1 devices, so installing this package on those devices will most likely not work.\n\n");
- }
- } else {
- push(@capabilitiesToDrop, $_);
- }
- }
- }
- close($dllCaps);
- if ($originalVid !~ "00000000") {
- print ("$msgPrefix Non-zero vendor ID (0x$originalVid) is incompatible with self-signed packages in \"$binaryBaseName\"");
- if ($justCheck) {
- print (".\n\n");
- $checkFailed = true;
- } else {
- print (", setting it to zero.\n\n");
- $executeNeeded = true;
- }
- }
- if ($#capabilitiesToDrop) {
- my $capsToDropStr = join("\", \"", @capabilitiesToDrop);
- $capsToDropStr =~ s/\", \"$//;
-
- if ($justCheck) {
- print ("$msgPrefix The following capabilities used in \"$binaryBaseName\" are not compatible with a self-signed package: \"$capsToDropStr\".\n\n");
- $checkFailed = true;
- } else {
- if ($binaryBaseName =~ /\.exe$/) {
- # While libraries often have capabilities they do not themselves need just to enable them to be loaded by wider variety of processes,
- # executables are more likely to need every capability they have been assigned or they won't function correctly.
- print ("$msgPrefix Executable with capabilities incompatible with self-signing detected: \"$binaryBaseName\". (Incompatible capabilities: \"$capsToDropStr\".) Reducing capabilities is only supported for libraries.\n");
- $checkFailed = true;
- } else {
- print ("$msgPrefix The following capabilities used in \"$binaryBaseName\" are not compatible with a self-signed package and will be removed: \"$capsToDropStr\".\n");
- $executeNeeded = true;
- }
- }
- }
- $commandToExecute = sprintf($baseCommandToExecute, join(" ", @capabilitiesToSet));
- }
- $commandToExecute .= $binaryPath;
-
- if ($executeNeeded) {
- # Actually execute the elftran command to set the capabilities.
- print ("\n");
- system ("$commandToExecute > $nullDevice");
- $somethingPatched = true;
- }
- }
-
- if ($checkFailed) {
- print ("\n");
- if ($justCheck) {
- print ("$msgPrefix The package is not compatible with self-signing.\n");
- } else {
- print ("$msgPrefix Unable to patch the package for self-singing.\n");
- }
- print ("Use a proper developer certificate for signing this package.\n\n");
- exit(1);
- }
-
- if ($justCheck) {
- print ("Package is compatible with self-signing.\n");
- } else {
- if ($somethingPatched) {
- print ("NOTE: A patched package may not work as expected due to reduced capabilities and other modifications,\n");
- print (" so it should not be used for any kind of Symbian signing or distribution!\n");
- print (" Use a proper certificate to avoid the need to patch the package.\n");
- } else {
- print ("No patching was required!\n");
- }
- }
- print ("\n");
- } else {
- Usage();
- }
-}
-else
-{
- Usage();
-}
diff --git a/bin/qtmodule-configtests b/bin/qtmodule-configtests
index 9640869fb8..412f57ff8a 100755
--- a/bin/qtmodule-configtests
+++ b/bin/qtmodule-configtests
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is part of the build configuration tools of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
@@ -54,7 +54,8 @@ use warnings;
# use packages -------------------------------------------------------
use File::Basename;
use File::Path 'mkpath';
-use File::Spec::Functions;
+use File::Spec::Functions qw/ :ALL /;
+use File::Temp qw/ :POSIX /;
use Cwd;
use Cwd 'abs_path';
use Config;
@@ -76,7 +77,9 @@ my $generator = $ARGV[3];
our %configtests;
-my $qmakeCachePath = catfile($out_basedir, ".qmake.cache");
+my $absOutDir = abs_path($out_basedir);
+my $qmakeCachePath = catfile($absOutDir, '.qmake.cache');
+my $configLogPath = catfile($absOutDir, 'config.log');
my $QMAKE = catfile($qtbasedir, "bin", ($^O =~ /win32/i) ? 'qmake.exe' : 'qmake');
if (!-x $QMAKE) {
@@ -162,36 +165,51 @@ sub hashesAreDifferent {
}
}
+
######################################################################
-# Syntax: executeSomething
-# Params: A list of things.
+# Syntax: executeLoggedCommand()
+# Params: path to executable, arguments
+#
+# This function is equivalent to system(), except that the command
+# details and output is placed in the configure log (only).
#
-# Purpose: Executes the first arg, passing the list.
-# stderr is redirected to stdout, and the output is captured.
-# Returns: The output.
+# Purpose: run a command and log the output
+# Returns: exit code and output.
######################################################################
-sub executeSomething {
- my ($program, @args) = @_;
-
- my $pid = open(KID_TO_READ, "-|");
-
- my $output;
-
- if ($pid) { # parent
- while (<KID_TO_READ>) {
- $output = $output . $_;
- }
- close(KID_TO_READ) || $! == 0 || warn "\nFailed to execute $program: exited $?";
- } else {
- # redirect STDERR to STDOUT
- open STDERR, ">&STDOUT";
-
- # Exec something
- exec ($program, @args) || die "\nCan't exec $program: $!\n";
- # NOTREACHED
+sub executeLoggedCommand {
+ my (@command_with_args) = @_;
+
+ # Redirect all stdout, stderr into the config.log
+ my ($save_stdout, $save_stderr);
+ open($save_stdout, '>&', STDOUT) || die "save STDOUT: $!";
+ open($save_stderr, '>&', STDERR) || die "save STDERR: $!";
+
+ my $tmpName = File::Temp::tempnam(File::Spec->tmpdir(), 'log');
+ open(STDOUT, '>', $tmpName) || die "open $tmpName: $!";
+ open(STDERR, '>&', STDOUT) || die "redirect STDERR to STDOUT: $!";
+
+ print "+ @command_with_args\n";
+ my $exitCode = system(@command_with_args) >> 8;
+
+ # Put them back.
+ close(STDOUT);
+ close(STDERR);
+ open(STDOUT, '>&', $save_stdout) || die "restoring STDOUT: $!";
+ open(STDERR, '>&', $save_stderr) || die "restoring STDERR: $!";
+
+ # Append output to config log and return it.
+ my ($tmpFile, $configLog);
+ my $out = '';
+ open($tmpFile, '<', $tmpName) || die "open $tmpName: $!";
+ open($configLog, '>>', $configLogPath) || die "open $configLogPath: $!";
+ while (my $line = <$tmpFile>) {
+ print $configLog $line;
+ $out .= $line;
}
-
- return $output;
+ close($tmpFile);
+ close($configLog);
+ unlink($tmpName);
+ return ($exitCode, $out);
}
######################################################################
@@ -211,12 +229,19 @@ sub executeSomething {
sub executeTest {
my ($testName) = @_;
+ {
+ my $fh;
+ open($fh, '>>', $configLogPath) || die "open $configLogPath: $!";
+ print $fh 'executing config test "',$testName, "\":\n";
+ close($fh);
+ }
+
my $oldWorkingDir = getcwd();
my $ret = 0;
my @QMAKEARGS = ('CONFIG-=debug_and_release', 'CONFIG-=app_bundle');
- my $testOutDir = catdir($out_basedir, 'config.tests', $testName);
+ my $testOutDir = catdir($absOutDir, 'config.tests', $testName);
# Since we might be cross compiling, look for barename (Linux) and .exe (Win32/Symbian)
my $testOutFile1 = catfile($testOutDir, "$testName.exe");
@@ -236,15 +261,15 @@ sub executeTest {
# First remove existing stuff (XXX this probably needs generator specific code, but hopefully
# the target removal below will suffice)
if (-e "Makefile") {
- executeSomething($MAKE, 'distclean');
+ executeLoggedCommand($MAKE, 'distclean');
}
# and any targets that we might find that weren't distcleaned
unlink $testOutFile1, $testOutFile2;
# Run qmake && make
- executeSomething($QMAKE, @QMAKEARGS);
- my $makeOutput = executeSomething(($MAKE));
+ executeLoggedCommand($QMAKE, @QMAKEARGS);
+ my ($makeExitCode, $makeOutput) = executeLoggedCommand($MAKE);
# If make prints "blah blah blah\nSkipped." we consider this a skipped test
if ($makeOutput !~ qr(^Skipped\.$)ms) {
@@ -256,10 +281,20 @@ sub executeTest {
$ret = 2;
}
+ my $fh;
+ open($fh, '>>', $configLogPath) || die "open $configLogPath: $!";
+ print $fh 'config test "',$testName, '" completed with result ',$ret, "\n";
+ close($fh);
+
chdir $oldWorkingDir or die "\nUnable to restore working directory: $!\n";
return $ret;
}
+# Remove existing config.log
+if (-e $configLogPath) {
+ unlink($configLogPath) || die "unlink $configLogPath: $!";
+}
+
# Now run configuration tests
# %configtests is a map from config test name to a map of parameters
# e.g:
@@ -297,6 +332,11 @@ if (abs_path($out_basedir) ne abs_path($qtbasedir)) {
# Turn off buffering
$| = 1;
+ # Remove existing config.log
+ if (-e $configLogPath) {
+ unlink($configLogPath) || die "unlink $configLogPath: $!";
+ }
+
# Now run the configuration tests
print "Configuration tests:\n" if (%configtests);
diff --git a/bin/setcepaths.bat b/bin/setcepaths.bat
index 4c6a7e27a0..e9f588b69f 100755
--- a/bin/setcepaths.bat
+++ b/bin/setcepaths.bat
@@ -1,8 +1,7 @@
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
+:: Contact: http://www.qt-project.org/
::
:: This file is part of the tools applications of the Qt Toolkit.
::
@@ -35,6 +34,7 @@
::
::
::
+::
:: $QT_END_LICENSE$
::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
diff --git a/bin/syncqt b/bin/syncqt
index 63dfba3b42..15814df3f9 100755
--- a/bin/syncqt
+++ b/bin/syncqt
@@ -1,9 +1,8 @@
-#!/usr/bin/perl -w
+#!/usr/bin/perl
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is part of the build configuration tools of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
@@ -51,6 +51,7 @@ use Cwd;
use Cwd 'abs_path';
use Config;
use strict;
+use warnings;
use English qw(-no_match_vars );
# set output basedir to be where ever syncqt is run from
@@ -303,11 +304,16 @@ sub classNames {
push @symbols, "QMutable" . $1 . "Iterator";
}
+ our $publicclassregexp;
foreach my $symbol (@symbols) {
$symbol = (join("::", @namespaces) . "::" . $symbol) if (scalar @namespaces);
- push @ret, $symbol
- if ($symbol =~ /^Q[^:]*$/ # no-namespace, starting with Q
- || $symbol =~ /^Phonon::/); # or in the Phonon namespace
+
+ if ($symbol =~ /^Q[^:]*$/ # no-namespace, starting with Q
+ || $symbol =~ /^Phonon::/) { # or in the Phonon namespace
+ push @ret, $symbol;
+ } elsif (defined($publicclassregexp)) {
+ push @ret, $symbol if ($symbol =~ $publicclassregexp);
+ }
}
}
}
@@ -693,10 +699,6 @@ while ( @ARGV ) {
} elsif($arg eq "-qtdir") {
$var = "qtdir";
$val = shift @ARGV;
- } elsif($arg eq "-base-dir") {
- # skip, it's been dealt with at the top of the file
- shift @ARGV;
- next;
} elsif($arg eq "-generator") {
$var = "makefile_generator";
$val = shift @ARGV;
@@ -801,13 +803,9 @@ while ( @ARGV ) {
}
}
-# if the $qtbasedir neither has 'qtbase' somewhere in its path, nor a
-# '.qmake.cache' file in its directory, we assume it's not a valid path
-# (remember that a yet-to-be-built qtbase doesn't have this file either,
-# thus the 'qtbase' path check!)
die "Cannot automatically detect/use provided path to QtBase's build directory!\n" .
"QTDIR detected/provided: " . (defined $qtbasedir ? $qtbasedir : "-none-") . "\n" .
- "Please -qtdir option to provide the correct path.\nsyncqt failed"
+ "Please use the -qtdir option to provide the correct path.\nsyncqt failed"
if (!$qtbasedir || !-d "$qtbasedir/mkspecs");
# if we have no $basedir we cannot be sure which sources you want, so die
@@ -1341,7 +1339,6 @@ if($check_includes) {
my $iheader = $subdir . "/" . $header;
if($public_header) {
if(open(F, "<$iheader")) {
- my $qt_module_found = 0;
my $qt_begin_header_found = 0;
my $qt_end_header_found = 0;
my $qt_begin_namespace_found = 0;
@@ -1376,8 +1373,6 @@ if($check_includes) {
$qt_begin_namespace_found = 1;
} elsif ($header_skip_qt_begin_namespace_test == 0 and $line =~ /^QT_END_NAMESPACE\s*$/) {
$qt_end_namespace_found = 1;
- } elsif ($header_skip_qt_module_test == 0 and $line =~ /^QT_MODULE\(.*\)\s*$/) {
- $qt_module_found = 1;
}
}
if ($header_skip_qt_begin_header_test == 0) {
@@ -1400,11 +1395,6 @@ if($check_includes) {
}
}
- if ($header_skip_qt_module_test == 0) {
- if ($qt_module_found == 0) {
- print "$lib: WARNING: $iheader does not include QT_MODULE\n";
- }
- }
close(F);
}
}
diff --git a/bin/syncqt.bat b/bin/syncqt.bat
index 6a39f578da..1f2690335e 100755
--- a/bin/syncqt.bat
+++ b/bin/syncqt.bat
@@ -1,8 +1,7 @@
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-:: All rights reserved.
-:: Contact: Nokia Corporation (qt-info@nokia.com)
+:: Contact: http://www.qt-project.org/
::
:: This file is part of the tools applications of the Qt Toolkit.
::
@@ -35,6 +34,7 @@
::
::
::
+::
:: $QT_END_LICENSE$
::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
diff --git a/config.tests/mac/coreservices/coreservices.mm b/config.tests/mac/coreservices/coreservices.mm
index b7de1f23e6..718b0940bc 100644
--- a/config.tests/mac/coreservices/coreservices.mm
+++ b/config.tests/mac/coreservices/coreservices.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/mac/corewlan/corewlantest.mm b/config.tests/mac/corewlan/corewlantest.mm
index 76eeb3a4d0..29a8aff736 100644
--- a/config.tests/mac/corewlan/corewlantest.mm
+++ b/config.tests/mac/corewlan/corewlantest.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/mac/crc/main.cpp b/config.tests/mac/crc/main.cpp
index 5bdb22aebd..f02177ccb7 100644
--- a/config.tests/mac/crc/main.cpp
+++ b/config.tests/mac/crc/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/mac/xcodeversion.cpp b/config.tests/mac/xcodeversion.cpp
index 9fd292d9ec..c5b945c14b 100644
--- a/config.tests/mac/xcodeversion.cpp
+++ b/config.tests/mac/xcodeversion.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/qpa/wayland/wayland.cpp b/config.tests/qpa/wayland/wayland.cpp
index 2bd7d00283..c502d22ef3 100644
--- a/config.tests/qpa/wayland/wayland.cpp
+++ b/config.tests/qpa/wayland/wayland.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/qpa/xcb-poll-for-queued-event/xcb-poll-for-queued-event.cpp b/config.tests/qpa/xcb-poll-for-queued-event/xcb-poll-for-queued-event.cpp
index cc78fdece5..1a22af6a78 100644
--- a/config.tests/qpa/xcb-poll-for-queued-event/xcb-poll-for-queued-event.cpp
+++ b/config.tests/qpa/xcb-poll-for-queued-event/xcb-poll-for-queued-event.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/qpa/xcb-render/xcb-render.cpp b/config.tests/qpa/xcb-render/xcb-render.cpp
index c60de7366c..3bd4138077 100644
--- a/config.tests/qpa/xcb-render/xcb-render.cpp
+++ b/config.tests/qpa/xcb-render/xcb-render.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/qpa/xcb-xlib/xcb-xlib.cpp b/config.tests/qpa/xcb-xlib/xcb-xlib.cpp
index a6f5ef8e3e..a04c6cd74f 100644
--- a/config.tests/qpa/xcb-xlib/xcb-xlib.cpp
+++ b/config.tests/qpa/xcb-xlib/xcb-xlib.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/qpa/xcb/xcb.cpp b/config.tests/qpa/xcb/xcb.cpp
index d9d8aed832..c594d4f38b 100644
--- a/config.tests/qpa/xcb/xcb.cpp
+++ b/config.tests/qpa/xcb/xcb.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/qws/ahi/ahi.cpp b/config.tests/qws/ahi/ahi.cpp
index 7033bef14e..166fc4e2b4 100644
--- a/config.tests/qws/ahi/ahi.cpp
+++ b/config.tests/qws/ahi/ahi.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/qws/directfb/directfb.cpp b/config.tests/qws/directfb/directfb.cpp
index f1ea238487..d781702ab6 100644
--- a/config.tests/qws/directfb/directfb.cpp
+++ b/config.tests/qws/directfb/directfb.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/qws/sound/sound.cpp b/config.tests/qws/sound/sound.cpp
index 70ef3faf4f..fbc602b42a 100644
--- a/config.tests/qws/sound/sound.cpp
+++ b/config.tests/qws/sound/sound.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/qws/svgalib/svgalib.cpp b/config.tests/qws/svgalib/svgalib.cpp
index 326129eecf..d42705597d 100644
--- a/config.tests/qws/svgalib/svgalib.cpp
+++ b/config.tests/qws/svgalib/svgalib.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/3dnow/3dnow.cpp b/config.tests/unix/3dnow/3dnow.cpp
index d34633cc1f..bb15dae473 100644
--- a/config.tests/unix/3dnow/3dnow.cpp
+++ b/config.tests/unix/3dnow/3dnow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/alsa/alsatest.cpp b/config.tests/unix/alsa/alsatest.cpp
index a1527539a8..51e3a75d61 100644
--- a/config.tests/unix/alsa/alsatest.cpp
+++ b/config.tests/unix/alsa/alsatest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/avx/avx.cpp b/config.tests/unix/avx/avx.cpp
index 746b36d0e2..bc5be65e65 100644
--- a/config.tests/unix/avx/avx.cpp
+++ b/config.tests/unix/avx/avx.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/bsymbolic_functions.test b/config.tests/unix/bsymbolic_functions.test
index 6c3489591b..70720b04ac 100755
--- a/config.tests/unix/bsymbolic_functions.test
+++ b/config.tests/unix/bsymbolic_functions.test
@@ -9,7 +9,7 @@ cat >>bsymbolic_functions.c << EOF
int main() { return 0; }
EOF
-$COMPILER -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c >/dev/null 2>&1 && BSYMBOLIC_FUNCTIONS_SUPPORT=yes
+$COMPILER $SYSROOT_FLAG -o libtest.so -shared -Wl,-Bsymbolic-functions -fPIC bsymbolic_functions.c >/dev/null 2>&1 && BSYMBOLIC_FUNCTIONS_SUPPORT=yes
rm -f bsymbolic_functions.c libtest.so
# done
diff --git a/config.tests/unix/clock-gettime/clock-gettime.cpp b/config.tests/unix/clock-gettime/clock-gettime.cpp
index 0b1d544d5d..148d9841c2 100644
--- a/config.tests/unix/clock-gettime/clock-gettime.cpp
+++ b/config.tests/unix/clock-gettime/clock-gettime.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/clock-monotonic/clock-monotonic.cpp b/config.tests/unix/clock-monotonic/clock-monotonic.cpp
index d51a195571..0558f11528 100644
--- a/config.tests/unix/clock-monotonic/clock-monotonic.cpp
+++ b/config.tests/unix/clock-monotonic/clock-monotonic.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/cups/cups.cpp b/config.tests/unix/cups/cups.cpp
index 0c56312196..34bb689e97 100644
--- a/config.tests/unix/cups/cups.cpp
+++ b/config.tests/unix/cups/cups.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/db2/db2.cpp b/config.tests/unix/db2/db2.cpp
index 5e7aa9f52d..ab3ce5c2e8 100644
--- a/config.tests/unix/db2/db2.cpp
+++ b/config.tests/unix/db2/db2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/dbus/dbus.cpp b/config.tests/unix/dbus/dbus.cpp
index 2606b016f4..4ca2022e0e 100644
--- a/config.tests/unix/dbus/dbus.cpp
+++ b/config.tests/unix/dbus/dbus.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/doubleformat/doubleformattest.cpp b/config.tests/unix/doubleformat/doubleformattest.cpp
index 7ca28166aa..1a182c668a 100644
--- a/config.tests/unix/doubleformat/doubleformattest.cpp
+++ b/config.tests/unix/doubleformat/doubleformattest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/egl/egl.cpp b/config.tests/unix/egl/egl.cpp
index b2bb90d7c0..d196a457a5 100644
--- a/config.tests/unix/egl/egl.cpp
+++ b/config.tests/unix/egl/egl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/egl4gles1/egl4gles1.cpp b/config.tests/unix/egl4gles1/egl4gles1.cpp
index 1b24a97e3a..66af8933d9 100644
--- a/config.tests/unix/egl4gles1/egl4gles1.cpp
+++ b/config.tests/unix/egl4gles1/egl4gles1.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/endian.test b/config.tests/unix/endian.test
index 74a87327df..2985fd8241 100755
--- a/config.tests/unix/endian.test
+++ b/config.tests/unix/endian.test
@@ -10,7 +10,7 @@ OUTDIR=$4
# build and run a test program
test -d "$OUTDIR/config.tests/unix/endian" || mkdir -p "$OUTDIR/config.tests/unix/endian"
-"$OUTDIR/bin/qmake" -nocache -spec "$QMKSPEC" "QT_BUILD_TREE=$OUTDIR" "$SRCDIR/config.tests/unix/endian/endiantest.pro" -o "$OUTDIR/config.tests/unix/endian/Makefile" >/dev/null 2>&1
+"$OUTDIR/bin/qmake" -nocache -spec "$QMKSPEC" "QT_BUILD_TREE=$OUTDIR" "QMAKE_LFLAGS+=$SYSROOT_FLAG" "$SRCDIR/config.tests/unix/endian/endiantest.pro" -o "$OUTDIR/config.tests/unix/endian/Makefile" >/dev/null 2>&1
cd "$OUTDIR/config.tests/unix/endian"
diff --git a/config.tests/unix/endian/endiantest.cpp b/config.tests/unix/endian/endiantest.cpp
index 36e662b6f6..e08a11b944 100644
--- a/config.tests/unix/endian/endiantest.cpp
+++ b/config.tests/unix/endian/endiantest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/floatmath/floatmath.cpp b/config.tests/unix/floatmath/floatmath.cpp
index b8521bac4e..43fc4fbecf 100644
--- a/config.tests/unix/floatmath/floatmath.cpp
+++ b/config.tests/unix/floatmath/floatmath.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/freetype/freetype.cpp b/config.tests/unix/freetype/freetype.cpp
index 4549dfee9f..f66390a7e6 100644
--- a/config.tests/unix/freetype/freetype.cpp
+++ b/config.tests/unix/freetype/freetype.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/getaddrinfo/getaddrinfotest.cpp b/config.tests/unix/getaddrinfo/getaddrinfotest.cpp
index b23983af6c..6a0145bf05 100644
--- a/config.tests/unix/getaddrinfo/getaddrinfotest.cpp
+++ b/config.tests/unix/getaddrinfo/getaddrinfotest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/getifaddrs/getifaddrs.cpp b/config.tests/unix/getifaddrs/getifaddrs.cpp
index b0ea6edb1a..508ddd56bd 100644
--- a/config.tests/unix/getifaddrs/getifaddrs.cpp
+++ b/config.tests/unix/getifaddrs/getifaddrs.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/glib/glib.cpp b/config.tests/unix/glib/glib.cpp
index a08bae90c6..19ef290a0b 100644
--- a/config.tests/unix/glib/glib.cpp
+++ b/config.tests/unix/glib/glib.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/gnu-libiconv/gnu-libiconv.cpp b/config.tests/unix/gnu-libiconv/gnu-libiconv.cpp
index e12d87f1a7..1832d68507 100644
--- a/config.tests/unix/gnu-libiconv/gnu-libiconv.cpp
+++ b/config.tests/unix/gnu-libiconv/gnu-libiconv.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/gstreamer/gstreamer.cpp b/config.tests/unix/gstreamer/gstreamer.cpp
index 3414925349..b3f3edab30 100644
--- a/config.tests/unix/gstreamer/gstreamer.cpp
+++ b/config.tests/unix/gstreamer/gstreamer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/ibase/ibase.cpp b/config.tests/unix/ibase/ibase.cpp
index c51bcd9516..3a9eca4134 100644
--- a/config.tests/unix/ibase/ibase.cpp
+++ b/config.tests/unix/ibase/ibase.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/iconv/iconv.cpp b/config.tests/unix/iconv/iconv.cpp
index f78b3c3c16..f20a359cd9 100644
--- a/config.tests/unix/iconv/iconv.cpp
+++ b/config.tests/unix/iconv/iconv.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/iconv/iconv.pro b/config.tests/unix/iconv/iconv.pro
index d642da2f2b..ec573ce590 100644
--- a/config.tests/unix/iconv/iconv.pro
+++ b/config.tests/unix/iconv/iconv.pro
@@ -1,3 +1,3 @@
SOURCES = iconv.cpp
CONFIG -= qt dylib app_bundle
-mac|win32-g++*:LIBS += -liconv
+mac|win32-g++*|blackberry-*-qcc:LIBS += -liconv
diff --git a/config.tests/unix/icu/icu.cpp b/config.tests/unix/icu/icu.cpp
index d36b99b106..aad8d872e1 100644
--- a/config.tests/unix/icu/icu.cpp
+++ b/config.tests/unix/icu/icu.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/inotify/inotifytest.cpp b/config.tests/unix/inotify/inotifytest.cpp
index 9e2b79c614..d0e816b4d1 100644
--- a/config.tests/unix/inotify/inotifytest.cpp
+++ b/config.tests/unix/inotify/inotifytest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/iodbc/iodbc.cpp b/config.tests/unix/iodbc/iodbc.cpp
index 5c3b2a160c..06ad8363af 100644
--- a/config.tests/unix/iodbc/iodbc.cpp
+++ b/config.tests/unix/iodbc/iodbc.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/ipv6ifname/ipv6ifname.cpp b/config.tests/unix/ipv6ifname/ipv6ifname.cpp
index fd215d7ff9..f74fdad8e1 100644
--- a/config.tests/unix/ipv6ifname/ipv6ifname.cpp
+++ b/config.tests/unix/ipv6ifname/ipv6ifname.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/iwmmxt/iwmmxt.cpp b/config.tests/unix/iwmmxt/iwmmxt.cpp
index 016f7046f3..a9802b9807 100644
--- a/config.tests/unix/iwmmxt/iwmmxt.cpp
+++ b/config.tests/unix/iwmmxt/iwmmxt.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/javascriptcore-jit/hwcap_test.cpp b/config.tests/unix/javascriptcore-jit/hwcap_test.cpp
index 452a952325..5c91e67aec 100644
--- a/config.tests/unix/javascriptcore-jit/hwcap_test.cpp
+++ b/config.tests/unix/javascriptcore-jit/hwcap_test.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/libjpeg/libjpeg.cpp b/config.tests/unix/libjpeg/libjpeg.cpp
index ed67263b25..9cb0decc0d 100644
--- a/config.tests/unix/libjpeg/libjpeg.cpp
+++ b/config.tests/unix/libjpeg/libjpeg.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/libmng/libmng.cpp b/config.tests/unix/libmng/libmng.cpp
deleted file mode 100644
index 325077709f..0000000000
--- a/config.tests/unix/libmng/libmng.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the config.tests 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 <libmng.h>
-
-int main(int, char **)
-{
- mng_handle hMNG;
- mng_cleanup(&hMNG);
-
-#if MNG_VERSION_MAJOR < 1 || (MNG_VERSION_MAJOR == 1 && MNG_VERSION_MINOR == 0 && MNG_VERSION_RELEASE < 9)
-#error System libmng version is less than 1.0.9; using built-in version instead.
-#endif
-
- return 0;
-}
diff --git a/config.tests/unix/libmng/libmng.pro b/config.tests/unix/libmng/libmng.pro
deleted file mode 100644
index ee57ecd640..0000000000
--- a/config.tests/unix/libmng/libmng.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-SOURCES = libmng.cpp
-CONFIG -= qt dylib
-mac:CONFIG -= app_bundle
-LIBS += -lmng
diff --git a/config.tests/unix/libpng/libpng.cpp b/config.tests/unix/libpng/libpng.cpp
index 3a8aa8c675..57374bc831 100644
--- a/config.tests/unix/libpng/libpng.cpp
+++ b/config.tests/unix/libpng/libpng.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/libtiff/libtiff.cpp b/config.tests/unix/libtiff/libtiff.cpp
deleted file mode 100644
index 11c4f11eb8..0000000000
--- a/config.tests/unix/libtiff/libtiff.cpp
+++ /dev/null
@@ -1,65 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the config.tests 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 <tiffio.h>
-
-#if !defined(TIFF_VERSION) && defined(TIFF_VERSION_CLASSIC)
-// libtiff 4.0 splits it into TIFF_VERSION_CLASSIC and TIFF_VERSION_BIG
-# define TIFF_VERSION TIFF_VERSION_CLASSIC
-#endif
-
-#if !defined(TIFF_VERSION)
-# error "Required libtiff not found"
-#elif TIFF_VERSION < 42
-# error "unsupported tiff version"
-#endif
-
-int main(int, char **)
-{
- tdata_t buffer = _TIFFmalloc(128);
- _TIFFfree(buffer);
-
- // some libtiff implementations where TIFF_VERSION >= 42 do not
- // have TIFFReadRGBAImageOriented(), so let's check for it
- TIFFReadRGBAImageOriented(0, 0, 0, 0, 0, 0);
-
- return 0;
-}
diff --git a/config.tests/unix/libtiff/libtiff.pro b/config.tests/unix/libtiff/libtiff.pro
deleted file mode 100644
index 60ba7d11d2..0000000000
--- a/config.tests/unix/libtiff/libtiff.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-SOURCES = libtiff.cpp
-CONFIG -= qt dylib
-mac:CONFIG -= app_bundle
-LIBS += -ltiff
diff --git a/config.tests/unix/mmx/mmx.cpp b/config.tests/unix/mmx/mmx.cpp
index 8a93a5504f..cb6361ef94 100644
--- a/config.tests/unix/mmx/mmx.cpp
+++ b/config.tests/unix/mmx/mmx.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/mremap/mremap.cpp b/config.tests/unix/mremap/mremap.cpp
index a4181271c6..62106ad00a 100644
--- a/config.tests/unix/mremap/mremap.cpp
+++ b/config.tests/unix/mremap/mremap.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/mysql/mysql.cpp b/config.tests/unix/mysql/mysql.cpp
index a96bb2ec86..9606f99774 100644
--- a/config.tests/unix/mysql/mysql.cpp
+++ b/config.tests/unix/mysql/mysql.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/neon/neon.cpp b/config.tests/unix/neon/neon.cpp
index b841d9f5b5..19c6a19afc 100644
--- a/config.tests/unix/neon/neon.cpp
+++ b/config.tests/unix/neon/neon.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/nis/nis.cpp b/config.tests/unix/nis/nis.cpp
index 8957342e40..eb05eefb4b 100644
--- a/config.tests/unix/nis/nis.cpp
+++ b/config.tests/unix/nis/nis.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/objcopy.test b/config.tests/unix/objcopy.test
index e2051a7823..9eb6e22ab0 100755
--- a/config.tests/unix/objcopy.test
+++ b/config.tests/unix/objcopy.test
@@ -8,7 +8,7 @@ VERBOSE=$3
if [ -n "$QMAKE_OBJCOPY" ]; then
echo "int main() { return 0; }" > objcopy_test.cpp
- if $TEST_PATH/which.test "$QMAKE_OBJCOPY" >/dev/null 2>&1 && $COMPILER -g -o objcopy_test objcopy_test.cpp >/dev/null 2>&1; then
+ if $TEST_PATH/which.test "$QMAKE_OBJCOPY" >/dev/null 2>&1 && $COMPILER $SYSROOT_FLAG -g -o objcopy_test objcopy_test.cpp >/dev/null 2>&1; then
"$QMAKE_OBJCOPY" --only-keep-debug objcopy_test objcopy_test.debug >/dev/null 2>&1 \
&& "$QMAKE_OBJCOPY" --strip-debug objcopy_test >/dev/null 2>&1 \
&& "$QMAKE_OBJCOPY" --add-gnu-debuglink=objcopy_test.debug objcopy_test >/dev/null 2>&1 \
diff --git a/config.tests/unix/oci/oci.cpp b/config.tests/unix/oci/oci.cpp
index 6986835a65..44f73c8027 100644
--- a/config.tests/unix/oci/oci.cpp
+++ b/config.tests/unix/oci/oci.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/odbc/odbc.cpp b/config.tests/unix/odbc/odbc.cpp
index f2c906ce86..eab3eab067 100644
--- a/config.tests/unix/odbc/odbc.cpp
+++ b/config.tests/unix/odbc/odbc.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/opengldesktop/opengldesktop.cpp b/config.tests/unix/opengldesktop/opengldesktop.cpp
index f3837b4d36..fef54045b1 100644
--- a/config.tests/unix/opengldesktop/opengldesktop.cpp
+++ b/config.tests/unix/opengldesktop/opengldesktop.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/opengles1/opengles1.cpp b/config.tests/unix/opengles1/opengles1.cpp
index 583a4ac79d..9a09c2b59a 100644
--- a/config.tests/unix/opengles1/opengles1.cpp
+++ b/config.tests/unix/opengles1/opengles1.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/opengles2/opengles2.cpp b/config.tests/unix/opengles2/opengles2.cpp
index 8add0f4f22..b0763628ef 100644
--- a/config.tests/unix/opengles2/opengles2.cpp
+++ b/config.tests/unix/opengles2/opengles2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/openssl/openssl.cpp b/config.tests/unix/openssl/openssl.cpp
index 7beb9c49b7..f6e9dd0eb6 100644
--- a/config.tests/unix/openssl/openssl.cpp
+++ b/config.tests/unix/openssl/openssl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/openssl/openssl.pri b/config.tests/unix/openssl/openssl.pri
deleted file mode 100644
index 377d6307c8..0000000000
--- a/config.tests/unix/openssl/openssl.pri
+++ /dev/null
@@ -1,10 +0,0 @@
-# Empty file since Qt 4.6
-# I'm too lazy to find all places where this file is included
-
-symbian{
- TRY_INCLUDEPATHS = $${EPOCROOT}epoc32 $${EPOCROOT}epoc32/include $${EPOCROOT}epoc32/include/stdapis $${EPOCROOT}epoc32/include/stdapis/sys $$OS_LAYER_LIBC_SYSTEMINCLUDE $$QMAKE_INCDIR $$INCLUDEPATH
- for(p, TRY_INCLUDEPATHS) {
- pp = $$join(p, "", "", "/openssl")
- exists($$pp):INCLUDEPATH *= $$pp
- }
-}
diff --git a/config.tests/unix/openssl/openssl.pro b/config.tests/unix/openssl/openssl.pro
index 6891e7832f..1c537cb2b1 100644
--- a/config.tests/unix/openssl/openssl.pro
+++ b/config.tests/unix/openssl/openssl.pro
@@ -1,4 +1,3 @@
SOURCES = openssl.cpp
CONFIG -= x11 qt
mac:CONFIG -= app_bundle
-include(openssl.pri)
diff --git a/config.tests/unix/openvg/openvg.cpp b/config.tests/unix/openvg/openvg.cpp
index 4f1dbe4339..a34888210f 100644
--- a/config.tests/unix/openvg/openvg.cpp
+++ b/config.tests/unix/openvg/openvg.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/pcre/pcre.cpp b/config.tests/unix/pcre/pcre.cpp
new file mode 100644
index 0000000000..b8a540df83
--- /dev/null
+++ b/config.tests/unix/pcre/pcre.cpp
@@ -0,0 +1,52 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Giuseppe D'Angelo <dangelog@gmail.com>.
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the config.tests 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 <pcre.h>
+
+#if (PCRE_MAJOR < 8) || ((PCRE_MAJOR == 8) && (PCRE_MINOR < 30))
+#error This PCRE version is not supported
+#endif
+
+int main(int, char **)
+{
+ return 0;
+}
+
diff --git a/config.tests/unix/pcre/pcre.pro b/config.tests/unix/pcre/pcre.pro
new file mode 100644
index 0000000000..b29c55da47
--- /dev/null
+++ b/config.tests/unix/pcre/pcre.pro
@@ -0,0 +1,3 @@
+SOURCES = pcre.cpp
+CONFIG -= qt dylib app_bundle
+LIBS += -lpcre16
diff --git a/config.tests/unix/psql/psql.cpp b/config.tests/unix/psql/psql.cpp
index fce6e79ca6..cc2cffc2ad 100644
--- a/config.tests/unix/psql/psql.cpp
+++ b/config.tests/unix/psql/psql.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/ptrsize/ptrsizetest.cpp b/config.tests/unix/ptrsize/ptrsizetest.cpp
index 3b380808af..ef58330caf 100644
--- a/config.tests/unix/ptrsize/ptrsizetest.cpp
+++ b/config.tests/unix/ptrsize/ptrsizetest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/pulseaudio/pulseaudio.cpp b/config.tests/unix/pulseaudio/pulseaudio.cpp
index cef4cd93ac..19b9ca36b3 100644
--- a/config.tests/unix/pulseaudio/pulseaudio.cpp
+++ b/config.tests/unix/pulseaudio/pulseaudio.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/shivavg/shivavg.cpp b/config.tests/unix/shivavg/shivavg.cpp
index 041696af2b..7b2e993279 100644
--- a/config.tests/unix/shivavg/shivavg.cpp
+++ b/config.tests/unix/shivavg/shivavg.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/sqlite/sqlite.cpp b/config.tests/unix/sqlite/sqlite.cpp
index 176cb76288..ef14308a01 100644
--- a/config.tests/unix/sqlite/sqlite.cpp
+++ b/config.tests/unix/sqlite/sqlite.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/sqlite2/sqlite2.cpp b/config.tests/unix/sqlite2/sqlite2.cpp
index 0ca6a0a0d0..12b8d00e12 100644
--- a/config.tests/unix/sqlite2/sqlite2.cpp
+++ b/config.tests/unix/sqlite2/sqlite2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/sse/sse.cpp b/config.tests/unix/sse/sse.cpp
index 4a7ba8655c..9e3bacefa5 100644
--- a/config.tests/unix/sse/sse.cpp
+++ b/config.tests/unix/sse/sse.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/sse2/sse2.cpp b/config.tests/unix/sse2/sse2.cpp
index 3fbb41af67..27ebb00326 100644
--- a/config.tests/unix/sse2/sse2.cpp
+++ b/config.tests/unix/sse2/sse2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/sse3/sse3.cpp b/config.tests/unix/sse3/sse3.cpp
index a70557b238..c35586ab94 100644
--- a/config.tests/unix/sse3/sse3.cpp
+++ b/config.tests/unix/sse3/sse3.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/sse4_1/sse4_1.cpp b/config.tests/unix/sse4_1/sse4_1.cpp
index 2bb27d078a..b2762b990f 100644
--- a/config.tests/unix/sse4_1/sse4_1.cpp
+++ b/config.tests/unix/sse4_1/sse4_1.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/sse4_2/sse4_2.cpp b/config.tests/unix/sse4_2/sse4_2.cpp
index 2c49ae89f9..9052d0685c 100644
--- a/config.tests/unix/sse4_2/sse4_2.cpp
+++ b/config.tests/unix/sse4_2/sse4_2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/ssse3/ssse3.cpp b/config.tests/unix/ssse3/ssse3.cpp
index 2d0fcb9a4c..f486bed378 100644
--- a/config.tests/unix/ssse3/ssse3.cpp
+++ b/config.tests/unix/ssse3/ssse3.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/stdint/main.cpp b/config.tests/unix/stdint/main.cpp
index f8195fdd06..2d93e3cab5 100644
--- a/config.tests/unix/stdint/main.cpp
+++ b/config.tests/unix/stdint/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/stl/stltest.cpp b/config.tests/unix/stl/stltest.cpp
index 50a55599de..e17c7cbba7 100644
--- a/config.tests/unix/stl/stltest.cpp
+++ b/config.tests/unix/stl/stltest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/tds/tds.cpp b/config.tests/unix/tds/tds.cpp
index 051690ccc8..9268d854e6 100644
--- a/config.tests/unix/tds/tds.cpp
+++ b/config.tests/unix/tds/tds.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/tslib/tslib.cpp b/config.tests/unix/tslib/tslib.cpp
index 5726b903e8..694f9cce2e 100644
--- a/config.tests/unix/tslib/tslib.cpp
+++ b/config.tests/unix/tslib/tslib.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/unix/zlib/zlib.cpp b/config.tests/unix/zlib/zlib.cpp
index 40c514eb72..3de8212248 100644
--- a/config.tests/unix/zlib/zlib.cpp
+++ b/config.tests/unix/zlib/zlib.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/x11/fontconfig/fontconfig.cpp b/config.tests/x11/fontconfig/fontconfig.cpp
index d0bdb2c9bd..7f56146e12 100644
--- a/config.tests/x11/fontconfig/fontconfig.cpp
+++ b/config.tests/x11/fontconfig/fontconfig.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/x11/glxfbconfig/glxfbconfig.cpp b/config.tests/x11/glxfbconfig/glxfbconfig.cpp
index e4f5876a2a..0d8beb801a 100644
--- a/config.tests/x11/glxfbconfig/glxfbconfig.cpp
+++ b/config.tests/x11/glxfbconfig/glxfbconfig.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/x11/mitshm/mitshm.cpp b/config.tests/x11/mitshm/mitshm.cpp
index 66a95ff59c..ebb6de66f4 100644
--- a/config.tests/x11/mitshm/mitshm.cpp
+++ b/config.tests/x11/mitshm/mitshm.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/x11/notype/notypetest.cpp b/config.tests/x11/notype/notypetest.cpp
index 8415d933ff..5600de49df 100644
--- a/config.tests/x11/notype/notypetest.cpp
+++ b/config.tests/x11/notype/notypetest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/x11/opengl/opengl.cpp b/config.tests/x11/opengl/opengl.cpp
index ae46714205..cd8750bd32 100644
--- a/config.tests/x11/opengl/opengl.cpp
+++ b/config.tests/x11/opengl/opengl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/x11/sm/sm.cpp b/config.tests/x11/sm/sm.cpp
index b7ba9f0303..c75d78a754 100644
--- a/config.tests/x11/sm/sm.cpp
+++ b/config.tests/x11/sm/sm.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/x11/xcursor/xcursor.cpp b/config.tests/x11/xcursor/xcursor.cpp
index d09dc77833..6cc4c70d67 100644
--- a/config.tests/x11/xcursor/xcursor.cpp
+++ b/config.tests/x11/xcursor/xcursor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/x11/xfixes/xfixes.cpp b/config.tests/x11/xfixes/xfixes.cpp
index 546f82cad7..3466176dc3 100644
--- a/config.tests/x11/xfixes/xfixes.cpp
+++ b/config.tests/x11/xfixes/xfixes.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/x11/xinerama/xinerama.cpp b/config.tests/x11/xinerama/xinerama.cpp
index 568bd98695..b0002a8e0d 100644
--- a/config.tests/x11/xinerama/xinerama.cpp
+++ b/config.tests/x11/xinerama/xinerama.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/x11/xinput/xinput.cpp b/config.tests/x11/xinput/xinput.cpp
index 5babd22f29..0269662656 100644
--- a/config.tests/x11/xinput/xinput.cpp
+++ b/config.tests/x11/xinput/xinput.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/x11/xinput2/xinput2.cpp b/config.tests/x11/xinput2/xinput2.cpp
index a8adc58501..6a50f58e88 100644
--- a/config.tests/x11/xinput2/xinput2.cpp
+++ b/config.tests/x11/xinput2/xinput2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/x11/xkb/xkb.cpp b/config.tests/x11/xkb/xkb.cpp
index c4315d7da1..ff1c10a7c6 100644
--- a/config.tests/x11/xkb/xkb.cpp
+++ b/config.tests/x11/xkb/xkb.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/x11/xlib/xlib.cpp b/config.tests/x11/xlib/xlib.cpp
index 12b384b84c..f1d8935753 100644
--- a/config.tests/x11/xlib/xlib.cpp
+++ b/config.tests/x11/xlib/xlib.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/x11/xrandr/xrandr.cpp b/config.tests/x11/xrandr/xrandr.cpp
index e982ed81ba..29a7223ae7 100644
--- a/config.tests/x11/xrandr/xrandr.cpp
+++ b/config.tests/x11/xrandr/xrandr.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/x11/xrender/xrender.cpp b/config.tests/x11/xrender/xrender.cpp
index e5f7ada728..e5ab73219f 100644
--- a/config.tests/x11/xrender/xrender.cpp
+++ b/config.tests/x11/xrender/xrender.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/x11/xshape/xshape.cpp b/config.tests/x11/xshape/xshape.cpp
index 8d8dd27983..5c672b64cd 100644
--- a/config.tests/x11/xshape/xshape.cpp
+++ b/config.tests/x11/xshape/xshape.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/x11/xsync/xsync.cpp b/config.tests/x11/xsync/xsync.cpp
index 30c9408bf7..160da6b3b7 100644
--- a/config.tests/x11/xsync/xsync.cpp
+++ b/config.tests/x11/xsync/xsync.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/config.tests/x11/xvideo/xvideo.cpp b/config.tests/x11/xvideo/xvideo.cpp
index 0a29b83598..fb28224529 100644
--- a/config.tests/x11/xvideo/xvideo.cpp
+++ b/config.tests/x11/xvideo/xvideo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the FOO module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/configure b/configure
index c057351e96..5e78360fa6 100755
--- a/configure
+++ b/configure
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is the build configuration utility of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
@@ -191,6 +191,7 @@ BUILD_ON_MAC=no
PLATFORM_MAC=no
if [ -d /System/Library/Frameworks/Carbon.framework ]; then
BUILD_ON_MAC=yes
+ PLATFORM_MAC=maybe
fi
#-----------------------------------------------------------------------------
@@ -641,9 +642,6 @@ CFG_CONFIGURE_EXIT_ON_ERROR=yes
CFG_PROFILE=no
CFG_EXCEPTIONS=unspecified
CFG_GUI=auto # (yes|no|auto)
-CFG_SCRIPT=auto # (yes|no|auto)
-CFG_SCRIPTTOOLS=auto # (yes|no|auto)
-CFG_XMLPATTERNS=auto # (yes|no|auto)
CFG_INCREMENTAL=auto
CFG_QCONFIG=full
CFG_DEBUG=auto
@@ -659,14 +657,10 @@ CFG_XFIXES=runtime
CFG_ZLIB=auto
CFG_SQLITE=qt
CFG_GIF=auto
-CFG_TIFF=auto
-CFG_LIBTIFF=auto
CFG_PNG=yes
CFG_LIBPNG=auto
CFG_JPEG=auto
CFG_LIBJPEG=auto
-CFG_MNG=auto
-CFG_LIBMNG=auto
CFG_XCURSOR=runtime
CFG_XRANDR=runtime
CFG_XRENDER=auto
@@ -687,18 +681,10 @@ QT_DEFAULT_BUILD_PARTS="libs examples tests"
CFG_BUILD_PARTS=""
CFG_NOBUILD_PARTS=""
CFG_RELEASE_QMAKE=no
-CFG_PHONON=auto
-CFG_PHONON_BACKEND=yes
-CFG_MULTIMEDIA=auto
CFG_AUDIO_BACKEND=auto
-CFG_SVG=auto
-CFG_V8=auto
CFG_V8SNAPSHOT=auto
-CFG_DECLARATIVE=auto
CFG_DECLARATIVE_DEBUG=yes
-CFG_WEBKIT=auto # (yes|no|auto|debug)
CFG_JAVASCRIPTCORE_JIT=auto
-CFG_LOCATION=auto
CFG_GFX_AVAILABLE="linuxfb transformed qvfb vnc multiscreen directfb"
CFG_GFX_ON="linuxfb multiscreen"
@@ -815,6 +801,7 @@ CFG_COREWLAN=auto
CFG_NOPROCESS=no
CFG_ICU=auto
CFG_FORCE_ASSERTS=no
+CFG_PCRE=auto
# initalize variables used for installation
QT_INSTALL_PREFIX=
@@ -947,17 +934,10 @@ if [ "$CFG_EMBEDDED" = "nacl" ]; then
L_FLAGS="$L_FLAGS -I${CFG_NACL_PATH}/toolchain/mac_x86/sdk/nacl-sdk/lib"
fi
- echo "-no-multimedia -no-webkit -no-phonon -no-nultimedia -no-mediaservices -no-xmlpatterns -no-script -no-sql-sqlite -nomake tests"
- CFG_MULTIMEDIA=no
- CFG_WEBKIT=no
- CFG_PHONON=no
- CFG_MULTIMEDIA=no
+ echo "-no-mediaservices -no-sql-sqlite -nomake tests"
CFG_MEDIASERVICES=no
- CFG_XMLPATTERNS=no
- CFG_SCRIPT=no
CFG_SQLITE=no
CFG_SQL_sqlite=no
- CFG_LIBTIFF=no
CFG_NOBUILD_PARTS="$CFG_NOBUILD_PARTS tests"
QT_CONFIG="$QT_CONFIG nacl"
fi
@@ -997,26 +977,13 @@ while [ "$#" -gt 0 ]; do
VAR=`echo $1 | sed "s,^-[^-]*-\(.*\),\1,"`
VAL=`echo $1 | sed "s,^-\([^-]*\).*,\1,"`
;;
- #WebKit options
- -webkit)
- VAR="webkit"
- VAL="yes"
- ;;
- -webkit-debug)
- VAR="webkit"
- VAL="debug"
- ;;
- -no-webkit)
- VAR="webkit"
- VAL="no"
- ;;
#Qt style no options
-no-*)
VAR=`echo $1 | sed "s,^-no-\(.*\),\1,"`
VAL=no
;;
#Qt style yes options
- -incremental|-qvfb|-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|-wayland|-nis|-qdbus|-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|-armfpa|-optimized-qmake|-dwarf2|-reduce-relocations|-sse|-openssl|-openssl-linked|-xmlpatterns|-phonon|-phonon-backend|-multimedia|-audio-backend|-svg|-v8|-declarative|-declarative-debug|-javascript-jit|-script|-scripttools|-rpath|-force-pkg-config|-icu|-force-asserts|-testcocoon)
+ -incremental|-qvfb|-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|-wayland|-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|-armfpa|-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
;;
@@ -1806,22 +1773,6 @@ while [ "$#" -gt 0 ]; do
UNKNOWN_OPT=yes
fi
;;
- libmng)
- [ "$VAL" = "yes" ] && VAL=qt
- if [ "$VAL" = "qt" ] || [ "$VAL" = "no" ] || [ "$VAL" = "system" ]; then
- CFG_LIBMNG="$VAL"
- else
- UNKNOWN_OPT=yes
- fi
- ;;
- libtiff)
- [ "$VAL" = "yes" ] && VAL=qt
- if [ "$VAL" = "qt" ] || [ "$VAL" = "no" ] || [ "$VAL" = "system" ]; then
- CFG_LIBTIFF="$VAL"
- else
- UNKNOWN_OPT=yes
- fi
- ;;
nas-sound)
if [ "$VAL" = "system" ] || [ "$VAL" = "no" ]; then
CFG_NAS="$VAL"
@@ -1938,7 +1889,7 @@ while [ "$#" -gt 0 ]; do
fi
fi
;;
- qdbus|dbus)
+ dbus)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ] || [ "$VAL" = "linked" ]; then
CFG_DBUS="$VAL"
elif [ "$VAL" = "runtime" ]; then
@@ -1982,72 +1933,6 @@ while [ "$#" -gt 0 ]; do
UNKNOWN_OPT=yes
fi
;;
- xmlpatterns)
- if [ "$VAL" = "yes" ] || [ "$VAL" = "auto" ]; then
- CFG_XMLPATTERNS="yes"
- else
- if [ "$VAL" = "no" ]; then
- CFG_XMLPATTERNS="no"
- else
- UNKNOWN_OPT=yes
- fi
- fi
- ;;
- script)
- if [ "$VAL" = "yes" ] || [ "$VAL" = "auto" ]; then
- CFG_SCRIPT="yes"
- else
- if [ "$VAL" = "no" ]; then
- CFG_SCRIPT="no"
- else
- UNKNOWN_OPT=yes
- fi
- fi
- ;;
- scripttools)
- if [ "$VAL" = "yes" ] || [ "$VAL" = "auto" ]; then
- CFG_SCRIPTTOOLS="yes"
- else
- if [ "$VAL" = "no" ]; then
- CFG_SCRIPTTOOLS="no"
- else
- UNKNOWN_OPT=yes
- fi
- fi
- ;;
- svg)
- if [ "$VAL" = "yes" ] || [ "$VAL" = "auto" ]; then
- CFG_SVG="yes"
- else
- if [ "$VAL" = "no" ]; then
- CFG_SVG="no"
- else
- UNKNOWN_OPT=yes
- fi
- fi
- ;;
- v8)
- if [ "$VAL" = "yes" ]; then
- CFG_V8="yes"
- else
- if [ "$VAL" = "no" ]; then
- CFG_V8="no"
- else
- UNKNOWN_OPT=yes
- fi
- fi
- ;;
- declarative)
- if [ "$VAL" = "yes" ]; then
- CFG_DECLARATIVE="yes"
- else
- if [ "$VAL" = "no" ]; then
- CFG_DECLARATIVE="no"
- else
- UNKNOWN_OPT=yes
- fi
- fi
- ;;
declarative-debug)
if [ "$VAL" = "yes" ]; then
CFG_DECLARATIVE_DEBUG="yes"
@@ -2059,21 +1944,6 @@ while [ "$#" -gt 0 ]; do
fi
fi
;;
- webkit)
- [ "$VAL" = "auto" ] && VAL="yes"
- CFG_WEBKIT="$VAL"
- ;;
- location)
- if [ "$VAL" = "yes" ]; then
- CFG_LOCATION="yes"
- else
- if [ "$VAL" = "no" ]; then
- CFG_LOCATION="no"
- else
- UNKNOWN_OPT=yes
- fi
- fi
- ;;
javascript-jit)
if [ "$VAL" = "yes" ] || [ "$VAL" = "auto" ] || [ "$VAL" = "no" ]; then
CFG_JAVASCRIPTCORE_JIT="$VAL"
@@ -2278,13 +2148,6 @@ while [ "$#" -gt 0 ]; do
silent)
CFG_SILENT="$VAL"
;;
- phonon)
- if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
- CFG_PHONON="$VAL"
- else
- UNKNOWN_OPT=yes
- fi
- ;;
phonon-backend)
if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
CFG_PHONON_BACKEND="$VAL"
@@ -2292,13 +2155,6 @@ while [ "$#" -gt 0 ]; do
UNKNOWN_OPT=yes
fi
;;
- multimedia)
- if [ "$VAL" = "yes" ] || [ "$VAL" = "no" ]; then
- CFG_MULTIMEDIA="$VAL"
- else
- UNKNOWN_OPT=yes
- fi
- ;;
dont-process)
CFG_NOPROCESS=yes
;;
@@ -2326,6 +2182,13 @@ while [ "$#" -gt 0 ]; do
UNKNOWN_OPT=yes
fi
;;
+ pcre)
+ if [ "$VAL" = "qt" ] || [ "$VAL" = "system" ]; then
+ CFG_PCRE="$VAL"
+ else
+ UNKNOWN_OPT=yes
+ fi
+ ;;
*)
UNKNOWN_OPT=yes
;;
@@ -2460,7 +2323,7 @@ if [ "$OPT_SHADOW" = "yes" ]; then
if [ -x "$relpath/bin/syncqt" ]; then
mkdir -p "$outpath/bin"
echo "#!/bin/sh" >"$outpath/bin/syncqt"
- echo "perl \"$relpath/bin/syncqt\" -outdir \"$outpath\" \"$relpath\" \"\$@\"" >>"$outpath/bin/syncqt"
+ echo "perl \"$relpath/bin/syncqt\" -qtdir \"$outpath\" \"\$@\"" >>"$outpath/bin/syncqt"
chmod 755 "$outpath/bin/syncqt"
fi
@@ -2499,11 +2362,6 @@ if [ "$OPT_SHADOW" = "yes" ]; then
# symlink the doc directory
rm -rf "$outpath/doc"
ln -s "$relpath/doc" "$outpath/doc"
-
- # make sure q3porting.xml can be found
- mkdir -p "$outpath/tools/porting/src"
- rm -f "$outpath/tools/porting/src/q3porting.xml"
- ln -s "$relpath/tools/porting/src/q3porting.xml" "$outpath/tools/porting/src"
fi
# symlink fonts to be able to run application from build directory
@@ -2630,8 +2488,21 @@ if [ -z "$PLATFORM" ]; then
case "$UNAME_SYSTEM:$UNAME_RELEASE" in
Darwin:*)
if [ "$PLATFORM_MAC" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
- PLATFORM=macx-g++
- # PLATFORM=macx-xcode
+ OSX_VERSION=`uname -r | cut -d. -f1`
+ if [ "$OSX_VERSION" -ge 11 ]; then
+ # We're on Lion or above. Check if we have a supported Clang version
+ case "$(clang -v 2>&1 | grep -Po '(?<=version )\d[\d.]+')" in
+ 3.*)
+ PLATFORM=macx-clang
+ PLATFORM_NOTES="\n - Also available for Mac OS X: macx-g++\n"
+ ;;
+ *)
+ PLATFORM=macx-g++
+ ;;
+ esac
+ else
+ PLATFORM=macx-g++
+ fi
else
PLATFORM=darwin-g++
fi
@@ -2951,21 +2822,6 @@ if [ -z "${CFG_HOST_ARCH}" ]; then
esac
esac
;;
- Darwin:*:*)
- case "$UNAME_MACHINE" in
- Power?Macintosh)
- if [ "$OPT_VERBOSE" = "yes" ]; then
- echo " 32-bit Apple PowerPC (powerpc)"
- fi
- ;;
- x86)
- if [ "$OPT_VERBOSE" = "yes" ]; then
- echo " 32-bit Intel 80x86 (i386)"
- fi
- ;;
- esac
- CFG_HOST_ARCH=macosx
- ;;
AIX:*:00????????00)
if [ "$OPT_VERBOSE" = "yes" ]; then
echo " 64-bit IBM PowerPC (powerpc)"
@@ -3093,29 +2949,6 @@ arm*)
;;
esac
-if [ -d "$relpath/src/corelib/arch/$CFG_ARCH" ]; then
- if [ "$OPT_VERBOSE" = "yes" ]; then
- echo " '$CFG_ARCH' is supported"
- fi
-else
- if [ "$OPT_VERBOSE" = "yes" ]; then
- echo " '$CFG_ARCH' is unsupported, using 'generic'"
- fi
- CFG_ARCH=generic
-fi
-if [ "$CFG_HOST_ARCH" != "$CFG_ARCH" ]; then
- if [ -d "$relpath/src/corelib/arch/$CFG_HOST_ARCH" ]; then
- if [ "$OPT_VERBOSE" = "yes" ]; then
- echo " '$CFG_HOST_ARCH' is supported"
- fi
- else
- if [ "$OPT_VERBOSE" = "yes" ]; then
- echo " '$CFG_HOST_ARCH' is unsupported, using 'generic'"
- fi
- CFG_HOST_ARCH=generic
- fi
-fi
-
if [ "$OPT_VERBOSE" = "yes" ]; then
echo "System architecture: '$CFG_ARCH'"
if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
@@ -3129,7 +2962,7 @@ fi
# detect build style
if [ "$CFG_DEBUG" = "auto" ]; then
- if [ "$CFG_ARCH" = "macosx" -o "$XPLATFORM_MINGW" = "yes" ]; then
+ if [ "$PLATFORM_MAC" = "yes" -o "$XPLATFORM_MINGW" = "yes" ]; then
CFG_DEBUG_RELEASE=yes
CFG_DEBUG=yes
elif [ "$CFG_DEV" = "yes" ]; then
@@ -3194,7 +3027,7 @@ if [ '!' -z "$CFG_SDK" ]; then
fi
# find the default framework value
-if [ "$CFG_ARCH" = "macosx" ]; then
+if [ "$PLATFORM_MAC" = "yes" ]; then
if [ "$CFG_FRAMEWORK" = "auto" ]; then
CFG_FRAMEWORK="$CFG_SHARED"
elif [ "$CFG_FRAMEWORK" = "yes" ] && [ "$CFG_SHARED" = "no" ]; then
@@ -3316,7 +3149,7 @@ if [ "$PLATFORM_MAC" = "yes" ]; then
fi
# find the default framework value
-if [ "$CFG_ARCH" = "macosx" ]; then
+if [ "$PLATFORM_MAC" = "yes" ]; then
if [ "$CFG_FRAMEWORK" = "auto" ]; then
CFG_FRAMEWORK="$CFG_SHARED"
elif [ "$CFG_FRAMEWORK" = "yes" ] && [ "$CFG_SHARED" = "no" ]; then
@@ -3565,24 +3398,21 @@ Usage: $relconf [-h] [-prefix <dir>] [-prefix-install] [-bindir <dir>] [-libdir
[-accessibility] [-no-stl] [-stl] [-no-sql-<driver>] [-sql-<driver>]
[-plugin-sql-<driver>] [-system-sqlite]
[-platform] [-D <string>] [-I <string>] [-L <string>] [-help]
- [-qt-zlib] [-system-zlib] [-no-gif] [-no-libtiff] [-qt-libtiff] [-system-libtiff]
- [-no-libpng] [-qt-libpng] [-system-libpng] [-no-libmng] [-qt-libmng]
- [-system-libmng] [-no-libjpeg] [-qt-libjpeg] [-system-libjpeg] [-make <part>]
+ [-qt-zlib] [-system-zlib] [-no-gif] [-no-libpng] [-qt-libpng] [-system-libpng]
+ [-no-libjpeg] [-qt-libjpeg] [-system-libjpeg] [-make <part>]
[-nomake <part>] [-R <string>] [-l <string>] [-no-rpath] [-rpath] [-continue]
[-verbose] [-v] [-silent] [-no-nis] [-nis] [-no-cups] [-cups] [-no-iconv]
[-iconv] [-no-pch] [-pch] [-no-dbus] [-dbus] [-dbus-linked] [-no-gui]
[-no-separate-debug-info] [-no-mmx] [-no-3dnow] [-no-sse] [-no-sse2]
[-no-sse3] [-no-ssse3] [-no-sse4.1] [-no-sse4.2] [-no-avx] [-no-neon]
[-qtnamespace <namespace>] [-qtlibinfix <infix>] [-separate-debug-info] [-armfpa]
- [-no-optimized-qmake] [-optimized-qmake] [-no-xmlpatterns] [-xmlpatterns]
- [-no-multimedia] [-multimedia] [-no-phonon] [-phonon] [-no-phonon-backend] [-phonon-backend]
- [-no-media-backend] [-media-backend] [-no-audio-backend] [-audio-backend]
+ [-no-phonon-backend] [-phonon-backend] [-no-media-backend] [-media-backend]
+ [-no-audio-backend] [-audio-backend]
+ [-no-javascript-jit] [-javascript-jit] [-no-declarative-debug] [-declarative-debug]
+ [-no-optimized-qmake] [-optimized-qmake]
[-no-openssl] [-openssl] [-openssl-linked]
- [-no-gtkstyle] [-gtkstyle] [-no-svg] [-svg] [-no-webkit] [-webkit] [-webkit-debug]
- [-no-javascript-jit] [-javascript-jit]
- [-no-script] [-script] [-no-scripttools] [-scripttools]
- [-no-declarative] [-declarative] [-no-declarative-debug] [-declarative-debug]
- [-no-location] [-location]
+ [-no-gtkstyle] [-gtkstyle]
+ [-qt-pcre] [-system-pcre]
[additional platform specific options (see below)]
@@ -3705,52 +3535,15 @@ fi
-system-sqlite ..... Use sqlite from the operating system.
- -no-xmlpatterns .... Do not build the QtXmlPatterns module.
- + -xmlpatterns ....... Build the QtXmlPatterns module.
- QtXmlPatterns is built if a decent C++ compiler
- is used and exceptions are enabled.
-
- -no-multimedia ..... Do not build the QtMultimedia module.
- + -multimedia ........ Build the QtMultimedia module.
-
- -no-audio-backend .. Do not build the platform audio backend into QtMultimedia.
- + -audio-backend ..... Build the platform audio backend into QtMultimedia if available.
-
- -no-phonon ......... Do not build the Phonon module.
- + -phonon ............ Build the Phonon module.
- Phonon is built if a decent C++ compiler is used.
-no-phonon-backend.. Do not build the platform phonon plugin.
+ -phonon-backend..... Build the platform phonon plugin.
- -no-svg ............ Do not build the SVG module.
- + -svg ............... Build the SVG module.
-
- -no-webkit ......... Do not build the WebKit module.
- + -webkit ............ Build the WebKit module.
- WebKit is built if a decent C++ compiler is used.
- -webkit-debug ...... Build the WebKit module with debug symbols.
-
-no-javascript-jit . Do not build the JavaScriptCore JIT compiler.
+ -javascript-jit .... Build the JavaScriptCore JIT compiler.
- -no-script ......... Do not build the QtScript module.
- + -script ............ Build the QtScript module.
-
- -no-scripttools .... Do not build the QtScriptTools module.
- + -scripttools ....... Build the QtScriptTools module.
-
- -no-v8 ............. Do not build the V8 module.
- + -v8 ................ Build the V8 module.
-
- -no-declarative ..... Do not build the declarative module.
- + -declarative ....... Build the declarative module.
-
-no-declarative-debug ..... Do not build the declarative debugging support.
+ -declarative-debug ....... Build the declarative debugging support.
- -no-location ....... Do not build the QtLocation module.
- + -location .......... Build the QtLocation module.
-
-platform target ... The operating system and compiler you are building
on ($PLATFORM).
@@ -3800,21 +3593,11 @@ Third Party Libraries:
-no-gif ............ Do not compile GIF reading support.
- -no-libtiff ........ Do not compile TIFF support.
- -qt-libtiff ........ Use the libtiff bundled with Qt.
- + -system-libtiff .... Use libtiff from the operating system.
- See http://www.libtiff.org
-
-no-libpng ......... Do not compile PNG support.
-qt-libpng ......... Use the libpng bundled with Qt.
+ -system-libpng ..... Use libpng from the operating system.
See http://www.libpng.org/pub/png
- -no-libmng ......... Do not compile MNG support.
- -qt-libmng ......... Use the libmng bundled with Qt.
- + -system-libmng ..... Use libmng from the operating system.
- See http://www.libmng.com
-
-no-libjpeg ........ Do not compile JPEG support.
-qt-libjpeg ........ Use the libjpeg bundled with Qt.
+ -system-libjpeg .... Use libjpeg from the operating system.
@@ -3824,6 +3607,9 @@ Third Party Libraries:
+ -openssl ........... Enable run-time OpenSSL support.
-openssl-linked .... Enabled linked OpenSSL support.
+ -qt-pcre ........... Use the PCRE library bundled with Qt.
+ + -system-pcre ....... Use the PCRE library from the operating system.
+
Additional options:
-make <part> ....... Add part to the list of parts to be built at make time.
@@ -4589,7 +4375,7 @@ if [ -n "$PERL" ] && [ -x "$relpath/bin/syncqt" ]; then
SYNCQT_OPTS=
[ "$CFG_DEV" = "yes" ] && SYNCQT_OPTS="$SYNCQT_OPTS -check-includes"
if [ "$OPT_SHADOW" = "yes" ]; then
- "$outpath/bin/syncqt" $SYNCQT_OPTS || exit 1
+ "$outpath/bin/syncqt" $SYNCQT_OPTS "$relpath" || exit 1
elif [ "$CFG_DEV" = "yes" ] || [ ! -d $relpath/include ] || [ -d $relpath/.git ]; then
QTDIR="$relpath" perl "$outpath/bin/syncqt" $SYNCQT_OPTS || exit 1
fi
@@ -4947,41 +4733,6 @@ if [ "$CFG_GIF" = "auto" ]; then
fi
fi
-# detect how tiff should be built
-if [ "$CFG_TIFF" = "auto" ]; then
- if [ "$CFG_SHARED" = "yes" ]; then
- CFG_TIFF=plugin
- else
- CFG_TIFF=yes
- fi
-fi
-
-# detect tiff
-if [ "$CFG_LIBTIFF" = "auto" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/libtiff "libtiff" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
- CFG_LIBTIFF=system
- else
- CFG_LIBTIFF=qt
- fi
-fi
-
-# detect how mng should be built
-if [ "$CFG_MNG" = "auto" ]; then
- if [ "$CFG_SHARED" = "yes" ]; then
- CFG_MNG=plugin
- else
- CFG_MNG=yes
- fi
-fi
-# detect mng
-if [ "$CFG_LIBMNG" = "auto" ]; then
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/libmng "libmng" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
- CFG_LIBMNG=system
- else
- CFG_LIBMNG=qt
- fi
-fi
-
# detect png
if [ "$CFG_LIBPNG" = "auto" ]; then
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/libpng "libpng" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
@@ -5282,8 +5033,8 @@ fi
# auto-detect iconv(3) support
if [ "$CFG_ICONV" != "no" ]; then
- if [ "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
- CFG_ICONV=no
+ if [ "$PLATFORM_QWS" = "yes" -o "$XPLATFORM_MINGW" = "yes" ] || [ "$PLATFORM_QPA" = "yes" -a "$CFG_ICONV" = "auto" ]; then
+ CFG_ICONV=no
elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" "$OPT_VERBOSE" "$relpath" "$outpath" "config.tests/unix/iconv" "POSIX iconv" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
CFG_ICONV=yes
elif "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" "$OPT_VERBOSE" "$relpath" "$outpath" "config.tests/unix/sun-libiconv" "SUN libiconv" $L_FLAGS $I_FLAGS $l_FLAGS $MAC_CONFIG_TEST_COMMANDLINE; then
@@ -5328,15 +5079,6 @@ if [ "$CFG_DBUS" != "no" ]; then
fi
fi
-if [ "$CFG_MULTIMEDIA" = "auto" ]; then
- CFG_MULTIMEDIA="$CFG_GUI"
-fi
-
-if [ "$CFG_MULTIMEDIA" = "yes" ] && [ "$CFG_GUI" = "no" ]; then
- echo "QtMultimedia requested, but it can't be built without QtGui"
- exit 1
-fi
-
# X11/QWS/Lighthouse
if [ "$PLATFORM_X11" = "yes" -o "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "yes" ]; then
@@ -5363,66 +5105,31 @@ if [ "$PLATFORM_X11" = "yes" -o "$PLATFORM_QWS" = "yes" -o "$PLATFORM_QPA" = "ye
fi
fi
- if [ "$CFG_GUI" = "no" ]; then
- if [ "$CFG_PHONON" = "auto" ]; then
- CFG_PHONON=no
- fi
- if [ "$CFG_PHONON" != "no" ]; then
- echo "Phonon enabled, but GUI disabled."
- echo " You might need to either enable the GUI or disable Phonon"
- exit 1
+ # ### Vestige
+ if [ "$CFG_GLIB" = "yes" -a "$CFG_GSTREAMER" != "no" ]; then
+ if [ -n "$PKG_CONFIG" ]; then
+ QT_CFLAGS_GSTREAMER=`$PKG_CONFIG --cflags gstreamer-0.10 gstreamer-plugins-base-0.10 2>/dev/null`
+ QT_LIBS_GSTREAMER=`$PKG_CONFIG --libs gstreamer-0.10 gstreamer-plugins-base-0.10 2>/dev/null`
fi
- fi
-
- # Auto-detect GStreamer support (needed for Phonon)
- if [ "$CFG_PHONON" != "no" ]; then
- if [ "$CFG_GLIB" = "yes" -a "$CFG_GSTREAMER" != "no" ]; then
- if [ -n "$PKG_CONFIG" ]; then
- QT_CFLAGS_GSTREAMER=`$PKG_CONFIG --cflags gstreamer-0.10 gstreamer-plugins-base-0.10 2>/dev/null`
- QT_LIBS_GSTREAMER=`$PKG_CONFIG --libs gstreamer-0.10 gstreamer-plugins-base-0.10 2>/dev/null`
- fi
- if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/gstreamer "GStreamer" $L_FLAGS $I_FLAGS $l_FLAGS $QT_CFLAGS_GSTREAMER $QT_LIBS_GSTREAMER $X11TESTS_FLAGS; then
- CFG_GSTREAMER=yes
- QMakeVar set QT_CFLAGS_GSTREAMER "$QT_CFLAGS_GSTREAMER"
- QMakeVar set QT_LIBS_GSTREAMER "$QT_LIBS_GSTREAMER"
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/gstreamer "GStreamer" $L_FLAGS $I_FLAGS $l_FLAGS $QT_CFLAGS_GSTREAMER $QT_LIBS_GSTREAMER $X11TESTS_FLAGS; then
+ CFG_GSTREAMER=yes
+ QMakeVar set QT_CFLAGS_GSTREAMER "$QT_CFLAGS_GSTREAMER"
+ QMakeVar set QT_LIBS_GSTREAMER "$QT_LIBS_GSTREAMER"
+ else
+ if [ "$CFG_GSTREAMER" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
+ echo "Gstreamer 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
- if [ "$CFG_GSTREAMER" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
- echo "Gstreamer 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_GSTREAMER=no
- fi
+ CFG_GSTREAMER=no
fi
- elif [ "$CFG_GLIB" = "no" ]; then
- CFG_GSTREAMER=no
fi
- else
+ elif [ "$CFG_GLIB" = "no" ]; then
CFG_GSTREAMER=no
fi
- if [ "$CFG_PHONON" != "no" ]; then
- if [ "$CFG_PHONON_BACKEND" != "no" ]; then
- if [ "$CFG_GSTREAMER" = "yes" ]; then
- CFG_PHONON=yes
- else
- if [ "$CFG_PHONON" = "yes" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
- echo "Phonon 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_PHONON=no
- fi
- fi
- else
- CFG_PHONON=yes
- fi
- fi
-
# auto-detect libicu support
if [ "$CFG_ICU" != "no" ]; then
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/icu "ICU" $L_FLAGS $I_FLAGS $l_FLAGS; then
@@ -5643,12 +5350,6 @@ if [ "$PLATFORM_X11" = "yes" ]; then
fi
fi
- # Additional check to decide if WebKit support will be included
- if [ "$CFG_XRENDER" = "no" ] && [ "$CFG_WEBKIT" != "no" ]; then
- echo "Warning: -no-xrender will disable the QtWebkit module."
- CFG_WEBKIT="no"
- fi
-
# auto-detect MIT-SHM support
if [ "$CFG_MITSHM" != "no" ]; then
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/x11/mitshm "mitshm" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS; then
@@ -5860,7 +5561,7 @@ fi
if [ "$PLATFORM_QPA" = "yes" ]; then
# auto-detect OpenGL support (es2 = OpenGL ES 2.x)
- if [ "$CFG_ARCH" = "macosx" ]; then
+ if [ "$PLATFORM_MAC" = "yes" ]; then
CFG_OPENGL=desktop
elif [ "$CFG_OPENGL" = "auto" ] || [ "$CFG_OPENGL" = "yes" ]; then
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/opengldesktop "OpenGL" $L_FLAGS $I_FLAGS $l_FLAGS $X11TESTS_FLAGS; then
@@ -6058,7 +5759,7 @@ if [ "$PLATFORM_QPA" = "yes" ]; then
QMakeVar add DEFINES QT_NO_CORESERVICES
fi
- if [ "$PLATFORM_QPA" = "yes" ] && [ "$BUILD_ON_MAC" = "no" ]; then
+ if [ "$PLATFORM_QPA" = "yes" ] && [ "$BUILD_ON_MAC" = "no" ] && [ "$XPLATFORM_MINGW" = "no" ]; then
if [ "$CFG_XCB" = "no" ] && [ "$CFG_WAYLAND" = "no" ]; then
if [ "$ORIG_CFG_XCB" = "auto" ] || [ "$ORIG_CFG_WAYLAND" = "auto" ]; then
echo "No QPA platform plugin enabled!"
@@ -6456,6 +6157,23 @@ if [ "$CFG_OPENSSL" != "no" ]; then
fi
fi
+# detect PCRE
+if [ "$CFG_PCRE" != "qt" ]; then
+ if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/pcre "PCRE" $L_FLAGS $I_FLAGS $l_FLAGS; then
+ CFG_PCRE=system
+ else
+ if [ "$CFG_PCRE" = "system" ] && [ "$CFG_CONFIGURE_EXIT_ON_ERROR" = "yes" ]; then
+ echo "PCRE 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_PCRE=qt
+ fi
+ fi
+fi
+
# detect OpenVG support
if [ "$CFG_OPENVG" != "no" ]; then
if "$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" "config.tests/unix/openvg" "OpenVG" $L_FLAGS $I_FLAGS $l_FLAGS $CONFIG_ARG; then
@@ -6581,20 +6299,15 @@ if [ "$CFG_MAC_DWARF2" = "yes" ]; then
fi
# Set the default arch if there are no "-arch" arguments on the configure line
-if [ "$CFG_ARCH" = "macosx" ] && [ "$CFG_MAC_ARCHS" = "" ]; then
+if [ "$PLATFORM_MAC" = "yes" ] && [ "$CFG_MAC_ARCHS" = "" ]; then
source "$mactests/defaultarch.test" "$TEST_COMPILER" "$OPT_VERBOSE" "$mactests"
CFG_MAC_ARCHS=" $QT_MAC_DEFAULT_ARCH"
[ "$OPT_VERBOSE" = "yes" ] && echo "Setting Mac architechture to$CFG_MAC_ARCHS."
fi
-# enable Phonon
-if [ "$CFG_PHONON" = "yes" ]; then
- # No longer needed after modularization
- #QT_CONFIG="$QT_CONFIG phonon"
- if [ "$CFG_PHONON_BACKEND" = "yes" ]; then
- QT_CONFIG="$QT_CONFIG phonon-backend"
- fi
-else
- QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_PHONON"
+
+# ### Vestige
+if [ "$CFG_PHONON_BACKEND" = "yes" ]; then
+ QT_CONFIG="$QT_CONFIG phonon-backend"
fi
# disable accessibility
@@ -6733,7 +6446,7 @@ 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"
-[ "$CFG_ARCH" = "macosx" ] && QMAKE_CONFIG="$QMAKE_CONFIG $CFG_MAC_ARCHS"
+[ "$PLATFORM_MAC" = "yes" ] && QMAKE_CONFIG="$QMAKE_CONFIG $CFG_MAC_ARCHS"
if [ "$CFG_CLOCK_GETTIME" = "yes" ]; then
QT_CONFIG="$QT_CONFIG clock-gettime"
fi
@@ -6765,16 +6478,6 @@ if [ "$CFG_JPEG" = "no" ]; then
elif [ "$CFG_JPEG" = "yes" ]; then
QT_CONFIG="$QT_CONFIG jpeg"
fi
-if [ "$CFG_LIBMNG" = "no" ]; then
- CFG_MNG="no"
-elif [ "$CFG_LIBMNG" = "system" ]; then
- QT_CONFIG="$QT_CONFIG system-mng"
-fi
-if [ "$CFG_MNG" = "no" ]; then
- QT_CONFIG="$QT_CONFIG no-mng"
-elif [ "$CFG_MNG" = "yes" ]; then
- QT_CONFIG="$QT_CONFIG mng"
-fi
if [ "$CFG_LIBPNG" = "no" ]; then
CFG_PNG="no"
fi
@@ -6791,16 +6494,6 @@ if [ "$CFG_GIF" = "no" ]; then
elif [ "$CFG_GIF" = "yes" ]; then
QT_CONFIG="$QT_CONFIG gif"
fi
-if [ "$CFG_LIBTIFF" = "no" ]; then
- CFG_TIFF="no"
-elif [ "$CFG_LIBTIFF" = "system" ]; then
- QT_CONFIG="$QT_CONFIG system-tiff"
-fi
-if [ "$CFG_TIFF" = "no" ]; then
- QT_CONFIG="$QT_CONFIG no-tiff"
-elif [ "$CFG_TIFF" = "yes" ]; then
- QT_CONFIG="$QT_CONFIG tiff"
-fi
if [ "$CFG_LIBFREETYPE" = "no" ]; then
QT_CONFIG="$QT_CONFIG no-freetype"
QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_FREETYPE"
@@ -6906,7 +6599,7 @@ fi
[ '!' -z "$L_FLAGS" ] && QMakeVar add QMAKE_LIBDIR_FLAGS "$L_FLAGS"
[ '!' -z "$l_FLAGS" ] && QMakeVar add LIBS "$l_FLAGS"
-if [ "$CFG_ARCH" = "macosx" ]; then
+if [ "$PLATFORM_MAC" = "yes" ]; then
if [ "$CFG_RPATH" = "yes" ]; then
QMAKE_CONFIG="$QMAKE_CONFIG absolute_library_soname"
fi
@@ -6987,6 +6680,10 @@ if [ "$CFG_FORCE_ASSERTS" = "yes" ]; then
QT_CONFIG="$QT_CONFIG force_asserts"
fi
+if [ "$CFG_PCRE" = "qt" ]; then
+ QMAKE_CONFIG="$QMAKE_CONFIG pcre"
+fi
+
#
# Some Qt modules are too advanced in C++ for some old compilers
# Detect here the platforms where they are known to work.
@@ -6994,18 +6691,9 @@ fi
# See Qt documentation for more information on which features are
# supported and on which compilers.
#
-canBuildQtXmlPatterns="yes"
-canBuildWebKit="$HAVE_STL"
canBuildQtConcurrent="yes"
-canBuildV8="yes"
canUseV8Snapshot="yes"
-# WebKit requires stdint.h
-"$unixtests/compile.test" "$XQMAKESPEC" "$QMAKE_CONFIG" $OPT_VERBOSE "$relpath" "$outpath" config.tests/unix/stdint "Stdint" $L_FLAGS $I_FLAGS $l_FLAGS
-if [ $? != "0" ]; then
- canBuildWebKit="no"
-fi
-
case "$XPLATFORM" in
hpux-g++*)
# PA-RISC's assembly is too limited
@@ -7129,172 +6817,46 @@ else
QT_CONFIG="$QT_CONFIG concurrent"
fi
-if [ "$CFG_XMLPATTERNS" = "yes" -a "$CFG_EXCEPTIONS" = "no" ]; then
- echo "QtXmlPatterns was requested, but it can't be built due to exceptions being disabled."
- exit 1
-fi
-if [ "$CFG_XMLPATTERNS" = "auto" -a "$CFG_EXCEPTIONS" != "no" ]; then
- CFG_XMLPATTERNS="$canBuildQtXmlPatterns"
-elif [ "$CFG_EXCEPTIONS" = "no" ]; then
- CFG_XMLPATTERNS="no"
-fi
-# No longer needed after modularization
-#if [ "$CFG_XMLPATTERNS" = "yes" ]; then
-# QT_CONFIG="$QT_CONFIG xmlpatterns"
-#else
-# QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_XMLPATTERNS"
-#fi
-
-# No longer needed after modularization
-#if [ "$CFG_MULTIMEDIA" = "no" ]; then
-# QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_MULTIMEDIA"
-#else
-# QT_CONFIG="$QT_CONFIG multimedia"
-#fi
-
+# ### Vestige
if [ "$CFG_AUDIO_BACKEND" = "yes" ]; then
QT_CONFIG="$QT_CONFIG audio-backend"
fi
-if [ "$CFG_SVG" = "auto" ]; then
- CFG_SVG=$CFG_GUI
+# ### Vestige
+if [ "$CFG_WEBKIT" = "debug" ]; then
+ QMAKE_CONFIG="$QMAKE_CONFIG webkit-debug"
fi
-if [ "$CFG_SVG" = "yes" ] && [ "$CFG_GUI" = "no" ]; then
- echo "QtSvg requested, but it can't be built without QtGui"
- exit 1
-fi
-
-if [ "$CFG_SVG" = "yes" ]; then
- QT_CONFIG="$QT_CONFIG svg"
+# ### Vestige
+QT_CONFIG="$QT_CONFIG v8"
+# Detect snapshot support
+if [ "$CFG_ARCH" != "$CFG_HOST_ARCH" ]; then
+ case "$CFG_HOST_ARCH,$CFG_ARCH" in
+ i386,arm)
+ ;;
+ *) canUseV8Snapshot="no"
+ ;;
+ esac
else
- QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_SVG"
-fi
-
-if [ "$CFG_WEBKIT" != "no" ]; then
- CFG_WEBKIT="$canBuildWebKit"
-fi
-
-if [ "$CFG_WEBKIT" != "no" ]; then
- # No longer needed after modularization
- #QT_CONFIG="$QT_CONFIG webkit"
- # The reason we set CFG_WEBKIT, is such that the printed overview of what will be enabled, shows correctly.
- if [ "$CFG_WEBKIT" = "debug" ]; then
- QMAKE_CONFIG="$QMAKE_CONFIG webkit-debug"
+ if [ -n "$_SBOX_DIR" -a "$CFG_ARCH" = "arm" ]; then
+ # QEMU crashes when building inside Scratchbox with an ARM target
+ canUseV8Snapshot="no"
fi
fi
-
-if [ "$CFG_SCRIPT" = "auto" ]; then
- CFG_SCRIPT="yes"
-fi
-
-# No longer needed after modularization
-#if [ "$CFG_SCRIPT" = "yes" ]; then
-# QT_CONFIG="$QT_CONFIG script"
-#else
-# QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_SCRIPT"
-#fi
-
-if [ "$CFG_SCRIPTTOOLS" = "yes" -a "$CFG_SCRIPT" = "no" ]; then
- echo "QtScriptTools was requested, but it can't be built due to QtScript being disabled."
- exit 1
-fi
-if [ "$CFG_SCRIPTTOOLS" = "auto" -a "$CFG_SCRIPT" != "no" ]; then
- CFG_SCRIPTTOOLS="yes"
-elif [ "$CFG_SCRIPT" = "no" ]; then
- CFG_SCRIPTTOOLS="no"
+if [ "$CFG_V8SNAPSHOT" = "auto" ]; then
+ CFG_V8SNAPSHOT="$canUseV8Snapshot"
fi
-
-# No longer needed after modularization
-#if [ "$CFG_SCRIPTTOOLS" = "yes" ]; then
-# QT_CONFIG="$QT_CONFIG scripttools"
-#else
-# QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_SCRIPTTOOLS"
-#fi
-
-
-case "$CFG_ARCH" in
-i386|x86_64|arm|mips|macosx) ;;
-*) canBuildV8="no";;
-esac
-
-if [ "$CFG_V8" = "yes" -a "$canBuildV8" = "no" ]; then
- echo "Error: V8 was requested, but is not supported on this platform."
+if [ "$CFG_V8SNAPSHOT" = "yes" -a "$canUseV8Snapshot" = "no" ]; then
+ echo "Error: V8 snapshot was requested, but is not supported on this platform."
exit 1
fi
-
-if [ "$CFG_V8" = "auto" ]; then
- CFG_V8="$canBuildV8"
-fi
-
-if [ "$CFG_V8" = "no" ]; then
- QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_V8"
-else
- QT_CONFIG="$QT_CONFIG v8"
- # Detect snapshot support
- if [ "$CFG_ARCH" != "$CFG_HOST_ARCH" ]; then
- case "$CFG_HOST_ARCH,$CFG_ARCH" in
- i386,arm)
- ;;
- *) canUseV8Snapshot="no"
- ;;
- esac
- else
- if [ -n "$_SBOX_DIR" -a "$CFG_ARCH" == "arm" ]; then
- # QEMU crashes when building inside Scratchbox with an ARM target
- canUseV8Snapshot="no"
- fi
- fi
- if [ "$CFG_V8SNAPSHOT" = "auto" ]; then
- CFG_V8SNAPSHOT="$canUseV8Snapshot"
- fi
- if [ "$CFG_V8SNAPSHOT" = "yes" -a "$canUseV8Snapshot" = "no" ]; then
- echo "Error: V8 snapshot was requested, but is not supported on this platform."
- exit 1
- fi
- if [ "$CFG_V8SNAPSHOT" = "yes" ]; then
- QT_CONFIG="$QT_CONFIG v8snapshot"
- fi
-fi
-
-if [ "$CFG_DECLARATIVE" = "yes" ]; then
- if [ "$CFG_V8" = "no" -o "$CFG_GUI" = "no" ]; then
- echo "Error: QtDeclarative was requested, but it can't be built due to QtV8 or QtGui being disabled."
- exit 1
- fi
-fi
-if [ "$CFG_DECLARATIVE" = "auto" ]; then
- if [ "$CFG_V8" = "no" -o "$CFG_GUI" = "no" ]; then
- CFG_DECLARATIVE=no
- else
- CFG_DECLARATIVE=yes
- fi
-fi
-
-if [ "$CFG_DECLARATIVE" = "yes" ]; then
- # No longer needed after modularization
- #QT_CONFIG="$QT_CONFIG declarative"
- if [ "$CFG_DECLARATIVE_DEBUG" = "no" ]; then
- QCONFIG_FLAGS="$QCONFIG_FLAGS QDECLARATIVE_NO_DEBUG_PROTOCOL"
- fi
-else
- QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_DECLARATIVE"
-fi
-
-if [ "$CFG_LOCATION" = "auto" ]; then
- CFG_LOCATION="$CFG_GUI"
+if [ "$CFG_V8SNAPSHOT" = "yes" ]; then
+ QT_CONFIG="$QT_CONFIG v8snapshot"
fi
-if [ "$CFG_LOCATION" = "yes" ] && [ "$CFG_GUI" = "no" ]; then
- echo "QtLocation requested, but it can't be built without QtGui"
- exit 1
-fi
-
-#Disable QtLocation until ready
-CFG_LOCATION="no"
-
-if [ "$CFG_LOCATION" = "no" ]; then
- QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_LOCATION"
+# ### Vestige
+if [ "$CFG_DECLARATIVE_DEBUG" = "no" ]; then
+ QCONFIG_FLAGS="$QCONFIG_FLAGS QDECLARATIVE_NO_DEBUG_PROTOCOL"
fi
if [ "$CFG_EXCEPTIONS" = "no" ]; then
@@ -7319,14 +6881,6 @@ if [ "$CFG_EXCEPTIONS" = "no" ]; then
QMAKE_CONFIG="$QMAKE_CONFIG exceptions_off"
fi
-# Set the minimum deployment target.
-if [ "$BUILD_ON_MAC" = "yes" ]; then
- QMakeVar add QMAKE_CFLAGS "-mmacosx-version-min=10.6"
- QMakeVar add QMAKE_CXXFLAGS "-mmacosx-version-min=10.6"
- QMakeVar add QMAKE_LFLAGS "-mmacosx-version-min=10.6"
- QMakeVar add QMAKE_OBJECTIVE_CFLAGS "-mmacosx-version-min=10.6"
-fi
-
case "$COMPILER" in
g++*)
# GNU C++
@@ -7555,18 +7109,13 @@ QMakeVar set sql-plugins "$SQL_PLUGINS"
# Add other configuration options to the qconfig.h file
[ "$CFG_GIF" = "yes" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_BUILTIN_GIF_READER=1"
-[ "$CFG_TIFF" != "yes" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_IMAGEFORMAT_TIFF"
[ "$CFG_PNG" != "yes" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_IMAGEFORMAT_PNG"
[ "$CFG_JPEG" != "yes" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_IMAGEFORMAT_JPEG"
-[ "$CFG_MNG" != "yes" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_IMAGEFORMAT_MNG"
[ "$CFG_ZLIB" != "yes" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_ZLIB"
[ "$CFG_EXCEPTIONS" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_EXCEPTIONS"
[ "$CFG_SXE" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_SXE"
[ "$CFG_DBUS" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_DBUS"
-# ATM we need this define to compile Qt. Remove later!
-QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_STYLE_S60"
-
# X11/Unix/Mac only configs
[ "$CFG_CUPS" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_CUPS"
[ "$CFG_ICONV" = "no" ] && QCONFIG_FLAGS="$QCONFIG_FLAGS QT_NO_ICONV"
@@ -7855,7 +7404,6 @@ QT_BUILD_PARTS = $CFG_BUILD_PARTS
QMAKE_MOC = \$\$QT_BUILD_TREE/bin/moc
QMAKE_UIC = \$\$QT_BUILD_TREE/bin/uic
QMAKE_RCC = \$\$QT_BUILD_TREE/bin/rcc
-QMAKE_QDBUSXML2CPP = \$\$QT_BUILD_TREE/bin/qdbusxml2cpp
QMAKE_INCDIR_QT = \$\$QT_BUILD_TREE/include
QMAKE_LIBDIR_QT = \$\$QT_BUILD_TREE/lib
@@ -7939,15 +7487,6 @@ EOF
*) ;;
esac
-if [ "$PLATFORM_MAC" = "yes" ] && [ "$CFG_MAC_DWARF2" = "no" ] && [ "$CFG_WEBKIT" != "no" ] && [ "$CFG_DEBUG_RELEASE" = "yes" ]; then
- cat <<EOF
- WARNING: DWARF2 debug symbols are not enabled. Linking webkit
- in debug mode will run out of memory on systems with 2GB or less.
- Install Xcode 2.4.1 or higher to enable DWARF2, or configure with
- -no-webkit or -release to skip webkit debug.
-EOF
-fi
-
echo
if [ "$XPLATFORM" = "$PLATFORM" ]; then
echo "Build type: $PLATFORM"
@@ -7997,30 +7536,12 @@ fi
[ "$CFG_DBUS" = "linked" ] && echo "QtDBus module .......... yes (linked)"
echo "QtConcurrent code ...... $CFG_CONCURRENT"
echo "QtGui module ........... $CFG_GUI"
-echo "QtScript module ........ $CFG_SCRIPT"
-echo "QtScriptTools module ... $CFG_SCRIPTTOOLS"
-echo "QtXmlPatterns module ... $CFG_XMLPATTERNS"
-echo "Phonon module .......... $CFG_PHONON"
-echo "Multimedia module ...... $CFG_MULTIMEDIA"
-echo "SVG module ............. $CFG_SVG"
-case "$CFG_WEBKIT" in
- yes) echo "WebKit module .......... yes" ;;
- debug) echo "WebKit module .......... yes (debug)" ;;
- no) echo "WebKit module .......... no" ;;
-esac
-if [ "$CFG_WEBKIT" != "no" ] || [ "$CFG_SCRIPT" != "no" ]; then
- if [ "$CFG_JAVASCRIPTCORE_JIT" = "auto" ]; then
- echo "JavaScriptCore JIT ..... To be decided by JavaScriptCore"
- else
- echo "JavaScriptCore JIT ..... $CFG_JAVASCRIPTCORE_JIT"
- fi
-fi
-echo "V8 module .............. $CFG_V8"
-echo "Declarative module ..... $CFG_DECLARATIVE"
-if [ "$CFG_DECLARATIVE" = "yes" ]; then
- echo "Declarative debugging ...$CFG_DECLARATIVE_DEBUG"
+if [ "$CFG_JAVASCRIPTCORE_JIT" = "auto" ]; then
+ echo "JavaScriptCore JIT ..... To be decided by JavaScriptCore"
+else
+ echo "JavaScriptCore JIT ..... $CFG_JAVASCRIPTCORE_JIT"
fi
-echo "Location module ........ $CFG_LOCATION"
+echo "Declarative debugging ...$CFG_DECLARATIVE_DEBUG"
echo "STL support ............ $CFG_STL"
echo "PCH support ............ $CFG_PRECOMPILE"
echo "MMX/3DNOW/SSE/SSE2/SSE3. ${CFG_MMX}/${CFG_3DNOW}/${CFG_SSE}/${CFG_SSE2}/${CFG_SSE3}"
@@ -8042,11 +7563,6 @@ echo "GStreamer support ...... $CFG_GSTREAMER"
echo "PulseAudio support ..... $CFG_PULSEAUDIO"
echo "Large File support ..... $CFG_LARGEFILE"
echo "GIF support ............ $CFG_GIF"
-if [ "$CFG_TIFF" = "no" ]; then
- echo "TIFF support ........... $CFG_TIFF"
-else
- echo "TIFF support ........... $CFG_TIFF ($CFG_LIBTIFF)"
-fi
if [ "$CFG_JPEG" = "no" ]; then
echo "JPEG support ........... $CFG_JPEG"
else
@@ -8057,11 +7573,6 @@ if [ "$CFG_PNG" = "no" ]; then
else
echo "PNG support ............ $CFG_PNG ($CFG_LIBPNG)"
fi
-if [ "$CFG_MNG" = "no" ]; then
- echo "MNG support ............ $CFG_MNG"
-else
- echo "MNG support ............ $CFG_MNG ($CFG_LIBMNG)"
-fi
echo "zlib support ........... $CFG_ZLIB"
echo "Session management ..... $CFG_SM"
if [ "$PLATFORM_QWS" = "yes" ]; then
@@ -8148,6 +7659,7 @@ if [ "$PLATFORM_MAC" = "yes" ]; then
echo "CoreWlan support ....... $CFG_COREWLAN"
fi
echo "libICU support ......... $CFG_ICU"
+echo "PCRE support ........... $CFG_PCRE"
if [ "$CFG_XCB_LIMITED" = "yes" ] && [ "$CFG_XCB" = "yes" ]; then
echo "Xcb support ............ limited (old version)"
else
@@ -8328,7 +7840,7 @@ PART_ROOTS=
for part in $CFG_BUILD_PARTS; do
case "$part" in
tools) PART_ROOTS="$PART_ROOTS tools" ;;
- libs) PART_ROOTS="$PART_ROOTS src tools/linguist/lrelease" ;;
+ libs) PART_ROOTS="$PART_ROOTS src" ;;
translations) PART_ROOTS="$PART_ROOTS translations" ;;
examples) PART_ROOTS="$PART_ROOTS examples" ;;
*) ;;
@@ -8358,16 +7870,8 @@ for file in .projects .projects.3; do
continue
fi
SPEC=$XQMAKESPEC ;;
- *examples/activeqt/*) continue ;;
*/qmake/qmake.pro) continue ;;
- *tools/bootstrap*|*tools/moc*|*tools/rcc*|*tools/uic*|*linguist/lrelease*) SPEC=$QMAKESPEC ;;
- *tools/mkv8snapshot/*)
- if [ "$CFG_V8" = "yes" -a "$CFG_V8SNAPSHOT" = "yes" ]; then
- SPEC=$QMAKESPEC
- else
- continue
- fi
- ;;
+ *tools/bootstrap*|*tools/moc*|*tools/rcc*|*tools/uic*) SPEC=$QMAKESPEC ;;
*) if [ "$CFG_NOPROCESS" = "yes" ]; then
continue
else
diff --git a/dist/changes-5.0.0 b/dist/changes-5.0.0
index e8709430d6..fc5bebd11d 100644
--- a/dist/changes-5.0.0
+++ b/dist/changes-5.0.0
@@ -39,6 +39,12 @@ information about a particular change.
- Qt::escape() is deprecated (but can be enabled via
QT_DISABLE_DEPRECATED_BEFORE), use QString::toHtmlEscaped() instead.
+- QBool is gone. QString::contains, QByteArray::contains, and QList::contains
+ used to return an internal QBool class so that the Qt3 code
+ "if (a.contains() == 2)" wouldn't compile anymore. Such code cannot exist
+ in Qt4, so these methods return a bool now. If your code used the undocumented
+ QBool, simply replace it with bool.
+
- QMetaType::construct() has been renamed to QMetaType::create().
- QTestLib:
@@ -96,6 +102,9 @@ information about a particular change.
- QSound has been moved from QtGui to QtMultimedia
+- QTabletEvent::QTabletEvent does not take a hiResGlobalPos argument anymore,
+ as all coordinates are floating point based now.
+
- QTouchEvent:
* The DeviceType enum and deviceType() have been deprecated due to
@@ -111,6 +120,16 @@ information about a particular change.
* QWidget *widget() has been removed and is replaced by QObject
*target() in order to avoid QWidget dependencies.
+- QMetaType
+
+ * It is no longer possible to use Q_DECLARE_METATYPE(Foo*) where Foo is only
+ forward declared - it must be fully defined.
+
+- QItemEditorFactory
+
+ * The signature of the createEditor and valuePropertyName methods
+ have been changed to take arguments of type int instead of QVariant::Type.
+
- QWindowSystemInterface:
* The signature of all handleTouchEvent() variants have changed,
@@ -157,6 +176,29 @@ information about a particular change.
- QTcpServer::incomingConnection() now takes a qintptr instead of an int.
+- QNetworkConfiguration::bearerName() removed, and bearerTypeName() should be used.
+
+- QDir::convertSeparators() (deprecated since Qt 4.2) has been removed. Use
+ QDir::toNativeSeparators() instead.
+
+- QIconEngineV2 was merged into QIconEngine
+ You might need to adjust your code if it used a QIconEngine.
+
+- qmake
+ * several functions and built-in variables were modified to return normalized paths.
+
+- QTextCodecPlugin has been removed since it is no longer used. All text codecs
+ are now built into QtCore.
+
+- QDir::NoDotAndDotDot is QDir::NoDot|QDir::NoDotDot therefore there is no need
+ to use or check both.
+
+- QLocale
+ * toShort(), toUShort(), toInt(), toUInt(), toLongLong() and toULongLong() no
+ longer take a parameter for base, they will only perform localised base 10
+ conversions. For converting other bases use the QString methods instead.
+
+- QSystemLocale has been removed from the public API.
****************************************************************************
* General *
@@ -200,6 +242,39 @@ QtCore
altering the watchlist in both the singular and QStringList overloads of
addPath and removePath.
+* QString::mid, QString::midRef and QByteArray::mid, if the position passed
+ is equal to the length (that is, right after the last character/byte),
+ now return an empty QString, QStringRef or QByteArray respectively.
+ in Qt 4 they returned a null QString or a null QStringRef.
+
+* QString methods toLongLong(), toULongLong(), toLong(), toULong(), toInt(),
+ toUInt(), toShort(), toUShort(), toDouble(), and toFloat() no longer use the
+ default or system locale, they will always use the C locale. This is to
+ guarantee consistent default conversion of strings. For locale-aware conversions
+ use the equivalent QLocale methods.
+
+* QDate, QTime, and QDateTime have undergone important behavioural changes:
+ * QDate only implements the Gregorian calendar, the switch to the Julian
+ calendar before 1582 has been removed. This means all QDate methods will
+ return different results for dates prior to 15 October 1582, and there is
+ no longer a gap between 4 October 1582 and 15 October 1582.
+ * QDate::setYMD() is deprecated, use QDate::setDate() instead
+ * Most methods now apply strict validity checks and will return appropriate
+ and consistent values when invalid. For example, QDate::year() will return
+ 0 and QDate::shortMonthName() will return QString().
+ * Adding days to a null QDate or seconds to a null QTime will no longer return
+ a valid QDate/QTime.
+ * QDate stores the Julian Day as a qint64 extending date support across a
+ more interesting range, see the class documentation for details.
+ * Conversion to YMD form dates is only accurate between to 4800 BCE to
+ 1.4 million CE
+ * The QDate::addDays() and QDateTime::addDays() methods now take a qint64
+ * The QDate::daysTo() and QDateTime::daysTo() methods now return a qint64
+
+
+* QIntValidator and QDoubleValidator no longer fall back to using the C locale if
+ the requested locale fails to validate the input.
+
QtGui
-----
* Accessibility has been refactored. The hierachy of accessible objects is implemented via
@@ -212,9 +287,21 @@ QtGui
QtWidgets
---------
-* QWidget::setInputContext() and QApplication::setInputContext() are removed.
+* QInputContext removed as well as related getters and setters on QWidget and QApplication.
Input contexts are now platform specific.
+* QInputDialog::getInteger() has been obsoleted. Use QInputDialog::getInt() instead.
+
+* In Qt 4, many QStyleOption subclasses were introduced in order to keep
+ binary compatibility -- QStyleOption was designed to be extended this way,
+ in fact it embeds a version number. In Qt 5 the various QStyleOption*V{2,3,4}
+ classes have been removed, and their members merged into the respective
+ base classes. Those classes were left as typedefs to keep existing code
+ working. Still, some minor adjustements could be necessary, especially in code
+ that uses QStyleOption directly and does not initialize all the members using
+ the proper Qt API: due to the version bump, QStyle will try to use the additional
+ QStyleOption members, which are left default-initialized.
+
QtNetwork
---------
* QHostAddress::isLoopback() API added. Returns true if the address is
@@ -288,6 +375,9 @@ Qt for Windows CE
- Assistant
- Designer
+ * [QTBUG-8926] [QTBUG-20440] Properties of type QStringList now have
+ translation attributes which apply to all items.
+ They are by default translatable.
- Linguist
@@ -321,7 +411,7 @@ Qt for Windows CE
****************************************************************************
* Plugins *
****************************************************************************
-
+- The text codecs that were previously plugins are now built into QtCore.
****************************************************************************
* Important Behavior Changes *
@@ -345,3 +435,10 @@ Qt for Windows CE
construction would not be affected by the QPointer, but now that QPointer
is implemented using QWeakPoiner, constructing the QSharedPointer will
cause an abort().
+
+
+- QMessageBox
+
+ * The static function QMessageBox::question has changed the default argument
+ for buttons. Before the default was to have an Ok button. That is changed
+ to having a yes and a no button.
diff --git a/doc/src/core/containers.qdoc b/doc/src/core/containers.qdoc
deleted file mode 100644
index ca9bcc6b47..0000000000
--- a/doc/src/core/containers.qdoc
+++ /dev/null
@@ -1,803 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** GNU Free Documentation License
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file.
-**
-** 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$
-**
-****************************************************************************/
-
-/*!
- \group tools
- \title Non-GUI Classes
- \ingroup groups
-
- \brief Collection classes such as list, queue, stack and string, along
- with other classes that can be used without needing QApplication.
-
- The non-GUI classes are general-purpose collection and string classes
- that may be used independently of the GUI classes.
-
- In particular, these classes do not depend on QApplication at all,
- and so can be used in non-GUI programs.
-
-*/
-
-/*!
- \page containers.html
- \title Container Classes
- \ingroup technology-apis
- \ingroup groups
- \ingroup qt-basic-concepts
- \keyword container class
- \keyword container classes
-
- \brief Qt's template-based container classes.
-
- \tableofcontents
-
- \section1 Introduction
-
- The Qt library provides a set of general purpose template-based
- container classes. These classes can be used to store items of a
- specified type. For example, if you need a resizable array of
- \l{QString}s, use QVector<QString>.
-
- These container classes are designed to be lighter, safer, and
- easier to use than the STL containers. If you are unfamiliar with
- the STL, or prefer to do things the "Qt way", you can use these
- classes instead of the STL classes.
-
- The container classes are \l{implicitly shared}, they are
- \l{reentrant}, and they are optimized for speed, low memory
- consumption, and minimal inline code expansion, resulting in
- smaller executables. In addition, they are \l{thread-safe}
- in situations where they are used as read-only containers
- by all threads used to access them.
-
- For traversing the items stored in a container, you can use one
- of two types of iterators: \l{Java-style iterators} and
- \l{STL-style iterators}. The Java-style iterators are easier to
- use and provide high-level functionality, whereas the STL-style
- iterators are slightly more efficient and can be used together
- with Qt's and STL's \l{generic algorithms}.
-
- Qt also offers a \l{foreach} keyword that make it very
- easy to iterate over all the items stored in a container.
-
- \section1 The Container Classes
-
- Qt provides the following sequential containers: QList,
- QLinkedList, QVector, QStack, and QQueue. For most
- applications, QList is the best type to use. Although it is
- implemented as an array-list, it provides very fast prepends and
- appends. If you really need a linked-list, use QLinkedList; if you
- want your items to occupy consecutive memory locations, use QVector.
- QStack and QQueue are convenience classes that provide LIFO and
- FIFO semantics.
-
- Qt also provides these associative containers: QMap,
- QMultiMap, QHash, QMultiHash, and QSet. The "Multi" containers
- conveniently support multiple values associated with a single
- key. The "Hash" containers provide faster lookup by using a hash
- function instead of a binary search on a sorted set.
-
- As special cases, the QCache and QContiguousCache classes provide
- efficient hash-lookup of objects in a limited cache storage.
-
- \table
- \header \o Class \o Summary
-
- \row \o \l{QList}<T>
- \o This is by far the most commonly used container class. It
- stores a list of values of a given type (T) that can be accessed
- by index. Internally, the QList is implemented using an array,
- ensuring that index-based access is very fast.
-
- Items can be added at either end of the list using
- QList::append() and QList::prepend(), or they can be inserted in
- the middle using QList::insert(). More than any other container
- class, QList is highly optimized to expand to as little code as
- possible in the executable. QStringList inherits from
- QList<QString>.
-
- \row \o \l{QLinkedList}<T>
- \o This is similar to QList, except that it uses
- iterators rather than integer indexes to access items. It also
- provides better performance than QList when inserting in the
- middle of a huge list, and it has nicer iterator semantics.
- (Iterators pointing to an item in a QLinkedList remain valid as
- long as the item exists, whereas iterators to a QList can become
- invalid after any insertion or removal.)
-
- \row \o \l{QVector}<T>
- \o This stores an array of values of a given type at adjacent
- positions in memory. Inserting at the front or in the middle of
- a vector can be quite slow, because it can lead to large numbers
- of items having to be moved by one position in memory.
-
- \row \o \l{QStack}<T>
- \o This is a convenience subclass of QVector that provides
- "last in, first out" (LIFO) semantics. It adds the following
- functions to those already present in QVector:
- \l{QStack::push()}{push()}, \l{QStack::pop()}{pop()},
- and \l{QStack::top()}{top()}.
-
- \row \o \l{QQueue}<T>
- \o This is a convenience subclass of QList that provides
- "first in, first out" (FIFO) semantics. It adds the following
- functions to those already present in QList:
- \l{QQueue::enqueue()}{enqueue()},
- \l{QQueue::dequeue()}{dequeue()}, and \l{QQueue::head()}{head()}.
-
- \row \o \l{QSet}<T>
- \o This provides a single-valued mathematical set with fast
- lookups.
-
- \row \o \l{QMap}<Key, T>
- \o This provides a dictionary (associative array) that maps keys
- of type Key to values of type T. Normally each key is associated
- with a single value. QMap stores its data in Key order; if order
- doesn't matter QHash is a faster alternative.
-
- \row \o \l{QMultiMap}<Key, T>
- \o This is a convenience subclass of QMap that provides a nice
- interface for multi-valued maps, i.e. maps where one key can be
- associated with multiple values.
-
- \row \o \l{QHash}<Key, T>
- \o This has almost the same API as QMap, but provides
- significantly faster lookups. QHash stores its data in an
- arbitrary order.
-
- \row \o \l{QMultiHash}<Key, T>
- \o This is a convenience subclass of QHash that
- provides a nice interface for multi-valued hashes.
-
- \endtable
-
- Containers can be nested. For example, it is perfectly possible
- to use a QMap<QString, QList<int> >, where the key type is
- QString and the value type QList<int>. The only pitfall is that
- you must insert a space between the closing angle brackets (>);
- otherwise the C++ compiler will misinterpret the two >'s as a
- right-shift operator (>>) and report a syntax error.
-
- The containers are defined in individual header files with the
- same name as the container (e.g., \c <QLinkedList>). For
- convenience, the containers are forward declared in \c
- <QtContainerFwd>.
-
- \keyword assignable data type
- \keyword assignable data types
-
- The values stored in the various containers can be of any
- \e{assignable data type}. To qualify, a type must provide a
- default constructor, a copy constructor, and an assignment
- operator. This covers most data types you are likely to want to
- store in a container, including basic types such as \c int and \c
- double, pointer types, and Qt data types such as QString, QDate,
- and QTime, but it doesn't cover QObject or any QObject subclass
- (QWidget, QDialog, QTimer, etc.). If you attempt to instantiate a
- QList<QWidget>, the compiler will complain that QWidget's copy
- constructor and assignment operators are disabled. If you want to
- store these kinds of objects in a container, store them as
- pointers, for example as QList<QWidget *>.
-
- Here's an example custom data type that meets the requirement of
- an assignable data type:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 0
-
- If we don't provide a copy constructor or an assignment operator,
- C++ provides a default implementation that performs a
- member-by-member copy. In the example above, that would have been
- sufficient. Also, if you don't provide any constructors, C++
- provides a default constructor that initializes its member using
- default constructors. Although it doesn't provide any
- explicit constructors or assignment operator, the following data
- type can be stored in a container:
-
- \snippet doc/src/snippets/streaming/main.cpp 0
-
- Some containers have additional requirements for the data types
- they can store. For example, the Key type of a QMap<Key, T> must
- provide \c operator<(). Such special requirements are documented
- in a class's detailed description. In some cases, specific
- functions have special requirements; these are described on a
- per-function basis. The compiler will always emit an error if a
- requirement isn't met.
-
- Qt's containers provide operator<<() and operator>>() so that they
- can easily be read and written using a QDataStream. This means
- that the data types stored in the container must also support
- operator<<() and operator>>(). Providing such support is
- straightforward; here's how we could do it for the Movie struct
- above:
-
- \snippet doc/src/snippets/streaming/main.cpp 1
- \codeline
- \snippet doc/src/snippets/streaming/main.cpp 2
-
- \keyword default-constructed values
-
- The documentation of certain container class functions refer to
- \e{default-constructed values}; for example, QVector
- automatically initializes its items with default-constructed
- values, and QMap::value() returns a default-constructed value if
- the specified key isn't in the map. For most value types, this
- simply means that a value is created using the default
- constructor (e.g. an empty string for QString). But for primitive
- types like \c{int} and \c{double}, as well as for pointer types,
- the C++ language doesn't specify any initialization; in those
- cases, Qt's containers automatically initialize the value to 0.
-
- \section1 The Iterator Classes
-
- Iterators provide a uniform means to access items in a container.
- Qt's container classes provide two types of iterators: Java-style
- iterators and STL-style iterators. Iterators of both types are
- invalidated when the data in the container is modified or detached
- from \l{Implicit Sharing}{implicitly shared copies} due to a call
- to a non-const member function.
-
- \section2 Java-Style Iterators
-
- The Java-style iterators are new in Qt 4 and are the standard
- ones used in Qt applications. They are more convenient to use than
- the STL-style iterators, at the price of being slightly less
- efficient. Their API is modelled on Java's iterator classes.
-
- For each container class, there are two Java-style iterator data
- types: one that provides read-only access and one that provides
- read-write access.
-
- \table
- \header \o Containers \o Read-only iterator
- \o Read-write iterator
- \row \o QList<T>, QQueue<T> \o QListIterator<T>
- \o QMutableListIterator<T>
- \row \o QLinkedList<T> \o QLinkedListIterator<T>
- \o QMutableLinkedListIterator<T>
- \row \o QVector<T>, QStack<T> \o QVectorIterator<T>
- \o QMutableVectorIterator<T>
- \row \o QSet<T> \o QSetIterator<T>
- \o QMutableSetIterator<T>
- \row \o QMap<Key, T>, QMultiMap<Key, T> \o QMapIterator<Key, T>
- \o QMutableMapIterator<Key, T>
- \row \o QHash<Key, T>, QMultiHash<Key, T> \o QHashIterator<Key, T>
- \o QMutableHashIterator<Key, T>
- \endtable
-
- In this discussion, we will concentrate on QList and QMap. The
- iterator types for QLinkedList, QVector, and QSet have exactly
- the same interface as QList's iterators; similarly, the iterator
- types for QHash have the same interface as QMap's iterators.
-
- Unlike STL-style iterators (covered \l{STL-style
- iterators}{below}), Java-style iterators point \e between items
- rather than directly \e at items. For this reason, they are
- either pointing to the very beginning of the container (before
- the first item), at the very end of the container (after the last
- item), or between two items. The diagram below shows the valid
- iterator positions as red arrows for a list containing four
- items:
-
- \img javaiterators1.png
-
- Here's a typical loop for iterating through all the elements of a
- QList<QString> in order and printing them to the console:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 1
-
- It works as follows: The QList to iterate over is passed to the
- QListIterator constructor. At that point, the iterator is located
- just in front of the first item in the list (before item "A").
- Then we call \l{QListIterator::hasNext()}{hasNext()} to
- check whether there is an item after the iterator. If there is, we
- call \l{QListIterator::next()}{next()} to jump over that
- item. The next() function returns the item that it jumps over. For
- a QList<QString>, that item is of type QString.
-
- Here's how to iterate backward in a QList:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 2
-
- The code is symmetric with iterating forward, except that we
- start by calling \l{QListIterator::toBack()}{toBack()}
- to move the iterator after the last item in the list.
-
- The diagram below illustrates the effect of calling
- \l{QListIterator::next()}{next()} and
- \l{QListIterator::previous()}{previous()} on an iterator:
-
- \img javaiterators2.png
-
- The following table summarizes the QListIterator API:
-
- \table
- \header \o Function \o Behavior
- \row \o \l{QListIterator::toFront()}{toFront()}
- \o Moves the iterator to the front of the list (before the first item)
- \row \o \l{QListIterator::toBack()}{toBack()}
- \o Moves the iterator to the back of the list (after the last item)
- \row \o \l{QListIterator::hasNext()}{hasNext()}
- \o Returns true if the iterator isn't at the back of the list
- \row \o \l{QListIterator::next()}{next()}
- \o Returns the next item and advances the iterator by one position
- \row \o \l{QListIterator::peekNext()}{peekNext()}
- \o Returns the next item without moving the iterator
- \row \o \l{QListIterator::hasPrevious()}{hasPrevious()}
- \o Returns true if the iterator isn't at the front of the list
- \row \o \l{QListIterator::previous()}{previous()}
- \o Returns the previous item and moves the iterator back by one position
- \row \o \l{QListIterator::peekPrevious()}{peekPrevious()}
- \o Returns the previous item without moving the iterator
- \endtable
-
- QListIterator provides no functions to insert or remove items
- from the list as we iterate. To accomplish this, you must use
- QMutableListIterator. Here's an example where we remove all
- odd numbers from a QList<int> using QMutableListIterator:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 3
-
- The next() call in the loop is made every time. It jumps over the
- next item in the list. The
- \l{QMutableListIterator::remove()}{remove()} function removes the
- last item that we jumped over from the list. The call to
- \l{QMutableListIterator::remove()}{remove()} does not invalidate
- the iterator, so it is safe to continue using it. This works just
- as well when iterating backward:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 4
-
- If we just want to modify the value of an existing item, we can
- use \l{QMutableListIterator::setValue()}{setValue()}. In the code
- below, we replace any value larger than 128 with 128:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 5
-
- Just like \l{QMutableListIterator::remove()}{remove()},
- \l{QMutableListIterator::setValue()}{setValue()} operates on the
- last item that we jumped over. If we iterate forward, this is the
- item just before the iterator; if we iterate backward, this is
- the item just after the iterator.
-
- The \l{QMutableListIterator::next()}{next()} function returns a
- non-const reference to the item in the list. For simple
- operations, we don't even need
- \l{QMutableListIterator::setValue()}{setValue()}:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 6
-
- As mentioned above, QLinkedList's, QVector's, and QSet's iterator
- classes have exactly the same API as QList's. We will now turn to
- QMapIterator, which is somewhat different because it iterates on
- (key, value) pairs.
-
- Like QListIterator, QMapIterator provides
- \l{QMapIterator::toFront()}{toFront()},
- \l{QMapIterator::toBack()}{toBack()},
- \l{QMapIterator::hasNext()}{hasNext()},
- \l{QMapIterator::next()}{next()},
- \l{QMapIterator::peekNext()}{peekNext()},
- \l{QMapIterator::hasPrevious()}{hasPrevious()},
- \l{QMapIterator::previous()}{previous()}, and
- \l{QMapIterator::peekPrevious()}{peekPrevious()}. The key and
- value components are extracted by calling key() and value() on
- the object returned by next(), peekNext(), previous(), or
- peekPrevious().
-
- The following example removes all (capital, country) pairs where
- the capital's name ends with "City":
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 7
-
- QMapIterator also provides a key() and a value() function that
- operate directly on the iterator and that return the key and
- value of the last item that the iterator jumped above. For
- example, the following code copies the contents of a QMap into a
- QHash:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 8
-
- If we want to iterate through all the items with the same
- value, we can use \l{QMapIterator::findNext()}{findNext()}
- or \l{QMapIterator::findPrevious()}{findPrevious()}.
- Here's an example where we remove all the items with a particular
- value:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 9
-
- \section2 STL-Style Iterators
-
- STL-style iterators have been available since the release of Qt
- 2.0. They are compatible with Qt's and STL's \l{generic
- algorithms} and are optimized for speed.
-
- For each container class, there are two STL-style iterator types:
- one that provides read-only access and one that provides
- read-write access. Read-only iterators should be used wherever
- possible because they are faster than read-write iterators.
-
- \table
- \header \o Containers \o Read-only iterator
- \o Read-write iterator
- \row \o QList<T>, QQueue<T> \o QList<T>::const_iterator
- \o QList<T>::iterator
- \row \o QLinkedList<T> \o QLinkedList<T>::const_iterator
- \o QLinkedList<T>::iterator
- \row \o QVector<T>, QStack<T> \o QVector<T>::const_iterator
- \o QVector<T>::iterator
- \row \o QSet<T> \o QSet<T>::const_iterator
- \o QSet<T>::iterator
- \row \o QMap<Key, T>, QMultiMap<Key, T> \o QMap<Key, T>::const_iterator
- \o QMap<Key, T>::iterator
- \row \o QHash<Key, T>, QMultiHash<Key, T> \o QHash<Key, T>::const_iterator
- \o QHash<Key, T>::iterator
- \endtable
-
- The API of the STL iterators is modelled on pointers in an array.
- For example, the \c ++ operator advances the iterator to the next
- item, and the \c * operator returns the item that the iterator
- points to. In fact, for QVector and QStack, which store their
- items at adjacent memory positions, the
- \l{QVector::iterator}{iterator} type is just a typedef for \c{T *},
- and the \l{QVector::iterator}{const_iterator} type is
- just a typedef for \c{const T *}.
-
- In this discussion, we will concentrate on QList and QMap. The
- iterator types for QLinkedList, QVector, and QSet have exactly
- the same interface as QList's iterators; similarly, the iterator
- types for QHash have the same interface as QMap's iterators.
-
- Here's a typical loop for iterating through all the elements of a
- QList<QString> in order and converting them to lowercase:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 10
-
- Unlike \l{Java-style iterators}, STL-style iterators point
- directly at items. The begin() function of a container returns an
- iterator that points to the first item in the container. The
- end() function of a container returns an iterator to the
- imaginary item one position past the last item in the container.
- end() marks an invalid position; it must never be dereferenced.
- It is typically used in a loop's break condition. If the list is
- empty, begin() equals end(), so we never execute the loop.
-
- The diagram below shows the valid iterator positions as red
- arrows for a vector containing four items:
-
- \img stliterators1.png
-
- Iterating backward with an STL-style iterator requires us to
- decrement the iterator \e before we access the item. This
- requires a \c while loop:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 11
-
- In the code snippets so far, we used the unary \c * operator to
- retrieve the item (of type QString) stored at a certain iterator
- position, and we then called QString::toLower() on it. Most C++
- compilers also allow us to write \c{i->toLower()}, but some
- don't.
-
- For read-only access, you can use const_iterator, constBegin(),
- and constEnd(). For example:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 12
-
- The following table summarizes the STL-style iterators' API:
-
- \table
- \header \o Expression \o Behavior
- \row \o \c{*i} \o Returns the current item
- \row \o \c{++i} \o Advances the iterator to the next item
- \row \o \c{i += n} \o Advances the iterator by \c n items
- \row \o \c{--i} \o Moves the iterator back by one item
- \row \o \c{i -= n} \o Moves the iterator back by \c n items
- \row \o \c{i - j} \o Returns the number of items between iterators \c i and \c j
- \endtable
-
- The \c{++} and \c{--} operators are available both as prefix
- (\c{++i}, \c{--i}) and postfix (\c{i++}, \c{i--}) operators. The
- prefix versions modify the iterators and return a reference to
- the modified iterator; the postfix versions take a copy of the
- iterator before they modify it, and return that copy. In
- expressions where the return value is ignored, we recommend that
- you use the prefix operators (\c{++i}, \c{--i}), as these are
- slightly faster.
-
- For non-const iterator types, the return value of the unary \c{*}
- operator can be used on the left side of the assignment operator.
-
- For QMap and QHash, the \c{*} operator returns the value
- component of an item. If you want to retrieve the key, call key()
- on the iterator. For symmetry, the iterator types also provide a
- value() function to retrieve the value. For example, here's how
- we would print all items in a QMap to the console:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 13
-
- Thanks to \l{implicit sharing}, it is very inexpensive for a
- function to return a container per value. The Qt API contains
- dozens of functions that return a QList or QStringList per value
- (e.g., QSplitter::sizes()). If you want to iterate over these
- using an STL iterator, you should always take a copy of the
- container and iterate over the copy. For example:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 14
-
- This problem doesn't occur with functions that return a const or
- non-const reference to a container.
-
- \l{Implicit sharing} has another consequence on STL-style
- iterators: You must not take a copy of a container while
- non-const iterators are active on that container. Java-style
- iterators don't suffer from that limitation.
-
- \keyword foreach
- \section1 The foreach Keyword
-
- If you just want to iterate over all the items in a container
- in order, you can use Qt's \c foreach keyword. The keyword is a
- Qt-specific addition to the C++ language, and is implemented
- using the preprocessor.
-
- Its syntax is: \c foreach (\e variable, \e container) \e
- statement. For example, here's how to use \c foreach to iterate
- over a QLinkedList<QString>:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 15
-
- The \c foreach code is significantly shorter than the equivalent
- code that uses iterators:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 16
-
- Unless the data type contains a comma (e.g., \c{QPair<int,
- int>}), the variable used for iteration can be defined within the
- \c foreach statement:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 17
-
- And like any other C++ loop construct, you can use braces around
- the body of a \c foreach loop, and you can use \c break to leave
- the loop:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 18
-
- With QMap and QHash, \c foreach accesses the value component of
- the (key, value) pairs. If you want to iterate over both the keys
- and the values, you can use iterators (which are fastest), or you
- can write code like this:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 19
-
- For a multi-valued map:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 20
-
- Qt automatically takes a copy of the container when it enters a
- \c foreach loop. If you modify the container as you are
- iterating, that won't affect the loop. (If you do not modify the
- container, the copy still takes place, but thanks to \l{implicit
- sharing} copying a container is very fast.)
-
- Since foreach creates a copy of the container, using a non-const
- reference for the variable does not allow you to modify the original
- container. It only affects the copy, which is probably not what you
- want.
-
- In addition to \c foreach, Qt also provides a \c forever
- pseudo-keyword for infinite loops:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 21
-
- If you're worried about namespace pollution, you can disable
- these macros by adding the following line to your \c .pro file:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 22
-
- \section1 Other Container-Like Classes
-
- Qt includes three template classes that resemble containers in
- some respects. These classes don't provide iterators and cannot
- be used with the \c foreach keyword.
-
- \list
- \o QVarLengthArray<T, Prealloc> provides a low-level
- variable-length array. It can be used instead of QVector in
- places where speed is particularly important.
-
- \o QCache<Key, T> provides a cache to store objects of a certain
- type T associated with keys of type Key.
-
- \o QContiguousCache<T> provides an efficient way of caching data
- that is typically accessed in a contiguous way.
-
- \o QPair<T1, T2> stores a pair of elements.
- \endlist
-
- Additional non-template types that compete with Qt's template
- containers are QBitArray, QByteArray, QString, and QStringList.
-
- \section1 Algorithmic Complexity
-
- Algorithmic complexity is concerned about how fast (or slow) each
- function is as the number of items in the container grow. For
- example, inserting an item in the middle of a QLinkedList is an
- extremely fast operation, irrespective of the number of items
- stored in the QLinkedList. On the other hand, inserting an item
- in the middle of a QVector is potentially very expensive if the
- QVector contains many items, since half of the items must be
- moved one position in memory.
-
- To describe algorithmic complexity, we use the following
- terminology, based on the "big Oh" notation:
-
- \keyword constant time
- \keyword logarithmic time
- \keyword linear time
- \keyword linear-logarithmic time
- \keyword quadratic time
-
- \list
- \o \bold{Constant time:} O(1). A function is said to run in constant
- time if it requires the same amount of time no matter how many
- items are present in the container. One example is
- QLinkedList::insert().
-
- \o \bold{Logarithmic time:} O(log \e n). A function that runs in
- logarithmic time is a function whose running time is
- proportional to the logarithm of the number of items in the
- container. One example is qBinaryFind().
-
- \o \bold{Linear time:} O(\e n). A function that runs in linear time
- will execute in a time directly proportional to the number of
- items stored in the container. One example is
- QVector::insert().
-
- \o \bold{Linear-logarithmic time:} O(\e{n} log \e n). A function
- that runs in linear-logarithmic time is asymptotically slower
- than a linear-time function, but faster than a quadratic-time
- function.
-
- \o \bold{Quadratic time:} O(\e{n}\unicode{178}). A quadratic-time function
- executes in a time that is proportional to the square of the
- number of items stored in the container.
- \endlist
-
- The following table summarizes the algorithmic complexity of Qt's
- sequential container classes:
-
- \table
- \header \o \o Index lookup \o Insertion \o Prepending \o Appending
- \row \o QLinkedList<T> \o O(\e n) \o O(1) \o O(1) \o O(1)
- \row \o QList<T> \o O(1) \o O(n) \o Amort. O(1) \o Amort. O(1)
- \row \o QVector<T> \o O(1) \o O(n) \o O(n) \o Amort. O(1)
- \endtable
-
- In the table, "Amort." stands for "amortized behavior". For
- example, "Amort. O(1)" means that if you call the function
- only once, you might get O(\e n) behavior, but if you call it
- multiple times (e.g., \e n times), the average behavior will be
- O(1).
-
- The following table summarizes the algorithmic complexity of Qt's
- associative containers and sets:
-
- \table
- \header \o{1,2} \o{2,1} Key lookup \o{2,1} Insertion
- \header \o Average \o Worst case \o Average \o Worst case
- \row \o QMap<Key, T> \o O(log \e n) \o O(log \e n) \o O(log \e n) \o O(log \e n)
- \row \o QMultiMap<Key, T> \o O(log \e n) \o O(log \e n) \o O(log \e n) \o O(log \e n)
- \row \o QHash<Key, T> \o Amort. O(1) \o O(\e n) \o Amort. O(1) \o O(\e n)
- \row \o QSet<Key> \o Amort. O(1) \o O(\e n) \o Amort. O(1) \o O(\e n)
- \endtable
-
- With QVector, QHash, and QSet, the performance of appending items
- is amortized O(log \e n). It can be brought down to O(1) by
- calling QVector::reserve(), QHash::reserve(), or QSet::reserve()
- with the expected number of items before you insert the items.
- The next section discusses this topic in more depth.
-
- \section1 Growth Strategies
-
- QVector<T>, QString, and QByteArray store their items
- contiguously in memory; QList<T> maintains an array of pointers
- to the items it stores to provide fast index-based access (unless
- T is a pointer type or a basic type of the size of a pointer, in
- which case the value itself is stored in the array); QHash<Key,
- T> keeps a hash table whose size is proportional to the number
- of items in the hash. To avoid reallocating the data every single
- time an item is added at the end of the container, these classes
- typically allocate more memory than necessary.
-
- Consider the following code, which builds a QString from another
- QString:
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 23
-
- We build the string \c out dynamically by appending one character
- to it at a time. Let's assume that we append 15000 characters to
- the QString string. Then the following 18 reallocations (out of a
- possible 15000) occur when QString runs out of space: 4, 8, 12,
- 16, 20, 52, 116, 244, 500, 1012, 2036, 4084, 6132, 8180, 10228,
- 12276, 14324, 16372. At the end, the QString has 16372 Unicode
- characters allocated, 15000 of which are occupied.
-
- The values above may seem a bit strange, but here are the guiding
- principles:
- \list
- \o QString allocates 4 characters at a time until it reaches size 20.
- \o From 20 to 4084, it advances by doubling the size each time.
- More precisely, it advances to the next power of two, minus
- 12. (Some memory allocators perform worst when requested exact
- powers of two, because they use a few bytes per block for
- book-keeping.)
- \o From 4084 on, it advances by blocks of 2048 characters (4096
- bytes). This makes sense because modern operating systems
- don't copy the entire data when reallocating a buffer; the
- physical memory pages are simply reordered, and only the data
- on the first and last pages actually needs to be copied.
- \endlist
-
- QByteArray and QList<T> use more or less the same algorithm as
- QString.
-
- QVector<T> also uses that algorithm for data types that can be
- moved around in memory using memcpy() (including the basic C++
- types, the pointer types, and Qt's \l{shared classes}) but uses a
- different algorithm for data types that can only be moved by
- calling the copy constructor and a destructor. Since the cost of
- reallocating is higher in that case, QVector<T> reduces the
- number of reallocations by always doubling the memory when
- running out of space.
-
- QHash<Key, T> is a totally different case. QHash's internal hash
- table grows by powers of two, and each time it grows, the items
- are relocated in a new bucket, computed as qHash(\e key) %
- QHash::capacity() (the number of buckets). This remark applies to
- QSet<T> and QCache<Key, T> as well.
-
- For most applications, the default growing algorithm provided by
- Qt does the trick. If you need more control, QVector<T>,
- QHash<Key, T>, QSet<T>, QString, and QByteArray provide a trio of
- functions that allow you to check and specify how much memory to
- use to store the items:
-
- \list
- \o \l{QString::capacity()}{capacity()} returns the
- number of items for which memory is allocated (for QHash and
- QSet, the number of buckets in the hash table).
- \o \l{QString::reserve()}{reserve}(\e size) explicitly
- preallocates memory for \e size items.
- \o \l{QString::squeeze()}{squeeze()} frees any memory
- not required to store the items.
- \endlist
-
- If you know approximately how many items you will store in a
- container, you can start by calling reserve(), and when you are
- done populating the container, you can call squeeze() to release
- the extra preallocated memory.
-*/
diff --git a/doc/src/core/implicit-sharing.qdoc b/doc/src/core/implicit-sharing.qdoc
deleted file mode 100644
index e745d127d5..0000000000
--- a/doc/src/core/implicit-sharing.qdoc
+++ /dev/null
@@ -1,138 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** GNU Free Documentation License
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file.
-**
-** 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$
-**
-****************************************************************************/
-
-/* TODO: Move some of the documentation from QSharedDataPointer into this
- document. */
-
-/*!
- \group shared
- \title Implicitly Shared Classes
-*/
-
-/*!
- \page implicit-sharing.html
- \title Implicit Sharing
- \ingroup qt-basic-concepts
-
- \brief Reference counting for fast copying.
-
- \keyword implicit data sharing
- \keyword implicit sharing
- \keyword implicitly shared
- \keyword reference counting
- \keyword shared implicitly
- \keyword shared classes
-
- Many C++ classes in Qt use implicit data sharing to maximize
- resource usage and minimize copying. Implicitly shared classes are
- both safe and efficient when passed as arguments, because only a
- pointer to the data is passed around, and the data is copied only
- if and when a function writes to it, i.e., \e {copy-on-write}.
-
- \tableofcontents
-
- \section1 Overview
-
- A shared class consists of a pointer to a shared data block that
- contains a reference count and the data.
-
- When a shared object is created, it sets the reference count to 1. The
- reference count is incremented whenever a new object references the
- shared data, and decremented when the object dereferences the shared
- data. The shared data is deleted when the reference count becomes
- zero.
-
- \keyword deep copy
- \keyword shallow copy
-
- When dealing with shared objects, there are two ways of copying an
- object. We usually speak about \e deep and \e shallow copies. A deep
- copy implies duplicating an object. A shallow copy is a reference
- copy, i.e. just a pointer to a shared data block. Making a deep copy
- can be expensive in terms of memory and CPU. Making a shallow copy is
- very fast, because it only involves setting a pointer and incrementing
- the reference count.
-
- Object assignment (with operator=()) for implicitly shared objects is
- implemented using shallow copies.
-
- The benefit of sharing is that a program does not need to duplicate
- data unnecessarily, which results in lower memory use and less copying
- of data. Objects can easily be assigned, sent as function arguments,
- and returned from functions.
-
- Implicit sharing takes place behind the scenes; the programmer
- does not need to worry about it. Even in multithreaded
- applications, implicit sharing takes place, as explained in
- \l{Thread-Support in Qt Modules#Threads and Implicitly Shared Classes}
- {Threads and Implicitly Shared Classes}.
-
- When implementing your own implicitly shared classes, use the
- QSharedData and QSharedDataPointer classes.
-
- \section1 Implicit Sharing in Detail
-
- Implicit sharing automatically detaches the object from a shared
- block if the object is about to change and the reference count is
- greater than one. (This is often called \e {copy-on-write} or
- \e {value semantics}.)
-
- An implicitly shared class has total control of its internal data. In
- any member functions that modify its data, it automatically detaches
- before modifying the data.
-
- The QPen class, which uses implicit sharing, detaches from the shared
- data in all member functions that change the internal data.
-
- Code fragment:
- \snippet doc/src/snippets/code/doc_src_groups.cpp 0
-
-
- \section1 List of Classes
-
- The classes listed below automatically detach from common data if
- an object is about to be changed. The programmer will not even
- notice that the objects are shared. Thus you should treat
- separate instances of them as separate objects. They will always
- behave as separate objects but with the added benefit of sharing
- data whenever possible. For this reason, you can pass instances
- of these classes as arguments to functions by value without
- concern for the copying overhead.
-
- Example:
- \snippet doc/src/snippets/code/doc_src_groups.cpp 1
-
- In this example, \c p1 and \c p2 share data until QPainter::begin()
- is called for \c p2, because painting a pixmap will modify it.
-
- \warning Do not copy an implicitly shared container (QMap,
- QVector, etc.) while you are iterating over it using an non-const
- \l{STL-style iterator}.
-
- \keyword implicitly shared classes
- \annotatedlist shared
-*/
diff --git a/doc/src/core/objectmodel/metaobjects.qdoc b/doc/src/core/objectmodel/metaobjects.qdoc
deleted file mode 100644
index 0a4756f899..0000000000
--- a/doc/src/core/objectmodel/metaobjects.qdoc
+++ /dev/null
@@ -1,137 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** GNU Free Documentation License
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file.
-**
-** 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$
-**
-****************************************************************************/
-
-/*!
- \page metaobjects.html
- \title The Meta-Object System
- \brief An overview of Qt's meta-object system and introspection capabilities.
-
- \ingroup qt-basic-concepts
- \keyword meta-object
- \target Meta-Object System
-
- Qt's meta-object system provides the signals and slots mechanism for
- inter-object communication, run-time type information, and the dynamic
- property system.
-
- The meta-object system is based on three things:
-
- \list 1
- \o The \l QObject class provides a base class for objects that can
- take advantage of the meta-object system.
- \o The Q_OBJECT macro inside the private section of the class
- declaration is used to enable meta-object features, such as
- dynamic properties, signals, and slots.
- \o The \l{moc}{Meta-Object Compiler} (\c moc) supplies each
- QObject subclass with the necessary code to implement
- meta-object features.
- \endlist
-
- The \c moc tool reads a C++ source file. If it finds one or more
- class declarations that contain the Q_OBJECT macro, it
- produces another C++ source file which contains the meta-object
- code for each of those classes. This generated source file is
- either \c{#include}'d into the class's source file or, more
- usually, compiled and linked with the class's implementation.
-
- In addition to providing the \l{signals and slots} mechanism for
- communication between objects (the main reason for introducing
- the system), the meta-object code provides the following
- additional features:
-
- \list
- \o QObject::metaObject() returns the associated
- \l{QMetaObject}{meta-object} for the class.
- \o QMetaObject::className() returns the class name as a
- string at run-time, without requiring native run-time type information
- (RTTI) support through the C++ compiler.
- \o QObject::inherits() function returns whether an object is an
- instance of a class that inherits a specified class within the
- QObject inheritance tree.
- \o QObject::tr() and QObject::trUtf8() translate strings for
- \l{Internationalization with Qt}{internationalization}.
- \o QObject::setProperty() and QObject::property()
- dynamically set and get properties by name.
- \o QMetaObject::newInstance() constructs a new instance of the class.
- \endlist
-
- \target qobjectcast
- It is also possible to perform dynamic casts using qobject_cast()
- on QObject classes. The qobject_cast() function behaves similarly
- to the standard C++ \c dynamic_cast(), with the advantages
- that it doesn't require RTTI support and it works across dynamic
- library boundaries. It attempts to cast its argument to the pointer
- type specified in angle-brackets, returning a non-zero pointer if the
- object is of the correct type (determined at run-time), or 0
- if the object's type is incompatible.
-
- For example, let's assume \c MyWidget inherits from QWidget and
- is declared with the Q_OBJECT macro:
-
- \snippet doc/src/snippets/qtcast/qtcast.cpp 0
-
- The \c obj variable, of type \c{QObject *}, actually refers to a
- \c MyWidget object, so we can cast it appropriately:
-
- \snippet doc/src/snippets/qtcast/qtcast.cpp 1
-
- The cast from QObject to QWidget is successful, because the
- object is actually a \c MyWidget, which is a subclass of QWidget.
- Since we know that \c obj is a \c MyWidget, we can also cast it to
- \c{MyWidget *}:
-
- \snippet doc/src/snippets/qtcast/qtcast.cpp 2
-
- The cast to \c MyWidget is successful because qobject_cast()
- makes no distinction between built-in Qt types and custom types.
-
- \snippet doc/src/snippets/qtcast/qtcast.cpp 3
- \snippet doc/src/snippets/qtcast/qtcast.cpp 4
-
- The cast to QLabel, on the other hand, fails. The pointer is then
- set to 0. This makes it possible to handle objects of different
- types differently at run-time, based on the type:
-
- \snippet doc/src/snippets/qtcast/qtcast.cpp 5
- \snippet doc/src/snippets/qtcast/qtcast.cpp 6
-
- While it is possible to use QObject as a base class without the
- Q_OBJECT macro and without meta-object code, neither signals
- and slots nor the other features described here will be available
- if the Q_OBJECT macro is not used. From the meta-object
- system's point of view, a QObject subclass without meta code is
- equivalent to its closest ancestor with meta-object code. This
- means for example, that QMetaObject::className() will not return
- the actual name of your class, but the class name of this
- ancestor.
-
- Therefore, we strongly recommend that all subclasses of QObject
- use the Q_OBJECT macro regardless of whether or not they
- actually use signals, slots, and properties.
-
- \sa QMetaObject, {Qt's Property System}, {Signals and Slots}
-*/
diff --git a/doc/src/core/objectmodel/object.qdoc b/doc/src/core/objectmodel/object.qdoc
deleted file mode 100644
index 535c4cc8f2..0000000000
--- a/doc/src/core/objectmodel/object.qdoc
+++ /dev/null
@@ -1,124 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** GNU Free Documentation License
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file.
-**
-** 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$
-**
-****************************************************************************/
-
-/*!
- \page object.html
- \title Object Model
- \ingroup qt-basic-concepts
- \brief A description of the powerful features made possible by Qt's dynamic object model.
-
- The standard C++ object model provides very efficient runtime
- support for the object paradigm. But its static nature is
- inflexibile in certain problem domains. Graphical user interface
- programming is a domain that requires both runtime efficiency and
- a high level of flexibility. Qt provides this, by combining the
- speed of C++ with the flexibility of the Qt Object Model.
-
- Qt adds these features to C++:
-
- \list
- \o a very powerful mechanism for seamless object
- communication called \l{signals and slots}
- \o queryable and designable \l{Qt's Property System}{object
- properties}
- \o powerful \l{The Event System}{events and event filters}
- \o contextual \l{i18n}{string translation for internationalization}
- \o sophisticated interval driven \l timers that make it possible
- to elegantly integrate many tasks in an event-driven GUI
- \o hierarchical and queryable \l{Object Trees & Ownership}{object
- trees} that organize object ownership in a natural way
- \o guarded pointers (QPointer) that are automatically
- set to 0 when the referenced object is destroyed, unlike normal C++
- pointers which become dangling pointers when their objects are destroyed
- \o a \l{metaobjects.html#qobjectcast}{dynamic cast} that works across
- library boundaries.
- \endlist
-
- Many of these Qt features are implemented with standard C++
- techniques, based on inheritance from QObject. Others, like the
- object communication mechanism and the dynamic property system,
- require the \l{Meta-Object System} provided
- by Qt's own \l{moc}{Meta-Object Compiler (moc)}.
-
- The meta-object system is a C++ extension that makes the language
- better suited to true component GUI programming. Although
- templates can be used to extend C++, the meta-object system
- provides benefits using standard C++ that cannot be achieved with
- templates; see \l{Why Doesn't Qt Use Templates for Signals and
- Slots?}
-
- \section1 Important Classes
-
- These classes form the basis of the Qt Object Model.
-
- \annotatedlist objectmodel
-
- \target Identity vs Value
- \section1 Qt Objects: Identity vs Value
-
- Some of the added features listed above for the Qt Object Model,
- require that we think of Qt Objects as identities, not values.
- Values are copied or assigned; identities are cloned. Cloning
- means to create a new identity, not an exact copy of the old
- one. For example, twins have different identities. They may look
- identical, but they have different names, different locations, and
- may have completely different social networks.
-
- Then cloning an identity is a more complex operation than copying
- or assigning a value. We can see what this means in the Qt Object
- Model.
-
- \bold{A Qt Object...}
-
- \list
-
- \o might have a unique \l{QObject::objectName()}. If we copy a Qt
- Object, what name should we give the copy?
-
- \o has a location in an \l{Object Trees & Ownership}
- {object hierarchy}. If we copy a Qt Object, where should the copy
- be located?
-
- \o can be connected to other Qt Objects to emit signals to them or
- to receive signals emitted by them. If we copy a Qt Object, how
- should we transfer these connections to the copy?
-
- \o can have \l{Qt's Property System} {new properties} added to it
- at runtime that are not declared in the C++ class. If we copy a Qt
- Object, should the copy include the properties that were added to
- the original?
-
- \endlist
-
- For these reasons, Qt Objects should be treated as identities, not
- as values. Identities are cloned, not copied or assigned, and
- cloning an identity is a more complex operation than copying or
- assigning a value. Therefore, QObject and all subclasses of
- QObject (direct or indirect) have their \l{No copy constructor}
- {copy constructor and assignment operator} disabled.
-
- */
diff --git a/doc/src/core/objectmodel/objecttrees.qdoc b/doc/src/core/objectmodel/objecttrees.qdoc
deleted file mode 100644
index d8f9501748..0000000000
--- a/doc/src/core/objectmodel/objecttrees.qdoc
+++ /dev/null
@@ -1,102 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** GNU Free Documentation License
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file.
-**
-** 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$
-**
-****************************************************************************/
-
-/*!
- \page objecttrees.html
- \title Object Trees & Ownership
- \ingroup qt-basic-concepts
- \brief Information about the parent-child pattern used to describe
- object ownership in Qt.
-
- \section1 Overview
-
- \link QObject QObjects\endlink organize themselves in object trees.
- When you create a QObject with another object as parent, it's added to
- the parent's \link QObject::children() children() \endlink list, and
- is deleted when the parent is. It turns out that this approach fits
- the needs of GUI objects very well. For example, a \l QShortcut
- (keyboard shortcut) is a child of the relevant window, so when the
- user closes that window, the shorcut is deleted too.
-
- \l QWidget, the base class of everything that appears on the screen,
- extends the parent-child relationship. A child normally also becomes a
- child widget, i.e. it is displayed in its parent's coordinate system
- and is graphically clipped by its parent's boundaries. For example,
- when the application deletes a message box after it has been
- closed, the message box's buttons and label are also deleted, just as
- we'd want, because the buttons and label are children of the message
- box.
-
- You can also delete child objects yourself, and they will remove
- themselves from their parents. For example, when the user removes a
- toolbar it may lead to the application deleting one of its \l QToolBar
- objects, in which case the tool bar's \l QMainWindow parent would
- detect the change and reconfigure its screen space accordingly.
-
- The debugging functions \l QObject::dumpObjectTree() and \l
- QObject::dumpObjectInfo() are often useful when an application looks or
- acts strangely.
-
- \target note on the order of construction/destruction of QObjects
- \section1 Construction/Destruction Order of QObjects
-
- When \l {QObject} {QObjects} are created on the heap (i.e., created
- with \e new), a tree can be constructed from them in any order, and
- later, the objects in the tree can be destroyed in any order. When any
- QObject in the tree is deleted, if the object has a parent, the
- destructor automatically removes the object from its parent. If the
- object has children, the destructor automatically deletes each
- child. No QObject is deleted twice, regardless of the order of
- destruction.
-
- When \l {QObject} {QObjects} are created on the stack, the same
- behavior applies. Normally, the order of destruction still doesn't
- present a problem. Consider the following snippet:
-
- \snippet doc/src/snippets/code/doc_src_objecttrees.cpp 0
-
- The parent, \c window, and the child, \c quit, are both \l {QObject}
- {QObjects} because QPushButton inherits QWidget, and QWidget inherits
- QObject. This code is correct: the destructor of \c quit is \e not
- called twice because the C++ language standard \e {(ISO/IEC 14882:2003)}
- specifies that destructors of local objects are called in the reverse
- order of their constructors. Therefore, the destructor of
- the child, \c quit, is called first, and it removes itself from its
- parent, \c window, before the destructor of \c window is called.
-
- But now consider what happens if we swap the order of construction, as
- shown in this second snippet:
-
- \snippet doc/src/snippets/code/doc_src_objecttrees.cpp 1
-
- In this case, the order of destruction causes a problem. The parent's
- destructor is called first because it was created last. It then calls
- the destructor of its child, \c quit, which is incorrect because \c
- quit is a local variable. When \c quit subsequently goes out of scope,
- its destructor is called again, this time correctly, but the damage has
- already been done.
-*/
diff --git a/doc/src/core/objectmodel/properties.qdoc b/doc/src/core/objectmodel/properties.qdoc
deleted file mode 100644
index 0350f19be4..0000000000
--- a/doc/src/core/objectmodel/properties.qdoc
+++ /dev/null
@@ -1,273 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** GNU Free Documentation License
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file.
-**
-** 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$
-**
-****************************************************************************/
-
-/*!
- \page properties.html
- \title The Property System
- \brief An overview of Qt's property system.
-
- \ingroup qt-basic-concepts
- \target Qt's Property System
-
- Qt provides a sophisticated property system similar to the ones
- supplied by some compiler vendors. However, as a compiler- and
- platform-independent library, Qt does not rely on non-standard
- compiler features like \c __property or \c [property]. The Qt
- solution works with \e any standard C++ compiler on every platform
- Qt supports. It is based on the \l {Meta-Object System} that also
- provides inter-object communication via \l{signals and slots}.
-
- \section1 Requirements for Declaring Properties
-
- To declare a property, use the \l {Q_PROPERTY()} {Q_PROPERTY()}
- macro in a class that inherits QObject.
-
- \snippet doc/src/snippets/code/doc_src_properties.cpp 0
-
- Here are some typical examples of property declarations taken from
- class QWidget.
-
- \snippet doc/src/snippets/code/doc_src_properties.cpp 1
-
- A property behaves like a class data member, but it has additional
- features accessible through the \l {Meta-Object System}.
-
- \list
-
- \o A \c READ accessor function is required. It is for reading the
- property value. Ideally, a const function is used for this purpose,
- and it must return either the property's type or a pointer or
- reference to that type. e.g., QWidget::focus is a read-only property
- with \c READ function, QWidget::hasFocus().
-
- \o A \c WRITE accessor function is optional. It is for setting the
- property value. It must return void and must take exactly one
- argument, either of the property's type or a pointer or reference
- to that type. e.g., QWidget::enabled has the \c WRITE function
- QWidget::setEnabled(). Read-only properties do not need \c WRITE
- functions. e.g., QWidget::focus has no \c WRITE function.
-
- \o A \c RESET function is optional. It is for setting the property
- back to its context specific default value. e.g., QWidget::cursor
- has the typical \c READ and \c WRITE functions, QWidget::cursor()
- and QWidget::setCursor(), and it also has a \c RESET function,
- QWidget::unsetCursor(), since no call to QWidget::setCursor() can
- mean \e {reset to the context specific cursor}. The \c RESET
- function must return void and take no parameters.
-
- \o A \c NOTIFY signal is optional. If defined, it should specify one
- existing signal in that class that is emitted whenever the value
- of the property changes.
-
- \o A \c REVISION number is optional. If included, it defines the
- the property and its notifier signal to be used in a particular
- revision of the API that is exposed to QML.
-
- \o The \c DESIGNABLE attribute indicates whether the property
- should be visible in the property editor of GUI design tool (e.g.,
- \l {Qt Designer}). Most properties are \c DESIGNABLE (default
- true). Instead of true or false, you can specify a boolean
- member function.
-
- \o The \c SCRIPTABLE attribute indicates whether this property
- should be accessible by a scripting engine (default true).
- Instead of true or false, you can specify a boolean member
- function.
-
- \o The \c STORED attribute indicates whether the property should
- be thought of as existing on its own or as depending on other
- values. It also indicates whether the property value must be saved
- when storing the object's state. Most properties are \c STORED
- (default true), but e.g., QWidget::minimumWidth() has \c STORED
- false, because its value is just taken from the width component
- of property QWidget::minimumSize(), which is a QSize.
-
- \o The \c USER attribute indicates whether the property is
- designated as the user-facing or user-editable property for the
- class. Normally, there is only one \c USER property per class
- (default false). e.g., QAbstractButton::checked is the user
- editable property for (checkable) buttons. Note that QItemDelegate
- gets and sets a widget's \c USER property.
-
- \o The presence of the \c CONSTANT attibute indicates that the property
- value is constant. For a given object instance, the READ method of a
- constant property must return the same value every time it is called. This
- constant value may be different for different instances of the object. A
- constant property cannot have a WRITE method or a NOTIFY signal.
-
- \o The presence of the \c FINAL attribute indicates that the property
- will not be overridden by a derived class. This can be used for performance
- optimizations in some cases, but is not enforced by moc. Care must be taken
- never to override a \c FINAL property.
-
- \endlist
-
- The \c READ, \c WRITE, and \c RESET functions can be inherited.
- They can also be virtual. When they are inherited in classes where
- multiple inheritance is used, they must come from the first
- inherited class.
-
- The property type can be any type supported by QVariant, or it can
- be a user-defined type. In this example, class QDate is considered
- to be a user-defined type.
-
- \snippet doc/src/snippets/code/doc_src_properties.cpp 2
-
- Because QDate is user-defined, you must include the \c{<QDate>}
- header file with the property declaration.
-
- For QMap, QList, and QValueList properties, the property value is
- a QVariant whose value is the entire list or map. Note that the
- Q_PROPERTY string cannot contain commas, because commas separate
- macro arguments. Therefore, you must use \c QMap as the property
- type instead of \c QMap<QString,QVariant>. For consistency, also
- use \c QList and \c QValueList instead of \c QList<QVariant> and
- \c QValueList<QVariant>.
-
- \section1 Reading and Writing Properties with the Meta-Object System
-
- A property can be read and written using the generic functions
- QObject::property() and QObject::setProperty(), without knowing
- anything about the owning class except the property's name. In
- the code snippet below, the call to QAbstractButton::setDown() and
- the call to QObject::setProperty() both set property "down".
-
- \snippet doc/src/snippets/code/doc_src_properties.cpp 3
-
- Accessing a property through its \c WRITE accessor is the better
- of the two, because it is faster and gives better diagnostics at
- compile time, but setting the property this way requires that you
- know about the class at compile time. Accessing properties by name
- lets you access classes you don't know about at compile time. You
- can \e discover a class's properties at run time by querying its
- QObject, QMetaObject, and \l {QMetaProperty} {QMetaProperties}.
-
- \snippet doc/src/snippets/code/doc_src_properties.cpp 4
-
- In the above snippet, QMetaObject::property() is used to get \l
- {QMetaProperty} {metadata} about each property defined in some
- unknown class. The property name is fetched from the metadata and
- passed to QObject::property() to get the \l {QVariant} {value} of
- the property in the current \l {QObject}{object}.
-
- \section1 A Simple Example
-
- Suppose we have a class MyClass, which is derived from QObject and
- which uses the Q_OBJECT macro in its private section. We want to
- declare a property in MyClass to keep track of a priorty
- value. The name of the property will be \e priority, and its type
- will be an enumeration type named \e Priority, which is defined in
- MyClass.
-
- We declare the property with the Q_PROPERTY() macro in the private
- section of the class. The required \c READ function is named \c
- priority, and we include a \c WRITE function named \c setPriority.
- The enumeration type must be registered with the \l {Meta-Object
- System} using the Q_ENUMS() macro. Registering an enumeration type
- makes the enumerator names available for use in calls to
- QObject::setProperty(). We must also provide our own declarations
- for the \c READ and \c WRITE functions. The declaration of MyClass
- then might look like this:
-
- \snippet doc/src/snippets/code/doc_src_properties.cpp 5
-
- The \c READ function is const and returns the property type. The
- \c WRITE function returns void and has exactly one parameter of
- the property type. The meta-object compiler enforces these
- requirements.
-
- Given a pointer to an instance of MyClass or a pointer to a
- QObject that is an instance of MyClass, we have two ways to set
- its priority property:
-
- \snippet doc/src/snippets/code/doc_src_properties.cpp 6
-
- In the example, the enumeration type that is the property type is
- declared in MyClass and registered with the \l{Meta-Object System}
- using the Q_ENUMS() macro. This makes the enumeration values
- available as strings for use as in the call to setProperty(). Had
- the enumeration type been declared in another class, its fully
- qualified name (i.e., OtherClass::Priority) would be required, and
- that other class would also have to inherit QObject and register
- the enumeration type there using the Q_ENUMS() macro.
-
- A similar macro, Q_FLAGS(), is also available. Like Q_ENUMS(), it
- registers an enumeration type, but it marks the type as being a
- set of \e flags, i.e. values that can be OR'd together. An I/O
- class might have enumeration values \c Read and \c Write and then
- QObject::setProperty() could accept \c{Read | Write}. Q_FLAGS()
- should be used to register this enumeration type.
-
- \section1 Dynamic Properties
-
- QObject::setProperty() can also be used to add \e new properties
- to an instance of a class at runtime. When it is called with a
- name and a value, if a property with the given name exists in the
- QObject, and if the given value is compatible with the property's
- type, the value is stored in the property, and true is returned.
- If the value is \e not compatible with the property's type, the
- property is \e not changed, and false is returned. But if the
- property with the given name doesn't exist in the QObject (i.e.,
- if it wasn't declared with Q_PROPERTY(), a new property with the
- given name and value is automatically added to the QObject, but
- false is still returned. This means that a return of false can't
- be used to determine whether a particular property was actually
- set, unless you know in advance that the property already exists
- in the QObject.
-
- Note that \e dynamic properties are added on a per instance basis,
- i.e., they are added to QObject, not QMetaObject. A property can
- be removed from an instance by passing the property name and an
- invalid QVariant value to QObject::setProperty(). The default
- constructor for QVariant constructs an invalid QVariant.
-
- Dynamic properties can be queried with QObject::property(), just
- like properties declared at compile time with Q_PROPERTY().
-
- \sa {Meta-Object System}, {Signals and Slots}
-
- \section1 Properties and Custom Types
-
- Custom types used by properties need to be registered using the
- Q_DECLARE_METATYPE() macro so that their values can be stored in
- QVariant objects. This makes them suitable for use with both
- static properties declared using the Q_PROPERTY() macro in class
- definitions and dynamic properties created at run-time.
-
- \sa Q_DECLARE_METATYPE(), QMetaType, QVariant
-
- \section1 Adding Additional Information to a Class
-
- Connected to the property system is an additional macro,
- Q_CLASSINFO(), that can be used to attach additional
- \e{name}--\e{value} pairs to a class's meta-object, for example:
-
- \snippet doc/src/snippets/code/doc_src_properties.cpp 7
-
- Like other meta-data, class information is accessible at run-time
- through the meta-object; see QMetaObject::classInfo() for details.
-*/
diff --git a/doc/src/core/objectmodel/signalsandslots.qdoc b/doc/src/core/objectmodel/signalsandslots.qdoc
deleted file mode 100644
index f976e74c7d..0000000000
--- a/doc/src/core/objectmodel/signalsandslots.qdoc
+++ /dev/null
@@ -1,468 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** GNU Free Documentation License
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file.
-**
-** 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$
-**
-****************************************************************************/
-
-/*!
- \page signalsandslots.html
- \title Signals & Slots
- \ingroup qt-basic-concepts
- \brief An overview of Qt's signals and slots inter-object
- communication mechanism.
-
- Signals and slots are used for communication between objects. The
- signals and slots mechanism is a central feature of Qt and
- probably the part that differs most from the features provided by
- other frameworks.
-
- \tableofcontents
-
- \section1 Introduction
-
- In GUI programming, when we change one widget, we often want
- another widget to be notified. More generally, we want objects of
- any kind to be able to communicate with one another. For example,
- if a user clicks a \gui{Close} button, we probably want the
- window's \l{QWidget::close()}{close()} function to be called.
-
- Older toolkits achieve this kind of communication using
- callbacks. A callback is a pointer to a function, so if you want
- a processing function to notify you about some event you pass a
- pointer to another function (the callback) to the processing
- function. The processing function then calls the callback when
- appropriate. Callbacks have two fundamental flaws: Firstly, they
- are not type-safe. We can never be certain that the processing
- function will call the callback with the correct arguments.
- Secondly, the callback is strongly coupled to the processing
- function since the processing function must know which callback
- to call.
-
- \section1 Signals and Slots
-
- In Qt, we have an alternative to the callback technique: We use
- signals and slots. A signal is emitted when a particular event
- occurs. Qt's widgets have many predefined signals, but we can
- always subclass widgets to add our own signals to them. A slot
- is a function that is called in response to a particular signal.
- Qt's widgets have many pre-defined slots, but it is common
- practice to subclass widgets and add your own slots so that you
- can handle the signals that you are interested in.
-
- \img abstract-connections.png
- \omit
- \caption An abstract view of some signals and slots connections
- \endomit
-
- The signals and slots mechanism is type safe: The signature of a
- signal must match the signature of the receiving slot. (In fact a
- slot may have a shorter signature than the signal it receives
- because it can ignore extra arguments.) Since the signatures are
- compatible, the compiler can help us detect type mismatches.
- Signals and slots are loosely coupled: A class which emits a
- signal neither knows nor cares which slots receive the signal.
- Qt's signals and slots mechanism ensures that if you connect a
- signal to a slot, the slot will be called with the signal's
- parameters at the right time. Signals and slots can take any
- number of arguments of any type. They are completely type safe.
-
- All classes that inherit from QObject or one of its subclasses
- (e.g., QWidget) can contain signals and slots. Signals are emitted by
- objects when they change their state in a way that may be interesting
- to other objects. This is all the object does to communicate. It
- does not know or care whether anything is receiving the signals it
- emits. This is true information encapsulation, and ensures that the
- object can be used as a software component.
-
- Slots can be used for receiving signals, but they are also normal
- member functions. Just as an object does not know if anything receives
- its signals, a slot does not know if it has any signals connected to
- it. This ensures that truly independent components can be created with
- Qt.
-
- You can connect as many signals as you want to a single slot, and a
- signal can be connected to as many slots as you need. It is even
- possible to connect a signal directly to another signal. (This will
- emit the second signal immediately whenever the first is emitted.)
-
- Together, signals and slots make up a powerful component programming
- mechanism.
-
- \section1 A Small Example
-
- A minimal C++ class declaration might read:
-
- \snippet doc/src/snippets/signalsandslots/signalsandslots.h 0
-
- A small QObject-based class might read:
-
- \snippet doc/src/snippets/signalsandslots/signalsandslots.h 1
- \codeline
- \snippet doc/src/snippets/signalsandslots/signalsandslots.h 2
- \snippet doc/src/snippets/signalsandslots/signalsandslots.h 3
-
- The QObject-based version has the same internal state, and provides
- public methods to access the state, but in addition it has support
- for component programming using signals and slots. This class can
- tell the outside world that its state has changed by emitting a
- signal, \c{valueChanged()}, and it has a slot which other objects
- can send signals to.
-
- All classes that contain signals or slots must mention
- Q_OBJECT at the top of their declaration. They must also derive
- (directly or indirectly) from QObject.
-
- Slots are implemented by the application programmer.
- Here is a possible implementation of the \c{Counter::setValue()}
- slot:
-
- \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 0
-
- The \c{emit} line emits the signal \c valueChanged() from the
- object, with the new value as argument.
-
- In the following code snippet, we create two \c Counter objects
- and connect the first object's \c valueChanged() signal to the
- second object's \c setValue() slot using QObject::connect():
-
- \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 1
- \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 2
- \codeline
- \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 3
- \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 4
-
- Calling \c{a.setValue(12)} makes \c{a} emit a
- \c{valueChanged(12)} signal, which \c{b} will receive in its
- \c{setValue()} slot, i.e. \c{b.setValue(12)} is called. Then
- \c{b} emits the same \c{valueChanged()} signal, but since no slot
- has been connected to \c{b}'s \c{valueChanged()} signal, the
- signal is ignored.
-
- Note that the \c{setValue()} function sets the value and emits
- the signal only if \c{value != m_value}. This prevents infinite
- looping in the case of cyclic connections (e.g., if
- \c{b.valueChanged()} were connected to \c{a.setValue()}).
-
- By default, for every connection you make, a signal is emitted;
- two signals are emitted for duplicate connections. You can break
- all of these connections with a single disconnect() call.
- If you pass the Qt::UniqueConnection \a type, the connection will only
- be made if it is not a duplicate. If there is already a duplicate
- (exact same signal to the exact same slot on the same objects),
- the connection will fail and connect will return false
-
- This example illustrates that objects can work together without needing to
- know any information about each other. To enable this, the objects only
- need to be connected together, and this can be achieved with some simple
- QObject::connect() function calls, or with \c{uic}'s
- \l{Using a Designer UI File in Your Application#Automatic Connections}
- {automatic connections} feature.
-
- \section1 Building the Example
-
- The C++ preprocessor changes or removes the \c{signals},
- \c{slots}, and \c{emit} keywords so that the compiler is
- presented with standard C++.
-
- By running the \l moc on class definitions that contain signals
- or slots, a C++ source file is produced which should be compiled
- and linked with the other object files for the application. If
- you use \l qmake, the makefile rules to automatically invoke \c
- moc will be added to your project's makefile.
-
- \section1 Signals
-
- Signals are emitted by an object when its internal state has changed
- in some way that might be interesting to the object's client or owner.
- Signals are public access functions and can be emitted from anywhere,
- but we recommend to only emit them from the class that defines the
- signal and its subclasses.
-
- When a signal is emitted, the slots connected to it are usually
- executed immediately, just like a normal function call. When this
- happens, the signals and slots mechanism is totally independent of
- any GUI event loop. Execution of the code following the \c emit
- statement will occur once all slots have returned. The situation is
- slightly different when using \l{Qt::ConnectionType}{queued
- connections}; in such a case, the code following the \c emit keyword
- will continue immediately, and the slots will be executed later.
-
- If several slots are connected to one signal, the slots will be
- executed one after the other, in the order they have been connected,
- when the signal is emitted.
-
- Signals are automatically generated by the \l moc and must not be
- implemented in the \c .cpp file. They can never have return types
- (i.e. use \c void).
-
- A note about arguments: Our experience shows that signals and slots
- are more reusable if they do not use special types. If
- QScrollBar::valueChanged() were to use a special type such as the
- hypothetical QScrollBar::Range, it could only be connected to
- slots designed specifically for QScrollBar. Connecting different
- input widgets together would be impossible.
-
- \section1 Slots
-
- A slot is called when a signal connected to it is emitted. Slots are
- normal C++ functions and can be called normally; their only special
- feature is that signals can be connected to them.
-
- Since slots are normal member functions, they follow the normal C++
- rules when called directly. However, as slots, they can be invoked
- by any component, regardless of its access level, via a signal-slot
- connection. This means that a signal emitted from an instance of an
- arbitrary class can cause a private slot to be invoked in an instance
- of an unrelated class.
-
- You can also define slots to be virtual, which we have found quite
- useful in practice.
-
- Compared to callbacks, signals and slots are slightly slower
- because of the increased flexibility they provide, although the
- difference for real applications is insignificant. In general,
- emitting a signal that is connected to some slots, is
- approximately ten times slower than calling the receivers
- directly, with non-virtual function calls. This is the overhead
- required to locate the connection object, to safely iterate over
- all connections (i.e. checking that subsequent receivers have not
- been destroyed during the emission), and to marshall any
- parameters in a generic fashion. While ten non-virtual function
- calls may sound like a lot, it's much less overhead than any \c
- new or \c delete operation, for example. As soon as you perform a
- string, vector or list operation that behind the scene requires
- \c new or \c delete, the signals and slots overhead is only
- responsible for a very small proportion of the complete function
- call costs. The same is true whenever you do a system call in a slot;
- or indirectly call more than ten functions.
- The simplicity and flexibility of the signals and slots mechanism is
- well worth the overhead, which your users won't even notice.
-
- Note that other libraries that define variables called \c signals
- or \c slots may cause compiler warnings and errors when compiled
- alongside a Qt-based application. To solve this problem, \c
- #undef the offending preprocessor symbol.
-
- \section1 Meta-Object Information
-
- The meta-object compiler (\l moc) parses the class declaration in
- a C++ file and generates C++ code that initializes the
- meta-object. The meta-object contains the names of all the signal
- and slot members, as well as pointers to these functions.
-
- The meta-object contains additional information such as the
- object's \link QObject::className() class name\endlink. You can
- also check if an object \link QObject::inherits()
- inherits\endlink a specific class, for example:
-
- \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 5
- \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 6
-
- The meta-object information is also used by qobject_cast<T>(), which
- is similar to QObject::inherits() but is less error-prone:
-
- \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 7
-
- See \l{Meta-Object System} for more information.
-
- \section1 A Real Example
-
- Here is a simple commented example of a widget.
-
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 0
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 1
- \codeline
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 2
- \codeline
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 3
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 4
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 5
-
- \c LcdNumber inherits QObject, which has most of the signal-slot
- knowledge, via QFrame and QWidget. It is somewhat similar to the
- built-in QLCDNumber widget.
-
- The Q_OBJECT macro is expanded by the preprocessor to declare
- several member functions that are implemented by the \c{moc}; if
- you get compiler errors along the lines of "undefined reference
- to vtable for \c{LcdNumber}", you have probably forgotten to
- \l{moc}{run the moc} or to include the moc output in the link
- command.
-
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 6
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 7
-
- It's not obviously relevant to the moc, but if you inherit
- QWidget you almost certainly want to have the \c parent argument
- in your constructor and pass it to the base class's constructor.
-
- Some destructors and member functions are omitted here; the \c
- moc ignores member functions.
-
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 8
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 9
-
- \c LcdNumber emits a signal when it is asked to show an impossible
- value.
-
- If you don't care about overflow, or you know that overflow
- cannot occur, you can ignore the \c overflow() signal, i.e. don't
- connect it to any slot.
-
- If on the other hand you want to call two different error
- functions when the number overflows, simply connect the signal to
- two different slots. Qt will call both (in the order they were connected).
-
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 10
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 11
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 12
- \codeline
- \snippet doc/src/snippets/signalsandslots/lcdnumber.h 13
-
- A slot is a receiving function used to get information about
- state changes in other widgets. \c LcdNumber uses it, as the code
- above indicates, to set the displayed number. Since \c{display()}
- is part of the class's interface with the rest of the program,
- the slot is public.
-
- Several of the example programs connect the
- \l{QScrollBar::valueChanged()}{valueChanged()} signal of a
- QScrollBar to the \c display() slot, so the LCD number
- continuously shows the value of the scroll bar.
-
- Note that \c display() is overloaded; Qt will select the
- appropriate version when you connect a signal to the slot. With
- callbacks, you'd have to find five different names and keep track
- of the types yourself.
-
- Some irrelevant member functions have been omitted from this
- example.
-
- \section1 Signals And Slots With Default Arguments
-
- The signatures of signals and slots may contain arguments, and the
- arguments can have default values. Consider QObject::destroyed():
-
- \code
- void destroyed(QObject* = 0);
- \endcode
-
- When a QObject is deleted, it emits this QObject::destroyed()
- signal. We want to catch this signal, wherever we might have a
- dangling reference to the deleted QObject, so we can clean it up.
- A suitable slot signature might be:
-
- \code
- void objectDestroyed(QObject* obj = 0);
- \endcode
-
- To connect the signal to the slot, we use QObject::connect().
- There are several ways to connect signal and slots. The first is to use
- function pointers:
- \code
- connect(sender, &QObject::destroyed, this, &MyObject::objectDestroyed);
- \endcode
-
- There are several advantages to using connect() with function pointers.
- First, it allows the compiler to check that the signal's arguments are
- compatible with the slot's arguments. Arguments can also be implicitly
- converted by the compiler, if needed.
-
- You can also connect to functors or C++11 lamdas:
-
- \code
- connect(sender, &QObject::destroyed, [=](){ this->m_objects.remove(sender); });
- \endcode
-
- Note that if your compiler does not support C++11 variadic templates,
- this syntax only works if the signal and slot have 6 arguments or less.
-
- The other way to connect a signal to a slot is to use QObject::connect()
- and the \c{SIGNAL} and \c{SLOT} macros.
- The rule about whether to
- include arguments or not in the \c{SIGNAL()} and \c{SLOT()}
- macros, if the arguments have default values, is that the
- signature passed to the \c{SIGNAL()} macro must \e not have fewer
- arguments than the signature passed to the \c{SLOT()} macro.
-
- All of these would work:
- \code
- connect(sender, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed(Qbject*)));
- connect(sender, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed()));
- connect(sender, SIGNAL(destroyed()), this, SLOT(objectDestroyed()));
- \endcode
- But this one won't work:
- \code
- connect(sender, SIGNAL(destroyed()), this, SLOT(objectDestroyed(QObject*)));
- \endcode
-
- ...because the slot will be expecting a QObject that the signal
- will not send. This connection will report a runtime error.
-
- Note that signal and slot arguments are not checked by the compiler when
- using this QObject::connect() overload.
-
- \section1 Advanced Signals and Slots Usage
-
- For cases where you may require information on the sender of the
- signal, Qt provides the QObject::sender() function, which returns
- a pointer to the object that sent the signal.
-
- The QSignalMapper class is provided for situations where many
- signals are connected to the same slot and the slot needs to
- handle each signal differently.
-
- Suppose you have three push buttons that determine which file you
- will open: "Tax File", "Accounts File", or "Report File".
-
- In order to open the correct file, you use QSignalMapper::setMapping() to
- map all the clicked() signals to a QSignalMapper object. Then you connect
- the file's QPushButton::clicked() signal to the QSignalMapper::map() slot.
-
- \snippet doc/src/snippets/signalmapper/filereader.cpp 0
-
- Then, you connect the \l{QSignalMapper::}{mapped()} signal to
- \c{readFile()} where a different file will be opened, depending on
- which push button is pressed.
-
- \snippet doc/src/snippets/signalmapper/filereader.cpp 1
-
- \sa {Meta-Object System}, {Qt's Property System}
-
- \target 3rd Party Signals and Slots
- \section2 Using Qt with 3rd Party Signals and Slots
-
- It is possible to use Qt with a 3rd party signal/slot mechanism.
- You can even use both mechanisms in the same project. Just add the
- following line to your qmake project (.pro) file.
-
- \snippet doc/src/snippets/code/doc_src_containers.cpp 22
-
- It tells Qt not to define the moc keywords \c{signals}, \c{slots},
- and \c{emit}, because these names will be used by a 3rd party
- library, e.g. Boost. Then to continue using Qt signals and slots
- with the \c{no_keywords} flag, simply replace all uses of the Qt
- moc keywords in your sources with the corresponding Qt macros
- Q_SIGNALS (or Q_SIGNAL), Q_SLOTS (or Q_SLOT), and Q_EMIT.
-*/
diff --git a/doc/src/core/qtcore.qdoc b/doc/src/core/qtcore.qdoc
deleted file mode 100644
index 0d1654c9f0..0000000000
--- a/doc/src/core/qtcore.qdoc
+++ /dev/null
@@ -1,42 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** GNU Free Documentation License
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file.
-**
-** 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$
-**
-****************************************************************************/
-
-/*!
- \module QtCore
- \title QtCore Module
- \ingroup modules
-
- \keyword QtCore
-
- \brief The QtCore module contains core non-GUI functionality.
-
- All other Qt modules rely on this module. To include the
- definitions of the module's classes, use the following directive:
-
- \snippet doc/src/snippets/code/doc_src_qtcore.cpp 0
-*/
-
diff --git a/doc/src/core/threads-basics.qdoc b/doc/src/core/threads-basics.qdoc
deleted file mode 100644
index 547c7fc50c..0000000000
--- a/doc/src/core/threads-basics.qdoc
+++ /dev/null
@@ -1,572 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** GNU Free Documentation License
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file.
-**
-** 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$
-**
-****************************************************************************/
-
-/*!
- \page thread-basics.html
- \ingroup tutorials
- \startpage {index.html}{Qt Reference Documentation}
-
- \title Threading Basics
- \brief An introduction to threads
-
- \section1 What Are Threads?
-
- Threads are about doing things in parallel, just like processes. So how do
- threads differ from processes? While you are making calculations on a
- spreadsheet, there may also be a media player running on the same desktop
- playing your favorite song. Here is an example of two processes working in
- parallel: one running the spreadsheet program; one running a media player.
- Multitasking is a well known term for this. A closer look at the media
- player reveals that there are again things going on in parallel within one
- single process. While the media player is sending music to the audio driver,
- the user interface with all its bells and whistles is being constantly
- updated. This is what threads are for \mdash concurrency within one single
- process.
-
- So how is concurrency implemented? Parallel work on single core CPUs is an
- illusion which is somewhat similar to the illusion of moving images in
- cinema.
- For processes, the illusion is produced by interrupting the processor's
- work on one process after a very short time. Then the processor moves on to
- the next process. In order to switch between processes, the current program
- counter is saved and the next processor's program counter is loaded. This
- is not sufficient because the same needs to be done with registers and
- certain architecture and OS specific data.
-
- Just as one CPU can power two or more processes, it is also possible to let
- the CPU run on two different code segments of one single process. When a
- process starts, it always executes one code segment and therefore the
- process is said to have one thread. However, the program may decide to
- start a second thread. Then, two different code sequences are processed
- simultaneously inside one process. Concurrency is achieved on single core
- CPUs by repeatedly saving program counters and registers then loading the
- next thread's program counters and registers. No cooperation from the
- program is required to cycle between the active threads. A thread may be in
- any state when the switch to the next thread occurs.
-
- The current trend in CPU design is to have several cores. A typical
- single-threaded application can make use of only one core. However, a
- program with multiple threads can be assigned to multiple cores, making
- things happen in a truly concurrent way. As a result, distributing work
- to more than one thread can make a program run much faster on multicore
- CPUs because additional cores can be used.
-
- \section2 GUI Thread and Worker Thread
-
- As mentioned, each program has one thread when it is started. This thread
- is called the "main thread" (also known as the "GUI thread" in Qt
- applications). The Qt GUI must run in this thread. All widgets and several
- related classes, for example QPixmap, don't work in secondary threads.
- A secondary thread is commonly referred to as a "worker thread" because it
- is used to offload processing work from the main thread.
-
- \section2 Simultaneous Access to Data
-
- Each thread has its own stack, which means each thread has its own call
- history and local variables. Unlike processes, threads share the same
- address space. The following diagram shows how the building blocks of
- threads are located in memory. Program counter and registers of inactive
- threads are typically kept in kernel space. There is a shared copy of the
- code and a separate stack for each thread.
-
- \image threadvisual-example.png "Thread visualization"
-
- If two threads have a pointer to the same object, it is possible that both
- threads will access that object at the same time and this can potentially
- destroy the object's integrity. It's easy to imagine the many things that
- can go wrong when two methods of the same object are executed
- simultaneously.
-
- Sometimes it is necessary to access one object from different threads;
- for example, when objects living in different threads need to communicate.
- Since threads use the same address space, it is easier and faster for
- threads to exchange data than it is for processes. Data does not have to be
- serialized and copied. Passing pointers is possible, but there must be a
- strict coordination of what thread touches which object. Simultaneous
- execution of operations on one object must be prevented. There are several
- ways of achieving this and some of them are described below.
-
- So what can be done safely? All objects created in a thread can be used
- safely within that thread provided that other threads don't have references
- to them and objects don't have implicit coupling with other threads. Such
- implicit coupling may happen when data is shared between instances as with
- static members, singletons or global data. Familiarize yourself with the
- concept of \l{Reentrancy and Thread-Safety}{thread safe and reentrant}
- classes and functions.
-
- \section1 Using Threads
-
- There are basically two use cases for threads:
-
- \list
- \o Make processing faster by making use of multicore processors.
- \o Keep the GUI thread or other time critical threads responsive by
- offloading long lasting processing or blocking calls to other threads.
- \endlist
-
- \section2 When to Use Alternatives to Threads
-
- Developers need to be very careful with threads. It is easy to start other
- threads, but very hard to ensure that all shared data remains consistent.
- Problems are often hard to find because they may only show up once in a
- while or only on specific hardware configurations. Before creating threads
- to solve certain problems, possible alternatives should be considered.
-
- \table
- \header
- \o Alternative
- \o Comment
- \row
- \o QEventLoop::processEvents()
- \o Calling QEventLoop::processEvents() repeatedly during a
- time-consuming calculation prevents GUI blocking. However, this
- solution doesn't scale well because the call to processEvents() may
- occur too often, or not often enough, depending on hardware.
- \row
- \o QTimer
- \o Background processing can sometimes be done conveniently using a
- timer to schedule execution of a slot at some point in the future.
- A timer with an interval of 0 will time out as soon as there are no
- more events to process.
- \row
- \o QSocketNotifier QNetworkAccessManager QIODevice::readyRead()
- \o This is an alternative to having one or multiple threads, each with
- a blocking read on a slow network connection. As long as the
- calculation in response to a chunk of network data can be executed
- quickly, this reactive design is better than synchronous waiting in
- threads. Reactive design is less error prone and energy efficient
- than threading. In many cases there are also performance benefits.
- \endtable
-
- In general, it is recommended to only use safe and tested paths and to
- avoid introducing ad-hoc threading concepts. QtConcurrent provides an easy
- interface for distributing work to all of the processor's cores. The
- threading code is completely hidden in the QtConcurrent framework, so you
- don't have to take care of the details. However, QtConcurrent can't be used
- when communication with the running thread is needed, and it shouldn't be
- used to handle blocking operations.
-
- \section2 Which Qt Thread Technology Should You Use?
-
- Sometimes you want to do more than just running a method in the context of
- another thread. You may want to have an object which lives in another
- thread that provides a service to the GUI thread. Maybe you want another
- thread to stay alive forever to poll hardware ports and send a signal to
- the GUI thread when something noteworthy has happened. Qt provides
- different solutions for developing threaded applications. The right
- solution depends on the purpose of the new thread as well as on the
- thread's lifetime.
-
- \table
- \header
- \o Lifetime of thread
- \o Development task
- \o Solution
- \row
- \o One call
- \o Run one method within another thread and quit the thread when the
- method is finished.
- \o Qt provides different solutions:
- \list
- \o Write a function and run it with QtConcurrent::run()
- \o Derive a class from QRunnable and run it in the global thread
- pool with QThreadPool::globalInstance()->start()
- \o Derive a class from QThread, reimplement the QThread::run()
- method and use QThread::start() to run it.
- \endlist
-
- \row
- \o One call
- \o Operations are to be performed on all items of a container.
- Processing should be performed using all available cores. A common
- example is to produce thumbnails from a list of images.
- \o QtConcurrent provides the \l{QtConcurrent::}{map()} function for
- applying operations on every container element,
- \l{QtConcurrent::}{filter()} for selecting container elements, and
- the option of specifying a reduce function for combining the
- remaining elements.
- \row
- \o One call
- \o A long running operation has to be put in another thread. During the
- course of processing, status information should be sent to the GUI
- thread.
- \o Use QThread, reimplement run and emit signals as needed. Connect the
- signals to the GUI thread's slots using queued signal/slot
- connections.
-
- \row
- \o Permanent
- \o Have an object living in another thread and let it perform different
- tasks upon request.
- This means communication to and from the worker thread is required.
- \o Derive a class from QObject and implement the necessary slots and
- signals, move the object to a thread with a running event loop and
- communicate with the object over queued signal/slot connections.
- \row
- \o Permanent
- \o Have an object living in another thread, let the object perform
- repeated tasks such as polling a port and enable communication with
- the GUI thread.
- \o Same as above but also use a timer in the worker thread to implement
- polling. However, the best solution for polling is to avoid it
- completely. Sometimes using QSocketNotifier is an alternative.
- \endtable
-
-
- \section1 Qt Thread Basics
-
- QThread is a very convenient cross platform abstraction of native platform
- threads. Starting a thread is very simple. Let us look at a short piece of
- code that generates another thread which says hello in that thread and then
- exits.
-
- \snippet examples/tutorials/threads/hellothread/hellothread.h 1
-
- We derive a class from QThread and reimplement the \l{QThread::}{run()}
- method.
-
- \snippet examples/tutorials/threads/hellothread/hellothread.cpp 1
-
- The run method contains the code that will be run in a separate thread. In
- this example, a message containing the thread ID will be printed.
- QThread::start() will call the method in another thread.
-
- \snippet examples/tutorials/threads/hellothread/main.cpp 1
-
- To start the thread, our thread object needs to be instantiated. The
- \l{QThread::}{start()} method creates a new thread and calls the
- reimplemented \l{QThread::}{run()} method in this new thread. Right after
- \l{QThread::}{start()} is called, two program counters walk through the
- program code. The main function starts with only the GUI thread running and
- it should terminate with only the GUI thread running. Exiting the program
- when another thread is still busy is a programming error, and therefore,
- wait is called which blocks the calling thread until the
- \l{QThread::}{run()} method has completed.
-
- This is the result of running the code:
-
- \badcode
- hello from GUI thread 3079423696
- hello from worker thread 3076111216
- \endcode
-
-
- \section2 QObject and Threads
-
- A QObject is said to have a \e{thread affinity} or, in other words, that it
- lives in a certain thread. This means that, at creation time, QObject saves
- a pointer to the current thread. This information becomes relevant when an
- event is posted with \l{QCoreApplication::}{postEvent()}. The event will be
- put in the corresponding thread's event loop. If the thread where the
- QObject lives doesn't have an event loop, the event will never be delivered.
-
- To start an event loop, \l{QThread::}{exec()} must be called inside
- \l{QThread::}{run()}. Thread affinity can be changed using
- \l{QObject::}{moveToThread()}.
-
- As mentioned above, developers must always be careful when calling objects'
- methods from other threads. Thread affinity does not change this situation.
- Qt documentation marks several methods as thread-safe.
- \l{QCoreApplication::}{postEvent()} is a noteworthy example. A thread-safe
- method may be called from different threads simultaneously.
-
- In cases where there is usually no concurrent access to methods, calling
- non-thread-safe methods of objects in other threads may work thousands
- of times before a concurrent access occurs, causing unexpected behavior.
- Writing test code does not entirely ensure thread correctness, but it is
- still important.
- On Linux, Valgrind and Helgrind can help detect threading errors.
-
- The anatomy of QThread is quite interesting:
-
- \list
- \o QThread does not live in the new thread where \l{QThread::}{run()} is
- executed. It lives in the old thread.
- \o Most QThread methods are the thread's control interface and are meant to
- be called from the old thread. Do not move this interface to the newly
- created thread using \l{QObject::}{moveToThread()}; i.e., calling
- \l{QObject::moveToThread()}{moveToThread(this)} is regarded as bad
- practice.
- \o \l{QThread::}{exec()} and the static methods
- \l{QThread::}{usleep()}, \l{QThread::}{msleep()},
- \l{QThread::}{sleep()} are meant to be called from the newly created
- thread.
- \o Additional members defined in the QThread subclass are
- accessible by both threads. The developer is responsible for
- coordinating access. A typical strategy is to set the members before
- \l{QThread::}{start()} is called. Once the worker thread is running,
- the main thread should not touch the additional members anymore. After
- the worker has terminated, the main thread can access the additional
- members again. This is a convenient strategy for passing parameters to a
- thread before it is started as well as for collecting the result once it
- has terminated.
- \endlist
-
- A QObject's parent must always be in the same thread. This has a surprising
- consequence for objects generated within the \l{QThread::}{run()} method:
-
- \code
- void HelloThread::run()
- {
- QObject *object1 = new QObject(this); //error, parent must be in the same thread
- QObject object2; // OK
- QSharedPointer <QObject> object3(new QObject); // OK
- }
- \endcode
-
- \section2 Using a Mutex to Protect the Integrity of Data
-
- A mutex is an object that has \l{QMutex::}{lock()} and \l{QMutex::}{unlock()}
- methods and remembers if it is already locked. A mutex is designed to be
- called from multiple threads. \l{QMutex::}{lock()} returns immediately if
- the mutex is not locked. The next call from another thread will find the
- mutex in a locked state and then \l{QMutex::}{lock()} will block the thread
- until the other thread calls \l{QMutex::}{unlock()}. This functionality can
- make sure that a code section will be executed by only one thread at a time.
-
- The following line sketches how a mutex can be used to make a method
- thread-safe:
-
- \code
- void Worker::work()
- {
- this->mutex.lock(); // first thread can pass, other threads will be blocked here
- doWork();
- this->mutex.unlock();
- }
- \endcode
-
- What happens if one thread does not unlock a mutex? The result can be a
- frozen application. In the example above, an exception might be thrown and
- \c{mutex.unlock()} will never be reached. To prevent problems like this,
- QMutexLocker should be used.
-
- \code
- void Worker::work()
- {
- QMutexLocker locker(&mutex); // Locks the mutex and unlocks when locker exits the scope
- doWork();
- }
- \endcode
-
- This looks easy, but mutexes introduce a new class of problems: deadlocks.
- A deadlock happens when a thread waits for a mutex to become unlocked, but
- the mutex remains locked because the owning thread is waiting for the first
- thread to unlock it. The result is a frozen application. Mutexes can be
- used to make a method thread safe. Most Qt methods aren't thread safe
- because there is always a performance penalty when using mutexes.
-
- It isn't always possible to lock and unlock a mutex in a method. Sometimes
- the need to lock spans several calls. For example, modifying a container
- with an iterator requires a sequence of several calls which should not be
- interrupted by other threads. In such a scenario, locking can be achieved
- with a mutex that is kept outside of the object to be manipulated. With an
- external mutex, the duration of locking can be adjusted to the needs of the
- operation. One disadvantage is that external mutexes aid locking, but do
- not enforce it because users of the object may forget to use it.
-
- \section2 Using the Event Loop to Prevent Data Corruption
-
- The event loops of Qt are a very valuable tool for inter-thread
- communication. Every thread may have its own event loop. A safe way of
- calling a slot in another thread is by placing that call in another
- thread's event loop. This ensures that the target object finishes the
- method that is currently running before another method is started.
-
- So how is it possible to put a method invocation in an event loop? Qt has
- two ways of doing this. One way is via queued signal-slot connections; the
- other way is to post an event with QCoreApplication::postEvent(). A queued
- signal-slot connection is a signal slot connection that is executed
- asynchronously. The internal implementation is based on posted events. The
- arguments of the signal are put into the event loop and the signal method
- returns immediately.
-
- The connected slot will be executed at a time which depends on what else is
- in the event loop.
-
- Communication via the event loop eliminates the deadlock problem we face
- when using mutexes. This is why we recommend using the event loop rather
- than locking an object using a mutex.
-
- \section2 Dealing with Asynchronous Execution
-
- One way to obtain a worker thread's result is by waiting for the thread
- to terminate. In many cases, however, a blocking wait isn't acceptable. The
- alternative to a blocking wait are asynchronous result deliveries with
- either posted events or queued signals and slots. This generates a certain
- overhead because an operation's result does not appear on the next source
- line, but in a slot located somewhere else in the source file. Qt
- developers are used to working with this kind of asynchronous behavior
- because it is much similar to the kind of event-driven programming used in
- GUI applications.
-
- \section1 Examples
-
- This tutorial comes with examples for Qt's three basic ways of working with
- threads. Two more examples show how to communicate with a running thread
- and how a QObject can be placed in another thread, providing service to the
- main thread.
-
- \list
- \o Using QThread as shown \l{Qt thread basics}{above}
- \o \l{Example 1: Using the Thread Pool}{Using the global QThreadPool}
- \o \l{Example 2: Using QtConcurrent}{Using QtConcurrent}
- \o \l{Example 3: Clock}{Communication with the GUI thread}
- \o \l{Example 4: A Permanent Thread}{A permanent QObject in another thread
- provides service to the main thread}
- \endlist
-
- The following examples can all be compiled and run independently. The source can
- be found in the examples directory: examples/tutorials/threads/
-
- \section2 Example 1: Using the Thread Pool
-
- Creating and destroying threads frequently can be expensive. To avoid the
- cost of thread creation, a thread pool can be used. A thread pool is a
- place where threads can be parked and fetched. We can write the same
- "hello thread" program as \l{Qt Thread Basics}{above} using the global
- thread pool. We derive a class from QRunnable. The code we want to run in
- another thread needs to be placed in the reimplemented QRunnable::run()
- method.
-
- \snippet examples/tutorials/threads/hellothreadpool/hellothreadpool.cpp 1
-
- We instantiate Work in main(), locate the global thread pool and use the
- QThreadPool::start() method. Now the thread pool runs our worker in another
- thread. Using the thread pool has a performance advantage because threads
- are not destroyed after they have finished running. They are kept in a pool
- and wait to be used again later.
-
- \section2 Example 2: Using QtConcurrent
-
- \snippet examples/tutorials/threads/helloconcurrent/helloconcurrent.cpp 1
-
- We write a global function hello() to implement the work. QtConcurrent::run()
- is used to run the function in another thread. The result is a QFuture.
- QFuture provides a method called \l{QFuture::}{waitForFinished()}, which
- blocks until the calculation is completed. The real power of QtConcurrent
- becomes visible when data can be made available in a container. QtConcurrent
- provides several functions that are able to process itemized data on all
- available cores simultaneously. The use of QtConcurrent is very similar to
- applying an STL algorithm to an STL container.
- \l{examples-threadandconcurrent.html}{QtConcurrent Map} is a very short and
- clear example about how a container of images can be scaled on all available
- cores. The image scaling example uses the blocking variants of the functions
- used. For every blocking function there is also a non-blocking, asynchronous
- counterpart. Getting results asynchronously is implemented with QFuture and
- QFutureWatcher.
-
- \section2 Example 3: Clock
-
- \image thread_clock.png "clock"
-
- We want to produce a clock application. The application has a GUI and a
- worker thread. The worker thread checks every 10 milliseconds what time it
- is. If the formatted time has changed, the result will be sent to the GUI
- thread where it is displayed.
-
- Of course, this is an overly complicated way of designing a clock and,
- actually, a separate thread is unnecessary. We would be better off placing
- the timer in the main thread because the calculation made in the timer slot
- is very short-lived. This example is purely for instructional use and shows
- how to communicate from a worker thread to a GUI thread. Note that
- communication in this direction is easy. We only need to add a signal
- to QThread and make a queued signal/slot connection to the main thread.
- Communication from the GUI to the worker thread is shown in the next
- example.
-
- \snippet examples/tutorials/threads/clock/main.cpp 1
-
- We've connected the \c clockThread with the label. The connection must be a
- queued signal-slot connection because we want to put the call in the event
- loop.
-
- \snippet examples/tutorials/threads/clock/clockthread.h 1
-
- We have derived a class from QThread and declared the \c sendTime() signal.
-
- \snippet examples/tutorials/threads/clock/clockthread.cpp 1
-
- The trickiest part of this example is that the timer is connected to its
- slot via a direct connection. A default connection would produce a queued
- signal-slot connection because the connected objects live in different
- threads; remember that QThread does not live in the thread it creates.
-
- Still it is safe to access ClockThread::timerHit() from the worker thread
- because ClockThread::timerHit() is private and only touches local variables
- and a private member that isn't touched by public methods.
- QDateTime::currentDateTime() isn't marked as thread-safe in Qt
- documentation, however we can get away with using it in this small
- example because we know that the QDateTime::currentDateTime() static
- method isn't used in any other threads.
-
- \section2 Example 4: A Permanent Thread
-
- This example shows how it is possible to have a QObject in a worker thread
- that accepts requests from the GUI thread, does polling using a timer and
- continuously reports results back to the GUI thread. The actual work
- including the polling must be implemented in a class derived from QObject.
- We have called this class \c WorkerObject in the code shown below. The
- thread-specific code is hidden in a class called \c Thread, derived from
- QThread.
- \c Thread has two additional public members. The \c launchWorker() member
- takes the worker object and moves it to another thread with a started event
- loop.
- The call blocks for a very short moment until the thread creation operation
- is completed, allowing the worker object to be used again on the next line.
- The \c Thread class's code is short but somewhat involved, so we only show
- how to use the class.
-
- \snippet examples/tutorials/threads/movedobject/main.cpp 1
-
- QMetaObject::invokeMethod() calls a slot via the event loop. The worker
- object's methods should not be called directly after the object has been
- moved to another thread. We let the worker thread do some work and polling,
- and use a timer to shut the application down after 3 seconds. Shutting the
- worker down needs some care. We call \c{Thread::stop()} to exit the event
- loop. We wait for the thread to terminate and, after this has occurred, we
- delete the worker.
-
- \section1 Digging Deeper
-
- Threading is a very complicated subject. Qt offers more classes for
- threading than we have presented in this tutorial. The following materials
- can help you go into the subject in more depth:
-
- \list
- \o Good video tutorials about threads with Qt can be found in the material
- from the \l{Training Day at Qt Developer Days 2009}.
- \o The \l{Thread Support in Qt} document is a good starting point into
- the reference documentation.
- \o Qt comes with several additional examples for
- \l{Threading and Concurrent Programming Examples}{QThread and QtConcurrent}.
- \o Several good books describe how to work with Qt threads. The most
- extensive coverage can be found in \e{Advanced Qt Programming} by Mark
- Summerfield, Prentice Hall - roughly 70 of 500 pages cover QThread and
- QtConcurrent.
- \endlist
-*/
diff --git a/doc/src/core/threads.qdoc b/doc/src/core/threads.qdoc
deleted file mode 100644
index c38a7f3141..0000000000
--- a/doc/src/core/threads.qdoc
+++ /dev/null
@@ -1,705 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** GNU Free Documentation License
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file.
-**
-** 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$
-**
-****************************************************************************/
-
-/*!
- \group thread
- \title Threading Classes
-*/
-
-/*!
- \page threads.html
- \title Thread Support in Qt
- \ingroup qt-basic-concepts
- \brief A detailed discussion of thread handling in Qt.
-
- \ingroup frameworks-technologies
-
- \nextpage Starting Threads with QThread
-
- Qt provides thread support in the form of platform-independent
- threading classes, a thread-safe way of posting events, and
- signal-slot connections across threads. This makes it easy to
- develop portable multithreaded Qt applications and take advantage
- of multiprocessor machines. Multithreaded programming is also a
- useful paradigm for performing time-consuming operations without
- freezing the user interface of an application.
-
- Earlier versions of Qt offered an option to build the library
- without thread support. Since Qt 4.0, threads are always enabled.
-
- \section1 Topics:
-
- \list
- \o \l{Recommended Reading}
- \o \l{The Threading Classes}
- \o \l{Starting Threads with QThread}
- \o \l{Synchronizing Threads}
- \o \l{Reentrancy and Thread-Safety}
- \o \l{Threads and QObjects}
- \o \l{Concurrent Programming}
- \o \l{Thread-Support in Qt Modules}
- \endlist
-
- \section1 Recommended Reading
-
- This document is intended for an audience that has knowledge of,
- and experience with, multithreaded applications. If you are new
- to threading see our Recommended Reading list:
-
- \list
- \o \l{Threads Primer: A Guide to Multithreaded Programming}
- \o \l{Thread Time: The Multithreaded Programming Guide}
- \o \l{Pthreads Programming: A POSIX Standard for Better Multiprocessing}
- \o \l{Win32 Multithreaded Programming}
- \endlist
-
- \section1 The Threading Classes
-
- These classes are relevant to threaded applications.
-
- \annotatedlist thread
-
-\omit
- \list
- \o QThread provides the means to start a new thread.
- \o QThreadStorage provides per-thread data storage.
- \o QThreadPool manages a pool of threads that run QRunnable objects.
- \o QRunnable is an abstract class representing a runnable object.
- \o QMutex provides a mutual exclusion lock, or mutex.
- \o QMutexLocker is a convenience class that automatically locks
- and unlocks a QMutex.
- \o QReadWriteLock provides a lock that allows simultaneous read access.
- \o QReadLocker and QWriteLocker are convenience classes that automatically
- lock and unlock a QReadWriteLock.
- \o QSemaphore provides an integer semaphore (a generalization of a mutex).
- \o QWaitCondition provides a way for threads to go to sleep until
- woken up by another thread.
- \o QAtomicInt provides atomic operations on integers.
- \o QAtomicPointer provides atomic operations on pointers.
- \endlist
-\endomit
-
- \note Qt's threading classes are implemented with native threading APIs;
- e.g., Win32 and pthreads. Therefore, they can be used with threads of the
- same native API.
-*/
-
-/*!
- \page threads-starting.html
- \title Starting Threads with QThread
-
- \contentspage Thread Support in Qt
- \nextpage Synchronizing Threads
-
- A QThread instance represents a thread and provides the means to
- \l{QThread::start()}{start()} a thread, which will then execute the
- reimplementation of QThread::run(). The \c run() implementation is for a
- thread what the \c main() entry point is for the application. All code
- executed in a call stack that starts in the \c run() function is executed
- by the new thread, and the thread finishes when the function returns.
- QThread emits signals to indicate that the thread started or finished
- executing.
-
- \section1 Creating a Thread
-
- To create a thread, subclass QThread and reimplement its
- \l{QThread::run()}{run()} function. For example:
-
- \snippet doc/src/snippets/threads/threads.h 0
- \codeline
- \snippet doc/src/snippets/threads/threads.cpp 0
- \snippet doc/src/snippets/threads/threads.cpp 1
- \dots
- \snippet doc/src/snippets/threads/threads.cpp 2
-
- \section1 Starting a Thread
-
- Then, create an instance of the thread object and call
- QThread::start(). Note that you must create the QApplication (or
- QCoreApplication) object before you can create a QThread.
-
- The function will return immediately and the
- main thread will continue. The code that appears in the
- \l{QThread::run()}{run()} reimplementation will then be executed
- in a separate thread.
-
- Creating threads is explained in more detail in the QThread
- documentation.
-
- Note that QCoreApplication::exec() must always be called from the
- main thread (the thread that executes \c{main()}), not from a
- QThread. In GUI applications, the main thread is also called the
- GUI thread because it's the only thread that is allowed to
- perform GUI-related operations.
-*/
-
-/*!
- \page threads-synchronizing.html
- \title Synchronizing Threads
-
- \previouspage Starting Threads with QThread
- \contentspage Thread Support in Qt
- \nextpage Reentrancy and Thread-Safety
-
- The QMutex, QReadWriteLock, QSemaphore, and QWaitCondition
- classes provide means to synchronize threads. While the main idea
- with threads is that they should be as concurrent as possible,
- there are points where threads must stop and wait for other
- threads. For example, if two threads try to access the same
- global variable simultaneously, the results are usually
- undefined.
-
- QMutex provides a mutually exclusive lock, or mutex. At most one
- thread can hold the mutex at any time. If a thread tries to
- acquire the mutex while the mutex is already locked, the thread will
- be put to sleep until the thread that currently holds the mutex
- unlocks it. Mutexes are often used to protect accesses to shared
- data (i.e., data that can be accessed from multiple threads
- simultaneously). In the \l{Reentrancy and Thread-Safety} section
- below, we will use it to make a class thread-safe.
-
- QReadWriteLock is similar to QMutex, except that it distinguishes
- between "read" and "write" access to shared data and allows
- multiple readers to access the data simultaneously. Using
- QReadWriteLock instead of QMutex when it is possible can make
- multithreaded programs more concurrent.
-
- QSemaphore is a generalization of QMutex that protects a certain
- number of identical resources. In contrast, a mutex protects
- exactly one resource. The \l{threads/semaphores}{Semaphores}
- example shows a typical application of semaphores: synchronizing
- access to a circular buffer between a producer and a consumer.
-
- QWaitCondition allows a thread to wake up other threads when some
- condition has been met. One or many threads can block waiting for
- a QWaitCondition to set a condition with
- \l{QWaitCondition::wakeOne()}{wakeOne()} or
- \l{QWaitCondition::wakeAll()}{wakeAll()}. Use
- \l{QWaitCondition::wakeOne()}{wakeOne()} to wake one randomly
- selected event or \l{QWaitCondition::wakeAll()}{wakeAll()} to
- wake them all. The \l{threads/waitconditions}{Wait Conditions}
- example shows how to solve the producer-consumer problem using
- QWaitCondition instead of QSemaphore.
-
- Note that Qt's synchronization classes rely on the use of properly
- aligned pointers. For instance, you cannot use packed classes with
- MSVC.
-*/
-
-/*!
- \page threads-reentrancy.html
- \title Reentrancy and Thread-Safety
-
- \keyword reentrant
- \keyword thread-safe
-
- \previouspage Synchronizing Threads
- \contentspage Thread Support in Qt
- \nextpage Threads and QObjects
-
- Throughout the documentation, the terms \e{reentrant} and
- \e{thread-safe} are used to mark classes and functions to indicate
- how they can be used in multithread applications:
-
- \list
- \o A \e thread-safe function can be called simultaneously from
- multiple threads, even when the invocations use shared data,
- because all references to the shared data are serialized.
- \o A \e reentrant function can also be called simultaneously from
- multiple threads, but only if each invocation uses its own data.
- \endlist
-
- Hence, a \e{thread-safe} function is always \e{reentrant}, but a
- \e{reentrant} function is not always \e{thread-safe}.
-
- By extension, a class is said to be \e{reentrant} if its member
- functions can be called safely from multiple threads, as long as
- each thread uses a \e{different} instance of the class. The class
- is \e{thread-safe} if its member functions can be called safely
- from multiple threads, even if all the threads use the \e{same}
- instance of the class.
-
- \note Qt classes are only documented as \e{thread-safe} if they
- are intended to be used by multiple threads. If a function is not
- marked as thread-safe or reentrant, it should not be used from
- different threads. If a class is not marked as thread-safe or
- reentrant then a specific instance of that class should not be
- accessed from different threads.
-
- \section1 Reentrancy
-
- C++ classes are often reentrant, simply because they only access
- their own member data. Any thread can call a member function on an
- instance of a reentrant class, as long as no other thread can call
- a member function on the \e{same} instance of the class at the
- same time. For example, the \c Counter class below is reentrant:
-
- \snippet doc/src/snippets/threads/threads.cpp 3
- \snippet doc/src/snippets/threads/threads.cpp 4
-
- The class isn't thread-safe, because if multiple threads try to
- modify the data member \c n, the result is undefined. This is
- because the \c ++ and \c -- operators aren't always atomic.
- Indeed, they usually expand to three machine instructions:
-
- \list 1
- \o Load the variable's value in a register.
- \o Increment or decrement the register's value.
- \o Store the register's value back into main memory.
- \endlist
-
- If thread A and thread B load the variable's old value
- simultaneously, increment their register, and store it back, they
- end up overwriting each other, and the variable is incremented
- only once!
-
- \section1 Thread-Safety
-
- Clearly, the access must be serialized: Thread A must perform
- steps 1, 2, 3 without interruption (atomically) before thread B
- can perform the same steps; or vice versa. An easy way to make
- the class thread-safe is to protect all access to the data
- members with a QMutex:
-
- \snippet doc/src/snippets/threads/threads.cpp 5
- \snippet doc/src/snippets/threads/threads.cpp 6
-
- The QMutexLocker class automatically locks the mutex in its
- constructor and unlocks it when the destructor is invoked, at the
- end of the function. Locking the mutex ensures that access from
- different threads will be serialized. The \c mutex data member is
- declared with the \c mutable qualifier because we need to lock
- and unlock the mutex in \c value(), which is a const function.
-
- \section1 Notes on Qt Classes
-
- Many Qt classes are \e{reentrant}, but they are not made
- \e{thread-safe}, because making them thread-safe would incur the
- extra overhead of repeatedly locking and unlocking a QMutex. For
- example, QString is reentrant but not thread-safe. You can safely
- access \e{different} instances of QString from multiple threads
- simultaneously, but you can't safely access the \e{same} instance
- of QString from multiple threads simultaneously (unless you
- protect the accesses yourself with a QMutex).
-
- Some Qt classes and functions are thread-safe. These are mainly
- the thread-related classes (e.g. QMutex) and fundamental functions
- (e.g. QCoreApplication::postEvent()).
-
- \note Terminology in the multithreading domain isn't entirely
- standardized. POSIX uses definitions of reentrant and thread-safe
- that are somewhat different for its C APIs. When using other
- object-oriented C++ class libraries with Qt, be sure the
- definitions are understood.
-*/
-
-/*!
- \page threads-qobject.html
- \title Threads and QObjects
-
- \previouspage Reentrancy and Thread Safety
- \contentspage Thread Support in Qt
- \nextpage Concurrent Programming
-
- QThread inherits QObject. It emits signals to indicate that the
- thread started or finished executing, and provides a few slots as
- well.
-
- More interesting is that \l{QObject}s can be used in multiple
- threads, emit signals that invoke slots in other threads, and
- post events to objects that "live" in other threads. This is
- possible because each thread is allowed to have its own event
- loop.
-
- \section1 QObject Reentrancy
-
- QObject is reentrant. Most of its non-GUI subclasses, such as
- QTimer, QTcpSocket, QUdpSocket and QProcess, are also
- reentrant, making it possible to use these classes from multiple
- threads simultaneously. Note that these classes are designed to be
- created and used from within a single thread; creating an object
- in one thread and calling its functions from another thread is not
- guaranteed to work. There are three constraints to be aware of:
-
- \list
- \o \e{The child of a QObject must always be created in the thread
- where the parent was created.} This implies, among other
- things, that you should never pass the QThread object (\c
- this) as the parent of an object created in the thread (since
- the QThread object itself was created in another thread).
-
- \o \e{Event driven objects may only be used in a single thread.}
- Specifically, this applies to the \l{timers.html}{timer
- mechanism} and the \l{QtNetwork}{network module}. For example,
- you cannot start a timer or connect a socket in a thread that
- is not the \l{QObject::thread()}{object's thread}.
-
- \o \e{You must ensure that all objects created in a thread are
- deleted before you delete the QThread.} This can be done
- easily by creating the objects on the stack in your
- \l{QThread::run()}{run()} implementation.
- \endlist
-
- Although QObject is reentrant, the GUI classes, notably QWidget
- and all its subclasses, are not reentrant. They can only be used
- from the main thread. As noted earlier, QCoreApplication::exec()
- must also be called from that thread.
-
- In practice, the impossibility of using GUI classes in other
- threads than the main thread can easily be worked around by
- putting time-consuming operations in a separate worker thread and
- displaying the results on screen in the main thread when the
- worker thread is finished. This is the approach used for
- implementing the \l{threads/mandelbrot}{Mandelbrot} and
- the \l{network/blockingfortuneclient}{Blocking Fortune Client}
- example.
-
- \section1 Per-Thread Event Loop
-
- Each thread can have its own event loop. The initial thread
- starts its event loops using QCoreApplication::exec(); other
- threads can start an event loop using QThread::exec(). Like
- QCoreApplication, QThread provides an
- \l{QThread::exit()}{exit(int)} function and a
- \l{QThread::quit()}{quit()} slot.
-
- An event loop in a thread makes it possible for the thread to use
- certain non-GUI Qt classes that require the presence of an event
- loop (such as QTimer, QTcpSocket, and QProcess). It also makes it
- possible to connect signals from any threads to slots of a
- specific thread. This is explained in more detail in the
- \l{Signals and Slots Across Threads} section below.
-
- \image threadsandobjects.png Threads, objects, and event loops
-
- A QObject instance is said to \e live in the thread in which it
- is created. Events to that object are dispatched by that thread's
- event loop. The thread in which a QObject lives is available using
- QObject::thread().
-
- Note that for QObjects that are created before QApplication,
- QObject::thread() returns zero. This means that the main thread
- will only handle posted events for these objects; other event
- processing is not done at all for objects with no thread. Use the
- QObject::moveToThread() function to change the thread affinity for
- an object and its children (the object cannot be moved if it has a
- parent).
-
- Calling \c delete on a QObject from a thread other than the one
- that \e owns the object (or accessing the object in other ways) is
- unsafe, unless you guarantee that the object isn't processing
- events at that moment. Use QObject::deleteLater() instead, and a
- \l{QEvent::DeferredDelete}{DeferredDelete} event will be posted,
- which the event loop of the object's thread will eventually pick
- up. By default, the thread that \e owns a QObject is the thread
- that \e creates the QObject, but not after QObject::moveToThread()
- has been called.
-
- If no event loop is running, events won't be delivered to the
- object. For example, if you create a QTimer object in a thread but
- never call \l{QThread::exec()}{exec()}, the QTimer will never emit
- its \l{QTimer::timeout()}{timeout()} signal. Calling
- \l{QObject::deleteLater()}{deleteLater()} won't work
- either. (These restrictions apply to the main thread as well.)
-
- You can manually post events to any object in any thread at any
- time using the thread-safe function
- QCoreApplication::postEvent(). The events will automatically be
- dispatched by the event loop of the thread where the object was
- created.
-
- Event filters are supported in all threads, with the restriction
- that the monitoring object must live in the same thread as the
- monitored object. Similarly, QCoreApplication::sendEvent()
- (unlike \l{QCoreApplication::postEvent()}{postEvent()}) can only
- be used to dispatch events to objects living in the thread from
- which the function is called.
-
- \section1 Accessing QObject Subclasses from Other Threads
-
- QObject and all of its subclasses are not thread-safe. This
- includes the entire event delivery system. It is important to keep
- in mind that the event loop may be delivering events to your
- QObject subclass while you are accessing the object from another
- thread.
-
- If you are calling a function on an QObject subclass that doesn't
- live in the current thread and the object might receive events,
- you must protect all access to your QObject subclass's internal
- data with a mutex; otherwise, you may experience crashes or other
- undesired behavior.
-
- Like other objects, QThread objects live in the thread where the
- object was created -- \e not in the thread that is created when
- QThread::run() is called. It is generally unsafe to provide slots
- in your QThread subclass, unless you protect the member variables
- with a mutex.
-
- On the other hand, you can safely emit signals from your
- QThread::run() implementation, because signal emission is
- thread-safe.
-
- \section1 Signals and Slots Across Threads
-
- Qt supports these signal-slot connection types:
-
- \list
-
- \o \l{Qt::AutoConnection}{Auto Connection} (default) If the signal is
- emitted in the thread which the receiving object has affinity then
- the behavior is the same as the Direct Connection. Otherwise,
- the behavior is the same as the Queued Connection."
-
- \o \l{Qt::DirectConnection}{Direct Connection} The slot is invoked
- immediately, when the signal is emitted. The slot is executed
- in the emitter's thread, which is not necessarily the
- receiver's thread.
-
- \o \l{Qt::QueuedConnection}{Queued Connection} The slot is invoked
- when control returns to the event loop of the receiver's
- thread. The slot is executed in the receiver's thread.
-
- \o \l{Qt::BlockingQueuedConnection}{Blocking Queued Connection}
- The slot is invoked as for the Queued Connection, except the
- current thread blocks until the slot returns. \note Using this
- type to connect objects in the same thread will cause deadlock.
-
- \o \l{Qt::UniqueConnection}{Unique Connection} The behavior is the
- same as the Auto Connection, but the connection is made only if
- it does not duplicate an existing connection. i.e., if the same
- signal is already connected to the same slot for the same pair
- of objects, then the connection is not made and connect()
- returns false.
-
- \endlist
-
- The connection type can be specified by passing an additional
- argument to \l{QObject::connect()}{connect()}. Be aware that
- using direct connections when the sender and receiver live in
- different threads is unsafe if an event loop is running in the
- receiver's thread, for the same reason that calling any function
- on an object living in another thread is unsafe.
-
- QObject::connect() itself is thread-safe.
-
- The \l{threads/mandelbrot}{Mandelbrot} example uses a queued
- connection to communicate between a worker thread and the main
- thread. To avoid freezing the main thread's event loop (and, as a
- consequence, the application's user interface), all the
- Mandelbrot fractal computation is done in a separate worker
- thread. The thread emits a signal when it is done rendering the
- fractal.
-
- Similarly, the \l{network/blockingfortuneclient}{Blocking Fortune
- Client} example uses a separate thread for communicating with
- a TCP server asynchronously.
-*/
-
-/*!
- \page threads-qtconcurrent.html
- \title Concurrent Programming
-
- \previouspage Threads and QObjects
- \contentspage Thread Support in Qt
- \nextpage Thread-Support in Qt Modules
-
- \target qtconcurrent intro
-
- The QtConcurrent namespace provides high-level APIs that make it
- possible to write multi-threaded programs without using low-level
- threading primitives such as mutexes, read-write locks, wait
- conditions, or semaphores. Programs written with QtConcurrent
- automatically adjust the number of threads used according to the
- number of processor cores available. This means that applications
- written today will continue to scale when deployed on multi-core
- systems in the future.
-
- QtConcurrent includes functional programming style APIs for
- parallel list processing, including a MapReduce and FilterReduce
- implementation for shared-memory (non-distributed) systems, and
- classes for managing asynchronous computations in GUI
- applications:
-
- \list
-
- \o QtConcurrent::map() applies a function to every item in a container,
- modifying the items in-place.
-
- \o QtConcurrent::mapped() is like map(), except that it returns a new
- container with the modifications.
-
- \o QtConcurrent::mappedReduced() is like mapped(), except that the
- modified results are reduced or folded into a single result.
-
- \o QtConcurrent::filter() removes all items from a container based on the
- result of a filter function.
-
- \o QtConcurrent::filtered() is like filter(), except that it returns a new
- container with the filtered results.
-
- \o QtConcurrent::filteredReduced() is like filtered(), except that the
- filtered results are reduced or folded into a single result.
-
- \o QtConcurrent::run() runs a function in another thread.
-
- \o QFuture represents the result of an asynchronous computation.
-
- \o QFutureIterator allows iterating through results available via QFuture.
-
- \o QFutureWatcher allows monitoring a QFuture using signals-and-slots.
-
- \o QFutureSynchronizer is a convenience class that automatically
- synchronizes several QFutures.
-
- \endlist
-
- Qt Concurrent supports several STL-compatible container and iterator types,
- but works best with Qt containers that have random-access iterators, such as
- QList or QVector. The map and filter functions accept both containers and begin/end iterators.
-
- STL Iterator support overview:
-
- \table
- \header
- \o Iterator Type
- \o Example classes
- \o Support status
- \row
- \o Input Iterator
- \o
- \o Not Supported
- \row
- \o Output Iterator
- \o
- \o Not Supported
- \row
- \o Forward Iterator
- \o std::slist
- \o Supported
- \row
- \o Bidirectional Iterator
- \o QLinkedList, std::list
- \o Supported
- \row
- \o Random Access Iterator
- \o QList, QVector, std::vector
- \o Supported and Recommended
- \endtable
-
- Random access iterators can be faster in cases where Qt Concurrent is iterating
- over a large number of lightweight items, since they allow skipping to any point
- in the container. In addition, using random access iterators allows Qt Concurrent
- to provide progress information trough QFuture::progressValue() and QFutureWatcher::
- progressValueChanged().
-
- The non in-place modifying functions such as mapped() and filtered() makes a
- copy of the container when called. If you are using STL containers this copy operation
- might take some time, in this case we recommend specifying the begin and end iterators
- for the container instead.
-*/
-
-/*!
- \page threads-modules.html
- \title Thread-Support in Qt Modules
-
- \previouspage Concurrent Programming
- \contentspage Thread Support in Qt
-
- \section1 Threads and the SQL Module
-
- A connection can only be used from within the thread that created it.
- Moving connections between threads or creating queries from a different
- thread is not supported.
-
- In addition, the third party libraries used by the QSqlDrivers can impose
- further restrictions on using the SQL Module in a multithreaded program.
- Consult the manual of your database client for more information
-
- \section1 Painting in Threads
-
- QPainter can be used in a thread to paint onto QImage, QPrinter, and
- QPicture paint devices. Painting onto QPixmaps and QWidgets is \e not
- supported. On Mac OS X the automatic progress dialog will not be
- displayed if you are printing from outside the GUI thread.
-
- Any number of threads can paint at any given time, however only
- one thread at a time can paint on a given paint device. In other
- words, two threads can paint at the same time if each paints onto
- separate QImages, but the two threads cannot paint onto the same
- QImage at the same time.
-
- Note that on X11 systems without FontConfig support, Qt cannot
- render text outside of the GUI thread. You can use the
- QFontDatabase::supportsThreadedFontRendering() function to detect
- whether or not font rendering can be used outside the GUI thread.
-
- \section1 Threads and Rich Text Processing
-
- The QTextDocument, QTextCursor, and \link richtext.html all
- related classes\endlink are reentrant.
-
- Note that a QTextDocument instance created in the GUI thread may
- contain QPixmap image resources. Use QTextDocument::clone() to
- create a copy of the document, and pass the copy to another thread for
- further processing (such as printing).
-
- \section1 Threads and the SVG module
-
- The QSvgGenerator and QSvgRenderer classes in the QtSvg module
- are reentrant.
-
- \section1 Threads and Implicitly Shared Classes
-
- Qt uses an optimization called \l{implicit sharing} for many of
- its value class, notably QImage and QString. Beginning with Qt 4,
- implicit shared classes can safely be copied across threads, like
- any other value classes. They are fully
- \l{Reentrancy and Thread-Safety}{reentrant}. The implicit sharing
- is really \e implicit.
-
- In many people's minds, implicit sharing and multithreading are
- incompatible concepts, because of the way the reference counting
- is typically done. Qt, however, uses atomic reference counting to
- ensure the integrity of the shared data, avoiding potential
- corruption of the reference counter.
-
- Note that atomic reference counting does not guarantee
- \l{Reentrancy and Thread-Safety}{thread-safety}. Proper locking should be used
- when sharing an instance of an implicitly shared class between
- threads. This is the same requirement placed on all
- \l{Reentrancy and Thread-Safety}{reentrant} classes, shared or not. Atomic reference
- counting does, however, guarantee that a thread working on its
- own, local instance of an implicitly shared class is safe. We
- recommend using \l{Signals and Slots Across Threads}{signals and
- slots} to pass data between threads, as this can be done without
- the need for any explicit locking.
-
- To sum it up, implicitly shared classes in Qt 4 are really \e
- implicitly shared. Even in multithreaded applications, you can
- safely use them as if they were plain, non-shared, reentrant
- value-based classes.
-*/
diff --git a/doc/src/corelib/containers.qdoc b/doc/src/corelib/containers.qdoc
new file mode 100644
index 0000000000..e28c3bdbfe
--- /dev/null
+++ b/doc/src/corelib/containers.qdoc
@@ -0,0 +1,803 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** GNU Free Documentation License
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file.
+**
+** 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$
+**
+****************************************************************************/
+
+/*!
+ \group tools
+ \title Non-GUI Classes
+ \ingroup groups
+
+ \brief Collection classes such as list, queue, stack and string, along
+ with other classes that can be used without needing QApplication.
+
+ The non-GUI classes are general-purpose collection and string classes
+ that may be used independently of the GUI classes.
+
+ In particular, these classes do not depend on QApplication at all,
+ and so can be used in non-GUI programs.
+
+*/
+
+/*!
+ \page containers.html
+ \title Container Classes
+ \ingroup technology-apis
+ \ingroup groups
+ \ingroup qt-basic-concepts
+ \keyword container class
+ \keyword container classes
+
+ \brief Qt's template-based container classes.
+
+ \tableofcontents
+
+ \section1 Introduction
+
+ The Qt library provides a set of general purpose template-based
+ container classes. These classes can be used to store items of a
+ specified type. For example, if you need a resizable array of
+ \l{QString}s, use QVector<QString>.
+
+ These container classes are designed to be lighter, safer, and
+ easier to use than the STL containers. If you are unfamiliar with
+ the STL, or prefer to do things the "Qt way", you can use these
+ classes instead of the STL classes.
+
+ The container classes are \l{implicitly shared}, they are
+ \l{reentrant}, and they are optimized for speed, low memory
+ consumption, and minimal inline code expansion, resulting in
+ smaller executables. In addition, they are \l{thread-safe}
+ in situations where they are used as read-only containers
+ by all threads used to access them.
+
+ For traversing the items stored in a container, you can use one
+ of two types of iterators: \l{Java-style iterators} and
+ \l{STL-style iterators}. The Java-style iterators are easier to
+ use and provide high-level functionality, whereas the STL-style
+ iterators are slightly more efficient and can be used together
+ with Qt's and STL's \l{generic algorithms}.
+
+ Qt also offers a \l{foreach} keyword that make it very
+ easy to iterate over all the items stored in a container.
+
+ \section1 The Container Classes
+
+ Qt provides the following sequential containers: QList,
+ QLinkedList, QVector, QStack, and QQueue. For most
+ applications, QList is the best type to use. Although it is
+ implemented as an array-list, it provides very fast prepends and
+ appends. If you really need a linked-list, use QLinkedList; if you
+ want your items to occupy consecutive memory locations, use QVector.
+ QStack and QQueue are convenience classes that provide LIFO and
+ FIFO semantics.
+
+ Qt also provides these associative containers: QMap,
+ QMultiMap, QHash, QMultiHash, and QSet. The "Multi" containers
+ conveniently support multiple values associated with a single
+ key. The "Hash" containers provide faster lookup by using a hash
+ function instead of a binary search on a sorted set.
+
+ As special cases, the QCache and QContiguousCache classes provide
+ efficient hash-lookup of objects in a limited cache storage.
+
+ \table
+ \header \o Class \o Summary
+
+ \row \o \l{QList}<T>
+ \o This is by far the most commonly used container class. It
+ stores a list of values of a given type (T) that can be accessed
+ by index. Internally, the QList is implemented using an array,
+ ensuring that index-based access is very fast.
+
+ Items can be added at either end of the list using
+ QList::append() and QList::prepend(), or they can be inserted in
+ the middle using QList::insert(). More than any other container
+ class, QList is highly optimized to expand to as little code as
+ possible in the executable. QStringList inherits from
+ QList<QString>.
+
+ \row \o \l{QLinkedList}<T>
+ \o This is similar to QList, except that it uses
+ iterators rather than integer indexes to access items. It also
+ provides better performance than QList when inserting in the
+ middle of a huge list, and it has nicer iterator semantics.
+ (Iterators pointing to an item in a QLinkedList remain valid as
+ long as the item exists, whereas iterators to a QList can become
+ invalid after any insertion or removal.)
+
+ \row \o \l{QVector}<T>
+ \o This stores an array of values of a given type at adjacent
+ positions in memory. Inserting at the front or in the middle of
+ a vector can be quite slow, because it can lead to large numbers
+ of items having to be moved by one position in memory.
+
+ \row \o \l{QStack}<T>
+ \o This is a convenience subclass of QVector that provides
+ "last in, first out" (LIFO) semantics. It adds the following
+ functions to those already present in QVector:
+ \l{QStack::push()}{push()}, \l{QStack::pop()}{pop()},
+ and \l{QStack::top()}{top()}.
+
+ \row \o \l{QQueue}<T>
+ \o This is a convenience subclass of QList that provides
+ "first in, first out" (FIFO) semantics. It adds the following
+ functions to those already present in QList:
+ \l{QQueue::enqueue()}{enqueue()},
+ \l{QQueue::dequeue()}{dequeue()}, and \l{QQueue::head()}{head()}.
+
+ \row \o \l{QSet}<T>
+ \o This provides a single-valued mathematical set with fast
+ lookups.
+
+ \row \o \l{QMap}<Key, T>
+ \o This provides a dictionary (associative array) that maps keys
+ of type Key to values of type T. Normally each key is associated
+ with a single value. QMap stores its data in Key order; if order
+ doesn't matter QHash is a faster alternative.
+
+ \row \o \l{QMultiMap}<Key, T>
+ \o This is a convenience subclass of QMap that provides a nice
+ interface for multi-valued maps, i.e. maps where one key can be
+ associated with multiple values.
+
+ \row \o \l{QHash}<Key, T>
+ \o This has almost the same API as QMap, but provides
+ significantly faster lookups. QHash stores its data in an
+ arbitrary order.
+
+ \row \o \l{QMultiHash}<Key, T>
+ \o This is a convenience subclass of QHash that
+ provides a nice interface for multi-valued hashes.
+
+ \endtable
+
+ Containers can be nested. For example, it is perfectly possible
+ to use a QMap<QString, QList<int> >, where the key type is
+ QString and the value type QList<int>. The only pitfall is that
+ you must insert a space between the closing angle brackets (>);
+ otherwise the C++ compiler will misinterpret the two >'s as a
+ right-shift operator (>>) and report a syntax error.
+
+ The containers are defined in individual header files with the
+ same name as the container (e.g., \c <QLinkedList>). For
+ convenience, the containers are forward declared in \c
+ <QtContainerFwd>.
+
+ \keyword assignable data type
+ \keyword assignable data types
+
+ The values stored in the various containers can be of any
+ \e{assignable data type}. To qualify, a type must provide a
+ default constructor, a copy constructor, and an assignment
+ operator. This covers most data types you are likely to want to
+ store in a container, including basic types such as \c int and \c
+ double, pointer types, and Qt data types such as QString, QDate,
+ and QTime, but it doesn't cover QObject or any QObject subclass
+ (QWidget, QDialog, QTimer, etc.). If you attempt to instantiate a
+ QList<QWidget>, the compiler will complain that QWidget's copy
+ constructor and assignment operators are disabled. If you want to
+ store these kinds of objects in a container, store them as
+ pointers, for example as QList<QWidget *>.
+
+ Here's an example custom data type that meets the requirement of
+ an assignable data type:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 0
+
+ If we don't provide a copy constructor or an assignment operator,
+ C++ provides a default implementation that performs a
+ member-by-member copy. In the example above, that would have been
+ sufficient. Also, if you don't provide any constructors, C++
+ provides a default constructor that initializes its member using
+ default constructors. Although it doesn't provide any
+ explicit constructors or assignment operator, the following data
+ type can be stored in a container:
+
+ \snippet doc/src/snippets/streaming/main.cpp 0
+
+ Some containers have additional requirements for the data types
+ they can store. For example, the Key type of a QMap<Key, T> must
+ provide \c operator<(). Such special requirements are documented
+ in a class's detailed description. In some cases, specific
+ functions have special requirements; these are described on a
+ per-function basis. The compiler will always emit an error if a
+ requirement isn't met.
+
+ Qt's containers provide operator<<() and operator>>() so that they
+ can easily be read and written using a QDataStream. This means
+ that the data types stored in the container must also support
+ operator<<() and operator>>(). Providing such support is
+ straightforward; here's how we could do it for the Movie struct
+ above:
+
+ \snippet doc/src/snippets/streaming/main.cpp 1
+ \codeline
+ \snippet doc/src/snippets/streaming/main.cpp 2
+
+ \keyword default-constructed values
+
+ The documentation of certain container class functions refer to
+ \e{default-constructed values}; for example, QVector
+ automatically initializes its items with default-constructed
+ values, and QMap::value() returns a default-constructed value if
+ the specified key isn't in the map. For most value types, this
+ simply means that a value is created using the default
+ constructor (e.g. an empty string for QString). But for primitive
+ types like \c{int} and \c{double}, as well as for pointer types,
+ the C++ language doesn't specify any initialization; in those
+ cases, Qt's containers automatically initialize the value to 0.
+
+ \section1 The Iterator Classes
+
+ Iterators provide a uniform means to access items in a container.
+ Qt's container classes provide two types of iterators: Java-style
+ iterators and STL-style iterators. Iterators of both types are
+ invalidated when the data in the container is modified or detached
+ from \l{Implicit Sharing}{implicitly shared copies} due to a call
+ to a non-const member function.
+
+ \section2 Java-Style Iterators
+
+ The Java-style iterators are new in Qt 4 and are the standard
+ ones used in Qt applications. They are more convenient to use than
+ the STL-style iterators, at the price of being slightly less
+ efficient. Their API is modelled on Java's iterator classes.
+
+ For each container class, there are two Java-style iterator data
+ types: one that provides read-only access and one that provides
+ read-write access.
+
+ \table
+ \header \o Containers \o Read-only iterator
+ \o Read-write iterator
+ \row \o QList<T>, QQueue<T> \o QListIterator<T>
+ \o QMutableListIterator<T>
+ \row \o QLinkedList<T> \o QLinkedListIterator<T>
+ \o QMutableLinkedListIterator<T>
+ \row \o QVector<T>, QStack<T> \o QVectorIterator<T>
+ \o QMutableVectorIterator<T>
+ \row \o QSet<T> \o QSetIterator<T>
+ \o QMutableSetIterator<T>
+ \row \o QMap<Key, T>, QMultiMap<Key, T> \o QMapIterator<Key, T>
+ \o QMutableMapIterator<Key, T>
+ \row \o QHash<Key, T>, QMultiHash<Key, T> \o QHashIterator<Key, T>
+ \o QMutableHashIterator<Key, T>
+ \endtable
+
+ In this discussion, we will concentrate on QList and QMap. The
+ iterator types for QLinkedList, QVector, and QSet have exactly
+ the same interface as QList's iterators; similarly, the iterator
+ types for QHash have the same interface as QMap's iterators.
+
+ Unlike STL-style iterators (covered \l{STL-style
+ iterators}{below}), Java-style iterators point \e between items
+ rather than directly \e at items. For this reason, they are
+ either pointing to the very beginning of the container (before
+ the first item), at the very end of the container (after the last
+ item), or between two items. The diagram below shows the valid
+ iterator positions as red arrows for a list containing four
+ items:
+
+ \img javaiterators1.png
+
+ Here's a typical loop for iterating through all the elements of a
+ QList<QString> in order and printing them to the console:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 1
+
+ It works as follows: The QList to iterate over is passed to the
+ QListIterator constructor. At that point, the iterator is located
+ just in front of the first item in the list (before item "A").
+ Then we call \l{QListIterator::hasNext()}{hasNext()} to
+ check whether there is an item after the iterator. If there is, we
+ call \l{QListIterator::next()}{next()} to jump over that
+ item. The next() function returns the item that it jumps over. For
+ a QList<QString>, that item is of type QString.
+
+ Here's how to iterate backward in a QList:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 2
+
+ The code is symmetric with iterating forward, except that we
+ start by calling \l{QListIterator::toBack()}{toBack()}
+ to move the iterator after the last item in the list.
+
+ The diagram below illustrates the effect of calling
+ \l{QListIterator::next()}{next()} and
+ \l{QListIterator::previous()}{previous()} on an iterator:
+
+ \img javaiterators2.png
+
+ The following table summarizes the QListIterator API:
+
+ \table
+ \header \o Function \o Behavior
+ \row \o \l{QListIterator::toFront()}{toFront()}
+ \o Moves the iterator to the front of the list (before the first item)
+ \row \o \l{QListIterator::toBack()}{toBack()}
+ \o Moves the iterator to the back of the list (after the last item)
+ \row \o \l{QListIterator::hasNext()}{hasNext()}
+ \o Returns true if the iterator isn't at the back of the list
+ \row \o \l{QListIterator::next()}{next()}
+ \o Returns the next item and advances the iterator by one position
+ \row \o \l{QListIterator::peekNext()}{peekNext()}
+ \o Returns the next item without moving the iterator
+ \row \o \l{QListIterator::hasPrevious()}{hasPrevious()}
+ \o Returns true if the iterator isn't at the front of the list
+ \row \o \l{QListIterator::previous()}{previous()}
+ \o Returns the previous item and moves the iterator back by one position
+ \row \o \l{QListIterator::peekPrevious()}{peekPrevious()}
+ \o Returns the previous item without moving the iterator
+ \endtable
+
+ QListIterator provides no functions to insert or remove items
+ from the list as we iterate. To accomplish this, you must use
+ QMutableListIterator. Here's an example where we remove all
+ odd numbers from a QList<int> using QMutableListIterator:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 3
+
+ The next() call in the loop is made every time. It jumps over the
+ next item in the list. The
+ \l{QMutableListIterator::remove()}{remove()} function removes the
+ last item that we jumped over from the list. The call to
+ \l{QMutableListIterator::remove()}{remove()} does not invalidate
+ the iterator, so it is safe to continue using it. This works just
+ as well when iterating backward:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 4
+
+ If we just want to modify the value of an existing item, we can
+ use \l{QMutableListIterator::setValue()}{setValue()}. In the code
+ below, we replace any value larger than 128 with 128:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 5
+
+ Just like \l{QMutableListIterator::remove()}{remove()},
+ \l{QMutableListIterator::setValue()}{setValue()} operates on the
+ last item that we jumped over. If we iterate forward, this is the
+ item just before the iterator; if we iterate backward, this is
+ the item just after the iterator.
+
+ The \l{QMutableListIterator::next()}{next()} function returns a
+ non-const reference to the item in the list. For simple
+ operations, we don't even need
+ \l{QMutableListIterator::setValue()}{setValue()}:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 6
+
+ As mentioned above, QLinkedList's, QVector's, and QSet's iterator
+ classes have exactly the same API as QList's. We will now turn to
+ QMapIterator, which is somewhat different because it iterates on
+ (key, value) pairs.
+
+ Like QListIterator, QMapIterator provides
+ \l{QMapIterator::toFront()}{toFront()},
+ \l{QMapIterator::toBack()}{toBack()},
+ \l{QMapIterator::hasNext()}{hasNext()},
+ \l{QMapIterator::next()}{next()},
+ \l{QMapIterator::peekNext()}{peekNext()},
+ \l{QMapIterator::hasPrevious()}{hasPrevious()},
+ \l{QMapIterator::previous()}{previous()}, and
+ \l{QMapIterator::peekPrevious()}{peekPrevious()}. The key and
+ value components are extracted by calling key() and value() on
+ the object returned by next(), peekNext(), previous(), or
+ peekPrevious().
+
+ The following example removes all (capital, country) pairs where
+ the capital's name ends with "City":
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 7
+
+ QMapIterator also provides a key() and a value() function that
+ operate directly on the iterator and that return the key and
+ value of the last item that the iterator jumped above. For
+ example, the following code copies the contents of a QMap into a
+ QHash:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 8
+
+ If we want to iterate through all the items with the same
+ value, we can use \l{QMapIterator::findNext()}{findNext()}
+ or \l{QMapIterator::findPrevious()}{findPrevious()}.
+ Here's an example where we remove all the items with a particular
+ value:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 9
+
+ \section2 STL-Style Iterators
+
+ STL-style iterators have been available since the release of Qt
+ 2.0. They are compatible with Qt's and STL's \l{generic
+ algorithms} and are optimized for speed.
+
+ For each container class, there are two STL-style iterator types:
+ one that provides read-only access and one that provides
+ read-write access. Read-only iterators should be used wherever
+ possible because they are faster than read-write iterators.
+
+ \table
+ \header \o Containers \o Read-only iterator
+ \o Read-write iterator
+ \row \o QList<T>, QQueue<T> \o QList<T>::const_iterator
+ \o QList<T>::iterator
+ \row \o QLinkedList<T> \o QLinkedList<T>::const_iterator
+ \o QLinkedList<T>::iterator
+ \row \o QVector<T>, QStack<T> \o QVector<T>::const_iterator
+ \o QVector<T>::iterator
+ \row \o QSet<T> \o QSet<T>::const_iterator
+ \o QSet<T>::iterator
+ \row \o QMap<Key, T>, QMultiMap<Key, T> \o QMap<Key, T>::const_iterator
+ \o QMap<Key, T>::iterator
+ \row \o QHash<Key, T>, QMultiHash<Key, T> \o QHash<Key, T>::const_iterator
+ \o QHash<Key, T>::iterator
+ \endtable
+
+ The API of the STL iterators is modelled on pointers in an array.
+ For example, the \c ++ operator advances the iterator to the next
+ item, and the \c * operator returns the item that the iterator
+ points to. In fact, for QVector and QStack, which store their
+ items at adjacent memory positions, the
+ \l{QVector::iterator}{iterator} type is just a typedef for \c{T *},
+ and the \l{QVector::iterator}{const_iterator} type is
+ just a typedef for \c{const T *}.
+
+ In this discussion, we will concentrate on QList and QMap. The
+ iterator types for QLinkedList, QVector, and QSet have exactly
+ the same interface as QList's iterators; similarly, the iterator
+ types for QHash have the same interface as QMap's iterators.
+
+ Here's a typical loop for iterating through all the elements of a
+ QList<QString> in order and converting them to lowercase:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 10
+
+ Unlike \l{Java-style iterators}, STL-style iterators point
+ directly at items. The begin() function of a container returns an
+ iterator that points to the first item in the container. The
+ end() function of a container returns an iterator to the
+ imaginary item one position past the last item in the container.
+ end() marks an invalid position; it must never be dereferenced.
+ It is typically used in a loop's break condition. If the list is
+ empty, begin() equals end(), so we never execute the loop.
+
+ The diagram below shows the valid iterator positions as red
+ arrows for a vector containing four items:
+
+ \img stliterators1.png
+
+ Iterating backward with an STL-style iterator requires us to
+ decrement the iterator \e before we access the item. This
+ requires a \c while loop:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 11
+
+ In the code snippets so far, we used the unary \c * operator to
+ retrieve the item (of type QString) stored at a certain iterator
+ position, and we then called QString::toLower() on it. Most C++
+ compilers also allow us to write \c{i->toLower()}, but some
+ don't.
+
+ For read-only access, you can use const_iterator, constBegin(),
+ and constEnd(). For example:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 12
+
+ The following table summarizes the STL-style iterators' API:
+
+ \table
+ \header \o Expression \o Behavior
+ \row \o \c{*i} \o Returns the current item
+ \row \o \c{++i} \o Advances the iterator to the next item
+ \row \o \c{i += n} \o Advances the iterator by \c n items
+ \row \o \c{--i} \o Moves the iterator back by one item
+ \row \o \c{i -= n} \o Moves the iterator back by \c n items
+ \row \o \c{i - j} \o Returns the number of items between iterators \c i and \c j
+ \endtable
+
+ The \c{++} and \c{--} operators are available both as prefix
+ (\c{++i}, \c{--i}) and postfix (\c{i++}, \c{i--}) operators. The
+ prefix versions modify the iterators and return a reference to
+ the modified iterator; the postfix versions take a copy of the
+ iterator before they modify it, and return that copy. In
+ expressions where the return value is ignored, we recommend that
+ you use the prefix operators (\c{++i}, \c{--i}), as these are
+ slightly faster.
+
+ For non-const iterator types, the return value of the unary \c{*}
+ operator can be used on the left side of the assignment operator.
+
+ For QMap and QHash, the \c{*} operator returns the value
+ component of an item. If you want to retrieve the key, call key()
+ on the iterator. For symmetry, the iterator types also provide a
+ value() function to retrieve the value. For example, here's how
+ we would print all items in a QMap to the console:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 13
+
+ Thanks to \l{implicit sharing}, it is very inexpensive for a
+ function to return a container per value. The Qt API contains
+ dozens of functions that return a QList or QStringList per value
+ (e.g., QSplitter::sizes()). If you want to iterate over these
+ using an STL iterator, you should always take a copy of the
+ container and iterate over the copy. For example:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 14
+
+ This problem doesn't occur with functions that return a const or
+ non-const reference to a container.
+
+ \l{Implicit sharing} has another consequence on STL-style
+ iterators: You must not take a copy of a container while
+ non-const iterators are active on that container. Java-style
+ iterators don't suffer from that limitation.
+
+ \keyword foreach
+ \section1 The foreach Keyword
+
+ If you just want to iterate over all the items in a container
+ in order, you can use Qt's \c foreach keyword. The keyword is a
+ Qt-specific addition to the C++ language, and is implemented
+ using the preprocessor.
+
+ Its syntax is: \c foreach (\e variable, \e container) \e
+ statement. For example, here's how to use \c foreach to iterate
+ over a QLinkedList<QString>:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 15
+
+ The \c foreach code is significantly shorter than the equivalent
+ code that uses iterators:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 16
+
+ Unless the data type contains a comma (e.g., \c{QPair<int,
+ int>}), the variable used for iteration can be defined within the
+ \c foreach statement:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 17
+
+ And like any other C++ loop construct, you can use braces around
+ the body of a \c foreach loop, and you can use \c break to leave
+ the loop:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 18
+
+ With QMap and QHash, \c foreach accesses the value component of
+ the (key, value) pairs. If you want to iterate over both the keys
+ and the values, you can use iterators (which are fastest), or you
+ can write code like this:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 19
+
+ For a multi-valued map:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 20
+
+ Qt automatically takes a copy of the container when it enters a
+ \c foreach loop. If you modify the container as you are
+ iterating, that won't affect the loop. (If you do not modify the
+ container, the copy still takes place, but thanks to \l{implicit
+ sharing} copying a container is very fast.)
+
+ Since foreach creates a copy of the container, using a non-const
+ reference for the variable does not allow you to modify the original
+ container. It only affects the copy, which is probably not what you
+ want.
+
+ In addition to \c foreach, Qt also provides a \c forever
+ pseudo-keyword for infinite loops:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 21
+
+ If you're worried about namespace pollution, you can disable
+ these macros by adding the following line to your \c .pro file:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 22
+
+ \section1 Other Container-Like Classes
+
+ Qt includes three template classes that resemble containers in
+ some respects. These classes don't provide iterators and cannot
+ be used with the \c foreach keyword.
+
+ \list
+ \o QVarLengthArray<T, Prealloc> provides a low-level
+ variable-length array. It can be used instead of QVector in
+ places where speed is particularly important.
+
+ \o QCache<Key, T> provides a cache to store objects of a certain
+ type T associated with keys of type Key.
+
+ \o QContiguousCache<T> provides an efficient way of caching data
+ that is typically accessed in a contiguous way.
+
+ \o QPair<T1, T2> stores a pair of elements.
+ \endlist
+
+ Additional non-template types that compete with Qt's template
+ containers are QBitArray, QByteArray, QString, and QStringList.
+
+ \section1 Algorithmic Complexity
+
+ Algorithmic complexity is concerned about how fast (or slow) each
+ function is as the number of items in the container grow. For
+ example, inserting an item in the middle of a QLinkedList is an
+ extremely fast operation, irrespective of the number of items
+ stored in the QLinkedList. On the other hand, inserting an item
+ in the middle of a QVector is potentially very expensive if the
+ QVector contains many items, since half of the items must be
+ moved one position in memory.
+
+ To describe algorithmic complexity, we use the following
+ terminology, based on the "big Oh" notation:
+
+ \keyword constant time
+ \keyword logarithmic time
+ \keyword linear time
+ \keyword linear-logarithmic time
+ \keyword quadratic time
+
+ \list
+ \o \bold{Constant time:} O(1). A function is said to run in constant
+ time if it requires the same amount of time no matter how many
+ items are present in the container. One example is
+ QLinkedList::insert().
+
+ \o \bold{Logarithmic time:} O(log \e n). A function that runs in
+ logarithmic time is a function whose running time is
+ proportional to the logarithm of the number of items in the
+ container. One example is qBinaryFind().
+
+ \o \bold{Linear time:} O(\e n). A function that runs in linear time
+ will execute in a time directly proportional to the number of
+ items stored in the container. One example is
+ QVector::insert().
+
+ \o \bold{Linear-logarithmic time:} O(\e{n} log \e n). A function
+ that runs in linear-logarithmic time is asymptotically slower
+ than a linear-time function, but faster than a quadratic-time
+ function.
+
+ \o \bold{Quadratic time:} O(\e{n}\unicode{178}). A quadratic-time function
+ executes in a time that is proportional to the square of the
+ number of items stored in the container.
+ \endlist
+
+ The following table summarizes the algorithmic complexity of Qt's
+ sequential container classes:
+
+ \table
+ \header \o \o Index lookup \o Insertion \o Prepending \o Appending
+ \row \o QLinkedList<T> \o O(\e n) \o O(1) \o O(1) \o O(1)
+ \row \o QList<T> \o O(1) \o O(n) \o Amort. O(1) \o Amort. O(1)
+ \row \o QVector<T> \o O(1) \o O(n) \o O(n) \o Amort. O(1)
+ \endtable
+
+ In the table, "Amort." stands for "amortized behavior". For
+ example, "Amort. O(1)" means that if you call the function
+ only once, you might get O(\e n) behavior, but if you call it
+ multiple times (e.g., \e n times), the average behavior will be
+ O(1).
+
+ The following table summarizes the algorithmic complexity of Qt's
+ associative containers and sets:
+
+ \table
+ \header \o{1,2} \o{2,1} Key lookup \o{2,1} Insertion
+ \header \o Average \o Worst case \o Average \o Worst case
+ \row \o QMap<Key, T> \o O(log \e n) \o O(log \e n) \o O(log \e n) \o O(log \e n)
+ \row \o QMultiMap<Key, T> \o O(log \e n) \o O(log \e n) \o O(log \e n) \o O(log \e n)
+ \row \o QHash<Key, T> \o Amort. O(1) \o O(\e n) \o Amort. O(1) \o O(\e n)
+ \row \o QSet<Key> \o Amort. O(1) \o O(\e n) \o Amort. O(1) \o O(\e n)
+ \endtable
+
+ With QVector, QHash, and QSet, the performance of appending items
+ is amortized O(log \e n). It can be brought down to O(1) by
+ calling QVector::reserve(), QHash::reserve(), or QSet::reserve()
+ with the expected number of items before you insert the items.
+ The next section discusses this topic in more depth.
+
+ \section1 Growth Strategies
+
+ QVector<T>, QString, and QByteArray store their items
+ contiguously in memory; QList<T> maintains an array of pointers
+ to the items it stores to provide fast index-based access (unless
+ T is a pointer type or a basic type of the size of a pointer, in
+ which case the value itself is stored in the array); QHash<Key,
+ T> keeps a hash table whose size is proportional to the number
+ of items in the hash. To avoid reallocating the data every single
+ time an item is added at the end of the container, these classes
+ typically allocate more memory than necessary.
+
+ Consider the following code, which builds a QString from another
+ QString:
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 23
+
+ We build the string \c out dynamically by appending one character
+ to it at a time. Let's assume that we append 15000 characters to
+ the QString string. Then the following 18 reallocations (out of a
+ possible 15000) occur when QString runs out of space: 4, 8, 12,
+ 16, 20, 52, 116, 244, 500, 1012, 2036, 4084, 6132, 8180, 10228,
+ 12276, 14324, 16372. At the end, the QString has 16372 Unicode
+ characters allocated, 15000 of which are occupied.
+
+ The values above may seem a bit strange, but here are the guiding
+ principles:
+ \list
+ \o QString allocates 4 characters at a time until it reaches size 20.
+ \o From 20 to 4084, it advances by doubling the size each time.
+ More precisely, it advances to the next power of two, minus
+ 12. (Some memory allocators perform worst when requested exact
+ powers of two, because they use a few bytes per block for
+ book-keeping.)
+ \o From 4084 on, it advances by blocks of 2048 characters (4096
+ bytes). This makes sense because modern operating systems
+ don't copy the entire data when reallocating a buffer; the
+ physical memory pages are simply reordered, and only the data
+ on the first and last pages actually needs to be copied.
+ \endlist
+
+ QByteArray and QList<T> use more or less the same algorithm as
+ QString.
+
+ QVector<T> also uses that algorithm for data types that can be
+ moved around in memory using memcpy() (including the basic C++
+ types, the pointer types, and Qt's \l{shared classes}) but uses a
+ different algorithm for data types that can only be moved by
+ calling the copy constructor and a destructor. Since the cost of
+ reallocating is higher in that case, QVector<T> reduces the
+ number of reallocations by always doubling the memory when
+ running out of space.
+
+ QHash<Key, T> is a totally different case. QHash's internal hash
+ table grows by powers of two, and each time it grows, the items
+ are relocated in a new bucket, computed as qHash(\e key) %
+ QHash::capacity() (the number of buckets). This remark applies to
+ QSet<T> and QCache<Key, T> as well.
+
+ For most applications, the default growing algorithm provided by
+ Qt does the trick. If you need more control, QVector<T>,
+ QHash<Key, T>, QSet<T>, QString, and QByteArray provide a trio of
+ functions that allow you to check and specify how much memory to
+ use to store the items:
+
+ \list
+ \o \l{QString::capacity()}{capacity()} returns the
+ number of items for which memory is allocated (for QHash and
+ QSet, the number of buckets in the hash table).
+ \o \l{QString::reserve()}{reserve}(\e size) explicitly
+ preallocates memory for \e size items.
+ \o \l{QString::squeeze()}{squeeze()} frees any memory
+ not required to store the items.
+ \endlist
+
+ If you know approximately how many items you will store in a
+ container, you can start by calling reserve(), and when you are
+ done populating the container, you can call squeeze() to release
+ the extra preallocated memory.
+*/
diff --git a/doc/src/corelib/implicit-sharing.qdoc b/doc/src/corelib/implicit-sharing.qdoc
new file mode 100644
index 0000000000..e652e21253
--- /dev/null
+++ b/doc/src/corelib/implicit-sharing.qdoc
@@ -0,0 +1,138 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** GNU Free Documentation License
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file.
+**
+** 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$
+**
+****************************************************************************/
+
+/* TODO: Move some of the documentation from QSharedDataPointer into this
+ document. */
+
+/*!
+ \group shared
+ \title Implicitly Shared Classes
+*/
+
+/*!
+ \page implicit-sharing.html
+ \title Implicit Sharing
+ \ingroup qt-basic-concepts
+
+ \brief Reference counting for fast copying.
+
+ \keyword implicit data sharing
+ \keyword implicit sharing
+ \keyword implicitly shared
+ \keyword reference counting
+ \keyword shared implicitly
+ \keyword shared classes
+
+ Many C++ classes in Qt use implicit data sharing to maximize
+ resource usage and minimize copying. Implicitly shared classes are
+ both safe and efficient when passed as arguments, because only a
+ pointer to the data is passed around, and the data is copied only
+ if and when a function writes to it, i.e., \e {copy-on-write}.
+
+ \tableofcontents
+
+ \section1 Overview
+
+ A shared class consists of a pointer to a shared data block that
+ contains a reference count and the data.
+
+ When a shared object is created, it sets the reference count to 1. The
+ reference count is incremented whenever a new object references the
+ shared data, and decremented when the object dereferences the shared
+ data. The shared data is deleted when the reference count becomes
+ zero.
+
+ \keyword deep copy
+ \keyword shallow copy
+
+ When dealing with shared objects, there are two ways of copying an
+ object. We usually speak about \e deep and \e shallow copies. A deep
+ copy implies duplicating an object. A shallow copy is a reference
+ copy, i.e. just a pointer to a shared data block. Making a deep copy
+ can be expensive in terms of memory and CPU. Making a shallow copy is
+ very fast, because it only involves setting a pointer and incrementing
+ the reference count.
+
+ Object assignment (with operator=()) for implicitly shared objects is
+ implemented using shallow copies.
+
+ The benefit of sharing is that a program does not need to duplicate
+ data unnecessarily, which results in lower memory use and less copying
+ of data. Objects can easily be assigned, sent as function arguments,
+ and returned from functions.
+
+ Implicit sharing takes place behind the scenes; the programmer
+ does not need to worry about it. Even in multithreaded
+ applications, implicit sharing takes place, as explained in
+ \l{Thread-Support in Qt Modules#Threads and Implicitly Shared Classes}
+ {Threads and Implicitly Shared Classes}.
+
+ When implementing your own implicitly shared classes, use the
+ QSharedData and QSharedDataPointer classes.
+
+ \section1 Implicit Sharing in Detail
+
+ Implicit sharing automatically detaches the object from a shared
+ block if the object is about to change and the reference count is
+ greater than one. (This is often called \e {copy-on-write} or
+ \e {value semantics}.)
+
+ An implicitly shared class has total control of its internal data. In
+ any member functions that modify its data, it automatically detaches
+ before modifying the data.
+
+ The QPen class, which uses implicit sharing, detaches from the shared
+ data in all member functions that change the internal data.
+
+ Code fragment:
+ \snippet doc/src/snippets/code/doc_src_groups.cpp 0
+
+
+ \section1 List of Classes
+
+ The classes listed below automatically detach from common data if
+ an object is about to be changed. The programmer will not even
+ notice that the objects are shared. Thus you should treat
+ separate instances of them as separate objects. They will always
+ behave as separate objects but with the added benefit of sharing
+ data whenever possible. For this reason, you can pass instances
+ of these classes as arguments to functions by value without
+ concern for the copying overhead.
+
+ Example:
+ \snippet doc/src/snippets/code/doc_src_groups.cpp 1
+
+ In this example, \c p1 and \c p2 share data until QPainter::begin()
+ is called for \c p2, because painting a pixmap will modify it.
+
+ \warning Do not copy an implicitly shared container (QMap,
+ QVector, etc.) while you are iterating over it using an non-const
+ \l{STL-style iterator}.
+
+ \keyword implicitly shared classes
+ \annotatedlist shared
+*/
diff --git a/doc/src/corelib/json.qdoc b/doc/src/corelib/json.qdoc
new file mode 100644
index 0000000000..91a89761e3
--- /dev/null
+++ b/doc/src/corelib/json.qdoc
@@ -0,0 +1,118 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** GNU Free Documentation License
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file.
+**
+** 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$
+**
+****************************************************************************/
+
+/*!
+ \group json
+ \title JSON Classes
+*/
+
+/*!
+ \page json.html
+ \title JSON Support in Qt
+ \ingroup qt-basic-concepts
+ \brief An overview over the JSON support in Qt.
+
+ \ingroup frameworks-technologies
+
+ \keyword JSON
+
+ Qt provides support for dealing with JSON data. JSON is a
+ format to encode object data derived from Javascript, but
+ now widely used as a data exchange format on the internet.
+
+ The JSON support in Qt provides an easy to use C++ API to parse,
+ modify and save JSON data. It also contains support for saving this
+ data in a binary format that is directly mmap'able and very fast to
+ access.
+
+ More details about the JSON data format can be found at \link json.org
+ and in \l{http://tools.ietf.org/html/rfc4627}{RFC-4627}.
+
+ \tableofcontents
+
+ \section1 Overview
+
+ JSON is a format to store structured data. It has 6 basic data types:
+
+ \list
+ \o bool
+ \o double
+ \o string
+ \o array
+ \o object
+ \o null
+ \endlist
+
+ Any value can be any of the above type. A boolean value is represented by the
+ strings true or false in JSON. JSON doesn't explicitly specify the valid range
+ for numbers, but the support in Qt is limited to the valid range and precision of
+ doubles. A string can be any valid unicode string. An array is a list of values, and an
+ object is a dictionary of key/value pairs. All keys in an object are strings, and
+ an object cannot contain any duplicated keys.
+
+ The text representation, of JSON encloses arrays in square brackets ([ ... ]) and
+ objects in curly brackets ({ ... }). The different entries in arrays and objects
+ are separated by commas. The separator between keys and values in an object is a
+ colon (:).
+
+ A simple JSON document encoding a person, its age, address and phone numbers could
+ look like:
+
+ \code
+ {
+ "FirstName": "John",
+ "LastName": "Doe",
+ "Age": 43,
+ "Address": {
+ "Street": "Downing Street 10",
+ "City": "London",
+ "Country": "Great Britain"
+ },
+ "Phone numbers": [
+ "+44 1234567",
+ "+44 2345678"
+ ]
+ }
+ \endcode
+
+ The above example consists of an object with 5 key/value pairs. Two of the values are strings,
+ one is a number, one is another object and the last one an array.
+
+ A valid JSON document is either an array or an object, so a document always starts
+ with a square or curly bracket.
+
+ The JSON support in Qt consists of a set of 4 classes.
+
+
+ \section1 The JSON Classes
+
+ The JSON support in Qt consists of these classes:
+
+ \annotatedlist json
+
+ All JSON classes are value based, implicitly shared classes.
+*/
diff --git a/doc/src/corelib/objectmodel/metaobjects.qdoc b/doc/src/corelib/objectmodel/metaobjects.qdoc
new file mode 100644
index 0000000000..7edb376e25
--- /dev/null
+++ b/doc/src/corelib/objectmodel/metaobjects.qdoc
@@ -0,0 +1,137 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** GNU Free Documentation License
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file.
+**
+** 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$
+**
+****************************************************************************/
+
+/*!
+ \page metaobjects.html
+ \title The Meta-Object System
+ \brief An overview of Qt's meta-object system and introspection capabilities.
+
+ \ingroup qt-basic-concepts
+ \keyword meta-object
+ \target Meta-Object System
+
+ Qt's meta-object system provides the signals and slots mechanism for
+ inter-object communication, run-time type information, and the dynamic
+ property system.
+
+ The meta-object system is based on three things:
+
+ \list 1
+ \o The \l QObject class provides a base class for objects that can
+ take advantage of the meta-object system.
+ \o The Q_OBJECT macro inside the private section of the class
+ declaration is used to enable meta-object features, such as
+ dynamic properties, signals, and slots.
+ \o The \l{moc}{Meta-Object Compiler} (\c moc) supplies each
+ QObject subclass with the necessary code to implement
+ meta-object features.
+ \endlist
+
+ The \c moc tool reads a C++ source file. If it finds one or more
+ class declarations that contain the Q_OBJECT macro, it
+ produces another C++ source file which contains the meta-object
+ code for each of those classes. This generated source file is
+ either \c{#include}'d into the class's source file or, more
+ usually, compiled and linked with the class's implementation.
+
+ In addition to providing the \l{signals and slots} mechanism for
+ communication between objects (the main reason for introducing
+ the system), the meta-object code provides the following
+ additional features:
+
+ \list
+ \o QObject::metaObject() returns the associated
+ \l{QMetaObject}{meta-object} for the class.
+ \o QMetaObject::className() returns the class name as a
+ string at run-time, without requiring native run-time type information
+ (RTTI) support through the C++ compiler.
+ \o QObject::inherits() function returns whether an object is an
+ instance of a class that inherits a specified class within the
+ QObject inheritance tree.
+ \o QObject::tr() and QObject::trUtf8() translate strings for
+ \l{Internationalization with Qt}{internationalization}.
+ \o QObject::setProperty() and QObject::property()
+ dynamically set and get properties by name.
+ \o QMetaObject::newInstance() constructs a new instance of the class.
+ \endlist
+
+ \target qobjectcast
+ It is also possible to perform dynamic casts using qobject_cast()
+ on QObject classes. The qobject_cast() function behaves similarly
+ to the standard C++ \c dynamic_cast(), with the advantages
+ that it doesn't require RTTI support and it works across dynamic
+ library boundaries. It attempts to cast its argument to the pointer
+ type specified in angle-brackets, returning a non-zero pointer if the
+ object is of the correct type (determined at run-time), or 0
+ if the object's type is incompatible.
+
+ For example, let's assume \c MyWidget inherits from QWidget and
+ is declared with the Q_OBJECT macro:
+
+ \snippet doc/src/snippets/qtcast/qtcast.cpp 0
+
+ The \c obj variable, of type \c{QObject *}, actually refers to a
+ \c MyWidget object, so we can cast it appropriately:
+
+ \snippet doc/src/snippets/qtcast/qtcast.cpp 1
+
+ The cast from QObject to QWidget is successful, because the
+ object is actually a \c MyWidget, which is a subclass of QWidget.
+ Since we know that \c obj is a \c MyWidget, we can also cast it to
+ \c{MyWidget *}:
+
+ \snippet doc/src/snippets/qtcast/qtcast.cpp 2
+
+ The cast to \c MyWidget is successful because qobject_cast()
+ makes no distinction between built-in Qt types and custom types.
+
+ \snippet doc/src/snippets/qtcast/qtcast.cpp 3
+ \snippet doc/src/snippets/qtcast/qtcast.cpp 4
+
+ The cast to QLabel, on the other hand, fails. The pointer is then
+ set to 0. This makes it possible to handle objects of different
+ types differently at run-time, based on the type:
+
+ \snippet doc/src/snippets/qtcast/qtcast.cpp 5
+ \snippet doc/src/snippets/qtcast/qtcast.cpp 6
+
+ While it is possible to use QObject as a base class without the
+ Q_OBJECT macro and without meta-object code, neither signals
+ and slots nor the other features described here will be available
+ if the Q_OBJECT macro is not used. From the meta-object
+ system's point of view, a QObject subclass without meta code is
+ equivalent to its closest ancestor with meta-object code. This
+ means for example, that QMetaObject::className() will not return
+ the actual name of your class, but the class name of this
+ ancestor.
+
+ Therefore, we strongly recommend that all subclasses of QObject
+ use the Q_OBJECT macro regardless of whether or not they
+ actually use signals, slots, and properties.
+
+ \sa QMetaObject, {Qt's Property System}, {Signals and Slots}
+*/
diff --git a/doc/src/corelib/objectmodel/object.qdoc b/doc/src/corelib/objectmodel/object.qdoc
new file mode 100644
index 0000000000..cf3ce4ef31
--- /dev/null
+++ b/doc/src/corelib/objectmodel/object.qdoc
@@ -0,0 +1,124 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** GNU Free Documentation License
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file.
+**
+** 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$
+**
+****************************************************************************/
+
+/*!
+ \page object.html
+ \title Object Model
+ \ingroup qt-basic-concepts
+ \brief A description of the powerful features made possible by Qt's dynamic object model.
+
+ The standard C++ object model provides very efficient runtime
+ support for the object paradigm. But its static nature is
+ inflexibile in certain problem domains. Graphical user interface
+ programming is a domain that requires both runtime efficiency and
+ a high level of flexibility. Qt provides this, by combining the
+ speed of C++ with the flexibility of the Qt Object Model.
+
+ Qt adds these features to C++:
+
+ \list
+ \o a very powerful mechanism for seamless object
+ communication called \l{signals and slots}
+ \o queryable and designable \l{Qt's Property System}{object
+ properties}
+ \o powerful \l{The Event System}{events and event filters}
+ \o contextual \l{i18n}{string translation for internationalization}
+ \o sophisticated interval driven \l timers that make it possible
+ to elegantly integrate many tasks in an event-driven GUI
+ \o hierarchical and queryable \l{Object Trees & Ownership}{object
+ trees} that organize object ownership in a natural way
+ \o guarded pointers (QPointer) that are automatically
+ set to 0 when the referenced object is destroyed, unlike normal C++
+ pointers which become dangling pointers when their objects are destroyed
+ \o a \l{metaobjects.html#qobjectcast}{dynamic cast} that works across
+ library boundaries.
+ \endlist
+
+ Many of these Qt features are implemented with standard C++
+ techniques, based on inheritance from QObject. Others, like the
+ object communication mechanism and the dynamic property system,
+ require the \l{Meta-Object System} provided
+ by Qt's own \l{moc}{Meta-Object Compiler (moc)}.
+
+ The meta-object system is a C++ extension that makes the language
+ better suited to true component GUI programming. Although
+ templates can be used to extend C++, the meta-object system
+ provides benefits using standard C++ that cannot be achieved with
+ templates; see \l{Why Doesn't Qt Use Templates for Signals and
+ Slots?}
+
+ \section1 Important Classes
+
+ These classes form the basis of the Qt Object Model.
+
+ \annotatedlist objectmodel
+
+ \target Identity vs Value
+ \section1 Qt Objects: Identity vs Value
+
+ Some of the added features listed above for the Qt Object Model,
+ require that we think of Qt Objects as identities, not values.
+ Values are copied or assigned; identities are cloned. Cloning
+ means to create a new identity, not an exact copy of the old
+ one. For example, twins have different identities. They may look
+ identical, but they have different names, different locations, and
+ may have completely different social networks.
+
+ Then cloning an identity is a more complex operation than copying
+ or assigning a value. We can see what this means in the Qt Object
+ Model.
+
+ \bold{A Qt Object...}
+
+ \list
+
+ \o might have a unique \l{QObject::objectName()}. If we copy a Qt
+ Object, what name should we give the copy?
+
+ \o has a location in an \l{Object Trees & Ownership}
+ {object hierarchy}. If we copy a Qt Object, where should the copy
+ be located?
+
+ \o can be connected to other Qt Objects to emit signals to them or
+ to receive signals emitted by them. If we copy a Qt Object, how
+ should we transfer these connections to the copy?
+
+ \o can have \l{Qt's Property System} {new properties} added to it
+ at runtime that are not declared in the C++ class. If we copy a Qt
+ Object, should the copy include the properties that were added to
+ the original?
+
+ \endlist
+
+ For these reasons, Qt Objects should be treated as identities, not
+ as values. Identities are cloned, not copied or assigned, and
+ cloning an identity is a more complex operation than copying or
+ assigning a value. Therefore, QObject and all subclasses of
+ QObject (direct or indirect) have their \l{No copy constructor}
+ {copy constructor and assignment operator} disabled.
+
+ */
diff --git a/doc/src/corelib/objectmodel/objecttrees.qdoc b/doc/src/corelib/objectmodel/objecttrees.qdoc
new file mode 100644
index 0000000000..3e51eeba83
--- /dev/null
+++ b/doc/src/corelib/objectmodel/objecttrees.qdoc
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** GNU Free Documentation License
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file.
+**
+** 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$
+**
+****************************************************************************/
+
+/*!
+ \page objecttrees.html
+ \title Object Trees & Ownership
+ \ingroup qt-basic-concepts
+ \brief Information about the parent-child pattern used to describe
+ object ownership in Qt.
+
+ \section1 Overview
+
+ \link QObject QObjects\endlink organize themselves in object trees.
+ When you create a QObject with another object as parent, it's added to
+ the parent's \link QObject::children() children() \endlink list, and
+ is deleted when the parent is. It turns out that this approach fits
+ the needs of GUI objects very well. For example, a \l QShortcut
+ (keyboard shortcut) is a child of the relevant window, so when the
+ user closes that window, the shorcut is deleted too.
+
+ \l QWidget, the base class of everything that appears on the screen,
+ extends the parent-child relationship. A child normally also becomes a
+ child widget, i.e. it is displayed in its parent's coordinate system
+ and is graphically clipped by its parent's boundaries. For example,
+ when the application deletes a message box after it has been
+ closed, the message box's buttons and label are also deleted, just as
+ we'd want, because the buttons and label are children of the message
+ box.
+
+ You can also delete child objects yourself, and they will remove
+ themselves from their parents. For example, when the user removes a
+ toolbar it may lead to the application deleting one of its \l QToolBar
+ objects, in which case the tool bar's \l QMainWindow parent would
+ detect the change and reconfigure its screen space accordingly.
+
+ The debugging functions \l QObject::dumpObjectTree() and \l
+ QObject::dumpObjectInfo() are often useful when an application looks or
+ acts strangely.
+
+ \target note on the order of construction/destruction of QObjects
+ \section1 Construction/Destruction Order of QObjects
+
+ When \l {QObject} {QObjects} are created on the heap (i.e., created
+ with \e new), a tree can be constructed from them in any order, and
+ later, the objects in the tree can be destroyed in any order. When any
+ QObject in the tree is deleted, if the object has a parent, the
+ destructor automatically removes the object from its parent. If the
+ object has children, the destructor automatically deletes each
+ child. No QObject is deleted twice, regardless of the order of
+ destruction.
+
+ When \l {QObject} {QObjects} are created on the stack, the same
+ behavior applies. Normally, the order of destruction still doesn't
+ present a problem. Consider the following snippet:
+
+ \snippet doc/src/snippets/code/doc_src_objecttrees.cpp 0
+
+ The parent, \c window, and the child, \c quit, are both \l {QObject}
+ {QObjects} because QPushButton inherits QWidget, and QWidget inherits
+ QObject. This code is correct: the destructor of \c quit is \e not
+ called twice because the C++ language standard \e {(ISO/IEC 14882:2003)}
+ specifies that destructors of local objects are called in the reverse
+ order of their constructors. Therefore, the destructor of
+ the child, \c quit, is called first, and it removes itself from its
+ parent, \c window, before the destructor of \c window is called.
+
+ But now consider what happens if we swap the order of construction, as
+ shown in this second snippet:
+
+ \snippet doc/src/snippets/code/doc_src_objecttrees.cpp 1
+
+ In this case, the order of destruction causes a problem. The parent's
+ destructor is called first because it was created last. It then calls
+ the destructor of its child, \c quit, which is incorrect because \c
+ quit is a local variable. When \c quit subsequently goes out of scope,
+ its destructor is called again, this time correctly, but the damage has
+ already been done.
+*/
diff --git a/doc/src/corelib/objectmodel/properties.qdoc b/doc/src/corelib/objectmodel/properties.qdoc
new file mode 100644
index 0000000000..894efd017d
--- /dev/null
+++ b/doc/src/corelib/objectmodel/properties.qdoc
@@ -0,0 +1,273 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** GNU Free Documentation License
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file.
+**
+** 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$
+**
+****************************************************************************/
+
+/*!
+ \page properties.html
+ \title The Property System
+ \brief An overview of Qt's property system.
+
+ \ingroup qt-basic-concepts
+ \target Qt's Property System
+
+ Qt provides a sophisticated property system similar to the ones
+ supplied by some compiler vendors. However, as a compiler- and
+ platform-independent library, Qt does not rely on non-standard
+ compiler features like \c __property or \c [property]. The Qt
+ solution works with \e any standard C++ compiler on every platform
+ Qt supports. It is based on the \l {Meta-Object System} that also
+ provides inter-object communication via \l{signals and slots}.
+
+ \section1 Requirements for Declaring Properties
+
+ To declare a property, use the \l {Q_PROPERTY()} {Q_PROPERTY()}
+ macro in a class that inherits QObject.
+
+ \snippet doc/src/snippets/code/doc_src_properties.cpp 0
+
+ Here are some typical examples of property declarations taken from
+ class QWidget.
+
+ \snippet doc/src/snippets/code/doc_src_properties.cpp 1
+
+ A property behaves like a class data member, but it has additional
+ features accessible through the \l {Meta-Object System}.
+
+ \list
+
+ \o A \c READ accessor function is required. It is for reading the
+ property value. Ideally, a const function is used for this purpose,
+ and it must return either the property's type or a pointer or
+ reference to that type. e.g., QWidget::focus is a read-only property
+ with \c READ function, QWidget::hasFocus().
+
+ \o A \c WRITE accessor function is optional. It is for setting the
+ property value. It must return void and must take exactly one
+ argument, either of the property's type or a pointer or reference
+ to that type. e.g., QWidget::enabled has the \c WRITE function
+ QWidget::setEnabled(). Read-only properties do not need \c WRITE
+ functions. e.g., QWidget::focus has no \c WRITE function.
+
+ \o A \c RESET function is optional. It is for setting the property
+ back to its context specific default value. e.g., QWidget::cursor
+ has the typical \c READ and \c WRITE functions, QWidget::cursor()
+ and QWidget::setCursor(), and it also has a \c RESET function,
+ QWidget::unsetCursor(), since no call to QWidget::setCursor() can
+ mean \e {reset to the context specific cursor}. The \c RESET
+ function must return void and take no parameters.
+
+ \o A \c NOTIFY signal is optional. If defined, it should specify one
+ existing signal in that class that is emitted whenever the value
+ of the property changes.
+
+ \o A \c REVISION number is optional. If included, it defines the
+ the property and its notifier signal to be used in a particular
+ revision of the API that is exposed to QML.
+
+ \o The \c DESIGNABLE attribute indicates whether the property
+ should be visible in the property editor of GUI design tool (e.g.,
+ \l {Qt Designer}). Most properties are \c DESIGNABLE (default
+ true). Instead of true or false, you can specify a boolean
+ member function.
+
+ \o The \c SCRIPTABLE attribute indicates whether this property
+ should be accessible by a scripting engine (default true).
+ Instead of true or false, you can specify a boolean member
+ function.
+
+ \o The \c STORED attribute indicates whether the property should
+ be thought of as existing on its own or as depending on other
+ values. It also indicates whether the property value must be saved
+ when storing the object's state. Most properties are \c STORED
+ (default true), but e.g., QWidget::minimumWidth() has \c STORED
+ false, because its value is just taken from the width component
+ of property QWidget::minimumSize(), which is a QSize.
+
+ \o The \c USER attribute indicates whether the property is
+ designated as the user-facing or user-editable property for the
+ class. Normally, there is only one \c USER property per class
+ (default false). e.g., QAbstractButton::checked is the user
+ editable property for (checkable) buttons. Note that QItemDelegate
+ gets and sets a widget's \c USER property.
+
+ \o The presence of the \c CONSTANT attibute indicates that the property
+ value is constant. For a given object instance, the READ method of a
+ constant property must return the same value every time it is called. This
+ constant value may be different for different instances of the object. A
+ constant property cannot have a WRITE method or a NOTIFY signal.
+
+ \o The presence of the \c FINAL attribute indicates that the property
+ will not be overridden by a derived class. This can be used for performance
+ optimizations in some cases, but is not enforced by moc. Care must be taken
+ never to override a \c FINAL property.
+
+ \endlist
+
+ The \c READ, \c WRITE, and \c RESET functions can be inherited.
+ They can also be virtual. When they are inherited in classes where
+ multiple inheritance is used, they must come from the first
+ inherited class.
+
+ The property type can be any type supported by QVariant, or it can
+ be a user-defined type. In this example, class QDate is considered
+ to be a user-defined type.
+
+ \snippet doc/src/snippets/code/doc_src_properties.cpp 2
+
+ Because QDate is user-defined, you must include the \c{<QDate>}
+ header file with the property declaration.
+
+ For QMap, QList, and QValueList properties, the property value is
+ a QVariant whose value is the entire list or map. Note that the
+ Q_PROPERTY string cannot contain commas, because commas separate
+ macro arguments. Therefore, you must use \c QMap as the property
+ type instead of \c QMap<QString,QVariant>. For consistency, also
+ use \c QList and \c QValueList instead of \c QList<QVariant> and
+ \c QValueList<QVariant>.
+
+ \section1 Reading and Writing Properties with the Meta-Object System
+
+ A property can be read and written using the generic functions
+ QObject::property() and QObject::setProperty(), without knowing
+ anything about the owning class except the property's name. In
+ the code snippet below, the call to QAbstractButton::setDown() and
+ the call to QObject::setProperty() both set property "down".
+
+ \snippet doc/src/snippets/code/doc_src_properties.cpp 3
+
+ Accessing a property through its \c WRITE accessor is the better
+ of the two, because it is faster and gives better diagnostics at
+ compile time, but setting the property this way requires that you
+ know about the class at compile time. Accessing properties by name
+ lets you access classes you don't know about at compile time. You
+ can \e discover a class's properties at run time by querying its
+ QObject, QMetaObject, and \l {QMetaProperty} {QMetaProperties}.
+
+ \snippet doc/src/snippets/code/doc_src_properties.cpp 4
+
+ In the above snippet, QMetaObject::property() is used to get \l
+ {QMetaProperty} {metadata} about each property defined in some
+ unknown class. The property name is fetched from the metadata and
+ passed to QObject::property() to get the \l {QVariant} {value} of
+ the property in the current \l {QObject}{object}.
+
+ \section1 A Simple Example
+
+ Suppose we have a class MyClass, which is derived from QObject and
+ which uses the Q_OBJECT macro in its private section. We want to
+ declare a property in MyClass to keep track of a priorty
+ value. The name of the property will be \e priority, and its type
+ will be an enumeration type named \e Priority, which is defined in
+ MyClass.
+
+ We declare the property with the Q_PROPERTY() macro in the private
+ section of the class. The required \c READ function is named \c
+ priority, and we include a \c WRITE function named \c setPriority.
+ The enumeration type must be registered with the \l {Meta-Object
+ System} using the Q_ENUMS() macro. Registering an enumeration type
+ makes the enumerator names available for use in calls to
+ QObject::setProperty(). We must also provide our own declarations
+ for the \c READ and \c WRITE functions. The declaration of MyClass
+ then might look like this:
+
+ \snippet doc/src/snippets/code/doc_src_properties.cpp 5
+
+ The \c READ function is const and returns the property type. The
+ \c WRITE function returns void and has exactly one parameter of
+ the property type. The meta-object compiler enforces these
+ requirements.
+
+ Given a pointer to an instance of MyClass or a pointer to a
+ QObject that is an instance of MyClass, we have two ways to set
+ its priority property:
+
+ \snippet doc/src/snippets/code/doc_src_properties.cpp 6
+
+ In the example, the enumeration type that is the property type is
+ declared in MyClass and registered with the \l{Meta-Object System}
+ using the Q_ENUMS() macro. This makes the enumeration values
+ available as strings for use as in the call to setProperty(). Had
+ the enumeration type been declared in another class, its fully
+ qualified name (i.e., OtherClass::Priority) would be required, and
+ that other class would also have to inherit QObject and register
+ the enumeration type there using the Q_ENUMS() macro.
+
+ A similar macro, Q_FLAGS(), is also available. Like Q_ENUMS(), it
+ registers an enumeration type, but it marks the type as being a
+ set of \e flags, i.e. values that can be OR'd together. An I/O
+ class might have enumeration values \c Read and \c Write and then
+ QObject::setProperty() could accept \c{Read | Write}. Q_FLAGS()
+ should be used to register this enumeration type.
+
+ \section1 Dynamic Properties
+
+ QObject::setProperty() can also be used to add \e new properties
+ to an instance of a class at runtime. When it is called with a
+ name and a value, if a property with the given name exists in the
+ QObject, and if the given value is compatible with the property's
+ type, the value is stored in the property, and true is returned.
+ If the value is \e not compatible with the property's type, the
+ property is \e not changed, and false is returned. But if the
+ property with the given name doesn't exist in the QObject (i.e.,
+ if it wasn't declared with Q_PROPERTY(), a new property with the
+ given name and value is automatically added to the QObject, but
+ false is still returned. This means that a return of false can't
+ be used to determine whether a particular property was actually
+ set, unless you know in advance that the property already exists
+ in the QObject.
+
+ Note that \e dynamic properties are added on a per instance basis,
+ i.e., they are added to QObject, not QMetaObject. A property can
+ be removed from an instance by passing the property name and an
+ invalid QVariant value to QObject::setProperty(). The default
+ constructor for QVariant constructs an invalid QVariant.
+
+ Dynamic properties can be queried with QObject::property(), just
+ like properties declared at compile time with Q_PROPERTY().
+
+ \sa {Meta-Object System}, {Signals and Slots}
+
+ \section1 Properties and Custom Types
+
+ Custom types used by properties need to be registered using the
+ Q_DECLARE_METATYPE() macro so that their values can be stored in
+ QVariant objects. This makes them suitable for use with both
+ static properties declared using the Q_PROPERTY() macro in class
+ definitions and dynamic properties created at run-time.
+
+ \sa Q_DECLARE_METATYPE(), QMetaType, QVariant
+
+ \section1 Adding Additional Information to a Class
+
+ Connected to the property system is an additional macro,
+ Q_CLASSINFO(), that can be used to attach additional
+ \e{name}--\e{value} pairs to a class's meta-object, for example:
+
+ \snippet doc/src/snippets/code/doc_src_properties.cpp 7
+
+ Like other meta-data, class information is accessible at run-time
+ through the meta-object; see QMetaObject::classInfo() for details.
+*/
diff --git a/doc/src/corelib/objectmodel/signalsandslots.qdoc b/doc/src/corelib/objectmodel/signalsandslots.qdoc
new file mode 100644
index 0000000000..9100980121
--- /dev/null
+++ b/doc/src/corelib/objectmodel/signalsandslots.qdoc
@@ -0,0 +1,468 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** GNU Free Documentation License
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file.
+**
+** 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$
+**
+****************************************************************************/
+
+/*!
+ \page signalsandslots.html
+ \title Signals & Slots
+ \ingroup qt-basic-concepts
+ \brief An overview of Qt's signals and slots inter-object
+ communication mechanism.
+
+ Signals and slots are used for communication between objects. The
+ signals and slots mechanism is a central feature of Qt and
+ probably the part that differs most from the features provided by
+ other frameworks.
+
+ \tableofcontents
+
+ \section1 Introduction
+
+ In GUI programming, when we change one widget, we often want
+ another widget to be notified. More generally, we want objects of
+ any kind to be able to communicate with one another. For example,
+ if a user clicks a \gui{Close} button, we probably want the
+ window's \l{QWidget::close()}{close()} function to be called.
+
+ Older toolkits achieve this kind of communication using
+ callbacks. A callback is a pointer to a function, so if you want
+ a processing function to notify you about some event you pass a
+ pointer to another function (the callback) to the processing
+ function. The processing function then calls the callback when
+ appropriate. Callbacks have two fundamental flaws: Firstly, they
+ are not type-safe. We can never be certain that the processing
+ function will call the callback with the correct arguments.
+ Secondly, the callback is strongly coupled to the processing
+ function since the processing function must know which callback
+ to call.
+
+ \section1 Signals and Slots
+
+ In Qt, we have an alternative to the callback technique: We use
+ signals and slots. A signal is emitted when a particular event
+ occurs. Qt's widgets have many predefined signals, but we can
+ always subclass widgets to add our own signals to them. A slot
+ is a function that is called in response to a particular signal.
+ Qt's widgets have many pre-defined slots, but it is common
+ practice to subclass widgets and add your own slots so that you
+ can handle the signals that you are interested in.
+
+ \img abstract-connections.png
+ \omit
+ \caption An abstract view of some signals and slots connections
+ \endomit
+
+ The signals and slots mechanism is type safe: The signature of a
+ signal must match the signature of the receiving slot. (In fact a
+ slot may have a shorter signature than the signal it receives
+ because it can ignore extra arguments.) Since the signatures are
+ compatible, the compiler can help us detect type mismatches.
+ Signals and slots are loosely coupled: A class which emits a
+ signal neither knows nor cares which slots receive the signal.
+ Qt's signals and slots mechanism ensures that if you connect a
+ signal to a slot, the slot will be called with the signal's
+ parameters at the right time. Signals and slots can take any
+ number of arguments of any type. They are completely type safe.
+
+ All classes that inherit from QObject or one of its subclasses
+ (e.g., QWidget) can contain signals and slots. Signals are emitted by
+ objects when they change their state in a way that may be interesting
+ to other objects. This is all the object does to communicate. It
+ does not know or care whether anything is receiving the signals it
+ emits. This is true information encapsulation, and ensures that the
+ object can be used as a software component.
+
+ Slots can be used for receiving signals, but they are also normal
+ member functions. Just as an object does not know if anything receives
+ its signals, a slot does not know if it has any signals connected to
+ it. This ensures that truly independent components can be created with
+ Qt.
+
+ You can connect as many signals as you want to a single slot, and a
+ signal can be connected to as many slots as you need. It is even
+ possible to connect a signal directly to another signal. (This will
+ emit the second signal immediately whenever the first is emitted.)
+
+ Together, signals and slots make up a powerful component programming
+ mechanism.
+
+ \section1 A Small Example
+
+ A minimal C++ class declaration might read:
+
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.h 0
+
+ A small QObject-based class might read:
+
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.h 1
+ \codeline
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.h 2
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.h 3
+
+ The QObject-based version has the same internal state, and provides
+ public methods to access the state, but in addition it has support
+ for component programming using signals and slots. This class can
+ tell the outside world that its state has changed by emitting a
+ signal, \c{valueChanged()}, and it has a slot which other objects
+ can send signals to.
+
+ All classes that contain signals or slots must mention
+ Q_OBJECT at the top of their declaration. They must also derive
+ (directly or indirectly) from QObject.
+
+ Slots are implemented by the application programmer.
+ Here is a possible implementation of the \c{Counter::setValue()}
+ slot:
+
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 0
+
+ The \c{emit} line emits the signal \c valueChanged() from the
+ object, with the new value as argument.
+
+ In the following code snippet, we create two \c Counter objects
+ and connect the first object's \c valueChanged() signal to the
+ second object's \c setValue() slot using QObject::connect():
+
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 1
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 2
+ \codeline
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 3
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 4
+
+ Calling \c{a.setValue(12)} makes \c{a} emit a
+ \c{valueChanged(12)} signal, which \c{b} will receive in its
+ \c{setValue()} slot, i.e. \c{b.setValue(12)} is called. Then
+ \c{b} emits the same \c{valueChanged()} signal, but since no slot
+ has been connected to \c{b}'s \c{valueChanged()} signal, the
+ signal is ignored.
+
+ Note that the \c{setValue()} function sets the value and emits
+ the signal only if \c{value != m_value}. This prevents infinite
+ looping in the case of cyclic connections (e.g., if
+ \c{b.valueChanged()} were connected to \c{a.setValue()}).
+
+ By default, for every connection you make, a signal is emitted;
+ two signals are emitted for duplicate connections. You can break
+ all of these connections with a single disconnect() call.
+ If you pass the Qt::UniqueConnection \a type, the connection will only
+ be made if it is not a duplicate. If there is already a duplicate
+ (exact same signal to the exact same slot on the same objects),
+ the connection will fail and connect will return false
+
+ This example illustrates that objects can work together without needing to
+ know any information about each other. To enable this, the objects only
+ need to be connected together, and this can be achieved with some simple
+ QObject::connect() function calls, or with \c{uic}'s
+ \l{Using a Designer UI File in Your Application#Automatic Connections}
+ {automatic connections} feature.
+
+ \section1 Building the Example
+
+ The C++ preprocessor changes or removes the \c{signals},
+ \c{slots}, and \c{emit} keywords so that the compiler is
+ presented with standard C++.
+
+ By running the \l moc on class definitions that contain signals
+ or slots, a C++ source file is produced which should be compiled
+ and linked with the other object files for the application. If
+ you use \l qmake, the makefile rules to automatically invoke \c
+ moc will be added to your project's makefile.
+
+ \section1 Signals
+
+ Signals are emitted by an object when its internal state has changed
+ in some way that might be interesting to the object's client or owner.
+ Signals are public access functions and can be emitted from anywhere,
+ but we recommend to only emit them from the class that defines the
+ signal and its subclasses.
+
+ When a signal is emitted, the slots connected to it are usually
+ executed immediately, just like a normal function call. When this
+ happens, the signals and slots mechanism is totally independent of
+ any GUI event loop. Execution of the code following the \c emit
+ statement will occur once all slots have returned. The situation is
+ slightly different when using \l{Qt::ConnectionType}{queued
+ connections}; in such a case, the code following the \c emit keyword
+ will continue immediately, and the slots will be executed later.
+
+ If several slots are connected to one signal, the slots will be
+ executed one after the other, in the order they have been connected,
+ when the signal is emitted.
+
+ Signals are automatically generated by the \l moc and must not be
+ implemented in the \c .cpp file. They can never have return types
+ (i.e. use \c void).
+
+ A note about arguments: Our experience shows that signals and slots
+ are more reusable if they do not use special types. If
+ QScrollBar::valueChanged() were to use a special type such as the
+ hypothetical QScrollBar::Range, it could only be connected to
+ slots designed specifically for QScrollBar. Connecting different
+ input widgets together would be impossible.
+
+ \section1 Slots
+
+ A slot is called when a signal connected to it is emitted. Slots are
+ normal C++ functions and can be called normally; their only special
+ feature is that signals can be connected to them.
+
+ Since slots are normal member functions, they follow the normal C++
+ rules when called directly. However, as slots, they can be invoked
+ by any component, regardless of its access level, via a signal-slot
+ connection. This means that a signal emitted from an instance of an
+ arbitrary class can cause a private slot to be invoked in an instance
+ of an unrelated class.
+
+ You can also define slots to be virtual, which we have found quite
+ useful in practice.
+
+ Compared to callbacks, signals and slots are slightly slower
+ because of the increased flexibility they provide, although the
+ difference for real applications is insignificant. In general,
+ emitting a signal that is connected to some slots, is
+ approximately ten times slower than calling the receivers
+ directly, with non-virtual function calls. This is the overhead
+ required to locate the connection object, to safely iterate over
+ all connections (i.e. checking that subsequent receivers have not
+ been destroyed during the emission), and to marshall any
+ parameters in a generic fashion. While ten non-virtual function
+ calls may sound like a lot, it's much less overhead than any \c
+ new or \c delete operation, for example. As soon as you perform a
+ string, vector or list operation that behind the scene requires
+ \c new or \c delete, the signals and slots overhead is only
+ responsible for a very small proportion of the complete function
+ call costs. The same is true whenever you do a system call in a slot;
+ or indirectly call more than ten functions.
+ The simplicity and flexibility of the signals and slots mechanism is
+ well worth the overhead, which your users won't even notice.
+
+ Note that other libraries that define variables called \c signals
+ or \c slots may cause compiler warnings and errors when compiled
+ alongside a Qt-based application. To solve this problem, \c
+ #undef the offending preprocessor symbol.
+
+ \section1 Meta-Object Information
+
+ The meta-object compiler (\l moc) parses the class declaration in
+ a C++ file and generates C++ code that initializes the
+ meta-object. The meta-object contains the names of all the signal
+ and slot members, as well as pointers to these functions.
+
+ The meta-object contains additional information such as the
+ object's \link QObject::className() class name\endlink. You can
+ also check if an object \link QObject::inherits()
+ inherits\endlink a specific class, for example:
+
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 5
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 6
+
+ The meta-object information is also used by qobject_cast<T>(), which
+ is similar to QObject::inherits() but is less error-prone:
+
+ \snippet doc/src/snippets/signalsandslots/signalsandslots.cpp 7
+
+ See \l{Meta-Object System} for more information.
+
+ \section1 A Real Example
+
+ Here is a simple commented example of a widget.
+
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 0
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 1
+ \codeline
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 2
+ \codeline
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 3
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 4
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 5
+
+ \c LcdNumber inherits QObject, which has most of the signal-slot
+ knowledge, via QFrame and QWidget. It is somewhat similar to the
+ built-in QLCDNumber widget.
+
+ The Q_OBJECT macro is expanded by the preprocessor to declare
+ several member functions that are implemented by the \c{moc}; if
+ you get compiler errors along the lines of "undefined reference
+ to vtable for \c{LcdNumber}", you have probably forgotten to
+ \l{moc}{run the moc} or to include the moc output in the link
+ command.
+
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 6
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 7
+
+ It's not obviously relevant to the moc, but if you inherit
+ QWidget you almost certainly want to have the \c parent argument
+ in your constructor and pass it to the base class's constructor.
+
+ Some destructors and member functions are omitted here; the \c
+ moc ignores member functions.
+
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 8
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 9
+
+ \c LcdNumber emits a signal when it is asked to show an impossible
+ value.
+
+ If you don't care about overflow, or you know that overflow
+ cannot occur, you can ignore the \c overflow() signal, i.e. don't
+ connect it to any slot.
+
+ If on the other hand you want to call two different error
+ functions when the number overflows, simply connect the signal to
+ two different slots. Qt will call both (in the order they were connected).
+
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 10
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 11
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 12
+ \codeline
+ \snippet doc/src/snippets/signalsandslots/lcdnumber.h 13
+
+ A slot is a receiving function used to get information about
+ state changes in other widgets. \c LcdNumber uses it, as the code
+ above indicates, to set the displayed number. Since \c{display()}
+ is part of the class's interface with the rest of the program,
+ the slot is public.
+
+ Several of the example programs connect the
+ \l{QScrollBar::valueChanged()}{valueChanged()} signal of a
+ QScrollBar to the \c display() slot, so the LCD number
+ continuously shows the value of the scroll bar.
+
+ Note that \c display() is overloaded; Qt will select the
+ appropriate version when you connect a signal to the slot. With
+ callbacks, you'd have to find five different names and keep track
+ of the types yourself.
+
+ Some irrelevant member functions have been omitted from this
+ example.
+
+ \section1 Signals And Slots With Default Arguments
+
+ The signatures of signals and slots may contain arguments, and the
+ arguments can have default values. Consider QObject::destroyed():
+
+ \code
+ void destroyed(QObject* = 0);
+ \endcode
+
+ When a QObject is deleted, it emits this QObject::destroyed()
+ signal. We want to catch this signal, wherever we might have a
+ dangling reference to the deleted QObject, so we can clean it up.
+ A suitable slot signature might be:
+
+ \code
+ void objectDestroyed(QObject* obj = 0);
+ \endcode
+
+ To connect the signal to the slot, we use QObject::connect().
+ There are several ways to connect signal and slots. The first is to use
+ function pointers:
+ \code
+ connect(sender, &QObject::destroyed, this, &MyObject::objectDestroyed);
+ \endcode
+
+ There are several advantages to using connect() with function pointers.
+ First, it allows the compiler to check that the signal's arguments are
+ compatible with the slot's arguments. Arguments can also be implicitly
+ converted by the compiler, if needed.
+
+ You can also connect to functors or C++11 lamdas:
+
+ \code
+ connect(sender, &QObject::destroyed, [=](){ this->m_objects.remove(sender); });
+ \endcode
+
+ Note that if your compiler does not support C++11 variadic templates,
+ this syntax only works if the signal and slot have 6 arguments or less.
+
+ The other way to connect a signal to a slot is to use QObject::connect()
+ and the \c{SIGNAL} and \c{SLOT} macros.
+ The rule about whether to
+ include arguments or not in the \c{SIGNAL()} and \c{SLOT()}
+ macros, if the arguments have default values, is that the
+ signature passed to the \c{SIGNAL()} macro must \e not have fewer
+ arguments than the signature passed to the \c{SLOT()} macro.
+
+ All of these would work:
+ \code
+ connect(sender, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed(Qbject*)));
+ connect(sender, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed()));
+ connect(sender, SIGNAL(destroyed()), this, SLOT(objectDestroyed()));
+ \endcode
+ But this one won't work:
+ \code
+ connect(sender, SIGNAL(destroyed()), this, SLOT(objectDestroyed(QObject*)));
+ \endcode
+
+ ...because the slot will be expecting a QObject that the signal
+ will not send. This connection will report a runtime error.
+
+ Note that signal and slot arguments are not checked by the compiler when
+ using this QObject::connect() overload.
+
+ \section1 Advanced Signals and Slots Usage
+
+ For cases where you may require information on the sender of the
+ signal, Qt provides the QObject::sender() function, which returns
+ a pointer to the object that sent the signal.
+
+ The QSignalMapper class is provided for situations where many
+ signals are connected to the same slot and the slot needs to
+ handle each signal differently.
+
+ Suppose you have three push buttons that determine which file you
+ will open: "Tax File", "Accounts File", or "Report File".
+
+ In order to open the correct file, you use QSignalMapper::setMapping() to
+ map all the clicked() signals to a QSignalMapper object. Then you connect
+ the file's QPushButton::clicked() signal to the QSignalMapper::map() slot.
+
+ \snippet doc/src/snippets/signalmapper/filereader.cpp 0
+
+ Then, you connect the \l{QSignalMapper::}{mapped()} signal to
+ \c{readFile()} where a different file will be opened, depending on
+ which push button is pressed.
+
+ \snippet doc/src/snippets/signalmapper/filereader.cpp 1
+
+ \sa {Meta-Object System}, {Qt's Property System}
+
+ \target 3rd Party Signals and Slots
+ \section2 Using Qt with 3rd Party Signals and Slots
+
+ It is possible to use Qt with a 3rd party signal/slot mechanism.
+ You can even use both mechanisms in the same project. Just add the
+ following line to your qmake project (.pro) file.
+
+ \snippet doc/src/snippets/code/doc_src_containers.cpp 22
+
+ It tells Qt not to define the moc keywords \c{signals}, \c{slots},
+ and \c{emit}, because these names will be used by a 3rd party
+ library, e.g. Boost. Then to continue using Qt signals and slots
+ with the \c{no_keywords} flag, simply replace all uses of the Qt
+ moc keywords in your sources with the corresponding Qt macros
+ Q_SIGNALS (or Q_SIGNAL), Q_SLOTS (or Q_SLOT), and Q_EMIT.
+*/
diff --git a/doc/src/corelib/qtcore.qdoc b/doc/src/corelib/qtcore.qdoc
new file mode 100644
index 0000000000..36d128e3df
--- /dev/null
+++ b/doc/src/corelib/qtcore.qdoc
@@ -0,0 +1,42 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** GNU Free Documentation License
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file.
+**
+** 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$
+**
+****************************************************************************/
+
+/*!
+ \module QtCore
+ \title QtCore Module
+ \ingroup modules
+
+ \keyword QtCore
+
+ \brief The QtCore module contains core non-GUI functionality.
+
+ All other Qt modules rely on this module. To include the
+ definitions of the module's classes, use the following directive:
+
+ \snippet doc/src/snippets/code/doc_src_qtcore.cpp 0
+*/
+
diff --git a/doc/src/corelib/threads-basics.qdoc b/doc/src/corelib/threads-basics.qdoc
new file mode 100644
index 0000000000..44a3961177
--- /dev/null
+++ b/doc/src/corelib/threads-basics.qdoc
@@ -0,0 +1,572 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** GNU Free Documentation License
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file.
+**
+** 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$
+**
+****************************************************************************/
+
+/*!
+ \page thread-basics.html
+ \ingroup tutorials
+ \startpage {index.html}{Qt Reference Documentation}
+
+ \title Threading Basics
+ \brief An introduction to threads
+
+ \section1 What Are Threads?
+
+ Threads are about doing things in parallel, just like processes. So how do
+ threads differ from processes? While you are making calculations on a
+ spreadsheet, there may also be a media player running on the same desktop
+ playing your favorite song. Here is an example of two processes working in
+ parallel: one running the spreadsheet program; one running a media player.
+ Multitasking is a well known term for this. A closer look at the media
+ player reveals that there are again things going on in parallel within one
+ single process. While the media player is sending music to the audio driver,
+ the user interface with all its bells and whistles is being constantly
+ updated. This is what threads are for \mdash concurrency within one single
+ process.
+
+ So how is concurrency implemented? Parallel work on single core CPUs is an
+ illusion which is somewhat similar to the illusion of moving images in
+ cinema.
+ For processes, the illusion is produced by interrupting the processor's
+ work on one process after a very short time. Then the processor moves on to
+ the next process. In order to switch between processes, the current program
+ counter is saved and the next processor's program counter is loaded. This
+ is not sufficient because the same needs to be done with registers and
+ certain architecture and OS specific data.
+
+ Just as one CPU can power two or more processes, it is also possible to let
+ the CPU run on two different code segments of one single process. When a
+ process starts, it always executes one code segment and therefore the
+ process is said to have one thread. However, the program may decide to
+ start a second thread. Then, two different code sequences are processed
+ simultaneously inside one process. Concurrency is achieved on single core
+ CPUs by repeatedly saving program counters and registers then loading the
+ next thread's program counters and registers. No cooperation from the
+ program is required to cycle between the active threads. A thread may be in
+ any state when the switch to the next thread occurs.
+
+ The current trend in CPU design is to have several cores. A typical
+ single-threaded application can make use of only one core. However, a
+ program with multiple threads can be assigned to multiple cores, making
+ things happen in a truly concurrent way. As a result, distributing work
+ to more than one thread can make a program run much faster on multicore
+ CPUs because additional cores can be used.
+
+ \section2 GUI Thread and Worker Thread
+
+ As mentioned, each program has one thread when it is started. This thread
+ is called the "main thread" (also known as the "GUI thread" in Qt
+ applications). The Qt GUI must run in this thread. All widgets and several
+ related classes, for example QPixmap, don't work in secondary threads.
+ A secondary thread is commonly referred to as a "worker thread" because it
+ is used to offload processing work from the main thread.
+
+ \section2 Simultaneous Access to Data
+
+ Each thread has its own stack, which means each thread has its own call
+ history and local variables. Unlike processes, threads share the same
+ address space. The following diagram shows how the building blocks of
+ threads are located in memory. Program counter and registers of inactive
+ threads are typically kept in kernel space. There is a shared copy of the
+ code and a separate stack for each thread.
+
+ \image threadvisual-example.png "Thread visualization"
+
+ If two threads have a pointer to the same object, it is possible that both
+ threads will access that object at the same time and this can potentially
+ destroy the object's integrity. It's easy to imagine the many things that
+ can go wrong when two methods of the same object are executed
+ simultaneously.
+
+ Sometimes it is necessary to access one object from different threads;
+ for example, when objects living in different threads need to communicate.
+ Since threads use the same address space, it is easier and faster for
+ threads to exchange data than it is for processes. Data does not have to be
+ serialized and copied. Passing pointers is possible, but there must be a
+ strict coordination of what thread touches which object. Simultaneous
+ execution of operations on one object must be prevented. There are several
+ ways of achieving this and some of them are described below.
+
+ So what can be done safely? All objects created in a thread can be used
+ safely within that thread provided that other threads don't have references
+ to them and objects don't have implicit coupling with other threads. Such
+ implicit coupling may happen when data is shared between instances as with
+ static members, singletons or global data. Familiarize yourself with the
+ concept of \l{Reentrancy and Thread-Safety}{thread safe and reentrant}
+ classes and functions.
+
+ \section1 Using Threads
+
+ There are basically two use cases for threads:
+
+ \list
+ \o Make processing faster by making use of multicore processors.
+ \o Keep the GUI thread or other time critical threads responsive by
+ offloading long lasting processing or blocking calls to other threads.
+ \endlist
+
+ \section2 When to Use Alternatives to Threads
+
+ Developers need to be very careful with threads. It is easy to start other
+ threads, but very hard to ensure that all shared data remains consistent.
+ Problems are often hard to find because they may only show up once in a
+ while or only on specific hardware configurations. Before creating threads
+ to solve certain problems, possible alternatives should be considered.
+
+ \table
+ \header
+ \o Alternative
+ \o Comment
+ \row
+ \o QEventLoop::processEvents()
+ \o Calling QEventLoop::processEvents() repeatedly during a
+ time-consuming calculation prevents GUI blocking. However, this
+ solution doesn't scale well because the call to processEvents() may
+ occur too often, or not often enough, depending on hardware.
+ \row
+ \o QTimer
+ \o Background processing can sometimes be done conveniently using a
+ timer to schedule execution of a slot at some point in the future.
+ A timer with an interval of 0 will time out as soon as there are no
+ more events to process.
+ \row
+ \o QSocketNotifier QNetworkAccessManager QIODevice::readyRead()
+ \o This is an alternative to having one or multiple threads, each with
+ a blocking read on a slow network connection. As long as the
+ calculation in response to a chunk of network data can be executed
+ quickly, this reactive design is better than synchronous waiting in
+ threads. Reactive design is less error prone and energy efficient
+ than threading. In many cases there are also performance benefits.
+ \endtable
+
+ In general, it is recommended to only use safe and tested paths and to
+ avoid introducing ad-hoc threading concepts. QtConcurrent provides an easy
+ interface for distributing work to all of the processor's cores. The
+ threading code is completely hidden in the QtConcurrent framework, so you
+ don't have to take care of the details. However, QtConcurrent can't be used
+ when communication with the running thread is needed, and it shouldn't be
+ used to handle blocking operations.
+
+ \section2 Which Qt Thread Technology Should You Use?
+
+ Sometimes you want to do more than just running a method in the context of
+ another thread. You may want to have an object which lives in another
+ thread that provides a service to the GUI thread. Maybe you want another
+ thread to stay alive forever to poll hardware ports and send a signal to
+ the GUI thread when something noteworthy has happened. Qt provides
+ different solutions for developing threaded applications. The right
+ solution depends on the purpose of the new thread as well as on the
+ thread's lifetime.
+
+ \table
+ \header
+ \o Lifetime of thread
+ \o Development task
+ \o Solution
+ \row
+ \o One call
+ \o Run one method within another thread and quit the thread when the
+ method is finished.
+ \o Qt provides different solutions:
+ \list
+ \o Write a function and run it with QtConcurrent::run()
+ \o Derive a class from QRunnable and run it in the global thread
+ pool with QThreadPool::globalInstance()->start()
+ \o Derive a class from QThread, reimplement the QThread::run()
+ method and use QThread::start() to run it.
+ \endlist
+
+ \row
+ \o One call
+ \o Operations are to be performed on all items of a container.
+ Processing should be performed using all available cores. A common
+ example is to produce thumbnails from a list of images.
+ \o QtConcurrent provides the \l{QtConcurrent::}{map()} function for
+ applying operations on every container element,
+ \l{QtConcurrent::}{filter()} for selecting container elements, and
+ the option of specifying a reduce function for combining the
+ remaining elements.
+ \row
+ \o One call
+ \o A long running operation has to be put in another thread. During the
+ course of processing, status information should be sent to the GUI
+ thread.
+ \o Use QThread, reimplement run and emit signals as needed. Connect the
+ signals to the GUI thread's slots using queued signal/slot
+ connections.
+
+ \row
+ \o Permanent
+ \o Have an object living in another thread and let it perform different
+ tasks upon request.
+ This means communication to and from the worker thread is required.
+ \o Derive a class from QObject and implement the necessary slots and
+ signals, move the object to a thread with a running event loop and
+ communicate with the object over queued signal/slot connections.
+ \row
+ \o Permanent
+ \o Have an object living in another thread, let the object perform
+ repeated tasks such as polling a port and enable communication with
+ the GUI thread.
+ \o Same as above but also use a timer in the worker thread to implement
+ polling. However, the best solution for polling is to avoid it
+ completely. Sometimes using QSocketNotifier is an alternative.
+ \endtable
+
+
+ \section1 Qt Thread Basics
+
+ QThread is a very convenient cross platform abstraction of native platform
+ threads. Starting a thread is very simple. Let us look at a short piece of
+ code that generates another thread which says hello in that thread and then
+ exits.
+
+ \snippet examples/tutorials/threads/hellothread/hellothread.h 1
+
+ We derive a class from QThread and reimplement the \l{QThread::}{run()}
+ method.
+
+ \snippet examples/tutorials/threads/hellothread/hellothread.cpp 1
+
+ The run method contains the code that will be run in a separate thread. In
+ this example, a message containing the thread ID will be printed.
+ QThread::start() will call the method in another thread.
+
+ \snippet examples/tutorials/threads/hellothread/main.cpp 1
+
+ To start the thread, our thread object needs to be instantiated. The
+ \l{QThread::}{start()} method creates a new thread and calls the
+ reimplemented \l{QThread::}{run()} method in this new thread. Right after
+ \l{QThread::}{start()} is called, two program counters walk through the
+ program code. The main function starts with only the GUI thread running and
+ it should terminate with only the GUI thread running. Exiting the program
+ when another thread is still busy is a programming error, and therefore,
+ wait is called which blocks the calling thread until the
+ \l{QThread::}{run()} method has completed.
+
+ This is the result of running the code:
+
+ \badcode
+ hello from GUI thread 3079423696
+ hello from worker thread 3076111216
+ \endcode
+
+
+ \section2 QObject and Threads
+
+ A QObject is said to have a \e{thread affinity} or, in other words, that it
+ lives in a certain thread. This means that, at creation time, QObject saves
+ a pointer to the current thread. This information becomes relevant when an
+ event is posted with \l{QCoreApplication::}{postEvent()}. The event will be
+ put in the corresponding thread's event loop. If the thread where the
+ QObject lives doesn't have an event loop, the event will never be delivered.
+
+ To start an event loop, \l{QThread::}{exec()} must be called inside
+ \l{QThread::}{run()}. Thread affinity can be changed using
+ \l{QObject::}{moveToThread()}.
+
+ As mentioned above, developers must always be careful when calling objects'
+ methods from other threads. Thread affinity does not change this situation.
+ Qt documentation marks several methods as thread-safe.
+ \l{QCoreApplication::}{postEvent()} is a noteworthy example. A thread-safe
+ method may be called from different threads simultaneously.
+
+ In cases where there is usually no concurrent access to methods, calling
+ non-thread-safe methods of objects in other threads may work thousands
+ of times before a concurrent access occurs, causing unexpected behavior.
+ Writing test code does not entirely ensure thread correctness, but it is
+ still important.
+ On Linux, Valgrind and Helgrind can help detect threading errors.
+
+ The anatomy of QThread is quite interesting:
+
+ \list
+ \o QThread does not live in the new thread where \l{QThread::}{run()} is
+ executed. It lives in the old thread.
+ \o Most QThread methods are the thread's control interface and are meant to
+ be called from the old thread. Do not move this interface to the newly
+ created thread using \l{QObject::}{moveToThread()}; i.e., calling
+ \l{QObject::moveToThread()}{moveToThread(this)} is regarded as bad
+ practice.
+ \o \l{QThread::}{exec()} and the static methods
+ \l{QThread::}{usleep()}, \l{QThread::}{msleep()},
+ \l{QThread::}{sleep()} are meant to be called from the newly created
+ thread.
+ \o Additional members defined in the QThread subclass are
+ accessible by both threads. The developer is responsible for
+ coordinating access. A typical strategy is to set the members before
+ \l{QThread::}{start()} is called. Once the worker thread is running,
+ the main thread should not touch the additional members anymore. After
+ the worker has terminated, the main thread can access the additional
+ members again. This is a convenient strategy for passing parameters to a
+ thread before it is started as well as for collecting the result once it
+ has terminated.
+ \endlist
+
+ A QObject's parent must always be in the same thread. This has a surprising
+ consequence for objects generated within the \l{QThread::}{run()} method:
+
+ \code
+ void HelloThread::run()
+ {
+ QObject *object1 = new QObject(this); //error, parent must be in the same thread
+ QObject object2; // OK
+ QSharedPointer <QObject> object3(new QObject); // OK
+ }
+ \endcode
+
+ \section2 Using a Mutex to Protect the Integrity of Data
+
+ A mutex is an object that has \l{QMutex::}{lock()} and \l{QMutex::}{unlock()}
+ methods and remembers if it is already locked. A mutex is designed to be
+ called from multiple threads. \l{QMutex::}{lock()} returns immediately if
+ the mutex is not locked. The next call from another thread will find the
+ mutex in a locked state and then \l{QMutex::}{lock()} will block the thread
+ until the other thread calls \l{QMutex::}{unlock()}. This functionality can
+ make sure that a code section will be executed by only one thread at a time.
+
+ The following line sketches how a mutex can be used to make a method
+ thread-safe:
+
+ \code
+ void Worker::work()
+ {
+ this->mutex.lock(); // first thread can pass, other threads will be blocked here
+ doWork();
+ this->mutex.unlock();
+ }
+ \endcode
+
+ What happens if one thread does not unlock a mutex? The result can be a
+ frozen application. In the example above, an exception might be thrown and
+ \c{mutex.unlock()} will never be reached. To prevent problems like this,
+ QMutexLocker should be used.
+
+ \code
+ void Worker::work()
+ {
+ QMutexLocker locker(&mutex); // Locks the mutex and unlocks when locker exits the scope
+ doWork();
+ }
+ \endcode
+
+ This looks easy, but mutexes introduce a new class of problems: deadlocks.
+ A deadlock happens when a thread waits for a mutex to become unlocked, but
+ the mutex remains locked because the owning thread is waiting for the first
+ thread to unlock it. The result is a frozen application. Mutexes can be
+ used to make a method thread safe. Most Qt methods aren't thread safe
+ because there is always a performance penalty when using mutexes.
+
+ It isn't always possible to lock and unlock a mutex in a method. Sometimes
+ the need to lock spans several calls. For example, modifying a container
+ with an iterator requires a sequence of several calls which should not be
+ interrupted by other threads. In such a scenario, locking can be achieved
+ with a mutex that is kept outside of the object to be manipulated. With an
+ external mutex, the duration of locking can be adjusted to the needs of the
+ operation. One disadvantage is that external mutexes aid locking, but do
+ not enforce it because users of the object may forget to use it.
+
+ \section2 Using the Event Loop to Prevent Data Corruption
+
+ The event loops of Qt are a very valuable tool for inter-thread
+ communication. Every thread may have its own event loop. A safe way of
+ calling a slot in another thread is by placing that call in another
+ thread's event loop. This ensures that the target object finishes the
+ method that is currently running before another method is started.
+
+ So how is it possible to put a method invocation in an event loop? Qt has
+ two ways of doing this. One way is via queued signal-slot connections; the
+ other way is to post an event with QCoreApplication::postEvent(). A queued
+ signal-slot connection is a signal slot connection that is executed
+ asynchronously. The internal implementation is based on posted events. The
+ arguments of the signal are put into the event loop and the signal method
+ returns immediately.
+
+ The connected slot will be executed at a time which depends on what else is
+ in the event loop.
+
+ Communication via the event loop eliminates the deadlock problem we face
+ when using mutexes. This is why we recommend using the event loop rather
+ than locking an object using a mutex.
+
+ \section2 Dealing with Asynchronous Execution
+
+ One way to obtain a worker thread's result is by waiting for the thread
+ to terminate. In many cases, however, a blocking wait isn't acceptable. The
+ alternative to a blocking wait are asynchronous result deliveries with
+ either posted events or queued signals and slots. This generates a certain
+ overhead because an operation's result does not appear on the next source
+ line, but in a slot located somewhere else in the source file. Qt
+ developers are used to working with this kind of asynchronous behavior
+ because it is much similar to the kind of event-driven programming used in
+ GUI applications.
+
+ \section1 Examples
+
+ This tutorial comes with examples for Qt's three basic ways of working with
+ threads. Two more examples show how to communicate with a running thread
+ and how a QObject can be placed in another thread, providing service to the
+ main thread.
+
+ \list
+ \o Using QThread as shown \l{Qt thread basics}{above}
+ \o \l{Example 1: Using the Thread Pool}{Using the global QThreadPool}
+ \o \l{Example 2: Using QtConcurrent}{Using QtConcurrent}
+ \o \l{Example 3: Clock}{Communication with the GUI thread}
+ \o \l{Example 4: A Permanent Thread}{A permanent QObject in another thread
+ provides service to the main thread}
+ \endlist
+
+ The following examples can all be compiled and run independently. The source can
+ be found in the examples directory: examples/tutorials/threads/
+
+ \section2 Example 1: Using the Thread Pool
+
+ Creating and destroying threads frequently can be expensive. To avoid the
+ cost of thread creation, a thread pool can be used. A thread pool is a
+ place where threads can be parked and fetched. We can write the same
+ "hello thread" program as \l{Qt Thread Basics}{above} using the global
+ thread pool. We derive a class from QRunnable. The code we want to run in
+ another thread needs to be placed in the reimplemented QRunnable::run()
+ method.
+
+ \snippet examples/tutorials/threads/hellothreadpool/hellothreadpool.cpp 1
+
+ We instantiate Work in main(), locate the global thread pool and use the
+ QThreadPool::start() method. Now the thread pool runs our worker in another
+ thread. Using the thread pool has a performance advantage because threads
+ are not destroyed after they have finished running. They are kept in a pool
+ and wait to be used again later.
+
+ \section2 Example 2: Using QtConcurrent
+
+ \snippet examples/tutorials/threads/helloconcurrent/helloconcurrent.cpp 1
+
+ We write a global function hello() to implement the work. QtConcurrent::run()
+ is used to run the function in another thread. The result is a QFuture.
+ QFuture provides a method called \l{QFuture::}{waitForFinished()}, which
+ blocks until the calculation is completed. The real power of QtConcurrent
+ becomes visible when data can be made available in a container. QtConcurrent
+ provides several functions that are able to process itemized data on all
+ available cores simultaneously. The use of QtConcurrent is very similar to
+ applying an STL algorithm to an STL container.
+ \l{examples-threadandconcurrent.html}{QtConcurrent Map} is a very short and
+ clear example about how a container of images can be scaled on all available
+ cores. The image scaling example uses the blocking variants of the functions
+ used. For every blocking function there is also a non-blocking, asynchronous
+ counterpart. Getting results asynchronously is implemented with QFuture and
+ QFutureWatcher.
+
+ \section2 Example 3: Clock
+
+ \image thread_clock.png "clock"
+
+ We want to produce a clock application. The application has a GUI and a
+ worker thread. The worker thread checks every 10 milliseconds what time it
+ is. If the formatted time has changed, the result will be sent to the GUI
+ thread where it is displayed.
+
+ Of course, this is an overly complicated way of designing a clock and,
+ actually, a separate thread is unnecessary. We would be better off placing
+ the timer in the main thread because the calculation made in the timer slot
+ is very short-lived. This example is purely for instructional use and shows
+ how to communicate from a worker thread to a GUI thread. Note that
+ communication in this direction is easy. We only need to add a signal
+ to QThread and make a queued signal/slot connection to the main thread.
+ Communication from the GUI to the worker thread is shown in the next
+ example.
+
+ \snippet examples/tutorials/threads/clock/main.cpp 1
+
+ We've connected the \c clockThread with the label. The connection must be a
+ queued signal-slot connection because we want to put the call in the event
+ loop.
+
+ \snippet examples/tutorials/threads/clock/clockthread.h 1
+
+ We have derived a class from QThread and declared the \c sendTime() signal.
+
+ \snippet examples/tutorials/threads/clock/clockthread.cpp 1
+
+ The trickiest part of this example is that the timer is connected to its
+ slot via a direct connection. A default connection would produce a queued
+ signal-slot connection because the connected objects live in different
+ threads; remember that QThread does not live in the thread it creates.
+
+ Still it is safe to access ClockThread::timerHit() from the worker thread
+ because ClockThread::timerHit() is private and only touches local variables
+ and a private member that isn't touched by public methods.
+ QDateTime::currentDateTime() isn't marked as thread-safe in Qt
+ documentation, however we can get away with using it in this small
+ example because we know that the QDateTime::currentDateTime() static
+ method isn't used in any other threads.
+
+ \section2 Example 4: A Permanent Thread
+
+ This example shows how it is possible to have a QObject in a worker thread
+ that accepts requests from the GUI thread, does polling using a timer and
+ continuously reports results back to the GUI thread. The actual work
+ including the polling must be implemented in a class derived from QObject.
+ We have called this class \c WorkerObject in the code shown below. The
+ thread-specific code is hidden in a class called \c Thread, derived from
+ QThread.
+ \c Thread has two additional public members. The \c launchWorker() member
+ takes the worker object and moves it to another thread with a started event
+ loop.
+ The call blocks for a very short moment until the thread creation operation
+ is completed, allowing the worker object to be used again on the next line.
+ The \c Thread class's code is short but somewhat involved, so we only show
+ how to use the class.
+
+ \snippet examples/tutorials/threads/movedobject/main.cpp 1
+
+ QMetaObject::invokeMethod() calls a slot via the event loop. The worker
+ object's methods should not be called directly after the object has been
+ moved to another thread. We let the worker thread do some work and polling,
+ and use a timer to shut the application down after 3 seconds. Shutting the
+ worker down needs some care. We call \c{Thread::stop()} to exit the event
+ loop. We wait for the thread to terminate and, after this has occurred, we
+ delete the worker.
+
+ \section1 Digging Deeper
+
+ Threading is a very complicated subject. Qt offers more classes for
+ threading than we have presented in this tutorial. The following materials
+ can help you go into the subject in more depth:
+
+ \list
+ \o Good video tutorials about threads with Qt can be found in the material
+ from the \l{Training Day at Qt Developer Days 2009}.
+ \o The \l{Thread Support in Qt} document is a good starting point into
+ the reference documentation.
+ \o Qt comes with several additional examples for
+ \l{Threading and Concurrent Programming Examples}{QThread and QtConcurrent}.
+ \o Several good books describe how to work with Qt threads. The most
+ extensive coverage can be found in \e{Advanced Qt Programming} by Mark
+ Summerfield, Prentice Hall - roughly 70 of 500 pages cover QThread and
+ QtConcurrent.
+ \endlist
+*/
diff --git a/doc/src/corelib/threads.qdoc b/doc/src/corelib/threads.qdoc
new file mode 100644
index 0000000000..3b4def4174
--- /dev/null
+++ b/doc/src/corelib/threads.qdoc
@@ -0,0 +1,705 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:FDL$
+** GNU Free Documentation License
+** Alternatively, this file may be used under the terms of the GNU Free
+** Documentation License version 1.3 as published by the Free Software
+** Foundation and appearing in the file included in the packaging of
+** this file.
+**
+** 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$
+**
+****************************************************************************/
+
+/*!
+ \group thread
+ \title Threading Classes
+*/
+
+/*!
+ \page threads.html
+ \title Thread Support in Qt
+ \ingroup qt-basic-concepts
+ \brief A detailed discussion of thread handling in Qt.
+
+ \ingroup frameworks-technologies
+
+ \nextpage Starting Threads with QThread
+
+ Qt provides thread support in the form of platform-independent
+ threading classes, a thread-safe way of posting events, and
+ signal-slot connections across threads. This makes it easy to
+ develop portable multithreaded Qt applications and take advantage
+ of multiprocessor machines. Multithreaded programming is also a
+ useful paradigm for performing time-consuming operations without
+ freezing the user interface of an application.
+
+ Earlier versions of Qt offered an option to build the library
+ without thread support. Since Qt 4.0, threads are always enabled.
+
+ \section1 Topics:
+
+ \list
+ \o \l{Recommended Reading}
+ \o \l{The Threading Classes}
+ \o \l{Starting Threads with QThread}
+ \o \l{Synchronizing Threads}
+ \o \l{Reentrancy and Thread-Safety}
+ \o \l{Threads and QObjects}
+ \o \l{Concurrent Programming}
+ \o \l{Thread-Support in Qt Modules}
+ \endlist
+
+ \section1 Recommended Reading
+
+ This document is intended for an audience that has knowledge of,
+ and experience with, multithreaded applications. If you are new
+ to threading see our Recommended Reading list:
+
+ \list
+ \o \l{Threads Primer: A Guide to Multithreaded Programming}
+ \o \l{Thread Time: The Multithreaded Programming Guide}
+ \o \l{Pthreads Programming: A POSIX Standard for Better Multiprocessing}
+ \o \l{Win32 Multithreaded Programming}
+ \endlist
+
+ \section1 The Threading Classes
+
+ These classes are relevant to threaded applications.
+
+ \annotatedlist thread
+
+\omit
+ \list
+ \o QThread provides the means to start a new thread.
+ \o QThreadStorage provides per-thread data storage.
+ \o QThreadPool manages a pool of threads that run QRunnable objects.
+ \o QRunnable is an abstract class representing a runnable object.
+ \o QMutex provides a mutual exclusion lock, or mutex.
+ \o QMutexLocker is a convenience class that automatically locks
+ and unlocks a QMutex.
+ \o QReadWriteLock provides a lock that allows simultaneous read access.
+ \o QReadLocker and QWriteLocker are convenience classes that automatically
+ lock and unlock a QReadWriteLock.
+ \o QSemaphore provides an integer semaphore (a generalization of a mutex).
+ \o QWaitCondition provides a way for threads to go to sleep until
+ woken up by another thread.
+ \o QAtomicInt provides atomic operations on integers.
+ \o QAtomicPointer provides atomic operations on pointers.
+ \endlist
+\endomit
+
+ \note Qt's threading classes are implemented with native threading APIs;
+ e.g., Win32 and pthreads. Therefore, they can be used with threads of the
+ same native API.
+*/
+
+/*!
+ \page threads-starting.html
+ \title Starting Threads with QThread
+
+ \contentspage Thread Support in Qt
+ \nextpage Synchronizing Threads
+
+ A QThread instance represents a thread and provides the means to
+ \l{QThread::start()}{start()} a thread, which will then execute the
+ reimplementation of QThread::run(). The \c run() implementation is for a
+ thread what the \c main() entry point is for the application. All code
+ executed in a call stack that starts in the \c run() function is executed
+ by the new thread, and the thread finishes when the function returns.
+ QThread emits signals to indicate that the thread started or finished
+ executing.
+
+ \section1 Creating a Thread
+
+ To create a thread, subclass QThread and reimplement its
+ \l{QThread::run()}{run()} function. For example:
+
+ \snippet doc/src/snippets/threads/threads.h 0
+ \codeline
+ \snippet doc/src/snippets/threads/threads.cpp 0
+ \snippet doc/src/snippets/threads/threads.cpp 1
+ \dots
+ \snippet doc/src/snippets/threads/threads.cpp 2
+
+ \section1 Starting a Thread
+
+ Then, create an instance of the thread object and call
+ QThread::start(). Note that you must create the QApplication (or
+ QCoreApplication) object before you can create a QThread.
+
+ The function will return immediately and the
+ main thread will continue. The code that appears in the
+ \l{QThread::run()}{run()} reimplementation will then be executed
+ in a separate thread.
+
+ Creating threads is explained in more detail in the QThread
+ documentation.
+
+ Note that QCoreApplication::exec() must always be called from the
+ main thread (the thread that executes \c{main()}), not from a
+ QThread. In GUI applications, the main thread is also called the
+ GUI thread because it's the only thread that is allowed to
+ perform GUI-related operations.
+*/
+
+/*!
+ \page threads-synchronizing.html
+ \title Synchronizing Threads
+
+ \previouspage Starting Threads with QThread
+ \contentspage Thread Support in Qt
+ \nextpage Reentrancy and Thread-Safety
+
+ The QMutex, QReadWriteLock, QSemaphore, and QWaitCondition
+ classes provide means to synchronize threads. While the main idea
+ with threads is that they should be as concurrent as possible,
+ there are points where threads must stop and wait for other
+ threads. For example, if two threads try to access the same
+ global variable simultaneously, the results are usually
+ undefined.
+
+ QMutex provides a mutually exclusive lock, or mutex. At most one
+ thread can hold the mutex at any time. If a thread tries to
+ acquire the mutex while the mutex is already locked, the thread will
+ be put to sleep until the thread that currently holds the mutex
+ unlocks it. Mutexes are often used to protect accesses to shared
+ data (i.e., data that can be accessed from multiple threads
+ simultaneously). In the \l{Reentrancy and Thread-Safety} section
+ below, we will use it to make a class thread-safe.
+
+ QReadWriteLock is similar to QMutex, except that it distinguishes
+ between "read" and "write" access to shared data and allows
+ multiple readers to access the data simultaneously. Using
+ QReadWriteLock instead of QMutex when it is possible can make
+ multithreaded programs more concurrent.
+
+ QSemaphore is a generalization of QMutex that protects a certain
+ number of identical resources. In contrast, a mutex protects
+ exactly one resource. The \l{threads/semaphores}{Semaphores}
+ example shows a typical application of semaphores: synchronizing
+ access to a circular buffer between a producer and a consumer.
+
+ QWaitCondition allows a thread to wake up other threads when some
+ condition has been met. One or many threads can block waiting for
+ a QWaitCondition to set a condition with
+ \l{QWaitCondition::wakeOne()}{wakeOne()} or
+ \l{QWaitCondition::wakeAll()}{wakeAll()}. Use
+ \l{QWaitCondition::wakeOne()}{wakeOne()} to wake one randomly
+ selected event or \l{QWaitCondition::wakeAll()}{wakeAll()} to
+ wake them all. The \l{threads/waitconditions}{Wait Conditions}
+ example shows how to solve the producer-consumer problem using
+ QWaitCondition instead of QSemaphore.
+
+ Note that Qt's synchronization classes rely on the use of properly
+ aligned pointers. For instance, you cannot use packed classes with
+ MSVC.
+*/
+
+/*!
+ \page threads-reentrancy.html
+ \title Reentrancy and Thread-Safety
+
+ \keyword reentrant
+ \keyword thread-safe
+
+ \previouspage Synchronizing Threads
+ \contentspage Thread Support in Qt
+ \nextpage Threads and QObjects
+
+ Throughout the documentation, the terms \e{reentrant} and
+ \e{thread-safe} are used to mark classes and functions to indicate
+ how they can be used in multithread applications:
+
+ \list
+ \o A \e thread-safe function can be called simultaneously from
+ multiple threads, even when the invocations use shared data,
+ because all references to the shared data are serialized.
+ \o A \e reentrant function can also be called simultaneously from
+ multiple threads, but only if each invocation uses its own data.
+ \endlist
+
+ Hence, a \e{thread-safe} function is always \e{reentrant}, but a
+ \e{reentrant} function is not always \e{thread-safe}.
+
+ By extension, a class is said to be \e{reentrant} if its member
+ functions can be called safely from multiple threads, as long as
+ each thread uses a \e{different} instance of the class. The class
+ is \e{thread-safe} if its member functions can be called safely
+ from multiple threads, even if all the threads use the \e{same}
+ instance of the class.
+
+ \note Qt classes are only documented as \e{thread-safe} if they
+ are intended to be used by multiple threads. If a function is not
+ marked as thread-safe or reentrant, it should not be used from
+ different threads. If a class is not marked as thread-safe or
+ reentrant then a specific instance of that class should not be
+ accessed from different threads.
+
+ \section1 Reentrancy
+
+ C++ classes are often reentrant, simply because they only access
+ their own member data. Any thread can call a member function on an
+ instance of a reentrant class, as long as no other thread can call
+ a member function on the \e{same} instance of the class at the
+ same time. For example, the \c Counter class below is reentrant:
+
+ \snippet doc/src/snippets/threads/threads.cpp 3
+ \snippet doc/src/snippets/threads/threads.cpp 4
+
+ The class isn't thread-safe, because if multiple threads try to
+ modify the data member \c n, the result is undefined. This is
+ because the \c ++ and \c -- operators aren't always atomic.
+ Indeed, they usually expand to three machine instructions:
+
+ \list 1
+ \o Load the variable's value in a register.
+ \o Increment or decrement the register's value.
+ \o Store the register's value back into main memory.
+ \endlist
+
+ If thread A and thread B load the variable's old value
+ simultaneously, increment their register, and store it back, they
+ end up overwriting each other, and the variable is incremented
+ only once!
+
+ \section1 Thread-Safety
+
+ Clearly, the access must be serialized: Thread A must perform
+ steps 1, 2, 3 without interruption (atomically) before thread B
+ can perform the same steps; or vice versa. An easy way to make
+ the class thread-safe is to protect all access to the data
+ members with a QMutex:
+
+ \snippet doc/src/snippets/threads/threads.cpp 5
+ \snippet doc/src/snippets/threads/threads.cpp 6
+
+ The QMutexLocker class automatically locks the mutex in its
+ constructor and unlocks it when the destructor is invoked, at the
+ end of the function. Locking the mutex ensures that access from
+ different threads will be serialized. The \c mutex data member is
+ declared with the \c mutable qualifier because we need to lock
+ and unlock the mutex in \c value(), which is a const function.
+
+ \section1 Notes on Qt Classes
+
+ Many Qt classes are \e{reentrant}, but they are not made
+ \e{thread-safe}, because making them thread-safe would incur the
+ extra overhead of repeatedly locking and unlocking a QMutex. For
+ example, QString is reentrant but not thread-safe. You can safely
+ access \e{different} instances of QString from multiple threads
+ simultaneously, but you can't safely access the \e{same} instance
+ of QString from multiple threads simultaneously (unless you
+ protect the accesses yourself with a QMutex).
+
+ Some Qt classes and functions are thread-safe. These are mainly
+ the thread-related classes (e.g. QMutex) and fundamental functions
+ (e.g. QCoreApplication::postEvent()).
+
+ \note Terminology in the multithreading domain isn't entirely
+ standardized. POSIX uses definitions of reentrant and thread-safe
+ that are somewhat different for its C APIs. When using other
+ object-oriented C++ class libraries with Qt, be sure the
+ definitions are understood.
+*/
+
+/*!
+ \page threads-qobject.html
+ \title Threads and QObjects
+
+ \previouspage Reentrancy and Thread Safety
+ \contentspage Thread Support in Qt
+ \nextpage Concurrent Programming
+
+ QThread inherits QObject. It emits signals to indicate that the
+ thread started or finished executing, and provides a few slots as
+ well.
+
+ More interesting is that \l{QObject}s can be used in multiple
+ threads, emit signals that invoke slots in other threads, and
+ post events to objects that "live" in other threads. This is
+ possible because each thread is allowed to have its own event
+ loop.
+
+ \section1 QObject Reentrancy
+
+ QObject is reentrant. Most of its non-GUI subclasses, such as
+ QTimer, QTcpSocket, QUdpSocket and QProcess, are also
+ reentrant, making it possible to use these classes from multiple
+ threads simultaneously. Note that these classes are designed to be
+ created and used from within a single thread; creating an object
+ in one thread and calling its functions from another thread is not
+ guaranteed to work. There are three constraints to be aware of:
+
+ \list
+ \o \e{The child of a QObject must always be created in the thread
+ where the parent was created.} This implies, among other
+ things, that you should never pass the QThread object (\c
+ this) as the parent of an object created in the thread (since
+ the QThread object itself was created in another thread).
+
+ \o \e{Event driven objects may only be used in a single thread.}
+ Specifically, this applies to the \l{timers.html}{timer
+ mechanism} and the \l{QtNetwork}{network module}. For example,
+ you cannot start a timer or connect a socket in a thread that
+ is not the \l{QObject::thread()}{object's thread}.
+
+ \o \e{You must ensure that all objects created in a thread are
+ deleted before you delete the QThread.} This can be done
+ easily by creating the objects on the stack in your
+ \l{QThread::run()}{run()} implementation.
+ \endlist
+
+ Although QObject is reentrant, the GUI classes, notably QWidget
+ and all its subclasses, are not reentrant. They can only be used
+ from the main thread. As noted earlier, QCoreApplication::exec()
+ must also be called from that thread.
+
+ In practice, the impossibility of using GUI classes in other
+ threads than the main thread can easily be worked around by
+ putting time-consuming operations in a separate worker thread and
+ displaying the results on screen in the main thread when the
+ worker thread is finished. This is the approach used for
+ implementing the \l{threads/mandelbrot}{Mandelbrot} and
+ the \l{network/blockingfortuneclient}{Blocking Fortune Client}
+ example.
+
+ \section1 Per-Thread Event Loop
+
+ Each thread can have its own event loop. The initial thread
+ starts its event loops using QCoreApplication::exec(); other
+ threads can start an event loop using QThread::exec(). Like
+ QCoreApplication, QThread provides an
+ \l{QThread::exit()}{exit(int)} function and a
+ \l{QThread::quit()}{quit()} slot.
+
+ An event loop in a thread makes it possible for the thread to use
+ certain non-GUI Qt classes that require the presence of an event
+ loop (such as QTimer, QTcpSocket, and QProcess). It also makes it
+ possible to connect signals from any threads to slots of a
+ specific thread. This is explained in more detail in the
+ \l{Signals and Slots Across Threads} section below.
+
+ \image threadsandobjects.png Threads, objects, and event loops
+
+ A QObject instance is said to \e live in the thread in which it
+ is created. Events to that object are dispatched by that thread's
+ event loop. The thread in which a QObject lives is available using
+ QObject::thread().
+
+ Note that for QObjects that are created before QApplication,
+ QObject::thread() returns zero. This means that the main thread
+ will only handle posted events for these objects; other event
+ processing is not done at all for objects with no thread. Use the
+ QObject::moveToThread() function to change the thread affinity for
+ an object and its children (the object cannot be moved if it has a
+ parent).
+
+ Calling \c delete on a QObject from a thread other than the one
+ that \e owns the object (or accessing the object in other ways) is
+ unsafe, unless you guarantee that the object isn't processing
+ events at that moment. Use QObject::deleteLater() instead, and a
+ \l{QEvent::DeferredDelete}{DeferredDelete} event will be posted,
+ which the event loop of the object's thread will eventually pick
+ up. By default, the thread that \e owns a QObject is the thread
+ that \e creates the QObject, but not after QObject::moveToThread()
+ has been called.
+
+ If no event loop is running, events won't be delivered to the
+ object. For example, if you create a QTimer object in a thread but
+ never call \l{QThread::exec()}{exec()}, the QTimer will never emit
+ its \l{QTimer::timeout()}{timeout()} signal. Calling
+ \l{QObject::deleteLater()}{deleteLater()} won't work
+ either. (These restrictions apply to the main thread as well.)
+
+ You can manually post events to any object in any thread at any
+ time using the thread-safe function
+ QCoreApplication::postEvent(). The events will automatically be
+ dispatched by the event loop of the thread where the object was
+ created.
+
+ Event filters are supported in all threads, with the restriction
+ that the monitoring object must live in the same thread as the
+ monitored object. Similarly, QCoreApplication::sendEvent()
+ (unlike \l{QCoreApplication::postEvent()}{postEvent()}) can only
+ be used to dispatch events to objects living in the thread from
+ which the function is called.
+
+ \section1 Accessing QObject Subclasses from Other Threads
+
+ QObject and all of its subclasses are not thread-safe. This
+ includes the entire event delivery system. It is important to keep
+ in mind that the event loop may be delivering events to your
+ QObject subclass while you are accessing the object from another
+ thread.
+
+ If you are calling a function on an QObject subclass that doesn't
+ live in the current thread and the object might receive events,
+ you must protect all access to your QObject subclass's internal
+ data with a mutex; otherwise, you may experience crashes or other
+ undesired behavior.
+
+ Like other objects, QThread objects live in the thread where the
+ object was created -- \e not in the thread that is created when
+ QThread::run() is called. It is generally unsafe to provide slots
+ in your QThread subclass, unless you protect the member variables
+ with a mutex.
+
+ On the other hand, you can safely emit signals from your
+ QThread::run() implementation, because signal emission is
+ thread-safe.
+
+ \section1 Signals and Slots Across Threads
+
+ Qt supports these signal-slot connection types:
+
+ \list
+
+ \o \l{Qt::AutoConnection}{Auto Connection} (default) If the signal is
+ emitted in the thread which the receiving object has affinity then
+ the behavior is the same as the Direct Connection. Otherwise,
+ the behavior is the same as the Queued Connection."
+
+ \o \l{Qt::DirectConnection}{Direct Connection} The slot is invoked
+ immediately, when the signal is emitted. The slot is executed
+ in the emitter's thread, which is not necessarily the
+ receiver's thread.
+
+ \o \l{Qt::QueuedConnection}{Queued Connection} The slot is invoked
+ when control returns to the event loop of the receiver's
+ thread. The slot is executed in the receiver's thread.
+
+ \o \l{Qt::BlockingQueuedConnection}{Blocking Queued Connection}
+ The slot is invoked as for the Queued Connection, except the
+ current thread blocks until the slot returns. \note Using this
+ type to connect objects in the same thread will cause deadlock.
+
+ \o \l{Qt::UniqueConnection}{Unique Connection} The behavior is the
+ same as the Auto Connection, but the connection is made only if
+ it does not duplicate an existing connection. i.e., if the same
+ signal is already connected to the same slot for the same pair
+ of objects, then the connection is not made and connect()
+ returns false.
+
+ \endlist
+
+ The connection type can be specified by passing an additional
+ argument to \l{QObject::connect()}{connect()}. Be aware that
+ using direct connections when the sender and receiver live in
+ different threads is unsafe if an event loop is running in the
+ receiver's thread, for the same reason that calling any function
+ on an object living in another thread is unsafe.
+
+ QObject::connect() itself is thread-safe.
+
+ The \l{threads/mandelbrot}{Mandelbrot} example uses a queued
+ connection to communicate between a worker thread and the main
+ thread. To avoid freezing the main thread's event loop (and, as a
+ consequence, the application's user interface), all the
+ Mandelbrot fractal computation is done in a separate worker
+ thread. The thread emits a signal when it is done rendering the
+ fractal.
+
+ Similarly, the \l{network/blockingfortuneclient}{Blocking Fortune
+ Client} example uses a separate thread for communicating with
+ a TCP server asynchronously.
+*/
+
+/*!
+ \page threads-qtconcurrent.html
+ \title Concurrent Programming
+
+ \previouspage Threads and QObjects
+ \contentspage Thread Support in Qt
+ \nextpage Thread-Support in Qt Modules
+
+ \target qtconcurrent intro
+
+ The QtConcurrent namespace provides high-level APIs that make it
+ possible to write multi-threaded programs without using low-level
+ threading primitives such as mutexes, read-write locks, wait
+ conditions, or semaphores. Programs written with QtConcurrent
+ automatically adjust the number of threads used according to the
+ number of processor cores available. This means that applications
+ written today will continue to scale when deployed on multi-core
+ systems in the future.
+
+ QtConcurrent includes functional programming style APIs for
+ parallel list processing, including a MapReduce and FilterReduce
+ implementation for shared-memory (non-distributed) systems, and
+ classes for managing asynchronous computations in GUI
+ applications:
+
+ \list
+
+ \o QtConcurrent::map() applies a function to every item in a container,
+ modifying the items in-place.
+
+ \o QtConcurrent::mapped() is like map(), except that it returns a new
+ container with the modifications.
+
+ \o QtConcurrent::mappedReduced() is like mapped(), except that the
+ modified results are reduced or folded into a single result.
+
+ \o QtConcurrent::filter() removes all items from a container based on the
+ result of a filter function.
+
+ \o QtConcurrent::filtered() is like filter(), except that it returns a new
+ container with the filtered results.
+
+ \o QtConcurrent::filteredReduced() is like filtered(), except that the
+ filtered results are reduced or folded into a single result.
+
+ \o QtConcurrent::run() runs a function in another thread.
+
+ \o QFuture represents the result of an asynchronous computation.
+
+ \o QFutureIterator allows iterating through results available via QFuture.
+
+ \o QFutureWatcher allows monitoring a QFuture using signals-and-slots.
+
+ \o QFutureSynchronizer is a convenience class that automatically
+ synchronizes several QFutures.
+
+ \endlist
+
+ Qt Concurrent supports several STL-compatible container and iterator types,
+ but works best with Qt containers that have random-access iterators, such as
+ QList or QVector. The map and filter functions accept both containers and begin/end iterators.
+
+ STL Iterator support overview:
+
+ \table
+ \header
+ \o Iterator Type
+ \o Example classes
+ \o Support status
+ \row
+ \o Input Iterator
+ \o
+ \o Not Supported
+ \row
+ \o Output Iterator
+ \o
+ \o Not Supported
+ \row
+ \o Forward Iterator
+ \o std::slist
+ \o Supported
+ \row
+ \o Bidirectional Iterator
+ \o QLinkedList, std::list
+ \o Supported
+ \row
+ \o Random Access Iterator
+ \o QList, QVector, std::vector
+ \o Supported and Recommended
+ \endtable
+
+ Random access iterators can be faster in cases where Qt Concurrent is iterating
+ over a large number of lightweight items, since they allow skipping to any point
+ in the container. In addition, using random access iterators allows Qt Concurrent
+ to provide progress information trough QFuture::progressValue() and QFutureWatcher::
+ progressValueChanged().
+
+ The non in-place modifying functions such as mapped() and filtered() makes a
+ copy of the container when called. If you are using STL containers this copy operation
+ might take some time, in this case we recommend specifying the begin and end iterators
+ for the container instead.
+*/
+
+/*!
+ \page threads-modules.html
+ \title Thread-Support in Qt Modules
+
+ \previouspage Concurrent Programming
+ \contentspage Thread Support in Qt
+
+ \section1 Threads and the SQL Module
+
+ A connection can only be used from within the thread that created it.
+ Moving connections between threads or creating queries from a different
+ thread is not supported.
+
+ In addition, the third party libraries used by the QSqlDrivers can impose
+ further restrictions on using the SQL Module in a multithreaded program.
+ Consult the manual of your database client for more information
+
+ \section1 Painting in Threads
+
+ QPainter can be used in a thread to paint onto QImage, QPrinter, and
+ QPicture paint devices. Painting onto QPixmaps and QWidgets is \e not
+ supported. On Mac OS X the automatic progress dialog will not be
+ displayed if you are printing from outside the GUI thread.
+
+ Any number of threads can paint at any given time, however only
+ one thread at a time can paint on a given paint device. In other
+ words, two threads can paint at the same time if each paints onto
+ separate QImages, but the two threads cannot paint onto the same
+ QImage at the same time.
+
+ Note that on X11 systems without FontConfig support, Qt cannot
+ render text outside of the GUI thread. You can use the
+ QFontDatabase::supportsThreadedFontRendering() function to detect
+ whether or not font rendering can be used outside the GUI thread.
+
+ \section1 Threads and Rich Text Processing
+
+ The QTextDocument, QTextCursor, and \link richtext.html all
+ related classes\endlink are reentrant.
+
+ Note that a QTextDocument instance created in the GUI thread may
+ contain QPixmap image resources. Use QTextDocument::clone() to
+ create a copy of the document, and pass the copy to another thread for
+ further processing (such as printing).
+
+ \section1 Threads and the SVG module
+
+ The QSvgGenerator and QSvgRenderer classes in the QtSvg module
+ are reentrant.
+
+ \section1 Threads and Implicitly Shared Classes
+
+ Qt uses an optimization called \l{implicit sharing} for many of
+ its value class, notably QImage and QString. Beginning with Qt 4,
+ implicit shared classes can safely be copied across threads, like
+ any other value classes. They are fully
+ \l{Reentrancy and Thread-Safety}{reentrant}. The implicit sharing
+ is really \e implicit.
+
+ In many people's minds, implicit sharing and multithreading are
+ incompatible concepts, because of the way the reference counting
+ is typically done. Qt, however, uses atomic reference counting to
+ ensure the integrity of the shared data, avoiding potential
+ corruption of the reference counter.
+
+ Note that atomic reference counting does not guarantee
+ \l{Reentrancy and Thread-Safety}{thread-safety}. Proper locking should be used
+ when sharing an instance of an implicitly shared class between
+ threads. This is the same requirement placed on all
+ \l{Reentrancy and Thread-Safety}{reentrant} classes, shared or not. Atomic reference
+ counting does, however, guarantee that a thread working on its
+ own, local instance of an implicitly shared class is safe. We
+ recommend using \l{Signals and Slots Across Threads}{signals and
+ slots} to pass data between threads, as this can be done without
+ the need for any explicit locking.
+
+ To sum it up, implicitly shared classes in Qt 4 are really \e
+ implicitly shared. Even in multithreaded applications, you can
+ safely use them as if they were plain, non-shared, reentrant
+ value-based classes.
+*/
diff --git a/doc/src/dbus/qtdbus.qdoc b/doc/src/dbus/qtdbus.qdoc
index 37f4a40853..8039cc040b 100644
--- a/doc/src/dbus/qtdbus.qdoc
+++ b/doc/src/dbus/qtdbus.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/2dpainting.qdoc b/doc/src/examples/2dpainting.qdoc
index 2a29de30b7..d2d19b6e3b 100644
--- a/doc/src/examples/2dpainting.qdoc
+++ b/doc/src/examples/2dpainting.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/addressbook.qdoc b/doc/src/examples/addressbook.qdoc
index b188915566..02820307e6 100644
--- a/doc/src/examples/addressbook.qdoc
+++ b/doc/src/examples/addressbook.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/affine.qdoc b/doc/src/examples/affine.qdoc
index b817e8a980..df85576e84 100644
--- a/doc/src/examples/affine.qdoc
+++ b/doc/src/examples/affine.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/analogclock.qdoc b/doc/src/examples/analogclock.qdoc
index 39d60d5c68..265ca76eea 100644
--- a/doc/src/examples/analogclock.qdoc
+++ b/doc/src/examples/analogclock.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/animatedtiles.qdoc b/doc/src/examples/animatedtiles.qdoc
index 247a76c764..4fe25388cf 100644
--- a/doc/src/examples/animatedtiles.qdoc
+++ b/doc/src/examples/animatedtiles.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/appchooser.qdoc b/doc/src/examples/appchooser.qdoc
index f1c15057d4..092db7c29e 100644
--- a/doc/src/examples/appchooser.qdoc
+++ b/doc/src/examples/appchooser.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/application.qdoc b/doc/src/examples/application.qdoc
index d6c8b62a88..5c19f7f41e 100644
--- a/doc/src/examples/application.qdoc
+++ b/doc/src/examples/application.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/applicationicon.qdoc b/doc/src/examples/applicationicon.qdoc
index 3aa119c6d2..6f54ff6bfd 100644
--- a/doc/src/examples/applicationicon.qdoc
+++ b/doc/src/examples/applicationicon.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,29 +47,8 @@
\c /usr/share/icons/hicolor/64x64/apps directory
and desktop files in the \c /usr/share/applications/hildon directory.
- \section1 Creating an icon for Symbian
-
- Symbian uses Scalable Vector Graphics (SVG Tiny 1.1+) to render
- application icons in the application menu. Therefore icons could be
- created manually with a text editor, since SVG files are plain text with
- XML syntax, but usually you would use a vector graphics program that is
- able to output SVG files. Popular graphics programs such as Adobe
- Illustrator or Inkscape are able to do so.
-
- For best results, the icon should be created on a 44x44 pixel canvas.
- Otherwise the image might be scaled in unexpected ways.
-
- Once you have created your icon, make sure that it is stored according to
- the SVG-Tiny 1.1+ standard. Inkscape, for instance, is not able to save
- images that way, but there are tools that can convert general SVG files
- into the Tiny format. For instance, the svg2svgt tool that is bundled with
- Symbian 3rd and 5th editon SDKs under the folder s60tools can do this
- conversion to some extent. Another tool to convert SVG to SVG Tiny is SVG
- Pony.
-
\section1 Adding the icons to the project
- Edit the .pro file and specify the ICON variable for the symbian target.
For Maemo, we need to add that the \c .desktop and icon file should be
installed.
diff --git a/doc/src/examples/arrowpad.qdoc b/doc/src/examples/arrowpad.qdoc
index e9c62d144e..ee35aa59ae 100644
--- a/doc/src/examples/arrowpad.qdoc
+++ b/doc/src/examples/arrowpad.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/basicdrawing.qdoc b/doc/src/examples/basicdrawing.qdoc
index e45cc36154..3920811e30 100644
--- a/doc/src/examples/basicdrawing.qdoc
+++ b/doc/src/examples/basicdrawing.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/basicgraphicslayouts.qdoc b/doc/src/examples/basicgraphicslayouts.qdoc
index 730823806b..c1703c3430 100644
--- a/doc/src/examples/basicgraphicslayouts.qdoc
+++ b/doc/src/examples/basicgraphicslayouts.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/basiclayouts.qdoc b/doc/src/examples/basiclayouts.qdoc
index c96bf5c85c..8c5a36f326 100644
--- a/doc/src/examples/basiclayouts.qdoc
+++ b/doc/src/examples/basiclayouts.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/basicsortfiltermodel.qdoc b/doc/src/examples/basicsortfiltermodel.qdoc
index e3d7c51ef9..0ecf4a0629 100644
--- a/doc/src/examples/basicsortfiltermodel.qdoc
+++ b/doc/src/examples/basicsortfiltermodel.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/bearermonitor.qdoc b/doc/src/examples/bearermonitor.qdoc
index f44914919c..07c142a0e6 100644
--- a/doc/src/examples/bearermonitor.qdoc
+++ b/doc/src/examples/bearermonitor.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/blockingfortuneclient.qdoc b/doc/src/examples/blockingfortuneclient.qdoc
index f3f6f40bcd..34add534d4 100644
--- a/doc/src/examples/blockingfortuneclient.qdoc
+++ b/doc/src/examples/blockingfortuneclient.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/blurpicker.qdoc b/doc/src/examples/blurpicker.qdoc
index 6e15a92eaa..bd57acb061 100644
--- a/doc/src/examples/blurpicker.qdoc
+++ b/doc/src/examples/blurpicker.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/books.qdoc b/doc/src/examples/books.qdoc
index 294ce7850c..2b6ce1e45b 100644
--- a/doc/src/examples/books.qdoc
+++ b/doc/src/examples/books.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/borderlayout.qdoc b/doc/src/examples/borderlayout.qdoc
index a3580d6698..aaff2dda1d 100644
--- a/doc/src/examples/borderlayout.qdoc
+++ b/doc/src/examples/borderlayout.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/boxes.qdoc b/doc/src/examples/boxes.qdoc
index 8ca40afcf9..f2ca92477a 100644
--- a/doc/src/examples/boxes.qdoc
+++ b/doc/src/examples/boxes.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/broadcastreceiver.qdoc b/doc/src/examples/broadcastreceiver.qdoc
index 95b76cf181..ec8bbd7cc4 100644
--- a/doc/src/examples/broadcastreceiver.qdoc
+++ b/doc/src/examples/broadcastreceiver.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/broadcastsender.qdoc b/doc/src/examples/broadcastsender.qdoc
index 18afa73de9..91a3080712 100644
--- a/doc/src/examples/broadcastsender.qdoc
+++ b/doc/src/examples/broadcastsender.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/cachedtable.qdoc b/doc/src/examples/cachedtable.qdoc
index 090fd74bfc..d6b0aa5013 100644
--- a/doc/src/examples/cachedtable.qdoc
+++ b/doc/src/examples/cachedtable.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/calculator.qdoc b/doc/src/examples/calculator.qdoc
index 0db17caa41..eb3ccedc35 100644
--- a/doc/src/examples/calculator.qdoc
+++ b/doc/src/examples/calculator.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/calendar.qdoc b/doc/src/examples/calendar.qdoc
index a4de05b6a2..d06bed7c6f 100644
--- a/doc/src/examples/calendar.qdoc
+++ b/doc/src/examples/calendar.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/calendarwidget.qdoc b/doc/src/examples/calendarwidget.qdoc
index e8c66a2bb2..7ef99bfc65 100644
--- a/doc/src/examples/calendarwidget.qdoc
+++ b/doc/src/examples/calendarwidget.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/charactermap.qdoc b/doc/src/examples/charactermap.qdoc
index 05e0e4f516..33652118ef 100644
--- a/doc/src/examples/charactermap.qdoc
+++ b/doc/src/examples/charactermap.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/chart.qdoc b/doc/src/examples/chart.qdoc
index a42514e08f..565b1c6c7d 100644
--- a/doc/src/examples/chart.qdoc
+++ b/doc/src/examples/chart.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/chip.qdoc b/doc/src/examples/chip.qdoc
index 37a8c63c01..966c16900a 100644
--- a/doc/src/examples/chip.qdoc
+++ b/doc/src/examples/chip.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/classwizard.qdoc b/doc/src/examples/classwizard.qdoc
index b228fde411..0fad22e56a 100644
--- a/doc/src/examples/classwizard.qdoc
+++ b/doc/src/examples/classwizard.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/codecs.qdoc b/doc/src/examples/codecs.qdoc
index 44e69b6e82..e54981abb3 100644
--- a/doc/src/examples/codecs.qdoc
+++ b/doc/src/examples/codecs.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/codeeditor.qdoc b/doc/src/examples/codeeditor.qdoc
index 372842fa36..695ac5c4ce 100644
--- a/doc/src/examples/codeeditor.qdoc
+++ b/doc/src/examples/codeeditor.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/coloreditorfactory.qdoc b/doc/src/examples/coloreditorfactory.qdoc
index 461508799c..741db7e387 100644
--- a/doc/src/examples/coloreditorfactory.qdoc
+++ b/doc/src/examples/coloreditorfactory.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/combowidgetmapper.qdoc b/doc/src/examples/combowidgetmapper.qdoc
index 9019ba0901..dae95ddb26 100644
--- a/doc/src/examples/combowidgetmapper.qdoc
+++ b/doc/src/examples/combowidgetmapper.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/completer.qdoc b/doc/src/examples/completer.qdoc
index 6a8d19febe..767efe8ef1 100644
--- a/doc/src/examples/completer.qdoc
+++ b/doc/src/examples/completer.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/complexpingpong.qdoc b/doc/src/examples/complexpingpong.qdoc
index 96da41a598..0c6880826f 100644
--- a/doc/src/examples/complexpingpong.qdoc
+++ b/doc/src/examples/complexpingpong.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/composition.qdoc b/doc/src/examples/composition.qdoc
index d9cda294d6..1da41dbfef 100644
--- a/doc/src/examples/composition.qdoc
+++ b/doc/src/examples/composition.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/concentriccircles.qdoc b/doc/src/examples/concentriccircles.qdoc
index 9a33bd62ca..73b4937049 100644
--- a/doc/src/examples/concentriccircles.qdoc
+++ b/doc/src/examples/concentriccircles.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/configdialog.qdoc b/doc/src/examples/configdialog.qdoc
index 3d419ff3aa..9acea72a3b 100644
--- a/doc/src/examples/configdialog.qdoc
+++ b/doc/src/examples/configdialog.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/contiguouscache.qdoc b/doc/src/examples/contiguouscache.qdoc
index b893bd325f..02f333054e 100644
--- a/doc/src/examples/contiguouscache.qdoc
+++ b/doc/src/examples/contiguouscache.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/cube.qdoc b/doc/src/examples/cube.qdoc
index 02f6386049..3c41856254 100644
--- a/doc/src/examples/cube.qdoc
+++ b/doc/src/examples/cube.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/customcompleter.qdoc b/doc/src/examples/customcompleter.qdoc
index 8c7d23c665..b46d747e02 100644
--- a/doc/src/examples/customcompleter.qdoc
+++ b/doc/src/examples/customcompleter.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/customsortfiltermodel.qdoc b/doc/src/examples/customsortfiltermodel.qdoc
index 1e3b12b004..ac9fbb93a3 100644
--- a/doc/src/examples/customsortfiltermodel.qdoc
+++ b/doc/src/examples/customsortfiltermodel.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/customtype.qdoc b/doc/src/examples/customtype.qdoc
index fa0e3b7568..b2f86d6890 100644
--- a/doc/src/examples/customtype.qdoc
+++ b/doc/src/examples/customtype.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/customtypesending.qdoc b/doc/src/examples/customtypesending.qdoc
index 7598965652..39a1506c31 100644
--- a/doc/src/examples/customtypesending.qdoc
+++ b/doc/src/examples/customtypesending.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/dbscreen.qdoc b/doc/src/examples/dbscreen.qdoc
index 43b8926b7f..7d9cea5519 100644
--- a/doc/src/examples/dbscreen.qdoc
+++ b/doc/src/examples/dbscreen.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/dbus-chat.qdoc b/doc/src/examples/dbus-chat.qdoc
index 08d3f6af1f..5fd5661007 100644
--- a/doc/src/examples/dbus-chat.qdoc
+++ b/doc/src/examples/dbus-chat.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/deform.qdoc b/doc/src/examples/deform.qdoc
index f3d425392f..8195f90ffa 100644
--- a/doc/src/examples/deform.qdoc
+++ b/doc/src/examples/deform.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/diagramscene.qdoc b/doc/src/examples/diagramscene.qdoc
index 9cfcedbd62..9f2a8f8b76 100644
--- a/doc/src/examples/diagramscene.qdoc
+++ b/doc/src/examples/diagramscene.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/digiflip.qdoc b/doc/src/examples/digiflip.qdoc
index 10a09bef06..a82626276a 100644
--- a/doc/src/examples/digiflip.qdoc
+++ b/doc/src/examples/digiflip.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/digitalclock.qdoc b/doc/src/examples/digitalclock.qdoc
index 0a3541fbee..39d015efd1 100644
--- a/doc/src/examples/digitalclock.qdoc
+++ b/doc/src/examples/digitalclock.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/dirview.qdoc b/doc/src/examples/dirview.qdoc
index 5cc6e5bd36..329f90e697 100644
--- a/doc/src/examples/dirview.qdoc
+++ b/doc/src/examples/dirview.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/dockwidgets.qdoc b/doc/src/examples/dockwidgets.qdoc
index 4862b3a324..929aed0283 100644
--- a/doc/src/examples/dockwidgets.qdoc
+++ b/doc/src/examples/dockwidgets.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/dombookmarks.qdoc b/doc/src/examples/dombookmarks.qdoc
index 83e66f34c9..813e4333b0 100644
--- a/doc/src/examples/dombookmarks.qdoc
+++ b/doc/src/examples/dombookmarks.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/dragdroprobot.qdoc b/doc/src/examples/dragdroprobot.qdoc
index f60fdc1ff3..c6563a5286 100644
--- a/doc/src/examples/dragdroprobot.qdoc
+++ b/doc/src/examples/dragdroprobot.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/draggableicons.qdoc b/doc/src/examples/draggableicons.qdoc
index ca6fb20f4d..f69dbc4b3d 100644
--- a/doc/src/examples/draggableicons.qdoc
+++ b/doc/src/examples/draggableicons.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/draggabletext.qdoc b/doc/src/examples/draggabletext.qdoc
index edac9cf48b..d497206f8b 100644
--- a/doc/src/examples/draggabletext.qdoc
+++ b/doc/src/examples/draggabletext.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/drilldown.qdoc b/doc/src/examples/drilldown.qdoc
index 2d1ab6bb9a..1e7b8c01d6 100644
--- a/doc/src/examples/drilldown.qdoc
+++ b/doc/src/examples/drilldown.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/dropsite.qdoc b/doc/src/examples/dropsite.qdoc
index d7396919e2..024d191b74 100644
--- a/doc/src/examples/dropsite.qdoc
+++ b/doc/src/examples/dropsite.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/dynamiclayouts.qdoc b/doc/src/examples/dynamiclayouts.qdoc
index be29e94b70..318f719503 100644
--- a/doc/src/examples/dynamiclayouts.qdoc
+++ b/doc/src/examples/dynamiclayouts.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/easing.qdoc b/doc/src/examples/easing.qdoc
index f1b9bebcaf..7fb7f59531 100644
--- a/doc/src/examples/easing.qdoc
+++ b/doc/src/examples/easing.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/echoplugin.qdoc b/doc/src/examples/echoplugin.qdoc
index 3a7325b574..8481754e98 100644
--- a/doc/src/examples/echoplugin.qdoc
+++ b/doc/src/examples/echoplugin.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/editabletreemodel.qdoc b/doc/src/examples/editabletreemodel.qdoc
index a4602c1b6f..20d9efccd7 100644
--- a/doc/src/examples/editabletreemodel.qdoc
+++ b/doc/src/examples/editabletreemodel.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/elasticnodes.qdoc b/doc/src/examples/elasticnodes.qdoc
index 5b610df3e1..51a0a6048a 100644
--- a/doc/src/examples/elasticnodes.qdoc
+++ b/doc/src/examples/elasticnodes.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/elidedlabel.qdoc b/doc/src/examples/elidedlabel.qdoc
index 68369e4cbf..6833aedc13 100644
--- a/doc/src/examples/elidedlabel.qdoc
+++ b/doc/src/examples/elidedlabel.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/embeddeddialogs.qdoc b/doc/src/examples/embeddeddialogs.qdoc
index 94ef6f4d35..24b3abdb37 100644
--- a/doc/src/examples/embeddeddialogs.qdoc
+++ b/doc/src/examples/embeddeddialogs.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/eventtransitions.qdoc b/doc/src/examples/eventtransitions.qdoc
index fdfedc5c3d..eb2e10b051 100644
--- a/doc/src/examples/eventtransitions.qdoc
+++ b/doc/src/examples/eventtransitions.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/extension.qdoc b/doc/src/examples/extension.qdoc
index e7533e24cf..5a66fc668f 100644
--- a/doc/src/examples/extension.qdoc
+++ b/doc/src/examples/extension.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/factorial.qdoc b/doc/src/examples/factorial.qdoc
index ef7764b30c..3852a1e6ea 100644
--- a/doc/src/examples/factorial.qdoc
+++ b/doc/src/examples/factorial.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/fademessage.qdoc b/doc/src/examples/fademessage.qdoc
index 3661ea3d63..48f98c03ad 100644
--- a/doc/src/examples/fademessage.qdoc
+++ b/doc/src/examples/fademessage.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/fetchmore.qdoc b/doc/src/examples/fetchmore.qdoc
index cb952f5c45..a9a07af7ce 100644
--- a/doc/src/examples/fetchmore.qdoc
+++ b/doc/src/examples/fetchmore.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/findfiles.qdoc b/doc/src/examples/findfiles.qdoc
index 6e009a57a6..0b561429ce 100644
--- a/doc/src/examples/findfiles.qdoc
+++ b/doc/src/examples/findfiles.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/fingerpaint.qdoc b/doc/src/examples/fingerpaint.qdoc
index 3c9f9daf19..deda91fcac 100644
--- a/doc/src/examples/fingerpaint.qdoc
+++ b/doc/src/examples/fingerpaint.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/flickable.qdoc b/doc/src/examples/flickable.qdoc
index 773047a3c9..3a93423b71 100644
--- a/doc/src/examples/flickable.qdoc
+++ b/doc/src/examples/flickable.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/flightinfo.qdoc b/doc/src/examples/flightinfo.qdoc
index 536373684b..1ec32fc04d 100644
--- a/doc/src/examples/flightinfo.qdoc
+++ b/doc/src/examples/flightinfo.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/flowlayout.qdoc b/doc/src/examples/flowlayout.qdoc
index ac0c051b9c..eaa0f7baf0 100644
--- a/doc/src/examples/flowlayout.qdoc
+++ b/doc/src/examples/flowlayout.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/fontsampler.qdoc b/doc/src/examples/fontsampler.qdoc
index 05921089a8..8d7f0e0460 100644
--- a/doc/src/examples/fontsampler.qdoc
+++ b/doc/src/examples/fontsampler.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/fortuneclient.qdoc b/doc/src/examples/fortuneclient.qdoc
index 8582254069..f2c6fa02d9 100644
--- a/doc/src/examples/fortuneclient.qdoc
+++ b/doc/src/examples/fortuneclient.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/fortuneserver.qdoc b/doc/src/examples/fortuneserver.qdoc
index 67b0ef2946..1f6def6c20 100644
--- a/doc/src/examples/fortuneserver.qdoc
+++ b/doc/src/examples/fortuneserver.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/framebufferobject2.qdoc b/doc/src/examples/framebufferobject2.qdoc
index 6e501efee3..9be0557f16 100644
--- a/doc/src/examples/framebufferobject2.qdoc
+++ b/doc/src/examples/framebufferobject2.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/fridgemagnets.qdoc b/doc/src/examples/fridgemagnets.qdoc
index e521778278..b2bd440707 100644
--- a/doc/src/examples/fridgemagnets.qdoc
+++ b/doc/src/examples/fridgemagnets.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/frozencolumn.qdoc b/doc/src/examples/frozencolumn.qdoc
index 88f5a69662..1bb759b6fd 100644
--- a/doc/src/examples/frozencolumn.qdoc
+++ b/doc/src/examples/frozencolumn.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/googlesuggest.qdoc b/doc/src/examples/googlesuggest.qdoc
index 9e8bd4ed55..3af12456b0 100644
--- a/doc/src/examples/googlesuggest.qdoc
+++ b/doc/src/examples/googlesuggest.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/grabber.qdoc b/doc/src/examples/grabber.qdoc
index aa73931bb6..8cdd9ef1a1 100644
--- a/doc/src/examples/grabber.qdoc
+++ b/doc/src/examples/grabber.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/gradients.qdoc b/doc/src/examples/gradients.qdoc
index 9b33a5e6ec..75876fdf2c 100644
--- a/doc/src/examples/gradients.qdoc
+++ b/doc/src/examples/gradients.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/groupbox.qdoc b/doc/src/examples/groupbox.qdoc
index c0e3236c32..f2e4ec995e 100644
--- a/doc/src/examples/groupbox.qdoc
+++ b/doc/src/examples/groupbox.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/hellogl.qdoc b/doc/src/examples/hellogl.qdoc
index 08973bbe22..a0b6fc6c06 100644
--- a/doc/src/examples/hellogl.qdoc
+++ b/doc/src/examples/hellogl.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/hellogl_es.qdoc b/doc/src/examples/hellogl_es.qdoc
index b21dd2ef60..212e760542 100644
--- a/doc/src/examples/hellogl_es.qdoc
+++ b/doc/src/examples/hellogl_es.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/hellotr.qdoc b/doc/src/examples/hellotr.qdoc
index 04d6f034d7..7b47ec7b2b 100644
--- a/doc/src/examples/hellotr.qdoc
+++ b/doc/src/examples/hellotr.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/htmlinfo.qdoc b/doc/src/examples/htmlinfo.qdoc
index 6af27d27a6..0f55b4b28e 100644
--- a/doc/src/examples/htmlinfo.qdoc
+++ b/doc/src/examples/htmlinfo.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -32,14 +32,7 @@
The XML HTML Info example provides a simple command line utility that
scans the current directory for HTML files and prints statistics about
them to standard out.
-
- \note Standard out is redirected on some platforms. On Symbian using Open
- C \c stdout is by default directed to the console window, but this window
- may not always be visible. To redirect to a file instead, locate the \c
- c:\\system\\data\\config.ini file (on either the emulator or the device)
- and change \c STDOUT to point to \c MEDIA4. This will redirect the console
- to \c c:\\system\\data\\out.txt.
-
+
The files are parsed using a QXmlStreamReader object. If the file does
not contain a well-formed XML document, a description of the error is
printed to the standard error console.
diff --git a/doc/src/examples/http.qdoc b/doc/src/examples/http.qdoc
index 7c55d6f6c1..7ca474b385 100644
--- a/doc/src/examples/http.qdoc
+++ b/doc/src/examples/http.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/i18n.qdoc b/doc/src/examples/i18n.qdoc
index f379d19012..5f5d30b648 100644
--- a/doc/src/examples/i18n.qdoc
+++ b/doc/src/examples/i18n.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/icons.qdoc b/doc/src/examples/icons.qdoc
index 67a62a16f2..be7b0dd46c 100644
--- a/doc/src/examples/icons.qdoc
+++ b/doc/src/examples/icons.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/imagecomposition.qdoc b/doc/src/examples/imagecomposition.qdoc
index b0d95f3048..edefcface4 100644
--- a/doc/src/examples/imagecomposition.qdoc
+++ b/doc/src/examples/imagecomposition.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/imagegestures.qdoc b/doc/src/examples/imagegestures.qdoc
index 6834482ba2..a0dfdfdf1b 100644
--- a/doc/src/examples/imagegestures.qdoc
+++ b/doc/src/examples/imagegestures.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/imageviewer.qdoc b/doc/src/examples/imageviewer.qdoc
index ee6e9fe452..18cdccb5ed 100644
--- a/doc/src/examples/imageviewer.qdoc
+++ b/doc/src/examples/imageviewer.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/inputpanel.qdoc b/doc/src/examples/inputpanel.qdoc
deleted file mode 100644
index 3e8520d9b0..0000000000
--- a/doc/src/examples/inputpanel.qdoc
+++ /dev/null
@@ -1,224 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** GNU Free Documentation License
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file.
-**
-** 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$
-**
-****************************************************************************/
-
-/*!
- \example tools/inputpanel
- \title Input Panel Example
-
- The Input Panel example shows how to create an input panel that
- can be used to input text into widgets using only the pointer and
- no keyboard.
-
- \image inputpanel-example.png
-
- The input fields in the main window have no function other than
- to accept input. The main focus is on how the extra input panel
- can be used to input text without the need for a real keyboard or
- keypad.
-
- \section1 Main Form Class Definition
-
- Because the main window has no other function than to accept
- input, it has no class definition. Instead, its whole layout is
- made in Qt Designer. This emphasizes the point that no widget
- specific code is needed to use input panels with Qt.
-
- \section1 MyInputPanelContext Class Definition
-
- \snippet examples/tools/inputpanel/myinputpanelcontext.h 0
-
- The \c MyInputPanelContext class inherits QInputContext, which is
- Qt's base class for handling input methods.
- \c MyInputPanelContext is responsible for managing the state of
- the input panel and sending input method events to the receiving
- widgets.
-
- The \c inputPanel member is a pointer to the input panel widget
- itself; in other words, the window that will display the buttons
- used for input.
-
- The \c identifierName(), \c language(), \c isComposing() and
- \c reset() functions are there mainly to fill in the pure virtual
- functions in the base class, QInputContext, but they can be
- useful in other scenarios. The important functions and slots are
- the following:
-
- \list
- \o \c filterEvent() is where we receive events telling us to open
- or close the input panel.
- \o \c sendCharacter() is a slot which is called when we want to
- send a character to the focused widget.
- \o \c updatePosition() is used to position the input panel
- relative to the focused widget, and will be used when opening
- the input panel.
- \endlist
-
- \section1 MyInputPanelContext Class Implementation
-
- In the constructor we connect to the \c characterGenerated()
- signal of the input panel, in order to receive key presses. We'll
- see how it works in detail later on.
-
- \snippet examples/tools/inputpanel/myinputpanelcontext.cpp 0
-
- In the \c filterEvent() function, we must look for the two event
- types: \c RequestSoftwareInputPanel and \c CloseSoftwareInputPanel.
-
- \snippet examples/tools/inputpanel/myinputpanelcontext.cpp 1
-
- The first type will be sent whenever
- an input capable widget wants to ask for an input panel. Qt's
- input widgets do this automatically. If we receive that type of
- event, we call \c updatePosition() \mdash we'll see later on what it
- does \mdash then show the actual input panel widget. If we receive
- the \c CloseSoftwareInputPanel event, we do the opposite, and
- hide the input panel.
-
- \snippet examples/tools/inputpanel/myinputpanelcontext.cpp 2
-
- We implement the \c sendCharacter() function so that it sends the
- supplied character to the focused widget. All QInputContext based
- classes are always supposed to send events to the widget returned
- by QInputContext::focusWidget(). Note the QPointer guards to make
- sure that the widget does not get destroyed in between events.
-
- Also note that we chose to use key press events in this example.
- For more complex use cases with composed text it might be more
- appropriate to send QInputMethodEvent events.
-
- The \c updatePosition() function is implemented to position the
- actual input panel window directly below the focused widget.
-
- \snippet examples/tools/inputpanel/myinputpanelcontext.cpp 3
-
- It performs the positioning by obtaining the coordinates of the
- focused widget and translating them to global coordinates.
-
- \section1 MyInputPanel Class Definition
-
- The \c MyInputPanel class inherits QWidget and is used to display
- the input panel widget and its buttons.
-
- \snippet examples/tools/inputpanel/myinputpanel.h 0
-
- If we look at the member variables first, we see that there is
- \c form, which is made with Qt Designer, that contains the layout
- of buttons to click. Note that all the buttons in the layout have
- been declared with the \c NoFocus focus policy so that we can
- maintain focus on the window receiving input instead of the
- window containing buttons.
-
- The \c lastFocusedWidget is a helper variable, which also aids in
- maintaining focus.
-
- \c signalMapper is an instance of the QSignalMapper class and is
- there to help us tell which button was clicked. Since they are
- all very similar this is a better solution than creating a separate
- slot for each one.
-
- The functions that we implement in \c MyInputPanel are the
- following:
-
- \list
- \o \c event() is used to intercept and manipulate focus events,
- so we can maintain focus in the main window.
- \o \c saveFocusWidget() is a slot which will be called whenever
- focus changes, and allows us to store the newly focused widget
- in \c lastFocusedWidget, so that its focus can be restored
- if it loses it to the input panel.
- \o \c buttonClicked() is a slot which will be called by the
- \c signalMapper whenever it receives a \c clicked() signal
- from any of the buttons.
- \endlist
-
- \section1 MyInputPanel Class Implementation
-
- If we look at the constructor first, we have a lot of signals to
- connect to!
-
- We connect the QApplication::focusChanged() signal
- to the \c saveFocusWidget() signal in order to get focus updates.
- Then comes the interesting part with the signal mapper: the
- series of \c setMapping() calls sets the mapper up so that each
- signal from one of the buttons will result in a
- QSignalMapper::mapped() signal, with the given widget as a
- parameter. This allows us to do general processing of clicks.
-
- \snippet examples/tools/inputpanel/myinputpanel.cpp 0
-
- The next series of connections then connect each button's
- \c clicked() signal to the signal mapper. Finally, we create
- a connection from the \c mapped() signal to the
- \c buttonClicked() slot, where we will handle it.
-
- \snippet examples/tools/inputpanel/myinputpanel.cpp 3
-
- In the \c buttonClicked() slot, we extract the value of the
- "buttonValue" property. This is a custom property which was
- created in Qt Designer and set to the character that we wish the
- button to produce. Then we emit the \c characterGenerated()
- signal, which \c MyInputPanelContext is connected to. This will
- in turn cause it to send the input to the focused widget.
-
- In the \c saveFocusWidget() slot, we test whether the newly
- focused widget is a child of the input panel or not, using the
- QWidget::isAncestorOf() call.
-
- \snippet examples/tools/inputpanel/myinputpanel.cpp 2
-
- If it isn't, it means that the widget is outside the input panel,
- and we store a pointer to that widget for later.
-
- In the \c event() function we handle QEvent::WindowActivate
- event, which occurs if the focus switches to the input panel.
-
- \snippet examples/tools/inputpanel/myinputpanel.cpp 1
-
- Since we want avoid focus on the input panel, we immediately call
- QWidget::activateWindow() on the widget that last had focus, so
- that input into that widget can continue. We ignore any other events
- that we receive.
-
- \section1 Setting the Input Context
-
- The main function for the example is very similar to those for other
- examples. The only real difference is that it creates a
- \c MyInputPanelContext and sets it as the application-wide input
- context.
-
- \snippet examples/tools/inputpanel/main.cpp main
-
- With the input context in place, we set up and show the user interface
- made in Qt Designer before running the event loop.
-
- \section1 Further Reading
-
- This example shows a specific kind of input context that uses interaction
- with a widget to provide input for another. Qt's input context system can
- also be used to create other kinds of input methods. We recommend starting
- with the QInputContext documentation if you want to explore further.
-*/
diff --git a/doc/src/examples/interview.qdoc b/doc/src/examples/interview.qdoc
index ea50bda716..35721ccfae 100644
--- a/doc/src/examples/interview.qdoc
+++ b/doc/src/examples/interview.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/licensewizard.qdoc b/doc/src/examples/licensewizard.qdoc
index 12cc9d42a6..92e51dec3b 100644
--- a/doc/src/examples/licensewizard.qdoc
+++ b/doc/src/examples/licensewizard.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/lighting.qdoc b/doc/src/examples/lighting.qdoc
index ff9bd1f662..aafa70f38c 100644
--- a/doc/src/examples/lighting.qdoc
+++ b/doc/src/examples/lighting.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/lightmaps.qdoc b/doc/src/examples/lightmaps.qdoc
index 6f1b60d958..c713b3ae7b 100644
--- a/doc/src/examples/lightmaps.qdoc
+++ b/doc/src/examples/lightmaps.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/lineedits.qdoc b/doc/src/examples/lineedits.qdoc
index e01aea5511..f30f4aee29 100644
--- a/doc/src/examples/lineedits.qdoc
+++ b/doc/src/examples/lineedits.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/localfortuneclient.qdoc b/doc/src/examples/localfortuneclient.qdoc
index 6bce3d49c3..7f44ba9eec 100644
--- a/doc/src/examples/localfortuneclient.qdoc
+++ b/doc/src/examples/localfortuneclient.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/localfortuneserver.qdoc b/doc/src/examples/localfortuneserver.qdoc
index cd4ef0a195..934e276369 100644
--- a/doc/src/examples/localfortuneserver.qdoc
+++ b/doc/src/examples/localfortuneserver.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/loopback.qdoc b/doc/src/examples/loopback.qdoc
index aaf507c83c..5f684447ca 100644
--- a/doc/src/examples/loopback.qdoc
+++ b/doc/src/examples/loopback.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/macmainwindow.qdoc b/doc/src/examples/macmainwindow.qdoc
index bc7ba88162..c57a98a3d1 100644
--- a/doc/src/examples/macmainwindow.qdoc
+++ b/doc/src/examples/macmainwindow.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/maemovibration.qdoc b/doc/src/examples/maemovibration.qdoc
index 7c37b9d22d..855793cf75 100644
--- a/doc/src/examples/maemovibration.qdoc
+++ b/doc/src/examples/maemovibration.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/mainwindow.qdoc b/doc/src/examples/mainwindow.qdoc
index b374d65c7f..b4f6aebed1 100644
--- a/doc/src/examples/mainwindow.qdoc
+++ b/doc/src/examples/mainwindow.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/mandelbrot.qdoc b/doc/src/examples/mandelbrot.qdoc
index 37533eee29..23e51ba637 100644
--- a/doc/src/examples/mandelbrot.qdoc
+++ b/doc/src/examples/mandelbrot.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/masterdetail.qdoc b/doc/src/examples/masterdetail.qdoc
index 7dda40a347..2b9e270b03 100644
--- a/doc/src/examples/masterdetail.qdoc
+++ b/doc/src/examples/masterdetail.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/mdi.qdoc b/doc/src/examples/mdi.qdoc
index 20887b20b9..e8b1b5c9ef 100644
--- a/doc/src/examples/mdi.qdoc
+++ b/doc/src/examples/mdi.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/menus.qdoc b/doc/src/examples/menus.qdoc
index a72ea75f4f..9493602607 100644
--- a/doc/src/examples/menus.qdoc
+++ b/doc/src/examples/menus.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/mousecalibration.qdoc b/doc/src/examples/mousecalibration.qdoc
index fb7531e91b..b42d95956e 100644
--- a/doc/src/examples/mousecalibration.qdoc
+++ b/doc/src/examples/mousecalibration.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/moveblocks.qdoc b/doc/src/examples/moveblocks.qdoc
index 71205338fd..d3332be834 100644
--- a/doc/src/examples/moveblocks.qdoc
+++ b/doc/src/examples/moveblocks.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/movie.qdoc b/doc/src/examples/movie.qdoc
index 249dc60a72..7573d796c3 100644
--- a/doc/src/examples/movie.qdoc
+++ b/doc/src/examples/movie.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/multicastreceiver.qdoc b/doc/src/examples/multicastreceiver.qdoc
index 7ad6ee45b3..7e306d232c 100644
--- a/doc/src/examples/multicastreceiver.qdoc
+++ b/doc/src/examples/multicastreceiver.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/multicastsender.qdoc b/doc/src/examples/multicastsender.qdoc
index 2297cc0e9b..687f760a38 100644
--- a/doc/src/examples/multicastsender.qdoc
+++ b/doc/src/examples/multicastsender.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/multipleinheritance.qdoc b/doc/src/examples/multipleinheritance.qdoc
index 973592e71d..0921aa2fbf 100644
--- a/doc/src/examples/multipleinheritance.qdoc
+++ b/doc/src/examples/multipleinheritance.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/network-chat.qdoc b/doc/src/examples/network-chat.qdoc
index bec37e12b7..e79a521c3d 100644
--- a/doc/src/examples/network-chat.qdoc
+++ b/doc/src/examples/network-chat.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/orderform.qdoc b/doc/src/examples/orderform.qdoc
index 00caf896f6..de967ecebd 100644
--- a/doc/src/examples/orderform.qdoc
+++ b/doc/src/examples/orderform.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/orientation.qdoc b/doc/src/examples/orientation.qdoc
index ef25b6f657..89d314c48a 100644
--- a/doc/src/examples/orientation.qdoc
+++ b/doc/src/examples/orientation.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/overpainting.qdoc b/doc/src/examples/overpainting.qdoc
index b9c178b339..74f9f0a872 100644
--- a/doc/src/examples/overpainting.qdoc
+++ b/doc/src/examples/overpainting.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/padnavigator.qdoc b/doc/src/examples/padnavigator.qdoc
index 15dbc7d701..52d80adcb7 100644
--- a/doc/src/examples/padnavigator.qdoc
+++ b/doc/src/examples/padnavigator.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/painterpaths.qdoc b/doc/src/examples/painterpaths.qdoc
index e002dd5e27..868c4f5283 100644
--- a/doc/src/examples/painterpaths.qdoc
+++ b/doc/src/examples/painterpaths.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/pathstroke.qdoc b/doc/src/examples/pathstroke.qdoc
index d22ed0270b..89a0182934 100644
--- a/doc/src/examples/pathstroke.qdoc
+++ b/doc/src/examples/pathstroke.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/pbuffers.qdoc b/doc/src/examples/pbuffers.qdoc
index 7c78d21b54..d87427b56a 100644
--- a/doc/src/examples/pbuffers.qdoc
+++ b/doc/src/examples/pbuffers.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/pbuffers2.qdoc b/doc/src/examples/pbuffers2.qdoc
index 6f362a6650..f05b2dd13b 100644
--- a/doc/src/examples/pbuffers2.qdoc
+++ b/doc/src/examples/pbuffers2.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/pinchzoom.qdoc b/doc/src/examples/pinchzoom.qdoc
index d7c1a1d484..5bb55af7ae 100644
--- a/doc/src/examples/pinchzoom.qdoc
+++ b/doc/src/examples/pinchzoom.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/pingpong.qdoc b/doc/src/examples/pingpong.qdoc
index 0aacb538e7..eef6a64ceb 100644
--- a/doc/src/examples/pingpong.qdoc
+++ b/doc/src/examples/pingpong.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/pixelator.qdoc b/doc/src/examples/pixelator.qdoc
index 86507634c8..8eec198aba 100644
--- a/doc/src/examples/pixelator.qdoc
+++ b/doc/src/examples/pixelator.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/plugandpaint.qdoc b/doc/src/examples/plugandpaint.qdoc
index a23560fe66..118afa6a02 100644
--- a/doc/src/examples/plugandpaint.qdoc
+++ b/doc/src/examples/plugandpaint.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/querymodel.qdoc b/doc/src/examples/querymodel.qdoc
index dc5273b314..88ac0d7297 100644
--- a/doc/src/examples/querymodel.qdoc
+++ b/doc/src/examples/querymodel.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/queuedcustomtype.qdoc b/doc/src/examples/queuedcustomtype.qdoc
index a377177945..2d5384a9e2 100644
--- a/doc/src/examples/queuedcustomtype.qdoc
+++ b/doc/src/examples/queuedcustomtype.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/raycasting.qdoc b/doc/src/examples/raycasting.qdoc
index a5e34f58d4..1fd0f86e6b 100644
--- a/doc/src/examples/raycasting.qdoc
+++ b/doc/src/examples/raycasting.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/recentfiles.qdoc b/doc/src/examples/recentfiles.qdoc
index 5c2cc1922c..e2e876b088 100644
--- a/doc/src/examples/recentfiles.qdoc
+++ b/doc/src/examples/recentfiles.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/regexp.qdoc b/doc/src/examples/regexp.qdoc
index bbac541da9..5635a6fe7e 100644
--- a/doc/src/examples/regexp.qdoc
+++ b/doc/src/examples/regexp.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/relationaltablemodel.qdoc b/doc/src/examples/relationaltablemodel.qdoc
index cb4899dad2..b1b9492a23 100644
--- a/doc/src/examples/relationaltablemodel.qdoc
+++ b/doc/src/examples/relationaltablemodel.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/rogue.qdoc b/doc/src/examples/rogue.qdoc
index c13fff32cd..38c871c7db 100644
--- a/doc/src/examples/rogue.qdoc
+++ b/doc/src/examples/rogue.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/rsslisting.qdoc b/doc/src/examples/rsslisting.qdoc
index 5528c90da0..f4169aaf44 100644
--- a/doc/src/examples/rsslisting.qdoc
+++ b/doc/src/examples/rsslisting.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/samplebuffers.qdoc b/doc/src/examples/samplebuffers.qdoc
index bc2cb6cdd4..3b3c0c564b 100644
--- a/doc/src/examples/samplebuffers.qdoc
+++ b/doc/src/examples/samplebuffers.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/saxbookmarks.qdoc b/doc/src/examples/saxbookmarks.qdoc
index 226041128f..f41ce5c363 100644
--- a/doc/src/examples/saxbookmarks.qdoc
+++ b/doc/src/examples/saxbookmarks.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/screenshot.qdoc b/doc/src/examples/screenshot.qdoc
index 7ccee8fbc0..e99fe6cc19 100644
--- a/doc/src/examples/screenshot.qdoc
+++ b/doc/src/examples/screenshot.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/scribble.qdoc b/doc/src/examples/scribble.qdoc
index 3d6a8b18dc..d9386843a5 100644
--- a/doc/src/examples/scribble.qdoc
+++ b/doc/src/examples/scribble.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/sdi.qdoc b/doc/src/examples/sdi.qdoc
index 45c306e477..b686888797 100644
--- a/doc/src/examples/sdi.qdoc
+++ b/doc/src/examples/sdi.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/securesocketclient.qdoc b/doc/src/examples/securesocketclient.qdoc
index 5e8681a3b8..11d9aaefcc 100644
--- a/doc/src/examples/securesocketclient.qdoc
+++ b/doc/src/examples/securesocketclient.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/semaphores.qdoc b/doc/src/examples/semaphores.qdoc
index 5bb6822f6a..853db9b146 100644
--- a/doc/src/examples/semaphores.qdoc
+++ b/doc/src/examples/semaphores.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/settingseditor.qdoc b/doc/src/examples/settingseditor.qdoc
index 72b7ca7ab0..e10df5e2ef 100644
--- a/doc/src/examples/settingseditor.qdoc
+++ b/doc/src/examples/settingseditor.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/shapedclock.qdoc b/doc/src/examples/shapedclock.qdoc
index 23ff4027fa..9301470c60 100644
--- a/doc/src/examples/shapedclock.qdoc
+++ b/doc/src/examples/shapedclock.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/sharedmemory.qdoc b/doc/src/examples/sharedmemory.qdoc
index 4b80c68ca9..61d0e1bc72 100644
--- a/doc/src/examples/sharedmemory.qdoc
+++ b/doc/src/examples/sharedmemory.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/simpledecoration.qdoc b/doc/src/examples/simpledecoration.qdoc
index 9f8be4a1b2..81ebd7ab95 100644
--- a/doc/src/examples/simpledecoration.qdoc
+++ b/doc/src/examples/simpledecoration.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/simpledommodel.qdoc b/doc/src/examples/simpledommodel.qdoc
index 2a671e6d9d..b49750d5a5 100644
--- a/doc/src/examples/simpledommodel.qdoc
+++ b/doc/src/examples/simpledommodel.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/simpletreemodel.qdoc b/doc/src/examples/simpletreemodel.qdoc
index 9f10177b55..36e0632eb2 100644
--- a/doc/src/examples/simpletreemodel.qdoc
+++ b/doc/src/examples/simpletreemodel.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/simplewidgetmapper.qdoc b/doc/src/examples/simplewidgetmapper.qdoc
index aa41ec2161..02d719ba81 100644
--- a/doc/src/examples/simplewidgetmapper.qdoc
+++ b/doc/src/examples/simplewidgetmapper.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/sipdialog.qdoc b/doc/src/examples/sipdialog.qdoc
index 65dfe6bde5..2b51af4fdc 100644
--- a/doc/src/examples/sipdialog.qdoc
+++ b/doc/src/examples/sipdialog.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/sliders.qdoc b/doc/src/examples/sliders.qdoc
index 619d87a433..e71986bfc9 100644
--- a/doc/src/examples/sliders.qdoc
+++ b/doc/src/examples/sliders.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/spinboxdelegate.qdoc b/doc/src/examples/spinboxdelegate.qdoc
index 3f7de678a5..b36176b042 100644
--- a/doc/src/examples/spinboxdelegate.qdoc
+++ b/doc/src/examples/spinboxdelegate.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,10 +55,14 @@
create an editor widget, display it at the correct location in a view,
and communicate with a model. Custom delegates can also provide their
own painting code by reimplementing the \c paintEvent() function.
+ Furthermore it is also possible to reuse (and avoid deleting) the editor
+ widget by reimplementing the \a destroyEditor() function. A reused widget
+ could be a mutable member created in the constructor and deleted in
+ the destructor.
\section1 SpinBoxDelegate Class Implementation
- Since the delegate is stateless, the constructor only needs to
+ Delegates are often stateless. The constructor only needs to
call the base class's constructor with the parent QObject as its
argument:
diff --git a/doc/src/examples/spinboxes.qdoc b/doc/src/examples/spinboxes.qdoc
index 7c52f05f73..fb09b2616d 100644
--- a/doc/src/examples/spinboxes.qdoc
+++ b/doc/src/examples/spinboxes.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/spreadsheet.qdoc b/doc/src/examples/spreadsheet.qdoc
index c8648ec8ad..7364f022cb 100644
--- a/doc/src/examples/spreadsheet.qdoc
+++ b/doc/src/examples/spreadsheet.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/sqlbrowser.qdoc b/doc/src/examples/sqlbrowser.qdoc
index 57d8f94c8b..81cf2d049d 100644
--- a/doc/src/examples/sqlbrowser.qdoc
+++ b/doc/src/examples/sqlbrowser.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/sqlwidgetmapper.qdoc b/doc/src/examples/sqlwidgetmapper.qdoc
index 40bf540532..b9ea28849e 100644
--- a/doc/src/examples/sqlwidgetmapper.qdoc
+++ b/doc/src/examples/sqlwidgetmapper.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/standarddialogs.qdoc b/doc/src/examples/standarddialogs.qdoc
index 83d9acbc26..b56642b6ec 100644
--- a/doc/src/examples/standarddialogs.qdoc
+++ b/doc/src/examples/standarddialogs.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/stardelegate.qdoc b/doc/src/examples/stardelegate.qdoc
index 3bb80b440b..01507eaf82 100644
--- a/doc/src/examples/stardelegate.qdoc
+++ b/doc/src/examples/stardelegate.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/states.qdoc b/doc/src/examples/states.qdoc
index 6a0f5adc56..52eda087f1 100644
--- a/doc/src/examples/states.qdoc
+++ b/doc/src/examples/states.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/stickman.qdoc b/doc/src/examples/stickman.qdoc
index cce3bf2e53..518dd1182c 100644
--- a/doc/src/examples/stickman.qdoc
+++ b/doc/src/examples/stickman.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/styleexample.qdoc b/doc/src/examples/styleexample.qdoc
index 9a48517d80..3022c4404b 100644
--- a/doc/src/examples/styleexample.qdoc
+++ b/doc/src/examples/styleexample.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/styleplugin.qdoc b/doc/src/examples/styleplugin.qdoc
index d4bb5e2c41..d4c587fc42 100644
--- a/doc/src/examples/styleplugin.qdoc
+++ b/doc/src/examples/styleplugin.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/styles.qdoc b/doc/src/examples/styles.qdoc
index c880c180fd..91fd1d54d7 100644
--- a/doc/src/examples/styles.qdoc
+++ b/doc/src/examples/styles.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/stylesheet.qdoc b/doc/src/examples/stylesheet.qdoc
index 3af2ae45c1..af45411f8c 100644
--- a/doc/src/examples/stylesheet.qdoc
+++ b/doc/src/examples/stylesheet.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/sub-attaq.qdoc b/doc/src/examples/sub-attaq.qdoc
index b2b64da78e..ae00eb0926 100644
--- a/doc/src/examples/sub-attaq.qdoc
+++ b/doc/src/examples/sub-attaq.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/svgalib.qdoc b/doc/src/examples/svgalib.qdoc
index 004ed920c2..cac14a7469 100644
--- a/doc/src/examples/svgalib.qdoc
+++ b/doc/src/examples/svgalib.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/symbianvibration.qdoc b/doc/src/examples/symbianvibration.qdoc
deleted file mode 100644
index 0ff9a6731b..0000000000
--- a/doc/src/examples/symbianvibration.qdoc
+++ /dev/null
@@ -1,192 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the documentation of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:FDL$
-** GNU Free Documentation License
-** Alternatively, this file may be used under the terms of the GNU Free
-** Documentation License version 1.3 as published by the Free Software
-** Foundation and appearing in the file included in the packaging of
-** this file.
-**
-** 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$
-**
-****************************************************************************/
-
-/*! \example widgets/symbianvibration
- \group all-examples
- \title Symbian Vibration Example
-
- The Symbian Vibrator example shows how to get fine-grained vibration
- control on Symbian devices.
-
- Native Symbian APIs have to be used to enable vibration, since QtMobility
- doesn't provide an interface for it yet. It is, however, planned to be
- included in a future release. In anticipation for that, we make use of the
- \c XQVibra class that was a part of the Mobile Extensions Technology Preview
- API for Qt for Symbian. The pre-compiled libraries are no longer compatible
- with Qt 4.6, but we can include the source code itself with the project.
-
- \image symbianvibration-example.png Screenshot of the Symbian Vibration example
-
- The example application divides the window into rectangles, which can be
- pressed to make the device vibrate. Pressing different rectangles make the
- device vibrate with different intensities. Each rectangle has a different
- color and its intensity number is drawn on top of it. Moving the cursor
- from one rectangle to another changes the vibration intensity to that of
- the new one. Vibration stops when the mouse button has been released. It
- is also possible to launch a short burst of vibration through the menu.
-
- The example consists of four classes:
-
- \list
- \o \c XQVibra is the vibration interface class taken from the Mobile
- Extensions for Qt for Symbian.
-
- \o \c XQVibraPrivate is the Symbian specific private implementation of the
- vibration implementation.
-
- \o \c VibrationSurface is a custom widget that uses a XQVibra instance to
- vibrate the device depending on where the user presses.
-
- \o \c MainWindow inherits from QMainWindow and contains a \c VibrationSurface
- as its central widget, and also has a menu from which it is possible to
- make the phone vibrate.
- \endlist
-
- \section1 XQVibra Class Definition
-
- The \c XQVibra class uses the pimpl-idiom to hide the platform specific
- implementation behind a common interface. Technically it would be possible
- to support more target platforms, with only the addition of a private
- implementation. The rest of the code would work the same, since only the
- common interface is used.
-
- \snippet examples/widgets/symbianvibration/xqvibra.h 0
-
- \c XQVibra provides a very simple interface for us to use. The interesting
- part are the three slots \c start(), \c stop() and \c setIntensity(). Calling the start
- method initiates vibration for the specified duration. Calling it while the
- device is already vibrating causes it to stop the current one and start the
- new one, even if the intensities are the same. The \c setIntensity() method
- should be called before starting vibration.
-
-
- \section1 VibrationSurface Class Definition
-
- \c VibrationSurface inherits from QWidget and acts like a controller for a
- \c XQVibra object. It responds to mouse events and performs custom painting.
-
- \snippet examples/widgets/symbianvibration/vibrationsurface.h 0
-
- The virtual event methods are reimplemented from QWidget. As can be seen,
- there is no public programmable interface beyond what QWidget provides.
-
-
- \section1 VibrationSurface Class Implementation
-
- Mouse events control the intensity of the vibration.
-
- \snippet examples/widgets/symbianvibration/vibrationsurface.cpp 0
- \codeline
- \snippet examples/widgets/symbianvibration/vibrationsurface.cpp 1
- \codeline
- \snippet examples/widgets/symbianvibration/vibrationsurface.cpp 2
-
- Presses starts the vibration, movement changes the intensity and releases
- stops the vibration. To set the right amount of vibration, the private
- method \c applyIntensity() is used. It sets the vibration intensity according to
- which rectangle the mouse currently resides in.
-
- \snippet examples/widgets/symbianvibration/vibrationsurface.cpp 3
-
- We make sure only to change the intensity if it is different than last
- time, so that the vibrator isn't stopped and restarted unnecessarily.
-
- The range of vibration intensity ranges from 0 to XQVibra::MaxIntensity. We
- divide this range into a set of levels. The number of levels and the intensity
- increase for each level are stored in two constants.
-
- \snippet examples/widgets/symbianvibration/vibrationsurface.cpp 4
-
- Each rectangle has an intensity of one \c IntensityPerLevel more than the
- previous one.
-
- \snippet examples/widgets/symbianvibration/vibrationsurface.cpp 5
-
- The rectangles are either put in a row, if the widget's width is greater
- than its height (landscape), otherwise they are put in a column (portrait).
- Each rectangle's size is thus dependent on the length of the width or the
- height of the widget, whichever is longer. The length is then divided by
- the number of levels, which gets us either the height or the width of each
- rectangle. The dx and dy specify the distance from one rectangle to the
- next, which is the same as either the width or height of the rectangle.
-
- \snippet examples/widgets/symbianvibration/vibrationsurface.cpp 6
-
- For each level of intensity, we draw a rectangle with increasing
- brightness. On top of the rectangle a text label is drawn, specifying the
- intesity of this level. We use the rectangle rect as a template for
- drawing, and move it down or right at each iteration.
-
- The intensity is calculated by dividing the greater of the width and height
- into \c NumberOfLevels slices.
-
- \snippet examples/widgets/symbianvibration/vibrationsurface.cpp 7
-
- In case the widget's geometry is too small to fit all the levels, the user
- interface will not work. For simplicity, we just return 0.
-
- When we know the axis along which the rectangles lie, we can find the one
- in which the mouse cursor lie.
-
- \snippet examples/widgets/symbianvibration/vibrationsurface.cpp 8
-
- The final clamp of the intensity value at the end is necessary in case the
- mouse coordinate lies outside the widget's geometry.
-
-
- \section1 MainWindow Class Definition
-
- Here's the definition of the \c MainWindow class:
-
- \snippet examples/widgets/symbianvibration/mainwindow.h 0
-
- \c MainWindow is a top level window that uses a \c XQVibra and a
- \c VibrationSurface. It also adds a menu option to the menu bar which can
- start a short vibration.
-
- \section1 MainWindow Class Implementation
-
- In the \c MainWindow constructor the \c XQVibra and the \c VibrationSurface
- are created. An action is added to the menu and is connected to the vibrate
- slot.
-
- \snippet examples/widgets/symbianvibration/mainwindow.cpp 0
-
- The \c vibrate() slot offers a way to invoke the vibration in case no
- mouse is present on the device.
-
- \snippet examples/widgets/symbianvibration/mainwindow.cpp 1
-
- \section1 Symbian Vibration Library
-
- The \c XQVibra class requires a platform library to be included. It is
- included in the \c .pro file for the symbian target.
-
- \quotefromfile examples/widgets/symbianvibration/symbianvibration.pro
- \skipto /^symbian \{/
- \printuntil /^\}/
-*/
diff --git a/doc/src/examples/syntaxhighlighter.qdoc b/doc/src/examples/syntaxhighlighter.qdoc
index c6c81ade77..d86719ab19 100644
--- a/doc/src/examples/syntaxhighlighter.qdoc
+++ b/doc/src/examples/syntaxhighlighter.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/tabdialog.qdoc b/doc/src/examples/tabdialog.qdoc
index ef4ee624ae..ff05d9b419 100644
--- a/doc/src/examples/tabdialog.qdoc
+++ b/doc/src/examples/tabdialog.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/tablemodel.qdoc b/doc/src/examples/tablemodel.qdoc
index bd074dc079..c0b0d596b5 100644
--- a/doc/src/examples/tablemodel.qdoc
+++ b/doc/src/examples/tablemodel.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/tablet.qdoc b/doc/src/examples/tablet.qdoc
index b2be39c69b..249b593e9b 100644
--- a/doc/src/examples/tablet.qdoc
+++ b/doc/src/examples/tablet.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/tetrix.qdoc b/doc/src/examples/tetrix.qdoc
index b4fd5cf2eb..1eb92a2a4a 100644
--- a/doc/src/examples/tetrix.qdoc
+++ b/doc/src/examples/tetrix.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/textedit.qdoc b/doc/src/examples/textedit.qdoc
index 1e202c4888..1bb596eb6e 100644
--- a/doc/src/examples/textedit.qdoc
+++ b/doc/src/examples/textedit.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/textfinder.qdoc b/doc/src/examples/textfinder.qdoc
index ff31ed8fcd..17c52c2208 100644
--- a/doc/src/examples/textfinder.qdoc
+++ b/doc/src/examples/textfinder.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/textures.qdoc b/doc/src/examples/textures.qdoc
index 6891f57fcc..79e664b305 100644
--- a/doc/src/examples/textures.qdoc
+++ b/doc/src/examples/textures.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/threadedfortuneserver.qdoc b/doc/src/examples/threadedfortuneserver.qdoc
index 3ee5e0cdd4..6b84be85c8 100644
--- a/doc/src/examples/threadedfortuneserver.qdoc
+++ b/doc/src/examples/threadedfortuneserver.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/tooltips.qdoc b/doc/src/examples/tooltips.qdoc
index 81343fbfe0..d506268bd8 100644
--- a/doc/src/examples/tooltips.qdoc
+++ b/doc/src/examples/tooltips.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/torrent.qdoc b/doc/src/examples/torrent.qdoc
index 9682c2f7e9..9e9750e842 100644
--- a/doc/src/examples/torrent.qdoc
+++ b/doc/src/examples/torrent.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/trafficlight.qdoc b/doc/src/examples/trafficlight.qdoc
index 7d62e07271..df0ffdeab7 100644
--- a/doc/src/examples/trafficlight.qdoc
+++ b/doc/src/examples/trafficlight.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/transformations.qdoc b/doc/src/examples/transformations.qdoc
index 7117e207db..9a23c6c8e6 100644
--- a/doc/src/examples/transformations.qdoc
+++ b/doc/src/examples/transformations.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/treemodelcompleter.qdoc b/doc/src/examples/treemodelcompleter.qdoc
index b4242a9985..027f60d65e 100644
--- a/doc/src/examples/treemodelcompleter.qdoc
+++ b/doc/src/examples/treemodelcompleter.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/trivialwizard.qdoc b/doc/src/examples/trivialwizard.qdoc
index bf8e0c58b7..5835b63995 100644
--- a/doc/src/examples/trivialwizard.qdoc
+++ b/doc/src/examples/trivialwizard.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/trollprint.qdoc b/doc/src/examples/trollprint.qdoc
index 1532170699..4127348b39 100644
--- a/doc/src/examples/trollprint.qdoc
+++ b/doc/src/examples/trollprint.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/twowaybutton.qdoc b/doc/src/examples/twowaybutton.qdoc
index dd5c4a9da8..b0c0c4910d 100644
--- a/doc/src/examples/twowaybutton.qdoc
+++ b/doc/src/examples/twowaybutton.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/undo.qdoc b/doc/src/examples/undo.qdoc
index 75c3fb86f8..7afa011077 100644
--- a/doc/src/examples/undo.qdoc
+++ b/doc/src/examples/undo.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/undoframework.qdoc b/doc/src/examples/undoframework.qdoc
index 98c218bc5c..36e43f2ed8 100644
--- a/doc/src/examples/undoframework.qdoc
+++ b/doc/src/examples/undoframework.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/waitconditions.qdoc b/doc/src/examples/waitconditions.qdoc
index 35230689e7..0489f8f7cd 100644
--- a/doc/src/examples/waitconditions.qdoc
+++ b/doc/src/examples/waitconditions.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/wiggly.qdoc b/doc/src/examples/wiggly.qdoc
index dcdcbb1893..739f14d623 100644
--- a/doc/src/examples/wiggly.qdoc
+++ b/doc/src/examples/wiggly.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/windowflags.qdoc b/doc/src/examples/windowflags.qdoc
index c625b583d8..e39e4eddc7 100644
--- a/doc/src/examples/windowflags.qdoc
+++ b/doc/src/examples/windowflags.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/examples/xmlstreamlint.qdoc b/doc/src/examples/xmlstreamlint.qdoc
index 261667e6b2..7705c80969 100644
--- a/doc/src/examples/xmlstreamlint.qdoc
+++ b/doc/src/examples/xmlstreamlint.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/gui/coordsys.qdoc b/doc/src/gui/coordsys.qdoc
index 5c953d5979..ae1506ddd8 100644
--- a/doc/src/gui/coordsys.qdoc
+++ b/doc/src/gui/coordsys.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/gui/paintsystem.qdoc b/doc/src/gui/paintsystem.qdoc
index 8fa771c965..f9670ff5d8 100644
--- a/doc/src/gui/paintsystem.qdoc
+++ b/doc/src/gui/paintsystem.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/gui/qtgui.qdoc b/doc/src/gui/qtgui.qdoc
index a745575eba..bffe07889a 100644
--- a/doc/src/gui/qtgui.qdoc
+++ b/doc/src/gui/qtgui.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/images/symbianvibration-example.png b/doc/src/images/symbianvibration-example.png
deleted file mode 100644
index 21461b6a19..0000000000
--- a/doc/src/images/symbianvibration-example.png
+++ /dev/null
Binary files differ
diff --git a/doc/src/network/files-and-resources/datastreamformat.qdoc b/doc/src/network/files-and-resources/datastreamformat.qdoc
index 826fc523e0..97cadac93e 100644
--- a/doc/src/network/files-and-resources/datastreamformat.qdoc
+++ b/doc/src/network/files-and-resources/datastreamformat.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/network/files-and-resources/resources.qdoc b/doc/src/network/files-and-resources/resources.qdoc
index 8ca19f3703..847f086bee 100644
--- a/doc/src/network/files-and-resources/resources.qdoc
+++ b/doc/src/network/files-and-resources/resources.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/network/network-programming/bearermanagement.qdoc b/doc/src/network/network-programming/bearermanagement.qdoc
index 9578a716d2..bcedc85a59 100644
--- a/doc/src/network/network-programming/bearermanagement.qdoc
+++ b/doc/src/network/network-programming/bearermanagement.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -246,7 +246,10 @@ determining the feature support:
\o Backend capabilities
\row
\o Linux\unicode{0xAE}
- \o Linux uses the \l {http://projects.gnome.org/NetworkManager}{NetworkManager API} which supports interface notifications and starting and stopping of network interfaces.
+ \o Linux uses the \l {http://projects.gnome.org/NetworkManager}{NetworkManager}
+ and \l {http://connman.net/}{ConnMan} / \l {http://ofono.org/}{oFono} APIs
+ which support interface notifications and starting and stopping of network
+ interfaces.
\row
\o Windows\unicode{0xAE} XP
\o This platform supports interface notifications without active polling.
@@ -254,12 +257,6 @@ determining the feature support:
\o Windows XP SP2+Hotfixes, Windows XP SP3, Windows Vista, Windows 7
\o In addition to standard Windows XP wifi access point monitoring has been improved which includes the ability to start and stop wifi interfaces. This requires Windows to manage the wifi interfaces.
\row
- \o Symbian\unicode{0xAE} Platform & S60 3.1
- \o Symbian support is based on Symbian platforms RConnection. In addition to interface notifications, starting and stopping of network it provides system wide session support and direct connection routing.
- \row
- \o Symbian Platform & S60 3.2+
- \o This platform enjoys the most comprehensive feature set. In addition to the features support by the S60 3.1 Network roaming is supported.
- \row
\o Mac OS\unicode{0xAE}
\o This platform has full support by way of CoreWLAN offered in Mac OS 10.6. Previous
versions of Mac OS - 10.5 and 10.4 have limited support.
diff --git a/doc/src/network/network-programming/qtnetwork.qdoc b/doc/src/network/network-programming/qtnetwork.qdoc
index 122aa5784b..0701b04f6f 100644
--- a/doc/src/network/network-programming/qtnetwork.qdoc
+++ b/doc/src/network/network-programming/qtnetwork.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/network/network-programming/ssl.qdoc b/doc/src/network/network-programming/ssl.qdoc
index 3b483b9924..21828d7af9 100644
--- a/doc/src/network/network-programming/ssl.qdoc
+++ b/doc/src/network/network-programming/ssl.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/network/qtnetwork.qdoc b/doc/src/network/qtnetwork.qdoc
index 2bfe8cb68e..bd88f797c1 100644
--- a/doc/src/network/qtnetwork.qdoc
+++ b/doc/src/network/qtnetwork.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/printsupport/printing.qdoc b/doc/src/printsupport/printing.qdoc
index 1dfa03db94..5277d1c547 100644
--- a/doc/src/printsupport/printing.qdoc
+++ b/doc/src/printsupport/printing.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/printsupport/qtprintsupport.qdoc b/doc/src/printsupport/qtprintsupport.qdoc
index 4119e3cb4b..7eea8203aa 100644
--- a/doc/src/printsupport/qtprintsupport.qdoc
+++ b/doc/src/printsupport/qtprintsupport.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/brush/brush.cpp b/doc/src/snippets/brush/brush.cpp
index 19466ae89f..a92223ee93 100644
--- a/doc/src/snippets/brush/brush.cpp
+++ b/doc/src/snippets/brush/brush.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/brush/gradientcreationsnippet.cpp b/doc/src/snippets/brush/gradientcreationsnippet.cpp
index 9ac8518b06..9ec8c3f07a 100644
--- a/doc/src/snippets/brush/gradientcreationsnippet.cpp
+++ b/doc/src/snippets/brush/gradientcreationsnippet.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/buffer/buffer.cpp b/doc/src/snippets/buffer/buffer.cpp
index 535db295d2..681fb56791 100644
--- a/doc/src/snippets/buffer/buffer.cpp
+++ b/doc/src/snippets/buffer/buffer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_containers.cpp b/doc/src/snippets/code/doc_src_containers.cpp
index 2035a06b1d..c74b0f79dc 100644
--- a/doc/src/snippets/code/doc_src_containers.cpp
+++ b/doc/src/snippets/code/doc_src_containers.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_coordsys.cpp b/doc/src/snippets/code/doc_src_coordsys.cpp
index a79af2f9ac..b677d28a50 100644
--- a/doc/src/snippets/code/doc_src_coordsys.cpp
+++ b/doc/src/snippets/code/doc_src_coordsys.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_examples_application.qdoc b/doc/src/snippets/code/doc_src_examples_application.qdoc
index c124bb3c3a..920a096ad2 100644
--- a/doc/src/snippets/code/doc_src_examples_application.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_application.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_examples_arrowpad.cpp b/doc/src/snippets/code/doc_src_examples_arrowpad.cpp
index 1301664697..bdc219cae7 100644
--- a/doc/src/snippets/code/doc_src_examples_arrowpad.cpp
+++ b/doc/src/snippets/code/doc_src_examples_arrowpad.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_examples_arrowpad.qdoc b/doc/src/snippets/code/doc_src_examples_arrowpad.qdoc
index 972ad53ece..51fe74f370 100644
--- a/doc/src/snippets/code/doc_src_examples_arrowpad.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_arrowpad.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_examples_dropsite.qdoc b/doc/src/snippets/code/doc_src_examples_dropsite.qdoc
index 478febaed4..ee9e44e564 100644
--- a/doc/src/snippets/code/doc_src_examples_dropsite.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_dropsite.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_examples_editabletreemodel.cpp b/doc/src/snippets/code/doc_src_examples_editabletreemodel.cpp
index 1f9d853a88..9a92be2d35 100644
--- a/doc/src/snippets/code/doc_src_examples_editabletreemodel.cpp
+++ b/doc/src/snippets/code/doc_src_examples_editabletreemodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_examples_hellotr.qdoc b/doc/src/snippets/code/doc_src_examples_hellotr.qdoc
index 1373d4d8d3..efbc176f36 100644
--- a/doc/src/snippets/code/doc_src_examples_hellotr.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_hellotr.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_examples_icons.cpp b/doc/src/snippets/code/doc_src_examples_icons.cpp
index 91f028e4af..4532e124b3 100644
--- a/doc/src/snippets/code/doc_src_examples_icons.cpp
+++ b/doc/src/snippets/code/doc_src_examples_icons.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_examples_icons.qdoc b/doc/src/snippets/code/doc_src_examples_icons.qdoc
index ba4a0045a5..added6cefd 100644
--- a/doc/src/snippets/code/doc_src_examples_icons.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_icons.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_examples_imageviewer.cpp b/doc/src/snippets/code/doc_src_examples_imageviewer.cpp
index ac35aa436b..6ff3673e30 100644
--- a/doc/src/snippets/code/doc_src_examples_imageviewer.cpp
+++ b/doc/src/snippets/code/doc_src_examples_imageviewer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_examples_imageviewer.qdoc b/doc/src/snippets/code/doc_src_examples_imageviewer.qdoc
index b89b26ad94..aae7055613 100644
--- a/doc/src/snippets/code/doc_src_examples_imageviewer.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_imageviewer.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_examples_simpledommodel.cpp b/doc/src/snippets/code/doc_src_examples_simpledommodel.cpp
index b0d1beaff1..10cdb07807 100644
--- a/doc/src/snippets/code/doc_src_examples_simpledommodel.cpp
+++ b/doc/src/snippets/code/doc_src_examples_simpledommodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_examples_simpletreemodel.qdoc b/doc/src/snippets/code/doc_src_examples_simpletreemodel.qdoc
index c207f3fec0..4f8865b703 100644
--- a/doc/src/snippets/code/doc_src_examples_simpletreemodel.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_simpletreemodel.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_examples_svgalib.qdoc b/doc/src/snippets/code/doc_src_examples_svgalib.qdoc
index 49d66b0092..5e1ca12376 100644
--- a/doc/src/snippets/code/doc_src_examples_svgalib.qdoc
+++ b/doc/src/snippets/code/doc_src_examples_svgalib.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_examples_textfinder.pro b/doc/src/snippets/code/doc_src_examples_textfinder.pro
index 28c5d542e2..10616b40a0 100644
--- a/doc/src/snippets/code/doc_src_examples_textfinder.pro
+++ b/doc/src/snippets/code/doc_src_examples_textfinder.pro
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_examples_trollprint.cpp b/doc/src/snippets/code/doc_src_examples_trollprint.cpp
index 0ed2e686c5..eba2fdffa2 100644
--- a/doc/src/snippets/code/doc_src_examples_trollprint.cpp
+++ b/doc/src/snippets/code/doc_src_examples_trollprint.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_groups.cpp b/doc/src/snippets/code/doc_src_groups.cpp
index 168bd922ce..abfbfc59c0 100644
--- a/doc/src/snippets/code/doc_src_groups.cpp
+++ b/doc/src/snippets/code/doc_src_groups.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_layout.cpp b/doc/src/snippets/code/doc_src_layout.cpp
index 8610fb5b0e..b6abab61d3 100644
--- a/doc/src/snippets/code/doc_src_layout.cpp
+++ b/doc/src/snippets/code/doc_src_layout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_objecttrees.cpp b/doc/src/snippets/code/doc_src_objecttrees.cpp
index 67019f83e5..62d556057b 100644
--- a/doc/src/snippets/code/doc_src_objecttrees.cpp
+++ b/doc/src/snippets/code/doc_src_objecttrees.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_properties.cpp b/doc/src/snippets/code/doc_src_properties.cpp
index 51af3d9038..b88fc22084 100644
--- a/doc/src/snippets/code/doc_src_properties.cpp
+++ b/doc/src/snippets/code/doc_src_properties.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qalgorithms.cpp b/doc/src/snippets/code/doc_src_qalgorithms.cpp
index dab3b8930b..20e64b61fa 100644
--- a/doc/src/snippets/code/doc_src_qalgorithms.cpp
+++ b/doc/src/snippets/code/doc_src_qalgorithms.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qcache.cpp b/doc/src/snippets/code/doc_src_qcache.cpp
index f44c194f29..0ba9e65531 100644
--- a/doc/src/snippets/code/doc_src_qcache.cpp
+++ b/doc/src/snippets/code/doc_src_qcache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qiterator.cpp b/doc/src/snippets/code/doc_src_qiterator.cpp
index 6da868faa8..b96f9065cb 100644
--- a/doc/src/snippets/code/doc_src_qiterator.cpp
+++ b/doc/src/snippets/code/doc_src_qiterator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qnamespace.cpp b/doc/src/snippets/code/doc_src_qnamespace.cpp
index 52318ceeda..ec80d011c9 100644
--- a/doc/src/snippets/code/doc_src_qnamespace.cpp
+++ b/doc/src/snippets/code/doc_src_qnamespace.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qnamespace.qdoc b/doc/src/snippets/code/doc_src_qnamespace.qdoc
index 1bd7ad1d3f..e67b83a292 100644
--- a/doc/src/snippets/code/doc_src_qnamespace.qdoc
+++ b/doc/src/snippets/code/doc_src_qnamespace.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qpair.cpp b/doc/src/snippets/code/doc_src_qpair.cpp
index 1482e06885..a29b6d02b2 100644
--- a/doc/src/snippets/code/doc_src_qpair.cpp
+++ b/doc/src/snippets/code/doc_src_qpair.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qplugin.cpp b/doc/src/snippets/code/doc_src_qplugin.cpp
index 80fb178709..1577b2fa61 100644
--- a/doc/src/snippets/code/doc_src_qplugin.cpp
+++ b/doc/src/snippets/code/doc_src_qplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,5 +60,5 @@ Q_IMPORT_PLUGIN(qjpeg)
//! [3]
TEMPLATE = app
-QTPLUGIN += qjpeg qgif qmng # image formats
+QTPLUGIN += qjpeg qgif # image formats
//! [3]
diff --git a/doc/src/snippets/code/doc_src_qplugin.pro b/doc/src/snippets/code/doc_src_qplugin.pro
index 1609b9c0d6..e5e5311e5d 100644
--- a/doc/src/snippets/code/doc_src_qplugin.pro
+++ b/doc/src/snippets/code/doc_src_qplugin.pro
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,11 +33,12 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#! [3]
TEMPLATE = app
-QTPLUGIN += qjpeg qgif qmng # image formats
+QTPLUGIN += qjpeg qgif # image formats
#! [3]
diff --git a/doc/src/snippets/code/doc_src_qset.cpp b/doc/src/snippets/code/doc_src_qset.cpp
index 1b88b02239..cfd366f639 100644
--- a/doc/src/snippets/code/doc_src_qset.cpp
+++ b/doc/src/snippets/code/doc_src_qset.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qsignalspy.cpp b/doc/src/snippets/code/doc_src_qsignalspy.cpp
index bf6108eda9..a957285cea 100644
--- a/doc/src/snippets/code/doc_src_qsignalspy.cpp
+++ b/doc/src/snippets/code/doc_src_qsignalspy.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qt4-mainwindow.cpp b/doc/src/snippets/code/doc_src_qt4-mainwindow.cpp
index 18c0c78271..ecbb5f5220 100644
--- a/doc/src/snippets/code/doc_src_qt4-mainwindow.cpp
+++ b/doc/src/snippets/code/doc_src_qt4-mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qt4-styles.cpp b/doc/src/snippets/code/doc_src_qt4-styles.cpp
index 98a0b241d8..9bebb825e4 100644
--- a/doc/src/snippets/code/doc_src_qt4-styles.cpp
+++ b/doc/src/snippets/code/doc_src_qt4-styles.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qtcore.cpp b/doc/src/snippets/code/doc_src_qtcore.cpp
index e83f4dd454..f00c96c6df 100644
--- a/doc/src/snippets/code/doc_src_qtcore.cpp
+++ b/doc/src/snippets/code/doc_src_qtcore.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qtestevent.cpp b/doc/src/snippets/code/doc_src_qtestevent.cpp
index c34742d3f1..787a8e666b 100644
--- a/doc/src/snippets/code/doc_src_qtestevent.cpp
+++ b/doc/src/snippets/code/doc_src_qtestevent.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qtgui.pro b/doc/src/snippets/code/doc_src_qtgui.pro
index 896c1d4044..a4fbc67aeb 100644
--- a/doc/src/snippets/code/doc_src_qtgui.pro
+++ b/doc/src/snippets/code/doc_src_qtgui.pro
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qtnetwork.cpp b/doc/src/snippets/code/doc_src_qtnetwork.cpp
index 8f1a2c7545..7fa8a29db0 100644
--- a/doc/src/snippets/code/doc_src_qtnetwork.cpp
+++ b/doc/src/snippets/code/doc_src_qtnetwork.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qtnetwork.pro b/doc/src/snippets/code/doc_src_qtnetwork.pro
index 35044761a5..897229ebc7 100644
--- a/doc/src/snippets/code/doc_src_qtnetwork.pro
+++ b/doc/src/snippets/code/doc_src_qtnetwork.pro
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qtsql.cpp b/doc/src/snippets/code/doc_src_qtsql.cpp
index 5213857d03..88b80ba710 100644
--- a/doc/src/snippets/code/doc_src_qtsql.cpp
+++ b/doc/src/snippets/code/doc_src_qtsql.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qtsql.pro b/doc/src/snippets/code/doc_src_qtsql.pro
index 7bab18bdd9..4cf55433a8 100644
--- a/doc/src/snippets/code/doc_src_qtsql.pro
+++ b/doc/src/snippets/code/doc_src_qtsql.pro
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qtxml.cpp b/doc/src/snippets/code/doc_src_qtxml.cpp
index f79a144655..976fffa1ae 100644
--- a/doc/src/snippets/code/doc_src_qtxml.cpp
+++ b/doc/src/snippets/code/doc_src_qtxml.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qtxml.pro b/doc/src/snippets/code/doc_src_qtxml.pro
index a3b9d47f4b..b0a38e3432 100644
--- a/doc/src/snippets/code/doc_src_qtxml.pro
+++ b/doc/src/snippets/code/doc_src_qtxml.pro
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_qvarlengtharray.cpp b/doc/src/snippets/code/doc_src_qvarlengtharray.cpp
index af6794056f..027faa41dc 100644
--- a/doc/src/snippets/code/doc_src_qvarlengtharray.cpp
+++ b/doc/src/snippets/code/doc_src_qvarlengtharray.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_resources.cpp b/doc/src/snippets/code/doc_src_resources.cpp
index 6ac8295827..f401add728 100644
--- a/doc/src/snippets/code/doc_src_resources.cpp
+++ b/doc/src/snippets/code/doc_src_resources.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_resources.qdoc b/doc/src/snippets/code/doc_src_resources.qdoc
index 3bdfaf06a4..c51dbbcbf3 100644
--- a/doc/src/snippets/code/doc_src_resources.qdoc
+++ b/doc/src/snippets/code/doc_src_resources.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_sql-driver.cpp b/doc/src/snippets/code/doc_src_sql-driver.cpp
index 3da646b486..5ad00eae3c 100644
--- a/doc/src/snippets/code/doc_src_sql-driver.cpp
+++ b/doc/src/snippets/code/doc_src_sql-driver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_sql-driver.qdoc b/doc/src/snippets/code/doc_src_sql-driver.qdoc
index 8773372736..3fe8d6fbbd 100644
--- a/doc/src/snippets/code/doc_src_sql-driver.qdoc
+++ b/doc/src/snippets/code/doc_src_sql-driver.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_styles.cpp b/doc/src/snippets/code/doc_src_styles.cpp
index dbfd5c7253..6c079c6637 100644
--- a/doc/src/snippets/code/doc_src_styles.cpp
+++ b/doc/src/snippets/code/doc_src_styles.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_stylesheet.cpp b/doc/src/snippets/code/doc_src_stylesheet.cpp
index 2e651a1bc1..eb02634c6d 100644
--- a/doc/src/snippets/code/doc_src_stylesheet.cpp
+++ b/doc/src/snippets/code/doc_src_stylesheet.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/doc_src_stylesheet.qdoc b/doc/src/snippets/code/doc_src_stylesheet.qdoc
index b0fd441d03..9acba09c67 100644
--- a/doc/src/snippets/code/doc_src_stylesheet.qdoc
+++ b/doc/src/snippets/code/doc_src_stylesheet.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src.gui.text.qtextdocumentwriter.cpp b/doc/src/snippets/code/src.gui.text.qtextdocumentwriter.cpp
index a3f3cfd3d4..59ef46c422 100644
--- a/doc/src/snippets/code/src.gui.text.qtextdocumentwriter.cpp
+++ b/doc/src/snippets/code/src.gui.text.qtextdocumentwriter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src.qdbus.qdbuspendingcall.cpp b/doc/src/snippets/code/src.qdbus.qdbuspendingcall.cpp
index 8c461f453a..a5d46dccfe 100644
--- a/doc/src/snippets/code/src.qdbus.qdbuspendingcall.cpp
+++ b/doc/src/snippets/code/src.qdbus.qdbuspendingcall.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src.qdbus.qdbuspendingreply.cpp b/doc/src/snippets/code/src.qdbus.qdbuspendingreply.cpp
index 87b40ff575..eac955a798 100644
--- a/doc/src/snippets/code/src.qdbus.qdbuspendingreply.cpp
+++ b/doc/src/snippets/code/src.qdbus.qdbuspendingreply.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_codecs_qtextcodec.cpp b/doc/src/snippets/code/src_corelib_codecs_qtextcodec.cpp
index 93e3dfd52e..78abd5ba28 100644
--- a/doc/src/snippets/code/src_corelib_codecs_qtextcodec.cpp
+++ b/doc/src/snippets/code/src_corelib_codecs_qtextcodec.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_codecs_qtextcodecplugin.cpp b/doc/src/snippets/code/src_corelib_codecs_qtextcodecplugin.cpp
index d0ad958e8b..31e039894d 100644
--- a/doc/src/snippets/code/src_corelib_codecs_qtextcodecplugin.cpp
+++ b/doc/src/snippets/code/src_corelib_codecs_qtextcodecplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_concurrent_qfuture.cpp b/doc/src/snippets/code/src_corelib_concurrent_qfuture.cpp
index 09cb3efe1e..ddf075b6ca 100644
--- a/doc/src/snippets/code/src_corelib_concurrent_qfuture.cpp
+++ b/doc/src/snippets/code/src_corelib_concurrent_qfuture.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_concurrent_qfuturesynchronizer.cpp b/doc/src/snippets/code/src_corelib_concurrent_qfuturesynchronizer.cpp
index 505c83a1b8..77003791e9 100644
--- a/doc/src/snippets/code/src_corelib_concurrent_qfuturesynchronizer.cpp
+++ b/doc/src/snippets/code/src_corelib_concurrent_qfuturesynchronizer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_concurrent_qfuturewatcher.cpp b/doc/src/snippets/code/src_corelib_concurrent_qfuturewatcher.cpp
index bbf7dbd471..703275bc7a 100644
--- a/doc/src/snippets/code/src_corelib_concurrent_qfuturewatcher.cpp
+++ b/doc/src/snippets/code/src_corelib_concurrent_qfuturewatcher.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp
index 702abe15a5..cf0257c45b 100644
--- a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp
+++ b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp
index 69a69a321f..2acf467e9a 100644
--- a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp
+++ b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp
index 239c0292df..9b83ad5bef 100644
--- a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp
+++ b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp
index 5eddbca22a..362f084092 100644
--- a/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp
+++ b/doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_concurrent_qthreadpool.cpp b/doc/src/snippets/code/src_corelib_concurrent_qthreadpool.cpp
index a0bdd9334d..a8f9da3a7c 100644
--- a/doc/src/snippets/code/src_corelib_concurrent_qthreadpool.cpp
+++ b/doc/src/snippets/code/src_corelib_concurrent_qthreadpool.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_global_qglobal.cpp b/doc/src/snippets/code/src_corelib_global_qglobal.cpp
index 84ec44ba60..21bea7aef8 100644
--- a/doc/src/snippets/code/src_corelib_global_qglobal.cpp
+++ b/doc/src/snippets/code/src_corelib_global_qglobal.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -246,27 +246,27 @@ const TInputType &myMin(const TInputType &value1, const TInputType &value2)
#include <stdio.h>
#include <stdlib.h>
-void myMessageOutput(QtMsgType type, const char *msg)
+void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const char *msg)
{
switch (type) {
case QtDebugMsg:
- fprintf(stderr, "Debug: %s\n", msg);
+ fprintf(stderr, "Debug: %s (%s:%u, %s)\n", msg, context.file, context.line, context.function);
break;
case QtWarningMsg:
- fprintf(stderr, "Warning: %s\n", msg);
+ fprintf(stderr, "Warning: %s (%s:%u, %s)\n", msg, context.file, context.line, context.function);
break;
case QtCriticalMsg:
- fprintf(stderr, "Critical: %s\n", msg);
+ fprintf(stderr, "Critical: %s (%s:%u, %s)\n", msg, context.file, context.line, context.function);
break;
case QtFatalMsg:
- fprintf(stderr, "Fatal: %s\n", msg);
+ fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", msg, context.file, context.line, context.function);
abort();
}
}
int main(int argc, char **argv)
{
- qInstallMsgHandler(myMessageOutput);
+ qInstallMessageHandler(myMessageOutput);
QApplication app(argc, argv);
...
return app.exec();
@@ -532,6 +532,11 @@ class MyClass : public QObject
CApaApplication *myApplicationFactory();
//! [47]
+
+//! [49]
+void myMessageHandler(QtMsgType, const QMessageLogContext &, const char *);
+//! [49]
+
//! [qlikely]
// the condition inside the "if" will be successful most of the times
for (int i = 1; i <= 365; i++) {
diff --git a/doc/src/snippets/code/src_corelib_io_qabstractfileengine.cpp b/doc/src/snippets/code/src_corelib_io_qabstractfileengine.cpp
index 96b9aa2d89..8893fbd08c 100644
--- a/doc/src/snippets/code/src_corelib_io_qabstractfileengine.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qabstractfileengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_io_qdatastream.cpp b/doc/src/snippets/code/src_corelib_io_qdatastream.cpp
index 2f7b6f9b73..af2d7d24bf 100644
--- a/doc/src/snippets/code/src_corelib_io_qdatastream.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qdatastream.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_io_qdir.cpp b/doc/src/snippets/code/src_corelib_io_qdir.cpp
index 801f868195..3c333e5642 100644
--- a/doc/src/snippets/code/src_corelib_io_qdir.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qdir.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_io_qdiriterator.cpp b/doc/src/snippets/code/src_corelib_io_qdiriterator.cpp
index 5b611bb6e5..bf38bb1627 100644
--- a/doc/src/snippets/code/src_corelib_io_qdiriterator.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qdiriterator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_io_qfile.cpp b/doc/src/snippets/code/src_corelib_io_qfile.cpp
index d873ca43ab..7ad24b30f1 100644
--- a/doc/src/snippets/code/src_corelib_io_qfile.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qfile.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_io_qfileinfo.cpp b/doc/src/snippets/code/src_corelib_io_qfileinfo.cpp
index 1e32f83f05..f565786934 100644
--- a/doc/src/snippets/code/src_corelib_io_qfileinfo.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qfileinfo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_io_qiodevice.cpp b/doc/src/snippets/code/src_corelib_io_qiodevice.cpp
index 5ba01a4d8f..6018a21f89 100644
--- a/doc/src/snippets/code/src_corelib_io_qiodevice.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qiodevice.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_io_qprocess.cpp b/doc/src/snippets/code/src_corelib_io_qprocess.cpp
index 75d5a8fbe6..16878f41e1 100644
--- a/doc/src/snippets/code/src_corelib_io_qprocess.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qprocess.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_io_qsettings.cpp b/doc/src/snippets/code/src_corelib_io_qsettings.cpp
index 17597f5131..c9ce7561ff 100644
--- a/doc/src/snippets/code/src_corelib_io_qsettings.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qsettings.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_io_qtemporarydir.cpp b/doc/src/snippets/code/src_corelib_io_qtemporarydir.cpp
index 11f9a07346..4e855f72f0 100644
--- a/doc/src/snippets/code/src_corelib_io_qtemporarydir.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qtemporarydir.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_io_qtemporaryfile.cpp b/doc/src/snippets/code/src_corelib_io_qtemporaryfile.cpp
index bdcfbf9c4d..2db3aace56 100644
--- a/doc/src/snippets/code/src_corelib_io_qtemporaryfile.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qtemporaryfile.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_io_qtextstream.cpp b/doc/src/snippets/code/src_corelib_io_qtextstream.cpp
index 8028132ad9..c46cbb23d3 100644
--- a/doc/src/snippets/code/src_corelib_io_qtextstream.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qtextstream.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_io_qurl.cpp b/doc/src/snippets/code/src_corelib_io_qurl.cpp
index 98d8e37ebd..ba17c02fb3 100644
--- a/doc/src/snippets/code/src_corelib_io_qurl.cpp
+++ b/doc/src/snippets/code/src_corelib_io_qurl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_kernel_qabstracteventdispatcher.cpp b/doc/src/snippets/code/src_corelib_kernel_qabstracteventdispatcher.cpp
index c63b405203..eba007e947 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qabstracteventdispatcher.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qabstracteventdispatcher.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp b/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp
index d39271cccd..aa5b23265e 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -86,3 +86,14 @@ beginMoveRows(parent, 2, 2, parent, 0);
//! [9]
beginMoveRows(parent, 2, 2, parent, 4);
//! [9]
+
+//! [10]
+myData.clear();
+reset();
+//! [10]
+
+//! [11]
+beginResetModel();
+myData.clear();
+endResetModel();
+//! [11]
diff --git a/doc/src/snippets/code/src_corelib_kernel_qcoreapplication.cpp b/doc/src/snippets/code/src_corelib_kernel_qcoreapplication.cpp
index 0deb5db7f1..8023e6a218 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qcoreapplication.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qcoreapplication.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_kernel_qmetaobject.cpp b/doc/src/snippets/code/src_corelib_kernel_qmetaobject.cpp
index 9683f2ce57..afba3b6a61 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qmetaobject.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qmetaobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp b/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp
index 89ac8add0b..b1e5df9001 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qmetatype.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_kernel_qmimedata.cpp b/doc/src/snippets/code/src_corelib_kernel_qmimedata.cpp
index 481dc1fe90..de683cf463 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qmimedata.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qmimedata.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_kernel_qobject.cpp b/doc/src/snippets/code/src_corelib_kernel_qobject.cpp
index fad0ef7dfe..5b27775322 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qobject.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_kernel_qsystemsemaphore.cpp b/doc/src/snippets/code/src_corelib_kernel_qsystemsemaphore.cpp
index 32a7bdd706..da6e9fca8e 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qsystemsemaphore.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qsystemsemaphore.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_kernel_qtimer.cpp b/doc/src/snippets/code/src_corelib_kernel_qtimer.cpp
index 2e5b4f4cea..dfdef73e75 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qtimer.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qtimer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_kernel_qvariant.cpp b/doc/src/snippets/code/src_corelib_kernel_qvariant.cpp
index fd87d6c926..ae38c8372f 100644
--- a/doc/src/snippets/code/src_corelib_kernel_qvariant.cpp
+++ b/doc/src/snippets/code/src_corelib_kernel_qvariant.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_plugin_qlibrary.cpp b/doc/src/snippets/code/src_corelib_plugin_qlibrary.cpp
index 1e4f8b66cc..9fa9a23234 100644
--- a/doc/src/snippets/code/src_corelib_plugin_qlibrary.cpp
+++ b/doc/src/snippets/code/src_corelib_plugin_qlibrary.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_plugin_quuid.cpp b/doc/src/snippets/code/src_corelib_plugin_quuid.cpp
index 7deb859acf..5c8f6ae091 100644
--- a/doc/src/snippets/code/src_corelib_plugin_quuid.cpp
+++ b/doc/src/snippets/code/src_corelib_plugin_quuid.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_statemachine_qstatemachine.cpp b/doc/src/snippets/code/src_corelib_statemachine_qstatemachine.cpp
index e56a8fa214..e212470b75 100644
--- a/doc/src/snippets/code/src_corelib_statemachine_qstatemachine.cpp
+++ b/doc/src/snippets/code/src_corelib_statemachine_qstatemachine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_thread_qatomic.cpp b/doc/src/snippets/code/src_corelib_thread_qatomic.cpp
index d43a6fed77..7e3d7dc7e4 100644
--- a/doc/src/snippets/code/src_corelib_thread_qatomic.cpp
+++ b/doc/src/snippets/code/src_corelib_thread_qatomic.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_thread_qmutex.cpp b/doc/src/snippets/code/src_corelib_thread_qmutex.cpp
index b52709c5ce..84fe348eb2 100644
--- a/doc/src/snippets/code/src_corelib_thread_qmutex.cpp
+++ b/doc/src/snippets/code/src_corelib_thread_qmutex.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_thread_qmutexpool.cpp b/doc/src/snippets/code/src_corelib_thread_qmutexpool.cpp
index c361946133..29076db91c 100644
--- a/doc/src/snippets/code/src_corelib_thread_qmutexpool.cpp
+++ b/doc/src/snippets/code/src_corelib_thread_qmutexpool.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_thread_qreadwritelock.cpp b/doc/src/snippets/code/src_corelib_thread_qreadwritelock.cpp
index c0a5f60416..bd42c01905 100644
--- a/doc/src/snippets/code/src_corelib_thread_qreadwritelock.cpp
+++ b/doc/src/snippets/code/src_corelib_thread_qreadwritelock.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_thread_qsemaphore.cpp b/doc/src/snippets/code/src_corelib_thread_qsemaphore.cpp
index 023e094216..fd4ff98314 100644
--- a/doc/src/snippets/code/src_corelib_thread_qsemaphore.cpp
+++ b/doc/src/snippets/code/src_corelib_thread_qsemaphore.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_thread_qthread.cpp b/doc/src/snippets/code/src_corelib_thread_qthread.cpp
index fd0dbdeb06..681023c91b 100644
--- a/doc/src/snippets/code/src_corelib_thread_qthread.cpp
+++ b/doc/src/snippets/code/src_corelib_thread_qthread.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp b/doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp
index ad940b2edf..149cae5bf6 100644
--- a/doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp
+++ b/doc/src/snippets/code/src_corelib_thread_qwaitcondition_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_tools_qbitarray.cpp b/doc/src/snippets/code/src_corelib_tools_qbitarray.cpp
index 5e780ad338..cfaa6ef485 100644
--- a/doc/src/snippets/code/src_corelib_tools_qbitarray.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qbitarray.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_tools_qbytearray.cpp b/doc/src/snippets/code/src_corelib_tools_qbytearray.cpp
index 9b717249ba..a232f490b2 100644
--- a/doc/src/snippets/code/src_corelib_tools_qbytearray.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qbytearray.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_tools_qdatetime.cpp b/doc/src/snippets/code/src_corelib_tools_qdatetime.cpp
index 56cc1dea5c..59cd67fe6d 100644
--- a/doc/src/snippets/code/src_corelib_tools_qdatetime.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qdatetime.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_tools_qeasingcurve.cpp b/doc/src/snippets/code/src_corelib_tools_qeasingcurve.cpp
index ebfeebb891..3aa0d986af 100644
--- a/doc/src/snippets/code/src_corelib_tools_qeasingcurve.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qeasingcurve.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_tools_qhash.cpp b/doc/src/snippets/code/src_corelib_tools_qhash.cpp
index 7c3fc25a76..6595119e40 100644
--- a/doc/src/snippets/code/src_corelib_tools_qhash.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qhash.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_tools_qlinkedlist.cpp b/doc/src/snippets/code/src_corelib_tools_qlinkedlist.cpp
index cbb338461a..b9861f16c0 100644
--- a/doc/src/snippets/code/src_corelib_tools_qlinkedlist.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qlinkedlist.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_tools_qlistdata.cpp b/doc/src/snippets/code/src_corelib_tools_qlistdata.cpp
index 7d939fdd79..dca5473cd6 100644
--- a/doc/src/snippets/code/src_corelib_tools_qlistdata.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qlistdata.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_tools_qlocale.cpp b/doc/src/snippets/code/src_corelib_tools_qlocale.cpp
index 4d41bf3822..2e3b599910 100644
--- a/doc/src/snippets/code/src_corelib_tools_qlocale.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qlocale.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_tools_qmap.cpp b/doc/src/snippets/code/src_corelib_tools_qmap.cpp
index 2242feb2af..2b9c1fb73e 100644
--- a/doc/src/snippets/code/src_corelib_tools_qmap.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qmap.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_tools_qpoint.cpp b/doc/src/snippets/code/src_corelib_tools_qpoint.cpp
index 5025fe6dbc..4f48fcbcb1 100644
--- a/doc/src/snippets/code/src_corelib_tools_qpoint.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qpoint.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_tools_qqueue.cpp b/doc/src/snippets/code/src_corelib_tools_qqueue.cpp
index dcf916f1f6..3a1cf7c1a1 100644
--- a/doc/src/snippets/code/src_corelib_tools_qqueue.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qqueue.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_tools_qrect.cpp b/doc/src/snippets/code/src_corelib_tools_qrect.cpp
index d8206da2d5..ebf9118c20 100644
--- a/doc/src/snippets/code/src_corelib_tools_qrect.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qrect.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_tools_qregexp.cpp b/doc/src/snippets/code/src_corelib_tools_qregexp.cpp
index 4756030f58..002ae96f23 100644
--- a/doc/src/snippets/code/src_corelib_tools_qregexp.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qregexp.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp b/doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp
index 300da70f22..fd9cd3e4b0 100644
--- a/doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qscopedpointer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_tools_qsize.cpp b/doc/src/snippets/code/src_corelib_tools_qsize.cpp
index 935cfdf232..8772152ad6 100644
--- a/doc/src/snippets/code/src_corelib_tools_qsize.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qsize.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_tools_qstring.cpp b/doc/src/snippets/code/src_corelib_tools_qstring.cpp
index 72361c9169..507e929f47 100644
--- a/doc/src/snippets/code/src_corelib_tools_qstring.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qstring.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_tools_qtimeline.cpp b/doc/src/snippets/code/src_corelib_tools_qtimeline.cpp
index 9d0e0f2da7..e33c94efda 100644
--- a/doc/src/snippets/code/src_corelib_tools_qtimeline.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qtimeline.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_tools_qvector.cpp b/doc/src/snippets/code/src_corelib_tools_qvector.cpp
index b2c05eb478..b3f9a7e675 100644
--- a/doc/src/snippets/code/src_corelib_tools_qvector.cpp
+++ b/doc/src/snippets/code/src_corelib_tools_qvector.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_corelib_xml_qxmlstream.cpp b/doc/src/snippets/code/src_corelib_xml_qxmlstream.cpp
index 5e781d770b..9f40777df1 100644
--- a/doc/src/snippets/code/src_corelib_xml_qxmlstream.cpp
+++ b/doc/src/snippets/code/src_corelib_xml_qxmlstream.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_accessible_qaccessible.cpp b/doc/src/snippets/code/src_gui_accessible_qaccessible.cpp
index a3af95082a..52d40d9038 100644
--- a/doc/src/snippets/code/src_gui_accessible_qaccessible.cpp
+++ b/doc/src/snippets/code/src_gui_accessible_qaccessible.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_dialogs_qabstractprintdialog.cpp b/doc/src/snippets/code/src_gui_dialogs_qabstractprintdialog.cpp
index f4a042b27f..41a6e1e622 100644
--- a/doc/src/snippets/code/src_gui_dialogs_qabstractprintdialog.cpp
+++ b/doc/src/snippets/code/src_gui_dialogs_qabstractprintdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp b/doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp
index e8e379575f..1a89ff327f 100644
--- a/doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp
+++ b/doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_dialogs_qfontdialog.cpp b/doc/src/snippets/code/src_gui_dialogs_qfontdialog.cpp
index d6a3dfec61..e07ecbca3e 100644
--- a/doc/src/snippets/code/src_gui_dialogs_qfontdialog.cpp
+++ b/doc/src/snippets/code/src_gui_dialogs_qfontdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_dialogs_qmessagebox.cpp b/doc/src/snippets/code/src_gui_dialogs_qmessagebox.cpp
index 196f995a1e..90bc2e9b0a 100644
--- a/doc/src/snippets/code/src_gui_dialogs_qmessagebox.cpp
+++ b/doc/src/snippets/code/src_gui_dialogs_qmessagebox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_dialogs_qwizard.cpp b/doc/src/snippets/code/src_gui_dialogs_qwizard.cpp
index 6832a87cc4..47db20da99 100644
--- a/doc/src/snippets/code/src_gui_dialogs_qwizard.cpp
+++ b/doc/src/snippets/code/src_gui_dialogs_qwizard.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_effects_qgraphicseffect.cpp b/doc/src/snippets/code/src_gui_effects_qgraphicseffect.cpp
index 3668734694..3e0b0b64ee 100644
--- a/doc/src/snippets/code/src_gui_effects_qgraphicseffect.cpp
+++ b/doc/src/snippets/code/src_gui_effects_qgraphicseffect.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_embedded_qcopchannel_qws.cpp b/doc/src/snippets/code/src_gui_embedded_qcopchannel_qws.cpp
index def46ebdcb..76b958dda3 100644
--- a/doc/src/snippets/code/src_gui_embedded_qcopchannel_qws.cpp
+++ b/doc/src/snippets/code/src_gui_embedded_qcopchannel_qws.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_embedded_qmouse_qws.cpp b/doc/src/snippets/code/src_gui_embedded_qmouse_qws.cpp
index fe2cf77ef5..8fc6140075 100644
--- a/doc/src/snippets/code/src_gui_embedded_qmouse_qws.cpp
+++ b/doc/src/snippets/code/src_gui_embedded_qmouse_qws.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_embedded_qmousetslib_qws.cpp b/doc/src/snippets/code/src_gui_embedded_qmousetslib_qws.cpp
index 4ceada7606..7a2eee142e 100644
--- a/doc/src/snippets/code/src_gui_embedded_qmousetslib_qws.cpp
+++ b/doc/src/snippets/code/src_gui_embedded_qmousetslib_qws.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_embedded_qscreen_qws.cpp b/doc/src/snippets/code/src_gui_embedded_qscreen_qws.cpp
index 5becd28c8a..99be26133e 100644
--- a/doc/src/snippets/code/src_gui_embedded_qscreen_qws.cpp
+++ b/doc/src/snippets/code/src_gui_embedded_qscreen_qws.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_embedded_qtransportauth_qws.cpp b/doc/src/snippets/code/src_gui_embedded_qtransportauth_qws.cpp
index 461c893623..e73ee2ed0a 100644
--- a/doc/src/snippets/code/src_gui_embedded_qtransportauth_qws.cpp
+++ b/doc/src/snippets/code/src_gui_embedded_qtransportauth_qws.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_embedded_qwindowsystem_qws.cpp b/doc/src/snippets/code/src_gui_embedded_qwindowsystem_qws.cpp
index a7998759bc..66308f3405 100644
--- a/doc/src/snippets/code/src_gui_embedded_qwindowsystem_qws.cpp
+++ b/doc/src/snippets/code/src_gui_embedded_qwindowsystem_qws.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsgridlayout.cpp b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsgridlayout.cpp
index 0224eade12..9a974de016 100644
--- a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsgridlayout.cpp
+++ b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsgridlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp
index ac069815a4..01df05c084 100644
--- a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp
+++ b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_graphicsview_qgraphicslinearlayout.cpp b/doc/src/snippets/code/src_gui_graphicsview_qgraphicslinearlayout.cpp
index 55765085e1..e3998201af 100644
--- a/doc/src/snippets/code/src_gui_graphicsview_qgraphicslinearlayout.cpp
+++ b/doc/src/snippets/code/src_gui_graphicsview_qgraphicslinearlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsproxywidget.cpp b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsproxywidget.cpp
index da56f20fc5..e508dbfb2b 100644
--- a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsproxywidget.cpp
+++ b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsproxywidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsscene.cpp b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsscene.cpp
index d139507e56..40b240c56f 100644
--- a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsscene.cpp
+++ b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsscene.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_graphicsview_qgraphicssceneevent.cpp b/doc/src/snippets/code/src_gui_graphicsview_qgraphicssceneevent.cpp
index b114ec7303..0e9ceea6a0 100644
--- a/doc/src/snippets/code/src_gui_graphicsview_qgraphicssceneevent.cpp
+++ b/doc/src/snippets/code/src_gui_graphicsview_qgraphicssceneevent.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsview.cpp b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsview.cpp
index 498c475add..d07b5f7cf6 100644
--- a/doc/src/snippets/code/src_gui_graphicsview_qgraphicsview.cpp
+++ b/doc/src/snippets/code/src_gui_graphicsview_qgraphicsview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_graphicsview_qgraphicswidget.cpp b/doc/src/snippets/code/src_gui_graphicsview_qgraphicswidget.cpp
index f85aa2f53c..da92f2d2e1 100644
--- a/doc/src/snippets/code/src_gui_graphicsview_qgraphicswidget.cpp
+++ b/doc/src/snippets/code/src_gui_graphicsview_qgraphicswidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_image_qbitmap.cpp b/doc/src/snippets/code/src_gui_image_qbitmap.cpp
index 8abb2c09c1..90fa133498 100644
--- a/doc/src/snippets/code/src_gui_image_qbitmap.cpp
+++ b/doc/src/snippets/code/src_gui_image_qbitmap.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_image_qicon.cpp b/doc/src/snippets/code/src_gui_image_qicon.cpp
index 10464ee1fa..28ebea8f65 100644
--- a/doc/src/snippets/code/src_gui_image_qicon.cpp
+++ b/doc/src/snippets/code/src_gui_image_qicon.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_image_qimage.cpp b/doc/src/snippets/code/src_gui_image_qimage.cpp
index 8b69a7adee..0c39e22eb6 100644
--- a/doc/src/snippets/code/src_gui_image_qimage.cpp
+++ b/doc/src/snippets/code/src_gui_image_qimage.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_image_qimagereader.cpp b/doc/src/snippets/code/src_gui_image_qimagereader.cpp
index c3c44f26ad..92f528e6c0 100644
--- a/doc/src/snippets/code/src_gui_image_qimagereader.cpp
+++ b/doc/src/snippets/code/src_gui_image_qimagereader.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_image_qimagewriter.cpp b/doc/src/snippets/code/src_gui_image_qimagewriter.cpp
index 7379320e4d..d0f11929d3 100644
--- a/doc/src/snippets/code/src_gui_image_qimagewriter.cpp
+++ b/doc/src/snippets/code/src_gui_image_qimagewriter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_image_qmovie.cpp b/doc/src/snippets/code/src_gui_image_qmovie.cpp
index 903f0d313b..5d57d19204 100644
--- a/doc/src/snippets/code/src_gui_image_qmovie.cpp
+++ b/doc/src/snippets/code/src_gui_image_qmovie.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_image_qpixmap.cpp b/doc/src/snippets/code/src_gui_image_qpixmap.cpp
index cd5f126639..b8c0fcfbd5 100644
--- a/doc/src/snippets/code/src_gui_image_qpixmap.cpp
+++ b/doc/src/snippets/code/src_gui_image_qpixmap.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_image_qpixmapcache.cpp b/doc/src/snippets/code/src_gui_image_qpixmapcache.cpp
index 39c0b17042..9d42f6b330 100644
--- a/doc/src/snippets/code/src_gui_image_qpixmapcache.cpp
+++ b/doc/src/snippets/code/src_gui_image_qpixmapcache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_image_qpixmapfilter.cpp b/doc/src/snippets/code/src_gui_image_qpixmapfilter.cpp
index aa48e70125..55d5aa4897 100644
--- a/doc/src/snippets/code/src_gui_image_qpixmapfilter.cpp
+++ b/doc/src/snippets/code/src_gui_image_qpixmapfilter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_itemviews_qabstractitemview.cpp b/doc/src/snippets/code/src_gui_itemviews_qabstractitemview.cpp
index e011b841b1..2a497ff37c 100644
--- a/doc/src/snippets/code/src_gui_itemviews_qabstractitemview.cpp
+++ b/doc/src/snippets/code/src_gui_itemviews_qabstractitemview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_itemviews_qdatawidgetmapper.cpp b/doc/src/snippets/code/src_gui_itemviews_qdatawidgetmapper.cpp
index 945111c6b3..d968260d39 100644
--- a/doc/src/snippets/code/src_gui_itemviews_qdatawidgetmapper.cpp
+++ b/doc/src/snippets/code/src_gui_itemviews_qdatawidgetmapper.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_itemviews_qidentityproxymodel.cpp b/doc/src/snippets/code/src_gui_itemviews_qidentityproxymodel.cpp
index 6bf6c895f6..cf4707cbeb 100644
--- a/doc/src/snippets/code/src_gui_itemviews_qidentityproxymodel.cpp
+++ b/doc/src/snippets/code/src_gui_itemviews_qidentityproxymodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_itemviews_qitemeditorfactory.cpp b/doc/src/snippets/code/src_gui_itemviews_qitemeditorfactory.cpp
index 233511bc28..3f1e11c04c 100644
--- a/doc/src/snippets/code/src_gui_itemviews_qitemeditorfactory.cpp
+++ b/doc/src/snippets/code/src_gui_itemviews_qitemeditorfactory.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_itemviews_qitemselectionmodel.cpp b/doc/src/snippets/code/src_gui_itemviews_qitemselectionmodel.cpp
index 87bda3365f..ba81221e9c 100644
--- a/doc/src/snippets/code/src_gui_itemviews_qitemselectionmodel.cpp
+++ b/doc/src/snippets/code/src_gui_itemviews_qitemselectionmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_itemviews_qstandarditemmodel.cpp b/doc/src/snippets/code/src_gui_itemviews_qstandarditemmodel.cpp
index d9dd951a40..ae91339867 100644
--- a/doc/src/snippets/code/src_gui_itemviews_qstandarditemmodel.cpp
+++ b/doc/src/snippets/code/src_gui_itemviews_qstandarditemmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_itemviews_qtablewidget.cpp b/doc/src/snippets/code/src_gui_itemviews_qtablewidget.cpp
index a7983b618c..169fff57b9 100644
--- a/doc/src/snippets/code/src_gui_itemviews_qtablewidget.cpp
+++ b/doc/src/snippets/code/src_gui_itemviews_qtablewidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_itemviews_qtreewidget.cpp b/doc/src/snippets/code/src_gui_itemviews_qtreewidget.cpp
index a72139f7fd..b299d765f3 100644
--- a/doc/src/snippets/code/src_gui_itemviews_qtreewidget.cpp
+++ b/doc/src/snippets/code/src_gui_itemviews_qtreewidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_kernel_qaction.cpp b/doc/src/snippets/code/src_gui_kernel_qaction.cpp
index 0591c01cc8..af876cd872 100644
--- a/doc/src/snippets/code/src_gui_kernel_qaction.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qaction.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_kernel_qapplication.cpp b/doc/src/snippets/code/src_gui_kernel_qapplication.cpp
index 649068719f..b32e8c3f39 100644
--- a/doc/src/snippets/code/src_gui_kernel_qapplication.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qapplication.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_kernel_qapplication_x11.cpp b/doc/src/snippets/code/src_gui_kernel_qapplication_x11.cpp
index f36ce640c1..1d37765e3c 100644
--- a/doc/src/snippets/code/src_gui_kernel_qapplication_x11.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qapplication_x11.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_kernel_qclipboard.cpp b/doc/src/snippets/code/src_gui_kernel_qclipboard.cpp
index c8414abf8a..4cf8f33c02 100644
--- a/doc/src/snippets/code/src_gui_kernel_qclipboard.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qclipboard.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_kernel_qevent.cpp b/doc/src/snippets/code/src_gui_kernel_qevent.cpp
index 1874e836b9..35c53337f4 100644
--- a/doc/src/snippets/code/src_gui_kernel_qevent.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qevent.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_kernel_qformlayout.cpp b/doc/src/snippets/code/src_gui_kernel_qformlayout.cpp
index b27b007eff..1f7517b613 100644
--- a/doc/src/snippets/code/src_gui_kernel_qformlayout.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qformlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_kernel_qkeysequence.cpp b/doc/src/snippets/code/src_gui_kernel_qkeysequence.cpp
index 8350170b0d..79dc967cf3 100644
--- a/doc/src/snippets/code/src_gui_kernel_qkeysequence.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qkeysequence.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_kernel_qlayout.cpp b/doc/src/snippets/code/src_gui_kernel_qlayout.cpp
index eb5bedc4d5..cabd753b5d 100644
--- a/doc/src/snippets/code/src_gui_kernel_qlayout.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_kernel_qlayoutitem.cpp b/doc/src/snippets/code/src_gui_kernel_qlayoutitem.cpp
index cf706c1a9b..378253c605 100644
--- a/doc/src/snippets/code/src_gui_kernel_qlayoutitem.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qlayoutitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_kernel_qshortcut.cpp b/doc/src/snippets/code/src_gui_kernel_qshortcut.cpp
index 35e9aa0a69..31e3e3291e 100644
--- a/doc/src/snippets/code/src_gui_kernel_qshortcut.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qshortcut.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_kernel_qshortcutmap.cpp b/doc/src/snippets/code/src_gui_kernel_qshortcutmap.cpp
index 99caa909b4..d761e31d3d 100644
--- a/doc/src/snippets/code/src_gui_kernel_qshortcutmap.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qshortcutmap.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_kernel_qsound.cpp b/doc/src/snippets/code/src_gui_kernel_qsound.cpp
index 0a68fd37bb..8efb01e867 100644
--- a/doc/src/snippets/code/src_gui_kernel_qsound.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qsound.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_kernel_qwidget.cpp b/doc/src/snippets/code/src_gui_kernel_qwidget.cpp
index 6cfb9bdf34..3e94519073 100644
--- a/doc/src/snippets/code/src_gui_kernel_qwidget.cpp
+++ b/doc/src/snippets/code/src_gui_kernel_qwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_painting_qbrush.cpp b/doc/src/snippets/code/src_gui_painting_qbrush.cpp
index 383433bd6a..8678c48d62 100644
--- a/doc/src/snippets/code/src_gui_painting_qbrush.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qbrush.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_painting_qcolor.cpp b/doc/src/snippets/code/src_gui_painting_qcolor.cpp
index 0334235e02..8954fed604 100644
--- a/doc/src/snippets/code/src_gui_painting_qcolor.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qcolor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_painting_qdrawutil.cpp b/doc/src/snippets/code/src_gui_painting_qdrawutil.cpp
index d498802301..0f70fce8ef 100644
--- a/doc/src/snippets/code/src_gui_painting_qdrawutil.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qdrawutil.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_painting_qmatrix.cpp b/doc/src/snippets/code/src_gui_painting_qmatrix.cpp
index afc1c79128..d4e1b57b3c 100644
--- a/doc/src/snippets/code/src_gui_painting_qmatrix.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qmatrix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_painting_qpainter.cpp b/doc/src/snippets/code/src_gui_painting_qpainter.cpp
index 048ea4404e..8caffa46f4 100644
--- a/doc/src/snippets/code/src_gui_painting_qpainter.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qpainter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_painting_qpainterpath.cpp b/doc/src/snippets/code/src_gui_painting_qpainterpath.cpp
index 3cf2d64b91..b23f8cea23 100644
--- a/doc/src/snippets/code/src_gui_painting_qpainterpath.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qpainterpath.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_painting_qpen.cpp b/doc/src/snippets/code/src_gui_painting_qpen.cpp
index 68b2be7592..4da729b88d 100644
--- a/doc/src/snippets/code/src_gui_painting_qpen.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qpen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_painting_qregion.cpp b/doc/src/snippets/code/src_gui_painting_qregion.cpp
index ef52660a36..8f334c5695 100644
--- a/doc/src/snippets/code/src_gui_painting_qregion.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qregion.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_painting_qregion_unix.cpp b/doc/src/snippets/code/src_gui_painting_qregion_unix.cpp
index c239d84a11..63b9de19d1 100644
--- a/doc/src/snippets/code/src_gui_painting_qregion_unix.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qregion_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_painting_qtransform.cpp b/doc/src/snippets/code/src_gui_painting_qtransform.cpp
index bf379200dd..f54e0a07ca 100644
--- a/doc/src/snippets/code/src_gui_painting_qtransform.cpp
+++ b/doc/src/snippets/code/src_gui_painting_qtransform.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_qopenglshaderprogram.cpp b/doc/src/snippets/code/src_gui_qopenglshaderprogram.cpp
index 191bb8e4ea..637527036f 100644
--- a/doc/src/snippets/code/src_gui_qopenglshaderprogram.cpp
+++ b/doc/src/snippets/code/src_gui_qopenglshaderprogram.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_qproxystyle.cpp b/doc/src/snippets/code/src_gui_qproxystyle.cpp
index bdb64572d5..ae9ff131aa 100644
--- a/doc/src/snippets/code/src_gui_qproxystyle.cpp
+++ b/doc/src/snippets/code/src_gui_qproxystyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_styles_qstyle.cpp b/doc/src/snippets/code/src_gui_styles_qstyle.cpp
index f6471db89b..ed4ebb60a4 100644
--- a/doc/src/snippets/code/src_gui_styles_qstyle.cpp
+++ b/doc/src/snippets/code/src_gui_styles_qstyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_styles_qstyleoption.cpp b/doc/src/snippets/code/src_gui_styles_qstyleoption.cpp
index 9cbecace8f..962212388f 100644
--- a/doc/src/snippets/code/src_gui_styles_qstyleoption.cpp
+++ b/doc/src/snippets/code/src_gui_styles_qstyleoption.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_text_qfont.cpp b/doc/src/snippets/code/src_gui_text_qfont.cpp
index 5c432cf11e..fab550cbc7 100644
--- a/doc/src/snippets/code/src_gui_text_qfont.cpp
+++ b/doc/src/snippets/code/src_gui_text_qfont.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_text_qfontmetrics.cpp b/doc/src/snippets/code/src_gui_text_qfontmetrics.cpp
index 929957cced..b864b4ddcc 100644
--- a/doc/src/snippets/code/src_gui_text_qfontmetrics.cpp
+++ b/doc/src/snippets/code/src_gui_text_qfontmetrics.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_text_qsyntaxhighlighter.cpp b/doc/src/snippets/code/src_gui_text_qsyntaxhighlighter.cpp
index 64068a48a2..3fb6b35bb9 100644
--- a/doc/src/snippets/code/src_gui_text_qsyntaxhighlighter.cpp
+++ b/doc/src/snippets/code/src_gui_text_qsyntaxhighlighter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_text_qtextcursor.cpp b/doc/src/snippets/code/src_gui_text_qtextcursor.cpp
index 9ce2566f53..7954f66cbd 100644
--- a/doc/src/snippets/code/src_gui_text_qtextcursor.cpp
+++ b/doc/src/snippets/code/src_gui_text_qtextcursor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_text_qtextdocument.cpp b/doc/src/snippets/code/src_gui_text_qtextdocument.cpp
index 299967adbf..23ebf8b2d2 100644
--- a/doc/src/snippets/code/src_gui_text_qtextdocument.cpp
+++ b/doc/src/snippets/code/src_gui_text_qtextdocument.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_text_qtextlayout.cpp b/doc/src/snippets/code/src_gui_text_qtextlayout.cpp
index 9f51f071e4..c8e1d2e010 100644
--- a/doc/src/snippets/code/src_gui_text_qtextlayout.cpp
+++ b/doc/src/snippets/code/src_gui_text_qtextlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_util_qcompleter.cpp b/doc/src/snippets/code/src_gui_util_qcompleter.cpp
index 7d903aa72a..2e8eac17ad 100644
--- a/doc/src/snippets/code/src_gui_util_qcompleter.cpp
+++ b/doc/src/snippets/code/src_gui_util_qcompleter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_util_qdesktopservices.cpp b/doc/src/snippets/code/src_gui_util_qdesktopservices.cpp
index 885268a7ac..0b4739841b 100644
--- a/doc/src/snippets/code/src_gui_util_qdesktopservices.cpp
+++ b/doc/src/snippets/code/src_gui_util_qdesktopservices.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_util_qundostack.cpp b/doc/src/snippets/code/src_gui_util_qundostack.cpp
index f022d963ad..7e06a8ef6f 100644
--- a/doc/src/snippets/code/src_gui_util_qundostack.cpp
+++ b/doc/src/snippets/code/src_gui_util_qundostack.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qabstractbutton.cpp b/doc/src/snippets/code/src_gui_widgets_qabstractbutton.cpp
index 073f49bf31..948ed0e958 100644
--- a/doc/src/snippets/code/src_gui_widgets_qabstractbutton.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qabstractbutton.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qabstractspinbox.cpp b/doc/src/snippets/code/src_gui_widgets_qabstractspinbox.cpp
index c35ca00916..66f3449760 100644
--- a/doc/src/snippets/code/src_gui_widgets_qabstractspinbox.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qabstractspinbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qcalendarwidget.cpp b/doc/src/snippets/code/src_gui_widgets_qcalendarwidget.cpp
index 9b4bf904fa..6f99bdf0ce 100644
--- a/doc/src/snippets/code/src_gui_widgets_qcalendarwidget.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qcalendarwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qcheckbox.cpp b/doc/src/snippets/code/src_gui_widgets_qcheckbox.cpp
index f2e03f04aa..71ee59bc85 100644
--- a/doc/src/snippets/code/src_gui_widgets_qcheckbox.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qcheckbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qdatetimeedit.cpp b/doc/src/snippets/code/src_gui_widgets_qdatetimeedit.cpp
index 2d0f69634a..5eb9e739ea 100644
--- a/doc/src/snippets/code/src_gui_widgets_qdatetimeedit.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qdatetimeedit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qdockwidget.cpp b/doc/src/snippets/code/src_gui_widgets_qdockwidget.cpp
index 15f7de40f1..690e3d5f33 100644
--- a/doc/src/snippets/code/src_gui_widgets_qdockwidget.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qdockwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qframe.cpp b/doc/src/snippets/code/src_gui_widgets_qframe.cpp
index b2c56b2e18..6e3afcd8cf 100644
--- a/doc/src/snippets/code/src_gui_widgets_qframe.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qframe.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qgroupbox.cpp b/doc/src/snippets/code/src_gui_widgets_qgroupbox.cpp
index 9242a849fa..fc0339f690 100644
--- a/doc/src/snippets/code/src_gui_widgets_qgroupbox.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qgroupbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qlabel.cpp b/doc/src/snippets/code/src_gui_widgets_qlabel.cpp
index 80f24f779a..83b02a2f22 100644
--- a/doc/src/snippets/code/src_gui_widgets_qlabel.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qlabel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qlineedit.cpp b/doc/src/snippets/code/src_gui_widgets_qlineedit.cpp
index 40b11e408a..12ed38ad65 100644
--- a/doc/src/snippets/code/src_gui_widgets_qlineedit.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qlineedit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qmainwindow.cpp b/doc/src/snippets/code/src_gui_widgets_qmainwindow.cpp
index 4d631217be..3558922ec9 100644
--- a/doc/src/snippets/code/src_gui_widgets_qmainwindow.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qmainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qmenu.cpp b/doc/src/snippets/code/src_gui_widgets_qmenu.cpp
index 332725a6f3..5799248bf4 100644
--- a/doc/src/snippets/code/src_gui_widgets_qmenu.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qmenu.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qmenubar.cpp b/doc/src/snippets/code/src_gui_widgets_qmenubar.cpp
index a1d24e5c35..412bc2d5eb 100644
--- a/doc/src/snippets/code/src_gui_widgets_qmenubar.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qmenubar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qplaintextedit.cpp b/doc/src/snippets/code/src_gui_widgets_qplaintextedit.cpp
index 93c077adf2..931c6c69a6 100644
--- a/doc/src/snippets/code/src_gui_widgets_qplaintextedit.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qplaintextedit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qpushbutton.cpp b/doc/src/snippets/code/src_gui_widgets_qpushbutton.cpp
index 36c490a291..e0ae945620 100644
--- a/doc/src/snippets/code/src_gui_widgets_qpushbutton.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qpushbutton.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qradiobutton.cpp b/doc/src/snippets/code/src_gui_widgets_qradiobutton.cpp
index 7b29d18cbd..a93809fa5d 100644
--- a/doc/src/snippets/code/src_gui_widgets_qradiobutton.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qradiobutton.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qrubberband.cpp b/doc/src/snippets/code/src_gui_widgets_qrubberband.cpp
index c0bfc3331a..b8d6a14d1c 100644
--- a/doc/src/snippets/code/src_gui_widgets_qrubberband.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qrubberband.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qscrollarea.cpp b/doc/src/snippets/code/src_gui_widgets_qscrollarea.cpp
index 25f20ad6ab..9c90a0c53d 100644
--- a/doc/src/snippets/code/src_gui_widgets_qscrollarea.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qscrollarea.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qspinbox.cpp b/doc/src/snippets/code/src_gui_widgets_qspinbox.cpp
index ff88a52b35..fc1f5b7e47 100644
--- a/doc/src/snippets/code/src_gui_widgets_qspinbox.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qspinbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qsplashscreen.cpp b/doc/src/snippets/code/src_gui_widgets_qsplashscreen.cpp
index 17bd6f8536..48f1051e2c 100644
--- a/doc/src/snippets/code/src_gui_widgets_qsplashscreen.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qsplashscreen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qsplitter.cpp b/doc/src/snippets/code/src_gui_widgets_qsplitter.cpp
index 3fdc5d4eb1..18007a4cdf 100644
--- a/doc/src/snippets/code/src_gui_widgets_qsplitter.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qsplitter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qstatusbar.cpp b/doc/src/snippets/code/src_gui_widgets_qstatusbar.cpp
index 6fdc7980c9..6ea752b237 100644
--- a/doc/src/snippets/code/src_gui_widgets_qstatusbar.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qstatusbar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qtextbrowser.cpp b/doc/src/snippets/code/src_gui_widgets_qtextbrowser.cpp
index 4078b3bd6b..ed30c2d80a 100644
--- a/doc/src/snippets/code/src_gui_widgets_qtextbrowser.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qtextbrowser.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qtextedit.cpp b/doc/src/snippets/code/src_gui_widgets_qtextedit.cpp
index 8284247cc3..cd1ae62c84 100644
--- a/doc/src/snippets/code/src_gui_widgets_qtextedit.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qtextedit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qvalidator.cpp b/doc/src/snippets/code/src_gui_widgets_qvalidator.cpp
index bcdfb0b5aa..2f769c5860 100644
--- a/doc/src/snippets/code/src_gui_widgets_qvalidator.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qvalidator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_gui_widgets_qworkspace.cpp b/doc/src/snippets/code/src_gui_widgets_qworkspace.cpp
index 22ac81afab..a809786738 100644
--- a/doc/src/snippets/code/src_gui_widgets_qworkspace.cpp
+++ b/doc/src/snippets/code/src_gui_widgets_qworkspace.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_access_qftp.cpp b/doc/src/snippets/code/src_network_access_qftp.cpp
index b6047185aa..db1817ce9f 100644
--- a/doc/src/snippets/code/src_network_access_qftp.cpp
+++ b/doc/src/snippets/code/src_network_access_qftp.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_access_qhttp.cpp b/doc/src/snippets/code/src_network_access_qhttp.cpp
index 1922563f62..8b8543e17e 100644
--- a/doc/src/snippets/code/src_network_access_qhttp.cpp
+++ b/doc/src/snippets/code/src_network_access_qhttp.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_access_qhttpmultipart.cpp b/doc/src/snippets/code/src_network_access_qhttpmultipart.cpp
index 2b6032316b..981a93a3ca 100644
--- a/doc/src/snippets/code/src_network_access_qhttpmultipart.cpp
+++ b/doc/src/snippets/code/src_network_access_qhttpmultipart.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_access_qhttppart.cpp b/doc/src/snippets/code/src_network_access_qhttppart.cpp
index 3a16253d81..1dca3d6683 100644
--- a/doc/src/snippets/code/src_network_access_qhttppart.cpp
+++ b/doc/src/snippets/code/src_network_access_qhttppart.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_access_qnetworkaccessmanager.cpp b/doc/src/snippets/code/src_network_access_qnetworkaccessmanager.cpp
index c8818e94c4..ab8fc97d04 100644
--- a/doc/src/snippets/code/src_network_access_qnetworkaccessmanager.cpp
+++ b/doc/src/snippets/code/src_network_access_qnetworkaccessmanager.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_access_qnetworkdiskcache.cpp b/doc/src/snippets/code/src_network_access_qnetworkdiskcache.cpp
index 2a0b5a62f9..bc272a2223 100644
--- a/doc/src/snippets/code/src_network_access_qnetworkdiskcache.cpp
+++ b/doc/src/snippets/code/src_network_access_qnetworkdiskcache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_access_qnetworkreply.cpp b/doc/src/snippets/code/src_network_access_qnetworkreply.cpp
index 90d26f900b..0f1b4c2014 100644
--- a/doc/src/snippets/code/src_network_access_qnetworkreply.cpp
+++ b/doc/src/snippets/code/src_network_access_qnetworkreply.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_access_qnetworkrequest.cpp b/doc/src/snippets/code/src_network_access_qnetworkrequest.cpp
index 75da0909db..bdf696e851 100644
--- a/doc/src/snippets/code/src_network_access_qnetworkrequest.cpp
+++ b/doc/src/snippets/code/src_network_access_qnetworkrequest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_bearer_qnetworkconfigmanager.cpp b/doc/src/snippets/code/src_network_bearer_qnetworkconfigmanager.cpp
index 19d103a60d..2d62d758b7 100644
--- a/doc/src/snippets/code/src_network_bearer_qnetworkconfigmanager.cpp
+++ b/doc/src/snippets/code/src_network_bearer_qnetworkconfigmanager.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_kernel_qdnslookup.cpp b/doc/src/snippets/code/src_network_kernel_qdnslookup.cpp
new file mode 100644
index 0000000000..f2e530ff96
--- /dev/null
+++ b/doc/src/snippets/code/src_network_kernel_qdnslookup.cpp
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Jeremy Lainé <jeremy.laine@m4x.org>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+//! [0]
+void MyObject::lookupServers()
+{
+ // Create a DNS lookup.
+ dns = new QDnsLookup(this);
+ connect(dns, SIGNAL(finished()),
+ this, SLOT(handleServers()));
+
+ // Find the XMPP servers for gmail.com
+ dns->setType(QDnsLookup::SRV);
+ dns->setName("_xmpp-client._tcp.gmail.com");
+ dns->lookup();
+}
+//! [0]
+
+
+//! [1]
+void MyObject::handleServers()
+{
+ // Check the lookup succeeded.
+ if (dns->error() != QDnsLookup::NoError) {
+ qWarning("DNS lookup failed");
+ dns->deleteLater();
+ return;
+ }
+
+ // Handle the results.
+ foreach (const QDnsServiceRecord &record, dns->serviceRecords()) {
+ ...
+ }
+ dns->deleteLater();
+}
+//! [1]
diff --git a/doc/src/snippets/code/src_network_kernel_qhostaddress.cpp b/doc/src/snippets/code/src_network_kernel_qhostaddress.cpp
index 8f5524ef7c..c03054c243 100644
--- a/doc/src/snippets/code/src_network_kernel_qhostaddress.cpp
+++ b/doc/src/snippets/code/src_network_kernel_qhostaddress.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_kernel_qhostinfo.cpp b/doc/src/snippets/code/src_network_kernel_qhostinfo.cpp
index 585e8a46c3..7607841ac5 100644
--- a/doc/src/snippets/code/src_network_kernel_qhostinfo.cpp
+++ b/doc/src/snippets/code/src_network_kernel_qhostinfo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_kernel_qnetworkproxy.cpp b/doc/src/snippets/code/src_network_kernel_qnetworkproxy.cpp
index 2eb9b19edc..eadf4f91a5 100644
--- a/doc/src/snippets/code/src_network_kernel_qnetworkproxy.cpp
+++ b/doc/src/snippets/code/src_network_kernel_qnetworkproxy.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_socket_qabstractsocket.cpp b/doc/src/snippets/code/src_network_socket_qabstractsocket.cpp
index 2170f9b17f..b419b33c92 100644
--- a/doc/src/snippets/code/src_network_socket_qabstractsocket.cpp
+++ b/doc/src/snippets/code/src_network_socket_qabstractsocket.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_socket_qlocalsocket_unix.cpp b/doc/src/snippets/code/src_network_socket_qlocalsocket_unix.cpp
index ddc9174d5b..947e89900a 100644
--- a/doc/src/snippets/code/src_network_socket_qlocalsocket_unix.cpp
+++ b/doc/src/snippets/code/src_network_socket_qlocalsocket_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_socket_qnativesocketengine.cpp b/doc/src/snippets/code/src_network_socket_qnativesocketengine.cpp
index 2f72f12887..98ac70cc49 100644
--- a/doc/src/snippets/code/src_network_socket_qnativesocketengine.cpp
+++ b/doc/src/snippets/code/src_network_socket_qnativesocketengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_socket_qtcpserver.cpp b/doc/src/snippets/code/src_network_socket_qtcpserver.cpp
index 6be3a5c110..90c4a86836 100644
--- a/doc/src/snippets/code/src_network_socket_qtcpserver.cpp
+++ b/doc/src/snippets/code/src_network_socket_qtcpserver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_socket_qudpsocket.cpp b/doc/src/snippets/code/src_network_socket_qudpsocket.cpp
index e087831c71..2a90772623 100644
--- a/doc/src/snippets/code/src_network_socket_qudpsocket.cpp
+++ b/doc/src/snippets/code/src_network_socket_qudpsocket.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_ssl_qsslcertificate.cpp b/doc/src/snippets/code/src_network_ssl_qsslcertificate.cpp
index c64fce45ee..0538990a3d 100644
--- a/doc/src/snippets/code/src_network_ssl_qsslcertificate.cpp
+++ b/doc/src/snippets/code/src_network_ssl_qsslcertificate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_ssl_qsslconfiguration.cpp b/doc/src/snippets/code/src_network_ssl_qsslconfiguration.cpp
index b15463c964..a3a08f68d1 100644
--- a/doc/src/snippets/code/src_network_ssl_qsslconfiguration.cpp
+++ b/doc/src/snippets/code/src_network_ssl_qsslconfiguration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_network_ssl_qsslsocket.cpp b/doc/src/snippets/code/src_network_ssl_qsslsocket.cpp
index 24365a3005..4d8e3668b5 100644
--- a/doc/src/snippets/code/src_network_ssl_qsslsocket.cpp
+++ b/doc/src/snippets/code/src_network_ssl_qsslsocket.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_opengl_qgl.cpp b/doc/src/snippets/code/src_opengl_qgl.cpp
index 98c1fc08c2..4adc126159 100644
--- a/doc/src/snippets/code/src_opengl_qgl.cpp
+++ b/doc/src/snippets/code/src_opengl_qgl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_opengl_qglcolormap.cpp b/doc/src/snippets/code/src_opengl_qglcolormap.cpp
index 9371700c1f..04384c1af8 100644
--- a/doc/src/snippets/code/src_opengl_qglcolormap.cpp
+++ b/doc/src/snippets/code/src_opengl_qglcolormap.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_opengl_qglpixelbuffer.cpp b/doc/src/snippets/code/src_opengl_qglpixelbuffer.cpp
index 89593484c2..e44ac23d1a 100644
--- a/doc/src/snippets/code/src_opengl_qglpixelbuffer.cpp
+++ b/doc/src/snippets/code/src_opengl_qglpixelbuffer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_opengl_qglshaderprogram.cpp b/doc/src/snippets/code/src_opengl_qglshaderprogram.cpp
index 634412a078..d0474c1899 100644
--- a/doc/src/snippets/code/src_opengl_qglshaderprogram.cpp
+++ b/doc/src/snippets/code/src_opengl_qglshaderprogram.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_qdbus_qdbusabstractinterface.cpp b/doc/src/snippets/code/src_qdbus_qdbusabstractinterface.cpp
index be378bfd44..c16380f569 100644
--- a/doc/src/snippets/code/src_qdbus_qdbusabstractinterface.cpp
+++ b/doc/src/snippets/code/src_qdbus_qdbusabstractinterface.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_qdbus_qdbusargument.cpp b/doc/src/snippets/code/src_qdbus_qdbusargument.cpp
index 4ee70a69ec..6fa0ec5fa3 100644
--- a/doc/src/snippets/code/src_qdbus_qdbusargument.cpp
+++ b/doc/src/snippets/code/src_qdbus_qdbusargument.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_qdbus_qdbuscontext.cpp b/doc/src/snippets/code/src_qdbus_qdbuscontext.cpp
index 040afa59da..9ea2038aab 100644
--- a/doc/src/snippets/code/src_qdbus_qdbuscontext.cpp
+++ b/doc/src/snippets/code/src_qdbus_qdbuscontext.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_qdbus_qdbusinterface.cpp b/doc/src/snippets/code/src_qdbus_qdbusinterface.cpp
index 1cd7afe304..0bcc3deff3 100644
--- a/doc/src/snippets/code/src_qdbus_qdbusinterface.cpp
+++ b/doc/src/snippets/code/src_qdbus_qdbusinterface.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_qdbus_qdbusmetatype.cpp b/doc/src/snippets/code/src_qdbus_qdbusmetatype.cpp
index 6013fcb16c..6c12464b78 100644
--- a/doc/src/snippets/code/src_qdbus_qdbusmetatype.cpp
+++ b/doc/src/snippets/code/src_qdbus_qdbusmetatype.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_qdbus_qdbusreply.cpp b/doc/src/snippets/code/src_qdbus_qdbusreply.cpp
index ea8048070b..326f395058 100644
--- a/doc/src/snippets/code/src_qdbus_qdbusreply.cpp
+++ b/doc/src/snippets/code/src_qdbus_qdbusreply.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_qtestlib_qtestcase.cpp b/doc/src/snippets/code/src_qtestlib_qtestcase.cpp
index cf872b1245..2c6565edf5 100644
--- a/doc/src/snippets/code/src_qtestlib_qtestcase.cpp
+++ b/doc/src/snippets/code/src_qtestlib_qtestcase.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_sql_kernel_qsqldatabase.cpp b/doc/src/snippets/code/src_sql_kernel_qsqldatabase.cpp
index 4316b04324..d181b6eb14 100644
--- a/doc/src/snippets/code/src_sql_kernel_qsqldatabase.cpp
+++ b/doc/src/snippets/code/src_sql_kernel_qsqldatabase.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_sql_kernel_qsqldriver.cpp b/doc/src/snippets/code/src_sql_kernel_qsqldriver.cpp
index 9e695b8361..254a35aba2 100644
--- a/doc/src/snippets/code/src_sql_kernel_qsqldriver.cpp
+++ b/doc/src/snippets/code/src_sql_kernel_qsqldriver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_sql_kernel_qsqlerror.cpp b/doc/src/snippets/code/src_sql_kernel_qsqlerror.cpp
index 38a9f6a31f..9914206193 100644
--- a/doc/src/snippets/code/src_sql_kernel_qsqlerror.cpp
+++ b/doc/src/snippets/code/src_sql_kernel_qsqlerror.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_sql_kernel_qsqlindex.cpp b/doc/src/snippets/code/src_sql_kernel_qsqlindex.cpp
index f86fb3b68b..0f2f7c55a8 100644
--- a/doc/src/snippets/code/src_sql_kernel_qsqlindex.cpp
+++ b/doc/src/snippets/code/src_sql_kernel_qsqlindex.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_sql_kernel_qsqlquery.cpp b/doc/src/snippets/code/src_sql_kernel_qsqlquery.cpp
index c4861f4e9e..c540f8bd59 100644
--- a/doc/src/snippets/code/src_sql_kernel_qsqlquery.cpp
+++ b/doc/src/snippets/code/src_sql_kernel_qsqlquery.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_sql_kernel_qsqlresult.cpp b/doc/src/snippets/code/src_sql_kernel_qsqlresult.cpp
index d267a7bb02..773af85ab9 100644
--- a/doc/src/snippets/code/src_sql_kernel_qsqlresult.cpp
+++ b/doc/src/snippets/code/src_sql_kernel_qsqlresult.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_sql_models_qsqlquerymodel.cpp b/doc/src/snippets/code/src_sql_models_qsqlquerymodel.cpp
index 3bf255f626..71c96b0207 100644
--- a/doc/src/snippets/code/src_sql_models_qsqlquerymodel.cpp
+++ b/doc/src/snippets/code/src_sql_models_qsqlquerymodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_xml_dom_qdom.cpp b/doc/src/snippets/code/src_xml_dom_qdom.cpp
index f25879879e..f8c2382f04 100644
--- a/doc/src/snippets/code/src_xml_dom_qdom.cpp
+++ b/doc/src/snippets/code/src_xml_dom_qdom.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/code/src_xml_sax_qxml.cpp b/doc/src/snippets/code/src_xml_sax_qxml.cpp
index 45e489d48d..4b9dc4a129 100644
--- a/doc/src/snippets/code/src_xml_sax_qxml.cpp
+++ b/doc/src/snippets/code/src_xml_sax_qxml.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/customstyle/customstyle.cpp b/doc/src/snippets/customstyle/customstyle.cpp
index d9f6e53024..2e0843c49c 100644
--- a/doc/src/snippets/customstyle/customstyle.cpp
+++ b/doc/src/snippets/customstyle/customstyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/customstyle/customstyle.h b/doc/src/snippets/customstyle/customstyle.h
index 9d695fdab7..437994d2e2 100644
--- a/doc/src/snippets/customstyle/customstyle.h
+++ b/doc/src/snippets/customstyle/customstyle.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/customviewstyle.cpp b/doc/src/snippets/customviewstyle.cpp
index 18f61f98fa..55a766d17d 100644
--- a/doc/src/snippets/customviewstyle.cpp
+++ b/doc/src/snippets/customviewstyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/dialogs/dialogs.cpp b/doc/src/snippets/dialogs/dialogs.cpp
index b31557c554..78916f862c 100644
--- a/doc/src/snippets/dialogs/dialogs.cpp
+++ b/doc/src/snippets/dialogs/dialogs.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/dockwidgets/mainwindow.cpp b/doc/src/snippets/dockwidgets/mainwindow.cpp
index d820ee330b..882af70b64 100644
--- a/doc/src/snippets/dockwidgets/mainwindow.cpp
+++ b/doc/src/snippets/dockwidgets/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/dragging/mainwindow.cpp b/doc/src/snippets/dragging/mainwindow.cpp
index 6fc87810bc..57f1abc22d 100644
--- a/doc/src/snippets/dragging/mainwindow.cpp
+++ b/doc/src/snippets/dragging/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/droparea.cpp b/doc/src/snippets/droparea.cpp
index ed614e1389..27d52d1b89 100644
--- a/doc/src/snippets/droparea.cpp
+++ b/doc/src/snippets/droparea.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/file/file.cpp b/doc/src/snippets/file/file.cpp
index bf1a298595..f03c6e6847 100644
--- a/doc/src/snippets/file/file.cpp
+++ b/doc/src/snippets/file/file.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/filedialogurls.cpp b/doc/src/snippets/filedialogurls.cpp
index b6e33a8d5b..b1e41cbcad 100644
--- a/doc/src/snippets/filedialogurls.cpp
+++ b/doc/src/snippets/filedialogurls.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/fileinfo/main.cpp b/doc/src/snippets/fileinfo/main.cpp
index 7162da7ba7..48d8223d79 100644
--- a/doc/src/snippets/fileinfo/main.cpp
+++ b/doc/src/snippets/fileinfo/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/graphicssceneadditemsnippet.cpp b/doc/src/snippets/graphicssceneadditemsnippet.cpp
index f0c2bb6bd2..1130a59217 100644
--- a/doc/src/snippets/graphicssceneadditemsnippet.cpp
+++ b/doc/src/snippets/graphicssceneadditemsnippet.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/image/image.cpp b/doc/src/snippets/image/image.cpp
index d89aa818b6..1dfe41f8cd 100644
--- a/doc/src/snippets/image/image.cpp
+++ b/doc/src/snippets/image/image.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/image/supportedformat.cpp b/doc/src/snippets/image/supportedformat.cpp
index b9aede2def..6d481908e8 100644
--- a/doc/src/snippets/image/supportedformat.cpp
+++ b/doc/src/snippets/image/supportedformat.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/javastyle.cpp b/doc/src/snippets/javastyle.cpp
index e64b89b366..a00df57e82 100644
--- a/doc/src/snippets/javastyle.cpp
+++ b/doc/src/snippets/javastyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/layouts/layouts.cpp b/doc/src/snippets/layouts/layouts.cpp
index 2fce924e87..49c341c048 100644
--- a/doc/src/snippets/layouts/layouts.cpp
+++ b/doc/src/snippets/layouts/layouts.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/mainwindowsnippet.cpp b/doc/src/snippets/mainwindowsnippet.cpp
index c090636b76..76305e9ce2 100644
--- a/doc/src/snippets/mainwindowsnippet.cpp
+++ b/doc/src/snippets/mainwindowsnippet.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/matrix/matrix.cpp b/doc/src/snippets/matrix/matrix.cpp
index 43d50cd0d1..2aa2606fc6 100644
--- a/doc/src/snippets/matrix/matrix.cpp
+++ b/doc/src/snippets/matrix/matrix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/mdiareasnippets.cpp b/doc/src/snippets/mdiareasnippets.cpp
index 1928ddd254..711f25bd83 100644
--- a/doc/src/snippets/mdiareasnippets.cpp
+++ b/doc/src/snippets/mdiareasnippets.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/myscrollarea.cpp b/doc/src/snippets/myscrollarea.cpp
index ed27fc6119..a6a575f922 100644
--- a/doc/src/snippets/myscrollarea.cpp
+++ b/doc/src/snippets/myscrollarea.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/network/tcpwait.cpp b/doc/src/snippets/network/tcpwait.cpp
index 4d1c3525b2..9ee68e5b13 100644
--- a/doc/src/snippets/network/tcpwait.cpp
+++ b/doc/src/snippets/network/tcpwait.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/ntfsp.cpp b/doc/src/snippets/ntfsp.cpp
index b7cf337aae..8f2ff1fc98 100644
--- a/doc/src/snippets/ntfsp.cpp
+++ b/doc/src/snippets/ntfsp.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/picture/picture.cpp b/doc/src/snippets/picture/picture.cpp
index a0a68ff633..8de5e32323 100644
--- a/doc/src/snippets/picture/picture.cpp
+++ b/doc/src/snippets/picture/picture.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/pointer/pointer.cpp b/doc/src/snippets/pointer/pointer.cpp
index 270ae0c18f..dd2bc82102 100644
--- a/doc/src/snippets/pointer/pointer.cpp
+++ b/doc/src/snippets/pointer/pointer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/polygon/polygon.cpp b/doc/src/snippets/polygon/polygon.cpp
index 30e2ec6ce4..432156f8e6 100644
--- a/doc/src/snippets/polygon/polygon.cpp
+++ b/doc/src/snippets/polygon/polygon.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/printing-qprinter/errors.cpp b/doc/src/snippets/printing-qprinter/errors.cpp
index b850dd3e9b..f202d4f6a1 100644
--- a/doc/src/snippets/printing-qprinter/errors.cpp
+++ b/doc/src/snippets/printing-qprinter/errors.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/printing-qprinter/object.cpp b/doc/src/snippets/printing-qprinter/object.cpp
index 99434bb6ce..4125c9757c 100644
--- a/doc/src/snippets/printing-qprinter/object.cpp
+++ b/doc/src/snippets/printing-qprinter/object.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/process/process.cpp b/doc/src/snippets/process/process.cpp
index 3e14ab0fb1..19f241a695 100644
--- a/doc/src/snippets/process/process.cpp
+++ b/doc/src/snippets/process/process.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qdbusextratypes/qdbusextratypes.cpp b/doc/src/snippets/qdbusextratypes/qdbusextratypes.cpp
index 7380923ef4..69c1d05cd5 100644
--- a/doc/src/snippets/qdbusextratypes/qdbusextratypes.cpp
+++ b/doc/src/snippets/qdbusextratypes/qdbusextratypes.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qdebug/qdebugsnippet.cpp b/doc/src/snippets/qdebug/qdebugsnippet.cpp
index 542bb0d322..2dbfe49c7d 100644
--- a/doc/src/snippets/qdebug/qdebugsnippet.cpp
+++ b/doc/src/snippets/qdebug/qdebugsnippet.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qdir-listfiles/main.cpp b/doc/src/snippets/qdir-listfiles/main.cpp
index 3cbb20240f..599046aabd 100644
--- a/doc/src/snippets/qdir-listfiles/main.cpp
+++ b/doc/src/snippets/qdir-listfiles/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qdir-namefilters/main.cpp b/doc/src/snippets/qdir-namefilters/main.cpp
index 952b3cf967..7b48f7eaf7 100644
--- a/doc/src/snippets/qdir-namefilters/main.cpp
+++ b/doc/src/snippets/qdir-namefilters/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qelapsedtimer/main.cpp b/doc/src/snippets/qelapsedtimer/main.cpp
index 4b503cac0f..7b4b6529e7 100644
--- a/doc/src/snippets/qelapsedtimer/main.cpp
+++ b/doc/src/snippets/qelapsedtimer/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qfontdatabase/main.cpp b/doc/src/snippets/qfontdatabase/main.cpp
index c54eb1cf09..8e98e309a0 100644
--- a/doc/src/snippets/qfontdatabase/main.cpp
+++ b/doc/src/snippets/qfontdatabase/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qlistwidget-using/mainwindow.cpp b/doc/src/snippets/qlistwidget-using/mainwindow.cpp
index ec770953c8..8e30f7979b 100644
--- a/doc/src/snippets/qlistwidget-using/mainwindow.cpp
+++ b/doc/src/snippets/qlistwidget-using/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qlogging/qloggingsnippet.cpp b/doc/src/snippets/qlogging/qloggingsnippet.cpp
new file mode 100644
index 0000000000..74892cdfba
--- /dev/null
+++ b/doc/src/snippets/qlogging/qloggingsnippet.cpp
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the documentation of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QtGui>
+#include <QtDebug>
+#include <QDeclarativeComponent>
+
+//! [1]
+ void statusChanged(QDeclarativeComponent::Status status) {
+ if (status == QDeclarativeComponent::Error) {
+ foreach (const QDeclarativeError &error, component->errors()) {
+ const QByteArray file = error.url().toEncoded();
+ QMessageLogger(file.constData(), error.line(), 0).debug() << error.description();
+ }
+ }
+ }
+//! [1]
diff --git a/doc/src/snippets/qmacnativewidget/main.mm b/doc/src/snippets/qmacnativewidget/main.mm
index 53ff104dd9..2c5c49769a 100644
--- a/doc/src/snippets/qmacnativewidget/main.mm
+++ b/doc/src/snippets/qmacnativewidget/main.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qmetaobject-invokable/main.cpp b/doc/src/snippets/qmetaobject-invokable/main.cpp
index 220e49a12e..b22df1ea15 100644
--- a/doc/src/snippets/qmetaobject-invokable/main.cpp
+++ b/doc/src/snippets/qmetaobject-invokable/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qmetaobject-invokable/window.cpp b/doc/src/snippets/qmetaobject-invokable/window.cpp
index 4fd64c5339..5ab8d83f63 100644
--- a/doc/src/snippets/qmetaobject-invokable/window.cpp
+++ b/doc/src/snippets/qmetaobject-invokable/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qmetaobject-invokable/window.h b/doc/src/snippets/qmetaobject-invokable/window.h
index a89887d418..f2f34792e5 100644
--- a/doc/src/snippets/qmetaobject-invokable/window.h
+++ b/doc/src/snippets/qmetaobject-invokable/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qprocess-environment/main.cpp b/doc/src/snippets/qprocess-environment/main.cpp
index 5fbf4a450d..124668a544 100644
--- a/doc/src/snippets/qprocess-environment/main.cpp
+++ b/doc/src/snippets/qprocess-environment/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qprocess/qprocess-simpleexecution.cpp b/doc/src/snippets/qprocess/qprocess-simpleexecution.cpp
index 14203b1154..ea1892078e 100644
--- a/doc/src/snippets/qprocess/qprocess-simpleexecution.cpp
+++ b/doc/src/snippets/qprocess/qprocess-simpleexecution.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qsignalmapper/buttonwidget.cpp b/doc/src/snippets/qsignalmapper/buttonwidget.cpp
index 716a37df85..cda905e3a2 100644
--- a/doc/src/snippets/qsignalmapper/buttonwidget.cpp
+++ b/doc/src/snippets/qsignalmapper/buttonwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qsignalmapper/buttonwidget.h b/doc/src/snippets/qsignalmapper/buttonwidget.h
index 15c2b6317b..9204de935a 100644
--- a/doc/src/snippets/qsignalmapper/buttonwidget.h
+++ b/doc/src/snippets/qsignalmapper/buttonwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qsortfilterproxymodel-details/main.cpp b/doc/src/snippets/qsortfilterproxymodel-details/main.cpp
index 2b8308e2ad..549d24b249 100644
--- a/doc/src/snippets/qsortfilterproxymodel-details/main.cpp
+++ b/doc/src/snippets/qsortfilterproxymodel-details/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qsplashscreen/main.cpp b/doc/src/snippets/qsplashscreen/main.cpp
index 047064d660..49bc084412 100644
--- a/doc/src/snippets/qsplashscreen/main.cpp
+++ b/doc/src/snippets/qsplashscreen/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qstack/main.cpp b/doc/src/snippets/qstack/main.cpp
index b05e0c3455..cc96f8c55d 100644
--- a/doc/src/snippets/qstack/main.cpp
+++ b/doc/src/snippets/qstack/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qstackedlayout/main.cpp b/doc/src/snippets/qstackedlayout/main.cpp
index cc38b6a34a..771c36c721 100644
--- a/doc/src/snippets/qstackedlayout/main.cpp
+++ b/doc/src/snippets/qstackedlayout/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qstackedwidget/main.cpp b/doc/src/snippets/qstackedwidget/main.cpp
index b269d81c57..9a29d773e6 100644
--- a/doc/src/snippets/qstackedwidget/main.cpp
+++ b/doc/src/snippets/qstackedwidget/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qstatustipevent/main.cpp b/doc/src/snippets/qstatustipevent/main.cpp
index 997b1c4bd9..9a1948f4e8 100644
--- a/doc/src/snippets/qstatustipevent/main.cpp
+++ b/doc/src/snippets/qstatustipevent/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qstring/main.cpp b/doc/src/snippets/qstring/main.cpp
index 00c33c286b..d0a445731c 100644
--- a/doc/src/snippets/qstring/main.cpp
+++ b/doc/src/snippets/qstring/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -737,20 +737,15 @@ void Widget::toDoubleFunction()
d = QString( "1234.56e-02" ).toDouble(&ok); // ok == true, d == 12.3456
//! [67]
- //! [68] //! [69]
- QLocale::setDefault(QLocale::C);
- d = QString( "1234,56" ).toDouble(&ok); // ok == false
//! [68]
+ d = QString( "1234,56" ).toDouble(&ok); // ok == false
d = QString( "1234.56" ).toDouble(&ok); // ok == true, d == 1234.56
+ //! [68]
- //! [69] //! [70]
- QLocale::setDefault(QLocale::German);
- d = QString( "1234,56" ).toDouble(&ok); // ok == true, d == 1234.56
- d = QString( "1234.56" ).toDouble(&ok); // ok == true, d == 1234.56
-
- //! [70]
- QLocale::setDefault(QLocale::C);
+ //! [69]
d = QString( "1,234,567.89" ).toDouble(&ok); // ok == false
+ d = QString( "1234567.89" ).toDouble(&ok); // ok == true
+ //! [69]
}
void Widget::toFloatFunction()
diff --git a/doc/src/snippets/qstring/stringbuilder.cpp b/doc/src/snippets/qstring/stringbuilder.cpp
index 170c409be7..53cf0b7be0 100644
--- a/doc/src/snippets/qstring/stringbuilder.cpp
+++ b/doc/src/snippets/qstring/stringbuilder.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qstringlist/main.cpp b/doc/src/snippets/qstringlist/main.cpp
index d8e746030b..d2d2afc281 100644
--- a/doc/src/snippets/qstringlist/main.cpp
+++ b/doc/src/snippets/qstringlist/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qstringlistmodel/main.cpp b/doc/src/snippets/qstringlistmodel/main.cpp
index e6897e9803..24de0fd0ae 100644
--- a/doc/src/snippets/qstringlistmodel/main.cpp
+++ b/doc/src/snippets/qstringlistmodel/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qstyleoption/main.cpp b/doc/src/snippets/qstyleoption/main.cpp
index 69ba6588d7..78f663012c 100644
--- a/doc/src/snippets/qstyleoption/main.cpp
+++ b/doc/src/snippets/qstyleoption/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qstyleplugin/main.cpp b/doc/src/snippets/qstyleplugin/main.cpp
index 74b45a14ad..10a122016f 100644
--- a/doc/src/snippets/qstyleplugin/main.cpp
+++ b/doc/src/snippets/qstyleplugin/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qtablewidget-resizing/mainwindow.cpp b/doc/src/snippets/qtablewidget-resizing/mainwindow.cpp
index 9c505dcd69..f3ab01784e 100644
--- a/doc/src/snippets/qtablewidget-resizing/mainwindow.cpp
+++ b/doc/src/snippets/qtablewidget-resizing/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qtablewidget-using/mainwindow.cpp b/doc/src/snippets/qtablewidget-using/mainwindow.cpp
index b21d854369..b03a5e4999 100644
--- a/doc/src/snippets/qtablewidget-using/mainwindow.cpp
+++ b/doc/src/snippets/qtablewidget-using/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qtcast/qtcast.cpp b/doc/src/snippets/qtcast/qtcast.cpp
index 49f2a42043..f0c3834bf0 100644
--- a/doc/src/snippets/qtcast/qtcast.cpp
+++ b/doc/src/snippets/qtcast/qtcast.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qtreewidget-using/mainwindow.cpp b/doc/src/snippets/qtreewidget-using/mainwindow.cpp
index 6db7b462b4..2a62c3e5f8 100644
--- a/doc/src/snippets/qtreewidget-using/mainwindow.cpp
+++ b/doc/src/snippets/qtreewidget-using/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qtreewidgetitemiterator-using/mainwindow.cpp b/doc/src/snippets/qtreewidgetitemiterator-using/mainwindow.cpp
index 5f83bb3d61..a0648b18c5 100644
--- a/doc/src/snippets/qtreewidgetitemiterator-using/mainwindow.cpp
+++ b/doc/src/snippets/qtreewidgetitemiterator-using/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/quiloader/main.cpp b/doc/src/snippets/quiloader/main.cpp
index 8facf78ac7..d364226922 100644
--- a/doc/src/snippets/quiloader/main.cpp
+++ b/doc/src/snippets/quiloader/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/quiloader/mywidget.cpp b/doc/src/snippets/quiloader/mywidget.cpp
index 31753dc5df..6c281a6c10 100644
--- a/doc/src/snippets/quiloader/mywidget.cpp
+++ b/doc/src/snippets/quiloader/mywidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qx11embedcontainer/main.cpp b/doc/src/snippets/qx11embedcontainer/main.cpp
index c8024afa10..e5cc13a570 100644
--- a/doc/src/snippets/qx11embedcontainer/main.cpp
+++ b/doc/src/snippets/qx11embedcontainer/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qx11embedwidget/main.cpp b/doc/src/snippets/qx11embedwidget/main.cpp
index b8a270d198..e23a5057bb 100644
--- a/doc/src/snippets/qx11embedwidget/main.cpp
+++ b/doc/src/snippets/qx11embedwidget/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/qxmlstreamwriter/main.cpp b/doc/src/snippets/qxmlstreamwriter/main.cpp
index 80dbe5d13a..907d779357 100644
--- a/doc/src/snippets/qxmlstreamwriter/main.cpp
+++ b/doc/src/snippets/qxmlstreamwriter/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/separations/finalwidget.cpp b/doc/src/snippets/separations/finalwidget.cpp
index fb81e4ce79..81a4aa1c42 100644
--- a/doc/src/snippets/separations/finalwidget.cpp
+++ b/doc/src/snippets/separations/finalwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/settings/settings.cpp b/doc/src/snippets/settings/settings.cpp
index ef34d5ef55..8648843d43 100644
--- a/doc/src/snippets/settings/settings.cpp
+++ b/doc/src/snippets/settings/settings.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/shareddirmodel/main.cpp b/doc/src/snippets/shareddirmodel/main.cpp
index 765a48add8..78d439b752 100644
--- a/doc/src/snippets/shareddirmodel/main.cpp
+++ b/doc/src/snippets/shareddirmodel/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/sharedemployee/employee.h b/doc/src/snippets/sharedemployee/employee.h
index aba6cc6be8..efb1d32000 100644
--- a/doc/src/snippets/sharedemployee/employee.h
+++ b/doc/src/snippets/sharedemployee/employee.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/sharedemployee/main.cpp b/doc/src/snippets/sharedemployee/main.cpp
index 2807421a7c..6e840ab5e6 100644
--- a/doc/src/snippets/sharedemployee/main.cpp
+++ b/doc/src/snippets/sharedemployee/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/signalmapper/filereader.cpp b/doc/src/snippets/signalmapper/filereader.cpp
index 20dfd5d5a6..067ba8280e 100644
--- a/doc/src/snippets/signalmapper/filereader.cpp
+++ b/doc/src/snippets/signalmapper/filereader.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the config.tests of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/signalsandslots/lcdnumber.h b/doc/src/snippets/signalsandslots/lcdnumber.h
index e2699b1570..7056254f9f 100644
--- a/doc/src/snippets/signalsandslots/lcdnumber.h
+++ b/doc/src/snippets/signalsandslots/lcdnumber.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/signalsandslots/signalsandslots.cpp b/doc/src/snippets/signalsandslots/signalsandslots.cpp
index a7cdc4eab0..3072650585 100644
--- a/doc/src/snippets/signalsandslots/signalsandslots.cpp
+++ b/doc/src/snippets/signalsandslots/signalsandslots.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/signalsandslots/signalsandslots.h b/doc/src/snippets/signalsandslots/signalsandslots.h
index d5eb2cb9a2..e18f955a41 100644
--- a/doc/src/snippets/signalsandslots/signalsandslots.h
+++ b/doc/src/snippets/signalsandslots/signalsandslots.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/splitter/splitter.cpp b/doc/src/snippets/splitter/splitter.cpp
index b0d72698b1..3908f1b0e3 100644
--- a/doc/src/snippets/splitter/splitter.cpp
+++ b/doc/src/snippets/splitter/splitter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/splitterhandle/splitter.cpp b/doc/src/snippets/splitterhandle/splitter.cpp
index 32d92f47d7..b8b729bb91 100644
--- a/doc/src/snippets/splitterhandle/splitter.cpp
+++ b/doc/src/snippets/splitterhandle/splitter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/splitterhandle/splitter.h b/doc/src/snippets/splitterhandle/splitter.h
index 692659f72a..ba310b9e8d 100644
--- a/doc/src/snippets/splitterhandle/splitter.h
+++ b/doc/src/snippets/splitterhandle/splitter.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/sqldatabase/sqldatabase.cpp b/doc/src/snippets/sqldatabase/sqldatabase.cpp
index c40b6896ec..305c79e6ea 100644
--- a/doc/src/snippets/sqldatabase/sqldatabase.cpp
+++ b/doc/src/snippets/sqldatabase/sqldatabase.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/streaming/main.cpp b/doc/src/snippets/streaming/main.cpp
index f905d12dc4..7c992345c2 100644
--- a/doc/src/snippets/streaming/main.cpp
+++ b/doc/src/snippets/streaming/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/styles/styles.cpp b/doc/src/snippets/styles/styles.cpp
index 18ed908f54..1109669bcb 100644
--- a/doc/src/snippets/styles/styles.cpp
+++ b/doc/src/snippets/styles/styles.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/stylesheet/common-mistakes.cpp b/doc/src/snippets/stylesheet/common-mistakes.cpp
index 7dbdc7ecf6..d4552fcf1d 100644
--- a/doc/src/snippets/stylesheet/common-mistakes.cpp
+++ b/doc/src/snippets/stylesheet/common-mistakes.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/textblock-fragments/xmlwriter.cpp b/doc/src/snippets/textblock-fragments/xmlwriter.cpp
index 421f0b8ec3..cd9beadd00 100644
--- a/doc/src/snippets/textblock-fragments/xmlwriter.cpp
+++ b/doc/src/snippets/textblock-fragments/xmlwriter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/textdocument-css/main.cpp b/doc/src/snippets/textdocument-css/main.cpp
index eb0f582022..55b8571224 100644
--- a/doc/src/snippets/textdocument-css/main.cpp
+++ b/doc/src/snippets/textdocument-css/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/textdocument-imagedrop/textedit.cpp b/doc/src/snippets/textdocument-imagedrop/textedit.cpp
index 9db45bf432..fbb6f73ddc 100644
--- a/doc/src/snippets/textdocument-imagedrop/textedit.cpp
+++ b/doc/src/snippets/textdocument-imagedrop/textedit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/textdocument-listitemstyles/main.cpp b/doc/src/snippets/textdocument-listitemstyles/main.cpp
index 786218557c..223ec22bae 100644
--- a/doc/src/snippets/textdocument-listitemstyles/main.cpp
+++ b/doc/src/snippets/textdocument-listitemstyles/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/textdocument-listitemstyles/mainwindow.cpp b/doc/src/snippets/textdocument-listitemstyles/mainwindow.cpp
index 9f05db4fc1..029695eca3 100644
--- a/doc/src/snippets/textdocument-listitemstyles/mainwindow.cpp
+++ b/doc/src/snippets/textdocument-listitemstyles/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/textdocument-listitemstyles/mainwindow.h b/doc/src/snippets/textdocument-listitemstyles/mainwindow.h
index f307a49b6a..fc5c6db2a7 100644
--- a/doc/src/snippets/textdocument-listitemstyles/mainwindow.h
+++ b/doc/src/snippets/textdocument-listitemstyles/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/textdocument-lists/mainwindow.cpp b/doc/src/snippets/textdocument-lists/mainwindow.cpp
index 40e0c87916..7ae36b0ced 100644
--- a/doc/src/snippets/textdocument-lists/mainwindow.cpp
+++ b/doc/src/snippets/textdocument-lists/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/textdocument-resources/main.cpp b/doc/src/snippets/textdocument-resources/main.cpp
index 14cb03cfe5..ed26793d78 100644
--- a/doc/src/snippets/textdocument-resources/main.cpp
+++ b/doc/src/snippets/textdocument-resources/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/textdocument-tables/mainwindow.cpp b/doc/src/snippets/textdocument-tables/mainwindow.cpp
index df6a360c94..79e5f03df4 100644
--- a/doc/src/snippets/textdocument-tables/mainwindow.cpp
+++ b/doc/src/snippets/textdocument-tables/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/textdocument-texttable/main.cpp b/doc/src/snippets/textdocument-texttable/main.cpp
index 7b5a9ac3d5..ca5338533c 100644
--- a/doc/src/snippets/textdocument-texttable/main.cpp
+++ b/doc/src/snippets/textdocument-texttable/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/textdocumentendsnippet.cpp b/doc/src/snippets/textdocumentendsnippet.cpp
index 01f55b667a..caec20dc9b 100644
--- a/doc/src/snippets/textdocumentendsnippet.cpp
+++ b/doc/src/snippets/textdocumentendsnippet.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/threads/threads.cpp b/doc/src/snippets/threads/threads.cpp
index f922e4f1b4..9ef716705a 100644
--- a/doc/src/snippets/threads/threads.cpp
+++ b/doc/src/snippets/threads/threads.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/threads/threads.h b/doc/src/snippets/threads/threads.h
index a85c6b8a5c..a45a2c92da 100644
--- a/doc/src/snippets/threads/threads.h
+++ b/doc/src/snippets/threads/threads.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/timeline/main.cpp b/doc/src/snippets/timeline/main.cpp
index 67c67c795d..f4be7f3c5b 100644
--- a/doc/src/snippets/timeline/main.cpp
+++ b/doc/src/snippets/timeline/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/timers/timers.cpp b/doc/src/snippets/timers/timers.cpp
index 0481e255e1..65b1c0d146 100644
--- a/doc/src/snippets/timers/timers.cpp
+++ b/doc/src/snippets/timers/timers.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/transform/main.cpp b/doc/src/snippets/transform/main.cpp
index 87ff6ec792..d1c600828d 100644
--- a/doc/src/snippets/transform/main.cpp
+++ b/doc/src/snippets/transform/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/whatsthis/whatsthis.cpp b/doc/src/snippets/whatsthis/whatsthis.cpp
index 9e0f6694f4..3d3f65d317 100644
--- a/doc/src/snippets/whatsthis/whatsthis.cpp
+++ b/doc/src/snippets/whatsthis/whatsthis.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/widget-mask/main.cpp b/doc/src/snippets/widget-mask/main.cpp
index 1038f9031a..18653deb4c 100644
--- a/doc/src/snippets/widget-mask/main.cpp
+++ b/doc/src/snippets/widget-mask/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/widgetdelegate.cpp b/doc/src/snippets/widgetdelegate.cpp
index b12baeef46..4d2a6559a5 100644
--- a/doc/src/snippets/widgetdelegate.cpp
+++ b/doc/src/snippets/widgetdelegate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/widgetprinting.cpp b/doc/src/snippets/widgetprinting.cpp
index 41171678bf..bf0f005ba2 100644
--- a/doc/src/snippets/widgetprinting.cpp
+++ b/doc/src/snippets/widgetprinting.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/widgets-tutorial/template.cpp b/doc/src/snippets/widgets-tutorial/template.cpp
index 95d32d7cf5..187952d44d 100644
--- a/doc/src/snippets/widgets-tutorial/template.cpp
+++ b/doc/src/snippets/widgets-tutorial/template.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/xml/rsslisting/handler.cpp b/doc/src/snippets/xml/rsslisting/handler.cpp
index 21aebcdb40..5cd2c45023 100644
--- a/doc/src/snippets/xml/rsslisting/handler.cpp
+++ b/doc/src/snippets/xml/rsslisting/handler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/xml/rsslisting/rsslisting.cpp b/doc/src/snippets/xml/rsslisting/rsslisting.cpp
index 2e98f8f14e..5fb7c28da9 100644
--- a/doc/src/snippets/xml/rsslisting/rsslisting.cpp
+++ b/doc/src/snippets/xml/rsslisting/rsslisting.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/snippets/xml/simpleparse/main.cpp b/doc/src/snippets/xml/simpleparse/main.cpp
index 5eeed234c5..bd00885d78 100644
--- a/doc/src/snippets/xml/simpleparse/main.cpp
+++ b/doc/src/snippets/xml/simpleparse/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/sql/qtsql.qdoc b/doc/src/sql/qtsql.qdoc
index 278905717c..3ced6b8680 100644
--- a/doc/src/sql/qtsql.qdoc
+++ b/doc/src/sql/qtsql.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/sql/sql-programming/qsqldatatype-table.qdoc b/doc/src/sql/sql-programming/qsqldatatype-table.qdoc
index 1aaf476549..bc1c8b3c13 100644
--- a/doc/src/sql/sql-programming/qsqldatatype-table.qdoc
+++ b/doc/src/sql/sql-programming/qsqldatatype-table.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/sql/sql-programming/sql-driver.qdoc b/doc/src/sql/sql-programming/sql-driver.qdoc
index f0cc3212fe..994d31f43f 100644
--- a/doc/src/sql/sql-programming/sql-driver.qdoc
+++ b/doc/src/sql/sql-programming/sql-driver.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/sql/sql-programming/sql-programming.qdoc b/doc/src/sql/sql-programming/sql-programming.qdoc
index 6b702668c1..787b48718d 100644
--- a/doc/src/sql/sql-programming/sql-programming.qdoc
+++ b/doc/src/sql/sql-programming/sql-programming.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/addressbook-fr.qdoc b/doc/src/widgets/addressbook-fr.qdoc
index 0de065631f..4df19d015f 100644
--- a/doc/src/widgets/addressbook-fr.qdoc
+++ b/doc/src/widgets/addressbook-fr.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/addressbook.qdoc b/doc/src/widgets/addressbook.qdoc
index 09c067aef9..96c96df177 100644
--- a/doc/src/widgets/addressbook.qdoc
+++ b/doc/src/widgets/addressbook.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/modelview.qdoc b/doc/src/widgets/modelview.qdoc
index 0278f585b6..536b521100 100644
--- a/doc/src/widgets/modelview.qdoc
+++ b/doc/src/widgets/modelview.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/qtwidgets.qdoc b/doc/src/widgets/qtwidgets.qdoc
index cd37688b1a..4be460a2ab 100644
--- a/doc/src/widgets/qtwidgets.qdoc
+++ b/doc/src/widgets/qtwidgets.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/widgets-and-layouts/focus.qdoc b/doc/src/widgets/widgets-and-layouts/focus.qdoc
index e9069c1812..374d5781ee 100644
--- a/doc/src/widgets/widgets-and-layouts/focus.qdoc
+++ b/doc/src/widgets/widgets-and-layouts/focus.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/widgets-and-layouts/gallery-cde.qdoc b/doc/src/widgets/widgets-and-layouts/gallery-cde.qdoc
index 6db1863d9a..313757ebec 100644
--- a/doc/src/widgets/widgets-and-layouts/gallery-cde.qdoc
+++ b/doc/src/widgets/widgets-and-layouts/gallery-cde.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/widgets-and-layouts/gallery-cleanlooks.qdoc b/doc/src/widgets/widgets-and-layouts/gallery-cleanlooks.qdoc
index 0f385db343..74cd4d4d42 100644
--- a/doc/src/widgets/widgets-and-layouts/gallery-cleanlooks.qdoc
+++ b/doc/src/widgets/widgets-and-layouts/gallery-cleanlooks.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/widgets-and-layouts/gallery-gtk.qdoc b/doc/src/widgets/widgets-and-layouts/gallery-gtk.qdoc
index 7cf82b2b52..6a7fb5f3b5 100644
--- a/doc/src/widgets/widgets-and-layouts/gallery-gtk.qdoc
+++ b/doc/src/widgets/widgets-and-layouts/gallery-gtk.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/widgets-and-layouts/gallery-macintosh.qdoc b/doc/src/widgets/widgets-and-layouts/gallery-macintosh.qdoc
index 54decc12a6..6eceea114f 100644
--- a/doc/src/widgets/widgets-and-layouts/gallery-macintosh.qdoc
+++ b/doc/src/widgets/widgets-and-layouts/gallery-macintosh.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/widgets-and-layouts/gallery-motif.qdoc b/doc/src/widgets/widgets-and-layouts/gallery-motif.qdoc
index 7a9d2e887e..d059d2282f 100644
--- a/doc/src/widgets/widgets-and-layouts/gallery-motif.qdoc
+++ b/doc/src/widgets/widgets-and-layouts/gallery-motif.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/widgets-and-layouts/gallery-plastique.qdoc b/doc/src/widgets/widgets-and-layouts/gallery-plastique.qdoc
index eedd5a4577..9a57bd6cbc 100644
--- a/doc/src/widgets/widgets-and-layouts/gallery-plastique.qdoc
+++ b/doc/src/widgets/widgets-and-layouts/gallery-plastique.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/widgets-and-layouts/gallery-windows.qdoc b/doc/src/widgets/widgets-and-layouts/gallery-windows.qdoc
index b971625b92..83ebce97f5 100644
--- a/doc/src/widgets/widgets-and-layouts/gallery-windows.qdoc
+++ b/doc/src/widgets/widgets-and-layouts/gallery-windows.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/widgets-and-layouts/gallery-windowsvista.qdoc b/doc/src/widgets/widgets-and-layouts/gallery-windowsvista.qdoc
index 2b61d55025..e54a4dc399 100644
--- a/doc/src/widgets/widgets-and-layouts/gallery-windowsvista.qdoc
+++ b/doc/src/widgets/widgets-and-layouts/gallery-windowsvista.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/widgets-and-layouts/gallery-windowsxp.qdoc b/doc/src/widgets/widgets-and-layouts/gallery-windowsxp.qdoc
index 81b7becd44..3753402c5a 100644
--- a/doc/src/widgets/widgets-and-layouts/gallery-windowsxp.qdoc
+++ b/doc/src/widgets/widgets-and-layouts/gallery-windowsxp.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/widgets-and-layouts/gallery.qdoc b/doc/src/widgets/widgets-and-layouts/gallery.qdoc
index 1ffec414b1..d82eda4805 100644
--- a/doc/src/widgets/widgets-and-layouts/gallery.qdoc
+++ b/doc/src/widgets/widgets-and-layouts/gallery.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/widgets-and-layouts/layout.qdoc b/doc/src/widgets/widgets-and-layouts/layout.qdoc
index ae5a4fed56..ccc15ef805 100644
--- a/doc/src/widgets/widgets-and-layouts/layout.qdoc
+++ b/doc/src/widgets/widgets-and-layouts/layout.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/widgets-and-layouts/styles.qdoc b/doc/src/widgets/widgets-and-layouts/styles.qdoc
index a47f8e9be6..febe1a8345 100644
--- a/doc/src/widgets/widgets-and-layouts/styles.qdoc
+++ b/doc/src/widgets/widgets-and-layouts/styles.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/widgets-and-layouts/stylesheet.qdoc b/doc/src/widgets/widgets-and-layouts/stylesheet.qdoc
index aa48a24225..a0a8652eaf 100644
--- a/doc/src/widgets/widgets-and-layouts/stylesheet.qdoc
+++ b/doc/src/widgets/widgets-and-layouts/stylesheet.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/widgets-and-layouts/widgets.qdoc b/doc/src/widgets/widgets-and-layouts/widgets.qdoc
index c3082c3cb5..a84f12e70f 100644
--- a/doc/src/widgets/widgets-and-layouts/widgets.qdoc
+++ b/doc/src/widgets/widgets-and-layouts/widgets.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/widgets-tutorial.qdoc b/doc/src/widgets/widgets-tutorial.qdoc
index b09e07a5bc..1d010651e5 100644
--- a/doc/src/widgets/widgets-tutorial.qdoc
+++ b/doc/src/widgets/widgets-tutorial.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/windows-and-dialogs/dialogs.qdoc b/doc/src/widgets/windows-and-dialogs/dialogs.qdoc
index d332a45c9f..e1c6de42b8 100644
--- a/doc/src/widgets/windows-and-dialogs/dialogs.qdoc
+++ b/doc/src/widgets/windows-and-dialogs/dialogs.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/widgets/windows-and-dialogs/mainwindow.qdoc b/doc/src/widgets/windows-and-dialogs/mainwindow.qdoc
index 9938d097fe..1517116c05 100644
--- a/doc/src/widgets/windows-and-dialogs/mainwindow.qdoc
+++ b/doc/src/widgets/windows-and-dialogs/mainwindow.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/doc/src/xml/qtxml.qdoc b/doc/src/xml/qtxml.qdoc
index 2abc88cdef..4ebc1acac6 100644
--- a/doc/src/xml/qtxml.qdoc
+++ b/doc/src/xml/qtxml.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/animatedtiles/main.cpp b/examples/animation/animatedtiles/main.cpp
index df8134c169..88e348333f 100644
--- a/examples/animation/animatedtiles/main.cpp
+++ b/examples/animation/animatedtiles/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/appchooser/main.cpp b/examples/animation/appchooser/main.cpp
index ed037edd1d..23a0bd6aee 100644
--- a/examples/animation/appchooser/main.cpp
+++ b/examples/animation/appchooser/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/easing/animation.h b/examples/animation/easing/animation.h
index 298a0e3d13..35cbed4555 100644
--- a/examples/animation/easing/animation.h
+++ b/examples/animation/easing/animation.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/easing/main.cpp b/examples/animation/easing/main.cpp
index f6ec6e42e8..05d4014fc2 100644
--- a/examples/animation/easing/main.cpp
+++ b/examples/animation/easing/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/easing/window.cpp b/examples/animation/easing/window.cpp
index d5d46aed99..33468db59c 100644
--- a/examples/animation/easing/window.cpp
+++ b/examples/animation/easing/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/easing/window.h b/examples/animation/easing/window.h
index e45368b9bb..bf5014c0cc 100644
--- a/examples/animation/easing/window.h
+++ b/examples/animation/easing/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/moveblocks/main.cpp b/examples/animation/moveblocks/main.cpp
index 5076872823..8e7c04e9f0 100644
--- a/examples/animation/moveblocks/main.cpp
+++ b/examples/animation/moveblocks/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/states/main.cpp b/examples/animation/states/main.cpp
index 0efaa8ae24..faa97ccbd0 100644
--- a/examples/animation/states/main.cpp
+++ b/examples/animation/states/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/stickman/animation.cpp b/examples/animation/stickman/animation.cpp
index 6563f9d660..4469b365de 100644
--- a/examples/animation/stickman/animation.cpp
+++ b/examples/animation/stickman/animation.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/stickman/animation.h b/examples/animation/stickman/animation.h
index 20350b3669..d5dab530e6 100644
--- a/examples/animation/stickman/animation.h
+++ b/examples/animation/stickman/animation.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/stickman/graphicsview.cpp b/examples/animation/stickman/graphicsview.cpp
index 2584aee814..134fb8acf1 100644
--- a/examples/animation/stickman/graphicsview.cpp
+++ b/examples/animation/stickman/graphicsview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/stickman/graphicsview.h b/examples/animation/stickman/graphicsview.h
index 4df7911dfa..38bf6e1eb6 100644
--- a/examples/animation/stickman/graphicsview.h
+++ b/examples/animation/stickman/graphicsview.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/stickman/lifecycle.cpp b/examples/animation/stickman/lifecycle.cpp
index 17d1816557..53249ccd6f 100644
--- a/examples/animation/stickman/lifecycle.cpp
+++ b/examples/animation/stickman/lifecycle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/stickman/lifecycle.h b/examples/animation/stickman/lifecycle.h
index 18a4fa3b46..8e8bb50659 100644
--- a/examples/animation/stickman/lifecycle.h
+++ b/examples/animation/stickman/lifecycle.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/stickman/main.cpp b/examples/animation/stickman/main.cpp
index c134a7ec7f..55fc1ba310 100644
--- a/examples/animation/stickman/main.cpp
+++ b/examples/animation/stickman/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/stickman/node.cpp b/examples/animation/stickman/node.cpp
index f7d9a02610..2de34b379c 100644
--- a/examples/animation/stickman/node.cpp
+++ b/examples/animation/stickman/node.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/stickman/node.h b/examples/animation/stickman/node.h
index 6e99d43517..ae6e2a3ed0 100644
--- a/examples/animation/stickman/node.h
+++ b/examples/animation/stickman/node.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/stickman/rectbutton.cpp b/examples/animation/stickman/rectbutton.cpp
index 57de48795e..8b17600ef5 100644
--- a/examples/animation/stickman/rectbutton.cpp
+++ b/examples/animation/stickman/rectbutton.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/stickman/rectbutton.h b/examples/animation/stickman/rectbutton.h
index a3a73a1d9a..ead8f21420 100644
--- a/examples/animation/stickman/rectbutton.h
+++ b/examples/animation/stickman/rectbutton.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/stickman/stickman.cpp b/examples/animation/stickman/stickman.cpp
index 28c13dff8d..667ed7d141 100644
--- a/examples/animation/stickman/stickman.cpp
+++ b/examples/animation/stickman/stickman.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/stickman/stickman.h b/examples/animation/stickman/stickman.h
index 06f606af9e..f50ed1a6c2 100644
--- a/examples/animation/stickman/stickman.h
+++ b/examples/animation/stickman/stickman.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/animationmanager.cpp b/examples/animation/sub-attaq/animationmanager.cpp
index 732c480cb8..7dcb9dfb50 100644
--- a/examples/animation/sub-attaq/animationmanager.cpp
+++ b/examples/animation/sub-attaq/animationmanager.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/animationmanager.h b/examples/animation/sub-attaq/animationmanager.h
index 3cfc74e0cd..6587e39b14 100644
--- a/examples/animation/sub-attaq/animationmanager.h
+++ b/examples/animation/sub-attaq/animationmanager.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/boat.cpp b/examples/animation/sub-attaq/boat.cpp
index b614b78b7f..88332dbfe7 100644
--- a/examples/animation/sub-attaq/boat.cpp
+++ b/examples/animation/sub-attaq/boat.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/boat.h b/examples/animation/sub-attaq/boat.h
index 75d53b3755..0b2fe5c8eb 100644
--- a/examples/animation/sub-attaq/boat.h
+++ b/examples/animation/sub-attaq/boat.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/boat_p.h b/examples/animation/sub-attaq/boat_p.h
index d3fa73bcee..38be985777 100644
--- a/examples/animation/sub-attaq/boat_p.h
+++ b/examples/animation/sub-attaq/boat_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/bomb.cpp b/examples/animation/sub-attaq/bomb.cpp
index 26b041a65c..e47e9423a9 100644
--- a/examples/animation/sub-attaq/bomb.cpp
+++ b/examples/animation/sub-attaq/bomb.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/bomb.h b/examples/animation/sub-attaq/bomb.h
index eeb1bb690a..74ed734caf 100644
--- a/examples/animation/sub-attaq/bomb.h
+++ b/examples/animation/sub-attaq/bomb.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/graphicsscene.cpp b/examples/animation/sub-attaq/graphicsscene.cpp
index 50a3a5e29f..a2b3e2f101 100644
--- a/examples/animation/sub-attaq/graphicsscene.cpp
+++ b/examples/animation/sub-attaq/graphicsscene.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/graphicsscene.h b/examples/animation/sub-attaq/graphicsscene.h
index 1ed5a18a9d..3e571a878c 100644
--- a/examples/animation/sub-attaq/graphicsscene.h
+++ b/examples/animation/sub-attaq/graphicsscene.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/main.cpp b/examples/animation/sub-attaq/main.cpp
index cac0237393..df18c83435 100644
--- a/examples/animation/sub-attaq/main.cpp
+++ b/examples/animation/sub-attaq/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/mainwindow.cpp b/examples/animation/sub-attaq/mainwindow.cpp
index 677d09a214..fd41cee6dc 100644
--- a/examples/animation/sub-attaq/mainwindow.cpp
+++ b/examples/animation/sub-attaq/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/mainwindow.h b/examples/animation/sub-attaq/mainwindow.h
index 19160e3843..596157d38f 100644
--- a/examples/animation/sub-attaq/mainwindow.h
+++ b/examples/animation/sub-attaq/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/pixmapitem.cpp b/examples/animation/sub-attaq/pixmapitem.cpp
index d584d69ff8..b2061dc06c 100644
--- a/examples/animation/sub-attaq/pixmapitem.cpp
+++ b/examples/animation/sub-attaq/pixmapitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/pixmapitem.h b/examples/animation/sub-attaq/pixmapitem.h
index b8ed147d9e..0a3b1287c7 100644
--- a/examples/animation/sub-attaq/pixmapitem.h
+++ b/examples/animation/sub-attaq/pixmapitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/progressitem.cpp b/examples/animation/sub-attaq/progressitem.cpp
index a623ea8722..bad9ceb471 100644
--- a/examples/animation/sub-attaq/progressitem.cpp
+++ b/examples/animation/sub-attaq/progressitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/progressitem.h b/examples/animation/sub-attaq/progressitem.h
index c6b8a30343..dc6d7ba6bc 100644
--- a/examples/animation/sub-attaq/progressitem.h
+++ b/examples/animation/sub-attaq/progressitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/qanimationstate.cpp b/examples/animation/sub-attaq/qanimationstate.cpp
index 69d699cb16..b122acc858 100644
--- a/examples/animation/sub-attaq/qanimationstate.cpp
+++ b/examples/animation/sub-attaq/qanimationstate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/qanimationstate.h b/examples/animation/sub-attaq/qanimationstate.h
index 890037a269..2672f640e4 100644
--- a/examples/animation/sub-attaq/qanimationstate.h
+++ b/examples/animation/sub-attaq/qanimationstate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_ANIMATION
diff --git a/examples/animation/sub-attaq/states.cpp b/examples/animation/sub-attaq/states.cpp
index 312733befd..32ad218693 100644
--- a/examples/animation/sub-attaq/states.cpp
+++ b/examples/animation/sub-attaq/states.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/states.h b/examples/animation/sub-attaq/states.h
index 3ef2b4b5b4..e43370302c 100644
--- a/examples/animation/sub-attaq/states.h
+++ b/examples/animation/sub-attaq/states.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/submarine.cpp b/examples/animation/sub-attaq/submarine.cpp
index 0454751293..68eaf7ef38 100644
--- a/examples/animation/sub-attaq/submarine.cpp
+++ b/examples/animation/sub-attaq/submarine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/submarine.h b/examples/animation/sub-attaq/submarine.h
index cb334a2778..b113bc8797 100644
--- a/examples/animation/sub-attaq/submarine.h
+++ b/examples/animation/sub-attaq/submarine.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/submarine_p.h b/examples/animation/sub-attaq/submarine_p.h
index f42e84f47c..f24487aa17 100644
--- a/examples/animation/sub-attaq/submarine_p.h
+++ b/examples/animation/sub-attaq/submarine_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/textinformationitem.cpp b/examples/animation/sub-attaq/textinformationitem.cpp
index 050fd7713f..ce2e297287 100644
--- a/examples/animation/sub-attaq/textinformationitem.cpp
+++ b/examples/animation/sub-attaq/textinformationitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/textinformationitem.h b/examples/animation/sub-attaq/textinformationitem.h
index a249752c4a..adad8be90b 100644
--- a/examples/animation/sub-attaq/textinformationitem.h
+++ b/examples/animation/sub-attaq/textinformationitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/torpedo.cpp b/examples/animation/sub-attaq/torpedo.cpp
index 9318797b6c..34c32fe059 100644
--- a/examples/animation/sub-attaq/torpedo.cpp
+++ b/examples/animation/sub-attaq/torpedo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/animation/sub-attaq/torpedo.h b/examples/animation/sub-attaq/torpedo.h
index 2d3cd40973..59209e3d75 100644
--- a/examples/animation/sub-attaq/torpedo.h
+++ b/examples/animation/sub-attaq/torpedo.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dbus/complexpingpong/complexping.cpp b/examples/dbus/complexpingpong/complexping.cpp
index 5cda1a04a6..aa39290f8b 100644
--- a/examples/dbus/complexpingpong/complexping.cpp
+++ b/examples/dbus/complexpingpong/complexping.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dbus/complexpingpong/complexping.h b/examples/dbus/complexpingpong/complexping.h
index 6db508099b..dc7c3583ad 100644
--- a/examples/dbus/complexpingpong/complexping.h
+++ b/examples/dbus/complexpingpong/complexping.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dbus/complexpingpong/complexpong.cpp b/examples/dbus/complexpingpong/complexpong.cpp
index 696b2d3ce0..78c6e33b87 100644
--- a/examples/dbus/complexpingpong/complexpong.cpp
+++ b/examples/dbus/complexpingpong/complexpong.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dbus/complexpingpong/complexpong.h b/examples/dbus/complexpingpong/complexpong.h
index 31ddd076ab..e458f9e37f 100644
--- a/examples/dbus/complexpingpong/complexpong.h
+++ b/examples/dbus/complexpingpong/complexpong.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dbus/complexpingpong/ping-common.h b/examples/dbus/complexpingpong/ping-common.h
index 1632e50adc..987c8b6d96 100644
--- a/examples/dbus/complexpingpong/ping-common.h
+++ b/examples/dbus/complexpingpong/ping-common.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dbus/dbus-chat/chat.cpp b/examples/dbus/dbus-chat/chat.cpp
index c52d0007d8..f5d834fea4 100644
--- a/examples/dbus/dbus-chat/chat.cpp
+++ b/examples/dbus/dbus-chat/chat.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dbus/dbus-chat/chat.h b/examples/dbus/dbus-chat/chat.h
index 999aa92d8d..740cf44653 100644
--- a/examples/dbus/dbus-chat/chat.h
+++ b/examples/dbus/dbus-chat/chat.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dbus/dbus-chat/chat_adaptor.cpp b/examples/dbus/dbus-chat/chat_adaptor.cpp
index a362b58774..e088dffaa4 100644
--- a/examples/dbus/dbus-chat/chat_adaptor.cpp
+++ b/examples/dbus/dbus-chat/chat_adaptor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
**
diff --git a/examples/dbus/dbus-chat/chat_adaptor.h b/examples/dbus/dbus-chat/chat_adaptor.h
index 228204b755..e682665cce 100644
--- a/examples/dbus/dbus-chat/chat_adaptor.h
+++ b/examples/dbus/dbus-chat/chat_adaptor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
**
diff --git a/examples/dbus/dbus-chat/chat_interface.cpp b/examples/dbus/dbus-chat/chat_interface.cpp
index c81204a776..8c35e537ed 100644
--- a/examples/dbus/dbus-chat/chat_interface.cpp
+++ b/examples/dbus/dbus-chat/chat_interface.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
**
diff --git a/examples/dbus/dbus-chat/chat_interface.h b/examples/dbus/dbus-chat/chat_interface.h
index 2cfbecae79..3ef00df2d4 100644
--- a/examples/dbus/dbus-chat/chat_interface.h
+++ b/examples/dbus/dbus-chat/chat_interface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
**
diff --git a/examples/dbus/listnames/listnames.cpp b/examples/dbus/listnames/listnames.cpp
index 9890af53b6..c4a08d2d66 100644
--- a/examples/dbus/listnames/listnames.cpp
+++ b/examples/dbus/listnames/listnames.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dbus/pingpong/ping-common.h b/examples/dbus/pingpong/ping-common.h
index 1632e50adc..987c8b6d96 100644
--- a/examples/dbus/pingpong/ping-common.h
+++ b/examples/dbus/pingpong/ping-common.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dbus/pingpong/ping.cpp b/examples/dbus/pingpong/ping.cpp
index 0d27e50604..f2f38a82b8 100644
--- a/examples/dbus/pingpong/ping.cpp
+++ b/examples/dbus/pingpong/ping.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dbus/pingpong/pong.cpp b/examples/dbus/pingpong/pong.cpp
index 96e537692a..de78c7c2cc 100644
--- a/examples/dbus/pingpong/pong.cpp
+++ b/examples/dbus/pingpong/pong.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dbus/pingpong/pong.h b/examples/dbus/pingpong/pong.h
index a1614e0c32..6c1f0b96f7 100644
--- a/examples/dbus/pingpong/pong.h
+++ b/examples/dbus/pingpong/pong.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dbus/remotecontrolledcar/car/car.cpp b/examples/dbus/remotecontrolledcar/car/car.cpp
index 497302b03b..4b771c2983 100644
--- a/examples/dbus/remotecontrolledcar/car/car.cpp
+++ b/examples/dbus/remotecontrolledcar/car/car.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dbus/remotecontrolledcar/car/car.h b/examples/dbus/remotecontrolledcar/car/car.h
index 0b465ba2ec..1c41205d87 100644
--- a/examples/dbus/remotecontrolledcar/car/car.h
+++ b/examples/dbus/remotecontrolledcar/car/car.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dbus/remotecontrolledcar/car/car_adaptor.cpp b/examples/dbus/remotecontrolledcar/car/car_adaptor.cpp
index 9ef035ff87..c7e62829be 100644
--- a/examples/dbus/remotecontrolledcar/car/car_adaptor.cpp
+++ b/examples/dbus/remotecontrolledcar/car/car_adaptor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
**
diff --git a/examples/dbus/remotecontrolledcar/car/car_adaptor.h b/examples/dbus/remotecontrolledcar/car/car_adaptor.h
index 7092e69f5d..3c2c1dd124 100644
--- a/examples/dbus/remotecontrolledcar/car/car_adaptor.h
+++ b/examples/dbus/remotecontrolledcar/car/car_adaptor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
**
diff --git a/examples/dbus/remotecontrolledcar/car/main.cpp b/examples/dbus/remotecontrolledcar/car/main.cpp
index fec64c1207..99dccbae0c 100644
--- a/examples/dbus/remotecontrolledcar/car/main.cpp
+++ b/examples/dbus/remotecontrolledcar/car/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dbus/remotecontrolledcar/controller/car_interface.cpp b/examples/dbus/remotecontrolledcar/controller/car_interface.cpp
index 094f04ca8c..8f495ea62c 100644
--- a/examples/dbus/remotecontrolledcar/controller/car_interface.cpp
+++ b/examples/dbus/remotecontrolledcar/controller/car_interface.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
**
diff --git a/examples/dbus/remotecontrolledcar/controller/car_interface.h b/examples/dbus/remotecontrolledcar/controller/car_interface.h
index 3d51fc4988..fadd127460 100644
--- a/examples/dbus/remotecontrolledcar/controller/car_interface.h
+++ b/examples/dbus/remotecontrolledcar/controller/car_interface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
**
diff --git a/examples/dbus/remotecontrolledcar/controller/controller.cpp b/examples/dbus/remotecontrolledcar/controller/controller.cpp
index ba7baf41ff..77a6883b11 100644
--- a/examples/dbus/remotecontrolledcar/controller/controller.cpp
+++ b/examples/dbus/remotecontrolledcar/controller/controller.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dbus/remotecontrolledcar/controller/controller.h b/examples/dbus/remotecontrolledcar/controller/controller.h
index 2f20ac7b4b..2d8c9031ad 100644
--- a/examples/dbus/remotecontrolledcar/controller/controller.h
+++ b/examples/dbus/remotecontrolledcar/controller/controller.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dbus/remotecontrolledcar/controller/main.cpp b/examples/dbus/remotecontrolledcar/controller/main.cpp
index ae0372bc8b..610ffe221e 100644
--- a/examples/dbus/remotecontrolledcar/controller/main.cpp
+++ b/examples/dbus/remotecontrolledcar/controller/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/desktop/screenshot/main.cpp b/examples/desktop/screenshot/main.cpp
index 58fdcfdf02..3f9b2e1126 100644
--- a/examples/desktop/screenshot/main.cpp
+++ b/examples/desktop/screenshot/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/desktop/screenshot/screenshot.cpp b/examples/desktop/screenshot/screenshot.cpp
index 6486c4076a..7773728daa 100644
--- a/examples/desktop/screenshot/screenshot.cpp
+++ b/examples/desktop/screenshot/screenshot.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/desktop/screenshot/screenshot.h b/examples/desktop/screenshot/screenshot.h
index 0caddb3f60..98251f3428 100644
--- a/examples/desktop/screenshot/screenshot.h
+++ b/examples/desktop/screenshot/screenshot.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/classwizard/classwizard.cpp b/examples/dialogs/classwizard/classwizard.cpp
index d4d69ad52f..211a76488d 100644
--- a/examples/dialogs/classwizard/classwizard.cpp
+++ b/examples/dialogs/classwizard/classwizard.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -403,7 +403,7 @@ void OutputFilesPage::initializePage()
QString className = field("className").toString();
headerLineEdit->setText(className.toLower() + ".h");
implementationLineEdit->setText(className.toLower() + ".cpp");
- outputDirLineEdit->setText(QDir::convertSeparators(QDir::tempPath()));
+ outputDirLineEdit->setText(QDir::toNativeSeparators(QDir::tempPath()));
}
//! [17]
diff --git a/examples/dialogs/classwizard/classwizard.h b/examples/dialogs/classwizard/classwizard.h
index 377754b00e..332025f207 100644
--- a/examples/dialogs/classwizard/classwizard.h
+++ b/examples/dialogs/classwizard/classwizard.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/classwizard/main.cpp b/examples/dialogs/classwizard/main.cpp
index 14055e7025..03dd625ae4 100644
--- a/examples/dialogs/classwizard/main.cpp
+++ b/examples/dialogs/classwizard/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/configdialog/configdialog.cpp b/examples/dialogs/configdialog/configdialog.cpp
index 04af2dad59..2f70c816c4 100644
--- a/examples/dialogs/configdialog/configdialog.cpp
+++ b/examples/dialogs/configdialog/configdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/configdialog/configdialog.h b/examples/dialogs/configdialog/configdialog.h
index 48873dc447..5b79e416ab 100644
--- a/examples/dialogs/configdialog/configdialog.h
+++ b/examples/dialogs/configdialog/configdialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/configdialog/main.cpp b/examples/dialogs/configdialog/main.cpp
index 46fca2f01d..42f3cf2f43 100644
--- a/examples/dialogs/configdialog/main.cpp
+++ b/examples/dialogs/configdialog/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/configdialog/pages.cpp b/examples/dialogs/configdialog/pages.cpp
index 9af2231034..c89bc3c7c8 100644
--- a/examples/dialogs/configdialog/pages.cpp
+++ b/examples/dialogs/configdialog/pages.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/configdialog/pages.h b/examples/dialogs/configdialog/pages.h
index 4c1713407a..938a2a74f7 100644
--- a/examples/dialogs/configdialog/pages.h
+++ b/examples/dialogs/configdialog/pages.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/extension/finddialog.cpp b/examples/dialogs/extension/finddialog.cpp
index 115d8eb72d..c21ebf67c5 100644
--- a/examples/dialogs/extension/finddialog.cpp
+++ b/examples/dialogs/extension/finddialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/extension/finddialog.h b/examples/dialogs/extension/finddialog.h
index b32fc96ae4..5599ac2c09 100644
--- a/examples/dialogs/extension/finddialog.h
+++ b/examples/dialogs/extension/finddialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/extension/main.cpp b/examples/dialogs/extension/main.cpp
index d93e7b6f67..f0eff079ed 100644
--- a/examples/dialogs/extension/main.cpp
+++ b/examples/dialogs/extension/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/findfiles/main.cpp b/examples/dialogs/findfiles/main.cpp
index 218d30316c..dcbf1c0449 100644
--- a/examples/dialogs/findfiles/main.cpp
+++ b/examples/dialogs/findfiles/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/findfiles/window.cpp b/examples/dialogs/findfiles/window.cpp
index 44f0a32f30..7cf0079ffe 100644
--- a/examples/dialogs/findfiles/window.cpp
+++ b/examples/dialogs/findfiles/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/findfiles/window.h b/examples/dialogs/findfiles/window.h
index 66aeead2d0..0203de8a17 100644
--- a/examples/dialogs/findfiles/window.h
+++ b/examples/dialogs/findfiles/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/licensewizard/licensewizard.cpp b/examples/dialogs/licensewizard/licensewizard.cpp
index e0ac2a9fd4..501f8e310c 100644
--- a/examples/dialogs/licensewizard/licensewizard.cpp
+++ b/examples/dialogs/licensewizard/licensewizard.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/licensewizard/licensewizard.h b/examples/dialogs/licensewizard/licensewizard.h
index ad10764bd7..24ee45d6dd 100644
--- a/examples/dialogs/licensewizard/licensewizard.h
+++ b/examples/dialogs/licensewizard/licensewizard.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/licensewizard/main.cpp b/examples/dialogs/licensewizard/main.cpp
index 0e2434083c..c7771d7676 100644
--- a/examples/dialogs/licensewizard/main.cpp
+++ b/examples/dialogs/licensewizard/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/sipdialog/dialog.cpp b/examples/dialogs/sipdialog/dialog.cpp
index 5f772efb4a..fdfbc94ca4 100644
--- a/examples/dialogs/sipdialog/dialog.cpp
+++ b/examples/dialogs/sipdialog/dialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/sipdialog/dialog.h b/examples/dialogs/sipdialog/dialog.h
index 16daf857fc..18eb92d857 100644
--- a/examples/dialogs/sipdialog/dialog.h
+++ b/examples/dialogs/sipdialog/dialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/sipdialog/main.cpp b/examples/dialogs/sipdialog/main.cpp
index 0579492133..79fd956fb9 100644
--- a/examples/dialogs/sipdialog/main.cpp
+++ b/examples/dialogs/sipdialog/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/standarddialogs/dialog.cpp b/examples/dialogs/standarddialogs/dialog.cpp
index 5fc8f65880..bde96c516b 100644
--- a/examples/dialogs/standarddialogs/dialog.cpp
+++ b/examples/dialogs/standarddialogs/dialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/standarddialogs/dialog.h b/examples/dialogs/standarddialogs/dialog.h
index e6c802fa7f..2b14d793d6 100644
--- a/examples/dialogs/standarddialogs/dialog.h
+++ b/examples/dialogs/standarddialogs/dialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/standarddialogs/main.cpp b/examples/dialogs/standarddialogs/main.cpp
index d67a6a42f9..001239929e 100644
--- a/examples/dialogs/standarddialogs/main.cpp
+++ b/examples/dialogs/standarddialogs/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/tabdialog/main.cpp b/examples/dialogs/tabdialog/main.cpp
index 44b96a7c97..119a4c272c 100644
--- a/examples/dialogs/tabdialog/main.cpp
+++ b/examples/dialogs/tabdialog/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/tabdialog/tabdialog.cpp b/examples/dialogs/tabdialog/tabdialog.cpp
index f99be2f400..00e3706c5c 100644
--- a/examples/dialogs/tabdialog/tabdialog.cpp
+++ b/examples/dialogs/tabdialog/tabdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/tabdialog/tabdialog.h b/examples/dialogs/tabdialog/tabdialog.h
index 1cc71beae9..c2b46f0e92 100644
--- a/examples/dialogs/tabdialog/tabdialog.h
+++ b/examples/dialogs/tabdialog/tabdialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/dialogs/trivialwizard/trivialwizard.cpp b/examples/dialogs/trivialwizard/trivialwizard.cpp
index 5ad9a20414..f8209405d9 100644
--- a/examples/dialogs/trivialwizard/trivialwizard.cpp
+++ b/examples/dialogs/trivialwizard/trivialwizard.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/draggableicons/dragwidget.cpp b/examples/draganddrop/draggableicons/dragwidget.cpp
index 9d7ee8adb1..93a02a4647 100644
--- a/examples/draganddrop/draggableicons/dragwidget.cpp
+++ b/examples/draganddrop/draggableicons/dragwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/draggableicons/dragwidget.h b/examples/draganddrop/draggableicons/dragwidget.h
index 252cce0304..b2fae51c5e 100644
--- a/examples/draganddrop/draggableicons/dragwidget.h
+++ b/examples/draganddrop/draggableicons/dragwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/draggableicons/main.cpp b/examples/draganddrop/draggableicons/main.cpp
index b4f92005cd..5a7120c9d5 100644
--- a/examples/draganddrop/draggableicons/main.cpp
+++ b/examples/draganddrop/draggableicons/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/draggabletext/draglabel.cpp b/examples/draganddrop/draggabletext/draglabel.cpp
index a4f71d29a1..803e659157 100644
--- a/examples/draganddrop/draggabletext/draglabel.cpp
+++ b/examples/draganddrop/draggabletext/draglabel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/draggabletext/draglabel.h b/examples/draganddrop/draggabletext/draglabel.h
index 5662eb957a..e067a37652 100644
--- a/examples/draganddrop/draggabletext/draglabel.h
+++ b/examples/draganddrop/draggabletext/draglabel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/draggabletext/dragwidget.cpp b/examples/draganddrop/draggabletext/dragwidget.cpp
index dbf926c386..60d84ebb5b 100644
--- a/examples/draganddrop/draggabletext/dragwidget.cpp
+++ b/examples/draganddrop/draggabletext/dragwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/draggabletext/dragwidget.h b/examples/draganddrop/draggabletext/dragwidget.h
index 8f9492b25a..deef7fe4dd 100644
--- a/examples/draganddrop/draggabletext/dragwidget.h
+++ b/examples/draganddrop/draggabletext/dragwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/draggabletext/main.cpp b/examples/draganddrop/draggabletext/main.cpp
index ce90a00ddf..3c57afff6a 100644
--- a/examples/draganddrop/draggabletext/main.cpp
+++ b/examples/draganddrop/draggabletext/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/dropsite/droparea.cpp b/examples/draganddrop/dropsite/droparea.cpp
index ebacac4752..95bbd3000c 100644
--- a/examples/draganddrop/dropsite/droparea.cpp
+++ b/examples/draganddrop/dropsite/droparea.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/dropsite/droparea.h b/examples/draganddrop/dropsite/droparea.h
index ca30e80f88..e1586990df 100644
--- a/examples/draganddrop/dropsite/droparea.h
+++ b/examples/draganddrop/dropsite/droparea.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/dropsite/dropsitewindow.cpp b/examples/draganddrop/dropsite/dropsitewindow.cpp
index 0e6034afb8..f7fc5aa1ab 100644
--- a/examples/draganddrop/dropsite/dropsitewindow.cpp
+++ b/examples/draganddrop/dropsite/dropsitewindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/dropsite/dropsitewindow.h b/examples/draganddrop/dropsite/dropsitewindow.h
index 4e5313b56c..049e9593f4 100644
--- a/examples/draganddrop/dropsite/dropsitewindow.h
+++ b/examples/draganddrop/dropsite/dropsitewindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/dropsite/main.cpp b/examples/draganddrop/dropsite/main.cpp
index b053135791..f6220fa42e 100644
--- a/examples/draganddrop/dropsite/main.cpp
+++ b/examples/draganddrop/dropsite/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/fridgemagnets/draglabel.cpp b/examples/draganddrop/fridgemagnets/draglabel.cpp
index ae973b7cc8..a4e52ed635 100644
--- a/examples/draganddrop/fridgemagnets/draglabel.cpp
+++ b/examples/draganddrop/fridgemagnets/draglabel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/fridgemagnets/draglabel.h b/examples/draganddrop/fridgemagnets/draglabel.h
index a4de61ec0d..ecbd02d896 100644
--- a/examples/draganddrop/fridgemagnets/draglabel.h
+++ b/examples/draganddrop/fridgemagnets/draglabel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/fridgemagnets/dragwidget.cpp b/examples/draganddrop/fridgemagnets/dragwidget.cpp
index 726fd677e4..434fcecb22 100644
--- a/examples/draganddrop/fridgemagnets/dragwidget.cpp
+++ b/examples/draganddrop/fridgemagnets/dragwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/fridgemagnets/dragwidget.h b/examples/draganddrop/fridgemagnets/dragwidget.h
index a1c0e52bf0..a3e3ced25e 100644
--- a/examples/draganddrop/fridgemagnets/dragwidget.h
+++ b/examples/draganddrop/fridgemagnets/dragwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/fridgemagnets/main.cpp b/examples/draganddrop/fridgemagnets/main.cpp
index a3b1451214..692a5e394a 100644
--- a/examples/draganddrop/fridgemagnets/main.cpp
+++ b/examples/draganddrop/fridgemagnets/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/puzzle/main.cpp b/examples/draganddrop/puzzle/main.cpp
index 52c332b5a9..31b7142819 100644
--- a/examples/draganddrop/puzzle/main.cpp
+++ b/examples/draganddrop/puzzle/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/puzzle/mainwindow.cpp b/examples/draganddrop/puzzle/mainwindow.cpp
index cbdb669ce6..0540aaef9f 100644
--- a/examples/draganddrop/puzzle/mainwindow.cpp
+++ b/examples/draganddrop/puzzle/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/puzzle/mainwindow.h b/examples/draganddrop/puzzle/mainwindow.h
index e0f7aec668..c7ce2c8ef3 100644
--- a/examples/draganddrop/puzzle/mainwindow.h
+++ b/examples/draganddrop/puzzle/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/puzzle/pieceslist.cpp b/examples/draganddrop/puzzle/pieceslist.cpp
index ccbed762b0..8e0892aae6 100644
--- a/examples/draganddrop/puzzle/pieceslist.cpp
+++ b/examples/draganddrop/puzzle/pieceslist.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/puzzle/pieceslist.h b/examples/draganddrop/puzzle/pieceslist.h
index 468304a3d3..3c6b042b4e 100644
--- a/examples/draganddrop/puzzle/pieceslist.h
+++ b/examples/draganddrop/puzzle/pieceslist.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/puzzle/puzzlewidget.cpp b/examples/draganddrop/puzzle/puzzlewidget.cpp
index 897af3ca56..1c5b0cc5d6 100644
--- a/examples/draganddrop/puzzle/puzzlewidget.cpp
+++ b/examples/draganddrop/puzzle/puzzlewidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/draganddrop/puzzle/puzzlewidget.h b/examples/draganddrop/puzzle/puzzlewidget.h
index 496edbb1e0..1c0fc77a5f 100644
--- a/examples/draganddrop/puzzle/puzzlewidget.h
+++ b/examples/draganddrop/puzzle/puzzlewidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/effects/blurpicker/blureffect.cpp b/examples/effects/blurpicker/blureffect.cpp
index d12d8afe78..d9a757722b 100644
--- a/examples/effects/blurpicker/blureffect.cpp
+++ b/examples/effects/blurpicker/blureffect.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/effects/blurpicker/blureffect.h b/examples/effects/blurpicker/blureffect.h
index dbd7f9826d..6cef9df4b5 100644
--- a/examples/effects/blurpicker/blureffect.h
+++ b/examples/effects/blurpicker/blureffect.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/effects/blurpicker/blurpicker.cpp b/examples/effects/blurpicker/blurpicker.cpp
index 58e24134a5..ab56b241f8 100644
--- a/examples/effects/blurpicker/blurpicker.cpp
+++ b/examples/effects/blurpicker/blurpicker.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/effects/blurpicker/blurpicker.h b/examples/effects/blurpicker/blurpicker.h
index cbf9206b79..c0df0814d0 100644
--- a/examples/effects/blurpicker/blurpicker.h
+++ b/examples/effects/blurpicker/blurpicker.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/effects/blurpicker/main.cpp b/examples/effects/blurpicker/main.cpp
index 19e13f532b..662800596d 100644
--- a/examples/effects/blurpicker/main.cpp
+++ b/examples/effects/blurpicker/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/effects/fademessage/fademessage.cpp b/examples/effects/fademessage/fademessage.cpp
index 72dbf62ddf..0af0a57904 100644
--- a/examples/effects/fademessage/fademessage.cpp
+++ b/examples/effects/fademessage/fademessage.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/effects/fademessage/fademessage.h b/examples/effects/fademessage/fademessage.h
index 2289b43a60..635f57a725 100644
--- a/examples/effects/fademessage/fademessage.h
+++ b/examples/effects/fademessage/fademessage.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/effects/fademessage/main.cpp b/examples/effects/fademessage/main.cpp
index f66694f5ca..d755ebeb7b 100644
--- a/examples/effects/fademessage/main.cpp
+++ b/examples/effects/fademessage/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/effects/lighting/lighting.cpp b/examples/effects/lighting/lighting.cpp
index 5a99999c01..713d0e0ec9 100644
--- a/examples/effects/lighting/lighting.cpp
+++ b/examples/effects/lighting/lighting.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/effects/lighting/lighting.h b/examples/effects/lighting/lighting.h
index 933a2b557b..2ed0d5ac12 100644
--- a/examples/effects/lighting/lighting.h
+++ b/examples/effects/lighting/lighting.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/effects/lighting/main.cpp b/examples/effects/lighting/main.cpp
index 3769f0aeeb..aedd9a24cb 100644
--- a/examples/effects/lighting/main.cpp
+++ b/examples/effects/lighting/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/embedded/digiflip/digiflip.cpp b/examples/embedded/digiflip/digiflip.cpp
index a2c126be1c..6c13ab8e1b 100644
--- a/examples/embedded/digiflip/digiflip.cpp
+++ b/examples/embedded/digiflip/digiflip.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/embedded/flickable/flickable.cpp b/examples/embedded/flickable/flickable.cpp
index 60433f6d5b..3e838176b8 100644
--- a/examples/embedded/flickable/flickable.cpp
+++ b/examples/embedded/flickable/flickable.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/embedded/flickable/flickable.h b/examples/embedded/flickable/flickable.h
index 6b32e06d95..0cab35a4b6 100644
--- a/examples/embedded/flickable/flickable.h
+++ b/examples/embedded/flickable/flickable.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/embedded/flickable/main.cpp b/examples/embedded/flickable/main.cpp
index 28c8ead9a7..1001f94b58 100644
--- a/examples/embedded/flickable/main.cpp
+++ b/examples/embedded/flickable/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/embedded/flightinfo/flightinfo.cpp b/examples/embedded/flightinfo/flightinfo.cpp
index 853679ff20..e156da4afc 100644
--- a/examples/embedded/flightinfo/flightinfo.cpp
+++ b/examples/embedded/flightinfo/flightinfo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/embedded/lightmaps/lightmaps.cpp b/examples/embedded/lightmaps/lightmaps.cpp
index e46a672920..b7a06ae9a0 100644
--- a/examples/embedded/lightmaps/lightmaps.cpp
+++ b/examples/embedded/lightmaps/lightmaps.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/embedded/lightmaps/lightmaps.h b/examples/embedded/lightmaps/lightmaps.h
index eb6e4f88c4..bd4c1a4b44 100644
--- a/examples/embedded/lightmaps/lightmaps.h
+++ b/examples/embedded/lightmaps/lightmaps.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/embedded/lightmaps/main.cpp b/examples/embedded/lightmaps/main.cpp
index c39428b456..26d40b81df 100644
--- a/examples/embedded/lightmaps/main.cpp
+++ b/examples/embedded/lightmaps/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/embedded/lightmaps/mapzoom.cpp b/examples/embedded/lightmaps/mapzoom.cpp
index b39ca5ac9a..5a99f1c449 100644
--- a/examples/embedded/lightmaps/mapzoom.cpp
+++ b/examples/embedded/lightmaps/mapzoom.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/embedded/lightmaps/mapzoom.h b/examples/embedded/lightmaps/mapzoom.h
index d8855efefe..84286ea561 100644
--- a/examples/embedded/lightmaps/mapzoom.h
+++ b/examples/embedded/lightmaps/mapzoom.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/embedded/lightmaps/slippymap.cpp b/examples/embedded/lightmaps/slippymap.cpp
index 0bacb16874..c47f1330a2 100644
--- a/examples/embedded/lightmaps/slippymap.cpp
+++ b/examples/embedded/lightmaps/slippymap.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/embedded/lightmaps/slippymap.h b/examples/embedded/lightmaps/slippymap.h
index 63729c9958..121af32cb2 100644
--- a/examples/embedded/lightmaps/slippymap.h
+++ b/examples/embedded/lightmaps/slippymap.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/embedded/raycasting/raycasting.cpp b/examples/embedded/raycasting/raycasting.cpp
index d1ea143957..1b94ab7d62 100644
--- a/examples/embedded/raycasting/raycasting.cpp
+++ b/examples/embedded/raycasting/raycasting.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -253,10 +253,6 @@ protected:
void resizeEvent(QResizeEvent*) {
#if defined(Q_OS_WINCE_WM)
touchDevice = true;
-#elif defined(Q_OS_SYMBIAN)
- // FIXME: use HAL
- if (width() > 480 || height() > 480)
- touchDevice = true;
#else
touchDevice = false;
#endif
diff --git a/examples/embedded/styleexample/main.cpp b/examples/embedded/styleexample/main.cpp
index 4a2c2f001e..4d3b97e0e5 100644
--- a/examples/embedded/styleexample/main.cpp
+++ b/examples/embedded/styleexample/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/embedded/styleexample/stylewidget.cpp b/examples/embedded/styleexample/stylewidget.cpp
index 9d499c2f2c..24b6fae812 100644
--- a/examples/embedded/styleexample/stylewidget.cpp
+++ b/examples/embedded/styleexample/stylewidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/embedded/styleexample/stylewidget.h b/examples/embedded/styleexample/stylewidget.h
index 7ecf4ac13b..2213cbe57c 100644
--- a/examples/embedded/styleexample/stylewidget.h
+++ b/examples/embedded/styleexample/stylewidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/gestures/imagegestures/imagewidget.cpp b/examples/gestures/imagegestures/imagewidget.cpp
index d7f299285b..8a120c6ae6 100644
--- a/examples/gestures/imagegestures/imagewidget.cpp
+++ b/examples/gestures/imagegestures/imagewidget.cpp
@@ -2,8 +2,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/gestures/imagegestures/imagewidget.h b/examples/gestures/imagegestures/imagewidget.h
index dd09a7b874..387cf62f7e 100644
--- a/examples/gestures/imagegestures/imagewidget.h
+++ b/examples/gestures/imagegestures/imagewidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/gestures/imagegestures/main.cpp b/examples/gestures/imagegestures/main.cpp
index 78806777f8..e08502429a 100644
--- a/examples/gestures/imagegestures/main.cpp
+++ b/examples/gestures/imagegestures/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/gestures/imagegestures/mainwidget.cpp b/examples/gestures/imagegestures/mainwidget.cpp
index e973dbcc78..8dffc60b35 100644
--- a/examples/gestures/imagegestures/mainwidget.cpp
+++ b/examples/gestures/imagegestures/mainwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/gestures/imagegestures/mainwidget.h b/examples/gestures/imagegestures/mainwidget.h
index ea6a82cc9d..e707721722 100644
--- a/examples/gestures/imagegestures/mainwidget.h
+++ b/examples/gestures/imagegestures/mainwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/anchorlayout/main.cpp b/examples/graphicsview/anchorlayout/main.cpp
index 575209583f..c55d06af79 100644
--- a/examples/graphicsview/anchorlayout/main.cpp
+++ b/examples/graphicsview/anchorlayout/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/basicgraphicslayouts/layoutitem.cpp b/examples/graphicsview/basicgraphicslayouts/layoutitem.cpp
index 1d4ce5cb3e..7067cddece 100644
--- a/examples/graphicsview/basicgraphicslayouts/layoutitem.cpp
+++ b/examples/graphicsview/basicgraphicslayouts/layoutitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/basicgraphicslayouts/layoutitem.h b/examples/graphicsview/basicgraphicslayouts/layoutitem.h
index f51ee280de..798c4650c6 100644
--- a/examples/graphicsview/basicgraphicslayouts/layoutitem.h
+++ b/examples/graphicsview/basicgraphicslayouts/layoutitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/basicgraphicslayouts/main.cpp b/examples/graphicsview/basicgraphicslayouts/main.cpp
index 296120fd40..ef482235a9 100644
--- a/examples/graphicsview/basicgraphicslayouts/main.cpp
+++ b/examples/graphicsview/basicgraphicslayouts/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/basicgraphicslayouts/window.cpp b/examples/graphicsview/basicgraphicslayouts/window.cpp
index 33016be62f..e3786b61f1 100644
--- a/examples/graphicsview/basicgraphicslayouts/window.cpp
+++ b/examples/graphicsview/basicgraphicslayouts/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/basicgraphicslayouts/window.h b/examples/graphicsview/basicgraphicslayouts/window.h
index dbfcb33adc..5c1cc2ed4f 100644
--- a/examples/graphicsview/basicgraphicslayouts/window.h
+++ b/examples/graphicsview/basicgraphicslayouts/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/basic.fsh b/examples/graphicsview/boxes/basic.fsh
index b0491b7d41..917dbbaa0b 100644
--- a/examples/graphicsview/boxes/basic.fsh
+++ b/examples/graphicsview/boxes/basic.fsh
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/basic.vsh b/examples/graphicsview/boxes/basic.vsh
index 0016c261c7..db34a1a0d3 100644
--- a/examples/graphicsview/boxes/basic.vsh
+++ b/examples/graphicsview/boxes/basic.vsh
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/dotted.fsh b/examples/graphicsview/boxes/dotted.fsh
index 22ade01ecf..2fe32b3b89 100644
--- a/examples/graphicsview/boxes/dotted.fsh
+++ b/examples/graphicsview/boxes/dotted.fsh
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/fresnel.fsh b/examples/graphicsview/boxes/fresnel.fsh
index d00c63d566..8750dd9f20 100644
--- a/examples/graphicsview/boxes/fresnel.fsh
+++ b/examples/graphicsview/boxes/fresnel.fsh
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/glass.fsh b/examples/graphicsview/boxes/glass.fsh
index adadab8c58..d635b2cdc3 100644
--- a/examples/graphicsview/boxes/glass.fsh
+++ b/examples/graphicsview/boxes/glass.fsh
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/glbuffers.cpp b/examples/graphicsview/boxes/glbuffers.cpp
index 5b501f573c..e2aa2a4789 100644
--- a/examples/graphicsview/boxes/glbuffers.cpp
+++ b/examples/graphicsview/boxes/glbuffers.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/glbuffers.h b/examples/graphicsview/boxes/glbuffers.h
index e81a026817..2b91915e8e 100644
--- a/examples/graphicsview/boxes/glbuffers.h
+++ b/examples/graphicsview/boxes/glbuffers.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/glextensions.cpp b/examples/graphicsview/boxes/glextensions.cpp
index 88e946b359..ada8f457f6 100644
--- a/examples/graphicsview/boxes/glextensions.cpp
+++ b/examples/graphicsview/boxes/glextensions.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/glextensions.h b/examples/graphicsview/boxes/glextensions.h
index 751dbd8aa9..35dd9a047c 100644
--- a/examples/graphicsview/boxes/glextensions.h
+++ b/examples/graphicsview/boxes/glextensions.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/gltrianglemesh.h b/examples/graphicsview/boxes/gltrianglemesh.h
index d10437d05f..2c9ab01c3f 100644
--- a/examples/graphicsview/boxes/gltrianglemesh.h
+++ b/examples/graphicsview/boxes/gltrianglemesh.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/granite.fsh b/examples/graphicsview/boxes/granite.fsh
index 5e78ff287c..175420f351 100644
--- a/examples/graphicsview/boxes/granite.fsh
+++ b/examples/graphicsview/boxes/granite.fsh
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/main.cpp b/examples/graphicsview/boxes/main.cpp
index 42b8d331cb..2baa539d3a 100644
--- a/examples/graphicsview/boxes/main.cpp
+++ b/examples/graphicsview/boxes/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/marble.fsh b/examples/graphicsview/boxes/marble.fsh
index 84d62af8b2..3985a98e96 100644
--- a/examples/graphicsview/boxes/marble.fsh
+++ b/examples/graphicsview/boxes/marble.fsh
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/qtbox.cpp b/examples/graphicsview/boxes/qtbox.cpp
index 226363de0b..cff4497253 100644
--- a/examples/graphicsview/boxes/qtbox.cpp
+++ b/examples/graphicsview/boxes/qtbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/qtbox.h b/examples/graphicsview/boxes/qtbox.h
index 8cac5562a5..66b9b17b7f 100644
--- a/examples/graphicsview/boxes/qtbox.h
+++ b/examples/graphicsview/boxes/qtbox.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/reflection.fsh b/examples/graphicsview/boxes/reflection.fsh
index ad63ccb3a3..95a21112ea 100644
--- a/examples/graphicsview/boxes/reflection.fsh
+++ b/examples/graphicsview/boxes/reflection.fsh
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/refraction.fsh b/examples/graphicsview/boxes/refraction.fsh
index b591891c19..5411478ea2 100644
--- a/examples/graphicsview/boxes/refraction.fsh
+++ b/examples/graphicsview/boxes/refraction.fsh
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/roundedbox.cpp b/examples/graphicsview/boxes/roundedbox.cpp
index b3d452d161..e205dbdb2b 100644
--- a/examples/graphicsview/boxes/roundedbox.cpp
+++ b/examples/graphicsview/boxes/roundedbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/roundedbox.h b/examples/graphicsview/boxes/roundedbox.h
index 12f6abe042..3edfb69fa8 100644
--- a/examples/graphicsview/boxes/roundedbox.h
+++ b/examples/graphicsview/boxes/roundedbox.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/scene.cpp b/examples/graphicsview/boxes/scene.cpp
index bbe4f896e1..5fb43d8c99 100644
--- a/examples/graphicsview/boxes/scene.cpp
+++ b/examples/graphicsview/boxes/scene.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/scene.h b/examples/graphicsview/boxes/scene.h
index e79093df0e..9410f7f994 100644
--- a/examples/graphicsview/boxes/scene.h
+++ b/examples/graphicsview/boxes/scene.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/trackball.cpp b/examples/graphicsview/boxes/trackball.cpp
index 95d4a63cab..b0e9c44628 100644
--- a/examples/graphicsview/boxes/trackball.cpp
+++ b/examples/graphicsview/boxes/trackball.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/trackball.h b/examples/graphicsview/boxes/trackball.h
index ac0f41c969..42a233c4f8 100644
--- a/examples/graphicsview/boxes/trackball.h
+++ b/examples/graphicsview/boxes/trackball.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/boxes/wood.fsh b/examples/graphicsview/boxes/wood.fsh
index 4ce1411f5f..a722bac869 100644
--- a/examples/graphicsview/boxes/wood.fsh
+++ b/examples/graphicsview/boxes/wood.fsh
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/chip/chip.cpp b/examples/graphicsview/chip/chip.cpp
index e7978cdfea..912a7902c9 100644
--- a/examples/graphicsview/chip/chip.cpp
+++ b/examples/graphicsview/chip/chip.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/chip/chip.h b/examples/graphicsview/chip/chip.h
index fc57633004..04fae2d30c 100644
--- a/examples/graphicsview/chip/chip.h
+++ b/examples/graphicsview/chip/chip.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/chip/main.cpp b/examples/graphicsview/chip/main.cpp
index d82a34cb2b..689c806be8 100644
--- a/examples/graphicsview/chip/main.cpp
+++ b/examples/graphicsview/chip/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/chip/mainwindow.cpp b/examples/graphicsview/chip/mainwindow.cpp
index c504a108c8..3d0d295225 100644
--- a/examples/graphicsview/chip/mainwindow.cpp
+++ b/examples/graphicsview/chip/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/chip/mainwindow.h b/examples/graphicsview/chip/mainwindow.h
index 01bd3a1587..18e27a0019 100644
--- a/examples/graphicsview/chip/mainwindow.h
+++ b/examples/graphicsview/chip/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/chip/view.cpp b/examples/graphicsview/chip/view.cpp
index 1169b30421..ce8aff9a83 100644
--- a/examples/graphicsview/chip/view.cpp
+++ b/examples/graphicsview/chip/view.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/chip/view.h b/examples/graphicsview/chip/view.h
index 2c3d643976..7753efff55 100644
--- a/examples/graphicsview/chip/view.h
+++ b/examples/graphicsview/chip/view.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/collidingmice/main.cpp b/examples/graphicsview/collidingmice/main.cpp
index c3db838746..63b14cf075 100644
--- a/examples/graphicsview/collidingmice/main.cpp
+++ b/examples/graphicsview/collidingmice/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/collidingmice/mouse.cpp b/examples/graphicsview/collidingmice/mouse.cpp
index f5ad94bfef..2ffbeff6d5 100644
--- a/examples/graphicsview/collidingmice/mouse.cpp
+++ b/examples/graphicsview/collidingmice/mouse.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/collidingmice/mouse.h b/examples/graphicsview/collidingmice/mouse.h
index c85e351f44..fd036e8b93 100644
--- a/examples/graphicsview/collidingmice/mouse.h
+++ b/examples/graphicsview/collidingmice/mouse.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/diagramscene/arrow.cpp b/examples/graphicsview/diagramscene/arrow.cpp
index 6ba8e8282e..62c1c97d30 100644
--- a/examples/graphicsview/diagramscene/arrow.cpp
+++ b/examples/graphicsview/diagramscene/arrow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/diagramscene/arrow.h b/examples/graphicsview/diagramscene/arrow.h
index b6e2c503b4..8b1c54bde3 100644
--- a/examples/graphicsview/diagramscene/arrow.h
+++ b/examples/graphicsview/diagramscene/arrow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/diagramscene/diagramitem.cpp b/examples/graphicsview/diagramscene/diagramitem.cpp
index 3b67346cca..339d605bb7 100644
--- a/examples/graphicsview/diagramscene/diagramitem.cpp
+++ b/examples/graphicsview/diagramscene/diagramitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/diagramscene/diagramitem.h b/examples/graphicsview/diagramscene/diagramitem.h
index 96de11e865..23fee9ebef 100644
--- a/examples/graphicsview/diagramscene/diagramitem.h
+++ b/examples/graphicsview/diagramscene/diagramitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/diagramscene/diagramscene.cpp b/examples/graphicsview/diagramscene/diagramscene.cpp
index c7ff12552f..c4a654aa99 100644
--- a/examples/graphicsview/diagramscene/diagramscene.cpp
+++ b/examples/graphicsview/diagramscene/diagramscene.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/diagramscene/diagramscene.h b/examples/graphicsview/diagramscene/diagramscene.h
index dfa9bd197f..9f65eba890 100644
--- a/examples/graphicsview/diagramscene/diagramscene.h
+++ b/examples/graphicsview/diagramscene/diagramscene.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/diagramscene/diagramtextitem.cpp b/examples/graphicsview/diagramscene/diagramtextitem.cpp
index ddbd754489..3b6aad2d31 100644
--- a/examples/graphicsview/diagramscene/diagramtextitem.cpp
+++ b/examples/graphicsview/diagramscene/diagramtextitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/diagramscene/diagramtextitem.h b/examples/graphicsview/diagramscene/diagramtextitem.h
index 3a4d6d9911..5505886e5e 100644
--- a/examples/graphicsview/diagramscene/diagramtextitem.h
+++ b/examples/graphicsview/diagramscene/diagramtextitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/diagramscene/main.cpp b/examples/graphicsview/diagramscene/main.cpp
index d1d8445aa2..33bc97b71f 100644
--- a/examples/graphicsview/diagramscene/main.cpp
+++ b/examples/graphicsview/diagramscene/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/diagramscene/mainwindow.cpp b/examples/graphicsview/diagramscene/mainwindow.cpp
index 382f47ba99..ca98838b7a 100644
--- a/examples/graphicsview/diagramscene/mainwindow.cpp
+++ b/examples/graphicsview/diagramscene/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/diagramscene/mainwindow.h b/examples/graphicsview/diagramscene/mainwindow.h
index 3986e41725..e3c0496c79 100644
--- a/examples/graphicsview/diagramscene/mainwindow.h
+++ b/examples/graphicsview/diagramscene/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/dragdroprobot/coloritem.cpp b/examples/graphicsview/dragdroprobot/coloritem.cpp
index 137faf7497..18e7a01af2 100644
--- a/examples/graphicsview/dragdroprobot/coloritem.cpp
+++ b/examples/graphicsview/dragdroprobot/coloritem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/dragdroprobot/coloritem.h b/examples/graphicsview/dragdroprobot/coloritem.h
index 72182420aa..9d3b4a9693 100644
--- a/examples/graphicsview/dragdroprobot/coloritem.h
+++ b/examples/graphicsview/dragdroprobot/coloritem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/dragdroprobot/main.cpp b/examples/graphicsview/dragdroprobot/main.cpp
index ca68a17157..f12f6080c7 100644
--- a/examples/graphicsview/dragdroprobot/main.cpp
+++ b/examples/graphicsview/dragdroprobot/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/dragdroprobot/robot.cpp b/examples/graphicsview/dragdroprobot/robot.cpp
index e073a85791..20935bf6c5 100644
--- a/examples/graphicsview/dragdroprobot/robot.cpp
+++ b/examples/graphicsview/dragdroprobot/robot.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/dragdroprobot/robot.h b/examples/graphicsview/dragdroprobot/robot.h
index 60808a4df7..ff9fb49485 100644
--- a/examples/graphicsview/dragdroprobot/robot.h
+++ b/examples/graphicsview/dragdroprobot/robot.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/elasticnodes/edge.cpp b/examples/graphicsview/elasticnodes/edge.cpp
index 0431ff600c..ee7334cdcc 100644
--- a/examples/graphicsview/elasticnodes/edge.cpp
+++ b/examples/graphicsview/elasticnodes/edge.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/elasticnodes/edge.h b/examples/graphicsview/elasticnodes/edge.h
index dfd6dd7c40..9bf4112212 100644
--- a/examples/graphicsview/elasticnodes/edge.h
+++ b/examples/graphicsview/elasticnodes/edge.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/elasticnodes/graphwidget.cpp b/examples/graphicsview/elasticnodes/graphwidget.cpp
index 50dcf3348c..4909a42292 100644
--- a/examples/graphicsview/elasticnodes/graphwidget.cpp
+++ b/examples/graphicsview/elasticnodes/graphwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/elasticnodes/graphwidget.h b/examples/graphicsview/elasticnodes/graphwidget.h
index b65a213685..61bcfdb5cb 100644
--- a/examples/graphicsview/elasticnodes/graphwidget.h
+++ b/examples/graphicsview/elasticnodes/graphwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/elasticnodes/main.cpp b/examples/graphicsview/elasticnodes/main.cpp
index 0aa551d4e5..239b8290ea 100644
--- a/examples/graphicsview/elasticnodes/main.cpp
+++ b/examples/graphicsview/elasticnodes/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/elasticnodes/node.cpp b/examples/graphicsview/elasticnodes/node.cpp
index de8d31058a..dad226a5e6 100644
--- a/examples/graphicsview/elasticnodes/node.cpp
+++ b/examples/graphicsview/elasticnodes/node.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/elasticnodes/node.h b/examples/graphicsview/elasticnodes/node.h
index d2f3e7471b..86ca407e08 100644
--- a/examples/graphicsview/elasticnodes/node.h
+++ b/examples/graphicsview/elasticnodes/node.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/embeddeddialogs/customproxy.cpp b/examples/graphicsview/embeddeddialogs/customproxy.cpp
index cc1ec06090..2aa2986014 100644
--- a/examples/graphicsview/embeddeddialogs/customproxy.cpp
+++ b/examples/graphicsview/embeddeddialogs/customproxy.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/embeddeddialogs/customproxy.h b/examples/graphicsview/embeddeddialogs/customproxy.h
index d276298709..c85bbaccd3 100644
--- a/examples/graphicsview/embeddeddialogs/customproxy.h
+++ b/examples/graphicsview/embeddeddialogs/customproxy.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/embeddeddialogs/embeddeddialog.cpp b/examples/graphicsview/embeddeddialogs/embeddeddialog.cpp
index 40ed950fd1..e306f32c71 100644
--- a/examples/graphicsview/embeddeddialogs/embeddeddialog.cpp
+++ b/examples/graphicsview/embeddeddialogs/embeddeddialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/embeddeddialogs/embeddeddialog.h b/examples/graphicsview/embeddeddialogs/embeddeddialog.h
index 4098597577..59aa4c244a 100644
--- a/examples/graphicsview/embeddeddialogs/embeddeddialog.h
+++ b/examples/graphicsview/embeddeddialogs/embeddeddialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/embeddeddialogs/main.cpp b/examples/graphicsview/embeddeddialogs/main.cpp
index e70819efcc..88b249e481 100644
--- a/examples/graphicsview/embeddeddialogs/main.cpp
+++ b/examples/graphicsview/embeddeddialogs/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/flowlayout/flowlayout.cpp b/examples/graphicsview/flowlayout/flowlayout.cpp
index 2b26111223..3f787109eb 100644
--- a/examples/graphicsview/flowlayout/flowlayout.cpp
+++ b/examples/graphicsview/flowlayout/flowlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/flowlayout/flowlayout.h b/examples/graphicsview/flowlayout/flowlayout.h
index a1adc2e2a6..751e435ec0 100644
--- a/examples/graphicsview/flowlayout/flowlayout.h
+++ b/examples/graphicsview/flowlayout/flowlayout.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/flowlayout/main.cpp b/examples/graphicsview/flowlayout/main.cpp
index 915eb479ca..a7a1155224 100644
--- a/examples/graphicsview/flowlayout/main.cpp
+++ b/examples/graphicsview/flowlayout/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/flowlayout/window.cpp b/examples/graphicsview/flowlayout/window.cpp
index 2ab4f5f515..193a2bbc6e 100644
--- a/examples/graphicsview/flowlayout/window.cpp
+++ b/examples/graphicsview/flowlayout/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/flowlayout/window.h b/examples/graphicsview/flowlayout/window.h
index 9a0d4d20f4..b1eb874c21 100644
--- a/examples/graphicsview/flowlayout/window.h
+++ b/examples/graphicsview/flowlayout/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/padnavigator/flippablepad.cpp b/examples/graphicsview/padnavigator/flippablepad.cpp
index e59a0c776d..a6c44af70c 100644
--- a/examples/graphicsview/padnavigator/flippablepad.cpp
+++ b/examples/graphicsview/padnavigator/flippablepad.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/padnavigator/flippablepad.h b/examples/graphicsview/padnavigator/flippablepad.h
index ef3a1cbfda..e0d1fe24e5 100644
--- a/examples/graphicsview/padnavigator/flippablepad.h
+++ b/examples/graphicsview/padnavigator/flippablepad.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/padnavigator/main.cpp b/examples/graphicsview/padnavigator/main.cpp
index 5f3eedb0f1..380fde8cd9 100644
--- a/examples/graphicsview/padnavigator/main.cpp
+++ b/examples/graphicsview/padnavigator/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/padnavigator/padnavigator.cpp b/examples/graphicsview/padnavigator/padnavigator.cpp
index 7b7d7b632f..fcfe84bb72 100644
--- a/examples/graphicsview/padnavigator/padnavigator.cpp
+++ b/examples/graphicsview/padnavigator/padnavigator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/padnavigator/padnavigator.h b/examples/graphicsview/padnavigator/padnavigator.h
index 73dae93529..659b901f5c 100644
--- a/examples/graphicsview/padnavigator/padnavigator.h
+++ b/examples/graphicsview/padnavigator/padnavigator.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/padnavigator/roundrectitem.cpp b/examples/graphicsview/padnavigator/roundrectitem.cpp
index f32c884884..1438db3a9c 100644
--- a/examples/graphicsview/padnavigator/roundrectitem.cpp
+++ b/examples/graphicsview/padnavigator/roundrectitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/padnavigator/roundrectitem.h b/examples/graphicsview/padnavigator/roundrectitem.h
index 7bdf186533..af84984d49 100644
--- a/examples/graphicsview/padnavigator/roundrectitem.h
+++ b/examples/graphicsview/padnavigator/roundrectitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/padnavigator/splashitem.cpp b/examples/graphicsview/padnavigator/splashitem.cpp
index 52a4ca9aa9..d87e8333bd 100644
--- a/examples/graphicsview/padnavigator/splashitem.cpp
+++ b/examples/graphicsview/padnavigator/splashitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/padnavigator/splashitem.h b/examples/graphicsview/padnavigator/splashitem.h
index 404880c172..bc0917e3de 100644
--- a/examples/graphicsview/padnavigator/splashitem.h
+++ b/examples/graphicsview/padnavigator/splashitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/simpleanchorlayout/main.cpp b/examples/graphicsview/simpleanchorlayout/main.cpp
index 5536e2ea03..50d8513c84 100644
--- a/examples/graphicsview/simpleanchorlayout/main.cpp
+++ b/examples/graphicsview/simpleanchorlayout/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/graphicsview/weatheranchorlayout/main.cpp b/examples/graphicsview/weatheranchorlayout/main.cpp
index 30ac6487b9..fd91967cc3 100644
--- a/examples/graphicsview/weatheranchorlayout/main.cpp
+++ b/examples/graphicsview/weatheranchorlayout/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/ipc/localfortuneclient/client.cpp b/examples/ipc/localfortuneclient/client.cpp
index 1236662bca..15e614c0b6 100644
--- a/examples/ipc/localfortuneclient/client.cpp
+++ b/examples/ipc/localfortuneclient/client.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/ipc/localfortuneclient/client.h b/examples/ipc/localfortuneclient/client.h
index c0532d8ad2..292489f3c8 100644
--- a/examples/ipc/localfortuneclient/client.h
+++ b/examples/ipc/localfortuneclient/client.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/ipc/localfortuneclient/main.cpp b/examples/ipc/localfortuneclient/main.cpp
index f56167009a..8dc2d608d3 100644
--- a/examples/ipc/localfortuneclient/main.cpp
+++ b/examples/ipc/localfortuneclient/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/ipc/localfortuneserver/main.cpp b/examples/ipc/localfortuneserver/main.cpp
index afca00ca04..b14c1b00d3 100644
--- a/examples/ipc/localfortuneserver/main.cpp
+++ b/examples/ipc/localfortuneserver/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/ipc/localfortuneserver/server.cpp b/examples/ipc/localfortuneserver/server.cpp
index 2d09bf53bb..efc2819b05 100644
--- a/examples/ipc/localfortuneserver/server.cpp
+++ b/examples/ipc/localfortuneserver/server.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/ipc/localfortuneserver/server.h b/examples/ipc/localfortuneserver/server.h
index cd9203d469..a2ce487baa 100644
--- a/examples/ipc/localfortuneserver/server.h
+++ b/examples/ipc/localfortuneserver/server.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/ipc/sharedmemory/dialog.cpp b/examples/ipc/sharedmemory/dialog.cpp
index 5a4fa75235..b12662637c 100644
--- a/examples/ipc/sharedmemory/dialog.cpp
+++ b/examples/ipc/sharedmemory/dialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/ipc/sharedmemory/dialog.h b/examples/ipc/sharedmemory/dialog.h
index 26677a9446..6ad901dc4c 100644
--- a/examples/ipc/sharedmemory/dialog.h
+++ b/examples/ipc/sharedmemory/dialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/ipc/sharedmemory/main.cpp b/examples/ipc/sharedmemory/main.cpp
index 6cda2b22f6..f02467816e 100644
--- a/examples/ipc/sharedmemory/main.cpp
+++ b/examples/ipc/sharedmemory/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/addressbook/adddialog.cpp b/examples/itemviews/addressbook/adddialog.cpp
index 0352abe39c..f34bd0d46e 100644
--- a/examples/itemviews/addressbook/adddialog.cpp
+++ b/examples/itemviews/addressbook/adddialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/addressbook/adddialog.h b/examples/itemviews/addressbook/adddialog.h
index 7d4e5b886d..6d9093b638 100644
--- a/examples/itemviews/addressbook/adddialog.h
+++ b/examples/itemviews/addressbook/adddialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/addressbook/addresswidget.cpp b/examples/itemviews/addressbook/addresswidget.cpp
index 7d4d752a52..066d5588c7 100644
--- a/examples/itemviews/addressbook/addresswidget.cpp
+++ b/examples/itemviews/addressbook/addresswidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/addressbook/addresswidget.h b/examples/itemviews/addressbook/addresswidget.h
index 28dac9dee3..3a46818463 100644
--- a/examples/itemviews/addressbook/addresswidget.h
+++ b/examples/itemviews/addressbook/addresswidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/addressbook/main.cpp b/examples/itemviews/addressbook/main.cpp
index f5dc990137..9f388dc123 100644
--- a/examples/itemviews/addressbook/main.cpp
+++ b/examples/itemviews/addressbook/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/addressbook/mainwindow.cpp b/examples/itemviews/addressbook/mainwindow.cpp
index dec4d266f6..e16aec94b0 100644
--- a/examples/itemviews/addressbook/mainwindow.cpp
+++ b/examples/itemviews/addressbook/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/addressbook/mainwindow.h b/examples/itemviews/addressbook/mainwindow.h
index 436565b12d..284e492c4a 100644
--- a/examples/itemviews/addressbook/mainwindow.h
+++ b/examples/itemviews/addressbook/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/addressbook/newaddresstab.cpp b/examples/itemviews/addressbook/newaddresstab.cpp
index 01edd24575..f27789a511 100644
--- a/examples/itemviews/addressbook/newaddresstab.cpp
+++ b/examples/itemviews/addressbook/newaddresstab.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/addressbook/newaddresstab.h b/examples/itemviews/addressbook/newaddresstab.h
index ad9afc25c2..4562050f75 100644
--- a/examples/itemviews/addressbook/newaddresstab.h
+++ b/examples/itemviews/addressbook/newaddresstab.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/addressbook/tablemodel.cpp b/examples/itemviews/addressbook/tablemodel.cpp
index 536d2a4b4e..6d99a02b55 100644
--- a/examples/itemviews/addressbook/tablemodel.cpp
+++ b/examples/itemviews/addressbook/tablemodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/addressbook/tablemodel.h b/examples/itemviews/addressbook/tablemodel.h
index e398e5a3e0..bb21af587f 100644
--- a/examples/itemviews/addressbook/tablemodel.h
+++ b/examples/itemviews/addressbook/tablemodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/basicsortfiltermodel/main.cpp b/examples/itemviews/basicsortfiltermodel/main.cpp
index 7fa67ac71d..00b733090a 100644
--- a/examples/itemviews/basicsortfiltermodel/main.cpp
+++ b/examples/itemviews/basicsortfiltermodel/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/basicsortfiltermodel/window.cpp b/examples/itemviews/basicsortfiltermodel/window.cpp
index c1d62b643c..f7f43c1753 100644
--- a/examples/itemviews/basicsortfiltermodel/window.cpp
+++ b/examples/itemviews/basicsortfiltermodel/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/basicsortfiltermodel/window.h b/examples/itemviews/basicsortfiltermodel/window.h
index 9810d03edd..f672a3eb66 100644
--- a/examples/itemviews/basicsortfiltermodel/window.h
+++ b/examples/itemviews/basicsortfiltermodel/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/chart/main.cpp b/examples/itemviews/chart/main.cpp
index 8d5f4ec909..b1c13116c9 100644
--- a/examples/itemviews/chart/main.cpp
+++ b/examples/itemviews/chart/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/chart/mainwindow.cpp b/examples/itemviews/chart/mainwindow.cpp
index 84814dae12..584390252b 100644
--- a/examples/itemviews/chart/mainwindow.cpp
+++ b/examples/itemviews/chart/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/chart/mainwindow.h b/examples/itemviews/chart/mainwindow.h
index c432bdbdd7..5ce4f30e32 100644
--- a/examples/itemviews/chart/mainwindow.h
+++ b/examples/itemviews/chart/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/chart/pieview.cpp b/examples/itemviews/chart/pieview.cpp
index 04512f6d73..dcf3aca3fb 100644
--- a/examples/itemviews/chart/pieview.cpp
+++ b/examples/itemviews/chart/pieview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -62,7 +62,8 @@ PieView::PieView(QWidget *parent)
}
void PieView::dataChanged(const QModelIndex &topLeft,
- const QModelIndex &bottomRight)
+ const QModelIndex &bottomRight,
+ const QSet<int> &)
{
QAbstractItemView::dataChanged(topLeft, bottomRight);
diff --git a/examples/itemviews/chart/pieview.h b/examples/itemviews/chart/pieview.h
index b0bc0d7993..7ee48565e8 100644
--- a/examples/itemviews/chart/pieview.h
+++ b/examples/itemviews/chart/pieview.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -68,7 +68,7 @@ public:
QModelIndex indexAt(const QPoint &point) const;
protected slots:
- void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
+ void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QSet<int> &);
void rowsInserted(const QModelIndex &parent, int start, int end);
void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end);
diff --git a/examples/itemviews/coloreditorfactory/colorlisteditor.cpp b/examples/itemviews/coloreditorfactory/colorlisteditor.cpp
index 0b1631c858..e8f1f2d719 100644
--- a/examples/itemviews/coloreditorfactory/colorlisteditor.cpp
+++ b/examples/itemviews/coloreditorfactory/colorlisteditor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/coloreditorfactory/colorlisteditor.h b/examples/itemviews/coloreditorfactory/colorlisteditor.h
index bf97dca412..13ece8ef6d 100644
--- a/examples/itemviews/coloreditorfactory/colorlisteditor.h
+++ b/examples/itemviews/coloreditorfactory/colorlisteditor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/coloreditorfactory/main.cpp b/examples/itemviews/coloreditorfactory/main.cpp
index e70150e37c..5bbe817214 100644
--- a/examples/itemviews/coloreditorfactory/main.cpp
+++ b/examples/itemviews/coloreditorfactory/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/coloreditorfactory/window.cpp b/examples/itemviews/coloreditorfactory/window.cpp
index 194168ee0d..5c1b03ebbe 100644
--- a/examples/itemviews/coloreditorfactory/window.cpp
+++ b/examples/itemviews/coloreditorfactory/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/coloreditorfactory/window.h b/examples/itemviews/coloreditorfactory/window.h
index 53b06ba6e5..65a9c8e854 100644
--- a/examples/itemviews/coloreditorfactory/window.h
+++ b/examples/itemviews/coloreditorfactory/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/combowidgetmapper/main.cpp b/examples/itemviews/combowidgetmapper/main.cpp
index 3cbf4b5880..0fc4966ccf 100644
--- a/examples/itemviews/combowidgetmapper/main.cpp
+++ b/examples/itemviews/combowidgetmapper/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/combowidgetmapper/window.cpp b/examples/itemviews/combowidgetmapper/window.cpp
index 490b993e31..8c735c04c5 100644
--- a/examples/itemviews/combowidgetmapper/window.cpp
+++ b/examples/itemviews/combowidgetmapper/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/combowidgetmapper/window.h b/examples/itemviews/combowidgetmapper/window.h
index 5262566501..8ec5523cf1 100644
--- a/examples/itemviews/combowidgetmapper/window.h
+++ b/examples/itemviews/combowidgetmapper/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/customsortfiltermodel/main.cpp b/examples/itemviews/customsortfiltermodel/main.cpp
index 458198740c..6df986324e 100644
--- a/examples/itemviews/customsortfiltermodel/main.cpp
+++ b/examples/itemviews/customsortfiltermodel/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp b/examples/itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp
index 99677e1ccd..3100efa4ac 100644
--- a/examples/itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp
+++ b/examples/itemviews/customsortfiltermodel/mysortfilterproxymodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/customsortfiltermodel/mysortfilterproxymodel.h b/examples/itemviews/customsortfiltermodel/mysortfilterproxymodel.h
index 8d081c0f6b..8ca3e10fd5 100644
--- a/examples/itemviews/customsortfiltermodel/mysortfilterproxymodel.h
+++ b/examples/itemviews/customsortfiltermodel/mysortfilterproxymodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/customsortfiltermodel/window.cpp b/examples/itemviews/customsortfiltermodel/window.cpp
index 8e640c0bc8..0a8799dccb 100644
--- a/examples/itemviews/customsortfiltermodel/window.cpp
+++ b/examples/itemviews/customsortfiltermodel/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/customsortfiltermodel/window.h b/examples/itemviews/customsortfiltermodel/window.h
index 6225d84d70..36650aedad 100644
--- a/examples/itemviews/customsortfiltermodel/window.h
+++ b/examples/itemviews/customsortfiltermodel/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/dirview/main.cpp b/examples/itemviews/dirview/main.cpp
index b76eca5566..55083afa8f 100644
--- a/examples/itemviews/dirview/main.cpp
+++ b/examples/itemviews/dirview/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/editabletreemodel/main.cpp b/examples/itemviews/editabletreemodel/main.cpp
index ced44b979c..516adf1543 100644
--- a/examples/itemviews/editabletreemodel/main.cpp
+++ b/examples/itemviews/editabletreemodel/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/editabletreemodel/mainwindow.cpp b/examples/itemviews/editabletreemodel/mainwindow.cpp
index 1754a29120..115b02e28e 100644
--- a/examples/itemviews/editabletreemodel/mainwindow.cpp
+++ b/examples/itemviews/editabletreemodel/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/editabletreemodel/mainwindow.h b/examples/itemviews/editabletreemodel/mainwindow.h
index 6608f48251..e45037c2e0 100644
--- a/examples/itemviews/editabletreemodel/mainwindow.h
+++ b/examples/itemviews/editabletreemodel/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/editabletreemodel/treeitem.cpp b/examples/itemviews/editabletreemodel/treeitem.cpp
index 34f3e881b8..c728f21a92 100644
--- a/examples/itemviews/editabletreemodel/treeitem.cpp
+++ b/examples/itemviews/editabletreemodel/treeitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/editabletreemodel/treeitem.h b/examples/itemviews/editabletreemodel/treeitem.h
index 065c748332..8426514759 100644
--- a/examples/itemviews/editabletreemodel/treeitem.h
+++ b/examples/itemviews/editabletreemodel/treeitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/editabletreemodel/treemodel.cpp b/examples/itemviews/editabletreemodel/treemodel.cpp
index 52e0b56c3f..8192c14e9f 100644
--- a/examples/itemviews/editabletreemodel/treemodel.cpp
+++ b/examples/itemviews/editabletreemodel/treemodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/editabletreemodel/treemodel.h b/examples/itemviews/editabletreemodel/treemodel.h
index 9c7af52d06..f124df2e1d 100644
--- a/examples/itemviews/editabletreemodel/treemodel.h
+++ b/examples/itemviews/editabletreemodel/treemodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/fetchmore/filelistmodel.cpp b/examples/itemviews/fetchmore/filelistmodel.cpp
index 272742c27a..42146f8edc 100644
--- a/examples/itemviews/fetchmore/filelistmodel.cpp
+++ b/examples/itemviews/fetchmore/filelistmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/fetchmore/filelistmodel.h b/examples/itemviews/fetchmore/filelistmodel.h
index 6cd2094f57..f3e9f758c7 100644
--- a/examples/itemviews/fetchmore/filelistmodel.h
+++ b/examples/itemviews/fetchmore/filelistmodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/fetchmore/main.cpp b/examples/itemviews/fetchmore/main.cpp
index 027c8bd3d1..97b94d1d3c 100644
--- a/examples/itemviews/fetchmore/main.cpp
+++ b/examples/itemviews/fetchmore/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/fetchmore/window.cpp b/examples/itemviews/fetchmore/window.cpp
index 30c000edc9..f138fb4bd4 100644
--- a/examples/itemviews/fetchmore/window.cpp
+++ b/examples/itemviews/fetchmore/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/fetchmore/window.h b/examples/itemviews/fetchmore/window.h
index 5cbd6c3ea3..cf6208b643 100644
--- a/examples/itemviews/fetchmore/window.h
+++ b/examples/itemviews/fetchmore/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/frozencolumn/freezetablewidget.cpp b/examples/itemviews/frozencolumn/freezetablewidget.cpp
index 2d2e16cd3b..56c3cb174a 100644
--- a/examples/itemviews/frozencolumn/freezetablewidget.cpp
+++ b/examples/itemviews/frozencolumn/freezetablewidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/frozencolumn/freezetablewidget.h b/examples/itemviews/frozencolumn/freezetablewidget.h
index f9129898de..1432c012f5 100644
--- a/examples/itemviews/frozencolumn/freezetablewidget.h
+++ b/examples/itemviews/frozencolumn/freezetablewidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/frozencolumn/main.cpp b/examples/itemviews/frozencolumn/main.cpp
index 947387e20d..ff50e97db9 100644
--- a/examples/itemviews/frozencolumn/main.cpp
+++ b/examples/itemviews/frozencolumn/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/interview/main.cpp b/examples/itemviews/interview/main.cpp
index 83ea0ff1c8..92239c9bdb 100644
--- a/examples/itemviews/interview/main.cpp
+++ b/examples/itemviews/interview/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/interview/model.cpp b/examples/itemviews/interview/model.cpp
index 03cd7de036..966dc7bfba 100644
--- a/examples/itemviews/interview/model.cpp
+++ b/examples/itemviews/interview/model.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/interview/model.h b/examples/itemviews/interview/model.h
index 2389346a67..0480ce1763 100644
--- a/examples/itemviews/interview/model.h
+++ b/examples/itemviews/interview/model.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/pixelator/imagemodel.cpp b/examples/itemviews/pixelator/imagemodel.cpp
index fdbe81cd02..5b64fb26e2 100644
--- a/examples/itemviews/pixelator/imagemodel.cpp
+++ b/examples/itemviews/pixelator/imagemodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/pixelator/imagemodel.h b/examples/itemviews/pixelator/imagemodel.h
index d71c0dafcb..2f778ca927 100644
--- a/examples/itemviews/pixelator/imagemodel.h
+++ b/examples/itemviews/pixelator/imagemodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/pixelator/main.cpp b/examples/itemviews/pixelator/main.cpp
index 89a7f9e665..e877051775 100644
--- a/examples/itemviews/pixelator/main.cpp
+++ b/examples/itemviews/pixelator/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/pixelator/mainwindow.cpp b/examples/itemviews/pixelator/mainwindow.cpp
index 2e77fb94bb..4d83a4d57f 100644
--- a/examples/itemviews/pixelator/mainwindow.cpp
+++ b/examples/itemviews/pixelator/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/pixelator/mainwindow.h b/examples/itemviews/pixelator/mainwindow.h
index 78a294dcc9..1aea1f9807 100644
--- a/examples/itemviews/pixelator/mainwindow.h
+++ b/examples/itemviews/pixelator/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/pixelator/pixeldelegate.cpp b/examples/itemviews/pixelator/pixeldelegate.cpp
index e92be74927..5904c2e680 100644
--- a/examples/itemviews/pixelator/pixeldelegate.cpp
+++ b/examples/itemviews/pixelator/pixeldelegate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/pixelator/pixeldelegate.h b/examples/itemviews/pixelator/pixeldelegate.h
index 9ba8c85c76..4035bc4571 100644
--- a/examples/itemviews/pixelator/pixeldelegate.h
+++ b/examples/itemviews/pixelator/pixeldelegate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/puzzle/main.cpp b/examples/itemviews/puzzle/main.cpp
index 52c332b5a9..31b7142819 100644
--- a/examples/itemviews/puzzle/main.cpp
+++ b/examples/itemviews/puzzle/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/puzzle/mainwindow.cpp b/examples/itemviews/puzzle/mainwindow.cpp
index 57b46fe266..4b9b10946a 100644
--- a/examples/itemviews/puzzle/mainwindow.cpp
+++ b/examples/itemviews/puzzle/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/puzzle/mainwindow.h b/examples/itemviews/puzzle/mainwindow.h
index a4b888d270..83704d9932 100644
--- a/examples/itemviews/puzzle/mainwindow.h
+++ b/examples/itemviews/puzzle/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/puzzle/piecesmodel.cpp b/examples/itemviews/puzzle/piecesmodel.cpp
index ddb6c062cd..68574606e2 100644
--- a/examples/itemviews/puzzle/piecesmodel.cpp
+++ b/examples/itemviews/puzzle/piecesmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/puzzle/piecesmodel.h b/examples/itemviews/puzzle/piecesmodel.h
index 5549a795d1..e8fa45a9a0 100644
--- a/examples/itemviews/puzzle/piecesmodel.h
+++ b/examples/itemviews/puzzle/piecesmodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/puzzle/puzzle.pro b/examples/itemviews/puzzle/puzzle.pro
index bcc8ab27b0..3f76bd8fd5 100644
--- a/examples/itemviews/puzzle/puzzle.pro
+++ b/examples/itemviews/puzzle/puzzle.pro
@@ -15,7 +15,7 @@ INSTALLS += target sources
wince* {
- DEPLOYMENT_PLUGIN += qjpeg qgif qtiff
+ DEPLOYMENT_PLUGIN += qjpeg qgif
}
QT += widgets
diff --git a/examples/itemviews/puzzle/puzzlewidget.cpp b/examples/itemviews/puzzle/puzzlewidget.cpp
index ee1ac78e29..a622050fd3 100644
--- a/examples/itemviews/puzzle/puzzlewidget.cpp
+++ b/examples/itemviews/puzzle/puzzlewidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/puzzle/puzzlewidget.h b/examples/itemviews/puzzle/puzzlewidget.h
index 496edbb1e0..1c0fc77a5f 100644
--- a/examples/itemviews/puzzle/puzzlewidget.h
+++ b/examples/itemviews/puzzle/puzzlewidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/simpledommodel/domitem.cpp b/examples/itemviews/simpledommodel/domitem.cpp
index 56bae8e7c2..2d7ce5a31e 100644
--- a/examples/itemviews/simpledommodel/domitem.cpp
+++ b/examples/itemviews/simpledommodel/domitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/simpledommodel/domitem.h b/examples/itemviews/simpledommodel/domitem.h
index b0acb21667..8e9da9dd27 100644
--- a/examples/itemviews/simpledommodel/domitem.h
+++ b/examples/itemviews/simpledommodel/domitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/simpledommodel/dommodel.cpp b/examples/itemviews/simpledommodel/dommodel.cpp
index 1593e1ec97..75d4c3e723 100644
--- a/examples/itemviews/simpledommodel/dommodel.cpp
+++ b/examples/itemviews/simpledommodel/dommodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/simpledommodel/dommodel.h b/examples/itemviews/simpledommodel/dommodel.h
index f643c54aa5..386f976f79 100644
--- a/examples/itemviews/simpledommodel/dommodel.h
+++ b/examples/itemviews/simpledommodel/dommodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/simpledommodel/main.cpp b/examples/itemviews/simpledommodel/main.cpp
index 03cc08d21b..e65d428bc6 100644
--- a/examples/itemviews/simpledommodel/main.cpp
+++ b/examples/itemviews/simpledommodel/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/simpledommodel/mainwindow.cpp b/examples/itemviews/simpledommodel/mainwindow.cpp
index 237f7b27cc..f84d8841e7 100644
--- a/examples/itemviews/simpledommodel/mainwindow.cpp
+++ b/examples/itemviews/simpledommodel/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/simpledommodel/mainwindow.h b/examples/itemviews/simpledommodel/mainwindow.h
index eca751cfc4..16e0b800f9 100644
--- a/examples/itemviews/simpledommodel/mainwindow.h
+++ b/examples/itemviews/simpledommodel/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/simpletreemodel/main.cpp b/examples/itemviews/simpletreemodel/main.cpp
index 338d5b4e19..a7dd720a2f 100644
--- a/examples/itemviews/simpletreemodel/main.cpp
+++ b/examples/itemviews/simpletreemodel/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/simpletreemodel/treeitem.cpp b/examples/itemviews/simpletreemodel/treeitem.cpp
index 5ade6aa7fb..a296f6ccd5 100644
--- a/examples/itemviews/simpletreemodel/treeitem.cpp
+++ b/examples/itemviews/simpletreemodel/treeitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/simpletreemodel/treeitem.h b/examples/itemviews/simpletreemodel/treeitem.h
index 43fd66391b..b2a7a83066 100644
--- a/examples/itemviews/simpletreemodel/treeitem.h
+++ b/examples/itemviews/simpletreemodel/treeitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/simpletreemodel/treemodel.cpp b/examples/itemviews/simpletreemodel/treemodel.cpp
index 3551958e10..1fad9ba347 100644
--- a/examples/itemviews/simpletreemodel/treemodel.cpp
+++ b/examples/itemviews/simpletreemodel/treemodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/simpletreemodel/treemodel.h b/examples/itemviews/simpletreemodel/treemodel.h
index 12d349a87b..9cf870c0fc 100644
--- a/examples/itemviews/simpletreemodel/treemodel.h
+++ b/examples/itemviews/simpletreemodel/treemodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/simplewidgetmapper/main.cpp b/examples/itemviews/simplewidgetmapper/main.cpp
index 3cbf4b5880..0fc4966ccf 100644
--- a/examples/itemviews/simplewidgetmapper/main.cpp
+++ b/examples/itemviews/simplewidgetmapper/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/simplewidgetmapper/window.cpp b/examples/itemviews/simplewidgetmapper/window.cpp
index 726c6f4a11..5b5ed8f231 100644
--- a/examples/itemviews/simplewidgetmapper/window.cpp
+++ b/examples/itemviews/simplewidgetmapper/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/simplewidgetmapper/window.h b/examples/itemviews/simplewidgetmapper/window.h
index f993ee9008..77772e522f 100644
--- a/examples/itemviews/simplewidgetmapper/window.h
+++ b/examples/itemviews/simplewidgetmapper/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/spinboxdelegate/delegate.cpp b/examples/itemviews/spinboxdelegate/delegate.cpp
index 8a689211e7..2967b6ae38 100644
--- a/examples/itemviews/spinboxdelegate/delegate.cpp
+++ b/examples/itemviews/spinboxdelegate/delegate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/spinboxdelegate/delegate.h b/examples/itemviews/spinboxdelegate/delegate.h
index 772b69f1c3..19d647043d 100644
--- a/examples/itemviews/spinboxdelegate/delegate.h
+++ b/examples/itemviews/spinboxdelegate/delegate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/spinboxdelegate/main.cpp b/examples/itemviews/spinboxdelegate/main.cpp
index 1ef5bcb1d6..6fdffad3ac 100644
--- a/examples/itemviews/spinboxdelegate/main.cpp
+++ b/examples/itemviews/spinboxdelegate/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/spreadsheet/main.cpp b/examples/itemviews/spreadsheet/main.cpp
index ea94d89f45..92b890f735 100644
--- a/examples/itemviews/spreadsheet/main.cpp
+++ b/examples/itemviews/spreadsheet/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/spreadsheet/printview.cpp b/examples/itemviews/spreadsheet/printview.cpp
index 501ef85509..2089dd82b1 100644
--- a/examples/itemviews/spreadsheet/printview.cpp
+++ b/examples/itemviews/spreadsheet/printview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/spreadsheet/printview.h b/examples/itemviews/spreadsheet/printview.h
index 641d6fd0c2..c7674f88ce 100644
--- a/examples/itemviews/spreadsheet/printview.h
+++ b/examples/itemviews/spreadsheet/printview.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/spreadsheet/spreadsheet.cpp b/examples/itemviews/spreadsheet/spreadsheet.cpp
index f18f654345..5d3e33ce57 100644
--- a/examples/itemviews/spreadsheet/spreadsheet.cpp
+++ b/examples/itemviews/spreadsheet/spreadsheet.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/spreadsheet/spreadsheet.h b/examples/itemviews/spreadsheet/spreadsheet.h
index 8877db98d4..d2b76c9063 100644
--- a/examples/itemviews/spreadsheet/spreadsheet.h
+++ b/examples/itemviews/spreadsheet/spreadsheet.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/spreadsheet/spreadsheetdelegate.cpp b/examples/itemviews/spreadsheet/spreadsheetdelegate.cpp
index 902f66af51..d5e747dc2f 100644
--- a/examples/itemviews/spreadsheet/spreadsheetdelegate.cpp
+++ b/examples/itemviews/spreadsheet/spreadsheetdelegate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/spreadsheet/spreadsheetdelegate.h b/examples/itemviews/spreadsheet/spreadsheetdelegate.h
index 9d8b28637a..3487b16ab7 100644
--- a/examples/itemviews/spreadsheet/spreadsheetdelegate.h
+++ b/examples/itemviews/spreadsheet/spreadsheetdelegate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/spreadsheet/spreadsheetitem.cpp b/examples/itemviews/spreadsheet/spreadsheetitem.cpp
index 0429f9da35..88f8afa325 100644
--- a/examples/itemviews/spreadsheet/spreadsheetitem.cpp
+++ b/examples/itemviews/spreadsheet/spreadsheetitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/spreadsheet/spreadsheetitem.h b/examples/itemviews/spreadsheet/spreadsheetitem.h
index cc36f69841..e61138c08b 100644
--- a/examples/itemviews/spreadsheet/spreadsheetitem.h
+++ b/examples/itemviews/spreadsheet/spreadsheetitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/stardelegate/main.cpp b/examples/itemviews/stardelegate/main.cpp
index 838cf0ff5d..3c988e0a8a 100644
--- a/examples/itemviews/stardelegate/main.cpp
+++ b/examples/itemviews/stardelegate/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/stardelegate/stardelegate.cpp b/examples/itemviews/stardelegate/stardelegate.cpp
index 16d43aa87f..3032c20088 100644
--- a/examples/itemviews/stardelegate/stardelegate.cpp
+++ b/examples/itemviews/stardelegate/stardelegate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/stardelegate/stardelegate.h b/examples/itemviews/stardelegate/stardelegate.h
index 37118f870f..6c53ab8833 100644
--- a/examples/itemviews/stardelegate/stardelegate.h
+++ b/examples/itemviews/stardelegate/stardelegate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/stardelegate/stareditor.cpp b/examples/itemviews/stardelegate/stareditor.cpp
index 46ebe93425..795a748941 100644
--- a/examples/itemviews/stardelegate/stareditor.cpp
+++ b/examples/itemviews/stardelegate/stareditor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/stardelegate/stareditor.h b/examples/itemviews/stardelegate/stareditor.h
index a0bf1d1839..88bee7d28d 100644
--- a/examples/itemviews/stardelegate/stareditor.h
+++ b/examples/itemviews/stardelegate/stareditor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/stardelegate/starrating.cpp b/examples/itemviews/stardelegate/starrating.cpp
index 7ac80f32d4..cea9330db2 100644
--- a/examples/itemviews/stardelegate/starrating.cpp
+++ b/examples/itemviews/stardelegate/starrating.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/itemviews/stardelegate/starrating.h b/examples/itemviews/stardelegate/starrating.h
index f685b77db4..04fae2509a 100644
--- a/examples/itemviews/stardelegate/starrating.h
+++ b/examples/itemviews/stardelegate/starrating.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/ja_JP/linguist/hellotr/main.cpp b/examples/ja_JP/linguist/hellotr/main.cpp
index 393087ebf9..81ef1aceaf 100644
--- a/examples/ja_JP/linguist/hellotr/main.cpp
+++ b/examples/ja_JP/linguist/hellotr/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/layouts/basiclayouts/dialog.cpp b/examples/layouts/basiclayouts/dialog.cpp
index 3814efe9f8..ca8ab60923 100644
--- a/examples/layouts/basiclayouts/dialog.cpp
+++ b/examples/layouts/basiclayouts/dialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/layouts/basiclayouts/dialog.h b/examples/layouts/basiclayouts/dialog.h
index 9f45ba6721..1d18a683ec 100644
--- a/examples/layouts/basiclayouts/dialog.h
+++ b/examples/layouts/basiclayouts/dialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/layouts/basiclayouts/main.cpp b/examples/layouts/basiclayouts/main.cpp
index 30de9c1f58..fd68d43b72 100644
--- a/examples/layouts/basiclayouts/main.cpp
+++ b/examples/layouts/basiclayouts/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/layouts/borderlayout/borderlayout.cpp b/examples/layouts/borderlayout/borderlayout.cpp
index e8cee5b9bb..fd08a32fe1 100644
--- a/examples/layouts/borderlayout/borderlayout.cpp
+++ b/examples/layouts/borderlayout/borderlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/layouts/borderlayout/borderlayout.h b/examples/layouts/borderlayout/borderlayout.h
index ba6e868734..937517dc17 100644
--- a/examples/layouts/borderlayout/borderlayout.h
+++ b/examples/layouts/borderlayout/borderlayout.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/layouts/borderlayout/main.cpp b/examples/layouts/borderlayout/main.cpp
index 218d30316c..dcbf1c0449 100644
--- a/examples/layouts/borderlayout/main.cpp
+++ b/examples/layouts/borderlayout/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/layouts/borderlayout/window.cpp b/examples/layouts/borderlayout/window.cpp
index 40e20b425f..73ad86a826 100644
--- a/examples/layouts/borderlayout/window.cpp
+++ b/examples/layouts/borderlayout/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/layouts/borderlayout/window.h b/examples/layouts/borderlayout/window.h
index cd4ca9bbbe..3db08e1ab3 100644
--- a/examples/layouts/borderlayout/window.h
+++ b/examples/layouts/borderlayout/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/layouts/dynamiclayouts/dialog.cpp b/examples/layouts/dynamiclayouts/dialog.cpp
index 4ee125d624..e3ebb66944 100644
--- a/examples/layouts/dynamiclayouts/dialog.cpp
+++ b/examples/layouts/dynamiclayouts/dialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/layouts/dynamiclayouts/dialog.h b/examples/layouts/dynamiclayouts/dialog.h
index 9c9a0f64ad..f8321abad4 100644
--- a/examples/layouts/dynamiclayouts/dialog.h
+++ b/examples/layouts/dynamiclayouts/dialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/layouts/dynamiclayouts/main.cpp b/examples/layouts/dynamiclayouts/main.cpp
index 397075ff3b..b4dd37a9cf 100644
--- a/examples/layouts/dynamiclayouts/main.cpp
+++ b/examples/layouts/dynamiclayouts/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/layouts/flowlayout/flowlayout.cpp b/examples/layouts/flowlayout/flowlayout.cpp
index 54f3a29a44..b7a62c8f03 100644
--- a/examples/layouts/flowlayout/flowlayout.cpp
+++ b/examples/layouts/flowlayout/flowlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/layouts/flowlayout/flowlayout.h b/examples/layouts/flowlayout/flowlayout.h
index e30f9f1235..2a27f93772 100644
--- a/examples/layouts/flowlayout/flowlayout.h
+++ b/examples/layouts/flowlayout/flowlayout.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/layouts/flowlayout/main.cpp b/examples/layouts/flowlayout/main.cpp
index 218d30316c..dcbf1c0449 100644
--- a/examples/layouts/flowlayout/main.cpp
+++ b/examples/layouts/flowlayout/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/layouts/flowlayout/window.cpp b/examples/layouts/flowlayout/window.cpp
index 1d4521d934..8a7dd32eac 100644
--- a/examples/layouts/flowlayout/window.cpp
+++ b/examples/layouts/flowlayout/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/layouts/flowlayout/window.h b/examples/layouts/flowlayout/window.h
index b7b650fb7b..e29813a91a 100644
--- a/examples/layouts/flowlayout/window.h
+++ b/examples/layouts/flowlayout/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/linguist/arrowpad/arrowpad.cpp b/examples/linguist/arrowpad/arrowpad.cpp
index c742c5cdc0..f25b98c126 100644
--- a/examples/linguist/arrowpad/arrowpad.cpp
+++ b/examples/linguist/arrowpad/arrowpad.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/linguist/arrowpad/arrowpad.h b/examples/linguist/arrowpad/arrowpad.h
index 1418c89039..d4f6a66420 100644
--- a/examples/linguist/arrowpad/arrowpad.h
+++ b/examples/linguist/arrowpad/arrowpad.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/linguist/arrowpad/main.cpp b/examples/linguist/arrowpad/main.cpp
index 8ca629a914..211c6ce37f 100644
--- a/examples/linguist/arrowpad/main.cpp
+++ b/examples/linguist/arrowpad/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/linguist/arrowpad/mainwindow.cpp b/examples/linguist/arrowpad/mainwindow.cpp
index e33687b5c9..7659f6e588 100644
--- a/examples/linguist/arrowpad/mainwindow.cpp
+++ b/examples/linguist/arrowpad/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/linguist/arrowpad/mainwindow.h b/examples/linguist/arrowpad/mainwindow.h
index ad3c9c6039..41caa1cd19 100644
--- a/examples/linguist/arrowpad/mainwindow.h
+++ b/examples/linguist/arrowpad/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/linguist/hellotr/main.cpp b/examples/linguist/hellotr/main.cpp
index e9cfda8bcc..f813c0b27a 100644
--- a/examples/linguist/hellotr/main.cpp
+++ b/examples/linguist/hellotr/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/linguist/trollprint/main.cpp b/examples/linguist/trollprint/main.cpp
index 231e32c65d..1e7b26182f 100644
--- a/examples/linguist/trollprint/main.cpp
+++ b/examples/linguist/trollprint/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/linguist/trollprint/mainwindow.cpp b/examples/linguist/trollprint/mainwindow.cpp
index f33d16bfaf..807397b6ba 100644
--- a/examples/linguist/trollprint/mainwindow.cpp
+++ b/examples/linguist/trollprint/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/linguist/trollprint/mainwindow.h b/examples/linguist/trollprint/mainwindow.h
index 42432baf66..5c2287772f 100644
--- a/examples/linguist/trollprint/mainwindow.h
+++ b/examples/linguist/trollprint/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/linguist/trollprint/printpanel.cpp b/examples/linguist/trollprint/printpanel.cpp
index 8ec0931ed8..7300185c9b 100644
--- a/examples/linguist/trollprint/printpanel.cpp
+++ b/examples/linguist/trollprint/printpanel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/linguist/trollprint/printpanel.h b/examples/linguist/trollprint/printpanel.h
index 2dfe44617b..c2cd329960 100644
--- a/examples/linguist/trollprint/printpanel.h
+++ b/examples/linguist/trollprint/printpanel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/application/main.cpp b/examples/mainwindows/application/main.cpp
index ac90a5481b..9ff6799574 100644
--- a/examples/mainwindows/application/main.cpp
+++ b/examples/mainwindows/application/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/application/mainwindow.cpp b/examples/mainwindows/application/mainwindow.cpp
index 6478146d26..8f60353da9 100644
--- a/examples/mainwindows/application/mainwindow.cpp
+++ b/examples/mainwindows/application/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/application/mainwindow.h b/examples/mainwindows/application/mainwindow.h
index d7527f92f2..7f429e0ea3 100644
--- a/examples/mainwindows/application/mainwindow.h
+++ b/examples/mainwindows/application/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/dockwidgets/main.cpp b/examples/mainwindows/dockwidgets/main.cpp
index 4edb870237..19deafbb86 100644
--- a/examples/mainwindows/dockwidgets/main.cpp
+++ b/examples/mainwindows/dockwidgets/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/dockwidgets/mainwindow.cpp b/examples/mainwindows/dockwidgets/mainwindow.cpp
index f55e29a27a..9f1a09c7d5 100644
--- a/examples/mainwindows/dockwidgets/mainwindow.cpp
+++ b/examples/mainwindows/dockwidgets/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/dockwidgets/mainwindow.h b/examples/mainwindows/dockwidgets/mainwindow.h
index b39dee2d8c..9f3eeb4e6b 100644
--- a/examples/mainwindows/dockwidgets/mainwindow.h
+++ b/examples/mainwindows/dockwidgets/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/macmainwindow/macmainwindow.h b/examples/mainwindows/macmainwindow/macmainwindow.h
index 14d3d6484c..262132b76a 100644
--- a/examples/mainwindows/macmainwindow/macmainwindow.h
+++ b/examples/mainwindows/macmainwindow/macmainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/macmainwindow/macmainwindow.mm b/examples/mainwindows/macmainwindow/macmainwindow.mm
index db212aa3ee..fce87ae0a1 100644
--- a/examples/mainwindows/macmainwindow/macmainwindow.mm
+++ b/examples/mainwindows/macmainwindow/macmainwindow.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/macmainwindow/main.cpp b/examples/mainwindows/macmainwindow/main.cpp
index 9b3c721d05..15950188d8 100644
--- a/examples/mainwindows/macmainwindow/main.cpp
+++ b/examples/mainwindows/macmainwindow/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/mainwindow/colorswatch.cpp b/examples/mainwindows/mainwindow/colorswatch.cpp
index db0f5dab45..c84669d377 100644
--- a/examples/mainwindows/mainwindow/colorswatch.cpp
+++ b/examples/mainwindows/mainwindow/colorswatch.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/mainwindow/colorswatch.h b/examples/mainwindows/mainwindow/colorswatch.h
index 7596446ae5..794a69cd6c 100644
--- a/examples/mainwindows/mainwindow/colorswatch.h
+++ b/examples/mainwindows/mainwindow/colorswatch.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/mainwindow/main.cpp b/examples/mainwindows/mainwindow/main.cpp
index de58a59310..2b6342367a 100644
--- a/examples/mainwindows/mainwindow/main.cpp
+++ b/examples/mainwindows/mainwindow/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/mainwindow/mainwindow.cpp b/examples/mainwindows/mainwindow/mainwindow.cpp
index 7a8dd22c7c..4cdc45decd 100644
--- a/examples/mainwindows/mainwindow/mainwindow.cpp
+++ b/examples/mainwindows/mainwindow/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/mainwindow/mainwindow.h b/examples/mainwindows/mainwindow/mainwindow.h
index 25d1e198ae..51969acaa3 100644
--- a/examples/mainwindows/mainwindow/mainwindow.h
+++ b/examples/mainwindows/mainwindow/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/mainwindow/toolbar.cpp b/examples/mainwindows/mainwindow/toolbar.cpp
index 25a1468bc1..d10eccb46d 100644
--- a/examples/mainwindows/mainwindow/toolbar.cpp
+++ b/examples/mainwindows/mainwindow/toolbar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/mainwindow/toolbar.h b/examples/mainwindows/mainwindow/toolbar.h
index 83429d4b3f..0ffb1eea5d 100644
--- a/examples/mainwindows/mainwindow/toolbar.h
+++ b/examples/mainwindows/mainwindow/toolbar.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/mdi/main.cpp b/examples/mainwindows/mdi/main.cpp
index ae1b9ebc19..8beec478a4 100644
--- a/examples/mainwindows/mdi/main.cpp
+++ b/examples/mainwindows/mdi/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/mdi/mainwindow.cpp b/examples/mainwindows/mdi/mainwindow.cpp
index 84e2eee3ac..7f7bd84fec 100644
--- a/examples/mainwindows/mdi/mainwindow.cpp
+++ b/examples/mainwindows/mdi/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/mdi/mainwindow.h b/examples/mainwindows/mdi/mainwindow.h
index 0dcff1c9f9..00f29e702a 100644
--- a/examples/mainwindows/mdi/mainwindow.h
+++ b/examples/mainwindows/mdi/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/mdi/mdichild.cpp b/examples/mainwindows/mdi/mdichild.cpp
index bfa0c4777f..2279fe7044 100644
--- a/examples/mainwindows/mdi/mdichild.cpp
+++ b/examples/mainwindows/mdi/mdichild.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/mdi/mdichild.h b/examples/mainwindows/mdi/mdichild.h
index 9fc99da918..aacdd0f0f6 100644
--- a/examples/mainwindows/mdi/mdichild.h
+++ b/examples/mainwindows/mdi/mdichild.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/menus/main.cpp b/examples/mainwindows/menus/main.cpp
index bfe61dcd01..09a923477c 100644
--- a/examples/mainwindows/menus/main.cpp
+++ b/examples/mainwindows/menus/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/menus/mainwindow.cpp b/examples/mainwindows/menus/mainwindow.cpp
index 65d020de0b..f03f38788e 100644
--- a/examples/mainwindows/menus/mainwindow.cpp
+++ b/examples/mainwindows/menus/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/menus/mainwindow.h b/examples/mainwindows/menus/mainwindow.h
index 8230f2e814..ebafb529eb 100644
--- a/examples/mainwindows/menus/mainwindow.h
+++ b/examples/mainwindows/menus/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/recentfiles/main.cpp b/examples/mainwindows/recentfiles/main.cpp
index bf1c4c1303..023357719e 100644
--- a/examples/mainwindows/recentfiles/main.cpp
+++ b/examples/mainwindows/recentfiles/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/recentfiles/mainwindow.cpp b/examples/mainwindows/recentfiles/mainwindow.cpp
index 71523d425f..b439ae8950 100644
--- a/examples/mainwindows/recentfiles/mainwindow.cpp
+++ b/examples/mainwindows/recentfiles/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/recentfiles/mainwindow.h b/examples/mainwindows/recentfiles/mainwindow.h
index 07b106fa96..dd548838fc 100644
--- a/examples/mainwindows/recentfiles/mainwindow.h
+++ b/examples/mainwindows/recentfiles/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/sdi/main.cpp b/examples/mainwindows/sdi/main.cpp
index 319c9b91fb..fbbedd9f0d 100644
--- a/examples/mainwindows/sdi/main.cpp
+++ b/examples/mainwindows/sdi/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/sdi/mainwindow.cpp b/examples/mainwindows/sdi/mainwindow.cpp
index 676e84d5ab..bc0685fd77 100644
--- a/examples/mainwindows/sdi/mainwindow.cpp
+++ b/examples/mainwindows/sdi/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/mainwindows/sdi/mainwindow.h b/examples/mainwindows/sdi/mainwindow.h
index b08c5dd806..4bf5ebe9b5 100644
--- a/examples/mainwindows/sdi/mainwindow.h
+++ b/examples/mainwindows/sdi/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/bearermonitor/bearermonitor.cpp b/examples/network/bearermonitor/bearermonitor.cpp
index d0d406da5e..a6bed56628 100644
--- a/examples/network/bearermonitor/bearermonitor.cpp
+++ b/examples/network/bearermonitor/bearermonitor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/bearermonitor/bearermonitor.h b/examples/network/bearermonitor/bearermonitor.h
index 41672344c7..5302856527 100644
--- a/examples/network/bearermonitor/bearermonitor.h
+++ b/examples/network/bearermonitor/bearermonitor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/bearermonitor/main.cpp b/examples/network/bearermonitor/main.cpp
index eb07302433..909aa5d69d 100644
--- a/examples/network/bearermonitor/main.cpp
+++ b/examples/network/bearermonitor/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/bearermonitor/sessionwidget.cpp b/examples/network/bearermonitor/sessionwidget.cpp
index c827e393b1..717237a688 100644
--- a/examples/network/bearermonitor/sessionwidget.cpp
+++ b/examples/network/bearermonitor/sessionwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/bearermonitor/sessionwidget.h b/examples/network/bearermonitor/sessionwidget.h
index 21488ab0a6..d06d5d8b4a 100644
--- a/examples/network/bearermonitor/sessionwidget.h
+++ b/examples/network/bearermonitor/sessionwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/blockingfortuneclient/blockingclient.cpp b/examples/network/blockingfortuneclient/blockingclient.cpp
index 2961f79498..a7822bc7a3 100644
--- a/examples/network/blockingfortuneclient/blockingclient.cpp
+++ b/examples/network/blockingfortuneclient/blockingclient.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/blockingfortuneclient/blockingclient.h b/examples/network/blockingfortuneclient/blockingclient.h
index ba564d9311..55ccfe137b 100644
--- a/examples/network/blockingfortuneclient/blockingclient.h
+++ b/examples/network/blockingfortuneclient/blockingclient.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/blockingfortuneclient/fortunethread.cpp b/examples/network/blockingfortuneclient/fortunethread.cpp
index 41b1a9187a..10cbecd36c 100644
--- a/examples/network/blockingfortuneclient/fortunethread.cpp
+++ b/examples/network/blockingfortuneclient/fortunethread.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/blockingfortuneclient/fortunethread.h b/examples/network/blockingfortuneclient/fortunethread.h
index 3e426fa7bb..30305c311b 100644
--- a/examples/network/blockingfortuneclient/fortunethread.h
+++ b/examples/network/blockingfortuneclient/fortunethread.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/blockingfortuneclient/main.cpp b/examples/network/blockingfortuneclient/main.cpp
index d2eaf7a05a..5d670e14f1 100644
--- a/examples/network/blockingfortuneclient/main.cpp
+++ b/examples/network/blockingfortuneclient/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/broadcastreceiver/main.cpp b/examples/network/broadcastreceiver/main.cpp
index 7b451e0192..58353dadc4 100644
--- a/examples/network/broadcastreceiver/main.cpp
+++ b/examples/network/broadcastreceiver/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/broadcastreceiver/receiver.cpp b/examples/network/broadcastreceiver/receiver.cpp
index e9dec57452..4c3d5c5814 100644
--- a/examples/network/broadcastreceiver/receiver.cpp
+++ b/examples/network/broadcastreceiver/receiver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/broadcastreceiver/receiver.h b/examples/network/broadcastreceiver/receiver.h
index a415c83cda..3bb35e2c8f 100644
--- a/examples/network/broadcastreceiver/receiver.h
+++ b/examples/network/broadcastreceiver/receiver.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/broadcastsender/main.cpp b/examples/network/broadcastsender/main.cpp
index e610902975..de7eae3ec6 100644
--- a/examples/network/broadcastsender/main.cpp
+++ b/examples/network/broadcastsender/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/broadcastsender/sender.cpp b/examples/network/broadcastsender/sender.cpp
index 9ddca66604..d540b6a20f 100644
--- a/examples/network/broadcastsender/sender.cpp
+++ b/examples/network/broadcastsender/sender.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/broadcastsender/sender.h b/examples/network/broadcastsender/sender.h
index 55bc7f2672..dfb5a8671c 100644
--- a/examples/network/broadcastsender/sender.h
+++ b/examples/network/broadcastsender/sender.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/dnslookup/dnslookup.cpp b/examples/network/dnslookup/dnslookup.cpp
new file mode 100644
index 0000000000..90cf914629
--- /dev/null
+++ b/examples/network/dnslookup/dnslookup.cpp
@@ -0,0 +1,155 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Jeremy Lainé <jeremy.laine@m4x.org>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "dnslookup.h"
+
+#include <QCoreApplication>
+#include <QDnsLookup>
+#include <QHostAddress>
+#include <QStringList>
+#include <QTimer>
+
+#include <stdio.h>
+
+static void usage() {
+ printf("Qt DNS example - performs DNS lookups\n"
+ "Usage: dnslookup [-t <type>] name\n\n");
+}
+
+DnsManager::DnsManager()
+{
+ dns = new QDnsLookup(this);
+ connect(dns, SIGNAL(finished()), this, SLOT(showResults()));
+}
+
+void DnsManager::execute()
+{
+ QStringList args = QCoreApplication::instance()->arguments();
+ args.takeFirst();
+
+ // lookup type
+ dns->setType(QDnsLookup::A);
+ if (args.size() > 1 && args.first() == "-t") {
+ args.takeFirst();
+ const QString type = args.takeFirst().toLower();
+ if (type == "a")
+ dns->setType(QDnsLookup::A);
+ else if (type == "aaaa")
+ dns->setType(QDnsLookup::AAAA);
+ else if (type == "any")
+ dns->setType(QDnsLookup::ANY);
+ else if (type == "cname")
+ dns->setType(QDnsLookup::CNAME);
+ else if (type == "mx")
+ dns->setType(QDnsLookup::MX);
+ else if (type == "ns")
+ dns->setType(QDnsLookup::NS);
+ else if (type == "ptr")
+ dns->setType(QDnsLookup::PTR);
+ else if (type == "srv")
+ dns->setType(QDnsLookup::SRV);
+ else if (type == "txt")
+ dns->setType(QDnsLookup::TXT);
+ else {
+ printf("Bad record type: %s\n", qPrintable(type));
+ QCoreApplication::instance()->quit();
+ return;
+ }
+ }
+ if (args.isEmpty()) {
+ usage();
+ QCoreApplication::instance()->quit();
+ return;
+ }
+ dns->setName(args.takeFirst());
+ dns->lookup();
+}
+
+void DnsManager::showResults()
+{
+ if (dns->error() != QDnsLookup::NoError)
+ printf("Error: %i (%s)\n", dns->error(), qPrintable(dns->errorString()));
+
+ // CNAME records
+ foreach (const QDnsDomainNameRecord &record, dns->canonicalNameRecords())
+ printf("%s\t%i\tIN\tCNAME\t%s\n", qPrintable(record.name()), record.timeToLive(), qPrintable(record.value()));
+
+ // A and AAAA records
+ foreach (const QDnsHostAddressRecord &record, dns->hostAddressRecords()) {
+ const char *type = (record.value().protocol() == QAbstractSocket::IPv6Protocol) ? "AAAA" : "A";
+ printf("%s\t%i\tIN\t%s\t%s\n", qPrintable(record.name()), record.timeToLive(), type, qPrintable(record.value().toString()));
+ }
+
+ // MX records
+ foreach (const QDnsMailExchangeRecord &record, dns->mailExchangeRecords())
+ printf("%s\t%i\tIN\tMX\t%u %s\n", qPrintable(record.name()), record.timeToLive(), record.preference(), qPrintable(record.exchange()));
+
+ // NS records
+ foreach (const QDnsDomainNameRecord &record, dns->nameServerRecords())
+ printf("%s\t%i\tIN\tNS\t%s\n", qPrintable(record.name()), record.timeToLive(), qPrintable(record.value()));
+
+ // PTR records
+ foreach (const QDnsDomainNameRecord &record, dns->pointerRecords())
+ printf("%s\t%i\tIN\tPTR\t%s\n", qPrintable(record.name()), record.timeToLive(), qPrintable(record.value()));
+
+ // SRV records
+ foreach (const QDnsServiceRecord &record, dns->serviceRecords())
+ printf("%s\t%i\tIN\tSRV\t%u %u %u %s\n", qPrintable(record.name()), record.timeToLive(), record.priority(), record.weight(), record.port(), qPrintable(record.target()));
+
+ // TXT records
+ foreach (const QDnsTextRecord &record, dns->textRecords()) {
+ QStringList values;
+ foreach (const QByteArray &ba, record.values())
+ values << "\"" + QString::fromAscii(ba) + "\"";
+ printf("%s\t%i\tIN\tTXT\t%s\n", qPrintable(record.name()), record.timeToLive(), qPrintable(values.join(" ")));
+ }
+
+ QCoreApplication::instance()->quit();
+}
+
+int main(int argc, char *argv[])
+{
+ QCoreApplication app(argc, argv);
+
+ DnsManager manager;
+ QTimer::singleShot(0, &manager, SLOT(execute()));
+
+ return app.exec();
+}
diff --git a/examples/network/dnslookup/dnslookup.h b/examples/network/dnslookup/dnslookup.h
new file mode 100644
index 0000000000..3c59173fe5
--- /dev/null
+++ b/examples/network/dnslookup/dnslookup.h
@@ -0,0 +1,61 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Jeremy Lainé <jeremy.laine@m4x.org>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the examples of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor
+** the names of its contributors may be used to endorse or promote
+** products derived from this software without specific prior written
+** permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include <QObject>
+
+QT_BEGIN_NAMESPACE
+class QDnsLookup;
+QT_END_NAMESPACE
+
+class DnsManager : public QObject
+{
+ Q_OBJECT
+
+public:
+ DnsManager();
+
+public slots:
+ void execute();
+ void showResults();
+
+private:
+ QDnsLookup *dns;
+};
+
diff --git a/examples/network/dnslookup/dnslookup.pro b/examples/network/dnslookup/dnslookup.pro
new file mode 100644
index 0000000000..160666de7c
--- /dev/null
+++ b/examples/network/dnslookup/dnslookup.pro
@@ -0,0 +1,12 @@
+TEMPLATE = app
+QT = core network
+mac:CONFIG -= app_bundle
+win32:CONFIG += console
+HEADERS += dnslookup.h
+SOURCES += dnslookup.cpp
+
+# install
+target.path = $$[QT_INSTALL_EXAMPLES]/qtbase/network/dnslookup
+sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro
+sources.path = $$[QT_INSTALL_EXAMPLES]/qtbase/network/dnslookup
+INSTALLS += target sources
diff --git a/examples/network/download/main.cpp b/examples/network/download/main.cpp
index 22d3b1db13..aea42a540c 100644
--- a/examples/network/download/main.cpp
+++ b/examples/network/download/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/downloadmanager/downloadmanager.cpp b/examples/network/downloadmanager/downloadmanager.cpp
index 30f982e42e..1652726e11 100644
--- a/examples/network/downloadmanager/downloadmanager.cpp
+++ b/examples/network/downloadmanager/downloadmanager.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/downloadmanager/downloadmanager.h b/examples/network/downloadmanager/downloadmanager.h
index 389982835e..9c18f1db6f 100644
--- a/examples/network/downloadmanager/downloadmanager.h
+++ b/examples/network/downloadmanager/downloadmanager.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/downloadmanager/main.cpp b/examples/network/downloadmanager/main.cpp
index cb1c015b84..18ec778fdc 100644
--- a/examples/network/downloadmanager/main.cpp
+++ b/examples/network/downloadmanager/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/downloadmanager/textprogressbar.cpp b/examples/network/downloadmanager/textprogressbar.cpp
index cb986bd489..843371acce 100644
--- a/examples/network/downloadmanager/textprogressbar.cpp
+++ b/examples/network/downloadmanager/textprogressbar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/downloadmanager/textprogressbar.h b/examples/network/downloadmanager/textprogressbar.h
index d42c357419..4c31424f83 100644
--- a/examples/network/downloadmanager/textprogressbar.h
+++ b/examples/network/downloadmanager/textprogressbar.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/fortuneclient/client.cpp b/examples/network/fortuneclient/client.cpp
index 1c5f1acf81..01048f137d 100644
--- a/examples/network/fortuneclient/client.cpp
+++ b/examples/network/fortuneclient/client.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/fortuneclient/client.h b/examples/network/fortuneclient/client.h
index 1573580dda..6e65e6e021 100644
--- a/examples/network/fortuneclient/client.h
+++ b/examples/network/fortuneclient/client.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/fortuneclient/main.cpp b/examples/network/fortuneclient/main.cpp
index 3678daece8..957de9b161 100644
--- a/examples/network/fortuneclient/main.cpp
+++ b/examples/network/fortuneclient/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/fortuneserver/main.cpp b/examples/network/fortuneserver/main.cpp
index 77e3efa009..f07c97cdb9 100644
--- a/examples/network/fortuneserver/main.cpp
+++ b/examples/network/fortuneserver/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/fortuneserver/server.cpp b/examples/network/fortuneserver/server.cpp
index e73c97b149..fdef079915 100644
--- a/examples/network/fortuneserver/server.cpp
+++ b/examples/network/fortuneserver/server.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/fortuneserver/server.h b/examples/network/fortuneserver/server.h
index 68402cad42..3b66fa9f61 100644
--- a/examples/network/fortuneserver/server.h
+++ b/examples/network/fortuneserver/server.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/googlesuggest/googlesuggest.cpp b/examples/network/googlesuggest/googlesuggest.cpp
index ad8c94353d..d32ed23b8b 100644
--- a/examples/network/googlesuggest/googlesuggest.cpp
+++ b/examples/network/googlesuggest/googlesuggest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/googlesuggest/googlesuggest.h b/examples/network/googlesuggest/googlesuggest.h
index b5787c8adc..8c9c0cf5bb 100644
--- a/examples/network/googlesuggest/googlesuggest.h
+++ b/examples/network/googlesuggest/googlesuggest.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/googlesuggest/main.cpp b/examples/network/googlesuggest/main.cpp
index 2f51df138b..ec4df8fec7 100644
--- a/examples/network/googlesuggest/main.cpp
+++ b/examples/network/googlesuggest/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/googlesuggest/searchbox.cpp b/examples/network/googlesuggest/searchbox.cpp
index 00960d488e..08bf6b1b79 100644
--- a/examples/network/googlesuggest/searchbox.cpp
+++ b/examples/network/googlesuggest/searchbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/googlesuggest/searchbox.h b/examples/network/googlesuggest/searchbox.h
index 30dfae1c79..23da1f1314 100644
--- a/examples/network/googlesuggest/searchbox.h
+++ b/examples/network/googlesuggest/searchbox.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/http/httpwindow.cpp b/examples/network/http/httpwindow.cpp
index 15492daff4..2f5f739853 100644
--- a/examples/network/http/httpwindow.cpp
+++ b/examples/network/http/httpwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/http/httpwindow.h b/examples/network/http/httpwindow.h
index 01d7ca1cd2..54587b2f6d 100644
--- a/examples/network/http/httpwindow.h
+++ b/examples/network/http/httpwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/http/main.cpp b/examples/network/http/main.cpp
index e66d2ea1fa..bb602f4d17 100644
--- a/examples/network/http/main.cpp
+++ b/examples/network/http/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/loopback/dialog.cpp b/examples/network/loopback/dialog.cpp
index b7d970b5ef..9ab10e78ee 100644
--- a/examples/network/loopback/dialog.cpp
+++ b/examples/network/loopback/dialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/loopback/dialog.h b/examples/network/loopback/dialog.h
index 0b55f7cd42..201dd80a8a 100644
--- a/examples/network/loopback/dialog.h
+++ b/examples/network/loopback/dialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/loopback/main.cpp b/examples/network/loopback/main.cpp
index 397075ff3b..b4dd37a9cf 100644
--- a/examples/network/loopback/main.cpp
+++ b/examples/network/loopback/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/multicastreceiver/main.cpp b/examples/network/multicastreceiver/main.cpp
index b14e222950..924372bd08 100644
--- a/examples/network/multicastreceiver/main.cpp
+++ b/examples/network/multicastreceiver/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/multicastreceiver/receiver.cpp b/examples/network/multicastreceiver/receiver.cpp
index 767aef52c2..6448817410 100644
--- a/examples/network/multicastreceiver/receiver.cpp
+++ b/examples/network/multicastreceiver/receiver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/multicastreceiver/receiver.h b/examples/network/multicastreceiver/receiver.h
index 9a5796cd38..10bfb08e13 100644
--- a/examples/network/multicastreceiver/receiver.h
+++ b/examples/network/multicastreceiver/receiver.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/multicastsender/main.cpp b/examples/network/multicastsender/main.cpp
index 163dfcb655..a18c475838 100644
--- a/examples/network/multicastsender/main.cpp
+++ b/examples/network/multicastsender/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/multicastsender/sender.cpp b/examples/network/multicastsender/sender.cpp
index 842f97579b..e91f62c622 100644
--- a/examples/network/multicastsender/sender.cpp
+++ b/examples/network/multicastsender/sender.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/multicastsender/sender.h b/examples/network/multicastsender/sender.h
index ebcbdd3bd3..e0bb8508dc 100644
--- a/examples/network/multicastsender/sender.h
+++ b/examples/network/multicastsender/sender.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/network-chat/chatdialog.cpp b/examples/network/network-chat/chatdialog.cpp
index 732f43626a..e1c333ea87 100644
--- a/examples/network/network-chat/chatdialog.cpp
+++ b/examples/network/network-chat/chatdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/network-chat/chatdialog.h b/examples/network/network-chat/chatdialog.h
index 2007acac2c..a2fe16e46e 100644
--- a/examples/network/network-chat/chatdialog.h
+++ b/examples/network/network-chat/chatdialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/network-chat/client.cpp b/examples/network/network-chat/client.cpp
index f80b3783ef..5969db95b2 100644
--- a/examples/network/network-chat/client.cpp
+++ b/examples/network/network-chat/client.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/network-chat/client.h b/examples/network/network-chat/client.h
index 9227b894a8..96a15083f2 100644
--- a/examples/network/network-chat/client.h
+++ b/examples/network/network-chat/client.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/network-chat/connection.cpp b/examples/network/network-chat/connection.cpp
index e02186fb85..d8e92e8c0a 100644
--- a/examples/network/network-chat/connection.cpp
+++ b/examples/network/network-chat/connection.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/network-chat/connection.h b/examples/network/network-chat/connection.h
index 126ad53674..f26f4c5071 100644
--- a/examples/network/network-chat/connection.h
+++ b/examples/network/network-chat/connection.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/network-chat/main.cpp b/examples/network/network-chat/main.cpp
index 05afc004da..aec58fb3cd 100644
--- a/examples/network/network-chat/main.cpp
+++ b/examples/network/network-chat/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/network-chat/peermanager.cpp b/examples/network/network-chat/peermanager.cpp
index d774ce4158..faad42fde6 100644
--- a/examples/network/network-chat/peermanager.cpp
+++ b/examples/network/network-chat/peermanager.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/network-chat/peermanager.h b/examples/network/network-chat/peermanager.h
index b100d19652..eee73a998a 100644
--- a/examples/network/network-chat/peermanager.h
+++ b/examples/network/network-chat/peermanager.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/network-chat/server.cpp b/examples/network/network-chat/server.cpp
index f27cfa3894..9a2cb52fb2 100644
--- a/examples/network/network-chat/server.cpp
+++ b/examples/network/network-chat/server.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/network-chat/server.h b/examples/network/network-chat/server.h
index 8222bd3c50..a44c1e64bb 100644
--- a/examples/network/network-chat/server.h
+++ b/examples/network/network-chat/server.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/network.pro b/examples/network/network.pro
index 0496cbb242..4342c81895 100644
--- a/examples/network/network.pro
+++ b/examples/network/network.pro
@@ -1,5 +1,6 @@
TEMPLATE = subdirs
SUBDIRS = \
+ dnslookup \
download \
downloadmanager
diff --git a/examples/network/securesocketclient/certificateinfo.cpp b/examples/network/securesocketclient/certificateinfo.cpp
index a3976dac16..9f43b3611e 100644
--- a/examples/network/securesocketclient/certificateinfo.cpp
+++ b/examples/network/securesocketclient/certificateinfo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/securesocketclient/certificateinfo.h b/examples/network/securesocketclient/certificateinfo.h
index 3c54e2c229..23a94f2987 100644
--- a/examples/network/securesocketclient/certificateinfo.h
+++ b/examples/network/securesocketclient/certificateinfo.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/securesocketclient/main.cpp b/examples/network/securesocketclient/main.cpp
index 349752d0ce..161dd96a9d 100644
--- a/examples/network/securesocketclient/main.cpp
+++ b/examples/network/securesocketclient/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/securesocketclient/sslclient.cpp b/examples/network/securesocketclient/sslclient.cpp
index 8527337e1b..edeb655e4a 100644
--- a/examples/network/securesocketclient/sslclient.cpp
+++ b/examples/network/securesocketclient/sslclient.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/securesocketclient/sslclient.h b/examples/network/securesocketclient/sslclient.h
index 5c1317f131..4ce04dc965 100644
--- a/examples/network/securesocketclient/sslclient.h
+++ b/examples/network/securesocketclient/sslclient.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/threadedfortuneserver/dialog.cpp b/examples/network/threadedfortuneserver/dialog.cpp
index 94a0c657e3..4ef9752ed4 100644
--- a/examples/network/threadedfortuneserver/dialog.cpp
+++ b/examples/network/threadedfortuneserver/dialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/threadedfortuneserver/dialog.h b/examples/network/threadedfortuneserver/dialog.h
index 1fdc4b21a0..9a4ba843fb 100644
--- a/examples/network/threadedfortuneserver/dialog.h
+++ b/examples/network/threadedfortuneserver/dialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/threadedfortuneserver/fortuneserver.cpp b/examples/network/threadedfortuneserver/fortuneserver.cpp
index 9363497f76..8bb23c0e23 100644
--- a/examples/network/threadedfortuneserver/fortuneserver.cpp
+++ b/examples/network/threadedfortuneserver/fortuneserver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/threadedfortuneserver/fortuneserver.h b/examples/network/threadedfortuneserver/fortuneserver.h
index 8d1a6ed151..97a122ae62 100644
--- a/examples/network/threadedfortuneserver/fortuneserver.h
+++ b/examples/network/threadedfortuneserver/fortuneserver.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/threadedfortuneserver/fortunethread.cpp b/examples/network/threadedfortuneserver/fortunethread.cpp
index 18c8f1f25a..21db1b5fa5 100644
--- a/examples/network/threadedfortuneserver/fortunethread.cpp
+++ b/examples/network/threadedfortuneserver/fortunethread.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/threadedfortuneserver/fortunethread.h b/examples/network/threadedfortuneserver/fortunethread.h
index b3b8a20ae4..99d4913535 100644
--- a/examples/network/threadedfortuneserver/fortunethread.h
+++ b/examples/network/threadedfortuneserver/fortunethread.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/threadedfortuneserver/main.cpp b/examples/network/threadedfortuneserver/main.cpp
index 1174b7e827..305218454c 100644
--- a/examples/network/threadedfortuneserver/main.cpp
+++ b/examples/network/threadedfortuneserver/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/addtorrentdialog.cpp b/examples/network/torrent/addtorrentdialog.cpp
index 5e473df15e..458f0631b1 100644
--- a/examples/network/torrent/addtorrentdialog.cpp
+++ b/examples/network/torrent/addtorrentdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/addtorrentdialog.h b/examples/network/torrent/addtorrentdialog.h
index 649296bdb2..baf2513131 100644
--- a/examples/network/torrent/addtorrentdialog.h
+++ b/examples/network/torrent/addtorrentdialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/bencodeparser.cpp b/examples/network/torrent/bencodeparser.cpp
index cccaede179..0f67c6e9ce 100644
--- a/examples/network/torrent/bencodeparser.cpp
+++ b/examples/network/torrent/bencodeparser.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/bencodeparser.h b/examples/network/torrent/bencodeparser.h
index 6e137a62e3..9562446f5f 100644
--- a/examples/network/torrent/bencodeparser.h
+++ b/examples/network/torrent/bencodeparser.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/connectionmanager.cpp b/examples/network/torrent/connectionmanager.cpp
index 7c55c1f6a2..7638f409df 100644
--- a/examples/network/torrent/connectionmanager.cpp
+++ b/examples/network/torrent/connectionmanager.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/connectionmanager.h b/examples/network/torrent/connectionmanager.h
index 90ce2841ec..22363968f6 100644
--- a/examples/network/torrent/connectionmanager.h
+++ b/examples/network/torrent/connectionmanager.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/filemanager.cpp b/examples/network/torrent/filemanager.cpp
index bcb53f2685..e44a857ba9 100644
--- a/examples/network/torrent/filemanager.cpp
+++ b/examples/network/torrent/filemanager.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/filemanager.h b/examples/network/torrent/filemanager.h
index cd59b57f9d..cfebb938e6 100644
--- a/examples/network/torrent/filemanager.h
+++ b/examples/network/torrent/filemanager.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/main.cpp b/examples/network/torrent/main.cpp
index eaa637699b..81918fbbe4 100644
--- a/examples/network/torrent/main.cpp
+++ b/examples/network/torrent/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/mainwindow.cpp b/examples/network/torrent/mainwindow.cpp
index 56a56ee164..3bcf605cef 100644
--- a/examples/network/torrent/mainwindow.cpp
+++ b/examples/network/torrent/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/mainwindow.h b/examples/network/torrent/mainwindow.h
index 12d9a4fea0..3a81484d81 100644
--- a/examples/network/torrent/mainwindow.h
+++ b/examples/network/torrent/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/metainfo.cpp b/examples/network/torrent/metainfo.cpp
index 15efe7c30f..a0d33b348f 100644
--- a/examples/network/torrent/metainfo.cpp
+++ b/examples/network/torrent/metainfo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/metainfo.h b/examples/network/torrent/metainfo.h
index 39c8e17e08..c2e0ec662c 100644
--- a/examples/network/torrent/metainfo.h
+++ b/examples/network/torrent/metainfo.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/peerwireclient.cpp b/examples/network/torrent/peerwireclient.cpp
index fa51343db6..c3d3779e52 100644
--- a/examples/network/torrent/peerwireclient.cpp
+++ b/examples/network/torrent/peerwireclient.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -375,7 +375,7 @@ qint64 PeerWireClient::uploadSpeed() const
return sum / (8 * 2);
}
-void PeerWireClient::setReadBufferSize(int size)
+void PeerWireClient::setReadBufferSize(qint64 size)
{
socket.setReadBufferSize(size);
}
diff --git a/examples/network/torrent/peerwireclient.h b/examples/network/torrent/peerwireclient.h
index 96d5c49770..2a6e965d4a 100644
--- a/examples/network/torrent/peerwireclient.h
+++ b/examples/network/torrent/peerwireclient.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -116,7 +116,7 @@ public:
qint64 socketBytesAvailable() const { return socket.bytesAvailable(); }
qint64 socketBytesToWrite() const { return socket.bytesToWrite(); }
- void setReadBufferSize(int size);
+ void setReadBufferSize(qint64 size);
signals:
void infoHashReceived(const QByteArray &infoHash);
diff --git a/examples/network/torrent/ratecontroller.cpp b/examples/network/torrent/ratecontroller.cpp
index af497a4437..7b308d5d4c 100644
--- a/examples/network/torrent/ratecontroller.cpp
+++ b/examples/network/torrent/ratecontroller.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/ratecontroller.h b/examples/network/torrent/ratecontroller.h
index 20b7df4664..3bde395f51 100644
--- a/examples/network/torrent/ratecontroller.h
+++ b/examples/network/torrent/ratecontroller.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/torrentclient.cpp b/examples/network/torrent/torrentclient.cpp
index 46f44a853b..4bbe55aa04 100644
--- a/examples/network/torrent/torrentclient.cpp
+++ b/examples/network/torrent/torrentclient.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/torrentclient.h b/examples/network/torrent/torrentclient.h
index 75bef55924..5949fc881a 100644
--- a/examples/network/torrent/torrentclient.h
+++ b/examples/network/torrent/torrentclient.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/torrentserver.cpp b/examples/network/torrent/torrentserver.cpp
index ecc7ba098c..e98e8483fb 100644
--- a/examples/network/torrent/torrentserver.cpp
+++ b/examples/network/torrent/torrentserver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/torrentserver.h b/examples/network/torrent/torrentserver.h
index fd939ae641..b260b7a6f7 100644
--- a/examples/network/torrent/torrentserver.h
+++ b/examples/network/torrent/torrentserver.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/trackerclient.cpp b/examples/network/torrent/trackerclient.cpp
index 43c60ac9bd..38f9eaf9fd 100644
--- a/examples/network/torrent/trackerclient.cpp
+++ b/examples/network/torrent/trackerclient.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/network/torrent/trackerclient.h b/examples/network/torrent/trackerclient.h
index 723b3aa4b7..0bd4e17e5c 100644
--- a/examples/network/torrent/trackerclient.h
+++ b/examples/network/torrent/trackerclient.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/2dpainting/glwidget.cpp b/examples/opengl/2dpainting/glwidget.cpp
index 318801db4b..06b1198ce6 100644
--- a/examples/opengl/2dpainting/glwidget.cpp
+++ b/examples/opengl/2dpainting/glwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/2dpainting/glwidget.h b/examples/opengl/2dpainting/glwidget.h
index a395f8ac50..7933c6430a 100644
--- a/examples/opengl/2dpainting/glwidget.h
+++ b/examples/opengl/2dpainting/glwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/2dpainting/helper.cpp b/examples/opengl/2dpainting/helper.cpp
index b8484e9c61..5cf2be8c34 100644
--- a/examples/opengl/2dpainting/helper.cpp
+++ b/examples/opengl/2dpainting/helper.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/2dpainting/helper.h b/examples/opengl/2dpainting/helper.h
index ce74f27a70..b944f05e22 100644
--- a/examples/opengl/2dpainting/helper.h
+++ b/examples/opengl/2dpainting/helper.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/2dpainting/main.cpp b/examples/opengl/2dpainting/main.cpp
index 027c8bd3d1..97b94d1d3c 100644
--- a/examples/opengl/2dpainting/main.cpp
+++ b/examples/opengl/2dpainting/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/2dpainting/widget.cpp b/examples/opengl/2dpainting/widget.cpp
index 0c682de876..89a813b2e5 100644
--- a/examples/opengl/2dpainting/widget.cpp
+++ b/examples/opengl/2dpainting/widget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/2dpainting/widget.h b/examples/opengl/2dpainting/widget.h
index d2c1534271..e388814b28 100644
--- a/examples/opengl/2dpainting/widget.h
+++ b/examples/opengl/2dpainting/widget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/2dpainting/window.cpp b/examples/opengl/2dpainting/window.cpp
index 29341d2a4e..38f8742ed8 100644
--- a/examples/opengl/2dpainting/window.cpp
+++ b/examples/opengl/2dpainting/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/2dpainting/window.h b/examples/opengl/2dpainting/window.h
index f6f1700fdb..1e346e20c5 100644
--- a/examples/opengl/2dpainting/window.h
+++ b/examples/opengl/2dpainting/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/cube/geometryengine.cpp b/examples/opengl/cube/geometryengine.cpp
index 3c5fe4fe8c..ba9bc4f001 100644
--- a/examples/opengl/cube/geometryengine.cpp
+++ b/examples/opengl/cube/geometryengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/cube/geometryengine.h b/examples/opengl/cube/geometryengine.h
index ddb34fb3d3..72e6bbdd66 100644
--- a/examples/opengl/cube/geometryengine.h
+++ b/examples/opengl/cube/geometryengine.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/cube/main.cpp b/examples/opengl/cube/main.cpp
index bdf1a7161f..52b012d854 100644
--- a/examples/opengl/cube/main.cpp
+++ b/examples/opengl/cube/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/cube/mainwidget.cpp b/examples/opengl/cube/mainwidget.cpp
index 60bef9e54e..aae6d94115 100644
--- a/examples/opengl/cube/mainwidget.cpp
+++ b/examples/opengl/cube/mainwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/cube/mainwidget.h b/examples/opengl/cube/mainwidget.h
index 90c1bd11cc..b6263f4d7d 100644
--- a/examples/opengl/cube/mainwidget.h
+++ b/examples/opengl/cube/mainwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/framebufferobject2/glwidget.cpp b/examples/opengl/framebufferobject2/glwidget.cpp
index eb85797133..e5f363d47c 100644
--- a/examples/opengl/framebufferobject2/glwidget.cpp
+++ b/examples/opengl/framebufferobject2/glwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/framebufferobject2/glwidget.h b/examples/opengl/framebufferobject2/glwidget.h
index 6cfceb8498..d60a642c40 100644
--- a/examples/opengl/framebufferobject2/glwidget.h
+++ b/examples/opengl/framebufferobject2/glwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/framebufferobject2/main.cpp b/examples/opengl/framebufferobject2/main.cpp
index 4c0b8420de..29f832f12c 100644
--- a/examples/opengl/framebufferobject2/main.cpp
+++ b/examples/opengl/framebufferobject2/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/grabber/glwidget.cpp b/examples/opengl/grabber/glwidget.cpp
index 60974571bd..4aed574515 100644
--- a/examples/opengl/grabber/glwidget.cpp
+++ b/examples/opengl/grabber/glwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/grabber/glwidget.h b/examples/opengl/grabber/glwidget.h
index 5f3981f8ae..c1875aa1d6 100644
--- a/examples/opengl/grabber/glwidget.h
+++ b/examples/opengl/grabber/glwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/grabber/main.cpp b/examples/opengl/grabber/main.cpp
index 18ff180690..e96d256e9b 100644
--- a/examples/opengl/grabber/main.cpp
+++ b/examples/opengl/grabber/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/grabber/mainwindow.cpp b/examples/opengl/grabber/mainwindow.cpp
index 7d0fdefa0c..2374da6cd8 100644
--- a/examples/opengl/grabber/mainwindow.cpp
+++ b/examples/opengl/grabber/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/grabber/mainwindow.h b/examples/opengl/grabber/mainwindow.h
index 48fc11f8b8..0a684abf8f 100644
--- a/examples/opengl/grabber/mainwindow.h
+++ b/examples/opengl/grabber/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/hellogl/glwidget.cpp b/examples/opengl/hellogl/glwidget.cpp
index c30f4b7a00..5dc14f272d 100644
--- a/examples/opengl/hellogl/glwidget.cpp
+++ b/examples/opengl/hellogl/glwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/hellogl/glwidget.h b/examples/opengl/hellogl/glwidget.h
index 877afa90f3..c67ab13965 100644
--- a/examples/opengl/hellogl/glwidget.h
+++ b/examples/opengl/hellogl/glwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/hellogl/main.cpp b/examples/opengl/hellogl/main.cpp
index 073d9e108d..37288ffcb9 100644
--- a/examples/opengl/hellogl/main.cpp
+++ b/examples/opengl/hellogl/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/hellogl/window.cpp b/examples/opengl/hellogl/window.cpp
index 52f8a85143..996e45801b 100644
--- a/examples/opengl/hellogl/window.cpp
+++ b/examples/opengl/hellogl/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/hellogl/window.h b/examples/opengl/hellogl/window.h
index 90f26e0f38..6c40688185 100644
--- a/examples/opengl/hellogl/window.h
+++ b/examples/opengl/hellogl/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/hellogl_es/glwindow.cpp b/examples/opengl/hellogl_es/glwindow.cpp
index e8e00f53d4..d94d0d62cc 100644
--- a/examples/opengl/hellogl_es/glwindow.cpp
+++ b/examples/opengl/hellogl_es/glwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -64,6 +64,8 @@ inline void Normalize(qreal &x, qreal &y, qreal &z)
GLWindow::GLWindow()
{
+ setSurfaceType(OpenGLSurface);
+
qtLogo = true;
createdVertices = 0;
createdNormals = 0;
diff --git a/examples/opengl/hellogl_es/glwindow.h b/examples/opengl/hellogl_es/glwindow.h
index bbcfc370d5..2fc34ccfcc 100644
--- a/examples/opengl/hellogl_es/glwindow.h
+++ b/examples/opengl/hellogl_es/glwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/hellogl_es/main.cpp b/examples/opengl/hellogl_es/main.cpp
index a18db04e6e..fb80ad2ff6 100644
--- a/examples/opengl/hellogl_es/main.cpp
+++ b/examples/opengl/hellogl_es/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/hellogl_es2/bubble.cpp b/examples/opengl/hellogl_es2/bubble.cpp
index bac2eea09b..e93a6630d5 100644
--- a/examples/opengl/hellogl_es2/bubble.cpp
+++ b/examples/opengl/hellogl_es2/bubble.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/hellogl_es2/bubble.h b/examples/opengl/hellogl_es2/bubble.h
index 211a127e0b..8d237fe24c 100644
--- a/examples/opengl/hellogl_es2/bubble.h
+++ b/examples/opengl/hellogl_es2/bubble.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/hellogl_es2/glwidget.cpp b/examples/opengl/hellogl_es2/glwidget.cpp
index fcff502d39..5e1df9f726 100644
--- a/examples/opengl/hellogl_es2/glwidget.cpp
+++ b/examples/opengl/hellogl_es2/glwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/hellogl_es2/glwidget.h b/examples/opengl/hellogl_es2/glwidget.h
index a23bee5c7e..7d03ed8318 100644
--- a/examples/opengl/hellogl_es2/glwidget.h
+++ b/examples/opengl/hellogl_es2/glwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/hellogl_es2/main.cpp b/examples/opengl/hellogl_es2/main.cpp
index 5148dd5ecc..785f40e4cf 100644
--- a/examples/opengl/hellogl_es2/main.cpp
+++ b/examples/opengl/hellogl_es2/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/hellogl_es2/mainwindow.cpp b/examples/opengl/hellogl_es2/mainwindow.cpp
index 4e0f7e570c..ae1b47d1e9 100644
--- a/examples/opengl/hellogl_es2/mainwindow.cpp
+++ b/examples/opengl/hellogl_es2/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/hellogl_es2/mainwindow.h b/examples/opengl/hellogl_es2/mainwindow.h
index f7276a66c6..1227c76204 100644
--- a/examples/opengl/hellogl_es2/mainwindow.h
+++ b/examples/opengl/hellogl_es2/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/hellowindow/hellowindow.cpp b/examples/opengl/hellowindow/hellowindow.cpp
index f02ce91e2e..489d715166 100644
--- a/examples/opengl/hellowindow/hellowindow.cpp
+++ b/examples/opengl/hellowindow/hellowindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/hellowindow/hellowindow.h b/examples/opengl/hellowindow/hellowindow.h
index e88719348f..91267a8ba1 100644
--- a/examples/opengl/hellowindow/hellowindow.h
+++ b/examples/opengl/hellowindow/hellowindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/hellowindow/main.cpp b/examples/opengl/hellowindow/main.cpp
index fa2309dc8b..9723e8f9de 100644
--- a/examples/opengl/hellowindow/main.cpp
+++ b/examples/opengl/hellowindow/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/overpainting/bubble.cpp b/examples/opengl/overpainting/bubble.cpp
index 228d6e1bf0..c702427786 100644
--- a/examples/opengl/overpainting/bubble.cpp
+++ b/examples/opengl/overpainting/bubble.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/overpainting/bubble.h b/examples/opengl/overpainting/bubble.h
index aaf9ff5af7..48417cfafc 100644
--- a/examples/opengl/overpainting/bubble.h
+++ b/examples/opengl/overpainting/bubble.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/overpainting/glwidget.cpp b/examples/opengl/overpainting/glwidget.cpp
index 9a426db8b0..976c106a40 100644
--- a/examples/opengl/overpainting/glwidget.cpp
+++ b/examples/opengl/overpainting/glwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/overpainting/glwidget.h b/examples/opengl/overpainting/glwidget.h
index 7e68a3bc75..73b871ae50 100644
--- a/examples/opengl/overpainting/glwidget.h
+++ b/examples/opengl/overpainting/glwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/overpainting/main.cpp b/examples/opengl/overpainting/main.cpp
index c38793242b..ad83c35973 100644
--- a/examples/opengl/overpainting/main.cpp
+++ b/examples/opengl/overpainting/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/paintedwindow/main.cpp b/examples/opengl/paintedwindow/main.cpp
index 2d9a5ec675..94e559782a 100644
--- a/examples/opengl/paintedwindow/main.cpp
+++ b/examples/opengl/paintedwindow/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,13 +33,13 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QGuiApplication>
#include <QRect>
-#include <QScreen>
#include "paintedwindow.h"
@@ -48,15 +47,7 @@ int main(int argc, char **argv)
{
QGuiApplication app(argc, argv);
- QScreen *screen = QGuiApplication::primaryScreen();
-
- QRect screenGeometry = screen->availableGeometry();
-
- QPoint center = screenGeometry.center();
- QRect windowRect(0, 0, 480, 640);
-
PaintedWindow window;
- window.setGeometry(QRect(center - windowRect.center(), windowRect.size()));
window.show();
app.exec();
diff --git a/examples/opengl/paintedwindow/paintedwindow.cpp b/examples/opengl/paintedwindow/paintedwindow.cpp
index e3dda43d3e..d345f67d8f 100644
--- a/examples/opengl/paintedwindow/paintedwindow.cpp
+++ b/examples/opengl/paintedwindow/paintedwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -70,13 +70,22 @@ PaintedWindow::PaintedWindow()
m_animation->setEndValue(qreal(1));
m_animation->setDuration(500);
- setOrientation(QGuiApplication::primaryScreen()->primaryOrientation());
+ requestWindowOrientation(Qt::PortraitOrientation);
+
+ QRect screenGeometry = screen()->availableGeometry();
+
+ QPoint center = screenGeometry.center();
+ QRect windowRect = screen()->isLandscape(windowOrientation()) ? QRect(0, 0, 640, 480) : QRect(0, 0, 480, 640);
+ setGeometry(QRect(center - windowRect.center(), windowRect.size()));
+
m_rotation = 0;
- m_targetOrientation = orientation();
- m_nextTargetOrientation = Qt::UnknownOrientation;
+ reportContentOrientationChange(screen()->orientation());
- connect(screen(), SIGNAL(currentOrientationChanged(Qt::ScreenOrientation)), this, SLOT(orientationChanged(Qt::ScreenOrientation)));
+ m_targetOrientation = contentOrientation();
+ m_nextTargetOrientation = Qt::PrimaryOrientation;
+
+ connect(screen(), SIGNAL(orientationChanged(Qt::ScreenOrientation)), this, SLOT(orientationChanged(Qt::ScreenOrientation)));
connect(m_animation, SIGNAL(finished()), this, SLOT(rotationDone()));
connect(this, SIGNAL(rotationChanged(qreal)), this, SLOT(paint()));
}
@@ -93,7 +102,7 @@ void PaintedWindow::exposeEvent(QExposeEvent *)
void PaintedWindow::mousePressEvent(QMouseEvent *)
{
- Qt::ScreenOrientation o = orientation();
+ Qt::ScreenOrientation o = contentOrientation();
switch (o) {
case Qt::LandscapeOrientation:
orientationChanged(Qt::PortraitOrientation);
@@ -116,7 +125,7 @@ void PaintedWindow::mousePressEvent(QMouseEvent *)
void PaintedWindow::orientationChanged(Qt::ScreenOrientation newOrientation)
{
- if (orientation() == newOrientation)
+ if (contentOrientation() == newOrientation)
return;
if (m_animation->state() == QAbstractAnimation::Running) {
@@ -124,8 +133,6 @@ void PaintedWindow::orientationChanged(Qt::ScreenOrientation newOrientation)
return;
}
- Qt::ScreenOrientation screenOrientation = screen()->primaryOrientation();
-
QRect rect(0, 0, width(), height());
m_prevImage = QImage(width(), height(), QImage::Format_ARGB32_Premultiplied);
@@ -135,16 +142,16 @@ void PaintedWindow::orientationChanged(Qt::ScreenOrientation newOrientation)
QPainter p;
p.begin(&m_prevImage);
- p.setTransform(QScreen::transformBetween(orientation(), screenOrientation, rect));
- paint(&p, QScreen::mapBetween(orientation(), screenOrientation, rect));
+ p.setTransform(screen()->transformBetween(contentOrientation(), windowOrientation(), rect));
+ paint(&p, screen()->mapBetween(contentOrientation(), windowOrientation(), rect));
p.end();
p.begin(&m_nextImage);
- p.setTransform(QScreen::transformBetween(newOrientation, screenOrientation, rect));
- paint(&p, QScreen::mapBetween(newOrientation, screenOrientation, rect));
+ p.setTransform(screen()->transformBetween(newOrientation, windowOrientation(), rect));
+ paint(&p, screen()->mapBetween(newOrientation, windowOrientation(), rect));
p.end();
- m_deltaRotation = QScreen::angleBetween(newOrientation, orientation());
+ m_deltaRotation = screen()->angleBetween(newOrientation, contentOrientation());
if (m_deltaRotation > 180)
m_deltaRotation = 180 - m_deltaRotation;
@@ -154,11 +161,11 @@ void PaintedWindow::orientationChanged(Qt::ScreenOrientation newOrientation)
void PaintedWindow::rotationDone()
{
- setOrientation(m_targetOrientation);
- if (m_nextTargetOrientation != Qt::UnknownOrientation) {
+ reportContentOrientationChange(m_targetOrientation);
+ if (m_nextTargetOrientation != Qt::PrimaryOrientation) {
Q_ASSERT(m_animation->state() != QAbstractAnimation::Running);
orientationChanged(m_nextTargetOrientation);
- m_nextTargetOrientation = Qt::UnknownOrientation;
+ m_nextTargetOrientation = Qt::PrimaryOrientation;
}
}
@@ -174,9 +181,6 @@ void PaintedWindow::paint()
{
m_context->makeCurrent(this);
- Qt::ScreenOrientation screenOrientation = screen()->primaryOrientation();
- Qt::ScreenOrientation appOrientation = orientation();
-
QRect rect(0, 0, width(), height());
QOpenGLPaintDevice device(size());
@@ -189,7 +193,7 @@ void PaintedWindow::paint()
painter.setCompositionMode(QPainter::CompositionMode_SourceOver);
painter.fillPath(path, Qt::blue);
- if (orientation() != m_targetOrientation) {
+ if (contentOrientation() != m_targetOrientation) {
painter.setRenderHint(QPainter::SmoothPixmapTransform);
painter.save();
painter.translate(width() / 2, height() / 2);
@@ -203,9 +207,9 @@ void PaintedWindow::paint()
painter.setOpacity(m_rotation);
painter.drawImage(0, 0, m_nextImage);
} else {
- QRect mapped = QScreen::mapBetween(appOrientation, screenOrientation, rect);
+ QRect mapped = screen()->mapBetween(contentOrientation(), windowOrientation(), rect);
- painter.setTransform(QScreen::transformBetween(appOrientation, screenOrientation, rect));
+ painter.setTransform(screen()->transformBetween(contentOrientation(), windowOrientation(), rect));
paint(&painter, mapped);
painter.end();
}
diff --git a/examples/opengl/paintedwindow/paintedwindow.h b/examples/opengl/paintedwindow/paintedwindow.h
index 8215fe0f4c..06e78fa59a 100644
--- a/examples/opengl/paintedwindow/paintedwindow.h
+++ b/examples/opengl/paintedwindow/paintedwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/pbuffers/cube.cpp b/examples/opengl/pbuffers/cube.cpp
index b5bd2feff6..e384078b7d 100644
--- a/examples/opengl/pbuffers/cube.cpp
+++ b/examples/opengl/pbuffers/cube.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/pbuffers/cube.h b/examples/opengl/pbuffers/cube.h
index bb870961d4..ad56e43e49 100644
--- a/examples/opengl/pbuffers/cube.h
+++ b/examples/opengl/pbuffers/cube.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/pbuffers/glwidget.cpp b/examples/opengl/pbuffers/glwidget.cpp
index 3272762bc6..8ed0fdc2e7 100644
--- a/examples/opengl/pbuffers/glwidget.cpp
+++ b/examples/opengl/pbuffers/glwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/pbuffers/glwidget.h b/examples/opengl/pbuffers/glwidget.h
index 651053eaba..2644313811 100644
--- a/examples/opengl/pbuffers/glwidget.h
+++ b/examples/opengl/pbuffers/glwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/pbuffers/main.cpp b/examples/opengl/pbuffers/main.cpp
index 0e0a133f44..27e0ed0a37 100644
--- a/examples/opengl/pbuffers/main.cpp
+++ b/examples/opengl/pbuffers/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/pbuffers2/glwidget.cpp b/examples/opengl/pbuffers2/glwidget.cpp
index 8d91e46f51..fe6ac524ba 100644
--- a/examples/opengl/pbuffers2/glwidget.cpp
+++ b/examples/opengl/pbuffers2/glwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/pbuffers2/glwidget.h b/examples/opengl/pbuffers2/glwidget.h
index 2ca16ed400..06084f58a0 100644
--- a/examples/opengl/pbuffers2/glwidget.h
+++ b/examples/opengl/pbuffers2/glwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/pbuffers2/main.cpp b/examples/opengl/pbuffers2/main.cpp
index 25d80d56ce..ae9651c3a8 100644
--- a/examples/opengl/pbuffers2/main.cpp
+++ b/examples/opengl/pbuffers2/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/samplebuffers/glwidget.cpp b/examples/opengl/samplebuffers/glwidget.cpp
index 615f026fcf..4fb4211c8d 100644
--- a/examples/opengl/samplebuffers/glwidget.cpp
+++ b/examples/opengl/samplebuffers/glwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/samplebuffers/glwidget.h b/examples/opengl/samplebuffers/glwidget.h
index d4f289a3ec..eeb1c13fdf 100644
--- a/examples/opengl/samplebuffers/glwidget.h
+++ b/examples/opengl/samplebuffers/glwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/samplebuffers/main.cpp b/examples/opengl/samplebuffers/main.cpp
index 67f9c92220..3cf8daa80a 100644
--- a/examples/opengl/samplebuffers/main.cpp
+++ b/examples/opengl/samplebuffers/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/shared/qtlogo.cpp b/examples/opengl/shared/qtlogo.cpp
index afdf565fc0..1a3b94eff0 100644
--- a/examples/opengl/shared/qtlogo.cpp
+++ b/examples/opengl/shared/qtlogo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/shared/qtlogo.h b/examples/opengl/shared/qtlogo.h
index 070089e812..d55fb0834c 100644
--- a/examples/opengl/shared/qtlogo.h
+++ b/examples/opengl/shared/qtlogo.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/textures/glwidget.cpp b/examples/opengl/textures/glwidget.cpp
index 87252df2df..6c06b3db44 100644
--- a/examples/opengl/textures/glwidget.cpp
+++ b/examples/opengl/textures/glwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/textures/glwidget.h b/examples/opengl/textures/glwidget.h
index 6f324048d9..be120e02d0 100644
--- a/examples/opengl/textures/glwidget.h
+++ b/examples/opengl/textures/glwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/textures/main.cpp b/examples/opengl/textures/main.cpp
index 4cfb015b5c..8b9965fd90 100644
--- a/examples/opengl/textures/main.cpp
+++ b/examples/opengl/textures/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/textures/window.cpp b/examples/opengl/textures/window.cpp
index 5c0789b4fe..1e88a2385d 100644
--- a/examples/opengl/textures/window.cpp
+++ b/examples/opengl/textures/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/opengl/textures/window.h b/examples/opengl/textures/window.h
index 71aee4b2c2..971bac19ce 100644
--- a/examples/opengl/textures/window.h
+++ b/examples/opengl/textures/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/affine/main.cpp b/examples/painting/affine/main.cpp
index 8edd497187..c27e3331f1 100644
--- a/examples/painting/affine/main.cpp
+++ b/examples/painting/affine/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/affine/xform.cpp b/examples/painting/affine/xform.cpp
index d6a3e972ea..8c9d37406c 100644
--- a/examples/painting/affine/xform.cpp
+++ b/examples/painting/affine/xform.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/affine/xform.h b/examples/painting/affine/xform.h
index cf0b26d885..d710f5175e 100644
--- a/examples/painting/affine/xform.h
+++ b/examples/painting/affine/xform.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/basicdrawing/main.cpp b/examples/painting/basicdrawing/main.cpp
index e99c121588..d80c9a2daa 100644
--- a/examples/painting/basicdrawing/main.cpp
+++ b/examples/painting/basicdrawing/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/basicdrawing/renderarea.cpp b/examples/painting/basicdrawing/renderarea.cpp
index a8b78f084f..9fb4ab589d 100644
--- a/examples/painting/basicdrawing/renderarea.cpp
+++ b/examples/painting/basicdrawing/renderarea.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/basicdrawing/renderarea.h b/examples/painting/basicdrawing/renderarea.h
index f440a50d4b..3ed9eb6321 100644
--- a/examples/painting/basicdrawing/renderarea.h
+++ b/examples/painting/basicdrawing/renderarea.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/basicdrawing/window.cpp b/examples/painting/basicdrawing/window.cpp
index ce61e9a701..9579e40ae2 100644
--- a/examples/painting/basicdrawing/window.cpp
+++ b/examples/painting/basicdrawing/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/basicdrawing/window.h b/examples/painting/basicdrawing/window.h
index 18aae56053..3f2c8fd561 100644
--- a/examples/painting/basicdrawing/window.h
+++ b/examples/painting/basicdrawing/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/composition/composition.cpp b/examples/painting/composition/composition.cpp
index 437dfaa512..f46a658c17 100644
--- a/examples/painting/composition/composition.cpp
+++ b/examples/painting/composition/composition.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/composition/composition.h b/examples/painting/composition/composition.h
index c63ffe3c15..ebf278f145 100644
--- a/examples/painting/composition/composition.h
+++ b/examples/painting/composition/composition.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/composition/main.cpp b/examples/painting/composition/main.cpp
index 6d4a2c3fdc..370069a33a 100644
--- a/examples/painting/composition/main.cpp
+++ b/examples/painting/composition/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/concentriccircles/circlewidget.cpp b/examples/painting/concentriccircles/circlewidget.cpp
index 9ed2cd7929..2691f20602 100644
--- a/examples/painting/concentriccircles/circlewidget.cpp
+++ b/examples/painting/concentriccircles/circlewidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/concentriccircles/circlewidget.h b/examples/painting/concentriccircles/circlewidget.h
index 7276667d69..c2d4de7092 100644
--- a/examples/painting/concentriccircles/circlewidget.h
+++ b/examples/painting/concentriccircles/circlewidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/concentriccircles/main.cpp b/examples/painting/concentriccircles/main.cpp
index 218d30316c..dcbf1c0449 100644
--- a/examples/painting/concentriccircles/main.cpp
+++ b/examples/painting/concentriccircles/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/concentriccircles/window.cpp b/examples/painting/concentriccircles/window.cpp
index c0949f01dc..d946842029 100644
--- a/examples/painting/concentriccircles/window.cpp
+++ b/examples/painting/concentriccircles/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/concentriccircles/window.h b/examples/painting/concentriccircles/window.h
index 253030fb92..a066ddb702 100644
--- a/examples/painting/concentriccircles/window.h
+++ b/examples/painting/concentriccircles/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/deform/main.cpp b/examples/painting/deform/main.cpp
index 562176ba47..eeed9b8939 100644
--- a/examples/painting/deform/main.cpp
+++ b/examples/painting/deform/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/deform/pathdeform.cpp b/examples/painting/deform/pathdeform.cpp
index ecf14563e9..f91778337f 100644
--- a/examples/painting/deform/pathdeform.cpp
+++ b/examples/painting/deform/pathdeform.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/deform/pathdeform.h b/examples/painting/deform/pathdeform.h
index cfc5afe626..6f0d647f4e 100644
--- a/examples/painting/deform/pathdeform.h
+++ b/examples/painting/deform/pathdeform.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/fontsampler/main.cpp b/examples/painting/fontsampler/main.cpp
index bfe61dcd01..09a923477c 100644
--- a/examples/painting/fontsampler/main.cpp
+++ b/examples/painting/fontsampler/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/fontsampler/mainwindow.cpp b/examples/painting/fontsampler/mainwindow.cpp
index bd9f38554b..c2d97f360e 100644
--- a/examples/painting/fontsampler/mainwindow.cpp
+++ b/examples/painting/fontsampler/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/fontsampler/mainwindow.h b/examples/painting/fontsampler/mainwindow.h
index 9abd481827..fbb99333db 100644
--- a/examples/painting/fontsampler/mainwindow.h
+++ b/examples/painting/fontsampler/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/gradients/gradients.cpp b/examples/painting/gradients/gradients.cpp
index 13411bb4ac..9dad51a8e4 100644
--- a/examples/painting/gradients/gradients.cpp
+++ b/examples/painting/gradients/gradients.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/gradients/gradients.h b/examples/painting/gradients/gradients.h
index 45fa269c86..0fed2de82a 100644
--- a/examples/painting/gradients/gradients.h
+++ b/examples/painting/gradients/gradients.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/gradients/main.cpp b/examples/painting/gradients/main.cpp
index ef0a010280..eaf8bdc333 100644
--- a/examples/painting/gradients/main.cpp
+++ b/examples/painting/gradients/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/imagecomposition/imagecomposer.cpp b/examples/painting/imagecomposition/imagecomposer.cpp
index f206d1eeda..38b04a27b0 100644
--- a/examples/painting/imagecomposition/imagecomposer.cpp
+++ b/examples/painting/imagecomposition/imagecomposer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/imagecomposition/imagecomposer.h b/examples/painting/imagecomposition/imagecomposer.h
index 601542b5b6..7ec0207e2c 100644
--- a/examples/painting/imagecomposition/imagecomposer.h
+++ b/examples/painting/imagecomposition/imagecomposer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/imagecomposition/main.cpp b/examples/painting/imagecomposition/main.cpp
index 1c530d1e35..6b17c4d370 100644
--- a/examples/painting/imagecomposition/main.cpp
+++ b/examples/painting/imagecomposition/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/painterpaths/main.cpp b/examples/painting/painterpaths/main.cpp
index 218d30316c..dcbf1c0449 100644
--- a/examples/painting/painterpaths/main.cpp
+++ b/examples/painting/painterpaths/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/painterpaths/renderarea.cpp b/examples/painting/painterpaths/renderarea.cpp
index 8f3ae8bd31..0b3f1fdc0d 100644
--- a/examples/painting/painterpaths/renderarea.cpp
+++ b/examples/painting/painterpaths/renderarea.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/painterpaths/renderarea.h b/examples/painting/painterpaths/renderarea.h
index b274cbf32a..5c310fdf62 100644
--- a/examples/painting/painterpaths/renderarea.h
+++ b/examples/painting/painterpaths/renderarea.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/painterpaths/window.cpp b/examples/painting/painterpaths/window.cpp
index c278f367c1..65139fe5d1 100644
--- a/examples/painting/painterpaths/window.cpp
+++ b/examples/painting/painterpaths/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/painterpaths/window.h b/examples/painting/painterpaths/window.h
index 467b11b0b9..4c01719b16 100644
--- a/examples/painting/painterpaths/window.h
+++ b/examples/painting/painterpaths/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/pathstroke/main.cpp b/examples/painting/pathstroke/main.cpp
index b895438203..c969d975a3 100644
--- a/examples/painting/pathstroke/main.cpp
+++ b/examples/painting/pathstroke/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/pathstroke/pathstroke.cpp b/examples/painting/pathstroke/pathstroke.cpp
index 70baaaa0f0..dd0de4746b 100644
--- a/examples/painting/pathstroke/pathstroke.cpp
+++ b/examples/painting/pathstroke/pathstroke.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/pathstroke/pathstroke.h b/examples/painting/pathstroke/pathstroke.h
index 19b6d95c81..743a757b0a 100644
--- a/examples/painting/pathstroke/pathstroke.h
+++ b/examples/painting/pathstroke/pathstroke.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/shared/arthurstyle.cpp b/examples/painting/shared/arthurstyle.cpp
index a371e1187c..4bd34464bf 100644
--- a/examples/painting/shared/arthurstyle.cpp
+++ b/examples/painting/shared/arthurstyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/shared/arthurstyle.h b/examples/painting/shared/arthurstyle.h
index 2a1eec2c44..1d6a573a4e 100644
--- a/examples/painting/shared/arthurstyle.h
+++ b/examples/painting/shared/arthurstyle.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/shared/arthurwidgets.cpp b/examples/painting/shared/arthurwidgets.cpp
index c9b1faa3fd..695aa984b6 100644
--- a/examples/painting/shared/arthurwidgets.cpp
+++ b/examples/painting/shared/arthurwidgets.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/shared/arthurwidgets.h b/examples/painting/shared/arthurwidgets.h
index 4c6443696c..28b986dd0b 100644
--- a/examples/painting/shared/arthurwidgets.h
+++ b/examples/painting/shared/arthurwidgets.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/shared/hoverpoints.cpp b/examples/painting/shared/hoverpoints.cpp
index e60f096e8c..824d92eb30 100644
--- a/examples/painting/shared/hoverpoints.cpp
+++ b/examples/painting/shared/hoverpoints.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/shared/hoverpoints.h b/examples/painting/shared/hoverpoints.h
index e131aeee55..5472f10a3a 100644
--- a/examples/painting/shared/hoverpoints.h
+++ b/examples/painting/shared/hoverpoints.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/transformations/main.cpp b/examples/painting/transformations/main.cpp
index 218d30316c..dcbf1c0449 100644
--- a/examples/painting/transformations/main.cpp
+++ b/examples/painting/transformations/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/transformations/renderarea.cpp b/examples/painting/transformations/renderarea.cpp
index 07dfffaf23..58be8143c3 100644
--- a/examples/painting/transformations/renderarea.cpp
+++ b/examples/painting/transformations/renderarea.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/transformations/renderarea.h b/examples/painting/transformations/renderarea.h
index 00d0f04954..adc6c1ad7f 100644
--- a/examples/painting/transformations/renderarea.h
+++ b/examples/painting/transformations/renderarea.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/transformations/window.cpp b/examples/painting/transformations/window.cpp
index aab2750836..76b7597c6c 100644
--- a/examples/painting/transformations/window.cpp
+++ b/examples/painting/transformations/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/painting/transformations/window.h b/examples/painting/transformations/window.h
index da76e9743d..f28e53e494 100644
--- a/examples/painting/transformations/window.h
+++ b/examples/painting/transformations/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qmake/precompile/main.cpp b/examples/qmake/precompile/main.cpp
index 0a3d16e901..a6d883816f 100644
--- a/examples/qmake/precompile/main.cpp
+++ b/examples/qmake/precompile/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qmake/precompile/mydialog.cpp b/examples/qmake/precompile/mydialog.cpp
index e1464ed4cf..cb81d25970 100644
--- a/examples/qmake/precompile/mydialog.cpp
+++ b/examples/qmake/precompile/mydialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qmake/precompile/mydialog.h b/examples/qmake/precompile/mydialog.h
index f29172039b..c822b11eb3 100644
--- a/examples/qmake/precompile/mydialog.h
+++ b/examples/qmake/precompile/mydialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qmake/precompile/myobject.cpp b/examples/qmake/precompile/myobject.cpp
index eb87b114f6..7bd2bade19 100644
--- a/examples/qmake/precompile/myobject.cpp
+++ b/examples/qmake/precompile/myobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qmake/precompile/myobject.h b/examples/qmake/precompile/myobject.h
index e5c65b3f24..1253914701 100644
--- a/examples/qmake/precompile/myobject.h
+++ b/examples/qmake/precompile/myobject.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qmake/precompile/stable.h b/examples/qmake/precompile/stable.h
index f884009dc3..0b56049bbf 100644
--- a/examples/qmake/precompile/stable.h
+++ b/examples/qmake/precompile/stable.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qmake/precompile/util.cpp b/examples/qmake/precompile/util.cpp
index d99a19dae2..d3bde74fcd 100644
--- a/examples/qmake/precompile/util.cpp
+++ b/examples/qmake/precompile/util.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qmake/tutorial/hello.cpp b/examples/qmake/tutorial/hello.cpp
index a87ab8621a..b97f127c96 100644
--- a/examples/qmake/tutorial/hello.cpp
+++ b/examples/qmake/tutorial/hello.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qmake/tutorial/hello.h b/examples/qmake/tutorial/hello.h
index 4acf5ae1d8..c74cff488b 100644
--- a/examples/qmake/tutorial/hello.h
+++ b/examples/qmake/tutorial/hello.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qmake/tutorial/hellounix.cpp b/examples/qmake/tutorial/hellounix.cpp
index 8207505a5c..472ae9f7f1 100644
--- a/examples/qmake/tutorial/hellounix.cpp
+++ b/examples/qmake/tutorial/hellounix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qmake/tutorial/hellowin.cpp b/examples/qmake/tutorial/hellowin.cpp
index 16fc6f9620..d6f5eada0b 100644
--- a/examples/qmake/tutorial/hellowin.cpp
+++ b/examples/qmake/tutorial/hellowin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qmake/tutorial/main.cpp b/examples/qmake/tutorial/main.cpp
index 2bf9c34e61..4f53a33c13 100644
--- a/examples/qmake/tutorial/main.cpp
+++ b/examples/qmake/tutorial/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qpa/windows/main.cpp b/examples/qpa/windows/main.cpp
index 37c931c732..2680ac5a36 100644
--- a/examples/qpa/windows/main.cpp
+++ b/examples/qpa/windows/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,12 +33,14 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QGuiApplication>
#include <QScreen>
+#include <QRect>
#include "window.h"
@@ -63,6 +64,9 @@ int main(int argc, char **argv)
if (screen == app.primaryScreen())
continue;
Window *window = new Window(screen);
+ QRect geometry = window->geometry();
+ geometry.moveCenter(screen->availableGeometry().center());
+ window->setGeometry(geometry);
window->setVisible(true);
window->setWindowTitle(screen->name());
}
diff --git a/examples/qpa/windows/window.cpp b/examples/qpa/windows/window.cpp
index c22ad2878e..3ea2f61600 100644
--- a/examples/qpa/windows/window.cpp
+++ b/examples/qpa/windows/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qpa/windows/window.h b/examples/qpa/windows/window.h
index 31b6e1b12f..fa88ba5409 100644
--- a/examples/qpa/windows/window.h
+++ b/examples/qpa/windows/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qtconcurrent/imagescaling/imagescaling.cpp b/examples/qtconcurrent/imagescaling/imagescaling.cpp
index d4d47069d7..6ebc40fef7 100644
--- a/examples/qtconcurrent/imagescaling/imagescaling.cpp
+++ b/examples/qtconcurrent/imagescaling/imagescaling.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qtconcurrent/imagescaling/imagescaling.h b/examples/qtconcurrent/imagescaling/imagescaling.h
index b56d07f2cb..1f68a3838a 100644
--- a/examples/qtconcurrent/imagescaling/imagescaling.h
+++ b/examples/qtconcurrent/imagescaling/imagescaling.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -41,6 +41,7 @@
#define IMAGESCALING_H
#include <QtWidgets>
+#include <QtConcurrent>
#ifndef QT_NO_CONCURRENT
diff --git a/examples/qtconcurrent/imagescaling/imagescaling.pro b/examples/qtconcurrent/imagescaling/imagescaling.pro
index c5cf5c96d7..b268aa75f2 100644
--- a/examples/qtconcurrent/imagescaling/imagescaling.pro
+++ b/examples/qtconcurrent/imagescaling/imagescaling.pro
@@ -1,6 +1,7 @@
TEMPLATE = app
DEPENDPATH += .
INCLUDEPATH += .
+QT += concurrent
# Input
SOURCES += main.cpp imagescaling.cpp
@@ -13,7 +14,7 @@ sources.path = $$[QT_INSTALL_EXAMPLES]/qtbase/qtconcurrent/imagescaling
INSTALLS += target sources
-wince*: DEPLOYMENT_PLUGIN += qgif qjpeg qtiff
+wince*: DEPLOYMENT_PLUGIN += qgif qjpeg
QT += widgets
simulator: warning(This example does not work on Simulator platform)
diff --git a/examples/qtconcurrent/imagescaling/main.cpp b/examples/qtconcurrent/imagescaling/main.cpp
index 8e06c968ca..9fef7d3100 100644
--- a/examples/qtconcurrent/imagescaling/main.cpp
+++ b/examples/qtconcurrent/imagescaling/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,10 +33,12 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QtWidgets>
+#include <QtConcurrent>
#ifndef QT_NO_CONCURRENT
diff --git a/examples/qtconcurrent/map/main.cpp b/examples/qtconcurrent/map/main.cpp
index 1dee9412a5..eec8a09ee7 100644
--- a/examples/qtconcurrent/map/main.cpp
+++ b/examples/qtconcurrent/map/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qtconcurrent/map/map.pro b/examples/qtconcurrent/map/map.pro
index 978eae44b9..72f770755f 100644
--- a/examples/qtconcurrent/map/map.pro
+++ b/examples/qtconcurrent/map/map.pro
@@ -2,6 +2,7 @@ TEMPLATE = app
TARGET = mapdemo
DEPENDPATH += .
INCLUDEPATH += .
+QT += concurrent widgets
# Input
SOURCES += main.cpp
@@ -13,6 +14,4 @@ sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro *.png
sources.path = $$[QT_INSTALL_EXAMPLES]/qtbase/qtconcurrent/map
INSTALLS += target sources
-QT += widgets
-
simulator: warning(This example does not work on Simulator platform)
diff --git a/examples/qtconcurrent/progressdialog/main.cpp b/examples/qtconcurrent/progressdialog/main.cpp
index 26de3e22b7..87ea4f5486 100644
--- a/examples/qtconcurrent/progressdialog/main.cpp
+++ b/examples/qtconcurrent/progressdialog/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,11 +33,13 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QtWidgets>
+#include <QtConcurrent>
#ifndef QT_NO_CONCURRENT
diff --git a/examples/qtconcurrent/progressdialog/progressdialog.pro b/examples/qtconcurrent/progressdialog/progressdialog.pro
index fbc239d199..75a3aba0ae 100644
--- a/examples/qtconcurrent/progressdialog/progressdialog.pro
+++ b/examples/qtconcurrent/progressdialog/progressdialog.pro
@@ -12,6 +12,6 @@ sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro *.png
sources.path = $$[QT_INSTALL_EXAMPLES]/qtbase/qtconcurrent/progressdialog
INSTALLS += target sources
-QT += widgets
+QT += concurrent widgets
simulator: warning(This example does not work on Simulator platform)
diff --git a/examples/qtconcurrent/runfunction/main.cpp b/examples/qtconcurrent/runfunction/main.cpp
index 4003204536..8e7cd0b864 100644
--- a/examples/qtconcurrent/runfunction/main.cpp
+++ b/examples/qtconcurrent/runfunction/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qtconcurrent/runfunction/runfunction.pro b/examples/qtconcurrent/runfunction/runfunction.pro
index d41b88e2b0..f047577c9f 100644
--- a/examples/qtconcurrent/runfunction/runfunction.pro
+++ b/examples/qtconcurrent/runfunction/runfunction.pro
@@ -12,6 +12,6 @@ sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro *.png
sources.path = $$[QT_INSTALL_EXAMPLES]/qtbase/qtconcurrent/runfunction
INSTALLS += target sources
-QT += widgets
+QT += concurrent widgets
simulator: warning(This example does not work on Simulator platform)
diff --git a/examples/qtconcurrent/wordcount/main.cpp b/examples/qtconcurrent/wordcount/main.cpp
index a5ca67a460..6fb2ea12a1 100644
--- a/examples/qtconcurrent/wordcount/main.cpp
+++ b/examples/qtconcurrent/wordcount/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qtconcurrent/wordcount/wordcount.pro b/examples/qtconcurrent/wordcount/wordcount.pro
index ee4887c0f1..3bddf1a862 100644
--- a/examples/qtconcurrent/wordcount/wordcount.pro
+++ b/examples/qtconcurrent/wordcount/wordcount.pro
@@ -12,6 +12,6 @@ sources.files = $$SOURCES $$HEADERS $$FORMS $$RESOURCES *.pro *.png
sources.path = $$[QT_INSTALL_EXAMPLES]/qtbase/qtconcurrent/wordcount
INSTALLS += target sources
-QT += widgets
+QT += concurrent widgets
simulator: warning(This example does not work on Simulator platform)
diff --git a/examples/qtestlib/tutorial1/testqstring.cpp b/examples/qtestlib/tutorial1/testqstring.cpp
index 76fa98c512..f4025a412e 100644
--- a/examples/qtestlib/tutorial1/testqstring.cpp
+++ b/examples/qtestlib/tutorial1/testqstring.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qtestlib/tutorial2/testqstring.cpp b/examples/qtestlib/tutorial2/testqstring.cpp
index 7bfa3bcbeb..affa5392ac 100644
--- a/examples/qtestlib/tutorial2/testqstring.cpp
+++ b/examples/qtestlib/tutorial2/testqstring.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qtestlib/tutorial3/testgui.cpp b/examples/qtestlib/tutorial3/testgui.cpp
index d90f0299c7..cd01e55485 100644
--- a/examples/qtestlib/tutorial3/testgui.cpp
+++ b/examples/qtestlib/tutorial3/testgui.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qtestlib/tutorial4/testgui.cpp b/examples/qtestlib/tutorial4/testgui.cpp
index fd884d237b..a44de03cb8 100644
--- a/examples/qtestlib/tutorial4/testgui.cpp
+++ b/examples/qtestlib/tutorial4/testgui.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qtestlib/tutorial5/benchmarking.cpp b/examples/qtestlib/tutorial5/benchmarking.cpp
index bc0cf304bb..c84a4ca1cb 100644
--- a/examples/qtestlib/tutorial5/benchmarking.cpp
+++ b/examples/qtestlib/tutorial5/benchmarking.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qtestlib/tutorial5/containers.cpp b/examples/qtestlib/tutorial5/containers.cpp
index a966045905..706635eeb0 100644
--- a/examples/qtestlib/tutorial5/containers.cpp
+++ b/examples/qtestlib/tutorial5/containers.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/dbscreen/dbscreen.cpp b/examples/qws/dbscreen/dbscreen.cpp
index a67358afe1..0049fb4a62 100644
--- a/examples/qws/dbscreen/dbscreen.cpp
+++ b/examples/qws/dbscreen/dbscreen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/dbscreen/dbscreen.h b/examples/qws/dbscreen/dbscreen.h
index 2731a5ceae..f52fa04365 100644
--- a/examples/qws/dbscreen/dbscreen.h
+++ b/examples/qws/dbscreen/dbscreen.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/dbscreen/dbscreendriverplugin.cpp b/examples/qws/dbscreen/dbscreendriverplugin.cpp
index 507dcecf48..4a4645d374 100644
--- a/examples/qws/dbscreen/dbscreendriverplugin.cpp
+++ b/examples/qws/dbscreen/dbscreendriverplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/framebuffer/main.c b/examples/qws/framebuffer/main.c
index f9d29e6712..da11d516a6 100644
--- a/examples/qws/framebuffer/main.c
+++ b/examples/qws/framebuffer/main.c
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/mousecalibration/calibration.cpp b/examples/qws/mousecalibration/calibration.cpp
index d39cf62fe5..3618bfccc0 100644
--- a/examples/qws/mousecalibration/calibration.cpp
+++ b/examples/qws/mousecalibration/calibration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/mousecalibration/calibration.h b/examples/qws/mousecalibration/calibration.h
index 335b2d50a3..636ed036cf 100644
--- a/examples/qws/mousecalibration/calibration.h
+++ b/examples/qws/mousecalibration/calibration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/mousecalibration/main.cpp b/examples/qws/mousecalibration/main.cpp
index 9393c84f13..f95878dfe5 100644
--- a/examples/qws/mousecalibration/main.cpp
+++ b/examples/qws/mousecalibration/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/mousecalibration/scribblewidget.cpp b/examples/qws/mousecalibration/scribblewidget.cpp
index 705c60798f..c217411f64 100644
--- a/examples/qws/mousecalibration/scribblewidget.cpp
+++ b/examples/qws/mousecalibration/scribblewidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/mousecalibration/scribblewidget.h b/examples/qws/mousecalibration/scribblewidget.h
index a5e11e2dab..fca4139512 100644
--- a/examples/qws/mousecalibration/scribblewidget.h
+++ b/examples/qws/mousecalibration/scribblewidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/simpledecoration/analogclock.cpp b/examples/qws/simpledecoration/analogclock.cpp
index 57246c86f4..67d74c4781 100644
--- a/examples/qws/simpledecoration/analogclock.cpp
+++ b/examples/qws/simpledecoration/analogclock.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/simpledecoration/analogclock.h b/examples/qws/simpledecoration/analogclock.h
index 43e81ff60c..2fe91c7dbc 100644
--- a/examples/qws/simpledecoration/analogclock.h
+++ b/examples/qws/simpledecoration/analogclock.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/simpledecoration/main.cpp b/examples/qws/simpledecoration/main.cpp
index 2d616311b8..1f0d367bc6 100644
--- a/examples/qws/simpledecoration/main.cpp
+++ b/examples/qws/simpledecoration/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/simpledecoration/mydecoration.cpp b/examples/qws/simpledecoration/mydecoration.cpp
index f2eb14f319..7b324e18c1 100644
--- a/examples/qws/simpledecoration/mydecoration.cpp
+++ b/examples/qws/simpledecoration/mydecoration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/simpledecoration/mydecoration.h b/examples/qws/simpledecoration/mydecoration.h
index e397775e21..6758f69449 100644
--- a/examples/qws/simpledecoration/mydecoration.h
+++ b/examples/qws/simpledecoration/mydecoration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/svgalib/svgalibpaintdevice.cpp b/examples/qws/svgalib/svgalibpaintdevice.cpp
index 5d25eccf43..6a6063d35a 100644
--- a/examples/qws/svgalib/svgalibpaintdevice.cpp
+++ b/examples/qws/svgalib/svgalibpaintdevice.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/svgalib/svgalibpaintdevice.h b/examples/qws/svgalib/svgalibpaintdevice.h
index 75415ac2bb..736a003cfd 100644
--- a/examples/qws/svgalib/svgalibpaintdevice.h
+++ b/examples/qws/svgalib/svgalibpaintdevice.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/svgalib/svgalibpaintengine.cpp b/examples/qws/svgalib/svgalibpaintengine.cpp
index ebcc46e780..1f109f585c 100644
--- a/examples/qws/svgalib/svgalibpaintengine.cpp
+++ b/examples/qws/svgalib/svgalibpaintengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/svgalib/svgalibpaintengine.h b/examples/qws/svgalib/svgalibpaintengine.h
index 20c1fd0f48..2bbbb0c942 100644
--- a/examples/qws/svgalib/svgalibpaintengine.h
+++ b/examples/qws/svgalib/svgalibpaintengine.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/svgalib/svgalibplugin.cpp b/examples/qws/svgalib/svgalibplugin.cpp
index dc60f5e4b1..993e0ed0a1 100644
--- a/examples/qws/svgalib/svgalibplugin.cpp
+++ b/examples/qws/svgalib/svgalibplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/svgalib/svgalibscreen.cpp b/examples/qws/svgalib/svgalibscreen.cpp
index 4fe97e0889..689568d045 100644
--- a/examples/qws/svgalib/svgalibscreen.cpp
+++ b/examples/qws/svgalib/svgalibscreen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/svgalib/svgalibscreen.h b/examples/qws/svgalib/svgalibscreen.h
index 68e236485f..244375ed18 100644
--- a/examples/qws/svgalib/svgalibscreen.h
+++ b/examples/qws/svgalib/svgalibscreen.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/svgalib/svgalibsurface.cpp b/examples/qws/svgalib/svgalibsurface.cpp
index 027e3f980a..35f80cbb61 100644
--- a/examples/qws/svgalib/svgalibsurface.cpp
+++ b/examples/qws/svgalib/svgalibsurface.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/qws/svgalib/svgalibsurface.h b/examples/qws/svgalib/svgalibsurface.h
index 08a65d0fb8..fd4fd8e26e 100644
--- a/examples/qws/svgalib/svgalibsurface.h
+++ b/examples/qws/svgalib/svgalibsurface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/richtext/calendar/calendar.pro b/examples/richtext/calendar/calendar.pro
index f65e8852bd..3867a027cf 100644
--- a/examples/richtext/calendar/calendar.pro
+++ b/examples/richtext/calendar/calendar.pro
@@ -2,8 +2,6 @@ HEADERS = mainwindow.h
SOURCES = main.cpp \
mainwindow.cpp
-# App cannot be with name "calendar" in Symbian due to same named system component.
-
# install
target.path = $$[QT_INSTALL_EXAMPLES]/qtbase/richtext/calendar
sources.files = $$SOURCES $$HEADERS $$RESOURCES $$FORMS calendar.pro
diff --git a/examples/richtext/calendar/main.cpp b/examples/richtext/calendar/main.cpp
index 913c41317f..35b6b90c13 100644
--- a/examples/richtext/calendar/main.cpp
+++ b/examples/richtext/calendar/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/richtext/calendar/mainwindow.cpp b/examples/richtext/calendar/mainwindow.cpp
index 5a7867c162..366ebff2a9 100644
--- a/examples/richtext/calendar/mainwindow.cpp
+++ b/examples/richtext/calendar/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/richtext/calendar/mainwindow.h b/examples/richtext/calendar/mainwindow.h
index 25c126e3d7..665452b688 100644
--- a/examples/richtext/calendar/mainwindow.h
+++ b/examples/richtext/calendar/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/richtext/orderform/detailsdialog.cpp b/examples/richtext/orderform/detailsdialog.cpp
index a1b5145b9e..3dbdee58c7 100644
--- a/examples/richtext/orderform/detailsdialog.cpp
+++ b/examples/richtext/orderform/detailsdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/richtext/orderform/detailsdialog.h b/examples/richtext/orderform/detailsdialog.h
index 830290af4f..ee964d082e 100644
--- a/examples/richtext/orderform/detailsdialog.h
+++ b/examples/richtext/orderform/detailsdialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/richtext/orderform/main.cpp b/examples/richtext/orderform/main.cpp
index 211f80e7a3..fc14fbb625 100644
--- a/examples/richtext/orderform/main.cpp
+++ b/examples/richtext/orderform/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/richtext/orderform/mainwindow.cpp b/examples/richtext/orderform/mainwindow.cpp
index eb538d5957..f241d50810 100644
--- a/examples/richtext/orderform/mainwindow.cpp
+++ b/examples/richtext/orderform/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/richtext/orderform/mainwindow.h b/examples/richtext/orderform/mainwindow.h
index 23468759b2..e688f42a80 100644
--- a/examples/richtext/orderform/mainwindow.h
+++ b/examples/richtext/orderform/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/richtext/syntaxhighlighter/highlighter.cpp b/examples/richtext/syntaxhighlighter/highlighter.cpp
index 7ba21c407e..826e132110 100644
--- a/examples/richtext/syntaxhighlighter/highlighter.cpp
+++ b/examples/richtext/syntaxhighlighter/highlighter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/richtext/syntaxhighlighter/highlighter.h b/examples/richtext/syntaxhighlighter/highlighter.h
index 2ed082b470..3f75063f89 100644
--- a/examples/richtext/syntaxhighlighter/highlighter.h
+++ b/examples/richtext/syntaxhighlighter/highlighter.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/richtext/syntaxhighlighter/main.cpp b/examples/richtext/syntaxhighlighter/main.cpp
index d2437372e2..5c2f0f236d 100644
--- a/examples/richtext/syntaxhighlighter/main.cpp
+++ b/examples/richtext/syntaxhighlighter/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/richtext/syntaxhighlighter/mainwindow.cpp b/examples/richtext/syntaxhighlighter/mainwindow.cpp
index 0b8655511f..ffb02ebb9b 100644
--- a/examples/richtext/syntaxhighlighter/mainwindow.cpp
+++ b/examples/richtext/syntaxhighlighter/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/richtext/syntaxhighlighter/mainwindow.h b/examples/richtext/syntaxhighlighter/mainwindow.h
index 3400474553..082ea77ba4 100644
--- a/examples/richtext/syntaxhighlighter/mainwindow.h
+++ b/examples/richtext/syntaxhighlighter/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/richtext/textedit/main.cpp b/examples/richtext/textedit/main.cpp
index 8b3d259011..ae12cd9979 100644
--- a/examples/richtext/textedit/main.cpp
+++ b/examples/richtext/textedit/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/richtext/textedit/textedit.cpp b/examples/richtext/textedit/textedit.cpp
index 12c1d55e91..1a1eb9b19c 100644
--- a/examples/richtext/textedit/textedit.cpp
+++ b/examples/richtext/textedit/textedit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/richtext/textedit/textedit.h b/examples/richtext/textedit/textedit.h
index a6cd1e63e4..e04fde4604 100644
--- a/examples/richtext/textedit/textedit.h
+++ b/examples/richtext/textedit/textedit.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/richtext/textedit/textedit.qdoc b/examples/richtext/textedit/textedit.qdoc
index b9cc886d5d..7a3aa76ab6 100644
--- a/examples/richtext/textedit/textedit.qdoc
+++ b/examples/richtext/textedit/textedit.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/scroller/graphicsview/main.cpp b/examples/scroller/graphicsview/main.cpp
index 3942edc757..0837719bb5 100644
--- a/examples/scroller/graphicsview/main.cpp
+++ b/examples/scroller/graphicsview/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/books/bookdelegate.cpp b/examples/sql/books/bookdelegate.cpp
index 391b2014bd..1bc8c24ea9 100644
--- a/examples/sql/books/bookdelegate.cpp
+++ b/examples/sql/books/bookdelegate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/books/bookdelegate.h b/examples/sql/books/bookdelegate.h
index 9c86dcd13c..155351de22 100644
--- a/examples/sql/books/bookdelegate.h
+++ b/examples/sql/books/bookdelegate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/books/bookwindow.cpp b/examples/sql/books/bookwindow.cpp
index 3485212e76..818738951e 100644
--- a/examples/sql/books/bookwindow.cpp
+++ b/examples/sql/books/bookwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/books/bookwindow.h b/examples/sql/books/bookwindow.h
index ae72805ce8..1a5d9f5ede 100644
--- a/examples/sql/books/bookwindow.h
+++ b/examples/sql/books/bookwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/books/initdb.h b/examples/sql/books/initdb.h
index 233ebd7f48..5207c03741 100644
--- a/examples/sql/books/initdb.h
+++ b/examples/sql/books/initdb.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/books/main.cpp b/examples/sql/books/main.cpp
index 23fe8ed46c..2e026d21e5 100644
--- a/examples/sql/books/main.cpp
+++ b/examples/sql/books/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/cachedtable/main.cpp b/examples/sql/cachedtable/main.cpp
index 4915e2253b..f1d499c3ab 100644
--- a/examples/sql/cachedtable/main.cpp
+++ b/examples/sql/cachedtable/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/cachedtable/tableeditor.cpp b/examples/sql/cachedtable/tableeditor.cpp
index 0518db56c7..d1e93084a3 100644
--- a/examples/sql/cachedtable/tableeditor.cpp
+++ b/examples/sql/cachedtable/tableeditor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/cachedtable/tableeditor.h b/examples/sql/cachedtable/tableeditor.h
index 6956f74f14..b7d728a084 100644
--- a/examples/sql/cachedtable/tableeditor.h
+++ b/examples/sql/cachedtable/tableeditor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/connection.h b/examples/sql/connection.h
index 3b35612024..17c859bf9a 100644
--- a/examples/sql/connection.h
+++ b/examples/sql/connection.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/drilldown/imageitem.cpp b/examples/sql/drilldown/imageitem.cpp
index 9942fdde5f..2422ddd324 100644
--- a/examples/sql/drilldown/imageitem.cpp
+++ b/examples/sql/drilldown/imageitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/drilldown/imageitem.h b/examples/sql/drilldown/imageitem.h
index fb51e7795a..74bac26676 100644
--- a/examples/sql/drilldown/imageitem.h
+++ b/examples/sql/drilldown/imageitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/drilldown/informationwindow.cpp b/examples/sql/drilldown/informationwindow.cpp
index ce90779f3a..f18a74c2ff 100644
--- a/examples/sql/drilldown/informationwindow.cpp
+++ b/examples/sql/drilldown/informationwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/drilldown/informationwindow.h b/examples/sql/drilldown/informationwindow.h
index a7af8a8d5c..5b6ec61a1f 100644
--- a/examples/sql/drilldown/informationwindow.h
+++ b/examples/sql/drilldown/informationwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/drilldown/main.cpp b/examples/sql/drilldown/main.cpp
index 7d7f93acde..2d18e8ce35 100644
--- a/examples/sql/drilldown/main.cpp
+++ b/examples/sql/drilldown/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/drilldown/view.cpp b/examples/sql/drilldown/view.cpp
index 23d47332ca..f7fca390e6 100644
--- a/examples/sql/drilldown/view.cpp
+++ b/examples/sql/drilldown/view.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/drilldown/view.h b/examples/sql/drilldown/view.h
index 4453662f74..38cc7ff31b 100644
--- a/examples/sql/drilldown/view.h
+++ b/examples/sql/drilldown/view.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/masterdetail/database.h b/examples/sql/masterdetail/database.h
index a75e390f65..5ad805bb4d 100644
--- a/examples/sql/masterdetail/database.h
+++ b/examples/sql/masterdetail/database.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/masterdetail/dialog.cpp b/examples/sql/masterdetail/dialog.cpp
index d78d4953c5..b634dc88c8 100644
--- a/examples/sql/masterdetail/dialog.cpp
+++ b/examples/sql/masterdetail/dialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/masterdetail/dialog.h b/examples/sql/masterdetail/dialog.h
index 2b08b13156..00668adfe5 100644
--- a/examples/sql/masterdetail/dialog.h
+++ b/examples/sql/masterdetail/dialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/masterdetail/main.cpp b/examples/sql/masterdetail/main.cpp
index b8338a636b..d301f6bf9a 100644
--- a/examples/sql/masterdetail/main.cpp
+++ b/examples/sql/masterdetail/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/masterdetail/mainwindow.cpp b/examples/sql/masterdetail/mainwindow.cpp
index 127f18630f..0eb8bb4548 100644
--- a/examples/sql/masterdetail/mainwindow.cpp
+++ b/examples/sql/masterdetail/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/masterdetail/mainwindow.h b/examples/sql/masterdetail/mainwindow.h
index 586a22a722..8e31e60ad1 100644
--- a/examples/sql/masterdetail/mainwindow.h
+++ b/examples/sql/masterdetail/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/querymodel/customsqlmodel.cpp b/examples/sql/querymodel/customsqlmodel.cpp
index c7999de9dc..9acbd35c21 100644
--- a/examples/sql/querymodel/customsqlmodel.cpp
+++ b/examples/sql/querymodel/customsqlmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/querymodel/customsqlmodel.h b/examples/sql/querymodel/customsqlmodel.h
index 7627c785d2..eda44d7893 100644
--- a/examples/sql/querymodel/customsqlmodel.h
+++ b/examples/sql/querymodel/customsqlmodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/querymodel/editablesqlmodel.cpp b/examples/sql/querymodel/editablesqlmodel.cpp
index 2a2fadac84..836c64ff82 100644
--- a/examples/sql/querymodel/editablesqlmodel.cpp
+++ b/examples/sql/querymodel/editablesqlmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/querymodel/editablesqlmodel.h b/examples/sql/querymodel/editablesqlmodel.h
index f3a8bf7547..33967bbed0 100644
--- a/examples/sql/querymodel/editablesqlmodel.h
+++ b/examples/sql/querymodel/editablesqlmodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/querymodel/main.cpp b/examples/sql/querymodel/main.cpp
index f40c5bd1c4..109da59a3e 100644
--- a/examples/sql/querymodel/main.cpp
+++ b/examples/sql/querymodel/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/relationaltablemodel/relationaltablemodel.cpp b/examples/sql/relationaltablemodel/relationaltablemodel.cpp
index 4497599f31..083d6e3105 100644
--- a/examples/sql/relationaltablemodel/relationaltablemodel.cpp
+++ b/examples/sql/relationaltablemodel/relationaltablemodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/sqlbrowser/browser.cpp b/examples/sql/sqlbrowser/browser.cpp
index df0bee5d47..3aa330e227 100644
--- a/examples/sql/sqlbrowser/browser.cpp
+++ b/examples/sql/sqlbrowser/browser.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/sqlbrowser/browser.h b/examples/sql/sqlbrowser/browser.h
index f49f36c44a..0769812ec8 100644
--- a/examples/sql/sqlbrowser/browser.h
+++ b/examples/sql/sqlbrowser/browser.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/sqlbrowser/connectionwidget.cpp b/examples/sql/sqlbrowser/connectionwidget.cpp
index 12f6f18fbe..b4d9af6515 100644
--- a/examples/sql/sqlbrowser/connectionwidget.cpp
+++ b/examples/sql/sqlbrowser/connectionwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/sqlbrowser/connectionwidget.h b/examples/sql/sqlbrowser/connectionwidget.h
index 4243825b2b..232018156e 100644
--- a/examples/sql/sqlbrowser/connectionwidget.h
+++ b/examples/sql/sqlbrowser/connectionwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/sqlbrowser/main.cpp b/examples/sql/sqlbrowser/main.cpp
index 3b80899512..2febf15f4d 100644
--- a/examples/sql/sqlbrowser/main.cpp
+++ b/examples/sql/sqlbrowser/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/sqlbrowser/qsqlconnectiondialog.cpp b/examples/sql/sqlbrowser/qsqlconnectiondialog.cpp
index 4a0a0d2793..525d330ae2 100644
--- a/examples/sql/sqlbrowser/qsqlconnectiondialog.cpp
+++ b/examples/sql/sqlbrowser/qsqlconnectiondialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/sqlbrowser/qsqlconnectiondialog.h b/examples/sql/sqlbrowser/qsqlconnectiondialog.h
index 5a088548e0..c5884eff93 100644
--- a/examples/sql/sqlbrowser/qsqlconnectiondialog.h
+++ b/examples/sql/sqlbrowser/qsqlconnectiondialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/sqlwidgetmapper/main.cpp b/examples/sql/sqlwidgetmapper/main.cpp
index 3cbf4b5880..0fc4966ccf 100644
--- a/examples/sql/sqlwidgetmapper/main.cpp
+++ b/examples/sql/sqlwidgetmapper/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/sqlwidgetmapper/window.cpp b/examples/sql/sqlwidgetmapper/window.cpp
index e38e253728..9d897ae74e 100644
--- a/examples/sql/sqlwidgetmapper/window.cpp
+++ b/examples/sql/sqlwidgetmapper/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/sqlwidgetmapper/window.h b/examples/sql/sqlwidgetmapper/window.h
index a99907c226..50894a1d6f 100644
--- a/examples/sql/sqlwidgetmapper/window.h
+++ b/examples/sql/sqlwidgetmapper/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/sql/tablemodel/tablemodel.cpp b/examples/sql/tablemodel/tablemodel.cpp
index 0e46660728..27540ef93c 100644
--- a/examples/sql/tablemodel/tablemodel.cpp
+++ b/examples/sql/tablemodel/tablemodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/statemachine/eventtransitions/main.cpp b/examples/statemachine/eventtransitions/main.cpp
index def62392a4..b3af3b825f 100644
--- a/examples/statemachine/eventtransitions/main.cpp
+++ b/examples/statemachine/eventtransitions/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/statemachine/factorial/main.cpp b/examples/statemachine/factorial/main.cpp
index 5a0c0054bc..df50cab02f 100644
--- a/examples/statemachine/factorial/main.cpp
+++ b/examples/statemachine/factorial/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/statemachine/pingpong/main.cpp b/examples/statemachine/pingpong/main.cpp
index 1355f1e7b2..636e7193b2 100644
--- a/examples/statemachine/pingpong/main.cpp
+++ b/examples/statemachine/pingpong/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/statemachine/rogue/main.cpp b/examples/statemachine/rogue/main.cpp
index 6ab41243c5..c909c17cde 100644
--- a/examples/statemachine/rogue/main.cpp
+++ b/examples/statemachine/rogue/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/statemachine/rogue/movementtransition.h b/examples/statemachine/rogue/movementtransition.h
index 00cd54f088..6f27da93b8 100644
--- a/examples/statemachine/rogue/movementtransition.h
+++ b/examples/statemachine/rogue/movementtransition.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/statemachine/rogue/window.cpp b/examples/statemachine/rogue/window.cpp
index d0962ee28f..5fcd259c91 100644
--- a/examples/statemachine/rogue/window.cpp
+++ b/examples/statemachine/rogue/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/statemachine/rogue/window.h b/examples/statemachine/rogue/window.h
index 4426d1d4d4..8ef3591e96 100644
--- a/examples/statemachine/rogue/window.h
+++ b/examples/statemachine/rogue/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/statemachine/trafficlight/main.cpp b/examples/statemachine/trafficlight/main.cpp
index 33925dea90..624e3f1559 100644
--- a/examples/statemachine/trafficlight/main.cpp
+++ b/examples/statemachine/trafficlight/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/statemachine/twowaybutton/main.cpp b/examples/statemachine/twowaybutton/main.cpp
index aa985e202c..05f82538ff 100644
--- a/examples/statemachine/twowaybutton/main.cpp
+++ b/examples/statemachine/twowaybutton/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/threads/mandelbrot/main.cpp b/examples/threads/mandelbrot/main.cpp
index 9232de23e4..6601be0d54 100644
--- a/examples/threads/mandelbrot/main.cpp
+++ b/examples/threads/mandelbrot/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/threads/mandelbrot/mandelbrotwidget.cpp b/examples/threads/mandelbrot/mandelbrotwidget.cpp
index 5d2a615ea9..36ff3137f7 100644
--- a/examples/threads/mandelbrot/mandelbrotwidget.cpp
+++ b/examples/threads/mandelbrot/mandelbrotwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/threads/mandelbrot/mandelbrotwidget.h b/examples/threads/mandelbrot/mandelbrotwidget.h
index 7b9b6f7606..101693bef1 100644
--- a/examples/threads/mandelbrot/mandelbrotwidget.h
+++ b/examples/threads/mandelbrot/mandelbrotwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/threads/mandelbrot/renderthread.cpp b/examples/threads/mandelbrot/renderthread.cpp
index 886f40e7bc..2af0b2ed73 100644
--- a/examples/threads/mandelbrot/renderthread.cpp
+++ b/examples/threads/mandelbrot/renderthread.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/threads/mandelbrot/renderthread.h b/examples/threads/mandelbrot/renderthread.h
index 6e270e46d3..35f76ea973 100644
--- a/examples/threads/mandelbrot/renderthread.h
+++ b/examples/threads/mandelbrot/renderthread.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/threads/queuedcustomtype/block.cpp b/examples/threads/queuedcustomtype/block.cpp
index 9316e82129..6f8dc99353 100644
--- a/examples/threads/queuedcustomtype/block.cpp
+++ b/examples/threads/queuedcustomtype/block.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/threads/queuedcustomtype/block.h b/examples/threads/queuedcustomtype/block.h
index d157a5741e..f2ce2152c1 100644
--- a/examples/threads/queuedcustomtype/block.h
+++ b/examples/threads/queuedcustomtype/block.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/threads/queuedcustomtype/main.cpp b/examples/threads/queuedcustomtype/main.cpp
index a4836690cf..27b08a55a3 100644
--- a/examples/threads/queuedcustomtype/main.cpp
+++ b/examples/threads/queuedcustomtype/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/threads/queuedcustomtype/renderthread.cpp b/examples/threads/queuedcustomtype/renderthread.cpp
index fc9c60a6e8..5fe52c0787 100644
--- a/examples/threads/queuedcustomtype/renderthread.cpp
+++ b/examples/threads/queuedcustomtype/renderthread.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/threads/queuedcustomtype/renderthread.h b/examples/threads/queuedcustomtype/renderthread.h
index 44db807eaa..7611c22204 100644
--- a/examples/threads/queuedcustomtype/renderthread.h
+++ b/examples/threads/queuedcustomtype/renderthread.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/threads/queuedcustomtype/window.cpp b/examples/threads/queuedcustomtype/window.cpp
index 78a595c38f..cb84cbe79f 100644
--- a/examples/threads/queuedcustomtype/window.cpp
+++ b/examples/threads/queuedcustomtype/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/threads/queuedcustomtype/window.h b/examples/threads/queuedcustomtype/window.h
index e5596eea91..8b51eadce0 100644
--- a/examples/threads/queuedcustomtype/window.h
+++ b/examples/threads/queuedcustomtype/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/threads/semaphores/semaphores.cpp b/examples/threads/semaphores/semaphores.cpp
index 8085de59a6..414f89ab55 100644
--- a/examples/threads/semaphores/semaphores.cpp
+++ b/examples/threads/semaphores/semaphores.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/threads/waitconditions/waitconditions.cpp b/examples/threads/waitconditions/waitconditions.cpp
index 403a01511f..9eb734ff5f 100644
--- a/examples/threads/waitconditions/waitconditions.cpp
+++ b/examples/threads/waitconditions/waitconditions.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/codecs/main.cpp b/examples/tools/codecs/main.cpp
index 18ff180690..e96d256e9b 100644
--- a/examples/tools/codecs/main.cpp
+++ b/examples/tools/codecs/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/codecs/mainwindow.cpp b/examples/tools/codecs/mainwindow.cpp
index 1658e476ee..8f3c94e3d5 100644
--- a/examples/tools/codecs/mainwindow.cpp
+++ b/examples/tools/codecs/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/codecs/mainwindow.h b/examples/tools/codecs/mainwindow.h
index 65f89e997b..a1f1c2ac9f 100644
--- a/examples/tools/codecs/mainwindow.h
+++ b/examples/tools/codecs/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/codecs/previewform.cpp b/examples/tools/codecs/previewform.cpp
index 2751ea773b..e1d98edb4b 100644
--- a/examples/tools/codecs/previewform.cpp
+++ b/examples/tools/codecs/previewform.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/codecs/previewform.h b/examples/tools/codecs/previewform.h
index d035ee337b..b4b9be4272 100644
--- a/examples/tools/codecs/previewform.h
+++ b/examples/tools/codecs/previewform.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/completer/fsmodel.cpp b/examples/tools/completer/fsmodel.cpp
index b7fd9425bf..74363a2474 100644
--- a/examples/tools/completer/fsmodel.cpp
+++ b/examples/tools/completer/fsmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/completer/fsmodel.h b/examples/tools/completer/fsmodel.h
index b0296cd1c0..ecadf22c33 100644
--- a/examples/tools/completer/fsmodel.h
+++ b/examples/tools/completer/fsmodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/completer/main.cpp b/examples/tools/completer/main.cpp
index aaa21cf2a7..5cc5b28133 100644
--- a/examples/tools/completer/main.cpp
+++ b/examples/tools/completer/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/completer/mainwindow.cpp b/examples/tools/completer/mainwindow.cpp
index 3a81c681a0..bc80bc939f 100644
--- a/examples/tools/completer/mainwindow.cpp
+++ b/examples/tools/completer/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/completer/mainwindow.h b/examples/tools/completer/mainwindow.h
index 79ff6bcc97..9888792783 100644
--- a/examples/tools/completer/mainwindow.h
+++ b/examples/tools/completer/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/contiguouscache/main.cpp b/examples/tools/contiguouscache/main.cpp
index 15004c8392..7a54e0a70d 100644
--- a/examples/tools/contiguouscache/main.cpp
+++ b/examples/tools/contiguouscache/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/contiguouscache/randomlistmodel.cpp b/examples/tools/contiguouscache/randomlistmodel.cpp
index 36594cc857..d6dc722401 100644
--- a/examples/tools/contiguouscache/randomlistmodel.cpp
+++ b/examples/tools/contiguouscache/randomlistmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/contiguouscache/randomlistmodel.h b/examples/tools/contiguouscache/randomlistmodel.h
index c88ea145a6..331ae7ea78 100644
--- a/examples/tools/contiguouscache/randomlistmodel.h
+++ b/examples/tools/contiguouscache/randomlistmodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/customcompleter/main.cpp b/examples/tools/customcompleter/main.cpp
index c11e7c89aa..19ca19e5f9 100644
--- a/examples/tools/customcompleter/main.cpp
+++ b/examples/tools/customcompleter/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/customcompleter/mainwindow.cpp b/examples/tools/customcompleter/mainwindow.cpp
index 3c0fc79ea6..b4d7efa4a5 100644
--- a/examples/tools/customcompleter/mainwindow.cpp
+++ b/examples/tools/customcompleter/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/customcompleter/mainwindow.h b/examples/tools/customcompleter/mainwindow.h
index 20efdda8c1..33a1ffc90b 100644
--- a/examples/tools/customcompleter/mainwindow.h
+++ b/examples/tools/customcompleter/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/customcompleter/textedit.cpp b/examples/tools/customcompleter/textedit.cpp
index d14842ec2b..cc9df52b7e 100644
--- a/examples/tools/customcompleter/textedit.cpp
+++ b/examples/tools/customcompleter/textedit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/customcompleter/textedit.h b/examples/tools/customcompleter/textedit.h
index 9b8f91c370..c721c47d14 100644
--- a/examples/tools/customcompleter/textedit.h
+++ b/examples/tools/customcompleter/textedit.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/customtype/main.cpp b/examples/tools/customtype/main.cpp
index f4e291d2a9..75605fb3cd 100644
--- a/examples/tools/customtype/main.cpp
+++ b/examples/tools/customtype/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,7 +47,7 @@ int main(int argc, char *argv[])
QCoreApplication app(argc, argv);
QStringList headers;
headers << "Subject: Hello World"
- << "From: qt-info@nokia.com";
+ << "From: address@example.com";
QString body = "This is a test.\r\n";
//! [printing a custom type]
diff --git a/examples/tools/customtype/message.cpp b/examples/tools/customtype/message.cpp
index 665871ce2b..ebd7a1f7c7 100644
--- a/examples/tools/customtype/message.cpp
+++ b/examples/tools/customtype/message.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/customtype/message.h b/examples/tools/customtype/message.h
index 94d54b5009..d477332e70 100644
--- a/examples/tools/customtype/message.h
+++ b/examples/tools/customtype/message.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/customtypesending/main.cpp b/examples/tools/customtypesending/main.cpp
index 12ee4fc4bc..7c536da5e3 100644
--- a/examples/tools/customtypesending/main.cpp
+++ b/examples/tools/customtypesending/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,7 @@ int main(int argc, char *argv[])
Window window1;
QStringList headers;
headers << "Subject: Hello World"
- << "From: qt-info@nokia.com";
+ << "From: address@example.com";
QString body = "This is a test.\r\n";
Message message(body, headers);
window1.setMessage(message);
diff --git a/examples/tools/customtypesending/message.cpp b/examples/tools/customtypesending/message.cpp
index 1934c63d8f..9a14438af6 100644
--- a/examples/tools/customtypesending/message.cpp
+++ b/examples/tools/customtypesending/message.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/customtypesending/message.h b/examples/tools/customtypesending/message.h
index 1b683ad513..bd75d1e95c 100644
--- a/examples/tools/customtypesending/message.h
+++ b/examples/tools/customtypesending/message.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/customtypesending/window.cpp b/examples/tools/customtypesending/window.cpp
index f3f68c6a6c..84a3417efc 100644
--- a/examples/tools/customtypesending/window.cpp
+++ b/examples/tools/customtypesending/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/customtypesending/window.h b/examples/tools/customtypesending/window.h
index 60479c9443..9c826f1e25 100644
--- a/examples/tools/customtypesending/window.h
+++ b/examples/tools/customtypesending/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/echoplugin/echowindow/echointerface.h b/examples/tools/echoplugin/echowindow/echointerface.h
index 60236eca44..412e37b7d2 100644
--- a/examples/tools/echoplugin/echowindow/echointerface.h
+++ b/examples/tools/echoplugin/echowindow/echointerface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/echoplugin/echowindow/echowindow.cpp b/examples/tools/echoplugin/echowindow/echowindow.cpp
index aa45b5221d..b8c0056bd3 100644
--- a/examples/tools/echoplugin/echowindow/echowindow.cpp
+++ b/examples/tools/echoplugin/echowindow/echowindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/echoplugin/echowindow/echowindow.h b/examples/tools/echoplugin/echowindow/echowindow.h
index 249824f70b..34985e7459 100644
--- a/examples/tools/echoplugin/echowindow/echowindow.h
+++ b/examples/tools/echoplugin/echowindow/echowindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/echoplugin/echowindow/main.cpp b/examples/tools/echoplugin/echowindow/main.cpp
index e8a9c15861..58d01977b9 100644
--- a/examples/tools/echoplugin/echowindow/main.cpp
+++ b/examples/tools/echoplugin/echowindow/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/echoplugin/plugin/echoplugin.cpp b/examples/tools/echoplugin/plugin/echoplugin.cpp
index 648488fb53..d22e7ead23 100644
--- a/examples/tools/echoplugin/plugin/echoplugin.cpp
+++ b/examples/tools/echoplugin/plugin/echoplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/echoplugin/plugin/echoplugin.h b/examples/tools/echoplugin/plugin/echoplugin.h
index daeec9e7a5..d5e24b3b76 100644
--- a/examples/tools/echoplugin/plugin/echoplugin.h
+++ b/examples/tools/echoplugin/plugin/echoplugin.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/i18n/languagechooser.cpp b/examples/tools/i18n/languagechooser.cpp
index 9874430457..237928c5fa 100644
--- a/examples/tools/i18n/languagechooser.cpp
+++ b/examples/tools/i18n/languagechooser.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/i18n/languagechooser.h b/examples/tools/i18n/languagechooser.h
index b13a0c149a..fbcf4d2153 100644
--- a/examples/tools/i18n/languagechooser.h
+++ b/examples/tools/i18n/languagechooser.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/i18n/main.cpp b/examples/tools/i18n/main.cpp
index 7b4b63557e..7e4dcdc6b4 100644
--- a/examples/tools/i18n/main.cpp
+++ b/examples/tools/i18n/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/i18n/mainwindow.cpp b/examples/tools/i18n/mainwindow.cpp
index ef0d33837a..36bccf31b8 100644
--- a/examples/tools/i18n/mainwindow.cpp
+++ b/examples/tools/i18n/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/i18n/mainwindow.h b/examples/tools/i18n/mainwindow.h
index eb3c6b91a5..dbb317c5f3 100644
--- a/examples/tools/i18n/mainwindow.h
+++ b/examples/tools/i18n/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/plugandpaint/interfaces.h b/examples/tools/plugandpaint/interfaces.h
index 709fee509a..e48683cf68 100644
--- a/examples/tools/plugandpaint/interfaces.h
+++ b/examples/tools/plugandpaint/interfaces.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/plugandpaint/main.cpp b/examples/tools/plugandpaint/main.cpp
index e3a4efa02b..841d5b417b 100644
--- a/examples/tools/plugandpaint/main.cpp
+++ b/examples/tools/plugandpaint/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/plugandpaint/mainwindow.cpp b/examples/tools/plugandpaint/mainwindow.cpp
index fcd0507fee..472e10120d 100644
--- a/examples/tools/plugandpaint/mainwindow.cpp
+++ b/examples/tools/plugandpaint/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/plugandpaint/mainwindow.h b/examples/tools/plugandpaint/mainwindow.h
index 88c2f10ac1..81157e3f1f 100644
--- a/examples/tools/plugandpaint/mainwindow.h
+++ b/examples/tools/plugandpaint/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/plugandpaint/paintarea.cpp b/examples/tools/plugandpaint/paintarea.cpp
index ed01f80347..8c537119e1 100644
--- a/examples/tools/plugandpaint/paintarea.cpp
+++ b/examples/tools/plugandpaint/paintarea.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/plugandpaint/paintarea.h b/examples/tools/plugandpaint/paintarea.h
index 552d923853..5252bb0320 100644
--- a/examples/tools/plugandpaint/paintarea.h
+++ b/examples/tools/plugandpaint/paintarea.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/plugandpaint/plugindialog.cpp b/examples/tools/plugandpaint/plugindialog.cpp
index 7c01d2507c..c83e295e3f 100644
--- a/examples/tools/plugandpaint/plugindialog.cpp
+++ b/examples/tools/plugandpaint/plugindialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/plugandpaint/plugindialog.h b/examples/tools/plugandpaint/plugindialog.h
index 9c4f202921..6a8414f798 100644
--- a/examples/tools/plugandpaint/plugindialog.h
+++ b/examples/tools/plugandpaint/plugindialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/plugandpaintplugins/basictools/basictoolsplugin.cpp b/examples/tools/plugandpaintplugins/basictools/basictoolsplugin.cpp
index 3b4592a5df..d55048dc0c 100644
--- a/examples/tools/plugandpaintplugins/basictools/basictoolsplugin.cpp
+++ b/examples/tools/plugandpaintplugins/basictools/basictoolsplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/plugandpaintplugins/basictools/basictoolsplugin.h b/examples/tools/plugandpaintplugins/basictools/basictoolsplugin.h
index f5611275d8..c857e4c7a0 100644
--- a/examples/tools/plugandpaintplugins/basictools/basictoolsplugin.h
+++ b/examples/tools/plugandpaintplugins/basictools/basictoolsplugin.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.cpp b/examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.cpp
index d6cf3d4c68..9303fbb6a6 100644
--- a/examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.cpp
+++ b/examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.h b/examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.h
index 4b4cd857d4..b88febe347 100644
--- a/examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.h
+++ b/examples/tools/plugandpaintplugins/extrafilters/extrafiltersplugin.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/regexp/main.cpp b/examples/tools/regexp/main.cpp
index 207c3c4ab1..767fb2fd67 100644
--- a/examples/tools/regexp/main.cpp
+++ b/examples/tools/regexp/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/regexp/regexpdialog.cpp b/examples/tools/regexp/regexpdialog.cpp
index 7fe163f012..dc128ae5a1 100644
--- a/examples/tools/regexp/regexpdialog.cpp
+++ b/examples/tools/regexp/regexpdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/regexp/regexpdialog.h b/examples/tools/regexp/regexpdialog.h
index 85635cb114..49d650ca4a 100644
--- a/examples/tools/regexp/regexpdialog.h
+++ b/examples/tools/regexp/regexpdialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/settingseditor/locationdialog.cpp b/examples/tools/settingseditor/locationdialog.cpp
index b10b721c94..e1ec636202 100644
--- a/examples/tools/settingseditor/locationdialog.cpp
+++ b/examples/tools/settingseditor/locationdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/settingseditor/locationdialog.h b/examples/tools/settingseditor/locationdialog.h
index 20aef3fc76..739ff07ce5 100644
--- a/examples/tools/settingseditor/locationdialog.h
+++ b/examples/tools/settingseditor/locationdialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/settingseditor/main.cpp b/examples/tools/settingseditor/main.cpp
index 18ff180690..e96d256e9b 100644
--- a/examples/tools/settingseditor/main.cpp
+++ b/examples/tools/settingseditor/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/settingseditor/mainwindow.cpp b/examples/tools/settingseditor/mainwindow.cpp
index 06287db335..18e1dad1d4 100644
--- a/examples/tools/settingseditor/mainwindow.cpp
+++ b/examples/tools/settingseditor/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/settingseditor/mainwindow.h b/examples/tools/settingseditor/mainwindow.h
index bfd276f9bb..7e6f3006d5 100644
--- a/examples/tools/settingseditor/mainwindow.h
+++ b/examples/tools/settingseditor/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/settingseditor/settingstree.cpp b/examples/tools/settingseditor/settingstree.cpp
index 664ff28908..b5b3457651 100644
--- a/examples/tools/settingseditor/settingstree.cpp
+++ b/examples/tools/settingseditor/settingstree.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/settingseditor/settingstree.h b/examples/tools/settingseditor/settingstree.h
index 1d929ceed7..23f0faa59c 100644
--- a/examples/tools/settingseditor/settingstree.h
+++ b/examples/tools/settingseditor/settingstree.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/settingseditor/variantdelegate.cpp b/examples/tools/settingseditor/variantdelegate.cpp
index e64ac791e3..cdd969d238 100644
--- a/examples/tools/settingseditor/variantdelegate.cpp
+++ b/examples/tools/settingseditor/variantdelegate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/settingseditor/variantdelegate.h b/examples/tools/settingseditor/variantdelegate.h
index 350e2311ae..12bc1d226b 100644
--- a/examples/tools/settingseditor/variantdelegate.h
+++ b/examples/tools/settingseditor/variantdelegate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/styleplugin/plugin/simplestyle.cpp b/examples/tools/styleplugin/plugin/simplestyle.cpp
index e2fb8cf4fc..c33f18056d 100644
--- a/examples/tools/styleplugin/plugin/simplestyle.cpp
+++ b/examples/tools/styleplugin/plugin/simplestyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/styleplugin/plugin/simplestyle.h b/examples/tools/styleplugin/plugin/simplestyle.h
index a855399377..3216729860 100644
--- a/examples/tools/styleplugin/plugin/simplestyle.h
+++ b/examples/tools/styleplugin/plugin/simplestyle.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/styleplugin/plugin/simplestyleplugin.cpp b/examples/tools/styleplugin/plugin/simplestyleplugin.cpp
index fc7b73f919..caf3e01dcf 100644
--- a/examples/tools/styleplugin/plugin/simplestyleplugin.cpp
+++ b/examples/tools/styleplugin/plugin/simplestyleplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/styleplugin/plugin/simplestyleplugin.h b/examples/tools/styleplugin/plugin/simplestyleplugin.h
index 3ae73cdb29..873ac59a67 100644
--- a/examples/tools/styleplugin/plugin/simplestyleplugin.h
+++ b/examples/tools/styleplugin/plugin/simplestyleplugin.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/styleplugin/stylewindow/main.cpp b/examples/tools/styleplugin/stylewindow/main.cpp
index 3baa02ff86..9708c0b147 100644
--- a/examples/tools/styleplugin/stylewindow/main.cpp
+++ b/examples/tools/styleplugin/stylewindow/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/styleplugin/stylewindow/stylewindow.cpp b/examples/tools/styleplugin/stylewindow/stylewindow.cpp
index 5e2f4ceab3..c2c9b851e5 100644
--- a/examples/tools/styleplugin/stylewindow/stylewindow.cpp
+++ b/examples/tools/styleplugin/stylewindow/stylewindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/styleplugin/stylewindow/stylewindow.h b/examples/tools/styleplugin/stylewindow/stylewindow.h
index bba1467ee5..c68f499264 100644
--- a/examples/tools/styleplugin/stylewindow/stylewindow.h
+++ b/examples/tools/styleplugin/stylewindow/stylewindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/treemodelcompleter/main.cpp b/examples/tools/treemodelcompleter/main.cpp
index 61d8f34206..c85b01cf7f 100644
--- a/examples/tools/treemodelcompleter/main.cpp
+++ b/examples/tools/treemodelcompleter/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/treemodelcompleter/mainwindow.cpp b/examples/tools/treemodelcompleter/mainwindow.cpp
index 4aafae445e..450435900e 100644
--- a/examples/tools/treemodelcompleter/mainwindow.cpp
+++ b/examples/tools/treemodelcompleter/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/treemodelcompleter/mainwindow.h b/examples/tools/treemodelcompleter/mainwindow.h
index 02fd043c38..ed1f68a2ed 100644
--- a/examples/tools/treemodelcompleter/mainwindow.h
+++ b/examples/tools/treemodelcompleter/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/treemodelcompleter/treemodelcompleter.cpp b/examples/tools/treemodelcompleter/treemodelcompleter.cpp
index 359cbc6675..4a9a3bb5b6 100644
--- a/examples/tools/treemodelcompleter/treemodelcompleter.cpp
+++ b/examples/tools/treemodelcompleter/treemodelcompleter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/treemodelcompleter/treemodelcompleter.h b/examples/tools/treemodelcompleter/treemodelcompleter.h
index d1182b3885..953be62c5d 100644
--- a/examples/tools/treemodelcompleter/treemodelcompleter.h
+++ b/examples/tools/treemodelcompleter/treemodelcompleter.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/undo/commands.cpp b/examples/tools/undo/commands.cpp
index adb69cbbc3..c97aa0ceea 100644
--- a/examples/tools/undo/commands.cpp
+++ b/examples/tools/undo/commands.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/undo/commands.h b/examples/tools/undo/commands.h
index 899d01daed..002d6b5335 100644
--- a/examples/tools/undo/commands.h
+++ b/examples/tools/undo/commands.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/undo/document.cpp b/examples/tools/undo/document.cpp
index 8c04701df2..4cc153e1a0 100644
--- a/examples/tools/undo/document.cpp
+++ b/examples/tools/undo/document.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/undo/document.h b/examples/tools/undo/document.h
index 22de77166a..713094cce3 100644
--- a/examples/tools/undo/document.h
+++ b/examples/tools/undo/document.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/undo/main.cpp b/examples/tools/undo/main.cpp
index ddab6fdbec..43d23b9762 100644
--- a/examples/tools/undo/main.cpp
+++ b/examples/tools/undo/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/undo/mainwindow.cpp b/examples/tools/undo/mainwindow.cpp
index 896fcec706..8def44c6f7 100644
--- a/examples/tools/undo/mainwindow.cpp
+++ b/examples/tools/undo/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/undo/mainwindow.h b/examples/tools/undo/mainwindow.h
index 7aebed0e56..61b5797e39 100644
--- a/examples/tools/undo/mainwindow.h
+++ b/examples/tools/undo/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/undoframework/commands.cpp b/examples/tools/undoframework/commands.cpp
index 6ce7fe2c80..521191375e 100644
--- a/examples/tools/undoframework/commands.cpp
+++ b/examples/tools/undoframework/commands.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/undoframework/commands.h b/examples/tools/undoframework/commands.h
index d2cd50c5b6..70667e9f2d 100644
--- a/examples/tools/undoframework/commands.h
+++ b/examples/tools/undoframework/commands.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/undoframework/diagramitem.cpp b/examples/tools/undoframework/diagramitem.cpp
index 2a367904ff..10ade13628 100644
--- a/examples/tools/undoframework/diagramitem.cpp
+++ b/examples/tools/undoframework/diagramitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/undoframework/diagramitem.h b/examples/tools/undoframework/diagramitem.h
index 04ea2cf07c..f5a7eb4b62 100644
--- a/examples/tools/undoframework/diagramitem.h
+++ b/examples/tools/undoframework/diagramitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/undoframework/diagramscene.cpp b/examples/tools/undoframework/diagramscene.cpp
index af22849e80..cbc782f42f 100644
--- a/examples/tools/undoframework/diagramscene.cpp
+++ b/examples/tools/undoframework/diagramscene.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/undoframework/diagramscene.h b/examples/tools/undoframework/diagramscene.h
index 76e14798a9..4489ead3ee 100644
--- a/examples/tools/undoframework/diagramscene.h
+++ b/examples/tools/undoframework/diagramscene.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/undoframework/main.cpp b/examples/tools/undoframework/main.cpp
index e056e6fe23..5706a29aea 100644
--- a/examples/tools/undoframework/main.cpp
+++ b/examples/tools/undoframework/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/undoframework/mainwindow.cpp b/examples/tools/undoframework/mainwindow.cpp
index aac08f4c29..e85e3a2395 100644
--- a/examples/tools/undoframework/mainwindow.cpp
+++ b/examples/tools/undoframework/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tools/undoframework/mainwindow.h b/examples/tools/undoframework/mainwindow.h
index 4169b11b68..3e4be0aebe 100644
--- a/examples/tools/undoframework/mainwindow.h
+++ b/examples/tools/undoframework/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/touch/dials/main.cpp b/examples/touch/dials/main.cpp
index e5545ca533..15b2e08216 100644
--- a/examples/touch/dials/main.cpp
+++ b/examples/touch/dials/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/touch/fingerpaint/main.cpp b/examples/touch/fingerpaint/main.cpp
index 859b47c348..0b0454e575 100644
--- a/examples/touch/fingerpaint/main.cpp
+++ b/examples/touch/fingerpaint/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/touch/fingerpaint/mainwindow.cpp b/examples/touch/fingerpaint/mainwindow.cpp
index 8dd8e44ba6..288068fa09 100644
--- a/examples/touch/fingerpaint/mainwindow.cpp
+++ b/examples/touch/fingerpaint/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/touch/fingerpaint/mainwindow.h b/examples/touch/fingerpaint/mainwindow.h
index 830507a195..9d46e47db1 100644
--- a/examples/touch/fingerpaint/mainwindow.h
+++ b/examples/touch/fingerpaint/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/touch/fingerpaint/scribblearea.cpp b/examples/touch/fingerpaint/scribblearea.cpp
index e9b07a36df..5b32980ee2 100644
--- a/examples/touch/fingerpaint/scribblearea.cpp
+++ b/examples/touch/fingerpaint/scribblearea.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/touch/fingerpaint/scribblearea.h b/examples/touch/fingerpaint/scribblearea.h
index 69b81f52c9..5af9fc101d 100644
--- a/examples/touch/fingerpaint/scribblearea.h
+++ b/examples/touch/fingerpaint/scribblearea.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/touch/knobs/knob.cpp b/examples/touch/knobs/knob.cpp
index 6a80dbec67..b3d07e7335 100644
--- a/examples/touch/knobs/knob.cpp
+++ b/examples/touch/knobs/knob.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/touch/knobs/knob.h b/examples/touch/knobs/knob.h
index 861b763ca3..506152ee03 100644
--- a/examples/touch/knobs/knob.h
+++ b/examples/touch/knobs/knob.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/touch/knobs/main.cpp b/examples/touch/knobs/main.cpp
index 6c073af69d..c8cc15fcd7 100644
--- a/examples/touch/knobs/main.cpp
+++ b/examples/touch/knobs/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/touch/pinchzoom/graphicsview.cpp b/examples/touch/pinchzoom/graphicsview.cpp
index 5fc217b1fb..645a4ba402 100644
--- a/examples/touch/pinchzoom/graphicsview.cpp
+++ b/examples/touch/pinchzoom/graphicsview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/touch/pinchzoom/graphicsview.h b/examples/touch/pinchzoom/graphicsview.h
index 31e947bd7e..f8a2895d16 100644
--- a/examples/touch/pinchzoom/graphicsview.h
+++ b/examples/touch/pinchzoom/graphicsview.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/touch/pinchzoom/main.cpp b/examples/touch/pinchzoom/main.cpp
index c6d8363dba..389a3b7b1a 100644
--- a/examples/touch/pinchzoom/main.cpp
+++ b/examples/touch/pinchzoom/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/touch/pinchzoom/mouse.cpp b/examples/touch/pinchzoom/mouse.cpp
index 1abc03a8a6..1f5af2776e 100644
--- a/examples/touch/pinchzoom/mouse.cpp
+++ b/examples/touch/pinchzoom/mouse.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/touch/pinchzoom/mouse.h b/examples/touch/pinchzoom/mouse.h
index 4d9c140138..18ee4bda40 100644
--- a/examples/touch/pinchzoom/mouse.h
+++ b/examples/touch/pinchzoom/mouse.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/README b/examples/tutorials/addressbook-fr/README
index 5f82d3ce38..d24cedf51e 100644
--- a/examples/tutorials/addressbook-fr/README
+++ b/examples/tutorials/addressbook-fr/README
@@ -38,5 +38,3 @@ You can do this by typing the following at the command line:
qmake -spec macx-xcode
Then open the generated Xcode project in Xcode and build it.
-
-Feel free to send comments about the tutorial to qt-info@nokia.com.
diff --git a/examples/tutorials/addressbook-fr/part1/addressbook.cpp b/examples/tutorials/addressbook-fr/part1/addressbook.cpp
index 34cbb6ffa1..119baacb37 100644
--- a/examples/tutorials/addressbook-fr/part1/addressbook.cpp
+++ b/examples/tutorials/addressbook-fr/part1/addressbook.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part1/addressbook.h b/examples/tutorials/addressbook-fr/part1/addressbook.h
index 7bc525dd75..0bcd93e3bb 100644
--- a/examples/tutorials/addressbook-fr/part1/addressbook.h
+++ b/examples/tutorials/addressbook-fr/part1/addressbook.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part1/main.cpp b/examples/tutorials/addressbook-fr/part1/main.cpp
index 5ef2a510b7..09562a2d2b 100644
--- a/examples/tutorials/addressbook-fr/part1/main.cpp
+++ b/examples/tutorials/addressbook-fr/part1/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part2/addressbook.cpp b/examples/tutorials/addressbook-fr/part2/addressbook.cpp
index 2315dc52e0..503cf90ada 100644
--- a/examples/tutorials/addressbook-fr/part2/addressbook.cpp
+++ b/examples/tutorials/addressbook-fr/part2/addressbook.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part2/addressbook.h b/examples/tutorials/addressbook-fr/part2/addressbook.h
index 9e1938c744..c2cc341d60 100644
--- a/examples/tutorials/addressbook-fr/part2/addressbook.h
+++ b/examples/tutorials/addressbook-fr/part2/addressbook.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part2/main.cpp b/examples/tutorials/addressbook-fr/part2/main.cpp
index 5ef2a510b7..09562a2d2b 100644
--- a/examples/tutorials/addressbook-fr/part2/main.cpp
+++ b/examples/tutorials/addressbook-fr/part2/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part3/addressbook.cpp b/examples/tutorials/addressbook-fr/part3/addressbook.cpp
index b594c8daa5..d83d31b08f 100644
--- a/examples/tutorials/addressbook-fr/part3/addressbook.cpp
+++ b/examples/tutorials/addressbook-fr/part3/addressbook.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part3/addressbook.h b/examples/tutorials/addressbook-fr/part3/addressbook.h
index 5d208af0eb..5c6f398ba0 100644
--- a/examples/tutorials/addressbook-fr/part3/addressbook.h
+++ b/examples/tutorials/addressbook-fr/part3/addressbook.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part3/main.cpp b/examples/tutorials/addressbook-fr/part3/main.cpp
index a97c279b64..663fbb7d09 100644
--- a/examples/tutorials/addressbook-fr/part3/main.cpp
+++ b/examples/tutorials/addressbook-fr/part3/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part4/addressbook.cpp b/examples/tutorials/addressbook-fr/part4/addressbook.cpp
index 1ef7396fe8..45999d4710 100644
--- a/examples/tutorials/addressbook-fr/part4/addressbook.cpp
+++ b/examples/tutorials/addressbook-fr/part4/addressbook.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part4/addressbook.h b/examples/tutorials/addressbook-fr/part4/addressbook.h
index 6cfe3d2cce..ddf03c217e 100644
--- a/examples/tutorials/addressbook-fr/part4/addressbook.h
+++ b/examples/tutorials/addressbook-fr/part4/addressbook.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part4/main.cpp b/examples/tutorials/addressbook-fr/part4/main.cpp
index a97c279b64..663fbb7d09 100644
--- a/examples/tutorials/addressbook-fr/part4/main.cpp
+++ b/examples/tutorials/addressbook-fr/part4/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part5/addressbook.cpp b/examples/tutorials/addressbook-fr/part5/addressbook.cpp
index b7739f7c58..63aac8495e 100644
--- a/examples/tutorials/addressbook-fr/part5/addressbook.cpp
+++ b/examples/tutorials/addressbook-fr/part5/addressbook.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part5/addressbook.h b/examples/tutorials/addressbook-fr/part5/addressbook.h
index 7bdea0af5f..5d58952037 100644
--- a/examples/tutorials/addressbook-fr/part5/addressbook.h
+++ b/examples/tutorials/addressbook-fr/part5/addressbook.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part5/finddialog.cpp b/examples/tutorials/addressbook-fr/part5/finddialog.cpp
index fa2c6a8683..fdeab4c4bb 100644
--- a/examples/tutorials/addressbook-fr/part5/finddialog.cpp
+++ b/examples/tutorials/addressbook-fr/part5/finddialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part5/finddialog.h b/examples/tutorials/addressbook-fr/part5/finddialog.h
index 59c369818c..2ebaef1d86 100644
--- a/examples/tutorials/addressbook-fr/part5/finddialog.h
+++ b/examples/tutorials/addressbook-fr/part5/finddialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part5/main.cpp b/examples/tutorials/addressbook-fr/part5/main.cpp
index a97c279b64..663fbb7d09 100644
--- a/examples/tutorials/addressbook-fr/part5/main.cpp
+++ b/examples/tutorials/addressbook-fr/part5/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part6/addressbook.cpp b/examples/tutorials/addressbook-fr/part6/addressbook.cpp
index 0e9b5ff8e9..ff2756d4bb 100644
--- a/examples/tutorials/addressbook-fr/part6/addressbook.cpp
+++ b/examples/tutorials/addressbook-fr/part6/addressbook.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part6/addressbook.h b/examples/tutorials/addressbook-fr/part6/addressbook.h
index f1a5c48976..59a8b9951d 100644
--- a/examples/tutorials/addressbook-fr/part6/addressbook.h
+++ b/examples/tutorials/addressbook-fr/part6/addressbook.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part6/finddialog.cpp b/examples/tutorials/addressbook-fr/part6/finddialog.cpp
index bdbae59107..686af08c71 100644
--- a/examples/tutorials/addressbook-fr/part6/finddialog.cpp
+++ b/examples/tutorials/addressbook-fr/part6/finddialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part6/finddialog.h b/examples/tutorials/addressbook-fr/part6/finddialog.h
index 3b845edcb4..86a33bbb72 100644
--- a/examples/tutorials/addressbook-fr/part6/finddialog.h
+++ b/examples/tutorials/addressbook-fr/part6/finddialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part6/main.cpp b/examples/tutorials/addressbook-fr/part6/main.cpp
index a97c279b64..663fbb7d09 100644
--- a/examples/tutorials/addressbook-fr/part6/main.cpp
+++ b/examples/tutorials/addressbook-fr/part6/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part7/addressbook.cpp b/examples/tutorials/addressbook-fr/part7/addressbook.cpp
index 4e97296832..a958108885 100644
--- a/examples/tutorials/addressbook-fr/part7/addressbook.cpp
+++ b/examples/tutorials/addressbook-fr/part7/addressbook.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part7/addressbook.h b/examples/tutorials/addressbook-fr/part7/addressbook.h
index 34daca70ec..eb18cdc955 100644
--- a/examples/tutorials/addressbook-fr/part7/addressbook.h
+++ b/examples/tutorials/addressbook-fr/part7/addressbook.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part7/finddialog.cpp b/examples/tutorials/addressbook-fr/part7/finddialog.cpp
index bdbae59107..686af08c71 100644
--- a/examples/tutorials/addressbook-fr/part7/finddialog.cpp
+++ b/examples/tutorials/addressbook-fr/part7/finddialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part7/finddialog.h b/examples/tutorials/addressbook-fr/part7/finddialog.h
index 3b845edcb4..86a33bbb72 100644
--- a/examples/tutorials/addressbook-fr/part7/finddialog.h
+++ b/examples/tutorials/addressbook-fr/part7/finddialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook-fr/part7/main.cpp b/examples/tutorials/addressbook-fr/part7/main.cpp
index a97c279b64..663fbb7d09 100644
--- a/examples/tutorials/addressbook-fr/part7/main.cpp
+++ b/examples/tutorials/addressbook-fr/part7/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/README b/examples/tutorials/addressbook/README
index 5f364d909c..39753b4b25 100644
--- a/examples/tutorials/addressbook/README
+++ b/examples/tutorials/addressbook/README
@@ -38,5 +38,3 @@ You can do this by typing the following at the command line:
qmake -spec macx-xcode
Then open the generated Xcode project in Xcode and build it.
-
-Feel free to send comments about the tutorial to qt-info@nokia.com.
diff --git a/examples/tutorials/addressbook/part1/addressbook.cpp b/examples/tutorials/addressbook/part1/addressbook.cpp
index 34cbb6ffa1..119baacb37 100644
--- a/examples/tutorials/addressbook/part1/addressbook.cpp
+++ b/examples/tutorials/addressbook/part1/addressbook.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part1/addressbook.h b/examples/tutorials/addressbook/part1/addressbook.h
index 7bc525dd75..0bcd93e3bb 100644
--- a/examples/tutorials/addressbook/part1/addressbook.h
+++ b/examples/tutorials/addressbook/part1/addressbook.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part1/main.cpp b/examples/tutorials/addressbook/part1/main.cpp
index 5ef2a510b7..09562a2d2b 100644
--- a/examples/tutorials/addressbook/part1/main.cpp
+++ b/examples/tutorials/addressbook/part1/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part2/addressbook.cpp b/examples/tutorials/addressbook/part2/addressbook.cpp
index 2cf44e0b1d..1bd97d4b5b 100644
--- a/examples/tutorials/addressbook/part2/addressbook.cpp
+++ b/examples/tutorials/addressbook/part2/addressbook.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part2/addressbook.h b/examples/tutorials/addressbook/part2/addressbook.h
index 9e1938c744..c2cc341d60 100644
--- a/examples/tutorials/addressbook/part2/addressbook.h
+++ b/examples/tutorials/addressbook/part2/addressbook.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part2/main.cpp b/examples/tutorials/addressbook/part2/main.cpp
index 5ef2a510b7..09562a2d2b 100644
--- a/examples/tutorials/addressbook/part2/main.cpp
+++ b/examples/tutorials/addressbook/part2/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part3/addressbook.cpp b/examples/tutorials/addressbook/part3/addressbook.cpp
index b3daed2801..9a4c845dee 100644
--- a/examples/tutorials/addressbook/part3/addressbook.cpp
+++ b/examples/tutorials/addressbook/part3/addressbook.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part3/addressbook.h b/examples/tutorials/addressbook/part3/addressbook.h
index 5d208af0eb..5c6f398ba0 100644
--- a/examples/tutorials/addressbook/part3/addressbook.h
+++ b/examples/tutorials/addressbook/part3/addressbook.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part3/main.cpp b/examples/tutorials/addressbook/part3/main.cpp
index a97c279b64..663fbb7d09 100644
--- a/examples/tutorials/addressbook/part3/main.cpp
+++ b/examples/tutorials/addressbook/part3/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part4/addressbook.cpp b/examples/tutorials/addressbook/part4/addressbook.cpp
index 064cae9231..bb0c2543b1 100644
--- a/examples/tutorials/addressbook/part4/addressbook.cpp
+++ b/examples/tutorials/addressbook/part4/addressbook.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part4/addressbook.h b/examples/tutorials/addressbook/part4/addressbook.h
index 6cfe3d2cce..ddf03c217e 100644
--- a/examples/tutorials/addressbook/part4/addressbook.h
+++ b/examples/tutorials/addressbook/part4/addressbook.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part4/main.cpp b/examples/tutorials/addressbook/part4/main.cpp
index a97c279b64..663fbb7d09 100644
--- a/examples/tutorials/addressbook/part4/main.cpp
+++ b/examples/tutorials/addressbook/part4/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part5/addressbook.cpp b/examples/tutorials/addressbook/part5/addressbook.cpp
index 6fffe4072c..49dc67edf0 100644
--- a/examples/tutorials/addressbook/part5/addressbook.cpp
+++ b/examples/tutorials/addressbook/part5/addressbook.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part5/addressbook.h b/examples/tutorials/addressbook/part5/addressbook.h
index 7bdea0af5f..5d58952037 100644
--- a/examples/tutorials/addressbook/part5/addressbook.h
+++ b/examples/tutorials/addressbook/part5/addressbook.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part5/finddialog.cpp b/examples/tutorials/addressbook/part5/finddialog.cpp
index fa2c6a8683..fdeab4c4bb 100644
--- a/examples/tutorials/addressbook/part5/finddialog.cpp
+++ b/examples/tutorials/addressbook/part5/finddialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part5/finddialog.h b/examples/tutorials/addressbook/part5/finddialog.h
index 59c369818c..2ebaef1d86 100644
--- a/examples/tutorials/addressbook/part5/finddialog.h
+++ b/examples/tutorials/addressbook/part5/finddialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part5/main.cpp b/examples/tutorials/addressbook/part5/main.cpp
index a97c279b64..663fbb7d09 100644
--- a/examples/tutorials/addressbook/part5/main.cpp
+++ b/examples/tutorials/addressbook/part5/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part6/addressbook.cpp b/examples/tutorials/addressbook/part6/addressbook.cpp
index 39106ab2da..5159a419a9 100644
--- a/examples/tutorials/addressbook/part6/addressbook.cpp
+++ b/examples/tutorials/addressbook/part6/addressbook.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part6/addressbook.h b/examples/tutorials/addressbook/part6/addressbook.h
index f1a5c48976..59a8b9951d 100644
--- a/examples/tutorials/addressbook/part6/addressbook.h
+++ b/examples/tutorials/addressbook/part6/addressbook.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part6/finddialog.cpp b/examples/tutorials/addressbook/part6/finddialog.cpp
index bdbae59107..686af08c71 100644
--- a/examples/tutorials/addressbook/part6/finddialog.cpp
+++ b/examples/tutorials/addressbook/part6/finddialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part6/finddialog.h b/examples/tutorials/addressbook/part6/finddialog.h
index 3b845edcb4..86a33bbb72 100644
--- a/examples/tutorials/addressbook/part6/finddialog.h
+++ b/examples/tutorials/addressbook/part6/finddialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part6/main.cpp b/examples/tutorials/addressbook/part6/main.cpp
index a97c279b64..663fbb7d09 100644
--- a/examples/tutorials/addressbook/part6/main.cpp
+++ b/examples/tutorials/addressbook/part6/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part7/addressbook.cpp b/examples/tutorials/addressbook/part7/addressbook.cpp
index 2bfc81a042..2ebb04555f 100644
--- a/examples/tutorials/addressbook/part7/addressbook.cpp
+++ b/examples/tutorials/addressbook/part7/addressbook.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part7/addressbook.h b/examples/tutorials/addressbook/part7/addressbook.h
index 34daca70ec..eb18cdc955 100644
--- a/examples/tutorials/addressbook/part7/addressbook.h
+++ b/examples/tutorials/addressbook/part7/addressbook.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part7/finddialog.cpp b/examples/tutorials/addressbook/part7/finddialog.cpp
index bdbae59107..686af08c71 100644
--- a/examples/tutorials/addressbook/part7/finddialog.cpp
+++ b/examples/tutorials/addressbook/part7/finddialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part7/finddialog.h b/examples/tutorials/addressbook/part7/finddialog.h
index 3b845edcb4..86a33bbb72 100644
--- a/examples/tutorials/addressbook/part7/finddialog.h
+++ b/examples/tutorials/addressbook/part7/finddialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/addressbook/part7/main.cpp b/examples/tutorials/addressbook/part7/main.cpp
index a97c279b64..663fbb7d09 100644
--- a/examples/tutorials/addressbook/part7/main.cpp
+++ b/examples/tutorials/addressbook/part7/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/gettingStarted/gsQt/part1/main.cpp b/examples/tutorials/gettingStarted/gsQt/part1/main.cpp
index d3e29b4205..fb45689cc7 100644
--- a/examples/tutorials/gettingStarted/gsQt/part1/main.cpp
+++ b/examples/tutorials/gettingStarted/gsQt/part1/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/gettingStarted/gsQt/part2/main.cpp b/examples/tutorials/gettingStarted/gsQt/part2/main.cpp
index e76be0f456..93f14a25bb 100644
--- a/examples/tutorials/gettingStarted/gsQt/part2/main.cpp
+++ b/examples/tutorials/gettingStarted/gsQt/part2/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/gettingStarted/gsQt/part3/main.cpp b/examples/tutorials/gettingStarted/gsQt/part3/main.cpp
index 98091b0190..4967f6db2f 100644
--- a/examples/tutorials/gettingStarted/gsQt/part3/main.cpp
+++ b/examples/tutorials/gettingStarted/gsQt/part3/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/gettingStarted/gsQt/part4/main.cpp b/examples/tutorials/gettingStarted/gsQt/part4/main.cpp
index 6bb95c9c3a..ca4e7dcbfb 100644
--- a/examples/tutorials/gettingStarted/gsQt/part4/main.cpp
+++ b/examples/tutorials/gettingStarted/gsQt/part4/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/gettingStarted/gsQt/part5/main.cpp b/examples/tutorials/gettingStarted/gsQt/part5/main.cpp
index 71caf03b64..6d87ca7ba6 100644
--- a/examples/tutorials/gettingStarted/gsQt/part5/main.cpp
+++ b/examples/tutorials/gettingStarted/gsQt/part5/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/1_readonly/main.cpp b/examples/tutorials/modelview/1_readonly/main.cpp
index 37b541168e..2b9a5c7a32 100644
--- a/examples/tutorials/modelview/1_readonly/main.cpp
+++ b/examples/tutorials/modelview/1_readonly/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/1_readonly/mymodel.cpp b/examples/tutorials/modelview/1_readonly/mymodel.cpp
index 30a5af1e83..513c64d578 100644
--- a/examples/tutorials/modelview/1_readonly/mymodel.cpp
+++ b/examples/tutorials/modelview/1_readonly/mymodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/1_readonly/mymodel.h b/examples/tutorials/modelview/1_readonly/mymodel.h
index 3bb69d8e6f..b4ff23d9c7 100644
--- a/examples/tutorials/modelview/1_readonly/mymodel.h
+++ b/examples/tutorials/modelview/1_readonly/mymodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/2_formatting/main.cpp b/examples/tutorials/modelview/2_formatting/main.cpp
index 37b541168e..2b9a5c7a32 100644
--- a/examples/tutorials/modelview/2_formatting/main.cpp
+++ b/examples/tutorials/modelview/2_formatting/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/2_formatting/mymodel.cpp b/examples/tutorials/modelview/2_formatting/mymodel.cpp
index 8c713101cd..2ad4448e57 100644
--- a/examples/tutorials/modelview/2_formatting/mymodel.cpp
+++ b/examples/tutorials/modelview/2_formatting/mymodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/2_formatting/mymodel.h b/examples/tutorials/modelview/2_formatting/mymodel.h
index ea36923e19..d146f8c49d 100644
--- a/examples/tutorials/modelview/2_formatting/mymodel.h
+++ b/examples/tutorials/modelview/2_formatting/mymodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/3_changingmodel/main.cpp b/examples/tutorials/modelview/3_changingmodel/main.cpp
index a11f74dddf..0a4f559170 100644
--- a/examples/tutorials/modelview/3_changingmodel/main.cpp
+++ b/examples/tutorials/modelview/3_changingmodel/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/3_changingmodel/mymodel.cpp b/examples/tutorials/modelview/3_changingmodel/mymodel.cpp
index 24798c0431..a446017344 100644
--- a/examples/tutorials/modelview/3_changingmodel/mymodel.cpp
+++ b/examples/tutorials/modelview/3_changingmodel/mymodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/3_changingmodel/mymodel.h b/examples/tutorials/modelview/3_changingmodel/mymodel.h
index da03df25fe..5bcf893e34 100644
--- a/examples/tutorials/modelview/3_changingmodel/mymodel.h
+++ b/examples/tutorials/modelview/3_changingmodel/mymodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/4_headers/main.cpp b/examples/tutorials/modelview/4_headers/main.cpp
index e435b4a0f7..a3ce65e94f 100644
--- a/examples/tutorials/modelview/4_headers/main.cpp
+++ b/examples/tutorials/modelview/4_headers/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/4_headers/mymodel.cpp b/examples/tutorials/modelview/4_headers/mymodel.cpp
index f312bf19fb..4a91f6c541 100644
--- a/examples/tutorials/modelview/4_headers/mymodel.cpp
+++ b/examples/tutorials/modelview/4_headers/mymodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/4_headers/mymodel.h b/examples/tutorials/modelview/4_headers/mymodel.h
index 385d02a0d7..fcc657035b 100644
--- a/examples/tutorials/modelview/4_headers/mymodel.h
+++ b/examples/tutorials/modelview/4_headers/mymodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/5_edit/main.cpp b/examples/tutorials/modelview/5_edit/main.cpp
index 3160aa2257..0e10352554 100644
--- a/examples/tutorials/modelview/5_edit/main.cpp
+++ b/examples/tutorials/modelview/5_edit/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/5_edit/mainwindow.cpp b/examples/tutorials/modelview/5_edit/mainwindow.cpp
index 6285ab9274..e2e13562cf 100644
--- a/examples/tutorials/modelview/5_edit/mainwindow.cpp
+++ b/examples/tutorials/modelview/5_edit/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/5_edit/mainwindow.h b/examples/tutorials/modelview/5_edit/mainwindow.h
index a76d76fa1c..2ab42289e1 100644
--- a/examples/tutorials/modelview/5_edit/mainwindow.h
+++ b/examples/tutorials/modelview/5_edit/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/5_edit/mymodel.cpp b/examples/tutorials/modelview/5_edit/mymodel.cpp
index 32d4bad104..214a5b7cde 100644
--- a/examples/tutorials/modelview/5_edit/mymodel.cpp
+++ b/examples/tutorials/modelview/5_edit/mymodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/5_edit/mymodel.h b/examples/tutorials/modelview/5_edit/mymodel.h
index 050bbf097a..63ed4b8d46 100644
--- a/examples/tutorials/modelview/5_edit/mymodel.h
+++ b/examples/tutorials/modelview/5_edit/mymodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/6_treeview/main.cpp b/examples/tutorials/modelview/6_treeview/main.cpp
index 3160aa2257..0e10352554 100644
--- a/examples/tutorials/modelview/6_treeview/main.cpp
+++ b/examples/tutorials/modelview/6_treeview/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/6_treeview/mainwindow.cpp b/examples/tutorials/modelview/6_treeview/mainwindow.cpp
index 71ee7f29c8..aea18c11d6 100644
--- a/examples/tutorials/modelview/6_treeview/mainwindow.cpp
+++ b/examples/tutorials/modelview/6_treeview/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/6_treeview/mainwindow.h b/examples/tutorials/modelview/6_treeview/mainwindow.h
index 9dd9508651..aab299ca6f 100644
--- a/examples/tutorials/modelview/6_treeview/mainwindow.h
+++ b/examples/tutorials/modelview/6_treeview/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/7_selections/main.cpp b/examples/tutorials/modelview/7_selections/main.cpp
index 3160aa2257..0e10352554 100644
--- a/examples/tutorials/modelview/7_selections/main.cpp
+++ b/examples/tutorials/modelview/7_selections/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/7_selections/mainwindow.cpp b/examples/tutorials/modelview/7_selections/mainwindow.cpp
index d0f678f4b9..99ecaf9da6 100644
--- a/examples/tutorials/modelview/7_selections/mainwindow.cpp
+++ b/examples/tutorials/modelview/7_selections/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/modelview/7_selections/mainwindow.h b/examples/tutorials/modelview/7_selections/mainwindow.h
index ee938ffa93..076d56d179 100644
--- a/examples/tutorials/modelview/7_selections/mainwindow.h
+++ b/examples/tutorials/modelview/7_selections/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/threads/clock/clockthread.cpp b/examples/tutorials/threads/clock/clockthread.cpp
index 795c5f6de2..dccf4446ef 100644
--- a/examples/tutorials/threads/clock/clockthread.cpp
+++ b/examples/tutorials/threads/clock/clockthread.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/threads/clock/clockthread.h b/examples/tutorials/threads/clock/clockthread.h
index e1d4b3141b..e33b38fca4 100644
--- a/examples/tutorials/threads/clock/clockthread.h
+++ b/examples/tutorials/threads/clock/clockthread.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/threads/clock/main.cpp b/examples/tutorials/threads/clock/main.cpp
index 6f98576eb4..78c27440d6 100644
--- a/examples/tutorials/threads/clock/main.cpp
+++ b/examples/tutorials/threads/clock/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/threads/helloconcurrent/helloconcurrent.cpp b/examples/tutorials/threads/helloconcurrent/helloconcurrent.cpp
index 93713c9f54..02aed98c1d 100644
--- a/examples/tutorials/threads/helloconcurrent/helloconcurrent.cpp
+++ b/examples/tutorials/threads/helloconcurrent/helloconcurrent.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,11 +33,14 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QtCore>
+#include <QtConcurrent>
+
/*
says hello from main thread and secondary thread using QtConcurrent
*/
diff --git a/examples/tutorials/threads/helloconcurrent/helloconcurrent.pro b/examples/tutorials/threads/helloconcurrent/helloconcurrent.pro
index fb3cd0b394..1941666755 100644
--- a/examples/tutorials/threads/helloconcurrent/helloconcurrent.pro
+++ b/examples/tutorials/threads/helloconcurrent/helloconcurrent.pro
@@ -1,4 +1,5 @@
QT -= gui
+QT += concurrent
CONFIG += console
CONFIG -= app_bundle
diff --git a/examples/tutorials/threads/hellothread/hellothread.cpp b/examples/tutorials/threads/hellothread/hellothread.cpp
index 932c10f119..5c6bbac1ed 100644
--- a/examples/tutorials/threads/hellothread/hellothread.cpp
+++ b/examples/tutorials/threads/hellothread/hellothread.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/threads/hellothread/hellothread.h b/examples/tutorials/threads/hellothread/hellothread.h
index 35345697b4..9b0a0199fc 100644
--- a/examples/tutorials/threads/hellothread/hellothread.h
+++ b/examples/tutorials/threads/hellothread/hellothread.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/threads/hellothread/main.cpp b/examples/tutorials/threads/hellothread/main.cpp
index 1606c4302e..2f89b5394f 100644
--- a/examples/tutorials/threads/hellothread/main.cpp
+++ b/examples/tutorials/threads/hellothread/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/threads/hellothreadpool/hellothreadpool.cpp b/examples/tutorials/threads/hellothreadpool/hellothreadpool.cpp
index 14f7d0eccb..9cf1351b54 100644
--- a/examples/tutorials/threads/hellothreadpool/hellothreadpool.cpp
+++ b/examples/tutorials/threads/hellothreadpool/hellothreadpool.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/threads/movedobject/main.cpp b/examples/tutorials/threads/movedobject/main.cpp
index 2b1e082b5d..7a8da3a3df 100644
--- a/examples/tutorials/threads/movedobject/main.cpp
+++ b/examples/tutorials/threads/movedobject/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/threads/movedobject/thread.cpp b/examples/tutorials/threads/movedobject/thread.cpp
index 797dcaf4d0..a53351e491 100644
--- a/examples/tutorials/threads/movedobject/thread.cpp
+++ b/examples/tutorials/threads/movedobject/thread.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/threads/movedobject/thread.h b/examples/tutorials/threads/movedobject/thread.h
index 68291cc11d..77a76b7bb5 100644
--- a/examples/tutorials/threads/movedobject/thread.h
+++ b/examples/tutorials/threads/movedobject/thread.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/threads/movedobject/workerobject.cpp b/examples/tutorials/threads/movedobject/workerobject.cpp
index e45a70f6a9..5f63086b80 100644
--- a/examples/tutorials/threads/movedobject/workerobject.cpp
+++ b/examples/tutorials/threads/movedobject/workerobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/threads/movedobject/workerobject.h b/examples/tutorials/threads/movedobject/workerobject.h
index ae7d8ee4ef..e19ab01bfb 100644
--- a/examples/tutorials/threads/movedobject/workerobject.h
+++ b/examples/tutorials/threads/movedobject/workerobject.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/threads/threads.pro b/examples/tutorials/threads/threads.pro
index 64392f8088..a95eccaaa0 100644
--- a/examples/tutorials/threads/threads.pro
+++ b/examples/tutorials/threads/threads.pro
@@ -2,8 +2,9 @@ TEMPLATE = subdirs
SUBDIRS = hellothread \
hellothreadpool \
- helloconcurrent \
clock \
movedobject
+contains(QT_CONFIG, concurrent): SUBDIRS += helloconcurrent
+
QT += widgets
diff --git a/examples/tutorials/widgets/childwidget/main.cpp b/examples/tutorials/widgets/childwidget/main.cpp
index c1a23140aa..e00e7d9fba 100644
--- a/examples/tutorials/widgets/childwidget/main.cpp
+++ b/examples/tutorials/widgets/childwidget/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/widgets/nestedlayouts/main.cpp b/examples/tutorials/widgets/nestedlayouts/main.cpp
index f8a3d3788a..21e3d754a5 100644
--- a/examples/tutorials/widgets/nestedlayouts/main.cpp
+++ b/examples/tutorials/widgets/nestedlayouts/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/widgets/toplevel/main.cpp b/examples/tutorials/widgets/toplevel/main.cpp
index b6fd4a46da..8f6f8e8042 100644
--- a/examples/tutorials/widgets/toplevel/main.cpp
+++ b/examples/tutorials/widgets/toplevel/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/tutorials/widgets/windowlayout/main.cpp b/examples/tutorials/widgets/windowlayout/main.cpp
index d41a49f5d3..87c2a9355e 100644
--- a/examples/tutorials/widgets/windowlayout/main.cpp
+++ b/examples/tutorials/widgets/windowlayout/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/_copyright.txt b/examples/webkit/webkit-guide/_copyright.txt
index e545ac3d90..198140cdeb 100644
--- a/examples/webkit/webkit-guide/_copyright.txt
+++ b/examples/webkit/webkit-guide/_copyright.txt
@@ -2,8 +2,7 @@
This file is part of _PACKAGE_NAME_
-Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
+Copyright (c) 2012 Nokia Corporation and/or its subsidiary(-ies).
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/_image_assets.htm b/examples/webkit/webkit-guide/_image_assets.htm
index 5640e2c3c4..5f27cfa7e8 100644
--- a/examples/webkit/webkit-guide/_image_assets.htm
+++ b/examples/webkit/webkit-guide/_image_assets.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/anim_accord.htm b/examples/webkit/webkit-guide/anim_accord.htm
index 9f2cf55ef3..5d6f388198 100644
--- a/examples/webkit/webkit-guide/anim_accord.htm
+++ b/examples/webkit/webkit-guide/anim_accord.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/anim_demo-rotate.htm b/examples/webkit/webkit-guide/anim_demo-rotate.htm
index 5856e302d6..5231432f10 100644
--- a/examples/webkit/webkit-guide/anim_demo-rotate.htm
+++ b/examples/webkit/webkit-guide/anim_demo-rotate.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/anim_demo-scale.htm b/examples/webkit/webkit-guide/anim_demo-scale.htm
index b1abf409d7..67465055dd 100644
--- a/examples/webkit/webkit-guide/anim_demo-scale.htm
+++ b/examples/webkit/webkit-guide/anim_demo-scale.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/anim_demo-skew.htm b/examples/webkit/webkit-guide/anim_demo-skew.htm
index 07c1ae3ef5..cb61e48f1e 100644
--- a/examples/webkit/webkit-guide/anim_demo-skew.htm
+++ b/examples/webkit/webkit-guide/anim_demo-skew.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/anim_gallery.htm b/examples/webkit/webkit-guide/anim_gallery.htm
index 11a1141c2a..2bfc798ff3 100644
--- a/examples/webkit/webkit-guide/anim_gallery.htm
+++ b/examples/webkit/webkit-guide/anim_gallery.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/anim_panel.htm b/examples/webkit/webkit-guide/anim_panel.htm
index 04dabeef89..3d55a28abd 100644
--- a/examples/webkit/webkit-guide/anim_panel.htm
+++ b/examples/webkit/webkit-guide/anim_panel.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/anim_pulse.htm b/examples/webkit/webkit-guide/anim_pulse.htm
index 15a47db9b1..548a8e7690 100644
--- a/examples/webkit/webkit-guide/anim_pulse.htm
+++ b/examples/webkit/webkit-guide/anim_pulse.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/anim_skew.htm b/examples/webkit/webkit-guide/anim_skew.htm
index 89e5983403..5121bfefbd 100644
--- a/examples/webkit/webkit-guide/anim_skew.htm
+++ b/examples/webkit/webkit-guide/anim_skew.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/anim_slide1.htm b/examples/webkit/webkit-guide/anim_slide1.htm
index 949e041ea1..028ee04014 100644
--- a/examples/webkit/webkit-guide/anim_slide1.htm
+++ b/examples/webkit/webkit-guide/anim_slide1.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/anim_slide2.htm b/examples/webkit/webkit-guide/anim_slide2.htm
index 0d11d9b9ca..cc2080f7ad 100644
--- a/examples/webkit/webkit-guide/anim_slide2.htm
+++ b/examples/webkit/webkit-guide/anim_slide2.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/anim_slide3.htm b/examples/webkit/webkit-guide/anim_slide3.htm
index 14ffdde283..4808a2d5a2 100644
--- a/examples/webkit/webkit-guide/anim_slide3.htm
+++ b/examples/webkit/webkit-guide/anim_slide3.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/anim_tabbedSkew.htm b/examples/webkit/webkit-guide/anim_tabbedSkew.htm
index b648797c61..7c59a4fef0 100644
--- a/examples/webkit/webkit-guide/anim_tabbedSkew.htm
+++ b/examples/webkit/webkit-guide/anim_tabbedSkew.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/css/anim_accord.css b/examples/webkit/webkit-guide/css/anim_accord.css
index 8d1f8d97d8..a65e8bd113 100644
--- a/examples/webkit/webkit-guide/css/anim_accord.css
+++ b/examples/webkit/webkit-guide/css/anim_accord.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/anim_demo-rotate.css b/examples/webkit/webkit-guide/css/anim_demo-rotate.css
index 8043791011..652cbc68eb 100644
--- a/examples/webkit/webkit-guide/css/anim_demo-rotate.css
+++ b/examples/webkit/webkit-guide/css/anim_demo-rotate.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/anim_demo-scale.css b/examples/webkit/webkit-guide/css/anim_demo-scale.css
index 30469222ee..6c92ea3163 100644
--- a/examples/webkit/webkit-guide/css/anim_demo-scale.css
+++ b/examples/webkit/webkit-guide/css/anim_demo-scale.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/anim_demo-skew.css b/examples/webkit/webkit-guide/css/anim_demo-skew.css
index 4c2843a7ba..098ad829f9 100644
--- a/examples/webkit/webkit-guide/css/anim_demo-skew.css
+++ b/examples/webkit/webkit-guide/css/anim_demo-skew.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/anim_gallery.css b/examples/webkit/webkit-guide/css/anim_gallery.css
index cdab9f1b11..c19d429d2d 100644
--- a/examples/webkit/webkit-guide/css/anim_gallery.css
+++ b/examples/webkit/webkit-guide/css/anim_gallery.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/anim_panel.css b/examples/webkit/webkit-guide/css/anim_panel.css
index 9b57fa4b06..c243598e6d 100644
--- a/examples/webkit/webkit-guide/css/anim_panel.css
+++ b/examples/webkit/webkit-guide/css/anim_panel.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/anim_pulse.css b/examples/webkit/webkit-guide/css/anim_pulse.css
index e376f3fafb..ba775a597e 100644
--- a/examples/webkit/webkit-guide/css/anim_pulse.css
+++ b/examples/webkit/webkit-guide/css/anim_pulse.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/anim_skew.css b/examples/webkit/webkit-guide/css/anim_skew.css
index 5074feadac..1e1eec251c 100644
--- a/examples/webkit/webkit-guide/css/anim_skew.css
+++ b/examples/webkit/webkit-guide/css/anim_skew.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/anim_slide.css b/examples/webkit/webkit-guide/css/anim_slide.css
index e5a8831265..d833bf7b0e 100644
--- a/examples/webkit/webkit-guide/css/anim_slide.css
+++ b/examples/webkit/webkit-guide/css/anim_slide.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/anim_tabbedSkew.css b/examples/webkit/webkit-guide/css/anim_tabbedSkew.css
index 1809dc95d2..c1750b5538 100644
--- a/examples/webkit/webkit-guide/css/anim_tabbedSkew.css
+++ b/examples/webkit/webkit-guide/css/anim_tabbedSkew.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/css3_backgrounds.css b/examples/webkit/webkit-guide/css/css3_backgrounds.css
index e251758a26..638c70585d 100644
--- a/examples/webkit/webkit-guide/css/css3_backgrounds.css
+++ b/examples/webkit/webkit-guide/css/css3_backgrounds.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/css3_border-img.css b/examples/webkit/webkit-guide/css/css3_border-img.css
index b5ce67a2e7..3a5fd34400 100644
--- a/examples/webkit/webkit-guide/css/css3_border-img.css
+++ b/examples/webkit/webkit-guide/css/css3_border-img.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/css3_grad-radial.css b/examples/webkit/webkit-guide/css/css3_grad-radial.css
index 3278cca18e..9f4ffad8ed 100644
--- a/examples/webkit/webkit-guide/css/css3_grad-radial.css
+++ b/examples/webkit/webkit-guide/css/css3_grad-radial.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/css3_gradientBack.css b/examples/webkit/webkit-guide/css/css3_gradientBack.css
index c2dc65deba..18844a739e 100644
--- a/examples/webkit/webkit-guide/css/css3_gradientBack.css
+++ b/examples/webkit/webkit-guide/css/css3_gradientBack.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/css3_gradientBackStop.css b/examples/webkit/webkit-guide/css/css3_gradientBackStop.css
index 5138d0312a..37f0855d2a 100644
--- a/examples/webkit/webkit-guide/css/css3_gradientBackStop.css
+++ b/examples/webkit/webkit-guide/css/css3_gradientBackStop.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/css3_gradientButton.css b/examples/webkit/webkit-guide/css/css3_gradientButton.css
index f11265271a..c36d2ecdd1 100644
--- a/examples/webkit/webkit-guide/css/css3_gradientButton.css
+++ b/examples/webkit/webkit-guide/css/css3_gradientButton.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/css3_mask-grad.css b/examples/webkit/webkit-guide/css/css3_mask-grad.css
index 515904615a..daaafea923 100644
--- a/examples/webkit/webkit-guide/css/css3_mask-grad.css
+++ b/examples/webkit/webkit-guide/css/css3_mask-grad.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/css3_mask-img.css b/examples/webkit/webkit-guide/css/css3_mask-img.css
index f77527949c..917e746a0d 100644
--- a/examples/webkit/webkit-guide/css/css3_mask-img.css
+++ b/examples/webkit/webkit-guide/css/css3_mask-img.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/css3_multicol.css b/examples/webkit/webkit-guide/css/css3_multicol.css
index 0ea9fd461d..02cc431276 100644
--- a/examples/webkit/webkit-guide/css/css3_multicol.css
+++ b/examples/webkit/webkit-guide/css/css3_multicol.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/css3_reflect.css b/examples/webkit/webkit-guide/css/css3_reflect.css
index 1286b15c23..0a2f29dc82 100644
--- a/examples/webkit/webkit-guide/css/css3_reflect.css
+++ b/examples/webkit/webkit-guide/css/css3_reflect.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/css3_scroll.css b/examples/webkit/webkit-guide/css/css3_scroll.css
index 85c4c3c19e..f3106014a7 100644
--- a/examples/webkit/webkit-guide/css/css3_scroll.css
+++ b/examples/webkit/webkit-guide/css/css3_scroll.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/css3_sel-nth.css b/examples/webkit/webkit-guide/css/css3_sel-nth.css
index 24dc19f8cd..3f4c6f955b 100644
--- a/examples/webkit/webkit-guide/css/css3_sel-nth.css
+++ b/examples/webkit/webkit-guide/css/css3_sel-nth.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/css3_shadow.css b/examples/webkit/webkit-guide/css/css3_shadow.css
index c65c560075..48cc5a2eaf 100644
--- a/examples/webkit/webkit-guide/css/css3_shadow.css
+++ b/examples/webkit/webkit-guide/css/css3_shadow.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/css3_shadowBlur.css b/examples/webkit/webkit-guide/css/css3_shadowBlur.css
index bad17238e1..582aa18cd1 100644
--- a/examples/webkit/webkit-guide/css/css3_shadowBlur.css
+++ b/examples/webkit/webkit-guide/css/css3_shadowBlur.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/css3_text-overflow.css b/examples/webkit/webkit-guide/css/css3_text-overflow.css
index 064bb14024..9f53f92eaa 100644
--- a/examples/webkit/webkit-guide/css/css3_text-overflow.css
+++ b/examples/webkit/webkit-guide/css/css3_text-overflow.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/css3_text-shadow.css b/examples/webkit/webkit-guide/css/css3_text-shadow.css
index 3f0b8fab96..de142a4e6f 100644
--- a/examples/webkit/webkit-guide/css/css3_text-shadow.css
+++ b/examples/webkit/webkit-guide/css/css3_text-shadow.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/css3_text-stroke.css b/examples/webkit/webkit-guide/css/css3_text-stroke.css
index c005d77b6f..8f388e06e8 100644
--- a/examples/webkit/webkit-guide/css/css3_text-stroke.css
+++ b/examples/webkit/webkit-guide/css/css3_text-stroke.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/form_tapper.css b/examples/webkit/webkit-guide/css/form_tapper.css
index ee7ff6cb5e..f255337202 100644
--- a/examples/webkit/webkit-guide/css/form_tapper.css
+++ b/examples/webkit/webkit-guide/css/form_tapper.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/form_toggler.css b/examples/webkit/webkit-guide/css/form_toggler.css
index e290ce1261..b62b334b59 100644
--- a/examples/webkit/webkit-guide/css/form_toggler.css
+++ b/examples/webkit/webkit-guide/css/form_toggler.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/layout_link-fmt.css b/examples/webkit/webkit-guide/css/layout_link-fmt.css
index f78ed0e46c..80496ad86c 100644
--- a/examples/webkit/webkit-guide/css/layout_link-fmt.css
+++ b/examples/webkit/webkit-guide/css/layout_link-fmt.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/layout_tbl-keyhole.css b/examples/webkit/webkit-guide/css/layout_tbl-keyhole.css
index 8362a0b4d8..80122dde95 100644
--- a/examples/webkit/webkit-guide/css/layout_tbl-keyhole.css
+++ b/examples/webkit/webkit-guide/css/layout_tbl-keyhole.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/mob_condjs.css b/examples/webkit/webkit-guide/css/mob_condjs.css
index f97ebbce42..ca18c98019 100644
--- a/examples/webkit/webkit-guide/css/mob_condjs.css
+++ b/examples/webkit/webkit-guide/css/mob_condjs.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/mob_mediaquery.css b/examples/webkit/webkit-guide/css/mob_mediaquery.css
index 04382461d1..2b54e73b5e 100644
--- a/examples/webkit/webkit-guide/css/mob_mediaquery.css
+++ b/examples/webkit/webkit-guide/css/mob_mediaquery.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/mobile.css b/examples/webkit/webkit-guide/css/mobile.css
index 68623f05af..bf4d97bd60 100644
--- a/examples/webkit/webkit-guide/css/mobile.css
+++ b/examples/webkit/webkit-guide/css/mobile.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/mq_desktop.css b/examples/webkit/webkit-guide/css/mq_desktop.css
index 3fc1f37b31..fc5d7762f3 100644
--- a/examples/webkit/webkit-guide/css/mq_desktop.css
+++ b/examples/webkit/webkit-guide/css/mq_desktop.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/mq_mobile.css b/examples/webkit/webkit-guide/css/mq_mobile.css
index 6eaa3e9083..2596b36d14 100644
--- a/examples/webkit/webkit-guide/css/mq_mobile.css
+++ b/examples/webkit/webkit-guide/css/mq_mobile.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/mq_touch.css b/examples/webkit/webkit-guide/css/mq_touch.css
index 61a387ca80..3891cfec0d 100644
--- a/examples/webkit/webkit-guide/css/mq_touch.css
+++ b/examples/webkit/webkit-guide/css/mq_touch.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/mqlayout_desktop.css b/examples/webkit/webkit-guide/css/mqlayout_desktop.css
index 78f8b52e46..6a33059924 100644
--- a/examples/webkit/webkit-guide/css/mqlayout_desktop.css
+++ b/examples/webkit/webkit-guide/css/mqlayout_desktop.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/mqlayout_mobile.css b/examples/webkit/webkit-guide/css/mqlayout_mobile.css
index 37801c240e..a0b649c295 100644
--- a/examples/webkit/webkit-guide/css/mqlayout_mobile.css
+++ b/examples/webkit/webkit-guide/css/mqlayout_mobile.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/mqlayout_touch.css b/examples/webkit/webkit-guide/css/mqlayout_touch.css
index 15081b5535..9862b5313b 100644
--- a/examples/webkit/webkit-guide/css/mqlayout_touch.css
+++ b/examples/webkit/webkit-guide/css/mqlayout_touch.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css/storage.css b/examples/webkit/webkit-guide/css/storage.css
index 9881708139..34aaef3ef0 100644
--- a/examples/webkit/webkit-guide/css/storage.css
+++ b/examples/webkit/webkit-guide/css/storage.css
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/css3_backgrounds.htm b/examples/webkit/webkit-guide/css3_backgrounds.htm
index f1f9306f4f..6a927527c5 100644
--- a/examples/webkit/webkit-guide/css3_backgrounds.htm
+++ b/examples/webkit/webkit-guide/css3_backgrounds.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/css3_border-img.htm b/examples/webkit/webkit-guide/css3_border-img.htm
index b0522ac81f..3a1679033e 100644
--- a/examples/webkit/webkit-guide/css3_border-img.htm
+++ b/examples/webkit/webkit-guide/css3_border-img.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/css3_grad-radial.htm b/examples/webkit/webkit-guide/css3_grad-radial.htm
index 70598287b7..59e1fb5fa3 100644
--- a/examples/webkit/webkit-guide/css3_grad-radial.htm
+++ b/examples/webkit/webkit-guide/css3_grad-radial.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/css3_gradientBack.htm b/examples/webkit/webkit-guide/css3_gradientBack.htm
index c8b46f3385..08d70816ed 100644
--- a/examples/webkit/webkit-guide/css3_gradientBack.htm
+++ b/examples/webkit/webkit-guide/css3_gradientBack.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/css3_gradientBackStop.htm b/examples/webkit/webkit-guide/css3_gradientBackStop.htm
index f62548954f..0475444ecd 100644
--- a/examples/webkit/webkit-guide/css3_gradientBackStop.htm
+++ b/examples/webkit/webkit-guide/css3_gradientBackStop.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/css3_gradientButton.htm b/examples/webkit/webkit-guide/css3_gradientButton.htm
index 031b0201a3..efa7312ee3 100644
--- a/examples/webkit/webkit-guide/css3_gradientButton.htm
+++ b/examples/webkit/webkit-guide/css3_gradientButton.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/css3_mask-grad.htm b/examples/webkit/webkit-guide/css3_mask-grad.htm
index 7a8523786a..6c92b0d4ec 100644
--- a/examples/webkit/webkit-guide/css3_mask-grad.htm
+++ b/examples/webkit/webkit-guide/css3_mask-grad.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/css3_mask-img.htm b/examples/webkit/webkit-guide/css3_mask-img.htm
index dd11220394..0036673c9a 100644
--- a/examples/webkit/webkit-guide/css3_mask-img.htm
+++ b/examples/webkit/webkit-guide/css3_mask-img.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/css3_multicol.htm b/examples/webkit/webkit-guide/css3_multicol.htm
index 04e4672be7..8fead4f88d 100644
--- a/examples/webkit/webkit-guide/css3_multicol.htm
+++ b/examples/webkit/webkit-guide/css3_multicol.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/css3_reflect.htm b/examples/webkit/webkit-guide/css3_reflect.htm
index 950f741091..70a148f4a3 100644
--- a/examples/webkit/webkit-guide/css3_reflect.htm
+++ b/examples/webkit/webkit-guide/css3_reflect.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/css3_scroll.htm b/examples/webkit/webkit-guide/css3_scroll.htm
index 472b1bb363..95ce3d3f06 100644
--- a/examples/webkit/webkit-guide/css3_scroll.htm
+++ b/examples/webkit/webkit-guide/css3_scroll.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/css3_sel-nth.htm b/examples/webkit/webkit-guide/css3_sel-nth.htm
index 16731736ab..30d441bcb6 100644
--- a/examples/webkit/webkit-guide/css3_sel-nth.htm
+++ b/examples/webkit/webkit-guide/css3_sel-nth.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/css3_shadow.htm b/examples/webkit/webkit-guide/css3_shadow.htm
index 1321cbf920..0661a21caa 100644
--- a/examples/webkit/webkit-guide/css3_shadow.htm
+++ b/examples/webkit/webkit-guide/css3_shadow.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/css3_text-overflow.htm b/examples/webkit/webkit-guide/css3_text-overflow.htm
index 52984c84a2..e4663abdf0 100644
--- a/examples/webkit/webkit-guide/css3_text-overflow.htm
+++ b/examples/webkit/webkit-guide/css3_text-overflow.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/css3_text-shadow.htm b/examples/webkit/webkit-guide/css3_text-shadow.htm
index 714e884094..f579eb1234 100644
--- a/examples/webkit/webkit-guide/css3_text-shadow.htm
+++ b/examples/webkit/webkit-guide/css3_text-shadow.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/css3_text-stroke.htm b/examples/webkit/webkit-guide/css3_text-stroke.htm
index 851bfef63b..67453e0c03 100644
--- a/examples/webkit/webkit-guide/css3_text-stroke.htm
+++ b/examples/webkit/webkit-guide/css3_text-stroke.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/form_tapper.htm b/examples/webkit/webkit-guide/form_tapper.htm
index e90ffadbc2..b82c7fbc00 100644
--- a/examples/webkit/webkit-guide/form_tapper.htm
+++ b/examples/webkit/webkit-guide/form_tapper.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/form_toggler.htm b/examples/webkit/webkit-guide/form_toggler.htm
index 597b75a2e9..0f4ee4803f 100644
--- a/examples/webkit/webkit-guide/form_toggler.htm
+++ b/examples/webkit/webkit-guide/form_toggler.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/js/anim_accord.js b/examples/webkit/webkit-guide/js/anim_accord.js
index 7d4a0ffad8..373d0e042e 100755
--- a/examples/webkit/webkit-guide/js/anim_accord.js
+++ b/examples/webkit/webkit-guide/js/anim_accord.js
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/js/anim_gallery.js b/examples/webkit/webkit-guide/js/anim_gallery.js
index d853b0b0fe..ff19776daf 100755
--- a/examples/webkit/webkit-guide/js/anim_gallery.js
+++ b/examples/webkit/webkit-guide/js/anim_gallery.js
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/js/anim_panel.js b/examples/webkit/webkit-guide/js/anim_panel.js
index f4795da2a0..534b09d50a 100755
--- a/examples/webkit/webkit-guide/js/anim_panel.js
+++ b/examples/webkit/webkit-guide/js/anim_panel.js
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/js/anim_skew.js b/examples/webkit/webkit-guide/js/anim_skew.js
index 7b412b32fa..9a603b8031 100755
--- a/examples/webkit/webkit-guide/js/anim_skew.js
+++ b/examples/webkit/webkit-guide/js/anim_skew.js
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/js/css3_backgrounds.js b/examples/webkit/webkit-guide/js/css3_backgrounds.js
index f591bae032..d99be53279 100755
--- a/examples/webkit/webkit-guide/js/css3_backgrounds.js
+++ b/examples/webkit/webkit-guide/js/css3_backgrounds.js
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/js/css3_border-img.js b/examples/webkit/webkit-guide/js/css3_border-img.js
index b3d075c960..ac057f0a81 100755
--- a/examples/webkit/webkit-guide/js/css3_border-img.js
+++ b/examples/webkit/webkit-guide/js/css3_border-img.js
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/js/css3_grad-radial.js b/examples/webkit/webkit-guide/js/css3_grad-radial.js
index 63377375ea..b7d1ec0a1a 100755
--- a/examples/webkit/webkit-guide/js/css3_grad-radial.js
+++ b/examples/webkit/webkit-guide/js/css3_grad-radial.js
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/js/css3_mask-grad.js b/examples/webkit/webkit-guide/js/css3_mask-grad.js
index 987934458e..8ec96586b8 100755
--- a/examples/webkit/webkit-guide/js/css3_mask-grad.js
+++ b/examples/webkit/webkit-guide/js/css3_mask-grad.js
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/js/css3_mask-img.js b/examples/webkit/webkit-guide/js/css3_mask-img.js
index b3d075c960..ac057f0a81 100755
--- a/examples/webkit/webkit-guide/js/css3_mask-img.js
+++ b/examples/webkit/webkit-guide/js/css3_mask-img.js
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/js/css3_text-overflow.js b/examples/webkit/webkit-guide/js/css3_text-overflow.js
index a84496f5c2..792a56b200 100755
--- a/examples/webkit/webkit-guide/js/css3_text-overflow.js
+++ b/examples/webkit/webkit-guide/js/css3_text-overflow.js
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/js/form_tapper.js b/examples/webkit/webkit-guide/js/form_tapper.js
index e9bf7cfd65..a382e1f930 100755
--- a/examples/webkit/webkit-guide/js/form_tapper.js
+++ b/examples/webkit/webkit-guide/js/form_tapper.js
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/js/mob_condjs.js b/examples/webkit/webkit-guide/js/mob_condjs.js
index c79e040b2c..ad721e9ff7 100755
--- a/examples/webkit/webkit-guide/js/mob_condjs.js
+++ b/examples/webkit/webkit-guide/js/mob_condjs.js
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/js/mobile.js b/examples/webkit/webkit-guide/js/mobile.js
index 5054786f49..e6554ec35d 100755
--- a/examples/webkit/webkit-guide/js/mobile.js
+++ b/examples/webkit/webkit-guide/js/mobile.js
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/js/storage.js b/examples/webkit/webkit-guide/js/storage.js
index 1bfc21e2ea..89f2a3bcd6 100755
--- a/examples/webkit/webkit-guide/js/storage.js
+++ b/examples/webkit/webkit-guide/js/storage.js
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt WebKit module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/webkit/webkit-guide/layout_link-fmt.htm b/examples/webkit/webkit-guide/layout_link-fmt.htm
index 2bef2c4525..e3a5c419c4 100644
--- a/examples/webkit/webkit-guide/layout_link-fmt.htm
+++ b/examples/webkit/webkit-guide/layout_link-fmt.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/layout_tbl-keyhole.htm b/examples/webkit/webkit-guide/layout_tbl-keyhole.htm
index 56e6f87f64..6826f7e940 100644
--- a/examples/webkit/webkit-guide/layout_tbl-keyhole.htm
+++ b/examples/webkit/webkit-guide/layout_tbl-keyhole.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/mob_condjs.htm b/examples/webkit/webkit-guide/mob_condjs.htm
index 657f6d62a6..3d48168801 100644
--- a/examples/webkit/webkit-guide/mob_condjs.htm
+++ b/examples/webkit/webkit-guide/mob_condjs.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/mob_mediaquery.htm b/examples/webkit/webkit-guide/mob_mediaquery.htm
index c7b9794b0f..29f98bf50e 100644
--- a/examples/webkit/webkit-guide/mob_mediaquery.htm
+++ b/examples/webkit/webkit-guide/mob_mediaquery.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/webkit/webkit-guide/storage.htm b/examples/webkit/webkit-guide/storage.htm
index 33eb4dfad9..8d99a10a7d 100644
--- a/examples/webkit/webkit-guide/storage.htm
+++ b/examples/webkit/webkit-guide/storage.htm
@@ -3,7 +3,6 @@
This file is part of QtWebKit
Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-All rights reserved.
You may use this file under the terms of the BSD license as follows:
diff --git a/examples/widgets/analogclock/analogclock.cpp b/examples/widgets/analogclock/analogclock.cpp
index c9050b8a29..029ca1031a 100644
--- a/examples/widgets/analogclock/analogclock.cpp
+++ b/examples/widgets/analogclock/analogclock.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/analogclock/analogclock.h b/examples/widgets/analogclock/analogclock.h
index f5a3ebc5c8..f95a095712 100644
--- a/examples/widgets/analogclock/analogclock.h
+++ b/examples/widgets/analogclock/analogclock.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/analogclock/main.cpp b/examples/widgets/analogclock/main.cpp
index 6335a534f0..0efedc7acf 100644
--- a/examples/widgets/analogclock/main.cpp
+++ b/examples/widgets/analogclock/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/applicationicon/main.cpp b/examples/widgets/applicationicon/main.cpp
index 1c6e08959d..1314de1cbf 100644
--- a/examples/widgets/applicationicon/main.cpp
+++ b/examples/widgets/applicationicon/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/calculator/button.cpp b/examples/widgets/calculator/button.cpp
index 0d2293ce04..14c3ebe20d 100644
--- a/examples/widgets/calculator/button.cpp
+++ b/examples/widgets/calculator/button.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/calculator/button.h b/examples/widgets/calculator/button.h
index adfc0d74bc..50874ea574 100644
--- a/examples/widgets/calculator/button.h
+++ b/examples/widgets/calculator/button.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/calculator/calculator.cpp b/examples/widgets/calculator/calculator.cpp
index b4431297a1..ef2e8720d4 100644
--- a/examples/widgets/calculator/calculator.cpp
+++ b/examples/widgets/calculator/calculator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/calculator/calculator.h b/examples/widgets/calculator/calculator.h
index c637dbccbe..6727d9b733 100644
--- a/examples/widgets/calculator/calculator.h
+++ b/examples/widgets/calculator/calculator.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/calculator/main.cpp b/examples/widgets/calculator/main.cpp
index d51e8430d0..e4f591aabe 100644
--- a/examples/widgets/calculator/main.cpp
+++ b/examples/widgets/calculator/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/calendarwidget/main.cpp b/examples/widgets/calendarwidget/main.cpp
index ab0b7b63e3..8c4e2573d5 100644
--- a/examples/widgets/calendarwidget/main.cpp
+++ b/examples/widgets/calendarwidget/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/calendarwidget/window.cpp b/examples/widgets/calendarwidget/window.cpp
index 8d21a0b75c..0a59640327 100644
--- a/examples/widgets/calendarwidget/window.cpp
+++ b/examples/widgets/calendarwidget/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/calendarwidget/window.h b/examples/widgets/calendarwidget/window.h
index 2c18ebdf9b..68587400d3 100644
--- a/examples/widgets/calendarwidget/window.h
+++ b/examples/widgets/calendarwidget/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/charactermap/characterwidget.cpp b/examples/widgets/charactermap/characterwidget.cpp
index 86b744f78b..7ce5d61cf7 100644
--- a/examples/widgets/charactermap/characterwidget.cpp
+++ b/examples/widgets/charactermap/characterwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/charactermap/characterwidget.h b/examples/widgets/charactermap/characterwidget.h
index 4e531b6d84..d523c13011 100644
--- a/examples/widgets/charactermap/characterwidget.h
+++ b/examples/widgets/charactermap/characterwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/charactermap/main.cpp b/examples/widgets/charactermap/main.cpp
index bfe61dcd01..09a923477c 100644
--- a/examples/widgets/charactermap/main.cpp
+++ b/examples/widgets/charactermap/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/charactermap/mainwindow.cpp b/examples/widgets/charactermap/mainwindow.cpp
index e2fa72fa3f..44eb30708d 100644
--- a/examples/widgets/charactermap/mainwindow.cpp
+++ b/examples/widgets/charactermap/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/charactermap/mainwindow.h b/examples/widgets/charactermap/mainwindow.h
index a77d6f1d4d..478df1dc06 100644
--- a/examples/widgets/charactermap/mainwindow.h
+++ b/examples/widgets/charactermap/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/codeeditor/codeeditor.cpp b/examples/widgets/codeeditor/codeeditor.cpp
index a7093f4698..2a2750c035 100644
--- a/examples/widgets/codeeditor/codeeditor.cpp
+++ b/examples/widgets/codeeditor/codeeditor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/codeeditor/codeeditor.h b/examples/widgets/codeeditor/codeeditor.h
index aed1c4758e..71de46ed61 100644
--- a/examples/widgets/codeeditor/codeeditor.h
+++ b/examples/widgets/codeeditor/codeeditor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/codeeditor/main.cpp b/examples/widgets/codeeditor/main.cpp
index cd8729f3d6..8c60c26f06 100644
--- a/examples/widgets/codeeditor/main.cpp
+++ b/examples/widgets/codeeditor/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/digitalclock/digitalclock.cpp b/examples/widgets/digitalclock/digitalclock.cpp
index 7564026e90..4f11286114 100644
--- a/examples/widgets/digitalclock/digitalclock.cpp
+++ b/examples/widgets/digitalclock/digitalclock.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/digitalclock/digitalclock.h b/examples/widgets/digitalclock/digitalclock.h
index 4b4e9ff801..791633f12d 100644
--- a/examples/widgets/digitalclock/digitalclock.h
+++ b/examples/widgets/digitalclock/digitalclock.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/digitalclock/main.cpp b/examples/widgets/digitalclock/main.cpp
index 1a865235a4..d28c7d36f2 100644
--- a/examples/widgets/digitalclock/main.cpp
+++ b/examples/widgets/digitalclock/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/elidedlabel/elidedlabel.cpp b/examples/widgets/elidedlabel/elidedlabel.cpp
index 1d00552bf9..5f58bbcca8 100644
--- a/examples/widgets/elidedlabel/elidedlabel.cpp
+++ b/examples/widgets/elidedlabel/elidedlabel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/elidedlabel/elidedlabel.h b/examples/widgets/elidedlabel/elidedlabel.h
index 807fcc469a..2c19589bc2 100644
--- a/examples/widgets/elidedlabel/elidedlabel.h
+++ b/examples/widgets/elidedlabel/elidedlabel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/elidedlabel/main.cpp b/examples/widgets/elidedlabel/main.cpp
index 666ee0cd59..a79284e729 100644
--- a/examples/widgets/elidedlabel/main.cpp
+++ b/examples/widgets/elidedlabel/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/elidedlabel/testwidget.cpp b/examples/widgets/elidedlabel/testwidget.cpp
index 4cfe9628a5..a60ed655a5 100644
--- a/examples/widgets/elidedlabel/testwidget.cpp
+++ b/examples/widgets/elidedlabel/testwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/elidedlabel/testwidget.h b/examples/widgets/elidedlabel/testwidget.h
index a71b510dbe..aff90e6ae2 100644
--- a/examples/widgets/elidedlabel/testwidget.h
+++ b/examples/widgets/elidedlabel/testwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/groupbox/main.cpp b/examples/widgets/groupbox/main.cpp
index 218d30316c..dcbf1c0449 100644
--- a/examples/widgets/groupbox/main.cpp
+++ b/examples/widgets/groupbox/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/groupbox/window.cpp b/examples/widgets/groupbox/window.cpp
index e135bd0a85..7436e2dfb6 100644
--- a/examples/widgets/groupbox/window.cpp
+++ b/examples/widgets/groupbox/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/groupbox/window.h b/examples/widgets/groupbox/window.h
index d4a9f3e53e..a88374b429 100644
--- a/examples/widgets/groupbox/window.h
+++ b/examples/widgets/groupbox/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/icons/iconpreviewarea.cpp b/examples/widgets/icons/iconpreviewarea.cpp
index 7a26ce5059..53391c7f4f 100644
--- a/examples/widgets/icons/iconpreviewarea.cpp
+++ b/examples/widgets/icons/iconpreviewarea.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/icons/iconpreviewarea.h b/examples/widgets/icons/iconpreviewarea.h
index 204f213a79..4c6bc92dbc 100644
--- a/examples/widgets/icons/iconpreviewarea.h
+++ b/examples/widgets/icons/iconpreviewarea.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/icons/iconsizespinbox.cpp b/examples/widgets/icons/iconsizespinbox.cpp
index 711ec641ee..bc3609ccb3 100644
--- a/examples/widgets/icons/iconsizespinbox.cpp
+++ b/examples/widgets/icons/iconsizespinbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/icons/iconsizespinbox.h b/examples/widgets/icons/iconsizespinbox.h
index 8adaf54103..c163c0f597 100644
--- a/examples/widgets/icons/iconsizespinbox.h
+++ b/examples/widgets/icons/iconsizespinbox.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/icons/imagedelegate.cpp b/examples/widgets/icons/imagedelegate.cpp
index 1c88f19429..b801fc2171 100644
--- a/examples/widgets/icons/imagedelegate.cpp
+++ b/examples/widgets/icons/imagedelegate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/icons/imagedelegate.h b/examples/widgets/icons/imagedelegate.h
index 1ffa920105..a07dc4b9ad 100644
--- a/examples/widgets/icons/imagedelegate.h
+++ b/examples/widgets/icons/imagedelegate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/icons/main.cpp b/examples/widgets/icons/main.cpp
index 18ff180690..e96d256e9b 100644
--- a/examples/widgets/icons/main.cpp
+++ b/examples/widgets/icons/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/icons/mainwindow.cpp b/examples/widgets/icons/mainwindow.cpp
index 02ea8dc6bb..da4458e9a9 100644
--- a/examples/widgets/icons/mainwindow.cpp
+++ b/examples/widgets/icons/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/icons/mainwindow.h b/examples/widgets/icons/mainwindow.h
index 2689b09bd2..8afaf9496e 100644
--- a/examples/widgets/icons/mainwindow.h
+++ b/examples/widgets/icons/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/imageviewer/imageviewer.cpp b/examples/widgets/imageviewer/imageviewer.cpp
index 0f07e7e23a..e0683e8acb 100644
--- a/examples/widgets/imageviewer/imageviewer.cpp
+++ b/examples/widgets/imageviewer/imageviewer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/imageviewer/imageviewer.h b/examples/widgets/imageviewer/imageviewer.h
index c2e4b7c81a..293946ea56 100644
--- a/examples/widgets/imageviewer/imageviewer.h
+++ b/examples/widgets/imageviewer/imageviewer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/imageviewer/imageviewer.pro b/examples/widgets/imageviewer/imageviewer.pro
index e3fea079bd..a8d92a6b18 100644
--- a/examples/widgets/imageviewer/imageviewer.pro
+++ b/examples/widgets/imageviewer/imageviewer.pro
@@ -9,10 +9,8 @@ sources.path = $$[QT_INSTALL_EXAMPLES]/qtbase/widgets/imageviewer
INSTALLS += target sources
-#Symbian has built-in component named imageviewer so we use different target
-
wince*: {
- DEPLOYMENT_PLUGIN += qjpeg qmng qgif
+ DEPLOYMENT_PLUGIN += qjpeg qgif
}
QT += widgets printsupport
diff --git a/examples/widgets/imageviewer/main.cpp b/examples/widgets/imageviewer/main.cpp
index b6c6877244..4d735d4c46 100644
--- a/examples/widgets/imageviewer/main.cpp
+++ b/examples/widgets/imageviewer/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/lineedits/main.cpp b/examples/widgets/lineedits/main.cpp
index 218d30316c..dcbf1c0449 100644
--- a/examples/widgets/lineedits/main.cpp
+++ b/examples/widgets/lineedits/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/lineedits/window.cpp b/examples/widgets/lineedits/window.cpp
index 0183dc59d3..7628132e5b 100644
--- a/examples/widgets/lineedits/window.cpp
+++ b/examples/widgets/lineedits/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/lineedits/window.h b/examples/widgets/lineedits/window.h
index b3f0c4b73c..82e5f9e965 100644
--- a/examples/widgets/lineedits/window.h
+++ b/examples/widgets/lineedits/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/movie/animation.gif b/examples/widgets/movie/animation.gif
new file mode 100644
index 0000000000..f674369efc
--- /dev/null
+++ b/examples/widgets/movie/animation.gif
Binary files differ
diff --git a/examples/widgets/movie/animation.mng b/examples/widgets/movie/animation.mng
deleted file mode 100644
index 12b688aac6..0000000000
--- a/examples/widgets/movie/animation.mng
+++ /dev/null
Binary files differ
diff --git a/examples/widgets/movie/main.cpp b/examples/widgets/movie/main.cpp
index 6b17eabd56..f0d36bc04e 100644
--- a/examples/widgets/movie/main.cpp
+++ b/examples/widgets/movie/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/movie/movie.pro b/examples/widgets/movie/movie.pro
index eb70d6d0b6..dd6e40b83c 100644
--- a/examples/widgets/movie/movie.pro
+++ b/examples/widgets/movie/movie.pro
@@ -4,16 +4,15 @@ SOURCES = main.cpp \
# install
target.path = $$[QT_INSTALL_EXAMPLES]/qtbase/widgets/movie
-sources.files = $$SOURCES $$HEADERS $$RESOURCES movie.pro animation.mng
+sources.files = $$SOURCES $$HEADERS $$RESOURCES movie.pro animation.gif
sources.path = $$[QT_INSTALL_EXAMPLES]/qtbase/widgets/movie
INSTALLS += target sources
wince*: {
- addFiles.files += *.mng
+ addFiles.files += *.gif
addFiles.path = .
DEPLOYMENT += addFiles
- DEPLOYMENT_PLUGIN += qmng
}
QT += widgets
diff --git a/examples/widgets/movie/movieplayer.cpp b/examples/widgets/movie/movieplayer.cpp
index b53a8112bd..885fbdd0c6 100644
--- a/examples/widgets/movie/movieplayer.cpp
+++ b/examples/widgets/movie/movieplayer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/movie/movieplayer.h b/examples/widgets/movie/movieplayer.h
index ad9dd553fe..f21fef5a92 100644
--- a/examples/widgets/movie/movieplayer.h
+++ b/examples/widgets/movie/movieplayer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/orientation/main.cpp b/examples/widgets/orientation/main.cpp
index 2abb59f224..d92ae0c16f 100644
--- a/examples/widgets/orientation/main.cpp
+++ b/examples/widgets/orientation/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/orientation/mainwindow.cpp b/examples/widgets/orientation/mainwindow.cpp
index ab20f6b67b..3acbef12f8 100644
--- a/examples/widgets/orientation/mainwindow.cpp
+++ b/examples/widgets/orientation/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/orientation/mainwindow.h b/examples/widgets/orientation/mainwindow.h
index ad325704b1..d0f1b07242 100644
--- a/examples/widgets/orientation/mainwindow.h
+++ b/examples/widgets/orientation/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/scribble/main.cpp b/examples/widgets/scribble/main.cpp
index bfe61dcd01..09a923477c 100644
--- a/examples/widgets/scribble/main.cpp
+++ b/examples/widgets/scribble/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/scribble/mainwindow.cpp b/examples/widgets/scribble/mainwindow.cpp
index 29fb61b422..4a59e93a61 100644
--- a/examples/widgets/scribble/mainwindow.cpp
+++ b/examples/widgets/scribble/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/scribble/mainwindow.h b/examples/widgets/scribble/mainwindow.h
index 40cee56df1..54144340f3 100644
--- a/examples/widgets/scribble/mainwindow.h
+++ b/examples/widgets/scribble/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/scribble/scribblearea.cpp b/examples/widgets/scribble/scribblearea.cpp
index 11271fdb47..281ee3facd 100644
--- a/examples/widgets/scribble/scribblearea.cpp
+++ b/examples/widgets/scribble/scribblearea.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/scribble/scribblearea.h b/examples/widgets/scribble/scribblearea.h
index 290a7fa404..c95cca7b8d 100644
--- a/examples/widgets/scribble/scribblearea.h
+++ b/examples/widgets/scribble/scribblearea.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/shapedclock/main.cpp b/examples/widgets/shapedclock/main.cpp
index e60d6fdf24..45ae5d14b7 100644
--- a/examples/widgets/shapedclock/main.cpp
+++ b/examples/widgets/shapedclock/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/shapedclock/shapedclock.cpp b/examples/widgets/shapedclock/shapedclock.cpp
index c7c43fc2bd..20b98d134d 100644
--- a/examples/widgets/shapedclock/shapedclock.cpp
+++ b/examples/widgets/shapedclock/shapedclock.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/shapedclock/shapedclock.h b/examples/widgets/shapedclock/shapedclock.h
index cad5f0cac1..b37ef69a8d 100644
--- a/examples/widgets/shapedclock/shapedclock.h
+++ b/examples/widgets/shapedclock/shapedclock.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/sliders/main.cpp b/examples/widgets/sliders/main.cpp
index 218d30316c..dcbf1c0449 100644
--- a/examples/widgets/sliders/main.cpp
+++ b/examples/widgets/sliders/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/sliders/slidersgroup.cpp b/examples/widgets/sliders/slidersgroup.cpp
index 7474e8bd8f..6091db99ed 100644
--- a/examples/widgets/sliders/slidersgroup.cpp
+++ b/examples/widgets/sliders/slidersgroup.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/sliders/slidersgroup.h b/examples/widgets/sliders/slidersgroup.h
index 8f89b09307..ea1939cbc7 100644
--- a/examples/widgets/sliders/slidersgroup.h
+++ b/examples/widgets/sliders/slidersgroup.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/sliders/window.cpp b/examples/widgets/sliders/window.cpp
index 9c775e88ee..ad4c4cb4d4 100644
--- a/examples/widgets/sliders/window.cpp
+++ b/examples/widgets/sliders/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/sliders/window.h b/examples/widgets/sliders/window.h
index cd747b2b46..382f953e8d 100644
--- a/examples/widgets/sliders/window.h
+++ b/examples/widgets/sliders/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/softkeys/main.cpp b/examples/widgets/softkeys/main.cpp
index 96cb208c63..8d30783556 100644
--- a/examples/widgets/softkeys/main.cpp
+++ b/examples/widgets/softkeys/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/softkeys/softkeys.cpp b/examples/widgets/softkeys/softkeys.cpp
index 142c7dd85f..2b16ebf3b7 100644
--- a/examples/widgets/softkeys/softkeys.cpp
+++ b/examples/widgets/softkeys/softkeys.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/softkeys/softkeys.h b/examples/widgets/softkeys/softkeys.h
index f7a9187e72..36991d35ed 100644
--- a/examples/widgets/softkeys/softkeys.h
+++ b/examples/widgets/softkeys/softkeys.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/spinboxes/main.cpp b/examples/widgets/spinboxes/main.cpp
index 218d30316c..dcbf1c0449 100644
--- a/examples/widgets/spinboxes/main.cpp
+++ b/examples/widgets/spinboxes/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/spinboxes/window.cpp b/examples/widgets/spinboxes/window.cpp
index d3ff7b78d4..1e01386d31 100644
--- a/examples/widgets/spinboxes/window.cpp
+++ b/examples/widgets/spinboxes/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/spinboxes/window.h b/examples/widgets/spinboxes/window.h
index 9cd35b236c..17f18e710d 100644
--- a/examples/widgets/spinboxes/window.h
+++ b/examples/widgets/spinboxes/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/styles/main.cpp b/examples/widgets/styles/main.cpp
index 6086c363b7..65d8459542 100644
--- a/examples/widgets/styles/main.cpp
+++ b/examples/widgets/styles/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/styles/norwegianwoodstyle.cpp b/examples/widgets/styles/norwegianwoodstyle.cpp
index 94161f4381..d609c54eb3 100644
--- a/examples/widgets/styles/norwegianwoodstyle.cpp
+++ b/examples/widgets/styles/norwegianwoodstyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/styles/norwegianwoodstyle.h b/examples/widgets/styles/norwegianwoodstyle.h
index 5d8b5fc291..99a206e753 100644
--- a/examples/widgets/styles/norwegianwoodstyle.h
+++ b/examples/widgets/styles/norwegianwoodstyle.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/styles/widgetgallery.cpp b/examples/widgets/styles/widgetgallery.cpp
index 30b69c63ed..d00f689183 100644
--- a/examples/widgets/styles/widgetgallery.cpp
+++ b/examples/widgets/styles/widgetgallery.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/styles/widgetgallery.h b/examples/widgets/styles/widgetgallery.h
index d58896be5e..93b5cce984 100644
--- a/examples/widgets/styles/widgetgallery.h
+++ b/examples/widgets/styles/widgetgallery.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/stylesheet/main.cpp b/examples/widgets/stylesheet/main.cpp
index dbd91e73b8..0ddd63c298 100644
--- a/examples/widgets/stylesheet/main.cpp
+++ b/examples/widgets/stylesheet/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/stylesheet/mainwindow.cpp b/examples/widgets/stylesheet/mainwindow.cpp
index 74096d372f..0732d78347 100644
--- a/examples/widgets/stylesheet/mainwindow.cpp
+++ b/examples/widgets/stylesheet/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/stylesheet/mainwindow.h b/examples/widgets/stylesheet/mainwindow.h
index 673c43da6d..2ccaf9ba02 100644
--- a/examples/widgets/stylesheet/mainwindow.h
+++ b/examples/widgets/stylesheet/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/stylesheet/stylesheeteditor.cpp b/examples/widgets/stylesheet/stylesheeteditor.cpp
index 94da628fdf..88f5100d12 100644
--- a/examples/widgets/stylesheet/stylesheeteditor.cpp
+++ b/examples/widgets/stylesheet/stylesheeteditor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/stylesheet/stylesheeteditor.h b/examples/widgets/stylesheet/stylesheeteditor.h
index ca42a852b6..36b18d91fb 100644
--- a/examples/widgets/stylesheet/stylesheeteditor.h
+++ b/examples/widgets/stylesheet/stylesheeteditor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tablet/main.cpp b/examples/widgets/tablet/main.cpp
index 98f8791472..bca3076cfc 100644
--- a/examples/widgets/tablet/main.cpp
+++ b/examples/widgets/tablet/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tablet/mainwindow.cpp b/examples/widgets/tablet/mainwindow.cpp
index cb40198d3b..3b87346583 100644
--- a/examples/widgets/tablet/mainwindow.cpp
+++ b/examples/widgets/tablet/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tablet/mainwindow.h b/examples/widgets/tablet/mainwindow.h
index e92aebfaf9..dcab683b4e 100644
--- a/examples/widgets/tablet/mainwindow.h
+++ b/examples/widgets/tablet/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tablet/tabletapplication.cpp b/examples/widgets/tablet/tabletapplication.cpp
index 79aafcb943..68038d2f84 100644
--- a/examples/widgets/tablet/tabletapplication.cpp
+++ b/examples/widgets/tablet/tabletapplication.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tablet/tabletapplication.h b/examples/widgets/tablet/tabletapplication.h
index 07edd3edd5..4f981b9074 100644
--- a/examples/widgets/tablet/tabletapplication.h
+++ b/examples/widgets/tablet/tabletapplication.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tablet/tabletcanvas.cpp b/examples/widgets/tablet/tabletcanvas.cpp
index 8bb9556c12..184de57c64 100644
--- a/examples/widgets/tablet/tabletcanvas.cpp
+++ b/examples/widgets/tablet/tabletcanvas.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tablet/tabletcanvas.h b/examples/widgets/tablet/tabletcanvas.h
index c81478f8a8..c778578928 100644
--- a/examples/widgets/tablet/tabletcanvas.h
+++ b/examples/widgets/tablet/tabletcanvas.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tetrix/main.cpp b/examples/widgets/tetrix/main.cpp
index 2fb0a99045..fdf76a294c 100644
--- a/examples/widgets/tetrix/main.cpp
+++ b/examples/widgets/tetrix/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tetrix/tetrixboard.cpp b/examples/widgets/tetrix/tetrixboard.cpp
index 46858e3ee2..ebc001826a 100644
--- a/examples/widgets/tetrix/tetrixboard.cpp
+++ b/examples/widgets/tetrix/tetrixboard.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tetrix/tetrixboard.h b/examples/widgets/tetrix/tetrixboard.h
index f842c0feef..6a511325c5 100644
--- a/examples/widgets/tetrix/tetrixboard.h
+++ b/examples/widgets/tetrix/tetrixboard.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tetrix/tetrixpiece.cpp b/examples/widgets/tetrix/tetrixpiece.cpp
index 49b5aaaace..26da0fca5b 100644
--- a/examples/widgets/tetrix/tetrixpiece.cpp
+++ b/examples/widgets/tetrix/tetrixpiece.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tetrix/tetrixpiece.h b/examples/widgets/tetrix/tetrixpiece.h
index f162e9f4ba..884b848e77 100644
--- a/examples/widgets/tetrix/tetrixpiece.h
+++ b/examples/widgets/tetrix/tetrixpiece.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tetrix/tetrixwindow.cpp b/examples/widgets/tetrix/tetrixwindow.cpp
index d33830e883..a6cea3555b 100644
--- a/examples/widgets/tetrix/tetrixwindow.cpp
+++ b/examples/widgets/tetrix/tetrixwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tetrix/tetrixwindow.h b/examples/widgets/tetrix/tetrixwindow.h
index 10d16bac21..521b9cc7c4 100644
--- a/examples/widgets/tetrix/tetrixwindow.h
+++ b/examples/widgets/tetrix/tetrixwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tooltips/main.cpp b/examples/widgets/tooltips/main.cpp
index e5326286f1..c416eb19fd 100644
--- a/examples/widgets/tooltips/main.cpp
+++ b/examples/widgets/tooltips/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tooltips/shapeitem.cpp b/examples/widgets/tooltips/shapeitem.cpp
index 6c319e4f0e..c77df25119 100644
--- a/examples/widgets/tooltips/shapeitem.cpp
+++ b/examples/widgets/tooltips/shapeitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tooltips/shapeitem.h b/examples/widgets/tooltips/shapeitem.h
index b75ebb9bef..f0d71a7c30 100644
--- a/examples/widgets/tooltips/shapeitem.h
+++ b/examples/widgets/tooltips/shapeitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tooltips/sortingbox.cpp b/examples/widgets/tooltips/sortingbox.cpp
index 9d23669c97..7c72dc41c5 100644
--- a/examples/widgets/tooltips/sortingbox.cpp
+++ b/examples/widgets/tooltips/sortingbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/tooltips/sortingbox.h b/examples/widgets/tooltips/sortingbox.h
index f7e8297f3b..318a1c459e 100644
--- a/examples/widgets/tooltips/sortingbox.h
+++ b/examples/widgets/tooltips/sortingbox.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/validators/ledwidget.cpp b/examples/widgets/validators/ledwidget.cpp
index a637e36645..a5f0454494 100644
--- a/examples/widgets/validators/ledwidget.cpp
+++ b/examples/widgets/validators/ledwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/validators/ledwidget.h b/examples/widgets/validators/ledwidget.h
index 41033d7bb5..15bbeb23cd 100644
--- a/examples/widgets/validators/ledwidget.h
+++ b/examples/widgets/validators/ledwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/validators/localeselector.cpp b/examples/widgets/validators/localeselector.cpp
index cfd711f669..c367ca5d34 100644
--- a/examples/widgets/validators/localeselector.cpp
+++ b/examples/widgets/validators/localeselector.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/validators/localeselector.h b/examples/widgets/validators/localeselector.h
index 5c3bbac8b1..6cec8d3bac 100644
--- a/examples/widgets/validators/localeselector.h
+++ b/examples/widgets/validators/localeselector.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/validators/main.cpp b/examples/widgets/validators/main.cpp
index f8d5dec77b..85304b9138 100644
--- a/examples/widgets/validators/main.cpp
+++ b/examples/widgets/validators/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/wiggly/dialog.cpp b/examples/widgets/wiggly/dialog.cpp
index 9db53445fe..e808b77e87 100644
--- a/examples/widgets/wiggly/dialog.cpp
+++ b/examples/widgets/wiggly/dialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/wiggly/dialog.h b/examples/widgets/wiggly/dialog.h
index 0d3ece7a89..84167d9153 100644
--- a/examples/widgets/wiggly/dialog.h
+++ b/examples/widgets/wiggly/dialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/wiggly/main.cpp b/examples/widgets/wiggly/main.cpp
index c7f21f4b79..ccf50e7411 100644
--- a/examples/widgets/wiggly/main.cpp
+++ b/examples/widgets/wiggly/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/wiggly/wigglywidget.cpp b/examples/widgets/wiggly/wigglywidget.cpp
index afd8ea96a6..bf9a13cbca 100644
--- a/examples/widgets/wiggly/wigglywidget.cpp
+++ b/examples/widgets/wiggly/wigglywidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/wiggly/wigglywidget.h b/examples/widgets/wiggly/wigglywidget.h
index 26e17826fb..9dae9cfb2e 100644
--- a/examples/widgets/wiggly/wigglywidget.h
+++ b/examples/widgets/wiggly/wigglywidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/windowflags/controllerwindow.cpp b/examples/widgets/windowflags/controllerwindow.cpp
index 41505e8014..15d5bcf23b 100644
--- a/examples/widgets/windowflags/controllerwindow.cpp
+++ b/examples/widgets/windowflags/controllerwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/windowflags/controllerwindow.h b/examples/widgets/windowflags/controllerwindow.h
index 853ec29a08..7479fe8bee 100644
--- a/examples/widgets/windowflags/controllerwindow.h
+++ b/examples/widgets/windowflags/controllerwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/windowflags/main.cpp b/examples/widgets/windowflags/main.cpp
index 2d7cef12c5..1cb90f7031 100644
--- a/examples/widgets/windowflags/main.cpp
+++ b/examples/widgets/windowflags/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/windowflags/previewwindow.cpp b/examples/widgets/windowflags/previewwindow.cpp
index 4b129ef0d6..f8c297a41e 100644
--- a/examples/widgets/windowflags/previewwindow.cpp
+++ b/examples/widgets/windowflags/previewwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/widgets/windowflags/previewwindow.h b/examples/widgets/windowflags/previewwindow.h
index cec6614a0c..afe88957a0 100644
--- a/examples/widgets/windowflags/previewwindow.h
+++ b/examples/widgets/windowflags/previewwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/dombookmarks/main.cpp b/examples/xml/dombookmarks/main.cpp
index 4f38a08938..fd9003ff8e 100644
--- a/examples/xml/dombookmarks/main.cpp
+++ b/examples/xml/dombookmarks/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/dombookmarks/mainwindow.cpp b/examples/xml/dombookmarks/mainwindow.cpp
index 118bc96cf2..e4d05bf446 100644
--- a/examples/xml/dombookmarks/mainwindow.cpp
+++ b/examples/xml/dombookmarks/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/dombookmarks/mainwindow.h b/examples/xml/dombookmarks/mainwindow.h
index f6911b36f1..6ea5f52208 100644
--- a/examples/xml/dombookmarks/mainwindow.h
+++ b/examples/xml/dombookmarks/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/dombookmarks/xbeltree.cpp b/examples/xml/dombookmarks/xbeltree.cpp
index 32fbab6e6e..196338e2a6 100644
--- a/examples/xml/dombookmarks/xbeltree.cpp
+++ b/examples/xml/dombookmarks/xbeltree.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/dombookmarks/xbeltree.h b/examples/xml/dombookmarks/xbeltree.h
index 74bee7deac..49ebabe754 100644
--- a/examples/xml/dombookmarks/xbeltree.h
+++ b/examples/xml/dombookmarks/xbeltree.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/htmlinfo/main.cpp b/examples/xml/htmlinfo/main.cpp
index ef13609249..c1b46690d5 100644
--- a/examples/xml/htmlinfo/main.cpp
+++ b/examples/xml/htmlinfo/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/rsslisting/main.cpp b/examples/xml/rsslisting/main.cpp
index 7b0230f025..0b64759ef9 100644
--- a/examples/xml/rsslisting/main.cpp
+++ b/examples/xml/rsslisting/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/rsslisting/rsslisting.cpp b/examples/xml/rsslisting/rsslisting.cpp
index bfc44bc67c..cd6a595764 100644
--- a/examples/xml/rsslisting/rsslisting.cpp
+++ b/examples/xml/rsslisting/rsslisting.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/rsslisting/rsslisting.h b/examples/xml/rsslisting/rsslisting.h
index 960d51cafd..caaa839f69 100644
--- a/examples/xml/rsslisting/rsslisting.h
+++ b/examples/xml/rsslisting/rsslisting.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/saxbookmarks/main.cpp b/examples/xml/saxbookmarks/main.cpp
index 04717e79fd..00b88ff9d0 100644
--- a/examples/xml/saxbookmarks/main.cpp
+++ b/examples/xml/saxbookmarks/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/saxbookmarks/mainwindow.cpp b/examples/xml/saxbookmarks/mainwindow.cpp
index 29b99437e0..c68cea0259 100644
--- a/examples/xml/saxbookmarks/mainwindow.cpp
+++ b/examples/xml/saxbookmarks/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/saxbookmarks/mainwindow.h b/examples/xml/saxbookmarks/mainwindow.h
index dc8a4d0a6f..43248a7d46 100644
--- a/examples/xml/saxbookmarks/mainwindow.h
+++ b/examples/xml/saxbookmarks/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/saxbookmarks/xbelgenerator.cpp b/examples/xml/saxbookmarks/xbelgenerator.cpp
index e5d7e4aa9f..5f2a986b91 100644
--- a/examples/xml/saxbookmarks/xbelgenerator.cpp
+++ b/examples/xml/saxbookmarks/xbelgenerator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/saxbookmarks/xbelgenerator.h b/examples/xml/saxbookmarks/xbelgenerator.h
index cf17000381..7a93541856 100644
--- a/examples/xml/saxbookmarks/xbelgenerator.h
+++ b/examples/xml/saxbookmarks/xbelgenerator.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/saxbookmarks/xbelhandler.cpp b/examples/xml/saxbookmarks/xbelhandler.cpp
index 8266268fcd..36edd51773 100644
--- a/examples/xml/saxbookmarks/xbelhandler.cpp
+++ b/examples/xml/saxbookmarks/xbelhandler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/saxbookmarks/xbelhandler.h b/examples/xml/saxbookmarks/xbelhandler.h
index 27c973b788..41eb85f014 100644
--- a/examples/xml/saxbookmarks/xbelhandler.h
+++ b/examples/xml/saxbookmarks/xbelhandler.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/streambookmarks/main.cpp b/examples/xml/streambookmarks/main.cpp
index f0141e6bbd..995205b0fe 100644
--- a/examples/xml/streambookmarks/main.cpp
+++ b/examples/xml/streambookmarks/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/streambookmarks/mainwindow.cpp b/examples/xml/streambookmarks/mainwindow.cpp
index 85db5e84c1..daf41dec81 100644
--- a/examples/xml/streambookmarks/mainwindow.cpp
+++ b/examples/xml/streambookmarks/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/streambookmarks/mainwindow.h b/examples/xml/streambookmarks/mainwindow.h
index 8eb5b00fc5..c0044bf495 100644
--- a/examples/xml/streambookmarks/mainwindow.h
+++ b/examples/xml/streambookmarks/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/streambookmarks/xbelreader.cpp b/examples/xml/streambookmarks/xbelreader.cpp
index 30c783226d..1ab0bd58ed 100644
--- a/examples/xml/streambookmarks/xbelreader.cpp
+++ b/examples/xml/streambookmarks/xbelreader.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/streambookmarks/xbelreader.h b/examples/xml/streambookmarks/xbelreader.h
index 7807b54b67..9cebf10c0a 100644
--- a/examples/xml/streambookmarks/xbelreader.h
+++ b/examples/xml/streambookmarks/xbelreader.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/streambookmarks/xbelwriter.cpp b/examples/xml/streambookmarks/xbelwriter.cpp
index 43a391ceb7..3b3421cf19 100644
--- a/examples/xml/streambookmarks/xbelwriter.cpp
+++ b/examples/xml/streambookmarks/xbelwriter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/streambookmarks/xbelwriter.h b/examples/xml/streambookmarks/xbelwriter.h
index c0ceaf24b6..346ecaaaba 100644
--- a/examples/xml/streambookmarks/xbelwriter.h
+++ b/examples/xml/streambookmarks/xbelwriter.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/examples/xml/xmlstreamlint/main.cpp b/examples/xml/xmlstreamlint/main.cpp
index 2e9d8973da..265dfa4dd8 100644
--- a/examples/xml/xmlstreamlint/main.cpp
+++ b/examples/xml/xmlstreamlint/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/header.BSD b/header.BSD
index 6955c9ecc1..dbc7bf36d3 100644
--- a/header.BSD
+++ b/header.BSD
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the FOO module of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/header.FDL b/header.FDL
index 238e22df51..c1a7cdf4b3 100644
--- a/header.FDL
+++ b/header.FDL
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/header.LGPL b/header.LGPL
index 971b9a98f7..214f7b8192 100644
--- a/header.LGPL
+++ b/header.LGPL
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the FOO module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/header.LGPL-ONLY b/header.LGPL-ONLY
index ef11ac962e..38a6e26bd2 100644
--- a/header.LGPL-ONLY
+++ b/header.LGPL-ONLY
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the FOO module of the Qt Toolkit.
**
@@ -16,7 +15,8 @@
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** If you have questions regarding the use of this file, please contact
-** Nokia at qt-info@nokia.com.
+** us via http://www.qt-project.org/.
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/aix-g++-64/qplatformdefs.h b/mkspecs/aix-g++-64/qplatformdefs.h
index 517d928867..556281036f 100644
--- a/mkspecs/aix-g++-64/qplatformdefs.h
+++ b/mkspecs/aix-g++-64/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/aix-g++/qplatformdefs.h b/mkspecs/aix-g++/qplatformdefs.h
index 517d928867..556281036f 100644
--- a/mkspecs/aix-g++/qplatformdefs.h
+++ b/mkspecs/aix-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/aix-xlc-64/qplatformdefs.h b/mkspecs/aix-xlc-64/qplatformdefs.h
index 517d928867..556281036f 100644
--- a/mkspecs/aix-xlc-64/qplatformdefs.h
+++ b/mkspecs/aix-xlc-64/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/aix-xlc/qplatformdefs.h b/mkspecs/aix-xlc/qplatformdefs.h
index 517d928867..556281036f 100644
--- a/mkspecs/aix-xlc/qplatformdefs.h
+++ b/mkspecs/aix-xlc/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/common/aix/qplatformdefs.h b/mkspecs/common/aix/qplatformdefs.h
index 317ca7a7c5..76380646f0 100644
--- a/mkspecs/common/aix/qplatformdefs.h
+++ b/mkspecs/common/aix/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/common/c89/qplatformdefs.h b/mkspecs/common/c89/qplatformdefs.h
index f6dda15d0a..31cd2b5cdf 100644
--- a/mkspecs/common/c89/qplatformdefs.h
+++ b/mkspecs/common/c89/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/common/g++-macx.conf b/mkspecs/common/g++-macx.conf
index 22511573c1..acce2fe14e 100644
--- a/mkspecs/common/g++-macx.conf
+++ b/mkspecs/common/g++-macx.conf
@@ -16,9 +16,6 @@ QMAKE_LFLAGS_RELEASE_WITH_DEBUGINFO += -g $$QMAKE_CFLAGS_DWARF2
QMAKE_LFLAGS_STATIC_LIB += -all_load
-QMAKE_CFLAGS_X86_64 += -Xarch_x86_64 -mmacosx-version-min=10.5
-QMAKE_CFLAGS_PPC_64 += -Xarch_ppc64 -mmacosx-version-min=10.5
-
QMAKE_CXXFLAGS_X86_64 = $$QMAKE_CFLAGS_X86_64
QMAKE_CXXFLAGS_PPC_64 = $$QMAKE_CFLAGS_PPC_64
QMAKE_OBJECTIVE_CFLAGS_X86_64 = $$QMAKE_CFLAGS_X86_64
diff --git a/mkspecs/common/gcc-base-macx.conf b/mkspecs/common/gcc-base-macx.conf
index 79f6c11843..1e51fbd08f 100644
--- a/mkspecs/common/gcc-base-macx.conf
+++ b/mkspecs/common/gcc-base-macx.conf
@@ -12,12 +12,14 @@ include(gcc-base.conf)
QMAKE_COMPILER_DEFINES += __APPLE__ __GNUC__=4
+QMAKE_CFLAGS += -mmacosx-version-min=10.6
QMAKE_CFLAGS_X86 += -arch i386
QMAKE_CFLAGS_X86_64 += -arch x86_64
QMAKE_CFLAGS_PPC += -arch ppc
QMAKE_CFLAGS_PPC_64 += -arch ppc64
QMAKE_CFLAGS_DWARF2 += -gdwarf-2
+QMAKE_CXXFLAGS += -mmacosx-version-min=10.6
QMAKE_CXXFLAGS_X86 += $$QMAKE_CFLAGS_X86
QMAKE_CXXFLAGS_X86_64 += $$QMAKE_CFLAGS_X86_64
QMAKE_CXXFLAGS_PPC += $$QMAKE_CFLAGS_PPC
@@ -35,12 +37,12 @@ QMAKE_OBJECTIVE_CFLAGS_X86_64 = $$QMAKE_CFLAGS_X86_64
QMAKE_OBJECTIVE_CFLAGS_PPC = $$QMAKE_CFLAGS_PPC
QMAKE_OBJECTIVE_CFLAGS_PPC_64 = $$QMAKE_CFLAGS_PPC_64
+QMAKE_LFLAGS += -headerpad_max_install_names -mmacosx-version-min=10.6
QMAKE_LFLAGS_X86 += $$QMAKE_CFLAGS_X86
QMAKE_LFLAGS_X86_64 += $$QMAKE_CFLAGS_X86_64
QMAKE_LFLAGS_PPC += $$QMAKE_CFLAGS_PPC
QMAKE_LFLAGS_PPC_64 += $$QMAKE_CFLAGS_PPC_64
-QMAKE_LFLAGS += -headerpad_max_install_names
QMAKE_LFLAGS_SHLIB += -single_module -dynamiclib
QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
QMAKE_LFLAGS_INCREMENTAL += -undefined suppress -flat_namespace
diff --git a/mkspecs/common/mac/qplatformdefs.h b/mkspecs/common/mac/qplatformdefs.h
index b10ed54e9b..ddd76c34f1 100644
--- a/mkspecs/common/mac/qplatformdefs.h
+++ b/mkspecs/common/mac/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/common/nacl/g++-nacl32.conf b/mkspecs/common/nacl/g++-nacl32.conf
new file mode 100644
index 0000000000..7ab48dba3a
--- /dev/null
+++ b/mkspecs/common/nacl/g++-nacl32.conf
@@ -0,0 +1,11 @@
+
+# 32-bit x86 nacl configuration.
+
+QMAKE_CC = i686-nacl-gcc
+QMAKE_CXX = i686-nacl-g++
+QMAKE_LINK = i686-nacl-g++
+QMAKE_LINK_SHLIB = i686-nacl-g++
+QMAKE_AR = i686-nacl-ar q
+QMAKE_OBJCOPY = i686-nacl-objcopy
+QMAKE_STRIP = i686-nacl-strip
+
diff --git a/mkspecs/common/nacl/g++-nacl64.conf b/mkspecs/common/nacl/g++-nacl64.conf
new file mode 100644
index 0000000000..91ffcc2310
--- /dev/null
+++ b/mkspecs/common/nacl/g++-nacl64.conf
@@ -0,0 +1,11 @@
+
+# 32-bit x86 nacl configuration.
+
+QMAKE_CC = x86_64-nacl-gcc
+QMAKE_CXX = x86_64-nacl-g++
+QMAKE_LINK = x86_64-nacl-g++
+QMAKE_LINK_SHLIB = x86_64-nacl-g++
+QMAKE_AR = x86_64-nacl-ar q
+QMAKE_OBJCOPY = x86_64-nacl-objcopy
+QMAKE_STRIP = x86_64-nacl-strip
+
diff --git a/mkspecs/common/nacl/nacl-base.conf b/mkspecs/common/nacl/nacl-base.conf
new file mode 100644
index 0000000000..128ef23131
--- /dev/null
+++ b/mkspecs/common/nacl/nacl-base.conf
@@ -0,0 +1,10 @@
+
+# Work around linker crash when using PIC. We are building
+# statically so this is safe.
+QMAKE_CFLAGS_STATIC_LIB -= -fPIC
+QMAKE_CFLAGS_SHLIB -= -fPIC
+QMAKE_CXXFLAGS_STATIC_LIB -= -fPIC
+QMAKE_CXXFLAGS_SHLIB -= -fPIC
+
+QMAKE_LIBS_DYNLOAD -= -ldl
+QMAKE_LIBS_OPENGL_ES2 = -lppapi_gles2
diff --git a/mkspecs/common/nacl/qplatformdefs.h b/mkspecs/common/nacl/qplatformdefs.h
new file mode 100644
index 0000000000..ff890f85b3
--- /dev/null
+++ b/mkspecs/common/nacl/qplatformdefs.h
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the qmake spec 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$
+**
+****************************************************************************/
+#define _POSIX_TIMERS
+
+#include "qglobal.h"
+
+// extra disabling.
+#ifdef __native_client__
+#define QT_NO_FSFILEENGINE
+#endif
+
+#define QT_NO_SOCKET_H
+
+#define DIR void *
+#define PATH_MAX 256
+
+#include "qfunctions_nacl.h"
+#include <pthread.h>
diff --git a/mkspecs/common/posix/qplatformdefs.h b/mkspecs/common/posix/qplatformdefs.h
index daecc008c3..f59f45d536 100644
--- a/mkspecs/common/posix/qplatformdefs.h
+++ b/mkspecs/common/posix/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/common/qcc-base-qnx.conf b/mkspecs/common/qcc-base-qnx.conf
new file mode 100644
index 0000000000..2bc33117bb
--- /dev/null
+++ b/mkspecs/common/qcc-base-qnx.conf
@@ -0,0 +1,69 @@
+#
+# Base qmake configuration for QCC on *nix-systems
+#
+
+include(qcc-base.conf)
+
+QMAKE_LFLAGS_SHLIB += -shared
+QMAKE_LFLAGS_PLUGIN += $$QMAKE_LFLAGS_SHLIB
+QMAKE_LFLAGS_SONAME += -Wl,-soname,
+QMAKE_LFLAGS_THREAD +=
+QMAKE_LFLAGS_RPATH = -Wl,-rpath,
+
+# -Bsymbolic-functions (ld) support
+QMAKE_LFLAGS_BSYMBOLIC_FUNC = -Wl,-Bsymbolic-functions
+QMAKE_LFLAGS_DYNAMIC_LIST = -Wl,--dynamic-list,
+
+# Generic options for all BlackBerry/QNX qcc mkspecs
+QMAKE_CFLAGS_THREAD = -D_REENTRANT
+QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
+QMAKE_COMPILER_DEFINES += __QNXNTO__
+
+QMAKE_LIBS = -lm
+QMAKE_LIBS_NETWORK = -lsocket
+
+# OpenGL libraries have a dependency on libEGL
+QMAKE_LIBS_OPENGL_ES1 = -lGLES_CM -lEGL
+QMAKE_LIBS_OPENGL_ES2 = -lGLESv2 -lEGL
+
+# When using this mkspec to build Qt apps (ie - not Qt itself) we want to build
+# against the NDK's target directory which is referenced by the QNX_TARGET environment
+# variable, and which is guaranteed by the NDK to be set.
+QNX_DIR = $$(QNX_TARGET)
+
+isEmpty(QNX_DIR) {
+ error(QNX_TARGET environment variable not set)
+}
+
+QMAKE_INCDIR = $${QNX_DIR}/usr/include $${QNX_DIR}/usr/include/freetype2
+QMAKE_LIBDIR = $${QNX_DIR}/$${QNX_CPUDIR}/lib $${QNX_DIR}/$${QNX_CPUDIR}/usr/lib
+QMAKE_LFLAGS = -Wl,-rpath-link,$${QNX_DIR}/$${QNX_CPUDIR}/lib -Wl,-rpath-link,$${QNX_DIR}/$${QNX_CPUDIR}/usr/lib
+
+QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
+QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
+QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
+QMAKE_UIC = $$[QT_INSTALL_BINS]/uic
+QMAKE_RCC = $$[QT_INSTALL_BINS]/rcc
+
+QMAKE_CXX = $$QMAKE_CC -lang-c++
+
+QMAKE_LINK_C = $$QMAKE_CC
+QMAKE_LINK_C_SHLIB = $$QMAKE_CC
+
+QMAKE_LINK = $$QMAKE_CXX
+QMAKE_LINK_SHLIB = $$QMAKE_CXX
+
+QMAKE_TAR = tar -cf
+QMAKE_GZIP = gzip -9f
+
+QMAKE_COPY = cp -f
+QMAKE_COPY_FILE = $(COPY)
+QMAKE_COPY_DIR = $(COPY) -r
+QMAKE_MOVE = mv -f
+QMAKE_DEL_FILE = rm -f
+QMAKE_DEL_DIR = rmdir
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
+QMAKE_STRIPFLAGS_LIB += --strip-unneeded
+QMAKE_CHK_DIR_EXISTS = test -d
+QMAKE_MKDIR = mkdir -p
diff --git a/mkspecs/common/qcc-base.conf b/mkspecs/common/qcc-base.conf
new file mode 100644
index 0000000000..da006f52d7
--- /dev/null
+++ b/mkspecs/common/qcc-base.conf
@@ -0,0 +1,36 @@
+#
+# This file is used as a basis for the following compilers:
+#
+# - The QNX qcc compiler
+#
+# The only difference between this and gcc-base.conf is that -pipe is removed
+# as it's on by default in qcc (and has an analogous -nopipe option)
+#
+
+QMAKE_CFLAGS +=
+QMAKE_CFLAGS_DEPS += -M
+QMAKE_CFLAGS_WARN_ON += -Wall -W
+QMAKE_CFLAGS_WARN_OFF += -w
+QMAKE_CFLAGS_RELEASE += -O2
+QMAKE_CFLAGS_DEBUG += -g
+QMAKE_CFLAGS_SHLIB += -fPIC
+QMAKE_CFLAGS_STATIC_LIB += -fPIC
+QMAKE_CFLAGS_YACC += -Wno-unused -Wno-parentheses
+QMAKE_CFLAGS_HIDESYMS += -fvisibility=hidden
+
+QMAKE_CXXFLAGS += $$QMAKE_CFLAGS
+QMAKE_CXXFLAGS_DEPS += $$QMAKE_CFLAGS_DEPS
+QMAKE_CXXFLAGS_WARN_ON += $$QMAKE_CFLAGS_WARN_ON
+QMAKE_CXXFLAGS_WARN_OFF += $$QMAKE_CFLAGS_WARN_OFF
+QMAKE_CXXFLAGS_RELEASE += $$QMAKE_CFLAGS_RELEASE
+QMAKE_CXXFLAGS_DEBUG += $$QMAKE_CFLAGS_DEBUG
+QMAKE_CXXFLAGS_SHLIB += $$QMAKE_CFLAGS_SHLIB
+QMAKE_CXXFLAGS_STATIC_LIB += $$QMAKE_CFLAGS_STATIC_LIB
+QMAKE_CXXFLAGS_YACC += $$QMAKE_CFLAGS_YACC
+QMAKE_CXXFLAGS_HIDESYMS += $$QMAKE_CFLAGS_HIDESYMS -fvisibility-inlines-hidden
+
+QMAKE_LFLAGS +=
+QMAKE_LFLAGS_DEBUG +=
+QMAKE_LFLAGS_APP +=
+QMAKE_LFLAGS_RELEASE +=
+
diff --git a/mkspecs/common/wince/qplatformdefs.h b/mkspecs/common/wince/qplatformdefs.h
index 1733c34a64..8202eebf92 100644
--- a/mkspecs/common/wince/qplatformdefs.h
+++ b/mkspecs/common/wince/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/cygwin-g++/qplatformdefs.h b/mkspecs/cygwin-g++/qplatformdefs.h
index 254f54068f..49e4a6c235 100644
--- a/mkspecs/cygwin-g++/qplatformdefs.h
+++ b/mkspecs/cygwin-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/darwin-g++/qplatformdefs.h b/mkspecs/darwin-g++/qplatformdefs.h
index bc92c3c548..87cdde7e67 100644
--- a/mkspecs/darwin-g++/qplatformdefs.h
+++ b/mkspecs/darwin-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/features/qt.prf b/mkspecs/features/qt.prf
index b0ee214a28..b7da02e5bb 100644
--- a/mkspecs/features/qt.prf
+++ b/mkspecs/features/qt.prf
@@ -1,14 +1,5 @@
CONFIG *= moc thread
-contains(QT, declarative)|contains(QT, declarative-private):!contains(DEFINES, QT_BUILD_QUICK_LIB):!contains(QT, quick):!contains(QT, quick-private) {
- warning("This project is using the declarative module, but not the quick module.")
- warning("If you're using QtQuick-specific APIs (QQuickItem, SceneGraph et al), you should add")
- warning(" QT += quick")
- warning("to your project's .pro file.")
- contains(QT, declarative-private):QT += quick-private
- else:QT += quick
-}
-
#handle defines
win32 {
qt_static:DEFINES += QT_NODLL
@@ -65,29 +56,35 @@ for(QT_CURRENT_VERIFY, $$list($$QT_PLUGIN_VERIFY)) {
# Check if the plugin is known to Qt. We can use this to determine
# the plugin path. Unknown plugins must rely on the default link path.
ACCESSIBLEPLUGINS = qtaccessiblewidgets qtaccessiblecompatwidgets
+ BEARERPLUGINS = qgenericbearer qnativewifibearer
CODECPLUGINS = qcncodecs qjpcodecs qkrcodecs qtwcodecs
- DECORATIONPLUGINS = qdecorationdefault qdecorationwindows
- GFXDRIVERPLUGINS = qgfxvnc qscreenvfb qgfxsnap qgfxvga16 qgfxmatrox qgfxvoodoo qgfxtransformed qgfxshadowfb
- IMAGEPLUGINS = qgif qmng qjpeg qsvg
+ DECORATIONPLUGINS = qdecorationdefault qdecorationstyled qdecorationwindows
+ GFXDRIVERPLUGINS = qgfxvnc qscreenvfb qgfxtransformed qgfxshadowfb qgfxpvregl qscreenlinuxfb qeglnullws qdirectfbscreen qahiscreen
+ GRAPHICSSYSTEMPLUGINS = qmeegographicssystem qglgraphicssystem qvggraphicssystem qshivavggraphicssystem
+ IMAGEPLUGINS = qgif qico qjpeg qsvg
INPUTPLUGINS = qimsw-multi
- MOUSEDRIVERPLUGINS = qtslibmousehandler
+ KBDDRIVERPLUGINS = qlinuxinputkbddriver
+ MOUSEDRIVERPLUGINS = qtslibmousehandler qpcmousedriver qlinuxtpmousedriver
SQLPLUGINS = qsqldb2 qsqloci qsqltds qsqlodbc qsqlpsql qsqlibase qsqlmysql qsqlite2 qsqlite
- PHONONPLUGINS = phonon_waveout phonon_ds9
+ PHONONPLUGINS = phonon_waveout phonon_ds9 phonon_gstreamer phonon_qt7 phonon_mmf
- ALLQTPLUGINS = $$ACCESSIBLEPLUGINS $$CODECPLUGINS $$DECORATIONPLUGINS $$GFXDRIVERPLUGINS $$IMAGEPLUGINS $$INPUTPLUGINS $$MOUSEDRIVERPLUGINS $$SQLPLUGINS $$PHONONPLUGINS
+ ALLQTPLUGINS = $$ACCESSIBLEPLUGINS $$BEARERPLUGINS $$CODECPLUGINS $$DECORATIONPLUGINS $$GFXDRIVERPLUGINS $$ GRAPHICSSYSTEMPLUGINS $$IMAGEPLUGINS $$INPUTPLUGINS $$KBDDRIVERPLUGINS $$MOUSEDRIVERPLUGINS $$SQLPLUGINS $$PHONONPLUGINS
QT_PLUGINPATH =
contains(ALLQTPLUGINS, $$QTPLUG) {
# Determine the plugin path
contains(ACCESSIBLEPLUGINS, $$QTPLUG): QT_PLUGINPATH = accessible
+ contains(BEARERPLUGINS, $$QTPLUG): QT_PLUGINPATH = bearer
contains(CODECPLUGINS, $$QTPLUG): QT_PLUGINPATH = codecs
contains(DECORATIONPLUGINS, $$QTPLUG): QT_PLUGINPATH = decorations
contains(GFXDRIVERPLUGINS, $$QTPLUG): QT_PLUGINPATH = gfxdrivers
+ contains(GRAPHICSSYSTEMPLUGINS, $$QTPLUG): QT_PLUGINPATH = graphicssystems
contains(IMAGEPLUGINS, $$QTPLUG): QT_PLUGINPATH = imageformats
contains(INPUTPLUGINS, $$QTPLUG): QT_PLUGINPATH = inputmethods
+ contains(KBDDRIVERPLUGINS, $$QTPLUG): QT_PLUGINPATH = kbddrivers
contains(MOUSEDRIVERPLUGINS, $$QTPLUG): QT_PLUGINPATH = mousedrivers
contains(SQLPLUGINS, $$QTPLUG): QT_PLUGINPATH = sqldrivers
- contains(PHONONPLUGINS, $$QTPLUG): QT_PLUGINPATH = phonon_backend
+ contains(PHONONPLUGINS, $$QTPLUG): QT_PLUGINPATH = phonon_backend
}
# Generate the plugin linker line
diff --git a/mkspecs/features/qt_module_config.prf b/mkspecs/features/qt_module_config.prf
index 208ab592e1..4da1666fc5 100644
--- a/mkspecs/features/qt_module_config.prf
+++ b/mkspecs/features/qt_module_config.prf
@@ -86,8 +86,6 @@ mac {
win32:!shared:CONFIG += static
win32-borland {
- mng:QMAKE_CFLAGS_WARN_ON += -w-par
- mng:QMAKE_CXXFLAGS_WARN_ON += -w-par
# Keep the size of the .tds file for the Qt library smaller than
# 34 Mbytes to avoid linking problems
QMAKE_CFLAGS_DEBUG += -vi -y-
diff --git a/mkspecs/features/qtopia.prf b/mkspecs/features/qtopia.prf
deleted file mode 100644
index 7672a8d4a9..0000000000
--- a/mkspecs/features/qtopia.prf
+++ /dev/null
@@ -1 +0,0 @@
-CONFIG *= qtopiainc qtopialib
diff --git a/mkspecs/features/qtopiainc.prf b/mkspecs/features/qtopiainc.prf
deleted file mode 100644
index 2665da5859..0000000000
--- a/mkspecs/features/qtopiainc.prf
+++ /dev/null
@@ -1 +0,0 @@
-INCLUDEPATH += $$QMAKE_INCDIR_QTOPIA
diff --git a/mkspecs/features/qtopialib.prf b/mkspecs/features/qtopialib.prf
deleted file mode 100644
index 0c5ccf1ade..0000000000
--- a/mkspecs/features/qtopialib.prf
+++ /dev/null
@@ -1,2 +0,0 @@
-!isEmpty(QMAKE_LIBDIR_QTOPIA):QMAKE_LIBDIR = $$QMAKE_LIBDIR_QTOPIA
-LIBS += $$QMAKE_LIBS_QTOPIA
diff --git a/mkspecs/features/unix/gdb_dwarf_index.prf b/mkspecs/features/unix/gdb_dwarf_index.prf
index 14db4fcf1b..e3f79cdac6 100644
--- a/mkspecs/features/unix/gdb_dwarf_index.prf
+++ b/mkspecs/features/unix/gdb_dwarf_index.prf
@@ -1,8 +1,16 @@
!CONFIG(separate_debug_info):CONFIG(debug, debug|release):!staticlib:!static:!contains(TEMPLATE, subdirs):!isEmpty(QMAKE_OBJCOPY) {
- QMAKE_GDB_INDEX = { test -z \"$(DESTDIR)\" || cd \"$(DESTDIR)\"; } && \
+ contains(TEMPLATE, "lib") {
+ QMAKE_GDB_INDEX = { test -z \"$(DESTDIR)\" || cd \"$(DESTDIR)\"; } &&
+ QMAKE_GDB_DIR = .
+ } else {
+ QMAKE_GDB_INDEX = { test -n \"$(DESTDIR)\" && DESTDIR=\"$(DESTDIR)\" || DESTDIR=.; } &&
+ QMAKE_GDB_DIR = \$\$DESTDIR
+ }
+
+ QMAKE_GDB_INDEX += \
test \$\$(gdb --version | sed -e \'s,[^0-9]\\+\\([0-9]\\)\\.\\([0-9]\\).*,\\1\\2,;q\') -gt 72 && \
- gdb --nx --batch --quiet -ex \'set confirm off\' -ex \'save gdb-index .\' -ex quit \'$(TARGET)\' && \
+ gdb --nx --batch --quiet -ex \'set confirm off\' -ex \"save gdb-index $$QMAKE_GDB_DIR\" -ex quit \'$(TARGET)\' && \
test -f $(TARGET).gdb-index && \
$$QMAKE_OBJCOPY --add-section \'.gdb_index=$(TARGET).gdb-index\' --set-section-flags \'.gdb_index=readonly\' \'$(TARGET)\' \'$(TARGET)\' && \
$$QMAKE_DEL_FILE $(TARGET).gdb-index || true
diff --git a/mkspecs/freebsd-g++/qplatformdefs.h b/mkspecs/freebsd-g++/qplatformdefs.h
index 6f6d9aa2ab..4c0d9e091f 100644
--- a/mkspecs/freebsd-g++/qplatformdefs.h
+++ b/mkspecs/freebsd-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/freebsd-g++34/qplatformdefs.h b/mkspecs/freebsd-g++34/qplatformdefs.h
index 3f6b1f4272..e708ea78a7 100644
--- a/mkspecs/freebsd-g++34/qplatformdefs.h
+++ b/mkspecs/freebsd-g++34/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/freebsd-g++40/qplatformdefs.h b/mkspecs/freebsd-g++40/qplatformdefs.h
index 3f6b1f4272..e708ea78a7 100644
--- a/mkspecs/freebsd-g++40/qplatformdefs.h
+++ b/mkspecs/freebsd-g++40/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/freebsd-icc/qplatformdefs.h b/mkspecs/freebsd-icc/qplatformdefs.h
index 3f6b1f4272..e708ea78a7 100644
--- a/mkspecs/freebsd-icc/qplatformdefs.h
+++ b/mkspecs/freebsd-icc/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/hpux-acc-64/qplatformdefs.h b/mkspecs/hpux-acc-64/qplatformdefs.h
index c8ef9bd61d..9397306643 100644
--- a/mkspecs/hpux-acc-64/qplatformdefs.h
+++ b/mkspecs/hpux-acc-64/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/hpux-acc-o64/qplatformdefs.h b/mkspecs/hpux-acc-o64/qplatformdefs.h
index cf46eb3957..9e8bd07813 100644
--- a/mkspecs/hpux-acc-o64/qplatformdefs.h
+++ b/mkspecs/hpux-acc-o64/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/hpux-acc/qplatformdefs.h b/mkspecs/hpux-acc/qplatformdefs.h
index 8a0e5c61fa..36b1c460f7 100644
--- a/mkspecs/hpux-acc/qplatformdefs.h
+++ b/mkspecs/hpux-acc/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/hpux-g++-64/qplatformdefs.h b/mkspecs/hpux-g++-64/qplatformdefs.h
index 2e4a591a86..51c98f2e41 100644
--- a/mkspecs/hpux-g++-64/qplatformdefs.h
+++ b/mkspecs/hpux-g++-64/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/hpux-g++/qplatformdefs.h b/mkspecs/hpux-g++/qplatformdefs.h
index f1f665a81d..d84bbe7ca3 100644
--- a/mkspecs/hpux-g++/qplatformdefs.h
+++ b/mkspecs/hpux-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/hpuxi-acc-32/qplatformdefs.h b/mkspecs/hpuxi-acc-32/qplatformdefs.h
index f59906935a..27aa5c98bc 100644
--- a/mkspecs/hpuxi-acc-32/qplatformdefs.h
+++ b/mkspecs/hpuxi-acc-32/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/hpuxi-acc-64/qplatformdefs.h b/mkspecs/hpuxi-acc-64/qplatformdefs.h
index f59906935a..27aa5c98bc 100644
--- a/mkspecs/hpuxi-acc-64/qplatformdefs.h
+++ b/mkspecs/hpuxi-acc-64/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/hpuxi-g++-64/qplatformdefs.h b/mkspecs/hpuxi-g++-64/qplatformdefs.h
index ab36a8c098..84e168a912 100644
--- a/mkspecs/hpuxi-g++-64/qplatformdefs.h
+++ b/mkspecs/hpuxi-g++-64/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/hurd-g++/qplatformdefs.h b/mkspecs/hurd-g++/qplatformdefs.h
index 1ee8800fb0..888300d4aa 100644
--- a/mkspecs/hurd-g++/qplatformdefs.h
+++ b/mkspecs/hurd-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/irix-cc-64/qplatformdefs.h b/mkspecs/irix-cc-64/qplatformdefs.h
index fce2513474..2dd9db32b0 100644
--- a/mkspecs/irix-cc-64/qplatformdefs.h
+++ b/mkspecs/irix-cc-64/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/irix-cc/qplatformdefs.h b/mkspecs/irix-cc/qplatformdefs.h
index fce2513474..2dd9db32b0 100644
--- a/mkspecs/irix-cc/qplatformdefs.h
+++ b/mkspecs/irix-cc/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/irix-g++-64/qplatformdefs.h b/mkspecs/irix-g++-64/qplatformdefs.h
index 37417289f4..a29276fbb5 100644
--- a/mkspecs/irix-g++-64/qplatformdefs.h
+++ b/mkspecs/irix-g++-64/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/irix-g++/qplatformdefs.h b/mkspecs/irix-g++/qplatformdefs.h
index af54fb1f3f..17e4e02fa8 100644
--- a/mkspecs/irix-g++/qplatformdefs.h
+++ b/mkspecs/irix-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/linux-arm-gnueabi-g++/qplatformdefs.h b/mkspecs/linux-arm-gnueabi-g++/qplatformdefs.h
index f63efdfbe1..ab4ff76aab 100644
--- a/mkspecs/linux-arm-gnueabi-g++/qplatformdefs.h
+++ b/mkspecs/linux-arm-gnueabi-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/linux-cxx/qplatformdefs.h b/mkspecs/linux-cxx/qplatformdefs.h
index 496032f3da..3f61d2529a 100644
--- a/mkspecs/linux-cxx/qplatformdefs.h
+++ b/mkspecs/linux-cxx/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/linux-ecc-64/qplatformdefs.h b/mkspecs/linux-ecc-64/qplatformdefs.h
index 496032f3da..3f61d2529a 100644
--- a/mkspecs/linux-ecc-64/qplatformdefs.h
+++ b/mkspecs/linux-ecc-64/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/linux-g++-32/qplatformdefs.h b/mkspecs/linux-g++-32/qplatformdefs.h
index f63efdfbe1..ab4ff76aab 100644
--- a/mkspecs/linux-g++-32/qplatformdefs.h
+++ b/mkspecs/linux-g++-32/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/linux-g++-64/qplatformdefs.h b/mkspecs/linux-g++-64/qplatformdefs.h
index f63efdfbe1..ab4ff76aab 100644
--- a/mkspecs/linux-g++-64/qplatformdefs.h
+++ b/mkspecs/linux-g++-64/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/linux-g++-maemo/qplatformdefs.h b/mkspecs/linux-g++-maemo/qplatformdefs.h
index 416ce77c79..de2a70c2bf 100644
--- a/mkspecs/linux-g++-maemo/qplatformdefs.h
+++ b/mkspecs/linux-g++-maemo/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/linux-g++/qplatformdefs.h b/mkspecs/linux-g++/qplatformdefs.h
index 9e68978b34..2022aeea46 100644
--- a/mkspecs/linux-g++/qplatformdefs.h
+++ b/mkspecs/linux-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/linux-icc-32/qplatformdefs.h b/mkspecs/linux-icc-32/qplatformdefs.h
index f63efdfbe1..ab4ff76aab 100644
--- a/mkspecs/linux-icc-32/qplatformdefs.h
+++ b/mkspecs/linux-icc-32/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/linux-icc-64/qplatformdefs.h b/mkspecs/linux-icc-64/qplatformdefs.h
index f63efdfbe1..ab4ff76aab 100644
--- a/mkspecs/linux-icc-64/qplatformdefs.h
+++ b/mkspecs/linux-icc-64/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/linux-icc/qplatformdefs.h b/mkspecs/linux-icc/qplatformdefs.h
index f63efdfbe1..ab4ff76aab 100644
--- a/mkspecs/linux-icc/qplatformdefs.h
+++ b/mkspecs/linux-icc/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/linux-kcc/qplatformdefs.h b/mkspecs/linux-kcc/qplatformdefs.h
index 9c5146b067..a4f7e38872 100644
--- a/mkspecs/linux-kcc/qplatformdefs.h
+++ b/mkspecs/linux-kcc/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/linux-llvm/qplatformdefs.h b/mkspecs/linux-llvm/qplatformdefs.h
index c189a51f83..70479aaace 100644
--- a/mkspecs/linux-llvm/qplatformdefs.h
+++ b/mkspecs/linux-llvm/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/linux-lsb-g++/qplatformdefs.h b/mkspecs/linux-lsb-g++/qplatformdefs.h
index eeb7062a8d..f746b38a64 100644
--- a/mkspecs/linux-lsb-g++/qplatformdefs.h
+++ b/mkspecs/linux-lsb-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/linux-pgcc/qplatformdefs.h b/mkspecs/linux-pgcc/qplatformdefs.h
index 496032f3da..3f61d2529a 100644
--- a/mkspecs/linux-pgcc/qplatformdefs.h
+++ b/mkspecs/linux-pgcc/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/lynxos-g++/qplatformdefs.h b/mkspecs/lynxos-g++/qplatformdefs.h
index e3921f575a..b9989d1797 100644
--- a/mkspecs/lynxos-g++/qplatformdefs.h
+++ b/mkspecs/lynxos-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/macx-clang/Info.plist.app b/mkspecs/macx-clang/Info.plist.app
index 393b615475..393b615475 100644
--- a/mkspecs/unsupported/macx-clang/Info.plist.app
+++ b/mkspecs/macx-clang/Info.plist.app
diff --git a/mkspecs/unsupported/macx-clang/Info.plist.lib b/mkspecs/macx-clang/Info.plist.lib
index 97609ed0ce..97609ed0ce 100644
--- a/mkspecs/unsupported/macx-clang/Info.plist.lib
+++ b/mkspecs/macx-clang/Info.plist.lib
diff --git a/mkspecs/macx-clang/qmake.conf b/mkspecs/macx-clang/qmake.conf
new file mode 100644
index 0000000000..2d9b9bc6d9
--- /dev/null
+++ b/mkspecs/macx-clang/qmake.conf
@@ -0,0 +1,21 @@
+#
+# qmake configuration for Clang on OS X
+#
+
+MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = macx
+TEMPLATE = app
+CONFIG += qt warn_on release app_bundle incremental global_init_link_order lib_version_first plugin_no_soname link_prl
+QT += core gui
+QMAKE_INCREMENTAL_STYLE = sublib
+
+include(../common/mac.conf)
+include(../common/gcc-base-macx.conf)
+include(../common/clang.conf)
+
+QMAKE_OBJCFLAGS_PRECOMPILE = -x objective-c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_OBJCFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
+QMAKE_OBJCXXFLAGS_PRECOMPILE = -x objective-c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
+QMAKE_OBJCXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
+
+load(qt_config)
diff --git a/mkspecs/macx-clang/qplatformdefs.h b/mkspecs/macx-clang/qplatformdefs.h
new file mode 100644
index 0000000000..a3612d31e1
--- /dev/null
+++ b/mkspecs/macx-clang/qplatformdefs.h
@@ -0,0 +1,43 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the qmake spec 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 "../common/mac/qplatformdefs.h"
+
diff --git a/mkspecs/macx-g++/qplatformdefs.h b/mkspecs/macx-g++/qplatformdefs.h
index cef8dde12e..a3612d31e1 100644
--- a/mkspecs/macx-g++/qplatformdefs.h
+++ b/mkspecs/macx-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/macx-g++40/qplatformdefs.h b/mkspecs/macx-g++40/qplatformdefs.h
index cef8dde12e..a3612d31e1 100644
--- a/mkspecs/macx-g++40/qplatformdefs.h
+++ b/mkspecs/macx-g++40/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/macx-g++42/qplatformdefs.h b/mkspecs/macx-g++42/qplatformdefs.h
index cef8dde12e..a3612d31e1 100644
--- a/mkspecs/macx-g++42/qplatformdefs.h
+++ b/mkspecs/macx-g++42/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/macx-icc/qplatformdefs.h b/mkspecs/macx-icc/qplatformdefs.h
index cef8dde12e..a3612d31e1 100644
--- a/mkspecs/macx-icc/qplatformdefs.h
+++ b/mkspecs/macx-icc/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/macx-llvm/qplatformdefs.h b/mkspecs/macx-llvm/qplatformdefs.h
index cef8dde12e..a3612d31e1 100644
--- a/mkspecs/macx-llvm/qplatformdefs.h
+++ b/mkspecs/macx-llvm/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/macx-pbuilder/qplatformdefs.h b/mkspecs/macx-pbuilder/qplatformdefs.h
index c13bf512b8..9721a9da5e 100644
--- a/mkspecs/macx-pbuilder/qplatformdefs.h
+++ b/mkspecs/macx-pbuilder/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/macx-xcode/qplatformdefs.h b/mkspecs/macx-xcode/qplatformdefs.h
index cef8dde12e..a3612d31e1 100644
--- a/mkspecs/macx-xcode/qplatformdefs.h
+++ b/mkspecs/macx-xcode/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/macx-xlc/qplatformdefs.h b/mkspecs/macx-xlc/qplatformdefs.h
index faf2beb7bd..1285277e03 100644
--- a/mkspecs/macx-xlc/qplatformdefs.h
+++ b/mkspecs/macx-xlc/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/modules/README b/mkspecs/modules/README
index f095982e47..198bd868e0 100644
--- a/mkspecs/modules/README
+++ b/mkspecs/modules/README
@@ -1,3 +1,3 @@
-Externally provided Qt modules may drop a qmake file here to become part of
-the current Qt configuration. The file name must follow the pattern
-"qt_<module>.pri". It must contain a "QT_CONFIG += <module>" statement.
+Qt modules need to drop a qmake file here to become part of the current
+Qt configuration. The file format is documented in
+http://wiki.qt-project.org/Creating_a_new_module_or_tool_for_Qt#The_qt_.3Cmodule.3E.pri_files
diff --git a/mkspecs/netbsd-g++/qplatformdefs.h b/mkspecs/netbsd-g++/qplatformdefs.h
index 56f52f04bf..eb35bb4106 100644
--- a/mkspecs/netbsd-g++/qplatformdefs.h
+++ b/mkspecs/netbsd-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/openbsd-g++/qplatformdefs.h b/mkspecs/openbsd-g++/qplatformdefs.h
index b97e2d51e2..fc2e07fc14 100644
--- a/mkspecs/openbsd-g++/qplatformdefs.h
+++ b/mkspecs/openbsd-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/sco-cc/qplatformdefs.h b/mkspecs/sco-cc/qplatformdefs.h
index fe0230afd9..e14acc0b47 100644
--- a/mkspecs/sco-cc/qplatformdefs.h
+++ b/mkspecs/sco-cc/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/sco-g++/qplatformdefs.h b/mkspecs/sco-g++/qplatformdefs.h
index d5fa0bffe9..d656adda0d 100644
--- a/mkspecs/sco-g++/qplatformdefs.h
+++ b/mkspecs/sco-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/solaris-cc-64-stlport/qplatformdefs.h b/mkspecs/solaris-cc-64-stlport/qplatformdefs.h
index ed5ca4ebdd..35d5f08852 100644
--- a/mkspecs/solaris-cc-64-stlport/qplatformdefs.h
+++ b/mkspecs/solaris-cc-64-stlport/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/solaris-cc-64/qplatformdefs.h b/mkspecs/solaris-cc-64/qplatformdefs.h
index 1ce441f2cc..ef567f5cc5 100644
--- a/mkspecs/solaris-cc-64/qplatformdefs.h
+++ b/mkspecs/solaris-cc-64/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/solaris-cc-stlport/qplatformdefs.h b/mkspecs/solaris-cc-stlport/qplatformdefs.h
index 76a188792d..214c3555b8 100644
--- a/mkspecs/solaris-cc-stlport/qplatformdefs.h
+++ b/mkspecs/solaris-cc-stlport/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/solaris-cc/qplatformdefs.h b/mkspecs/solaris-cc/qplatformdefs.h
index 9b00cce85f..40855572de 100644
--- a/mkspecs/solaris-cc/qplatformdefs.h
+++ b/mkspecs/solaris-cc/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/solaris-g++-64/qplatformdefs.h b/mkspecs/solaris-g++-64/qplatformdefs.h
index c0fcc53833..8ebb87581a 100644
--- a/mkspecs/solaris-g++-64/qplatformdefs.h
+++ b/mkspecs/solaris-g++-64/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/solaris-g++/qplatformdefs.h b/mkspecs/solaris-g++/qplatformdefs.h
index b4131eaea0..74df3d6bac 100644
--- a/mkspecs/solaris-g++/qplatformdefs.h
+++ b/mkspecs/solaris-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/tru64-cxx/qplatformdefs.h b/mkspecs/tru64-cxx/qplatformdefs.h
index 9f6e33355f..1318593039 100644
--- a/mkspecs/tru64-cxx/qplatformdefs.h
+++ b/mkspecs/tru64-cxx/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/tru64-g++/qplatformdefs.h b/mkspecs/tru64-g++/qplatformdefs.h
index 9f6e33355f..1318593039 100644
--- a/mkspecs/tru64-g++/qplatformdefs.h
+++ b/mkspecs/tru64-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unixware-cc/qplatformdefs.h b/mkspecs/unixware-cc/qplatformdefs.h
index f76ea1db84..bb9b6e9487 100644
--- a/mkspecs/unixware-cc/qplatformdefs.h
+++ b/mkspecs/unixware-cc/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unixware-g++/qplatformdefs.h b/mkspecs/unixware-g++/qplatformdefs.h
index f76ea1db84..bb9b6e9487 100644
--- a/mkspecs/unixware-g++/qplatformdefs.h
+++ b/mkspecs/unixware-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/blackberry-armv7le-qcc/qmake.conf b/mkspecs/unsupported/blackberry-armv7le-qcc/qmake.conf
new file mode 100644
index 0000000000..f2407a6c13
--- /dev/null
+++ b/mkspecs/unsupported/blackberry-armv7le-qcc/qmake.conf
@@ -0,0 +1,25 @@
+#
+# qmake configuration for blackberry-qcc
+#
+
+MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl qnx
+QT += core gui
+
+include(../../common/g++-unix.conf)
+include(../../common/unix.conf)
+
+QMAKE_CC = qcc -Vgcc_ntoarmv7le
+QNX_CPUDIR = armle-v7
+
+include(../../common/qcc-base-qnx.conf)
+
+QMAKE_AR = ntoarmv7-ar cqs
+QMAKE_OBJCOPY = ntoarmv7-objcopy
+QMAKE_RANLIB = ntoarmv7-ranlib
+
+QMAKE_STRIP = ntoarmv7-strip
+
+load(qt_config)
diff --git a/mkspecs/unsupported/blackberry-armv7le-qcc/qplatformdefs.h b/mkspecs/unsupported/blackberry-armv7le-qcc/qplatformdefs.h
new file mode 100644
index 0000000000..8ef80c4bd7
--- /dev/null
+++ b/mkspecs/unsupported/blackberry-armv7le-qcc/qplatformdefs.h
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Research In Motion Limited. <blackberry-qt@qnx.com>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMDEFS_H
+#define QPLATFORMDEFS_H
+
+// Get Qt defines/settings
+
+#include "qglobal.h"
+
+// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
+
+#include <unistd.h>
+
+#define __STDC_CONSTANT_MACROS
+
+// We are hot - unistd.h should have turned on the specific APIs we requested
+
+
+#include <pthread.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <pwd.h>
+#include <signal.h>
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/ipc.h>
+#include <sys/time.h>
+// QNX doesn't have the System V <sys/shm.h> header. This is not a standard
+// POSIX header, it's only documented in the Single UNIX Specification.
+// The preferred POSIX compliant way to share memory is to use the functions
+// in <sys/mman.h> that comply with the POSIX Real Time Interface (1003.1b).
+#include <sys/mman.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <netinet/in.h>
+#ifndef QT_NO_IPV6IFNAME
+#include <net/if.h>
+#endif
+
+// for htonl
+#include <arpa/inet.h>
+
+#define QT_USE_XOPEN_LFS_EXTENSIONS
+#define QT_NO_READDIR64
+#include "../../common/posix/qplatformdefs.h"
+
+#define QT_SNPRINTF ::snprintf
+#define QT_VSNPRINTF ::vsnprintf
+
+// QNX6 doesn't have getpagesize()
+inline int getpagesize()
+{
+ return ::sysconf(_SC_PAGESIZE);
+}
+
+#include <stdlib.h>
+
+#define QT_QWS_TEMP_DIR QString::fromLatin1(qgetenv("TMP"))
+
+#endif // QPLATFORMDEFS_H
diff --git a/mkspecs/unsupported/blackberry-x86-qcc/qmake.conf b/mkspecs/unsupported/blackberry-x86-qcc/qmake.conf
new file mode 100644
index 0000000000..93f1df2e07
--- /dev/null
+++ b/mkspecs/unsupported/blackberry-x86-qcc/qmake.conf
@@ -0,0 +1,25 @@
+#
+# qmake configuration for blackberry-qcc
+#
+
+MAKEFILE_GENERATOR = UNIX
+TARGET_PLATFORM = unix
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+QT += core gui
+
+include(../../common/g++-unix.conf)
+include(../../common/unix.conf)
+
+QMAKE_CC = qcc -Vgcc_ntox86
+QNX_CPUDIR = x86
+
+include(../../common/qcc-base-qnx.conf)
+
+QMAKE_AR = ntox86-ar cqs
+QMAKE_OBJCOPY = ntox86-objcopy
+QMAKE_RANLIB = ntox86-ranlib
+
+QMAKE_STRIP = ntox86-strip
+
+load(qt_config)
diff --git a/mkspecs/unsupported/blackberry-x86-qcc/qplatformdefs.h b/mkspecs/unsupported/blackberry-x86-qcc/qplatformdefs.h
new file mode 100644
index 0000000000..8ef80c4bd7
--- /dev/null
+++ b/mkspecs/unsupported/blackberry-x86-qcc/qplatformdefs.h
@@ -0,0 +1,102 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Research In Motion Limited. <blackberry-qt@qnx.com>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMDEFS_H
+#define QPLATFORMDEFS_H
+
+// Get Qt defines/settings
+
+#include "qglobal.h"
+
+// Set any POSIX/XOPEN defines at the top of this file to turn on specific APIs
+
+#include <unistd.h>
+
+#define __STDC_CONSTANT_MACROS
+
+// We are hot - unistd.h should have turned on the specific APIs we requested
+
+
+#include <pthread.h>
+#include <dirent.h>
+#include <fcntl.h>
+#include <grp.h>
+#include <pwd.h>
+#include <signal.h>
+
+#include <sys/types.h>
+#include <sys/ioctl.h>
+#include <sys/ipc.h>
+#include <sys/time.h>
+// QNX doesn't have the System V <sys/shm.h> header. This is not a standard
+// POSIX header, it's only documented in the Single UNIX Specification.
+// The preferred POSIX compliant way to share memory is to use the functions
+// in <sys/mman.h> that comply with the POSIX Real Time Interface (1003.1b).
+#include <sys/mman.h>
+#include <sys/socket.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <netinet/in.h>
+#ifndef QT_NO_IPV6IFNAME
+#include <net/if.h>
+#endif
+
+// for htonl
+#include <arpa/inet.h>
+
+#define QT_USE_XOPEN_LFS_EXTENSIONS
+#define QT_NO_READDIR64
+#include "../../common/posix/qplatformdefs.h"
+
+#define QT_SNPRINTF ::snprintf
+#define QT_VSNPRINTF ::vsnprintf
+
+// QNX6 doesn't have getpagesize()
+inline int getpagesize()
+{
+ return ::sysconf(_SC_PAGESIZE);
+}
+
+#include <stdlib.h>
+
+#define QT_QWS_TEMP_DIR QString::fromLatin1(qgetenv("TMP"))
+
+#endif // QPLATFORMDEFS_H
diff --git a/mkspecs/unsupported/integrity-ghs/qmake.conf b/mkspecs/unsupported/integrity-ghs/qmake.conf
index 822d6bb5fa..54253edc8f 100644
--- a/mkspecs/unsupported/integrity-ghs/qmake.conf
+++ b/mkspecs/unsupported/integrity-ghs/qmake.conf
@@ -34,8 +34,6 @@ QMAKE_INCDIR_QT = $$[QT_INSTALL_HEADERS]
QMAKE_LIBDIR_QT = $$[QT_INSTALL_LIBS]
QMAKE_INCDIR_OPENGL =
QMAKE_LIBDIR_OPENGL =
-QMAKE_INCDIR_QTOPIA = $(QPEDIR)/include
-QMAKE_LIBDIR_QTOPIA = $(QPEDIR)/lib
QMAKE_LFLAGS = -lposix -livfs -lnet -lsocket -lfbdev -ldl
QMAKE_LFLAGS_RELEASE = -g -Ospeed -Olink --no_commons -non_shared --link_once_templates
@@ -50,7 +48,6 @@ QMAKE_LIBS =
QMAKE_LIBS_DYNLOAD = -ldl
QMAKE_LIBS_X11 =
QMAKE_LIBS_X11SM =
-QMAKE_LIBS_QTOPIA =
QMAKE_LIBS_THREAD =
QMAKE_MOC = $$[QT_INSTALL_BINS]/moc
diff --git a/mkspecs/unsupported/integrity-ghs/qplatformdefs.h b/mkspecs/unsupported/integrity-ghs/qplatformdefs.h
index 107535c6a3..87459d874e 100644
--- a/mkspecs/unsupported/integrity-ghs/qplatformdefs.h
+++ b/mkspecs/unsupported/integrity-ghs/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/linux-armcc/qplatformdefs.h b/mkspecs/unsupported/linux-armcc/qplatformdefs.h
index 70f47bfdb0..7983fa248e 100644
--- a/mkspecs/unsupported/linux-armcc/qplatformdefs.h
+++ b/mkspecs/unsupported/linux-armcc/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/linux-clang/qplatformdefs.h b/mkspecs/unsupported/linux-clang/qplatformdefs.h
index a903c8ceae..8600ef085b 100644
--- a/mkspecs/unsupported/linux-clang/qplatformdefs.h
+++ b/mkspecs/unsupported/linux-clang/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/linux-host-g++/qplatformdefs.h b/mkspecs/unsupported/linux-host-g++/qplatformdefs.h
index f7f0d3b16a..9e6b0f5bcc 100644
--- a/mkspecs/unsupported/linux-host-g++/qplatformdefs.h
+++ b/mkspecs/unsupported/linux-host-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/linux-scratchbox2-g++/qplatformdefs.h b/mkspecs/unsupported/linux-scratchbox2-g++/qplatformdefs.h
index f7f0d3b16a..9e6b0f5bcc 100644
--- a/mkspecs/unsupported/linux-scratchbox2-g++/qplatformdefs.h
+++ b/mkspecs/unsupported/linux-scratchbox2-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/macx-clang/qmake.conf b/mkspecs/unsupported/macx-clang/qmake.conf
deleted file mode 100644
index 319134421a..0000000000
--- a/mkspecs/unsupported/macx-clang/qmake.conf
+++ /dev/null
@@ -1,21 +0,0 @@
-#
-# qmake configuration for Clang on OS X
-#
-
-MAKEFILE_GENERATOR = UNIX
-TARGET_PLATFORM = macx
-TEMPLATE = app
-CONFIG += qt warn_on release app_bundle incremental global_init_link_order lib_version_first plugin_no_soname link_prl
-QT += core gui
-QMAKE_INCREMENTAL_STYLE = sublib
-
-include(../../common/mac.conf)
-include(../../common/gcc-base-macx.conf)
-include(../../common/clang.conf)
-
-QMAKE_OBJCFLAGS_PRECOMPILE = -x objective-c-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
-QMAKE_OBJCFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
-QMAKE_OBJCXXFLAGS_PRECOMPILE = -x objective-c++-header -c ${QMAKE_PCH_INPUT} -o ${QMAKE_PCH_OUTPUT}
-QMAKE_OBJCXXFLAGS_USE_PRECOMPILE = $$QMAKE_CFLAGS_USE_PRECOMPILE
-
-load(qt_config)
diff --git a/mkspecs/unsupported/macx-clang/qplatformdefs.h b/mkspecs/unsupported/macx-clang/qplatformdefs.h
deleted file mode 100644
index 63b72927c6..0000000000
--- a/mkspecs/unsupported/macx-clang/qplatformdefs.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the qmake spec 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 "../../common/mac/qplatformdefs.h"
-
diff --git a/mkspecs/unsupported/nacl-g++/qmake.conf b/mkspecs/unsupported/nacl-g++/qmake.conf
new file mode 100644
index 0000000000..f5dee80413
--- /dev/null
+++ b/mkspecs/unsupported/nacl-g++/qmake.conf
@@ -0,0 +1,14 @@
+#
+# qmake configuration for building with nacl-g++
+#
+
+include(../../common/linux.conf)
+include(../../common/qws.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
+include(../../common/nacl/nacl-base.conf)
+include(../../common/nacl/g++-nacl32.conf)
+
+QT = core gui
+
+load(qt_config)
diff --git a/mkspecs/unsupported/nacl-g++/qplatformdefs.h b/mkspecs/unsupported/nacl-g++/qplatformdefs.h
new file mode 100644
index 0000000000..8da9ec4d2f
--- /dev/null
+++ b/mkspecs/unsupported/nacl-g++/qplatformdefs.h
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the qmake spec 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$
+**
+****************************************************************************/
+#ifndef QPLATFORMDEFS_H
+#define QPLATFORMDEFS_H
+
+#include "../../common/nacl/qplatformdefs.h"
+#include "../../common/posix/qplatformdefs.h"
+
+#endif // QPLATFORMDEFS_H
diff --git a/mkspecs/unsupported/nacl64-g++/qmake.conf b/mkspecs/unsupported/nacl64-g++/qmake.conf
new file mode 100644
index 0000000000..13372b3cc4
--- /dev/null
+++ b/mkspecs/unsupported/nacl64-g++/qmake.conf
@@ -0,0 +1,14 @@
+#
+# qmake configuration for building with nacl-g++
+#
+
+include(../../common/linux.conf)
+include(../../common/qws.conf)
+include(../../common/gcc-base-unix.conf)
+include(../../common/g++-unix.conf)
+include(../../common/nacl/nacl64-base.conf)
+include(../../common/nacl/g++-nacl64.conf)
+
+QT = core gui
+
+load(qt_config)
diff --git a/mkspecs/unsupported/nacl64-g++/qplatformdefs.h b/mkspecs/unsupported/nacl64-g++/qplatformdefs.h
new file mode 100644
index 0000000000..8da9ec4d2f
--- /dev/null
+++ b/mkspecs/unsupported/nacl64-g++/qplatformdefs.h
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the qmake spec 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$
+**
+****************************************************************************/
+#ifndef QPLATFORMDEFS_H
+#define QPLATFORMDEFS_H
+
+#include "../../common/nacl/qplatformdefs.h"
+#include "../../common/posix/qplatformdefs.h"
+
+#endif // QPLATFORMDEFS_H
diff --git a/mkspecs/unsupported/qnx-g++/qplatformdefs.h b/mkspecs/unsupported/qnx-g++/qplatformdefs.h
index a524bb5fbc..489e1be114 100644
--- a/mkspecs/unsupported/qnx-g++/qplatformdefs.h
+++ b/mkspecs/unsupported/qnx-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/qws/integrity-arm-cxarm/qplatformdefs.h b/mkspecs/unsupported/qws/integrity-arm-cxarm/qplatformdefs.h
index 71ddfd7460..8de02bb927 100644
--- a/mkspecs/unsupported/qws/integrity-arm-cxarm/qplatformdefs.h
+++ b/mkspecs/unsupported/qws/integrity-arm-cxarm/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/qws/integrity-ppc-cxppc/qplatformdefs.h b/mkspecs/unsupported/qws/integrity-ppc-cxppc/qplatformdefs.h
index 71ddfd7460..8de02bb927 100644
--- a/mkspecs/unsupported/qws/integrity-ppc-cxppc/qplatformdefs.h
+++ b/mkspecs/unsupported/qws/integrity-ppc-cxppc/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/qws/linux-x86-openkode-g++/qplatformdefs.h b/mkspecs/unsupported/qws/linux-x86-openkode-g++/qplatformdefs.h
index ee5db1c3cd..182d38bf3a 100644
--- a/mkspecs/unsupported/qws/linux-x86-openkode-g++/qplatformdefs.h
+++ b/mkspecs/unsupported/qws/linux-x86-openkode-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/qws/qnx-641/qplatformdefs.h b/mkspecs/unsupported/qws/qnx-641/qplatformdefs.h
index 4be41b1e6c..ef909e0d0b 100644
--- a/mkspecs/unsupported/qws/qnx-641/qplatformdefs.h
+++ b/mkspecs/unsupported/qws/qnx-641/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/qws/qnx-generic-g++/qplatformdefs.h b/mkspecs/unsupported/qws/qnx-generic-g++/qplatformdefs.h
index 4be41b1e6c..ef909e0d0b 100644
--- a/mkspecs/unsupported/qws/qnx-generic-g++/qplatformdefs.h
+++ b/mkspecs/unsupported/qws/qnx-generic-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/qws/qnx-i386-g++/qplatformdefs.h b/mkspecs/unsupported/qws/qnx-i386-g++/qplatformdefs.h
index 4be41b1e6c..ef909e0d0b 100644
--- a/mkspecs/unsupported/qws/qnx-i386-g++/qplatformdefs.h
+++ b/mkspecs/unsupported/qws/qnx-i386-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/qws/qnx-ppc-g++/qplatformdefs.h b/mkspecs/unsupported/qws/qnx-ppc-g++/qplatformdefs.h
index 4be41b1e6c..ef909e0d0b 100644
--- a/mkspecs/unsupported/qws/qnx-ppc-g++/qplatformdefs.h
+++ b/mkspecs/unsupported/qws/qnx-ppc-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/vxworks-ppc-dcc/qplatformdefs.h b/mkspecs/unsupported/vxworks-ppc-dcc/qplatformdefs.h
index 19dafe2bfc..290b6bc7d1 100644
--- a/mkspecs/unsupported/vxworks-ppc-dcc/qplatformdefs.h
+++ b/mkspecs/unsupported/vxworks-ppc-dcc/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/vxworks-ppc-g++/qplatformdefs.h b/mkspecs/unsupported/vxworks-ppc-g++/qplatformdefs.h
index 19dafe2bfc..290b6bc7d1 100644
--- a/mkspecs/unsupported/vxworks-ppc-g++/qplatformdefs.h
+++ b/mkspecs/unsupported/vxworks-ppc-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/vxworks-simpentium-dcc/qplatformdefs.h b/mkspecs/unsupported/vxworks-simpentium-dcc/qplatformdefs.h
index 19dafe2bfc..290b6bc7d1 100644
--- a/mkspecs/unsupported/vxworks-simpentium-dcc/qplatformdefs.h
+++ b/mkspecs/unsupported/vxworks-simpentium-dcc/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/vxworks-simpentium-g++/qplatformdefs.h b/mkspecs/unsupported/vxworks-simpentium-g++/qplatformdefs.h
index 975c6af635..e6edc1d069 100644
--- a/mkspecs/unsupported/vxworks-simpentium-g++/qplatformdefs.h
+++ b/mkspecs/unsupported/vxworks-simpentium-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/win32-borland/qplatformdefs.h b/mkspecs/unsupported/win32-borland/qplatformdefs.h
index 6aecf9138d..04cdb10ed5 100644
--- a/mkspecs/unsupported/win32-borland/qplatformdefs.h
+++ b/mkspecs/unsupported/win32-borland/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/win32-g++-cross/qplatformdefs.h b/mkspecs/unsupported/win32-g++-cross/qplatformdefs.h
index 15d6be5666..0762904957 100644
--- a/mkspecs/unsupported/win32-g++-cross/qplatformdefs.h
+++ b/mkspecs/unsupported/win32-g++-cross/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/unsupported/win32-msvc2003/qplatformdefs.h b/mkspecs/unsupported/win32-msvc2003/qplatformdefs.h
index 8f42708c1d..fe04b4b718 100644
--- a/mkspecs/unsupported/win32-msvc2003/qplatformdefs.h
+++ b/mkspecs/unsupported/win32-msvc2003/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/win32-g++/qplatformdefs.h b/mkspecs/win32-g++/qplatformdefs.h
index 55d2b7c65a..cef03618db 100644
--- a/mkspecs/win32-g++/qplatformdefs.h
+++ b/mkspecs/win32-g++/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/win32-icc/qplatformdefs.h b/mkspecs/win32-icc/qplatformdefs.h
index bd969aef8d..b24eff216e 100644
--- a/mkspecs/win32-icc/qplatformdefs.h
+++ b/mkspecs/win32-icc/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/win32-msvc2005/qplatformdefs.h b/mkspecs/win32-msvc2005/qplatformdefs.h
index d13e7be877..ba0fdb3529 100644
--- a/mkspecs/win32-msvc2005/qplatformdefs.h
+++ b/mkspecs/win32-msvc2005/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -64,7 +64,6 @@
#include <errno.h>
#include <sys/stat.h>
#include <stdlib.h>
-#include <windows.h>
#define Q_FS_FAT
#ifdef QT_LARGEFILE_SUPPORT
diff --git a/mkspecs/win32-msvc2008/qplatformdefs.h b/mkspecs/win32-msvc2008/qplatformdefs.h
index 339e85239a..60dca648f1 100644
--- a/mkspecs/win32-msvc2008/qplatformdefs.h
+++ b/mkspecs/win32-msvc2008/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/win32-msvc2010/qplatformdefs.h b/mkspecs/win32-msvc2010/qplatformdefs.h
index 339e85239a..60dca648f1 100644
--- a/mkspecs/win32-msvc2010/qplatformdefs.h
+++ b/mkspecs/win32-msvc2010/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wince50standard-armv4i-msvc2005/qplatformdefs.h b/mkspecs/wince50standard-armv4i-msvc2005/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wince50standard-armv4i-msvc2005/qplatformdefs.h
+++ b/mkspecs/wince50standard-armv4i-msvc2005/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wince50standard-armv4i-msvc2008/qplatformdefs.h b/mkspecs/wince50standard-armv4i-msvc2008/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wince50standard-armv4i-msvc2008/qplatformdefs.h
+++ b/mkspecs/wince50standard-armv4i-msvc2008/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wince50standard-mipsii-msvc2005/qplatformdefs.h b/mkspecs/wince50standard-mipsii-msvc2005/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wince50standard-mipsii-msvc2005/qplatformdefs.h
+++ b/mkspecs/wince50standard-mipsii-msvc2005/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wince50standard-mipsii-msvc2008/qplatformdefs.h b/mkspecs/wince50standard-mipsii-msvc2008/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wince50standard-mipsii-msvc2008/qplatformdefs.h
+++ b/mkspecs/wince50standard-mipsii-msvc2008/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wince50standard-mipsiv-msvc2005/qplatformdefs.h b/mkspecs/wince50standard-mipsiv-msvc2005/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wince50standard-mipsiv-msvc2005/qplatformdefs.h
+++ b/mkspecs/wince50standard-mipsiv-msvc2005/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wince50standard-mipsiv-msvc2008/qplatformdefs.h b/mkspecs/wince50standard-mipsiv-msvc2008/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wince50standard-mipsiv-msvc2008/qplatformdefs.h
+++ b/mkspecs/wince50standard-mipsiv-msvc2008/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wince50standard-sh4-msvc2005/qplatformdefs.h b/mkspecs/wince50standard-sh4-msvc2005/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wince50standard-sh4-msvc2005/qplatformdefs.h
+++ b/mkspecs/wince50standard-sh4-msvc2005/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wince50standard-sh4-msvc2008/qplatformdefs.h b/mkspecs/wince50standard-sh4-msvc2008/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wince50standard-sh4-msvc2008/qplatformdefs.h
+++ b/mkspecs/wince50standard-sh4-msvc2008/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wince50standard-x86-msvc2005/qplatformdefs.h b/mkspecs/wince50standard-x86-msvc2005/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wince50standard-x86-msvc2005/qplatformdefs.h
+++ b/mkspecs/wince50standard-x86-msvc2005/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wince50standard-x86-msvc2008/qplatformdefs.h b/mkspecs/wince50standard-x86-msvc2008/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wince50standard-x86-msvc2008/qplatformdefs.h
+++ b/mkspecs/wince50standard-x86-msvc2008/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wince60standard-armv4i-msvc2005/qplatformdefs.h b/mkspecs/wince60standard-armv4i-msvc2005/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wince60standard-armv4i-msvc2005/qplatformdefs.h
+++ b/mkspecs/wince60standard-armv4i-msvc2005/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wince60standard-x86-msvc2005/qplatformdefs.h b/mkspecs/wince60standard-x86-msvc2005/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wince60standard-x86-msvc2005/qplatformdefs.h
+++ b/mkspecs/wince60standard-x86-msvc2005/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wince70embedded-armv4i-msvc2008/qplatformdefs.h b/mkspecs/wince70embedded-armv4i-msvc2008/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wince70embedded-armv4i-msvc2008/qplatformdefs.h
+++ b/mkspecs/wince70embedded-armv4i-msvc2008/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wince70embedded-x86-msvc2008/qplatformdefs.h b/mkspecs/wince70embedded-x86-msvc2008/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wince70embedded-x86-msvc2008/qplatformdefs.h
+++ b/mkspecs/wince70embedded-x86-msvc2008/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wincewm50pocket-msvc2005/qplatformdefs.h b/mkspecs/wincewm50pocket-msvc2005/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wincewm50pocket-msvc2005/qplatformdefs.h
+++ b/mkspecs/wincewm50pocket-msvc2005/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wincewm50pocket-msvc2008/qplatformdefs.h b/mkspecs/wincewm50pocket-msvc2008/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wincewm50pocket-msvc2008/qplatformdefs.h
+++ b/mkspecs/wincewm50pocket-msvc2008/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wincewm50smart-msvc2005/qplatformdefs.h b/mkspecs/wincewm50smart-msvc2005/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wincewm50smart-msvc2005/qplatformdefs.h
+++ b/mkspecs/wincewm50smart-msvc2005/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wincewm50smart-msvc2008/qplatformdefs.h b/mkspecs/wincewm50smart-msvc2008/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wincewm50smart-msvc2008/qplatformdefs.h
+++ b/mkspecs/wincewm50smart-msvc2008/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wincewm60professional-msvc2005/qplatformdefs.h b/mkspecs/wincewm60professional-msvc2005/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wincewm60professional-msvc2005/qplatformdefs.h
+++ b/mkspecs/wincewm60professional-msvc2005/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wincewm60professional-msvc2008/qplatformdefs.h b/mkspecs/wincewm60professional-msvc2008/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wincewm60professional-msvc2008/qplatformdefs.h
+++ b/mkspecs/wincewm60professional-msvc2008/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wincewm60standard-msvc2005/qplatformdefs.h b/mkspecs/wincewm60standard-msvc2005/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wincewm60standard-msvc2005/qplatformdefs.h
+++ b/mkspecs/wincewm60standard-msvc2005/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wincewm60standard-msvc2008/qplatformdefs.h b/mkspecs/wincewm60standard-msvc2008/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wincewm60standard-msvc2008/qplatformdefs.h
+++ b/mkspecs/wincewm60standard-msvc2008/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wincewm65professional-msvc2005/qplatformdefs.h b/mkspecs/wincewm65professional-msvc2005/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wincewm65professional-msvc2005/qplatformdefs.h
+++ b/mkspecs/wincewm65professional-msvc2005/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/mkspecs/wincewm65professional-msvc2008/qplatformdefs.h b/mkspecs/wincewm65professional-msvc2008/qplatformdefs.h
index cd9eac3274..adf4d04cdc 100644
--- a/mkspecs/wincewm65professional-msvc2008/qplatformdefs.h
+++ b/mkspecs/wincewm65professional-msvc2008/qplatformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/cachekeys.h b/qmake/cachekeys.h
index 64d068a6e6..c164304f31 100644
--- a/qmake/cachekeys.h
+++ b/qmake/cachekeys.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/integrity/gbuild.cpp b/qmake/generators/integrity/gbuild.cpp
index e3d1d69598..c72c120f39 100644
--- a/qmake/generators/integrity/gbuild.cpp
+++ b/qmake/generators/integrity/gbuild.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/integrity/gbuild.h b/qmake/generators/integrity/gbuild.h
index 67646186e7..8c09fb3e7f 100644
--- a/qmake/generators/integrity/gbuild.h
+++ b/qmake/generators/integrity/gbuild.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/mac/pbuilder_pbx.cpp b/qmake/generators/mac/pbuilder_pbx.cpp
index d6b2235e31..b78ebd136d 100644
--- a/qmake/generators/mac/pbuilder_pbx.cpp
+++ b/qmake/generators/mac/pbuilder_pbx.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/mac/pbuilder_pbx.h b/qmake/generators/mac/pbuilder_pbx.h
index f4568be0f7..cfda5aa9ff 100644
--- a/qmake/generators/mac/pbuilder_pbx.h
+++ b/qmake/generators/mac/pbuilder_pbx.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/makefile.cpp b/qmake/generators/makefile.cpp
index 564d44d98f..59e17b0bea 100644
--- a/qmake/generators/makefile.cpp
+++ b/qmake/generators/makefile.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -2489,7 +2489,7 @@ MakefileGenerator::writeSubTargets(QTextStream &t, QList<MakefileGenerator::SubT
//qmake it
if(!subtarget->profile.isEmpty()) {
QString out = subtarget->makefile;
- QString in = fileFixify(in_directory + subtarget->profile, FileFixifyAbsolute);
+ QString in = escapeFilePath(fileFixify(in_directory + subtarget->profile, FileFixifyAbsolute));
if(out.startsWith(in_directory))
out = out.mid(in_directory.length());
t << mkfile << ": " << "\n\t";
diff --git a/qmake/generators/makefile.h b/qmake/generators/makefile.h
index 4324a9455a..68d247a8f3 100644
--- a/qmake/generators/makefile.h
+++ b/qmake/generators/makefile.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/makefiledeps.cpp b/qmake/generators/makefiledeps.cpp
index 85fbe1e393..d28d48b4d0 100644
--- a/qmake/generators/makefiledeps.cpp
+++ b/qmake/generators/makefiledeps.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/makefiledeps.h b/qmake/generators/makefiledeps.h
index 963ade85e9..55a776c84f 100644
--- a/qmake/generators/makefiledeps.h
+++ b/qmake/generators/makefiledeps.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/metamakefile.cpp b/qmake/generators/metamakefile.cpp
index e60d1c44ec..b9fec023ab 100644
--- a/qmake/generators/metamakefile.cpp
+++ b/qmake/generators/metamakefile.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/metamakefile.h b/qmake/generators/metamakefile.h
index babf2f0ec6..4e2e7c502e 100644
--- a/qmake/generators/metamakefile.h
+++ b/qmake/generators/metamakefile.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/projectgenerator.cpp b/qmake/generators/projectgenerator.cpp
index ddbee4b39a..4d1a310daf 100644
--- a/qmake/generators/projectgenerator.cpp
+++ b/qmake/generators/projectgenerator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/projectgenerator.h b/qmake/generators/projectgenerator.h
index 562b108dc9..2edac95852 100644
--- a/qmake/generators/projectgenerator.h
+++ b/qmake/generators/projectgenerator.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/unix/unixmake.cpp b/qmake/generators/unix/unixmake.cpp
index c5e43b0552..856bf371a7 100644
--- a/qmake/generators/unix/unixmake.cpp
+++ b/qmake/generators/unix/unixmake.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/unix/unixmake.h b/qmake/generators/unix/unixmake.h
index 12b42f7bf2..24e8c45264 100644
--- a/qmake/generators/unix/unixmake.h
+++ b/qmake/generators/unix/unixmake.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/unix/unixmake2.cpp b/qmake/generators/unix/unixmake2.cpp
index 173be72919..490b76e494 100644
--- a/qmake/generators/unix/unixmake2.cpp
+++ b/qmake/generators/unix/unixmake2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/win32/borland_bmake.cpp b/qmake/generators/win32/borland_bmake.cpp
index 086636f219..bf1041f9f5 100644
--- a/qmake/generators/win32/borland_bmake.cpp
+++ b/qmake/generators/win32/borland_bmake.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/win32/borland_bmake.h b/qmake/generators/win32/borland_bmake.h
index 603c413244..469acaad31 100644
--- a/qmake/generators/win32/borland_bmake.h
+++ b/qmake/generators/win32/borland_bmake.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/win32/mingw_make.cpp b/qmake/generators/win32/mingw_make.cpp
index c82259e5ae..03460551a9 100644
--- a/qmake/generators/win32/mingw_make.cpp
+++ b/qmake/generators/win32/mingw_make.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/win32/mingw_make.h b/qmake/generators/win32/mingw_make.h
index fda1ca4187..08d87cb916 100644
--- a/qmake/generators/win32/mingw_make.h
+++ b/qmake/generators/win32/mingw_make.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/win32/msbuild_objectmodel.cpp b/qmake/generators/win32/msbuild_objectmodel.cpp
index de95ad10be..3410c296ce 100644
--- a/qmake/generators/win32/msbuild_objectmodel.cpp
+++ b/qmake/generators/win32/msbuild_objectmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/win32/msbuild_objectmodel.h b/qmake/generators/win32/msbuild_objectmodel.h
index 5e9d06dd9f..72a405f0ab 100644
--- a/qmake/generators/win32/msbuild_objectmodel.h
+++ b/qmake/generators/win32/msbuild_objectmodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/win32/msvc_nmake.cpp b/qmake/generators/win32/msvc_nmake.cpp
index f75ea05567..4d52c4be2e 100644
--- a/qmake/generators/win32/msvc_nmake.cpp
+++ b/qmake/generators/win32/msvc_nmake.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/win32/msvc_nmake.h b/qmake/generators/win32/msvc_nmake.h
index c758d5eb81..d0e6ec7aaf 100644
--- a/qmake/generators/win32/msvc_nmake.h
+++ b/qmake/generators/win32/msvc_nmake.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/win32/msvc_objectmodel.cpp b/qmake/generators/win32/msvc_objectmodel.cpp
index 96c230e98c..81f541f94e 100644
--- a/qmake/generators/win32/msvc_objectmodel.cpp
+++ b/qmake/generators/win32/msvc_objectmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/win32/msvc_objectmodel.h b/qmake/generators/win32/msvc_objectmodel.h
index 7a530c8e5a..8b1cf519ff 100644
--- a/qmake/generators/win32/msvc_objectmodel.h
+++ b/qmake/generators/win32/msvc_objectmodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/win32/msvc_vcproj.cpp b/qmake/generators/win32/msvc_vcproj.cpp
index 55d3fa8455..109b50fd94 100644
--- a/qmake/generators/win32/msvc_vcproj.cpp
+++ b/qmake/generators/win32/msvc_vcproj.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -305,6 +305,16 @@ struct VcsolutionDepend {
QStringList dependencies;
};
+/* Disable optimization in getProjectUUID() due to a compiler
+ * bug in MSVC 2010 that causes ASSERT: "&other != this" in the QString
+ * copy constructor for non-empty file names at:
+ * filename.isEmpty()?project->first("QMAKE_MAKEFILE"):filename */
+
+#ifdef Q_CC_MSVC
+# pragma optimize( "g", off )
+# pragma warning ( disable : 4748 )
+#endif
+
QUuid VcprojGenerator::getProjectUUID(const QString &filename)
{
bool validUUID = true;
@@ -335,6 +345,10 @@ QUuid VcprojGenerator::getProjectUUID(const QString &filename)
return uuid;
}
+#ifdef Q_CC_MSVC
+# pragma optimize( "g", on )
+#endif
+
QUuid VcprojGenerator::increaseUUID(const QUuid &id)
{
QUuid result(id);
diff --git a/qmake/generators/win32/msvc_vcproj.h b/qmake/generators/win32/msvc_vcproj.h
index 35ac670c62..30b149f8f5 100644
--- a/qmake/generators/win32/msvc_vcproj.h
+++ b/qmake/generators/win32/msvc_vcproj.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/win32/msvc_vcxproj.cpp b/qmake/generators/win32/msvc_vcxproj.cpp
index 5d2047fd2f..bcaea867d4 100644
--- a/qmake/generators/win32/msvc_vcxproj.cpp
+++ b/qmake/generators/win32/msvc_vcxproj.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/win32/msvc_vcxproj.h b/qmake/generators/win32/msvc_vcxproj.h
index 0c43a0a8d8..70e8c75ed6 100644
--- a/qmake/generators/win32/msvc_vcxproj.h
+++ b/qmake/generators/win32/msvc_vcxproj.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/win32/winmakefile.cpp b/qmake/generators/win32/winmakefile.cpp
index 11927dbd94..5f0828383f 100644
--- a/qmake/generators/win32/winmakefile.cpp
+++ b/qmake/generators/win32/winmakefile.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/win32/winmakefile.h b/qmake/generators/win32/winmakefile.h
index 1e8b706088..9fd4f903da 100644
--- a/qmake/generators/win32/winmakefile.h
+++ b/qmake/generators/win32/winmakefile.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/xmloutput.cpp b/qmake/generators/xmloutput.cpp
index 1b39f38203..f7fa547a75 100644
--- a/qmake/generators/xmloutput.cpp
+++ b/qmake/generators/xmloutput.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/generators/xmloutput.h b/qmake/generators/xmloutput.h
index 6560ebc7b6..fc62d58a40 100644
--- a/qmake/generators/xmloutput.h
+++ b/qmake/generators/xmloutput.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/main.cpp b/qmake/main.cpp
index 99015177b2..38e09f60fd 100644
--- a/qmake/main.cpp
+++ b/qmake/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -103,8 +103,8 @@ int runQMake(int argc, char **argv)
if(!(oldpwd.length() == 3 && oldpwd[0].isLetter() && oldpwd.endsWith(":/")))
#endif
{
- if(oldpwd.right(1) != QString(QChar(QDir::separator())))
- oldpwd += QDir::separator();
+ if(!oldpwd.endsWith(QLatin1Char('/')))
+ oldpwd += QLatin1Char('/');
}
Option::output_dir = oldpwd; //for now this is the output dir
@@ -141,28 +141,33 @@ int runQMake(int argc, char **argv)
for(QStringList::Iterator pfile = files.begin(); pfile != files.end(); pfile++) {
if(Option::qmake_mode == Option::QMAKE_GENERATE_MAKEFILE ||
Option::qmake_mode == Option::QMAKE_GENERATE_PRL) {
- QString fn = Option::fixPathToLocalOS((*pfile));
+ QString fn = Option::normalizePath(*pfile);
if(!QFile::exists(fn)) {
- fprintf(stderr, "Cannot find file: %s.\n", fn.toLatin1().constData());
+ fprintf(stderr, "Cannot find file: %s.\n",
+ QDir::toNativeSeparators(fn).toLatin1().constData());
exit_val = 2;
continue;
}
//setup pwd properly
- debug_msg(1, "Resetting dir to: %s", oldpwd.toLatin1().constData());
+ debug_msg(1, "Resetting dir to: %s",
+ QDir::toNativeSeparators(oldpwd).toLatin1().constData());
qmake_setpwd(oldpwd); //reset the old pwd
- int di = fn.lastIndexOf(QDir::separator());
+ int di = fn.lastIndexOf(QLatin1Char('/'));
if(di != -1) {
- debug_msg(1, "Changing dir to: %s", fn.left(di).toLatin1().constData());
+ debug_msg(1, "Changing dir to: %s",
+ QDir::toNativeSeparators(fn.left(di)).toLatin1().constData());
if(!qmake_setpwd(fn.left(di)))
- fprintf(stderr, "Cannot find directory: %s\n", fn.left(di).toLatin1().constData());
+ fprintf(stderr, "Cannot find directory: %s\n",
+ QDir::toNativeSeparators(fn.left(di)).toLatin1().constData());
fn = fn.right(fn.length() - di - 1);
}
// read project..
if(!project.read(fn)) {
fprintf(stderr, "Error processing project file: %s\n",
- fn == "-" ? "(stdin)" : (*pfile).toLatin1().constData());
+ fn == QLatin1String("-") ?
+ "(stdin)" : QDir::toNativeSeparators(*pfile).toLatin1().constData());
exit_val = 3;
continue;
}
@@ -179,7 +184,8 @@ int runQMake(int argc, char **argv)
if(Option::qmake_mode == Option::QMAKE_GENERATE_PROJECT)
fprintf(stderr, "Unable to generate project file.\n");
else
- fprintf(stderr, "Unable to generate makefile for: %s\n", (*pfile).toLatin1().constData());
+ fprintf(stderr, "Unable to generate makefile for: %s\n",
+ QDir::toNativeSeparators(*pfile).toLatin1().constData());
exit_val = 5;
}
delete mkfile;
diff --git a/qmake/meta.cpp b/qmake/meta.cpp
index f5edff3ceb..ecd78e3455 100644
--- a/qmake/meta.cpp
+++ b/qmake/meta.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -75,13 +75,14 @@ QMakeMetaInfo::readLib(QString lib)
meta_type = "libtool";
} else if(meta_file.endsWith(Option::prl_ext)) {
QMakeProject proj;
- if(!proj.read(Option::fixPathToLocalOS(meta_file), QMakeProject::ReadProFile))
+ if(!proj.read(Option::normalizePath(meta_file), QMakeProject::ReadProFile))
return false;
meta_type = "qmake";
vars = proj.variables();
ret = true;
} else {
- warn_msg(WarnLogic, "QMakeMetaInfo: unknown file format for %s", meta_file.toLatin1().constData());
+ warn_msg(WarnLogic, "QMakeMetaInfo: unknown file format for %s",
+ QDir::toNativeSeparators(meta_file).toLatin1().constData());
}
}
if(ret)
@@ -102,8 +103,8 @@ QMakeMetaInfo::findLib(QString lib)
{
if((lib[0] == '\'' || lib[0] == '"') &&
lib[lib.length()-1] == lib[0])
- lib = lib.mid(1, lib.length()-2);
- lib = Option::fixPathToLocalOS(lib);
+ lib = lib.mid(1, lib.length()-2);
+ lib = Option::normalizePath(lib);
QString ret;
QString extns[] = { Option::prl_ext, /*Option::pkgcfg_ext, Option::libtool_ext,*/ QString() };
@@ -133,13 +134,14 @@ QMakeMetaInfo::readLibtoolFile(const QString &f)
{
/* I can just run the .la through the .pro parser since they are compatible.. */
QMakeProject proj;
- if(!proj.read(Option::fixPathToLocalOS(f), QMakeProject::ReadProFile))
+ QString nf = Option::normalizePath(f);
+ if(!proj.read(nf, QMakeProject::ReadProFile))
return false;
- QString dirf = Option::fixPathToTargetOS(f).section(Option::dir_sep, 0, -2);
- if(dirf == f)
+ QString dirf = nf.section(QLatin1Char('/'), 0, -2);
+ if(dirf == nf)
dirf = "";
else if(!dirf.isEmpty() && !dirf.endsWith(Option::output_dir))
- dirf += Option::dir_sep;
+ dirf += QLatin1Char('/');
QHash<QString, QStringList> &v = proj.variables();
for(QHash<QString, QStringList>::Iterator it = v.begin(); it != v.end(); ++it) {
QStringList lst = it.value();
@@ -152,18 +154,18 @@ QMakeMetaInfo::readLibtoolFile(const QString &f)
if((dir.startsWith("'") || dir.startsWith("\"")) && dir.endsWith(QString(dir[0])))
dir = dir.mid(1, dir.length() - 2);
dir = dir.trimmed();
- if(!dir.isEmpty() && !dir.endsWith(Option::dir_sep))
- dir += Option::dir_sep;
+ if(!dir.isEmpty() && !dir.endsWith(QLatin1Char('/')))
+ dir += QLatin1Char('/');
if(lst.count() == 1)
lst = lst.first().split(" ");
for(QStringList::Iterator lst_it = lst.begin(); lst_it != lst.end(); ++lst_it) {
bool found = false;
- QString dirs[] = { "", dir, dirf, dirf + ".libs" + QDir::separator(), "(term)" };
+ QString dirs[] = { "", dir, dirf, dirf + ".libs/", "(term)" };
for(int i = 0; !found && dirs[i] != "(term)"; i++) {
if(QFile::exists(dirs[i] + (*lst_it))) {
QString targ = dirs[i] + (*lst_it);
if(QDir::isRelativePath(targ))
- targ.prepend(qmake_getpwd() + QDir::separator());
+ targ.prepend(qmake_getpwd() + QLatin1Char('/'));
vars["QMAKE_PRL_TARGET"] << targ;
found = true;
}
diff --git a/qmake/meta.h b/qmake/meta.h
index d20fc97924..71d7f5f2de 100644
--- a/qmake/meta.h
+++ b/qmake/meta.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/option.cpp b/qmake/option.cpp
index 8ad8a22f79..431299b46b 100644
--- a/qmake/option.cpp
+++ b/qmake/option.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -659,9 +659,16 @@ Option::fixString(QString string, uchar flags)
if(string.length() > 2 && string[0].isLetter() && string[1] == QLatin1Char(':'))
string[0] = string[0].toLower();
+ bool localSep = (flags & Option::FixPathToLocalSeparators) != 0;
+ bool targetSep = (flags & Option::FixPathToTargetSeparators) != 0;
+ bool normalSep = (flags & Option::FixPathToNormalSeparators) != 0;
+
+ // either none or only one active flag
+ Q_ASSERT(localSep + targetSep + normalSep <= 1);
//fix separators
- Q_ASSERT(!((flags & Option::FixPathToLocalSeparators) && (flags & Option::FixPathToTargetSeparators)));
- if(flags & Option::FixPathToLocalSeparators) {
+ if (flags & Option::FixPathToNormalSeparators) {
+ string = string.replace('\\', '/');
+ } else if (flags & Option::FixPathToLocalSeparators) {
#if defined(Q_OS_WIN32)
string = string.replace('/', '\\');
#else
diff --git a/qmake/option.h b/qmake/option.h
index ffccb8efc5..ee8a1c2403 100644
--- a/qmake/option.h
+++ b/qmake/option.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -115,7 +115,8 @@ struct Option
FixEnvVars = 0x01,
FixPathCanonicalize = 0x02,
FixPathToLocalSeparators = 0x04,
- FixPathToTargetSeparators = 0x08
+ FixPathToTargetSeparators = 0x08,
+ FixPathToNormalSeparators = 0x10
};
static QString fixString(QString string, uchar flags);
@@ -138,6 +139,15 @@ struct Option
flags |= FixPathCanonicalize;
return fixString(in, flags);
}
+ inline static QString normalizePath(const QString &in, bool fix_env=true, bool canonical=true)
+ {
+ uchar flags = FixPathToNormalSeparators;
+ if (fix_env)
+ flags |= FixEnvVars;
+ if (canonical)
+ flags |= FixPathCanonicalize;
+ return fixString(in, flags);
+ }
inline static bool hasFileExtension(const QString &str, const QStringList &extensions)
{
diff --git a/qmake/project.cpp b/qmake/project.cpp
index eb2b10b92f..d898483a47 100644
--- a/qmake/project.cpp
+++ b/qmake/project.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -532,24 +532,24 @@ QStringList qmake_feature_paths(QMakeProperty *prop=0)
{
QStringList concat;
{
- const QString base_concat = QDir::separator() + QString("features");
+ const QString base_concat = QLatin1String("/features");
switch(Option::target_mode) {
case Option::TARG_MACX_MODE: //also a unix
- concat << base_concat + QDir::separator() + "mac";
- concat << base_concat + QDir::separator() + "macx";
- concat << base_concat + QDir::separator() + "unix";
+ concat << base_concat + QLatin1String("/mac");
+ concat << base_concat + QLatin1String("/macx");
+ concat << base_concat + QLatin1String("/unix");
break;
default: // Can't happen, just make the compiler shut up
case Option::TARG_UNIX_MODE:
- concat << base_concat + QDir::separator() + "unix";
+ concat << base_concat + QLatin1String("/unix");
break;
case Option::TARG_WIN_MODE:
- concat << base_concat + QDir::separator() + "win32";
+ concat << base_concat + QLatin1String("/win32");
break;
}
concat << base_concat;
}
- const QString mkspecs_concat = QDir::separator() + QString("mkspecs");
+ const QString mkspecs_concat = QLatin1String("/mkspecs");
QStringList feature_roots;
QByteArray mkspec_path = qgetenv("QMAKEFEATURES");
if(!mkspec_path.isNull())
@@ -558,9 +558,9 @@ QStringList qmake_feature_paths(QMakeProperty *prop=0)
feature_roots += splitPathList(prop->value("QMAKEFEATURES"));
if(!Option::mkfile::cachefile.isEmpty()) {
QString path;
- int last_slash = Option::mkfile::cachefile.lastIndexOf(QDir::separator());
+ int last_slash = Option::mkfile::cachefile.lastIndexOf(QLatin1Char('/'));
if(last_slash != -1)
- path = Option::fixPathToLocalOS(Option::mkfile::cachefile.left(last_slash), false);
+ path = Option::normalizePath(Option::mkfile::cachefile.left(last_slash), false);
for(QStringList::Iterator concat_it = concat.begin();
concat_it != concat.end(); ++concat_it)
feature_roots << (path + (*concat_it));
@@ -575,14 +575,14 @@ QStringList qmake_feature_paths(QMakeProperty *prop=0)
}
}
if(!Option::mkfile::qmakespec.isEmpty())
- feature_roots << Option::mkfile::qmakespec + QDir::separator() + "features";
+ feature_roots << Option::mkfile::qmakespec + QLatin1String("/features");
if(!Option::mkfile::qmakespec.isEmpty()) {
QFileInfo specfi(Option::mkfile::qmakespec);
QDir specdir(specfi.absoluteFilePath());
while(!specdir.isRoot()) {
if(!specdir.cdUp() || specdir.isRoot())
break;
- if(QFile::exists(specdir.path() + QDir::separator() + "features")) {
+ if(QFile::exists(specdir.path() + QLatin1String("/features"))) {
for(QStringList::Iterator concat_it = concat.begin();
concat_it != concat.end(); ++concat_it)
feature_roots << (specdir.path() + (*concat_it));
@@ -604,7 +604,7 @@ QStringList qmake_feature_paths(QMakeProperty *prop=0)
QStringList qmake_mkspec_paths()
{
QStringList ret;
- const QString concat = QDir::separator() + QString("mkspecs");
+ const QString concat = QLatin1String("/mkspecs");
QByteArray qmakepath = qgetenv("QMAKEPATH");
if (!qmakepath.isEmpty()) {
const QStringList lst = splitPathList(QString::fromLocal8Bit(qmakepath));
@@ -1232,10 +1232,10 @@ QMakeProject::read(const QString &file, QHash<QString, QStringList> &place)
reset();
const QString oldpwd = qmake_getpwd();
- QString filename = Option::fixPathToLocalOS(file, false);
+ QString filename = Option::normalizePath(file, false);
bool ret = false, using_stdin = false;
QFile qfile;
- if(!strcmp(filename.toLatin1(), "-")) {
+ if(filename == QLatin1String("-")) {
qfile.setFileName("");
ret = qfile.open(stdin, QIODevice::ReadOnly);
using_stdin = true;
@@ -1288,10 +1288,10 @@ QMakeProject::read(uchar cmd)
int cache_depth = -1;
QString qmake_cache = Option::mkfile::cachefile;
if(qmake_cache.isEmpty()) { //find it as it has not been specified
- QString dir = QDir::toNativeSeparators(Option::output_dir);
- while(!QFile::exists((qmake_cache = dir + QDir::separator() + ".qmake.cache"))) {
- dir = dir.left(dir.lastIndexOf(QDir::separator()));
- if(dir.isEmpty() || dir.indexOf(QDir::separator()) == -1) {
+ QString dir = Option::output_dir;
+ while(!QFile::exists((qmake_cache = dir + QLatin1String("/.qmake.cache")))) {
+ dir = dir.left(dir.lastIndexOf(QLatin1Char('/')));
+ if(dir.isEmpty() || dir.indexOf(QLatin1Char('/')) == -1) {
qmake_cache = "";
break;
}
@@ -1306,6 +1306,7 @@ QMakeProject::read(uchar cmd)
cache_depth = Option::output_dir.mid(abs_cache.length()).count('/');
}
if(!qmake_cache.isEmpty()) {
+ QHash<QString, QStringList> cache;
if(read(qmake_cache, cache)) {
Option::mkfile::cachefile_depth = cache_depth;
Option::mkfile::cachefile = qmake_cache;
@@ -1321,7 +1322,7 @@ QMakeProject::read(uchar cmd)
mkspec_roots.join("::").toLatin1().constData());
if(qmakespec.isEmpty()) {
for(QStringList::ConstIterator it = mkspec_roots.begin(); it != mkspec_roots.end(); ++it) {
- QString mkspec = (*it) + QDir::separator() + "default";
+ QString mkspec = (*it) + QLatin1String("/default");
QFileInfo default_info(mkspec);
if(default_info.exists() && default_info.isDir()) {
qmakespec = mkspec;
@@ -1343,7 +1344,7 @@ QMakeProject::read(uchar cmd)
} else {
bool found_mkspec = false;
for(QStringList::ConstIterator it = mkspec_roots.begin(); it != mkspec_roots.end(); ++it) {
- QString mkspec = (*it) + QDir::separator() + qmakespec;
+ QString mkspec = (*it) + QLatin1Char('/') + qmakespec;
if(QFile::exists(mkspec)) {
found_mkspec = true;
Option::mkfile::qmakespec = qmakespec = mkspec;
@@ -1359,9 +1360,9 @@ QMakeProject::read(uchar cmd)
}
// parse qmake configuration
- while(qmakespec.endsWith(QString(QChar(QDir::separator()))))
+ while(qmakespec.endsWith(QLatin1Char('/')))
qmakespec.truncate(qmakespec.length()-1);
- QString spec = qmakespec + QDir::separator() + "qmake.conf";
+ QString spec = qmakespec + QLatin1String("/qmake.conf");
debug_msg(1, "QMAKESPEC conf: reading %s", spec.toLatin1().constData());
if(!read(spec, base_vars)) {
fprintf(stderr, "Failure to read QMAKESPEC conf file %s.\n", spec.toLatin1().constData());
@@ -1635,7 +1636,7 @@ QMakeProject::doProjectInclude(QString file, uchar flags, QHash<QString, QString
if(!file.endsWith(Option::prf_ext))
file += Option::prf_ext;
validateModes(); // init dir_sep
- if(file.indexOf(Option::dir_sep) == -1 || !QFile::exists(file)) {
+ if(file.indexOf(QLatin1Char('/')) == -1 || !QFile::exists(file)) {
static QStringList *feature_roots = 0;
if(!feature_roots) {
feature_roots = new QStringList(qmake_feature_paths(prop));
@@ -1650,7 +1651,7 @@ QMakeProject::doProjectInclude(QString file, uchar flags, QHash<QString, QString
currFile = QFileInfo(currFile.canonicalFilePath());
for(int root = 0; root < feature_roots->size(); ++root) {
prfFile = QFileInfo(feature_roots->at(root) +
- QDir::separator() + file).canonicalFilePath();
+ QLatin1Char('/') + file).canonicalFilePath();
if(prfFile == currFile) {
start_root = root+1;
break;
@@ -1659,7 +1660,7 @@ QMakeProject::doProjectInclude(QString file, uchar flags, QHash<QString, QString
}
}
for(int root = start_root; root < feature_roots->size(); ++root) {
- QString prf(feature_roots->at(root) + QDir::separator() + file);
+ QString prf(feature_roots->at(root) + QLatin1Char('/') + file);
if(QFile::exists(prf + Option::js_ext)) {
format = JSFormat;
file = prf + Option::js_ext;
@@ -1683,9 +1684,9 @@ QMakeProject::doProjectInclude(QString file, uchar flags, QHash<QString, QString
include_roots << qmake_getpwd();
include_roots << Option::output_dir;
for(int root = 0; root < include_roots.size(); ++root) {
- QString testName = QDir::toNativeSeparators(include_roots[root]);
- if (!testName.endsWith(QString(QDir::separator())))
- testName += QDir::separator();
+ QString testName = QDir::fromNativeSeparators(include_roots[root]);
+ if (!testName.endsWith(QLatin1Char('/')))
+ testName += QLatin1Char('/');
testName += file;
if(QFile::exists(testName)) {
file = testName;
@@ -1711,10 +1712,10 @@ QMakeProject::doProjectInclude(QString file, uchar flags, QHash<QString, QString
file.toLatin1().constData());
QString orig_file = file;
- int di = file.lastIndexOf(QDir::separator());
+ int di = file.lastIndexOf(QLatin1Char('/'));
QString oldpwd = qmake_getpwd();
if(di != -1) {
- if(!qmake_setpwd(file.left(file.lastIndexOf(QDir::separator())))) {
+ if(!qmake_setpwd(file.left(file.lastIndexOf(QLatin1Char('/'))))) {
fprintf(stderr, "Cannot find directory: %s\n", file.left(di).toLatin1().constData());
return IncludeFailure;
}
@@ -1903,8 +1904,7 @@ QMakeProject::doProjectExpand(QString func, QList<QStringList> args_list,
fprintf(stderr, "%s:%d: cat(file) requires one argument.\n",
parser.file.toLatin1().constData(), parser.line_no);
} else {
- QString file = args[0];
- file = Option::fixPathToLocalOS(file);
+ QString file = Option::normalizePath(args[0]);
bool singleLine = true;
if(args.count() > 1)
@@ -1927,8 +1927,7 @@ QMakeProject::doProjectExpand(QString func, QList<QStringList> args_list,
fprintf(stderr, "%s:%d: fromfile(file, variable) requires two arguments.\n",
parser.file.toLatin1().constData(), parser.line_no);
} else {
- QString file = args[0], seek_var = args[1];
- file = Option::fixPathToLocalOS(file);
+ QString seek_var = args[1], file = Option::normalizePath(args[0]);
QHash<QString, QStringList> tmp;
if(doProjectInclude(file, IncludeFlagNewParser, tmp) == IncludeSuccess) {
@@ -2171,8 +2170,8 @@ QMakeProject::doProjectExpand(QString func, QList<QStringList> args_list,
if(args.count() == 2)
recursive = (args[1].toLower() == "true" || args[1].toInt());
QStringList dirs;
- QString r = Option::fixPathToLocalOS(args[0]);
- int slash = r.lastIndexOf(QDir::separator());
+ QString r = Option::normalizePath(args[0]);
+ int slash = r.lastIndexOf(QLatin1Char('/'));
if(slash != -1) {
dirs.append(r.left(slash));
r = r.mid(slash+1);
@@ -2183,7 +2182,7 @@ QMakeProject::doProjectExpand(QString func, QList<QStringList> args_list,
const QRegExp regex(r, Qt::CaseSensitive, QRegExp::Wildcard);
for(int d = 0; d < dirs.count(); d++) {
QString dir = dirs[d];
- if(!dir.isEmpty() && !dir.endsWith(QDir::separator()))
+ if (!dir.isEmpty() && !dir.endsWith(QLatin1Char('/')))
dir += "/";
QDir qdir(dir);
@@ -2411,14 +2410,13 @@ QMakeProject::doProjectTest(QString func, QList<QStringList> args_list, QHash<QS
parser.line_no);
return false;
}
- QString file = args.first();
- file = Option::fixPathToLocalOS(file);
+ QString file = Option::normalizePath(args.first());
if(QFile::exists(file))
return true;
//regular expression I guess
QString dirstr = qmake_getpwd();
- int slsh = file.lastIndexOf(QDir::separator());
+ int slsh = file.lastIndexOf(QLatin1Char('/'));
if(slsh != -1) {
dirstr = file.left(slsh+1);
file = file.right(file.length() - slsh - 1);
@@ -2580,7 +2578,7 @@ QMakeProject::doProjectTest(QString func, QList<QStringList> args_list, QHash<QS
bool ret = false;
QHash<QString, QStringList> tmp;
- if(doProjectInclude(Option::fixPathToLocalOS(args[0]), IncludeFlagNewParser, tmp) == IncludeSuccess) {
+ if(doProjectInclude(Option::normalizePath(args[0]), IncludeFlagNewParser, tmp) == IncludeSuccess) {
if(tmp.contains("QMAKE_INTERNAL_INCLUDED_FILES")) {
QStringList &out = place["QMAKE_INTERNAL_INCLUDED_FILES"];
const QStringList &in = tmp["QMAKE_INTERNAL_INCLUDED_FILES"];
@@ -2658,8 +2656,7 @@ QMakeProject::doProjectTest(QString func, QList<QStringList> args_list, QHash<QS
parser.line_no, func_desc.toLatin1().constData());
return false;
}
- QString file = args.first();
- file = Option::fixPathToLocalOS(file);
+ QString file = Option::normalizePath(args.first());
uchar flags = IncludeFlagNone;
if(!include_statement)
flags |= IncludeFlagFeature;
diff --git a/qmake/project.h b/qmake/project.h
index 8a49eb584d..83174455d1 100644
--- a/qmake/project.h
+++ b/qmake/project.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -84,7 +84,7 @@ class QMakeProject
QString pfile, cfile;
QMakeProperty *prop;
void reset();
- QHash<QString, QStringList> vars, base_vars, cache;
+ QHash<QString, QStringList> vars, base_vars;
bool parse(const QString &text, QHash<QString, QStringList> &place, int line_count=1);
enum IncludeStatus {
diff --git a/qmake/property.cpp b/qmake/property.cpp
index c1efef0d2b..4221605545 100644
--- a/qmake/property.cpp
+++ b/qmake/property.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/property.h b/qmake/property.h
index 22a8957e53..d67d0ad09d 100644
--- a/qmake/property.h
+++ b/qmake/property.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qmake/qmake_pch.h b/qmake/qmake_pch.h
index a24c2f7c92..129d8937cb 100644
--- a/qmake/qmake_pch.h
+++ b/qmake/qmake_pch.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/qtbase.pro b/qtbase.pro
index b1a096f66a..56f40cdb7a 100644
--- a/qtbase.pro
+++ b/qtbase.pro
@@ -35,9 +35,9 @@ contains(PROJECTS, tests) {
message(Unknown PROJECTS: $$PROJECTS)
}
-!symbian: confclean.depends += clean
+confclean.depends += clean
confclean.commands =
-unix:!symbian {
+unix {
confclean.commands += (cd config.tests/unix/stl && $(MAKE) distclean); \
(cd config.tests/unix/endian && $(MAKE) distclean); \
(cd config.tests/unix/ipv6 && $(MAKE) distclean); \
@@ -59,7 +59,6 @@ unix:!symbian {
(cd config.tests/unix/ibase && $(MAKE) distclean); \
(cd config.tests/unix/ipv6ifname && $(MAKE) distclean); \
(cd config.tests/unix/zlib && $(MAKE) distclean); \
- (cd config.tests/unix/libmng && $(MAKE) distclean); \
(cd config.tests/unix/sqlite2 && $(MAKE) distclean); \
(cd config.tests/unix/libjpeg && $(MAKE) distclean); \
(cd config.tests/unix/libpng && $(MAKE) distclean); \
@@ -89,32 +88,6 @@ win32 {
-$(DEL_FILE) .qmake.cache $$escape_expand(\\n\\t) \
(cd qmake && $(MAKE) distclean)
}
-symbian {
- confclean.depends += distclean
- contains(QMAKE_HOST.os, "Windows") {
- confclean.commands += \
- (cd src\\tools\\moc && $(MAKE) distclean) $$escape_expand(\\n\\t) \
- (cd src\\tools\\rcc && $(MAKE) distclean) $$escape_expand(\\n\\t) \
- (cd src\\tools\\uic && $(MAKE) distclean) $$escape_expand(\\n\\t) \
- -$(DEL_FILE) src\\corelib\\global\\qconfig.h $$escape_expand(\\n\\t) \
- -$(DEL_FILE) src\\corelib\\global\\qconfig.cpp $$escape_expand(\\n\\t) \
- -$(DEL_FILE) mkspecs\\qconfig.pri $$escape_expand(\\n\\t) \
- -$(DEL_FILE) mkspecs\\qmodule.pri $$escape_expand(\\n\\t) \
- -$(DEL_FILE) .qmake.cache $$escape_expand(\\n\\t) \
- (cd qmake && $(MAKE) distclean)
- } else {
- confclean.commands += \
- (cd src/tools/moc && $(MAKE) distclean) $$escape_expand(\\n\\t) \
- (cd src/tools/rcc && $(MAKE) distclean) $$escape_expand(\\n\\t) \
- (cd src/tools/uic && $(MAKE) distclean) $$escape_expand(\\n\\t) \
- -$(DEL_FILE) src/corelib/global/qconfig.h $$escape_expand(\\n\\t) \
- -$(DEL_FILE) src/corelib/global/qconfig.cpp $$escape_expand(\\n\\t) \
- -$(DEL_FILE) mkspecs/qconfig.pri $$escape_expand(\\n\\t) \
- -$(DEL_FILE) mkspecs/qmodule.pri $$escape_expand(\\n\\t) \
- -$(DEL_FILE) .qmake.cache $$escape_expand(\\n\\t) \
- (cd qmake && $(MAKE) distclean)
- }
-}
QMAKE_EXTRA_TARGETS += confclean
qmakeclean.commands += (cd qmake && $(MAKE) clean)
QMAKE_EXTRA_TARGETS += qmakeclean
diff --git a/src/3rdparty/.gitattributes b/src/3rdparty/.gitattributes
index 8cb308ab3c..c0f08ed4d7 100644
--- a/src/3rdparty/.gitattributes
+++ b/src/3rdparty/.gitattributes
@@ -11,7 +11,6 @@ libpng/projects/visualc71/libpng.sln -crlf
libpng/projects/visualc71/libpng.vcproj -crlf
libpng/projects/visualc71/pngtest.vcproj -crlf
libpng/projects/visualc71/zlib.vcproj -crlf
-libtiff/nmake.opt -crlf
zlib/projects/visualc6/example.dsp -crlf
zlib/projects/visualc6/minigzip.dsp -crlf
zlib/projects/visualc6/README.txt -crlf
diff --git a/src/3rdparty/harfbuzz/src/harfbuzz-thai.c b/src/3rdparty/harfbuzz/src/harfbuzz-thai.c
index 262cee6a8e..deff61be7e 100644
--- a/src/3rdparty/harfbuzz/src/harfbuzz-thai.c
+++ b/src/3rdparty/harfbuzz/src/harfbuzz-thai.c
@@ -258,20 +258,39 @@ static HB_Bool HB_ThaiConvertStringToGlyphIndices (HB_ShaperItem *item)
/* Add glyphs to glyphs string and setting some attributes */
for (int lgi = 0; lgi < lgn; lgi++) {
if ( rglyphs[lgi] == 0xdd/*TH_BLANK_BASE_GLYPH*/ ) {
- //if ( !item->fixedPitch ) {
- glyphString[slen++] = C_DOTTED_CIRCLE;
- item->attributes[slen-1].dontPrint = true; // FIXME this will hide all dotted circle
- //}
+ glyphString[slen++] = C_DOTTED_CIRCLE;
}
else {
glyphString[slen++] = (HB_UChar16) thai_get_glyph_index (font_type, rglyphs[lgi]);
}
}
+ /* Special case to handle U+0E33 (SARA AM, ำ): SARA AM is normally written at the end of a
+ * word with a base character and an optional top character before it. For example, U+0E0B
+ * (base), U+0E49 (top), U+0E33 (SARA AM). The sequence should be converted to 4 glyphs:
+ * base, hilo (the little circle in the top left part of SARA AM, NIKHAHIT), top, then the
+ * right part of SARA AM (SARA AA).
+ *
+ * The painting process finds out the starting glyph and ending glyph of a character
+ * sequence by checking the logClusters array. In this case, logClusters array should
+ * ideally be [ 0, 1, 3 ] so that glyphsStart = 0 and glyphsEnd = 3 (slen - 1) to paint out
+ * all the glyphs generated.
+ *
+ * A special case in this special case is when we have no base character. When an isolated
+ * SARA AM is processed (cell_length = 1), libthai will produce 3 glyphs: dotted circle
+ * (indicates that the base is empty), NIKHAHIT then SARA AA. If logClusters[0] = 1, it will
+ * paint from the second glyph in the glyphs array. So in this case logClusters[0] should
+ * point to the first glyph it produces, aka. the dotted circle. */
if (haveSaraAm) {
- logClusters[i + cell_length - 1] = slen - 1; // Set logClusters before NIKAHIT
- if (tis_cell.top != 0)
- logClusters[i + cell_length - 2] = slen - 2; // Set logClusters before NIKAHIT when tis_cell has top
+ logClusters[i + cell_length - 1] = cell_length == 1 ? slen - 3 : slen - 1;
+ if (tis_cell.top != 0) {
+ if (cell_length > 1) {
+ /* set the logClusters[top character] to slen - 2 as it points to the second to
+ * lastglyph (slen - 2) */
+ logClusters[i + cell_length - 2] = slen - 2;
+ }
+ }
+ /* check for overflow */
if (logClusters[i + cell_length - 1] > slen)
logClusters[i + cell_length - 1] = 0;
}
diff --git a/src/3rdparty/libgq.pri b/src/3rdparty/libgq.pri
deleted file mode 100644
index a89706a1e7..0000000000
--- a/src/3rdparty/libgq.pri
+++ /dev/null
@@ -1,9 +0,0 @@
-INCLUDEPATH += $$PWD/libgq/gconf
-
-HEADERS += \
- $$PWD/libgq/gconf/gconfitem.h \
- $$PWD/libgq/gconf/GConfItem
-
-SOURCES += \
- $$PWD/libgq/gconf/gconfitem.cpp
-
diff --git a/src/3rdparty/libgq/.gitignore b/src/3rdparty/libgq/.gitignore
deleted file mode 100644
index 70a4735f37..0000000000
--- a/src/3rdparty/libgq/.gitignore
+++ /dev/null
@@ -1,37 +0,0 @@
-/Makefile.in
-/aclocal.m4
-/autom4te.cache/
-/config.guess
-/config.sub
-/configure
-/depcomp
-/gconf/Makefile.in
-/install-sh
-/ltmain.sh
-/missing
-/Makefile
-/config.log
-/config.status
-/gconf/.deps/
-/gconf/Makefile
-/libtool
-/confdefs.h
-/gconf/.libs/
-/gconf/libgq-gconf.la
-/gconf/gq-gconf.pc
-/gconf/moc_gconfitem_h.cpp
-/gconf/mocs.cpp
-/gconf/test-gconf
-/gconf/gconfitem_moc.cpp
-/gconf/test-gconf_moc.cpp
-/libgq-*.tar.gz
-/debian/libgq-gconf-dev/
-/debian/libgq-gconf0/
-/debian/tmp/
-/debian/libgq-gconf0-dbg/
-/debian/libgq-gconf-doc/
-/debian/*.debhelper.log
-/debian/*.substvars
-/debian/files
-/debian/*.debhelper
-/gconf/html/
diff --git a/src/3rdparty/libgq/Makefile.am b/src/3rdparty/libgq/Makefile.am
deleted file mode 100644
index 42b3ece04b..0000000000
--- a/src/3rdparty/libgq/Makefile.am
+++ /dev/null
@@ -1,4 +0,0 @@
-SUBDIRS = gconf
-
-dist-hook:
- rm -rf `find $(distdir) -name '*_moc.cpp'`
diff --git a/src/3rdparty/libgq/README b/src/3rdparty/libgq/README
deleted file mode 100644
index c37abba8ae..0000000000
--- a/src/3rdparty/libgq/README
+++ /dev/null
@@ -1,6 +0,0 @@
-This is libgq, a set of small libraries with Q wrappers for G things.
-
-* GConf
-
-The libgq-gconf library contains the GConfItem class for accessing
-GConf.
diff --git a/src/3rdparty/libgq/autogen.sh b/src/3rdparty/libgq/autogen.sh
deleted file mode 100755
index 0a4a0343ab..0000000000
--- a/src/3rdparty/libgq/autogen.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-#! /bin/sh
-autoreconf --install --force -v
diff --git a/src/3rdparty/libgq/configure.ac b/src/3rdparty/libgq/configure.ac
deleted file mode 100644
index f4fc2be604..0000000000
--- a/src/3rdparty/libgq/configure.ac
+++ /dev/null
@@ -1,23 +0,0 @@
-AC_INIT([libgq],[0.2],[marius.vollmer@nokia.com],[libgq])
-AC_CONFIG_SRCDIR([Makefile.am])
-AM_INIT_AUTOMAKE([-Wall -Werror tar-ustar foreign])
-
-AC_PROG_CXX
-AC_PROG_LIBTOOL
-
-PKG_CHECK_MODULES([QT], [QtCore])
-PKG_CHECK_MODULES([QTEST], [QtTest])
-PKG_CHECK_MODULES([GLIB], [glib-2.0])
-PKG_CHECK_MODULES([GCONF], [gconf-2.0])
-
-MOC=`pkg-config QtCore --variable=moc_location`
-RCC=`pkg-config QtCore --variable=exec_prefix`/bin/rcc
-
-AC_SUBST([MOC])
-AC_SUBST([RCC])
-
-AC_CONFIG_FILES([Makefile
- gconf/Makefile
- gconf/gq-gconf.pc])
-
-AC_OUTPUT
diff --git a/src/3rdparty/libgq/debian/README.scratchbox b/src/3rdparty/libgq/debian/README.scratchbox
deleted file mode 100644
index 23ba7935ce..0000000000
--- a/src/3rdparty/libgq/debian/README.scratchbox
+++ /dev/null
@@ -1,28 +0,0 @@
-This packages behaves a bit wierdly inside Scratchbox 1, by design.
-
-When building it with dpkg-buildpackage or equivalent, it will disable
-all devkits and adjust PATH. This means that almost all build
-dependencies will come from your installed packages, and not from
-Scratchbox or the configured devkits.
-
-Since some of our packages do not work with Scratchboxes fakeroot
-(because the latter is too old), you should use the targets fakeroot
-instead.
-
-You can disable this behavior by setting SBOX_DONT_SANITIZE in the
-environment.
-
-When this package is build in a certain buildbot, it will go further
-and permantly change the Scratchbox target. This should not happen to
-anyone but the buildbot, but there is a chance it will happen to you
-by accident.
-
-The buildbot is recognized via the $USER environment variable. If it
-matches "bifh[0-9]", the permanent changes will be done.
-
-The permanent changes mostly consist of running apt-get dist-upgrade
-and making sure that the targets fakeroot is used.
-
-This weirdness is brought to you by:
-
- http://maemo.gitorious.org/maemo-af/maemoify-tools
diff --git a/src/3rdparty/libgq/debian/changelog b/src/3rdparty/libgq/debian/changelog
deleted file mode 100644
index f6242540bf..0000000000
--- a/src/3rdparty/libgq/debian/changelog
+++ /dev/null
@@ -1,31 +0,0 @@
-libgq (0.4+0m6) unstable; urgency=low
-
- * This entry has been added by BIFH queue processor
- version has been changed to 0.4+0m6
-
- -- Marius Vollmer <marius.vollmer@nokia.com> Fri, 04 Jun 2010 18:28:43 +0300
-
-libgq (0.4) unstable; urgency=low
-
- * Never release the GConf client, to avoid having to recreate it
- immediately. Might fix NB#164690.
-
- -- Marius Vollmer <marius.vollmer@nokia.com> Fri, 04 Jun 2010 18:10:50 +0300
-
-libgq (0.3) unstable; urgency=low
-
- * Added autotools to Build-Depends.
-
- -- Marius Vollmer <marius.vollmer@nokia.com> Tue, 23 Feb 2010 12:04:45 +0200
-
-libgq (0.2) unstable; urgency=low
-
- * Build fixes.
-
- -- Marius Vollmer <marius.vollmer@nokia.com> Wed, 16 Dec 2009 15:56:05 +0200
-
-libgq (0.1) unstable; urgency=low
-
- * Initial release.
-
- -- Marius Vollmer <marius.vollmer@nokia.com> Wed, 16 Dec 2009 15:54:46 +0200
diff --git a/src/3rdparty/libgq/debian/compat b/src/3rdparty/libgq/debian/compat
deleted file mode 100644
index 7f8f011eb7..0000000000
--- a/src/3rdparty/libgq/debian/compat
+++ /dev/null
@@ -1 +0,0 @@
-7
diff --git a/src/3rdparty/libgq/debian/control b/src/3rdparty/libgq/debian/control
deleted file mode 100644
index 3feaa466ea..0000000000
--- a/src/3rdparty/libgq/debian/control
+++ /dev/null
@@ -1,43 +0,0 @@
-Source: libgq
-Section: libs
-Priority: extra
-Maintainer: Marius Vollmer <marius.vollmer@nokia.com>
-Origin: maemo
-Build-Depends: debhelper (>= 7), libqt4-dev, doxygen, libgconf2-dev, libglib2.0-dev, autoconf, automake, libtool
-Vcs-Browser: http://gitorious.org/maemo-af/libgq
-Vcs-Git: git@gitorious.org:maemo-af/libgq.git
-
-Package: libgq-gconf0
-Architecture: any
-Depends: ${shlibs:Depends}
-Description: a Qt wrapper for GConf
- This library contains the GConfItem class, for easy
- access to GConf from Qt programs.
- .
- This package contains the shared run-time library.
-
-Package: libgq-gconf0-dbg
-Architecture: any
-Depends: libgq-gconf0 (= ${source:Version})
-Description: a Qt wrapper for GConf
- This library contains the GConfItem class, for easy
- access to GConf from Qt programs.
- .
- This package contains the debugging symbols.
-
-Package: libgq-gconf-dev
-Architecture: any
-Depends: libgq-gconf0 (= ${source:Version}), libqt4-dev, libgconf2-dev
-Description: a Qt wrapper for GConf
- This library contains the GConfItem class, for easy
- access to GConf from Qt programs.
- .
- This package contains the development files.
-
-Package: libgq-gconf-doc
-Architecture: all
-Description: a Qt wrapper for GConf
- This library contains the GConfItem class, for easy
- access to GConf from Qt programs.
- .
- This package contains the documentation.
diff --git a/src/3rdparty/libgq/debian/copyright b/src/3rdparty/libgq/debian/copyright
deleted file mode 100644
index 45b04e6929..0000000000
--- a/src/3rdparty/libgq/debian/copyright
+++ /dev/null
@@ -1,8 +0,0 @@
-Copyright (c) 2009 Nokia Corporation.
-
-This program, is free software; you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License version
-2.1 as published by the Free Software Foundation.
-
-The full text of the LGPL 2.1 can be found in
-/usr/share/common-licenses.
diff --git a/src/3rdparty/libgq/debian/fixup-scratchbox b/src/3rdparty/libgq/debian/fixup-scratchbox
deleted file mode 100755
index b39ad5fc28..0000000000
--- a/src/3rdparty/libgq/debian/fixup-scratchbox
+++ /dev/null
@@ -1,79 +0,0 @@
-#! /bin/sh
-
-# XXX - this needs to run under fakeroot...
-
-exec 3>&1 1>&2
-
-real_dpkg_checkbuilddeps () {
- SBOX_REDIRECT_IGNORE=/usr/bin/perl /usr/bin/perl /usr/bin/dpkg-checkbuilddeps "$@"
-}
-
-finish () {
- if ! real_dpkg_checkbuilddeps; then
- echo "This package does not use any devkits."
- echo "Please install all build dependencies as real packages."
- echo >&3 FAIL
- fi
- exit 0
-}
-
-# The stamp file can not be in the source tree because then it would
-# end up in the source package, which is not what we want. We put it
-# into /var/tmp so that it gets deleted when a new rootstrap is
-# extracted.
-
-STAMP=/var/tmp/SANITIZED.$(head debian/changelog | md5sum | cut -d' ' -f1)
-
-if [ -e $STAMP ]; then
- exit 0;
-fi
-
-# Only do permanent changes if this is BIFH
-
-echo "$USER" | grep -q 'bifh[0-9]' || finish
-
-# prevent bash from killing the system
-rm -f /var/lib/bash/provide-sh
-
-# clean ~/.texmf-var to avoid trouble with stale things hiding there.
-rm -rf ~/.texmf-var/
-
-pfx="dpkg-checkbuilddeps: Unmet build dependencies:"
-deps=`real_dpkg_checkbuilddeps 2>&1 | grep "^$pfx" | \
- sed -e "s/$pfx//" -e s'/([^)]*)//g' -e 's/|//'`
-deps="$deps build-essential automake autoconf libtool ed gawk diff dpkg-dev"
-for d in $deps; do
- echo apt-get "$@" install $d
- apt-get -o DPkg::Options::=--force-confold -q --force-yes --yes install $d
-done
-apt-get -o DPkg::Options::=--force-confold -q --force-yes --yes dist-upgrade
-
-# Make sure we get a fresh fakeroot installation
-
-# We can't seem to control the value of LD_PRELOAD well enough, so we
-# just copy the good version of libfakeroot over the bad one that
-# Scratchbox uses. This will result in a good version of libfakeroot
-# talking to a bad version of faked, but that seems to work well
-# enough. The protocol between the two is really simple and unlikely
-# to change even when new syscalls are wrapped. And this is a
-# desperate hack anyway, so it's OK if there is blood all over the
-# floor from time to time.
-#
-# After we have overwritten libfakeroot, it no longer works with any
-# host binaries, such as the ones in /scratchbox/compilers/bin or
-# /scratchbox/tools/bin. Thus, we must avoid running those when
-# fakerooted.
-#
-# We use "cp -l" here to avoid overwriting a library that is in use.
-#
-if [ "$(fakeroot -v)" = "fakeroot version 1.4.2" ]; then
- apt-get -q --force-yes --yes --reinstall install fakeroot
- cp -fl /usr/lib/libfakeroot/libfakeroot-sysv.so /usr/lib/libfakeroot-sysv/libfakeroot.so.0
- cp -fl /usr/lib/libfakeroot/libfakeroot-tcp.so /usr/lib/libfakeroot-tcp/libfakeroot.so.0
-else
- echo "We have $(fakeroot -v), hurray!"
-fi
-
-touch $STAMP
-
-finish
diff --git a/src/3rdparty/libgq/debian/libgq-gconf-dev.install b/src/3rdparty/libgq/debian/libgq-gconf-dev.install
deleted file mode 100644
index b3d949f416..0000000000
--- a/src/3rdparty/libgq/debian/libgq-gconf-dev.install
+++ /dev/null
@@ -1,5 +0,0 @@
-usr/include/gq/GConfItem
-usr/include/gq/gconfitem.h
-usr/lib/libgq-gconf.so
-usr/lib/libgq-gconf.a
-usr/lib/pkgconfig/gq-gconf.pc
diff --git a/src/3rdparty/libgq/debian/libgq-gconf-doc.install b/src/3rdparty/libgq/debian/libgq-gconf-doc.install
deleted file mode 100644
index 9007055b25..0000000000
--- a/src/3rdparty/libgq/debian/libgq-gconf-doc.install
+++ /dev/null
@@ -1 +0,0 @@
-gconf/html usr/share/doc/libgq-gconf-doc/
diff --git a/src/3rdparty/libgq/debian/libgq-gconf0.install b/src/3rdparty/libgq/debian/libgq-gconf0.install
deleted file mode 100644
index 4ca628315b..0000000000
--- a/src/3rdparty/libgq/debian/libgq-gconf0.install
+++ /dev/null
@@ -1 +0,0 @@
-usr/lib/libgq-gconf.so.*
diff --git a/src/3rdparty/libgq/debian/maemo-sanitize b/src/3rdparty/libgq/debian/maemo-sanitize
deleted file mode 100644
index e69de29bb2..0000000000
--- a/src/3rdparty/libgq/debian/maemo-sanitize
+++ /dev/null
diff --git a/src/3rdparty/libgq/debian/rules b/src/3rdparty/libgq/debian/rules
deleted file mode 100755
index 1f293b3348..0000000000
--- a/src/3rdparty/libgq/debian/rules
+++ /dev/null
@@ -1,32 +0,0 @@
-#! /usr/bin/make -f
-
-# Sanitize build environment when running inside Scratchbox 1
-ifneq (,$(wildcard /targets))
- ifeq (,$(SBOX_DONT_SANITIZE))
- export PATH:=/bin:/usr/bin
- export MAKE:=make
- ifeq (,$(FAKEROOTKEY))
- export SBOX_REDIRECT_TO_DIRS:=/scratchbox/compilers/bin
- else
- export SBOX_REDIRECT_TO_DIRS:=
- endif
- ifneq (,$(shell debian/fixup-scratchbox))
- $(error Error)
- endif
- endif
-endif
-
-override_dh_auto_configure:
- ./autogen.sh
- dh_auto_configure
-
-override_dh_auto_build:
- dh_auto_build
- cd gconf && doxygen
-
-override_dh_strip:
- dh_strip -plibgq-gconf0 --dbg-package=libgq-gconf0-dbg
- dh_strip
-
-%:
- dh $@
diff --git a/src/3rdparty/libgq/gconf/Doxyfile b/src/3rdparty/libgq/gconf/Doxyfile
deleted file mode 100644
index 7f5c11a3d5..0000000000
--- a/src/3rdparty/libgq/gconf/Doxyfile
+++ /dev/null
@@ -1,1514 +0,0 @@
-# Doxyfile 1.6.1
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project
-#
-# All text after a hash (#) is considered a comment and will be ignored
-# The format is:
-# TAG = value [value, ...]
-# For lists items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (" ")
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all
-# text before the first occurrence of this tag. Doxygen uses libiconv (or the
-# iconv built into libc) for the transcoding. See
-# http://www.gnu.org/software/libiconv for the list of possible encodings.
-
-DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
-# by quotes) that should identify the project.
-
-PROJECT_NAME = gq-gconf
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number.
-# This could be handy for archiving the generated documentation or
-# if some version control system is used.
-
-PROJECT_NUMBER =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
-# base path where the generated documentation will be put.
-# If a relative path is entered, it will be relative to the location
-# where doxygen was started. If left blank the current directory will be used.
-
-OUTPUT_DIRECTORY =
-
-# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
-# 4096 sub-directories (in 2 levels) under the output directory of each output
-# format and will distribute the generated files over these directories.
-# Enabling this option can be useful when feeding doxygen a huge amount of
-# source files, where putting all generated files in the same directory would
-# otherwise cause performance problems for the file system.
-
-CREATE_SUBDIRS = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# The default language is English, other supported languages are:
-# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
-# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German,
-# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English
-# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian,
-# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak,
-# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese.
-
-OUTPUT_LANGUAGE = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
-# include brief member descriptions after the members that are listed in
-# the file and class documentation (similar to JavaDoc).
-# Set to NO to disable this.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator
-# that is used to form the text in various listings. Each string
-# in this list, if found as the leading text of the brief description, will be
-# stripped from the text and the result after processing the whole list, is
-# used as the annotated text. Otherwise, the brief description is used as-is.
-# If left blank, the following values are used ("$name" is automatically
-# replaced with the name of the entity): "The $name class" "The $name widget"
-# "The $name file" "is" "provides" "specifies" "contains"
-# "represents" "a" "an" "the"
-
-ABBREVIATE_BRIEF =
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# Doxygen will generate a detailed section even if there is only a brief
-# description.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
-# path before files name in the file list and in the header files. If set
-# to NO the shortest path that makes the file name unique will be used.
-
-FULL_PATH_NAMES = YES
-
-# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
-# can be used to strip a user-defined part of the path. Stripping is
-# only done if one of the specified strings matches the left-hand part of
-# the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the
-# path to strip.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
-# the path mentioned in the documentation of a class, which tells
-# the reader which header file to include in order to use a class.
-# If left blank only the name of the header file containing the class
-# definition is used. Otherwise one should specify the include paths that
-# are normally passed to the compiler using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
-# (but less readable) file names. This can be useful is your file systems
-# doesn't support long names like on DOS, Mac, or CD-ROM.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
-# will interpret the first line (until the first dot) of a JavaDoc-style
-# comment as the brief description. If set to NO, the JavaDoc
-# comments will behave just like regular Qt-style comments
-# (thus requiring an explicit @brief command for a brief description.)
-
-JAVADOC_AUTOBRIEF = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
-# interpret the first line (until the first dot) of a Qt-style
-# comment as the brief description. If set to NO, the comments
-# will behave just like regular Qt-style comments (thus requiring
-# an explicit \brief command for a brief description.)
-
-QT_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
-# treat a multi-line C++ special comment block (i.e. a block of //! or ///
-# comments) as a brief description. This used to be the default behaviour.
-# The new default is to treat a multi-line C++ comment block as a detailed
-# description. Set this tag to YES if you prefer the old behaviour instead.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
-# member inherits the documentation from any documented member that it
-# re-implements.
-
-INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
-# a new page for each member. If set to NO, the documentation of a member will
-# be part of the file/class/namespace that contains it.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab.
-# Doxygen uses this value to replace tabs by spaces in code fragments.
-
-TAB_SIZE = 8
-
-# This tag can be used to specify a number of aliases that acts
-# as commands in the documentation. An alias has the form "name=value".
-# For example adding "sideeffect=\par Side Effects:\n" will allow you to
-# put the command \sideeffect (or @sideeffect) in the documentation, which
-# will result in a user-defined paragraph with heading "Side Effects:".
-# You can put \n's in the value part of an alias to insert newlines.
-
-ALIASES =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
-# sources only. Doxygen will then generate output that is more tailored for C.
-# For instance, some of the names that are used will be different. The list
-# of all members will be omitted, etc.
-
-OPTIMIZE_OUTPUT_FOR_C = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for
-# Java. For instance, namespaces will be presented as packages, qualified
-# scopes will look different, etc.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources only. Doxygen will then generate output that is more tailored for
-# Fortran.
-
-OPTIMIZE_FOR_FORTRAN = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for
-# VHDL.
-
-OPTIMIZE_OUTPUT_VHDL = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it parses.
-# With this tag you can assign which parser to use for a given extension.
-# Doxygen has a built-in mapping, but you can override or extend it using this tag.
-# The format is ext=language, where ext is a file extension, and language is one of
-# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
-# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
-# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
-# use: inc=Fortran f=C. Note that for custom extensions you also need to set FILE_PATTERNS otherwise the files are not read by doxygen.
-
-EXTENSION_MAPPING =
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-
-BUILTIN_STL_SUPPORT = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-
-CPP_CLI_SUPPORT = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
-# Doxygen will parse them like normal C++ but will assume all classes use public
-# instead of private inheritance when no explicit protection keyword is present.
-
-SIP_SUPPORT = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate getter
-# and setter methods for a property. Setting this option to YES (the default)
-# will make doxygen to replace the get and set methods by a property in the
-# documentation. This will only work if the methods are indeed getting or
-# setting a simple type. If this is not the case, or you want to show the
-# methods anyway, you should set this option to NO.
-
-IDL_PROPERTY_SUPPORT = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES, then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
-# the same type (for instance a group of public functions) to be put as a
-# subgroup of that type (e.g. under the Public Functions section). Set it to
-# NO to prevent subgrouping. Alternatively, this can be done per class using
-# the \nosubgrouping command.
-
-SUBGROUPING = YES
-
-# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
-# is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically
-# be useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-
-TYPEDEF_HIDES_STRUCT = NO
-
-# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
-# determine which symbols to keep in memory and which to flush to disk.
-# When the cache is full, less often used symbols will be written to disk.
-# For small to medium size projects (<1000 input files) the default value is
-# probably good enough. For larger projects a too small cache size can cause
-# doxygen to be busy swapping symbols to and from disk most of the time
-# causing a significant performance penality.
-# If the system has enough physical memory increasing the cache will improve the
-# performance by keeping more symbols in memory. Note that the value works on
-# a logarithmic scale so increasing the size by one will rougly double the
-# memory usage. The cache size is given by this formula:
-# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
-# corresponding to a cache size of 2^16 = 65536 symbols
-
-SYMBOL_CACHE_SIZE = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
-# documentation are documented, even if no documentation was available.
-# Private class members and static file members will be hidden unless
-# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-
-EXTRACT_ALL = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
-# will be included in the documentation.
-
-EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_STATIC tag is set to YES all static members of a file
-# will be included in the documentation.
-
-EXTRACT_STATIC = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
-# defined locally in source files will be included in the documentation.
-# If set to NO only classes defined in header files are included.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. When set to YES local
-# methods, which are defined in the implementation section but not in
-# the interface are included in the documentation.
-# If set to NO (the default) only methods in the interface are included.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base
-# name of the file that contains the anonymous namespace. By default
-# anonymous namespace are hidden.
-
-EXTRACT_ANON_NSPACES = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
-# undocumented members of documented classes, files or namespaces.
-# If set to NO (the default) these members will be included in the
-# various overviews, but no documentation section is generated.
-# This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy.
-# If set to NO (the default) these classes will be included in the various
-# overviews. This option has no effect if EXTRACT_ALL is enabled.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
-# friend (class|struct|union) declarations.
-# If set to NO (the default) these declarations will be included in the
-# documentation.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
-# documentation blocks found inside the body of a function.
-# If set to NO (the default) these blocks will be appended to the
-# function's detailed documentation block.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation
-# that is typed after a \internal command is included. If the tag is set
-# to NO (the default) then the documentation will be excluded.
-# Set it to YES to include the internal documentation.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
-# file names in lower-case letters. If set to YES upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-
-CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
-# will show members with their full class and namespace scopes in the
-# documentation. If set to YES the scope will be hidden.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
-# will put a list of the files that are included by a file in the documentation
-# of that file.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
-# is inserted in the documentation for inline members.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
-# will sort the (detailed) documentation of file and class members
-# alphabetically by member name. If set to NO the members will appear in
-# declaration order.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
-# brief documentation of file, namespace and class members alphabetically
-# by member name. If set to NO (the default) the members will appear in
-# declaration order.
-
-SORT_BRIEF_DOCS = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the (brief and detailed) documentation of class members so that constructors and destructors are listed first. If set to NO (the default) the constructors will appear in the respective orders defined by SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
-# hierarchy of group names into alphabetical order. If set to NO (the default)
-# the group names will appear in their defined order.
-
-SORT_GROUP_NAMES = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
-# sorted by fully-qualified names, including namespaces. If set to
-# NO (the default), the class list will be sorted only by class name,
-# not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the
-# alphabetical list.
-
-SORT_BY_SCOPE_NAME = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or
-# disable (NO) the todo list. This list is created by putting \todo
-# commands in the documentation.
-
-GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or
-# disable (NO) the test list. This list is created by putting \test
-# commands in the documentation.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or
-# disable (NO) the bug list. This list is created by putting \bug
-# commands in the documentation.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
-# disable (NO) the deprecated list. This list is created by putting
-# \deprecated commands in the documentation.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional
-# documentation sections, marked by \if sectionname ... \endif.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
-# the initial value of a variable or define consists of for it to appear in
-# the documentation. If the initializer consists of more lines than specified
-# here it will be hidden. Use a value of 0 to hide initializers completely.
-# The appearance of the initializer of individual variables and defines in the
-# documentation can be controlled using \showinitializer or \hideinitializer
-# command in the documentation regardless of this setting.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
-# at the bottom of the documentation of classes and structs. If set to YES the
-# list will mention the files that were used to generate the documentation.
-
-SHOW_USED_FILES = YES
-
-# If the sources in your project are distributed over multiple directories
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
-# in the documentation. The default is NO.
-
-SHOW_DIRECTORIES = NO
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
-# This will remove the Files entry from the Quick Index and from the
-# Folder Tree View (if specified). The default is YES.
-
-SHOW_FILES = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
-# Namespaces page.
-# This will remove the Namespaces entry from the Quick Index
-# and from the Folder Tree View (if specified). The default is YES.
-
-SHOW_NAMESPACES = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
-
-FILE_VERSION_FILTER =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
-# doxygen. The layout file controls the global structure of the generated output files
-# in an output format independent way. The create the layout file that represents
-# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
-# file name after the option, if omitted DoxygenLayout.xml will be used as the name
-# of the layout file.
-
-LAYOUT_FILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated
-# by doxygen. Possible values are YES and NO. If left blank NO is used.
-
-QUIET = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated by doxygen. Possible values are YES and NO. If left blank
-# NO is used.
-
-WARNINGS = YES
-
-# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
-# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
-# automatically be disabled.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some
-# parameters in a documented function, or documenting parameters that
-# don't exist or using markup commands wrongly.
-
-WARN_IF_DOC_ERROR = YES
-
-# This WARN_NO_PARAMDOC option can be abled to get warnings for
-# functions that are documented, but have no documentation for their parameters
-# or return value. If set to NO (the default) doxygen will only warn about
-# wrong or incomplete parameter documentation, but not about the absence of
-# documentation.
-
-WARN_NO_PARAMDOC = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that
-# doxygen can produce. The string should contain the $file, $line, and $text
-# tags, which will be replaced by the file and line number from which the
-# warning originated and the warning text. Optionally the format may contain
-# $version, which will be replaced by the version of the file (if it could
-# be obtained via FILE_VERSION_FILTER)
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning
-# and error messages should be written. If left blank the output is written
-# to stderr.
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
-
-INPUT = gconfitem.h gconfitem.cpp
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
-# also the default input encoding. Doxygen uses libiconv (or the iconv built
-# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
-# the list of possible encodings.
-
-INPUT_ENCODING = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank the following patterns are tested:
-# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
-# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
-
-FILE_PATTERNS =
-
-# The RECURSIVE tag can be used to turn specify whether or not subdirectories
-# should be searched for input files as well. Possible values are YES and NO.
-# If left blank NO is used.
-
-RECURSIVE = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
-# directories that are symbolic links (a Unix filesystem feature) are excluded
-# from the input.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories. Note that the wildcards are matched
-# against the file with absolute path, so to exclude all test directories
-# for example use the pattern */test/*
-
-EXCLUDE_PATTERNS =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-
-EXCLUDE_SYMBOLS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or
-# directories that contain example code fragments that are included (see
-# the \include command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
-# and *.h) to filter out the source-files in the directories. If left
-# blank all files are included.
-
-EXAMPLE_PATTERNS =
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude
-# commands irrespective of the value of the RECURSIVE tag.
-# Possible values are YES and NO. If left blank NO is used.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or
-# directories that contain image that are included in the documentation (see
-# the \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command <filter> <input-file>, where <filter>
-# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
-# input file. Doxygen will then use the output that the filter program writes
-# to standard output.
-# If FILTER_PATTERNS is specified, this tag will be
-# ignored.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis.
-# Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match.
-# The filters are a list of the form:
-# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
-# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
-# is applied to all files.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will be used to filter the input files when producing source
-# files to browse (i.e. when SOURCE_BROWSER is set to YES).
-
-FILTER_SOURCE_FILES = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will
-# be generated. Documented entities will be cross-referenced with these sources.
-# Note: To get rid of all source code in the generated output, make sure also
-# VERBATIM_HEADERS is set to NO.
-
-SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body
-# of functions and classes directly in the documentation.
-
-INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
-# doxygen to hide any special comment blocks from generated source code
-# fragments. Normal C and C++ comments will always remain visible.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES
-# then for each documented function all documented
-# functions referencing it will be listed.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES
-# then for each documented function all documented entities
-# called/used by that function will be listed.
-
-REFERENCES_RELATION = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
-# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
-# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
-# link to the source code.
-# Otherwise they will link to the documentation.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code
-# will point to the HTML generated by the htags(1) tool instead of doxygen
-# built-in source browser. The htags tool is part of GNU's global source
-# tagging system (see http://www.gnu.org/software/global/global.html). You
-# will need version 4.8.6 or higher.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
-# will generate a verbatim copy of the header file for each class for
-# which an include is specified. Set to NO to disable this.
-
-VERBATIM_HEADERS = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
-# of all compounds will be generated. Enable this if the project
-# contains a lot of classes, structs, unions or interfaces.
-
-ALPHABETICAL_INDEX = NO
-
-# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
-# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
-# in which this list will be split (can be a number in the range [1..20])
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all
-# classes will be put under the same header in the alphabetical index.
-# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
-# should be ignored while generating the index headers.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
-# generate HTML output.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `html' will be used as the default path.
-
-HTML_OUTPUT = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
-# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
-# doxygen will generate files with .html extension.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a personal HTML header for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard header.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a personal HTML footer for
-# each generated HTML page. If it is left blank doxygen will generate a
-# standard footer.
-
-HTML_FOOTER =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
-# style sheet that is used by each HTML page. It can be used to
-# fine-tune the look of the HTML output. If the tag is left blank doxygen
-# will generate a default style sheet. Note that doxygen will try to copy
-# the style sheet file to the HTML output directory, so don't put your own
-# stylesheet in the HTML output directory as well, or it will be erased!
-
-HTML_STYLESHEET =
-
-# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
-# files or namespaces will be aligned in HTML using tables. If set to
-# NO a bullet list will be used.
-
-HTML_ALIGN_MEMBERS = YES
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded. For this to work a browser that supports
-# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
-# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
-
-HTML_DYNAMIC_SECTIONS = NO
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files
-# will be generated that can be used as input for Apple's Xcode 3
-# integrated development environment, introduced with OSX 10.5 (Leopard).
-# To create a documentation set, doxygen will generate a Makefile in the
-# HTML output directory. Running make will produce the docset in that
-# directory and running "make install" will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
-# it at startup.
-# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
-
-GENERATE_DOCSET = NO
-
-# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
-# feed. A documentation feed provides an umbrella under which multiple
-# documentation sets from a single provider (such as a company or product suite)
-# can be grouped.
-
-DOCSET_FEEDNAME = "Doxygen generated docs"
-
-# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
-# should uniquely identify the documentation set bundle. This should be a
-# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
-# will append .docset to the name.
-
-DOCSET_BUNDLE_ID = org.doxygen.Project
-
-# If the GENERATE_HTMLHELP tag is set to YES, additional index files
-# will be generated that can be used as input for tools like the
-# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
-# of the generated HTML documentation.
-
-GENERATE_HTMLHELP = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
-# be used to specify the file name of the resulting .chm file. You
-# can add a path in front of the file if the result should not be
-# written to the html output directory.
-
-CHM_FILE =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
-# be used to specify the location (absolute path including file name) of
-# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
-# the HTML help compiler on the generated index.hhp.
-
-HHC_LOCATION =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
-# controls if a separate .chi index file is generated (YES) or that
-# it should be included in the master .chm file (NO).
-
-GENERATE_CHI = NO
-
-# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
-# is used to encode HtmlHelp index (hhk), content (hhc) and project file
-# content.
-
-CHM_INDEX_ENCODING =
-
-# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
-# controls whether a binary table of contents is generated (YES) or a
-# normal table of contents (NO) in the .chm file.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members
-# to the contents of the HTML help documentation and to the tree view.
-
-TOC_EXPAND = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
-# are set, an additional index file will be generated that can be used as input for
-# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
-# HTML documentation.
-
-GENERATE_QHP = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
-# be used to specify the file name of the resulting .qch file.
-# The path specified is relative to the HTML output folder.
-
-QCH_FILE =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#namespace
-
-QHP_NAMESPACE =
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
-# Qt Help Project output. For more information please see
-# http://doc.trolltech.com/qthelpproject.html#virtual-folders
-
-QHP_VIRTUAL_FOLDER = doc
-
-# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
-# For more information please see
-# http://doc.trolltech.com/qthelpproject.html#custom-filters
-
-QHP_CUST_FILTER_NAME =
-
-# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
-# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
-
-QHP_CUST_FILTER_ATTRS =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
-# filter section matches.
-# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
-
-QHP_SECT_FILTER_ATTRS =
-
-# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
-# be used to specify the location of Qt's qhelpgenerator.
-# If non-empty doxygen will try to run qhelpgenerator on the generated
-# .qhp file.
-
-QHG_LOCATION =
-
-# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
-# top of each HTML page. The value NO (the default) enables the index and
-# the value YES disables it.
-
-DISABLE_INDEX = NO
-
-# This tag can be used to set the number of enum values (range [1..20])
-# that doxygen will group on one line in the generated HTML documentation.
-
-ENUM_VALUES_PER_LINE = 4
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information.
-# If the tag value is set to YES, a side panel will be generated
-# containing a tree-like index structure (just like the one that
-# is generated for HTML Help). For this to work a browser that supports
-# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser).
-# Windows users are probably better off using the HTML help feature.
-
-GENERATE_TREEVIEW = NO
-
-# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories,
-# and Class Hierarchy pages using a tree view instead of an ordered list.
-
-USE_INLINE_TREES = NO
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
-# used to set the initial width (in pixels) of the frame in which the tree
-# is shown.
-
-TREEVIEW_WIDTH = 250
-
-# Use this tag to change the font size of Latex formulas included
-# as images in the HTML documentation. The default is 10. Note that
-# when you change the font size after a successful doxygen run you need
-# to manually remove any form_*.png images from the HTML output directory
-# to force them to be regenerated.
-
-FORMULA_FONTSIZE = 10
-
-# When the SEARCHENGINE tag is enable doxygen will generate a search box for the HTML output. The underlying search engine uses javascript
-# and DHTML and should work on any modern browser. Note that when using HTML help (GENERATE_HTMLHELP) or Qt help (GENERATE_QHP)
-# there is already a search function so this one should typically
-# be disabled.
-
-SEARCHENGINE = YES
-
-#---------------------------------------------------------------------------
-# configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
-# generate Latex output.
-
-GENERATE_LATEX = NO
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `latex' will be used as the default path.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked. If left blank `latex' will be used as the default command name.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
-# generate index for LaTeX. If left blank `makeindex' will be used as the
-# default command name.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
-# LaTeX documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used
-# by the printer. Possible values are: a4, a4wide, letter, legal and
-# executive. If left blank a4wide will be used.
-
-PAPER_TYPE = a4wide
-
-# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
-# packages that should be included in the LaTeX output.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
-# the generated latex document. The header should contain everything until
-# the first chapter. If it is left blank doxygen will generate a
-# standard header. Notice: only use this tag if you know what you are doing!
-
-LATEX_HEADER =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
-# is prepared for conversion to pdf (using ps2pdf). The pdf file will
-# contain links (just like the HTML output) instead of page references
-# This makes the output suitable for online browsing using a pdf viewer.
-
-PDF_HYPERLINKS = YES
-
-# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
-# plain latex in the generated Makefile. Set this option to YES to get a
-# higher quality PDF documentation.
-
-USE_PDFLATEX = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
-# command to the generated LaTeX files. This will instruct LaTeX to keep
-# running if errors occur, instead of asking the user for help.
-# This option is also used when generating formulas in HTML.
-
-LATEX_BATCHMODE = NO
-
-# If LATEX_HIDE_INDICES is set to YES then doxygen will not
-# include the index chapters (such as File Index, Compound Index, etc.)
-# in the output.
-
-LATEX_HIDE_INDICES = NO
-
-# If LATEX_SOURCE_CODE is set to YES then doxygen will include source code with syntax highlighting in the LaTeX output. Note that which sources are shown also depends on other settings such as SOURCE_BROWSER.
-
-LATEX_SOURCE_CODE = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
-# The RTF output is optimized for Word 97 and may not look very pretty with
-# other RTF readers or editors.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `rtf' will be used as the default path.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
-# RTF documents. This may be useful for small projects and may help to
-# save some trees in general.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
-# will contain hyperlink fields. The RTF file will
-# contain links (just like the HTML output) instead of page references.
-# This makes the output suitable for online browsing using WORD or other
-# programs which support those fields.
-# Note: wordpad (write) and others do not support links.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's
-# config file, i.e. a series of assignments. You only have to provide
-# replacements, missing definitions are set to their default value.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an rtf document.
-# Syntax is similar to doxygen's config file.
-
-RTF_EXTENSIONS_FILE =
-
-#---------------------------------------------------------------------------
-# configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
-# generate man pages
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `man' will be used as the default path.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to
-# the generated man pages (default is the subroutine's section .3)
-
-MAN_EXTENSION = .3
-
-# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
-# then it will generate one additional man file for each entity
-# documented in the real man page(s). These additional files
-# only source the real man page, but without them the man command
-# would be unable to find the correct page. The default is NO.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES Doxygen will
-# generate an XML file that captures the structure of
-# the code including all documentation.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be
-# put in front of it. If left blank `xml' will be used as the default path.
-
-XML_OUTPUT = xml
-
-# The XML_SCHEMA tag can be used to specify an XML schema,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_SCHEMA =
-
-# The XML_DTD tag can be used to specify an XML DTD,
-# which can be used by a validating XML parser to check the
-# syntax of the XML files.
-
-XML_DTD =
-
-# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
-# dump the program listings (including syntax highlighting
-# and cross-referencing information) to the XML output. Note that
-# enabling this will significantly increase the size of the XML output.
-
-XML_PROGRAMLISTING = YES
-
-#---------------------------------------------------------------------------
-# configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
-# generate an AutoGen Definitions (see autogen.sf.net) file
-# that captures the structure of the code including all
-# documentation. Note that this feature is still experimental
-# and incomplete at the moment.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES Doxygen will
-# generate a Perl module file that captures the structure of
-# the code including all documentation. Note that this
-# feature is still experimental and incomplete at the
-# moment.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
-# the necessary Makefile rules, Perl scripts and LaTeX code to be able
-# to generate PDF and DVI output from the Perl module output.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
-# nicely formatted so it can be parsed by a human reader.
-# This is useful
-# if you want to understand what is going on.
-# On the other hand, if this
-# tag is set to NO the size of the Perl module output will be much smaller
-# and Perl will parse it just the same.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file
-# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
-# This is useful so different doxyrules.make files included by the same
-# Makefile don't overwrite each other's variables.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
-# evaluate all C-preprocessor directives found in the sources and include
-# files.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
-# names in the source code. If set to NO (the default) only conditional
-# compilation will be performed. Macro expansion can be done in a controlled
-# way by setting EXPAND_ONLY_PREDEF to YES.
-
-MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
-# then the macro expansion is limited to the macros specified with the
-# PREDEFINED and EXPAND_AS_DEFINED tags.
-
-EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
-# in the INCLUDE_PATH (see below) will be search if a #include is found.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by
-# the preprocessor.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will
-# be used.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that
-# are defined before the preprocessor is started (similar to the -D option of
-# gcc). The argument of the tag is a list of macros of the form: name
-# or name=definition (no spaces). If the definition and the = are
-# omitted =1 is assumed. To prevent a macro definition from being
-# undefined via #undef or recursively expanded use the := operator
-# instead of the = operator.
-
-PREDEFINED =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
-# this tag can be used to specify a list of macro names that should be expanded.
-# The macro definition that is found in the sources will be used.
-# Use the PREDEFINED tag if you want to use a different macro definition.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
-# doxygen's preprocessor will remove all function-like macros that are alone
-# on a line, have an all uppercase name, and do not end with a semicolon. Such
-# function macros are typically used for boiler-plate code, and will confuse
-# the parser if not removed.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration::additions related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES option can be used to specify one or more tagfiles.
-# Optionally an initial location of the external documentation
-# can be added for each tagfile. The format of a tag file without
-# this location is as follows:
-#
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-#
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where "loc1" and "loc2" can be relative or absolute paths or
-# URLs. If a location is present for each tag, the installdox tool
-# does not have to be run to correct the links.
-# Note that each tag file must have a unique name
-# (where the name does NOT include the path)
-# If a tag file is not located in the directory in which doxygen
-# is run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create
-# a tag file that is based on the input files it reads.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES all external classes will be listed
-# in the class index. If set to NO only the inherited external classes
-# will be listed.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will
-# be listed.
-
-EXTERNAL_GROUPS = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of `which perl').
-
-PERL_PATH = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
-# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
-# or super classes. Setting the tag to NO turns the diagrams off. Note that
-# this option is superseded by the HAVE_DOT option below. This is only a
-# fallback. It is recommended to install and use dot, since it yields more
-# powerful graphs.
-
-CLASS_DIAGRAMS = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see
-# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH =
-
-# If set to YES, the inheritance and collaboration graphs will hide
-# inheritance and usage relations if the target is undocumented
-# or is not a class.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz, a graph visualization
-# toolkit from AT&T and Lucent Bell Labs. The other options in this section
-# have no effect if this option is set to NO (the default)
-
-HAVE_DOT = NO
-
-# By default doxygen will write a font called FreeSans.ttf to the output
-# directory and reference it in all dot files that doxygen generates. This
-# font does not include all possible unicode characters however, so when you need
-# these (or just want a differently looking font) you can specify the font name
-# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
-# which can be done by putting it in a standard location or by setting the
-# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
-# containing the font.
-
-DOT_FONTNAME = FreeSans
-
-# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
-# The default size is 10pt.
-
-DOT_FONTSIZE = 10
-
-# By default doxygen will tell dot to use the output directory to look for the
-# FreeSans.ttf font (which doxygen will put there itself). If you specify a
-# different font using DOT_FONTNAME you can set the path where dot
-# can find it using this tag.
-
-DOT_FONTPATH =
-
-# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect inheritance relations. Setting this tag to YES will force the
-# the CLASS_DIAGRAMS tag to NO.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for each documented class showing the direct and
-# indirect implementation dependencies (inheritance, containment, and
-# class references variables) of the class with other documented classes.
-
-COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
-# will generate a graph for groups, showing the direct groups dependencies
-
-GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-
-UML_LOOK = NO
-
-# If set to YES, the inheritance and collaboration graphs will show the
-# relations between templates and their instances.
-
-TEMPLATE_RELATIONS = NO
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
-# tags are set to YES then doxygen will generate a graph for each documented
-# file showing the direct and indirect include dependencies of the file with
-# other documented files.
-
-INCLUDE_GRAPH = YES
-
-# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
-# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
-# documented header file showing the documented files that directly or
-# indirectly include this file.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH and HAVE_DOT options are set to YES then
-# doxygen will generate a call dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable call graphs
-# for selected functions only using the \callgraph command.
-
-CALL_GRAPH = NO
-
-# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
-# doxygen will generate a caller dependency graph for every global function
-# or class method. Note that enabling this option will significantly increase
-# the time of a run. So in most cases it will be better to enable caller
-# graphs for selected functions only using the \callergraph command.
-
-CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
-# will graphical hierarchy of all classes instead of a textual one.
-
-GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
-# then doxygen will show the dependencies a directory has on other directories
-# in a graphical way. The dependency relations are determined by the #include
-# relations between the files in the directories.
-
-DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. Possible values are png, jpg, or gif
-# If left blank png will be used.
-
-DOT_IMAGE_FORMAT = png
-
-# The tag DOT_PATH can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the
-# \dotfile command).
-
-DOTFILE_DIRS =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
-# nodes that will be shown in the graph. If the number of nodes in a graph
-# becomes larger than this value, doxygen will truncate the graph, which is
-# visualized by representing a node as a red box. Note that doxygen if the
-# number of direct children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
-# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-
-DOT_GRAPH_MAX_NODES = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
-# graphs generated by dot. A depth value of 3 means that only nodes reachable
-# from the root by following a path via at most 3 edges will be shown. Nodes
-# that lay further from the root node will be omitted. Note that setting this
-# option to 1 or 2 may greatly reduce the computation time needed for large
-# code bases. Also note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-
-MAX_DOT_GRAPH_DEPTH = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not
-# seem to support this out of the box. Warning: Depending on the platform used,
-# enabling this option may lead to badly anti-aliased labels on the edges of
-# a graph (i.e. they become hard to read).
-
-DOT_TRANSPARENT = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10)
-# support this, this feature is disabled by default.
-
-DOT_MULTI_TARGETS = YES
-
-# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
-# generate a legend page explaining the meaning of the various boxes and
-# arrows in the dot generated graphs.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
-# remove the intermediate dot files that are used to generate
-# the various graphs.
-
-DOT_CLEANUP = YES
diff --git a/src/3rdparty/libgq/gconf/GConfItem b/src/3rdparty/libgq/gconf/GConfItem
deleted file mode 100644
index 0a5867141d..0000000000
--- a/src/3rdparty/libgq/gconf/GConfItem
+++ /dev/null
@@ -1 +0,0 @@
-#include "gconfitem.h"
diff --git a/src/3rdparty/libgq/gconf/Makefile.am b/src/3rdparty/libgq/gconf/Makefile.am
deleted file mode 100644
index 353970d452..0000000000
--- a/src/3rdparty/libgq/gconf/Makefile.am
+++ /dev/null
@@ -1,37 +0,0 @@
-AM_CXXFLAGS = $(QT_CFLAGS) $(GLIB_CFLAGS) $(GCONF_CFLAGS)
-LIBS += $(QT_LIBS) $(GLIB_LIBS) $(GCONF_LIBS)
-
-lib_LTLIBRARIES = libgq-gconf.la
-
-libgq_gconf_la_SOURCES = GConfItem \
- gconfitem.h \
- gconfitem.cpp \
- gconfitem_moc.cpp
-
-gqincludedir=$(includedir)/gq
-gqinclude_HEADERS = gconfitem.h GConfItem
-
-pkgconfigdir = $(libdir)/pkgconfig
-pkgconfig_DATA = gq-gconf.pc
-
-# Tests
-
-check_PROGRAMS = test-gconf
-
-test_gconf_SOURCES = test-gconf.h test-gconf.cpp test-gconf_moc.cpp
-test_gconf_CFLAGS = $(QTEST_CFLAGS)
-test_gconf_LDADD = libgq-gconf.la $(QTEST_LIBS)
-
-TESTS = run-test-gconf
-
-EXTRA_DIST = run-test-gconf
-
-# Moccing
-
-%_moc.cpp: %.h
- $(MOC) -o "$@" "$<"
-
-clean-moc:
- rm -f *_moc.cpp *_moc.lo
-
-clean-local: clean-moc
diff --git a/src/3rdparty/libgq/gconf/gconfitem.cpp b/src/3rdparty/libgq/gconf/gconfitem.cpp
deleted file mode 100644
index d8c565a7c9..0000000000
--- a/src/3rdparty/libgq/gconf/gconfitem.cpp
+++ /dev/null
@@ -1,376 +0,0 @@
-/* * This file is part of libgq *
- *
- * Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
- * All rights reserved.
- *
- * Contact: Marius Vollmer <marius.vollmer@nokia.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
- *
- */
-
-#include <QString>
-#include <QStringList>
-#include <QByteArray>
-#include <QVariant>
-#include <QtDebug>
-
-#include "gconfitem.h"
-
-#include <glib.h>
-#include <gconf/gconf-value.h>
-#include <gconf/gconf-client.h>
-
-struct GConfItemPrivate {
- QString key;
- QVariant value;
- guint notify_id;
-
- static void notify_trampoline(GConfClient*, guint, GConfEntry *, gpointer);
-};
-
-/* We get the default client and never release it, on purpose, to
- avoid disconnecting from the GConf daemon when a program happens to
- not have any GConfItems for short periods of time.
- */
-static GConfClient *
-get_gconf_client ()
-{
- static bool initialized = false;
- static GConfClient *client;
-
- if (initialized)
- return client;
-
- g_type_init ();
- client = gconf_client_get_default();
- initialized = true;
-
- return client;
-}
-
-/* Sometimes I like being too clever...
- */
-#define withClient(c) for (GConfClient *c = get_gconf_client (); c; c = NULL)
-
-static QByteArray convertKey (QString key)
-{
- if (key.startsWith('/'))
- return key.toUtf8();
- else
- {
- qWarning() << "Using dot-separated key names with GConfItem is deprecated.";
- qWarning() << "Please use" << '/' + key.replace('.', '/') << "instead of" << key;
- return '/' + key.replace('.', '/').toUtf8();
- }
-}
-
-static QString convertKey(const char *key)
-{
- return QString::fromUtf8(key);
-}
-
-static QVariant convertValue(GConfValue *src)
-{
- if (!src) {
- return QVariant();
- } else {
- switch (src->type) {
- case GCONF_VALUE_INVALID:
- return QVariant(QVariant::Invalid);
- case GCONF_VALUE_BOOL:
- return QVariant((bool)gconf_value_get_bool(src));
- case GCONF_VALUE_INT:
- return QVariant(gconf_value_get_int(src));
- case GCONF_VALUE_FLOAT:
- return QVariant(gconf_value_get_float(src));
- case GCONF_VALUE_STRING:
- return QVariant(QString::fromUtf8(gconf_value_get_string(src)));
- case GCONF_VALUE_LIST:
- switch (gconf_value_get_list_type(src)) {
- case GCONF_VALUE_STRING:
- {
- QStringList result;
- for (GSList *elts = gconf_value_get_list(src); elts; elts = elts->next)
- result.append(QString::fromUtf8(gconf_value_get_string((GConfValue *)elts->data)));
- return QVariant(result);
- }
- default:
- {
- QList<QVariant> result;
- for (GSList *elts = gconf_value_get_list(src); elts; elts = elts->next)
- result.append(convertValue((GConfValue *)elts->data));
- return QVariant(result);
- }
- }
- case GCONF_VALUE_SCHEMA:
- default:
- return QVariant();
- }
- }
-}
-
-static GConfValue *convertString(const QString &str)
-{
- GConfValue *v = gconf_value_new (GCONF_VALUE_STRING);
- gconf_value_set_string (v, str.toUtf8().data());
- return v;
-}
-
-static GConfValueType primitiveType (const QVariant &elt)
-{
- switch(elt.type()) {
- case QVariant::String:
- return GCONF_VALUE_STRING;
- case QVariant::Int:
- return GCONF_VALUE_INT;
- case QVariant::Double:
- return GCONF_VALUE_FLOAT;
- case QVariant::Bool:
- return GCONF_VALUE_BOOL;
- default:
- return GCONF_VALUE_INVALID;
- }
-}
-
-static GConfValueType uniformType(const QList<QVariant> &list)
-{
- GConfValueType result = GCONF_VALUE_INVALID;
-
- foreach (const QVariant &elt, list) {
- GConfValueType elt_type = primitiveType (elt);
-
- if (elt_type == GCONF_VALUE_INVALID)
- return GCONF_VALUE_INVALID;
-
- if (result == GCONF_VALUE_INVALID)
- result = elt_type;
- else if (result != elt_type)
- return GCONF_VALUE_INVALID;
- }
-
- if (result == GCONF_VALUE_INVALID)
- return GCONF_VALUE_STRING; // empty list.
- else
- return result;
-}
-
-static int convertValue(const QVariant &src, GConfValue **valp)
-{
- GConfValue *v;
-
- switch(src.type()) {
- case QVariant::Invalid:
- v = NULL;
- break;
- case QVariant::Bool:
- v = gconf_value_new (GCONF_VALUE_BOOL);
- gconf_value_set_bool (v, src.toBool());
- break;
- case QVariant::Int:
- v = gconf_value_new (GCONF_VALUE_INT);
- gconf_value_set_int (v, src.toInt());
- break;
- case QVariant::Double:
- v = gconf_value_new (GCONF_VALUE_FLOAT);
- gconf_value_set_float (v, src.toDouble());
- break;
- case QVariant::String:
- v = convertString(src.toString());
- break;
- case QVariant::StringList:
- {
- GSList *elts = NULL;
- v = gconf_value_new(GCONF_VALUE_LIST);
- gconf_value_set_list_type(v, GCONF_VALUE_STRING);
- foreach (const QString &str, src.toStringList())
- elts = g_slist_prepend(elts, convertString(str));
- gconf_value_set_list_nocopy(v, g_slist_reverse(elts));
- break;
- }
- case QVariant::List:
- {
- GConfValueType elt_type = uniformType(src.toList());
- if (elt_type == GCONF_VALUE_INVALID)
- v = NULL;
- else
- {
- GSList *elts = NULL;
- v = gconf_value_new(GCONF_VALUE_LIST);
- gconf_value_set_list_type(v, elt_type);
- foreach (const QVariant &elt, src.toList())
- {
- GConfValue *val = NULL;
- convertValue(elt, &val); // guaranteed to succeed.
- elts = g_slist_prepend(elts, val);
- }
- gconf_value_set_list_nocopy(v, g_slist_reverse(elts));
- }
- break;
- }
- default:
- return 0;
- }
-
- *valp = v;
- return 1;
-}
-
-void GConfItemPrivate::notify_trampoline (GConfClient*,
- guint,
- GConfEntry *,
- gpointer data)
-{
- GConfItem *item = (GConfItem *)data;
- item->update_value (true);
-}
-
-void GConfItem::update_value (bool emit_signal)
-{
- QVariant new_value;
-
- withClient(client) {
- GError *error = NULL;
- QByteArray k = convertKey(priv->key);
- GConfValue *v = gconf_client_get(client, k.data(), &error);
-
- if (error) {
- qWarning() << error->message;
- g_error_free (error);
- new_value = priv->value;
- } else {
- new_value = convertValue(v);
- if (v)
- gconf_value_free(v);
- }
- }
-
- if (new_value != priv->value) {
- priv->value = new_value;
- if (emit_signal)
- emit valueChanged();
- }
-}
-
-QString GConfItem::key() const
-{
- return priv->key;
-}
-
-QVariant GConfItem::value() const
-{
- return priv->value;
-}
-
-QVariant GConfItem::value(const QVariant &def) const
-{
- if (priv->value.isNull())
- return def;
- else
- return priv->value;
-}
-
-void GConfItem::set(const QVariant &val)
-{
- withClient(client) {
- QByteArray k = convertKey(priv->key);
- GConfValue *v;
- if (convertValue(val, &v)) {
- GError *error = NULL;
-
- if (v) {
- gconf_client_set(client, k.data(), v, &error);
- gconf_value_free(v);
- } else {
- gconf_client_unset(client, k.data(), &error);
- }
-
- if (error) {
- qWarning() << error->message;
- g_error_free(error);
- } else if (priv->value != val) {
- priv->value = val;
- emit valueChanged();
- }
-
- } else
- qWarning() << "Can't store a" << val.typeName();
- }
-}
-
-void GConfItem::unset() {
- set(QVariant());
-}
-
-QList<QString> GConfItem::listDirs() const
-{
- QList<QString> children;
-
- withClient(client) {
- QByteArray k = convertKey(priv->key);
- GSList *dirs = gconf_client_all_dirs(client, k.data(), NULL);
- for (GSList *d = dirs; d; d = d->next) {
- children.append(convertKey((char *)d->data));
- g_free (d->data);
- }
- g_slist_free (dirs);
- }
-
- return children;
-}
-
-QList<QString> GConfItem::listEntries() const
-{
- QList<QString> children;
-
- withClient(client) {
- QByteArray k = convertKey(priv->key);
- GSList *entries = gconf_client_all_entries(client, k.data(), NULL);
- for (GSList *e = entries; e; e = e->next) {
- children.append(convertKey(((GConfEntry *)e->data)->key));
- gconf_entry_free ((GConfEntry *)e->data);
- }
- g_slist_free (entries);
- }
-
- return children;
-}
-
-GConfItem::GConfItem(const QString &key, QObject *parent)
- : QObject (parent)
-{
- priv = new GConfItemPrivate;
- priv->key = key;
- priv->notify_id = 0;
- withClient(client) {
- update_value (false);
- QByteArray k = convertKey(priv->key);
- gconf_client_add_dir (client, k.data(), GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
- priv->notify_id = gconf_client_notify_add (client, k.data(),
- GConfItemPrivate::notify_trampoline, this,
- NULL, NULL);
- }
-}
-
-GConfItem::~GConfItem()
-{
- withClient(client) {
- QByteArray k = convertKey(priv->key);
- if (priv->notify_id)
- gconf_client_notify_remove (client, priv->notify_id);
- gconf_client_remove_dir (client, k.data(), NULL);
- }
- delete priv;
-}
diff --git a/src/3rdparty/libgq/gconf/gconfitem.h b/src/3rdparty/libgq/gconf/gconfitem.h
deleted file mode 100644
index 17ca04e74a..0000000000
--- a/src/3rdparty/libgq/gconf/gconfitem.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/* * This file is part of libgq *
- *
- * Copyright (C) 2009 Nokia Corporation.
- *
- * Contact: Marius Vollmer <marius.vollmer@nokia.com>
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public License
- * version 2.1 as published by the Free Software Foundation.
- *
- * This library is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA
- *
- */
-
-#ifndef GCONFITEM_H
-#define GCONFITEM_H
-
-#include <QVariant>
-#include <QStringList>
-#include <QObject>
-
-/*!
-
- \brief GConfItem is a simple C++ wrapper for GConf.
-
- Creating a GConfItem instance gives you access to a single GConf
- key. You can get and set its value, and connect to its
- valueChanged() signal to be notified about changes.
-
- The value of a GConf key is returned to you as a QVariant, and you
- pass in a QVariant when setting the value. GConfItem converts
- between a QVariant and GConf values as needed, and according to the
- following rules:
-
- - A QVariant of type QVariant::Invalid denotes an unset GConf key.
-
- - QVariant::Int, QVariant::Double, QVariant::Bool are converted to
- and from the obvious equivalents.
-
- - QVariant::String is converted to/from a GConf string and always
- uses the UTF-8 encoding. No other encoding is supported.
-
- - QVariant::StringList is converted to a list of UTF-8 strings.
-
- - QVariant::List (which denotes a QList<QVariant>) is converted
- to/from a GConf list. All elements of such a list must have the
- same type, and that type must be one of QVariant::Int,
- QVariant::Double, QVariant::Bool, or QVariant::String. (A list of
- strings is returned as a QVariant::StringList, however, when you
- get it back.)
-
- - Any other QVariant or GConf value is essentially ignored.
-
- \warning GConfItem is as thread-safe as GConf.
-
-*/
-
-class GConfItem : public QObject
-{
- Q_OBJECT
-
- public:
- /*! Initializes a GConfItem to access the GConf key denoted by
- \a key. Key names should follow the normal GConf conventions
- like "/myapp/settings/first".
-
- \param key The name of the key.
- \param parent Parent object
- */
- explicit GConfItem(const QString &key, QObject *parent = 0);
-
- /*! Finalizes a GConfItem.
- */
- virtual ~GConfItem();
-
- /*! Returns the key of this item, as given to the constructor.
- */
- QString key() const;
-
- /*! Returns the current value of this item, as a QVariant.
- */
- QVariant value() const;
-
- /*! Returns the current value of this item, as a QVariant. If
- * there is no value for this item, return \a def instead.
- */
- QVariant value(const QVariant &def) const;
-
- /*! Set the value of this item to \a val. If \a val can not be
- represented in GConf or GConf refuses to accept it for other
- reasons, the current value is not changed and nothing happens.
-
- When the new value is different from the old value, the
- changedValue() signal is emitted on this GConfItem as part
- of calling set(), but other GConfItem:s for the same key do
- only receive a notification once the main loop runs.
-
- \param val The new value.
- */
- void set(const QVariant &val);
-
- /*! Unset this item. This is equivalent to
-
- \code
- item.set(QVariant(QVariant::Invalid));
- \endcode
- */
- void unset();
-
- /*! Return a list of the directories below this item. The
- returned strings are absolute key names like
- "/myapp/settings".
-
- A directory is a key that has children. The same key might
- also have a value, but that is confusing and best avoided.
- */
- QList<QString> listDirs() const;
-
- /*! Return a list of entries below this item. The returned
- strings are absolute key names like "/myapp/settings/first".
-
- A entry is a key that has a value. The same key might also
- have children, but that is confusing and is best avoided.
- */
- QList<QString> listEntries() const;
-
- signals:
- /*! Emitted when the value of this item has changed.
- */
- void valueChanged();
-
- private:
- friend struct GConfItemPrivate;
- struct GConfItemPrivate *priv;
-
- void update_value(bool emit_signal);
-};
-
-#endif // GCONFITEM_H
diff --git a/src/3rdparty/libgq/gconf/gq-gconf.pc.in b/src/3rdparty/libgq/gconf/gq-gconf.pc.in
deleted file mode 100644
index bd76d65423..0000000000
--- a/src/3rdparty/libgq/gconf/gq-gconf.pc.in
+++ /dev/null
@@ -1,11 +0,0 @@
-prefix=@prefix@
-exec_prefix=@exec_prefix@
-libdir=@libdir@
-includedir=@includedir@
-
-Name: gq-gconf
-Description: Qt/GConf wrapper
-Version: @VERSION@
-Requires: QtCore
-Libs: -L${libdir} -lgq-gconf
-Cflags: -I${includedir}/gq
diff --git a/src/3rdparty/libgq/gconf/run-test-gconf b/src/3rdparty/libgq/gconf/run-test-gconf
deleted file mode 100755
index 67f90907c0..0000000000
--- a/src/3rdparty/libgq/gconf/run-test-gconf
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/bin/sh
-
-# please make sure that the en_US.UTF-8 locale is available!
-# - apt-get install locales
-# - make sure /etc/locale.gen contains the line "en_US.UTF-8 UTF-8"
-# - run /usr/sbin/locale-gen
-LC_ALL=en_US.UTF-8
-export LC_ALL
-
-gconftool-2 -s -t bool /Test/Bool true
-VALUE=$(gconftool-2 -g /Test/Bool)
-if [ "$VALUE" != "true" ]; then
- echo "GConf is not running, skipping all tests"
- exit 77
-fi
-
-# Setup values expected by the external_values() test.
-
-gconftool-2 -s -t int /Test/Int 123
-gconftool-2 -s -t string /Test/String "Hello GConf"
-gconftool-2 -s -t float /Test/Double 3.5
-gconftool-2 -s -t list --list-type string /Test/StringList "[Hello,GConf,ÄÖÜ]"
-gconftool-2 -s -t list --list-type int /Test/IntList "[1,2,3,4]"
-gconftool-2 -s -t list --list-type float /Test/DoubleList "[3.5,3.5,3.5]"
-gconftool-2 -s -t list --list-type bool /Test/BoolList "[false,true,true,false]"
-gconftool-2 -u /Test/UnsetBefore
-gconftool-2 -s -t int /Test/UnsetAfter 100
-gconftool-2 -s -t int /Test/Dir/Entry 200
-
-./test-gconf $* || exit 1
-
-# Check what set_external() has left behind.
-
-compare() {
- if [ "$1" != "$2" ]; then
- echo "FAIL: '$1' != '$2'"
- exit 1
- fi
-}
-
-compare "`gconftool-2 -g /Test/Bool`" false
-compare "`gconftool-2 -g /Test/Int`" 54321
-compare "`gconftool-2 -g /Test/String`" "Good bye GConf"
-compare "`gconftool-2 -g /Test/Double`" -2.5
-compare "`gconftool-2 -g /Test/StringList`" "[Good,bye,GConf,äöü]"
-compare "`gconftool-2 -g /Test/IntList`" "[5,4,3,2,1]"
-compare "`gconftool-2 -g /Test/DoubleList`" "[-2.5,-2.5]"
-compare "`gconftool-2 -g /Test/BoolList`" "[false,false,true,true]"
-compare "`gconftool-2 -g /Test/UnsetAfter 2>&1`" 'No value set for `/Test/UnsetAfter'"'"
diff --git a/src/3rdparty/libgq/gconf/test-gconf.cpp b/src/3rdparty/libgq/gconf/test-gconf.cpp
deleted file mode 100644
index 52eb28171a..0000000000
--- a/src/3rdparty/libgq/gconf/test-gconf.cpp
+++ /dev/null
@@ -1,299 +0,0 @@
-#include "test-gconf.h"
-
-#define MYLOGLEVEL 2
-void myMessageOutput(QtMsgType type, const char *msg)
-{
- switch (type) {
- case QtDebugMsg:
- if (MYLOGLEVEL <= 0)
- fprintf(stderr, "Debug: %s\n", msg);
- break;
- case QtWarningMsg:
- if (MYLOGLEVEL <= 1)
- fprintf(stderr, "Warning: %s\n", msg);
- break;
- case QtCriticalMsg:
- if (MYLOGLEVEL <= 2)
- fprintf(stderr, "Critical: %s\n", msg);
- break;
- case QtFatalMsg:
- if (MYLOGLEVEL <= 3)
- fprintf(stderr, "Fatal: %s\n", msg);
- abort();
- }
-}
-
-//
-// Definition of testcases: Normal tests
-//
-
-void GConfItemTests::timeout()
-{
- timed_out = true;
- timer.stop();
-}
-
-// Before all tests
-void GConfItemTests::initTestCase()
-{
- connect(&timer, SIGNAL(timeout()),
- this, SLOT(timeout()));
-}
-
-// After all tests
-void GConfItemTests::cleanupTestCase()
-{
-}
-
-// Before each test
-void GConfItemTests::init()
-{
- boolItem = new GConfItem("/Test/Bool");
- intItem = new GConfItem("/Test/Int");
- stringItem = new GConfItem("/Test/String");
- doubleItem = new GConfItem("/Test/Double");
- stringListItem = new GConfItem("/Test/StringList");
- intListItem = new GConfItem("/Test/IntList");
- doubleListItem = new GConfItem("/Test/DoubleList");
- boolListItem = new GConfItem("/Test/BoolList");
- unsetBeforeItem = new GConfItem("/Test/UnsetBefore");
- unsetAfterItem = new GConfItem("/Test/UnsetAfter");
- signalSpy = new SignalListener();
- QObject::connect(boolItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
- QObject::connect(intItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
- QObject::connect(stringItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
- QObject::connect(doubleItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
- QObject::connect(stringListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
- QObject::connect(intListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
- QObject::connect(doubleListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
- QObject::connect(boolListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
-}
-
-// After each test
-void GConfItemTests::cleanup()
-{
- QObject::disconnect(boolItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
- QObject::disconnect(intItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
- QObject::disconnect(stringItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
- QObject::disconnect(doubleItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
- QObject::disconnect(stringListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
- QObject::disconnect(intListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
- QObject::disconnect(doubleListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
- QObject::disconnect(boolListItem, SIGNAL(valueChanged()), signalSpy, SLOT(valueChanged()));
- delete signalSpy;
- delete boolItem;
- delete intItem;
- delete stringItem;
- delete doubleItem;
- delete stringListItem;
- delete intListItem;
- delete doubleListItem;
- delete boolListItem;
- delete unsetBeforeItem;
- delete unsetAfterItem;
-
- timer.stop();
-}
-
-void GConfItemTests::path()
-{
- QCOMPARE(boolItem->key(), QString("/Test/Bool"));
- QCOMPARE(intItem->key(), QString("/Test/Int"));
- QCOMPARE(stringItem->key(), QString("/Test/String"));
- QCOMPARE(doubleItem->key(), QString("/Test/Double"));
- QCOMPARE(stringListItem->key(), QString("/Test/StringList"));
- QCOMPARE(intListItem->key(), QString("/Test/IntList"));
- QCOMPARE(doubleListItem->key(), QString("/Test/DoubleList"));
- QCOMPARE(boolListItem->key(), QString("/Test/BoolList"));
- QCOMPARE(unsetBeforeItem->key(), QString("/Test/UnsetBefore"));
- QCOMPARE(unsetAfterItem->key(), QString("/Test/UnsetAfter"));
-}
-
-void GConfItemTests::external_values()
-{
- // These values are set before this program starts.
- QCOMPARE(boolItem->value().toBool(), true);
- QCOMPARE(intItem->value().toInt(), 123);
- QCOMPARE(stringItem->value().toString(), QString("Hello GConf"));
- QCOMPARE(doubleItem->value().toDouble(), 3.5);
- QCOMPARE(stringListItem->value().toStringList(), QStringList() << "Hello" << "GConf" << QString::fromUtf8("ÄÖÜ"));
- QCOMPARE(intListItem->value().toList(), QList<QVariant>() << 1 << 2 << 3 << 4);
- QCOMPARE(doubleListItem->value().toList(), QList<QVariant>() << 3.5 << 3.5 << 3.5);
- QCOMPARE(boolListItem->value().toList(), QList<QVariant>() << false << true << true << false);
- QCOMPARE(unsetBeforeItem->value().isValid(), false);
- QCOMPARE(unsetAfterItem->value().isValid(), true);
-}
-
-void GConfItemTests::set_bool()
-{
- signalSpy->numberOfCalls = 0;
-
- boolItem->set(false);
- QCOMPARE(boolItem->value().toBool(), false);
- boolItem->set(true);
- QCOMPARE(boolItem->value().toBool(), true);
-
- QCOMPARE(signalSpy->numberOfCalls, 2);
-}
-
-void GConfItemTests::set_int()
-{
- signalSpy->numberOfCalls = 0;
-
- intItem->set(12);
- QCOMPARE(intItem->value().toInt(), 12);
- intItem->set(-5);
- QCOMPARE(intItem->value().toInt(), -5);
-
- QCOMPARE(signalSpy->numberOfCalls, 2);
-}
-
-void GConfItemTests::set_string()
-{
- signalSpy->numberOfCalls = 0;
-
- stringItem->set("Hi");
- QCOMPARE(stringItem->value().toString(), QString("Hi"));
-
- QCOMPARE(signalSpy->numberOfCalls, 1);
-}
-
-void GConfItemTests::set_unicode_string()
-{
- signalSpy->numberOfCalls = 0;
-
- stringItem->set(QString::fromUtf8("Höäü"));
- QCOMPARE(stringItem->value().toString(), QString::fromUtf8("Höäü"));
-
- QCOMPARE(signalSpy->numberOfCalls, 1);
-}
-
-void GConfItemTests::set_double()
-{
- signalSpy->numberOfCalls = 0;
-
- doubleItem->set(1.2345);
- QCOMPARE(doubleItem->value().toDouble(), 1.2345);
-
- QCOMPARE(signalSpy->numberOfCalls, 1);
-}
-
-void GConfItemTests::set_string_list()
-{
- signalSpy->numberOfCalls = 0;
-
- stringListItem->set(QStringList() << "one" << "two" << "three");
- QCOMPARE(stringListItem->value().toStringList(), QStringList() << "one" << "two" << "three");
-
- QCOMPARE(signalSpy->numberOfCalls, 1);
-}
-
-void GConfItemTests::set_int_list()
-{
- signalSpy->numberOfCalls = 0;
-
- intListItem->set(QList<QVariant>() << 10 << 11 << 12);
- QCOMPARE(intListItem->value().toList(), QList<QVariant>() << 10 << 11 << 12);
-
- QCOMPARE(signalSpy->numberOfCalls, 1);
-}
-
-void GConfItemTests::set_double_list()
-{
- signalSpy->numberOfCalls = 0;
-
- doubleListItem->set(QList<QVariant>() << 1.1 << 2.2 << 3.3);
- QCOMPARE(doubleListItem->value().toList(), QList<QVariant>() << 1.1 << 2.2 << 3.3);
-
- QCOMPARE(signalSpy->numberOfCalls, 1);
-}
-
-void GConfItemTests::set_bool_list()
-{
- signalSpy->numberOfCalls = 0;
-
- boolListItem->set(QList<QVariant>() << true << true << false);
- QCOMPARE(boolListItem->value().toList(), QList<QVariant>() << true << true << false);
-
- QCOMPARE(signalSpy->numberOfCalls, 1);
-}
-
-void GConfItemTests::unset ()
-{
- signalSpy->numberOfCalls = 0;
-
- boolItem->unset();
- QCOMPARE(boolItem->value().isValid(), false);
-
- QCOMPARE(signalSpy->numberOfCalls, 1);
-}
-
-void GConfItemTests::list_dirs ()
-{
- GConfItem test("/Test");
- QStringList dirs = test.listDirs();
-
- QVERIFY (!dirs.contains("/Test/Bool"));
- QVERIFY (!dirs.contains("/Test/Int"));
- QVERIFY (!dirs.contains("/Test/String"));
- QVERIFY (!dirs.contains("/Test/Double"));
- QVERIFY (!dirs.contains("/Test/StringList"));
- QVERIFY (!dirs.contains("/Test/IntList"));
- QVERIFY (!dirs.contains("/Test/DoubleList"));
- QVERIFY (!dirs.contains("/Test/BoolList"));
- QVERIFY (!dirs.contains("/Test/UnsetBefore"));
- QVERIFY (!dirs.contains("/Test/UnsetAfter"));
- QVERIFY (dirs.contains("/Test/Dir"));
-}
-
-void GConfItemTests::list_entries ()
-{
- GConfItem test("/Test");
- QStringList entries = test.listEntries();
-
- QVERIFY (!entries.contains("/Test/Bool")); // has been unset above
- QVERIFY (entries.contains("/Test/Int"));
- QVERIFY (entries.contains("/Test/String"));
- QVERIFY (entries.contains("/Test/Double"));
- QVERIFY (entries.contains("/Test/StringList"));
- QVERIFY (entries.contains("/Test/IntList"));
- QVERIFY (entries.contains("/Test/DoubleList"));
- QVERIFY (entries.contains("/Test/BoolList"));
- QVERIFY (!entries.contains("/Test/UnsetBefore"));
- QVERIFY (entries.contains("/Test/UnsetAfter"));
- QVERIFY (!entries.contains("/Test/Dir"));
-}
-
-void GConfItemTests::get_default ()
-{
- intItem->unset();
- QCOMPARE(intItem->value(123).toInt(), 123);
- intItem->set(234);
- QCOMPARE(intItem->value(123).toInt(), 234);
-}
-
-void GConfItemTests::propagate ()
-{
- GConfItem secondIntItem("/Test/Int");
- secondIntItem.set(3000);
- QVERIFY_TIMEOUT(2000, intItem->value() == secondIntItem.value());
- QCOMPARE(signalSpy->numberOfCalls, 2);
-}
-
-void GConfItemTests::set_external()
-{
- // This must be the last test case. The values that are set here
- // are checked after this program exits.
-
- boolItem->set(false);
- intItem->set(54321);
- stringItem->set("Good bye GConf");
- doubleItem->set(-2.5);
- stringListItem->set(QStringList() << "Good" << "bye" << "GConf" << QString::fromUtf8("äöü"));
- intListItem->set(QList<QVariant>() << 5 << 4 << 3 << 2 << 1);
- doubleListItem->set(QList<QVariant>() << -2.5 << -2.5);
- boolListItem->set(QList<QVariant>() << false << false << true << true);
- unsetAfterItem->set(QVariant());
-}
-
-QTEST_MAIN(GConfItemTests);
diff --git a/src/3rdparty/libgq/gconf/test-gconf.h b/src/3rdparty/libgq/gconf/test-gconf.h
deleted file mode 100644
index 36eaeccca4..0000000000
--- a/src/3rdparty/libgq/gconf/test-gconf.h
+++ /dev/null
@@ -1,86 +0,0 @@
-#include <QObject>
-#include <QtTest/QtTest>
-#include <QDebug>
-
-#include "GConfItem"
-
-// Helper class for listening to signals
-class SignalListener : public QObject
-{
- Q_OBJECT
-public:
- int numberOfCalls;
- SignalListener() : numberOfCalls(0) {
- }
-
-public slots:
- void valueChanged()
- {
- numberOfCalls++;
- }
-};
-
-// Tests for the public API
-class GConfItemTests : public QObject
-{
- Q_OBJECT
-
- // Stored pointers etc.
-private:
- GConfItem *boolItem;
- GConfItem *intItem;
- GConfItem *stringItem;
- GConfItem *doubleItem;
- GConfItem *stringListItem;
- GConfItem *intListItem;
- GConfItem *doubleListItem;
- GConfItem *boolListItem;
- GConfItem *unsetBeforeItem;
- GConfItem *unsetAfterItem;
-
- SignalListener *signalSpy;
-
- QTimer timer;
- bool timed_out;
-
- // Tests
-private slots:
- // Init and cleanup helper functions
- void initTestCase();
- void cleanupTestCase();
- void init();
- void cleanup();
- void timeout ();
-
- // Public API
- void path();
- void external_values();
- void set_bool();
- void set_int();
- void set_string();
- void set_unicode_string();
- void set_double();
- void set_string_list();
- void set_int_list();
- void set_double_list();
- void set_bool_list();
- void unset();
- void get_default();
- void list_dirs();
- void list_entries();
- void propagate();
- void set_external();
-};
-
-// Useful if you need to process some events until a condition becomes
-// true.
-
-#define QVERIFY_TIMEOUT(msecs, expr) \
- do { \
- timed_out = false; \
- timer.start(msecs); \
- while (!timed_out && !(expr)) { \
- QCoreApplication::processEvents(QEventLoop::WaitForMoreEvents); \
- } \
- QVERIFY((expr)); \
- } while(0)
diff --git a/src/3rdparty/libjpeg.pri b/src/3rdparty/libjpeg.pri
index 63f2aca5dc..5896a53942 100644
--- a/src/3rdparty/libjpeg.pri
+++ b/src/3rdparty/libjpeg.pri
@@ -5,10 +5,7 @@ wince*: {
}
#Disable warnings in 3rdparty code due to unused arguments
-symbian: {
- QMAKE_CXXFLAGS.CW += -W nounusedarg
- TARGET.UID3=0x2001E61B
-} else:contains(QMAKE_CC, gcc): {
+contains(QMAKE_CC, gcc): {
QMAKE_CFLAGS_WARN_ON += -Wno-unused-parameter -Wno-main
}
diff --git a/src/3rdparty/libmng.pri b/src/3rdparty/libmng.pri
deleted file mode 100644
index 7b682100ee..0000000000
--- a/src/3rdparty/libmng.pri
+++ /dev/null
@@ -1,25 +0,0 @@
-DEFINES += MNG_BUILD_SO
-DEFINES += MNG_NO_INCLUDE_JNG
-INCLUDEPATH += $$PWD/libmng
-SOURCES += \
- $$PWD/libmng/libmng_callback_xs.c \
- $$PWD/libmng/libmng_chunk_io.c \
- $$PWD/libmng/libmng_chunk_descr.c \
- $$PWD/libmng/libmng_chunk_prc.c \
- $$PWD/libmng/libmng_chunk_xs.c \
- $$PWD/libmng/libmng_cms.c \
- $$PWD/libmng/libmng_display.c \
- $$PWD/libmng/libmng_dither.c \
- $$PWD/libmng/libmng_error.c \
- $$PWD/libmng/libmng_filter.c \
- $$PWD/libmng/libmng_hlapi.c \
- $$PWD/libmng/libmng_jpeg.c \
- $$PWD/libmng/libmng_object_prc.c \
- $$PWD/libmng/libmng_pixels.c \
- $$PWD/libmng/libmng_prop_xs.c \
- $$PWD/libmng/libmng_read.c \
- $$PWD/libmng/libmng_trace.c \
- $$PWD/libmng/libmng_write.c \
- $$PWD/libmng/libmng_zlib.c
-
-include($$PWD/zlib_dependency.pri)
diff --git a/src/3rdparty/libmng/CHANGES b/src/3rdparty/libmng/CHANGES
deleted file mode 100644
index eeacf33246..0000000000
--- a/src/3rdparty/libmng/CHANGES
+++ /dev/null
@@ -1,1447 +0,0 @@
------------------------------------------------------------
-
-1.0.10 (Jul 13th 2007)
-----------------------
-
-in short:
-
-intermediate CVS
-
--------------------
-
-bugfixes:
-
-core:
-- fixed some compiler-warnings
-- fixed display routines called twice for FULL_MNG support in mozlibmngconf.h
-- standard windows dll upgraded to zlib 1.2.3
-- fixed problem with CLON object during readdisplay() (thanks Winfried!)
-- added typecast to appease the compiler (G R-P)
-- added more SKIPCHUNK conditionals (G R-P)
-- added MORE MNG_NO_1_2_4BIT_SUPPORT (G R-P)
-- added provisional support for anIM(mpNG) proposal
-- added provisional support for ANG proposal
-
-samples:
-- xmngview upgraded to 0.6 (thanks Winfried!)
-
-contrib:
-
-doc:
-
-makefiles:
-
-autoconf:
-
------------------------------------------------------------
-
-1.0.9 (jan 30th 2005)
----------------------
-
-in short:
-
-New optimizations save over 20KB on footprint.
-Also a few bugfixes and several patches.
-
-Thanks to those sending in their additions and for testing!
-
-To turn on the optimizations do:
-
-#DEFINE MNG_OPTIMIZE_CHUNKINITFREE
-#DEFINE MNG_OPTIMIZE_OBJCLEANUP
-#DEFINE MNG_OPTIMIZE_CHUNKASSIGN
-#DEFINE MNG_OPTIMIZE_CHUNKREADER
-
-(eg. they're not on by default (yet) !)
-
--------------------
-
-bugfixes:
-- fixed chunk pushing mechanism
-- fixed bug in writing sBIT for indexed color
-- fixed PPLT getchunk/putchunk routines
-- fixed MNG_NO_1_2_4BIT_SUPPORT for TBBN1G04.PNG
-- cleaned up macro-invocations (thanks to D. Airlie)
-
-core:
-- added more SKIPCHUNK conditionals
-- replaced MNG_TWEAK_LARGE_FILES with permanent solution
-- improved handling of cheap transparency when 16-bit support is disabled
-- added some MNG_SUPPORT_WRITE conditionals
-- added function to retrieve current FRAM delay
-- added MNG_NO_1_2_4BIT_SUPPORT
-- added bgr565_a8 canvas-style (thanks to J. Elvander)
-- standard windows dll upgraded to zlib 1.2.2
-- added LITTLEENDIAN/BIGENDIAN fixtures (thanks J.Stiles)
-- inclusion of zlib/lcms/ijgsrc6b with <> instead of ""
-- added conditional MNG_OPTIMIZE_CHUNKINITFREE
-- added conditional MNG_OPTIMIZE_OBJCLEANUP
-- added conditional MNG_OPTIMIZE_CHUNKASSIGN
-- added conditional MNG_OPTIMIZE_CHUNKREADER
-- fixed problem with global PLTE/tRNS
-
-samples:
-
-contrib:
-
-doc:
-- patched jng & mng manual pages (Thanks Peter Breitenlohner)
-
-makefiles:
-
-autoconf:
-- patched makefile.am & configure.in (Thanks Peter Breitenlohner)
-
------------------------------------------------------------
-
-1.0.8 (aug 5th 2004)
---------------------
-
-in short:
-
-added special data-pushing mechanisms and a few other tid-bits
-
--------------------
-
-bugfixes:
-- fixed problem with PAST usage where source > dest
-
-core:
-- added missing get-/put-chunk-jdaa
-- added CRC existence & checking flags
-- added data-push mechanisms for specialized decoders
-- some speed optimizations (thanks to John Stiles)
-- defend against using undefined closestream function
-- defend against using undefined openstream function
-- added check for extreme chunk-lengths
-- change worst-case iAlphadepth to 1 for standalone PNGs
-- added support for 3+byte pixelsize for JPEG's
-- added conditional to allow easier writing of large MNG's
-
-samples:
-
-contrib:
-
-doc:
-
-makefiles:
-
-autoconf:
-
------------------------------------------------------------
-
-1.0.7 (March 21st 2004)
------------------------
-
-in short:
-
-A bunch of new canvas-styles, some bug-fixes, upgraded to latest zlib/lcms
-and yet more work to please the Mozilla crowd.
-Releasing beta's doesn't seem very responsive, and this one's hardly changed
-much anyway. I just wanted to bump to a regular version for Mozilla
-re-integration.
-
--------------------
-
-bugfixes:
-- fixed inclusion of IJNG chunk for non-JNG use (J.S)
-- fixed bug in chunk-storage of SHOW chunk (where from == to)
-- fixed bug in promote_g8_g8 with 16bit support off
-
-core:
-- added CANVAS_RGB565 and CANVAS_BGR565 (big thanx to Raphael Assenat!!)
-- added CANVAS_RGBA565 and CANVAS_BGRA565 ( -- ditto -- )
-- upgraded to zlib 1.2.1
-- upgraded to lcms 1.11
-- added premultiplied alpha canvas' for RGBA, ARGB, ABGR (thx to John Stiles)
-- more optimizations with 16bit support off
-- put conditionals around openstream/closestream callbacks.
-- fixed typo (MNG_SKIPCHUNK_SAVE -> MNG_SKIPCHUNK_nEED)
-- fixed some 64-bit platform compiler warnings
-
-samples:
-
-contrib:
-- fixed mngtree sample (Raphael)
-- added 5-6-5 canvas to SDL sample (Raphael)
-
-doc:
-
-makefiles:
-
-autoconf:
-
------------------------------------------------------------
-
-1.0.6 (oct 19th 2003)
----------------------
-
-in short:
-
-Final release from beta1. No feedback is good feedback I presume,
-so here's 1.0.6-final!
-
-
--------------------
-
-bugfixes:
-
-core:
-
-samples:
-
-contrib:
-
-doc:
-
-makefiles:
-
-autoconf:
-
------------------------------------------------------------
-
-1.0.6-beta1 (sep 14th 2003)
----------------------------
-
-in short:
-
-further footprint-reductions
-removing email-addresses
-
-1.0.6 (final) will be out shortly
-
--------------------
-
-bugfixes:
-
-core:
-- added support for reducing the footprint of libmng by macros that optionally
- skip unused chunks, remove 16-bit sample support, remove Delta support, and
- remove JNG support, to accomodate Mozilla/Firebird.
-- further optional removal of unused functions
-- added MNG_NO_SUPPORT_FUNCQUERY conditional
-- added iPNGdepth member to pData structure
-- added conditionals around MAGN chunk support
-- added conditionals around non-VLC chunk support
-- added conditionals around "mng_display_go*" and other unused functions
-- added more conditionals around "promote" functions
-- removed email references as appropriate
-
-samples:
-
-contrib:
-
-doc:
-
-makefiles:
-
-autoconf:
-
------------------------------------------------------------
-
-1.0.6-alpha1 (aug 2nd 2003)
----------------------------
-
-in short:
-
-This is mostly in the light of footprint-reduction to please the Mozilla
-crew with a leaner and meaner libmng. See bug 18574 if you're interested:
-http://bugzilla.mozilla.org/show_bug.cgi?id=18574
-
--------------------
-
-bugfixes:
-- B719420 - fixed several MNG_APP_CMS problems
-
-core:
-- removed some compiler-warnings
-- hiding 12-bit JPEG stuff
-- fixed problem with infinite loops during readdisplay()
-- added size-optimiation COMPOSE routine usage
-- added conditionals around canvas update routines
-- added MNG_SKIPCHUNK_cHNK footprint optimizations
-- added conditionals around some JNG-supporting code
-- added conditionals around 16-bit supporting code
-- combined init functions into one function
-- replaced nested switches with simple init setup function
-- added conditionals zlib and jpeg property accessors
-- added size-optimization DIV255B8 routine usage
-- added conditionals around 8-bit magn routines
-- removed conditionals around 8-bit magn routines
-- added MNG_NO_16BIT_SUPPORT and MNG_NO_DELTA_PNG conditionals
-- reversed many loops to use decrementing counter
-- converted some switches to array references
-- removed some redundant checks for iRawlen==0
-- optionally use zlib's crc32 function instead of local mng_update_crc
-- bugfix empty "if" statement when 16-bit code is enabled
-- restored two misplaced #else/#endif blocks
-- added conditionals around "mng_display_go*" and other unused functions
-- added MNG_NO_LOOP_SIGNALS_SUPPORTED conditional
-- fixed duplicate for-loop
-- fixed invalid test in promote_imageobject
-- added conditionals around PAST chunk support
-- fixed "FOOTPRINT_COMPOSEIV" typo (now "FOOTPRINT_DIV")
-
-samples:
-
-contrib:
-- updated xmngview
-- added MSVC project for creating delta-MNGs: makemng (thanks Alex!)
-- added MSVC lib-file for use with the standard libmng.dll (again thanks Alex)
-
-doc:
-- updated readme.contrib
-
-makefiles:
-
-autoconf:
-
------------------------------------------------------------
-
-1.0.5 (mar 1st 2003)
---------------------
-
-in short:
-
-Only a small fix for progressive jpeg suspension problem.
-
-This is the long-awaited final release containing the new 'dynamic MNG' feature
-and bringing MNG compliance to near 100%!
-
--------------------
-
-bugfixes:
-- B683152 - libjpeg suspension not always honored correctly
-
-core:
-
-samples:
-
-contrib:
-
-doc:
-
-makefiles:
-
-autoconf:
-
------------------------------------------------------------
-
-1.0.5-rc3 (jan 20th 2003)
--------------------------
-
-in short:
-
-Third release-candidate for the upcoming 1.0.5 version.
-
-Minor bug-fixes and finalizing the accepted proposal (by official vote) for
-the TERM/frame_delay changes on mng-list (nov-dec/2002).
-
--------------------
-
-bugfixes:
-- B654627 - fixed SEGV when no gettickcount callback (thanks Adam!)
-- B664383 - fixed typo (thanks Dimitri)
-- B664911 - fixed buffer overflow during init (thanks Alex!)
-
-core:
-- finalized changes in TERM/final_delay to elected proposal (positive vote)
-
-samples:
-
-contrib:
-
-doc:
-
-makefiles:
-
-autoconf:
-
------------------------------------------------------------
-
-1.0.5-rc2 (dec 9th 2002)
-------------------------
-
-in short:
-
-Second release-candidate for the upcoming 1.0.5 version.
-This contains fixes for a few minor details reported by the loyal testers.
-It fixes some issues with the goframe/golayer/gotime processing and related
-stuff. And it adds a way to disable playback-caching from within the MNG,
-which is very useful for streaming-MNG encoders (such as gserver!).
-
--------------------
-
-bugfixes:
-
-core:
-- fixed layer- & frame-counting during read()
-- changed FRAMECOUNT/LAYERCOUNT/PLAYTIME error to warning
-- fixed goframe/golayer/gotime processing
-- added support for nEED "MNG 1.1"
-- added support for nEED "CACHEOFF"; turn playback caching off for streaming MNG
-- fixed magnification bug with object 0
-- added support to get totals for frames/layers/playtime after mng_read()
-- fixed some issues in init_app_cms()
-- fixed goxxxxx() support for zero values
-
-samples:
-
-contrib:
-
-doc:
-
-makefiles:
-
-autoconf:
-
------------------------------------------------------------
-
-1.0.5-rc1 (nov 1st 2002)
-------------------------
-
-in short:
-
-First release-candidate for the upcoming 1.0.5 version.
-This fixes a few small problems and brings the TERM/MEND processing, with
-respect to interframe_delay as per the current discussion on MNG-list,
-up-to-date with the latest proposal.
-
--------------------
-
-bugfixes:
-
-core:
-- fixed initialization of pIds in dISC read routine (Thanks Winfried!)
-- fixed issue in freeing evNT chunk (Thanks Winfried!)
-- fixed clipping-problem with BACK tiling (Thanks Sakura!)
-- fixed processing for multiple objects in MAGN (Thanks Sakura!)
-- fixed display of visible target of PAST operation (Thanks Sakura!)
-- modified TERM/MEND processing for max(1, TERM_delay, interframe_delay)
-
-samples:
-
-contrib:
-- fixed typo in Makefile for gtk-mng-view sample
-
-doc:
-
-makefiles:
-
-autoconf:
-
------------------------------------------------------------
-
-1.0.5-b3 (oct 15th 2002)
-------------------------
-
-in short:
-
-Fairly quick after beta2, since that introduced a couple of unfortunate
-booboo's and wasn't very workable. It also changes the standard configure
-script to build a standard shared object similar to what I intended.
-
--------------------
-
-bugfixes:
-
-core:
-- fixed support for condition=2 in TERM chunk
-- fixed trace-constants for PAST chunk
-- added mng_status_dynamic to supports function
-
-samples:
-
-contrib:
-
-doc:
-- small cosmetic changes in man/libmng.3
-
-makefiles:
-
-autoconf:
-- fixed configure.in to build a 'standard' SO primarily
-
------------------------------------------------------------
-
-1.0.5-b2 (oct 9th 2002)
-------------------------
-
-in short:
-
-Second beta for next 1.0.5 release. This addresses some minor problems
-detected during testing. It adds the proposed change to the MNG spec as
-discussed on the "mng-list" recently; eg. Adam's option 4.
-And it adds a little function to check at run-time if the lib is a beta or not.
-
--------------------
-
-bugfixes:
-
-core:
-- fixed chunk-storage for evNT chunk
-- fixed dropping mix of frozen/unfrozen objects
-- fixed problem with cloned objects marked as invalid
-- fixed problem cloning frozen object_buffers
-- fixed DISC support
-- added proposed change in handling of TERM- & interframe-delay
-- added another fix for misplaced TERM chunk
-- added check for TERM placement during create/write
-- completed support for condition=2 in TERM chunk
-- added beta version function & constant
-
-samples:
-
-contrib:
-
-doc:
-
-makefiles:
-
-autoconf:
-
------------------------------------------------------------
-
-1.0.5-b1 (sep 24th 2002)
-------------------------
-
-in short:
-
-First beta of a large maintenance release. This completes support of the MNG
-specification to nearly 100% (PAST, PROM, delta-images, BACK image+tile).
-It adds "dynamic" MNG and a few other neat routines as well as fixes several
-bugs reported through SourceForge or to me directly.
-
--------------------
-
-bugfixes:
-- B575832 - library has wrong patch version number
-- B578572 - remove in 1.0.0!
-- B578940 - some functions not implemented
-- B581625 - large chunks fail with suspension reads
-- B597134 - libmng pollutes the linker namespace
-
-core:
-- added sanity check for improbable chunklengths
-- removed eMNGma hack (thanks Dimitri!)
-- unimplemented functions return an errorcode now
-- added test-option for PNG filter method 192 (= levelling)
-- added test-option for PNG filter method 193 (= no filtering)
- (both are conditional and only for testing purposes!!!)
-- completed PROM support
-- completed delta-image support
-- completed MAGN support (16-bit functions)
-- added HLAPI function to copy a chunk from a read MNG to a newly created MNG
-- added option for soft-handling of errors (only for repair software!!!)
-- fixed some routine inclusion/exclusion for undefined conditionals
-- pre-fixed all internal routines with mng_
-- added symbol MNG_LOCAL (= static) to really local functions
-- fixed reading of FRAM with just frame_mode and name
-- fixed read/write of MAGN chunk
-- added event handling for dynamic MNG
-- added 'supports' call to check function availability
-- fixed copyright notice in the headers of all libmng modules
-- fixed LOOP iteration=0 special case
-- re-compiled standard Windows dll with lcms-1.0.9
-- added warning for too much IDAT data
-- warnings are ignored by default now
-- misplaced TERM is now treated as warning
-- fixed color-correction for restore-background handling
-- optimized restore-background for bKGD cases
-- cleaned up some old stuff
-- completed support for BACK image & tiling
-- completed support for PAST
-- added bgrx8 canvas (filler byte)
-- fixed reset_object_detail to clear old buffer
-- added in-memory color-correction of abstract images
-- added compose over/under routines for PAST processing
-- added flip & tile routines for PAST processing
-
-samples:
-- Added new BCB sample for fixing invalid JASC Animation Shop files
- (shows new copy_chunks function; use of MNG_SOFTERRORS & static linking)
-
-contrib:
-- added xmngview by Winfried Szukalski (Vielen dank!)
-- Updated the Delphi mngview sample to handle dynamic MNGs
-- Added Kylix example (simplified port of the Delphi mngview sample)
-
-doc:
-- added diff to add MNG&JNG to a systems 'magic' file (Thanks Winfried)
-- fixed docs about using mng_display_resume after display_reset
- (should read to use mng_display!)
-
-makefiles:
-- added makefile to build a libmng.dll for MingW
- (makefile.mingwdll - thanks to Frank Richter!)
-
-autoconf:
-- fixing libtool version-number to be in line with what it should be
-
------------------------------------------------------------
-
-1.0.4 (Jun 23rd 2002)
----------------------
-
-in short:
-
-Just some small fixes
-Standard dll now compiled with zlib 1.1.4 and lcms 1.0.8
-
--------------------
-
-bugfixes:
-- B495442 - invalid returnvalue in mng_get_suspensionmode
-- B495443 - incorrect suspend check in read_databuffer
-- B526138 - returned IJGSRC6B calling convention to default for MSVC
-- B558212 - off by one error
-- B557677 - can't find lcms.h
-
-core:
-- fixed possible compile-problem in cleanup_rowproc
-- MNG subimage alpha composite wrong for rgba8 images
-
-samples:
-
-contrib:
-
-doc:
-
-makefiles:
-- fixed check for lcms.h in configure.in
-
-autoconf:
-
------------------------------------------------------------
-
-1.0.3 (Sep 18th 2001)
----------------------
-
-in short:
-
-Small cosmetic changes. Cleaning up the contributions.
-New makefile for mingw32, and new fbcon example.
-Major thanks to Greg for helping out with the *nix stuff!
-Note that there's also a separate download for ASM programmers now.
-Check http://www.libmng.com for details (download/ports&packages page).
-
-It may be a while for the next release. I'm "off duty" for the next 8 or
-so months...
-
-Gerard
-
--------------------
-
-bugfixes:
-- B459058 - wrong include for lcms headers
-
-core:
-- changed inclusion of lcms.h header for Linux platforms (suggested by Greg)
-- added get function for last processed BACK chunk
-
-samples:
-- replaced the gtk & sdl viewer apps with updates by Greg Roelofs
-
-contrib:
-
-doc:
-
-makefiles:
-- changed makefile.linux & makefile.unix as suggested by Greg Roelofs
- (makefile.linux now compiles with lcms by default)
-- added makefile.mingw for mingw32 by Benoit Blanchon (thanks Mate!)
-
-autoconf:
-
------------------------------------------------------------
-
-1.0.2 (Jul 7th 2001)
---------------------
-
-in short:
-
-Another maintenance release with a few added extra's.
-
--------------------
-
-bugfixes:
-- B421427 - writes wrong format in bKGD and tRNS
-- B434583 - compiler-warning if MNG_STORE_CHUNKS undefined
-
-core:
-- added optimization option for MNG-video playback
-- added processterm callback
-- added late binding errorcode (not used internally)
-- fixed memory-leak with delta-images (Thanks Michael!)
-- added option to turn off progressive refresh for large images
-
-samples:
-
-contrib:
-
-doc:
-
-makefiles:
-
-autoconf:
-
------------------------------------------------------------
-
-1.0.1 (May 2nd 2001)
---------------------
-
-in short:
-
-Maintenance release.
-Fixed several memory-leaks with the help of Gregg Kelly, added/fixed some CMS
-handling, exported JPEG functions from standard DLL, and some other minor fixes.
-
-The CMS fix now makes libmng automagically work in MNG_FULL_CMS mode as a
-sRGB compliant system. YOU WILL NEED TO CHANGE THIS IF YOU ARE NOT ON AN sRGB
-COMPLIANT SYSTEM AND WANT TO USE CMS!!!!
-(look in libmng.h for the proper function-calls)
-
--------------------
-
-bugfixes:
-
-core:
-- added MEND processing callback
-- fixed first FRAM_MODE=4 timing problem
-- added handle status-copy function (use with care)
-- exported JPEG functions from standard DLL
-- added BGRA8 canvas with premultiplied alpha (contrib by Gregg Kelly)
-- fixed problem with display_reset/display_resume (Thanks Gregg!)
-- fixed several memory-leaks (Thanks Gregg!)
-- fixed reset_rundata to drop all objects (Thanks again, Gregg!)
-- fixed problem with cms profile being created multiple times when both
- iCCP & cHRM/gAMA are present (And again... Gregg)
-- moved mng_clear_cms to libmng_cms
-- added "default" sRGB generation (Thanks Marti!)
-
-samples:
-
-contrib:
-
-doc:
-
-makefiles:
-
-autoconf:
-
------------------------------------------------------------
-
-1.0.0 (Feb 6th 2001)
---------------------
-
-in short:
-
-First public release. Finally(!)
-
-This is the 0.9.5 CVS version, which will never be released, because I feel it
-is now ready for a public release. So apart from the version-numbers here and
-there, all other changes are listed under 0.9.5.
-
-This library will work with every MNG/JNG known and available to me. Note that
-there are still parts that need to be coded, and that MNG support is around
-90-95% (JNG at 100%). It is however compliant with the latest and greatest
-MNG 1.0 specification.
-
-I hope to dedicate a bit more time this year to finish up full support and fill
-in the remaining blanks. But this is coming out of my spare time. And extra
-help is always appreciated.
-
-Please enjoy!
-
-Gerard
-
------------------------------------------------------------
-
-0.9.5 (no release)
-------------------
-
-in short:
-
-intermediate CVS
-
--------------------
-
-bugfixes:
-B129681 - fixed compiler warnings SGI/Irix (thanks Dimitri)
-
-core:
-- fixed compiler-warnings Mozilla (thanks Tim)
-- fixed timing-problem with switching framing_modes
-- fixed some small compiler warnings (thanks Nikki)
-
-samples:
-
-contrib:
-- fixed library-paths for MSVC DLL project (thanks Chad)
-
-doc:
-
-makefiles:
-- added makefile for DJGPP (thanks Silvio)
-
-autoconf:
-
------------------------------------------------------------
-
-0.9.4 (Jan 19th 2001)
-----------------------
-
-in short:
-
-Now that the MNG spec is at 1.0, this should be the last beta. There's a few
-small changes to make it inline with the spec, and a couple of bug-fixes.
-This is a serious release-candidate for libmng-1.0!!
-Please... test test test test!!
-
--------------------
-
-bugfixes:
-B123314 - fixed number of TERM related problems
-B123322 - fixed unwanted repetition in mng_readdisplay()
-B123443 - fixed by Ralph
-B124910 - fixed definition for WIN32_LEAN_AND_MEAN (thanks Chad)
-B125750 - fixed by Ralph
-B125756 - fixed mixup of data- & function-pointers (thanks Dimitri)
-B127517 - changed inclusion of the lcms header file for non-windows platforms
-
-core:
-- version numbers
-- fixed possible loop in display_resume() (Thanks Vova!)
-- fixed unwanted repetition in mng_readdisplay()
-- changed inclusion of the lcms header file for non-windows platforms
-- changed IHDR filter_method check for PNGs
-- moved restore of object 0 to libmng_display
-- added restore of object 0 to TERM processing (B123314)
-- fixed TERM delay processing (B123314)
-- fixed TERM end processing when count = 0 (B123314)
-- changed callback convention for MSVC (Thanks Chad)
-- fixed mixup of data- & function-pointers (thanks Dimitri)
-- added support for "nEED MNG-1.0"
-- added errorcode for MAGN methods
-- added errorchecking for MAGN methods
-- removed "old" MAGN methods 3 & 4
-- added "new" MAGN methods 3, 4 & 5
-- removed test filter-methods 1 & 65
-- set default level-set for filtertype=64 to all zeroes
-
-samples:
-
-contrib:
-- added GTK mng-view example by Vova Babin
-- added MSVC MNGview sample by Nikolaus Brennig
-- updated Jason Summer's mngplg to version 0.9.2
- (that's mngplg-0.9.2 based on libmng-0.9.3 !!!)
-- rearranged contrib directory slightly
-- added MSVC project to build libmng.dll by Chad Austin
-
-doc:
-- added README.dll
-- added README.config
-
-makefiles:
-- added a makefile for MS Visual C++ (Thanks to Atsushi Matsuda)
-
-autoconf:
-- fixed configure.in for lcms (FreeBSD port by Mikhail Teterin)
-- by default configure includes CMS support if lcms is present
-
------------------------------------------------------------
-
-0.9.3 (October 29th 2000)
--------------------------
-
-in short:
-
-Another beta release. The number of changes in the MNG specification have
-resulted in a lot of new code and some changed code. At the same time I saw
-no need to withhold some new functionality as it was pretty clear there was
-going to be another beta-round. If things go well, I'm going to try to release
-libmng 1.0.0 very shortly after this one.
-
-Many thanks to a lot of people for helping out, sending contributions, making
-suggestions and testing this little baby. This would get nowhere without YOU!!!
-
-- fixed bug 111300/117103
-- added workaround for faulty PhotoShop iCCP chunk
-- added MAGN/JDAA chunks
-- added support for new filter_types
-- added PNG/MNG spec version indicators
-- added BCB mngview contribution by Andy Protano
-- added BCB mngdump; a GUI-based MNG dumping utility (Andy Protano)
-- implemented support for nEED "draft nn"
-- implemented app-defined support for bKGD for PNG images
-- removed trace-options from default SO/DLL builds (!!!)
-- raised initial maximum canvas size to 10000x10000 (!!!)
- (an App that wants to protect from overly large images should call
- mng_set_maxcanvassize() with appropriate values)
-- fixed other assorted stuff
-
--------------------
-
-bugfixes:
-B111300 - fixup for improved portability
-B117103 - fixed compilation errors on *nix with lcms (thanks Ralph!)
-
-core:
-- fixed compiler-warnings from Mozilla
-- added check for simplicity-bits in MHDR
-- added workaround for faulty PhotoShop iCCP chunk
-- fixed app-supplied background restore
-- fixed TERM processing delay of 0 msecs
-- fixed write-code for zTXt & iTXt
-- fixed read-code for iTXt
-- added MAGN chunk
-- fixed sRGB precedence for gamma_only corection
-- added support for new filter_types
-- fixed problem with no refresh after TERM
-- fixed DEFI behavior
-- fixed inclusion parameters to make the external libs work together
-- added export of zlib functions from windows dll
-- fixed timing & refresh behavior for single PNG/JNG
-- removed trace-options from default SO/DLL builds (!!!)
-- fixed MAGN rounding errors (thanks Matthias!)
-- fixed small timing problem when FRAM delay = 0
-- fixed simplicity-check in compliance with draft 81/0.98a
-- fixed alpha-blending for all alpha-canvasstyles
-- added support for alpha-depth prediction
-- fixed processing of unknown critical chunks
-- removed test-MaGN
-- added PNG/MNG spec version indicators
-- implemented support for nEED
-- added support for JDAA
-- added functions to retrieve PNG/JNG specific header-info
-- added optional support for bKGD for PNG images
-- raised initial maximum canvas size to 10000x10000
-- added support for delta-JNG
-- added callback to process non-critical unknown chunks
-- fixed support for delta-images during read() / display()
-- added closestream() processing for mng_cleanup()
-- fixed delta-processing behavior
-- added storage for pixel-/alpha-sampledepth for delta's
-- implemented delayed delta-processing
-- fixed putchunk_plte() to set bEmpty parameter (thanks Ben!)
-- added errorcode for delayed delta-processing
-- added get/set for bKGD preference setting
-- added get function for interlace/progressive display
-- fixed bug in empty PLTE handling
-- fixed seperate read() & display() processing
-- fixed tRNS processing for gray-image < 8-bits
-
-samples:
-- added BCB mngview contribution by Andy Protano
-
-contrib:
-- added BCB mngdump; a GUI-based MNG dumping utility (Andy Protano)
-
-doc:
-- updated RPM spec-file by MATSUURA Takanori
-- updated README.contrib
-
-makefiles:
-- fixed some stuff in automake/autoconf/libtool
-- fixed auto* for bug B117103
-
------------------------------------------------------------
-
-0.9.2 (August 7th 2000)
------------------------
-
-in short:
-
-Third beta release! Last one???
-
-!!IMPORTANT!! All file-names are now prefixed with "libmng_" !!IMPORTANT!!
-
-Many thanks to Albert Chin-A-Young for his contribution of the
-autoconf/automake/libtool stuff and to Ralph Giles for helping me
-put it in the right places.
-
-There's a special README.autoconf so please read it!
-
-- fixed bug 110320/110546/110547/111096
-- added several status retrieval functions
-- fixed other small bugs in display processing
-- fixed number of small problems and documentation typos
-- added autoconf/automake/libtool
-- added latest MNG plugin (0.9.0) by Jason Summers
-
--------------------
-
-bugfixes:
-B110320 - fixed GCC warning about mix-sized pointer math
-B110546 - fixed for improperly returning UNEXPECTEDEOF
-B110547 - fixed bug in interlace code
-B111096 - fixed large-buffer read-suspension
-
-core:
-- version numbers
-- fixed small bugs in display processing
-- removed Nextbackxxx fields (no longer used)
-- fixed problem with trace-functions improperly wrapped
-- put specific code in add_chunk() inside MNG_SUPPORT_WRITE wrapper
-- fixed documentation typos
-- fixed wrapping of suspension parameters
-- added status_xxxx functions
-- added trace-codes/-strings for status_xxxxx functions
-- changed file-prefixes
-- added function to set simplicity field
-- added trace-code/-string for updatemngsimplicity
-- fixed putchunk_unknown() function
-
-samples:
-
-contrib:
-- added latest MNG plugin (0.9.0) by Jason Summers
-
-doc:
-- version numbers
-- added autoconf readme
-- version numbers in RPM stuff
-
-makefiles:
-- fixed for new file-prefix
-- added autoconf/automake/libtool
-
------------------------------------------------------------
-
-0.9.1 (July 26th 2000)
-----------------------
-
-in short:
-
-Second beta release.
-
-Given the enormous amount of bug-reports (not ;-), this will most likely
-be one of the last betas. If things remain upright, the first public release
-(1.0.0) is fairly eminent in the weeks to come...
-
-- added SDL mng player by Ralph Giles to contributions
-- fixed timing and added internal buffering for I/O-suspension scenarios
-- added get routines for internal display-state variables (frame/layer/playtime)
-- changed read-processing for improved I/O-suspension (internal buffering)
-- fixed several problems with create- & write-support
-- added a load of documentation
-- lots of small stuff
-
--------------------
-
-bugfixes:
-
-core:
-- fixed mandatory BACK color to be opaque
-- changed mng_display_resume to allow to be called after a suspension
- return with MNG_NEEDMOREDATA
-- changed comments to indicate modified behavior for timer & suspension breaks
-- added variables for go_xxxx processing
-- implemented support for freeze/reset/resume & go_xxxx
-- added trace-codes/-strings for special display processing
-- added variables for improved timing support
-- added support for improved timing
-- added get routines for internal display variables
-- added get/set routines for suspensionmode variable
-- added trace-code/-string for get/set suspensionmode
-- added trace-codes/-strings for get/set display variables
-- added support for improved I/O-suspension
-- changed read-processing for improved I/O-suspension
-- added trace-code/-string for read_databuffer (I/O-suspension)
-- added suspendbuffer constants
-- changed EOF processing behavior
-- fixed TERM delay processing
-- changed pre-draft48 frame_mode=3 to frame_mode=1
-- added callbacks for SAVE/SEEK processing
-- added trace-codes/-strings for SAVE/SEEK callbacks
-- added variable for NEEDSECTIONWAIT breaks
-- added trace-codes/-strings for get/set sectionbreaks
-- added NEEDSECTIONWAIT error-code/-string
-- added macro + routine to set returncode without calling error callback
-- added trace-code/-string for special error routine
-- changed default readbuffer size from 1024 to 4200
-- added variable for freeze & reset processing
-- fixed storage of images during mng_read()
-- fixed support for mng_display() after mng_read()
-- added error cleanup processing
-- fixed support for mng_display_reset()
-- fixed suspension-buffering for 32K+ chunks
-- added function to set frame-/layer-count & playtime
-- added trace-code/-string for updatemngheader
-- added error-code/-string for updatemngheader if not a MNG
-- fixed creation-code
-- fixed writing of signature
-- fixed several chunk-writing routines
-
-samples:
-- fixed the libmng.pas module in line with libmng.h
-
-contrib:
-- added the SDL based mngplay viewer by Ralph Giles
-
-doc:
-- extended the RPM contribution by MATSUURA Takanori
-- added libmng.txt, a full description of the library and its usage
-- added man-pages for mng(5), jng(5) and libmng(3)
-
-makefiles:
-
------------------------------------------------------------
-
-0.9.0 (June 30th 2000)
-----------------------
-
-in short:
-
-This is the first beta!!! Yippee!!!
-
-Thanks to all the people who helped to guide me in the right direction.
-You know who you are!
-
-A special thanks to the guys with early implementations, who stood by and
-put up with my whims :-)
-
-changes over 0.5.3:
-
-- updated mngplg to 0.4.1 (the latest & greatest)
-- changed refresh parameters to 'x,y,width,height'
-
------------------------------------------------------------
-
-0.5.3 (never released)
-----------------------
-
-in short:
-
-This is a working version only; the next release will be 0.9.0 (first Beta!)
-
-There are a few incompatible changes with previous versions. The userdata
-variable has been changed from mng_uint32 to mng_ptr to accomodate 64-bit
-systems. For the same reason memory allocation size parameters have been
-changed to a mng_size_t type which is a typedef of size_t.
-
-Thanks to Aleks Jakulin for helping to iron out some 64-bit platform issues!
-
-- implemented the update-region parameters of the refresh callback
-- added support for most common delta-image options
-- added an animation-speed modifier
-- added an image-level parameter for the processtext callback
-- updated mngplg to 0.4.0 (supports JNG, full CMS, and other enhancements!)
-- fixed a lot of small things
-- added support for PPLT chunk
-- fixed to support 64-bit platforms
-
--------------------
-
-bugfixes:
-
-core:
-- added processing of color-info on delta-image
-- fixed handling of empty SAVE chunk
-- fixed display of stored JNG images
-- fixed problem with BASI-IEND as object 0
-- changed the version parameters (obviously)
-- added update-region parms for refresh calback
-- added Needrefresh parameter
-- added initialization of update-region for refresh
-- added initialization of Needrefresh parameter
-- changed progressive-display processing
-- added tracecodes for tracing JPEG progression
-- added tracing of JPEG calls
-- added Deltaimmediate parm for faster delta-processing
-- added extra checks for delta-images
-- many changes to support delta-images
-- optimized some store_xxx routines
-- fixed some small things (as precaution)
-- fixed possible trouble if IEND display-processing got broken up
-- fixed nasty bug with embedded PNG after delta-image
-- added processing of PLTE & tRNS for delta-images
-- added processing of PLTE/tRNS & color-info for delta-images in the
- ani_objects chain
-- fixed problem with color-correction for stored images
-- added get/set for speedtype to facilitate testing
-- added trace-codes & -strings for get/set speedtype
-- added speed-modifier to timing routine
-- added get-routine of imagelevel for processtext callback
-- added trace-code & -string for get imagelevel
-- added administration of imagelevel parameter
-- added support for PPLT chunk
-- added trace-codes & -strings for PPLT chunk processing
-- fixed problem with incorrect gamma-correction
-- fixed inclusion of IJG read/write code
-- fixed problem with 16-bit GA format
-- fixed problem with cheap transparency for 4-bit gray
-- fixed display_xxxx routines for interlaced images
-- added precaution against faulty iCCP chunks from PS
-- changed userdata variable to mng_ptr
-- added typedef for mng_size_t
-- changed size parameter for memory allocation to mng_size_t
-- fixed compiler-warning for non-initialized iB variable
-- changed definition for 32-bit ints (64-bit platforms)
-- changed definition for mng_handle (64-bit platforms)
-- swapped refresh parameters
-- fixed initialization routine for new mng_handle type
-- added inclusion of stdlib.h for abs()
-- fixed some 64-bit warnings
-- fixed incompatible return-types
-
-samples:
-
-contrib:
-- updated mngplg to 0.3.0 (supports JNG & full color-correction!)
-- updated mngplg to 0.4.0 (Jason is picking up the pace ;-)
-
-doc:
-- added rpm directory with rpm spec-file (contributed by MATSUURA Takanori)
-
-makefiles:
-- changed makefile.linux to reflect versionnr for shared-lib
-- changed makefile.linux to depend on mng_conf.h & mng_types.h
-
------------------------------------------------------------
-
-0.5.2 (June 10th 2000)
-----------------------
-
-in short:
-
-This is the third release for developers
-Another milestone since JNG is now fully supported
-The next release will most likely be numbered 0.9.0 as the first Beta!!
-
-Fixed bug 106017 & 106019
-Added many constants regarding chunk-property values
-Implemented full JNG support
-Added all the error- & trace-strings
-Added get/set routines for default ZLIB/IJG parameters
-Added a generic makefile for Unix platforms (contributed by Tim Rowley)
-Added canvasstyle for separate RGB + A canvas (eg. mozilla-style)
-Separated configuration-options into a separate file: "mng_conf.h"
-Fixed stuff for generic Unix compilation (contributed by Tim Rowley)
-Upgraded to lcms1.0.6 (now supports 16-bit endian-peculiarities)
-Added a makefile for Linux ELF & fixed some code-issues to go along with gcc
-Added support for suspended input-buffer processing
-Implemented the display-routines for RGBA/ARGB/BGRA/ABGR canvasstyles
-Implemented the application background-restore functionality
-Fixed & tested the mngtree Unix-sample (runs on Linux-RH6.2 with libmng.so)
-Upgraded mngplg to v0.2.2 (based on the latest code including JNG)
-Fixed a lot of other assorted stuff
-
--------------------
-
-bugfixes:
-B003(106017) - fixed problem with <mem.h> being proprietary to BCB
-B004(106019) - fixed problem when MNG_SUPPORT_WRITE not defined
-
-core:
-- bumped version-numbers up to 0.5.2 (yeah, really)
-- fixed support for IJGSRC6B
-- cleaned up some code regarding mixed support-options
-- complemented constants for chunk-property values
-- fixed MNG_UINT_pHYg value
-- implemented JNG support
-- fixed problem with DEFI clipping
-- added error telltale strings & support
-- added trace telltale strings & support
-- added support for global color-chunks inside TERM/LOOP
-- added support for global PLTE,tRNS,bKGD inside TERM/LOOP
-- added default IJG compression parameters and such
-- moved init of default zlib parms to "mng_hlapi.c"
-- added init of default IJG parms
-- added support for get/set of zlib/IJG default parms
-- added tracestrings for global animation color-chunks
-- added tracestrings for get/set of default ZLIB/IJG parms
-- added tracestrings for global PLTE,tRNS,bKGD
-- added framenr/layernr/playtime to object header
-- added initialization of framenr/layernr/playtime
-- changed ani_create calls not returning object pointer
-- create ani objects always (not just inside TERM/LOOP)
-- fixed inconsistancy with freeing global iCCP profile
-- fixed minor bugs 16-bit pixel-handling
-- added object promotion routine (PROM handling)
-- added trace-codes & -strings for image-object promotion
-- added trace-codes & -strings for delta-image processing
-- added error-codes & -strings for delta-image processing
-- added support for delta-image processing
-- added ani-object routines for delta-image processing
-- added delta-image fields
-- added compression/filter/interlace fields to object-buffer for
- delta-image processing
-- added delta-image row-processing routines
-- fixed up punctuation in several files (contributed by Tim Rowley)
-- removed useless definition in "mng_chunks.h" (contributed by Tim Rowley)
-- fixed pointer confusion in "mng_display.c" (contributed by Tim Rowley)
-- fixed inclusion for memcpy (contributed by Tim Rowley)
-- added mng_int32p (contributed by Tim Rowley)
-- added internal delta-image processing callbacks
-- separated configuration-options into "mng_conf.h"
-- changed to most likely configuration
-- added RGB8_A8 canvasstyle
-- added getalphaline callback for RGB8_A8 canvasstyle
-- fixed some makeup for Linux gcc compile
-- implemented app bkgd restore routines
-- implemented RGBA8, ARGB8, BGRA8 & ABGR8 display routines
-- added support for RGB8_A8 canvasstyle
-- added support for suspended input-buffer processing
-- added mng_read_resume HLAPI function to support read-suspension
-- fixed timer-handling to run with Mozilla (Tim Rowley)
-- fixed alpha-handling for alpha canvasstyles
-- fixed some compilation-warnings (contrib Jason Morris)
-
-samples:
-- fixed mngview(delphi) to work with the new core
-- synchronized libmng.pas(delphi) with the new libmng.h header
-- removed the error- & trace-strings from libmng.pas(delphi)
-- fixed mngtree(Unix) to compile on Linux (runs with libmng.so)
-- added makefile.linux for mngtree(Unix) (tested on RedHat6.2)
-
-contrib:
-- updated mngplg to 0.2.2 (based on latest code; supports JNG!)
-
-doc:
-- this file obviously
-- added Tim Rowley as contributing author
-- changed the examples.readme doc
-- updated the design-schematics in line with the current code
-
-makefiles:
-- changed the directory to "makefiles" to avoid name-conflicts
-- added generic Unix makefile (thanks to Tim Rowley)
-- added Linux ELF makefile (tested on RedHat6.2)
-
------------------------------------------------------------
-
-0.5.1 May 16th 2000
--------------------
-
-in short:
-
-This is the second release for developers
-It's a bit of a milestone since all the chunk functionality is in place and
-functioning (read, examine, create & write)
-This version is incompatible with 0.5.0 since some of the callback prototypes
-have changed (should be the last time that happens!)
-There are a few more samples and even a real contribution!
-
-Fixed bug 105795 & 105797
-Fixed a mis-alignment in animation-timing
-Added chunk-access functions
-Finished all chunk-storage routine-bits
-Finished all chunk-write routines
-Changed the callback prototypes to allow error-reporting back to the library
-Fixed some routines to allow for callback error-reporting
-Added version-control functions & constants
-Added two functions to set display- & sRGB-profile from memory
-Moved CRC table to dynamic structure (for improved thread-safety)
-Added SAVE & SEEK save&restore functionality
-Finished the application-based CMS-callbacks
-Fixed a few BCB specifics
-Changed the Win32 DLL and samples to use __stdcall
-Did some more assorted little changes
-Added 2 BCB samples
-Added 1 Unix sample
-Added the MNG plugin by Jason Summers in the contrib section
-Changed some documents to reflect these changes
-
--------------------
-
-bugfixes:
-B001(105795) - fixed wrong lcms call & memory-leak for gammatables
-B002(105797) - fixed problem with missing sRGB profile
-
-core:
-- changed chunk iteration function
-- added chunk access functions
-- added version control constants & functions
-- changed strict-ANSI stuff
-- added set_outputprofile2 & set_srgbprofile2
-- added empty-chunk put-routines
-- added version_dll & VERSION_DLL (for consistency)
-- added version control explanatory text & samples
-- added iteratechunk callback definition
-- improved definitions for DLL support
-- added 8-bit palette definition
-- added general array definitions
-- added MNG_NULL definition
-- changed most callback prototypes to allow the app
- to report errors during callback processing
-- added CRC table to main structure (for thread-safety)
-- added iPLTEentries for checking hIST-length
-- changed palette definition to exported palette-type
-- removed frozen indicator
-- added create/write indicators
-- added eMNGma hack (will be removed in 1.0.0 !!!)
-- added TERM animation object pointer (easier reference)
-- added saved-data structure for SAVE/SEEK processing
-- added some errorcodes
-- added application errorcodes (used with callbacks)
-- moved chunk-access errorcodes to severity 5
-- added chunk-access function trace-codes
-- changed trace to macro for callback error-reporting
-- added save_state & restore_state trace-codes
-- put in some extra comments
-- fixed layout for sBIT, PPLT
-- changed write callback definition
-- fixed layout for PPLT again (missed deltatype ?!?)
-- cleaned up left-over teststuff in the BACK chunk routine
-- changed CRC initialization to use dynamic structure
- (wasn't thread-safe the old way !)
-- filled in many missing sequence&length checks
-- filled in many missing chunk-store snippets
-- added checks for running animations
-- filled remaining write routines
-- fixed read_pplt with regard to deltatype
-- added callback error-reporting support
-- added pre-draft48 support (short MHDR, frame_mode, LOOP)
-- fixed chunk-storage bit in several routines
-- supplemented the SAVE & SEEK display processing
-- added init of iPLTEcount
-- changed calling-convention definition
-- changed status-handling of display-routines
-- added versioning-control routines
-- filled the write routine
-- fixed frame_delay misalignment
-- added sanity check for frozen status
-- changed display_mend to reset state to initial or SAVE
-- added save_state and restore_state for SAVE/SEEK/TERM
- processing
-- added process_save & process_seek routines
-- changed and filled iterate-chunk function
-- added getchunk functions
-- added putchunk functions
-- added empty-chunk put-routines
-- filled application-based color-management routines
-- added creatememprofile
-- filled the deflatedata routine
-- added cleanup of saved-data (SAVE/SEEK processing)
-- moved the actual write_graphic functionality from mng_hlapi.c
- to it's appropriate function in the mng_write.c module
-- moved standard header includes into mng_types.h
- (stdlib/mem for mem-mngmt & math for fp gamma-calc)
-- added getimgdata & putimgdata functions
-
-samples:
-- fixed mngview(delphi) to work with the new core
-- synchronized libmng.pas(delphi) with the new libmng.h header
-- added mngtree(bcb) sample
-- added bogus(bcb) sample
-- added mngtree(unix) sample
-
-contrib:
-- added mngplg 0.1.0 / a MNG plugin for Win32 by Jason Summers
-
-doc:
-- added this changes.readme file
-- changed the samples.readme doc accordingly
-- changed the contrib.readme doc accordingly
-
------------------------------------------------------------
-
-0.5.0 May 1st 2000
-------------------
-
-in short:
-
-This is the first developers release.
-It's roughly about 60% done.
diff --git a/src/3rdparty/libmng/LICENSE b/src/3rdparty/libmng/LICENSE
deleted file mode 100644
index 2b624c00a7..0000000000
--- a/src/3rdparty/libmng/LICENSE
+++ /dev/null
@@ -1,57 +0,0 @@
-/* ************************************************************************** */
-/* * * */
-/* * COPYRIGHT NOTICE: * */
-/* * * */
-/* * Copyright (c) 2000-2007 Gerard Juyn (gerard@libmng.com) * */
-/* * [You may insert additional notices after this sentence if you modify * */
-/* * this source] * */
-/* * * */
-/* * For the purposes of this copyright and license, "Contributing Authors" * */
-/* * is defined as the following set of individuals: * */
-/* * * */
-/* * Gerard Juyn * */
-/* * Glenn Randers-Pehrson * */
-/* * * */
-/* * The MNG Library is supplied "AS IS". The Contributing Authors * */
-/* * disclaim all warranties, expressed or implied, including, without * */
-/* * limitation, the warranties of merchantability and of fitness for any * */
-/* * purpose. The Contributing Authors assume no liability for direct, * */
-/* * indirect, incidental, special, exemplary, or consequential damages, * */
-/* * which may result from the use of the MNG Library, even if advised of * */
-/* * the possibility of such damage. * */
-/* * * */
-/* * Permission is hereby granted to use, copy, modify, and distribute this * */
-/* * source code, or portions hereof, for any purpose, without fee, subject * */
-/* * to the following restrictions: * */
-/* * * */
-/* * 1. The origin of this source code must not be misrepresented; * */
-/* * you must not claim that you wrote the original software. * */
-/* * * */
-/* * 2. Altered versions must be plainly marked as such and must not be * */
-/* * misrepresented as being the original source. * */
-/* * * */
-/* * 3. This Copyright notice may not be removed or altered from any source * */
-/* * or altered source distribution. * */
-/* * * */
-/* * The Contributing Authors specifically permit, without fee, and * */
-/* * encourage the use of this source code as a component to supporting * */
-/* * the MNG and JNG file format in commercial products. If you use this * */
-/* * source code in a product, acknowledgment would be highly appreciated. * */
-/* * * */
-/* ************************************************************************** */
-/* * * */
-/* * Parts of this software have been adapted from the libpng package. * */
-/* * Although this library supports all features from the PNG specification * */
-/* * (as MNG descends from it) it does not require the libpng package. * */
-/* * It does require the zlib library and optionally the IJG jpeg library, * */
-/* * and/or the "little-cms" library by Marti Maria (depending on the * */
-/* * inclusion of support for JNG and Full-Color-Management respectively. * */
-/* * * */
-/* * This library's function is primarily to read and display MNG * */
-/* * animations. It is not meant as a full-featured image-editing * */
-/* * component! It does however offer creation and editing functionality * */
-/* * at the chunk level. * */
-/* * (future modifications may include some more support for creation * */
-/* * and or editing) * */
-/* * * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/README b/src/3rdparty/libmng/README
deleted file mode 100644
index a8e67cad53..0000000000
--- a/src/3rdparty/libmng/README
+++ /dev/null
@@ -1,36 +0,0 @@
-libmng 1.0.10
--------------
-
-Added provisional ANG and anIM support, and made some minor bugfixes.
-
-libmng 1.0.9
-------------
-
-A number of optimizations in the chunk handling and reader/writer code.
-This saves over 20KB on binary footprint!
-
-Also several bugfixes and a couple of patches bring it another step
-closer to perfection.... :-)
-
-See CHANGELOG for details.
-
-
-Y.T.
-
-Gerard
-
-
-For more information please visit:
-
-The official libmng web-site:
- http://www.libmng.com/
-
-Libmng's community on SourceForge:
- https://sourceforge.net/project/?group_id=5635
-
-The official MNG homepage:
- http://www.libpng.org/pub/mng/
-
-The official PNG homepage:
- http://www.libpng.org/pub/png/
-
diff --git a/src/3rdparty/libmng/README.autoconf b/src/3rdparty/libmng/README.autoconf
deleted file mode 100644
index 753f7b4fde..0000000000
--- a/src/3rdparty/libmng/README.autoconf
+++ /dev/null
@@ -1,213 +0,0 @@
-**********************************************************************
-**********************************************************************
-
- ***** this is unmaintained *****
-
-If you happen to find problems with autoconfiguration and building,
-I simply cannot help you. I'm looking for a maintainer that doesn't mind
-spending a few minutes every now and then on the next release to make sure
-things are still in working order.
-
-For the moment all autoconf stuff ahs been moved into unmaintained!!
-
-**********************************************************************
-**********************************************************************
-
-
-
-
-Configuration from CVS
-======================
-
-If you're using source checked out from CVS, rather than a source
-distribution tarball, please be aware that you can use ./autogen.sh in
-place of ./configure below.
-
-Because this is a cross-platform project, the source templates for
-the autoconf scripts are sequestered in the 'makefiles' directory.
-Running './autogen.sh' will copy them into their conventional places at
-the lop level. If you already see the files there, you don't need to
-worry about this step.
-
-Basic Installation
-==================
-
- These are generic installation instructions.
-
- The `configure' shell script attempts to guess correct values for
-various system-dependent variables used during compilation. It uses
-those values to create a `Makefile' in each directory of the package.
-It may also create one or more `.h' files containing system-dependent
-definitions. Finally, it creates a shell script `config.status' that
-you can run in the future to recreate the current configuration, a file
-`config.cache' that saves the results of its tests to speed up
-reconfiguring, and a file `config.log' containing compiler output
-(useful mainly for debugging `configure').
-
- If you need to do unusual things to compile the package, please try
-to figure out how `configure' could check whether to do them, and mail
-diffs or instructions to the address given in the `README' so they can
-be considered for the next release. If at some point `config.cache'
-contains results you don't want to keep, you may remove or edit it.
-
- The file `configure.in' is used to create `configure' by a program
-called `autoconf'. You only need `configure.in' if you want to change
-it or regenerate `configure' using a newer version of `autoconf'.
-
-The simplest way to compile this package is:
-
- 1. `cd' to the directory containing the package's source code and type
- `./configure' to configure the package for your system. If you're
- using `csh' on an old version of System V, you might need to type
- `sh ./configure' instead to prevent `csh' from trying to execute
- `configure' itself.
-
- Running `configure' takes awhile. While running, it prints some
- messages telling which features it is checking for.
-
- 2. Type `make' to compile the package.
-
- 3. Optionally, type `make check' to run any self-tests that come with
- the package.
-
- 4. Type `make install' to install the programs and any data files and
- documentation.
-
- 5. You can remove the program binaries and object files from the
- source code directory by typing `make clean'. To also remove the
- files that `configure' created (so you can compile the package for
- a different kind of computer), type `make distclean'. There is
- also a `make maintainer-clean' target, but that is intended mainly
- for the package's developers. If you use it, you may have to get
- all sorts of other programs in order to regenerate files that came
- with the distribution.
-
-Compilers and Options
-=====================
-
- Some systems require unusual options for compilation or linking that
-the `configure' script does not know about. You can give `configure'
-initial values for variables by setting them in the environment. Using
-a Bourne-compatible shell, you can do that on the command line like
-this:
- CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
-
-Or on systems that have the `env' program, you can do it like this:
- env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
-
-Compiling For Multiple Architectures
-====================================
-
- You can compile the package for more than one kind of computer at the
-same time, by placing the object files for each architecture in their
-own directory. To do this, you must use a version of `make' that
-supports the `VPATH' variable, such as GNU `make'. `cd' to the
-directory where you want the object files and executables to go and run
-the `configure' script. `configure' automatically checks for the
-source code in the directory that `configure' is in and in `..'.
-
- If you have to use a `make' that does not supports the `VPATH'
-variable, you have to compile the package for one architecture at a time
-in the source code directory. After you have installed the package for
-one architecture, use `make distclean' before reconfiguring for another
-architecture.
-
-Installation Names
-==================
-
- By default, `make install' will install the package's files in
-`/usr/local/bin', `/usr/local/man', etc. You can specify an
-installation prefix other than `/usr/local' by giving `configure' the
-option `--prefix=PATH'.
-
- You can specify separate installation prefixes for
-architecture-specific files and architecture-independent files. If you
-give `configure' the option `--exec-prefix=PATH', the package will use
-PATH as the prefix for installing programs and libraries.
-Documentation and other data files will still use the regular prefix.
-
- In addition, if you use an unusual directory layout you can give
-options like `--bindir=PATH' to specify different values for particular
-kinds of files. Run `configure --help' for a list of the directories
-you can set and what kinds of files go in them.
-
- If the package supports it, you can cause programs to be installed
-with an extra prefix or suffix on their names by giving `configure' the
-option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
-
-Optional Features
-=================
-
- Some packages pay attention to `--enable-FEATURE' options to
-`configure', where FEATURE indicates an optional part of the package.
-They may also pay attention to `--with-PACKAGE' options, where PACKAGE
-is something like `gnu-as' or `x' (for the X Window System). The
-`README' should mention any `--enable-' and `--with-' options that the
-package recognizes.
-
- For packages that use the X Window System, `configure' can usually
-find the X include and library files automatically, but if it doesn't,
-you can use the `configure' options `--x-includes=DIR' and
-`--x-libraries=DIR' to specify their locations.
-
-Specifying the System Type
-==========================
-
- There may be some features `configure' can not figure out
-automatically, but needs to determine by the type of host the package
-will run on. Usually `configure' can figure that out, but if it prints
-a message saying it can not guess the host type, give it the
-`--host=TYPE' option. TYPE can either be a short name for the system
-type, such as `sun4', or a canonical name with three fields:
- CPU-COMPANY-SYSTEM
-
-See the file `config.sub' for the possible values of each field. If
-`config.sub' isn't included in this package, then this package doesn't
-need to know the host type.
-
- If you are building compiler tools for cross-compiling, you can also
-use the `--target=TYPE' option to select the type of system they will
-produce code for and the `--build=TYPE' option to select the type of
-system on which you are compiling the package.
-
-Sharing Defaults
-================
-
- If you want to set default values for `configure' scripts to share,
-you can create a site shell script called `config.site' that gives
-default values for variables like `CC', `cache_file', and `prefix'.
-`configure' looks for `PREFIX/share/config.site' if it exists, then
-`PREFIX/etc/config.site' if it exists. Or, you can set the
-`CONFIG_SITE' environment variable to the location of the site script.
-A warning: not all `configure' scripts look for a site script.
-
-Operation Controls
-==================
-
- `configure' recognizes the following options to control how it
-operates.
-
-`--cache-file=FILE'
- Use and save the results of the tests in FILE instead of
- `./config.cache'. Set FILE to `/dev/null' to disable caching, for
- debugging `configure'.
-
-`--help'
- Print a summary of the options to `configure', and exit.
-
-`--quiet'
-`--silent'
-`-q'
- Do not print messages saying which checks are being made. To
- suppress all normal output, redirect it to `/dev/null' (any error
- messages will still be shown).
-
-`--srcdir=DIR'
- Look for the package's source code in directory DIR. Usually
- `configure' can determine that directory automatically.
-
-`--version'
- Print the version of Autoconf used to generate the `configure'
- script, and exit.
-
-`configure' also accepts some other, not widely useful, options.
diff --git a/src/3rdparty/libmng/README.config b/src/3rdparty/libmng/README.config
deleted file mode 100644
index d5cd4541d0..0000000000
--- a/src/3rdparty/libmng/README.config
+++ /dev/null
@@ -1,104 +0,0 @@
-Configuration options in libmng
-===============================
-
-The library is fairly configurable through the use of a number of defines.
-Please note however that certain defines are for internal use only.
-The following list gives a summary of options that can be used externally to
-define the functionality of the library:
-
-========================================
-
-#define MNG_BUILD_DLL
-
-This is used to indicate that a "standard" DLL should result from compiling
-the library. Please note the remarks in README.dll if you intend to work
-with the library as a DLL. The purpose of this option is to ensure that
-DLL builds have the same set of functions.
-
-#define MNG_BUILD_SO
-
-This is used to indicate that a "standard" shared library (SO) should result
-from a compilation. The purpose of this option is to ensure that all
-shared libraries generated this way will have the same set of functions.
-
-#define MNG_USE_DLL / #define MNG_USE_SO
-
-These should be used when including the library header in the compilation
-of an application to indicate that the compiler/linker must take the
-necessary steps to make the binary executable to use the standard DLL
-or shared library (SO).
-
-#define MNG_SKIP_ZLIB / #define MNG_SKIP_LCMS / #define MNG_SKIP_IJG6B
-
-Use these in conjunction with MNG_USE_DLL / MNG_USE_SO. This is useful if
-you only need the external definitions of the MNG library and not the others,
-which will speed up the compilation process.
-
-#define MNG_SUPPORT_FULL / #define MNG_SUPPORT_LC / #define MNG_SUPPORT_VLC
-
-These can be used to indicate the level of MNG spec compliance required.
-Currently only full MNG compliance is supported.
-
-#define MNG_SUPPORT_IJG6B
-
-This can be used to indicate if JNG support is required. This option will
-include the IJG JPEG-library. Note that MNG_SUPPORT_FULL will automatically
-set this option. Use this only if you need JNG support with MNG-(V)LC.
-
-#define MNG_FULL_CMS / #define MNG_GAMMA_ONLY / #define MNG_NO_CMS /
-#define MNG_APP_CMS
-
-These indicate the color-correction support level of the library.
-If you are on a platform that supports lcms (Little CMS by Marti Maria Saguar)
-then it is highly recommended to define MNG_FULL_CMS.
-If your platform has it's own CMS then select MNG_APP_CMS and be sure to
-include the appropriate callbacks in your app.
-In all other cases it is recommended to define MNG_GAMMA_ONLY.
-
-#define MNG_SUPPORT_READ / #define MNG_SUPPORT_WRITE /
-#define MNG_SUPPORT_DISPLAY
-
-These indicate the high-level support for reading, writing and/or
-displaying files. Note that in order to display a file, you'll need to read
-it first. (yes, really!)
-
-#define MNG_STORE_CHUNKS
-
-This indicates that the library should store chunk-information when reading
-a file. This information can then be processed through the
-MNG_ITERATE_CHUNKS() function. Note that you must specify this option if
-you want to create and write a new file.
-
-#define MNG_ACCESS_CHUNKS
-
-This is used to indicate that the app may need access to internally stored
-chunk information. MNG_STORE_CHUNKS must be defined as well for this option
-to function properly.
-
-#define MNG_INTERNAL_MEMMNGMT
-
-You can use this to have the library handle it's own memory allocation and
-deallocation through the "standard" memory functions. This option is turned
-off by default, which means your app must define the memory callbacks.
-
-#define MNG_ERROR_TELLTALE
-
-Set this on to allow human-readable error-messages to be included in the
-library and the error function and callback.
-
-#define MNG_BIGENDIAN_SUPPORTED
-
-This option should be used to indicate the hardware is based on big endian
-integers.
-
-#define MNG_SUPPORT_TRACE / #define MNG_TRACE_TELLTALE
-
-These two can be used when debugging an app. You'll need to have the trace
-callback setup also. This allows for a rather thorough investigation of the
-libraries function paths.
-
-========================================
-
-Any other optional defines you may encounter are for internal use only.
-please do not specify them externally. In case of doubt, consult the
-support email lists. More info can be found on http://www.libmng.com
diff --git a/src/3rdparty/libmng/README.contrib b/src/3rdparty/libmng/README.contrib
deleted file mode 100644
index 9b287532a4..0000000000
--- a/src/3rdparty/libmng/README.contrib
+++ /dev/null
@@ -1,95 +0,0 @@
-The contrib directory contains contributions made by fellow
-enthousiasts. (Check respective web-sites for the latest version)
-
-----------------------------------------------------------------------
-
-mngplg - A Netscape plugin for MNG - by Jason Summers
-
-http://pobox.com/~jason1/imaging/mngplg/
-
-The very first contribution, and what a start!
-GIF look out, MNG is on the prowl and ready to swat you like a fly!
-
-----------------------------------------------------------------------
-
-mngplay - An SDL based MNG viewer - by Ralph Giles
-
-http://snow.ashlu.bc.ca/~giles/mng/
-
-Another nice contribution. View MNG files on practically any platform
-with this standalone viewer.
-Source-code only; Requires SDL library and libmng.so
-
-(Modified by Greg Roelofs)
-
-----------------------------------------------------------------------
-
-mngview - A BCB port of the Delphi sample - by Andy Protano
-
-I have added this nice little port to the BCB samples directory.
-It adds a nifty progressbar while reading a file. Excellent work!
-Requires libmng.dll
-(note: this is in the BCB samples directory)
-
-----------------------------------------------------------------------
-
-mngdump - A BCB GUI-based dump utility - by Andy Protano
-
-Andy has sent me this fully functional MNG dump utility, that gives
-detailed information of the contents of any MNG file.
-Requires libmng.dll
-
-----------------------------------------------------------------------
-
-mng-view - A GTK-based MNG viewer - by Vova Babin
-
-Vova has been hacking away with the libmng code and has come up with
-this nice little sample how to write a MNG viewer using GTK.
-Thanks mate!
-Source-code only
-Requires GTK+ (1.2 or higher) and libmng (0.9.2 or higher)
-
-(Modified by Greg Roelofs)
-
-----------------------------------------------------------------------
-
-mngview - Another MNG viewer; this one for MSVC - by Nicholaus Brennig
-
-A welcome contribution from Nicholaus. Author of SlowView. A very nice
-image-handling utility for Windows. A welcome contribution since there
-have been numerous questions about linking libmng with MSVC.
-Well, look no further. Here it is!
-
-----------------------------------------------------------------------
-
-MSVC libmng project - An MSVC project to build libmng.dll
- - by Chad Austin
-
-Chad has contributed some project-files that you could use to build
-libmng.dll with MSVC. Please be sure to read the README file included.
-
-----------------------------------------------------------------------
-
-fbmngplay - A simple fbcon based mng player - by Stefan Reinauer
-
-Stefan has contributed this little example, based on Ralph's
-SDL player. It uses the kernel framebuffer device to display mng
-animations through the libmng interface.
-(currently for 16-bit buffers only)
-
-----------------------------------------------------------------------
-
-xmngview - Lesstif/Motif standalone player for MNG files
- - by Winfried Szukalski
-
-Winfried contributed this MNG player for X-based systems.
-(recently updated)
-
-----------------------------------------------------------------------
-
-makemng - A delta-MNG creation utility for MSVC - by Alex Volkov
-
-Alex sent me this nice utility that will allow you to create highly
-optmized MNGs using the delta-PNG capabilities of MNG.
-
-----------------------------------------------------------------------
diff --git a/src/3rdparty/libmng/README.dll b/src/3rdparty/libmng/README.dll
deleted file mode 100644
index 2f779e81a4..0000000000
--- a/src/3rdparty/libmng/README.dll
+++ /dev/null
@@ -1,41 +0,0 @@
-Standard Windows DLL
-====================
-
-The DLL provided in the BCB/win32dll directory is meant as the sole candidate
-for distributions, based on libmng.dll, that install the DLL into the public
-Windows system-directory. The outline herein defines the requirements to
-which such a distribution must comply. If you cannot comply with these
-requirements please install the dll in the same directory as your application
-and NOT in the Windows system-directory!!!
-
-
-1) Only the DLL already assembled in the libmng distribution may be used for
- other distributions!
-
-2) Only stable public releases are eligible for distribution! A public release
- is one where the y-value of the x.y.z version-code is an even number.
- Eg. 1.0.0, 1.2.1, 2.4.7, etc.
-
-3) The installation program MUST store the DLL in the Windows system-directory!
- Eg. C:\WinNT\System32, C:\Windows98\System
- (Note: InstallShield users can use the <SYSDIR> variable)
-
-3) The installation program MUST flag the file as a shared library!
-
-4) The installation program MUST NOT install the DLL if a newer version
- already exists in the Windows system-directory! The standard DLL provided
- contains the Windows-default version-numbering system. PLEASE USE IT!!
- DO NOT rely on the date or size of the files.
-
-5) An uninstall procedure MAY NOT remove the DLL if other applications are
- still linked to it! Proper handling as a shared library is imperitive.
-
-6) TEST IT, TEST IT, TEST IT!!! (I just can't stress this enough)
- If you don't have enough time, let someone else test it BEFORE you
- distribute!
-
-
-The penalty for violating these rules is inclusion of your name in the list
-of endangered but useless species (just below the GIF entry!), and on my
-blacklist. YOU HAVE BEEN FOREWARNED!
-
diff --git a/src/3rdparty/libmng/README.examples b/src/3rdparty/libmng/README.examples
deleted file mode 100644
index 1ba94c1404..0000000000
--- a/src/3rdparty/libmng/README.examples
+++ /dev/null
@@ -1,48 +0,0 @@
-The samples are in platform-specific directories.
-
-!!! contributions are very welcome !!!
-
-
-bcb - Borland C++ Builder (3.0) (found under bcb/xxx)
------------------------------------------------------
-
-win32dll - sample project to create a Windows dll. Requires zlib1.2.1,
- IJG jpgsrc6b and lcms1.0.14. The directories containing these
- libraries must be at the same level as the libmng directory.
- So if you're in the directory with this file and the libmng
- sources, they should be in ..\zlib , ..\jpgsrc6b and ..\lcms
- respectively.
-
-!!! To run the other Win32 samples you need to copy the libmng.dll
- file from here into the sample's directory !!!
-
-mngtree - sample project to create a little command-line tool that dumps
- the chunk-structure of a given file onto stdout.
-
-bogus - a completely bogus example on how to create a perfectly valid
- (though slightly biased) MNG.
-
-mngview - port of the Delphi mngview sample. contributed by Andy Protano.
- see also README.contrib
-
-mngrepair- an example on how to fix invalid MNG files
- uses the new mng_copy_chunks() function and MNG_SOFTERRORS to
- 'ignore' certain input-errors. This conditional *MUST* only be used
- for exactly this kind of software; eg. repair utilities.
-
-
-delphi - Borland Delphi (3.0+) (found under contrib/delphi/xxx)
----------------------------------------------------------------
-
-mngview - sample project for a simple mng-viewer. The general unit in
- the delphi directory was translated from libmng.h It can be
- used in other projects to access libmng.dll created with the
- win32dll example above.
-
-
-unix - Unix (found under contrib/gcc/xxx)
------------------------------------------
-
-mngtree - basically a copy of the BCB sample. It includes a makefile for
- Linux and it's been tested on RedHat6.2
-
diff --git a/src/3rdparty/libmng/README.footprint b/src/3rdparty/libmng/README.footprint
deleted file mode 100644
index 34dba7f180..0000000000
--- a/src/3rdparty/libmng/README.footprint
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- You can use one or more of the following defines to
- reduce the size of the compiled library. Define the
- SKIPCANVAS macros for any canvas configurations that
- your application doesn't use. Define the SKIPCHUNK
- macros for any chunks that your application doesn't
- process. Define MNG_OPTIMIZE_FOOTPRINT to choose
- smaller code size over faster execution and less memory
- usage. These macros became available in version 1.0.6.
-*/
-
-/* eliminate unused features from libmng */
-#define MNG_OPTIMIZE_FOOTPRINT
-#define MNG_OPTIMIZE_OBJCLEANUP
-#define MNG_OPTIMIZE_CHUNKINITFREE
-#define MNG_OPTIMIZE_CHUNKASSIGN
-#define MNG_OPTIMIZE_CHUNKREADER
-
-#define MNG_SKIPCANVAS_ABGR8
-#define MNG_SKIPCANVAS_ARGB8
-#define MNG_SKIPCANVAS_BGR8
-#define MNG_SKIPCANVAS_BGRA8
-#define MNG_SKIPCANVAS_BGRA8_PM
-#define MNG_SKIPCANVAS_BGRX8
-#define MNG_SKIPCANVAS_RGBA8
-#define MNG_SKIPCANVAS_BGR565
-#define MNG_SKIPCANVAS_RGB565
-#define MNG_SKIPCANVAS_BGRA565
-#define MNG_SKIPCANVAS_RGBA565
-
-#define MNG_SKIPCHUNK_iCCP
-#define MNG_SKIPCHUNK_tEXt
-#define MNG_SKIPCHUNK_zTXt
-#define MNG_SKIPCHUNK_iTXt
-#define MNG_SKIPCHUNK_bKGD
-#define MNG_SKIPCHUNK_pHYs
-#define MNG_SKIPCHUNK_sBIT
-#define MNG_SKIPCHUNK_sPLT
-#define MNG_SKIPCHUNK_hIST
-#define MNG_SKIPCHUNK_tIME
-#define MNG_SKIPCHUNK_eXPI
-#define MNG_SKIPCHUNK_fPRI
-#define MNG_SKIPCHUNK_nEED
-#define MNG_SKIPCHUNK_pHYg
-
-
diff --git a/src/3rdparty/libmng/README.packaging b/src/3rdparty/libmng/README.packaging
deleted file mode 100644
index da0db3e7bb..0000000000
--- a/src/3rdparty/libmng/README.packaging
+++ /dev/null
@@ -1,24 +0,0 @@
-Packaging Libmng for distribution
----------------------------------
-
-These are some notes for those building binaries for distribution.
-
-We're interested to hear about anywhere libmng is helpful, so let us
-know if you're including it with your application or OS. Also, if your
-build is publicly accessible, we'd be happy to link to it from
-the libmng site.
-
-However, We respectfully request that you *not* distribute binaries as a
-shared library (DLL) with any of the major features disabled. While
-there is support for this in terms of #ifdef directives (in
-libmng_conf.h) and autoconf switches they are intended for embedded
-application and testing. The default compilation options support the
-full MNG specification, and we wish to avoid the confusion among
-general users that partial support would engender.
-
-
-Platform specific notes:
-
-We have a basic .spec file for generating rpms. Send us a note if you'd
-like to clean it up.
-
diff --git a/src/3rdparty/libmng/doc/Plan1.png b/src/3rdparty/libmng/doc/Plan1.png
deleted file mode 100644
index ced5517278..0000000000
--- a/src/3rdparty/libmng/doc/Plan1.png
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/libmng/doc/Plan2.png b/src/3rdparty/libmng/doc/Plan2.png
deleted file mode 100644
index 3619ea6631..0000000000
--- a/src/3rdparty/libmng/doc/Plan2.png
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/libmng/doc/doc.readme b/src/3rdparty/libmng/doc/doc.readme
deleted file mode 100644
index e92e93cb5a..0000000000
--- a/src/3rdparty/libmng/doc/doc.readme
+++ /dev/null
@@ -1,19 +0,0 @@
-This directory hosts the documentation for libmng.
-
-You will find a lot of useful info on the web-site:
-http://www.libmng.com
-
-Man-pages are in the man sub-directory
-
-RPM specification files are in the RPM sub-directory
-
-Files in this directory:
-
-- libmng.txt
-
-Description of the library proper and its usage
-
-- Plan1.png & Plan2.png
-
-Visual representation of the functional and technical
-design of the library (in PNG format of course!)
diff --git a/src/3rdparty/libmng/doc/libmng.txt b/src/3rdparty/libmng/doc/libmng.txt
deleted file mode 100644
index b9e9bc4b89..0000000000
--- a/src/3rdparty/libmng/doc/libmng.txt
+++ /dev/null
@@ -1,1107 +0,0 @@
-libmng - Multiple-image Network Graphics (MNG) Reference Library 1.0.9
-
-DESCRIPTION
-The libmng library supports decoding, displaying, encoding, and various
-other manipulations of the Multiple-image Network Graphics (MNG) format
-image files. It uses the zlib compression library, and optionally the
-JPEG library by the Independant JPEG Group (IJG) and/or
-lcms (little cms), a color-management library by Marti Maria Saguer.
-
-
-I. Introduction
-
-This file describes how to use and modify the MNG reference library
-(known as libmng) for your own use. There are seven sections to this
-file: introduction, callbacks, housekeeping, reading, displaying,
-writing, and modification and configuration notes for various special
-platforms. We assume that libmng is already installed; see the
-INSTALL.README file for instructions on how to install libmng.
-
-Libmng was written to support and promote the MNG specification.
-
-The latest MNG specification (currently 1.0) is available at
- http://www.libpng.org/pub/mng/
-
-Other information about MNG can be found at the MNG home page at
- http://www.libpng.org/pub/mng/
-
-The latest version of libmng can be found at its own homepage at
- http://www.libmng.com/
-
-In most cases the library will not need to be changed.
-For standardization purposes the library contains both a Windows DLL
-and a makefile for building a shared library (SO). The library is
-written in C, but an interface for Borland Delphi is also available.
-
-Libmng has been designed to handle multiple sessions at one time,
-to be easily modifiable, to be portable to the vast majority of
-machines (ANSI, K&R, 32-, and 64-bit) available, and to be easy
-to use.
-
-Libmng uses zlib for its compression and decompression of MNG files.
-Further information about zlib, and the latest version of zlib, can be
-found at the zlib home page, <http://www.zlib.org/>.
-The zlib compression utility is a general purpose utility that is
-useful for more than MNG/PNG files, and can be used without libmng.
-See the documentation delivered with zlib for more details.
-
-Libmng optionally uses the JPEG library by the Independant JPEG Group
-(IJG). This library is used for the JNG sub-format, which is part of
-the MNG specification, and allows for inclusion of JPEG decoded and
-thus highly compressed (photographic) images.
-Further information about the IJG JPEG library and the latest sources
-can be found at <http://www.ijg.org/>.
-
-Libmng can also optionally use the lcms (little CMS) library by
-Marti Maria Saguer. This library provides an excellent color-management
-system (CMS), which gives libmng the ability to provide full
-color-correction for images with the proper color-information encoded.
-Further information and the latest sources can be found at
-<http://www.littlecms.com/>.
-
-Libmng is thread safe, provided the threads are using different
-handles as returned by the initialization call.
-Each thread should have its own handle and thus its own image.
-Libmng does not protect itself against two threads using the
-same instance of a handle.
-
-The libmng.h header file is the single reference needed for programming
-with libmng:
-
-#include <libmng.h>
-
-
-II. Callbacks
-
-Libmng makes extensive use of callback functions. This is meant to
-keep the library as platform-independant and flexible as possible.
-Actually, the first call you will make to the library, already contains
-three parameters you can use to provide callback entry-points.
-
-Most functions must return a mng_bool (boolean). Returning MNG_FALSE
-indicates the library the callback failed in some way and the library
-will immediately return from whatever it was doing back to the
-application. Returning MNG_TRUE indicates there were no problems and
-processing can continue.
-
-Let's step through each of the possible callbacks. The sections on
-reading, displaying and writing will also explain which callbacks are
-needed when and where.
-
-- mng_ptr mng_memalloc (mng_size_t iLen)
-
-A very basic function which the library uses to allocate a memory-block
-with the given size. A typical implementation would be:
-
- mng_ptr my_alloc (mng_size_t iLen) {
- return calloc (1, iSize);
- }
-
-Note that the library requires you to zero-out the memory-block!!!
-
-- void mng_memfree (mng_ptr pPtr,
- mng_size_t iLen)
-
-Counterpart of the previous function. Typically:
-
- void my_free (mng_ptr pPtr, mng_size_t iLen) {
- free (pPtr);
- }
-
-- mng_bool mng_openstream (mng_handle hHandle)
-- mng_bool mng_closestream (mng_handle hHandle)
-
-These are called by the library just before it starts to process
-(either read or write) a file and just after the processing stops.
-This is the recommended place to do I/O initialization & finalization.
-Whether you do or not, is up to you. The library does not put any
-meaning into the calls. They are simply provided for your convenience.
-
-- mng_bool mng_readdata (mng_handle hHandle,
- mng_ptr pBuf,
- mng_uint32 iBuflen,
- mng_uint32p pRead)
-
-This function is called when the library needs some more input while
-reading an image. The reading process supports two modes:
-Suspension-mode (SMOD) and non-suspension-mode (NSMOD).
-See mng_set_suspensionmode() for a more detailed description.
-
-In NSMOD, the library requires you to return exactly the amount of bytes
-requested (= iBuflen). Any lesser amount indicates the input file
-is exhausted and the library will return a MNG_UNEXPECTEDEOF errorcode.
-
-In SMOD, you may return a smaller amount of bytes than requested.
-This tells the library it should temporarily wait for more input to
-arrive. The lib will return with MNG_NEEDMOREDATA, and will expect a
-call to mng_read_resume() or mng_display_resume() next, as soon as
-more input-data has arrived.
-
-For NSMOD this function could be as simple as:
-
- mng_bool my_read (mng_handle hHandle,
- mng_ptr pBuf,
- mng_uint32 iBuflen,
- mng_uint32p pRead) {
- *pRead = fread (pBuf, 1, iBuflen, myfile);
- return MNG_TRUE;
- }
-
-- mng_bool mng_writedata (mng_handle hHandle,
- mng_ptr pBuf,
- mng_uint32 iBuflen,
- mng_uint32p pWritten)
-
-This function is called during the mng_write() function to actually
-output data to the file. There is no suspension-mode during write,
-so the application must return the exact number of bytes the library
-requests to be written.
-
-A typical implementation could be:
-
- mng_bool my_write (mng_handle hHandle,
- mng_ptr pBuf,
- mng_uint32 iBuflen,
- mng_uint32p pWritten) {
- *pWritten = fwrite (pBuf, 1, iBuflen, myfile);
- return MNG_TRUE;
- }
-
-- mng_bool mng_errorproc (mng_handle hHandle,
- mng_int32 iErrorcode,
- mng_int8 iSeverity,
- mng_chunkid iChunkname,
- mng_uint32 iChunkseq,
- mng_int32 iExtra1,
- mng_int32 iExtra2,
- mng_pchar zErrortext)
-
-This function is called whenever an error is detected inside the
-library. This may be caused by invalid input, callbacks indicating
-failure, or wrongfully calling functions out of place.
-
-If you do not provide this callback the library will still return
-an errorcode from the called function, and the mng_getlasterror()
-function can be used to retrieve the other parameters.
-
-This function is currently only provided for convenience, but may
-at some point be used to indicate certain errors may be acceptable,
-and processing should continue.
-
-- mng_bool mng_traceproc (mng_handle hHandle,
- mng_int32 iFuncnr,
- mng_int32 iFuncseq,
- mng_pchar zFuncname)
-
-This function is provided to allow a functional analysis of the
-library. This may be useful if you encounter certain errors and
-cannot determine what the problem is.
-
-Almost all functions inside the library will activate this
-callback with an appropriate function-name at the start and end
-of the function. Please note that large images may generate an
-enormous amount of calls.
-
-- mng_bool mng_processheader (mng_handle hHandle,
- mng_uint32 iWidth,
- mng_uint32 iHeight)
-
-This function is called once the header information of an input-
-image has been processed. At this point the image dimensions are
-available and also some other properties depending on the type
-of the image. Eg. for a MNG the frame-/layercount, playtime &
-simplicity fields are known.
-
-The primary purpose of this callback is to inform the application
-of the size of the image, and for the application to initialize
-the drawing canvas to be used by the library. This is also a good
-point to set the canvas-style. Eg. mng_set_canvasstyle().
-
-- mng_bool mng_processtext (mng_handle hHandle,
- mng_uint8 iType,
- mng_pchar zKeyword,
- mng_pchar zText,
- mng_pchar zLanguage,
- mng_pchar zTranslation)
-
-This callback is activated for each textual chunk in the input-
-image. These are tEXt, zTXt & iTXt. It may be used to retain
-specific comments for presentation to the user.
-
-- mng_bool mng_processsave (mng_handle hHandle)
-- mng_bool mng_processseek (mng_handle hHandle,
- mng_pchar zName)
-
-The purpose of these callbacks is to signal the processing of the
-SAVE & SEEK chunks in a MNG input-file. This may be used in the
-future to specify some special processing. At the moment these
-functions are only provided as a signal.
-
-- mng_ptr mng_getcanvasline (mng_handle hHandle,
- mng_uint32 iLinenr)
-- mng_ptr mng_getbkgdline (mng_handle hHandle,
- mng_uint32 iLinenr)
-- mng_ptr mng_getalphaline (mng_handle hHandle,
- mng_uint32 iLinenr)
-
-These callbacks are used to access the drawing canvas, background
-canvas and an optional separate alpha-channel canvas. The latter is
-used only with the MNG_CANVAS_RGB8_A8 canvas-style.
-
-If the getbkgdline() callback is not supplied the library will
-composite full or partially transparent pixels in the image against
-a specified background color. See mng_set_bgcolor() for more details.
-If a chosen canvas-style includes an alpha-channel, this callback
-is very likely not needed.
-
-The application is responsible for returning a pointer to a line of
-pixels, which should be in the exact format as defined by the call
-to mng_set_canvasstyle() and mng_set_bkgdstyle(), without gaps between
-the representation of each pixel.
-
-- mng_bool mng_refresh (mng_handle hHandle,
- mng_uint32 iX,
- mng_uint32 iY,
- mng_uint32 iWidth,
- mng_uint32 iHeight)
-
-This callback is called when the library has drawn a complete frame
-onto the drawing canvas, and it is ready to be displayed.
-The application is responsible for transferring the drawing canvas
-from memory onto the actual output device.
-
-- mng_uint32 mng_gettickcount (mng_handle hHandle)
-
-This function should return the number of milliseconds on some internal
-clock. The entire animation timing depends heavily on this function,
-1and the number returned should be as accurate as possible.
-
-- mng_bool mng_settimer (mng_handle hHandle,
- mng_uint32 iMsecs)
-
-This callback is activated every time the library requires a "pause".
-Note that the function itself should NOT execute the wait. It should
-simply store the time-field and allow the library to return. Libmng
-will return with the MNG_NEEDTIMERWAIT code, indicating the callback
-was called and it is now time to execute the pause.
-
-After the indicated number of milliseconds have elapsed, the application
-should call mng_display_resume(), to resume the animation as planned.
-
-This method allows for both a real timer or a simple wait command in the
-application. Whichever method you select, both the gettickcount() and
-settimer() callbacks are crucial for proper animation timing.
-
-- mng_bool mng_processgamma (mng_handle hHandle,
- mng_uint32 iGamma)
-- mng_bool mng_processchroma (mng_handle hHandle,
- mng_uint32 iWhitepointx,
- mng_uint32 iWhitepointy,
- mng_uint32 iRedx,
- mng_uint32 iRedy,
- mng_uint32 iGreenx,
- mng_uint32 iGreeny,
- mng_uint32 iBluex,
- mng_uint32 iBluey)
-- mng_bool mng_processsrgb (mng_handle hHandle,
- mng_uint8 iRenderingintent)
-- mng_bool mng_processiccp (mng_handle hHandle,
- mng_uint32 iProfilesize,
- mng_ptr pProfile)
-- mng_bool mng_processarow (mng_handle hHandle,
- mng_uint32 iRowsamples,
- mng_bool bIsRGBA16,
- mng_ptr pRow)
-
-These callbacks are only required when you selected the MNG_APP_CMS
-directive during compilation of the library. See the configuration
-section for more details.
-
-- mng_bool mng_iteratechunk (mng_handle hHandle,
- mng_handle hChunk,
- mng_chunkid iChunkid,
- mng_uint32 iChunkseq)
-
-This callback is only used for the mng_iterate_chunks() function.
-It is called exactly once for each chunk stored.
-
-
-III. Housekeeping
-
-
-> Memory management
-
-The library can use internal memory allocation/deallocation or use
-provided callbacks for its memory management. The choice is made at
-compilation time. See the section on customization for details.
-
-If internal management has been selected, the memory callback functions
-need not be supplied. Even if you do supply them they will not be used.
-The actual code used is similar to the code discussed in the callback
-section:
-
- pPtr = calloc (1, iSize);
-
- free (pPtr);
-
-If your compiler does not support these functions, or you wish to monitor
-the library's use of memory for certain reasons, you can choose to
-compile the library with external memory management. In this case the
-memory callback functions MUST be supplied, and should function as if the
-above code was used.
-
-
-> Initialization
-
-The basic initialization of the library is short and swift:
-
- myhandle = mng_initialize (myuserdata, my_alloc,
- my_free, MNG_NULL);
- if (myhandle == MNG_NULL)
- /* process error */;
-
-The first field is an application-only parameter. It is saved in
-libmng's internal structures and available at all times through the
-mng_get_userdata() function. This is especially handy in callback functions
-if your program may be handling multiple files at the same time.
-
-The second and third field supply the library with the memory callback
-1function entry-points. These are described in more detail in the callback
-section and the previous paragraph.
-
-The fourth and last field may be used to supply the library with the
-entry-point of a trace callback function. For regular use you will not
-need this!
-
-The function returns a handle which will be your ticket to MNG-heaven.
-All other functions rely on this handle. It is the single fixed unique
-reference-point between your application and the library.
-
-You should call the initialization function for each image you wish to
-process simultaneously. If you are processing images consecutively, you can
-reset the internal status of the library with the mng_reset() function.
-This function will clear all internal state variables, free any stored
-chunks and/or objects, etc, etc. Your callbacks and other external parameters
-will be retained.
-
-After you successfully received the handle it is time to set the required
-callbacks. The sections on reading, displaying & writing indicate which
-callbacks are required and which are optional.
-To set the callbacks simply do:
-
- myretcode = mng_setcb_xxxxxx (myhandle, my_xxxxxx);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-Naturally you'd replace the x's with the name of the callback.
-
-
-> Cleanup
-
-Once you've gotten hold of that precious mng_handle, you should always,
-and I mean always, call the cleanup function when you're done.
-Just do:
-
- mng_cleanup (myhandle);
-
-And you're done. There shouldn't be an ounce of memory spilled after
-that call.
-
-Note that if you would like to process multiple files consecutively
-you do not need to do mng_cleanup() / mng_initialize() between each file
-but simply
-
- myretcode = mng_reset (myhandle);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-will suffice. Saves some time and effort, that.
-
-
-> Error handling
-
-From the examples in the previous paragraphs you may have noticed a
-meticulous scheme for error handling. And yes, that's exactly what it is.
-Practically each call simply returns an errorcode, indicating success,
-eg. MNG_NOERROR or failure, anything else but MNG_NEEDMOREDATA and
-MNG_NEEDTIMERWAIT. These latter two will be discussed in more detail in
-their respective fields of interest: the reading section and displaying
-section respectively.
-
-It is the application's responsibility to check the returncode after
-each call. You can call mng_getlasterror() to receive the details of
-the last detected error. This even includes a discriptive error-message
-if you enabled that option during compilation of the library.
-
-Note that after receiving an error it is still possible to call the
-library, but it's also very likely that any following call will fail.
-The only functions deemed to work will be mng_reset() and mng_cleanup().
-Yes, if you abort your program after an error, you should still call
-mng_cleanup().
-
-
-IV. Reading
-
-Reading a MNG, JNG or PNG is fairly easy. It depends slightly on your
-ultimate goal how certain specifics are to be handled, but the basics
-are similar in all cases.
-
-For the read functioins to work you must have compiled the library with
-the MNG_READ_SUPPRT directive. The standard DLL and Shared Library
-have this on by default!
-
-
-> Setup
-
-Naturally you must have initialized the library and be the owner of
-a mng_handle. The following callbacks are essential:
-
- mng_openstream, mng_readdata, mng_closestream
-
-You may optionally define:
-
- mng_errorproc, mng_traceproc
- mng_processheader, mng_processtext
- mng_processsave, mng_processseek
-
-The reading bit will also fail if you are already creating or
-displaying a file. Seems a bit obvious, but I thought I'd mention it,
-just in case.
-
-
-> To suspend or not to suspend
-
-There is one choice you need to make before calling the read function.
-Are you in need of suspension-mode or not?
-
-If you're reading from a disk you most certainly do not need
-suspension-mode. Even the oldest and slowest of disks will be fast
-enough for straight reading.
-
-However, if your input comes from a really slow device, such as a
-dialup-line or the likes, you may opt for suspension-mode. This is done
-by calling
-
- myretcode = mng_set_suspensionmode (myhandle,
- MNG_TRUE);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-Suspension-mode will force the library to use special buffering on the
-input. This allows your application to receive data of arbitrarily length
-and return this in the mng_readdata() callback, without disturbing the
-chunk processing routines of the library.
-
-Suspension-mode does require a little extra care in the main logic of the
-1application. The read function may return with MNG_NEEDMOREDATA when the
-mng_readdata() callback returns less data then it needs to process the
-next chunk. This indicates the application to wait for more data to arrive
-and then resume processing by calling mng_read_resume().
-
-
-> The read HLAPI
-
-The actual reading is just plain simple. Since all I/O is done
-1outside the library through the callbacks, the library can focus on
-its real task. Understanding, checking and labelling the input data!
-
-All you really need to do is this:
-
- myretcode = mng_read (myhandle);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-Of course, if you're on suspension-mode the code is a little more
-complicated:
-
- myretcode = mng_read (myhandle);
-
- while (myretcode == MNG_NEEDMOREDATA) {
- /* wait for input-data to arrive */
- myretcode = mng_read_resume (myhandle);
- }
-
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-This is rather crude and more sophisticated programming methods may
-dictate another approach. Whatever method you decide on, it should
-act as if the above code was in its place.
-
-There is also the mng_readdisplay() function, but this is discussed
-in the displaying section. It functions pretty much as the mng_read()
-function, but also immediately starts displaying the image.
-mng_read_resume() should be replaced by mng_display_resume() in that
-case!
-
-
-> What happens inside
-
-What actually happens inside the library depends on the configuration
-options set during the compilation of the library.
-
-Basically the library will first read the 8-byte file header, to determine
-its validity and the type of image it is about to process. Then it will
-repeatedly read a 4-byte chunk-length and then the remainder of the chunk
-until it either reaches EOF (indicated by the mng_readdata() callback) or
-implicitly decides EOF as it processed the logically last chunk of the
-image.
-
-Applications that require strict conformity and do not allow superfluous
-data after the ending chunk, will need to perform this check in their
-mng_closestream() callback.
-
-Each chunk is then checked on CRC, after which it is handed over to the
-appropriate chunk processing routine. These routines will disect the
-chunk, check the validity of its contents, check its position with respect
-to other chunks, etc, etc.
-
-If everything checks out, the chunk is further processed as follows:
-
-If display support has been selected during compilation, certain pre-display
-initialization will take place.
-
-If chunk-storage support has been selected during compilation, the chunks
-data may be stored in a special internal structure and held for future
-reference.
-
-
-> Storing and accessing chunks
-
-One of the compilation options activates support for chunk storage.
-This option may be useful if you want to examine an image. The directive
-is MNG_STORE_CHUNKS. You must also turn on the MNG_ACCESS_CHUNKS
-directive.
-
-The actual storage facility can be turned on or off with the
-mng_set_storechunks() function. If set to MNG_TRUE, chunks will be
-stored as they are read.
-
-At any point you can then call the mng_iterate_chunks() function
-to iterate through the current list of chunks. This function requires
-a callback which is called for each chunk and receives a specific
-chunk-handle. This chunk-handle can be used to call the appropriate
-mng_getchunk_xxxx() function, to access the chunks properties.
-
-A typical implementation may look like this:
-
- mng_bool my_iteratechunk (mng_handle hHandle,
- mng_handle hChunk,
- mng_chunkid iChunkid,
- mng_uint32 iChunkseq) {
- switch (iChunkid) {
- case MNG_UINT_MHDR : { /* process MHDR */;
- break; }
- case MNG_UINT_FRAM : { /* process FRAM */;
- break; }
-
- ...etc...
-
- case MNG_UINT_HUH : { /* unknown chunk */;
- break; }
- default : { /* duh; forgot one */; }
- }
-
- return MNG_TRUE; /* keep'm coming */
- }
-
-To get to the actual chunk fields of lets say a SHOW chunk you would do:
-
- mng_bool isempty;
- mng_uint16 firstid, lastid;
- mng_uint8 showmode;
-
- myretcode mng_getchunk_show (hHandle, hChunk,
- isempty, firstid,
- lastid, showmode);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-
-V. Displaying
-
-
-> Setup
-
-Assuming you have initialized the library and are the owner of
-a mng_handle. The following callbacks are essential:
-
- mng_getcanvasline, mng_refresh
- mng_gettickcount, mng_settimer
-
-If you wish to use an application supplied background you must supply:
-
- mng_getbkgdline
-
-If you wish to use the MNG_CANVAS_RGB8_A8 canvas style you must supply:
-
- mng_getalphaline
-
-You may optionally define:
-
- mng_errorproc, mng_traceproc
- mng_processheader, mng_processtext
- mng_processsave, mng_processseek
-
-Note that the mng_processheader() callback is optional but will
-be quite significant for proper operation!
-
-Displaying an image will fail if you are creating a file or already
-displaying one. Yes, you can't display it twice!
-
-
-> A word on canvas styles
-
-The canvas style describes how your drawing canvas is made up.
-You must set this before the library actually starts drawing, so
-the mng_processheader() callback is a pretty good place for it.
-
-Currently only 8-bit RGB canvas styles are supported, either with
-or without an alpha channel.
-
-If you like to do alpha composition yourself you can select one of
-the canvas styles that include an alpha channel. You can even have
-a separate alpha canvas by selecting the MNG_CANVAS_RGB8_A8 style.
-
-All styles require a compact model. Eg. MNG_CANVAS_BGR8 requires
-your canvas lines in bgrbgrbgr... storage, where each letter
-represents an 8-bit value of the corresponding color, and each
-threesome makes up the values of one(1) pixel.
-
-The library processes a line at a time, so the canvas lines do not
-actually need to be consecutive in memory.
-
-
-> Alpha composition and application backgrounds
-
-All Network Graphics can be partially transparent. This requires
-special processing if you need to display an image against some
-background. Note that the MNG header (MHDR chunk) contains a
-simplicity field indicating whether transparency information in
-the file is critical or not. This only applies to embedded images,
-which means the full image-frame of the MNG may still contain fully
-transparent pixels!
-
-Depending on your needs you can supply a single background color,
-a background canvas or tell the library to return the alpha-channel
-and do alpha composition yourself.
-
-This is different from the BACK chunk in a MNG, or the bKGD chunk
-in an (embedded) PNG or JNG. The BACK chunk indicates an optional or
-mandatory background color and/or image. The bKGD chunk only indicates
-an optional background color. These chunks indicate the Authors
-preferences. They may be absent in which case you need to supply
-some sort of background yourself.
-
-> Composing against a background color
-
-This is the easiest method. Call the mng_set_bgcolor() function to
-set the values of the red, green and blue component of your preferred
-background color.
-
-Use one of the canvas styles that do not have an alpha-channel, and
-which matches your output requirements.
-
-> Composing against a background canvas
-
-This is somewhat more complicated. You will need to set the
-mng_getbkgdline() callback. This will be called whenever the library
-needs to compose a partially transparent line.
-
-This canvas must hold the background against which the image should
-be composed. Its size must match exactly with the image dimensions
-and thus the drawing canvas!
-
-Use one of the canvas styles that do not have an alpha-channel, and
-which matches your output requirements. The canvas style of the
-background canvas may even differ from the drawing canvas. The library's
-composing will still function properly.
-
-> Composing within the application
-
-If you have the option in your application to draw a (partially)
-transparent canvas to the output device, this option is preferred.
-
-Select one of the canvas styles that do have an alpha-channel.
-The library will now supply the appropriate alpha information,
-allowing the application to compose the image as it sees fit.
-
-
-> Color information and CMS
-
-Network Graphics may, and usually will, contain color-correction
-information. This information is intended to compensate for the
-difference in recording and display devices used.
-
-This document does not address the specifics of color-management.
-See the PNG specification for a more detailed description.
-
-> Using little cms by Marti Maria Saguer
-
-This is the easiest method, providing you can compile the lcms package.
-Select the MNG_FULL_CMS directive during compilation, and sit back and
-relax. The library will take care of all color-correction for you.
-
-> Using an OS- or application-supplied CMS
-
-If you are so lucky to have access to CMS functionality from within
-your application, you may instruct the library to leave color-correction
-to you.
-
-Select the MNG_APP_CMS directive during compilation of the library.
-You MUST also set the following callbacks:
-
- mng_processgamma, mng_processchroma,
- mng_processsrgb, mng_processiccp and
- mng_processarow
-
-The last callback is called when the library needs you to correct
-an arbitrary line of pixels. The other callbacks are called when
-the corresponding color-information is encountered in the file.
-You must store this information somewhere for use in the
-mng_processarow() callback.
-
-> Using gamma-only correction
-
-This isn't a preferred method, but it's better than no correction
-at all. Gamma-only correction will at least compensate for
-gamma-differences between the original recorder and your output device.
-
-Select the MNG_GAMMA_ONLY directive during compilation
-of the library. Your compiler MUST support fp operations.
-
-> No color correction
-
-Ouch. This is really bad. This is the least preferred method,
-but may be necessary if your system cannot use lcms, doesn't
-have its own CMS, and does not allow fp operations, ruling out
-the gamma-only option.
-
-Select the MNG_NO_CMS directive during compilation.
-Images will definitely not be displayed as seen by the Author!!!
-
-
-> Animations and timing
-
-Animations require some form of timing support. The library relies
-on two callbacks for this purpose. The mng_gettickcount() and
-mng_settimer() callbacks. mng_gettickcount() is used to determine
-the passing of time in milliseconds since the beginning of the
-animation. This is also used to compensate during suspension-mode
-if you are using the mng_readdisplay() function to read & display
-the file simultaneously.
-
-The callback may return an arbitrary number of milliseconds, but
-this number must increase proportionaly between calls. Most modern
-systems will have some tickcount() function which derives its
-input from an internal clock. The value returned from this function
-is more than adequate for libmng.
-
-The mng_settimer() callback is called when the library determines
-a little "pause" is required before rendering another frame of the
-animation. The pause interval is also expressed in milliseconds.
-Your application should store this value and return immediately.
-The library will then make appropriate arrangements to store its
-internal state and returns to your application with the
-MNG_NEEDTIMERWAIT code.
-
-At that point you should suspend processing and wait the given
-interval. Please use your OS features for this. Do not engage some
-sort of loop. That is real bad programming practice. Most modern
-systems will have some timing functions. A simple wait() function
-may suffice, but this may prevent your applications main-task from
-running, and possibly prevent the actual update of your output device.
-
-
-> The mng_refresh() callback
-
-The mng_refresh() callback is called whenever the library has
-"finished" drawing a new frame onto your canvas, and just before it
-will call the mng_settimer() callback.
-
-This allows you to perform some actions necessary to "refresh" the
-canvas onto your output device. Please do NOT suspend processing
-inside this callback. This must be handled after the mng_settimer()
-callback!
-
-
-> Displaying while reading
-
-This method is preferred if you are reading from a slow input device
-(such as a dialup-line) and you wish to start displaying something
-as quickly as possible. This functionality is provided mainly for
-browser-type applications but may be appropriate for other
-applications as well.
-
-The method is usually used in unison with the suspension-mode of
-the read module. A typical implementation would look like this:
-
- /* initiale library and set required callbacks */
-
- /* activate suspension-mode */
- myretcode = mng_set_suspensionmode (myhandle,
- MNG_TRUE);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
- myretcode = mng_readdisplay (myhandle);
-
- while ((myretcode == MNG_NEEDMOREDATA) ||
- (myretcode == MNG_NEEDTIMERWAIT)) {
- if (myretcode == MNG_NEEDMOREDATA)
- /* wait for more input-data */;
- else
- /* wait for timer interval */;
-
- myretcode = mng_display_resume (myhandle);
- }
-
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-More advanced programming methods may require a different approach,
-but the final result should function as in the code above.
-
-
-> Displaying after reading
-
-This method is used to display a file that was previously read.
-It is primarily meant for viewers with direct file access, such as
-1a local harddisk.
-
-Once you have successfully read the file, all you need to do is:
-
- myretcode = mng_display (myhandle);
-
- while (myretcode == MNG_NEEDTIMERWAIT) {
- /* wait for timer interval */;
- myretcode = mng_display_resume (myhandle);
- }
-
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-Again, more advanced programming methods may require a different
-approach, but the final result should function as in the code above.
-
-
-> Display manipulation
-
-Several HLAPI functions are provided to allow a user to manipulate
-the normal flow of an animation.
-
-- mng_display_freeze (mng_handle hHandle)
-
-This will "freeze" the animation in place.
-
-- mng_display_resume (mng_handle hHandle)
-
-This function can be used to resume a frozen animation, or to force
-the library to advance the animation to the next frame.
-
-- mng_display_reset (mng_handle hHandle)
-
-This function will "reset" the animation into its pristine state.
-Calling mng_display() afterwards will re-display the animation
-from the first frame.
-
-- mng_display_golayer (mng_handle hHandle,
- mng_uint32 iLayer)
-- mng_display_goframe (mng_handle hHandle,
- mng_uint32 iFrame)
-- mng_display_goplaytime (mng_handle hHandle,
- mng_uint32 iPlaytime)
-
-These three functions can be used to "jump" to a specific layer, frame
-or timeslot in the animation. You must "freeze" the animation before
-using any of these functions.
-
-All above functions may only be called during a timer interval!
-It is the applications responsibility to cleanup any resources with
-respect to the timer wait.
-
-
-VI. Writing
-
-The main focus of the library lies in its displaying capabilites.
-But it does offer writing support as well.
-You can create and write a file, or you can write a file you
-have previously read, providing the storage of chunks was enabled
-and active.
-
-For this to work you must have compiled the library with the
-MNG_WRITE_SUPPO1RT and MNG_ACCESS_CHUNKS directives. The standard DLL and
-Shared Library have this on by default!
-
-
-> Setup
-
-As always you must have initialized the library and be the owner of
-a mng_handle. The following callbacks are essential:
-
- mng_openstream, mng_writedata, mng_closestream
-
-You can optionally define:
-
- mng_errorproc, mng_traceproc
-
-The creation and writing functions will fail if you are in the middle
-of reading, creating or writing a file.
-
-
-> Creating a new file
-
-To start a new file the library must be in its initial state.
-First you need to tell the library your intentions:
-
- myretcode = mng_create (myhandle);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-After that you start adding the appropriate chunks:
-
- myretcode = mng_putchunk_mhdr (myhandle, ...);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-And so on, and so forth. Note that the library will automatically signal
-the logical end of the file by the ending chunk. Also the first chunk
-will indicate the library the filetype (eg. PNG, JNG or MNG) and force
-the proper signature when writing the file.
-
-The code above can be simplified, as you can always get the last errorcode
-by using the mng_getlasterror() function:
-
- if ( (mng_putchunk_xxxx (myhandle, ...)) or
- (mng_putchunk_xxxx (myhandle, ...)) or
- ...etc... )
- /* process error */;
-
-Please note that you must have a pretty good understanding of the chunk
-specification. Unlike the read functions, there are virtually no checks,
-so it is quite possible to write completely wrong files.
-It is a good practice to read back your file into the library to verify
-its integrity.
-
-Once you've got all the chunks added, all you do is:
-
- myretcode mng_write (myhandle);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-And presto. You're done. The real work is of course carried out in
-your callbacks. Note that this is a single operation as opposed to
-the read & display functions that may return with MNG_NEEDMOREDATA
-and/or MNG_NEEDTIMERWAIT. The write function just does the job, and
-only returns after it's finished or if it encounters some
-unrecoverable error.
-
-
-> Writing a previously read file
-
-If you have already successfully read a file, you can use the library to
-write it out as a copy or something. You MUST have compiled the library
-with the MNG_STORE_CHUNKS directive, and you must have done
-mng_set_storechunks (myhandle, MNG_TRUE).
-
-This doesn't require the MNG_ACCESS_CHUNKS directive, unless you want
-to fiddle with the chunks as well.
-
-Again all you need to do is:
-
- myretcode mng_write (myhandle);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-
-VII. Modifying/Customizing libmng:
-
-to do
-
-> Compilation directives
-
-to do
-
-> Platform dependant modification
-
-to do
-
-
-References :
-
-libmng :
- http://www.libmng.com/
-
-zlib :
- http://www.info-zip.org/pub/infozip/zlib/
-
-IJG JPEG library :
- http://www.ijg.org/
-
-lcms (little CMS) by Marti Maria Saguer :
- http://www.littlecms.com/
-
-MNG specification:
- http://www.libpng.org/pub/mng
-
-
-In the case of any inconsistency between the MNG specification
-and this library, the specification takes precedence.
-
-
-The contributing authors would like to thank all those who helped
-with testing, bug fixes, and patience. This wouldn't have been
-possible without all of you!!!
-
-
-COPYRIGHT NOTICE:
-
-Copyright (c) 2000,2001 Gerard Juyn
-
-For the purposes of this copyright and license, "Contributing Authors"
-is defined as the following set of individuals:
-
- Gerard Juyn
-
-The MNG Library is supplied "AS IS". The Contributing Authors
-disclaim all warranties, expressed or implied, including, without
-limitation, the warranties of merchantability and of fitness for any
-purpose. The Contributing Authors assume no liability for direct,
-indirect, incidental, special, exemplary, or consequential damages,
-which may result from the use of the MNG Library, even if advised of
-the possibility of such damage.
-
-Permission is hereby granted to use, copy, modify, and distribute this
-source code, or portions hereof, for any purpose, without fee, subject
-to the following restrictions:
-
-1. The origin of this source code must not be misrepresented;
-you must not claim that you wrote the original software.
-
-2. Altered versions must be plainly marked as such and must not be
-misrepresented as being the original source.
-
-3. This Copyright notice may not be removed or altered from any source
-or altered source distribution.
-
-The Contributing Authors specifically permit, without fee, and
-encourage the use of this source code as a component to supporting
-the MNG and JNG file format in commercial products. If you use this
-source code in a product, acknowledgment would be highly appreciated.
-
-
-Remarks :
-
-Parts of this software have been adapted from the libpng library.
-Although this library supports all features from the PNG specification
-(as MNG descends from it) it does not require the libpng library.
-It does require the zlib library and optionally the IJG JPEG library,
-and/or the "little-cms" library by Marti Maria Saguer (depending on the
-inclusion of support for JNG and Full-Color-Management respectively.
-
-This library's function is primarily to read and display MNG
-animations. It is not meant as a full-featured image-editing
-component! It does however offer creation and editing functionality
-at the chunk level. (future modifications may include some more
-support for creation and or editing)
-
diff --git a/src/3rdparty/libmng/doc/man/jng.5 b/src/3rdparty/libmng/doc/man/jng.5
deleted file mode 100644
index 0e371ad0eb..0000000000
--- a/src/3rdparty/libmng/doc/man/jng.5
+++ /dev/null
@@ -1,37 +0,0 @@
-.TH JNG 5 "July 26, 2000"
-.SH NAME
-jng \- JPEG Network Graphics (JNG) sub-format
-.SH DESCRIPTION
-JNG (JPEG Network Graphics) is a sub-format of the MNG (Multiple-image
-Network Graphics) format. As with MNG it extends on the features of the
-popular PNG (Portable Network Graphics) image-format.
-.br
-
-This sub-format was designed to support a lossy compression-method.
-It is based completely on the JPEG specification. It adds the high-compression
-ratios of JPEG for photographic images.
-
-As a member of the Network Graphics family, JNG was deemed adequate as a
-stand-alone format as it extends the JPEG format with color-correction and
-transparency features.
-
-.SH "SEE ALSO"
-.IR png(5) ", " mng(5) ", " libmng(3)
-.LP
-MNG 1.00, February 9, 2001:
-.IP
-http://www.libpng.org/pub/mng
-
-.SH AUTHORS
-This man page: Gerard Juyn
-.LP
-Multiple-image Network Graphics (MNG) Specification Version 1.00 (Februari 9, 2001):
-Glenn Randers-Pehrson and others (png-list@ccrc.wustl.edu).
-.LP
-
-.SH COPYRIGHT NOTICE
-The MNG-1.00 specification is copyright (c) 1998-2001 Glenn Randers-Pehrson.
-See the specification for conditions of use and distribution.
-.LP
-.\" end of man page
-
diff --git a/src/3rdparty/libmng/doc/man/libmng.3 b/src/3rdparty/libmng/doc/man/libmng.3
deleted file mode 100644
index 5321faaa17..0000000000
--- a/src/3rdparty/libmng/doc/man/libmng.3
+++ /dev/null
@@ -1,1146 +0,0 @@
-.TH LIBMNG 3 "January 30th, 2005"
-.SH NAME
-libmng \- Multiple-image Network Graphics (MNG) Reference Library 1.0.9
-.SH SYNOPSIS
-\fI\fB
-
-\fB#include <libmng.h>\fP
-
-
-.SH DESCRIPTION
-The
-.I libmng
-library supports decoding, displaying, encoding, and various other
-manipulations of the Multiple-image Network Graphics (MNG) format
-image files. It uses the
-.IR zlib(3)
-compression library, and optionally the JPEG library by the Independant
-JPEG Group (IJG) and/or lcms (little cms), a color-management library
-by Marti Maria Saguer.
-
-
-.SH I. Introduction
-
-This file describes how to use and modify the MNG reference library
-(known as libmng) for your own use. There are seven sections to this
-file: introduction, callbacks, housekeeping, reading, displaying,
-writing, and modification and configuration notes for various special
-platforms. We assume that libmng is already installed; see the
-INSTALL.README file for instructions on how to install libmng.
-
-Libmng was written to support and promote the MNG specification.
-
-The MNG-1.0 specification is available at
-<http://www.libpng.org/pub/mng/spec/>.
-
-Other information about MNG can be found at the MNG home page,
-<http://www.libpng.org/pub/mng/>.
-The latest version of libmng can be found at its own homepage at
-<http://www.libmng.com/>.
-
-In most cases the library will not need to be changed.
-For standardization purposes the library contains both a Windows DLL
-and a makefile for building a shared library (SO). The library is
-written in C, but an interface for Borland Delphi is also available.
-
-Libmng has been designed to handle multiple sessions at one time,
-to be easily modifiable, to be portable to the vast majority of
-machines (ANSI, K&R, 32-, and 64-bit) available, and to be easy
-to use.
-
-Libmng uses zlib for its compression and decompression of MNG files.
-Further information about zlib, and the latest version of zlib, can be
-found at the zlib home page, <http://www.zlib.org/>.
-The zlib compression utility is a general purpose utility that is
-useful for more than MNG/PNG files, and can be used without libmng.
-See the documentation delivered with zlib for more details.
-
-Libmng optionally uses the JPEG library by the Independant JPEG Group
-(IJG). This library is used for the JNG sub-format, which is part of
-the MNG specification, and allows for inclusion of JPEG decoded and
-thus highly compressed (photographic) images.
-Further information about the IJG JPEG library and the latest sources
-can be found at <http://www.ijg.org/>.
-
-Libmng can also optionally use the lcms (little CMS) library by
-Marti Maria Saguer. This library provides an excellent color-management
-system (CMS), which gives libmng the ability to provide full
-color-correction for images with the proper color-information encoded.
-Further information and the latest sources can be found at
-<http://www.littlecms.com/>.
-
-Libmng is thread safe, provided the threads are using different
-handles as returned by the initialization call.
-Each thread should have its own handle and thus its own image.
-Libmng does not protect itself against two threads using the
-same instance of a handle.
-
-The libmng.h header file is the single reference needed for programming
-with libmng:
-
-#include <libmng.h>
-
-
-.SH II. Callbacks
-
-Libmng makes extensive use of callback functions. This is meant to
-keep the library as platform-independant and flexible as possible.
-Actually, the first call you will make to the library, already contains
-three parameters you can use to provide callback entry-points.
-
-Most functions must return a mng_bool (boolean). Returning MNG_FALSE
-indicates the library the callback failed in some way and the library
-will immediately return from whatever it was doing back to the
-application. Returning MNG_TRUE indicates there were no problems and
-processing can continue.
-
-Let's step through each of the possible callbacks. The sections on
-reading, displaying and writing will also explain which callbacks are
-needed when and where.
-
-\- mng_ptr mng_memalloc (mng_size_t iLen)
-
-A very basic function which the library uses to allocate a memory-block
-with the given size. A typical implementation would be:
-
- mng_ptr my_alloc (mng_size_t iLen) {
- return calloc (1, iLen);
- }
-
-Note that the library requires you to zero-out the memory-block!!!
-
-\- void mng_memfree (mng_ptr pPtr,
- mng_size_t iLen)
-
-Counterpart of the previous function. Typically:
-
- void my_free (mng_ptr pPtr, mng_size_t iLen) {
- free (pPtr);
- }
-
-\- mng_bool mng_openstream (mng_handle hHandle)
-
-\- mng_bool mng_closestream (mng_handle hHandle)
-
-These are called by the library just before it starts to process
-(either read or write) a file and just after the processing stops.
-This is the recommended place to do I/O initialization & finalization.
-Whether you do or not, is up to you. The library does not put any
-meaning into the calls. They are simply provided for your convenience.
-
-\- mng_bool mng_readdata (mng_handle hHandle,
- mng_ptr pBuf,
- mng_uint32 iBuflen,
- mng_uint32p pRead)
-
-This function is called when the library needs some more input while
-reading an image. The reading process supports two modes:
-Suspension-mode (SMOD) and non-suspension-mode (NSMOD).
-See mng_set_suspensionmode() for a more detailed description.
-
-In NSMOD, the library requires you to return exactly the amount of bytes
-requested (= iBuflen). Any lesser amount indicates the input file
-is exhausted and the library will return a MNG_UNEXPECTEDEOF errorcode.
-
-In SMOD, you may return a smaller amount of bytes than requested.
-This tells the library it should temporarily wait for more input to
-arrive. The lib will return with MNG_NEEDMOREDATA, and will expect a
-call to mng_read_resume() or mng_display_resume() next, as soon as
-more input-data has arrived.
-
-For NSMOD this function could be as simple as:
-
- mng_bool my_read (mng_handle hHandle,
- mng_ptr pBuf,
- mng_uint32 iBuflen,
- mng_uint32p pRead) {
- *pRead = fread (pBuf, 1, iBuflen, myfile);
- return MNG_TRUE;
- }
-
-\- mng_bool mng_writedata (mng_handle hHandle,
- mng_ptr pBuf,
- mng_uint32 iBuflen,
- mng_uint32p pWritten)
-
-This function is called during the mng_write() function to actually
-output data to the file. There is no suspension-mode during write,
-so the application must return the exact number of bytes the library
-requests to be written.
-
-A typical implementation could be:
-
- mng_bool my_write (mng_handle hHandle,
- mng_ptr pBuf,
- mng_uint32 iBuflen,
- mng_uint32p pWritten) {
- *pWritten = fwrite (pBuf, 1, iBuflen, myfile);
- return MNG_TRUE;
- }
-
-\- mng_bool mng_errorproc (mng_handle hHandle,
- mng_int32 iErrorcode,
- mng_int8 iSeverity,
- mng_chunkid iChunkname,
- mng_uint32 iChunkseq,
- mng_int32 iExtra1,
- mng_int32 iExtra2,
- mng_pchar zErrortext)
-
-This function is called whenever an error is detected inside the
-library. This may be caused by invalid input, callbacks indicating
-failure, or wrongfully calling functions out of place.
-
-If you do not provide this callback the library will still return
-an errorcode from the called function, and the mng_getlasterror()
-function can be used to retrieve the other parameters.
-
-This function is currently only provided for convenience, but may
-at some point be used to indicate certain errors may be acceptable,
-and processing should continue.
-
-\- mng_bool mng_traceproc (mng_handle hHandle,
- mng_int32 iFuncnr,
- mng_int32 iFuncseq,
- mng_pchar zFuncname)
-
-This function is provided to allow a functional analysis of the
-library. This may be useful if you encounter certain errors and
-cannot determine what the problem is.
-
-Almost all functions inside the library will activate this
-callback with an appropriate function-name at the start and end
-of the function. Please note that large images may generate an
-enormous amount of calls.
-
-\- mng_bool mng_processheader (mng_handle hHandle,
- mng_uint32 iWidth,
- mng_uint32 iHeight)
-
-This function is called once the header information of an input-
-image has been processed. At this point the image dimensions are
-available and also some other properties depending on the type
-of the image. Eg. for a MNG the frame-/layercount, playtime &
-simplicity fields are known.
-
-The primary purpose of this callback is to inform the application
-of the size of the image, and for the application to initialize
-the drawing canvas to be used by the library. This is also a good
-point to set the canvas-style. Eg. mng_set_canvasstyle().
-
-\- mng_bool mng_processtext (mng_handle hHandle,
- mng_uint8 iType,
- mng_pchar zKeyword,
- mng_pchar zText,
- mng_pchar zLanguage,
- mng_pchar zTranslation)
-
-This callback is activated for each textual chunk in the input-
-image. These are tEXt, zTXt & iTXt. It may be used to retain
-specific comments for presentation to the user.
-
-\- mng_bool mng_processsave (mng_handle hHandle)
-
-\- mng_bool mng_processseek (mng_handle hHandle,
- mng_pchar zName)
-
-The purpose of these callbacks is to signal the processing of the
-SAVE & SEEK chunks in a MNG input-file. This may be used in the
-future to specify some special processing. At the moment these
-functions are only provided as a signal.
-
-\- mng_ptr mng_getcanvasline (mng_handle hHandle,
- mng_uint32 iLinenr)
-
-\- mng_ptr mng_getbkgdline (mng_handle hHandle,
- mng_uint32 iLinenr)
-
-\- mng_ptr mng_getalphaline (mng_handle hHandle,
- mng_uint32 iLinenr)
-
-These callbacks are used to access the drawing canvas, background
-canvas and an optional separate alpha-channel canvas. The latter is
-used only with the MNG_CANVAS_RGB8_A8 canvas-style.
-
-If the getbkgdline() callback is not supplied the library will
-composite fully or partially transparent pixels in the image against
-a specified background color. See mng_set_bgcolor() for more details.
-If a chosen canvas-style includes an alpha-channel, this callback
-is very likely not needed.
-
-The application is responsible for returning a pointer to a line of
-pixels, which should be in the exact format as defined by the call
-to mng_set_canvasstyle() and mng_set_bkgdstyle(), without gaps between
-the representation of each pixel, unless specified by the canvas-style.
-
-\- mng_bool mng_refresh (mng_handle hHandle,
- mng_uint32 iX,
- mng_uint32 iY,
- mng_uint32 iWidth,
- mng_uint32 iHeight)
-
-This callback is called when the library has drawn a complete frame
-onto the drawing canvas, and it is ready to be displayed.
-The application is responsible for transferring the drawing canvas
-from memory onto the actual output device.
-
-\- mng_uint32 mng_gettickcount (mng_handle hHandle)
-
-This function should return the number of milliseconds on some internal
-clock. The entire animation timing depends heavily on this function,
-and the number returned should be as accurate as possible.
-
-\- mng_bool mng_settimer (mng_handle hHandle,
- mng_uint32 iMsecs)
-
-This callback is activated every time the library requires a "pause".
-Note that the function itself should NOT execute the wait. It should
-simply store the time-field and allow the library to return. Libmng
-will return with the MNG_NEEDTIMERWAIT code, indicating the callback
-was called and it is now time to execute the pause.
-
-After the indicated number of milliseconds have elapsed, the application
-should call mng_display_resume(), to resume the animation as planned.
-
-This method allows for both a real timer or a simple wait command in the
-application. Whichever method you select, both the gettickcount() and
-settimer() callbacks are crucial for proper animation timing.
-
-\- mng_bool mng_processgamma (mng_handle hHandle,
- mng_uint32 iGamma)
-
-\- mng_bool mng_processchroma (mng_handle hHandle,
- mng_uint32 iWhitepointx,
- mng_uint32 iWhitepointy,
- mng_uint32 iRedx,
- mng_uint32 iRedy,
- mng_uint32 iGreenx,
- mng_uint32 iGreeny,
- mng_uint32 iBluex,
- mng_uint32 iBluey)
-
-\- mng_bool mng_processsrgb (mng_handle hHandle,
- mng_uint8 iRenderingintent)
-
-\- mng_bool mng_processiccp (mng_handle hHandle,
- mng_uint32 iProfilesize,
- mng_ptr pProfile)
-
-\- mng_bool mng_processarow (mng_handle hHandle,
- mng_uint32 iRowsamples,
- mng_bool bIsRGBA16,
- mng_ptr pRow)
-
-These callbacks are only required when you selected the MNG_APP_CMS
-directive during compilation of the library. See the configuration
-section for more details.
-
-\- mng_bool mng_iteratechunk (mng_handle hHandle,
- mng_handle hChunk,
- mng_chunkid iChunkid,
- mng_uint32 iChunkseq)
-
-This callback is only used for the mng_iterate_chunks() function.
-It is called exactly once for each chunk stored.
-
-
-.SH III. Housekeeping
-
-
-.SS Memory management
-
-The library can use internal memory allocation/deallocation or use
-provided callbacks for its memory management. The choice is made at
-compilation time. See the section on customization for details.
-
-If internal management has been selected, the memory callback functions
-need not be supplied. Even if you do supply them they will not be used.
-The actual code used is similar to the code discussed in the callback
-section:
-
- pPtr = calloc (1, iLen);
-
- free (pPtr);
-
-If your compiler does not support these functions, or you wish to monitor
-the library's use of memory for certain reasons, you can choose to
-compile the library with external memory management. In this case the
-memory callback functions MUST be supplied, and should function as if the
-above code was used.
-
-
-.SS Initialization
-
-The basic initialization of the library is short and swift:
-
- myhandle = mng_initialize (myuserdata, my_alloc,
- my_free, MNG_NULL);
- if (myhandle == MNG_NULL)
- /* process error */;
-
-The first field is an application-only parameter. It is saved in
-libmng's internal structures and available at all times through the
-mng_get_userdata() function. This is especially handy in callback functions
-if your program may be handling multiple files at the same time.
-
-The second and third field supply the library with the memory callback
-function entry-points. These are described in more detail in the callback
-section and the previous paragraph.
-
-The fourth and last field may be used to supply the library with the
-entry-point of a trace callback function. For regular use you will not
-need this!
-
-The function returns a handle which will be your ticket to MNG-heaven.
-All other functions rely on this handle. It is the single fixed unique
-reference-point between your application and the library.
-
-You should call the initialization function for each image you wish to
-process simultaneously. If you are processing images consecutively, you can
-reset the internal status of the library with the mng_reset() function.
-This function will clear all internal state variables, free any stored
-chunks and/or objects, etc, etc. Your callbacks and other external parameters
-will be retained.
-
-After you successfully received the handle it is time to set the required
-callbacks. The sections on reading, displaying & writing indicate which
-callbacks are required and which are optional.
-To set the callbacks simply do:
-
- myretcode = mng_setcb_xxxxxx (myhandle, my_xxxxxx);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-Naturally you'd replace the x's with the name of the callback.
-
-
-.SS Cleanup
-
-Once you've gotten hold of that precious mng_handle, you should always,
-and I mean always, call the cleanup function when you're done.
-Just do:
-
- mng_cleanup (myhandle);
-
-And you're done. There shouldn't be an ounce of memory spilled after
-that call.
-
-Note that if you would like to process multiple files consecutively
-you do not need to do mng_cleanup() / mng_initialize() between each file
-but simply
-
- myretcode = mng_reset (myhandle);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-will suffice. Saves some time and effort, that.
-
-
-.SS Error handling
-
-From the examples in the previous paragraphs you may have noticed a
-meticulous scheme for error handling. And yes, that's exactly what it is.
-Practically each call simply returns an errorcode, indicating success,
-eg. MNG_NOERROR or failure, anything else but MNG_NEEDMOREDATA and
-MNG_NEEDTIMERWAIT. These latter two will be discussed in more detail in
-their respective fields of interest: the reading section and displaying
-section respectively.
-
-It is the application's responsibility to check the returncode after
-each call. You can call mng_getlasterror() to receive the details of
-the last detected error. This even includes a discriptive error-message
-if you enabled that option during compilation of the library.
-
-Note that after receiving an error it is still possible to call the
-library, but it's also very likely that any following call will fail.
-The only functions deemed to work will be mng_reset() and mng_cleanup().
-Yes, if you abort your program after an error, you should still call
-mng_cleanup().
-
-
-.SH IV. Reading
-
-Reading a MNG, JNG or PNG is fairly easy. It depends slightly on your
-ultimate goal how certain specifics are to be handled, but the basics
-are similar in all cases.
-
-For the read functioins to work you must have compiled the library with
-the MNG_READ_SUPPRT directive. The standard DLL and Shared Library
-have this on by default!
-
-
-.SS Setup
-
-Naturally you must have initialized the library and be the owner of
-a mng_handle. The following callbacks are essential:
-
- mng_openstream, mng_readdata, mng_closestream
-
-You may optionally define:
-
- mng_errorproc, mng_traceproc
- mng_processheader, mng_processtext
- mng_processsave, mng_processseek
-
-The reading bit will also fail if you are already creating or
-displaying a file. Seems a bit obvious, but I thought I'd mention it,
-just in case.
-
-
-.SS To suspend or not to suspend
-
-There is one choice you need to make before calling the read function.
-Are you in need of suspension-mode or not?
-
-If you're reading from a disk you most certainly do not need
-suspension-mode. Even the oldest and slowest of disks will be fast
-enough for straight reading.
-
-However, if your input comes from a really slow device, such as a
-dialup-line or the likes, you may opt for suspension-mode. This is done
-by calling
-
- myretcode = mng_set_suspensionmode (myhandle,
- MNG_TRUE);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-Suspension-mode will force the library to use special buffering on the
-input. This allows your application to receive data of arbitrarily length
-and return this in the mng_readdata() callback, without disturbing the
-chunk processing routines of the library.
-
-Suspension-mode does require a little extra care in the main logic of the
-application. The read function may return with MNG_NEEDMOREDATA when the
-mng_readdata() callback returns less data then it needs to process the
-next chunk. This indicates the application to wait for more data to arrive
-and then resume processing by calling mng_read_resume().
-
-
-.SS The read HLAPI
-
-The actual reading is just plain simple. Since all I/O is done
-outside the library through the callbacks, the library can focus on
-its real task. Understanding, checking and labelling the input data!
-
-All you really need to do is this:
-
- myretcode = mng_read (myhandle);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-Of course, if you're on suspension-mode the code is a little more
-complicated:
-
- myretcode = mng_read (myhandle);
-
- while (myretcode == MNG_NEEDMOREDATA) {
- /* wait for input-data to arrive */
- myretcode = mng_read_resume (myhandle);
- }
-
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-This is rather crude and more sophisticated programming methods may
-dictate another approach. Whatever method you decide on, it should
-act as if the above code was in its place.
-
-There is also the mng_readdisplay() function, but this is discussed
-in the displaying section. It functions pretty much as the mng_read()
-function, but also immediately starts displaying the image.
-mng_read_resume() should be replaced by mng_display_resume() in that
-case!
-
-
-.SS What happens inside
-
-What actually happens inside the library depends on the configuration
-options set during the compilation of the library.
-
-Basically the library will first read the 8-byte file header, to determine
-its validity and the type of image it is about to process. Then it will
-repeatedly read a 4-byte chunk-length and then the remainder of the chunk
-until it either reaches EOF (indicated by the mng_readdata() callback) or
-implicitly decides EOF as it processed the logically last chunk of the
-image.
-
-Applications that require strict conformity and do not allow superfluous
-data after the ending chunk, will need to perform this check in their
-mng_closestream() callback.
-
-Each chunk is then checked on CRC, after which it is handed over to the
-appropriate chunk processing routine. These routines will disect the
-chunk, check the validity of its contents, check its position with respect
-to other chunks, etc, etc.
-
-If everything checks out, the chunk is further processed as follows:
-
-If display support has been selected during compilation, certain pre-display
-initialization will take place.
-
-If chunk-storage support has been selected during compilation, the chunks
-data may be stored in a special internal structure and held for future
-reference.
-
-
-.SS Storing and accessing chunks
-
-One of the compilation options activates support for chunk storage.
-This option may be useful if you want to examine an image. The directive
-is MNG_STORE_CHUNKS. You must also turn on the MNG_ACCESS_CHUNKS
-directive.
-
-The actual storage facility can be turned on or off with the
-mng_set_storechunks() function. If set to MNG_TRUE, chunks will be
-stored as they are read.
-
-At any point you can then call the mng_iterate_chunks() function
-to iterate through the current list of chunks. This function requires
-a callback which is called for each chunk and receives a specific
-chunk-handle. This chunk-handle can be used to call the appropriate
-mng_getchunk_xxxx() function, to access the chunks properties.
-
-A typical implementation may look like this:
-
- mng_bool my_iteratechunk (mng_handle hHandle,
- mng_handle hChunk,
- mng_chunkid iChunkid,
- mng_uint32 iChunkseq) {
- switch (iChunkid) {
- case MNG_UINT_MHDR : { /* process MHDR */;
- break; }
- case MNG_UINT_FRAM : { /* process FRAM */;
- break; }
-
- ...etc...
-
- case MNG_UINT_HUH : { /* unknown chunk */;
- break; }
- default : { /* duh; forgot one */; }
- }
-
- return MNG_TRUE; /* keep'm coming */
- }
-
-To get to the actual chunk fields of lets say a SHOW chunk you would do:
-
- mng_bool isempty;
- mng_uint16 firstid, lastid;
- mng_uint8 showmode;
-
- myretcode mng_getchunk_show (hHandle, hChunk,
- isempty, firstid,
- lastid, showmode);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-
-.SH V. Displaying
-
-
-.SS Setup
-
-Assuming you have initialized the library and are the owner of
-a mng_handle. The following callbacks are essential:
-
- mng_getcanvasline, mng_refresh
- mng_gettickcount, mng_settimer
-
-If you wish to use an application supplied background you must supply:
-
- mng_getbkgdline
-
-If you wish to use the MNG_CANVAS_RGB8_A8 canvas style you must supply:
-
- mng_getalphaline
-
-You may optionally define:
-
- mng_errorproc, mng_traceproc
- mng_processheader, mng_processtext
- mng_processsave, mng_processseek
-
-Note that the mng_processheader() callback is optional but will
-be quite significant for proper operation!
-
-Displaying an image will fail if you are creating a file or already
-displaying one. Yes, you can't display it twice!
-
-
-.SS A word on canvas styles
-
-The canvas style describes how your drawing canvas is made up.
-You must set this before the library actually starts drawing, so
-the mng_processheader() callback is a pretty good place for it.
-
-Currently only 8-bit RGB canvas styles are supported, either with
-or without an alpha channel.
-
-If you like to do alpha composition yourself you can select one of
-the canvas styles that include an alpha channel. You can even have
-a separate alpha canvas by selecting the MNG_CANVAS_RGB8_A8 style.
-
-All styles require a compact model. Eg. MNG_CANVAS_BGR8 requires
-your canvas lines in bgrbgrbgr... storage, where each letter
-represents an 8-bit value of the corresponding color, and each
-threesome makes up the values of one(1) pixel.
-
-The library processes a line at a time, so the canvas lines do not
-actually need to be consecutive in memory.
-
-
-.SS Alpha composition and application backgrounds
-
-All Network Graphics can be partially transparent. This requires
-special processing if you need to display an image against some
-background. Note that the MNG header (MHDR chunk) contains a
-simplicity field indicating whether transparency information in
-the file is critical or not. This only applies to embedded images,
-which means the full image-frame of the MNG may still contain fully
-transparent pixels!
-
-Depending on your needs you can supply a single background color,
-a background canvas or tell the library to return the alpha-channel
-and do alpha composition yourself.
-
-This is different from the BACK chunk in a MNG, or the bKGD chunk
-in an (embedded) PNG or JNG. The BACK chunk indicates an optional or
-mandatory background color and/or image. The bKGD chunk only indicates
-an optional background color. These chunks indicate the Authors
-preferences. They may be absent in which case you need to supply
-some sort of background yourself.
-
-.SS Composing against a background color
-
-This is the easiest method. Call the mng_set_bgcolor() function to
-set the values of the red, green and blue component of your preferred
-background color.
-
-Use one of the canvas styles that do not have an alpha-channel, and
-which matches your output requirements.
-
-.SS Composing against a background canvas
-
-This is somewhat more complicated. You will need to set the
-mng_getbkgdline() callback. This will be called whenever the library
-needs to compose a partially transparent line.
-
-This canvas must hold the background against which the image should
-be composed. Its size must match exactly with the image dimensions
-and thus the drawing canvas!
-
-Use one of the canvas styles that do not have an alpha-channel, and
-which matches your output requirements. The canvas style of the
-background canvas may even differ from the drawing canvas. The library's
-composing will still function properly.
-
-.SS Composing within the application
-
-If you have the option in your application to draw a (partially)
-transparent canvas to the output device, this option is preferred.
-
-Select one of the canvas styles that do have an alpha-channel.
-The library will now supply the appropriate alpha information,
-allowing the application to compose the image as it sees fit.
-
-
-.SS Color information and CMS
-
-Network Graphics may, and usually will, contain color-correction
-information. This information is intended to compensate for the
-difference in recording and display devices used.
-
-This document does not address the specifics of color-management.
-See the PNG specification for a more detailed description.
-
-.SS Using little cms by Marti Maria Saguer
-
-This is the easiest method, providing you can compile the lcms package.
-Select the MNG_FULL_CMS directive during compilation, and sit back and
-relax. The library will take care of all color-correction for you.
-
-.SS Using an OS- or application-supplied CMS
-
-If you are so lucky to have access to CMS functionality from within
-your application, you may instruct the library to leave color-correction
-to you.
-
-Select the MNG_APP_CMS directive during compilation of the library.
-You MUST also set the following callbacks:
-
- mng_processgamma, mng_processchroma,
- mng_processsrgb, mng_processiccp and
- mng_processarow
-
-The last callback is called when the library needs you to correct
-an arbitrary line of pixels. The other callbacks are called when
-the corresponding color-information is encountered in the file.
-You must store this information somewhere for use in the
-mng_processarow() callback.
-
-.SS Using gamma-only correction
-
-This isn't a preferred method, but it's better than no correction
-at all. Gamma-only correction will at least compensate for
-gamma-differences between the original recorder and your output device.
-
-Select the MNG_GAMMA_ONLY directive during compilation
-of the library. Your compiler MUST support fp operations.
-
-.SS No color correction
-
-Ouch. This is really bad. This is the least preferred method,
-but may be necessary if your system cannot use lcms, doesn't
-have its own CMS, and does not allow fp operations, ruling out
-the gamma-only option.
-
-Select the MNG_NO_CMS directive during compilation.
-Images will definitely not be displayed as seen by the Author!!!
-
-
-.SS Animations and timing
-
-Animations require some form of timing support. The library relies
-on two callbacks for this purpose. The mng_gettickcount() and
-mng_settimer() callbacks. mng_gettickcount() is used to determine
-the passing of time in milliseconds since the beginning of the
-animation. This is also used to compensate during suspension-mode
-if you are using the mng_readdisplay() function to read & display
-the file simultaneously.
-
-The callback may return an arbitrary number of milliseconds, but
-this number must increase proportionaly between calls. Most modern
-systems will have some tickcount() function which derives its
-input from an internal clock. The value returned from this function
-is more than adequate for libmng.
-
-The mng_settimer() callback is called when the library determines
-a little "pause" is required before rendering another frame of the
-animation. The pause interval is also expressed in milliseconds.
-Your application should store this value and return immediately.
-The library will then make appropriate arrangements to store its
-internal state and returns to your application with the
-MNG_NEEDTIMERWAIT code.
-
-At that point you should suspend processing and wait the given
-interval. Please use your OS features for this. Do not engage some
-sort of loop. That is real bad programming practice. Most modern
-systems will have some timing functions. A simple wait() function
-may suffice, but this may prevent your applications main-task from
-running, and possibly prevent the actual update of your output device.
-
-
-.SS The mng_refresh() callback
-
-The mng_refresh() callback is called whenever the library has
-"finished" drawing a new frame onto your canvas, and just before it
-will call the mng_settimer() callback.
-
-This allows you to perform some actions necessary to "refresh" the
-canvas onto your output device. Please do NOT suspend processing
-inside this callback. This must be handled after the mng_settimer()
-callback!
-
-
-.SS Displaying while reading
-
-This method is preferred if you are reading from a slow input device
-(such as a dialup-line) and you wish to start displaying something
-as quickly as possible. This functionality is provided mainly for
-browser-type applications but may be appropriate for other
-applications as well.
-
-The method is usually used in unison with the suspension-mode of
-the read module. A typical implementation would look like this:
-
- /* initiale library and set required callbacks */
-
- /* activate suspension-mode */
- myretcode = mng_set_suspensionmode (myhandle,
- MNG_TRUE);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
- myretcode = mng_readdisplay (myhandle);
-
- while ((myretcode == MNG_NEEDMOREDATA) ||
- (myretcode == MNG_NEEDTIMERWAIT)) {
- if (myretcode == MNG_NEEDMOREDATA)
- /* wait for more input-data */;
- else
- /* wait for timer interval */;
-
- myretcode = mng_display_resume (myhandle);
- }
-
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-More advanced programming methods may require a different approach,
-but the final result should function as in the code above.
-
-
-.SS Displaying after reading
-
-This method is used to display a file that was previously read.
-It is primarily meant for viewers with direct file access, such as
-1a local harddisk.
-
-Once you have successfully read the file, all you need to do is:
-
- myretcode = mng_display (myhandle);
-
- while (myretcode == MNG_NEEDTIMERWAIT) {
- /* wait for timer interval */;
- myretcode = mng_display_resume (myhandle);
- }
-
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-Again, more advanced programming methods may require a different
-approach, but the final result should function as in the code above.
-
-
-.SS Display manipulation
-
-Several HLAPI functions are provided to allow a user to manipulate
-the normal flow of an animation.
-
-\- mng_display_freeze (mng_handle hHandle)
-
-This will "freeze" the animation in place.
-
-\- mng_display_resume (mng_handle hHandle)
-
-This function can be used to resume a frozen animation, or to force
-the library to advance the animation to the next frame.
-
-\- mng_display_reset (mng_handle hHandle)
-
-This function will "reset" the animation into its pristine state.
-Calling mng_display() afterwards will re-display the animation
-from the first frame.
-
-\- mng_display_golayer (mng_handle hHandle,
- mng_uint32 iLayer)
-
-\- mng_display_goframe (mng_handle hHandle,
- mng_uint32 iFrame)
-
-\- mng_display_gotime (mng_handle hHandle,
- mng_uint32 iPlaytime)
-
-These three functions can be used to "jump" to a specific layer, frame
-or timeslot in the animation. You must "freeze" the animation before
-using any of these functions.
-
-All above functions may only be called during a timer interval!
-It is the applications responsibility to cleanup any resources with
-respect to the timer wait.
-
-
-.SH VI. Writing
-
-The main focus of the library lies in its displaying capabilites.
-But it does offer writing support as well.
-You can create and write a file, or you can write a file you
-have previously read, providing the storage of chunks was enabled
-and active.
-
-For this to work you must have compiled the library with the
-MNG_WRITE_SUPPO1RT and MNG_ACCESS_CHUNKS directives. The standard DLL and
-Shared Library have this on by default!
-
-
-.SS Setup
-
-As always you must have initialized the library and be the owner of
-a mng_handle. The following callbacks are essential:
-
- mng_openstream, mng_writedata, mng_closestream
-
-You can optionally define:
-
- mng_errorproc, mng_traceproc
-
-The creation and writing functions will fail if you are in the middle
-of reading, creating or writing a file.
-
-
-.SS Creating a new file
-
-To start a new file the library must be in its initial state.
-First you need to tell the library your intentions:
-
- myretcode = mng_create (myhandle);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-After that you start adding the appropriate chunks:
-
- myretcode = mng_put1chunk_mhdr (myhandle, ...);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-And so on, and so forth. Note that the library will automatically signal
-the logical end of the file by the ending chunk. Also the first chunk
-will indicate the library the filetype (eg. PNG, JNG or MNG) and force
-the proper signature when writing the file.
-
-The code above can be simplified, as you can always get the last errorcode
-by using the mng_getlasterror() function:
-
- if ( (mng_putchunk_xxxx (myhandle, ...)) or
- (mng_putchunk_xxxx (myhandle, ...)) or
- ...etc... )
- /* process error */;
-
-Please note that you must have a pretty good understanding of the chunk
-specification. Unlike the read functions, there are virtually no checks,
-so it is quite possible to write completely wrong files.
-It is a good practice to read back your file into the library to verify
-its integrity.
-
-Once you've got all the chunks added, all you do is:
-
- myretcode mng_write (myhandle);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-And presto. You're done. The real work is of course carried out in
-your callbacks. Note that this is a single operation as opposed to
-the read & display functions that may return with MNG_NEEDMOREDATA
-and/or MNG_NEEDTIMERWAIT. The write function just does the job, and
-only returns after it's finished or if it encounters some
-unrecoverable error.
-
-
-.SS Writing a previously read file
-
-If you have already successfully read a file, you can use the library to
-write it out as a copy or something. You MUST have compiled the library
-with the MNG_STORE_CHUNKS directive, and you must have done
-mng_set_storechunks (myhandle, MNG_TRUE).
-
-This doesn't require the MNG_ACCESS_CHUNKS directive, unless you want
-to fiddle with the chunks as well.
-
-Again all you need to do is:
-
- myretcode mng_write (myhandle);
- if (myretcode != MNG_NOERROR)
- /* process error */;
-
-
-.SH VII. Modifying/Customizing libmng:
-
-not finished yet
-
-.SS Compilation directives
-
-not finished yet
-
-.SS Platform dependant modification
-
-not finished yet
-
-.SH "SEE ALSO"
-.IR mng(5), jng(5), png(5), libpng(3)
-
-.LP
-libmng :
-.IP
-.br
-http://www.libmng.com
-
-.LP
-zlib :
-.IP
-.br
-http://www.info-zip.org/pub/infozip/zlib/
-
-.LP
-IJG JPEG library :
-.IP
-.br
-http://www.ijg.org
-
-.LP
-lcms (little CMS) by Marti Maria Saguer :
-.IP
-.br
-http://www.littlecms.com/
-
-.LP
-MNG specification:
-.IP
-.br
-http://www.libpng.org/pub/mng
-
-.LP
-In the case of any inconsistency between the MNG specification
-and this library, the specification takes precedence.
-
-
-.SH AUTHORS
-This man page: Gerard Juyn
-<gerard at libmng.com>
-
-The contributing authors would like to thank all those who helped
-with testing, bug fixes, and patience. This wouldn't have been
-possible without all of you!!!
-
-
-.SH COPYRIGHT NOTICE:
-
-Copyright (c) 2000-2002 Gerard Juyn
-
-For the purposes of this copyright and license, "Contributing Authors"
-is defined as the following set of individuals:
-
- Gerard Juyn
-
-The MNG Library is supplied "AS IS". The Contributing Authors
-disclaim all warranties, expressed or implied, including, without
-limitation, the warranties of merchantability and of fitness for any
-purpose. The Contributing Authors assume no liability for direct,
-indirect, incidental, special, exemplary, or consequential damages,
-which may result from the use of the MNG Library, even if advised of
-the possibility of such damage.
-
-Permission is hereby granted to use, copy, modify, and distribute this
-source code, or portions hereof, for any purpose, without fee, subject
-to the following restrictions:
-
-1. The origin of this source code must not be misrepresented;
-you must not claim that you wrote the original software.
-
-2. Altered versions must be plainly marked as such and must not be
-misrepresented as being the original source.
-
-3. This Copyright notice may not be removed or altered from any source
-or altered source distribution.
-
-The Contributing Authors specifically permit, without fee, and
-encourage the use of this source code as a component to supporting
-the MNG and JNG file format in commercial products. If you use this
-source code in a product, acknowledgment would be highly appreciated.
-
-.SH Remarks
-
-Parts of this software have been adapted from the libpng library.
-Although this library supports all features from the PNG specification
-(as MNG descends from it) it does not require the libpng library.
-It does require the zlib library and optionally the IJG JPEG library,
-and/or the "little-cms" library by Marti Maria Saguer (depending on the
-inclusion of support for JNG and Full-Color-Management respectively.
-
-This library's function is primarily to read and display MNG
-animations. It is not meant as a full-featured image-editing
-component! It does however offer creation and editing functionality
-at the chunk level. (future modifications may include some more
-support for creation and or editing)
-
-.\" end of man page
diff --git a/src/3rdparty/libmng/doc/man/mng.5 b/src/3rdparty/libmng/doc/man/mng.5
deleted file mode 100644
index e40c249100..0000000000
--- a/src/3rdparty/libmng/doc/man/mng.5
+++ /dev/null
@@ -1,42 +0,0 @@
-.TH MNG 5 "July 25, 2000"
-.SH NAME
-mng \- Multiple-image Network Graphics (MNG) format
-.SH DESCRIPTION
-MNG (Multiple-image Network Graphics) is the animation extension of the
-popular PNG image-format. PNG (Portable Network Graphics) is an
-extensible file format for the lossless, portable, well-compressed
-storage of raster images.
-.br
-
-MNG has advanced animation features which make it very useful as a full
-replacement for GIF animations. These features allow animations that
-are impossible with GIF or result in much smaller files as GIF.
-
-As MNG builds on the same structure as PNG, it is robust, extensible and
-free of patents. It retains the same clever file integrity checks as in PNG.
-
-MNG also embraces the lossy JPEG image-format in a sub-format named JNG,
-which allows for alpha-transparency and color-correction on highly
-compressed (photographic) images.
-
-.SH "SEE ALSO"
-.IR png(5) ", " jng(5) ", " libmng(3) ", " libpng(3) ", " zlib(3) ", "
-deflate(5) ", " zlib(5) ", " jpeg(5)
-.LP
-MNG 1.00, Februari 9, 2001:
-.IP
-.br
-http://www.libpng.org/pub/mng
-.SH AUTHORS
-This man page: Gerard Juyn
-.LP
-Multiple-image Network Graphics (MNG) Specification Version 1.00 (Februari 9, 2001):
-Glenn Randers-Pehrson and others (png-list@ccrc.wustl.edu).
-.LP
-
-.SH COPYRIGHT NOTICE
-The MNG-1.00 specification is copyright (c) 1998-2001 Glenn Randers-Pehrson.
-See the specification for conditions of use and distribution.
-.LP
-.\" end of man page
-
diff --git a/src/3rdparty/libmng/doc/misc/magic.dif b/src/3rdparty/libmng/doc/misc/magic.dif
deleted file mode 100644
index 005ad5a746..0000000000
--- a/src/3rdparty/libmng/doc/misc/magic.dif
+++ /dev/null
@@ -1,30 +0,0 @@
---- magic.orig Wed Aug 14 16:48:56 2002
-+++ magic Wed Aug 14 16:50:09 2002
-@@ -2544,6 +2544,27 @@
- >>28 byte 1 interlaced
- 1 string PNG PNG image data, CORRUPTED
-
-+#MNG
-+# 0x8a M N G 0x0d 0x0a 0x1a 0x0a [4-byte pad]
-+# M H D R [4-byte width][4-byte height][4-byte ticks][4-byte layers]
-+# [4-byte frame][4-byte time]
-+#
-+0 string \x8aMNG MNG image data,
-+>4 belong !0x0d0a1a0a CORRUPTED
-+>4 belong 0x0d0a1a0a
-+>>16 belong x %ld x
-+>>20 belong x %ld
-+
-+#JNG
-+# 0x8b J N G 0x0d 0x0a 0x1a 0x0a [4-byte pad]
-+# J H D R [4-byte width][4-byte height]
-+#
-+0 string \x8bJNG JNG image data,
-+>4 belong !0x0d0a1a0a CORRUPTED
-+>4 belong 0x0d0a1a0a
-+>>16 belong x %ld x
-+>>20 belong x %ld
-+
- # GIF
- 0 string GIF8 GIF image data
- >4 string 7a \b, version 8%s,
diff --git a/src/3rdparty/libmng/doc/rpm/libmng-1.0.10-rhconf.patch b/src/3rdparty/libmng/doc/rpm/libmng-1.0.10-rhconf.patch
deleted file mode 100644
index a73b79dbe5..0000000000
--- a/src/3rdparty/libmng/doc/rpm/libmng-1.0.10-rhconf.patch
+++ /dev/null
@@ -1,38 +0,0 @@
---- libmng/makefiles/makefile.linux.orig Sat Jul 1 15:10:35 2000
-+++ libmng/makefiles/makefile.linux Sat Jul 1 15:14:52 2000
-@@ -13,19 +13,19 @@
- OPTIONS = -DMNG_BUILD_SO
-
- # where "make install" puts libmng.a,libmng.so*,libmng.h,libmng_conf.h,libmng_types.h
--prefix=/usr/local
-+prefix=/usr
-
- # Where the zlib library and include files are located
--ZLIBLIB=../zlib
--ZLIBINC=../zlib
-+ZLIBLIB=/usr/lib
-+ZLIBINC=/usr/include
-
- # Where the jpeg library and include files are located
--JPEGLIB=../jpgsrc
--JPEGINC=../jpgsrc
-+JPEGLIB=/usr/lib
-+JPEGINC=/usr/include
-
- # Where the lcms library and include files are located
--LCMSLIB=../lcms/lib
--LCMSINC=../lcms/source
-+LCMSLIB=/usr/lib
-+LCMSINC=/usr/include
-
- ALIGN=
- # for i386:
-@@ -37,7 +37,7 @@
-
- # for pgcc version 2.95.1, -O3 is buggy; don't use it.
-
--CFLAGS=-I$(ZLIBINC) -I$(JPEGINC) -I$(LCMSINC) -Wall -O3 -funroll-loops \
-+CFLAGS=-I$(ZLIBINC) -I$(JPEGINC) -I$(LCMSINC) -Wall $(RPM_OPT_FLAGS) \
- $(OPTIONS) $(ALIGN) # $(WARNMORE) -g
- LDFLAGS=-L. -Wl,-rpath,. \
- -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) \
diff --git a/src/3rdparty/libmng/doc/rpm/libmng.spec b/src/3rdparty/libmng/doc/rpm/libmng.spec
deleted file mode 100644
index 89908d7a97..0000000000
--- a/src/3rdparty/libmng/doc/rpm/libmng.spec
+++ /dev/null
@@ -1,116 +0,0 @@
-Summary: A library of functions for manipulating MNG format files.
-Name: libmng
-Version: 1.0.10
-Release: 2.1
-Copyright: AS IS
-Group: System Environment/Libraries
-Source0: libmng-%{PACKAGE_VERSION}.tar.gz
-Patch: libmng-%{PACKAGE_VERSION}-rhconf.patch
-URL: http://www.libmng.com/
-BuildRoot: /var/tmp/libmng-root
-BuildPrereq: libjpeg-devel, zlib-devel, lcms-devel
-
-%description
-libmng - library for reading, writing, displaying and examing
-Multiple-Image Network Graphics. MNG is the animation extension to the
-popular PNG image-format.
-
-%package devel
-Summary: Development tools for programs to manipulate MNG format files.
-Group: Development/Libraries
-Requires: libmng = %{PACKAGE_VERSION}
-%description devel
-The libmng-devel package contains the header files and static
-libraries necessary for developing programs using the MNG
-(Multiple-Image Network Graphics) library.
-
-If you want to develop programs which will manipulate MNG image format
-files, you should install libmng-devel. You'll also need to install
-the libmng package.
-
-%changelog
-* Fri Jul 13 2007 Glenn Randers-Pehrson <glennrp at users.sf.net>
-- updated to 1.0.10
-
-* Thu Aug 5 2004 Gerard Juyn <gerard at libmng.com>
-* Sun Jan 30 2005 Gerard Juyn <gerard at libmng.com>
-- updated to 1.0.9
-
-* Thu Aug 5 2004 Gerard Juyn <gerard at libmng.com>
-- updated to 1.0.8
-
-* Sun Mar 21 2004 Gerard Juyn <gerard at libmng.com>
-- updated to 1.0.7
-
-* Sun Oct 19 2003 Gerard Juyn <gerard at libmng.com>
-- updated to 1.0.6
-
-* Tue Sep 24 2002 Gerard Juyn <gerard at libmng.com>
-- updated to 1.0.5
-
-* Sun Jun 23 2002 Gerard Juyn <gerard at libmng.com>
-- updated to 1.0.4
-
-* Mon Sep 18 2001 Gerard Juyn <gerard at libmng.com>
-- updated to 1.0.3
-
-* Sat Jul 7 2001 Gerard Juyn <gerard at libmng.com>
-- updated to 1.0.2
-
-* Wed May 2 2001 Gerard Juyn <gerard at libmng.com>
-- updated to 1.0.1
-
-* Mon Feb 5 2001 Gerard Juyn <gerard at libmng.com>
-- updated to 1.0.0
-
-* Fri Jan 19 2001 Gerard Juyn <gerard at libmng.com>
-- updated to 0.9.4
-
-* Sat Oct 28 2000 Gerard Juyn <gerard at libmng.com>
-- updated to 0.9.3
-
-* Tue Aug 15 2000 MATSUURA Takanori <t-matsuu at protein.osaka-u.ac.jp>
-- based on libmng-0.9.2/doc/rpm/libmng.spec
-- use %%configure and %%makeinstall
-
-* Sat Aug 5 2000 Gerard Juyn <gerard at libmng.com>
-- updated to 0.9.2
-
-* Wed Jul 26 2000 Gerard Juyn <gerard at libmng.com>
-- updated to 0.9.1
-
-* Sat Jul 1 2000 MATSUURA Takanori <t-matsuu at protein.osaka-u.ac.jp>
-- updated to 0.9.0
-
-* Sat Jun 24 2000 MATSUURA Takanori <t-matsuu at protein.osaka-u.ac.jp>
-- 1st release for RPM
-
-%prep
-%setup
-%configure
-
-%build
-make
-
-%install
-rm -rf $RPM_BUILD_ROOT
-%makeinstall
-
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-%post -p /sbin/ldconfig
-
-%postun -p /sbin/ldconfig
-
-%files
-%defattr(-,root,root)
-%doc CHANGES LICENSE README doc
-/usr/lib/libmng.so.*
-
-%files devel
-%defattr(-,root,root)
-/usr/include/*
-/usr/lib/libmng.a
-/usr/lib/libmng.so
-
diff --git a/src/3rdparty/libmng/libmng.h b/src/3rdparty/libmng/libmng.h
deleted file mode 100644
index b3b1ab1418..0000000000
--- a/src/3rdparty/libmng/libmng.h
+++ /dev/null
@@ -1,2932 +0,0 @@
-/* ************************************************************************** */
-/* * * */
-/* * COPYRIGHT NOTICE: * */
-/* * * */
-/* * Copyright (c) 2000-2007 Gerard Juyn * */
-/* * [You may insert additional notices after this sentence if you modify * */
-/* * this source] * */
-/* * * */
-/* * For the purposes of this copyright and license, "Contributing Authors" * */
-/* * is defined as the following set of individuals: * */
-/* * * */
-/* * Gerard Juyn - gjuyn :at: users.sourceforge.net * */
-/* * Glenn Randers-Pehrson - glennrp :at: users.sourceforge.net * */
-/* * Raphael Assenat - raph :at: raphnet.net * */
-/* * John Stiles - * */
-/* * * */
-/* * The MNG Library is supplied "AS IS". The Contributing Authors * */
-/* * disclaim all warranties, expressed or implied, including, without * */
-/* * limitation, the warranties of merchantability and of fitness for any * */
-/* * purpose. The Contributing Authors assume no liability for direct, * */
-/* * indirect, incidental, special, exemplary, or consequential damages, * */
-/* * which may result from the use of the MNG Library, even if advised of * */
-/* * the possibility of such damage. * */
-/* * * */
-/* * Permission is hereby granted to use, copy, modify, and distribute this * */
-/* * source code, or portions hereof, for any purpose, without fee, subject * */
-/* * to the following restrictions: * */
-/* * * */
-/* * 1. The origin of this source code must not be misrepresented; * */
-/* * you must not claim that you wrote the original software. * */
-/* * * */
-/* * 2. Altered versions must be plainly marked as such and must not be * */
-/* * misrepresented as being the original source. * */
-/* * * */
-/* * 3. This Copyright notice may not be removed or altered from any source * */
-/* * or altered source distribution. * */
-/* * * */
-/* * The Contributing Authors specifically permit, without fee, and * */
-/* * encourage the use of this source code as a component to supporting * */
-/* * the MNG and JNG file format in commercial products. If you use this * */
-/* * source code in a product, acknowledgment would be highly appreciated. * */
-/* * * */
-/* ************************************************************************** */
-/* * * */
-/* * Parts of this software have been adapted from the libpng package. * */
-/* * Although this library supports all features from the PNG specification * */
-/* * (as MNG descends from it) it does not require the libpng package. * */
-/* * It does require the zlib library and optionally the IJG jpeg library, * */
-/* * and/or the "little-cms" library by Marti Maria (depending on the * */
-/* * inclusion of support for JNG and Full-Color-Management respectively. * */
-/* * * */
-/* * This library's function is primarily to read and display MNG * */
-/* * animations. It is not meant as a full-featured image-editing * */
-/* * component! It does however offer creation and editing functionality * */
-/* * at the chunk level. * */
-/* * (future modifications may include some more support for creation * */
-/* * and or editing) * */
-/* * * */
-/* ************************************************************************** */
-
-/* ************************************************************************** */
-/* * * */
-/* * Version numbering * */
-/* * * */
-/* * X.Y.Z : X = release (0 = initial build) * */
-/* * Y = major version (uneven = test; even = production) * */
-/* * Z = minor version (bugfixes; 2 is older than 10) * */
-/* * * */
-/* * production versions only appear when a test-version is extensively * */
-/* * tested and found stable or for intermediate bug-fixes (recognized by * */
-/* * a change in the Z number) * */
-/* * * */
-/* * x.1.x = test version * */
-/* * x.2.x = production version * */
-/* * x.3.x = test version * */
-/* * x.4.x = production version * */
-/* * etc. * */
-/* * * */
-/* ************************************************************************** */
-/* * * */
-/* * Identifier naming conventions throughout this library * */
-/* * * */
-/* * iXxxx = an integer * */
-/* * dXxxx = a float * */
-/* * pXxxx = a pointer * */
-/* * bXxxx = a boolean * */
-/* * eXxxx = an enumeration * */
-/* * hXxxx = a handle * */
-/* * zXxxx = a zero-terminated string (pchar) * */
-/* * fXxxx = a pointer to a function (callback) * */
-/* * aXxxx = an array * */
-/* * sXxxx = a structure * */
-/* * * */
-/* * Macros & defines are in all uppercase. * */
-/* * Functions & typedefs in all lowercase. * */
-/* * Exported stuff is prefixed with MNG_ or mng_ respectively. * */
-/* * * */
-/* * (I may have missed a couple; don't hesitate to let me know!) * */
-/* * * */
-/* ************************************************************************** */
-
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng.h copyright (c) 2000-2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : main application interface * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : The main application interface. An application should not * */
-/* * need access to any of the other modules! * */
-/* * * */
-/* * changes : 0.5.1 - 05/06/2000 - G.Juyn * */
-/* * - changed chunk iteration function * */
-/* * 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - added chunk access functions * */
-/* * - added version control constants & functions * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/11/2000 - G.Juyn * */
-/* * - added set_outputprofile2 & set_srgbprofile2 * */
-/* * - added empty-chunk put-routines * */
-/* * 0.5.1 - 05/12/2000 - G.Juyn * */
-/* * - added version_dll & VERSION_DLL (for consistency) * */
-/* * - added version control explanatory text & samples * */
-/* * 0.5.1 - 05/15/2000 - G.Juyn * */
-/* * - added getimgdata & putimgdata functions * */
-/* * * */
-/* * 0.5.2 - 05/16/2000 - G.Juyn * */
-/* * - changed the version parameters (obviously) * */
-/* * 0.5.2 - 05/18/2000 - G.Juyn * */
-/* * - complimented constants for chunk-property values * */
-/* * 0.5.2 - 05/23/2000 - G.Juyn * */
-/* * - fixed MNG_UINT_pHYg value * */
-/* * 0.5.2 - 05/24/2000 - G.Juyn * */
-/* * - added support for get/set default zlib/IJG parms * */
-/* * 0.5.2 - 06/02/2000 - G.Juyn * */
-/* * - added MNG_BIGENDIAN_SUPPORT (contributed by Tim Rowley) * */
-/* * - separated configuration-options into "mng_conf.h" * */
-/* * - added RGB8_A8 canvasstyle * */
-/* * - added getalphaline callback for RGB8_A8 canvasstyle * */
-/* * 0.5.2 - 06/06/2000 - G.Juyn * */
-/* * - moved errorcodes from "mng_error.h" * */
-/* * - added mng_read_resume function to support * */
-/* * read-suspension * */
-/* * * */
-/* * 0.5.3 - 06/16/2000 - G.Juyn * */
-/* * - changed the version parameters (obviously) * */
-/* * 0.5.3 - 06/21/2000 - G.Juyn * */
-/* * - added get/set for speedtype to facilitate testing * */
-/* * - added get for imagelevel during processtext callback * */
-/* * 0.5.3 - 06/24/2000 - G.Juyn * */
-/* * - fixed inclusion of IJG read/write code * */
-/* * 0.5.3 - 06/26/2000 - G.Juyn * */
-/* * - changed userdata variable to mng_ptr * */
-/* * * */
-/* * 0.9.0 - 06/30/2000 - G.Juyn * */
-/* * - changed refresh parameters to 'x,y,width,height' * */
-/* * * */
-/* * 0.9.1 - 07/06/2000 - G.Juyn * */
-/* * - added MNG_NEEDTIMERWAIT errorcode * */
-/* * - changed comments to indicate modified behavior for * */
-/* * timer & suspension breaks * */
-/* * 0.9.1 - 07/08/2000 - G.Juyn * */
-/* * - added get routines for internal display variables * */
-/* * - added get/set routines for suspensionmode variable * */
-/* * 0.9.1 - 07/15/2000 - G.Juyn * */
-/* * - added callbacks for SAVE/SEEK processing * */
-/* * - added get/set routines for sectionbreak variable * */
-/* * - added NEEDSECTIONWAIT errorcode * */
-/* * 0.9.1 - 07/19/2000 - G.Juyn * */
-/* * - added function to set frame-/layer-count & playtime * */
-/* * - added errorcode for updatemngheader if not a MNG * */
-/* * * */
-/* * 0.9.2 - 07/31/2000 - G.Juyn * */
-/* * - fixed problem with trace-functions improperly wrapped * */
-/* * - added status_xxxx functions * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * - added function to set simplicity field * */
-/* * * */
-/* * 0.9.3 - 08/09/2000 - G.Juyn * */
-/* * - added check for simplicity-bits in MHDR * */
-/* * 0.9.3 - 08/12/2000 - G.Juyn * */
-/* * - added workaround for faulty PhotoShop iCCP chunk * */
-/* * 0.9.3 - 08/26/2000 - G.Juyn * */
-/* * - added MAGN chunk * */
-/* * 0.9.3 - 09/07/2000 - G.Juyn * */
-/* * - added support for new filter_types * */
-/* * 0.9.3 - 10/10/2000 - G.Juyn * */
-/* * - added support for alpha-depth prediction * */
-/* * 0.9.3 - 10/11/2000 - G.Juyn * */
-/* * - fixed processing of unknown critical chunks * */
-/* * - removed test-MaGN * */
-/* * - added PNG/MNG spec version indicators * */
-/* * - added support for nEED * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added functions to retrieve PNG/JNG specific header-info * */
-/* * - added JDAA chunk * */
-/* * 0.9.3 - 10/17/2000 - G.Juyn * */
-/* * - added callback to process non-critical unknown chunks * */
-/* * 0.9.3 - 10/20/2000 - G.Juyn * */
-/* * - added errocode for delayed delta-processing * */
-/* * - added get/set for bKGD preference setting * */
-/* * 0.9.3 - 10/21/2000 - G.Juyn * */
-/* * - added get function for interlace/progressive display * */
-/* * * */
-/* * 0.9.4 - 01/18/2001 - G.Juyn * */
-/* * - added errorcode for MAGN methods * */
-/* * - removed test filter-methods 1 & 65 * */
-/* * * */
-/* * 1.0.0 - 02/05/2001 - G.Juyn * */
-/* * - version numbers (obviously) * */
-/* * * */
-/* * 1.0.1 - 02/08/2001 - G.Juyn * */
-/* * - added MEND processing callback * */
-/* * 1.0.1 - 04/21/2001 - G.Juyn (code by G.Kelly) * */
-/* * - added BGRA8 canvas with premultiplied alpha * */
-/* * 1.0.1 - 05/02/2001 - G.Juyn * */
-/* * - added "default" sRGB generation (Thanks Marti!) * */
-/* * * */
-/* * 1.0.2 - 06/23/2001 - G.Juyn * */
-/* * - added optimization option for MNG-video playback * */
-/* * - added processterm callback * */
-/* * 1.0.2 - 06/25/2001 - G.Juyn * */
-/* * - added late binding errorcode (not used internally) * */
-/* * - added option to turn off progressive refresh * */
-/* * * */
-/* * 1.0.3 - 08/06/2001 - G.Juyn * */
-/* * - added get function for last processed BACK chunk * */
-/* * * */
-/* * 1.0.5 - 07/04/2002 - G.Juyn * */
-/* * - added errorcode for extreme chunk-sizes * */
-/* * 1.0.5 - 08/07/2002 - G.Juyn * */
-/* * - added test-option for PNG filter method 193 (=no filter) * */
-/* * 1.0.5 - 08/15/2002 - G.Juyn * */
-/* * - completed PROM support * */
-/* * - completed delta-image support * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - added HLAPI function to copy chunks * */
-/* * 1.0.5 - 09/14/2002 - G.Juyn * */
-/* * - added event handling for dynamic MNG * */
-/* * - added 'supports' call to check function availability * */
-/* * 1.0.5 - 09/15/2002 - G.Juyn * */
-/* * - fixed LOOP iteration=0 special case * */
-/* * 1.0.5 - 09/20/2002 - G.Juyn * */
-/* * - added support for PAST * */
-/* * 1.0.5 - 09/22/2002 - G.Juyn * */
-/* * - added bgrx8 canvas (filler byte) * */
-/* * 1.0.5 - 10/07/2002 - G.Juyn * */
-/* * - added check for TERM placement during create/write * */
-/* * - added beta version function & constant * */
-/* * 1.0.5 - 11/07/2002 - G.Juyn * */
-/* * - added support to get totals after mng_read() * */
-/* * * */
-/* * 1.0.6 - 07/07/2003 - G. Randers-Pehrson * */
-/* * - added support for reducing the footprint of libmng * */
-/* * by macros that optionally skip unused chunks, remove * */
-/* * 16-bit sample support, remove Delta support, and * */
-/* * remove JNG support, to accomodate Mozilla/Firebird. * */
-/* * 1.0.6 - 07/14/2003 - G. Randers-Pehrson * */
-/* * - further optional removal of unused functions * */
-/* * * */
-/* * 1.0.7 - 11/27/2003 - R.A * */
-/* * - added CANVAS_RGB565 and CANVAS_BGR565 * */
-/* * 1.0.7 - 12/06/2003 - R.A * */
-/* * - added CANVAS_RGBA565 and CANVAS_BGRA565 * */
-/* * 1.0.7 - 01/25/2004 - J.S * */
-/* * - added premultiplied alpha canvas' for RGBA, ARGB, ABGR * */
-/* * 1.0.7 - 03/07/2004 - G. Randers-Pehrson * */
-/* * - put gamma, cms-related declarations inside #ifdef * */
-/* * 1.0.7 - 03/10/2004 - G.R-P * */
-/* * - added conditionals around openstream/closestream * */
-/* * * */
-/* * 1.0.8 - 04/02/2004 - G.Juyn * */
-/* * - added CRC existence & checking flags * */
-/* * 1.0.8 - 04/12/2004 - G.Juyn * */
-/* * - added data-push mechanisms for specialized decoders * */
-/* * 1.0.8 - 06/05/2004 - G.R-P * */
-/* * - define MNG_INCLUDE_ZLIB when MNG_USE_ZLIB_CRC is defined * */
-/* * * */
-/* * 1.0.9 - 10/03/2004 - G.Juyn * */
-/* * - added function to retrieve current FRAM delay * */
-/* * 1.0.9 - 10/14/2004 - G.Juyn * */
-/* * - added bgr565_a8 canvas-style (thanks to J. Elvander) * */
-/* * 1.0.9 - 10/17/2004 - G.Juyn * */
-/* * - fixed PPLT getchunk/putchunk routines * */
-/* * * */
-/* * 1.0.10 - 03/07/2006 - (thanks to W. Manthey) * */
-/* * - added CANVAS_RGB555 and CANVAS_BGR555 * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * 1.0.10 - 04/12/2007 - G.Juyn * */
-/* * - added support for ANG proposal * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_h_
-#define _libmng_h_
-
-/* ************************************************************************** */
-
-#include "libmng_conf.h" /* user-specific configuration options */
-
-/* ************************************************************************** */
-
-#define MNG_CHECK_BAD_ICCP /* let's catch that sucker !!! */
-
-#ifdef MNG_SUPPORT_READ /* dependencies based on user-configuration */
-#define MNG_INCLUDE_READ_PROCS
-#endif
-
-#ifdef MNG_SUPPORT_WRITE
-#define MNG_INCLUDE_WRITE_PROCS
-#endif
-
-#ifdef MNG_USE_ZLIB_CRC
-#define MNG_INCLUDE_ZLIB
-#endif
-
-#ifdef MNG_SUPPORT_DISPLAY
-#define MNG_INCLUDE_FILTERS
-#define MNG_INCLUDE_INTERLACE
-#define MNG_INCLUDE_OBJECTS
-#define MNG_INCLUDE_DISPLAY_PROCS
-#define MNG_INCLUDE_TIMING_PROCS
-#define MNG_INCLUDE_ZLIB
-#endif
-
-#ifdef MNG_STORE_CHUNKS
-#define MNG_INCLUDE_ZLIB
-#endif
-
-#ifdef MNG_SUPPORT_IJG6B
-#define MNG_INCLUDE_JNG
-#define MNG_INCLUDE_IJG6B
-#define MNG_USE_SETJMP
-#endif
-
-#ifdef MNG_INCLUDE_JNG
-#if defined(MNG_SUPPORT_DISPLAY) || defined(MNG_ACCESS_CHUNKS)
-#define MNG_INCLUDE_JNG_READ
-#endif
-#if defined(MNG_SUPPORT_WRITE) || defined(MNG_ACCESS_CHUNKS)
-#define MNG_INCLUDE_JNG_WRITE
-#endif
-#endif
-
-#ifdef MNG_FULL_CMS
-#define MNG_INCLUDE_LCMS
-#endif
-
-#ifdef MNG_AUTO_DITHER
-#define MNG_INCLUDE_DITHERING
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
-#define MNG_INCLUDE_TRACE_PROCS
-#ifdef MNG_TRACE_TELLTALE
-#define MNG_INCLUDE_TRACE_STRINGS
-#endif
-#endif
-
-#ifdef MNG_ERROR_TELLTALE
-#define MNG_INCLUDE_ERROR_STRINGS
-#endif
-
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_OPTIMIZE_CHUNKACCESS
-#define MNG_OPTIMIZE_CHUNKACCESS
-#endif
-#else
-#ifdef MNG_OPTIMIZE_CHUNKACCESS
-#undef MNG_OPTIMIZE_CHUNKACCESS
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#include "libmng_types.h" /* platform-specific definitions
- and other assorted stuff */
-
-/* ************************************************************************** */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Versioning control * */
-/* * * */
-/* * version_so and version_dll will NOT reflect version_major; * */
-/* * these will only change for binary incompatible changes (which will * */
-/* * hopefully never occur) * */
-/* * note: they will be set to 1 on the first public release !!! * */
-/* * * */
-/* * first public release: * */
-/* * #define MNG_VERSION_TEXT "1.0.0" * */
-/* * #define MNG_VERSION_SO 1 eg. libmng.so.1 * */
-/* * #define MNG_VERSION_DLL 1 eg. libmng.dll * */
-/* * #define MNG_VERSION_MAJOR 1 * */
-/* * #define MNG_VERSION_MINOR 0 * */
-/* * #define MNG_VERSION_RELEASE 0 * */
-/* * * */
-/* * bug fix & cosmetics : * */
-/* * #define MNG_VERSION_TEXT "1.0.1" * */
-/* * #define MNG_VERSION_SO 1 eg. libmng.so.1 * */
-/* * #define MNG_VERSION_DLL 1 eg. libmng.dll * */
-/* * #define MNG_VERSION_MAJOR 1 * */
-/* * #define MNG_VERSION_MINOR 0 * */
-/* * #define MNG_VERSION_RELEASE 1 * */
-/* * * */
-/* * feature change : * */
-/* * #define MNG_VERSION_TEXT "1.2.0" * */
-/* * #define MNG_VERSION_SO 1 eg. libmng.so.1 * */
-/* * #define MNG_VERSION_DLL 1 eg. libmng.dll * */
-/* * #define MNG_VERSION_MAJOR 1 * */
-/* * #define MNG_VERSION_MINOR 2 * */
-/* * #define MNG_VERSION_RELEASE 0 * */
-/* * * */
-/* * major rewrite (still binary compatible) : * */
-/* * #define MNG_VERSION_TEXT "2.0.0" * */
-/* * #define MNG_VERSION_SO 1 eg. libmng.so.1 * */
-/* * #define MNG_VERSION_DLL 1 eg. libmng.dll * */
-/* * #define MNG_VERSION_MAJOR 2 * */
-/* * #define MNG_VERSION_MINOR 0 * */
-/* * #define MNG_VERSION_RELEASE 0 * */
-/* * * */
-/* * binary incompatible change: * */
-/* * #define MNG_VERSION_TEXT "13.0.0" * */
-/* * #define MNG_VERSION_SO 2 eg. libmng.so.2 * */
-/* * #define MNG_VERSION_DLL 2 eg. libmng2.dll * */
-/* * #define MNG_VERSION_MAJOR 13 * */
-/* * #define MNG_VERSION_MINOR 0 * */
-/* * #define MNG_VERSION_RELEASE 0 * */
-/* * * */
-/* * note that version_so & version_dll will always remain equal so it * */
-/* * doesn't matter which one is called to do version-checking; they are * */
-/* * just provided for their target platform * */
-/* * * */
-/* ************************************************************************** */
-
-#define MNG_VERSION_TEXT "1.0.10"
-#define MNG_VERSION_SO 1 /* eg. libmng.so.1 */
-#define MNG_VERSION_DLL 1 /* but: libmng.dll (!) */
-#define MNG_VERSION_MAJOR 1
-#define MNG_VERSION_MINOR 0
-#define MNG_VERSION_RELEASE 10
-#define MNG_VERSION_BETA MNG_FALSE
-
-MNG_EXT mng_pchar MNG_DECL mng_version_text (void);
-MNG_EXT mng_uint8 MNG_DECL mng_version_so (void);
-MNG_EXT mng_uint8 MNG_DECL mng_version_dll (void);
-MNG_EXT mng_uint8 MNG_DECL mng_version_major (void);
-MNG_EXT mng_uint8 MNG_DECL mng_version_minor (void);
-MNG_EXT mng_uint8 MNG_DECL mng_version_release (void);
-MNG_EXT mng_bool MNG_DECL mng_version_beta (void);
-
-/* use the following call to check wether the version of libmng your app
- is using supports the given function; this is useful in apps that dynamically
- load the library to make sure a certain function will work; the result will
- be MNG_TRUE if the given function is implemented in this version of the library;
- Major/Minor/Version indicate the version the function became available;
- (if these fields are zero the function is not yet implemented!) */
-#ifdef MNG_SUPPORT_FUNCQUERY
-MNG_EXT mng_bool MNG_DECL mng_supports_func (mng_pchar zFunction,
- mng_uint8* iMajor,
- mng_uint8* iMinor,
- mng_uint8* iRelease);
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * MNG/PNG specification level conformance * */
-/* * * */
-/* ************************************************************************** */
-
-#define MNG_PNG_VERSION "1.2"
-#define MNG_PNG_VERSION_MAJ 1
-#define MNG_PNG_VERSION_MIN 2
-
-#define MNG_MNG_VERSION "1.1"
-#define MNG_MNG_VERSION_MAJ 1
-#define MNG_MNG_VERSION_MIN 1
-#define MNG_MNG_DRAFT 99 /* deprecated;
- only used for nEED "MNG DRAFT nn" */
-
-/* ************************************************************************** */
-/* * * */
-/* * High-level application functions * */
-/* * * */
-/* ************************************************************************** */
-
-/* library initialization function */
-/* must be the first called before anything can be done at all */
-/* initializes internal datastructure(s) */
-MNG_EXT mng_handle MNG_DECL mng_initialize (mng_ptr pUserdata,
- mng_memalloc fMemalloc,
- mng_memfree fMemfree,
- mng_traceproc fTraceproc);
-
-/* library reset function */
-/* can be used to re-initialize the library, so another image can be
- processed. there's absolutely no harm in calling it, even when it's not
- really necessary */
-MNG_EXT mng_retcode MNG_DECL mng_reset (mng_handle hHandle);
-
-/* library cleanup function */
-/* must be the last called to clean up internal datastructure(s) */
-MNG_EXT mng_retcode MNG_DECL mng_cleanup (mng_handle* hHandle);
-
-/* high-level read functions */
-/* use mng_read if you simply want to read a Network Graphic */
-/* mng_read_resume is used in I/O-read-suspension scenarios, where the
- "readdata" callback may return FALSE & length=0 indicating its buffer is
- depleted or too short to supply the required bytes, and the buffer needs
- to be refilled; libmng will return the errorcode MNG_NEEDMOREDATA telling
- the app to refill its read-buffer after which it must call mng_read_resume
- (or mng_display_resume if it also displaying the image simultaneously) */
-#ifdef MNG_SUPPORT_READ
-MNG_EXT mng_retcode MNG_DECL mng_read (mng_handle hHandle);
-MNG_EXT mng_retcode MNG_DECL mng_read_resume (mng_handle hHandle);
-#endif
-
-/* high-level "data push" functions */
-/* these functions can be used in situations where data is streaming into the
- application and needs to be buffered by libmng before it is actually
- requested by libmng itself. the pushing complements the normal reading
- mechanism, but applications can decide to always return "0 bytes read" to
- make libmng go into suspension mode with the returncode MNG_NEEDMOREDATA */
-/* mng_read_pushdata can be used to push blobs of data of arbitrary size;
- mng_read_pushsig and mng_read_pushchunk can be used if the application
- has already done some low-level decoding (eg. at the chunk level) */
-/* the data being pushed into libmng with mng_read_pushdata *must* contain
- the regular 4-byte chunklength, but *must not* contain it with
- mng_read_pushchunk!!! */
-/* mng_read_pushsig is used to prevent libmng from trying to parse the regular
- PNG/JNG/MNG signature bytes; the application must have done this itself
- and *must* indicate the proper type in the function call or things will
- go amiss!!
- also you *must* call this first, so pretty much right after mng_initialize
- and certainly before any call to mng_read or mng_readdisplay !!!! */
-/* IMPORTANT!!! data can only be safely pushed when libmng is in a
- "wait" state; eg. during MNG_NEEDTIMERWAIT, MNG_NEEDSECTIONWAIT or
- MNG_NEEDMOREDATA !!! this just means you can't have one thread displaying
- and another thread pushing data !!! */
-/* if bOwnership = MNG_TRUE, libmng will retain the supplied pointer and
- *will* expect the buffer to remain available until libmng is finished
- with it; what happens then depends on whether or not you have set the
- releasedata() callback; if this is set than the supplied buffer will
- be returned through this callback and your application can take care of
- cleaning it up, otherwise libmng will use its internal freeing mechanism
- (which, depending on compile-options, will be the standard C free() call,
- or the memfree() callback */
-/* if bOwnership = MNG_FALSE, libmng will just copy the data into its own
- buffers and dispose of it in the normal way */
-#ifdef MNG_SUPPORT_READ
-MNG_EXT mng_retcode MNG_DECL mng_read_pushdata (mng_handle hHandle,
- mng_ptr pData,
- mng_size_t iLength,
- mng_bool bTakeownership);
-MNG_EXT mng_retcode MNG_DECL mng_read_pushsig (mng_handle hHandle,
- mng_imgtype eSigtype);
-MNG_EXT mng_retcode MNG_DECL mng_read_pushchunk (mng_handle hHandle,
- mng_ptr pChunk,
- mng_size_t iLength,
- mng_bool bTakeownership);
-#endif
-
-/* high-level write & create functions */
-/* use this if you want to write a previously read Network Graphic or
- if you want to create a new graphic and write it */
-/* to write a previously read graphic you must have defined MNG_STORE_CHUNKS */
-/* to create a new graphic you'll also need access to the chunks
- (eg. #define MNG_ACCESS_CHUNKS !) */
-#ifdef MNG_SUPPORT_WRITE
-MNG_EXT mng_retcode MNG_DECL mng_write (mng_handle hHandle);
-MNG_EXT mng_retcode MNG_DECL mng_create (mng_handle hHandle);
-#endif
-
-/* high-level display functions */
-/* use these to display a previously read or created graphic or
- to read & display a graphic simultaneously */
-/* mng_display_resume should be called after a timer-interval
- expires that was set through the settimer-callback, after a
- read suspension-break, or, to resume an animation after a call
- to mng_display_freeze/mng_display_reset */
-/* mng_display_freeze thru mng_display_gotime can be used to influence
- the display of an image, BUT ONLY if it has been completely read! */
-#ifdef MNG_SUPPORT_DISPLAY
-#ifdef MNG_SUPPORT_READ
-MNG_EXT mng_retcode MNG_DECL mng_readdisplay (mng_handle hHandle);
-#endif
-MNG_EXT mng_retcode MNG_DECL mng_display (mng_handle hHandle);
-MNG_EXT mng_retcode MNG_DECL mng_display_resume (mng_handle hHandle);
-MNG_EXT mng_retcode MNG_DECL mng_display_freeze (mng_handle hHandle);
-MNG_EXT mng_retcode MNG_DECL mng_display_reset (mng_handle hHandle);
-#ifndef MNG_NO_DISPLAY_GO_SUPPORTED
-MNG_EXT mng_retcode MNG_DECL mng_display_goframe (mng_handle hHandle,
- mng_uint32 iFramenr);
-MNG_EXT mng_retcode MNG_DECL mng_display_golayer (mng_handle hHandle,
- mng_uint32 iLayernr);
-MNG_EXT mng_retcode MNG_DECL mng_display_gotime (mng_handle hHandle,
- mng_uint32 iPlaytime);
-#endif
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* event processing function */
-/* this needs to be called by the app when dynamic MNG is enabled and
- a specific event occurs in the user-interface */
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_SUPPORT_DYNAMICMNG)
-MNG_EXT mng_retcode MNG_DECL mng_trapevent (mng_handle hHandle,
- mng_uint8 iEventtype,
- mng_int32 iX,
- mng_int32 iY);
-#endif
-
-/* error reporting function */
-/* use this if you need more detailed info on the last error */
-/* iExtra1 & iExtra2 may contain errorcodes from zlib, jpeg, etc... */
-/* zErrortext will only be filled if you #define MNG_ERROR_TELLTALE */
-MNG_EXT mng_retcode MNG_DECL mng_getlasterror (mng_handle hHandle,
- mng_int8* iSeverity,
- mng_chunkid* iChunkname,
- mng_uint32* iChunkseq,
- mng_int32* iExtra1,
- mng_int32* iExtra2,
- mng_pchar* zErrortext);
-
-/* ************************************************************************** */
-/* * * */
-/* * Callback set functions * */
-/* * * */
-/* ************************************************************************** */
-
-/* memory callbacks */
-/* called to allocate and release internal datastructures */
-#ifndef MNG_INTERNAL_MEMMNGMT
-MNG_EXT mng_retcode MNG_DECL mng_setcb_memalloc (mng_handle hHandle,
- mng_memalloc fProc);
-MNG_EXT mng_retcode MNG_DECL mng_setcb_memfree (mng_handle hHandle,
- mng_memfree fProc);
-#endif /* MNG_INTERNAL_MEMMNGMT */
-
-/* open- & close-stream callbacks */
-/* called to open & close streams for input or output */
-#if defined(MNG_SUPPORT_READ) || defined(MNG_SUPPORT_WRITE)
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
-MNG_EXT mng_retcode MNG_DECL mng_setcb_openstream (mng_handle hHandle,
- mng_openstream fProc);
-MNG_EXT mng_retcode MNG_DECL mng_setcb_closestream (mng_handle hHandle,
- mng_closestream fProc);
-#endif
-#endif
-
-/* read callback */
-/* called to get data from the inputstream */
-#ifdef MNG_SUPPORT_READ
-MNG_EXT mng_retcode MNG_DECL mng_setcb_readdata (mng_handle hHandle,
- mng_readdata fProc);
-#endif
-
-/* write callback */
-/* called to put data into the outputstream */
-#ifdef MNG_SUPPORT_WRITE
-MNG_EXT mng_retcode MNG_DECL mng_setcb_writedata (mng_handle hHandle,
- mng_writedata fProc);
-#endif
-
-/* error callback */
-/* called when an error occurs */
-/* the application can determine if the error is recoverable,
- and may inform the library by setting specific returncodes */
-MNG_EXT mng_retcode MNG_DECL mng_setcb_errorproc (mng_handle hHandle,
- mng_errorproc fProc);
-
-/* trace callback */
-/* called to show the currently executing function */
-#ifdef MNG_SUPPORT_TRACE
-MNG_EXT mng_retcode MNG_DECL mng_setcb_traceproc (mng_handle hHandle,
- mng_traceproc fProc);
-#endif
-
-/* callbacks for read processing */
-/* processheader is called when all header information has been gathered
- from the inputstream */
-/* processtext is called for every tEXt, zTXt and iTXt chunk in the
- inputstream (iType=0 for tEXt, 1 for zTXt and 2 for iTXt);
- you can call get_imagelevel to check at what nesting-level the chunk is
- encountered (eg. tEXt inside an embedded image inside a MNG -> level == 2;
- in most other case -> level == 1) */
-/* processsave & processseek are called for SAVE/SEEK chunks */
-/* processneed is called for the nEED chunk; you should specify a callback
- for this as the default behavior will be to abort processing, unless
- the requirement is one of:
- - a supported chunk
- - the text "draft nn" where nn is a numeric value
- - the text "MNG-1.0" or "MNG-1.1"
- - the text "CACHEOFF" */
-/* processmend is called at the very end of the animation-stream;
- note that this may not be the end of the animation though! */
-/* processterm is called when a TERM chunk is encountered; there can be only
- 1 in the stream (or none) */
-/* processunknown is called after reading each non-critical unknown chunk */
-#ifdef MNG_SUPPORT_READ
-MNG_EXT mng_retcode MNG_DECL mng_setcb_processheader (mng_handle hHandle,
- mng_processheader fProc);
-MNG_EXT mng_retcode MNG_DECL mng_setcb_processtext (mng_handle hHandle,
- mng_processtext fProc);
-MNG_EXT mng_retcode MNG_DECL mng_setcb_processsave (mng_handle hHandle,
- mng_processsave fProc);
-MNG_EXT mng_retcode MNG_DECL mng_setcb_processseek (mng_handle hHandle,
- mng_processseek fProc);
-MNG_EXT mng_retcode MNG_DECL mng_setcb_processneed (mng_handle hHandle,
- mng_processneed fProc);
-MNG_EXT mng_retcode MNG_DECL mng_setcb_processmend (mng_handle hHandle,
- mng_processmend fProc);
-MNG_EXT mng_retcode MNG_DECL mng_setcb_processterm (mng_handle hHandle,
- mng_processterm fProc);
-MNG_EXT mng_retcode MNG_DECL mng_setcb_processunknown(mng_handle hHandle,
- mng_processunknown fProc);
-#endif
-
-/* callbacks for display processing */
-/* getcanvasline is called to get an access-pointer to a line on the
- drawing-canvas */
-/* getbkgdline is called to get an access-pointer to a line from the
- background-canvas */
-/* refresh is called to inform the GUI to redraw the current canvas onto
- its output device (eg. in Win32 this would mean sending an
- invalidate message for the specified region */
-/* NOTE that the update-region is specified as x,y,width,height; eg. the
- invalidate message for Windows requires left,top,right,bottom parameters
- where the bottom-right is exclusive of the region!!
- to get these correctly is as simple as:
- left = x;
- top = y;
- right = x + width;
- bottom = y + height;
- if your implementation requires inclusive points, simply subtract 1 from
- both the right & bottom values calculated above.
- */
-#ifdef MNG_SUPPORT_DISPLAY
-MNG_EXT mng_retcode MNG_DECL mng_setcb_getcanvasline (mng_handle hHandle,
- mng_getcanvasline fProc);
-MNG_EXT mng_retcode MNG_DECL mng_setcb_getbkgdline (mng_handle hHandle,
- mng_getbkgdline fProc);
-MNG_EXT mng_retcode MNG_DECL mng_setcb_getalphaline (mng_handle hHandle,
- mng_getalphaline fProc);
-MNG_EXT mng_retcode MNG_DECL mng_setcb_refresh (mng_handle hHandle,
- mng_refresh fProc);
-
-/* timing callbacks */
-/* gettickcount is called to get the system tickcount (milliseconds);
- this is used to determine the remaining interval between frames */
-/* settimer is called to inform the application that it should set a timer;
- when the timer is triggered the app must call mng_display_resume */
-MNG_EXT mng_retcode MNG_DECL mng_setcb_gettickcount (mng_handle hHandle,
- mng_gettickcount fProc);
-MNG_EXT mng_retcode MNG_DECL mng_setcb_settimer (mng_handle hHandle,
- mng_settimer fProc);
-
-/* color management callbacks */
-/* called to transmit color management information to the application */
-/* these are only used when you #define MNG_APP_CMS */
-#ifdef MNG_APP_CMS
-MNG_EXT mng_retcode MNG_DECL mng_setcb_processgamma (mng_handle hHandle,
- mng_processgamma fProc);
-MNG_EXT mng_retcode MNG_DECL mng_setcb_processchroma (mng_handle hHandle,
- mng_processchroma fProc);
-MNG_EXT mng_retcode MNG_DECL mng_setcb_processsrgb (mng_handle hHandle,
- mng_processsrgb fProc);
-MNG_EXT mng_retcode MNG_DECL mng_setcb_processiccp (mng_handle hHandle,
- mng_processiccp fProc);
-MNG_EXT mng_retcode MNG_DECL mng_setcb_processarow (mng_handle hHandle,
- mng_processarow fProc);
-#endif /* MNG_APP_CMS */
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* release push data callback */
-/* used when the app pushes data into libmng (as opposed to libmng pulling it)
- and relinquishes ownership of the pushed data-buffer, but *does* want to
- release (free) the buffer itself once libmng has finished processing it */
-#ifdef MNG_SUPPORT_READ
-MNG_EXT mng_retcode MNG_DECL mng_setcb_releasedata (mng_handle hHandle,
- mng_releasedata fProc);
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Callback get functions * */
-/* * * */
-/* ************************************************************************** */
-
-/* see _setcb_ */
-#ifndef MNG_INTERNAL_MEMMNGMT
-MNG_EXT mng_memalloc MNG_DECL mng_getcb_memalloc (mng_handle hHandle);
-MNG_EXT mng_memfree MNG_DECL mng_getcb_memfree (mng_handle hHandle);
-#endif
-
-/* see _setcb_ */
-#ifdef MNG_SUPPORT_READ
-MNG_EXT mng_releasedata MNG_DECL mng_getcb_releasedata (mng_handle hHandle);
-#endif
-
-/* see _setcb_ */
-#if defined(MNG_SUPPORT_READ) || defined(MNG_WRITE_SUPPORT)
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
-MNG_EXT mng_openstream MNG_DECL mng_getcb_openstream (mng_handle hHandle);
-MNG_EXT mng_closestream MNG_DECL mng_getcb_closestream (mng_handle hHandle);
-#endif
-#endif
-
-/* see _setcb_ */
-#ifdef MNG_SUPPORT_READ
-MNG_EXT mng_readdata MNG_DECL mng_getcb_readdata (mng_handle hHandle);
-#endif
-
-/* see _setcb_ */
-#ifdef MNG_SUPPORT_WRITE
-MNG_EXT mng_writedata MNG_DECL mng_getcb_writedata (mng_handle hHandle);
-#endif
-
-/* see _setcb_ */
-MNG_EXT mng_errorproc MNG_DECL mng_getcb_errorproc (mng_handle hHandle);
-
-/* see _setcb_ */
-#ifdef MNG_SUPPORT_TRACE
-MNG_EXT mng_traceproc MNG_DECL mng_getcb_traceproc (mng_handle hHandle);
-#endif
-
-/* see _setcb_ */
-#ifdef MNG_SUPPORT_READ
-MNG_EXT mng_processheader MNG_DECL mng_getcb_processheader (mng_handle hHandle);
-MNG_EXT mng_processtext MNG_DECL mng_getcb_processtext (mng_handle hHandle);
-MNG_EXT mng_processsave MNG_DECL mng_getcb_processsave (mng_handle hHandle);
-MNG_EXT mng_processseek MNG_DECL mng_getcb_processseek (mng_handle hHandle);
-MNG_EXT mng_processneed MNG_DECL mng_getcb_processneed (mng_handle hHandle);
-MNG_EXT mng_processunknown MNG_DECL mng_getcb_processunknown (mng_handle hHandle);
-MNG_EXT mng_processterm MNG_DECL mng_getcb_processterm (mng_handle hHandle);
-#endif
-
-/* see _setcb_ */
-#ifdef MNG_SUPPORT_DISPLAY
-MNG_EXT mng_getcanvasline MNG_DECL mng_getcb_getcanvasline (mng_handle hHandle);
-MNG_EXT mng_getbkgdline MNG_DECL mng_getcb_getbkgdline (mng_handle hHandle);
-MNG_EXT mng_getalphaline MNG_DECL mng_getcb_getalphaline (mng_handle hHandle);
-MNG_EXT mng_refresh MNG_DECL mng_getcb_refresh (mng_handle hHandle);
-
-/* see _setcb_ */
-MNG_EXT mng_gettickcount MNG_DECL mng_getcb_gettickcount (mng_handle hHandle);
-MNG_EXT mng_settimer MNG_DECL mng_getcb_settimer (mng_handle hHandle);
-
-/* see _setcb_ */
-#ifdef MNG_APP_CMS
-MNG_EXT mng_processgamma MNG_DECL mng_getcb_processgamma (mng_handle hHandle);
-MNG_EXT mng_processchroma MNG_DECL mng_getcb_processchroma (mng_handle hHandle);
-MNG_EXT mng_processsrgb MNG_DECL mng_getcb_processsrgb (mng_handle hHandle);
-MNG_EXT mng_processiccp MNG_DECL mng_getcb_processiccp (mng_handle hHandle);
-MNG_EXT mng_processarow MNG_DECL mng_getcb_processarow (mng_handle hHandle);
-#endif /* MNG_APP_CMS */
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-/* * * */
-/* * Property set functions * */
-/* * * */
-/* ************************************************************************** */
-
-/* Application data pointer */
-/* provided for application use; not used by the library */
-MNG_EXT mng_retcode MNG_DECL mng_set_userdata (mng_handle hHandle,
- mng_ptr pUserdata);
-
-/* The style of the drawing- & background-canvas */
-/* only used for displaying images */
-/* both are initially set to 24-bit RGB (eg. 8-bit per channel) */
-MNG_EXT mng_retcode MNG_DECL mng_set_canvasstyle (mng_handle hHandle,
- mng_uint32 iStyle);
-MNG_EXT mng_retcode MNG_DECL mng_set_bkgdstyle (mng_handle hHandle,
- mng_uint32 iStyle);
-
-/* The default background color */
-/* only used if the getbkgdline callback is not defined */
-/* for initially painting the canvas and restoring (part of) the background */
-MNG_EXT mng_retcode MNG_DECL mng_set_bgcolor (mng_handle hHandle,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue);
-
-/* Indicates preferred use of the bKGD chunk for PNG images */
-MNG_EXT mng_retcode MNG_DECL mng_set_usebkgd (mng_handle hHandle,
- mng_bool bUseBKGD);
-
-/* Indicates storage of read chunks */
-/* only useful if you #define mng_store_chunks */
-/* can be used to dynamically change storage management */
-MNG_EXT mng_retcode MNG_DECL mng_set_storechunks (mng_handle hHandle,
- mng_bool bStorechunks);
-
-/* Indicates breaks requested when processing SAVE/SEEK */
-/* set this to let the app handle section breaks; the library will return
- MNG_NEEDSECTIONWAIT return-codes for each SEEK chunk */
-MNG_EXT mng_retcode MNG_DECL mng_set_sectionbreaks (mng_handle hHandle,
- mng_bool bSectionbreaks);
-
-/* Indicates storage of playback info (ON by default!) */
-/* can be used to turn off caching of playback info; this is useful to
- specifically optimize MNG-video playback; note that if caching is turned off
- LOOP chunks will be flagged as errors! TERM chunks will be ignored and only
- passed to the processterm() callback if it is defined by the app; also, this
- feature can only be used with mng_readdisplay(); mng_read(),
- mng_display_reset() and mng_display_goxxxx() will return an error;
- once this option is turned off it can't be turned on for the same stream!!! */
-MNG_EXT mng_retcode MNG_DECL mng_set_cacheplayback (mng_handle hHandle,
- mng_bool bCacheplayback);
-
-/* Indicates automatic progressive refreshes for large images (ON by default!) */
-/* turn this off if you do not want intermittent painting while a large image
- is being read. useful if the input-stream comes from a fast medium, such
- as a local harddisk */
-MNG_EXT mng_retcode MNG_DECL mng_set_doprogressive (mng_handle hHandle,
- mng_bool bDoProgressive);
-
-/* Indicates existence and required checking of the CRC in input streams,
- and generation in output streams */
-/* !!!! Use this ONLY if you know what you are doing !!!! */
-/* The value is a combination of the following flags:
- 0x0000001 = CRC is present in the input stream
- 0x0000002 = CRC must be generated in the output stream
- 0x0000010 = CRC should be checked for ancillary chunks
- 0x0000020 = a faulty CRC for ancillary chunks generates a warning only
- 0x0000040 = a faulty CRC for ancillary chunks generates an error
- 0x0000100 = CRC should be checked for critical chunks
- 0x0000200 = a faulty CRC for critical chunks generates a warning only
- 0x0000400 = a faulty CRC for critical chunks generates an error
-
- The default is 0x00000533 = CRC present in input streams; should be checked;
- warning for ancillary chunks; error for critical
- chunks; generate CRC for output streams
-
- Note that some combinations are meaningless; eg. if the CRC is not present
- it won't do any good to turn the checking flags on; if a checking flag
- is off, it doesn't do any good to ask for generation of warnings or errors.
- Also libmng will generate either an error or a warning, not both,
- so if you specify both the default will be to generate an error!
- The only useful combinations for input are 331, 551, 351, 531, 0, 301, 501
- and optionally 031 and 051, but only checking ancillary chunks and not
- critical chunks is generally not a very good idea!!!
- If you've also writing these values should be combined with 0x02 if
- CRC's are required in the output stream
- */
-MNG_EXT mng_retcode MNG_DECL mng_set_crcmode (mng_handle hHandle,
- mng_uint32 iCrcmode);
-
-/* Color-management necessaries */
-/*
- *************************************************************************
- !!!!!!!! THIS NEXT BIT IS IMPORTANT !!!!!!!!!
- *************************************************************************
-
- If you have defined MNG_FULL_CMS (and are using lcms), you will have to
- think hard about the following routines.
-
- lcms requires 2 profiles to work off the differences in the input-image
- and the output-device. The ICC profile for the input-image will be
- embedded within it to reflect its color-characteristics, but the output
- profile depends on the output-device, which is something only *YOU* know
- about. sRGB (standard RGB) is common for x86 compatible environments
- (eg. Windows, Linux and some others)
-
- If you are compiling for a sRGB compliant system you probably won't have
- to do anything special. (unless you want to of course)
-
- If you are compiling for a non-sRGB compliant system
- (eg. SGI, Mac, Next, others...)
- you *MUST* define a proper ICC profile for the generic output-device
- associated with that platform.
-
- In either event, you may also want to offer an option to your users to
- set the profile manually, or, if you know how, set it from a
- system-defined default.
-
- TO RECAP: for sRGB systems (Windows, Linux) no action required!
- for non-sRGB systems (SGI, Mac, Next) ACTION REQUIRED!
-
- Please visit http://www.srgb.com, http://www.color.org and
- http://www.littlecms.com for more info.
-
- *************************************************************************
- !!!!!!!! THE BIT ABOVE IS IMPORTANT !!!!!!!!!
- *************************************************************************
-*/
-/* mng_set_srgb tells libmng if it's running on a sRGB compliant system or not
- the default is already set to MNG_TRUE */
-/* mng_set_outputprofile, mng_set_outputprofile2, mng_set_outputsrgb
- are used to set the default profile describing the output-device
- by default it is already initialized with an sRGB profile */
-/* mng_set_srgbprofile, mng_set_srgbprofile2, mng_set_srgbimplicit
- are used to set the default profile describing a standard sRGB device
- this is used when the input-image is tagged only as being sRGB, but the
- output-device is defined as not being sRGB compliant
- by default it is already initialized with a standard sRGB profile */
-#if defined(MNG_SUPPORT_DISPLAY)
-MNG_EXT mng_retcode MNG_DECL mng_set_srgb (mng_handle hHandle,
- mng_bool bIssRGB);
-MNG_EXT mng_retcode MNG_DECL mng_set_outputprofile (mng_handle hHandle,
- mng_pchar zFilename);
-MNG_EXT mng_retcode MNG_DECL mng_set_outputprofile2 (mng_handle hHandle,
- mng_uint32 iProfilesize,
- mng_ptr pProfile);
-MNG_EXT mng_retcode MNG_DECL mng_set_outputsrgb (mng_handle hHandle);
-MNG_EXT mng_retcode MNG_DECL mng_set_srgbprofile (mng_handle hHandle,
- mng_pchar zFilename);
-MNG_EXT mng_retcode MNG_DECL mng_set_srgbprofile2 (mng_handle hHandle,
- mng_uint32 iProfilesize,
- mng_ptr pProfile);
-MNG_EXT mng_retcode MNG_DECL mng_set_srgbimplicit (mng_handle hHandle);
-#endif
-
-#if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
-/* Gamma settings */
-/* ... blabla (explain gamma processing a little; eg. formula & stuff) ... */
-MNG_EXT mng_retcode MNG_DECL mng_set_viewgamma (mng_handle hHandle,
- mng_float dGamma);
-MNG_EXT mng_retcode MNG_DECL mng_set_displaygamma (mng_handle hHandle,
- mng_float dGamma);
-MNG_EXT mng_retcode MNG_DECL mng_set_dfltimggamma (mng_handle hHandle,
- mng_float dGamma);
-MNG_EXT mng_retcode MNG_DECL mng_set_viewgammaint (mng_handle hHandle,
- mng_uint32 iGamma);
-MNG_EXT mng_retcode MNG_DECL mng_set_displaygammaint (mng_handle hHandle,
- mng_uint32 iGamma);
-MNG_EXT mng_retcode MNG_DECL mng_set_dfltimggammaint (mng_handle hHandle,
- mng_uint32 iGamma);
-#endif
-
-#ifndef MNG_SKIP_MAXCANVAS
-/* Ultimate clipping size */
-/* used to limit extreme graphics from overloading the system */
-/* if a graphic exceeds these limits a warning is issued, which can
- be ignored by the app (using the errorproc callback). in that case
- the library will use these settings to clip the input graphic, and
- the app's canvas must account for this */
-MNG_EXT mng_retcode MNG_DECL mng_set_maxcanvaswidth (mng_handle hHandle,
- mng_uint32 iMaxwidth);
-MNG_EXT mng_retcode MNG_DECL mng_set_maxcanvasheight (mng_handle hHandle,
- mng_uint32 iMaxheight);
-MNG_EXT mng_retcode MNG_DECL mng_set_maxcanvassize (mng_handle hHandle,
- mng_uint32 iMaxwidth,
- mng_uint32 iMaxheight);
-#endif
-
-/* ZLIB default compression parameters */
-/* these are used when writing out chunks */
-/* they are also used when compressing PNG image-data or JNG alpha-data;
- in this case you can set them just before calling mng_putimgdata_ihdr */
-/* set to your liking; usually the defaults will suffice though! */
-/* check the documentation for ZLIB for details on these parameters */
-#ifdef MNG_INCLUDE_ZLIB
-MNG_EXT mng_retcode MNG_DECL mng_set_zlib_level (mng_handle hHandle,
- mng_int32 iZlevel);
-MNG_EXT mng_retcode MNG_DECL mng_set_zlib_method (mng_handle hHandle,
- mng_int32 iZmethod);
-MNG_EXT mng_retcode MNG_DECL mng_set_zlib_windowbits (mng_handle hHandle,
- mng_int32 iZwindowbits);
-MNG_EXT mng_retcode MNG_DECL mng_set_zlib_memlevel (mng_handle hHandle,
- mng_int32 iZmemlevel);
-MNG_EXT mng_retcode MNG_DECL mng_set_zlib_strategy (mng_handle hHandle,
- mng_int32 iZstrategy);
-
-MNG_EXT mng_retcode MNG_DECL mng_set_zlib_maxidat (mng_handle hHandle,
- mng_uint32 iMaxIDAT);
-#endif /* MNG_INCLUDE_ZLIB */
-
-/* JNG default compression parameters (based on IJG code) */
-/* these are used when compressing JNG image-data; so you can set them
- just before calling mng_putimgdata_jhdr */
-/* set to your liking; usually the defaults will suffice though! */
-/* check the documentation for IJGSRC6B for details on these parameters */
-#ifdef MNG_INCLUDE_JNG
-#ifdef MNG_INCLUDE_IJG6B
-MNG_EXT mng_retcode MNG_DECL mng_set_jpeg_dctmethod (mng_handle hHandle,
- mngjpeg_dctmethod eJPEGdctmethod);
-#endif
-MNG_EXT mng_retcode MNG_DECL mng_set_jpeg_quality (mng_handle hHandle,
- mng_int32 iJPEGquality);
-MNG_EXT mng_retcode MNG_DECL mng_set_jpeg_smoothing (mng_handle hHandle,
- mng_int32 iJPEGsmoothing);
-MNG_EXT mng_retcode MNG_DECL mng_set_jpeg_progressive(mng_handle hHandle,
- mng_bool bJPEGprogressive);
-MNG_EXT mng_retcode MNG_DECL mng_set_jpeg_optimized (mng_handle hHandle,
- mng_bool bJPEGoptimized);
-
-MNG_EXT mng_retcode MNG_DECL mng_set_jpeg_maxjdat (mng_handle hHandle,
- mng_uint32 iMaxJDAT);
-#endif /* MNG_INCLUDE_JNG */
-
-/* Suspension-mode setting */
-/* use this to activate the internal suspension-buffer to improve
- read-suspension processing */
-/* TODO: write-suspension ??? */
-#if defined(MNG_SUPPORT_READ)
-MNG_EXT mng_retcode MNG_DECL mng_set_suspensionmode (mng_handle hHandle,
- mng_bool bSuspensionmode);
-#endif
-
-/* Speed setting */
-/* use this to influence the display-speed of animations */
-#if defined(MNG_SUPPORT_DISPLAY)
-MNG_EXT mng_retcode MNG_DECL mng_set_speed (mng_handle hHandle,
- mng_speedtype iSpeed);
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Property get functions * */
-/* * * */
-/* ************************************************************************** */
-
-/* see _set_ */
-MNG_EXT mng_ptr MNG_DECL mng_get_userdata (mng_handle hHandle);
-
-/* Network Graphic header details */
-/* these get filled once the graphics header is processed,
- so they are available in the processheader callback; before that
- they are zeroed out and imagetype is set to it_unknown */
-/* this might be a good point for the app to initialize the drawing-canvas! */
-/* note that some fields are only set for the first(!) header-chunk:
- MNG/MHDR (imagetype = mng_it_mng) - ticks thru simplicity
- PNG/IHDR (imagetype = mng_it_png) - bitdepth thru interlace
- JNG/JHDR (imagetype = mng_it_jng) - bitdepth thru compression &
- interlace thru alphainterlace */
-MNG_EXT mng_imgtype MNG_DECL mng_get_sigtype (mng_handle hHandle);
-MNG_EXT mng_imgtype MNG_DECL mng_get_imagetype (mng_handle hHandle);
-MNG_EXT mng_uint32 MNG_DECL mng_get_imagewidth (mng_handle hHandle);
-MNG_EXT mng_uint32 MNG_DECL mng_get_imageheight (mng_handle hHandle);
-
-MNG_EXT mng_uint32 MNG_DECL mng_get_ticks (mng_handle hHandle);
-MNG_EXT mng_uint32 MNG_DECL mng_get_framecount (mng_handle hHandle);
-MNG_EXT mng_uint32 MNG_DECL mng_get_layercount (mng_handle hHandle);
-MNG_EXT mng_uint32 MNG_DECL mng_get_playtime (mng_handle hHandle);
-MNG_EXT mng_uint32 MNG_DECL mng_get_simplicity (mng_handle hHandle);
-
-MNG_EXT mng_uint8 MNG_DECL mng_get_bitdepth (mng_handle hHandle);
-MNG_EXT mng_uint8 MNG_DECL mng_get_colortype (mng_handle hHandle);
-MNG_EXT mng_uint8 MNG_DECL mng_get_compression (mng_handle hHandle);
-MNG_EXT mng_uint8 MNG_DECL mng_get_filter (mng_handle hHandle);
-MNG_EXT mng_uint8 MNG_DECL mng_get_interlace (mng_handle hHandle);
-MNG_EXT mng_uint8 MNG_DECL mng_get_alphabitdepth (mng_handle hHandle);
-MNG_EXT mng_uint8 MNG_DECL mng_get_alphacompression(mng_handle hHandle);
-MNG_EXT mng_uint8 MNG_DECL mng_get_alphafilter (mng_handle hHandle);
-MNG_EXT mng_uint8 MNG_DECL mng_get_alphainterlace (mng_handle hHandle);
-
-/* indicates the predicted alpha-depth required to properly display the image */
-/* gets set once the graphics header is processed and is available in the
- processheader callback for any type of input-image (PNG, JNG or MNG) */
-/* possible values are 0,1,2,4,8,16
- 0 = no transparency required
- 1 = on/off transparency required (alpha-values are 0 or 2^bit_depth-1)
- 2+ = semi-transparency required (values will be scaled to the bitdepth of the
- canvasstyle supplied by the application) */
-MNG_EXT mng_uint8 MNG_DECL mng_get_alphadepth (mng_handle hHandle);
-
-/* defines whether a refresh() callback is called for an interlace pass (PNG)
- or progressive scan (JNG) */
-/* returns the interlace pass number for PNG or a fabricated pass number for JNG;
- returns 0 in all other cases */
-/* only useful if the image_type = mng_it_png or mng_it_jng and if the image
- is actually interlaced (PNG) or progressive (JNG) */
-#ifdef MNG_SUPPORT_DISPLAY
-MNG_EXT mng_uint8 MNG_DECL mng_get_refreshpass (mng_handle hHandle);
-#endif
-
-/* see _set_ */
-MNG_EXT mng_uint32 MNG_DECL mng_get_canvasstyle (mng_handle hHandle);
-MNG_EXT mng_uint32 MNG_DECL mng_get_bkgdstyle (mng_handle hHandle);
-
-/* see _set_ */
-MNG_EXT mng_retcode MNG_DECL mng_get_bgcolor (mng_handle hHandle,
- mng_uint16* iRed,
- mng_uint16* iGreen,
- mng_uint16* iBlue);
-
-/* see _set_ */
-MNG_EXT mng_bool MNG_DECL mng_get_usebkgd (mng_handle hHandle);
-
-/* see _set_ */
-MNG_EXT mng_bool MNG_DECL mng_get_storechunks (mng_handle hHandle);
-
-/* see _set_ */
-MNG_EXT mng_bool MNG_DECL mng_get_sectionbreaks (mng_handle hHandle);
-
-/* see _set_ */
-MNG_EXT mng_bool MNG_DECL mng_get_cacheplayback (mng_handle hHandle);
-
-/* see _set_ */
-MNG_EXT mng_bool MNG_DECL mng_get_doprogressive (mng_handle hHandle);
-
-/* see _set_ */
-MNG_EXT mng_uint32 MNG_DECL mng_get_crcmode (mng_handle hHandle);
-
-/* see _set_ */
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_FULL_CMS)
-MNG_EXT mng_bool MNG_DECL mng_get_srgb (mng_handle hHandle);
-#endif
-
-/* see _set_ */
-MNG_EXT mng_float MNG_DECL mng_get_viewgamma (mng_handle hHandle);
-MNG_EXT mng_float MNG_DECL mng_get_displaygamma (mng_handle hHandle);
-MNG_EXT mng_float MNG_DECL mng_get_dfltimggamma (mng_handle hHandle);
-MNG_EXT mng_uint32 MNG_DECL mng_get_viewgammaint (mng_handle hHandle);
-MNG_EXT mng_uint32 MNG_DECL mng_get_displaygammaint (mng_handle hHandle);
-MNG_EXT mng_uint32 MNG_DECL mng_get_dfltimggammaint (mng_handle hHandle);
-
-#ifndef MNG_SKIP_MAXCANVAS
-/* see _set_ */
-MNG_EXT mng_uint32 MNG_DECL mng_get_maxcanvaswidth (mng_handle hHandle);
-MNG_EXT mng_uint32 MNG_DECL mng_get_maxcanvasheight (mng_handle hHandle);
-#endif
-
-/* see _set_ */
-#ifdef MNG_INCLUDE_ZLIB
-MNG_EXT mng_int32 MNG_DECL mng_get_zlib_level (mng_handle hHandle);
-MNG_EXT mng_int32 MNG_DECL mng_get_zlib_method (mng_handle hHandle);
-MNG_EXT mng_int32 MNG_DECL mng_get_zlib_windowbits (mng_handle hHandle);
-MNG_EXT mng_int32 MNG_DECL mng_get_zlib_memlevel (mng_handle hHandle);
-MNG_EXT mng_int32 MNG_DECL mng_get_zlib_strategy (mng_handle hHandle);
-
-MNG_EXT mng_uint32 MNG_DECL mng_get_zlib_maxidat (mng_handle hHandle);
-#endif /* MNG_INCLUDE_ZLIB */
-
-/* see _set_ */
-#ifdef MNG_INCLUDE_JNG
-#ifdef MNG_INCLUDE_IJG6B
-MNG_EXT mngjpeg_dctmethod
- MNG_DECL mng_get_jpeg_dctmethod (mng_handle hHandle);
-#endif
-MNG_EXT mng_int32 MNG_DECL mng_get_jpeg_quality (mng_handle hHandle);
-MNG_EXT mng_int32 MNG_DECL mng_get_jpeg_smoothing (mng_handle hHandle);
-MNG_EXT mng_bool MNG_DECL mng_get_jpeg_progressive(mng_handle hHandle);
-MNG_EXT mng_bool MNG_DECL mng_get_jpeg_optimized (mng_handle hHandle);
-
-MNG_EXT mng_uint32 MNG_DECL mng_get_jpeg_maxjdat (mng_handle hHandle);
-#endif /* MNG_INCLUDE_JNG */
-
-/* see _set_ */
-#if defined(MNG_SUPPORT_READ)
-MNG_EXT mng_bool MNG_DECL mng_get_suspensionmode (mng_handle hHandle);
-#endif
-
-/* see _set_ */
-#if defined(MNG_SUPPORT_DISPLAY)
-MNG_EXT mng_speedtype
- MNG_DECL mng_get_speed (mng_handle hHandle);
-#endif
-
-/* Image-level */
-/* this can be used inside the processtext callback to determine the level of
- text of the image being processed; the value 1 is returned for top-level
- texts, and the value 2 for a text inside an embedded image inside a MNG */
-MNG_EXT mng_uint32 MNG_DECL mng_get_imagelevel (mng_handle hHandle);
-
-/* BACK info */
-/* can be used to retrieve the color & mandatory values for the last processed
- BACK chunk of a MNG (will fail for other image-types);
- if no BACK chunk was processed yet, it will return all zeroes */
-#ifdef MNG_SUPPORT_DISPLAY
-MNG_EXT mng_retcode MNG_DECL mng_get_lastbackchunk (mng_handle hHandle,
- mng_uint16* iRed,
- mng_uint16* iGreen,
- mng_uint16* iBlue,
- mng_uint8* iMandatory);
-#endif
-
-/* SEEK info */
-/* can be used to retrieve the segmentname of the last processed SEEK chunk;
- if no SEEK chunk was processed or its segmentname was empty, the function
- will return an empty string; the provided buffer must be at least 80 bytes!! */
-#ifdef MNG_SUPPORT_DISPLAY
-MNG_EXT mng_retcode MNG_DECL mng_get_lastseekname (mng_handle hHandle,
- mng_pchar zSegmentname);
-#endif
-
-/* FRAM info */
-/* can be used to retrieve the current FRAM delay; this may be useful when
- retrieving a stream of frames with their corresponding delays by "fake"
- reading and displaying the file */
-#ifdef MNG_SUPPORT_DISPLAY
-MNG_EXT mng_uint32 MNG_DECL mng_get_currframdelay (mng_handle hHandle);
-#endif
-
-/* Display status variables */
-/* these get filled & updated during display processing */
-/* starttime is the tickcount at the start of displaying the animation */
-/* runtime is the actual number of millisecs since the start of the animation */
-/* currentframe, currentlayer & currentplaytime indicate the current
- frame/layer/playtime(msecs) in the animation (these keep increasing;
- even after the animation loops back to the TERM chunk) */
-/* totalframes, totallayers & totalplaytime are filled after a complete run
- of an animation (eg. at MEND); they are also valid after just reading the MNG */
-#ifdef MNG_SUPPORT_DISPLAY
-MNG_EXT mng_uint32 MNG_DECL mng_get_starttime (mng_handle hHandle);
-MNG_EXT mng_uint32 MNG_DECL mng_get_runtime (mng_handle hHandle);
-#ifndef MNG_NO_CURRENT_INFO
-MNG_EXT mng_uint32 MNG_DECL mng_get_currentframe (mng_handle hHandle);
-MNG_EXT mng_uint32 MNG_DECL mng_get_currentlayer (mng_handle hHandle);
-MNG_EXT mng_uint32 MNG_DECL mng_get_currentplaytime (mng_handle hHandle);
-MNG_EXT mng_uint32 MNG_DECL mng_get_totalframes (mng_handle hHandle);
-MNG_EXT mng_uint32 MNG_DECL mng_get_totallayers (mng_handle hHandle);
-MNG_EXT mng_uint32 MNG_DECL mng_get_totalplaytime (mng_handle hHandle);
-#endif
-#endif
-
-/* Status variables */
-/* these indicate the internal state of the library */
-/* most indicate exactly what you would expect -
- status_error: true if the last function call returned an errorcode
- status_reading: true if the library is (still) reading an image
- status_suspendbreak: true if the library has suspended for "I/O"
- status_creating: true if the library is in the middle of creating an image
- status_writing: true if the library is in the middle of writing an image
- status_displaying: true if the library is displaying an image
- status_running: true if display processing is active (eg. not frozen or reset)
- status_timerbreak: true if the library has suspended for a "timer-break"
- status_dynamic: true if the library encountered an evNT chunk in the MNG
- status_runningevent: true if the library is processing an external event */
-/* eg. mng_readdisplay() will turn the reading, displaying and running status on;
- when EOF is reached the reading status will be turned off */
-MNG_EXT mng_bool MNG_DECL mng_status_error (mng_handle hHandle);
-#ifdef MNG_SUPPORT_READ
-MNG_EXT mng_bool MNG_DECL mng_status_reading (mng_handle hHandle);
-MNG_EXT mng_bool MNG_DECL mng_status_suspendbreak (mng_handle hHandle);
-#endif
-#ifdef MNG_SUPPORT_WRITE
-MNG_EXT mng_bool MNG_DECL mng_status_creating (mng_handle hHandle);
-MNG_EXT mng_bool MNG_DECL mng_status_writing (mng_handle hHandle);
-#endif
-#ifdef MNG_SUPPORT_DISPLAY
-MNG_EXT mng_bool MNG_DECL mng_status_displaying (mng_handle hHandle);
-MNG_EXT mng_bool MNG_DECL mng_status_running (mng_handle hHandle);
-MNG_EXT mng_bool MNG_DECL mng_status_timerbreak (mng_handle hHandle);
-#endif
-#ifdef MNG_SUPPORT_DYNAMICMNG
-MNG_EXT mng_bool MNG_DECL mng_status_dynamic (mng_handle hHandle);
-MNG_EXT mng_bool MNG_DECL mng_status_runningevent (mng_handle hHandle);
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Chunk access functions * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_ACCESS_CHUNKS
-
-/* ************************************************************************** */
-
-/* use this to iterate the stored chunks */
-/* requires MNG_ACCESS_CHUNKS & MNG_STORE_CHUNKS */
-/* starts from the supplied chunk-index-nr; the first chunk has index 0!! */
-MNG_EXT mng_retcode MNG_DECL mng_iterate_chunks (mng_handle hHandle,
- mng_uint32 iChunkseq,
- mng_iteratechunk fProc);
-
-/* use the next function inside your 'iteratechunk' callback to copy
- the given chunk to a new mng you are creating */
-/* the 'out' handle should be in 'create' status! */
-#ifdef MNG_SUPPORT_WRITE
-MNG_EXT mng_retcode MNG_DECL mng_copy_chunk (mng_handle hHandle,
- mng_handle hChunk,
- mng_handle hHandleOut);
-#endif
-
-/* ************************************************************************** */
-
-/* use these to get chunk data from within the callback in iterate_chunks */
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_ihdr (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iWidth,
- mng_uint32 *iHeight,
- mng_uint8 *iBitdepth,
- mng_uint8 *iColortype,
- mng_uint8 *iCompression,
- mng_uint8 *iFilter,
- mng_uint8 *iInterlace);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_plte (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iCount,
- mng_palette8 *aPalette);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_idat (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iRawlen,
- mng_ptr *pRawdata);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_trns (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_bool *bGlobal,
- mng_uint8 *iType,
- mng_uint32 *iCount,
- mng_uint8arr *aAlphas,
- mng_uint16 *iGray,
- mng_uint16 *iRed,
- mng_uint16 *iGreen,
- mng_uint16 *iBlue,
- mng_uint32 *iRawlen,
- mng_uint8arr *aRawdata);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_gama (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint32 *iGamma);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_chrm (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint32 *iWhitepointx,
- mng_uint32 *iWhitepointy,
- mng_uint32 *iRedx,
- mng_uint32 *iRedy,
- mng_uint32 *iGreenx,
- mng_uint32 *iGreeny,
- mng_uint32 *iBluex,
- mng_uint32 *iBluey);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_srgb (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint8 *iRenderingintent);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_iccp (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint32 *iNamesize,
- mng_pchar *zName,
- mng_uint8 *iCompression,
- mng_uint32 *iProfilesize,
- mng_ptr *pProfile);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_text (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iKeywordsize,
- mng_pchar *zKeyword,
- mng_uint32 *iTextsize,
- mng_pchar *zText);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_ztxt (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iKeywordsize,
- mng_pchar *zKeyword,
- mng_uint8 *iCompression,
- mng_uint32 *iTextsize,
- mng_pchar *zText);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_itxt (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iKeywordsize,
- mng_pchar *zKeyword,
- mng_uint8 *iCompressionflag,
- mng_uint8 *iCompressionmethod,
- mng_uint32 *iLanguagesize,
- mng_pchar *zLanguage,
- mng_uint32 *iTranslationsize,
- mng_pchar *zTranslation,
- mng_uint32 *iTextsize,
- mng_pchar *zText);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_bkgd (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint8 *iType,
- mng_uint8 *iIndex,
- mng_uint16 *iGray,
- mng_uint16 *iRed,
- mng_uint16 *iGreen,
- mng_uint16 *iBlue);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_phys (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint32 *iSizex,
- mng_uint32 *iSizey,
- mng_uint8 *iUnit);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_sbit (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint8 *iType,
- mng_uint8arr4 *aBits);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_splt (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint32 *iNamesize,
- mng_pchar *zName,
- mng_uint8 *iSampledepth,
- mng_uint32 *iEntrycount,
- mng_ptr *pEntries);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_hist (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iEntrycount,
- mng_uint16arr *aEntries);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_time (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iYear,
- mng_uint8 *iMonth,
- mng_uint8 *iDay,
- mng_uint8 *iHour,
- mng_uint8 *iMinute,
- mng_uint8 *iSecond);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_mhdr (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iWidth,
- mng_uint32 *iHeight,
- mng_uint32 *iTicks,
- mng_uint32 *iLayercount,
- mng_uint32 *iFramecount,
- mng_uint32 *iPlaytime,
- mng_uint32 *iSimplicity);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_loop (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint8 *iLevel,
- mng_uint32 *iRepeat,
- mng_uint8 *iTermination,
- mng_uint32 *iItermin,
- mng_uint32 *iItermax,
- mng_uint32 *iCount,
- mng_uint32p *pSignals);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_endl (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint8 *iLevel);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_defi (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iObjectid,
- mng_uint8 *iDonotshow,
- mng_uint8 *iConcrete,
- mng_bool *bHasloca,
- mng_int32 *iXlocation,
- mng_int32 *iYlocation,
- mng_bool *bHasclip,
- mng_int32 *iLeftcb,
- mng_int32 *iRightcb,
- mng_int32 *iTopcb,
- mng_int32 *iBottomcb);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_basi (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iWidth,
- mng_uint32 *iHeight,
- mng_uint8 *iBitdepth,
- mng_uint8 *iColortype,
- mng_uint8 *iCompression,
- mng_uint8 *iFilter,
- mng_uint8 *iInterlace,
- mng_uint16 *iRed,
- mng_uint16 *iGreen,
- mng_uint16 *iBlue,
- mng_uint16 *iAlpha,
- mng_uint8 *iViewable);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_clon (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iSourceid,
- mng_uint16 *iCloneid,
- mng_uint8 *iClonetype,
- mng_uint8 *iDonotshow,
- mng_uint8 *iConcrete,
- mng_bool *bHasloca,
- mng_uint8 *iLocationtype,
- mng_int32 *iLocationx,
- mng_int32 *iLocationy);
-
-#ifndef MNG_SKIPCHUNK_PAST
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_past (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iDestid,
- mng_uint8 *iTargettype,
- mng_int32 *iTargetx,
- mng_int32 *iTargety,
- mng_uint32 *iCount);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_past_src (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 iEntry,
- mng_uint16 *iSourceid,
- mng_uint8 *iComposition,
- mng_uint8 *iOrientation,
- mng_uint8 *iOffsettype,
- mng_int32 *iOffsetx,
- mng_int32 *iOffsety,
- mng_uint8 *iBoundarytype,
- mng_int32 *iBoundaryl,
- mng_int32 *iBoundaryr,
- mng_int32 *iBoundaryt,
- mng_int32 *iBoundaryb);
-#endif
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_disc (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iCount,
- mng_uint16p *pObjectids);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_back (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iRed,
- mng_uint16 *iGreen,
- mng_uint16 *iBlue,
- mng_uint8 *iMandatory,
- mng_uint16 *iImageid,
- mng_uint8 *iTile);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_fram (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint8 *iMode,
- mng_uint32 *iNamesize,
- mng_pchar *zName,
- mng_uint8 *iChangedelay,
- mng_uint8 *iChangetimeout,
- mng_uint8 *iChangeclipping,
- mng_uint8 *iChangesyncid,
- mng_uint32 *iDelay,
- mng_uint32 *iTimeout,
- mng_uint8 *iBoundarytype,
- mng_int32 *iBoundaryl,
- mng_int32 *iBoundaryr,
- mng_int32 *iBoundaryt,
- mng_int32 *iBoundaryb,
- mng_uint32 *iCount,
- mng_uint32p *pSyncids);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_move (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iFirstid,
- mng_uint16 *iLastid,
- mng_uint8 *iMovetype,
- mng_int32 *iMovex,
- mng_int32 *iMovey);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_clip (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iFirstid,
- mng_uint16 *iLastid,
- mng_uint8 *iCliptype,
- mng_int32 *iClipl,
- mng_int32 *iClipr,
- mng_int32 *iClipt,
- mng_int32 *iClipb);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_show (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint16 *iFirstid,
- mng_uint16 *iLastid,
- mng_uint8 *iMode);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_term (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint8 *iTermaction,
- mng_uint8 *iIteraction,
- mng_uint32 *iDelay,
- mng_uint32 *iItermax);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_save (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint8 *iOffsettype,
- mng_uint32 *iCount);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_save_entry (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 iEntry,
- mng_uint8 *iEntrytype,
- mng_uint32arr2 *iOffset,
- mng_uint32arr2 *iStarttime,
- mng_uint32 *iLayernr,
- mng_uint32 *iFramenr,
- mng_uint32 *iNamesize,
- mng_pchar *zName);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_seek (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iNamesize,
- mng_pchar *zName);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_expi (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iSnapshotid,
- mng_uint32 *iNamesize,
- mng_pchar *zName);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_fpri (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint8 *iDeltatype,
- mng_uint8 *iPriority);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_need (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iKeywordssize,
- mng_pchar *zKeywords);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_phyg (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint32 *iSizex,
- mng_uint32 *iSizey,
- mng_uint8 *iUnit);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_jhdr (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iWidth,
- mng_uint32 *iHeight,
- mng_uint8 *iColortype,
- mng_uint8 *iImagesampledepth,
- mng_uint8 *iImagecompression,
- mng_uint8 *iImageinterlace,
- mng_uint8 *iAlphasampledepth,
- mng_uint8 *iAlphacompression,
- mng_uint8 *iAlphafilter,
- mng_uint8 *iAlphainterlace);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_jdat (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iRawlen,
- mng_ptr *pRawdata);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_jdaa (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iRawlen,
- mng_ptr *pRawdata);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_dhdr (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iObjectid,
- mng_uint8 *iImagetype,
- mng_uint8 *iDeltatype,
- mng_uint32 *iBlockwidth,
- mng_uint32 *iBlockheight,
- mng_uint32 *iBlockx,
- mng_uint32 *iBlocky);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_prom (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint8 *iColortype,
- mng_uint8 *iSampledepth,
- mng_uint8 *iFilltype);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_pplt (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint8 *iDeltatype,
- mng_uint32 *iCount);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_pplt_entry (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 iEntry,
- mng_uint16 *iRed,
- mng_uint16 *iGreen,
- mng_uint16 *iBlue,
- mng_uint16 *iAlpha,
- mng_bool *bUsed);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_drop (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iCount,
- mng_chunkidp *pChunknames);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_dbyk (mng_handle hHandle,
- mng_handle hChunk,
- mng_chunkid *iChunkname,
- mng_uint8 *iPolarity,
- mng_uint32 *iKeywordssize,
- mng_pchar *zKeywords);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_ordr (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iCount);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_ordr_entry (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 iEntry,
- mng_chunkid *iChunkname,
- mng_uint8 *iOrdertype);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_magn (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iFirstid,
- mng_uint16 *iLastid,
- mng_uint16 *iMethodX,
- mng_uint16 *iMX,
- mng_uint16 *iMY,
- mng_uint16 *iML,
- mng_uint16 *iMR,
- mng_uint16 *iMT,
- mng_uint16 *iMB,
- mng_uint16 *iMethodY);
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_mpng (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iFramewidth,
- mng_uint32 *iFrameheight,
- mng_uint16 *iNumplays,
- mng_uint16 *iTickspersec,
- mng_uint8 *iCompressionmethod,
- mng_uint32 *iCount);
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_mpng_frame (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 iEntry,
- mng_uint32 *iX,
- mng_uint32 *iY,
- mng_uint32 *iWidth,
- mng_uint32 *iHeight,
- mng_int32 *iXoffset,
- mng_int32 *iYoffset,
- mng_uint16 *iTicks);
-#endif
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_evnt (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iCount);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_evnt_entry (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 iEntry,
- mng_uint8 *iEventtype,
- mng_uint8 *iMasktype,
- mng_int32 *iLeft,
- mng_int32 *iRight,
- mng_int32 *iTop,
- mng_int32 *iBottom,
- mng_uint16 *iObjectid,
- mng_uint8 *iIndex,
- mng_uint32 *iSegmentnamesize,
- mng_pchar *zSegmentname);
-
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_unknown (mng_handle hHandle,
- mng_handle hChunk,
- mng_chunkid *iChunkname,
- mng_uint32 *iRawlen,
- mng_ptr *pRawdata);
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_WRITE_PROCS
-
-/* use these to create new chunks at the end of the chunk-list */
-/* requires at least MNG_ACCESS_CHUNKS (MNG_SUPPORT_WRITE may be nice too) */
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_ihdr (mng_handle hHandle,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_uint8 iBitdepth,
- mng_uint8 iColortype,
- mng_uint8 iCompression,
- mng_uint8 iFilter,
- mng_uint8 iInterlace);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_plte (mng_handle hHandle,
- mng_uint32 iCount,
- mng_palette8 aPalette);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_idat (mng_handle hHandle,
- mng_uint32 iRawlen,
- mng_ptr pRawdata);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_iend (mng_handle hHandle);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_trns (mng_handle hHandle,
- mng_bool bEmpty,
- mng_bool bGlobal,
- mng_uint8 iType,
- mng_uint32 iCount,
- mng_uint8arr aAlphas,
- mng_uint16 iGray,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue,
- mng_uint32 iRawlen,
- mng_uint8arr aRawdata);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_gama (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint32 iGamma);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_chrm (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint32 iWhitepointx,
- mng_uint32 iWhitepointy,
- mng_uint32 iRedx,
- mng_uint32 iRedy,
- mng_uint32 iGreenx,
- mng_uint32 iGreeny,
- mng_uint32 iBluex,
- mng_uint32 iBluey);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_srgb (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint8 iRenderingintent);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_iccp (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint32 iNamesize,
- mng_pchar zName,
- mng_uint8 iCompression,
- mng_uint32 iProfilesize,
- mng_ptr pProfile);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_text (mng_handle hHandle,
- mng_uint32 iKeywordsize,
- mng_pchar zKeyword,
- mng_uint32 iTextsize,
- mng_pchar zText);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_ztxt (mng_handle hHandle,
- mng_uint32 iKeywordsize,
- mng_pchar zKeyword,
- mng_uint8 iCompression,
- mng_uint32 iTextsize,
- mng_pchar zText);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_itxt (mng_handle hHandle,
- mng_uint32 iKeywordsize,
- mng_pchar zKeyword,
- mng_uint8 iCompressionflag,
- mng_uint8 iCompressionmethod,
- mng_uint32 iLanguagesize,
- mng_pchar zLanguage,
- mng_uint32 iTranslationsize,
- mng_pchar zTranslation,
- mng_uint32 iTextsize,
- mng_pchar zText);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_bkgd (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint8 iType,
- mng_uint8 iIndex,
- mng_uint16 iGray,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_phys (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint32 iSizex,
- mng_uint32 iSizey,
- mng_uint8 iUnit);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_sbit (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint8 iType,
- mng_uint8arr4 aBits);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_splt (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint32 iNamesize,
- mng_pchar zName,
- mng_uint8 iSampledepth,
- mng_uint32 iEntrycount,
- mng_ptr pEntries);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_hist (mng_handle hHandle,
- mng_uint32 iEntrycount,
- mng_uint16arr aEntries);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_time (mng_handle hHandle,
- mng_uint16 iYear,
- mng_uint8 iMonth,
- mng_uint8 iDay,
- mng_uint8 iHour,
- mng_uint8 iMinute,
- mng_uint8 iSecond);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_mhdr (mng_handle hHandle,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_uint32 iTicks,
- mng_uint32 iLayercount,
- mng_uint32 iFramecount,
- mng_uint32 iPlaytime,
- mng_uint32 iSimplicity);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_mend (mng_handle hHandle);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_loop (mng_handle hHandle,
- mng_uint8 iLevel,
- mng_uint32 iRepeat,
- mng_uint8 iTermination,
- mng_uint32 iItermin,
- mng_uint32 iItermax,
- mng_uint32 iCount,
- mng_uint32p pSignals);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_endl (mng_handle hHandle,
- mng_uint8 iLevel);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_defi (mng_handle hHandle,
- mng_uint16 iObjectid,
- mng_uint8 iDonotshow,
- mng_uint8 iConcrete,
- mng_bool bHasloca,
- mng_int32 iXlocation,
- mng_int32 iYlocation,
- mng_bool bHasclip,
- mng_int32 iLeftcb,
- mng_int32 iRightcb,
- mng_int32 iTopcb,
- mng_int32 iBottomcb);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_basi (mng_handle hHandle,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_uint8 iBitdepth,
- mng_uint8 iColortype,
- mng_uint8 iCompression,
- mng_uint8 iFilter,
- mng_uint8 iInterlace,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue,
- mng_uint16 iAlpha,
- mng_uint8 iViewable);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_clon (mng_handle hHandle,
- mng_uint16 iSourceid,
- mng_uint16 iCloneid,
- mng_uint8 iClonetype,
- mng_uint8 iDonotshow,
- mng_uint8 iConcrete,
- mng_bool bHasloca,
- mng_uint8 iLocationtype,
- mng_int32 iLocationx,
- mng_int32 iLocationy);
-
-#ifndef MNG_SKIPCHUNK_PAST
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_past (mng_handle hHandle,
- mng_uint16 iDestid,
- mng_uint8 iTargettype,
- mng_int32 iTargetx,
- mng_int32 iTargety,
- mng_uint32 iCount);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_past_src (mng_handle hHandle,
- mng_uint32 iEntry,
- mng_uint16 iSourceid,
- mng_uint8 iComposition,
- mng_uint8 iOrientation,
- mng_uint8 iOffsettype,
- mng_int32 iOffsetx,
- mng_int32 iOffsety,
- mng_uint8 iBoundarytype,
- mng_int32 iBoundaryl,
- mng_int32 iBoundaryr,
- mng_int32 iBoundaryt,
- mng_int32 iBoundaryb);
-#endif
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_disc (mng_handle hHandle,
- mng_uint32 iCount,
- mng_uint16p pObjectids);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_back (mng_handle hHandle,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue,
- mng_uint8 iMandatory,
- mng_uint16 iImageid,
- mng_uint8 iTile);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_fram (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint8 iMode,
- mng_uint32 iNamesize,
- mng_pchar zName,
- mng_uint8 iChangedelay,
- mng_uint8 iChangetimeout,
- mng_uint8 iChangeclipping,
- mng_uint8 iChangesyncid,
- mng_uint32 iDelay,
- mng_uint32 iTimeout,
- mng_uint8 iBoundarytype,
- mng_int32 iBoundaryl,
- mng_int32 iBoundaryr,
- mng_int32 iBoundaryt,
- mng_int32 iBoundaryb,
- mng_uint32 iCount,
- mng_uint32p pSyncids);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_move (mng_handle hHandle,
- mng_uint16 iFirstid,
- mng_uint16 iLastid,
- mng_uint8 iMovetype,
- mng_int32 iMovex,
- mng_int32 iMovey);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_clip (mng_handle hHandle,
- mng_uint16 iFirstid,
- mng_uint16 iLastid,
- mng_uint8 iCliptype,
- mng_int32 iClipl,
- mng_int32 iClipr,
- mng_int32 iClipt,
- mng_int32 iClipb);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_show (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint16 iFirstid,
- mng_uint16 iLastid,
- mng_uint8 iMode);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_term (mng_handle hHandle,
- mng_uint8 iTermaction,
- mng_uint8 iIteraction,
- mng_uint32 iDelay,
- mng_uint32 iItermax);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_save (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint8 iOffsettype,
- mng_uint32 iCount);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_save_entry (mng_handle hHandle,
- mng_uint32 iEntry,
- mng_uint8 iEntrytype,
- mng_uint32arr2 iOffset,
- mng_uint32arr2 iStarttime,
- mng_uint32 iLayernr,
- mng_uint32 iFramenr,
- mng_uint32 iNamesize,
- mng_pchar zName);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_seek (mng_handle hHandle,
- mng_uint32 iNamesize,
- mng_pchar zName);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_expi (mng_handle hHandle,
- mng_uint16 iSnapshotid,
- mng_uint32 iNamesize,
- mng_pchar zName);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_fpri (mng_handle hHandle,
- mng_uint8 iDeltatype,
- mng_uint8 iPriority);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_need (mng_handle hHandle,
- mng_uint32 iKeywordssize,
- mng_pchar zKeywords);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_phyg (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint32 iSizex,
- mng_uint32 iSizey,
- mng_uint8 iUnit);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_jhdr (mng_handle hHandle,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_uint8 iColortype,
- mng_uint8 iImagesampledepth,
- mng_uint8 iImagecompression,
- mng_uint8 iImageinterlace,
- mng_uint8 iAlphasampledepth,
- mng_uint8 iAlphacompression,
- mng_uint8 iAlphafilter,
- mng_uint8 iAlphainterlace);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_jdat (mng_handle hHandle,
- mng_uint32 iRawlen,
- mng_ptr pRawdata);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_jdaa (mng_handle hHandle,
- mng_uint32 iRawlen,
- mng_ptr pRawdata);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_jsep (mng_handle hHandle);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_dhdr (mng_handle hHandle,
- mng_uint16 iObjectid,
- mng_uint8 iImagetype,
- mng_uint8 iDeltatype,
- mng_uint32 iBlockwidth,
- mng_uint32 iBlockheight,
- mng_uint32 iBlockx,
- mng_uint32 iBlocky);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_prom (mng_handle hHandle,
- mng_uint8 iColortype,
- mng_uint8 iSampledepth,
- mng_uint8 iFilltype);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_ipng (mng_handle hHandle);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_pplt (mng_handle hHandle,
- mng_uint8 iDeltatype,
- mng_uint32 iCount);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_pplt_entry (mng_handle hHandle,
- mng_uint32 iEntry,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue,
- mng_uint16 iAlpha);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_jpng (mng_handle hHandle);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_drop (mng_handle hHandle,
- mng_uint32 iCount,
- mng_chunkidp pChunknames);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_dbyk (mng_handle hHandle,
- mng_chunkid iChunkname,
- mng_uint8 iPolarity,
- mng_uint32 iKeywordssize,
- mng_pchar zKeywords);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_ordr (mng_handle hHandle,
- mng_uint32 iCount);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_ordr_entry (mng_handle hHandle,
- mng_uint32 iEntry,
- mng_chunkid iChunkname,
- mng_uint8 iOrdertype);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_magn (mng_handle hHandle,
- mng_uint16 iFirstid,
- mng_uint16 iLastid,
- mng_uint16 iMethodX,
- mng_uint16 iMX,
- mng_uint16 iMY,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint16 iMT,
- mng_uint16 iMB,
- mng_uint16 iMethodY);
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_mpng (mng_handle hHandle,
- mng_uint32 iFramewidth,
- mng_uint32 iFrameheight,
- mng_uint16 iNumplays,
- mng_uint16 iTickspersec,
- mng_uint8 iCompressionmethod,
- mng_uint32 iCount);
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_mpng_frame (mng_handle hHandle,
- mng_uint32 iEntry,
- mng_uint32 iX,
- mng_uint32 iY,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_int32 iXoffset,
- mng_int32 iYoffset,
- mng_uint16 iTicks);
-#endif
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_evnt (mng_handle hHandle,
- mng_uint32 iCount);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_evnt_entry (mng_handle hHandle,
- mng_uint32 iEntry,
- mng_uint8 iEventtype,
- mng_uint8 iMasktype,
- mng_int32 iLeft,
- mng_int32 iRight,
- mng_int32 iTop,
- mng_int32 iBottom,
- mng_uint16 iObjectid,
- mng_uint8 iIndex,
- mng_uint32 iSegmentnamesize,
- mng_pchar zSegmentname);
-
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_unknown (mng_handle hHandle,
- mng_chunkid iChunkname,
- mng_uint32 iRawlen,
- mng_ptr pRawdata);
-
-#endif /* MNG_INCLUDE_WRITE_PROCS */
-
-/* ************************************************************************** */
-
-/* use these functions to access the actual image-data in stored chunks,
- as opposed to the IDAT/JDAT data */
-/* to get accurate pixel-data the canvasstyle should seriously reflect the
- bitdepth/colortype combination of the preceding IHDR/JHDR/BASI/DHDR;
- all input can be converted to rgb(a)8 (rgb(a)16 for 16-bit images), but
- there are only limited conversions back (see below for putimgdata) */
-
-/* call this function if you want to extract the nth image from the list;
- the first image is designated seqnr 0! */
-/* this function finds the IHDR/JHDR/BASI/DHDR with the appropriate seqnr,
- starting from the beginning of the chunk-list; this may tend to get a little
- slow for animations with a large number of chunks for images near the end */
-/* supplying a seqnr past the last image in the animation will return with
- an errorcode */
-MNG_EXT mng_retcode MNG_DECL mng_getimgdata_seq (mng_handle hHandle,
- mng_uint32 iSeqnr,
- mng_uint32 iCanvasstyle,
- mng_getcanvasline fGetcanvasline);
-
-/* both the following functions will search forward to find the first IDAT/JDAT,
- and then traverse back to find the start of the image (IHDR,JHDR,DHDR,BASI);
- note that this is very fast compared to decoding the IDAT/JDAT, so there's
- not really a need for optimization; either can be called from the
- iterate_chunks callback when a IHDR/JHDR is encountered; for BASI/DHDR there
- may not be real image-data so it's wisest to keep iterating till the IEND,
- and then call either of these functions if necessary (remember the correct seqnr!) */
-
-/* call this function if you want to extract the image starting at or after the nth
- position in the chunk-list; this number is returned in the iterate_chunks callback */
-MNG_EXT mng_retcode MNG_DECL mng_getimgdata_chunkseq (mng_handle hHandle,
- mng_uint32 iSeqnr,
- mng_uint32 iCanvasstyle,
- mng_getcanvasline fGetcanvasline);
-
-/* call this function if you want to extract the image starting at or after the
- indicated chunk; the handle of a chunk is returned in the iterate_chunks callback */
-MNG_EXT mng_retcode MNG_DECL mng_getimgdata_chunk (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 iCanvasstyle,
- mng_getcanvasline fGetcanvasline);
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_WRITE_PROCS
-
-/* use the following functions to add image-data to the list of stored chunks */
-/* note that this only adds the IDAT or JDAT chunks and no others; you must call
- one of these functions after you 'put' the initial chunks of the image and
- before you 'put' the closing chunks */
-/* the canvasstyle should seriously reflect the bitdepth/colortype combination;
- eg. bitdepth=16 would expect a 16-bit canvasstyle,
- colortype=g or ga would expect a gray or gray+alpha style respectively
- and so on, and so forth ...
- (nb. the number of conversions will be extremely limited for the moment!) */
-
-MNG_EXT mng_retcode MNG_DECL mng_putimgdata_ihdr (mng_handle hHandle,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_uint8 iColortype,
- mng_uint8 iBitdepth,
- mng_uint8 iCompression,
- mng_uint8 iFilter,
- mng_uint8 iInterlace,
- mng_uint32 iCanvasstyle,
- mng_getcanvasline fGetcanvasline);
-
-MNG_EXT mng_retcode MNG_DECL mng_putimgdata_jhdr (mng_handle hHandle,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_uint8 iColortype,
- mng_uint8 iBitdepth,
- mng_uint8 iCompression,
- mng_uint8 iInterlace,
- mng_uint8 iAlphaBitdepth,
- mng_uint8 iAlphaCompression,
- mng_uint8 iAlphaFilter,
- mng_uint8 iAlphaInterlace,
- mng_uint32 iCanvasstyle,
- mng_getcanvasline fGetcanvasline);
-
-/* ************************************************************************** */
-
-/* use the following functions to set the framecount/layercount/playtime or
- simplicity of an animation you are creating; this may be useful if these
- variables are calculated during the creation-process */
-
-MNG_EXT mng_retcode MNG_DECL mng_updatemngheader (mng_handle hHandle,
- mng_uint32 iFramecount,
- mng_uint32 iLayercount,
- mng_uint32 iPlaytime);
-
-MNG_EXT mng_retcode MNG_DECL mng_updatemngsimplicity (mng_handle hHandle,
- mng_uint32 iSimplicity);
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_WRITE_PROCS */
-
-#endif /* MNG_ACCESS_CHUNKS */
-
-/* ************************************************************************** */
-/* * * */
-/* * Error-code structure * */
-/* * * */
-/* * 0b0000 00xx xxxx xxxx - basic errors; severity 9 (environment) * */
-/* * 0b0000 01xx xxxx xxxx - chunk errors; severity 9 (image induced) * */
-/* * 0b0000 10xx xxxx xxxx - severity 5 errors (application induced) * */
-/* * 0b0001 00xx xxxx xxxx - severity 2 warnings (recoverable) * */
-/* * 0b0010 00xx xxxx xxxx - severity 1 warnings (recoverable) * */
-/* * * */
-/* ************************************************************************** */
-
-#define MNG_NOERROR (mng_retcode)0 /* er.. indicates all's well */
-
-#define MNG_OUTOFMEMORY (mng_retcode)1 /* oops, buy some megabytes! */
-#define MNG_INVALIDHANDLE (mng_retcode)2 /* call mng_initialize first */
-#define MNG_NOCALLBACK (mng_retcode)3 /* set the callbacks please */
-#define MNG_UNEXPECTEDEOF (mng_retcode)4 /* what'd ya do with the data? */
-#define MNG_ZLIBERROR (mng_retcode)5 /* zlib burped */
-#define MNG_JPEGERROR (mng_retcode)6 /* jpglib complained */
-#define MNG_LCMSERROR (mng_retcode)7 /* little cms stressed out */
-#define MNG_NOOUTPUTPROFILE (mng_retcode)8 /* no output-profile defined */
-#define MNG_NOSRGBPROFILE (mng_retcode)9 /* no sRGB-profile defined */
-#define MNG_BUFOVERFLOW (mng_retcode)10 /* zlib output-buffer overflow */
-#define MNG_FUNCTIONINVALID (mng_retcode)11 /* ay, totally inappropriate */
-#define MNG_OUTPUTERROR (mng_retcode)12 /* disk full ? */
-#define MNG_JPEGBUFTOOSMALL (mng_retcode)13 /* can't handle buffer overflow*/
-#define MNG_NEEDMOREDATA (mng_retcode)14 /* I'm hungry, give me more */
-#define MNG_NEEDTIMERWAIT (mng_retcode)15 /* Sleep a while then wake me */
-#define MNG_NEEDSECTIONWAIT (mng_retcode)16 /* just processed a SEEK */
-#define MNG_LOOPWITHCACHEOFF (mng_retcode)17 /* LOOP when playback info off */
-
-#define MNG_DLLNOTLOADED (mng_retcode)99 /* late binding failed */
-
-#define MNG_APPIOERROR (mng_retcode)901 /* application I/O error */
-#define MNG_APPTIMERERROR (mng_retcode)902 /* application timing error */
-#define MNG_APPCMSERROR (mng_retcode)903 /* application CMS error */
-#define MNG_APPMISCERROR (mng_retcode)904 /* application other error */
-#define MNG_APPTRACEABORT (mng_retcode)905 /* application aborts on trace */
-
-#define MNG_INTERNALERROR (mng_retcode)999 /* internal inconsistancy */
-
-#define MNG_INVALIDSIG (mng_retcode)1025 /* invalid graphics file */
-#define MNG_INVALIDCRC (mng_retcode)1027 /* crc check failed */
-#define MNG_INVALIDLENGTH (mng_retcode)1028 /* chunklength mystifies me */
-#define MNG_SEQUENCEERROR (mng_retcode)1029 /* invalid chunk sequence */
-#define MNG_CHUNKNOTALLOWED (mng_retcode)1030 /* completely out-of-place */
-#define MNG_MULTIPLEERROR (mng_retcode)1031 /* only one occurence allowed */
-#define MNG_PLTEMISSING (mng_retcode)1032 /* indexed-color requires PLTE */
-#define MNG_IDATMISSING (mng_retcode)1033 /* IHDR-block requires IDAT */
-#define MNG_CANNOTBEEMPTY (mng_retcode)1034 /* must contain some data */
-#define MNG_GLOBALLENGTHERR (mng_retcode)1035 /* global data incorrect */
-#define MNG_INVALIDBITDEPTH (mng_retcode)1036 /* bitdepth out-of-range */
-#define MNG_INVALIDCOLORTYPE (mng_retcode)1037 /* colortype out-of-range */
-#define MNG_INVALIDCOMPRESS (mng_retcode)1038 /* compression method invalid */
-#define MNG_INVALIDFILTER (mng_retcode)1039 /* filter method invalid */
-#define MNG_INVALIDINTERLACE (mng_retcode)1040 /* interlace method invalid */
-#define MNG_NOTENOUGHIDAT (mng_retcode)1041 /* ran out of compressed data */
-#define MNG_PLTEINDEXERROR (mng_retcode)1042 /* palette-index out-of-range */
-#define MNG_NULLNOTFOUND (mng_retcode)1043 /* couldn't find null-separator*/
-#define MNG_KEYWORDNULL (mng_retcode)1044 /* keyword cannot be empty */
-#define MNG_OBJECTUNKNOWN (mng_retcode)1045 /* the object can't be found */
-#define MNG_OBJECTEXISTS (mng_retcode)1046 /* the object already exists */
-#define MNG_TOOMUCHIDAT (mng_retcode)1047 /* got too much compressed data*/
-#define MNG_INVSAMPLEDEPTH (mng_retcode)1048 /* sampledepth out-of-range */
-#define MNG_INVOFFSETSIZE (mng_retcode)1049 /* invalid offset-size */
-#define MNG_INVENTRYTYPE (mng_retcode)1050 /* invalid entry-type */
-#define MNG_ENDWITHNULL (mng_retcode)1051 /* may not end with NULL */
-#define MNG_INVIMAGETYPE (mng_retcode)1052 /* invalid image_type */
-#define MNG_INVDELTATYPE (mng_retcode)1053 /* invalid delta_type */
-#define MNG_INVALIDINDEX (mng_retcode)1054 /* index-value invalid */
-#define MNG_TOOMUCHJDAT (mng_retcode)1055 /* got too much compressed data*/
-#define MNG_JPEGPARMSERR (mng_retcode)1056 /* JHDR/JPEG parms do not match*/
-#define MNG_INVFILLMETHOD (mng_retcode)1057 /* invalid fill_method */
-#define MNG_OBJNOTCONCRETE (mng_retcode)1058 /* object must be concrete */
-#define MNG_TARGETNOALPHA (mng_retcode)1059 /* object has no alpha-channel */
-#define MNG_MNGTOOCOMPLEX (mng_retcode)1060 /* can't handle complexity */
-#define MNG_UNKNOWNCRITICAL (mng_retcode)1061 /* unknown critical chunk found*/
-#define MNG_UNSUPPORTEDNEED (mng_retcode)1062 /* nEED requirement unsupported*/
-#define MNG_INVALIDDELTA (mng_retcode)1063 /* Delta operation illegal */
-#define MNG_INVALIDMETHOD (mng_retcode)1064 /* invalid MAGN method */
-#define MNG_IMPROBABLELENGTH (mng_retcode)1065 /* impropable chunk length */
-#define MNG_INVALIDBLOCK (mng_retcode)1066 /* invalid delta block */
-#define MNG_INVALIDEVENT (mng_retcode)1067 /* invalid event_type */
-#define MNG_INVALIDMASK (mng_retcode)1068 /* invalid mask_type */
-#define MNG_NOMATCHINGLOOP (mng_retcode)1069 /* ENDL without matching LOOP */
-#define MNG_SEEKNOTFOUND (mng_retcode)1070 /* EvNT points to unknown SEEK */
-#define MNG_OBJNOTABSTRACT (mng_retcode)1071 /* object must be abstract */
-#define MNG_TERMSEQERROR (mng_retcode)1072 /* TERM in wrong place */
-#define MNG_INVALIDFIELDVAL (mng_retcode)1073 /* invalid fieldvalue (generic)*/
-#define MNG_INVALIDWIDTH (mng_retcode)1074 /* invalid frame/image width */
-#define MNG_INVALIDHEIGHT (mng_retcode)1075 /* invalid frame/image height */
-
-#define MNG_INVALIDCNVSTYLE (mng_retcode)2049 /* can't make anything of this */
-#define MNG_WRONGCHUNK (mng_retcode)2050 /* accessing the wrong chunk */
-#define MNG_INVALIDENTRYIX (mng_retcode)2051 /* accessing the wrong entry */
-#define MNG_NOHEADER (mng_retcode)2052 /* must have had header first */
-#define MNG_NOCORRCHUNK (mng_retcode)2053 /* can't find parent chunk */
-#define MNG_NOMHDR (mng_retcode)2054 /* no MNG header available */
-
-#define MNG_IMAGETOOLARGE (mng_retcode)4097 /* input-image way too big */
-#define MNG_NOTANANIMATION (mng_retcode)4098 /* file not a MNG */
-#define MNG_FRAMENRTOOHIGH (mng_retcode)4099 /* frame-nr out-of-range */
-#define MNG_LAYERNRTOOHIGH (mng_retcode)4100 /* layer-nr out-of-range */
-#define MNG_PLAYTIMETOOHIGH (mng_retcode)4101 /* playtime out-of-range */
-#define MNG_FNNOTIMPLEMENTED (mng_retcode)4102 /* function not yet available */
-
-#define MNG_IMAGEFROZEN (mng_retcode)8193 /* stopped displaying */
-
-#define MNG_LCMS_NOHANDLE 1 /* LCMS returned NULL handle */
-#define MNG_LCMS_NOMEM 2 /* LCMS returned NULL gammatab */
-#define MNG_LCMS_NOTRANS 3 /* LCMS returned NULL transform*/
-
-/* ************************************************************************** */
-/* * * */
-/* * Canvas styles * */
-/* * * */
-/* * Note that the intentions are pretty darn good, but that the focus * */
-/* * is currently on 8-bit color support * */
-/* * * */
-/* * The RGB8_A8 style is defined for apps that require a separate * */
-/* * canvas for the color-planes and the alpha-plane (eg. mozilla) * */
-/* * This requires for the app to supply the "getalphaline" callback!!! * */
-/* * * */
-/* ************************************************************************** */
-
-#define MNG_CANVAS_RGB8 0x00000000L
-#define MNG_CANVAS_RGBA8 0x00001000L
-#define MNG_CANVAS_RGBA8_PM 0x00009000L
-#define MNG_CANVAS_ARGB8 0x00003000L
-#define MNG_CANVAS_ARGB8_PM 0x0000B000L
-#define MNG_CANVAS_RGB8_A8 0x00005000L
-#define MNG_CANVAS_BGR8 0x00000001L
-#define MNG_CANVAS_BGRX8 0x00010001L
-#define MNG_CANVAS_BGRA8 0x00001001L
-#define MNG_CANVAS_BGRA8PM 0x00009001L /* backward compatibility */
-#define MNG_CANVAS_BGRA8_PM 0x00009001L
-#define MNG_CANVAS_ABGR8 0x00003001L
-#define MNG_CANVAS_ABGR8_PM 0x0000B001L
-#define MNG_CANVAS_RGB16 0x00000100L /* not supported yet */
-#define MNG_CANVAS_RGBA16 0x00001100L /* not supported yet */
-#define MNG_CANVAS_ARGB16 0x00003100L /* not supported yet */
-#define MNG_CANVAS_BGR16 0x00000101L /* not supported yet */
-#define MNG_CANVAS_BGRA16 0x00001101L /* not supported yet */
-#define MNG_CANVAS_ABGR16 0x00003101L /* not supported yet */
-#define MNG_CANVAS_GRAY8 0x00000002L /* not supported yet */
-#define MNG_CANVAS_GRAY16 0x00000102L /* not supported yet */
-#define MNG_CANVAS_GRAYA8 0x00001002L /* not supported yet */
-#define MNG_CANVAS_GRAYA16 0x00001102L /* not supported yet */
-#define MNG_CANVAS_AGRAY8 0x00003002L /* not supported yet */
-#define MNG_CANVAS_AGRAY16 0x00003102L /* not supported yet */
-#define MNG_CANVAS_DX15 0x00000003L /* not supported yet */
-#define MNG_CANVAS_DX16 0x00000004L /* not supported yet */
-
-#define MNG_CANVAS_RGB565 0x00000005L
-#define MNG_CANVAS_RGBA565 0x00001005L
-#define MNG_CANVAS_BGR565 0x00000006L
-#define MNG_CANVAS_BGRA565 0x00001006L
-#define MNG_CANVAS_BGR565_A8 0x00004006L
-
-#define MNG_CANVAS_RGB555 0x00000007L
-#define MNG_CANVAS_BGR555 0x00000008L
-
-#define MNG_CANVAS_PIXELTYPE(C) (C & 0x000000FFL)
-#define MNG_CANVAS_BITDEPTH(C) (C & 0x00000100L)
-#define MNG_CANVAS_HASALPHA(C) (C & 0x00001000L)
-#define MNG_CANVAS_ALPHAFIRST(C) (C & 0x00002000L)
-#define MNG_CANVAS_ALPHASEPD(C) (C & 0x00004000L)
-#define MNG_CANVAS_ALPHAPM(C) (C & 0x00008000L)
-#define MNG_CANVAS_HASFILLER(C) (C & 0x00010000L)
-
-#define MNG_CANVAS_RGB(C) (MNG_CANVAS_PIXELTYPE (C) == 0)
-#define MNG_CANVAS_BGR(C) (MNG_CANVAS_PIXELTYPE (C) == 1)
-#define MNG_CANVAS_GRAY(C) (MNG_CANVAS_PIXELTYPE (C) == 2)
-#define MNG_CANVAS_DIRECTX15(C) (MNG_CANVAS_PIXELTYPE (C) == 3)
-#define MNG_CANVAS_DIRECTX16(C) (MNG_CANVAS_PIXELTYPE (C) == 4)
-#define MNG_CANVAS_RGB_565(C) (MNG_CANVAS_PIXELTYPE (C) == 5)
-#define MNG_CANVAS_BGR_565(C) (MNG_CANVAS_PIXELTYPE (C) == 6)
-#define MNG_CANVAS_8BIT(C) (!MNG_CANVAS_BITDEPTH (C))
-#define MNG_CANVAS_16BIT(C) (MNG_CANVAS_BITDEPTH (C))
-#define MNG_CANVAS_PIXELFIRST(C) (!MNG_CANVAS_ALPHAFIRST (C))
-
-/* ************************************************************************** */
-/* * * */
-/* * Chunk names (idea adapted from libpng 1.1.0 - png.h) * */
-/* * * */
-/* ************************************************************************** */
-
-#define MNG_UINT_HUH 0x40404040L
-
-#define MNG_UINT_BACK 0x4241434bL
-#define MNG_UINT_BASI 0x42415349L
-#define MNG_UINT_CLIP 0x434c4950L
-#define MNG_UINT_CLON 0x434c4f4eL
-#define MNG_UINT_DBYK 0x4442594bL
-#define MNG_UINT_DEFI 0x44454649L
-#define MNG_UINT_DHDR 0x44484452L
-#define MNG_UINT_DISC 0x44495343L
-#define MNG_UINT_DROP 0x44524f50L
-#define MNG_UINT_ENDL 0x454e444cL
-#define MNG_UINT_FRAM 0x4652414dL
-#define MNG_UINT_IDAT 0x49444154L
-#define MNG_UINT_IEND 0x49454e44L
-#define MNG_UINT_IHDR 0x49484452L
-#define MNG_UINT_IJNG 0x494a4e47L
-#define MNG_UINT_IPNG 0x49504e47L
-#define MNG_UINT_JDAA 0x4a444141L
-#define MNG_UINT_JDAT 0x4a444154L
-#define MNG_UINT_JHDR 0x4a484452L
-#define MNG_UINT_JSEP 0x4a534550L
-#define MNG_UINT_JdAA 0x4a644141L
-#define MNG_UINT_LOOP 0x4c4f4f50L
-#define MNG_UINT_MAGN 0x4d41474eL
-#define MNG_UINT_MEND 0x4d454e44L
-#define MNG_UINT_MHDR 0x4d484452L
-#define MNG_UINT_MOVE 0x4d4f5645L
-#define MNG_UINT_ORDR 0x4f524452L
-#define MNG_UINT_PAST 0x50415354L
-#define MNG_UINT_PLTE 0x504c5445L
-#define MNG_UINT_PPLT 0x50504c54L
-#define MNG_UINT_PROM 0x50524f4dL
-#define MNG_UINT_SAVE 0x53415645L
-#define MNG_UINT_SEEK 0x5345454bL
-#define MNG_UINT_SHOW 0x53484f57L
-#define MNG_UINT_TERM 0x5445524dL
-#define MNG_UINT_adAT 0x61644154L
-#define MNG_UINT_ahDR 0x61684452L
-#define MNG_UINT_bKGD 0x624b4744L
-#define MNG_UINT_cHRM 0x6348524dL
-#define MNG_UINT_eXPI 0x65585049L
-#define MNG_UINT_evNT 0x65764e54L
-#define MNG_UINT_fPRI 0x66505249L
-#define MNG_UINT_gAMA 0x67414d41L
-#define MNG_UINT_hIST 0x68495354L
-#define MNG_UINT_iCCP 0x69434350L
-#define MNG_UINT_iTXt 0x69545874L
-#define MNG_UINT_mpNG 0x6d704e47L
-#define MNG_UINT_nEED 0x6e454544L
-#define MNG_UINT_oFFs 0x6f464673L
-#define MNG_UINT_pCAL 0x7043414cL
-#define MNG_UINT_pHYg 0x70444167L
-#define MNG_UINT_pHYs 0x70485973L
-#define MNG_UINT_sBIT 0x73424954L
-#define MNG_UINT_sCAL 0x7343414cL
-#define MNG_UINT_sPLT 0x73504c54L
-#define MNG_UINT_sRGB 0x73524742L
-#define MNG_UINT_tEXt 0x74455874L
-#define MNG_UINT_tIME 0x74494d45L
-#define MNG_UINT_tRNS 0x74524e53L
-#define MNG_UINT_zTXt 0x7a545874L
-
-/* ************************************************************************** */
-/* * * */
-/* * Chunk property values * */
-/* * * */
-/* ************************************************************************** */
-
-#define MNG_BITDEPTH_1 1 /* IHDR, BASI, JHDR, PROM */
-#define MNG_BITDEPTH_2 2
-#define MNG_BITDEPTH_4 4
-#define MNG_BITDEPTH_8 8 /* sPLT */
-#define MNG_BITDEPTH_16 16
-
-#define MNG_COLORTYPE_GRAY 0 /* IHDR, BASI, PROM */
-#define MNG_COLORTYPE_RGB 2
-#define MNG_COLORTYPE_INDEXED 3
-#define MNG_COLORTYPE_GRAYA 4
-#define MNG_COLORTYPE_RGBA 6
-
-#define MNG_COMPRESSION_DEFLATE 0 /* IHDR, zTXt, iTXt, iCCP,
- BASI, JHDR */
-
-#define MNG_FILTER_ADAPTIVE 0 /* IHDR, BASI, JHDR */
-/* #define MNG_FILTER_NO_ADAPTIVE 1
-#define MNG_FILTER_NO_DIFFERING 0
-#define MNG_FILTER_DIFFERING 0x40
-#define MNG_FILTER_MASK (MNG_FILTER_NO_ADAPTIVE | MNG_FILTER_DIFFERING) */
-#ifdef FILTER192
-#define MNG_FILTER_DIFFERING 0xC0
-#endif
-#ifdef FILTER193
-#define MNG_FILTER_NOFILTER 0xC1
-#endif
-
-#define MNG_INTERLACE_NONE 0 /* IHDR, BASI, JHDR */
-#define MNG_INTERLACE_ADAM7 1
-
-#define MNG_FILTER_NONE 0 /* IDAT */
-#define MNG_FILTER_SUB 1
-#define MNG_FILTER_UP 2
-#define MNG_FILTER_AVERAGE 3
-#define MNG_FILTER_PAETH 4
-
-#define MNG_INTENT_PERCEPTUAL 0 /* sRGB */
-#define MNG_INTENT_RELATIVECOLORIMETRIC 1
-#define MNG_INTENT_SATURATION 2
-#define MNG_INTENT_ABSOLUTECOLORIMETRIC 3
- /* tEXt, zTXt, iTXt */
-#define MNG_TEXT_TITLE "Title"
-#define MNG_TEXT_AUTHOR "Author"
-#define MNG_TEXT_DESCRIPTION "Description"
-#define MNG_TEXT_COPYRIGHT "Copyright"
-#define MNG_TEXT_CREATIONTIME "Creation Time"
-#define MNG_TEXT_SOFTWARE "Software"
-#define MNG_TEXT_DISCLAIMER "Disclaimer"
-#define MNG_TEXT_WARNING "Warning"
-#define MNG_TEXT_SOURCE "Source"
-#define MNG_TEXT_COMMENT "Comment"
-
-#define MNG_FLAG_UNCOMPRESSED 0 /* iTXt */
-#define MNG_FLAG_COMPRESSED 1
-
-#define MNG_UNIT_UNKNOWN 0 /* pHYs, pHYg */
-#define MNG_UNIT_METER 1
- /* MHDR */
-#define MNG_SIMPLICITY_VALID 0x00000001
-#define MNG_SIMPLICITY_SIMPLEFEATURES 0x00000002
-#define MNG_SIMPLICITY_COMPLEXFEATURES 0x00000004
-#define MNG_SIMPLICITY_TRANSPARENCY 0x00000008
-#define MNG_SIMPLICITY_JNG 0x00000010
-#define MNG_SIMPLICITY_DELTAPNG 0x00000020
-
-#define MNG_TERMINATION_DECODER_NC 0 /* LOOP */
-#define MNG_TERMINATION_USER_NC 1
-#define MNG_TERMINATION_EXTERNAL_NC 2
-#define MNG_TERMINATION_DETERMINISTIC_NC 3
-#define MNG_TERMINATION_DECODER_C 4
-#define MNG_TERMINATION_USER_C 5
-#define MNG_TERMINATION_EXTERNAL_C 6
-#define MNG_TERMINATION_DETERMINISTIC_C 7
-
-#define MNG_DONOTSHOW_VISIBLE 0 /* DEFI */
-#define MNG_DONOTSHOW_NOTVISIBLE 1
-
-#define MNG_ABSTRACT 0 /* DEFI */
-#define MNG_CONCRETE 1
-
-#define MNG_NOTVIEWABLE 0 /* BASI */
-#define MNG_VIEWABLE 1
-
-#define MNG_FULL_CLONE 0 /* CLON */
-#define MNG_PARTIAL_CLONE 1
-#define MNG_RENUMBER 2
-
-#define MNG_CONCRETE_ASPARENT 0 /* CLON */
-#define MNG_CONCRETE_MAKEABSTRACT 1
-
-#define MNG_LOCATION_ABSOLUTE 0 /* CLON, MOVE */
-#define MNG_LOCATION_RELATIVE 1
-
-#ifndef MNG_SKIPCHUNK_PAST
-#define MNG_TARGET_ABSOLUTE 0 /* PAST */
-#define MNG_TARGET_RELATIVE_SAMEPAST 1
-#define MNG_TARGET_RELATIVE_PREVPAST 2
-
-#define MNG_COMPOSITE_OVER 0 /* PAST */
-#define MNG_COMPOSITE_REPLACE 1
-#define MNG_COMPOSITE_UNDER 2
-
-#define MNG_ORIENTATION_SAME 0 /* PAST */
-#define MNG_ORIENTATION_180DEG 2
-#define MNG_ORIENTATION_FLIPHORZ 4
-#define MNG_ORIENTATION_FLIPVERT 6
-#define MNG_ORIENTATION_TILED 8
-
-#define MNG_OFFSET_ABSOLUTE 0 /* PAST */
-#define MNG_OFFSET_RELATIVE 1
-#endif
-
-#define MNG_BOUNDARY_ABSOLUTE 0 /* PAST, FRAM */
-#define MNG_BOUNDARY_RELATIVE 1
-
-#define MNG_BACKGROUNDCOLOR_MANDATORY 0x01 /* BACK */
-#define MNG_BACKGROUNDIMAGE_MANDATORY 0x02 /* BACK */
-
-#define MNG_BACKGROUNDIMAGE_NOTILE 0 /* BACK */
-#define MNG_BACKGROUNDIMAGE_TILE 1
-
-#define MNG_FRAMINGMODE_NOCHANGE 0 /* FRAM */
-#define MNG_FRAMINGMODE_1 1
-#define MNG_FRAMINGMODE_2 2
-#define MNG_FRAMINGMODE_3 3
-#define MNG_FRAMINGMODE_4 4
-
-#define MNG_CHANGEDELAY_NO 0 /* FRAM */
-#define MNG_CHANGEDELAY_NEXTSUBFRAME 1
-#define MNG_CHANGEDELAY_DEFAULT 2
-
-#define MNG_CHANGETIMOUT_NO 0 /* FRAM */
-#define MNG_CHANGETIMOUT_DETERMINISTIC_1 1
-#define MNG_CHANGETIMOUT_DETERMINISTIC_2 2
-#define MNG_CHANGETIMOUT_DECODER_1 3
-#define MNG_CHANGETIMOUT_DECODER_2 4
-#define MNG_CHANGETIMOUT_USER_1 5
-#define MNG_CHANGETIMOUT_USER_2 6
-#define MNG_CHANGETIMOUT_EXTERNAL_1 7
-#define MNG_CHANGETIMOUT_EXTERNAL_2 8
-
-#define MNG_CHANGECLIPPING_NO 0 /* FRAM */
-#define MNG_CHANGECLIPPING_NEXTSUBFRAME 1
-#define MNG_CHANGECLIPPING_DEFAULT 2
-
-#define MNG_CHANGESYNCID_NO 0 /* FRAM */
-#define MNG_CHANGESYNCID_NEXTSUBFRAME 1
-#define MNG_CHANGESYNCID_DEFAULT 2
-
-#define MNG_CLIPPING_ABSOLUTE 0 /* CLIP */
-#define MNG_CLIPPING_RELATIVE 1
-
-#define MNG_SHOWMODE_0 0 /* SHOW */
-#define MNG_SHOWMODE_1 1
-#define MNG_SHOWMODE_2 2
-#define MNG_SHOWMODE_3 3
-#define MNG_SHOWMODE_4 4
-#define MNG_SHOWMODE_5 5
-#define MNG_SHOWMODE_6 6
-#define MNG_SHOWMODE_7 7
-
-#define MNG_TERMACTION_LASTFRAME 0 /* TERM */
-#define MNG_TERMACTION_CLEAR 1
-#define MNG_TERMACTION_FIRSTFRAME 2
-#define MNG_TERMACTION_REPEAT 3
-
-#define MNG_ITERACTION_LASTFRAME 0 /* TERM */
-#define MNG_ITERACTION_CLEAR 1
-#define MNG_ITERACTION_FIRSTFRAME 2
-
-#define MNG_SAVEOFFSET_4BYTE 4 /* SAVE */
-#define MNG_SAVEOFFSET_8BYTE 8
-
-#define MNG_SAVEENTRY_SEGMENTFULL 0 /* SAVE */
-#define MNG_SAVEENTRY_SEGMENT 1
-#define MNG_SAVEENTRY_SUBFRAME 2
-#define MNG_SAVEENTRY_EXPORTEDIMAGE 3
-
-#define MNG_PRIORITY_ABSOLUTE 0 /* fPRI */
-#define MNG_PRIORITY_RELATIVE 1
-
-#ifdef MNG_INCLUDE_JNG
-#define MNG_COLORTYPE_JPEGGRAY 8 /* JHDR */
-#define MNG_COLORTYPE_JPEGCOLOR 10
-#define MNG_COLORTYPE_JPEGGRAYA 12
-#define MNG_COLORTYPE_JPEGCOLORA 14
-
-#define MNG_BITDEPTH_JPEG8 8 /* JHDR */
-#define MNG_BITDEPTH_JPEG12 12
-#define MNG_BITDEPTH_JPEG8AND12 20
-
-#define MNG_COMPRESSION_BASELINEJPEG 8 /* JHDR */
-
-#define MNG_INTERLACE_SEQUENTIAL 0 /* JHDR */
-#define MNG_INTERLACE_PROGRESSIVE 8
-#endif /* MNG_INCLUDE_JNG */
-
-#define MNG_IMAGETYPE_UNKNOWN 0 /* DHDR */
-#define MNG_IMAGETYPE_PNG 1
-#define MNG_IMAGETYPE_JNG 2
-
-#define MNG_DELTATYPE_REPLACE 0 /* DHDR */
-#define MNG_DELTATYPE_BLOCKPIXELADD 1
-#define MNG_DELTATYPE_BLOCKALPHAADD 2
-#define MNG_DELTATYPE_BLOCKCOLORADD 3
-#define MNG_DELTATYPE_BLOCKPIXELREPLACE 4
-#define MNG_DELTATYPE_BLOCKALPHAREPLACE 5
-#define MNG_DELTATYPE_BLOCKCOLORREPLACE 6
-#define MNG_DELTATYPE_NOCHANGE 7
-
-#define MNG_FILLMETHOD_LEFTBITREPLICATE 0 /* PROM */
-#define MNG_FILLMETHOD_ZEROFILL 1
-
-#define MNG_DELTATYPE_REPLACERGB 0 /* PPLT */
-#define MNG_DELTATYPE_DELTARGB 1
-#define MNG_DELTATYPE_REPLACEALPHA 2
-#define MNG_DELTATYPE_DELTAALPHA 3
-#define MNG_DELTATYPE_REPLACERGBA 4
-#define MNG_DELTATYPE_DELTARGBA 5
-
-#define MNG_POLARITY_ONLY 0 /* DBYK */
-#define MNG_POLARITY_ALLBUT 1
-
-#define MNG_EVENT_NONE 0 /* evNT */
-#define MNG_EVENT_MOUSEENTER 1
-#define MNG_EVENT_MOUSEMOVE 2
-#define MNG_EVENT_MOUSEEXIT 3
-#define MNG_EVENT_MOUSEDOWN 4
-#define MNG_EVENT_MOUSEUP 5
-
-#define MNG_MASK_NONE 0 /* evNT */
-#define MNG_MASK_BOX 1
-#define MNG_MASK_OBJECT 2
-#define MNG_MASK_OBJECTIX 3
-#define MNG_MASK_BOXOBJECT 4
-#define MNG_MASK_BOXOBJECTIX 5
-
-/* ************************************************************************** */
-/* * * */
-/* * Processtext callback types * */
-/* * * */
-/* ************************************************************************** */
-
-#define MNG_TYPE_TEXT 0
-#define MNG_TYPE_ZTXT 1
-#define MNG_TYPE_ITXT 2
-
-/* ************************************************************************** */
-/* * * */
-/* * CRC processing masks * */
-/* * * */
-/* ************************************************************************** */
-
-#define MNG_CRC_INPUT 0x0000000f
-#define MNG_CRC_INPUT_NONE 0x00000000
-#define MNG_CRC_INPUT_PRESENT 0x00000001
-#define MNG_CRC_OUTPUT 0x000000f0
-#define MNG_CRC_OUTPUT_NONE 0x00000000
-#define MNG_CRC_OUTPUT_GENERATE 0x00000020
-#define MNG_CRC_OUTPUT_DUMMY 0x00000040
-#define MNG_CRC_ANCILLARY 0x00000f00
-#define MNG_CRC_ANCILLARY_IGNORE 0x00000000
-#define MNG_CRC_ANCILLARY_DISCARD 0x00000100
-#define MNG_CRC_ANCILLARY_WARNING 0x00000200
-#define MNG_CRC_ANCILLARY_ERROR 0x00000300
-#define MNG_CRC_CRITICAL 0x0000f000
-#define MNG_CRC_CRITICAL_IGNORE 0x00000000
-#define MNG_CRC_CRITICAL_WARNING 0x00002000
-#define MNG_CRC_CRITICAL_ERROR 0x00003000
-#define MNG_CRC_DEFAULT 0x00002121
-
-/* ************************************************************************** */
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _libmng_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
diff --git a/src/3rdparty/libmng/libmng_callback_xs.c b/src/3rdparty/libmng/libmng_callback_xs.c
deleted file mode 100644
index ff1a22a70b..0000000000
--- a/src/3rdparty/libmng/libmng_callback_xs.c
+++ /dev/null
@@ -1,1239 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_callback_xs.c copyright (c) 2000-2004 G.Juyn * */
-/* * version : 1.0.9 * */
-/* * * */
-/* * purpose : callback get/set interface (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of the callback get/set functions * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - fixed calling convention * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/12/2000 - G.Juyn * */
-/* * - changed trace to macro for callback error-reporting * */
-/* * * */
-/* * 0.5.2 - 05/31/2000 - G.Juyn * */
-/* * - fixed up punctuation (contribution by Tim Rowley) * */
-/* * 0.5.2 - 06/02/2000 - G.Juyn * */
-/* * - added getalphaline callback for RGB8_A8 canvasstyle * */
-/* * * */
-/* * 0.9.1 - 07/15/2000 - G.Juyn * */
-/* * - added callbacks for SAVE/SEEK processing * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 10/11/2000 - G.Juyn * */
-/* * - added support for nEED * */
-/* * 0.9.3 - 10/17/2000 - G.Juyn * */
-/* * - added callback to process non-critical unknown chunks * */
-/* * * */
-/* * 1.0.1 - 02/08/2001 - G.Juyn * */
-/* * - added MEND processing callback * */
-/* * * */
-/* * 1.0.2 - 06/23/2001 - G.Juyn * */
-/* * - added processterm callback * */
-/* * * */
-/* * 1.0.6 - 07/07/2003 - G. R-P * */
-/* * - added SKIPCHUNK feature * */
-/* * * */
-/* * 1.0.7 - 03/10/2004 - G.R-P * */
-/* * - added conditionals around openstream/closestream * */
-/* * 1.0.7 - 03/19/2004 - G.R-P * */
-/* * - fixed typo (MNG_SKIPCHUNK_SAVE -> MNG_SKIPCHUNK_nEED * */
-/* * * */
-/* * 1.0.8 - 04/10/2004 - G.Juyn * */
-/* * - added data-push mechanisms for specialized decoders * */
-/* * * */
-/* * 1.0.9 - 09/18/2004 - G.R-P. * */
-/* * - added two SKIPCHUNK_TERM conditionals * */
-/* * 1.0.9 - 12/20/2004 - G.Juyn * */
-/* * - cleaned up macro-invocations (thanks to D. Airlie) * */
-/* * * */
-/* ************************************************************************** */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Callback set functions * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_INTERNAL_MEMMNGMT
-mng_retcode MNG_DECL mng_setcb_memalloc (mng_handle hHandle,
- mng_memalloc fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_MEMALLOC, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fMemalloc = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_MEMALLOC, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INTERNAL_MEMMNGMT */
-
-/* ************************************************************************** */
-
-#ifndef MNG_INTERNAL_MEMMNGMT
-mng_retcode MNG_DECL mng_setcb_memfree (mng_handle hHandle,
- mng_memfree fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_MEMFREE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fMemfree = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_MEMFREE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INTERNAL_MEMMNGMT */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_retcode MNG_DECL mng_setcb_releasedata (mng_handle hHandle,
- mng_releasedata fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_RELEASEDATA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fReleasedata = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_RELEASEDATA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#if defined(MNG_SUPPORT_READ) || defined(MNG_SUPPORT_WRITE)
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
-mng_retcode MNG_DECL mng_setcb_openstream (mng_handle hHandle,
- mng_openstream fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_OPENSTREAM, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fOpenstream = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_OPENSTREAM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_SUPPORT_READ || MNG_SUPPORT_WRITE */
-
-/* ************************************************************************** */
-
-#if defined(MNG_SUPPORT_READ) || defined(MNG_SUPPORT_WRITE)
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
-mng_retcode MNG_DECL mng_setcb_closestream (mng_handle hHandle,
- mng_closestream fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_CLOSESTREAM, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fClosestream = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_CLOSESTREAM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_SUPPORT_READ || MNG_SUPPORT_WRITE */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_retcode MNG_DECL mng_setcb_readdata (mng_handle hHandle,
- mng_readdata fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_READDATA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fReaddata = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_READDATA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_WRITE
-mng_retcode MNG_DECL mng_setcb_writedata (mng_handle hHandle,
- mng_writedata fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_WRITEDATA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fWritedata = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_WRITEDATA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_WRITE */
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_setcb_errorproc (mng_handle hHandle,
- mng_errorproc fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_ERRORPROC, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fErrorproc = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_ERRORPROC, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_TRACE
-mng_retcode MNG_DECL mng_setcb_traceproc (mng_handle hHandle,
- mng_traceproc fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_TRACEPROC, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fTraceproc = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_TRACEPROC, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_TRACE */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_retcode MNG_DECL mng_setcb_processheader (mng_handle hHandle,
- mng_processheader fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSHEADER, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fProcessheader = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSHEADER, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-#ifndef MNG_SKIPCHUNK_tEXt
-mng_retcode MNG_DECL mng_setcb_processtext (mng_handle hHandle,
- mng_processtext fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSTEXT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fProcesstext = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSTEXT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-#ifndef MNG_SKIPCHUNK_SAVE
-mng_retcode MNG_DECL mng_setcb_processsave (mng_handle hHandle,
- mng_processsave fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSSAVE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fProcesssave = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSSAVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-#ifndef MNG_SKIPCHUNK_SEEK
-mng_retcode MNG_DECL mng_setcb_processseek (mng_handle hHandle,
- mng_processseek fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSSEEK, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fProcessseek = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSSEEK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-#ifndef MNG_SKIPCHUNK_nEED
-mng_retcode MNG_DECL mng_setcb_processneed (mng_handle hHandle,
- mng_processneed fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSNEED, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fProcessneed = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSNEED, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_retcode MNG_DECL mng_setcb_processmend (mng_handle hHandle,
- mng_processmend fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSMEND, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fProcessmend = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSMEND, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_retcode MNG_DECL mng_setcb_processunknown (mng_handle hHandle,
- mng_processunknown fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSUNKNOWN, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fProcessunknown = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSUNKNOWN, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-#ifndef MNG_SKIPCHUNK_TERM
-mng_retcode MNG_DECL mng_setcb_processterm (mng_handle hHandle,
- mng_processterm fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSTERM, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fProcessterm = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSTERM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_retcode MNG_DECL mng_setcb_getcanvasline (mng_handle hHandle,
- mng_getcanvasline fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_GETCANVASLINE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fGetcanvasline = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_GETCANVASLINE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_retcode MNG_DECL mng_setcb_getbkgdline (mng_handle hHandle,
- mng_getbkgdline fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_GETBKGDLINE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fGetbkgdline = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_GETBKGDLINE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_retcode MNG_DECL mng_setcb_getalphaline (mng_handle hHandle,
- mng_getalphaline fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_GETALPHALINE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fGetalphaline = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_GETALPHALINE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_retcode MNG_DECL mng_setcb_refresh (mng_handle hHandle,
- mng_refresh fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_REFRESH, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fRefresh = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_REFRESH, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_retcode MNG_DECL mng_setcb_gettickcount (mng_handle hHandle,
- mng_gettickcount fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_GETTICKCOUNT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fGettickcount = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_GETTICKCOUNT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_retcode MNG_DECL mng_setcb_settimer (mng_handle hHandle,
- mng_settimer fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_SETTIMER, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fSettimer = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_SETTIMER, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_APP_CMS)
-mng_retcode MNG_DECL mng_setcb_processgamma (mng_handle hHandle,
- mng_processgamma fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSGAMA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fProcessgamma = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSGAMA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY && MNG_APP_CMS */
-
-/* ************************************************************************** */
-
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_APP_CMS)
-#ifndef MNG_SKIPCHUNK_cHRM
-mng_retcode MNG_DECL mng_setcb_processchroma (mng_handle hHandle,
- mng_processchroma fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSCHROMA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fProcesschroma = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSCHROMA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_SUPPORT_DISPLAY && MNG_APP_CMS */
-
-/* ************************************************************************** */
-
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_APP_CMS)
-mng_retcode MNG_DECL mng_setcb_processsrgb (mng_handle hHandle,
- mng_processsrgb fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSSRGB, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fProcesssrgb = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSSRGB, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY && MNG_APP_CMS */
-
-/* ************************************************************************** */
-
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_APP_CMS)
-#ifndef MNG_SKIPCHUNK_iCCP
-mng_retcode MNG_DECL mng_setcb_processiccp (mng_handle hHandle,
- mng_processiccp fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSICCP, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fProcessiccp = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSICCP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_SUPPORT_DISPLAY && MNG_APP_CMS */
-
-/* ************************************************************************** */
-
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_APP_CMS)
-mng_retcode MNG_DECL mng_setcb_processarow (mng_handle hHandle,
- mng_processarow fProc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSAROW, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->fProcessarow = fProc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SETCB_PROCESSAROW, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY && MNG_APP_CMS */
-
-/* ************************************************************************** */
-/* * * */
-/* * Callback get functions * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_INTERNAL_MEMMNGMT
-mng_memalloc MNG_DECL mng_getcb_memalloc (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_MEMALLOC, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_MEMALLOC, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fMemalloc;
-}
-#endif /* MNG_INTERNAL_MEMMNGMT */
-
-/* ************************************************************************** */
-
-#ifndef MNG_INTERNAL_MEMMNGMT
-mng_memfree MNG_DECL mng_getcb_memfree (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_MEMFREE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_MEMFREE, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fMemfree;
-}
-#endif /* MNG_INTERNAL_MEMMNGMT */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_releasedata MNG_DECL mng_getcb_releasedata (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_RELEASEDATA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_RELEASEDATA, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fReleasedata;
-}
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_readdata MNG_DECL mng_getcb_readdata (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_READDATA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_READDATA, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fReaddata;
-}
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#if defined(MNG_SUPPORT_READ) || defined(MNG_SUPPORT_WRITE)
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
-mng_openstream MNG_DECL mng_getcb_openstream (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_OPENSTREAM, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_OPENSTREAM, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fOpenstream;
-}
-#endif
-#endif /* MNG_SUPPORT_READ || MNG_SUPPORT_WRITE */
-
-/* ************************************************************************** */
-
-#if defined(MNG_SUPPORT_READ) || defined(MNG_SUPPORT_WRITE)
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
-mng_closestream MNG_DECL mng_getcb_closestream (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_CLOSESTREAM, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_CLOSESTREAM, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fClosestream;
-}
-#endif
-#endif /* MNG_SUPPORT_READ || MNG_SUPPORT_WRITE */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_WRITE
-mng_writedata MNG_DECL mng_getcb_writedata (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_WRITEDATA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_WRITEDATA, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fWritedata;
-}
-#endif /* MNG_SUPPORT_WRITE */
-
-/* ************************************************************************** */
-
-mng_errorproc MNG_DECL mng_getcb_errorproc (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_ERRORPROC, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_ERRORPROC, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fErrorproc;
-}
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_TRACE
-mng_traceproc MNG_DECL mng_getcb_traceproc (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_TRACEPROC, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_TRACEPROC, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fTraceproc;
-}
-#endif /* MNG_SUPPORT_TRACE */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_processheader MNG_DECL mng_getcb_processheader (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSHEADER, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSHEADER, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fProcessheader;
-}
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-#ifndef MNG_SKIPCHUNK_tEXt
-mng_processtext MNG_DECL mng_getcb_processtext (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSTEXT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSTEXT, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fProcesstext;
-}
-#endif
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-#ifndef MNG_SKIPCHUNK_SAVE
-mng_processsave MNG_DECL mng_getcb_processsave (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSSAVE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSSAVE, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fProcesssave;
-}
-#endif
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-#ifndef MNG_SKIPCHUNK_SEEK
-mng_processseek MNG_DECL mng_getcb_processseek (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSSEEK, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSSEEK, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fProcessseek;
-}
-#endif
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-#ifndef MNG_SKIPCHUNK_nEED
-mng_processneed MNG_DECL mng_getcb_processneed (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSNEED, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSNEED, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fProcessneed;
-}
-#endif
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_processmend MNG_DECL mng_getcb_processmend (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSMEND, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSMEND, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fProcessmend;
-}
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_processunknown MNG_DECL mng_getcb_processunknown (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSUNKNOWN, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSUNKNOWN, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fProcessunknown;
-}
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-#ifndef MNG_SKIPCHUNK_TERM
-mng_processterm MNG_DECL mng_getcb_processterm (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSTERM, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSTERM, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fProcessterm;
-}
-#endif
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_getcanvasline MNG_DECL mng_getcb_getcanvasline (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_GETCANVASLINE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_GETCANVASLINE, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fGetcanvasline;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_getbkgdline MNG_DECL mng_getcb_getbkgdline (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_GETBKGDLINE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_GETBKGDLINE, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fGetbkgdline;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_getalphaline MNG_DECL mng_getcb_getalphaline (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_GETALPHALINE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_GETALPHALINE, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fGetalphaline;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_refresh MNG_DECL mng_getcb_refresh (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_REFRESH, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_REFRESH, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fRefresh;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_gettickcount MNG_DECL mng_getcb_gettickcount (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_GETTICKCOUNT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_GETTICKCOUNT, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fGettickcount;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_settimer MNG_DECL mng_getcb_settimer (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_SETTIMER, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_SETTIMER, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fSettimer;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_APP_CMS)
-mng_processgamma MNG_DECL mng_getcb_processgamma (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSGAMMA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSGAMMA, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fProcessgamma;
-}
-#endif /* MNG_SUPPORT_DISPLAY && MNG_APP_CMS */
-
-/* ************************************************************************** */
-
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_APP_CMS)
-#ifndef MNG_SKIPCHUNK_cHRM
-mng_processchroma MNG_DECL mng_getcb_processchroma (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSCHROMA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSCHROMA, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fProcesschroma;
-}
-#endif
-#endif /* MNG_SUPPORT_DISPLAY && MNG_APP_CMS */
-
-/* ************************************************************************** */
-
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_APP_CMS)
-mng_processsrgb MNG_DECL mng_getcb_processsrgb (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSSRGB, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSSRGB, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fProcesssrgb;
-}
-#endif /* MNG_SUPPORT_DISPLAY && MNG_APP_CMS */
-
-/* ************************************************************************** */
-
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_APP_CMS)
-#ifndef MNG_SKIPCHUNK_iCCP
-mng_processiccp MNG_DECL mng_getcb_processiccp (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSICCP, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSICCP, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fProcessiccp;
-}
-#endif
-#endif /* MNG_SUPPORT_DISPLAY && MNG_APP_CMS */
-
-/* ************************************************************************** */
-
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_APP_CMS)
-mng_processarow MNG_DECL mng_getcb_processarow (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSAROW, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GETCB_PROCESSAROW, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->fProcessarow;
-}
-#endif /* MNG_SUPPORT_DISPLAY && MNG_APP_CMS */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
-
-
diff --git a/src/3rdparty/libmng/libmng_chunk_descr.c b/src/3rdparty/libmng/libmng_chunk_descr.c
deleted file mode 100644
index e1004a5404..0000000000
--- a/src/3rdparty/libmng/libmng_chunk_descr.c
+++ /dev/null
@@ -1,6090 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_chunk_descr.c copyright (c) 2005-2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : Chunk descriptor functions (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of the chunk- anf field-descriptor * */
-/* * routines * */
-/* * * */
-/* * changes : 1.0.9 - 12/06/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_CHUNKREADER * */
-/* * 1.0.9 - 12/11/2004 - G.Juyn * */
-/* * - made all constants 'static' * */
-/* * 1.0.9 - 12/20/2004 - G.Juyn * */
-/* * - cleaned up macro-invocations (thanks to D. Airlie) * */
-/* * 1.0.9 - 01/17/2005 - G.Juyn * */
-/* * - fixed problem with global PLTE/tRNS * */
-/* * * */
-/* * 1.0.10 - 01/17/2005 - G.R-P. * */
-/* * - added typecast to appease the compiler * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * 1.0.10 - 04/12/2007 - G.Juyn * */
-/* * - added support for ANG proposal * */
-/* * * */
-/* ************************************************************************** */
-
-#include <stddef.h> /* needed for offsetof() */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-#include "libmng_memory.h"
-#include "libmng_objects.h"
-#include "libmng_chunks.h"
-#include "libmng_chunk_descr.h"
-#include "libmng_object_prc.h"
-#include "libmng_chunk_prc.h"
-#include "libmng_chunk_io.h"
-#include "libmng_display.h"
-
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-#include "libmng_pixels.h"
-#include "libmng_filter.h"
-#endif
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_OPTIMIZE_CHUNKREADER
-#if defined(MNG_INCLUDE_READ_PROCS) || defined(MNG_INCLUDE_WRITE_PROCS)
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-/* PNG chunks */
-
-MNG_LOCAL mng_field_descriptor mng_fields_ihdr [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_NOHIGHBIT,
- 1, 0, 4, 4,
- offsetof(mng_ihdr, iWidth), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_NOHIGHBIT,
- 1, 0, 4, 4,
- offsetof(mng_ihdr, iHeight), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 1, 16, 1, 1,
- offsetof(mng_ihdr, iBitdepth), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 6, 1, 1,
- offsetof(mng_ihdr, iColortype), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 1, 1,
- offsetof(mng_ihdr, iCompression), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 1, 1,
- offsetof(mng_ihdr, iFilter), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 1, 1, 1,
- offsetof(mng_ihdr, iInterlace), MNG_NULL, MNG_NULL}
- };
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_field_descriptor mng_fields_plte [] =
- {
- {mng_debunk_plte,
- MNG_NULL,
- 0, 0, 0, 0,
- MNG_NULL, MNG_NULL, MNG_NULL}
- };
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_field_descriptor mng_fields_idat [] =
- {
- {MNG_NULL,
- MNG_NULL,
- 0, 0, 0, 0,
- offsetof(mng_idat, pData), MNG_NULL, offsetof(mng_idat, iDatasize)}
- };
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_field_descriptor mng_fields_trns [] =
- {
- {mng_debunk_trns,
- MNG_NULL,
- 0, 0, 0, 0,
- MNG_NULL, MNG_NULL, MNG_NULL}
- };
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_gAMA
-MNG_LOCAL mng_field_descriptor mng_fields_gama [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_gama, iGamma), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_cHRM
-MNG_LOCAL mng_field_descriptor mng_fields_chrm [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_chrm, iWhitepointx), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_chrm, iWhitepointy), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_chrm, iRedx), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_chrm, iRedy), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_chrm, iGreeny), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_chrm, iGreeny), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_chrm, iBluex), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_chrm, iBluey), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sRGB
-MNG_LOCAL mng_field_descriptor mng_fields_srgb [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 4, 1, 1,
- offsetof(mng_srgb, iRenderingintent), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iCCP
-MNG_LOCAL mng_field_descriptor mng_fields_iccp [] =
- {
- {MNG_NULL,
- MNG_FIELD_TERMINATOR,
- 0, 0, 1, 79,
- offsetof(mng_iccp, zName), MNG_NULL, offsetof(mng_iccp, iNamesize)},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 1, 1,
- offsetof(mng_iccp, iCompression), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_DEFLATED,
- 0, 0, 0, 0,
- offsetof(mng_iccp, pProfile), MNG_NULL, offsetof(mng_iccp, iProfilesize)}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_tEXt
-MNG_LOCAL mng_field_descriptor mng_fields_text [] =
- {
- {MNG_NULL,
- MNG_FIELD_TERMINATOR,
- 0, 0, 1, 79,
- offsetof(mng_text, zKeyword), MNG_NULL, offsetof(mng_text, iKeywordsize)},
- {MNG_NULL,
- MNG_NULL,
- 0, 0, 0, 0,
- offsetof(mng_text, zText), MNG_NULL, offsetof(mng_text, iTextsize)}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_zTXt
-MNG_LOCAL mng_field_descriptor mng_fields_ztxt [] =
- {
- {MNG_NULL,
- MNG_FIELD_TERMINATOR,
- 0, 0, 1, 79,
- offsetof(mng_ztxt, zKeyword), MNG_NULL, offsetof(mng_ztxt, iKeywordsize)},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 1, 1,
- offsetof(mng_ztxt, iCompression), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_DEFLATED,
- 0, 0, 0, 0,
- offsetof(mng_ztxt, zText), MNG_NULL, offsetof(mng_ztxt, iTextsize)}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iTXt
-MNG_LOCAL mng_field_descriptor mng_fields_itxt [] =
- {
- {MNG_NULL,
- MNG_FIELD_TERMINATOR,
- 0, 0, 1, 79,
- offsetof(mng_itxt, zKeyword), MNG_NULL, offsetof(mng_itxt, iKeywordsize)},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 1, 1, 1,
- offsetof(mng_itxt, iCompressionflag), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 1, 1,
- offsetof(mng_itxt, iCompressionmethod), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_TERMINATOR,
- 0, 0, 0, 0,
- offsetof(mng_itxt, zLanguage), MNG_NULL, offsetof(mng_itxt, iLanguagesize)},
- {MNG_NULL,
- MNG_FIELD_TERMINATOR,
- 0, 0, 0, 0,
- offsetof(mng_itxt, zTranslation), MNG_NULL, offsetof(mng_itxt, iTranslationsize)},
- {mng_deflate_itxt,
- MNG_NULL,
- 0, 0, 0, 0,
- MNG_NULL, MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_bKGD
-MNG_LOCAL mng_field_descriptor mng_fields_bkgd [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_PUTIMGTYPE,
- 0, 0, 0, 0,
- offsetof(mng_bkgd, iType), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_IFIMGTYPE3,
- 0, 0xFF, 1, 1,
- offsetof(mng_bkgd, iIndex), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_IFIMGTYPE0 | MNG_FIELD_IFIMGTYPE4,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_bkgd, iGray), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_IFIMGTYPE2 | MNG_FIELD_IFIMGTYPE6,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_bkgd, iRed), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_IFIMGTYPE2 | MNG_FIELD_IFIMGTYPE6,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_bkgd, iGreen), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_IFIMGTYPE2 | MNG_FIELD_IFIMGTYPE6,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_bkgd, iBlue), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_pHYs
-MNG_LOCAL mng_field_descriptor mng_fields_phys [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_phys, iSizex), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_phys, iSizey), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 1, 1, 1,
- offsetof(mng_phys, iUnit), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sBIT
-MNG_LOCAL mng_field_descriptor mng_fields_sbit [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_PUTIMGTYPE,
- 0, 0, 0, 0,
- offsetof(mng_sbit, iType), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_IFIMGTYPES,
- 0, 0xFF, 1, 1,
- offsetof(mng_sbit, aBits[0]), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_IFIMGTYPE2 | MNG_FIELD_IFIMGTYPE3 | MNG_FIELD_IFIMGTYPE4 | MNG_FIELD_IFIMGTYPE6,
- 0, 0xFF, 1, 1,
- offsetof(mng_sbit, aBits[1]), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_IFIMGTYPE2 | MNG_FIELD_IFIMGTYPE3 | MNG_FIELD_IFIMGTYPE6,
- 0, 0xFF, 1, 1,
- offsetof(mng_sbit, aBits[2]), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_IFIMGTYPE6,
- 0, 0xFF, 1, 1,
- offsetof(mng_sbit, aBits[3]), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sPLT
-MNG_LOCAL mng_field_descriptor mng_fields_splt [] =
- {
- {MNG_NULL,
- MNG_NULL,
- 0, 0, 1, 79,
- offsetof(mng_splt, zName), MNG_NULL, offsetof(mng_splt, iNamesize)},
- {MNG_NULL,
- MNG_FIELD_INT,
- 8, 16, 1, 1,
- offsetof(mng_splt, iSampledepth), MNG_NULL, MNG_NULL},
- {mng_splt_entries,
- MNG_NULL,
- 0, 0, 0, 0,
- MNG_NULL, MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_hIST
-MNG_LOCAL mng_field_descriptor mng_fields_hist [] =
- {
- {mng_hist_entries,
- MNG_NULL,
- 0, 0, 0, 0,
- MNG_NULL, MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_tIME
-MNG_LOCAL mng_field_descriptor mng_fields_time [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_time, iYear), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 1, 12, 1, 1,
- offsetof(mng_time, iMonth), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 1, 31, 1, 1,
- offsetof(mng_time, iDay), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 24, 1, 1,
- offsetof(mng_time, iHour), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 60, 1, 1,
- offsetof(mng_time, iMinute), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 60, 1, 1,
- offsetof(mng_time, iSecond), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-/* JNG chunks */
-
-#ifdef MNG_INCLUDE_JNG
-MNG_LOCAL mng_field_descriptor mng_fields_jhdr [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_NOHIGHBIT,
- 1, 0, 4, 4,
- offsetof(mng_jhdr, iWidth), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_NOHIGHBIT,
- 1, 0, 4, 4,
- offsetof(mng_jhdr, iHeight), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 8, 16, 1, 1,
- offsetof(mng_jhdr, iColortype), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 8, 20, 1, 1,
- offsetof(mng_jhdr, iImagesampledepth), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 8, 8, 1, 1,
- offsetof(mng_jhdr, iImagecompression), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 8, 1, 1,
- offsetof(mng_jhdr, iImageinterlace), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 16, 1, 1,
- offsetof(mng_jhdr, iAlphasampledepth), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 8, 1, 1,
- offsetof(mng_jhdr, iAlphacompression), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 1, 1,
- offsetof(mng_jhdr, iAlphafilter), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 1, 1, 1,
- offsetof(mng_jhdr, iAlphainterlace), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-#define mng_fields_jdaa mng_fields_idat
-#define mng_fields_jdat mng_fields_idat
-#endif
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-/* MNG chunks */
-
-MNG_LOCAL mng_field_descriptor mng_fields_mhdr [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_mhdr, iWidth), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_mhdr, iHeight), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_mhdr, iTicks), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_mhdr, iLayercount), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_mhdr, iFramecount), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_mhdr, iPlaytime), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_mhdr, iSimplicity), MNG_NULL, MNG_NULL}
- };
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_LOOP
-MNG_LOCAL mng_field_descriptor mng_fields_loop [] =
- {
- {mng_debunk_loop,
- MNG_NULL,
- 0, 0, 0, 0,
- MNG_NULL, MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_LOOP
-MNG_LOCAL mng_field_descriptor mng_fields_endl [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0xFF, 1, 1,
- offsetof(mng_endl, iLevel), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DEFI
-MNG_LOCAL mng_field_descriptor mng_fields_defi [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_defi, iObjectid), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL,
- 0, 0xFF, 1, 1,
- offsetof(mng_defi, iDonotshow), offsetof(mng_defi, bHasdonotshow), MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL,
- 0, 0xFF, 1, 1,
- offsetof(mng_defi, iConcrete), offsetof(mng_defi, bHasconcrete), MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP1,
- 0, 0, 4, 4,
- offsetof(mng_defi, iXlocation), offsetof(mng_defi, bHasloca), MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP1,
- 0, 0, 4, 4,
- offsetof(mng_defi, iYlocation), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP2,
- 0, 0, 4, 4,
- offsetof(mng_defi, iLeftcb), offsetof(mng_defi, bHasclip), MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP2,
- 0, 0, 4, 4,
- offsetof(mng_defi, iRightcb), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP2,
- 0, 0, 4, 4,
- offsetof(mng_defi, iTopcb), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP2,
- 0, 0, 4, 4,
- offsetof(mng_defi, iBottomcb), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_BASI
-MNG_LOCAL mng_field_descriptor mng_fields_basi [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_basi, iWidth), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_basi, iHeight), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 1, 16, 1, 1,
- offsetof(mng_basi, iBitdepth), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 6, 1, 1,
- offsetof(mng_basi, iColortype), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 1, 1,
- offsetof(mng_basi, iCompression), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 1, 1,
- offsetof(mng_basi, iFilter), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 1, 1, 1,
- offsetof(mng_basi, iInterlace), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP1,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_basi, iRed), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP1,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_basi, iGreen), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP1,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_basi, iBlue), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_basi, iAlpha), offsetof(mng_basi, bHasalpha), MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL,
- 0, 1, 1, 1,
- offsetof(mng_basi, iViewable), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_CLON
-MNG_LOCAL mng_field_descriptor mng_fields_clon [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_clon, iSourceid), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_clon, iCloneid), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL,
- 0, 2, 1, 1,
- offsetof(mng_clon, iClonetype), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL,
- 0, 1, 1, 1,
- offsetof(mng_clon, iDonotshow), offsetof(mng_clon, bHasdonotshow), MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL,
- 0, 1, 1, 1,
- offsetof(mng_clon, iConcrete), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP1,
- 0, 2, 1, 1,
- offsetof(mng_clon, iLocationtype), offsetof(mng_clon, bHasloca), MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP1,
- 0, 0, 4, 4,
- offsetof(mng_clon, iLocationx), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP1,
- 0, 0, 4, 4,
- offsetof(mng_clon, iLocationy), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-MNG_LOCAL mng_field_descriptor mng_fields_past [] =
- {
- {mng_debunk_past,
- MNG_NULL,
- 0, 0, 0, 0,
- MNG_NULL, MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DISC
-MNG_LOCAL mng_field_descriptor mng_fields_disc [] =
- {
- {mng_disc_entries,
- MNG_NULL,
- 0, 0, 0, 0,
- MNG_NULL, MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_BACK
-MNG_LOCAL mng_field_descriptor mng_fields_back [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_back, iRed), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_back, iGreen), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_back, iBlue), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL,
- 0, 3, 1, 1,
- offsetof(mng_back, iMandatory), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_back, iImageid), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL,
- 0, 1, 1, 1,
- offsetof(mng_back, iTile), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_FRAM
-MNG_LOCAL mng_field_descriptor mng_fields_fram [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL,
- 0, 4, 1, 1,
- offsetof(mng_fram, iMode), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_TERMINATOR | MNG_FIELD_OPTIONAL,
- 0, 0, 1, 79,
- offsetof(mng_fram, zName), MNG_NULL, offsetof(mng_fram, iNamesize)},
- {mng_fram_remainder,
- MNG_FIELD_OPTIONAL,
- 0, 0, 0, 0,
- MNG_NULL, MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_MOVE
-MNG_LOCAL mng_field_descriptor mng_fields_move [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_move, iFirstid), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_move, iLastid), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 1, 1, 1,
- offsetof(mng_move, iMovetype), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_move, iMovex), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_move, iMovey), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_CLIP
-MNG_LOCAL mng_field_descriptor mng_fields_clip [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_clip, iFirstid), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_clip, iLastid), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 1, 1, 1,
- offsetof(mng_clip, iCliptype), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_clip, iClipl), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_clip, iClipr), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_clip, iClipt), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_clip, iClipb), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SHOW
-MNG_LOCAL mng_field_descriptor mng_fields_show [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 1, 0xFFFF, 2, 2,
- offsetof(mng_show, iFirstid), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL,
- 1, 0xFFFF, 2, 2,
- offsetof(mng_show, iLastid), offsetof(mng_show, bHaslastid), MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL,
- 0, 7, 1, 1,
- offsetof(mng_show, iMode), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_TERM
-MNG_LOCAL mng_field_descriptor mng_fields_term [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 3, 1, 1,
- offsetof(mng_term, iTermaction), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP1,
- 0, 2, 1, 1,
- offsetof(mng_term, iIteraction), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP1,
- 0, 0, 4, 4,
- offsetof(mng_term, iDelay), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP1,
- 0, 0, 4, 4,
- offsetof(mng_term, iItermax), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SAVE
-MNG_LOCAL mng_field_descriptor mng_fields_save [] =
- {
- {mng_save_entries,
- MNG_NULL,
- 0, 0, 0, 0,
- MNG_NULL, MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SEEK
-MNG_LOCAL mng_field_descriptor mng_fields_seek [] =
- {
- {MNG_NULL,
- MNG_NULL,
- 0, 0, 1, 79,
- offsetof(mng_seek, zName), MNG_NULL, offsetof(mng_seek, iNamesize)}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_eXPI
-MNG_LOCAL mng_field_descriptor mng_fields_expi [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_expi, iSnapshotid), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_NULL,
- 0, 0, 1, 79,
- offsetof(mng_expi, zName), MNG_NULL, offsetof(mng_expi, iNamesize)}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_fPRI
-MNG_LOCAL mng_field_descriptor mng_fields_fpri [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 1, 1, 1,
- offsetof(mng_fpri, iDeltatype), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0xFF, 1, 1,
- offsetof(mng_fpri, iPriority), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_nEED
-MNG_LOCAL mng_field_descriptor mng_fields_need [] =
- {
- {MNG_NULL,
- MNG_NULL,
- 0, 0, 1, 0,
- offsetof(mng_need, zKeywords), MNG_NULL, offsetof(mng_need, iKeywordssize)}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_pHYg
-#define mng_fields_phyg mng_fields_phys
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-MNG_LOCAL mng_field_descriptor mng_fields_dhdr [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_dhdr, iObjectid), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 2, 1, 1,
- offsetof(mng_dhdr, iImagetype), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 7, 1, 1,
- offsetof(mng_dhdr, iDeltatype), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP1,
- 0, 0, 4, 4,
- offsetof(mng_dhdr, iBlockwidth), offsetof(mng_dhdr, bHasblocksize), MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP1,
- 0, 0, 4, 4,
- offsetof(mng_dhdr, iBlockheight), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP2,
- 0, 0, 4, 4,
- offsetof(mng_dhdr, iBlockx), offsetof(mng_dhdr, bHasblockloc), MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT | MNG_FIELD_OPTIONAL | MNG_FIELD_GROUP2,
- 0, 0, 4, 4,
- offsetof(mng_dhdr, iBlocky), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-MNG_LOCAL mng_field_descriptor mng_fields_prom [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 14, 1, 1,
- offsetof(mng_prom, iColortype), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 16, 1, 1,
- offsetof(mng_prom, iSampledepth), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 1, 1, 1,
- offsetof(mng_prom, iFilltype), MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-MNG_LOCAL mng_field_descriptor mng_fields_pplt [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 5, 1, 1,
- offsetof(mng_pplt, iDeltatype), MNG_NULL, MNG_NULL},
- {mng_pplt_entries,
- MNG_NULL,
- 0, 0, 0, 0,
- MNG_NULL, MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-MNG_LOCAL mng_field_descriptor mng_fields_drop [] =
- {
- {mng_drop_entries,
- MNG_NULL,
- 0, 0, 0, 0,
- MNG_NULL, MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_DBYK
-MNG_LOCAL mng_field_descriptor mng_fields_dbyk [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_dbyk, iChunkname), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 1, 1, 1,
- offsetof(mng_dbyk, iPolarity), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_NULL,
- 0, 0, 1, 0,
- offsetof(mng_dbyk, zKeywords), MNG_NULL, offsetof(mng_dbyk, iKeywordssize)}
- };
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_ORDR
-MNG_LOCAL mng_field_descriptor mng_fields_ordr [] =
- {
- {mng_drop_entries,
- MNG_NULL,
- 0, 0, 0, 0,
- MNG_NULL, MNG_NULL, MNG_NULL}
- };
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_MAGN
-MNG_LOCAL mng_field_descriptor mng_fields_magn [] =
- {
- {mng_debunk_magn,
- MNG_NULL,
- 0, 0, 0, 0,
- MNG_NULL, MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-MNG_LOCAL mng_field_descriptor mng_fields_mpng [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 1, 0, 4, 4,
- offsetof(mng_mpng, iFramewidth), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 1, 0, 4, 4,
- offsetof(mng_mpng, iFrameheight), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0xFFFF, 2, 2,
- offsetof(mng_mpng, iNumplays), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 1, 0xFFFF, 2, 2,
- offsetof(mng_mpng, iTickspersec), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 1, 1,
- offsetof(mng_mpng, iCompressionmethod), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_DEFLATED,
- 0, 0, 1, 0,
- offsetof(mng_mpng, pFrames), MNG_NULL, offsetof(mng_mpng, iFramessize)}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-MNG_LOCAL mng_field_descriptor mng_fields_ahdr [] =
- {
- {MNG_NULL,
- MNG_FIELD_INT,
- 1, 0, 4, 4,
- offsetof(mng_ahdr, iNumframes), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_ahdr, iTickspersec), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 0, 4, 4,
- offsetof(mng_ahdr, iNumplays), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 1, 0, 4, 4,
- offsetof(mng_ahdr, iTilewidth), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 1, 0, 4, 4,
- offsetof(mng_ahdr, iTileheight), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 1, 1, 1,
- offsetof(mng_ahdr, iInterlace), MNG_NULL, MNG_NULL},
- {MNG_NULL,
- MNG_FIELD_INT,
- 0, 1, 1, 1,
- offsetof(mng_ahdr, iStillused), MNG_NULL, MNG_NULL}
- };
-
-MNG_LOCAL mng_field_descriptor mng_fields_adat [] =
- {
- {mng_adat_tiles,
- MNG_NULL,
- 0, 0, 0, 0,
- MNG_NULL, MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_evNT
-MNG_LOCAL mng_field_descriptor mng_fields_evnt [] =
- {
- {mng_evnt_entries,
- MNG_NULL,
- 0, 0, 0, 0,
- MNG_NULL, MNG_NULL, MNG_NULL}
- };
-#endif
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_field_descriptor mng_fields_unknown [] =
- {
- {MNG_NULL,
- MNG_NULL,
- 0, 0, 1, 0,
- offsetof(mng_unknown_chunk, pData), MNG_NULL, offsetof(mng_unknown_chunk, iDatasize)}
- };
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-/* PNG chunks */
-
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_ihdr =
- {mng_it_png, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_ihdr,
- mng_fields_ihdr, (sizeof(mng_fields_ihdr) / sizeof(mng_field_descriptor)),
- MNG_DESCR_GLOBAL,
- MNG_NULL,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOJHDR | MNG_DESCR_NOBASI | MNG_DESCR_NOIDAT | MNG_DESCR_NOPLTE};
-
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_plte =
- {mng_it_png, mng_create_none, 0, offsetof(mng_plte, bEmpty),
- MNG_NULL, MNG_NULL, mng_special_plte,
- mng_fields_plte, (sizeof(mng_fields_plte) / sizeof(mng_field_descriptor)),
- MNG_DESCR_GLOBAL | MNG_DESCR_EMPTYEMBED,
- MNG_DESCR_GenHDR,
- MNG_DESCR_NOIDAT | MNG_DESCR_NOJDAT | MNG_DESCR_NOJDAA};
-
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_idat =
- {mng_it_png, mng_create_none, 0, offsetof(mng_idat, bEmpty),
- MNG_NULL, MNG_NULL, mng_special_idat,
- mng_fields_idat, (sizeof(mng_fields_idat) / sizeof(mng_field_descriptor)),
- MNG_DESCR_EMPTYEMBED,
- MNG_DESCR_GenHDR,
- MNG_DESCR_NOJSEP};
-
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_iend =
- {mng_it_png, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_iend,
- MNG_NULL, 0,
- MNG_DESCR_EMPTY | MNG_DESCR_EMPTYEMBED,
- MNG_DESCR_GenHDR,
- MNG_NULL};
-
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_trns =
- {mng_it_png, mng_create_none, 0, offsetof(mng_trns, bEmpty),
- MNG_NULL, MNG_NULL, mng_special_trns,
- mng_fields_trns, (sizeof(mng_fields_trns) / sizeof(mng_field_descriptor)),
- MNG_DESCR_GLOBAL | MNG_DESCR_EMPTYEMBED,
- MNG_DESCR_GenHDR,
- MNG_DESCR_NOIDAT | MNG_DESCR_NOJDAT | MNG_DESCR_NOJDAA};
-
-#ifndef MNG_SKIPCHUNK_gAMA
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_gama =
- {mng_it_png, mng_create_none, 0, offsetof(mng_gama, bEmpty),
- MNG_NULL, MNG_NULL, mng_special_gama,
- mng_fields_gama, (sizeof(mng_fields_gama) / sizeof(mng_field_descriptor)),
- MNG_DESCR_GLOBAL | MNG_DESCR_EMPTYEMBED | MNG_DESCR_EMPTYGLOBAL,
- MNG_DESCR_GenHDR,
- MNG_DESCR_NOPLTE | MNG_DESCR_NOIDAT | MNG_DESCR_NOJDAT | MNG_DESCR_NOJDAA};
-#endif
-
-#ifndef MNG_SKIPCHUNK_cHRM
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_chrm =
- {mng_it_png, mng_create_none, 0, offsetof(mng_chrm, bEmpty),
- MNG_NULL, MNG_NULL, mng_special_chrm,
- mng_fields_chrm, (sizeof(mng_fields_chrm) / sizeof(mng_field_descriptor)),
- MNG_DESCR_GLOBAL | MNG_DESCR_EMPTYEMBED | MNG_DESCR_EMPTYGLOBAL,
- MNG_DESCR_GenHDR,
- MNG_DESCR_NOPLTE | MNG_DESCR_NOIDAT | MNG_DESCR_NOJDAT | MNG_DESCR_NOJDAA};
-#endif
-
-#ifndef MNG_SKIPCHUNK_sRGB
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_srgb =
- {mng_it_png, mng_create_none, 0, offsetof(mng_srgb, bEmpty),
- MNG_NULL, MNG_NULL, mng_special_srgb,
- mng_fields_srgb, (sizeof(mng_fields_srgb) / sizeof(mng_field_descriptor)),
- MNG_DESCR_GLOBAL | MNG_DESCR_EMPTYEMBED | MNG_DESCR_EMPTYGLOBAL,
- MNG_DESCR_GenHDR,
- MNG_DESCR_NOPLTE | MNG_DESCR_NOIDAT | MNG_DESCR_NOJDAT | MNG_DESCR_NOJDAA};
-#endif
-
-#ifndef MNG_SKIPCHUNK_iCCP
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_iccp =
- {mng_it_png, mng_create_none, 0, offsetof(mng_iccp, bEmpty),
- MNG_NULL, MNG_NULL, mng_special_iccp,
- mng_fields_iccp, (sizeof(mng_fields_iccp) / sizeof(mng_field_descriptor)),
- MNG_DESCR_GLOBAL | MNG_DESCR_EMPTYEMBED | MNG_DESCR_EMPTYGLOBAL,
- MNG_DESCR_GenHDR,
- MNG_DESCR_NOPLTE | MNG_DESCR_NOIDAT | MNG_DESCR_NOJDAT | MNG_DESCR_NOJDAA};
-#endif
-
-#ifndef MNG_SKIPCHUNK_tEXt
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_text =
- {mng_it_png, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_text,
- mng_fields_text, (sizeof(mng_fields_text) / sizeof(mng_field_descriptor)),
- MNG_DESCR_GLOBAL,
- MNG_DESCR_GenHDR,
- MNG_NULL};
-#endif
-
-#ifndef MNG_SKIPCHUNK_zTXt
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_ztxt =
- {mng_it_png, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_ztxt,
- mng_fields_ztxt, (sizeof(mng_fields_ztxt) / sizeof(mng_field_descriptor)),
- MNG_DESCR_GLOBAL,
- MNG_DESCR_GenHDR,
- MNG_NULL};
-#endif
-
-#ifndef MNG_SKIPCHUNK_iTXt
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_itxt =
- {mng_it_png, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_itxt,
- mng_fields_itxt, (sizeof(mng_fields_itxt) / sizeof(mng_field_descriptor)),
- MNG_DESCR_GLOBAL,
- MNG_DESCR_GenHDR,
- MNG_NULL};
-#endif
-
-#ifndef MNG_SKIPCHUNK_bKGD
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_bkgd =
- {mng_it_png, mng_create_none, 0, offsetof(mng_bkgd, bEmpty),
- MNG_NULL, MNG_NULL, mng_special_bkgd,
- mng_fields_bkgd, (sizeof(mng_fields_bkgd) / sizeof(mng_field_descriptor)),
- MNG_DESCR_GLOBAL | MNG_DESCR_EMPTYEMBED | MNG_DESCR_EMPTYGLOBAL,
- MNG_DESCR_GenHDR,
- MNG_DESCR_NOIDAT | MNG_DESCR_NOJDAT | MNG_DESCR_NOJDAA};
-#endif
-
-#ifndef MNG_SKIPCHUNK_pHYs
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_phys =
- {mng_it_png, mng_create_none, 0, offsetof(mng_phys, bEmpty),
- MNG_NULL, MNG_NULL, mng_special_phys,
- mng_fields_phys, (sizeof(mng_fields_phys) / sizeof(mng_field_descriptor)),
- MNG_DESCR_GLOBAL | MNG_DESCR_EMPTYEMBED | MNG_DESCR_EMPTYGLOBAL,
- MNG_DESCR_GenHDR,
- MNG_DESCR_NOIDAT | MNG_DESCR_NOJDAT | MNG_DESCR_NOJDAA};
-#endif
-
-#ifndef MNG_SKIPCHUNK_sBIT
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_sbit =
- {mng_it_png, mng_create_none, 0, offsetof(mng_sbit, bEmpty),
- MNG_NULL, MNG_NULL, mng_special_sbit,
- mng_fields_sbit, (sizeof(mng_fields_sbit) / sizeof(mng_field_descriptor)),
- MNG_DESCR_GLOBAL | MNG_DESCR_EMPTYEMBED | MNG_DESCR_EMPTYGLOBAL,
- MNG_DESCR_GenHDR,
- MNG_DESCR_NOIDAT | MNG_DESCR_NOJDAT | MNG_DESCR_NOJDAA};
-#endif
-
-#ifndef MNG_SKIPCHUNK_sPLT
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_splt =
- {mng_it_png, mng_create_none, 0, offsetof(mng_splt, bEmpty),
- MNG_NULL, MNG_NULL, mng_special_splt,
- mng_fields_splt, (sizeof(mng_fields_splt) / sizeof(mng_field_descriptor)),
- MNG_DESCR_GLOBAL | MNG_DESCR_EMPTYEMBED | MNG_DESCR_EMPTYGLOBAL,
- MNG_DESCR_GenHDR,
- MNG_DESCR_NOIDAT | MNG_DESCR_NOJDAT | MNG_DESCR_NOJDAA};
-#endif
-
-#ifndef MNG_SKIPCHUNK_hIST
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_hist =
- {mng_it_png, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_hist,
- mng_fields_hist, (sizeof(mng_fields_hist) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_GenHDR | MNG_DESCR_PLTE,
- MNG_DESCR_NOIDAT | MNG_DESCR_NOJDAT | MNG_DESCR_NOJDAA};
-#endif
-
-#ifndef MNG_SKIPCHUNK_tIME
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_time =
- {mng_it_png, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_time,
- mng_fields_time, (sizeof(mng_fields_time) / sizeof(mng_field_descriptor)),
- MNG_DESCR_GLOBAL,
- MNG_DESCR_GenHDR,
- MNG_NULL};
-#endif
-
-/* ************************************************************************** */
-/* JNG chunks */
-
-#ifdef MNG_INCLUDE_JNG
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_jhdr =
- {mng_it_jng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_jhdr,
- mng_fields_jhdr, (sizeof(mng_fields_jhdr) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_NULL,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifdef MNG_INCLUDE_JNG
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_jdaa =
- {mng_it_jng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_jdaa,
- mng_fields_jdaa, (sizeof(mng_fields_jdaa) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_JngHDR,
- MNG_DESCR_NOJSEP};
-#endif
-
-#ifdef MNG_INCLUDE_JNG
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_jdat =
- {mng_it_jng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_jdat,
- mng_fields_jdat, (sizeof(mng_fields_jdat) / sizeof(mng_field_descriptor)),
- MNG_DESCR_EMPTYEMBED,
- MNG_DESCR_JngHDR,
- MNG_NULL};
-#endif
-
-#ifdef MNG_INCLUDE_JNG
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_jsep =
- {mng_it_jng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_jsep,
- MNG_NULL, 0,
- MNG_DESCR_EMPTY | MNG_DESCR_EMPTYEMBED,
- MNG_DESCR_JngHDR,
- MNG_DESCR_NOJSEP};
-#endif
-
-/* ************************************************************************** */
-/* MNG chunks */
-
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_mhdr =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_mhdr,
- mng_fields_mhdr, (sizeof(mng_fields_mhdr) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_NULL,
- MNG_DESCR_NOMHDR | MNG_DESCR_NOIHDR | MNG_DESCR_NOJHDR};
-
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_mend =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_mend,
- MNG_NULL, 0,
- MNG_DESCR_EMPTY | MNG_DESCR_EMPTYGLOBAL,
- MNG_DESCR_MHDR,
- MNG_NULL};
-
-#ifndef MNG_SKIPCHUNK_LOOP
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_loop =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_loop,
- mng_fields_loop, (sizeof(mng_fields_loop) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_endl =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_endl,
- mng_fields_endl, (sizeof(mng_fields_endl) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_SKIPCHUNK_DEFI
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_defi =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_defi,
- mng_fields_defi, (sizeof(mng_fields_defi) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_SKIPCHUNK_BASI
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_basi =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_basi,
- mng_fields_basi, (sizeof(mng_fields_basi) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_SKIPCHUNK_CLON
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_clon =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_clon,
- mng_fields_clon, (sizeof(mng_fields_clon) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_SKIPCHUNK_PAST
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_past =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_past,
- mng_fields_past, (sizeof(mng_fields_past) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_SKIPCHUNK_DISC
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_disc =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_disc,
- mng_fields_disc, (sizeof(mng_fields_disc) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_SKIPCHUNK_BACK
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_back =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_back,
- mng_fields_back, (sizeof(mng_fields_back) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_SKIPCHUNK_FRAM
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_fram =
- {mng_it_mng, mng_create_none, 0, offsetof(mng_fram, bEmpty),
- MNG_NULL, MNG_NULL, mng_special_fram,
- mng_fields_fram, (sizeof(mng_fields_fram) / sizeof(mng_field_descriptor)),
- MNG_DESCR_EMPTY | MNG_DESCR_EMPTYGLOBAL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_SKIPCHUNK_MOVE
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_move =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_move,
- mng_fields_move, (sizeof(mng_fields_move) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_SKIPCHUNK_CLIP
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_clip =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_clip,
- mng_fields_clip, (sizeof(mng_fields_clip) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_SKIPCHUNK_SHOW
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_show =
- {mng_it_mng, mng_create_none, 0, offsetof(mng_show, bEmpty),
- MNG_NULL, MNG_NULL, mng_special_show,
- mng_fields_show, (sizeof(mng_fields_show) / sizeof(mng_field_descriptor)),
- MNG_DESCR_EMPTY | MNG_DESCR_EMPTYGLOBAL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_SKIPCHUNK_TERM
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_term =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_term,
- mng_fields_term, (sizeof(mng_fields_term) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR | MNG_DESCR_NOTERM | MNG_DESCR_NOLOOP};
-#endif
-
-#ifndef MNG_SKIPCHUNK_SAVE
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_save =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_save,
- mng_fields_save, (sizeof(mng_fields_save) / sizeof(mng_field_descriptor)),
- MNG_DESCR_EMPTY | MNG_DESCR_EMPTYGLOBAL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOSAVE | MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_SKIPCHUNK_SEEK
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_seek =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_seek,
- mng_fields_seek, (sizeof(mng_fields_seek) / sizeof(mng_field_descriptor)),
- MNG_DESCR_EMPTY | MNG_DESCR_EMPTYGLOBAL,
- MNG_DESCR_MHDR | MNG_DESCR_SAVE,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_SKIPCHUNK_eXPI
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_expi =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_expi,
- mng_fields_expi, (sizeof(mng_fields_expi) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_SKIPCHUNK_fPRI
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_fpri =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_fpri,
- mng_fields_fpri, (sizeof(mng_fields_fpri) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_SKIPCHUNK_nEED
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_need =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_need,
- mng_fields_need, (sizeof(mng_fields_need) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_SKIPCHUNK_pHYg
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_phyg =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_phyg,
- mng_fields_phyg, (sizeof(mng_fields_phyg) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_NO_DELTA_PNG
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_dhdr =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_dhdr,
- mng_fields_dhdr, (sizeof(mng_fields_dhdr) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_NO_DELTA_PNG
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_prom =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_prom,
- mng_fields_prom, (sizeof(mng_fields_prom) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR | MNG_DESCR_DHDR,
- MNG_NULL};
-#endif
-
-#ifndef MNG_NO_DELTA_PNG
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_ipng =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_ipng,
- MNG_NULL, 0,
- MNG_DESCR_EMPTY | MNG_DESCR_EMPTYEMBED,
- MNG_DESCR_MHDR | MNG_DESCR_DHDR,
- MNG_NULL};
-#endif
-
-#ifndef MNG_NO_DELTA_PNG
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_pplt =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_pplt,
- mng_fields_pplt, (sizeof(mng_fields_pplt) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR | MNG_DESCR_DHDR,
- MNG_NULL};
-#endif
-
-#ifndef MNG_NO_DELTA_PNG
-#ifdef MNG_INCLUDE_JNG
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_ijng =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_ijng,
- MNG_NULL, 0,
- MNG_DESCR_EMPTY | MNG_DESCR_EMPTYEMBED,
- MNG_DESCR_MHDR | MNG_DESCR_DHDR,
- MNG_NULL};
-#endif
-#endif
-
-#ifndef MNG_NO_DELTA_PNG
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_drop =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_drop,
- mng_fields_drop, (sizeof(mng_fields_drop) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR | MNG_DESCR_DHDR,
- MNG_NULL};
-#endif
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_DBYK
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_dbyk =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_dbyk,
- mng_fields_dbyk, (sizeof(mng_fields_dbyk) / sizeof(mng_field_descriptor)),
- MNG_DESCR_EMPTY | MNG_DESCR_EMPTYEMBED,
- MNG_DESCR_MHDR | MNG_DESCR_DHDR,
- MNG_NULL};
-#endif
-#endif
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_ORDR
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_ordr =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_ordr,
- mng_fields_ordr, (sizeof(mng_fields_ordr) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR | MNG_DESCR_DHDR,
- MNG_NULL};
-#endif
-#endif
-
-#ifndef MNG_SKIPCHUNK_MAGN
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_magn =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_magn,
- mng_fields_magn, (sizeof(mng_fields_magn) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOIHDR | MNG_DESCR_NOBASI | MNG_DESCR_NODHDR | MNG_DESCR_NOJHDR};
-#endif
-
-#ifndef MNG_SKIPCHUNK_evNT
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_evnt =
- {mng_it_mng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_evnt,
- mng_fields_evnt, (sizeof(mng_fields_evnt) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_MHDR,
- MNG_DESCR_NOSAVE};
-#endif
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_mpng =
- {mng_it_mpng, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_mpng,
- mng_fields_mpng, (sizeof(mng_fields_mpng) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_NULL,
- MNG_DESCR_NOMHDR | MNG_DESCR_NOIDAT | MNG_DESCR_NOJDAT};
-#endif
-
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_ahdr =
- {mng_it_ang, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_ahdr,
- mng_fields_ahdr, (sizeof(mng_fields_ahdr) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_IHDR,
- MNG_DESCR_NOMHDR | MNG_DESCR_NOJHDR | MNG_DESCR_NOIDAT};
-
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_adat =
- {mng_it_ang, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_adat,
- mng_fields_adat, (sizeof(mng_fields_adat) / sizeof(mng_field_descriptor)),
- MNG_NULL,
- MNG_DESCR_IHDR,
- MNG_DESCR_NOMHDR | MNG_DESCR_NOJHDR};
-#endif
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-/* the good ol' unknown babe */
-
-MNG_LOCAL mng_chunk_descriptor mng_chunk_descr_unknown =
- {mng_it_png, mng_create_none, 0, 0,
- MNG_NULL, MNG_NULL, mng_special_unknown,
- mng_fields_unknown, (sizeof(mng_fields_unknown) / sizeof(mng_field_descriptor)),
- MNG_DESCR_EMPTY | MNG_DESCR_EMPTYEMBED,
- MNG_NULL,
- MNG_NULL};
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-MNG_LOCAL mng_chunk_header mng_chunk_unknown =
- {MNG_UINT_HUH, mng_init_general, mng_free_unknown,
- mng_read_general, mng_write_unknown, mng_assign_unknown,
- 0, 0, sizeof(mng_unknown_chunk), &mng_chunk_descr_unknown};
-
-/* ************************************************************************** */
-
- /* the table-idea & binary search code was adapted from
- libpng 1.1.0 (pngread.c) */
- /* NOTE1: the table must remain sorted by chunkname, otherwise the binary
- search will break !!! (ps. watch upper-/lower-case chunknames !!) */
- /* NOTE2: the layout must remain equal to the header part of all the
- chunk-structures (yes, that means even the pNext and pPrev fields;
- it's wasting a bit of space, but hey, the code is a lot easier) */
-
-MNG_LOCAL mng_chunk_header mng_chunk_table [] =
- {
-#ifndef MNG_SKIPCHUNK_BACK
- {MNG_UINT_BACK, mng_init_general, mng_free_general, mng_read_general, mng_write_back, mng_assign_general, 0, 0, sizeof(mng_back), &mng_chunk_descr_back},
-#endif
-#ifndef MNG_SKIPCHUNK_BASI
- {MNG_UINT_BASI, mng_init_general, mng_free_general, mng_read_general, mng_write_basi, mng_assign_general, 0, 0, sizeof(mng_basi), &mng_chunk_descr_basi},
-#endif
-#ifndef MNG_SKIPCHUNK_CLIP
- {MNG_UINT_CLIP, mng_init_general, mng_free_general, mng_read_general, mng_write_clip, mng_assign_general, 0, 0, sizeof(mng_clip), &mng_chunk_descr_clip},
-#endif
-#ifndef MNG_SKIPCHUNK_CLON
- {MNG_UINT_CLON, mng_init_general, mng_free_general, mng_read_general, mng_write_clon, mng_assign_general, 0, 0, sizeof(mng_clon), &mng_chunk_descr_clon},
-#endif
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_DBYK
- {MNG_UINT_DBYK, mng_init_general, mng_free_dbyk, mng_read_general, mng_write_dbyk, mng_assign_dbyk, 0, 0, sizeof(mng_dbyk), &mng_chunk_descr_dbyk},
-#endif
-#endif
-#ifndef MNG_SKIPCHUNK_DEFI
- {MNG_UINT_DEFI, mng_init_general, mng_free_general, mng_read_general, mng_write_defi, mng_assign_general, 0, 0, sizeof(mng_defi), &mng_chunk_descr_defi},
-#endif
-#ifndef MNG_NO_DELTA_PNG
- {MNG_UINT_DHDR, mng_init_general, mng_free_general, mng_read_general, mng_write_dhdr, mng_assign_general, 0, 0, sizeof(mng_dhdr), &mng_chunk_descr_dhdr},
-#endif
-#ifndef MNG_SKIPCHUNK_DISC
- {MNG_UINT_DISC, mng_init_general, mng_free_disc, mng_read_general, mng_write_disc, mng_assign_disc, 0, 0, sizeof(mng_disc), &mng_chunk_descr_disc},
-#endif
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_DROP
- {MNG_UINT_DROP, mng_init_general, mng_free_drop, mng_read_general, mng_write_drop, mng_assign_drop, 0, 0, sizeof(mng_drop), &mng_chunk_descr_drop},
-#endif
-#endif
-#ifndef MNG_SKIPCHUNK_LOOP
- {MNG_UINT_ENDL, mng_init_general, mng_free_general, mng_read_general, mng_write_endl, mng_assign_general, 0, 0, sizeof(mng_endl), &mng_chunk_descr_endl},
-#endif
-#ifndef MNG_SKIPCHUNK_FRAM
- {MNG_UINT_FRAM, mng_init_general, mng_free_fram, mng_read_general, mng_write_fram, mng_assign_fram, 0, 0, sizeof(mng_fram), &mng_chunk_descr_fram},
-#endif
- {MNG_UINT_IDAT, mng_init_general, mng_free_idat, mng_read_general, mng_write_idat, mng_assign_idat, 0, 0, sizeof(mng_idat), &mng_chunk_descr_idat}, /* 12-th element! */
- {MNG_UINT_IEND, mng_init_general, mng_free_general, mng_read_general, mng_write_iend, mng_assign_general, 0, 0, sizeof(mng_iend), &mng_chunk_descr_iend},
- {MNG_UINT_IHDR, mng_init_general, mng_free_general, mng_read_general, mng_write_ihdr, mng_assign_general, 0, 0, sizeof(mng_ihdr), &mng_chunk_descr_ihdr},
-#ifndef MNG_NO_DELTA_PNG
-#ifdef MNG_INCLUDE_JNG
- {MNG_UINT_IJNG, mng_init_general, mng_free_general, mng_read_general, mng_write_ijng, mng_assign_general, 0, 0, sizeof(mng_ijng), &mng_chunk_descr_ijng},
-#endif
- {MNG_UINT_IPNG, mng_init_general, mng_free_general, mng_read_general, mng_write_ipng, mng_assign_general, 0, 0, sizeof(mng_ipng), &mng_chunk_descr_ipng},
-#endif
-#ifdef MNG_INCLUDE_JNG
- {MNG_UINT_JDAA, mng_init_general, mng_free_jdaa, mng_read_general, mng_write_jdaa, mng_assign_jdaa, 0, 0, sizeof(mng_jdaa), &mng_chunk_descr_jdaa},
- {MNG_UINT_JDAT, mng_init_general, mng_free_jdat, mng_read_general, mng_write_jdat, mng_assign_jdat, 0, 0, sizeof(mng_jdat), &mng_chunk_descr_jdat},
- {MNG_UINT_JHDR, mng_init_general, mng_free_general, mng_read_general, mng_write_jhdr, mng_assign_general, 0, 0, sizeof(mng_jhdr), &mng_chunk_descr_jhdr},
- {MNG_UINT_JSEP, mng_init_general, mng_free_general, mng_read_general, mng_write_jsep, mng_assign_general, 0, 0, sizeof(mng_jsep), &mng_chunk_descr_jsep},
- {MNG_UINT_JdAA, mng_init_general, mng_free_jdaa, mng_read_general, mng_write_jdaa, mng_assign_jdaa, 0, 0, sizeof(mng_jdaa), &mng_chunk_descr_jdaa},
-#endif
-#ifndef MNG_SKIPCHUNK_LOOP
- {MNG_UINT_LOOP, mng_init_general, mng_free_loop, mng_read_general, mng_write_loop, mng_assign_loop, 0, 0, sizeof(mng_loop), &mng_chunk_descr_loop},
-#endif
-#ifndef MNG_SKIPCHUNK_MAGN
- {MNG_UINT_MAGN, mng_init_general, mng_free_general, mng_read_general, mng_write_magn, mng_assign_general, 0, 0, sizeof(mng_magn), &mng_chunk_descr_magn},
-#endif
- {MNG_UINT_MEND, mng_init_general, mng_free_general, mng_read_general, mng_write_mend, mng_assign_general, 0, 0, sizeof(mng_mend), &mng_chunk_descr_mend},
- {MNG_UINT_MHDR, mng_init_general, mng_free_general, mng_read_general, mng_write_mhdr, mng_assign_general, 0, 0, sizeof(mng_mhdr), &mng_chunk_descr_mhdr},
-#ifndef MNG_SKIPCHUNK_MOVE
- {MNG_UINT_MOVE, mng_init_general, mng_free_general, mng_read_general, mng_write_move, mng_assign_general, 0, 0, sizeof(mng_move), &mng_chunk_descr_move},
-#endif
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_ORDR
- {MNG_UINT_ORDR, mng_init_general, mng_free_ordr, mng_read_general, mng_write_ordr, mng_assign_ordr, 0, 0, sizeof(mng_ordr), &mng_chunk_descr_ordr},
-#endif
-#endif
-#ifndef MNG_SKIPCHUNK_PAST
- {MNG_UINT_PAST, mng_init_general, mng_free_past, mng_read_general, mng_write_past, mng_assign_past, 0, 0, sizeof(mng_past), &mng_chunk_descr_past},
-#endif
- {MNG_UINT_PLTE, mng_init_general, mng_free_general, mng_read_general, mng_write_plte, mng_assign_general, 0, 0, sizeof(mng_plte), &mng_chunk_descr_plte},
-#ifndef MNG_NO_DELTA_PNG
- {MNG_UINT_PPLT, mng_init_general, mng_free_general, mng_read_general, mng_write_pplt, mng_assign_general, 0, 0, sizeof(mng_pplt), &mng_chunk_descr_pplt},
- {MNG_UINT_PROM, mng_init_general, mng_free_general, mng_read_general, mng_write_prom, mng_assign_general, 0, 0, sizeof(mng_prom), &mng_chunk_descr_prom},
-#endif
-#ifndef MNG_SKIPCHUNK_SAVE
- {MNG_UINT_SAVE, mng_init_general, mng_free_save, mng_read_general, mng_write_save, mng_assign_save, 0, 0, sizeof(mng_save), &mng_chunk_descr_save},
-#endif
-#ifndef MNG_SKIPCHUNK_SEEK
- {MNG_UINT_SEEK, mng_init_general, mng_free_seek, mng_read_general, mng_write_seek, mng_assign_seek, 0, 0, sizeof(mng_seek), &mng_chunk_descr_seek},
-#endif
-#ifndef MNG_SKIPCHUNK_SHOW
- {MNG_UINT_SHOW, mng_init_general, mng_free_general, mng_read_general, mng_write_show, mng_assign_general, 0, 0, sizeof(mng_show), &mng_chunk_descr_show},
-#endif
-#ifndef MNG_SKIPCHUNK_TERM
- {MNG_UINT_TERM, mng_init_general, mng_free_general, mng_read_general, mng_write_term, mng_assign_general, 0, 0, sizeof(mng_term), &mng_chunk_descr_term},
-#endif
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
- {MNG_UINT_adAT, mng_init_general, mng_free_adat, mng_read_general, mng_write_adat, mng_assign_adat, 0, 0, sizeof(mng_adat), &mng_chunk_descr_adat},
- {MNG_UINT_ahDR, mng_init_general, mng_free_general, mng_read_general, mng_write_ahdr, mng_assign_ahdr, 0, 0, sizeof(mng_ahdr), &mng_chunk_descr_ahdr},
-#endif
-#ifndef MNG_SKIPCHUNK_bKGD
- {MNG_UINT_bKGD, mng_init_general, mng_free_general, mng_read_general, mng_write_bkgd, mng_assign_general, 0, 0, sizeof(mng_bkgd), &mng_chunk_descr_bkgd},
-#endif
-#ifndef MNG_SKIPCHUNK_cHRM
- {MNG_UINT_cHRM, mng_init_general, mng_free_general, mng_read_general, mng_write_chrm, mng_assign_general, 0, 0, sizeof(mng_chrm), &mng_chunk_descr_chrm},
-#endif
-#ifndef MNG_SKIPCHUNK_eXPI
- {MNG_UINT_eXPI, mng_init_general, mng_free_expi, mng_read_general, mng_write_expi, mng_assign_expi, 0, 0, sizeof(mng_expi), &mng_chunk_descr_expi},
-#endif
-#ifndef MNG_SKIPCHUNK_evNT
- {MNG_UINT_evNT, mng_init_general, mng_free_evnt, mng_read_general, mng_write_evnt, mng_assign_evnt, 0, 0, sizeof(mng_evnt), &mng_chunk_descr_evnt},
-#endif
-#ifndef MNG_SKIPCHUNK_fPRI
- {MNG_UINT_fPRI, mng_init_general, mng_free_general, mng_read_general, mng_write_fpri, mng_assign_general, 0, 0, sizeof(mng_fpri), &mng_chunk_descr_fpri},
-#endif
-#ifndef MNG_SKIPCHUNK_gAMA
- {MNG_UINT_gAMA, mng_init_general, mng_free_general, mng_read_general, mng_write_gama, mng_assign_general, 0, 0, sizeof(mng_gama), &mng_chunk_descr_gama},
-#endif
-#ifndef MNG_SKIPCHUNK_hIST
- {MNG_UINT_hIST, mng_init_general, mng_free_general, mng_read_general, mng_write_hist, mng_assign_general, 0, 0, sizeof(mng_hist), &mng_chunk_descr_hist},
-#endif
-#ifndef MNG_SKIPCHUNK_iCCP
- {MNG_UINT_iCCP, mng_init_general, mng_free_iccp, mng_read_general, mng_write_iccp, mng_assign_iccp, 0, 0, sizeof(mng_iccp), &mng_chunk_descr_iccp},
-#endif
-#ifndef MNG_SKIPCHUNK_iTXt
- {MNG_UINT_iTXt, mng_init_general, mng_free_itxt, mng_read_general, mng_write_itxt, mng_assign_itxt, 0, 0, sizeof(mng_itxt), &mng_chunk_descr_itxt},
-#endif
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- {MNG_UINT_mpNG, mng_init_general, mng_free_mpng, mng_read_general, mng_write_mpng, mng_assign_mpng, 0, 0, sizeof(mng_mpng), &mng_chunk_descr_mpng},
-#endif
-#ifndef MNG_SKIPCHUNK_nEED
- {MNG_UINT_nEED, mng_init_general, mng_free_need, mng_read_general, mng_write_need, mng_assign_need, 0, 0, sizeof(mng_need), &mng_chunk_descr_need},
-#endif
-/* TODO: {MNG_UINT_oFFs, 0, 0, 0, 0, 0, 0}, */
-/* TODO: {MNG_UINT_pCAL, 0, 0, 0, 0, 0, 0}, */
-#ifndef MNG_SKIPCHUNK_pHYg
- {MNG_UINT_pHYg, mng_init_general, mng_free_general, mng_read_general, mng_write_phyg, mng_assign_general, 0, 0, sizeof(mng_phyg), &mng_chunk_descr_phyg},
-#endif
-#ifndef MNG_SKIPCHUNK_pHYs
- {MNG_UINT_pHYs, mng_init_general, mng_free_general, mng_read_general, mng_write_phys, mng_assign_general, 0, 0, sizeof(mng_phys), &mng_chunk_descr_phys},
-#endif
-#ifndef MNG_SKIPCHUNK_sBIT
- {MNG_UINT_sBIT, mng_init_general, mng_free_general, mng_read_general, mng_write_sbit, mng_assign_general, 0, 0, sizeof(mng_sbit), &mng_chunk_descr_sbit},
-#endif
-/* TODO: {MNG_UINT_sCAL, 0, 0, 0, 0, 0, 0}, */
-#ifndef MNG_SKIPCHUNK_sPLT
- {MNG_UINT_sPLT, mng_init_general, mng_free_splt, mng_read_general, mng_write_splt, mng_assign_splt, 0, 0, sizeof(mng_splt), &mng_chunk_descr_splt},
-#endif
- {MNG_UINT_sRGB, mng_init_general, mng_free_general, mng_read_general, mng_write_srgb, mng_assign_general, 0, 0, sizeof(mng_srgb), &mng_chunk_descr_srgb},
-#ifndef MNG_SKIPCHUNK_tEXt
- {MNG_UINT_tEXt, mng_init_general, mng_free_text, mng_read_general, mng_write_text, mng_assign_text, 0, 0, sizeof(mng_text), &mng_chunk_descr_text},
-#endif
-#ifndef MNG_SKIPCHUNK_tIME
- {MNG_UINT_tIME, mng_init_general, mng_free_general, mng_read_general, mng_write_time, mng_assign_general, 0, 0, sizeof(mng_time), &mng_chunk_descr_time},
-#endif
- {MNG_UINT_tRNS, mng_init_general, mng_free_general, mng_read_general, mng_write_trns, mng_assign_general, 0, 0, sizeof(mng_trns), &mng_chunk_descr_trns},
-#ifndef MNG_SKIPCHUNK_zTXt
- {MNG_UINT_zTXt, mng_init_general, mng_free_ztxt, mng_read_general, mng_write_ztxt, mng_assign_ztxt, 0, 0, sizeof(mng_ztxt), &mng_chunk_descr_ztxt},
-#endif
- };
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-void mng_get_chunkheader (mng_chunkid iChunkname,
- mng_chunk_headerp pResult)
-{
- /* binary search variables */
- mng_int32 iTop, iLower, iUpper, iMiddle;
- mng_chunk_headerp pEntry; /* pointer to found entry */
- /* determine max index of table */
- iTop = (sizeof (mng_chunk_table) / sizeof (mng_chunk_table [0])) - 1;
-
- /* binary search; with 54 chunks, worst-case is 7 comparisons */
- iLower = 0;
-#ifndef MNG_NO_DELTA_PNG
- iMiddle = 11; /* start with the IDAT entry */
-#else
- iMiddle = 8;
-#endif
- iUpper = iTop;
- pEntry = 0; /* no goods yet! */
-
- do /* the binary search itself */
- {
- if (mng_chunk_table [iMiddle].iChunkname < iChunkname)
- iLower = iMiddle + 1;
- else if (mng_chunk_table [iMiddle].iChunkname > iChunkname)
- iUpper = iMiddle - 1;
- else
- {
- pEntry = &mng_chunk_table [iMiddle];
- break;
- }
- iMiddle = (iLower + iUpper) >> 1;
- }
- while (iLower <= iUpper);
-
- if (!pEntry) /* unknown chunk ? */
- pEntry = &mng_chunk_unknown; /* make it so! */
-
- MNG_COPY (pResult, pEntry, sizeof(mng_chunk_header));
-
- return;
-}
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-/* PNG chunks */
-
-MNG_C_SPECIALFUNC (mng_special_ihdr)
-{
- pData->bHasIHDR = MNG_TRUE; /* indicate IHDR is present */
- /* and store interesting fields */
- if ((!pData->bHasDHDR) || (pData->iDeltatype == MNG_DELTATYPE_NOCHANGE))
- {
- pData->iDatawidth = ((mng_ihdrp)pChunk)->iWidth;
- pData->iDataheight = ((mng_ihdrp)pChunk)->iHeight;
- }
-
- pData->iBitdepth = ((mng_ihdrp)pChunk)->iBitdepth;
- pData->iColortype = ((mng_ihdrp)pChunk)->iColortype;
- pData->iCompression = ((mng_ihdrp)pChunk)->iCompression;
- pData->iFilter = ((mng_ihdrp)pChunk)->iFilter;
- pData->iInterlace = ((mng_ihdrp)pChunk)->iInterlace;
-
-#if defined(MNG_NO_1_2_4BIT_SUPPORT) || defined(MNG_NO_16BIT_SUPPORT)
- pData->iPNGmult = 1;
- pData->iPNGdepth = pData->iBitdepth;
-#endif
-
-#ifdef MNG_NO_1_2_4BIT_SUPPORT
- if (pData->iBitdepth < 8)
- pData->iBitdepth = 8;
-#endif
-
-#ifdef MNG_NO_16BIT_SUPPORT
- if (pData->iBitdepth > 8)
- {
- pData->iBitdepth = 8;
- pData->iPNGmult = 2;
- }
-#endif
-
- if ((pData->iBitdepth != 8) /* parameter validity checks */
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- && (pData->iBitdepth != 1) &&
- (pData->iBitdepth != 2) &&
- (pData->iBitdepth != 4)
-#endif
-#ifndef MNG_NO_16BIT_SUPPORT
- && (pData->iBitdepth != 16)
-#endif
- )
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
- if ((pData->iColortype != MNG_COLORTYPE_GRAY ) &&
- (pData->iColortype != MNG_COLORTYPE_RGB ) &&
- (pData->iColortype != MNG_COLORTYPE_INDEXED) &&
- (pData->iColortype != MNG_COLORTYPE_GRAYA ) &&
- (pData->iColortype != MNG_COLORTYPE_RGBA ) )
- MNG_ERROR (pData, MNG_INVALIDCOLORTYPE);
-
- if ((pData->iColortype == MNG_COLORTYPE_INDEXED) && (pData->iBitdepth > 8))
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
- if (((pData->iColortype == MNG_COLORTYPE_RGB ) ||
- (pData->iColortype == MNG_COLORTYPE_GRAYA ) ||
- (pData->iColortype == MNG_COLORTYPE_RGBA ) ) &&
- (pData->iBitdepth < 8 ) )
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
- if (pData->iCompression != MNG_COMPRESSION_DEFLATE)
- MNG_ERROR (pData, MNG_INVALIDCOMPRESS);
-
-#if defined(FILTER192) || defined(FILTER193)
- if ((pData->iFilter != MNG_FILTER_ADAPTIVE ) &&
-#if defined(FILTER192) && defined(FILTER193)
- (pData->iFilter != MNG_FILTER_DIFFERING) &&
- (pData->iFilter != MNG_FILTER_NOFILTER ) )
-#else
-#ifdef FILTER192
- (pData->iFilter != MNG_FILTER_DIFFERING) )
-#else
- (pData->iFilter != MNG_FILTER_NOFILTER ) )
-#endif
-#endif
- MNG_ERROR (pData, MNG_INVALIDFILTER);
-#else
- if (pData->iFilter)
- MNG_ERROR (pData, MNG_INVALIDFILTER);
-#endif
-
- if ((pData->iInterlace != MNG_INTERLACE_NONE ) &&
- (pData->iInterlace != MNG_INTERLACE_ADAM7) )
- MNG_ERROR (pData, MNG_INVALIDINTERLACE);
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* check the colortype for delta-images ! */
- {
- mng_imagedatap pBuf = ((mng_imagep)pData->pObjzero)->pImgbuf;
-
- if (pData->iColortype != pBuf->iColortype)
- {
- if ( ( (pData->iColortype != MNG_COLORTYPE_INDEXED) ||
- (pBuf->iColortype == MNG_COLORTYPE_GRAY ) ) &&
- ( (pData->iColortype != MNG_COLORTYPE_GRAY ) ||
- (pBuf->iColortype == MNG_COLORTYPE_INDEXED) ) )
- MNG_ERROR (pData, MNG_INVALIDCOLORTYPE);
- }
- }
-#endif
-#endif
-
- if (!pData->bHasheader) /* first chunk ? */
- {
- pData->bHasheader = MNG_TRUE; /* we've got a header */
- pData->eImagetype = mng_it_png; /* then this must be a PNG */
- pData->iWidth = pData->iDatawidth;
- pData->iHeight = pData->iDataheight;
- /* predict alpha-depth ! */
- if ((pData->iColortype == MNG_COLORTYPE_GRAYA ) ||
- (pData->iColortype == MNG_COLORTYPE_RGBA ) )
- pData->iAlphadepth = pData->iBitdepth;
- else
- if (pData->iColortype == MNG_COLORTYPE_INDEXED)
- pData->iAlphadepth = 8; /* worst case scenario */
- else
- pData->iAlphadepth = 1; /* Possible tRNS cheap binary transparency */
- /* fits on maximum canvas ? */
- if ((pData->iWidth > pData->iMaxwidth) || (pData->iHeight > pData->iMaxheight))
- MNG_WARNING (pData, MNG_IMAGETOOLARGE);
-
-#if !defined(MNG_INCLUDE_MPNG_PROPOSAL) || !defined(MNG_SUPPORT_DISPLAY)
- if (pData->fProcessheader) /* inform the app ? */
- if (!pData->fProcessheader (((mng_handle)pData), pData->iWidth, pData->iHeight))
- MNG_ERROR (pData, MNG_APPMISCERROR);
-#endif
- }
-
- if (!pData->bHasDHDR)
- pData->iImagelevel++; /* one level deeper */
-
-#ifdef MNG_SUPPORT_DISPLAY
- return mng_process_display_ihdr (pData);
-#else
- return MNG_NOERROR;
-#endif /* MNG_SUPPORT_DISPLAY */
-}
-
-/* ************************************************************************** */
-
-MNG_F_SPECIALFUNC (mng_debunk_plte)
-{
- mng_pltep pPLTE = (mng_pltep)pChunk;
- mng_uint32 iRawlen = *piRawlen;
- mng_uint8p pRawdata = *ppRawdata;
- /* length must be multiple of 3 */
- if (((iRawlen % 3) != 0) || (iRawlen > 768))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- /* this is the exact length */
- pPLTE->iEntrycount = iRawlen / 3;
-
- MNG_COPY (pPLTE->aEntries, pRawdata, iRawlen);
-
- *piRawlen = 0;
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-MNG_C_SPECIALFUNC (mng_special_plte)
-{ /* multiple PLTE only inside BASI */
- if ((pData->bHasPLTE) && (!pData->bHasBASI))
- MNG_ERROR (pData, MNG_MULTIPLEERROR);
-
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- { /* only allowed for indexed-color or
- rgb(a)-color! */
- if ((pData->iColortype != MNG_COLORTYPE_RGB ) &&
- (pData->iColortype != MNG_COLORTYPE_INDEXED) &&
- (pData->iColortype != MNG_COLORTYPE_RGBA ) )
- MNG_ERROR (pData, MNG_CHUNKNOTALLOWED);
- /* empty only allowed if global present */
- if ((((mng_pltep)pChunk)->bEmpty) && (!pData->bHasglobalPLTE))
- MNG_ERROR (pData, MNG_CANNOTBEEMPTY);
- }
- else
- {
- if (((mng_pltep)pChunk)->bEmpty) /* cannot be empty as global! */
- MNG_ERROR (pData, MNG_CANNOTBEEMPTY);
- }
-
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- pData->bHasPLTE = MNG_TRUE; /* got it! */
- else
- pData->bHasglobalPLTE = MNG_TRUE;
-
- pData->iPLTEcount = ((mng_pltep)pChunk)->iEntrycount;
-
-#ifdef MNG_SUPPORT_DISPLAY
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- {
- mng_imagep pImage;
- mng_imagedatap pBuf;
-
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* processing delta-image ? */
- { /* store in object 0 !!! */
- pImage = (mng_imagep)pData->pObjzero;
- pBuf = pImage->pImgbuf;
- pBuf->bHasPLTE = MNG_TRUE; /* it's definitely got a PLTE now */
- pBuf->iPLTEcount = ((mng_pltep)pChunk)->iEntrycount;
- MNG_COPY (pBuf->aPLTEentries, ((mng_pltep)pChunk)->aEntries,
- sizeof (pBuf->aPLTEentries));
- }
- else
-#endif
- { /* get the current object */
- pImage = (mng_imagep)pData->pCurrentobj;
- if (!pImage) /* no object then dump it in obj 0 */
- pImage = (mng_imagep)pData->pObjzero;
-
- pBuf = pImage->pImgbuf; /* address the object buffer */
- pBuf->bHasPLTE = MNG_TRUE; /* and tell it it's got a PLTE now */
-
- if (((mng_pltep)pChunk)->bEmpty) /* if empty, inherit from global */
- {
- pBuf->iPLTEcount = pData->iGlobalPLTEcount;
- MNG_COPY (pBuf->aPLTEentries, pData->aGlobalPLTEentries,
- sizeof (pBuf->aPLTEentries));
-
- if (pData->bHasglobalTRNS) /* also copy global tRNS ? */
- {
- mng_uint32 iRawlen2 = pData->iGlobalTRNSrawlen;
- mng_uint8p pRawdata2 = (mng_uint8p)(pData->aGlobalTRNSrawdata);
- /* indicate tRNS available */
- pBuf->bHasTRNS = MNG_TRUE;
- /* global length oke ? */
- if ((iRawlen2 == 0) || (iRawlen2 > pBuf->iPLTEcount))
- MNG_ERROR (pData, MNG_GLOBALLENGTHERR);
- /* copy it */
- pBuf->iTRNScount = iRawlen2;
- MNG_COPY (pBuf->aTRNSentries, pRawdata2, iRawlen2);
- }
- }
- else
- { /* store fields for future reference */
- pBuf->iPLTEcount = ((mng_pltep)pChunk)->iEntrycount;
- MNG_COPY (pBuf->aPLTEentries, ((mng_pltep)pChunk)->aEntries,
- sizeof (pBuf->aPLTEentries));
- }
- }
- }
- else /* store as global */
- {
- pData->iGlobalPLTEcount = ((mng_pltep)pChunk)->iEntrycount;
- MNG_COPY (pData->aGlobalPLTEentries, ((mng_pltep)pChunk)->aEntries,
- sizeof (pData->aGlobalPLTEentries));
- /* create an animation object */
- return mng_create_ani_plte (pData);
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-
-/* ************************************************************************** */
-
-MNG_C_SPECIALFUNC (mng_special_idat)
-{
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasJHDR) &&
- (pData->iJHDRalphacompression != MNG_COMPRESSION_DEFLATE))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-#endif
- /* not allowed for deltatype NO_CHANGE */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && ((pData->iDeltatype == MNG_DELTATYPE_NOCHANGE)))
- MNG_ERROR (pData, MNG_CHUNKNOTALLOWED);
-#endif
- /* can only be empty in BASI-block! */
- if ((((mng_idatp)pChunk)->bEmpty) && (!pData->bHasBASI))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- /* indexed-color requires PLTE */
- if ((pData->bHasIHDR) && (pData->iColortype == 3) && (!pData->bHasPLTE))
- MNG_ERROR (pData, MNG_PLTEMISSING);
-
- pData->bHasIDAT = MNG_TRUE; /* got some IDAT now, don't we */
-
- return MNG_NOERROR; /* done */
-}
-
-/* ************************************************************************** */
-
-MNG_C_SPECIALFUNC (mng_special_iend)
-{ /* IHDR-block requires IDAT */
- if ((pData->bHasIHDR) && (!pData->bHasIDAT))
- MNG_ERROR (pData, MNG_IDATMISSING);
-
- pData->iImagelevel--; /* one level up */
-
-#ifdef MNG_SUPPORT_DISPLAY
- { /* create an animation object */
- mng_retcode iRetcode = mng_create_ani_image (pData);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* display processing */
- iRetcode = mng_process_display_iend (pData);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_SUPPORT_DISPLAY
- if (!pData->bTimerset) /* reset only if not broken !!! */
- {
-#endif
- /* IEND signals the end for most ... */
- pData->bHasIHDR = MNG_FALSE;
- pData->bHasBASI = MNG_FALSE;
- pData->bHasDHDR = MNG_FALSE;
-#ifdef MNG_INCLUDE_JNG
- pData->bHasJHDR = MNG_FALSE;
- pData->bHasJSEP = MNG_FALSE;
- pData->bHasJDAA = MNG_FALSE;
- pData->bHasJDAT = MNG_FALSE;
-#endif
- pData->bHasPLTE = MNG_FALSE;
- pData->bHasTRNS = MNG_FALSE;
- pData->bHasGAMA = MNG_FALSE;
- pData->bHasCHRM = MNG_FALSE;
- pData->bHasSRGB = MNG_FALSE;
- pData->bHasICCP = MNG_FALSE;
- pData->bHasBKGD = MNG_FALSE;
- pData->bHasIDAT = MNG_FALSE;
-#ifdef MNG_SUPPORT_DISPLAY
- }
-#endif
-
- return MNG_NOERROR; /* done */
-}
-
-/* ************************************************************************** */
-
-MNG_F_SPECIALFUNC (mng_debunk_trns)
-{
- mng_trnsp pTRNS = (mng_trnsp)pChunk;
- mng_uint32 iRawlen = *piRawlen;
- mng_uint8p pRawdata = *ppRawdata;
-
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- { /* not global! */
- pTRNS->bGlobal = MNG_FALSE;
- pTRNS->iType = pData->iColortype;
-
- if (iRawlen != 0)
- {
- switch (pData->iColortype) /* store fields */
- {
- case 0: { /* gray */
- if (iRawlen != 2)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- pTRNS->iGray = mng_get_uint16 (pRawdata);
- break;
- }
- case 2: { /* rgb */
- if (iRawlen != 6)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- pTRNS->iRed = mng_get_uint16 (pRawdata);
- pTRNS->iGreen = mng_get_uint16 (pRawdata+2);
- pTRNS->iBlue = mng_get_uint16 (pRawdata+4);
- break;
- }
- case 3: { /* indexed */
- if (iRawlen > 256)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- pTRNS->iCount = iRawlen;
- MNG_COPY (pTRNS->aEntries, pRawdata, iRawlen);
- break;
- }
- }
- }
- }
- else /* it's global! */
- {
- if (iRawlen == 0)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- pTRNS->bGlobal = MNG_TRUE;
- pTRNS->iType = 0;
- pTRNS->iRawlen = iRawlen;
- MNG_COPY (pTRNS->aRawdata, pRawdata, iRawlen);
-
- pData->iGlobalTRNSrawlen = iRawlen;
- MNG_COPY (pData->aGlobalTRNSrawdata, pRawdata, iRawlen);
- }
-
- *piRawlen = 0;
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-MNG_C_SPECIALFUNC (mng_special_trns)
-{ /* multiple tRNS only inside BASI */
- if ((pData->bHasTRNS) && (!pData->bHasBASI))
- MNG_ERROR (pData, MNG_MULTIPLEERROR);
-
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- { /* not allowed with full alpha-channel */
- if ((pData->iColortype == 4) || (pData->iColortype == 6))
- MNG_ERROR (pData, MNG_CHUNKNOTALLOWED);
-
- if (!((mng_trnsp)pChunk)->bEmpty) /* filled ? */
- {
-#ifdef MNG_SUPPORT_DISPLAY
- if (pData->iColortype == 3)
- {
- mng_imagep pImage = (mng_imagep)pData->pCurrentobj;
- mng_imagedatap pBuf;
-
- if (!pImage) /* no object then check obj 0 */
- pImage = (mng_imagep)pData->pObjzero;
-
- pBuf = pImage->pImgbuf; /* address object buffer */
-
- if (((mng_trnsp)pChunk)->iCount > pBuf->iPLTEcount)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
-#endif
- }
- else /* if empty there must be global stuff! */
- {
- if (!pData->bHasglobalTRNS)
- MNG_ERROR (pData, MNG_CANNOTBEEMPTY);
- }
- }
-
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- pData->bHasTRNS = MNG_TRUE; /* indicate tRNS available */
- else
- pData->bHasglobalTRNS = MNG_TRUE;
-
-#ifdef MNG_SUPPORT_DISPLAY
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- {
- mng_imagep pImage;
- mng_imagedatap pBuf;
- mng_uint8p pRawdata2;
- mng_uint32 iRawlen2;
-
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* processing delta-image ? */
- { /* store in object 0 !!! */
-#if defined(MNG_NO_1_2_4BIT_SUPPORT)
- mng_uint8 multiplier[]={0,255,85,0,17,0,0,0,1,0,0,0,0,0,0,0,1};
-#endif
- pImage = (mng_imagep)pData->pObjzero;
- pBuf = pImage->pImgbuf; /* address object buffer */
- pBuf->bHasTRNS = MNG_TRUE; /* tell it it's got a tRNS now */
- pBuf->iTRNSgray = 0;
- pBuf->iTRNSred = 0;
- pBuf->iTRNSgreen = 0;
- pBuf->iTRNSblue = 0;
- pBuf->iTRNScount = 0;
-
- switch (pData->iColortype) /* store fields for future reference */
- {
- case 0: { /* gray */
- pBuf->iTRNSgray = ((mng_trnsp)pChunk)->iGray;
-#if defined(MNG_NO_1_2_4BIT_SUPPORT)
- pBuf->iTRNSgray *= multiplier[pData->iPNGdepth];
-#endif
-#if defined(MNG_NO_16BIT_SUPPORT)
- if (pData->iPNGmult == 2)
- pBuf->iTRNSgray >>= 8;
-#endif
- break;
- }
- case 2: { /* rgb */
- pBuf->iTRNSred = ((mng_trnsp)pChunk)->iRed;
- pBuf->iTRNSgreen = ((mng_trnsp)pChunk)->iGreen;
- pBuf->iTRNSblue = ((mng_trnsp)pChunk)->iBlue;
-#if defined(MNG_NO_16BIT_SUPPORT)
- if (pData->iPNGmult == 2)
- {
- pBuf->iTRNSred >>= 8;
- pBuf->iTRNSgreen >>= 8;
- pBuf->iTRNSblue >>= 8;
- }
-#endif
- break;
- }
- case 3: { /* indexed */
- pBuf->iTRNScount = ((mng_trnsp)pChunk)->iCount;
- MNG_COPY (pBuf->aTRNSentries,
- ((mng_trnsp)pChunk)->aEntries,
- ((mng_trnsp)pChunk)->iCount);
- break;
- }
- }
- }
- else
-#endif
- { /* address current object */
- pImage = (mng_imagep)pData->pCurrentobj;
-
- if (!pImage) /* no object then dump it in obj 0 */
- pImage = (mng_imagep)pData->pObjzero;
-
- pBuf = pImage->pImgbuf; /* address object buffer */
- pBuf->bHasTRNS = MNG_TRUE; /* and tell it it's got a tRNS now */
- pBuf->iTRNSgray = 0;
- pBuf->iTRNSred = 0;
- pBuf->iTRNSgreen = 0;
- pBuf->iTRNSblue = 0;
- pBuf->iTRNScount = 0;
-
- if (((mng_trnsp)pChunk)->bEmpty) /* if empty, inherit from global */
- {
- iRawlen2 = pData->iGlobalTRNSrawlen;
- pRawdata2 = (mng_ptr)(pData->aGlobalTRNSrawdata);
- /* global length oke ? */
- if ((pData->iColortype == 0) && (iRawlen2 != 2))
- MNG_ERROR (pData, MNG_GLOBALLENGTHERR);
-
- if ((pData->iColortype == 2) && (iRawlen2 != 6))
- MNG_ERROR (pData, MNG_GLOBALLENGTHERR);
-
- if ((pData->iColortype == 3) && ((iRawlen2 == 0) || (iRawlen2 > pBuf->iPLTEcount)))
- MNG_ERROR (pData, MNG_GLOBALLENGTHERR);
-
- switch (pData->iColortype) /* store fields for future reference */
- {
- case 0: { /* gray */
- pBuf->iTRNSgray = mng_get_uint16 (pRawdata2);
-#if defined(MNG_NO_16BIT_SUPPORT)
- if (pData->iPNGmult == 2)
- pBuf->iTRNSgray >>= 8;
-#endif
- break;
- }
- case 2: { /* rgb */
- pBuf->iTRNSred = mng_get_uint16 (pRawdata2);
- pBuf->iTRNSgreen = mng_get_uint16 (pRawdata2+2);
- pBuf->iTRNSblue = mng_get_uint16 (pRawdata2+4);
-#if defined(MNG_NO_16BIT_SUPPORT)
- if (pData->iPNGmult == 2)
- {
- pBuf->iTRNSred >>= 8;
- pBuf->iTRNSgreen >>= 8;
- pBuf->iTRNSblue >>= 8;
- }
-#endif
- break;
- }
- case 3: { /* indexed */
- pBuf->iTRNScount = iRawlen2;
- MNG_COPY (pBuf->aTRNSentries, pRawdata2, iRawlen2);
- break;
- }
- }
- }
- else
- {
- switch (pData->iColortype) /* store fields for future reference */
- {
- case 0: { /* gray */
- pBuf->iTRNSgray = ((mng_trnsp)pChunk)->iGray;
-#if defined(MNG_NO_16BIT_SUPPORT)
- if (pData->iPNGmult == 2)
- pBuf->iTRNSgray >>= 8;
-#endif
- break;
- }
- case 2: { /* rgb */
- pBuf->iTRNSred = ((mng_trnsp)pChunk)->iRed;
- pBuf->iTRNSgreen = ((mng_trnsp)pChunk)->iGreen;
- pBuf->iTRNSblue = ((mng_trnsp)pChunk)->iBlue;
-#if defined(MNG_NO_16BIT_SUPPORT)
- if (pData->iPNGmult == 2)
- {
- pBuf->iTRNSred >>= 8;
- pBuf->iTRNSgreen >>= 8;
- pBuf->iTRNSblue >>= 8;
- }
-#endif
- break;
- }
- case 3: { /* indexed */
- pBuf->iTRNScount = ((mng_trnsp)pChunk)->iCount;
- MNG_COPY (pBuf->aTRNSentries,
- ((mng_trnsp)pChunk)->aEntries,
- ((mng_trnsp)pChunk)->iCount);
- break;
- }
- }
- }
- }
- }
- else
- { /* create an animation object */
- return mng_create_ani_trns (pData);
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-
-/* ************************************************************************** */
-
-MNG_C_SPECIALFUNC (mng_special_gama)
-{
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- pData->bHasGAMA = MNG_TRUE; /* indicate we've got it */
- else
- pData->bHasglobalGAMA = (mng_bool)!((mng_gamap)pChunk)->bEmpty;
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- {
- mng_imagep pImage;
-
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* update delta image ? */
- pImage = (mng_imagep)pData->pObjzero;
- else
-#endif
- {
- pImage = (mng_imagep)pData->pCurrentobj;
- if (!pImage) /* no object then dump it in obj 0 */
- pImage = (mng_imagep)pData->pObjzero;
- }
- /* store for color-processing routines */
- pImage->pImgbuf->iGamma = ((mng_gamap)pChunk)->iGamma;
- pImage->pImgbuf->bHasGAMA = MNG_TRUE;
- }
- else
- { /* store as global */
- if (!((mng_gamap)pChunk)->bEmpty)
- pData->iGlobalGamma = ((mng_gamap)pChunk)->iGamma;
- /* create an animation object */
- return mng_create_ani_gama (pData, pChunk);
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_cHRM
-MNG_C_SPECIALFUNC (mng_special_chrm)
-{
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- pData->bHasCHRM = MNG_TRUE; /* indicate we've got it */
- else
- pData->bHasglobalCHRM = (mng_bool)!((mng_chrmp)pChunk)->bEmpty;
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- {
- mng_imagep pImage;
- mng_imagedatap pBuf;
-
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* update delta image ? */
- pImage = (mng_imagep)pData->pObjzero;
- else
-#endif
- {
- pImage = (mng_imagep)pData->pCurrentobj;
- if (!pImage) /* no object then dump it in obj 0 */
- pImage = (mng_imagep)pData->pObjzero;
- }
-
- pBuf = pImage->pImgbuf; /* address object buffer */
- pBuf->bHasCHRM = MNG_TRUE; /* and tell it it's got a CHRM now */
- /* store for color-processing routines */
- pBuf->iWhitepointx = ((mng_chrmp)pChunk)->iWhitepointx;
- pBuf->iWhitepointy = ((mng_chrmp)pChunk)->iWhitepointy;
- pBuf->iPrimaryredx = ((mng_chrmp)pChunk)->iRedx;
- pBuf->iPrimaryredy = ((mng_chrmp)pChunk)->iRedy;
- pBuf->iPrimarygreenx = ((mng_chrmp)pChunk)->iGreenx;
- pBuf->iPrimarygreeny = ((mng_chrmp)pChunk)->iGreeny;
- pBuf->iPrimarybluex = ((mng_chrmp)pChunk)->iBluex;
- pBuf->iPrimarybluey = ((mng_chrmp)pChunk)->iBluey;
- }
- else
- { /* store as global */
- if (!((mng_chrmp)pChunk)->bEmpty)
- {
- pData->iGlobalWhitepointx = ((mng_chrmp)pChunk)->iWhitepointx;
- pData->iGlobalWhitepointy = ((mng_chrmp)pChunk)->iWhitepointy;
- pData->iGlobalPrimaryredx = ((mng_chrmp)pChunk)->iRedx;
- pData->iGlobalPrimaryredy = ((mng_chrmp)pChunk)->iRedy;
- pData->iGlobalPrimarygreenx = ((mng_chrmp)pChunk)->iGreenx;
- pData->iGlobalPrimarygreeny = ((mng_chrmp)pChunk)->iGreeny;
- pData->iGlobalPrimarybluex = ((mng_chrmp)pChunk)->iBluex;
- pData->iGlobalPrimarybluey = ((mng_chrmp)pChunk)->iBluey;
- }
- /* create an animation object */
- return mng_create_ani_chrm (pData, pChunk);
- }
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-MNG_C_SPECIALFUNC (mng_special_srgb)
-{
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- pData->bHasSRGB = MNG_TRUE; /* indicate we've got it */
- else
- pData->bHasglobalSRGB = (mng_bool)!((mng_srgbp)pChunk)->bEmpty;
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- {
- mng_imagep pImage;
-
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* update delta image ? */
- pImage = (mng_imagep)pData->pObjzero;
- else
-#endif
- {
- pImage = (mng_imagep)pData->pCurrentobj;
- if (!pImage) /* no object then dump it in obj 0 */
- pImage = (mng_imagep)pData->pObjzero;
- }
- /* store for color-processing routines */
- pImage->pImgbuf->iRenderingintent = ((mng_srgbp)pChunk)->iRenderingintent;
- pImage->pImgbuf->bHasSRGB = MNG_TRUE;
- }
- else
- { /* store as global */
- if (!((mng_srgbp)pChunk)->bEmpty)
- pData->iGlobalRendintent = ((mng_srgbp)pChunk)->iRenderingintent;
- /* create an animation object */
- return mng_create_ani_srgb (pData, pChunk);
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iCCP
-MNG_C_SPECIALFUNC (mng_special_iccp)
-{
- mng_retcode iRetcode;
- mng_chunk_headerp pDummy;
-
-#ifdef MNG_CHECK_BAD_ICCP /* Check for bad iCCP chunk */
- if (!strncmp (((mng_iccpp)pChunk)->zName, "Photoshop ICC profile", 21))
- {
- if (((mng_iccpp)pChunk)->iProfilesize == 2615) /* is it the sRGB profile ? */
- {
- mng_chunk_header chunk_srgb;
- mng_get_chunkheader (MNG_UINT_sRGB, &chunk_srgb);
- /* pretend it's an sRGB chunk then ! */
- iRetcode = mng_read_general (pData, &chunk_srgb, 1, (mng_ptr)"0", &pDummy);
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- pDummy->fCleanup (pData, pDummy);
- }
- }
- else
- {
-#endif /* MNG_CHECK_BAD_ICCP */
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- pData->bHasICCP = MNG_TRUE; /* indicate we've got it */
- else
- pData->bHasglobalICCP = (mng_bool)!((mng_iccpp)pChunk)->bEmpty;
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- {
- mng_imagep pImage;
-
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* update delta image ? */
- { /* store in object 0 ! */
- pImage = (mng_imagep)pData->pObjzero;
-
- if (pImage->pImgbuf->pProfile) /* profile existed ? */
- MNG_FREEX (pData, pImage->pImgbuf->pProfile, pImage->pImgbuf->iProfilesize);
- /* allocate a buffer & copy it */
- MNG_ALLOC (pData, pImage->pImgbuf->pProfile, ((mng_iccpp)pChunk)->iProfilesize);
- MNG_COPY (pImage->pImgbuf->pProfile, ((mng_iccpp)pChunk)->pProfile, ((mng_iccpp)pChunk)->iProfilesize);
- /* store its length as well */
- pImage->pImgbuf->iProfilesize = ((mng_iccpp)pChunk)->iProfilesize;
- pImage->pImgbuf->bHasICCP = MNG_TRUE;
- }
- else
-#endif
- {
- pImage = (mng_imagep)pData->pCurrentobj;
-
- if (!pImage) /* no object then dump it in obj 0 */
- pImage = (mng_imagep)pData->pObjzero;
-
- if (pImage->pImgbuf->pProfile) /* profile existed ? */
- MNG_FREEX (pData, pImage->pImgbuf->pProfile, pImage->pImgbuf->iProfilesize);
- /* allocate a buffer & copy it */
- MNG_ALLOC (pData, pImage->pImgbuf->pProfile, ((mng_iccpp)pChunk)->iProfilesize);
- MNG_COPY (pImage->pImgbuf->pProfile, ((mng_iccpp)pChunk)->pProfile, ((mng_iccpp)pChunk)->iProfilesize);
- /* store its length as well */
- pImage->pImgbuf->iProfilesize = ((mng_iccpp)pChunk)->iProfilesize;
- pImage->pImgbuf->bHasICCP = MNG_TRUE;
- }
- }
- else
- { /* store as global */
- if (pData->pGlobalProfile) /* did we have a global profile ? */
- MNG_FREEX (pData, pData->pGlobalProfile, pData->iGlobalProfilesize);
-
- if (((mng_iccpp)pChunk)->bEmpty) /* empty chunk ? */
- {
- pData->iGlobalProfilesize = 0; /* reset to null */
- pData->pGlobalProfile = MNG_NULL;
- }
- else
- { /* allocate a global buffer & copy it */
- MNG_ALLOC (pData, pData->pGlobalProfile, ((mng_iccpp)pChunk)->iProfilesize);
- MNG_COPY (pData->pGlobalProfile, ((mng_iccpp)pChunk)->pProfile, ((mng_iccpp)pChunk)->iProfilesize);
- /* store its length as well */
- pData->iGlobalProfilesize = ((mng_iccpp)pChunk)->iProfilesize;
- }
- /* create an animation object */
- return mng_create_ani_iccp (pData, pChunk);
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_CHECK_BAD_ICCP
- }
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_tEXt
-MNG_C_SPECIALFUNC (mng_special_text)
-{
- if (pData->fProcesstext) /* inform the application ? */
- {
- mng_bool bOke = pData->fProcesstext ((mng_handle)pData, MNG_TYPE_TEXT,
- ((mng_textp)pChunk)->zKeyword,
- ((mng_textp)pChunk)->zText, 0, 0);
- if (!bOke)
- MNG_ERROR (pData, MNG_APPMISCERROR);
- }
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_zTXt
-MNG_C_SPECIALFUNC (mng_special_ztxt)
-{
- if (pData->fProcesstext) /* inform the application ? */
- {
- mng_bool bOke = pData->fProcesstext ((mng_handle)pData, MNG_TYPE_ZTXT,
- ((mng_ztxtp)pChunk)->zKeyword,
- ((mng_ztxtp)pChunk)->zText, 0, 0);
- if (!bOke)
- MNG_ERROR (pData, MNG_APPMISCERROR);
- }
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iTXt
-MNG_F_SPECIALFUNC (mng_deflate_itxt)
-{
- mng_itxtp pITXT = (mng_itxtp)pChunk;
- mng_uint32 iBufsize = 0;
- mng_uint8p pBuf = 0;
- mng_uint32 iTextlen = 0;
-
- if (pITXT->iCompressionflag) /* decompress the text ? */
- {
- mng_retcode iRetcode = mng_inflate_buffer (pData, *ppRawdata, *piRawlen,
- &pBuf, &iBufsize, &iTextlen);
-
- if (iRetcode) /* on error bail out */
- { /* don't forget to drop the temp buffer */
- MNG_FREEX (pData, pBuf, iBufsize);
- return iRetcode;
- }
-
- MNG_ALLOC (pData, pITXT->zText, iTextlen+1);
- MNG_COPY (pITXT->zText, pBuf, iTextlen);
-
- pITXT->iTextsize = iTextlen;
-
- MNG_FREEX (pData, pBuf, iBufsize);
-
- } else {
-
- MNG_ALLOC (pData, pITXT->zText, (*piRawlen)+1);
- MNG_COPY (pITXT->zText, *ppRawdata, *piRawlen);
-
- pITXT->iTextsize = *piRawlen;
- }
-
- *piRawlen = 0;
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iTXt
-MNG_C_SPECIALFUNC (mng_special_itxt)
-{
- if (pData->fProcesstext) /* inform the application ? */
- {
- mng_bool bOke = pData->fProcesstext ((mng_handle)pData, MNG_TYPE_ITXT,
- ((mng_itxtp)pChunk)->zKeyword,
- ((mng_itxtp)pChunk)->zText,
- ((mng_itxtp)pChunk)->zLanguage,
- ((mng_itxtp)pChunk)->zTranslation);
- if (!bOke)
- MNG_ERROR (pData, MNG_APPMISCERROR);
- }
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_bKGD
-MNG_C_SPECIALFUNC (mng_special_bkgd)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- mng_imagep pImage = (mng_imagep)pData->pCurrentobj;
- mng_imagedatap pBuf;
-#endif
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- pData->bHasBKGD = MNG_TRUE; /* indicate bKGD available */
- else
- pData->bHasglobalBKGD = (mng_bool)!(((mng_bkgdp)pChunk)->bEmpty);
-
-#ifdef MNG_SUPPORT_DISPLAY
- if (!pImage) /* if no object dump it in obj 0 */
- pImage = (mng_imagep)pData->pObjzero;
- pBuf = pImage->pImgbuf; /* address object buffer */
-
-#ifdef MNG_INCLUDE_JNG
- if (pData->bHasJHDR)
- {
- pBuf->bHasBKGD = MNG_TRUE; /* tell the object it's got bKGD now */
-
- switch (pData->iJHDRcolortype) /* store fields for future reference */
- {
- case 8 : ; /* gray */
- case 12 : { /* graya */
- pBuf->iBKGDgray = ((mng_bkgdp)pChunk)->iGray;
- break;
- }
- case 10 : ; /* rgb */
- case 14 : { /* rgba */
- pBuf->iBKGDred = ((mng_bkgdp)pChunk)->iRed;
- pBuf->iBKGDgreen = ((mng_bkgdp)pChunk)->iGreen;
- pBuf->iBKGDblue = ((mng_bkgdp)pChunk)->iBlue;
- break;
- }
- }
- }
- else
-#endif /* MNG_INCLUDE_JNG */
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- {
- pBuf->bHasBKGD = MNG_TRUE; /* tell the object it's got bKGD now */
-
- switch (pData->iColortype) /* store fields for future reference */
- {
- case 0 : ; /* gray */
- case 4 : { /* graya */
- pBuf->iBKGDgray = ((mng_bkgdp)pChunk)->iGray;
- break;
- }
- case 2 : ; /* rgb */
- case 6 : { /* rgba */
- pBuf->iBKGDred = ((mng_bkgdp)pChunk)->iRed;
- pBuf->iBKGDgreen = ((mng_bkgdp)pChunk)->iGreen;
- pBuf->iBKGDblue = ((mng_bkgdp)pChunk)->iBlue;
- break;
- }
- case 3 : { /* indexed */
- pBuf->iBKGDindex = ((mng_bkgdp)pChunk)->iIndex;
- break;
- }
- }
- }
- else /* store as global */
- {
- if (!(((mng_bkgdp)pChunk)->bEmpty))
- {
- pData->iGlobalBKGDred = ((mng_bkgdp)pChunk)->iRed;
- pData->iGlobalBKGDgreen = ((mng_bkgdp)pChunk)->iGreen;
- pData->iGlobalBKGDblue = ((mng_bkgdp)pChunk)->iBlue;
- }
- /* create an animation object */
- return mng_create_ani_bkgd (pData);
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_pHYs
-MNG_C_SPECIALFUNC (mng_special_phys)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sBIT
-MNG_C_SPECIALFUNC (mng_special_sbit)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sPLT
-MNG_F_SPECIALFUNC (mng_splt_entries)
-{
- mng_spltp pSPLT = (mng_spltp)pChunk;
- mng_uint32 iRawlen = *piRawlen;
- mng_uint8p pRawdata = *ppRawdata;
-
- if ((pSPLT->iSampledepth != MNG_BITDEPTH_8 ) &&
- (pSPLT->iSampledepth != MNG_BITDEPTH_16) )
- MNG_ERROR (pData, MNG_INVSAMPLEDEPTH);
- /* check remaining length */
- if ( ((pSPLT->iSampledepth == MNG_BITDEPTH_8 ) && (iRawlen % 6 != 0)) ||
- ((pSPLT->iSampledepth == MNG_BITDEPTH_16) && (iRawlen % 10 != 0)) )
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if (pSPLT->iSampledepth == MNG_BITDEPTH_8)
- pSPLT->iEntrycount = iRawlen / 6;
- else
- pSPLT->iEntrycount = iRawlen / 10;
-
- if (iRawlen)
- {
- MNG_ALLOC (pData, pSPLT->pEntries, iRawlen);
- MNG_COPY (pSPLT->pEntries, pRawdata, iRawlen);
- }
-
- *piRawlen = 0;
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sPLT
-MNG_C_SPECIALFUNC (mng_special_splt)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_hIST
-MNG_F_SPECIALFUNC (mng_hist_entries)
-{
- mng_histp pHIST = (mng_histp)pChunk;
- mng_uint32 iRawlen = *piRawlen;
- mng_uint8p pRawdata = *ppRawdata;
- mng_uint32 iX;
-
- if ( ((iRawlen & 0x01) != 0) || ((iRawlen >> 1) != pData->iPLTEcount) )
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- pHIST->iEntrycount = iRawlen >> 1;
-
- for (iX = 0; iX < pHIST->iEntrycount; iX++)
- {
- pHIST->aEntries[iX] = mng_get_uint16 (pRawdata);
- pRawdata += 2;
- }
-
- *piRawlen = 0;
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_hIST
-MNG_C_SPECIALFUNC (mng_special_hist)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_tIME
-MNG_C_SPECIALFUNC (mng_special_time)
-{
-/* if (pData->fProcesstime) */ /* inform the application ? */
-/* {
-
- pData->fProcesstime ((mng_handle)pData, );
- } */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-/* JNG chunks */
-
-#ifdef MNG_INCLUDE_JNG
-MNG_C_SPECIALFUNC (mng_special_jhdr)
-{
- if ((pData->eSigtype == mng_it_jng) && (pData->iChunkseq > 1))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* inside a JHDR-IEND block now */
- pData->bHasJHDR = MNG_TRUE;
- /* and store interesting fields */
- pData->iDatawidth = ((mng_jhdrp)pChunk)->iWidth;
- pData->iDataheight = ((mng_jhdrp)pChunk)->iHeight;
- pData->iJHDRcolortype = ((mng_jhdrp)pChunk)->iColortype;
- pData->iJHDRimgbitdepth = ((mng_jhdrp)pChunk)->iImagesampledepth;
- pData->iJHDRimgcompression = ((mng_jhdrp)pChunk)->iImagecompression;
- pData->iJHDRimginterlace = ((mng_jhdrp)pChunk)->iImageinterlace;
- pData->iJHDRalphabitdepth = ((mng_jhdrp)pChunk)->iAlphasampledepth;
- pData->iJHDRalphacompression = ((mng_jhdrp)pChunk)->iAlphacompression;
- pData->iJHDRalphafilter = ((mng_jhdrp)pChunk)->iAlphafilter;
- pData->iJHDRalphainterlace = ((mng_jhdrp)pChunk)->iAlphainterlace;
-
-#if defined(MNG_NO_1_2_4BIT_SUPPORT) || defined(MNG_NO_16BIT_SUPPORT)
- pData->iPNGmult = 1;
- pData->iPNGdepth = pData->iJHDRalphabitdepth;
-#endif
-
-#ifdef MNG_NO_1_2_4BIT_SUPPORT
- if (pData->iJHDRalphabitdepth < 8)
- pData->iJHDRalphabitdepth = 8;
-#endif
-
-#ifdef MNG_NO_16BIT_SUPPORT
- if (pData->iJHDRalphabitdepth > 8)
- {
- pData->iPNGmult = 2;
- pData->iJHDRalphabitdepth = 8;
- }
-#endif
- /* parameter validity checks */
- if ((pData->iJHDRcolortype != MNG_COLORTYPE_JPEGGRAY ) &&
- (pData->iJHDRcolortype != MNG_COLORTYPE_JPEGCOLOR ) &&
- (pData->iJHDRcolortype != MNG_COLORTYPE_JPEGGRAYA ) &&
- (pData->iJHDRcolortype != MNG_COLORTYPE_JPEGCOLORA) )
- MNG_ERROR (pData, MNG_INVALIDCOLORTYPE);
-
- if ((pData->iJHDRimgbitdepth != MNG_BITDEPTH_JPEG8 ) &&
- (pData->iJHDRimgbitdepth != MNG_BITDEPTH_JPEG12 ) &&
- (pData->iJHDRimgbitdepth != MNG_BITDEPTH_JPEG8AND12) )
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
- if ((pData->iJHDRcolortype == MNG_COLORTYPE_JPEGGRAYA ) ||
- (pData->iJHDRcolortype == MNG_COLORTYPE_JPEGCOLORA) )
- {
- if ((pData->iJHDRalphabitdepth != MNG_BITDEPTH_8 )
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- && (pData->iJHDRalphabitdepth != MNG_BITDEPTH_1 ) &&
- (pData->iJHDRalphabitdepth != MNG_BITDEPTH_2 ) &&
- (pData->iJHDRalphabitdepth != MNG_BITDEPTH_4 )
-#endif
-#ifndef MNG_NO_16BIT_SUPPORT
- && (pData->iJHDRalphabitdepth != MNG_BITDEPTH_16)
-#endif
- )
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
- if ((pData->iJHDRalphacompression != MNG_COMPRESSION_DEFLATE ) &&
- (pData->iJHDRalphacompression != MNG_COMPRESSION_BASELINEJPEG) )
- MNG_ERROR (pData, MNG_INVALIDCOMPRESS);
-
- if ((pData->iJHDRalphacompression == MNG_COMPRESSION_BASELINEJPEG) &&
- (pData->iJHDRalphabitdepth != MNG_BITDEPTH_8 ) )
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
-#if defined(FILTER192) || defined(FILTER193)
- if ((pData->iJHDRalphafilter != MNG_FILTER_ADAPTIVE ) &&
-#if defined(FILTER192) && defined(FILTER193)
- (pData->iJHDRalphafilter != MNG_FILTER_DIFFERING) &&
- (pData->iJHDRalphafilter != MNG_FILTER_NOFILTER ) )
-#else
-#ifdef FILTER192
- (pData->iJHDRalphafilter != MNG_FILTER_DIFFERING) )
-#else
- (pData->iJHDRalphafilter != MNG_FILTER_NOFILTER ) )
-#endif
-#endif
- MNG_ERROR (pData, MNG_INVALIDFILTER);
-#else
- if (pData->iJHDRalphafilter)
- MNG_ERROR (pData, MNG_INVALIDFILTER);
-#endif
-
- }
- else
- {
- if (pData->iJHDRalphabitdepth)
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
- if (pData->iJHDRalphacompression)
- MNG_ERROR (pData, MNG_INVALIDCOMPRESS);
- if (pData->iJHDRalphafilter)
- MNG_ERROR (pData, MNG_INVALIDFILTER);
- if (pData->iJHDRalphainterlace)
- MNG_ERROR (pData, MNG_INVALIDINTERLACE);
- }
-
- if (!pData->bHasheader) /* first chunk ? */
- {
- pData->bHasheader = MNG_TRUE; /* we've got a header */
- pData->eImagetype = mng_it_jng; /* then this must be a JNG */
- pData->iWidth = ((mng_jhdrp)pChunk)->iWidth;
- pData->iHeight = ((mng_jhdrp)pChunk)->iHeight;
- /* predict alpha-depth ! */
- if ((pData->iJHDRcolortype == MNG_COLORTYPE_JPEGGRAYA ) ||
- (pData->iJHDRcolortype == MNG_COLORTYPE_JPEGCOLORA) )
- pData->iAlphadepth = pData->iJHDRalphabitdepth;
- else
- pData->iAlphadepth = 0;
- /* fits on maximum canvas ? */
- if ((pData->iWidth > pData->iMaxwidth) || (pData->iHeight > pData->iMaxheight))
- MNG_WARNING (pData, MNG_IMAGETOOLARGE);
-
- if (pData->fProcessheader) /* inform the app ? */
- if (!pData->fProcessheader (((mng_handle)pData), pData->iWidth, pData->iHeight))
- MNG_ERROR (pData, MNG_APPMISCERROR);
-
- }
-
- pData->iColortype = 0; /* fake grayscale for other routines */
- pData->iImagelevel++; /* one level deeper */
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_retcode iRetcode = mng_process_display_jhdr (pData);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_NO_16BIT_SUPPORT
- if (((mng_jhdrp)pChunk)->iAlphasampledepth > 8)
- ((mng_jhdrp)pChunk)->iAlphasampledepth = 8;
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-MNG_C_SPECIALFUNC (mng_special_jdaa)
-{
- if (pData->iJHDRalphacompression != MNG_COMPRESSION_BASELINEJPEG)
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- pData->bHasJDAA = MNG_TRUE; /* got some JDAA now, don't we */
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-MNG_C_SPECIALFUNC (mng_special_jdat)
-{
- pData->bHasJDAT = MNG_TRUE; /* got some JDAT now, don't we */
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-MNG_C_SPECIALFUNC (mng_special_jsep)
-{
- pData->bHasJSEP = MNG_TRUE; /* indicate we've had the 8-/12-bit separator */
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-/* MNG chunks */
-
-MNG_C_SPECIALFUNC (mng_special_mhdr)
-{
- if (pData->bHasheader) /* can only be the first chunk! */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- pData->bHasMHDR = MNG_TRUE; /* oh boy, a real MNG */
- pData->bHasheader = MNG_TRUE; /* we've got a header */
- pData->eImagetype = mng_it_mng; /* fill header fields */
- pData->iWidth = ((mng_mhdrp)pChunk)->iWidth;
- pData->iHeight = ((mng_mhdrp)pChunk)->iHeight;
- pData->iTicks = ((mng_mhdrp)pChunk)->iTicks;
- pData->iLayercount = ((mng_mhdrp)pChunk)->iLayercount;
- pData->iFramecount = ((mng_mhdrp)pChunk)->iFramecount;
- pData->iPlaytime = ((mng_mhdrp)pChunk)->iPlaytime;
- pData->iSimplicity = ((mng_mhdrp)pChunk)->iSimplicity;
-#ifndef MNG_NO_OLD_VERSIONS
- pData->bPreDraft48 = MNG_FALSE;
-#endif
- /* predict alpha-depth */
- if ((pData->iSimplicity & 0x00000001) == 0)
-#ifndef MNG_NO_16BIT_SUPPORT
- pData->iAlphadepth = 16; /* no indicators = assume the worst */
-#else
- pData->iAlphadepth = 8; /* anything else = assume the worst */
-#endif
- else
- if ((pData->iSimplicity & 0x00000008) == 0)
- pData->iAlphadepth = 0; /* no transparency at all */
- else
- if ((pData->iSimplicity & 0x00000140) == 0x00000040)
- pData->iAlphadepth = 1; /* no semi-transparency guaranteed */
- else
-#ifndef MNG_NO_16BIT_SUPPORT
- pData->iAlphadepth = 16; /* anything else = assume the worst */
-#else
- pData->iAlphadepth = 8; /* anything else = assume the worst */
-#endif
-
-#ifdef MNG_INCLUDE_JNG /* can we handle the complexity ? */
- if (pData->iSimplicity & 0x0000FC00)
-#else
- if (pData->iSimplicity & 0x0000FC10)
-#endif
- MNG_ERROR (pData, MNG_MNGTOOCOMPLEX);
- /* fits on maximum canvas ? */
- if ((pData->iWidth > pData->iMaxwidth) || (pData->iHeight > pData->iMaxheight))
- MNG_WARNING (pData, MNG_IMAGETOOLARGE);
-
- if (pData->fProcessheader) /* inform the app ? */
- if (!pData->fProcessheader (((mng_handle)pData), pData->iWidth, pData->iHeight))
- MNG_ERROR (pData, MNG_APPMISCERROR);
-
- pData->iImagelevel++; /* one level deeper */
-
- return MNG_NOERROR; /* done */
-}
-
-/* ************************************************************************** */
-
-MNG_C_SPECIALFUNC (mng_special_mend)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- { /* do something */
- mng_retcode iRetcode = mng_process_display_mend (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- if (!pData->iTotalframes) /* save totals */
- pData->iTotalframes = pData->iFrameseq;
- if (!pData->iTotallayers)
- pData->iTotallayers = pData->iLayerseq;
- if (!pData->iTotalplaytime)
- pData->iTotalplaytime = pData->iFrametime;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- pData->bHasMHDR = MNG_FALSE; /* end of the line, bro! */
-
- return MNG_NOERROR; /* done */
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_LOOP
-MNG_F_SPECIALFUNC (mng_debunk_loop)
-{
- mng_loopp pLOOP = (mng_loopp)pChunk;
- mng_uint32 iRawlen = *piRawlen;
- mng_uint8p pRawdata = *ppRawdata;
-
- if (iRawlen >= 5) /* length checks */
- {
- if (iRawlen >= 6)
- {
- if ((iRawlen - 6) % 4 != 0)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
- }
- else
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if (iRawlen >= 5) /* store the fields */
- {
- pLOOP->iLevel = *pRawdata;
-
-#ifndef MNG_NO_OLD_VERSIONS
- if (pData->bPreDraft48)
- {
- pLOOP->iTermination = *(pRawdata+1);
- pLOOP->iRepeat = mng_get_uint32 (pRawdata+2);
- }
- else
-#endif
- {
- pLOOP->iRepeat = mng_get_uint32 (pRawdata+1);
- }
-
- if (iRawlen >= 6)
- {
-#ifndef MNG_NO_OLD_VERSIONS
- if (!pData->bPreDraft48)
-#endif
- pLOOP->iTermination = *(pRawdata+5);
-
- if (iRawlen >= 10)
- {
- pLOOP->iItermin = mng_get_uint32 (pRawdata+6);
-
-#ifndef MNG_NO_LOOP_SIGNALS_SUPPORTED
- if (iRawlen >= 14)
- {
- pLOOP->iItermax = mng_get_uint32 (pRawdata+10);
- pLOOP->iCount = (iRawlen - 14) / 4;
-
- if (pLOOP->iCount)
- {
- MNG_ALLOC (pData, pLOOP->pSignals, pLOOP->iCount << 2);
-
-#ifndef MNG_BIGENDIAN_SUPPORTED
- {
- mng_uint32 iX;
- mng_uint8p pIn = pRawdata + 14;
- mng_uint32p pOut = (mng_uint32p)pLOOP->pSignals;
-
- for (iX = 0; iX < pLOOP->iCount; iX++)
- {
- *pOut++ = mng_get_uint32 (pIn);
- pIn += 4;
- }
- }
-#else
- MNG_COPY (pLOOP->pSignals, pRawdata + 14, pLOOP->iCount << 2);
-#endif /* !MNG_BIGENDIAN_SUPPORTED */
- }
- }
-#endif
- }
- }
- }
-
- *piRawlen = 0;
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_LOOP
-MNG_C_SPECIALFUNC (mng_special_loop)
-{
- if (!pData->bCacheplayback) /* must store playback info to work!! */
- MNG_ERROR (pData, MNG_LOOPWITHCACHEOFF);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_retcode iRetcode;
-
- pData->bHasLOOP = MNG_TRUE; /* indicate we're inside a loop */
- /* create the LOOP ani-object */
- iRetcode = mng_create_ani_loop (pData, pChunk);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* skip till matching ENDL if iteration=0 */
- if ((!pData->bSkipping) && (((mng_loopp)pChunk)->iRepeat == 0))
- pData->bSkipping = MNG_TRUE;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_LOOP
-MNG_C_SPECIALFUNC (mng_special_endl)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- if (pData->bHasLOOP) /* are we really processing a loop ? */
- {
- mng_uint8 iLevel = ((mng_endlp)pChunk)->iLevel;
- /* create an ENDL animation object */
- return mng_create_ani_endl (pData, iLevel);
- }
- else
- MNG_ERROR (pData, MNG_NOMATCHINGLOOP);
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DEFI
-MNG_C_SPECIALFUNC (mng_special_defi)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- mng_retcode iRetcode;
-
- pData->iDEFIobjectid = ((mng_defip)pChunk)->iObjectid;
- pData->bDEFIhasdonotshow = ((mng_defip)pChunk)->bHasdonotshow;
- pData->iDEFIdonotshow = ((mng_defip)pChunk)->iDonotshow;
- pData->bDEFIhasconcrete = ((mng_defip)pChunk)->bHasconcrete;
- pData->iDEFIconcrete = ((mng_defip)pChunk)->iConcrete;
- pData->bDEFIhasloca = ((mng_defip)pChunk)->bHasloca;
- pData->iDEFIlocax = ((mng_defip)pChunk)->iXlocation;
- pData->iDEFIlocay = ((mng_defip)pChunk)->iYlocation;
- pData->bDEFIhasclip = ((mng_defip)pChunk)->bHasclip;
- pData->iDEFIclipl = ((mng_defip)pChunk)->iLeftcb;
- pData->iDEFIclipr = ((mng_defip)pChunk)->iRightcb;
- pData->iDEFIclipt = ((mng_defip)pChunk)->iTopcb;
- pData->iDEFIclipb = ((mng_defip)pChunk)->iBottomcb;
- /* create an animation object */
- iRetcode = mng_create_ani_defi (pData);
- if (!iRetcode) /* do display processing */
- iRetcode = mng_process_display_defi (pData);
- return iRetcode;
-#else
- return MNG_NOERROR; /* done */
-#endif /* MNG_SUPPORT_DISPLAY */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_BASI
-MNG_C_SPECIALFUNC (mng_special_basi)
-{
- pData->bHasBASI = MNG_TRUE; /* inside a BASI-IEND block now */
- /* store interesting fields */
- pData->iDatawidth = ((mng_basip)pChunk)->iWidth;
- pData->iDataheight = ((mng_basip)pChunk)->iHeight;
- pData->iBitdepth = ((mng_basip)pChunk)->iBitdepth;
- pData->iColortype = ((mng_basip)pChunk)->iColortype;
- pData->iCompression = ((mng_basip)pChunk)->iCompression;
- pData->iFilter = ((mng_basip)pChunk)->iFilter;
- pData->iInterlace = ((mng_basip)pChunk)->iInterlace;
-
-#if defined(MNG_NO_1_2_4BIT_SUPPORT) || defined(MNG_NO_16BIT_SUPPORT)
- pData->iPNGmult = 1;
- pData->iPNGdepth = pData->iBitdepth;
-#endif
-
-#ifdef MNG_NO_1_2_4BIT_SUPPORT
- if (pData->iBitdepth < 8)
- pData->iBitdepth = 8;
-#endif
-#ifdef MNG_NO_16BIT_SUPPORT
- if (pData->iBitdepth > 8)
- {
- pData->iBitdepth = 8;
- pData->iPNGmult = 2;
- }
-#endif
-
- if ((pData->iBitdepth != 8) /* parameter validity checks */
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- && (pData->iBitdepth != 1) &&
- (pData->iBitdepth != 2) &&
- (pData->iBitdepth != 4)
-#endif
-#ifndef MNG_NO_16BIT_SUPPORT
- && (pData->iBitdepth != 16)
-#endif
- )
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
- if ((pData->iColortype != MNG_COLORTYPE_GRAY ) &&
- (pData->iColortype != MNG_COLORTYPE_RGB ) &&
- (pData->iColortype != MNG_COLORTYPE_INDEXED) &&
- (pData->iColortype != MNG_COLORTYPE_GRAYA ) &&
- (pData->iColortype != MNG_COLORTYPE_RGBA ) )
- MNG_ERROR (pData, MNG_INVALIDCOLORTYPE);
-
- if ((pData->iColortype == MNG_COLORTYPE_INDEXED) && (pData->iBitdepth > 8))
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
- if (((pData->iColortype == MNG_COLORTYPE_RGB ) ||
- (pData->iColortype == MNG_COLORTYPE_GRAYA ) ||
- (pData->iColortype == MNG_COLORTYPE_RGBA ) ) &&
- (pData->iBitdepth < 8 ) )
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
-#if defined(FILTER192) || defined(FILTER193)
- if ((pData->iFilter != MNG_FILTER_ADAPTIVE ) &&
-#if defined(FILTER192) && defined(FILTER193)
- (pData->iFilter != MNG_FILTER_DIFFERING) &&
- (pData->iFilter != MNG_FILTER_NOFILTER ) )
-#else
-#ifdef FILTER192
- (pData->iFilter != MNG_FILTER_DIFFERING) )
-#else
- (pData->iFilter != MNG_FILTER_NOFILTER ) )
-#endif
-#endif
- MNG_ERROR (pData, MNG_INVALIDFILTER);
-#else
- if (pData->iFilter)
- MNG_ERROR (pData, MNG_INVALIDFILTER);
-#endif
-
- pData->iImagelevel++; /* one level deeper */
-
-#ifdef MNG_SUPPORT_DISPLAY
- { /* create an animation object */
- mng_retcode iRetcode = mng_create_ani_basi (pData, pChunk);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_NO_16BIT_SUPPORT
- if (((mng_basip)pChunk)->iBitdepth > 8)
- ((mng_basip)pChunk)->iBitdepth = 8;
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_CLON
-MNG_C_SPECIALFUNC (mng_special_clon)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- return mng_create_ani_clon (pData, pChunk);
-#else
- return MNG_NOERROR; /* done */
-#endif /* MNG_SUPPORT_DISPLAY */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-MNG_F_SPECIALFUNC (mng_debunk_past)
-{
- mng_pastp pPAST = (mng_pastp)pChunk;
- mng_uint32 iRawlen = *piRawlen;
- mng_uint8p pRawdata = *ppRawdata;
- mng_uint32 iSize;
- mng_uint32 iX;
- mng_past_sourcep pSource;
- /* check the length */
- if ((iRawlen < 41) || (((iRawlen - 11) % 30) != 0))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- pPAST->iDestid = mng_get_uint16 (pRawdata);
- pPAST->iTargettype = *(pRawdata+2);
- pPAST->iTargetx = mng_get_int32 (pRawdata+3);
- pPAST->iTargety = mng_get_int32 (pRawdata+7);
- pPAST->iCount = ((iRawlen - 11) / 30); /* how many entries again? */
- iSize = pPAST->iCount * sizeof (mng_past_source);
-
- pRawdata += 11;
- /* get a buffer for all the source blocks */
- MNG_ALLOC (pData, pPAST->pSources, iSize);
-
- pSource = (mng_past_sourcep)(pPAST->pSources);
-
- for (iX = pPAST->iCount; iX > 0; iX--)
- { /* now copy the source blocks */
- pSource->iSourceid = mng_get_uint16 (pRawdata);
- pSource->iComposition = *(pRawdata+2);
- pSource->iOrientation = *(pRawdata+3);
- pSource->iOffsettype = *(pRawdata+4);
- pSource->iOffsetx = mng_get_int32 (pRawdata+5);
- pSource->iOffsety = mng_get_int32 (pRawdata+9);
- pSource->iBoundarytype = *(pRawdata+13);
- pSource->iBoundaryl = mng_get_int32 (pRawdata+14);
- pSource->iBoundaryr = mng_get_int32 (pRawdata+18);
- pSource->iBoundaryt = mng_get_int32 (pRawdata+22);
- pSource->iBoundaryb = mng_get_int32 (pRawdata+26);
-
- pSource++;
- pRawdata += 30;
- }
-
- *piRawlen = 0;
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-MNG_C_SPECIALFUNC (mng_special_past)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- return mng_create_ani_past (pData, pChunk);
-#else
- return MNG_NOERROR;
-#endif /* MNG_SUPPORT_DISPLAY */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DISC
-MNG_F_SPECIALFUNC (mng_disc_entries)
-{
- mng_discp pDISC = (mng_discp)pChunk;
- mng_uint32 iRawlen = *piRawlen;
- mng_uint8p pRawdata = *ppRawdata;
-
- if ((iRawlen % 2) != 0) /* check the length */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- pDISC->iCount = (iRawlen / sizeof (mng_uint16));
-
- if (pDISC->iCount)
- {
- MNG_ALLOC (pData, pDISC->pObjectids, iRawlen);
-
-#ifndef MNG_BIGENDIAN_SUPPORTED
- {
- mng_uint32 iX;
- mng_uint8p pIn = pRawdata;
- mng_uint16p pOut = pDISC->pObjectids;
-
- for (iX = pDISC->iCount; iX > 0; iX--)
- {
- *pOut++ = mng_get_uint16 (pIn);
- pIn += 2;
- }
- }
-#else
- MNG_COPY (pDISC->pObjectids, pRawdata, iRawlen);
-#endif /* !MNG_BIGENDIAN_SUPPORTED */
- }
-
- *piRawlen = 0;
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DISC
-MNG_C_SPECIALFUNC (mng_special_disc)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- return mng_create_ani_disc (pData, pChunk);
-#else
- return MNG_NOERROR;
-#endif /* MNG_SUPPORT_DISPLAY */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_BACK
-MNG_C_SPECIALFUNC (mng_special_back)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- /* retrieve the fields */
- pData->bHasBACK = MNG_TRUE;
- pData->iBACKred = ((mng_backp)pChunk)->iRed;
- pData->iBACKgreen = ((mng_backp)pChunk)->iGreen;
- pData->iBACKblue = ((mng_backp)pChunk)->iBlue;
- pData->iBACKmandatory = ((mng_backp)pChunk)->iMandatory;
- pData->iBACKimageid = ((mng_backp)pChunk)->iImageid;
- pData->iBACKtile = ((mng_backp)pChunk)->iTile;
-
- return mng_create_ani_back (pData);
-#else
- return MNG_NOERROR;
-#endif /* MNG_SUPPORT_DISPLAY */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_FRAM
-MNG_F_SPECIALFUNC (mng_fram_remainder)
-{
- mng_framp pFRAM = (mng_framp)pChunk;
- mng_uint32 iRawlen = *piRawlen;
- mng_uint8p pRawdata = *ppRawdata;
- mng_uint32 iRequired = 0;
-
- if (iRawlen < 4) /* must have at least 4 bytes */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- iRequired = 4; /* calculate and check required remaining length */
-
- pFRAM->iChangedelay = *pRawdata;
- pFRAM->iChangetimeout = *(pRawdata+1);
- pFRAM->iChangeclipping = *(pRawdata+2);
- pFRAM->iChangesyncid = *(pRawdata+3);
-
- if (pFRAM->iChangedelay ) { iRequired += 4; }
- if (pFRAM->iChangetimeout ) { iRequired += 4; }
- if (pFRAM->iChangeclipping) { iRequired += 17; }
-
- if (pFRAM->iChangesyncid)
- {
- if ((iRawlen - iRequired) % 4 != 0)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
- else
- {
- if (iRawlen != iRequired)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
-
- pRawdata += 4;
-
- if (pFRAM->iChangedelay) /* delay changed ? */
- {
- pFRAM->iDelay = mng_get_uint32 (pRawdata);
- pRawdata += 4;
- }
-
- if (pFRAM->iChangetimeout) /* timeout changed ? */
- {
- pFRAM->iTimeout = mng_get_uint32 (pRawdata);
- pRawdata += 4;
- }
-
- if (pFRAM->iChangeclipping) /* clipping changed ? */
- {
- pFRAM->iBoundarytype = *pRawdata;
- pFRAM->iBoundaryl = mng_get_int32 (pRawdata+1);
- pFRAM->iBoundaryr = mng_get_int32 (pRawdata+5);
- pFRAM->iBoundaryt = mng_get_int32 (pRawdata+9);
- pFRAM->iBoundaryb = mng_get_int32 (pRawdata+13);
- pRawdata += 17;
- }
-
- if (pFRAM->iChangesyncid)
- {
- pFRAM->iCount = (iRawlen - iRequired) / 4;
-
- if (pFRAM->iCount)
- {
- MNG_ALLOC (pData, pFRAM->pSyncids, pFRAM->iCount * 4);
-
-#ifndef MNG_BIGENDIAN_SUPPORTED
- {
- mng_uint32 iX;
- mng_uint32p pOut = pFRAM->pSyncids;
-
- for (iX = pFRAM->iCount; iX > 0; iX--)
- {
- *pOut++ = mng_get_uint32 (pRawdata);
- pRawdata += 4;
- }
- }
-#else
- MNG_COPY (pFRAM->pSyncids, pRawdata, pFRAM->iCount * 4);
-#endif /* !MNG_BIGENDIAN_SUPPORTED */
- }
- }
-
-#ifndef MNG_NO_OLD_VERSIONS
- if (pData->bPreDraft48) /* old style input-stream ? */
- {
- switch (pFRAM->iMode) /* fix the framing mode then */
- {
- case 0: { break; }
- case 1: { pFRAM->iMode = 3; break; }
- case 2: { pFRAM->iMode = 4; break; }
- case 3: { pFRAM->iMode = 1; break; }
- case 4: { pFRAM->iMode = 1; break; }
- case 5: { pFRAM->iMode = 2; break; }
- default: { pFRAM->iMode = 1; break; }
- }
- }
-#endif
-
- *piRawlen = 0;
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_FRAM
-MNG_C_SPECIALFUNC (mng_special_fram)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- return mng_create_ani_fram (pData, pChunk);
-#else
- return MNG_NOERROR;
-#endif /* MNG_SUPPORT_DISPLAY */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_MOVE
-MNG_C_SPECIALFUNC (mng_special_move)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- return mng_create_ani_move (pData, pChunk);
-#else
- return MNG_NOERROR;
-#endif /* MNG_SUPPORT_DISPLAY */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_CLIP
-MNG_C_SPECIALFUNC (mng_special_clip)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- return mng_create_ani_clip (pData, pChunk);
-#else
- return MNG_NOERROR;
-#endif /* MNG_SUPPORT_DISPLAY */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SHOW
-MNG_C_SPECIALFUNC (mng_special_show)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- mng_retcode iRetcode;
-
- if (!((mng_showp)pChunk)->bEmpty) /* any data ? */
- {
- if (!((mng_showp)pChunk)->bHaslastid)
- ((mng_showp)pChunk)->iLastid = ((mng_showp)pChunk)->iFirstid;
-
- pData->iSHOWfromid = ((mng_showp)pChunk)->iFirstid;
- pData->iSHOWtoid = ((mng_showp)pChunk)->iLastid;
- pData->iSHOWmode = ((mng_showp)pChunk)->iMode;
- }
- else /* use defaults then */
- {
- pData->iSHOWfromid = 1;
- pData->iSHOWtoid = 65535;
- pData->iSHOWmode = 2;
- }
- /* create a SHOW animation object */
- iRetcode = mng_create_ani_show (pData);
- if (!iRetcode) /* go and do it! */
- iRetcode = mng_process_display_show (pData);
-
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_TERM
-MNG_C_SPECIALFUNC (mng_special_term)
-{
- /* should be behind MHDR or SAVE !! */
- if ((!pData->bHasSAVE) && (pData->iChunkseq > 2))
- {
- pData->bMisplacedTERM = MNG_TRUE; /* indicate we found a misplaced TERM */
- /* and send a warning signal!!! */
- MNG_WARNING (pData, MNG_SEQUENCEERROR);
- }
-
- pData->bHasTERM = MNG_TRUE;
-
- if (pData->fProcessterm) /* inform the app ? */
- if (!pData->fProcessterm (((mng_handle)pData),
- ((mng_termp)pChunk)->iTermaction,
- ((mng_termp)pChunk)->iIteraction,
- ((mng_termp)pChunk)->iDelay,
- ((mng_termp)pChunk)->iItermax))
- MNG_ERROR (pData, MNG_APPMISCERROR);
-
-#ifdef MNG_SUPPORT_DISPLAY
- { /* create the TERM ani-object */
- mng_retcode iRetcode = mng_create_ani_term (pData, pChunk);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* save for future reference */
- pData->pTermaniobj = pData->pLastaniobj;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SAVE
-MNG_F_SPECIALFUNC (mng_save_entries)
-{
- mng_savep pSAVE = (mng_savep)pChunk;
- mng_uint32 iRawlen = *piRawlen;
- mng_uint8p pRawdata = *ppRawdata;
- mng_save_entryp pEntry = MNG_NULL;
- mng_uint32 iCount = 0;
- mng_uint8 iOtype = *pRawdata;
- mng_uint8 iEtype;
- mng_uint8p pTemp;
- mng_uint8p pNull;
- mng_uint32 iLen;
- mng_uint32 iOffset[2];
- mng_uint32 iStarttime[2];
- mng_uint32 iFramenr;
- mng_uint32 iLayernr;
- mng_uint32 iX;
- mng_uint32 iNamesize;
-
- if ((iOtype != 4) && (iOtype != 8))
- MNG_ERROR (pData, MNG_INVOFFSETSIZE);
-
- pSAVE->iOffsettype = iOtype;
-
- for (iX = 0; iX < 2; iX++) /* do this twice to get the count first ! */
- {
- pTemp = pRawdata + 1;
- iLen = iRawlen - 1;
-
- if (iX) /* second run ? */
- {
- MNG_ALLOC (pData, pEntry, (iCount * sizeof (mng_save_entry)));
-
- pSAVE->iCount = iCount;
- pSAVE->pEntries = pEntry;
- }
-
- while (iLen) /* anything left ? */
- {
- iEtype = *pTemp; /* entrytype */
-
- if ((iEtype != 0) && (iEtype != 1) && (iEtype != 2) && (iEtype != 3))
- MNG_ERROR (pData, MNG_INVENTRYTYPE);
-
- pTemp++;
-
- if (iEtype > 1)
- {
- iOffset [0] = 0;
- iOffset [1] = 0;
- iStarttime [0] = 0;
- iStarttime [1] = 0;
- iLayernr = 0;
- iFramenr = 0;
- }
- else
- {
- if (iOtype == 4)
- {
- iOffset [0] = 0;
- iOffset [1] = mng_get_uint32 (pTemp);
-
- pTemp += 4;
- }
- else
- {
- iOffset [0] = mng_get_uint32 (pTemp);
- iOffset [1] = mng_get_uint32 (pTemp+4);
-
- pTemp += 8;
- }
-
- if (iEtype > 0)
- {
- iStarttime [0] = 0;
- iStarttime [1] = 0;
- iLayernr = 0;
- iFramenr = 0;
- }
- else
- {
- if (iOtype == 4)
- {
- iStarttime [0] = 0;
- iStarttime [1] = mng_get_uint32 (pTemp+0);
- iLayernr = mng_get_uint32 (pTemp+4);
- iFramenr = mng_get_uint32 (pTemp+8);
-
- pTemp += 12;
- }
- else
- {
- iStarttime [0] = mng_get_uint32 (pTemp+0);
- iStarttime [1] = mng_get_uint32 (pTemp+4);
- iLayernr = mng_get_uint32 (pTemp+8);
- iFramenr = mng_get_uint32 (pTemp+12);
-
- pTemp += 16;
- }
- }
- }
-
- pNull = pTemp; /* get the name length */
- while (*pNull)
- pNull++;
-
- if ((pNull - pRawdata) > (mng_int32)iRawlen)
- {
- iNamesize = iLen; /* no null found; so end of SAVE */
- iLen = 0;
- }
- else
- {
- iNamesize = pNull - pTemp; /* should be another entry */
- iLen -= iNamesize;
-
- if (!iLen) /* must not end with a null ! */
- MNG_ERROR (pData, MNG_ENDWITHNULL);
- }
-
- if (!pEntry)
- {
- iCount++;
- }
- else
- {
- pEntry->iEntrytype = iEtype;
- pEntry->iOffset [0] = iOffset [0];
- pEntry->iOffset [1] = iOffset [1];
- pEntry->iStarttime [0] = iStarttime [0];
- pEntry->iStarttime [1] = iStarttime [1];
- pEntry->iLayernr = iLayernr;
- pEntry->iFramenr = iFramenr;
- pEntry->iNamesize = iNamesize;
-
- if (iNamesize)
- {
- MNG_ALLOC (pData, pEntry->zName, iNamesize+1);
- MNG_COPY (pEntry->zName, pTemp, iNamesize);
- }
-
- pEntry++;
- }
-
- pTemp += iNamesize;
- }
- }
-
- *piRawlen = 0;
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SAVE
-MNG_C_SPECIALFUNC (mng_special_save)
-{
- pData->bHasSAVE = MNG_TRUE;
-
- if (pData->fProcesssave) /* inform the application ? */
- {
- mng_bool bOke = pData->fProcesssave ((mng_handle)pData);
- if (!bOke)
- MNG_ERROR (pData, MNG_APPMISCERROR);
- }
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_retcode iRetcode;
-
- /* TODO: something with the parameters */
-
- /* create a SAVE animation object */
- iRetcode = mng_create_ani_save (pData);
- if (!iRetcode) /* process it */
- iRetcode = mng_process_display_save (pData);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SEEK
-MNG_C_SPECIALFUNC (mng_special_seek)
-{
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_DISPLAY
- /* create a SEEK animation object */
- iRetcode = mng_create_ani_seek (pData, pChunk);
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#endif /* MNG_SUPPORT_DISPLAY */
-
- if (pData->fProcessseek) /* inform the app ? */
- if (!pData->fProcessseek ((mng_handle)pData, ((mng_seekp)pChunk)->zName))
- MNG_ERROR (pData, MNG_APPMISCERROR);
-
-#ifdef MNG_SUPPORT_DISPLAY
- return mng_process_display_seek (pData);
-#else
- return MNG_NOERROR;
-#endif /* MNG_SUPPORT_DISPLAY */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_eXPI
-MNG_C_SPECIALFUNC (mng_special_expi)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_fPRI
-MNG_C_SPECIALFUNC (mng_special_fpri)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_nEED
-MNG_LOCAL mng_bool CheckKeyword (mng_datap pData,
- mng_uint8p pKeyword)
-{
- mng_chunkid handled_chunks [] =
- {
- MNG_UINT_BACK, /* keep it sorted !!!! */
- MNG_UINT_BASI,
- MNG_UINT_CLIP,
- MNG_UINT_CLON,
-#ifndef MNG_NO_DELTA_PNG
-/* TODO: MNG_UINT_DBYK, */
-#endif
- MNG_UINT_DEFI,
-#ifndef MNG_NO_DELTA_PNG
- MNG_UINT_DHDR,
-#endif
- MNG_UINT_DISC,
-#ifndef MNG_NO_DELTA_PNG
-/* TODO: MNG_UINT_DROP, */
-#endif
- MNG_UINT_ENDL,
- MNG_UINT_FRAM,
- MNG_UINT_IDAT,
- MNG_UINT_IEND,
- MNG_UINT_IHDR,
-#ifndef MNG_NO_DELTA_PNG
-#ifdef MNG_INCLUDE_JNG
- MNG_UINT_IJNG,
-#endif
- MNG_UINT_IPNG,
-#endif
-#ifdef MNG_INCLUDE_JNG
- MNG_UINT_JDAA,
- MNG_UINT_JDAT,
- MNG_UINT_JHDR,
-/* TODO: MNG_UINT_JSEP, */
- MNG_UINT_JdAA,
-#endif
- MNG_UINT_LOOP,
- MNG_UINT_MAGN,
- MNG_UINT_MEND,
- MNG_UINT_MHDR,
- MNG_UINT_MOVE,
-/* TODO: MNG_UINT_ORDR, */
- MNG_UINT_PAST,
- MNG_UINT_PLTE,
-#ifndef MNG_NO_DELTA_PNG
- MNG_UINT_PPLT,
- MNG_UINT_PROM,
-#endif
- MNG_UINT_SAVE,
- MNG_UINT_SEEK,
- MNG_UINT_SHOW,
- MNG_UINT_TERM,
- MNG_UINT_bKGD,
- MNG_UINT_cHRM,
-/* TODO: MNG_UINT_eXPI, */
- MNG_UINT_evNT,
-/* TODO: MNG_UINT_fPRI, */
- MNG_UINT_gAMA,
-/* TODO: MNG_UINT_hIST, */
- MNG_UINT_iCCP,
- MNG_UINT_iTXt,
- MNG_UINT_nEED,
-/* TODO: MNG_UINT_oFFs, */
-/* TODO: MNG_UINT_pCAL, */
-/* TODO: MNG_UINT_pHYg, */
-/* TODO: MNG_UINT_pHYs, */
-/* TODO: MNG_UINT_sBIT, */
-/* TODO: MNG_UINT_sCAL, */
-/* TODO: MNG_UINT_sPLT, */
- MNG_UINT_sRGB,
- MNG_UINT_tEXt,
- MNG_UINT_tIME,
- MNG_UINT_tRNS,
- MNG_UINT_zTXt,
- };
-
- mng_bool bOke = MNG_FALSE;
-
- if (pData->fProcessneed) /* does the app handle it ? */
- bOke = pData->fProcessneed ((mng_handle)pData, (mng_pchar)pKeyword);
-
- if (!bOke)
- { /* find the keyword length */
- mng_uint8p pNull = pKeyword;
- while (*pNull)
- pNull++;
-
- if ((pNull - pKeyword) == 4) /* test a chunk ? */
- { /* get the chunk-id */
- mng_chunkid iChunkid = (*pKeyword << 24) + (*(pKeyword+1) << 16) +
- (*(pKeyword+2) << 8) + (*(pKeyword+3) );
- /* binary search variables */
- mng_int32 iTop, iLower, iUpper, iMiddle;
- /* determine max index of table */
- iTop = (sizeof (handled_chunks) / sizeof (handled_chunks [0])) - 1;
-
- /* binary search; with 52 chunks, worst-case is 7 comparisons */
- iLower = 0;
- iMiddle = iTop >> 1;
- iUpper = iTop;
-
- do /* the binary search itself */
- {
- if (handled_chunks [iMiddle] < iChunkid)
- iLower = iMiddle + 1;
- else if (handled_chunks [iMiddle] > iChunkid)
- iUpper = iMiddle - 1;
- else
- {
- bOke = MNG_TRUE;
- break;
- }
-
- iMiddle = (iLower + iUpper) >> 1;
- }
- while (iLower <= iUpper);
- }
- /* test draft ? */
- if ((!bOke) && ((pNull - pKeyword) == 8) &&
- (*pKeyword == 'd') && (*(pKeyword+1) == 'r') &&
- (*(pKeyword+2) == 'a') && (*(pKeyword+3) == 'f') &&
- (*(pKeyword+4) == 't') && (*(pKeyword+5) == ' '))
- {
- mng_uint32 iDraft;
-
- iDraft = (*(pKeyword+6) - '0') * 10 + (*(pKeyword+7) - '0');
- bOke = (mng_bool)(iDraft <= MNG_MNG_DRAFT);
- }
- /* test MNG 1.0/1.1 ? */
- if ((!bOke) && ((pNull - pKeyword) == 7) &&
- (*pKeyword == 'M') && (*(pKeyword+1) == 'N') &&
- (*(pKeyword+2) == 'G') && (*(pKeyword+3) == '-') &&
- (*(pKeyword+4) == '1') && (*(pKeyword+5) == '.') &&
- ((*(pKeyword+6) == '0') || (*(pKeyword+6) == '1')))
- bOke = MNG_TRUE;
- /* test CACHEOFF ? */
- if ((!bOke) && ((pNull - pKeyword) == 8) &&
- (*pKeyword == 'C') && (*(pKeyword+1) == 'A') &&
- (*(pKeyword+2) == 'C') && (*(pKeyword+3) == 'H') &&
- (*(pKeyword+4) == 'E') && (*(pKeyword+5) == 'O') &&
- (*(pKeyword+6) == 'F') && (*(pKeyword+7) == 'F'))
- {
- if (!pData->pFirstaniobj) /* only if caching hasn't started yet ! */
- {
- bOke = MNG_TRUE;
- pData->bCacheplayback = MNG_FALSE;
- pData->bStorechunks = MNG_FALSE;
- }
- }
- }
-
- return bOke;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_nEED
-MNG_C_SPECIALFUNC (mng_special_need)
-{
- /* let's check it */
- mng_bool bOke = MNG_TRUE;
- mng_uint8p pNull, pTemp, pMax;
-
- pTemp = (mng_uint8p)((mng_needp)pChunk)->zKeywords;
- pMax = (mng_uint8p)(pTemp + ((mng_needp)pChunk)->iKeywordssize);
- pNull = pTemp;
- while (*pNull)
- pNull++;
-
- while ((bOke) && (pNull < pMax))
- {
- bOke = CheckKeyword (pData, pTemp);
- pTemp = pNull + 1;
- pNull = pTemp;
- while (*pNull)
- pNull++;
- }
-
- if (bOke)
- bOke = CheckKeyword (pData, pTemp);
-
- if (!bOke)
- MNG_ERROR (pData, MNG_UNSUPPORTEDNEED);
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_pHYg
-MNG_C_SPECIALFUNC (mng_special_phyg)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-MNG_C_SPECIALFUNC (mng_special_dhdr)
-{
- if ((((mng_dhdrp)pChunk)->iDeltatype == MNG_DELTATYPE_REPLACE) && (((mng_dhdrp)pChunk)->bHasblockloc))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- if ((((mng_dhdrp)pChunk)->iDeltatype == MNG_DELTATYPE_NOCHANGE) && (((mng_dhdrp)pChunk)->bHasblocksize))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- pData->bHasDHDR = MNG_TRUE; /* inside a DHDR-IEND block now */
- pData->iDeltatype = ((mng_dhdrp)pChunk)->iDeltatype;
-
- pData->iImagelevel++; /* one level deeper */
-
-#ifdef MNG_SUPPORT_DISPLAY
- return mng_create_ani_dhdr (pData, pChunk);
-#else
- return MNG_NOERROR;
-#endif /* MNG_SUPPORT_DISPLAY */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-MNG_C_SPECIALFUNC (mng_special_prom)
-{
- if ((((mng_promp)pChunk)->iColortype != MNG_COLORTYPE_GRAY ) &&
- (((mng_promp)pChunk)->iColortype != MNG_COLORTYPE_RGB ) &&
- (((mng_promp)pChunk)->iColortype != MNG_COLORTYPE_INDEXED) &&
- (((mng_promp)pChunk)->iColortype != MNG_COLORTYPE_GRAYA ) &&
- (((mng_promp)pChunk)->iColortype != MNG_COLORTYPE_RGBA ) )
- MNG_ERROR (pData, MNG_INVALIDCOLORTYPE);
-
-#ifdef MNG_NO_16BIT_SUPPORT
- if (((mng_promp)pChunk)->iSampledepth == MNG_BITDEPTH_16 )
- ((mng_promp)pChunk)->iSampledepth = MNG_BITDEPTH_8;
-#endif
-
- if ((((mng_promp)pChunk)->iSampledepth != MNG_BITDEPTH_1 ) &&
- (((mng_promp)pChunk)->iSampledepth != MNG_BITDEPTH_2 ) &&
- (((mng_promp)pChunk)->iSampledepth != MNG_BITDEPTH_4 ) &&
- (((mng_promp)pChunk)->iSampledepth != MNG_BITDEPTH_8 )
-#ifndef MNG_NO_16BIT_SUPPORT
- && (((mng_promp)pChunk)->iSampledepth != MNG_BITDEPTH_16)
-#endif
- )
- MNG_ERROR (pData, MNG_INVSAMPLEDEPTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_retcode iRetcode = mng_create_ani_prom (pData, pChunk);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-MNG_C_SPECIALFUNC (mng_special_ipng)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- mng_retcode iRetcode = mng_create_ani_ipng (pData);
- if (!iRetcode) /* process it */
- iRetcode = mng_process_display_ipng (pData);
- if (iRetcode) /* on error bail out */
- return iRetcode;
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-MNG_F_SPECIALFUNC (mng_pplt_entries)
-{
- mng_ppltp pPPLT = (mng_ppltp)pChunk;
- mng_uint32 iRawlen = *piRawlen;
- mng_uint8p pRawdata = *ppRawdata;
- mng_uint8 iDeltatype = pPPLT->iDeltatype;
- mng_uint32 iMax = 0;
- mng_int32 iX, iY, iM;
- mng_rgbpaltab aIndexentries;
- mng_uint8arr aAlphaentries;
- mng_uint8arr aUsedentries;
- /* must be indexed color ! */
- if (pData->iColortype != MNG_COLORTYPE_INDEXED)
- MNG_ERROR (pData, MNG_INVALIDCOLORTYPE);
-
- for (iY = 255; iY >= 0; iY--) /* reset arrays */
- {
- aIndexentries [iY].iRed = 0;
- aIndexentries [iY].iGreen = 0;
- aIndexentries [iY].iBlue = 0;
- aAlphaentries [iY] = 255;
- aUsedentries [iY] = 0;
- }
-
- while (iRawlen) /* as long as there are entries left ... */
- {
- mng_uint32 iDiff;
-
- if (iRawlen < 2)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- iX = (mng_int32)(*pRawdata); /* get start and end index */
- iM = (mng_int32)(*(pRawdata+1));
-
- if (iM < iX)
- MNG_ERROR (pData, MNG_INVALIDINDEX);
-
- if (iM >= (mng_int32) iMax) /* determine highest used index */
- iMax = iM + 1;
-
- pRawdata += 2;
- iRawlen -= 2;
- iDiff = (iM - iX + 1);
- if ((iDeltatype == MNG_DELTATYPE_REPLACERGB ) ||
- (iDeltatype == MNG_DELTATYPE_DELTARGB ) )
- iDiff = iDiff * 3;
- else
- if ((iDeltatype == MNG_DELTATYPE_REPLACERGBA) ||
- (iDeltatype == MNG_DELTATYPE_DELTARGBA ) )
- iDiff = iDiff * 4;
-
- if (iRawlen < iDiff)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if ((iDeltatype == MNG_DELTATYPE_REPLACERGB ) ||
- (iDeltatype == MNG_DELTATYPE_DELTARGB ) )
- {
- for (iY = iX; iY <= iM; iY++)
- {
- aIndexentries [iY].iRed = *pRawdata;
- aIndexentries [iY].iGreen = *(pRawdata+1);
- aIndexentries [iY].iBlue = *(pRawdata+2);
- aUsedentries [iY] = 1;
-
- pRawdata += 3;
- iRawlen -= 3;
- }
- }
- else
- if ((iDeltatype == MNG_DELTATYPE_REPLACEALPHA) ||
- (iDeltatype == MNG_DELTATYPE_DELTAALPHA ) )
- {
- for (iY = iX; iY <= iM; iY++)
- {
- aAlphaentries [iY] = *pRawdata;
- aUsedentries [iY] = 1;
-
- pRawdata++;
- iRawlen--;
- }
- }
- else
- {
- for (iY = iX; iY <= iM; iY++)
- {
- aIndexentries [iY].iRed = *pRawdata;
- aIndexentries [iY].iGreen = *(pRawdata+1);
- aIndexentries [iY].iBlue = *(pRawdata+2);
- aAlphaentries [iY] = *(pRawdata+3);
- aUsedentries [iY] = 1;
-
- pRawdata += 4;
- iRawlen -= 4;
- }
- }
- }
-
- switch (pData->iBitdepth) /* check maximum allowed entries for bitdepth */
- {
- case MNG_BITDEPTH_1 : {
- if (iMax > 2)
- MNG_ERROR (pData, MNG_INVALIDINDEX);
- break;
- }
- case MNG_BITDEPTH_2 : {
- if (iMax > 4)
- MNG_ERROR (pData, MNG_INVALIDINDEX);
- break;
- }
- case MNG_BITDEPTH_4 : {
- if (iMax > 16)
- MNG_ERROR (pData, MNG_INVALIDINDEX);
- break;
- }
- }
-
- pPPLT->iCount = iMax;
-
- for (iY = 255; iY >= 0; iY--)
- {
- pPPLT->aEntries [iY].iRed = aIndexentries [iY].iRed;
- pPPLT->aEntries [iY].iGreen = aIndexentries [iY].iGreen;
- pPPLT->aEntries [iY].iBlue = aIndexentries [iY].iBlue;
- pPPLT->aEntries [iY].iAlpha = aAlphaentries [iY];
- pPPLT->aEntries [iY].bUsed = (mng_bool)(aUsedentries [iY]);
- }
-
- { /* create animation object */
- mng_retcode iRetcode = mng_create_ani_pplt (pData, iDeltatype, iMax,
- aIndexentries, aAlphaentries,
- aUsedentries);
- if (iRetcode)
- return iRetcode;
- }
-
- *piRawlen = 0;
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-MNG_C_SPECIALFUNC (mng_special_pplt)
-{
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifdef MNG_INCLUDE_JNG
-MNG_C_SPECIALFUNC (mng_special_ijng)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- mng_retcode iRetcode = mng_create_ani_ijng (pData);
- if (!iRetcode) /* process it */
- iRetcode = mng_process_display_ijng (pData);
- return iRetcode;
-#else
- return MNG_NOERROR; /* done */
-#endif /* MNG_SUPPORT_DISPLAY */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-MNG_F_SPECIALFUNC (mng_drop_entries)
-{
- mng_dropp pDROP = (mng_dropp)pChunk;
- mng_uint32 iRawlen = *piRawlen;
- mng_uint8p pRawdata = *ppRawdata;
- mng_uint32 iX;
- mng_uint32p pEntry;
- /* check length */
- if ((iRawlen < 4) || ((iRawlen % 4) != 0))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- MNG_ALLOC (pData, pEntry, iRawlen);
- pDROP->iCount = iRawlen / 4;
- pDROP->pChunknames = (mng_ptr)pEntry;
-
- for (iX = pDROP->iCount; iX > 0; iX--)
- {
- *pEntry++ = mng_get_uint32 (pRawdata);
- pRawdata += 4;
- }
-
- *piRawlen = 0;
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-MNG_C_SPECIALFUNC (mng_special_drop)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_DBYK
-MNG_C_SPECIALFUNC (mng_special_dbyk)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_ORDR
-MNG_F_SPECIALFUNC (mng_ordr_entries)
-{
- mng_ordrp pORDR = (mng_ordrp)pChunk;
- mng_uint32 iRawlen = *piRawlen;
- mng_uint8p pRawdata = *ppRawdata;
- mng_uint32 iX;
- mng_ordr_entryp pEntry;
- /* check length */
- if ((iRawlen < 5) || ((iRawlen % 5) != 0))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- MNG_ALLOC (pData, pEntry, iRawlen);
- pORDR->iCount = iRawlen / 5;
- pORDR->pEntries = (mng_ptr)pEntry;
-
- for (iX = pORDR->iCount; iX > 0; iX--)
- {
- pEntry->iChunkname = mng_get_uint32 (pRawdata);
- pEntry->iOrdertype = *(pRawdata+4);
- pEntry++;
- pRawdata += 5;
- }
-
- *piRawlen = 0;
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_ORDR
-MNG_C_SPECIALFUNC (mng_special_ordr)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_MAGN
-MNG_F_SPECIALFUNC (mng_debunk_magn)
-{
- mng_magnp pMAGN = (mng_magnp)pChunk;
- mng_uint32 iRawlen = *piRawlen;
- mng_uint8p pRawdata = *ppRawdata;
- mng_bool bFaulty;
- /* check length */
- if (iRawlen > 20)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- /* following is an ugly hack to allow faulty layout caused by previous
- versions of libmng and MNGeye, which wrote MAGN with a 16-bit
- MethodX/MethodY (as opposed to the proper 8-bit as defined in the spec!) */
-
- if ((iRawlen == 6) || (iRawlen == 8) || (iRawlen == 10) || (iRawlen == 12) ||
- (iRawlen == 14) || (iRawlen == 16) || (iRawlen == 20))
- bFaulty = MNG_TRUE; /* these lengths are all wrong */
- else /* length 18 can be right or wrong !!! */
- if ((iRawlen == 18) && (mng_get_uint16 (pRawdata+4) <= 5) &&
- (mng_get_uint16 (pRawdata+6) < 256) &&
- (mng_get_uint16 (pRawdata+8) < 256) &&
- (mng_get_uint16 (pRawdata+10) < 256) &&
- (mng_get_uint16 (pRawdata+12) < 256) &&
- (mng_get_uint16 (pRawdata+14) < 256) &&
- (mng_get_uint16 (pRawdata+16) < 256))
- bFaulty = MNG_TRUE; /* this is very likely the wrong layout */
- else
- bFaulty = MNG_FALSE; /* all other cases are handled as right */
-
- if (bFaulty) /* wrong layout ? */
- {
- if (iRawlen > 0) /* get the fields */
- pMAGN->iFirstid = mng_get_uint16 (pRawdata);
- else
- pMAGN->iFirstid = 0;
-
- if (iRawlen > 2)
- pMAGN->iLastid = mng_get_uint16 (pRawdata+2);
- else
- pMAGN->iLastid = pMAGN->iFirstid;
-
- if (iRawlen > 4)
- pMAGN->iMethodX = (mng_uint8)(mng_get_uint16 (pRawdata+4));
- else
- pMAGN->iMethodX = 0;
-
- if (iRawlen > 6)
- pMAGN->iMX = mng_get_uint16 (pRawdata+6);
- else
- pMAGN->iMX = 1;
-
- if (iRawlen > 8)
- pMAGN->iMY = mng_get_uint16 (pRawdata+8);
- else
- pMAGN->iMY = pMAGN->iMX;
-
- if (iRawlen > 10)
- pMAGN->iML = mng_get_uint16 (pRawdata+10);
- else
- pMAGN->iML = pMAGN->iMX;
-
- if (iRawlen > 12)
- pMAGN->iMR = mng_get_uint16 (pRawdata+12);
- else
- pMAGN->iMR = pMAGN->iMX;
-
- if (iRawlen > 14)
- pMAGN->iMT = mng_get_uint16 (pRawdata+14);
- else
- pMAGN->iMT = pMAGN->iMY;
-
- if (iRawlen > 16)
- pMAGN->iMB = mng_get_uint16 (pRawdata+16);
- else
- pMAGN->iMB = pMAGN->iMY;
-
- if (iRawlen > 18)
- pMAGN->iMethodY = (mng_uint8)(mng_get_uint16 (pRawdata+18));
- else
- pMAGN->iMethodY = pMAGN->iMethodX;
- }
- else /* proper layout !!!! */
- {
- if (iRawlen > 0) /* get the fields */
- pMAGN->iFirstid = mng_get_uint16 (pRawdata);
- else
- pMAGN->iFirstid = 0;
-
- if (iRawlen > 2)
- pMAGN->iLastid = mng_get_uint16 (pRawdata+2);
- else
- pMAGN->iLastid = pMAGN->iFirstid;
-
- if (iRawlen > 4)
- pMAGN->iMethodX = *(pRawdata+4);
- else
- pMAGN->iMethodX = 0;
-
- if (iRawlen > 5)
- pMAGN->iMX = mng_get_uint16 (pRawdata+5);
- else
- pMAGN->iMX = 1;
-
- if (iRawlen > 7)
- pMAGN->iMY = mng_get_uint16 (pRawdata+7);
- else
- pMAGN->iMY = pMAGN->iMX;
-
- if (iRawlen > 9)
- pMAGN->iML = mng_get_uint16 (pRawdata+9);
- else
- pMAGN->iML = pMAGN->iMX;
-
- if (iRawlen > 11)
- pMAGN->iMR = mng_get_uint16 (pRawdata+11);
- else
- pMAGN->iMR = pMAGN->iMX;
-
- if (iRawlen > 13)
- pMAGN->iMT = mng_get_uint16 (pRawdata+13);
- else
- pMAGN->iMT = pMAGN->iMY;
-
- if (iRawlen > 15)
- pMAGN->iMB = mng_get_uint16 (pRawdata+15);
- else
- pMAGN->iMB = pMAGN->iMY;
-
- if (iRawlen > 17)
- pMAGN->iMethodY = *(pRawdata+17);
- else
- pMAGN->iMethodY = pMAGN->iMethodX;
- }
- /* check field validity */
- if ((pMAGN->iMethodX > 5) || (pMAGN->iMethodY > 5))
- MNG_ERROR (pData, MNG_INVALIDMETHOD);
-
- *piRawlen = 0;
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_MAGN
-MNG_C_SPECIALFUNC (mng_special_magn)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- return mng_create_ani_magn (pData, pChunk);
-#else
- return MNG_NOERROR;
-#endif /* MNG_SUPPORT_DISPLAY */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_evNT
-MNG_F_SPECIALFUNC (mng_evnt_entries)
-{
- mng_evntp pEVNT = (mng_evntp)pChunk;
- mng_uint32 iRawlen;
- mng_uint8p pRawdata;
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_SUPPORT_DYNAMICMNG)
- mng_retcode iRetcode;
-#endif
- mng_uint8p pNull;
- mng_uint8 iEventtype;
- mng_uint8 iMasktype;
- mng_int32 iLeft;
- mng_int32 iRight;
- mng_int32 iTop;
- mng_int32 iBottom;
- mng_uint16 iObjectid;
- mng_uint8 iIndex;
- mng_uint32 iNamesize;
- mng_uint32 iCount = 0;
- mng_evnt_entryp pEntry = MNG_NULL;
- mng_uint32 iX;
-
- for (iX = 0; iX < 2; iX++)
- {
- iRawlen = *piRawlen;
- pRawdata = *ppRawdata;
-
- if (iX) /* second run ? */
- {
- MNG_ALLOC (pData, pEntry, (iCount * sizeof (mng_evnt_entry)));
- pEVNT->iCount = iCount;
- pEVNT->pEntries = pEntry;
- }
-
- while (iRawlen) /* anything left ? */
- {
- if (iRawlen < 2) /* must have at least 2 bytes ! */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- iEventtype = *pRawdata; /* eventtype */
- if (iEventtype > 5)
- MNG_ERROR (pData, MNG_INVALIDEVENT);
-
- pRawdata++;
-
- iMasktype = *pRawdata; /* masktype */
- if (iMasktype > 5)
- MNG_ERROR (pData, MNG_INVALIDMASK);
-
- pRawdata++;
- iRawlen -= 2;
-
- iLeft = 0;
- iRight = 0;
- iTop = 0;
- iBottom = 0;
- iObjectid = 0;
- iIndex = 0;
-
- switch (iMasktype)
- {
- case 1 :
- {
- if (iRawlen > 16)
- {
- iLeft = mng_get_int32 (pRawdata);
- iRight = mng_get_int32 (pRawdata+4);
- iTop = mng_get_int32 (pRawdata+8);
- iBottom = mng_get_int32 (pRawdata+12);
- pRawdata += 16;
- iRawlen -= 16;
- }
- else
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- break;
- }
- case 2 :
- {
- if (iRawlen > 2)
- {
- iObjectid = mng_get_uint16 (pRawdata);
- pRawdata += 2;
- iRawlen -= 2;
- }
- else
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- break;
- }
- case 3 :
- {
- if (iRawlen > 3)
- {
- iObjectid = mng_get_uint16 (pRawdata);
- iIndex = *(pRawdata+2);
- pRawdata += 3;
- iRawlen -= 3;
- }
- else
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- break;
- }
- case 4 :
- {
- if (iRawlen > 18)
- {
- iLeft = mng_get_int32 (pRawdata);
- iRight = mng_get_int32 (pRawdata+4);
- iTop = mng_get_int32 (pRawdata+8);
- iBottom = mng_get_int32 (pRawdata+12);
- iObjectid = mng_get_uint16 (pRawdata+16);
- pRawdata += 18;
- iRawlen -= 18;
- }
- else
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- break;
- }
- case 5 :
- {
- if (iRawlen > 19)
- {
- iLeft = mng_get_int32 (pRawdata);
- iRight = mng_get_int32 (pRawdata+4);
- iTop = mng_get_int32 (pRawdata+8);
- iBottom = mng_get_int32 (pRawdata+12);
- iObjectid = mng_get_uint16 (pRawdata+16);
- iIndex = *(pRawdata+18);
- pRawdata += 19;
- iRawlen -= 19;
- }
- else
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- break;
- }
- }
-
- pNull = pRawdata; /* get the name length */
- while (*pNull)
- pNull++;
-
- if ((pNull - pRawdata) > (mng_int32)iRawlen)
- {
- iNamesize = iRawlen; /* no null found; so end of evNT */
- iRawlen = 0;
- }
- else
- {
- iNamesize = pNull - pRawdata; /* should be another entry */
- iRawlen = iRawlen - iNamesize - 1;
-
- if (!iRawlen) /* must not end with a null ! */
- MNG_ERROR (pData, MNG_ENDWITHNULL);
- }
-
- if (!iX)
- {
- iCount++;
- }
- else
- {
- pEntry->iEventtype = iEventtype;
- pEntry->iMasktype = iMasktype;
- pEntry->iLeft = iLeft;
- pEntry->iRight = iRight;
- pEntry->iTop = iTop;
- pEntry->iBottom = iBottom;
- pEntry->iObjectid = iObjectid;
- pEntry->iIndex = iIndex;
- pEntry->iSegmentnamesize = iNamesize;
-
- if (iNamesize)
- {
- MNG_ALLOC (pData, pEntry->zSegmentname, iNamesize+1);
- MNG_COPY (pEntry->zSegmentname, pRawdata, iNamesize);
- }
-
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_SUPPORT_DYNAMICMNG)
- iRetcode = mng_create_event (pData, (mng_ptr)pEntry);
- if (iRetcode) /* on error bail out */
- return iRetcode;
-#endif
-
- pEntry++;
- }
-
- pRawdata = pRawdata + iNamesize + 1;
- }
- }
-
- *piRawlen = 0;
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_evNT
-MNG_C_SPECIALFUNC (mng_special_evnt)
-{
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-MNG_C_SPECIALFUNC (mng_special_mpng)
-{
- if ((pData->eImagetype != mng_it_png) && (pData->eImagetype != mng_it_jng))
- MNG_ERROR (pData, MNG_CHUNKNOTALLOWED);
-
-#ifdef MNG_SUPPORT_DISPLAY
- return mng_create_mpng_obj (pData, pChunk);
-#else
- return MNG_NOERROR;
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-MNG_C_SPECIALFUNC (mng_special_ahdr)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- return mng_create_ang_obj (pData, pChunk);
-#else
- return MNG_NOERROR;
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-MNG_F_SPECIALFUNC (mng_adat_tiles)
-{
- if ((pData->eImagetype != mng_it_ang) || (!pData->pANG))
- MNG_ERROR (pData, MNG_CHUNKNOTALLOWED);
-
- {
- mng_adatp pADAT = (mng_adatp)pChunk;
- mng_ang_objp pANG = (mng_ang_objp)pData->pANG;
- mng_uint32 iRawlen = *piRawlen;
- mng_uint8p pRawdata = *ppRawdata;
- mng_retcode iRetcode;
- mng_uint8p pBuf;
- mng_uint32 iBufsize;
- mng_uint32 iRealsize;
- mng_uint8p pTemp;
- mng_uint8p pTemp2;
- mng_int32 iX;
- mng_int32 iSize;
-
-#ifdef MNG_SUPPORT_DISPLAY
- mng_imagep pImage;
- mng_int32 iTemplen;
- mng_uint8p pSwap;
-
- mng_processobject pProcess;
-
- mng_uint32 iSavedatawidth;
- mng_uint32 iSavedataheight;
-
- mng_fptr fSaveinitrowproc;
- mng_fptr fSavestorerow;
- mng_fptr fSaveprocessrow;
- mng_fptr fSavedifferrow;
- mng_imagep fSavestoreobj;
- mng_imagedatap fSavestorebuf;
-
-#ifdef MNG_OPTIMIZE_FOOTPRINT_INIT
- png_imgtype eSavepngimgtype;
-#endif
-
- mng_uint8 iSaveinterlace;
- mng_int8 iSavepass;
- mng_int32 iSaverow;
- mng_int32 iSaverowinc;
- mng_int32 iSavecol;
- mng_int32 iSavecolinc;
- mng_int32 iSaverowsamples;
- mng_int32 iSavesamplemul;
- mng_int32 iSavesampleofs;
- mng_int32 iSavesamplediv;
- mng_int32 iSaverowsize;
- mng_int32 iSaverowmax;
- mng_int32 iSavefilterofs;
- mng_int32 iSavepixelofs;
- mng_uint32 iSavelevel0;
- mng_uint32 iSavelevel1;
- mng_uint32 iSavelevel2;
- mng_uint32 iSavelevel3;
- mng_uint8p pSaveworkrow;
- mng_uint8p pSaveprevrow;
- mng_uint8p pSaverGBArow;
- mng_bool bSaveisRGBA16;
- mng_bool bSaveisOpaque;
- mng_int32 iSavefilterbpp;
-
- mng_int32 iSavedestl;
- mng_int32 iSavedestt;
- mng_int32 iSavedestr;
- mng_int32 iSavedestb;
- mng_int32 iSavesourcel;
- mng_int32 iSavesourcet;
- mng_int32 iSavesourcer;
- mng_int32 iSavesourceb;
-#endif /* MNG_SUPPORT_DISPLAY */
-
- iRetcode = mng_inflate_buffer (pData, pRawdata, iRawlen,
- &pBuf, &iBufsize, &iRealsize);
- if (iRetcode) /* on error bail out */
- { /* don't forget to drop the temp buffer */
- MNG_FREEX (pData, pBuf, iBufsize);
- return iRetcode;
- }
- /* get buffer for tile info in ADAT chunk */
- pADAT->iTilessize = pANG->iNumframes * sizeof(mng_adat_tile);
- MNG_ALLOCX (pData, pADAT->pTiles, pADAT->iTilessize);
- if (!pADAT->pTiles)
- {
- pADAT->iTilessize = 0;
- MNG_FREEX (pData, pBuf, iBufsize);
- MNG_ERROR (pData, MNG_OUTOFMEMORY);
- }
-
- pTemp = pBuf;
- pTemp2 = (mng_uint8p)pADAT->pTiles;
-
- if (!pANG->iStillused)
- iSize = 12;
- else
- iSize = 13;
-
- for (iX = 0; iX < pANG->iNumframes; iX++)
- {
- MNG_COPY (pTemp2, pTemp, iSize);
- pTemp += iSize;
- pTemp2 += sizeof(mng_adat_tile);
- }
-
-#ifdef MNG_SUPPORT_DISPLAY
- /* get buffer for tile info in ANG object */
- pANG->iTilessize = pADAT->iTilessize;
- MNG_ALLOCX (pData, pANG->pTiles, pANG->iTilessize);
- if (!pANG->pTiles)
- {
- pANG->iTilessize = 0;
- MNG_FREEX (pData, pBuf, iBufsize);
- MNG_ERROR (pData, MNG_OUTOFMEMORY);
- }
- /* copy it from the ADAT object */
- MNG_COPY (pANG->pTiles, pADAT->pTiles, pANG->iTilessize);
-
- /* save IDAT work-parms */
- fSaveinitrowproc = pData->fInitrowproc;
- fSavestorerow = pData->fDisplayrow;
- fSaveprocessrow = pData->fProcessrow;
- fSavedifferrow = pData->fDifferrow;
- fSavestoreobj = pData->pStoreobj;
- fSavestorebuf = pData->pStorebuf;
-
-#ifdef MNG_OPTIMIZE_FOOTPRINT_INIT
- eSavepngimgtype = pData->ePng_imgtype;
-#endif
-
- iSavedatawidth = pData->iDatawidth;
- iSavedataheight = pData->iDataheight;
- iSaveinterlace = pData->iInterlace;
- iSavepass = pData->iPass;
- iSaverow = pData->iRow;
- iSaverowinc = pData->iRowinc;
- iSavecol = pData->iCol;
- iSavecolinc = pData->iColinc;
- iSaverowsamples = pData->iRowsamples;
- iSavesamplemul = pData->iSamplemul;
- iSavesampleofs = pData->iSampleofs;
- iSavesamplediv = pData->iSamplediv;
- iSaverowsize = pData->iRowsize;
- iSaverowmax = pData->iRowmax;
- iSavefilterofs = pData->iFilterofs;
- iSavepixelofs = pData->iPixelofs;
- iSavelevel0 = pData->iLevel0;
- iSavelevel1 = pData->iLevel1;
- iSavelevel2 = pData->iLevel2;
- iSavelevel3 = pData->iLevel3;
- pSaveworkrow = pData->pWorkrow;
- pSaveprevrow = pData->pPrevrow;
- pSaverGBArow = pData->pRGBArow;
- bSaveisRGBA16 = pData->bIsRGBA16;
- bSaveisOpaque = pData->bIsOpaque;
- iSavefilterbpp = pData->iFilterbpp;
- iSavedestl = pData->iDestl;
- iSavedestt = pData->iDestt;
- iSavedestr = pData->iDestr;
- iSavedestb = pData->iDestb;
- iSavesourcel = pData->iSourcel;
- iSavesourcet = pData->iSourcet;
- iSavesourcer = pData->iSourcer;
- iSavesourceb = pData->iSourceb;
-
- pData->iDatawidth = pANG->iTilewidth;
- pData->iDataheight = pANG->iTileheight;
-
- pData->iDestl = 0;
- pData->iDestt = 0;
- pData->iDestr = pANG->iTilewidth;
- pData->iDestb = pANG->iTileheight;
- pData->iSourcel = 0;
- pData->iSourcet = 0;
- pData->iSourcer = pANG->iTilewidth;
- pData->iSourceb = pANG->iTileheight;
-
- pData->fInitrowproc = MNG_NULL;
- pData->fStorerow = MNG_NULL;
- pData->fProcessrow = MNG_NULL;
- pData->fDifferrow = MNG_NULL;
-
- /* clone image object to store the pixel-data from object 0 */
- iRetcode = mng_clone_imageobject (pData, 1, MNG_FALSE, MNG_FALSE, MNG_FALSE,
- MNG_FALSE, 0, 0, 0, pData->pObjzero, &pImage);
- if (iRetcode) /* on error, drop temp buffer and bail */
- {
- MNG_FREEX (pData, pBuf, iBufsize);
- return iRetcode;
- }
-
- /* make sure we got the right dimensions and interlacing */
- iRetcode = mng_reset_object_details (pData, pImage, pANG->iTilewidth, pANG->iTileheight,
- pImage->pImgbuf->iBitdepth, pImage->pImgbuf->iColortype,
- pImage->pImgbuf->iCompression, pImage->pImgbuf->iFilter,
- pANG->iInterlace, MNG_FALSE);
- if (iRetcode) /* on error, drop temp buffer and bail */
- {
- MNG_FREEX (pData, pBuf, iBufsize);
- return iRetcode;
- }
-
- pData->pStoreobj = pImage;
-
-#ifdef MNG_OPTIMIZE_FOOTPRINT_INIT
- pData->fInitrowproc = (mng_fptr)mng_init_rowproc;
- pData->ePng_imgtype = mng_png_imgtype(pData->iColortype,pData->iBitdepth);
-#else
- switch (pData->iColortype) /* determine row initialization routine */
- {
- case 0 : { /* gray */
- switch (pData->iBitdepth)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g1_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g1_i;
-
- break;
- }
- case 2 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g2_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g2_i;
-
- break;
- }
- case 4 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g4_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g4_i;
- break;
- }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g8_i;
-
- break;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g16_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g16_i;
-
- break;
- }
-#endif
- }
-
- break;
- }
- case 2 : { /* rgb */
- switch (pData->iBitdepth)
- {
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_rgb8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_rgb8_i;
- break;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_rgb16_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_rgb16_i;
-
- break;
- }
-#endif
- }
-
- break;
- }
- case 3 : { /* indexed */
- switch (pData->iBitdepth)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_idx1_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_idx1_i;
-
- break;
- }
- case 2 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_idx2_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_idx2_i;
-
- break;
- }
- case 4 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_idx4_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_idx4_i;
-
- break;
- }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_idx8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_idx8_i;
-
- break;
- }
- }
-
- break;
- }
- case 4 : { /* gray+alpha */
- switch (pData->iBitdepth)
- {
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_ga8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_ga8_i;
-
- break;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_ga16_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_ga16_i;
- break;
- }
-#endif
- }
-
- break;
- }
- case 6 : { /* rgb+alpha */
- switch (pData->iBitdepth)
- {
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_rgba8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_rgba8_i;
-
- break;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_rgba16_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_rgba16_i;
-
- break;
- }
-#endif
- }
-
- break;
- }
- }
-#endif /* MNG_OPTIMIZE_FOOTPRINT_INIT */
-
- pData->iFilterofs = 0; /* determine filter characteristics */
- pData->iLevel0 = 0; /* default levels */
- pData->iLevel1 = 0;
- pData->iLevel2 = 0;
- pData->iLevel3 = 0;
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- {
- switch (pData->iColortype)
- {
- case 0 : {
- if (pData->iBitdepth <= 8)
- pData->iFilterofs = 1;
- else
- pData->iFilterofs = 2;
-
- break;
- }
- case 2 : {
- if (pData->iBitdepth <= 8)
- pData->iFilterofs = 3;
- else
- pData->iFilterofs = 6;
-
- break;
- }
- case 3 : {
- pData->iFilterofs = 1;
- break;
- }
- case 4 : {
- if (pData->iBitdepth <= 8)
- pData->iFilterofs = 2;
- else
- pData->iFilterofs = 4;
-
- break;
- }
- case 6 : {
- if (pData->iBitdepth <= 8)
- pData->iFilterofs = 4;
- else
- pData->iFilterofs = 8;
-
- break;
- }
- }
- }
-#endif
-
-#ifdef FILTER193 /* no adaptive filtering ? */
- if (pData->iFilter == MNG_FILTER_NOFILTER)
- pData->iPixelofs = pData->iFilterofs;
- else
-#endif
- pData->iPixelofs = pData->iFilterofs + 1;
-
- if (pData->fInitrowproc) /* need to initialize row processing? */
- {
- iRetcode = ((mng_initrowproc)pData->fInitrowproc) (pData);
- if (iRetcode)
- {
- MNG_FREEX (pData, pBuf, iBufsize);
- return iRetcode;
- }
- }
- /* calculate remainder of buffer */
- pTemp = pBuf + (mng_int32)(pANG->iNumframes * iSize);
- iTemplen = iRealsize - (mng_int32)(pANG->iNumframes * iSize);
-
- do
- {
- if (iTemplen > pData->iRowmax) /* get a pixel-row from the temp buffer */
- {
- MNG_COPY (pData->pWorkrow, pTemp, pData->iRowmax);
- }
- else
- {
- MNG_COPY (pData->pWorkrow, pTemp, iTemplen);
- }
-
- { /* image not completed yet ? */
- if (pData->iRow < (mng_int32)pData->iDataheight)
- {
-#ifdef MNG_NO_1_2_4BIT_SUPPORT
- if (pData->iPNGdepth == 1)
- {
- /* Inflate Workrow to 8-bit */
- mng_int32 iX;
- mng_uint8p pSrc = pData->pWorkrow+1;
- mng_uint8p pDest = pSrc + pData->iRowsize - (pData->iRowsize+7)/8;
-
- for (iX = ((pData->iRowsize+7)/8) ; iX > 0 ; iX--)
- *pDest++ = *pSrc++;
-
- pDest = pData->pWorkrow+1;
- pSrc = pDest + pData->iRowsize - (pData->iRowsize+7)/8;
- for (iX = pData->iRowsize; ;)
- {
- *pDest++ = (((*pSrc)>>7)&1);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc)>>6)&1);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc)>>5)&1);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc)>>4)&1);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc)>>3)&1);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc)>>2)&1);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc)>>1)&1);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc) )&1);
- if (iX-- <= 0)
- break;
- pSrc++;
- }
- }
- else if (pData->iPNGdepth == 2)
- {
- /* Inflate Workrow to 8-bit */
- mng_int32 iX;
- mng_uint8p pSrc = pData->pWorkrow+1;
- mng_uint8p pDest = pSrc + pData->iRowsize - (2*pData->iRowsize+7)/8;
-
- for (iX = ((2*pData->iRowsize+7)/8) ; iX > 0 ; iX--)
- *pDest++ = *pSrc++;
-
- pDest = pData->pWorkrow+1;
- pSrc = pDest + pData->iRowsize - (2*pData->iRowsize+7)/8;
- for (iX = pData->iRowsize; ;)
- {
- *pDest++ = (((*pSrc)>>6)&3);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc)>>4)&3);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc)>>2)&3);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc) )&3);
- if (iX-- <= 0)
- break;
- pSrc++;
- }
- }
- else if (pData->iPNGdepth == 4)
- {
- /* Inflate Workrow to 8-bit */
- mng_int32 iX;
- mng_uint8p pSrc = pData->pWorkrow+1;
- mng_uint8p pDest = pSrc + pData->iRowsize - (4*pData->iRowsize+7)/8;
-
- for (iX = ((4*pData->iRowsize+7)/8) ; iX > 0 ; iX--)
- *pDest++ = *pSrc++;
-
- pDest = pData->pWorkrow+1;
- pSrc = pDest + pData->iRowsize - (4*pData->iRowsize+7)/8;
- for (iX = pData->iRowsize; ;)
- {
- *pDest++ = (((*pSrc)>>4)&0x0f);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc) )&0x0f);
- if (iX-- <= 0)
- break;
- pSrc++;
- }
- }
- if (pData->iPNGdepth < 8 && pData->iColortype == 0)
- {
- /* Expand samples to 8-bit by LBR */
- mng_int32 iX;
- mng_uint8p pSrc = pData->pWorkrow+1;
- mng_uint8 multiplier[]={0,255,85,0,17,0,0,0,1};
-
- for (iX = pData->iRowsize; iX > 0; iX--)
- *pSrc++ *= multiplier[pData->iPNGdepth];
- }
-#endif
-#ifdef MNG_NO_16BIT_SUPPORT
- if (pData->iPNGdepth > 8)
- {
- /* Reduce Workrow to 8-bit */
- mng_int32 iX;
- mng_uint8p pSrc = pData->pWorkrow+1;
- mng_uint8p pDest = pSrc;
-
- for (iX = pData->iRowsize; iX > 0; iX--)
- {
- *pDest = *pSrc;
- pDest++;
- pSrc+=2;
- }
- }
-#endif
-
-#ifdef FILTER192 /* has leveling info ? */
- if (pData->iFilterofs == MNG_FILTER_DIFFERING)
- iRetcode = init_rowdiffering (pData);
- else
-#endif
- iRetcode = MNG_NOERROR;
- /* filter the row if necessary */
- if ((!iRetcode) && (pData->iFilterofs < pData->iPixelofs ) &&
- (*(pData->pWorkrow + pData->iFilterofs)) )
- iRetcode = mng_filter_a_row (pData);
-
- /* additional leveling/differing ? */
- if ((!iRetcode) && (pData->fDifferrow))
- {
- iRetcode = ((mng_differrow)pData->fDifferrow) (pData);
-
- pSwap = pData->pWorkrow;
- pData->pWorkrow = pData->pPrevrow;
- pData->pPrevrow = pSwap; /* make sure we're processing the right data */
- }
-
- if (!iRetcode)
- {
- { /* process this row */
- if ((!iRetcode) && (pData->fProcessrow))
- iRetcode = ((mng_processrow)pData->fProcessrow) (pData);
- /* store in object ? */
- if ((!iRetcode) && (pData->fStorerow))
- iRetcode = ((mng_storerow)pData->fStorerow) (pData);
- }
- }
-
- if (iRetcode) /* on error bail out */
- {
- MNG_FREEX (pData, pBuf, iBufsize);
- MNG_ERROR (pData, iRetcode);
- }
-
- if (!pData->fDifferrow) /* swap row-pointers */
- {
- pSwap = pData->pWorkrow;
- pData->pWorkrow = pData->pPrevrow;
- pData->pPrevrow = pSwap; /* so prev points to the processed row! */
- }
- /* adjust variables for next row */
- iRetcode = mng_next_row (pData);
-
- if (iRetcode) /* on error bail out */
- {
- MNG_FREEX (pData, pBuf, iBufsize);
- MNG_ERROR (pData, iRetcode);
- }
- }
- }
-
- pTemp += pData->iRowmax;
- iTemplen -= pData->iRowmax;
- } /* until some error or EOI
- or all pixels received */
- while ( (iTemplen > 0) &&
- ( (pData->iRow < (mng_int32)pData->iDataheight) ||
- ( (pData->iPass >= 0) && (pData->iPass < 7) ) ) );
-
- mng_cleanup_rowproc (pData); /* cleanup row processing buffers !! */
-
- /* restore saved work-parms */
- pData->iDatawidth = iSavedatawidth;
- pData->iDataheight = iSavedataheight;
-
- pData->fInitrowproc = fSaveinitrowproc;
- pData->fDisplayrow = fSavestorerow;
- pData->fProcessrow = fSaveprocessrow;
- pData->fDifferrow = fSavedifferrow;
- pData->pStoreobj = fSavestoreobj;
- pData->pStorebuf = fSavestorebuf;
-
-#ifdef MNG_OPTIMIZE_FOOTPRINT_INIT
- pData->ePng_imgtype = eSavepngimgtype;
-#endif
-
- pData->iInterlace = iSaveinterlace;
- pData->iPass = iSavepass;
- pData->iRow = iSaverow;
- pData->iRowinc = iSaverowinc;
- pData->iCol = iSavecol;
- pData->iColinc = iSavecolinc;
- pData->iRowsamples = iSaverowsamples;
- pData->iSamplemul = iSavesamplemul;
- pData->iSampleofs = iSavesampleofs;
- pData->iSamplediv = iSavesamplediv;
- pData->iRowsize = iSaverowsize;
- pData->iRowmax = iSaverowmax;
- pData->iFilterofs = iSavefilterofs;
- pData->iPixelofs = iSavepixelofs;
- pData->iLevel0 = iSavelevel0;
- pData->iLevel1 = iSavelevel1;
- pData->iLevel2 = iSavelevel2;
- pData->iLevel3 = iSavelevel3;
- pData->pWorkrow = pSaveworkrow;
- pData->pPrevrow = pSaveprevrow;
- pData->pRGBArow = pSaverGBArow;
- pData->bIsRGBA16 = bSaveisRGBA16;
- pData->bIsOpaque = bSaveisOpaque;
- pData->iFilterbpp = iSavefilterbpp;
- pData->iDestl = iSavedestl;
- pData->iDestt = iSavedestt;
- pData->iDestr = iSavedestr;
- pData->iDestb = iSavedestb;
- pData->iSourcel = iSavesourcel;
- pData->iSourcet = iSavesourcet;
- pData->iSourcer = iSavesourcer;
- pData->iSourceb = iSavesourceb;
-
- /* create the animation directives ! */
- pProcess = (mng_processobject)pANG->sHeader.fProcess;
- iRetcode = pProcess (pData, (mng_objectp)pData->pANG);
- if (iRetcode)
- return iRetcode;
-
-#endif /* MNG_SUPPORT_DISPLAY */
-
- MNG_FREE (pData, pBuf, iBufsize); /* always free the temp buffer ! */
- }
-
- *piRawlen = 0;
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-MNG_C_SPECIALFUNC (mng_special_adat)
-{
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-MNG_C_SPECIALFUNC (mng_special_unknown)
-{
- /* critical chunk ? */
- if ((((mng_uint32)pData->iChunkname & 0x20000000) == 0)
-#ifdef MNG_SKIPCHUNK_SAVE
- && (pData->iChunkname != MNG_UINT_SAVE)
-#endif
-#ifdef MNG_SKIPCHUNK_SEEK
- && (pData->iChunkname != MNG_UINT_SEEK)
-#endif
-#ifdef MNG_SKIPCHUNK_DBYK
- && (pData->iChunkname != MNG_UINT_DBYK)
-#endif
-#ifdef MNG_SKIPCHUNK_ORDR
- && (pData->iChunkname != MNG_UINT_ORDR)
-#endif
- )
- MNG_ERROR (pData, MNG_UNKNOWNCRITICAL);
-
- if (pData->fProcessunknown) /* let the app handle it ? */
- {
- mng_bool bOke = pData->fProcessunknown ((mng_handle)pData, pData->iChunkname,
- ((mng_unknown_chunkp)pChunk)->iDatasize,
- ((mng_unknown_chunkp)pChunk)->pData);
- if (!bOke)
- MNG_ERROR (pData, MNG_APPMISCERROR);
- }
-
- return MNG_NOERROR; /* done */
-}
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_READ_PROCS || MNG_INCLUDE_WRITE_PROCS */
-#endif /* MNG_OPTIMIZE_CHUNKREADER */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
-
-
-
-
diff --git a/src/3rdparty/libmng/libmng_chunk_descr.h b/src/3rdparty/libmng/libmng_chunk_descr.h
deleted file mode 100644
index 3781ab0525..0000000000
--- a/src/3rdparty/libmng/libmng_chunk_descr.h
+++ /dev/null
@@ -1,146 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_chunk_descr.h copyright (c) 2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : Chunk descriptor functions (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : definition of the chunk- anf field-descriptor routines * */
-/* * * */
-/* * changes : 1.0.9 - 12/06/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_CHUNKREADER * */
-/* * * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * 1.0.10 - 04/12/2007 - G.Juyn * */
-/* * - added support for ANG proposal * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_chunk_descr_h_
-#define _libmng_chunk_descr_h_
-
-/* ************************************************************************** */
-
-#ifdef MNG_OPTIMIZE_CHUNKREADER
-#if defined(MNG_INCLUDE_READ_PROCS) || defined(MNG_INCLUDE_WRITE_PROCS)
-
-/* ************************************************************************** */
-
-void mng_get_chunkheader (mng_chunkid iChunkname,
- mng_chunk_headerp pResult);
-
-/* ************************************************************************** */
-
-#define MNG_F_SPECIALFUNC(n) mng_retcode n (mng_datap pData, \
- mng_chunkp pChunk, \
- mng_uint32* piRawlen, \
- mng_uint8p* ppRawdata)
-
-MNG_F_SPECIALFUNC (mng_debunk_plte) ;
-MNG_F_SPECIALFUNC (mng_debunk_trns) ;
-MNG_F_SPECIALFUNC (mng_deflate_itxt) ;
-MNG_F_SPECIALFUNC (mng_splt_entries) ;
-MNG_F_SPECIALFUNC (mng_hist_entries) ;
-
-MNG_F_SPECIALFUNC (mng_debunk_loop) ;
-MNG_F_SPECIALFUNC (mng_debunk_past) ;
-MNG_F_SPECIALFUNC (mng_disc_entries) ;
-MNG_F_SPECIALFUNC (mng_fram_remainder) ;
-MNG_F_SPECIALFUNC (mng_save_entries) ;
-MNG_F_SPECIALFUNC (mng_pplt_entries) ;
-MNG_F_SPECIALFUNC (mng_drop_entries) ;
-MNG_F_SPECIALFUNC (mng_ordr_entries) ;
-MNG_F_SPECIALFUNC (mng_debunk_magn) ;
-MNG_F_SPECIALFUNC (mng_evnt_entries) ;
-MNG_F_SPECIALFUNC (mng_adat_tiles) ;
-
-/* ************************************************************************** */
-
-#define MNG_C_SPECIALFUNC(n) mng_retcode n (mng_datap pData, \
- mng_chunkp pChunk)
-
-MNG_C_SPECIALFUNC (mng_special_ihdr) ;
-MNG_C_SPECIALFUNC (mng_special_plte) ;
-MNG_C_SPECIALFUNC (mng_special_idat) ;
-MNG_C_SPECIALFUNC (mng_special_iend) ;
-MNG_C_SPECIALFUNC (mng_special_trns) ;
-MNG_C_SPECIALFUNC (mng_special_gama) ;
-MNG_C_SPECIALFUNC (mng_special_chrm) ;
-MNG_C_SPECIALFUNC (mng_special_srgb) ;
-MNG_C_SPECIALFUNC (mng_special_iccp) ;
-MNG_C_SPECIALFUNC (mng_special_text) ;
-MNG_C_SPECIALFUNC (mng_special_ztxt) ;
-MNG_C_SPECIALFUNC (mng_special_itxt) ;
-MNG_C_SPECIALFUNC (mng_special_bkgd) ;
-MNG_C_SPECIALFUNC (mng_special_phys) ;
-MNG_C_SPECIALFUNC (mng_special_sbit) ;
-MNG_C_SPECIALFUNC (mng_special_splt) ;
-MNG_C_SPECIALFUNC (mng_special_hist) ;
-MNG_C_SPECIALFUNC (mng_special_time) ;
-
-MNG_C_SPECIALFUNC (mng_special_jhdr) ;
-MNG_C_SPECIALFUNC (mng_special_jdaa) ;
-MNG_C_SPECIALFUNC (mng_special_jdat) ;
-MNG_C_SPECIALFUNC (mng_special_jsep) ;
-
-MNG_C_SPECIALFUNC (mng_special_mhdr) ;
-MNG_C_SPECIALFUNC (mng_special_mend) ;
-MNG_C_SPECIALFUNC (mng_special_loop) ;
-MNG_C_SPECIALFUNC (mng_special_endl) ;
-MNG_C_SPECIALFUNC (mng_special_defi) ;
-MNG_C_SPECIALFUNC (mng_special_basi) ;
-MNG_C_SPECIALFUNC (mng_special_clon) ;
-MNG_C_SPECIALFUNC (mng_special_past) ;
-MNG_C_SPECIALFUNC (mng_special_disc) ;
-MNG_C_SPECIALFUNC (mng_special_back) ;
-MNG_C_SPECIALFUNC (mng_special_fram) ;
-MNG_C_SPECIALFUNC (mng_special_move) ;
-MNG_C_SPECIALFUNC (mng_special_clip) ;
-MNG_C_SPECIALFUNC (mng_special_show) ;
-MNG_C_SPECIALFUNC (mng_special_term) ;
-MNG_C_SPECIALFUNC (mng_special_save) ;
-MNG_C_SPECIALFUNC (mng_special_seek) ;
-MNG_C_SPECIALFUNC (mng_special_expi) ;
-MNG_C_SPECIALFUNC (mng_special_fpri) ;
-MNG_C_SPECIALFUNC (mng_special_need) ;
-MNG_C_SPECIALFUNC (mng_special_phyg) ;
-
-MNG_C_SPECIALFUNC (mng_special_dhdr) ;
-MNG_C_SPECIALFUNC (mng_special_prom) ;
-MNG_C_SPECIALFUNC (mng_special_ipng) ;
-MNG_C_SPECIALFUNC (mng_special_pplt) ;
-MNG_C_SPECIALFUNC (mng_special_ijng) ;
-MNG_C_SPECIALFUNC (mng_special_drop) ;
-MNG_C_SPECIALFUNC (mng_special_dbyk) ;
-MNG_C_SPECIALFUNC (mng_special_ordr) ;
-
-MNG_C_SPECIALFUNC (mng_special_magn) ;
-MNG_C_SPECIALFUNC (mng_special_evnt) ;
-MNG_C_SPECIALFUNC (mng_special_mpng) ;
-MNG_C_SPECIALFUNC (mng_special_ahdr) ;
-MNG_C_SPECIALFUNC (mng_special_adat) ;
-MNG_C_SPECIALFUNC (mng_special_unknown) ;
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_READ_PROCS) || MNG_INCLUDE_WRITE_PROCS */
-#endif /* MNG_OPTIMIZE_CHUNKREADER */
-
-/* ************************************************************************** */
-
-#endif /* _libmng_chunk_descr_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/libmng_chunk_io.c b/src/3rdparty/libmng/libmng_chunk_io.c
deleted file mode 100644
index eb18099fd6..0000000000
--- a/src/3rdparty/libmng/libmng_chunk_io.c
+++ /dev/null
@@ -1,10740 +0,0 @@
-/** ************************************************************************* */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_chunk_io.c copyright (c) 2000-2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : Chunk I/O routines (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of chunk input/output routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/01/2000 - G.Juyn * */
-/* * - cleaned up left-over teststuff in the BACK chunk routine * */
-/* * 0.5.1 - 05/04/2000 - G.Juyn * */
-/* * - changed CRC initialization to use dynamic structure * */
-/* * (wasn't thread-safe the old way !) * */
-/* * 0.5.1 - 05/06/2000 - G.Juyn * */
-/* * - filled in many missing sequence&length checks * */
-/* * - filled in many missing chunk-store snippets * */
-/* * 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - added checks for running animations * */
-/* * - filled some write routines * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/10/2000 - G.Juyn * */
-/* * - filled some more write routines * */
-/* * 0.5.1 - 05/11/2000 - G.Juyn * */
-/* * - filled remaining write routines * */
-/* * - fixed read_pplt with regard to deltatype * */
-/* * - added callback error-reporting support * */
-/* * - added pre-draft48 support (short MHDR, frame_mode, LOOP) * */
-/* * 0.5.1 - 05/12/2000 - G.Juyn * */
-/* * - changed trace to macro for callback error-reporting * */
-/* * - fixed chunk-storage bit in several routines * */
-/* * 0.5.1 - 05/13/2000 - G.Juyn * */
-/* * - added eMNGma hack (will be removed in 1.0.0 !!!) * */
-/* * - added TERM animation object pointer (easier reference) * */
-/* * - supplemented the SAVE & SEEK display processing * */
-/* * * */
-/* * 0.5.2 - 05/18/2000 - G.Juyn * */
-/* * - B004 - fixed problem with MNG_SUPPORT_WRITE not defined * */
-/* * also for MNG_SUPPORT_WRITE without MNG_INCLUDE_JNG * */
-/* * 0.5.2 - 05/19/2000 - G.Juyn * */
-/* * - cleaned up some code regarding mixed support * */
-/* * 0.5.2 - 05/20/2000 - G.Juyn * */
-/* * - implemented JNG support * */
-/* * 0.5.2 - 05/24/2000 - G.Juyn * */
-/* * - added support for global color-chunks in animation * */
-/* * - added support for global PLTE,tRNS,bKGD in animation * */
-/* * - added support for SAVE & SEEK in animation * */
-/* * 0.5.2 - 05/29/2000 - G.Juyn * */
-/* * - changed ani_create calls not returning object pointer * */
-/* * - create ani objects always (not just inside TERM/LOOP) * */
-/* * 0.5.2 - 05/30/2000 - G.Juyn * */
-/* * - added support for delta-image processing * */
-/* * 0.5.2 - 05/31/2000 - G.Juyn * */
-/* * - fixed up punctuation (contributed by Tim Rowley) * */
-/* * 0.5.2 - 06/02/2000 - G.Juyn * */
-/* * - changed SWAP_ENDIAN to BIGENDIAN_SUPPORTED * */
-/* * 0.5.2 - 06/03/2000 - G.Juyn * */
-/* * - fixed makeup for Linux gcc compile * */
-/* * * */
-/* * 0.5.3 - 06/12/2000 - G.Juyn * */
-/* * - added processing of color-info on delta-image * */
-/* * 0.5.3 - 06/13/2000 - G.Juyn * */
-/* * - fixed handling of empty SAVE chunk * */
-/* * 0.5.3 - 06/17/2000 - G.Juyn * */
-/* * - changed to support delta-images * */
-/* * - added extra checks for delta-images * */
-/* * 0.5.3 - 06/20/2000 - G.Juyn * */
-/* * - fixed possible trouble if IEND display-process got * */
-/* * broken up * */
-/* * 0.5.3 - 06/21/2000 - G.Juyn * */
-/* * - added processing of PLTE & tRNS for delta-images * */
-/* * - added administration of imagelevel parameter * */
-/* * 0.5.3 - 06/22/2000 - G.Juyn * */
-/* * - implemented support for PPLT chunk * */
-/* * 0.5.3 - 06/26/2000 - G.Juyn * */
-/* * - added precaution against faulty iCCP chunks from PS * */
-/* * 0.5.3 - 06/29/2000 - G.Juyn * */
-/* * - fixed some 64-bit warnings * */
-/* * * */
-/* * 0.9.1 - 07/14/2000 - G.Juyn * */
-/* * - changed pre-draft48 frame_mode=3 to frame_mode=1 * */
-/* * 0.9.1 - 07/16/2000 - G.Juyn * */
-/* * - fixed storage of images during mng_read() * */
-/* * - fixed support for mng_display() after mng_read() * */
-/* * 0.9.1 - 07/19/2000 - G.Juyn * */
-/* * - fixed several chunk-writing routines * */
-/* * 0.9.1 - 07/24/2000 - G.Juyn * */
-/* * - fixed reading of still-images * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 08/07/2000 - G.Juyn * */
-/* * - B111300 - fixup for improved portability * */
-/* * 0.9.3 - 08/08/2000 - G.Juyn * */
-/* * - fixed compiler-warnings from Mozilla * */
-/* * 0.9.3 - 08/09/2000 - G.Juyn * */
-/* * - added check for simplicity-bits in MHDR * */
-/* * 0.9.3 - 08/12/2000 - G.Juyn * */
-/* * - fixed check for simplicity-bits in MHDR (JNG) * */
-/* * 0.9.3 - 08/12/2000 - G.Juyn * */
-/* * - added workaround for faulty PhotoShop iCCP chunk * */
-/* * 0.9.3 - 08/22/2000 - G.Juyn * */
-/* * - fixed write-code for zTXt & iTXt * */
-/* * - fixed read-code for iTXt * */
-/* * 0.9.3 - 08/26/2000 - G.Juyn * */
-/* * - added MAGN chunk * */
-/* * 0.9.3 - 09/07/2000 - G.Juyn * */
-/* * - added support for new filter_types * */
-/* * 0.9.3 - 09/10/2000 - G.Juyn * */
-/* * - fixed DEFI behavior * */
-/* * 0.9.3 - 10/02/2000 - G.Juyn * */
-/* * - fixed simplicity-check in compliance with draft 81/0.98a * */
-/* * 0.9.3 - 10/10/2000 - G.Juyn * */
-/* * - added support for alpha-depth prediction * */
-/* * 0.9.3 - 10/11/2000 - G.Juyn * */
-/* * - added support for nEED * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added support for JDAA * */
-/* * 0.9.3 - 10/17/2000 - G.Juyn * */
-/* * - fixed support for MAGN * */
-/* * - implemented nEED "xxxx" (where "xxxx" is a chunkid) * */
-/* * - added callback to process non-critical unknown chunks * */
-/* * - fixed support for bKGD * */
-/* * 0.9.3 - 10/23/2000 - G.Juyn * */
-/* * - fixed bug in empty PLTE handling * */
-/* * * */
-/* * 0.9.4 - 11/20/2000 - G.Juyn * */
-/* * - changed IHDR filter_method check for PNGs * */
-/* * 0.9.4 - 1/18/2001 - G.Juyn * */
-/* * - added errorchecking for MAGN methods * */
-/* * - removed test filter-methods 1 & 65 * */
-/* * * */
-/* * 0.9.5 - 1/25/2001 - G.Juyn * */
-/* * - fixed some small compiler warnings (thanks Nikki) * */
-/* * * */
-/* * 1.0.2 - 05/05/2000 - G.Juyn * */
-/* * - B421427 - writes wrong format in bKGD and tRNS * */
-/* * 1.0.2 - 06/20/2000 - G.Juyn * */
-/* * - B434583 - compiler-warning if MNG_STORE_CHUNKS undefined * */
-/* * * */
-/* * 1.0.5 - 07/08/2002 - G.Juyn * */
-/* * - B578572 - removed eMNGma hack (thanks Dimitri!) * */
-/* * 1.0.5 - 08/07/2002 - G.Juyn * */
-/* * - added test-option for PNG filter method 193 (=no filter) * */
-/* * 1.0.5 - 08/15/2002 - G.Juyn * */
-/* * - completed PROM support * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * 1.0.5 - 09/07/2002 - G.Juyn * */
-/* * - fixed reading of FRAM with just frame_mode and name * */
-/* * 1.0.5 - 09/13/2002 - G.Juyn * */
-/* * - fixed read/write of MAGN chunk * */
-/* * 1.0.5 - 09/14/2002 - G.Juyn * */
-/* * - added event handling for dynamic MNG * */
-/* * 1.0.5 - 09/15/2002 - G.Juyn * */
-/* * - fixed LOOP iteration=0 special case * */
-/* * 1.0.5 - 09/19/2002 - G.Juyn * */
-/* * - misplaced TERM is now treated as warning * */
-/* * 1.0.5 - 09/20/2002 - G.Juyn * */
-/* * - added support for PAST * */
-/* * 1.0.5 - 10/03/2002 - G.Juyn * */
-/* * - fixed chunk-storage for evNT chunk * */
-/* * 1.0.5 - 10/07/2002 - G.Juyn * */
-/* * - fixed DISC support * */
-/* * - added another fix for misplaced TERM chunk * */
-/* * 1.0.5 - 10/17/2002 - G.Juyn * */
-/* * - fixed initializtion of pIds in dISC read routine * */
-/* * 1.0.5 - 11/06/2002 - G.Juyn * */
-/* * - added support for nEED "MNG 1.1" * */
-/* * - added support for nEED "CACHEOFF" * */
-/* * * */
-/* * 1.0.6 - 05/25/2003 - G.R-P * */
-/* * - added MNG_SKIPCHUNK_cHNK footprint optimizations * */
-/* * 1.0.6 - 06/02/2003 - G.R-P * */
-/* * - removed some redundant checks for iRawlen==0 * */
-/* * 1.0.6 - 06/22/2003 - G.R-P * */
-/* * - added MNG_NO_16BIT_SUPPORT, MNG_NO_DELTA_PNG reductions * */
-/* * - optionally use zlib's crc32 function instead of * */
-/* * local mng_update_crc * */
-/* * 1.0.6 - 07/14/2003 - G.R-P * */
-/* * - added MNG_NO_LOOP_SIGNALS_SUPPORTED conditional * */
-/* * 1.0.6 - 07/29/2003 - G.R-P * */
-/* * - added conditionals around PAST chunk support * */
-/* * 1.0.6 - 08/17/2003 - G.R-P * */
-/* * - added conditionals around non-VLC chunk support * */
-/* * * */
-/* * 1.0.7 - 10/29/2003 - G.R-P * */
-/* * - revised JDAA and JDAT readers to avoid compiler bug * */
-/* * 1.0.7 - 01/25/2004 - J.S * */
-/* * - added premultiplied alpha canvas' for RGBA, ARGB, ABGR * */
-/* * 1.0.7 - 01/27/2004 - J.S * */
-/* * - fixed inclusion of IJNG chunk for non-JNG use * */
-/* * 1.0.7 - 02/26/2004 - G.Juyn * */
-/* * - fixed bug in chunk-storage of SHOW chunk (from == to) * */
-/* * * */
-/* * 1.0.8 - 04/02/2004 - G.Juyn * */
-/* * - added CRC existence & checking flags * */
-/* * 1.0.8 - 07/07/2004 - G.R-P * */
-/* * - change worst-case iAlphadepth to 1 for standalone PNGs * */
-/* * * */
-/* * 1.0.9 - 09/28/2004 - G.R-P * */
-/* * - improved handling of cheap transparency when 16-bit * */
-/* * support is disabled * */
-/* * 1.0.9 - 10/04/2004 - G.Juyn * */
-/* * - fixed bug in writing sBIT for indexed color * */
-/* * 1.0.9 - 10/10/2004 - G.R-P. * */
-/* * - added MNG_NO_1_2_4BIT_SUPPORT * */
-/* * 1.0.9 - 12/05/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_CHUNKINITFREE * */
-/* * 1.0.9 - 12/06/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_CHUNKASSIGN * */
-/* * 1.0.9 - 12/07/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_CHUNKREADER * */
-/* * 1.0.9 - 12/11/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_DISPLAYCALLS * */
-/* * 1.0.9 - 12/20/2004 - G.Juyn * */
-/* * - cleaned up macro-invocations (thanks to D. Airlie) * */
-/* * 1.0.9 - 01/17/2005 - G.Juyn * */
-/* * - fixed problem with global PLTE/tRNS * */
-/* * * */
-/* * 1.0.10 - 02/07/2005 - G.Juyn * */
-/* * - fixed display routines called twice for FULL_MNG * */
-/* * support in mozlibmngconf.h * */
-/* * 1.0.10 - 12/04/2005 - G.R-P. * */
-/* * - #ifdef out use of mng_inflate_buffer when it is not * */
-/* * available. * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * 1.0.10 - 04/12/2007 - G.Juyn * */
-/* * - added support for ANG proposal * */
-/* * 1.0.10 - 05/02/2007 - G.Juyn * */
-/* * - fixed inflate_buffer for extreme compression ratios * */
-/* * * */
-/* ************************************************************************** */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-#include "libmng_objects.h"
-#include "libmng_object_prc.h"
-#include "libmng_chunks.h"
-#ifdef MNG_CHECK_BAD_ICCP
-#include "libmng_chunk_prc.h"
-#endif
-#include "libmng_memory.h"
-#include "libmng_display.h"
-#include "libmng_zlib.h"
-#include "libmng_pixels.h"
-#include "libmng_chunk_io.h"
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * CRC - Cyclic Redundancy Check * */
-/* * * */
-/* * The code below is taken directly from the sample provided with the * */
-/* * PNG specification. * */
-/* * (it is only adapted to the library's internal data-definitions) * */
-/* * * */
-/* ************************************************************************** */
-/* Make the table for a fast CRC. */
-#ifndef MNG_USE_ZLIB_CRC
-MNG_LOCAL void make_crc_table (mng_datap pData)
-{
- mng_uint32 iC;
- mng_int32 iN, iK;
-
- for (iN = 0; iN < 256; iN++)
- {
- iC = (mng_uint32) iN;
-
- for (iK = 0; iK < 8; iK++)
- {
- if (iC & 1)
- iC = 0xedb88320U ^ (iC >> 1);
- else
- iC = iC >> 1;
- }
-
- pData->aCRCtable [iN] = iC;
- }
-
- pData->bCRCcomputed = MNG_TRUE;
-}
-#endif
-
-/* Update a running CRC with the bytes buf[0..len-1]--the CRC
- should be initialized to all 1's, and the transmitted value
- is the 1's complement of the final running CRC (see the
- crc() routine below). */
-
-MNG_LOCAL mng_uint32 update_crc (mng_datap pData,
- mng_uint32 iCrc,
- mng_uint8p pBuf,
- mng_int32 iLen)
-{
-#ifdef MNG_USE_ZLIB_CRC
- return crc32 (iCrc, pBuf, iLen);
-#else
- mng_uint32 iC = iCrc;
- mng_int32 iN;
-
- if (!pData->bCRCcomputed)
- make_crc_table (pData);
-
- for (iN = 0; iN < iLen; iN++)
- iC = pData->aCRCtable [(iC ^ pBuf [iN]) & 0xff] ^ (iC >> 8);
-
- return iC;
-#endif
-}
-
-/* Return the CRC of the bytes buf[0..len-1]. */
-mng_uint32 mng_crc (mng_datap pData,
- mng_uint8p pBuf,
- mng_int32 iLen)
-{
-#ifdef MNG_USE_ZLIB_CRC
- return update_crc (pData, 0, pBuf, iLen);
-#else
- return update_crc (pData, 0xffffffffU, pBuf, iLen) ^ 0xffffffffU;
-#endif
-}
-
-/* ************************************************************************** */
-/* * * */
-/* * Routines for swapping byte-order from and to graphic files * */
-/* * (This code is adapted from the libpng package) * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_BIGENDIAN_SUPPORTED
-
-/* ************************************************************************** */
-
-mng_uint32 mng_get_uint32 (mng_uint8p pBuf)
-{
- mng_uint32 i = ((mng_uint32)(*pBuf) << 24) +
- ((mng_uint32)(*(pBuf + 1)) << 16) +
- ((mng_uint32)(*(pBuf + 2)) << 8) +
- (mng_uint32)(*(pBuf + 3));
- return (i);
-}
-
-/* ************************************************************************** */
-
-mng_int32 mng_get_int32 (mng_uint8p pBuf)
-{
- mng_int32 i = ((mng_int32)(*pBuf) << 24) +
- ((mng_int32)(*(pBuf + 1)) << 16) +
- ((mng_int32)(*(pBuf + 2)) << 8) +
- (mng_int32)(*(pBuf + 3));
- return (i);
-}
-
-/* ************************************************************************** */
-
-mng_uint16 mng_get_uint16 (mng_uint8p pBuf)
-{
- mng_uint16 i = (mng_uint16)(((mng_uint16)(*pBuf) << 8) +
- (mng_uint16)(*(pBuf + 1)));
- return (i);
-}
-
-/* ************************************************************************** */
-
-void mng_put_uint32 (mng_uint8p pBuf,
- mng_uint32 i)
-{
- *pBuf = (mng_uint8)((i >> 24) & 0xff);
- *(pBuf+1) = (mng_uint8)((i >> 16) & 0xff);
- *(pBuf+2) = (mng_uint8)((i >> 8) & 0xff);
- *(pBuf+3) = (mng_uint8)(i & 0xff);
-}
-
-/* ************************************************************************** */
-
-void mng_put_int32 (mng_uint8p pBuf,
- mng_int32 i)
-{
- *pBuf = (mng_uint8)((i >> 24) & 0xff);
- *(pBuf+1) = (mng_uint8)((i >> 16) & 0xff);
- *(pBuf+2) = (mng_uint8)((i >> 8) & 0xff);
- *(pBuf+3) = (mng_uint8)(i & 0xff);
-}
-
-/* ************************************************************************** */
-
-void mng_put_uint16 (mng_uint8p pBuf,
- mng_uint16 i)
-{
- *pBuf = (mng_uint8)((i >> 8) & 0xff);
- *(pBuf+1) = (mng_uint8)(i & 0xff);
-}
-
-/* ************************************************************************** */
-
-#endif /* !MNG_BIGENDIAN_SUPPORTED */
-
-/* ************************************************************************** */
-/* * * */
-/* * Helper routines to simplify chunk-data extraction * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_READ_PROCS
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-MNG_LOCAL mng_uint8p find_null (mng_uint8p pIn)
-{
- mng_uint8p pOut = pIn;
- while (*pOut) /* the read_graphic routine has made sure there's */
- pOut++; /* always at least 1 zero-byte in the buffer */
- return pOut;
-}
-#endif
-
-/* ************************************************************************** */
-
-#if !defined(MNG_SKIPCHUNK_iCCP) || !defined(MNG_SKIPCHUNK_zTXt) || \
- !defined(MNG_SKIPCHUNK_iTXt) || defined(MNG_INCLUDE_MPNG_PROPOSAL) || \
- defined(MNG_INCLUDE_ANG_PROPOSAL)
-mng_retcode mng_inflate_buffer (mng_datap pData,
- mng_uint8p pInbuf,
- mng_uint32 iInsize,
- mng_uint8p *pOutbuf,
- mng_uint32 *iOutsize,
- mng_uint32 *iRealsize)
-{
- mng_retcode iRetcode = MNG_NOERROR;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INFLATE_BUFFER, MNG_LC_START);
-#endif
-
- if (iInsize) /* anything to do ? */
- {
- *iOutsize = iInsize * 3; /* estimate uncompressed size */
- /* and allocate a temporary buffer */
- MNG_ALLOC (pData, *pOutbuf, *iOutsize);
-
- do
- {
- mngzlib_inflateinit (pData); /* initialize zlib */
- /* let zlib know where to store the output */
- pData->sZlib.next_out = *pOutbuf;
- /* "size - 1" so we've got space for the
- zero-termination of a possible string */
- pData->sZlib.avail_out = *iOutsize - 1;
- /* ok; let's inflate... */
- iRetcode = mngzlib_inflatedata (pData, iInsize, pInbuf);
- /* determine actual output size */
- *iRealsize = (mng_uint32)pData->sZlib.total_out;
-
- mngzlib_inflatefree (pData); /* zlib's done */
-
- if (iRetcode == MNG_BUFOVERFLOW) /* not enough space ? */
- { /* then get some more */
- MNG_FREEX (pData, *pOutbuf, *iOutsize);
- *iOutsize = *iOutsize + *iOutsize;
- MNG_ALLOC (pData, *pOutbuf, *iOutsize);
- }
- } /* repeat if we didn't have enough space */
- while ((iRetcode == MNG_BUFOVERFLOW) &&
- (*iOutsize < 200 * iInsize));
-
- if (!iRetcode) /* if oke ? */
- *((*pOutbuf) + *iRealsize) = 0; /* then put terminator zero */
-
- }
- else
- {
- *pOutbuf = 0; /* nothing to do; then there's no output */
- *iOutsize = 0;
- *iRealsize = 0;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INFLATE_BUFFER, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_READ_PROCS */
-
-/* ************************************************************************** */
-/* * * */
-/* * Helper routines to simplify chunk writing * */
-/* * * */
-/* ************************************************************************** */
-#ifdef MNG_INCLUDE_WRITE_PROCS
-/* ************************************************************************** */
-
-#if !defined(MNG_SKIPCHUNK_iCCP) || !defined(MNG_SKIPCHUNK_zTXt) || !defined(MNG_SKIPCHUNK_iTXt)
-MNG_LOCAL mng_retcode deflate_buffer (mng_datap pData,
- mng_uint8p pInbuf,
- mng_uint32 iInsize,
- mng_uint8p *pOutbuf,
- mng_uint32 *iOutsize,
- mng_uint32 *iRealsize)
-{
- mng_retcode iRetcode = MNG_NOERROR;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DEFLATE_BUFFER, MNG_LC_START);
-#endif
-
- if (iInsize) /* anything to do ? */
- {
- *iOutsize = (iInsize * 5) >> 2; /* estimate compressed size */
- /* and allocate a temporary buffer */
- MNG_ALLOC (pData, *pOutbuf, *iOutsize);
-
- do
- {
- mngzlib_deflateinit (pData); /* initialize zlib */
- /* let zlib know where to store the output */
- pData->sZlib.next_out = *pOutbuf;
- pData->sZlib.avail_out = *iOutsize;
- /* ok; let's deflate... */
- iRetcode = mngzlib_deflatedata (pData, iInsize, pInbuf);
- /* determine actual output size */
- *iRealsize = pData->sZlib.total_out;
-
- mngzlib_deflatefree (pData); /* zlib's done */
-
- if (iRetcode == MNG_BUFOVERFLOW) /* not enough space ? */
- { /* then get some more */
- MNG_FREEX (pData, *pOutbuf, *iOutsize);
- *iOutsize = *iOutsize + (iInsize >> 1);
- MNG_ALLOC (pData, *pOutbuf, *iOutsize);
- }
- } /* repeat if we didn't have enough space */
- while (iRetcode == MNG_BUFOVERFLOW);
- }
- else
- {
- *pOutbuf = 0; /* nothing to do; then there's no output */
- *iOutsize = 0;
- *iRealsize = 0;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DEFLATE_BUFFER, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode write_raw_chunk (mng_datap pData,
- mng_chunkid iChunkname,
- mng_uint32 iRawlen,
- mng_uint8p pRawdata)
-{
- mng_uint32 iCrc;
- mng_uint32 iWritten;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_RAW_CHUNK, MNG_LC_START);
-#endif
- /* temporary buffer ? */
- if ((pRawdata != 0) && (pRawdata != pData->pWritebuf+8))
- { /* store length & chunktype in default buffer */
- mng_put_uint32 (pData->pWritebuf, iRawlen);
- mng_put_uint32 (pData->pWritebuf+4, (mng_uint32)iChunkname);
-
- if (pData->iCrcmode & MNG_CRC_OUTPUT)
- {
- if ((pData->iCrcmode & MNG_CRC_OUTPUT) == MNG_CRC_OUTPUT_GENERATE)
- { /* calculate the crc */
- iCrc = update_crc (pData, 0xffffffffL, pData->pWritebuf+4, 4);
- iCrc = update_crc (pData, iCrc, pRawdata, iRawlen) ^ 0xffffffffL;
- } else {
- iCrc = 0; /* dummy crc */
- } /* store in default buffer */
- mng_put_uint32 (pData->pWritebuf+8, iCrc);
- }
- /* write the length & chunktype */
- if (!pData->fWritedata ((mng_handle)pData, pData->pWritebuf, 8, &iWritten))
- MNG_ERROR (pData, MNG_APPIOERROR);
-
- if (iWritten != 8) /* disk full ? */
- MNG_ERROR (pData, MNG_OUTPUTERROR);
- /* write the temporary buffer */
- if (!pData->fWritedata ((mng_handle)pData, pRawdata, iRawlen, &iWritten))
- MNG_ERROR (pData, MNG_APPIOERROR);
-
- if (iWritten != iRawlen) /* disk full ? */
- MNG_ERROR (pData, MNG_OUTPUTERROR);
-
- if (pData->iCrcmode & MNG_CRC_OUTPUT)
- { /* write the crc */
- if (!pData->fWritedata ((mng_handle)pData, pData->pWritebuf+8, 4, &iWritten))
- MNG_ERROR (pData, MNG_APPIOERROR);
-
- if (iWritten != 4) /* disk full ? */
- MNG_ERROR (pData, MNG_OUTPUTERROR);
- }
- }
- else
- { /* prefix with length & chunktype */
- mng_put_uint32 (pData->pWritebuf, iRawlen);
- mng_put_uint32 (pData->pWritebuf+4, (mng_uint32)iChunkname);
-
- if (pData->iCrcmode & MNG_CRC_OUTPUT)
- {
- if ((pData->iCrcmode & MNG_CRC_OUTPUT) == MNG_CRC_OUTPUT_GENERATE)
- /* calculate the crc */
- iCrc = mng_crc (pData, pData->pWritebuf+4, iRawlen + 4);
- else
- iCrc = 0; /* dummy crc */
- /* add it to the buffer */
- mng_put_uint32 (pData->pWritebuf + iRawlen + 8, iCrc);
- /* write it in a single pass */
- if (!pData->fWritedata ((mng_handle)pData, pData->pWritebuf, iRawlen + 12, &iWritten))
- MNG_ERROR (pData, MNG_APPIOERROR);
-
- if (iWritten != iRawlen + 12) /* disk full ? */
- MNG_ERROR (pData, MNG_OUTPUTERROR);
- } else {
- if (!pData->fWritedata ((mng_handle)pData, pData->pWritebuf, iRawlen + 8, &iWritten))
- MNG_ERROR (pData, MNG_APPIOERROR);
-
- if (iWritten != iRawlen + 8) /* disk full ? */
- MNG_ERROR (pData, MNG_OUTPUTERROR);
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_RAW_CHUNK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-/* B004 */
-#endif /* MNG_INCLUDE_WRITE_PROCS */
-/* B004 */
-/* ************************************************************************** */
-/* * * */
-/* * chunk read functions * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_READ_PROCS
-
-/* ************************************************************************** */
-
-#ifdef MNG_OPTIMIZE_CHUNKREADER
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode create_chunk_storage (mng_datap pData,
- mng_chunkp pHeader,
- mng_uint32 iRawlen,
- mng_uint8p pRawdata,
- mng_field_descp pField,
- mng_uint16 iFields,
- mng_chunkp* ppChunk,
- mng_bool bWorkcopy)
-{
- mng_field_descp pTempfield = pField;
- mng_uint16 iFieldcount = iFields;
- mng_uint8p pTempdata = pRawdata;
- mng_uint32 iTemplen = iRawlen;
- mng_uint16 iLastgroup = 0;
- mng_uint8p pChunkdata;
- mng_uint32 iDatalen;
- mng_uint8 iColortype;
- mng_bool bProcess;
- /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- if (((mng_chunk_headerp)(*ppChunk))->iChunkname == MNG_UINT_HUH)
- ((mng_chunk_headerp)(*ppChunk))->iChunkname = pData->iChunkname;
-
- if ((!bWorkcopy) ||
- ((((mng_chunk_headerp)pHeader)->iChunkname != MNG_UINT_IDAT) &&
- (((mng_chunk_headerp)pHeader)->iChunkname != MNG_UINT_JDAT) &&
- (((mng_chunk_headerp)pHeader)->iChunkname != MNG_UINT_JDAA) ))
- {
- pChunkdata = (mng_uint8p)(*ppChunk);
-
-#ifdef MNG_INCLUDE_JNG /* determine current colortype */
- if (pData->bHasJHDR)
- iColortype = (mng_uint8)(pData->iJHDRcolortype - 8);
- else
-#endif /* MNG_INCLUDE_JNG */
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- iColortype = pData->iColortype;
- else
- iColortype = 6;
-
- if (iTemplen) /* not empty ? */
- { /* then go fill the fields */
- while ((iFieldcount) && (iTemplen))
- {
- if (pTempfield->iOffsetchunk)
- {
- if (pTempfield->iFlags & MNG_FIELD_PUTIMGTYPE)
- {
- *(pChunkdata+pTempfield->iOffsetchunk) = iColortype;
- bProcess = MNG_FALSE;
- }
- else
- if (pTempfield->iFlags & MNG_FIELD_IFIMGTYPES)
- bProcess = (mng_bool)(((pTempfield->iFlags & MNG_FIELD_IFIMGTYPE0) && (iColortype == 0)) ||
- ((pTempfield->iFlags & MNG_FIELD_IFIMGTYPE2) && (iColortype == 2)) ||
- ((pTempfield->iFlags & MNG_FIELD_IFIMGTYPE3) && (iColortype == 3)) ||
- ((pTempfield->iFlags & MNG_FIELD_IFIMGTYPE4) && (iColortype == 4)) ||
- ((pTempfield->iFlags & MNG_FIELD_IFIMGTYPE6) && (iColortype == 6)) );
- else
- bProcess = MNG_TRUE;
-
- if (bProcess)
- {
- iLastgroup = (mng_uint16)(pTempfield->iFlags & MNG_FIELD_GROUPMASK);
- /* numeric field ? */
- if (pTempfield->iFlags & MNG_FIELD_INT)
- {
- if (iTemplen < pTempfield->iLengthmax)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- switch (pTempfield->iLengthmax)
- {
- case 1 : { mng_uint8 iNum = *pTempdata;
- if (((mng_uint16)iNum < pTempfield->iMinvalue) ||
- ((mng_uint16)iNum > pTempfield->iMaxvalue) )
- MNG_ERROR (pData, MNG_INVALIDFIELDVAL);
- *(pChunkdata+pTempfield->iOffsetchunk) = iNum;
- break; }
- case 2 : { mng_uint16 iNum = mng_get_uint16 (pTempdata);
- if ((iNum < pTempfield->iMinvalue) || (iNum > pTempfield->iMaxvalue))
- MNG_ERROR (pData, MNG_INVALIDFIELDVAL);
- *((mng_uint16p)(pChunkdata+pTempfield->iOffsetchunk)) = iNum;
- break; }
- case 4 : { mng_uint32 iNum = mng_get_uint32 (pTempdata);
- if ((iNum < pTempfield->iMinvalue) ||
- ((pTempfield->iFlags & MNG_FIELD_NOHIGHBIT) && (iNum & 0x80000000)) )
- MNG_ERROR (pData, MNG_INVALIDFIELDVAL);
- *((mng_uint32p)(pChunkdata+pTempfield->iOffsetchunk)) = iNum;
- break; }
- }
-
- pTempdata += pTempfield->iLengthmax;
- iTemplen -= pTempfield->iLengthmax;
-
- } else { /* not numeric so it's a bunch of bytes */
-
- if (!pTempfield->iOffsetchunklen) /* big fat NONO */
- MNG_ERROR (pData, MNG_INTERNALERROR);
- /* with terminating 0 ? */
- if (pTempfield->iFlags & MNG_FIELD_TERMINATOR)
- {
- mng_uint8p pWork = pTempdata;
- while (*pWork) /* find the zero */
- pWork++;
- iDatalen = (mng_uint32)(pWork - pTempdata);
- } else { /* no terminator, so everything that's left ! */
- iDatalen = iTemplen;
- }
-
- if ((pTempfield->iLengthmax) && (iDatalen > pTempfield->iLengthmax))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-#if !defined(MNG_SKIPCHUNK_iCCP) || !defined(MNG_SKIPCHUNK_zTXt) || \
- !defined(MNG_SKIPCHUNK_iTXt) || defined(MNG_INCLUDE_MPNG_PROPOSAL) || \
- defined(MNG_INCLUDE_ANG_PROPOSAL)
- /* needs decompression ? */
- if (pTempfield->iFlags & MNG_FIELD_DEFLATED)
- {
- mng_uint8p pBuf = 0;
- mng_uint32 iBufsize = 0;
- mng_uint32 iRealsize;
- mng_ptr pWork;
-
- iRetcode = mng_inflate_buffer (pData, pTempdata, iDatalen,
- &pBuf, &iBufsize, &iRealsize);
-
-#ifdef MNG_CHECK_BAD_ICCP /* Check for bad iCCP chunk */
- if ((iRetcode) && (((mng_chunk_headerp)pHeader)->iChunkname == MNG_UINT_iCCP))
- {
- *((mng_ptr *)(pChunkdata+pTempfield->iOffsetchunk)) = MNG_NULL;
- *((mng_uint32p)(pChunkdata+pTempfield->iOffsetchunklen)) = iDatalen;
- }
- else
-#endif
- {
- if (iRetcode)
- return iRetcode;
-
-#if defined(MNG_INCLUDE_MPNG_PROPOSAL) || defined(MNG_INCLUDE_ANG_PROPOSAL)
- if ( (((mng_chunk_headerp)pHeader)->iChunkname == MNG_UINT_mpNG) ||
- (((mng_chunk_headerp)pHeader)->iChunkname == MNG_UINT_adAT) )
- {
- MNG_ALLOC (pData, pWork, iRealsize);
- }
- else
- {
-#endif
- /* don't forget to generate null terminator */
- MNG_ALLOC (pData, pWork, iRealsize+1);
-#if defined(MNG_INCLUDE_MPNG_PROPOSAL) || defined(MNG_INCLUDE_ANG_PROPOSAL)
- }
-#endif
- MNG_COPY (pWork, pBuf, iRealsize);
-
- *((mng_ptr *)(pChunkdata+pTempfield->iOffsetchunk)) = pWork;
- *((mng_uint32p)(pChunkdata+pTempfield->iOffsetchunklen)) = iRealsize;
- }
-
- if (pBuf) /* free the temporary buffer */
- MNG_FREEX (pData, pBuf, iBufsize);
-
- } else
-#endif
- { /* no decompression, so just copy */
-
- mng_ptr pWork;
- /* don't forget to generate null terminator */
- MNG_ALLOC (pData, pWork, iDatalen+1);
- MNG_COPY (pWork, pTempdata, iDatalen);
-
- *((mng_ptr *)(pChunkdata+pTempfield->iOffsetchunk)) = pWork;
- *((mng_uint32p)(pChunkdata+pTempfield->iOffsetchunklen)) = iDatalen;
- }
-
- if (pTempfield->iFlags & MNG_FIELD_TERMINATOR)
- iDatalen++; /* skip the terminating zero as well !!! */
-
- iTemplen -= iDatalen;
- pTempdata += iDatalen;
- }
- /* need to set an indicator ? */
- if (pTempfield->iOffsetchunkind)
- *((mng_uint8p)(pChunkdata+pTempfield->iOffsetchunkind)) = MNG_TRUE;
- }
- }
-
- if (pTempfield->pSpecialfunc) /* special function required ? */
- {
- iRetcode = pTempfield->pSpecialfunc(pData, *ppChunk, &iTemplen, &pTempdata);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-
- pTempfield++; /* Neeeeeeexxxtt */
- iFieldcount--;
- }
-
- if (iTemplen) /* extra data ??? */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- while (iFieldcount) /* not enough data ??? */
- {
- if (pTempfield->iFlags & MNG_FIELD_IFIMGTYPES)
- bProcess = (mng_bool)(((pTempfield->iFlags & MNG_FIELD_IFIMGTYPE0) && (iColortype == 0)) ||
- ((pTempfield->iFlags & MNG_FIELD_IFIMGTYPE2) && (iColortype == 2)) ||
- ((pTempfield->iFlags & MNG_FIELD_IFIMGTYPE3) && (iColortype == 3)) ||
- ((pTempfield->iFlags & MNG_FIELD_IFIMGTYPE4) && (iColortype == 4)) ||
- ((pTempfield->iFlags & MNG_FIELD_IFIMGTYPE6) && (iColortype == 6)) );
- else
- bProcess = MNG_TRUE;
-
- if (bProcess)
- {
- if (!(pTempfield->iFlags & MNG_FIELD_OPTIONAL))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- if ((pTempfield->iFlags & MNG_FIELD_GROUPMASK) &&
- ((mng_uint16)(pTempfield->iFlags & MNG_FIELD_GROUPMASK) == iLastgroup))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
-
- pTempfield++;
- iFieldcount--;
- }
- }
- }
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-READ_CHUNK (mng_read_general)
-{
- mng_retcode iRetcode = MNG_NOERROR;
- mng_chunk_descp pDescr = ((mng_chunk_headerp)pHeader)->pChunkdescr;
- mng_field_descp pField;
- mng_uint16 iFields;
-
- if (!pDescr) /* this is a bad booboo !!! */
- MNG_ERROR (pData, MNG_INTERNALERROR);
-
- pField = pDescr->pFielddesc;
- iFields = pDescr->iFielddesc;
- /* check chunk against signature */
- if ((pDescr->eImgtype == mng_it_mng) && (pData->eSigtype != mng_it_mng))
- MNG_ERROR (pData, MNG_CHUNKNOTALLOWED);
-
- if ((pDescr->eImgtype == mng_it_jng) && (pData->eSigtype == mng_it_png))
- MNG_ERROR (pData, MNG_CHUNKNOTALLOWED);
- /* empties allowed ? */
- if ((iRawlen == 0) && (!(pDescr->iAllowed & MNG_DESCR_EMPTY)))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if ((pData->eImagetype != mng_it_mng) || (!(pDescr->iAllowed & MNG_DESCR_GLOBAL)))
- { /* *a* header required ? */
- if ((pDescr->iMusthaves & MNG_DESCR_GenHDR) &&
-#ifdef MNG_INCLUDE_JNG
- (!pData->bHasIHDR) && (!pData->bHasBASI) && (!pData->bHasDHDR) && (!pData->bHasJHDR))
-#else
- (!pData->bHasIHDR) && (!pData->bHasBASI) && (!pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pDescr->iMusthaves & MNG_DESCR_JngHDR) &&
- (!pData->bHasDHDR) && (!pData->bHasJHDR))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-#endif
- }
- /* specific chunk pre-requisite ? */
- if (((pDescr->iMusthaves & MNG_DESCR_IHDR) && (!pData->bHasIHDR)) ||
-#ifdef MNG_INCLUDE_JNG
- ((pDescr->iMusthaves & MNG_DESCR_JHDR) && (!pData->bHasJHDR)) ||
-#endif
- ((pDescr->iMusthaves & MNG_DESCR_DHDR) && (!pData->bHasDHDR)) ||
- ((pDescr->iMusthaves & MNG_DESCR_LOOP) && (!pData->bHasLOOP)) ||
- ((pDescr->iMusthaves & MNG_DESCR_PLTE) && (!pData->bHasPLTE)) ||
- ((pDescr->iMusthaves & MNG_DESCR_MHDR) && (!pData->bHasMHDR)) ||
- ((pDescr->iMusthaves & MNG_DESCR_SAVE) && (!pData->bHasSAVE)) )
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* specific chunk undesired ? */
- if (((pDescr->iMustNOThaves & MNG_DESCR_NOIHDR) && (pData->bHasIHDR)) ||
- ((pDescr->iMustNOThaves & MNG_DESCR_NOBASI) && (pData->bHasBASI)) ||
- ((pDescr->iMustNOThaves & MNG_DESCR_NODHDR) && (pData->bHasDHDR)) ||
- ((pDescr->iMustNOThaves & MNG_DESCR_NOIDAT) && (pData->bHasIDAT)) ||
- ((pDescr->iMustNOThaves & MNG_DESCR_NOPLTE) && (pData->bHasPLTE)) ||
-#ifdef MNG_INCLUDE_JNG
- ((pDescr->iMustNOThaves & MNG_DESCR_NOJHDR) && (pData->bHasJHDR)) ||
- ((pDescr->iMustNOThaves & MNG_DESCR_NOJDAT) && (pData->bHasJDAT)) ||
- ((pDescr->iMustNOThaves & MNG_DESCR_NOJDAA) && (pData->bHasJDAA)) ||
- ((pDescr->iMustNOThaves & MNG_DESCR_NOJSEP) && (pData->bHasJSEP)) ||
-#endif
- ((pDescr->iMustNOThaves & MNG_DESCR_NOMHDR) && (pData->bHasMHDR)) ||
- ((pDescr->iMustNOThaves & MNG_DESCR_NOLOOP) && (pData->bHasLOOP)) ||
- ((pDescr->iMustNOThaves & MNG_DESCR_NOTERM) && (pData->bHasTERM)) ||
- ((pDescr->iMustNOThaves & MNG_DESCR_NOSAVE) && (pData->bHasSAVE)) )
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (pData->eSigtype == mng_it_mng) /* check global and embedded empty chunks */
- {
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- {
- if ((iRawlen == 0) && (!(pDescr->iAllowed & MNG_DESCR_EMPTYEMBED)))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- } else {
- if ((iRawlen == 0) && (!(pDescr->iAllowed & MNG_DESCR_EMPTYGLOBAL)))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
- }
-
- if (pDescr->pSpecialfunc) /* need special processing ? */
- {
- iRetcode = create_chunk_storage (pData, pHeader, iRawlen, pRawdata,
- pField, iFields, ppChunk, MNG_TRUE);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* empty indicator ? */
- if ((!iRawlen) && (pDescr->iOffsetempty))
- *(((mng_uint8p)*ppChunk)+pDescr->iOffsetempty) = MNG_TRUE;
-
- iRetcode = pDescr->pSpecialfunc(pData, *ppChunk);
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- if ((((mng_chunk_headerp)pHeader)->iChunkname == MNG_UINT_IDAT) ||
- (((mng_chunk_headerp)pHeader)->iChunkname == MNG_UINT_JDAT) ||
- (((mng_chunk_headerp)pHeader)->iChunkname == MNG_UINT_JDAA) )
- {
- iRetcode = ((mng_chunk_headerp)*ppChunk)->fCleanup (pData, *ppChunk);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- *ppChunk = MNG_NULL;
- } else {
-#ifdef MNG_STORE_CHUNKS
- if (!pData->bStorechunks)
-#endif
- {
- iRetcode = ((mng_chunk_headerp)*ppChunk)->fCleanup (pData, *ppChunk);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- *ppChunk = MNG_NULL;
- }
- }
- }
-
-#ifdef MNG_SUPPORT_DISPLAY
- if (iRawlen)
- {
-#ifdef MNG_OPTIMIZE_DISPLAYCALLS
- pData->iRawlen = iRawlen;
- pData->pRawdata = pRawdata;
-#endif
-
- /* display processing */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if (((mng_chunk_headerp)pHeader)->iChunkname == MNG_UINT_IDAT)
- iRetcode = mng_process_display_idat (pData, iRawlen, pRawdata);
-#ifdef MNG_INCLUDE_JNG
- else
- if (((mng_chunk_headerp)pHeader)->iChunkname == MNG_UINT_JDAT)
- iRetcode = mng_process_display_jdat (pData, iRawlen, pRawdata);
- else
- if (((mng_chunk_headerp)pHeader)->iChunkname == MNG_UINT_JDAA)
- iRetcode = mng_process_display_jdaa (pData, iRawlen, pRawdata);
-#endif
-#else
- if (((mng_chunk_headerp)pHeader)->iChunkname == MNG_UINT_IDAT)
- iRetcode = mng_process_display_idat (pData);
-#ifdef MNG_INCLUDE_JNG
- else
- if (((mng_chunk_headerp)pHeader)->iChunkname == MNG_UINT_JDAT)
- iRetcode = mng_process_display_jdat (pData);
- else
- if (((mng_chunk_headerp)pHeader)->iChunkname == MNG_UINT_JDAA)
- iRetcode = mng_process_display_jdaa (pData);
-#endif
-#endif
-
- if (iRetcode)
- return iRetcode;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if ((pData->bStorechunks) && (!(*ppChunk)))
- {
- iRetcode = create_chunk_storage (pData, pHeader, iRawlen, pRawdata,
- pField, iFields, ppChunk, MNG_FALSE);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* empty indicator ? */
- if ((!iRawlen) && (pDescr->iOffsetempty))
- *(((mng_uint8p)*ppChunk)+pDescr->iOffsetempty) = MNG_TRUE;
- }
-#endif /* MNG_STORE_CHUNKS */
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#endif /* MNG_OPTIMIZE_CHUNKREADER */
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-READ_CHUNK (mng_read_ihdr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_IHDR, MNG_LC_START);
-#endif
-
- if (iRawlen != 13) /* length oke ? */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- /* only allowed inside PNG or MNG */
- if ((pData->eSigtype != mng_it_png) && (pData->eSigtype != mng_it_mng))
- MNG_ERROR (pData, MNG_CHUNKNOTALLOWED);
- /* sequence checks */
- if ((pData->eSigtype == mng_it_png) && (pData->iChunkseq > 1))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasIDAT) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasIDAT))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- pData->bHasIHDR = MNG_TRUE; /* indicate IHDR is present */
- /* and store interesting fields */
- if ((!pData->bHasDHDR) || (pData->iDeltatype == MNG_DELTATYPE_NOCHANGE))
- {
- pData->iDatawidth = mng_get_uint32 (pRawdata);
- pData->iDataheight = mng_get_uint32 (pRawdata+4);
- }
-
- pData->iBitdepth = *(pRawdata+8);
- pData->iColortype = *(pRawdata+9);
- pData->iCompression = *(pRawdata+10);
- pData->iFilter = *(pRawdata+11);
- pData->iInterlace = *(pRawdata+12);
-
-#if defined(MNG_NO_1_2_4BIT_SUPPORT) || defined(MNG_NO_16BIT_SUPPORT)
- pData->iPNGmult = 1;
- pData->iPNGdepth = pData->iBitdepth;
-#endif
-
-#ifdef MNG_NO_1_2_4BIT_SUPPORT
- if (pData->iBitdepth < 8)
- pData->iBitdepth = 8;
-#endif
-
-#ifdef MNG_NO_16BIT_SUPPORT
- if (pData->iBitdepth > 8)
- {
- pData->iBitdepth = 8;
- pData->iPNGmult = 2;
- }
-#endif
-
- if ((pData->iBitdepth != 8) /* parameter validity checks */
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- && (pData->iBitdepth != 1) &&
- (pData->iBitdepth != 2) &&
- (pData->iBitdepth != 4)
-#endif
-#ifndef MNG_NO_16BIT_SUPPORT
- && (pData->iBitdepth != 16)
-#endif
- )
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
- if ((pData->iColortype != MNG_COLORTYPE_GRAY ) &&
- (pData->iColortype != MNG_COLORTYPE_RGB ) &&
- (pData->iColortype != MNG_COLORTYPE_INDEXED) &&
- (pData->iColortype != MNG_COLORTYPE_GRAYA ) &&
- (pData->iColortype != MNG_COLORTYPE_RGBA ) )
- MNG_ERROR (pData, MNG_INVALIDCOLORTYPE);
-
- if ((pData->iColortype == MNG_COLORTYPE_INDEXED) && (pData->iBitdepth > 8))
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
- if (((pData->iColortype == MNG_COLORTYPE_RGB ) ||
- (pData->iColortype == MNG_COLORTYPE_GRAYA ) ||
- (pData->iColortype == MNG_COLORTYPE_RGBA ) ) &&
- (pData->iBitdepth < 8 ) )
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
- if (pData->iCompression != MNG_COMPRESSION_DEFLATE)
- MNG_ERROR (pData, MNG_INVALIDCOMPRESS);
-
-#if defined(FILTER192) || defined(FILTER193)
- if ((pData->iFilter != MNG_FILTER_ADAPTIVE ) &&
-#if defined(FILTER192) && defined(FILTER193)
- (pData->iFilter != MNG_FILTER_DIFFERING) &&
- (pData->iFilter != MNG_FILTER_NOFILTER ) )
-#else
-#ifdef FILTER192
- (pData->iFilter != MNG_FILTER_DIFFERING) )
-#else
- (pData->iFilter != MNG_FILTER_NOFILTER ) )
-#endif
-#endif
- MNG_ERROR (pData, MNG_INVALIDFILTER);
-#else
- if (pData->iFilter)
- MNG_ERROR (pData, MNG_INVALIDFILTER);
-#endif
-
- if ((pData->iInterlace != MNG_INTERLACE_NONE ) &&
- (pData->iInterlace != MNG_INTERLACE_ADAM7) )
- MNG_ERROR (pData, MNG_INVALIDINTERLACE);
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* check the colortype for delta-images ! */
- {
- mng_imagedatap pBuf = ((mng_imagep)pData->pObjzero)->pImgbuf;
-
- if (pData->iColortype != pBuf->iColortype)
- {
- if ( ( (pData->iColortype != MNG_COLORTYPE_INDEXED) ||
- (pBuf->iColortype == MNG_COLORTYPE_GRAY ) ) &&
- ( (pData->iColortype != MNG_COLORTYPE_GRAY ) ||
- (pBuf->iColortype == MNG_COLORTYPE_INDEXED) ) )
- MNG_ERROR (pData, MNG_INVALIDCOLORTYPE);
- }
- }
-#endif
-#endif
-
- if (!pData->bHasheader) /* first chunk ? */
- {
- pData->bHasheader = MNG_TRUE; /* we've got a header */
- pData->eImagetype = mng_it_png; /* then this must be a PNG */
- pData->iWidth = pData->iDatawidth;
- pData->iHeight = pData->iDataheight;
- /* predict alpha-depth ! */
- if ((pData->iColortype == MNG_COLORTYPE_GRAYA ) ||
- (pData->iColortype == MNG_COLORTYPE_RGBA ) )
- pData->iAlphadepth = pData->iBitdepth;
- else
- if (pData->iColortype == MNG_COLORTYPE_INDEXED)
- pData->iAlphadepth = 8; /* worst case scenario */
- else
- pData->iAlphadepth = 1; /* Possible tRNS cheap binary transparency */
- /* fits on maximum canvas ? */
- if ((pData->iWidth > pData->iMaxwidth) || (pData->iHeight > pData->iMaxheight))
- MNG_WARNING (pData, MNG_IMAGETOOLARGE);
-
-#if !defined(MNG_INCLUDE_MPNG_PROPOSAL) || !defined(MNG_SUPPORT_DISPLAY)
- if (pData->fProcessheader) /* inform the app ? */
- if (!pData->fProcessheader (((mng_handle)pData), pData->iWidth, pData->iHeight))
- MNG_ERROR (pData, MNG_APPMISCERROR);
-#endif
- }
-
- if (!pData->bHasDHDR)
- pData->iImagelevel++; /* one level deeper */
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_retcode iRetcode = mng_process_display_ihdr (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the fields */
- ((mng_ihdrp)*ppChunk)->iWidth = mng_get_uint32 (pRawdata);
- ((mng_ihdrp)*ppChunk)->iHeight = mng_get_uint32 (pRawdata+4);
- ((mng_ihdrp)*ppChunk)->iBitdepth = pData->iBitdepth;
- ((mng_ihdrp)*ppChunk)->iColortype = pData->iColortype;
- ((mng_ihdrp)*ppChunk)->iCompression = pData->iCompression;
- ((mng_ihdrp)*ppChunk)->iFilter = pData->iFilter;
- ((mng_ihdrp)*ppChunk)->iInterlace = pData->iInterlace;
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_IHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif /* MNG_OPTIMIZE_CHUNKREADER */
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-READ_CHUNK (mng_read_plte)
-{
-#if defined(MNG_SUPPORT_DISPLAY) || defined(MNG_STORE_CHUNKS)
- mng_uint32 iX;
- mng_uint8p pRawdata2;
-#endif
-#ifdef MNG_SUPPORT_DISPLAY
- mng_uint32 iRawlen2;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_PLTE, MNG_LC_START);
-#endif
- /* sequence checks */
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) )
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIDAT) || (pData->bHasJHDR))
-#else
- if (pData->bHasIDAT)
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* multiple PLTE only inside BASI */
- if ((pData->bHasPLTE) && (!pData->bHasBASI))
- MNG_ERROR (pData, MNG_MULTIPLEERROR);
- /* length must be multiple of 3 */
- if (((iRawlen % 3) != 0) || (iRawlen > 768))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- { /* only allowed for indexed-color or
- rgb(a)-color! */
- if ((pData->iColortype != 2) && (pData->iColortype != 3) && (pData->iColortype != 6))
- MNG_ERROR (pData, MNG_CHUNKNOTALLOWED);
- /* empty only allowed if global present */
- if ((iRawlen == 0) && (!pData->bHasglobalPLTE))
- MNG_ERROR (pData, MNG_CANNOTBEEMPTY);
- }
- else
- {
- if (iRawlen == 0) /* cannot be empty as global! */
- MNG_ERROR (pData, MNG_CANNOTBEEMPTY);
- }
-
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- pData->bHasPLTE = MNG_TRUE; /* got it! */
- else
- pData->bHasglobalPLTE = MNG_TRUE;
-
- pData->iPLTEcount = iRawlen / 3;
-
-#ifdef MNG_SUPPORT_DISPLAY
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- {
- mng_imagep pImage;
- mng_imagedatap pBuf;
-
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* processing delta-image ? */
- { /* store in object 0 !!! */
- pImage = (mng_imagep)pData->pObjzero;
- pBuf = pImage->pImgbuf;
- pBuf->bHasPLTE = MNG_TRUE; /* it's definitely got a PLTE now */
- pBuf->iPLTEcount = iRawlen / 3; /* this is the exact length */
- pRawdata2 = pRawdata; /* copy the entries */
-
- for (iX = 0; iX < iRawlen / 3; iX++)
- {
- pBuf->aPLTEentries[iX].iRed = *pRawdata2;
- pBuf->aPLTEentries[iX].iGreen = *(pRawdata2+1);
- pBuf->aPLTEentries[iX].iBlue = *(pRawdata2+2);
-
- pRawdata2 += 3;
- }
- }
- else
-#endif
- { /* get the current object */
- pImage = (mng_imagep)pData->pCurrentobj;
-
- if (!pImage) /* no object then dump it in obj 0 */
- pImage = (mng_imagep)pData->pObjzero;
-
- pBuf = pImage->pImgbuf; /* address the object buffer */
- pBuf->bHasPLTE = MNG_TRUE; /* and tell it it's got a PLTE now */
-
- if (!iRawlen) /* if empty, inherit from global */
- {
- pBuf->iPLTEcount = pData->iGlobalPLTEcount;
- MNG_COPY (pBuf->aPLTEentries, pData->aGlobalPLTEentries,
- sizeof (pBuf->aPLTEentries));
-
- if (pData->bHasglobalTRNS) /* also copy global tRNS ? */
- { /* indicate tRNS available */
- pBuf->bHasTRNS = MNG_TRUE;
-
- iRawlen2 = pData->iGlobalTRNSrawlen;
- pRawdata2 = (mng_uint8p)(pData->aGlobalTRNSrawdata);
- /* global length oke ? */
- if ((iRawlen2 == 0) || (iRawlen2 > pBuf->iPLTEcount))
- MNG_ERROR (pData, MNG_GLOBALLENGTHERR);
- /* copy it */
- pBuf->iTRNScount = iRawlen2;
- MNG_COPY (pBuf->aTRNSentries, pRawdata2, iRawlen2);
- }
- }
- else
- { /* store fields for future reference */
- pBuf->iPLTEcount = iRawlen / 3;
- pRawdata2 = pRawdata;
-
- for (iX = 0; iX < pBuf->iPLTEcount; iX++)
- {
- pBuf->aPLTEentries[iX].iRed = *pRawdata2;
- pBuf->aPLTEentries[iX].iGreen = *(pRawdata2+1);
- pBuf->aPLTEentries[iX].iBlue = *(pRawdata2+2);
-
- pRawdata2 += 3;
- }
- }
- }
- }
- else /* store as global */
- {
- pData->iGlobalPLTEcount = iRawlen / 3;
- pRawdata2 = pRawdata;
-
- for (iX = 0; iX < pData->iGlobalPLTEcount; iX++)
- {
- pData->aGlobalPLTEentries[iX].iRed = *pRawdata2;
- pData->aGlobalPLTEentries[iX].iGreen = *(pRawdata2+1);
- pData->aGlobalPLTEentries[iX].iBlue = *(pRawdata2+2);
-
- pRawdata2 += 3;
- }
-
- { /* create an animation object */
- mng_retcode iRetcode = mng_create_ani_plte (pData, pData->iGlobalPLTEcount,
- pData->aGlobalPLTEentries);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_pltep)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);
- ((mng_pltep)*ppChunk)->iEntrycount = iRawlen / 3;
- pRawdata2 = pRawdata;
-
- for (iX = 0; iX < ((mng_pltep)*ppChunk)->iEntrycount; iX++)
- {
- ((mng_pltep)*ppChunk)->aEntries[iX].iRed = *pRawdata2;
- ((mng_pltep)*ppChunk)->aEntries[iX].iGreen = *(pRawdata2+1);
- ((mng_pltep)*ppChunk)->aEntries[iX].iBlue = *(pRawdata2+2);
-
- pRawdata2 += 3;
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_PLTE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif /* MNG_OPTIMIZE_CHUNKREADER */
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-READ_CHUNK (mng_read_idat)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_IDAT, MNG_LC_START);
-#endif
-
-#ifdef MNG_INCLUDE_JNG /* sequence checks */
- if ((!pData->bHasIHDR) && (!pData->bHasBASI) && (!pData->bHasDHDR) && (!pData->bHasJHDR))
-#else
- if ((!pData->bHasIHDR) && (!pData->bHasBASI) && (!pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasJHDR) &&
- (pData->iJHDRalphacompression != MNG_COMPRESSION_DEFLATE))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (pData->bHasJSEP)
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-#endif
- /* not allowed for deltatype NO_CHANGE */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && ((pData->iDeltatype == MNG_DELTATYPE_NOCHANGE)))
- MNG_ERROR (pData, MNG_CHUNKNOTALLOWED);
-#endif
- /* can only be empty in BASI-block! */
- if ((iRawlen == 0) && (!pData->bHasBASI))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- /* indexed-color requires PLTE */
- if ((pData->bHasIHDR) && (pData->iColortype == 3) && (!pData->bHasPLTE))
- MNG_ERROR (pData, MNG_PLTEMISSING);
-
- pData->bHasIDAT = MNG_TRUE; /* got some IDAT now, don't we */
-
-#ifdef MNG_SUPPORT_DISPLAY
- if (iRawlen)
- { /* display processing */
- mng_retcode iRetcode = mng_process_display_idat (pData, iRawlen, pRawdata);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_idatp)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);
- ((mng_idatp)*ppChunk)->iDatasize = iRawlen;
-
- if (iRawlen != 0) /* is there any data ? */
- {
- MNG_ALLOC (pData, ((mng_idatp)*ppChunk)->pData, iRawlen);
- MNG_COPY (((mng_idatp)*ppChunk)->pData, pRawdata, iRawlen);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_IDAT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-READ_CHUNK (mng_read_iend)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_IEND, MNG_LC_START);
-#endif
-
- if (iRawlen > 0) /* must not contain data! */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_INCLUDE_JNG /* sequence checks */
- if ((!pData->bHasIHDR) && (!pData->bHasBASI) && (!pData->bHasDHDR) && (!pData->bHasJHDR))
-#else
- if ((!pData->bHasIHDR) && (!pData->bHasBASI) && (!pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* IHDR-block requires IDAT */
- if ((pData->bHasIHDR) && (!pData->bHasIDAT))
- MNG_ERROR (pData, MNG_IDATMISSING);
-
- pData->iImagelevel--; /* one level up */
-
-#ifdef MNG_SUPPORT_DISPLAY
- { /* create an animation object */
- mng_retcode iRetcode = mng_create_ani_image (pData);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* display processing */
- iRetcode = mng_process_display_iend (pData);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_SUPPORT_DISPLAY
- if (!pData->bTimerset) /* reset only if not broken !!! */
- {
-#endif
- /* IEND signals the end for most ... */
- pData->bHasIHDR = MNG_FALSE;
- pData->bHasBASI = MNG_FALSE;
- pData->bHasDHDR = MNG_FALSE;
-#ifdef MNG_INCLUDE_JNG
- pData->bHasJHDR = MNG_FALSE;
- pData->bHasJSEP = MNG_FALSE;
- pData->bHasJDAA = MNG_FALSE;
- pData->bHasJDAT = MNG_FALSE;
-#endif
- pData->bHasPLTE = MNG_FALSE;
- pData->bHasTRNS = MNG_FALSE;
- pData->bHasGAMA = MNG_FALSE;
- pData->bHasCHRM = MNG_FALSE;
- pData->bHasSRGB = MNG_FALSE;
- pData->bHasICCP = MNG_FALSE;
- pData->bHasBKGD = MNG_FALSE;
- pData->bHasIDAT = MNG_FALSE;
-#ifdef MNG_SUPPORT_DISPLAY
- }
-#endif
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_IEND, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-READ_CHUNK (mng_read_trns)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_TRNS, MNG_LC_START);
-#endif
- /* sequence checks */
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) )
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIDAT) || (pData->bHasJHDR))
-#else
- if (pData->bHasIDAT)
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* multiple tRNS only inside BASI */
- if ((pData->bHasTRNS) && (!pData->bHasBASI))
- MNG_ERROR (pData, MNG_MULTIPLEERROR);
-
- if (iRawlen > 256) /* it just can't be bigger than that! */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- { /* not allowed with full alpha-channel */
- if ((pData->iColortype == 4) || (pData->iColortype == 6))
- MNG_ERROR (pData, MNG_CHUNKNOTALLOWED);
-
- if (iRawlen != 0) /* filled ? */
- { /* length checks */
- if ((pData->iColortype == 0) && (iRawlen != 2))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if ((pData->iColortype == 2) && (iRawlen != 6))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- if (pData->iColortype == 3)
- {
- mng_imagep pImage = (mng_imagep)pData->pCurrentobj;
- mng_imagedatap pBuf;
-
- if (!pImage) /* no object then check obj 0 */
- pImage = (mng_imagep)pData->pObjzero;
-
- pBuf = pImage->pImgbuf; /* address object buffer */
-
- if (iRawlen > pBuf->iPLTEcount)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
-#endif
- }
- else /* if empty there must be global stuff! */
- {
- if (!pData->bHasglobalTRNS)
- MNG_ERROR (pData, MNG_CANNOTBEEMPTY);
- }
- }
-
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- pData->bHasTRNS = MNG_TRUE; /* indicate tRNS available */
- else
- pData->bHasglobalTRNS = MNG_TRUE;
-
-#ifdef MNG_SUPPORT_DISPLAY
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- {
- mng_imagep pImage;
- mng_imagedatap pBuf;
- mng_uint8p pRawdata2;
- mng_uint32 iRawlen2;
-
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* processing delta-image ? */
- { /* store in object 0 !!! */
- pImage = (mng_imagep)pData->pObjzero;
- pBuf = pImage->pImgbuf; /* address object buffer */
-
- switch (pData->iColortype) /* store fields for future reference */
- {
- case 0: { /* gray */
-#if defined(MNG_NO_1_2_4BIT_SUPPORT)
- mng_uint8 multiplier[]={0,255,85,0,17,0,0,0,1,
- 0,0,0,0,0,0,0,1};
-#endif
- pBuf->iTRNSgray = mng_get_uint16 (pRawdata);
- pBuf->iTRNSred = 0;
- pBuf->iTRNSgreen = 0;
- pBuf->iTRNSblue = 0;
- pBuf->iTRNScount = 0;
-#if defined(MNG_NO_1_2_4BIT_SUPPORT)
- pBuf->iTRNSgray *= multiplier[pData->iPNGdepth];
-#endif
-#if defined(MNG_NO_16BIT_SUPPORT)
- if (pData->iPNGmult == 2)
- pBuf->iTRNSgray >>= 8;
-#endif
- break;
- }
- case 2: { /* rgb */
- pBuf->iTRNSgray = 0;
- pBuf->iTRNSred = mng_get_uint16 (pRawdata);
- pBuf->iTRNSgreen = mng_get_uint16 (pRawdata+2);
- pBuf->iTRNSblue = mng_get_uint16 (pRawdata+4);
- pBuf->iTRNScount = 0;
-#if defined(MNG_NO_16BIT_SUPPORT)
- if (pData->iPNGmult == 2)
- {
- pBuf->iTRNSred >>= 8;
- pBuf->iTRNSgreen >>= 8;
- pBuf->iTRNSblue >>= 8;
- }
-#endif
- break;
- }
- case 3: { /* indexed */
- pBuf->iTRNSgray = 0;
- pBuf->iTRNSred = 0;
- pBuf->iTRNSgreen = 0;
- pBuf->iTRNSblue = 0;
- pBuf->iTRNScount = iRawlen;
- MNG_COPY (pBuf->aTRNSentries, pRawdata, iRawlen);
- break;
- }
- }
-
- pBuf->bHasTRNS = MNG_TRUE; /* tell it it's got a tRNS now */
- }
- else
-#endif
- { /* address current object */
- pImage = (mng_imagep)pData->pCurrentobj;
-
- if (!pImage) /* no object then dump it in obj 0 */
- pImage = (mng_imagep)pData->pObjzero;
-
- pBuf = pImage->pImgbuf; /* address object buffer */
- pBuf->bHasTRNS = MNG_TRUE; /* and tell it it's got a tRNS now */
-
- if (iRawlen == 0) /* if empty, inherit from global */
- {
- iRawlen2 = pData->iGlobalTRNSrawlen;
- pRawdata2 = (mng_ptr)(pData->aGlobalTRNSrawdata);
- /* global length oke ? */
- if ((pData->iColortype == 0) && (iRawlen2 != 2))
- MNG_ERROR (pData, MNG_GLOBALLENGTHERR);
-
- if ((pData->iColortype == 2) && (iRawlen2 != 6))
- MNG_ERROR (pData, MNG_GLOBALLENGTHERR);
-
- if ((pData->iColortype == 3) && ((iRawlen2 == 0) || (iRawlen2 > pBuf->iPLTEcount)))
- MNG_ERROR (pData, MNG_GLOBALLENGTHERR);
- }
- else
- {
- iRawlen2 = iRawlen;
- pRawdata2 = pRawdata;
- }
-
- switch (pData->iColortype) /* store fields for future reference */
- {
- case 0: { /* gray */
- pBuf->iTRNSgray = mng_get_uint16 (pRawdata2);
- pBuf->iTRNSred = 0;
- pBuf->iTRNSgreen = 0;
- pBuf->iTRNSblue = 0;
- pBuf->iTRNScount = 0;
-#if defined(MNG_NO_16BIT_SUPPORT)
- if (pData->iPNGmult == 2)
- pBuf->iTRNSgray >>= 8;
-#endif
- break;
- }
- case 2: { /* rgb */
- pBuf->iTRNSgray = 0;
- pBuf->iTRNSred = mng_get_uint16 (pRawdata2);
- pBuf->iTRNSgreen = mng_get_uint16 (pRawdata2+2);
- pBuf->iTRNSblue = mng_get_uint16 (pRawdata2+4);
- pBuf->iTRNScount = 0;
-#if defined(MNG_NO_16BIT_SUPPORT)
- if (pData->iPNGmult == 2)
- {
- pBuf->iTRNSred >>= 8;
- pBuf->iTRNSgreen >>= 8;
- pBuf->iTRNSblue >>= 8;
- }
-#endif
- break;
- }
- case 3: { /* indexed */
- pBuf->iTRNSgray = 0;
- pBuf->iTRNSred = 0;
- pBuf->iTRNSgreen = 0;
- pBuf->iTRNSblue = 0;
- pBuf->iTRNScount = iRawlen2;
- MNG_COPY (pBuf->aTRNSentries, pRawdata2, iRawlen2);
- break;
- }
- }
- }
- }
- else /* store as global */
- {
- pData->iGlobalTRNSrawlen = iRawlen;
- MNG_COPY (pData->aGlobalTRNSrawdata, pRawdata, iRawlen);
-
- { /* create an animation object */
- mng_retcode iRetcode = mng_create_ani_trns (pData, pData->iGlobalTRNSrawlen,
- pData->aGlobalTRNSrawdata);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- { /* not global! */
- ((mng_trnsp)*ppChunk)->bGlobal = MNG_FALSE;
- ((mng_trnsp)*ppChunk)->iType = pData->iColortype;
-
- if (iRawlen == 0) /* if empty, indicate so */
- ((mng_trnsp)*ppChunk)->bEmpty = MNG_TRUE;
- else
- {
- ((mng_trnsp)*ppChunk)->bEmpty = MNG_FALSE;
-
- switch (pData->iColortype) /* store fields */
- {
- case 0: { /* gray */
- ((mng_trnsp)*ppChunk)->iGray = mng_get_uint16 (pRawdata);
- break;
- }
- case 2: { /* rgb */
- ((mng_trnsp)*ppChunk)->iRed = mng_get_uint16 (pRawdata);
- ((mng_trnsp)*ppChunk)->iGreen = mng_get_uint16 (pRawdata+2);
- ((mng_trnsp)*ppChunk)->iBlue = mng_get_uint16 (pRawdata+4);
- break;
- }
- case 3: { /* indexed */
- ((mng_trnsp)*ppChunk)->iCount = iRawlen;
- MNG_COPY (((mng_trnsp)*ppChunk)->aEntries, pRawdata, iRawlen);
- break;
- }
- }
- }
- }
- else /* it's global! */
- {
- ((mng_trnsp)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);
- ((mng_trnsp)*ppChunk)->bGlobal = MNG_TRUE;
- ((mng_trnsp)*ppChunk)->iType = 0;
- ((mng_trnsp)*ppChunk)->iRawlen = iRawlen;
-
- MNG_COPY (((mng_trnsp)*ppChunk)->aRawdata, pRawdata, iRawlen);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_TRNS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-READ_CHUNK (mng_read_gama)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_GAMA, MNG_LC_START);
-#endif
- /* sequence checks */
-#ifdef MNG_INCLUDE_JNG
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) && (!pData->bHasJHDR))
-#else
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) )
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIDAT) || (pData->bHasPLTE) || (pData->bHasJDAT) || (pData->bHasJDAA))
-#else
- if ((pData->bHasIDAT) || (pData->bHasPLTE))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- { /* length must be exactly 4 */
- if (iRawlen != 4)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
- else
- { /* length must be empty or exactly 4 */
- if ((iRawlen != 0) && (iRawlen != 4))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- pData->bHasGAMA = MNG_TRUE; /* indicate we've got it */
- else
- pData->bHasglobalGAMA = (mng_bool)(iRawlen != 0);
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- {
- mng_imagep pImage;
-
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* update delta image ? */
- { /* store in object 0 ! */
- pImage = (mng_imagep)pData->pObjzero;
- /* store for color-processing routines */
- pImage->pImgbuf->iGamma = mng_get_uint32 (pRawdata);
- pImage->pImgbuf->bHasGAMA = MNG_TRUE;
- }
- else
-#endif
- {
- pImage = (mng_imagep)pData->pCurrentobj;
-
- if (!pImage) /* no object then dump it in obj 0 */
- pImage = (mng_imagep)pData->pObjzero;
- /* store for color-processing routines */
- pImage->pImgbuf->iGamma = mng_get_uint32 (pRawdata);
- pImage->pImgbuf->bHasGAMA = MNG_TRUE;
- }
- }
- else
- { /* store as global */
- if (iRawlen != 0)
- pData->iGlobalGamma = mng_get_uint32 (pRawdata);
-
- { /* create an animation object */
- mng_retcode iRetcode = mng_create_ani_gama (pData, (mng_bool)(iRawlen == 0),
- pData->iGlobalGamma);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_gamap)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);
-
- if (iRawlen)
- ((mng_gamap)*ppChunk)->iGamma = mng_get_uint32 (pRawdata);
-
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_GAMA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_cHRM
-READ_CHUNK (mng_read_chrm)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_CHRM, MNG_LC_START);
-#endif
- /* sequence checks */
-#ifdef MNG_INCLUDE_JNG
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) && (!pData->bHasJHDR))
-#else
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) )
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIDAT) || (pData->bHasPLTE) || (pData->bHasJDAT) || (pData->bHasJDAA))
-#else
- if ((pData->bHasIDAT) || (pData->bHasPLTE))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- { /* length must be exactly 32 */
- if (iRawlen != 32)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
- else
- { /* length must be empty or exactly 32 */
- if ((iRawlen != 0) && (iRawlen != 32))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- pData->bHasCHRM = MNG_TRUE; /* indicate we've got it */
- else
- pData->bHasglobalCHRM = (mng_bool)(iRawlen != 0);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_uint32 iWhitepointx, iWhitepointy;
- mng_uint32 iPrimaryredx, iPrimaryredy;
- mng_uint32 iPrimarygreenx, iPrimarygreeny;
- mng_uint32 iPrimarybluex, iPrimarybluey;
-
- iWhitepointx = mng_get_uint32 (pRawdata);
- iWhitepointy = mng_get_uint32 (pRawdata+4);
- iPrimaryredx = mng_get_uint32 (pRawdata+8);
- iPrimaryredy = mng_get_uint32 (pRawdata+12);
- iPrimarygreenx = mng_get_uint32 (pRawdata+16);
- iPrimarygreeny = mng_get_uint32 (pRawdata+20);
- iPrimarybluex = mng_get_uint32 (pRawdata+24);
- iPrimarybluey = mng_get_uint32 (pRawdata+28);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- {
- mng_imagep pImage;
- mng_imagedatap pBuf;
-
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* update delta image ? */
- { /* store it in object 0 ! */
- pImage = (mng_imagep)pData->pObjzero;
-
- pBuf = pImage->pImgbuf; /* address object buffer */
- pBuf->bHasCHRM = MNG_TRUE; /* and tell it it's got a CHRM now */
- /* store for color-processing routines */
- pBuf->iWhitepointx = iWhitepointx;
- pBuf->iWhitepointy = iWhitepointy;
- pBuf->iPrimaryredx = iPrimaryredx;
- pBuf->iPrimaryredy = iPrimaryredy;
- pBuf->iPrimarygreenx = iPrimarygreenx;
- pBuf->iPrimarygreeny = iPrimarygreeny;
- pBuf->iPrimarybluex = iPrimarybluex;
- pBuf->iPrimarybluey = iPrimarybluey;
- }
- else
-#endif
- {
- pImage = (mng_imagep)pData->pCurrentobj;
-
- if (!pImage) /* no object then dump it in obj 0 */
- pImage = (mng_imagep)pData->pObjzero;
-
- pBuf = pImage->pImgbuf; /* address object buffer */
- pBuf->bHasCHRM = MNG_TRUE; /* and tell it it's got a CHRM now */
- /* store for color-processing routines */
- pBuf->iWhitepointx = iWhitepointx;
- pBuf->iWhitepointy = iWhitepointy;
- pBuf->iPrimaryredx = iPrimaryredx;
- pBuf->iPrimaryredy = iPrimaryredy;
- pBuf->iPrimarygreenx = iPrimarygreenx;
- pBuf->iPrimarygreeny = iPrimarygreeny;
- pBuf->iPrimarybluex = iPrimarybluex;
- pBuf->iPrimarybluey = iPrimarybluey;
- }
- }
- else
- { /* store as global */
- if (iRawlen != 0)
- {
- pData->iGlobalWhitepointx = iWhitepointx;
- pData->iGlobalWhitepointy = iWhitepointy;
- pData->iGlobalPrimaryredx = iPrimaryredx;
- pData->iGlobalPrimaryredy = iPrimaryredy;
- pData->iGlobalPrimarygreenx = iPrimarygreenx;
- pData->iGlobalPrimarygreeny = iPrimarygreeny;
- pData->iGlobalPrimarybluex = iPrimarybluex;
- pData->iGlobalPrimarybluey = iPrimarybluey;
- }
-
- { /* create an animation object */
- mng_retcode iRetcode = mng_create_ani_chrm (pData, (mng_bool)(iRawlen == 0),
- iWhitepointx, iWhitepointy,
- iPrimaryredx, iPrimaryredy,
- iPrimarygreenx, iPrimarygreeny,
- iPrimarybluex, iPrimarybluey);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- }
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_chrmp)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);
-
- if (iRawlen)
- {
- ((mng_chrmp)*ppChunk)->iWhitepointx = mng_get_uint32 (pRawdata);
- ((mng_chrmp)*ppChunk)->iWhitepointy = mng_get_uint32 (pRawdata+4);
- ((mng_chrmp)*ppChunk)->iRedx = mng_get_uint32 (pRawdata+8);
- ((mng_chrmp)*ppChunk)->iRedy = mng_get_uint32 (pRawdata+12);
- ((mng_chrmp)*ppChunk)->iGreenx = mng_get_uint32 (pRawdata+16);
- ((mng_chrmp)*ppChunk)->iGreeny = mng_get_uint32 (pRawdata+20);
- ((mng_chrmp)*ppChunk)->iBluex = mng_get_uint32 (pRawdata+24);
- ((mng_chrmp)*ppChunk)->iBluey = mng_get_uint32 (pRawdata+28);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_CHRM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-READ_CHUNK (mng_read_srgb)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_SRGB, MNG_LC_START);
-#endif
- /* sequence checks */
-#ifdef MNG_INCLUDE_JNG
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) && (!pData->bHasJHDR))
-#else
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) )
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIDAT) || (pData->bHasPLTE) || (pData->bHasJDAT) || (pData->bHasJDAA))
-#else
- if ((pData->bHasIDAT) || (pData->bHasPLTE))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- { /* length must be exactly 1 */
- if (iRawlen != 1)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
- else
- { /* length must be empty or exactly 1 */
- if ((iRawlen != 0) && (iRawlen != 1))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- pData->bHasSRGB = MNG_TRUE; /* indicate we've got it */
- else
- pData->bHasglobalSRGB = (mng_bool)(iRawlen != 0);
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- {
- mng_imagep pImage;
-
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* update delta image ? */
- { /* store in object 0 ! */
- pImage = (mng_imagep)pData->pObjzero;
- /* store for color-processing routines */
- pImage->pImgbuf->iRenderingintent = *pRawdata;
- pImage->pImgbuf->bHasSRGB = MNG_TRUE;
- }
- else
-#endif
- {
- pImage = (mng_imagep)pData->pCurrentobj;
-
- if (!pImage) /* no object then dump it in obj 0 */
- pImage = (mng_imagep)pData->pObjzero;
- /* store for color-processing routines */
- pImage->pImgbuf->iRenderingintent = *pRawdata;
- pImage->pImgbuf->bHasSRGB = MNG_TRUE;
- }
- }
- else
- { /* store as global */
- if (iRawlen != 0)
- pData->iGlobalRendintent = *pRawdata;
-
- { /* create an animation object */
- mng_retcode iRetcode = mng_create_ani_srgb (pData, (mng_bool)(iRawlen == 0),
- pData->iGlobalRendintent);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_srgbp)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);
-
- if (iRawlen)
- ((mng_srgbp)*ppChunk)->iRenderingintent = *pRawdata;
-
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_SRGB, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_iCCP
-READ_CHUNK (mng_read_iccp)
-{
- mng_retcode iRetcode;
- mng_uint8p pTemp;
- mng_uint32 iCompressedsize;
- mng_uint32 iProfilesize;
- mng_uint32 iBufsize = 0;
- mng_uint8p pBuf = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_ICCP, MNG_LC_START);
-#endif
- /* sequence checks */
-#ifdef MNG_INCLUDE_JNG
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) && (!pData->bHasJHDR))
-#else
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) )
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIDAT) || (pData->bHasPLTE) || (pData->bHasJDAT) || (pData->bHasJDAA))
-#else
- if ((pData->bHasIDAT) || (pData->bHasPLTE))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- { /* length must be at least 2 */
- if (iRawlen < 2)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
- else
- { /* length must be empty or at least 2 */
- if ((iRawlen != 0) && (iRawlen < 2))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
-
- pTemp = find_null (pRawdata); /* find null-separator */
- /* not found inside input-data ? */
- if ((pTemp - pRawdata) > (mng_int32)iRawlen)
- MNG_ERROR (pData, MNG_NULLNOTFOUND);
- /* determine size of compressed profile */
- iCompressedsize = (mng_uint32)(iRawlen - (pTemp - pRawdata) - 2);
- /* decompress the profile */
- iRetcode = mng_inflate_buffer (pData, pTemp+2, iCompressedsize,
- &pBuf, &iBufsize, &iProfilesize);
-
-#ifdef MNG_CHECK_BAD_ICCP /* Check for bad iCCP chunk */
- if ((iRetcode) && (!strncmp ((char *)pRawdata, "Photoshop ICC profile", 21)))
- {
- if (iRawlen == 2615) /* is it the sRGB profile ? */
- {
- mng_chunk_header chunk_srgb =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_sRGB, mng_init_general, mng_free_general, mng_read_srgb, mng_write_srgb, mng_assign_general, 0, 0, sizeof(mng_srgb)};
-#else
- {MNG_UINT_sRGB, mng_init_srgb, mng_free_srgb, mng_read_srgb, mng_write_srgb, mng_assign_srgb, 0, 0};
-#endif
- /* pretend it's an sRGB chunk then ! */
- iRetcode = mng_read_srgb (pData, &chunk_srgb, 1, (mng_ptr)"0", ppChunk);
-
- if (iRetcode) /* on error bail out */
- { /* don't forget to drop the temp buffer */
- MNG_FREEX (pData, pBuf, iBufsize);
- return iRetcode;
- }
- }
- }
- else
- {
-#endif /* MNG_CHECK_BAD_ICCP */
-
- if (iRetcode) /* on error bail out */
- { /* don't forget to drop the temp buffer */
- MNG_FREEX (pData, pBuf, iBufsize);
- return iRetcode;
- }
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- pData->bHasICCP = MNG_TRUE; /* indicate we've got it */
- else
- pData->bHasglobalICCP = (mng_bool)(iRawlen != 0);
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- {
- mng_imagep pImage;
-
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* update delta image ? */
- { /* store in object 0 ! */
- pImage = (mng_imagep)pData->pObjzero;
-
- if (pImage->pImgbuf->pProfile) /* profile existed ? */
- MNG_FREEX (pData, pImage->pImgbuf->pProfile, pImage->pImgbuf->iProfilesize);
- /* allocate a buffer & copy it */
- MNG_ALLOC (pData, pImage->pImgbuf->pProfile, iProfilesize);
- MNG_COPY (pImage->pImgbuf->pProfile, pBuf, iProfilesize);
- /* store its length as well */
- pImage->pImgbuf->iProfilesize = iProfilesize;
- pImage->pImgbuf->bHasICCP = MNG_TRUE;
- }
- else
-#endif
- {
- pImage = (mng_imagep)pData->pCurrentobj;
-
- if (!pImage) /* no object then dump it in obj 0 */
- pImage = (mng_imagep)pData->pObjzero;
-
- if (pImage->pImgbuf->pProfile) /* profile existed ? */
- MNG_FREEX (pData, pImage->pImgbuf->pProfile, pImage->pImgbuf->iProfilesize);
- /* allocate a buffer & copy it */
- MNG_ALLOC (pData, pImage->pImgbuf->pProfile, iProfilesize);
- MNG_COPY (pImage->pImgbuf->pProfile, pBuf, iProfilesize);
- /* store its length as well */
- pImage->pImgbuf->iProfilesize = iProfilesize;
- pImage->pImgbuf->bHasICCP = MNG_TRUE;
- }
- }
- else
- { /* store as global */
- if (iRawlen == 0) /* empty chunk ? */
- {
- if (pData->pGlobalProfile) /* did we have a global profile ? */
- MNG_FREEX (pData, pData->pGlobalProfile, pData->iGlobalProfilesize);
-
- pData->iGlobalProfilesize = 0; /* reset to null */
- pData->pGlobalProfile = MNG_NULL;
- }
- else
- { /* allocate a global buffer & copy it */
- MNG_ALLOC (pData, pData->pGlobalProfile, iProfilesize);
- MNG_COPY (pData->pGlobalProfile, pBuf, iProfilesize);
- /* store its length as well */
- pData->iGlobalProfilesize = iProfilesize;
- }
-
- /* create an animation object */
- iRetcode = mng_create_ani_iccp (pData, (mng_bool)(iRawlen == 0),
- pData->iGlobalProfilesize,
- pData->pGlobalProfile);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- { /* don't forget to drop the temp buffer */
- MNG_FREEX (pData, pBuf, iBufsize);
- return iRetcode;
- }
- /* store the fields */
- ((mng_iccpp)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);
-
- if (iRawlen) /* not empty ? */
- {
- if (!pBuf) /* hasn't been unpuzzled it yet ? */
- { /* find null-separator */
- pTemp = find_null (pRawdata);
- /* not found inside input-data ? */
- if ((pTemp - pRawdata) > (mng_int32)iRawlen)
- MNG_ERROR (pData, MNG_NULLNOTFOUND);
- /* determine size of compressed profile */
- iCompressedsize = iRawlen - (pTemp - pRawdata) - 2;
- /* decompress the profile */
- iRetcode = mng_inflate_buffer (pData, pTemp+2, iCompressedsize,
- &pBuf, &iBufsize, &iProfilesize);
-
- if (iRetcode) /* on error bail out */
- { /* don't forget to drop the temp buffer */
- MNG_FREEX (pData, pBuf, iBufsize);
- return iRetcode;
- }
- }
-
- ((mng_iccpp)*ppChunk)->iNamesize = (mng_uint32)(pTemp - pRawdata);
-
- if (((mng_iccpp)*ppChunk)->iNamesize)
- {
- MNG_ALLOC (pData, ((mng_iccpp)*ppChunk)->zName,
- ((mng_iccpp)*ppChunk)->iNamesize + 1);
- MNG_COPY (((mng_iccpp)*ppChunk)->zName, pRawdata,
- ((mng_iccpp)*ppChunk)->iNamesize);
- }
-
- ((mng_iccpp)*ppChunk)->iCompression = *(pTemp+1);
- ((mng_iccpp)*ppChunk)->iProfilesize = iProfilesize;
-
- MNG_ALLOC (pData, ((mng_iccpp)*ppChunk)->pProfile, iProfilesize);
- MNG_COPY (((mng_iccpp)*ppChunk)->pProfile, pBuf, iProfilesize);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
- if (pBuf) /* free the temporary buffer */
- MNG_FREEX (pData, pBuf, iBufsize);
-
-#ifdef MNG_CHECK_BAD_ICCP
- }
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_ICCP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_tEXt
-READ_CHUNK (mng_read_text)
-{
- mng_uint32 iKeywordlen, iTextlen;
- mng_pchar zKeyword, zText;
- mng_uint8p pTemp;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_TEXT, MNG_LC_START);
-#endif
- /* sequence checks */
-#ifdef MNG_INCLUDE_JNG
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) && (!pData->bHasJHDR))
-#else
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) )
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen < 2) /* length must be at least 2 */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- pTemp = find_null (pRawdata); /* find the null separator */
- /* not found inside input-data ? */
- if ((pTemp - pRawdata) > (mng_int32)iRawlen)
- MNG_ERROR (pData, MNG_NULLNOTFOUND);
-
- if (pTemp == pRawdata) /* there must be at least 1 char for keyword */
- MNG_ERROR (pData, MNG_KEYWORDNULL);
-
- iKeywordlen = (mng_uint32)(pTemp - pRawdata);
- iTextlen = iRawlen - iKeywordlen - 1;
-
- if (pData->fProcesstext) /* inform the application ? */
- {
- mng_bool bOke;
-
- MNG_ALLOC (pData, zKeyword, iKeywordlen + 1);
- MNG_COPY (zKeyword, pRawdata, iKeywordlen);
-
- MNG_ALLOCX (pData, zText, iTextlen + 1);
-
- if (!zText) /* on error bail out */
- {
- MNG_FREEX (pData, zKeyword, iKeywordlen + 1);
- MNG_ERROR (pData, MNG_OUTOFMEMORY);
- }
-
- if (iTextlen)
- MNG_COPY (zText, pTemp+1, iTextlen);
-
- bOke = pData->fProcesstext ((mng_handle)pData, MNG_TYPE_TEXT, zKeyword, zText, 0, 0);
-
- MNG_FREEX (pData, zText, iTextlen + 1);
- MNG_FREEX (pData, zKeyword, iKeywordlen + 1);
-
- if (!bOke)
- MNG_ERROR (pData, MNG_APPMISCERROR);
-
- }
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_textp)*ppChunk)->iKeywordsize = iKeywordlen;
- ((mng_textp)*ppChunk)->iTextsize = iTextlen;
-
- if (iKeywordlen)
- {
- MNG_ALLOC (pData, ((mng_textp)*ppChunk)->zKeyword, iKeywordlen+1);
- MNG_COPY (((mng_textp)*ppChunk)->zKeyword, pRawdata, iKeywordlen);
- }
-
- if (iTextlen)
- {
- MNG_ALLOC (pData, ((mng_textp)*ppChunk)->zText, iTextlen+1);
- MNG_COPY (((mng_textp)*ppChunk)->zText, pTemp+1, iTextlen);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_TEXT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_zTXt
-READ_CHUNK (mng_read_ztxt)
-{
- mng_retcode iRetcode;
- mng_uint32 iKeywordlen, iTextlen;
- mng_pchar zKeyword;
- mng_uint8p pTemp;
- mng_uint32 iCompressedsize;
- mng_uint32 iBufsize;
- mng_uint8p pBuf;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_ZTXT, MNG_LC_START);
-#endif
- /* sequence checks */
-#ifdef MNG_INCLUDE_JNG
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) && (!pData->bHasJHDR))
-#else
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) )
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen < 3) /* length must be at least 3 */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- pTemp = find_null (pRawdata); /* find the null separator */
- /* not found inside input-data ? */
- if ((pTemp - pRawdata) > (mng_int32)iRawlen)
- MNG_ERROR (pData, MNG_NULLNOTFOUND);
-
- if (pTemp == pRawdata) /* there must be at least 1 char for keyword */
- MNG_ERROR (pData, MNG_KEYWORDNULL);
-
- if (*(pTemp+1) != 0) /* only deflate compression-method allowed */
- MNG_ERROR (pData, MNG_INVALIDCOMPRESS);
-
- iKeywordlen = (mng_uint32)(pTemp - pRawdata);
- iCompressedsize = (mng_uint32)(iRawlen - iKeywordlen - 2);
-
- zKeyword = 0; /* there's no keyword buffer yet */
- pBuf = 0; /* or a temporary buffer ! */
-
- if (pData->fProcesstext) /* inform the application ? */
- { /* decompress the text */
- iRetcode = mng_inflate_buffer (pData, pTemp+2, iCompressedsize,
- &pBuf, &iBufsize, &iTextlen);
-
- if (iRetcode) /* on error bail out */
- { /* don't forget to drop the temp buffers */
- MNG_FREEX (pData, pBuf, iBufsize);
- return iRetcode;
- }
-
- MNG_ALLOCX (pData, zKeyword, iKeywordlen+1);
-
- if (!zKeyword) /* on error bail out */
- { /* don't forget to drop the temp buffers */
- MNG_FREEX (pData, pBuf, iBufsize);
- MNG_ERROR (pData, MNG_OUTOFMEMORY);
- }
-
- MNG_COPY (zKeyword, pRawdata, iKeywordlen);
-
- if (!pData->fProcesstext ((mng_handle)pData, MNG_TYPE_ZTXT, zKeyword, (mng_pchar)pBuf, 0, 0))
- { /* don't forget to drop the temp buffers */
- MNG_FREEX (pData, pBuf, iBufsize);
- MNG_FREEX (pData, zKeyword, iKeywordlen+1);
- MNG_ERROR (pData, MNG_APPMISCERROR);
- }
- }
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- { /* don't forget to drop the temp buffers */
- MNG_FREEX (pData, pBuf, iBufsize);
- MNG_FREEX (pData, zKeyword, iKeywordlen+1);
- return iRetcode;
- }
- /* store the fields */
- ((mng_ztxtp)*ppChunk)->iKeywordsize = iKeywordlen;
- ((mng_ztxtp)*ppChunk)->iCompression = *(pTemp+1);
-
- if ((!pBuf) && (iCompressedsize)) /* did we not get a text-buffer yet ? */
- { /* decompress the text */
- iRetcode = mng_inflate_buffer (pData, pTemp+2, iCompressedsize,
- &pBuf, &iBufsize, &iTextlen);
-
- if (iRetcode) /* on error bail out */
- { /* don't forget to drop the temp buffers */
- MNG_FREEX (pData, pBuf, iBufsize);
- MNG_FREEX (pData, zKeyword, iKeywordlen+1);
- return iRetcode;
- }
- }
-
- MNG_ALLOCX (pData, ((mng_ztxtp)*ppChunk)->zKeyword, iKeywordlen + 1);
- /* on error bail out */
- if (!((mng_ztxtp)*ppChunk)->zKeyword)
- { /* don't forget to drop the temp buffers */
- MNG_FREEX (pData, pBuf, iBufsize);
- MNG_FREEX (pData, zKeyword, iKeywordlen+1);
- MNG_ERROR (pData, MNG_OUTOFMEMORY);
- }
-
- MNG_COPY (((mng_ztxtp)*ppChunk)->zKeyword, pRawdata, iKeywordlen);
-
- ((mng_ztxtp)*ppChunk)->iTextsize = iTextlen;
-
- if (iCompressedsize)
- {
- MNG_ALLOCX (pData, ((mng_ztxtp)*ppChunk)->zText, iTextlen + 1);
- /* on error bail out */
- if (!((mng_ztxtp)*ppChunk)->zText)
- { /* don't forget to drop the temp buffers */
- MNG_FREEX (pData, pBuf, iBufsize);
- MNG_FREEX (pData, zKeyword, iKeywordlen+1);
- MNG_ERROR (pData, MNG_OUTOFMEMORY);
- }
-
- MNG_COPY (((mng_ztxtp)*ppChunk)->zText, pBuf, iTextlen);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
- MNG_FREEX (pData, pBuf, iBufsize); /* free the temporary buffers */
- MNG_FREEX (pData, zKeyword, iKeywordlen+1);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_ZTXT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_iTXt
-READ_CHUNK (mng_read_itxt)
-{
- mng_retcode iRetcode;
- mng_uint32 iKeywordlen, iTextlen, iLanguagelen, iTranslationlen;
- mng_pchar zKeyword, zLanguage, zTranslation;
- mng_uint8p pNull1, pNull2, pNull3;
- mng_uint32 iCompressedsize;
- mng_uint8 iCompressionflag;
- mng_uint32 iBufsize;
- mng_uint8p pBuf;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_ITXT, MNG_LC_START);
-#endif
- /* sequence checks */
-#ifdef MNG_INCLUDE_JNG
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) && (!pData->bHasJHDR))
-#else
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) )
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen < 6) /* length must be at least 6 */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- pNull1 = find_null (pRawdata); /* find the null separators */
- pNull2 = find_null (pNull1+3);
- pNull3 = find_null (pNull2+1);
- /* not found inside input-data ? */
- if (((pNull1 - pRawdata) > (mng_int32)iRawlen) ||
- ((pNull2 - pRawdata) > (mng_int32)iRawlen) ||
- ((pNull3 - pRawdata) > (mng_int32)iRawlen) )
- MNG_ERROR (pData, MNG_NULLNOTFOUND);
-
- if (pNull1 == pRawdata) /* there must be at least 1 char for keyword */
- MNG_ERROR (pData, MNG_KEYWORDNULL);
- /* compression or not ? */
- if ((*(pNull1+1) != 0) && (*(pNull1+1) != 1))
- MNG_ERROR (pData, MNG_INVALIDCOMPRESS);
-
- if (*(pNull1+2) != 0) /* only deflate compression-method allowed */
- MNG_ERROR (pData, MNG_INVALIDCOMPRESS);
-
- iKeywordlen = (mng_uint32)(pNull1 - pRawdata);
- iLanguagelen = (mng_uint32)(pNull2 - pNull1 - 3);
- iTranslationlen = (mng_uint32)(pNull3 - pNull2 - 1);
- iCompressedsize = (mng_uint32)(iRawlen - iKeywordlen - iLanguagelen - iTranslationlen - 5);
- iCompressionflag = *(pNull1+1);
-
- zKeyword = 0; /* no buffers acquired yet */
- zLanguage = 0;
- zTranslation = 0;
- pBuf = 0;
- iTextlen = 0;
-
- if (pData->fProcesstext) /* inform the application ? */
- {
- if (iCompressionflag) /* decompress the text ? */
- {
- iRetcode = mng_inflate_buffer (pData, pNull3+1, iCompressedsize,
- &pBuf, &iBufsize, &iTextlen);
-
- if (iRetcode) /* on error bail out */
- { /* don't forget to drop the temp buffer */
- MNG_FREEX (pData, pBuf, iBufsize);
- return iRetcode;
- }
- }
- else
- {
- iTextlen = iCompressedsize;
- iBufsize = iTextlen+1; /* plus 1 for terminator byte!!! */
-
- MNG_ALLOC (pData, pBuf, iBufsize);
- MNG_COPY (pBuf, pNull3+1, iTextlen);
- }
-
- MNG_ALLOCX (pData, zKeyword, iKeywordlen + 1);
- MNG_ALLOCX (pData, zLanguage, iLanguagelen + 1);
- MNG_ALLOCX (pData, zTranslation, iTranslationlen + 1);
- /* on error bail out */
- if ((!zKeyword) || (!zLanguage) || (!zTranslation))
- { /* don't forget to drop the temp buffers */
- MNG_FREEX (pData, zTranslation, iTranslationlen + 1);
- MNG_FREEX (pData, zLanguage, iLanguagelen + 1);
- MNG_FREEX (pData, zKeyword, iKeywordlen + 1);
- MNG_FREEX (pData, pBuf, iBufsize);
- MNG_ERROR (pData, MNG_OUTOFMEMORY);
- }
-
- MNG_COPY (zKeyword, pRawdata, iKeywordlen);
- MNG_COPY (zLanguage, pNull1+3, iLanguagelen);
- MNG_COPY (zTranslation, pNull2+1, iTranslationlen);
-
- if (!pData->fProcesstext ((mng_handle)pData, MNG_TYPE_ITXT, zKeyword, (mng_pchar)pBuf,
- zLanguage, zTranslation))
- { /* don't forget to drop the temp buffers */
- MNG_FREEX (pData, zTranslation, iTranslationlen + 1);
- MNG_FREEX (pData, zLanguage, iLanguagelen + 1);
- MNG_FREEX (pData, zKeyword, iKeywordlen + 1);
- MNG_FREEX (pData, pBuf, iBufsize);
-
- MNG_ERROR (pData, MNG_APPMISCERROR);
- }
- }
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- { /* don't forget to drop the temp buffers */
- MNG_FREEX (pData, zTranslation, iTranslationlen + 1);
- MNG_FREEX (pData, zLanguage, iLanguagelen + 1);
- MNG_FREEX (pData, zKeyword, iKeywordlen + 1);
- MNG_FREEX (pData, pBuf, iBufsize);
- return iRetcode;
- }
- /* store the fields */
- ((mng_itxtp)*ppChunk)->iKeywordsize = iKeywordlen;
- ((mng_itxtp)*ppChunk)->iLanguagesize = iLanguagelen;
- ((mng_itxtp)*ppChunk)->iTranslationsize = iTranslationlen;
- ((mng_itxtp)*ppChunk)->iCompressionflag = *(pNull1+1);
- ((mng_itxtp)*ppChunk)->iCompressionmethod = *(pNull1+2);
-
- if ((!pBuf) && (iCompressedsize)) /* did we not get a text-buffer yet ? */
- {
- if (iCompressionflag) /* decompress the text ? */
- {
- iRetcode = mng_inflate_buffer (pData, pNull3+1, iCompressedsize,
- &pBuf, &iBufsize, &iTextlen);
-
- if (iRetcode) /* on error bail out */
- { /* don't forget to drop the temp buffers */
- MNG_FREEX (pData, zTranslation, iTranslationlen + 1);
- MNG_FREEX (pData, zLanguage, iLanguagelen + 1);
- MNG_FREEX (pData, zKeyword, iKeywordlen + 1);
- MNG_FREEX (pData, pBuf, iBufsize);
- return iRetcode;
- }
- }
- else
- {
- iTextlen = iCompressedsize;
- iBufsize = iTextlen+1; /* plus 1 for terminator byte!!! */
-
- MNG_ALLOC (pData, pBuf, iBufsize);
- MNG_COPY (pBuf, pNull3+1, iTextlen);
- }
- }
-
- MNG_ALLOCX (pData, ((mng_itxtp)*ppChunk)->zKeyword, iKeywordlen + 1);
- MNG_ALLOCX (pData, ((mng_itxtp)*ppChunk)->zLanguage, iLanguagelen + 1);
- MNG_ALLOCX (pData, ((mng_itxtp)*ppChunk)->zTranslation, iTranslationlen + 1);
- /* on error bail out */
- if ((!((mng_itxtp)*ppChunk)->zKeyword ) ||
- (!((mng_itxtp)*ppChunk)->zLanguage ) ||
- (!((mng_itxtp)*ppChunk)->zTranslation) )
- { /* don't forget to drop the temp buffers */
- MNG_FREEX (pData, zTranslation, iTranslationlen + 1);
- MNG_FREEX (pData, zLanguage, iLanguagelen + 1);
- MNG_FREEX (pData, zKeyword, iKeywordlen + 1);
- MNG_FREEX (pData, pBuf, iBufsize);
- MNG_ERROR (pData, MNG_OUTOFMEMORY);
- }
-
- MNG_COPY (((mng_itxtp)*ppChunk)->zKeyword, pRawdata, iKeywordlen);
- MNG_COPY (((mng_itxtp)*ppChunk)->zLanguage, pNull1+3, iLanguagelen);
- MNG_COPY (((mng_itxtp)*ppChunk)->zTranslation, pNull2+1, iTranslationlen);
-
- ((mng_itxtp)*ppChunk)->iTextsize = iTextlen;
-
- if (iTextlen)
- {
- MNG_ALLOCX (pData, ((mng_itxtp)*ppChunk)->zText, iTextlen + 1);
-
- if (!((mng_itxtp)*ppChunk)->zText)
- { /* don't forget to drop the temp buffers */
- MNG_FREEX (pData, zTranslation, iTranslationlen + 1);
- MNG_FREEX (pData, zLanguage, iLanguagelen + 1);
- MNG_FREEX (pData, zKeyword, iKeywordlen + 1);
- MNG_FREEX (pData, pBuf, iBufsize);
- MNG_ERROR (pData, MNG_OUTOFMEMORY);
- }
-
- MNG_COPY (((mng_itxtp)*ppChunk)->zText, pBuf, iTextlen);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
- /* free the temporary buffers */
- MNG_FREEX (pData, zTranslation, iTranslationlen + 1);
- MNG_FREEX (pData, zLanguage, iLanguagelen + 1);
- MNG_FREEX (pData, zKeyword, iKeywordlen + 1);
- MNG_FREEX (pData, pBuf, iBufsize);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_ITXT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_bKGD
-READ_CHUNK (mng_read_bkgd)
-{
-#ifdef MNG_SUPPORT_DISPLAY
- mng_imagep pImage = (mng_imagep)pData->pCurrentobj;
- mng_imagedatap pBuf;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_BKGD, MNG_LC_START);
-#endif
- /* sequence checks */
-#ifdef MNG_INCLUDE_JNG
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) && (!pData->bHasJHDR))
-#else
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) )
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIDAT) || (pData->bHasJDAT) || (pData->bHasJDAA))
-#else
- if (pData->bHasIDAT)
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen > 6) /* it just can't be bigger than that! */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_INCLUDE_JNG /* length checks */
- if (pData->bHasJHDR)
- {
- if (((pData->iJHDRcolortype == 8) || (pData->iJHDRcolortype == 12)) && (iRawlen != 2))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if (((pData->iJHDRcolortype == 10) || (pData->iJHDRcolortype == 14)) && (iRawlen != 6))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
- else
-#endif /* MNG_INCLUDE_JNG */
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- {
- if (((pData->iColortype == 0) || (pData->iColortype == 4)) && (iRawlen != 2))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if (((pData->iColortype == 2) || (pData->iColortype == 6)) && (iRawlen != 6))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if ((pData->iColortype == 3) && (iRawlen != 1))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
- else
- {
- if (iRawlen != 6) /* global is always 16-bit RGB ! */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- pData->bHasBKGD = MNG_TRUE; /* indicate bKGD available */
- else
- pData->bHasglobalBKGD = (mng_bool)(iRawlen != 0);
-
-#ifdef MNG_SUPPORT_DISPLAY
- if (!pImage) /* if no object dump it in obj 0 */
- pImage = (mng_imagep)pData->pObjzero;
-
- pBuf = pImage->pImgbuf; /* address object buffer */
-
-#ifdef MNG_INCLUDE_JNG
- if (pData->bHasJHDR)
- {
- pBuf->bHasBKGD = MNG_TRUE; /* tell the object it's got bKGD now */
-
- switch (pData->iJHDRcolortype) /* store fields for future reference */
- {
- case 8 : ; /* gray */
- case 12 : { /* graya */
- pBuf->iBKGDgray = mng_get_uint16 (pRawdata);
- break;
- }
- case 10 : ; /* rgb */
- case 14 : { /* rgba */
- pBuf->iBKGDred = mng_get_uint16 (pRawdata);
- pBuf->iBKGDgreen = mng_get_uint16 (pRawdata+2);
- pBuf->iBKGDblue = mng_get_uint16 (pRawdata+4);
- break;
- }
- }
- }
- else
-#endif /* MNG_INCLUDE_JNG */
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- {
- pBuf->bHasBKGD = MNG_TRUE; /* tell the object it's got bKGD now */
-
- switch (pData->iColortype) /* store fields for future reference */
- {
- case 0 : ; /* gray */
- case 4 : { /* graya */
- pBuf->iBKGDgray = mng_get_uint16 (pRawdata);
- break;
- }
- case 2 : ; /* rgb */
- case 6 : { /* rgba */
- pBuf->iBKGDred = mng_get_uint16 (pRawdata);
- pBuf->iBKGDgreen = mng_get_uint16 (pRawdata+2);
- pBuf->iBKGDblue = mng_get_uint16 (pRawdata+4);
- break;
- }
- case 3 : { /* indexed */
- pBuf->iBKGDindex = *pRawdata;
- break;
- }
- }
- }
- else /* store as global */
- {
- if (iRawlen)
- {
- pData->iGlobalBKGDred = mng_get_uint16 (pRawdata);
- pData->iGlobalBKGDgreen = mng_get_uint16 (pRawdata+2);
- pData->iGlobalBKGDblue = mng_get_uint16 (pRawdata+4);
- }
-
- { /* create an animation object */
- mng_retcode iRetcode = mng_create_ani_bkgd (pData, pData->iGlobalBKGDred,
- pData->iGlobalBKGDgreen,
- pData->iGlobalBKGDblue);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_bkgdp)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);
- ((mng_bkgdp)*ppChunk)->iType = pData->iColortype;
-
- if (iRawlen)
- {
- switch (iRawlen) /* guess from length */
- {
- case 1 : { /* indexed */
- ((mng_bkgdp)*ppChunk)->iType = 3;
- ((mng_bkgdp)*ppChunk)->iIndex = *pRawdata;
- break;
- }
- case 2 : { /* gray */
- ((mng_bkgdp)*ppChunk)->iType = 0;
- ((mng_bkgdp)*ppChunk)->iGray = mng_get_uint16 (pRawdata);
- break;
- }
- case 6 : { /* rgb */
- ((mng_bkgdp)*ppChunk)->iType = 2;
- ((mng_bkgdp)*ppChunk)->iRed = mng_get_uint16 (pRawdata);
- ((mng_bkgdp)*ppChunk)->iGreen = mng_get_uint16 (pRawdata+2);
- ((mng_bkgdp)*ppChunk)->iBlue = mng_get_uint16 (pRawdata+4);
- break;
- }
- }
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_BKGD, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_pHYs
-READ_CHUNK (mng_read_phys)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_PHYS, MNG_LC_START);
-#endif
- /* sequence checks */
-#ifdef MNG_INCLUDE_JNG
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) && (!pData->bHasJHDR))
-#else
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) )
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIDAT) || (pData->bHasJDAT) || (pData->bHasJDAA))
-#else
- if (pData->bHasIDAT)
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* it's 9 bytes or empty; no more, no less! */
- if ((iRawlen != 9) && (iRawlen != 0))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_physp)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);
-
- if (iRawlen)
- {
- ((mng_physp)*ppChunk)->iSizex = mng_get_uint32 (pRawdata);
- ((mng_physp)*ppChunk)->iSizey = mng_get_uint32 (pRawdata+4);
- ((mng_physp)*ppChunk)->iUnit = *(pRawdata+8);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_PHYS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_sBIT
-READ_CHUNK (mng_read_sbit)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_SBIT, MNG_LC_START);
-#endif
- /* sequence checks */
-#ifdef MNG_INCLUDE_JNG
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) && (!pData->bHasJHDR))
-#else
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) )
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasPLTE) || (pData->bHasIDAT) || (pData->bHasJDAT) || (pData->bHasJDAA))
-#else
- if ((pData->bHasPLTE) || (pData->bHasIDAT))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen > 4) /* it just can't be bigger than that! */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_INCLUDE_JNG /* length checks */
- if (pData->bHasJHDR)
- {
- if ((pData->iJHDRcolortype == 8) && (iRawlen != 1))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if ((pData->iJHDRcolortype == 10) && (iRawlen != 3))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if ((pData->iJHDRcolortype == 12) && (iRawlen != 2))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if ((pData->iJHDRcolortype == 14) && (iRawlen != 4))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
- else
-#endif /* MNG_INCLUDE_JNG */
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
- {
- if ((pData->iColortype == 0) && (iRawlen != 1))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if ((pData->iColortype == 2) && (iRawlen != 3))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if ((pData->iColortype == 3) && (iRawlen != 3))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if ((pData->iColortype == 4) && (iRawlen != 2))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if ((pData->iColortype == 6) && (iRawlen != 4))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
- else
- { /* global = empty or RGBA */
- if ((iRawlen != 0) && (iRawlen != 4))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_sbitp)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);
-
- if (iRawlen)
- {
-#ifdef MNG_INCLUDE_JNG
- if (pData->bHasJHDR)
- ((mng_sbitp)*ppChunk)->iType = pData->iJHDRcolortype;
- else
-#endif
- if (pData->bHasIHDR)
- ((mng_sbitp)*ppChunk)->iType = pData->iColortype;
- else /* global ! */
- ((mng_sbitp)*ppChunk)->iType = 6;
-
- if (iRawlen > 0)
- ((mng_sbitp)*ppChunk)->aBits [0] = *pRawdata;
- if (iRawlen > 1)
- ((mng_sbitp)*ppChunk)->aBits [1] = *(pRawdata+1);
- if (iRawlen > 2)
- ((mng_sbitp)*ppChunk)->aBits [2] = *(pRawdata+2);
- if (iRawlen > 3)
- ((mng_sbitp)*ppChunk)->aBits [3] = *(pRawdata+3);
-
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_SBIT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_sPLT
-READ_CHUNK (mng_read_splt)
-{
- mng_uint8p pTemp;
- mng_uint32 iNamelen;
- mng_uint8 iSampledepth;
- mng_uint32 iRemain;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_SPLT, MNG_LC_START);
-#endif
- /* sequence checks */
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) )
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (pData->bHasIDAT)
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen)
- {
- pTemp = find_null (pRawdata); /* find null-separator */
- /* not found inside input-data ? */
- if ((pTemp - pRawdata) > (mng_int32)iRawlen)
- MNG_ERROR (pData, MNG_NULLNOTFOUND);
-
- iNamelen = (mng_uint32)(pTemp - pRawdata);
- iSampledepth = *(pTemp+1);
- iRemain = (iRawlen - 2 - iNamelen);
-
- if ((iSampledepth != 1) && (iSampledepth != 2))
- MNG_ERROR (pData, MNG_INVSAMPLEDEPTH);
- /* check remaining length */
- if ( ((iSampledepth == 1) && (iRemain % 6 != 0)) ||
- ((iSampledepth == 2) && (iRemain % 10 != 0)) )
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- }
- else
- {
- pTemp = MNG_NULL;
- iNamelen = 0;
- iSampledepth = 0;
- iRemain = 0;
- }
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_spltp)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);
-
- if (iRawlen)
- {
- ((mng_spltp)*ppChunk)->iNamesize = iNamelen;
- ((mng_spltp)*ppChunk)->iSampledepth = iSampledepth;
-
- if (iSampledepth == 1)
- ((mng_spltp)*ppChunk)->iEntrycount = iRemain / 6;
- else
- ((mng_spltp)*ppChunk)->iEntrycount = iRemain / 10;
-
- if (iNamelen)
- {
- MNG_ALLOC (pData, ((mng_spltp)*ppChunk)->zName, iNamelen+1);
- MNG_COPY (((mng_spltp)*ppChunk)->zName, pRawdata, iNamelen);
- }
-
- if (iRemain)
- {
- MNG_ALLOC (pData, ((mng_spltp)*ppChunk)->pEntries, iRemain);
- MNG_COPY (((mng_spltp)*ppChunk)->pEntries, pTemp+2, iRemain);
- }
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_SPLT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_hIST
-READ_CHUNK (mng_read_hist)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_HIST, MNG_LC_START);
-#endif
- /* sequence checks */
- if ((!pData->bHasIHDR) && (!pData->bHasBASI) && (!pData->bHasDHDR) )
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if ((!pData->bHasPLTE) || (pData->bHasIDAT))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* length oke ? */
- if ( ((iRawlen & 0x01) != 0) || ((iRawlen >> 1) != pData->iPLTEcount) )
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- {
- mng_uint32 iX;
- /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_histp)*ppChunk)->iEntrycount = iRawlen >> 1;
-
- for (iX = 0; iX < (iRawlen >> 1); iX++)
- {
- ((mng_histp)*ppChunk)->aEntries [iX] = mng_get_uint16 (pRawdata);
- pRawdata += 2;
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_HIST, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_tIME
-READ_CHUNK (mng_read_time)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_TIME, MNG_LC_START);
-#endif
- /* sequence checks */
-#ifdef MNG_INCLUDE_JNG
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) && (!pData->bHasJHDR))
-#else
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) )
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen != 7) /* length must be exactly 7 */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-/* if (pData->fProcesstime) */ /* inform the application ? */
-/* {
-
- pData->fProcesstime ((mng_handle)pData, );
- } */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_timep)*ppChunk)->iYear = mng_get_uint16 (pRawdata);
- ((mng_timep)*ppChunk)->iMonth = *(pRawdata+2);
- ((mng_timep)*ppChunk)->iDay = *(pRawdata+3);
- ((mng_timep)*ppChunk)->iHour = *(pRawdata+4);
- ((mng_timep)*ppChunk)->iMinute = *(pRawdata+5);
- ((mng_timep)*ppChunk)->iSecond = *(pRawdata+6);
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_TIME, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-READ_CHUNK (mng_read_mhdr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_MHDR, MNG_LC_START);
-#endif
-
- if (pData->eSigtype != mng_it_mng) /* sequence checks */
- MNG_ERROR (pData, MNG_CHUNKNOTALLOWED);
-
- if (pData->bHasheader) /* can only be the first chunk! */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* correct length ? */
-#ifndef MNG_NO_OLD_VERSIONS
- if ((iRawlen != 28) && (iRawlen != 12))
-#else
- if ((iRawlen != 28))
-#endif
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- pData->bHasMHDR = MNG_TRUE; /* oh boy, a real MNG */
- pData->bHasheader = MNG_TRUE; /* we've got a header */
- pData->eImagetype = mng_it_mng; /* fill header fields */
- pData->iWidth = mng_get_uint32 (pRawdata);
- pData->iHeight = mng_get_uint32 (pRawdata+4);
- pData->iTicks = mng_get_uint32 (pRawdata+8);
-
-#ifndef MNG_NO_OLD_VERSIONS
- if (iRawlen == 28) /* proper MHDR ? */
- {
-#endif
- pData->iLayercount = mng_get_uint32 (pRawdata+12);
- pData->iFramecount = mng_get_uint32 (pRawdata+16);
- pData->iPlaytime = mng_get_uint32 (pRawdata+20);
- pData->iSimplicity = mng_get_uint32 (pRawdata+24);
-
-#ifndef MNG_NO_OLD_VERSIONS
- pData->bPreDraft48 = MNG_FALSE;
- }
- else /* probably pre-draft48 then */
- {
- pData->iLayercount = 0;
- pData->iFramecount = 0;
- pData->iPlaytime = 0;
- pData->iSimplicity = 0;
-
- pData->bPreDraft48 = MNG_TRUE;
- }
-#endif
- /* predict alpha-depth */
- if ((pData->iSimplicity & 0x00000001) == 0)
-#ifndef MNG_NO_16BIT_SUPPORT
- pData->iAlphadepth = 16; /* no indicators = assume the worst */
-#else
- pData->iAlphadepth = 8; /* anything else = assume the worst */
-#endif
- else
- if ((pData->iSimplicity & 0x00000008) == 0)
- pData->iAlphadepth = 0; /* no transparency at all */
- else
- if ((pData->iSimplicity & 0x00000140) == 0x00000040)
- pData->iAlphadepth = 1; /* no semi-transparency guaranteed */
- else
-#ifndef MNG_NO_16BIT_SUPPORT
- pData->iAlphadepth = 16; /* anything else = assume the worst */
-#else
- pData->iAlphadepth = 8; /* anything else = assume the worst */
-#endif
-
-#ifdef MNG_INCLUDE_JNG /* can we handle the complexity ? */
- if (pData->iSimplicity & 0x0000FC00)
-#else
- if (pData->iSimplicity & 0x0000FC10)
-#endif
- MNG_ERROR (pData, MNG_MNGTOOCOMPLEX);
- /* fits on maximum canvas ? */
- if ((pData->iWidth > pData->iMaxwidth) || (pData->iHeight > pData->iMaxheight))
- MNG_WARNING (pData, MNG_IMAGETOOLARGE);
-
- if (pData->fProcessheader) /* inform the app ? */
- if (!pData->fProcessheader (((mng_handle)pData), pData->iWidth, pData->iHeight))
- MNG_ERROR (pData, MNG_APPMISCERROR);
-
- pData->iImagelevel++; /* one level deeper */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_mhdrp)*ppChunk)->iWidth = pData->iWidth;
- ((mng_mhdrp)*ppChunk)->iHeight = pData->iHeight;
- ((mng_mhdrp)*ppChunk)->iTicks = pData->iTicks;
- ((mng_mhdrp)*ppChunk)->iLayercount = pData->iLayercount;
- ((mng_mhdrp)*ppChunk)->iFramecount = pData->iFramecount;
- ((mng_mhdrp)*ppChunk)->iPlaytime = pData->iPlaytime;
- ((mng_mhdrp)*ppChunk)->iSimplicity = pData->iSimplicity;
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_MHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-READ_CHUNK (mng_read_mend)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_MEND, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen > 0) /* must not contain data! */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- { /* do something */
- mng_retcode iRetcode = mng_process_display_mend (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- if (!pData->iTotalframes) /* save totals */
- pData->iTotalframes = pData->iFrameseq;
- if (!pData->iTotallayers)
- pData->iTotallayers = pData->iLayerseq;
- if (!pData->iTotalplaytime)
- pData->iTotalplaytime = pData->iFrametime;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
- pData->bHasMHDR = MNG_FALSE; /* end of the line, bro! */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_MEND, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_LOOP
-READ_CHUNK (mng_read_loop)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_LOOP, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (!pData->bCacheplayback) /* must store playback info to work!! */
- MNG_ERROR (pData, MNG_LOOPWITHCACHEOFF);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen >= 5) /* length checks */
- {
- if (iRawlen >= 6)
- {
- if ((iRawlen - 6) % 4 != 0)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
- }
- else
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_uint8 iLevel;
- mng_uint32 iRepeat;
- mng_uint8 iTermination = 0;
- mng_uint32 iItermin = 1;
- mng_uint32 iItermax = 0x7fffffffL;
- mng_retcode iRetcode;
-
- pData->bHasLOOP = MNG_TRUE; /* indicate we're inside a loop */
-
- iLevel = *pRawdata; /* determine the fields for processing */
-
-#ifndef MNG_NO_OLD_VERSIONS
- if (pData->bPreDraft48)
- {
- iTermination = *(pRawdata+1);
-
- iRepeat = mng_get_uint32 (pRawdata+2);
- }
- else
-#endif
- iRepeat = mng_get_uint32 (pRawdata+1);
-
- if (iRawlen >= 6)
- {
-#ifndef MNG_NO_OLD_VERSIONS
- if (!pData->bPreDraft48)
-#endif
- iTermination = *(pRawdata+5);
-
- if (iRawlen >= 10)
- {
- iItermin = mng_get_uint32 (pRawdata+6);
-
- if (iRawlen >= 14)
- {
- iItermax = mng_get_uint32 (pRawdata+10);
-
- /* TODO: process signals */
-
- }
- }
- }
- /* create the LOOP ani-object */
- iRetcode = mng_create_ani_loop (pData, iLevel, iRepeat, iTermination,
- iItermin, iItermax, 0, 0);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* skip till matching ENDL if iteration=0 */
- if ((!pData->bSkipping) && (iRepeat == 0))
- pData->bSkipping = MNG_TRUE;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- if (iRawlen >= 5) /* store the fields */
- {
- ((mng_loopp)*ppChunk)->iLevel = *pRawdata;
-
-#ifndef MNG_NO_OLD_VERSIONS
- if (pData->bPreDraft48)
- {
- ((mng_loopp)*ppChunk)->iTermination = *(pRawdata+1);
- ((mng_loopp)*ppChunk)->iRepeat = mng_get_uint32 (pRawdata+2);
- }
- else
-#endif
- {
- ((mng_loopp)*ppChunk)->iRepeat = mng_get_uint32 (pRawdata+1);
- }
-
- if (iRawlen >= 6)
- {
-#ifndef MNG_NO_OLD_VERSIONS
- if (!pData->bPreDraft48)
-#endif
- ((mng_loopp)*ppChunk)->iTermination = *(pRawdata+5);
-
- if (iRawlen >= 10)
- {
- ((mng_loopp)*ppChunk)->iItermin = mng_get_uint32 (pRawdata+6);
-
-#ifndef MNG_NO_LOOP_SIGNALS_SUPPORTED
- if (iRawlen >= 14)
- {
- ((mng_loopp)*ppChunk)->iItermax = mng_get_uint32 (pRawdata+10);
- ((mng_loopp)*ppChunk)->iCount = (iRawlen - 14) / 4;
-
- if (((mng_loopp)*ppChunk)->iCount)
- {
- MNG_ALLOC (pData, ((mng_loopp)*ppChunk)->pSignals,
- ((mng_loopp)*ppChunk)->iCount << 2);
-
-#ifndef MNG_BIGENDIAN_SUPPORTED
- {
- mng_uint32 iX;
- mng_uint8p pIn = pRawdata + 14;
- mng_uint32p pOut = (mng_uint32p)((mng_loopp)*ppChunk)->pSignals;
-
- for (iX = 0; iX < ((mng_loopp)*ppChunk)->iCount; iX++)
- {
- *pOut++ = mng_get_uint32 (pIn);
- pIn += 4;
- }
- }
-#else
- MNG_COPY (((mng_loopp)*ppChunk)->pSignals, pRawdata + 14,
- ((mng_loopp)*ppChunk)->iCount << 2);
-#endif /* !MNG_BIGENDIAN_SUPPORTED */
- }
- }
-#endif
- }
- }
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_LOOP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_LOOP
-READ_CHUNK (mng_read_endl)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_ENDL, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen != 1) /* length must be exactly 1 */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- if (pData->bHasLOOP) /* are we really processing a loop ? */
- {
- mng_uint8 iLevel = *pRawdata; /* get the nest level */
- /* create an ENDL animation object */
- mng_retcode iRetcode = mng_create_ani_endl (pData, iLevel);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-/* {
- mng_ani_endlp pENDL = (mng_ani_endlp)pData->pLastaniobj;
-
- iRetcode = pENDL->sHeader.fProcess (pData, pENDL);
-
- if (iRetcode)
- return iRetcode;
- } */
- }
- else
- MNG_ERROR (pData, MNG_NOMATCHINGLOOP);
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_endlp)*ppChunk)->iLevel = *pRawdata;
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_ENDL, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_DEFI
-READ_CHUNK (mng_read_defi)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_DEFI, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* check the length */
- if ((iRawlen != 2) && (iRawlen != 3) && (iRawlen != 4) &&
- (iRawlen != 12) && (iRawlen != 28))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_retcode iRetcode;
-
- pData->iDEFIobjectid = mng_get_uint16 (pRawdata);
-
- if (iRawlen > 2)
- {
- pData->bDEFIhasdonotshow = MNG_TRUE;
- pData->iDEFIdonotshow = *(pRawdata+2);
- }
- else
- {
- pData->bDEFIhasdonotshow = MNG_FALSE;
- pData->iDEFIdonotshow = 0;
- }
-
- if (iRawlen > 3)
- {
- pData->bDEFIhasconcrete = MNG_TRUE;
- pData->iDEFIconcrete = *(pRawdata+3);
- }
- else
- {
- pData->bDEFIhasconcrete = MNG_FALSE;
- pData->iDEFIconcrete = 0;
- }
-
- if (iRawlen > 4)
- {
- pData->bDEFIhasloca = MNG_TRUE;
- pData->iDEFIlocax = mng_get_int32 (pRawdata+4);
- pData->iDEFIlocay = mng_get_int32 (pRawdata+8);
- }
- else
- {
- pData->bDEFIhasloca = MNG_FALSE;
- pData->iDEFIlocax = 0;
- pData->iDEFIlocay = 0;
- }
-
- if (iRawlen > 12)
- {
- pData->bDEFIhasclip = MNG_TRUE;
- pData->iDEFIclipl = mng_get_int32 (pRawdata+12);
- pData->iDEFIclipr = mng_get_int32 (pRawdata+16);
- pData->iDEFIclipt = mng_get_int32 (pRawdata+20);
- pData->iDEFIclipb = mng_get_int32 (pRawdata+24);
- }
- else
- {
- pData->bDEFIhasclip = MNG_FALSE;
- pData->iDEFIclipl = 0;
- pData->iDEFIclipr = 0;
- pData->iDEFIclipt = 0;
- pData->iDEFIclipb = 0;
- }
- /* create an animation object */
- iRetcode = mng_create_ani_defi (pData);
-
- if (!iRetcode) /* do display processing */
- iRetcode = mng_process_display_defi (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_defip)*ppChunk)->iObjectid = mng_get_uint16 (pRawdata);
-
- if (iRawlen > 2)
- {
- ((mng_defip)*ppChunk)->bHasdonotshow = MNG_TRUE;
- ((mng_defip)*ppChunk)->iDonotshow = *(pRawdata+2);
- }
- else
- ((mng_defip)*ppChunk)->bHasdonotshow = MNG_FALSE;
-
- if (iRawlen > 3)
- {
- ((mng_defip)*ppChunk)->bHasconcrete = MNG_TRUE;
- ((mng_defip)*ppChunk)->iConcrete = *(pRawdata+3);
- }
- else
- ((mng_defip)*ppChunk)->bHasconcrete = MNG_FALSE;
-
- if (iRawlen > 4)
- {
- ((mng_defip)*ppChunk)->bHasloca = MNG_TRUE;
- ((mng_defip)*ppChunk)->iXlocation = mng_get_int32 (pRawdata+4);
- ((mng_defip)*ppChunk)->iYlocation = mng_get_int32 (pRawdata+8);
- }
- else
- ((mng_defip)*ppChunk)->bHasloca = MNG_FALSE;
-
- if (iRawlen > 12)
- {
- ((mng_defip)*ppChunk)->bHasclip = MNG_TRUE;
- ((mng_defip)*ppChunk)->iLeftcb = mng_get_int32 (pRawdata+12);
- ((mng_defip)*ppChunk)->iRightcb = mng_get_int32 (pRawdata+16);
- ((mng_defip)*ppChunk)->iTopcb = mng_get_int32 (pRawdata+20);
- ((mng_defip)*ppChunk)->iBottomcb = mng_get_int32 (pRawdata+24);
- }
- else
- ((mng_defip)*ppChunk)->bHasclip = MNG_FALSE;
-
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_DEFI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_BASI
-READ_CHUNK (mng_read_basi)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_BASI, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* check the length */
- if ((iRawlen != 13) && (iRawlen != 19) && (iRawlen != 21) && (iRawlen != 22))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- pData->bHasBASI = MNG_TRUE; /* inside a BASI-IEND block now */
- /* store interesting fields */
- pData->iDatawidth = mng_get_uint32 (pRawdata);
- pData->iDataheight = mng_get_uint32 (pRawdata+4);
- pData->iBitdepth = *(pRawdata+8);
- pData->iColortype = *(pRawdata+9);
- pData->iCompression = *(pRawdata+10);
- pData->iFilter = *(pRawdata+11);
- pData->iInterlace = *(pRawdata+12);
-
-
-#if defined(MNG_NO_1_2_4BIT_SUPPORT) || defined(MNG_NO_16BIT_SUPPORT)
- pData->iPNGmult = 1;
- pData->iPNGdepth = pData->iBitdepth;
-#endif
-
-#ifdef MNG_NO_1_2_4BIT_SUPPORT
- if (pData->iBitdepth < 8)
- pData->iBitdepth = 8;
-#endif
-#ifdef MNG_NO_16BIT_SUPPORT
- if (pData->iBitdepth > 8)
- {
- pData->iBitdepth = 8;
- pData->iPNGmult = 2;
- }
-#endif
-
- if ((pData->iBitdepth != 8) /* parameter validity checks */
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- && (pData->iBitdepth != 1) &&
- (pData->iBitdepth != 2) &&
- (pData->iBitdepth != 4)
-#endif
-#ifndef MNG_NO_16BIT_SUPPORT
- && (pData->iBitdepth != 16)
-#endif
- )
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
- if ((pData->iColortype != MNG_COLORTYPE_GRAY ) &&
- (pData->iColortype != MNG_COLORTYPE_RGB ) &&
- (pData->iColortype != MNG_COLORTYPE_INDEXED) &&
- (pData->iColortype != MNG_COLORTYPE_GRAYA ) &&
- (pData->iColortype != MNG_COLORTYPE_RGBA ) )
- MNG_ERROR (pData, MNG_INVALIDCOLORTYPE);
-
- if ((pData->iColortype == MNG_COLORTYPE_INDEXED) && (pData->iBitdepth > 8))
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
- if (((pData->iColortype == MNG_COLORTYPE_RGB ) ||
- (pData->iColortype == MNG_COLORTYPE_GRAYA ) ||
- (pData->iColortype == MNG_COLORTYPE_RGBA ) ) &&
- (pData->iBitdepth < 8 ) )
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
- if (pData->iCompression != MNG_COMPRESSION_DEFLATE)
- MNG_ERROR (pData, MNG_INVALIDCOMPRESS);
-
-#if defined(FILTER192) || defined(FILTER193)
- if ((pData->iFilter != MNG_FILTER_ADAPTIVE ) &&
-#if defined(FILTER192) && defined(FILTER193)
- (pData->iFilter != MNG_FILTER_DIFFERING) &&
- (pData->iFilter != MNG_FILTER_NOFILTER ) )
-#else
-#ifdef FILTER192
- (pData->iFilter != MNG_FILTER_DIFFERING) )
-#else
- (pData->iFilter != MNG_FILTER_NOFILTER ) )
-#endif
-#endif
- MNG_ERROR (pData, MNG_INVALIDFILTER);
-#else
- if (pData->iFilter)
- MNG_ERROR (pData, MNG_INVALIDFILTER);
-#endif
-
- if ((pData->iInterlace != MNG_INTERLACE_NONE ) &&
- (pData->iInterlace != MNG_INTERLACE_ADAM7) )
- MNG_ERROR (pData, MNG_INVALIDINTERLACE);
-
- pData->iImagelevel++; /* one level deeper */
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_uint16 iRed = 0;
- mng_uint16 iGreen = 0;
- mng_uint16 iBlue = 0;
- mng_bool bHasalpha = MNG_FALSE;
- mng_uint16 iAlpha = 0xFFFF;
- mng_uint8 iViewable = 0;
- mng_retcode iRetcode;
-
- if (iRawlen > 13) /* get remaining fields, if any */
- {
- iRed = mng_get_uint16 (pRawdata+13);
- iGreen = mng_get_uint16 (pRawdata+15);
- iBlue = mng_get_uint16 (pRawdata+17);
- }
-
- if (iRawlen > 19)
- {
- bHasalpha = MNG_TRUE;
- iAlpha = mng_get_uint16 (pRawdata+19);
- }
-
- if (iRawlen > 21)
- iViewable = *(pRawdata+21);
- /* create an animation object */
- iRetcode = mng_create_ani_basi (pData, iRed, iGreen, iBlue,
- bHasalpha, iAlpha, iViewable);
-
-/* if (!iRetcode)
- iRetcode = mng_process_display_basi (pData, iRed, iGreen, iBlue,
- bHasalpha, iAlpha, iViewable); */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_basip)*ppChunk)->iWidth = mng_get_uint32 (pRawdata);
- ((mng_basip)*ppChunk)->iHeight = mng_get_uint32 (pRawdata+4);
-#ifdef MNG_NO_16BIT_SUPPORT
- if (*(pRawdata+8) > 8)
- ((mng_basip)*ppChunk)->iBitdepth = 8;
- else
-#endif
- ((mng_basip)*ppChunk)->iBitdepth = *(pRawdata+8);
- ((mng_basip)*ppChunk)->iColortype = *(pRawdata+9);
- ((mng_basip)*ppChunk)->iCompression = *(pRawdata+10);
- ((mng_basip)*ppChunk)->iFilter = *(pRawdata+11);
- ((mng_basip)*ppChunk)->iInterlace = *(pRawdata+12);
-
- if (iRawlen > 13)
- {
- ((mng_basip)*ppChunk)->iRed = mng_get_uint16 (pRawdata+13);
- ((mng_basip)*ppChunk)->iGreen = mng_get_uint16 (pRawdata+15);
- ((mng_basip)*ppChunk)->iBlue = mng_get_uint16 (pRawdata+17);
- }
-
- if (iRawlen > 19)
- ((mng_basip)*ppChunk)->iAlpha = mng_get_uint16 (pRawdata+19);
-
- if (iRawlen > 21)
- ((mng_basip)*ppChunk)->iViewable = *(pRawdata+21);
-
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_BASI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_CLON
-READ_CHUNK (mng_read_clon)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_CLON, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* check the length */
- if ((iRawlen != 4) && (iRawlen != 5) && (iRawlen != 6) &&
- (iRawlen != 7) && (iRawlen != 16))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_uint16 iSourceid, iCloneid;
- mng_uint8 iClonetype = 0;
- mng_bool bHasdonotshow = MNG_FALSE;
- mng_uint8 iDonotshow = 0;
- mng_uint8 iConcrete = 0;
- mng_bool bHasloca = MNG_FALSE;
- mng_uint8 iLocationtype = 0;
- mng_int32 iLocationx = 0;
- mng_int32 iLocationy = 0;
- mng_retcode iRetcode;
-
- iSourceid = mng_get_uint16 (pRawdata);
- iCloneid = mng_get_uint16 (pRawdata+2);
-
- if (iRawlen > 4)
- iClonetype = *(pRawdata+4);
-
- if (iRawlen > 5)
- {
- bHasdonotshow = MNG_TRUE;
- iDonotshow = *(pRawdata+5);
- }
-
- if (iRawlen > 6)
- iConcrete = *(pRawdata+6);
-
- if (iRawlen > 7)
- {
- bHasloca = MNG_TRUE;
- iLocationtype = *(pRawdata+7);
- iLocationx = mng_get_int32 (pRawdata+8);
- iLocationy = mng_get_int32 (pRawdata+12);
- }
-
- iRetcode = mng_create_ani_clon (pData, iSourceid, iCloneid, iClonetype,
- bHasdonotshow, iDonotshow, iConcrete,
- bHasloca, iLocationtype, iLocationx, iLocationy);
-
-/* if (!iRetcode)
- iRetcode = mng_process_display_clon (pData, iSourceid, iCloneid, iClonetype,
- bHasdonotshow, iDonotshow, iConcrete,
- bHasloca, iLocationtype, iLocationx,
- iLocationy); */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_clonp)*ppChunk)->iSourceid = mng_get_uint16 (pRawdata);
- ((mng_clonp)*ppChunk)->iCloneid = mng_get_uint16 (pRawdata+2);
-
- if (iRawlen > 4)
- ((mng_clonp)*ppChunk)->iClonetype = *(pRawdata+4);
-
- if (iRawlen > 5)
- ((mng_clonp)*ppChunk)->iDonotshow = *(pRawdata+5);
-
- if (iRawlen > 6)
- ((mng_clonp)*ppChunk)->iConcrete = *(pRawdata+6);
-
- if (iRawlen > 7)
- {
- ((mng_clonp)*ppChunk)->bHasloca = MNG_TRUE;
- ((mng_clonp)*ppChunk)->iLocationtype = *(pRawdata+7);
- ((mng_clonp)*ppChunk)->iLocationx = mng_get_int32 (pRawdata+8);
- ((mng_clonp)*ppChunk)->iLocationy = mng_get_int32 (pRawdata+12);
- }
- else
- {
- ((mng_clonp)*ppChunk)->bHasloca = MNG_FALSE;
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_CLON, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_PAST
-READ_CHUNK (mng_read_past)
-{
-#if defined(MNG_STORE_CHUNKS) || defined(MNG_SUPPORT_DISPLAY)
- mng_retcode iRetcode;
- mng_uint16 iTargetid;
- mng_uint8 iTargettype;
- mng_int32 iTargetx;
- mng_int32 iTargety;
- mng_uint32 iCount;
- mng_uint32 iSize;
- mng_ptr pSources;
- mng_uint32 iX;
- mng_past_sourcep pSource;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_PAST, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- /* check the length */
- if ((iRawlen < 41) || (((iRawlen - 11) % 30) != 0))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#if defined(MNG_STORE_CHUNKS) || defined(MNG_SUPPORT_DISPLAY)
- iTargetid = mng_get_uint16 (pRawdata);
- iTargettype = *(pRawdata+2);
- iTargetx = mng_get_int32 (pRawdata+3);
- iTargety = mng_get_int32 (pRawdata+7);
- iCount = ((iRawlen - 11) / 30); /* how many entries again? */
- iSize = iCount * sizeof (mng_past_source);
-
- pRawdata += 11;
- /* get a buffer for all the source blocks */
- MNG_ALLOC (pData, pSources, iSize);
-
- pSource = (mng_past_sourcep)pSources;
-
- for (iX = 0; iX < iCount; iX++) /* now copy the source blocks */
- {
- pSource->iSourceid = mng_get_uint16 (pRawdata);
- pSource->iComposition = *(pRawdata+2);
- pSource->iOrientation = *(pRawdata+3);
- pSource->iOffsettype = *(pRawdata+4);
- pSource->iOffsetx = mng_get_int32 (pRawdata+5);
- pSource->iOffsety = mng_get_int32 (pRawdata+9);
- pSource->iBoundarytype = *(pRawdata+13);
- pSource->iBoundaryl = mng_get_int32 (pRawdata+14);
- pSource->iBoundaryr = mng_get_int32 (pRawdata+18);
- pSource->iBoundaryt = mng_get_int32 (pRawdata+22);
- pSource->iBoundaryb = mng_get_int32 (pRawdata+26);
-
- pSource++;
- pRawdata += 30;
- }
-#endif
-
-#ifdef MNG_SUPPORT_DISPLAY
- { /* create playback object */
- iRetcode = mng_create_ani_past (pData, iTargetid, iTargettype, iTargetx,
- iTargety, iCount, pSources);
-
-/* if (!iRetcode)
- iRetcode = mng_process_display_past (pData, iTargetid, iTargettype, iTargetx,
- iTargety, iCount, pSources); */
-
- if (iRetcode) /* on error bail out */
- {
- MNG_FREEX (pData, pSources, iSize);
- return iRetcode;
- }
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- {
- MNG_FREEX (pData, pSources, iSize);
- return iRetcode;
- }
- /* store the fields */
- ((mng_pastp)*ppChunk)->iDestid = iTargetid;
- ((mng_pastp)*ppChunk)->iTargettype = iTargettype;
- ((mng_pastp)*ppChunk)->iTargetx = iTargetx;
- ((mng_pastp)*ppChunk)->iTargety = iTargety;
- ((mng_pastp)*ppChunk)->iCount = iCount;
- /* get a buffer & copy the source blocks */
- MNG_ALLOC (pData, ((mng_pastp)*ppChunk)->pSources, iSize);
- MNG_COPY (((mng_pastp)*ppChunk)->pSources, pSources, iSize);
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#if defined(MNG_STORE_CHUNKS) || defined(MNG_SUPPORT_DISPLAY)
- /* free the source block buffer */
- MNG_FREEX (pData, pSources, iSize);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_PAST, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_DISC
-READ_CHUNK (mng_read_disc)
-{
-#if defined(MNG_SUPPORT_DISPLAY) || defined(MNG_STORE_CHUNKS)
- mng_uint32 iCount;
- mng_uint16p pIds = MNG_NULL;
- mng_retcode iRetcode;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_DISC, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if ((iRawlen % 2) != 0) /* check the length */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#if defined(MNG_SUPPORT_DISPLAY) || defined(MNG_STORE_CHUNKS)
- iCount = (iRawlen / sizeof (mng_uint16));
-
- if (iCount)
- {
- MNG_ALLOC (pData, pIds, iRawlen);
-
-#ifndef MNG_BIGENDIAN_SUPPORTED
- {
- mng_uint32 iX;
- mng_uint8p pIn = pRawdata;
- mng_uint16p pOut = pIds;
-
- for (iX = 0; iX < iCount; iX++)
- {
- *pOut++ = mng_get_uint16 (pIn);
- pIn += 2;
- }
- }
-#else
- MNG_COPY (pIds, pRawdata, iRawlen);
-#endif /* !MNG_BIGENDIAN_SUPPORTED */
- }
-#endif
-
-#ifdef MNG_SUPPORT_DISPLAY
- { /* create playback object */
- iRetcode = mng_create_ani_disc (pData, iCount, pIds);
-
-/* if (!iRetcode)
- iRetcode = mng_process_display_disc (pData, iCount, pIds); */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_discp)*ppChunk)->iCount = iCount;
-
- if (iRawlen)
- {
- MNG_ALLOC (pData, ((mng_discp)*ppChunk)->pObjectids, iRawlen);
- MNG_COPY (((mng_discp)*ppChunk)->pObjectids, pIds, iRawlen);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#if defined(MNG_SUPPORT_DISPLAY) || defined(MNG_STORE_CHUNKS)
- if (iRawlen)
- MNG_FREEX (pData, pIds, iRawlen);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_DISC, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_BACK
-READ_CHUNK (mng_read_back)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_BACK, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* check the length */
- if ((iRawlen != 6) && (iRawlen != 7) && (iRawlen != 9) && (iRawlen != 10))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_retcode iRetcode;
- /* retrieve the fields */
- pData->bHasBACK = MNG_TRUE;
- pData->iBACKred = mng_get_uint16 (pRawdata);
- pData->iBACKgreen = mng_get_uint16 (pRawdata+2);
- pData->iBACKblue = mng_get_uint16 (pRawdata+4);
-
- if (iRawlen > 6)
- pData->iBACKmandatory = *(pRawdata+6);
- else
- pData->iBACKmandatory = 0;
-
- if (iRawlen > 7)
- pData->iBACKimageid = mng_get_uint16 (pRawdata+7);
- else
- pData->iBACKimageid = 0;
-
- if (iRawlen > 9)
- pData->iBACKtile = *(pRawdata+9);
- else
- pData->iBACKtile = 0;
-
- iRetcode = mng_create_ani_back (pData, pData->iBACKred, pData->iBACKgreen,
- pData->iBACKblue, pData->iBACKmandatory,
- pData->iBACKimageid, pData->iBACKtile);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_backp)*ppChunk)->iRed = mng_get_uint16 (pRawdata);
- ((mng_backp)*ppChunk)->iGreen = mng_get_uint16 (pRawdata+2);
- ((mng_backp)*ppChunk)->iBlue = mng_get_uint16 (pRawdata+4);
-
- if (iRawlen > 6)
- ((mng_backp)*ppChunk)->iMandatory = *(pRawdata+6);
-
- if (iRawlen > 7)
- ((mng_backp)*ppChunk)->iImageid = mng_get_uint16 (pRawdata+7);
-
- if (iRawlen > 9)
- ((mng_backp)*ppChunk)->iTile = *(pRawdata+9);
-
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_BACK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_FRAM
-READ_CHUNK (mng_read_fram)
-{
- mng_uint8p pTemp;
-#ifdef MNG_STORE_CHUNKS
- mng_uint32 iNamelen;
-#endif
- mng_uint32 iRemain;
- mng_uint32 iRequired = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_FRAM, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen <= 1) /* only framing-mode ? */
- {
-#ifdef MNG_STORE_CHUNKS
- iNamelen = 0; /* indicate so */
-#endif
- iRemain = 0;
- pTemp = MNG_NULL;
- }
- else
- {
- pTemp = find_null (pRawdata+1); /* find null-separator */
- /* not found inside input-data ? */
- if ((pTemp - pRawdata) > (mng_int32)iRawlen)
- pTemp = pRawdata + iRawlen; /* than remainder is name */
-
-#ifdef MNG_STORE_CHUNKS
- iNamelen = (mng_uint32)((pTemp - pRawdata) - 1);
-#endif
- iRemain = (mng_uint32)(iRawlen - (pTemp - pRawdata));
-
- if (iRemain) /* if there is remaining data it's less 1 byte */
- iRemain--;
-
- if ((iRemain) && (iRemain < 4)) /* remains must be empty or at least 4 bytes */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if (iRemain)
- {
- iRequired = 4; /* calculate and check required remaining length */
-
- if (*(pTemp+1)) { iRequired += 4; }
- if (*(pTemp+2)) { iRequired += 4; }
- if (*(pTemp+3)) { iRequired += 17; }
-
- if (*(pTemp+4))
- {
- if ((iRemain - iRequired) % 4 != 0)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
- else
- {
- if (iRemain != iRequired)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
- }
- }
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_uint8p pWork = pTemp;
- mng_uint8 iFramemode = 0;
- mng_uint8 iChangedelay = 0;
- mng_uint32 iDelay = 0;
- mng_uint8 iChangetimeout = 0;
- mng_uint32 iTimeout = 0;
- mng_uint8 iChangeclipping = 0;
- mng_uint8 iCliptype = 0;
- mng_int32 iClipl = 0;
- mng_int32 iClipr = 0;
- mng_int32 iClipt = 0;
- mng_int32 iClipb = 0;
- mng_retcode iRetcode;
-
- if (iRawlen) /* any data specified ? */
- {
- if (*(pRawdata)) /* save the new framing mode ? */
- {
- iFramemode = *(pRawdata);
-
-#ifndef MNG_NO_OLD_VERSIONS
- if (pData->bPreDraft48) /* old style input-stream ? */
- {
- switch (iFramemode)
- {
- case 0: { break; }
- case 1: { iFramemode = 3; break; }
- case 2: { iFramemode = 4; break; }
- case 3: { iFramemode = 1; break; }
- case 4: { iFramemode = 1; break; }
- case 5: { iFramemode = 2; break; }
- default: { iFramemode = 1; break; }
- }
- }
-#endif
- }
-
- if (iRemain)
- {
- iChangedelay = *(pWork+1);
- iChangetimeout = *(pWork+2);
- iChangeclipping = *(pWork+3);
- pWork += 5;
-
- if (iChangedelay) /* delay changed ? */
- {
- iDelay = mng_get_uint32 (pWork);
- pWork += 4;
- }
-
- if (iChangetimeout) /* timeout changed ? */
- {
- iTimeout = mng_get_uint32 (pWork);
- pWork += 4;
- }
-
- if (iChangeclipping) /* clipping changed ? */
- {
- iCliptype = *pWork;
- iClipl = mng_get_int32 (pWork+1);
- iClipr = mng_get_int32 (pWork+5);
- iClipt = mng_get_int32 (pWork+9);
- iClipb = mng_get_int32 (pWork+13);
- }
- }
- }
-
- iRetcode = mng_create_ani_fram (pData, iFramemode, iChangedelay, iDelay,
- iChangetimeout, iTimeout,
- iChangeclipping, iCliptype,
- iClipl, iClipr, iClipt, iClipb);
-
-/* if (!iRetcode)
- iRetcode = mng_process_display_fram (pData, iFramemode, iChangedelay, iDelay,
- iChangetimeout, iTimeout,
- iChangeclipping, iCliptype,
- iClipl, iClipr, iClipt, iClipb); */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_framp)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);
-
- if (iRawlen)
- {
- mng_uint8 iFramemode = *(pRawdata);
-
-#ifndef MNG_NO_OLD_VERSIONS
- if (pData->bPreDraft48) /* old style input-stream ? */
- {
- switch (iFramemode)
- {
- case 1: { iFramemode = 3; break; }
- case 2: { iFramemode = 4; break; }
- case 3: { iFramemode = 5; break; } /* TODO: provision for mode=5 ??? */
- case 4: { iFramemode = 1; break; }
- case 5: { iFramemode = 2; break; }
- default: { iFramemode = 1; break; }
- }
- }
-#endif
-
- ((mng_framp)*ppChunk)->iMode = iFramemode;
- ((mng_framp)*ppChunk)->iNamesize = iNamelen;
-
- if (iNamelen)
- {
- MNG_ALLOC (pData, ((mng_framp)*ppChunk)->zName, iNamelen+1);
- MNG_COPY (((mng_framp)*ppChunk)->zName, pRawdata+1, iNamelen);
- }
-
- if (iRemain)
- {
- ((mng_framp)*ppChunk)->iChangedelay = *(pTemp+1);
- ((mng_framp)*ppChunk)->iChangetimeout = *(pTemp+2);
- ((mng_framp)*ppChunk)->iChangeclipping = *(pTemp+3);
- ((mng_framp)*ppChunk)->iChangesyncid = *(pTemp+4);
-
- pTemp += 5;
-
- if (((mng_framp)*ppChunk)->iChangedelay)
- {
- ((mng_framp)*ppChunk)->iDelay = mng_get_uint32 (pTemp);
- pTemp += 4;
- }
-
- if (((mng_framp)*ppChunk)->iChangetimeout)
- {
- ((mng_framp)*ppChunk)->iTimeout = mng_get_uint32 (pTemp);
- pTemp += 4;
- }
-
- if (((mng_framp)*ppChunk)->iChangeclipping)
- {
- ((mng_framp)*ppChunk)->iBoundarytype = *pTemp;
- ((mng_framp)*ppChunk)->iBoundaryl = mng_get_int32 (pTemp+1);
- ((mng_framp)*ppChunk)->iBoundaryr = mng_get_int32 (pTemp+5);
- ((mng_framp)*ppChunk)->iBoundaryt = mng_get_int32 (pTemp+9);
- ((mng_framp)*ppChunk)->iBoundaryb = mng_get_int32 (pTemp+13);
- pTemp += 17;
- }
-
- if (((mng_framp)*ppChunk)->iChangesyncid)
- {
- ((mng_framp)*ppChunk)->iCount = (iRemain - iRequired) / 4;
-
- if (((mng_framp)*ppChunk)->iCount)
- {
- MNG_ALLOC (pData, ((mng_framp)*ppChunk)->pSyncids,
- ((mng_framp)*ppChunk)->iCount * 4);
-
-#ifndef MNG_BIGENDIAN_SUPPORTED
- {
- mng_uint32 iX;
- mng_uint32p pOut = ((mng_framp)*ppChunk)->pSyncids;
-
- for (iX = 0; iX < ((mng_framp)*ppChunk)->iCount; iX++)
- {
- *pOut++ = mng_get_uint32 (pTemp);
- pTemp += 4;
- }
- }
-#else
- MNG_COPY (((mng_framp)*ppChunk)->pSyncids, pTemp,
- ((mng_framp)*ppChunk)->iCount * 4);
-#endif /* !MNG_BIGENDIAN_SUPPORTED */
- }
- }
- }
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_FRAM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_MOVE
-READ_CHUNK (mng_read_move)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_MOVE, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen != 13) /* check the length */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_retcode iRetcode;
- /* create a MOVE animation object */
- iRetcode = mng_create_ani_move (pData, mng_get_uint16 (pRawdata),
- mng_get_uint16 (pRawdata+2),
- *(pRawdata+4),
- mng_get_int32 (pRawdata+5),
- mng_get_int32 (pRawdata+9));
-
-/* if (!iRetcode)
- iRetcode = mng_process_display_move (pData,
- mng_get_uint16 (pRawdata),
- mng_get_uint16 (pRawdata+2),
- *(pRawdata+4),
- mng_get_int32 (pRawdata+5),
- mng_get_int32 (pRawdata+9)); */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_movep)*ppChunk)->iFirstid = mng_get_uint16 (pRawdata);
- ((mng_movep)*ppChunk)->iLastid = mng_get_uint16 (pRawdata+2);
- ((mng_movep)*ppChunk)->iMovetype = *(pRawdata+4);
- ((mng_movep)*ppChunk)->iMovex = mng_get_int32 (pRawdata+5);
- ((mng_movep)*ppChunk)->iMovey = mng_get_int32 (pRawdata+9);
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_MOVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_CLIP
-READ_CHUNK (mng_read_clip)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_CLIP, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen != 21) /* check the length */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_retcode iRetcode;
- /* create a CLIP animation object */
- iRetcode = mng_create_ani_clip (pData, mng_get_uint16 (pRawdata),
- mng_get_uint16 (pRawdata+2),
- *(pRawdata+4),
- mng_get_int32 (pRawdata+5),
- mng_get_int32 (pRawdata+9),
- mng_get_int32 (pRawdata+13),
- mng_get_int32 (pRawdata+17));
-
-/* if (!iRetcode)
- iRetcode = mng_process_display_clip (pData,
- mng_get_uint16 (pRawdata),
- mng_get_uint16 (pRawdata+2),
- *(pRawdata+4),
- mng_get_int32 (pRawdata+5),
- mng_get_int32 (pRawdata+9),
- mng_get_int32 (pRawdata+13),
- mng_get_int32 (pRawdata+17)); */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_clipp)*ppChunk)->iFirstid = mng_get_uint16 (pRawdata);
- ((mng_clipp)*ppChunk)->iLastid = mng_get_uint16 (pRawdata+2);
- ((mng_clipp)*ppChunk)->iCliptype = *(pRawdata+4);
- ((mng_clipp)*ppChunk)->iClipl = mng_get_int32 (pRawdata+5);
- ((mng_clipp)*ppChunk)->iClipr = mng_get_int32 (pRawdata+9);
- ((mng_clipp)*ppChunk)->iClipt = mng_get_int32 (pRawdata+13);
- ((mng_clipp)*ppChunk)->iClipb = mng_get_int32 (pRawdata+17);
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_CLIP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_SHOW
-READ_CHUNK (mng_read_show)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_SHOW, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* check the length */
- if ((iRawlen != 0) && (iRawlen != 2) && (iRawlen != 4) && (iRawlen != 5))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_retcode iRetcode;
-
- if (iRawlen) /* determine parameters if any */
- {
- pData->iSHOWfromid = mng_get_uint16 (pRawdata);
-
- if (iRawlen > 2)
- pData->iSHOWtoid = mng_get_uint16 (pRawdata+2);
- else
- pData->iSHOWtoid = pData->iSHOWfromid;
-
- if (iRawlen > 4)
- pData->iSHOWmode = *(pRawdata+4);
- else
- pData->iSHOWmode = 0;
- }
- else /* use defaults then */
- {
- pData->iSHOWmode = 2;
- pData->iSHOWfromid = 1;
- pData->iSHOWtoid = 65535;
- }
- /* create a SHOW animation object */
- iRetcode = mng_create_ani_show (pData, pData->iSHOWfromid,
- pData->iSHOWtoid, pData->iSHOWmode);
-
- if (!iRetcode)
- iRetcode = mng_process_display_show (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_showp)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);
-
- if (iRawlen)
- {
- ((mng_showp)*ppChunk)->iFirstid = mng_get_uint16 (pRawdata);
-
- if (iRawlen > 2)
- ((mng_showp)*ppChunk)->iLastid = mng_get_uint16 (pRawdata+2);
- else
- ((mng_showp)*ppChunk)->iLastid = ((mng_showp)*ppChunk)->iFirstid;
-
- if (iRawlen > 4)
- ((mng_showp)*ppChunk)->iMode = *(pRawdata+4);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_SHOW, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_TERM
-READ_CHUNK (mng_read_term)
-{
- mng_uint8 iTermaction;
- mng_uint8 iIteraction = 0;
- mng_uint32 iDelay = 0;
- mng_uint32 iItermax = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_TERM, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- /* should be behind MHDR or SAVE !! */
- if ((!pData->bHasSAVE) && (pData->iChunkseq > 2))
- {
- pData->bMisplacedTERM = MNG_TRUE; /* indicate we found a misplaced TERM */
- /* and send a warning signal!!! */
- MNG_WARNING (pData, MNG_SEQUENCEERROR);
- }
-
- if (pData->bHasLOOP) /* no way, jose! */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (pData->bHasTERM) /* only 1 allowed! */
- MNG_ERROR (pData, MNG_MULTIPLEERROR);
- /* check the length */
- if ((iRawlen != 1) && (iRawlen != 10))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- pData->bHasTERM = MNG_TRUE;
-
- iTermaction = *pRawdata; /* get the fields */
-
- if (iRawlen > 1)
- {
- iIteraction = *(pRawdata+1);
- iDelay = mng_get_uint32 (pRawdata+2);
- iItermax = mng_get_uint32 (pRawdata+6);
- }
-
- if (pData->fProcessterm) /* inform the app ? */
- if (!pData->fProcessterm (((mng_handle)pData), iTermaction, iIteraction,
- iDelay, iItermax))
- MNG_ERROR (pData, MNG_APPMISCERROR);
-
-#ifdef MNG_SUPPORT_DISPLAY
- { /* create the TERM ani-object */
- mng_retcode iRetcode = mng_create_ani_term (pData, iTermaction, iIteraction,
- iDelay, iItermax);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* save for future reference */
- pData->pTermaniobj = pData->pLastaniobj;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_termp)*ppChunk)->iTermaction = iTermaction;
- ((mng_termp)*ppChunk)->iIteraction = iIteraction;
- ((mng_termp)*ppChunk)->iDelay = iDelay;
- ((mng_termp)*ppChunk)->iItermax = iItermax;
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_TERM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_SAVE
-READ_CHUNK (mng_read_save)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_SAVE, MNG_LC_START);
-#endif
- /* sequence checks */
- if ((!pData->bHasMHDR) || (pData->bHasSAVE))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- pData->bHasSAVE = MNG_TRUE;
-
- if (pData->fProcesssave) /* inform the application ? */
- {
- mng_bool bOke = pData->fProcesssave ((mng_handle)pData);
-
- if (!bOke)
- MNG_ERROR (pData, MNG_APPMISCERROR);
- }
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_retcode iRetcode;
-
-
- /* TODO: something with the parameters */
-
-
- /* create a SAVE animation object */
- iRetcode = mng_create_ani_save (pData);
-
- if (!iRetcode)
- iRetcode = mng_process_display_save (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_savep)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);
-
- if (iRawlen) /* not empty ? */
- {
- mng_uint8 iOtype = *pRawdata;
- mng_uint8 iEtype;
- mng_uint32 iCount = 0;
- mng_uint8p pTemp;
- mng_uint8p pNull;
- mng_uint32 iLen;
- mng_uint32 iOffset[2];
- mng_uint32 iStarttime[2];
- mng_uint32 iFramenr;
- mng_uint32 iLayernr;
- mng_uint32 iX;
- mng_save_entryp pEntry = MNG_NULL;
- mng_uint32 iNamesize;
-
- if ((iOtype != 4) && (iOtype != 8))
- MNG_ERROR (pData, MNG_INVOFFSETSIZE);
-
- ((mng_savep)*ppChunk)->iOffsettype = iOtype;
-
- for (iX = 0; iX < 2; iX++) /* do this twice to get the count first ! */
- {
- pTemp = pRawdata + 1;
- iLen = iRawlen - 1;
-
- if (iX) /* second run ? */
- {
- MNG_ALLOC (pData, pEntry, (iCount * sizeof (mng_save_entry)));
-
- ((mng_savep)*ppChunk)->iCount = iCount;
- ((mng_savep)*ppChunk)->pEntries = pEntry;
- }
-
- while (iLen) /* anything left ? */
- {
- iEtype = *pTemp; /* entrytype */
-
- if ((iEtype != 0) && (iEtype != 1) && (iEtype != 2) && (iEtype != 3))
- MNG_ERROR (pData, MNG_INVENTRYTYPE);
-
- pTemp++;
-
- if (iEtype > 1)
- {
- iOffset [0] = 0;
- iOffset [1] = 0;
- iStarttime [0] = 0;
- iStarttime [1] = 0;
- iLayernr = 0;
- iFramenr = 0;
- }
- else
- {
- if (iOtype == 4)
- {
- iOffset [0] = 0;
- iOffset [1] = mng_get_uint32 (pTemp);
-
- pTemp += 4;
- }
- else
- {
- iOffset [0] = mng_get_uint32 (pTemp);
- iOffset [1] = mng_get_uint32 (pTemp+4);
-
- pTemp += 8;
- }
-
- if (iEtype > 0)
- {
- iStarttime [0] = 0;
- iStarttime [1] = 0;
- iLayernr = 0;
- iFramenr = 0;
- }
- else
- {
- if (iOtype == 4)
- {
- iStarttime [0] = 0;
- iStarttime [1] = mng_get_uint32 (pTemp+0);
- iLayernr = mng_get_uint32 (pTemp+4);
- iFramenr = mng_get_uint32 (pTemp+8);
-
- pTemp += 12;
- }
- else
- {
- iStarttime [0] = mng_get_uint32 (pTemp+0);
- iStarttime [1] = mng_get_uint32 (pTemp+4);
- iLayernr = mng_get_uint32 (pTemp+8);
- iFramenr = mng_get_uint32 (pTemp+12);
-
- pTemp += 16;
- }
- }
- }
-
- pNull = find_null (pTemp); /* get the name length */
-
- if ((pNull - pRawdata) > (mng_int32)iRawlen)
- {
- iNamesize = iLen; /* no null found; so end of SAVE */
- iLen = 0;
- }
- else
- {
- iNamesize = pNull - pTemp; /* should be another entry */
- iLen -= iNamesize;
-
- if (!iLen) /* must not end with a null ! */
- MNG_ERROR (pData, MNG_ENDWITHNULL);
- }
-
- if (!pEntry)
- {
- iCount++;
- }
- else
- {
- pEntry->iEntrytype = iEtype;
- pEntry->iOffset [0] = iOffset [0];
- pEntry->iOffset [1] = iOffset [1];
- pEntry->iStarttime [0] = iStarttime [0];
- pEntry->iStarttime [1] = iStarttime [1];
- pEntry->iLayernr = iLayernr;
- pEntry->iFramenr = iFramenr;
- pEntry->iNamesize = iNamesize;
-
- if (iNamesize)
- {
- MNG_ALLOC (pData, pEntry->zName, iNamesize+1);
- MNG_COPY (pEntry->zName, pTemp, iNamesize);
- }
-
- pEntry++;
- }
-
- pTemp += iNamesize;
- }
- }
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_SAVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_SEEK
-READ_CHUNK (mng_read_seek)
-{
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_SEEK, MNG_LC_START);
-#endif
- /* sequence checks */
- if ((!pData->bHasMHDR) || (!pData->bHasSAVE))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_SUPPORT_DISPLAY
- /* create a SEEK animation object */
- iRetcode = mng_create_ani_seek (pData, iRawlen, (mng_pchar)pRawdata);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#endif /* MNG_SUPPORT_DISPLAY */
-
- if (pData->fProcessseek) /* inform the app ? */
- {
- mng_bool bOke;
- mng_pchar zName;
-
- MNG_ALLOC (pData, zName, iRawlen + 1);
-
- if (iRawlen)
- MNG_COPY (zName, pRawdata, iRawlen);
-
- bOke = pData->fProcessseek ((mng_handle)pData, zName);
-
- MNG_FREEX (pData, zName, iRawlen + 1);
-
- if (!bOke)
- MNG_ERROR (pData, MNG_APPMISCERROR);
- }
-
-#ifdef MNG_SUPPORT_DISPLAY
- /* do display processing of the SEEK */
- iRetcode = mng_process_display_seek (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_seekp)*ppChunk)->iNamesize = iRawlen;
-
- if (iRawlen)
- {
- MNG_ALLOC (pData, ((mng_seekp)*ppChunk)->zName, iRawlen+1);
- MNG_COPY (((mng_seekp)*ppChunk)->zName, pRawdata, iRawlen);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_SEEK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_eXPI
-READ_CHUNK (mng_read_expi)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_EXPI, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen < 3) /* check the length */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_expip)*ppChunk)->iSnapshotid = mng_get_uint16 (pRawdata);
- ((mng_expip)*ppChunk)->iNamesize = iRawlen - 2;
-
- if (((mng_expip)*ppChunk)->iNamesize)
- {
- MNG_ALLOC (pData, ((mng_expip)*ppChunk)->zName,
- ((mng_expip)*ppChunk)->iNamesize + 1);
- MNG_COPY (((mng_expip)*ppChunk)->zName, pRawdata+2,
- ((mng_expip)*ppChunk)->iNamesize);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_EXPI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_fPRI
-READ_CHUNK (mng_read_fpri)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_FPRI, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen != 2) /* must be two bytes long */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_fprip)*ppChunk)->iDeltatype = *pRawdata;
- ((mng_fprip)*ppChunk)->iPriority = *(pRawdata+1);
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_FPRI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_nEED
-MNG_LOCAL mng_bool CheckKeyword (mng_datap pData,
- mng_uint8p pKeyword)
-{
- mng_chunkid handled_chunks [] =
- {
- MNG_UINT_BACK, /* keep it sorted !!!! */
- MNG_UINT_BASI,
- MNG_UINT_CLIP,
- MNG_UINT_CLON,
-#ifndef MNG_NO_DELTA_PNG
-/* TODO: MNG_UINT_DBYK, */
-#endif
- MNG_UINT_DEFI,
-#ifndef MNG_NO_DELTA_PNG
- MNG_UINT_DHDR,
-#endif
- MNG_UINT_DISC,
-#ifndef MNG_NO_DELTA_PNG
-/* TODO: MNG_UINT_DROP, */
-#endif
- MNG_UINT_ENDL,
- MNG_UINT_FRAM,
- MNG_UINT_IDAT,
- MNG_UINT_IEND,
- MNG_UINT_IHDR,
-#ifndef MNG_NO_DELTA_PNG
-#ifdef MNG_INCLUDE_JNG
- MNG_UINT_IJNG,
-#endif
- MNG_UINT_IPNG,
-#endif
-#ifdef MNG_INCLUDE_JNG
- MNG_UINT_JDAA,
- MNG_UINT_JDAT,
- MNG_UINT_JHDR,
-/* TODO: MNG_UINT_JSEP, */
- MNG_UINT_JdAA,
-#endif
- MNG_UINT_LOOP,
- MNG_UINT_MAGN,
- MNG_UINT_MEND,
- MNG_UINT_MHDR,
- MNG_UINT_MOVE,
-/* TODO: MNG_UINT_ORDR, */
- MNG_UINT_PAST,
- MNG_UINT_PLTE,
-#ifndef MNG_NO_DELTA_PNG
- MNG_UINT_PPLT,
- MNG_UINT_PROM,
-#endif
- MNG_UINT_SAVE,
- MNG_UINT_SEEK,
- MNG_UINT_SHOW,
- MNG_UINT_TERM,
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
- MNG_UINT_adAT,
- MNG_UINT_ahDR,
-#endif
- MNG_UINT_bKGD,
- MNG_UINT_cHRM,
-/* TODO: MNG_UINT_eXPI, */
- MNG_UINT_evNT,
-/* TODO: MNG_UINT_fPRI, */
- MNG_UINT_gAMA,
-/* TODO: MNG_UINT_hIST, */
- MNG_UINT_iCCP,
- MNG_UINT_iTXt,
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- MNG_UINT_mpNG,
-#endif
- MNG_UINT_nEED,
-/* TODO: MNG_UINT_oFFs, */
-/* TODO: MNG_UINT_pCAL, */
-/* TODO: MNG_UINT_pHYg, */
-/* TODO: MNG_UINT_pHYs, */
-/* TODO: MNG_UINT_sBIT, */
-/* TODO: MNG_UINT_sCAL, */
-/* TODO: MNG_UINT_sPLT, */
- MNG_UINT_sRGB,
- MNG_UINT_tEXt,
- MNG_UINT_tIME,
- MNG_UINT_tRNS,
- MNG_UINT_zTXt,
- };
-
- mng_bool bOke = MNG_FALSE;
-
- if (pData->fProcessneed) /* does the app handle it ? */
- bOke = pData->fProcessneed ((mng_handle)pData, (mng_pchar)pKeyword);
-
- if (!bOke)
- { /* find the keyword length */
- mng_uint8p pNull = find_null (pKeyword);
-
- if (pNull - pKeyword == 4) /* test a chunk ? */
- { /* get the chunk-id */
- mng_chunkid iChunkid = (*pKeyword << 24) + (*(pKeyword+1) << 16) +
- (*(pKeyword+2) << 8) + (*(pKeyword+3) );
- /* binary search variables */
- mng_int32 iTop, iLower, iUpper, iMiddle;
- /* determine max index of table */
- iTop = (sizeof (handled_chunks) / sizeof (handled_chunks [0])) - 1;
-
- /* binary search; with 52 chunks, worst-case is 7 comparisons */
- iLower = 0;
- iMiddle = iTop >> 1;
- iUpper = iTop;
-
- do /* the binary search itself */
- {
- if (handled_chunks [iMiddle] < iChunkid)
- iLower = iMiddle + 1;
- else if (handled_chunks [iMiddle] > iChunkid)
- iUpper = iMiddle - 1;
- else
- {
- bOke = MNG_TRUE;
- break;
- }
-
- iMiddle = (iLower + iUpper) >> 1;
- }
- while (iLower <= iUpper);
- }
- /* test draft ? */
- if ((!bOke) && (pNull - pKeyword == 8) &&
- (*pKeyword == 'd') && (*(pKeyword+1) == 'r') &&
- (*(pKeyword+2) == 'a') && (*(pKeyword+3) == 'f') &&
- (*(pKeyword+4) == 't') && (*(pKeyword+5) == ' '))
- {
- mng_uint32 iDraft;
-
- iDraft = (*(pKeyword+6) - '0') * 10 + (*(pKeyword+7) - '0');
- bOke = (mng_bool)(iDraft <= MNG_MNG_DRAFT);
- }
- /* test MNG 1.0/1.1 ? */
- if ((!bOke) && (pNull - pKeyword == 7) &&
- (*pKeyword == 'M') && (*(pKeyword+1) == 'N') &&
- (*(pKeyword+2) == 'G') && (*(pKeyword+3) == '-') &&
- (*(pKeyword+4) == '1') && (*(pKeyword+5) == '.') &&
- ((*(pKeyword+6) == '0') || (*(pKeyword+6) == '1')))
- bOke = MNG_TRUE;
- /* test CACHEOFF ? */
- if ((!bOke) && (pNull - pKeyword == 8) &&
- (*pKeyword == 'C') && (*(pKeyword+1) == 'A') &&
- (*(pKeyword+2) == 'C') && (*(pKeyword+3) == 'H') &&
- (*(pKeyword+4) == 'E') && (*(pKeyword+5) == 'O') &&
- (*(pKeyword+6) == 'F') && (*(pKeyword+7) == 'F'))
- {
- if (!pData->pFirstaniobj) /* only if caching hasn't started yet ! */
- {
- bOke = MNG_TRUE;
- pData->bCacheplayback = MNG_FALSE;
- pData->bStorechunks = MNG_FALSE;
- }
- }
- }
-
- return bOke;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_nEED
-READ_CHUNK (mng_read_need)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_NEED, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen < 1) /* check the length */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- { /* let's check it */
- mng_bool bOke = MNG_TRUE;
- mng_pchar zKeywords;
- mng_uint8p pNull, pTemp;
-
- MNG_ALLOC (pData, zKeywords, iRawlen + 1);
-
- if (iRawlen)
- MNG_COPY (zKeywords, pRawdata, iRawlen);
-
- pTemp = (mng_uint8p)zKeywords;
- pNull = find_null (pTemp);
-
- while ((bOke) && (pNull < (mng_uint8p)zKeywords + iRawlen))
- {
- bOke = CheckKeyword (pData, pTemp);
- pTemp = pNull + 1;
- pNull = find_null (pTemp);
- }
-
- if (bOke)
- bOke = CheckKeyword (pData, pTemp);
-
- MNG_FREEX (pData, zKeywords, iRawlen + 1);
-
- if (!bOke)
- MNG_ERROR (pData, MNG_UNSUPPORTEDNEED);
- }
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_needp)*ppChunk)->iKeywordssize = iRawlen;
-
- if (iRawlen)
- {
- MNG_ALLOC (pData, ((mng_needp)*ppChunk)->zKeywords, iRawlen+1);
- MNG_COPY (((mng_needp)*ppChunk)->zKeywords, pRawdata, iRawlen);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_NEED, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_pHYg
-READ_CHUNK (mng_read_phyg)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_PHYG, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* it's 9 bytes or empty; no more, no less! */
- if ((iRawlen != 9) && (iRawlen != 0))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_phygp)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);
-
- if (iRawlen)
- {
- ((mng_phygp)*ppChunk)->iSizex = mng_get_uint32 (pRawdata);
- ((mng_phygp)*ppChunk)->iSizey = mng_get_uint32 (pRawdata+4);
- ((mng_phygp)*ppChunk)->iUnit = *(pRawdata+8);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_PHYG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_INCLUDE_JNG
-READ_CHUNK (mng_read_jhdr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_JHDR, MNG_LC_START);
-#endif
- /* sequence checks */
- if ((pData->eSigtype != mng_it_jng) && (pData->eSigtype != mng_it_mng))
- MNG_ERROR (pData, MNG_CHUNKNOTALLOWED);
-
- if ((pData->eSigtype == mng_it_jng) && (pData->iChunkseq > 1))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen != 16) /* length oke ? */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- /* inside a JHDR-IEND block now */
- pData->bHasJHDR = MNG_TRUE;
- /* and store interesting fields */
- pData->iDatawidth = mng_get_uint32 (pRawdata);
- pData->iDataheight = mng_get_uint32 (pRawdata+4);
- pData->iJHDRcolortype = *(pRawdata+8);
- pData->iJHDRimgbitdepth = *(pRawdata+9);
- pData->iJHDRimgcompression = *(pRawdata+10);
- pData->iJHDRimginterlace = *(pRawdata+11);
- pData->iJHDRalphabitdepth = *(pRawdata+12);
- pData->iJHDRalphacompression = *(pRawdata+13);
- pData->iJHDRalphafilter = *(pRawdata+14);
- pData->iJHDRalphainterlace = *(pRawdata+15);
-
-
-#if defined(MNG_NO_1_2_4BIT_SUPPORT) || defined(MNG_NO_16BIT_SUPPORT)
- pData->iPNGmult = 1;
- pData->iPNGdepth = pData->iJHDRalphabitdepth;
-#endif
-
-#ifdef MNG_NO_1_2_4BIT_SUPPORT
- if (pData->iJHDRalphabitdepth < 8)
- pData->iJHDRalphabitdepth = 8;
-#endif
-
-#ifdef MNG_NO_16BIT_SUPPORT
- if (pData->iJHDRalphabitdepth > 8)
- {
- pData->iPNGmult = 2;
- pData->iJHDRalphabitdepth = 8;
- }
-#endif
- /* parameter validity checks */
- if ((pData->iJHDRcolortype != MNG_COLORTYPE_JPEGGRAY ) &&
- (pData->iJHDRcolortype != MNG_COLORTYPE_JPEGCOLOR ) &&
- (pData->iJHDRcolortype != MNG_COLORTYPE_JPEGGRAYA ) &&
- (pData->iJHDRcolortype != MNG_COLORTYPE_JPEGCOLORA) )
- MNG_ERROR (pData, MNG_INVALIDCOLORTYPE);
-
- if ((pData->iJHDRimgbitdepth != MNG_BITDEPTH_JPEG8 ) &&
- (pData->iJHDRimgbitdepth != MNG_BITDEPTH_JPEG12 ) &&
- (pData->iJHDRimgbitdepth != MNG_BITDEPTH_JPEG8AND12) )
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
- if (pData->iJHDRimgcompression != MNG_COMPRESSION_BASELINEJPEG)
- MNG_ERROR (pData, MNG_INVALIDCOMPRESS);
-
- if ((pData->iJHDRimginterlace != MNG_INTERLACE_SEQUENTIAL ) &&
- (pData->iJHDRimginterlace != MNG_INTERLACE_PROGRESSIVE) )
- MNG_ERROR (pData, MNG_INVALIDINTERLACE);
-
- if ((pData->iJHDRcolortype == MNG_COLORTYPE_JPEGGRAYA ) ||
- (pData->iJHDRcolortype == MNG_COLORTYPE_JPEGCOLORA) )
- {
- if ((pData->iJHDRalphabitdepth != MNG_BITDEPTH_8 )
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- && (pData->iJHDRalphabitdepth != MNG_BITDEPTH_1 ) &&
- (pData->iJHDRalphabitdepth != MNG_BITDEPTH_2 ) &&
- (pData->iJHDRalphabitdepth != MNG_BITDEPTH_4 )
-#endif
-#ifndef MNG_NO_16BIT_SUPPORT
- && (pData->iJHDRalphabitdepth != MNG_BITDEPTH_16)
-#endif
- )
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
- if ((pData->iJHDRalphacompression != MNG_COMPRESSION_DEFLATE ) &&
- (pData->iJHDRalphacompression != MNG_COMPRESSION_BASELINEJPEG) )
- MNG_ERROR (pData, MNG_INVALIDCOMPRESS);
-
- if ((pData->iJHDRalphacompression == MNG_COMPRESSION_BASELINEJPEG) &&
- (pData->iJHDRalphabitdepth != MNG_BITDEPTH_8 ) )
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
-#if defined(FILTER192) || defined(FILTER193)
- if ((pData->iJHDRalphafilter != MNG_FILTER_ADAPTIVE ) &&
-#if defined(FILTER192) && defined(FILTER193)
- (pData->iJHDRalphafilter != MNG_FILTER_DIFFERING) &&
- (pData->iJHDRalphafilter != MNG_FILTER_NOFILTER ) )
-#else
-#ifdef FILTER192
- (pData->iJHDRalphafilter != MNG_FILTER_DIFFERING) )
-#else
- (pData->iJHDRalphafilter != MNG_FILTER_NOFILTER ) )
-#endif
-#endif
- MNG_ERROR (pData, MNG_INVALIDFILTER);
-#else
- if (pData->iJHDRalphafilter)
- MNG_ERROR (pData, MNG_INVALIDFILTER);
-#endif
-
- if ((pData->iJHDRalphainterlace != MNG_INTERLACE_NONE ) &&
- (pData->iJHDRalphainterlace != MNG_INTERLACE_ADAM7) )
- MNG_ERROR (pData, MNG_INVALIDINTERLACE);
-
- }
- else
- {
- if (pData->iJHDRalphabitdepth)
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
- if (pData->iJHDRalphacompression)
- MNG_ERROR (pData, MNG_INVALIDCOMPRESS);
-
- if (pData->iJHDRalphafilter)
- MNG_ERROR (pData, MNG_INVALIDFILTER);
-
- if (pData->iJHDRalphainterlace)
- MNG_ERROR (pData, MNG_INVALIDINTERLACE);
-
- }
-
- if (!pData->bHasheader) /* first chunk ? */
- {
- pData->bHasheader = MNG_TRUE; /* we've got a header */
- pData->eImagetype = mng_it_jng; /* then this must be a JNG */
- pData->iWidth = mng_get_uint32 (pRawdata);
- pData->iHeight = mng_get_uint32 (pRawdata+4);
- /* predict alpha-depth ! */
- if ((pData->iJHDRcolortype == MNG_COLORTYPE_JPEGGRAYA ) ||
- (pData->iJHDRcolortype == MNG_COLORTYPE_JPEGCOLORA) )
- pData->iAlphadepth = pData->iJHDRalphabitdepth;
- else
- pData->iAlphadepth = 0;
- /* fits on maximum canvas ? */
- if ((pData->iWidth > pData->iMaxwidth) || (pData->iHeight > pData->iMaxheight))
- MNG_WARNING (pData, MNG_IMAGETOOLARGE);
-
- if (pData->fProcessheader) /* inform the app ? */
- if (!pData->fProcessheader (((mng_handle)pData), pData->iWidth, pData->iHeight))
- MNG_ERROR (pData, MNG_APPMISCERROR);
-
- }
-
- pData->iColortype = 0; /* fake grayscale for other routines */
- pData->iImagelevel++; /* one level deeper */
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_retcode iRetcode = mng_process_display_jhdr (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_jhdrp)*ppChunk)->iWidth = mng_get_uint32 (pRawdata);
- ((mng_jhdrp)*ppChunk)->iHeight = mng_get_uint32 (pRawdata+4);
- ((mng_jhdrp)*ppChunk)->iColortype = *(pRawdata+8);
- ((mng_jhdrp)*ppChunk)->iImagesampledepth = *(pRawdata+9);
- ((mng_jhdrp)*ppChunk)->iImagecompression = *(pRawdata+10);
- ((mng_jhdrp)*ppChunk)->iImageinterlace = *(pRawdata+11);
- ((mng_jhdrp)*ppChunk)->iAlphasampledepth = *(pRawdata+12);
-#ifdef MNG_NO_16BIT_SUPPORT
- if (*(pRawdata+12) > 8)
- ((mng_jhdrp)*ppChunk)->iAlphasampledepth = 8;
-#endif
- ((mng_jhdrp)*ppChunk)->iAlphacompression = *(pRawdata+13);
- ((mng_jhdrp)*ppChunk)->iAlphafilter = *(pRawdata+14);
- ((mng_jhdrp)*ppChunk)->iAlphainterlace = *(pRawdata+15);
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_JHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#else
-#define read_jhdr 0
-#endif /* MNG_INCLUDE_JNG */
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_INCLUDE_JNG
-READ_CHUNK (mng_read_jdaa)
-{
-#if defined(MNG_SUPPORT_DISPLAY) || defined(MNG_STORE_CHUNKS)
- volatile mng_retcode iRetcode;
-
- iRetcode=MNG_NOERROR;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_JDAA, MNG_LC_START);
-#endif
- /* sequence checks */
- if ((!pData->bHasJHDR) && (!pData->bHasDHDR))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (pData->bHasJSEP)
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (pData->iJHDRalphacompression != MNG_COMPRESSION_BASELINEJPEG)
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen == 0) /* can never be empty */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- pData->bHasJDAA = MNG_TRUE; /* got some JDAA now, don't we */
-
-#ifdef MNG_SUPPORT_DISPLAY
- iRetcode = mng_process_display_jdaa (pData, iRawlen, pRawdata);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_jdaap)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);
- ((mng_jdaap)*ppChunk)->iDatasize = iRawlen;
-
- if (iRawlen != 0) /* is there any data ? */
- {
- MNG_ALLOC (pData, ((mng_jdaap)*ppChunk)->pData, iRawlen);
- MNG_COPY (((mng_jdaap)*ppChunk)->pData, pRawdata, iRawlen);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_JDAA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#else
-#define read_jdaa 0
-#endif /* MNG_INCLUDE_JNG */
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_INCLUDE_JNG
-READ_CHUNK (mng_read_jdat)
-{
-#if defined(MNG_SUPPORT_DISPLAY) || defined(MNG_STORE_CHUNKS)
- volatile mng_retcode iRetcode;
-
- iRetcode=MNG_NOERROR;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_JDAT, MNG_LC_START);
-#endif
- /* sequence checks */
- if ((!pData->bHasJHDR) && (!pData->bHasDHDR))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen == 0) /* can never be empty */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- pData->bHasJDAT = MNG_TRUE; /* got some JDAT now, don't we */
-
-#ifdef MNG_SUPPORT_DISPLAY
- iRetcode = mng_process_display_jdat (pData, iRawlen, pRawdata);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_jdatp)*ppChunk)->bEmpty = (mng_bool)(iRawlen == 0);
- ((mng_jdatp)*ppChunk)->iDatasize = iRawlen;
-
- if (iRawlen != 0) /* is there any data ? */
- {
- MNG_ALLOC (pData, ((mng_jdatp)*ppChunk)->pData, iRawlen);
- MNG_COPY (((mng_jdatp)*ppChunk)->pData, pRawdata, iRawlen);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_JDAT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#else
-#define read_jdat 0
-#endif /* MNG_INCLUDE_JNG */
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_INCLUDE_JNG
-READ_CHUNK (mng_read_jsep)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_JSEP, MNG_LC_START);
-#endif
-
- if (!pData->bHasJHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen != 0) /* must be empty ! */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- pData->bHasJSEP = MNG_TRUE; /* indicate we've had the 8-/12-bit separator */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_JSEP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#else
-#define read_jsep 0
-#endif /* MNG_INCLUDE_JNG */
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_NO_DELTA_PNG
-READ_CHUNK (mng_read_dhdr)
-{
- mng_uint8 iImagetype, iDeltatype;
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_DHDR, MNG_LC_START);
-#endif
-
- if (!pData->bHasMHDR) /* sequence checks */
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((pData->bHasIHDR) || (pData->bHasBASI) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* check for valid length */
- if ((iRawlen != 4) && (iRawlen != 12) && (iRawlen != 20))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- iImagetype = *(pRawdata+2); /* check fields for validity */
- iDeltatype = *(pRawdata+3);
-
- if (iImagetype > MNG_IMAGETYPE_JNG)
- MNG_ERROR (pData, MNG_INVIMAGETYPE);
-
- if (iDeltatype > MNG_DELTATYPE_NOCHANGE)
- MNG_ERROR (pData, MNG_INVDELTATYPE);
-
- if ((iDeltatype == MNG_DELTATYPE_REPLACE) && (iRawlen > 12))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if ((iDeltatype == MNG_DELTATYPE_NOCHANGE) && (iRawlen > 4))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- pData->bHasDHDR = MNG_TRUE; /* inside a DHDR-IEND block now */
- pData->iDeltatype = iDeltatype;
-
- pData->iImagelevel++; /* one level deeper */
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_uint16 iObjectid = mng_get_uint16 (pRawdata);
- mng_uint32 iBlockwidth = 0;
- mng_uint32 iBlockheight = 0;
- mng_uint32 iBlockx = 0;
- mng_uint32 iBlocky = 0;
- mng_retcode iRetcode;
-
- if (iRawlen > 4)
- {
- iBlockwidth = mng_get_uint32 (pRawdata+4);
- iBlockheight = mng_get_uint32 (pRawdata+8);
- }
-
- if (iRawlen > 12)
- {
- iBlockx = mng_get_uint32 (pRawdata+12);
- iBlocky = mng_get_uint32 (pRawdata+16);
- }
-
- iRetcode = mng_create_ani_dhdr (pData, iObjectid, iImagetype, iDeltatype,
- iBlockwidth, iBlockheight, iBlockx, iBlocky);
-
-/* if (!iRetcode)
- iRetcode = mng_process_display_dhdr (pData, iObjectid, iImagetype, iDeltatype,
- iBlockwidth, iBlockheight, iBlockx, iBlocky); */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_dhdrp)*ppChunk)->iObjectid = mng_get_uint16 (pRawdata);
- ((mng_dhdrp)*ppChunk)->iImagetype = iImagetype;
- ((mng_dhdrp)*ppChunk)->iDeltatype = iDeltatype;
-
- if (iRawlen > 4)
- {
- ((mng_dhdrp)*ppChunk)->iBlockwidth = mng_get_uint32 (pRawdata+4);
- ((mng_dhdrp)*ppChunk)->iBlockheight = mng_get_uint32 (pRawdata+8);
- }
-
- if (iRawlen > 12)
- {
- ((mng_dhdrp)*ppChunk)->iBlockx = mng_get_uint32 (pRawdata+12);
- ((mng_dhdrp)*ppChunk)->iBlocky = mng_get_uint32 (pRawdata+16);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_DHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_NO_DELTA_PNG
-READ_CHUNK (mng_read_prom)
-{
- mng_uint8 iColortype;
- mng_uint8 iSampledepth;
- mng_uint8 iFilltype;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_PROM, MNG_LC_START);
-#endif
- /* sequence checks */
- if ((!pData->bHasMHDR) || (!pData->bHasDHDR))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen != 3) /* gotta be exactly 3 bytes */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- iColortype = *pRawdata; /* check fields for validity */
- iSampledepth = *(pRawdata+1);
- iFilltype = *(pRawdata+2);
-
- if ((iColortype != MNG_COLORTYPE_GRAY ) &&
- (iColortype != MNG_COLORTYPE_RGB ) &&
- (iColortype != MNG_COLORTYPE_INDEXED) &&
- (iColortype != MNG_COLORTYPE_GRAYA ) &&
- (iColortype != MNG_COLORTYPE_RGBA ) )
- MNG_ERROR (pData, MNG_INVALIDCOLORTYPE);
-
-#ifdef MNG_NO_16BIT_SUPPORT
- if (iSampledepth == MNG_BITDEPTH_16 )
- iSampledepth = MNG_BITDEPTH_8;
-#endif
-
- if ((iSampledepth != MNG_BITDEPTH_1 ) &&
- (iSampledepth != MNG_BITDEPTH_2 ) &&
- (iSampledepth != MNG_BITDEPTH_4 ) &&
- (iSampledepth != MNG_BITDEPTH_8 )
-#ifndef MNG_NO_16BIT_SUPPORT
- && (iSampledepth != MNG_BITDEPTH_16)
-#endif
- )
- MNG_ERROR (pData, MNG_INVSAMPLEDEPTH);
-
- if ((iFilltype != MNG_FILLMETHOD_LEFTBITREPLICATE) &&
- (iFilltype != MNG_FILLMETHOD_ZEROFILL ) )
- MNG_ERROR (pData, MNG_INVFILLMETHOD);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_retcode iRetcode = mng_create_ani_prom (pData, iSampledepth,
- iColortype, iFilltype);
-
-/* if (!iRetcode)
- iRetcode = mng_process_display_prom (pData, iSampledepth,
- iColortype, iFilltype); */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_promp)*ppChunk)->iColortype = iColortype;
- ((mng_promp)*ppChunk)->iSampledepth = iSampledepth;
- ((mng_promp)*ppChunk)->iFilltype = iFilltype;
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_PROM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_NO_DELTA_PNG
-READ_CHUNK (mng_read_ipng)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_IPNG, MNG_LC_START);
-#endif
- /* sequence checks */
- if ((!pData->bHasMHDR) || (!pData->bHasDHDR))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen != 0) /* gotta be empty */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_retcode iRetcode = mng_create_ani_ipng (pData);
-
- if (!iRetcode)
- iRetcode = mng_process_display_ipng (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_IPNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_NO_DELTA_PNG
-READ_CHUNK (mng_read_pplt)
-{
- mng_uint8 iDeltatype;
- mng_uint8p pTemp;
- mng_uint32 iLen;
- mng_uint8 iX, iM;
- mng_uint32 iY;
- mng_uint32 iMax;
- mng_rgbpaltab aIndexentries;
- mng_uint8arr aAlphaentries;
- mng_uint8arr aUsedentries;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_PPLT, MNG_LC_START);
-#endif
- /* sequence checks */
- if ((!pData->bHasMHDR) && (!pData->bHasDHDR))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen < 1) /* must have at least 1 byte */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- iDeltatype = *pRawdata;
- /* valid ? */
- if (iDeltatype > MNG_DELTATYPE_DELTARGBA)
- MNG_ERROR (pData, MNG_INVDELTATYPE);
- /* must be indexed color ! */
- if (pData->iColortype != MNG_COLORTYPE_INDEXED)
- MNG_ERROR (pData, MNG_INVALIDCOLORTYPE);
-
- pTemp = pRawdata + 1;
- iLen = iRawlen - 1;
- iMax = 0;
-
- for (iY = 0; iY < 256; iY++) /* reset arrays */
- {
- aIndexentries [iY].iRed = 0;
- aIndexentries [iY].iGreen = 0;
- aIndexentries [iY].iBlue = 0;
- aAlphaentries [iY] = 255;
- aUsedentries [iY] = 0;
- }
-
- while (iLen) /* as long as there are entries left ... */
- {
- mng_uint32 iDiff;
-
- if (iLen < 2)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- iX = *pTemp; /* get start and end index */
- iM = *(pTemp+1);
-
- if (iM < iX)
- MNG_ERROR (pData, MNG_INVALIDINDEX);
-
- if ((mng_uint32)iM >= iMax) /* determine highest used index */
- iMax = (mng_uint32)iM + 1;
-
- pTemp += 2;
- iLen -= 2;
- iDiff = (iM - iX + 1);
- if ((iDeltatype == MNG_DELTATYPE_REPLACERGB ) ||
- (iDeltatype == MNG_DELTATYPE_DELTARGB ) )
- iDiff = iDiff * 3;
- else
- if ((iDeltatype == MNG_DELTATYPE_REPLACERGBA) ||
- (iDeltatype == MNG_DELTATYPE_DELTARGBA ) )
- iDiff = iDiff * 4;
-
- if (iLen < iDiff)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- if ((iDeltatype == MNG_DELTATYPE_REPLACERGB ) ||
- (iDeltatype == MNG_DELTATYPE_DELTARGB ) )
- {
- for (iY = (mng_uint32)iX; iY <= (mng_uint32)iM; iY++)
- {
- aIndexentries [iY].iRed = *pTemp;
- aIndexentries [iY].iGreen = *(pTemp+1);
- aIndexentries [iY].iBlue = *(pTemp+2);
- aUsedentries [iY] = 1;
-
- pTemp += 3;
- iLen -= 3;
- }
- }
- else
- if ((iDeltatype == MNG_DELTATYPE_REPLACEALPHA) ||
- (iDeltatype == MNG_DELTATYPE_DELTAALPHA ) )
- {
- for (iY = (mng_uint32)iX; iY <= (mng_uint32)iM; iY++)
- {
- aAlphaentries [iY] = *pTemp;
- aUsedentries [iY] = 1;
-
- pTemp++;
- iLen--;
- }
- }
- else
- {
- for (iY = (mng_uint32)iX; iY <= (mng_uint32)iM; iY++)
- {
- aIndexentries [iY].iRed = *pTemp;
- aIndexentries [iY].iGreen = *(pTemp+1);
- aIndexentries [iY].iBlue = *(pTemp+2);
- aAlphaentries [iY] = *(pTemp+3);
- aUsedentries [iY] = 1;
-
- pTemp += 4;
- iLen -= 4;
- }
- }
- }
-
- switch (pData->iBitdepth) /* check maximum allowed entries for bitdepth */
- {
- case MNG_BITDEPTH_1 : {
- if (iMax > 2)
- MNG_ERROR (pData, MNG_INVALIDINDEX);
- break;
- }
- case MNG_BITDEPTH_2 : {
- if (iMax > 4)
- MNG_ERROR (pData, MNG_INVALIDINDEX);
- break;
- }
- case MNG_BITDEPTH_4 : {
- if (iMax > 16)
- MNG_ERROR (pData, MNG_INVALIDINDEX);
- break;
- }
- }
-
-#ifdef MNG_SUPPORT_DISPLAY
- { /* create animation object */
- mng_retcode iRetcode = mng_create_ani_pplt (pData, iDeltatype, iMax,
- aIndexentries, aAlphaentries,
- aUsedentries);
-
-/* if (!iRetcode)
- iRetcode = mng_process_display_pplt (pData, iDeltatype, iMax, aIndexentries,
- aAlphaentries, aUsedentries); */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_ppltp)*ppChunk)->iDeltatype = iDeltatype;
- ((mng_ppltp)*ppChunk)->iCount = iMax;
-
- for (iY = 0; iY < 256; iY++)
- {
- ((mng_ppltp)*ppChunk)->aEntries [iY].iRed = aIndexentries [iY].iRed;
- ((mng_ppltp)*ppChunk)->aEntries [iY].iGreen = aIndexentries [iY].iGreen;
- ((mng_ppltp)*ppChunk)->aEntries [iY].iBlue = aIndexentries [iY].iBlue;
- ((mng_ppltp)*ppChunk)->aEntries [iY].iAlpha = aAlphaentries [iY];
- ((mng_ppltp)*ppChunk)->aEntries [iY].bUsed = (mng_bool)(aUsedentries [iY]);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_PPLT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_NO_DELTA_PNG
-#ifdef MNG_INCLUDE_JNG
-READ_CHUNK (mng_read_ijng)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_IJNG, MNG_LC_START);
-#endif
- /* sequence checks */
- if ((!pData->bHasMHDR) || (!pData->bHasDHDR))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen != 0) /* gotta be empty */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_retcode iRetcode = mng_create_ani_ijng (pData);
-
- if (!iRetcode)
- iRetcode = mng_process_display_ijng (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_IJNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_NO_DELTA_PNG
-READ_CHUNK (mng_read_drop)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_DROP, MNG_LC_START);
-#endif
- /* sequence checks */
- if ((!pData->bHasMHDR) || (!pData->bHasDHDR))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* check length */
- if ((iRawlen < 4) || ((iRawlen % 4) != 0))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_dropp)*ppChunk)->iCount = iRawlen / 4;
-
- if (iRawlen)
- {
- mng_uint32 iX;
- mng_uint8p pTemp = pRawdata;
- mng_uint32p pEntry;
-
- MNG_ALLOC (pData, pEntry, iRawlen);
-
- ((mng_dropp)*ppChunk)->pChunknames = (mng_ptr)pEntry;
-
- for (iX = 0; iX < iRawlen / 4; iX++)
- {
- *pEntry = mng_get_uint32 (pTemp);
-
- pTemp += 4;
- pEntry++;
- }
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_DROP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_DBYK
-READ_CHUNK (mng_read_dbyk)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_DBYK, MNG_LC_START);
-#endif
- /* sequence checks */
- if ((!pData->bHasMHDR) || (!pData->bHasDHDR))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen < 6) /* must be at least 6 long */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_dbykp)*ppChunk)->iChunkname = mng_get_uint32 (pRawdata);
- ((mng_dbykp)*ppChunk)->iPolarity = *(pRawdata+4);
- ((mng_dbykp)*ppChunk)->iKeywordssize = iRawlen - 5;
-
- if (iRawlen > 5)
- {
- MNG_ALLOC (pData, ((mng_dbykp)*ppChunk)->zKeywords, iRawlen-4);
- MNG_COPY (((mng_dbykp)*ppChunk)->zKeywords, pRawdata+5, iRawlen-5);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_DBYK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_ORDR
-READ_CHUNK (mng_read_ordr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_ORDR, MNG_LC_START);
-#endif
- /* sequence checks */
- if ((!pData->bHasMHDR) || (!pData->bHasDHDR))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* check length */
- if ((iRawlen < 5) || ((iRawlen % 5) != 0))
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
-
-
- /* TODO: something !!! */
-
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_ordrp)*ppChunk)->iCount = iRawlen / 5;
-
- if (iRawlen)
- {
- mng_uint32 iX;
- mng_ordr_entryp pEntry;
- mng_uint8p pTemp = pRawdata;
-
- MNG_ALLOC (pData, pEntry, iRawlen);
-
- ((mng_ordrp)*ppChunk)->pEntries = pEntry;
-
- for (iX = 0; iX < iRawlen / 5; iX++)
- {
- pEntry->iChunkname = mng_get_uint32 (pTemp);
- pEntry->iOrdertype = *(pTemp+4);
-
- pTemp += 5;
- pEntry++;
- }
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_ORDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_MAGN
-READ_CHUNK (mng_read_magn)
-{
- mng_uint16 iFirstid, iLastid;
- mng_uint8 iMethodX, iMethodY;
- mng_uint16 iMX, iMY, iML, iMR, iMT, iMB;
- mng_bool bFaulty;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_MAGN, MNG_LC_START);
-#endif
- /* sequence checks */
-#ifdef MNG_SUPPORT_JNG
- if ((!pData->bHasMHDR) || (pData->bHasIHDR) || (pData->bHasDHDR) || (pData->bHasJHDR))
-#else
- if ((!pData->bHasMHDR) || (pData->bHasIHDR) || (pData->bHasDHDR))
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* check length */
- if (iRawlen > 20)
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- /* following is an ugly hack to allow faulty layout caused by previous
- versions of libmng and MNGeye, which wrote MAGN with a 16-bit
- MethodX/MethodY (as opposed to the proper 8-bit as defined in the spec!) */
-
- if ((iRawlen == 6) || (iRawlen == 8) || (iRawlen == 10) || (iRawlen == 12) ||
- (iRawlen == 14) || (iRawlen == 16) || (iRawlen == 20))
- bFaulty = MNG_TRUE; /* these lengths are all wrong */
- else /* length 18 can be right or wrong !!! */
- if ((iRawlen == 18) && (mng_get_uint16 (pRawdata+4) <= 5) &&
- (mng_get_uint16 (pRawdata+6) < 256) &&
- (mng_get_uint16 (pRawdata+8) < 256) &&
- (mng_get_uint16 (pRawdata+10) < 256) &&
- (mng_get_uint16 (pRawdata+12) < 256) &&
- (mng_get_uint16 (pRawdata+14) < 256) &&
- (mng_get_uint16 (pRawdata+16) < 256))
- bFaulty = MNG_TRUE; /* this is very likely the wrong layout */
- else
- bFaulty = MNG_FALSE; /* all other cases are handled as right */
-
- if (bFaulty) /* wrong layout ? */
- {
- if (iRawlen > 0) /* get the fields */
- iFirstid = mng_get_uint16 (pRawdata);
- else
- iFirstid = 0;
-
- if (iRawlen > 2)
- iLastid = mng_get_uint16 (pRawdata+2);
- else
- iLastid = iFirstid;
-
- if (iRawlen > 4)
- iMethodX = (mng_uint8)(mng_get_uint16 (pRawdata+4));
- else
- iMethodX = 0;
-
- if (iRawlen > 6)
- iMX = mng_get_uint16 (pRawdata+6);
- else
- iMX = 1;
-
- if (iRawlen > 8)
- iMY = mng_get_uint16 (pRawdata+8);
- else
- iMY = iMX;
-
- if (iRawlen > 10)
- iML = mng_get_uint16 (pRawdata+10);
- else
- iML = iMX;
-
- if (iRawlen > 12)
- iMR = mng_get_uint16 (pRawdata+12);
- else
- iMR = iMX;
-
- if (iRawlen > 14)
- iMT = mng_get_uint16 (pRawdata+14);
- else
- iMT = iMY;
-
- if (iRawlen > 16)
- iMB = mng_get_uint16 (pRawdata+16);
- else
- iMB = iMY;
-
- if (iRawlen > 18)
- iMethodY = (mng_uint8)(mng_get_uint16 (pRawdata+18));
- else
- iMethodY = iMethodX;
- }
- else /* proper layout !!!! */
- {
- if (iRawlen > 0) /* get the fields */
- iFirstid = mng_get_uint16 (pRawdata);
- else
- iFirstid = 0;
-
- if (iRawlen > 2)
- iLastid = mng_get_uint16 (pRawdata+2);
- else
- iLastid = iFirstid;
-
- if (iRawlen > 4)
- iMethodX = *(pRawdata+4);
- else
- iMethodX = 0;
-
- if (iRawlen > 5)
- iMX = mng_get_uint16 (pRawdata+5);
- else
- iMX = 1;
-
- if (iRawlen > 7)
- iMY = mng_get_uint16 (pRawdata+7);
- else
- iMY = iMX;
-
- if (iRawlen > 9)
- iML = mng_get_uint16 (pRawdata+9);
- else
- iML = iMX;
-
- if (iRawlen > 11)
- iMR = mng_get_uint16 (pRawdata+11);
- else
- iMR = iMX;
-
- if (iRawlen > 13)
- iMT = mng_get_uint16 (pRawdata+13);
- else
- iMT = iMY;
-
- if (iRawlen > 15)
- iMB = mng_get_uint16 (pRawdata+15);
- else
- iMB = iMY;
-
- if (iRawlen > 17)
- iMethodY = *(pRawdata+17);
- else
- iMethodY = iMethodX;
- }
- /* check field validity */
- if ((iMethodX > 5) || (iMethodY > 5))
- MNG_ERROR (pData, MNG_INVALIDMETHOD);
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- mng_retcode iRetcode;
-
- iRetcode = mng_create_ani_magn (pData, iFirstid, iLastid, iMethodX,
- iMX, iMY, iML, iMR, iMT, iMB, iMethodY);
-
-/* if (!iRetcode)
- iRetcode = mng_process_display_magn (pData, iFirstid, iLastid, iMethodX,
- iMX, iMY, iML, iMR, iMT, iMB, iMethodY); */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_magnp)*ppChunk)->iFirstid = iFirstid;
- ((mng_magnp)*ppChunk)->iLastid = iLastid;
- ((mng_magnp)*ppChunk)->iMethodX = iMethodX;
- ((mng_magnp)*ppChunk)->iMX = iMX;
- ((mng_magnp)*ppChunk)->iMY = iMY;
- ((mng_magnp)*ppChunk)->iML = iML;
- ((mng_magnp)*ppChunk)->iMR = iMR;
- ((mng_magnp)*ppChunk)->iMT = iMT;
- ((mng_magnp)*ppChunk)->iMB = iMB;
- ((mng_magnp)*ppChunk)->iMethodY = iMethodY;
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_MAGN, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-READ_CHUNK (mng_read_mpng)
-{
- mng_uint32 iFramewidth;
- mng_uint32 iFrameheight;
- mng_uint16 iTickspersec;
- mng_uint32 iFramessize;
- mng_uint32 iCompressedsize;
-#if defined(MNG_SUPPORT_DISPLAY) || defined(MNG_STORE_CHUNKS)
- mng_retcode iRetcode;
- mng_uint16 iNumplays;
- mng_uint32 iBufsize;
- mng_uint8p pBuf = 0;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_MPNG, MNG_LC_START);
-#endif
- /* sequence checks */
- if (!pData->bHasIHDR)
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen < 41) /* length must be at least 41 */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
- iFramewidth = mng_get_int32 (pRawdata);
- if (iFramewidth == 0) /* frame_width must not be zero */
- MNG_ERROR (pData, MNG_INVALIDWIDTH);
-
- iFrameheight = mng_get_int32 (pRawdata+4);
- if (iFrameheight == 0) /* frame_height must not be zero */
- MNG_ERROR (pData, MNG_INVALIDHEIGHT);
-
- iTickspersec = mng_get_uint16 (pRawdata+10);
- if (iTickspersec == 0) /* delay_den must not be zero */
- MNG_ERROR (pData, MNG_INVALIDFIELDVAL);
-
- if (*(pRawdata+12) != 0) /* only deflate compression-method allowed */
- MNG_ERROR (pData, MNG_INVALIDCOMPRESS);
-
-#if defined(MNG_SUPPORT_DISPLAY) || defined(MNG_STORE_CHUNKS)
- iNumplays = mng_get_uint16 (pRawdata+8);
- iCompressedsize = (mng_uint32)(iRawlen - 13);
-#endif
-
-#ifdef MNG_SUPPORT_DISPLAY
- {
- iRetcode = mng_inflate_buffer (pData, pRawdata+13, iCompressedsize,
- &pBuf, &iBufsize, &iFramessize);
- if (iRetcode) /* on error bail out */
- {
- MNG_FREEX (pData, pBuf, iBufsize);
- return iRetcode;
- }
-
- if (iFramessize % 26)
- {
- MNG_FREEX (pData, pBuf, iBufsize);
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
-
- iRetcode = mng_create_mpng_obj (pData, iFramewidth, iFrameheight, iNumplays,
- iTickspersec, iFramessize, pBuf);
- if (iRetcode) /* on error bail out */
- {
- MNG_FREEX (pData, pBuf, iBufsize);
- return iRetcode;
- }
- }
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the fields */
- ((mng_mpngp)*ppChunk)->iFramewidth = iFramewidth;
- ((mng_mpngp)*ppChunk)->iFrameheight = iFrameheight;
- ((mng_mpngp)*ppChunk)->iNumplays = iNumplays;
- ((mng_mpngp)*ppChunk)->iTickspersec = iTickspersec;
- ((mng_mpngp)*ppChunk)->iCompressionmethod = *(pRawdata+14);
-
-#ifndef MNG_SUPPORT_DISPLAY
- iRetcode = mng_inflate_buffer (pData, pRawdata+13, iCompressedsize,
- &pBuf, &iBufsize, &iFramessize);
- if (iRetcode) /* on error bail out */
- {
- MNG_FREEX (pData, pBuf, iBufsize);
- return iRetcode;
- }
-
- if (iFramessize % 26)
- {
- MNG_FREEX (pData, pBuf, iBufsize);
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- }
-#endif
-
- if (iFramessize)
- {
- MNG_ALLOCX (pData, ((mng_mpngp)*ppChunk)->pFrames, iFramessize);
- if (((mng_mpngp)*ppChunk)->pFrames == 0)
- {
- MNG_FREEX (pData, pBuf, iBufsize);
- MNG_ERROR (pData, MNG_OUTOFMEMORY);
- }
-
- ((mng_mpngp)*ppChunk)->iFramessize = iFramessize;
- MNG_COPY (((mng_mpngp)*ppChunk)->pFrames, pBuf, iFramessize);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#if defined(MNG_SUPPORT_DISPLAY) || defined(MNG_STORE_CHUNKS)
- MNG_FREEX (pData, pBuf, iBufsize);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_MPNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifndef MNG_SKIPCHUNK_evNT
-READ_CHUNK (mng_read_evnt)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_EVNT, MNG_LC_START);
-#endif
- /* sequence checks */
- if ((!pData->bHasMHDR) || (pData->bHasSAVE))
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
-
- if (iRawlen < 2) /* must have at least 1 entry ! */
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
-
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_SUPPORT_DYNAMICMNG)
- {
- if (iRawlen) /* not empty ? */
- {
- mng_retcode iRetcode;
- mng_uint8p pTemp;
- mng_uint8p pNull;
- mng_uint32 iLen;
- mng_uint8 iEventtype;
- mng_uint8 iMasktype;
- mng_int32 iLeft;
- mng_int32 iRight;
- mng_int32 iTop;
- mng_int32 iBottom;
- mng_uint16 iObjectid;
- mng_uint8 iIndex;
- mng_uint32 iNamesize;
-
- pTemp = pRawdata;
- iLen = iRawlen;
-
- while (iLen) /* anything left ? */
- {
- iEventtype = *pTemp; /* eventtype */
- if (iEventtype > 5)
- MNG_ERROR (pData, MNG_INVALIDEVENT);
-
- pTemp++;
-
- iMasktype = *pTemp; /* masktype */
- if (iMasktype > 5)
- MNG_ERROR (pData, MNG_INVALIDMASK);
-
- pTemp++;
- iLen -= 2;
-
- iLeft = 0;
- iRight = 0;
- iTop = 0;
- iBottom = 0;
- iObjectid = 0;
- iIndex = 0;
-
- switch (iMasktype)
- {
- case 1 :
- {
- if (iLen > 16)
- {
- iLeft = mng_get_int32 (pTemp);
- iRight = mng_get_int32 (pTemp+4);
- iTop = mng_get_int32 (pTemp+8);
- iBottom = mng_get_int32 (pTemp+12);
- pTemp += 16;
- iLen -= 16;
- }
- else
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- break;
- }
- case 2 :
- {
- if (iLen > 2)
- {
- iObjectid = mng_get_uint16 (pTemp);
- pTemp += 2;
- iLen -= 2;
- }
- else
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- break;
- }
- case 3 :
- {
- if (iLen > 3)
- {
- iObjectid = mng_get_uint16 (pTemp);
- iIndex = *(pTemp+2);
- pTemp += 3;
- iLen -= 3;
- }
- else
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- break;
- }
- case 4 :
- {
- if (iLen > 18)
- {
- iLeft = mng_get_int32 (pTemp);
- iRight = mng_get_int32 (pTemp+4);
- iTop = mng_get_int32 (pTemp+8);
- iBottom = mng_get_int32 (pTemp+12);
- iObjectid = mng_get_uint16 (pTemp+16);
- pTemp += 18;
- iLen -= 18;
- }
- else
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- break;
- }
- case 5 :
- {
- if (iLen > 19)
- {
- iLeft = mng_get_int32 (pTemp);
- iRight = mng_get_int32 (pTemp+4);
- iTop = mng_get_int32 (pTemp+8);
- iBottom = mng_get_int32 (pTemp+12);
- iObjectid = mng_get_uint16 (pTemp+16);
- iIndex = *(pTemp+18);
- pTemp += 19;
- iLen -= 19;
- }
- else
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- break;
- }
- }
-
- pNull = find_null (pTemp); /* get the name length */
-
- if ((pNull - pTemp) > (mng_int32)iLen)
- {
- iNamesize = iLen; /* no null found; so end of evNT */
- iLen = 0;
- }
- else
- {
- iNamesize = pNull - pTemp; /* should be another entry */
- iLen = iLen - iNamesize - 1;
-
- if (!iLen) /* must not end with a null ! */
- MNG_ERROR (pData, MNG_ENDWITHNULL);
- }
-
- iRetcode = mng_create_event (pData, iEventtype, iMasktype, iLeft, iRight,
- iTop, iBottom, iObjectid, iIndex,
- iNamesize, (mng_pchar)pTemp);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- pTemp = pTemp + iNamesize + 1;
- }
- }
- }
-#endif /* MNG_SUPPORT_DISPLAY && MNG_SUPPORT_DYNAMICMNG */
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- if (iRawlen) /* not empty ? */
- {
- mng_uint32 iX;
- mng_uint32 iCount = 0;
- mng_uint8p pTemp;
- mng_uint8p pNull;
- mng_uint32 iLen;
- mng_uint8 iEventtype;
- mng_uint8 iMasktype;
- mng_int32 iLeft;
- mng_int32 iRight;
- mng_int32 iTop;
- mng_int32 iBottom;
- mng_uint16 iObjectid;
- mng_uint8 iIndex;
- mng_uint32 iNamesize;
- mng_evnt_entryp pEntry = MNG_NULL;
-
- for (iX = 0; iX < 2; iX++) /* do this twice to get the count first ! */
- {
- pTemp = pRawdata;
- iLen = iRawlen;
-
- if (iX) /* second run ? */
- {
- MNG_ALLOC (pData, pEntry, (iCount * sizeof (mng_evnt_entry)));
-
- ((mng_evntp)*ppChunk)->iCount = iCount;
- ((mng_evntp)*ppChunk)->pEntries = pEntry;
- }
-
- while (iLen) /* anything left ? */
- {
- iEventtype = *pTemp; /* eventtype */
- if (iEventtype > 5)
- MNG_ERROR (pData, MNG_INVALIDEVENT);
-
- pTemp++;
-
- iMasktype = *pTemp; /* masktype */
- if (iMasktype > 5)
- MNG_ERROR (pData, MNG_INVALIDMASK);
-
- pTemp++;
- iLen -= 2;
-
- iLeft = 0;
- iRight = 0;
- iTop = 0;
- iBottom = 0;
- iObjectid = 0;
- iIndex = 0;
-
- switch (iMasktype)
- {
- case 1 :
- {
- if (iLen > 16)
- {
- iLeft = mng_get_int32 (pTemp);
- iRight = mng_get_int32 (pTemp+4);
- iTop = mng_get_int32 (pTemp+8);
- iBottom = mng_get_int32 (pTemp+12);
- pTemp += 16;
- iLen -= 16;
- }
- else
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- break;
- }
- case 2 :
- {
- if (iLen > 2)
- {
- iObjectid = mng_get_uint16 (pTemp);
- pTemp += 2;
- iLen -= 2;
- }
- else
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- break;
- }
- case 3 :
- {
- if (iLen > 3)
- {
- iObjectid = mng_get_uint16 (pTemp);
- iIndex = *(pTemp+2);
- pTemp += 3;
- iLen -= 3;
- }
- else
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- break;
- }
- case 4 :
- {
- if (iLen > 18)
- {
- iLeft = mng_get_int32 (pTemp);
- iRight = mng_get_int32 (pTemp+4);
- iTop = mng_get_int32 (pTemp+8);
- iBottom = mng_get_int32 (pTemp+12);
- iObjectid = mng_get_uint16 (pTemp+16);
- pTemp += 18;
- iLen -= 18;
- }
- else
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- break;
- }
- case 5 :
- {
- if (iLen > 19)
- {
- iLeft = mng_get_int32 (pTemp);
- iRight = mng_get_int32 (pTemp+4);
- iTop = mng_get_int32 (pTemp+8);
- iBottom = mng_get_int32 (pTemp+12);
- iObjectid = mng_get_uint16 (pTemp+16);
- iIndex = *(pTemp+18);
- pTemp += 19;
- iLen -= 19;
- }
- else
- MNG_ERROR (pData, MNG_INVALIDLENGTH);
- break;
- }
- }
-
- pNull = find_null (pTemp); /* get the name length */
-
- if ((pNull - pTemp) > (mng_int32)iLen)
- {
- iNamesize = iLen; /* no null found; so end of evNT */
- iLen = 0;
- }
- else
- {
- iNamesize = pNull - pTemp; /* should be another entry */
- iLen = iLen - iNamesize - 1;
-
- if (!iLen) /* must not end with a null ! */
- MNG_ERROR (pData, MNG_ENDWITHNULL);
- }
-
- if (!iX)
- {
- iCount++;
- }
- else
- {
- pEntry->iEventtype = iEventtype;
- pEntry->iMasktype = iMasktype;
- pEntry->iLeft = iLeft;
- pEntry->iRight = iRight;
- pEntry->iTop = iTop;
- pEntry->iBottom = iBottom;
- pEntry->iObjectid = iObjectid;
- pEntry->iIndex = iIndex;
- pEntry->iSegmentnamesize = iNamesize;
-
- if (iNamesize)
- {
- MNG_ALLOC (pData, pEntry->zSegmentname, iNamesize+1);
- MNG_COPY (pEntry->zSegmentname, pTemp, iNamesize);
- }
-
- pEntry++;
- }
-
- pTemp = pTemp + iNamesize + 1;
- }
- }
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_EVNT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-READ_CHUNK (mng_read_unknown)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_UNKNOWN, MNG_LC_START);
-#endif
- /* sequence checks */
-#ifdef MNG_INCLUDE_JNG
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) && (!pData->bHasJHDR))
-#else
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) &&
- (!pData->bHasBASI) && (!pData->bHasDHDR) )
-#endif
- MNG_ERROR (pData, MNG_SEQUENCEERROR);
- /* critical chunk ? */
- if ((((mng_uint32)pData->iChunkname & 0x20000000) == 0)
-#ifdef MNG_SKIPCHUNK_SAVE
- && (pData->iChunkname != MNG_UINT_SAVE)
-#endif
-#ifdef MNG_SKIPCHUNK_SEEK
- && (pData->iChunkname != MNG_UINT_SEEK)
-#endif
-#ifdef MNG_SKIPCHUNK_DBYK
- && (pData->iChunkname != MNG_UINT_DBYK)
-#endif
-#ifdef MNG_SKIPCHUNK_ORDR
- && (pData->iChunkname != MNG_UINT_ORDR)
-#endif
- )
- MNG_ERROR (pData, MNG_UNKNOWNCRITICAL);
-
- if (pData->fProcessunknown) /* let the app handle it ? */
- {
- mng_bool bOke = pData->fProcessunknown ((mng_handle)pData, pData->iChunkname,
- iRawlen, (mng_ptr)pRawdata);
-
- if (!bOke)
- MNG_ERROR (pData, MNG_APPMISCERROR);
- }
-
-#ifdef MNG_STORE_CHUNKS
- if (pData->bStorechunks)
- { /* initialize storage */
- mng_retcode iRetcode = ((mng_chunk_headerp)pHeader)->fCreate (pData, pHeader, ppChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* store the length */
- ((mng_chunk_headerp)*ppChunk)->iChunkname = pData->iChunkname;
- ((mng_unknown_chunkp)*ppChunk)->iDatasize = iRawlen;
-
- if (iRawlen == 0) /* any data at all ? */
- ((mng_unknown_chunkp)*ppChunk)->pData = 0;
- else
- { /* then store it */
- MNG_ALLOC (pData, ((mng_unknown_chunkp)*ppChunk)->pData, iRawlen);
- MNG_COPY (((mng_unknown_chunkp)*ppChunk)->pData, pRawdata, iRawlen);
- }
- }
-#endif /* MNG_STORE_CHUNKS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_UNKNOWN, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-#endif
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_READ_PROCS */
-
-/* ************************************************************************** */
-/* * * */
-/* * chunk write functions * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_WRITE_PROCS
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_ihdr)
-{
- mng_ihdrp pIHDR;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_IHDR, MNG_LC_START);
-#endif
-
- pIHDR = (mng_ihdrp)pChunk; /* address the proper chunk */
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 13;
- /* fill the output buffer */
- mng_put_uint32 (pRawdata, pIHDR->iWidth);
- mng_put_uint32 (pRawdata+4, pIHDR->iHeight);
-
- *(pRawdata+8) = pIHDR->iBitdepth;
- *(pRawdata+9) = pIHDR->iColortype;
- *(pRawdata+10) = pIHDR->iCompression;
- *(pRawdata+11) = pIHDR->iFilter;
- *(pRawdata+12) = pIHDR->iInterlace;
- /* and write it */
- iRetcode = write_raw_chunk (pData, pIHDR->sHeader.iChunkname, iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_IHDR, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_plte)
-{
- mng_pltep pPLTE;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
- mng_uint8p pTemp;
- mng_uint32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_PLTE, MNG_LC_START);
-#endif
-
- pPLTE = (mng_pltep)pChunk; /* address the proper chunk */
-
- if (pPLTE->bEmpty) /* write empty chunk ? */
- iRetcode = write_raw_chunk (pData, pPLTE->sHeader.iChunkname, 0, 0);
- else
- {
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = pPLTE->iEntrycount * 3;
- /* fill the output buffer */
- pTemp = pRawdata;
-
- for (iX = 0; iX < pPLTE->iEntrycount; iX++)
- {
- *pTemp = pPLTE->aEntries [iX].iRed;
- *(pTemp+1) = pPLTE->aEntries [iX].iGreen;
- *(pTemp+2) = pPLTE->aEntries [iX].iBlue;
-
- pTemp += 3;
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pPLTE->sHeader.iChunkname, iRawlen, pRawdata);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_PLTE, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_idat)
-{
- mng_idatp pIDAT;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_IDAT, MNG_LC_START);
-#endif
-
- pIDAT = (mng_idatp)pChunk; /* address the proper chunk */
-
- if (pIDAT->bEmpty) /* and write it */
- iRetcode = write_raw_chunk (pData, pIDAT->sHeader.iChunkname, 0, 0);
- else
- iRetcode = write_raw_chunk (pData, pIDAT->sHeader.iChunkname,
- pIDAT->iDatasize, pIDAT->pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_IDAT, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_iend)
-{
- mng_iendp pIEND;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_IEND, MNG_LC_START);
-#endif
-
- pIEND = (mng_iendp)pChunk; /* address the proper chunk */
- /* and write it */
- iRetcode = write_raw_chunk (pData, pIEND->sHeader.iChunkname, 0, 0);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_IEND, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_trns)
-{
- mng_trnsp pTRNS;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
- mng_uint8p pTemp;
- mng_uint32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_TRNS, MNG_LC_START);
-#endif
-
- pTRNS = (mng_trnsp)pChunk; /* address the proper chunk */
-
- if (pTRNS->bEmpty) /* write empty chunk ? */
- iRetcode = write_raw_chunk (pData, pTRNS->sHeader.iChunkname, 0, 0);
- else
- if (pTRNS->bGlobal) /* write global chunk ? */
- iRetcode = write_raw_chunk (pData, pTRNS->sHeader.iChunkname,
- pTRNS->iRawlen, (mng_uint8p)pTRNS->aRawdata);
- else
- {
- pRawdata = pData->pWritebuf+8; /* init output buffer */
- iRawlen = 0; /* and default size */
-
- switch (pTRNS->iType)
- {
- case 0: {
- iRawlen = 2; /* fill the size & output buffer */
- mng_put_uint16 (pRawdata, pTRNS->iGray);
-
- break;
- }
- case 2: {
- iRawlen = 6; /* fill the size & output buffer */
- mng_put_uint16 (pRawdata, pTRNS->iRed);
- mng_put_uint16 (pRawdata+2, pTRNS->iGreen);
- mng_put_uint16 (pRawdata+4, pTRNS->iBlue);
-
- break;
- }
- case 3: { /* init output buffer size */
- iRawlen = pTRNS->iCount;
-
- pTemp = pRawdata; /* fill the output buffer */
-
- for (iX = 0; iX < pTRNS->iCount; iX++)
- {
- *pTemp = pTRNS->aEntries[iX];
- pTemp++;
- }
-
- break;
- }
- }
- /* write the chunk */
- iRetcode = write_raw_chunk (pData, pTRNS->sHeader.iChunkname,
- iRawlen, pRawdata);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_TRNS, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_gama)
-{
- mng_gamap pGAMA;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_GAMA, MNG_LC_START);
-#endif
-
- pGAMA = (mng_gamap)pChunk; /* address the proper chunk */
-
- if (pGAMA->bEmpty) /* write empty ? */
- iRetcode = write_raw_chunk (pData, pGAMA->sHeader.iChunkname, 0, 0);
- else
- {
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 4;
- /* fill the buffer */
- mng_put_uint32 (pRawdata, pGAMA->iGamma);
- /* and write it */
- iRetcode = write_raw_chunk (pData, pGAMA->sHeader.iChunkname,
- iRawlen, pRawdata);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_GAMA, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_cHRM
-WRITE_CHUNK (mng_write_chrm)
-{
- mng_chrmp pCHRM;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_CHRM, MNG_LC_START);
-#endif
-
- pCHRM = (mng_chrmp)pChunk; /* address the proper chunk */
-
- if (pCHRM->bEmpty) /* write empty ? */
- iRetcode = write_raw_chunk (pData, pCHRM->sHeader.iChunkname, 0, 0);
- else
- {
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 32;
- /* fill the buffer */
- mng_put_uint32 (pRawdata, pCHRM->iWhitepointx);
- mng_put_uint32 (pRawdata+4, pCHRM->iWhitepointy);
- mng_put_uint32 (pRawdata+8, pCHRM->iRedx);
- mng_put_uint32 (pRawdata+12, pCHRM->iRedy);
- mng_put_uint32 (pRawdata+16, pCHRM->iGreenx);
- mng_put_uint32 (pRawdata+20, pCHRM->iGreeny);
- mng_put_uint32 (pRawdata+24, pCHRM->iBluex);
- mng_put_uint32 (pRawdata+28, pCHRM->iBluey);
- /* and write it */
- iRetcode = write_raw_chunk (pData, pCHRM->sHeader.iChunkname,
- iRawlen, pRawdata);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_CHRM, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_srgb)
-{
- mng_srgbp pSRGB;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_SRGB, MNG_LC_START);
-#endif
-
- pSRGB = (mng_srgbp)pChunk; /* address the proper chunk */
-
- if (pSRGB->bEmpty) /* write empty ? */
- iRetcode = write_raw_chunk (pData, pSRGB->sHeader.iChunkname, 0, 0);
- else
- {
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 1;
- /* fill the buffer */
- *pRawdata = pSRGB->iRenderingintent;
- /* and write it */
- iRetcode = write_raw_chunk (pData, pSRGB->sHeader.iChunkname,
- iRawlen, pRawdata);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_SRGB, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iCCP
-WRITE_CHUNK (mng_write_iccp)
-{
- mng_iccpp pICCP;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
- mng_uint8p pTemp;
- mng_uint8p pBuf = 0;
- mng_uint32 iBuflen;
- mng_uint32 iReallen;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_ICCP, MNG_LC_START);
-#endif
-
- pICCP = (mng_iccpp)pChunk; /* address the proper chunk */
-
- if (pICCP->bEmpty) /* write empty ? */
- iRetcode = write_raw_chunk (pData, pICCP->sHeader.iChunkname, 0, 0);
- else
- { /* compress the profile */
- iRetcode = deflate_buffer (pData, pICCP->pProfile, pICCP->iProfilesize,
- &pBuf, &iBuflen, &iReallen);
-
- if (!iRetcode) /* still oke ? */
- {
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = pICCP->iNamesize + 2 + iReallen;
- /* requires large buffer ? */
- if (iRawlen > pData->iWritebufsize)
- MNG_ALLOC (pData, pRawdata, iRawlen);
-
- pTemp = pRawdata; /* fill the buffer */
-
- if (pICCP->iNamesize)
- {
- MNG_COPY (pTemp, pICCP->zName, pICCP->iNamesize);
- pTemp += pICCP->iNamesize;
- }
-
- *pTemp = 0;
- *(pTemp+1) = pICCP->iCompression;
- pTemp += 2;
-
- if (iReallen)
- MNG_COPY (pTemp, pBuf, iReallen);
- /* and write it */
- iRetcode = write_raw_chunk (pData, pICCP->sHeader.iChunkname,
- iRawlen, pRawdata);
- /* drop the temp buffer ? */
- if (iRawlen > pData->iWritebufsize)
- MNG_FREEX (pData, pRawdata, iRawlen);
-
- }
-
- MNG_FREEX (pData, pBuf, iBuflen); /* always drop the extra buffer */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_ICCP, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_tEXt
-WRITE_CHUNK (mng_write_text)
-{
- mng_textp pTEXT;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
- mng_uint8p pTemp;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_TEXT, MNG_LC_START);
-#endif
-
- pTEXT = (mng_textp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = pTEXT->iKeywordsize + 1 + pTEXT->iTextsize;
- /* requires large buffer ? */
- if (iRawlen > pData->iWritebufsize)
- MNG_ALLOC (pData, pRawdata, iRawlen);
-
- pTemp = pRawdata; /* fill the buffer */
-
- if (pTEXT->iKeywordsize)
- {
- MNG_COPY (pTemp, pTEXT->zKeyword, pTEXT->iKeywordsize);
- pTemp += pTEXT->iKeywordsize;
- }
-
- *pTemp = 0;
- pTemp += 1;
-
- if (pTEXT->iTextsize)
- MNG_COPY (pTemp, pTEXT->zText, pTEXT->iTextsize);
- /* and write it */
- iRetcode = write_raw_chunk (pData, pTEXT->sHeader.iChunkname,
- iRawlen, pRawdata);
-
- if (iRawlen > pData->iWritebufsize) /* drop the temp buffer ? */
- MNG_FREEX (pData, pRawdata, iRawlen);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_TEXT, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_zTXt
-WRITE_CHUNK (mng_write_ztxt)
-{
- mng_ztxtp pZTXT;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
- mng_uint8p pTemp;
- mng_uint8p pBuf = 0;
- mng_uint32 iBuflen;
- mng_uint32 iReallen;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_ZTXT, MNG_LC_START);
-#endif
-
- pZTXT = (mng_ztxtp)pChunk; /* address the proper chunk */
- /* compress the text */
- iRetcode = deflate_buffer (pData, (mng_uint8p)pZTXT->zText, pZTXT->iTextsize,
- &pBuf, &iBuflen, &iReallen);
-
- if (!iRetcode) /* all ok ? */
- {
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = pZTXT->iKeywordsize + 2 + iReallen;
- /* requires large buffer ? */
- if (iRawlen > pData->iWritebufsize)
- MNG_ALLOC (pData, pRawdata, iRawlen);
-
- pTemp = pRawdata; /* fill the buffer */
-
- if (pZTXT->iKeywordsize)
- {
- MNG_COPY (pTemp, pZTXT->zKeyword, pZTXT->iKeywordsize);
- pTemp += pZTXT->iKeywordsize;
- }
-
- *pTemp = 0; /* terminator zero */
- pTemp++;
- *pTemp = 0; /* compression type */
- pTemp++;
-
- if (iReallen)
- MNG_COPY (pTemp, pBuf, iReallen);
- /* and write it */
- iRetcode = write_raw_chunk (pData, pZTXT->sHeader.iChunkname,
- iRawlen, pRawdata);
- /* drop the temp buffer ? */
- if (iRawlen > pData->iWritebufsize)
- MNG_FREEX (pData, pRawdata, iRawlen);
-
- }
-
- MNG_FREEX (pData, pBuf, iBuflen); /* always drop the compression buffer */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_ZTXT, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iTXt
-WRITE_CHUNK (mng_write_itxt)
-{
- mng_itxtp pITXT;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
- mng_uint8p pTemp;
- mng_uint8p pBuf = 0;
- mng_uint32 iBuflen;
- mng_uint32 iReallen;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_ITXT, MNG_LC_START);
-#endif
-
- pITXT = (mng_itxtp)pChunk; /* address the proper chunk */
-
- if (pITXT->iCompressionflag) /* compress the text */
- iRetcode = deflate_buffer (pData, (mng_uint8p)pITXT->zText, pITXT->iTextsize,
- &pBuf, &iBuflen, &iReallen);
- else
- iRetcode = MNG_NOERROR;
-
- if (!iRetcode) /* all ok ? */
- {
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = pITXT->iKeywordsize + pITXT->iLanguagesize +
- pITXT->iTranslationsize + 5;
-
- if (pITXT->iCompressionflag)
- iRawlen = iRawlen + iReallen;
- else
- iRawlen = iRawlen + pITXT->iTextsize;
- /* requires large buffer ? */
- if (iRawlen > pData->iWritebufsize)
- MNG_ALLOC (pData, pRawdata, iRawlen);
-
- pTemp = pRawdata; /* fill the buffer */
-
- if (pITXT->iKeywordsize)
- {
- MNG_COPY (pTemp, pITXT->zKeyword, pITXT->iKeywordsize);
- pTemp += pITXT->iKeywordsize;
- }
-
- *pTemp = 0;
- pTemp++;
- *pTemp = pITXT->iCompressionflag;
- pTemp++;
- *pTemp = pITXT->iCompressionmethod;
- pTemp++;
-
- if (pITXT->iLanguagesize)
- {
- MNG_COPY (pTemp, pITXT->zLanguage, pITXT->iLanguagesize);
- pTemp += pITXT->iLanguagesize;
- }
-
- *pTemp = 0;
- pTemp++;
-
- if (pITXT->iTranslationsize)
- {
- MNG_COPY (pTemp, pITXT->zTranslation, pITXT->iTranslationsize);
- pTemp += pITXT->iTranslationsize;
- }
-
- *pTemp = 0;
- pTemp++;
-
- if (pITXT->iCompressionflag)
- {
- if (iReallen)
- MNG_COPY (pTemp, pBuf, iReallen);
- }
- else
- {
- if (pITXT->iTextsize)
- MNG_COPY (pTemp, pITXT->zText, pITXT->iTextsize);
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pITXT->sHeader.iChunkname,
- iRawlen, pRawdata);
- /* drop the temp buffer ? */
- if (iRawlen > pData->iWritebufsize)
- MNG_FREEX (pData, pRawdata, iRawlen);
-
- }
-
- MNG_FREEX (pData, pBuf, iBuflen); /* always drop the compression buffer */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_ITXT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_bKGD
-WRITE_CHUNK (mng_write_bkgd)
-{
- mng_bkgdp pBKGD;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_BKGD, MNG_LC_START);
-#endif
-
- pBKGD = (mng_bkgdp)pChunk; /* address the proper chunk */
-
- if (pBKGD->bEmpty) /* write empty ? */
- iRetcode = write_raw_chunk (pData, pBKGD->sHeader.iChunkname, 0, 0);
- else
- {
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 0; /* and default size */
-
- switch (pBKGD->iType)
- {
- case 0: { /* gray */
- iRawlen = 2; /* fill the size & output buffer */
- mng_put_uint16 (pRawdata, pBKGD->iGray);
-
- break;
- }
- case 2: { /* rgb */
- iRawlen = 6; /* fill the size & output buffer */
- mng_put_uint16 (pRawdata, pBKGD->iRed);
- mng_put_uint16 (pRawdata+2, pBKGD->iGreen);
- mng_put_uint16 (pRawdata+4, pBKGD->iBlue);
-
- break;
- }
- case 3: { /* indexed */
- iRawlen = 1; /* fill the size & output buffer */
- *pRawdata = pBKGD->iIndex;
-
- break;
- }
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pBKGD->sHeader.iChunkname,
- iRawlen, pRawdata);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_BKGD, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_pHYs
-WRITE_CHUNK (mng_write_phys)
-{
- mng_physp pPHYS;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_PHYS, MNG_LC_START);
-#endif
-
- pPHYS = (mng_physp)pChunk; /* address the proper chunk */
-
- if (pPHYS->bEmpty) /* write empty ? */
- iRetcode = write_raw_chunk (pData, pPHYS->sHeader.iChunkname, 0, 0);
- else
- {
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 9;
- /* fill the output buffer */
- mng_put_uint32 (pRawdata, pPHYS->iSizex);
- mng_put_uint32 (pRawdata+4, pPHYS->iSizey);
-
- *(pRawdata+8) = pPHYS->iUnit;
- /* and write it */
- iRetcode = write_raw_chunk (pData, pPHYS->sHeader.iChunkname,
- iRawlen, pRawdata);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_PHYS, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sBIT
-WRITE_CHUNK (mng_write_sbit)
-{
- mng_sbitp pSBIT;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_SBIT, MNG_LC_START);
-#endif
-
- pSBIT = (mng_sbitp)pChunk; /* address the proper chunk */
-
- if (pSBIT->bEmpty) /* write empty ? */
- iRetcode = write_raw_chunk (pData, pSBIT->sHeader.iChunkname, 0, 0);
- else
- {
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 0; /* and default size */
-
- switch (pSBIT->iType)
- {
- case 0: { /* gray */
- iRawlen = 1; /* fill the size & output buffer */
- *pRawdata = pSBIT->aBits[0];
-
- break;
- }
- case 2: { /* rgb */
- iRawlen = 3; /* fill the size & output buffer */
- *pRawdata = pSBIT->aBits[0];
- *(pRawdata+1) = pSBIT->aBits[1];
- *(pRawdata+2) = pSBIT->aBits[2];
-
- break;
- }
- case 3: { /* indexed */
- iRawlen = 3; /* fill the size & output buffer */
- *pRawdata = pSBIT->aBits[0];
- *pRawdata = pSBIT->aBits[1];
- *pRawdata = pSBIT->aBits[2];
-
- break;
- }
- case 4: { /* gray + alpha */
- iRawlen = 2; /* fill the size & output buffer */
- *pRawdata = pSBIT->aBits[0];
- *(pRawdata+1) = pSBIT->aBits[1];
-
- break;
- }
- case 6: { /* rgb + alpha */
- iRawlen = 4; /* fill the size & output buffer */
- *pRawdata = pSBIT->aBits[0];
- *(pRawdata+1) = pSBIT->aBits[1];
- *(pRawdata+2) = pSBIT->aBits[2];
- *(pRawdata+3) = pSBIT->aBits[3];
-
- break;
- }
- case 10: { /* jpeg gray */
- iRawlen = 1; /* fill the size & output buffer */
- *pRawdata = pSBIT->aBits[0];
-
- break;
- }
- case 12: { /* jpeg rgb */
- iRawlen = 3; /* fill the size & output buffer */
- *pRawdata = pSBIT->aBits[0];
- *(pRawdata+1) = pSBIT->aBits[1];
- *(pRawdata+2) = pSBIT->aBits[2];
-
- break;
- }
- case 14: { /* jpeg gray + alpha */
- iRawlen = 2; /* fill the size & output buffer */
- *pRawdata = pSBIT->aBits[0];
- *(pRawdata+1) = pSBIT->aBits[1];
-
- break;
- }
- case 16: { /* jpeg rgb + alpha */
- iRawlen = 4; /* fill the size & output buffer */
- *pRawdata = pSBIT->aBits[0];
- *(pRawdata+1) = pSBIT->aBits[1];
- *(pRawdata+2) = pSBIT->aBits[2];
- *(pRawdata+3) = pSBIT->aBits[3];
-
- break;
- }
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pSBIT->sHeader.iChunkname,
- iRawlen, pRawdata);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_SBIT, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sPLT
-WRITE_CHUNK (mng_write_splt)
-{
- mng_spltp pSPLT;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
- mng_uint32 iEntrieslen;
- mng_uint8p pTemp;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_SPLT, MNG_LC_START);
-#endif
-
- pSPLT = (mng_spltp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iEntrieslen = ((pSPLT->iSampledepth >> 3) * 4 + 2) * pSPLT->iEntrycount;
- iRawlen = pSPLT->iNamesize + 2 + iEntrieslen;
- /* requires large buffer ? */
- if (iRawlen > pData->iWritebufsize)
- MNG_ALLOC (pData, pRawdata, iRawlen);
-
- pTemp = pRawdata; /* fill the buffer */
-
- if (pSPLT->iNamesize)
- {
- MNG_COPY (pTemp, pSPLT->zName, pSPLT->iNamesize);
- pTemp += pSPLT->iNamesize;
- }
-
- *pTemp = 0;
- *(pTemp+1) = pSPLT->iSampledepth;
- pTemp += 2;
-
- if (pSPLT->iEntrycount)
- MNG_COPY (pTemp, pSPLT->pEntries, iEntrieslen);
- /* and write it */
- iRetcode = write_raw_chunk (pData, pSPLT->sHeader.iChunkname,
- iRawlen, pRawdata);
-
- if (iRawlen > pData->iWritebufsize) /* drop the temp buffer ? */
- MNG_FREEX (pData, pRawdata, iRawlen);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_SPLT, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_hIST
-WRITE_CHUNK (mng_write_hist)
-{
- mng_histp pHIST;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
- mng_uint8p pTemp;
- mng_uint32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_HIST, MNG_LC_START);
-#endif
-
- pHIST = (mng_histp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = pHIST->iEntrycount << 1;
-
- pTemp = pRawdata; /* fill the output buffer */
-
- for (iX = 0; iX < pHIST->iEntrycount; iX++)
- {
- mng_put_uint16 (pTemp, pHIST->aEntries [iX]);
- pTemp += 2;
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pHIST->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_HIST, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_tIME
-WRITE_CHUNK (mng_write_time)
-{
- mng_timep pTIME;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_TIME, MNG_LC_START);
-#endif
-
- pTIME = (mng_timep)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 7;
- /* fill the output buffer */
- mng_put_uint16 (pRawdata, pTIME->iYear);
-
- *(pRawdata+2) = pTIME->iMonth;
- *(pRawdata+3) = pTIME->iDay;
- *(pRawdata+4) = pTIME->iHour;
- *(pRawdata+5) = pTIME->iMinute;
- *(pRawdata+6) = pTIME->iSecond;
- /* and write it */
- iRetcode = write_raw_chunk (pData, pTIME->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_TIME, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_mhdr)
-{
- mng_mhdrp pMHDR;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_MHDR, MNG_LC_START);
-#endif
-
- pMHDR = (mng_mhdrp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 28;
- /* fill the output buffer */
- mng_put_uint32 (pRawdata, pMHDR->iWidth);
- mng_put_uint32 (pRawdata+4, pMHDR->iHeight);
- mng_put_uint32 (pRawdata+8, pMHDR->iTicks);
- mng_put_uint32 (pRawdata+12, pMHDR->iLayercount);
- mng_put_uint32 (pRawdata+16, pMHDR->iFramecount);
- mng_put_uint32 (pRawdata+20, pMHDR->iPlaytime);
- mng_put_uint32 (pRawdata+24, pMHDR->iSimplicity);
-
- /* and write it */
- iRetcode = write_raw_chunk (pData, pMHDR->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_MHDR, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_mend)
-{
- mng_mendp pMEND;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_MEND, MNG_LC_START);
-#endif
-
- pMEND = (mng_mendp)pChunk; /* address the proper chunk */
- /* and write it */
- iRetcode = write_raw_chunk (pData, pMEND->sHeader.iChunkname, 0, 0);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_MEND, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_loop)
-{
- mng_loopp pLOOP;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-#ifndef MNG_NO_LOOP_SIGNALS_SUPPORTED
- mng_uint8p pTemp1;
- mng_uint32p pTemp2;
- mng_uint32 iX;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_LOOP, MNG_LC_START);
-#endif
-
- pLOOP = (mng_loopp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 5;
- /* fill the output buffer */
- *pRawdata = pLOOP->iLevel;
- mng_put_uint32 (pRawdata+1, pLOOP->iRepeat);
-
- if (pLOOP->iTermination)
- {
- iRawlen++;
- *(pRawdata+5) = pLOOP->iTermination;
-
- if ((pLOOP->iCount) ||
- (pLOOP->iItermin != 1) || (pLOOP->iItermax != 0x7FFFFFFFL))
- {
- iRawlen += 8;
-
- mng_put_uint32 (pRawdata+6, pLOOP->iItermin);
- mng_put_uint32 (pRawdata+10, pLOOP->iItermax);
-
-#ifndef MNG_NO_LOOP_SIGNALS_SUPPORTED
- if (pLOOP->iCount)
- {
- iRawlen += pLOOP->iCount * 4;
-
- pTemp1 = pRawdata+14;
- pTemp2 = pLOOP->pSignals;
-
- for (iX = 0; iX < pLOOP->iCount; iX++)
- {
- mng_put_uint32 (pTemp1, *pTemp2);
-
- pTemp1 += 4;
- pTemp2++;
- }
- }
-#endif
- }
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pLOOP->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_LOOP, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_endl)
-{
- mng_endlp pENDL;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_ENDL, MNG_LC_START);
-#endif
-
- pENDL = (mng_endlp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 1;
-
- *pRawdata = pENDL->iLevel; /* fill the output buffer */
- /* and write it */
- iRetcode = write_raw_chunk (pData, pENDL->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_ENDL, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_defi)
-{
- mng_defip pDEFI;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_DEFI, MNG_LC_START);
-#endif
-
- pDEFI = (mng_defip)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 2;
- /* fill the output buffer */
- mng_put_uint16 (pRawdata, pDEFI->iObjectid);
-
- if ((pDEFI->iDonotshow) || (pDEFI->iConcrete) || (pDEFI->bHasloca) || (pDEFI->bHasclip))
- {
- iRawlen++;
- *(pRawdata+2) = pDEFI->iDonotshow;
-
- if ((pDEFI->iConcrete) || (pDEFI->bHasloca) || (pDEFI->bHasclip))
- {
- iRawlen++;
- *(pRawdata+3) = pDEFI->iConcrete;
-
- if ((pDEFI->bHasloca) || (pDEFI->bHasclip))
- {
- iRawlen += 8;
-
- mng_put_uint32 (pRawdata+4, pDEFI->iXlocation);
- mng_put_uint32 (pRawdata+8, pDEFI->iYlocation);
-
- if (pDEFI->bHasclip)
- {
- iRawlen += 16;
-
- mng_put_uint32 (pRawdata+12, pDEFI->iLeftcb);
- mng_put_uint32 (pRawdata+16, pDEFI->iRightcb);
- mng_put_uint32 (pRawdata+20, pDEFI->iTopcb);
- mng_put_uint32 (pRawdata+24, pDEFI->iBottomcb);
- }
- }
- }
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pDEFI->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_DEFI, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_basi)
-{
- mng_basip pBASI;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
- mng_bool bOpaque;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_BASI, MNG_LC_START);
-#endif
-
- pBASI = (mng_basip)pChunk; /* address the proper chunk */
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pBASI->iBitdepth <= 8) /* determine opacity alpha-field */
-#endif
- bOpaque = (mng_bool)(pBASI->iAlpha == 0xFF);
-#ifndef MNG_NO_16BIT_SUPPORT
- else
- bOpaque = (mng_bool)(pBASI->iAlpha == 0xFFFF);
-#endif
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 13;
- /* fill the output buffer */
- mng_put_uint32 (pRawdata, pBASI->iWidth);
- mng_put_uint32 (pRawdata+4, pBASI->iHeight);
-
- *(pRawdata+8) = pBASI->iBitdepth;
- *(pRawdata+9) = pBASI->iColortype;
- *(pRawdata+10) = pBASI->iCompression;
- *(pRawdata+11) = pBASI->iFilter;
- *(pRawdata+12) = pBASI->iInterlace;
-
- if ((pBASI->iRed) || (pBASI->iGreen) || (pBASI->iBlue) ||
- (!bOpaque) || (pBASI->iViewable))
- {
- iRawlen += 6;
- mng_put_uint16 (pRawdata+13, pBASI->iRed);
- mng_put_uint16 (pRawdata+15, pBASI->iGreen);
- mng_put_uint16 (pRawdata+17, pBASI->iBlue);
-
- if ((!bOpaque) || (pBASI->iViewable))
- {
- iRawlen += 2;
- mng_put_uint16 (pRawdata+19, pBASI->iAlpha);
-
- if (pBASI->iViewable)
- {
- iRawlen++;
- *(pRawdata+21) = pBASI->iViewable;
- }
- }
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pBASI->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_BASI, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_clon)
-{
- mng_clonp pCLON;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_CLON, MNG_LC_START);
-#endif
-
- pCLON = (mng_clonp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 4;
- /* fill the output buffer */
- mng_put_uint16 (pRawdata, pCLON->iSourceid);
- mng_put_uint16 (pRawdata+2, pCLON->iCloneid);
-
- if ((pCLON->iClonetype) || (pCLON->iDonotshow) || (pCLON->iConcrete) || (pCLON->bHasloca))
- {
- iRawlen++;
- *(pRawdata+4) = pCLON->iClonetype;
-
- if ((pCLON->iDonotshow) || (pCLON->iConcrete) || (pCLON->bHasloca))
- {
- iRawlen++;
- *(pRawdata+5) = pCLON->iDonotshow;
-
- if ((pCLON->iConcrete) || (pCLON->bHasloca))
- {
- iRawlen++;
- *(pRawdata+6) = pCLON->iConcrete;
-
- if (pCLON->bHasloca)
- {
- iRawlen += 9;
- *(pRawdata+7) = pCLON->iLocationtype;
- mng_put_int32 (pRawdata+8, pCLON->iLocationx);
- mng_put_int32 (pRawdata+12, pCLON->iLocationy);
- }
- }
- }
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pCLON->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_CLON, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-WRITE_CHUNK (mng_write_past)
-{
- mng_pastp pPAST;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
- mng_past_sourcep pSource;
- mng_uint32 iX;
- mng_uint8p pTemp;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_PAST, MNG_LC_START);
-#endif
-
- pPAST = (mng_pastp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 11 + (30 * pPAST->iCount);
- /* requires large buffer ? */
- if (iRawlen > pData->iWritebufsize)
- MNG_ALLOC (pData, pRawdata, iRawlen);
- /* fill the output buffer */
- mng_put_uint16 (pRawdata, pPAST->iDestid);
-
- *(pRawdata+2) = pPAST->iTargettype;
-
- mng_put_int32 (pRawdata+3, pPAST->iTargetx);
- mng_put_int32 (pRawdata+7, pPAST->iTargety);
-
- pTemp = pRawdata+11;
- pSource = pPAST->pSources;
-
- for (iX = 0; iX < pPAST->iCount; iX++)
- {
- mng_put_uint16 (pTemp, pSource->iSourceid);
-
- *(pTemp+2) = pSource->iComposition;
- *(pTemp+3) = pSource->iOrientation;
- *(pTemp+4) = pSource->iOffsettype;
-
- mng_put_int32 (pTemp+5, pSource->iOffsetx);
- mng_put_int32 (pTemp+9, pSource->iOffsety);
-
- *(pTemp+13) = pSource->iBoundarytype;
-
- mng_put_int32 (pTemp+14, pSource->iBoundaryl);
- mng_put_int32 (pTemp+18, pSource->iBoundaryr);
- mng_put_int32 (pTemp+22, pSource->iBoundaryt);
- mng_put_int32 (pTemp+26, pSource->iBoundaryb);
-
- pSource++;
- pTemp += 30;
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pPAST->sHeader.iChunkname,
- iRawlen, pRawdata);
- /* free temporary buffer ? */
- if (iRawlen > pData->iWritebufsize)
- MNG_FREEX (pData, pRawdata, iRawlen);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_PAST, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_disc)
-{
- mng_discp pDISC;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
- mng_uint32 iX;
- mng_uint8p pTemp1;
- mng_uint16p pTemp2;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_DISC, MNG_LC_START);
-#endif
-
- pDISC = (mng_discp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = pDISC->iCount << 1;
-
- pTemp1 = pRawdata; /* fill the output buffer */
- pTemp2 = pDISC->pObjectids;
-
- for (iX = 0; iX < pDISC->iCount; iX++)
- {
- mng_put_uint16 (pTemp1, *pTemp2);
-
- pTemp2++;
- pTemp1 += 2;
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pDISC->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_DISC, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_back)
-{
- mng_backp pBACK;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_BACK, MNG_LC_START);
-#endif
-
- pBACK = (mng_backp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 6;
- /* fill the output buffer */
- mng_put_uint16 (pRawdata, pBACK->iRed);
- mng_put_uint16 (pRawdata+2, pBACK->iGreen);
- mng_put_uint16 (pRawdata+4, pBACK->iBlue);
-
- if ((pBACK->iMandatory) || (pBACK->iImageid) || (pBACK->iTile))
- {
- iRawlen++;
- *(pRawdata+6) = pBACK->iMandatory;
-
- if ((pBACK->iImageid) || (pBACK->iTile))
- {
- iRawlen += 2;
- mng_put_uint16 (pRawdata+7, pBACK->iImageid);
-
- if (pBACK->iTile)
- {
- iRawlen++;
- *(pRawdata+9) = pBACK->iTile;
- }
- }
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pBACK->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_BACK, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_fram)
-{
- mng_framp pFRAM;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
- mng_uint8p pTemp;
- mng_uint32p pTemp2;
- mng_uint32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_FRAM, MNG_LC_START);
-#endif
-
- pFRAM = (mng_framp)pChunk; /* address the proper chunk */
-
- if (pFRAM->bEmpty) /* empty ? */
- iRetcode = write_raw_chunk (pData, pFRAM->sHeader.iChunkname, 0, 0);
- else
- {
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 1;
- /* fill the output buffer */
- *pRawdata = pFRAM->iMode;
-
- if ((pFRAM->iNamesize ) ||
- (pFRAM->iChangedelay ) || (pFRAM->iChangetimeout) ||
- (pFRAM->iChangeclipping) || (pFRAM->iChangesyncid ) )
- {
- if (pFRAM->iNamesize)
- MNG_COPY (pRawdata+1, pFRAM->zName, pFRAM->iNamesize);
-
- iRawlen += pFRAM->iNamesize;
- pTemp = pRawdata + pFRAM->iNamesize + 1;
-
- if ((pFRAM->iChangedelay ) || (pFRAM->iChangetimeout) ||
- (pFRAM->iChangeclipping) || (pFRAM->iChangesyncid ) )
- {
- *pTemp = 0;
- *(pTemp+1) = pFRAM->iChangedelay;
- *(pTemp+2) = pFRAM->iChangetimeout;
- *(pTemp+3) = pFRAM->iChangeclipping;
- *(pTemp+4) = pFRAM->iChangesyncid;
-
- iRawlen += 5;
- pTemp += 5;
-
- if (pFRAM->iChangedelay)
- {
- mng_put_uint32 (pTemp, pFRAM->iDelay);
- iRawlen += 4;
- pTemp += 4;
- }
-
- if (pFRAM->iChangetimeout)
- {
- mng_put_uint32 (pTemp, pFRAM->iTimeout);
- iRawlen += 4;
- pTemp += 4;
- }
-
- if (pFRAM->iChangeclipping)
- {
- *pTemp = pFRAM->iBoundarytype;
-
- mng_put_uint32 (pTemp+1, pFRAM->iBoundaryl);
- mng_put_uint32 (pTemp+5, pFRAM->iBoundaryr);
- mng_put_uint32 (pTemp+9, pFRAM->iBoundaryt);
- mng_put_uint32 (pTemp+13, pFRAM->iBoundaryb);
-
- iRawlen += 17;
- pTemp += 17;
- }
-
- if (pFRAM->iChangesyncid)
- {
- iRawlen += pFRAM->iCount * 4;
- pTemp2 = pFRAM->pSyncids;
-
- for (iX = 0; iX < pFRAM->iCount; iX++)
- {
- mng_put_uint32 (pTemp, *pTemp2);
-
- pTemp2++;
- pTemp += 4;
- }
- }
- }
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pFRAM->sHeader.iChunkname,
- iRawlen, pRawdata);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_FRAM, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_move)
-{
- mng_movep pMOVE;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_MOVE, MNG_LC_START);
-#endif
-
- pMOVE = (mng_movep)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 13;
- /* fill the output buffer */
- mng_put_uint16 (pRawdata, pMOVE->iFirstid);
- mng_put_uint16 (pRawdata+2, pMOVE->iLastid);
-
- *(pRawdata+4) = pMOVE->iMovetype;
-
- mng_put_int32 (pRawdata+5, pMOVE->iMovex);
- mng_put_int32 (pRawdata+9, pMOVE->iMovey);
- /* and write it */
- iRetcode = write_raw_chunk (pData, pMOVE->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_MOVE, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_clip)
-{
- mng_clipp pCLIP;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_CLIP, MNG_LC_START);
-#endif
-
- pCLIP = (mng_clipp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 21;
- /* fill the output buffer */
- mng_put_uint16 (pRawdata, pCLIP->iFirstid);
- mng_put_uint16 (pRawdata+2, pCLIP->iLastid);
-
- *(pRawdata+4) = pCLIP->iCliptype;
-
- mng_put_int32 (pRawdata+5, pCLIP->iClipl);
- mng_put_int32 (pRawdata+9, pCLIP->iClipr);
- mng_put_int32 (pRawdata+13, pCLIP->iClipt);
- mng_put_int32 (pRawdata+17, pCLIP->iClipb);
- /* and write it */
- iRetcode = write_raw_chunk (pData, pCLIP->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_CLIP, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_show)
-{
- mng_showp pSHOW;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_SHOW, MNG_LC_START);
-#endif
-
- pSHOW = (mng_showp)pChunk; /* address the proper chunk */
-
- if (pSHOW->bEmpty) /* empty ? */
- iRetcode = write_raw_chunk (pData, pSHOW->sHeader.iChunkname, 0, 0);
- else
- {
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 2;
- /* fill the output buffer */
- mng_put_uint16 (pRawdata, pSHOW->iFirstid);
-
- if ((pSHOW->iLastid != pSHOW->iFirstid) || (pSHOW->iMode))
- {
- iRawlen += 2;
- mng_put_uint16 (pRawdata+2, pSHOW->iLastid);
-
- if (pSHOW->iMode)
- {
- iRawlen++;
- *(pRawdata+4) = pSHOW->iMode;
- }
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pSHOW->sHeader.iChunkname,
- iRawlen, pRawdata);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_SHOW, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_term)
-{
- mng_termp pTERM;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_TERM, MNG_LC_START);
-#endif
-
- pTERM = (mng_termp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 1;
-
- *pRawdata = pTERM->iTermaction; /* fill the output buffer */
-
- if (pTERM->iTermaction == 3)
- {
- iRawlen = 10;
- *(pRawdata+1) = pTERM->iIteraction;
-
- mng_put_uint32 (pRawdata+2, pTERM->iDelay);
- mng_put_uint32 (pRawdata+6, pTERM->iItermax);
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pTERM->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_TERM, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SAVE
-WRITE_CHUNK (mng_write_save)
-{
- mng_savep pSAVE;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
- mng_save_entryp pEntry;
- mng_uint32 iEntrysize;
- mng_uint8p pTemp;
- mng_uint32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_SAVE, MNG_LC_START);
-#endif
-
- pSAVE = (mng_savep)pChunk; /* address the proper chunk */
-
- if (pSAVE->bEmpty) /* empty ? */
- iRetcode = write_raw_chunk (pData, pSAVE->sHeader.iChunkname, 0, 0);
- else
- {
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 1;
-
- *pRawdata = pSAVE->iOffsettype; /* fill the output buffer */
-
- if (pSAVE->iOffsettype == 16)
- iEntrysize = 25;
- else
- iEntrysize = 17;
-
- pTemp = pRawdata+1;
- pEntry = pSAVE->pEntries;
-
- for (iX = 0; iX < pSAVE->iCount; iX++)
- {
- if (iX) /* put separator null-byte, except the first */
- {
- *pTemp = 0;
- pTemp++;
- iRawlen++;
- }
-
- iRawlen += iEntrysize + pEntry->iNamesize;
- *pTemp = pEntry->iEntrytype;
-
- if (pSAVE->iOffsettype == 16)
- {
- mng_put_uint32 (pTemp+1, pEntry->iOffset[0]);
- mng_put_uint32 (pTemp+5, pEntry->iOffset[1]);
- mng_put_uint32 (pTemp+9, pEntry->iStarttime[0]);
- mng_put_uint32 (pTemp+13, pEntry->iStarttime[1]);
- mng_put_uint32 (pTemp+17, pEntry->iLayernr);
- mng_put_uint32 (pTemp+21, pEntry->iFramenr);
-
- pTemp += 25;
- }
- else
- {
- mng_put_uint32 (pTemp+1, pEntry->iOffset[1]);
- mng_put_uint32 (pTemp+5, pEntry->iStarttime[1]);
- mng_put_uint32 (pTemp+9, pEntry->iLayernr);
- mng_put_uint32 (pTemp+13, pEntry->iFramenr);
-
- pTemp += 17;
- }
-
- if (pEntry->iNamesize)
- {
- MNG_COPY (pTemp, pEntry->zName, pEntry->iNamesize);
- pTemp += pEntry->iNamesize;
- }
-
- pEntry++;
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pSAVE->sHeader.iChunkname,
- iRawlen, pRawdata);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_SAVE, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SEEK
-WRITE_CHUNK (mng_write_seek)
-{
- mng_seekp pSEEK;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_SEEK, MNG_LC_START);
-#endif
-
- pSEEK = (mng_seekp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = pSEEK->iNamesize;
-
- if (iRawlen) /* fill the output buffer */
- MNG_COPY (pRawdata, pSEEK->zName, iRawlen);
- /* and write it */
- iRetcode = write_raw_chunk (pData, pSEEK->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_SEEK, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_eXPI
-WRITE_CHUNK (mng_write_expi)
-{
- mng_expip pEXPI;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_EXPI, MNG_LC_START);
-#endif
-
- pEXPI = (mng_expip)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 2 + pEXPI->iNamesize;
- /* fill the output buffer */
- mng_put_uint16 (pRawdata, pEXPI->iSnapshotid);
-
- if (pEXPI->iNamesize)
- MNG_COPY (pRawdata+2, pEXPI->zName, pEXPI->iNamesize);
- /* and write it */
- iRetcode = write_raw_chunk (pData, pEXPI->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_EXPI, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_fPRI
-WRITE_CHUNK (mng_write_fpri)
-{
- mng_fprip pFPRI;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_FPRI, MNG_LC_START);
-#endif
-
- pFPRI = (mng_fprip)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 2;
-
- *pRawdata = pFPRI->iDeltatype; /* fill the output buffer */
- *(pRawdata+1) = pFPRI->iPriority;
- /* and write it */
- iRetcode = write_raw_chunk (pData, pFPRI->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_FPRI, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_nEED
-WRITE_CHUNK (mng_write_need)
-{
- mng_needp pNEED;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_NEED, MNG_LC_START);
-#endif
-
- pNEED = (mng_needp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = pNEED->iKeywordssize;
- /* fill the output buffer */
- if (pNEED->iKeywordssize)
- MNG_COPY (pRawdata, pNEED->zKeywords, pNEED->iKeywordssize);
- /* and write it */
- iRetcode = write_raw_chunk (pData, pNEED->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_NEED, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_pHYg
-WRITE_CHUNK (mng_write_phyg)
-{
- mng_phygp pPHYG;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_PHYG, MNG_LC_START);
-#endif
-
- pPHYG = (mng_phygp)pChunk; /* address the proper chunk */
-
- if (pPHYG->bEmpty) /* write empty ? */
- iRetcode = write_raw_chunk (pData, pPHYG->sHeader.iChunkname, 0, 0);
- else
- {
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 9;
- /* fill the output buffer */
- mng_put_uint32 (pRawdata, pPHYG->iSizex);
- mng_put_uint32 (pRawdata+4, pPHYG->iSizey);
-
- *(pRawdata+8) = pPHYG->iUnit;
- /* and write it */
- iRetcode = write_raw_chunk (pData, pPHYG->sHeader.iChunkname,
- iRawlen, pRawdata);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_PHYG, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-/* B004 */
-#ifdef MNG_INCLUDE_JNG
-/* B004 */
-WRITE_CHUNK (mng_write_jhdr)
-{
- mng_jhdrp pJHDR;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_JHDR, MNG_LC_START);
-#endif
-
- pJHDR = (mng_jhdrp)pChunk; /* address the proper chunk */
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 16;
- /* fill the output buffer */
- mng_put_uint32 (pRawdata, pJHDR->iWidth);
- mng_put_uint32 (pRawdata+4, pJHDR->iHeight);
-
- *(pRawdata+8) = pJHDR->iColortype;
- *(pRawdata+9) = pJHDR->iImagesampledepth;
- *(pRawdata+10) = pJHDR->iImagecompression;
- *(pRawdata+11) = pJHDR->iImageinterlace;
- *(pRawdata+12) = pJHDR->iAlphasampledepth;
- *(pRawdata+13) = pJHDR->iAlphacompression;
- *(pRawdata+14) = pJHDR->iAlphafilter;
- *(pRawdata+15) = pJHDR->iAlphainterlace;
- /* and write it */
- iRetcode = write_raw_chunk (pData, pJHDR->sHeader.iChunkname, iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_JHDR, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#else
-#define write_jhdr 0
-/* B004 */
-#endif /* MNG_INCLUDE_JNG */
-/* B004 */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-WRITE_CHUNK (mng_write_jdaa)
-{
- mng_jdatp pJDAA;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_JDAA, MNG_LC_START);
-#endif
-
- pJDAA = (mng_jdaap)pChunk; /* address the proper chunk */
-
- if (pJDAA->bEmpty) /* and write it */
- iRetcode = write_raw_chunk (pData, pJDAA->sHeader.iChunkname, 0, 0);
- else
- iRetcode = write_raw_chunk (pData, pJDAA->sHeader.iChunkname,
- pJDAA->iDatasize, pJDAA->pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_JDAA, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#else
-#define write_jdaa 0
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-/* B004 */
-#ifdef MNG_INCLUDE_JNG
-/* B004 */
-WRITE_CHUNK (mng_write_jdat)
-{
- mng_jdatp pJDAT;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_JDAT, MNG_LC_START);
-#endif
-
- pJDAT = (mng_jdatp)pChunk; /* address the proper chunk */
-
- if (pJDAT->bEmpty) /* and write it */
- iRetcode = write_raw_chunk (pData, pJDAT->sHeader.iChunkname, 0, 0);
- else
- iRetcode = write_raw_chunk (pData, pJDAT->sHeader.iChunkname,
- pJDAT->iDatasize, pJDAT->pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_JDAT, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#else
-#define write_jdat 0
-/* B004 */
-#endif /* MNG_INCLUDE_JNG */
-/* B004 */
-
-/* ************************************************************************** */
-
-/* B004 */
-#ifdef MNG_INCLUDE_JNG
-/* B004 */
-WRITE_CHUNK (mng_write_jsep)
-{
- mng_jsepp pJSEP;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_JSEP, MNG_LC_START);
-#endif
-
- pJSEP = (mng_jsepp)pChunk; /* address the proper chunk */
- /* and write it */
- iRetcode = write_raw_chunk (pData, pJSEP->sHeader.iChunkname, 0, 0);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_JSEP, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#else
-#define write_jsep 0
-/* B004 */
-#endif /* MNG_INCLUDE_JNG */
-/* B004 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-WRITE_CHUNK (mng_write_dhdr)
-{
- mng_dhdrp pDHDR;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_DHDR, MNG_LC_START);
-#endif
-
- pDHDR = (mng_dhdrp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 4;
- /* fill the output buffer */
- mng_put_uint16 (pRawdata, pDHDR->iObjectid);
-
- *(pRawdata+2) = pDHDR->iImagetype;
- *(pRawdata+3) = pDHDR->iDeltatype;
-
- if (pDHDR->iDeltatype != 7)
- {
- iRawlen += 8;
- mng_put_uint32 (pRawdata+4, pDHDR->iBlockwidth);
- mng_put_uint32 (pRawdata+8, pDHDR->iBlockheight);
-
- if (pDHDR->iDeltatype != 0)
- {
- iRawlen += 8;
- mng_put_uint32 (pRawdata+12, pDHDR->iBlockx);
- mng_put_uint32 (pRawdata+16, pDHDR->iBlocky);
- }
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pDHDR->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_DHDR, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-WRITE_CHUNK (mng_write_prom)
-{
- mng_promp pPROM;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_PROM, MNG_LC_START);
-#endif
-
- pPROM = (mng_promp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 3;
-
- *pRawdata = pPROM->iColortype; /* fill the output buffer */
- *(pRawdata+1) = pPROM->iSampledepth;
- *(pRawdata+2) = pPROM->iFilltype;
- /* and write it */
- iRetcode = write_raw_chunk (pData, pPROM->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_PROM, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-WRITE_CHUNK (mng_write_ipng)
-{
- mng_ipngp pIPNG;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_IPNG, MNG_LC_START);
-#endif
-
- pIPNG = (mng_ipngp)pChunk; /* address the proper chunk */
- /* and write it */
- iRetcode = write_raw_chunk (pData, pIPNG->sHeader.iChunkname, 0, 0);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_IPNG, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-WRITE_CHUNK (mng_write_pplt)
-{
- mng_ppltp pPPLT;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
- mng_pplt_entryp pEntry;
- mng_uint8p pTemp;
- mng_uint32 iX;
- mng_bool bHasgroup;
- mng_uint8p pLastid = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_PPLT, MNG_LC_START);
-#endif
-
- pPPLT = (mng_ppltp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 1;
-
- *pRawdata = pPPLT->iDeltatype; /* fill the output buffer */
-
- pTemp = pRawdata+1;
- bHasgroup = MNG_FALSE;
-
- for (iX = 0; iX < pPPLT->iCount; iX++)
- {
- pEntry = &pPPLT->aEntries[iX];
-
- if (pEntry->bUsed) /* valid entry ? */
- {
- if (!bHasgroup) /* start a new group ? */
- {
- bHasgroup = MNG_TRUE;
- pLastid = pTemp+1;
-
- *pTemp = (mng_uint8)iX;
- *(pTemp+1) = 0;
-
- pTemp += 2;
- iRawlen += 2;
- }
-
- switch (pPPLT->iDeltatype) /* add group-entry depending on type */
- {
- case 0: ;
- case 1: {
- *pTemp = pEntry->iRed;
- *(pTemp+1) = pEntry->iGreen;
- *(pTemp+2) = pEntry->iBlue;
-
- pTemp += 3;
- iRawlen += 3;
-
- break;
- }
-
- case 2: ;
- case 3: {
- *pTemp = pEntry->iAlpha;
-
- pTemp++;
- iRawlen++;
-
- break;
- }
-
- case 4: ;
- case 5: {
- *pTemp = pEntry->iRed;
- *(pTemp+1) = pEntry->iGreen;
- *(pTemp+2) = pEntry->iBlue;
- *(pTemp+3) = pEntry->iAlpha;
-
- pTemp += 4;
- iRawlen += 4;
-
- break;
- }
-
- }
- }
- else
- {
- if (bHasgroup) /* finish off a group ? */
- *pLastid = (mng_uint8)(iX-1);
-
- bHasgroup = MNG_FALSE;
- }
- }
-
- if (bHasgroup) /* last group unfinished ? */
- *pLastid = (mng_uint8)(pPPLT->iCount-1);
- /* write the output buffer */
- iRetcode = write_raw_chunk (pData, pPPLT->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_PPLT, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifdef MNG_INCLUDE_JNG
-WRITE_CHUNK (mng_write_ijng)
-{
- mng_ijngp pIJNG;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_IJNG, MNG_LC_START);
-#endif
-
- pIJNG = (mng_ijngp)pChunk; /* address the proper chunk */
- /* and write it */
- iRetcode = write_raw_chunk (pData, pIJNG->sHeader.iChunkname, 0, 0);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_IJNG, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-WRITE_CHUNK (mng_write_drop)
-{
- mng_dropp pDROP;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
- mng_uint32 iX;
- mng_uint8p pTemp1;
- mng_chunkidp pTemp2;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_DROP, MNG_LC_START);
-#endif
-
- pDROP = (mng_dropp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = pDROP->iCount << 2;
-
- pTemp1 = pRawdata; /* fill the output buffer */
- pTemp2 = pDROP->pChunknames;
-
- for (iX = 0; iX < pDROP->iCount; iX++)
- {
- mng_put_uint32 (pTemp1, (mng_uint32)*pTemp2);
-
- pTemp2++;
- pTemp1 += 4;
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pDROP->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_DROP, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_DBYK
-WRITE_CHUNK (mng_write_dbyk)
-{
- mng_dbykp pDBYK;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_DBYK, MNG_LC_START);
-#endif
-
- pDBYK = (mng_dbykp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 5 + pDBYK->iKeywordssize;
- /* fill the output buffer */
- mng_put_uint32 (pRawdata, pDBYK->iChunkname);
- *(pRawdata+4) = pDBYK->iPolarity;
-
- if (pDBYK->iKeywordssize)
- MNG_COPY (pRawdata+5, pDBYK->zKeywords, pDBYK->iKeywordssize);
- /* and write it */
- iRetcode = write_raw_chunk (pData, pDBYK->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_DBYK, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_ORDR
-WRITE_CHUNK (mng_write_ordr)
-{
- mng_ordrp pORDR;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
- mng_uint8p pTemp;
- mng_ordr_entryp pEntry;
- mng_uint32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_ORDR, MNG_LC_START);
-#endif
-
- pORDR = (mng_ordrp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = pORDR->iCount * 5;
-
- pTemp = pRawdata; /* fill the output buffer */
- pEntry = pORDR->pEntries;
-
- for (iX = 0; iX < pORDR->iCount; iX++)
- {
- mng_put_uint32 (pTemp, pEntry->iChunkname);
- *(pTemp+4) = pEntry->iOrdertype;
- pTemp += 5;
- pEntry++;
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pORDR->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_ORDR, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_magn)
-{
- mng_magnp pMAGN;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_MAGN, MNG_LC_START);
-#endif
-
- pMAGN = (mng_magnp)pChunk; /* address the proper chunk */
-
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 18;
- /* fill the output buffer */
- mng_put_uint16 (pRawdata, pMAGN->iFirstid);
- mng_put_uint16 (pRawdata+2, pMAGN->iLastid);
- *(pRawdata+4) = pMAGN->iMethodX;
- mng_put_uint16 (pRawdata+5, pMAGN->iMX);
- mng_put_uint16 (pRawdata+7, pMAGN->iMY);
- mng_put_uint16 (pRawdata+9, pMAGN->iML);
- mng_put_uint16 (pRawdata+11, pMAGN->iMR);
- mng_put_uint16 (pRawdata+13, pMAGN->iMT);
- mng_put_uint16 (pRawdata+15, pMAGN->iMB);
- *(pRawdata+17) = pMAGN->iMethodY;
- /* optimize length */
- if (pMAGN->iMethodY == pMAGN->iMethodX)
- {
- iRawlen--;
-
- if (pMAGN->iMB == pMAGN->iMY)
- {
- iRawlen -= 2;
-
- if (pMAGN->iMT == pMAGN->iMY)
- {
- iRawlen -= 2;
-
- if (pMAGN->iMR == pMAGN->iMX)
- {
- iRawlen -= 2;
-
- if (pMAGN->iML == pMAGN->iMX)
- {
- iRawlen -= 2;
-
- if (pMAGN->iMY == pMAGN->iMX)
- {
- iRawlen -= 2;
-
- if (pMAGN->iMX == 1)
- {
- iRawlen -= 2;
-
- if (pMAGN->iMethodX == 0)
- {
- iRawlen--;
-
- if (pMAGN->iLastid == pMAGN->iFirstid)
- {
- iRawlen -= 2;
-
- if (pMAGN->iFirstid == 0)
- iRawlen = 0;
-
- }
- }
- }
- }
- }
- }
- }
- }
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pMAGN->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_MAGN, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-WRITE_CHUNK (mng_write_mpng)
-{
- mng_mpngp pMPNG;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
- mng_uint8p pBuf = 0;
- mng_uint32 iBuflen;
- mng_uint32 iReallen;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_MPNG, MNG_LC_START);
-#endif
-
- pMPNG = (mng_mpngp)pChunk; /* address the proper chunk */
- /* compress the frame structures */
- iRetcode = deflate_buffer (pData, (mng_uint8p)pMPNG->pFrames, pMPNG->iFramessize,
- &pBuf, &iBuflen, &iReallen);
-
- if (!iRetcode) /* all ok ? */
- {
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 15 + iReallen;
- /* requires large buffer ? */
- if (iRawlen > pData->iWritebufsize)
- MNG_ALLOC (pData, pRawdata, iRawlen);
- /* fill the buffer */
- mng_put_uint32 (pRawdata, pMPNG->iFramewidth);
- mng_put_uint32 (pRawdata+4, pMPNG->iFrameheight);
- mng_put_uint16 (pRawdata+8, pMPNG->iNumplays);
- mng_put_uint16 (pRawdata+10, pMPNG->iTickspersec);
- *(pRawdata+12) = pMPNG->iCompressionmethod;
-
- if (iReallen)
- MNG_COPY (pRawdata+13, pBuf, iReallen);
- /* and write it */
- iRetcode = write_raw_chunk (pData, pMPNG->sHeader.iChunkname,
- iRawlen, pRawdata);
- /* drop the temp buffer ? */
- if (iRawlen > pData->iWritebufsize)
- MNG_FREEX (pData, pRawdata, iRawlen);
- }
-
- MNG_FREEX (pData, pBuf, iBuflen); /* always drop the compression buffer */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_MPNG, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-WRITE_CHUNK (mng_write_ahdr)
-{
- mng_ahdrp pAHDR;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_AHDR, MNG_LC_START);
-#endif
-
- pAHDR = (mng_ahdrp)pChunk; /* address the proper chunk */
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 22;
- /* fill the buffer */
- mng_put_uint32 (pRawdata, pAHDR->iNumframes);
- mng_put_uint32 (pRawdata+4, pAHDR->iTickspersec);
- mng_put_uint32 (pRawdata+8, pAHDR->iNumplays);
- mng_put_uint32 (pRawdata+12, pAHDR->iTilewidth);
- mng_put_uint32 (pRawdata+16, pAHDR->iTileheight);
- *(pRawdata+20) = pAHDR->iInterlace;
- *(pRawdata+21) = pAHDR->iStillused;
- /* and write it */
- iRetcode = write_raw_chunk (pData, pAHDR->sHeader.iChunkname,
- iRawlen, pRawdata);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_AHDR, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-WRITE_CHUNK (mng_write_adat)
-{
-
- /* TODO: something */
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_evNT
-WRITE_CHUNK (mng_write_evnt)
-{
- mng_evntp pEVNT;
- mng_uint8p pRawdata;
- mng_uint32 iRawlen;
- mng_retcode iRetcode;
- mng_evnt_entryp pEntry;
- mng_uint8p pTemp;
- mng_uint32 iX;
- mng_uint32 iNamesize;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_EVNT, MNG_LC_START);
-#endif
-
- pEVNT = (mng_evntp)pChunk; /* address the proper chunk */
-
- if (!pEVNT->iCount) /* empty ? */
- iRetcode = write_raw_chunk (pData, pEVNT->sHeader.iChunkname, 0, 0);
- else
- {
- pRawdata = pData->pWritebuf+8; /* init output buffer & size */
- iRawlen = 0;
- pTemp = pRawdata;
- pEntry = pEVNT->pEntries;
-
- for (iX = 0; iX < pEVNT->iCount; iX++)
- {
- if (iX) /* put separator null-byte, except the first */
- {
- *pTemp = 0;
- pTemp++;
- iRawlen++;
- }
-
- *pTemp = pEntry->iEventtype;
- *(pTemp+1) = pEntry->iMasktype;
- pTemp += 2;
- iRawlen += 2;
-
- switch (pEntry->iMasktype)
- {
- case 1 :
- {
- mng_put_int32 (pTemp, pEntry->iLeft);
- mng_put_int32 (pTemp+4, pEntry->iRight);
- mng_put_int32 (pTemp+8, pEntry->iTop);
- mng_put_int32 (pTemp+12, pEntry->iBottom);
- pTemp += 16;
- iRawlen += 16;
- break;
- }
- case 2 :
- {
- mng_put_uint16 (pTemp, pEntry->iObjectid);
- pTemp += 2;
- iRawlen += 2;
- break;
- }
- case 3 :
- {
- mng_put_uint16 (pTemp, pEntry->iObjectid);
- *(pTemp+2) = pEntry->iIndex;
- pTemp += 3;
- iRawlen += 3;
- break;
- }
- case 4 :
- {
- mng_put_int32 (pTemp, pEntry->iLeft);
- mng_put_int32 (pTemp+4, pEntry->iRight);
- mng_put_int32 (pTemp+8, pEntry->iTop);
- mng_put_int32 (pTemp+12, pEntry->iBottom);
- mng_put_uint16 (pTemp+16, pEntry->iObjectid);
- pTemp += 18;
- iRawlen += 18;
- break;
- }
- case 5 :
- {
- mng_put_int32 (pTemp, pEntry->iLeft);
- mng_put_int32 (pTemp+4, pEntry->iRight);
- mng_put_int32 (pTemp+8, pEntry->iTop);
- mng_put_int32 (pTemp+12, pEntry->iBottom);
- mng_put_uint16 (pTemp+16, pEntry->iObjectid);
- *(pTemp+18) = pEntry->iIndex;
- pTemp += 19;
- iRawlen += 19;
- break;
- }
- }
-
- iNamesize = pEntry->iSegmentnamesize;
-
- if (iNamesize)
- {
- MNG_COPY (pTemp, pEntry->zSegmentname, iNamesize);
- pTemp += iNamesize;
- iRawlen += iNamesize;
- }
-
- pEntry++;
- }
- /* and write it */
- iRetcode = write_raw_chunk (pData, pEVNT->sHeader.iChunkname,
- iRawlen, pRawdata);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_EVNT, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-WRITE_CHUNK (mng_write_unknown)
-{
- mng_unknown_chunkp pUnknown;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_UNKNOWN, MNG_LC_START);
-#endif
- /* address the proper chunk */
- pUnknown = (mng_unknown_chunkp)pChunk;
- /* and write it */
- iRetcode = write_raw_chunk (pData, pUnknown->sHeader.iChunkname,
- pUnknown->iDatasize, pUnknown->pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_UNKNOWN, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_WRITE_PROCS */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
diff --git a/src/3rdparty/libmng/libmng_chunk_io.h b/src/3rdparty/libmng/libmng_chunk_io.h
deleted file mode 100644
index f8505baece..0000000000
--- a/src/3rdparty/libmng/libmng_chunk_io.h
+++ /dev/null
@@ -1,415 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_chunk_io.h copyright (c) 2000-2007 G.Juyn * */
-/* * version : 1.0.109 * */
-/* * * */
-/* * purpose : Chunk I/O routines (definition) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : Definition of the chunk input/output routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/04/2000 - G.Juyn * */
-/* * - changed CRC initialization to use dynamic structure * */
-/* * (wasn't thread-safe the old way !) * */
-/* * 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed write routines definition * */
-/* * - changed strict-ANSI stuff * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 08/26/2000 - G.Juyn * */
-/* * - added MAGN chunk * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added support for JDAA * */
-/* * * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * 1.0.5 - 09/14/2002 - G.Juyn * */
-/* * - added event handling for dynamic MNG * */
-/* * * */
-/* * 1.0.6 - 07/07/2003 - G.R-P * */
-/* * - added SKIP_CHUNK and NO_DELTA_PNG support * */
-/* * 1.0.6 - 07/29/2003 - G.R-P * */
-/* * - added conditionals around PAST chunk support * */
-/* * * */
-/* * 1.0.7 - 03/24/2004 - G.R-P * */
-/* * - fixed SKIPCHUNK_itXT and SKIPCHUNK_ztXT typos * */
-/* * * */
-/* * 1.0.9 - 12/07/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_CHUNKREADER * */
-/* * * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * 1.0.10 - 04/12/2007 - G.Juyn * */
-/* * - added support for ANG proposal * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_chunk_io_h_
-#define _libmng_chunk_io_h_
-
-/* ************************************************************************** */
-
-mng_uint32 mng_crc (mng_datap pData,
- mng_uint8p buf,
- mng_int32 len);
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_READ_PROCS
-
-/* ************************************************************************** */
-
-mng_retcode mng_inflate_buffer (mng_datap pData,
- mng_uint8p pInbuf,
- mng_uint32 iInsize,
- mng_uint8p *pOutbuf,
- mng_uint32 *iOutsize,
- mng_uint32 *iRealsize);
-
-/* ************************************************************************** */
-
-#define READ_CHUNK(n) mng_retcode n (mng_datap pData, \
- mng_chunkp pHeader, \
- mng_uint32 iRawlen, \
- mng_uint8p pRawdata, \
- mng_chunkp* ppChunk)
-
-#ifdef MNG_OPTIMIZE_CHUNKREADER
-READ_CHUNK (mng_read_general) ;
-#endif
-
-READ_CHUNK (mng_read_ihdr) ;
-READ_CHUNK (mng_read_plte) ;
-READ_CHUNK (mng_read_idat) ;
-READ_CHUNK (mng_read_iend) ;
-READ_CHUNK (mng_read_trns) ;
-READ_CHUNK (mng_read_gama) ;
-READ_CHUNK (mng_read_chrm) ;
-READ_CHUNK (mng_read_srgb) ;
-#ifndef MNG_SKIPCHUNK_iCCP
-READ_CHUNK (mng_read_iccp) ;
-#endif
-#ifndef MNG_SKIPCHUNK_tEXt
-READ_CHUNK (mng_read_text) ;
-#endif
-#ifndef MNG_SKIPCHUNK_zTXt
-READ_CHUNK (mng_read_ztxt) ;
-#endif
-#ifndef MNG_SKIPCHUNK_iTXt
-READ_CHUNK (mng_read_itxt) ;
-#endif
-#ifndef MNG_SKIPCHUNK_bKGD
-READ_CHUNK (mng_read_bkgd) ;
-#endif
-#ifndef MNG_SKIPCHUNK_pHYs
-READ_CHUNK (mng_read_phys) ;
-#endif
-#ifndef MNG_SKIPCHUNK_sBIT
-READ_CHUNK (mng_read_sbit) ;
-#endif
-#ifndef MNG_SKIPCHUNK_sPLT
-READ_CHUNK (mng_read_splt) ;
-#endif
-#ifndef MNG_SKIPCHUNK_hIST
-READ_CHUNK (mng_read_hist) ;
-#endif
-#ifndef MNG_SKIPCHUNK_tIME
-READ_CHUNK (mng_read_time) ;
-#endif
-READ_CHUNK (mng_read_mhdr) ;
-READ_CHUNK (mng_read_mend) ;
-READ_CHUNK (mng_read_loop) ;
-READ_CHUNK (mng_read_endl) ;
-READ_CHUNK (mng_read_defi) ;
-READ_CHUNK (mng_read_basi) ;
-READ_CHUNK (mng_read_clon) ;
-#ifndef MNG_SKIPCHUNK_PAST
-READ_CHUNK (mng_read_past) ;
-#endif
-READ_CHUNK (mng_read_disc) ;
-READ_CHUNK (mng_read_back) ;
-READ_CHUNK (mng_read_fram) ;
-READ_CHUNK (mng_read_move) ;
-READ_CHUNK (mng_read_clip) ;
-READ_CHUNK (mng_read_show) ;
-READ_CHUNK (mng_read_term) ;
-READ_CHUNK (mng_read_save) ;
-READ_CHUNK (mng_read_seek) ;
-#ifndef MNG_SKIPCHUNK_eXPI
-READ_CHUNK (mng_read_expi) ;
-#endif
-#ifndef MNG_SKIPCHUNK_fPRI
-READ_CHUNK (mng_read_fpri) ;
-#endif
-#ifndef MNG_SKIPCHUNK_pHYg
-READ_CHUNK (mng_read_phyg) ;
-#endif
-#ifdef MNG_INCLUDE_JNG
-READ_CHUNK (mng_read_jhdr) ;
-READ_CHUNK (mng_read_jdaa) ;
-READ_CHUNK (mng_read_jdat) ;
-READ_CHUNK (mng_read_jsep) ;
-#endif
-#ifndef MNG_NO_DELTA_PNG
-READ_CHUNK (mng_read_dhdr) ;
-READ_CHUNK (mng_read_prom) ;
-READ_CHUNK (mng_read_ipng) ;
-READ_CHUNK (mng_read_pplt) ;
-#ifdef MNG_INCLUDE_JNG
-READ_CHUNK (mng_read_ijng) ;
-#endif
-READ_CHUNK (mng_read_drop) ;
-READ_CHUNK (mng_read_dbyk) ;
-READ_CHUNK (mng_read_ordr) ;
-#endif
-READ_CHUNK (mng_read_magn) ;
-#ifndef MNG_SKIPCHUNK_nEED
-READ_CHUNK (mng_read_need) ;
-#endif
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-READ_CHUNK (mng_read_mpng) ;
-#endif
-#ifndef MNG_SKIPCHUNK_evNT
-READ_CHUNK (mng_read_evnt) ;
-#endif
-READ_CHUNK (mng_read_unknown) ;
-
-/* ************************************************************************** */
-
-#else /* MNG_INCLUDE_READ_PROCS */
-#define mng_read_ihdr 0
-#define mng_read_plte 0
-#define mng_read_idat 0
-#define mng_read_iend 0
-#define mng_read_trns 0
-#define mng_read_gama 0
-#define mng_read_chrm 0
-#define mng_read_srgb 0
-#define mng_read_iccp 0
-#define mng_read_text 0
-#define mng_read_ztxt 0
-#define mng_read_itxt 0
-#define mng_read_bkgd 0
-#define mng_read_phys 0
-#define mng_read_sbit 0
-#define mng_read_splt 0
-#define mng_read_hist 0
-#define mng_read_time 0
-#define mng_read_mhdr 0
-#define mng_read_mend 0
-#define mng_read_loop 0
-#define mng_read_endl 0
-#define mng_read_defi 0
-#define mng_read_basi 0
-#define mng_read_clon 0
-#ifndef MNG_SKIPCHUNK_PAST
-#define mng_read_past 0
-#endif
-#define mng_read_disc 0
-#define mng_read_back 0
-#define mng_read_fram 0
-#define mng_read_move 0
-#define mng_read_clip 0
-#define mng_read_show 0
-#define mng_read_term 0
-#define mng_read_save 0
-#define mng_read_seek 0
-#define mng_read_expi 0
-#define mng_read_fpri 0
-#define mng_read_phyg 0
-#ifdef MNG_INCLUDE_JNG
-#define mng_read_jhdr 0
-#define mng_read_jdaa 0
-#define mng_read_jdat 0
-#define mng_read_jsep 0
-#endif
-#ifndef MNG_NO_DELTA_PNG
-#define mng_read_dhdr 0
-#define mng_read_prom 0
-#define mng_read_ipng 0
-#define mng_read_pplt 0
-#ifdef MNG_INCLUDE_JNG
-#define mng_read_ijng 0
-#endif
-#define mng_read_drop 0
-#define mng_read_dbyk 0
-#define mng_read_ordr 0
-#endif
-#define mng_read_magn 0
-#define mng_read_need 0
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-#define mng_read_mpng 0
-#endif
-#define mng_read_evnt 0
-#define mng_read_unknown 0
-#endif /* MNG_INCLUDE_READ_PROCS */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_WRITE_PROCS
-
-#define WRITE_CHUNK(n) mng_retcode n (mng_datap pData, \
- mng_chunkp pChunk)
-
-WRITE_CHUNK (mng_write_ihdr) ;
-WRITE_CHUNK (mng_write_plte) ;
-WRITE_CHUNK (mng_write_idat) ;
-WRITE_CHUNK (mng_write_iend) ;
-WRITE_CHUNK (mng_write_trns) ;
-WRITE_CHUNK (mng_write_gama) ;
-WRITE_CHUNK (mng_write_chrm) ;
-WRITE_CHUNK (mng_write_srgb) ;
-WRITE_CHUNK (mng_write_iccp) ;
-WRITE_CHUNK (mng_write_text) ;
-WRITE_CHUNK (mng_write_ztxt) ;
-WRITE_CHUNK (mng_write_itxt) ;
-WRITE_CHUNK (mng_write_bkgd) ;
-WRITE_CHUNK (mng_write_phys) ;
-WRITE_CHUNK (mng_write_sbit) ;
-WRITE_CHUNK (mng_write_splt) ;
-WRITE_CHUNK (mng_write_hist) ;
-WRITE_CHUNK (mng_write_time) ;
-WRITE_CHUNK (mng_write_mhdr) ;
-WRITE_CHUNK (mng_write_mend) ;
-WRITE_CHUNK (mng_write_loop) ;
-WRITE_CHUNK (mng_write_endl) ;
-WRITE_CHUNK (mng_write_defi) ;
-WRITE_CHUNK (mng_write_basi) ;
-WRITE_CHUNK (mng_write_clon) ;
-#ifndef MNG_SKIPCHUNK_PAST
-WRITE_CHUNK (mng_write_past) ;
-#endif
-WRITE_CHUNK (mng_write_disc) ;
-WRITE_CHUNK (mng_write_back) ;
-WRITE_CHUNK (mng_write_fram) ;
-WRITE_CHUNK (mng_write_move) ;
-WRITE_CHUNK (mng_write_clip) ;
-WRITE_CHUNK (mng_write_show) ;
-WRITE_CHUNK (mng_write_term) ;
-WRITE_CHUNK (mng_write_save) ;
-WRITE_CHUNK (mng_write_seek) ;
-WRITE_CHUNK (mng_write_expi) ;
-WRITE_CHUNK (mng_write_fpri) ;
-WRITE_CHUNK (mng_write_phyg) ;
-#ifdef MNG_INCLUDE_JNG
-WRITE_CHUNK (mng_write_jhdr) ;
-WRITE_CHUNK (mng_write_jdaa) ;
-WRITE_CHUNK (mng_write_jdat) ;
-WRITE_CHUNK (mng_write_jsep) ;
-#endif
-#ifndef MNG_NO_DELTA_PNG
-WRITE_CHUNK (mng_write_dhdr) ;
-WRITE_CHUNK (mng_write_prom) ;
-WRITE_CHUNK (mng_write_ipng) ;
-WRITE_CHUNK (mng_write_pplt) ;
-#ifdef MNG_INCLUDE_JNG
-WRITE_CHUNK (mng_write_ijng) ;
-#endif
-WRITE_CHUNK (mng_write_drop) ;
-WRITE_CHUNK (mng_write_dbyk) ;
-WRITE_CHUNK (mng_write_ordr) ;
-#endif
-WRITE_CHUNK (mng_write_magn) ;
-WRITE_CHUNK (mng_write_need) ;
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-WRITE_CHUNK (mng_write_mpng) ;
-#endif
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-WRITE_CHUNK (mng_write_ahdr) ;
-WRITE_CHUNK (mng_write_adat) ;
-#endif
-WRITE_CHUNK (mng_write_evnt) ;
-WRITE_CHUNK (mng_write_unknown) ;
-
-/* ************************************************************************** */
-
-#else /* MNG_INCLUDE_WRITE_PROCS */
-#define mng_write_ihdr 0
-#define mng_write_plte 0
-#define mng_write_idat 0
-#define mng_write_iend 0
-#define mng_write_trns 0
-#define mng_write_gama 0
-#define mng_write_chrm 0
-#define mng_write_srgb 0
-#define mng_write_iccp 0
-#define mng_write_text 0
-#define mng_write_ztxt 0
-#define mng_write_itxt 0
-#define mng_write_bkgd 0
-#define mng_write_phys 0
-#define mng_write_sbit 0
-#define mng_write_splt 0
-#define mng_write_hist 0
-#define mng_write_time 0
-#define mng_write_mhdr 0
-#define mng_write_mend 0
-#define mng_write_loop 0
-#define mng_write_endl 0
-#define mng_write_defi 0
-#define mng_write_basi 0
-#define mng_write_clon 0
-#ifndef MNG_SKIPCHUNK_PAST
-#define mng_write_past 0
-#endif
-#define mng_write_disc 0
-#define mng_write_back 0
-#define mng_write_fram 0
-#define mng_write_move 0
-#define mng_write_clip 0
-#define mng_write_show 0
-#define mng_write_term 0
-#define mng_write_save 0
-#define mng_write_seek 0
-#define mng_write_expi 0
-#define mng_write_fpri 0
-#define mng_write_phyg 0
-#ifdef MNG_INCLUDE_JNG
-#define mng_write_jhdr 0
-#define mng_write_jdaa 0
-#define mng_write_jdat 0
-#define mng_write_jsep 0
-#endif
-#ifndef MNG_NO_DELTA_PNG
-#define mng_write_dhdr 0
-#define mng_write_prom 0
-#define mng_write_ipng 0
-#define mng_write_pplt 0
-#ifdef MNG_INCLUDE_JNG
-#define mng_write_ijng 0
-#endif
-#define mng_write_drop 0
-#define mng_write_dbyk 0
-#define mng_write_ordr 0
-#endif
-#define mng_write_magn 0
-#define mng_write_need 0
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-#define mng_write_mpng 0
-#endif
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-#define mng_write_adat 0
-#define mng_write_ahdr 0
-#endif
-#define mng_write_evnt 0
-#define mng_write_unknown 0
-#endif /* MNG_INCLUDE_WRITE_PROCS */
-
-/* ************************************************************************** */
-
-#endif /* _libmng_chunk_io_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/libmng_chunk_prc.c b/src/3rdparty/libmng/libmng_chunk_prc.c
deleted file mode 100644
index e633e7e260..0000000000
--- a/src/3rdparty/libmng/libmng_chunk_prc.c
+++ /dev/null
@@ -1,4452 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_chunk_prc.c copyright (c) 2000-2005 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : Chunk initialization & cleanup (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of the chunk initialization & cleanup * */
-/* * routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/12/2000 - G.Juyn * */
-/* * - changed trace to macro for callback error-reporting * */
-/* * * */
-/* * 0.9.1 - 07/19/2000 - G.Juyn * */
-/* * - fixed creation-code * */
-/* * * */
-/* * 0.9.2 - 07/31/2000 - G.Juyn * */
-/* * - put add_chunk() inside MNG_INCLUDE_WRITE_PROCS wrapper * */
-/* * 0.9.2 - 08/01/2000 - G.Juyn * */
-/* * - wrapper for add_chunk() changed * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 08/26/2000 - G.Juyn * */
-/* * - added MAGN chunk * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added support for JDAA * */
-/* * * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * - added HLAPI function to copy chunks * */
-/* * 1.0.5 - 09/14/2002 - G.Juyn * */
-/* * - added event handling for dynamic MNG * */
-/* * 1.0.5 - 10/04/2002 - G.Juyn * */
-/* * - fixed chunk-storage for evNT chunk * */
-/* * 1.0.5 - 10/17/2002 - G.Juyn * */
-/* * - fixed issue in freeing evNT chunk * */
-/* * * */
-/* * 1.0.6 - 07/07/2003 - G.R-P * */
-/* * - added MNG_SKIPCHUNK_cHNK footprint optimizations * */
-/* * - added MNG_NO_DELTA_PNG reduction feature * */
-/* * 1.0.6 - 07/14/2003 - G.R-P * */
-/* * - added MNG_NO_LOOP_SIGNALS_SUPPORTED conditional * */
-/* * 1.0.6 - 07/29/2003 - G.R-P * */
-/* * - added conditionals around PAST chunk support * */
-/* * 1.0.6 - 08/17/2003 - G.R-P * */
-/* * - added conditionals around non-VLC chunk support * */
-/* * * */
-/* * 1.0.7 - 03/24/2004 - G.R-P * */
-/* * - fixed SKIPCHUNK_eXPI -> fPRI typo * */
-/* * * */
-/* * 1.0.9 - 09/25/2004 - G.Juyn * */
-/* * - replaced MNG_TWEAK_LARGE_FILES with permanent solution * */
-/* * 1.0.9 - 12/05/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_CHUNKINITFREE * */
-/* * 1.0.9 - 12/06/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_CHUNKASSIGN * */
-/* * 1.0.9 - 12/20/2004 - G.Juyn * */
-/* * - cleaned up macro-invocations (thanks to D. Airlie) * */
-/* * * */
-/* * 1.0.10 - 07/30/2005 - G.Juyn * */
-/* * - fixed problem with CLON object during readdisplay() * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * 1.0.10 - 04/12/2007 - G.Juyn * */
-/* * - added support for ANG proposal * */
-/* * * */
-/* ************************************************************************** */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-#include "libmng_memory.h"
-#include "libmng_chunks.h"
-#include "libmng_chunk_prc.h"
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * General chunk routines * */
-/* * * */
-/* ************************************************************************** */
-
-void mng_add_chunk (mng_datap pData,
- mng_chunkp pChunk)
-{
- if (!pData->pFirstchunk) /* list is still empty ? */
- {
- pData->pFirstchunk = pChunk; /* then this becomes the first */
-
-#ifdef MNG_SUPPORT_WRITE
- if (!pData->iFirstchunkadded)
- {
- pData->iFirstchunkadded = ((mng_chunk_headerp)pChunk)->iChunkname;
-#endif
-
- if (((mng_chunk_headerp)pChunk)->iChunkname == MNG_UINT_IHDR)
- pData->eImagetype = mng_it_png;
- else
-#ifdef MNG_INCLUDE_JNG
- if (((mng_chunk_headerp)pChunk)->iChunkname == MNG_UINT_JHDR)
- pData->eImagetype = mng_it_jng;
- else
-#endif
- pData->eImagetype = mng_it_mng;
-
- pData->eSigtype = pData->eImagetype;
-#ifdef MNG_SUPPORT_WRITE
- }
-#endif
- }
- else
- { /* else we make appropriate links */
- ((mng_chunk_headerp)pChunk)->pPrev = pData->pLastchunk;
- ((mng_chunk_headerp)pData->pLastchunk)->pNext = pChunk;
- }
-
- pData->pLastchunk = pChunk; /* and it's always the last */
-
- return;
-}
-
-/* ************************************************************************** */
-/* * * */
-/* * Chunk specific initialization routines * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
-INIT_CHUNK_HDR (mng_init_general)
-{
- MNG_ALLOC (pData, *ppChunk, ((mng_chunk_headerp)pHeader)->iChunksize);
- MNG_COPY (*ppChunk, pHeader, sizeof (mng_chunk_header));
- return MNG_NOERROR;
-}
-
-#else /* MNG_OPTIMIZE_CHUNKINITFREE */
-
-/* ************************************************************************** */
-
-INIT_CHUNK_HDR (mng_init_ihdr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IHDR, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_ihdr));
- ((mng_ihdrp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-INIT_CHUNK_HDR (mng_init_plte)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_PLTE, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_plte));
- ((mng_pltep)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_PLTE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-INIT_CHUNK_HDR (mng_init_idat)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IDAT, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_idat));
- ((mng_idatp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IDAT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-INIT_CHUNK_HDR (mng_init_iend)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IEND, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_iend));
- ((mng_iendp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IEND, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-INIT_CHUNK_HDR (mng_init_trns)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_TRNS, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_trns));
- ((mng_trnsp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_TRNS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_gAMA
-INIT_CHUNK_HDR (mng_init_gama)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_GAMA, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_gama));
- ((mng_gamap)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_GAMA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_cHRM
-INIT_CHUNK_HDR (mng_init_chrm)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_CHRM, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_chrm));
- ((mng_chrmp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_CHRM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sRGB
-INIT_CHUNK_HDR (mng_init_srgb)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_SRGB, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_srgb));
- ((mng_srgbp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_SRGB, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iCCP
-INIT_CHUNK_HDR (mng_init_iccp)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_ICCP, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_iccp));
- ((mng_iccpp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_ICCP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_tEXt
-INIT_CHUNK_HDR (mng_init_text)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_TEXT, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_text));
- ((mng_textp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_TEXT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_zTXt
-INIT_CHUNK_HDR (mng_init_ztxt)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_ZTXT, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_ztxt));
- ((mng_ztxtp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_ZTXT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iTXt
-INIT_CHUNK_HDR (mng_init_itxt)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_ITXT, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_itxt));
- ((mng_itxtp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_ITXT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_bKGD
-INIT_CHUNK_HDR (mng_init_bkgd)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_BKGD, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_bkgd));
- ((mng_bkgdp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_BKGD, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_pHYs
-INIT_CHUNK_HDR (mng_init_phys)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_PHYS, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_phys));
- ((mng_physp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_PHYS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sBIT
-INIT_CHUNK_HDR (mng_init_sbit)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_SBIT, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_sbit));
- ((mng_sbitp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_SBIT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sPLT
-INIT_CHUNK_HDR (mng_init_splt)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_SPLT, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_splt));
- ((mng_spltp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_SPLT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_hIST
-INIT_CHUNK_HDR (mng_init_hist)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_HIST, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_hist));
- ((mng_histp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_HIST, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_tIME
-INIT_CHUNK_HDR (mng_init_time)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_TIME, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_time));
- ((mng_timep)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_TIME, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-INIT_CHUNK_HDR (mng_init_mhdr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_MHDR, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_mhdr));
- ((mng_mhdrp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_MHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-INIT_CHUNK_HDR (mng_init_mend)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_MEND, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_mend));
- ((mng_mendp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_MEND, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_LOOP
-INIT_CHUNK_HDR (mng_init_loop)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_LOOP, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_loop));
- ((mng_loopp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_LOOP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-INIT_CHUNK_HDR (mng_init_endl)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_ENDL, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_endl));
- ((mng_endlp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_ENDL, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DEFI
-INIT_CHUNK_HDR (mng_init_defi)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_DEFI, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_defi));
- ((mng_defip)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_DEFI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_BASI
-INIT_CHUNK_HDR (mng_init_basi)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_BASI, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_basi));
- ((mng_basip)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_BASI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_CLON
-INIT_CHUNK_HDR (mng_init_clon)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_CLON, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_clon));
- ((mng_clonp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_CLON, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-INIT_CHUNK_HDR (mng_init_past)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_PAST, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_past));
- ((mng_pastp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_PAST, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DISC
-INIT_CHUNK_HDR (mng_init_disc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_DISC, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_disc));
- ((mng_discp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_DISC, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_BACK
-INIT_CHUNK_HDR (mng_init_back)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_BACK, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_back));
- ((mng_backp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_BACK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_FRAM
-INIT_CHUNK_HDR (mng_init_fram)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_FRAM, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_fram));
- ((mng_framp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_FRAM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_MOVE
-INIT_CHUNK_HDR (mng_init_move)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_MOVE, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_move));
- ((mng_movep)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_MOVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_CLIP
-INIT_CHUNK_HDR (mng_init_clip)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_CLIP, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_clip));
- ((mng_clipp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_CLIP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SHOW
-INIT_CHUNK_HDR (mng_init_show)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_SHOW, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_show));
- ((mng_showp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_SHOW, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_TERM
-INIT_CHUNK_HDR (mng_init_term)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_TERM, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_term));
- ((mng_termp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_TERM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SAVE
-INIT_CHUNK_HDR (mng_init_save)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_SAVE, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_save));
- ((mng_savep)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_SAVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SEEK
-INIT_CHUNK_HDR (mng_init_seek)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_SEEK, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_seek));
- ((mng_seekp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_SEEK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_eXPI
-INIT_CHUNK_HDR (mng_init_expi)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_EXPI, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_expi));
- ((mng_expip)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_EXPI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_fPRI
-INIT_CHUNK_HDR (mng_init_fpri)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_FPRI, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_fpri));
- ((mng_fprip)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_FPRI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_nEED
-INIT_CHUNK_HDR (mng_init_need)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_NEED, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_need));
- ((mng_needp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_NEED, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_pHYg
-INIT_CHUNK_HDR (mng_init_phyg)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_PHYG, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_phyg));
- ((mng_phygp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_PHYG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-INIT_CHUNK_HDR (mng_init_jhdr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_JHDR, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_jhdr));
- ((mng_jhdrp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_JHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-INIT_CHUNK_HDR (mng_init_jdaa)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_JDAA, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_jdaa));
- ((mng_jdaap)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_JDAA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-INIT_CHUNK_HDR (mng_init_jdat)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_JDAT, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_jdat));
- ((mng_jdatp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_JDAT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-INIT_CHUNK_HDR (mng_init_jsep)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_JSEP, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_jsep));
- ((mng_jsepp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_JSEP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-INIT_CHUNK_HDR (mng_init_dhdr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_DHDR, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_dhdr));
- ((mng_dhdrp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_DHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-INIT_CHUNK_HDR (mng_init_prom)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_PROM, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_prom));
- ((mng_promp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_PROM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-INIT_CHUNK_HDR (mng_init_ipng)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IPNG, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_ipng));
- ((mng_ipngp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IPNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-INIT_CHUNK_HDR (mng_init_pplt)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_PPLT, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_pplt));
- ((mng_ppltp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_PPLT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifdef MNG_INCLUDE_JNG
-INIT_CHUNK_HDR (mng_init_ijng)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IJNG, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_ijng));
- ((mng_ijngp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IJNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-INIT_CHUNK_HDR (mng_init_drop)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_DROP, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_drop));
- ((mng_dropp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_DROP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_DBYK
-INIT_CHUNK_HDR (mng_init_dbyk)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_DBYK, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_dbyk));
- ((mng_dbykp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_DBYK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_ORDR
-INIT_CHUNK_HDR (mng_init_ordr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_ORDR, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_ordr));
- ((mng_ordrp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_ORDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_MAGN
-INIT_CHUNK_HDR (mng_init_magn)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_MAGN, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_magn));
- ((mng_magnp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_MAGN, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_evNT
-INIT_CHUNK_HDR (mng_init_evnt)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_EVNT, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_evnt));
- ((mng_evntp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_EVNT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-INIT_CHUNK_HDR (mng_init_unknown)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_UNKNOWN, MNG_LC_START);
-#endif
-
- MNG_ALLOC (pData, *ppChunk, sizeof (mng_unknown_chunk));
- ((mng_unknown_chunkp)*ppChunk)->sHeader = *((mng_chunk_headerp)pHeader);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_UNKNOWN, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#endif /* MNG_OPTIMIZE_CHUNKINITFREE */
-
-/* ************************************************************************** */
-/* * * */
-/* * Chunk specific cleanup routines * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
-FREE_CHUNK_HDR (mng_free_general)
-{
- MNG_FREEX (pData, pHeader, ((mng_chunk_headerp)pHeader)->iChunksize);
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-FREE_CHUNK_HDR (mng_free_ihdr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_IHDR, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_ihdr));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_IHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-FREE_CHUNK_HDR (mng_free_plte)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_PLTE, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_plte));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_PLTE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-FREE_CHUNK_HDR (mng_free_idat)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_IDAT, MNG_LC_START);
-#endif
-
- if (((mng_idatp)pHeader)->iDatasize)
- MNG_FREEX (pData, ((mng_idatp)pHeader)->pData,
- ((mng_idatp)pHeader)->iDatasize);
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_idat));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_IDAT, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-FREE_CHUNK_HDR (mng_free_iend)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_IEND, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_iend));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_IEND, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-FREE_CHUNK_HDR (mng_free_trns)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_TRNS, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_trns));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_TRNS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_gAMA
-FREE_CHUNK_HDR (mng_free_gama)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_GAMA, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_gama));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_GAMA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_cHRM
-FREE_CHUNK_HDR (mng_free_chrm)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_CHRM, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_chrm));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_CHRM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_sRGB
-FREE_CHUNK_HDR (mng_free_srgb)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_SRGB, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_srgb));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_SRGB, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iCCP
-FREE_CHUNK_HDR (mng_free_iccp)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ICCP, MNG_LC_START);
-#endif
-
- if (((mng_iccpp)pHeader)->iNamesize)
- MNG_FREEX (pData, ((mng_iccpp)pHeader)->zName,
- ((mng_iccpp)pHeader)->iNamesize + 1);
-
- if (((mng_iccpp)pHeader)->iProfilesize)
- MNG_FREEX (pData, ((mng_iccpp)pHeader)->pProfile,
- ((mng_iccpp)pHeader)->iProfilesize);
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_iccp));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ICCP, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_tEXt
-FREE_CHUNK_HDR (mng_free_text)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_TEXT, MNG_LC_START);
-#endif
-
- if (((mng_textp)pHeader)->iKeywordsize)
- MNG_FREEX (pData, ((mng_textp)pHeader)->zKeyword,
- ((mng_textp)pHeader)->iKeywordsize + 1);
-
- if (((mng_textp)pHeader)->iTextsize)
- MNG_FREEX (pData, ((mng_textp)pHeader)->zText,
- ((mng_textp)pHeader)->iTextsize + 1);
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_text));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_TEXT, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_zTXt
-FREE_CHUNK_HDR (mng_free_ztxt)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ZTXT, MNG_LC_START);
-#endif
-
- if (((mng_ztxtp)pHeader)->iKeywordsize)
- MNG_FREEX (pData, ((mng_ztxtp)pHeader)->zKeyword,
- ((mng_ztxtp)pHeader)->iKeywordsize + 1);
-
- if (((mng_ztxtp)pHeader)->iTextsize)
- MNG_FREEX (pData, ((mng_ztxtp)pHeader)->zText,
- ((mng_ztxtp)pHeader)->iTextsize);
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_ztxt));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ZTXT, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-#ifndef MNG_SKIPCHUNK_iTXt
-FREE_CHUNK_HDR (mng_free_itxt)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ITXT, MNG_LC_START);
-#endif
-
- if (((mng_itxtp)pHeader)->iKeywordsize)
- MNG_FREEX (pData, ((mng_itxtp)pHeader)->zKeyword,
- ((mng_itxtp)pHeader)->iKeywordsize + 1);
-
- if (((mng_itxtp)pHeader)->iLanguagesize)
- MNG_FREEX (pData, ((mng_itxtp)pHeader)->zLanguage,
- ((mng_itxtp)pHeader)->iLanguagesize + 1);
-
- if (((mng_itxtp)pHeader)->iTranslationsize)
- MNG_FREEX (pData, ((mng_itxtp)pHeader)->zTranslation,
- ((mng_itxtp)pHeader)->iTranslationsize + 1);
-
- if (((mng_itxtp)pHeader)->iTextsize)
- MNG_FREEX (pData, ((mng_itxtp)pHeader)->zText,
- ((mng_itxtp)pHeader)->iTextsize);
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_itxt));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ITXT, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-FREE_CHUNK_HDR (mng_free_mpng)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_MPNG, MNG_LC_START);
-#endif
-
- if (((mng_mpngp)pHeader)->iFramessize)
- MNG_FREEX (pData, ((mng_mpngp)pHeader)->pFrames,
- ((mng_mpngp)pHeader)->iFramessize);
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_mpng));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_MPNG, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-FREE_CHUNK_HDR (mng_free_adat)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ADAT, MNG_LC_START);
-#endif
-
- if (((mng_adatp)pHeader)->iTilessize)
- MNG_FREEX (pData, ((mng_adatp)pHeader)->pTiles, ((mng_adatp)pHeader)->iTilessize);
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_adat));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ADAT, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_bKGD
-FREE_CHUNK_HDR (mng_free_bkgd)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_BKGD, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_bkgd));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_BKGD, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_pHYs
-FREE_CHUNK_HDR (mng_free_phys)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_PHYS, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_phys));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_PHYS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_sBIT
-FREE_CHUNK_HDR (mng_free_sbit)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_SBIT, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_sbit));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_SBIT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sPLT
-FREE_CHUNK_HDR (mng_free_splt)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_SPLT, MNG_LC_START);
-#endif
-
- if (((mng_spltp)pHeader)->iNamesize)
- MNG_FREEX (pData, ((mng_spltp)pHeader)->zName,
- ((mng_spltp)pHeader)->iNamesize + 1);
-
- if (((mng_spltp)pHeader)->iEntrycount)
- MNG_FREEX (pData, ((mng_spltp)pHeader)->pEntries,
- ((mng_spltp)pHeader)->iEntrycount *
- (((mng_spltp)pHeader)->iSampledepth * 3 + sizeof (mng_uint16)) );
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_splt));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_SPLT, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_hIST
-FREE_CHUNK_HDR (mng_free_hist)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_HIST, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_hist));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_HIST, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_tIME
-FREE_CHUNK_HDR (mng_free_time)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_TIME, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_time));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_TIME, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-FREE_CHUNK_HDR (mng_free_mhdr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_MHDR, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_mhdr));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_MHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-FREE_CHUNK_HDR (mng_free_mend)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_MEND, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_mend));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_MEND, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_LOOP
-FREE_CHUNK_HDR (mng_free_loop)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_LOOP, MNG_LC_START);
-#endif
-
-#ifndef MNG_NO_LOOP_SIGNALS_SUPPORTED
- if (((mng_loopp)pHeader)->iCount)
- MNG_FREEX (pData, ((mng_loopp)pHeader)->pSignals,
- ((mng_loopp)pHeader)->iCount * sizeof (mng_uint32) );
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_loop));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_LOOP, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-FREE_CHUNK_HDR (mng_free_endl)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ENDL, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_endl));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ENDL, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_DEFI
-FREE_CHUNK_HDR (mng_free_defi)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_DEFI, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_defi));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_DEFI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_BASI
-FREE_CHUNK_HDR (mng_free_basi)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_BASI, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_basi));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_BASI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_CLON
-FREE_CHUNK_HDR (mng_free_clon)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_CLON, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_clon));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_CLON, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-FREE_CHUNK_HDR (mng_free_past)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_PAST, MNG_LC_START);
-#endif
-
- if (((mng_pastp)pHeader)->iCount)
- MNG_FREEX (pData, ((mng_pastp)pHeader)->pSources,
- ((mng_pastp)pHeader)->iCount * sizeof (mng_past_source) );
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_past));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_PAST, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DISC
-FREE_CHUNK_HDR (mng_free_disc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_DISC, MNG_LC_START);
-#endif
-
- if (((mng_discp)pHeader)->iCount)
- MNG_FREEX (pData, ((mng_discp)pHeader)->pObjectids,
- ((mng_discp)pHeader)->iCount * sizeof (mng_uint16) );
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_disc));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_DISC, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_BACK
-FREE_CHUNK_HDR (mng_free_back)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_BACK, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_back));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_BACK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_FRAM
-FREE_CHUNK_HDR (mng_free_fram)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_FRAM, MNG_LC_START);
-#endif
-
- if (((mng_framp)pHeader)->iNamesize)
- MNG_FREEX (pData, ((mng_framp)pHeader)->zName,
- ((mng_framp)pHeader)->iNamesize + 1);
-
- if (((mng_framp)pHeader)->iCount)
- MNG_FREEX (pData, ((mng_framp)pHeader)->pSyncids,
- ((mng_framp)pHeader)->iCount * sizeof (mng_uint32) );
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_fram));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_FRAM, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_MOVE
-FREE_CHUNK_HDR (mng_free_move)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_MOVE, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_move));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_MOVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_CLIP
-FREE_CHUNK_HDR (mng_free_clip)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_CLIP, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_clip));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_CLIP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_SHOW
-FREE_CHUNK_HDR (mng_free_show)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_SHOW, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_show));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_SHOW, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_TERM
-FREE_CHUNK_HDR (mng_free_term)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_TERM, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_term));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_TERM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SAVE
-FREE_CHUNK_HDR (mng_free_save)
-{
- mng_save_entryp pEntry = ((mng_savep)pHeader)->pEntries;
- mng_uint32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_SAVE, MNG_LC_START);
-#endif
-
- for (iX = 0; iX < ((mng_savep)pHeader)->iCount; iX++)
- {
- if (pEntry->iNamesize)
- MNG_FREEX (pData, pEntry->zName, pEntry->iNamesize);
-
- pEntry = pEntry + sizeof (mng_save_entry);
- }
-
- if (((mng_savep)pHeader)->iCount)
- MNG_FREEX (pData, ((mng_savep)pHeader)->pEntries,
- ((mng_savep)pHeader)->iCount * sizeof (mng_save_entry) );
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_save));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_SAVE, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SEEK
-FREE_CHUNK_HDR (mng_free_seek)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_SEEK, MNG_LC_START);
-#endif
-
- if (((mng_seekp)pHeader)->iNamesize)
- MNG_FREEX (pData, ((mng_seekp)pHeader)->zName,
- ((mng_seekp)pHeader)->iNamesize + 1);
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_seek));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_SEEK, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_eXPI
-FREE_CHUNK_HDR (mng_free_expi)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_EXPI, MNG_LC_START);
-#endif
-
- if (((mng_expip)pHeader)->iNamesize)
- MNG_FREEX (pData, ((mng_expip)pHeader)->zName,
- ((mng_expip)pHeader)->iNamesize + 1);
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_expi));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_EXPI, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_fPRI
-FREE_CHUNK_HDR (mng_free_fpri)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_FPRI, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_fpri));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_FPRI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_nEED
-FREE_CHUNK_HDR (mng_free_need)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_NEED, MNG_LC_START);
-#endif
-
- if (((mng_needp)pHeader)->iKeywordssize)
- MNG_FREEX (pData, ((mng_needp)pHeader)->zKeywords,
- ((mng_needp)pHeader)->iKeywordssize + 1);
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_need));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_NEED, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_pHYg
-FREE_CHUNK_HDR (mng_free_phyg)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_PHYG, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_phyg));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_PHYG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifdef MNG_INCLUDE_JNG
-FREE_CHUNK_HDR (mng_free_jhdr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_JHDR, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_jhdr));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_JHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG */
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-FREE_CHUNK_HDR (mng_free_jdaa)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_JDAA, MNG_LC_START);
-#endif
-
- if (((mng_jdaap)pHeader)->iDatasize)
- MNG_FREEX (pData, ((mng_jdaap)pHeader)->pData,
- ((mng_jdaap)pHeader)->iDatasize);
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_jdaa));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_JDAA, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-FREE_CHUNK_HDR (mng_free_jdat)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_JDAT, MNG_LC_START);
-#endif
-
- if (((mng_jdatp)pHeader)->iDatasize)
- MNG_FREEX (pData, ((mng_jdatp)pHeader)->pData,
- ((mng_jdatp)pHeader)->iDatasize);
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_jdat));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_JDAT, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifdef MNG_INCLUDE_JNG
-FREE_CHUNK_HDR (mng_free_jsep)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_JSEP, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_jsep));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_JSEP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG */
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_NO_DELTA_PNG
-FREE_CHUNK_HDR (mng_free_dhdr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_DHDR, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_dhdr));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_DHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_NO_DELTA_PNG
-FREE_CHUNK_HDR (mng_free_prom)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_PROM, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_prom));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_PROM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_NO_DELTA_PNG
-FREE_CHUNK_HDR (mng_free_ipng)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_IPNG, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_ipng));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_IPNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_NO_DELTA_PNG
-FREE_CHUNK_HDR (mng_free_pplt)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_PPLT, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_pplt));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_PPLT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_NO_DELTA_PNG
-#ifdef MNG_INCLUDE_JNG
-FREE_CHUNK_HDR (mng_free_ijng)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_IJNG, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_ijng));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_IJNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-FREE_CHUNK_HDR (mng_free_drop)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_DROP, MNG_LC_START);
-#endif
-
- if (((mng_dropp)pHeader)->iCount)
- MNG_FREEX (pData, ((mng_dropp)pHeader)->pChunknames,
- ((mng_dropp)pHeader)->iCount * sizeof (mng_chunkid) );
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_drop));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_DROP, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_DBYK
-FREE_CHUNK_HDR (mng_free_dbyk)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_DBYK, MNG_LC_START);
-#endif
-
- if (((mng_dbykp)pHeader)->iKeywordssize)
- MNG_FREEX (pData, ((mng_dbykp)pHeader)->zKeywords,
- ((mng_dbykp)pHeader)->iKeywordssize);
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_dbyk));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_DBYK, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_ORDR
-FREE_CHUNK_HDR (mng_free_ordr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ORDR, MNG_LC_START);
-#endif
-
- if (((mng_ordrp)pHeader)->iCount)
- MNG_FREEX (pData, ((mng_ordrp)pHeader)->pEntries,
- ((mng_ordrp)pHeader)->iCount * sizeof (mng_ordr_entry) );
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_ordr));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ORDR, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
-#ifndef MNG_SKIPCHUNK_MAGN
-FREE_CHUNK_HDR (mng_free_magn)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_MAGN, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pHeader, sizeof (mng_magn));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_MAGN, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_evNT
-FREE_CHUNK_HDR (mng_free_evnt)
-{
- mng_evnt_entryp pEntry = ((mng_evntp)pHeader)->pEntries;
- mng_uint32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_EVNT, MNG_LC_START);
-#endif
-
- for (iX = 0; iX < ((mng_evntp)pHeader)->iCount; iX++)
- {
- if (pEntry->iSegmentnamesize)
- MNG_FREEX (pData, pEntry->zSegmentname, pEntry->iSegmentnamesize+1);
-
- pEntry++;
- }
-
- if (((mng_evntp)pHeader)->iCount)
- MNG_FREEX (pData, ((mng_evntp)pHeader)->pEntries,
- ((mng_evntp)pHeader)->iCount * sizeof (mng_evnt_entry) );
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_evnt));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_EVNT, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-
-FREE_CHUNK_HDR (mng_free_unknown)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_UNKNOWN, MNG_LC_START);
-#endif
-
- if (((mng_unknown_chunkp)pHeader)->iDatasize)
- MNG_FREEX (pData, ((mng_unknown_chunkp)pHeader)->pData,
- ((mng_unknown_chunkp)pHeader)->iDatasize);
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- MNG_FREEX (pData, pHeader, sizeof (mng_unknown_chunk));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_UNKNOWN, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKINITFREE
- return MNG_NOERROR;
-#else
- return mng_free_general(pData, pHeader);
-#endif
-}
-
-/* ************************************************************************** */
-/* * * */
-/* * Chunk specific copy routines * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_WRITE_PROCS
-
-/* ************************************************************************** */
-
-#ifdef MNG_OPTIMIZE_CHUNKASSIGN
-ASSIGN_CHUNK_HDR (mng_assign_general)
-{
- mng_ptr pSrc = (mng_uint8p)pChunkfrom + sizeof (mng_chunk_header);
- mng_ptr pDst = (mng_uint8p)pChunkto + sizeof (mng_chunk_header);
- mng_size_t iLen = ((mng_chunk_headerp)pChunkfrom)->iChunksize - sizeof (mng_chunk_header);
-
- MNG_COPY (pDst, pSrc, iLen);
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-ASSIGN_CHUNK_HDR (mng_assign_ihdr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_IHDR, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_IHDR)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_ihdrp)pChunkto)->iWidth = ((mng_ihdrp)pChunkfrom)->iWidth;
- ((mng_ihdrp)pChunkto)->iHeight = ((mng_ihdrp)pChunkfrom)->iHeight;
- ((mng_ihdrp)pChunkto)->iBitdepth = ((mng_ihdrp)pChunkfrom)->iBitdepth;
- ((mng_ihdrp)pChunkto)->iColortype = ((mng_ihdrp)pChunkfrom)->iColortype;
- ((mng_ihdrp)pChunkto)->iCompression = ((mng_ihdrp)pChunkfrom)->iCompression;
- ((mng_ihdrp)pChunkto)->iFilter = ((mng_ihdrp)pChunkfrom)->iFilter;
- ((mng_ihdrp)pChunkto)->iInterlace = ((mng_ihdrp)pChunkfrom)->iInterlace;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_IHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-ASSIGN_CHUNK_HDR (mng_assign_plte)
-{
- mng_uint32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_PLTE, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_PLTE)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_pltep)pChunkto)->bEmpty = ((mng_pltep)pChunkfrom)->bEmpty;
- ((mng_pltep)pChunkto)->iEntrycount = ((mng_pltep)pChunkfrom)->iEntrycount;
-
- for (iX = 0; iX < ((mng_pltep)pChunkto)->iEntrycount; iX++)
- ((mng_pltep)pChunkto)->aEntries [iX] = ((mng_pltep)pChunkfrom)->aEntries [iX];
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_PLTE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-ASSIGN_CHUNK_HDR (mng_assign_idat)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_IDAT, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_IDAT)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_idatp)pChunkto)->bEmpty = ((mng_idatp)pChunkfrom)->bEmpty;
- ((mng_idatp)pChunkto)->iDatasize = ((mng_idatp)pChunkfrom)->iDatasize;
-
- if (((mng_idatp)pChunkto)->iDatasize)
- {
- MNG_ALLOC (pData, ((mng_idatp)pChunkto)->pData, ((mng_idatp)pChunkto)->iDatasize);
- MNG_COPY (((mng_idatp)pChunkto)->pData, ((mng_idatp)pChunkfrom)->pData,
- ((mng_idatp)pChunkto)->iDatasize);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_IDAT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-ASSIGN_CHUNK_HDR (mng_assign_iend)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_IEND, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_IEND)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_IEND, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-ASSIGN_CHUNK_HDR (mng_assign_trns)
-{
- mng_uint32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_TRNS, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_tRNS)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_trnsp)pChunkto)->bEmpty = ((mng_trnsp)pChunkfrom)->bEmpty;
- ((mng_trnsp)pChunkto)->bGlobal = ((mng_trnsp)pChunkfrom)->bGlobal;
- ((mng_trnsp)pChunkto)->iType = ((mng_trnsp)pChunkfrom)->iType;
- ((mng_trnsp)pChunkto)->iCount = ((mng_trnsp)pChunkfrom)->iCount;
- ((mng_trnsp)pChunkto)->iGray = ((mng_trnsp)pChunkfrom)->iGray;
- ((mng_trnsp)pChunkto)->iRed = ((mng_trnsp)pChunkfrom)->iRed;
- ((mng_trnsp)pChunkto)->iGreen = ((mng_trnsp)pChunkfrom)->iGreen;
- ((mng_trnsp)pChunkto)->iBlue = ((mng_trnsp)pChunkfrom)->iBlue;
- ((mng_trnsp)pChunkto)->iRawlen = ((mng_trnsp)pChunkfrom)->iRawlen;
-
- for (iX = 0; iX < ((mng_trnsp)pChunkto)->iCount; iX++)
- ((mng_trnsp)pChunkto)->aEntries [iX] = ((mng_trnsp)pChunkfrom)->aEntries [iX];
-
- for (iX = 0; iX < ((mng_trnsp)pChunkto)->iRawlen; iX++)
- ((mng_trnsp)pChunkto)->aRawdata [iX] = ((mng_trnsp)pChunkfrom)->aRawdata [iX];
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_TRNS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_gAMA
-ASSIGN_CHUNK_HDR (mng_assign_gama)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_GAMA, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_gAMA)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_gamap)pChunkto)->bEmpty = ((mng_gamap)pChunkfrom)->bEmpty;
- ((mng_gamap)pChunkto)->iGamma = ((mng_gamap)pChunkfrom)->iGamma;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_GAMA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_cHRM
-ASSIGN_CHUNK_HDR (mng_assign_chrm)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_CHRM, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_cHRM)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_chrmp)pChunkto)->bEmpty = ((mng_chrmp)pChunkfrom)->bEmpty;
- ((mng_chrmp)pChunkto)->iWhitepointx = ((mng_chrmp)pChunkfrom)->iWhitepointx;
- ((mng_chrmp)pChunkto)->iWhitepointy = ((mng_chrmp)pChunkfrom)->iWhitepointy;
- ((mng_chrmp)pChunkto)->iRedx = ((mng_chrmp)pChunkfrom)->iRedx;
- ((mng_chrmp)pChunkto)->iRedy = ((mng_chrmp)pChunkfrom)->iRedy;
- ((mng_chrmp)pChunkto)->iGreenx = ((mng_chrmp)pChunkfrom)->iGreenx;
- ((mng_chrmp)pChunkto)->iGreeny = ((mng_chrmp)pChunkfrom)->iGreeny;
- ((mng_chrmp)pChunkto)->iBluex = ((mng_chrmp)pChunkfrom)->iBluex;
- ((mng_chrmp)pChunkto)->iBluey = ((mng_chrmp)pChunkfrom)->iBluey;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_CHRM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_sRGB
-ASSIGN_CHUNK_HDR (mng_assign_srgb)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_SRGB, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_sRGB)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_srgbp)pChunkto)->iRenderingintent = ((mng_srgbp)pChunkfrom)->iRenderingintent;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_SRGB, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iCCP
-ASSIGN_CHUNK_HDR (mng_assign_iccp)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_ICCP, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_iCCP)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_iccpp)pChunkto)->bEmpty = ((mng_iccpp)pChunkfrom)->bEmpty;
- ((mng_iccpp)pChunkto)->iNamesize = ((mng_iccpp)pChunkfrom)->iNamesize;
- ((mng_iccpp)pChunkto)->iCompression = ((mng_iccpp)pChunkfrom)->iCompression;
- ((mng_iccpp)pChunkto)->iProfilesize = ((mng_iccpp)pChunkfrom)->iProfilesize;
-
- if (((mng_iccpp)pChunkto)->iNamesize)
- {
- MNG_ALLOC (pData, ((mng_iccpp)pChunkto)->zName, ((mng_iccpp)pChunkto)->iNamesize);
- MNG_COPY (((mng_iccpp)pChunkto)->zName, ((mng_iccpp)pChunkfrom)->zName,
- ((mng_iccpp)pChunkto)->iNamesize);
- }
-
- if (((mng_iccpp)pChunkto)->iProfilesize)
- {
- MNG_ALLOC (pData, ((mng_iccpp)pChunkto)->pProfile, ((mng_iccpp)pChunkto)->iProfilesize);
- MNG_COPY (((mng_iccpp)pChunkto)->pProfile, ((mng_iccpp)pChunkfrom)->pProfile,
- ((mng_iccpp)pChunkto)->iProfilesize);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_ICCP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_tEXt
-ASSIGN_CHUNK_HDR (mng_assign_text)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_TEXT, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_tEXt)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_textp)pChunkto)->iKeywordsize = ((mng_textp)pChunkfrom)->iKeywordsize;
- ((mng_textp)pChunkto)->iTextsize = ((mng_textp)pChunkfrom)->iTextsize;
-
- if (((mng_textp)pChunkto)->iKeywordsize)
- {
- MNG_ALLOC (pData, ((mng_itxtp)pChunkto)->zKeyword, ((mng_textp)pChunkto)->iKeywordsize);
- MNG_COPY (((mng_itxtp)pChunkto)->zKeyword, ((mng_textp)pChunkfrom)->zKeyword,
- ((mng_itxtp)pChunkto)->iKeywordsize);
- }
-
- if (((mng_textp)pChunkto)->iTextsize)
- {
- MNG_ALLOC (pData, ((mng_textp)pChunkto)->zText, ((mng_textp)pChunkto)->iTextsize);
- MNG_COPY (((mng_textp)pChunkto)->zText, ((mng_textp)pChunkfrom)->zText,
- ((mng_textp)pChunkto)->iTextsize);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_TEXT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_zTXt
-ASSIGN_CHUNK_HDR (mng_assign_ztxt)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_ZTXT, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_zTXt)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_ztxtp)pChunkto)->iKeywordsize = ((mng_ztxtp)pChunkfrom)->iKeywordsize;
- ((mng_ztxtp)pChunkto)->iCompression = ((mng_ztxtp)pChunkfrom)->iCompression;
- ((mng_ztxtp)pChunkto)->iTextsize = ((mng_ztxtp)pChunkfrom)->iTextsize;
-
- if (((mng_ztxtp)pChunkto)->iKeywordsize)
- {
- MNG_ALLOC (pData, ((mng_ztxtp)pChunkto)->zKeyword, ((mng_ztxtp)pChunkto)->iKeywordsize);
- MNG_COPY (((mng_ztxtp)pChunkto)->zKeyword, ((mng_ztxtp)pChunkfrom)->zKeyword,
- ((mng_ztxtp)pChunkto)->iKeywordsize);
- }
-
- if (((mng_ztxtp)pChunkto)->iTextsize)
- {
- MNG_ALLOC (pData, ((mng_ztxtp)pChunkto)->zText, ((mng_ztxtp)pChunkto)->iTextsize);
- MNG_COPY (((mng_ztxtp)pChunkto)->zText, ((mng_ztxtp)pChunkfrom)->zText,
- ((mng_ztxtp)pChunkto)->iTextsize);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_ZTXT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iTXt
-ASSIGN_CHUNK_HDR (mng_assign_itxt)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_ITXT, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_iTXt)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_itxtp)pChunkto)->iKeywordsize = ((mng_itxtp)pChunkfrom)->iKeywordsize;
- ((mng_itxtp)pChunkto)->iCompressionflag = ((mng_itxtp)pChunkfrom)->iCompressionflag;
- ((mng_itxtp)pChunkto)->iCompressionmethod = ((mng_itxtp)pChunkfrom)->iCompressionmethod;
- ((mng_itxtp)pChunkto)->iLanguagesize = ((mng_itxtp)pChunkfrom)->iLanguagesize;
- ((mng_itxtp)pChunkto)->iTranslationsize = ((mng_itxtp)pChunkfrom)->iTranslationsize;
- ((mng_itxtp)pChunkto)->iTextsize = ((mng_itxtp)pChunkfrom)->iTextsize;
-
- if (((mng_itxtp)pChunkto)->iKeywordsize)
- {
- MNG_ALLOC (pData, ((mng_itxtp)pChunkto)->zKeyword, ((mng_itxtp)pChunkto)->iKeywordsize);
- MNG_COPY (((mng_itxtp)pChunkto)->zKeyword, ((mng_itxtp)pChunkfrom)->zKeyword,
- ((mng_itxtp)pChunkto)->iKeywordsize);
- }
-
- if (((mng_itxtp)pChunkto)->iTextsize)
- {
- MNG_ALLOC (pData, ((mng_itxtp)pChunkto)->zLanguage, ((mng_itxtp)pChunkto)->iLanguagesize);
- MNG_COPY (((mng_itxtp)pChunkto)->zLanguage, ((mng_itxtp)pChunkfrom)->zLanguage,
- ((mng_itxtp)pChunkto)->iLanguagesize);
- }
-
- if (((mng_itxtp)pChunkto)->iTextsize)
- {
- MNG_ALLOC (pData, ((mng_itxtp)pChunkto)->zTranslation, ((mng_itxtp)pChunkto)->iTranslationsize);
- MNG_COPY (((mng_itxtp)pChunkto)->zTranslation, ((mng_itxtp)pChunkfrom)->zTranslation,
- ((mng_itxtp)pChunkto)->iTranslationsize);
- }
-
- if (((mng_itxtp)pChunkto)->iTextsize)
- {
- MNG_ALLOC (pData, ((mng_itxtp)pChunkto)->zText, ((mng_itxtp)pChunkto)->iTextsize);
- MNG_COPY (((mng_itxtp)pChunkto)->zText, ((mng_itxtp)pChunkfrom)->zText,
- ((mng_itxtp)pChunkto)->iTextsize);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_ITXT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_bKGD
-ASSIGN_CHUNK_HDR (mng_assign_bkgd)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_BKGD, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_bKGD)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_bkgdp)pChunkto)->bEmpty = ((mng_bkgdp)pChunkfrom)->bEmpty;
- ((mng_bkgdp)pChunkto)->iType = ((mng_bkgdp)pChunkfrom)->iType;
- ((mng_bkgdp)pChunkto)->iIndex = ((mng_bkgdp)pChunkfrom)->iIndex;
- ((mng_bkgdp)pChunkto)->iGray = ((mng_bkgdp)pChunkfrom)->iGray;
- ((mng_bkgdp)pChunkto)->iRed = ((mng_bkgdp)pChunkfrom)->iRed;
- ((mng_bkgdp)pChunkto)->iGreen = ((mng_bkgdp)pChunkfrom)->iGreen;
- ((mng_bkgdp)pChunkto)->iBlue = ((mng_bkgdp)pChunkfrom)->iBlue;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_BKGD, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_pHYs
-ASSIGN_CHUNK_HDR (mng_assign_phys)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_PHYS, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_pHYs)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_physp)pChunkto)->bEmpty = ((mng_physp)pChunkfrom)->bEmpty;
- ((mng_physp)pChunkto)->iSizex = ((mng_physp)pChunkfrom)->iSizex;
- ((mng_physp)pChunkto)->iSizey = ((mng_physp)pChunkfrom)->iSizey;
- ((mng_physp)pChunkto)->iUnit = ((mng_physp)pChunkfrom)->iUnit;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_PHYS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_sBIT
-ASSIGN_CHUNK_HDR (mng_assign_sbit)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_SBIT, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_sBIT)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_sbitp)pChunkto)->bEmpty = ((mng_sbitp)pChunkfrom)->bEmpty;
- ((mng_sbitp)pChunkto)->iType = ((mng_sbitp)pChunkfrom)->iType;
- ((mng_sbitp)pChunkto)->aBits [0] = ((mng_sbitp)pChunkfrom)->aBits [0];
- ((mng_sbitp)pChunkto)->aBits [1] = ((mng_sbitp)pChunkfrom)->aBits [1];
- ((mng_sbitp)pChunkto)->aBits [2] = ((mng_sbitp)pChunkfrom)->aBits [2];
- ((mng_sbitp)pChunkto)->aBits [3] = ((mng_sbitp)pChunkfrom)->aBits [3];
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_SBIT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sPLT
-ASSIGN_CHUNK_HDR (mng_assign_splt)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_SPLT, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_sPLT)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_spltp)pChunkto)->bEmpty = ((mng_spltp)pChunkfrom)->bEmpty;
- ((mng_spltp)pChunkto)->iNamesize = ((mng_spltp)pChunkfrom)->iNamesize;
- ((mng_spltp)pChunkto)->iSampledepth = ((mng_spltp)pChunkfrom)->iSampledepth;
- ((mng_spltp)pChunkto)->iEntrycount = ((mng_spltp)pChunkfrom)->iEntrycount;
- ((mng_spltp)pChunkto)->pEntries = ((mng_spltp)pChunkfrom)->pEntries;
-
- if (((mng_spltp)pChunkto)->iNamesize)
- {
- MNG_ALLOC (pData, ((mng_spltp)pChunkto)->zName, ((mng_spltp)pChunkto)->iNamesize);
- MNG_COPY (((mng_spltp)pChunkto)->zName, ((mng_spltp)pChunkfrom)->zName,
- ((mng_spltp)pChunkto)->iNamesize);
- }
-
- if (((mng_spltp)pChunkto)->iEntrycount)
- {
- mng_uint32 iLen = ((mng_spltp)pChunkto)->iEntrycount *
- (((mng_spltp)pChunkto)->iSampledepth * 3 + sizeof (mng_uint16));
-
- MNG_ALLOC (pData, ((mng_spltp)pChunkto)->pEntries, iLen);
- MNG_COPY (((mng_spltp)pChunkto)->pEntries, ((mng_spltp)pChunkfrom)->pEntries, iLen);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_SPLT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_hIST
-ASSIGN_CHUNK_HDR (mng_assign_hist)
-{
- mng_uint32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_HIST, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_hIST)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_histp)pChunkto)->iEntrycount = ((mng_histp)pChunkfrom)->iEntrycount;
-
- for (iX = 0; iX < ((mng_histp)pChunkto)->iEntrycount; iX++)
- ((mng_histp)pChunkto)->aEntries [iX] = ((mng_histp)pChunkfrom)->aEntries [iX];
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_HIST, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_tIME
-ASSIGN_CHUNK_HDR (mng_assign_time)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_TIME, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_tIME)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_timep)pChunkto)->iYear = ((mng_timep)pChunkfrom)->iYear;
- ((mng_timep)pChunkto)->iMonth = ((mng_timep)pChunkfrom)->iMonth;
- ((mng_timep)pChunkto)->iDay = ((mng_timep)pChunkfrom)->iDay;
- ((mng_timep)pChunkto)->iHour = ((mng_timep)pChunkfrom)->iHour;
- ((mng_timep)pChunkto)->iMinute = ((mng_timep)pChunkfrom)->iMinute;
- ((mng_timep)pChunkto)->iSecond = ((mng_timep)pChunkfrom)->iSecond;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_TIME, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-ASSIGN_CHUNK_HDR (mng_assign_mhdr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_MHDR, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_mhdrp)pChunkto)->iWidth = ((mng_mhdrp)pChunkfrom)->iWidth;
- ((mng_mhdrp)pChunkto)->iHeight = ((mng_mhdrp)pChunkfrom)->iHeight;
- ((mng_mhdrp)pChunkto)->iTicks = ((mng_mhdrp)pChunkfrom)->iTicks;
- ((mng_mhdrp)pChunkto)->iLayercount = ((mng_mhdrp)pChunkfrom)->iLayercount;
- ((mng_mhdrp)pChunkto)->iFramecount = ((mng_mhdrp)pChunkfrom)->iFramecount;
- ((mng_mhdrp)pChunkto)->iPlaytime = ((mng_mhdrp)pChunkfrom)->iPlaytime;
- ((mng_mhdrp)pChunkto)->iSimplicity = ((mng_mhdrp)pChunkfrom)->iSimplicity;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_MHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-ASSIGN_CHUNK_HDR (mng_assign_mend)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_MEND, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_MEND)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_MEND, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_LOOP
-ASSIGN_CHUNK_HDR (mng_assign_loop)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_LOOP, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_LOOP)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_loopp)pChunkto)->iLevel = ((mng_loopp)pChunkfrom)->iLevel;
- ((mng_loopp)pChunkto)->iRepeat = ((mng_loopp)pChunkfrom)->iRepeat;
- ((mng_loopp)pChunkto)->iTermination = ((mng_loopp)pChunkfrom)->iTermination;
- ((mng_loopp)pChunkto)->iItermin = ((mng_loopp)pChunkfrom)->iItermin;
- ((mng_loopp)pChunkto)->iItermax = ((mng_loopp)pChunkfrom)->iItermax;
- ((mng_loopp)pChunkto)->iCount = ((mng_loopp)pChunkfrom)->iCount;
-
-#ifndef MNG_NO_LOOP_SIGNALS_SUPPORTED
- if (((mng_loopp)pChunkto)->iCount)
- {
- mng_uint32 iLen = ((mng_loopp)pChunkto)->iCount * sizeof (mng_uint32);
- MNG_ALLOC (pData, ((mng_loopp)pChunkto)->pSignals, iLen);
- MNG_COPY (((mng_loopp)pChunkto)->pSignals, ((mng_loopp)pChunkfrom)->pSignals, iLen);
- }
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_LOOP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-ASSIGN_CHUNK_HDR (mng_assign_endl)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_ENDL, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_ENDL)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_endlp)pChunkto)->iLevel = ((mng_endlp)pChunkfrom)->iLevel;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_ENDL, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_DEFI
-ASSIGN_CHUNK_HDR (mng_assign_defi)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_DEFI, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_DEFI)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_defip)pChunkto)->iObjectid = ((mng_defip)pChunkfrom)->iObjectid;
- ((mng_defip)pChunkto)->bHasdonotshow = ((mng_defip)pChunkfrom)->bHasdonotshow;
- ((mng_defip)pChunkto)->iDonotshow = ((mng_defip)pChunkfrom)->iDonotshow;
- ((mng_defip)pChunkto)->bHasconcrete = ((mng_defip)pChunkfrom)->bHasconcrete;
- ((mng_defip)pChunkto)->iConcrete = ((mng_defip)pChunkfrom)->iConcrete;
- ((mng_defip)pChunkto)->bHasloca = ((mng_defip)pChunkfrom)->bHasloca;
- ((mng_defip)pChunkto)->iXlocation = ((mng_defip)pChunkfrom)->iXlocation;
- ((mng_defip)pChunkto)->iYlocation = ((mng_defip)pChunkfrom)->iYlocation;
- ((mng_defip)pChunkto)->bHasclip = ((mng_defip)pChunkfrom)->bHasclip;
- ((mng_defip)pChunkto)->iLeftcb = ((mng_defip)pChunkfrom)->iLeftcb;
- ((mng_defip)pChunkto)->iRightcb = ((mng_defip)pChunkfrom)->iRightcb;
- ((mng_defip)pChunkto)->iTopcb = ((mng_defip)pChunkfrom)->iTopcb;
- ((mng_defip)pChunkto)->iBottomcb = ((mng_defip)pChunkfrom)->iBottomcb;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_DEFI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_BASI
-ASSIGN_CHUNK_HDR (mng_assign_basi)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_BASI, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_BASI)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_basip)pChunkto)->iWidth = ((mng_basip)pChunkfrom)->iWidth;
- ((mng_basip)pChunkto)->iHeight = ((mng_basip)pChunkfrom)->iHeight;
- ((mng_basip)pChunkto)->iBitdepth = ((mng_basip)pChunkfrom)->iBitdepth;
- ((mng_basip)pChunkto)->iColortype = ((mng_basip)pChunkfrom)->iColortype;
- ((mng_basip)pChunkto)->iCompression = ((mng_basip)pChunkfrom)->iCompression;
- ((mng_basip)pChunkto)->iFilter = ((mng_basip)pChunkfrom)->iFilter;
- ((mng_basip)pChunkto)->iInterlace = ((mng_basip)pChunkfrom)->iInterlace;
- ((mng_basip)pChunkto)->iRed = ((mng_basip)pChunkfrom)->iRed;
- ((mng_basip)pChunkto)->iGreen = ((mng_basip)pChunkfrom)->iGreen;
- ((mng_basip)pChunkto)->iBlue = ((mng_basip)pChunkfrom)->iBlue;
- ((mng_basip)pChunkto)->iAlpha = ((mng_basip)pChunkfrom)->iAlpha;
- ((mng_basip)pChunkto)->iViewable = ((mng_basip)pChunkfrom)->iViewable;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_BASI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_CLON
-ASSIGN_CHUNK_HDR (mng_assign_clon)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_CLON, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_CLON)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_clonp)pChunkto)->iSourceid = ((mng_clonp)pChunkfrom)->iSourceid;
- ((mng_clonp)pChunkto)->iCloneid = ((mng_clonp)pChunkfrom)->iCloneid;
- ((mng_clonp)pChunkto)->iClonetype = ((mng_clonp)pChunkfrom)->iClonetype;
-#ifdef MNG_OPTIMIZE_CHUNKREADER
- ((mng_clonp)pChunkto)->bHasdonotshow = ((mng_clonp)pChunkfrom)->bHasdonotshow;
-#endif
- ((mng_clonp)pChunkto)->iDonotshow = ((mng_clonp)pChunkfrom)->iDonotshow;
- ((mng_clonp)pChunkto)->iConcrete = ((mng_clonp)pChunkfrom)->iConcrete;
- ((mng_clonp)pChunkto)->bHasloca = ((mng_clonp)pChunkfrom)->bHasloca;
- ((mng_clonp)pChunkto)->iLocationtype = ((mng_clonp)pChunkfrom)->iLocationtype;
- ((mng_clonp)pChunkto)->iLocationx = ((mng_clonp)pChunkfrom)->iLocationx;
- ((mng_clonp)pChunkto)->iLocationy = ((mng_clonp)pChunkfrom)->iLocationy;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_CLON, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-ASSIGN_CHUNK_HDR (mng_assign_past)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_PAST, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_PAST)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_pastp)pChunkto)->iDestid = ((mng_pastp)pChunkfrom)->iDestid;
- ((mng_pastp)pChunkto)->iTargettype = ((mng_pastp)pChunkfrom)->iTargettype;
- ((mng_pastp)pChunkto)->iTargetx = ((mng_pastp)pChunkfrom)->iTargetx;
- ((mng_pastp)pChunkto)->iTargety = ((mng_pastp)pChunkfrom)->iTargety;
- ((mng_pastp)pChunkto)->iCount = ((mng_pastp)pChunkfrom)->iCount;
-
- if (((mng_pastp)pChunkto)->iCount)
- {
- mng_uint32 iLen = ((mng_pastp)pChunkto)->iCount * sizeof (mng_past_source);
-
- MNG_ALLOC (pData, ((mng_pastp)pChunkto)->pSources, iLen);
- MNG_COPY (((mng_pastp)pChunkto)->pSources, ((mng_pastp)pChunkfrom)->pSources, iLen);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_PAST, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DISC
-ASSIGN_CHUNK_HDR (mng_assign_disc)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_DISC, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_DISC)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_discp)pChunkto)->iCount = ((mng_discp)pChunkfrom)->iCount;
-
- if (((mng_discp)pChunkto)->iCount)
- {
- mng_uint32 iLen = ((mng_discp)pChunkto)->iCount * sizeof (mng_uint16);
-
- MNG_ALLOC (pData, ((mng_discp)pChunkto)->pObjectids, iLen);
- MNG_COPY (((mng_discp)pChunkto)->pObjectids, ((mng_discp)pChunkfrom)->pObjectids, iLen);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_DISC, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_BACK
-ASSIGN_CHUNK_HDR (mng_assign_back)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_BACK, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_BACK)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_backp)pChunkto)->iRed = ((mng_backp)pChunkfrom)->iRed;
- ((mng_backp)pChunkto)->iGreen = ((mng_backp)pChunkfrom)->iGreen;
- ((mng_backp)pChunkto)->iBlue = ((mng_backp)pChunkfrom)->iBlue;
- ((mng_backp)pChunkto)->iMandatory = ((mng_backp)pChunkfrom)->iMandatory;
- ((mng_backp)pChunkto)->iImageid = ((mng_backp)pChunkfrom)->iImageid;
- ((mng_backp)pChunkto)->iTile = ((mng_backp)pChunkfrom)->iTile;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_BACK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_FRAM
-ASSIGN_CHUNK_HDR (mng_assign_fram)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_FRAM, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_FRAM)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_framp)pChunkto)->bEmpty = ((mng_framp)pChunkfrom)->bEmpty;
- ((mng_framp)pChunkto)->iMode = ((mng_framp)pChunkfrom)->iMode;
- ((mng_framp)pChunkto)->iNamesize = ((mng_framp)pChunkfrom)->iNamesize;
- ((mng_framp)pChunkto)->iChangedelay = ((mng_framp)pChunkfrom)->iChangedelay;
- ((mng_framp)pChunkto)->iChangetimeout = ((mng_framp)pChunkfrom)->iChangetimeout;
- ((mng_framp)pChunkto)->iChangeclipping = ((mng_framp)pChunkfrom)->iChangeclipping;
- ((mng_framp)pChunkto)->iChangesyncid = ((mng_framp)pChunkfrom)->iChangesyncid;
- ((mng_framp)pChunkto)->iDelay = ((mng_framp)pChunkfrom)->iDelay;
- ((mng_framp)pChunkto)->iTimeout = ((mng_framp)pChunkfrom)->iTimeout;
- ((mng_framp)pChunkto)->iBoundarytype = ((mng_framp)pChunkfrom)->iBoundarytype;
- ((mng_framp)pChunkto)->iBoundaryl = ((mng_framp)pChunkfrom)->iBoundaryl;
- ((mng_framp)pChunkto)->iBoundaryr = ((mng_framp)pChunkfrom)->iBoundaryr;
- ((mng_framp)pChunkto)->iBoundaryt = ((mng_framp)pChunkfrom)->iBoundaryt;
- ((mng_framp)pChunkto)->iBoundaryb = ((mng_framp)pChunkfrom)->iBoundaryb;
- ((mng_framp)pChunkto)->iCount = ((mng_framp)pChunkfrom)->iCount;
-
- if (((mng_framp)pChunkto)->iNamesize)
- {
- MNG_ALLOC (pData, ((mng_framp)pChunkto)->zName, ((mng_framp)pChunkto)->iNamesize);
- MNG_COPY (((mng_framp)pChunkto)->zName, ((mng_framp)pChunkfrom)->zName,
- ((mng_framp)pChunkto)->iNamesize);
- }
-
- if (((mng_framp)pChunkto)->iCount)
- {
- mng_uint32 iLen = ((mng_framp)pChunkto)->iCount * sizeof (mng_uint32);
-
- MNG_ALLOC (pData, ((mng_framp)pChunkto)->pSyncids, iLen);
- MNG_COPY (((mng_framp)pChunkto)->pSyncids, ((mng_framp)pChunkfrom)->pSyncids, iLen);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_FRAM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_MOVE
-ASSIGN_CHUNK_HDR (mng_assign_move)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_MOVE, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_MOVE)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_movep)pChunkto)->iFirstid = ((mng_movep)pChunkfrom)->iFirstid;
- ((mng_movep)pChunkto)->iLastid = ((mng_movep)pChunkfrom)->iLastid;
- ((mng_movep)pChunkto)->iMovetype = ((mng_movep)pChunkfrom)->iMovetype;
- ((mng_movep)pChunkto)->iMovex = ((mng_movep)pChunkfrom)->iMovex;
- ((mng_movep)pChunkto)->iMovey = ((mng_movep)pChunkfrom)->iMovey;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_MOVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_CLIP
-ASSIGN_CHUNK_HDR (mng_assign_clip)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_CLIP, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_CLIP)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_clipp)pChunkto)->iFirstid = ((mng_clipp)pChunkfrom)->iFirstid;
- ((mng_clipp)pChunkto)->iLastid = ((mng_clipp)pChunkfrom)->iLastid;
- ((mng_clipp)pChunkto)->iCliptype = ((mng_clipp)pChunkfrom)->iCliptype;
- ((mng_clipp)pChunkto)->iClipl = ((mng_clipp)pChunkfrom)->iClipl;
- ((mng_clipp)pChunkto)->iClipr = ((mng_clipp)pChunkfrom)->iClipr;
- ((mng_clipp)pChunkto)->iClipt = ((mng_clipp)pChunkfrom)->iClipt;
- ((mng_clipp)pChunkto)->iClipb = ((mng_clipp)pChunkfrom)->iClipb;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_CLIP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_SHOW
-ASSIGN_CHUNK_HDR (mng_assign_show)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_SHOW, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_SHOW)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_showp)pChunkto)->bEmpty = ((mng_showp)pChunkfrom)->bEmpty;
- ((mng_showp)pChunkto)->iFirstid = ((mng_showp)pChunkfrom)->iFirstid;
- ((mng_showp)pChunkto)->iLastid = ((mng_showp)pChunkfrom)->iLastid;
- ((mng_showp)pChunkto)->iMode = ((mng_showp)pChunkfrom)->iMode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_SHOW, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_TERM
-ASSIGN_CHUNK_HDR (mng_assign_term)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_TERM, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_TERM)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_termp)pChunkto)->iTermaction = ((mng_termp)pChunkfrom)->iTermaction;
- ((mng_termp)pChunkto)->iIteraction = ((mng_termp)pChunkfrom)->iIteraction;
- ((mng_termp)pChunkto)->iDelay = ((mng_termp)pChunkfrom)->iDelay;
- ((mng_termp)pChunkto)->iItermax = ((mng_termp)pChunkfrom)->iItermax;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_TERM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SAVE
-ASSIGN_CHUNK_HDR (mng_assign_save)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_SAVE, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_SAVE)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_savep)pChunkto)->bEmpty = ((mng_savep)pChunkfrom)->bEmpty;
- ((mng_savep)pChunkto)->iOffsettype = ((mng_savep)pChunkfrom)->iOffsettype;
- ((mng_savep)pChunkto)->iCount = ((mng_savep)pChunkfrom)->iCount;
-
- if (((mng_savep)pChunkto)->iCount)
- {
- mng_uint32 iX;
- mng_save_entryp pEntry;
- mng_uint32 iLen = ((mng_savep)pChunkto)->iCount * sizeof (mng_save_entry);
-
- MNG_ALLOC (pData, ((mng_savep)pChunkto)->pEntries, iLen);
- MNG_COPY (((mng_savep)pChunkto)->pEntries, ((mng_savep)pChunkfrom)->pEntries, iLen);
-
- pEntry = ((mng_savep)pChunkto)->pEntries;
-
- for (iX = 0; iX < ((mng_savep)pChunkto)->iCount; iX++)
- {
- if (pEntry->iNamesize)
- {
- mng_pchar pTemp = pEntry->zName;
-
- MNG_ALLOC (pData, pEntry->zName, pEntry->iNamesize);
- MNG_COPY (pEntry->zName, pTemp, pEntry->iNamesize);
- }
- else
- {
- pEntry->zName = MNG_NULL;
- }
-
- pEntry++;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_SAVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SEEK
-ASSIGN_CHUNK_HDR (mng_assign_seek)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_SEEK, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_SEEK)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_seekp)pChunkto)->iNamesize = ((mng_seekp)pChunkfrom)->iNamesize;
-
- if (((mng_seekp)pChunkto)->iNamesize)
- {
- MNG_ALLOC (pData, ((mng_seekp)pChunkto)->zName, ((mng_seekp)pChunkto)->iNamesize);
- MNG_COPY (((mng_seekp)pChunkto)->zName, ((mng_seekp)pChunkfrom)->zName,
- ((mng_seekp)pChunkto)->iNamesize);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_SEEK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_eXPI
-ASSIGN_CHUNK_HDR (mng_assign_expi)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_EXPI, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_eXPI)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_expip)pChunkto)->iSnapshotid = ((mng_expip)pChunkfrom)->iSnapshotid;
- ((mng_expip)pChunkto)->iNamesize = ((mng_expip)pChunkfrom)->iNamesize;
-
- if (((mng_expip)pChunkto)->iNamesize)
- {
- MNG_ALLOC (pData, ((mng_expip)pChunkto)->zName, ((mng_expip)pChunkto)->iNamesize);
- MNG_COPY (((mng_expip)pChunkto)->zName, ((mng_expip)pChunkfrom)->zName,
- ((mng_expip)pChunkto)->iNamesize);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_EXPI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_fPRI
-ASSIGN_CHUNK_HDR (mng_assign_fpri)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_FPRI, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_fPRI)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_fprip)pChunkto)->iDeltatype = ((mng_fprip)pChunkfrom)->iDeltatype;
- ((mng_fprip)pChunkto)->iPriority = ((mng_fprip)pChunkfrom)->iPriority;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_FPRI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_nEED
-ASSIGN_CHUNK_HDR (mng_assign_need)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_NEED, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_nEED)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_needp)pChunkto)->iKeywordssize = ((mng_needp)pChunkfrom)->iKeywordssize;
-
- if (((mng_needp)pChunkto)->iKeywordssize)
- {
- MNG_ALLOC (pData, ((mng_needp)pChunkto)->zKeywords, ((mng_needp)pChunkto)->iKeywordssize);
- MNG_COPY (((mng_needp)pChunkto)->zKeywords, ((mng_needp)pChunkfrom)->zKeywords,
- ((mng_needp)pChunkto)->iKeywordssize);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_NEED, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_pHYg
-ASSIGN_CHUNK_HDR (mng_assign_phyg)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_PHYG, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_pHYg)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_phygp)pChunkto)->bEmpty = ((mng_phygp)pChunkfrom)->bEmpty;
- ((mng_phygp)pChunkto)->iSizex = ((mng_phygp)pChunkfrom)->iSizex;
- ((mng_phygp)pChunkto)->iSizey = ((mng_phygp)pChunkfrom)->iSizey;
- ((mng_phygp)pChunkto)->iUnit = ((mng_phygp)pChunkfrom)->iUnit;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_PHYG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifdef MNG_INCLUDE_JNG
-ASSIGN_CHUNK_HDR (mng_assign_jhdr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_JHDR, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_JHDR)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_jhdrp)pChunkto)->iWidth = ((mng_jhdrp)pChunkfrom)->iWidth;
- ((mng_jhdrp)pChunkto)->iHeight = ((mng_jhdrp)pChunkfrom)->iHeight;
- ((mng_jhdrp)pChunkto)->iColortype = ((mng_jhdrp)pChunkfrom)->iColortype;
- ((mng_jhdrp)pChunkto)->iImagesampledepth = ((mng_jhdrp)pChunkfrom)->iImagesampledepth;
- ((mng_jhdrp)pChunkto)->iImagecompression = ((mng_jhdrp)pChunkfrom)->iImagecompression;
- ((mng_jhdrp)pChunkto)->iImageinterlace = ((mng_jhdrp)pChunkfrom)->iImageinterlace;
- ((mng_jhdrp)pChunkto)->iAlphasampledepth = ((mng_jhdrp)pChunkfrom)->iAlphasampledepth;
- ((mng_jhdrp)pChunkto)->iAlphacompression = ((mng_jhdrp)pChunkfrom)->iAlphacompression;
- ((mng_jhdrp)pChunkto)->iAlphafilter = ((mng_jhdrp)pChunkfrom)->iAlphafilter;
- ((mng_jhdrp)pChunkto)->iAlphainterlace = ((mng_jhdrp)pChunkfrom)->iAlphainterlace;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_JHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG */
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-ASSIGN_CHUNK_HDR (mng_assign_jdaa)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_JDAA, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_JDAA)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_jdaap)pChunkto)->bEmpty = ((mng_jdaap)pChunkfrom)->bEmpty;
- ((mng_jdaap)pChunkto)->iDatasize = ((mng_jdaap)pChunkfrom)->iDatasize;
-
- if (((mng_jdaap)pChunkto)->iDatasize)
- {
- MNG_ALLOC (pData, ((mng_jdaap)pChunkto)->pData, ((mng_jdaap)pChunkto)->iDatasize);
- MNG_COPY (((mng_jdaap)pChunkto)->pData, ((mng_jdaap)pChunkfrom)->pData,
- ((mng_jdaap)pChunkto)->iDatasize);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_JDAA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-ASSIGN_CHUNK_HDR (mng_assign_jdat)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_JDAT, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_JDAT)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_jdatp)pChunkto)->bEmpty = ((mng_jdatp)pChunkfrom)->bEmpty;
- ((mng_jdatp)pChunkto)->iDatasize = ((mng_jdatp)pChunkfrom)->iDatasize;
-
- if (((mng_jdatp)pChunkto)->iDatasize)
- {
- MNG_ALLOC (pData, ((mng_jdatp)pChunkto)->pData, ((mng_jdatp)pChunkto)->iDatasize);
- MNG_COPY (((mng_jdatp)pChunkto)->pData, ((mng_jdatp)pChunkfrom)->pData,
- ((mng_jdatp)pChunkto)->iDatasize);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_JDAT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifdef MNG_INCLUDE_JNG
-ASSIGN_CHUNK_HDR (mng_assign_jsep)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_JSEP, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_JSEP)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_JSEP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG */
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_NO_DELTA_PNG
-ASSIGN_CHUNK_HDR (mng_assign_dhdr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_DHDR, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_DHDR)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_dhdrp)pChunkto)->iObjectid = ((mng_dhdrp)pChunkfrom)->iObjectid;
- ((mng_dhdrp)pChunkto)->iImagetype = ((mng_dhdrp)pChunkfrom)->iImagetype;
- ((mng_dhdrp)pChunkto)->iDeltatype = ((mng_dhdrp)pChunkfrom)->iDeltatype;
- ((mng_dhdrp)pChunkto)->iBlockwidth = ((mng_dhdrp)pChunkfrom)->iBlockwidth;
- ((mng_dhdrp)pChunkto)->iBlockheight = ((mng_dhdrp)pChunkfrom)->iBlockheight;
- ((mng_dhdrp)pChunkto)->iBlockx = ((mng_dhdrp)pChunkfrom)->iBlockx;
- ((mng_dhdrp)pChunkto)->iBlocky = ((mng_dhdrp)pChunkfrom)->iBlocky;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_DHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_NO_DELTA_PNG
-ASSIGN_CHUNK_HDR (mng_assign_prom)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_PROM, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_PROM)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_promp)pChunkto)->iColortype = ((mng_promp)pChunkfrom)->iColortype;
- ((mng_promp)pChunkto)->iSampledepth = ((mng_promp)pChunkfrom)->iSampledepth;
- ((mng_promp)pChunkto)->iFilltype = ((mng_promp)pChunkfrom)->iFilltype;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_PROM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_NO_DELTA_PNG
-ASSIGN_CHUNK_HDR (mng_assign_ipng)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_IPNG, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_IPNG)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_IPNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_NO_DELTA_PNG
-ASSIGN_CHUNK_HDR (mng_assign_pplt)
-{
- mng_uint32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_PPLT, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_PPLT)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_ppltp)pChunkto)->iDeltatype = ((mng_ppltp)pChunkfrom)->iDeltatype;
- ((mng_ppltp)pChunkto)->iCount = ((mng_ppltp)pChunkfrom)->iCount;
-
- for (iX = 0; iX < ((mng_ppltp)pChunkto)->iCount; iX++)
- ((mng_ppltp)pChunkto)->aEntries [iX] = ((mng_ppltp)pChunkfrom)->aEntries [iX];
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_PPLT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_NO_DELTA_PNG
-#ifdef MNG_INCLUDE_JNG
-ASSIGN_CHUNK_HDR (mng_assign_ijng)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_IJNG, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_IJNG)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_IJNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-ASSIGN_CHUNK_HDR (mng_assign_drop)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_DROP, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_DROP)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_dropp)pChunkto)->iCount = ((mng_dropp)pChunkfrom)->iCount;
-
- if (((mng_dropp)pChunkto)->iCount)
- {
- mng_uint32 iLen = ((mng_dropp)pChunkto)->iCount * sizeof (mng_uint32);
-
- MNG_ALLOC (pData, ((mng_dropp)pChunkto)->pChunknames, iLen);
- MNG_COPY (((mng_dropp)pChunkto)->pChunknames, ((mng_dropp)pChunkfrom)->pChunknames, iLen);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_DROP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_DBYK
-ASSIGN_CHUNK_HDR (mng_assign_dbyk)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_DBYK, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_DBYK)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_dbykp)pChunkto)->iChunkname = ((mng_dbykp)pChunkfrom)->iChunkname;
- ((mng_dbykp)pChunkto)->iPolarity = ((mng_dbykp)pChunkfrom)->iPolarity;
- ((mng_dbykp)pChunkto)->iKeywordssize = ((mng_dbykp)pChunkfrom)->iKeywordssize;
-
- if (((mng_dbykp)pChunkto)->iKeywordssize)
- {
- MNG_ALLOC (pData, ((mng_dbykp)pChunkto)->zKeywords, ((mng_dbykp)pChunkto)->iKeywordssize);
- MNG_COPY (((mng_dbykp)pChunkto)->zKeywords, ((mng_dbykp)pChunkfrom)->zKeywords,
- ((mng_dbykp)pChunkto)->iKeywordssize);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_DBYK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_ORDR
-ASSIGN_CHUNK_HDR (mng_assign_ordr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_ORDR, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_ORDR)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_ordrp)pChunkto)->iCount = ((mng_ordrp)pChunkfrom)->iCount;
-
- if (((mng_ordrp)pChunkto)->iCount)
- {
- mng_uint32 iLen = ((mng_ordrp)pChunkto)->iCount * sizeof (mng_ordr_entry);
-
- MNG_ALLOC (pData, ((mng_ordrp)pChunkto)->pEntries, iLen);
- MNG_COPY (((mng_ordrp)pChunkto)->pEntries, ((mng_ordrp)pChunkfrom)->pEntries, iLen);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_ORDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKASSIGN
-#ifndef MNG_SKIPCHUNK_MAGN
-ASSIGN_CHUNK_HDR (mng_assign_magn)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_MAGN, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_MAGN)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_magnp)pChunkto)->iFirstid = ((mng_magnp)pChunkfrom)->iFirstid;
- ((mng_magnp)pChunkto)->iLastid = ((mng_magnp)pChunkfrom)->iLastid;
- ((mng_magnp)pChunkto)->iMethodX = ((mng_magnp)pChunkfrom)->iMethodX;
- ((mng_magnp)pChunkto)->iMX = ((mng_magnp)pChunkfrom)->iMX;
- ((mng_magnp)pChunkto)->iMY = ((mng_magnp)pChunkfrom)->iMY;
- ((mng_magnp)pChunkto)->iML = ((mng_magnp)pChunkfrom)->iML;
- ((mng_magnp)pChunkto)->iMR = ((mng_magnp)pChunkfrom)->iMR;
- ((mng_magnp)pChunkto)->iMT = ((mng_magnp)pChunkfrom)->iMT;
- ((mng_magnp)pChunkto)->iMB = ((mng_magnp)pChunkfrom)->iMB;
- ((mng_magnp)pChunkto)->iMethodY = ((mng_magnp)pChunkfrom)->iMethodY;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_MAGN, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-ASSIGN_CHUNK_HDR (mng_assign_mpng)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_MPNG, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_mpNG)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_mpngp)pChunkto)->iFramewidth = ((mng_mpngp)pChunkfrom)->iFramewidth;
- ((mng_mpngp)pChunkto)->iFrameheight = ((mng_mpngp)pChunkfrom)->iFrameheight;
- ((mng_mpngp)pChunkto)->iNumplays = ((mng_mpngp)pChunkfrom)->iNumplays;
- ((mng_mpngp)pChunkto)->iTickspersec = ((mng_mpngp)pChunkfrom)->iTickspersec;
- ((mng_mpngp)pChunkto)->iCompressionmethod = ((mng_mpngp)pChunkfrom)->iCompressionmethod;
- ((mng_mpngp)pChunkto)->iFramessize = ((mng_mpngp)pChunkfrom)->iFramessize;
-
- if (((mng_mpngp)pChunkto)->iFramessize)
- {
- MNG_ALLOC (pData, ((mng_mpngp)pChunkto)->pFrames, ((mng_mpngp)pChunkto)->iFramessize);
- MNG_COPY (((mng_mpngp)pChunkto)->pFrames, ((mng_mpngp)pChunkfrom)->pFrames,
- ((mng_mpngp)pChunkto)->iFramessize);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_MPNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-ASSIGN_CHUNK_HDR (mng_assign_ahdr)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_AHDR, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_ahDR)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_ahdrp)pChunkto)->iNumframes = ((mng_ahdrp)pChunkfrom)->iNumframes;
- ((mng_ahdrp)pChunkto)->iTickspersec = ((mng_ahdrp)pChunkfrom)->iTickspersec;
- ((mng_ahdrp)pChunkto)->iNumplays = ((mng_ahdrp)pChunkfrom)->iNumplays;
- ((mng_ahdrp)pChunkto)->iTilewidth = ((mng_ahdrp)pChunkfrom)->iTilewidth;
- ((mng_ahdrp)pChunkto)->iTileheight = ((mng_ahdrp)pChunkfrom)->iTileheight;
- ((mng_ahdrp)pChunkto)->iInterlace = ((mng_ahdrp)pChunkfrom)->iInterlace;
- ((mng_ahdrp)pChunkto)->iStillused = ((mng_ahdrp)pChunkfrom)->iStillused;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_AHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-ASSIGN_CHUNK_HDR (mng_assign_adat)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_ADAT, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_adAT)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_adatp)pChunkto)->iTilessize = ((mng_adatp)pChunkfrom)->iTilessize;
-
- if (((mng_adatp)pChunkto)->iTilessize)
- {
- MNG_ALLOC (pData, ((mng_adatp)pChunkto)->pTiles, ((mng_adatp)pChunkto)->iTilessize);
- MNG_COPY (((mng_adatp)pChunkto)->pTiles, ((mng_adatp)pChunkfrom)->pTiles,
- ((mng_adatp)pChunkto)->iTilessize);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_ADAT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_evNT
-ASSIGN_CHUNK_HDR (mng_assign_evnt)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_EVNT, MNG_LC_START);
-#endif
-
- if (((mng_chunk_headerp)pChunkfrom)->iChunkname != MNG_UINT_evNT)
- MNG_ERROR (pData, MNG_WRONGCHUNK); /* ouch */
-
- ((mng_evntp)pChunkto)->iCount = ((mng_evntp)pChunkfrom)->iCount;
-
- if (((mng_evntp)pChunkto)->iCount)
- {
- mng_uint32 iX;
- mng_evnt_entryp pEntry;
- mng_uint32 iLen = ((mng_evntp)pChunkto)->iCount * sizeof (mng_evnt_entry);
-
- MNG_ALLOC (pData, ((mng_evntp)pChunkto)->pEntries, iLen);
- MNG_COPY (((mng_evntp)pChunkto)->pEntries, ((mng_evntp)pChunkfrom)->pEntries, iLen);
-
- pEntry = ((mng_evntp)pChunkto)->pEntries;
-
- for (iX = 0; iX < ((mng_evntp)pChunkto)->iCount; iX++)
- {
- if (pEntry->iSegmentnamesize)
- {
- mng_pchar pTemp = pEntry->zSegmentname;
-
- MNG_ALLOC (pData, pEntry->zSegmentname, pEntry->iSegmentnamesize+1);
- MNG_COPY (pEntry->zSegmentname, pTemp, pEntry->iSegmentnamesize);
- }
- else
- {
- pEntry->zSegmentname = MNG_NULL;
- }
-
- pEntry++;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_EVNT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-ASSIGN_CHUNK_HDR (mng_assign_unknown)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_UNKNOWN, MNG_LC_START);
-#endif
-
- ((mng_unknown_chunkp)pChunkto)->iDatasize = ((mng_unknown_chunkp)pChunkfrom)->iDatasize;
-
- if (((mng_unknown_chunkp)pChunkto)->iDatasize)
- {
- MNG_ALLOC (pData, ((mng_unknown_chunkp)pChunkto)->pData, ((mng_unknown_chunkp)pChunkto)->iDatasize);
- MNG_COPY (((mng_unknown_chunkp)pChunkto)->pData, ((mng_unknown_chunkp)pChunkfrom)->pData,
- ((mng_unknown_chunkp)pChunkto)->iDatasize);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ASSIGN_UNKNOWN, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_WRITE_PROCS */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
diff --git a/src/3rdparty/libmng/libmng_chunk_prc.h b/src/3rdparty/libmng/libmng_chunk_prc.h
deleted file mode 100644
index 0cf0f3c1d5..0000000000
--- a/src/3rdparty/libmng/libmng_chunk_prc.h
+++ /dev/null
@@ -1,381 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_chunk_prc.h copyright (c) 2000-2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : Chunk initialization & cleanup (definition) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : definition of the chunk initialization & cleanup routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 08/26/2000 - G.Juyn * */
-/* * - added MAGN chunk * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added support for JDAA * */
-/* * * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * 1.0.5 - 09/14/2002 - G.Juyn * */
-/* * - added event handling for dynamic MNG * */
-/* * * */
-/* * 1.0.6 - 07/07/2003 - G.R-P * */
-/* * - added NO_DELTA_PNG support * */
-/* * 1.0.6 - 07/29/2003 - G.R-P * */
-/* * - added conditionals around PAST chunk support * */
-/* * * */
-/* * 1.0.9 - 12/05/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_CHUNKINITFREE * */
-/* * 1.0.9 - 12/06/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_CHUNKASSIGN * */
-/* * * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * 1.0.10 - 04/12/2007 - G.Juyn * */
-/* * - added support for ANG proposal * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_chunk_prc_h_
-#define _libmng_chunk_prc_h_
-
-/* ************************************************************************** */
-
-void mng_add_chunk (mng_datap pData,
- mng_chunkp pChunk);
-
-/* ************************************************************************** */
-
-#define INIT_CHUNK_HDR(n) mng_retcode n (mng_datap pData, \
- mng_chunkp pHeader, \
- mng_chunkp* ppChunk)
-
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
-INIT_CHUNK_HDR (mng_init_general) ;
-#else
-INIT_CHUNK_HDR (mng_init_ihdr) ;
-INIT_CHUNK_HDR (mng_init_plte) ;
-INIT_CHUNK_HDR (mng_init_idat) ;
-INIT_CHUNK_HDR (mng_init_iend) ;
-INIT_CHUNK_HDR (mng_init_trns) ;
-INIT_CHUNK_HDR (mng_init_gama) ;
-INIT_CHUNK_HDR (mng_init_chrm) ;
-INIT_CHUNK_HDR (mng_init_srgb) ;
-INIT_CHUNK_HDR (mng_init_iccp) ;
-INIT_CHUNK_HDR (mng_init_text) ;
-INIT_CHUNK_HDR (mng_init_ztxt) ;
-INIT_CHUNK_HDR (mng_init_itxt) ;
-INIT_CHUNK_HDR (mng_init_bkgd) ;
-INIT_CHUNK_HDR (mng_init_phys) ;
-INIT_CHUNK_HDR (mng_init_sbit) ;
-INIT_CHUNK_HDR (mng_init_splt) ;
-INIT_CHUNK_HDR (mng_init_hist) ;
-INIT_CHUNK_HDR (mng_init_time) ;
-INIT_CHUNK_HDR (mng_init_mhdr) ;
-INIT_CHUNK_HDR (mng_init_mend) ;
-INIT_CHUNK_HDR (mng_init_loop) ;
-INIT_CHUNK_HDR (mng_init_endl) ;
-INIT_CHUNK_HDR (mng_init_defi) ;
-INIT_CHUNK_HDR (mng_init_basi) ;
-INIT_CHUNK_HDR (mng_init_clon) ;
-#ifndef MNG_SKIPCHUNK_PAST
-INIT_CHUNK_HDR (mng_init_past) ;
-#endif
-INIT_CHUNK_HDR (mng_init_disc) ;
-INIT_CHUNK_HDR (mng_init_back) ;
-INIT_CHUNK_HDR (mng_init_fram) ;
-INIT_CHUNK_HDR (mng_init_move) ;
-INIT_CHUNK_HDR (mng_init_clip) ;
-INIT_CHUNK_HDR (mng_init_show) ;
-INIT_CHUNK_HDR (mng_init_term) ;
-INIT_CHUNK_HDR (mng_init_save) ;
-INIT_CHUNK_HDR (mng_init_seek) ;
-INIT_CHUNK_HDR (mng_init_expi) ;
-INIT_CHUNK_HDR (mng_init_fpri) ;
-INIT_CHUNK_HDR (mng_init_need) ;
-INIT_CHUNK_HDR (mng_init_phyg) ;
-#ifdef MNG_INCLUDE_JNG
-INIT_CHUNK_HDR (mng_init_jhdr) ;
-INIT_CHUNK_HDR (mng_init_jdaa) ;
-INIT_CHUNK_HDR (mng_init_jdat) ;
-INIT_CHUNK_HDR (mng_init_jsep) ;
-#endif
-#ifndef MNG_NO_DELTA_PNG
-INIT_CHUNK_HDR (mng_init_dhdr) ;
-INIT_CHUNK_HDR (mng_init_prom) ;
-INIT_CHUNK_HDR (mng_init_ipng) ;
-INIT_CHUNK_HDR (mng_init_pplt) ;
-#ifdef MNG_INCLUDE_JNG
-INIT_CHUNK_HDR (mng_init_ijng) ;
-#endif
-INIT_CHUNK_HDR (mng_init_drop) ;
-INIT_CHUNK_HDR (mng_init_dbyk) ;
-INIT_CHUNK_HDR (mng_init_ordr) ;
-#endif
-INIT_CHUNK_HDR (mng_init_magn) ;
-INIT_CHUNK_HDR (mng_init_evnt) ;
-INIT_CHUNK_HDR (mng_init_unknown) ;
-#endif /* MNG_OPTIMIZE_CHUNKINITFREE */
-
-/* ************************************************************************** */
-
-#define FREE_CHUNK_HDR(n) mng_retcode n (mng_datap pData, \
- mng_chunkp pHeader)
-
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
-FREE_CHUNK_HDR (mng_free_general) ;
-#else /* MNG_OPTIMIZE_CHUNKINITFREE */
-FREE_CHUNK_HDR (mng_free_ihdr) ;
-FREE_CHUNK_HDR (mng_free_plte) ;
-FREE_CHUNK_HDR (mng_free_iend) ;
-FREE_CHUNK_HDR (mng_free_trns) ;
-FREE_CHUNK_HDR (mng_free_gama) ;
-FREE_CHUNK_HDR (mng_free_chrm) ;
-FREE_CHUNK_HDR (mng_free_srgb) ;
-FREE_CHUNK_HDR (mng_free_bkgd) ;
-FREE_CHUNK_HDR (mng_free_phys) ;
-FREE_CHUNK_HDR (mng_free_sbit) ;
-FREE_CHUNK_HDR (mng_free_hist) ;
-FREE_CHUNK_HDR (mng_free_time) ;
-FREE_CHUNK_HDR (mng_free_mhdr) ;
-FREE_CHUNK_HDR (mng_free_mend) ;
-FREE_CHUNK_HDR (mng_free_endl) ;
-FREE_CHUNK_HDR (mng_free_defi) ;
-FREE_CHUNK_HDR (mng_free_basi) ;
-FREE_CHUNK_HDR (mng_free_clon) ;
-FREE_CHUNK_HDR (mng_free_back) ;
-FREE_CHUNK_HDR (mng_free_move) ;
-FREE_CHUNK_HDR (mng_free_clip) ;
-FREE_CHUNK_HDR (mng_free_show) ;
-FREE_CHUNK_HDR (mng_free_term) ;
-FREE_CHUNK_HDR (mng_free_fpri) ;
-FREE_CHUNK_HDR (mng_free_phyg) ;
-#ifdef MNG_INCLUDE_JNG
-FREE_CHUNK_HDR (mng_free_jhdr) ;
-FREE_CHUNK_HDR (mng_free_jsep) ;
-#endif
-#ifndef MNG_NO_DELTA_PNG
-FREE_CHUNK_HDR (mng_free_dhdr) ;
-FREE_CHUNK_HDR (mng_free_prom) ;
-FREE_CHUNK_HDR (mng_free_ipng) ;
-FREE_CHUNK_HDR (mng_free_pplt) ;
-#ifdef MNG_INCLUDE_JNG
-FREE_CHUNK_HDR (mng_free_ijng) ;
-#endif
-#endif
-FREE_CHUNK_HDR (mng_free_magn) ;
-#endif /* MNG_OPTIMIZE_CHUNKINITFREE */
-
-FREE_CHUNK_HDR (mng_free_idat) ;
-FREE_CHUNK_HDR (mng_free_iccp) ;
-FREE_CHUNK_HDR (mng_free_text) ;
-FREE_CHUNK_HDR (mng_free_ztxt) ;
-FREE_CHUNK_HDR (mng_free_itxt) ;
-FREE_CHUNK_HDR (mng_free_splt) ;
-FREE_CHUNK_HDR (mng_free_loop) ;
-#ifndef MNG_SKIPCHUNK_PAST
-FREE_CHUNK_HDR (mng_free_past) ;
-#endif
-FREE_CHUNK_HDR (mng_free_disc) ;
-FREE_CHUNK_HDR (mng_free_fram) ;
-FREE_CHUNK_HDR (mng_free_save) ;
-FREE_CHUNK_HDR (mng_free_seek) ;
-FREE_CHUNK_HDR (mng_free_expi) ;
-FREE_CHUNK_HDR (mng_free_need) ;
-#ifdef MNG_INCLUDE_JNG
-FREE_CHUNK_HDR (mng_free_jdaa) ;
-FREE_CHUNK_HDR (mng_free_jdat) ;
-#endif
-#ifndef MNG_NO_DELTA_PNG
-FREE_CHUNK_HDR (mng_free_drop) ;
-FREE_CHUNK_HDR (mng_free_dbyk) ;
-FREE_CHUNK_HDR (mng_free_ordr) ;
-#endif
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-FREE_CHUNK_HDR (mng_free_mpng) ;
-#endif
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-FREE_CHUNK_HDR (mng_free_adat) ;
-#endif
-FREE_CHUNK_HDR (mng_free_evnt) ;
-FREE_CHUNK_HDR (mng_free_unknown) ;
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_WRITE_PROCS
-
-#define ASSIGN_CHUNK_HDR(n) mng_retcode n (mng_datap pData, \
- mng_chunkp pChunkto, \
- mng_chunkp pChunkfrom)
-
-#ifdef MNG_OPTIMIZE_CHUNKASSIGN
-ASSIGN_CHUNK_HDR (mng_assign_general) ;
-#else /* MNG_OPTIMIZE_CHUNKASSIGN */
-ASSIGN_CHUNK_HDR (mng_assign_ihdr) ;
-ASSIGN_CHUNK_HDR (mng_assign_plte) ;
-ASSIGN_CHUNK_HDR (mng_assign_iend) ;
-ASSIGN_CHUNK_HDR (mng_assign_trns) ;
-ASSIGN_CHUNK_HDR (mng_assign_gama) ;
-ASSIGN_CHUNK_HDR (mng_assign_chrm) ;
-ASSIGN_CHUNK_HDR (mng_assign_srgb) ;
-ASSIGN_CHUNK_HDR (mng_assign_bkgd) ;
-ASSIGN_CHUNK_HDR (mng_assign_phys) ;
-ASSIGN_CHUNK_HDR (mng_assign_sbit) ;
-ASSIGN_CHUNK_HDR (mng_assign_hist) ;
-ASSIGN_CHUNK_HDR (mng_assign_time) ;
-ASSIGN_CHUNK_HDR (mng_assign_mhdr) ;
-ASSIGN_CHUNK_HDR (mng_assign_mend) ;
-ASSIGN_CHUNK_HDR (mng_assign_endl) ;
-ASSIGN_CHUNK_HDR (mng_assign_defi) ;
-ASSIGN_CHUNK_HDR (mng_assign_basi) ;
-ASSIGN_CHUNK_HDR (mng_assign_clon) ;
-ASSIGN_CHUNK_HDR (mng_assign_back) ;
-ASSIGN_CHUNK_HDR (mng_assign_move) ;
-ASSIGN_CHUNK_HDR (mng_assign_clip) ;
-ASSIGN_CHUNK_HDR (mng_assign_show) ;
-ASSIGN_CHUNK_HDR (mng_assign_term) ;
-ASSIGN_CHUNK_HDR (mng_assign_fpri) ;
-ASSIGN_CHUNK_HDR (mng_assign_phyg) ;
-#ifdef MNG_INCLUDE_JNG
-ASSIGN_CHUNK_HDR (mng_assign_jhdr) ;
-ASSIGN_CHUNK_HDR (mng_assign_jsep) ;
-#endif
-#ifndef MNG_NO_DELTA_PNG
-ASSIGN_CHUNK_HDR (mng_assign_dhdr) ;
-ASSIGN_CHUNK_HDR (mng_assign_prom) ;
-ASSIGN_CHUNK_HDR (mng_assign_ipng) ;
-ASSIGN_CHUNK_HDR (mng_assign_pplt) ;
-#ifdef MNG_INCLUDE_JNG
-ASSIGN_CHUNK_HDR (mng_assign_ijng) ;
-#endif
-#endif
-ASSIGN_CHUNK_HDR (mng_assign_magn) ;
-#endif /* MNG_OPTIMIZE_CHUNKASSIGN */
-
-ASSIGN_CHUNK_HDR (mng_assign_idat) ;
-ASSIGN_CHUNK_HDR (mng_assign_iccp) ;
-ASSIGN_CHUNK_HDR (mng_assign_text) ;
-ASSIGN_CHUNK_HDR (mng_assign_ztxt) ;
-ASSIGN_CHUNK_HDR (mng_assign_itxt) ;
-ASSIGN_CHUNK_HDR (mng_assign_splt) ;
-ASSIGN_CHUNK_HDR (mng_assign_loop) ;
-#ifndef MNG_SKIPCHUNK_PAST
-ASSIGN_CHUNK_HDR (mng_assign_past) ;
-#endif
-ASSIGN_CHUNK_HDR (mng_assign_disc) ;
-ASSIGN_CHUNK_HDR (mng_assign_fram) ;
-ASSIGN_CHUNK_HDR (mng_assign_save) ;
-ASSIGN_CHUNK_HDR (mng_assign_seek) ;
-ASSIGN_CHUNK_HDR (mng_assign_need) ;
-ASSIGN_CHUNK_HDR (mng_assign_expi) ;
-#ifdef MNG_INCLUDE_JNG
-ASSIGN_CHUNK_HDR (mng_assign_jdaa) ;
-ASSIGN_CHUNK_HDR (mng_assign_jdat) ;
-#endif
-#ifndef MNG_NO_DELTA_PNG
-ASSIGN_CHUNK_HDR (mng_assign_drop) ;
-ASSIGN_CHUNK_HDR (mng_assign_dbyk) ;
-ASSIGN_CHUNK_HDR (mng_assign_ordr) ;
-#endif
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-ASSIGN_CHUNK_HDR (mng_assign_mpng) ;
-#endif
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-ASSIGN_CHUNK_HDR (mng_assign_ahdr) ;
-ASSIGN_CHUNK_HDR (mng_assign_adat) ;
-#endif
-ASSIGN_CHUNK_HDR (mng_assign_evnt) ;
-ASSIGN_CHUNK_HDR (mng_assign_unknown) ;
-
-/* ************************************************************************** */
-
-#else /* MNG_INCLUDE_WRITE_PROCS */
-#define mng_assign_general 0
-#define mng_assign_ihdr 0
-#define mng_assign_plte 0
-#define mng_assign_idat 0
-#define mng_assign_iend 0
-#define mng_assign_trns 0
-#define mng_assign_gama 0
-#define mng_assign_chrm 0
-#define mng_assign_srgb 0
-#define mng_assign_iccp 0
-#define mng_assign_text 0
-#define mng_assign_ztxt 0
-#define mng_assign_itxt 0
-#define mng_assign_bkgd 0
-#define mng_assign_phys 0
-#define mng_assign_sbit 0
-#define mng_assign_splt 0
-#define mng_assign_hist 0
-#define mng_assign_time 0
-#define mng_assign_mhdr 0
-#define mng_assign_mend 0
-#define mng_assign_loop 0
-#define mng_assign_endl 0
-#define mng_assign_defi 0
-#define mng_assign_basi 0
-#define mng_assign_clon 0
-#ifndef MNG_SKIPCHUNK_PAST
-#define mng_assign_past 0
-#endif
-#define mng_assign_disc 0
-#define mng_assign_back 0
-#define mng_assign_fram 0
-#define mng_assign_move 0
-#define mng_assign_clip 0
-#define mng_assign_show 0
-#define mng_assign_term 0
-#define mng_assign_save 0
-#define mng_assign_seek 0
-#define mng_assign_expi 0
-#define mng_assign_fpri 0
-#define mng_assign_phyg 0
-#ifdef MNG_INCLUDE_JNG
-#define mng_assign_jhdr 0
-#define mng_assign_jdaa 0
-#define mng_assign_jdat 0
-#define mng_assign_jsep 0
-#endif
-#ifndef MNG_NO_DELTA_PNG
-#define mng_assign_dhdr 0
-#define mng_assign_prom 0
-#define mng_assign_ipng 0
-#define mng_assign_pplt 0
-#ifdef MNG_INCLUDE_JNG
-#define mng_assign_ijng 0
-#endif
-#define mng_assign_drop 0
-#define mng_assign_dbyk 0
-#define mng_assign_ordr 0
-#endif
-#define mng_assign_magn 0
-#define mng_assign_need 0
-#define mng_assign_mpng 0
-#define mng_assign_ahdr 0
-#define mng_assign_adat 0
-#define mng_assign_evnt 0
-#define mng_assign_unknown 0
-#endif /* MNG_INCLUDE_WRITE_PROCS */
-
-/* ************************************************************************** */
-
-#endif /* _libmng_chunk_prc_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/libmng_chunk_xs.c b/src/3rdparty/libmng/libmng_chunk_xs.c
deleted file mode 100644
index 13114090d6..0000000000
--- a/src/3rdparty/libmng/libmng_chunk_xs.c
+++ /dev/null
@@ -1,7016 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_chunk_xs.c copyright (c) 2000-2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : chunk access functions (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of the chunk access functions * */
-/* * * */
-/* * changes : 0.5.1 - 05/06/2000 - G.Juyn * */
-/* * - changed and filled iterate-chunk function * */
-/* * 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - fixed calling convention * */
-/* * - added getchunk functions * */
-/* * - added putchunk functions * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/11/2000 - G.Juyn * */
-/* * - added empty-chunk put-routines * */
-/* * 0.5.1 - 05/12/2000 - G.Juyn * */
-/* * - changed trace to macro for callback error-reporting * */
-/* * 0.5.1 - 05/15/2000 - G.Juyn * */
-/* * - added getimgdata & putimgdata functions * */
-/* * * */
-/* * 0.5.2 - 05/19/2000 - G.Juyn * */
-/* * - B004 - fixed problem with MNG_SUPPORT_WRITE not defined * */
-/* * also for MNG_SUPPORT_WRITE without MNG_INCLUDE_JNG * */
-/* * - Cleaned up some code regarding mixed support * */
-/* * * */
-/* * 0.9.1 - 07/19/2000 - G.Juyn * */
-/* * - fixed creation-code * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * - added function to set simplicity field * */
-/* * - fixed putchunk_unknown() function * */
-/* * * */
-/* * 0.9.3 - 08/07/2000 - G.Juyn * */
-/* * - B111300 - fixup for improved portability * */
-/* * 0.9.3 - 08/26/2000 - G.Juyn * */
-/* * - added MAGN chunk * */
-/* * 0.9.3 - 10/20/2000 - G.Juyn * */
-/* * - fixed putchunk_plte() to set bEmpty parameter * */
-/* * * */
-/* * 0.9.5 - 01/25/2001 - G.Juyn * */
-/* * - fixed some small compiler warnings (thanks Nikki) * */
-/* * * */
-/* * 1.0.5 - 09/07/2002 - G.Juyn * */
-/* * - B578940 - unimplemented functions return errorcode * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * - added HLAPI function to copy chunks * */
-/* * 1.0.5 - 09/14/2002 - G.Juyn * */
-/* * - added event handling for dynamic MNG * */
-/* * 1.0.5 - 10/07/2002 - G.Juyn * */
-/* * - added check for TERM placement during create/write * */
-/* * 1.0.5 - 11/28/2002 - G.Juyn * */
-/* * - fixed definition of iMethodX/Y for MAGN chunk * */
-/* * * */
-/* * 1.0.6 - 05/25/2003 - G.R-P * */
-/* * - added MNG_SKIPCHUNK_cHNK footprint optimizations * */
-/* * 1.0.6 - 07/07/2003 - G.R-P * */
-/* * - added MNG_NO_DELTA_PNG reduction and more SKIPCHUNK * */
-/* * optimizations * */
-/* * 1.0.6 - 07/29/2003 - G.R-P * */
-/* * - added conditionals around PAST chunk support * */
-/* * 1.0.6 - 08/17/2003 - G.R-P * */
-/* * - added conditionals around non-VLC chunk support * */
-/* * * */
-/* * 1.0.8 - 04/01/2004 - G.Juyn * */
-/* * - added missing get-/put-chunk-jdaa * */
-/* * 1.0.8 - 08/02/2004 - G.Juyn * */
-/* * - added conditional to allow easier writing of large MNG's * */
-/* * * */
-/* * 1.0.9 - 09/17/2004 - G.R-P * */
-/* * - added two more conditionals * */
-/* * 1.0.9 - 09/25/2004 - G.Juyn * */
-/* * - replaced MNG_TWEAK_LARGE_FILES with permanent solution * */
-/* * 1.0.9 - 17/14/2004 - G.Juyn * */
-/* * - fixed PPLT getchunk/putchunk routines * */
-/* * 1.0.9 - 12/05/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_CHUNKINITFREE * */
-/* * 1.0.9 - 12/20/2004 - G.Juyn * */
-/* * - cleaned up macro-invocations (thanks to D. Airlie) * */
-/* * * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * * */
-/* ************************************************************************** */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-#include "libmng_memory.h"
-#include "libmng_chunks.h"
-#ifdef MNG_OPTIMIZE_CHUNKREADER
-#include "libmng_chunk_descr.h"
-#endif
-#include "libmng_chunk_prc.h"
-#include "libmng_chunk_io.h"
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_ACCESS_CHUNKS
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_iterate_chunks (mng_handle hHandle,
- mng_uint32 iChunkseq,
- mng_iteratechunk fProc)
-{
- mng_uint32 iSeq;
- mng_chunkid iChunkname;
- mng_datap pData;
- mng_chunkp pChunk;
- mng_bool bCont;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_ITERATE_CHUNKS, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = ((mng_datap)hHandle); /* and make it addressable */
-
- iSeq = 0;
- bCont = MNG_TRUE;
- pChunk = pData->pFirstchunk; /* get the first chunk */
- /* as long as there are some more */
- while ((pChunk) && (bCont)) /* and the app didn't signal a stop */
- {
- if (iSeq >= iChunkseq) /* reached the first target ? */
- { /* then call this and next ones back in... */
- iChunkname = ((mng_chunk_headerp)pChunk)->iChunkname;
- bCont = fProc (hHandle, (mng_handle)pChunk, iChunkname, iSeq);
- }
-
- iSeq++; /* next one */
- pChunk = ((mng_chunk_headerp)pChunk)->pNext;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_ITERATE_CHUNKS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_WRITE
-mng_retcode MNG_DECL mng_copy_chunk (mng_handle hHandle,
- mng_handle hChunk,
- mng_handle hHandleOut)
-{
- mng_datap pDataOut;
- mng_chunkp pChunk;
- mng_chunkp pChunkOut;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_COPY_CHUNK, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handles */
- MNG_VALIDHANDLE (hHandleOut)
-
- pDataOut = (mng_datap)hHandleOut; /* make outhandle addressable */
- pChunk = (mng_chunkp)hChunk; /* address the chunk */
-
- if (!pDataOut->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pDataOut, MNG_FUNCTIONINVALID)
- /* create a new chunk */
- iRetcode = ((mng_createchunk)((mng_chunk_headerp)pChunk)->fCreate)
- (pDataOut, ((mng_chunk_headerp)pChunk), &pChunkOut);
- if (!iRetcode) /* assign the chunk-specific data */
- iRetcode = ((mng_assignchunk)((mng_chunk_headerp)pChunk)->fAssign)
- (pDataOut, pChunkOut, pChunk);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- mng_add_chunk (pDataOut, pChunkOut); /* and put it in the output-stream */
-
- /* could it be the end of the chain ? */
- if (((mng_chunk_headerp)pChunkOut)->iChunkname == MNG_UINT_IEND)
- {
-#ifdef MNG_INCLUDE_JNG
- if ((pDataOut->iFirstchunkadded == MNG_UINT_IHDR) ||
- (pDataOut->iFirstchunkadded == MNG_UINT_JHDR) )
-#else
- if (pDataOut->iFirstchunkadded == MNG_UINT_IHDR)
-#endif
- pDataOut->bCreating = MNG_FALSE; /* right; this should be the last chunk !!! */
- }
-
- if (((mng_chunk_headerp)pChunkOut)->iChunkname == MNG_UINT_MEND)
- pDataOut->bCreating = MNG_FALSE; /* definitely this should be the last !!! */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_COPY_CHUNK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_WRITE */
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_getchunk_ihdr (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iWidth,
- mng_uint32 *iHeight,
- mng_uint8 *iBitdepth,
- mng_uint8 *iColortype,
- mng_uint8 *iCompression,
- mng_uint8 *iFilter,
- mng_uint8 *iInterlace)
-{
- mng_datap pData;
- mng_ihdrp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_IHDR, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_ihdrp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_IHDR)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iWidth = pChunk->iWidth; /* fill the fields */
- *iHeight = pChunk->iHeight;
- *iBitdepth = pChunk->iBitdepth;
- *iColortype = pChunk->iColortype;
- *iCompression = pChunk->iCompression;
- *iFilter = pChunk->iFilter;
- *iInterlace = pChunk->iInterlace;
-
- /* fill the chunk */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_IHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_getchunk_plte (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iCount,
- mng_palette8 *aPalette)
-{
- mng_datap pData;
- mng_pltep pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_PLTE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_pltep)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_PLTE)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iCount = pChunk->iEntrycount; /* fill the fields */
-
- MNG_COPY (*aPalette, pChunk->aEntries, sizeof (mng_palette8));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_PLTE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_getchunk_idat (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iRawlen,
- mng_ptr *pRawdata)
-{
- mng_datap pData;
- mng_idatp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_IDAT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_idatp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_IDAT)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iRawlen = pChunk->iDatasize; /* fill the fields */
- *pRawdata = pChunk->pData;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_IDAT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_getchunk_trns (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_bool *bGlobal,
- mng_uint8 *iType,
- mng_uint32 *iCount,
- mng_uint8arr *aAlphas,
- mng_uint16 *iGray,
- mng_uint16 *iRed,
- mng_uint16 *iGreen,
- mng_uint16 *iBlue,
- mng_uint32 *iRawlen,
- mng_uint8arr *aRawdata)
-{
- mng_datap pData;
- mng_trnsp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_TRNS, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_trnsp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_tRNS)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *bEmpty = pChunk->bEmpty; /* fill the fields */
- *bGlobal = pChunk->bGlobal;
- *iType = pChunk->iType;
- *iCount = pChunk->iCount;
- *iGray = pChunk->iGray;
- *iRed = pChunk->iRed;
- *iGreen = pChunk->iGreen;
- *iBlue = pChunk->iBlue;
- *iRawlen = pChunk->iRawlen;
-
- MNG_COPY (*aAlphas, pChunk->aEntries, sizeof (mng_uint8arr));
- MNG_COPY (*aRawdata, pChunk->aRawdata, sizeof (mng_uint8arr));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_TRNS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_gAMA
-mng_retcode MNG_DECL mng_getchunk_gama (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint32 *iGamma)
-{
- mng_datap pData;
- mng_gamap pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_GAMA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_gamap)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_gAMA)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *bEmpty = pChunk->bEmpty; /* fill the fields */
- *iGamma = pChunk->iGamma;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_GAMA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_cHRM
-mng_retcode MNG_DECL mng_getchunk_chrm (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint32 *iWhitepointx,
- mng_uint32 *iWhitepointy,
- mng_uint32 *iRedx,
- mng_uint32 *iRedy,
- mng_uint32 *iGreenx,
- mng_uint32 *iGreeny,
- mng_uint32 *iBluex,
- mng_uint32 *iBluey)
-{
- mng_datap pData;
- mng_chrmp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_CHRM, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_chrmp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_cHRM)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *bEmpty = pChunk->bEmpty; /* fill the fields */
- *iWhitepointx = pChunk->iWhitepointx;
- *iWhitepointy = pChunk->iWhitepointy;
- *iRedx = pChunk->iRedx;
- *iRedy = pChunk->iRedy;
- *iGreenx = pChunk->iGreenx;
- *iGreeny = pChunk->iGreeny;
- *iBluex = pChunk->iBluex;
- *iBluey = pChunk->iBluey;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_CHRM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sRGB
-mng_retcode MNG_DECL mng_getchunk_srgb (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint8 *iRenderingintent)
-{
- mng_datap pData;
- mng_srgbp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_SRGB, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_srgbp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_sRGB)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *bEmpty = pChunk->bEmpty; /* fill the fields */
- *iRenderingintent = pChunk->iRenderingintent;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_SRGB, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iCCP
-mng_retcode MNG_DECL mng_getchunk_iccp (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint32 *iNamesize,
- mng_pchar *zName,
- mng_uint8 *iCompression,
- mng_uint32 *iProfilesize,
- mng_ptr *pProfile)
-{
- mng_datap pData;
- mng_iccpp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_ICCP, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_iccpp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_iCCP)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *bEmpty = pChunk->bEmpty; /* fill the fields */
- *iNamesize = pChunk->iNamesize;
- *zName = pChunk->zName;
- *iCompression = pChunk->iCompression;
- *iProfilesize = pChunk->iProfilesize;
- *pProfile = pChunk->pProfile;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_ICCP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_tEXt
-mng_retcode MNG_DECL mng_getchunk_text (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iKeywordsize,
- mng_pchar *zKeyword,
- mng_uint32 *iTextsize,
- mng_pchar *zText)
-{
- mng_datap pData;
- mng_textp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_TEXT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_textp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_tEXt)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
- /* fill the fields */
- *iKeywordsize = pChunk->iKeywordsize;
- *zKeyword = pChunk->zKeyword;
- *iTextsize = pChunk->iTextsize;
- *zText = pChunk->zText;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_TEXT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_zTXt
-mng_retcode MNG_DECL mng_getchunk_ztxt (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iKeywordsize,
- mng_pchar *zKeyword,
- mng_uint8 *iCompression,
- mng_uint32 *iTextsize,
- mng_pchar *zText)
-{
- mng_datap pData;
- mng_ztxtp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_ZTXT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_ztxtp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_zTXt)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
- /* fill the fields */
- *iKeywordsize = pChunk->iKeywordsize;
- *zKeyword = pChunk->zKeyword;
- *iCompression = pChunk->iCompression;
- *iTextsize = pChunk->iTextsize;
- *zText = pChunk->zText;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_ZTXT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iTXt
-mng_retcode MNG_DECL mng_getchunk_itxt (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iKeywordsize,
- mng_pchar *zKeyword,
- mng_uint8 *iCompressionflag,
- mng_uint8 *iCompressionmethod,
- mng_uint32 *iLanguagesize,
- mng_pchar *zLanguage,
- mng_uint32 *iTranslationsize,
- mng_pchar *zTranslation,
- mng_uint32 *iTextsize,
- mng_pchar *zText)
-{
- mng_datap pData;
- mng_itxtp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_ITXT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_itxtp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_iTXt)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
- /* fill the fields */
- *iKeywordsize = pChunk->iKeywordsize;
- *zKeyword = pChunk->zKeyword;
- *iCompressionflag = pChunk->iCompressionflag;
- *iCompressionmethod = pChunk->iCompressionmethod;
- *iLanguagesize = pChunk->iLanguagesize;
- *zLanguage = pChunk->zLanguage;
- *iTranslationsize = pChunk->iTranslationsize;
- *zTranslation = pChunk->zTranslation;
- *iTextsize = pChunk->iTextsize;
- *zText = pChunk->zText;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_ITXT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_bKGD
-mng_retcode MNG_DECL mng_getchunk_bkgd (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint8 *iType,
- mng_uint8 *iIndex,
- mng_uint16 *iGray,
- mng_uint16 *iRed,
- mng_uint16 *iGreen,
- mng_uint16 *iBlue)
-{
- mng_datap pData;
- mng_bkgdp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_BKGD, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_bkgdp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_bKGD)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *bEmpty = pChunk->bEmpty; /* fill the fields */
- *iType = pChunk->iType;
- *iIndex = pChunk->iIndex;
- *iGray = pChunk->iGray;
- *iRed = pChunk->iRed;
- *iGreen = pChunk->iGreen;
- *iBlue = pChunk->iBlue;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_BKGD, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_pHYs
-mng_retcode MNG_DECL mng_getchunk_phys (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint32 *iSizex,
- mng_uint32 *iSizey,
- mng_uint8 *iUnit)
-{
- mng_datap pData;
- mng_physp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_PHYS, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_physp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_pHYs)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *bEmpty = pChunk->bEmpty; /* fill the fields */
- *iSizex = pChunk->iSizex;
- *iSizey = pChunk->iSizey;
- *iUnit = pChunk->iUnit;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_PHYS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sBIT
-mng_retcode MNG_DECL mng_getchunk_sbit (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint8 *iType,
- mng_uint8arr4 *aBits)
-{
- mng_datap pData;
- mng_sbitp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_SBIT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_sbitp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_sBIT)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *bEmpty = pChunk->bEmpty;
- *iType = pChunk->iType;
- (*aBits)[0] = pChunk->aBits[0];
- (*aBits)[1] = pChunk->aBits[1];
- (*aBits)[2] = pChunk->aBits[2];
- (*aBits)[3] = pChunk->aBits[3];
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_SBIT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sPLT
-mng_retcode MNG_DECL mng_getchunk_splt (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint32 *iNamesize,
- mng_pchar *zName,
- mng_uint8 *iSampledepth,
- mng_uint32 *iEntrycount,
- mng_ptr *pEntries)
-{
- mng_datap pData;
- mng_spltp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_SPLT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_spltp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_sPLT)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *bEmpty = pChunk->bEmpty; /* fill the fields */
- *iNamesize = pChunk->iNamesize;
- *zName = pChunk->zName;
- *iSampledepth = pChunk->iSampledepth;
- *iEntrycount = pChunk->iEntrycount;
- *pEntries = pChunk->pEntries;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_SPLT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_hIST
-mng_retcode MNG_DECL mng_getchunk_hist (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iEntrycount,
- mng_uint16arr *aEntries)
-{
- mng_datap pData;
- mng_histp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_HIST, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_histp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_hIST)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iEntrycount = pChunk->iEntrycount; /* fill the fields */
-
- MNG_COPY (*aEntries, pChunk->aEntries, sizeof (mng_uint16arr));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_HIST, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_tIME
-mng_retcode MNG_DECL mng_getchunk_time (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iYear,
- mng_uint8 *iMonth,
- mng_uint8 *iDay,
- mng_uint8 *iHour,
- mng_uint8 *iMinute,
- mng_uint8 *iSecond)
-{
- mng_datap pData;
- mng_timep pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_TIME, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_timep)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_tIME)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iYear = pChunk->iYear; /* fill the fields */
- *iMonth = pChunk->iMonth;
- *iDay = pChunk->iDay;
- *iHour = pChunk->iHour;
- *iMinute = pChunk->iMinute;
- *iSecond = pChunk->iSecond;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_TIME, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_getchunk_mhdr (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iWidth,
- mng_uint32 *iHeight,
- mng_uint32 *iTicks,
- mng_uint32 *iLayercount,
- mng_uint32 *iFramecount,
- mng_uint32 *iPlaytime,
- mng_uint32 *iSimplicity)
-{
- mng_datap pData;
- mng_mhdrp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_MHDR, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_mhdrp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iWidth = pChunk->iWidth; /* fill the fields */
- *iHeight = pChunk->iHeight;
- *iTicks = pChunk->iTicks;
- *iLayercount = pChunk->iLayercount;
- *iFramecount = pChunk->iFramecount;
- *iPlaytime = pChunk->iPlaytime;
- *iSimplicity = pChunk->iSimplicity;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_MHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_LOOP
-mng_retcode MNG_DECL mng_getchunk_loop (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint8 *iLevel,
- mng_uint32 *iRepeat,
- mng_uint8 *iTermination,
- mng_uint32 *iItermin,
- mng_uint32 *iItermax,
- mng_uint32 *iCount,
- mng_uint32p *pSignals)
-{
- mng_datap pData;
- mng_loopp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_LOOP, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_loopp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_LOOP)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iLevel = pChunk->iLevel; /* fill teh fields */
- *iRepeat = pChunk->iRepeat;
- *iTermination = pChunk->iTermination;
- *iItermin = pChunk->iItermin;
- *iItermax = pChunk->iItermax;
- *iCount = pChunk->iCount;
- *pSignals = pChunk->pSignals;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_LOOP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_getchunk_endl (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint8 *iLevel)
-{
- mng_datap pData;
- mng_endlp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_ENDL, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_endlp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_ENDL)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iLevel = pChunk->iLevel; /* fill the field */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_ENDL, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DEFI
-mng_retcode MNG_DECL mng_getchunk_defi (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iObjectid,
- mng_uint8 *iDonotshow,
- mng_uint8 *iConcrete,
- mng_bool *bHasloca,
- mng_int32 *iXlocation,
- mng_int32 *iYlocation,
- mng_bool *bHasclip,
- mng_int32 *iLeftcb,
- mng_int32 *iRightcb,
- mng_int32 *iTopcb,
- mng_int32 *iBottomcb)
-{
- mng_datap pData;
- mng_defip pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_DEFI, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_defip)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_DEFI)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iObjectid = pChunk->iObjectid; /* fill the fields */
- *iDonotshow = pChunk->iDonotshow;
- *iConcrete = pChunk->iConcrete;
- *bHasloca = pChunk->bHasloca;
- *iXlocation = pChunk->iXlocation;
- *iYlocation = pChunk->iYlocation;
- *bHasclip = pChunk->bHasclip;
- *iLeftcb = pChunk->iLeftcb;
- *iRightcb = pChunk->iRightcb;
- *iTopcb = pChunk->iTopcb;
- *iBottomcb = pChunk->iBottomcb;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_DEFI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_BASI
-mng_retcode MNG_DECL mng_getchunk_basi (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iWidth,
- mng_uint32 *iHeight,
- mng_uint8 *iBitdepth,
- mng_uint8 *iColortype,
- mng_uint8 *iCompression,
- mng_uint8 *iFilter,
- mng_uint8 *iInterlace,
- mng_uint16 *iRed,
- mng_uint16 *iGreen,
- mng_uint16 *iBlue,
- mng_uint16 *iAlpha,
- mng_uint8 *iViewable)
-{
- mng_datap pData;
- mng_basip pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_BASI, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_basip)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_BASI)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iWidth = pChunk->iWidth; /* fill the fields */
- *iHeight = pChunk->iHeight;
- *iBitdepth = pChunk->iBitdepth;
- *iColortype = pChunk->iColortype;
- *iCompression = pChunk->iCompression;
- *iFilter = pChunk->iFilter;
- *iInterlace = pChunk->iInterlace;
- *iRed = pChunk->iRed;
- *iGreen = pChunk->iGreen;
- *iBlue = pChunk->iBlue;
- *iAlpha = pChunk->iAlpha;
- *iViewable = pChunk->iViewable;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_BASI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_CLON
-mng_retcode MNG_DECL mng_getchunk_clon (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iSourceid,
- mng_uint16 *iCloneid,
- mng_uint8 *iClonetype,
- mng_uint8 *iDonotshow,
- mng_uint8 *iConcrete,
- mng_bool *bHasloca,
- mng_uint8 *iLocationtype,
- mng_int32 *iLocationx,
- mng_int32 *iLocationy)
-{
- mng_datap pData;
- mng_clonp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_CLON, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_clonp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_CLON)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iSourceid = pChunk->iSourceid; /* fill the fields */
- *iCloneid = pChunk->iCloneid;
- *iClonetype = pChunk->iClonetype;
- *iDonotshow = pChunk->iDonotshow;
- *iConcrete = pChunk->iConcrete;
- *bHasloca = pChunk->bHasloca;
- *iLocationtype = pChunk->iLocationtype;
- *iLocationx = pChunk->iLocationx;
- *iLocationy = pChunk->iLocationy;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_CLON, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-mng_retcode MNG_DECL mng_getchunk_past (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iDestid,
- mng_uint8 *iTargettype,
- mng_int32 *iTargetx,
- mng_int32 *iTargety,
- mng_uint32 *iCount)
-{
- mng_datap pData;
- mng_pastp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_PAST, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_pastp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_PAST)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iDestid = pChunk->iDestid; /* fill the fields */
- *iTargettype = pChunk->iTargettype;
- *iTargetx = pChunk->iTargetx;
- *iTargety = pChunk->iTargety;
- *iCount = pChunk->iCount;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_PAST, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-mng_retcode MNG_DECL mng_getchunk_past_src (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 iEntry,
- mng_uint16 *iSourceid,
- mng_uint8 *iComposition,
- mng_uint8 *iOrientation,
- mng_uint8 *iOffsettype,
- mng_int32 *iOffsetx,
- mng_int32 *iOffsety,
- mng_uint8 *iBoundarytype,
- mng_int32 *iBoundaryl,
- mng_int32 *iBoundaryr,
- mng_int32 *iBoundaryt,
- mng_int32 *iBoundaryb)
-{
- mng_datap pData;
- mng_pastp pChunk;
- mng_past_sourcep pEntry;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_PAST_SRC, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_pastp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_PAST)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- if (iEntry >= pChunk->iCount) /* valid index ? */
- MNG_ERROR (pData, MNG_INVALIDENTRYIX)
- /* address the entry */
- pEntry = pChunk->pSources + iEntry;
-
- *iSourceid = pEntry->iSourceid; /* fill the fields */
- *iComposition = pEntry->iComposition;
- *iOrientation = pEntry->iOrientation;
- *iOffsettype = pEntry->iOffsettype;
- *iOffsetx = pEntry->iOffsetx;
- *iOffsety = pEntry->iOffsety;
- *iBoundarytype = pEntry->iBoundarytype;
- *iBoundaryl = pEntry->iBoundaryl;
- *iBoundaryr = pEntry->iBoundaryr;
- *iBoundaryt = pEntry->iBoundaryt;
- *iBoundaryb = pEntry->iBoundaryb;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_PAST_SRC, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DISC
-mng_retcode MNG_DECL mng_getchunk_disc (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iCount,
- mng_uint16p *pObjectids)
-{
- mng_datap pData;
- mng_discp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_DISC, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_discp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_DISC)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iCount = pChunk->iCount; /* fill the fields */
- *pObjectids = pChunk->pObjectids;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_DISC, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_BACK
-mng_retcode MNG_DECL mng_getchunk_back (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iRed,
- mng_uint16 *iGreen,
- mng_uint16 *iBlue,
- mng_uint8 *iMandatory,
- mng_uint16 *iImageid,
- mng_uint8 *iTile)
-{
- mng_datap pData;
- mng_backp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_BACK, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_backp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_BACK)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iRed = pChunk->iRed; /* fill the fields */
- *iGreen = pChunk->iGreen;
- *iBlue = pChunk->iBlue;
- *iMandatory = pChunk->iMandatory;
- *iImageid = pChunk->iImageid;
- *iTile = pChunk->iTile;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_BACK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_FRAM
-mng_retcode MNG_DECL mng_getchunk_fram (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint8 *iMode,
- mng_uint32 *iNamesize,
- mng_pchar *zName,
- mng_uint8 *iChangedelay,
- mng_uint8 *iChangetimeout,
- mng_uint8 *iChangeclipping,
- mng_uint8 *iChangesyncid,
- mng_uint32 *iDelay,
- mng_uint32 *iTimeout,
- mng_uint8 *iBoundarytype,
- mng_int32 *iBoundaryl,
- mng_int32 *iBoundaryr,
- mng_int32 *iBoundaryt,
- mng_int32 *iBoundaryb,
- mng_uint32 *iCount,
- mng_uint32p *pSyncids)
-{
- mng_datap pData;
- mng_framp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_FRAM, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_framp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_FRAM)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *bEmpty = pChunk->bEmpty; /* fill the fields */
- *iMode = pChunk->iMode;
- *iNamesize = pChunk->iNamesize;
- *zName = pChunk->zName;
- *iChangedelay = pChunk->iChangedelay;
- *iChangetimeout = pChunk->iChangetimeout;
- *iChangeclipping = pChunk->iChangeclipping;
- *iChangesyncid = pChunk->iChangesyncid;
- *iDelay = pChunk->iDelay;
- *iTimeout = pChunk->iTimeout;
- *iBoundarytype = pChunk->iBoundarytype;
- *iBoundaryl = pChunk->iBoundaryl;
- *iBoundaryr = pChunk->iBoundaryr;
- *iBoundaryt = pChunk->iBoundaryt;
- *iBoundaryb = pChunk->iBoundaryb;
- *iCount = pChunk->iCount;
- *pSyncids = pChunk->pSyncids;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_FRAM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_MOVE
-mng_retcode MNG_DECL mng_getchunk_move (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iFirstid,
- mng_uint16 *iLastid,
- mng_uint8 *iMovetype,
- mng_int32 *iMovex,
- mng_int32 *iMovey)
-{
- mng_datap pData;
- mng_movep pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_MOVE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_movep)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_MOVE)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iFirstid = pChunk->iFirstid; /* fill the fields */
- *iLastid = pChunk->iLastid;
- *iMovetype = pChunk->iMovetype;
- *iMovex = pChunk->iMovex;
- *iMovey = pChunk->iMovey;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_MOVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_CLIP
-mng_retcode MNG_DECL mng_getchunk_clip (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iFirstid,
- mng_uint16 *iLastid,
- mng_uint8 *iCliptype,
- mng_int32 *iClipl,
- mng_int32 *iClipr,
- mng_int32 *iClipt,
- mng_int32 *iClipb)
-{
- mng_datap pData;
- mng_clipp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_CLIP, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_clipp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_CLIP)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iFirstid = pChunk->iFirstid; /* fill the fields */
- *iLastid = pChunk->iLastid;
- *iCliptype = pChunk->iCliptype;
- *iClipl = pChunk->iClipl;
- *iClipr = pChunk->iClipr;
- *iClipt = pChunk->iClipt;
- *iClipb = pChunk->iClipb;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_CLIP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SHOW
-mng_retcode MNG_DECL mng_getchunk_show (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint16 *iFirstid,
- mng_uint16 *iLastid,
- mng_uint8 *iMode)
-{
- mng_datap pData;
- mng_showp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_SHOW, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_showp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_SHOW)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *bEmpty = pChunk->bEmpty; /* fill the fields */
- *iFirstid = pChunk->iFirstid;
- *iLastid = pChunk->iLastid;
- *iMode = pChunk->iMode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_SHOW, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_TERM
-mng_retcode MNG_DECL mng_getchunk_term (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint8 *iTermaction,
- mng_uint8 *iIteraction,
- mng_uint32 *iDelay,
- mng_uint32 *iItermax)
-{
- mng_datap pData;
- mng_termp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_TERM, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_termp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_TERM)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iTermaction = pChunk->iTermaction; /* fill the fields */
- *iIteraction = pChunk->iIteraction;
- *iDelay = pChunk->iDelay;
- *iItermax = pChunk->iItermax;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_TERM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SAVE
-mng_retcode MNG_DECL mng_getchunk_save (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint8 *iOffsettype,
- mng_uint32 *iCount)
-{
- mng_datap pData;
- mng_savep pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_SAVE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_savep)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_SAVE)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *bEmpty = pChunk->bEmpty; /* fill the fields */
- *iOffsettype = pChunk->iOffsettype;
- *iCount = pChunk->iCount;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_SAVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_getchunk_save_entry (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 iEntry,
- mng_uint8 *iEntrytype,
- mng_uint32arr2 *iOffset,
- mng_uint32arr2 *iStarttime,
- mng_uint32 *iLayernr,
- mng_uint32 *iFramenr,
- mng_uint32 *iNamesize,
- mng_pchar *zName)
-{
- mng_datap pData;
- mng_savep pChunk;
- mng_save_entryp pEntry;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_SAVE_ENTRY, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_savep)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_SAVE)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- if (iEntry >= pChunk->iCount) /* valid index ? */
- MNG_ERROR (pData, MNG_INVALIDENTRYIX)
-
- pEntry = pChunk->pEntries + iEntry; /* address the entry */
- /* fill the fields */
- *iEntrytype = pEntry->iEntrytype;
- (*iOffset)[0] = pEntry->iOffset[0];
- (*iOffset)[1] = pEntry->iOffset[1];
- (*iStarttime)[0] = pEntry->iStarttime[0];
- (*iStarttime)[1] = pEntry->iStarttime[1];
- *iLayernr = pEntry->iLayernr;
- *iFramenr = pEntry->iFramenr;
- *iNamesize = pEntry->iNamesize;
- *zName = pEntry->zName;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_SAVE_ENTRY, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SEEK
-mng_retcode MNG_DECL mng_getchunk_seek (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iNamesize,
- mng_pchar *zName)
-{
- mng_datap pData;
- mng_seekp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_SEEK, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_seekp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_SEEK)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iNamesize = pChunk->iNamesize; /* fill the fields */
- *zName = pChunk->zName;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_SEEK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_eXPI
-mng_retcode MNG_DECL mng_getchunk_expi (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iSnapshotid,
- mng_uint32 *iNamesize,
- mng_pchar *zName)
-{
- mng_datap pData;
- mng_expip pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_EXPI, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_expip)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_eXPI)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iSnapshotid = pChunk->iSnapshotid; /* fill the fields */
- *iNamesize = pChunk->iNamesize;
- *zName = pChunk->zName;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_EXPI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_fPRI
-mng_retcode MNG_DECL mng_getchunk_fpri (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint8 *iDeltatype,
- mng_uint8 *iPriority)
-{
- mng_datap pData;
- mng_fprip pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_FPRI, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_fprip)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_fPRI)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iDeltatype = pChunk->iDeltatype; /* fill the fields */
- *iPriority = pChunk->iPriority;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_FPRI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_nEED
-mng_retcode MNG_DECL mng_getchunk_need (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iKeywordssize,
- mng_pchar *zKeywords)
-{
- mng_datap pData;
- mng_needp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_NEED, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_needp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_nEED)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
- /* fill the fields */
- *iKeywordssize = pChunk->iKeywordssize;
- *zKeywords = pChunk->zKeywords;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_NEED, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_pHYg
-mng_retcode MNG_DECL mng_getchunk_phyg (mng_handle hHandle,
- mng_handle hChunk,
- mng_bool *bEmpty,
- mng_uint32 *iSizex,
- mng_uint32 *iSizey,
- mng_uint8 *iUnit)
-{
- mng_datap pData;
- mng_phygp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_PHYG, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_phygp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_pHYg)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *bEmpty = pChunk->bEmpty; /* fill the fields */
- *iSizex = pChunk->iSizex;
- *iSizey = pChunk->iSizey;
- *iUnit = pChunk->iUnit;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_PHYG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-
-mng_retcode MNG_DECL mng_getchunk_jhdr (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iWidth,
- mng_uint32 *iHeight,
- mng_uint8 *iColortype,
- mng_uint8 *iImagesampledepth,
- mng_uint8 *iImagecompression,
- mng_uint8 *iImageinterlace,
- mng_uint8 *iAlphasampledepth,
- mng_uint8 *iAlphacompression,
- mng_uint8 *iAlphafilter,
- mng_uint8 *iAlphainterlace)
-{
- mng_datap pData;
- mng_jhdrp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_JHDR, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_jhdrp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_JHDR)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iWidth = pChunk->iWidth; /* fill the fields */
- *iHeight = pChunk->iHeight;
- *iColortype = pChunk->iColortype;
- *iImagesampledepth = pChunk->iImagesampledepth;
- *iImagecompression = pChunk->iImagecompression;
- *iImageinterlace = pChunk->iImageinterlace;
- *iAlphasampledepth = pChunk->iAlphasampledepth;
- *iAlphacompression = pChunk->iAlphacompression;
- *iAlphafilter = pChunk->iAlphafilter;
- *iAlphainterlace = pChunk->iAlphainterlace;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_JHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-
-mng_retcode MNG_DECL mng_getchunk_jdat (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iRawlen,
- mng_ptr *pRawdata)
-{
- mng_datap pData;
- mng_jdatp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_JDAT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_jdatp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_JDAT)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iRawlen = pChunk->iDatasize; /* fill the fields */
- *pRawdata = pChunk->pData;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_JDAT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-
-mng_retcode MNG_DECL mng_getchunk_jdaa (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iRawlen,
- mng_ptr *pRawdata)
-{
- mng_datap pData;
- mng_jdaap pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_JDAA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_jdaap)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_JDAA)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iRawlen = pChunk->iDatasize; /* fill the fields */
- *pRawdata = pChunk->pData;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_JDAA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode MNG_DECL mng_getchunk_dhdr (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iObjectid,
- mng_uint8 *iImagetype,
- mng_uint8 *iDeltatype,
- mng_uint32 *iBlockwidth,
- mng_uint32 *iBlockheight,
- mng_uint32 *iBlockx,
- mng_uint32 *iBlocky)
-{
- mng_datap pData;
- mng_dhdrp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_DHDR, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_dhdrp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_DHDR)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iObjectid = pChunk->iObjectid; /* fill the fields */
- *iImagetype = pChunk->iImagetype;
- *iDeltatype = pChunk->iDeltatype;
- *iBlockwidth = pChunk->iBlockwidth;
- *iBlockheight = pChunk->iBlockheight;
- *iBlockx = pChunk->iBlockx;
- *iBlocky = pChunk->iBlocky;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_DHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode MNG_DECL mng_getchunk_prom (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint8 *iColortype,
- mng_uint8 *iSampledepth,
- mng_uint8 *iFilltype)
-{
- mng_datap pData;
- mng_promp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_PROM, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_promp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_PROM)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iColortype = pChunk->iColortype; /* fill the fields */
- *iSampledepth = pChunk->iSampledepth;
- *iFilltype = pChunk->iFilltype;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_PROM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode MNG_DECL mng_getchunk_pplt (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint8 *iDeltatype,
- mng_uint32 *iCount)
-{
- mng_datap pData;
- mng_ppltp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_PPLT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_ppltp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_PPLT)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iDeltatype = pChunk->iDeltatype; /* fill the fields */
- *iCount = pChunk->iCount;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_PPLT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode MNG_DECL mng_getchunk_pplt_entry (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 iEntry,
- mng_uint16 *iRed,
- mng_uint16 *iGreen,
- mng_uint16 *iBlue,
- mng_uint16 *iAlpha,
- mng_bool *bUsed)
-{
- mng_datap pData;
- mng_ppltp pChunk;
- mng_pplt_entryp pEntry;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_PPLT_ENTRY, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_ppltp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_PPLT)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- if (iEntry >= pChunk->iCount) /* valid index ? */
- MNG_ERROR (pData, MNG_INVALIDENTRYIX)
-
- pEntry = &pChunk->aEntries[iEntry]; /* address the entry */
-
- *iRed = pEntry->iRed; /* fill the fields */
- *iGreen = pEntry->iGreen;
- *iBlue = pEntry->iBlue;
- *iAlpha = pEntry->iAlpha;
- *bUsed = pEntry->bUsed;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_PPLT_ENTRY, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode MNG_DECL mng_getchunk_drop (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iCount,
- mng_chunkidp *pChunknames)
-{
- mng_datap pData;
- mng_dropp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_DROP, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_dropp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_DROP)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iCount = pChunk->iCount; /* fill the fields */
- *pChunknames = pChunk->pChunknames;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_DROP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_DBYK
-mng_retcode MNG_DECL mng_getchunk_dbyk (mng_handle hHandle,
- mng_handle hChunk,
- mng_chunkid *iChunkname,
- mng_uint8 *iPolarity,
- mng_uint32 *iKeywordssize,
- mng_pchar *zKeywords)
-{
- mng_datap pData;
- mng_dbykp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_DBYK, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_dbykp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_DBYK)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iChunkname = pChunk->iChunkname; /* fill the fields */
- *iPolarity = pChunk->iPolarity;
- *iKeywordssize = pChunk->iKeywordssize;
- *zKeywords = pChunk->zKeywords;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_DBYK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_ORDR
-mng_retcode MNG_DECL mng_getchunk_ordr (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iCount)
-{
- mng_datap pData;
- mng_ordrp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_ORDR, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_ordrp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_ORDR)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iCount = pChunk->iCount; /* fill the field */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_ORDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_ORDR
-mng_retcode MNG_DECL mng_getchunk_ordr_entry (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 iEntry,
- mng_chunkid *iChunkname,
- mng_uint8 *iOrdertype)
-{
- mng_datap pData;
- mng_ordrp pChunk;
- mng_ordr_entryp pEntry;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_ORDR_ENTRY, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_ordrp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_ORDR)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- if (iEntry >= pChunk->iCount) /* valid index ? */
- MNG_ERROR (pData, MNG_INVALIDENTRYIX)
-
- pEntry = pChunk->pEntries + iEntry; /* address the proper entry */
-
- *iChunkname = pEntry->iChunkname; /* fill the fields */
- *iOrdertype = pEntry->iOrdertype;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_ORDR_ENTRY, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_MAGN
-mng_retcode MNG_DECL mng_getchunk_magn (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint16 *iFirstid,
- mng_uint16 *iLastid,
- mng_uint16 *iMethodX,
- mng_uint16 *iMX,
- mng_uint16 *iMY,
- mng_uint16 *iML,
- mng_uint16 *iMR,
- mng_uint16 *iMT,
- mng_uint16 *iMB,
- mng_uint16 *iMethodY)
-{
- mng_datap pData;
- mng_magnp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_MAGN, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_magnp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_MAGN)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iFirstid = pChunk->iFirstid; /* fill the fields */
- *iLastid = pChunk->iLastid;
- *iMethodX = (mng_uint16)pChunk->iMethodX;
- *iMX = pChunk->iMX;
- *iMY = pChunk->iMY;
- *iML = pChunk->iML;
- *iMR = pChunk->iMR;
- *iMT = pChunk->iMT;
- *iMB = pChunk->iMB;
- *iMethodY = (mng_uint16)pChunk->iMethodY;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_MAGN, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_mpng (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iFramewidth,
- mng_uint32 *iFrameheight,
- mng_uint16 *iNumplays,
- mng_uint16 *iTickspersec,
- mng_uint8 *iCompressionmethod,
- mng_uint32 *iCount)
-{
- mng_datap pData;
- mng_mpngp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_MPNG, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_mpngp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_mpNG)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
- /* fill the fields */
- *iFramewidth = pChunk->iFramewidth;
- *iFrameheight = pChunk->iFrameheight;
- *iNumplays = pChunk->iNumplays;
- *iTickspersec = pChunk->iTickspersec;
- *iCompressionmethod = pChunk->iCompressionmethod;
- *iCount = pChunk->iFramessize / sizeof (mng_mpng_frame);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_MPNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-MNG_EXT mng_retcode MNG_DECL mng_getchunk_mpng_frame (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 iEntry,
- mng_uint32 *iX,
- mng_uint32 *iY,
- mng_uint32 *iWidth,
- mng_uint32 *iHeight,
- mng_int32 *iXoffset,
- mng_int32 *iYoffset,
- mng_uint16 *iTicks)
-{
- mng_datap pData;
- mng_mpngp pChunk;
- mng_mpng_framep pFrame;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_MPNG_FRAME, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_mpngp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_mpNG)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
- /* valid index ? */
- if (iEntry >= (pChunk->iFramessize / sizeof (mng_mpng_frame)))
- MNG_ERROR (pData, MNG_INVALIDENTRYIX)
-
- pFrame = pChunk->pFrames + iEntry; /* address the entry */
- /* fill the fields */
- *iX = pFrame->iX;
- *iY = pFrame->iY;
- *iWidth = pFrame->iWidth;
- *iHeight = pFrame->iHeight;
- *iXoffset = pFrame->iXoffset;
- *iYoffset = pFrame->iYoffset;
- *iTicks = pFrame->iTicks;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_MPNG_FRAME, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_evNT
-mng_retcode MNG_DECL mng_getchunk_evnt (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 *iCount)
-{
- mng_datap pData;
- mng_evntp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_EVNT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_evntp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_evNT)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- *iCount = pChunk->iCount; /* fill the fields */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_EVNT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_getchunk_evnt_entry (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 iEntry,
- mng_uint8 *iEventtype,
- mng_uint8 *iMasktype,
- mng_int32 *iLeft,
- mng_int32 *iRight,
- mng_int32 *iTop,
- mng_int32 *iBottom,
- mng_uint16 *iObjectid,
- mng_uint8 *iIndex,
- mng_uint32 *iSegmentnamesize,
- mng_pchar *zSegmentname)
-{
- mng_datap pData;
- mng_evntp pChunk;
- mng_evnt_entryp pEntry;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_EVNT_ENTRY, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_evntp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.iChunkname != MNG_UINT_evNT)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
-
- if (iEntry >= pChunk->iCount) /* valid index ? */
- MNG_ERROR (pData, MNG_INVALIDENTRYIX)
-
- pEntry = pChunk->pEntries + iEntry; /* address the entry */
- /* fill the fields */
- *iEventtype = pEntry->iEventtype;
- *iMasktype = pEntry->iMasktype;
- *iLeft = pEntry->iLeft;
- *iRight = pEntry->iRight;
- *iTop = pEntry->iTop;
- *iBottom = pEntry->iBottom;
- *iObjectid = pEntry->iObjectid;
- *iIndex = pEntry->iIndex;
- *iSegmentnamesize = pEntry->iSegmentnamesize;
- *zSegmentname = pEntry->zSegmentname;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_EVNT_ENTRY, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_getchunk_unknown (mng_handle hHandle,
- mng_handle hChunk,
- mng_chunkid *iChunkname,
- mng_uint32 *iRawlen,
- mng_ptr *pRawdata)
-{
- mng_datap pData;
- mng_unknown_chunkp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_UNKNOWN, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
- pChunk = (mng_unknown_chunkp)hChunk; /* address the chunk */
-
- if (pChunk->sHeader.fCleanup != mng_free_unknown)
- MNG_ERROR (pData, MNG_WRONGCHUNK) /* ouch */
- /* fill the fields */
- *iChunkname = pChunk->sHeader.iChunkname;
- *iRawlen = pChunk->iDatasize;
- *pRawdata = pChunk->pData;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETCHUNK_UNKNOWN, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_WRITE_PROCS
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_TERM
-MNG_LOCAL mng_bool check_term (mng_datap pData,
- mng_chunkid iChunkname)
-{
- mng_chunk_headerp pChunk = (mng_chunk_headerp)pData->pLastchunk;
-
- if (!pChunk) /* nothing added yet ? */
- return MNG_TRUE;
- /* last added chunk is TERM ? */
- if (pChunk->iChunkname != MNG_UINT_TERM)
- return MNG_TRUE;
- /* previous to last is MHDR ? */
- if ((pChunk->pPrev) && (((mng_chunk_headerp)pChunk->pPrev)->iChunkname == MNG_UINT_MHDR))
- return MNG_TRUE;
-
- if (iChunkname == MNG_UINT_SEEK) /* new chunk to be added is SEEK ? */
- return MNG_TRUE;
-
- return MNG_FALSE;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_putchunk_ihdr (mng_handle hHandle,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_uint8 iBitdepth,
- mng_uint8 iColortype,
- mng_uint8 iCompression,
- mng_uint8 iFilter,
- mng_uint8 iInterlace)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_IHDR, mng_init_general, mng_free_general, mng_read_ihdr, mng_write_ihdr, mng_assign_general, 0, 0, sizeof(mng_ihdr)};
-#else
- {MNG_UINT_IHDR, mng_init_ihdr, mng_free_ihdr, mng_read_ihdr, mng_write_ihdr, mng_assign_ihdr, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_IHDR, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_IHDR))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_ihdr (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_IHDR, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- ((mng_ihdrp)pChunk)->iWidth = iWidth;
- ((mng_ihdrp)pChunk)->iHeight = iHeight;
- ((mng_ihdrp)pChunk)->iBitdepth = iBitdepth;
- ((mng_ihdrp)pChunk)->iColortype = iColortype;
- ((mng_ihdrp)pChunk)->iCompression = iCompression;
- ((mng_ihdrp)pChunk)->iFilter = iFilter;
- ((mng_ihdrp)pChunk)->iInterlace = iInterlace;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_IHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_putchunk_plte (mng_handle hHandle,
- mng_uint32 iCount,
- mng_palette8 aPalette)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_PLTE, mng_init_general, mng_free_general, mng_read_plte, mng_write_plte, mng_assign_general, 0, 0, sizeof(mng_plte)};
-#else
- {MNG_UINT_PLTE, mng_init_plte, mng_free_plte, mng_read_plte, mng_write_plte, mng_assign_plte, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_PLTE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_PLTE))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_plte (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_PLTE, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_pltep)pChunk)->iEntrycount = iCount;
- ((mng_pltep)pChunk)->bEmpty = (mng_bool)(iCount == 0);
-
- MNG_COPY (((mng_pltep)pChunk)->aEntries, aPalette, sizeof (mng_palette8));
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_PLTE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_putchunk_idat (mng_handle hHandle,
- mng_uint32 iRawlen,
- mng_ptr pRawdata)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_IDAT, mng_init_general, mng_free_idat, mng_read_idat, mng_write_idat, mng_assign_idat, 0, 0, sizeof(mng_idat)};
-#else
- {MNG_UINT_IDAT, mng_init_idat, mng_free_idat, mng_read_idat, mng_write_idat, mng_assign_idat, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_IDAT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_IDAT))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_idat (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_IDAT, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_idatp)pChunk)->bEmpty = (mng_bool)(iRawlen == 0);
- ((mng_idatp)pChunk)->iDatasize = iRawlen;
-
- if (iRawlen)
- {
- MNG_ALLOC (pData, ((mng_idatp)pChunk)->pData, iRawlen);
- MNG_COPY (((mng_idatp)pChunk)->pData, pRawdata, iRawlen);
- }
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_IDAT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_putchunk_iend (mng_handle hHandle)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_IEND, mng_init_general, mng_free_general, mng_read_iend, mng_write_iend, mng_assign_general, 0, 0, sizeof(mng_iend)};
-#else
- {MNG_UINT_IEND, mng_init_iend, mng_free_iend, mng_read_iend, mng_write_iend, mng_assign_iend, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_IEND, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_IEND))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_iend (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_IEND, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_INCLUDE_JNG
- if ((pData->iFirstchunkadded == MNG_UINT_IHDR) ||
- (pData->iFirstchunkadded == MNG_UINT_JHDR) )
-#else
- if (pData->iFirstchunkadded == MNG_UINT_IHDR)
-#endif
- pData->bCreating = MNG_FALSE; /* should be last chunk !!! */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_IEND, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_putchunk_trns (mng_handle hHandle,
- mng_bool bEmpty,
- mng_bool bGlobal,
- mng_uint8 iType,
- mng_uint32 iCount,
- mng_uint8arr aAlphas,
- mng_uint16 iGray,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue,
- mng_uint32 iRawlen,
- mng_uint8arr aRawdata)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_tRNS, mng_init_general, mng_free_general, mng_read_trns, mng_write_trns, mng_assign_general, 0, 0, sizeof(mng_trns)};
-#else
- {MNG_UINT_tRNS, mng_init_trns, mng_free_trns, mng_read_trns, mng_write_trns, mng_assign_trns, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_TRNS, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_tRNS))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_trns (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_tRNS, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_trnsp)pChunk)->bEmpty = bEmpty;
- ((mng_trnsp)pChunk)->bGlobal = bGlobal;
- ((mng_trnsp)pChunk)->iType = iType;
- ((mng_trnsp)pChunk)->iCount = iCount;
- ((mng_trnsp)pChunk)->iGray = iGray;
- ((mng_trnsp)pChunk)->iRed = iRed;
- ((mng_trnsp)pChunk)->iGreen = iGreen;
- ((mng_trnsp)pChunk)->iBlue = iBlue;
- ((mng_trnsp)pChunk)->iRawlen = iRawlen;
-
- MNG_COPY (((mng_trnsp)pChunk)->aEntries, aAlphas, sizeof (mng_uint8arr));
- MNG_COPY (((mng_trnsp)pChunk)->aRawdata, aRawdata, sizeof (mng_uint8arr));
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_TRNS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_gAMA
-mng_retcode MNG_DECL mng_putchunk_gama (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint32 iGamma)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_gAMA, mng_init_general, mng_free_general, mng_read_gama, mng_write_gama, mng_assign_general, 0, 0, sizeof(mng_gama)};
-#else
- {MNG_UINT_gAMA, mng_init_gama, mng_free_gama, mng_read_gama, mng_write_gama, mng_assign_gama, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_GAMA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_gAMA))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_gama (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_gAMA, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_gamap)pChunk)->bEmpty = bEmpty;
- ((mng_gamap)pChunk)->iGamma = iGamma;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_GAMA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_cHRM
-mng_retcode MNG_DECL mng_putchunk_chrm (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint32 iWhitepointx,
- mng_uint32 iWhitepointy,
- mng_uint32 iRedx,
- mng_uint32 iRedy,
- mng_uint32 iGreenx,
- mng_uint32 iGreeny,
- mng_uint32 iBluex,
- mng_uint32 iBluey)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_cHRM, mng_init_general, mng_free_general, mng_read_chrm, mng_write_chrm, mng_assign_general, 0, 0, sizeof(mng_chrm)};
-#else
- {MNG_UINT_cHRM, mng_init_chrm, mng_free_chrm, mng_read_chrm, mng_write_chrm, mng_assign_chrm, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_CHRM, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_cHRM))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_chrm (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_cHRM, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_chrmp)pChunk)->bEmpty = bEmpty;
- ((mng_chrmp)pChunk)->iWhitepointx = iWhitepointx;
- ((mng_chrmp)pChunk)->iWhitepointy = iWhitepointy;
- ((mng_chrmp)pChunk)->iRedx = iRedx;
- ((mng_chrmp)pChunk)->iRedy = iRedy;
- ((mng_chrmp)pChunk)->iGreenx = iGreenx;
- ((mng_chrmp)pChunk)->iGreeny = iGreeny;
- ((mng_chrmp)pChunk)->iBluex = iBluex;
- ((mng_chrmp)pChunk)->iBluey = iBluey;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_CHRM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sRGB
-mng_retcode MNG_DECL mng_putchunk_srgb (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint8 iRenderingintent)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_sRGB, mng_init_general, mng_free_general, mng_read_srgb, mng_write_srgb, mng_assign_general, 0, 0, sizeof(mng_srgb)};
-#else
- {MNG_UINT_sRGB, mng_init_srgb, mng_free_srgb, mng_read_srgb, mng_write_srgb, mng_assign_srgb, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_SRGB, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_sRGB))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_srgb (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_sRGB, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_srgbp)pChunk)->bEmpty = bEmpty;
- ((mng_srgbp)pChunk)->iRenderingintent = iRenderingintent;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_SRGB, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iCCP
-mng_retcode MNG_DECL mng_putchunk_iccp (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint32 iNamesize,
- mng_pchar zName,
- mng_uint8 iCompression,
- mng_uint32 iProfilesize,
- mng_ptr pProfile)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_iCCP, mng_init_general, mng_free_iccp, mng_read_iccp, mng_write_iccp, mng_assign_iccp, 0, 0, sizeof(mng_iccp)};
-#else
- {MNG_UINT_iCCP, mng_init_iccp, mng_free_iccp, mng_read_iccp, mng_write_iccp, mng_assign_iccp, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_ICCP, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_iCCP))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_iccp (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_iCCP, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_iccpp)pChunk)->bEmpty = bEmpty;
- ((mng_iccpp)pChunk)->iNamesize = iNamesize;
- ((mng_iccpp)pChunk)->iCompression = iCompression;
- ((mng_iccpp)pChunk)->iProfilesize = iProfilesize;
-
- if (iNamesize)
- {
- MNG_ALLOC (pData, ((mng_iccpp)pChunk)->zName, iNamesize + 1);
- MNG_COPY (((mng_iccpp)pChunk)->zName, zName, iNamesize);
- }
-
- if (iProfilesize)
- {
- MNG_ALLOC (pData, ((mng_iccpp)pChunk)->pProfile, iProfilesize);
- MNG_COPY (((mng_iccpp)pChunk)->pProfile, pProfile, iProfilesize);
- }
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_ICCP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_tEXt
-mng_retcode MNG_DECL mng_putchunk_text (mng_handle hHandle,
- mng_uint32 iKeywordsize,
- mng_pchar zKeyword,
- mng_uint32 iTextsize,
- mng_pchar zText)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_tEXt, mng_init_general, mng_free_text, mng_read_text, mng_write_text, mng_assign_text, 0, 0, sizeof(mng_text)};
-#else
- {MNG_UINT_tEXt, mng_init_text, mng_free_text, mng_read_text, mng_write_text, mng_assign_text, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_TEXT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_tEXt))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_text (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_tEXt, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_textp)pChunk)->iKeywordsize = iKeywordsize;
- ((mng_textp)pChunk)->iTextsize = iTextsize;
-
- if (iKeywordsize)
- {
- MNG_ALLOC (pData, ((mng_textp)pChunk)->zKeyword, iKeywordsize + 1);
- MNG_COPY (((mng_textp)pChunk)->zKeyword, zKeyword, iKeywordsize);
- }
-
- if (iTextsize)
- {
- MNG_ALLOC (pData, ((mng_textp)pChunk)->zText, iTextsize + 1);
- MNG_COPY (((mng_textp)pChunk)->zText, zText, iTextsize);
- }
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_TEXT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_zTXt
-mng_retcode MNG_DECL mng_putchunk_ztxt (mng_handle hHandle,
- mng_uint32 iKeywordsize,
- mng_pchar zKeyword,
- mng_uint8 iCompression,
- mng_uint32 iTextsize,
- mng_pchar zText)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_zTXt, mng_init_general, mng_free_ztxt, mng_read_ztxt, mng_write_ztxt, mng_assign_ztxt, 0, 0, sizeof(mng_ztxt)};
-#else
- {MNG_UINT_zTXt, mng_init_ztxt, mng_free_ztxt, mng_read_ztxt, mng_write_ztxt, mng_assign_ztxt, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_ZTXT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_zTXt))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_ztxt (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_zTXt, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_ztxtp)pChunk)->iKeywordsize = iKeywordsize;
- ((mng_ztxtp)pChunk)->iCompression = iCompression;
- ((mng_ztxtp)pChunk)->iTextsize = iTextsize;
-
- if (iKeywordsize)
- {
- MNG_ALLOC (pData, ((mng_ztxtp)pChunk)->zKeyword, iKeywordsize + 1);
- MNG_COPY (((mng_ztxtp)pChunk)->zKeyword, zKeyword, iKeywordsize);
- }
-
- if (iTextsize)
- {
- MNG_ALLOC (pData, ((mng_ztxtp)pChunk)->zText, iTextsize + 1);
- MNG_COPY (((mng_ztxtp)pChunk)->zText, zText, iTextsize);
- }
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_ZTXT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iTXt
-mng_retcode MNG_DECL mng_putchunk_itxt (mng_handle hHandle,
- mng_uint32 iKeywordsize,
- mng_pchar zKeyword,
- mng_uint8 iCompressionflag,
- mng_uint8 iCompressionmethod,
- mng_uint32 iLanguagesize,
- mng_pchar zLanguage,
- mng_uint32 iTranslationsize,
- mng_pchar zTranslation,
- mng_uint32 iTextsize,
- mng_pchar zText)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_iTXt, mng_init_general, mng_free_itxt, mng_read_itxt, mng_write_itxt, mng_assign_itxt, 0, 0, sizeof(mng_itxt)};
-#else
- {MNG_UINT_iTXt, mng_init_itxt, mng_free_itxt, mng_read_itxt, mng_write_itxt, mng_assign_itxt, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_ITXT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_iTXt))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_itxt (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_iTXt, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_itxtp)pChunk)->iKeywordsize = iKeywordsize;
- ((mng_itxtp)pChunk)->iCompressionflag = iCompressionflag;
- ((mng_itxtp)pChunk)->iCompressionmethod = iCompressionmethod;
- ((mng_itxtp)pChunk)->iLanguagesize = iLanguagesize;
- ((mng_itxtp)pChunk)->iTranslationsize = iTranslationsize;
- ((mng_itxtp)pChunk)->iTextsize = iTextsize;
-
- if (iKeywordsize)
- {
- MNG_ALLOC (pData, ((mng_itxtp)pChunk)->zKeyword, iKeywordsize + 1);
- MNG_COPY (((mng_itxtp)pChunk)->zKeyword, zKeyword, iKeywordsize);
- }
-
- if (iLanguagesize)
- {
- MNG_ALLOC (pData, ((mng_itxtp)pChunk)->zLanguage, iLanguagesize + 1);
- MNG_COPY (((mng_itxtp)pChunk)->zLanguage, zLanguage, iLanguagesize);
- }
-
- if (iTranslationsize)
- {
- MNG_ALLOC (pData, ((mng_itxtp)pChunk)->zTranslation, iTranslationsize + 1);
- MNG_COPY (((mng_itxtp)pChunk)->zTranslation, zTranslation, iTranslationsize);
- }
-
- if (iTextsize)
- {
- MNG_ALLOC (pData, ((mng_itxtp)pChunk)->zText, iTextsize + 1);
- MNG_COPY (((mng_itxtp)pChunk)->zText, zText, iTextsize);
- }
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_ITXT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_bKGD
-mng_retcode MNG_DECL mng_putchunk_bkgd (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint8 iType,
- mng_uint8 iIndex,
- mng_uint16 iGray,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_bKGD, mng_init_general, mng_free_general, mng_read_bkgd, mng_write_bkgd, mng_assign_general, 0, 0, sizeof(mng_bkgd)};
-#else
- {MNG_UINT_bKGD, mng_init_bkgd, mng_free_bkgd, mng_read_bkgd, mng_write_bkgd, mng_assign_bkgd, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_BKGD, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_bKGD))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_bkgd (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_bKGD, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_bkgdp)pChunk)->bEmpty = bEmpty;
- ((mng_bkgdp)pChunk)->iType = iType;
- ((mng_bkgdp)pChunk)->iIndex = iIndex;
- ((mng_bkgdp)pChunk)->iGray = iGray;
- ((mng_bkgdp)pChunk)->iRed = iRed;
- ((mng_bkgdp)pChunk)->iGreen = iGreen;
- ((mng_bkgdp)pChunk)->iBlue = iBlue;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_BKGD, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_pHYs
-mng_retcode MNG_DECL mng_putchunk_phys (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint32 iSizex,
- mng_uint32 iSizey,
- mng_uint8 iUnit)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_pHYs, mng_init_general, mng_free_general, mng_read_phys, mng_write_phys, mng_assign_general, 0, 0, sizeof(mng_phys)};
-#else
- {MNG_UINT_pHYs, mng_init_phys, mng_free_phys, mng_read_phys, mng_write_phys, mng_assign_phys, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_PHYS, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_pHYs))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_phys (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_pHYs, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_physp)pChunk)->bEmpty = bEmpty;
- ((mng_physp)pChunk)->iSizex = iSizex;
- ((mng_physp)pChunk)->iSizey = iSizey;
- ((mng_physp)pChunk)->iUnit = iUnit;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_PHYS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sBIT
-mng_retcode MNG_DECL mng_putchunk_sbit (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint8 iType,
- mng_uint8arr4 aBits)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_sBIT, mng_init_general, mng_free_general, mng_read_sbit, mng_write_sbit, mng_assign_general, 0, 0, sizeof(mng_sbit)};
-#else
- {MNG_UINT_sBIT, mng_init_sbit, mng_free_sbit, mng_read_sbit, mng_write_sbit, mng_assign_sbit, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_SBIT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_sBIT))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_sbit (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_sBIT, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_sbitp)pChunk)->bEmpty = bEmpty;
- ((mng_sbitp)pChunk)->iType = iType;
- ((mng_sbitp)pChunk)->aBits[0] = aBits[0];
- ((mng_sbitp)pChunk)->aBits[1] = aBits[1];
- ((mng_sbitp)pChunk)->aBits[2] = aBits[2];
- ((mng_sbitp)pChunk)->aBits[3] = aBits[3];
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_SBIT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sPLT
-mng_retcode MNG_DECL mng_putchunk_splt (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint32 iNamesize,
- mng_pchar zName,
- mng_uint8 iSampledepth,
- mng_uint32 iEntrycount,
- mng_ptr pEntries)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_sPLT, mng_init_general, mng_free_splt, mng_read_splt, mng_write_splt, mng_assign_splt, 0, 0, sizeof(mng_splt)};
-#else
- {MNG_UINT_sPLT, mng_init_splt, mng_free_splt, mng_read_splt, mng_write_splt, mng_assign_splt, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_SPLT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_sPLT))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_splt (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_sPLT, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_spltp)pChunk)->bEmpty = bEmpty;
- ((mng_spltp)pChunk)->iNamesize = iNamesize;
- ((mng_spltp)pChunk)->iSampledepth = iSampledepth;
- ((mng_spltp)pChunk)->iEntrycount = iEntrycount;
-
- if (iNamesize)
- {
- MNG_ALLOC (pData, ((mng_spltp)pChunk)->zName, iNamesize + 1);
- MNG_COPY (((mng_spltp)pChunk)->zName, zName, iNamesize);
- }
-
- if (iEntrycount)
- {
- mng_uint32 iSize = iEntrycount * ((iSampledepth >> 1) + 2);
-
- MNG_ALLOC (pData, ((mng_spltp)pChunk)->pEntries, iSize);
- MNG_COPY (((mng_spltp)pChunk)->pEntries, pEntries, iSize);
- }
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_SPLT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_hIST
-mng_retcode MNG_DECL mng_putchunk_hist (mng_handle hHandle,
- mng_uint32 iEntrycount,
- mng_uint16arr aEntries)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_hIST, mng_init_general, mng_free_general, mng_read_hist, mng_write_hist, mng_assign_general, 0, 0, sizeof(mng_hist)};
-#else
- {MNG_UINT_hIST, mng_init_hist, mng_free_hist, mng_read_hist, mng_write_hist, mng_assign_hist, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_HIST, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_hIST))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_hist (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_hIST, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_histp)pChunk)->iEntrycount = iEntrycount;
-
- MNG_COPY (((mng_histp)pChunk)->aEntries, aEntries, sizeof (mng_uint16arr));
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_HIST, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_tIME
-mng_retcode MNG_DECL mng_putchunk_time (mng_handle hHandle,
- mng_uint16 iYear,
- mng_uint8 iMonth,
- mng_uint8 iDay,
- mng_uint8 iHour,
- mng_uint8 iMinute,
- mng_uint8 iSecond)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_tIME, mng_init_general, mng_free_general, mng_read_time, mng_write_time, mng_assign_general, 0, 0, sizeof(mng_time)};
-#else
- {MNG_UINT_tIME, mng_init_time, mng_free_time, mng_read_time, mng_write_time, mng_assign_time, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_TIME, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_tIME))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_time (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_tIME, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_timep)pChunk)->iYear = iYear;
- ((mng_timep)pChunk)->iMonth = iMonth;
- ((mng_timep)pChunk)->iDay = iDay;
- ((mng_timep)pChunk)->iHour = iHour;
- ((mng_timep)pChunk)->iMinute = iMinute;
- ((mng_timep)pChunk)->iSecond = iSecond;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_TIME, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_putchunk_mhdr (mng_handle hHandle,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_uint32 iTicks,
- mng_uint32 iLayercount,
- mng_uint32 iFramecount,
- mng_uint32 iPlaytime,
- mng_uint32 iSimplicity)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_MHDR, mng_init_general, mng_free_general, mng_read_mhdr, mng_write_mhdr, mng_assign_general, 0, 0, sizeof(mng_mhdr)};
-#else
- {MNG_UINT_MHDR, mng_init_mhdr, mng_free_mhdr, mng_read_mhdr, mng_write_mhdr, mng_assign_mhdr, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_MHDR, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must be very first! */
- if (pData->iFirstchunkadded != 0)
- MNG_ERROR (pData, MNG_SEQUENCEERROR)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_MHDR))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_mhdr (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_MHDR, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_mhdrp)pChunk)->iWidth = iWidth;
- ((mng_mhdrp)pChunk)->iHeight = iHeight;
- ((mng_mhdrp)pChunk)->iTicks = iTicks;
- ((mng_mhdrp)pChunk)->iLayercount = iLayercount;
- ((mng_mhdrp)pChunk)->iFramecount = iFramecount;
- ((mng_mhdrp)pChunk)->iPlaytime = iPlaytime;
- ((mng_mhdrp)pChunk)->iSimplicity = iSimplicity;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_MHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_putchunk_mend (mng_handle hHandle)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_MEND, mng_init_general, mng_free_general, mng_read_mend, mng_write_mend, mng_assign_general, 0, 0, sizeof(mng_mend)};
-#else
- {MNG_UINT_MEND, mng_init_mend, mng_free_mend, mng_read_mend, mng_write_mend, mng_assign_mend, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_MEND, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_MEND))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_mend (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_MEND, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
- pData->bCreating = MNG_FALSE; /* should be last chunk !!! */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_MEND, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_LOOP
-mng_retcode MNG_DECL mng_putchunk_loop (mng_handle hHandle,
- mng_uint8 iLevel,
- mng_uint32 iRepeat,
- mng_uint8 iTermination,
- mng_uint32 iItermin,
- mng_uint32 iItermax,
- mng_uint32 iCount,
- mng_uint32p pSignals)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_LOOP, mng_init_general, mng_free_loop, mng_read_loop, mng_write_loop, mng_assign_loop, 0, 0, sizeof(mng_loop)};
-#else
- {MNG_UINT_LOOP, mng_init_loop, mng_free_loop, mng_read_loop, mng_write_loop, mng_assign_loop, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_LOOP, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_LOOP))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_loop (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_LOOP, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_loopp)pChunk)->iLevel = iLevel;
- ((mng_loopp)pChunk)->iRepeat = iRepeat;
- ((mng_loopp)pChunk)->iTermination = iTermination;
- ((mng_loopp)pChunk)->iItermin = iItermin;
- ((mng_loopp)pChunk)->iItermax = iItermax;
- ((mng_loopp)pChunk)->iCount = iCount;
- ((mng_loopp)pChunk)->pSignals = pSignals;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_LOOP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_putchunk_endl (mng_handle hHandle,
- mng_uint8 iLevel)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_ENDL, mng_init_general, mng_free_general, mng_read_endl, mng_write_endl, mng_assign_general, 0, 0, sizeof(mng_endl)};
-#else
- {MNG_UINT_ENDL, mng_init_endl, mng_free_endl, mng_read_endl, mng_write_endl, mng_assign_endl, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_ENDL, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_ENDL))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_endl (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_ENDL, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_endlp)pChunk)->iLevel = iLevel;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_ENDL, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DEFI
-mng_retcode MNG_DECL mng_putchunk_defi (mng_handle hHandle,
- mng_uint16 iObjectid,
- mng_uint8 iDonotshow,
- mng_uint8 iConcrete,
- mng_bool bHasloca,
- mng_int32 iXlocation,
- mng_int32 iYlocation,
- mng_bool bHasclip,
- mng_int32 iLeftcb,
- mng_int32 iRightcb,
- mng_int32 iTopcb,
- mng_int32 iBottomcb)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_DEFI, mng_init_general, mng_free_general, mng_read_defi, mng_write_defi, mng_assign_general, 0, 0, sizeof(mng_defi)};
-#else
- {MNG_UINT_DEFI, mng_init_defi, mng_free_defi, mng_read_defi, mng_write_defi, mng_assign_defi, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_DEFI, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_DEFI))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_defi (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_DEFI, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_defip)pChunk)->iObjectid = iObjectid;
- ((mng_defip)pChunk)->iDonotshow = iDonotshow;
- ((mng_defip)pChunk)->iConcrete = iConcrete;
- ((mng_defip)pChunk)->bHasloca = bHasloca;
- ((mng_defip)pChunk)->iXlocation = iXlocation;
- ((mng_defip)pChunk)->iYlocation = iYlocation;
- ((mng_defip)pChunk)->bHasclip = bHasclip;
- ((mng_defip)pChunk)->iLeftcb = iLeftcb;
- ((mng_defip)pChunk)->iRightcb = iRightcb;
- ((mng_defip)pChunk)->iTopcb = iTopcb;
- ((mng_defip)pChunk)->iBottomcb = iBottomcb;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_DEFI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_BASI
-mng_retcode MNG_DECL mng_putchunk_basi (mng_handle hHandle,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_uint8 iBitdepth,
- mng_uint8 iColortype,
- mng_uint8 iCompression,
- mng_uint8 iFilter,
- mng_uint8 iInterlace,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue,
- mng_uint16 iAlpha,
- mng_uint8 iViewable)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_BASI, mng_init_general, mng_free_general, mng_read_basi, mng_write_basi, mng_assign_general, 0, 0, sizeof(mng_basi)};
-#else
- {MNG_UINT_BASI, mng_init_basi, mng_free_basi, mng_read_basi, mng_write_basi, mng_assign_basi, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_BASI, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_BASI))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_basi (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_BASI, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_basip)pChunk)->iWidth = iWidth;
- ((mng_basip)pChunk)->iHeight = iHeight;
- ((mng_basip)pChunk)->iBitdepth = iBitdepth;
- ((mng_basip)pChunk)->iColortype = iColortype;
- ((mng_basip)pChunk)->iCompression = iCompression;
- ((mng_basip)pChunk)->iFilter = iFilter;
- ((mng_basip)pChunk)->iInterlace = iInterlace;
- ((mng_basip)pChunk)->iRed = iRed;
- ((mng_basip)pChunk)->iGreen = iGreen;
- ((mng_basip)pChunk)->iBlue = iBlue;
- ((mng_basip)pChunk)->iAlpha = iAlpha;
- ((mng_basip)pChunk)->iViewable = iViewable;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_BASI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_CLON
-mng_retcode MNG_DECL mng_putchunk_clon (mng_handle hHandle,
- mng_uint16 iSourceid,
- mng_uint16 iCloneid,
- mng_uint8 iClonetype,
- mng_uint8 iDonotshow,
- mng_uint8 iConcrete,
- mng_bool bHasloca,
- mng_uint8 iLocationtype,
- mng_int32 iLocationx,
- mng_int32 iLocationy)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_CLON, mng_init_general, mng_free_general, mng_read_clon, mng_write_clon, mng_assign_general, 0, 0, sizeof(mng_clon)};
-#else
- {MNG_UINT_CLON, mng_init_clon, mng_free_clon, mng_read_clon, mng_write_clon, mng_assign_clon, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_CLON, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_CLON))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_clon (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_CLON, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_clonp)pChunk)->iSourceid = iSourceid;
- ((mng_clonp)pChunk)->iCloneid = iCloneid;
- ((mng_clonp)pChunk)->iClonetype = iClonetype;
- ((mng_clonp)pChunk)->iDonotshow = iDonotshow;
- ((mng_clonp)pChunk)->iConcrete = iConcrete;
- ((mng_clonp)pChunk)->bHasloca = bHasloca;
- ((mng_clonp)pChunk)->iLocationtype = iLocationtype;
- ((mng_clonp)pChunk)->iLocationx = iLocationx;
- ((mng_clonp)pChunk)->iLocationy = iLocationy;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_CLON, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-mng_retcode MNG_DECL mng_putchunk_past (mng_handle hHandle,
- mng_uint16 iDestid,
- mng_uint8 iTargettype,
- mng_int32 iTargetx,
- mng_int32 iTargety,
- mng_uint32 iCount)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_PAST, mng_init_general, mng_free_past, mng_read_past, mng_write_past, mng_assign_past, 0, 0, sizeof(mng_past)};
-#else
- {MNG_UINT_PAST, mng_init_past, mng_free_past, mng_read_past, mng_write_past, mng_assign_past, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_PAST, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_PAST))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_past (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_PAST, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_pastp)pChunk)->iDestid = iDestid;
- ((mng_pastp)pChunk)->iTargettype = iTargettype;
- ((mng_pastp)pChunk)->iTargetx = iTargetx;
- ((mng_pastp)pChunk)->iTargety = iTargety;
- ((mng_pastp)pChunk)->iCount = iCount;
-
- if (iCount)
- MNG_ALLOC (pData, ((mng_pastp)pChunk)->pSources, iCount * sizeof (mng_past_source));
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_PAST, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-mng_retcode MNG_DECL mng_putchunk_past_src (mng_handle hHandle,
- mng_uint32 iEntry,
- mng_uint16 iSourceid,
- mng_uint8 iComposition,
- mng_uint8 iOrientation,
- mng_uint8 iOffsettype,
- mng_int32 iOffsetx,
- mng_int32 iOffsety,
- mng_uint8 iBoundarytype,
- mng_int32 iBoundaryl,
- mng_int32 iBoundaryr,
- mng_int32 iBoundaryt,
- mng_int32 iBoundaryb)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_past_sourcep pEntry;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_PAST_SRC, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
-
- pChunk = pData->pLastchunk; /* last one must have been PAST ! */
-
- if (((mng_chunk_headerp)pChunk)->iChunkname != MNG_UINT_PAST)
- MNG_ERROR (pData, MNG_NOCORRCHUNK)
- /* index out of bounds ? */
- if (iEntry >= ((mng_pastp)pChunk)->iCount)
- MNG_ERROR (pData, MNG_INVALIDENTRYIX)
- /* address proper entry */
- pEntry = ((mng_pastp)pChunk)->pSources + iEntry;
-
- pEntry->iSourceid = iSourceid; /* fill entry */
- pEntry->iComposition = iComposition;
- pEntry->iOrientation = iOrientation;
- pEntry->iOffsettype = iOffsettype;
- pEntry->iOffsetx = iOffsetx;
- pEntry->iOffsety = iOffsety;
- pEntry->iBoundarytype = iBoundarytype;
- pEntry->iBoundaryl = iBoundaryl;
- pEntry->iBoundaryr = iBoundaryr;
- pEntry->iBoundaryt = iBoundaryt;
- pEntry->iBoundaryb = iBoundaryb;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_PAST_SRC, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DISC
-mng_retcode MNG_DECL mng_putchunk_disc (mng_handle hHandle,
- mng_uint32 iCount,
- mng_uint16p pObjectids)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_DISC, mng_init_general, mng_free_disc, mng_read_disc, mng_write_disc, mng_assign_disc, 0, 0, sizeof(mng_disc)};
-#else
- {MNG_UINT_DISC, mng_init_disc, mng_free_disc, mng_read_disc, mng_write_disc, mng_assign_disc, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_DISC, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_DISC))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_disc (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_DISC, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_discp)pChunk)->iCount = iCount;
-
- if (iCount)
- {
- mng_uint32 iSize = iCount * sizeof (mng_uint32);
-
- MNG_ALLOC (pData, ((mng_discp)pChunk)->pObjectids, iSize);
- MNG_COPY (((mng_discp)pChunk)->pObjectids, pObjectids, iSize);
- }
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_DISC, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_BACK
-mng_retcode MNG_DECL mng_putchunk_back (mng_handle hHandle,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue,
- mng_uint8 iMandatory,
- mng_uint16 iImageid,
- mng_uint8 iTile)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_BACK, mng_init_general, mng_free_general, mng_read_back, mng_write_back, mng_assign_general, 0, 0, sizeof(mng_back)};
-#else
- {MNG_UINT_BACK, mng_init_back, mng_free_back, mng_read_back, mng_write_back, mng_assign_back, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_BACK, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_BACK))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_back (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_BACK, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_backp)pChunk)->iRed = iRed;
- ((mng_backp)pChunk)->iGreen = iGreen;
- ((mng_backp)pChunk)->iBlue = iBlue;
- ((mng_backp)pChunk)->iMandatory = iMandatory;
- ((mng_backp)pChunk)->iImageid = iImageid;
- ((mng_backp)pChunk)->iTile = iTile;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_BACK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_FRAM
-mng_retcode MNG_DECL mng_putchunk_fram (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint8 iMode,
- mng_uint32 iNamesize,
- mng_pchar zName,
- mng_uint8 iChangedelay,
- mng_uint8 iChangetimeout,
- mng_uint8 iChangeclipping,
- mng_uint8 iChangesyncid,
- mng_uint32 iDelay,
- mng_uint32 iTimeout,
- mng_uint8 iBoundarytype,
- mng_int32 iBoundaryl,
- mng_int32 iBoundaryr,
- mng_int32 iBoundaryt,
- mng_int32 iBoundaryb,
- mng_uint32 iCount,
- mng_uint32p pSyncids)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_FRAM, mng_init_general, mng_free_fram, mng_read_fram, mng_write_fram, mng_assign_fram, 0, 0, sizeof(mng_fram)};
-#else
- {MNG_UINT_FRAM, mng_init_fram, mng_free_fram, mng_read_fram, mng_write_fram, mng_assign_fram, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_FRAM, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_FRAM))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_fram (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_FRAM, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_framp)pChunk)->bEmpty = bEmpty;
- ((mng_framp)pChunk)->iMode = iMode;
- ((mng_framp)pChunk)->iNamesize = iNamesize;
- ((mng_framp)pChunk)->iChangedelay = iChangedelay;
- ((mng_framp)pChunk)->iChangetimeout = iChangetimeout;
- ((mng_framp)pChunk)->iChangeclipping = iChangeclipping;
- ((mng_framp)pChunk)->iChangesyncid = iChangesyncid;
- ((mng_framp)pChunk)->iDelay = iDelay;
- ((mng_framp)pChunk)->iTimeout = iTimeout;
- ((mng_framp)pChunk)->iBoundarytype = iBoundarytype;
- ((mng_framp)pChunk)->iBoundaryl = iBoundaryl;
- ((mng_framp)pChunk)->iBoundaryr = iBoundaryr;
- ((mng_framp)pChunk)->iBoundaryt = iBoundaryt;
- ((mng_framp)pChunk)->iBoundaryb = iBoundaryb;
- ((mng_framp)pChunk)->iCount = iCount;
-
- if (iNamesize)
- {
- MNG_ALLOC (pData, ((mng_framp)pChunk)->zName, iNamesize + 1);
- MNG_COPY (((mng_framp)pChunk)->zName, zName, iNamesize);
- }
-
- if (iCount)
- {
- mng_uint32 iSize = iCount * sizeof (mng_uint32);
-
- MNG_ALLOC (pData, ((mng_framp)pChunk)->pSyncids, iSize);
- MNG_COPY (((mng_framp)pChunk)->pSyncids, pSyncids, iSize);
- }
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_FRAM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_MOVE
-mng_retcode MNG_DECL mng_putchunk_move (mng_handle hHandle,
- mng_uint16 iFirstid,
- mng_uint16 iLastid,
- mng_uint8 iMovetype,
- mng_int32 iMovex,
- mng_int32 iMovey)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_MOVE, mng_init_general, mng_free_general, mng_read_move, mng_write_move, mng_assign_general, 0, 0, sizeof(mng_move)};
-#else
- {MNG_UINT_MOVE, mng_init_move, mng_free_move, mng_read_move, mng_write_move, mng_assign_move, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_MOVE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_MOVE))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_move (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_MOVE, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_movep)pChunk)->iFirstid = iFirstid;
- ((mng_movep)pChunk)->iLastid = iLastid;
- ((mng_movep)pChunk)->iMovetype = iMovetype;
- ((mng_movep)pChunk)->iMovex = iMovex;
- ((mng_movep)pChunk)->iMovey = iMovey;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_MOVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_CLIP
-mng_retcode MNG_DECL mng_putchunk_clip (mng_handle hHandle,
- mng_uint16 iFirstid,
- mng_uint16 iLastid,
- mng_uint8 iCliptype,
- mng_int32 iClipl,
- mng_int32 iClipr,
- mng_int32 iClipt,
- mng_int32 iClipb)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_CLIP, mng_init_general, mng_free_general, mng_read_clip, mng_write_clip, mng_assign_general, 0, 0, sizeof(mng_clip)};
-#else
- {MNG_UINT_CLIP, mng_init_clip, mng_free_clip, mng_read_clip, mng_write_clip, mng_assign_clip, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_CLIP, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_CLIP))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_clip (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_CLIP, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_clipp)pChunk)->iFirstid = iFirstid;
- ((mng_clipp)pChunk)->iLastid = iLastid;
- ((mng_clipp)pChunk)->iCliptype = iCliptype;
- ((mng_clipp)pChunk)->iClipl = iClipl;
- ((mng_clipp)pChunk)->iClipr = iClipr;
- ((mng_clipp)pChunk)->iClipt = iClipt;
- ((mng_clipp)pChunk)->iClipb = iClipb;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_CLIP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SHOW
-mng_retcode MNG_DECL mng_putchunk_show (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint16 iFirstid,
- mng_uint16 iLastid,
- mng_uint8 iMode)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_SHOW, mng_init_general, mng_free_general, mng_read_show, mng_write_show, mng_assign_general, 0, 0, sizeof(mng_show)};
-#else
- {MNG_UINT_SHOW, mng_init_show, mng_free_show, mng_read_show, mng_write_show, mng_assign_show, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_SHOW, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_SHOW))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_show (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_SHOW, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_showp)pChunk)->bEmpty = bEmpty;
- ((mng_showp)pChunk)->iFirstid = iFirstid;
- ((mng_showp)pChunk)->iLastid = iLastid;
- ((mng_showp)pChunk)->iMode = iMode;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_SHOW, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_TERM
-mng_retcode MNG_DECL mng_putchunk_term (mng_handle hHandle,
- mng_uint8 iTermaction,
- mng_uint8 iIteraction,
- mng_uint32 iDelay,
- mng_uint32 iItermax)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_TERM, mng_init_general, mng_free_general, mng_read_term, mng_write_term, mng_assign_general, 0, 0, sizeof(mng_term)};
-#else
- {MNG_UINT_TERM, mng_init_term, mng_free_term, mng_read_term, mng_write_term, mng_assign_term, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_TERM, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_term (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_TERM, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_termp)pChunk)->iTermaction = iTermaction;
- ((mng_termp)pChunk)->iIteraction = iIteraction;
- ((mng_termp)pChunk)->iDelay = iDelay;
- ((mng_termp)pChunk)->iItermax = iItermax;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_TERM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SAVE
-mng_retcode MNG_DECL mng_putchunk_save (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint8 iOffsettype,
- mng_uint32 iCount)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_SAVE, mng_init_general, mng_free_save, mng_read_save, mng_write_save, mng_assign_save, 0, 0, sizeof(mng_save)};
-#else
- {MNG_UINT_SAVE, mng_init_save, mng_free_save, mng_read_save, mng_write_save, mng_assign_save, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_SAVE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_SAVE))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_save (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_SAVE, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_savep)pChunk)->bEmpty = bEmpty;
- ((mng_savep)pChunk)->iOffsettype = iOffsettype;
- ((mng_savep)pChunk)->iCount = iCount;
-
- if (iCount)
- MNG_ALLOC (pData, ((mng_savep)pChunk)->pEntries, iCount * sizeof (mng_save_entry));
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_SAVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_putchunk_save_entry (mng_handle hHandle,
- mng_uint32 iEntry,
- mng_uint8 iEntrytype,
- mng_uint32arr2 iOffset,
- mng_uint32arr2 iStarttime,
- mng_uint32 iLayernr,
- mng_uint32 iFramenr,
- mng_uint32 iNamesize,
- mng_pchar zName)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_save_entryp pEntry;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_SAVE_ENTRY, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
-
- pChunk = pData->pLastchunk; /* last one must have been SAVE ! */
-
- if (((mng_chunk_headerp)pChunk)->iChunkname != MNG_UINT_SAVE)
- MNG_ERROR (pData, MNG_NOCORRCHUNK)
- /* index out of bounds ? */
- if (iEntry >= ((mng_savep)pChunk)->iCount)
- MNG_ERROR (pData, MNG_INVALIDENTRYIX)
- /* address proper entry */
- pEntry = ((mng_savep)pChunk)->pEntries + iEntry;
-
- pEntry->iEntrytype = iEntrytype; /* fill entry */
- pEntry->iOffset[0] = iOffset[0];
- pEntry->iOffset[1] = iOffset[1];
- pEntry->iStarttime[0] = iStarttime[0];
- pEntry->iStarttime[1] = iStarttime[1];
- pEntry->iLayernr = iLayernr;
- pEntry->iFramenr = iFramenr;
- pEntry->iNamesize = iNamesize;
-
- if (iNamesize)
- {
- MNG_ALLOC (pData, pEntry->zName, iNamesize + 1);
- MNG_COPY (pEntry->zName, zName, iNamesize);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_SAVE_ENTRY, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SEEK
-mng_retcode MNG_DECL mng_putchunk_seek (mng_handle hHandle,
- mng_uint32 iNamesize,
- mng_pchar zName)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_SEEK, mng_init_general, mng_free_seek, mng_read_seek, mng_write_seek, mng_assign_seek, 0, 0, sizeof(mng_seek)};
-#else
- {MNG_UINT_SEEK, mng_init_seek, mng_free_seek, mng_read_seek, mng_write_seek, mng_assign_seek, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_SEEK, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_SEEK))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_seek (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_SEEK, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_seekp)pChunk)->iNamesize = iNamesize;
-
- if (iNamesize)
- {
- MNG_ALLOC (pData, ((mng_seekp)pChunk)->zName, iNamesize + 1);
- MNG_COPY (((mng_seekp)pChunk)->zName, zName, iNamesize);
- }
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_SEEK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_eXPI
-mng_retcode MNG_DECL mng_putchunk_expi (mng_handle hHandle,
- mng_uint16 iSnapshotid,
- mng_uint32 iNamesize,
- mng_pchar zName)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_eXPI, mng_init_general, mng_free_expi, mng_read_expi, mng_write_expi, mng_assign_general, 0, 0, sizeof(mng_expi)};
-#else
- {MNG_UINT_eXPI, mng_init_expi, mng_free_expi, mng_read_expi, mng_write_expi, mng_assign_expi, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_EXPI, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_eXPI))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_expi (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_eXPI, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_expip)pChunk)->iSnapshotid = iSnapshotid;
- ((mng_expip)pChunk)->iNamesize = iNamesize;
-
- if (iNamesize)
- {
- MNG_ALLOC (pData, ((mng_expip)pChunk)->zName, iNamesize + 1);
- MNG_COPY (((mng_expip)pChunk)->zName, zName, iNamesize);
- }
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_EXPI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_fPRI
-mng_retcode MNG_DECL mng_putchunk_fpri (mng_handle hHandle,
- mng_uint8 iDeltatype,
- mng_uint8 iPriority)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_fPRI, mng_init_general, mng_free_general, mng_read_fpri, mng_write_fpri, mng_assign_general, 0, 0, sizeof(mng_fpri)};
-#else
- {MNG_UINT_fPRI, mng_init_fpri, mng_free_fpri, mng_read_fpri, mng_write_fpri, mng_assign_fpri, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_FPRI, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_fPRI))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_fpri (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_fPRI, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_fprip)pChunk)->iDeltatype = iDeltatype;
- ((mng_fprip)pChunk)->iPriority = iPriority;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_FPRI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_nEED
-mng_retcode MNG_DECL mng_putchunk_need (mng_handle hHandle,
- mng_uint32 iKeywordssize,
- mng_pchar zKeywords)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_nEED, mng_init_general, mng_free_need, mng_read_need, mng_write_need, mng_assign_need, 0, 0, sizeof(mng_need)};
-#else
- {MNG_UINT_nEED, mng_init_need, mng_free_need, mng_read_need, mng_write_need, mng_assign_need, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_NEED, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_nEED))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_need (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_nEED, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_needp)pChunk)->iKeywordssize = iKeywordssize;
-
- if (iKeywordssize)
- {
- MNG_ALLOC (pData, ((mng_needp)pChunk)->zKeywords, iKeywordssize + 1);
- MNG_COPY (((mng_needp)pChunk)->zKeywords, zKeywords, iKeywordssize);
- }
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_NEED, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_pHYg
-mng_retcode MNG_DECL mng_putchunk_phyg (mng_handle hHandle,
- mng_bool bEmpty,
- mng_uint32 iSizex,
- mng_uint32 iSizey,
- mng_uint8 iUnit)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_pHYg, mng_init_general, mng_free_general, mng_read_phyg, mng_write_phyg, mng_assign_general, 0, 0, sizeof(mng_phyg)};
-#else
- {MNG_UINT_pHYg, mng_init_phyg, mng_free_phyg, mng_read_phyg, mng_write_phyg, mng_assign_phyg, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_PHYG, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_pHYg))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_phyg (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_pHYg, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_phygp)pChunk)->bEmpty = bEmpty;
- ((mng_phygp)pChunk)->iSizex = iSizex;
- ((mng_phygp)pChunk)->iSizey = iSizey;
- ((mng_phygp)pChunk)->iUnit = iUnit;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_PHYG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-
-mng_retcode MNG_DECL mng_putchunk_jhdr (mng_handle hHandle,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_uint8 iColortype,
- mng_uint8 iImagesampledepth,
- mng_uint8 iImagecompression,
- mng_uint8 iImageinterlace,
- mng_uint8 iAlphasampledepth,
- mng_uint8 iAlphacompression,
- mng_uint8 iAlphafilter,
- mng_uint8 iAlphainterlace)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_JHDR, mng_init_general, mng_free_general, mng_read_jhdr, mng_write_jhdr, mng_assign_general, 0, 0, sizeof(mng_jhdr)};
-#else
- {MNG_UINT_JHDR, mng_init_jhdr, mng_free_jhdr, mng_read_jhdr, mng_write_jhdr, mng_assign_jhdr, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_JHDR, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_JHDR))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_jhdr (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_JHDR, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_jhdrp)pChunk)->iWidth = iWidth;
- ((mng_jhdrp)pChunk)->iHeight = iHeight;
- ((mng_jhdrp)pChunk)->iColortype = iColortype;
- ((mng_jhdrp)pChunk)->iImagesampledepth = iImagesampledepth;
- ((mng_jhdrp)pChunk)->iImagecompression = iImagecompression;
- ((mng_jhdrp)pChunk)->iImageinterlace = iImageinterlace;
- ((mng_jhdrp)pChunk)->iAlphasampledepth = iAlphasampledepth;
- ((mng_jhdrp)pChunk)->iAlphacompression = iAlphacompression;
- ((mng_jhdrp)pChunk)->iAlphafilter = iAlphafilter;
- ((mng_jhdrp)pChunk)->iAlphainterlace = iAlphainterlace;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_JHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-
-mng_retcode MNG_DECL mng_putchunk_jdat (mng_handle hHandle,
- mng_uint32 iRawlen,
- mng_ptr pRawdata)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_JDAT, mng_init_general, mng_free_jdat, mng_read_jdat, mng_write_jdat, mng_assign_jdat, 0, 0, sizeof(mng_jdat)};
-#else
- {MNG_UINT_JDAT, mng_init_jdat, mng_free_jdat, mng_read_jdat, mng_write_jdat, mng_assign_jdat, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_JDAT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR or JHDR first! */
- if ((pData->iFirstchunkadded != MNG_UINT_MHDR) &&
- (pData->iFirstchunkadded != MNG_UINT_JHDR) )
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_JDAT))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_jdat (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_JDAT, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_jdatp)pChunk)->iDatasize = iRawlen;
-
- if (iRawlen)
- {
- MNG_ALLOC (pData, ((mng_jdatp)pChunk)->pData, iRawlen);
- MNG_COPY (((mng_jdatp)pChunk)->pData, pRawdata, iRawlen);
- }
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_JDAT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-
-mng_retcode MNG_DECL mng_putchunk_jdaa (mng_handle hHandle,
- mng_uint32 iRawlen,
- mng_ptr pRawdata)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_JDAA, mng_init_general, mng_free_jdaa, mng_read_jdaa, mng_write_jdaa, mng_assign_jdaa, 0, 0, sizeof(mng_jdaa)};
-#else
- {MNG_UINT_JDAA, mng_init_jdaa, mng_free_jdaa, mng_read_jdaa, mng_write_jdaa, mng_assign_jdaa, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_JDAA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR or JHDR first! */
- if ((pData->iFirstchunkadded != MNG_UINT_MHDR) &&
- (pData->iFirstchunkadded != MNG_UINT_JHDR) )
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_JDAA))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_jdaa (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_JDAA, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_jdaap)pChunk)->iDatasize = iRawlen;
-
- if (iRawlen)
- {
- MNG_ALLOC (pData, ((mng_jdaap)pChunk)->pData, iRawlen);
- MNG_COPY (((mng_jdaap)pChunk)->pData, pRawdata, iRawlen);
- }
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_JDAA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-
-mng_retcode MNG_DECL mng_putchunk_jsep (mng_handle hHandle)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_JSEP, mng_init_general, mng_free_general, mng_read_jsep, mng_write_jsep, mng_assign_general, 0, 0, sizeof(mng_jsep)};
-#else
- {MNG_UINT_JSEP, mng_init_jsep, mng_free_jsep, mng_read_jsep, mng_write_jsep, mng_assign_jsep, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_JSEP, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR or JHDR first! */
- if ((pData->iFirstchunkadded != MNG_UINT_MHDR) &&
- (pData->iFirstchunkadded != MNG_UINT_JHDR) )
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_JSEP))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_jsep (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_JSEP, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_JSEP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode MNG_DECL mng_putchunk_dhdr (mng_handle hHandle,
- mng_uint16 iObjectid,
- mng_uint8 iImagetype,
- mng_uint8 iDeltatype,
- mng_uint32 iBlockwidth,
- mng_uint32 iBlockheight,
- mng_uint32 iBlockx,
- mng_uint32 iBlocky)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_DHDR, mng_init_general, mng_free_general, mng_read_dhdr, mng_write_dhdr, mng_assign_general, 0, 0, sizeof(mng_dhdr)};
-#else
- {MNG_UINT_DHDR, mng_init_dhdr, mng_free_dhdr, mng_read_dhdr, mng_write_dhdr, mng_assign_dhdr, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_DHDR, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_DHDR))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_dhdr (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_DHDR, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_dhdrp)pChunk)->iObjectid = iObjectid;
- ((mng_dhdrp)pChunk)->iImagetype = iImagetype;
- ((mng_dhdrp)pChunk)->iDeltatype = iDeltatype;
- ((mng_dhdrp)pChunk)->iBlockwidth = iBlockwidth;
- ((mng_dhdrp)pChunk)->iBlockheight = iBlockheight;
- ((mng_dhdrp)pChunk)->iBlockx = iBlockx;
- ((mng_dhdrp)pChunk)->iBlocky = iBlocky;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_DHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode MNG_DECL mng_putchunk_prom (mng_handle hHandle,
- mng_uint8 iColortype,
- mng_uint8 iSampledepth,
- mng_uint8 iFilltype)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_PROM, mng_init_general, mng_free_general, mng_read_prom, mng_write_prom, mng_assign_general, 0, 0, sizeof(mng_prom)};
-#else
- {MNG_UINT_PROM, mng_init_prom, mng_free_prom, mng_read_prom, mng_write_prom, mng_assign_prom, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_PROM, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_PROM))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_prom (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_PROM, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_promp)pChunk)->iColortype = iColortype;
- ((mng_promp)pChunk)->iSampledepth = iSampledepth;
- ((mng_promp)pChunk)->iFilltype = iFilltype;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_PROM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode MNG_DECL mng_putchunk_ipng (mng_handle hHandle)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_IPNG, mng_init_general, mng_free_general, mng_read_ipng, mng_write_ipng, mng_assign_general, 0, 0, sizeof(mng_ipng)};
-#else
- {MNG_UINT_IPNG, mng_init_ipng, mng_free_ipng, mng_read_ipng, mng_write_ipng, mng_assign_ipng, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_IPNG, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_IPNG))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_ipng (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_IPNG, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_IPNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode MNG_DECL mng_putchunk_pplt (mng_handle hHandle,
- mng_uint8 iDeltatype,
- mng_uint32 iCount)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_PPLT, mng_init_general, mng_free_general, mng_read_pplt, mng_write_pplt, mng_assign_general, 0, 0, sizeof(mng_pplt)};
-#else
- {MNG_UINT_PPLT, mng_init_pplt, mng_free_pplt, mng_read_pplt, mng_write_pplt, mng_assign_pplt, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_PPLT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_PPLT))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_pplt (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_PPLT, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_ppltp)pChunk)->iDeltatype = iDeltatype;
- ((mng_ppltp)pChunk)->iCount = iCount;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_PPLT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode MNG_DECL mng_putchunk_pplt_entry (mng_handle hHandle,
- mng_uint32 iEntry,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue,
- mng_uint16 iAlpha)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_pplt_entryp pEntry;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_PPLT_ENTRY, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
-
- pChunk = pData->pLastchunk; /* last one must have been PPLT ! */
-
- if (((mng_chunk_headerp)pChunk)->iChunkname != MNG_UINT_PPLT)
- MNG_ERROR (pData, MNG_NOCORRCHUNK)
-
- /* index out of bounds ? */
- if (iEntry >= ((mng_ppltp)pChunk)->iCount)
- MNG_ERROR (pData, MNG_INVALIDENTRYIX)
- /* address proper entry */
- pEntry = (mng_pplt_entryp)(((mng_ppltp)pChunk)->aEntries) + iEntry;
-
- pEntry->iRed = (mng_uint8)iRed; /* fill the entry */
- pEntry->iGreen = (mng_uint8)iGreen;
- pEntry->iBlue = (mng_uint8)iBlue;
- pEntry->iAlpha = (mng_uint8)iAlpha;
- pEntry->bUsed = MNG_TRUE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_PPLT_ENTRY, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifdef MNG_INCLUDE_JNG
-mng_retcode MNG_DECL mng_putchunk_ijng (mng_handle hHandle)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_IJNG, mng_init_general, mng_free_general, mng_read_ijng, mng_write_ijng, mng_assign_general, 0, 0, sizeof(mng_ijng)};
-#else
- {MNG_UINT_IJNG, mng_init_ijng, mng_free_ijng, mng_read_ijng, mng_write_ijng, mng_assign_ijng, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_IJNG, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_IJNG))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_ijng (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_IJNG, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_IJNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode MNG_DECL mng_putchunk_drop (mng_handle hHandle,
- mng_uint32 iCount,
- mng_chunkidp pChunknames)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_DROP, mng_init_general, mng_free_drop, mng_read_drop, mng_write_drop, mng_assign_drop, 0, 0, sizeof(mng_drop)};
-#else
- {MNG_UINT_DROP, mng_init_drop, mng_free_drop, mng_read_drop, mng_write_drop, mng_assign_drop, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_DROP, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_DROP))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_drop (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_DROP, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_dropp)pChunk)->iCount = iCount;
-
- if (iCount)
- {
- mng_uint32 iSize = iCount * sizeof (mng_chunkid);
-
- MNG_ALLOC (pData, ((mng_dropp)pChunk)->pChunknames, iSize);
- MNG_COPY (((mng_dropp)pChunk)->pChunknames, pChunknames, iSize);
- }
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_DROP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_DBYK
-mng_retcode MNG_DECL mng_putchunk_dbyk (mng_handle hHandle,
- mng_chunkid iChunkname,
- mng_uint8 iPolarity,
- mng_uint32 iKeywordssize,
- mng_pchar zKeywords)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_DBYK, mng_init_general, mng_free_dbyk, mng_read_dbyk, mng_write_dbyk, mng_assign_dbyk, 0, 0, sizeof(mng_dbyk)};
-#else
- {MNG_UINT_DBYK, mng_init_dbyk, mng_free_dbyk, mng_read_dbyk, mng_write_dbyk, mng_assign_dbyk, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_DBYK, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_DBYK))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_dbyk (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_DBYK, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_dbykp)pChunk)->iChunkname = iChunkname;
- ((mng_dbykp)pChunk)->iPolarity = iPolarity;
- ((mng_dbykp)pChunk)->iKeywordssize = iKeywordssize;
-
- if (iKeywordssize)
- {
- MNG_ALLOC (pData, ((mng_dbykp)pChunk)->zKeywords, iKeywordssize + 1);
- MNG_COPY (((mng_dbykp)pChunk)->zKeywords, zKeywords, iKeywordssize);
- }
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_DBYK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_ORDR
-mng_retcode MNG_DECL mng_putchunk_ordr (mng_handle hHandle,
- mng_uint32 iCount)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_ORDR, mng_init_general, mng_free_ordr, mng_read_ordr, mng_write_ordr, mng_assign_ordr, 0, 0, sizeof(mng_ordr)};
-#else
- {MNG_UINT_ORDR, mng_init_ordr, mng_free_ordr, mng_read_ordr, mng_write_ordr, mng_assign_ordr, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_ORDR, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_ORDR))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_ordr (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_ORDR, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_ordrp)pChunk)->iCount = iCount;
-
- if (iCount)
- MNG_ALLOC (pData, ((mng_ordrp)pChunk)->pEntries, iCount * sizeof (mng_ordr_entry));
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_ORDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_ORDR
-mng_retcode MNG_DECL mng_putchunk_ordr_entry (mng_handle hHandle,
- mng_uint32 iEntry,
- mng_chunkid iChunkname,
- mng_uint8 iOrdertype)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_ordr_entryp pEntry;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_ORDR_ENTRY, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
-
- pChunk = pData->pLastchunk; /* last one must have been ORDR ! */
-
- if (((mng_chunk_headerp)pChunk)->iChunkname != MNG_UINT_ORDR)
- MNG_ERROR (pData, MNG_NOCORRCHUNK)
- /* index out of bounds ? */
- if (iEntry >= ((mng_ordrp)pChunk)->iCount)
- MNG_ERROR (pData, MNG_INVALIDENTRYIX)
- /* address proper entry */
- pEntry = ((mng_ordrp)pChunk)->pEntries + iEntry;
-
- pEntry->iChunkname = iChunkname; /* fill the entry */
- pEntry->iOrdertype = iOrdertype;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_ORDR_ENTRY, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_MAGN
-mng_retcode MNG_DECL mng_putchunk_magn (mng_handle hHandle,
- mng_uint16 iFirstid,
- mng_uint16 iLastid,
- mng_uint16 iMethodX,
- mng_uint16 iMX,
- mng_uint16 iMY,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint16 iMT,
- mng_uint16 iMB,
- mng_uint16 iMethodY)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_MAGN, mng_init_general, mng_free_general, mng_read_magn, mng_write_magn, mng_assign_general, 0, 0, sizeof(mng_magn)};
-#else
- {MNG_UINT_MAGN, mng_init_magn, mng_free_magn, mng_read_magn, mng_write_magn, mng_assign_magn, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_MAGN, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_MAGN))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_magn (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_MAGN, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_magnp)pChunk)->iFirstid = iFirstid;
- ((mng_magnp)pChunk)->iLastid = iLastid;
- ((mng_magnp)pChunk)->iMethodX = (mng_uint8)iMethodX;
- ((mng_magnp)pChunk)->iMX = iMX;
- ((mng_magnp)pChunk)->iMY = iMY;
- ((mng_magnp)pChunk)->iML = iML;
- ((mng_magnp)pChunk)->iMR = iMR;
- ((mng_magnp)pChunk)->iMT = iMT;
- ((mng_magnp)pChunk)->iMB = iMB;
- ((mng_magnp)pChunk)->iMethodY = (mng_uint8)iMethodY;
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_MAGN, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_mpng (mng_handle hHandle,
- mng_uint32 iFramewidth,
- mng_uint32 iFrameheight,
- mng_uint16 iNumplays,
- mng_uint16 iTickspersec,
- mng_uint8 iCompressionmethod,
- mng_uint32 iCount)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_mpNG, mng_init_general, mng_free_mpng, mng_read_mpng, mng_write_mpng, mng_assign_mpng, 0, 0, sizeof(mng_mpng)};
-#else
- {MNG_UINT_mpNG, mng_init_mpng, mng_free_mpng, mng_read_mpng, mng_write_mpng, mng_assign_mpng, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_MPNG, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a IHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_IHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_mpng (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_mpNG, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_mpngp)pChunk)->iFramewidth = iFramewidth;
- ((mng_mpngp)pChunk)->iFrameheight = iFrameheight;
- ((mng_mpngp)pChunk)->iNumplays = iNumplays;
- ((mng_mpngp)pChunk)->iTickspersec = iTickspersec;
- ((mng_mpngp)pChunk)->iCompressionmethod = iCompressionmethod;
- ((mng_mpngp)pChunk)->iFramessize = iCount * sizeof (mng_mpng_frame);
-
- if (iCount)
- MNG_ALLOC (pData, ((mng_mpngp)pChunk)->pFrames, ((mng_mpngp)pChunk)->iFramessize);
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_MPNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-MNG_EXT mng_retcode MNG_DECL mng_putchunk_mpng_frame (mng_handle hHandle,
- mng_uint32 iEntry,
- mng_uint32 iX,
- mng_uint32 iY,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_int32 iXoffset,
- mng_int32 iYoffset,
- mng_uint16 iTicks)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_mpng_framep pFrame;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_MPNG_FRAME, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a IHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_IHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
-
- pChunk = pData->pLastchunk; /* last one must have been mpNG ! */
-
- if (((mng_chunk_headerp)pChunk)->iChunkname != MNG_UINT_mpNG)
- MNG_ERROR (pData, MNG_NOCORRCHUNK)
- /* index out of bounds ? */
- if (iEntry >= (((mng_mpngp)pChunk)->iFramessize / sizeof (mng_mpng_frame)))
- MNG_ERROR (pData, MNG_INVALIDENTRYIX)
- /* address proper entry */
- pFrame = ((mng_mpngp)pChunk)->pFrames + iEntry;
- /* fill entry */
- pFrame->iX = iX;
- pFrame->iY = iY;
- pFrame->iWidth = iWidth;
- pFrame->iHeight = iHeight;
- pFrame->iXoffset = iXoffset;
- pFrame->iYoffset = iYoffset;
- pFrame->iTicks = iTicks;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_MPNG_FRAME, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_evNT
-mng_retcode MNG_DECL mng_putchunk_evnt (mng_handle hHandle,
- mng_uint32 iCount)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_evNT, mng_init_general, mng_free_evnt, mng_read_evnt, mng_write_evnt, mng_assign_evnt, 0, 0, sizeof(mng_evnt)};
-#else
- {MNG_UINT_evNT, mng_init_evnt, mng_free_evnt, mng_read_evnt, mng_write_evnt, mng_assign_evnt, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_EVNT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, MNG_UINT_evNT))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_evnt (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_evNT, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_evntp)pChunk)->iCount = iCount;
-
- if (iCount)
- MNG_ALLOC (pData, ((mng_evntp)pChunk)->pEntries, iCount * sizeof (mng_evnt_entry));
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_EVNT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_putchunk_evnt_entry (mng_handle hHandle,
- mng_uint32 iEntry,
- mng_uint8 iEventtype,
- mng_uint8 iMasktype,
- mng_int32 iLeft,
- mng_int32 iRight,
- mng_int32 iTop,
- mng_int32 iBottom,
- mng_uint16 iObjectid,
- mng_uint8 iIndex,
- mng_uint32 iSegmentnamesize,
- mng_pchar zSegmentname)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_evnt_entryp pEntry;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_EVNT_ENTRY, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a MHDR first! */
- if (pData->iFirstchunkadded != MNG_UINT_MHDR)
- MNG_ERROR (pData, MNG_NOHEADER)
-
- pChunk = pData->pLastchunk; /* last one must have been evNT ! */
-
- if (((mng_chunk_headerp)pChunk)->iChunkname != MNG_UINT_evNT)
- MNG_ERROR (pData, MNG_NOCORRCHUNK)
- /* index out of bounds ? */
- if (iEntry >= ((mng_evntp)pChunk)->iCount)
- MNG_ERROR (pData, MNG_INVALIDENTRYIX)
- /* address proper entry */
- pEntry = ((mng_evntp)pChunk)->pEntries + iEntry;
- /* fill entry */
- pEntry->iEventtype = iEventtype;
- pEntry->iMasktype = iMasktype;
- pEntry->iLeft = iLeft;
- pEntry->iRight = iRight;
- pEntry->iTop = iTop;
- pEntry->iBottom = iBottom;
- pEntry->iObjectid = iObjectid;
- pEntry->iIndex = iIndex;
- pEntry->iSegmentnamesize = iSegmentnamesize;
-
- if (iSegmentnamesize)
- {
- MNG_ALLOC (pData, pEntry->zSegmentname, iSegmentnamesize + 1);
- MNG_COPY (pEntry->zSegmentname, zSegmentname, iSegmentnamesize);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_EVNT_ENTRY, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_putchunk_unknown (mng_handle hHandle,
- mng_chunkid iChunkname,
- mng_uint32 iRawlen,
- mng_ptr pRawdata)
-{
- mng_datap pData;
- mng_chunkp pChunk;
- mng_retcode iRetcode;
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_header sChunkheader =
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- {MNG_UINT_HUH, mng_init_general, mng_free_unknown, mng_read_unknown, mng_write_unknown, mng_assign_unknown, 0, 0, sizeof(mng_unknown_chunk)};
-#else
- {MNG_UINT_HUH, mng_init_unknown, mng_free_unknown, mng_read_unknown, mng_write_unknown, mng_assign_unknown, 0, 0};
-#endif
-#else
- mng_chunk_header sChunkheader;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_UNKNOWN, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must have had a header first! */
- if (pData->iFirstchunkadded == 0)
- MNG_ERROR (pData, MNG_NOHEADER)
- /* prevent misplaced TERM ! */
- if (!check_term (pData, iChunkname))
- MNG_ERROR (pData, MNG_TERMSEQERROR)
- /* create the chunk */
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#else
- iRetcode = mng_init_unknown (pData, &sChunkheader, &pChunk);
-#endif
-#else
- mng_get_chunkheader(MNG_UINT_HUH, &sChunkheader);
- iRetcode = mng_init_general (pData, &sChunkheader, &pChunk);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fill the chunk */
- ((mng_unknown_chunkp)pChunk)->sHeader.iChunkname = iChunkname;
- ((mng_unknown_chunkp)pChunk)->iDatasize = iRawlen;
-
- if (iRawlen)
- {
- MNG_ALLOC (pData, ((mng_unknown_chunkp)pChunk)->pData, iRawlen);
- MNG_COPY (((mng_unknown_chunkp)pChunk)->pData, pRawdata, iRawlen);
- }
-
- mng_add_chunk (pData, pChunk); /* add it to the list */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTCHUNK_UNKNOWN, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_WRITE_PROCS */
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_getimgdata_seq (mng_handle hHandle,
- mng_uint32 iSeqnr,
- mng_uint32 iCanvasstyle,
- mng_getcanvasline fGetcanvasline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETIMGDATA_SEQ, MNG_LC_START);
-#endif
-
-
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETIMGDATA_SEQ, MNG_LC_END);
-#endif
-
- return MNG_FNNOTIMPLEMENTED;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_getimgdata_chunkseq (mng_handle hHandle,
- mng_uint32 iSeqnr,
- mng_uint32 iCanvasstyle,
- mng_getcanvasline fGetcanvasline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETIMGDATA_CHUNKSEQ, MNG_LC_START);
-#endif
-
-
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETIMGDATA_CHUNKSEQ, MNG_LC_END);
-#endif
-
- return MNG_FNNOTIMPLEMENTED;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_getimgdata_chunk (mng_handle hHandle,
- mng_handle hChunk,
- mng_uint32 iCanvasstyle,
- mng_getcanvasline fGetcanvasline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETIMGDATA_CHUNK, MNG_LC_START);
-#endif
-
-
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETIMGDATA_CHUNK, MNG_LC_END);
-#endif
-
- return MNG_FNNOTIMPLEMENTED;
-}
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_WRITE_PROCS
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_putimgdata_ihdr (mng_handle hHandle,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_uint8 iColortype,
- mng_uint8 iBitdepth,
- mng_uint8 iCompression,
- mng_uint8 iFilter,
- mng_uint8 iInterlace,
- mng_uint32 iCanvasstyle,
- mng_getcanvasline fGetcanvasline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTIMGDATA_IHDR, MNG_LC_START);
-#endif
-
-
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTIMGDATA_IHDR, MNG_LC_END);
-#endif
-
- return MNG_FNNOTIMPLEMENTED;
-}
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-mng_retcode MNG_DECL mng_putimgdata_jhdr (mng_handle hHandle,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_uint8 iColortype,
- mng_uint8 iBitdepth,
- mng_uint8 iCompression,
- mng_uint8 iInterlace,
- mng_uint8 iAlphaBitdepth,
- mng_uint8 iAlphaCompression,
- mng_uint8 iAlphaFilter,
- mng_uint8 iAlphaInterlace,
- mng_uint32 iCanvasstyle,
- mng_getcanvasline fGetcanvasline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTIMGDATA_JHDR, MNG_LC_START);
-#endif
-
-
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_PUTIMGDATA_JHDR, MNG_LC_END);
-#endif
-
- return MNG_FNNOTIMPLEMENTED;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_updatemngheader (mng_handle hHandle,
- mng_uint32 iFramecount,
- mng_uint32 iLayercount,
- mng_uint32 iPlaytime)
-{
- mng_datap pData;
- mng_chunkp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_UPDATEMNGHEADER, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must be a MNG animation! */
- if ((pData->eImagetype != mng_it_mng) || (pData->iFirstchunkadded != MNG_UINT_MHDR))
- MNG_ERROR (pData, MNG_NOMHDR)
-
- pChunk = pData->pFirstchunk; /* get the first chunk */
- /* and update the variables */
- ((mng_mhdrp)pChunk)->iFramecount = iFramecount;
- ((mng_mhdrp)pChunk)->iLayercount = iLayercount;
- ((mng_mhdrp)pChunk)->iPlaytime = iPlaytime;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_UPDATEMNGHEADER, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_updatemngsimplicity (mng_handle hHandle,
- mng_uint32 iSimplicity)
-{
- mng_datap pData;
- mng_chunkp pChunk;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_UPDATEMNGSIMPLICITY, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = (mng_datap)hHandle; /* and make it addressable */
-
- if (!pData->bCreating) /* aren't we creating a new file ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID)
- /* must be a MNG animation! */
- if ((pData->eImagetype != mng_it_mng) || (pData->iFirstchunkadded != MNG_UINT_MHDR))
- MNG_ERROR (pData, MNG_NOMHDR)
-
- pChunk = pData->pFirstchunk; /* get the first chunk */
- /* and update the variable */
- ((mng_mhdrp)pChunk)->iSimplicity = iSimplicity;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_UPDATEMNGSIMPLICITY, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_WRITE_PROCS */
-
-/* ************************************************************************** */
-
-#endif /* MNG_ACCESS_CHUNKS */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
-
-
diff --git a/src/3rdparty/libmng/libmng_chunks.h b/src/3rdparty/libmng/libmng_chunks.h
deleted file mode 100644
index d10bf2dc79..0000000000
--- a/src/3rdparty/libmng/libmng_chunks.h
+++ /dev/null
@@ -1,1026 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_chunks.h copyright (c) 2000-2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : Chunk structures (definition) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : Definition of known chunk structures * */
-/* * * */
-/* * changes : 0.5.1 - 05/04/2000 - G.Juyn * */
-/* * - put in some extra comments * */
-/* * 0.5.1 - 05/06/2000 - G.Juyn * */
-/* * - fixed layout for sBIT, PPLT * */
-/* * 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed write callback definition * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/11/2000 - G.Juyn * */
-/* * - fixed layout for PPLT again (missed deltatype ?!?) * */
-/* * * */
-/* * 0.5.2 - 05/31/2000 - G.Juyn * */
-/* * - removed useless definition (contributed by Tim Rowley) * */
-/* * 0.5.2 - 06/03/2000 - G.Juyn * */
-/* * - fixed makeup for Linux gcc compile * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 08/26/2000 - G.Juyn * */
-/* * - added MAGN chunk * */
-/* * 0.9.3 - 09/10/2000 - G.Juyn * */
-/* * - fixed DEFI behavior * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added JDAA chunk * */
-/* * * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - added HLAPI function to copy chunks * */
-/* * 1.0.5 - 09/14/2002 - G.Juyn * */
-/* * - added event handling for dynamic MNG * */
-/* * 1.0.5 - 11/28/2002 - G.Juyn * */
-/* * - fixed definition of iMethodX/Y for MAGN chunk * */
-/* * * */
-/* * 1.0.6 - 05/25/2003 - G.R-P * */
-/* * added MNG_SKIPCHUNK_cHNK footprint optimizations * */
-/* * 1.0.6 - 07/29/2003 - G.R-P * */
-/* * - added conditionals around PAST chunk support * */
-/* * * */
-/* * 1.0.7 - 03/24/2004 - G.R-P * */
-/* * - added conditional around MNG_NO_DELTA_PNG support * */
-/* * * */
-/* * 1.0.9 - 12/05/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_CHUNKINITFREE * */
-/* * 1.0.9 - 12/06/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_CHUNKREADER * */
-/* * * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * 1.0.10 - 04/12/2007 - G.Juyn * */
-/* * - added support for ANG proposal * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_chunks_h_
-#define _libmng_chunks_h_
-
-/* ************************************************************************** */
-
-#ifdef MNG_SWAP_ENDIAN
-#define PNG_SIG 0x474e5089L
-#define JNG_SIG 0x474e4a8bL
-#define MNG_SIG 0x474e4d8aL
-#define POST_SIG 0x0a1a0a0dL
-#else
-#define PNG_SIG 0x89504e47L
-#define JNG_SIG 0x8b4a4e47L
-#define MNG_SIG 0x8a4d4e47L
-#define POST_SIG 0x0d0a1a0aL
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_OPTIMIZE_CHUNKREADER
-
-typedef mng_retcode (*mng_f_specialfunc) (mng_datap pData,
- mng_chunkp pChunk,
- mng_uint32* piRawlen,
- mng_uint8p* ppRawdata);
-
-typedef mng_retcode (*mng_c_specialfunc) (mng_datap pData,
- mng_chunkp pChunk);
-
-#define MNG_FIELD_OPTIONAL 0x0001
-#define MNG_FIELD_TERMINATOR 0x0002
-#define MNG_FIELD_REPETITIVE 0x0004
-#define MNG_FIELD_DEFLATED 0x0008
-#define MNG_FIELD_IFIMGTYPES 0x01F0 /* image-type mask */
-#define MNG_FIELD_IFIMGTYPE0 0x0010
-#define MNG_FIELD_IFIMGTYPE2 0x0020
-#define MNG_FIELD_IFIMGTYPE3 0x0040
-#define MNG_FIELD_IFIMGTYPE4 0x0080
-#define MNG_FIELD_IFIMGTYPE6 0x0100
-#define MNG_FIELD_PUTIMGTYPE 0x0200
-#define MNG_FIELD_NOHIGHBIT 0x0400
-#define MNG_FIELD_GROUPMASK 0x7000
-#define MNG_FIELD_GROUP1 0x1000
-#define MNG_FIELD_GROUP2 0x2000
-#define MNG_FIELD_GROUP3 0x3000
-#define MNG_FIELD_GROUP4 0x4000
-#define MNG_FIELD_GROUP5 0x5000
-#define MNG_FIELD_GROUP6 0x6000
-#define MNG_FIELD_GROUP7 0x7000
-#define MNG_FIELD_INT 0x8000
-
-typedef struct { /* chunk-field descriptor */
- mng_f_specialfunc pSpecialfunc;
- mng_uint16 iFlags;
- mng_uint16 iMinvalue;
- mng_uint16 iMaxvalue;
- mng_uint16 iLengthmin;
- mng_uint16 iLengthmax;
- mng_uint16 iOffsetchunk;
- mng_uint16 iOffsetchunkind;
- mng_uint16 iOffsetchunklen;
- } mng_field_descriptor;
-typedef mng_field_descriptor * mng_field_descp;
-
-#define MNG_DESCR_GLOBAL 0x0001
-#define MNG_DESCR_EMPTY 0x0002
-#define MNG_DESCR_EMPTYEMBED 0x0006
-#define MNG_DESCR_EMPTYGLOBAL 0x000A
-
-#define MNG_DESCR_GenHDR 0x0001 /* IHDR/JHDR/BASI/DHDR */
-#define MNG_DESCR_JngHDR 0x0002 /* JHDR/DHDR */
-#define MNG_DESCR_MHDR 0x0004
-#define MNG_DESCR_IHDR 0x0008
-#define MNG_DESCR_JHDR 0x0010
-#define MNG_DESCR_DHDR 0x0020
-#define MNG_DESCR_LOOP 0x0040
-#define MNG_DESCR_PLTE 0x0080
-#define MNG_DESCR_SAVE 0x0100
-
-#define MNG_DESCR_NOIHDR 0x0001
-#define MNG_DESCR_NOJHDR 0x0002
-#define MNG_DESCR_NOBASI 0x0004
-#define MNG_DESCR_NODHDR 0x0008
-#define MNG_DESCR_NOIDAT 0x0010
-#define MNG_DESCR_NOJDAT 0x0020
-#define MNG_DESCR_NOJDAA 0x0040
-#define MNG_DESCR_NOPLTE 0x0080
-#define MNG_DESCR_NOJSEP 0x0100
-#define MNG_DESCR_NOMHDR 0x0200
-#define MNG_DESCR_NOTERM 0x0400
-#define MNG_DESCR_NOLOOP 0x0800
-#define MNG_DESCR_NOSAVE 0x1000
-
-typedef struct { /* chunk descriptor */
- mng_imgtype eImgtype;
- mng_createobjtype eCreateobject;
- mng_uint16 iObjsize;
- mng_uint16 iOffsetempty;
- mng_ptr pObjcleanup;
- mng_ptr pObjprocess;
- mng_c_specialfunc pSpecialfunc;
- mng_field_descp pFielddesc;
- mng_uint16 iFielddesc;
- mng_uint16 iAllowed;
- mng_uint16 iMusthaves;
- mng_uint16 iMustNOThaves;
- } mng_chunk_descriptor;
-typedef mng_chunk_descriptor * mng_chunk_descp;
-
-#endif /* MNG_OPTIMIZE_CHUNKREADER */
-
-/* ************************************************************************** */
-
-typedef mng_retcode (*mng_createchunk) (mng_datap pData,
- mng_chunkp pHeader,
- mng_chunkp* ppChunk);
-
-typedef mng_retcode (*mng_cleanupchunk) (mng_datap pData,
- mng_chunkp pHeader);
-
-typedef mng_retcode (*mng_readchunk) (mng_datap pData,
- mng_chunkp pHeader,
- mng_uint32 iRawlen,
- mng_uint8p pRawdata,
- mng_chunkp* pChunk);
-
-typedef mng_retcode (*mng_writechunk) (mng_datap pData,
- mng_chunkp pChunk);
-
-typedef mng_retcode (*mng_assignchunk) (mng_datap pData,
- mng_chunkp pChunkto,
- mng_chunkp pChunkfrom);
-
-/* ************************************************************************** */
-
-typedef struct { /* generic header */
- mng_chunkid iChunkname;
- mng_createchunk fCreate;
- mng_cleanupchunk fCleanup;
- mng_readchunk fRead;
- mng_writechunk fWrite;
- mng_assignchunk fAssign;
- mng_chunkp pNext; /* for double-linked list */
- mng_chunkp pPrev;
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- mng_size_t iChunksize;
-#endif
-#ifdef MNG_OPTIMIZE_CHUNKREADER
- mng_chunk_descp pChunkdescr;
-#endif
- } mng_chunk_header;
-typedef mng_chunk_header * mng_chunk_headerp;
-
-/* ************************************************************************** */
-
-typedef struct { /* IHDR */
- mng_chunk_header sHeader;
- mng_uint32 iWidth;
- mng_uint32 iHeight;
- mng_uint8 iBitdepth;
- mng_uint8 iColortype;
- mng_uint8 iCompression;
- mng_uint8 iFilter;
- mng_uint8 iInterlace;
- } mng_ihdr;
-typedef mng_ihdr * mng_ihdrp;
-
-/* ************************************************************************** */
-
-typedef struct { /* PLTE */
- mng_chunk_header sHeader;
- mng_bool bEmpty;
- mng_uint32 iEntrycount;
- mng_rgbpaltab aEntries;
- } mng_plte;
-typedef mng_plte * mng_pltep;
-
-/* ************************************************************************** */
-
-typedef struct { /* IDAT */
- mng_chunk_header sHeader;
- mng_bool bEmpty;
- mng_uint32 iDatasize;
- mng_ptr pData;
- } mng_idat;
-typedef mng_idat * mng_idatp;
-
-/* ************************************************************************** */
-
-typedef struct { /* IEND */
- mng_chunk_header sHeader;
- } mng_iend;
-typedef mng_iend * mng_iendp;
-
-/* ************************************************************************** */
-
-typedef struct { /* tRNS */
- mng_chunk_header sHeader;
- mng_bool bEmpty;
- mng_bool bGlobal;
- mng_uint8 iType; /* colortype (0,2,3) */
- mng_uint32 iCount;
- mng_uint8arr aEntries;
- mng_uint16 iGray;
- mng_uint16 iRed;
- mng_uint16 iGreen;
- mng_uint16 iBlue;
- mng_uint32 iRawlen;
- mng_uint8arr aRawdata;
- } mng_trns;
-typedef mng_trns * mng_trnsp;
-
-/* ************************************************************************** */
-
-typedef struct { /* gAMA */
- mng_chunk_header sHeader;
- mng_bool bEmpty;
- mng_uint32 iGamma;
- } mng_gama;
-typedef mng_gama * mng_gamap;
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_cHRM
-typedef struct { /* cHRM */
- mng_chunk_header sHeader;
- mng_bool bEmpty;
- mng_uint32 iWhitepointx;
- mng_uint32 iWhitepointy;
- mng_uint32 iRedx;
- mng_uint32 iRedy;
- mng_uint32 iGreenx;
- mng_uint32 iGreeny;
- mng_uint32 iBluex;
- mng_uint32 iBluey;
- } mng_chrm;
-typedef mng_chrm * mng_chrmp;
-#endif
-
-/* ************************************************************************** */
-
-typedef struct { /* sRGB */
- mng_chunk_header sHeader;
- mng_bool bEmpty;
- mng_uint8 iRenderingintent;
- } mng_srgb;
-typedef mng_srgb * mng_srgbp;
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iCCP
-typedef struct { /* iCCP */
- mng_chunk_header sHeader;
- mng_bool bEmpty;
- mng_uint32 iNamesize;
- mng_pchar zName;
- mng_uint8 iCompression;
- mng_uint32 iProfilesize;
- mng_ptr pProfile;
- } mng_iccp;
-typedef mng_iccp * mng_iccpp;
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_tEXt
-typedef struct { /* tEXt */
- mng_chunk_header sHeader;
- mng_uint32 iKeywordsize;
- mng_pchar zKeyword;
- mng_uint32 iTextsize;
- mng_pchar zText;
- } mng_text;
-typedef mng_text * mng_textp;
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_zTXt
-typedef struct { /* zTXt */
- mng_chunk_header sHeader;
- mng_uint32 iKeywordsize;
- mng_pchar zKeyword;
- mng_uint8 iCompression;
- mng_uint32 iTextsize;
- mng_pchar zText;
- } mng_ztxt;
-typedef mng_ztxt * mng_ztxtp;
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iTXt
-typedef struct { /* iTXt */
- mng_chunk_header sHeader;
- mng_uint32 iKeywordsize;
- mng_pchar zKeyword;
- mng_uint8 iCompressionflag;
- mng_uint8 iCompressionmethod;
- mng_uint32 iLanguagesize;
- mng_pchar zLanguage;
- mng_uint32 iTranslationsize;
- mng_pchar zTranslation;
- mng_uint32 iTextsize;
- mng_pchar zText;
- } mng_itxt;
-typedef mng_itxt * mng_itxtp;
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_bKGD
-typedef struct { /* bKGD */
- mng_chunk_header sHeader;
- mng_bool bEmpty;
- mng_uint8 iType; /* 3=indexed, 0=gray, 2=rgb */
- mng_uint8 iIndex;
- mng_uint16 iGray;
- mng_uint16 iRed;
- mng_uint16 iGreen;
- mng_uint16 iBlue;
- } mng_bkgd;
-typedef mng_bkgd * mng_bkgdp;
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_pHYs
-typedef struct { /* pHYs */
- mng_chunk_header sHeader;
- mng_bool bEmpty;
- mng_uint32 iSizex;
- mng_uint32 iSizey;
- mng_uint8 iUnit;
- } mng_phys;
-typedef mng_phys * mng_physp;
-#endif
-
-/* ************************************************************************** */
-#ifndef MNG_SKIPCHUNK_sBIT
-
-typedef struct { /* sBIT */
- mng_chunk_header sHeader;
- mng_bool bEmpty;
- mng_uint8 iType; /* colortype (0,2,3,4,6,10,12,14,16) */
- mng_uint8arr4 aBits;
- } mng_sbit;
-typedef mng_sbit * mng_sbitp;
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sPLT
-typedef struct { /* sPLT */
- mng_chunk_header sHeader;
- mng_bool bEmpty;
- mng_uint32 iNamesize;
- mng_pchar zName;
- mng_uint8 iSampledepth;
- mng_uint32 iEntrycount;
- mng_ptr pEntries;
- } mng_splt;
-typedef mng_splt * mng_spltp;
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_hIST
-typedef struct { /* hIST */
- mng_chunk_header sHeader;
- mng_uint32 iEntrycount;
- mng_uint16arr aEntries;
- } mng_hist;
-typedef mng_hist * mng_histp;
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_tIME
-typedef struct { /* tIME */
- mng_chunk_header sHeader;
- mng_uint16 iYear;
- mng_uint8 iMonth;
- mng_uint8 iDay;
- mng_uint8 iHour;
- mng_uint8 iMinute;
- mng_uint8 iSecond;
- } mng_time;
-typedef mng_time * mng_timep;
-#endif
-
-/* ************************************************************************** */
-
-typedef struct { /* MHDR */
- mng_chunk_header sHeader;
- mng_uint32 iWidth;
- mng_uint32 iHeight;
- mng_uint32 iTicks;
- mng_uint32 iLayercount;
- mng_uint32 iFramecount;
- mng_uint32 iPlaytime;
- mng_uint32 iSimplicity;
- } mng_mhdr;
-typedef mng_mhdr * mng_mhdrp;
-
-/* ************************************************************************** */
-
-typedef struct { /* MEND */
- mng_chunk_header sHeader;
- } mng_mend;
-typedef mng_mend * mng_mendp;
-
-/* ************************************************************************** */
-
-typedef struct { /* LOOP */
- mng_chunk_header sHeader;
- mng_uint8 iLevel;
- mng_uint32 iRepeat;
- mng_uint8 iTermination;
- mng_uint32 iItermin;
- mng_uint32 iItermax;
- mng_uint32 iCount;
- mng_uint32p pSignals;
- } mng_loop;
-typedef mng_loop * mng_loopp;
-
-/* ************************************************************************** */
-
-typedef struct { /* ENDL */
- mng_chunk_header sHeader;
- mng_uint8 iLevel;
- } mng_endl;
-typedef mng_endl * mng_endlp;
-
-/* ************************************************************************** */
-
-typedef struct { /* DEFI */
- mng_chunk_header sHeader;
- mng_uint16 iObjectid;
- mng_bool bHasdonotshow;
- mng_uint8 iDonotshow;
- mng_bool bHasconcrete;
- mng_uint8 iConcrete;
- mng_bool bHasloca;
- mng_int32 iXlocation;
- mng_int32 iYlocation;
- mng_bool bHasclip;
- mng_int32 iLeftcb;
- mng_int32 iRightcb;
- mng_int32 iTopcb;
- mng_int32 iBottomcb;
- } mng_defi;
-typedef mng_defi * mng_defip;
-
-/* ************************************************************************** */
-
-typedef struct { /* BASI */
- mng_chunk_header sHeader;
- mng_uint32 iWidth;
- mng_uint32 iHeight;
- mng_uint8 iBitdepth;
- mng_uint8 iColortype;
- mng_uint8 iCompression;
- mng_uint8 iFilter;
- mng_uint8 iInterlace;
- mng_uint16 iRed;
- mng_uint16 iGreen;
- mng_uint16 iBlue;
-#ifdef MNG_OPTIMIZE_CHUNKREADER
- mng_bool bHasalpha;
-#endif
- mng_uint16 iAlpha;
- mng_uint8 iViewable;
- } mng_basi;
-typedef mng_basi * mng_basip;
-
-/* ************************************************************************** */
-
-typedef struct { /* CLON */
- mng_chunk_header sHeader;
- mng_uint16 iSourceid;
- mng_uint16 iCloneid;
- mng_uint8 iClonetype;
-#ifdef MNG_OPTIMIZE_CHUNKREADER
- mng_bool bHasdonotshow;
-#endif
- mng_uint8 iDonotshow;
- mng_uint8 iConcrete;
- mng_bool bHasloca;
- mng_uint8 iLocationtype;
- mng_int32 iLocationx;
- mng_int32 iLocationy;
- } mng_clon;
-typedef mng_clon * mng_clonp;
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-typedef struct { /* PAST source */
- mng_uint16 iSourceid;
- mng_uint8 iComposition;
- mng_uint8 iOrientation;
- mng_uint8 iOffsettype;
- mng_int32 iOffsetx;
- mng_int32 iOffsety;
- mng_uint8 iBoundarytype;
- mng_int32 iBoundaryl;
- mng_int32 iBoundaryr;
- mng_int32 iBoundaryt;
- mng_int32 iBoundaryb;
- } mng_past_source;
-typedef mng_past_source * mng_past_sourcep;
-
-typedef struct { /* PAST */
- mng_chunk_header sHeader;
- mng_uint16 iDestid;
- mng_uint8 iTargettype;
- mng_int32 iTargetx;
- mng_int32 iTargety;
- mng_uint32 iCount;
- mng_past_sourcep pSources;
- } mng_past;
-typedef mng_past * mng_pastp;
-#endif
-
-/* ************************************************************************** */
-
-typedef struct { /* DISC */
- mng_chunk_header sHeader;
- mng_uint32 iCount;
- mng_uint16p pObjectids;
- } mng_disc;
-typedef mng_disc * mng_discp;
-
-/* ************************************************************************** */
-
-typedef struct { /* BACK */
- mng_chunk_header sHeader;
- mng_uint16 iRed;
- mng_uint16 iGreen;
- mng_uint16 iBlue;
- mng_uint8 iMandatory;
- mng_uint16 iImageid;
- mng_uint8 iTile;
- } mng_back;
-typedef mng_back * mng_backp;
-
-/* ************************************************************************** */
-
-typedef struct { /* FRAM */
- mng_chunk_header sHeader;
- mng_bool bEmpty;
- mng_uint8 iMode;
- mng_uint32 iNamesize;
- mng_pchar zName;
- mng_uint8 iChangedelay;
- mng_uint8 iChangetimeout;
- mng_uint8 iChangeclipping;
- mng_uint8 iChangesyncid;
- mng_uint32 iDelay;
- mng_uint32 iTimeout;
- mng_uint8 iBoundarytype;
- mng_int32 iBoundaryl;
- mng_int32 iBoundaryr;
- mng_int32 iBoundaryt;
- mng_int32 iBoundaryb;
- mng_uint32 iCount;
- mng_uint32p pSyncids;
- } mng_fram;
-typedef mng_fram * mng_framp;
-
-/* ************************************************************************** */
-
-typedef struct { /* MOVE */
- mng_chunk_header sHeader;
- mng_uint16 iFirstid;
- mng_uint16 iLastid;
- mng_uint8 iMovetype;
- mng_int32 iMovex;
- mng_int32 iMovey;
- } mng_move;
-typedef mng_move * mng_movep;
-
-/* ************************************************************************** */
-
-typedef struct { /* CLIP */
- mng_chunk_header sHeader;
- mng_uint16 iFirstid;
- mng_uint16 iLastid;
- mng_uint8 iCliptype;
- mng_int32 iClipl;
- mng_int32 iClipr;
- mng_int32 iClipt;
- mng_int32 iClipb;
- } mng_clip;
-typedef mng_clip * mng_clipp;
-
-/* ************************************************************************** */
-
-typedef struct { /* SHOW */
- mng_chunk_header sHeader;
- mng_bool bEmpty;
- mng_uint16 iFirstid;
-#ifdef MNG_OPTIMIZE_CHUNKREADER
- mng_bool bHaslastid;
-#endif
- mng_uint16 iLastid;
- mng_uint8 iMode;
- } mng_show;
-typedef mng_show * mng_showp;
-
-/* ************************************************************************** */
-
-typedef struct { /* TERM */
- mng_chunk_header sHeader;
- mng_uint8 iTermaction;
- mng_uint8 iIteraction;
- mng_uint32 iDelay;
- mng_uint32 iItermax;
- } mng_term;
-typedef mng_term * mng_termp;
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SAVE
-typedef struct { /* SAVE entry */
- mng_uint8 iEntrytype;
- mng_uint32arr2 iOffset; /* 0=MSI, 1=LSI */
- mng_uint32arr2 iStarttime; /* 0=MSI, 1=LSI */
- mng_uint32 iLayernr;
- mng_uint32 iFramenr;
- mng_uint32 iNamesize;
- mng_pchar zName;
- } mng_save_entry;
-typedef mng_save_entry * mng_save_entryp;
-
-typedef struct { /* SAVE */
- mng_chunk_header sHeader;
- mng_bool bEmpty;
- mng_uint8 iOffsettype;
- mng_uint32 iCount;
- mng_save_entryp pEntries;
- } mng_save;
-typedef mng_save * mng_savep;
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SEEK
-typedef struct { /* SEEK */
- mng_chunk_header sHeader;
- mng_uint32 iNamesize;
- mng_pchar zName;
- } mng_seek;
-typedef mng_seek * mng_seekp;
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_eXPI
-typedef struct { /* eXPI */
- mng_chunk_header sHeader;
- mng_uint16 iSnapshotid;
- mng_uint32 iNamesize;
- mng_pchar zName;
- } mng_expi;
-typedef mng_expi * mng_expip;
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_fPRI
-typedef struct { /* fPRI */
- mng_chunk_header sHeader;
- mng_uint8 iDeltatype;
- mng_uint8 iPriority;
- } mng_fpri;
-typedef mng_fpri * mng_fprip;
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_nEED
-typedef struct { /* nEED */
- mng_chunk_header sHeader;
- mng_uint32 iKeywordssize;
- mng_pchar zKeywords;
- } mng_need;
-typedef mng_need * mng_needp;
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_pHYg
-typedef mng_phys mng_phyg; /* pHYg */
-typedef mng_phyg * mng_phygp;
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-
-typedef struct { /* JHDR */
- mng_chunk_header sHeader;
- mng_uint32 iWidth;
- mng_uint32 iHeight;
- mng_uint8 iColortype;
- mng_uint8 iImagesampledepth;
- mng_uint8 iImagecompression;
- mng_uint8 iImageinterlace;
- mng_uint8 iAlphasampledepth;
- mng_uint8 iAlphacompression;
- mng_uint8 iAlphafilter;
- mng_uint8 iAlphainterlace;
- } mng_jhdr;
-typedef mng_jhdr * mng_jhdrp;
-
-/* ************************************************************************** */
-
-typedef mng_idat mng_jdaa; /* JDAA */
-typedef mng_jdaa * mng_jdaap;
-
-/* ************************************************************************** */
-
-typedef mng_idat mng_jdat; /* JDAT */
-typedef mng_jdat * mng_jdatp;
-
-/* ************************************************************************** */
-
-typedef struct { /* JSEP */
- mng_chunk_header sHeader;
- } mng_jsep;
-typedef mng_jsep * mng_jsepp;
-
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-
-typedef struct { /* DHDR */
- mng_chunk_header sHeader;
- mng_uint16 iObjectid;
- mng_uint8 iImagetype;
- mng_uint8 iDeltatype;
-#ifdef MNG_OPTIMIZE_CHUNKREADER
- mng_bool bHasblocksize;
-#endif
- mng_uint32 iBlockwidth;
- mng_uint32 iBlockheight;
-#ifdef MNG_OPTIMIZE_CHUNKREADER
- mng_bool bHasblockloc;
-#endif
- mng_uint32 iBlockx;
- mng_uint32 iBlocky;
- } mng_dhdr;
-typedef mng_dhdr * mng_dhdrp;
-
-/* ************************************************************************** */
-
-typedef struct { /* PROM */
- mng_chunk_header sHeader;
- mng_uint8 iColortype;
- mng_uint8 iSampledepth;
- mng_uint8 iFilltype;
- } mng_prom;
-typedef mng_prom * mng_promp;
-
-/* ************************************************************************** */
-
-typedef struct { /* IPNG */
- mng_chunk_header sHeader;
- } mng_ipng;
-typedef mng_ipng *mng_ipngp;
-
-/* ************************************************************************** */
-
-typedef struct { /* PPLT entry */
- mng_uint8 iRed;
- mng_uint8 iGreen;
- mng_uint8 iBlue;
- mng_uint8 iAlpha;
- mng_bool bUsed;
- } mng_pplt_entry;
-typedef mng_pplt_entry * mng_pplt_entryp;
-
-typedef struct { /* PPLT */
- mng_chunk_header sHeader;
- mng_uint8 iDeltatype;
- mng_uint32 iCount;
- mng_pplt_entry aEntries [256];
- } mng_pplt;
-typedef mng_pplt * mng_ppltp;
-
-/* ************************************************************************** */
-
-typedef struct { /* IJNG */
- mng_chunk_header sHeader;
- } mng_ijng;
-typedef mng_ijng *mng_ijngp;
-
-/* ************************************************************************** */
-
-typedef struct { /* DROP */
- mng_chunk_header sHeader;
- mng_uint32 iCount;
- mng_chunkidp pChunknames;
- } mng_drop;
-typedef mng_drop * mng_dropp;
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DBYK
-typedef struct { /* DBYK */
- mng_chunk_header sHeader;
- mng_chunkid iChunkname;
- mng_uint8 iPolarity;
- mng_uint32 iKeywordssize;
- mng_pchar zKeywords;
- } mng_dbyk;
-typedef mng_dbyk * mng_dbykp;
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_ORDR
-typedef struct { /* ORDR entry */
- mng_chunkid iChunkname;
- mng_uint8 iOrdertype;
- } mng_ordr_entry;
-typedef mng_ordr_entry * mng_ordr_entryp;
-
-typedef struct mng_ordr_struct { /* ORDR */
- mng_chunk_header sHeader;
- mng_uint32 iCount;
- mng_ordr_entryp pEntries;
- } mng_ordr;
-typedef mng_ordr * mng_ordrp;
-#endif
-#endif /* MNG_NO_DELTA_PNG */
-
-/* ************************************************************************** */
-
-typedef struct { /* MAGN */
- mng_chunk_header sHeader;
- mng_uint16 iFirstid;
- mng_uint16 iLastid;
- mng_uint8 iMethodX;
- mng_uint16 iMX;
- mng_uint16 iMY;
- mng_uint16 iML;
- mng_uint16 iMR;
- mng_uint16 iMT;
- mng_uint16 iMB;
- mng_uint8 iMethodY;
- } mng_magn;
-typedef mng_magn * mng_magnp;
-
-/* ************************************************************************** */
-
-typedef struct { /* evNT entry */
- mng_uint8 iEventtype;
- mng_uint8 iMasktype;
- mng_int32 iLeft;
- mng_int32 iRight;
- mng_int32 iTop;
- mng_int32 iBottom;
- mng_uint16 iObjectid;
- mng_uint8 iIndex;
- mng_uint32 iSegmentnamesize;
- mng_pchar zSegmentname;
- } mng_evnt_entry;
-typedef mng_evnt_entry * mng_evnt_entryp;
-
-typedef struct { /* evNT */
- mng_chunk_header sHeader;
- mng_uint32 iCount;
- mng_evnt_entryp pEntries;
- } mng_evnt;
-typedef mng_evnt * mng_evntp;
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-typedef struct { /* mpNG frame */
- mng_uint32 iX;
- mng_uint32 iY;
- mng_uint32 iWidth;
- mng_uint32 iHeight;
- mng_int32 iXoffset;
- mng_int32 iYoffset;
- mng_uint16 iTicks;
- } mng_mpng_frame;
-typedef mng_mpng_frame * mng_mpng_framep;
-
-typedef struct { /* mpNG */
- mng_chunk_header sHeader;
- mng_uint32 iFramewidth;
- mng_uint32 iFrameheight;
- mng_uint16 iNumplays;
- mng_uint16 iTickspersec;
- mng_uint8 iCompressionmethod;
- mng_uint32 iFramessize;
- mng_mpng_framep pFrames;
- } mng_mpng;
-typedef mng_mpng * mng_mpngp;
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-typedef struct { /* ahDR */
- mng_chunk_header sHeader;
- mng_uint32 iNumframes;
- mng_uint32 iTickspersec;
- mng_uint32 iNumplays;
- mng_uint32 iTilewidth;
- mng_uint32 iTileheight;
- mng_uint8 iInterlace;
- mng_uint8 iStillused;
- } mng_ahdr;
-typedef mng_ahdr * mng_ahdrp;
-
-typedef struct { /* adAT tile */
- mng_uint32 iTicks;
- mng_int32 iXoffset;
- mng_int32 iYoffset;
- mng_uint8 iTilesource;
- } mng_adat_tile;
-typedef mng_adat_tile * mng_adat_tilep;
-
-typedef struct { /* adAT */
- mng_chunk_header sHeader;
- mng_uint32 iTilessize;
- mng_adat_tilep pTiles;
- } mng_adat;
-typedef mng_adat * mng_adatp;
-#endif
-
-/* ************************************************************************** */
-
-typedef struct { /* unknown chunk */
- mng_chunk_header sHeader;
- mng_uint32 iDatasize;
- mng_ptr pData;
- } mng_unknown_chunk;
-typedef mng_unknown_chunk * mng_unknown_chunkp;
-
-/* ************************************************************************** */
-
-#endif /* _libmng_chunks_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/libmng_cms.c b/src/3rdparty/libmng/libmng_cms.c
deleted file mode 100644
index 999575f66e..0000000000
--- a/src/3rdparty/libmng/libmng_cms.c
+++ /dev/null
@@ -1,758 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_cms.c copyright (c) 2000-2004 G.Juyn * */
-/* * version : 1.0.9 * */
-/* * * */
-/* * purpose : color management routines (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of the color management routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/01/2000 - G.Juyn * */
-/* * - B001(105795) - fixed a typo and misconception about * */
-/* * freeing allocated gamma-table. (reported by Marti Maria) * */
-/* * 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/09/2000 - G.Juyn * */
-/* * - filled application-based color-management routines * */
-/* * 0.5.1 - 05/11/2000 - G.Juyn * */
-/* * - added creatememprofile * */
-/* * - added callback error-reporting support * */
-/* * 0.5.1 - 05/12/2000 - G.Juyn * */
-/* * - changed trace to macro for callback error-reporting * */
-/* * * */
-/* * 0.5.2 - 06/10/2000 - G.Juyn * */
-/* * - fixed some compilation-warnings (contrib Jason Morris) * */
-/* * * */
-/* * 0.5.3 - 06/21/2000 - G.Juyn * */
-/* * - fixed problem with color-correction for stored images * */
-/* * 0.5.3 - 06/23/2000 - G.Juyn * */
-/* * - fixed problem with incorrect gamma-correction * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 08/31/2000 - G.Juyn * */
-/* * - fixed sRGB precedence for gamma_only corection * */
-/* * * */
-/* * 0.9.4 - 12/16/2000 - G.Juyn * */
-/* * - fixed mixup of data- & function-pointers (thanks Dimitri)* */
-/* * * */
-/* * 1.0.1 - 03/31/2001 - G.Juyn * */
-/* * - ignore gamma=0 (see png-list for more info) * */
-/* * 1.0.1 - 04/25/2001 - G.Juyn (reported by Gregg Kelly) * */
-/* * - fixed problem with cms profile being created multiple * */
-/* * times when both iCCP & cHRM/gAMA are present * */
-/* * 1.0.1 - 04/25/2001 - G.Juyn * */
-/* * - moved mng_clear_cms to libmng_cms * */
-/* * 1.0.1 - 05/02/2001 - G.Juyn * */
-/* * - added "default" sRGB generation (Thanks Marti!) * */
-/* * * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * 1.0.5 - 09/19/2002 - G.Juyn * */
-/* * - optimized color-correction routines * */
-/* * 1.0.5 - 09/23/2002 - G.Juyn * */
-/* * - added in-memory color-correction of abstract images * */
-/* * 1.0.5 - 11/08/2002 - G.Juyn * */
-/* * - fixed issues in init_app_cms() * */
-/* * * */
-/* * 1.0.6 - 04/11/2003 - G.Juyn * */
-/* * - B719420 - fixed several MNG_APP_CMS problems * */
-/* * 1.0.6 - 07/11/2003 - G. R-P * */
-/* * - added conditional MNG_SKIPCHUNK_cHRM/iCCP * */
-/* * * */
-/* * 1.0.9 - 12/20/2004 - G.Juyn * */
-/* * - cleaned up macro-invocations (thanks to D. Airlie) * */
-/* * * */
-/* ************************************************************************** */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-#include "libmng_objects.h"
-#include "libmng_cms.h"
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_DISPLAY_PROCS
-
-/* ************************************************************************** */
-/* * * */
-/* * Little CMS helper routines * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_LCMS
-
-#define MNG_CMS_FLAGS 0
-
-/* ************************************************************************** */
-
-void mnglcms_initlibrary ()
-{
- cmsErrorAction (LCMS_ERROR_IGNORE); /* LCMS should ignore errors! */
-}
-
-/* ************************************************************************** */
-
-mng_cmsprof mnglcms_createfileprofile (mng_pchar zFilename)
-{
- return cmsOpenProfileFromFile (zFilename, "r");
-}
-
-/* ************************************************************************** */
-
-mng_cmsprof mnglcms_creatememprofile (mng_uint32 iProfilesize,
- mng_ptr pProfile)
-{
- return cmsOpenProfileFromMem (pProfile, iProfilesize);
-}
-
-/* ************************************************************************** */
-
-mng_cmsprof mnglcms_createsrgbprofile (void)
-{
- cmsCIExyY D65;
- cmsCIExyYTRIPLE Rec709Primaries = {
- {0.6400, 0.3300, 1.0},
- {0.3000, 0.6000, 1.0},
- {0.1500, 0.0600, 1.0}
- };
- LPGAMMATABLE Gamma24[3];
- mng_cmsprof hsRGB;
-
- cmsWhitePointFromTemp(6504, &D65);
- Gamma24[0] = Gamma24[1] = Gamma24[2] = cmsBuildGamma(256, 2.4);
- hsRGB = cmsCreateRGBProfile(&D65, &Rec709Primaries, Gamma24);
- cmsFreeGamma(Gamma24[0]);
-
- return hsRGB;
-}
-
-/* ************************************************************************** */
-
-void mnglcms_freeprofile (mng_cmsprof hProf)
-{
- cmsCloseProfile (hProf);
- return;
-}
-
-/* ************************************************************************** */
-
-void mnglcms_freetransform (mng_cmstrans hTrans)
-{
-/* B001 start */
- cmsDeleteTransform (hTrans);
-/* B001 end */
- return;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_clear_cms (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CLEAR_CMS, MNG_LC_START);
-#endif
-
- if (pData->hTrans) /* transformation still active ? */
- mnglcms_freetransform (pData->hTrans);
-
- pData->hTrans = 0;
-
- if (pData->hProf1) /* file profile still active ? */
- mnglcms_freeprofile (pData->hProf1);
-
- pData->hProf1 = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CLEAR_CMS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_LCMS */
-
-/* ************************************************************************** */
-/* * * */
-/* * Color-management initialization & correction routines * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_LCMS
-
-mng_retcode mng_init_full_cms (mng_datap pData,
- mng_bool bGlobal,
- mng_bool bObject,
- mng_bool bRetrobj)
-{
- mng_cmsprof hProf;
- mng_cmstrans hTrans;
- mng_imagep pImage = MNG_NULL;
- mng_imagedatap pBuf = MNG_NULL;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_FULL_CMS, MNG_LC_START);
-#endif
-
- if (bObject) /* use object if present ? */
- { /* current object ? */
- if ((mng_imagep)pData->pCurrentobj)
- pImage = (mng_imagep)pData->pCurrentobj;
- else /* if not; use object 0 */
- pImage = (mng_imagep)pData->pObjzero;
- }
-
- if (bRetrobj) /* retrieving from an object ? */
- pImage = (mng_imagep)pData->pRetrieveobj;
-
- if (pImage) /* are we using an object ? */
- pBuf = pImage->pImgbuf; /* then address the buffer */
-
- if ((!pBuf) || (!pBuf->bCorrected)) /* is the buffer already corrected ? */
- {
-#ifndef MNG_SKIPCHUNK_iCCP
- if (((pBuf) && (pBuf->bHasICCP)) || ((bGlobal) && (pData->bHasglobalICCP)))
- {
- if (!pData->hProf2) /* output profile not defined ? */
- { /* then assume sRGB !! */
- pData->hProf2 = mnglcms_createsrgbprofile ();
-
- if (!pData->hProf2) /* handle error ? */
- MNG_ERRORL (pData, MNG_LCMS_NOHANDLE);
- }
-
- if ((pBuf) && (pBuf->bHasICCP)) /* generate a profile handle */
- hProf = cmsOpenProfileFromMem (pBuf->pProfile, pBuf->iProfilesize);
- else
- hProf = cmsOpenProfileFromMem (pData->pGlobalProfile, pData->iGlobalProfilesize);
-
- pData->hProf1 = hProf; /* save for future use */
-
- if (!hProf) /* handle error ? */
- MNG_ERRORL (pData, MNG_LCMS_NOHANDLE);
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pData->bIsRGBA16) /* 16-bit intermediates ? */
- hTrans = cmsCreateTransform (hProf, TYPE_RGBA_16_SE,
- pData->hProf2, TYPE_RGBA_16_SE,
- INTENT_PERCEPTUAL, MNG_CMS_FLAGS);
- else
-#endif
- hTrans = cmsCreateTransform (hProf, TYPE_RGBA_8,
- pData->hProf2, TYPE_RGBA_8,
- INTENT_PERCEPTUAL, MNG_CMS_FLAGS);
-
- pData->hTrans = hTrans; /* save for future use */
-
- if (!hTrans) /* handle error ? */
- MNG_ERRORL (pData, MNG_LCMS_NOTRANS);
- /* load color-correction routine */
- pData->fCorrectrow = (mng_fptr)mng_correct_full_cms;
-
- return MNG_NOERROR; /* and done */
- }
- else
-#endif
- if (((pBuf) && (pBuf->bHasSRGB)) || ((bGlobal) && (pData->bHasglobalSRGB)))
- {
- mng_uint8 iIntent;
-
- if (pData->bIssRGB) /* sRGB system ? */
- return MNG_NOERROR; /* no conversion required */
-
- if (!pData->hProf3) /* sRGB profile not defined ? */
- { /* then create it implicitly !! */
- pData->hProf3 = mnglcms_createsrgbprofile ();
-
- if (!pData->hProf3) /* handle error ? */
- MNG_ERRORL (pData, MNG_LCMS_NOHANDLE);
- }
-
- hProf = pData->hProf3; /* convert from sRGB profile */
-
- if ((pBuf) && (pBuf->bHasSRGB)) /* determine rendering intent */
- iIntent = pBuf->iRenderingintent;
- else
- iIntent = pData->iGlobalRendintent;
-
- if (pData->bIsRGBA16) /* 16-bit intermediates ? */
- hTrans = cmsCreateTransform (hProf, TYPE_RGBA_16_SE,
- pData->hProf2, TYPE_RGBA_16_SE,
- iIntent, MNG_CMS_FLAGS);
- else
- hTrans = cmsCreateTransform (hProf, TYPE_RGBA_8,
- pData->hProf2, TYPE_RGBA_8,
- iIntent, MNG_CMS_FLAGS);
-
- pData->hTrans = hTrans; /* save for future use */
-
- if (!hTrans) /* handle error ? */
- MNG_ERRORL (pData, MNG_LCMS_NOTRANS);
- /* load color-correction routine */
- pData->fCorrectrow = (mng_fptr)mng_correct_full_cms;
-
- return MNG_NOERROR; /* and done */
- }
- else
- if ( (((pBuf) && (pBuf->bHasCHRM)) || ((bGlobal) && (pData->bHasglobalCHRM))) &&
- ( ((pBuf) && (pBuf->bHasGAMA) && (pBuf->iGamma > 0)) ||
- ((bGlobal) && (pData->bHasglobalGAMA) && (pData->iGlobalGamma > 0)) ) )
- {
- mng_CIExyY sWhitepoint;
- mng_CIExyYTRIPLE sPrimaries;
- mng_gammatabp pGammatable[3];
- mng_float dGamma;
-
- if (!pData->hProf2) /* output profile not defined ? */
- { /* then assume sRGB !! */
- pData->hProf2 = mnglcms_createsrgbprofile ();
-
- if (!pData->hProf2) /* handle error ? */
- MNG_ERRORL (pData, MNG_LCMS_NOHANDLE);
- }
-
-#ifndef MNG_SKIPCHUNK_cHRM
- if ((pBuf) && (pBuf->bHasCHRM)) /* local cHRM ? */
- {
- sWhitepoint.x = (mng_float)pBuf->iWhitepointx / 100000;
- sWhitepoint.y = (mng_float)pBuf->iWhitepointy / 100000;
- sPrimaries.Red.x = (mng_float)pBuf->iPrimaryredx / 100000;
- sPrimaries.Red.y = (mng_float)pBuf->iPrimaryredy / 100000;
- sPrimaries.Green.x = (mng_float)pBuf->iPrimarygreenx / 100000;
- sPrimaries.Green.y = (mng_float)pBuf->iPrimarygreeny / 100000;
- sPrimaries.Blue.x = (mng_float)pBuf->iPrimarybluex / 100000;
- sPrimaries.Blue.y = (mng_float)pBuf->iPrimarybluey / 100000;
- }
- else
- {
- sWhitepoint.x = (mng_float)pData->iGlobalWhitepointx / 100000;
- sWhitepoint.y = (mng_float)pData->iGlobalWhitepointy / 100000;
- sPrimaries.Red.x = (mng_float)pData->iGlobalPrimaryredx / 100000;
- sPrimaries.Red.y = (mng_float)pData->iGlobalPrimaryredy / 100000;
- sPrimaries.Green.x = (mng_float)pData->iGlobalPrimarygreenx / 100000;
- sPrimaries.Green.y = (mng_float)pData->iGlobalPrimarygreeny / 100000;
- sPrimaries.Blue.x = (mng_float)pData->iGlobalPrimarybluex / 100000;
- sPrimaries.Blue.y = (mng_float)pData->iGlobalPrimarybluey / 100000;
- }
-#endif
-
- sWhitepoint.Y = /* Y component is always 1.0 */
- sPrimaries.Red.Y =
- sPrimaries.Green.Y =
- sPrimaries.Blue.Y = 1.0;
-
- if ((pBuf) && (pBuf->bHasGAMA)) /* get the gamma value */
- dGamma = (mng_float)pBuf->iGamma / 100000;
- else
- dGamma = (mng_float)pData->iGlobalGamma / 100000;
-
- dGamma = pData->dViewgamma / dGamma;
-
- pGammatable [0] = /* and build the lookup tables */
- pGammatable [1] =
- pGammatable [2] = cmsBuildGamma (256, dGamma);
-
- if (!pGammatable [0]) /* enough memory ? */
- MNG_ERRORL (pData, MNG_LCMS_NOMEM);
- /* create the profile */
- hProf = cmsCreateRGBProfile (&sWhitepoint, &sPrimaries, pGammatable);
-
- cmsFreeGamma (pGammatable [0]); /* free the temporary gamma tables ? */
- /* yes! but just the one! */
-
- pData->hProf1 = hProf; /* save for future use */
-
- if (!hProf) /* handle error ? */
- MNG_ERRORL (pData, MNG_LCMS_NOHANDLE);
-
- if (pData->bIsRGBA16) /* 16-bit intermediates ? */
- hTrans = cmsCreateTransform (hProf, TYPE_RGBA_16_SE,
- pData->hProf2, TYPE_RGBA_16_SE,
- INTENT_PERCEPTUAL, MNG_CMS_FLAGS);
- else
- hTrans = cmsCreateTransform (hProf, TYPE_RGBA_8,
- pData->hProf2, TYPE_RGBA_8,
- INTENT_PERCEPTUAL, MNG_CMS_FLAGS);
-
- pData->hTrans = hTrans; /* save for future use */
-
- if (!hTrans) /* handle error ? */
- MNG_ERRORL (pData, MNG_LCMS_NOTRANS);
- /* load color-correction routine */
- pData->fCorrectrow = (mng_fptr)mng_correct_full_cms;
-
- return MNG_NOERROR; /* and done */
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_FULL_CMS, MNG_LC_END);
-#endif
- /* if we get here, we'll only do gamma */
- return mng_init_gamma_only (pData, bGlobal, bObject, bRetrobj);
-}
-#endif /* MNG_INCLUDE_LCMS */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_LCMS
-mng_retcode mng_correct_full_cms (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CORRECT_FULL_CMS, MNG_LC_START);
-#endif
-
- cmsDoTransform (pData->hTrans, pData->pRGBArow, pData->pRGBArow, pData->iRowsamples);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CORRECT_FULL_CMS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_LCMS */
-
-/* ************************************************************************** */
-
-#if defined(MNG_GAMMA_ONLY) || defined(MNG_FULL_CMS) || defined(MNG_APP_CMS)
-mng_retcode mng_init_gamma_only (mng_datap pData,
- mng_bool bGlobal,
- mng_bool bObject,
- mng_bool bRetrobj)
-{
- mng_float dGamma;
- mng_imagep pImage = MNG_NULL;
- mng_imagedatap pBuf = MNG_NULL;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_GAMMA_ONLY, MNG_LC_START);
-#endif
-
- if (bObject) /* use object if present ? */
- { /* current object ? */
- if ((mng_imagep)pData->pCurrentobj)
- pImage = (mng_imagep)pData->pCurrentobj;
- else /* if not; use object 0 */
- pImage = (mng_imagep)pData->pObjzero;
- }
-
- if (bRetrobj) /* retrieving from an object ? */
- pImage = (mng_imagep)pData->pRetrieveobj;
-
- if (pImage) /* are we using an object ? */
- pBuf = pImage->pImgbuf; /* then address the buffer */
-
- if ((!pBuf) || (!pBuf->bCorrected)) /* is the buffer already corrected ? */
- {
- if ((pBuf) && (pBuf->bHasSRGB)) /* get the gamma value */
- dGamma = 0.45455;
- else
- if ((pBuf) && (pBuf->bHasGAMA))
- dGamma = (mng_float)pBuf->iGamma / 100000;
- else
- if ((bGlobal) && (pData->bHasglobalSRGB))
- dGamma = 0.45455;
- else
- if ((bGlobal) && (pData->bHasglobalGAMA))
- dGamma = (mng_float)pData->iGlobalGamma / 100000;
- else
- dGamma = pData->dDfltimggamma;
-
- if (dGamma > 0) /* ignore gamma=0 */
- {
- dGamma = pData->dViewgamma / (dGamma * pData->dDisplaygamma);
-
- if (dGamma != pData->dLastgamma) /* lookup table needs to be computed ? */
- {
- mng_int32 iX;
-
- pData->aGammatab [0] = 0;
-
- for (iX = 1; iX <= 255; iX++)
- pData->aGammatab [iX] = (mng_uint8)(pow (iX / 255.0, dGamma) * 255 + 0.5);
-
- pData->dLastgamma = dGamma; /* keep for next time */
- }
- /* load color-correction routine */
- pData->fCorrectrow = (mng_fptr)mng_correct_gamma_only;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_GAMMA_ONLY, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_GAMMA_ONLY || MNG_FULL_CMS || MNG_APP_CMS */
-
-/* ************************************************************************** */
-
-#if defined(MNG_GAMMA_ONLY) || defined(MNG_FULL_CMS) || defined(MNG_APP_CMS)
-mng_retcode mng_correct_gamma_only (mng_datap pData)
-{
- mng_uint8p pWork;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CORRECT_GAMMA_ONLY, MNG_LC_START);
-#endif
-
- pWork = pData->pRGBArow; /* address intermediate row */
-
- if (pData->bIsRGBA16) /* 16-bit intermediate row ? */
- {
-
-
- /* TODO: 16-bit precision gamma processing */
- /* we'll just do the high-order byte for now */
-
-
- /* convert all samples in the row */
- for (iX = 0; iX < pData->iRowsamples; iX++)
- { /* using the precalculated gamma lookup table */
- *pWork = pData->aGammatab [*pWork];
- *(pWork+2) = pData->aGammatab [*(pWork+2)];
- *(pWork+4) = pData->aGammatab [*(pWork+4)];
-
- pWork += 8;
- }
- }
- else
- { /* convert all samples in the row */
- for (iX = 0; iX < pData->iRowsamples; iX++)
- { /* using the precalculated gamma lookup table */
- *pWork = pData->aGammatab [*pWork];
- *(pWork+1) = pData->aGammatab [*(pWork+1)];
- *(pWork+2) = pData->aGammatab [*(pWork+2)];
-
- pWork += 4;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CORRECT_GAMMA_ONLY, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_GAMMA_ONLY || MNG_FULL_CMS || MNG_APP_CMS */
-
-/* ************************************************************************** */
-
-#ifdef MNG_APP_CMS
-mng_retcode mng_init_app_cms (mng_datap pData,
- mng_bool bGlobal,
- mng_bool bObject,
- mng_bool bRetrobj)
-{
- mng_imagep pImage = MNG_NULL;
- mng_imagedatap pBuf = MNG_NULL;
- mng_bool bDone = MNG_FALSE;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_APP_CMS, MNG_LC_START);
-#endif
-
- if (bObject) /* use object if present ? */
- { /* current object ? */
- if ((mng_imagep)pData->pCurrentobj)
- pImage = (mng_imagep)pData->pCurrentobj;
- else /* if not; use object 0 */
- pImage = (mng_imagep)pData->pObjzero;
- }
-
- if (bRetrobj) /* retrieving from an object ? */
- pImage = (mng_imagep)pData->pRetrieveobj;
-
- if (pImage) /* are we using an object ? */
- pBuf = pImage->pImgbuf; /* then address the buffer */
-
- if ((!pBuf) || (!pBuf->bCorrected)) /* is the buffer already corrected ? */
- {
-#ifndef MNG_SKIPCHUNK_iCCP
- if ( (pData->fProcessiccp) &&
- (((pBuf) && (pBuf->bHasICCP)) || ((bGlobal) && (pData->bHasglobalICCP))) )
- {
- mng_uint32 iProfilesize;
- mng_ptr pProfile;
-
- if ((pBuf) && (pBuf->bHasICCP)) /* get the right profile */
- {
- iProfilesize = pBuf->iProfilesize;
- pProfile = pBuf->pProfile;
- }
- else
- {
- iProfilesize = pData->iGlobalProfilesize;
- pProfile = pData->pGlobalProfile;
- }
- /* inform the app */
- if (!pData->fProcessiccp ((mng_handle)pData, iProfilesize, pProfile))
- MNG_ERROR (pData, MNG_APPCMSERROR);
- /* load color-correction routine */
- pData->fCorrectrow = (mng_fptr)mng_correct_app_cms;
- bDone = MNG_TRUE;
- }
-#endif
-
- if ( (pData->fProcesssrgb) &&
- (((pBuf) && (pBuf->bHasSRGB)) || ((bGlobal) && (pData->bHasglobalSRGB))) )
- {
- mng_uint8 iIntent;
-
- if ((pBuf) && (pBuf->bHasSRGB)) /* determine rendering intent */
- iIntent = pBuf->iRenderingintent;
- else
- iIntent = pData->iGlobalRendintent;
- /* inform the app */
- if (!pData->fProcesssrgb ((mng_handle)pData, iIntent))
- MNG_ERROR (pData, MNG_APPCMSERROR);
- /* load color-correction routine */
- pData->fCorrectrow = (mng_fptr)mng_correct_app_cms;
- bDone = MNG_TRUE;
- }
-
-#ifndef MNG_SKIPCHUNK_cHRM
- if ( (pData->fProcesschroma) &&
- (((pBuf) && (pBuf->bHasCHRM)) || ((bGlobal) && (pData->bHasglobalCHRM))) )
- {
- mng_uint32 iWhitepointx, iWhitepointy;
- mng_uint32 iPrimaryredx, iPrimaryredy;
- mng_uint32 iPrimarygreenx, iPrimarygreeny;
- mng_uint32 iPrimarybluex, iPrimarybluey;
-
- if ((pBuf) && (pBuf->bHasCHRM)) /* local cHRM ? */
- {
- iWhitepointx = pBuf->iWhitepointx;
- iWhitepointy = pBuf->iWhitepointy;
- iPrimaryredx = pBuf->iPrimaryredx;
- iPrimaryredy = pBuf->iPrimaryredy;
- iPrimarygreenx = pBuf->iPrimarygreenx;
- iPrimarygreeny = pBuf->iPrimarygreeny;
- iPrimarybluex = pBuf->iPrimarybluex;
- iPrimarybluey = pBuf->iPrimarybluey;
- }
- else
- {
- iWhitepointx = pData->iGlobalWhitepointx;
- iWhitepointy = pData->iGlobalWhitepointy;
- iPrimaryredx = pData->iGlobalPrimaryredx;
- iPrimaryredy = pData->iGlobalPrimaryredy;
- iPrimarygreenx = pData->iGlobalPrimarygreenx;
- iPrimarygreeny = pData->iGlobalPrimarygreeny;
- iPrimarybluex = pData->iGlobalPrimarybluex;
- iPrimarybluey = pData->iGlobalPrimarybluey;
- }
- /* inform the app */
- if (!pData->fProcesschroma ((mng_handle)pData, iWhitepointx, iWhitepointy,
- iPrimaryredx, iPrimaryredy,
- iPrimarygreenx, iPrimarygreeny,
- iPrimarybluex, iPrimarybluey))
- MNG_ERROR (pData, MNG_APPCMSERROR);
- /* load color-correction routine */
- pData->fCorrectrow = (mng_fptr)mng_correct_app_cms;
- bDone = MNG_TRUE;
- }
-#endif
-
- if ( (pData->fProcessgamma) &&
- (((pBuf) && (pBuf->bHasGAMA)) || ((bGlobal) && (pData->bHasglobalGAMA))) )
- {
- mng_uint32 iGamma;
-
- if ((pBuf) && (pBuf->bHasGAMA)) /* get the gamma value */
- iGamma = pBuf->iGamma;
- else
- iGamma = pData->iGlobalGamma;
- /* inform the app */
- if (!pData->fProcessgamma ((mng_handle)pData, iGamma))
- { /* app wants us to use internal routines ! */
- iRetcode = mng_init_gamma_only (pData, bGlobal, bObject, bRetrobj);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- else
- { /* load color-correction routine */
- pData->fCorrectrow = (mng_fptr)mng_correct_app_cms;
- }
-
- bDone = MNG_TRUE;
- }
-
- if (!bDone) /* no color-info at all ? */
- {
- /* then use default image gamma ! */
- if (!pData->fProcessgamma ((mng_handle)pData,
- (mng_uint32)((pData->dDfltimggamma * 100000) + 0.5)))
- { /* app wants us to use internal routines ! */
- iRetcode = mng_init_gamma_only (pData, bGlobal, bObject, bRetrobj);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- else
- { /* load color-correction routine */
- pData->fCorrectrow = (mng_fptr)mng_correct_app_cms;
- }
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_APP_CMS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_APP_CMS */
-
-/* ************************************************************************** */
-
-#ifdef MNG_APP_CMS
-mng_retcode mng_correct_app_cms (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CORRECT_APP_CMS, MNG_LC_START);
-#endif
-
- if (pData->fProcessarow) /* let the app do something with our row */
- if (!pData->fProcessarow ((mng_handle)pData, pData->iRowsamples,
- pData->bIsRGBA16, pData->pRGBArow))
- MNG_ERROR (pData, MNG_APPCMSERROR);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CORRECT_APP_CMS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_APP_CMS */
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_DISPLAY_PROCS */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
-
-
diff --git a/src/3rdparty/libmng/libmng_cms.h b/src/3rdparty/libmng/libmng_cms.h
deleted file mode 100644
index 4459f805f8..0000000000
--- a/src/3rdparty/libmng/libmng_cms.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_cms.h copyright (c) 2000-2003 G.Juyn * */
-/* * version : 1.0.6 * */
-/* * * */
-/* * purpose : color management routines (definition) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : Definition of color management routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/11/2000 - G.Juyn * */
-/* * - added creatememprofile * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 1.0.1 - 04/25/2001 - G.Juyn * */
-/* * - moved mng_clear_cms to libmng_cms * */
-/* * 1.0.1 - 05/02/2001 - G.Juyn * */
-/* * - added "default" sRGB generation (Thanks Marti!) * */
-/* * * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * 1.0.5 - 09/19/2002 - G.Juyn * */
-/* * - optimized color-correction routines * */
-/* * * */
-/* * 1.0.6 - 04/11/2003 - G.Juyn * */
-/* * - B719420 - fixed several MNG_APP_CMS problems * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_cms_h_
-#define _libmng_cms_h_
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_LCMS
-void mnglcms_initlibrary (void);
-mng_cmsprof mnglcms_createfileprofile (mng_pchar zFilename);
-mng_cmsprof mnglcms_creatememprofile (mng_uint32 iProfilesize,
- mng_ptr pProfile );
-mng_cmsprof mnglcms_createsrgbprofile (void);
-void mnglcms_freeprofile (mng_cmsprof hProf );
-void mnglcms_freetransform (mng_cmstrans hTrans );
-
-mng_retcode mng_clear_cms (mng_datap pData );
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_FULL_CMS
-mng_retcode mng_init_full_cms (mng_datap pData,
- mng_bool bGlobal,
- mng_bool bObject,
- mng_bool bRetrobj);
-mng_retcode mng_correct_full_cms (mng_datap pData);
-#endif
-
-#if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
-mng_retcode mng_init_gamma_only (mng_datap pData,
- mng_bool bGlobal,
- mng_bool bObject,
- mng_bool bRetrobj);
-mng_retcode mng_correct_gamma_only (mng_datap pData);
-#endif
-
-#ifdef MNG_APP_CMS
-mng_retcode mng_init_app_cms (mng_datap pData,
- mng_bool bGlobal,
- mng_bool bObject,
- mng_bool bRetrobj);
-mng_retcode mng_correct_app_cms (mng_datap pData);
-#endif
-
-/* ************************************************************************** */
-
-#endif /* _libmng_cms_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/libmng_conf.h b/src/3rdparty/libmng/libmng_conf.h
deleted file mode 100644
index 8441ee0874..0000000000
--- a/src/3rdparty/libmng/libmng_conf.h
+++ /dev/null
@@ -1,295 +0,0 @@
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_conf.h copyright (c) G.Juyn 2000-2004 * */
-/* * version : 1.0.9 * */
-/* * * */
-/* * purpose : main configuration file * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : The configuration file. Change this to include/exclude * */
-/* * the options you want or do not want in libmng. * */
-/* * * */
-/* * changes : 0.5.2 - 06/02/2000 - G.Juyn * */
-/* * - separated configuration-options into this file * */
-/* * - changed to most likely configuration (?) * */
-/* * 0.5.2 - 06/03/2000 - G.Juyn * */
-/* * - changed options to create a standard so-library * */
-/* * with everything enabled * */
-/* * 0.5.2 - 06/04/2000 - G.Juyn * */
-/* * - changed options to create a standard win32-dll * */
-/* * with everything enabled * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 08/12/2000 - G.Juyn * */
-/* * - added workaround for faulty PhotoShop iCCP chunk * */
-/* * 0.9.3 - 09/16/2000 - G.Juyn * */
-/* * - removed trace-options from default SO/DLL builds * */
-/* * * */
-/* * 1.0.4 - 06/22/2002 - G.Juyn * */
-/* * - B526138 - returned IJGSRC6B calling convention to * */
-/* * default for MSVC * */
-/* * * */
-/* * 1.0.5 - 09/14/2002 - G.Juyn * */
-/* * - added event handling for dynamic MNG * */
-/* * - added 'supports' call to check function availability * */
-/* * * */
-/* * 1.0.6 - 06/22/2002 - G.R-P * */
-/* * - added MNG_NO_INCLUDE_JNG conditional * */
-/* * - added MNG_SKIPCHUNK_evNT conditional * */
-/* * 1.0.6 - 07/14/2002 - G.R-P * */
-/* * - added MNG_NO_SUPPORT_FUNCQUERY conditional * */
-/* * * */
-/* * 1.0.7 - 03/07/2004 - G.R-P * */
-/* * - added MNG_VERSION_QUERY_SUPPORT_ conditional * */
-/* * * */
-/* * 1.0.9 - 05/12/2004 - G.Juyn * */
-/* * - clearified MNG_BIGENDIAN_SUPPORTED conditional * */
-/* * - added MNG_LITTLEENDIAN_SUPPORTED conditional * */
-/* * * */
-/* ************************************************************************** */
-
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_conf_h_
-#define _libmng_conf_h_
-
-#ifdef MNG_MOZILLA_CFG
-#include "special\mozcfg\mozlibmngconf.h"
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * User-selectable compile-time options * */
-/* * * */
-/* ************************************************************************** */
-
-/* enable exactly one(1) of the MNG-(sub)set selectors */
-/* use this to select which (sub)set of the MNG specification you wish
- to support */
-/* generally you'll want full support as the library provides it automatically
- for you! if you're really strung on memory-requirements you can opt
- to enable less support (but it's just NOT a good idea!) */
-/* NOTE that this isn't actually implemented yet */
-
-#if !defined(MNG_SUPPORT_FULL) && !defined(MNG_SUPPORT_LC) && !defined(MNG_SUPPORT_VLC)
-#define MNG_SUPPORT_FULL
-/* #define MNG_SUPPORT_LC */
-/* #define MNG_SUPPORT_VLC */
-#endif
-
-/* ************************************************************************** */
-
-/* enable JPEG support if required */
-/* use this to enable the JNG support routines */
-/* this requires an external jpeg package;
- currently only IJG's jpgsrc6b is supported! */
-/* NOTE that the IJG code can be either 8- or 12-bit (eg. not both);
- so choose the one you've defined in jconfig.h; if you don't know what
- the heck I'm talking about, just leave it at 8-bit support (thank you!) */
-
-#ifndef MNG_NO_INCLUDE_JNG
-#ifdef MNG_SUPPORT_FULL /* full support includes JNG */
-#define MNG_SUPPORT_IJG6B
-#endif
-
-#ifndef MNG_SUPPORT_IJG6B
-#if defined(MNG_BUILD_SO) || defined(MNG_USE_SO) || defined(MNG_BUILD_DLL) || defined(MNG_USE_DLL)
-#define MNG_SUPPORT_IJG6B
-#endif
-#endif
-
-#if defined(MNG_SUPPORT_IJG6B) && !defined(MNG_SUPPORT_JPEG8) && !defined(MNG_SUPPORT_JPEG12)
-#define MNG_SUPPORT_JPEG8
-/* #define MNG_SUPPORT_JPEG12 */
-#endif
-
-/* The following is required to export the IJG routines from the DLL in
- the Windows-standard calling convention;
- currently this only works for Borland C++ !!! */
-
-#if defined(MNG_BUILD_DLL) || defined(MNG_USE_DLL)
-#if defined(MNG_SUPPORT_IJG6B) && defined(__BORLANDC__)
-#define MNG_DEFINE_JPEG_STDCALL
-#endif
-#endif
-#endif
-
-/* ************************************************************************** */
-
-/* enable required high-level functions */
-/* use this to select the high-level functions you require */
-/* if you only need to display a MNG, disable write support! */
-/* if you only need to examine a MNG, disable write & display support! */
-/* if you only need to copy a MNG, disable display support! */
-/* if you only need to create a MNG, disable read & display support! */
-/* NOTE that turning all options off will be very unuseful! */
-
-#if !defined(MNG_SUPPORT_READ) && !defined(MNG_SUPPORT_WRITE) && !defined(MNG_SUPPORT_DISPLAY)
-#define MNG_SUPPORT_READ
-#if defined(MNG_BUILD_SO) || defined(MNG_USE_SO) || defined(MNG_BUILD_DLL) || defined(MNG_USE_DLL)
-#define MNG_SUPPORT_WRITE
-#endif
-#define MNG_SUPPORT_DISPLAY
-#endif
-
-/* ************************************************************************** */
-
-/* enable chunk access functions */
-/* use this to select whether you need access to the individual chunks */
-/* useful if you want to examine a read MNG (you'll also need MNG_STORE_CHUNKS !)*/
-/* required if you need to create & write a new MNG! */
-
-#ifndef MNG_ACCESS_CHUNKS
-#if defined(MNG_BUILD_SO) || defined(MNG_USE_SO) || defined(MNG_BUILD_DLL) || defined(MNG_USE_DLL)
-#define MNG_ACCESS_CHUNKS
-#endif
-#endif
-
-/* ************************************************************************** */
-
-/* enable exactly one(1) of the color-management functionality selectors */
-/* use this to select the level of automatic color support */
-/* MNG_FULL_CMS requires the lcms (little cms) external package ! */
-/* if you want your own app (or the OS) to handle color-management
- select MNG_APP_CMS */
-
-#define MNG_GAMMA_ONLY
-/* #define MNG_FULL_CMS */
-/* #define MNG_APP_CMS */
-
-/* ************************************************************************** */
-
-/* enable automatic dithering */
-/* use this if you need dithering support to convert high-resolution
- images to a low-resolution output-device */
-/* NOTE that this is not supported yet */
-
-/* #define MNG_AUTO_DITHER */
-
-/* ************************************************************************** */
-
-/* enable whether chunks should be stored for reference later */
-/* use this if you need to examine the chunks of a MNG you have read,
- or (re-)write a MNG you have read */
-/* turn this off if you want to reduce memory-consumption */
-
-#ifndef MNG_STORE_CHUNKS
-#if defined(MNG_BUILD_SO) || defined(MNG_USE_SO) || defined(MNG_BUILD_DLL) || defined(MNG_USE_DLL)
-#define MNG_STORE_CHUNKS
-#endif
-#endif
-
-/* ************************************************************************** */
-
-/* enable internal memory management (if your compiler supports it) */
-/* use this if your compiler supports the 'standard' memory functions
- (calloc & free), and you want the library to use these functions and not
- bother your app with memory-callbacks */
-
-/* #define MNG_INTERNAL_MEMMNGMT */
-
-/* ************************************************************************** */
-
-/* enable internal tracing-functionality (manual debugging purposes) */
-/* use this if you have trouble location bugs or problems */
-/* NOTE that you'll need to specify the trace callback function! */
-
-/* #define MNG_SUPPORT_TRACE */
-
-/* ************************************************************************** */
-
-/* enable extended error- and trace-telltaling */
-/* use this if you need explanatory messages with errors and/or tracing */
-
-#if !defined(MNG_ERROR_TELLTALE) && !defined(MNG_TRACE_TELLTALE)
-#if defined(MNG_BUILD_SO) || defined(MNG_USE_SO) || defined(MNG_BUILD_DLL) || defined(MNG_USE_DLL)
-#define MNG_ERROR_TELLTALE
-#define MNG_TRACE_TELLTALE
-#endif
-#endif
-
-/* ************************************************************************** */
-
-/* enable BIG/LITTLE endian optimizations */
-/* enable BIG if you're on an architecture that supports big-endian reads
- and writes that aren't word-aligned */
-/* according to reliable sources this only works for PowerPC (bigendian mode)
- and 680x0 */
-/* enable LITTLE if you're on an architecture that supports little-endian */
-/* when in doubt leave both off !!! */
-
-/* #define MNG_BIGENDIAN_SUPPORTED */
-/* #define MNG_LITTLEENDIAN_SUPPORTED */
-
-/* ************************************************************************** */
-/* enable 'version' functions */
-#if !defined(MNG_VERSION_QUERY_SUPPORT) && \
- !defined(MNG_NO_VERSION_QUERY_SUPPORT)
-#define MNG_VERSION_QUERY_SUPPORT
-#endif
-
-/* enable 'supports' function */
-/* use this if you need to query the availability of functions at runtime;
- useful for apps that dynamically load the library and that need specific
- functions */
-
-#if !defined(MNG_NO_SUPPORT_FUNCQUERY) && !defined(MNG_SUPPORT_FUNCQUERY)
-#if defined(MNG_BUILD_SO) || defined(MNG_USE_SO) || \
- defined(MNG_BUILD_DLL) || defined(MNG_USE_DLL)
-#define MNG_SUPPORT_FUNCQUERY
-#endif
-#endif
-
-/* ************************************************************************** */
-
-/* enable dynamic MNG features */
-/* use this if you would like to have dynamic support for specifically
- designed MNGs; eg. this is useful for 'rollover' effects such as common
- on the world wide web */
-
-#ifndef MNG_SUPPORT_DYNAMICMNG
-#if defined(MNG_BUILD_SO) || defined(MNG_USE_SO) || defined(MNG_BUILD_DLL) || defined(MNG_USE_DLL)
-#define MNG_SUPPORT_DYNAMICMNG
-#endif
-#endif
-#ifndef MNG_SUPPORT_DYNAMICMNG
-#ifndef MNG_SKIPCHUNK_evNT
-#define MNG_SKIPCHUNK_evNT
-#endif
-#endif
-
-#ifdef MNG_INCLUDE_JNG
-#ifndef MNG_NO_ACCESS_JPEG
-#ifndef MNG_ACCESS_JPEG
-#define MNG_ACCESS_JPEG
-#endif
-#endif
-#endif
-
-#ifdef MNG_INCLUDE_ZLIB
-#ifndef MNG_NO_ACCESS_ZLIB
-#ifndef MNG_ACCESS_ZLIB
-#define MNG_ACCESS_ZLIB
-#endif
-#endif
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * End of user-selectable compile-time options * */
-/* * * */
-/* ************************************************************************** */
-
-#endif /* _libmng_conf_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
diff --git a/src/3rdparty/libmng/libmng_data.h b/src/3rdparty/libmng/libmng_data.h
deleted file mode 100644
index 6a007632d5..0000000000
--- a/src/3rdparty/libmng/libmng_data.h
+++ /dev/null
@@ -1,1032 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_data.h copyright (c) 2000-2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : main data structure definition * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : Definition of the library main data structure * */
-/* * * */
-/* * changes : 0.5.1 - 05/04/2000 - G.Juyn * */
-/* * - added CRC table to main structure (for thread-safety) * */
-/* * 0.5.1 - 05/06/2000 - G.Juyn * */
-/* * - added iPLTEentries for checking hIST-length * */
-/* * 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed palette definition to exported palette-type * */
-/* * - removed frozen indicator * */
-/* * - added create/write indicators * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/13/2000 - G.Juyn * */
-/* * - added eMNGma hack (will be removed in 1.0.0 !!!) * */
-/* * - added TERM animation object pointer (easier reference) * */
-/* * - added saved-data structure for SAVE/SEEK processing * */
-/* * * */
-/* * 0.5.2 - 05/18/2000 - G.Juyn * */
-/* * - added fields for JNG support (IJG-based) * */
-/* * 0.5.2 - 05/24/2000 - G.Juyn * */
-/* * - changed global tRNS definition * */
-/* * 0.5.2 - 05/30/2000 - G.Juyn * */
-/* * - added delta-image fields * */
-/* * 0.5.2 - 06/01/2000 - G.Juyn * */
-/* * - added internal delta-image processing callbacks * */
-/* * 0.5.2 - 06/02/2000 - G.Juyn * */
-/* * - changed SWAP_ENDIAN to BIGENDIAN_SUPPORTED * */
-/* * (contributed by Tim Rowley) * */
-/* * - added getalphaline callback for RGB8_A8 canvasstyle * */
-/* * 0.5.2 - 06/06/2000 - G.Juyn * */
-/* * - added parameter for delayed buffer-processing * */
-/* * * */
-/* * 0.5.3 - 06/16/2000 - G.Juyn * */
-/* * - added update-region parms for refresh calback * */
-/* * - added Needrefresh parameter * */
-/* * 0.5.3 - 06/17/2000 - G.Juyn * */
-/* * - added Deltaimmediate parm for faster delta-processing * */
-/* * 0.5.3 - 06/21/2000 - G.Juyn * */
-/* * - added Speed parameter to facilitate testing * */
-/* * - added Imagelevel parameter for processtext callback * */
-/* * 0.5.3 - 06/26/2000 - G.Juyn * */
-/* * - changed userdata variable to mng_ptr * */
-/* * * */
-/* * 0.9.1 - 07/07/2000 - G.Juyn * */
-/* * - added variables for go_xxxx processing * */
-/* * 0.9.1 - 07/08/2000 - G.Juyn * */
-/* * - added variables for improved timing support * */
-/* * 0.9.1 - 07/15/2000 - G.Juyn * */
-/* * - added callbacks for SAVE/SEEK processing * */
-/* * - added variable for NEEDSECTIONWAIT breaks * */
-/* * - added variable for freeze & reset processing * */
-/* * 0.9.1 - 07/17/2000 - G.Juyn * */
-/* * - fixed suspension-buffering for 32K+ chunks * */
-/* * * */
-/* * 0.9.2 - 07/29/2000 - G.Juyn * */
-/* * - removed Nextbackxxx fields (no longer used) * */
-/* * 0.9.2 - 07/31/2000 - G.Juyn * */
-/* * - fixed wrapping of suspension parameters * */
-/* * 0.9.2 - 08/04/2000 - G.Juyn * */
-/* * - B111096 - fixed large-buffer read-suspension * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 08/26/2000 - G.Juyn * */
-/* * - added MAGN chunk * */
-/* * 0.9.3 - 09/07/2000 - G.Juyn * */
-/* * - added support for new filter_types * */
-/* * 0.9.3 - 09/10/2000 - G.Juyn * */
-/* * - fixed DEFI behavior * */
-/* * 0.9.3 - 10/10/2000 - G.Juyn * */
-/* * - added support for alpha-depth prediction * */
-/* * 0.9.3 - 10/11/2000 - G.Juyn * */
-/* * - added support for nEED * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added optional support for bKGD for PNG images * */
-/* * - added support for JDAA * */
-/* * 0.9.3 - 10/17/2000 - G.Juyn * */
-/* * - added callback to process non-critical unknown chunks * */
-/* * - fixed support for bKGD * */
-/* * 0.9.3 - 10/19/2000 - G.Juyn * */
-/* * - implemented delayed delta-processing * */
-/* * 0.9.4 - 12/16/2000 - G.Juyn * */
-/* * - fixed mixup of data- & function-pointers (thanks Dimitri)* */
-/* * * */
-/* * 1.0.1 - 02/08/2001 - G.Juyn * */
-/* * - added MEND processing callback * */
-/* * 1.0.1 - 02/13/2001 - G.Juyn * */
-/* * - fixed first FRAM_MODE=4 timing problem * */
-/* * * */
-/* * 1.0.2 - 06/23/2001 - G.Juyn * */
-/* * - added optimization option for MNG-video playback * */
-/* * - added processterm callback * */
-/* * 1.0.2 - 06/25/2001 - G.Juyn * */
-/* * - added option to turn off progressive refresh * */
-/* * * */
-/* * 1.0.5 - 07/08/2002 - G.Juyn * */
-/* * - B578572 - removed eMNGma hack (thanks Dimitri!) * */
-/* * 1.0.5 - 07/16/2002 - G.Juyn * */
-/* * - B581625 - large chunks fail with suspension reads * */
-/* * 1.0.5 - 08/15/2002 - G.Juyn * */
-/* * - completed PROM support * */
-/* * 1.0.5 - 09/15/2002 - G.Juyn * */
-/* * - fixed LOOP iteration=0 special case * */
-/* * 1.0.5 - 09/20/2002 - G.Juyn * */
-/* * - finished support for BACK image & tiling * */
-/* * 1.0.5 - 10/07/2002 - G.Juyn * */
-/* * - added another fix for misplaced TERM chunk * */
-/* * - completed support for condition=2 in TERM chunk * */
-/* * 1.0.5 - 10/20/2002 - G.Juyn * */
-/* * - fixed processing for multiple objects in MAGN * */
-/* * - fixed display of visible target of PAST operation * */
-/* * 1.0.5 - 11/07/2002 - G.Juyn * */
-/* * - added support to get totals after mng_read() * */
-/* * 1.0.5 - 24/02/2003 - G.Juyn * */
-/* * - B683152 - libjpeg suspension not always honored correctly* */
-/* * * */
-/* * 1.0.6 - 04/11/2003 - G.Juyn * */
-/* * - B719420 - fixed several MNG_APP_CMS problems * */
-/* * 1.0.6 - 07/05/2003 - G. R-P * */
-/* * - optionally use zlib's crc32() function * */
-/* * 1.0.6 - 07/29/2003 - G.R-P * */
-/* * - added SKIPCHUNK conditionals around PAST chunk support * */
-/* * 1.0.6 - 08/17/2003 - G.R-P * */
-/* * - added iPNGdepth member to pData structure * */
-/* * * */
-/* * 1.0.7 - 03/10/2004 - G.R-P * */
-/* * - added conditionals around openstream/closestream * */
-/* * 1.0.7 - 03/24/2004 - G.R-P * */
-/* * - added more SKIPCHUNK conditionals * */
-/* * * */
-/* * 1.0.8 - 04/02/2004 - G.Juyn * */
-/* * - added CRC existence & checking flags * */
-/* * 1.0.8 - 04/10/2004 - G.Juyn * */
-/* * - added data-push mechanisms for specialized decoders * */
-/* * * */
-/* * 1.0.9 - 12/11/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_DISPLAYCALLS * */
-/* * * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * 1.0.10 - 04/12/2007 - G.Juyn * */
-/* * - added support for ANG proposal * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_data_h_
-#define _libmng_data_h_
-
-/* ************************************************************************** */
-
-#define MNG_MAGIC 0x52530a0aL
-
-/* ************************************************************************** */
-/* * * */
-/* * Internal structures * */
-/* * * */
-/* ************************************************************************** */
-
-typedef mng_palette8 mng_rgbpaltab;
-
-/* ************************************************************************** */
-/* * * */
-/* * The saved_data structure * */
-/* * * */
-/* * This contains the saved data after a SAVE chunk has been processed. * */
-/* * The data is saved from the main data structure during SAVE processing, * */
-/* * and restored to the main data structure during SEEK processing. * */
-/* * * */
-/* ************************************************************************** */
-
-typedef struct mng_savedata_struct {
-
-#if defined(MNG_SUPPORT_READ) || defined(MNG_SUPPORT_WRITE)
- mng_bool bHasglobalPLTE; /* global PLTE chunk processed */
- mng_bool bHasglobalTRNS; /* global tRNS chunk processed */
- mng_bool bHasglobalGAMA; /* global gAMA chunk processed */
- mng_bool bHasglobalCHRM; /* global cHRM chunk processed */
- mng_bool bHasglobalSRGB; /* global sRGB chunk processed */
- mng_bool bHasglobalICCP; /* global iCCP chunk processed */
- mng_bool bHasglobalBKGD; /* global bKGD chunk processed */
-#endif /* MNG_SUPPORT_READ || MNG_SUPPORT_WRITE */
-
-#ifdef MNG_SUPPORT_DISPLAY
- mng_uint16 iBACKred; /* BACK fields */
- mng_uint16 iBACKgreen;
- mng_uint16 iBACKblue;
- mng_uint8 iBACKmandatory;
- mng_uint16 iBACKimageid;
- mng_uint8 iBACKtile;
-
- mng_uint8 iFRAMmode; /* FRAM fields (global) */
- mng_uint32 iFRAMdelay;
- mng_uint32 iFRAMtimeout;
- mng_bool bFRAMclipping;
- mng_int32 iFRAMclipl;
- mng_int32 iFRAMclipr;
- mng_int32 iFRAMclipt;
- mng_int32 iFRAMclipb;
-
- mng_uint32 iGlobalPLTEcount; /* global PLTE fields */
- mng_rgbpaltab aGlobalPLTEentries;
-
- mng_uint32 iGlobalTRNSrawlen; /* global tRNS fields */
- mng_uint8arr aGlobalTRNSrawdata;
-
- mng_uint32 iGlobalGamma; /* global gAMA fields */
-
-#ifndef MNG_SKIPCHUNK_cHRM
- mng_uint32 iGlobalWhitepointx; /* global cHRM fields */
- mng_uint32 iGlobalWhitepointy;
- mng_uint32 iGlobalPrimaryredx;
- mng_uint32 iGlobalPrimaryredy;
- mng_uint32 iGlobalPrimarygreenx;
- mng_uint32 iGlobalPrimarygreeny;
- mng_uint32 iGlobalPrimarybluex;
- mng_uint32 iGlobalPrimarybluey;
-#endif
-
- mng_uint8 iGlobalRendintent; /* global sRGB fields */
-
- mng_uint32 iGlobalProfilesize; /* global iCCP fields */
- mng_ptr pGlobalProfile;
-
- mng_uint16 iGlobalBKGDred; /* global bKGD fields */
- mng_uint16 iGlobalBKGDgreen;
- mng_uint16 iGlobalBKGDblue;
-#endif /* MNG_SUPPORT_DISPLAY */
-
- } mng_savedata;
-
-typedef mng_savedata * mng_savedatap;
-
-/* ************************************************************************** */
-/* * * */
-/* * Internal buffer structure for data push mechanisms * */
-/* * * */
-/* ************************************************************************** */
-
-typedef struct {
- mng_ptr pNext; /* for linked list */
- mng_ptr pData; /* used for chunks & data */
- mng_uint32 iLength;
- mng_bool bOwned;
- mng_uint8p pDatanext; /* only used for data */
- mng_uint32 iRemaining;
- } mng_pushdata;
-typedef mng_pushdata * mng_pushdatap;
-
-/* ************************************************************************** */
-/* * * */
-/* * The main libmng data structure * */
-/* * * */
-/* * The handle used in all functions points to this structure which * */
-/* * contains all volatile data necessary to process the network graphic. * */
-/* * * */
-/* ************************************************************************** */
-
-typedef struct mng_data_struct {
-
- mng_uint32 iMagic; /* magic number to validate
- a given handle */
- mng_ptr pUserdata; /* application workdata */
-
- mng_imgtype eSigtype; /* image information */
- mng_imgtype eImagetype; /* initially zeroed */
- mng_uint32 iWidth; /* filled after header is processed */
- mng_uint32 iHeight;
- mng_uint32 iTicks; /* these only after MHDR */
- mng_uint32 iLayercount;
- mng_uint32 iFramecount;
- mng_uint32 iPlaytime;
- mng_uint32 iSimplicity;
- mng_uint8 iAlphadepth; /* indicates expected alpha-depth */
-
- mng_uint32 iImagelevel; /* level of image inside a stream */
-
- mng_uint32 iCanvasstyle; /* layout of the drawing-canvas */
- mng_uint32 iBkgdstyle; /* layout of the background-canvas */
-
- mng_int8 iMagnify; /* magnification factor (not used yet) */
- mng_uint32 iOffsetx; /* x-offset for extremely large image */
- mng_uint32 iOffsety; /* y-offset for extremely large image */
- mng_uint32 iCanvaswidth; /* real canvas size */
- mng_uint32 iCanvasheight; /* must be set by processheader callback */
-
- mng_uint16 iBGred; /* default background color */
- mng_uint16 iBGgreen; /* initially "black" */
- mng_uint16 iBGblue;
- mng_bool bUseBKGD; /* preferred use of bKGD for PNG */
-
- mng_bool bIssRGB; /* indicates sRGB system */
-
-#ifdef MNG_FULL_CMS /* little CMS variables */
- mng_cmsprof hProf1; /* image input profile */
- mng_cmsprof hProf2; /* default output profile */
- mng_cmsprof hProf3; /* default sRGB profile */
- mng_cmstrans hTrans; /* current transformation handle */
-#endif
-
- mng_float dViewgamma; /* gamma calculation variables */
- mng_float dDisplaygamma; /* initially set for sRGB conditions */
- mng_float dDfltimggamma;
-
- mng_bool bStorechunks; /* switch for storing chunkdata */
- mng_bool bSectionbreaks; /* indicate NEEDSECTIONWAIT breaks */
- mng_bool bCacheplayback; /* switch to cache playback info */
- mng_bool bDoProgressive; /* progressive refresh for large images */
- mng_uint32 iCrcmode; /* CRC existence & checking flags */
-
- mng_speedtype iSpeed; /* speed-modifier for animations */
-
- mng_uint32 iMaxwidth; /* maximum canvas size */
- mng_uint32 iMaxheight; /* initially set to 1024 x 1024 */
-
- mng_int32 iErrorcode; /* error reporting fields */
- mng_int8 iSeverity;
- mng_int32 iErrorx1;
- mng_int32 iErrorx2;
- mng_pchar zErrortext;
-
- mng_memalloc fMemalloc; /* callback pointers */
- mng_memfree fMemfree; /* initially nulled */
- mng_releasedata fReleasedata;
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
- mng_openstream fOpenstream;
- mng_closestream fClosestream;
-#endif
- mng_readdata fReaddata;
- mng_writedata fWritedata;
- mng_errorproc fErrorproc;
- mng_traceproc fTraceproc;
- mng_processheader fProcessheader;
- mng_processtext fProcesstext;
- mng_processsave fProcesssave;
- mng_processseek fProcessseek;
- mng_processneed fProcessneed;
- mng_processmend fProcessmend;
- mng_processunknown fProcessunknown;
- mng_processterm fProcessterm;
- mng_getcanvasline fGetcanvasline;
- mng_getbkgdline fGetbkgdline;
- mng_getalphaline fGetalphaline;
- mng_refresh fRefresh;
- mng_gettickcount fGettickcount;
- mng_settimer fSettimer;
- mng_processgamma fProcessgamma;
- mng_processchroma fProcesschroma;
- mng_processsrgb fProcesssrgb;
- mng_processiccp fProcessiccp;
- mng_processarow fProcessarow;
-
-#if defined(MNG_SUPPORT_READ) || defined(MNG_SUPPORT_WRITE)
-#ifndef MNG_NO_OLD_VERSIONS
- mng_bool bPreDraft48; /* flags ancient style draft */
-#endif
-
- mng_chunkid iChunkname; /* read/write-state variables */
- mng_uint32 iChunkseq;
- mng_chunkp pFirstchunk; /* double-linked list of */
- mng_chunkp pLastchunk; /* stored chunk-structures */
-
- mng_bool bHasheader; /* first header chunk processed */
- mng_bool bHasMHDR; /* inside a MHDR-MEND sequence */
- mng_bool bHasIHDR; /* inside a IHDR-IEND sequence */
- mng_bool bHasBASI; /* inside a BASI-IEND sequence */
- mng_bool bHasDHDR; /* inside a DHDR-IEND sequence */
-#ifdef MNG_INCLUDE_JNG
- mng_bool bHasJHDR; /* inside a JHDR-IEND sequence */
- mng_bool bHasJSEP; /* passed the JSEP separator */
- mng_bool bHasJDAA; /* at least 1 JDAA processed */
- mng_bool bHasJDAT; /* at least 1 JDAT processed */
-#endif
- mng_bool bHasPLTE; /* PLTE chunk processed */
- mng_bool bHasTRNS; /* tRNS chunk processed */
- mng_bool bHasGAMA; /* gAMA chunk processed */
- mng_bool bHasCHRM; /* cHRM chunk processed */
- mng_bool bHasSRGB; /* sRGB chunk processed */
- mng_bool bHasICCP; /* iCCP chunk processed */
- mng_bool bHasBKGD; /* bKGD chunk processed */
- mng_bool bHasIDAT; /* at least 1 IDAT processed */
-
- mng_bool bHasSAVE; /* SAVE chunk processed */
- mng_bool bHasBACK; /* BACK chunk processed */
- mng_bool bHasFRAM; /* FRAM chunk processed */
- mng_bool bHasTERM; /* TERM chunk processed */
- mng_bool bHasLOOP; /* at least 1 LOOP open */
-
- mng_bool bHasglobalPLTE; /* global PLTE chunk processed */
- mng_bool bHasglobalTRNS; /* global tRNS chunk processed */
- mng_bool bHasglobalGAMA; /* global gAMA chunk processed */
- mng_bool bHasglobalCHRM; /* global cHRM chunk processed */
- mng_bool bHasglobalSRGB; /* global sRGB chunk processed */
- mng_bool bHasglobalICCP; /* global iCCP chunk processed */
- mng_bool bHasglobalBKGD; /* global bKGD chunk processed */
-
- mng_uint32 iDatawidth; /* IHDR/BASI/DHDR fields */
- mng_uint32 iDataheight; /* valid if inside IHDR-IEND, */
- mng_uint8 iBitdepth; /* BASI-IEND or DHDR-IEND */
- mng_uint8 iColortype;
- mng_uint8 iCompression;
- mng_uint8 iFilter;
- mng_uint8 iInterlace;
-
- mng_uint32 iPLTEcount; /* PLTE fields */
-
-#ifdef MNG_INCLUDE_JNG
- mng_uint8 iJHDRcolortype; /* JHDR fields */
- mng_uint8 iJHDRimgbitdepth; /* valid if inside JHDR-IEND */
- mng_uint8 iJHDRimgcompression;
- mng_uint8 iJHDRimginterlace;
- mng_uint8 iJHDRalphabitdepth;
- mng_uint8 iJHDRalphacompression;
- mng_uint8 iJHDRalphafilter;
- mng_uint8 iJHDRalphainterlace;
-#endif
-
-#endif /* MNG_SUPPORT_READ || MNG_SUPPORT_WRITE */
-
-#ifdef MNG_SUPPORT_READ
- mng_bool bReading; /* read processing variables */
- mng_bool bHavesig;
- mng_bool bEOF;
- mng_uint32 iReadbufsize;
- mng_uint8p pReadbuf;
-
- mng_uint32 iLargebufsize; /* temp for very large chunks */
- mng_uint8p pLargebuf;
-
- mng_uint32 iSuspendtime; /* tickcount at last suspension */
- mng_bool bSuspended; /* input-reading has been suspended;
- we're expecting a call to
- mng_read_resume! */
- mng_uint8 iSuspendpoint; /* indicates at which point the flow
- was broken to suspend input-reading */
-
- mng_bool bSuspensionmode; /* I/O-suspension variables */
- mng_uint32 iSuspendbufsize;
- mng_uint8p pSuspendbuf;
- mng_uint8p pSuspendbufnext;
- mng_uint32 iSuspendbufleft;
- mng_uint32 iChunklen; /* chunk length */
- mng_uint8p pReadbufnext; /* 32K+ suspension-processing */
- mng_uint8p pLargebufnext;
-
- mng_pushdatap pFirstpushchunk; /* variables for push mechanisms */
- mng_pushdatap pLastpushchunk;
- mng_pushdatap pFirstpushdata;
- mng_pushdatap pLastpushdata;
-#endif /* MNG_SUPPORT_READ */
-
-#ifdef MNG_SUPPORT_WRITE
- mng_bool bCreating; /* create/write processing variables */
- mng_bool bWriting;
- mng_chunkid iFirstchunkadded;
- mng_uint32 iWritebufsize;
- mng_uint8p pWritebuf;
-#endif
-
-#ifdef MNG_SUPPORT_DISPLAY
- mng_bool bDisplaying; /* display-state variables */
- mng_bool bFramedone;
- mng_uint32 iFrameseq;
- mng_uint32 iLayerseq;
- mng_uint32 iFrametime; /* millisecs */
-
- mng_uint32 iTotalframes; /* end-totals after mng_read() */
- mng_uint32 iTotallayers;
- mng_uint32 iTotalplaytime; /* millisecs */
-
- mng_bool bSkipping; /* LOOP iteration=0 */
-
-#ifdef MNG_SUPPORT_DYNAMICMNG
- mng_bool bDynamic; /* MNG is dynamic (eg. has events) */
- mng_bool bRunningevent; /* currently processing an event */
- mng_bool bStopafterseek; /* stop after next SEEK */
- mng_int32 iEventx; /* X/Y of current event */
- mng_int32 iEventy;
- mng_objectp pLastmousemove; /* last event triggered */
-#endif
-
- mng_uint32 iRequestframe; /* go_xxxx variables */
- mng_uint32 iRequestlayer;
- mng_uint32 iRequesttime;
- mng_bool bSearching;
-
- mng_bool bRestorebkgd; /* flags restore required before IDAT/JDAT */
-
- mng_uint32 iRuntime; /* millisecs since start */
- mng_uint32 iSynctime; /* tickcount at last framesync */
- mng_uint32 iStarttime; /* tickcount at start */
- mng_uint32 iEndtime; /* tickcount at end */
- mng_bool bRunning; /* animation is active */
- mng_bool bTimerset; /* the timer has been set;
- we're expecting a call to
- mng_display_resume! */
- mng_uint8 iBreakpoint; /* indicates at which point the
- flow was broken to run the timer */
- mng_bool bSectionwait; /* indicates a section break */
- mng_bool bFreezing; /* indicates app requested a freeze */
- mng_bool bResetting; /* indicates app requested a reset */
- mng_bool bNeedrefresh; /* indicates screen-refresh is needed */
- mng_bool bMisplacedTERM; /* indicates TERM is out of place */
- mng_bool bOnlyfirstframe; /* show first frame after TERM and stop */
- mng_uint32 iFramesafterTERM; /* determines frame-count after TERM */
- mng_objectp pCurrentobj; /* current "object" */
- mng_objectp pCurraniobj; /* current animation object
- "to be"/"being" processed */
- mng_objectp pTermaniobj; /* TERM animation object */
- mng_uint32 iIterations; /* TERM/MEND iteration count */
- mng_objectp pObjzero; /* "on-the-fly" image (object = 0) */
- mng_objectp pLastclone; /* last clone */
- mng_objectp pStoreobj; /* current store object for row routines */
- mng_objectp pStorebuf; /* current store object-buffer for row routines */
- mng_objectp pRetrieveobj; /* current retrieve object for row routines */
- mng_savedatap pSavedata; /* pointer to saved data (after SAVE) */
-
- mng_uint32 iUpdateleft; /* update region for refresh */
- mng_uint32 iUpdateright;
- mng_uint32 iUpdatetop;
- mng_uint32 iUpdatebottom;
-
- mng_int8 iPass; /* current interlacing pass;
- negative value means no interlace */
- mng_int32 iRow; /* current row counter */
- mng_int32 iRowinc; /* row increment for this pass */
- mng_int32 iCol; /* current starting column */
- mng_int32 iColinc; /* column increment for this pass */
- mng_int32 iRowsamples; /* nr. of samples in current workrow */
- mng_int32 iSamplemul; /* needed to calculate rowsize */
- mng_int32 iSampleofs; /* from rowsamples */
- mng_int32 iSamplediv;
- mng_int32 iRowsize; /* size of actual data in work row */
- mng_int32 iRowmax; /* maximum size of data in work row */
- mng_int32 iFilterofs; /* offset to filter-byte in work row */
- mng_int32 iPixelofs; /* offset to pixel-bytes in work row */
- mng_uint32 iLevel0; /* leveling variables */
- mng_uint32 iLevel1;
- mng_uint32 iLevel2;
- mng_uint32 iLevel3;
- mng_uint8p pWorkrow; /* working row of pixel-data */
- mng_uint8p pPrevrow; /* previous row of pixel-data */
- mng_uint8p pRGBArow; /* intermediate row of RGBA8 or RGBA16 data */
- mng_bool bIsRGBA16; /* indicates intermediate row is RGBA16 */
- mng_bool bIsOpaque; /* indicates intermediate row is fully opaque */
- mng_int32 iFilterbpp; /* bpp index for filtering routines */
-
- mng_int32 iSourcel; /* variables for showing objects */
- mng_int32 iSourcer;
- mng_int32 iSourcet;
- mng_int32 iSourceb;
- mng_int32 iDestl;
- mng_int32 iDestr;
- mng_int32 iDestt;
- mng_int32 iDestb;
-
- mng_objectp pFirstimgobj; /* double-linked list of */
- mng_objectp pLastimgobj; /* image-object structures */
- mng_objectp pFirstaniobj; /* double-linked list of */
- mng_objectp pLastaniobj; /* animation-object structures */
-#ifdef MNG_SUPPORT_DYNAMICMNG
- mng_objectp pFirstevent; /* double-linked list of */
- mng_objectp pLastevent; /* event-object structures */
-#endif
-
-#if defined(MNG_GAMMA_ONLY) || defined(MNG_FULL_CMS) || defined(MNG_APP_CMS)
- mng_uint8 aGammatab[256]; /* precomputed gamma lookup table */
- mng_float dLastgamma; /* last gamma used to compute table */
-#endif
-
- mng_fptr fDisplayrow; /* internal callback to display an
- uncompressed/unfiltered/
- color-corrected row */
- mng_fptr fRestbkgdrow; /* internal callback for restore-
- background processing of a row */
- mng_fptr fCorrectrow; /* internal callback to color-correct an
- uncompressed/unfiltered row */
- mng_fptr fRetrieverow; /* internal callback to retrieve an
- uncompressed/unfiltered row of data */
- mng_fptr fStorerow; /* internal callback to store an
- uncompressed/unfiltered row of data */
- mng_fptr fProcessrow; /* internal callback to process an
- uncompressed row of data */
- mng_fptr fDifferrow; /* internal callback to perform
- added filter leveling and
- differing on an unfiltered row */
- mng_fptr fScalerow; /* internal callback to scale a
- delta-row to the bitdepth of its target */
- mng_fptr fDeltarow; /* internal callback to execute a
- delta-row onto a target */
-#ifndef MNG_SKIPCHUNK_PAST
- mng_fptr fFliprow; /* internal callback to flip a row of pixels
- left<->right for a PAST operation */
- mng_fptr fTilerow; /* internal callback to tile a row of pixels
- during a PAST operation */
-#endif
- mng_fptr fInitrowproc; /* internal callback to initialize
- the row processing */
-
- mng_uint16 iDEFIobjectid; /* DEFI fields */
- mng_bool bDEFIhasdonotshow;
- mng_uint8 iDEFIdonotshow;
- mng_bool bDEFIhasconcrete;
- mng_uint8 iDEFIconcrete;
- mng_bool bDEFIhasloca;
- mng_int32 iDEFIlocax;
- mng_int32 iDEFIlocay;
- mng_bool bDEFIhasclip;
- mng_int32 iDEFIclipl;
- mng_int32 iDEFIclipr;
- mng_int32 iDEFIclipt;
- mng_int32 iDEFIclipb;
-
- mng_uint16 iBACKred; /* BACK fields */
- mng_uint16 iBACKgreen;
- mng_uint16 iBACKblue;
- mng_uint8 iBACKmandatory;
- mng_uint16 iBACKimageid;
- mng_uint8 iBACKtile;
-
- mng_int32 iBackimgoffsx; /* temp variables for restore_bkgd */
- mng_int32 iBackimgoffsy;
- mng_uint32 iBackimgwidth;
- mng_uint32 iBackimgheight;
-
-#ifndef MNG_SKIPCHUNK_FRAM
- mng_uint8 iFRAMmode; /* FRAM fields (global) */
- mng_uint32 iFRAMdelay;
- mng_uint32 iFRAMtimeout;
- mng_bool bFRAMclipping;
- mng_int32 iFRAMclipl;
- mng_int32 iFRAMclipr;
- mng_int32 iFRAMclipt;
- mng_int32 iFRAMclipb;
-
- mng_uint8 iFramemode; /* current subframe variables */
- mng_uint32 iFramedelay;
- mng_uint32 iFrametimeout;
- mng_bool bFrameclipping;
- mng_int32 iFrameclipl;
- mng_int32 iFrameclipr;
- mng_int32 iFrameclipt;
- mng_int32 iFrameclipb;
-
- mng_uint32 iNextdelay; /* delay *after* next image */
-
- mng_bool bForcedelay;
- mng_uint32 iAccumdelay;
-#endif
-
-#ifndef MNG_SKIPCHUNK_SHOW
- mng_uint8 iSHOWmode; /* SHOW fields */
- mng_uint16 iSHOWfromid;
- mng_uint16 iSHOWtoid;
- mng_uint16 iSHOWnextid;
- mng_int16 iSHOWskip;
-#endif
-
- mng_uint32 iGlobalPLTEcount; /* global PLTE fields */
- mng_rgbpaltab aGlobalPLTEentries;
-
- mng_uint32 iGlobalTRNSrawlen; /* global tRNS fields */
- mng_uint8arr aGlobalTRNSrawdata;
-
- mng_uint32 iGlobalGamma; /* global gAMA fields */
-
-#ifndef MNG_SKIPCHUNK_cHRM
- mng_uint32 iGlobalWhitepointx; /* global cHRM fields */
- mng_uint32 iGlobalWhitepointy;
- mng_uint32 iGlobalPrimaryredx;
- mng_uint32 iGlobalPrimaryredy;
- mng_uint32 iGlobalPrimarygreenx;
- mng_uint32 iGlobalPrimarygreeny;
- mng_uint32 iGlobalPrimarybluex;
- mng_uint32 iGlobalPrimarybluey;
-#endif
-
- mng_uint8 iGlobalRendintent; /* global sRGB fields */
-
-#ifndef MNG_SKIPCHUNK_iCCP
- mng_uint32 iGlobalProfilesize; /* global iCCP fields */
- mng_ptr pGlobalProfile;
-#endif
-
- mng_uint16 iGlobalBKGDred; /* global bKGD fields */
- mng_uint16 iGlobalBKGDgreen;
- mng_uint16 iGlobalBKGDblue;
-
- mng_ptr pDeltaImage; /* delta-image fields */
- mng_uint8 iDeltaImagetype;
-#endif /* MNG_SUPPORT_DISPLAY */
- mng_uint8 iDeltatype; /* need this one in read processing !! */
-#ifdef MNG_SUPPORT_DISPLAY
- mng_uint32 iDeltaBlockwidth;
- mng_uint32 iDeltaBlockheight;
- mng_uint32 iDeltaBlockx;
- mng_uint32 iDeltaBlocky;
- mng_bool bDeltaimmediate;
-
- mng_fptr fDeltagetrow; /* internal delta-proc callbacks */
- mng_fptr fDeltaaddrow;
- mng_fptr fDeltareplacerow;
- mng_fptr fDeltaputrow;
-
-#ifndef MNG_SKIPCHUNK_PROM
- mng_fptr fPromoterow; /* internal PROM fields */
- mng_fptr fPromBitdepth;
- mng_ptr pPromBuf;
- mng_uint8 iPromColortype;
- mng_uint8 iPromBitdepth;
- mng_uint8 iPromFilltype;
- mng_uint32 iPromWidth;
- mng_ptr pPromSrc;
- mng_ptr pPromDst;
-#endif
-
-#ifndef MNG_SKIPCHUNK_MAGN
- mng_uint16 iMAGNfromid;
- mng_uint16 iMAGNcurrentid;
- mng_uint16 iMAGNtoid;
-#endif
-
-#ifndef MNG_SKIPCHUNK_PAST
- mng_uint16 iPASTid;
- mng_int32 iPastx; /* target x/y of last PAST */
- mng_int32 iPasty;
-#endif
-
- mng_objectp pLastseek; /* last processed ani_seek object */
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- mng_objectp pMPNG; /* mpNG object if available */
-#endif
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
- mng_objectp pANG; /* ANG object if available */
-#endif
-
-#endif /* MNG_SUPPORT_DISPLAY */
-
-#ifdef MNG_INCLUDE_ZLIB
- z_stream sZlib; /* zlib (de)compression variables */
-
- mng_int32 iZlevel; /* zlib compression parameters */
- mng_int32 iZmethod;
- mng_int32 iZwindowbits;
- mng_int32 iZmemlevel;
- mng_int32 iZstrategy;
-
- mng_uint32 iMaxIDAT; /* maximum size of IDAT data */
-
- mng_bool bInflating; /* indicates "inflate" in progress */
- mng_bool bDeflating; /* indicates "deflate" in progress */
-#endif /* MNG_INCLUDE_ZLIB */
-
-#ifdef MNG_INCLUDE_JNG
- mngjpeg_dctmethod eJPEGdctmethod; /* IJG compression variables */
- mng_int32 iJPEGquality;
- mng_int32 iJPEGsmoothing;
- mng_bool bJPEGcompressprogr;
- mng_bool bJPEGcompressopt;
-
- mng_uint32 iMaxJDAT; /* maximum size of JDAT/JDAA data */
-
- mngjpeg_compp pJPEGcinfo; /* compression structure */
- mngjpeg_errorp pJPEGcerr; /* error-manager compress */
-
- mngjpeg_decompp pJPEGdinfo; /* decompression structure (JDAT) */
- mngjpeg_errorp pJPEGderr; /* error-manager decompress (JDAT) */
- mngjpeg_sourcep pJPEGdsrc; /* source-manager decompress (JDAT) */
-
- mngjpeg_decompp pJPEGdinfo2; /* decompression structure (JDAA) */
- mngjpeg_errorp pJPEGderr2; /* error-manager decompress (JDAA) */
- mngjpeg_sourcep pJPEGdsrc2; /* source-manager decompress (JDAA) */
-
- mng_uint8p pJPEGbuf; /* buffer for JPEG (de)compression (JDAT) */
- mng_uint32 iJPEGbufmax; /* allocated space for buffer (JDAT) */
- mng_uint8p pJPEGcurrent; /* current pointer into buffer (JDAT) */
- mng_uint32 iJPEGbufremain; /* remaining bytes in buffer (JDAT) */
- mng_uint32 iJPEGtoskip; /* bytes to skip on next input-block (JDAT) */
-
- mng_uint8p pJPEGbuf2; /* buffer for JPEG (de)compression (JDAA) */
- mng_uint32 iJPEGbufmax2; /* allocated space for buffer (JDAA) */
- mng_uint8p pJPEGcurrent2; /* current pointer into buffer (JDAA) */
- mng_uint32 iJPEGbufremain2; /* remaining bytes in buffer (JDAA) */
- mng_uint32 iJPEGtoskip2; /* bytes to skip on next input-block (JDAA) */
-
- mng_uint8p pJPEGrow; /* buffer for a JPEG row of samples (JDAT) */
- mng_uint32 iJPEGrowlen;
-
- mng_uint8p pJPEGrow2; /* buffer for a JPEG row of samples (JDAA) */
- mng_uint32 iJPEGrowlen2;
-
- mng_bool bJPEGcompress; /* indicates "compress" initialized */
-
- mng_bool bJPEGdecompress; /* indicates "decompress" initialized (JDAT) */
- mng_bool bJPEGhasheader; /* indicates "readheader" succeeded (JDAT) */
- mng_bool bJPEGdecostarted; /* indicates "decompress" started (JDAT) */
- mng_bool bJPEGscanstarted; /* indicates "first scan" started (JDAT) */
- mng_bool bJPEGscanending; /* indicates "finish_output" suspended (JDAT) */
- mng_bool bJPEGprogressive; /* indicates a progressive image (JDAT) */
-
- mng_bool bJPEGdecompress2; /* indicates "decompress" initialized (JDAA) */
- mng_bool bJPEGhasheader2; /* indicates "readheader" succeeded (JDAA) */
- mng_bool bJPEGdecostarted2; /* indicates "decompress" started (JDAA) */
- mng_bool bJPEGscanstarted2; /* indicates "first scan" started (JDAA) */
- mng_bool bJPEGprogressive2; /* indicates a progressive image (JDAA) */
-
- mng_fptr fStorerow2; /* internal callback to store an
- uncompressed/unfiltered row of JPEG-data (JDAT) */
-
- mng_fptr fStorerow3; /* internal callback to store an
- uncompressed/unfiltered row of JPEG-data (JDAA) */
-
- mng_uint32 iJPEGrow; /* row-number for current JPEG row */
- mng_uint32 iJPEGalpharow; /* nr. of rows filled with alpha */
- mng_uint32 iJPEGrgbrow; /* nr. of rows filled with 'color'-info */
- mng_uint32 iJPEGdisprow; /* nr. of rows already displayed "on-the-fly" */
-
-#if defined(MNG_USE_SETJMP) && defined (MNG_INCLUDE_IJG6B)
- jmp_buf sErrorbuf; /* setjmp/longjmp buffer (error-recovery) */
-#endif
-
-#endif /* MNG_INCLUDE_JNG */
-
-#ifndef MNG_USE_ZLIB_CRC
- mng_uint32 aCRCtable [256]; /* CRC prefab table */
- mng_bool bCRCcomputed; /* "has been built" indicator */
-#endif
-
-#ifdef MNG_OPTIMIZE_FOOTPRINT_INIT
- png_imgtype ePng_imgtype;
-#endif
-
-#if defined(MNG_NO_1_2_4BIT_SUPPORT) || defined(MNG_NO_16BIT_SUPPORT)
- mng_uint8 iPNGdepth; /* Real input depth */
- mng_uint8 iPNGmult;
-#endif
-
-#ifdef MNG_OPTIMIZE_DISPLAYCALLS
- mng_uint32 iRawlen; /* temp vars for display processing */
- mng_uint8p pRawdata;
-#ifndef MNG_SKIPCHUNK_BASI
- mng_uint16 iBASIred;
- mng_uint16 iBASIgreen;
- mng_uint16 iBASIblue;
- mng_bool bBASIhasalpha;
- mng_uint16 iBASIalpha;
- mng_uint8 iBASIviewable;
-#endif
-#ifndef MNG_SKIPCHUNK_CLON
- mng_uint16 iCLONsourceid;
- mng_uint16 iCLONcloneid;
- mng_uint8 iCLONclonetype;
- mng_bool bCLONhasdonotshow;
- mng_uint8 iCLONdonotshow;
- mng_uint8 iCLONconcrete;
- mng_bool bCLONhasloca;
- mng_uint8 iCLONlocationtype;
- mng_int32 iCLONlocationx;
- mng_int32 iCLONlocationy;
-#endif
-#ifndef MNG_SKIPCHUNK_DISC
- mng_uint32 iDISCcount;
- mng_uint16p pDISCids;
-#endif
-#ifndef MNG_SKIPCHUNK_FRAM
- mng_uint8 iTempFramemode;
- mng_uint8 iTempChangedelay;
- mng_uint32 iTempDelay;
- mng_uint8 iTempChangetimeout;
- mng_uint32 iTempTimeout;
- mng_uint8 iTempChangeclipping;
- mng_uint8 iTempCliptype;
- mng_int32 iTempClipl;
- mng_int32 iTempClipr;
- mng_int32 iTempClipt;
- mng_int32 iTempClipb;
-#endif
-#ifndef MNG_SKIPCHUNK_MOVE
- mng_uint16 iMOVEfromid;
- mng_uint16 iMOVEtoid;
- mng_uint8 iMOVEmovetype;
- mng_int32 iMOVEmovex;
- mng_int32 iMOVEmovey;
-#endif
-#ifndef MNG_SKIPCHUNK_CLIP
- mng_uint16 iCLIPfromid;
- mng_uint16 iCLIPtoid;
- mng_uint8 iCLIPcliptype;
- mng_int32 iCLIPclipl;
- mng_int32 iCLIPclipr;
- mng_int32 iCLIPclipt;
- mng_int32 iCLIPclipb;
-#endif
-#ifndef MNG_NO_DELTA_PNG
- mng_uint16 iDHDRobjectid;
- mng_uint8 iDHDRimagetype;
- mng_uint8 iDHDRdeltatype;
- mng_uint32 iDHDRblockwidth;
- mng_uint32 iDHDRblockheight;
- mng_uint32 iDHDRblockx;
- mng_uint32 iDHDRblocky;
- mng_uint8 iPROMbitdepth;
- mng_uint8 iPROMcolortype;
- mng_uint8 iPROMfilltype;
- mng_uint8 iPPLTtype;
- mng_uint32 iPPLTcount;
- mng_palette8ep paPPLTindexentries;
- mng_uint8p paPPLTalphaentries;
- mng_uint8p paPPLTusedentries;
-#endif
-#ifndef MNG_SKIPCHUNK_MAGN
- mng_uint16 iMAGNfirstid;
- mng_uint16 iMAGNlastid;
- mng_uint8 iMAGNmethodX;
- mng_uint16 iMAGNmX;
- mng_uint16 iMAGNmY;
- mng_uint16 iMAGNmL;
- mng_uint16 iMAGNmR;
- mng_uint16 iMAGNmT;
- mng_uint16 iMAGNmB;
- mng_uint8 iMAGNmethodY;
-#endif
-#ifndef MNG_SKIPCHUNK_PAST
- mng_uint16 iPASTtargetid;
- mng_uint8 iPASTtargettype;
- mng_int32 iPASTtargetx;
- mng_int32 iPASTtargety;
- mng_uint32 iPASTcount;
- mng_ptr pPASTsources;
-#endif
-#endif /* MNG_OPTIMIZE_DISPLAYCALLS */
-
- } mng_data;
-
-typedef mng_data * mng_datap;
-
-/* ************************************************************************** */
-/* * * */
-/* * Internal Callback-Function prototypes * */
-/* * * */
-/* ************************************************************************** */
-
-typedef mng_retcode(*mng_displayrow) (mng_datap pData);
-typedef mng_retcode(*mng_restbkgdrow) (mng_datap pData);
-typedef mng_retcode(*mng_correctrow) (mng_datap pData);
-typedef mng_retcode(*mng_retrieverow) (mng_datap pData);
-typedef mng_retcode(*mng_storerow) (mng_datap pData);
-typedef mng_retcode(*mng_processrow) (mng_datap pData);
-typedef mng_retcode(*mng_initrowproc) (mng_datap pData);
-typedef mng_retcode(*mng_differrow) (mng_datap pData);
-typedef mng_retcode(*mng_scalerow) (mng_datap pData);
-typedef mng_retcode(*mng_deltarow) (mng_datap pData);
-typedef mng_retcode(*mng_promoterow) (mng_datap pData);
-typedef mng_retcode(*mng_fliprow) (mng_datap pData);
-typedef mng_retcode(*mng_tilerow) (mng_datap pData);
-
-typedef mng_uint8 (*mng_bitdepth_8) (mng_uint8 iB);
-typedef mng_uint16 (*mng_bitdepth_16) (mng_uint8 iB);
-
-typedef mng_retcode(*mng_magnify_x) (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p iSrcline,
- mng_uint8p iDstline);
-typedef mng_retcode(*mng_magnify_y) (mng_datap pData,
- mng_int32 iM,
- mng_int32 iS,
- mng_uint32 iWidth,
- mng_uint8p iSrcline1,
- mng_uint8p iSrcline2,
- mng_uint8p iDstline);
-
-/* ************************************************************************** */
-/* * * */
-/* * Routines for swapping byte-order from and to graphic files * */
-/* * (This code is adapted from the libpng package) * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_BIGENDIAN_SUPPORTED
-mng_uint32 mng_get_uint32 (mng_uint8p pBuf);
-mng_int32 mng_get_int32 (mng_uint8p pBuf);
-mng_uint16 mng_get_uint16 (mng_uint8p pBuf);
-void mng_put_uint32 (mng_uint8p pBuf,
- mng_uint32 i);
-void mng_put_int32 (mng_uint8p pBuf,
- mng_int32 i);
-void mng_put_uint16 (mng_uint8p pBuf,
- mng_uint16 i);
-#else /* MNG_BIGENDIAN_SUPPORTED */
-#define mng_get_uint32(P) *(mng_uint32p)(P)
-#define mng_get_int32(P) *(mng_int32p)(P)
-#define mng_get_uint16(P) *(mng_uint16p)(P)
-#define mng_put_uint32(P,I) *(mng_uint32p)(P) = (I)
-#define mng_put_int32(P,I) *(mng_int32p)(P) = (I)
-#define mng_put_uint16(P,I) *(mng_uint16p)(P) = (I)
-#endif /* MNG_BIGENDIAN_SUPPORTED */
-
-/* ************************************************************************** */
-/* * * */
-/* * Some handy(?) macro definitions * */
-/* * * */
-/* ************************************************************************** */
-
-#define MAX_COORD(a, b) (((a) > (b)) ? (a) : (b))
-#define MIN_COORD(a, b) (((a) < (b)) ? (a) : (b))
-
-/* ************************************************************************** */
-
-#endif /* _libmng_data_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/libmng_display.c b/src/3rdparty/libmng/libmng_display.c
deleted file mode 100644
index 81c2484b54..0000000000
--- a/src/3rdparty/libmng/libmng_display.c
+++ /dev/null
@@ -1,7140 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_display.c copyright (c) 2000-2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : Display management (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of the display management routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/11/2000 - G.Juyn * */
-/* * - added callback error-reporting support * */
-/* * - fixed frame_delay misalignment * */
-/* * 0.5.1 - 05/12/2000 - G.Juyn * */
-/* * - added sanity check for frozen status * */
-/* * - changed trace to macro for callback error-reporting * */
-/* * 0.5.1 - 05/13/2000 - G.Juyn * */
-/* * - changed display_mend to reset state to initial or SAVE * */
-/* * - added eMNGma hack (will be removed in 1.0.0 !!!) * */
-/* * - added TERM animation object pointer (easier reference) * */
-/* * - added process_save & process_seek routines * */
-/* * 0.5.1 - 05/14/2000 - G.Juyn * */
-/* * - added save_state and restore_state for SAVE/SEEK/TERM * */
-/* * processing * */
-/* * * */
-/* * 0.5.2 - 05/20/2000 - G.Juyn * */
-/* * - added JNG support (JHDR/JDAT) * */
-/* * 0.5.2 - 05/23/2000 - G.Juyn * */
-/* * - fixed problem with DEFI clipping * */
-/* * 0.5.2 - 05/30/2000 - G.Juyn * */
-/* * - added delta-image support (DHDR,PROM,IPNG,IJNG) * */
-/* * 0.5.2 - 05/31/2000 - G.Juyn * */
-/* * - fixed pointer confusion (contributed by Tim Rowley) * */
-/* * 0.5.2 - 06/03/2000 - G.Juyn * */
-/* * - fixed makeup for Linux gcc compile * */
-/* * 0.5.2 - 06/05/2000 - G.Juyn * */
-/* * - added support for RGB8_A8 canvasstyle * */
-/* * 0.5.2 - 06/09/2000 - G.Juyn * */
-/* * - fixed timer-handling to run with Mozilla (Tim Rowley) * */
-/* * 0.5.2 - 06/10/2000 - G.Juyn * */
-/* * - fixed some compilation-warnings (contrib Jason Morris) * */
-/* * * */
-/* * 0.5.3 - 06/12/2000 - G.Juyn * */
-/* * - fixed display of stored JNG images * */
-/* * 0.5.3 - 06/13/2000 - G.Juyn * */
-/* * - fixed problem with BASI-IEND as object 0 * */
-/* * 0.5.3 - 06/16/2000 - G.Juyn * */
-/* * - changed progressive-display processing * */
-/* * 0.5.3 - 06/17/2000 - G.Juyn * */
-/* * - changed delta-image processing * */
-/* * 0.5.3 - 06/20/2000 - G.Juyn * */
-/* * - fixed some minor stuff * */
-/* * 0.5.3 - 06/21/2000 - G.Juyn * */
-/* * - added speed-modifier to timing routine * */
-/* * 0.5.3 - 06/22/2000 - G.Juyn * */
-/* * - added support for PPLT chunk processing * */
-/* * 0.5.3 - 06/29/2000 - G.Juyn * */
-/* * - swapped refresh parameters * */
-/* * * */
-/* * 0.9.0 - 06/30/2000 - G.Juyn * */
-/* * - changed refresh parameters to 'x,y,width,height' * */
-/* * * */
-/* * 0.9.1 - 07/07/2000 - G.Juyn * */
-/* * - implemented support for freeze/reset/resume & go_xxxx * */
-/* * 0.9.1 - 07/08/2000 - G.Juyn * */
-/* * - added support for improved timing * */
-/* * 0.9.1 - 07/14/2000 - G.Juyn * */
-/* * - changed EOF processing behavior * */
-/* * - fixed TERM delay processing * */
-/* * 0.9.1 - 07/15/2000 - G.Juyn * */
-/* * - fixed freeze & reset processing * */
-/* * 0.9.1 - 07/16/2000 - G.Juyn * */
-/* * - fixed storage of images during mng_read() * */
-/* * - fixed support for mng_display() after mng_read() * */
-/* * 0.9.1 - 07/24/2000 - G.Juyn * */
-/* * - fixed reading of still-images * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 08/07/2000 - G.Juyn * */
-/* * - B111300 - fixup for improved portability * */
-/* * 0.9.3 - 08/21/2000 - G.Juyn * */
-/* * - fixed TERM processing delay of 0 msecs * */
-/* * 0.9.3 - 08/26/2000 - G.Juyn * */
-/* * - added MAGN chunk * */
-/* * 0.9.3 - 09/10/2000 - G.Juyn * */
-/* * - fixed problem with no refresh after TERM * */
-/* * - fixed DEFI behavior * */
-/* * 0.9.3 - 09/16/2000 - G.Juyn * */
-/* * - fixed timing & refresh behavior for single PNG/JNG * */
-/* * 0.9.3 - 09/19/2000 - G.Juyn * */
-/* * - refixed timing & refresh behavior for single PNG/JNG * */
-/* * 0.9.3 - 10/02/2000 - G.Juyn * */
-/* * - fixed timing again (this is getting boring...) * */
-/* * - refixed problem with no refresh after TERM * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added JDAA chunk * */
-/* * 0.9.3 - 10/17/2000 - G.Juyn * */
-/* * - fixed support for bKGD * */
-/* * 0.9.3 - 10/18/2000 - G.Juyn * */
-/* * - fixed delta-processing behavior * */
-/* * 0.9.3 - 10/19/2000 - G.Juyn * */
-/* * - added storage for pixel-/alpha-sampledepth for delta's * */
-/* * 0.9.3 - 10/27/2000 - G.Juyn * */
-/* * - fixed separate read() & display() processing * */
-/* * * */
-/* * 0.9.4 - 10/31/2000 - G.Juyn * */
-/* * - fixed possible loop in display_resume() (Thanks Vova!) * */
-/* * 0.9.4 - 11/20/2000 - G.Juyn * */
-/* * - fixed unwanted repetition in mng_readdisplay() * */
-/* * 0.9.4 - 11/24/2000 - G.Juyn * */
-/* * - moved restore of object 0 to libmng_display * */
-/* * - added restore of object 0 to TERM processing !!! * */
-/* * - fixed TERM delay processing * */
-/* * - fixed TERM end processing (count = 0) * */
-/* * 0.9.4 - 12/16/2000 - G.Juyn * */
-/* * - fixed mixup of data- & function-pointers (thanks Dimitri)* */
-/* * 0.9.4 - 1/18/2001 - G.Juyn * */
-/* * - removed test filter-methods 1 & 65 * */
-/* * - set default level-set for filtertype=64 to all zeroes * */
-/* * * */
-/* * 0.9.5 - 1/20/2001 - G.Juyn * */
-/* * - fixed compiler-warnings Mozilla (thanks Tim) * */
-/* * 0.9.5 - 1/23/2001 - G.Juyn * */
-/* * - fixed timing-problem with switching framing_modes * */
-/* * * */
-/* * 1.0.1 - 02/08/2001 - G.Juyn * */
-/* * - added MEND processing callback * */
-/* * 1.0.1 - 02/13/2001 - G.Juyn * */
-/* * - fixed first FRAM_MODE=4 timing problem * */
-/* * 1.0.1 - 04/21/2001 - G.Juyn * */
-/* * - fixed memory-leak for JNGs with alpha (Thanks Gregg!) * */
-/* * - added BGRA8 canvas with premultiplied alpha * */
-/* * * */
-/* * 1.0.2 - 06/25/2001 - G.Juyn * */
-/* * - fixed memory-leak with delta-images (Thanks Michael!) * */
-/* * * */
-/* * 1.0.5 - 08/15/2002 - G.Juyn * */
-/* * - completed PROM support * */
-/* * - completed delta-image support * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * 1.0.5 - 09/13/2002 - G.Juyn * */
-/* * - fixed read/write of MAGN chunk * */
-/* * 1.0.5 - 09/15/2002 - G.Juyn * */
-/* * - fixed LOOP iteration=0 special case * */
-/* * 1.0.5 - 09/19/2002 - G.Juyn * */
-/* * - fixed color-correction for restore-background handling * */
-/* * - optimized restore-background for bKGD cases * */
-/* * - cleaned up some old stuff * */
-/* * 1.0.5 - 09/20/2002 - G.Juyn * */
-/* * - finished support for BACK image & tiling * */
-/* * - added support for PAST * */
-/* * 1.0.5 - 09/22/2002 - G.Juyn * */
-/* * - added bgrx8 canvas (filler byte) * */
-/* * 1.0.5 - 10/05/2002 - G.Juyn * */
-/* * - fixed dropping mix of frozen/unfrozen objects * */
-/* * 1.0.5 - 10/07/2002 - G.Juyn * */
-/* * - added proposed change in handling of TERM- & if-delay * */
-/* * - added another fix for misplaced TERM chunk * */
-/* * - completed support for condition=2 in TERM chunk * */
-/* * 1.0.5 - 10/18/2002 - G.Juyn * */
-/* * - fixed clipping-problem with BACK tiling (Thanks Sakura!) * */
-/* * 1.0.5 - 10/20/2002 - G.Juyn * */
-/* * - fixed processing for multiple objects in MAGN * */
-/* * - fixed display of visible target of PAST operation * */
-/* * 1.0.5 - 10/30/2002 - G.Juyn * */
-/* * - modified TERM/MEND processing for max(1, TERM_delay, * */
-/* * interframe_delay) * */
-/* * 1.0.5 - 11/04/2002 - G.Juyn * */
-/* * - fixed layer- & frame-counting during read() * */
-/* * - fixed goframe/golayer/gotime processing * */
-/* * 1.0.5 - 01/19/2003 - G.Juyn * */
-/* * - B654627 - fixed SEGV when no gettickcount callback * */
-/* * - B664383 - fixed typo * */
-/* * - finalized changes in TERM/final_delay to elected proposal* */
-/* * * */
-/* * 1.0.6 - 05/11/2003 - G. Juyn * */
-/* * - added conditionals around canvas update routines * */
-/* * 1.0.6 - 05/25/2003 - G.R-P * */
-/* * - added MNG_SKIPCHUNK_cHNK footprint optimizations * */
-/* * 1.0.6 - 07/07/2003 - G.R-P * */
-/* * - added conditionals around some JNG-supporting code * */
-/* * - added conditionals around 16-bit supporting code * */
-/* * - reversed some loops to use decrementing counter * */
-/* * - combined init functions into one function * */
-/* * 1.0.6 - 07/10/2003 - G.R-P * */
-/* * - replaced nested switches with simple init setup function * */
-/* * 1.0.6 - 07/29/2003 - G.R-P * */
-/* * - added conditionals around PAST chunk support * */
-/* * 1.0.6 - 08/17/2003 - G.R-P * */
-/* * - added conditionals around non-VLC chunk support * */
-/* * * */
-/* * 1.0.7 - 11/27/2003 - R.A * */
-/* * - added CANVAS_RGB565 and CANVAS_BGR565 * */
-/* * 1.0.7 - 12/06/2003 - R.A * */
-/* * - added CANVAS_RGBA565 and CANVAS_BGRA565 * */
-/* * 1.0.7 - 01/25/2004 - J.S * */
-/* * - added premultiplied alpha canvas' for RGBA, ARGB, ABGR * */
-/* * * */
-/* * 1.0.8 - 03/31/2004 - G.Juyn * */
-/* * - fixed problem with PAST usage where source > dest * */
-/* * 1.0.8 - 05/04/2004 - G.R-P. * */
-/* * - fixed misplaced 16-bit conditionals * */
-/* * * */
-/* * 1.0.9 - 09/18/2004 - G.R-P. * */
-/* * - revised some SKIPCHUNK conditionals * */
-/* * 1.0.9 - 10/10/2004 - G.R-P. * */
-/* * - added MNG_NO_1_2_4BIT_SUPPORT * */
-/* * 1.0.9 - 10/14/2004 - G.Juyn * */
-/* * - added bgr565_a8 canvas-style (thanks to J. Elvander) * */
-/* * 1.0.9 - 12/11/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_DISPLAYCALLS * */
-/* * 1.0.9 - 12/20/2004 - G.Juyn * */
-/* * - cleaned up macro-invocations (thanks to D. Airlie) * */
-/* * * */
-/* * 1.0.10 - 07/06/2005 - G.R-P. * */
-/* * - added more SKIPCHUNK conditionals * */
-/* * 1.0.10 - 12/28/2005 - G.R-P. * */
-/* * - added missing SKIPCHUNK_MAGN conditional * */
-/* * 1.0.10 - 03/07/2006 - (thanks to W. Manthey) * */
-/* * - added CANVAS_RGB555 and CANVAS_BGR555 * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - fixed several compiler warnings * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * 1.0.10 - 04/12/2007 - G.Juyn * */
-/* * - added support for ANG proposal * */
-/* * * */
-/* ************************************************************************** */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-#include "libmng_chunks.h"
-#include "libmng_objects.h"
-#include "libmng_object_prc.h"
-#include "libmng_memory.h"
-#include "libmng_zlib.h"
-#include "libmng_jpeg.h"
-#include "libmng_cms.h"
-#include "libmng_pixels.h"
-#include "libmng_display.h"
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_DISPLAY_PROCS
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode set_delay (mng_datap pData,
- mng_uint32 iInterval)
-{
- if (!iInterval) /* at least 1 msec please! */
- iInterval = 1;
-
- if (pData->bRunning) /* only when really displaying */
- if (!pData->fSettimer ((mng_handle)pData, iInterval))
- MNG_ERROR (pData, MNG_APPTIMERERROR);
-
-#ifdef MNG_SUPPORT_DYNAMICMNG
- if ((!pData->bDynamic) || (pData->bRunning))
-#else
- if (pData->bRunning)
-#endif
- pData->bTimerset = MNG_TRUE; /* and indicate so */
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_uint32 calculate_delay (mng_datap pData,
- mng_uint32 iDelay)
-{
- mng_uint32 iTicks = pData->iTicks;
- mng_uint32 iWaitfor = 1; /* default non-MNG delay */
-
- if (!iTicks) /* tick_count not specified ? */
- if (pData->eImagetype == mng_it_mng)
- iTicks = 1000;
-
- if (iTicks)
- {
- switch (pData->iSpeed) /* honor speed modifier */
- {
- case mng_st_fast :
- {
- iWaitfor = (mng_uint32)(( 500 * iDelay) / iTicks);
- break;
- }
- case mng_st_slow :
- {
- iWaitfor = (mng_uint32)((3000 * iDelay) / iTicks);
- break;
- }
- case mng_st_slowest :
- {
- iWaitfor = (mng_uint32)((8000 * iDelay) / iTicks);
- break;
- }
- default :
- {
- iWaitfor = (mng_uint32)((1000 * iDelay) / iTicks);
- }
- }
- }
-
- return iWaitfor;
-}
-
-/* ************************************************************************** */
-/* * * */
-/* * Progressive display refresh - does the call to the refresh callback * */
-/* * and sets the timer to allow the app to perform the actual refresh to * */
-/* * the screen (eg. process its main message-loop) * */
-/* * * */
-/* ************************************************************************** */
-
-mng_retcode mng_display_progressive_refresh (mng_datap pData,
- mng_uint32 iInterval)
-{
- { /* let the app refresh first ? */
- if ((pData->bRunning) && (!pData->bSkipping) &&
- (pData->iUpdatetop < pData->iUpdatebottom) && (pData->iUpdateleft < pData->iUpdateright))
- {
- if (!pData->fRefresh (((mng_handle)pData),
- pData->iUpdateleft, pData->iUpdatetop,
- pData->iUpdateright - pData->iUpdateleft,
- pData->iUpdatebottom - pData->iUpdatetop))
- MNG_ERROR (pData, MNG_APPMISCERROR);
-
- pData->iUpdateleft = 0; /* reset update-region */
- pData->iUpdateright = 0;
- pData->iUpdatetop = 0;
- pData->iUpdatebottom = 0; /* reset refreshneeded indicator */
- pData->bNeedrefresh = MNG_FALSE;
- /* interval requested ? */
- if ((!pData->bFreezing) && (iInterval))
- { /* setup the timer */
- mng_retcode iRetcode = set_delay (pData, iInterval);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- }
- }
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-/* * * */
-/* * Generic display routines * */
-/* * * */
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode interframe_delay (mng_datap pData)
-{
- mng_uint32 iWaitfor = 0;
- mng_uint32 iInterval;
- mng_uint32 iRuninterval;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INTERFRAME_DELAY, MNG_LC_START);
-#endif
-
- {
-#ifndef MNG_SKIPCHUNK_FRAM
- if (pData->iFramedelay > 0 || pData->bForcedelay) /* real delay ? */
- { /* let the app refresh first ? */
- pData->bForcedelay = MNG_FALSE;
- if ((pData->bRunning) && (!pData->bSkipping) &&
- (pData->iUpdatetop < pData->iUpdatebottom) && (pData->iUpdateleft < pData->iUpdateright))
- if (!pData->fRefresh (((mng_handle)pData),
- pData->iUpdateleft, pData->iUpdatetop,
- pData->iUpdateright - pData->iUpdateleft,
- pData->iUpdatebottom - pData->iUpdatetop))
- MNG_ERROR (pData, MNG_APPMISCERROR);
-
- pData->iUpdateleft = 0; /* reset update-region */
- pData->iUpdateright = 0;
- pData->iUpdatetop = 0;
- pData->iUpdatebottom = 0; /* reset refreshneeded indicator */
- pData->bNeedrefresh = MNG_FALSE;
-
-#ifndef MNG_SKIPCHUNK_TERM
- if (pData->bOnlyfirstframe) /* only processing first frame after TERM ? */
- {
- pData->iFramesafterTERM++;
- /* did we do a frame yet ? */
- if (pData->iFramesafterTERM > 1)
- { /* then that's it; just stop right here ! */
- pData->pCurraniobj = MNG_NULL;
- pData->bRunning = MNG_FALSE;
-
- return MNG_NOERROR;
- }
- }
-#endif
-
- if (pData->fGettickcount)
- { /* get current tickcount */
- pData->iRuntime = pData->fGettickcount ((mng_handle)pData);
- /* calculate interval since last sync-point */
- if (pData->iRuntime < pData->iSynctime)
- iRuninterval = pData->iRuntime + ~pData->iSynctime + 1;
- else
- iRuninterval = pData->iRuntime - pData->iSynctime;
- /* calculate actual run-time */
- if (pData->iRuntime < pData->iStarttime)
- pData->iRuntime = pData->iRuntime + ~pData->iStarttime + 1;
- else
- pData->iRuntime = pData->iRuntime - pData->iStarttime;
- }
- else
- {
- iRuninterval = 0;
- }
-
- iWaitfor = calculate_delay (pData, pData->iFramedelay);
-
- if (iWaitfor > iRuninterval) /* delay necessary ? */
- iInterval = iWaitfor - iRuninterval;
- else
- iInterval = 1; /* force app to process messageloop */
- /* set the timer ? */
- if (((pData->bRunning) || (pData->bSearching) || (pData->bReading)) &&
- (!pData->bSkipping))
- {
- iRetcode = set_delay (pData, iInterval);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- }
-
- if (!pData->bSkipping) /* increase frametime in advance */
- pData->iFrametime = pData->iFrametime + iWaitfor;
- /* setup for next delay */
- pData->iFramedelay = pData->iNextdelay;
- pData->iAccumdelay += pData->iFramedelay;
-#endif
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INTERFRAME_DELAY, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-MNG_LOCAL void set_display_routine (mng_datap pData)
-{ /* actively running ? */
- if (((pData->bRunning) || (pData->bSearching)) && (!pData->bSkipping))
- {
- switch (pData->iCanvasstyle) /* determine display routine */
- {
-#ifndef MNG_SKIPCANVAS_RGB8
- case MNG_CANVAS_RGB8 : { pData->fDisplayrow = (mng_fptr)mng_display_rgb8; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_RGBA8
- case MNG_CANVAS_RGBA8 : { pData->fDisplayrow = (mng_fptr)mng_display_rgba8; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_RGBA8_PM
- case MNG_CANVAS_RGBA8_PM: { pData->fDisplayrow = (mng_fptr)mng_display_rgba8_pm; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_ARGB8
- case MNG_CANVAS_ARGB8 : { pData->fDisplayrow = (mng_fptr)mng_display_argb8; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_ARGB8_PM
- case MNG_CANVAS_ARGB8_PM: { pData->fDisplayrow = (mng_fptr)mng_display_argb8_pm; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_RGB8_A8
- case MNG_CANVAS_RGB8_A8 : { pData->fDisplayrow = (mng_fptr)mng_display_rgb8_a8; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_BGR8
- case MNG_CANVAS_BGR8 : { pData->fDisplayrow = (mng_fptr)mng_display_bgr8; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_BGRX8
- case MNG_CANVAS_BGRX8 : { pData->fDisplayrow = (mng_fptr)mng_display_bgrx8; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_BGRA8
- case MNG_CANVAS_BGRA8 : { pData->fDisplayrow = (mng_fptr)mng_display_bgra8; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_BGRA8_PM
- case MNG_CANVAS_BGRA8_PM: { pData->fDisplayrow = (mng_fptr)mng_display_bgra8_pm; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_ABGR8
- case MNG_CANVAS_ABGR8 : { pData->fDisplayrow = (mng_fptr)mng_display_abgr8; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_ABGR8_PM
- case MNG_CANVAS_ABGR8_PM: { pData->fDisplayrow = (mng_fptr)mng_display_abgr8_pm; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_RGB565
- case MNG_CANVAS_RGB565 : { pData->fDisplayrow = (mng_fptr)mng_display_rgb565; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_RGBA565
- case MNG_CANVAS_RGBA565 : { pData->fDisplayrow = (mng_fptr)mng_display_rgba565; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_BGR565
- case MNG_CANVAS_BGR565 : { pData->fDisplayrow = (mng_fptr)mng_display_bgr565; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_BGRA565
- case MNG_CANVAS_BGRA565 : { pData->fDisplayrow = (mng_fptr)mng_display_bgra565; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_BGR565_A8
- case MNG_CANVAS_BGR565_A8 : { pData->fDisplayrow = (mng_fptr)mng_display_bgr565_a8; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_RGB555
- case MNG_CANVAS_RGB555 : { pData->fDisplayrow = (mng_fptr)mng_display_rgb555; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_BGR555
- case MNG_CANVAS_BGR555 : { pData->fDisplayrow = (mng_fptr)mng_display_bgr555; break; }
-#endif
-
-#ifndef MNG_NO_16BIT_SUPPORT
-/* case MNG_CANVAS_RGB16 : { pData->fDisplayrow = (mng_fptr)mng_display_rgb16; break; } */
-/* case MNG_CANVAS_RGBA16 : { pData->fDisplayrow = (mng_fptr)mng_display_rgba16; break; } */
-/* case MNG_CANVAS_ARGB16 : { pData->fDisplayrow = (mng_fptr)mng_display_argb16; break; } */
-/* case MNG_CANVAS_BGR16 : { pData->fDisplayrow = (mng_fptr)mng_display_bgr16; break; } */
-/* case MNG_CANVAS_BGRA16 : { pData->fDisplayrow = (mng_fptr)mng_display_bgra16; break; } */
-/* case MNG_CANVAS_ABGR16 : { pData->fDisplayrow = (mng_fptr)mng_display_abgr16; break; } */
-#endif
-/* case MNG_CANVAS_INDEX8 : { pData->fDisplayrow = (mng_fptr)mng_display_index8; break; } */
-/* case MNG_CANVAS_INDEXA8 : { pData->fDisplayrow = (mng_fptr)mng_display_indexa8; break; } */
-/* case MNG_CANVAS_AINDEX8 : { pData->fDisplayrow = (mng_fptr)mng_display_aindex8; break; } */
-/* case MNG_CANVAS_GRAY8 : { pData->fDisplayrow = (mng_fptr)mng_display_gray8; break; } */
-/* case MNG_CANVAS_AGRAY8 : { pData->fDisplayrow = (mng_fptr)mng_display_agray8; break; } */
-/* case MNG_CANVAS_GRAYA8 : { pData->fDisplayrow = (mng_fptr)mng_display_graya8; break; } */
-#ifndef MNG_NO_16BIT_SUPPORT
-/* case MNG_CANVAS_GRAY16 : { pData->fDisplayrow = (mng_fptr)mng_display_gray16; break; } */
-/* case MNG_CANVAS_GRAYA16 : { pData->fDisplayrow = (mng_fptr)mng_display_graya16; break; } */
-/* case MNG_CANVAS_AGRAY16 : { pData->fDisplayrow = (mng_fptr)mng_display_agray16; break; } */
-#endif
-/* case MNG_CANVAS_DX15 : { pData->fDisplayrow = (mng_fptr)mng_display_dx15; break; } */
-/* case MNG_CANVAS_DX16 : { pData->fDisplayrow = (mng_fptr)mng_display_dx16; break; } */
- }
- }
-
- return;
-}
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode load_bkgdlayer (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_LOAD_BKGDLAYER, MNG_LC_START);
-#endif
- /* actively running ? */
- if (((pData->bRunning) || (pData->bSearching)) && (!pData->bSkipping))
- {
- mng_int32 iY;
- mng_retcode iRetcode;
- mng_bool bColorcorr = MNG_FALSE;
- /* save values */
- mng_int32 iDestl = pData->iDestl;
- mng_int32 iDestr = pData->iDestr;
- mng_int32 iDestt = pData->iDestt;
- mng_int32 iDestb = pData->iDestb;
- mng_int32 iSourcel = pData->iSourcel;
- mng_int32 iSourcer = pData->iSourcer;
- mng_int32 iSourcet = pData->iSourcet;
- mng_int32 iSourceb = pData->iSourceb;
- mng_int8 iPass = pData->iPass;
- mng_int32 iRow = pData->iRow;
- mng_int32 iRowinc = pData->iRowinc;
- mng_int32 iCol = pData->iCol;
- mng_int32 iColinc = pData->iColinc;
- mng_int32 iRowsamples = pData->iRowsamples;
- mng_int32 iRowsize = pData->iRowsize;
- mng_uint8p pPrevrow = pData->pPrevrow;
- mng_uint8p pRGBArow = pData->pRGBArow;
- mng_bool bIsRGBA16 = pData->bIsRGBA16;
- mng_bool bIsOpaque = pData->bIsOpaque;
- mng_fptr fCorrectrow = pData->fCorrectrow;
- mng_fptr fDisplayrow = pData->fDisplayrow;
- mng_fptr fRetrieverow = pData->fRetrieverow;
- mng_objectp pCurrentobj = pData->pCurrentobj;
- mng_objectp pRetrieveobj = pData->pRetrieveobj;
-
- pData->iDestl = 0; /* determine clipping region */
- pData->iDestt = 0;
- pData->iDestr = pData->iWidth;
- pData->iDestb = pData->iHeight;
-
-#ifndef MNG_SKIPCHUNK_FRAM
- if (pData->bFrameclipping) /* frame clipping specified ? */
- {
- pData->iDestl = MAX_COORD (pData->iDestl, pData->iFrameclipl);
- pData->iDestt = MAX_COORD (pData->iDestt, pData->iFrameclipt);
- pData->iDestr = MIN_COORD (pData->iDestr, pData->iFrameclipr);
- pData->iDestb = MIN_COORD (pData->iDestb, pData->iFrameclipb);
- }
-#endif
- /* anything to clear ? */
- if ((pData->iDestr >= pData->iDestl) && (pData->iDestb >= pData->iDestt))
- {
- pData->iPass = -1; /* these are the object's dimensions now */
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iWidth;
- pData->iRowsize = pData->iRowsamples << 2;
- pData->bIsRGBA16 = MNG_FALSE; /* let's keep it simple ! */
- pData->bIsOpaque = MNG_TRUE;
-
- pData->iSourcel = 0; /* source relative to destination */
- pData->iSourcer = pData->iDestr - pData->iDestl;
- pData->iSourcet = 0;
- pData->iSourceb = pData->iDestb - pData->iDestt;
-
- set_display_routine (pData); /* determine display routine */
- /* default restore using preset BG color */
- pData->fRestbkgdrow = (mng_fptr)mng_restore_bkgd_bgcolor;
-
-#ifndef MNG_SKIPCHUNK_bKGD
- if (((pData->eImagetype == mng_it_png) || (pData->eImagetype == mng_it_jng)) &&
- (pData->bUseBKGD))
- { /* prefer bKGD in PNG/JNG */
- if (!pData->pCurrentobj)
- pData->pCurrentobj = pData->pObjzero;
-
- if (((mng_imagep)pData->pCurrentobj)->pImgbuf->bHasBKGD)
- {
- pData->fRestbkgdrow = (mng_fptr)mng_restore_bkgd_bkgd;
- bColorcorr = MNG_TRUE;
- }
- }
-#endif
-
- if (pData->fGetbkgdline) /* background-canvas-access callback set ? */
- {
- switch (pData->iBkgdstyle)
- {
-#ifndef MNG_SKIPCANVAS_RGB8
- case MNG_CANVAS_RGB8 : { pData->fRestbkgdrow = (mng_fptr)mng_restore_bkgd_rgb8; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_BGR8
- case MNG_CANVAS_BGR8 : { pData->fRestbkgdrow = (mng_fptr)mng_restore_bkgd_bgr8; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_BGRX8
- case MNG_CANVAS_BGRX8 : { pData->fRestbkgdrow = (mng_fptr)mng_restore_bkgd_bgrx8; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_BGR565
- case MNG_CANVAS_BGR565 : { pData->fRestbkgdrow = (mng_fptr)mng_restore_bkgd_bgr565; break; }
-#endif
-#ifndef MNG_SKIPCANVAS_RGB565
- case MNG_CANVAS_RGB565 : { pData->fRestbkgdrow = (mng_fptr)mng_restore_bkgd_rgb565; break; }
-#endif
-#ifndef MNG_NO_16BIT_SUPPORT
- /* case MNG_CANVAS_RGB16 : { pData->fRestbkgdrow = (mng_fptr)mng_restore_bkgd_rgb16; break; } */
- /* case MNG_CANVAS_BGR16 : { pData->fRestbkgdrow = (mng_fptr)mng_restore_bkgd_bgr16; break; } */
-#endif
- /* case MNG_CANVAS_INDEX8 : { pData->fRestbkgdrow = (mng_fptr)mng_restore_bkgd_index8; break; } */
- /* case MNG_CANVAS_GRAY8 : { pData->fRestbkgdrow = (mng_fptr)mng_restore_bkgd_gray8; break; } */
-#ifndef MNG_NO_16BIT_SUPPORT
- /* case MNG_CANVAS_GRAY16 : { pData->fRestbkgdrow = (mng_fptr)mng_restore_bkgd_gray16; break; } */
-#endif
- /* case MNG_CANVAS_DX15 : { pData->fRestbkgdrow = (mng_fptr)mng_restore_bkgd_dx15; break; } */
- /* case MNG_CANVAS_DX16 : { pData->fRestbkgdrow = (mng_fptr)mng_restore_bkgd_dx16; break; } */
- }
- }
-
-#ifndef MNG_SKIPCHUNK_BACK
- if (pData->bHasBACK)
- { /* background image ? */
- if ((pData->iBACKmandatory & 0x02) && (pData->iBACKimageid))
- {
- pData->fRestbkgdrow = (mng_fptr)mng_restore_bkgd_backcolor;
- bColorcorr = MNG_TRUE;
- }
- else /* background color ? */
- if (pData->iBACKmandatory & 0x01)
- {
- pData->fRestbkgdrow = (mng_fptr)mng_restore_bkgd_backcolor;
- bColorcorr = MNG_TRUE;
- }
- }
-#endif
-
- pData->fCorrectrow = MNG_NULL; /* default no color-correction */
-
- if (bColorcorr) /* do we have to do color-correction ? */
- {
-#ifdef MNG_NO_CMS
- iRetcode = MNG_NOERROR;
-#else
-#if defined(MNG_FULL_CMS) /* determine color-management routine */
- iRetcode = mng_init_full_cms (pData, MNG_TRUE, MNG_FALSE, MNG_FALSE);
-#elif defined(MNG_GAMMA_ONLY)
- iRetcode = mng_init_gamma_only (pData, MNG_TRUE, MNG_FALSE, MNG_FALSE);
-#elif defined(MNG_APP_CMS)
- iRetcode = mng_init_app_cms (pData, MNG_TRUE, MNG_FALSE, MNG_FALSE);
-#endif
- if (iRetcode) /* on error bail out */
- return iRetcode;
-#endif /* MNG_NO_CMS */
- }
- /* get a temporary row-buffer */
- MNG_ALLOC (pData, pData->pRGBArow, pData->iRowsize);
-
- iY = pData->iDestt; /* this is where we start */
- iRetcode = MNG_NOERROR; /* so far, so good */
-
- while ((!iRetcode) && (iY < pData->iDestb))
- { /* restore a background row */
- iRetcode = ((mng_restbkgdrow)pData->fRestbkgdrow) (pData);
- /* color correction ? */
- if ((!iRetcode) && (pData->fCorrectrow))
- iRetcode = ((mng_correctrow)pData->fCorrectrow) (pData);
-
- if (!iRetcode) /* so... display it */
- iRetcode = ((mng_displayrow)pData->fDisplayrow) (pData);
-
- if (!iRetcode)
- iRetcode = mng_next_row (pData);
-
- iY++; /* and next line */
- }
- /* drop the temporary row-buffer */
- MNG_FREE (pData, pData->pRGBArow, pData->iRowsize);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#if defined(MNG_FULL_CMS) /* cleanup cms stuff */
- if (bColorcorr) /* did we do color-correction ? */
- {
- iRetcode = mng_clear_cms (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif
-#ifndef MNG_SKIPCHUNK_BACK
- /* background image ? */
- if ((pData->bHasBACK) && (pData->iBACKmandatory & 0x02) && (pData->iBACKimageid))
- {
- mng_imagep pImage;
- /* let's find that object then */
- pData->pRetrieveobj = mng_find_imageobject (pData, pData->iBACKimageid);
- pImage = (mng_imagep)pData->pRetrieveobj;
- /* exists, viewable and visible ? */
- if ((pImage) && (pImage->bViewable) && (pImage->bVisible))
- { /* will it fall within the target region ? */
- if ((pImage->iPosx < pData->iDestr) && (pImage->iPosy < pData->iDestb) &&
- ((pData->iBACKtile) ||
- ((pImage->iPosx + (mng_int32)pImage->pImgbuf->iWidth >= pData->iDestl) &&
- (pImage->iPosy + (mng_int32)pImage->pImgbuf->iHeight >= pData->iDestt) )) &&
- ((!pImage->bClipped) ||
- ((pImage->iClipl <= pImage->iClipr) && (pImage->iClipt <= pImage->iClipb) &&
- (pImage->iClipl < pData->iDestr) && (pImage->iClipr >= pData->iDestl) &&
- (pImage->iClipt < pData->iDestb) && (pImage->iClipb >= pData->iDestt) )))
- { /* right; we've got ourselves something to do */
- if (pImage->bClipped) /* clip output region with image's clipping region ? */
- {
- if (pImage->iClipl > pData->iDestl)
- pData->iDestl = pImage->iClipl;
- if (pImage->iClipr < pData->iDestr)
- pData->iDestr = pImage->iClipr;
- if (pImage->iClipt > pData->iDestt)
- pData->iDestt = pImage->iClipt;
- if (pImage->iClipb < pData->iDestb)
- pData->iDestb = pImage->iClipb;
- }
- /* image offset does some extra clipping too ! */
- if (pImage->iPosx > pData->iDestl)
- pData->iDestl = pImage->iPosx;
- if (pImage->iPosy > pData->iDestt)
- pData->iDestt = pImage->iPosy;
-
- if (!pData->iBACKtile) /* without tiling further clipping is needed */
- {
- if (pImage->iPosx + (mng_int32)pImage->pImgbuf->iWidth < pData->iDestr)
- pData->iDestr = pImage->iPosx + (mng_int32)pImage->pImgbuf->iWidth;
- if (pImage->iPosy + (mng_int32)pImage->pImgbuf->iHeight < pData->iDestb)
- pData->iDestb = pImage->iPosy + (mng_int32)pImage->pImgbuf->iHeight;
- }
-
- pData->iSourcel = 0; /* source relative to destination */
- pData->iSourcer = pData->iDestr - pData->iDestl;
- pData->iSourcet = 0;
- pData->iSourceb = pData->iDestb - pData->iDestt;
- /* 16-bit background ? */
-
-#ifdef MNG_NO_16BIT_SUPPORT
- pData->bIsRGBA16 = MNG_FALSE;
-#else
- pData->bIsRGBA16 = (mng_bool)(pImage->pImgbuf->iBitdepth > 8);
-#endif
- /* let restore routine know the offsets !!! */
- pData->iBackimgoffsx = pImage->iPosx;
- pData->iBackimgoffsy = pImage->iPosy;
- pData->iBackimgwidth = pImage->pImgbuf->iWidth;
- pData->iBackimgheight = pImage->pImgbuf->iHeight;
- pData->iRow = 0; /* start at the top again !! */
- /* determine background object retrieval routine */
- switch (pImage->pImgbuf->iColortype)
- {
- case 0 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pImage->pImgbuf->iBitdepth > 8)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_g16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_g8;
-
- pData->bIsOpaque = (mng_bool)(!pImage->pImgbuf->bHasTRNS);
- break;
- }
-
- case 2 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pImage->pImgbuf->iBitdepth > 8)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgb16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgb8;
-
- pData->bIsOpaque = (mng_bool)(!pImage->pImgbuf->bHasTRNS);
- break;
- }
-
- case 3 : { pData->fRetrieverow = (mng_fptr)mng_retrieve_idx8;
- pData->bIsOpaque = (mng_bool)(!pImage->pImgbuf->bHasTRNS);
- break;
- }
-
- case 4 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pImage->pImgbuf->iBitdepth > 8)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_ga16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_ga8;
-
- pData->bIsOpaque = MNG_FALSE;
- break;
- }
-
- case 6 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pImage->pImgbuf->iBitdepth > 8)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgba16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgba8;
-
- pData->bIsOpaque = MNG_FALSE;
- break;
- }
-
- case 8 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pImage->pImgbuf->iBitdepth > 8)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_g16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_g8;
-
- pData->bIsOpaque = MNG_TRUE;
- break;
- }
-
- case 10 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pImage->pImgbuf->iBitdepth > 8)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgb16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgb8;
-
- pData->bIsOpaque = MNG_TRUE;
- break;
- }
-
- case 12 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pImage->pImgbuf->iBitdepth > 8)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_ga16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_ga8;
-
- pData->bIsOpaque = MNG_FALSE;
- break;
- }
-
- case 14 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pImage->pImgbuf->iBitdepth > 8)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgba16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgba8;
-
- pData->bIsOpaque = MNG_FALSE;
- break;
- }
- }
-
-#ifdef MNG_NO_CMS
- iRetcode = MNG_NOERROR;
-#else
-#if defined(MNG_FULL_CMS) /* determine color-management routine */
- iRetcode = mng_init_full_cms (pData, MNG_FALSE, MNG_FALSE, MNG_TRUE);
-#elif defined(MNG_GAMMA_ONLY)
- iRetcode = mng_init_gamma_only (pData, MNG_FALSE, MNG_FALSE, MNG_TRUE);
-#elif defined(MNG_APP_CMS)
- iRetcode = mng_init_app_cms (pData, MNG_FALSE, MNG_FALSE, MNG_TRUE);
-#endif
- if (iRetcode) /* on error bail out */
- return iRetcode;
-#endif /* MNG_NO_CMS */
- /* get temporary row-buffers */
- MNG_ALLOC (pData, pData->pPrevrow, pData->iRowsize);
- MNG_ALLOC (pData, pData->pRGBArow, pData->iRowsize);
-
- iY = pData->iDestt; /* this is where we start */
- iRetcode = MNG_NOERROR; /* so far, so good */
-
- while ((!iRetcode) && (iY < pData->iDestb))
- { /* restore a background row */
- iRetcode = mng_restore_bkgd_backimage (pData);
- /* color correction ? */
- if ((!iRetcode) && (pData->fCorrectrow))
- iRetcode = ((mng_correctrow)pData->fCorrectrow) (pData);
-
- if (!iRetcode) /* so... display it */
- iRetcode = ((mng_displayrow)pData->fDisplayrow) (pData);
-
- if (!iRetcode)
- iRetcode = mng_next_row (pData);
-
- iY++; /* and next line */
- }
- /* drop temporary row-buffers */
- MNG_FREE (pData, pData->pRGBArow, pData->iRowsize);
- MNG_FREE (pData, pData->pPrevrow, pData->iRowsize);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#if defined(MNG_FULL_CMS) /* cleanup cms stuff */
- iRetcode = mng_clear_cms (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-#endif
- }
- }
- }
-#endif
- }
-
- pData->iDestl = iDestl; /* restore values */
- pData->iDestr = iDestr;
- pData->iDestt = iDestt;
- pData->iDestb = iDestb;
- pData->iSourcel = iSourcel;
- pData->iSourcer = iSourcer;
- pData->iSourcet = iSourcet;
- pData->iSourceb = iSourceb;
- pData->iPass = iPass;
- pData->iRow = iRow;
- pData->iRowinc = iRowinc;
- pData->iCol = iCol;
- pData->iColinc = iColinc;
- pData->iRowsamples = iRowsamples;
- pData->iRowsize = iRowsize;
- pData->pPrevrow = pPrevrow;
- pData->pRGBArow = pRGBArow;
- pData->bIsRGBA16 = bIsRGBA16;
- pData->bIsOpaque = bIsOpaque;
- pData->fCorrectrow = fCorrectrow;
- pData->fDisplayrow = fDisplayrow;
- pData->fRetrieverow = fRetrieverow;
- pData->pCurrentobj = pCurrentobj;
- pData->pRetrieveobj = pRetrieveobj;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_LOAD_BKGDLAYER, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode clear_canvas (mng_datap pData)
-{
- mng_int32 iY;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CLEAR_CANVAS, MNG_LC_START);
-#endif
-
- pData->iDestl = 0; /* clipping region is full canvas! */
- pData->iDestt = 0;
- pData->iDestr = pData->iWidth;
- pData->iDestb = pData->iHeight;
-
- pData->iSourcel = 0; /* source is same as destination */
- pData->iSourcer = pData->iWidth;
- pData->iSourcet = 0;
- pData->iSourceb = pData->iHeight;
-
- pData->iPass = -1; /* these are the object's dimensions now */
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iWidth;
- pData->iRowsize = pData->iRowsamples << 2;
- pData->bIsRGBA16 = MNG_FALSE; /* let's keep it simple ! */
- pData->bIsOpaque = MNG_TRUE;
-
- set_display_routine (pData); /* determine display routine */
- /* get a temporary row-buffer */
- /* it's transparent black by default!! */
- MNG_ALLOC (pData, pData->pRGBArow, pData->iRowsize);
-
- iY = pData->iDestt; /* this is where we start */
- iRetcode = MNG_NOERROR; /* so far, so good */
-
- while ((!iRetcode) && (iY < pData->iDestb))
- { /* clear a row then */
- iRetcode = ((mng_displayrow)pData->fDisplayrow) (pData);
-
- if (!iRetcode)
- iRetcode = mng_next_row (pData); /* adjust variables for next row */
-
- iY++; /* and next line */
- }
- /* drop the temporary row-buffer */
- MNG_FREE (pData, pData->pRGBArow, pData->iRowsize);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CLEAR_CANVAS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode next_frame (mng_datap pData,
- mng_uint8 iFramemode,
- mng_uint8 iChangedelay,
- mng_uint32 iDelay,
- mng_uint8 iChangetimeout,
- mng_uint32 iTimeout,
- mng_uint8 iChangeclipping,
- mng_uint8 iCliptype,
- mng_int32 iClipl,
- mng_int32 iClipr,
- mng_int32 iClipt,
- mng_int32 iClipb)
-{
- mng_retcode iRetcode = MNG_NOERROR;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_NEXT_FRAME, MNG_LC_START);
-#endif
-
- if (!pData->iBreakpoint) /* no previous break here ? */
- {
-#ifndef MNG_SKIPCHUNK_FRAM
- mng_uint8 iOldmode = pData->iFramemode;
- /* interframe delay required ? */
- if ((iOldmode == 2) || (iOldmode == 4))
- {
- if ((pData->iFrameseq) && (iFramemode != 1) && (iFramemode != 3))
- iRetcode = interframe_delay (pData);
- else
- pData->iFramedelay = pData->iNextdelay;
- }
- else
- { /* delay before inserting background layer? */
- if ((pData->bFramedone) && (iFramemode == 4))
- iRetcode = interframe_delay (pData);
- }
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* now we'll assume we're in the next frame! */
- if (iFramemode) /* save the new framing mode ? */
- {
- pData->iFRAMmode = iFramemode;
- pData->iFramemode = iFramemode;
- }
- else /* reload default */
- pData->iFramemode = pData->iFRAMmode;
-
- if (iChangedelay) /* delay changed ? */
- {
- pData->iNextdelay = iDelay; /* for *after* next subframe */
-
- if ((iOldmode == 2) || (iOldmode == 4))
- pData->iFramedelay = pData->iFRAMdelay;
-
- if (iChangedelay == 2) /* also overall ? */
- pData->iFRAMdelay = iDelay;
- }
- else
- { /* reload default */
- pData->iNextdelay = pData->iFRAMdelay;
- }
-
- if (iChangetimeout) /* timeout changed ? */
- { /* for next subframe */
- pData->iFrametimeout = iTimeout;
-
- if ((iChangetimeout == 2) || /* also overall ? */
- (iChangetimeout == 4) ||
- (iChangetimeout == 6) ||
- (iChangetimeout == 8))
- pData->iFRAMtimeout = iTimeout;
- }
- else /* reload default */
- pData->iFrametimeout = pData->iFRAMtimeout;
-
- if (iChangeclipping) /* clipping changed ? */
- {
- pData->bFrameclipping = MNG_TRUE;
-
- if (!iCliptype) /* absolute ? */
- {
- pData->iFrameclipl = iClipl;
- pData->iFrameclipr = iClipr;
- pData->iFrameclipt = iClipt;
- pData->iFrameclipb = iClipb;
- }
- else /* relative */
- {
- pData->iFrameclipl = pData->iFrameclipl + iClipl;
- pData->iFrameclipr = pData->iFrameclipr + iClipr;
- pData->iFrameclipt = pData->iFrameclipt + iClipt;
- pData->iFrameclipb = pData->iFrameclipb + iClipb;
- }
-
- if (iChangeclipping == 2) /* also overall ? */
- {
- pData->bFRAMclipping = MNG_TRUE;
-
- if (!iCliptype) /* absolute ? */
- {
- pData->iFRAMclipl = iClipl;
- pData->iFRAMclipr = iClipr;
- pData->iFRAMclipt = iClipt;
- pData->iFRAMclipb = iClipb;
- }
- else /* relative */
- {
- pData->iFRAMclipl = pData->iFRAMclipl + iClipl;
- pData->iFRAMclipr = pData->iFRAMclipr + iClipr;
- pData->iFRAMclipt = pData->iFRAMclipt + iClipt;
- pData->iFRAMclipb = pData->iFRAMclipb + iClipb;
- }
- }
- }
- else
- { /* reload defaults */
- pData->bFrameclipping = pData->bFRAMclipping;
- pData->iFrameclipl = pData->iFRAMclipl;
- pData->iFrameclipr = pData->iFRAMclipr;
- pData->iFrameclipt = pData->iFRAMclipt;
- pData->iFrameclipb = pData->iFRAMclipb;
- }
-#endif
- }
-
- if (!pData->bTimerset) /* timer still off ? */
- {
- if (
-#ifndef MNG_SKIPCHUNK_FRAM
- (pData->iFramemode == 4) || /* insert background layer after a new frame */
-#endif
- (!pData->iLayerseq)) /* and certainly before the very first layer */
- iRetcode = load_bkgdlayer (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- pData->iFrameseq++; /* count the frame ! */
- pData->bFramedone = MNG_TRUE; /* and indicate we've done one */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_NEXT_FRAME, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode next_layer (mng_datap pData)
-{
- mng_imagep pImage;
- mng_retcode iRetcode = MNG_NOERROR;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_NEXT_LAYER, MNG_LC_START);
-#endif
-
-#ifndef MNG_SKIPCHUNK_FRAM
- if (!pData->iBreakpoint) /* no previous break here ? */
- { /* interframe delay required ? */
- if ((pData->eImagetype == mng_it_mng) && (pData->iLayerseq) &&
- ((pData->iFramemode == 1) || (pData->iFramemode == 3)))
- iRetcode = interframe_delay (pData);
- else
- pData->iFramedelay = pData->iNextdelay;
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif
-
- if (!pData->bTimerset) /* timer still off ? */
- {
- if (!pData->iLayerseq) /* restore background for the very first layer ? */
- { /* wait till IDAT/JDAT for PNGs & JNGs !!! */
- if ((pData->eImagetype == mng_it_png) || (pData->eImagetype == mng_it_jng))
- pData->bRestorebkgd = MNG_TRUE;
- else
- { /* for MNG we do it right away */
- iRetcode = load_bkgdlayer (pData);
- pData->iLayerseq++; /* and it counts as a layer then ! */
- }
- }
-#ifndef MNG_SKIPCHUNK_FRAM
- else
- if (pData->iFramemode == 3) /* restore background for each layer ? */
- iRetcode = load_bkgdlayer (pData);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* processing a delta-image ? */
- pImage = (mng_imagep)pData->pDeltaImage;
- else
-#endif
- pImage = (mng_imagep)pData->pCurrentobj;
-
- if (!pImage) /* not an active object ? */
- pImage = (mng_imagep)pData->pObjzero;
- /* determine display rectangle */
- pData->iDestl = MAX_COORD ((mng_int32)0, pImage->iPosx);
- pData->iDestt = MAX_COORD ((mng_int32)0, pImage->iPosy);
- /* is it a valid buffer ? */
- if ((pImage->pImgbuf->iWidth) && (pImage->pImgbuf->iHeight))
- {
- pData->iDestr = MIN_COORD ((mng_int32)pData->iWidth,
- pImage->iPosx + (mng_int32)pImage->pImgbuf->iWidth );
- pData->iDestb = MIN_COORD ((mng_int32)pData->iHeight,
- pImage->iPosy + (mng_int32)pImage->pImgbuf->iHeight);
- }
- else /* it's a single image ! */
- {
- pData->iDestr = MIN_COORD ((mng_int32)pData->iWidth,
- (mng_int32)pData->iDatawidth );
- pData->iDestb = MIN_COORD ((mng_int32)pData->iHeight,
- (mng_int32)pData->iDataheight);
- }
-
-#ifndef MNG_SKIPCHUNK_FRAM
- if (pData->bFrameclipping) /* frame clipping specified ? */
- {
- pData->iDestl = MAX_COORD (pData->iDestl, pData->iFrameclipl);
- pData->iDestt = MAX_COORD (pData->iDestt, pData->iFrameclipt);
- pData->iDestr = MIN_COORD (pData->iDestr, pData->iFrameclipr);
- pData->iDestb = MIN_COORD (pData->iDestb, pData->iFrameclipb);
- }
-#endif
-
- if (pImage->bClipped) /* is the image clipped itself ? */
- {
- pData->iDestl = MAX_COORD (pData->iDestl, pImage->iClipl);
- pData->iDestt = MAX_COORD (pData->iDestt, pImage->iClipt);
- pData->iDestr = MIN_COORD (pData->iDestr, pImage->iClipr);
- pData->iDestb = MIN_COORD (pData->iDestb, pImage->iClipb);
- }
- /* determine source starting point */
- pData->iSourcel = MAX_COORD ((mng_int32)0, pData->iDestl - pImage->iPosx);
- pData->iSourcet = MAX_COORD ((mng_int32)0, pData->iDestt - pImage->iPosy);
-
- if ((pImage->pImgbuf->iWidth) && (pImage->pImgbuf->iHeight))
- { /* and maximum size */
- pData->iSourcer = MIN_COORD ((mng_int32)pImage->pImgbuf->iWidth,
- pData->iSourcel + pData->iDestr - pData->iDestl);
- pData->iSourceb = MIN_COORD ((mng_int32)pImage->pImgbuf->iHeight,
- pData->iSourcet + pData->iDestb - pData->iDestt);
- }
- else /* it's a single image ! */
- {
- pData->iSourcer = pData->iSourcel + pData->iDestr - pData->iDestl;
- pData->iSourceb = pData->iSourcet + pData->iDestb - pData->iDestt;
- }
-
- pData->iLayerseq++; /* count the layer ! */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_NEXT_LAYER, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_display_image (mng_datap pData,
- mng_imagep pImage,
- mng_bool bLayeradvanced)
-{
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_IMAGE, MNG_LC_START);
-#endif
- /* actively running ? */
-#ifndef MNG_SKIPCHUNK_MAGN
- if (((pData->bRunning) || (pData->bSearching)) && (!pData->bSkipping))
- {
- if ( (!pData->iBreakpoint) && /* needs magnification ? */
- ( (pImage->iMAGN_MethodX) || (pImage->iMAGN_MethodY) ) )
- {
- iRetcode = mng_magnify_imageobject (pData, pImage);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- }
-#endif
-
- pData->pRetrieveobj = pImage; /* so retrieve-row and color-correction can find it */
-
- if (!bLayeradvanced) /* need to advance the layer ? */
- {
- mng_imagep pSave = pData->pCurrentobj;
- pData->pCurrentobj = pImage;
- next_layer (pData); /* advance to next layer */
- pData->pCurrentobj = pSave;
- }
- /* need to restore the background ? */
- if ((!pData->bTimerset) && (pData->bRestorebkgd))
- {
- mng_imagep pSave = pData->pCurrentobj;
- pData->pCurrentobj = pImage;
- pData->bRestorebkgd = MNG_FALSE;
- iRetcode = load_bkgdlayer (pData);
- pData->pCurrentobj = pSave;
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- pData->iLayerseq++; /* and it counts as a layer then ! */
- }
- /* actively running ? */
- if (((pData->bRunning) || (pData->bSearching)) && (!pData->bSkipping))
- {
- if (!pData->bTimerset) /* all systems still go ? */
- {
- pData->iBreakpoint = 0; /* let's make absolutely sure... */
- /* anything to display ? */
- if ((pData->iDestr >= pData->iDestl) && (pData->iDestb >= pData->iDestt))
- {
- mng_int32 iY;
-
- set_display_routine (pData); /* determine display routine */
- /* and image-buffer retrieval routine */
- switch (pImage->pImgbuf->iColortype)
- {
- case 0 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pImage->pImgbuf->iBitdepth > 8)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_g16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_g8;
-
- pData->bIsOpaque = (mng_bool)(!pImage->pImgbuf->bHasTRNS);
- break;
- }
-
- case 2 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pImage->pImgbuf->iBitdepth > 8)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgb16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgb8;
-
- pData->bIsOpaque = (mng_bool)(!pImage->pImgbuf->bHasTRNS);
- break;
- }
-
-
- case 3 : { pData->fRetrieverow = (mng_fptr)mng_retrieve_idx8;
- pData->bIsOpaque = (mng_bool)(!pImage->pImgbuf->bHasTRNS);
- break;
- }
-
-
- case 4 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pImage->pImgbuf->iBitdepth > 8)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_ga16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_ga8;
-
- pData->bIsOpaque = MNG_FALSE;
- break;
- }
-
-
- case 6 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pImage->pImgbuf->iBitdepth > 8)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgba16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgba8;
-
- pData->bIsOpaque = MNG_FALSE;
- break;
- }
-
- case 8 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pImage->pImgbuf->iBitdepth > 8)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_g16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_g8;
-
- pData->bIsOpaque = MNG_TRUE;
- break;
- }
-
- case 10 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pImage->pImgbuf->iBitdepth > 8)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgb16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgb8;
-
- pData->bIsOpaque = MNG_TRUE;
- break;
- }
-
-
- case 12 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pImage->pImgbuf->iBitdepth > 8)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_ga16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_ga8;
-
- pData->bIsOpaque = MNG_FALSE;
- break;
- }
-
-
- case 14 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pImage->pImgbuf->iBitdepth > 8)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgba16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgba8;
-
- pData->bIsOpaque = MNG_FALSE;
- break;
- }
-
- }
-
- pData->iPass = -1; /* these are the object's dimensions now */
- pData->iRow = pData->iSourcet;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pImage->pImgbuf->iWidth;
- pData->iRowsize = pData->iRowsamples << 2;
- pData->bIsRGBA16 = MNG_FALSE;
- /* adjust for 16-bit object ? */
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pImage->pImgbuf->iBitdepth > 8)
- {
- pData->bIsRGBA16 = MNG_TRUE;
- pData->iRowsize = pData->iRowsamples << 3;
- }
-#endif
-
- pData->fCorrectrow = MNG_NULL; /* default no color-correction */
-
-#ifdef MNG_NO_CMS
- iRetcode = MNG_NOERROR;
-#else
-#if defined(MNG_FULL_CMS) /* determine color-management routine */
- iRetcode = mng_init_full_cms (pData, MNG_FALSE, MNG_FALSE, MNG_TRUE);
-#elif defined(MNG_GAMMA_ONLY)
- iRetcode = mng_init_gamma_only (pData, MNG_FALSE, MNG_FALSE, MNG_TRUE);
-#elif defined(MNG_APP_CMS)
- iRetcode = mng_init_app_cms (pData, MNG_FALSE, MNG_FALSE, MNG_TRUE);
-#endif
- if (iRetcode) /* on error bail out */
- return iRetcode;
-#endif /* MNG_NO_CMS */
- /* get a temporary row-buffer */
- MNG_ALLOC (pData, pData->pRGBArow, pData->iRowsize);
-
- iY = pData->iSourcet; /* this is where we start */
-
- while ((!iRetcode) && (iY < pData->iSourceb))
- { /* get a row */
- iRetcode = ((mng_retrieverow)pData->fRetrieverow) (pData);
- /* color correction ? */
- if ((!iRetcode) && (pData->fCorrectrow))
- iRetcode = ((mng_correctrow)pData->fCorrectrow) (pData);
-
- if (!iRetcode) /* so... display it */
- iRetcode = ((mng_displayrow)pData->fDisplayrow) (pData);
-
- if (!iRetcode) /* adjust variables for next row */
- iRetcode = mng_next_row (pData);
-
- iY++; /* and next line */
- }
- /* drop the temporary row-buffer */
- MNG_FREE (pData, pData->pRGBArow, pData->iRowsize);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#if defined(MNG_FULL_CMS) /* cleanup cms stuff */
- iRetcode = mng_clear_cms (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-#endif
- }
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_IMAGE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* whehehe, this is good ! */
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode mng_execute_delta_image (mng_datap pData,
- mng_imagep pTarget,
- mng_imagep pDelta)
-{
- mng_imagedatap pBuftarget = pTarget->pImgbuf;
- mng_imagedatap pBufdelta = pDelta->pImgbuf;
- mng_uint32 iY;
- mng_retcode iRetcode;
- mng_ptr pSaveRGBA;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_EXECUTE_DELTA_IMAGE, MNG_LC_START);
-#endif
- /* actively running ? */
- if (((pData->bRunning) || (pData->bSearching)) && (!pData->bSkipping))
- {
- if (pBufdelta->bHasPLTE) /* palette in delta ? */
- {
- mng_uint32 iX;
- /* new palette larger than old one ? */
- if ((!pBuftarget->bHasPLTE) || (pBuftarget->iPLTEcount < pBufdelta->iPLTEcount))
- pBuftarget->iPLTEcount = pBufdelta->iPLTEcount;
- /* it's definitely got a PLTE now */
- pBuftarget->bHasPLTE = MNG_TRUE;
-
- for (iX = 0; iX < pBufdelta->iPLTEcount; iX++)
- {
- pBuftarget->aPLTEentries[iX].iRed = pBufdelta->aPLTEentries[iX].iRed;
- pBuftarget->aPLTEentries[iX].iGreen = pBufdelta->aPLTEentries[iX].iGreen;
- pBuftarget->aPLTEentries[iX].iBlue = pBufdelta->aPLTEentries[iX].iBlue;
- }
- }
-
- if (pBufdelta->bHasTRNS) /* cheap transparency in delta ? */
- {
- switch (pData->iColortype) /* drop it into the target */
- {
- case 0: { /* gray */
- pBuftarget->iTRNSgray = pBufdelta->iTRNSgray;
- pBuftarget->iTRNSred = 0;
- pBuftarget->iTRNSgreen = 0;
- pBuftarget->iTRNSblue = 0;
- pBuftarget->iTRNScount = 0;
- break;
- }
- case 2: { /* rgb */
- pBuftarget->iTRNSgray = 0;
- pBuftarget->iTRNSred = pBufdelta->iTRNSred;
- pBuftarget->iTRNSgreen = pBufdelta->iTRNSgreen;
- pBuftarget->iTRNSblue = pBufdelta->iTRNSblue;
- pBuftarget->iTRNScount = 0;
- break;
- }
- case 3: { /* indexed */
- pBuftarget->iTRNSgray = 0;
- pBuftarget->iTRNSred = 0;
- pBuftarget->iTRNSgreen = 0;
- pBuftarget->iTRNSblue = 0;
- /* existing range smaller than new one ? */
- if ((!pBuftarget->bHasTRNS) || (pBuftarget->iTRNScount < pBufdelta->iTRNScount))
- pBuftarget->iTRNScount = pBufdelta->iTRNScount;
-
- MNG_COPY (pBuftarget->aTRNSentries, pBufdelta->aTRNSentries, pBufdelta->iTRNScount);
- break;
- }
- }
-
- pBuftarget->bHasTRNS = MNG_TRUE; /* tell it it's got a tRNS now */
- }
-
-#ifndef MNG_SKIPCHUNK_bKGD
- if (pBufdelta->bHasBKGD) /* bkgd in source ? */
- { /* drop it onto the target */
- pBuftarget->bHasBKGD = MNG_TRUE;
- pBuftarget->iBKGDindex = pBufdelta->iBKGDindex;
- pBuftarget->iBKGDgray = pBufdelta->iBKGDgray;
- pBuftarget->iBKGDred = pBufdelta->iBKGDred;
- pBuftarget->iBKGDgreen = pBufdelta->iBKGDgreen;
- pBuftarget->iBKGDblue = pBufdelta->iBKGDblue;
- }
-#endif
-
- if (pBufdelta->bHasGAMA) /* gamma in source ? */
- {
- pBuftarget->bHasGAMA = MNG_TRUE; /* drop it onto the target */
- pBuftarget->iGamma = pBufdelta->iGamma;
- }
-
-#ifndef MNG_SKIPCHUNK_cHRM
- if (pBufdelta->bHasCHRM) /* chroma in delta ? */
- { /* drop it onto the target */
- pBuftarget->bHasCHRM = MNG_TRUE;
- pBuftarget->iWhitepointx = pBufdelta->iWhitepointx;
- pBuftarget->iWhitepointy = pBufdelta->iWhitepointy;
- pBuftarget->iPrimaryredx = pBufdelta->iPrimaryredx;
- pBuftarget->iPrimaryredy = pBufdelta->iPrimaryredy;
- pBuftarget->iPrimarygreenx = pBufdelta->iPrimarygreenx;
- pBuftarget->iPrimarygreeny = pBufdelta->iPrimarygreeny;
- pBuftarget->iPrimarybluex = pBufdelta->iPrimarybluex;
- pBuftarget->iPrimarybluey = pBufdelta->iPrimarybluey;
- }
-#endif
-
-#ifndef MNG_SKIPCHUNK_sRGB
- if (pBufdelta->bHasSRGB) /* sRGB in delta ? */
- { /* drop it onto the target */
- pBuftarget->bHasSRGB = MNG_TRUE;
- pBuftarget->iRenderingintent = pBufdelta->iRenderingintent;
- }
-#endif
-
-#ifndef MNG_SKIPCHUNK_iCCP
- if (pBufdelta->bHasICCP) /* ICC profile in delta ? */
- {
- pBuftarget->bHasICCP = MNG_TRUE; /* drop it onto the target */
-
- if (pBuftarget->pProfile) /* profile existed ? */
- MNG_FREEX (pData, pBuftarget->pProfile, pBuftarget->iProfilesize);
- /* allocate a buffer & copy it */
- MNG_ALLOC (pData, pBuftarget->pProfile, pBufdelta->iProfilesize);
- MNG_COPY (pBuftarget->pProfile, pBufdelta->pProfile, pBufdelta->iProfilesize);
- /* store its length as well */
- pBuftarget->iProfilesize = pBufdelta->iProfilesize;
- }
-#endif
- /* need to execute delta pixels ? */
- if ((!pData->bDeltaimmediate) && (pData->iDeltatype != MNG_DELTATYPE_NOCHANGE))
- {
- pData->fScalerow = MNG_NULL; /* not needed by default */
-
- switch (pBufdelta->iBitdepth) /* determine scaling routine */
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : {
- switch (pBuftarget->iBitdepth)
- {
- case 2 : { pData->fScalerow = (mng_fptr)mng_scale_g1_g2; break; }
- case 4 : { pData->fScalerow = (mng_fptr)mng_scale_g1_g4; break; }
-
- case 8 : { pData->fScalerow = (mng_fptr)mng_scale_g1_g8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fScalerow = (mng_fptr)mng_scale_g1_g16; break; }
-#endif
- }
- break;
- }
-
- case 2 : {
- switch (pBuftarget->iBitdepth)
- {
- case 1 : { pData->fScalerow = (mng_fptr)mng_scale_g2_g1; break; }
- case 4 : { pData->fScalerow = (mng_fptr)mng_scale_g2_g4; break; }
- case 8 : { pData->fScalerow = (mng_fptr)mng_scale_g2_g8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fScalerow = (mng_fptr)mng_scale_g2_g16; break; }
-#endif
- }
- break;
- }
-
- case 4 : {
- switch (pBuftarget->iBitdepth)
- {
- case 1 : { pData->fScalerow = (mng_fptr)mng_scale_g4_g1; break; }
- case 2 : { pData->fScalerow = (mng_fptr)mng_scale_g4_g2; break; }
- case 8 : { pData->fScalerow = (mng_fptr)mng_scale_g4_g8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fScalerow = (mng_fptr)mng_scale_g4_g16; break; }
-#endif
- }
- break;
- }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
-
- case 8 : {
- switch (pBufdelta->iColortype)
- {
- case 0 : ;
- case 3 : ;
- case 8 : {
- switch (pBuftarget->iBitdepth)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : { pData->fScalerow = (mng_fptr)mng_scale_g8_g1; break; }
- case 2 : { pData->fScalerow = (mng_fptr)mng_scale_g8_g2; break; }
- case 4 : { pData->fScalerow = (mng_fptr)mng_scale_g8_g4; break; }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fScalerow = (mng_fptr)mng_scale_g8_g16; break; }
-#endif
- }
- break;
- }
- case 2 : ;
- case 10 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pBuftarget->iBitdepth == 16)
- pData->fScalerow = (mng_fptr)mng_scale_rgb8_rgb16;
-#endif
- break;
- }
- case 4 : ;
- case 12 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pBuftarget->iBitdepth == 16)
- pData->fScalerow = (mng_fptr)mng_scale_ga8_ga16;
-#endif
- break;
- }
- case 6 : ;
- case 14 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pBuftarget->iBitdepth == 16)
- pData->fScalerow = (mng_fptr)mng_scale_rgba8_rgba16;
-#endif
- break;
- }
- }
- break;
- }
-
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : {
- switch (pBufdelta->iColortype)
- {
- case 0 : ;
- case 3 : ;
- case 8 : {
- switch (pBuftarget->iBitdepth)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : { pData->fScalerow = (mng_fptr)mng_scale_g16_g1; break; }
- case 2 : { pData->fScalerow = (mng_fptr)mng_scale_g16_g2; break; }
- case 4 : { pData->fScalerow = (mng_fptr)mng_scale_g16_g4; break; }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case 8 : { pData->fScalerow = (mng_fptr)mng_scale_g16_g8; break; }
- }
- break;
- }
- case 2 : ;
- case 10 : {
- if (pBuftarget->iBitdepth == 8)
- pData->fScalerow = (mng_fptr)mng_scale_rgb16_rgb8;
- break;
- }
- case 4 : ;
- case 12 : {
- if (pBuftarget->iBitdepth == 8)
- pData->fScalerow = (mng_fptr)mng_scale_ga16_ga8;
- break;
- }
- case 6 : ;
- case 14 : {
- if (pBuftarget->iBitdepth == 8)
- pData->fScalerow = (mng_fptr)mng_scale_rgba16_rgba8;
- break;
- }
- }
- break;
- }
-#endif
-
- }
-
- pData->fDeltarow = MNG_NULL; /* let's assume there's nothing to do */
-
- switch (pBuftarget->iColortype) /* determine delta processing routine */
- {
- case 0 : ;
- case 8 : { /* gray */
- if ((pData->iDeltatype == MNG_DELTATYPE_REPLACE ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- {
- if ((pBufdelta->iColortype == 0) || (pBufdelta->iColortype == 3) ||
- (pBufdelta->iColortype == 8))
- {
- switch (pBuftarget->iBitdepth)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : { pData->fDeltarow = (mng_fptr)mng_delta_g1_g1; break; }
- case 2 : { pData->fDeltarow = (mng_fptr)mng_delta_g2_g2; break; }
- case 4 : { pData->fDeltarow = (mng_fptr)mng_delta_g4_g4; break; }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case 8 : { pData->fDeltarow = (mng_fptr)mng_delta_g8_g8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fDeltarow = (mng_fptr)mng_delta_g16_g16; break; }
-#endif
- }
- }
- }
-
- break;
- }
-
- case 2 : ;
- case 10 : { /* rgb */
- if ((pData->iDeltatype == MNG_DELTATYPE_REPLACE ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- {
- if ((pBufdelta->iColortype == 2) || (pBufdelta->iColortype == 10))
- {
- switch (pBuftarget->iBitdepth)
- {
- case 8 : { pData->fDeltarow = (mng_fptr)mng_delta_rgb8_rgb8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fDeltarow = (mng_fptr)mng_delta_rgb16_rgb16; break; }
-#endif
- }
- }
- }
-
- break;
- }
-
- case 3 : { /* indexed; abuse gray routines */
- if ((pData->iDeltatype == MNG_DELTATYPE_REPLACE ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- {
- if ((pBufdelta->iColortype == 0) || (pBufdelta->iColortype == 3))
- {
- switch (pBuftarget->iBitdepth)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : { pData->fDeltarow = (mng_fptr)mng_delta_g1_g1; break; }
- case 2 : { pData->fDeltarow = (mng_fptr)mng_delta_g2_g2; break; }
- case 4 : { pData->fDeltarow = (mng_fptr)mng_delta_g4_g4; break; }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case 8 : { pData->fDeltarow = (mng_fptr)mng_delta_g8_g8; break; }
- }
- }
- }
-
- break;
- }
-
- case 4 : ;
- case 12 : { /* gray + alpha */
- if ((pData->iDeltatype == MNG_DELTATYPE_REPLACE ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- {
- if ((pBufdelta->iColortype == 4) || (pBufdelta->iColortype == 12))
- {
- switch (pBuftarget->iBitdepth)
- {
- case 8 : { pData->fDeltarow = (mng_fptr)mng_delta_ga8_ga8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fDeltarow = (mng_fptr)mng_delta_ga16_ga16; break; }
-#endif
- }
- }
- }
- else
- if ((pData->iDeltatype == MNG_DELTATYPE_BLOCKCOLORADD ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKCOLORREPLACE) )
- {
- if ((pBufdelta->iColortype == 0) || (pBufdelta->iColortype == 3) ||
- (pBufdelta->iColortype == 8))
- {
- switch (pBuftarget->iBitdepth)
- {
- case 8 : { pData->fDeltarow = (mng_fptr)mng_delta_ga8_g8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fDeltarow = (mng_fptr)mng_delta_ga16_g16; break; }
-#endif
- }
- }
- }
- else
- if ((pData->iDeltatype == MNG_DELTATYPE_BLOCKALPHAADD ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKALPHAREPLACE) )
- {
- if ((pBufdelta->iColortype == 0) || (pBufdelta->iColortype == 3))
- {
- switch (pBuftarget->iBitdepth)
- {
- case 8 : { pData->fDeltarow = (mng_fptr)mng_delta_ga8_a8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fDeltarow = (mng_fptr)mng_delta_ga16_a16; break; }
-#endif
- }
- }
- }
-
- break;
- }
-
- case 6 : ;
- case 14 : { /* rgb + alpha */
- if ((pData->iDeltatype == MNG_DELTATYPE_REPLACE ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- {
- if ((pBufdelta->iColortype == 6) || (pBufdelta->iColortype == 14))
- {
- switch (pBuftarget->iBitdepth)
- {
- case 8 : { pData->fDeltarow = (mng_fptr)mng_delta_rgba8_rgba8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fDeltarow = (mng_fptr)mng_delta_rgba16_rgba16; break; }
-#endif
- }
- }
- }
- else
- if ((pData->iDeltatype == MNG_DELTATYPE_BLOCKCOLORADD ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKCOLORREPLACE) )
- {
- if ((pBufdelta->iColortype == 2) || (pBufdelta->iColortype == 10))
- {
- switch (pBuftarget->iBitdepth)
- {
- case 8 : { pData->fDeltarow = (mng_fptr)mng_delta_rgba8_rgb8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fDeltarow = (mng_fptr)mng_delta_rgba16_rgb16; break; }
-#endif
- }
- }
- }
- else
- if ((pData->iDeltatype == MNG_DELTATYPE_BLOCKALPHAADD ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKALPHAREPLACE) )
- {
- if ((pBufdelta->iColortype == 0) || (pBufdelta->iColortype == 3))
- {
- switch (pBuftarget->iBitdepth)
- {
- case 8 : { pData->fDeltarow = (mng_fptr)mng_delta_rgba8_a8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fDeltarow = (mng_fptr)mng_delta_rgba16_a16; break; }
-#endif
- }
- }
- }
-
- break;
- }
-
- }
-
- if (pData->fDeltarow) /* do we need to take action ? */
- {
- pData->iPass = -1; /* setup row dimensions and stuff */
- pData->iRow = pData->iDeltaBlocky;
- pData->iRowinc = 1;
- pData->iCol = pData->iDeltaBlockx;
- pData->iColinc = 1;
- pData->iRowsamples = pBufdelta->iWidth;
- pData->iRowsize = pBuftarget->iRowsize;
- /* indicate where to retrieve & where to store */
- pData->pRetrieveobj = (mng_objectp)pDelta;
- pData->pStoreobj = (mng_objectp)pTarget;
-
- pSaveRGBA = pData->pRGBArow; /* save current temp-buffer! */
- /* get a temporary row-buffer */
- MNG_ALLOC (pData, pData->pRGBArow, (pBufdelta->iRowsize << 1));
-
- iY = 0; /* this is where we start */
- iRetcode = MNG_NOERROR; /* still oke for now */
-
- while ((!iRetcode) && (iY < pBufdelta->iHeight))
- { /* get a row */
- mng_uint8p pWork = pBufdelta->pImgdata + (iY * pBufdelta->iRowsize);
-
- MNG_COPY (pData->pRGBArow, pWork, pBufdelta->iRowsize);
-
- if (pData->fScalerow) /* scale it (if necessary) */
- iRetcode = ((mng_scalerow)pData->fScalerow) (pData);
-
- if (!iRetcode) /* and... execute it */
- iRetcode = ((mng_deltarow)pData->fDeltarow) (pData);
-
- if (!iRetcode) /* adjust variables for next row */
- iRetcode = mng_next_row (pData);
-
- iY++; /* and next line */
- }
- /* drop the temporary row-buffer */
- MNG_FREE (pData, pData->pRGBArow, (pBufdelta->iRowsize << 1));
- pData->pRGBArow = pSaveRGBA; /* restore saved temp-buffer! */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- }
- else
- MNG_ERROR (pData, MNG_INVALIDDELTA);
-
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_EXECUTE_DELTA_IMAGE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_DELTA_PNG */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SAVE
-MNG_LOCAL mng_retcode save_state (mng_datap pData)
-{
- mng_savedatap pSave;
- mng_imagep pImage;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SAVE_STATE, MNG_LC_START);
-#endif
-
- if (pData->pSavedata) /* sanity check */
- MNG_ERROR (pData, MNG_INTERNALERROR);
- /* get a buffer for saving */
- MNG_ALLOC (pData, pData->pSavedata, sizeof (mng_savedata));
-
- pSave = pData->pSavedata; /* address it more directly */
- /* and copy global data from the main struct */
-#if defined(MNG_SUPPORT_READ) || defined(MNG_SUPPORT_WRITE)
- pSave->bHasglobalPLTE = pData->bHasglobalPLTE;
- pSave->bHasglobalTRNS = pData->bHasglobalTRNS;
- pSave->bHasglobalGAMA = pData->bHasglobalGAMA;
- pSave->bHasglobalCHRM = pData->bHasglobalCHRM;
- pSave->bHasglobalSRGB = pData->bHasglobalSRGB;
- pSave->bHasglobalICCP = pData->bHasglobalICCP;
- pSave->bHasglobalBKGD = pData->bHasglobalBKGD;
-#endif /* MNG_SUPPORT_READ || MNG_SUPPORT_WRITE */
-
-#ifndef MNG_SKIPCHUNK_BACK
- pSave->iBACKred = pData->iBACKred;
- pSave->iBACKgreen = pData->iBACKgreen;
- pSave->iBACKblue = pData->iBACKblue;
- pSave->iBACKmandatory = pData->iBACKmandatory;
- pSave->iBACKimageid = pData->iBACKimageid;
- pSave->iBACKtile = pData->iBACKtile;
-#endif
-
-#ifndef MNG_SKIPCHUNK_FRAM
- pSave->iFRAMmode = pData->iFRAMmode;
- pSave->iFRAMdelay = pData->iFRAMdelay;
- pSave->iFRAMtimeout = pData->iFRAMtimeout;
- pSave->bFRAMclipping = pData->bFRAMclipping;
- pSave->iFRAMclipl = pData->iFRAMclipl;
- pSave->iFRAMclipr = pData->iFRAMclipr;
- pSave->iFRAMclipt = pData->iFRAMclipt;
- pSave->iFRAMclipb = pData->iFRAMclipb;
-#endif
-
- pSave->iGlobalPLTEcount = pData->iGlobalPLTEcount;
-
- MNG_COPY (pSave->aGlobalPLTEentries, pData->aGlobalPLTEentries, sizeof (mng_rgbpaltab));
-
- pSave->iGlobalTRNSrawlen = pData->iGlobalTRNSrawlen;
- MNG_COPY (pSave->aGlobalTRNSrawdata, pData->aGlobalTRNSrawdata, 256);
-
- pSave->iGlobalGamma = pData->iGlobalGamma;
-
-#ifndef MNG_SKIPCHUNK_cHRM
- pSave->iGlobalWhitepointx = pData->iGlobalWhitepointx;
- pSave->iGlobalWhitepointy = pData->iGlobalWhitepointy;
- pSave->iGlobalPrimaryredx = pData->iGlobalPrimaryredx;
- pSave->iGlobalPrimaryredy = pData->iGlobalPrimaryredy;
- pSave->iGlobalPrimarygreenx = pData->iGlobalPrimarygreenx;
- pSave->iGlobalPrimarygreeny = pData->iGlobalPrimarygreeny;
- pSave->iGlobalPrimarybluex = pData->iGlobalPrimarybluex;
- pSave->iGlobalPrimarybluey = pData->iGlobalPrimarybluey;
-#endif
-
-#ifndef MNG_SKIPCHUNK_sRGB
- pSave->iGlobalRendintent = pData->iGlobalRendintent;
-#endif
-
-#ifndef MNG_SKIPCHUNK_iCCP
- pSave->iGlobalProfilesize = pData->iGlobalProfilesize;
-
- if (pSave->iGlobalProfilesize) /* has a profile ? */
- { /* then copy that ! */
- MNG_ALLOC (pData, pSave->pGlobalProfile, pSave->iGlobalProfilesize);
- MNG_COPY (pSave->pGlobalProfile, pData->pGlobalProfile, pSave->iGlobalProfilesize);
- }
-#endif
-
-#ifndef MNG_SKIPCHUNK_bKGD
- pSave->iGlobalBKGDred = pData->iGlobalBKGDred;
- pSave->iGlobalBKGDgreen = pData->iGlobalBKGDgreen;
- pSave->iGlobalBKGDblue = pData->iGlobalBKGDblue;
-#endif
-
- /* freeze current image objects */
- pImage = (mng_imagep)pData->pFirstimgobj;
-
- while (pImage)
- { /* freeze the object AND its buffer */
- pImage->bFrozen = MNG_TRUE;
- pImage->pImgbuf->bFrozen = MNG_TRUE;
- /* neeeext */
- pImage = (mng_imagep)pImage->sHeader.pNext;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SAVE_STATE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_reset_objzero (mng_datap pData)
-{
- mng_imagep pImage = (mng_imagep)pData->pObjzero;
- mng_retcode iRetcode = mng_reset_object_details (pData, pImage, 0, 0, 0,
- 0, 0, 0, 0, MNG_TRUE);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- pImage->bVisible = MNG_TRUE;
- pImage->bViewable = MNG_TRUE;
- pImage->iPosx = 0;
- pImage->iPosy = 0;
- pImage->bClipped = MNG_FALSE;
- pImage->iClipl = 0;
- pImage->iClipr = 0;
- pImage->iClipt = 0;
- pImage->iClipb = 0;
-#ifndef MNG_SKIPCHUNK_MAGN
- pImage->iMAGN_MethodX = 0;
- pImage->iMAGN_MethodY = 0;
- pImage->iMAGN_MX = 0;
- pImage->iMAGN_MY = 0;
- pImage->iMAGN_ML = 0;
- pImage->iMAGN_MR = 0;
- pImage->iMAGN_MT = 0;
- pImage->iMAGN_MB = 0;
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode restore_state (mng_datap pData)
-{
-#ifndef MNG_SKIPCHUNK_SAVE
- mng_savedatap pSave;
-#endif
- mng_imagep pImage;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_STATE, MNG_LC_START);
-#endif
- /* restore object 0 status !!! */
- iRetcode = mng_reset_objzero (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* fresh cycle; fake no frames done yet */
- pData->bFramedone = MNG_FALSE;
-
-#ifndef MNG_SKIPCHUNK_SAVE
- if (pData->pSavedata) /* do we have a saved state ? */
- {
- pSave = pData->pSavedata; /* address it more directly */
- /* and copy it back to the main struct */
-#if defined(MNG_SUPPORT_READ) || defined(MNG_SUPPORT_WRITE)
- pData->bHasglobalPLTE = pSave->bHasglobalPLTE;
- pData->bHasglobalTRNS = pSave->bHasglobalTRNS;
- pData->bHasglobalGAMA = pSave->bHasglobalGAMA;
- pData->bHasglobalCHRM = pSave->bHasglobalCHRM;
- pData->bHasglobalSRGB = pSave->bHasglobalSRGB;
- pData->bHasglobalICCP = pSave->bHasglobalICCP;
- pData->bHasglobalBKGD = pSave->bHasglobalBKGD;
-#endif /* MNG_SUPPORT_READ || MNG_SUPPORT_WRITE */
-
-#ifndef MNG_SKIPCHUNK_BACK
- pData->iBACKred = pSave->iBACKred;
- pData->iBACKgreen = pSave->iBACKgreen;
- pData->iBACKblue = pSave->iBACKblue;
- pData->iBACKmandatory = pSave->iBACKmandatory;
- pData->iBACKimageid = pSave->iBACKimageid;
- pData->iBACKtile = pSave->iBACKtile;
-#endif
-
-#ifndef MNG_SKIPCHUNK_FRAM
- pData->iFRAMmode = pSave->iFRAMmode;
-/* pData->iFRAMdelay = pSave->iFRAMdelay; */
- pData->iFRAMtimeout = pSave->iFRAMtimeout;
- pData->bFRAMclipping = pSave->bFRAMclipping;
- pData->iFRAMclipl = pSave->iFRAMclipl;
- pData->iFRAMclipr = pSave->iFRAMclipr;
- pData->iFRAMclipt = pSave->iFRAMclipt;
- pData->iFRAMclipb = pSave->iFRAMclipb;
- /* NOOOOOOOOOOOO */
-/* pData->iFramemode = pSave->iFRAMmode;
- pData->iFramedelay = pSave->iFRAMdelay;
- pData->iFrametimeout = pSave->iFRAMtimeout;
- pData->bFrameclipping = pSave->bFRAMclipping;
- pData->iFrameclipl = pSave->iFRAMclipl;
- pData->iFrameclipr = pSave->iFRAMclipr;
- pData->iFrameclipt = pSave->iFRAMclipt;
- pData->iFrameclipb = pSave->iFRAMclipb; */
-
-/* pData->iNextdelay = pSave->iFRAMdelay; */
- pData->iNextdelay = pData->iFramedelay;
-#endif
-
- pData->iGlobalPLTEcount = pSave->iGlobalPLTEcount;
- MNG_COPY (pData->aGlobalPLTEentries, pSave->aGlobalPLTEentries, sizeof (mng_rgbpaltab));
-
- pData->iGlobalTRNSrawlen = pSave->iGlobalTRNSrawlen;
- MNG_COPY (pData->aGlobalTRNSrawdata, pSave->aGlobalTRNSrawdata, 256);
-
- pData->iGlobalGamma = pSave->iGlobalGamma;
-
-#ifndef MNG_SKIPCHUNK_cHRM
- pData->iGlobalWhitepointx = pSave->iGlobalWhitepointx;
- pData->iGlobalWhitepointy = pSave->iGlobalWhitepointy;
- pData->iGlobalPrimaryredx = pSave->iGlobalPrimaryredx;
- pData->iGlobalPrimaryredy = pSave->iGlobalPrimaryredy;
- pData->iGlobalPrimarygreenx = pSave->iGlobalPrimarygreenx;
- pData->iGlobalPrimarygreeny = pSave->iGlobalPrimarygreeny;
- pData->iGlobalPrimarybluex = pSave->iGlobalPrimarybluex;
- pData->iGlobalPrimarybluey = pSave->iGlobalPrimarybluey;
-#endif
-
- pData->iGlobalRendintent = pSave->iGlobalRendintent;
-
-#ifndef MNG_SKIPCHUNK_iCCP
- pData->iGlobalProfilesize = pSave->iGlobalProfilesize;
-
- if (pData->iGlobalProfilesize) /* has a profile ? */
- { /* then copy that ! */
- MNG_ALLOC (pData, pData->pGlobalProfile, pData->iGlobalProfilesize);
- MNG_COPY (pData->pGlobalProfile, pSave->pGlobalProfile, pData->iGlobalProfilesize);
- }
-#endif
-
-#ifndef MNG_SKIPCHUNK_bKGD
- pData->iGlobalBKGDred = pSave->iGlobalBKGDred;
- pData->iGlobalBKGDgreen = pSave->iGlobalBKGDgreen;
- pData->iGlobalBKGDblue = pSave->iGlobalBKGDblue;
-#endif
- }
- else /* no saved-data; so reset the lot */
-#endif /* SKIPCHUNK_SAVE */
- {
-#if defined(MNG_SUPPORT_READ) || defined(MNG_SUPPORT_WRITE)
- pData->bHasglobalPLTE = MNG_FALSE;
- pData->bHasglobalTRNS = MNG_FALSE;
- pData->bHasglobalGAMA = MNG_FALSE;
- pData->bHasglobalCHRM = MNG_FALSE;
- pData->bHasglobalSRGB = MNG_FALSE;
- pData->bHasglobalICCP = MNG_FALSE;
- pData->bHasglobalBKGD = MNG_FALSE;
-#endif /* MNG_SUPPORT_READ || MNG_SUPPORT_WRITE */
-
-#ifndef MNG_SKIPCHUNK_TERM
- if (!pData->bMisplacedTERM) /* backward compatible ugliness !!! */
- {
- pData->iBACKred = 0;
- pData->iBACKgreen = 0;
- pData->iBACKblue = 0;
- pData->iBACKmandatory = 0;
- pData->iBACKimageid = 0;
- pData->iBACKtile = 0;
- }
-#endif
-
-#ifndef MNG_SKIPCHUNK_FRAM
- pData->iFRAMmode = 1;
-/* pData->iFRAMdelay = 1; */
- pData->iFRAMtimeout = 0x7fffffffl;
- pData->bFRAMclipping = MNG_FALSE;
- pData->iFRAMclipl = 0;
- pData->iFRAMclipr = 0;
- pData->iFRAMclipt = 0;
- pData->iFRAMclipb = 0;
- /* NOOOOOOOOOOOO */
-/* pData->iFramemode = 1;
- pData->iFramedelay = 1;
- pData->iFrametimeout = 0x7fffffffl;
- pData->bFrameclipping = MNG_FALSE;
- pData->iFrameclipl = 0;
- pData->iFrameclipr = 0;
- pData->iFrameclipt = 0;
- pData->iFrameclipb = 0; */
-
-/* pData->iNextdelay = 1; */
- pData->iNextdelay = pData->iFramedelay;
-#endif
-
- pData->iGlobalPLTEcount = 0;
-
- pData->iGlobalTRNSrawlen = 0;
-
- pData->iGlobalGamma = 0;
-
-#ifndef MNG_SKIPCHUNK_cHRM
- pData->iGlobalWhitepointx = 0;
- pData->iGlobalWhitepointy = 0;
- pData->iGlobalPrimaryredx = 0;
- pData->iGlobalPrimaryredy = 0;
- pData->iGlobalPrimarygreenx = 0;
- pData->iGlobalPrimarygreeny = 0;
- pData->iGlobalPrimarybluex = 0;
- pData->iGlobalPrimarybluey = 0;
-#endif
-
- pData->iGlobalRendintent = 0;
-
-#ifndef MNG_SKIPCHUNK_iCCP
- if (pData->iGlobalProfilesize) /* free a previous profile ? */
- MNG_FREE (pData, pData->pGlobalProfile, pData->iGlobalProfilesize);
-
- pData->iGlobalProfilesize = 0;
-#endif
-
-#ifndef MNG_SKIPCHUNK_bKGD
- pData->iGlobalBKGDred = 0;
- pData->iGlobalBKGDgreen = 0;
- pData->iGlobalBKGDblue = 0;
-#endif
- }
-
-#ifndef MNG_SKIPCHUNK_TERM
- if (!pData->bMisplacedTERM) /* backward compatible ugliness !!! */
- {
- pImage = (mng_imagep)pData->pFirstimgobj;
- /* drop un-frozen image objects */
- while (pImage)
- {
- mng_imagep pNext = (mng_imagep)pImage->sHeader.pNext;
-
- if (!pImage->bFrozen) /* is it un-frozen ? */
- {
- mng_imagep pPrev = (mng_imagep)pImage->sHeader.pPrev;
-
- if (pPrev) /* unlink it */
- pPrev->sHeader.pNext = pNext;
- else
- pData->pFirstimgobj = pNext;
-
- if (pNext)
- pNext->sHeader.pPrev = pPrev;
- else
- pData->pLastimgobj = pPrev;
-
- if (pImage->pImgbuf->bFrozen) /* buffer frozen ? */
- {
- if (pImage->pImgbuf->iRefcount < 2)
- MNG_ERROR (pData, MNG_INTERNALERROR);
- /* decrease ref counter */
- pImage->pImgbuf->iRefcount--;
- /* just cleanup the object then */
- MNG_FREEX (pData, pImage, sizeof (mng_image));
- }
- else
- { /* free the image buffer */
- iRetcode = mng_free_imagedataobject (pData, pImage->pImgbuf);
- /* and cleanup the object */
- MNG_FREEX (pData, pImage, sizeof (mng_image));
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- }
-
- pImage = pNext; /* neeeext */
- }
- }
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_STATE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-/* * * */
-/* * General display processing routine * */
-/* * * */
-/* ************************************************************************** */
-
-mng_retcode mng_process_display (mng_datap pData)
-{
- mng_retcode iRetcode = MNG_NOERROR;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY, MNG_LC_START);
-#endif
-
- if (!pData->iBreakpoint) /* not broken previously ? */
- {
- if ((pData->iRequestframe) || (pData->iRequestlayer) || (pData->iRequesttime))
- {
- pData->bSearching = MNG_TRUE; /* indicate we're searching */
-
- iRetcode = clear_canvas (pData); /* make the canvas virgin black ?!? */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* let's start from the top, shall we */
- pData->pCurraniobj = pData->pFirstaniobj;
- }
- }
-
- do /* process the objects */
- {
- if (pData->bSearching) /* clear timer-flag when searching !!! */
- pData->bTimerset = MNG_FALSE;
- /* do we need to finish something first ? */
- if ((pData->iBreakpoint) && (pData->iBreakpoint < 99))
- {
- switch (pData->iBreakpoint) /* return to broken display routine */
- {
-#ifndef MNG_SKIPCHUNK_FRAM
- case 1 : { iRetcode = mng_process_display_fram2 (pData); break; }
-#endif
-#ifndef MNG_SKIPCHUNK_SHOW
- case 3 : ; /* same as 4 !!! */
- case 4 : { iRetcode = mng_process_display_show (pData); break; }
-#endif
-#ifndef MNG_SKIPCHUNK_CLON
- case 5 : { iRetcode = mng_process_display_clon2 (pData); break; }
-#endif
-#ifndef MNG_SKIPCHUNK_MAGN
- case 9 : { iRetcode = mng_process_display_magn2 (pData); break; }
- case 10 : { iRetcode = mng_process_display_mend2 (pData); break; }
-#endif
-#ifndef MNG_SKIPCHUNK_PAST
- case 11 : { iRetcode = mng_process_display_past2 (pData); break; }
-#endif
- default : MNG_ERROR (pData, MNG_INTERNALERROR);
- }
- }
- else
- {
- if (pData->pCurraniobj)
- iRetcode = ((mng_object_headerp)pData->pCurraniobj)->fProcess (pData, pData->pCurraniobj);
- }
-
- if (!pData->bTimerset) /* reset breakpoint flag ? */
- pData->iBreakpoint = 0;
- /* can we advance to next object ? */
- if ((!iRetcode) && (pData->pCurraniobj) &&
- (!pData->bTimerset) && (!pData->bSectionwait))
- {
- pData->pCurraniobj = ((mng_object_headerp)pData->pCurraniobj)->pNext;
- /* MEND processing to be done ? */
- if ((pData->eImagetype == mng_it_mng) && (!pData->pCurraniobj))
- iRetcode = mng_process_display_mend (pData);
-
- if (!pData->pCurraniobj) /* refresh after last image ? */
- pData->bNeedrefresh = MNG_TRUE;
- }
-
- if (pData->bSearching) /* are we looking for something ? */
- {
- if ((pData->iRequestframe) && (pData->iRequestframe <= pData->iFrameseq))
- {
- pData->iRequestframe = 0; /* found the frame ! */
- pData->bSearching = MNG_FALSE;
- }
- else
- if ((pData->iRequestlayer) && (pData->iRequestlayer <= pData->iLayerseq))
- {
- pData->iRequestlayer = 0; /* found the layer ! */
- pData->bSearching = MNG_FALSE;
- }
- else
- if ((pData->iRequesttime) && (pData->iRequesttime <= pData->iFrametime))
- {
- pData->iRequesttime = 0; /* found the playtime ! */
- pData->bSearching = MNG_FALSE;
- }
- }
- } /* until error or a break or no more objects */
- while ((!iRetcode) && (pData->pCurraniobj) &&
- (((pData->bRunning) && (!pData->bTimerset)) || (pData->bSearching)) &&
- (!pData->bSectionwait) && (!pData->bFreezing));
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* refresh needed ? */
- if ((!pData->bTimerset) && (pData->bNeedrefresh))
- {
- iRetcode = mng_display_progressive_refresh (pData, 1);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- /* timer break ? */
- if ((pData->bTimerset) && (!pData->iBreakpoint))
- pData->iBreakpoint = 99;
- else
- if (!pData->bTimerset)
- pData->iBreakpoint = 0; /* reset if no timer break */
-
- if ((!pData->bTimerset) && (!pData->pCurraniobj))
- pData->bRunning = MNG_FALSE; /* all done now ! */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-/* * * */
-/* * Chunk display processing routines * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_OPTIMIZE_FOOTPRINT_INIT
-png_imgtype mng_png_imgtype(mng_uint8 colortype, mng_uint8 bitdepth)
-{
- png_imgtype ret;
- switch (bitdepth)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1:
- {
- png_imgtype imgtype[]={png_g1,png_none,png_none,png_idx1};
- ret=imgtype[colortype];
- break;
- }
- case 2:
- {
- png_imgtype imgtype[]={png_g2,png_none,png_none,png_idx2};
- ret=imgtype[colortype];
- break;
- }
- case 4:
- {
- png_imgtype imgtype[]={png_g4,png_none,png_none,png_idx4};
- ret=imgtype[colortype];
- break;
- }
-#endif
- case 8:
- {
- png_imgtype imgtype[]={png_g8,png_none,png_rgb8,png_idx8,png_ga8,
- png_none,png_rgba8};
- ret=imgtype[colortype];
- break;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16:
- {
- png_imgtype imgtype[]={png_g16,png_none,png_rgb16,png_none,png_ga16,
- png_none,png_rgba16};
- ret=imgtype[colortype];
- break;
- }
-#endif
- default:
- ret=png_none;
- break;
- }
- return (ret);
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_INIT */
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_display_ihdr (mng_datap pData)
-{ /* address the current "object" if any */
- mng_imagep pImage = (mng_imagep)pData->pCurrentobj;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_IHDR, MNG_LC_START);
-#endif
-
- if (!pData->bHasDHDR)
- {
- pData->fInitrowproc = MNG_NULL; /* do nothing by default */
- pData->fDisplayrow = MNG_NULL;
- pData->fCorrectrow = MNG_NULL;
- pData->fStorerow = MNG_NULL;
- pData->fProcessrow = MNG_NULL;
- pData->fDifferrow = MNG_NULL;
- pData->pStoreobj = MNG_NULL;
- }
-
- if (!pData->iBreakpoint) /* not previously broken ? */
- {
- mng_retcode iRetcode = MNG_NOERROR;
-
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* is a delta-image ? */
- {
- if (pData->iDeltatype == MNG_DELTATYPE_REPLACE)
- iRetcode = mng_reset_object_details (pData, (mng_imagep)pData->pDeltaImage,
- pData->iDatawidth, pData->iDataheight,
- pData->iBitdepth, pData->iColortype,
- pData->iCompression, pData->iFilter,
- pData->iInterlace, MNG_TRUE);
- else
- if ((pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- {
- ((mng_imagep)pData->pDeltaImage)->pImgbuf->iPixelsampledepth = pData->iBitdepth;
- ((mng_imagep)pData->pDeltaImage)->pImgbuf->iAlphasampledepth = pData->iBitdepth;
- }
- else
- if ((pData->iDeltatype == MNG_DELTATYPE_BLOCKALPHAADD ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKALPHAREPLACE) )
- ((mng_imagep)pData->pDeltaImage)->pImgbuf->iAlphasampledepth = pData->iBitdepth;
- else
- if ((pData->iDeltatype == MNG_DELTATYPE_BLOCKCOLORADD ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKCOLORREPLACE) )
- ((mng_imagep)pData->pDeltaImage)->pImgbuf->iPixelsampledepth = pData->iBitdepth;
-
- if (!iRetcode)
- { /* process immediately if bitdepth & colortype are equal */
- pData->bDeltaimmediate =
- (mng_bool)((pData->iBitdepth == ((mng_imagep)pData->pDeltaImage)->pImgbuf->iBitdepth ) &&
- (pData->iColortype == ((mng_imagep)pData->pDeltaImage)->pImgbuf->iColortype) );
- /* be sure to reset object 0 */
- iRetcode = mng_reset_object_details (pData, (mng_imagep)pData->pObjzero,
- pData->iDatawidth, pData->iDataheight,
- pData->iBitdepth, pData->iColortype,
- pData->iCompression, pData->iFilter,
- pData->iInterlace, MNG_TRUE);
- }
- }
- else
-#endif
- {
- if (pImage) /* update object buffer ? */
- iRetcode = mng_reset_object_details (pData, pImage,
- pData->iDatawidth, pData->iDataheight,
- pData->iBitdepth, pData->iColortype,
- pData->iCompression, pData->iFilter,
- pData->iInterlace, MNG_TRUE);
- else
- iRetcode = mng_reset_object_details (pData, (mng_imagep)pData->pObjzero,
- pData->iDatawidth, pData->iDataheight,
- pData->iBitdepth, pData->iColortype,
- pData->iCompression, pData->iFilter,
- pData->iInterlace, MNG_TRUE);
- }
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-
-#ifndef MNG_NO_DELTA_PNG
- if (!pData->bHasDHDR)
-#endif
- {
- if (pImage) /* real object ? */
- pData->pStoreobj = pImage; /* tell the row routines */
- else /* otherwise use object 0 */
- pData->pStoreobj = pData->pObjzero;
-
-#if !defined(MNG_INCLUDE_MPNG_PROPOSAL) && !defined(MNG_INCLUDE_ANG_PROPOSAL)
- if ( /* display "on-the-fly" ? */
-#ifndef MNG_SKIPCHUNK_MAGN
- (((mng_imagep)pData->pStoreobj)->iMAGN_MethodX == 0) &&
- (((mng_imagep)pData->pStoreobj)->iMAGN_MethodY == 0) &&
-#endif
- ( (pData->eImagetype == mng_it_png ) ||
- (((mng_imagep)pData->pStoreobj)->bVisible) ) )
- {
- next_layer (pData); /* that's a new layer then ! */
-
- if (pData->bTimerset) /* timer break ? */
- pData->iBreakpoint = 2;
- else
- {
- pData->iBreakpoint = 0;
- /* anything to display ? */
- if ((pData->iDestr > pData->iDestl) && (pData->iDestb > pData->iDestt))
- set_display_routine (pData); /* then determine display routine */
- }
- }
-#endif
- }
-
- if (!pData->bTimerset) /* no timer break ? */
- {
-#ifdef MNG_OPTIMIZE_FOOTPRINT_INIT
- pData->fInitrowproc = (mng_fptr)mng_init_rowproc;
- pData->ePng_imgtype=mng_png_imgtype(pData->iColortype,pData->iBitdepth);
-#else
- switch (pData->iColortype) /* determine row initialization routine */
- {
- case 0 : { /* gray */
- switch (pData->iBitdepth)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g1_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g1_i;
-
- break;
- }
- case 2 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g2_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g2_i;
-
- break;
- }
- case 4 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g4_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g4_i;
- break;
- }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g8_i;
-
- break;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g16_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g16_i;
-
- break;
- }
-#endif
- }
-
- break;
- }
- case 2 : { /* rgb */
- switch (pData->iBitdepth)
- {
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_rgb8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_rgb8_i;
- break;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_rgb16_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_rgb16_i;
-
- break;
- }
-#endif
- }
-
- break;
- }
- case 3 : { /* indexed */
- switch (pData->iBitdepth)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_idx1_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_idx1_i;
-
- break;
- }
- case 2 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_idx2_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_idx2_i;
-
- break;
- }
- case 4 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_idx4_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_idx4_i;
-
- break;
- }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_idx8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_idx8_i;
-
- break;
- }
- }
-
- break;
- }
- case 4 : { /* gray+alpha */
- switch (pData->iBitdepth)
- {
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_ga8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_ga8_i;
-
- break;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_ga16_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_ga16_i;
- break;
- }
-#endif
- }
-
- break;
- }
- case 6 : { /* rgb+alpha */
- switch (pData->iBitdepth)
- {
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_rgba8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_rgba8_i;
-
- break;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_rgba16_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_rgba16_i;
-
- break;
- }
-#endif
- }
-
- break;
- }
- }
-#endif /* MNG_OPTIMIZE_FOOTPRINT_INIT */
-
- pData->iFilterofs = 0; /* determine filter characteristics */
- pData->iLevel0 = 0; /* default levels */
- pData->iLevel1 = 0;
- pData->iLevel2 = 0;
- pData->iLevel3 = 0;
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- {
- switch (pData->iColortype)
- {
- case 0 : {
- if (pData->iBitdepth <= 8)
- pData->iFilterofs = 1;
- else
- pData->iFilterofs = 2;
-
- break;
- }
- case 2 : {
- if (pData->iBitdepth <= 8)
- pData->iFilterofs = 3;
- else
- pData->iFilterofs = 6;
-
- break;
- }
- case 3 : {
- pData->iFilterofs = 1;
- break;
- }
- case 4 : {
- if (pData->iBitdepth <= 8)
- pData->iFilterofs = 2;
- else
- pData->iFilterofs = 4;
-
- break;
- }
- case 6 : {
- if (pData->iBitdepth <= 8)
- pData->iFilterofs = 4;
- else
- pData->iFilterofs = 8;
-
- break;
- }
- }
- }
-#endif
-
-#ifdef FILTER193 /* no adaptive filtering ? */
- if (pData->iFilter == MNG_FILTER_NOFILTER)
- pData->iPixelofs = pData->iFilterofs;
- else
-#endif
- pData->iPixelofs = pData->iFilterofs + 1;
-
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_IHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-mng_retcode mng_process_display_mpng (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_MPNG, MNG_LC_START);
-#endif
-
- pData->iAlphadepth = 8; /* assume transparency !! */
-
- if (pData->fProcessheader) /* inform the app (creating the output canvas) ? */
- {
- pData->iWidth = ((mng_mpng_objp)pData->pMPNG)->iFramewidth;
- pData->iHeight = ((mng_mpng_objp)pData->pMPNG)->iFrameheight;
-
- if (!pData->fProcessheader (((mng_handle)pData), pData->iWidth, pData->iHeight))
- MNG_ERROR (pData, MNG_APPMISCERROR);
- }
-
- next_layer (pData); /* first mPNG layer then ! */
- pData->bTimerset = MNG_FALSE;
- pData->iBreakpoint = 0;
-
- if ((pData->iDestr > pData->iDestl) && (pData->iDestb > pData->iDestt))
- set_display_routine (pData); /* then determine display routine */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_MPNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-mng_retcode mng_process_display_ang (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_ANG, MNG_LC_START);
-#endif
-
- if (pData->fProcessheader) /* inform the app (creating the output canvas) ? */
- {
- if (!pData->fProcessheader (((mng_handle)pData), pData->iWidth, pData->iHeight))
- MNG_ERROR (pData, MNG_APPMISCERROR);
- }
-
- next_layer (pData); /* first mPNG layer then ! */
- pData->bTimerset = MNG_FALSE;
- pData->iBreakpoint = 0;
-
- if ((pData->iDestr > pData->iDestl) && (pData->iDestb > pData->iDestt))
- set_display_routine (pData); /* then determine display routine */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_ANG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-mng_retcode mng_process_display_idat (mng_datap pData,
- mng_uint32 iRawlen,
- mng_uint8p pRawdata)
-#else
-mng_retcode mng_process_display_idat (mng_datap pData)
-#endif
-{
- mng_retcode iRetcode = MNG_NOERROR;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_IDAT, MNG_LC_START);
-#endif
-
-#if defined(MNG_INCLUDE_MPNG_PROPOSAL) || defined(MNG_INCLUDE_ANG_PROPOSAL)
- if ((pData->eImagetype == mng_it_png) && (pData->iLayerseq <= 0))
- {
- if (pData->fProcessheader) /* inform the app (creating the output canvas) ? */
- if (!pData->fProcessheader (((mng_handle)pData), pData->iWidth, pData->iHeight))
- MNG_ERROR (pData, MNG_APPMISCERROR);
-
- next_layer (pData); /* first regular PNG layer then ! */
- pData->bTimerset = MNG_FALSE;
- pData->iBreakpoint = 0;
-
- if ((pData->iDestr > pData->iDestl) && (pData->iDestb > pData->iDestt))
- set_display_routine (pData); /* then determine display routine */
- }
-#endif
-
- if (pData->bRestorebkgd) /* need to restore the background ? */
- {
- pData->bRestorebkgd = MNG_FALSE;
- iRetcode = load_bkgdlayer (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- pData->iLayerseq++; /* and it counts as a layer then ! */
- }
-
- if (pData->fInitrowproc) /* need to initialize row processing? */
- {
- iRetcode = ((mng_initrowproc)pData->fInitrowproc) (pData);
- pData->fInitrowproc = MNG_NULL; /* only call this once !!! */
- }
-
- if ((!iRetcode) && (!pData->bInflating))
- /* initialize inflate */
- iRetcode = mngzlib_inflateinit (pData);
-
- if (!iRetcode) /* all ok? then inflate, my man */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- iRetcode = mngzlib_inflaterows (pData, iRawlen, pRawdata);
-#else
- iRetcode = mngzlib_inflaterows (pData, pData->iRawlen, pData->pRawdata);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_IDAT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_display_iend (mng_datap pData)
-{
- mng_retcode iRetcode, iRetcode2;
- mng_bool bDodisplay = MNG_FALSE;
- mng_bool bMagnify = MNG_FALSE;
- mng_bool bCleanup = (mng_bool)(pData->iBreakpoint != 0);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_IEND, MNG_LC_START);
-#endif
-
-#ifdef MNG_INCLUDE_JNG /* progressive+alpha JNG can be displayed now */
- if ( (pData->bHasJHDR ) &&
- ( (pData->bJPEGprogressive) || (pData->bJPEGprogressive2)) &&
- ( (pData->eImagetype == mng_it_jng ) ||
- (((mng_imagep)pData->pStoreobj)->bVisible) ) &&
- ( (pData->iJHDRcolortype == MNG_COLORTYPE_JPEGGRAYA ) ||
- (pData->iJHDRcolortype == MNG_COLORTYPE_JPEGCOLORA) ) )
- bDodisplay = MNG_TRUE;
-#endif
-
-#ifndef MNG_SKIPCHUNK_MAGN
- if ( (pData->pStoreobj) && /* on-the-fly magnification ? */
- ( (((mng_imagep)pData->pStoreobj)->iMAGN_MethodX) ||
- (((mng_imagep)pData->pStoreobj)->iMAGN_MethodY) ) )
- bMagnify = MNG_TRUE;
-#endif
-
- if ((pData->bHasBASI) || /* was it a BASI stream */
- (bDodisplay) || /* or should we display the JNG */
-#ifndef MNG_SKIPCHUNK_MAGN
- (bMagnify) || /* or should we magnify it */
-#endif
- /* or did we get broken here last time ? */
- ((pData->iBreakpoint) && (pData->iBreakpoint != 8)))
- {
- mng_imagep pImage = (mng_imagep)pData->pCurrentobj;
-
- if (!pImage) /* or was it object 0 ? */
- pImage = (mng_imagep)pData->pObjzero;
- /* display it now then ? */
- if ((pImage->bVisible) && (pImage->bViewable))
- { /* ok, so do it */
- iRetcode = mng_display_image (pData, pImage, bDodisplay);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- if (pData->bTimerset) /* timer break ? */
- pData->iBreakpoint = 6;
- }
- }
-#ifndef MNG_NO_DELTA_PNG
- else
- if ((pData->bHasDHDR) || /* was it a DHDR stream */
- (pData->iBreakpoint == 8)) /* or did we get broken here last time ? */
- {
- mng_imagep pImage = (mng_imagep)pData->pDeltaImage;
-
- if (!pData->iBreakpoint)
- { /* perform the delta operations needed */
- iRetcode = mng_execute_delta_image (pData, pImage, (mng_imagep)pData->pObjzero);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- /* display it now then ? */
- if ((pImage->bVisible) && (pImage->bViewable))
- { /* ok, so do it */
- iRetcode = mng_display_image (pData, pImage, MNG_FALSE);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- if (pData->bTimerset) /* timer break ? */
- pData->iBreakpoint = 8;
- }
- }
-#endif
-
- if (!pData->bTimerset) /* can we continue ? */
- {
- pData->iBreakpoint = 0; /* clear this flag now ! */
-
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- if (pData->eImagetype == mng_it_mpng)
- {
- pData->pCurraniobj = pData->pFirstaniobj;
- } else
-#endif
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
- if (pData->eImagetype == mng_it_ang)
- {
- pData->pCurraniobj = pData->pFirstaniobj;
- } else
-#endif
- { /* cleanup object 0 */
- mng_reset_object_details (pData, (mng_imagep)pData->pObjzero,
- 0, 0, 0, 0, 0, 0, 0, MNG_TRUE);
- }
-
- if (pData->bInflating) /* if we've been inflating */
- { /* cleanup row-processing, */
- iRetcode = mng_cleanup_rowproc (pData);
- /* also cleanup inflate! */
- iRetcode2 = mngzlib_inflatefree (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- if (iRetcode2)
- return iRetcode2;
- }
-
-#ifdef MNG_INCLUDE_JNG
- if (pData->bJPEGdecompress) /* if we've been decompressing JDAT */
- { /* cleanup row-processing, */
- iRetcode = mng_cleanup_rowproc (pData);
- /* also cleanup decompress! */
- iRetcode2 = mngjpeg_decompressfree (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- if (iRetcode2)
- return iRetcode2;
- }
-
- if (pData->bJPEGdecompress2) /* if we've been decompressing JDAA */
- { /* cleanup row-processing, */
- iRetcode = mng_cleanup_rowproc (pData);
- /* also cleanup decompress! */
- iRetcode2 = mngjpeg_decompressfree2 (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- if (iRetcode2)
- return iRetcode2;
- }
-#endif
-
- if (bCleanup) /* if we got broken last time we need to cleanup */
- {
- pData->bHasIHDR = MNG_FALSE; /* IEND signals the end for most ... */
- pData->bHasBASI = MNG_FALSE;
- pData->bHasDHDR = MNG_FALSE;
-#ifdef MNG_INCLUDE_JNG
- pData->bHasJHDR = MNG_FALSE;
- pData->bHasJSEP = MNG_FALSE;
- pData->bHasJDAA = MNG_FALSE;
- pData->bHasJDAT = MNG_FALSE;
-#endif
- pData->bHasPLTE = MNG_FALSE;
- pData->bHasTRNS = MNG_FALSE;
- pData->bHasGAMA = MNG_FALSE;
- pData->bHasCHRM = MNG_FALSE;
- pData->bHasSRGB = MNG_FALSE;
- pData->bHasICCP = MNG_FALSE;
- pData->bHasBKGD = MNG_FALSE;
- pData->bHasIDAT = MNG_FALSE;
- }
- /* if the image was displayed on the fly, */
- /* we'll have to make the app refresh */
- if ((pData->eImagetype != mng_it_mng) && (pData->fDisplayrow))
- pData->bNeedrefresh = MNG_TRUE;
-
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_IEND, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-/* change in the MNG spec with regards to TERM delay & interframe_delay
- as proposed by Adam M. Costello (option 4) and finalized by official vote
- during december 2002 / check the 'mng-list' archives for more details */
-
-mng_retcode mng_process_display_mend (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_MEND, MNG_LC_START);
-#endif
-
- pData->bForcedelay = pData->iAccumdelay ? MNG_FALSE : MNG_TRUE;
- pData->iAccumdelay = 0;
-
-#ifdef MNG_SUPPORT_DYNAMICMNG
- if (pData->bStopafterseek) /* need to stop after this ? */
- {
- pData->bFreezing = MNG_TRUE; /* stop processing on this one */
- pData->bRunningevent = MNG_FALSE;
- pData->bStopafterseek = MNG_FALSE;
- pData->bNeedrefresh = MNG_TRUE; /* make sure the last bit is displayed ! */
- }
-#endif
-
-#ifndef MNG_SKIPCHUNK_TERM
- /* TERM processed ? */
- if ((pData->bDisplaying) && (pData->bRunning) &&
- (pData->bHasTERM) && (pData->pTermaniobj))
- {
- mng_retcode iRetcode;
- mng_ani_termp pTERM;
- /* get the right animation object ! */
- pTERM = (mng_ani_termp)pData->pTermaniobj;
-
- pData->iIterations++; /* increase iteration count */
-
- switch (pTERM->iTermaction) /* determine what to do! */
- {
- case 0 : { /* show last frame indefinitly */
- break; /* piece of cake, that is... */
- }
-
- case 1 : { /* cease displaying anything */
- /* max(1, TERM delay, interframe_delay) */
-#ifndef MNG_SKIPCHUNK_FRAM
- if (pTERM->iDelay > pData->iFramedelay)
- pData->iFramedelay = pTERM->iDelay;
- if (!pData->iFramedelay)
- pData->iFramedelay = 1;
-#endif
-
- iRetcode = interframe_delay (pData);
- /* no interframe_delay? then fake it */
- if ((!iRetcode) && (!pData->bTimerset))
- iRetcode = set_delay (pData, 1);
-
- if (iRetcode)
- return iRetcode;
-
- pData->iBreakpoint = 10;
- break;
- }
-
- case 2 : { /* show first image after TERM */
- iRetcode = restore_state (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* notify the app ? */
- if (pData->fProcessmend)
- if (!pData->fProcessmend ((mng_handle)pData, pData->iIterations, 0))
- MNG_ERROR (pData, MNG_APPMISCERROR);
-
- /* show first frame after TERM chunk */
- pData->pCurraniobj = pTERM;
- pData->bOnlyfirstframe = MNG_TRUE;
- pData->iFramesafterTERM = 0;
-
- /* max(1, TERM delay, interframe_delay) */
-#ifndef MNG_SKIPCHUNK_FRAM
- if (pTERM->iDelay > pData->iFramedelay)
- pData->iFramedelay = pTERM->iDelay;
- if (!pData->iFramedelay)
- pData->iFramedelay = 1;
-#endif
-
- break;
- }
-
- case 3 : { /* repeat */
- if ((pTERM->iItermax) && (pTERM->iItermax < 0x7FFFFFFF))
- pTERM->iItermax--;
-
- if (pTERM->iItermax) /* go back to TERM ? */
- { /* restore to initial or SAVE state */
- iRetcode = restore_state (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* notify the app ? */
- if (pData->fProcessmend)
- if (!pData->fProcessmend ((mng_handle)pData,
- pData->iIterations, pTERM->iItermax))
- MNG_ERROR (pData, MNG_APPMISCERROR);
-
- /* restart from TERM chunk */
- pData->pCurraniobj = pTERM;
-
- if (pTERM->iDelay) /* set the delay (?) */
- {
- /* max(1, TERM delay, interframe_delay) */
-#ifndef MNG_SKIPCHUNK_FRAM
- if (pTERM->iDelay > pData->iFramedelay)
- pData->iFramedelay = pTERM->iDelay;
- if (!pData->iFramedelay)
- pData->iFramedelay = 1;
-#endif
-
- pData->bNeedrefresh = MNG_TRUE;
- }
- }
- else
- {
- switch (pTERM->iIteraction)
- {
- case 0 : { /* show last frame indefinitly */
- break; /* piece of cake, that is... */
- }
-
- case 1 : { /* cease displaying anything */
- /* max(1, TERM delay, interframe_delay) */
-#ifndef MNG_SKIPCHUNK_FRAM
- if (pTERM->iDelay > pData->iFramedelay)
- pData->iFramedelay = pTERM->iDelay;
- if (!pData->iFramedelay)
- pData->iFramedelay = 1;
-#endif
-
- iRetcode = interframe_delay (pData);
- /* no interframe_delay? then fake it */
- if ((!iRetcode) && (!pData->bTimerset))
- iRetcode = set_delay (pData, 1);
-
- if (iRetcode)
- return iRetcode;
-
- pData->iBreakpoint = 10;
- break;
- }
-
- case 2 : { /* show first image after TERM */
- iRetcode = restore_state (pData);
- /* on error bail out */
- if (iRetcode)
- return iRetcode;
- /* notify the app ? */
- if (pData->fProcessmend)
- if (!pData->fProcessmend ((mng_handle)pData,
- pData->iIterations, 0))
- MNG_ERROR (pData, MNG_APPMISCERROR);
-
- /* show first frame after TERM chunk */
- pData->pCurraniobj = pTERM;
- pData->bOnlyfirstframe = MNG_TRUE;
- pData->iFramesafterTERM = 0;
- /* max(1, TERM delay, interframe_delay) */
-#ifndef MNG_SKIPCHUNK_FRAM
- if (pTERM->iDelay > pData->iFramedelay)
- pData->iFramedelay = pTERM->iDelay;
- if (!pData->iFramedelay)
- pData->iFramedelay = 1;
-#endif
-
- break;
- }
- }
- }
-
- break;
- }
- }
- }
-#endif /* MNG_SKIPCHUNK_TERM */
- /* just reading ? */
- if ((!pData->bDisplaying) && (pData->bReading))
- if (pData->fProcessmend) /* inform the app ? */
- if (!pData->fProcessmend ((mng_handle)pData, 0, 0))
- MNG_ERROR (pData, MNG_APPMISCERROR);
-
- if (!pData->pCurraniobj) /* always let the app refresh at the end ! */
- pData->bNeedrefresh = MNG_TRUE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_MEND, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_display_mend2 (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_MEND, MNG_LC_START);
-#endif
-
-#ifndef MNG_SKIPCHUNK_FRAM
- pData->bFrameclipping = MNG_FALSE; /* nothing to do but restore the app background */
-#endif
- load_bkgdlayer (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_MEND, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DEFI
-mng_retcode mng_process_display_defi (mng_datap pData)
-{
- mng_imagep pImage;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_DEFI, MNG_LC_START);
-#endif
-
- if (!pData->iDEFIobjectid) /* object id=0 ? */
- {
- pImage = (mng_imagep)pData->pObjzero;
-
- if (pData->bDEFIhasdonotshow)
- pImage->bVisible = (mng_bool)(pData->iDEFIdonotshow == 0);
-
- if (pData->bDEFIhasloca)
- {
- pImage->iPosx = pData->iDEFIlocax;
- pImage->iPosy = pData->iDEFIlocay;
- }
-
- if (pData->bDEFIhasclip)
- {
- pImage->bClipped = pData->bDEFIhasclip;
- pImage->iClipl = pData->iDEFIclipl;
- pImage->iClipr = pData->iDEFIclipr;
- pImage->iClipt = pData->iDEFIclipt;
- pImage->iClipb = pData->iDEFIclipb;
- }
-
- pData->pCurrentobj = 0; /* not a real object ! */
- }
- else
- { /* already exists ? */
- pImage = (mng_imagep)mng_find_imageobject (pData, pData->iDEFIobjectid);
-
- if (!pImage) /* if not; create new */
- {
- mng_retcode iRetcode = mng_create_imageobject (pData, pData->iDEFIobjectid,
- (mng_bool)(pData->iDEFIconcrete == 1),
- (mng_bool)(pData->iDEFIdonotshow == 0),
- MNG_FALSE, 0, 0, 0, 0, 0, 0, 0,
- pData->iDEFIlocax, pData->iDEFIlocay,
- pData->bDEFIhasclip,
- pData->iDEFIclipl, pData->iDEFIclipr,
- pData->iDEFIclipt, pData->iDEFIclipb,
- &pImage);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- else
- { /* exists; then set new info */
- if (pData->bDEFIhasdonotshow)
- pImage->bVisible = (mng_bool)(pData->iDEFIdonotshow == 0);
-
- pImage->bViewable = MNG_FALSE;
-
- if (pData->bDEFIhasloca)
- {
- pImage->iPosx = pData->iDEFIlocax;
- pImage->iPosy = pData->iDEFIlocay;
- }
-
- if (pData->bDEFIhasclip)
- {
- pImage->bClipped = pData->bDEFIhasclip;
- pImage->iClipl = pData->iDEFIclipl;
- pImage->iClipr = pData->iDEFIclipr;
- pImage->iClipt = pData->iDEFIclipt;
- pImage->iClipb = pData->iDEFIclipb;
- }
-
- if (pData->bDEFIhasconcrete)
- pImage->pImgbuf->bConcrete = (mng_bool)(pData->iDEFIconcrete == 1);
- }
-
- pData->pCurrentobj = pImage; /* others may want to know this */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_DEFI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_BASI
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-mng_retcode mng_process_display_basi (mng_datap pData,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue,
- mng_bool bHasalpha,
- mng_uint16 iAlpha,
- mng_uint8 iViewable)
-#else
-mng_retcode mng_process_display_basi (mng_datap pData)
-#endif
-{ /* address the current "object" if any */
- mng_imagep pImage = (mng_imagep)pData->pCurrentobj;
- mng_uint8p pWork;
- mng_uint32 iX;
- mng_imagedatap pBuf;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_BASI, MNG_LC_START);
-#endif
-
- if (!pImage) /* or is it an "on-the-fly" image ? */
- pImage = (mng_imagep)pData->pObjzero;
- /* address the object-buffer */
- pBuf = pImage->pImgbuf;
-
- pData->fDisplayrow = MNG_NULL; /* do nothing by default */
- pData->fCorrectrow = MNG_NULL;
- pData->fStorerow = MNG_NULL;
- pData->fProcessrow = MNG_NULL;
- /* set parms now that they're known */
- iRetcode = mng_reset_object_details (pData, pImage, pData->iDatawidth,
- pData->iDataheight, pData->iBitdepth,
- pData->iColortype, pData->iCompression,
- pData->iFilter, pData->iInterlace, MNG_FALSE);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* save the viewable flag */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pImage->bViewable = (mng_bool)(iViewable == 1);
-#else
- pImage->bViewable = (mng_bool)(pData->iBASIviewable == 1);
-#endif
- pBuf->bViewable = pImage->bViewable;
- pData->pStoreobj = pImage; /* let row-routines know which object */
-
- pWork = pBuf->pImgdata; /* fill the object-buffer with the specified
- "color" sample */
- switch (pData->iColortype) /* depending on color_type & bit_depth */
- {
- case 0 : { /* gray */
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pData->iBitdepth == 16)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iDatawidth * pData->iDataheight;
- iX > 0;iX--)
-#else
- for (iX = 0; iX < pData->iDatawidth * pData->iDataheight; iX++)
-#endif
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- mng_put_uint16 (pWork, iRed);
-#else
- mng_put_uint16 (pWork, pData->iBASIred);
-#endif
- pWork += 2;
- }
- }
- else
-#endif
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iDatawidth * pData->iDataheight;
- iX > 0;iX--)
-#else
- for (iX = 0; iX < pData->iDatawidth * pData->iDataheight; iX++)
-#endif
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- *pWork = (mng_uint8)iRed;
-#else
- *pWork = (mng_uint8)pData->iBASIred;
-#endif
- pWork++;
- }
- }
- /* force tRNS ? */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if ((bHasalpha) && (!iAlpha))
-#else
- if ((pData->bBASIhasalpha) && (!pData->iBASIalpha))
-#endif
- {
- pBuf->bHasTRNS = MNG_TRUE;
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pBuf->iTRNSgray = iRed;
-#else
- pBuf->iTRNSgray = pData->iBASIred;
-#endif
- }
-
- break;
- }
-
- case 2 : { /* rgb */
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pData->iBitdepth == 16)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iDatawidth * pData->iDataheight;
- iX > 0;iX--)
-#else
- for (iX = 0; iX < pData->iDatawidth * pData->iDataheight; iX++)
-#endif
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- mng_put_uint16 (pWork, iRed );
- mng_put_uint16 (pWork+2, iGreen);
- mng_put_uint16 (pWork+4, iBlue );
-#else
- mng_put_uint16 (pWork, pData->iBASIred );
- mng_put_uint16 (pWork+2, pData->iBASIgreen);
- mng_put_uint16 (pWork+4, pData->iBASIblue );
-#endif
- pWork += 6;
- }
- }
- else
-#endif
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iDatawidth * pData->iDataheight;
- iX > 0;iX--)
-#else
- for (iX = 0; iX < pData->iDatawidth * pData->iDataheight; iX++)
-#endif
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- *pWork = (mng_uint8)iRed;
- *(pWork+1) = (mng_uint8)iGreen;
- *(pWork+2) = (mng_uint8)iBlue;
-#else
- *pWork = (mng_uint8)pData->iBASIred;
- *(pWork+1) = (mng_uint8)pData->iBASIgreen;
- *(pWork+2) = (mng_uint8)pData->iBASIblue;
-#endif
- pWork += 3;
- }
- }
- /* force tRNS ? */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if ((bHasalpha) && (!iAlpha))
-#else
- if ((pData->bBASIhasalpha) && (!pData->iBASIalpha))
-#endif
- {
- pBuf->bHasTRNS = MNG_TRUE;
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pBuf->iTRNSred = iRed;
- pBuf->iTRNSgreen = iGreen;
- pBuf->iTRNSblue = iBlue;
-#else
- pBuf->iTRNSred = pData->iBASIred;
- pBuf->iTRNSgreen = pData->iBASIgreen;
- pBuf->iTRNSblue = pData->iBASIblue;
-#endif
- }
-
- break;
- }
-
- case 3 : { /* indexed */
- pBuf->bHasPLTE = MNG_TRUE;
-
- switch (pData->iBitdepth)
- {
- case 1 : { pBuf->iPLTEcount = 2; break; }
- case 2 : { pBuf->iPLTEcount = 4; break; }
- case 4 : { pBuf->iPLTEcount = 16; break; }
- case 8 : { pBuf->iPLTEcount = 256; break; }
- default : { pBuf->iPLTEcount = 1; break; }
- }
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pBuf->aPLTEentries [0].iRed = (mng_uint8)iRed;
- pBuf->aPLTEentries [0].iGreen = (mng_uint8)iGreen;
- pBuf->aPLTEentries [0].iBlue = (mng_uint8)iBlue;
-#else
- pBuf->aPLTEentries [0].iRed = (mng_uint8)pData->iBASIred;
- pBuf->aPLTEentries [0].iGreen = (mng_uint8)pData->iBASIgreen;
- pBuf->aPLTEentries [0].iBlue = (mng_uint8)pData->iBASIblue;
-#endif
-
- for (iX = 1; iX < pBuf->iPLTEcount; iX++)
- {
- pBuf->aPLTEentries [iX].iRed = 0;
- pBuf->aPLTEentries [iX].iGreen = 0;
- pBuf->aPLTEentries [iX].iBlue = 0;
- }
- /* force tRNS ? */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if ((bHasalpha) && (iAlpha < 255))
-#else
- if ((pData->bBASIhasalpha) && (pData->iBASIalpha < 255))
-#endif
- {
- pBuf->bHasTRNS = MNG_TRUE;
- pBuf->iTRNScount = 1;
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pBuf->aTRNSentries [0] = (mng_uint8)iAlpha;
-#else
- pBuf->aTRNSentries [0] = (mng_uint8)pData->iBASIalpha;
-#endif
- }
-
- break;
- }
-
- case 4 : { /* gray+alpha */
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pData->iBitdepth == 16)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iDatawidth * pData->iDataheight;
- iX > 0;iX--)
-#else
- for (iX = 0; iX < pData->iDatawidth * pData->iDataheight; iX++)
-#endif
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- mng_put_uint16 (pWork, iRed);
- mng_put_uint16 (pWork+2, iAlpha);
-#else
- mng_put_uint16 (pWork, pData->iBASIred);
- mng_put_uint16 (pWork+2, pData->iBASIalpha);
-#endif
- pWork += 4;
- }
- }
- else
-#endif
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iDatawidth * pData->iDataheight;
- iX > 0;iX--)
-#else
- for (iX = 0; iX < pData->iDatawidth * pData->iDataheight; iX++)
-#endif
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- *pWork = (mng_uint8)iRed;
- *(pWork+1) = (mng_uint8)iAlpha;
-#else
- *pWork = (mng_uint8)pData->iBASIred;
- *(pWork+1) = (mng_uint8)pData->iBASIalpha;
-#endif
- pWork += 2;
- }
- }
-
- break;
- }
-
- case 6 : { /* rgb+alpha */
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pData->iBitdepth == 16)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iDatawidth * pData->iDataheight;
- iX > 0;iX--)
-#else
- for (iX = 0; iX < pData->iDatawidth * pData->iDataheight; iX++)
-#endif
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- mng_put_uint16 (pWork, iRed);
- mng_put_uint16 (pWork+2, iGreen);
- mng_put_uint16 (pWork+4, iBlue);
- mng_put_uint16 (pWork+6, iAlpha);
-#else
- mng_put_uint16 (pWork, pData->iBASIred);
- mng_put_uint16 (pWork+2, pData->iBASIgreen);
- mng_put_uint16 (pWork+4, pData->iBASIblue);
- mng_put_uint16 (pWork+6, pData->iBASIalpha);
-#endif
- pWork += 8;
- }
- }
- else
-#endif
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iDatawidth * pData->iDataheight;
- iX > 0;iX--)
-#else
- for (iX = 0; iX < pData->iDatawidth * pData->iDataheight; iX++)
-#endif
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- *pWork = (mng_uint8)iRed;
- *(pWork+1) = (mng_uint8)iGreen;
- *(pWork+2) = (mng_uint8)iBlue;
- *(pWork+3) = (mng_uint8)iAlpha;
-#else
- *pWork = (mng_uint8)pData->iBASIred;
- *(pWork+1) = (mng_uint8)pData->iBASIgreen;
- *(pWork+2) = (mng_uint8)pData->iBASIblue;
- *(pWork+3) = (mng_uint8)pData->iBASIalpha;
-#endif
- pWork += 4;
- }
- }
-
- break;
- }
-
- }
-
-#ifdef MNG_OPTIMIZE_FOOTPRINT_INIT
- pData->fInitrowproc = (mng_fptr)mng_init_rowproc;
- pData->ePng_imgtype=mng_png_imgtype(pData->iColortype,pData->iBitdepth);
-#else
- switch (pData->iColortype) /* determine row initialization routine */
- { /* just to accomodate IDAT if it arrives */
- case 0 : { /* gray */
- switch (pData->iBitdepth)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g1_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g1_i;
-
- break;
- }
- case 2 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g2_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g2_i;
-
- break;
- }
- case 4 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g4_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g4_i;
-
- break;
- }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g8_i;
-
- break;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g16_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g16_i;
-
- break;
- }
-#endif
- }
-
- break;
- }
- case 2 : { /* rgb */
- switch (pData->iBitdepth)
- {
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_rgb8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_rgb8_i;
-
- break;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_rgb16_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_rgb16_i;
-
- break;
- }
-#endif
- }
-
- break;
- }
- case 3 : { /* indexed */
- switch (pData->iBitdepth)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_idx1_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_idx1_i;
-
- break;
- }
- case 2 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_idx2_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_idx2_i;
-
- break;
- }
- case 4 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_idx4_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_idx4_i;
-
- break;
- }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_idx8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_idx8_i;
-
- break;
- }
- }
-
- break;
- }
- case 4 : { /* gray+alpha */
- switch (pData->iBitdepth)
- {
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_ga8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_ga8_i;
-
- break;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_ga16_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_ga16_i;
-
- break;
- }
-#endif
- }
-
- break;
- }
- case 6 : { /* rgb+alpha */
- switch (pData->iBitdepth)
- {
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_rgba8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_rgba8_i;
-
- break;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_rgba16_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_rgba16_i;
-
- break;
- }
-#endif
- }
-
- break;
- }
- }
-#endif /* MNG_OPTIMIZE_FOOTPRINT_INIT */
-
- pData->iFilterofs = 0; /* determine filter characteristics */
- pData->iLevel0 = 0; /* default levels */
- pData->iLevel1 = 0;
- pData->iLevel2 = 0;
- pData->iLevel3 = 0;
-
-#ifdef FILTER192
- if (pData->iFilter == 0xC0) /* leveling & differing ? */
- {
- switch (pData->iColortype)
- {
- case 0 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pData->iBitdepth <= 8)
-#endif
- pData->iFilterofs = 1;
-#ifndef MNG_NO_16BIT_SUPPORT
- else
- pData->iFilterofs = 2;
-#endif
-
- break;
- }
- case 2 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pData->iBitdepth <= 8)
-#endif
- pData->iFilterofs = 3;
-#ifndef MNG_NO_16BIT_SUPPORT
- else
- pData->iFilterofs = 6;
-#endif
-
- break;
- }
- case 3 : {
- pData->iFilterofs = 1;
- break;
- }
- case 4 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pData->iBitdepth <= 8)
-#endif
- pData->iFilterofs = 2;
-#ifndef MNG_NO_16BIT_SUPPORT
- else
- pData->iFilterofs = 4;
-#endif
-
- break;
- }
- case 6 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pData->iBitdepth <= 8)
-#endif
- pData->iFilterofs = 4;
-#ifndef MNG_NO_16BIT_SUPPORT
- else
- pData->iFilterofs = 8;
-#endif
-
- break;
- }
- }
- }
-#endif
-
-#ifdef FILTER193
- if (pData->iFilter == 0xC1) /* no adaptive filtering ? */
- pData->iPixelofs = pData->iFilterofs;
- else
-#endif
- pData->iPixelofs = pData->iFilterofs + 1;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_BASI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_CLON
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-mng_retcode mng_process_display_clon (mng_datap pData,
- mng_uint16 iSourceid,
- mng_uint16 iCloneid,
- mng_uint8 iClonetype,
- mng_bool bHasdonotshow,
- mng_uint8 iDonotshow,
- mng_uint8 iConcrete,
- mng_bool bHasloca,
- mng_uint8 iLocationtype,
- mng_int32 iLocationx,
- mng_int32 iLocationy)
-#else
-mng_retcode mng_process_display_clon (mng_datap pData)
-#endif
-{
- mng_imagep pSource, pClone;
- mng_bool bVisible, bAbstract;
- mng_retcode iRetcode = MNG_NOERROR;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_CLON, MNG_LC_START);
-#endif
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- /* locate the source object first */
- pSource = mng_find_imageobject (pData, iSourceid);
- /* check if the clone exists */
- pClone = mng_find_imageobject (pData, iCloneid);
-#else
- /* locate the source object first */
- pSource = mng_find_imageobject (pData, pData->iCLONsourceid);
- /* check if the clone exists */
- pClone = mng_find_imageobject (pData, pData->iCLONcloneid);
-#endif
-
- if (!pSource) /* source must exist ! */
- MNG_ERROR (pData, MNG_OBJECTUNKNOWN);
-
- if (pClone) /* clone must not exist ! */
- MNG_ERROR (pData, MNG_OBJECTEXISTS);
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if (bHasdonotshow) /* DoNotShow flag filled ? */
- bVisible = (mng_bool)(iDonotshow == 0);
- else
- bVisible = pSource->bVisible;
-#else
- if (pData->bCLONhasdonotshow) /* DoNotShow flag filled ? */
- bVisible = (mng_bool)(pData->iCLONdonotshow == 0);
- else
- bVisible = pSource->bVisible;
-#endif
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- bAbstract = (mng_bool)(iConcrete == 1);
-#else
- bAbstract = (mng_bool)(pData->iCLONconcrete == 1);
-#endif
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- switch (iClonetype) /* determine action to take */
- {
- case 0 : { /* full clone */
- iRetcode = mng_clone_imageobject (pData, iCloneid, MNG_FALSE,
- bVisible, bAbstract, bHasloca,
- iLocationtype, iLocationx, iLocationy,
- pSource, &pClone);
- break;
- }
-
- case 1 : { /* partial clone */
- iRetcode = mng_clone_imageobject (pData, iCloneid, MNG_TRUE,
- bVisible, bAbstract, bHasloca,
- iLocationtype, iLocationx, iLocationy,
- pSource, &pClone);
- break;
- }
-
- case 2 : { /* renumber object */
- iRetcode = mng_renum_imageobject (pData, pSource, iCloneid,
- bVisible, bAbstract, bHasloca,
- iLocationtype, iLocationx, iLocationy);
- pClone = pSource;
- break;
- }
-
- }
-#else
- switch (pData->iCLONclonetype) /* determine action to take */
- {
- case 0 : { /* full clone */
- iRetcode = mng_clone_imageobject (pData, pData->iCLONcloneid, MNG_FALSE,
- bVisible, bAbstract,
- pData->bCLONhasloca, pData->iCLONlocationtype,
- pData->iCLONlocationx, pData->iCLONlocationy,
- pSource, &pClone);
- break;
- }
-
- case 1 : { /* partial clone */
- iRetcode = mng_clone_imageobject (pData, pData->iCLONcloneid, MNG_TRUE,
- bVisible, bAbstract,
- pData->bCLONhasloca, pData->iCLONlocationtype,
- pData->iCLONlocationx, pData->iCLONlocationy,
- pSource, &pClone);
- break;
- }
-
- case 2 : { /* renumber object */
- iRetcode = mng_renum_imageobject (pData, pSource, pData->iCLONcloneid,
- bVisible, bAbstract,
- pData->bCLONhasloca, pData->iCLONlocationtype,
- pData->iCLONlocationx, pData->iCLONlocationy);
- pClone = pSource;
- break;
- }
-
- }
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- /* display on the fly ? */
- if ((pClone->bViewable) && (pClone->bVisible))
- {
- pData->pLastclone = pClone; /* remember in case of timer break ! */
- /* display it */
- mng_display_image (pData, pClone, MNG_FALSE);
-
- if (pData->bTimerset) /* timer break ? */
- pData->iBreakpoint = 5;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_CLON, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_display_clon2 (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_CLON, MNG_LC_START);
-#endif
- /* only called after timer break ! */
- mng_display_image (pData, (mng_imagep)pData->pLastclone, MNG_FALSE);
- pData->iBreakpoint = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_CLON, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DISC
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-mng_retcode mng_process_display_disc (mng_datap pData,
- mng_uint32 iCount,
- mng_uint16p pIds)
-#else
-mng_retcode mng_process_display_disc (mng_datap pData)
-#endif
-{
- mng_uint32 iX;
- mng_imagep pImage;
- mng_uint32 iRetcode;
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_DISC, MNG_LC_START);
-#endif
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if (iCount) /* specific list ? */
-#else
- if (pData->iDISCcount) /* specific list ? */
-#endif
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- mng_uint16p pWork = pIds;
-#else
- mng_uint16p pWork = pData->pDISCids;
-#endif
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-#ifdef MNG_DECREMENT_LOOPS /* iterate the list */
- for (iX = iCount; iX > 0; iX--)
-#else
- for (iX = 0; iX < iCount; iX++)
-#endif
-#else
-#ifdef MNG_DECREMENT_LOOPS /* iterate the list */
- for (iX = pData->iDISCcount; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iDISCcount; iX++)
-#endif
-#endif
- {
- pImage = mng_find_imageobject (pData, *pWork++);
-
- if (pImage) /* found the object ? */
- { /* then drop it */
- iRetcode = mng_free_imageobject (pData, pImage);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- }
- }
- else /* empty: drop all un-frozen objects */
- {
- mng_imagep pNext = (mng_imagep)pData->pFirstimgobj;
-
- while (pNext) /* any left ? */
- {
- pImage = pNext;
- pNext = pImage->sHeader.pNext;
-
- if (!pImage->bFrozen) /* not frozen ? */
- { /* then drop it */
- iRetcode = mng_free_imageobject (pData, pImage);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_DISC, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_FRAM
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-mng_retcode mng_process_display_fram (mng_datap pData,
- mng_uint8 iFramemode,
- mng_uint8 iChangedelay,
- mng_uint32 iDelay,
- mng_uint8 iChangetimeout,
- mng_uint32 iTimeout,
- mng_uint8 iChangeclipping,
- mng_uint8 iCliptype,
- mng_int32 iClipl,
- mng_int32 iClipr,
- mng_int32 iClipt,
- mng_int32 iClipb)
-#else
-mng_retcode mng_process_display_fram (mng_datap pData)
-#endif
-{
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_FRAM, MNG_LC_START);
-#endif
- /* advance a frame then */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- iRetcode = next_frame (pData, iFramemode, iChangedelay, iDelay,
- iChangetimeout, iTimeout, iChangeclipping,
- iCliptype, iClipl, iClipr, iClipt, iClipb);
-#else
- iRetcode = next_frame (pData, pData->iTempFramemode, pData->iTempChangedelay,
- pData->iTempDelay, pData->iTempChangetimeout,
- pData->iTempTimeout, pData->iTempChangeclipping,
- pData->iTempCliptype, pData->iTempClipl, pData->iTempClipr,
- pData->iTempClipt, pData->iTempClipb);
-#endif
-
- if (pData->bTimerset) /* timer break ? */
- pData->iBreakpoint = 1;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_FRAM, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_display_fram2 (mng_datap pData)
-{
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_FRAM, MNG_LC_START);
-#endif
- /* again; after the break */
- iRetcode = next_frame (pData, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
- pData->iBreakpoint = 0; /* not again! */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_FRAM, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_MOVE
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-mng_retcode mng_process_display_move (mng_datap pData,
- mng_uint16 iFromid,
- mng_uint16 iToid,
- mng_uint8 iMovetype,
- mng_int32 iMovex,
- mng_int32 iMovey)
-#else
-mng_retcode mng_process_display_move (mng_datap pData)
-#endif
-{
- mng_uint16 iX;
- mng_imagep pImage;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_MOVE, MNG_LC_START);
-#endif
- /* iterate the list */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- for (iX = iFromid; iX <= iToid; iX++)
-#else
- for (iX = pData->iMOVEfromid; iX <= pData->iMOVEtoid; iX++)
-#endif
- {
- if (!iX) /* object id=0 ? */
- pImage = (mng_imagep)pData->pObjzero;
- else
- pImage = mng_find_imageobject (pData, iX);
-
- if (pImage) /* object exists ? */
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- switch (iMovetype)
-#else
- switch (pData->iMOVEmovetype)
-#endif
- {
- case 0 : { /* absolute */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pImage->iPosx = iMovex;
- pImage->iPosy = iMovey;
-#else
- pImage->iPosx = pData->iMOVEmovex;
- pImage->iPosy = pData->iMOVEmovey;
-#endif
- break;
- }
- case 1 : { /* relative */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pImage->iPosx = pImage->iPosx + iMovex;
- pImage->iPosy = pImage->iPosy + iMovey;
-#else
- pImage->iPosx = pImage->iPosx + pData->iMOVEmovex;
- pImage->iPosy = pImage->iPosy + pData->iMOVEmovey;
-#endif
- break;
- }
- }
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_MOVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_CLIP
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-mng_retcode mng_process_display_clip (mng_datap pData,
- mng_uint16 iFromid,
- mng_uint16 iToid,
- mng_uint8 iCliptype,
- mng_int32 iClipl,
- mng_int32 iClipr,
- mng_int32 iClipt,
- mng_int32 iClipb)
-#else
-mng_retcode mng_process_display_clip (mng_datap pData)
-#endif
-{
- mng_uint16 iX;
- mng_imagep pImage;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_CLIP, MNG_LC_START);
-#endif
- /* iterate the list */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- for (iX = iFromid; iX <= iToid; iX++)
-#else
- for (iX = pData->iCLIPfromid; iX <= pData->iCLIPtoid; iX++)
-#endif
- {
- if (!iX) /* object id=0 ? */
- pImage = (mng_imagep)pData->pObjzero;
- else
- pImage = mng_find_imageobject (pData, iX);
-
- if (pImage) /* object exists ? */
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- switch (iCliptype)
-#else
- switch (pData->iCLIPcliptype)
-#endif
- {
- case 0 : { /* absolute */
- pImage->bClipped = MNG_TRUE;
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pImage->iClipl = iClipl;
- pImage->iClipr = iClipr;
- pImage->iClipt = iClipt;
- pImage->iClipb = iClipb;
-#else
- pImage->iClipl = pData->iCLIPclipl;
- pImage->iClipr = pData->iCLIPclipr;
- pImage->iClipt = pData->iCLIPclipt;
- pImage->iClipb = pData->iCLIPclipb;
-#endif
- break;
- }
- case 1 : { /* relative */
- pImage->bClipped = MNG_TRUE;
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pImage->iClipl = pImage->iClipl + iClipl;
- pImage->iClipr = pImage->iClipr + iClipr;
- pImage->iClipt = pImage->iClipt + iClipt;
- pImage->iClipb = pImage->iClipb + iClipb;
-#else
- pImage->iClipl = pImage->iClipl + pData->iCLIPclipl;
- pImage->iClipr = pImage->iClipr + pData->iCLIPclipr;
- pImage->iClipt = pImage->iClipt + pData->iCLIPclipt;
- pImage->iClipb = pImage->iClipb + pData->iCLIPclipb;
-#endif
- break;
- }
- }
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_CLIP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SHOW
-mng_retcode mng_process_display_show (mng_datap pData)
-{
- mng_int16 iX, iS, iFrom, iTo;
- mng_imagep pImage;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_SHOW, MNG_LC_START);
-#endif
-
- /* TODO: optimization for the cases where "abs (iTo - iFrom)" is rather high;
- especially where ((iFrom==1) && (iTo==65535)); eg. an empty SHOW !!! */
-
- if (pData->iBreakpoint == 3) /* previously broken during cycle-mode ? */
- {
- pImage = mng_find_imageobject (pData, pData->iSHOWnextid);
-
- if (pImage) /* still there ? */
- mng_display_image (pData, pImage, MNG_FALSE);
-
- pData->iBreakpoint = 0; /* let's not go through this again! */
- }
- else
- {
- if (pData->iBreakpoint) /* previously broken at other point ? */
- { /* restore last parms */
- iFrom = (mng_int16)pData->iSHOWfromid;
- iTo = (mng_int16)pData->iSHOWtoid;
- iX = (mng_int16)pData->iSHOWnextid;
- iS = (mng_int16)pData->iSHOWskip;
- }
- else
- { /* regular sequence ? */
- if (pData->iSHOWtoid >= pData->iSHOWfromid)
- iS = 1;
- else /* reverse sequence ! */
- iS = -1;
-
- iFrom = (mng_int16)pData->iSHOWfromid;
- iTo = (mng_int16)pData->iSHOWtoid;
- iX = iFrom;
-
- pData->iSHOWfromid = (mng_uint16)iFrom;
- pData->iSHOWtoid = (mng_uint16)iTo;
- pData->iSHOWskip = iS;
- }
- /* cycle mode ? */
- if ((pData->iSHOWmode == 6) || (pData->iSHOWmode == 7))
- {
- mng_uint16 iTrigger = 0;
- mng_uint16 iFound = 0;
- mng_uint16 iPass = 0;
- mng_imagep pFound = 0;
-
- do
- {
- iPass++; /* lets prevent endless loops when there
- are no potential candidates in the list! */
-
- if (iS > 0) /* forward ? */
- {
- for (iX = iFrom; iX <= iTo; iX += iS)
- {
- pImage = mng_find_imageobject (pData, (mng_uint16)iX);
-
- if (pImage) /* object exists ? */
- {
- if (iFound) /* already found a candidate ? */
- pImage->bVisible = MNG_FALSE;
- else
- if (iTrigger) /* found the trigger ? */
- {
- pImage->bVisible = MNG_TRUE;
- iFound = iX;
- pFound = pImage;
- }
- else
- if (pImage->bVisible) /* ok, this is the trigger */
- {
- pImage->bVisible = MNG_FALSE;
- iTrigger = iX;
- }
- }
- }
- }
- else
- {
- for (iX = iFrom; iX >= iTo; iX += iS)
- {
- pImage = mng_find_imageobject (pData, (mng_uint16)iX);
-
- if (pImage) /* object exists ? */
- {
- if (iFound) /* already found a candidate ? */
- pImage->bVisible = MNG_FALSE;
- else
- if (iTrigger) /* found the trigger ? */
- {
- pImage->bVisible = MNG_TRUE;
- iFound = iX;
- pFound = pImage;
- }
- else
- if (pImage->bVisible) /* ok, this is the trigger */
- {
- pImage->bVisible = MNG_FALSE;
- iTrigger = iX;
- }
- }
- }
- }
-
- if (!iTrigger) /* did not find a trigger ? */
- iTrigger = 1; /* then fake it so the first image
- gets nominated */
- } /* cycle back to beginning ? */
- while ((iPass < 2) && (iTrigger) && (!iFound));
-
- pData->iBreakpoint = 0; /* just a sanity precaution */
- /* display it ? */
- if ((pData->iSHOWmode == 6) && (pFound))
- {
- mng_display_image (pData, pFound, MNG_FALSE);
-
- if (pData->bTimerset) /* timer set ? */
- {
- pData->iBreakpoint = 3;
- pData->iSHOWnextid = iFound; /* save it for after the break */
- }
- }
- }
- else
- {
- do
- {
- pImage = mng_find_imageobject (pData, iX);
-
- if (pImage) /* object exists ? */
- {
- if (pData->iBreakpoint) /* did we get broken last time ? */
- { /* could only happen in the display routine */
- mng_display_image (pData, pImage, MNG_FALSE);
- pData->iBreakpoint = 0; /* only once inside this loop please ! */
- }
- else
- {
- switch (pData->iSHOWmode) /* do what ? */
- {
- case 0 : {
- pImage->bVisible = MNG_TRUE;
- mng_display_image (pData, pImage, MNG_FALSE);
- break;
- }
- case 1 : {
- pImage->bVisible = MNG_FALSE;
- break;
- }
- case 2 : {
- if (pImage->bVisible)
- mng_display_image (pData, pImage, MNG_FALSE);
- break;
- }
- case 3 : {
- pImage->bVisible = MNG_TRUE;
- break;
- }
- case 4 : {
- pImage->bVisible = (mng_bool)(!pImage->bVisible);
- if (pImage->bVisible)
- mng_display_image (pData, pImage, MNG_FALSE);
- break;
- }
- case 5 : {
- pImage->bVisible = (mng_bool)(!pImage->bVisible);
- }
- }
- }
- }
-
- if (!pData->bTimerset) /* next ? */
- iX += iS;
-
- } /* continue ? */
- while ((!pData->bTimerset) && (((iS > 0) && (iX <= iTo)) ||
- ((iS < 0) && (iX >= iTo)) ));
-
- if (pData->bTimerset) /* timer set ? */
- {
- pData->iBreakpoint = 4;
- pData->iSHOWnextid = iX; /* save for next time */
- }
- else
- pData->iBreakpoint = 0;
-
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_SHOW, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SAVE
-mng_retcode mng_process_display_save (mng_datap pData)
-{
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_SAVE, MNG_LC_START);
-#endif
-
- iRetcode = save_state (pData); /* save the current state */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_SAVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SEEK
-mng_retcode mng_process_display_seek (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_SEEK, MNG_LC_START);
-#endif
-
-#ifdef MNG_SUPPORT_DYNAMICMNG
- if (pData->bStopafterseek) /* need to stop after this SEEK ? */
- {
- pData->bFreezing = MNG_TRUE; /* stop processing on this one */
- pData->bRunningevent = MNG_FALSE;
- pData->bStopafterseek = MNG_FALSE;
- pData->bNeedrefresh = MNG_TRUE; /* make sure the last bit is displayed ! */
- }
- else
-#endif
- { /* restore the initial or SAVE state */
- mng_retcode iRetcode = restore_state (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#ifdef MNG_SUPPORT_DYNAMICMNG
- /* stop after next SEEK ? */
- if ((pData->bDynamic) || (pData->bRunningevent))
- pData->bStopafterseek = MNG_TRUE;
-#endif
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_SEEK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-mng_retcode mng_process_display_jhdr (mng_datap pData)
-{ /* address the current "object" if any */
- mng_imagep pImage = (mng_imagep)pData->pCurrentobj;
- mng_retcode iRetcode = MNG_NOERROR;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_JHDR, MNG_LC_START);
-#endif
-
- if (!pData->bHasDHDR)
- {
- pData->fInitrowproc = MNG_NULL; /* do nothing by default */
- pData->fDisplayrow = MNG_NULL;
- pData->fCorrectrow = MNG_NULL;
- pData->fStorerow = MNG_NULL;
- pData->fProcessrow = MNG_NULL;
- pData->fDifferrow = MNG_NULL;
- pData->fStorerow2 = MNG_NULL;
- pData->fStorerow3 = MNG_NULL;
-
- pData->pStoreobj = MNG_NULL; /* initialize important work-parms */
-
- pData->iJPEGrow = 0;
- pData->iJPEGalpharow = 0;
- pData->iJPEGrgbrow = 0;
- pData->iRowmax = 0; /* so init_rowproc does the right thing ! */
- }
-
- if (!pData->iBreakpoint) /* not previously broken ? */
- {
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* delta-image ? */
- {
- if (pData->iDeltatype == MNG_DELTATYPE_REPLACE)
- {
- iRetcode = mng_reset_object_details (pData, (mng_imagep)pData->pDeltaImage,
- pData->iDatawidth, pData->iDataheight,
- pData->iJHDRimgbitdepth, pData->iJHDRcolortype,
- pData->iJHDRalphacompression, pData->iJHDRalphafilter,
- pData->iJHDRalphainterlace, MNG_TRUE);
-
- ((mng_imagep)pData->pDeltaImage)->pImgbuf->iAlphabitdepth = pData->iJHDRalphabitdepth;
- ((mng_imagep)pData->pDeltaImage)->pImgbuf->iJHDRcompression = pData->iJHDRimgcompression;
- ((mng_imagep)pData->pDeltaImage)->pImgbuf->iJHDRinterlace = pData->iJHDRimginterlace;
- ((mng_imagep)pData->pDeltaImage)->pImgbuf->iAlphasampledepth = pData->iJHDRalphabitdepth;
- }
- else
- if ((pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- {
- ((mng_imagep)pData->pDeltaImage)->pImgbuf->iPixelsampledepth = pData->iJHDRimgbitdepth;
- ((mng_imagep)pData->pDeltaImage)->pImgbuf->iAlphasampledepth = pData->iJHDRalphabitdepth;
- }
- else
- if ((pData->iDeltatype == MNG_DELTATYPE_BLOCKALPHAADD ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKALPHAREPLACE) )
- ((mng_imagep)pData->pDeltaImage)->pImgbuf->iAlphasampledepth = pData->iJHDRalphabitdepth;
- else
- if ((pData->iDeltatype == MNG_DELTATYPE_BLOCKCOLORADD ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKCOLORREPLACE) )
- ((mng_imagep)pData->pDeltaImage)->pImgbuf->iPixelsampledepth = pData->iJHDRimgbitdepth;
-
- }
- else
-#endif /* MNG_NO_DELTA_PNG */
- {
- if (pImage) /* update object buffer ? */
- {
- iRetcode = mng_reset_object_details (pData, pImage,
- pData->iDatawidth, pData->iDataheight,
- pData->iJHDRimgbitdepth, pData->iJHDRcolortype,
- pData->iJHDRalphacompression, pData->iJHDRalphafilter,
- pData->iJHDRalphainterlace, MNG_TRUE);
-
- pImage->pImgbuf->iAlphabitdepth = pData->iJHDRalphabitdepth;
- pImage->pImgbuf->iJHDRcompression = pData->iJHDRimgcompression;
- pImage->pImgbuf->iJHDRinterlace = pData->iJHDRimginterlace;
- pImage->pImgbuf->iAlphasampledepth = pData->iJHDRalphabitdepth;
- }
- else /* update object 0 */
- {
- iRetcode = mng_reset_object_details (pData, (mng_imagep)pData->pObjzero,
- pData->iDatawidth, pData->iDataheight,
- pData->iJHDRimgbitdepth, pData->iJHDRcolortype,
- pData->iJHDRalphacompression, pData->iJHDRalphafilter,
- pData->iJHDRalphainterlace, MNG_TRUE);
-
- ((mng_imagep)pData->pObjzero)->pImgbuf->iAlphabitdepth = pData->iJHDRalphabitdepth;
- ((mng_imagep)pData->pObjzero)->pImgbuf->iJHDRcompression = pData->iJHDRimgcompression;
- ((mng_imagep)pData->pObjzero)->pImgbuf->iJHDRinterlace = pData->iJHDRimginterlace;
- ((mng_imagep)pData->pObjzero)->pImgbuf->iAlphasampledepth = pData->iJHDRalphabitdepth;
- }
- }
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-
- if (!pData->bHasDHDR)
- { /* we're always storing a JPEG */
- if (pImage) /* real object ? */
- pData->pStoreobj = pImage; /* tell the row routines */
- else /* otherwise use object 0 */
- pData->pStoreobj = pData->pObjzero;
- /* display "on-the-fly" ? */
- if (
-#ifndef MNG_SKIPCHUNK_MAGN
- ( ((mng_imagep)pData->pStoreobj)->iMAGN_MethodX == 0) &&
- ( ((mng_imagep)pData->pStoreobj)->iMAGN_MethodY == 0) &&
-#endif
- ( (pData->eImagetype == mng_it_jng ) ||
- (((mng_imagep)pData->pStoreobj)->bVisible) ) )
- {
- next_layer (pData); /* that's a new layer then ! */
-
- pData->iBreakpoint = 0;
-
- if (pData->bTimerset) /* timer break ? */
- pData->iBreakpoint = 7;
- else
- if (pData->bRunning) /* still running ? */
- { /* anything to display ? */
- if ((pData->iDestr > pData->iDestl) && (pData->iDestb > pData->iDestt))
- {
- set_display_routine (pData); /* then determine display routine */
- /* display from the object we store in */
- pData->pRetrieveobj = pData->pStoreobj;
- }
- }
- }
- }
-
- if (!pData->bTimerset) /* no timer break ? */
- { /* default row initialization ! */
-#ifdef MNG_OPTIMIZE_FOOTPRINT_INIT
- pData->ePng_imgtype=png_none;
-#endif
- pData->fInitrowproc = (mng_fptr)mng_init_rowproc;
-
- if ((!pData->bHasDHDR) || (pData->iDeltatype == MNG_DELTATYPE_REPLACE))
- { /* 8-bit JPEG ? */
- if (pData->iJHDRimgbitdepth == 8)
- { /* intermediate row is 8-bit deep */
- pData->bIsRGBA16 = MNG_FALSE;
- pData->iRowsamples = pData->iDatawidth;
-
- switch (pData->iJHDRcolortype) /* determine pixel processing routines */
- {
- case MNG_COLORTYPE_JPEGGRAY :
- {
- pData->fStorerow2 = (mng_fptr)mng_store_jpeg_g8;
- pData->fRetrieverow = (mng_fptr)mng_retrieve_g8;
- pData->bIsOpaque = MNG_TRUE;
- break;
- }
- case MNG_COLORTYPE_JPEGCOLOR :
- {
- pData->fStorerow2 = (mng_fptr)mng_store_jpeg_rgb8;
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgb8;
- pData->bIsOpaque = MNG_TRUE;
- break;
- }
- case MNG_COLORTYPE_JPEGGRAYA :
- {
- pData->fStorerow2 = (mng_fptr)mng_store_jpeg_ga8;
- pData->fRetrieverow = (mng_fptr)mng_retrieve_ga8;
- pData->bIsOpaque = MNG_FALSE;
- break;
- }
- case MNG_COLORTYPE_JPEGCOLORA :
- {
- pData->fStorerow2 = (mng_fptr)mng_store_jpeg_rgba8;
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgba8;
- pData->bIsOpaque = MNG_FALSE;
- break;
- }
- }
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- else
- {
- pData->bIsRGBA16 = MNG_TRUE; /* intermediate row is 16-bit deep */
-
- /* TODO: 12-bit JPEG */
- /* TODO: 8- + 12-bit JPEG (eg. type=20) */
-
- }
-#endif
- /* possible IDAT alpha-channel ? */
- if (pData->iJHDRalphacompression == MNG_COMPRESSION_DEFLATE)
- {
- /* determine alpha processing routine */
-#ifdef MNG_OPTIMIZE_FOOTPRINT_INIT
- pData->fInitrowproc = (mng_fptr)mng_init_rowproc;
-#endif
- switch (pData->iJHDRalphabitdepth)
- {
-#ifndef MNG_OPTIMIZE_FOOTPRINT_INIT
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : { pData->fInitrowproc = (mng_fptr)mng_init_jpeg_a1_ni; break; }
- case 2 : { pData->fInitrowproc = (mng_fptr)mng_init_jpeg_a2_ni; break; }
- case 4 : { pData->fInitrowproc = (mng_fptr)mng_init_jpeg_a4_ni; break; }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case 8 : { pData->fInitrowproc = (mng_fptr)mng_init_jpeg_a8_ni; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fInitrowproc = (mng_fptr)mng_init_jpeg_a16_ni; break; }
-#endif
-#else
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : { pData->ePng_imgtype = png_jpeg_a1; break; }
- case 2 : { pData->ePng_imgtype = png_jpeg_a2; break; }
- case 4 : { pData->ePng_imgtype = png_jpeg_a4; break; }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case 8 : { pData->ePng_imgtype = png_jpeg_a8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->ePng_imgtype = png_jpeg_a16; break; }
-#endif
-#endif
- }
- }
- else /* possible JDAA alpha-channel ? */
- if (pData->iJHDRalphacompression == MNG_COMPRESSION_BASELINEJPEG)
- { /* 8-bit JPEG ? */
- if (pData->iJHDRimgbitdepth == 8)
- {
- if (pData->iJHDRcolortype == MNG_COLORTYPE_JPEGGRAYA)
- pData->fStorerow3 = (mng_fptr)mng_store_jpeg_g8_alpha;
- else
- if (pData->iJHDRcolortype == MNG_COLORTYPE_JPEGCOLORA)
- pData->fStorerow3 = (mng_fptr)mng_store_jpeg_rgb8_alpha;
- }
- else
- {
- /* TODO: 12-bit JPEG with 8-bit JDAA */
- }
- }
- /* initialize JPEG library */
- iRetcode = mngjpeg_initialize (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- else
- { /* must be alpha add/replace !! */
- if ((pData->iDeltatype != MNG_DELTATYPE_BLOCKALPHAADD ) &&
- (pData->iDeltatype != MNG_DELTATYPE_BLOCKALPHAREPLACE) )
- MNG_ERROR (pData, MNG_INVDELTATYPE);
- /* determine alpha processing routine */
-#ifdef MNG_OPTIMIZE_FOOTPRINT_INIT
- pData->fInitrowproc = (mng_fptr)mng_init_rowproc;
-#endif
- switch (pData->iJHDRalphabitdepth)
- {
-#ifndef MNG_OPTIMIZE_FOOTPRINT_INIT
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : { pData->fInitrowproc = (mng_fptr)mng_init_g1_ni; break; }
- case 2 : { pData->fInitrowproc = (mng_fptr)mng_init_g2_ni; break; }
- case 4 : { pData->fInitrowproc = (mng_fptr)mng_init_g4_ni; break; }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case 8 : { pData->fInitrowproc = (mng_fptr)mng_init_g8_ni; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fInitrowproc = (mng_fptr)mng_init_g16_ni; break; }
-#endif
-#else
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : { pData->ePng_imgtype = png_jpeg_a1; break; }
- case 2 : { pData->ePng_imgtype = png_jpeg_a2; break; }
- case 4 : { pData->ePng_imgtype = png_jpeg_a4; break; }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case 8 : { pData->ePng_imgtype = png_jpeg_a8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->ePng_imgtype = png_jpeg_a16; break; }
-#endif
-#endif /* MNG_OPTIMIZE_FOOTPRINT_INIT */
- }
- }
-
- pData->iFilterofs = 0; /* determine filter characteristics */
- pData->iLevel0 = 0; /* default levels */
- pData->iLevel1 = 0;
- pData->iLevel2 = 0;
- pData->iLevel3 = 0;
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iJHDRalphafilter == 0xC0)
- {
- if (pData->iJHDRalphabitdepth <= 8)
- pData->iFilterofs = 1;
- else
- pData->iFilterofs = 2;
-
- }
-#endif
-#ifdef FILTER193 /* no adaptive filtering ? */
- if (pData->iJHDRalphafilter == 0xC1)
- pData->iPixelofs = pData->iFilterofs;
- else
-#endif
- pData->iPixelofs = pData->iFilterofs + 1;
-
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_JHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-mng_retcode mng_process_display_jdaa (mng_datap pData,
- mng_uint32 iRawlen,
- mng_uint8p pRawdata)
-#else
-mng_retcode mng_process_display_jdaa (mng_datap pData)
-#endif
-{
- mng_retcode iRetcode = MNG_NOERROR;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_JDAA, MNG_LC_START);
-#endif
-
- if (!pData->bJPEGdecompress2) /* if we're not decompressing already */
- {
- if (pData->fInitrowproc) /* initialize row-processing? */
- {
- iRetcode = ((mng_initrowproc)pData->fInitrowproc) (pData);
- pData->fInitrowproc = MNG_NULL; /* only call this once !!! */
- }
-
- if (!iRetcode) /* initialize decompress */
- iRetcode = mngjpeg_decompressinit2 (pData);
- }
-
- if (!iRetcode) /* all ok? then decompress, my man */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- iRetcode = mngjpeg_decompressdata2 (pData, iRawlen, pRawdata);
-#else
- iRetcode = mngjpeg_decompressdata2 (pData, pData->iRawlen, pData->pRawdata);
-#endif
-
- if (iRetcode)
- return iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_JDAA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-mng_retcode mng_process_display_jdat (mng_datap pData,
- mng_uint32 iRawlen,
- mng_uint8p pRawdata)
-#else
-mng_retcode mng_process_display_jdat (mng_datap pData)
-#endif
-{
- mng_retcode iRetcode = MNG_NOERROR;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_JDAT, MNG_LC_START);
-#endif
-
- if (pData->bRestorebkgd) /* need to restore the background ? */
- {
- pData->bRestorebkgd = MNG_FALSE;
- iRetcode = load_bkgdlayer (pData);
-
- pData->iLayerseq++; /* and it counts as a layer then ! */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-
- if (!pData->bJPEGdecompress) /* if we're not decompressing already */
- {
- if (pData->fInitrowproc) /* initialize row-processing? */
- {
- iRetcode = ((mng_initrowproc)pData->fInitrowproc) (pData);
- pData->fInitrowproc = MNG_NULL; /* only call this once !!! */
- }
-
- if (!iRetcode) /* initialize decompress */
- iRetcode = mngjpeg_decompressinit (pData);
- }
-
- if (!iRetcode) /* all ok? then decompress, my man */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- iRetcode = mngjpeg_decompressdata (pData, iRawlen, pRawdata);
-#else
- iRetcode = mngjpeg_decompressdata (pData, pData->iRawlen, pData->pRawdata);
-#endif
-
- if (iRetcode)
- return iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_JDAT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-mng_retcode mng_process_display_dhdr (mng_datap pData,
- mng_uint16 iObjectid,
- mng_uint8 iImagetype,
- mng_uint8 iDeltatype,
- mng_uint32 iBlockwidth,
- mng_uint32 iBlockheight,
- mng_uint32 iBlockx,
- mng_uint32 iBlocky)
-#else
-mng_retcode mng_process_display_dhdr (mng_datap pData)
-#endif
-{
- mng_imagep pImage;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_DHDR, MNG_LC_START);
-#endif
-
- pData->fInitrowproc = MNG_NULL; /* do nothing by default */
- pData->fDisplayrow = MNG_NULL;
- pData->fCorrectrow = MNG_NULL;
- pData->fStorerow = MNG_NULL;
- pData->fProcessrow = MNG_NULL;
- pData->pStoreobj = MNG_NULL;
-
- pData->fDeltagetrow = MNG_NULL;
- pData->fDeltaaddrow = MNG_NULL;
- pData->fDeltareplacerow = MNG_NULL;
- pData->fDeltaputrow = MNG_NULL;
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pImage = mng_find_imageobject (pData, iObjectid);
-#else
- pImage = mng_find_imageobject (pData, pData->iDHDRobjectid);
-#endif
-
- if (pImage) /* object exists ? */
- {
- if (pImage->pImgbuf->bConcrete) /* is it concrete ? */
- { /* previous magnification to be done ? */
-#ifndef MNG_SKIPCHUNK_MAGN
- if ((pImage->iMAGN_MethodX) || (pImage->iMAGN_MethodY))
- {
- iRetcode = mng_magnify_imageobject (pData, pImage);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif
- /* save delta fields */
- pData->pDeltaImage = (mng_ptr)pImage;
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pData->iDeltaImagetype = iImagetype;
- pData->iDeltatype = iDeltatype;
- pData->iDeltaBlockwidth = iBlockwidth;
- pData->iDeltaBlockheight = iBlockheight;
- pData->iDeltaBlockx = iBlockx;
- pData->iDeltaBlocky = iBlocky;
-#else
- pData->iDeltaImagetype = pData->iDHDRimagetype;
- pData->iDeltatype = pData->iDHDRdeltatype;
- pData->iDeltaBlockwidth = pData->iDHDRblockwidth;
- pData->iDeltaBlockheight = pData->iDHDRblockheight;
- pData->iDeltaBlockx = pData->iDHDRblockx;
- pData->iDeltaBlocky = pData->iDHDRblocky;
-#endif
- /* restore target-object fields */
- pData->iDatawidth = pImage->pImgbuf->iWidth;
- pData->iDataheight = pImage->pImgbuf->iHeight;
- pData->iBitdepth = pImage->pImgbuf->iBitdepth;
- pData->iColortype = pImage->pImgbuf->iColortype;
- pData->iCompression = pImage->pImgbuf->iCompression;
- pData->iFilter = pImage->pImgbuf->iFilter;
- pData->iInterlace = pImage->pImgbuf->iInterlace;
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if ((iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD ) ||
- (iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- pData->iBitdepth = pImage->pImgbuf->iPixelsampledepth;
- else
- if ((iDeltatype == MNG_DELTATYPE_BLOCKALPHAADD ) ||
- (iDeltatype == MNG_DELTATYPE_BLOCKALPHAREPLACE) )
- pData->iBitdepth = pImage->pImgbuf->iAlphasampledepth;
- else
- if ((iDeltatype == MNG_DELTATYPE_BLOCKCOLORADD ) ||
- (iDeltatype == MNG_DELTATYPE_BLOCKCOLORREPLACE) )
- pData->iBitdepth = pImage->pImgbuf->iPixelsampledepth;
-#else
- if ((pData->iDHDRdeltatype == MNG_DELTATYPE_BLOCKPIXELADD ) ||
- (pData->iDHDRdeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- pData->iBitdepth = pImage->pImgbuf->iPixelsampledepth;
- else
- if ((pData->iDHDRdeltatype == MNG_DELTATYPE_BLOCKALPHAADD ) ||
- (pData->iDHDRdeltatype == MNG_DELTATYPE_BLOCKALPHAREPLACE) )
- pData->iBitdepth = pImage->pImgbuf->iAlphasampledepth;
- else
- if ((pData->iDHDRdeltatype == MNG_DELTATYPE_BLOCKCOLORADD ) ||
- (pData->iDHDRdeltatype == MNG_DELTATYPE_BLOCKCOLORREPLACE) )
- pData->iBitdepth = pImage->pImgbuf->iPixelsampledepth;
-#endif
-
-#ifdef MNG_INCLUDE_JNG
- pData->iJHDRimgbitdepth = pImage->pImgbuf->iBitdepth;
- pData->iJHDRcolortype = pImage->pImgbuf->iColortype;
- pData->iJHDRimgcompression = pImage->pImgbuf->iJHDRcompression;
- pData->iJHDRimginterlace = pImage->pImgbuf->iJHDRinterlace;
- pData->iJHDRalphacompression = pImage->pImgbuf->iCompression;
- pData->iJHDRalphafilter = pImage->pImgbuf->iFilter;
- pData->iJHDRalphainterlace = pImage->pImgbuf->iInterlace;
- pData->iJHDRalphabitdepth = pImage->pImgbuf->iAlphabitdepth;
-#endif
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- /* block size specified ? */
- if (iDeltatype != MNG_DELTATYPE_NOCHANGE)
- { /* block entirely within target ? */
- if (iDeltatype != MNG_DELTATYPE_REPLACE)
- {
- if (((iBlockx + iBlockwidth ) > pData->iDatawidth ) ||
- ((iBlocky + iBlockheight) > pData->iDataheight) )
- MNG_ERROR (pData, MNG_INVALIDBLOCK);
- }
-
- pData->iDatawidth = iBlockwidth;
- pData->iDataheight = iBlockheight;
- }
-#else
- /* block size specified ? */
- if (pData->iDHDRdeltatype != MNG_DELTATYPE_NOCHANGE)
- { /* block entirely within target ? */
- if (pData->iDHDRdeltatype != MNG_DELTATYPE_REPLACE)
- {
- if (((pData->iDHDRblockx + pData->iDHDRblockwidth ) > pData->iDatawidth ) ||
- ((pData->iDHDRblocky + pData->iDHDRblockheight) > pData->iDataheight) )
- MNG_ERROR (pData, MNG_INVALIDBLOCK);
- }
-
- pData->iDatawidth = pData->iDHDRblockwidth;
- pData->iDataheight = pData->iDHDRblockheight;
- }
-#endif
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- switch (iDeltatype) /* determine nr of delta-channels */
-#else
- switch (pData->iDHDRdeltatype) /* determine nr of delta-channels */
-#endif
- {
- case MNG_DELTATYPE_BLOCKALPHAADD : ;
- case MNG_DELTATYPE_BLOCKALPHAREPLACE :
- {
-#ifdef MNG_INCLUDE_JNG
- if ((pData->iColortype == MNG_COLORTYPE_GRAYA ) ||
- (pData->iJHDRcolortype == MNG_COLORTYPE_JPEGGRAYA) )
- {
- pData->iColortype = MNG_COLORTYPE_GRAY;
- pData->iJHDRcolortype = MNG_COLORTYPE_JPEGGRAY;
- }
- else
- if ((pData->iColortype == MNG_COLORTYPE_RGBA ) ||
- (pData->iJHDRcolortype == MNG_COLORTYPE_JPEGCOLORA) )
- {
- pData->iColortype = MNG_COLORTYPE_GRAY;
- pData->iJHDRcolortype = MNG_COLORTYPE_JPEGGRAY;
- }
-#else
- if (pData->iColortype == MNG_COLORTYPE_GRAYA)
- pData->iColortype = MNG_COLORTYPE_GRAY;
- else
- if (pData->iColortype == MNG_COLORTYPE_RGBA)
- pData->iColortype = MNG_COLORTYPE_GRAY;
-#endif
- else /* target has no alpha; that sucks! */
- MNG_ERROR (pData, MNG_TARGETNOALPHA);
-
- break;
- }
-
- case MNG_DELTATYPE_BLOCKCOLORADD : ;
- case MNG_DELTATYPE_BLOCKCOLORREPLACE :
- {
-#ifdef MNG_INCLUDE_JNG
- if ((pData->iColortype == MNG_COLORTYPE_GRAYA ) ||
- (pData->iJHDRcolortype == MNG_COLORTYPE_JPEGGRAYA) )
- {
- pData->iColortype = MNG_COLORTYPE_GRAY;
- pData->iJHDRcolortype = MNG_COLORTYPE_JPEGGRAY;
- }
- else
- if ((pData->iColortype == MNG_COLORTYPE_RGBA ) ||
- (pData->iJHDRcolortype == MNG_COLORTYPE_JPEGCOLORA) )
- {
- pData->iColortype = MNG_COLORTYPE_RGB;
- pData->iJHDRcolortype = MNG_COLORTYPE_JPEGCOLOR;
- }
-#else
- if (pData->iColortype == MNG_COLORTYPE_GRAYA)
- pData->iColortype = MNG_COLORTYPE_GRAY;
- else
- if (pData->iColortype == MNG_COLORTYPE_RGBA)
- pData->iColortype = MNG_COLORTYPE_RGB;
-#endif
- else /* target has no alpha; that sucks! */
- MNG_ERROR (pData, MNG_TARGETNOALPHA);
-
- break;
- }
-
- }
- /* full image replace ? */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if (iDeltatype == MNG_DELTATYPE_REPLACE)
-#else
- if (pData->iDHDRdeltatype == MNG_DELTATYPE_REPLACE)
-#endif
- {
- iRetcode = mng_reset_object_details (pData, pImage,
- pData->iDatawidth, pData->iDataheight,
- pData->iBitdepth, pData->iColortype,
- pData->iCompression, pData->iFilter,
- pData->iInterlace, MNG_FALSE);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- pData->pStoreobj = pImage; /* and store straight into this object */
- }
- else
- {
- mng_imagedatap pBufzero, pBuf;
- /* we store in object 0 and process it later */
- pData->pStoreobj = pData->pObjzero;
- /* make sure to initialize object 0 then */
- iRetcode = mng_reset_object_details (pData, (mng_imagep)pData->pObjzero,
- pData->iDatawidth, pData->iDataheight,
- pData->iBitdepth, pData->iColortype,
- pData->iCompression, pData->iFilter,
- pData->iInterlace, MNG_TRUE);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- pBuf = pImage->pImgbuf; /* copy possible palette & cheap transparency */
- pBufzero = ((mng_imagep)pData->pObjzero)->pImgbuf;
-
- pBufzero->bHasPLTE = pBuf->bHasPLTE;
- pBufzero->bHasTRNS = pBuf->bHasTRNS;
-
- if (pBufzero->bHasPLTE) /* copy palette ? */
- {
- mng_uint32 iX;
-
- pBufzero->iPLTEcount = pBuf->iPLTEcount;
-
- for (iX = 0; iX < pBuf->iPLTEcount; iX++)
- {
- pBufzero->aPLTEentries [iX].iRed = pBuf->aPLTEentries [iX].iRed;
- pBufzero->aPLTEentries [iX].iGreen = pBuf->aPLTEentries [iX].iGreen;
- pBufzero->aPLTEentries [iX].iBlue = pBuf->aPLTEentries [iX].iBlue;
- }
- }
-
- if (pBufzero->bHasTRNS) /* copy cheap transparency ? */
- {
- pBufzero->iTRNSgray = pBuf->iTRNSgray;
- pBufzero->iTRNSred = pBuf->iTRNSred;
- pBufzero->iTRNSgreen = pBuf->iTRNSgreen;
- pBufzero->iTRNSblue = pBuf->iTRNSblue;
- pBufzero->iTRNScount = pBuf->iTRNScount;
-
- MNG_COPY (pBufzero->aTRNSentries, pBuf->aTRNSentries,
- sizeof (pBufzero->aTRNSentries));
- }
- /* process immediately if bitdepth & colortype are equal */
- pData->bDeltaimmediate =
- (mng_bool)((pData->bDisplaying) && (!pData->bSkipping) &&
- ((pData->bRunning) || (pData->bSearching)) &&
- (pData->iBitdepth == ((mng_imagep)pData->pDeltaImage)->pImgbuf->iBitdepth ) &&
- (pData->iColortype == ((mng_imagep)pData->pDeltaImage)->pImgbuf->iColortype) );
- }
-
-#ifdef MNG_OPTIMIZE_FOOTPRINT_INIT
- pData->fInitrowproc = (mng_fptr)mng_init_rowproc;
- pData->ePng_imgtype = mng_png_imgtype (pData->iColortype, pData->iBitdepth);
-#else
- switch (pData->iColortype) /* determine row initialization routine */
- {
- case 0 : { /* gray */
- switch (pData->iBitdepth)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g1_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g1_i;
-
- break;
- }
- case 2 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g2_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g2_i;
-
- break;
- }
- case 4 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g4_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g4_i;
-
- break;
- }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g8_i;
-
- break;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_g16_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_g16_i;
-
- break;
- }
-#endif
- }
-
- break;
- }
- case 2 : { /* rgb */
- switch (pData->iBitdepth)
- {
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_rgb8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_rgb8_i;
-
- break;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_rgb16_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_rgb16_i;
-
- break;
- }
-#endif
- }
-
- break;
- }
- case 3 : { /* indexed */
- switch (pData->iBitdepth)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_idx1_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_idx1_i;
-
- break;
- }
- case 2 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_idx2_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_idx2_i;
-
- break;
- }
- case 4 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_idx4_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_idx4_i;
-
- break;
- }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_idx8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_idx8_i;
-
- break;
- }
- }
-
- break;
- }
- case 4 : { /* gray+alpha */
- switch (pData->iBitdepth)
- {
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_ga8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_ga8_i;
-
- break;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_ga16_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_ga16_i;
-
- break;
- }
-#endif
- }
-
- break;
- }
- case 6 : { /* rgb+alpha */
- switch (pData->iBitdepth)
- {
- case 8 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_rgba8_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_rgba8_i;
-
- break;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : {
- if (!pData->iInterlace)
- pData->fInitrowproc = (mng_fptr)mng_init_rgba16_ni;
- else
- pData->fInitrowproc = (mng_fptr)mng_init_rgba16_i;
-
- break;
- }
-#endif
- }
-
- break;
- }
- }
-#endif /* MNG_OPTIMIZE_FOOTPRINT_INIT */
- }
- else
- MNG_ERROR (pData, MNG_OBJNOTCONCRETE);
-
- }
- else
- MNG_ERROR (pData, MNG_OBJECTUNKNOWN);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_DHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-mng_retcode mng_process_display_prom (mng_datap pData,
- mng_uint8 iBitdepth,
- mng_uint8 iColortype,
- mng_uint8 iFilltype)
-#else
-mng_retcode mng_process_display_prom (mng_datap pData)
-#endif
-{
- mng_imagep pImage;
- mng_imagedatap pBuf;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_PROM, MNG_LC_START);
-#endif
-
- if (!pData->pDeltaImage) /* gotta have this now! */
- MNG_ERROR (pData, MNG_INVALIDDELTA);
-
- pImage = (mng_imagep)pData->pDeltaImage;
- pBuf = pImage->pImgbuf;
- /* can't demote bitdepth! */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if (iBitdepth < pBuf->iBitdepth)
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
- if ( ((pBuf->iColortype == MNG_COLORTYPE_GRAY ) &&
- (iColortype != MNG_COLORTYPE_GRAY ) &&
- (iColortype != MNG_COLORTYPE_GRAYA ) &&
- (iColortype != MNG_COLORTYPE_RGB ) &&
- (iColortype != MNG_COLORTYPE_RGBA ) ) ||
- ((pBuf->iColortype == MNG_COLORTYPE_GRAYA ) &&
- (iColortype != MNG_COLORTYPE_GRAYA ) &&
- (iColortype != MNG_COLORTYPE_RGBA ) ) ||
- ((pBuf->iColortype == MNG_COLORTYPE_RGB ) &&
- (iColortype != MNG_COLORTYPE_RGB ) &&
- (iColortype != MNG_COLORTYPE_RGBA ) ) ||
- ((pBuf->iColortype == MNG_COLORTYPE_RGBA ) &&
- (iColortype != MNG_COLORTYPE_RGBA ) ) ||
-#ifdef MNG_INCLUDE_JNG
- ((pBuf->iColortype == MNG_COLORTYPE_JPEGGRAY ) &&
- (iColortype != MNG_COLORTYPE_JPEGGRAY ) &&
- (iColortype != MNG_COLORTYPE_JPEGCOLOR ) &&
- (iColortype != MNG_COLORTYPE_JPEGGRAYA ) &&
- (iColortype != MNG_COLORTYPE_JPEGCOLORA) ) ||
- ((pBuf->iColortype == MNG_COLORTYPE_JPEGCOLOR ) &&
- (iColortype != MNG_COLORTYPE_JPEGCOLOR ) &&
- (iColortype != MNG_COLORTYPE_JPEGCOLORA) ) ||
- ((pBuf->iColortype == MNG_COLORTYPE_JPEGGRAYA ) &&
- (iColortype != MNG_COLORTYPE_JPEGGRAYA ) &&
- (iColortype != MNG_COLORTYPE_JPEGCOLORA) ) ||
- ((pBuf->iColortype == MNG_COLORTYPE_JPEGCOLORA) &&
- (iColortype != MNG_COLORTYPE_JPEGCOLORA) ) ||
-#endif
- ((pBuf->iColortype == MNG_COLORTYPE_INDEXED ) &&
- (iColortype != MNG_COLORTYPE_INDEXED ) &&
- (iColortype != MNG_COLORTYPE_RGB ) &&
- (iColortype != MNG_COLORTYPE_RGBA ) ) )
- MNG_ERROR (pData, MNG_INVALIDCOLORTYPE);
-
- iRetcode = mng_promote_imageobject (pData, pImage, iBitdepth, iColortype, iFilltype);
-#else
- if (pData->iPROMbitdepth < pBuf->iBitdepth)
- MNG_ERROR (pData, MNG_INVALIDBITDEPTH);
-
- if ( ((pBuf->iColortype == MNG_COLORTYPE_GRAY ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_GRAY ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_GRAYA ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_RGB ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_RGBA ) ) ||
- ((pBuf->iColortype == MNG_COLORTYPE_GRAYA ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_GRAYA ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_RGBA ) ) ||
- ((pBuf->iColortype == MNG_COLORTYPE_RGB ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_RGB ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_RGBA ) ) ||
- ((pBuf->iColortype == MNG_COLORTYPE_RGBA ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_RGBA ) ) ||
-#ifdef MNG_INCLUDE_JNG
- ((pBuf->iColortype == MNG_COLORTYPE_JPEGGRAY ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_JPEGGRAY ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_JPEGCOLOR ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_JPEGGRAYA ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_JPEGCOLORA) ) ||
- ((pBuf->iColortype == MNG_COLORTYPE_JPEGCOLOR ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_JPEGCOLOR ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_JPEGCOLORA) ) ||
- ((pBuf->iColortype == MNG_COLORTYPE_JPEGGRAYA ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_JPEGGRAYA ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_JPEGCOLORA) ) ||
- ((pBuf->iColortype == MNG_COLORTYPE_JPEGCOLORA) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_JPEGCOLORA) ) ||
-#endif
- ((pBuf->iColortype == MNG_COLORTYPE_INDEXED ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_INDEXED ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_RGB ) &&
- (pData->iPROMcolortype != MNG_COLORTYPE_RGBA ) ) )
- MNG_ERROR (pData, MNG_INVALIDCOLORTYPE);
-
- iRetcode = mng_promote_imageobject (pData, pImage, pData->iPROMbitdepth,
- pData->iPROMcolortype, pData->iPROMfilltype);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_PROM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode mng_process_display_ipng (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_IPNG, MNG_LC_START);
-#endif
- /* indicate it for what it is now */
- pData->iDeltaImagetype = MNG_IMAGETYPE_PNG;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_IPNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifdef MNG_INCLUDE_JNG
-mng_retcode mng_process_display_ijng (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_IJNG, MNG_LC_START);
-#endif
- /* indicate it for what it is now */
- pData->iDeltaImagetype = MNG_IMAGETYPE_JNG;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_IJNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-mng_retcode mng_process_display_pplt (mng_datap pData,
- mng_uint8 iType,
- mng_uint32 iCount,
- mng_palette8ep paIndexentries,
- mng_uint8p paAlphaentries,
- mng_uint8p paUsedentries)
-#else
-mng_retcode mng_process_display_pplt (mng_datap pData)
-#endif
-{
- mng_uint32 iX;
- mng_imagep pImage = (mng_imagep)pData->pObjzero;
- mng_imagedatap pBuf = pImage->pImgbuf;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_PPLT, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- iX = iCount;
-#else
- iX = pData->iPPLTcount;
-#endif
-#endif
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- switch (iType)
-#else
- switch (pData->iPPLTtype)
-#endif
- {
- case MNG_DELTATYPE_REPLACERGB :
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (; iX > 0;iX--)
-#else
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- for (iX = 0; iX < iCount; iX++)
-#else
- for (iX = 0; iX < pData->iPPLTcount; iX++)
-#endif
-#endif
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if (paUsedentries [iX])
- {
- pBuf->aPLTEentries [iX].iRed = paIndexentries [iX].iRed;
- pBuf->aPLTEentries [iX].iGreen = paIndexentries [iX].iGreen;
- pBuf->aPLTEentries [iX].iBlue = paIndexentries [iX].iBlue;
- }
-#else
- if (pData->paPPLTusedentries [iX])
- {
- pBuf->aPLTEentries [iX].iRed = pData->paPPLTindexentries [iX].iRed;
- pBuf->aPLTEentries [iX].iGreen = pData->paPPLTindexentries [iX].iGreen;
- pBuf->aPLTEentries [iX].iBlue = pData->paPPLTindexentries [iX].iBlue;
- }
-#endif
- }
-
- break;
- }
- case MNG_DELTATYPE_DELTARGB :
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (; iX > 0;iX--)
-#else
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- for (iX = 0; iX < iCount; iX++)
-#else
- for (iX = 0; iX < pData->iPPLTcount; iX++)
-#endif
-#endif
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if (paUsedentries [iX])
- {
- pBuf->aPLTEentries [iX].iRed =
- (mng_uint8)(pBuf->aPLTEentries [iX].iRed +
- paIndexentries [iX].iRed );
- pBuf->aPLTEentries [iX].iGreen =
- (mng_uint8)(pBuf->aPLTEentries [iX].iGreen +
- paIndexentries [iX].iGreen);
- pBuf->aPLTEentries [iX].iBlue =
- (mng_uint8)(pBuf->aPLTEentries [iX].iBlue +
- paIndexentries [iX].iBlue );
- }
-#else
- if (pData->paPPLTusedentries [iX])
- {
- pBuf->aPLTEentries [iX].iRed =
- (mng_uint8)(pBuf->aPLTEentries [iX].iRed +
- pData->paPPLTindexentries [iX].iRed );
- pBuf->aPLTEentries [iX].iGreen =
- (mng_uint8)(pBuf->aPLTEentries [iX].iGreen +
- pData->paPPLTindexentries [iX].iGreen);
- pBuf->aPLTEentries [iX].iBlue =
- (mng_uint8)(pBuf->aPLTEentries [iX].iBlue +
- pData->paPPLTindexentries [iX].iBlue );
- }
-#endif
- }
-
- break;
- }
- case MNG_DELTATYPE_REPLACEALPHA :
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (; iX > 0;iX--)
-#else
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- for (iX = 0; iX < iCount; iX++)
-#else
- for (iX = 0; iX < pData->iPPLTcount; iX++)
-#endif
-#endif
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if (paUsedentries [iX])
- pBuf->aTRNSentries [iX] = paAlphaentries [iX];
- }
-#else
- if (pData->paPPLTusedentries [iX])
- pBuf->aTRNSentries [iX] = pData->paPPLTalphaentries [iX];
- }
-#endif
-
- break;
- }
- case MNG_DELTATYPE_DELTAALPHA :
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (; iX > 0;iX--)
-#else
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- for (iX = 0; iX < iCount; iX++)
-#else
- for (iX = 0; iX < pData->iPPLTcount; iX++)
-#endif
-#endif
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if (paUsedentries [iX])
- pBuf->aTRNSentries [iX] =
- (mng_uint8)(pBuf->aTRNSentries [iX] +
- paAlphaentries [iX]);
-#else
- if (pData->paPPLTusedentries [iX])
- pBuf->aTRNSentries [iX] =
- (mng_uint8)(pBuf->aTRNSentries [iX] +
- pData->paPPLTalphaentries [iX]);
-#endif
- }
-
- break;
- }
- case MNG_DELTATYPE_REPLACERGBA :
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (; iX > 0;iX--)
-#else
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- for (iX = 0; iX < iCount; iX++)
-#else
- for (iX = 0; iX < pData->iPPLTcount; iX++)
-#endif
-#endif
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if (paUsedentries [iX])
- {
- pBuf->aPLTEentries [iX].iRed = paIndexentries [iX].iRed;
- pBuf->aPLTEentries [iX].iGreen = paIndexentries [iX].iGreen;
- pBuf->aPLTEentries [iX].iBlue = paIndexentries [iX].iBlue;
- pBuf->aTRNSentries [iX] = paAlphaentries [iX];
- }
-#else
- if (pData->paPPLTusedentries [iX])
- {
- pBuf->aPLTEentries [iX].iRed = pData->paPPLTindexentries [iX].iRed;
- pBuf->aPLTEentries [iX].iGreen = pData->paPPLTindexentries [iX].iGreen;
- pBuf->aPLTEentries [iX].iBlue = pData->paPPLTindexentries [iX].iBlue;
- pBuf->aTRNSentries [iX] = pData->paPPLTalphaentries [iX];
- }
-#endif
- }
-
- break;
- }
- case MNG_DELTATYPE_DELTARGBA :
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (; iX > 0;iX--)
-#else
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- for (iX = 0; iX < iCount; iX++)
-#else
- for (iX = 0; iX < pData->iPPLTcount; iX++)
-#endif
-#endif
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if (paUsedentries [iX])
- {
- pBuf->aPLTEentries [iX].iRed =
- (mng_uint8)(pBuf->aPLTEentries [iX].iRed +
- paIndexentries [iX].iRed );
- pBuf->aPLTEentries [iX].iGreen =
- (mng_uint8)(pBuf->aPLTEentries [iX].iGreen +
- paIndexentries [iX].iGreen);
- pBuf->aPLTEentries [iX].iBlue =
- (mng_uint8)(pBuf->aPLTEentries [iX].iBlue +
- paIndexentries [iX].iBlue );
- pBuf->aTRNSentries [iX] =
- (mng_uint8)(pBuf->aTRNSentries [iX] +
- paAlphaentries [iX]);
- }
-#else
- if (pData->paPPLTusedentries [iX])
- {
- pBuf->aPLTEentries [iX].iRed =
- (mng_uint8)(pBuf->aPLTEentries [iX].iRed +
- pData->paPPLTindexentries [iX].iRed );
- pBuf->aPLTEentries [iX].iGreen =
- (mng_uint8)(pBuf->aPLTEentries [iX].iGreen +
- pData->paPPLTindexentries [iX].iGreen);
- pBuf->aPLTEentries [iX].iBlue =
- (mng_uint8)(pBuf->aPLTEentries [iX].iBlue +
- pData->paPPLTindexentries [iX].iBlue );
- pBuf->aTRNSentries [iX] =
- (mng_uint8)(pBuf->aTRNSentries [iX] +
- pData->paPPLTalphaentries [iX]);
- }
-#endif
- }
-
- break;
- }
- }
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if ((iType != MNG_DELTATYPE_REPLACERGB) && (iType != MNG_DELTATYPE_DELTARGB))
-#else
- if ((pData->iPPLTtype != MNG_DELTATYPE_REPLACERGB) &&
- (pData->iPPLTtype != MNG_DELTATYPE_DELTARGB ) )
-#endif
- {
- if (pBuf->bHasTRNS)
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if (iCount > pBuf->iTRNScount)
- pBuf->iTRNScount = iCount;
-#else
- if (pData->iPPLTcount > pBuf->iTRNScount)
- pBuf->iTRNScount = pData->iPPLTcount;
-#endif
- }
- else
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pBuf->iTRNScount = iCount;
- pBuf->bHasTRNS = MNG_TRUE;
-#else
- pBuf->iTRNScount = pData->iPPLTcount;
- pBuf->bHasTRNS = MNG_TRUE;
-#endif
- }
- }
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if ((iType != MNG_DELTATYPE_REPLACEALPHA) && (iType != MNG_DELTATYPE_DELTAALPHA))
-#else
- if ((pData->iPPLTtype != MNG_DELTATYPE_REPLACEALPHA) &&
- (pData->iPPLTtype != MNG_DELTATYPE_DELTAALPHA ) )
-#endif
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if (iCount > pBuf->iPLTEcount)
- pBuf->iPLTEcount = iCount;
-#else
- if (pData->iPPLTcount > pBuf->iPLTEcount)
- pBuf->iPLTEcount = pData->iPPLTcount;
-#endif
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_PPLT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_MAGN
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-mng_retcode mng_process_display_magn (mng_datap pData,
- mng_uint16 iFirstid,
- mng_uint16 iLastid,
- mng_uint8 iMethodX,
- mng_uint16 iMX,
- mng_uint16 iMY,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint16 iMT,
- mng_uint16 iMB,
- mng_uint8 iMethodY)
-#else
-mng_retcode mng_process_display_magn (mng_datap pData)
-#endif
-{
- mng_uint16 iX;
- mng_imagep pImage;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_MAGN, MNG_LC_START);
-#endif
- /* iterate the object-ids */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- for (iX = iFirstid; iX <= iLastid; iX++)
-#else
- for (iX = pData->iMAGNfirstid; iX <= pData->iMAGNlastid; iX++)
-#endif
- {
- if (iX == 0) /* process object 0 ? */
- {
- pImage = (mng_imagep)pData->pObjzero;
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pImage->iMAGN_MethodX = iMethodX;
- pImage->iMAGN_MethodY = iMethodY;
- pImage->iMAGN_MX = iMX;
- pImage->iMAGN_MY = iMY;
- pImage->iMAGN_ML = iML;
- pImage->iMAGN_MR = iMR;
- pImage->iMAGN_MT = iMT;
- pImage->iMAGN_MB = iMB;
-#else
- pImage->iMAGN_MethodX = pData->iMAGNmethodX;
- pImage->iMAGN_MethodY = pData->iMAGNmethodY;
- pImage->iMAGN_MX = pData->iMAGNmX;
- pImage->iMAGN_MY = pData->iMAGNmY;
- pImage->iMAGN_ML = pData->iMAGNmL;
- pImage->iMAGN_MR = pData->iMAGNmR;
- pImage->iMAGN_MT = pData->iMAGNmT;
- pImage->iMAGN_MB = pData->iMAGNmB;
-#endif
- }
- else
- {
- pImage = mng_find_imageobject (pData, iX);
- /* object exists & is not frozen ? */
- if ((pImage) && (!pImage->bFrozen))
- { /* previous magnification to be done ? */
- if ((pImage->iMAGN_MethodX) || (pImage->iMAGN_MethodY))
- {
- mng_retcode iRetcode = mng_magnify_imageobject (pData, pImage);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pImage->iMAGN_MethodX = iMethodX;
- pImage->iMAGN_MethodY = iMethodY;
- pImage->iMAGN_MX = iMX;
- pImage->iMAGN_MY = iMY;
- pImage->iMAGN_ML = iML;
- pImage->iMAGN_MR = iMR;
- pImage->iMAGN_MT = iMT;
- pImage->iMAGN_MB = iMB;
-#else
- pImage->iMAGN_MethodX = pData->iMAGNmethodX;
- pImage->iMAGN_MethodY = pData->iMAGNmethodY;
- pImage->iMAGN_MX = pData->iMAGNmX;
- pImage->iMAGN_MY = pData->iMAGNmY;
- pImage->iMAGN_ML = pData->iMAGNmL;
- pImage->iMAGN_MR = pData->iMAGNmR;
- pImage->iMAGN_MT = pData->iMAGNmT;
- pImage->iMAGN_MB = pData->iMAGNmB;
-#endif
- }
- }
- }
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pData->iMAGNfromid = iFirstid;
- pData->iMAGNtoid = iLastid;
- iX = iFirstid;
-#else
- pData->iMAGNfromid = pData->iMAGNfirstid;
- pData->iMAGNtoid = pData->iMAGNlastid;
- iX = pData->iMAGNfirstid;
-#endif
- /* iterate again for showing */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- while ((iX <= iLastid) && (!pData->bTimerset))
-#else
- while ((iX <= pData->iMAGNlastid) && (!pData->bTimerset))
-#endif
- {
- pData->iMAGNcurrentid = iX;
-
- if (iX) /* only real objects ! */
- {
- pImage = mng_find_imageobject (pData, iX);
- /* object exists & is not frozen &
- is visible & is viewable ? */
- if ((pImage) && (!pImage->bFrozen) &&
- (pImage->bVisible) && (pImage->bViewable))
- {
- mng_retcode iRetcode = mng_display_image (pData, pImage, MNG_FALSE);
- if (iRetcode)
- return iRetcode;
- }
- }
-
- iX++;
- }
-
- if (pData->bTimerset) /* broken ? */
- pData->iBreakpoint = 9;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_MAGN, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_display_magn2 (mng_datap pData)
-{
- mng_uint16 iX;
- mng_imagep pImage;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_MAGN, MNG_LC_START);
-#endif
-
- iX = pData->iMAGNcurrentid;
- /* iterate again for showing */
- while ((iX <= pData->iMAGNtoid) && (!pData->bTimerset))
- {
- pData->iMAGNcurrentid = iX;
-
- if (iX) /* only real objects ! */
- {
- pImage = mng_find_imageobject (pData, iX);
- /* object exists & is not frozen &
- is visible & is viewable ? */
- if ((pImage) && (!pImage->bFrozen) &&
- (pImage->bVisible) && (pImage->bViewable))
- {
- mng_retcode iRetcode = mng_display_image (pData, pImage, MNG_FALSE);
- if (iRetcode)
- return iRetcode;
- }
- }
-
- iX++;
- }
-
- if (pData->bTimerset) /* broken ? */
- pData->iBreakpoint = 9;
- else
- pData->iBreakpoint = 0; /* not again ! */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_MAGN, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-mng_retcode mng_process_display_past (mng_datap pData,
- mng_uint16 iTargetid,
- mng_uint8 iTargettype,
- mng_int32 iTargetx,
- mng_int32 iTargety,
- mng_uint32 iCount,
- mng_ptr pSources)
-#else
-mng_retcode mng_process_display_past (mng_datap pData)
-#endif
-{
- mng_retcode iRetcode = MNG_NOERROR;
- mng_imagep pTargetimg;
- mng_imagep pSourceimg;
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- mng_past_sourcep pSource = (mng_past_sourcep)pSources;
-#else
- mng_past_sourcep pSource = (mng_past_sourcep)pData->pPASTsources;
-#endif
- mng_uint32 iX = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_PAST, MNG_LC_START);
-#endif
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if (iTargetid) /* a real destination object ? */
-#else
- if (pData->iPASTtargetid) /* a real destination object ? */
-#endif
- { /* let's find it then */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pTargetimg = (mng_imagep)mng_find_imageobject (pData, iTargetid);
-#else
- pTargetimg = (mng_imagep)mng_find_imageobject (pData, pData->iPASTtargetid);
-#endif
-
- if (!pTargetimg) /* if it doesn't exists; do a barf */
- MNG_ERROR (pData, MNG_OBJECTUNKNOWN);
- /* it's gotta be abstract !!! */
- if (pTargetimg->pImgbuf->bConcrete)
- MNG_ERROR (pData, MNG_OBJNOTABSTRACT);
- /* we want 32-/64-bit RGBA to play with ! */
- if ((pTargetimg->pImgbuf->iBitdepth <= MNG_BITDEPTH_8) ||
- (pTargetimg->pImgbuf->iColortype == MNG_COLORTYPE_GRAY) ||
- (pTargetimg->pImgbuf->iColortype == MNG_COLORTYPE_RGB) ||
- (pTargetimg->pImgbuf->iColortype == MNG_COLORTYPE_INDEXED) ||
- (pTargetimg->pImgbuf->iColortype == MNG_COLORTYPE_GRAYA) )
- iRetcode = mng_promote_imageobject (pData, pTargetimg, MNG_BITDEPTH_8,
- MNG_COLORTYPE_RGBA,
- MNG_FILLMETHOD_LEFTBITREPLICATE);
- else
- if ((pTargetimg->pImgbuf->iBitdepth > MNG_BITDEPTH_8) &&
- ((pTargetimg->pImgbuf->iColortype == MNG_COLORTYPE_GRAY) ||
- (pTargetimg->pImgbuf->iColortype == MNG_COLORTYPE_RGB) ||
- (pTargetimg->pImgbuf->iColortype == MNG_COLORTYPE_GRAYA) ) )
- iRetcode = mng_promote_imageobject (pData, pTargetimg, MNG_BITDEPTH_16,
- MNG_COLORTYPE_RGBA,
- MNG_FILLMETHOD_LEFTBITREPLICATE);
-#ifdef MNG_INCLUDE_JNG
- else
- if ((pTargetimg->pImgbuf->iColortype == MNG_COLORTYPE_JPEGGRAY) ||
- (pTargetimg->pImgbuf->iColortype == MNG_COLORTYPE_JPEGCOLOR) ||
- (pTargetimg->pImgbuf->iColortype == MNG_COLORTYPE_JPEGGRAYA) )
- iRetcode = mng_promote_imageobject (pData, pTargetimg,
- pTargetimg->pImgbuf->iBitdepth,
- MNG_COLORTYPE_JPEGCOLORA,
- MNG_FILLMETHOD_LEFTBITREPLICATE);
-#endif
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* make it really abstract ? */
- if (!pTargetimg->pImgbuf->bCorrected)
- {
- iRetcode = mng_colorcorrect_object (pData, pTargetimg);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- }
- else
- { /* pasting into object 0 !!! */
- pTargetimg = (mng_imagep)pData->pObjzero;
- /* is it usable ??? */
- if ((pTargetimg->bClipped) &&
- (pTargetimg->iClipr > pTargetimg->iPosx) &&
- (pTargetimg->iClipb > pTargetimg->iPosy))
- {
- /* make it 32-bit RGBA please !!! */
- iRetcode = mng_reset_object_details (pData, pTargetimg,
- pTargetimg->iClipr - pTargetimg->iPosx,
- pTargetimg->iClipb - pTargetimg->iPosy,
- MNG_BITDEPTH_8, MNG_COLORTYPE_RGBA,
- 0, 0, 0, MNG_FALSE);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- else
- pTargetimg = MNG_NULL; /* clipped beyond visibility ! */
- }
-
- if (pTargetimg) /* usable destination ? */
- {
- mng_int32 iSourceY;
- mng_int32 iSourceYinc;
- mng_int32 iSourcerowsize;
- mng_int32 iSourcesamples;
- mng_bool bSourceRGBA16;
- mng_int32 iTargetY;
- mng_int32 iTargetrowsize;
- mng_int32 iTargetsamples;
- mng_bool bTargetRGBA16 = MNG_FALSE;
- mng_int32 iTemprowsize;
- mng_imagedatap pBuf;
-#ifndef MNG_SKIPCHUNK_MAGN
- /* needs magnification ? */
- if ((pTargetimg->iMAGN_MethodX) || (pTargetimg->iMAGN_MethodY))
- iRetcode = mng_magnify_imageobject (pData, pTargetimg);
-#endif
-
- if (!iRetcode) /* still ok ? */
- {
- bTargetRGBA16 = (mng_bool)(pTargetimg->pImgbuf->iBitdepth > 8);
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- switch (iTargettype) /* determine target x/y */
-#else
- switch (pData->iPASTtargettype) /* determine target x/y */
-#endif
- {
- case 0 : {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pData->iPastx = iTargetx;
- pData->iPasty = iTargety;
-#else
- pData->iPastx = pData->iPASTtargetx;
- pData->iPasty = pData->iPASTtargety;
-#endif
- break;
- }
-
- case 1 : {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pData->iPastx = pTargetimg->iPastx + iTargetx;
- pData->iPasty = pTargetimg->iPasty + iTargety;
-#else
- pData->iPastx = pTargetimg->iPastx + pData->iPASTtargetx;
- pData->iPasty = pTargetimg->iPasty + pData->iPASTtargety;
-#endif
- break;
- }
-
- case 2 : {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pData->iPastx += iTargetx;
- pData->iPasty += iTargety;
-#else
- pData->iPastx += pData->iPASTtargetx;
- pData->iPasty += pData->iPASTtargety;
-#endif
- break;
- }
- }
- /* save for next time ... */
- pTargetimg->iPastx = pData->iPastx;
- pTargetimg->iPasty = pData->iPasty;
- /* address destination for row-routines */
- pData->pStoreobj = (mng_objectp)pTargetimg;
- pData->pStorebuf = (mng_objectp)pTargetimg->pImgbuf;
- }
- /* process the sources one by one */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- while ((!iRetcode) && (iX < iCount))
-#else
- while ((!iRetcode) && (iX < pData->iPASTcount))
-#endif
- { /* find the little bastards first */
- pSourceimg = (mng_imagep)mng_find_imageobject (pData, pSource->iSourceid);
- /* exists and viewable? */
- if ((pSourceimg) && (pSourceimg->bViewable))
- { /* needs magnification ? */
-#ifndef MNG_SKIPCHUNK_MAGN
- if ((pSourceimg->iMAGN_MethodX) || (pSourceimg->iMAGN_MethodY))
- iRetcode = mng_magnify_imageobject (pData, pSourceimg);
-#endif
-
- if (!iRetcode) /* still ok ? */
- {
- pBuf = (mng_imagedatap)pSourceimg->pImgbuf;
- /* address source for row-routines */
- pData->pRetrieveobj = (mng_objectp)pSourceimg;
-
- pData->iPass = -1; /* init row-processing variables */
- pData->iRowinc = 1;
- pData->iColinc = 1;
- pData->iPixelofs = 0;
- iSourcesamples = (mng_int32)pBuf->iWidth;
- iSourcerowsize = pBuf->iRowsize;
- bSourceRGBA16 = (mng_bool)(pBuf->iBitdepth > 8);
- /* make sure the delta-routines do the right thing */
- pData->iDeltatype = MNG_DELTATYPE_BLOCKPIXELREPLACE;
-
- switch (pBuf->iColortype)
- {
- case 0 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (bSourceRGBA16)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_g16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_g8;
-
- pData->bIsOpaque = (mng_bool)(!pBuf->bHasTRNS);
- break;
- }
-
- case 2 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (bSourceRGBA16)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgb16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgb8;
-
- pData->bIsOpaque = (mng_bool)(!pBuf->bHasTRNS);
- break;
- }
-
-
- case 3 : { pData->fRetrieverow = (mng_fptr)mng_retrieve_idx8;
- pData->bIsOpaque = (mng_bool)(!pBuf->bHasTRNS);
- break;
- }
-
-
- case 4 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (bSourceRGBA16)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_ga16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_ga8;
-
- pData->bIsOpaque = MNG_FALSE;
- break;
- }
-
-
- case 6 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (bSourceRGBA16)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgba16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgba8;
-
- pData->bIsOpaque = MNG_FALSE;
- break;
- }
-
- case 8 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (bSourceRGBA16)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_g16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_g8;
-
- pData->bIsOpaque = MNG_TRUE;
- break;
- }
-
- case 10 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (bSourceRGBA16)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgb16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgb8;
-
- pData->bIsOpaque = MNG_TRUE;
- break;
- }
-
-
- case 12 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (bSourceRGBA16)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_ga16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_ga8;
-
- pData->bIsOpaque = MNG_FALSE;
- break;
- }
-
-
- case 14 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (bSourceRGBA16)
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgba16;
- else
-#endif
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgba8;
-
- pData->bIsOpaque = MNG_FALSE;
- break;
- }
- }
- /* determine scaling */
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_NO_DELTA_PNG
- if ((!bSourceRGBA16) && (bTargetRGBA16))
- pData->fScalerow = (mng_fptr)mng_scale_rgba8_rgba16;
- else
- if ((bSourceRGBA16) && (!bTargetRGBA16))
- pData->fScalerow = (mng_fptr)mng_scale_rgba16_rgba8;
- else
-#endif
-#endif
- pData->fScalerow = MNG_NULL;
-
- /* default no color-correction */
- pData->fCorrectrow = MNG_NULL;
-
-#if defined(MNG_FULL_CMS) /* determine color-management routine */
- iRetcode = mng_init_full_cms (pData, MNG_FALSE, MNG_FALSE, MNG_TRUE);
-#elif defined(MNG_GAMMA_ONLY)
- iRetcode = mng_init_gamma_only (pData, MNG_FALSE, MNG_FALSE, MNG_TRUE);
-#elif defined(MNG_APP_CMS)
- iRetcode = mng_init_app_cms (pData, MNG_FALSE, MNG_FALSE, MNG_TRUE);
-#endif
- }
-
- if (!iRetcode) /* still ok ? */
- {
- pData->fFliprow = MNG_NULL; /* no flipping or tiling by default */
- pData->fTilerow = MNG_NULL;
- /* but perhaps we do have to ... */
- switch (pSource->iOrientation)
- {
- case 2 : ;
- case 4 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (bTargetRGBA16)
- pData->fFliprow = (mng_fptr)mng_flip_rgba16;
- else
-#endif
- pData->fFliprow = (mng_fptr)mng_flip_rgba8;
- break;
- }
-
- case 8 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (bTargetRGBA16)
- pData->fTilerow = (mng_fptr)mng_tile_rgba16;
- else
-#endif
- pData->fTilerow = (mng_fptr)mng_tile_rgba8;
- break;
- }
- }
- /* determine composition routine */
- /* note that we're abusing the delta-routine setup !!! */
- switch (pSource->iComposition)
- {
- case 0 : { /* composite over */
-#ifndef MNG_NO_16BIT_SUPPORT
- if (bTargetRGBA16)
- pData->fDeltarow = (mng_fptr)mng_composeover_rgba16;
- else
-#endif
- pData->fDeltarow = (mng_fptr)mng_composeover_rgba8;
- break;
- }
-
- case 1 : { /* replace */
-#ifndef MNG_NO_16BIT_SUPPORT
- if (bTargetRGBA16)
- pData->fDeltarow = (mng_fptr)mng_delta_rgba16_rgba16;
- else
-#endif
- pData->fDeltarow = (mng_fptr)mng_delta_rgba8_rgba8;
- break;
- }
-
- case 2 : { /* composite under */
-#ifndef MNG_NO_16BIT_SUPPORT
- if (bTargetRGBA16)
- pData->fDeltarow = (mng_fptr)mng_composeunder_rgba16;
- else
-#endif
- pData->fDeltarow = (mng_fptr)mng_composeunder_rgba8;
- break;
- }
- }
- /* determine offsets & clipping */
- if (pSource->iOffsettype == 1)
- {
- pData->iDestl = pData->iPastx + pSource->iOffsetx;
- pData->iDestt = pData->iPasty + pSource->iOffsety;
- }
- else
- {
- pData->iDestl = pSource->iOffsetx;
- pData->iDestt = pSource->iOffsety;
- }
-
- pData->iDestr = (mng_int32)pTargetimg->pImgbuf->iWidth;
- pData->iDestb = (mng_int32)pTargetimg->pImgbuf->iHeight;
- /* take the source dimension into account ? */
- if (pSource->iOrientation != 8)
- {
- pData->iDestr = MIN_COORD (pData->iDestr, pData->iDestl + (mng_int32)pBuf->iWidth);
- pData->iDestb = MIN_COORD (pData->iDestb, pData->iDestt + (mng_int32)pBuf->iHeight);
- }
- /* source clipping */
- if (pSource->iBoundarytype == 1)
- {
- if (pData->iDestl < pData->iPastx + pSource->iBoundaryl)
- pData->iSourcel = pData->iPastx + pSource->iBoundaryl - pData->iDestl;
- else
- pData->iSourcel = 0;
-
- if (pData->iDestt < pData->iPasty + pSource->iBoundaryt)
- pData->iSourcet = pData->iPasty + pSource->iBoundaryt - pData->iDestt;
- else
- pData->iSourcet = 0;
-
- pData->iDestl = MAX_COORD (pData->iDestl, pData->iPastx + pSource->iBoundaryl);
- pData->iDestt = MAX_COORD (pData->iDestt, pData->iPasty + pSource->iBoundaryt);
- pData->iDestr = MIN_COORD (pData->iDestr, pData->iPastx + pSource->iBoundaryr);
- pData->iDestb = MIN_COORD (pData->iDestb, pData->iPasty + pSource->iBoundaryb);
- }
- else
- {
- if (pData->iDestl < pSource->iBoundaryl)
- pData->iSourcel = pSource->iBoundaryl - pData->iDestl;
- else
- pData->iSourcel = 0;
-
- if (pData->iDestt < pSource->iBoundaryt)
- pData->iSourcet = pSource->iBoundaryt - pData->iDestt;
- else
- pData->iSourcet = 0;
-
- pData->iDestl = MAX_COORD (pData->iDestl, pSource->iBoundaryl);
- pData->iDestt = MAX_COORD (pData->iDestt, pSource->iBoundaryt);
- pData->iDestr = MIN_COORD (pData->iDestr, pSource->iBoundaryr);
- pData->iDestb = MIN_COORD (pData->iDestb, pSource->iBoundaryb);
- }
-
- if (pData->iSourcel) /* indent source ? */
- {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (bTargetRGBA16) /* abuse tiling routine to shift source-pixels */
- pData->fTilerow = (mng_fptr)mng_tile_rgba16;
- else
-#endif
- pData->fTilerow = (mng_fptr)mng_tile_rgba8;
- }
- /* anything to display ? */
- if ((pData->iDestl <= pData->iDestr) && (pData->iDestt <= pData->iDestb))
- { /* init variables for the loop */
- if ((pSource->iOrientation == 2) || (pSource->iOrientation == 6))
- {
- iSourceY = (mng_int32)pBuf->iHeight - 1 - pData->iSourcet;
- iSourceYinc = -1;
- }
- else
- {
- iSourceY = pData->iSourcet;
- iSourceYinc = 1;
- }
-
- iTargetY = pData->iDestt;
- pData->iCol = pData->iDestl;
-
- iTargetsamples = pData->iDestr - pData->iDestl;
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (bTargetRGBA16)
- iTargetrowsize = (iTargetsamples << 3);
- else
-#endif
- iTargetrowsize = (iTargetsamples << 2);
-
- /* get temporary work-buffers */
- if (iSourcerowsize > iTargetrowsize)
- iTemprowsize = iSourcerowsize << 1;
- else
- iTemprowsize = iTargetrowsize << 1;
- MNG_ALLOC (pData, pData->pRGBArow, iTemprowsize);
- MNG_ALLOC (pData, pData->pWorkrow, iTemprowsize);
-
- while ((!iRetcode) && (iTargetY < pData->iDestb))
- { /* get a row */
- pData->iRow = iSourceY;
- pData->iRowsamples = iSourcesamples;
- pData->iRowsize = iSourcerowsize;
- pData->bIsRGBA16 = bSourceRGBA16;
- iRetcode = ((mng_retrieverow)pData->fRetrieverow) (pData);
- /* scale it (if necessary) */
- if ((!iRetcode) && (pData->fScalerow))
- iRetcode = ((mng_scalerow)pData->fScalerow) (pData);
-
- pData->bIsRGBA16 = bTargetRGBA16;
- /* color correction (if necessary) */
- if ((!iRetcode) && (pData->fCorrectrow))
- iRetcode = ((mng_correctrow)pData->fCorrectrow) (pData);
- /* flipping (if necessary) */
- if ((!iRetcode) && (pData->fFliprow))
- iRetcode = ((mng_fliprow)pData->fFliprow) (pData);
- /* tiling (if necessary) */
- if ((!iRetcode) && (pData->fTilerow))
- iRetcode = ((mng_tilerow)pData->fTilerow) (pData);
-
- if (!iRetcode) /* and paste..... */
- {
- pData->iRow = iTargetY;
- pData->iRowsamples = iTargetsamples;
- pData->iRowsize = iTargetrowsize;
- iRetcode = ((mng_deltarow)pData->fDeltarow) (pData);
- }
-
- iSourceY += iSourceYinc; /* and next line */
-
- if (iSourceY < 0)
- iSourceY = (mng_int32)pBuf->iHeight - 1;
- else
- if (iSourceY >= (mng_int32)pBuf->iHeight)
- iSourceY = 0;
-
- iTargetY++;
- }
- /* drop the temporary row-buffer */
- MNG_FREEX (pData, pData->pWorkrow, iTemprowsize);
- MNG_FREEX (pData, pData->pRGBArow, iTemprowsize);
- }
-
-#if defined(MNG_FULL_CMS) /* cleanup cms stuff */
- if (!iRetcode)
- iRetcode = mng_clear_cms (pData);
-#endif
- }
-
- pSource++; /* neeeeext */
- iX++;
- }
- }
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- if (!iTargetid) /* did we paste into object 0 ? */
-#else
- if (!pData->iPASTtargetid) /* did we paste into object 0 ? */
-#endif
- { /* display it then ! */
- iRetcode = mng_display_image (pData, pTargetimg, MNG_FALSE);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- else
- { /* target is visible & viewable ? */
- if ((pTargetimg->bVisible) && (pTargetimg->bViewable))
- {
- iRetcode = mng_display_image (pData, pTargetimg, MNG_FALSE);
- if (iRetcode)
- return iRetcode;
- }
- }
- }
-
- if (pData->bTimerset) /* broken ? */
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- pData->iPASTid = iTargetid;
-#else
- pData->iPASTid = pData->iPASTtargetid;
-#endif
- pData->iBreakpoint = 11;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_PAST, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SKIPCHUNK_PAST */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-mng_retcode mng_process_display_past2 (mng_datap pData)
-{
- mng_retcode iRetcode;
- mng_imagep pTargetimg;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_PAST, MNG_LC_START);
-#endif
-
- if (pData->iPASTid) /* a real destination object ? */
- pTargetimg = (mng_imagep)mng_find_imageobject (pData, pData->iPASTid);
- else /* otherwise object 0 */
- pTargetimg = (mng_imagep)pData->pObjzero;
-
- iRetcode = mng_display_image (pData, pTargetimg, MNG_FALSE);
- if (iRetcode)
- return iRetcode;
-
- pData->iBreakpoint = 0; /* only once */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_PAST, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SKIPCHUNK_PAST */
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_DISPLAY_PROCS */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
-
diff --git a/src/3rdparty/libmng/libmng_display.h b/src/3rdparty/libmng/libmng_display.h
deleted file mode 100644
index f394dd2f6d..0000000000
--- a/src/3rdparty/libmng/libmng_display.h
+++ /dev/null
@@ -1,343 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_display.h copyright (c) 2000-2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : Display management (definition) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : Definition of the display managament routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * * */
-/* * 0.5.2 - 05/20/2000 - G.Juyn * */
-/* * - added JNG support stuff * */
-/* * * */
-/* * 0.5.3 - 06/16/2000 - G.Juyn * */
-/* * - changed progressive-display processing * */
-/* * 0.5.3 - 06/22/2000 - G.Juyn * */
-/* * - added support for delta-image processing * */
-/* * - added support for PPLT chunk processing * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * 0.9.3 - 08/07/2000 - G.Juyn * */
-/* * - B111300 - fixup for improved portability * */
-/* * 0.9.3 - 08/26/2000 - G.Juyn * */
-/* * - added MAGN chunk * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added JDAA chunk * */
-/* * * */
-/* * 0.9.4 - 11/24/2000 - G.Juyn * */
-/* * - moved restore of object 0 to libmng_display * */
-/* * * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * 1.0.5 - 09/13/2002 - G.Juyn * */
-/* * - fixed read/write of MAGN chunk * */
-/* * 1.0.5 - 09/20/2002 - G.Juyn * */
-/* * - added support for PAST * */
-/* * 1.0.5 - 10/07/2002 - G.Juyn * */
-/* * - added proposed change in handling of TERM- & if-delay * */
-/* * 1.0.5 - 10/20/2002 - G.Juyn * */
-/* * - fixed display of visible target of PAST operation * */
-/* * * */
-/* * 1.0.7 - 03/24/2004 - G.R-P. * */
-/* * - added some SKIPCHUNK conditionals * */
-/* * * */
-/* * 1.0.9 - 12/11/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_DISPLAYCALLS * */
-/* * * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * 1.0.10 - 04/12/2007 - G.Juyn * */
-/* * - added support for ANG proposal * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_display_h_
-#define _libmng_display_h_
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_DISPLAY_PROCS
-
-/* ************************************************************************** */
-
-mng_retcode mng_display_progressive_refresh (mng_datap pData,
- mng_uint32 iInterval);
-
-/* ************************************************************************** */
-
-mng_retcode mng_reset_objzero (mng_datap pData);
-
-mng_retcode mng_display_image (mng_datap pData,
- mng_imagep pImage,
- mng_bool bLayeradvanced);
-
-mng_retcode mng_execute_delta_image (mng_datap pData,
- mng_imagep pTarget,
- mng_imagep pDelta);
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_display (mng_datap pData);
-
-/* ************************************************************************** */
-
-#ifdef MNG_OPTIMIZE_FOOTPRINT_INIT
-png_imgtype mng_png_imgtype (mng_uint8 colortype,
- mng_uint8 bitdepth);
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-
-mng_retcode mng_process_display_ihdr (mng_datap pData);
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-mng_retcode mng_process_display_mpng (mng_datap pData);
-#endif
-
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-mng_retcode mng_process_display_ang (mng_datap pData);
-#endif
-
-mng_retcode mng_process_display_idat (mng_datap pData,
- mng_uint32 iRawlen,
- mng_uint8p pRawdata);
-
-mng_retcode mng_process_display_iend (mng_datap pData);
-mng_retcode mng_process_display_mend (mng_datap pData);
-mng_retcode mng_process_display_mend2 (mng_datap pData);
-mng_retcode mng_process_display_defi (mng_datap pData);
-
-#ifndef MNG_SKIPCHUNK_BASI
-mng_retcode mng_process_display_basi (mng_datap pData,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue,
- mng_bool bHasalpha,
- mng_uint16 iAlpha,
- mng_uint8 iViewable);
-#endif
-
-#ifndef MNG_SKIPCHUNK_CLON
-mng_retcode mng_process_display_clon (mng_datap pData,
- mng_uint16 iSourceid,
- mng_uint16 iCloneid,
- mng_uint8 iClonetype,
- mng_bool bHasdonotshow,
- mng_uint8 iDonotshow,
- mng_uint8 iConcrete,
- mng_bool bHasloca,
- mng_uint8 iLocationtype,
- mng_int32 iLocationx,
- mng_int32 iLocationy);
-mng_retcode mng_process_display_clon2 (mng_datap pData);
-#endif
-
-#ifndef MNG_SKIPCHUNK_DISC
-mng_retcode mng_process_display_disc (mng_datap pData,
- mng_uint32 iCount,
- mng_uint16p pIds);
-#endif
-
-#ifndef MNG_SKIPCHUNK_FRAM
-mng_retcode mng_process_display_fram (mng_datap pData,
- mng_uint8 iFramemode,
- mng_uint8 iChangedelay,
- mng_uint32 iDelay,
- mng_uint8 iChangetimeout,
- mng_uint32 iTimeout,
- mng_uint8 iChangeclipping,
- mng_uint8 iCliptype,
- mng_int32 iClipl,
- mng_int32 iClipr,
- mng_int32 iClipt,
- mng_int32 iClipb);
-mng_retcode mng_process_display_fram2 (mng_datap pData);
-#endif
-
-#ifndef MNG_SKIPCHUNK_MOVE
-mng_retcode mng_process_display_move (mng_datap pData,
- mng_uint16 iFromid,
- mng_uint16 iToid,
- mng_uint8 iMovetype,
- mng_int32 iMovex,
- mng_int32 iMovey);
-#endif
-
-#ifndef MNG_SKIPCHUNK_CLIP
-mng_retcode mng_process_display_clip (mng_datap pData,
- mng_uint16 iFromid,
- mng_uint16 iToid,
- mng_uint8 iCliptype,
- mng_int32 iClipl,
- mng_int32 iClipr,
- mng_int32 iClipt,
- mng_int32 iClipb);
-#endif
-
-#ifndef MNG_SKIPCHUNK_SHOW
-mng_retcode mng_process_display_show (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCHUNK_SAVE
-mng_retcode mng_process_display_save (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCHUNK_SEEK
-mng_retcode mng_process_display_seek (mng_datap pData);
-#endif
-#ifdef MNG_INCLUDE_JNG
-mng_retcode mng_process_display_jhdr (mng_datap pData);
-
-mng_retcode mng_process_display_jdaa (mng_datap pData,
- mng_uint32 iRawlen,
- mng_uint8p pRawdata);
-
-mng_retcode mng_process_display_jdat (mng_datap pData,
- mng_uint32 iRawlen,
- mng_uint8p pRawdata);
-
-#endif
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode mng_process_display_dhdr (mng_datap pData,
- mng_uint16 iObjectid,
- mng_uint8 iImagetype,
- mng_uint8 iDeltatype,
- mng_uint32 iBlockwidth,
- mng_uint32 iBlockheight,
- mng_uint32 iBlockx,
- mng_uint32 iBlocky);
-
-mng_retcode mng_process_display_prom (mng_datap pData,
- mng_uint8 iBitdepth,
- mng_uint8 iColortype,
- mng_uint8 iFilltype);
-
-mng_retcode mng_process_display_ipng (mng_datap pData);
-#ifdef MNG_INCLUDE_JNG
-mng_retcode mng_process_display_ijng (mng_datap pData);
-#endif
-
-mng_retcode mng_process_display_pplt (mng_datap pData,
- mng_uint8 iType,
- mng_uint32 iCount,
- mng_palette8ep paIndexentries,
- mng_uint8p paAlphaentries,
- mng_uint8p paUsedentries);
-#endif
-
-#ifndef MNG_SKIPCHUNK_MAGN
-mng_retcode mng_process_display_magn (mng_datap pData,
- mng_uint16 iFirstid,
- mng_uint16 iLastid,
- mng_uint8 iMethodX,
- mng_uint16 iMX,
- mng_uint16 iMY,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint16 iMT,
- mng_uint16 iMB,
- mng_uint8 iMethodY);
-mng_retcode mng_process_display_magn2 (mng_datap pData);
-#endif
-
-#ifndef MNG_SKIPCHUNK_PAST
-mng_retcode mng_process_display_past (mng_datap pData,
- mng_uint16 iTargetid,
- mng_uint8 iTargettype,
- mng_int32 iTargetx,
- mng_int32 iTargety,
- mng_uint32 iCount,
- mng_ptr pSources);
-mng_retcode mng_process_display_past2 (mng_datap pData);
-#endif
-
-#else /* MNG_OPTIMIZE_DISPLAYCALLS */
-
-mng_retcode mng_process_display_ihdr (mng_datap pData);
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-mng_retcode mng_process_display_mpng (mng_datap pData);
-#endif
-mng_retcode mng_process_display_idat (mng_datap pData);
-mng_retcode mng_process_display_iend (mng_datap pData);
-mng_retcode mng_process_display_mend (mng_datap pData);
-mng_retcode mng_process_display_mend2 (mng_datap pData);
-mng_retcode mng_process_display_defi (mng_datap pData);
-#ifndef MNG_SKIPCHUNK_BASI
-mng_retcode mng_process_display_basi (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCHUNK_CLON
-mng_retcode mng_process_display_clon (mng_datap pData);
-mng_retcode mng_process_display_clon2 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCHUNK_DISC
-mng_retcode mng_process_display_disc (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCHUNK_FRAM
-mng_retcode mng_process_display_fram (mng_datap pData);
-mng_retcode mng_process_display_fram2 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCHUNK_MOVE
-mng_retcode mng_process_display_move (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCHUNK_CLIP
-mng_retcode mng_process_display_clip (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCHUNK_SHOW
-mng_retcode mng_process_display_show (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCHUNK_SAVE
-mng_retcode mng_process_display_save (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCHUNK_SEEK
-mng_retcode mng_process_display_seek (mng_datap pData);
-#endif
-#ifdef MNG_INCLUDE_JNG
-mng_retcode mng_process_display_jhdr (mng_datap pData);
-mng_retcode mng_process_display_jdaa (mng_datap pData);
-mng_retcode mng_process_display_jdat (mng_datap pData);
-#endif
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode mng_process_display_dhdr (mng_datap pData);
-mng_retcode mng_process_display_prom (mng_datap pData);
-mng_retcode mng_process_display_ipng (mng_datap pData);
-#ifdef MNG_INCLUDE_JNG
-mng_retcode mng_process_display_ijng (mng_datap pData);
-#endif
-mng_retcode mng_process_display_pplt (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCHUNK_MAGN
-mng_retcode mng_process_display_magn (mng_datap pData);
-mng_retcode mng_process_display_magn2 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCHUNK_PAST
-mng_retcode mng_process_display_past (mng_datap pData);
-mng_retcode mng_process_display_past2 (mng_datap pData);
-#endif
-
-#endif /* MNG_OPTIMIZE_DISPLAYCALLS */
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_DISPLAY_PROCS */
-
-/* ************************************************************************** */
-
-#endif /* _libmng_display_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/libmng_dither.c b/src/3rdparty/libmng/libmng_dither.c
deleted file mode 100644
index e23850cef4..0000000000
--- a/src/3rdparty/libmng/libmng_dither.c
+++ /dev/null
@@ -1,58 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_dither.c copyright (c) 2000-2004 G.Juyn * */
-/* * version : 1.0.9 * */
-/* * * */
-/* * purpose : Dithering routines (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of the dithering routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * * */
-/* * 1.0.9 - 12/20/2004 - G.Juyn * */
-/* * - cleaned up macro-invocations (thanks to D. Airlie) * */
-/* * * */
-/* ************************************************************************** */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-#include "libmng_dither.h"
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_dither_a_row (mng_datap pData,
- mng_uint8p pRow)
-{
-
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
-
-
diff --git a/src/3rdparty/libmng/libmng_dither.h b/src/3rdparty/libmng/libmng_dither.h
deleted file mode 100644
index d9217c0cac..0000000000
--- a/src/3rdparty/libmng/libmng_dither.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_dither.h copyright (c) 2000-2002 G.Juyn * */
-/* * version : 1.0.5 * */
-/* * * */
-/* * purpose : Dithering routines (definition) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : Definition of the dithering routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_dither_h_
-#define _libmng_dither_h_
-
-/* ************************************************************************** */
-
-mng_retcode mng_dither_a_row (mng_datap pData,
- mng_uint8p pRow);
-
-/* ************************************************************************** */
-
-#endif /* _libmng_dither_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/libmng_error.c b/src/3rdparty/libmng/libmng_error.c
deleted file mode 100644
index 3a4da20638..0000000000
--- a/src/3rdparty/libmng/libmng_error.c
+++ /dev/null
@@ -1,326 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_error.c copyright (c) 2000-2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : Error routines (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of the general error handling routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * * */
-/* * 0.5.2 - 05/23/2000 - G.Juyn * */
-/* * - added error telltaling * */
-/* * 0.5.2 - 05/30/2000 - G.Juyn * */
-/* * - added errorstrings for delta-image processing * */
-/* * 0.5.2 - 05/31/2000 - G.Juyn * */
-/* * - fixed up punctuation (contributed by Tim Rowley) * */
-/* * 0.5.2 - 06/06/2000 - G.Juyn * */
-/* * - added errorstring for delayed buffer-processing * */
-/* * * */
-/* * 0.9.1 - 07/06/2000 - G.Juyn * */
-/* * - added MNG_NEEDTIMERWAIT errorstring * */
-/* * 0.9.1 - 07/15/2000 - G.Juyn * */
-/* * - added NEEDSECTIONWAIT errorstring * */
-/* * - added macro + routine to set returncode without * */
-/* * calling error callback * */
-/* * 0.9.1 - 07/19/2000 - G.Juyn * */
-/* * - added errorstring for updatemngheader if not a MNG * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 08/09/2000 - G.Juyn * */
-/* * - added check for simplicity-bits in MHDR * */
-/* * 0.9.3 - 10/11/2000 - G.Juyn * */
-/* * - fixed processing of unknown critical chunks * */
-/* * - added support for nEED * */
-/* * 0.9.3 - 10/20/2000 - G.Juyn * */
-/* * - added errorcode for delayed delta-processing * */
-/* * * */
-/* * 0.9.4 - 01/18/2001 - G.Juyn * */
-/* * - added errorcode for MAGN methods * */
-/* * * */
-/* * 1.0.2 - 06/23/2001 - G.Juyn * */
-/* * - added optimization option for MNG-video playback * */
-/* * * */
-/* * 1.0.5 - 07/04/2002 - G.Juyn * */
-/* * - added errorcode for extreme chunk-sizes * */
-/* * 1.0.5 - 08/15/2002 - G.Juyn * */
-/* * - completed delta-image support * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * 1.0.5 - 09/14/2002 - G.Juyn * */
-/* * - added event handling for dynamic MNG * */
-/* * 1.0.5 - 09/15/2002 - G.Juyn * */
-/* * - fixed LOOP iteration=0 special case * */
-/* * 1.0.5 - 09/19/2002 - G.Juyn * */
-/* * - warnings are ignored by default now! * */
-/* * 1.0.5 - 09/20/2002 - G.Juyn * */
-/* * - added support for PAST * */
-/* * 1.0.5 - 10/07/2002 - G.Juyn * */
-/* * - added check for TERM placement during create/write * */
-/* * * */
-/* * 1.0.6 - 07/07/2003 - G. R-P * */
-/* * - added MNG_SKIPCHUNK_CHNK, MNG_NO_DELTA_PNG reductions. * */
-/* * - skipped more code when MNG_INCLUDE_JNG is not enabled. * */
-/* * 1.0.6 - 07/29/2003 - G.R-P * */
-/* * - added conditional around evNT chunk support * */
-/* * * */
-/* * 1.0.7 - 03/24/2004 - G.R-P * */
-/* * - fixed typo on SKIPCHUNK_evNT (->PAST) * */
-/* * * */
-/* * 1.0.9 - 12/20/2004 - G.Juyn * */
-/* * - cleaned up macro-invocations (thanks to D. Airlie) * */
-/* * * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * * */
-/* ************************************************************************** */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ERROR_STRINGS
-MNG_LOCAL mng_error_entry const error_table [] =
- {
- {MNG_NOERROR, "No error"},
- {MNG_OUTOFMEMORY, "Out of memory"},
- {MNG_INVALIDHANDLE, "The handle is invalid"},
- {MNG_NOCALLBACK, "A required callback is not defined"},
- {MNG_UNEXPECTEDEOF, "Encountered unexpected end-of-file"},
- {MNG_ZLIBERROR, "zlib encountered an error"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_JPEGERROR, "ijgsrc6b encountered an error"},
-#endif
- {MNG_LCMSERROR, "lcms encountered an error"},
- {MNG_NOOUTPUTPROFILE, "No output-profile defined for CMS"},
- {MNG_NOSRGBPROFILE, "No sRGB-profile defined for CMS"},
- {MNG_BUFOVERFLOW, "Internal buffer-overflow"},
- {MNG_FUNCTIONINVALID, "Function is invalid at this point"},
- {MNG_OUTPUTERROR, "Writing was unsuccessful; disk full?"},
- {MNG_JPEGBUFTOOSMALL, "Internal buffer for JPEG processing too small"},
- {MNG_NEEDMOREDATA, "Reading suspended; waiting for I/O to catch up"},
- {MNG_NEEDTIMERWAIT, "Timer suspension; normal animation delay"},
- {MNG_NEEDSECTIONWAIT, "SEEK suspension; application decides"},
- {MNG_LOOPWITHCACHEOFF, "LOOP encountered when playback cache is turned off"},
-
- {MNG_APPIOERROR, "Application signalled I/O error"},
- {MNG_APPTIMERERROR, "Application signalled timing error"},
- {MNG_APPCMSERROR, "Application signalled CMS error"},
- {MNG_APPMISCERROR, "Application signalled an error"},
- {MNG_APPTRACEABORT, "Application signalled error during trace-callback"},
-
- {MNG_INTERNALERROR, "Internal error in libmng"},
-
- {MNG_INVALIDSIG, "The signature is invalid"},
- {MNG_INVALIDCRC, "The CRC for this chunk is invalid"},
- {MNG_INVALIDLENGTH, "Chunk-length is invalid"},
- {MNG_SEQUENCEERROR, "Chunk out of sequence"},
- {MNG_CHUNKNOTALLOWED, "Chunk not allowed at this point"},
- {MNG_MULTIPLEERROR, "Chunk cannot occur multiple times"},
- {MNG_PLTEMISSING, "Missing PLTE chunk"},
- {MNG_IDATMISSING, "Missing IDAT chunk(s)"},
- {MNG_CANNOTBEEMPTY, "Chunk cannot be empty"},
- {MNG_GLOBALLENGTHERR, "Global data length invalid"},
- {MNG_INVALIDBITDEPTH, "The bit_depth is invalid"},
- {MNG_INVALIDCOLORTYPE, "The color_type is invalid"},
- {MNG_INVALIDCOMPRESS, "The compression_method is invalid"},
- {MNG_INVALIDFILTER, "The filter_method or filter_type is invalid"},
- {MNG_INVALIDINTERLACE, "The interlace_method is invalid"},
- {MNG_NOTENOUGHIDAT, "There is not enough data in the IDAT chunk(s)"},
- {MNG_PLTEINDEXERROR, "Palette-index out of bounds"},
- {MNG_NULLNOTFOUND, "NULL separator not found"},
- {MNG_KEYWORDNULL, "Keyword cannot be zero-length"},
- {MNG_OBJECTUNKNOWN, "Object does not exist"},
- {MNG_OBJECTEXISTS, "Object already exists"},
- {MNG_TOOMUCHIDAT, "Too much data in IDAT chunk(s)"},
- {MNG_INVSAMPLEDEPTH, "The sample_depth is invalid"},
- {MNG_INVOFFSETSIZE, "The offset_type is invalid"},
- {MNG_INVENTRYTYPE, "The entry_type is invalid"},
- {MNG_ENDWITHNULL, "Chunk must not end with NULL byte"},
- {MNG_INVIMAGETYPE, "The image_type is invalid"},
-#ifndef MNG_NO_DELTA_PNG
- {MNG_INVDELTATYPE, "The delta_type is invalid"},
-#endif
- {MNG_INVALIDINDEX, "Index-value out of bounds"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_TOOMUCHJDAT, "Too much data in JDAT chunk(s)"},
- {MNG_JPEGPARMSERR, "JHDR parameters & JFIF-data do not match"},
-#endif
- {MNG_INVFILLMETHOD, "The fill_method is invalid"},
-#ifndef MNG_NO_DELTA_PNG
- {MNG_OBJNOTCONCRETE, "Target object for DHDR must be concrete"},
-#endif
- {MNG_TARGETNOALPHA, "Target object must have alpha-channel"},
- {MNG_MNGTOOCOMPLEX, "MHDR simplicity indicates unsupported feature(s)"},
- {MNG_UNKNOWNCRITICAL, "Unknown critical chunk encountered"},
-#ifndef MNG_SKIPCHUNK_nEED
- {MNG_UNSUPPORTEDNEED, "Requested nEED resources are not supported"},
-#endif
- {MNG_INVALIDDELTA, "The delta operation is invalid (mismatched color_types?)"},
- {MNG_INVALIDMETHOD, "Method is invalid"},
- {MNG_IMPROBABLELENGTH, "Chunklength is incredibly large"},
- {MNG_INVALIDBLOCK, "Delta block width and or height invalid"},
- {MNG_INVALIDEVENT, "Event type is invalid"},
- {MNG_INVALIDMASK, "Mask type is invalid"},
- {MNG_NOMATCHINGLOOP, "ENDL without matching LOOP"},
-#ifndef MNG_SKIPCHUNK_evNT
- {MNG_SEEKNOTFOUND, "evNT points to unknown SEEK"},
-#endif
-#ifndef MNG_SKIPCHUNK_PAST
- {MNG_OBJNOTABSTRACT, "Destination object for PAST must be abstract"},
-#endif
- {MNG_TERMSEQERROR, "TERM misplaced during creation of MNG stream"},
- {MNG_INVALIDFIELDVAL, "invalid fieldvalue (generic)"},
- {MNG_INVALIDWIDTH, "invalid frame/image width"},
- {MNG_INVALIDHEIGHT, "invalid frame/image height"},
-
- {MNG_INVALIDCNVSTYLE, "Canvas_style is invalid"},
- {MNG_WRONGCHUNK, "Attempt to access the wrong chunk"},
- {MNG_INVALIDENTRYIX, "Attempt to access an non-existing entry"},
- {MNG_NOHEADER, "No valid header-chunk"},
- {MNG_NOCORRCHUNK, "Parent chunk not found"},
- {MNG_NOMHDR, "No MNG header (MHDR) found"},
-
- {MNG_IMAGETOOLARGE, "Image is larger than defined maximum"},
- {MNG_NOTANANIMATION, "Image is not an animation"},
- {MNG_FRAMENRTOOHIGH, "Framenr out of bounds"},
- {MNG_LAYERNRTOOHIGH, "Layernr out of bounds"},
- {MNG_PLAYTIMETOOHIGH, "Playtime out of bounds"},
- {MNG_FNNOTIMPLEMENTED, "Function not yet implemented"},
- {MNG_IMAGEFROZEN, "Image is frozen"},
-
- {MNG_LCMS_NOHANDLE, "Handle could not be initialized"},
- {MNG_LCMS_NOMEM, "No memory for gamma-table(s)"},
- {MNG_LCMS_NOTRANS, "Transformation could not be initialized"}
- };
-#endif /* MNG_INCLUDE_ERROR_STRINGS */
-
-/* ************************************************************************** */
-
-mng_bool mng_store_error (mng_datap pData,
- mng_retcode iError,
- mng_retcode iExtra1,
- mng_retcode iExtra2)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEB (pData, MNG_FN_STORE_ERROR, MNG_LC_START);
-#endif
-
- if (pData != 0)
- {
- pData->iErrorcode = iError; /* save also for getlasterror */
- pData->iErrorx1 = iExtra1;
- pData->iErrorx2 = iExtra2;
-
-#ifdef MNG_INCLUDE_ERROR_STRINGS
- { /* binary search variables */
- mng_int32 iTop, iLower, iUpper, iMiddle;
- mng_error_entryp pEntry; /* pointer to found entry */
- /* determine max index of table */
- iTop = (sizeof (error_table) / sizeof (error_table [0])) - 1;
-
- iLower = 0; /* initialize binary search */
- iMiddle = iTop >> 1; /* start in the middle */
- iUpper = iTop;
- pEntry = 0; /* no goods yet! */
-
- do /* the binary search itself */
- {
- if (error_table [iMiddle].iError < iError)
- iLower = iMiddle + 1;
- else if (error_table [iMiddle].iError > iError)
- iUpper = iMiddle - 1;
- else
- {
- pEntry = &error_table [iMiddle];
- break;
- }
-
- iMiddle = (iLower + iUpper) >> 1;
- }
- while (iLower <= iUpper);
-
- if (pEntry) /* found it ? */
- pData->zErrortext = pEntry->zErrortext;
- else
- pData->zErrortext = "Unknown error";
- }
-#else /* MNG_INCLUDE_ERROR_STRINGS */
- pData->zErrortext = 0;
-#endif /* MNG_INCLUDE_ERROR_STRINGS */
-
- if (iError == 0) /* no error is not severe ! */
- {
- pData->iSeverity = 0;
- }
- else
- {
- switch (iError&0x3C00) /* determine the severity */
- {
- case 0x0800 : { pData->iSeverity = 5; break; }
- case 0x1000 : { pData->iSeverity = 2; break; }
- case 0x2000 : { pData->iSeverity = 1; break; }
- default : { pData->iSeverity = 9; }
- }
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEB (pData, MNG_FN_STORE_ERROR, MNG_LC_END);
-#endif
-
- return MNG_TRUE;
-}
-
-/* ************************************************************************** */
-
-mng_bool mng_process_error (mng_datap pData,
- mng_retcode iError,
- mng_retcode iExtra1,
- mng_retcode iExtra2)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEB (pData, MNG_FN_PROCESS_ERROR, MNG_LC_START);
-#endif
-
- mng_store_error (pData, iError, iExtra1, iExtra2);
-
- if ((pData != MNG_NULL) && (pData->iMagic == MNG_MAGIC))
- {
- if (pData->fErrorproc) /* callback defined ? */
- return pData->fErrorproc (((mng_handle)pData), iError, pData->iSeverity,
- pData->iChunkname, pData->iChunkseq,
- pData->iErrorx1, pData->iErrorx2, pData->zErrortext);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEB (pData, MNG_FN_PROCESS_ERROR, MNG_LC_END);
-#endif
-
- return MNG_TRUE; /* warnings are ignored by default ! */
-}
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
diff --git a/src/3rdparty/libmng/libmng_error.h b/src/3rdparty/libmng/libmng_error.h
deleted file mode 100644
index b49ff73308..0000000000
--- a/src/3rdparty/libmng/libmng_error.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_error.h copyright (c) 2000-2002 G.Juyn * */
-/* * version : 1.0.5 * */
-/* * * */
-/* * purpose : Error functions (definition) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : Definition of the generic error-codes and functions * */
-/* * * */
-/* * changes : 0.5.1 - 05/06/2000 - G.Juyn * */
-/* * - added some errorcodes * */
-/* * 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - added some errorcodes * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/11/2000 - G.Juyn * */
-/* * - added application errorcodes (used with callbacks) * */
-/* * - moved chunk-access errorcodes to severity 5 * */
-/* * * */
-/* * 0.5.2 - 05/20/2000 - G.Juyn * */
-/* * - added JNG errorcodes * */
-/* * 0.5.2 - 05/23/2000 - G.Juyn * */
-/* * - added error tell-tale definition * */
-/* * 0.5.2 - 05/30/2000 - G.Juyn * */
-/* * - added errorcodes for delta-image processing * */
-/* * 0.5.2 - 06/06/2000 - G.Juyn * */
-/* * - added errorcode for delayed buffer-processing * */
-/* * - moved errorcodes to "libmng.h" * */
-/* * * */
-/* * 0.9.1 - 07/15/2000 - G.Juyn * */
-/* * - added macro + routine to set returncode without * */
-/* * calling error callback * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * 1.0.5 - 08/20/2002 - G.Juyn * */
-/* * - added option for soft-handling of errors * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_error_h_
-#define _libmng_error_h_
-
-/* ************************************************************************** */
-/* * * */
-/* * Default error routines * */
-/* * * */
-/* ************************************************************************** */
-
-mng_bool mng_store_error (mng_datap pData,
- mng_retcode iError,
- mng_retcode iExtra1,
- mng_retcode iExtra2);
-
-mng_bool mng_process_error (mng_datap pData,
- mng_retcode iError,
- mng_retcode iExtra1,
- mng_retcode iExtra2);
-
-/* ************************************************************************** */
-/* * * */
-/* * Error handling macros * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_SOFTERRORS
-#define MNG_ERROR(D,C) { if (!mng_process_error (D, C, 0, 0)) return C; }
-#define MNG_ERRORZ(D,Z) { if (!mng_process_error (D, MNG_ZLIBERROR, Z, 0)) return MNG_ZLIBERROR; }
-#define MNG_ERRORJ(D,J) { if (!mng_process_error (D, MNG_JPEGERROR, J, 0)) return MNG_JPEGERROR; }
-#define MNG_ERRORL(D,L) { if (!mng_process_error (D, MNG_LCMSERROR, L, 0)) return MNG_LCMSERROR; }
-#else
-#define MNG_ERROR(D,C) { mng_process_error (D, C, 0, 0); return C; }
-#define MNG_ERRORZ(D,Z) { mng_process_error (D, MNG_ZLIBERROR, Z, 0); return MNG_ZLIBERROR; }
-#define MNG_ERRORJ(D,J) { mng_process_error (D, MNG_JPEGERROR, J, 0); return MNG_JPEGERROR; }
-#define MNG_ERRORL(D,L) { mng_process_error (D, MNG_LCMSERROR, L, 0); return MNG_LCMSERROR; }
-#endif
-
-#define MNG_RETURN(D,C) { mng_store_error (D, C, 0, 0); return C; }
-
-#define MNG_WARNING(D,C) { if (!mng_process_error (D, C, 0, 0)) return C; }
-
-#define MNG_VALIDHANDLE(H) { if ((H == 0) || (((mng_datap)H)->iMagic != MNG_MAGIC)) \
- return MNG_INVALIDHANDLE; }
-#define MNG_VALIDHANDLEX(H) { if ((H == 0) || (((mng_datap)H)->iMagic != MNG_MAGIC)) \
- return 0; }
-#define MNG_VALIDCB(D,C) { if (!((mng_datap)D)->C) \
- MNG_ERROR (((mng_datap)D), MNG_NOCALLBACK) }
-
-/* ************************************************************************** */
-/* * * */
-/* * Error string-table entry * */
-/* * * */
-/* ************************************************************************** */
-
-typedef struct {
- mng_retcode iError;
- mng_pchar zErrortext;
- } mng_error_entry;
-typedef mng_error_entry const * mng_error_entryp;
-
-/* ************************************************************************** */
-
-#endif /* _libmng_error_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/libmng_filter.c b/src/3rdparty/libmng/libmng_filter.c
deleted file mode 100644
index ed69a75340..0000000000
--- a/src/3rdparty/libmng/libmng_filter.c
+++ /dev/null
@@ -1,978 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_filter.c copyright (c) 2000-2004 G.Juyn * */
-/* * version : 1.0.9 * */
-/* * * */
-/* * purpose : Filtering routines (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of the filtering routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/12/2000 - G.Juyn * */
-/* * - changed trace to macro for callback error-reporting * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 09/07/2000 - G.Juyn * */
-/* * - added support for new filter_types * */
-/* * * */
-/* * 1.0.5 - 08/07/2002 - G.Juyn * */
-/* * - added test-option for PNG filter method 193 (=no filter) * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * * */
-/* * 1.0.6 - 07/07/2003 - G.R-P * */
-/* * - reversed some loops to use decrementing counter * */
-/* * * */
-/* * 1.0.9 - 12/20/2004 - G.Juyn * */
-/* * - cleaned up macro-invocations (thanks to D. Airlie) * */
-/* * * */
-/* ************************************************************************** */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-#include "libmng_filter.h"
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_FILTERS
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode filter_sub (mng_datap pData)
-{
- mng_uint32 iBpp;
- mng_uint8p pRawx;
- mng_uint8p pRawx_prev;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FILTER_SUB, MNG_LC_START);
-#endif
-
- iBpp = pData->iFilterbpp;
- pRawx = pData->pWorkrow + pData->iPixelofs + iBpp;
- pRawx_prev = pData->pWorkrow + pData->iPixelofs;
-
- for (iX = iBpp; iX < pData->iRowsize; iX++)
- {
- *pRawx = (mng_uint8)(*pRawx + *pRawx_prev);
- pRawx++;
- pRawx_prev++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FILTER_SUB, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode filter_up (mng_datap pData)
-{
- mng_uint8p pRawx;
- mng_uint8p pPriorx;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FILTER_UP, MNG_LC_START);
-#endif
-
- pRawx = pData->pWorkrow + pData->iPixelofs;
- pPriorx = pData->pPrevrow + pData->iPixelofs;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsize - 1; iX >= 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsize; iX++)
-#endif
- {
- *pRawx = (mng_uint8)(*pRawx + *pPriorx);
- pRawx++;
- pPriorx++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FILTER_UP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode filter_average (mng_datap pData)
-{
- mng_int32 iBpp;
- mng_uint8p pRawx;
- mng_uint8p pRawx_prev;
- mng_uint8p pPriorx;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FILTER_AVERAGE, MNG_LC_START);
-#endif
-
- iBpp = pData->iFilterbpp;
- pRawx = pData->pWorkrow + pData->iPixelofs;
- pPriorx = pData->pPrevrow + pData->iPixelofs;
- pRawx_prev = pData->pWorkrow + pData->iPixelofs;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = iBpp - 1; iX >= 0; iX--)
-#else
- for (iX = 0; iX < iBpp; iX++)
-#endif
- {
- *pRawx = (mng_uint8)(*pRawx + ((*pPriorx) >> 1));
- pRawx++;
- pPriorx++;
- }
-
- for (iX = iBpp; iX < pData->iRowsize; iX++)
- {
- *pRawx = (mng_uint8)(*pRawx + ((*pRawx_prev + *pPriorx) >> 1));
- pRawx++;
- pPriorx++;
- pRawx_prev++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FILTER_AVERAGE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode filter_paeth (mng_datap pData)
-{
- mng_int32 iBpp;
- mng_uint8p pRawx;
- mng_uint8p pRawx_prev;
- mng_uint8p pPriorx;
- mng_uint8p pPriorx_prev;
- mng_int32 iX;
- mng_uint32 iA, iB, iC;
- mng_uint32 iP;
- mng_uint32 iPa, iPb, iPc;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FILTER_PAETH, MNG_LC_START);
-#endif
-
- iBpp = pData->iFilterbpp;
- pRawx = pData->pWorkrow + pData->iPixelofs;
- pPriorx = pData->pPrevrow + pData->iPixelofs;
- pRawx_prev = pData->pWorkrow + pData->iPixelofs;
- pPriorx_prev = pData->pPrevrow + pData->iPixelofs;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = iBpp - 1; iX >= 0; iX--)
-#else
- for (iX = 0; iX < iBpp; iX++)
-#endif
- {
- *pRawx = (mng_uint8)(*pRawx + *pPriorx);
-
- pRawx++;
- pPriorx++;
- }
-
- for (iX = iBpp; iX < pData->iRowsize; iX++)
- {
- iA = (mng_uint32)*pRawx_prev;
- iB = (mng_uint32)*pPriorx;
- iC = (mng_uint32)*pPriorx_prev;
- iP = iA + iB - iC;
- iPa = abs (iP - iA);
- iPb = abs (iP - iB);
- iPc = abs (iP - iC);
-
- if ((iPa <= iPb) && (iPa <= iPc))
- *pRawx = (mng_uint8)(*pRawx + iA);
- else
- if (iPb <= iPc)
- *pRawx = (mng_uint8)(*pRawx + iB);
- else
- *pRawx = (mng_uint8)(*pRawx + iC);
-
- pRawx++;
- pPriorx++;
- pRawx_prev++;
- pPriorx_prev++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FILTER_PAETH, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_filter_a_row (mng_datap pData)
-{
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FILTER_A_ROW, MNG_LC_START);
-#endif
-
- switch (*(pData->pWorkrow + pData->iFilterofs))
- {
- case 1 : {
- iRetcode = filter_sub (pData);
- break;
- }
- case 2 : {
- iRetcode = filter_up (pData);
- break;
- }
- case 3 : {
- iRetcode = filter_average (pData);
- break;
- }
- case 4 : {
- iRetcode = filter_paeth (pData);
- break;
- }
-
- default : iRetcode = MNG_INVALIDFILTER;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FILTER_A_ROW, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-#ifdef FILTER192
-mng_retcode mng_init_rowdiffering (mng_datap pData)
-{
- mng_uint8p pRawi, pRawo;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_ROWDIFFERING, MNG_LC_START);
-#endif
-
- if (pData->iFilter == 0xC0) /* has leveling parameters ? */
- {
- switch (pData->iColortype) /* salvage leveling parameters */
- {
- case 0 : { /* gray */
- if (pData->iBitdepth <= 8)
- pData->iLevel0 = (mng_uint16)*pData->pWorkrow;
- else
- pData->iLevel0 = mng_get_uint16 (pData->pWorkrow);
-
- break;
- }
- case 2 : { /* rgb */
- if (pData->iBitdepth <= 8)
- {
- pData->iLevel0 = (mng_uint16)*pData->pWorkrow;
- pData->iLevel1 = (mng_uint16)*(pData->pWorkrow+1);
- pData->iLevel2 = (mng_uint16)*(pData->pWorkrow+2);
- }
- else
- {
- pData->iLevel0 = mng_get_uint16 (pData->pWorkrow);
- pData->iLevel1 = mng_get_uint16 (pData->pWorkrow+2);
- pData->iLevel2 = mng_get_uint16 (pData->pWorkrow+4);
- }
-
- break;
- }
- case 3 : { /* indexed */
- pData->iLevel0 = (mng_uint16)*pData->pWorkrow;
- break;
- }
- case 4 : { /* gray+alpha */
- if (pData->iBitdepth <= 8)
- {
- pData->iLevel0 = (mng_uint16)*pData->pWorkrow;
- pData->iLevel1 = (mng_uint16)*(pData->pWorkrow+1);
- }
- else
- {
- pData->iLevel0 = mng_get_uint16 (pData->pWorkrow);
- pData->iLevel1 = mng_get_uint16 (pData->pWorkrow+2);
- }
-
- break;
- }
- case 6 : { /* rgb+alpha */
- if (pData->iBitdepth <= 8)
- {
- pData->iLevel0 = (mng_uint16)*pData->pWorkrow;
- pData->iLevel1 = (mng_uint16)*(pData->pWorkrow+1);
- pData->iLevel2 = (mng_uint16)*(pData->pWorkrow+2);
- pData->iLevel3 = (mng_uint16)*(pData->pWorkrow+3);
- }
- else
- {
- pData->iLevel0 = mng_get_uint16 (pData->pWorkrow);
- pData->iLevel1 = mng_get_uint16 (pData->pWorkrow+2);
- pData->iLevel2 = mng_get_uint16 (pData->pWorkrow+4);
- pData->iLevel3 = mng_get_uint16 (pData->pWorkrow+6);
- }
-
- break;
- }
- }
- }
- /* shift the entire row back in place */
- pRawi = pData->pWorkrow + pData->iFilterofs;
- pRawo = pData->pWorkrow;
-
- for (iX = 0; iX < pData->iRowsize + pData->iPixelofs - pData->iFilterofs; iX++)
- *pRawo++ = *pRawi++;
-
- pData->iFilterofs = 0; /* indicate so ! */
-
-#ifdef FILTER193
- if (pData->iFilter == 0xC1) /* no adaptive filtering ? */
- pData->iPixelofs = pData->iFilterofs;
- else
-#endif
- pData->iPixelofs = pData->iFilterofs + 1;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_ROWDIFFERING, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_differ_g1 (mng_datap pData)
-{
- mng_uint8p pRawi, pRawo;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_G1, MNG_LC_START);
-#endif
-
- if (pData->iLevel0 & 0x01) /* is it uneven level ? */
- {
- pRawi = pData->pWorkrow + pData->iPixelofs;
- pRawo = pData->pPrevrow + pData->iPixelofs;
- /* just invert every bit */
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsize - 1; iX >= 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsize; iX++)
-#endif
- *pRawo++ = (mng_uint8)(~(*pRawi++));
-
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_G1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_differ_g2 (mng_datap pData)
-{
- mng_uint8p pRawi, pRawo;
- mng_int32 iX;
- mng_int32 iC, iS;
- mng_uint8 iB, iN, iQ;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_G2, MNG_LC_START);
-#endif
-
- pRawi = pData->pWorkrow + pData->iPixelofs;
- pRawo = pData->pPrevrow + pData->iPixelofs;
- iC = 0;
- iB = 0;
- iN = 0;
- iS = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples - 1; iX >= 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iC)
- {
- iC = 4;
- iB = *pRawi++;
- iN = 0;
- iS = 8;
- }
-
- iS -= 2;
- iQ = (mng_uint8)(((iB >> iS) + pData->iLevel0) & 0x03);
- iN = (mng_uint8)((iN << 2) + iQ);
- iC--;
-
- if (!iC)
- *pRawo++ = iN;
-
- }
-
- if (iC)
- *pRawo = (mng_uint8)(iN << iS);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_G2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_differ_g4 (mng_datap pData)
-{
- mng_uint8p pRawi, pRawo;
- mng_int32 iX;
- mng_int32 iC, iS;
- mng_uint8 iB, iN, iQ;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_G4, MNG_LC_START);
-#endif
-
- pRawi = pData->pWorkrow + pData->iPixelofs;
- pRawo = pData->pPrevrow + pData->iPixelofs;
- iC = 0;
- iB = 0;
- iN = 0;
- iS = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples - 1; iX >= 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iC)
- {
- iC = 2;
- iB = *pRawi++;
- iN = 0;
- iS = 8;
- }
-
- iS -= 4;
- iQ = (mng_uint8)(((iB >> iS) + pData->iLevel0) & 0x0F);
- iN = (mng_uint8)((iN << 4) + iQ);
- iC--;
-
- if (!iC)
- *pRawo++ = iN;
-
- }
-
- if (iC)
- *pRawo = (mng_uint8)(iN << iS);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_G4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_differ_g8 (mng_datap pData)
-{
- mng_uint8p pRawi, pRawo;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_G8, MNG_LC_START);
-#endif
-
- pRawi = pData->pWorkrow + pData->iPixelofs;
- pRawo = pData->pPrevrow + pData->iPixelofs;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples - 1; iX >= 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pRawo++ = (mng_uint8)(((mng_uint16)*pRawi + pData->iLevel0) & 0xFF);
-
- pRawi++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_G8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_differ_g16 (mng_datap pData)
-{
- mng_uint16p pRawi, pRawo;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_G16, MNG_LC_START);
-#endif
-
- pRawi = (mng_uint16p)(pData->pWorkrow + pData->iPixelofs);
- pRawo = (mng_uint16p)(pData->pPrevrow + pData->iPixelofs);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples - 1; iX >= 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pRawo++ = (mng_uint16)(((mng_uint32)*pRawi + (mng_uint32)pData->iLevel0) & 0xFFFF);
-
- pRawi++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_G16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_differ_rgb8 (mng_datap pData)
-{
- mng_uint8p pRawi, pRawo;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_RGB8, MNG_LC_START);
-#endif
-
- pRawi = pData->pWorkrow + pData->iPixelofs;
- pRawo = pData->pPrevrow + pData->iPixelofs;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples - 1; iX >= 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *(pRawo+1) = (mng_uint8)(((mng_uint16)*(pRawi+1) + pData->iLevel1) & 0xFF);
- *pRawo = (mng_uint8)(((mng_uint16)*pRawi + pData->iLevel0 +
- (mng_uint16)*(pRawo+1)) & 0xFF);
- *(pRawo+2) = (mng_uint8)(((mng_uint16)*(pRawi+2) + pData->iLevel2 +
- (mng_uint16)*(pRawo+1)) & 0xFF);
-
- pRawi += 3;
- pRawo += 3;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_RGB8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_differ_rgb16 (mng_datap pData)
-{
- mng_uint16p pRawi, pRawo;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_RGB16, MNG_LC_START);
-#endif
-
- pRawi = (mng_uint16p)(pData->pWorkrow + pData->iPixelofs);
- pRawo = (mng_uint16p)(pData->pPrevrow + pData->iPixelofs);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples - 1; iX >= 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *(pRawo+1) = (mng_uint16)(((mng_uint32)*(pRawi+1) + (mng_uint32)pData->iLevel1) & 0xFFFF);
- *pRawo = (mng_uint16)(((mng_uint32)*pRawi + (mng_uint32)pData->iLevel0 +
- (mng_uint32)*(pRawo+1)) & 0xFFFF);
- *(pRawo+2) = (mng_uint16)(((mng_uint32)*(pRawi+2) + (mng_uint32)pData->iLevel2 +
- (mng_uint32)*(pRawo+1)) & 0xFFFF);
-
- pRawi += 3;
- pRawo += 3;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_RGB16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_differ_idx1 (mng_datap pData)
-{
- mng_uint8p pRawi, pRawo;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_IDX1, MNG_LC_START);
-#endif
-
- if (pData->iLevel0 & 0x01) /* is it uneven level ? */
- {
- pRawi = pData->pWorkrow + pData->iPixelofs;
- pRawo = pData->pPrevrow + pData->iPixelofs;
- /* just invert every bit */
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsize - 1; iX >= 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsize; iX++)
-#endif
- *pRawo++ = (mng_uint8)(~(*pRawi++));
-
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_IDX1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_differ_idx2 (mng_datap pData)
-{
- mng_uint8p pRawi, pRawo;
- mng_int32 iX;
- mng_int32 iC, iS;
- mng_uint8 iB, iN, iQ;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_IDX2, MNG_LC_START);
-#endif
-
- pRawi = pData->pWorkrow + pData->iPixelofs;
- pRawo = pData->pPrevrow + pData->iPixelofs;
- iC = 0;
- iB = 0;
- iN = 0;
- iS = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples - 1; iX >= 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iC)
- {
- iC = 4;
- iB = *pRawi++;
- iN = 0;
- iS = 8;
- }
-
- iS -= 2;
- iQ = (mng_uint8)(((iB >> iS) + pData->iLevel0) & 0x03);
- iN = (mng_uint8)((iN << 2) + iQ);
- iC--;
-
- if (!iC)
- *pRawo++ = iN;
-
- }
-
- if (iC)
- *pRawo = (mng_uint8)(iN << iS);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_IDX2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_differ_idx4 (mng_datap pData)
-{
- mng_uint8p pRawi, pRawo;
- mng_int32 iX;
- mng_int32 iC, iS;
- mng_uint8 iB, iN, iQ;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_IDX4, MNG_LC_START);
-#endif
-
- pRawi = pData->pWorkrow + pData->iPixelofs;
- pRawo = pData->pPrevrow + pData->iPixelofs;
- iC = 0;
- iB = 0;
- iN = 0;
- iS = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples - 1; iX >= 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iC)
- {
- iC = 2;
- iB = *pRawi++;
- iN = 0;
- iS = 8;
- }
-
- iS -= 4;
- iQ = (mng_uint8)(((iB >> iS) + pData->iLevel0) & 0x0F);
- iN = (mng_uint8)((iN << 4) + iQ);
- iC--;
-
- if (!iC)
- *pRawo++ = iN;
-
- }
-
- if (iC)
- *pRawo = (mng_uint8)(iN << iS);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_IDX4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_differ_idx8 (mng_datap pData)
-{
- mng_uint8p pRawi, pRawo;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_IDX8, MNG_LC_START);
-#endif
-
- pRawi = pData->pWorkrow + pData->iPixelofs;
- pRawo = pData->pPrevrow + pData->iPixelofs;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples - 1; iX >= 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pRawo++ = (mng_uint8)(((mng_uint16)*pRawi + pData->iLevel0) & 0xFF);
-
- pRawi++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_IDX8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_differ_ga8 (mng_datap pData)
-{
- mng_uint8p pRawi, pRawo;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_GA8, MNG_LC_START);
-#endif
-
- pRawi = pData->pWorkrow + pData->iPixelofs;
- pRawo = pData->pPrevrow + pData->iPixelofs;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples - 1; iX >= 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pRawo = (mng_uint8)(((mng_uint16)*pRawi + pData->iLevel0) & 0xFF);
- *(pRawo+1) = (mng_uint8)(((mng_uint16)*(pRawi+1) + pData->iLevel1) & 0xFF);
-
- pRawi += 2;
- pRawo += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_GA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_differ_ga16 (mng_datap pData)
-{
- mng_uint16p pRawi, pRawo;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_GA16, MNG_LC_START);
-#endif
-
- pRawi = (mng_uint16p)(pData->pWorkrow + pData->iPixelofs);
- pRawo = (mng_uint16p)(pData->pPrevrow + pData->iPixelofs);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples - 1; iX >= 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pRawo = (mng_uint16)(((mng_uint32)*pRawi + (mng_uint32)pData->iLevel0) & 0xFFFF);
- *(pRawo+1) = (mng_uint16)(((mng_uint32)*(pRawi+1) + (mng_uint32)pData->iLevel1) & 0xFFFF);
-
- pRawi += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_GA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_differ_rgba8 (mng_datap pData)
-{
- mng_uint8p pRawi, pRawo;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_RGBA8, MNG_LC_START);
-#endif
-
- pRawi = pData->pWorkrow + pData->iPixelofs;
- pRawo = pData->pPrevrow + pData->iPixelofs;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples - 1; iX >= 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *(pRawo+1) = (mng_uint8)(((mng_uint16)*(pRawi+1) + pData->iLevel1) & 0xFF);
- *pRawo = (mng_uint8)(((mng_uint16)*pRawi + pData->iLevel0 +
- (mng_uint16)*(pRawo+1)) & 0xFF);
- *(pRawo+2) = (mng_uint8)(((mng_uint16)*(pRawi+2) + pData->iLevel2 +
- (mng_uint16)*(pRawo+1)) & 0xFF);
- *(pRawo+3) = (mng_uint8)(((mng_uint16)*(pRawi+3) + pData->iLevel3) & 0xFF);
-
- pRawi += 4;
- pRawo += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_RGBA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_differ_rgba16 (mng_datap pData)
-{
- mng_uint16p pRawi, pRawo;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_RGBA16, MNG_LC_START);
-#endif
-
- pRawi = (mng_uint16p)(pData->pWorkrow + pData->iPixelofs);
- pRawo = (mng_uint16p)(pData->pPrevrow + pData->iPixelofs);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples - 1; iX >= 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *(pRawo+1) = (mng_uint16)(((mng_uint32)*(pRawi+1) + (mng_uint32)pData->iLevel1) & 0xFFFF);
- *pRawo = (mng_uint16)(((mng_uint32)*pRawi + (mng_uint32)pData->iLevel0 +
- (mng_uint32)*(pRawo+1)) & 0xFFFF);
- *(pRawo+2) = (mng_uint16)(((mng_uint32)*(pRawi+2) + (mng_uint32)pData->iLevel2 +
- (mng_uint32)*(pRawo+1)) & 0xFFFF);
- *(pRawo+3) = (mng_uint16)(((mng_uint32)*(pRawi+3) + (mng_uint32)pData->iLevel3) & 0xFFFF);
-
- pRawi += 4;
- pRawo += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DIFFER_RGBA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#endif /* FILTER192 */
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_FILTERS */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
diff --git a/src/3rdparty/libmng/libmng_filter.h b/src/3rdparty/libmng/libmng_filter.h
deleted file mode 100644
index 9ac9c7f99d..0000000000
--- a/src/3rdparty/libmng/libmng_filter.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_filter.h copyright (c) 2000-2002 G.Juyn * */
-/* * version : 1.0.5 * */
-/* * * */
-/* * purpose : Filtering routines (definition) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : Definition of the filtering routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 09/07/2000 - G.Juyn * */
-/* * - added support for new filter_types * */
-/* * * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_filter_h_
-#define _libmng_filter_h_
-
-/* ************************************************************************** */
-
-mng_retcode mng_filter_a_row (mng_datap pData);
-
-/* ************************************************************************** */
-
-#ifdef FILTER192
-mng_retcode mng_init_rowdiffering (mng_datap pData);
-
-mng_retcode mng_differ_g1 (mng_datap pData);
-mng_retcode mng_differ_g2 (mng_datap pData);
-mng_retcode mng_differ_g4 (mng_datap pData);
-mng_retcode mng_differ_g8 (mng_datap pData);
-mng_retcode mng_differ_g16 (mng_datap pData);
-mng_retcode mng_differ_rgb8 (mng_datap pData);
-mng_retcode mng_differ_rgb16 (mng_datap pData);
-mng_retcode mng_differ_idx1 (mng_datap pData);
-mng_retcode mng_differ_idx2 (mng_datap pData);
-mng_retcode mng_differ_idx4 (mng_datap pData);
-mng_retcode mng_differ_idx8 (mng_datap pData);
-mng_retcode mng_differ_ga8 (mng_datap pData);
-mng_retcode mng_differ_ga16 (mng_datap pData);
-mng_retcode mng_differ_rgba8 (mng_datap pData);
-mng_retcode mng_differ_rgba16 (mng_datap pData);
-#endif
-
-/* ************************************************************************** */
-
-#endif /* _libmng_filter_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/libmng_hlapi.c b/src/3rdparty/libmng/libmng_hlapi.c
deleted file mode 100644
index e71034757c..0000000000
--- a/src/3rdparty/libmng/libmng_hlapi.c
+++ /dev/null
@@ -1,3001 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_hlapi.c copyright (c) 2000-2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : high-level application API (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of the high-level function interface * */
-/* * for applications. * */
-/* * * */
-/* * changes : 0.5.1 - 05/06/2000 - G.Juyn * */
-/* * - added init of iPLTEcount * */
-/* * 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed calling-convention definition * */
-/* * - changed status-handling of display-routines * */
-/* * - added versioning-control routines * */
-/* * - filled the write routine * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/11/2000 - G.Juyn * */
-/* * - added callback error-reporting support * */
-/* * 0.5.1 - 05/12/2000 - G.Juyn * */
-/* * - changed trace to macro for callback error-reporting * */
-/* * 0.5.1 - 05/13/2000 - G.Juyn * */
-/* * - added eMNGma hack (will be removed in 1.0.0 !!!) * */
-/* * - added TERM animation object pointer (easier reference) * */
-/* * 0.5.1 - 05/14/2000 - G.Juyn * */
-/* * - added cleanup of saved-data (SAVE/SEEK processing) * */
-/* * 0.5.1 - 05/16/2000 - G.Juyn * */
-/* * - moved the actual write_graphic functionality from here * */
-/* * to its appropriate function in the mng_write module * */
-/* * * */
-/* * 0.5.2 - 05/19/2000 - G.Juyn * */
-/* * - cleaned up some code regarding mixed support * */
-/* * - added JNG support * */
-/* * 0.5.2 - 05/24/2000 - G.Juyn * */
-/* * - moved init of default zlib parms here from "mng_zlib.c" * */
-/* * - added init of default IJG parms * */
-/* * 0.5.2 - 05/29/2000 - G.Juyn * */
-/* * - fixed inconsistancy with freeing global iCCP profile * */
-/* * 0.5.2 - 05/30/2000 - G.Juyn * */
-/* * - added delta-image field initialization * */
-/* * 0.5.2 - 06/06/2000 - G.Juyn * */
-/* * - added initialization of the buffer-suspend parameter * */
-/* * * */
-/* * 0.5.3 - 06/16/2000 - G.Juyn * */
-/* * - added initialization of update-region for refresh * */
-/* * - added initialization of Needrefresh parameter * */
-/* * 0.5.3 - 06/17/2000 - G.Juyn * */
-/* * - added initialization of Deltaimmediate * */
-/* * 0.5.3 - 06/21/2000 - G.Juyn * */
-/* * - added initialization of Speed * */
-/* * - added initialization of Imagelevel * */
-/* * 0.5.3 - 06/26/2000 - G.Juyn * */
-/* * - changed userdata variable to mng_ptr * */
-/* * 0.5.3 - 06/29/2000 - G.Juyn * */
-/* * - fixed initialization routine for new mng_handle type * */
-/* * * */
-/* * 0.9.1 - 07/06/2000 - G.Juyn * */
-/* * - changed mng_display_resume to allow to be called after * */
-/* * a suspension return with MNG_NEEDMOREDATA * */
-/* * - added returncode MNG_NEEDTIMERWAIT for timer breaks * */
-/* * 0.9.1 - 07/07/2000 - G.Juyn * */
-/* * - implemented support for freeze/reset/resume & go_xxxx * */
-/* * 0.9.1 - 07/08/2000 - G.Juyn * */
-/* * - added support for improved timing * */
-/* * - added support for improved I/O-suspension * */
-/* * 0.9.1 - 07/14/2000 - G.Juyn * */
-/* * - changed EOF processing behavior * */
-/* * 0.9.1 - 07/15/2000 - G.Juyn * */
-/* * - added callbacks for SAVE/SEEK processing * */
-/* * - added variable for NEEDSECTIONWAIT breaks * */
-/* * - added variable for freeze & reset processing * */
-/* * 0.9.1 - 07/17/2000 - G.Juyn * */
-/* * - added error cleanup processing * */
-/* * - fixed support for mng_display_reset() * */
-/* * - fixed suspension-buffering for 32K+ chunks * */
-/* * * */
-/* * 0.9.2 - 07/29/2000 - G.Juyn * */
-/* * - fixed small bugs in display processing * */
-/* * 0.9.2 - 07/31/2000 - G.Juyn * */
-/* * - fixed wrapping of suspension parameters * */
-/* * 0.9.2 - 08/04/2000 - G.Juyn * */
-/* * - B111096 - fixed large-buffer read-suspension * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 09/07/2000 - G.Juyn * */
-/* * - added support for new filter_types * */
-/* * 0.9.3 - 09/10/2000 - G.Juyn * */
-/* * - fixed DEFI behavior * */
-/* * 0.9.3 - 10/11/2000 - G.Juyn * */
-/* * - added support for nEED * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added optional support for bKGD for PNG images * */
-/* * - raised initial maximum canvas size * */
-/* * - added support for JDAA * */
-/* * 0.9.3 - 10/17/2000 - G.Juyn * */
-/* * - added callback to process non-critical unknown chunks * */
-/* * - fixed support for delta-images during read() / display() * */
-/* * 0.9.3 - 10/18/2000 - G.Juyn * */
-/* * - added closestream() processing for mng_cleanup() * */
-/* * 0.9.3 - 10/27/2000 - G.Juyn * */
-/* * - fixed separate read() & display() processing * */
-/* * * */
-/* * 0.9.4 - 11/20/2000 - G.Juyn * */
-/* * - fixed unwanted repetition in mng_readdisplay() * */
-/* * 0.9.4 - 11/24/2000 - G.Juyn * */
-/* * - moved restore of object 0 to libmng_display * */
-/* * * */
-/* * 1.0.1 - 02/08/2001 - G.Juyn * */
-/* * - added MEND processing callback * */
-/* * 1.0.1 - 02/13/2001 - G.Juyn * */
-/* * - fixed first FRAM_MODE=4 timing problem * */
-/* * 1.0.1 - 04/21/2001 - G.Juyn * */
-/* * - fixed bug with display_reset/display_resume (Thanks G!) * */
-/* * 1.0.1 - 04/22/2001 - G.Juyn * */
-/* * - fixed memory-leak (Thanks Gregg!) * */
-/* * 1.0.1 - 04/23/2001 - G.Juyn * */
-/* * - fixed reset_rundata to drop all objects * */
-/* * 1.0.1 - 04/25/2001 - G.Juyn * */
-/* * - moved mng_clear_cms to libmng_cms * */
-/* * * */
-/* * 1.0.2 - 06/23/2001 - G.Juyn * */
-/* * - added optimization option for MNG-video playback * */
-/* * - added processterm callback * */
-/* * 1.0.2 - 06/25/2001 - G.Juyn * */
-/* * - added option to turn off progressive refresh * */
-/* * * */
-/* * 1.0.5 - 07/08/2002 - G.Juyn * */
-/* * - B578572 - removed eMNGma hack (thanks Dimitri!) * */
-/* * 1.0.5 - 07/16/2002 - G.Juyn * */
-/* * - B581625 - large chunks fail with suspension reads * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * 1.0.5 - 09/15/2002 - G.Juyn * */
-/* * - fixed LOOP iteration=0 special case * */
-/* * 1.0.5 - 10/07/2002 - G.Juyn * */
-/* * - added another fix for misplaced TERM chunk * */
-/* * - completed support for condition=2 in TERM chunk * */
-/* * - added beta version function & constant * */
-/* * 1.0.5 - 10/11/2002 - G.Juyn * */
-/* * - added mng_status_dynamic to supports function * */
-/* * 1.0.5 - 11/04/2002 - G.Juyn * */
-/* * - changed FRAMECOUNT/LAYERCOUNT/PLAYTIME error to warning * */
-/* * 1.0.5 - 11/07/2002 - G.Juyn * */
-/* * - added support to get totals after mng_read() * */
-/* * 1.0.5 - 11/29/2002 - G.Juyn * */
-/* * - fixed goxxxxx() support for zero values * */
-/* * * */
-/* * 1.0.6 - 05/25/2003 - G.R-P * */
-/* * - added MNG_SKIPCHUNK_cHNK footprint optimizations * */
-/* * 1.0.6 - 07/11/2003 - G.R-P * */
-/* * - added conditionals zlib and jpeg property accessors * */
-/* * 1.0.6 - 07/14/2003 - G.R-P * */
-/* * - added conditionals around "mng_display_go*" and other * */
-/* * unused functions * */
-/* * 1.0.6 - 07/29/2003 - G.R-P * */
-/* * - added conditionals around PAST chunk support * */
-/* * * */
-/* * 1.0.7 - 03/07/2004 - G. Randers-Pehrson * */
-/* * - put gamma, cms-related declarations inside #ifdef * */
-/* * 1.0.7 - 03/10/2004 - G.R-P * */
-/* * - added conditionals around openstream/closestream * */
-/* * 1.0.7 - 03/24/2004 - G.R-P * */
-/* * - fixed zTXT -> zTXt typo * */
-/* * * */
-/* * 1.0.8 - 04/02/2004 - G.Juyn * */
-/* * - added CRC existence & checking flags * */
-/* * 1.0.8 - 04/10/2004 - G.Juyn * */
-/* * - added data-push mechanisms for specialized decoders * */
-/* * 1.0.8 - 07/06/2004 - G.R-P * */
-/* * - defend against using undefined openstream function * */
-/* * 1.0.8 - 08/02/2004 - G.Juyn * */
-/* * - added conditional to allow easier writing of large MNG's * */
-/* * * */
-/* * 1.0.9 - 08/17/2004 - G.R-P * */
-/* * - added more SKIPCHUNK conditionals * */
-/* * 1.0.9 - 09/25/2004 - G.Juyn * */
-/* * - replaced MNG_TWEAK_LARGE_FILES with permanent solution * */
-/* * 1.0.9 - 10/03/2004 - G.Juyn * */
-/* * - added function to retrieve current FRAM delay * */
-/* * 1.0.9 - 12/20/2004 - G.Juyn * */
-/* * - cleaned up macro-invocations (thanks to D. Airlie) * */
-/* * * */
-/* * 1.0.10 - 07/06/2005 - G.R-P * */
-/* * - added more SKIPCHUNK conditionals * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * 1.0.10 - 04/12/2007 - G.Juyn * */
-/* * - added support for ANG proposal * */
-/* * 1.0.10 - 07/06/2007 - G.R-P bugfix by Lucas Quintana * */
-/* * * */
-/* ************************************************************************** */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-#include "libmng_objects.h"
-#include "libmng_object_prc.h"
-#include "libmng_chunks.h"
-#include "libmng_memory.h"
-#include "libmng_read.h"
-#include "libmng_write.h"
-#include "libmng_display.h"
-#include "libmng_zlib.h"
-#include "libmng_jpeg.h"
-#include "libmng_cms.h"
-#include "libmng_pixels.h"
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * local routines * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-MNG_LOCAL mng_retcode mng_drop_objects (mng_datap pData,
- mng_bool bDropaniobj)
-{
- mng_objectp pObject;
- mng_objectp pNext;
- mng_cleanupobject fCleanup;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DROP_OBJECTS, MNG_LC_START);
-#endif
-
- pObject = pData->pFirstimgobj; /* get first stored image-object (if any) */
-
- while (pObject) /* more objects to discard ? */
- {
- pNext = ((mng_object_headerp)pObject)->pNext;
- /* call appropriate cleanup */
- fCleanup = ((mng_object_headerp)pObject)->fCleanup;
- fCleanup (pData, pObject);
-
- pObject = pNext; /* neeeext */
- }
-
- pData->pFirstimgobj = MNG_NULL; /* clean this up!!! */
- pData->pLastimgobj = MNG_NULL;
-
- if (bDropaniobj) /* drop animation objects ? */
- {
- pObject = pData->pFirstaniobj; /* get first stored animation-object (if any) */
-
- while (pObject) /* more objects to discard ? */
- {
- pNext = ((mng_object_headerp)pObject)->pNext;
- /* call appropriate cleanup */
- fCleanup = ((mng_object_headerp)pObject)->fCleanup;
- fCleanup (pData, pObject);
-
- pObject = pNext; /* neeeext */
- }
-
- pData->pFirstaniobj = MNG_NULL; /* clean this up!!! */
- pData->pLastaniobj = MNG_NULL;
-
-#ifdef MNG_SUPPORT_DYNAMICMNG
- pObject = pData->pFirstevent; /* get first event-object (if any) */
-
- while (pObject) /* more objects to discard ? */
- {
- pNext = ((mng_object_headerp)pObject)->pNext;
- /* call appropriate cleanup */
- fCleanup = ((mng_object_headerp)pObject)->fCleanup;
- fCleanup (pData, pObject);
-
- pObject = pNext; /* neeeext */
- }
-
- pData->pFirstevent = MNG_NULL; /* clean this up!!! */
- pData->pLastevent = MNG_NULL;
-#endif
- }
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- if (pData->pMPNG) /* drop MPNG data (if any) */
- {
- fCleanup = ((mng_object_headerp)pData->pMPNG)->fCleanup;
- fCleanup (pData, pData->pMPNG);
- pData->pMPNG = MNG_NULL;
- }
-#endif
-
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
- if (pData->pANG) /* drop ANG data (if any) */
- {
- fCleanup = ((mng_object_headerp)pData->pANG)->fCleanup;
- fCleanup (pData, pData->pANG);
- pData->pANG = MNG_NULL;
- }
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DROP_OBJECTS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifndef MNG_SKIPCHUNK_SAVE
-MNG_LOCAL mng_retcode mng_drop_savedata (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DROP_SAVEDATA, MNG_LC_START);
-#endif
-
- if (pData->pSavedata) /* sanity check */
- { /* address it more directly */
- mng_savedatap pSave = pData->pSavedata;
-
- if (pSave->iGlobalProfilesize) /* cleanup the profile ? */
- MNG_FREEX (pData, pSave->pGlobalProfile, pSave->iGlobalProfilesize);
- /* cleanup the save structure */
- MNG_FREE (pData, pData->pSavedata, sizeof (mng_savedata));
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DROP_SAVEDATA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-MNG_LOCAL mng_retcode mng_reset_rundata (mng_datap pData)
-{
- mng_drop_invalid_objects (pData); /* drop invalidly stored objects */
-#ifndef MNG_SKIPCHUNK_SAVE
- mng_drop_savedata (pData); /* drop stored savedata */
-#endif
- mng_reset_objzero (pData); /* reset object 0 */
- /* drop stored objects (if any) */
- mng_drop_objects (pData, MNG_FALSE);
-
- pData->bFramedone = MNG_FALSE;
- pData->iFrameseq = 0; /* reset counters & stuff */
- pData->iLayerseq = 0;
- pData->iFrametime = 0;
-
- pData->bSkipping = MNG_FALSE;
-
-#ifdef MNG_SUPPORT_DYNAMICMNG
- pData->bRunningevent = MNG_FALSE;
- pData->bStopafterseek = MNG_FALSE;
- pData->iEventx = 0;
- pData->iEventy = 0;
- pData->pLastmousemove = MNG_NULL;
-#endif
-
- pData->iRequestframe = 0;
- pData->iRequestlayer = 0;
- pData->iRequesttime = 0;
- pData->bSearching = MNG_FALSE;
-
- pData->iRuntime = 0;
- pData->iSynctime = 0;
- pData->iStarttime = 0;
- pData->iEndtime = 0;
- pData->bRunning = MNG_FALSE;
- pData->bTimerset = MNG_FALSE;
- pData->iBreakpoint = 0;
- pData->bSectionwait = MNG_FALSE;
- pData->bFreezing = MNG_FALSE;
- pData->bResetting = MNG_FALSE;
- pData->bNeedrefresh = MNG_FALSE;
- pData->bOnlyfirstframe = MNG_FALSE;
- pData->iFramesafterTERM = 0;
-
- pData->iIterations = 0;
- /* start of animation objects! */
- pData->pCurraniobj = MNG_NULL;
-
- pData->iUpdateleft = 0; /* reset region */
- pData->iUpdateright = 0;
- pData->iUpdatetop = 0;
- pData->iUpdatebottom = 0;
- pData->iPLTEcount = 0; /* reset PLTE data */
-
-#ifndef MNG_SKIPCHUNK_DEFI
- pData->iDEFIobjectid = 0; /* reset DEFI data */
- pData->bDEFIhasdonotshow = MNG_FALSE;
- pData->iDEFIdonotshow = 0;
- pData->bDEFIhasconcrete = MNG_FALSE;
- pData->iDEFIconcrete = 0;
- pData->bDEFIhasloca = MNG_FALSE;
- pData->iDEFIlocax = 0;
- pData->iDEFIlocay = 0;
- pData->bDEFIhasclip = MNG_FALSE;
- pData->iDEFIclipl = 0;
- pData->iDEFIclipr = 0;
- pData->iDEFIclipt = 0;
- pData->iDEFIclipb = 0;
-#endif
-
-#ifndef MNG_SKIPCHUNK_BACK
- pData->iBACKred = 0; /* reset BACK data */
- pData->iBACKgreen = 0;
- pData->iBACKblue = 0;
- pData->iBACKmandatory = 0;
- pData->iBACKimageid = 0;
- pData->iBACKtile = 0;
-#endif
-
-#ifndef MNG_SKIPCHUNK_FRAM
- pData->iFRAMmode = 1; /* default global FRAM variables */
- pData->iFRAMdelay = 1;
- pData->iFRAMtimeout = 0x7fffffffl;
- pData->bFRAMclipping = MNG_FALSE;
- pData->iFRAMclipl = 0;
- pData->iFRAMclipr = 0;
- pData->iFRAMclipt = 0;
- pData->iFRAMclipb = 0;
-
- pData->iFramemode = 1; /* again for the current frame */
- pData->iFramedelay = 1;
- pData->iFrametimeout = 0x7fffffffl;
- pData->bFrameclipping = MNG_FALSE;
- pData->iFrameclipl = 0;
- pData->iFrameclipr = 0;
- pData->iFrameclipt = 0;
- pData->iFrameclipb = 0;
-
- pData->iNextdelay = 1;
-
- pData->bForcedelay = MNG_FALSE;
- pData->iAccumdelay = 0;
-#endif
-
-#ifndef MNG_SKIPCHUNK_SHOW
- pData->iSHOWmode = 0; /* reset SHOW data */
- pData->iSHOWfromid = 0;
- pData->iSHOWtoid = 0;
- pData->iSHOWnextid = 0;
- pData->iSHOWskip = 0;
-#endif
-
- pData->iGlobalPLTEcount = 0; /* reset global PLTE data */
-
- pData->iGlobalTRNSrawlen = 0; /* reset global tRNS data */
-
- pData->iGlobalGamma = 0; /* reset global gAMA data */
-
-#ifndef MNG_SKIPCHUNK_cHRM
- pData->iGlobalWhitepointx = 0; /* reset global cHRM data */
- pData->iGlobalWhitepointy = 0;
- pData->iGlobalPrimaryredx = 0;
- pData->iGlobalPrimaryredy = 0;
- pData->iGlobalPrimarygreenx = 0;
- pData->iGlobalPrimarygreeny = 0;
- pData->iGlobalPrimarybluex = 0;
- pData->iGlobalPrimarybluey = 0;
-#endif
-
-#ifndef MNG_SKIPCHUNK_sRGB
- pData->iGlobalRendintent = 0; /* reset global sRGB data */
-#endif
-
-#ifndef MNG_SKIPCHUNK_iCCP
- if (pData->iGlobalProfilesize) /* drop global profile (if any) */
- MNG_FREE (pData, pData->pGlobalProfile, pData->iGlobalProfilesize);
-
- pData->iGlobalProfilesize = 0;
-#endif
-
-#ifndef MNG_SKIPCHUNK_bKGD
- pData->iGlobalBKGDred = 0; /* reset global bKGD data */
- pData->iGlobalBKGDgreen = 0;
- pData->iGlobalBKGDblue = 0;
-#endif
-#ifndef MNG_NO_DELTA_PNG
- /* reset delta-image */
- pData->pDeltaImage = MNG_NULL;
- pData->iDeltaImagetype = 0;
- pData->iDeltatype = 0;
- pData->iDeltaBlockwidth = 0;
- pData->iDeltaBlockheight = 0;
- pData->iDeltaBlockx = 0;
- pData->iDeltaBlocky = 0;
- pData->bDeltaimmediate = MNG_FALSE;
-
- pData->fDeltagetrow = MNG_NULL;
- pData->fDeltaaddrow = MNG_NULL;
- pData->fDeltareplacerow = MNG_NULL;
- pData->fDeltaputrow = MNG_NULL;
-
- pData->fPromoterow = MNG_NULL;
- pData->fPromBitdepth = MNG_NULL;
- pData->pPromBuf = MNG_NULL;
- pData->iPromColortype = 0;
- pData->iPromBitdepth = 0;
- pData->iPromFilltype = 0;
- pData->iPromWidth = 0;
- pData->pPromSrc = MNG_NULL;
- pData->pPromDst = MNG_NULL;
-#endif
-
-#ifndef MNG_SKIPCHUNK_MAGN
- pData->iMAGNfromid = 0;
- pData->iMAGNtoid = 0;
-#endif
-
-#ifndef MNG_SKIPCHUNK_PAST
- pData->iPastx = 0;
- pData->iPasty = 0;
-#endif
-
- pData->pLastseek = MNG_NULL;
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-MNG_LOCAL void cleanup_errors (mng_datap pData)
-{
- pData->iErrorcode = MNG_NOERROR;
- pData->iSeverity = 0;
- pData->iErrorx1 = 0;
- pData->iErrorx2 = 0;
- pData->zErrortext = MNG_NULL;
-
- return;
-}
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-MNG_LOCAL mng_retcode make_pushbuffer (mng_datap pData,
- mng_ptr pPushdata,
- mng_size_t iLength,
- mng_bool bTakeownership,
- mng_pushdatap * pPush)
-{
- mng_pushdatap pTemp;
-
- MNG_ALLOC (pData, pTemp, sizeof(mng_pushdata));
-
- pTemp->pNext = MNG_NULL;
-
- if (bTakeownership) /* are we going to own the buffer? */
- { /* then just copy the pointer */
- pTemp->pData = (mng_uint8p)pPushdata;
- }
- else
- { /* otherwise create new buffer */
- MNG_ALLOCX (pData, pTemp->pData, iLength);
- if (!pTemp->pData) /* succeeded? */
- {
- MNG_FREEX (pData, pTemp, sizeof(mng_pushdata));
- MNG_ERROR (pData, MNG_OUTOFMEMORY);
- }
- /* and copy the bytes across */
- MNG_COPY (pTemp->pData, pPushdata, iLength);
- }
-
- pTemp->iLength = iLength;
- pTemp->bOwned = bTakeownership;
- pTemp->pDatanext = pTemp->pData;
- pTemp->iRemaining = iLength;
-
- *pPush = pTemp; /* return it */
-
- return MNG_NOERROR; /* and all's well */
-}
-#endif
-
-#ifdef MNG_VERSION_QUERY_SUPPORT
-/* ************************************************************************** */
-/* * * */
-/* * Versioning control * */
-/* * * */
-/* ************************************************************************** */
-
-mng_pchar MNG_DECL mng_version_text (void)
-{
- return MNG_VERSION_TEXT;
-}
-
-/* ************************************************************************** */
-
-mng_uint8 MNG_DECL mng_version_so (void)
-{
- return MNG_VERSION_SO;
-}
-
-/* ************************************************************************** */
-
-mng_uint8 MNG_DECL mng_version_dll (void)
-{
- return MNG_VERSION_DLL;
-}
-
-/* ************************************************************************** */
-
-mng_uint8 MNG_DECL mng_version_major (void)
-{
- return MNG_VERSION_MAJOR;
-}
-
-/* ************************************************************************** */
-
-mng_uint8 MNG_DECL mng_version_minor (void)
-{
- return MNG_VERSION_MINOR;
-}
-
-/* ************************************************************************** */
-
-mng_uint8 MNG_DECL mng_version_release (void)
-{
- return MNG_VERSION_RELEASE;
-}
-
-/* ************************************************************************** */
-
-mng_bool MNG_DECL mng_version_beta (void)
-{
- return MNG_VERSION_BETA;
-}
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * 'supports' function * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_FUNCQUERY
-typedef struct {
- mng_pchar zFunction;
- mng_uint8 iMajor; /* Major == 0 means not implemented ! */
- mng_uint8 iMinor;
- mng_uint8 iRelease;
- } mng_func_entry;
-typedef mng_func_entry const * mng_func_entryp;
-
-MNG_LOCAL mng_func_entry const func_table [] =
- { /* keep it alphabetically sorted !!!!! */
- {"mng_cleanup", 1, 0, 0},
- {"mng_copy_chunk", 1, 0, 5},
- {"mng_create", 1, 0, 0},
- {"mng_display", 1, 0, 0},
- {"mng_display_freeze", 1, 0, 0},
-#ifndef MNG_NO_DISPLAY_GO_SUPPORTED
- {"mng_display_goframe", 1, 0, 0},
- {"mng_display_golayer", 1, 0, 0},
- {"mng_display_gotime", 1, 0, 0},
-#endif
- {"mng_display_reset", 1, 0, 0},
- {"mng_display_resume", 1, 0, 0},
- {"mng_get_alphabitdepth", 1, 0, 0},
- {"mng_get_alphacompression", 1, 0, 0},
- {"mng_get_alphadepth", 1, 0, 0},
- {"mng_get_alphafilter", 1, 0, 0},
- {"mng_get_alphainterlace", 1, 0, 0},
- {"mng_get_bgcolor", 1, 0, 0},
- {"mng_get_bitdepth", 1, 0, 0},
- {"mng_get_bkgdstyle", 1, 0, 0},
- {"mng_get_cacheplayback", 1, 0, 2},
- {"mng_get_canvasstyle", 1, 0, 0},
- {"mng_get_colortype", 1, 0, 0},
- {"mng_get_compression", 1, 0, 0},
-#ifndef MNG_NO_CURRENT_INFO
- {"mng_get_currentframe", 1, 0, 0},
- {"mng_get_currentlayer", 1, 0, 0},
- {"mng_get_currentplaytime", 1, 0, 0},
-#endif
- {"mng_get_currframdelay", 1, 0, 9},
-#ifndef MNG_NO_DFLT_INFO
- {"mng_get_dfltimggamma", 1, 0, 0},
- {"mng_get_dfltimggammaint", 1, 0, 0},
-#endif
- {"mng_get_displaygamma", 1, 0, 0},
- {"mng_get_displaygammaint", 1, 0, 0},
- {"mng_get_doprogressive", 1, 0, 2},
- {"mng_get_filter", 1, 0, 0},
- {"mng_get_framecount", 1, 0, 0},
- {"mng_get_imageheight", 1, 0, 0},
- {"mng_get_imagelevel", 1, 0, 0},
- {"mng_get_imagetype", 1, 0, 0},
- {"mng_get_imagewidth", 1, 0, 0},
- {"mng_get_interlace", 1, 0, 0},
-#ifdef MNG_ACCESS_JPEG
- {"mng_get_jpeg_dctmethod", 1, 0, 0},
- {"mng_get_jpeg_maxjdat", 1, 0, 0},
- {"mng_get_jpeg_optimized", 1, 0, 0},
- {"mng_get_jpeg_progressive", 1, 0, 0},
- {"mng_get_jpeg_quality", 1, 0, 0},
- {"mng_get_jpeg_smoothing", 1, 0, 0},
-#endif
- {"mng_get_lastbackchunk", 1, 0, 3},
- {"mng_get_lastseekname", 1, 0, 5},
- {"mng_get_layercount", 1, 0, 0},
-#ifndef MNG_SKIP_MAXCANVAS
- {"mng_get_maxcanvasheight", 1, 0, 0},
- {"mng_get_maxcanvaswidth", 1, 0, 0},
-#endif
- {"mng_get_playtime", 1, 0, 0},
- {"mng_get_refreshpass", 1, 0, 0},
- {"mng_get_runtime", 1, 0, 0},
- {"mng_get_sectionbreaks", 1, 0, 0},
- {"mng_get_sigtype", 1, 0, 0},
- {"mng_get_simplicity", 1, 0, 0},
- {"mng_get_speed", 1, 0, 0},
- {"mng_get_srgb", 1, 0, 0},
- {"mng_get_starttime", 1, 0, 0},
- {"mng_get_storechunks", 1, 0, 0},
- {"mng_get_suspensionmode", 1, 0, 0},
- {"mng_get_ticks", 1, 0, 0},
-#ifndef MNG_NO_CURRENT_INFO
- {"mng_get_totalframes", 1, 0, 5},
- {"mng_get_totallayers", 1, 0, 5},
- {"mng_get_totalplaytime", 1, 0, 5},
-#endif
- {"mng_get_usebkgd", 1, 0, 0},
- {"mng_get_userdata", 1, 0, 0},
-#if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
- {"mng_get_viewgamma", 1, 0, 0},
- {"mng_get_viewgammaint", 1, 0, 0},
-#endif
-#ifdef MNG_ACCESS_ZLIB
- {"mng_get_zlib_level", 1, 0, 0},
- {"mng_get_zlib_maxidat", 1, 0, 0},
- {"mng_get_zlib_memlevel", 1, 0, 0},
- {"mng_get_zlib_method", 1, 0, 0},
- {"mng_get_zlib_strategy", 1, 0, 0},
- {"mng_get_zlib_windowbits", 1, 0, 0},
-#endif
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
- {"mng_getcb_closestream", 1, 0, 0},
-#endif
- {"mng_getcb_errorproc", 1, 0, 0},
- {"mng_getcb_getalphaline", 1, 0, 0},
- {"mng_getcb_getbkgdline", 1, 0, 0},
- {"mng_getcb_getcanvasline", 1, 0, 0},
- {"mng_getcb_gettickcount", 1, 0, 0},
- {"mng_getcb_memalloc", 1, 0, 0},
- {"mng_getcb_memfree", 1, 0, 0},
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
- {"mng_getcb_openstream", 1, 0, 0},
-#endif
- {"mng_getcb_processarow", 1, 0, 0},
- {"mng_getcb_processchroma", 1, 0, 0},
- {"mng_getcb_processgamma", 1, 0, 0},
- {"mng_getcb_processheader", 1, 0, 0},
- {"mng_getcb_processiccp", 1, 0, 0},
- {"mng_getcb_processmend", 1, 0, 1},
- {"mng_getcb_processneed", 1, 0, 0},
- {"mng_getcb_processsave", 1, 0, 0},
- {"mng_getcb_processseek", 1, 0, 0},
- {"mng_getcb_processsrgb", 1, 0, 0},
- {"mng_getcb_processterm", 1, 0, 2},
- {"mng_getcb_processtext", 1, 0, 0},
- {"mng_getcb_processunknown", 1, 0, 0},
- {"mng_getcb_readdata", 1, 0, 0},
- {"mng_getcb_refresh", 1, 0, 0},
- {"mng_getcb_releasedata", 1, 0, 8},
- {"mng_getcb_settimer", 1, 0, 0},
- {"mng_getcb_traceproc", 1, 0, 0},
- {"mng_getcb_writedata", 1, 0, 0},
- {"mng_getchunk_back", 1, 0, 0},
- {"mng_getchunk_basi", 1, 0, 0},
-#ifndef MNG_SKIPCHUNK_bKGD
- {"mng_getchunk_bkgd", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_cHRM
- {"mng_getchunk_chrm", 1, 0, 0},
-#endif
- {"mng_getchunk_clip", 1, 0, 0},
- {"mng_getchunk_clon", 1, 0, 0},
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_dBYK
- {"mng_getchunk_dbyk", 1, 0, 0},
-#endif
-#endif
- {"mng_getchunk_defi", 1, 0, 0},
-#ifndef MNG_NO_DELTA_PNG
- {"mng_getchunk_dhdr", 1, 0, 0},
-#endif
- {"mng_getchunk_disc", 1, 0, 0},
-#ifndef MNG_NO_DELTA_PNG
- {"mng_getchunk_drop", 1, 0, 0},
-#endif
- {"mng_getchunk_endl", 1, 0, 0},
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- {"mng_getchunk_mpng", 1, 0, 10},
- {"mng_getchunk_mpng_frame", 1, 0, 10},
-#endif
-#ifndef MNG_SKIPCHUNK_evNT
- {"mng_getchunk_evnt", 1, 0, 5},
- {"mng_getchunk_evnt_entry", 1, 0, 5},
-#endif
-#ifndef MNG_SKIPCHUNK_eXPI
- {"mng_getchunk_expi", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_fPRI
- {"mng_getchunk_fpri", 1, 0, 0},
-#endif
- {"mng_getchunk_fram", 1, 0, 0},
- {"mng_getchunk_gama", 1, 0, 0},
-#ifndef MNG_SKIPCHUNK_hIST
- {"mng_getchunk_hist", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_iCCP
- {"mng_getchunk_iccp", 1, 0, 0},
-#endif
- {"mng_getchunk_idat", 1, 0, 0},
- {"mng_getchunk_iend", 1, 0, 0},
- {"mng_getchunk_ihdr", 1, 0, 0},
-#ifndef MNG_NO_DELTA_PNG
-#ifdef MNG_INCLUDE_JNG
- {"mng_getchunk_ijng", 1, 0, 0},
-#endif
- {"mng_getchunk_ipng", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_iTXt
- {"mng_getchunk_itxt", 1, 0, 0},
-#endif
-#ifdef MNG_INCLUDE_JNG
- {"mng_getchunk_jdaa", 1, 0, 0},
- {"mng_getchunk_jdat", 1, 0, 0},
- {"mng_getchunk_jhdr", 1, 0, 0},
- {"mng_getchunk_jsep", 1, 0, 0},
-#endif
- {"mng_getchunk_loop", 1, 0, 0},
-#ifndef MNG_SKIPCHUNK_MAGN
- {"mng_getchunk_magn", 1, 0, 0},
-#endif
- {"mng_getchunk_mend", 1, 0, 0},
- {"mng_getchunk_mhdr", 1, 0, 0},
- {"mng_getchunk_move", 1, 0, 0},
-#ifndef MNG_SKIPCHUNK_nEED
- {"mng_getchunk_need", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_ORDR
-#ifndef MNG_NO_DELTA_PNG
- {"mng_getchunk_ordr", 1, 0, 0},
- {"mng_getchunk_ordr_entry", 1, 0, 0},
-#endif
-#endif
-#ifndef MNG_SKIPCHUNK_PAST
- {"mng_getchunk_past", 1, 0, 0},
- {"mng_getchunk_past_src", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_pHYg
- {"mng_getchunk_phyg", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_pHYs
- {"mng_getchunk_phys", 1, 0, 0},
-#endif
-#ifndef MNG_NO_DELTA_PNG
- {"mng_getchunk_plte", 1, 0, 0},
- {"mng_getchunk_pplt", 1, 0, 0},
- {"mng_getchunk_pplt_entry", 1, 0, 0},
- {"mng_getchunk_prom", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_SAVE
- {"mng_getchunk_save", 1, 0, 0},
- {"mng_getchunk_save_entry", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_sBIT
- {"mng_getchunk_sbit", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_SEEK
- {"mng_getchunk_seek", 1, 0, 0},
-#endif
- {"mng_getchunk_show", 1, 0, 0},
-#ifndef MNG_SKIPCHUNK_sPLT
- {"mng_getchunk_splt", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_sRGB
- {"mng_getchunk_srgb", 1, 0, 0},
-#endif
- {"mng_getchunk_term", 1, 0, 0},
-#ifndef MNG_SKIPCHUNK_tEXt
- {"mng_getchunk_text", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_tIME
- {"mng_getchunk_time", 1, 0, 0},
-#endif
- {"mng_getchunk_trns", 1, 0, 0},
- {"mng_getchunk_unkown", 1, 0, 0},
-#ifndef MNG_SKIPCHUNK_zTXt
- {"mng_getchunk_ztxt", 1, 0, 0},
-#endif
- {"mng_getimgdata_chunk", 0, 0, 0},
- {"mng_getimgdata_chunkseq", 0, 0, 0},
- {"mng_getimgdata_seq", 0, 0, 0},
- {"mng_getlasterror", 1, 0, 0},
- {"mng_initialize", 1, 0, 0},
- {"mng_iterate_chunks", 1, 0, 0},
- {"mng_putchunk_back", 1, 0, 0},
-#ifndef MNG_SKIPCHUNK_BASI
- {"mng_putchunk_basi", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_bKGD
- {"mng_putchunk_bkgd", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_cHRM
- {"mng_putchunk_chrm", 1, 0, 0},
-#endif
- {"mng_putchunk_clip", 1, 0, 0},
- {"mng_putchunk_clon", 1, 0, 0},
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_DBYK
- {"mng_putchunk_dbyk", 1, 0, 0},
-#endif
-#endif
- {"mng_putchunk_defi", 1, 0, 0},
-#ifndef MNG_NO_DELTA_PNG
- {"mng_putchunk_dhdr", 1, 0, 0},
-#endif
- {"mng_putchunk_disc", 1, 0, 0},
-#ifndef MNG_NO_DELTA_PNG
- {"mng_putchunk_drop", 1, 0, 0},
-#endif
- {"mng_putchunk_endl", 1, 0, 0},
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- {"mng_putchunk_mpng", 1, 0, 10},
- {"mng_putchunk_mpng_frame", 1, 0, 10},
-#endif
-#ifndef MNG_SKIPCHUNK_evNT
- {"mng_putchunk_evnt", 1, 0, 5},
- {"mng_putchunk_evnt_entry", 1, 0, 5},
-#endif
-#ifndef MNG_SKIPCHUNK_eXPI
- {"mng_putchunk_expi", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_fPRI
- {"mng_putchunk_fpri", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_FRAM
- {"mng_putchunk_fram", 1, 0, 0},
-#endif
- {"mng_putchunk_gama", 1, 0, 0},
-#ifndef MNG_SKIPCHUNK_hIST
- {"mng_putchunk_hist", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_iCCP
- {"mng_putchunk_iccp", 1, 0, 0},
-#endif
- {"mng_putchunk_idat", 1, 0, 0},
- {"mng_putchunk_iend", 1, 0, 0},
- {"mng_putchunk_ihdr", 1, 0, 0},
-#ifndef MNG_NO_DELTA_PNG
-#ifdef MNG_INCLUDE_JNG
- {"mng_putchunk_ijng", 1, 0, 0},
-#endif
- {"mng_putchunk_ipng", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_iTXt
- {"mng_putchunk_itxt", 1, 0, 0},
-#endif
-#ifdef MNG_INCLUDE_JNG
- {"mng_putchunk_jdaa", 1, 0, 0},
- {"mng_putchunk_jdat", 1, 0, 0},
- {"mng_putchunk_jhdr", 1, 0, 0},
- {"mng_putchunk_jsep", 1, 0, 0},
-#endif
- {"mng_putchunk_loop", 1, 0, 0},
-#ifndef MNG_SKIPCHUNK_MAGN
- {"mng_putchunk_magn", 1, 0, 0},
-#endif
- {"mng_putchunk_mend", 1, 0, 0},
- {"mng_putchunk_mhdr", 1, 0, 0},
- {"mng_putchunk_move", 1, 0, 0},
-#ifndef MNG_SKIPCHUNK_nEED
- {"mng_putchunk_need", 1, 0, 0},
-#endif
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_ORDR
- {"mng_putchunk_ordr", 1, 0, 0},
- {"mng_putchunk_ordr_entry", 1, 0, 0},
-#endif
-#endif
-#ifndef MNG_SKIPCHUNK_PAST
- {"mng_putchunk_past", 1, 0, 0},
- {"mng_putchunk_past_src", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_pHYg
- {"mng_putchunk_phyg", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_pHYs
- {"mng_putchunk_phys", 1, 0, 0},
-#endif
-#ifndef MNG_NO_DELTA_PNG
- {"mng_putchunk_plte", 1, 0, 0},
- {"mng_putchunk_pplt", 1, 0, 0},
- {"mng_putchunk_pplt_entry", 1, 0, 0},
- {"mng_putchunk_prom", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_SAVE
- {"mng_putchunk_save", 1, 0, 0},
- {"mng_putchunk_save_entry", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_sBIT
- {"mng_putchunk_sbit", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_SEEK
- {"mng_putchunk_seek", 1, 0, 0},
-#endif
- {"mng_putchunk_show", 1, 0, 0},
-#ifndef MNG_SKIPCHUNK_sPLT
- {"mng_putchunk_splt", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_sRGB
- {"mng_putchunk_srgb", 1, 0, 0},
-#endif
- {"mng_putchunk_term", 1, 0, 0},
-#ifndef MNG_SKIPCHUNK_tEXt
- {"mng_putchunk_text", 1, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_tIME
- {"mng_putchunk_time", 1, 0, 0},
-#endif
- {"mng_putchunk_trns", 1, 0, 0},
- {"mng_putchunk_unkown", 1, 0, 0},
-#ifndef MNG_SKIPCHUNK_zTXt
- {"mng_putchunk_ztxt", 1, 0, 0},
-#endif
- {"mng_putimgdata_ihdr", 0, 0, 0},
- {"mng_putimgdata_jhdr", 0, 0, 0},
- {"mng_reset", 1, 0, 0},
- {"mng_read", 1, 0, 0},
- {"mng_read_pushchunk", 1, 0, 8},
- {"mng_read_pushdata", 1, 0, 8},
- {"mng_read_pushsig", 1, 0, 8},
- {"mng_read_resume", 1, 0, 0},
- {"mng_readdisplay", 1, 0, 0},
- {"mng_set_bgcolor", 1, 0, 0},
- {"mng_set_bkgdstyle", 1, 0, 0},
- {"mng_set_cacheplayback", 1, 0, 2},
- {"mng_set_canvasstyle", 1, 0, 0},
- {"mng_set_dfltimggamma", 1, 0, 0},
-#ifndef MNG_NO_DFLT_INFO
- {"mng_set_dfltimggammaint", 1, 0, 0},
-#endif
- {"mng_set_displaygamma", 1, 0, 0},
- {"mng_set_displaygammaint", 1, 0, 0},
- {"mng_set_doprogressive", 1, 0, 2},
-#ifdef MNG_ACCESS_JPEG
- {"mng_set_jpeg_dctmethod", 1, 0, 0},
- {"mng_set_jpeg_maxjdat", 1, 0, 0},
- {"mng_set_jpeg_optimized", 1, 0, 0},
- {"mng_set_jpeg_progressive", 1, 0, 0},
- {"mng_set_jpeg_quality", 1, 0, 0},
- {"mng_set_jpeg_smoothing", 1, 0, 0},
-#endif
-#ifndef MNG_SKIP_MAXCANVAS
- {"mng_set_maxcanvasheight", 1, 0, 0},
- {"mng_set_maxcanvassize", 1, 0, 0},
- {"mng_set_maxcanvaswidth", 1, 0, 0},
-#endif
- {"mng_set_outputprofile", 1, 0, 0},
- {"mng_set_outputprofile2", 1, 0, 0},
- {"mng_set_outputsrgb", 1, 0, 1},
- {"mng_set_sectionbreaks", 1, 0, 0},
- {"mng_set_speed", 1, 0, 0},
- {"mng_set_srgb", 1, 0, 0},
- {"mng_set_srgbimplicit", 1, 0, 1},
- {"mng_set_srgbprofile", 1, 0, 0},
- {"mng_set_srgbprofile2", 1, 0, 0},
- {"mng_set_storechunks", 1, 0, 0},
- {"mng_set_suspensionmode", 1, 0, 0},
- {"mng_set_usebkgd", 1, 0, 0},
- {"mng_set_userdata", 1, 0, 0},
-#if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
- {"mng_set_viewgamma", 1, 0, 0},
- {"mng_set_viewgammaint", 1, 0, 0},
-#endif
-#ifdef MNG_ACCESS_ZLIB
- {"mng_set_zlib_level", 1, 0, 0},
- {"mng_set_zlib_maxidat", 1, 0, 0},
- {"mng_set_zlib_memlevel", 1, 0, 0},
- {"mng_set_zlib_method", 1, 0, 0},
- {"mng_set_zlib_strategy", 1, 0, 0},
- {"mng_set_zlib_windowbits", 1, 0, 0},
-#endif
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
- {"mng_setcb_closestream", 1, 0, 0},
-#endif
- {"mng_setcb_errorproc", 1, 0, 0},
- {"mng_setcb_getalphaline", 1, 0, 0},
- {"mng_setcb_getbkgdline", 1, 0, 0},
- {"mng_setcb_getcanvasline", 1, 0, 0},
- {"mng_setcb_gettickcount", 1, 0, 0},
- {"mng_setcb_memalloc", 1, 0, 0},
- {"mng_setcb_memfree", 1, 0, 0},
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
- {"mng_setcb_openstream", 1, 0, 0},
-#endif
- {"mng_setcb_processarow", 1, 0, 0},
- {"mng_setcb_processchroma", 1, 0, 0},
- {"mng_setcb_processgamma", 1, 0, 0},
- {"mng_setcb_processheader", 1, 0, 0},
- {"mng_setcb_processiccp", 1, 0, 0},
- {"mng_setcb_processmend", 1, 0, 1},
- {"mng_setcb_processneed", 1, 0, 0},
- {"mng_setcb_processsave", 1, 0, 0},
- {"mng_setcb_processseek", 1, 0, 0},
- {"mng_setcb_processsrgb", 1, 0, 0},
- {"mng_setcb_processterm", 1, 0, 2},
- {"mng_setcb_processtext", 1, 0, 0},
- {"mng_setcb_processunknown", 1, 0, 0},
- {"mng_setcb_readdata", 1, 0, 0},
- {"mng_setcb_refresh", 1, 0, 0},
- {"mng_setcb_releasedata", 1, 0, 8},
- {"mng_setcb_settimer", 1, 0, 0},
- {"mng_setcb_traceproc", 1, 0, 0},
- {"mng_setcb_writedata", 1, 0, 0},
- {"mng_status_creating", 1, 0, 0},
- {"mng_status_displaying", 1, 0, 0},
- {"mng_status_dynamic", 1, 0, 5},
- {"mng_status_error", 1, 0, 0},
- {"mng_status_reading", 1, 0, 0},
- {"mng_status_running", 1, 0, 0},
- {"mng_status_runningevent", 1, 0, 5},
- {"mng_status_suspendbreak", 1, 0, 0},
- {"mng_status_timerbreak", 1, 0, 0},
- {"mng_status_writing", 1, 0, 0},
- {"mng_supports_func", 1, 0, 5},
- {"mng_trapevent", 1, 0, 5},
- {"mng_updatemngheader", 1, 0, 0},
- {"mng_updatemngsimplicity", 1, 0, 0},
- {"mng_version_beta", 1, 0, 5},
- {"mng_version_dll", 1, 0, 0},
- {"mng_version_major", 1, 0, 0},
- {"mng_version_minor", 1, 0, 0},
- {"mng_version_release", 1, 0, 0},
- {"mng_version_so", 1, 0, 0},
- {"mng_version_text", 1, 0, 0},
- {"mng_write", 1, 0, 0},
- };
-
-mng_bool MNG_DECL mng_supports_func (mng_pchar zFunction,
- mng_uint8* iMajor,
- mng_uint8* iMinor,
- mng_uint8* iRelease)
-{
- mng_int32 iTop, iLower, iUpper, iMiddle;
- mng_func_entryp pEntry; /* pointer to found entry */
- /* determine max index of table */
- iTop = (sizeof (func_table) / sizeof (func_table [0])) - 1;
-
- iLower = 0; /* initialize binary search */
- iMiddle = iTop >> 1; /* start in the middle */
- iUpper = iTop;
- pEntry = 0; /* no goods yet! */
-
- do /* the binary search itself */
- {
- mng_int32 iRslt = strcmp(func_table [iMiddle].zFunction, zFunction);
- if (iRslt < 0)
- iLower = iMiddle + 1;
- else if (iRslt > 0)
- iUpper = iMiddle - 1;
- else
- {
- pEntry = &func_table [iMiddle];
- break;
- };
-
- iMiddle = (iLower + iUpper) >> 1;
- }
- while (iLower <= iUpper);
-
- if (pEntry) /* found it ? */
- {
- *iMajor = pEntry->iMajor;
- *iMinor = pEntry->iMinor;
- *iRelease = pEntry->iRelease;
- return MNG_TRUE;
- }
- else
- {
- *iMajor = 0;
- *iMinor = 0;
- *iRelease = 0;
- return MNG_FALSE;
- }
-}
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * HLAPI routines * */
-/* * * */
-/* ************************************************************************** */
-
-mng_handle MNG_DECL mng_initialize (mng_ptr pUserdata,
- mng_memalloc fMemalloc,
- mng_memfree fMemfree,
- mng_traceproc fTraceproc)
-{
- mng_datap pData;
-#ifdef MNG_SUPPORT_DISPLAY
- mng_retcode iRetcode;
- mng_imagep pImage;
-#endif
-
-#ifdef MNG_INTERNAL_MEMMNGMT /* allocate the main datastruc */
- pData = (mng_datap)calloc (1, sizeof (mng_data));
-#else
- pData = (mng_datap)fMemalloc (sizeof (mng_data));
-#endif
-
- if (!pData)
- return MNG_NULL; /* error: out of memory?? */
- /* validate the structure */
- pData->iMagic = MNG_MAGIC;
- /* save userdata field */
- pData->pUserdata = pUserdata;
- /* remember trace callback */
- pData->fTraceproc = fTraceproc;
-
-#ifdef MNG_SUPPORT_TRACE
- if (mng_trace (pData, MNG_FN_INITIALIZE, MNG_LC_INITIALIZE))
- {
- MNG_FREEX (pData, pData, sizeof (mng_data));
- return MNG_NULL;
- }
-#endif
- /* default canvas styles are 8-bit RGB */
- pData->iCanvasstyle = MNG_CANVAS_RGB8;
- pData->iBkgdstyle = MNG_CANVAS_RGB8;
-
- pData->iBGred = 0; /* black */
- pData->iBGgreen = 0;
- pData->iBGblue = 0;
-
- pData->bUseBKGD = MNG_TRUE;
-
-#ifdef MNG_FULL_CMS
- pData->bIssRGB = MNG_TRUE;
- pData->hProf1 = 0; /* no profiles yet */
- pData->hProf2 = 0;
- pData->hProf3 = 0;
- pData->hTrans = 0;
-#endif
-
- pData->dViewgamma = 1.0;
- pData->dDisplaygamma = 2.2;
- pData->dDfltimggamma = 0.45455;
- /* initially remember chunks */
- pData->bStorechunks = MNG_TRUE;
- /* no breaks at section-borders */
- pData->bSectionbreaks = MNG_FALSE;
- /* initially cache playback info */
- pData->bCacheplayback = MNG_TRUE;
- /* progressive refresh for large images */
- pData->bDoProgressive = MNG_TRUE;
- /* crc exists; should check; error for
- critical chunks; warning for ancillery;
- generate crc for output */
- pData->iCrcmode = MNG_CRC_DEFAULT;
- /* normal animation-speed ! */
- pData->iSpeed = mng_st_normal;
- /* initial image limits */
- pData->iMaxwidth = 10000;
- pData->iMaxheight = 10000;
-
-#ifdef MNG_INTERNAL_MEMMNGMT /* internal management */
- pData->fMemalloc = MNG_NULL;
- pData->fMemfree = MNG_NULL;
-#else /* keep callbacks */
- pData->fMemalloc = fMemalloc;
- pData->fMemfree = fMemfree;
-#endif
- /* no value (yet) */
- pData->fReleasedata = MNG_NULL;
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
- pData->fOpenstream = MNG_NULL;
- pData->fClosestream = MNG_NULL;
-#endif
- pData->fReaddata = MNG_NULL;
- pData->fWritedata = MNG_NULL;
- pData->fErrorproc = MNG_NULL;
- pData->fProcessheader = MNG_NULL;
- pData->fProcesstext = MNG_NULL;
- pData->fProcesssave = MNG_NULL;
- pData->fProcessseek = MNG_NULL;
- pData->fProcessneed = MNG_NULL;
- pData->fProcessmend = MNG_NULL;
- pData->fProcessunknown = MNG_NULL;
- pData->fProcessterm = MNG_NULL;
- pData->fGetcanvasline = MNG_NULL;
- pData->fGetbkgdline = MNG_NULL;
- pData->fGetalphaline = MNG_NULL;
- pData->fRefresh = MNG_NULL;
- pData->fGettickcount = MNG_NULL;
- pData->fSettimer = MNG_NULL;
- pData->fProcessgamma = MNG_NULL;
- pData->fProcesschroma = MNG_NULL;
- pData->fProcesssrgb = MNG_NULL;
- pData->fProcessiccp = MNG_NULL;
- pData->fProcessarow = MNG_NULL;
-
-#if defined(MNG_SUPPORT_DISPLAY) && (defined(MNG_GAMMA_ONLY) || defined(MNG_FULL_CMS))
- pData->dLastgamma = 0; /* lookup table needs first-time calc */
-#endif
-
-#ifdef MNG_SUPPORT_DISPLAY /* create object 0 */
- iRetcode = mng_create_imageobject (pData, 0, MNG_TRUE, MNG_TRUE, MNG_TRUE,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, MNG_FALSE,
- 0, 0, 0, 0, &pImage);
-
- if (iRetcode) /* on error drop out */
- {
- MNG_FREEX (pData, pData, sizeof (mng_data));
- return MNG_NULL;
- }
-
- pData->pObjzero = pImage;
-#endif
-
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_INCLUDE_LCMS)
- mnglcms_initlibrary (); /* init lcms particulars */
-#endif
-
-#ifdef MNG_SUPPORT_READ
- pData->bSuspensionmode = MNG_FALSE;
- pData->iSuspendbufsize = 0;
- pData->pSuspendbuf = MNG_NULL;
- pData->pSuspendbufnext = MNG_NULL;
- pData->iSuspendbufleft = 0;
- pData->iChunklen = 0;
- pData->pReadbufnext = MNG_NULL;
- pData->pLargebufnext = MNG_NULL;
-
- pData->pFirstpushchunk = MNG_NULL;
- pData->pLastpushchunk = MNG_NULL;
- pData->pFirstpushdata = MNG_NULL;
- pData->pLastpushdata = MNG_NULL;
-#endif
-
-#ifdef MNG_INCLUDE_ZLIB
- mngzlib_initialize (pData); /* initialize zlib structures and such */
- /* default zlib compression parameters */
- pData->iZlevel = MNG_ZLIB_LEVEL;
- pData->iZmethod = MNG_ZLIB_METHOD;
- pData->iZwindowbits = MNG_ZLIB_WINDOWBITS;
- pData->iZmemlevel = MNG_ZLIB_MEMLEVEL;
- pData->iZstrategy = MNG_ZLIB_STRATEGY;
- /* default maximum IDAT data size */
- pData->iMaxIDAT = MNG_MAX_IDAT_SIZE;
-#endif
-
-#ifdef MNG_INCLUDE_JNG /* default IJG compression parameters */
- pData->eJPEGdctmethod = MNG_JPEG_DCT;
- pData->iJPEGquality = MNG_JPEG_QUALITY;
- pData->iJPEGsmoothing = MNG_JPEG_SMOOTHING;
- pData->bJPEGcompressprogr = MNG_JPEG_PROGRESSIVE;
- pData->bJPEGcompressopt = MNG_JPEG_OPTIMIZED;
- /* default maximum JDAT data size */
- pData->iMaxJDAT = MNG_MAX_JDAT_SIZE;
-#endif
-
- mng_reset ((mng_handle)pData);
-
-#ifdef MNG_SUPPORT_TRACE
- if (mng_trace (pData, MNG_FN_INITIALIZE, MNG_LC_END))
- {
- MNG_FREEX (pData, pData, sizeof (mng_data));
- return MNG_NULL;
- }
-#endif
-
- return (mng_handle)pData; /* if we get here, we're in business */
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_reset (mng_handle hHandle)
-{
- mng_datap pData;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_RESET, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = ((mng_datap)(hHandle)); /* address main structure */
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifndef MNG_SKIPCHUNK_SAVE
- mng_drop_savedata (pData); /* cleanup saved-data from SAVE/SEEK */
-#endif
-#endif
-
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_FULL_CMS)
- mng_clear_cms (pData); /* cleanup left-over cms stuff if any */
-#endif
-
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_INCLUDE_JNG)
- mngjpeg_cleanup (pData); /* cleanup jpeg stuff */
-#endif
-
-#ifdef MNG_INCLUDE_ZLIB
- if (pData->bInflating) /* if we've been inflating */
- {
-#ifdef MNG_INCLUDE_DISPLAY_PROCS
- mng_cleanup_rowproc (pData); /* cleanup row-processing, */
-#endif
- mngzlib_inflatefree (pData); /* cleanup inflate! */
- }
-#endif /* MNG_INCLUDE_ZLIB */
-
-#ifdef MNG_SUPPORT_READ
- if ((pData->bReading) && (!pData->bEOF))
- mng_process_eof (pData); /* cleanup app streaming */
- /* cleanup default read buffers */
- MNG_FREE (pData, pData->pReadbuf, pData->iReadbufsize);
- MNG_FREE (pData, pData->pLargebuf, pData->iLargebufsize);
- MNG_FREE (pData, pData->pSuspendbuf, pData->iSuspendbufsize);
-
- while (pData->pFirstpushdata) /* release any pushed data & chunks */
- mng_release_pushdata (pData);
- while (pData->pFirstpushchunk)
- mng_release_pushchunk (pData);
-#endif
-
-#ifdef MNG_SUPPORT_WRITE /* cleanup default write buffer */
- MNG_FREE (pData, pData->pWritebuf, pData->iWritebufsize);
-#endif
-
-#if defined(MNG_SUPPORT_READ) || defined(MNG_SUPPORT_WRITE)
- mng_drop_chunks (pData); /* drop stored chunks (if any) */
-#endif
-
-#ifdef MNG_SUPPORT_DISPLAY
- mng_drop_objects (pData, MNG_TRUE); /* drop stored objects (if any) */
-
-#ifndef MNG_SKIPCHUNK_iCCP
- if (pData->iGlobalProfilesize) /* drop global profile (if any) */
- MNG_FREEX (pData, pData->pGlobalProfile, pData->iGlobalProfilesize);
-#endif
-#endif
-
- pData->eSigtype = mng_it_unknown;
- pData->eImagetype = mng_it_unknown;
- pData->iWidth = 0; /* these are unknown yet */
- pData->iHeight = 0;
- pData->iTicks = 0;
- pData->iLayercount = 0;
- pData->iFramecount = 0;
- pData->iPlaytime = 0;
- pData->iSimplicity = 0;
- pData->iAlphadepth = 16; /* assume the worst! */
-
- pData->iImagelevel = 0; /* no image encountered */
-
- pData->iMagnify = 0; /* 1-to-1 display */
- pData->iOffsetx = 0; /* no offsets */
- pData->iOffsety = 0;
- pData->iCanvaswidth = 0; /* let the app decide during processheader */
- pData->iCanvasheight = 0;
- /* so far, so good */
- pData->iErrorcode = MNG_NOERROR;
- pData->iSeverity = 0;
- pData->iErrorx1 = 0;
- pData->iErrorx2 = 0;
- pData->zErrortext = MNG_NULL;
-
-#if defined(MNG_SUPPORT_READ) || defined(MNG_SUPPORT_WRITE)
- /* let's assume the best scenario */
-#ifndef MNG_NO_OLD_VERSIONS
- pData->bPreDraft48 = MNG_FALSE;
-#endif
- /* the unknown chunk */
- pData->iChunkname = MNG_UINT_HUH;
- pData->iChunkseq = 0;
- pData->pFirstchunk = MNG_NULL;
- pData->pLastchunk = MNG_NULL;
- /* nothing processed yet */
- pData->bHasheader = MNG_FALSE;
- pData->bHasMHDR = MNG_FALSE;
- pData->bHasIHDR = MNG_FALSE;
- pData->bHasBASI = MNG_FALSE;
- pData->bHasDHDR = MNG_FALSE;
-#ifdef MNG_INCLUDE_JNG
- pData->bHasJHDR = MNG_FALSE;
- pData->bHasJSEP = MNG_FALSE;
- pData->bHasJDAA = MNG_FALSE;
- pData->bHasJDAT = MNG_FALSE;
-#endif
- pData->bHasPLTE = MNG_FALSE;
- pData->bHasTRNS = MNG_FALSE;
- pData->bHasGAMA = MNG_FALSE;
- pData->bHasCHRM = MNG_FALSE;
- pData->bHasSRGB = MNG_FALSE;
- pData->bHasICCP = MNG_FALSE;
- pData->bHasBKGD = MNG_FALSE;
- pData->bHasIDAT = MNG_FALSE;
-
- pData->bHasSAVE = MNG_FALSE;
- pData->bHasBACK = MNG_FALSE;
- pData->bHasFRAM = MNG_FALSE;
- pData->bHasTERM = MNG_FALSE;
- pData->bHasLOOP = MNG_FALSE;
- /* there's no global stuff yet either */
- pData->bHasglobalPLTE = MNG_FALSE;
- pData->bHasglobalTRNS = MNG_FALSE;
- pData->bHasglobalGAMA = MNG_FALSE;
- pData->bHasglobalCHRM = MNG_FALSE;
- pData->bHasglobalSRGB = MNG_FALSE;
- pData->bHasglobalICCP = MNG_FALSE;
-
- pData->iDatawidth = 0; /* no IHDR/BASI/DHDR done yet */
- pData->iDataheight = 0;
- pData->iBitdepth = 0;
- pData->iColortype = 0;
- pData->iCompression = 0;
- pData->iFilter = 0;
- pData->iInterlace = 0;
-
-#ifdef MNG_INCLUDE_JNG
- pData->iJHDRcolortype = 0; /* no JHDR data */
- pData->iJHDRimgbitdepth = 0;
- pData->iJHDRimgcompression = 0;
- pData->iJHDRimginterlace = 0;
- pData->iJHDRalphabitdepth = 0;
- pData->iJHDRalphacompression = 0;
- pData->iJHDRalphafilter = 0;
- pData->iJHDRalphainterlace = 0;
-#endif
-
-#endif /* MNG_SUPPORT_READ || MNG_SUPPORT_WRITE */
-
-#ifdef MNG_SUPPORT_READ /* no reading done */
- pData->bReading = MNG_FALSE;
- pData->bHavesig = MNG_FALSE;
- pData->bEOF = MNG_FALSE;
- pData->iReadbufsize = 0;
- pData->pReadbuf = MNG_NULL;
-
- pData->iLargebufsize = 0;
- pData->pLargebuf = MNG_NULL;
-
- pData->iSuspendtime = 0;
- pData->bSuspended = MNG_FALSE;
- pData->iSuspendpoint = 0;
-
- pData->pSuspendbufnext = pData->pSuspendbuf;
- pData->iSuspendbufleft = 0;
-#endif /* MNG_SUPPORT_READ */
-
-#ifdef MNG_SUPPORT_WRITE /* no creating/writing done */
- pData->bCreating = MNG_FALSE;
- pData->bWriting = MNG_FALSE;
- pData->iFirstchunkadded = 0;
- pData->iWritebufsize = 0;
- pData->pWritebuf = MNG_NULL;
-#endif /* MNG_SUPPORT_WRITE */
-
-#ifdef MNG_SUPPORT_DISPLAY /* done nuttin' yet */
- pData->bDisplaying = MNG_FALSE;
- pData->iFrameseq = 0;
- pData->iLayerseq = 0;
- pData->iFrametime = 0;
-
- pData->iTotallayers = 0;
- pData->iTotalframes = 0;
- pData->iTotalplaytime = 0;
-
- pData->bSkipping = MNG_FALSE;
-
-#ifdef MNG_SUPPORT_DYNAMICMNG
- pData->bDynamic = MNG_FALSE;
- pData->bRunningevent = MNG_FALSE;
- pData->bStopafterseek = MNG_FALSE;
- pData->iEventx = 0;
- pData->iEventy = 0;
- pData->pLastmousemove = MNG_NULL;
-#endif
-
- pData->iRequestframe = 0;
- pData->iRequestlayer = 0;
- pData->iRequesttime = 0;
- pData->bSearching = MNG_FALSE;
-
- pData->bRestorebkgd = MNG_FALSE;
-
- pData->iRuntime = 0;
- pData->iSynctime = 0;
- pData->iStarttime = 0;
- pData->iEndtime = 0;
- pData->bRunning = MNG_FALSE;
- pData->bTimerset = MNG_FALSE;
- pData->iBreakpoint = 0;
- pData->bSectionwait = MNG_FALSE;
- pData->bFreezing = MNG_FALSE;
- pData->bResetting = MNG_FALSE;
- pData->bNeedrefresh = MNG_FALSE;
- pData->bMisplacedTERM = MNG_FALSE;
- pData->bOnlyfirstframe = MNG_FALSE;
- pData->iFramesafterTERM = 0;
- /* these don't exist yet */
- pData->pCurrentobj = MNG_NULL;
- pData->pCurraniobj = MNG_NULL;
- pData->pTermaniobj = MNG_NULL;
- pData->pLastclone = MNG_NULL;
- pData->pStoreobj = MNG_NULL;
- pData->pStorebuf = MNG_NULL;
- pData->pRetrieveobj = MNG_NULL;
- /* no saved data ! */
- pData->pSavedata = MNG_NULL;
-
- pData->iUpdateleft = 0; /* no region updated yet */
- pData->iUpdateright = 0;
- pData->iUpdatetop = 0;
- pData->iUpdatebottom = 0;
-
- pData->iPass = -1; /* interlacing stuff and temp buffers */
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = 0;
- pData->iSamplemul = 0;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = 0;
- pData->iRowmax = 0;
- pData->iFilterofs = 0;
- pData->iPixelofs = 1;
- pData->iLevel0 = 0;
- pData->iLevel1 = 0;
- pData->iLevel2 = 0;
- pData->iLevel3 = 0;
- pData->pWorkrow = MNG_NULL;
- pData->pPrevrow = MNG_NULL;
- pData->pRGBArow = MNG_NULL;
- pData->bIsRGBA16 = MNG_TRUE;
- pData->bIsOpaque = MNG_TRUE;
- pData->iFilterbpp = 1;
-
- pData->iSourcel = 0; /* always initialized just before */
- pData->iSourcer = 0; /* compositing the next layer */
- pData->iSourcet = 0;
- pData->iSourceb = 0;
- pData->iDestl = 0;
- pData->iDestr = 0;
- pData->iDestt = 0;
- pData->iDestb = 0;
- /* lists are empty */
- pData->pFirstimgobj = MNG_NULL;
- pData->pLastimgobj = MNG_NULL;
- pData->pFirstaniobj = MNG_NULL;
- pData->pLastaniobj = MNG_NULL;
-#ifdef MNG_SUPPORT_DYNAMICMNG
- pData->pFirstevent = MNG_NULL;
- pData->pLastevent = MNG_NULL;
-#endif
- /* no processing callbacks */
- pData->fDisplayrow = MNG_NULL;
- pData->fRestbkgdrow = MNG_NULL;
- pData->fCorrectrow = MNG_NULL;
- pData->fRetrieverow = MNG_NULL;
- pData->fStorerow = MNG_NULL;
- pData->fProcessrow = MNG_NULL;
- pData->fDifferrow = MNG_NULL;
- pData->fScalerow = MNG_NULL;
- pData->fDeltarow = MNG_NULL;
-#ifndef MNG_SKIPCHUNK_PAST
- pData->fFliprow = MNG_NULL;
- pData->fTilerow = MNG_NULL;
-#endif
- pData->fInitrowproc = MNG_NULL;
-
- pData->iPLTEcount = 0; /* no PLTE data */
-
-#ifndef MNG_SKIPCHUNK_DEFI
- pData->iDEFIobjectid = 0; /* no DEFI data */
- pData->bDEFIhasdonotshow = MNG_FALSE;
- pData->iDEFIdonotshow = 0;
- pData->bDEFIhasconcrete = MNG_FALSE;
- pData->iDEFIconcrete = 0;
- pData->bDEFIhasloca = MNG_FALSE;
- pData->iDEFIlocax = 0;
- pData->iDEFIlocay = 0;
- pData->bDEFIhasclip = MNG_FALSE;
- pData->iDEFIclipl = 0;
- pData->iDEFIclipr = 0;
- pData->iDEFIclipt = 0;
- pData->iDEFIclipb = 0;
-#endif
-
-#ifndef MNG_SKIPCHUNK_BACK
- pData->iBACKred = 0; /* no BACK data */
- pData->iBACKgreen = 0;
- pData->iBACKblue = 0;
- pData->iBACKmandatory = 0;
- pData->iBACKimageid = 0;
- pData->iBACKtile = 0;
-#endif
-
-#ifndef MNG_SKIPCHUNK_FRAM
- pData->iFRAMmode = 1; /* default global FRAM variables */
- pData->iFRAMdelay = 1;
- pData->iFRAMtimeout = 0x7fffffffl;
- pData->bFRAMclipping = MNG_FALSE;
- pData->iFRAMclipl = 0;
- pData->iFRAMclipr = 0;
- pData->iFRAMclipt = 0;
- pData->iFRAMclipb = 0;
-
- pData->iFramemode = 1; /* again for the current frame */
- pData->iFramedelay = 1;
- pData->iFrametimeout = 0x7fffffffl;
- pData->bFrameclipping = MNG_FALSE;
- pData->iFrameclipl = 0;
- pData->iFrameclipr = 0;
- pData->iFrameclipt = 0;
- pData->iFrameclipb = 0;
-
- pData->iNextdelay = 1;
-
- pData->bForcedelay = MNG_FALSE;
- pData->iAccumdelay = 0;
-#endif
-
-#ifndef MNG_SKIPCHUNK_SHOW
- pData->iSHOWmode = 0; /* no SHOW data */
- pData->iSHOWfromid = 0;
- pData->iSHOWtoid = 0;
- pData->iSHOWnextid = 0;
- pData->iSHOWskip = 0;
-#endif
-
- pData->iGlobalPLTEcount = 0; /* no global PLTE data */
-
- pData->iGlobalTRNSrawlen = 0; /* no global tRNS data */
-
- pData->iGlobalGamma = 0; /* no global gAMA data */
-
-#ifndef MNG_SKIPCHUNK_cHRM
- pData->iGlobalWhitepointx = 0; /* no global cHRM data */
- pData->iGlobalWhitepointy = 0;
- pData->iGlobalPrimaryredx = 0;
- pData->iGlobalPrimaryredy = 0;
- pData->iGlobalPrimarygreenx = 0;
- pData->iGlobalPrimarygreeny = 0;
- pData->iGlobalPrimarybluex = 0;
- pData->iGlobalPrimarybluey = 0;
-#endif
-
- pData->iGlobalRendintent = 0; /* no global sRGB data */
-
-#ifndef MNG_SKIPCHUNK_iCCP
- pData->iGlobalProfilesize = 0; /* no global iCCP data */
- pData->pGlobalProfile = MNG_NULL;
-#endif
-
-#ifndef MNG_SKIPCHUNK_bKGD
- pData->iGlobalBKGDred = 0; /* no global bKGD data */
- pData->iGlobalBKGDgreen = 0;
- pData->iGlobalBKGDblue = 0;
-#endif
- /* no delta-image */
-#ifndef MNG_NO_DELTA_PNG
- pData->pDeltaImage = MNG_NULL;
- pData->iDeltaImagetype = 0;
- pData->iDeltatype = 0;
- pData->iDeltaBlockwidth = 0;
- pData->iDeltaBlockheight = 0;
- pData->iDeltaBlockx = 0;
- pData->iDeltaBlocky = 0;
- pData->bDeltaimmediate = MNG_FALSE;
-
- pData->fDeltagetrow = MNG_NULL;
- pData->fDeltaaddrow = MNG_NULL;
- pData->fDeltareplacerow = MNG_NULL;
- pData->fDeltaputrow = MNG_NULL;
-
- pData->fPromoterow = MNG_NULL;
- pData->fPromBitdepth = MNG_NULL;
- pData->pPromBuf = MNG_NULL;
- pData->iPromColortype = 0;
- pData->iPromBitdepth = 0;
- pData->iPromFilltype = 0;
- pData->iPromWidth = 0;
- pData->pPromSrc = MNG_NULL;
- pData->pPromDst = MNG_NULL;
-#endif
-
-#ifndef MNG_SKIPCHUNK_MAGN
- pData->iMAGNfromid = 0;
- pData->iMAGNtoid = 0;
-#endif
-
-#ifndef MNG_SKIPCHUNK_PAST
- pData->iPastx = 0;
- pData->iPasty = 0;
-#endif
-
- pData->pLastseek = MNG_NULL;
-#endif
-
-#ifdef MNG_INCLUDE_ZLIB
- pData->bInflating = 0; /* no inflating or deflating */
- pData->bDeflating = 0; /* going on at the moment */
-#endif
-
-#ifdef MNG_SUPPORT_DISPLAY /* reset object 0 */
- mng_reset_objzero (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_RESET, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_cleanup (mng_handle* hHandle)
-{
- mng_datap pData; /* local vars */
-#ifndef MNG_INTERNAL_MEMMNGMT
- mng_memfree fFree;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)*hHandle), MNG_FN_CLEANUP, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (*hHandle) /* check validity handle */
- pData = ((mng_datap)(*hHandle)); /* and address main structure */
-
- mng_reset (*hHandle); /* do an implicit reset to cleanup most stuff */
-
-#ifdef MNG_SUPPORT_DISPLAY /* drop object 0 */
- mng_free_imageobject (pData, (mng_imagep)pData->pObjzero);
-#endif
-
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_FULL_CMS)
- if (pData->hProf2) /* output profile defined ? */
- mnglcms_freeprofile (pData->hProf2);
-
- if (pData->hProf3) /* sRGB profile defined ? */
- mnglcms_freeprofile (pData->hProf3);
-#endif
-
-#ifdef MNG_INCLUDE_ZLIB
- mngzlib_cleanup (pData); /* cleanup zlib stuff */
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)*hHandle), MNG_FN_CLEANUP, MNG_LC_CLEANUP)
-#endif
-
- pData->iMagic = 0; /* invalidate the actual memory */
-
-#ifdef MNG_INTERNAL_MEMMNGMT
- free ((void *)*hHandle); /* cleanup the data-structure */
-#else
- fFree = ((mng_datap)*hHandle)->fMemfree;
- fFree ((mng_ptr)*hHandle, sizeof (mng_data));
-#endif
-
- *hHandle = 0; /* wipe pointer to inhibit future use */
-
- return MNG_NOERROR; /* and we're done */
-}
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_retcode MNG_DECL mng_read (mng_handle hHandle)
-{
- mng_datap pData; /* local vars */
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_READ, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle and callbacks */
- pData = ((mng_datap)hHandle); /* and make it addressable */
-
-#ifndef MNG_INTERNAL_MEMMNGMT
- MNG_VALIDCB (hHandle, fMemalloc)
- MNG_VALIDCB (hHandle, fMemfree)
-#endif
-
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
- MNG_VALIDCB (hHandle, fOpenstream)
- MNG_VALIDCB (hHandle, fClosestream)
-#endif
- MNG_VALIDCB (hHandle, fReaddata)
-
-#ifdef MNG_SUPPORT_DISPLAY /* valid at this point ? */
- if ((pData->bReading) || (pData->bDisplaying))
-#else
- if (pData->bReading)
-#endif
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-
-#ifdef MNG_SUPPORT_WRITE
- if ((pData->bWriting) || (pData->bCreating))
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-#endif
-
- if (!pData->bCacheplayback) /* must store playback info to work!! */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-
- cleanup_errors (pData); /* cleanup previous errors */
-
- pData->bReading = MNG_TRUE; /* read only! */
-
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
- if (pData->fOpenstream && !pData->fOpenstream (hHandle))
- /* open it and start reading */
- iRetcode = MNG_APPIOERROR;
- else
-#endif
- iRetcode = mng_read_graphic (pData);
-
- if (pData->bEOF) /* already at EOF ? */
- {
- pData->bReading = MNG_FALSE; /* then we're no longer reading */
-
-#ifdef MNG_SUPPORT_DISPLAY
- mng_reset_rundata (pData); /* reset rundata */
-#endif
- }
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- if (pData->bSuspended) /* read suspension ? */
- {
- iRetcode = MNG_NEEDMOREDATA;
- pData->iSuspendtime = pData->fGettickcount ((mng_handle)pData);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_READ, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_retcode MNG_DECL mng_read_pushdata (mng_handle hHandle,
- mng_ptr pData,
- mng_size_t iLength,
- mng_bool bTakeownership)
-{
- mng_datap pMyData; /* local vars */
- mng_pushdatap pPush;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_READ_PUSHDATA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pMyData = ((mng_datap)hHandle); /* and make it addressable */
- /* create a containing buffer */
- iRetcode = make_pushbuffer (pMyData, pData, iLength, bTakeownership, &pPush);
- if (iRetcode)
- return iRetcode;
-
- if (pMyData->pLastpushdata) /* and update the buffer chain */
- pMyData->pLastpushdata->pNext = pPush;
- else
- pMyData->pFirstpushdata = pPush;
-
- pMyData->pLastpushdata = pPush;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_READ_PUSHDATA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_retcode MNG_DECL mng_read_pushsig (mng_handle hHandle,
- mng_imgtype eSigtype)
-{
- mng_datap pData; /* local vars */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_READ_PUSHSIG, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = ((mng_datap)hHandle); /* and make it addressable */
-
- if (pData->bHavesig) /* can we expect this call ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-
- pData->eSigtype = eSigtype;
- pData->bHavesig = MNG_TRUE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_READ_PUSHSIG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_retcode MNG_DECL mng_read_pushchunk (mng_handle hHandle,
- mng_ptr pChunk,
- mng_size_t iLength,
- mng_bool bTakeownership)
-{
- mng_datap pMyData; /* local vars */
- mng_pushdatap pPush;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_READ_PUSHCHUNK, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pMyData = ((mng_datap)hHandle); /* and make it addressable */
- /* create a containing buffer */
- iRetcode = make_pushbuffer (pMyData, pChunk, iLength, bTakeownership, &pPush);
- if (iRetcode)
- return iRetcode;
-
- if (pMyData->pLastpushchunk) /* and update the buffer chain */
- pMyData->pLastpushchunk->pNext = pPush;
- else
- pMyData->pFirstpushchunk = pPush;
-
- pMyData->pLastpushchunk = pPush;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_READ_PUSHCHUNK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_retcode MNG_DECL mng_read_resume (mng_handle hHandle)
-{
- mng_datap pData; /* local vars */
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_READ_RESUME, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = ((mng_datap)hHandle); /* and make it addressable */
- /* can we expect this call ? */
- if ((!pData->bReading) || (!pData->bSuspended))
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-
- cleanup_errors (pData); /* cleanup previous errors */
-
- pData->bSuspended = MNG_FALSE; /* reset the flag */
-
-#ifdef MNG_SUPPORT_DISPLAY /* re-synchronize ? */
- if ((pData->bDisplaying) && (pData->bRunning))
- pData->iSynctime = pData->iSynctime - pData->iSuspendtime +
- pData->fGettickcount (hHandle);
-#endif
-
- iRetcode = mng_read_graphic (pData); /* continue reading now */
-
- if (pData->bEOF) /* at EOF ? */
- {
- pData->bReading = MNG_FALSE; /* then we're no longer reading */
-
-#ifdef MNG_SUPPORT_DISPLAY
- mng_reset_rundata (pData); /* reset rundata */
-#endif
- }
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- if (pData->bSuspended) /* read suspension ? */
- {
- iRetcode = MNG_NEEDMOREDATA;
- pData->iSuspendtime = pData->fGettickcount ((mng_handle)pData);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_READ_RESUME, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_WRITE
-mng_retcode MNG_DECL mng_write (mng_handle hHandle)
-{
- mng_datap pData;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_WRITE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle and callbacks */
- pData = ((mng_datap)hHandle); /* and make it addressable */
-
-#ifndef MNG_INTERNAL_MEMMNGMT
- MNG_VALIDCB (hHandle, fMemalloc)
- MNG_VALIDCB (hHandle, fMemfree)
-#endif
-
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
- MNG_VALIDCB (hHandle, fOpenstream)
- MNG_VALIDCB (hHandle, fClosestream)
-#endif
- MNG_VALIDCB (hHandle, fWritedata)
-
-#ifdef MNG_SUPPORT_READ
- if (pData->bReading) /* valid at this point ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-#endif
-
- cleanup_errors (pData); /* cleanup previous errors */
-
- iRetcode = mng_write_graphic (pData);/* do the write */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_WRITE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_WRITE */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_WRITE
-mng_retcode MNG_DECL mng_create (mng_handle hHandle)
-{
- mng_datap pData;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_CREATE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle and callbacks */
- pData = ((mng_datap)hHandle); /* and make it addressable */
-
-#ifndef MNG_INTERNAL_MEMMNGMT
- MNG_VALIDCB (hHandle, fMemalloc)
- MNG_VALIDCB (hHandle, fMemfree)
-#endif
-
-#ifdef MNG_SUPPORT_READ
- if (pData->bReading) /* valid at this point ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-#endif
-
- if ((pData->bWriting) || (pData->bCreating))
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-
- cleanup_errors (pData); /* cleanup previous errors */
-
- iRetcode = mng_reset (hHandle); /* clear any previous stuff */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- pData->bCreating = MNG_TRUE; /* indicate we're creating a new file */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_CREATE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_WRITE */
-
-/* ************************************************************************** */
-
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_SUPPORT_READ)
-mng_retcode MNG_DECL mng_readdisplay (mng_handle hHandle)
-{
- mng_datap pData; /* local vars */
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_READDISPLAY, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle and callbacks */
- pData = ((mng_datap)hHandle); /* and make it addressable */
-
-#ifndef MNG_INTERNAL_MEMMNGMT
- MNG_VALIDCB (hHandle, fMemalloc)
- MNG_VALIDCB (hHandle, fMemfree)
-#endif
-
- MNG_VALIDCB (hHandle, fReaddata)
- MNG_VALIDCB (hHandle, fGetcanvasline)
- MNG_VALIDCB (hHandle, fRefresh)
- MNG_VALIDCB (hHandle, fGettickcount)
- MNG_VALIDCB (hHandle, fSettimer)
- /* valid at this point ? */
- if ((pData->bReading) || (pData->bDisplaying))
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-
-#ifdef MNG_SUPPORT_WRITE
- if ((pData->bWriting) || (pData->bCreating))
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-#endif
-
- cleanup_errors (pData); /* cleanup previous errors */
-
- pData->bReading = MNG_TRUE; /* read & display! */
- pData->bDisplaying = MNG_TRUE;
- pData->bRunning = MNG_TRUE;
- pData->iFrameseq = 0;
- pData->iLayerseq = 0;
- pData->iFrametime = 0;
- pData->iRequestframe = 0;
- pData->iRequestlayer = 0;
- pData->iRequesttime = 0;
- pData->bSearching = MNG_FALSE;
- pData->iRuntime = 0;
- pData->iSynctime = pData->fGettickcount (hHandle);
- pData->iSuspendtime = 0;
- pData->iStarttime = pData->iSynctime;
- pData->iEndtime = 0;
-
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
- if (pData->fOpenstream && !pData->fOpenstream (hHandle))
- /* open it and start reading */
- iRetcode = MNG_APPIOERROR;
- else
-#endif
- iRetcode = mng_read_graphic (pData);
-
- if (pData->bEOF) /* already at EOF ? */
- {
- pData->bReading = MNG_FALSE; /* then we're no longer reading */
- mng_drop_invalid_objects (pData); /* drop invalidly stored objects */
- }
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- if (pData->bSuspended) /* read suspension ? */
- {
- iRetcode = MNG_NEEDMOREDATA;
- pData->iSuspendtime = pData->fGettickcount ((mng_handle)pData);
- }
- else
- if (pData->bTimerset) /* indicate timer break ? */
- iRetcode = MNG_NEEDTIMERWAIT;
- else
- if (pData->bSectionwait) /* indicate section break ? */
- iRetcode = MNG_NEEDSECTIONWAIT;
- else
- { /* no breaks = end of run */
- pData->bRunning = MNG_FALSE;
-
- if (pData->bFreezing) /* dynamic MNG reached SEEK ? */
- pData->bFreezing = MNG_FALSE; /* reset it ! */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_READDISPLAY, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif /* MNG_SUPPORT_DISPLAY && MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_retcode MNG_DECL mng_display (mng_handle hHandle)
-{
- mng_datap pData; /* local vars */
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_DISPLAY, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle and callbacks */
- pData = ((mng_datap)hHandle); /* and make it addressable */
-
-#ifndef MNG_INTERNAL_MEMMNGMT
- MNG_VALIDCB (hHandle, fMemalloc)
- MNG_VALIDCB (hHandle, fMemfree)
-#endif
-
- MNG_VALIDCB (hHandle, fGetcanvasline)
- MNG_VALIDCB (hHandle, fRefresh)
- MNG_VALIDCB (hHandle, fGettickcount)
- MNG_VALIDCB (hHandle, fSettimer)
-
- if (pData->bDisplaying) /* valid at this point ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-
-#ifdef MNG_SUPPORT_READ
- if (pData->bReading)
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-#endif
-
-#ifdef MNG_SUPPORT_WRITE
- if ((pData->bWriting) || (pData->bCreating))
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-#endif
-
- cleanup_errors (pData); /* cleanup previous errors */
-
- pData->bDisplaying = MNG_TRUE; /* display! */
- pData->bRunning = MNG_TRUE;
- pData->iFrameseq = 0;
- pData->iLayerseq = 0;
- pData->iFrametime = 0;
- pData->iRequestframe = 0;
- pData->iRequestlayer = 0;
- pData->iRequesttime = 0;
- pData->bSearching = MNG_FALSE;
- pData->iRuntime = 0;
- pData->iSynctime = pData->fGettickcount (hHandle);
-#ifdef MNG_SUPPORT_READ
- pData->iSuspendtime = 0;
-#endif
- pData->iStarttime = pData->iSynctime;
- pData->iEndtime = 0;
- pData->pCurraniobj = pData->pFirstaniobj;
- /* go do it */
- iRetcode = mng_process_display (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- if (pData->bTimerset) /* indicate timer break ? */
- iRetcode = MNG_NEEDTIMERWAIT;
- else
- { /* no breaks = end of run */
- pData->bRunning = MNG_FALSE;
-
- if (pData->bFreezing) /* dynamic MNG reached SEEK ? */
- pData->bFreezing = MNG_FALSE; /* reset it ! */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_DISPLAY, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_retcode MNG_DECL mng_display_resume (mng_handle hHandle)
-{
- mng_datap pData; /* local vars */
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_DISPLAY_RESUME, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = ((mng_datap)hHandle); /* and make it addressable */
-
- if (!pData->bDisplaying) /* can we expect this call ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-
- cleanup_errors (pData); /* cleanup previous errors */
- /* was it running ? */
- if ((pData->bRunning) || (pData->bReading))
- { /* are we expecting this call ? */
- if ((pData->bTimerset) || (pData->bSuspended) || (pData->bSectionwait))
- {
- pData->bTimerset = MNG_FALSE; /* reset the flags */
- pData->bSectionwait = MNG_FALSE;
-
-#ifdef MNG_SUPPORT_READ
- if (pData->bReading) /* set during read&display ? */
- {
- if (pData->bSuspended) /* calculate proper synchronization */
- pData->iSynctime = pData->iSynctime - pData->iSuspendtime +
- pData->fGettickcount (hHandle);
- else
- pData->iSynctime = pData->fGettickcount (hHandle);
-
- pData->bSuspended = MNG_FALSE; /* now reset this flag */
- /* and continue reading */
- iRetcode = mng_read_graphic (pData);
-
- if (pData->bEOF) /* already at EOF ? */
- {
- pData->bReading = MNG_FALSE; /* then we're no longer reading */
- /* drop invalidly stored objects */
- mng_drop_invalid_objects (pData);
- }
- }
- else
-#endif /* MNG_SUPPORT_READ */
- { /* synchronize timing */
- pData->iSynctime = pData->fGettickcount (hHandle);
- /* resume display processing */
- iRetcode = mng_process_display (pData);
- }
- }
- else
- {
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
- }
- }
- else
- { /* synchronize timing */
- pData->iSynctime = pData->fGettickcount (hHandle);
- pData->bRunning = MNG_TRUE; /* it's restarted again ! */
- /* resume display processing */
- iRetcode = mng_process_display (pData);
- }
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- if (pData->bSuspended) /* read suspension ? */
- {
- iRetcode = MNG_NEEDMOREDATA;
- pData->iSuspendtime = pData->fGettickcount ((mng_handle)pData);
- }
- else
- if (pData->bTimerset) /* indicate timer break ? */
- iRetcode = MNG_NEEDTIMERWAIT;
- else
- if (pData->bSectionwait) /* indicate section break ? */
- iRetcode = MNG_NEEDSECTIONWAIT;
- else
- { /* no breaks = end of run */
- pData->bRunning = MNG_FALSE;
-
- if (pData->bFreezing) /* trying to freeze ? */
- pData->bFreezing = MNG_FALSE; /* then we're there */
-
- if (pData->bResetting) /* trying to reset as well ? */
- { /* full stop!!! */
- pData->bDisplaying = MNG_FALSE;
-
- iRetcode = mng_reset_rundata (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_DISPLAY_RESUME, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_retcode MNG_DECL mng_display_freeze (mng_handle hHandle)
-{
- mng_datap pData;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_DISPLAY_FREEZE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = ((mng_datap)hHandle); /* and make it addressable */
- /* can we expect this call ? */
- if ((!pData->bDisplaying) || (pData->bReading))
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-
- cleanup_errors (pData); /* cleanup previous errors */
-
- if (pData->bRunning) /* is it running ? */
- {
- mng_retcode iRetcode;
-
- pData->bFreezing = MNG_TRUE; /* indicate we need to freeze */
- /* continue "normal" processing */
- iRetcode = mng_display_resume (hHandle);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_DISPLAY_FREEZE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_retcode MNG_DECL mng_display_reset (mng_handle hHandle)
-{
- mng_datap pData;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_DISPLAY_RESET, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = ((mng_datap)hHandle); /* and make it addressable */
- /* can we expect this call ? */
- if ((!pData->bDisplaying) || (pData->bReading))
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-
- if (!pData->bCacheplayback) /* must store playback info to work!! */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-
- cleanup_errors (pData); /* cleanup previous errors */
-
- if (pData->bRunning) /* is it running ? */
- {
- pData->bFreezing = MNG_TRUE; /* indicate we need to freeze */
- pData->bResetting = MNG_TRUE; /* indicate we're about to reset too */
- /* continue normal processing ? */
- iRetcode = mng_display_resume (hHandle);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- else
- { /* full stop!!! */
- pData->bDisplaying = MNG_FALSE;
-
- iRetcode = mng_reset_rundata (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_DISPLAY_RESET, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifndef MNG_NO_DISPLAY_GO_SUPPORTED
-mng_retcode MNG_DECL mng_display_goframe (mng_handle hHandle,
- mng_uint32 iFramenr)
-{
- mng_datap pData;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_DISPLAY_GOFRAME, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = ((mng_datap)hHandle); /* and make it addressable */
-
- if (pData->eImagetype != mng_it_mng) /* is it an animation ? */
- MNG_ERROR (pData, MNG_NOTANANIMATION);
- /* can we expect this call ? */
- if ((!pData->bDisplaying) || (pData->bRunning))
- MNG_ERROR ((mng_datap)hHandle, MNG_FUNCTIONINVALID);
-
- if (!pData->bCacheplayback) /* must store playback info to work!! */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-
- if (iFramenr > pData->iTotalframes) /* is the parameter within bounds ? */
- MNG_ERROR (pData, MNG_FRAMENRTOOHIGH);
- /* within MHDR bounds ? */
- if ((pData->iFramecount) && (iFramenr > pData->iFramecount))
- MNG_WARNING (pData, MNG_FRAMENRTOOHIGH);
-
- cleanup_errors (pData); /* cleanup previous errors */
-
- if (pData->iFrameseq > iFramenr) /* search from current or go back to start ? */
- {
- iRetcode = mng_reset_rundata (pData);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-
- if (iFramenr)
- {
- pData->iRequestframe = iFramenr; /* go find the requested frame then */
- iRetcode = mng_process_display (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- pData->bTimerset = MNG_FALSE; /* reset just to be safe */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_DISPLAY_GOFRAME, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifndef MNG_NO_DISPLAY_GO_SUPPORTED
-mng_retcode MNG_DECL mng_display_golayer (mng_handle hHandle,
- mng_uint32 iLayernr)
-{
- mng_datap pData;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_DISPLAY_GOLAYER, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = ((mng_datap)hHandle); /* and make it addressable */
-
- if (pData->eImagetype != mng_it_mng) /* is it an animation ? */
- MNG_ERROR (pData, MNG_NOTANANIMATION);
- /* can we expect this call ? */
- if ((!pData->bDisplaying) || (pData->bRunning))
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-
- if (!pData->bCacheplayback) /* must store playback info to work!! */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-
- if (iLayernr > pData->iTotallayers) /* is the parameter within bounds ? */
- MNG_ERROR (pData, MNG_LAYERNRTOOHIGH);
- /* within MHDR bounds ? */
- if ((pData->iLayercount) && (iLayernr > pData->iLayercount))
- MNG_WARNING (pData, MNG_LAYERNRTOOHIGH);
-
- cleanup_errors (pData); /* cleanup previous errors */
-
- if (pData->iLayerseq > iLayernr) /* search from current or go back to start ? */
- {
- iRetcode = mng_reset_rundata (pData);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-
- if (iLayernr)
- {
- pData->iRequestlayer = iLayernr; /* go find the requested layer then */
- iRetcode = mng_process_display (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- pData->bTimerset = MNG_FALSE; /* reset just to be safe */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_DISPLAY_GOLAYER, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifndef MNG_NO_DISPLAY_GO_SUPPORTED
-mng_retcode MNG_DECL mng_display_gotime (mng_handle hHandle,
- mng_uint32 iPlaytime)
-{
- mng_datap pData;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_DISPLAY_GOTIME, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = ((mng_datap)hHandle); /* and make it addressable */
-
- if (pData->eImagetype != mng_it_mng) /* is it an animation ? */
- MNG_ERROR (pData, MNG_NOTANANIMATION);
- /* can we expect this call ? */
- if ((!pData->bDisplaying) || (pData->bRunning))
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-
- if (!pData->bCacheplayback) /* must store playback info to work!! */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
- /* is the parameter within bounds ? */
- if (iPlaytime > pData->iTotalplaytime)
- MNG_ERROR (pData, MNG_PLAYTIMETOOHIGH);
- /* within MHDR bounds ? */
- if ((pData->iPlaytime) && (iPlaytime > pData->iPlaytime))
- MNG_WARNING (pData, MNG_PLAYTIMETOOHIGH);
-
- cleanup_errors (pData); /* cleanup previous errors */
-
- if (pData->iFrametime > iPlaytime) /* search from current or go back to start ? */
- {
- iRetcode = mng_reset_rundata (pData);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-
- if (iPlaytime)
- {
- pData->iRequesttime = iPlaytime; /* go find the requested playtime then */
- iRetcode = mng_process_display (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- pData->bTimerset = MNG_FALSE; /* reset just to be safe */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_DISPLAY_GOTIME, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#if defined(MNG_SUPPORT_DISPLAY) && defined(MNG_SUPPORT_DYNAMICMNG)
-mng_retcode MNG_DECL mng_trapevent (mng_handle hHandle,
- mng_uint8 iEventtype,
- mng_int32 iX,
- mng_int32 iY)
-{
- mng_datap pData;
- mng_eventp pEvent;
- mng_bool bFound = MNG_FALSE;
- mng_retcode iRetcode;
- mng_imagep pImage;
- mng_uint8p pPixel;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_TRAPEVENT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = ((mng_datap)hHandle); /* and make it addressable */
-
- if (pData->eImagetype != mng_it_mng) /* is it an animation ? */
- MNG_ERROR (pData, MNG_NOTANANIMATION);
-
- if (!pData->bDisplaying) /* can we expect this call ? */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-
- if (!pData->bCacheplayback) /* must store playback info to work!! */
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
- /* let's find a matching event object */
- pEvent = (mng_eventp)pData->pFirstevent;
-
- while ((pEvent) && (!bFound))
- { /* matching eventtype ? */
- if (pEvent->iEventtype == iEventtype)
- {
- switch (pEvent->iMasktype) /* check X/Y on basis of masktype */
- {
- case MNG_MASK_NONE : /* no mask is easy */
- {
- bFound = MNG_TRUE;
- break;
- }
-
- case MNG_MASK_BOX : /* inside the given box ? */
- { /* right- and bottom-border don't count ! */
- if ((iX >= pEvent->iLeft) && (iX < pEvent->iRight) &&
- (iY >= pEvent->iTop) && (iY < pEvent->iBottom))
- bFound = MNG_TRUE;
- break;
- }
-
- case MNG_MASK_OBJECT : /* non-zero pixel in the image object ? */
- {
- pImage = mng_find_imageobject (pData, pEvent->iObjectid);
- /* valid image ? */
- if ((pImage) && (pImage->pImgbuf->iBitdepth <= 8) &&
- ((pImage->pImgbuf->iColortype == 0) || (pImage->pImgbuf->iColortype == 3)) &&
- ((mng_int32)pImage->pImgbuf->iWidth > iX) &&
- ((mng_int32)pImage->pImgbuf->iHeight > iY))
- {
- pPixel = pImage->pImgbuf->pImgdata + ((pImage->pImgbuf->iWidth * iY) + iX);
-
- if (*pPixel) /* non-zero ? */
- bFound = MNG_TRUE;
- }
-
- break;
- }
-
- case MNG_MASK_OBJECTIX : /* pixel in the image object matches index ? */
- {
- pImage = mng_find_imageobject (pData, pEvent->iObjectid);
- /* valid image ? */
- if ((pImage) && (pImage->pImgbuf->iBitdepth <= 8) &&
- ((pImage->pImgbuf->iColortype == 0) || (pImage->pImgbuf->iColortype == 3)) &&
- ((mng_int32)pImage->pImgbuf->iWidth > iX) && (iX >= 0) &&
- ((mng_int32)pImage->pImgbuf->iHeight > iY) && (iY >= 0))
- {
- pPixel = pImage->pImgbuf->pImgdata + ((pImage->pImgbuf->iWidth * iY) + iX);
- /* matching index ? */
- if (*pPixel == pEvent->iIndex)
- bFound = MNG_TRUE;
- }
-
- break;
- }
-
- case MNG_MASK_BOXOBJECT : /* non-zero pixel in the image object ? */
- {
- mng_int32 iTempx = iX - pEvent->iLeft;
- mng_int32 iTempy = iY - pEvent->iTop;
-
- pImage = mng_find_imageobject (pData, pEvent->iObjectid);
- /* valid image ? */
- if ((pImage) && (pImage->pImgbuf->iBitdepth <= 8) &&
- ((pImage->pImgbuf->iColortype == 0) || (pImage->pImgbuf->iColortype == 3)) &&
- (iTempx < (mng_int32)pImage->pImgbuf->iWidth) &&
- (iTempx >= 0) && (iX < pEvent->iRight) &&
- (iTempy < (mng_int32)pImage->pImgbuf->iHeight) &&
- (iTempy >= 0) && (iY < pEvent->iBottom))
- {
- pPixel = pImage->pImgbuf->pImgdata + ((pImage->pImgbuf->iWidth * iTempy) + iTempx);
-
- if (*pPixel) /* non-zero ? */
- bFound = MNG_TRUE;
- }
-
- break;
- }
-
- case MNG_MASK_BOXOBJECTIX : /* pixel in the image object matches index ? */
- {
- mng_int32 iTempx = iX - pEvent->iLeft;
- mng_int32 iTempy = iY - pEvent->iTop;
-
- pImage = mng_find_imageobject (pData, pEvent->iObjectid);
- /* valid image ? */
- if ((pImage) && (pImage->pImgbuf->iBitdepth <= 8) &&
- ((pImage->pImgbuf->iColortype == 0) || (pImage->pImgbuf->iColortype == 3)) &&
- (iTempx < (mng_int32)pImage->pImgbuf->iWidth) &&
- (iTempx >= 0) && (iX < pEvent->iRight) &&
- (iTempy < (mng_int32)pImage->pImgbuf->iHeight) &&
- (iTempy >= 0) && (iY < pEvent->iBottom))
- {
- pPixel = pImage->pImgbuf->pImgdata + ((pImage->pImgbuf->iWidth * iTempy) + iTempx);
- /* matching index ? */
- if (*pPixel == pEvent->iIndex)
- bFound = MNG_TRUE;
- }
-
- break;
- }
-
- }
- }
-
- if (!bFound) /* try the next one */
- pEvent = (mng_eventp)pEvent->sHeader.pNext;
- }
- /* found one that's not the last mousemove ? */
- if ((pEvent) && ((mng_objectp)pEvent != pData->pLastmousemove))
- { /* can we start an event process now ? */
- if ((!pData->bReading) && (!pData->bRunning))
- {
- pData->iEventx = iX; /* save coordinates */
- pData->iEventy = iY;
- /* do it then ! */
- iRetcode = pEvent->sHeader.fProcess (pData, pEvent);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* remember last mousemove event */
- if (pEvent->iEventtype == MNG_EVENT_MOUSEMOVE)
- pData->pLastmousemove = (mng_objectp)pEvent;
- else
- pData->pLastmousemove = MNG_NULL;
- }
- else
- {
-
- /* TODO: store unprocessed events or not ??? */
-
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_TRAPEVENT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_getlasterror (mng_handle hHandle,
- mng_int8* iSeverity,
- mng_chunkid* iChunkname,
- mng_uint32* iChunkseq,
- mng_int32* iExtra1,
- mng_int32* iExtra2,
- mng_pchar* zErrortext)
-{
- mng_datap pData; /* local vars */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETLASTERROR, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle) /* check validity handle */
- pData = ((mng_datap)hHandle); /* and make it addressable */
-
- *iSeverity = pData->iSeverity; /* return the appropriate fields */
-
-#if defined(MNG_SUPPORT_READ) || defined(MNG_SUPPORT_WRITE)
- *iChunkname = pData->iChunkname;
- *iChunkseq = pData->iChunkseq;
-#else
- *iChunkname = MNG_UINT_HUH;
- *iChunkseq = 0;
-#endif
-
- *iExtra1 = pData->iErrorx1;
- *iExtra2 = pData->iErrorx2;
- *zErrortext = pData->zErrortext;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GETLASTERROR, MNG_LC_END);
-#endif
-
- return pData->iErrorcode; /* and the errorcode */
-}
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
-
diff --git a/src/3rdparty/libmng/libmng_jpeg.c b/src/3rdparty/libmng/libmng_jpeg.c
deleted file mode 100644
index 5042e1d550..0000000000
--- a/src/3rdparty/libmng/libmng_jpeg.c
+++ /dev/null
@@ -1,1088 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_jpeg.c copyright (c) 2000-2004 G.Juyn * */
-/* * version : 1.0.9 * */
-/* * * */
-/* * purpose : JPEG library interface (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of the JPEG library interface * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * * */
-/* * 0.5.2 - 05/22/2000 - G.Juyn * */
-/* * - implemented all the JNG routines * */
-/* * * */
-/* * 0.5.3 - 06/17/2000 - G.Juyn * */
-/* * - added tracing of JPEG calls * */
-/* * 0.5.3 - 06/24/2000 - G.Juyn * */
-/* * - fixed inclusion of IJG read/write code * */
-/* * 0.5.3 - 06/29/2000 - G.Juyn * */
-/* * - fixed some 64-bit warnings * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added support for JDAA * */
-/* * * */
-/* * 1.0.1 - 04/19/2001 - G.Juyn * */
-/* * - added export of JPEG functions for DLL * */
-/* * 1.0.1 - 04/22/2001 - G.Juyn * */
-/* * - fixed memory-leaks (Thanks Gregg!) * */
-/* * * */
-/* * 1.0.4 - 06/22/2002 - G.Juyn * */
-/* * - B526138 - returned IJGSRC6B calling convention to * */
-/* * default for MSVC * */
-/* * * */
-/* * 1.0.5 - 24/02/2003 - G.Juyn * */
-/* * - B683152 - libjpeg suspension not always honored correctly* */
-/* * * */
-/* * 1.0.6 - 03/04/2003 - G.Juyn * */
-/* * - fixed some compiler-warnings * */
-/* * * */
-/* * 1.0.8 - 08/01/2004 - G.Juyn * */
-/* * - added support for 3+byte pixelsize for JPEG's * */
-/* * * */
-/* * 1.0.9 - 12/20/2004 - G.Juyn * */
-/* * - cleaned up macro-invocations (thanks to D. Airlie) * */
-/* * * */
-/* ************************************************************************** */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-#include "libmng_memory.h"
-#include "libmng_pixels.h"
-#include "libmng_jpeg.h"
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-
-#if defined(MNG_INCLUDE_JNG) && defined(MNG_INCLUDE_DISPLAY_PROCS)
-
-/* ************************************************************************** */
-/* * * */
-/* * Local IJG callback routines (source-manager, error-manager and such) * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_IJG6B
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG_READ
-#ifdef MNG_DEFINE_JPEG_STDCALL
-void MNG_DECL mng_init_source (j_decompress_ptr cinfo)
-#else
-void mng_init_source (j_decompress_ptr cinfo)
-#endif
-{
- return; /* nothing needed */
-}
-#endif /* MNG_INCLUDE_JNG_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG_READ
-#ifdef MNG_DEFINE_JPEG_STDCALL
-boolean MNG_DECL mng_fill_input_buffer (j_decompress_ptr cinfo)
-#else
-boolean mng_fill_input_buffer (j_decompress_ptr cinfo)
-#endif
-{
- return FALSE; /* force IJG routine to return to caller */
-}
-#endif /* MNG_INCLUDE_JNG_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG_READ
-#ifdef MNG_DEFINE_JPEG_STDCALL
-void MNG_DECL mng_skip_input_data (j_decompress_ptr cinfo, long num_bytes)
-#else
-void mng_skip_input_data (j_decompress_ptr cinfo, long num_bytes)
-#endif
-{
- if (num_bytes > 0) /* ignore fony calls */
- { /* address my generic structure */
- mng_datap pData = (mng_datap)cinfo->client_data;
- /* address source manager */
- mngjpeg_sourcep pSrc = pData->pJPEGdinfo->src;
- /* problem scenario ? */
- if (pSrc->bytes_in_buffer < (size_t)num_bytes)
- { /* tell the boss we need to skip some data! */
- pData->iJPEGtoskip = (mng_uint32)((size_t)num_bytes - pSrc->bytes_in_buffer);
-
- pSrc->bytes_in_buffer = 0; /* let the JPEG lib suspend */
- pSrc->next_input_byte = MNG_NULL;
- }
- else
- { /* simply advance in the buffer */
- pSrc->bytes_in_buffer -= num_bytes;
- pSrc->next_input_byte += num_bytes;
- }
- }
-
- return;
-}
-#endif /* MNG_INCLUDE_JNG_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG_READ
-#ifdef MNG_DEFINE_JPEG_STDCALL
-void MNG_DECL mng_skip_input_data2 (j_decompress_ptr cinfo, long num_bytes)
-#else
-void mng_skip_input_data2 (j_decompress_ptr cinfo, long num_bytes)
-#endif
-{
- if (num_bytes > 0) /* ignore fony calls */
- { /* address my generic structure */
- mng_datap pData = (mng_datap)cinfo->client_data;
- /* address source manager */
- mngjpeg_sourcep pSrc = pData->pJPEGdinfo2->src;
- /* problem scenario ? */
- if (pSrc->bytes_in_buffer < (size_t)num_bytes)
- { /* tell the boss we need to skip some data! */
- pData->iJPEGtoskip2 = (mng_uint32)((size_t)num_bytes - pSrc->bytes_in_buffer);
-
- pSrc->bytes_in_buffer = 0; /* let the JPEG lib suspend */
- pSrc->next_input_byte = MNG_NULL;
- }
- else
- { /* simply advance in the buffer */
- pSrc->bytes_in_buffer -= num_bytes;
- pSrc->next_input_byte += num_bytes;
- }
- }
-
- return;
-}
-#endif /* MNG_INCLUDE_JNG_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG_READ
-#ifdef MNG_DEFINE_JPEG_STDCALL
-void MNG_DECL mng_term_source (j_decompress_ptr cinfo)
-#else
-void mng_term_source (j_decompress_ptr cinfo)
-#endif
-{
- return; /* nothing needed */
-}
-#endif /* MNG_INCLUDE_JNG_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_USE_SETJMP
-#ifdef MNG_DEFINE_JPEG_STDCALL
-void MNG_DECL mng_error_exit (j_common_ptr cinfo)
-#else
-void mng_error_exit (j_common_ptr cinfo)
-#endif
-{ /* address my generic structure */
- mng_datap pData = (mng_datap)cinfo->client_data;
-
-#ifdef MNG_ERROR_TELLTALE /* fill the message text ??? */
- (*cinfo->err->output_message) (cinfo);
-#endif
- /* return to the point of no return... */
- longjmp (pData->sErrorbuf, cinfo->err->msg_code);
-}
-#endif /* MNG_USE_SETJMP */
-
-/* ************************************************************************** */
-
-#ifdef MNG_USE_SETJMP
-#ifdef MNG_DEFINE_JPEG_STDCALL
-void MNG_DECL mng_output_message (j_common_ptr cinfo)
-#else
-void mng_output_message (j_common_ptr cinfo)
-#endif
-{
- return; /* just do nothing ! */
-}
-#endif /* MNG_USE_SETJMP */
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_IJG6B */
-
-/* ************************************************************************** */
-/* * * */
-/* * Global JPEG routines * */
-/* * * */
-/* ************************************************************************** */
-
-mng_retcode mngjpeg_initialize (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_INITIALIZE, MNG_LC_START);
-#endif
- /* allocate space for JPEG structures if necessary */
-#ifdef MNG_INCLUDE_JNG_READ
- if (pData->pJPEGderr == MNG_NULL)
- MNG_ALLOC (pData, pData->pJPEGderr, sizeof (mngjpeg_error ));
- if (pData->pJPEGdsrc == MNG_NULL)
- MNG_ALLOC (pData, pData->pJPEGdsrc, sizeof (mngjpeg_source));
- if (pData->pJPEGdinfo == MNG_NULL)
- MNG_ALLOC (pData, pData->pJPEGdinfo, sizeof (mngjpeg_decomp));
- /* enable reverse addressing */
- pData->pJPEGdinfo->client_data = pData;
-
- if (pData->pJPEGderr2 == MNG_NULL)
- MNG_ALLOC (pData, pData->pJPEGderr2, sizeof (mngjpeg_error ));
- if (pData->pJPEGdsrc2 == MNG_NULL)
- MNG_ALLOC (pData, pData->pJPEGdsrc2, sizeof (mngjpeg_source));
- if (pData->pJPEGdinfo2 == MNG_NULL)
- MNG_ALLOC (pData, pData->pJPEGdinfo2, sizeof (mngjpeg_decomp));
- /* enable reverse addressing */
- pData->pJPEGdinfo2->client_data = pData;
-#endif
-
-#ifdef MNG_INCLUDE_JNG_WRITE
- if (pData->pJPEGcerr == MNG_NULL)
- MNG_ALLOC (pData, pData->pJPEGcerr, sizeof (mngjpeg_error ));
- if (pData->pJPEGcinfo == MNG_NULL)
- MNG_ALLOC (pData, pData->pJPEGcinfo, sizeof (mngjpeg_comp ));
- /* enable reverse addressing */
- pData->pJPEGcinfo->client_data = pData;
-#endif
-
- if (pData->pJPEGbuf == MNG_NULL) /* initialize temporary buffers */
- {
- pData->iJPEGbufmax = MNG_JPEG_MAXBUF;
- MNG_ALLOC (pData, pData->pJPEGbuf, pData->iJPEGbufmax);
- }
-
- if (pData->pJPEGbuf2 == MNG_NULL)
- {
- pData->iJPEGbufmax2 = MNG_JPEG_MAXBUF;
- MNG_ALLOC (pData, pData->pJPEGbuf2, pData->iJPEGbufmax2);
- }
-
- pData->pJPEGcurrent = pData->pJPEGbuf;
- pData->iJPEGbufremain = 0;
- pData->pJPEGrow = MNG_NULL;
- pData->iJPEGrowlen = 0;
- pData->iJPEGtoskip = 0;
-
- pData->pJPEGcurrent2 = pData->pJPEGbuf2;
- pData->iJPEGbufremain2 = 0;
- pData->pJPEGrow2 = MNG_NULL;
- pData->iJPEGrowlen2 = 0;
- pData->iJPEGtoskip2 = 0;
- /* not doing anything yet ! */
- pData->bJPEGcompress = MNG_FALSE;
-
- pData->bJPEGdecompress = MNG_FALSE;
- pData->bJPEGhasheader = MNG_FALSE;
- pData->bJPEGdecostarted = MNG_FALSE;
- pData->bJPEGscanstarted = MNG_FALSE;
- pData->bJPEGscanending = MNG_FALSE;
-
- pData->bJPEGdecompress2 = MNG_FALSE;
- pData->bJPEGhasheader2 = MNG_FALSE;
- pData->bJPEGdecostarted2 = MNG_FALSE;
- pData->bJPEGscanstarted2 = MNG_FALSE;
-
- pData->iJPEGrow = 0; /* zero input/output lines */
- pData->iJPEGalpharow = 0;
- pData->iJPEGrgbrow = 0;
- pData->iJPEGdisprow = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_INITIALIZE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mngjpeg_cleanup (mng_datap pData)
-{
-#if defined(MNG_INCLUDE_IJG6B) && defined(MNG_USE_SETJMP)
- mng_retcode iRetcode;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_CLEANUP, MNG_LC_START);
-#endif
-
-#ifdef MNG_INCLUDE_IJG6B
-#ifdef MNG_USE_SETJMP
- iRetcode = setjmp (pData->sErrorbuf);/* setup local JPEG error-recovery */
- if (iRetcode != 0) /* got here from longjmp ? */
- MNG_ERRORJ (pData, iRetcode); /* then IJG-lib issued an error */
-#endif
-
-#ifdef MNG_INCLUDE_JNG_READ /* still decompressing something ? */
- if (pData->bJPEGdecompress)
- jpeg_destroy_decompress (pData->pJPEGdinfo);
- if (pData->bJPEGdecompress2)
- jpeg_destroy_decompress (pData->pJPEGdinfo2);
-#endif
-
-#ifdef MNG_INCLUDE_JNG_WRITE
- if (pData->bJPEGcompress) /* still compressing something ? */
- jpeg_destroy_compress (pData->pJPEGcinfo);
-#endif
-
-#endif /* MNG_INCLUDE_IJG6B */
- /* cleanup temporary buffers */
- MNG_FREE (pData, pData->pJPEGbuf2, pData->iJPEGbufmax2);
- MNG_FREE (pData, pData->pJPEGbuf, pData->iJPEGbufmax);
- /* cleanup space for JPEG structures */
-#ifdef MNG_INCLUDE_JNG_WRITE
- MNG_FREE (pData, pData->pJPEGcinfo, sizeof (mngjpeg_comp ));
- MNG_FREE (pData, pData->pJPEGcerr, sizeof (mngjpeg_error ));
-#endif
-
-#ifdef MNG_INCLUDE_JNG_READ
- MNG_FREE (pData, pData->pJPEGdinfo, sizeof (mngjpeg_decomp));
- MNG_FREE (pData, pData->pJPEGdsrc, sizeof (mngjpeg_source));
- MNG_FREE (pData, pData->pJPEGderr, sizeof (mngjpeg_error ));
- MNG_FREE (pData, pData->pJPEGdinfo2, sizeof (mngjpeg_decomp));
- MNG_FREE (pData, pData->pJPEGdsrc2, sizeof (mngjpeg_source));
- MNG_FREE (pData, pData->pJPEGderr2, sizeof (mngjpeg_error ));
-#endif
-
- MNG_FREE (pData, pData->pJPEGrow2, pData->iJPEGrowlen2);
- MNG_FREE (pData, pData->pJPEGrow, pData->iJPEGrowlen);
- /* whatever we were doing ... */
- /* we don't anymore ... */
- pData->bJPEGcompress = MNG_FALSE;
-
- pData->bJPEGdecompress = MNG_FALSE;
- pData->bJPEGhasheader = MNG_FALSE;
- pData->bJPEGdecostarted = MNG_FALSE;
- pData->bJPEGscanstarted = MNG_FALSE;
- pData->bJPEGscanending = MNG_FALSE;
-
- pData->bJPEGdecompress2 = MNG_FALSE;
- pData->bJPEGhasheader2 = MNG_FALSE;
- pData->bJPEGdecostarted2 = MNG_FALSE;
- pData->bJPEGscanstarted2 = MNG_FALSE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_CLEANUP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-/* * * */
-/* * JPEG decompression routines (JDAT) * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG_READ
-mng_retcode mngjpeg_decompressinit (mng_datap pData)
-{
-#if defined(MNG_INCLUDE_IJG6B) && defined(MNG_USE_SETJMP)
- mng_retcode iRetcode;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSINIT, MNG_LC_START);
-#endif
-
-#ifdef MNG_INCLUDE_IJG6B
- /* allocate and initialize a JPEG decompression object */
- pData->pJPEGdinfo->err = jpeg_std_error (pData->pJPEGderr);
-
-#ifdef MNG_USE_SETJMP /* setup local JPEG error-routines */
- pData->pJPEGderr->error_exit = mng_error_exit;
- pData->pJPEGderr->output_message = mng_output_message;
-
- iRetcode = setjmp (pData->sErrorbuf);/* setup local JPEG error-recovery */
- if (iRetcode != 0) /* got here from longjmp ? */
- MNG_ERRORJ (pData, iRetcode); /* then IJG-lib issued an error */
-#endif /* MNG_USE_SETJMP */
-
- /* allocate and initialize a JPEG decompression object (continued) */
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSINIT, MNG_LC_JPEG_CREATE_DECOMPRESS)
-#endif
- jpeg_create_decompress (pData->pJPEGdinfo);
-
- pData->bJPEGdecompress = MNG_TRUE; /* indicate it's initialized */
-
- /* specify the source of the compressed data (eg, a file) */
- /* no, not a file; we have buffered input */
- pData->pJPEGdinfo->src = pData->pJPEGdsrc;
- /* use the default handler */
- pData->pJPEGdinfo->src->resync_to_restart = jpeg_resync_to_restart;
- /* setup local source routine & parms */
- pData->pJPEGdinfo->src->init_source = mng_init_source;
- pData->pJPEGdinfo->src->fill_input_buffer = mng_fill_input_buffer;
- pData->pJPEGdinfo->src->skip_input_data = mng_skip_input_data;
- pData->pJPEGdinfo->src->term_source = mng_term_source;
- pData->pJPEGdinfo->src->next_input_byte = pData->pJPEGcurrent;
- pData->pJPEGdinfo->src->bytes_in_buffer = pData->iJPEGbufremain;
-
-#endif /* MNG_INCLUDE_IJG6B */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSINIT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG_READ
-mng_retcode mngjpeg_decompressdata (mng_datap pData,
- mng_uint32 iRawsize,
- mng_uint8p pRawdata)
-{
- mng_retcode iRetcode;
- mng_uint32 iRemain;
- mng_uint8p pWork;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSDATA, MNG_LC_START);
-#endif
-
-#if defined (MNG_INCLUDE_IJG6B) && defined(MNG_USE_SETJMP)
- iRetcode = setjmp (pData->sErrorbuf);/* initialize local JPEG error-recovery */
- if (iRetcode != 0) /* got here from longjmp ? */
- MNG_ERRORJ (pData, iRetcode); /* then IJG-lib issued an error */
-#endif
-
- pWork = pRawdata;
- iRemain = iRawsize;
-
- if (pData->iJPEGtoskip) /* JPEG-lib told us to skip some more data ? */
- {
- if (iRemain > pData->iJPEGtoskip) /* enough data in this buffer ? */
- {
- iRemain -= pData->iJPEGtoskip; /* skip enough to access the next byte */
- pWork += pData->iJPEGtoskip;
-
- pData->iJPEGtoskip = 0; /* no more to skip then */
- }
- else
- {
- pData->iJPEGtoskip -= iRemain; /* skip all data in the buffer */
- iRemain = 0; /* and indicate this accordingly */
- }
- /* the skip set current-pointer to NULL ! */
- pData->pJPEGcurrent = pData->pJPEGbuf;
- }
-
- while (iRemain) /* repeat until no more input-bytes */
- { /* need to shift anything ? */
- if ((pData->pJPEGcurrent > pData->pJPEGbuf) &&
- (pData->pJPEGcurrent - pData->pJPEGbuf + pData->iJPEGbufremain + iRemain > pData->iJPEGbufmax))
- {
- if (pData->iJPEGbufremain > 0) /* then do so */
- MNG_COPY (pData->pJPEGbuf, pData->pJPEGcurrent, pData->iJPEGbufremain);
-
- pData->pJPEGcurrent = pData->pJPEGbuf;
- }
- /* does the remaining input fit into the buffer ? */
- if (pData->iJPEGbufremain + iRemain <= pData->iJPEGbufmax)
- { /* move the lot */
- MNG_COPY ((pData->pJPEGcurrent + pData->iJPEGbufremain), pWork, iRemain);
-
- pData->iJPEGbufremain += iRemain;/* adjust remaining_bytes counter */
- iRemain = 0; /* and indicate there's no input left */
- }
- else
- { /* calculate what does fit */
- mng_uint32 iFits = pData->iJPEGbufmax - pData->iJPEGbufremain;
-
- if (iFits <= 0) /* no space is just bugger 'm all */
- MNG_ERROR (pData, MNG_JPEGBUFTOOSMALL);
- /* move that */
- MNG_COPY ((pData->pJPEGcurrent + pData->iJPEGbufremain), pWork, iFits);
-
- pData->iJPEGbufremain += iFits; /* adjust remain_bytes counter */
- iRemain -= iFits; /* and the input-parms */
- pWork += iFits;
- }
-
-#ifdef MNG_INCLUDE_IJG6B
- pData->pJPEGdinfo->src->next_input_byte = pData->pJPEGcurrent;
- pData->pJPEGdinfo->src->bytes_in_buffer = pData->iJPEGbufremain;
-
- if (!pData->bJPEGhasheader) /* haven't got the header yet ? */
- {
- /* call jpeg_read_header() to obtain image info */
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSDATA, MNG_LC_JPEG_READ_HEADER)
-#endif
- if (jpeg_read_header (pData->pJPEGdinfo, TRUE) != JPEG_SUSPENDED)
- { /* indicate the header's oke */
- pData->bJPEGhasheader = MNG_TRUE;
- /* let's do some sanity checks ! */
- if ((pData->pJPEGdinfo->image_width != pData->iDatawidth ) ||
- (pData->pJPEGdinfo->image_height != pData->iDataheight) )
- MNG_ERROR (pData, MNG_JPEGPARMSERR);
-
- if ( ((pData->iJHDRcolortype == MNG_COLORTYPE_JPEGGRAY ) ||
- (pData->iJHDRcolortype == MNG_COLORTYPE_JPEGGRAYA) ) &&
- (pData->pJPEGdinfo->jpeg_color_space != JCS_GRAYSCALE ) )
- MNG_ERROR (pData, MNG_JPEGPARMSERR);
-
- if ( ((pData->iJHDRcolortype == MNG_COLORTYPE_JPEGCOLOR ) ||
- (pData->iJHDRcolortype == MNG_COLORTYPE_JPEGCOLORA) ) &&
- (pData->pJPEGdinfo->jpeg_color_space != JCS_YCbCr ) )
- MNG_ERROR (pData, MNG_JPEGPARMSERR);
- /* indicate whether or not it's progressive */
- pData->bJPEGprogressive = (mng_bool)jpeg_has_multiple_scans (pData->pJPEGdinfo);
- /* progressive+alpha can't display "on-the-fly"!! */
- if ((pData->bJPEGprogressive) &&
- ((pData->iJHDRcolortype == MNG_COLORTYPE_JPEGGRAYA ) ||
- (pData->iJHDRcolortype == MNG_COLORTYPE_JPEGCOLORA) ))
- pData->fDisplayrow = MNG_NULL;
- /* allocate a row of JPEG-samples */
- if (pData->pJPEGdinfo->jpeg_color_space == JCS_YCbCr)
- pData->iJPEGrowlen = pData->pJPEGdinfo->image_width * RGB_PIXELSIZE;
- else
- pData->iJPEGrowlen = pData->pJPEGdinfo->image_width;
-
- MNG_ALLOC (pData, pData->pJPEGrow, pData->iJPEGrowlen);
-
- pData->iJPEGrgbrow = 0; /* quite empty up to now */
- }
-
- pData->pJPEGcurrent = (mng_uint8p)pData->pJPEGdinfo->src->next_input_byte;
- pData->iJPEGbufremain = (mng_uint32)pData->pJPEGdinfo->src->bytes_in_buffer;
- }
- /* decompress not started ? */
- if ((pData->bJPEGhasheader) && (!pData->bJPEGdecostarted))
- {
- /* set parameters for decompression */
-
- if (pData->bJPEGprogressive) /* progressive display ? */
- pData->pJPEGdinfo->buffered_image = TRUE;
-
- /* jpeg_start_decompress(...); */
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSDATA, MNG_LC_JPEG_START_DECOMPRESS)
-#endif
- if (jpeg_start_decompress (pData->pJPEGdinfo) == TRUE)
- /* indicate it started */
- pData->bJPEGdecostarted = MNG_TRUE;
-
- pData->pJPEGcurrent = (mng_uint8p)pData->pJPEGdinfo->src->next_input_byte;
- pData->iJPEGbufremain = (mng_uint32)pData->pJPEGdinfo->src->bytes_in_buffer;
- }
- /* process some scanlines ? */
- if ((pData->bJPEGhasheader) && (pData->bJPEGdecostarted) &&
- ((!jpeg_input_complete (pData->pJPEGdinfo)) ||
- (pData->pJPEGdinfo->output_scanline < pData->pJPEGdinfo->output_height) ||
- ((pData->bJPEGprogressive) && (pData->bJPEGscanending))))
- {
- mng_int32 iLines = 0;
-
- /* for (each output pass) */
- do
- { /* address the row output buffer */
- JSAMPROW pRow = (JSAMPROW)pData->pJPEGrow;
-
- /* init new pass ? */
- if ((pData->bJPEGprogressive) && (!pData->bJPEGscanstarted))
- {
- pData->bJPEGscanstarted = MNG_TRUE;
-
- /* adjust output decompression parameters if required */
- /* nop */
-
- /* start a new output pass */
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSDATA, MNG_LC_JPEG_START_OUTPUT)
-#endif
- jpeg_start_output (pData->pJPEGdinfo, pData->pJPEGdinfo->input_scan_number);
-
- pData->iJPEGrow = 0; /* start at row 0 in the image again */
- }
-
- /* while (scan lines remain to be read) */
- if ((!pData->bJPEGprogressive) || (!pData->bJPEGscanending))
- {
- do
- {
- /* jpeg_read_scanlines(...); */
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSDATA, MNG_LC_JPEG_READ_SCANLINES)
-#endif
- iLines = jpeg_read_scanlines (pData->pJPEGdinfo, (JSAMPARRAY)&pRow, 1);
-
- pData->pJPEGcurrent = (mng_uint8p)pData->pJPEGdinfo->src->next_input_byte;
- pData->iJPEGbufremain = (mng_uint32)pData->pJPEGdinfo->src->bytes_in_buffer;
-
- if (iLines > 0) /* got something ? */
- {
- if (pData->fStorerow2) /* store in object ? */
- {
- iRetcode = ((mng_storerow)pData->fStorerow2) (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- }
- }
- }
- while ((pData->pJPEGdinfo->output_scanline < pData->pJPEGdinfo->output_height) &&
- (iLines > 0)); /* until end-of-image or not enough input-data */
- }
-
- /* terminate output pass */
- if ((pData->bJPEGprogressive) &&
- (pData->pJPEGdinfo->output_scanline >= pData->pJPEGdinfo->output_height))
- {
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSDATA, MNG_LC_JPEG_FINISH_OUTPUT)
-#endif
- if (jpeg_finish_output (pData->pJPEGdinfo) != JPEG_SUSPENDED)
- { /* this scan has ended */
- pData->bJPEGscanstarted = MNG_FALSE;
- pData->bJPEGscanending = MNG_FALSE;
- }
- else
- {
- pData->bJPEGscanending = MNG_TRUE;
- }
- }
- }
- while ((!jpeg_input_complete (pData->pJPEGdinfo)) &&
- (iLines > 0) && (!pData->bJPEGscanending));
- }
- /* end of image ? */
- if ((pData->bJPEGhasheader) && (pData->bJPEGdecostarted) &&
- (!pData->bJPEGscanending) && (jpeg_input_complete (pData->pJPEGdinfo)) &&
- (pData->pJPEGdinfo->input_scan_number == pData->pJPEGdinfo->output_scan_number))
- {
- /* jpeg_finish_decompress(...); */
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSDATA, MNG_LC_JPEG_FINISH_DECOMPRESS)
-#endif
- if (jpeg_finish_decompress (pData->pJPEGdinfo) == TRUE)
- { /* indicate it's done */
- pData->bJPEGhasheader = MNG_FALSE;
- pData->bJPEGdecostarted = MNG_FALSE;
- pData->pJPEGcurrent = (mng_uint8p)pData->pJPEGdinfo->src->next_input_byte;
- pData->iJPEGbufremain = (mng_uint32)pData->pJPEGdinfo->src->bytes_in_buffer;
- /* remaining fluff is an error ! */
- if ((pData->iJPEGbufremain > 0) || (iRemain > 0))
- MNG_ERROR (pData, MNG_TOOMUCHJDAT);
- }
- }
-#endif /* MNG_INCLUDE_IJG6B */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSDATA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG_READ
-mng_retcode mngjpeg_decompressfree (mng_datap pData)
-{
-#if defined(MNG_INCLUDE_IJG6B) && defined(MNG_USE_SETJMP)
- mng_retcode iRetcode;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSFREE, MNG_LC_START);
-#endif
-
-#ifdef MNG_INCLUDE_IJG6B
-#ifdef MNG_USE_SETJMP
- iRetcode = setjmp (pData->sErrorbuf);/* setup local JPEG error-recovery */
- if (iRetcode != 0) /* got here from longjmp ? */
- MNG_ERRORJ (pData, iRetcode); /* then IJG-lib issued an error */
-#endif
- /* free the row of JPEG-samples*/
- MNG_FREE (pData, pData->pJPEGrow, pData->iJPEGrowlen);
-
- /* release the JPEG decompression object */
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSFREE, MNG_LC_JPEG_DESTROY_DECOMPRESS)
-#endif
- jpeg_destroy_decompress (pData->pJPEGdinfo);
-
- pData->bJPEGdecompress = MNG_FALSE; /* indicate it's done */
-
-#endif /* MNG_INCLUDE_IJG6B */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSFREE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG_READ */
-
-/* ************************************************************************** */
-/* * * */
-/* * JPEG decompression routines (JDAA) * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG_READ
-mng_retcode mngjpeg_decompressinit2 (mng_datap pData)
-{
-#if defined(MNG_INCLUDE_IJG6B) && defined(MNG_USE_SETJMP)
- mng_retcode iRetcode;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSINIT, MNG_LC_START);
-#endif
-
-#ifdef MNG_INCLUDE_IJG6B
- /* allocate and initialize a JPEG decompression object */
- pData->pJPEGdinfo2->err = jpeg_std_error (pData->pJPEGderr2);
-
-#ifdef MNG_USE_SETJMP /* setup local JPEG error-routines */
- pData->pJPEGderr2->error_exit = mng_error_exit;
- pData->pJPEGderr2->output_message = mng_output_message;
-
- iRetcode = setjmp (pData->sErrorbuf);/* setup local JPEG error-recovery */
- if (iRetcode != 0) /* got here from longjmp ? */
- MNG_ERRORJ (pData, iRetcode); /* then IJG-lib issued an error */
-#endif /* MNG_USE_SETJMP */
-
- /* allocate and initialize a JPEG decompression object (continued) */
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSINIT, MNG_LC_JPEG_CREATE_DECOMPRESS)
-#endif
- jpeg_create_decompress (pData->pJPEGdinfo2);
-
- pData->bJPEGdecompress2 = MNG_TRUE; /* indicate it's initialized */
-
- /* specify the source of the compressed data (eg, a file) */
- /* no, not a file; we have buffered input */
- pData->pJPEGdinfo2->src = pData->pJPEGdsrc2;
- /* use the default handler */
- pData->pJPEGdinfo2->src->resync_to_restart = jpeg_resync_to_restart;
- /* setup local source routine & parms */
- pData->pJPEGdinfo2->src->init_source = mng_init_source;
- pData->pJPEGdinfo2->src->fill_input_buffer = mng_fill_input_buffer;
- pData->pJPEGdinfo2->src->skip_input_data = mng_skip_input_data2;
- pData->pJPEGdinfo2->src->term_source = mng_term_source;
- pData->pJPEGdinfo2->src->next_input_byte = pData->pJPEGcurrent2;
- pData->pJPEGdinfo2->src->bytes_in_buffer = pData->iJPEGbufremain2;
-
-#endif /* MNG_INCLUDE_IJG6B */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSINIT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG_READ
-mng_retcode mngjpeg_decompressdata2 (mng_datap pData,
- mng_uint32 iRawsize,
- mng_uint8p pRawdata)
-{
- mng_retcode iRetcode;
- mng_uint32 iRemain;
- mng_uint8p pWork;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSDATA, MNG_LC_START);
-#endif
-
-#if defined (MNG_INCLUDE_IJG6B) && defined(MNG_USE_SETJMP)
- iRetcode = setjmp (pData->sErrorbuf);/* initialize local JPEG error-recovery */
- if (iRetcode != 0) /* got here from longjmp ? */
- MNG_ERRORJ (pData, iRetcode); /* then IJG-lib issued an error */
-#endif
-
- pWork = pRawdata;
- iRemain = iRawsize;
-
- if (pData->iJPEGtoskip2) /* JPEG-lib told us to skip some more data ? */
- {
- if (iRemain > pData->iJPEGtoskip2) /* enough data in this buffer ? */
- {
- iRemain -= pData->iJPEGtoskip2; /* skip enough to access the next byte */
- pWork += pData->iJPEGtoskip2;
-
- pData->iJPEGtoskip2 = 0; /* no more to skip then */
- }
- else
- {
- pData->iJPEGtoskip2 -= iRemain; /* skip all data in the buffer */
- iRemain = 0; /* and indicate this accordingly */
- }
- /* the skip set current-pointer to NULL ! */
- pData->pJPEGcurrent2 = pData->pJPEGbuf2;
- }
-
- while (iRemain) /* repeat until no more input-bytes */
- { /* need to shift anything ? */
- if ((pData->pJPEGcurrent2 > pData->pJPEGbuf2) &&
- (pData->pJPEGcurrent2 - pData->pJPEGbuf2 + pData->iJPEGbufremain2 + iRemain > pData->iJPEGbufmax2))
- {
- if (pData->iJPEGbufremain2 > 0) /* then do so */
- MNG_COPY (pData->pJPEGbuf2, pData->pJPEGcurrent2, pData->iJPEGbufremain2);
-
- pData->pJPEGcurrent2 = pData->pJPEGbuf2;
- }
- /* does the remaining input fit into the buffer ? */
- if (pData->iJPEGbufremain2 + iRemain <= pData->iJPEGbufmax2)
- { /* move the lot */
- MNG_COPY ((pData->pJPEGcurrent2 + pData->iJPEGbufremain2), pWork, iRemain);
- /* adjust remaining_bytes counter */
- pData->iJPEGbufremain2 += iRemain;
- iRemain = 0; /* and indicate there's no input left */
- }
- else
- { /* calculate what does fit */
- mng_uint32 iFits = pData->iJPEGbufmax2 - pData->iJPEGbufremain2;
-
- if (iFits <= 0) /* no space is just bugger 'm all */
- MNG_ERROR (pData, MNG_JPEGBUFTOOSMALL);
- /* move that */
- MNG_COPY ((pData->pJPEGcurrent2 + pData->iJPEGbufremain2), pWork, iFits);
-
- pData->iJPEGbufremain2 += iFits; /* adjust remain_bytes counter */
- iRemain -= iFits; /* and the input-parms */
- pWork += iFits;
- }
-
-#ifdef MNG_INCLUDE_IJG6B
- pData->pJPEGdinfo2->src->next_input_byte = pData->pJPEGcurrent2;
- pData->pJPEGdinfo2->src->bytes_in_buffer = pData->iJPEGbufremain2;
-
- if (!pData->bJPEGhasheader2) /* haven't got the header yet ? */
- {
- /* call jpeg_read_header() to obtain image info */
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSDATA, MNG_LC_JPEG_READ_HEADER)
-#endif
- if (jpeg_read_header (pData->pJPEGdinfo2, TRUE) != JPEG_SUSPENDED)
- { /* indicate the header's oke */
- pData->bJPEGhasheader2 = MNG_TRUE;
- /* let's do some sanity checks ! */
- if ((pData->pJPEGdinfo2->image_width != pData->iDatawidth ) ||
- (pData->pJPEGdinfo2->image_height != pData->iDataheight) )
- MNG_ERROR (pData, MNG_JPEGPARMSERR);
-
- if (pData->pJPEGdinfo2->jpeg_color_space != JCS_GRAYSCALE)
- MNG_ERROR (pData, MNG_JPEGPARMSERR);
- /* indicate whether or not it's progressive */
- pData->bJPEGprogressive2 = (mng_bool)jpeg_has_multiple_scans (pData->pJPEGdinfo2);
-
- if (pData->bJPEGprogressive2) /* progressive alphachannel not allowed !!! */
- MNG_ERROR (pData, MNG_JPEGPARMSERR);
- /* allocate a row of JPEG-samples */
- if (pData->pJPEGdinfo2->jpeg_color_space == JCS_YCbCr)
- pData->iJPEGrowlen2 = pData->pJPEGdinfo2->image_width * RGB_PIXELSIZE;
- else
- pData->iJPEGrowlen2 = pData->pJPEGdinfo2->image_width;
-
- MNG_ALLOC (pData, pData->pJPEGrow2, pData->iJPEGrowlen2);
-
- pData->iJPEGalpharow = 0; /* quite empty up to now */
- }
-
- pData->pJPEGcurrent2 = (mng_uint8p)pData->pJPEGdinfo2->src->next_input_byte;
- pData->iJPEGbufremain2 = (mng_uint32)pData->pJPEGdinfo2->src->bytes_in_buffer;
- }
- /* decompress not started ? */
- if ((pData->bJPEGhasheader2) && (!pData->bJPEGdecostarted2))
- {
- /* set parameters for decompression */
-
- if (pData->bJPEGprogressive2) /* progressive display ? */
- pData->pJPEGdinfo2->buffered_image = TRUE;
-
- /* jpeg_start_decompress(...); */
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSDATA, MNG_LC_JPEG_START_DECOMPRESS)
-#endif
- if (jpeg_start_decompress (pData->pJPEGdinfo2) == TRUE)
- /* indicate it started */
- pData->bJPEGdecostarted2 = MNG_TRUE;
-
- pData->pJPEGcurrent2 = (mng_uint8p)pData->pJPEGdinfo2->src->next_input_byte;
- pData->iJPEGbufremain2 = (mng_uint32)pData->pJPEGdinfo2->src->bytes_in_buffer;
- }
- /* process some scanlines ? */
- if ((pData->bJPEGhasheader2) && (pData->bJPEGdecostarted2) &&
- ((!jpeg_input_complete (pData->pJPEGdinfo2)) ||
- (pData->pJPEGdinfo2->output_scanline < pData->pJPEGdinfo2->output_height)))
- {
- mng_int32 iLines;
-
- /* for (each output pass) */
- do
- { /* address the row output buffer */
- JSAMPROW pRow = (JSAMPROW)pData->pJPEGrow2;
-
- /* init new pass ? */
- if ((pData->bJPEGprogressive2) &&
- ((!pData->bJPEGscanstarted2) ||
- (pData->pJPEGdinfo2->output_scanline >= pData->pJPEGdinfo2->output_height)))
- {
- pData->bJPEGscanstarted2 = MNG_TRUE;
-
- /* adjust output decompression parameters if required */
- /* nop */
-
- /* start a new output pass */
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSDATA, MNG_LC_JPEG_START_OUTPUT)
-#endif
- jpeg_start_output (pData->pJPEGdinfo2, pData->pJPEGdinfo2->input_scan_number);
-
- pData->iJPEGrow = 0; /* start at row 0 in the image again */
- }
-
- /* while (scan lines remain to be read) */
- do
- {
- /* jpeg_read_scanlines(...); */
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSDATA, MNG_LC_JPEG_READ_SCANLINES)
-#endif
- iLines = jpeg_read_scanlines (pData->pJPEGdinfo2, (JSAMPARRAY)&pRow, 1);
-
- pData->pJPEGcurrent2 = (mng_uint8p)pData->pJPEGdinfo2->src->next_input_byte;
- pData->iJPEGbufremain2 = (mng_uint32)pData->pJPEGdinfo2->src->bytes_in_buffer;
-
- if (iLines > 0) /* got something ? */
- {
- if (pData->fStorerow3) /* store in object ? */
- {
- iRetcode = ((mng_storerow)pData->fStorerow3) (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- }
- }
- }
- while ((pData->pJPEGdinfo2->output_scanline < pData->pJPEGdinfo2->output_height) &&
- (iLines > 0)); /* until end-of-image or not enough input-data */
-
- /* terminate output pass */
- if ((pData->bJPEGprogressive2) &&
- (pData->pJPEGdinfo2->output_scanline >= pData->pJPEGdinfo2->output_height))
- {
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSDATA, MNG_LC_JPEG_FINISH_OUTPUT)
-#endif
- if (jpeg_finish_output (pData->pJPEGdinfo2) == JPEG_SUSPENDED)
- jpeg_finish_output (pData->pJPEGdinfo2);
- /* this scan has ended */
- pData->bJPEGscanstarted2 = MNG_FALSE;
- }
- }
- while ((!jpeg_input_complete (pData->pJPEGdinfo2)) && (iLines > 0));
- }
- /* end of image ? */
- if ((pData->bJPEGhasheader2) && (pData->bJPEGdecostarted2) &&
- (jpeg_input_complete (pData->pJPEGdinfo2)) &&
- (pData->pJPEGdinfo2->input_scan_number == pData->pJPEGdinfo2->output_scan_number))
- {
- /* jpeg_finish_decompress(...); */
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSDATA, MNG_LC_JPEG_FINISH_DECOMPRESS)
-#endif
- if (jpeg_finish_decompress (pData->pJPEGdinfo2) == TRUE)
- { /* indicate it's done */
- pData->bJPEGhasheader2 = MNG_FALSE;
- pData->bJPEGdecostarted2 = MNG_FALSE;
- pData->pJPEGcurrent2 = (mng_uint8p)pData->pJPEGdinfo2->src->next_input_byte;
- pData->iJPEGbufremain2 = (mng_uint32)pData->pJPEGdinfo2->src->bytes_in_buffer;
- /* remaining fluff is an error ! */
- if ((pData->iJPEGbufremain2 > 0) || (iRemain > 0))
- MNG_ERROR (pData, MNG_TOOMUCHJDAT);
- }
- }
-#endif /* MNG_INCLUDE_IJG6B */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSDATA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG_READ
-mng_retcode mngjpeg_decompressfree2 (mng_datap pData)
-{
-#if defined(MNG_INCLUDE_IJG6B) && defined(MNG_USE_SETJMP)
- mng_retcode iRetcode;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSFREE, MNG_LC_START);
-#endif
-
-#ifdef MNG_INCLUDE_IJG6B
-#ifdef MNG_USE_SETJMP
- iRetcode = setjmp (pData->sErrorbuf);/* setup local JPEG error-recovery */
- if (iRetcode != 0) /* got here from longjmp ? */
- MNG_ERRORJ (pData, iRetcode); /* then IJG-lib issued an error */
-#endif
- /* free the row of JPEG-samples*/
- MNG_FREE (pData, pData->pJPEGrow2, pData->iJPEGrowlen2);
-
- /* release the JPEG decompression object */
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSFREE, MNG_LC_JPEG_DESTROY_DECOMPRESS)
-#endif
- jpeg_destroy_decompress (pData->pJPEGdinfo2);
-
- pData->bJPEGdecompress2 = MNG_FALSE; /* indicate it's done */
-
-#endif /* MNG_INCLUDE_IJG6B */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_JPEG_DECOMPRESSFREE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_INCLUDE_JNG_READ */
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_JNG && MNG_INCLUDE_DISPLAY_PROCS */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
diff --git a/src/3rdparty/libmng/libmng_jpeg.h b/src/3rdparty/libmng/libmng_jpeg.h
deleted file mode 100644
index a072af9c96..0000000000
--- a/src/3rdparty/libmng/libmng_jpeg.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_jpeg.h copyright (c) 2000-2002 G.Juyn * */
-/* * version : 1.0.0 * */
-/* * * */
-/* * purpose : JPEG library interface (definition) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : Definition of the JPEG library interface * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added support for JDAA * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_jpeg_h_
-#define _libmng_jpeg_h_
-
-/* ************************************************************************** */
-
-mng_retcode mngjpeg_initialize (mng_datap pData);
-mng_retcode mngjpeg_cleanup (mng_datap pData);
-
-mng_retcode mngjpeg_decompressinit (mng_datap pData);
-mng_retcode mngjpeg_decompressdata (mng_datap pData,
- mng_uint32 iRawsize,
- mng_uint8p pRawdata);
-mng_retcode mngjpeg_decompressfree (mng_datap pData);
-
-mng_retcode mngjpeg_decompressinit2 (mng_datap pData);
-mng_retcode mngjpeg_decompressdata2 (mng_datap pData,
- mng_uint32 iRawsize,
- mng_uint8p pRawdata);
-mng_retcode mngjpeg_decompressfree2 (mng_datap pData);
-
-/* ************************************************************************** */
-
-#endif /* _libmng_jpeg_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/libmng_memory.h b/src/3rdparty/libmng/libmng_memory.h
deleted file mode 100644
index b92d0c13d9..0000000000
--- a/src/3rdparty/libmng/libmng_memory.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_memory.h copyright (c) 2000-2003 G.Juyn * */
-/* * version : 1.0.0 * */
-/* * * */
-/* * purpose : Memory management (definition) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : Definition of memory management functions * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * * */
-/* * 0.5.3 - 06/12/2000 - G.Juyn * */
-/* * - swapped MNG_COPY parameter-names * */
-/* * 0.5.3 - 06/27/2000 - G.Juyn * */
-/* * - changed size parameter to mng_size_t * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_memory_h_
-#define _libmng_memory_h_
-
-/* ************************************************************************** */
-/* * * */
-/* * Generic memory manager macros * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_INTERNAL_MEMMNGMT
-#define MNG_ALLOC(H,P,L) { P = calloc (1, (mng_size_t)(L)); \
- if (P == 0) { MNG_ERROR (H, MNG_OUTOFMEMORY) } }
-#define MNG_ALLOCX(H,P,L) { P = calloc (1, (mng_size_t)(L)); }
-#define MNG_FREE(H,P,L) { if (P) { free (P); P = 0; } }
-#define MNG_FREEX(H,P,L) { if (P) free (P); }
-#else
-#define MNG_ALLOC(H,P,L) { P = H->fMemalloc ((mng_size_t)(L)); \
- if (P == 0) { MNG_ERROR (H, MNG_OUTOFMEMORY) } }
-#define MNG_ALLOCX(H,P,L) { P = H->fMemalloc ((mng_size_t)(L)); }
-#define MNG_FREE(H,P,L) { if (P) { H->fMemfree (P, (mng_size_t)(L)); P = 0; } }
-#define MNG_FREEX(H,P,L) { if (P) { H->fMemfree (P, (mng_size_t)(L)); } }
-#endif /* mng_internal_memmngmt */
-
-#define MNG_COPY(D,S,L) { memcpy (D, S, (mng_size_t)(L)); }
-
-/* ************************************************************************** */
-
-#endif /* _libmng_memory_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/libmng_object_prc.c b/src/3rdparty/libmng/libmng_object_prc.c
deleted file mode 100644
index e1724b411f..0000000000
--- a/src/3rdparty/libmng/libmng_object_prc.c
+++ /dev/null
@@ -1,6998 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_object_prc.c copyright (c) 2000-2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : Object processing routines (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of the internal object processing routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/12/2000 - G.Juyn * */
-/* * - changed trace to macro for callback error-reporting * */
-/* * * */
-/* * 0.5.2 - 05/20/2000 - G.Juyn * */
-/* * - fixed to support JNG objects * */
-/* * 0.5.2 - 05/24/2000 - G.Juyn * */
-/* * - added support for global color-chunks in animation * */
-/* * - added support for global PLTE,tRNS,bKGD in animation * */
-/* * - added SAVE & SEEK animation objects * */
-/* * 0.5.2 - 05/29/2000 - G.Juyn * */
-/* * - added initialization of framenr/layernr/playtime * */
-/* * - changed ani_object create routines not to return the * */
-/* * created object (wasn't necessary) * */
-/* * 0.5.2 - 05/30/2000 - G.Juyn * */
-/* * - added object promotion routine (PROM handling) * */
-/* * - added ani-object routines for delta-image processing * */
-/* * - added compression/filter/interlace fields to * */
-/* * object-buffer for delta-image processing * */
-/* * * */
-/* * 0.5.3 - 06/17/2000 - G.Juyn * */
-/* * - changed support for delta-image processing * */
-/* * 0.5.3 - 06/20/2000 - G.Juyn * */
-/* * - fixed some small things (as precaution) * */
-/* * 0.5.3 - 06/21/2000 - G.Juyn * */
-/* * - added processing of PLTE/tRNS & color-info for * */
-/* * delta-images in the ani_objects chain * */
-/* * 0.5.3 - 06/22/2000 - G.Juyn * */
-/* * - added support for PPLT chunk * */
-/* * * */
-/* * 0.9.1 - 07/07/2000 - G.Juyn * */
-/* * - added support for freeze/restart/resume & go_xxxx * */
-/* * 0.9.1 - 07/16/2000 - G.Juyn * */
-/* * - fixed support for mng_display() after mng_read() * */
-/* * * */
-/* * 0.9.2 - 07/29/2000 - G.Juyn * */
-/* * - fixed small bugs in display processing * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 08/07/2000 - G.Juyn * */
-/* * - B111300 - fixup for improved portability * */
-/* * 0.9.3 - 08/26/2000 - G.Juyn * */
-/* * - added MAGN chunk * */
-/* * 0.9.3 - 09/10/2000 - G.Juyn * */
-/* * - fixed DEFI behavior * */
-/* * 0.9.3 - 10/17/2000 - G.Juyn * */
-/* * - added valid-flag to stored objects for read() / display()* */
-/* * - added routine to discard "invalid" objects * */
-/* * 0.9.3 - 10/18/2000 - G.Juyn * */
-/* * - fixed delta-processing behavior * */
-/* * 0.9.3 - 10/19/2000 - G.Juyn * */
-/* * - added storage for pixel-/alpha-sampledepth for delta's * */
-/* * * */
-/* * 0.9.4 - 1/18/2001 - G.Juyn * */
-/* * - removed "old" MAGN methods 3 & 4 * */
-/* * - added "new" MAGN methods 3, 4 & 5 * */
-/* * * */
-/* * 0.9.5 - 1/22/2001 - G.Juyn * */
-/* * - B129681 - fixed compiler warnings SGI/Irix * */
-/* * * */
-/* * 1.0.2 - 06/23/2001 - G.Juyn * */
-/* * - added optimization option for MNG-video playback * */
-/* * * */
-/* * 1.0.5 - 08/15/2002 - G.Juyn * */
-/* * - completed PROM support * */
-/* * 1.0.5 - 08/16/2002 - G.Juyn * */
-/* * - completed MAGN support (16-bit functions) * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * 1.0.5 - 09/13/2002 - G.Juyn * */
-/* * - fixed read/write of MAGN chunk * */
-/* * 1.0.5 - 09/15/2002 - G.Juyn * */
-/* * - added event handling for dynamic MNG * */
-/* * 1.0.5 - 09/20/2002 - G.Juyn * */
-/* * - added support for PAST * */
-/* * 1.0.5 - 09/23/2002 - G.Juyn * */
-/* * - fixed reset_object_detail to clear old buffer * */
-/* * - added in-memory color-correction of abstract images * */
-/* * 1.0.5 - 10/05/2002 - G.Juyn * */
-/* * - fixed problem with cloned objects marked as invalid * */
-/* * - fixed problem cloning frozen object_buffers * */
-/* * 1.0.5 - 10/07/2002 - G.Juyn * */
-/* * - fixed DISC support * */
-/* * 1.0.5 - 11/04/2002 - G.Juyn * */
-/* * - fixed goframe/golayer/gotime processing * */
-/* * 1.0.5 - 11/07/2002 - G.Juyn * */
-/* * - fixed magnification bug with object 0 * */
-/* * 1.0.5 - 01/19/2003 - G.Juyn * */
-/* * - B664911 - fixed buffer overflow during init * */
-/* * * */
-/* * 1.0.6 - 04/19/2003 - G.Juyn * */
-/* * - fixed problem with infinite loops during readdisplay() * */
-/* * 1.0.6 - 05/25/2003 - G.R-P * */
-/* * - added MNG_SKIPCHUNK_cHNK footprint optimizations * */
-/* * 1.0.6 - 06/09/2003 - G. R-P * */
-/* * - added conditionals around 8-bit magn routines * */
-/* * 1.0.6 - 07/07/2003 - G.R-P * */
-/* * - added conditionals around some JNG-supporting code * */
-/* * - removed conditionals around 8-bit magn routines * */
-/* * - added conditionals around delta-png and 16-bit code * */
-/* * 1.0.6 - 07/14/2003 - G.R-P * */
-/* * - added MNG_NO_LOOP_SIGNALS_SUPPORTED conditional * */
-/* * 1.0.6 - 07/29/2003 - G.Juyn * */
-/* * - fixed invalid test in promote_imageobject * */
-/* * 1.0.6 - 07/29/2003 - G.R-P. * */
-/* * - added conditionals around PAST chunk support * */
-/* * 1.0.6 - 08/17/2003 - G.R-P. * */
-/* * - added conditionals around MAGN chunk support * */
-/* * * */
-/* * 1.0.7 - 03/21/2004 - G.Juyn * */
-/* * - fixed some 64-bit platform compiler warnings * */
-/* * * */
-/* * 1.0.9 - 10/10/2004 - G.R-P. * */
-/* * - added MNG_NO_1_2_4BIT_SUPPORT support * */
-/* * 1.0.9 - 12/05/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_OBJCLEANUP * */
-/* * 1.0.9 - 12/11/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_DISPLAYCALLS * */
-/* * 1.0.9 - 12/31/2004 - G.R-P. * */
-/* * - fixed warnings about possible uninitialized pointers * */
-/* * 1.0.9 - 01/02/2005 - G.Juyn * */
-/* * - fixing some compiler-warnings * */
-/* * * */
-/* * 1.0.10 - 02/07/2005 - G.Juyn * */
-/* * - fixed some compiler-warnings * */
-/* * 1.0.10 - 07/30/2005 - G.Juyn * */
-/* * - fixed problem with CLON object during readdisplay() * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * 1.0.10 - 04/12/2007 - G.Juyn * */
-/* * - added support for ANG proposal * */
-/* * * */
-/* ************************************************************************** */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-#include "libmng_memory.h"
-#include "libmng_chunks.h"
-#include "libmng_objects.h"
-#include "libmng_display.h"
-#include "libmng_pixels.h"
-#include "libmng_object_prc.h"
-#include "libmng_cms.h"
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_DISPLAY_PROCS
-
-/* ************************************************************************** */
-/* * * */
-/* * Generic object routines * */
-/* * * */
-/* ************************************************************************** */
-
-mng_retcode mng_drop_invalid_objects (mng_datap pData)
-{
- mng_objectp pObject;
- mng_objectp pNext;
- mng_cleanupobject fCleanup;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DROP_INVALID_OBJECTS, MNG_LC_START);
-#endif
-
- pObject = pData->pFirstimgobj; /* get first stored image-object (if any) */
-
- while (pObject) /* more objects to check ? */
- {
- pNext = ((mng_object_headerp)pObject)->pNext;
- /* invalid ? */
- if (!((mng_imagep)pObject)->bValid)
- { /* call appropriate cleanup */
- fCleanup = ((mng_object_headerp)pObject)->fCleanup;
- fCleanup (pData, pObject);
- }
-
- pObject = pNext; /* neeeext */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DROP_INVALID_OBJECTS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
-MNG_LOCAL mng_retcode create_obj_general (mng_datap pData,
- mng_size_t iObjsize,
- mng_cleanupobject fCleanup,
- mng_processobject fProcess,
- mng_ptr *ppObject)
-{
- mng_object_headerp pWork;
-
- MNG_ALLOC (pData, pWork, iObjsize);
-
- pWork->fCleanup = fCleanup;
- pWork->fProcess = fProcess;
- pWork->iObjsize = iObjsize;
- *ppObject = (mng_ptr)pWork;
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode mng_free_obj_general (mng_datap pData,
- mng_objectp pObject)
-{
- MNG_FREEX (pData, pObject, ((mng_object_headerp)pObject)->iObjsize);
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Image-data-object routines * */
-/* * * */
-/* * these handle the "object buffer" as defined by the MNG specification * */
-/* * * */
-/* ************************************************************************** */
-
-mng_retcode mng_create_imagedataobject (mng_datap pData,
- mng_bool bConcrete,
- mng_bool bViewable,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_uint8 iBitdepth,
- mng_uint8 iColortype,
- mng_uint8 iCompression,
- mng_uint8 iFilter,
- mng_uint8 iInterlace,
- mng_imagedatap *ppObject)
-{
- mng_imagedatap pImagedata;
- mng_uint32 iSamplesize = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_IMGDATAOBJECT, MNG_LC_START);
-#endif
- /* get a buffer */
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- {
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_imagedata),
- (mng_cleanupobject)mng_free_imagedataobject,
- MNG_NULL, &pTemp);
- if (iRetcode)
- return iRetcode;
- pImagedata = (mng_imagedatap)pTemp;
- }
-#else
- MNG_ALLOC (pData, pImagedata, sizeof (mng_imagedata));
- /* fill the appropriate fields */
- pImagedata->sHeader.fCleanup = (mng_cleanupobject)mng_free_imagedataobject;
- pImagedata->sHeader.fProcess = MNG_NULL;
-#endif
- pImagedata->iRefcount = 1;
- pImagedata->bFrozen = MNG_FALSE;
- pImagedata->bConcrete = bConcrete;
- pImagedata->bViewable = bViewable;
- pImagedata->iWidth = iWidth;
- pImagedata->iHeight = iHeight;
- pImagedata->iBitdepth = iBitdepth;
- pImagedata->iColortype = iColortype;
- pImagedata->iCompression = iCompression;
- pImagedata->iFilter = iFilter;
- pImagedata->iInterlace = iInterlace;
- pImagedata->bCorrected = MNG_FALSE;
- pImagedata->iAlphabitdepth = 0;
- pImagedata->iJHDRcompression = 0;
- pImagedata->iJHDRinterlace = 0;
- pImagedata->iPixelsampledepth = iBitdepth;
- pImagedata->iAlphasampledepth = iBitdepth;
- /* determine samplesize from color_type/bit_depth */
- switch (iColortype) /* for < 8-bit samples we just reserve 8 bits */
- {
- case 0 : ; /* gray */
- case 8 : { /* JPEG gray */
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth > 8)
- iSamplesize = 2;
- else
-#endif
- iSamplesize = 1;
-
- break;
- }
- case 2 : ; /* rgb */
- case 10 : { /* JPEG rgb */
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth > 8)
- iSamplesize = 6;
- else
-#endif
- iSamplesize = 3;
-
- break;
- }
- case 3 : { /* indexed */
- iSamplesize = 1;
- break;
- }
- case 4 : ; /* gray+alpha */
- case 12 : { /* JPEG gray+alpha */
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth > 8)
- iSamplesize = 4;
- else
-#endif
- iSamplesize = 2;
-
- break;
- }
- case 6 : ; /* rgb+alpha */
- case 14 : { /* JPEG rgb+alpha */
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth > 8)
- iSamplesize = 8;
- else
-#endif
- iSamplesize = 4;
-
- break;
- }
- }
- /* make sure we remember all this */
- pImagedata->iSamplesize = iSamplesize;
- pImagedata->iRowsize = iSamplesize * iWidth;
- pImagedata->iImgdatasize = pImagedata->iRowsize * iHeight;
-
- if (pImagedata->iImgdatasize) /* need a buffer ? */
- { /* so allocate it */
- MNG_ALLOCX (pData, pImagedata->pImgdata, pImagedata->iImgdatasize);
-
- if (!pImagedata->pImgdata) /* enough memory ? */
- {
- MNG_FREEX (pData, pImagedata, sizeof (mng_imagedata));
- MNG_ERROR (pData, MNG_OUTOFMEMORY);
- }
- }
- /* check global stuff */
- pImagedata->bHasGAMA = pData->bHasglobalGAMA;
-#ifndef MNG_SKIPCHUNK_cHRM
- pImagedata->bHasCHRM = pData->bHasglobalCHRM;
-#endif
- pImagedata->bHasSRGB = pData->bHasglobalSRGB;
-#ifndef MNG_SKIPCHUNK_iCCP
- pImagedata->bHasICCP = pData->bHasglobalICCP;
-#endif
-#ifndef MNG_SKIPCHUNK_bKGD
- pImagedata->bHasBKGD = pData->bHasglobalBKGD;
-#endif
-
- if (pData->bHasglobalGAMA) /* global gAMA present ? */
- pImagedata->iGamma = pData->iGlobalGamma;
-
-#ifndef MNG_SKIPCHUNK_cHRM
- if (pData->bHasglobalCHRM) /* global cHRM present ? */
- {
- pImagedata->iWhitepointx = pData->iGlobalWhitepointx;
- pImagedata->iWhitepointy = pData->iGlobalWhitepointy;
- pImagedata->iPrimaryredx = pData->iGlobalPrimaryredx;
- pImagedata->iPrimaryredy = pData->iGlobalPrimaryredy;
- pImagedata->iPrimarygreenx = pData->iGlobalPrimarygreenx;
- pImagedata->iPrimarygreeny = pData->iGlobalPrimarygreeny;
- pImagedata->iPrimarybluex = pData->iGlobalPrimarybluex;
- pImagedata->iPrimarybluey = pData->iGlobalPrimarybluey;
- }
-#endif
-
- if (pData->bHasglobalSRGB) /* glbal sRGB present ? */
- pImagedata->iRenderingintent = pData->iGlobalRendintent;
-
-#ifndef MNG_SKIPCHUNK_iCCP
- if (pData->bHasglobalICCP) /* glbal iCCP present ? */
- {
- pImagedata->iProfilesize = pData->iGlobalProfilesize;
-
- if (pImagedata->iProfilesize)
- {
- MNG_ALLOCX (pData, pImagedata->pProfile, pImagedata->iProfilesize);
-
- if (!pImagedata->pProfile) /* enough memory ? */
- {
- MNG_FREEX (pData, pImagedata->pImgdata, pImagedata->iImgdatasize);
- MNG_FREEX (pData, pImagedata, sizeof (mng_imagedata));
- MNG_ERROR (pData, MNG_OUTOFMEMORY);
- }
-
- MNG_COPY (pImagedata->pProfile, pData->pGlobalProfile, pImagedata->iProfilesize);
- }
- }
-#endif
-
-#ifndef MNG_SKIPCHUNK_bKGD
- if (pData->bHasglobalBKGD) /* global bKGD present ? */
- {
- pImagedata->iBKGDred = pData->iGlobalBKGDred;
- pImagedata->iBKGDgreen = pData->iGlobalBKGDgreen;
- pImagedata->iBKGDblue = pData->iGlobalBKGDblue;
- }
-#endif
-
- *ppObject = pImagedata; /* return it */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_IMGDATAOBJECT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_free_imagedataobject (mng_datap pData,
- mng_imagedatap pImagedata)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_IMGDATAOBJECT, MNG_LC_START);
-#endif
-
- if (pImagedata->iRefcount) /* decrease reference count */
- pImagedata->iRefcount--;
-
- if (!pImagedata->iRefcount) /* reached zero ? */
- {
-#ifndef MNG_SKIPCHUNK_iCCP
- if (pImagedata->iProfilesize) /* stored an iCCP profile ? */
- MNG_FREEX (pData, pImagedata->pProfile, pImagedata->iProfilesize);
-#endif
- if (pImagedata->iImgdatasize) /* sample-buffer present ? */
- MNG_FREEX (pData, pImagedata->pImgdata, pImagedata->iImgdatasize);
- /* drop the buffer */
- MNG_FREEX (pData, pImagedata, sizeof (mng_imagedata));
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_IMGDATAOBJECT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_clone_imagedataobject (mng_datap pData,
- mng_bool bConcrete,
- mng_imagedatap pSource,
- mng_imagedatap *ppClone)
-{
- mng_imagedatap pNewdata;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CLONE_IMGDATAOBJECT, MNG_LC_START);
-#endif
- /* get a buffer */
- MNG_ALLOC (pData, pNewdata, sizeof (mng_imagedata));
- /* blatently copy the original buffer */
- MNG_COPY (pNewdata, pSource, sizeof (mng_imagedata));
-
- pNewdata->iRefcount = 1; /* only the reference count */
- pNewdata->bConcrete = bConcrete; /* and concrete-flag are different */
- pNewdata->bFrozen = MNG_FALSE;
-
- if (pNewdata->iImgdatasize) /* sample buffer present ? */
- {
- MNG_ALLOCX (pData, pNewdata->pImgdata, pNewdata->iImgdatasize);
-
- if (!pNewdata->pImgdata) /* not enough memory ? */
- {
- MNG_FREEX (pData, pNewdata, sizeof (mng_imagedata));
- MNG_ERROR (pData, MNG_OUTOFMEMORY);
- }
- /* make a copy */
- MNG_COPY (pNewdata->pImgdata, pSource->pImgdata, pNewdata->iImgdatasize);
- }
-
-#ifndef MNG_SKIPCHUNK_iCCP
- if (pNewdata->iProfilesize) /* iCCP profile present ? */
- {
- MNG_ALLOCX (pData, pNewdata->pProfile, pNewdata->iProfilesize);
-
- if (!pNewdata->pProfile) /* enough memory ? */
- {
- MNG_FREEX (pData, pNewdata, sizeof (mng_imagedata));
- MNG_ERROR (pData, MNG_OUTOFMEMORY);
- }
- /* make a copy */
- MNG_COPY (pNewdata->pProfile, pSource->pProfile, pNewdata->iProfilesize);
- }
-#endif
-
- *ppClone = pNewdata; /* return the clone */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CLONE_IMGDATAOBJECT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-/* * * */
-/* * Image-object routines * */
-/* * * */
-/* * these handle the "object" as defined by the MNG specification * */
-/* * * */
-/* ************************************************************************** */
-
-mng_retcode mng_create_imageobject (mng_datap pData,
- mng_uint16 iId,
- mng_bool bConcrete,
- mng_bool bVisible,
- mng_bool bViewable,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_uint8 iBitdepth,
- mng_uint8 iColortype,
- mng_uint8 iCompression,
- mng_uint8 iFilter,
- mng_uint8 iInterlace,
- mng_int32 iPosx,
- mng_int32 iPosy,
- mng_bool bClipped,
- mng_int32 iClipl,
- mng_int32 iClipr,
- mng_int32 iClipt,
- mng_int32 iClipb,
- mng_imagep *ppObject)
-{
- mng_imagep pImage;
- mng_imagep pPrev, pNext;
- mng_retcode iRetcode;
- mng_imagedatap pImgbuf;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_IMGOBJECT, MNG_LC_START);
-#endif
- /* get a buffer */
- MNG_ALLOC (pData, pImage, sizeof (mng_image));
- /* now get a new "object buffer" */
- iRetcode = mng_create_imagedataobject (pData, bConcrete, bViewable,
- iWidth, iHeight, iBitdepth, iColortype,
- iCompression, iFilter, iInterlace,
- &pImgbuf);
-
- if (iRetcode) /* on error bail out */
- {
- MNG_FREEX (pData, pImage, sizeof (mng_image));
- return iRetcode;
- }
- /* fill the appropriate fields */
- pImage->sHeader.fCleanup = (mng_cleanupobject)mng_free_imageobject;
- pImage->sHeader.fProcess = MNG_NULL;
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- pImage->sHeader.iObjsize = sizeof (mng_image);
-#endif
- pImage->iId = iId;
- pImage->bFrozen = MNG_FALSE;
- pImage->bVisible = bVisible;
- pImage->bViewable = bViewable;
- pImage->bValid = (mng_bool)((pData->bDisplaying) &&
- ((pData->bRunning) || (pData->bSearching)) &&
- (!pData->bFreezing));
- pImage->iPosx = iPosx;
- pImage->iPosy = iPosy;
- pImage->bClipped = bClipped;
- pImage->iClipl = iClipl;
- pImage->iClipr = iClipr;
- pImage->iClipt = iClipt;
- pImage->iClipb = iClipb;
-#ifndef MNG_SKIPCHUNK_MAGN
- pImage->iMAGN_MethodX = 0;
- pImage->iMAGN_MethodY = 0;
- pImage->iMAGN_MX = 0;
- pImage->iMAGN_MY = 0;
- pImage->iMAGN_ML = 0;
- pImage->iMAGN_MR = 0;
- pImage->iMAGN_MT = 0;
- pImage->iMAGN_MB = 0;
-#endif
-#ifndef MNG_SKIPCHUNK_PAST
- pImage->iPastx = 0;
- pImage->iPasty = 0;
-#endif
- pImage->pImgbuf = pImgbuf;
-
- if (iId) /* only if not object 0 ! */
- { /* find previous lower object-id */
- pPrev = (mng_imagep)pData->pLastimgobj;
-
- while ((pPrev) && (pPrev->iId > iId))
- pPrev = (mng_imagep)pPrev->sHeader.pPrev;
-
- if (pPrev) /* found it ? */
- {
- pImage->sHeader.pPrev = pPrev; /* than link it in place */
- pImage->sHeader.pNext = pPrev->sHeader.pNext;
- pPrev->sHeader.pNext = pImage;
- }
- else /* if not found, it becomes the first ! */
- {
- pImage->sHeader.pNext = pData->pFirstimgobj;
- pData->pFirstimgobj = pImage;
- }
-
- pNext = (mng_imagep)pImage->sHeader.pNext;
-
- if (pNext)
- pNext->sHeader.pPrev = pImage;
- else
- pData->pLastimgobj = pImage;
-
- }
-
- *ppObject = pImage; /* and return the new buffer */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_IMGOBJECT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* okido */
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_free_imageobject (mng_datap pData,
- mng_imagep pImage)
-{
- mng_retcode iRetcode;
- mng_imagep pPrev = pImage->sHeader.pPrev;
- mng_imagep pNext = pImage->sHeader.pNext;
- mng_imagedatap pImgbuf = pImage->pImgbuf;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_IMGOBJECT, MNG_LC_START);
-#endif
-
- if (pImage->iId) /* not for object 0 */
- {
- if (pPrev) /* unlink from the list first ! */
- pPrev->sHeader.pNext = pImage->sHeader.pNext;
- else
- pData->pFirstimgobj = pImage->sHeader.pNext;
-
- if (pNext)
- pNext->sHeader.pPrev = pImage->sHeader.pPrev;
- else
- pData->pLastimgobj = pImage->sHeader.pPrev;
-
- }
- /* unlink the image-data buffer */
- iRetcode = mng_free_imagedataobject (pData, pImgbuf);
- /* drop its own buffer */
- MNG_FREEX (pData, pImage, sizeof (mng_image));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_IMGOBJECT, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-mng_imagep mng_find_imageobject (mng_datap pData,
- mng_uint16 iId)
-{
- mng_imagep pImage = (mng_imagep)pData->pFirstimgobj;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (pData, MNG_FN_FIND_IMGOBJECT, MNG_LC_START);
-#endif
- /* look up the right id */
- while ((pImage) && (pImage->iId != iId))
- pImage = (mng_imagep)pImage->sHeader.pNext;
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- if ((!pImage) && (pData->eImagetype == mng_it_mpng))
- pImage = pData->pObjzero;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (pData, MNG_FN_FIND_IMGOBJECT, MNG_LC_END);
-#endif
-
- return pImage;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_clone_imageobject (mng_datap pData,
- mng_uint16 iId,
- mng_bool bPartial,
- mng_bool bVisible,
- mng_bool bAbstract,
- mng_bool bHasloca,
- mng_uint8 iLocationtype,
- mng_int32 iLocationx,
- mng_int32 iLocationy,
- mng_imagep pSource,
- mng_imagep *ppClone)
-{
- mng_imagep pNew;
- mng_imagep pPrev, pNext;
- mng_retcode iRetcode;
- mng_imagedatap pImgbuf;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CLONE_IMGOBJECT, MNG_LC_START);
-#endif
-
-#ifndef MNG_SKIPCHUNK_MAGN
- if ((pSource->iId) && /* needs magnification ? */
- ((pSource->iMAGN_MethodX) || (pSource->iMAGN_MethodY)))
- {
- iRetcode = mng_magnify_imageobject (pData, pSource);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif
- /* get a buffer */
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- {
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_image),
- (mng_cleanupobject)mng_free_imageobject,
- MNG_NULL, &pTemp);
- if (iRetcode)
- return iRetcode;
- pNew = (mng_imagep)pTemp;
- }
-#else
- MNG_ALLOC (pData, pNew, sizeof (mng_image));
- /* fill or copy the appropriate fields */
- pNew->sHeader.fCleanup = (mng_cleanupobject)mng_free_imageobject;
- pNew->sHeader.fProcess = MNG_NULL;
-#endif
- pNew->iId = iId;
- pNew->bFrozen = MNG_FALSE;
- pNew->bVisible = bVisible;
- pNew->bViewable = pSource->bViewable;
- pNew->bValid = MNG_TRUE;
-
- if (bHasloca) /* location info available ? */
- {
- if (iLocationtype == 0) /* absolute position ? */
- {
- pNew->iPosx = iLocationx;
- pNew->iPosy = iLocationy;
- }
- else /* relative */
- {
- pNew->iPosx = pSource->iPosx + iLocationx;
- pNew->iPosy = pSource->iPosy + iLocationy;
- }
- }
- else /* copy from source */
- {
- pNew->iPosx = pSource->iPosx;
- pNew->iPosy = pSource->iPosy;
- }
- /* copy clipping info */
- pNew->bClipped = pSource->bClipped;
- pNew->iClipl = pSource->iClipl;
- pNew->iClipr = pSource->iClipr;
- pNew->iClipt = pSource->iClipt;
- pNew->iClipb = pSource->iClipb;
-#ifndef MNG_SKIPCHUNK_MAGN
- /* copy magnification info */
-/* pNew->iMAGN_MethodX = pSource->iMAGN_MethodX; LET'S NOT !!!!!!
- pNew->iMAGN_MethodY = pSource->iMAGN_MethodY;
- pNew->iMAGN_MX = pSource->iMAGN_MX;
- pNew->iMAGN_MY = pSource->iMAGN_MY;
- pNew->iMAGN_ML = pSource->iMAGN_ML;
- pNew->iMAGN_MR = pSource->iMAGN_MR;
- pNew->iMAGN_MT = pSource->iMAGN_MT;
- pNew->iMAGN_MB = pSource->iMAGN_MB; */
-#endif
-
-#ifndef MNG_SKIPCHUNK_PAST
- pNew->iPastx = 0; /* initialize PAST info */
- pNew->iPasty = 0;
-#endif
-
- if (iId) /* not for object 0 */
- { /* find previous lower object-id */
- pPrev = (mng_imagep)pData->pLastimgobj;
- while ((pPrev) && (pPrev->iId > iId))
- pPrev = (mng_imagep)pPrev->sHeader.pPrev;
-
- if (pPrev) /* found it ? */
- {
- pNew->sHeader.pPrev = pPrev; /* than link it in place */
- pNew->sHeader.pNext = pPrev->sHeader.pNext;
- pPrev->sHeader.pNext = pNew;
- }
- else /* if not found, it becomes the first ! */
- {
- pNew->sHeader.pNext = pData->pFirstimgobj;
- pData->pFirstimgobj = pNew;
- }
-
- pNext = (mng_imagep)pNew->sHeader.pNext;
-
- if (pNext)
- pNext->sHeader.pPrev = pNew;
- else
- pData->pLastimgobj = pNew;
-
- }
-
- if (bPartial) /* partial clone ? */
- {
- pNew->pImgbuf = pSource->pImgbuf; /* use the same object buffer */
- pNew->pImgbuf->iRefcount++; /* and increase the reference count */
- }
- else /* create a full clone ! */
- {
- mng_bool bConcrete = MNG_FALSE; /* it's abstract by default (?) */
-
- if (!bAbstract) /* determine concreteness from source ? */
- bConcrete = pSource->pImgbuf->bConcrete;
- /* create a full clone ! */
- iRetcode = mng_clone_imagedataobject (pData, bConcrete, pSource->pImgbuf, &pImgbuf);
-
- if (iRetcode) /* on error bail out */
- {
- MNG_FREEX (pData, pNew, sizeof (mng_image));
- return iRetcode;
- }
-
- pNew->pImgbuf = pImgbuf; /* and remember it */
- }
-
- *ppClone = pNew; /* return it */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CLONE_IMGOBJECT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_renum_imageobject (mng_datap pData,
- mng_imagep pSource,
- mng_uint16 iId,
- mng_bool bVisible,
- mng_bool bAbstract,
- mng_bool bHasloca,
- mng_uint8 iLocationtype,
- mng_int32 iLocationx,
- mng_int32 iLocationy)
-{
- mng_imagep pPrev, pNext;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RENUM_IMGOBJECT, MNG_LC_START);
-#endif
-
- pSource->bVisible = bVisible; /* store the new visibility */
-
- if (bHasloca) /* location info available ? */
- {
- if (iLocationtype == 0) /* absolute position ? */
- {
- pSource->iPosx = iLocationx;
- pSource->iPosy = iLocationy;
- }
- else /* relative */
- {
- pSource->iPosx = pSource->iPosx + iLocationx;
- pSource->iPosy = pSource->iPosy + iLocationy;
- }
- }
-
- if (iId) /* not for object 0 */
- { /* find previous lower object-id */
- pPrev = (mng_imagep)pData->pLastimgobj;
- while ((pPrev) && (pPrev->iId > iId))
- pPrev = (mng_imagep)pPrev->sHeader.pPrev;
- /* different from current ? */
- if (pPrev != (mng_imagep)pSource->sHeader.pPrev)
- {
- if (pSource->sHeader.pPrev) /* unlink from current position !! */
- ((mng_imagep)pSource->sHeader.pPrev)->sHeader.pNext = pSource->sHeader.pNext;
- else
- pData->pFirstimgobj = pSource->sHeader.pNext;
-
- if (pSource->sHeader.pNext)
- ((mng_imagep)pSource->sHeader.pNext)->sHeader.pPrev = pSource->sHeader.pPrev;
- else
- pData->pLastimgobj = pSource->sHeader.pPrev;
-
- if (pPrev) /* found the previous ? */
- { /* than link it in place */
- pSource->sHeader.pPrev = pPrev;
- pSource->sHeader.pNext = pPrev->sHeader.pNext;
- pPrev->sHeader.pNext = pSource;
- }
- else /* if not found, it becomes the first ! */
- {
- pSource->sHeader.pNext = pData->pFirstimgobj;
- pData->pFirstimgobj = pSource;
- }
-
- pNext = (mng_imagep)pSource->sHeader.pNext;
-
- if (pNext)
- pNext->sHeader.pPrev = pSource;
- else
- pData->pLastimgobj = pSource;
-
- }
- }
-
- pSource->iId = iId; /* now set the new id! */
-
- if (bAbstract) /* force it to abstract ? */
- pSource->pImgbuf->bConcrete = MNG_FALSE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RENUM_IMGOBJECT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_reset_object_details (mng_datap pData,
- mng_imagep pImage,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_uint8 iBitdepth,
- mng_uint8 iColortype,
- mng_uint8 iCompression,
- mng_uint8 iFilter,
- mng_uint8 iInterlace,
- mng_bool bResetall)
-{
- mng_imagedatap pBuf = pImage->pImgbuf;
- mng_uint32 iSamplesize = 0;
- mng_uint32 iRowsize;
- mng_uint32 iImgdatasize;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESET_OBJECTDETAILS, MNG_LC_START);
-#endif
-
- pBuf->iWidth = iWidth; /* set buffer characteristics */
- pBuf->iHeight = iHeight;
- pBuf->iBitdepth = iBitdepth;
- pBuf->iColortype = iColortype;
- pBuf->iCompression = iCompression;
- pBuf->iFilter = iFilter;
- pBuf->iInterlace = iInterlace;
- pBuf->bCorrected = MNG_FALSE;
- pBuf->iAlphabitdepth = 0;
- /* determine samplesize from color_type/bit_depth */
- switch (iColortype) /* for < 8-bit samples we just reserve 8 bits */
- {
- case 0 : ; /* gray */
- case 8 : { /* JPEG gray */
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth > 8)
- iSamplesize = 2;
- else
-#endif
- iSamplesize = 1;
-
- break;
- }
- case 2 : ; /* rgb */
- case 10 : { /* JPEG rgb */
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth > 8)
- iSamplesize = 6;
- else
-#endif
- iSamplesize = 3;
-
- break;
- }
- case 3 : { /* indexed */
- iSamplesize = 1;
- break;
- }
- case 4 : ; /* gray+alpha */
- case 12 : { /* JPEG gray+alpha */
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth > 8)
- iSamplesize = 4;
- else
-#endif
- iSamplesize = 2;
-
- break;
- }
- case 6 : ; /* rgb+alpha */
- case 14 : { /* JPEG rgb+alpha */
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth > 8)
- iSamplesize = 8;
- else
-#endif
- iSamplesize = 4;
-
- break;
- }
- }
-
- iRowsize = iSamplesize * iWidth;
- iImgdatasize = iRowsize * iHeight;
- /* buffer size changed ? */
- if (iImgdatasize != pBuf->iImgdatasize)
- { /* drop the old one */
- MNG_FREE (pData, pBuf->pImgdata, pBuf->iImgdatasize);
-
- if (iImgdatasize) /* allocate new sample-buffer ? */
- MNG_ALLOC (pData, pBuf->pImgdata, iImgdatasize);
- }
- else
- {
- if (iImgdatasize) /* clear old buffer */
- {
- mng_uint8p pTemp = pBuf->pImgdata;
- mng_uint32 iX;
-
- for (iX = 0; iX < (iImgdatasize & (mng_uint32)(~3L)); iX += 4)
- {
- *((mng_uint32p)pTemp) = 0x00000000l;
- pTemp += 4;
- }
-
- while (pTemp < (pBuf->pImgdata + iImgdatasize))
- {
- *pTemp = 0;
- pTemp++;
- }
- }
- }
-
- pBuf->iSamplesize = iSamplesize; /* remember new sizes */
- pBuf->iRowsize = iRowsize;
- pBuf->iImgdatasize = iImgdatasize;
-
- if (!pBuf->iPixelsampledepth) /* set delta sampledepths if empty */
- pBuf->iPixelsampledepth = iBitdepth;
- if (!pBuf->iAlphasampledepth)
- pBuf->iAlphasampledepth = iBitdepth;
- /* dimension set and clipping not ? */
- if ((iWidth) && (iHeight) && (!pImage->bClipped))
- {
- pImage->iClipl = 0; /* set clipping to dimension by default */
- pImage->iClipr = iWidth;
- pImage->iClipt = 0;
- pImage->iClipb = iHeight;
- }
-
-#ifndef MNG_SKIPCHUNK_MAGN
- if (pImage->iId) /* reset magnification info ? */
- {
- pImage->iMAGN_MethodX = 0;
- pImage->iMAGN_MethodY = 0;
- pImage->iMAGN_MX = 0;
- pImage->iMAGN_MY = 0;
- pImage->iMAGN_ML = 0;
- pImage->iMAGN_MR = 0;
- pImage->iMAGN_MT = 0;
- pImage->iMAGN_MB = 0;
- }
-#endif
-
- if (bResetall) /* reset the other characteristics ? */
- {
-#ifndef MNG_SKIPCHUNK_PAST
- pImage->iPastx = 0;
- pImage->iPasty = 0;
-#endif
-
- pBuf->bHasPLTE = MNG_FALSE;
- pBuf->bHasTRNS = MNG_FALSE;
- pBuf->bHasGAMA = pData->bHasglobalGAMA;
-#ifndef MNG_SKIPCHUNK_cHRM
- pBuf->bHasCHRM = pData->bHasglobalCHRM;
-#endif
- pBuf->bHasSRGB = pData->bHasglobalSRGB;
-#ifndef MNG_SKIPCHUNK_iCCP
- pBuf->bHasICCP = pData->bHasglobalICCP;
-#endif
-#ifndef MNG_SKIPCHUNK_bKGD
- pBuf->bHasBKGD = pData->bHasglobalBKGD;
-#endif
-
-#ifndef MNG_SKIPCHUNK_iCCP
- if (pBuf->iProfilesize) /* drop possibly old ICC profile */
- {
- MNG_FREE (pData, pBuf->pProfile, pBuf->iProfilesize);
- pBuf->iProfilesize = 0;
- }
-#endif
-
- if (pData->bHasglobalGAMA) /* global gAMA present ? */
- pBuf->iGamma = pData->iGlobalGamma;
-
-#ifndef MNG_SKIPCHUNK_cHRM
- if (pData->bHasglobalCHRM) /* global cHRM present ? */
- {
- pBuf->iWhitepointx = pData->iGlobalWhitepointx;
- pBuf->iWhitepointy = pData->iGlobalWhitepointy;
- pBuf->iPrimaryredx = pData->iGlobalPrimaryredx;
- pBuf->iPrimaryredy = pData->iGlobalPrimaryredy;
- pBuf->iPrimarygreenx = pData->iGlobalPrimarygreenx;
- pBuf->iPrimarygreeny = pData->iGlobalPrimarygreeny;
- pBuf->iPrimarybluex = pData->iGlobalPrimarybluex;
- pBuf->iPrimarybluey = pData->iGlobalPrimarybluey;
- }
-#endif
-
- if (pData->bHasglobalSRGB) /* global sRGB present ? */
- pBuf->iRenderingintent = pData->iGlobalRendintent;
-
-#ifndef MNG_SKIPCHUNK_iCCP
- if (pData->bHasglobalICCP) /* global iCCP present ? */
- {
- if (pData->iGlobalProfilesize)
- {
- MNG_ALLOC (pData, pBuf->pProfile, pData->iGlobalProfilesize);
- MNG_COPY (pBuf->pProfile, pData->pGlobalProfile, pData->iGlobalProfilesize);
- }
-
- pBuf->iProfilesize = pData->iGlobalProfilesize;
- }
-#endif
-
-#ifndef MNG_SKIPCHUNK_bKGD
- if (pData->bHasglobalBKGD) /* global bKGD present ? */
- {
- pBuf->iBKGDred = pData->iGlobalBKGDred;
- pBuf->iBKGDgreen = pData->iGlobalBKGDgreen;
- pBuf->iBKGDblue = pData->iGlobalBKGDblue;
- }
-#endif
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESET_OBJECTDETAILS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#if !defined(MNG_NO_DELTA_PNG) || !defined(MNG_SKIPCHUNK_PAST) || !defined(MNG_SKIPCHUNK_MAGN)
-mng_retcode mng_promote_imageobject (mng_datap pData,
- mng_imagep pImage,
- mng_uint8 iBitdepth,
- mng_uint8 iColortype,
- mng_uint8 iFilltype)
-{
- mng_retcode iRetcode = MNG_NOERROR;
- mng_imagedatap pBuf = pImage->pImgbuf;
- mng_uint32 iW = pBuf->iWidth;
- mng_uint32 iH = pBuf->iHeight;
- mng_uint8p pNewbuf;
- mng_uint32 iNewbufsize;
- mng_uint32 iNewrowsize;
- mng_uint32 iNewsamplesize = pBuf->iSamplesize;
- mng_uint32 iY;
- mng_uint8 iTempdepth;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_IMGOBJECT, MNG_LC_START);
-#endif
-
-#ifdef MNG_NO_1_2_4BIT_SUPPORT
- if (iBitdepth < 8)
- iBitdepth=8;
- if (pBuf->iBitdepth < 8)
- pBuf->iBitdepth=8;
-#endif
-#ifdef MNG_NO_16BIT_SUPPORT
- if (iBitdepth > 8)
- iBitdepth=8;
- if (pBuf->iBitdepth > 8)
- pBuf->iBitdepth=8;
-#endif
-
- pData->fPromoterow = MNG_NULL; /* init promotion fields */
- pData->fPromBitdepth = MNG_NULL;
- pData->iPromColortype = iColortype;
- pData->iPromBitdepth = iBitdepth;
- pData->iPromFilltype = iFilltype;
-
- if (iBitdepth != pBuf->iBitdepth) /* determine bitdepth promotion */
- {
- if (pBuf->iColortype == MNG_COLORTYPE_INDEXED)
- iTempdepth = 8;
- else
- iTempdepth = pBuf->iBitdepth;
-
-#ifndef MNG_NO_DELTA_PNG
- if (iFilltype == MNG_FILLMETHOD_ZEROFILL)
- {
- switch (iTempdepth)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : {
- switch (iBitdepth)
- {
- case 2 : { pData->fPromBitdepth = (mng_fptr)mng_promote_zerofill_1_2; break; }
- case 4 : { pData->fPromBitdepth = (mng_fptr)mng_promote_zerofill_1_4; break; }
- case 8 : { pData->fPromBitdepth = (mng_fptr)mng_promote_zerofill_1_8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fPromBitdepth = (mng_fptr)mng_promote_zerofill_1_16; break; }
-#endif
- }
- break;
- }
- case 2 : {
- switch (iBitdepth)
- {
- case 4 : { pData->fPromBitdepth = (mng_fptr)mng_promote_zerofill_2_4; break; }
- case 8 : { pData->fPromBitdepth = (mng_fptr)mng_promote_zerofill_2_8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fPromBitdepth = (mng_fptr)mng_promote_zerofill_2_16; break; }
-#endif
- }
- break;
- }
- case 4 : {
- switch (iBitdepth)
- {
- case 8 : { pData->fPromBitdepth = (mng_fptr)mng_promote_zerofill_4_8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fPromBitdepth = (mng_fptr)mng_promote_zerofill_4_16; break; }
-#endif
- }
- break;
- }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case 8 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16)
- pData->fPromBitdepth = (mng_fptr)mng_promote_zerofill_8_16;
-#endif
- break;
- }
- }
- }
- else
-#endif
- {
- switch (iTempdepth)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case 1 : {
- switch (iBitdepth)
- {
- case 2 : { pData->fPromBitdepth = (mng_fptr)mng_promote_replicate_1_2; break; }
- case 4 : { pData->fPromBitdepth = (mng_fptr)mng_promote_replicate_1_4; break; }
- case 8 : { pData->fPromBitdepth = (mng_fptr)mng_promote_replicate_1_8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fPromBitdepth = (mng_fptr)mng_promote_replicate_1_16; break; }
-#endif
- }
- break;
- }
- case 2 : {
- switch (iBitdepth)
- {
- case 4 : { pData->fPromBitdepth = (mng_fptr)mng_promote_replicate_2_4; break; }
- case 8 : { pData->fPromBitdepth = (mng_fptr)mng_promote_replicate_2_8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fPromBitdepth = (mng_fptr)mng_promote_replicate_2_16; break; }
-#endif
- }
- break;
- }
- case 4 : {
- switch (iBitdepth)
- {
- case 8 : { pData->fPromBitdepth = (mng_fptr)mng_promote_replicate_4_8; break; }
-#ifndef MNG_NO_16BIT_SUPPORT
- case 16 : { pData->fPromBitdepth = (mng_fptr)mng_promote_replicate_4_16; break; }
-#endif
- }
- break;
- }
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case 8 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16)
- pData->fPromBitdepth = (mng_fptr)mng_promote_replicate_8_16;
-#endif
- break;
- }
- }
- }
- }
- /* g -> g */
- if ((pBuf->iColortype == MNG_COLORTYPE_GRAY) &&
- (iColortype == MNG_COLORTYPE_GRAY))
- {
- if (pBuf->iBitdepth <= 8) /* source <= 8 bits */
- {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_g8_g16;
- else
-#endif
- pData->fPromoterow = (mng_fptr)mng_promote_g8_g8;
- }
-
- iNewsamplesize = 1;
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16) /* 16-bit wide ? */
- iNewsamplesize = 2;
-#endif
- }
- else /* g -> ga */
- if ((pBuf->iColortype == MNG_COLORTYPE_GRAY) &&
- (iColortype == MNG_COLORTYPE_GRAYA))
- {
- if (pBuf->iBitdepth <= 8) /* source <= 8 bits */
- {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_g8_ga16;
- else
-#endif
- pData->fPromoterow = (mng_fptr)mng_promote_g8_ga8;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- else /* source = 16 bits */
- pData->fPromoterow = (mng_fptr)mng_promote_g16_ga16;
-#endif
-
- iNewsamplesize = 2;
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16) /* 16-bit wide ? */
- iNewsamplesize = 4;
-#endif
- }
- else /* g -> rgb */
- if ((pBuf->iColortype == MNG_COLORTYPE_GRAY) &&
- (iColortype == MNG_COLORTYPE_RGB))
- {
- if (pBuf->iBitdepth <= 8) /* source <= 8 bits */
- {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_g8_rgb16;
- else
-#endif
- pData->fPromoterow = (mng_fptr)mng_promote_g8_rgb8;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- else /* source = 16 bits */
- pData->fPromoterow = (mng_fptr)mng_promote_g16_rgb16;
-#endif
-
- iNewsamplesize = 3;
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16) /* 16-bit wide ? */
- iNewsamplesize = 6;
-#endif
- }
- else /* g -> rgba */
- if ((pBuf->iColortype == MNG_COLORTYPE_GRAY) &&
- (iColortype == MNG_COLORTYPE_RGBA))
- {
- if (pBuf->iBitdepth <= 8) /* source <= 8 bits */
- {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_g8_rgba16;
- else
-#endif
- pData->fPromoterow = (mng_fptr)mng_promote_g8_rgba8;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- else /* source = 16 bits */
- pData->fPromoterow = (mng_fptr)mng_promote_g16_rgba16;
-#endif
-
- iNewsamplesize = 4;
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16) /* 16-bit wide ? */
- iNewsamplesize = 8;
-#endif
- }
- else /* ga -> ga */
- if ((pBuf->iColortype == MNG_COLORTYPE_GRAYA) &&
- (iColortype == MNG_COLORTYPE_GRAYA))
- {
- iNewsamplesize = 2;
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pBuf->iBitdepth <= 8) /* source <= 8 bits */
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_ga8_ga16;
- if (iBitdepth == 16)
- iNewsamplesize = 4;
-#endif
- }
- else /* ga -> rgba */
- if ((pBuf->iColortype == MNG_COLORTYPE_GRAYA) &&
- (iColortype == MNG_COLORTYPE_RGBA))
- {
- if (pBuf->iBitdepth <= 8) /* source <= 8 bits */
- {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_ga8_rgba16;
- else
-#endif
- pData->fPromoterow = (mng_fptr)mng_promote_ga8_rgba8;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- else /* source = 16 bits */
- pData->fPromoterow = (mng_fptr)mng_promote_ga16_rgba16;
-#endif
-
- iNewsamplesize = 4;
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16) /* 16-bit wide ? */
- iNewsamplesize = 8;
-#endif
- }
- else /* rgb -> rgb */
- if ((pBuf->iColortype == MNG_COLORTYPE_RGB) &&
- (iColortype == MNG_COLORTYPE_RGB))
- {
- iNewsamplesize = 3;
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pBuf->iBitdepth <= 8) /* source <= 8 bits */
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_rgb8_rgb16;
- if (iBitdepth == 16)
- iNewsamplesize = 6;
-#endif
- }
- else /* rgb -> rgba */
- if ((pBuf->iColortype == MNG_COLORTYPE_RGB) &&
- (iColortype == MNG_COLORTYPE_RGBA))
- {
- if (pBuf->iBitdepth <= 8) /* source <= 8 bits */
- {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_rgb8_rgba16;
- else
-#endif
- pData->fPromoterow = (mng_fptr)mng_promote_rgb8_rgba8;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- else /* source = 16 bits */
- pData->fPromoterow = (mng_fptr)mng_promote_rgb16_rgba16;
-#endif
-
- iNewsamplesize = 4;
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16) /* 16-bit wide ? */
- iNewsamplesize = 8;
-#endif
- }
- else /* indexed -> rgb */
- if ((pBuf->iColortype == MNG_COLORTYPE_INDEXED) &&
- (iColortype == MNG_COLORTYPE_RGB))
- {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_idx8_rgb16;
- else
-#endif
- pData->fPromoterow = (mng_fptr)mng_promote_idx8_rgb8;
-
- iNewsamplesize = 3;
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16) /* 16-bit wide ? */
- iNewsamplesize = 6;
-#endif
- }
- else /* indexed -> rgba */
- if ((pBuf->iColortype == MNG_COLORTYPE_INDEXED) &&
- (iColortype == MNG_COLORTYPE_RGBA))
- {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_idx8_rgba16;
- else
-#endif
- pData->fPromoterow = (mng_fptr)mng_promote_idx8_rgba8;
-
- iNewsamplesize = 4;
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16) /* 16-bit wide ? */
- iNewsamplesize = 8;
-#endif
- }
- else /* rgba -> rgba */
- if ((pBuf->iColortype == MNG_COLORTYPE_RGBA) &&
- (iColortype == MNG_COLORTYPE_RGBA))
- {
- iNewsamplesize = 4;
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pBuf->iBitdepth <= 8) /* source <= 8 bits */
- {
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_rgba8_rgba16;
- }
- if (iBitdepth == 16) /* 16-bit wide ? */
- iNewsamplesize = 8;
-#endif
- }
-#ifdef MNG_INCLUDE_JNG
- else /* JPEG g -> g */
- if ((pBuf->iColortype == MNG_COLORTYPE_JPEGGRAY) &&
- (iColortype == MNG_COLORTYPE_JPEGGRAY))
- {
- if (pBuf->iBitdepth <= 8) /* source <= 8 bits */
- {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_g8_g16;
- else
-#endif
- pData->fPromoterow = (mng_fptr)mng_promote_g8_g8;
- }
-
- iNewsamplesize = 1;
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16) /* 16-bit wide ? */
- iNewsamplesize = 2;
-#endif
- }
- else /* JPEG g -> ga */
- if ((pBuf->iColortype == MNG_COLORTYPE_JPEGGRAY) &&
- (iColortype == MNG_COLORTYPE_JPEGGRAYA))
- {
- if (pBuf->iBitdepth <= 8) /* source <= 8 bits */
- {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_g8_ga16;
- else
-#endif
- pData->fPromoterow = (mng_fptr)mng_promote_g8_ga8;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- else /* source = 16 bits */
- pData->fPromoterow = (mng_fptr)mng_promote_g16_ga16;
-#endif
-
- iNewsamplesize = 2;
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16) /* 16-bit wide ? */
- iNewsamplesize = 4;
-#endif
- }
- else /* JPEG g -> rgb */
- if ((pBuf->iColortype == MNG_COLORTYPE_JPEGGRAY) &&
- (iColortype == MNG_COLORTYPE_JPEGCOLOR))
- {
- if (pBuf->iBitdepth <= 8) /* source <= 8 bits */
- {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_g8_rgb16;
- else
-#endif
- pData->fPromoterow = (mng_fptr)mng_promote_g8_rgb8;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- else /* source = 16 bits */
- pData->fPromoterow = (mng_fptr)mng_promote_g16_rgb16;
-#endif
-
- iNewsamplesize = 3;
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16) /* 16-bit wide ? */
- iNewsamplesize = 6;
-#endif
- }
- else /* JPEG g -> rgba */
- if ((pBuf->iColortype == MNG_COLORTYPE_JPEGGRAY) &&
- (iColortype == MNG_COLORTYPE_JPEGCOLORA))
- {
- if (pBuf->iBitdepth <= 8) /* source <= 8 bits */
- {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_g8_rgba16;
- else
-#endif
- pData->fPromoterow = (mng_fptr)mng_promote_g8_rgba8;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- else /* source = 16 bits */
- pData->fPromoterow = (mng_fptr)mng_promote_g16_rgba16;
-#endif
-
- iNewsamplesize = 4;
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16) /* 16-bit wide ? */
- iNewsamplesize = 8;
-#endif
- }
- else /* JPEG ga -> ga */
- if ((pBuf->iColortype == MNG_COLORTYPE_JPEGGRAYA) &&
- (iColortype == MNG_COLORTYPE_JPEGGRAYA))
- {
- iNewsamplesize = 2;
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pBuf->iBitdepth <= 8) /* source <= 8 bits */
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_ga8_ga16;
- if (iBitdepth == 16)
- iNewsamplesize = 4;
-#endif
-
- }
- else /* JPEG ga -> rgba */
- if ((pBuf->iColortype == MNG_COLORTYPE_JPEGGRAYA) &&
- (iColortype == MNG_COLORTYPE_JPEGCOLORA))
- {
- if (pBuf->iBitdepth <= 8) /* source <= 8 bits */
- {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_ga8_rgba16;
- else
-#endif
- pData->fPromoterow = (mng_fptr)mng_promote_ga8_rgba8;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- else /* source = 16 bits */
- pData->fPromoterow = (mng_fptr)mng_promote_ga16_rgba16;
-#endif
-
- iNewsamplesize = 4;
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16) /* 16-bit wide ? */
- iNewsamplesize = 8;
-#endif
- }
- else /* JPEG rgb -> rgb */
- if ((pBuf->iColortype == MNG_COLORTYPE_JPEGCOLOR) &&
- (iColortype == MNG_COLORTYPE_JPEGCOLOR))
- {
- iNewsamplesize = 3;
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pBuf->iBitdepth <= 8) /* source <= 8 bits */
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_rgb8_rgb16;
- if (iBitdepth == 16)
- iNewsamplesize = 6;
-#endif
-
- }
- else /* JPEG rgb -> rgba */
- if ((pBuf->iColortype == MNG_COLORTYPE_JPEGCOLOR) &&
- (iColortype == MNG_COLORTYPE_JPEGCOLORA))
- {
- if (pBuf->iBitdepth <= 8) /* source <= 8 bits */
- {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_rgb8_rgba16;
- else
-#endif
- pData->fPromoterow = (mng_fptr)mng_promote_rgb8_rgba8;
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- else /* source = 16 bits */
- pData->fPromoterow = (mng_fptr)mng_promote_rgb16_rgba16;
-#endif
-
- iNewsamplesize = 4;
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (iBitdepth == 16) /* 16-bit wide ? */
- iNewsamplesize = 8;
-#endif
- }
- else /* JPEG rgba -> rgba */
- if ((pBuf->iColortype == MNG_COLORTYPE_JPEGCOLORA) &&
- (iColortype == MNG_COLORTYPE_JPEGCOLORA))
- {
- iNewsamplesize = 4;
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pBuf->iBitdepth <= 8) /* source <= 8 bits */
- if (iBitdepth == 16)
- pData->fPromoterow = (mng_fptr)mng_promote_rgba8_rgba16;
- if (iBitdepth == 16)
- iNewsamplesize = 8;
-#endif
- }
-#endif /* JNG */
-
- /* found a proper promotion ? */
- if (pData->fPromoterow)
- {
- pData->pPromBuf = (mng_ptr)pBuf;
- pData->iPromWidth = pBuf->iWidth;
- iNewrowsize = iW * iNewsamplesize;
- iNewbufsize = iH * iNewrowsize;
-
- MNG_ALLOC (pData, pNewbuf, iNewbufsize);
-
- pData->pPromSrc = (mng_ptr)pBuf->pImgdata;
- pData->pPromDst = (mng_ptr)pNewbuf;
- iY = 0;
-
- while ((!iRetcode) && (iY < iH))
- {
- iRetcode = ((mng_promoterow)pData->fPromoterow) (pData);
- pData->pPromSrc = (mng_uint8p)pData->pPromSrc + pBuf->iRowsize;
- pData->pPromDst = (mng_uint8p)pData->pPromDst + iNewrowsize;
-/* pData->pPromSrc = (mng_ptr)((mng_uint32)pData->pPromSrc + pBuf->iRowsize); */
-/* pData->pPromDst = (mng_ptr)((mng_uint32)pData->pPromDst + iNewrowsize); */
- iY++;
- }
-
- MNG_FREEX (pData, pBuf->pImgdata, pBuf->iImgdatasize);
-
- pBuf->iBitdepth = iBitdepth;
- pBuf->iColortype = iColortype;
- pBuf->iSamplesize = iNewsamplesize;
- pBuf->iRowsize = iNewrowsize;
- pBuf->iImgdatasize = iNewbufsize;
- pBuf->pImgdata = pNewbuf;
- pBuf->bHasPLTE = MNG_FALSE;
- pBuf->iPLTEcount = 0;
- pBuf->bHasTRNS = MNG_FALSE;
- pBuf->iTRNScount = 0;
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_IMGOBJECT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_MAGN
-mng_retcode mng_magnify_imageobject (mng_datap pData,
- mng_imagep pImage)
-{
- mng_uint8p pNewdata;
- mng_uint8p pSrcline1;
- mng_uint8p pSrcline2;
- mng_uint8p pTempline;
- mng_uint8p pDstline;
- mng_uint32 iNewrowsize;
- mng_uint32 iNewsize;
- mng_uint32 iY;
- mng_int32 iS, iM;
- mng_retcode iRetcode;
-
- mng_imagedatap pBuf = pImage->pImgbuf;
- mng_uint32 iNewW = pBuf->iWidth;
- mng_uint32 iNewH = pBuf->iHeight;
- mng_magnify_x fMagnifyX = MNG_NULL;
- mng_magnify_y fMagnifyY = MNG_NULL;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_IMGOBJECT, MNG_LC_START);
-#endif
-
- if (pBuf->iColortype == MNG_COLORTYPE_INDEXED) /* indexed color ? */
- { /* concrete buffer ? */
- if ((pBuf->bConcrete) && (pImage->iId))
- MNG_ERROR (pData, MNG_INVALIDCOLORTYPE);
-
-#ifndef MNG_OPTIMIZE_FOOTPRINT_MAGN
- if (pBuf->iTRNScount) /* with transparency ? */
- iRetcode = mng_promote_imageobject (pData, pImage, 8, 6, 0);
- else
- iRetcode = mng_promote_imageobject (pData, pImage, 8, 2, 0);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-#endif
- }
-
-#ifdef MNG_OPTIMIZE_FOOTPRINT_MAGN
- /* Promote everything to RGBA, using fill method 0 (LBR) */
- iRetcode = mng_promote_imageobject (pData, pImage, 8, 6, 0);
- if (iRetcode) /* on error bail out */
- return iRetcode;
-#endif
-
- if (pImage->iMAGN_MethodX) /* determine new width */
- {
- if (pImage->iMAGN_MethodX == 1)
- {
- iNewW = pImage->iMAGN_ML;
- if (pBuf->iWidth > 1)
- iNewW = iNewW + pImage->iMAGN_MR;
- if (pBuf->iWidth > 2)
- iNewW = iNewW + (pBuf->iWidth - 2) * (pImage->iMAGN_MX);
- }
- else
- {
- iNewW = pBuf->iWidth + pImage->iMAGN_ML - 1;
- if (pBuf->iWidth > 2)
- iNewW = iNewW + pImage->iMAGN_MR - 1;
- if (pBuf->iWidth > 3)
- iNewW = iNewW + (pBuf->iWidth - 3) * (pImage->iMAGN_MX - 1);
- }
- }
-
- if (pImage->iMAGN_MethodY) /* determine new height */
- {
- if (pImage->iMAGN_MethodY == 1)
- {
- iNewH = pImage->iMAGN_MT;
- if (pBuf->iHeight > 1)
- iNewH = iNewH + pImage->iMAGN_ML;
- if (pBuf->iHeight > 2)
- iNewH = iNewH + (pBuf->iHeight - 2) * (pImage->iMAGN_MY);
- }
- else
- {
- iNewH = pBuf->iHeight + pImage->iMAGN_MT - 1;
- if (pBuf->iHeight > 2)
- iNewH = iNewH + pImage->iMAGN_MB - 1;
- if (pBuf->iHeight > 3)
- iNewH = iNewH + (pBuf->iHeight - 3) * (pImage->iMAGN_MY - 1);
- }
- }
- /* get new buffer */
- iNewrowsize = iNewW * pBuf->iSamplesize;
- iNewsize = iNewH * iNewrowsize;
-
- MNG_ALLOC (pData, pNewdata, iNewsize);
-
- switch (pBuf->iColortype) /* determine magnification routines */
- {
-#ifndef MNG_OPTIMIZE_FOOTPRINT_MAGN
- case 0 : ;
- case 8 : {
- if (pBuf->iBitdepth <= 8)
- {
- switch (pImage->iMAGN_MethodX)
- {
- case 1 : { fMagnifyX = mng_magnify_g8_x1; break; }
- case 2 : { fMagnifyX = mng_magnify_g8_x2; break; }
- case 3 : { fMagnifyX = mng_magnify_g8_x3; break; }
- case 4 : { fMagnifyX = mng_magnify_g8_x2; break; }
- case 5 : { fMagnifyX = mng_magnify_g8_x3; break; }
- }
-
- switch (pImage->iMAGN_MethodY)
- {
- case 1 : { fMagnifyY = mng_magnify_g8_y1; break; }
- case 2 : { fMagnifyY = mng_magnify_g8_y2; break; }
- case 3 : { fMagnifyY = mng_magnify_g8_y3; break; }
- case 4 : { fMagnifyY = mng_magnify_g8_y2; break; }
- case 5 : { fMagnifyY = mng_magnify_g8_y3; break; }
- }
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- else
- {
- switch (pImage->iMAGN_MethodX)
- {
- case 1 : { fMagnifyX = mng_magnify_g16_x1; break; }
- case 2 : { fMagnifyX = mng_magnify_g16_x2; break; }
- case 3 : { fMagnifyX = mng_magnify_g16_x3; break; }
- case 4 : { fMagnifyX = mng_magnify_g16_x2; break; }
- case 5 : { fMagnifyX = mng_magnify_g16_x3; break; }
- }
-
- switch (pImage->iMAGN_MethodY)
- {
- case 1 : { fMagnifyY = mng_magnify_g16_y1; break; }
- case 2 : { fMagnifyY = mng_magnify_g16_y2; break; }
- case 3 : { fMagnifyY = mng_magnify_g16_y3; break; }
- case 4 : { fMagnifyY = mng_magnify_g16_y2; break; }
- case 5 : { fMagnifyY = mng_magnify_g16_y3; break; }
- }
- }
-#endif
-
- break;
- }
-
- case 2 : ;
- case 10 : {
- if (pBuf->iBitdepth <= 8)
- {
- switch (pImage->iMAGN_MethodX)
- {
- case 1 : { fMagnifyX = mng_magnify_rgb8_x1; break; }
- case 2 : { fMagnifyX = mng_magnify_rgb8_x2; break; }
- case 3 : { fMagnifyX = mng_magnify_rgb8_x3; break; }
- case 4 : { fMagnifyX = mng_magnify_rgb8_x2; break; }
- case 5 : { fMagnifyX = mng_magnify_rgb8_x3; break; }
- }
-
- switch (pImage->iMAGN_MethodY)
- {
- case 1 : { fMagnifyY = mng_magnify_rgb8_y1; break; }
- case 2 : { fMagnifyY = mng_magnify_rgb8_y2; break; }
- case 3 : { fMagnifyY = mng_magnify_rgb8_y3; break; }
- case 4 : { fMagnifyY = mng_magnify_rgb8_y2; break; }
- case 5 : { fMagnifyY = mng_magnify_rgb8_y3; break; }
- }
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- else
- {
- switch (pImage->iMAGN_MethodX)
- {
- case 1 : { fMagnifyX = mng_magnify_rgb16_x1; break; }
- case 2 : { fMagnifyX = mng_magnify_rgb16_x2; break; }
- case 3 : { fMagnifyX = mng_magnify_rgb16_x3; break; }
- case 4 : { fMagnifyX = mng_magnify_rgb16_x2; break; }
- case 5 : { fMagnifyX = mng_magnify_rgb16_x3; break; }
- }
-
- switch (pImage->iMAGN_MethodY)
- {
- case 1 : { fMagnifyY = mng_magnify_rgb16_y1; break; }
- case 2 : { fMagnifyY = mng_magnify_rgb16_y2; break; }
- case 3 : { fMagnifyY = mng_magnify_rgb16_y3; break; }
- case 4 : { fMagnifyY = mng_magnify_rgb16_y2; break; }
- case 5 : { fMagnifyY = mng_magnify_rgb16_y3; break; }
- }
- }
-#endif
-
- break;
- }
-
- case 4 : ;
- case 12 : {
- if (pBuf->iBitdepth <= 8)
- {
- switch (pImage->iMAGN_MethodX)
- {
- case 1 : { fMagnifyX = mng_magnify_ga8_x1; break; }
- case 2 : { fMagnifyX = mng_magnify_ga8_x2; break; }
- case 3 : { fMagnifyX = mng_magnify_ga8_x3; break; }
- case 4 : { fMagnifyX = mng_magnify_ga8_x4; break; }
- case 5 : { fMagnifyX = mng_magnify_ga8_x5; break; }
- }
-
- switch (pImage->iMAGN_MethodY)
- {
- case 1 : { fMagnifyY = mng_magnify_ga8_y1; break; }
- case 2 : { fMagnifyY = mng_magnify_ga8_y2; break; }
- case 3 : { fMagnifyY = mng_magnify_ga8_y3; break; }
- case 4 : { fMagnifyY = mng_magnify_ga8_y4; break; }
- case 5 : { fMagnifyY = mng_magnify_ga8_y5; break; }
- }
- }
-#ifndef MNG_NO_16BIT_SUPPORT
- else
- {
- switch (pImage->iMAGN_MethodX)
- {
- case 1 : { fMagnifyX = mng_magnify_ga16_x1; break; }
- case 2 : { fMagnifyX = mng_magnify_ga16_x2; break; }
- case 3 : { fMagnifyX = mng_magnify_ga16_x3; break; }
- case 4 : { fMagnifyX = mng_magnify_ga16_x4; break; }
- case 5 : { fMagnifyX = mng_magnify_ga16_x5; break; }
- }
-
- switch (pImage->iMAGN_MethodY)
- {
- case 1 : { fMagnifyY = mng_magnify_ga16_y1; break; }
- case 2 : { fMagnifyY = mng_magnify_ga16_y2; break; }
- case 3 : { fMagnifyY = mng_magnify_ga16_y3; break; }
- case 4 : { fMagnifyY = mng_magnify_ga16_y4; break; }
- case 5 : { fMagnifyY = mng_magnify_ga16_y5; break; }
- }
- }
-#endif
-
- break;
- }
-#endif
-
- case 6 : ;
- case 14 : {
- if (pBuf->iBitdepth <= 8)
- {
- switch (pImage->iMAGN_MethodX)
- {
- case 1 : { fMagnifyX = mng_magnify_rgba8_x1; break; }
- case 2 : { fMagnifyX = mng_magnify_rgba8_x2; break; }
- case 3 : { fMagnifyX = mng_magnify_rgba8_x3; break; }
- case 4 : { fMagnifyX = mng_magnify_rgba8_x4; break; }
- case 5 : { fMagnifyX = mng_magnify_rgba8_x5; break; }
- }
-
- switch (pImage->iMAGN_MethodY)
- {
- case 1 : { fMagnifyY = mng_magnify_rgba8_y1; break; }
- case 2 : { fMagnifyY = mng_magnify_rgba8_y2; break; }
- case 3 : { fMagnifyY = mng_magnify_rgba8_y3; break; }
- case 4 : { fMagnifyY = mng_magnify_rgba8_y4; break; }
- case 5 : { fMagnifyY = mng_magnify_rgba8_y5; break; }
- }
- }
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_MAGN
- else
- {
- switch (pImage->iMAGN_MethodX)
- {
- case 1 : { fMagnifyX = mng_magnify_rgba16_x1; break; }
- case 2 : { fMagnifyX = mng_magnify_rgba16_x2; break; }
- case 3 : { fMagnifyX = mng_magnify_rgba16_x3; break; }
- case 4 : { fMagnifyX = mng_magnify_rgba16_x4; break; }
- case 5 : { fMagnifyX = mng_magnify_rgba16_x5; break; }
- }
-
- switch (pImage->iMAGN_MethodY)
- {
- case 1 : { fMagnifyY = mng_magnify_rgba16_y1; break; }
- case 2 : { fMagnifyY = mng_magnify_rgba16_y2; break; }
- case 3 : { fMagnifyY = mng_magnify_rgba16_y3; break; }
- case 4 : { fMagnifyY = mng_magnify_rgba16_y4; break; }
- case 5 : { fMagnifyY = mng_magnify_rgba16_y5; break; }
- }
- }
-#endif
-#endif
- break;
- }
- }
-
- pSrcline1 = pBuf->pImgdata; /* initialize row-loop variables */
- pDstline = pNewdata;
- /* allocate temporary row */
- MNG_ALLOC (pData, pTempline, iNewrowsize);
-
- for (iY = 0; iY < pBuf->iHeight; iY++)
- {
- pSrcline2 = pSrcline1 + pBuf->iRowsize;
-
- if (fMagnifyX) /* magnifying in X-direction ? */
- {
- iRetcode = fMagnifyX (pData, pImage->iMAGN_MX,
- pImage->iMAGN_ML, pImage->iMAGN_MR,
- pBuf->iWidth, pSrcline1, pDstline);
-
- if (iRetcode) /* on error bail out */
- {
- MNG_FREEX (pData, pTempline, iNewrowsize);
- MNG_FREEX (pData, pNewdata, iNewsize);
- return iRetcode;
- }
- }
- else
- {
- MNG_COPY (pDstline, pSrcline1, iNewrowsize);
- }
-
- pDstline += iNewrowsize;
- /* magnifying in Y-direction ? */
- if ((fMagnifyY) &&
- ((iY < pBuf->iHeight - 1) || (pBuf->iHeight == 1) || (pImage->iMAGN_MethodY == 1)))
- {
- if (iY == 0) /* first interval ? */
- {
- if (pBuf->iHeight == 1) /* single row ? */
- pSrcline2 = MNG_NULL;
-
- iM = (mng_int32)pImage->iMAGN_MT;
- }
- else /* last interval ? */
- if (((pImage->iMAGN_MethodY == 1) && (iY == (pBuf->iHeight - 1))) ||
- ((pImage->iMAGN_MethodY != 1) && (iY == (pBuf->iHeight - 2))) )
- iM = (mng_int32)pImage->iMAGN_MB;
- else /* middle interval */
- iM = (mng_int32)pImage->iMAGN_MY;
-
- for (iS = 1; iS < iM; iS++)
- {
- iRetcode = fMagnifyY (pData, iS, iM, pBuf->iWidth,
- pSrcline1, pSrcline2, pTempline);
-
- if (iRetcode) /* on error bail out */
- {
- MNG_FREEX (pData, pTempline, iNewrowsize);
- MNG_FREEX (pData, pNewdata, iNewsize);
- return iRetcode;
- }
-
- if (fMagnifyX) /* magnifying in X-direction ? */
- {
- iRetcode = fMagnifyX (pData, pImage->iMAGN_MX,
- pImage->iMAGN_ML, pImage->iMAGN_MR,
- pBuf->iWidth, pTempline, pDstline);
-
- if (iRetcode) /* on error bail out */
- {
- MNG_FREEX (pData, pTempline, iNewrowsize);
- MNG_FREEX (pData, pNewdata, iNewsize);
- return iRetcode;
- }
- }
- else
- {
- MNG_COPY (pDstline, pTempline, iNewrowsize);
- }
-
- pDstline += iNewrowsize;
- }
- }
-
- pSrcline1 += pBuf->iRowsize;
- }
- /* drop temporary row */
- MNG_FREEX (pData, pTempline, iNewrowsize);
- /* drop old pixel-data */
- MNG_FREEX (pData, pBuf->pImgdata, pBuf->iImgdatasize);
-
- pBuf->pImgdata = pNewdata; /* save new buffer dimensions */
- pBuf->iRowsize = iNewrowsize;
- pBuf->iImgdatasize = iNewsize;
- pBuf->iWidth = iNewW;
- pBuf->iHeight = iNewH;
-
- if (pImage->iId) /* real object ? */
- {
- pImage->iMAGN_MethodX = 0; /* it's done; don't do it again !!! */
- pImage->iMAGN_MethodY = 0;
- pImage->iMAGN_MX = 0;
- pImage->iMAGN_MY = 0;
- pImage->iMAGN_ML = 0;
- pImage->iMAGN_MR = 0;
- pImage->iMAGN_MT = 0;
- pImage->iMAGN_MB = 0;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_IMGOBJECT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_colorcorrect_object (mng_datap pData,
- mng_imagep pImage)
-{
- mng_imagedatap pBuf = pImage->pImgbuf;
- mng_retcode iRetcode;
- mng_uint32 iY;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_COLORCORRECT_OBJECT, MNG_LC_START);
-#endif
-
-#ifdef MNG_INCLUDE_JNG
- if ((pBuf->iBitdepth < 8) || /* we need 8- or 16-bit RGBA !!! */
- ((pBuf->iColortype != MNG_COLORTYPE_RGBA ) &&
- (pBuf->iColortype != MNG_COLORTYPE_JPEGCOLORA) ))
-#else
- if (pBuf->iBitdepth < 8) /* we need 8- or 16-bit RGBA !!! */
-#endif
- MNG_ERROR (pData, MNG_OBJNOTABSTRACT);
-
- if (!pBuf->bCorrected) /* only if not already done ! */
- { /* so the row routines now to find it */
- pData->pRetrieveobj = (mng_objectp)pImage;
- pData->pStoreobj = (mng_objectp)pImage;
- pData->pStorebuf = (mng_objectp)pImage->pImgbuf;
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pBuf->iBitdepth > 8)
- {
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgba16;
- pData->fStorerow = (mng_fptr)mng_store_rgba16;
- }
- else
-#endif
- {
- pData->fRetrieverow = (mng_fptr)mng_retrieve_rgba8;
- pData->fStorerow = (mng_fptr)mng_store_rgba8;
- }
-
- pData->bIsOpaque = MNG_FALSE;
-
- pData->iPass = -1; /* these are the object's dimensions now */
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pBuf->iWidth;
- pData->iRowsize = pData->iRowsamples << 2;
- pData->iPixelofs = 0;
- pData->bIsRGBA16 = MNG_FALSE;
- /* adjust for 16-bit object ? */
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pBuf->iBitdepth > 8)
- {
- pData->bIsRGBA16 = MNG_TRUE;
- pData->iRowsize = pData->iRowsamples << 3;
- }
-#endif
-
- pData->fCorrectrow = MNG_NULL; /* default no color-correction */
-
-#ifdef MNG_NO_CMS
- iRetcode = MNG_NOERROR;
-#else
-#if defined(MNG_FULL_CMS) /* determine color-management routine */
- iRetcode = mng_init_full_cms (pData, MNG_FALSE, MNG_FALSE, MNG_TRUE);
-#elif defined(MNG_GAMMA_ONLY)
- iRetcode = mng_init_gamma_only (pData, MNG_FALSE, MNG_FALSE, MNG_TRUE);
-#elif defined(MNG_APP_CMS)
- iRetcode = mng_init_app_cms (pData, MNG_FALSE, MNG_FALSE, MNG_TRUE);
-#endif
- if (iRetcode) /* on error bail out */
- return iRetcode;
-#endif /* MNG_NO_CMS */
-
- if (pData->fCorrectrow) /* really correct something ? */
- { /* get a temporary row-buffer */
- MNG_ALLOC (pData, pData->pRGBArow, pData->iRowsize);
-
- pData->pWorkrow = pData->pRGBArow;
- iY = 0; /* start from the top */
-
- while ((!iRetcode) && (iY < pBuf->iHeight))
- { /* get a row */
- iRetcode = ((mng_retrieverow)pData->fRetrieverow) (pData);
-
- if (!iRetcode) /* color correct it */
- iRetcode = ((mng_correctrow)pData->fCorrectrow) (pData);
-
- if (!iRetcode) /* store it back ! */
- iRetcode = ((mng_storerow)pData->fStorerow) (pData);
-
- if (!iRetcode) /* adjust variables for next row */
- iRetcode = mng_next_row (pData);
-
- iY++; /* and next line */
- }
- /* drop the temporary row-buffer */
- MNG_FREEX (pData, pData->pRGBArow, pData->iRowsize);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#if defined(MNG_FULL_CMS) /* cleanup cms stuff */
- iRetcode = mng_clear_cms (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-#endif
- }
-
- pBuf->bCorrected = MNG_TRUE; /* let's not go through that again ! */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_COLORCORRECT_OBJECT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-/* * * */
-/* * Animation-object routines * */
-/* * * */
-/* * these handle the animation objects used to re-run parts of a MNG. * */
-/* * eg. during LOOP or TERM processing * */
-/* * * */
-/* ************************************************************************** */
-
-void mng_add_ani_object (mng_datap pData,
- mng_object_headerp pObject)
-{
- mng_object_headerp pLast = (mng_object_headerp)pData->pLastaniobj;
-
- if (pLast) /* link it as last in the chain */
- {
- pObject->pPrev = pLast;
- pLast->pNext = pObject;
- }
- else
- {
- pObject->pPrev = MNG_NULL; /* be on the safe side */
- pData->pFirstaniobj = pObject;
- }
-
- pObject->pNext = MNG_NULL; /* be on the safe side */
- pData->pLastaniobj = pObject;
- /* keep track for jumping */
- pObject->iFramenr = pData->iFrameseq;
- pObject->iLayernr = pData->iLayerseq;
- pObject->iPlaytime = pData->iFrametime;
- /* save restart object ? */
- if ((pData->bDisplaying) && (!pData->bRunning) && (!pData->pCurraniobj))
- pData->pCurraniobj = pObject;
-
- return;
-}
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-mng_retcode mng_create_ani_image (mng_datap pData)
-{
- mng_ani_imagep pImage;
- mng_imagep pCurrent;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_IMAGE, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* processing delta-image ? */
- pCurrent = (mng_imagep)pData->pObjzero;
- else /* get the current object */
-#endif
- pCurrent = (mng_imagep)pData->pCurrentobj;
-
- if (!pCurrent) /* otherwise object 0 */
- pCurrent = (mng_imagep)pData->pObjzero;
- /* now just clone the object !!! */
- iRetcode = mng_clone_imageobject (pData, 0, MNG_FALSE, pCurrent->bVisible,
- MNG_FALSE, MNG_FALSE, 0, 0, 0, pCurrent,
- &pImage);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- pImage->sHeader.fCleanup = mng_free_ani_image;
- pImage->sHeader.fProcess = mng_process_ani_image;
-
- mng_add_ani_object (pData, (mng_object_headerp)pImage);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_IMAGE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* okido */
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_free_ani_image (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_imagep pImage = (mng_ani_imagep)pObject;
- mng_imagedatap pImgbuf = pImage->pImgbuf;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_IMAGE, MNG_LC_START);
-#endif
- /* unlink the image-data buffer */
- iRetcode = mng_free_imagedataobject (pData, pImgbuf);
- /* drop its own buffer */
- MNG_FREEX (pData, pImage, sizeof (mng_ani_image));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_IMAGE, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_image (mng_datap pData,
- mng_objectp pObject)
-{
- mng_retcode iRetcode = MNG_NOERROR;
- mng_ani_imagep pImage = (mng_imagep)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_IMAGE, MNG_LC_START);
-#endif
-
-#ifndef MNG_NO_DELTA_PNG
- if (pData->bHasDHDR) /* processing delta-image ? */
- {
- mng_imagep pDelta = (mng_imagep)pData->pDeltaImage;
-
- if (!pData->iBreakpoint) /* only execute if not broken before */
- { /* make sure to process pixels as well */
- pData->bDeltaimmediate = MNG_FALSE;
- /* execute the delta process */
- iRetcode = mng_execute_delta_image (pData, pDelta, (mng_imagep)pObject);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- /* now go and shoot it off (if required) */
- if ((pDelta->bVisible) && (pDelta->bViewable))
- iRetcode = mng_display_image (pData, pDelta, MNG_FALSE);
-
- if (!pData->bTimerset)
- pData->bHasDHDR = MNG_FALSE; /* this image signifies IEND !! */
-
- }
- else
-#endif
- if (pData->pCurrentobj) /* active object ? */
- {
- mng_imagep pCurrent = (mng_imagep)pData->pCurrentobj;
- mng_imagedatap pBuf = pCurrent->pImgbuf;
-
- if (!pData->iBreakpoint) /* don't copy it again ! */
- {
- if (pBuf->iImgdatasize) /* buffer present in active object ? */
- /* then drop it */
- MNG_FREE (pData, pBuf->pImgdata, pBuf->iImgdatasize);
-
-#ifndef MNG_SKIPCHUNK_iCCP
- if (pBuf->iProfilesize) /* iCCP profile present ? */
- /* then drop it */
- MNG_FREE (pData, pBuf->pProfile, pBuf->iProfilesize);
-#endif
- /* now blatently copy the animation buffer */
- MNG_COPY (pBuf, pImage->pImgbuf, sizeof (mng_imagedata));
- /* copy viewability */
- pCurrent->bViewable = pImage->bViewable;
-
- if (pBuf->iImgdatasize) /* sample buffer present ? */
- { /* then make a copy */
- MNG_ALLOC (pData, pBuf->pImgdata, pBuf->iImgdatasize);
- MNG_COPY (pBuf->pImgdata, pImage->pImgbuf->pImgdata, pBuf->iImgdatasize);
- }
-
-#ifndef MNG_SKIPCHUNK_iCCP
- if (pBuf->iProfilesize) /* iCCP profile present ? */
- { /* then make a copy */
- MNG_ALLOC (pData, pBuf->pProfile, pBuf->iProfilesize);
- MNG_COPY (pBuf->pProfile, pImage->pImgbuf->pProfile, pBuf->iProfilesize);
- }
-#endif
- }
- /* now go and shoot it off (if required) */
- if ((pCurrent->bVisible) && (pCurrent->bViewable))
- iRetcode = mng_display_image (pData, pCurrent, MNG_FALSE);
- }
- else
- {
- mng_imagep pObjzero = (mng_imagep)pData->pObjzero;
- mng_imagedatap pBuf = pObjzero->pImgbuf;
-
- if (!pData->iBreakpoint) /* don't copy it again ! */
- {
- if (pBuf->iImgdatasize) /* buffer present in active object ? */
- /* then drop it */
- MNG_FREE (pData, pBuf->pImgdata, pBuf->iImgdatasize);
-
-#ifndef MNG_SKIPCHUNK_iCCP
- if (pBuf->iProfilesize) /* iCCP profile present ? */
- /* then drop it */
- MNG_FREE (pData, pBuf->pProfile, pBuf->iProfilesize);
-#endif
- /* now blatently copy the animation buffer */
- MNG_COPY (pBuf, pImage->pImgbuf, sizeof (mng_imagedata));
- /* copy viewability */
- pObjzero->bViewable = pImage->bViewable;
-
- if (pBuf->iImgdatasize) /* sample buffer present ? */
- { /* then make a copy */
- MNG_ALLOC (pData, pBuf->pImgdata, pBuf->iImgdatasize);
- MNG_COPY (pBuf->pImgdata, pImage->pImgbuf->pImgdata, pBuf->iImgdatasize);
- }
-
-#ifndef MNG_SKIPCHUNK_iCCP
- if (pBuf->iProfilesize) /* iCCP profile present ? */
- { /* then make a copy */
- MNG_ALLOC (pData, pBuf->pProfile, pBuf->iProfilesize);
- MNG_COPY (pBuf->pProfile, pImage->pImgbuf->pProfile, pBuf->iProfilesize);
- }
-#endif
- }
- /* now go and show it */
- iRetcode = mng_display_image (pData, pObjzero, MNG_FALSE);
- }
-
- if (!iRetcode) /* all's well ? */
- {
- if (pData->bTimerset) /* timer break ? */
- pData->iBreakpoint = 99; /* fictive number; no more processing needed! */
- else
- pData->iBreakpoint = 0; /* else clear it */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_IMAGE, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_plte (mng_datap pData,
- mng_uint32 iEntrycount,
- mng_palette8ep paEntries)
-#else
-mng_retcode mng_create_ani_plte (mng_datap pData)
-#endif
-{
- mng_ani_pltep pPLTE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_PLTE, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_ani_plte),
- mng_free_obj_general,
- mng_process_ani_plte,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pPLTE = (mng_ani_pltep)pTemp;
-#else
- MNG_ALLOC (pData, pPLTE, sizeof (mng_ani_plte));
-
- pPLTE->sHeader.fCleanup = mng_free_ani_plte;
- pPLTE->sHeader.fProcess = mng_process_ani_plte;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pPLTE);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pPLTE->iEntrycount = iEntrycount;
- MNG_COPY (pPLTE->aEntries, paEntries, sizeof (pPLTE->aEntries));
-#else
- pPLTE->iEntrycount = pData->iGlobalPLTEcount;
- MNG_COPY (pPLTE->aEntries, pData->aGlobalPLTEentries, sizeof (pPLTE->aEntries));
-#endif
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_PLTE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_plte (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_PLTE, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_plte));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_PLTE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_plte (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_pltep pPLTE = (mng_ani_pltep)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_PLTE, MNG_LC_START);
-#endif
-
- pData->bHasglobalPLTE = MNG_TRUE;
- pData->iGlobalPLTEcount = pPLTE->iEntrycount;
-
- MNG_COPY (pData->aGlobalPLTEentries, pPLTE->aEntries, sizeof (pPLTE->aEntries));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_PLTE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_trns (mng_datap pData,
- mng_uint32 iRawlen,
- mng_uint8p pRawdata)
-#else
-mng_retcode mng_create_ani_trns (mng_datap pData)
-#endif
-{
- mng_ani_trnsp pTRNS;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_TRNS, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_ani_trns),
- mng_free_obj_general,
- mng_process_ani_trns,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pTRNS = (mng_ani_trnsp)pTemp;
-#else
- MNG_ALLOC (pData, pTRNS, sizeof (mng_ani_trns));
-
- pTRNS->sHeader.fCleanup = mng_free_ani_trns;
- pTRNS->sHeader.fProcess = mng_process_ani_trns;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pTRNS);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pTRNS->iRawlen = iRawlen;
- MNG_COPY (pTRNS->aRawdata, pRawdata, sizeof (pTRNS->aRawdata));
-#else
- pTRNS->iRawlen = pData->iGlobalTRNSrawlen;
- MNG_COPY (pTRNS->aRawdata, pData->aGlobalTRNSrawdata, sizeof (pTRNS->aRawdata));
-#endif
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_TRNS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_trns (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_TRNS, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_trns));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_TRNS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_trns (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_trnsp pTRNS = (mng_ani_trnsp)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_TRNS, MNG_LC_START);
-#endif
-
- pData->bHasglobalTRNS = MNG_TRUE;
- pData->iGlobalTRNSrawlen = pTRNS->iRawlen;
-
- MNG_COPY (pData->aGlobalTRNSrawdata, pTRNS->aRawdata, sizeof (pTRNS->aRawdata));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_TRNS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_gAMA
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_gama (mng_datap pData,
- mng_bool bEmpty,
- mng_uint32 iGamma)
-#else
-mng_retcode mng_create_ani_gama (mng_datap pData,
- mng_chunkp pChunk)
-#endif
-{
- mng_ani_gamap pGAMA;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_GAMA, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_ani_gama),
- mng_free_obj_general,
- mng_process_ani_gama,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pGAMA = (mng_ani_gamap)pTemp;
-#else
- MNG_ALLOC (pData, pGAMA, sizeof (mng_ani_gama));
-
- pGAMA->sHeader.fCleanup = mng_free_ani_gama;
- pGAMA->sHeader.fProcess = mng_process_ani_gama;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pGAMA);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pGAMA->bEmpty = bEmpty;
- pGAMA->iGamma = iGamma;
-#else
- pGAMA->bEmpty = ((mng_gamap)pChunk)->bEmpty;
- pGAMA->iGamma = ((mng_gamap)pChunk)->iGamma;
-#endif
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_GAMA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_gama (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_GAMA, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_gama));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_GAMA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_gama (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_gamap pGAMA = (mng_ani_gamap)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_GAMA, MNG_LC_START);
-#endif
-
- if (pGAMA->bEmpty) /* empty chunk ? */
- { /* clear global gAMA */
- pData->bHasglobalGAMA = MNG_FALSE;
- pData->iGlobalGamma = 0;
- }
- else
- { /* set global gAMA */
- pData->bHasglobalGAMA = MNG_TRUE;
- pData->iGlobalGamma = pGAMA->iGamma;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_GAMA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_cHRM
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_chrm (mng_datap pData,
- mng_bool bEmpty,
- mng_uint32 iWhitepointx,
- mng_uint32 iWhitepointy,
- mng_uint32 iRedx,
- mng_uint32 iRedy,
- mng_uint32 iGreenx,
- mng_uint32 iGreeny,
- mng_uint32 iBluex,
- mng_uint32 iBluey)
-#else
-mng_retcode mng_create_ani_chrm (mng_datap pData,
- mng_chunkp pChunk)
-#endif
-{
- mng_ani_chrmp pCHRM;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_CHRM, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_ani_chrm),
- mng_free_obj_general,
- mng_process_ani_chrm,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pCHRM = (mng_ani_chrmp)pTemp;
-#else
- MNG_ALLOC (pData, pCHRM, sizeof (mng_ani_chrm));
-
- pCHRM->sHeader.fCleanup = mng_free_ani_chrm;
- pCHRM->sHeader.fProcess = mng_process_ani_chrm;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pCHRM);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pCHRM->bEmpty = bEmpty;
- pCHRM->iWhitepointx = iWhitepointx;
- pCHRM->iWhitepointy = iWhitepointy;
- pCHRM->iRedx = iRedx;
- pCHRM->iRedy = iRedy;
- pCHRM->iGreenx = iGreenx;
- pCHRM->iGreeny = iGreeny;
- pCHRM->iBluex = iBluex;
- pCHRM->iBluey = iBluey;
-#else
- pCHRM->bEmpty = ((mng_chrmp)pChunk)->bEmpty;
- pCHRM->iWhitepointx = ((mng_chrmp)pChunk)->iWhitepointx;
- pCHRM->iWhitepointy = ((mng_chrmp)pChunk)->iWhitepointy;
- pCHRM->iRedx = ((mng_chrmp)pChunk)->iRedx;
- pCHRM->iRedy = ((mng_chrmp)pChunk)->iRedy;
- pCHRM->iGreenx = ((mng_chrmp)pChunk)->iGreenx;
- pCHRM->iGreeny = ((mng_chrmp)pChunk)->iGreeny;
- pCHRM->iBluex = ((mng_chrmp)pChunk)->iBluex;
- pCHRM->iBluey = ((mng_chrmp)pChunk)->iBluey;
-#endif
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_CHRM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_chrm (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_CHRM, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_chrm));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_CHRM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_chrm (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_chrmp pCHRM = (mng_ani_chrmp)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_CHRM, MNG_LC_START);
-#endif
-
- if (pCHRM->bEmpty) /* empty chunk ? */
- { /* clear global cHRM */
- pData->bHasglobalCHRM = MNG_FALSE;
- pData->iGlobalWhitepointx = 0;
- pData->iGlobalWhitepointy = 0;
- pData->iGlobalPrimaryredx = 0;
- pData->iGlobalPrimaryredy = 0;
- pData->iGlobalPrimarygreenx = 0;
- pData->iGlobalPrimarygreeny = 0;
- pData->iGlobalPrimarybluex = 0;
- pData->iGlobalPrimarybluey = 0;
- }
- else
- { /* set global cHRM */
- pData->bHasglobalCHRM = MNG_TRUE;
- pData->iGlobalWhitepointx = pCHRM->iWhitepointx;
- pData->iGlobalWhitepointy = pCHRM->iWhitepointy;
- pData->iGlobalPrimaryredx = pCHRM->iRedx;
- pData->iGlobalPrimaryredy = pCHRM->iRedy;
- pData->iGlobalPrimarygreenx = pCHRM->iGreenx;
- pData->iGlobalPrimarygreeny = pCHRM->iGreeny;
- pData->iGlobalPrimarybluex = pCHRM->iBluex;
- pData->iGlobalPrimarybluey = pCHRM->iBluey;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_CHRM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_sRGB
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_srgb (mng_datap pData,
- mng_bool bEmpty,
- mng_uint8 iRenderingintent)
-#else
-mng_retcode mng_create_ani_srgb (mng_datap pData,
- mng_chunkp pChunk)
-#endif
-{
- mng_ani_srgbp pSRGB;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_SRGB, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_ani_srgb),
- mng_free_obj_general,
- mng_process_ani_srgb,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pSRGB = (mng_ani_srgbp)pTemp;
-#else
- MNG_ALLOC (pData, pSRGB, sizeof (mng_ani_srgb));
-
- pSRGB->sHeader.fCleanup = mng_free_ani_srgb;
- pSRGB->sHeader.fProcess = mng_process_ani_srgb;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pSRGB);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pSRGB->bEmpty = bEmpty;
- pSRGB->iRenderingintent = iRenderingintent;
-#else
- pSRGB->bEmpty = ((mng_srgbp)pChunk)->bEmpty;
- pSRGB->iRenderingintent = ((mng_srgbp)pChunk)->iRenderingintent;
-#endif
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_SRGB, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_srgb (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_SRGB, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_srgb));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_SRGB, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_srgb (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_srgbp pSRGB = (mng_ani_srgbp)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_SRGB, MNG_LC_START);
-#endif
-
- if (pSRGB->bEmpty) /* empty chunk ? */
- { /* clear global sRGB */
- pData->bHasglobalSRGB = MNG_FALSE;
- pData->iGlobalRendintent = 0;
- }
- else
- { /* set global sRGB */
- pData->bHasglobalSRGB = MNG_TRUE;
- pData->iGlobalRendintent = pSRGB->iRenderingintent;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_SRGB, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iCCP
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_iccp (mng_datap pData,
- mng_bool bEmpty,
- mng_uint32 iProfilesize,
- mng_ptr pProfile)
-#else
-mng_retcode mng_create_ani_iccp (mng_datap pData,
- mng_chunkp pChunk)
-#endif
-{
- mng_ani_iccpp pICCP;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_ICCP, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_ani_iccp),
- mng_free_ani_iccp,
- mng_process_ani_iccp,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pICCP = (mng_ani_iccpp)pTemp;
-#else
- MNG_ALLOC (pData, pICCP, sizeof (mng_ani_iccp));
-
- pICCP->sHeader.fCleanup = mng_free_ani_iccp;
- pICCP->sHeader.fProcess = mng_process_ani_iccp;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pICCP);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pICCP->bEmpty = bEmpty;
- pICCP->iProfilesize = iProfilesize;
-
- if (iProfilesize)
- {
- MNG_ALLOC (pData, pICCP->pProfile, iProfilesize);
- MNG_COPY (pICCP->pProfile, pProfile, iProfilesize);
- }
-#else
- pICCP->bEmpty = ((mng_iccpp)pChunk)->bEmpty;
- pICCP->iProfilesize = ((mng_iccpp)pChunk)->iProfilesize;
-
- if (pICCP->iProfilesize)
- {
- MNG_ALLOC (pData, pICCP->pProfile, pICCP->iProfilesize);
- MNG_COPY (pICCP->pProfile, ((mng_iccpp)pChunk)->pProfile, pICCP->iProfilesize);
- }
-#endif
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_ICCP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_free_ani_iccp (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_iccpp pICCP = (mng_ani_iccpp)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_ICCP, MNG_LC_START);
-#endif
-
- if (pICCP->iProfilesize)
- MNG_FREEX (pData, pICCP->pProfile, pICCP->iProfilesize);
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
- MNG_FREEX (pData, pObject, sizeof (mng_ani_iccp));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_ICCP, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
- return MNG_NOERROR;
-#else
- return mng_free_obj_general(pData, pObject);
-#endif
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_iccp (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_iccpp pICCP = (mng_ani_iccpp)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_ICCP, MNG_LC_START);
-#endif
-
- if (pICCP->bEmpty) /* empty chunk ? */
- { /* clear global iCCP */
- pData->bHasglobalICCP = MNG_FALSE;
-
- if (pData->iGlobalProfilesize)
- MNG_FREEX (pData, pData->pGlobalProfile, pData->iGlobalProfilesize);
-
- pData->iGlobalProfilesize = 0;
- pData->pGlobalProfile = MNG_NULL;
- }
- else
- { /* set global iCCP */
- pData->bHasglobalICCP = MNG_TRUE;
- pData->iGlobalProfilesize = pICCP->iProfilesize;
-
- if (pICCP->iProfilesize)
- {
- MNG_ALLOC (pData, pData->pGlobalProfile, pICCP->iProfilesize);
- MNG_COPY (pData->pGlobalProfile, pICCP->pProfile, pICCP->iProfilesize);
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_ICCP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_bKGD
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_bkgd (mng_datap pData,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue)
-#else
-mng_retcode mng_create_ani_bkgd (mng_datap pData)
-#endif
-{
- mng_ani_bkgdp pBKGD;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_BKGD, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_ani_bkgd),
- mng_free_obj_general,
- mng_process_ani_bkgd,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pBKGD = (mng_ani_bkgdp)pTemp;
-#else
- MNG_ALLOC (pData, pBKGD, sizeof (mng_ani_bkgd));
-
- pBKGD->sHeader.fCleanup = mng_free_ani_bkgd;
- pBKGD->sHeader.fProcess = mng_process_ani_bkgd;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pBKGD);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pBKGD->iRed = iRed;
- pBKGD->iGreen = iGreen;
- pBKGD->iBlue = iBlue;
-#else
- pBKGD->iRed = pData->iGlobalBKGDred;
- pBKGD->iGreen = pData->iGlobalBKGDgreen;
- pBKGD->iBlue = pData->iGlobalBKGDblue;
-#endif
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_BKGD, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_bkgd (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_BKGD, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_bkgd));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_BKGD, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_bkgd (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_bkgdp pBKGD = (mng_ani_bkgdp)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_BKGD, MNG_LC_START);
-#endif
-
- pData->bHasglobalBKGD = MNG_TRUE;
- pData->iGlobalBKGDred = pBKGD->iRed;
- pData->iGlobalBKGDgreen = pBKGD->iGreen;
- pData->iGlobalBKGDblue = pBKGD->iBlue;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_BKGD, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_LOOP
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_loop (mng_datap pData,
- mng_uint8 iLevel,
- mng_uint32 iRepeatcount,
- mng_uint8 iTermcond,
- mng_uint32 iItermin,
- mng_uint32 iItermax,
- mng_uint32 iCount,
- mng_uint32p pSignals)
-#else
-mng_retcode mng_create_ani_loop (mng_datap pData,
- mng_chunkp pChunk)
-#endif
-{
- mng_ani_loopp pLOOP;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_LOOP, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_ani_loop),
- mng_free_ani_loop,
- mng_process_ani_loop,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pLOOP = (mng_ani_loopp)pTemp;
-#else
- MNG_ALLOC (pData, pLOOP, sizeof (mng_ani_loop));
-
- pLOOP->sHeader.fCleanup = mng_free_ani_loop;
- pLOOP->sHeader.fProcess = mng_process_ani_loop;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pLOOP);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pLOOP->iLevel = iLevel;
- pLOOP->iRepeatcount = iRepeatcount;
- pLOOP->iTermcond = iTermcond;
- pLOOP->iItermin = iItermin;
- pLOOP->iItermax = iItermax;
- pLOOP->iCount = iCount;
-
-#ifndef MNG_NO_LOOP_SIGNALS_SUPPORTED
- if (iCount)
- {
- MNG_ALLOC (pData, pLOOP->pSignals, (iCount << 1));
- MNG_COPY (pLOOP->pSignals, pSignals, (iCount << 1));
- }
-#endif
-#else /* MNG_OPTIMIZE_CHUNKREADER */
- pLOOP->iLevel = ((mng_loopp)pChunk)->iLevel;
- pLOOP->iRepeatcount = ((mng_loopp)pChunk)->iRepeat;
- pLOOP->iTermcond = ((mng_loopp)pChunk)->iTermination;
- pLOOP->iItermin = ((mng_loopp)pChunk)->iItermin;
- pLOOP->iItermax = ((mng_loopp)pChunk)->iItermax;
- pLOOP->iCount = ((mng_loopp)pChunk)->iCount;
-
-#ifndef MNG_NO_LOOP_SIGNALS_SUPPORTED
- if (pLOOP->iCount)
- {
- MNG_ALLOC (pData, pLOOP->pSignals, (pLOOP->iCount << 1));
- MNG_COPY (pLOOP->pSignals, ((mng_loopp)pChunk)->pSignals, (pLOOP->iCount << 1));
- }
-#endif
-#endif /* MNG_OPTIMIZE_CHUNKREADER */
- /* running counter starts with repeat_count */
- pLOOP->iRunningcount = pLOOP->iRepeatcount;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_LOOP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_free_ani_loop (mng_datap pData,
- mng_objectp pObject)
-{
-#ifndef MNG_NO_LOOP_SIGNALS_SUPPORTED
- mng_ani_loopp pLOOP = (mng_ani_loopp)pObject;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_LOOP, MNG_LC_START);
-#endif
-
-#ifndef MNG_NO_LOOP_SIGNALS_SUPPORTED
- if (pLOOP->iCount) /* drop signal buffer ? */
- MNG_FREEX (pData, pLOOP->pSignals, (pLOOP->iCount << 1));
-#endif
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
- MNG_FREEX (pData, pObject, sizeof (mng_ani_loop));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_LOOP, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
- return MNG_NOERROR;
-#else
- return mng_free_obj_general(pData, pObject);
-#endif
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_loop (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_loopp pLOOP = (mng_ani_loopp)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_LOOP, MNG_LC_START);
-#endif
- /* just reset the running counter */
- pLOOP->iRunningcount = pLOOP->iRepeatcount;
- /* iteration=0 means we're skipping ! */
- if ((!pData->bSkipping) && (pLOOP->iRepeatcount == 0))
- pData->bSkipping = MNG_TRUE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_LOOP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-mng_retcode mng_create_ani_endl (mng_datap pData,
- mng_uint8 iLevel)
-{
- mng_ani_endlp pENDL;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_ENDL, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
- mng_retcode iRetcode;
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- iRetcode = create_obj_general (pData, sizeof (mng_ani_endl),
- mng_free_obj_general,
- mng_process_ani_endl,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pENDL = (mng_ani_endlp)pTemp;
-#else
- MNG_ALLOC (pData, pENDL, sizeof (mng_ani_endl));
-
- pENDL->sHeader.fCleanup = mng_free_ani_endl;
- pENDL->sHeader.fProcess = mng_process_ani_endl;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pENDL);
-
- pENDL->iLevel = iLevel;
-
- iRetcode = mng_process_ani_endl (pData, (mng_objectp)pENDL);
- if (iRetcode)
- return iRetcode;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_ENDL, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_endl (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_ENDL, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_endl));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_ENDL, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_endl (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_endlp pENDL = (mng_ani_endlp)pObject;
- mng_ani_loopp pLOOP;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_ENDL, MNG_LC_START);
-#endif
-
- if (((pData->bDisplaying) && ((pData->bRunning) || (pData->bSearching))) ||
- (pData->bReading) )
- {
- pLOOP = pENDL->pLOOP; /* determine matching LOOP */
-
- if (!pLOOP) /* haven't got it yet ? */
- { /* go and look back in the list */
- pLOOP = (mng_ani_loopp)pENDL->sHeader.pPrev;
-
- while ((pLOOP) &&
- ((pLOOP->sHeader.fCleanup != mng_free_ani_loop) ||
- (pLOOP->iLevel != pENDL->iLevel) ))
- pLOOP = pLOOP->sHeader.pPrev;
- }
- /* got it now ? */
- if ((pLOOP) && (pLOOP->iLevel == pENDL->iLevel))
- {
- pENDL->pLOOP = pLOOP; /* save for next time ! */
- /* decrease running counter ? */
- if ((pLOOP->iRunningcount) && (pLOOP->iRunningcount < 0x7fffffffL))
- pLOOP->iRunningcount--;
-
- if ((!pData->bDisplaying) && (pData->bReading) &&
- (pLOOP->iRunningcount >= 0x7fffffffL))
- {
- pData->iTotalframes = 0x7fffffffL;
- pData->iTotallayers = 0x7fffffffL;
- pData->iTotalplaytime = 0x7fffffffL;
- }
- else
- {
- /* TODO: we're cheating out on the termination_condition,
- iteration_min, iteration_max and possible signals;
- the code is just not ready for that can of worms.... */
-
- if (!pLOOP->iRunningcount) /* reached zero ? */
- { /* was this the outer LOOP ? */
- if (pData->pFirstaniobj == (mng_objectp)pLOOP) /* TODO: THIS IS WRONG!! */
- pData->bHasLOOP = MNG_FALSE;
- }
- else
- {
- if (pData->pCurraniobj) /* was we processing objects ? */
- pData->pCurraniobj = pLOOP;/* then restart with LOOP */
- else /* else restart behind LOOP !!! */
- pData->pCurraniobj = pLOOP->sHeader.pNext;
- }
- }
- /* does this match a 'skipping' LOOP? */
- if ((pData->bSkipping) && (pLOOP->iRepeatcount == 0))
- pData->bSkipping = MNG_FALSE;
- }
- else
- MNG_ERROR (pData, MNG_NOMATCHINGLOOP);
-
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_ENDL, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DEFI
-mng_retcode mng_create_ani_defi (mng_datap pData)
-{
- mng_ani_defip pDEFI;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_DEFI, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_ani_defi),
- mng_free_obj_general,
- mng_process_ani_defi,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pDEFI = (mng_ani_defip)pTemp;
-#else
- MNG_ALLOC (pData, pDEFI, sizeof (mng_ani_defi));
-
- pDEFI->sHeader.fCleanup = mng_free_ani_defi;
- pDEFI->sHeader.fProcess = mng_process_ani_defi;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pDEFI);
-
- pDEFI->iId = pData->iDEFIobjectid;
- pDEFI->bHasdonotshow = pData->bDEFIhasdonotshow;
- pDEFI->iDonotshow = pData->iDEFIdonotshow;
- pDEFI->bHasconcrete = pData->bDEFIhasconcrete;
- pDEFI->iConcrete = pData->iDEFIconcrete;
- pDEFI->bHasloca = pData->bDEFIhasloca;
- pDEFI->iLocax = pData->iDEFIlocax;
- pDEFI->iLocay = pData->iDEFIlocay;
- pDEFI->bHasclip = pData->bDEFIhasclip;
- pDEFI->iClipl = pData->iDEFIclipl;
- pDEFI->iClipr = pData->iDEFIclipr;
- pDEFI->iClipt = pData->iDEFIclipt;
- pDEFI->iClipb = pData->iDEFIclipb;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_DEFI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_defi (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_DEFI, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_defi));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_DEFI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_defi (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_defip pDEFI = (mng_ani_defip)pObject;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_DEFI, MNG_LC_START);
-#endif
-
- pData->iDEFIobjectid = pDEFI->iId;
- pData->bDEFIhasdonotshow = pDEFI->bHasdonotshow;
- pData->iDEFIdonotshow = pDEFI->iDonotshow;
- pData->bDEFIhasconcrete = pDEFI->bHasconcrete;
- pData->iDEFIconcrete = pDEFI->iConcrete;
- pData->bDEFIhasloca = pDEFI->bHasloca;
- pData->iDEFIlocax = pDEFI->iLocax;
- pData->iDEFIlocay = pDEFI->iLocay;
- pData->bDEFIhasclip = pDEFI->bHasclip;
- pData->iDEFIclipl = pDEFI->iClipl;
- pData->iDEFIclipr = pDEFI->iClipr;
- pData->iDEFIclipt = pDEFI->iClipt;
- pData->iDEFIclipb = pDEFI->iClipb;
-
- iRetcode = mng_process_display_defi (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_DEFI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_BASI
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_basi (mng_datap pData,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue,
- mng_bool bHasalpha,
- mng_uint16 iAlpha,
- mng_uint8 iViewable)
-#else
-mng_retcode mng_create_ani_basi (mng_datap pData,
- mng_chunkp pChunk)
-#endif
-{
- mng_ani_basip pBASI;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_BASI, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- iRetcode = create_obj_general (pData, sizeof (mng_ani_basi),
- mng_free_obj_general,
- mng_process_ani_basi,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pBASI = (mng_ani_basip)pTemp;
-#else
- MNG_ALLOC (pData, pBASI, sizeof (mng_ani_basi));
-
- pBASI->sHeader.fCleanup = mng_free_ani_basi;
- pBASI->sHeader.fProcess = mng_process_ani_basi;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pBASI);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pBASI->iRed = iRed;
- pBASI->iGreen = iGreen;
- pBASI->iBlue = iBlue;
- pBASI->bHasalpha = bHasalpha;
- pBASI->iAlpha = iAlpha;
- pBASI->iViewable = iViewable;
-#else
- pBASI->iRed = ((mng_basip)pChunk)->iRed;
- pBASI->iGreen = ((mng_basip)pChunk)->iGreen;
- pBASI->iBlue = ((mng_basip)pChunk)->iBlue;
- pBASI->bHasalpha = ((mng_basip)pChunk)->bHasalpha;
- pBASI->iAlpha = ((mng_basip)pChunk)->iAlpha;
- pBASI->iViewable = ((mng_basip)pChunk)->iViewable;
-#endif
- }
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- iRetcode = mng_process_display_basi (pData, iRed, iGreen, iBlue,
- bHasalpha, iAlpha, iViewable);
-#else
- iRetcode = mng_process_display_basi (pData,
- ((mng_basip)pChunk)->iRed,
- ((mng_basip)pChunk)->iGreen,
- ((mng_basip)pChunk)->iBlue,
- ((mng_basip)pChunk)->bHasalpha,
- ((mng_basip)pChunk)->iAlpha,
- ((mng_basip)pChunk)->iViewable);
-#endif
-#else
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pData->iBASIred = iRed;
- pData->iBASIgreen = iGreen;
- pData->iBASIblue = iBlue;
- pData->bBASIhasalpha = bHasalpha;
- pData->iBASIalpha = iAlpha;
- pData->iBASIviewable = iViewable;
-#else
- pData->iBASIred = ((mng_basip)pChunk)->iRed;
- pData->iBASIgreen = ((mng_basip)pChunk)->iGreen;
- pData->iBASIblue = ((mng_basip)pChunk)->iBlue;
- pData->bBASIhasalpha = ((mng_basip)pChunk)->bHasalpha;
- pData->iBASIalpha = ((mng_basip)pChunk)->iAlpha;
- pData->iBASIviewable = ((mng_basip)pChunk)->iViewable;
-#endif
-
- iRetcode = mng_process_display_basi (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_BASI, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_basi (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_BASI, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_basi));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_BASI, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_basi (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_basip pBASI = (mng_ani_basip)pObject;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_BASI, MNG_LC_START);
-#endif
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- iRetcode = mng_process_display_basi (pData, pBASI->iRed, pBASI->iGreen, pBASI->iBlue,
- pBASI->bHasalpha, pBASI->iAlpha, pBASI->iViewable);
-#else
- pData->iBASIred = pBASI->iRed;
- pData->iBASIgreen = pBASI->iGreen;
- pData->iBASIblue = pBASI->iBlue;
- pData->bBASIhasalpha = pBASI->bHasalpha;
- pData->iBASIalpha = pBASI->iAlpha;
- pData->iBASIviewable = pBASI->iViewable;
-
- iRetcode = mng_process_display_basi (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_BASI, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_CLON
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_clon (mng_datap pData,
- mng_uint16 iSourceid,
- mng_uint16 iCloneid,
- mng_uint8 iClonetype,
- mng_bool bHasdonotshow,
- mng_uint8 iDonotshow,
- mng_uint8 iConcrete,
- mng_bool bHasloca,
- mng_uint8 iLocatype,
- mng_int32 iLocax,
- mng_int32 iLocay)
-#else
-mng_retcode mng_create_ani_clon (mng_datap pData,
- mng_chunkp pChunk)
-#endif
-{
- mng_ani_clonp pCLON;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_CLON, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- iRetcode = create_obj_general (pData, sizeof (mng_ani_clon),
- mng_free_obj_general,
- mng_process_ani_clon,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pCLON = (mng_ani_clonp)pTemp;
-#else
- MNG_ALLOC (pData, pCLON, sizeof (mng_ani_clon));
-
- pCLON->sHeader.fCleanup = mng_free_ani_clon;
- pCLON->sHeader.fProcess = mng_process_ani_clon;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pCLON);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pCLON->iSourceid = iSourceid;
- pCLON->iCloneid = iCloneid;
- pCLON->iClonetype = iClonetype;
- pCLON->bHasdonotshow = bHasdonotshow;
- pCLON->iDonotshow = iDonotshow;
- pCLON->iConcrete = iConcrete;
- pCLON->bHasloca = bHasloca;
- pCLON->iLocatype = iLocatype;
- pCLON->iLocax = iLocax;
- pCLON->iLocay = iLocay;
-#else
- pCLON->iSourceid = ((mng_clonp)pChunk)->iSourceid;
- pCLON->iCloneid = ((mng_clonp)pChunk)->iCloneid;
- pCLON->iClonetype = ((mng_clonp)pChunk)->iClonetype;
- pCLON->bHasdonotshow = ((mng_clonp)pChunk)->bHasdonotshow;
- pCLON->iDonotshow = ((mng_clonp)pChunk)->iDonotshow;
- pCLON->iConcrete = ((mng_clonp)pChunk)->iConcrete;
- pCLON->bHasloca = ((mng_clonp)pChunk)->bHasloca;
- pCLON->iLocatype = ((mng_clonp)pChunk)->iLocationtype;
- pCLON->iLocax = ((mng_clonp)pChunk)->iLocationx;
- pCLON->iLocay = ((mng_clonp)pChunk)->iLocationy;
-#endif
- }
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- iRetcode = mng_process_display_clon (pData, iSourceid, iCloneid, iClonetype,
- bHasdonotshow, iDonotshow, iConcrete,
- bHasloca, iLocatype, iLocax, iLocay);
-#else
- iRetcode = mng_process_display_clon (pData,
- ((mng_clonp)pChunk)->iSourceid,
- ((mng_clonp)pChunk)->iCloneid,
- ((mng_clonp)pChunk)->iClonetype,
- ((mng_clonp)pChunk)->bHasdonotshow,
- ((mng_clonp)pChunk)->iDonotshow,
- ((mng_clonp)pChunk)->iConcrete,
- ((mng_clonp)pChunk)->bHasloca,
- ((mng_clonp)pChunk)->iLocationtype,
- ((mng_clonp)pChunk)->iLocationx,
- ((mng_clonp)pChunk)->iLocationy);
-#endif
-#else
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pData->iCLONsourceid = iSourceid;
- pData->iCLONcloneid = iCloneid;
- pData->iCLONclonetype = iClonetype;
- pData->bCLONhasdonotshow = bHasdonotshow;
- pData->iCLONdonotshow = iDonotshow;
- pData->iCLONconcrete = iConcrete;
- pData->bCLONhasloca = bHasloca;
- pData->iCLONlocationtype = iLocatype;
- pData->iCLONlocationx = iLocax;
- pData->iCLONlocationy = iLocay;
-#else
- pData->iCLONsourceid = ((mng_clonp)pChunk)->iSourceid;
- pData->iCLONcloneid = ((mng_clonp)pChunk)->iCloneid;
- pData->iCLONclonetype = ((mng_clonp)pChunk)->iClonetype;
- pData->bCLONhasdonotshow = ((mng_clonp)pChunk)->bHasdonotshow;
- pData->iCLONdonotshow = ((mng_clonp)pChunk)->iDonotshow;
- pData->iCLONconcrete = ((mng_clonp)pChunk)->iConcrete;
- pData->bCLONhasloca = ((mng_clonp)pChunk)->bHasloca;
- pData->iCLONlocationtype = ((mng_clonp)pChunk)->iLocationtype;
- pData->iCLONlocationx = ((mng_clonp)pChunk)->iLocationx;
- pData->iCLONlocationy = ((mng_clonp)pChunk)->iLocationy;
-#endif
-
- iRetcode = mng_process_display_clon (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_CLON, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_clon (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_CLON, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_clon));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_CLON, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_clon (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_clonp pCLON = (mng_ani_clonp)pObject;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_CLON, MNG_LC_START);
-#endif
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- iRetcode = mng_process_display_clon (pData, pCLON->iSourceid, pCLON->iCloneid,
- pCLON->iClonetype, pCLON->bHasdonotshow,
- pCLON->iDonotshow, pCLON->iConcrete,
- pCLON->bHasloca, pCLON->iLocatype,
- pCLON->iLocax, pCLON->iLocay);
-#else
- pData->iCLONcloneid = pCLON->iCloneid;
- pData->iCLONsourceid = pCLON->iSourceid;
- pData->iCLONclonetype = pCLON->iClonetype;
- pData->bCLONhasdonotshow = pCLON->bHasdonotshow;
- pData->iCLONdonotshow = pCLON->iDonotshow;
- pData->iCLONconcrete = pCLON->iConcrete;
- pData->bCLONhasloca = pCLON->bHasloca;
- pData->iCLONlocationtype = pCLON->iLocatype;
- pData->iCLONlocationx = pCLON->iLocax;
- pData->iCLONlocationy = pCLON->iLocay;
-
- iRetcode = mng_process_display_clon (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_CLON, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_BACK
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_back (mng_datap pData,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue,
- mng_uint8 iMandatory,
- mng_uint16 iImageid,
- mng_uint8 iTile)
-#else
-mng_retcode mng_create_ani_back (mng_datap pData)
-#endif
-{
- mng_ani_backp pBACK;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_BACK, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_ani_back),
- mng_free_obj_general,
- mng_process_ani_back,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pBACK = (mng_ani_backp)pTemp;
-#else
- MNG_ALLOC (pData, pBACK, sizeof (mng_ani_back));
-
- pBACK->sHeader.fCleanup = mng_free_ani_back;
- pBACK->sHeader.fProcess = mng_process_ani_back;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pBACK);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pBACK->iRed = iRed;
- pBACK->iGreen = iGreen;
- pBACK->iBlue = iBlue;
- pBACK->iMandatory = iMandatory;
- pBACK->iImageid = iImageid;
- pBACK->iTile = iTile;
-#else
- pBACK->iRed = pData->iBACKred;
- pBACK->iGreen = pData->iBACKgreen;
- pBACK->iBlue = pData->iBACKblue;
- pBACK->iMandatory = pData->iBACKmandatory;
- pBACK->iImageid = pData->iBACKimageid;
- pBACK->iTile = pData->iBACKtile;
-#endif
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_BACK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_back (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_BACK, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_back));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_BACK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_back (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_backp pBACK = (mng_ani_backp)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_BACK, MNG_LC_START);
-#endif
-
- pData->iBACKred = pBACK->iRed;
- pData->iBACKgreen = pBACK->iGreen;
- pData->iBACKblue = pBACK->iBlue;
- pData->iBACKmandatory = pBACK->iMandatory;
- pData->iBACKimageid = pBACK->iImageid;
- pData->iBACKtile = pBACK->iTile;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_BACK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_FRAM
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_fram (mng_datap pData,
- mng_uint8 iFramemode,
- mng_uint8 iChangedelay,
- mng_uint32 iDelay,
- mng_uint8 iChangetimeout,
- mng_uint32 iTimeout,
- mng_uint8 iChangeclipping,
- mng_uint8 iCliptype,
- mng_int32 iClipl,
- mng_int32 iClipr,
- mng_int32 iClipt,
- mng_int32 iClipb)
-#else
-mng_retcode mng_create_ani_fram (mng_datap pData,
- mng_chunkp pChunk)
-#endif
-{
- mng_ani_framp pFRAM;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_FRAM, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- iRetcode = create_obj_general (pData, sizeof (mng_ani_fram),
- mng_free_obj_general,
- mng_process_ani_fram,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pFRAM = (mng_ani_framp)pTemp;
-#else
- MNG_ALLOC (pData, pFRAM, sizeof (mng_ani_fram));
-
- pFRAM->sHeader.fCleanup = mng_free_ani_fram;
- pFRAM->sHeader.fProcess = mng_process_ani_fram;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pFRAM);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pFRAM->iFramemode = iFramemode;
- pFRAM->iChangedelay = iChangedelay;
- pFRAM->iDelay = iDelay;
- pFRAM->iChangetimeout = iChangetimeout;
- pFRAM->iTimeout = iTimeout;
- pFRAM->iChangeclipping = iChangeclipping;
- pFRAM->iCliptype = iCliptype;
- pFRAM->iClipl = iClipl;
- pFRAM->iClipr = iClipr;
- pFRAM->iClipt = iClipt;
- pFRAM->iClipb = iClipb;
-#else
- pFRAM->iFramemode = ((mng_framp)pChunk)->iMode;
- pFRAM->iChangedelay = ((mng_framp)pChunk)->iChangedelay;
- pFRAM->iDelay = ((mng_framp)pChunk)->iDelay;
- pFRAM->iChangetimeout = ((mng_framp)pChunk)->iChangetimeout;
- pFRAM->iTimeout = ((mng_framp)pChunk)->iTimeout;
- pFRAM->iChangeclipping = ((mng_framp)pChunk)->iChangeclipping;
- pFRAM->iCliptype = ((mng_framp)pChunk)->iBoundarytype;
- pFRAM->iClipl = ((mng_framp)pChunk)->iBoundaryl;
- pFRAM->iClipr = ((mng_framp)pChunk)->iBoundaryr;
- pFRAM->iClipt = ((mng_framp)pChunk)->iBoundaryt;
- pFRAM->iClipb = ((mng_framp)pChunk)->iBoundaryb;
-#endif
- }
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- iRetcode = mng_process_display_fram (pData, iFramemode,
- iChangedelay, iDelay,
- iChangetimeout, iTimeout,
- iChangeclipping, iCliptype,
- iClipl, iClipr,
- iClipt, iClipb);
-#else
- iRetcode = mng_process_display_fram (pData,
- ((mng_framp)pChunk)->iMode,
- ((mng_framp)pChunk)->iChangedelay,
- ((mng_framp)pChunk)->iDelay,
- ((mng_framp)pChunk)->iChangetimeout,
- ((mng_framp)pChunk)->iTimeout,
- ((mng_framp)pChunk)->iChangeclipping,
- ((mng_framp)pChunk)->iBoundarytype,
- ((mng_framp)pChunk)->iBoundaryl,
- ((mng_framp)pChunk)->iBoundaryr,
- ((mng_framp)pChunk)->iBoundaryt,
- ((mng_framp)pChunk)->iBoundaryb);
-#endif
-#else
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pData->iTempFramemode = iFramemode;
- pData->iTempChangedelay = iChangedelay;
- pData->iTempDelay = iDelay;
- pData->iTempChangetimeout = iChangetimeout;
- pData->iTempTimeout = iTimeout;
- pData->iTempChangeclipping = iChangeclipping;
- pData->iTempCliptype = iCliptype;
- pData->iTempClipl = iClipl;
- pData->iTempClipr = iClipr;
- pData->iTempClipt = iClipt;
- pData->iTempClipb = iClipb;
-#else
- pData->iTempFramemode = ((mng_framp)pChunk)->iMode;
- pData->iTempChangedelay = ((mng_framp)pChunk)->iChangedelay;
- pData->iTempDelay = ((mng_framp)pChunk)->iDelay;
- pData->iTempChangetimeout = ((mng_framp)pChunk)->iChangetimeout;
- pData->iTempTimeout = ((mng_framp)pChunk)->iTimeout;
- pData->iTempChangeclipping = ((mng_framp)pChunk)->iChangeclipping;
- pData->iTempCliptype = ((mng_framp)pChunk)->iBoundarytype;
- pData->iTempClipl = ((mng_framp)pChunk)->iBoundaryl;
- pData->iTempClipr = ((mng_framp)pChunk)->iBoundaryr;
- pData->iTempClipt = ((mng_framp)pChunk)->iBoundaryt;
- pData->iTempClipb = ((mng_framp)pChunk)->iBoundaryb;
-#endif
-
- iRetcode = mng_process_display_fram (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_FRAM, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_fram (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_FRAM, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_fram));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_FRAM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_fram (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_framp pFRAM = (mng_ani_framp)pObject;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_FRAM, MNG_LC_START);
-#endif
-
- if (pData->iBreakpoint) /* previously broken ? */
- {
- iRetcode = mng_process_display_fram2 (pData);
- pData->iBreakpoint = 0; /* not again */
- }
- else
- {
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- iRetcode = mng_process_display_fram (pData, pFRAM->iFramemode,
- pFRAM->iChangedelay, pFRAM->iDelay,
- pFRAM->iChangetimeout, pFRAM->iTimeout,
- pFRAM->iChangeclipping, pFRAM->iCliptype,
- pFRAM->iClipl, pFRAM->iClipr,
- pFRAM->iClipt, pFRAM->iClipb);
-#else
- pData->iTempFramemode = pFRAM->iFramemode;
- pData->iTempChangedelay = pFRAM->iChangedelay;
- pData->iTempDelay = pFRAM->iDelay;
- pData->iTempChangetimeout = pFRAM->iChangetimeout;
- pData->iTempTimeout = pFRAM->iTimeout;
- pData->iTempChangeclipping = pFRAM->iChangeclipping;
- pData->iTempCliptype = pFRAM->iCliptype;
- pData->iTempClipl = pFRAM->iClipl;
- pData->iTempClipr = pFRAM->iClipr;
- pData->iTempClipt = pFRAM->iClipt;
- pData->iTempClipb = pFRAM->iClipb;
-
- iRetcode = mng_process_display_fram (pData);
-#endif
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_FRAM, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_MOVE
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_move (mng_datap pData,
- mng_uint16 iFirstid,
- mng_uint16 iLastid,
- mng_uint8 iType,
- mng_int32 iLocax,
- mng_int32 iLocay)
-#else
-mng_retcode mng_create_ani_move (mng_datap pData,
- mng_chunkp pChunk)
-#endif
-{
- mng_ani_movep pMOVE;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_MOVE, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- iRetcode = create_obj_general (pData, sizeof (mng_ani_move),
- mng_free_obj_general,
- mng_process_ani_move,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pMOVE = (mng_ani_movep)pTemp;
-#else
- MNG_ALLOC (pData, pMOVE, sizeof (mng_ani_move));
-
- pMOVE->sHeader.fCleanup = mng_free_ani_move;
- pMOVE->sHeader.fProcess = mng_process_ani_move;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pMOVE);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pMOVE->iFirstid = iFirstid;
- pMOVE->iLastid = iLastid;
- pMOVE->iType = iType;
- pMOVE->iLocax = iLocax;
- pMOVE->iLocay = iLocay;
-#else
- pMOVE->iFirstid = ((mng_movep)pChunk)->iFirstid;
- pMOVE->iLastid = ((mng_movep)pChunk)->iLastid;
- pMOVE->iType = ((mng_movep)pChunk)->iMovetype;
- pMOVE->iLocax = ((mng_movep)pChunk)->iMovex;
- pMOVE->iLocay = ((mng_movep)pChunk)->iMovey;
-#endif
- }
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- iRetcode = mng_process_display_move (pData, iFirstid, iLastid,
- iType, iLocax, iLocay);
-#else
- iRetcode = mng_process_display_move (pData,
- ((mng_movep)pChunk)->iFirstid,
- ((mng_movep)pChunk)->iLastid,
- ((mng_movep)pChunk)->iMovetype,
- ((mng_movep)pChunk)->iMovex,
- ((mng_movep)pChunk)->iMovey);
-#endif
-#else
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pData->iMOVEfromid = iFirstid;
- pData->iMOVEtoid = iLastid;
- pData->iMOVEmovetype = iType;
- pData->iMOVEmovex = iLocax;
- pData->iMOVEmovey = iLocay;
-#else
- pData->iMOVEfromid = ((mng_movep)pChunk)->iFirstid;
- pData->iMOVEtoid = ((mng_movep)pChunk)->iLastid;
- pData->iMOVEmovetype = ((mng_movep)pChunk)->iMovetype;
- pData->iMOVEmovex = ((mng_movep)pChunk)->iMovex;
- pData->iMOVEmovey = ((mng_movep)pChunk)->iMovey;
-#endif
-
- iRetcode = mng_process_display_move (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_MOVE, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_move (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_MOVE, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_move));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_MOVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_move (mng_datap pData,
- mng_objectp pObject)
-{
- mng_retcode iRetcode;
- mng_ani_movep pMOVE = (mng_ani_movep)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_MOVE, MNG_LC_START);
-#endif
- /* re-process the MOVE chunk */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- iRetcode = mng_process_display_move (pData, pMOVE->iFirstid, pMOVE->iLastid,
- pMOVE->iType, pMOVE->iLocax, pMOVE->iLocay);
-#else
- pData->iMOVEfromid = pMOVE->iFirstid;
- pData->iMOVEtoid = pMOVE->iLastid;
- pData->iMOVEmovetype = pMOVE->iType;
- pData->iMOVEmovex = pMOVE->iLocax;
- pData->iMOVEmovey = pMOVE->iLocay;
-
- iRetcode = mng_process_display_move (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_MOVE, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_CLIP
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_clip (mng_datap pData,
- mng_uint16 iFirstid,
- mng_uint16 iLastid,
- mng_uint8 iType,
- mng_int32 iClipl,
- mng_int32 iClipr,
- mng_int32 iClipt,
- mng_int32 iClipb)
-#else
-mng_retcode mng_create_ani_clip (mng_datap pData,
- mng_chunkp pChunk)
-#endif
-{
- mng_ani_clipp pCLIP;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_CLIP, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- iRetcode = create_obj_general (pData, sizeof (mng_ani_clip),
- mng_free_obj_general,
- mng_process_ani_clip,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pCLIP = (mng_ani_clipp)pTemp;
-#else
- MNG_ALLOC (pData, pCLIP, sizeof (mng_ani_clip));
-
- pCLIP->sHeader.fCleanup = mng_free_ani_clip;
- pCLIP->sHeader.fProcess = mng_process_ani_clip;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pCLIP);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pCLIP->iFirstid = iFirstid;
- pCLIP->iLastid = iLastid;
- pCLIP->iType = iType;
- pCLIP->iClipl = iClipl;
- pCLIP->iClipr = iClipr;
- pCLIP->iClipt = iClipt;
- pCLIP->iClipb = iClipb;
-#else
- pCLIP->iFirstid = ((mng_clipp)pChunk)->iFirstid;
- pCLIP->iLastid = ((mng_clipp)pChunk)->iLastid;
- pCLIP->iType = ((mng_clipp)pChunk)->iCliptype;
- pCLIP->iClipl = ((mng_clipp)pChunk)->iClipl;
- pCLIP->iClipr = ((mng_clipp)pChunk)->iClipr;
- pCLIP->iClipt = ((mng_clipp)pChunk)->iClipt;
- pCLIP->iClipb = ((mng_clipp)pChunk)->iClipb;
-#endif
- }
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- iRetcode = mng_process_display_clip (pData, iFirstid, iLastid,
- iType, iClipl, iClipr,
- iClipt, iClipb);
-#else
- iRetcode = mng_process_display_clip (pData,
- ((mng_clipp)pChunk)->iFirstid,
- ((mng_clipp)pChunk)->iLastid,
- ((mng_clipp)pChunk)->iCliptype,
- ((mng_clipp)pChunk)->iClipl,
- ((mng_clipp)pChunk)->iClipr,
- ((mng_clipp)pChunk)->iClipt,
- ((mng_clipp)pChunk)->iClipb);
-#endif
-#else
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pData->iCLIPfromid = iFirstid;
- pData->iCLIPtoid = iLastid;
- pData->iCLIPcliptype = iType;
- pData->iCLIPclipl = iClipl;
- pData->iCLIPclipr = iClipr;
- pData->iCLIPclipt = iClipt;
- pData->iCLIPclipb = iClipb;
-#else
- pData->iCLIPfromid = ((mng_clipp)pChunk)->iFirstid;
- pData->iCLIPtoid = ((mng_clipp)pChunk)->iLastid;
- pData->iCLIPcliptype = ((mng_clipp)pChunk)->iCliptype;
- pData->iCLIPclipl = ((mng_clipp)pChunk)->iClipl;
- pData->iCLIPclipr = ((mng_clipp)pChunk)->iClipr;
- pData->iCLIPclipt = ((mng_clipp)pChunk)->iClipt;
- pData->iCLIPclipb = ((mng_clipp)pChunk)->iClipb;
-#endif
-
- iRetcode = mng_process_display_clip (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_CLIP, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_clip (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_CLIP, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_clip));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_CLIP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_clip (mng_datap pData,
- mng_objectp pObject)
-{
- mng_retcode iRetcode;
- mng_ani_clipp pCLIP = (mng_ani_clipp)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_CLIP, MNG_LC_START);
-#endif
- /* re-process the CLIP chunk */
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- iRetcode = mng_process_display_clip (pData, pCLIP->iFirstid, pCLIP->iLastid,
- pCLIP->iType, pCLIP->iClipl, pCLIP->iClipr,
- pCLIP->iClipt, pCLIP->iClipb);
-#else
- pData->iCLIPfromid = pCLIP->iFirstid;
- pData->iCLIPtoid = pCLIP->iLastid;
- pData->iCLIPcliptype = pCLIP->iType;
- pData->iCLIPclipl = pCLIP->iClipl;
- pData->iCLIPclipr = pCLIP->iClipr;
- pData->iCLIPclipt = pCLIP->iClipt;
- pData->iCLIPclipb = pCLIP->iClipb;
-
- iRetcode = mng_process_display_clip (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_CLIP, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SHOW
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_show (mng_datap pData,
- mng_uint16 iFirstid,
- mng_uint16 iLastid,
- mng_uint8 iMode)
-#else
-mng_retcode mng_create_ani_show (mng_datap pData)
-#endif
-{
- mng_ani_showp pSHOW;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_SHOW, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_ani_show),
- mng_free_obj_general,
- mng_process_ani_show,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pSHOW = (mng_ani_showp)pTemp;
-#else
- MNG_ALLOC (pData, pSHOW, sizeof (mng_ani_show));
-
- pSHOW->sHeader.fCleanup = mng_free_ani_show;
- pSHOW->sHeader.fProcess = mng_process_ani_show;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pSHOW);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pSHOW->iFirstid = iFirstid;
- pSHOW->iLastid = iLastid;
- pSHOW->iMode = iMode;
-#else
- pSHOW->iFirstid = pData->iSHOWfromid;
- pSHOW->iLastid = pData->iSHOWtoid;
- pSHOW->iMode = pData->iSHOWmode;
-#endif
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_SHOW, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_show (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_SHOW, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_show));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_SHOW, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_show (mng_datap pData,
- mng_objectp pObject)
-{
- mng_retcode iRetcode;
- mng_ani_showp pSHOW = (mng_ani_showp)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_SHOW, MNG_LC_START);
-#endif
-
- if (pData->iBreakpoint) /* returning from breakpoint ? */
- {
- iRetcode = mng_process_display_show (pData);
- }
- else
- { /* "re-run" SHOW chunk */
- pData->iSHOWmode = pSHOW->iMode;
- pData->iSHOWfromid = pSHOW->iFirstid;
- pData->iSHOWtoid = pSHOW->iLastid;
-
- iRetcode = mng_process_display_show (pData);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_SHOW, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_TERM
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_term (mng_datap pData,
- mng_uint8 iTermaction,
- mng_uint8 iIteraction,
- mng_uint32 iDelay,
- mng_uint32 iItermax)
-#else
-mng_retcode mng_create_ani_term (mng_datap pData,
- mng_chunkp pChunk)
-#endif
-{
- mng_ani_termp pTERM;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_TERM, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_ani_term),
- mng_free_obj_general,
- mng_process_ani_term,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pTERM = (mng_ani_termp)pTemp;
-#else
- MNG_ALLOC (pData, pTERM, sizeof (mng_ani_term));
-
- pTERM->sHeader.fCleanup = mng_free_ani_term;
- pTERM->sHeader.fProcess = mng_process_ani_term;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pTERM);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pTERM->iTermaction = iTermaction;
- pTERM->iIteraction = iIteraction;
- pTERM->iDelay = iDelay;
- pTERM->iItermax = iItermax;
-#else
- pTERM->iTermaction = ((mng_termp)pChunk)->iTermaction;
- pTERM->iIteraction = ((mng_termp)pChunk)->iIteraction;
- pTERM->iDelay = ((mng_termp)pChunk)->iDelay;
- pTERM->iItermax = ((mng_termp)pChunk)->iItermax;
-#endif
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_TERM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_term (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_TERM, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_term));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_TERM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_term (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_TERM, MNG_LC_START);
-#endif
-
- /* dummy: no action required! */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_TERM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SAVE
-mng_retcode mng_create_ani_save (mng_datap pData)
-{
- mng_ani_savep pSAVE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_SAVE, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_ani_save),
- mng_free_obj_general,
- mng_process_ani_save,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pSAVE = (mng_ani_savep)pTemp;
-#else
- MNG_ALLOC (pData, pSAVE, sizeof (mng_ani_save));
-
- pSAVE->sHeader.fCleanup = mng_free_ani_save;
- pSAVE->sHeader.fProcess = mng_process_ani_save;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pSAVE);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_SAVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_save (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_SAVE, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_save));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_SAVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_save (mng_datap pData,
- mng_objectp pObject)
-{
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_SAVE, MNG_LC_START);
-#endif
-
- iRetcode = mng_process_display_save (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_SAVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_SEEK
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_seek (mng_datap pData,
- mng_uint32 iSegmentnamesize,
- mng_pchar zSegmentname)
-#else
-mng_retcode mng_create_ani_seek (mng_datap pData,
- mng_chunkp pChunk)
-#endif
-{
- mng_ani_seekp pSEEK;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_SEEK, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_ani_seek),
- mng_free_ani_seek,
- mng_process_ani_seek,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pSEEK = (mng_ani_seekp)pTemp;
-#else
- MNG_ALLOC (pData, pSEEK, sizeof (mng_ani_seek));
-
- pSEEK->sHeader.fCleanup = mng_free_ani_seek;
- pSEEK->sHeader.fProcess = mng_process_ani_seek;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pSEEK);
-
- pData->pLastseek = (mng_objectp)pSEEK;
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pSEEK->iSegmentnamesize = iSegmentnamesize;
- if (iSegmentnamesize)
- {
- MNG_ALLOC (pData, pSEEK->zSegmentname, iSegmentnamesize + 1);
- MNG_COPY (pSEEK->zSegmentname, zSegmentname, iSegmentnamesize);
- }
-#else
- pSEEK->iSegmentnamesize = ((mng_seekp)pChunk)->iNamesize;
- if (pSEEK->iSegmentnamesize)
- {
- MNG_ALLOC (pData, pSEEK->zSegmentname, pSEEK->iSegmentnamesize + 1);
- MNG_COPY (pSEEK->zSegmentname, ((mng_seekp)pChunk)->zName, pSEEK->iSegmentnamesize);
- }
-#endif
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_SEEK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_free_ani_seek (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_seekp pSEEK = (mng_ani_seekp)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_SEEK, MNG_LC_START);
-#endif
-
- if (pSEEK->iSegmentnamesize)
- MNG_FREEX (pData, pSEEK->zSegmentname, pSEEK->iSegmentnamesize + 1);
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
- MNG_FREEX (pData, pObject, sizeof (mng_ani_seek));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_SEEK, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
- return MNG_NOERROR;
-#else
- return mng_free_obj_general(pData, pObject);
-#endif
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_seek (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_seekp pSEEK = (mng_ani_seekp)pObject;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_SEEK, MNG_LC_START);
-#endif
-
-#ifdef MNG_SUPPORT_DYNAMICMNG
- if (!pData->bStopafterseek) /* can we really process this one ? */
-#endif
- {
- pData->pLastseek = pObject;
-
- if (pData->fProcessseek) /* inform the app ? */
- {
- mng_bool bOke;
- mng_pchar zName;
-
- MNG_ALLOC (pData, zName, pSEEK->iSegmentnamesize + 1);
-
- if (pSEEK->iSegmentnamesize)
- MNG_COPY (zName, pSEEK->zSegmentname, pSEEK->iSegmentnamesize);
-
- bOke = pData->fProcessseek ((mng_handle)pData, zName);
-
- MNG_FREEX (pData, zName, pSEEK->iSegmentnamesize + 1);
-
- if (!bOke)
- MNG_ERROR (pData, MNG_APPMISCERROR);
- }
- }
-
- iRetcode = mng_process_display_seek (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_SEEK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_dhdr (mng_datap pData,
- mng_uint16 iObjectid,
- mng_uint8 iImagetype,
- mng_uint8 iDeltatype,
- mng_uint32 iBlockwidth,
- mng_uint32 iBlockheight,
- mng_uint32 iBlockx,
- mng_uint32 iBlocky)
-#else
-mng_retcode mng_create_ani_dhdr (mng_datap pData,
- mng_chunkp pChunk)
-#endif
-{
- mng_ani_dhdrp pDHDR;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_DHDR, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- iRetcode = create_obj_general (pData, sizeof (mng_ani_dhdr),
- mng_free_obj_general,
- mng_process_ani_dhdr,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pDHDR = (mng_ani_dhdrp)pTemp;
-#else
- MNG_ALLOC (pData, pDHDR, sizeof (mng_ani_dhdr));
-
- pDHDR->sHeader.fCleanup = mng_free_ani_dhdr;
- pDHDR->sHeader.fProcess = mng_process_ani_dhdr;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pDHDR);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pDHDR->iObjectid = iObjectid;
- pDHDR->iImagetype = iImagetype;
- pDHDR->iDeltatype = iDeltatype;
- pDHDR->iBlockwidth = iBlockwidth;
- pDHDR->iBlockheight = iBlockheight;
- pDHDR->iBlockx = iBlockx;
- pDHDR->iBlocky = iBlocky;
-#else
- pDHDR->iObjectid = ((mng_dhdrp)pChunk)->iObjectid;
- pDHDR->iImagetype = ((mng_dhdrp)pChunk)->iImagetype;
- pDHDR->iDeltatype = ((mng_dhdrp)pChunk)->iDeltatype;
- pDHDR->iBlockwidth = ((mng_dhdrp)pChunk)->iBlockwidth;
- pDHDR->iBlockheight = ((mng_dhdrp)pChunk)->iBlockheight;
- pDHDR->iBlockx = ((mng_dhdrp)pChunk)->iBlockx;
- pDHDR->iBlocky = ((mng_dhdrp)pChunk)->iBlocky;
-#endif
- }
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- iRetcode = mng_process_display_dhdr (pData, iObjectid,
- iImagetype, iDeltatype,
- iBlockwidth, iBlockheight,
- iBlockx, iBlocky);
-#else
- iRetcode = mng_process_display_dhdr (pData,
- ((mng_dhdrp)pChunk)->iObjectid,
- ((mng_dhdrp)pChunk)->iImagetype,
- ((mng_dhdrp)pChunk)->iDeltatype,
- ((mng_dhdrp)pChunk)->iBlockwidth,
- ((mng_dhdrp)pChunk)->iBlockheight,
- ((mng_dhdrp)pChunk)->iBlockx,
- ((mng_dhdrp)pChunk)->iBlocky);
-#endif
-#else
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pData->iDHDRobjectid = iObjectid;
- pData->iDHDRimagetype = iImagetype;
- pData->iDHDRdeltatype = iDeltatype;
- pData->iDHDRblockwidth = iBlockwidth;
- pData->iDHDRblockheight = iBlockheight;
- pData->iDHDRblockx = iBlockx;
- pData->iDHDRblocky = iBlocky;
-#else
- pData->iDHDRobjectid = ((mng_dhdrp)pChunk)->iObjectid;
- pData->iDHDRimagetype = ((mng_dhdrp)pChunk)->iImagetype;
- pData->iDHDRdeltatype = ((mng_dhdrp)pChunk)->iDeltatype;
- pData->iDHDRblockwidth = ((mng_dhdrp)pChunk)->iBlockwidth;
- pData->iDHDRblockheight = ((mng_dhdrp)pChunk)->iBlockheight;
- pData->iDHDRblockx = ((mng_dhdrp)pChunk)->iBlockx;
- pData->iDHDRblocky = ((mng_dhdrp)pChunk)->iBlocky;
-#endif
-
- iRetcode = mng_process_display_dhdr (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_DHDR, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_dhdr (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_DHDR, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_dhdr));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_DHDR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_dhdr (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_dhdrp pDHDR = (mng_ani_dhdrp)pObject;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_DHDR, MNG_LC_START);
-#endif
-
- pData->bHasDHDR = MNG_TRUE; /* let everyone know we're inside a DHDR */
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- iRetcode = mng_process_display_dhdr (pData, pDHDR->iObjectid,
- pDHDR->iImagetype, pDHDR->iDeltatype,
- pDHDR->iBlockwidth, pDHDR->iBlockheight,
- pDHDR->iBlockx, pDHDR->iBlocky);
-#else
- pData->iDHDRobjectid = pDHDR->iObjectid;
- pData->iDHDRimagetype = pDHDR->iImagetype;
- pData->iDHDRdeltatype = pDHDR->iDeltatype;
- pData->iDHDRblockwidth = pDHDR->iBlockwidth;
- pData->iDHDRblockheight = pDHDR->iBlockheight;
- pData->iDHDRblockx = pDHDR->iBlockx;
- pData->iDHDRblocky = pDHDR->iBlocky;
-
- iRetcode = mng_process_display_dhdr (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_DHDR, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_prom (mng_datap pData,
- mng_uint8 iBitdepth,
- mng_uint8 iColortype,
- mng_uint8 iFilltype)
-#else
-mng_retcode mng_create_ani_prom (mng_datap pData,
- mng_chunkp pChunk)
-#endif
-{
- mng_ani_promp pPROM=NULL;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_PROM, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- iRetcode = create_obj_general (pData, sizeof (mng_ani_prom),
- mng_free_obj_general,
- mng_process_ani_prom,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pPROM = (mng_ani_promp)pTemp;
-#else
- MNG_ALLOC (pData, pPROM, sizeof (mng_ani_prom));
-
- pPROM->sHeader.fCleanup = mng_free_ani_prom;
- pPROM->sHeader.fProcess = mng_process_ani_prom;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pPROM);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pPROM->iBitdepth = iBitdepth;
- pPROM->iColortype = iColortype;
- pPROM->iFilltype = iFilltype;
-#else
- pPROM->iBitdepth = ((mng_promp)pChunk)->iSampledepth;
- pPROM->iColortype = ((mng_promp)pChunk)->iColortype;
- pPROM->iFilltype = ((mng_promp)pChunk)->iFilltype;
-#endif
- }
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- iRetcode = mng_process_display_prom (pData, iBitdepth,
- iColortype, iFilltype);
-#else
- iRetcode = mng_process_display_prom (pData,
- ((mng_promp)pChunk)->iSampledepth,
- ((mng_promp)pChunk)->iColortype,
- ((mng_promp)pChunk)->iFilltype);
-#endif
-#else
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pData->iPROMbitdepth = iBitdepth;
- pData->iPROMcolortype = iColortype;
- pData->iPROMfilltype = iFilltype;
-#else
- pData->iPROMbitdepth = ((mng_promp)pChunk)->iSampledepth;
- pData->iPROMcolortype = ((mng_promp)pChunk)->iColortype;
- pData->iPROMfilltype = ((mng_promp)pChunk)->iFilltype;
-#endif
-
- iRetcode = mng_process_display_prom (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_PROM, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_prom (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_PROM, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_prom));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_PROM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_prom (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_promp pPROM = (mng_ani_promp)pObject;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_PROM, MNG_LC_START);
-#endif
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- iRetcode = mng_process_display_prom (pData, pPROM->iBitdepth,
- pPROM->iColortype, pPROM->iFilltype);
-#else
- pData->iPROMbitdepth = pPROM->iBitdepth;
- pData->iPROMcolortype = pPROM->iColortype;
- pData->iPROMfilltype = pPROM->iFilltype;
-
- iRetcode = mng_process_display_prom (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_PROM, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode mng_create_ani_ipng (mng_datap pData)
-{
- mng_ani_ipngp pIPNG;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_IPNG, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_ani_ipng),
- mng_free_obj_general,
- mng_process_ani_ipng,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pIPNG = (mng_ani_ipngp)pTemp;
-#else
- MNG_ALLOC (pData, pIPNG, sizeof (mng_ani_ipng));
-
- pIPNG->sHeader.fCleanup = mng_free_ani_ipng;
- pIPNG->sHeader.fProcess = mng_process_ani_ipng;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pIPNG);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_IPNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_ipng (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_IPNG, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_ipng));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_IPNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_ipng (mng_datap pData,
- mng_objectp pObject)
-{
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_IPNG, MNG_LC_START);
-#endif
-
- iRetcode = mng_process_display_ipng (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_IPNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifdef MNG_INCLUDE_JNG
-mng_retcode mng_create_ani_ijng (mng_datap pData)
-{
- mng_ani_ijngp pIJNG;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_IJNG, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_ani_ijng),
- mng_free_obj_general,
- mng_process_ani_ijng,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pIJNG = (mng_ani_ijngp)pTemp;
-#else
- MNG_ALLOC (pData, pIJNG, sizeof (mng_ani_ijng));
-
- pIJNG->sHeader.fCleanup = mng_free_ani_ijng;
- pIJNG->sHeader.fProcess = mng_process_ani_ijng;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pIJNG);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_IJNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_ijng (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_IJNG, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_ijng));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_IJNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_ijng (mng_datap pData,
- mng_objectp pObject)
-{
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_IJNG, MNG_LC_START);
-#endif
-
- iRetcode = mng_process_display_ijng (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_IJNG, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode mng_create_ani_pplt (mng_datap pData,
- mng_uint8 iType,
- mng_uint32 iCount,
- mng_palette8ep paIndexentries,
- mng_uint8p paAlphaentries,
- mng_uint8p paUsedentries)
-{
- mng_ani_ppltp pPPLT;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_PPLT, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- iRetcode = create_obj_general (pData, sizeof (mng_ani_pplt),
- mng_free_obj_general,
- mng_process_ani_pplt,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pPPLT = (mng_ani_ppltp)pTemp;
-#else
- MNG_ALLOC (pData, pPPLT, sizeof (mng_ani_pplt));
-
- pPPLT->sHeader.fCleanup = mng_free_ani_pplt;
- pPPLT->sHeader.fProcess = mng_process_ani_pplt;
-#endif
-
- pPPLT->iType = iType;
- pPPLT->iCount = iCount;
-
- MNG_COPY (pPPLT->aIndexentries, paIndexentries, sizeof (pPPLT->aIndexentries));
- MNG_COPY (pPPLT->aAlphaentries, paAlphaentries, sizeof (pPPLT->aAlphaentries));
- MNG_COPY (pPPLT->aUsedentries, paUsedentries, sizeof (pPPLT->aUsedentries ));
-
- mng_add_ani_object (pData, (mng_object_headerp)pPPLT);
- }
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- iRetcode = mng_process_display_pplt (pData, iType, iCount,
- paIndexentries, paAlphaentries, paUsedentries);
-#else
- pData->iPPLTtype = iType;
- pData->iPPLTcount = iCount;
- pData->paPPLTindexentries = paIndexentries;
- pData->paPPLTalphaentries = paAlphaentries;
- pData->paPPLTusedentries = paUsedentries;
-
- iRetcode = mng_process_display_pplt (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_PPLT, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_pplt (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_PPLT, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_pplt));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_PPLT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_pplt (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_ppltp pPPLT = (mng_ani_ppltp)pObject;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_PPLT, MNG_LC_START);
-#endif
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- iRetcode = mng_process_display_pplt (pData, pPPLT->iType, pPPLT->iCount,
- pPPLT->aIndexentries, pPPLT->aAlphaentries,
- pPPLT->aUsedentries);
-#else
- pData->iPPLTtype = pPPLT->iType;
- pData->iPPLTcount = pPPLT->iCount;
- pData->paPPLTindexentries = &pPPLT->aIndexentries;
- pData->paPPLTalphaentries = &pPPLT->aAlphaentries;
- pData->paPPLTusedentries = &pPPLT->aUsedentries;
-
- iRetcode = mng_process_display_pplt (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_PPLT, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_MAGN
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_magn (mng_datap pData,
- mng_uint16 iFirstid,
- mng_uint16 iLastid,
- mng_uint8 iMethodX,
- mng_uint16 iMX,
- mng_uint16 iMY,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint16 iMT,
- mng_uint16 iMB,
- mng_uint8 iMethodY)
-#else
-mng_retcode mng_create_ani_magn (mng_datap pData,
- mng_chunkp pChunk)
-#endif
-{
- mng_ani_magnp pMAGN=NULL;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_MAGN, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- iRetcode = create_obj_general (pData, sizeof (mng_ani_magn),
- mng_free_obj_general,
- mng_process_ani_magn,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pMAGN = (mng_ani_magnp)pTemp;
-#else
- MNG_ALLOC (pData, pMAGN, sizeof (mng_ani_magn));
-
- pMAGN->sHeader.fCleanup = mng_free_ani_magn;
- pMAGN->sHeader.fProcess = mng_process_ani_magn;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pMAGN);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pMAGN->iFirstid = iFirstid;
- pMAGN->iLastid = iLastid;
- pMAGN->iMethodX = iMethodX;
- pMAGN->iMX = iMX;
- pMAGN->iMY = iMY;
- pMAGN->iML = iML;
- pMAGN->iMR = iMR;
- pMAGN->iMT = iMT;
- pMAGN->iMB = iMB;
- pMAGN->iMethodY = iMethodY;
-#else
- pMAGN->iFirstid = ((mng_magnp)pChunk)->iFirstid;
- pMAGN->iLastid = ((mng_magnp)pChunk)->iLastid;
- pMAGN->iMethodX = ((mng_magnp)pChunk)->iMethodX;
- pMAGN->iMX = ((mng_magnp)pChunk)->iMX;
- pMAGN->iMY = ((mng_magnp)pChunk)->iMY;
- pMAGN->iML = ((mng_magnp)pChunk)->iML;
- pMAGN->iMR = ((mng_magnp)pChunk)->iMR;
- pMAGN->iMT = ((mng_magnp)pChunk)->iMT;
- pMAGN->iMB = ((mng_magnp)pChunk)->iMB;
- pMAGN->iMethodY = ((mng_magnp)pChunk)->iMethodY;
-#endif
- }
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- iRetcode = mng_process_display_magn (pData, pMAGN->iFirstid, pMAGN->iLastid,
- pMAGN->iMethodX, pMAGN->iMX, pMAGN->iMY,
- pMAGN->iML, pMAGN->iMR, pMAGN->iMT,
- pMAGN->iMB, pMAGN->iMethodY);
-#else
- iRetcode = mng_process_display_magn (pData,
- ((mng_magnp)pChunk)->iFirstid,
- ((mng_magnp)pChunk)->iLastid,
- ((mng_magnp)pChunk)->iMethodX,
- ((mng_magnp)pChunk)->iMX,
- ((mng_magnp)pChunk)->iMY,
- ((mng_magnp)pChunk)->iML,
- ((mng_magnp)pChunk)->iMR,
- ((mng_magnp)pChunk)->iMT,
- ((mng_magnp)pChunk)->iMB,
- ((mng_magnp)pChunk)->iMethodY);
-#endif
-#else
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pData->iMAGNfirstid = iFirstid;
- pData->iMAGNlastid = iLastid;
- pData->iMAGNmethodX = iMethodX;
- pData->iMAGNmX = iMX;
- pData->iMAGNmY = iMY;
- pData->iMAGNmL = iML;
- pData->iMAGNmR = iMR;
- pData->iMAGNmT = iMT;
- pData->iMAGNmB = iMB;
- pData->iMAGNmethodY = iMethodY;
-#else
- pData->iMAGNfirstid = ((mng_magnp)pChunk)->iFirstid;
- pData->iMAGNlastid = ((mng_magnp)pChunk)->iLastid;
- pData->iMAGNmethodX = ((mng_magnp)pChunk)->iMethodX;
- pData->iMAGNmX = ((mng_magnp)pChunk)->iMX;
- pData->iMAGNmY = ((mng_magnp)pChunk)->iMY;
- pData->iMAGNmL = ((mng_magnp)pChunk)->iML;
- pData->iMAGNmR = ((mng_magnp)pChunk)->iMR;
- pData->iMAGNmT = ((mng_magnp)pChunk)->iMT;
- pData->iMAGNmB = ((mng_magnp)pChunk)->iMB;
- pData->iMAGNmethodY = ((mng_magnp)pChunk)->iMethodY;
-#endif
-
- iRetcode = mng_process_display_magn (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_MAGN, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-mng_retcode mng_free_ani_magn (mng_datap pData,
- mng_objectp pObject)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_MAGN, MNG_LC_START);
-#endif
-
- MNG_FREEX (pData, pObject, sizeof (mng_ani_magn));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_MAGN, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_magn (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_magnp pMAGN = (mng_ani_magnp)pObject;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_MAGN, MNG_LC_START);
-#endif
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- iRetcode = mng_process_display_magn (pData, pMAGN->iFirstid, pMAGN->iLastid,
- pMAGN->iMethodX, pMAGN->iMX, pMAGN->iMY,
- pMAGN->iML, pMAGN->iMR, pMAGN->iMT,
- pMAGN->iMB, pMAGN->iMethodY);
-#else
- pData->iMAGNfirstid = pMAGN->iFirstid;
- pData->iMAGNlastid = pMAGN->iLastid;
- pData->iMAGNmethodX = pMAGN->iMethodX;
- pData->iMAGNmX = pMAGN->iMX;
- pData->iMAGNmY = pMAGN->iMY;
- pData->iMAGNmL = pMAGN->iML;
- pData->iMAGNmR = pMAGN->iMR;
- pData->iMAGNmT = pMAGN->iMT;
- pData->iMAGNmB = pMAGN->iMB;
- pData->iMAGNmethodY = pMAGN->iMethodY;
-
- iRetcode = mng_process_display_magn (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_MAGN, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_past (mng_datap pData,
- mng_uint16 iTargetid,
- mng_uint8 iTargettype,
- mng_int32 iTargetx,
- mng_int32 iTargety,
- mng_uint32 iCount,
- mng_ptr pSources)
-#else
-mng_retcode mng_create_ani_past (mng_datap pData,
- mng_chunkp pChunk)
-#endif
-{
- mng_ani_pastp pPAST;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_PAST, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- iRetcode = create_obj_general (pData, sizeof (mng_ani_past),
- mng_free_ani_past,
- mng_process_ani_past,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pPAST = (mng_ani_pastp)pTemp;
-#else
- MNG_ALLOC (pData, pPAST, sizeof (mng_ani_past));
-
- pPAST->sHeader.fCleanup = mng_free_ani_past;
- pPAST->sHeader.fProcess = mng_process_ani_past;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pPAST);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pPAST->iTargetid = iTargetid;
- pPAST->iTargettype = iTargettype;
- pPAST->iTargetx = iTargetx;
- pPAST->iTargety = iTargety;
- pPAST->iCount = iCount;
-
- if (iCount)
- {
- MNG_ALLOC (pData, pPAST->pSources, (iCount * sizeof (mng_past_source)));
- MNG_COPY (pPAST->pSources, pSources, (iCount * sizeof (mng_past_source)));
- }
-#else
- pPAST->iTargetid = ((mng_pastp)pChunk)->iDestid;
- pPAST->iTargettype = ((mng_pastp)pChunk)->iTargettype;
- pPAST->iTargetx = ((mng_pastp)pChunk)->iTargetx;
- pPAST->iTargety = ((mng_pastp)pChunk)->iTargety;
- pPAST->iCount = ((mng_pastp)pChunk)->iCount;
-
- if (pPAST->iCount)
- {
- mng_size_t iSize = (mng_size_t)(pPAST->iCount * sizeof (mng_past_source));
- MNG_ALLOC (pData, pPAST->pSources, iSize);
- MNG_COPY (pPAST->pSources, ((mng_pastp)pChunk)->pSources, iSize);
- }
-#endif
- }
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- iRetcode = mng_process_display_past (pData, iTargetid, iTargettype,
- iTargetx, iTargety,
- iCount, pSources);
-#else
- iRetcode = mng_process_display_past (pData,
- ((mng_pastp)pChunk)->iDestid,
- ((mng_pastp)pChunk)->iTargettype,
- ((mng_pastp)pChunk)->iTargetx,
- ((mng_pastp)pChunk)->iTargety,
- ((mng_pastp)pChunk)->iCount,
- ((mng_pastp)pChunk)->pSources);
-#endif
-#else
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pData->iPASTtargetid = iTargetid;
- pData->iPASTtargettype = iTargettype;
- pData->iPASTtargetx = iTargetx;
- pData->iPASTtargety = iTargety;
- pData->iPASTcount = iCount;
- pData->pPASTsources = pSources;
-#else
- pData->iPASTtargetid = ((mng_pastp)pChunk)->iDestid;
- pData->iPASTtargettype = ((mng_pastp)pChunk)->iTargettype;
- pData->iPASTtargetx = ((mng_pastp)pChunk)->iTargetx;
- pData->iPASTtargety = ((mng_pastp)pChunk)->iTargety;
- pData->iPASTcount = ((mng_pastp)pChunk)->iCount;
- pData->pPASTsources = ((mng_pastp)pChunk)->pSources;
-#endif
-
- iRetcode = mng_process_display_past (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_PAST, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-mng_retcode mng_free_ani_past (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_pastp pPAST = (mng_ani_pastp)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_PAST, MNG_LC_START);
-#endif
-
- if (pPAST->iCount)
- MNG_FREEX (pData, pPAST->pSources, (pPAST->iCount * sizeof (mng_past_source)));
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
- MNG_FREEX (pData, pObject, sizeof (mng_ani_past));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_PAST, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
- return MNG_NOERROR;
-#else
- return mng_free_obj_general(pData, pObject);
-#endif
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-mng_retcode mng_process_ani_past (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_pastp pPAST = (mng_ani_pastp)pObject;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_PAST, MNG_LC_START);
-#endif
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- iRetcode = mng_process_display_past (pData, pPAST->iTargetid, pPAST->iTargettype,
- pPAST->iTargetx, pPAST->iTargety,
- pPAST->iCount, pPAST->pSources);
-#else
- pData->iPASTtargetid = pPAST->iTargetid;
- pData->iPASTtargettype = pPAST->iTargettype;
- pData->iPASTtargetx = pPAST->iTargetx;
- pData->iPASTtargety = pPAST->iTargety;
- pData->iPASTcount = pPAST->iCount;
- pData->pPASTsources = pPAST->pSources;
-
- iRetcode = mng_process_display_past (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_PAST, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DISC
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ani_disc (mng_datap pData,
- mng_uint32 iCount,
- mng_uint16p pIds)
-#else
-mng_retcode mng_create_ani_disc (mng_datap pData,
- mng_chunkp pChunk)
-#endif
-{
- mng_ani_discp pDISC;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_DISC, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- iRetcode = create_obj_general (pData, sizeof (mng_ani_disc),
- mng_free_ani_disc,
- mng_process_ani_disc,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pDISC = (mng_ani_discp)pTemp;
-#else
- MNG_ALLOC (pData, pDISC, sizeof (mng_ani_disc));
-
- pDISC->sHeader.fCleanup = mng_free_ani_disc;
- pDISC->sHeader.fProcess = mng_process_ani_disc;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pDISC);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pDISC->iCount = iCount;
-
- if (iCount)
- {
- MNG_ALLOC (pData, pDISC->pIds, (iCount << 1));
- MNG_COPY (pDISC->pIds, pIds, (iCount << 1));
- }
-#else
- pDISC->iCount = ((mng_discp)pChunk)->iCount;
-
- if (pDISC->iCount)
- {
- mng_size_t iSize = (mng_size_t)(pDISC->iCount << 1);
- MNG_ALLOC (pData, pDISC->pIds, iSize);
- MNG_COPY (pDISC->pIds, ((mng_discp)pChunk)->pObjectids, iSize);
- }
-#endif
- }
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- iRetcode = mng_process_display_disc (pData, iCount, pIds);
-#else
- iRetcode = mng_process_display_disc (pData,
- ((mng_discp)pChunk)->iCount,
- ((mng_discp)pChunk)->pObjectids);
-#endif
-#else
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pData->iDISCcount = iCount;
- pData->pDISCids = pIds;
-#else
- pData->iDISCcount = ((mng_discp)pChunk)->iCount;
- pData->pDISCids = ((mng_discp)pChunk)->pObjectids;
-#endif
-
- iRetcode = mng_process_display_disc (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANI_DISC, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_free_ani_disc (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_discp pDISC = (mng_ani_discp)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_DISC, MNG_LC_START);
-#endif
-
- if (pDISC->iCount)
- MNG_FREEX (pData, pDISC->pIds, (pDISC->iCount << 1));
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
- MNG_FREEX (pData, pObject, sizeof (mng_ani_disc));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANI_DISC, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
- return MNG_NOERROR;
-#else
- return mng_free_obj_general(pData, pObject);
-#endif
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_disc (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ani_discp pDISC = (mng_ani_discp)pObject;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_DISC, MNG_LC_START);
-#endif
-
-#ifndef MNG_OPTIMIZE_DISPLAYCALLS
- iRetcode = mng_process_display_disc (pData, pDISC->iCount, pDISC->pIds);
-#else
- pData->iDISCcount = pDISC->iCount;
- pData->pDISCids = pDISC->pIds;
-
- iRetcode = mng_process_display_disc (pData);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANI_DISC, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-#endif
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DYNAMICMNG
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_event (mng_datap pData,
- mng_uint8 iEventtype,
- mng_uint8 iMasktype,
- mng_int32 iLeft,
- mng_int32 iRight,
- mng_int32 iTop,
- mng_int32 iBottom,
- mng_uint16 iObjectid,
- mng_uint8 iIndex,
- mng_uint32 iSegmentnamesize,
- mng_pchar zSegmentname)
-#else
-mng_retcode mng_create_event (mng_datap pData,
- mng_ptr pEntry)
-#endif
-{
- mng_eventp pEvent;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_EVENT, MNG_LC_START);
-#endif
-
- if (pData->bCacheplayback) /* caching playback info ? */
- {
- mng_object_headerp pLast;
-
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_ptr pTemp;
- mng_retcode iRetcode = create_obj_general (pData, sizeof (mng_event),
- mng_free_event,
- mng_process_event,
- &pTemp);
- if (iRetcode)
- return iRetcode;
- pEvent = (mng_eventp)pTemp;
-#else
- MNG_ALLOC (pData, pEvent, sizeof (mng_event));
-
- pEvent->sHeader.fCleanup = mng_free_event;
- pEvent->sHeader.fProcess = mng_process_event;
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pEvent->iEventtype = iEventtype;
- pEvent->iMasktype = iMasktype;
- pEvent->iLeft = iLeft;
- pEvent->iRight = iRight;
- pEvent->iTop = iTop;
- pEvent->iBottom = iBottom;
- pEvent->iObjectid = iObjectid;
- pEvent->iIndex = iIndex;
- pEvent->iSegmentnamesize = iSegmentnamesize;
-
- if (iSegmentnamesize)
- {
- MNG_ALLOC (pData, pEvent->zSegmentname, iSegmentnamesize+1);
- MNG_COPY (pEvent->zSegmentname, zSegmentname, iSegmentnamesize);
- }
-#else
- pEvent->iEventtype = ((mng_evnt_entryp)pEntry)->iEventtype;
- pEvent->iMasktype = ((mng_evnt_entryp)pEntry)->iMasktype;
- pEvent->iLeft = ((mng_evnt_entryp)pEntry)->iLeft;
- pEvent->iRight = ((mng_evnt_entryp)pEntry)->iRight;
- pEvent->iTop = ((mng_evnt_entryp)pEntry)->iTop;
- pEvent->iBottom = ((mng_evnt_entryp)pEntry)->iBottom;
- pEvent->iObjectid = ((mng_evnt_entryp)pEntry)->iObjectid;
- pEvent->iIndex = ((mng_evnt_entryp)pEntry)->iIndex;
- pEvent->iSegmentnamesize = ((mng_evnt_entryp)pEntry)->iSegmentnamesize;
-
- if (pEvent->iSegmentnamesize)
- {
- MNG_ALLOC (pData, pEvent->zSegmentname, pEvent->iSegmentnamesize+1);
- MNG_COPY (pEvent->zSegmentname, ((mng_evnt_entryp)pEntry)->zSegmentname, pEvent->iSegmentnamesize);
- }
-#endif
- /* fixup the double-linked list */
- pLast = (mng_object_headerp)pData->pLastevent;
-
- if (pLast) /* link it as last in the chain */
- {
- pEvent->sHeader.pPrev = pLast;
- pLast->pNext = pEvent;
- }
- else
- {
- pData->pFirstevent = pEvent;
- }
-
- pData->pLastevent = pEvent;
- pData->bDynamic = MNG_TRUE;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_EVENT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_free_event (mng_datap pData,
- mng_objectp pObject)
-{
- mng_eventp pEvent = (mng_eventp)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_EVENT, MNG_LC_START);
-#endif
-
- if (pEvent->iSegmentnamesize)
- MNG_FREEX (pData, pEvent->zSegmentname, pEvent->iSegmentnamesize + 1);
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
- MNG_FREEX (pData, pEvent, sizeof (mng_event));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_EVENT, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
- return MNG_NOERROR;
-#else
- return mng_free_obj_general(pData, pObject);
-#endif
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_event (mng_datap pData,
- mng_objectp pObject)
-{
-#ifndef MNG_SKIPCHUNK_SEEK
- mng_eventp pEvent = (mng_eventp)pObject;
- mng_object_headerp pAni;
- mng_bool bFound = MNG_FALSE;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_EVENT, MNG_LC_START);
-#endif
-
-#ifndef MNG_SKIPCHUNK_SEEK
- if (!pEvent->pSEEK) /* need to find SEEK first ? */
- {
- pAni = (mng_object_headerp)pData->pFirstaniobj;
-
- while ((pAni) && (!bFound))
- {
- if ((pAni->fCleanup == mng_free_ani_seek) &&
- (strcmp(pEvent->zSegmentname, ((mng_ani_seekp)pAni)->zSegmentname) == 0))
- bFound = MNG_TRUE;
- else
- pAni = (mng_object_headerp)pAni->pNext;
- }
-
- if (pAni)
- pEvent->pSEEK = (mng_ani_seekp)pAni;
- }
-
- if (pEvent->pSEEK) /* anything to do ? */
- {
- pEvent->iLastx = pData->iEventx;
- pEvent->iLasty = pData->iEventy;
- /* let's start from this SEEK then */
- pData->pCurraniobj = (mng_objectp)pEvent->pSEEK;
- pData->bRunningevent = MNG_TRUE;
- /* wake-up the app ! */
- if (!pData->fSettimer ((mng_handle)pData, 5))
- MNG_ERROR (pData, MNG_APPTIMERERROR);
-
- }
- else
- MNG_ERROR (pData, MNG_SEEKNOTFOUND);
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_EVENT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#endif /* MNG_SUPPORT_DYNAMICMNG */
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_mpng_obj (mng_datap pData,
- mng_uint32 iFramewidth,
- mng_uint32 iFrameheight,
- mng_uint16 iNumplays,
- mng_uint16 iTickspersec,
- mng_uint32 iFramessize,
- mng_ptr pFrames)
-#else
-mng_retcode mng_create_mpng_obj (mng_datap pData,
- mng_ptr pEntry)
-#endif
-{
- mng_mpng_objp pMPNG;
- mng_ptr pTemp;
- mng_retcode iRetcode;
- mng_uint8p pFrame;
- mng_int32 iCnt, iMax;
- mng_uint32 iX, iY, iWidth, iHeight;
- mng_int32 iXoffset, iYoffset;
- mng_uint16 iTicks;
- mng_uint16 iDelay;
- mng_bool bNewframe;
- mng_ani_loopp pLOOP;
- mng_ani_endlp pENDL;
- mng_ani_framp pFRAM;
- mng_ani_movep pMOVE;
- mng_ani_clipp pCLIP;
- mng_ani_showp pSHOW;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_MPNG_OBJ, MNG_LC_START);
-#endif
-
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- iRetcode = create_obj_general (pData, sizeof (mng_mpng_obj), mng_free_mpng_obj,
- mng_process_mpng_obj, &pTemp);
- if (iRetcode)
- return iRetcode;
- pMPNG = (mng_mpng_objp)pTemp;
-#else
- MNG_ALLOC (pData, pMPNG, sizeof (mng_mpng_obj));
-
- pMPNG->sHeader.fCleanup = mng_free_mpng_obj;
- pMPNG->sHeader.fProcess = mng_process_mpng_obj;
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pMPNG->iFramewidth = iFramewidth;
- pMPNG->iFrameheight = iFrameheight;
- pMPNG->iNumplays = iNumplays;
- pMPNG->iTickspersec = iTickspersec;
- pMPNG->iFramessize = iFramessize;
-
- if (iFramessize)
- {
- MNG_ALLOC (pData, pMPNG->pFrames, iFramessize);
- MNG_COPY (pMPNG->pFrames, pFrames, iFramessize);
- }
-#else
- pMPNG->iFramewidth = ((mng_mpngp)pEntry)->iFramewidth;
- pMPNG->iFrameheight = ((mng_mpngp)pEntry)->iFrameheight;
- pMPNG->iNumplays = ((mng_mpngp)pEntry)->iNumplays;
- pMPNG->iTickspersec = ((mng_mpngp)pEntry)->iTickspersec;
- pMPNG->iFramessize = ((mng_mpngp)pEntry)->iFramessize;
-
- if (pMPNG->iFramessize)
- {
- MNG_ALLOC (pData, pMPNG->pFrames, pMPNG->iFramessize);
- MNG_COPY (pMPNG->pFrames, ((mng_mpngp)pEntry)->pFrames, pMPNG->iFramessize);
- }
-#endif
-
- pData->pMPNG = pMPNG;
- pData->eImagetype = mng_it_mpng;
-
- iRetcode = mng_process_display_mpng (pData);
- if (iRetcode)
- return iRetcode;
-
- /* now let's create the MNG animation directives from this */
-
- pFrame = (mng_uint8p)pMPNG->pFrames;
- iMax = pMPNG->iFramessize / 26;
- /* set up MNG impersonation */
- pData->iTicks = pMPNG->iTickspersec;
- pData->iLayercount = iMax;
-
- if (pMPNG->iNumplays != 1) /* create a LOOP/ENDL pair ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- iRetcode = create_obj_general (pData, sizeof (mng_ani_loop),
- mng_free_ani_loop, mng_process_ani_loop,
- &((mng_ptr)pLOOP));
- if (iRetcode)
- return iRetcode;
-#else
- MNG_ALLOC (pData, pLOOP, sizeof (mng_ani_loop));
-
- pLOOP->sHeader.fCleanup = mng_free_ani_loop;
- pLOOP->sHeader.fProcess = mng_process_ani_loop;
-#endif
-
- pLOOP->iLevel = 1;
- if (pMPNG->iNumplays)
- pLOOP->iRepeatcount = pMPNG->iNumplays;
- else
- pLOOP->iRepeatcount = 0xFFFFFFFFl;
-
- mng_add_ani_object (pData, (mng_object_headerp)pLOOP);
- }
-
- bNewframe = MNG_TRUE; /* create the frame display objects */
-
- for (iCnt = 0; iCnt < iMax; iCnt++)
- {
- iX = mng_get_uint32 (pFrame);
- iY = mng_get_uint32 (pFrame+4);
- iWidth = mng_get_uint32 (pFrame+8);
- iHeight = mng_get_uint32 (pFrame+12);
- iXoffset = mng_get_int32 (pFrame+16);
- iYoffset = mng_get_int32 (pFrame+20);
- iTicks = mng_get_uint16 (pFrame+24);
-
- iDelay = iTicks;
- if (!iDelay)
- {
- mng_uint8p pTemp = pFrame+26;
- mng_int32 iTemp = iCnt+1;
-
- while ((iTemp < iMax) && (!iDelay))
- {
- iDelay = mng_get_uint16 (pTemp+24);
- pTemp += 26;
- iTemp++;
- }
- }
-
- if (bNewframe)
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- iRetcode = create_obj_general (pData, sizeof (mng_ani_fram),
- mng_free_obj_general, mng_process_ani_fram,
- &((mng_ptr)pFRAM));
- if (iRetcode)
- return iRetcode;
-#else
- MNG_ALLOC (pData, pFRAM, sizeof (mng_ani_fram));
-
- pFRAM->sHeader.fCleanup = mng_free_ani_fram;
- pFRAM->sHeader.fProcess = mng_process_ani_fram;
-#endif
-
- pFRAM->iFramemode = 4;
- pFRAM->iChangedelay = 1;
- pFRAM->iDelay = iDelay;
-
- mng_add_ani_object (pData, (mng_object_headerp)pFRAM);
- }
-
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- iRetcode = create_obj_general (pData, sizeof (mng_ani_move),
- mng_free_obj_general,
- mng_process_ani_move,
- &((mng_ptr)pMOVE));
- if (iRetcode)
- return iRetcode;
-#else
- MNG_ALLOC (pData, pMOVE, sizeof (mng_ani_move));
-
- pMOVE->sHeader.fCleanup = mng_free_ani_move;
- pMOVE->sHeader.fProcess = mng_process_ani_move;
-#endif
-
- pMOVE->iLocax = iXoffset - (mng_int32)iX;
- pMOVE->iLocay = iYoffset - (mng_int32)iY;
-
- mng_add_ani_object (pData, (mng_object_headerp)pMOVE);
-
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- iRetcode = create_obj_general (pData, sizeof (mng_ani_clip),
- mng_free_obj_general,
- mng_process_ani_clip,
- &((mng_ptr)pCLIP));
- if (iRetcode)
- return iRetcode;
-#else
- MNG_ALLOC (pData, pCLIP, sizeof (mng_ani_clip));
-
- pCLIP->sHeader.fCleanup = mng_free_ani_clip;
- pCLIP->sHeader.fProcess = mng_process_ani_clip;
-#endif
-
- pCLIP->iClipl = iXoffset;
- pCLIP->iClipr = iXoffset + (mng_int32)iWidth;
- pCLIP->iClipt = iYoffset;
- pCLIP->iClipb = iYoffset + (mng_int32)iHeight;
-
- mng_add_ani_object (pData, (mng_object_headerp)pCLIP);
-
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- iRetcode = create_obj_general (pData, sizeof (mng_ani_show),
- mng_free_obj_general, mng_process_ani_show,
- &((mng_ptr)pSHOW));
- if (iRetcode)
- return iRetcode;
-#else
- MNG_ALLOC (pData, pSHOW, sizeof (mng_ani_show));
-
- pSHOW->sHeader.fCleanup = mng_free_ani_show;
- pSHOW->sHeader.fProcess = mng_process_ani_show;
-#endif
-
- mng_add_ani_object (pData, (mng_object_headerp)pSHOW);
-
- bNewframe = (mng_bool)iTicks;
- pFrame += 26;
- }
-
- if (pMPNG->iNumplays != 1) /* create a LOOP/ENDL pair ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- iRetcode = create_obj_general (pData, sizeof (mng_ani_endl),
- mng_free_obj_general, mng_process_ani_endl,
- &((mng_ptr)pENDL));
- if (iRetcode)
- return iRetcode;
-#else
- MNG_ALLOC (pData, pENDL, sizeof (mng_ani_endl));
-
- pENDL->sHeader.fCleanup = mng_free_ani_endl;
- pENDL->sHeader.fProcess = mng_process_ani_endl;
-#endif
-
- pENDL->iLevel = 1;
-
- mng_add_ani_object (pData, (mng_object_headerp)pENDL);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_MPNG_OBJ, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_free_mpng_obj (mng_datap pData,
- mng_objectp pObject)
-{
- mng_mpng_objp pMPNG = (mng_mpng_objp)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_MPNG_OBJ, MNG_LC_START);
-#endif
-
- if (pMPNG->iFramessize)
- MNG_FREEX (pData, pMPNG->pFrames, pMPNG->iFramessize);
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
- MNG_FREEX (pData, pMPNG, sizeof (mng_mpng_obj));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_MPNG_OBJ, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
- return MNG_NOERROR;
-#else
- return mng_free_obj_general(pData, pObject);
-#endif
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_mpng_obj (mng_datap pData,
- mng_objectp pObject)
-{
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_MPNG_PROPOSAL */
-
-/* ************************************************************************** */
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ang_obj (mng_datap pData,
- mng_uint32 iNumframes,
- mng_uint32 iTickspersec,
- mng_uint32 iNumplays,
- mng_uint32 iTilewidth,
- mng_uint32 iTileheight,
- mng_uint8 iInterlace,
- mng_uint8 iStillused)
-#else
-mng_retcode mng_create_ang_obj (mng_datap pData,
- mng_ptr pEntry)
-#endif
-{
- mng_ang_objp pANG;
- mng_ptr pTemp;
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANG_OBJ, MNG_LC_START);
-#endif
-
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- iRetcode = create_obj_general (pData, sizeof (mng_ang_obj), mng_free_ang_obj,
- mng_process_ang_obj, &pTemp);
- if (iRetcode)
- return iRetcode;
- pANG = (mng_ang_objp)pTemp;
-#else
- MNG_ALLOC (pData, pANG, sizeof (mng_ang_obj));
-
- pANG->sHeader.fCleanup = mng_free_ang_obj;
- pANG->sHeader.fProcess = mng_process_ang_obj;
-#endif
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- pANG->iNumframes = iNumframes;
- pANG->iTickspersec = iTickspersec;
- pANG->iNumplays = iNumplays;
- pANG->iTilewidth = iTilewidth;
- pANG->iTileheight = iTileheight;
- pANG->iInterlace = iInterlace;
- pANG->iStillused = iStillused;
-#else
- pANG->iNumframes = ((mng_ahdrp)pEntry)->iNumframes;
- pANG->iTickspersec = ((mng_ahdrp)pEntry)->iTickspersec;
- pANG->iNumplays = ((mng_ahdrp)pEntry)->iNumplays;
- pANG->iTilewidth = ((mng_ahdrp)pEntry)->iTilewidth;
- pANG->iTileheight = ((mng_ahdrp)pEntry)->iTileheight;
- pANG->iInterlace = ((mng_ahdrp)pEntry)->iInterlace;
- pANG->iStillused = ((mng_ahdrp)pEntry)->iStillused;
-#endif
-
- pData->pANG = pANG;
- pData->eImagetype = mng_it_ang;
-
- iRetcode = mng_process_display_ang (pData);
- if (iRetcode)
- return iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CREATE_ANG_OBJ, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_free_ang_obj (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ang_objp pANG = (mng_ang_objp)pObject;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANG_OBJ, MNG_LC_START);
-#endif
-
- if (pANG->iTilessize)
- MNG_FREEX (pData, pANG->pTiles, pANG->iTilessize);
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
- MNG_FREEX (pData, pANG, sizeof (mng_ang_obj));
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FREE_ANG_OBJ, MNG_LC_END);
-#endif
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
- return MNG_NOERROR;
-#else
- return mng_free_obj_general(pData, pObject);
-#endif
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ang_obj (mng_datap pData,
- mng_objectp pObject)
-{
- mng_ang_objp pANG = (mng_ang_objp)pObject;
- mng_uint8p pTile = (mng_uint8p)pANG->pTiles;
- mng_retcode iRetcode;
- mng_int32 iCnt, iMax;
- mng_uint32 iTicks;
- mng_int32 iXoffset, iYoffset;
- mng_uint8 iSource;
- mng_ani_loopp pLOOP;
- mng_ani_endlp pENDL;
- mng_ani_framp pFRAM;
- mng_ani_movep pMOVE;
- mng_ani_showp pSHOW;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANG_OBJ, MNG_LC_START);
-#endif
-
- /* let's create the MNG animation directives from this */
-
- iMax = pANG->iNumframes;
- /* set up MNG impersonation */
- pData->iTicks = pANG->iTickspersec;
- pData->iLayercount = iMax;
-
- if (pANG->iNumplays != 1) /* create a LOOP/ENDL pair ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- iRetcode = create_obj_general (pData, sizeof (mng_ani_loop),
- mng_free_ani_loop, mng_process_ani_loop,
- &((mng_ptr)pLOOP));
- if (iRetcode)
- return iRetcode;
-#else
- MNG_ALLOC (pData, pLOOP, sizeof (mng_ani_loop));
-
- pLOOP->sHeader.fCleanup = mng_free_ani_loop;
- pLOOP->sHeader.fProcess = mng_process_ani_loop;
-#endif
-
- pLOOP->iLevel = 1;
- if (pANG->iNumplays)
- pLOOP->iRepeatcount = pANG->iNumplays;
- else
- pLOOP->iRepeatcount = 0xFFFFFFFFl;
-
- mng_add_ani_object (pData, (mng_object_headerp)pLOOP);
- }
-
- for (iCnt = 0; iCnt < iMax; iCnt++)
- {
- iTicks = mng_get_uint32 (pTile);
- iXoffset = mng_get_int32 (pTile+4);
- iYoffset = mng_get_int32 (pTile+8);
- iSource = *(pTile+12);
-
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- iRetcode = create_obj_general (pData, sizeof (mng_ani_fram),
- mng_free_obj_general, mng_process_ani_fram,
- &((mng_ptr)pFRAM));
- if (iRetcode)
- return iRetcode;
-#else
- MNG_ALLOC (pData, pFRAM, sizeof (mng_ani_fram));
-
- pFRAM->sHeader.fCleanup = mng_free_ani_fram;
- pFRAM->sHeader.fProcess = mng_process_ani_fram;
-#endif
-
- pFRAM->iFramemode = 4;
- pFRAM->iChangedelay = 1;
- pFRAM->iDelay = iTicks;
-
- mng_add_ani_object (pData, (mng_object_headerp)pFRAM);
-
- if (!iSource)
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- iRetcode = create_obj_general (pData, sizeof (mng_ani_move),
- mng_free_obj_general,
- mng_process_ani_move,
- &((mng_ptr)pMOVE));
- if (iRetcode)
- return iRetcode;
-#else
- MNG_ALLOC (pData, pMOVE, sizeof (mng_ani_move));
-
- pMOVE->sHeader.fCleanup = mng_free_ani_move;
- pMOVE->sHeader.fProcess = mng_process_ani_move;
-#endif
-
- pMOVE->iFirstid = 1;
- pMOVE->iLastid = 1;
- pMOVE->iLocax = -iXoffset;
- pMOVE->iLocay = -iYoffset;
-
- mng_add_ani_object (pData, (mng_object_headerp)pMOVE);
- }
-
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- iRetcode = create_obj_general (pData, sizeof (mng_ani_show),
- mng_free_obj_general, mng_process_ani_show,
- &((mng_ptr)pSHOW));
- if (iRetcode)
- return iRetcode;
-#else
- MNG_ALLOC (pData, pSHOW, sizeof (mng_ani_show));
-
- pSHOW->sHeader.fCleanup = mng_free_ani_show;
- pSHOW->sHeader.fProcess = mng_process_ani_show;
-#endif
-
- if (iSource)
- pSHOW->iFirstid = 0;
- else
- pSHOW->iFirstid = 1;
- pSHOW->iLastid = pSHOW->iFirstid;
-
- mng_add_ani_object (pData, (mng_object_headerp)pSHOW);
-
- pTile += sizeof(mng_adat_tile);
- }
-
- if (pANG->iNumplays != 1) /* create a LOOP/ENDL pair ? */
- {
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- iRetcode = create_obj_general (pData, sizeof (mng_ani_endl),
- mng_free_obj_general, mng_process_ani_endl,
- &((mng_ptr)pENDL));
- if (iRetcode)
- return iRetcode;
-#else
- MNG_ALLOC (pData, pENDL, sizeof (mng_ani_endl));
-
- pENDL->sHeader.fCleanup = mng_free_ani_endl;
- pENDL->sHeader.fProcess = mng_process_ani_endl;
-#endif
-
- pENDL->iLevel = 1;
-
- mng_add_ani_object (pData, (mng_object_headerp)pENDL);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_ANG_OBJ, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_ANG_PROPOSAL */
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_DISPLAY_PROCS */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
diff --git a/src/3rdparty/libmng/libmng_object_prc.h b/src/3rdparty/libmng/libmng_object_prc.h
deleted file mode 100644
index ffd20c8718..0000000000
--- a/src/3rdparty/libmng/libmng_object_prc.h
+++ /dev/null
@@ -1,690 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_object_prc.h copyright (c) 2000-2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : Object processing routines (definition) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : Definition of the internal object processing routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * * */
-/* * 0.5.2 - 05/24/2000 - G.Juyn * */
-/* * - added support for global color-chunks in animation * */
-/* * - added support for global PLTE,tRNS,bKGD in animation * */
-/* * - added SAVE & SEEK animation objects * */
-/* * 0.5.2 - 05/29/2000 - G.Juyn * */
-/* * - changed ani_object create routines not to return the * */
-/* * created object (wasn't necessary) * */
-/* * - added compression/filter/interlace fields to * */
-/* * object-buffer for delta-image processing * */
-/* * * */
-/* * 0.5.3 - 06/22/2000 - G.Juyn * */
-/* * - added support for PPLT chunk * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 08/26/2000 - G.Juyn * */
-/* * - added MAGN chunk * */
-/* * 0.9.3 - 10/17/2000 - G.Juyn * */
-/* * - added routine to discard "invalid" objects * */
-/* * * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * 1.0.5 - 09/13/2002 - G.Juyn * */
-/* * - fixed read/write of MAGN chunk * */
-/* * 1.0.5 - 09/15/2002 - G.Juyn * */
-/* * - added event handling for dynamic MNG * */
-/* * 1.0.5 - 09/20/2002 - G.Juyn * */
-/* * - added support for PAST * */
-/* * 1.0.5 - 09/23/2002 - G.Juyn * */
-/* * - added in-memory color-correction of abstract images * */
-/* * 1.0.5 - 10/07/2002 - G.Juyn * */
-/* * - fixed DISC support * */
-/* * * */
-/* * 1.0.6 - 07/07/2003 - G.R-P * */
-/* * - added conditionals around Delta-PNG code * */
-/* * - added SKIPCHUNK feature * */
-/* * 1.0.6 - 07/29/2003 - G.R-P * */
-/* * - added conditionals around PAST chunk support * */
-/* * * */
-/* * 1.0.7 - 03/24/2004 - G.R-P * */
-/* * - added more SKIPCHUNK conditionals * */
-/* * * */
-/* * 1.0.9 - 12/05/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_OBJCLEANUP * */
-/* * * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * 1.0.10 - 04/12/2007 - G.Juyn * */
-/* * - added support for ANG proposal * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_object_prc_h_
-#define _libmng_object_prc_h_
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_DISPLAY_PROCS
-
-/* ************************************************************************** */
-
-mng_retcode mng_drop_invalid_objects (mng_datap pData);
-
-/* ************************************************************************** */
-
-mng_retcode mng_create_imagedataobject (mng_datap pData,
- mng_bool bConcrete,
- mng_bool bViewable,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_uint8 iBitdepth,
- mng_uint8 iColortype,
- mng_uint8 iCompression,
- mng_uint8 iFilter,
- mng_uint8 iInterlace,
- mng_imagedatap *ppObject);
-
-mng_retcode mng_free_imagedataobject (mng_datap pData,
- mng_imagedatap pImagedata);
-
-mng_retcode mng_clone_imagedataobject (mng_datap pData,
- mng_bool bConcrete,
- mng_imagedatap pSource,
- mng_imagedatap *ppClone);
-
-/* ************************************************************************** */
-
-mng_retcode mng_create_imageobject (mng_datap pData,
- mng_uint16 iId,
- mng_bool bConcrete,
- mng_bool bVisible,
- mng_bool bViewable,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_uint8 iBitdepth,
- mng_uint8 iColortype,
- mng_uint8 iCompression,
- mng_uint8 iFilter,
- mng_uint8 iInterlace,
- mng_int32 iPosx,
- mng_int32 iPosy,
- mng_bool bClipped,
- mng_int32 iClipl,
- mng_int32 iClipr,
- mng_int32 iClipt,
- mng_int32 iClipb,
- mng_imagep *ppObject);
-
-mng_retcode mng_free_imageobject (mng_datap pData,
- mng_imagep pImage);
-
-mng_imagep mng_find_imageobject (mng_datap pData,
- mng_uint16 iId);
-
-mng_retcode mng_clone_imageobject (mng_datap pData,
- mng_uint16 iId,
- mng_bool bPartial,
- mng_bool bVisible,
- mng_bool bAbstract,
- mng_bool bHasloca,
- mng_uint8 iLocationtype,
- mng_int32 iLocationx,
- mng_int32 iLocationy,
- mng_imagep pSource,
- mng_imagep *ppClone);
-
-mng_retcode mng_renum_imageobject (mng_datap pData,
- mng_imagep pSource,
- mng_uint16 iId,
- mng_bool bVisible,
- mng_bool bAbstract,
- mng_bool bHasloca,
- mng_uint8 iLocationtype,
- mng_int32 iLocationx,
- mng_int32 iLocationy);
-
-mng_retcode mng_reset_object_details (mng_datap pData,
- mng_imagep pImage,
- mng_uint32 iWidth,
- mng_uint32 iHeight,
- mng_uint8 iBitdepth,
- mng_uint8 iColortype,
- mng_uint8 iCompression,
- mng_uint8 iFilter,
- mng_uint8 iInterlace,
- mng_bool bResetall);
-
-mng_retcode mng_promote_imageobject (mng_datap pData,
- mng_imagep pImage,
- mng_uint8 iBitdepth,
- mng_uint8 iColortype,
- mng_uint8 iFilltype);
-
-mng_retcode mng_magnify_imageobject (mng_datap pData,
- mng_imagep pImage);
-
-mng_retcode mng_colorcorrect_object (mng_datap pData,
- mng_imagep pImage);
-
-/* ************************************************************************** */
-
-mng_retcode mng_create_ani_image (mng_datap pData);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-
-mng_retcode mng_create_ani_plte (mng_datap pData,
- mng_uint32 iEntrycount,
- mng_palette8ep paEntries);
-
-mng_retcode mng_create_ani_trns (mng_datap pData,
- mng_uint32 iRawlen,
- mng_uint8p pRawdata);
-
-mng_retcode mng_create_ani_gama (mng_datap pData,
- mng_bool bEmpty,
- mng_uint32 iGamma);
-
-mng_retcode mng_create_ani_chrm (mng_datap pData,
- mng_bool bEmpty,
- mng_uint32 iWhitepointx,
- mng_uint32 iWhitepointy,
- mng_uint32 iRedx,
- mng_uint32 iRedy,
- mng_uint32 iGreenx,
- mng_uint32 iGreeny,
- mng_uint32 iBluex,
- mng_uint32 iBluey);
-
-mng_retcode mng_create_ani_srgb (mng_datap pData,
- mng_bool bEmpty,
- mng_uint8 iRenderinginent);
-
-mng_retcode mng_create_ani_iccp (mng_datap pData,
- mng_bool bEmpty,
- mng_uint32 iProfilesize,
- mng_ptr pProfile);
-
-mng_retcode mng_create_ani_bkgd (mng_datap pData,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue);
-
-mng_retcode mng_create_ani_loop (mng_datap pData,
- mng_uint8 iLevel,
- mng_uint32 iRepeatcount,
- mng_uint8 iTermcond,
- mng_uint32 iItermin,
- mng_uint32 iItermax,
- mng_uint32 iCount,
- mng_uint32p pSignals);
-
-mng_retcode mng_create_ani_endl (mng_datap pData,
- mng_uint8 iLevel);
-
-mng_retcode mng_create_ani_defi (mng_datap pData);
-
-mng_retcode mng_create_ani_basi (mng_datap pData,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue,
- mng_bool bHasalpha,
- mng_uint16 iAlpha,
- mng_uint8 iViewable);
-
-mng_retcode mng_create_ani_clon (mng_datap pData,
- mng_uint16 iSourceid,
- mng_uint16 iCloneid,
- mng_uint8 iClonetype,
- mng_bool bHasdonotshow,
- mng_uint8 iDonotshow,
- mng_uint8 iConcrete,
- mng_bool bHasloca,
- mng_uint8 iLocatype,
- mng_int32 iLocax,
- mng_int32 iLocay);
-
-mng_retcode mng_create_ani_back (mng_datap pData,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue,
- mng_uint8 iMandatory,
- mng_uint16 iImageid,
- mng_uint8 iTile);
-
-mng_retcode mng_create_ani_fram (mng_datap pData,
- mng_uint8 iFramemode,
- mng_uint8 iChangedelay,
- mng_uint32 iDelay,
- mng_uint8 iChangetimeout,
- mng_uint32 iTimeout,
- mng_uint8 iChangeclipping,
- mng_uint8 iCliptype,
- mng_int32 iClipl,
- mng_int32 iClipr,
- mng_int32 iClipt,
- mng_int32 iClipb);
-
-mng_retcode mng_create_ani_move (mng_datap pData,
- mng_uint16 iFirstid,
- mng_uint16 iLastid,
- mng_uint8 iType,
- mng_int32 iLocax,
- mng_int32 iLocay);
-
-mng_retcode mng_create_ani_clip (mng_datap pData,
- mng_uint16 iFirstid,
- mng_uint16 iLastid,
- mng_uint8 iType,
- mng_int32 iClipl,
- mng_int32 iClipr,
- mng_int32 iClipt,
- mng_int32 iClipb);
-
-mng_retcode mng_create_ani_show (mng_datap pData,
- mng_uint16 iFirstid,
- mng_uint16 iLastid,
- mng_uint8 iMode);
-
-mng_retcode mng_create_ani_term (mng_datap pData,
- mng_uint8 iTermaction,
- mng_uint8 iIteraction,
- mng_uint32 iDelay,
- mng_uint32 iItermax);
-
-#ifndef MNG_SKIPCHUNK_SAVE
-mng_retcode mng_create_ani_save (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCHUNK_SEEK
-mng_retcode mng_create_ani_seek (mng_datap pData,
- mng_uint32 iSegmentnamesize,
- mng_pchar zSegmentname);
-#endif
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode mng_create_ani_dhdr (mng_datap pData,
- mng_uint16 iObjectid,
- mng_uint8 iImagetype,
- mng_uint8 iDeltatype,
- mng_uint32 iBlockwidth,
- mng_uint32 iBlockheight,
- mng_uint32 iBlockx,
- mng_uint32 iBlocky);
-
-mng_retcode mng_create_ani_prom (mng_datap pData,
- mng_uint8 iBitdepth,
- mng_uint8 iColortype,
- mng_uint8 iFilltype);
-
-mng_retcode mng_create_ani_ipng (mng_datap pData);
-mng_retcode mng_create_ani_ijng (mng_datap pData);
-
-mng_retcode mng_create_ani_pplt (mng_datap pData,
- mng_uint8 iType,
- mng_uint32 iCount,
- mng_palette8ep paIndexentries,
- mng_uint8p paAlphaentries,
- mng_uint8p paUsedentries);
-#endif
-
-#ifndef MNG_SKIPCHUNK_MAGN
-mng_retcode mng_create_ani_magn (mng_datap pData,
- mng_uint16 iFirstid,
- mng_uint16 iLastid,
- mng_uint8 iMethodX,
- mng_uint16 iMX,
- mng_uint16 iMY,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint16 iMT,
- mng_uint16 iMB,
- mng_uint8 iMethodY);
-#endif
-
-#ifndef MNG_SKIPCHUNK_PAST
-mng_retcode mng_create_ani_past (mng_datap pData,
- mng_uint16 iTargetid,
- mng_uint8 iTargettype,
- mng_int32 iTargetx,
- mng_int32 iTargety,
- mng_uint32 iCount,
- mng_ptr pSources);
-#endif
-
-#ifndef MNG_SKIPCHUNK_DISC
-mng_retcode mng_create_ani_disc (mng_datap pData,
- mng_uint32 iCount,
- mng_uint16p pIds);
-#endif
-
-#else /* MNG_OPTIMIZE_CHUNKREADER */
-
-mng_retcode mng_create_ani_plte (mng_datap pData);
-mng_retcode mng_create_ani_trns (mng_datap pData);
-mng_retcode mng_create_ani_gama (mng_datap pData,
- mng_chunkp pChunk);
-mng_retcode mng_create_ani_chrm (mng_datap pData,
- mng_chunkp pChunk);
-mng_retcode mng_create_ani_srgb (mng_datap pData,
- mng_chunkp pChunk);
-mng_retcode mng_create_ani_iccp (mng_datap pData,
- mng_chunkp pChunk);
-mng_retcode mng_create_ani_bkgd (mng_datap pData);
-mng_retcode mng_create_ani_loop (mng_datap pData,
- mng_chunkp pChunk);
-mng_retcode mng_create_ani_endl (mng_datap pData,
- mng_uint8 iLevel);
-mng_retcode mng_create_ani_defi (mng_datap pData);
-mng_retcode mng_create_ani_basi (mng_datap pData,
- mng_chunkp pChunk);
-mng_retcode mng_create_ani_clon (mng_datap pData,
- mng_chunkp pChunk);
-mng_retcode mng_create_ani_back (mng_datap pData);
-mng_retcode mng_create_ani_fram (mng_datap pData,
- mng_chunkp pChunk);
-mng_retcode mng_create_ani_move (mng_datap pData,
- mng_chunkp pChunk);
-mng_retcode mng_create_ani_clip (mng_datap pData,
- mng_chunkp pChunk);
-mng_retcode mng_create_ani_show (mng_datap pData);
-mng_retcode mng_create_ani_term (mng_datap pData,
- mng_chunkp pChunk);
-#ifndef MNG_SKIPCHUNK_SAVE
-mng_retcode mng_create_ani_save (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCHUNK_SEEK
-mng_retcode mng_create_ani_seek (mng_datap pData,
- mng_chunkp pChunk);
-#endif
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode mng_create_ani_dhdr (mng_datap pData,
- mng_chunkp pChunk);
-mng_retcode mng_create_ani_prom (mng_datap pData,
- mng_chunkp pChunk);
-mng_retcode mng_create_ani_ipng (mng_datap pData);
-mng_retcode mng_create_ani_ijng (mng_datap pData);
-
-mng_retcode mng_create_ani_pplt (mng_datap pData,
- mng_uint8 iType,
- mng_uint32 iCount,
- mng_palette8ep paIndexentries,
- mng_uint8p paAlphaentries,
- mng_uint8p paUsedentries);
-#endif
-
-#ifndef MNG_SKIPCHUNK_MAGN
-mng_retcode mng_create_ani_magn (mng_datap pData,
- mng_chunkp pChunk);
-#endif
-#ifndef MNG_SKIPCHUNK_PAST
-mng_retcode mng_create_ani_past (mng_datap pData,
- mng_chunkp pChunk);
-#endif
-#ifndef MNG_SKIPCHUNK_DISC
-mng_retcode mng_create_ani_disc (mng_datap pData,
- mng_chunkp pChunk);
-#endif
-
-#endif /* MNG_OPTIMIZE_CHUNKREADER */
-
-/* ************************************************************************** */
-
-mng_retcode mng_free_ani_image (mng_datap pData,
- mng_objectp pObject);
-
-#ifndef MNG_OPTIMIZE_OBJCLEANUP
-
-mng_retcode mng_free_ani_plte (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_free_ani_trns (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_free_ani_gama (mng_datap pData,
- mng_objectp pObject);
-#ifndef MNG_SKIPCHUNK_cHRM
-mng_retcode mng_free_ani_chrm (mng_datap pData,
- mng_objectp pObject);
-#endif
-#ifndef MNG_SKIPCHUNK_sRGB
-mng_retcode mng_free_ani_srgb (mng_datap pData,
- mng_objectp pObject);
-#endif
-#ifndef MNG_SKIPCHUNK_bKGD
-mng_retcode mng_free_ani_bkgd (mng_datap pData,
- mng_objectp pObject);
-#endif
-#ifndef MNG_SKIPCHUNK_LOOP
-mng_retcode mng_free_ani_endl (mng_datap pData,
- mng_objectp pObject);
-#endif
-mng_retcode mng_free_ani_defi (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_free_ani_basi (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_free_ani_clon (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_free_ani_back (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_free_ani_fram (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_free_ani_move (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_free_ani_clip (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_free_ani_show (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_free_ani_term (mng_datap pData,
- mng_objectp pObject);
-#ifndef MNG_SKIPCHUNK_SAVE
-mng_retcode mng_free_ani_save (mng_datap pData,
- mng_objectp pObject);
-#endif
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode mng_free_ani_dhdr (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_free_ani_prom (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_free_ani_ipng (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_free_ani_ijng (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_free_ani_pplt (mng_datap pData,
- mng_objectp pObject);
-#endif
-#ifndef MNG_SKIPCHUNK_MAGN
-mng_retcode mng_free_ani_magn (mng_datap pData,
- mng_objectp pObject);
-#endif
-
-#endif /* MNG_OPTIMIZE_OBJCLEANUP */
-
-
-#ifndef MNG_SKIPCHUNK_iCCP
-mng_retcode mng_free_ani_iccp (mng_datap pData,
- mng_objectp pObject);
-#endif
-#ifndef MNG_SKIPCHUNK_LOOP
-mng_retcode mng_free_ani_loop (mng_datap pData,
- mng_objectp pObject);
-#endif
-#ifndef MNG_SKIPCHUNK_SAVE
-mng_retcode mng_free_ani_seek (mng_datap pData,
- mng_objectp pObject);
-#endif
-#ifndef MNG_SKIPCHUNK_PAST
-mng_retcode mng_free_ani_past (mng_datap pData,
- mng_objectp pObject);
-#endif
-mng_retcode mng_free_ani_disc (mng_datap pData,
- mng_objectp pObject);
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ani_image (mng_datap pData,
- mng_objectp pObject);
-
-mng_retcode mng_process_ani_plte (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_process_ani_trns (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_process_ani_gama (mng_datap pData,
- mng_objectp pObject);
-#ifndef MNG_SKIPCHUNK_cHRM
-mng_retcode mng_process_ani_chrm (mng_datap pData,
- mng_objectp pObject);
-#endif
-#ifndef MNG_SKIPCHUNK_sRGB
-mng_retcode mng_process_ani_srgb (mng_datap pData,
- mng_objectp pObject);
-#endif
-#ifndef MNG_SKIPCHUNK_iCCP
-mng_retcode mng_process_ani_iccp (mng_datap pData,
- mng_objectp pObject);
-#endif
-#ifndef MNG_SKIPCHUNK_bKGD
-mng_retcode mng_process_ani_bkgd (mng_datap pData,
- mng_objectp pObject);
-#endif
-#ifndef MNG_SKIPCHUNK_LOOP
-mng_retcode mng_process_ani_loop (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_process_ani_endl (mng_datap pData,
- mng_objectp pObject);
-#endif
-mng_retcode mng_process_ani_defi (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_process_ani_basi (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_process_ani_clon (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_process_ani_back (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_process_ani_fram (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_process_ani_move (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_process_ani_clip (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_process_ani_show (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_process_ani_term (mng_datap pData,
- mng_objectp pObject);
-#ifndef MNG_SKIPCHUNK_SAVE
-mng_retcode mng_process_ani_save (mng_datap pData,
- mng_objectp pObject);
-#endif
-#ifndef MNG_SKIPCHUNK_SEEK
-mng_retcode mng_process_ani_seek (mng_datap pData,
- mng_objectp pObject);
-#endif
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode mng_process_ani_dhdr (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_process_ani_prom (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_process_ani_ipng (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_process_ani_ijng (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_process_ani_pplt (mng_datap pData,
- mng_objectp pObject);
-#endif
-mng_retcode mng_process_ani_magn (mng_datap pData,
- mng_objectp pObject);
-#ifndef MNG_SKIPCHUNK_PAST
-mng_retcode mng_process_ani_past (mng_datap pData,
- mng_objectp pObject);
-#endif
-mng_retcode mng_process_ani_disc (mng_datap pData,
- mng_objectp pObject);
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DYNAMICMNG
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_event (mng_datap pData,
- mng_uint8 iEventtype,
- mng_uint8 iMasktype,
- mng_int32 iLeft,
- mng_int32 iRight,
- mng_int32 iTop,
- mng_int32 iBottom,
- mng_uint16 iObjectid,
- mng_uint8 iIndex,
- mng_uint32 iSegmentnamesize,
- mng_pchar zSegmentname);
-#else
-mng_retcode mng_create_event (mng_datap pData,
- mng_ptr pEntry);
-#endif
-mng_retcode mng_free_event (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_process_event (mng_datap pData,
- mng_objectp pObject);
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_mpng_obj (mng_datap pData,
- mng_uint32 iFramewidth,
- mng_uint32 iFrameheight,
- mng_uint16 iNumplays,
- mng_uint16 iTickspersec,
- mng_uint32 iFramessize,
- mng_ptr pFrames);
-#else
-mng_retcode mng_create_mpng_obj (mng_datap pData,
- mng_ptr pEntry);
-#endif
-mng_retcode mng_free_mpng_obj (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_process_mpng_obj (mng_datap pData,
- mng_objectp pObject);
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-#ifndef MNG_OPTIMIZE_CHUNKREADER
-mng_retcode mng_create_ang_obj (mng_datap pData,
- mng_uint32 iNumframes,
- mng_uint32 iTickspersec,
- mng_uint32 iNumplays,
- mng_uint32 iTilewidth,
- mng_uint32 iTileheight,
- mng_uint8 iInterlace,
- mng_uint8 iStillused);
-#else
-mng_retcode mng_create_ang_obj (mng_datap pData,
- mng_ptr pEntry);
-#endif
-mng_retcode mng_free_ang_obj (mng_datap pData,
- mng_objectp pObject);
-mng_retcode mng_process_ang_obj (mng_datap pData,
- mng_objectp pObject);
-#endif
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_DISPLAY_PROCS */
-
-/* ************************************************************************** */
-
-#endif /* _libmng_object_prc_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/libmng_objects.h b/src/3rdparty/libmng/libmng_objects.h
deleted file mode 100644
index 053e6b4b2e..0000000000
--- a/src/3rdparty/libmng/libmng_objects.h
+++ /dev/null
@@ -1,635 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_objects.h copyright (c) 2000-2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : Internal object structures (definition) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : Definition of the internal object structures * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * * */
-/* * 0.5.2 - 05/23/2000 - G.Juyn * */
-/* * - changed inclusion to DISPLAY_PROCS * */
-/* * 0.5.2 - 05/24/2000 - G.Juyn * */
-/* * - added global color-chunks for animations * */
-/* * - added global PLTE,tRNS,bKGD chunks for animation * */
-/* * - added SAVE & SEEK animation objects * */
-/* * 0.5.2 - 05/29/2000 - G.Juyn * */
-/* * - added framenr/layernr/playtime to object header * */
-/* * 0.5.2 - 05/30/2000 - G.Juyn * */
-/* * - added ani-objects for delta-image processing * */
-/* * - added compression/filter/interlace fields to * */
-/* * object-buffer for delta-image processing * */
-/* * * */
-/* * 0.5.3 - 06/17/2000 - G.Juyn * */
-/* * - changed definition of aTRNSentries * */
-/* * 0.5.3 - 06/22/2000 - G.Juyn * */
-/* * - added definition for PPLT animation-processing * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 08/26/2000 - G.Juyn * */
-/* * - added MAGN chunk * */
-/* * 0.9.3 - 09/10/2000 - G.Juyn * */
-/* * - fixed DEFI behavior * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added support for delta-JNG * */
-/* * 0.9.3 - 10/17/2000 - G.Juyn * */
-/* * - added valid-flag to stored objects for read() / display()* */
-/* * 0.9.3 - 10/19/2000 - G.Juyn * */
-/* * - added storage for pixel-/alpha-sampledepth for delta's * */
-/* * * */
-/* * 1.0.5 - 09/13/2002 - G.Juyn * */
-/* * - fixed read/write of MAGN chunk * */
-/* * 1.0.5 - 09/15/2002 - G.Juyn * */
-/* * - added event handling for dynamic MNG * */
-/* * 1.0.5 - 09/20/2002 - G.Juyn * */
-/* * - added support for PAST * */
-/* * 1.0.5 - 09/23/2002 - G.Juyn * */
-/* * - added in-memory color-correction of abstract images * */
-/* * 1.0.5 - 10/07/2002 - G.Juyn * */
-/* * - fixed DISC support * */
-/* * * */
-/* * 1.0.6 - 10/07/2003 - G.R-P * */
-/* * - added SKIPCHUNK conditionals * */
-/* * * */
-/* * 1.0.7 - 03/24/2004 - G.R-P * */
-/* * - added more SKIPCHUNK conditionals * */
-/* * * */
-/* * 1.0.9 - 12/05/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_OBJCLEANUP * */
-/* * * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * 1.0.10 - 04/12/2007 - G.Juyn * */
-/* * - added support for ANG proposal * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_objects_h_
-#define _libmng_objects_h_
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_DISPLAY_PROCS
-
-/* ************************************************************************** */
-
-typedef mng_retcode (*mng_cleanupobject) (mng_datap pData,
- mng_objectp pHeader);
-
-typedef mng_retcode (*mng_processobject) (mng_datap pData,
- mng_objectp pHeader);
-
-/* ************************************************************************** */
-
-typedef struct {
- mng_cleanupobject fCleanup;
- mng_processobject fProcess;
- mng_objectp pNext; /* for double-linked list */
- mng_objectp pPrev;
- mng_uint32 iFramenr;
- mng_uint32 iLayernr;
- mng_uint32 iPlaytime;
-#ifdef MNG_OPTIMIZE_OBJCLEANUP
- mng_size_t iObjsize;
-#endif
- } mng_object_header;
-typedef mng_object_header * mng_object_headerp;
-
-/* ************************************************************************** */
-
-typedef struct { /* MNG specification "object-buffer" */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint32 iRefcount; /* reference counter */
- mng_bool bFrozen; /* frozen flag */
- mng_bool bConcrete; /* concrete flag */
- mng_bool bViewable; /* viewable flag */
- mng_uint32 iWidth; /* image specifics */
- mng_uint32 iHeight;
- mng_uint8 iBitdepth;
- mng_uint8 iColortype;
- mng_uint8 iCompression;
- mng_uint8 iFilter;
- mng_uint8 iInterlace;
-
- mng_bool bCorrected; /* indicates if an abstract image
- has already been color-corrected */
-
- mng_uint8 iAlphabitdepth; /* used only for JNG images */
- mng_uint8 iJHDRcompression;
- mng_uint8 iJHDRinterlace;
-
- mng_uint8 iPixelsampledepth; /* used with delta-images */
- mng_uint8 iAlphasampledepth;
-
- mng_bool bHasPLTE; /* PLTE chunk present */
- mng_bool bHasTRNS; /* tRNS chunk present */
- mng_bool bHasGAMA; /* gAMA chunk present */
- mng_bool bHasCHRM; /* cHRM chunk present */
- mng_bool bHasSRGB; /* sRGB chunk present */
- mng_bool bHasICCP; /* iCCP chunk present */
- mng_bool bHasBKGD; /* bKGD chunk present */
-
- mng_uint32 iPLTEcount; /* PLTE fields */
- mng_rgbpaltab aPLTEentries;
-
- mng_uint16 iTRNSgray; /* tRNS fields */
- mng_uint16 iTRNSred;
- mng_uint16 iTRNSgreen;
- mng_uint16 iTRNSblue;
- mng_uint32 iTRNScount;
- mng_uint8arr aTRNSentries;
-
- mng_uint32 iGamma; /* gAMA fields */
-
- mng_uint32 iWhitepointx; /* cHRM fields */
- mng_uint32 iWhitepointy;
- mng_uint32 iPrimaryredx;
- mng_uint32 iPrimaryredy;
- mng_uint32 iPrimarygreenx;
- mng_uint32 iPrimarygreeny;
- mng_uint32 iPrimarybluex;
- mng_uint32 iPrimarybluey;
-
- mng_uint8 iRenderingintent; /* sRGB fields */
-
- mng_uint32 iProfilesize; /* iCCP fields */
- mng_ptr pProfile;
-
- mng_uint8 iBKGDindex; /* bKGD fields */
- mng_uint16 iBKGDgray;
- mng_uint16 iBKGDred;
- mng_uint16 iBKGDgreen;
- mng_uint16 iBKGDblue;
-
- mng_uint32 iSamplesize; /* size of a sample */
- mng_uint32 iRowsize; /* size of a row of samples */
- mng_uint32 iImgdatasize; /* size of the sample data buffer */
- mng_uint8p pImgdata; /* actual sample data buffer */
-
- } mng_imagedata;
-typedef mng_imagedata * mng_imagedatap;
-
-/* ************************************************************************** */
-
-typedef struct { /* MNG specification "object" */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint16 iId; /* object-id */
- mng_bool bFrozen; /* frozen flag */
- mng_bool bVisible; /* potential visibility flag */
- mng_bool bViewable; /* viewable flag */
- mng_bool bValid; /* marks invalid when only reading */
- mng_int32 iPosx; /* location fields */
- mng_int32 iPosy;
- mng_bool bClipped; /* clipping fields */
- mng_int32 iClipl;
- mng_int32 iClipr;
- mng_int32 iClipt;
- mng_int32 iClipb;
-#ifndef MNG_SKIPCHUNK_MAGN
- mng_uint8 iMAGN_MethodX; /* magnification (MAGN) */
- mng_uint8 iMAGN_MethodY;
- mng_uint16 iMAGN_MX;
- mng_uint16 iMAGN_MY;
- mng_uint16 iMAGN_ML;
- mng_uint16 iMAGN_MR;
- mng_uint16 iMAGN_MT;
- mng_uint16 iMAGN_MB;
-#endif
-#ifndef MNG_SKIPCHUNK_PAST
- mng_int32 iPastx; /* target x/y from previous PAST */
- mng_int32 iPasty;
-#endif
- mng_imagedatap pImgbuf; /* the image-data buffer */
- } mng_image;
-typedef mng_image * mng_imagep;
-
-/* ************************************************************************** */
-
- /* "on-the-fly" image (= object 0) */
-typedef mng_image mng_ani_image; /* let's (ab)use the general "object" */
-typedef mng_ani_image * mng_ani_imagep; /* that's actualy crucial, so don't change it! */
-
-/* ************************************************************************** */
-
-typedef struct { /* global PLTE object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint32 iEntrycount;
- mng_rgbpaltab aEntries;
- } mng_ani_plte;
-typedef mng_ani_plte * mng_ani_pltep;
-
-/* ************************************************************************** */
-
-typedef struct { /* global tRNS object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint32 iRawlen;
- mng_uint8arr aRawdata;
- } mng_ani_trns;
-typedef mng_ani_trns * mng_ani_trnsp;
-
-/* ************************************************************************** */
-
-typedef struct { /* global gAMA object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_bool bEmpty;
- mng_uint32 iGamma;
- } mng_ani_gama;
-typedef mng_ani_gama * mng_ani_gamap;
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_cHRM
-typedef struct { /* global cHRM object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_bool bEmpty;
- mng_uint32 iWhitepointx;
- mng_uint32 iWhitepointy;
- mng_uint32 iRedx;
- mng_uint32 iRedy;
- mng_uint32 iGreenx;
- mng_uint32 iGreeny;
- mng_uint32 iBluex;
- mng_uint32 iBluey;
- } mng_ani_chrm;
-typedef mng_ani_chrm * mng_ani_chrmp;
-#endif
-
-/* ************************************************************************** */
-
-typedef struct { /* global sRGB object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_bool bEmpty;
- mng_uint8 iRenderingintent;
- } mng_ani_srgb;
-typedef mng_ani_srgb * mng_ani_srgbp;
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_iCCP
-typedef struct { /* global iCCP object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_bool bEmpty;
- mng_uint32 iProfilesize;
- mng_ptr pProfile;
- } mng_ani_iccp;
-typedef mng_ani_iccp * mng_ani_iccpp;
-#endif
-
-/* ************************************************************************** */
-
-typedef struct { /* global bKGD object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint16 iRed;
- mng_uint16 iGreen;
- mng_uint16 iBlue;
- } mng_ani_bkgd;
-typedef mng_ani_bkgd * mng_ani_bkgdp;
-
-/* ************************************************************************** */
-
-typedef struct { /* LOOP object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint8 iLevel;
- mng_uint32 iRepeatcount;
- mng_uint8 iTermcond;
- mng_uint32 iItermin;
- mng_uint32 iItermax;
- mng_uint32 iCount;
- mng_uint32p pSignals;
-
- mng_uint32 iRunningcount; /* running counter */
- } mng_ani_loop;
-typedef mng_ani_loop * mng_ani_loopp;
-
-/* ************************************************************************** */
-
-typedef struct { /* ENDL object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint8 iLevel;
-
- mng_ani_loopp pLOOP; /* matching LOOP */
- } mng_ani_endl;
-typedef mng_ani_endl * mng_ani_endlp;
-
-/* ************************************************************************** */
-
-typedef struct { /* DEFI object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint16 iId;
- mng_bool bHasdonotshow;
- mng_uint8 iDonotshow;
- mng_bool bHasconcrete;
- mng_uint8 iConcrete;
- mng_bool bHasloca;
- mng_int32 iLocax;
- mng_int32 iLocay;
- mng_bool bHasclip;
- mng_int32 iClipl;
- mng_int32 iClipr;
- mng_int32 iClipt;
- mng_int32 iClipb;
- } mng_ani_defi;
-typedef mng_ani_defi * mng_ani_defip;
-
-/* ************************************************************************** */
-
-typedef struct { /* BASI object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint16 iRed;
- mng_uint16 iGreen;
- mng_uint16 iBlue;
- mng_bool bHasalpha;
- mng_uint16 iAlpha;
- mng_uint8 iViewable;
- } mng_ani_basi;
-typedef mng_ani_basi * mng_ani_basip;
-
-/* ************************************************************************** */
-
-typedef struct { /* CLON object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint16 iCloneid;
- mng_uint16 iSourceid;
- mng_uint8 iClonetype;
- mng_bool bHasdonotshow;
- mng_uint8 iDonotshow;
- mng_uint8 iConcrete;
- mng_bool bHasloca;
- mng_uint8 iLocatype;
- mng_int32 iLocax;
- mng_int32 iLocay;
- } mng_ani_clon;
-typedef mng_ani_clon * mng_ani_clonp;
-
-/* ************************************************************************** */
-
-typedef struct { /* BACK object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint16 iRed;
- mng_uint16 iGreen;
- mng_uint16 iBlue;
- mng_uint8 iMandatory;
- mng_uint16 iImageid;
- mng_uint8 iTile;
- } mng_ani_back;
-typedef mng_ani_back * mng_ani_backp;
-
-/* ************************************************************************** */
-
-typedef struct { /* FRAM object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint8 iFramemode;
- mng_uint8 iChangedelay;
- mng_uint32 iDelay;
- mng_uint8 iChangetimeout;
- mng_uint32 iTimeout;
- mng_uint8 iChangeclipping;
- mng_uint8 iCliptype;
- mng_int32 iClipl;
- mng_int32 iClipr;
- mng_int32 iClipt;
- mng_int32 iClipb;
- } mng_ani_fram;
-typedef mng_ani_fram * mng_ani_framp;
-
-/* ************************************************************************** */
-
-typedef struct { /* MOVE object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint16 iFirstid;
- mng_uint16 iLastid;
- mng_uint8 iType;
- mng_int32 iLocax;
- mng_int32 iLocay;
- } mng_ani_move;
-typedef mng_ani_move * mng_ani_movep;
-
-/* ************************************************************************** */
-
-typedef struct { /* CLIP object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint16 iFirstid;
- mng_uint16 iLastid;
- mng_uint8 iType;
- mng_int32 iClipl;
- mng_int32 iClipr;
- mng_int32 iClipt;
- mng_int32 iClipb;
- } mng_ani_clip;
-typedef mng_ani_clip * mng_ani_clipp;
-
-/* ************************************************************************** */
-
-typedef struct { /* SHOW object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint16 iFirstid;
- mng_uint16 iLastid;
- mng_uint8 iMode;
- } mng_ani_show;
-typedef mng_ani_show * mng_ani_showp;
-
-/* ************************************************************************** */
-
-typedef struct { /* TERM object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint8 iTermaction;
- mng_uint8 iIteraction;
- mng_uint32 iDelay;
- mng_uint32 iItermax;
- } mng_ani_term;
-typedef mng_ani_term * mng_ani_termp;
-
-/* ************************************************************************** */
-
-typedef struct { /* SAVE object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- } mng_ani_save;
-typedef mng_ani_save * mng_ani_savep;
-
-/* ************************************************************************** */
-
-typedef struct { /* SEEK object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint32 iSegmentnamesize;
- mng_pchar zSegmentname;
- } mng_ani_seek;
-typedef mng_ani_seek * mng_ani_seekp;
-
-/* ************************************************************************** */
-#ifndef MNG_NO_DELTA_PNG
-typedef struct { /* DHDR object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint16 iObjectid;
- mng_uint8 iImagetype;
- mng_uint8 iDeltatype;
- mng_uint32 iBlockwidth;
- mng_uint32 iBlockheight;
- mng_uint32 iBlockx;
- mng_uint32 iBlocky;
- } mng_ani_dhdr;
-typedef mng_ani_dhdr * mng_ani_dhdrp;
-
-/* ************************************************************************** */
-
-typedef struct { /* PROM object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint8 iBitdepth;
- mng_uint8 iColortype;
- mng_uint8 iFilltype;
- } mng_ani_prom;
-typedef mng_ani_prom * mng_ani_promp;
-
-/* ************************************************************************** */
-
-typedef struct { /* IPNG object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- } mng_ani_ipng;
-typedef mng_ani_ipng * mng_ani_ipngp;
-
-/* ************************************************************************** */
-
-typedef struct { /* IJNG object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- } mng_ani_ijng;
-typedef mng_ani_ijng * mng_ani_ijngp;
-
-/* ************************************************************************** */
-
-typedef struct { /* PPLT object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint8 iType;
- mng_uint32 iCount;
- mng_rgbpaltab aIndexentries;
- mng_uint8arr aAlphaentries;
- mng_uint8arr aUsedentries;
- } mng_ani_pplt;
-typedef mng_ani_pplt * mng_ani_ppltp;
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_MAGN
-typedef struct { /* MAGN object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint16 iFirstid;
- mng_uint16 iLastid;
- mng_uint8 iMethodX;
- mng_uint16 iMX;
- mng_uint16 iMY;
- mng_uint16 iML;
- mng_uint16 iMR;
- mng_uint16 iMT;
- mng_uint16 iMB;
- mng_uint8 iMethodY;
- } mng_ani_magn;
-typedef mng_ani_magn * mng_ani_magnp;
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-typedef struct { /* PAST object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint16 iTargetid;
- mng_uint8 iTargettype;
- mng_int32 iTargetx;
- mng_int32 iTargety;
- mng_uint32 iCount;
- mng_ptr pSources;
- } mng_ani_past;
-typedef mng_ani_past * mng_ani_pastp;
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_DISC
-typedef struct { /* DISC object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint32 iCount;
- mng_uint16p pIds;
- } mng_ani_disc;
-typedef mng_ani_disc * mng_ani_discp;
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DYNAMICMNG
-typedef struct { /* event object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint8 iEventtype;
- mng_uint8 iMasktype;
- mng_int32 iLeft;
- mng_int32 iRight;
- mng_int32 iTop;
- mng_int32 iBottom;
- mng_uint16 iObjectid;
- mng_uint8 iIndex;
- mng_uint32 iSegmentnamesize;
- mng_pchar zSegmentname;
-
- mng_ani_seekp pSEEK; /* SEEK ani object */
- mng_int32 iLastx; /* last X/Y coordinates */
- mng_int32 iLasty;
- } mng_event;
-typedef mng_event * mng_eventp;
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
-typedef struct { /* mPNG object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint32 iFramewidth;
- mng_uint32 iFrameheight;
- mng_uint32 iNumplays;
- mng_uint16 iTickspersec;
- mng_uint32 iFramessize;
- mng_ptr pFrames;
- } mng_mpng_obj;
-typedef mng_mpng_obj * mng_mpng_objp;
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
-typedef struct { /* ANG object */
- mng_object_header sHeader; /* default header (DO NOT REMOVE) */
- mng_uint32 iNumframes;
- mng_uint32 iTickspersec;
- mng_uint32 iNumplays;
- mng_uint32 iTilewidth;
- mng_uint32 iTileheight;
- mng_uint8 iInterlace;
- mng_uint8 iStillused;
- mng_uint32 iTilessize;
- mng_ptr pTiles;
- } mng_ang_obj;
-typedef mng_ang_obj * mng_ang_objp;
-#endif
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_DISPLAY_PROCS */
-
-/* ************************************************************************** */
-
-#endif /* _libmng_objects_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/libmng_pixels.c b/src/3rdparty/libmng/libmng_pixels.c
deleted file mode 100644
index ce5637be95..0000000000
--- a/src/3rdparty/libmng/libmng_pixels.c
+++ /dev/null
@@ -1,24610 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_pixels.c copyright (c) 2000-2005 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : Pixel-row management routines (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of the pixel-row management routines * */
-/* * * */
-/* * the dual alpha-composing for RGBA/BGRA/etc output-canvas' * */
-/* * is based on the Note on Compositing chapter of the * */
-/* * DOH-3 draft, noted to me by Adam M. Costello * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/11/2000 - G.Juyn * */
-/* * - added callback error-reporting support * */
-/* * 0.5.1 - 05/12/2000 - G.Juyn * */
-/* * - changed trace to macro for callback error-reporting * */
-/* * * */
-/* * 0.5.2 - 05/22/2000 - G.Juyn * */
-/* * - added JNG support * */
-/* * 0.5.2 - 05/30/2000 - G.Juyn * */
-/* * - fixed minor bugs 16-bit pixel-handling * */
-/* * - added delta-image row-processing routines * */
-/* * 0.5.2 - 06/02/2000 - G.Juyn * */
-/* * - fixed endian support (hopefully) * */
-/* * 0.5.2 - 06/03/2000 - G.Juyn * */
-/* * - fixed makeup for Linux gcc compile * */
-/* * 0.5.2 - 06/05/2000 - G.Juyn * */
-/* * - implemented app bkgd restore routines * */
-/* * - implemented RGBA8, ARGB8, BGRA8 & ABGR8 display routines * */
-/* * - added support for RGB8_A8 canvasstyle * */
-/* * 0.5.2 - 06/09/2000 - G.Juyn * */
-/* * - fixed alpha-handling for alpha canvasstyles * */
-/* * * */
-/* * 0.5.3 - 06/16/2000 - G.Juyn * */
-/* * - changed progressive-display processing * */
-/* * 0.5.3 - 06/17/2000 - G.Juyn * */
-/* * - changed to support delta-images * */
-/* * - optimized some store_xxx routines * */
-/* * 0.5.3 - 06/20/2000 - G.Juyn * */
-/* * - fixed nasty bug with embedded PNG after delta-image * */
-/* * 0.5.3 - 06/24/2000 - G.Juyn * */
-/* * - fixed problem with 16-bit GA format * */
-/* * 0.5.3 - 06/25/2000 - G.Juyn * */
-/* * - fixed problem with cheap transparency for 4-bit gray * */
-/* * - fixed display_xxxx routines for interlaced images * */
-/* * 0.5.3 - 06/28/2000 - G.Juyn * */
-/* * - fixed compiler-warning for non-initialized iB variable * */
-/* * * */
-/* * 0.9.1 - 07/05/2000 - G.Juyn * */
-/* * - fixed mandatory BACK color to be opaque * */
-/* * * */
-/* * 0.9.2 - 07/31/2000 - G.Juyn * */
-/* * - B110547 - fixed bug in interlace code * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 08/20/2000 - G.Juyn * */
-/* * - fixed app-supplied background restore * */
-/* * 0.9.3 - 08/26/2000 - G.Juyn * */
-/* * - added MAGN chunk * */
-/* * 0.9.3 - 09/07/2000 - G.Juyn * */
-/* * - added support for new filter_types * */
-/* * 0.9.3 - 09/30/2000 - G.Juyn * */
-/* * - fixed MAGN rounding errors (thanks Matthias!) * */
-/* * 0.9.3 - 10/10/2000 - G.Juyn * */
-/* * - fixed alpha-blending for RGBA canvasstyle * */
-/* * 0.9.3 - 10/11/2000 - G.Juyn * */
-/* * - fixed alpha-blending for other alpha-canvasstyles * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added optional support for bKGD for PNG images * */
-/* * - added support for JDAA * */
-/* * 0.9.3 - 10/17/2000 - G.Juyn * */
-/* * - fixed support for bKGD * */
-/* * 0.9.3 - 10/19/2000 - G.Juyn * */
-/* * - implemented delayed delta-processing * */
-/* * 0.9.3 - 10/28/2000 - G.Juyn * */
-/* * - fixed tRNS processing for gray-image < 8-bits * */
-/* * * */
-/* * 0.9.4 - 12/16/2000 - G.Juyn * */
-/* * - fixed mixup of data- & function-pointers (thanks Dimitri)* */
-/* * 0.9.4 - 1/18/2001 - G.Juyn * */
-/* * - removed "old" MAGN methods 3 & 4 * */
-/* * - added "new" MAGN methods 3, 4 & 5 * */
-/* * - removed test filter-methods 1 & 65 * */
-/* * * */
-/* * 1.0.1 - 04/21/2001 - G.Juyn (code by G.Kelly) * */
-/* * - added BGRA8 canvas with premultiplied alpha * */
-/* * 1.0.1 - 04/25/2001 - G.Juyn * */
-/* * - moved mng_clear_cms to libmng_cms * */
-/* * * */
-/* * 1.0.2 - 06/25/2001 - G.Juyn * */
-/* * - added option to turn off progressive refresh * */
-/* * * */
-/* * 1.0.4 - 11/04/2001 - G.Juyn * */
-/* * - fixed possible compile-problem in cleanup_rowproc * */
-/* * 1.0.4 - 06/22/2002 - G.Juyn * */
-/* * - B558212 - off by one error * */
-/* * - MNG subimage alpha composite wrong for rgba8 images * */
-/* * * */
-/* * 1.0.5 - 08/07/2002 - G.Juyn * */
-/* * - added test-option for PNG filter method 193 (=no filter) * */
-/* * 1.0.5 - 08/15/2002 - G.Juyn * */
-/* * - completed PROM support * */
-/* * - completed delta-image support * */
-/* * 1.0.5 - 08/16/2002 - G.Juyn * */
-/* * - completed MAGN support (16-bit functions) * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * 1.0.5 - 09/19/2002 - G.Juyn * */
-/* * - optimized restore-background for bKGD cases * */
-/* * 1.0.5 - 09/20/2002 - G.Juyn * */
-/* * - finished support for BACK image & tiling * */
-/* * 1.0.5 - 09/22/2002 - G.Juyn * */
-/* * - added bgrx8 canvas (filler byte) * */
-/* * 1.0.5 - 09/23/2002 - G.Juyn * */
-/* * - added compose over/under routines for PAST processing * */
-/* * - added flip & tile routines for PAST processing * */
-/* * * */
-/* * 1.0.6 - 03/09/2003 - G.Juyn * */
-/* * - hiding 12-bit JPEG stuff * */
-/* * 1.0.6 - 05/11/2003 - Glenn RP * */
-/* * - added size-optimization COMPOSE routine usage * */
-/* * 1.0.6 - 05/11/2003 - G. Juyn * */
-/* * - added conditionals around canvas update routines * */
-/* * 1.0.6 - 05/25/2003 - Glenn RP * */
-/* * - added size-optimization DIV255B8 routine usage * */
-/* * 1.0.6 - 06/09/2003 - G. R-P * */
-/* * - added conditionals around 8-bit magn routines * */
-/* * 1.0.6 - 07/07/2003 - G. R-P * */
-/* * - removed conditionals around 8-bit magn routines * */
-/* * - added MNG_NO_16BIT_SUPPORT and MNG_NO_DELTA_PNG * */
-/* * conditionals * */
-/* * - reversed many loops to use decrementing counter * */
-/* * - combined init functions * */
-/* * - converted some switches to array references * */
-/* * 1.0.6 - 07/29/2003 - G.Juyn * */
-/* * - fixed duplicate for-loop * */
-/* * 1.0.6 - 07/29/2003 - G.R-P * */
-/* * - added SKIPCHUNK conditionals around PAST chunk support * */
-/* * - fixed "FOOTPRINT_COMPOSEIV" typo (now "FOOTPRINT_DIV") * */
-/* * 1.0.6 - 08/17/2003 - G.R-P * */
-/* * - added more conditionals around "promote" functions * */
-/* * * */
-/* * 1.0.7 - 11/27/2003 - R.A * */
-/* * - added CANVAS_RGB565 and CANVAS_BGR565 * */
-/* * 1.0.7 - 12/06/2003 - R.A * */
-/* * - added CANVAS_RGBA565 and CANVAS_BGRA565 * */
-/* * 1.0.7 - 01/25/2004 - J.S * */
-/* * - added premultiplied alpha canvas' for RGBA, ARGB, ABGR * */
-/* * 1.0.7 - 03/08/2004 - G.R-P * */
-/* * - added more conditionals around 16-bit-supporting code * */
-/* * 1.0.7 - 03/09/2004 - G.Juyn * */
-/* * - fixed bug in promote_g8_g8 with 16bit support off * */
-/* * 1.0.7 - 03/09/2004 - G.R-P * */
-/* * - more optimizations with 16bit support off * */
-/* * 1.0.7 - 03/10/2004 - G.Juyn * */
-/* * - fixed some warnings for 16bit optimizations * */
-/* * 1.0.7 - 03/21/2004 - G.Juyn * */
-/* * - fixed some 64-bit platform compiler warnings * */
-/* * * */
-/* * 1.0.8 - 06/20/2004 - G.Juyn * */
-/* * - some speed optimizations (thanks to John Stiles) * */
-/* * 1.0.8 - 08/01/2004 - G.Juyn * */
-/* * - added support for 3+byte pixelsize for JPEG's * */
-/* * * */
-/* * 1.0.9 - 10/10/2004 - G.R-P. * */
-/* * - added MNG_NO_1_2_4BIT_SUPPORT * */
-/* * 1.0.9 - 10/14/2004 - G.Juyn * */
-/* * - added bgr565_a8 canvas-style (thanks to J. Elvander) * */
-/* * 1.0.9 - 12/05/2004 - G.Juyn * */
-/* * - added LITTLEENDIAN/BIGENDIAN fixtures (thanks J.Stiles) * */
-/* * - fixed MNG_NO_1_2_4BIT_SUPPORT for TBBN1G04.PNG * */
-/* * 1.0.9 - 12/31/2004 - G.R-P. * */
-/* * - fixed warnings about C++ style (//) comments * */
-/* * * */
-/* * 1.0.10 - 07/06/2005 - G.R-P. * */
-/* * - added MORE MNG_NO_1_2_4BIT_SUPPORT * */
-/* * 1.0.10 - 10/06/2005 - G.R-P. * */
-/* * - alloc more memory for MNG_NO_1_2_4BIT_SUPPORT * */
-/* * 1.0.10 - 12/07/2005 - G.R-P. * */
-/* * - optimized footprint of 16bit support * */
-/* * 1.0.10 - 03/07/2006 - (thanks to W. Manthey) * */
-/* * - added CANVAS_RGB555 and CANVAS_BGR555 * */
-/* * * */
-/* ************************************************************************** */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-#include "libmng_objects.h"
-#include "libmng_object_prc.h"
-#include "libmng_memory.h"
-#include "libmng_cms.h"
-#include "libmng_filter.h"
-#include "libmng_pixels.h"
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_DISPLAY_PROCS
-
-/* TODO: magnification & canvas-positioning/-clipping */
-
-/* TODO: major optimization of pixel-loops by using assembler (?) */
-
-/* ************************************************************************** */
-/* * * */
-/* * Interlace tables * */
-/* * * */
-/* ************************************************************************** */
-
-MNG_LOCAL mng_uint32 const interlace_row [7] = { 0, 0, 4, 0, 2, 0, 1 };
-MNG_LOCAL mng_uint32 const interlace_rowskip [7] = { 8, 8, 8, 4, 4, 2, 2 };
-MNG_LOCAL mng_uint32 const interlace_col [7] = { 0, 4, 0, 2, 0, 1, 0 };
-MNG_LOCAL mng_uint32 const interlace_colskip [7] = { 8, 8, 4, 4, 2, 2, 1 };
-MNG_LOCAL mng_uint32 const interlace_roundoff [7] = { 7, 7, 3, 3, 1, 1, 0 };
-MNG_LOCAL mng_uint32 const interlace_divider [7] = { 3, 3, 2, 2, 1, 1, 0 };
-
-/* ************************************************************************** */
-/* * * */
-/* * Alpha composing macros * */
-/* * the code below is slightly modified from the libpng package * */
-/* * the original was last optimized by Greg Roelofs & Mark Adler * */
-/* * * */
-/* ************************************************************************** */
-
-#define MNG_COMPOSE8(RET,FG,ALPHA,BG) { \
- mng_uint16 iH = (mng_uint16)((mng_uint16)(FG) * (mng_uint16)(ALPHA) \
- + (mng_uint16)(BG)*(mng_uint16)(255 - \
- (mng_uint16)(ALPHA)) + (mng_uint16)128); \
- (RET) = (mng_uint8)((iH + (iH >> 8)) >> 8); }
-
-#define MNG_COMPOSE16(RET,FG,ALPHA,BG) { \
- mng_uint32 iH = (mng_uint32)((mng_uint32)(FG) * (mng_uint32)(ALPHA) \
- + (mng_uint32)(BG)*(mng_uint32)(65535L - \
- (mng_uint32)(ALPHA)) + (mng_uint32)32768L); \
- (RET) = (mng_uint16)((iH + (iH >> 16)) >> 16); }
-
-/* ************************************************************************** */
-/* * * */
-/* * Alpha blending macros * */
-/* * this code is based on Adam Costello's "Note on Compositing" from the * */
-/* * mng-list which gives the following formula: * */
-/* * * */
-/* * top pixel = (Rt, Gt, Bt, At) * */
-/* * bottom pixel = (Rb, Gb, Bb, Ab) * */
-/* * composite pixel = (Rc, Gc, Bc, Ac) * */
-/* * * */
-/* * all values in the range 0..1 * */
-/* * * */
-/* * Ac = 1 - (1 - At)(1 - Ab) * */
-/* * s = At / Ac * */
-/* * t = (1 - At) Ab / Ac * */
-/* * Rc = s Rt + t Rb * */
-/* * Gc = s Gt + t Gb * */
-/* * Bc = s Bt + t Bb * */
-/* * * */
-/* * (I just hope I coded it correctly in integer arithmetic...) * */
-/* * * */
-/* ************************************************************************** */
-
-#define MNG_BLEND8(RT, GT, BT, AT, RB, GB, BB, AB, RC, GC, BC, AC) { \
- mng_uint32 S, T; \
- (AC) = (mng_uint8)((mng_uint32)255 - \
- ((((mng_uint32)255 - (mng_uint32)(AT)) * \
- ((mng_uint32)255 - (mng_uint32)(AB)) ) >> 8)); \
- S = (mng_uint32)(((mng_uint32)(AT) << 8) / \
- (mng_uint32)(AC)); \
- T = (mng_uint32)(((mng_uint32)255 - (mng_uint32)(AT)) * \
- (mng_uint32)(AB) / (mng_uint32)(AC)); \
- (RC) = (mng_uint8)((S * (mng_uint32)(RT) + \
- T * (mng_uint32)(RB) + (mng_uint32)127) >> 8); \
- (GC) = (mng_uint8)((S * (mng_uint32)(GT) + \
- T * (mng_uint32)(GB) + (mng_uint32)127) >> 8); \
- (BC) = (mng_uint8)((S * (mng_uint32)(BT) + \
- T * (mng_uint32)(BB) + (mng_uint32)127) >> 8); }
-
-#define MNG_BLEND16(RT, GT, BT, AT, RB, GB, BB, AB, RC, GC, BC, AC) { \
- mng_uint32 S, T; \
- (AC) = (mng_uint16)((mng_uint32)65535 - \
- ((((mng_uint32)65535 - (mng_uint32)(AT)) * \
- ((mng_uint32)65535 - (mng_uint32)(AB)) ) >> 16)); \
- S = (mng_uint32)(((mng_uint32)(AT) << 16) / \
- (mng_uint32)(AC)); \
- T = (mng_uint32)(((mng_uint32)65535 - (mng_uint32)(AT)) * \
- (mng_uint32)(AB) / (mng_uint32)(AC)); \
- (RC) = (mng_uint16)((S * (mng_uint32)(RT) + \
- T * (mng_uint32)(RB) + (mng_uint32)32767) >> 16); \
- (GC) = (mng_uint16)((S * (mng_uint32)(GT) + \
- T * (mng_uint32)(GB) + (mng_uint32)32767) >> 16); \
- (BC) = (mng_uint16)((S * (mng_uint32)(BT) + \
- T * (mng_uint32)(BB) + (mng_uint32)32767) >> 16); }
-
-/* ************************************************************************** */
-
-/* note a good optimizing compiler will optimize this */
-#define DIV255B8(x) (mng_uint8)(((x) + 127) / 255)
-#define DIV255B16(x) (mng_uint16)(((x) + 32767) / 65535)
-
-/* ************************************************************************** */
-/* * * */
-/* * Progressive display check - checks to see if progressive display is * */
-/* * in order & indicates so * */
-/* * * */
-/* * The routine is called after a call to one of the display_xxx routines * */
-/* * if appropriate * */
-/* * * */
-/* * The refresh is warrented in the read_chunk routine (mng_read.c) * */
-/* * and only during read&display processing, since there's not much point * */
-/* * doing it from memory! * */
-/* * * */
-/* ************************************************************************** */
-
-mng_retcode mng_display_progressive_check (mng_datap pData)
-{
- if ((pData->bDoProgressive) && /* need progressive display? */
- ((pData->eImagetype != mng_it_mng) || (pData->iDataheight > 300)) &&
- (pData->iDestb - pData->iDestt > 50) && (!pData->pCurraniobj))
- {
- mng_int32 iC = pData->iRow + pData->iDestt - pData->iSourcet;
-
- if (iC % 20 == 0) /* every 20th line */
- pData->bNeedrefresh = MNG_TRUE;
-
- }
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-/* * * */
-/* * Display routines - convert rowdata (which is already color-corrected) * */
-/* * to the output canvas, respecting the opacity information * */
-/* * * */
-/* ************************************************************************** */
-
-MNG_LOCAL void check_update_region (mng_datap pData)
-{ /* determine actual canvas row */
- mng_int32 iRow = pData->iRow + pData->iDestt - pData->iSourcet;
- /* check for change in update-region */
- if ((pData->iDestl < (mng_int32)pData->iUpdateleft) || (pData->iUpdateright == 0))
- pData->iUpdateleft = pData->iDestl;
-
- if (pData->iDestr > (mng_int32)pData->iUpdateright)
- pData->iUpdateright = pData->iDestr;
-
- if ((iRow < (mng_int32)pData->iUpdatetop) || (pData->iUpdatebottom == 0))
- pData->iUpdatetop = iRow;
-
- if (iRow+1 > (mng_int32)pData->iUpdatebottom)
- pData->iUpdatebottom = iRow+1;
-
- return;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_RGB8
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_rgb8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint16 iA16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint8 iA8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB8, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol * 3) + (pData->iDestl * 3);
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 3);
- else
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *(pDataline+4);
-
- pScanline += (pData->iColinc * 3);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *(pDataline+2);
-
- pScanline += (pData->iColinc * 3);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA16 = mng_get_uint16 (pDataline+6);
-
- if (iA16) /* any opacity at all ? */
- {
- if (iA16 == 0xFFFF) /* fully opaque ? */
- { /* scale down by dropping the LSB */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *(pDataline+4);
- }
- else
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
- /* scale background up */
- iBGr16 = (mng_uint16)(*pScanline );
- iBGg16 = (mng_uint16)(*(pScanline+1));
- iBGb16 = (mng_uint16)(*(pScanline+2));
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iA16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iA16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iA16, iBGb16);
- /* and return the composed values */
- *pScanline = (mng_uint8)(iFGr16 >> 8);
- *(pScanline+1) = (mng_uint8)(iFGg16 >> 8);
- *(pScanline+2) = (mng_uint8)(iFGb16 >> 8);
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *(pDataline+2);
- }
- else
- { /* do alpha composing */
- MNG_COMPOSE8 (*pScanline, *pDataline, iA8, *pScanline );
- MNG_COMPOSE8 (*(pScanline+1), *(pDataline+1), iA8, *(pScanline+1));
- MNG_COMPOSE8 (*(pScanline+2), *(pDataline+2), iA8, *(pScanline+2));
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_rgb8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint16 iA16;
- mng_uint16 iFGg16;
- mng_uint16 iBGg16;
- mng_uint8 iA8;
- mng_uint8 iBps;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB8, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol * 3) + (pData->iDestl * 3);
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+iBps);
- *(pScanline+2) = *(pDataline+2*iBps);
-
- pScanline += (pData->iColinc * 3);
- pDataline += 4*iBps;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA16 = mng_get_uint16 (pDataline+6);
-
- if (iA16) /* any opacity at all ? */
- {
- if (iA16 == 0xFFFF) /* fully opaque ? */
- { /* scale down by dropping the LSB */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *(pDataline+4);
- }
- else
- { /* get the proper values */
- int i;
- for (i=2; i >= 0; i--)
- {
- iFGg16 = mng_get_uint16 (pDataline+i+i);
- /* scale background up */
- iBGg16 = (mng_uint16)(*(pScanline+i));
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- /* now compose */
- MNG_COMPOSE16(iFGg16, iFGg16, iA16, iBGg16);
- /* and return the composed values */
- *(pScanline+i) = (mng_uint8)(iFGg16 >> 8);
- }
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *(pDataline+2);
- }
- else
- { /* do alpha composing */
- int i;
- for (i=2; i >= 0; i--)
- {
- MNG_COMPOSE8 (*(pScanline+i), *(pDataline+i), iA8, *(pScanline+i));
- }
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_rgb8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iA8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB8, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol * 3) + (pData->iDestl * 3);
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *(pDataline+2);
-
- pScanline += (pData->iColinc * 3);
- pDataline += 4;
- }
- }
- }
- else
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *(pDataline+2);
- }
- else
- { /* do alpha composing */
-#ifdef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
- int i;
- for (i=2; i >= 0; i--)
- {
- MNG_COMPOSE8 (*(pScanline+i), *(pDataline+i), iA8, *(pScanline+i));
- }
-#else
- MNG_COMPOSE8 (*pScanline, *pDataline, iA8, *pScanline );
- MNG_COMPOSE8 (*(pScanline+1), *(pDataline+1), iA8, *(pScanline+1));
- MNG_COMPOSE8 (*(pScanline+2), *(pDataline+2), iA8, *(pScanline+2));
-#endif
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_RGB8 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_RGBA8
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_rgba8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint16 iFGa16, iBGa16, iCa16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint16 iCr16, iCg16, iCb16;
- mng_uint8 iCr8, iCg8, iCb8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGBA8, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 3);
- else
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *(pDataline+4);
- *(pScanline+3) = *(pDataline+6);
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *(pDataline+2);
- *(pScanline+3) = *(pDataline+3);
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- iFGa16 = mng_get_uint16 (pDataline+6);
- iBGa16 = (mng_uint16)(*(pScanline+3));
- iBGa16 = (mng_uint16)(iBGa16 << 8) | iBGa16;
-
- if (iFGa16) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa16 == 0xFFFF) || (iBGa16 == 0))
- { /* plain copy it */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *(pDataline+4);
- *(pScanline+3) = *(pDataline+6);
- }
- else
- {
- if (iBGa16 == 0xFFFF) /* background fully opaque ? */
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
- /* scale background up */
- iBGr16 = (mng_uint16)(*pScanline );
- iBGg16 = (mng_uint16)(*(pScanline+1));
- iBGb16 = (mng_uint16)(*(pScanline+2));
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iFGa16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iFGa16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iFGa16, iBGb16);
- /* and return the composed values */
- *pScanline = (mng_uint8)(iFGr16 >> 8);
- *(pScanline+1) = (mng_uint8)(iFGg16 >> 8);
- *(pScanline+2) = (mng_uint8)(iFGb16 >> 8);
- /* alpha remains fully opaque !!! */
- }
- else
- { /* scale background up */
- iBGr16 = (mng_uint16)(*pScanline );
- iBGg16 = (mng_uint16)(*(pScanline+1));
- iBGb16 = (mng_uint16)(*(pScanline+2));
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* let's blend */
- MNG_BLEND16 (mng_get_uint16 (pDataline ),
- mng_get_uint16 (pDataline+2),
- mng_get_uint16 (pDataline+4), iFGa16,
- iBGr16, iBGg16, iBGb16, iBGa16,
- iCr16, iCg16, iCb16, iCa16);
- /* and return the composed values */
- *pScanline = (mng_uint8)(iCr16 >> 8);
- *(pScanline+1) = (mng_uint8)(iCg16 >> 8);
- *(pScanline+2) = (mng_uint8)(iCb16 >> 8);
- *(pScanline+3) = (mng_uint8)(iCa16 >> 8);
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *(pScanline+3);
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *(pDataline+2);
- *(pScanline+3) = *(pDataline+3);
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do alpha composing */
- MNG_COMPOSE8 (*pScanline, *pDataline, iFGa8, *pScanline );
- MNG_COMPOSE8 (*(pScanline+1), *(pDataline+1), iFGa8, *(pScanline+1));
- MNG_COMPOSE8 (*(pScanline+2), *(pDataline+2), iFGa8, *(pScanline+2));
- /* alpha remains fully opaque !!! */
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- *pScanline, *(pScanline+1), *(pScanline+2), iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *pScanline = iCr8;
- *(pScanline+1) = iCg8;
- *(pScanline+2) = iCb8;
- *(pScanline+3) = iCa8;
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGBA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_rgba8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint16 iFGa16, iBGa16, iCa16;
- mng_uint16 iFGg16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint16 iCr16, iCg16, iCb16;
- mng_uint8 iCr8, iCg8, iCb8;
- mng_uint8 iBps;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGBA8, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+iBps);
- *(pScanline+2) = *(pDataline+2*iBps);
- *(pScanline+3) = *(pDataline+3*iBps);
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4*iBps;
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- iFGa16 = mng_get_uint16 (pDataline+6);
- iBGa16 = (mng_uint16)(*(pScanline+3));
- iBGa16 = (mng_uint16)(iBGa16 << 8) | iBGa16;
-
- if (iFGa16) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa16 == 0xFFFF) || (iBGa16 == 0))
- { /* plain copy it */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *(pDataline+4);
- *(pScanline+3) = *(pDataline+6);
- }
- else
- {
- if (iBGa16 == 0xFFFF) /* background fully opaque ? */
- { /* get the proper values */
- int i;
- for (i=2; i >= 0; i--)
- {
- iFGg16 = mng_get_uint16 (pDataline+i+i);
- /* scale background up */
- iBGg16 = (mng_uint16)(*(pScanline+i));
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- /* now compose */
- MNG_COMPOSE16(iFGg16, iFGg16, iFGa16, iBGg16);
- /* and return the composed values */
- *(pScanline+i) = (mng_uint8)(iFGg16 >> 8);
- /* alpha remains fully opaque !!! */
- }
- }
- else
- { /* scale background up */
- iBGr16 = (mng_uint16)(*pScanline );
- iBGg16 = (mng_uint16)(*(pScanline+1));
- iBGb16 = (mng_uint16)(*(pScanline+2));
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* let's blend */
- MNG_BLEND16 (mng_get_uint16 (pDataline ),
- mng_get_uint16 (pDataline+2),
- mng_get_uint16 (pDataline+4), iFGa16,
- iBGr16, iBGg16, iBGb16, iBGa16,
- iCr16, iCg16, iCb16, iCa16);
- /* and return the composed values */
- *pScanline = (mng_uint8)(iCr16 >> 8);
- *(pScanline+1) = (mng_uint8)(iCg16 >> 8);
- *(pScanline+2) = (mng_uint8)(iCb16 >> 8);
- *(pScanline+3) = (mng_uint8)(iCa16 >> 8);
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *(pScanline+3);
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *(pDataline+2);
- *(pScanline+3) = *(pDataline+3);
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do alpha composing */
- int i;
- for (i=2; i >= 0; i--)
- {
- MNG_COMPOSE8 (*(pScanline+i), *(pDataline+i), iFGa8, *(pScanline+i));
- }
- /* alpha remains fully opaque !!! */
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- *pScanline, *(pScanline+1), *(pScanline+2), iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *pScanline = iCr8;
- *(pScanline+1) = iCg8;
- *(pScanline+2) = iCb8;
- *(pScanline+3) = iCa8;
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGBA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_rgba8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint8 iCr8, iCg8, iCb8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGBA8, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *(pDataline+2);
- *(pScanline+3) = *(pDataline+3);
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *(pScanline+3);
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *(pDataline+2);
- *(pScanline+3) = *(pDataline+3);
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do alpha composing */
-#ifdef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
- int i;
- for (i=2; i >= 0; i--)
- {
- MNG_COMPOSE8 (*(pScanline+i), *(pDataline+i), iFGa8, *(pScanline+i));
- }
-#else
- MNG_COMPOSE8 (*pScanline, *pDataline, iFGa8, *pScanline );
- MNG_COMPOSE8 (*(pScanline+1), *(pDataline+1), iFGa8, *(pScanline+1));
- MNG_COMPOSE8 (*(pScanline+2), *(pDataline+2), iFGa8, *(pScanline+2));
-#endif
- /* alpha remains fully opaque !!! */
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- *pScanline, *(pScanline+1), *(pScanline+2), iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *pScanline = iCr8;
- *(pScanline+1) = iCg8;
- *(pScanline+2) = iCb8;
- *(pScanline+3) = iCa8;
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGBA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_RGBA8 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_RGBA8_PM
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_rgba8_pm (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint32 s, t;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGBA8_PM, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 3);
- else
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- if ((s = pDataline[6]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
- pScanline[0] = pDataline[0];
- pScanline[1] = pDataline[2];
- pScanline[2] = pDataline[4];
- pScanline[3] = 255;
- }
- else
- {
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[2-i] = DIV255B8(s * pDataline[4-i-i]);
- }
-#else
- pScanline[0] = DIV255B8(s * pDataline[0]);
- pScanline[1] = DIV255B8(s * pDataline[2]);
- pScanline[2] = DIV255B8(s * pDataline[4]);
-#endif
- pScanline[3] = (mng_uint8)s;
- }
- }
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values and premultiply */
- if ((s = pDataline[3]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
-#ifdef MNG_BIGENDIAN_SUPPORTED
- *(mng_uint32*)pScanline = (*(mng_uint32*)pDataline) | 0x000000FF;
-#else
- pScanline[0] = pDataline[0];
- pScanline[1] = pDataline[1];
- pScanline[2] = pDataline[2];
- pScanline[3] = 255;
-#endif
- }
- else
- {
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[2-i] = DIV255B8(s * pDataline[2-i]);
- }
-#else
- pScanline[0] = DIV255B8(s * pDataline[0]);
- pScanline[1] = DIV255B8(s * pDataline[1]);
- pScanline[2] = DIV255B8(s * pDataline[2]);
-#endif
- pScanline[3] = (mng_uint8)s;
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- if ((s = pDataline[6]) != 0) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if (s == 255)
- { /* plain copy it */
- pScanline[0] = pDataline[0];
- pScanline[1] = pDataline[2];
- pScanline[2] = pDataline[4];
- pScanline[3] = 255;
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[2-i] = DIV255B8(s * pDataline[4-i-i] + t *
- pScanline[2-i]);
- }
- }
-#else
- pScanline[0] = DIV255B8(s * pDataline[0] + t * pScanline[0]);
- pScanline[1] = DIV255B8(s * pDataline[2] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[4] + t * pScanline[2]);
-#endif
- pScanline[3] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[3])));
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- if ((s = pDataline[3]) != 0) /* any opacity at all ? */
- { /* fully opaque ? */
- if (s == 255)
- { /* then simply copy the values */
-#ifdef MNG_BIGENDIAN_SUPPORTED
- *(mng_uint32*)pScanline = (*(mng_uint32*)pDataline) | 0x000000FF;
-#else
- pScanline[0] = pDataline[0];
- pScanline[1] = pDataline[1];
- pScanline[2] = pDataline[2];
- pScanline[3] = 255;
-#endif
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[2-i] = DIV255B8(s * pDataline[2-i] + t *
- pScanline[2-i]);
- }
- }
-#else
- pScanline[0] = DIV255B8(s * pDataline[0] + t * pScanline[0]);
- pScanline[1] = DIV255B8(s * pDataline[1] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[2] + t * pScanline[2]);
-#endif
- pScanline[3] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[3])));
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGBA8_PM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_rgba8_pm (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint32 s, t;
- mng_uint8 iBps;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGBA8_PM, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- if ((s = pDataline[6]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
- pScanline[0] = pDataline[0];
- pScanline[1] = pDataline[2];
- pScanline[2] = pDataline[4];
- pScanline[3] = 255;
- }
- else
- {
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[2-i] = DIV255B8(s * pDataline[4-i-i]);
- }
-#else
- pScanline[0] = DIV255B8(s * pDataline[0]);
- pScanline[1] = DIV255B8(s * pDataline[2]);
- pScanline[2] = DIV255B8(s * pDataline[4]);
-#endif
- pScanline[3] = (mng_uint8)s;
- }
- }
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values and premultiply */
- if ((s = pDataline[3]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
-#ifdef MNG_BIGENDIAN_SUPPORTED
- *(mng_uint32*)pScanline = (*(mng_uint32*)pDataline) | 0x000000FF;
-#else
- pScanline[0] = pDataline[0];
- pScanline[1] = pDataline[1];
- pScanline[2] = pDataline[2];
- pScanline[3] = 255;
-#endif
- }
- else
- {
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[2-i] = DIV255B8(s * pDataline[2-i]);
- }
-#else
- pScanline[0] = DIV255B8(s * pDataline[0]);
- pScanline[1] = DIV255B8(s * pDataline[1]);
- pScanline[2] = DIV255B8(s * pDataline[2]);
-#endif
- pScanline[3] = (mng_uint8)s;
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- if ((s = pDataline[6]) != 0) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if (s == 255)
- { /* plain copy it */
- pScanline[0] = pDataline[0];
- pScanline[1] = pDataline[2];
- pScanline[2] = pDataline[4];
- pScanline[3] = 255;
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[2-i] = DIV255B8(s * pDataline[4-i-i] + t *
- pScanline[2-i]);
- }
- }
-#else
- pScanline[0] = DIV255B8(s * pDataline[0] + t * pScanline[0]);
- pScanline[1] = DIV255B8(s * pDataline[2] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[4] + t * pScanline[2]);
-#endif
- pScanline[3] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[3])));
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- if ((s = pDataline[3]) != 0) /* any opacity at all ? */
- { /* fully opaque ? */
- if (s == 255)
- { /* then simply copy the values */
-#ifdef MNG_BIGENDIAN_SUPPORTED
- *(mng_uint32*)pScanline = (*(mng_uint32*)pDataline) | 0x000000FF;
-#else
- pScanline[0] = pDataline[0];
- pScanline[1] = pDataline[1];
- pScanline[2] = pDataline[2];
- pScanline[3] = 255;
-#endif
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[2-i] = DIV255B8(s * pDataline[2-i] + t *
- pScanline[2-i]);
- }
- }
-#else
- pScanline[0] = DIV255B8(s * pDataline[0] + t * pScanline[0]);
- pScanline[1] = DIV255B8(s * pDataline[1] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[2] + t * pScanline[2]);
-#endif
- pScanline[3] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[3])));
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGBA8_PM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_rgba8_pm (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint32 s, t;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGBA8_PM, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values and premultiply */
- if ((s = pDataline[3]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
-#ifdef MNG_BIGENDIAN_SUPPORTED
- *(mng_uint32*)pScanline = (*(mng_uint32*)pDataline) | 0x000000FF;
-#else
- pScanline[0] = pDataline[0];
- pScanline[1] = pDataline[1];
- pScanline[2] = pDataline[2];
- pScanline[3] = 255;
-#endif
- }
- else
- {
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[2-i] = DIV255B8(s * pDataline[2-i]);
- }
-#else
- pScanline[0] = DIV255B8(s * pDataline[0]);
- pScanline[1] = DIV255B8(s * pDataline[1]);
- pScanline[2] = DIV255B8(s * pDataline[2]);
-#endif
- pScanline[3] = (mng_uint8)s;
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- if ((s = pDataline[3]) != 0) /* any opacity at all ? */
- { /* fully opaque ? */
- if (s == 255)
- { /* then simply copy the values */
-#ifdef MNG_BIGENDIAN_SUPPORTED
- *(mng_uint32*)pScanline = (*(mng_uint32*)pDataline) | 0x000000FF;
-#else
- pScanline[0] = pDataline[0];
- pScanline[1] = pDataline[1];
- pScanline[2] = pDataline[2];
- pScanline[3] = 255;
-#endif
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[2-i] = DIV255B8(s * pDataline[2-i] + t *
- pScanline[2-i]);
- }
- }
-#else
- pScanline[0] = DIV255B8(s * pDataline[0] + t * pScanline[0]);
- pScanline[1] = DIV255B8(s * pDataline[1] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[2] + t * pScanline[2]);
-#endif
- pScanline[3] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[3])));
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGBA8_PM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_RGBA8_PM */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_ARGB8
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_argb8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint16 iFGa16, iBGa16, iCa16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint16 iCr16, iCg16, iCb16;
- mng_uint8 iCr8, iCg8, iCb8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ARGB8, MNG_LC_START);
-#endif
-
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 3);
- else
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *pScanline = *(pDataline+6);
- *(pScanline+1) = *pDataline;
- *(pScanline+2) = *(pDataline+2);
- *(pScanline+3) = *(pDataline+4);
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *pScanline = *(pDataline+3);
- *(pScanline+1) = *pDataline;
- *(pScanline+2) = *(pDataline+1);
- *(pScanline+3) = *(pDataline+2);
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- iFGa16 = mng_get_uint16 (pDataline+6);
- iBGa16 = (mng_uint16)(*pScanline);
- iBGa16 = (mng_uint16)(iBGa16 << 8) | iBGa16;
-
- if (iFGa16) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa16 == 0xFFFF) || (iBGa16 == 0))
- { /* plain copy it */
- *pScanline = *(pDataline+6);
- *(pScanline+1) = *pDataline;
- *(pScanline+2) = *(pDataline+2);
- *(pScanline+3) = *(pDataline+4);
- }
- else
- {
- if (iBGa16 == 0xFFFF) /* background fully opaque ? */
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
- /* scale background up */
- iBGr16 = (mng_uint16)(*(pScanline+1));
- iBGg16 = (mng_uint16)(*(pScanline+2));
- iBGb16 = (mng_uint16)(*(pScanline+3));
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iFGa16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iFGa16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iFGa16, iBGb16);
- /* and return the composed values */
- /* alpha remains fully opaque !!! */
- *(pScanline+1) = (mng_uint8)(iFGr16 >> 8);
- *(pScanline+2) = (mng_uint8)(iFGg16 >> 8);
- *(pScanline+3) = (mng_uint8)(iFGb16 >> 8);
- }
- else
- { /* scale background up */
- iBGr16 = (mng_uint16)(*(pScanline+1));
- iBGg16 = (mng_uint16)(*(pScanline+2));
- iBGb16 = (mng_uint16)(*(pScanline+3));
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* let's blend */
- MNG_BLEND16 (mng_get_uint16 (pDataline ),
- mng_get_uint16 (pDataline+2),
- mng_get_uint16 (pDataline+4), iFGa16,
- iBGr16, iBGg16, iBGb16, iBGa16,
- iCr16, iCg16, iCb16, iCa16);
- /* and return the composed values */
- *pScanline = (mng_uint8)(iCa16 >> 8);
- *(pScanline+1) = (mng_uint8)(iCr16 >> 8);
- *(pScanline+2) = (mng_uint8)(iCg16 >> 8);
- *(pScanline+3) = (mng_uint8)(iCb16 >> 8);
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *pScanline;
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *pScanline = *(pDataline+3);
- *(pScanline+1) = *pDataline;
- *(pScanline+2) = *(pDataline+1);
- *(pScanline+3) = *(pDataline+2);
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do simple alpha composing */
- /* alpha itself remains fully opaque !!! */
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- *(pScanline+1), *(pScanline+2), *(pScanline+3), iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *pScanline = iCa8;
- *(pScanline+1) = iCr8;
- *(pScanline+2) = iCg8;
- *(pScanline+3) = iCb8;
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ARGB8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_argb8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint16 iFGa16, iBGa16, iCa16;
- mng_uint16 iFGg16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint16 iCr16, iCg16, iCb16;
- mng_uint8 iCr8, iCg8, iCb8;
- mng_uint8 iBps;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ARGB8, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *pScanline = *(pDataline+3*iBps);
- *(pScanline+1) = *pDataline;
- *(pScanline+2) = *(pDataline+iBps);
- *(pScanline+3) = *(pDataline+2*iBps);
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4*iBps;
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- iFGa16 = mng_get_uint16 (pDataline+6);
- iBGa16 = (mng_uint16)(*pScanline);
- iBGa16 = (mng_uint16)(iBGa16 << 8) | iBGa16;
-
- if (iFGa16) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa16 == 0xFFFF) || (iBGa16 == 0))
- { /* plain copy it */
- *pScanline = *(pDataline+6);
- *(pScanline+1) = *pDataline;
- *(pScanline+2) = *(pDataline+2);
- *(pScanline+3) = *(pDataline+4);
- }
- else
- {
- if (iBGa16 == 0xFFFF) /* background fully opaque ? */
- { /* get the proper values */
- int i;
- for (i=2; i >= 0; i--)
- {
- iFGg16 = mng_get_uint16 (pDataline+i+i);
- /* scale background up */
- iBGg16 = (mng_uint16)(*(pScanline+i+1));
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- /* now compose */
- MNG_COMPOSE16(iFGg16, iFGg16, iFGa16, iBGg16);
- /* and return the composed values */
- /* alpha remains fully opaque !!! */
- *(pScanline+i+1) = (mng_uint8)(iFGg16 >> 8);
- }
- }
- else
- { /* scale background up */
- iBGr16 = (mng_uint16)(*(pScanline+1));
- iBGg16 = (mng_uint16)(*(pScanline+2));
- iBGb16 = (mng_uint16)(*(pScanline+3));
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* let's blend */
- MNG_BLEND16 (mng_get_uint16 (pDataline ),
- mng_get_uint16 (pDataline+2),
- mng_get_uint16 (pDataline+4), iFGa16,
- iBGr16, iBGg16, iBGb16, iBGa16,
- iCr16, iCg16, iCb16, iCa16);
- /* and return the composed values */
- *pScanline = (mng_uint8)(iCa16 >> 8);
- *(pScanline+1) = (mng_uint8)(iCr16 >> 8);
- *(pScanline+2) = (mng_uint8)(iCg16 >> 8);
- *(pScanline+3) = (mng_uint8)(iCb16 >> 8);
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *pScanline;
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *pScanline = *(pDataline+3);
- *(pScanline+1) = *pDataline;
- *(pScanline+2) = *(pDataline+1);
- *(pScanline+3) = *(pDataline+2);
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do simple alpha composing */
- /* alpha itself remains fully opaque !!! */
- int i;
- for (i=2; i >= 0; i--)
- {
- MNG_COMPOSE8 (*(pScanline+i+1), *(pDataline+i), iFGa8, *(pScanline+i+1));
- }
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- *(pScanline+1), *(pScanline+2), *(pScanline+3), iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *pScanline = iCa8;
- *(pScanline+1) = iCr8;
- *(pScanline+2) = iCg8;
- *(pScanline+3) = iCb8;
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ARGB8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_argb8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint8 iCr8, iCg8, iCb8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ARGB8, MNG_LC_START);
-#endif
-
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *pScanline = *(pDataline+3);
- *(pScanline+1) = *pDataline;
- *(pScanline+2) = *(pDataline+1);
- *(pScanline+3) = *(pDataline+2);
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *pScanline;
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *pScanline = *(pDataline+3);
- *(pScanline+1) = *pDataline;
- *(pScanline+2) = *(pDataline+1);
- *(pScanline+3) = *(pDataline+2);
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do simple alpha composing */
- /* alpha itself remains fully opaque !!! */
-#ifdef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
- int i;
- for (i=2; i >= 0; i--)
- {
- MNG_COMPOSE8 (*(pScanline+i+1), *(pDataline+i), iFGa8, *(pScanline+i+1));
- }
-#else
- MNG_COMPOSE8 (*(pScanline+1), *pDataline, iFGa8, *(pScanline+1));
- MNG_COMPOSE8 (*(pScanline+2), *(pDataline+1), iFGa8, *(pScanline+2));
- MNG_COMPOSE8 (*(pScanline+3), *(pDataline+2), iFGa8, *(pScanline+3));
-#endif
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- *(pScanline+1), *(pScanline+2), *(pScanline+3), iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *pScanline = iCa8;
- *(pScanline+1) = iCr8;
- *(pScanline+2) = iCg8;
- *(pScanline+3) = iCb8;
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ARGB8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_ARGB8 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_ARGB8_PM
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_argb8_pm (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint32 s, t;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ARGB8_PM, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 3);
- else
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- if ((s = pDataline[6]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
- pScanline[0] = 255;
- pScanline[1] = pDataline[0];
- pScanline[2] = pDataline[2];
- pScanline[3] = pDataline[4];
- }
- else
- {
- pScanline[0] = (mng_uint8)s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[3-i] = DIV255B8(s * pDataline[4-i-i]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[0]);
- pScanline[2] = DIV255B8(s * pDataline[2]);
- pScanline[3] = DIV255B8(s * pDataline[4]);
-#endif
- }
- }
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values and premultiply */
- if ((s = pDataline[3]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
- pScanline[0] = 255;
- pScanline[1] = pDataline[0];
- pScanline[2] = pDataline[1];
- pScanline[3] = pDataline[2];
- }
- else
- {
- pScanline[0] = (mng_uint8)s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[3-i] = DIV255B8(s * pDataline[2-i]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[0]);
- pScanline[2] = DIV255B8(s * pDataline[1]);
- pScanline[3] = DIV255B8(s * pDataline[2]);
-#endif
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- if ((s = pDataline[6]) != 0) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if (s == 255)
- { /* plain copy it */
- pScanline[0] = 255;
- pScanline[1] = pDataline[0];
- pScanline[2] = pDataline[2];
- pScanline[3] = pDataline[4];
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
- pScanline[0] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[0])));
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[3-i] = DIV255B8(s * pDataline[4-i-i] + t *
- pScanline[3-i]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[0] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[2] + t * pScanline[2]);
- pScanline[3] = DIV255B8(s * pDataline[4] + t * pScanline[3]);
-#endif
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- if ((s = pDataline[3]) != 0) /* any opacity at all ? */
- { /* fully opaque ? */
- if (s == 255)
- { /* then simply copy the values */
- pScanline[0] = 255;
- pScanline[1] = pDataline[0];
- pScanline[2] = pDataline[1];
- pScanline[3] = pDataline[2];
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
- pScanline[0] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[0])));
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[3-i] = DIV255B8(s * pDataline[2-i] + t *
- pScanline[3-i]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[0] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[1] + t * pScanline[2]);
- pScanline[3] = DIV255B8(s * pDataline[2] + t * pScanline[3]);
-#endif
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ARGB8_PM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_argb8_pm (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint32 s, t;
- mng_uint8 iBps;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ARGB8_PM, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- if ((s = pDataline[6]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
- pScanline[0] = 255;
- pScanline[1] = pDataline[0];
- pScanline[2] = pDataline[2];
- pScanline[3] = pDataline[4];
- }
- else
- {
- pScanline[0] = (mng_uint8)s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[3-i] = DIV255B8(s * pDataline[4-i-i]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[0]);
- pScanline[2] = DIV255B8(s * pDataline[2]);
- pScanline[3] = DIV255B8(s * pDataline[4]);
-#endif
- }
- }
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values and premultiply */
- if ((s = pDataline[3]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
- pScanline[0] = 255;
- pScanline[1] = pDataline[0];
- pScanline[2] = pDataline[1];
- pScanline[3] = pDataline[2];
- }
- else
- {
- pScanline[0] = (mng_uint8)s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[3-i] = DIV255B8(s * pDataline[2-i]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[0]);
- pScanline[2] = DIV255B8(s * pDataline[1]);
- pScanline[3] = DIV255B8(s * pDataline[2]);
-#endif
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- if ((s = pDataline[6]) != 0) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if (s == 255)
- { /* plain copy it */
- pScanline[0] = 255;
- pScanline[1] = pDataline[0];
- pScanline[2] = pDataline[2];
- pScanline[3] = pDataline[4];
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
- pScanline[0] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[0])));
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[3-i] = DIV255B8(s * pDataline[4-i-i] + t *
- pScanline[3-i]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[0] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[2] + t * pScanline[2]);
- pScanline[3] = DIV255B8(s * pDataline[4] + t * pScanline[3]);
-#endif
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- if ((s = pDataline[3]) != 0) /* any opacity at all ? */
- { /* fully opaque ? */
- if (s == 255)
- { /* then simply copy the values */
- pScanline[0] = 255;
- pScanline[1] = pDataline[0];
- pScanline[2] = pDataline[1];
- pScanline[3] = pDataline[2];
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
- pScanline[0] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[0])));
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[3-i] = DIV255B8(s * pDataline[2-i] + t *
- pScanline[3-i]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[0] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[1] + t * pScanline[2]);
- pScanline[3] = DIV255B8(s * pDataline[2] + t * pScanline[3]);
-#endif
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ARGB8_PM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_argb8_pm (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint32 s, t;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ARGB8_PM, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values and premultiply */
- if ((s = pDataline[3]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
- pScanline[0] = 255;
- pScanline[1] = pDataline[0];
- pScanline[2] = pDataline[1];
- pScanline[3] = pDataline[2];
- }
- else
- {
- pScanline[0] = (mng_uint8)s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[3-i] = DIV255B8(s * pDataline[2-i]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[0]);
- pScanline[2] = DIV255B8(s * pDataline[1]);
- pScanline[3] = DIV255B8(s * pDataline[2]);
-#endif
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- if ((s = pDataline[3]) != 0) /* any opacity at all ? */
- { /* fully opaque ? */
- if (s == 255)
- { /* then simply copy the values */
- pScanline[0] = 255;
- pScanline[1] = pDataline[0];
- pScanline[2] = pDataline[1];
- pScanline[3] = pDataline[2];
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
- pScanline[0] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[0])));
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[3-i] = DIV255B8(s * pDataline[2-i] + t *
- pScanline[3-i]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[0] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[1] + t * pScanline[2]);
- pScanline[3] = DIV255B8(s * pDataline[2] + t * pScanline[3]);
-#endif
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ARGB8_PM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_ARGB8_PM */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_RGB8_A8
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_rgb8_a8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pAlphaline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint16 iFGa16, iBGa16, iCa16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint16 iCr16, iCg16, iCb16;
- mng_uint8 iCr8, iCg8, iCb8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB8_A8, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination rows */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- pAlphaline = (mng_uint8p)pData->fGetalphaline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination rows starting-point */
- pScanline = pScanline + (pData->iCol * 3) + (pData->iDestl * 3);
- pAlphaline = pAlphaline + pData->iCol + pData->iDestl;
-
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 3);
- else
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *(pDataline+4);
- *pAlphaline = *(pDataline+6);
-
- pScanline += (pData->iColinc * 3);
- pAlphaline += pData->iColinc;
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *(pDataline+2);
- *pAlphaline = *(pDataline+3);
-
- pScanline += (pData->iColinc * 3);
- pAlphaline += pData->iColinc;
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- iFGa16 = mng_get_uint16 (pDataline+6);
- iBGa16 = (mng_uint16)(*pAlphaline);
- iBGa16 = (mng_uint16)(iBGa16 << 8) | iBGa16;
-
- if (iFGa16) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa16 == 0xFFFF) || (iBGa16 == 0))
- { /* plain copy it */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *(pDataline+4);
- *pAlphaline = *(pDataline+6);
- }
- else
- {
- if (iBGa16 == 0xFFFF) /* background fully opaque ? */
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
- /* scale background up */
- iBGr16 = (mng_uint16)(*pScanline );
- iBGg16 = (mng_uint16)(*(pScanline+1));
- iBGb16 = (mng_uint16)(*(pScanline+2));
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iFGa16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iFGa16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iFGa16, iBGb16);
- /* and return the composed values */
- *pScanline = (mng_uint8)(iFGr16 >> 8);
- *(pScanline+1) = (mng_uint8)(iFGg16 >> 8);
- *(pScanline+2) = (mng_uint8)(iFGb16 >> 8);
- /* alpha remains fully opaque !!! */
- }
- else
- { /* scale background up */
- iBGr16 = (mng_uint16)(*pScanline );
- iBGg16 = (mng_uint16)(*(pScanline+1));
- iBGb16 = (mng_uint16)(*(pScanline+2));
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* let's blend */
- MNG_BLEND16 (mng_get_uint16 (pDataline ),
- mng_get_uint16 (pDataline+2),
- mng_get_uint16 (pDataline+4), iFGa16,
- iBGr16, iBGg16, iBGb16, iBGa16,
- iCr16, iCg16, iCb16, iCa16);
- /* and return the composed values */
- *pScanline = (mng_uint8)(iCr16 >> 8);
- *(pScanline+1) = (mng_uint8)(iCg16 >> 8);
- *(pScanline+2) = (mng_uint8)(iCb16 >> 8);
- *pAlphaline = (mng_uint8)(iCa16 >> 8);
- }
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pAlphaline += pData->iColinc;
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *pAlphaline;
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *(pDataline+2);
- *pAlphaline = *(pDataline+3);
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do alpha composing */
- MNG_COMPOSE8 (*pScanline, *pDataline, iFGa8, *pScanline );
- MNG_COMPOSE8 (*(pScanline+1), *(pDataline+1), iFGa8, *(pScanline+1));
- MNG_COMPOSE8 (*(pScanline+2), *(pDataline+2), iFGa8, *(pScanline+2));
- /* alpha remains fully opaque !!! */
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- *pScanline, *(pScanline+1), *(pScanline+2), iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *pScanline = iCr8;
- *(pScanline+1) = iCg8;
- *(pScanline+2) = iCb8;
- *pAlphaline = iCa8;
- }
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pAlphaline += pData->iColinc;
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB8_A8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_rgb8_a8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pAlphaline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint16 iFGa16, iBGa16, iCa16;
- mng_uint16 iFGg16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint16 iCr16, iCg16, iCb16;
- mng_uint8 iCr8, iCg8, iCb8;
- mng_uint8 iBps;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB8_A8, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination rows */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- pAlphaline = (mng_uint8p)pData->fGetalphaline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination rows starting-point */
- pScanline = pScanline + (pData->iCol * 3) + (pData->iDestl * 3);
- pAlphaline = pAlphaline + pData->iCol + pData->iDestl;
-
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+iBps);
- *(pScanline+2) = *(pDataline+2*iBps);
- *pAlphaline = *(pDataline+3*iBps);
-
- pScanline += (pData->iColinc * 3);
- pAlphaline += pData->iColinc;
- pDataline += 4*iBps;
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- iFGa16 = mng_get_uint16 (pDataline+6);
- iBGa16 = (mng_uint16)(*pAlphaline);
- iBGa16 = (mng_uint16)(iBGa16 << 8) | iBGa16;
-
- if (iFGa16) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa16 == 0xFFFF) || (iBGa16 == 0))
- { /* plain copy it */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *(pDataline+4);
- *pAlphaline = *(pDataline+6);
- }
- else
- {
- if (iBGa16 == 0xFFFF) /* background fully opaque ? */
- { /* get the proper values */
- int i;
- for (i=2; i >= 0; i--)
- {
- iFGg16 = mng_get_uint16 (pDataline+i+i);
- /* scale background up */
- iBGg16 = (mng_uint16)(*(pScanline+i));
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- /* now compose */
- MNG_COMPOSE16(iFGg16, iFGg16, iFGa16, iBGg16);
- /* and return the composed values */
- *(pScanline+i) = (mng_uint8)(iFGg16 >> 8);
- /* alpha remains fully opaque !!! */
- }
- }
- else
- { /* scale background up */
- iBGr16 = (mng_uint16)(*pScanline );
- iBGg16 = (mng_uint16)(*(pScanline+1));
- iBGb16 = (mng_uint16)(*(pScanline+2));
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* let's blend */
- MNG_BLEND16 (mng_get_uint16 (pDataline ),
- mng_get_uint16 (pDataline+2),
- mng_get_uint16 (pDataline+4), iFGa16,
- iBGr16, iBGg16, iBGb16, iBGa16,
- iCr16, iCg16, iCb16, iCa16);
- /* and return the composed values */
- *pScanline = (mng_uint8)(iCr16 >> 8);
- *(pScanline+1) = (mng_uint8)(iCg16 >> 8);
- *(pScanline+2) = (mng_uint8)(iCb16 >> 8);
- *pAlphaline = (mng_uint8)(iCa16 >> 8);
- }
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pAlphaline += pData->iColinc;
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *pAlphaline;
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *(pDataline+2);
- *pAlphaline = *(pDataline+3);
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do alpha composing */
- int i;
- for (i=2; i >= 0; i--)
- {
- MNG_COMPOSE8 (*(pScanline+i), *(pDataline+i), iFGa8, *(pScanline+i));
- }
- /* alpha remains fully opaque !!! */
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- *pScanline, *(pScanline+1), *(pScanline+2), iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *pScanline = iCr8;
- *(pScanline+1) = iCg8;
- *(pScanline+2) = iCb8;
- *pAlphaline = iCa8;
- }
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pAlphaline += pData->iColinc;
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB8_A8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_rgb8_a8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pAlphaline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint8 iCr8, iCg8, iCb8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB8_A8, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination rows */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- pAlphaline = (mng_uint8p)pData->fGetalphaline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination rows starting-point */
- pScanline = pScanline + (pData->iCol * 3) + (pData->iDestl * 3);
- pAlphaline = pAlphaline + pData->iCol + pData->iDestl;
-
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *(pDataline+2);
- *pAlphaline = *(pDataline+3);
-
- pScanline += (pData->iColinc * 3);
- pAlphaline += pData->iColinc;
- pDataline += 4;
- }
- }
- }
- else
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *pAlphaline;
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *pScanline = *pDataline;
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *(pDataline+2);
- *pAlphaline = *(pDataline+3);
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do alpha composing */
-#ifdef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
- int i;
- for (i=2; i >= 0; i--)
- {
- MNG_COMPOSE8 (*(pScanline+i), *(pDataline+i), iFGa8, *(pScanline+i));
- }
-#else
- MNG_COMPOSE8 (*pScanline, *pDataline, iFGa8, *pScanline );
- MNG_COMPOSE8 (*(pScanline+1), *(pDataline+1), iFGa8, *(pScanline+1));
- MNG_COMPOSE8 (*(pScanline+2), *(pDataline+2), iFGa8, *(pScanline+2));
-#endif
- /* alpha remains fully opaque !!! */
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- *pScanline, *(pScanline+1), *(pScanline+2), iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *pScanline = iCr8;
- *(pScanline+1) = iCg8;
- *(pScanline+2) = iCb8;
- *pAlphaline = iCa8;
- }
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pAlphaline += pData->iColinc;
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB8_A8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_RGB8_A8 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_BGR8
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_bgr8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint16 iA16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint8 iA8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR8, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol * 3) + (pData->iDestl * 3);
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + (pData->iSourcel / pData->iColinc) * 8;
- else
- pDataline = pDataline + (pData->iSourcel / pData->iColinc) * 4;
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *pScanline = *(pDataline+4);
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *pDataline;
-
- pScanline += (pData->iColinc * 3);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *pScanline = *(pDataline+2);
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *pDataline;
-
- pScanline += (pData->iColinc * 3);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha value */
- iA16 = mng_get_uint16 (pDataline+6);
-
- if (iA16) /* any opacity at all ? */
- {
- if (iA16 == 0xFFFF) /* fully opaque ? */
- { /* scale down by dropping the LSB */
- *pScanline = *(pDataline+4);
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *pDataline;
- }
- else
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
- /* scale background up */
- iBGr16 = (mng_uint16)(*(pScanline+2));
- iBGg16 = (mng_uint16)(*(pScanline+1));
- iBGb16 = (mng_uint16)(*pScanline );
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iA16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iA16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iA16, iBGb16);
- /* and return the composed values */
- *pScanline = (mng_uint8)(iFGb16 >> 8);
- *(pScanline+1) = (mng_uint8)(iFGg16 >> 8);
- *(pScanline+2) = (mng_uint8)(iFGr16 >> 8);
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *pScanline = *(pDataline+2);
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *pDataline;
- }
- else
- { /* do alpha composing */
- MNG_COMPOSE8 (*pScanline, *(pDataline+2), iA8, *pScanline );
- MNG_COMPOSE8 (*(pScanline+1), *(pDataline+1), iA8, *(pScanline+1));
- MNG_COMPOSE8 (*(pScanline+2), *pDataline, iA8, *(pScanline+2));
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_bgr8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint16 iA16;
- mng_uint16 iFGg16;
- mng_uint16 iBGg16;
- mng_uint8 iA8;
- mng_uint8 iBps;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR8, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol * 3) + (pData->iDestl * 3);
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *pScanline = *(pDataline+2*iBps);
- *(pScanline+1) = *(pDataline+iBps);
- *(pScanline+2) = *pDataline;
-
- pScanline += (pData->iColinc * 3);
- pDataline += 4*iBps;
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha value */
- iA16 = mng_get_uint16 (pDataline+6);
-
- if (iA16) /* any opacity at all ? */
- {
- if (iA16 == 0xFFFF) /* fully opaque ? */
- { /* scale down by dropping the LSB */
- *pScanline = *(pDataline+4);
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *pDataline;
- }
- else
- { /* get the proper values */
- int i;
- for (i=2; i >= 0; i--)
- {
- iFGg16 = mng_get_uint16 (pDataline+i+i);
- /* scale background up */
- iBGg16 = (mng_uint16)(*(pScanline+2-i));
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- /* now compose */
- MNG_COMPOSE16(iFGg16, iFGg16, iA16, iBGg16);
- /* and return the composed values */
- *(pScanline+2-i) = (mng_uint8)(iFGg16 >> 8);
- }
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *pScanline = *(pDataline+2);
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *pDataline;
- }
- else
- { /* do alpha composing */
- int i;
- for (i=2; i >= 0; i--)
- {
- MNG_COMPOSE8 (*(pScanline+i), *(pDataline+2-i), iA8, *(pScanline+i));
- }
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_bgr8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iA8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR8, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol * 3) + (pData->iDestl * 3);
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + (pData->iSourcel / pData->iColinc) * 4;
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *pScanline = *(pDataline+2);
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *pDataline;
-
- pScanline += (pData->iColinc * 3);
- pDataline += 4;
- }
- }
- }
- else
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *pScanline = *(pDataline+2);
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *pDataline;
- }
- else
- { /* do alpha composing */
-#ifdef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
- int i;
- for (i=2; i >= 0; i--)
- {
- MNG_COMPOSE8 (*(pScanline+i), *(pDataline+2-i), iA8, *(pScanline+i));
- }
-#else
- MNG_COMPOSE8 (*pScanline, *(pDataline+2), iA8, *pScanline );
- MNG_COMPOSE8 (*(pScanline+1), *(pDataline+1), iA8, *(pScanline+1));
- MNG_COMPOSE8 (*(pScanline+2), *pDataline, iA8, *(pScanline+2));
-#endif
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_BGR8 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_BGRX8
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_bgrx8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint16 iA16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint8 iA8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRX8, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + (pData->iSourcel / pData->iColinc) * 8;
- else
- pDataline = pDataline + (pData->iSourcel / pData->iColinc) * 4;
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *pScanline = *(pDataline+4);
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *pDataline;
- *(pScanline+3) = 0xFF; /* filler byte */
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *pScanline = *(pDataline+2);
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *pDataline;
- *(pScanline+3) = 0xFF; /* filler byte */
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha value */
- iA16 = mng_get_uint16 (pDataline+6);
-
- if (iA16) /* any opacity at all ? */
- {
- if (iA16 == 0xFFFF) /* fully opaque ? */
- { /* scale down by dropping the LSB */
- *pScanline = *(pDataline+4);
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *pDataline;
- *(pScanline+3) = 0xFF; /* filler byte */
- }
- else
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
- /* scale background up */
- iBGr16 = (mng_uint16)(*(pScanline+2));
- iBGg16 = (mng_uint16)(*(pScanline+1));
- iBGb16 = (mng_uint16)(*pScanline );
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iA16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iA16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iA16, iBGb16);
- /* and return the composed values */
- *pScanline = (mng_uint8)(iFGb16 >> 8);
- *(pScanline+1) = (mng_uint8)(iFGg16 >> 8);
- *(pScanline+2) = (mng_uint8)(iFGr16 >> 8);
- *(pScanline+3) = 0xFF; /* filler byte */
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *pScanline = *(pDataline+2);
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *pDataline;
- *(pScanline+3) = 0xFF; /* filler byte */
- }
- else
- { /* do alpha composing */
- MNG_COMPOSE8 (*pScanline, *(pDataline+2), iA8, *pScanline );
- MNG_COMPOSE8 (*(pScanline+1), *(pDataline+1), iA8, *(pScanline+1));
- MNG_COMPOSE8 (*(pScanline+2), *pDataline, iA8, *(pScanline+2));
- *(pScanline+3) = 0xFF; /* filler byte */
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRX8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_bgrx8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint16 iA16;
- mng_uint16 iFGg16;
- mng_uint16 iBGg16;
- mng_uint8 iA8;
- mng_uint8 iBps;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRX8, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *pScanline = *(pDataline+2*iBps);
- *(pScanline+1) = *(pDataline+iBps);
- *(pScanline+2) = *pDataline;
- *(pScanline+3) = 0xFF; /* filler byte */
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4*iBps;
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha value */
- iA16 = mng_get_uint16 (pDataline+6);
-
- if (iA16) /* any opacity at all ? */
- {
- if (iA16 == 0xFFFF) /* fully opaque ? */
- { /* scale down by dropping the LSB */
- *pScanline = *(pDataline+4);
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *pDataline;
- *(pScanline+3) = 0xFF; /* filler byte */
- }
- else
- { /* get the proper values */
- int i;
- for (i=2; i >= 0; i--)
- {
- iFGg16 = mng_get_uint16 (pDataline+i+i);
- /* scale background up */
- iBGg16 = (mng_uint16)(*(pScanline+2-i));
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- /* now compose */
- MNG_COMPOSE16(iFGg16, iFGg16, iA16, iBGg16);
- /* and return the composed values */
- *(pScanline+2-i) = (mng_uint8)(iFGg16 >> 8);
- }
- *(pScanline+3) = 0xFF; /* filler byte */
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *pScanline = *(pDataline+2);
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *pDataline;
- *(pScanline+3) = 0xFF; /* filler byte */
- }
- else
- { /* do alpha composing */
- int i;
- for (i=2; i >= 0; i--)
- {
- MNG_COMPOSE8 (*(pScanline+i), *(pDataline+2-i), iA8, *(pScanline+i));
- }
- *(pScanline+3) = 0xFF; /* filler byte */
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRX8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_bgrx8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iA8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRX8, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + (pData->iSourcel / pData->iColinc) * 4;
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *pScanline = *(pDataline+2);
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *pDataline;
- *(pScanline+3) = 0xFF; /* filler byte */
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *pScanline = *(pDataline+2);
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *pDataline;
- *(pScanline+3) = 0xFF; /* filler byte */
- }
- else
- { /* do alpha composing */
-#ifdef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
- int i;
- for (i=2; i >= 0; i--)
- {
- MNG_COMPOSE8 (*(pScanline+i), *(pDataline+2-i), iA8, *(pScanline+i));
- }
-#else
- MNG_COMPOSE8 (*pScanline, *(pDataline+2), iA8, *pScanline );
- MNG_COMPOSE8 (*(pScanline+1), *(pDataline+1), iA8, *(pScanline+1));
- MNG_COMPOSE8 (*(pScanline+2), *pDataline, iA8, *(pScanline+2));
-#endif
- *(pScanline+3) = 0xFF; /* filler byte */
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRX8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_BGRX8 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_BGRA8
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_bgra8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint16 iFGa16, iBGa16, iCa16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint16 iCr16, iCg16, iCb16;
- mng_uint8 iCr8, iCg8, iCb8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRA8, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 3);
- else
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *pScanline = *(pDataline+4);
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *pDataline;
- *(pScanline+3) = *(pDataline+6);
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *pScanline = *(pDataline+2);
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *pDataline;
- *(pScanline+3) = *(pDataline+3);
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- iFGa16 = mng_get_uint16 (pDataline+6);
- iBGa16 = (mng_uint16)(*(pScanline+3));
- iBGa16 = (mng_uint16)(iBGa16 << 8) | iBGa16;
-
- if (iFGa16) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa16 == 0xFFFF) || (iBGa16 == 0))
- { /* plain copy it */
- *pScanline = *(pDataline+4);
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *pDataline;
- *(pScanline+3) = *(pDataline+6);
- }
- else
- {
- if (iBGa16 == 0xFFFF) /* background fully opaque ? */
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
- /* scale background up */
- iBGr16 = (mng_uint16)(*(pScanline+2));
- iBGg16 = (mng_uint16)(*(pScanline+1));
- iBGb16 = (mng_uint16)(*pScanline );
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iFGa16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iFGa16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iFGa16, iBGb16);
- /* and return the composed values */
- *pScanline = (mng_uint8)(iFGb16 >> 8);
- *(pScanline+1) = (mng_uint8)(iFGg16 >> 8);
- *(pScanline+2) = (mng_uint8)(iFGr16 >> 8);
- /* alpha remains fully opaque !!! */
- }
- else
- { /* scale background up */
- iBGr16 = (mng_uint16)(*(pScanline+2));
- iBGg16 = (mng_uint16)(*(pScanline+1));
- iBGb16 = (mng_uint16)(*pScanline );
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* let's blend */
- MNG_BLEND16 (mng_get_uint16 (pDataline ),
- mng_get_uint16 (pDataline+2),
- mng_get_uint16 (pDataline+4), iFGa16,
- iBGr16, iBGg16, iBGb16, iBGa16,
- iCr16, iCg16, iCb16, iCa16);
- /* and return the composed values */
- *pScanline = (mng_uint8)(iCb16 >> 8);
- *(pScanline+1) = (mng_uint8)(iCg16 >> 8);
- *(pScanline+2) = (mng_uint8)(iCr16 >> 8);
- *(pScanline+3) = (mng_uint8)(iCa16 >> 8);
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *(pScanline+3);
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *pScanline = *(pDataline+2);
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *pDataline;
- *(pScanline+3) = *(pDataline+3);
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do alpha composing */
- MNG_COMPOSE8 (*pScanline, *(pDataline+2), iFGa8, *pScanline );
- MNG_COMPOSE8 (*(pScanline+1), *(pDataline+1), iFGa8, *(pScanline+1));
- MNG_COMPOSE8 (*(pScanline+2), *pDataline, iFGa8, *(pScanline+2));
- /* alpha remains fully opaque !!! */
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- *(pScanline+2), *(pScanline+1), *pScanline, iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *pScanline = iCb8;
- *(pScanline+1) = iCg8;
- *(pScanline+2) = iCr8;
- *(pScanline+3) = iCa8;
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_bgra8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint16 iFGa16, iBGa16, iCa16;
- mng_uint16 iFGg16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint16 iCr16, iCg16, iCb16;
- mng_uint8 iCr8, iCg8, iCb8;
- mng_uint8 iBps;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRA8, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *pScanline = *(pDataline+2*iBps);
- *(pScanline+1) = *(pDataline+iBps);
- *(pScanline+2) = *pDataline;
- *(pScanline+3) = *(pDataline+3*iBps);
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4*iBps;
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- iFGa16 = mng_get_uint16 (pDataline+6);
- iBGa16 = (mng_uint16)(*(pScanline+3));
- iBGa16 = (mng_uint16)(iBGa16 << 8) | iBGa16;
-
- if (iFGa16) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa16 == 0xFFFF) || (iBGa16 == 0))
- { /* plain copy it */
- *pScanline = *(pDataline+4);
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *pDataline;
- *(pScanline+3) = *(pDataline+6);
- }
- else
- {
- if (iBGa16 == 0xFFFF) /* background fully opaque ? */
- { /* get the proper values */
- int i;
- for (i=2; i >= 0; i--)
- {
- iFGg16 = mng_get_uint16 (pDataline+i+i);
- /* scale background up */
- iBGg16 = (mng_uint16)(*(pScanline+2-i));
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- /* now compose */
- MNG_COMPOSE16(iFGg16, iFGg16, iFGa16, iBGg16);
- /* and return the composed values */
- *(pScanline+2-i) = (mng_uint8)(iFGg16 >> 8);
- /* alpha remains fully opaque !!! */
- }
- }
- else
- { /* scale background up */
- iBGr16 = (mng_uint16)(*(pScanline+2));
- iBGg16 = (mng_uint16)(*(pScanline+1));
- iBGb16 = (mng_uint16)(*pScanline );
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* let's blend */
- MNG_BLEND16 (mng_get_uint16 (pDataline ),
- mng_get_uint16 (pDataline+2),
- mng_get_uint16 (pDataline+4), iFGa16,
- iBGr16, iBGg16, iBGb16, iBGa16,
- iCr16, iCg16, iCb16, iCa16);
- /* and return the composed values */
- *pScanline = (mng_uint8)(iCb16 >> 8);
- *(pScanline+1) = (mng_uint8)(iCg16 >> 8);
- *(pScanline+2) = (mng_uint8)(iCr16 >> 8);
- *(pScanline+3) = (mng_uint8)(iCa16 >> 8);
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *(pScanline+3);
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *pScanline = *(pDataline+2);
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *pDataline;
- *(pScanline+3) = *(pDataline+3);
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do alpha composing */
- int i;
- for (i=2; i >= 0; i--)
- {
- MNG_COMPOSE8 (*(pScanline+i), *(pDataline+2-i), iFGa8, *(pScanline+i));
- }
- /* alpha remains fully opaque !!! */
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- *(pScanline+2), *(pScanline+1), *pScanline, iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *pScanline = iCb8;
- *(pScanline+1) = iCg8;
- *(pScanline+2) = iCr8;
- *(pScanline+3) = iCa8;
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_bgra8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint8 iCr8, iCg8, iCb8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRA8, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *pScanline = *(pDataline+2);
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *pDataline;
- *(pScanline+3) = *(pDataline+3);
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *(pScanline+3);
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *pScanline = *(pDataline+2);
- *(pScanline+1) = *(pDataline+1);
- *(pScanline+2) = *pDataline;
- *(pScanline+3) = *(pDataline+3);
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do alpha composing */
-#ifdef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
- int i;
- for (i=2; i >= 0; i--)
- {
- MNG_COMPOSE8 (*(pScanline+i), *(pDataline+2-i), iFGa8, *(pScanline+i));
- }
-#else
- MNG_COMPOSE8 (*pScanline, *(pDataline+2), iFGa8, *pScanline );
- MNG_COMPOSE8 (*(pScanline+1), *(pDataline+1), iFGa8, *(pScanline+1));
- MNG_COMPOSE8 (*(pScanline+2), *pDataline, iFGa8, *(pScanline+2));
-#endif
- /* alpha remains fully opaque !!! */
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- *(pScanline+2), *(pScanline+1), *pScanline, iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *pScanline = iCb8;
- *(pScanline+1) = iCg8;
- *(pScanline+2) = iCr8;
- *(pScanline+3) = iCa8;
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_BGRA8 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_BGRA8_PM
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_bgra8_pm (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint32 s, t;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRA8PM, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 3);
- else
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- if ((s = pDataline[6]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
- pScanline[0] = pDataline[4];
- pScanline[1] = pDataline[2];
- pScanline[2] = pDataline[0];
- pScanline[3] = 255;
- }
- else
- {
- pScanline[0] = DIV255B8(s * pDataline[4]);
- pScanline[1] = DIV255B8(s * pDataline[2]);
- pScanline[2] = DIV255B8(s * pDataline[0]);
- pScanline[3] = (mng_uint8)s;
- }
- }
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values and premultiply */
- if ((s = pDataline[3]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
- pScanline[0] = pDataline[2];
- pScanline[1] = pDataline[1];
- pScanline[2] = pDataline[0];
- pScanline[3] = 255;
- }
- else
- {
- pScanline[0] = DIV255B8(s * pDataline[2]);
- pScanline[1] = DIV255B8(s * pDataline[1]);
- pScanline[2] = DIV255B8(s * pDataline[0]);
- pScanline[3] = (mng_uint8)s;
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- if ((s = pDataline[6]) != 0) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if (s == 255)
- { /* plain copy it */
- pScanline[0] = pDataline[4];
- pScanline[1] = pDataline[2];
- pScanline[2] = pDataline[0];
- pScanline[3] = 255;
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[i] = DIV255B8(s * pDataline[4-i-i] + t *
- pScanline[i]);
- }
- }
-#else
- pScanline[0] = DIV255B8(s * pDataline[4] + t * pScanline[0]);
- pScanline[1] = DIV255B8(s * pDataline[2] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[0] + t * pScanline[2]);
-#endif
- pScanline[3] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[3])));
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- if ((s = pDataline[3]) != 0) /* any opacity at all ? */
- { /* fully opaque ? */
- if (s == 255)
- { /* then simply copy the values */
- pScanline[0] = pDataline[2];
- pScanline[1] = pDataline[1];
- pScanline[2] = pDataline[0];
- pScanline[3] = 255;
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[i] = DIV255B8(s * pDataline[2-i] + t *
- pScanline[i]);
- }
- }
-#else
- pScanline[0] = DIV255B8(s * pDataline[2] + t * pScanline[0]);
- pScanline[1] = DIV255B8(s * pDataline[1] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[0] + t * pScanline[2]);
-#endif
- pScanline[3] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[3])));
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRA8PM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_bgra8_pm (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint32 s, t;
- mng_uint8 iBps;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRA8PM, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- if ((s = pDataline[6]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
- pScanline[0] = pDataline[4];
- pScanline[1] = pDataline[2];
- pScanline[2] = pDataline[0];
- pScanline[3] = 255;
- }
- else
- {
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[i] = DIV255B8(s * pDataline[4-i-i]);
- }
-#else
- pScanline[0] = DIV255B8(s * pDataline[4]);
- pScanline[1] = DIV255B8(s * pDataline[2]);
- pScanline[2] = DIV255B8(s * pDataline[0]);
-#endif
- pScanline[3] = (mng_uint8)s;
- }
- }
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values and premultiply */
- if ((s = pDataline[3]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
- pScanline[0] = pDataline[2];
- pScanline[1] = pDataline[1];
- pScanline[2] = pDataline[0];
- pScanline[3] = 255;
- }
- else
- {
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[i] = DIV255B8(s * pDataline[2-i]);
- }
-#else
- pScanline[0] = DIV255B8(s * pDataline[2]);
- pScanline[1] = DIV255B8(s * pDataline[1]);
- pScanline[2] = DIV255B8(s * pDataline[0]);
-#endif
- pScanline[3] = (mng_uint8)s;
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- if ((s = pDataline[6]) != 0) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if (s == 255)
- { /* plain copy it */
- pScanline[0] = pDataline[4];
- pScanline[1] = pDataline[2];
- pScanline[2] = pDataline[0];
- pScanline[3] = 255;
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[i] = DIV255B8(s * pDataline[4-i-i] + t *
- pScanline[i]);
- }
- }
-#else
- pScanline[0] = DIV255B8(s * pDataline[4] + t * pScanline[0]);
- pScanline[1] = DIV255B8(s * pDataline[2] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[0] + t * pScanline[2]);
-#endif
- pScanline[3] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[3])));
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- if ((s = pDataline[3]) != 0) /* any opacity at all ? */
- { /* fully opaque ? */
- if (s == 255)
- { /* then simply copy the values */
- pScanline[0] = pDataline[2];
- pScanline[1] = pDataline[1];
- pScanline[2] = pDataline[0];
- pScanline[3] = 255;
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[i] = DIV255B8(s * pDataline[2-i] + t *
- pScanline[i]);
- }
- }
-#else
- pScanline[0] = DIV255B8(s * pDataline[2] + t * pScanline[0]);
- pScanline[1] = DIV255B8(s * pDataline[1] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[0] + t * pScanline[2]);
-#endif
- pScanline[3] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[3])));
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRA8PM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_bgra8_pm (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint32 s, t;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRA8PM, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values and premultiply */
- if ((s = pDataline[3]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
- pScanline[0] = pDataline[2];
- pScanline[1] = pDataline[1];
- pScanline[2] = pDataline[0];
- pScanline[3] = 255;
- }
- else
- {
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[i] = DIV255B8(s * pDataline[2-i]);
- }
-#else
- pScanline[0] = DIV255B8(s * pDataline[2]);
- pScanline[1] = DIV255B8(s * pDataline[1]);
- pScanline[2] = DIV255B8(s * pDataline[0]);
-#endif
- pScanline[3] = (mng_uint8)s;
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- if ((s = pDataline[3]) != 0) /* any opacity at all ? */
- { /* fully opaque ? */
- if (s == 255)
- { /* then simply copy the values */
- pScanline[0] = pDataline[2];
- pScanline[1] = pDataline[1];
- pScanline[2] = pDataline[0];
- pScanline[3] = 255;
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[i] = DIV255B8(s * pDataline[2-i] + t *
- pScanline[i]);
- }
- }
-#else
- pScanline[0] = DIV255B8(s * pDataline[2] + t * pScanline[0]);
- pScanline[1] = DIV255B8(s * pDataline[1] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[0] + t * pScanline[2]);
-#endif
- pScanline[3] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[3])));
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRA8PM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_BGRA8_PM */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_ABGR8
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_abgr8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint16 iFGa16, iBGa16, iCa16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint16 iCr16, iCg16, iCb16;
- mng_uint8 iCr8, iCg8, iCb8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ABGR8, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 3);
- else
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *pScanline = *(pDataline+6);
- *(pScanline+1) = *(pDataline+4);
- *(pScanline+2) = *(pDataline+2);
- *(pScanline+3) = *pDataline;
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *pScanline = *(pDataline+3);
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *(pDataline+1);
- *(pScanline+3) = *pDataline;
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- iFGa16 = mng_get_uint16 (pDataline+6);
- iBGa16 = (mng_uint16)(*pScanline);
- iBGa16 = (mng_uint16)(iBGa16 << 8) | iBGa16;
-
- if (iFGa16) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa16 == 0xFFFF) || (iBGa16 == 0))
- { /* plain copy it */
- *pScanline = *(pDataline+6);
- *(pScanline+1) = *(pDataline+4);
- *(pScanline+2) = *(pDataline+2);
- *(pScanline+3) = *pDataline;
- }
- else
- {
- if (iBGa16 == 0xFFFF) /* background fully opaque ? */
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
- /* scale background up */
- iBGr16 = (mng_uint16)(*(pScanline+3));
- iBGg16 = (mng_uint16)(*(pScanline+2));
- iBGb16 = (mng_uint16)(*(pScanline+1));
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iFGa16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iFGa16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iFGa16, iBGb16);
- /* and return the composed values */
- /* alpha itself remains fully opaque !!! */
- *(pScanline+1) = (mng_uint8)(iFGb16 >> 8);
- *(pScanline+2) = (mng_uint8)(iFGg16 >> 8);
- *(pScanline+3) = (mng_uint8)(iFGr16 >> 8);
- }
- else
- { /* scale background up */
- iBGr16 = (mng_uint16)(*(pScanline+3));
- iBGg16 = (mng_uint16)(*(pScanline+2));
- iBGb16 = (mng_uint16)(*(pScanline+1));
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* let's blend */
- MNG_BLEND16 (mng_get_uint16 (pDataline ),
- mng_get_uint16 (pDataline+2),
- mng_get_uint16 (pDataline+4), iFGa16,
- iBGr16, iBGg16, iBGb16, iBGa16,
- iCr16, iCg16, iCb16, iCa16);
- /* and return the composed values */
- *pScanline = (mng_uint8)(iCa16 >> 8);
- *(pScanline+1) = (mng_uint8)(iCb16 >> 8);
- *(pScanline+2) = (mng_uint8)(iCg16 >> 8);
- *(pScanline+3) = (mng_uint8)(iCr16 >> 8);
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *pScanline;
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *pScanline = *(pDataline+3);
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *(pDataline+1);
- *(pScanline+3) = *pDataline;
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do simple alpha composing */
- /* alpha itself remains fully opaque !!! */
- MNG_COMPOSE8 (*(pScanline+1), *(pDataline+2), iFGa8, *(pScanline+1));
- MNG_COMPOSE8 (*(pScanline+2), *(pDataline+1), iFGa8, *(pScanline+2));
- MNG_COMPOSE8 (*(pScanline+3), *pDataline, iFGa8, *(pScanline+3));
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- *(pScanline+3), *(pScanline+2), *(pScanline+1), iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *pScanline = iCa8;
- *(pScanline+1) = iCb8;
- *(pScanline+2) = iCg8;
- *(pScanline+3) = iCr8;
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ABGR8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_abgr8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint16 iFGa16, iBGa16, iCa16;
- mng_uint16 iFGg16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint16 iCr16, iCg16, iCb16;
- mng_uint8 iCr8, iCg8, iCb8;
- mng_uint8 iBps;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ABGR8, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *pScanline = *(pDataline+3*iBps);
- *(pScanline+1) = *(pDataline+2*iBps);
- *(pScanline+2) = *(pDataline+iBps);
- *(pScanline+3) = *pDataline;
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4*iBps;
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- iFGa16 = mng_get_uint16 (pDataline+6);
- iBGa16 = (mng_uint16)(*pScanline);
- iBGa16 = (mng_uint16)(iBGa16 << 8) | iBGa16;
-
- if (iFGa16) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa16 == 0xFFFF) || (iBGa16 == 0))
- { /* plain copy it */
- *pScanline = *(pDataline+6);
- *(pScanline+1) = *(pDataline+4);
- *(pScanline+2) = *(pDataline+2);
- *(pScanline+3) = *pDataline;
- }
- else
- {
- if (iBGa16 == 0xFFFF) /* background fully opaque ? */
- { /* get the proper values */
- int i;
- for (i=2; i >= 0; i--)
- {
- iFGg16 = mng_get_uint16 (pDataline+i+i);
- /* scale background up */
- iBGg16 = (mng_uint16)(*(pScanline+3-i));
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- /* now compose */
- MNG_COMPOSE16(iFGg16, iFGg16, iFGa16, iBGg16);
- /* and return the composed values */
- /* alpha itself remains fully opaque !!! */
- *(pScanline+3-i) = (mng_uint8)(iFGg16 >> 8);
- }
- }
- else
- { /* scale background up */
- iBGr16 = (mng_uint16)(*(pScanline+3));
- iBGg16 = (mng_uint16)(*(pScanline+2));
- iBGb16 = (mng_uint16)(*(pScanline+1));
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* let's blend */
- MNG_BLEND16 (mng_get_uint16 (pDataline ),
- mng_get_uint16 (pDataline+2),
- mng_get_uint16 (pDataline+4), iFGa16,
- iBGr16, iBGg16, iBGb16, iBGa16,
- iCr16, iCg16, iCb16, iCa16);
- /* and return the composed values */
- *pScanline = (mng_uint8)(iCa16 >> 8);
- *(pScanline+1) = (mng_uint8)(iCb16 >> 8);
- *(pScanline+2) = (mng_uint8)(iCg16 >> 8);
- *(pScanline+3) = (mng_uint8)(iCr16 >> 8);
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *pScanline;
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *pScanline = *(pDataline+3);
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *(pDataline+1);
- *(pScanline+3) = *pDataline;
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do simple alpha composing */
- /* alpha itself remains fully opaque !!! */
- int i;
- for (i=2; i >= 0; i--)
- {
- MNG_COMPOSE8 (*(pScanline+i+1), *(pDataline+2-i), iFGa8, *(pScanline+i+1));
- }
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- *(pScanline+3), *(pScanline+2), *(pScanline+1), iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *pScanline = iCa8;
- *(pScanline+1) = iCb8;
- *(pScanline+2) = iCg8;
- *(pScanline+3) = iCr8;
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ABGR8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_abgr8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint8 iCr8, iCg8, iCb8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ABGR8, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *pScanline = *(pDataline+3);
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *(pDataline+1);
- *(pScanline+3) = *pDataline;
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *pScanline;
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *pScanline = *(pDataline+3);
- *(pScanline+1) = *(pDataline+2);
- *(pScanline+2) = *(pDataline+1);
- *(pScanline+3) = *pDataline;
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do simple alpha composing */
- /* alpha itself remains fully opaque !!! */
-#ifdef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
- int i;
- for (i=2; i >= 0; i--)
- {
- MNG_COMPOSE8 (*(pScanline+i+1), *(pDataline+2-i), iFGa8, *(pScanline+i+1));
- }
-#else
- MNG_COMPOSE8 (*(pScanline+1), *(pDataline+2), iFGa8, *(pScanline+1));
- MNG_COMPOSE8 (*(pScanline+2), *(pDataline+1), iFGa8, *(pScanline+2));
- MNG_COMPOSE8 (*(pScanline+3), *pDataline, iFGa8, *(pScanline+3));
-#endif
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- *(pScanline+3), *(pScanline+2), *(pScanline+1), iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *pScanline = iCa8;
- *(pScanline+1) = iCb8;
- *(pScanline+2) = iCg8;
- *(pScanline+3) = iCr8;
- }
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ABGR8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_ABGR8 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_ABGR8_PM
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_abgr8_pm (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint32 s, t;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ABGR8_PM, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 3);
- else
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- if ((s = pDataline[6]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
- pScanline[0] = 255;
- pScanline[1] = pDataline[4];
- pScanline[2] = pDataline[2];
- pScanline[3] = pDataline[0];
- }
- else
- {
- pScanline[0] = (mng_uint8)s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[i+1] = DIV255B8(s * pDataline[4-i-i]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[4]);
- pScanline[2] = DIV255B8(s * pDataline[2]);
- pScanline[3] = DIV255B8(s * pDataline[0]);
-#endif
- }
- }
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values and premultiply */
- if ((s = pDataline[3]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
- pScanline[0] = 255;
- pScanline[1] = pDataline[2];
- pScanline[2] = pDataline[1];
- pScanline[3] = pDataline[0];
- }
- else
- {
- pScanline[0] = (mng_uint8)s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[i+1] = DIV255B8(s * pDataline[2-i]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[2]);
- pScanline[2] = DIV255B8(s * pDataline[1]);
- pScanline[3] = DIV255B8(s * pDataline[0]);
-#endif
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- if ((s = pDataline[6]) != 0) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if (s == 255)
- { /* plain copy it */
- pScanline[0] = 255;
- pScanline[1] = pDataline[4];
- pScanline[2] = pDataline[2];
- pScanline[3] = pDataline[0];
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
- pScanline[0] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[0])));
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[i+1] = DIV255B8(s * pDataline[4-i-i] + t *
- pScanline[i+1]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[4] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[2] + t * pScanline[2]);
- pScanline[3] = DIV255B8(s * pDataline[0] + t * pScanline[3]);
-#endif
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- if ((s = pDataline[3]) != 0) /* any opacity at all ? */
- { /* fully opaque ? */
- if (s == 255)
- { /* then simply copy the values */
- pScanline[0] = 255;
- pScanline[1] = pDataline[2];
- pScanline[2] = pDataline[1];
- pScanline[3] = pDataline[0];
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
- pScanline[0] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[0])));
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[i+1] = DIV255B8(s * pDataline[2-i] + t *
- pScanline[i+1]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[2] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[1] + t * pScanline[2]);
- pScanline[3] = DIV255B8(s * pDataline[0] + t * pScanline[3]);
-#endif
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ABGR8_PM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_abgr8_pm (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint32 s, t;
- mng_uint8 iBps;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ABGR8_PM, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- if ((s = pDataline[6]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
- pScanline[0] = 255;
- pScanline[1] = pDataline[4];
- pScanline[2] = pDataline[2];
- pScanline[3] = pDataline[0];
- }
- else
- {
- pScanline[0] = (mng_uint8)s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[i+1] = DIV255B8(s * pDataline[4-i-i]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[4]);
- pScanline[2] = DIV255B8(s * pDataline[2]);
- pScanline[3] = DIV255B8(s * pDataline[0]);
-#endif
- }
- }
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values and premultiply */
- if ((s = pDataline[3]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
- pScanline[0] = 255;
- pScanline[1] = pDataline[2];
- pScanline[2] = pDataline[1];
- pScanline[3] = pDataline[0];
- }
- else
- {
- pScanline[0] = (mng_uint8)s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[i+1] = DIV255B8(s * pDataline[2-i]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[2]);
- pScanline[2] = DIV255B8(s * pDataline[1]);
- pScanline[3] = DIV255B8(s * pDataline[0]);
-#endif
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- if ((s = pDataline[6]) != 0) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if (s == 255)
- { /* plain copy it */
- pScanline[0] = 255;
- pScanline[1] = pDataline[4];
- pScanline[2] = pDataline[2];
- pScanline[3] = pDataline[0];
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
- pScanline[0] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[0])));
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[i+1] = DIV255B8(s * pDataline[4-i-i] + t *
- pScanline[i+1]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[4] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[2] + t * pScanline[2]);
- pScanline[3] = DIV255B8(s * pDataline[0] + t * pScanline[3]);
-#endif
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- if ((s = pDataline[3]) != 0) /* any opacity at all ? */
- { /* fully opaque ? */
- if (s == 255)
- { /* then simply copy the values */
- pScanline[0] = 255;
- pScanline[1] = pDataline[2];
- pScanline[2] = pDataline[1];
- pScanline[3] = pDataline[0];
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
- pScanline[0] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[0])));
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[i+1] = DIV255B8(s * pDataline[2-i] + t *
- pScanline[i+1]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[2] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[1] + t * pScanline[2]);
- pScanline[3] = DIV255B8(s * pDataline[0] + t * pScanline[3]);
-#endif
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ABGR8_PM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_abgr8_pm (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint32 s, t;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ABGR8_PM, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl << 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values and premultiply */
- if ((s = pDataline[3]) == 0)
- *(mng_uint32*) pScanline = 0; /* set all components = 0 */
- else
- {
- if (s == 255)
- {
- pScanline[0] = 255;
- pScanline[1] = pDataline[2];
- pScanline[2] = pDataline[1];
- pScanline[3] = pDataline[0];
- }
- else
- {
- pScanline[0] = (mng_uint8)s;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[i+1] = DIV255B8(s * pDataline[2-i]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[2]);
- pScanline[2] = DIV255B8(s * pDataline[1]);
- pScanline[3] = DIV255B8(s * pDataline[0]);
-#endif
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- if ((s = pDataline[3]) != 0) /* any opacity at all ? */
- { /* fully opaque ? */
- if (s == 255)
- { /* then simply copy the values */
- pScanline[0] = 255;
- pScanline[1] = pDataline[2];
- pScanline[2] = pDataline[1];
- pScanline[3] = pDataline[0];
- }
- else
- { /* now blend (premultiplied) */
- t = 255 - s;
- pScanline[0] = (mng_uint8)(255 - DIV255B8(t * (255 - pScanline[0])));
-#ifdef MNG_OPTIMIZE_FOOTPRINT_DIV
- {
- int i;
- for (i=2; i >= 0; i--)
- {
- pScanline[i+1] = DIV255B8(s * pDataline[2-i] + t *
- pScanline[i+1]);
- }
- }
-#else
- pScanline[1] = DIV255B8(s * pDataline[2] + t * pScanline[1]);
- pScanline[2] = DIV255B8(s * pDataline[1] + t * pScanline[2]);
- pScanline[3] = DIV255B8(s * pDataline[0] + t * pScanline[3]);
-#endif
- }
- }
-
- pScanline += (pData->iColinc << 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_ABGR8_PM, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_ABGR8_PM */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_BGR565
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_bgr565 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint16 iA16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint8 iA8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR565, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol * 2) + (pData->iDestl * 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 3);
- else
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline))&0xF8 ) | ( (*(pDataline+2)>>5) ) );
- *pScanline = (mng_uint8)( ( (*(pDataline+4)) >>3) | ( (*(pDataline+2)&0xFC) << 3) );
-
- pScanline += (pData->iColinc * 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline))&0xF8 ) | ( (*(pDataline+1)>>5 ) ) );
- *pScanline = (mng_uint8)( ( *(pDataline+2) >>3 ) | ( (*(pDataline+1)&0xFC ) << 3) );
-
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
-
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA16 = mng_get_uint16 (pDataline+6);
-
- if (iA16) /* any opacity at all ? */
- {
- if (iA16 == 0xFFFF) /* fully opaque ? */
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( (*(pDataline))&0xF8 ) | (mng_uint8)( (*(pDataline+2)>>5 ) );
- *pScanline = (mng_uint8)( (*(pDataline+4)) >>3) | (mng_uint8)( (*(pDataline+2)&0xFC) << 3);
- }
- else
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
- /* scale background up */
-
- iBGb16 = (mng_uint16)( (*(pScanline+1)) & 0xF8 );
- iBGg16 = (mng_uint16)( (*(pScanline+1) << 5) | (((*(pScanline )) & 0xE0) >>3 ) );
- iBGr16 = (mng_uint16)( (*(pScanline )) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iA16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iA16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iA16, iBGb16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8) ( ( (iFGr16 >> 8)&0xF8 ) | ( (mng_uint8)(iFGg16>>8) >> 5) );
- *pScanline = (mng_uint8) ( ( (iFGb16>>11) ) | (((mng_uint8)(iFGg16>>8)&0xFC) << 3) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline)) &0xF8 ) | (*(pDataline+1) >>5 ) );
- *pScanline = (mng_uint8)( ( ((*(pDataline+2))>>3) ) | ((*(pDataline+1)&0xFC) << 3) );
- }
- else
- { /* do alpha composing */
- mng_uint8 iRed, iGreen, iBlue;
-
- iRed = (mng_uint8) ( *(pScanline+1) & 0xF8 );
- iGreen = (mng_uint8) ( (*(pScanline+1) << 5) | ( ((*pScanline) & 0xE0)>>3 ) );
- iBlue = (mng_uint8) ( (*pScanline << 3) );
-
- MNG_COMPOSE8 (iRed, *pDataline, iA8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iA8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+2), iA8, iBlue );
-
- *(pScanline+1) = (mng_uint8) ( ( iRed & 0xF8 ) | (iGreen>>5) );
- *pScanline = (mng_uint8) ( ( iBlue >> 3 ) | ( (iGreen & 0xFC) << 3) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR565, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_bgr565 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint16 iA16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint8 iA8;
- mng_uint8 iBps;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR565, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol * 2) + (pData->iDestl * 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline))&0xF8 ) |
- ( (*(pDataline+iBps)>>5) ) );
- *pScanline = (mng_uint8)( ( (*(pDataline+2*iBps)) >>3) |
- ( (*(pDataline+iBps)&0xFC) << 3) );
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4*iBps;
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
-
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA16 = mng_get_uint16 (pDataline+6);
-
- if (iA16) /* any opacity at all ? */
- {
- if (iA16 == 0xFFFF) /* fully opaque ? */
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( (*(pDataline))&0xF8 ) | (mng_uint8)( (*(pDataline+2)>>5 ) );
- *pScanline = (mng_uint8)( (*(pDataline+4)) >>3) | (mng_uint8)( (*(pDataline+2)&0xFC) << 3);
- }
- else
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
- /* scale background up */
-
- iBGb16 = (mng_uint16)( (*(pScanline+1)) & 0xF8 );
- iBGg16 = (mng_uint16)( (*(pScanline+1) << 5) | (((*(pScanline )) & 0xE0) >>3 ) );
- iBGr16 = (mng_uint16)( (*(pScanline )) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iA16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iA16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iA16, iBGb16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8) ( ( (iFGr16 >> 8)&0xF8 ) | ( (mng_uint8)(iFGg16>>8) >> 5) );
- *pScanline = (mng_uint8) ( ( (iFGb16>>11) ) | (((mng_uint8)(iFGg16>>8)&0xFC) << 3) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline)) &0xF8 ) | (*(pDataline+1) >>5 ) );
- *pScanline = (mng_uint8)( ( ((*(pDataline+2))>>3) ) | ((*(pDataline+1)&0xFC) << 3) );
- }
- else
- { /* do alpha composing */
- mng_uint8 iRed, iGreen, iBlue;
-
- iRed = (mng_uint8) ( *(pScanline+1) & 0xF8 );
- iGreen = (mng_uint8) ( (*(pScanline+1) << 5) | ( ((*pScanline) & 0xE0)>>3 ) );
- iBlue = (mng_uint8) ( (*pScanline << 3) );
-
- MNG_COMPOSE8 (iRed, *pDataline, iA8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iA8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+2), iA8, iBlue );
-
- *(pScanline+1) = (mng_uint8) ( ( iRed & 0xF8 ) | (iGreen>>5) );
- *pScanline = (mng_uint8) ( ( iBlue >> 3 ) | ( (iGreen & 0xFC) << 3) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR565, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_bgr565 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iA8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR565, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol * 2) + (pData->iDestl * 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline))&0xF8 ) | ( (*(pDataline+1)>>5 ) ) );
- *pScanline = (mng_uint8)( ( *(pDataline+2) >>3 ) | ( (*(pDataline+1)&0xFC ) << 3) );
-
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline)) &0xF8 ) | (*(pDataline+1) >>5 ) );
- *pScanline = (mng_uint8)( ( ((*(pDataline+2))>>3) ) | ((*(pDataline+1)&0xFC) << 3) );
- }
- else
- { /* do alpha composing */
- mng_uint8 iRed, iGreen, iBlue;
-
- iRed = (mng_uint8) ( *(pScanline+1) & 0xF8 );
- iGreen = (mng_uint8) ( (*(pScanline+1) << 5) | ( ((*pScanline) & 0xE0)>>3 ) );
- iBlue = (mng_uint8) ( (*pScanline << 3) );
-
- MNG_COMPOSE8 (iRed, *pDataline, iA8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iA8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+2), iA8, iBlue );
-
- *(pScanline+1) = (mng_uint8) ( ( iRed & 0xF8 ) | (iGreen>>5) );
- *pScanline = (mng_uint8) ( ( iBlue >> 3 ) | ( (iGreen & 0xFC) << 3) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR565, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_BGR565 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_RGB565
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_rgb565 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint16 iA16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint8 iA8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB565, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol * 2) + (pData->iDestl * 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 3);
- else
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ( ( *(pDataline+4)) & 0xF8) | (*(pDataline+2) >> 5 ) );
- *pScanline = (mng_uint8)( ( ( *(pDataline )) >> 3 ) | ((*(pDataline+2) & 0xFC) << 3) );
-
- pScanline += (pData->iColinc * 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline+2)) & 0xF8) | (*(pDataline+1) >> 5 ) );
- *pScanline = (mng_uint8)( ( *(pDataline ) >> 3 ) | ((*(pDataline+1) & 0xFC) << 3) );
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
-
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA16 = mng_get_uint16 (pDataline+6);
-
- if (iA16) /* any opacity at all ? */
- {
- if (iA16 == 0xFFFF) /* fully opaque ? */
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline+4)) & 0xF8) | (*(pDataline+2)>>5) );
- *pScanline = (mng_uint8)( ( (*(pDataline )) >> 3 ) | ((*(pDataline+2)&0xFC) << 3) );
- }
- else
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
-
- /* scale background up */
- iBGr16 = (mng_uint8)( *(pScanline+1) & 0xF8 );
- iBGg16 = (mng_uint8)( (*(pScanline+1) << 5) | ( ((*pScanline) & 0xE0) >> 3 ) );
- iBGb16 = (mng_uint8)( *(pScanline ) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iA16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iA16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iA16, iBGb16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8)( (mng_uint8)((iFGb16 >> 8) &0xF8) | ( (mng_uint8)(iFGg16 >> 8) >> 5 ) );
- *pScanline = (mng_uint8)( (mng_uint8) (iFGr16 >>11) | ( ( (mng_uint8)(iFGg16 >> 8) & 0xFC) << 3) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline+2)) & 0xF8) | ( *(pDataline+1) >> 5 ) );
- *pScanline = (mng_uint8)( ( (*(pDataline )) >> 3 ) | ( (*(pDataline+1) & 0xFC) << 3 ) );
- }
- else
- { /* do alpha composing */
- mng_uint8 iRed, iGreen, iBlue;
-
- iRed = (mng_uint8)( *(pScanline+1) & 0xF8);
- iGreen = (mng_uint8)( ( *(pScanline+1) << 5 ) | ( ( (*pScanline)&0xE0)>>3 ) );
- iBlue = (mng_uint8)( *(pScanline ) << 3 );
-
- MNG_COMPOSE8 (iRed, *(pDataline+2), iA8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iA8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+0), iA8, iBlue );
-
- *(pScanline+1) = (mng_uint8)( ( iRed & 0xF8) | ( iGreen >> 5 ) );
- *pScanline = (mng_uint8)( (iBlue >> 3 ) | ( (iGreen & 0xFC) << 3) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB565, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_rgb565 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint16 iA16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint8 iA8;
- mng_uint8 iBps;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB565, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol * 2) + (pData->iDestl * 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ( ( *(pDataline+2*iBps)) & 0xF8) |
- (*(pDataline+iBps) >> 5 ) );
- *pScanline = (mng_uint8)( ( ( *(pDataline )) >> 3 ) |
- ((*(pDataline+iBps) & 0xFC) << 3) );
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4*iBps;
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
-
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA16 = mng_get_uint16 (pDataline+6);
-
- if (iA16) /* any opacity at all ? */
- {
- if (iA16 == 0xFFFF) /* fully opaque ? */
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline+4)) & 0xF8) | (*(pDataline+2)>>5) );
- *pScanline = (mng_uint8)( ( (*(pDataline )) >> 3 ) | ((*(pDataline+2)&0xFC) << 3) );
- }
- else
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
-
- /* scale background up */
- iBGr16 = (mng_uint8)( *(pScanline+1) & 0xF8 );
- iBGg16 = (mng_uint8)( (*(pScanline+1) << 5) | ( ((*pScanline) & 0xE0) >> 3 ) );
- iBGb16 = (mng_uint8)( *(pScanline ) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iA16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iA16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iA16, iBGb16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8)( (mng_uint8)((iFGb16 >> 8) &0xF8) | ( (mng_uint8)(iFGg16 >> 8) >> 5 ) );
- *pScanline = (mng_uint8)( (mng_uint8) (iFGr16 >>11) | ( ( (mng_uint8)(iFGg16 >> 8) & 0xFC) << 3) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline+2)) & 0xF8) | ( *(pDataline+1) >> 5 ) );
- *pScanline = (mng_uint8)( ( (*(pDataline )) >> 3 ) | ( (*(pDataline+1) & 0xFC) << 3 ) );
- }
- else
- { /* do alpha composing */
- mng_uint8 iRed, iGreen, iBlue;
-
- iRed = (mng_uint8)( *(pScanline+1) & 0xF8);
- iGreen = (mng_uint8)( ( *(pScanline+1) << 5 ) | ( ( (*pScanline)&0xE0)>>3 ) );
- iBlue = (mng_uint8)( *(pScanline ) << 3 );
-
- MNG_COMPOSE8 (iRed, *(pDataline+2), iA8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iA8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+0), iA8, iBlue );
-
- *(pScanline+1) = (mng_uint8)( ( iRed & 0xF8) | ( iGreen >> 5 ) );
- *pScanline = (mng_uint8)( (iBlue >> 3 ) | ( (iGreen & 0xFC) << 3) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB565, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_rgb565 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iA8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB565, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol * 2) + (pData->iDestl * 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline+2)) & 0xF8) | (*(pDataline+1) >> 5 ) );
- *pScanline = (mng_uint8)( ( *(pDataline ) >> 3 ) | ((*(pDataline+1) & 0xFC) << 3) );
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline+2)) & 0xF8) | ( *(pDataline+1) >> 5 ) );
- *pScanline = (mng_uint8)( ( (*(pDataline )) >> 3 ) | ( (*(pDataline+1) & 0xFC) << 3 ) );
- }
- else
- { /* do alpha composing */
- mng_uint8 iRed, iGreen, iBlue;
-
- iRed = (mng_uint8)( *(pScanline+1) & 0xF8);
- iGreen = (mng_uint8)( ( *(pScanline+1) << 5 ) | ( ( (*pScanline)&0xE0)>>3 ) );
- iBlue = (mng_uint8)( *(pScanline ) << 3 );
-
- MNG_COMPOSE8 (iRed, *(pDataline+2), iA8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iA8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+0), iA8, iBlue );
-
- *(pScanline+1) = (mng_uint8)( ( iRed & 0xF8) | ( iGreen >> 5 ) );
- *pScanline = (mng_uint8)( (iBlue >> 3 ) | ( (iGreen & 0xFC) << 3) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB565, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_RGB565 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_BGRA565
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_bgra565 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint16 iFGa16, iBGa16, iCa16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint16 iCr16, iCg16, iCb16;
- mng_uint8 iCr8, iCg8, iCb8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRA565, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl * 3);
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 3);
- else
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline))&0xF8 ) | ( (*(pDataline+2)>>5) ) );
- *pScanline = (mng_uint8)( ( (*(pDataline+4)) >>3) | ( (*(pDataline+2)&0xFC) << 3) );
- *(pScanline+2) = *(pDataline+6);
-
- pScanline += (pData->iColinc * 3);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline))&0xF8 ) | ( (*(pDataline+1)>>5 ) ) );
- *pScanline = (mng_uint8)( ( *(pDataline+2) >>3 ) | ( (*(pDataline+1)&0xFC ) << 3) );
- *(pScanline+2) = *(pDataline+3);
-
- pScanline += (pData->iColinc * 3);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- iFGa16 = mng_get_uint16 (pDataline+6);
- iBGa16 = (mng_uint16)(*(pScanline+2));
- iBGa16 = (mng_uint16)(iBGa16 << 8) | iBGa16;
-
- if (iFGa16) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa16 == 0xFFFF) || (iBGa16 == 0))
- { /* plain copy it */
- *(pScanline+1) = (mng_uint8)( (*(pDataline))&0xF8 ) | (mng_uint8)( (*(pDataline+2)>>5 ) );
- *pScanline = (mng_uint8)( (*(pDataline+4)) >>3) | (mng_uint8)( (*(pDataline+2)&0xFC) << 3);
- *(pScanline+2) = *(pDataline+6);
- }
- else
- {
- if (iBGa16 == 0xFFFF) /* background fully opaque ? */
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
- /* scale background up */
- iBGb16 = (mng_uint16)( (*(pScanline+1)) & 0xF8 );
- iBGg16 = (mng_uint16)( (*(pScanline+1) << 5) | (((*(pScanline )) & 0xE0) >>3 ) );
- iBGr16 = (mng_uint16)( (*(pScanline )) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
-
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iFGa16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iFGa16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iFGa16, iBGb16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8) ( ( (iFGr16 >> 8)&0xF8 ) | ( (mng_uint8)(iFGg16>>8) >> 5) );
- *pScanline = (mng_uint8) ( ( (iFGb16>>11) ) | (((mng_uint8)(iFGg16>>8)&0xFC) << 3) );
- }
- else
- { /* scale background up */
- iBGb16 = (mng_uint16)( (*(pScanline+1)) & 0xF8 );
- iBGg16 = (mng_uint16)( (*(pScanline+1) << 5) | (((*(pScanline )) & 0xE0) >>3 ) );
- iBGr16 = (mng_uint16)( (*(pScanline )) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* let's blend */
- MNG_BLEND16 (mng_get_uint16 (pDataline ),
- mng_get_uint16 (pDataline+2),
- mng_get_uint16 (pDataline+4), iFGa16,
- iBGr16, iBGg16, iBGb16, iBGa16,
- iCr16, iCg16, iCb16, iCa16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8) ( ( (iCr16 >> 8) & 0xF8 ) | ( (mng_uint8)(iCg16 >> 8) >> 5 ) );
- *pScanline = (mng_uint8) ( ( (iCb16 >> 11) ) | (((mng_uint8)(iCg16 >> 8) & 0xFC) << 3) );
- *(pScanline+2) = (mng_uint8)(iCa16 >> 8);
- }
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *(pScanline+2);
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline)) &0xF8 ) | (*(pDataline+1) >>5 ) );
- *pScanline = (mng_uint8)( ( ((*(pDataline+2))>>3) ) | ((*(pDataline+1)&0xFC) << 3) );
- *(pScanline+2) = *(pDataline+3);
- }
- else
- {
- mng_uint8 iRed, iGreen, iBlue;
-
- iRed = (mng_uint8) ( *(pScanline+1) & 0xF8 );
- iGreen = (mng_uint8) ( (*(pScanline+1) << 5) | ( ((*pScanline) & 0xE0)>>3 ) );
- iBlue = (mng_uint8) ( (*pScanline << 3) );
-
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do alpha composing */
- MNG_COMPOSE8 (iRed, *pDataline, iFGa8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iFGa8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+2), iFGa8, iBlue );
- /* alpha remains fully opaque !!! */
- *(pScanline+1) = (mng_uint8) ( ( iRed & 0xF8 ) | (iGreen>>5) );
- *pScanline = (mng_uint8) ( ( iBlue >> 3 ) | ( (iGreen & 0xFC) << 3) );
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- iRed , iGreen , iBlue , iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
-
-
- *pScanline = (mng_uint8) ( ( iCb8 >> 3 ) | ( (iCg8 & 0xFC) << 3) );
- *(pScanline+1) = (mng_uint8) ( ( iCr8 & 0xF8 ) | (iCg8>>5) );
- *(pScanline+2) = (mng_uint8) iCa8;
- }
- }
- }
-
- pScanline += (pData->iColinc *3);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRA565, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_bgra565 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint16 iFGa16, iBGa16, iCa16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint16 iCr16, iCg16, iCb16;
- mng_uint8 iCr8, iCg8, iCb8;
- mng_uint8 iBps;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRA565, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl * 3);
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline))&0xF8 ) |
- ( (*(pDataline+iBps)>>5) ) );
- *pScanline = (mng_uint8)( ( (*(pDataline+2*iBps)) >>3) |
- ( (*(pDataline+iBps)&0xFC) << 3) );
- *(pScanline+2) = *(pDataline+3*iBps);
-
- pScanline += (pData->iColinc * 3);
- pDataline += 4*iBps;
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- iFGa16 = mng_get_uint16 (pDataline+6);
- iBGa16 = (mng_uint16)(*(pScanline+2));
- iBGa16 = (mng_uint16)(iBGa16 << 8) | iBGa16;
-
- if (iFGa16) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa16 == 0xFFFF) || (iBGa16 == 0))
- { /* plain copy it */
- *(pScanline+1) = (mng_uint8)( (*(pDataline))&0xF8 ) | (mng_uint8)( (*(pDataline+2)>>5 ) );
- *pScanline = (mng_uint8)( (*(pDataline+4)) >>3) | (mng_uint8)( (*(pDataline+2)&0xFC) << 3);
- *(pScanline+2) = *(pDataline+6);
- }
- else
- {
- if (iBGa16 == 0xFFFF) /* background fully opaque ? */
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
- /* scale background up */
- iBGb16 = (mng_uint16)( (*(pScanline+1)) & 0xF8 );
- iBGg16 = (mng_uint16)( (*(pScanline+1) << 5) | (((*(pScanline )) & 0xE0) >>3 ) );
- iBGr16 = (mng_uint16)( (*(pScanline )) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
-
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iFGa16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iFGa16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iFGa16, iBGb16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8) ( ( (iFGr16 >> 8)&0xF8 ) | ( (mng_uint8)(iFGg16>>8) >> 5) );
- *pScanline = (mng_uint8) ( ( (iFGb16>>11) ) | (((mng_uint8)(iFGg16>>8)&0xFC) << 3) );
- }
- else
- { /* scale background up */
- iBGb16 = (mng_uint16)( (*(pScanline+1)) & 0xF8 );
- iBGg16 = (mng_uint16)( (*(pScanline+1) << 5) | (((*(pScanline )) & 0xE0) >>3 ) );
- iBGr16 = (mng_uint16)( (*(pScanline )) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* let's blend */
- MNG_BLEND16 (mng_get_uint16 (pDataline ),
- mng_get_uint16 (pDataline+2),
- mng_get_uint16 (pDataline+4), iFGa16,
- iBGr16, iBGg16, iBGb16, iBGa16,
- iCr16, iCg16, iCb16, iCa16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8) ( ( (iCr16 >> 8) & 0xF8 ) | ( (mng_uint8)(iCg16 >> 8) >> 5 ) );
- *pScanline = (mng_uint8) ( ( (iCb16 >> 11) ) | (((mng_uint8)(iCg16 >> 8) & 0xFC) << 3) );
- *(pScanline+2) = (mng_uint8)(iCa16 >> 8);
- }
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *(pScanline+2);
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline)) &0xF8 ) | (*(pDataline+1) >>5 ) );
- *pScanline = (mng_uint8)( ( ((*(pDataline+2))>>3) ) | ((*(pDataline+1)&0xFC) << 3) );
- *(pScanline+2) = *(pDataline+3);
- }
- else
- {
- mng_uint8 iRed, iGreen, iBlue;
-
- iRed = (mng_uint8) ( *(pScanline+1) & 0xF8 );
- iGreen = (mng_uint8) ( (*(pScanline+1) << 5) | ( ((*pScanline) & 0xE0)>>3 ) );
- iBlue = (mng_uint8) ( (*pScanline << 3) );
-
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do alpha composing */
- MNG_COMPOSE8 (iRed, *pDataline, iFGa8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iFGa8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+2), iFGa8, iBlue );
- /* alpha remains fully opaque !!! */
- *(pScanline+1) = (mng_uint8) ( ( iRed & 0xF8 ) | (iGreen>>5) );
- *pScanline = (mng_uint8) ( ( iBlue >> 3 ) | ( (iGreen & 0xFC) << 3) );
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- iRed , iGreen , iBlue , iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
-
-
- *pScanline = (mng_uint8) ( ( iCb8 >> 3 ) | ( (iCg8 & 0xFC) << 3) );
- *(pScanline+1) = (mng_uint8) ( ( iCr8 & 0xF8 ) | (iCg8>>5) );
- *(pScanline+2) = (mng_uint8) iCa8;
- }
- }
- }
-
- pScanline += (pData->iColinc *3);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRA565, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_bgra565 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint8 iCr8, iCg8, iCb8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRA565, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl * 3);
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline))&0xF8 ) | ( (*(pDataline+1)>>5 ) ) );
- *pScanline = (mng_uint8)( ( *(pDataline+2) >>3 ) | ( (*(pDataline+1)&0xFC ) << 3) );
- *(pScanline+2) = *(pDataline+3);
-
- pScanline += (pData->iColinc * 3);
- pDataline += 4;
- }
- }
- }
- else
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *(pScanline+2);
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline)) &0xF8 ) | (*(pDataline+1) >>5 ) );
- *pScanline = (mng_uint8)( ( ((*(pDataline+2))>>3) ) | ((*(pDataline+1)&0xFC) << 3) );
- *(pScanline+2) = *(pDataline+3);
- }
- else
- {
- mng_uint8 iRed, iGreen, iBlue;
-
- iRed = (mng_uint8) ( *(pScanline+1) & 0xF8 );
- iGreen = (mng_uint8) ( (*(pScanline+1) << 5) | ( ((*pScanline) & 0xE0)>>3 ) );
- iBlue = (mng_uint8) ( (*pScanline << 3) );
-
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do alpha composing */
- MNG_COMPOSE8 (iRed, *pDataline, iFGa8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iFGa8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+2), iFGa8, iBlue );
- /* alpha remains fully opaque !!! */
- *(pScanline+1) = (mng_uint8) ( ( iRed & 0xF8 ) | (iGreen>>5) );
- *pScanline = (mng_uint8) ( ( iBlue >> 3 ) | ( (iGreen & 0xFC) << 3) );
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- iRed , iGreen , iBlue , iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
-
-
- *pScanline = (mng_uint8) ( ( iCb8 >> 3 ) | ( (iCg8 & 0xFC) << 3) );
- *(pScanline+1) = (mng_uint8) ( ( iCr8 & 0xF8 ) | (iCg8>>5) );
- *(pScanline+2) = (mng_uint8) iCa8;
- }
- }
- }
-
- pScanline += (pData->iColinc *3);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGRA565, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_BGRA565 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_RGBA565
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_rgba565 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint16 iFGa16, iBGa16, iCa16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint16 iCr16, iCg16, iCb16;
- mng_uint8 iCr8, iCg8, iCb8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGBA565, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl * 3);
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 3);
- else
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline+4))&0xF8 ) | ( (*(pDataline+2)>>5) ) );
- *pScanline = (mng_uint8)( ( (*(pDataline)) >>3) | ( (*(pDataline+2)&0xFC) << 3) );
- *(pScanline+2) = *(pDataline+6);
-
- pScanline += (pData->iColinc * 3);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline+2))&0xF8 ) | ( (*(pDataline+1)>>5 ) ) );
- *pScanline = (mng_uint8)( ( *(pDataline) >>3 ) | ( (*(pDataline+1)&0xFC ) << 3) );
- *(pScanline+2) = *(pDataline+3);
-
- pScanline += (pData->iColinc * 3);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- iFGa16 = mng_get_uint16 (pDataline+6);
- iBGa16 = (mng_uint16)(*(pScanline+2));
- iBGa16 = (mng_uint16)(iBGa16 << 8) | iBGa16;
-
- if (iFGa16) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa16 == 0xFFFF) || (iBGa16 == 0))
- { /* plain copy it */
- *(pScanline+1) = (mng_uint8)( (*(pDataline+4))&0xF8 ) | (mng_uint8)( (*(pDataline+2)>>5 ) );
- *pScanline = (mng_uint8)( (*(pDataline)) >>3) | (mng_uint8)( (*(pDataline+2)&0xFC) << 3);
- *(pScanline+2) = *(pDataline+6);
- }
- else
- {
- if (iBGa16 == 0xFFFF) /* background fully opaque ? */
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
- /* scale background up */
- iBGr16 = (mng_uint16)( (*(pScanline+1)) & 0xF8 );
- iBGg16 = (mng_uint16)( (*(pScanline+1) << 5) | (((*(pScanline )) & 0xE0) >>3 ) );
- iBGb16 = (mng_uint16)( (*(pScanline )) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
-
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iFGa16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iFGa16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iFGa16, iBGb16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8) ( ( (iFGb16 >> 8)&0xF8 ) | ( (mng_uint8)(iFGg16>>8) >> 5) );
- *pScanline = (mng_uint8) ( ( (iFGr16>>11) ) | (((mng_uint8)(iFGg16>>8)&0xFC) << 3) );
- }
- else
- { /* scale background up */
- iBGr16 = (mng_uint16)( (*(pScanline+1)) & 0xF8 );
- iBGg16 = (mng_uint16)( (*(pScanline+1) << 5) | (((*(pScanline )) & 0xE0) >>3 ) );
- iBGb16 = (mng_uint16)( (*(pScanline )) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* let's blend */
- MNG_BLEND16 (mng_get_uint16 (pDataline ),
- mng_get_uint16 (pDataline+2),
- mng_get_uint16 (pDataline+4), iFGa16,
- iBGr16, iBGg16, iBGb16, iBGa16,
- iCr16, iCg16, iCb16, iCa16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8) ( ( (iCb16 >> 8) & 0xF8 ) | ( (mng_uint8)(iCg16 >> 8) >> 5 ) );
- *pScanline = (mng_uint8) ( ( (iCr16 >> 11) ) | (((mng_uint8)(iCg16 >> 8) & 0xFC) << 3) );
- *(pScanline+2) = (mng_uint8)(iCa16 >> 8);
- }
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *(pScanline+2);
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline+2)) &0xF8 ) | (*(pDataline+1) >>5 ) );
- *pScanline = (mng_uint8)( ( ((*(pDataline))>>3) ) | ((*(pDataline+1)&0xFC) << 3) );
- *(pScanline+2) = *(pDataline+3);
- }
- else
- {
- mng_uint8 iRed, iGreen, iBlue;
-
- iBlue = (mng_uint8) ( *(pScanline+1) & 0xF8 );
- iGreen = (mng_uint8) ( (*(pScanline+1) << 5) | ( ((*pScanline) & 0xE0)>>3 ) );
- iRed = (mng_uint8) ( (*pScanline << 3) );
-
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do alpha composing */
- MNG_COMPOSE8 (iRed, *pDataline, iFGa8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iFGa8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+2), iFGa8, iBlue );
- /* alpha remains fully opaque !!! */
- *(pScanline+1) = (mng_uint8) ( ( iBlue & 0xF8 ) | (iGreen>>5) );
- *pScanline = (mng_uint8) ( ( iRed >> 3 ) | ( (iGreen & 0xFC) << 3) );
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- iRed , iGreen , iBlue , iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
-
-
- *pScanline = (mng_uint8) ( ( iCr8 >> 3 ) | ( (iCg8 & 0xFC) << 3) );
- *(pScanline+1) = (mng_uint8) ( ( iCb8 & 0xF8 ) | (iCg8>>5) );
- *(pScanline+2) = (mng_uint8) iCa8;
- }
- }
- }
-
- pScanline += (pData->iColinc *3);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGBA565, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_rgba565 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint16 iFGa16, iBGa16, iCa16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint16 iCr16, iCg16, iCb16;
- mng_uint8 iCr8, iCg8, iCb8;
- mng_uint8 iBps;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGBA565, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl * 3);
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline+2*iBps))&0xF8 ) |
- ( (*(pDataline+iBps)>>5) ) );
- *pScanline = (mng_uint8)( ( (*(pDataline)) >>3) |
- ( (*(pDataline+iBps)&0xFC) << 3) );
- *(pScanline+2) = *(pDataline+3*iBps);
-
- pScanline += (pData->iColinc * 3);
- pDataline += 4*iBps;
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* get alpha values */
- iFGa16 = mng_get_uint16 (pDataline+6);
- iBGa16 = (mng_uint16)(*(pScanline+2));
- iBGa16 = (mng_uint16)(iBGa16 << 8) | iBGa16;
-
- if (iFGa16) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa16 == 0xFFFF) || (iBGa16 == 0))
- { /* plain copy it */
- *(pScanline+1) = (mng_uint8)( (*(pDataline+4))&0xF8 ) | (mng_uint8)( (*(pDataline+2)>>5 ) );
- *pScanline = (mng_uint8)( (*(pDataline)) >>3) | (mng_uint8)( (*(pDataline+2)&0xFC) << 3);
- *(pScanline+2) = *(pDataline+6);
- }
- else
- {
- if (iBGa16 == 0xFFFF) /* background fully opaque ? */
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
- /* scale background up */
- iBGr16 = (mng_uint16)( (*(pScanline+1)) & 0xF8 );
- iBGg16 = (mng_uint16)( (*(pScanline+1) << 5) | (((*(pScanline )) & 0xE0) >>3 ) );
- iBGb16 = (mng_uint16)( (*(pScanline )) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
-
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iFGa16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iFGa16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iFGa16, iBGb16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8) ( ( (iFGb16 >> 8)&0xF8 ) | ( (mng_uint8)(iFGg16>>8) >> 5) );
- *pScanline = (mng_uint8) ( ( (iFGr16>>11) ) | (((mng_uint8)(iFGg16>>8)&0xFC) << 3) );
- }
- else
- { /* scale background up */
- iBGr16 = (mng_uint16)( (*(pScanline+1)) & 0xF8 );
- iBGg16 = (mng_uint16)( (*(pScanline+1) << 5) | (((*(pScanline )) & 0xE0) >>3 ) );
- iBGb16 = (mng_uint16)( (*(pScanline )) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* let's blend */
- MNG_BLEND16 (mng_get_uint16 (pDataline ),
- mng_get_uint16 (pDataline+2),
- mng_get_uint16 (pDataline+4), iFGa16,
- iBGr16, iBGg16, iBGb16, iBGa16,
- iCr16, iCg16, iCb16, iCa16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8) ( ( (iCb16 >> 8) & 0xF8 ) | ( (mng_uint8)(iCg16 >> 8) >> 5 ) );
- *pScanline = (mng_uint8) ( ( (iCr16 >> 11) ) | (((mng_uint8)(iCg16 >> 8) & 0xFC) << 3) );
- *(pScanline+2) = (mng_uint8)(iCa16 >> 8);
- }
- }
- }
-
- pScanline += (pData->iColinc * 3);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *(pScanline+2);
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline+2)) &0xF8 ) | (*(pDataline+1) >>5 ) );
- *pScanline = (mng_uint8)( ( ((*(pDataline))>>3) ) | ((*(pDataline+1)&0xFC) << 3) );
- *(pScanline+2) = *(pDataline+3);
- }
- else
- {
- mng_uint8 iRed, iGreen, iBlue;
-
- iBlue = (mng_uint8) ( *(pScanline+1) & 0xF8 );
- iGreen = (mng_uint8) ( (*(pScanline+1) << 5) | ( ((*pScanline) & 0xE0)>>3 ) );
- iRed = (mng_uint8) ( (*pScanline << 3) );
-
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do alpha composing */
- MNG_COMPOSE8 (iRed, *pDataline, iFGa8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iFGa8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+2), iFGa8, iBlue );
- /* alpha remains fully opaque !!! */
- *(pScanline+1) = (mng_uint8) ( ( iBlue & 0xF8 ) | (iGreen>>5) );
- *pScanline = (mng_uint8) ( ( iRed >> 3 ) | ( (iGreen & 0xFC) << 3) );
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- iRed , iGreen , iBlue , iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
-
-
- *pScanline = (mng_uint8) ( ( iCr8 >> 3 ) | ( (iCg8 & 0xFC) << 3) );
- *(pScanline+1) = (mng_uint8) ( ( iCb8 & 0xF8 ) | (iCg8>>5) );
- *(pScanline+2) = (mng_uint8) iCa8;
- }
- }
- }
-
- pScanline += (pData->iColinc *3);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGBA565, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_rgba565 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8, iCa8;
- mng_uint8 iCr8, iCg8, iCb8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGBA565, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol << 2) + (pData->iDestl * 3);
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline+2))&0xF8 ) | ( (*(pDataline+1)>>5 ) ) );
- *pScanline = (mng_uint8)( ( *(pDataline) >>3 ) | ( (*(pDataline+1)&0xFC ) << 3) );
- *(pScanline+2) = *(pDataline+3);
-
- pScanline += (pData->iColinc * 3);
- pDataline += 4;
- }
- }
- }
- else
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iFGa8 = *(pDataline+3); /* get alpha values */
- iBGa8 = *(pScanline+2);
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline+2)) &0xF8 ) | (*(pDataline+1) >>5 ) );
- *pScanline = (mng_uint8)( ( ((*(pDataline))>>3) ) | ((*(pDataline+1)&0xFC) << 3) );
- *(pScanline+2) = *(pDataline+3);
- }
- else
- {
- mng_uint8 iRed, iGreen, iBlue;
-
- iBlue = (mng_uint8) ( *(pScanline+1) & 0xF8 );
- iGreen = (mng_uint8) ( (*(pScanline+1) << 5) | ( ((*pScanline) & 0xE0)>>3 ) );
- iRed = (mng_uint8) ( (*pScanline << 3) );
-
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do alpha composing */
- MNG_COMPOSE8 (iRed, *pDataline, iFGa8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iFGa8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+2), iFGa8, iBlue );
- /* alpha remains fully opaque !!! */
- *(pScanline+1) = (mng_uint8) ( ( iBlue & 0xF8 ) | (iGreen>>5) );
- *pScanline = (mng_uint8) ( ( iRed >> 3 ) | ( (iGreen & 0xFC) << 3) );
- }
- else
- { /* now blend */
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iFGa8,
- iRed , iGreen , iBlue , iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
-
-
- *pScanline = (mng_uint8) ( ( iCr8 >> 3 ) | ( (iCg8 & 0xFC) << 3) );
- *(pScanline+1) = (mng_uint8) ( ( iCb8 & 0xF8 ) | (iCg8>>5) );
- *(pScanline+2) = (mng_uint8) iCa8;
- }
- }
- }
-
- pScanline += (pData->iColinc *3);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGBA565, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_RGBA565 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_BGR565_A8
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_bgr565_a8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pAlphaline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint16 iA16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16, iBGa16;
- mng_uint16 iCr16, iCg16, iCb16, iCa16;
- mng_uint8 iA8, iBGa8, iCa8;
- mng_uint8 iCr8, iCg8, iCb8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR565_A8, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- pAlphaline = (mng_uint8p)pData->fGetalphaline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row
-starting-point */
- pScanline = pScanline + (pData->iCol * 2) + (pData->iDestl * 2);
- pAlphaline = pAlphaline + pData->iCol + pData->iDestl;
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 3);
- else
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline))&0xF8 ) | ((*(pDataline+2)>>5) ) );
- *pScanline = (mng_uint8)( ( (*(pDataline+4)) >>3) | ((*(pDataline+2)&0xFC) << 3) );
- *pAlphaline = (mng_uint8)(*(pDataline+6));
-
- pScanline += (pData->iColinc * 2);
- pAlphaline += pData->iColinc;
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline))&0xF8 ) | ((*(pDataline+1)>>5 ) ) );
- *pScanline = (mng_uint8)( ( *(pDataline+2) >>3 ) | ((*(pDataline+1)&0xFC ) << 3) );
- *pAlphaline = (mng_uint8)(*(pDataline+3));
-
- pScanline += (pData->iColinc * 2);
- pAlphaline += pData->iColinc;
- pDataline += 4;
- }
- }
- }
- else /* Not fully opaque */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
-
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA16 = mng_get_uint16 (pDataline+6);
- iBGa16 = (mng_uint16)(*pAlphaline);
- iBGa16 = (mng_uint16)(iBGa16 << 8) | iBGa16;
-
- if (iA16) /* any opacity at all ? */
- {
- if ((iA16 == 0xFFFF) || (iBGa16 == 0)) /* fully opaque or background fully transparent ? */
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( (*(pDataline))&0xF8 ) | (mng_uint8)( (*(pDataline+2)>>5 ) );
- *pScanline = (mng_uint8)( (*(pDataline+4)) >>3) | (mng_uint8)( (*(pDataline+2)&0xFC) << 3);
- *pAlphaline = *(pDataline+6);
- }
- else
- {
- if (iBGa16 == 0xFFFF) /* background fully opaque ? */
- {
- /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
- /* scale background up */
-
- iBGb16 = (mng_uint16)( (*(pScanline+1)) & 0xF8 );
- iBGg16 = (mng_uint16)( (*(pScanline+1) << 5) | (((*(pScanline )) & 0xE0) >>3 ) );
- iBGr16 = (mng_uint16)( (*(pScanline )) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iA16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iA16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iA16, iBGb16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8) ( ( (iFGr16 >> 8)&0xF8 ) | ( (mng_uint8)(iFGg16>>8) >> 5) );
- *pScanline = (mng_uint8) ( ( (iFGb16>>11) ) | (((mng_uint8)(iFGg16>>8)&0xFC) << 3) );
- *pAlphaline = (mng_uint8)(iA16>>8);
- }
- else /* background is not fully opaque */
- { /* scale background up */
- iBGb16 = (mng_uint16)( (*(pScanline+1)) & 0xF8 );
- iBGg16 = (mng_uint16)( (*(pScanline+1) << 5) | (((*(pScanline )) & 0xE0) >>3 ) );
- iBGr16 = (mng_uint16)( (*(pScanline )) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* let's blend */
- MNG_BLEND16 (mng_get_uint16 (pDataline ),
- mng_get_uint16 (pDataline+2),
- mng_get_uint16 (pDataline+4), iA16,
- iBGr16, iBGg16, iBGb16, iBGa16,
- iCr16, iCg16, iCb16, iCa16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8) ( ( (iCr16 >> 8)&0xF8 ) | ( (mng_uint8)(iCg16>>8) >> 5) );
- *pScanline = (mng_uint8) ( ( (iCb16>>11) ) | (((mng_uint8)(iCg16>>8)&0xFC) << 3) );
- *pAlphaline = (mng_uint8)(iCa16 >> 8);
- }
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pAlphaline += pData->iColinc;
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
-iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
- iBGa8 = *pAlphaline;
-
- if (iA8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iA8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline)) &0xF8 ) | (*(pDataline+1) >>5 ) );
- *pScanline = (mng_uint8)( ( ((*(pDataline+2))>>3) ) | ((*(pDataline+1)&0xFC) << 3) );
- *pAlphaline = *(pDataline+3);
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- {
- /* do alpha composing */
- mng_uint8 iRed, iGreen, iBlue;
-
- iRed = (mng_uint8) ( *(pScanline+1) & 0xF8 );
- iGreen = (mng_uint8) ( (*(pScanline+1) << 5) | (((*pScanline) & 0xE0)>>3 ) );
- iBlue = (mng_uint8) ( (*pScanline << 3) );
-
- MNG_COMPOSE8 (iRed, *pDataline, iA8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iA8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+2), iA8, iBlue );
-
- *(pScanline+1) = (mng_uint8) ( ( iRed & 0xF8 ) | (iGreen>>5) );
- *pScanline = (mng_uint8) ( ( iBlue >> 3 ) | ((iGreen & 0xFC) << 3) );
- *pAlphaline = iA8;
- }
- else /* background not fully opaque */
- {
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iA8,
- *pScanline, *(pScanline+1), *(pScanline+2), iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8) ( ( iCr8 & 0xF8 ) | (iCg8>>5) );
- *pScanline = (mng_uint8) ( ( iCb8 >> 3 ) | ((iCg8 & 0xFC) << 3) );
- *pAlphaline = iCa8;
- }
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pAlphaline += pData->iColinc;
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR565_A8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_bgr565_a8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pAlphaline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint16 iA16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16, iBGa16;
- mng_uint16 iCr16, iCg16, iCb16, iCa16;
- mng_uint8 iA8, iBGa8, iCa8;
- mng_uint8 iCr8, iCg8, iCb8;
- mng_uint8 iBps;
-
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR565_A8, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- pAlphaline = (mng_uint8p)pData->fGetalphaline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row
-starting-point */
- pScanline = pScanline + (pData->iCol * 2) + (pData->iDestl * 2);
- pAlphaline = pAlphaline + pData->iCol + pData->iDestl;
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline))&0xF8 ) |
- ((*(pDataline+iBps)>>5) ) );
- *pScanline = (mng_uint8)( ( (*(pDataline+2*iBps)) >>3) |
- ((*(pDataline+iBps)&0xFC) << 3) );
- *pAlphaline = (mng_uint8)(*(pDataline+6));
-
- pScanline += (pData->iColinc * 2);
- pAlphaline += pData->iColinc;
- pDataline += 8;
- }
- }
- else /* Not fully opaque */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
-
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA16 = mng_get_uint16 (pDataline+6);
- iBGa16 = (mng_uint16)(*pAlphaline);
- iBGa16 = (mng_uint16)(iBGa16 << 8) | iBGa16;
-
- if (iA16) /* any opacity at all ? */
- {
- if ((iA16 == 0xFFFF) || (iBGa16 == 0)) /* fully opaque or background fully transparent ? */
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( (*(pDataline))&0xF8 ) | (mng_uint8)( (*(pDataline+2)>>5 ) );
- *pScanline = (mng_uint8)( (*(pDataline+4)) >>3) | (mng_uint8)( (*(pDataline+2)&0xFC) << 3);
- *pAlphaline = *(pDataline+6);
- }
- else
- {
- if (iBGa16 == 0xFFFF) /* background fully opaque ? */
- {
- /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
- /* scale background up */
-
- iBGb16 = (mng_uint16)( (*(pScanline+1)) & 0xF8 );
- iBGg16 = (mng_uint16)( (*(pScanline+1) << 5) | (((*(pScanline )) & 0xE0) >>3 ) );
- iBGr16 = (mng_uint16)( (*(pScanline )) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iA16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iA16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iA16, iBGb16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8) ( ( (iFGr16 >> 8)&0xF8 ) | ( (mng_uint8)(iFGg16>>8) >> 5) );
- *pScanline = (mng_uint8) ( ( (iFGb16>>11) ) | (((mng_uint8)(iFGg16>>8)&0xFC) << 3) );
- *pAlphaline = (mng_uint8)(iA16>>8);
- }
- else /* background is not fully opaque */
- { /* scale background up */
- iBGb16 = (mng_uint16)( (*(pScanline+1)) & 0xF8 );
- iBGg16 = (mng_uint16)( (*(pScanline+1) << 5) | (((*(pScanline )) & 0xE0) >>3 ) );
- iBGr16 = (mng_uint16)( (*(pScanline )) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* let's blend */
- MNG_BLEND16 (mng_get_uint16 (pDataline ),
- mng_get_uint16 (pDataline+2),
- mng_get_uint16 (pDataline+4), iA16,
- iBGr16, iBGg16, iBGb16, iBGa16,
- iCr16, iCg16, iCb16, iCa16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8) ( ( (iCr16 >> 8)&0xF8 ) | ( (mng_uint8)(iCg16>>8) >> 5) );
- *pScanline = (mng_uint8) ( ( (iCb16>>11) ) | (((mng_uint8)(iCg16>>8)&0xFC) << 3) );
- *pAlphaline = (mng_uint8)(iCa16 >> 8);
- }
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pAlphaline += pData->iColinc;
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
-iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
- iBGa8 = *pAlphaline;
-
- if (iA8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iA8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline)) &0xF8 ) | (*(pDataline+1) >>5 ) );
- *pScanline = (mng_uint8)( ( ((*(pDataline+2))>>3) ) | ((*(pDataline+1)&0xFC) << 3) );
- *pAlphaline = *(pDataline+3);
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- {
- /* do alpha composing */
- mng_uint8 iRed, iGreen, iBlue;
-
- iRed = (mng_uint8) ( *(pScanline+1) & 0xF8 );
- iGreen = (mng_uint8) ( (*(pScanline+1) << 5) | (((*pScanline) & 0xE0)>>3 ) );
- iBlue = (mng_uint8) ( (*pScanline << 3) );
-
- MNG_COMPOSE8 (iRed, *pDataline, iA8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iA8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+2), iA8, iBlue );
-
- *(pScanline+1) = (mng_uint8) ( ( iRed & 0xF8 ) | (iGreen>>5) );
- *pScanline = (mng_uint8) ( ( iBlue >> 3 ) | ((iGreen & 0xFC) << 3) );
- *pAlphaline = iA8;
- }
- else /* background not fully opaque */
- {
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iA8,
- *pScanline, *(pScanline+1), *(pScanline+2), iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8) ( ( iCr8 & 0xF8 ) | (iCg8>>5) );
- *pScanline = (mng_uint8) ( ( iCb8 >> 3 ) | ((iCg8 & 0xFC) << 3) );
- *pAlphaline = iCa8;
- }
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pAlphaline += pData->iColinc;
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR565_A8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_bgr565_a8 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pAlphaline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iA8, iBGa8, iCa8;
- mng_uint8 iCr8, iCg8, iCb8;
-
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR565_A8, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- pAlphaline = (mng_uint8p)pData->fGetalphaline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row
-starting-point */
- pScanline = pScanline + (pData->iCol * 2) + (pData->iDestl * 2);
- pAlphaline = pAlphaline + pData->iCol + pData->iDestl;
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline))&0xF8 ) | ((*(pDataline+1)>>5 ) ) );
- *pScanline = (mng_uint8)( ( *(pDataline+2) >>3 ) | ((*(pDataline+1)&0xFC ) << 3) );
- *pAlphaline = (mng_uint8)(*(pDataline+3));
-
- pScanline += (pData->iColinc * 2);
- pAlphaline += pData->iColinc;
- pDataline += 4;
- }
- }
- }
- else /* Not fully opaque */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
-iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
- iBGa8 = *pAlphaline;
-
- if (iA8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iA8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ( (*(pDataline)) &0xF8 ) | (*(pDataline+1) >>5 ) );
- *pScanline = (mng_uint8)( ( ((*(pDataline+2))>>3) ) | ((*(pDataline+1)&0xFC) << 3) );
- *pAlphaline = *(pDataline+3);
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- {
- /* do alpha composing */
- mng_uint8 iRed, iGreen, iBlue;
-
- iRed = (mng_uint8) ( *(pScanline+1) & 0xF8 );
- iGreen = (mng_uint8) ( (*(pScanline+1) << 5) | (((*pScanline) & 0xE0)>>3 ) );
- iBlue = (mng_uint8) ( (*pScanline << 3) );
-
- MNG_COMPOSE8 (iRed, *pDataline, iA8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iA8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+2), iA8, iBlue );
-
- *(pScanline+1) = (mng_uint8) ( ( iRed & 0xF8 ) | (iGreen>>5) );
- *pScanline = (mng_uint8) ( ( iBlue >> 3 ) | ((iGreen & 0xFC) << 3) );
- *pAlphaline = iA8;
- }
- else /* background not fully opaque */
- {
- MNG_BLEND8 (*pDataline, *(pDataline+1), *(pDataline+2), iA8,
- *pScanline, *(pScanline+1), *(pScanline+2), iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8) ( ( iCr8 & 0xF8 ) | (iCg8>>5) );
- *pScanline = (mng_uint8) ( ( iCb8 >> 3 ) | ((iCg8 & 0xFC) << 3) );
- *pAlphaline = iCa8;
- }
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pAlphaline += pData->iColinc;
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR565_A8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_BGR565_A8 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_RGB555
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_rgb555 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint16 iA16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint8 iA8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB555, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol * 2) + (pData->iDestl * 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 3);
- else
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ((*(pDataline+4) & 0xF8) >> 1 ) | (*(pDataline+2) >> 6 ) );
- *pScanline = (mng_uint8)( ( *(pDataline ) >> 3 ) | ((*(pDataline+2) & 0xF8) << 2 ) );
-
- pScanline += (pData->iColinc * 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *(pScanline+1) = (mng_uint8)( ((*(pDataline+2) & 0xF8) >> 1 ) | (*(pDataline+1) >> 6 ) );
- *pScanline = (mng_uint8)( ( *(pDataline ) >> 3 ) | ((*(pDataline+1) & 0xF8) << 2 ) );
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
-
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA16 = mng_get_uint16 (pDataline+6);
-
- if (iA16) /* any opacity at all ? */
- {
- if (iA16 == 0xFFFF) /* fully opaque ? */
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ((*(pDataline+4) & 0xF8) >> 1 ) | (*(pDataline+2) >> 6 ) );
- *pScanline = (mng_uint8)( ( *(pDataline ) >> 3 ) | ((*(pDataline+2) & 0xF8) << 2 ) );
- }
- else
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
-
- /* scale background up */
- iBGr16 = (mng_uint8)( (*(pScanline+1) & 0xF8) << 1 );
- iBGg16 = (mng_uint8)( (*(pScanline+1) << 6 ) | ( ((*pScanline) & 0xE0) >> 2 ) );
- iBGb16 = (mng_uint8)( *(pScanline ) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iA16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iA16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iA16, iBGb16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8)( (mng_uint8)(((iFGb16 >> 8) & 0xF8) >> 1 ) | ( (mng_uint8)(iFGg16 >> 8) >> 6 ) );
- *pScanline = (mng_uint8)( (mng_uint8) ((iFGr16 >>11) >> 3 ) | ( ( (mng_uint8)(iFGg16 >> 8) & 0xF8) << 2 ) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ((*(pDataline+2) & 0xF8) >> 1 ) | (*(pDataline+1) >> 6 ) );
- *pScanline = (mng_uint8)( ( *(pDataline ) >> 3 ) | ((*(pDataline+1) & 0xF8) << 2 ) );
- }
- else
- { /* do alpha composing */
- mng_uint8 iRed, iGreen, iBlue;
-
- iRed = (mng_uint8)( (*(pScanline+1) & 0xF8) << 1 );
- iGreen = (mng_uint8)( (*(pScanline+1) << 6 ) | ( ((*pScanline) & 0xE0) >> 2 ) );
- iBlue = (mng_uint8)( *(pScanline ) << 3 );
-
- MNG_COMPOSE8 (iRed, *(pDataline+2), iA8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iA8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+0), iA8, iBlue );
-
- *(pScanline+1) = (mng_uint8)( ( (iRed & 0xF8) >> 1 ) | ( iGreen >> 6 ) );
- *pScanline = (mng_uint8)( (iBlue >> 3 ) | ( (iGreen & 0xF8) << 2 ) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB555, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_rgb555 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint16 iA16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint8 iA8;
- mng_uint8 iBps;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB555, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol * 2) + (pData->iDestl * 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ((*(pDataline+2*iBps) & 0xF8) >> 1 ) | (*(pDataline+iBps) >> 6 ) );
- *pScanline = (mng_uint8)( ( *(pDataline ) >> 3 ) | ((*(pDataline+iBps) & 0xF8) << 2 ) );
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4*iBps;
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
-
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA16 = mng_get_uint16 (pDataline+6);
-
- if (iA16) /* any opacity at all ? */
- {
- if (iA16 == 0xFFFF) /* fully opaque ? */
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ((*(pDataline+4) & 0xF8) >> 1 ) | (*(pDataline+2) >> 6 ) );
- *pScanline = (mng_uint8)( ( *(pDataline ) >> 3 ) | ((*(pDataline+2) & 0xF8) << 2 ) );
- }
- else
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
-
- /* scale background up */
- iBGr16 = (mng_uint8)( (*(pScanline+1) & 0xF8) << 1 );
- iBGg16 = (mng_uint8)( (*(pScanline+1) << 6 ) | ( ((*pScanline) & 0xE0) >> 2 ) );
- iBGb16 = (mng_uint8)( *(pScanline ) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iA16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iA16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iA16, iBGb16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8)( (mng_uint8)(((iFGb16 >> 8) & 0xF8) >> 1 ) | ( (mng_uint8)(iFGg16 >> 8) >> 6 ) );
- *pScanline = (mng_uint8)( (mng_uint8) ((iFGr16 >>11) >> 3 ) | ( ( (mng_uint8)(iFGg16 >> 8) & 0xF8) << 2 ) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ((*(pDataline+2) & 0xF8) >> 1 ) | (*(pDataline+1) >> 6 ) );
- *pScanline = (mng_uint8)( ( *(pDataline ) >> 3 ) | ((*(pDataline+1) & 0xF8) << 2 ) );
- }
- else
- { /* do alpha composing */
- mng_uint8 iRed, iGreen, iBlue;
-
- iRed = (mng_uint8)( (*(pScanline+1) & 0xF8) << 1 );
- iGreen = (mng_uint8)( (*(pScanline+1) << 6 ) | ( ((*pScanline) & 0xE0) >> 2 ) );
- iBlue = (mng_uint8)( *(pScanline ) << 3 );
-
- MNG_COMPOSE8 (iRed, *(pDataline+2), iA8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iA8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+0), iA8, iBlue );
-
- *(pScanline+1) = (mng_uint8)( ( (iRed & 0xF8) >> 1 ) | ( iGreen >> 6 ) );
- *pScanline = (mng_uint8)( (iBlue >> 3 ) | ( (iGreen & 0xF8) << 2 ) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB555, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_rgb555 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iA8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB555, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol * 2) + (pData->iDestl * 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *(pScanline+1) = (mng_uint8)( ((*(pDataline+2) & 0xF8) >> 1 ) | (*(pDataline+1) >> 6 ) );
- *pScanline = (mng_uint8)( ( *(pDataline ) >> 3 ) | ((*(pDataline+1) & 0xF8) << 2 ) );
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ((*(pDataline+2) & 0xF8) >> 1 ) | (*(pDataline+1) >> 6 ) );
- *pScanline = (mng_uint8)( ( *(pDataline ) >> 3 ) | ((*(pDataline+1) & 0xF8) << 2 ) );
- }
- else
- { /* do alpha composing */
- mng_uint8 iRed, iGreen, iBlue;
-
- iRed = (mng_uint8)( (*(pScanline+1) & 0xF8) << 1 );
- iGreen = (mng_uint8)( (*(pScanline+1) << 6 ) | ( ((*pScanline) & 0xE0) >> 2 ) );
- iBlue = (mng_uint8)( *(pScanline ) << 3 );
-
- MNG_COMPOSE8 (iRed, *(pDataline+2), iA8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iA8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+0), iA8, iBlue );
-
- *(pScanline+1) = (mng_uint8)( ( (iRed & 0xF8) >> 1 ) | ( iGreen >> 6 ) );
- *pScanline = (mng_uint8)( (iBlue >> 3 ) | ( (iGreen & 0xF8) << 2 ) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_RGB555, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_RGB555 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_BGR555
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
-mng_retcode mng_display_bgr555 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint16 iA16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint8 iA8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR555, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol * 2) + (pData->iDestl * 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- if (pData->bIsRGBA16) /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 3);
- else
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ((*(pDataline ) & 0xF8) >> 1 ) | (*(pDataline+2) >> 6 ) );
- *pScanline = (mng_uint8)( ( *(pDataline+4) >> 3 ) | ((*(pDataline+2) & 0xF8) << 2 ) );
-
- pScanline += (pData->iColinc * 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *(pScanline+1) = (mng_uint8)( ((*(pDataline ) & 0xF8) >> 1 ) | (*(pDataline+1) >> 6 ) );
- *pScanline = (mng_uint8)( ( *(pDataline+2) >> 3 ) | ((*(pDataline+1) & 0xF8) << 2 ) );
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
-
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA16 = mng_get_uint16 (pDataline+6);
-
- if (iA16) /* any opacity at all ? */
- {
- if (iA16 == 0xFFFF) /* fully opaque ? */
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ((*(pDataline ) & 0xF8) >> 1 ) | (*(pDataline+2) >> 6 ) );
- *pScanline = (mng_uint8)( ( *(pDataline+4) >> 3 ) | ((*(pDataline+2) & 0xF8) << 2 ) );
- }
- else
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
-
- /* scale background up */
- iBGb16 = (mng_uint8)( (*(pScanline+1) & 0xF8) << 1 );
- iBGg16 = (mng_uint8)( (*(pScanline+1) << 6 ) | ( ((*pScanline) & 0xE0) >> 2 ) );
- iBGr16 = (mng_uint8)( *(pScanline ) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iA16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iA16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iA16, iBGb16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8)( (mng_uint8)(((iFGr16 >> 8) & 0xF8) >> 1 ) | ( (mng_uint8)(iFGg16 >> 8) >> 6 ) );
- *pScanline = (mng_uint8)( (mng_uint8) ((iFGb16 >>11) >> 3 ) | ( ( (mng_uint8)(iFGg16 >> 8) & 0xF8) << 2 ) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ((*(pDataline ) & 0xF8) >> 1 ) | (*(pDataline+1) >> 6 ) );
- *pScanline = (mng_uint8)( ( *(pDataline+2) >> 3 ) | ((*(pDataline+1) & 0xF8) << 2 ) );
- }
- else
- { /* do alpha composing */
- mng_uint8 iRed, iGreen, iBlue;
-
- iRed = (mng_uint8)( (*(pScanline+1) & 0xF8) << 1 );
- iGreen = (mng_uint8)( (*(pScanline+1) << 6 ) | ( ((*pScanline) & 0xE0) >> 2 ) );
- iBlue = (mng_uint8)( *(pScanline ) << 3 );
-
- MNG_COMPOSE8 (iRed, *(pDataline+0), iA8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iA8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+2), iA8, iBlue );
-
- *(pScanline+1) = (mng_uint8)( ( (iRed & 0xF8) >> 1 ) | ( iGreen >> 6 ) );
- *pScanline = (mng_uint8)( (iBlue >> 3 ) | ( (iGreen & 0xF8) << 2 ) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR555, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#else /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-mng_retcode mng_display_bgr555 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint16 iA16;
- mng_uint16 iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGr16, iBGg16, iBGb16;
- mng_uint8 iA8;
- mng_uint8 iBps;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR555, MNG_LC_START);
-#endif
-
- iBps=(mng_uint8)(pData->bIsRGBA16 ? 2:1);
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol * 2) + (pData->iDestl * 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- /* adjust source row starting-point */
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << (iBps+1));
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ((*(pDataline ) & 0xF8) >> 1 ) | (*(pDataline+iBps) >> 6 ) );
- *pScanline = (mng_uint8)( ( *(pDataline+2*iBps) >> 3 ) | ((*(pDataline+iBps) & 0xF8) << 2 ) );
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4*iBps;
- }
- }
- else
- {
- if (pData->bIsRGBA16) /* 16-bit input row ? */
- {
-
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA16 = mng_get_uint16 (pDataline+6);
-
- if (iA16) /* any opacity at all ? */
- {
- if (iA16 == 0xFFFF) /* fully opaque ? */
- { /* scale down by dropping the LSB */
- *(pScanline+1) = (mng_uint8)( ((*(pDataline ) & 0xF8) >> 1 ) | (*(pDataline+2) >> 6 ) );
- *pScanline = (mng_uint8)( ( *(pDataline+4) >> 3 ) | ((*(pDataline+2) & 0xF8) << 2 ) );
- }
- else
- { /* get the proper values */
- iFGr16 = mng_get_uint16 (pDataline );
- iFGg16 = mng_get_uint16 (pDataline+2);
- iFGb16 = mng_get_uint16 (pDataline+4);
-
- /* scale background up */
- iBGb16 = (mng_uint8)( (*(pScanline+1) & 0xF8) << 1 );
- iBGg16 = (mng_uint8)( (*(pScanline+1) << 6 ) | ( ((*pScanline) & 0xE0) >> 2 ) );
- iBGr16 = (mng_uint8)( *(pScanline ) << 3 );
-
- iBGr16 = (mng_uint16)((mng_uint32)iBGr16 << 8) | iBGr16;
- iBGg16 = (mng_uint16)((mng_uint32)iBGg16 << 8) | iBGg16;
- iBGb16 = (mng_uint16)((mng_uint32)iBGb16 << 8) | iBGb16;
- /* now compose */
- MNG_COMPOSE16(iFGr16, iFGr16, iA16, iBGr16);
- MNG_COMPOSE16(iFGg16, iFGg16, iA16, iBGg16);
- MNG_COMPOSE16(iFGb16, iFGb16, iA16, iBGb16);
- /* and return the composed values */
- *(pScanline+1) = (mng_uint8)( (mng_uint8)(((iFGr16 >> 8) & 0xF8) >> 1 ) | ( (mng_uint8)(iFGg16 >> 8) >> 6 ) );
- *pScanline = (mng_uint8)( (mng_uint8) ((iFGb16 >>11) >> 3 ) | ( ( (mng_uint8)(iFGg16 >> 8) & 0xF8) << 2 ) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 8;
- }
- }
- else
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ((*(pDataline ) & 0xF8) >> 1 ) | (*(pDataline+1) >> 6 ) );
- *pScanline = (mng_uint8)( ( *(pDataline+2) >> 3 ) | ((*(pDataline+1) & 0xF8) << 2 ) );
- }
- else
- { /* do alpha composing */
- mng_uint8 iRed, iGreen, iBlue;
-
- iRed = (mng_uint8)( (*(pScanline+1) & 0xF8) << 1 );
- iGreen = (mng_uint8)( (*(pScanline+1) << 6 ) | ( ((*pScanline) & 0xE0) >> 2 ) );
- iBlue = (mng_uint8)( *(pScanline ) << 3 );
-
- MNG_COMPOSE8 (iRed, *(pDataline+0), iA8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iA8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+2), iA8, iBlue );
-
- *(pScanline+1) = (mng_uint8)( ( (iRed & 0xF8) >> 1 ) | ( iGreen >> 6 ) );
- *pScanline = (mng_uint8)( (iBlue >> 3 ) | ( (iGreen & 0xF8) << 2 ) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR555, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_OPTIMIZE_FOOTPRINT_COMPOSE */
-#else /* MNG_NO_16BIT_SUPPORT */
-mng_retcode mng_display_bgr555 (mng_datap pData)
-{
- mng_uint8p pScanline;
- mng_uint8p pDataline;
- mng_int32 iX;
- mng_uint8 iA8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR555, MNG_LC_START);
-#endif
- /* viewable row ? */
- if ((pData->iRow >= pData->iSourcet) && (pData->iRow < pData->iSourceb))
- { /* address destination row */
- pScanline = (mng_uint8p)pData->fGetcanvasline (((mng_handle)pData),
- pData->iRow + pData->iDestt -
- pData->iSourcet);
- /* adjust destination row starting-point */
- pScanline = pScanline + (pData->iCol * 2) + (pData->iDestl * 2);
- pDataline = pData->pRGBArow; /* address source row */
-
- pDataline = pDataline + ((pData->iSourcel / pData->iColinc) << 2);
-
- if (pData->bIsOpaque) /* forget about transparency ? */
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- { /* copy the values */
- *(pScanline+1) = (mng_uint8)( ((*(pDataline ) & 0xF8) >> 1 ) | (*(pDataline+1) >> 6 ) );
- *pScanline = (mng_uint8)( ( *(pDataline+2) >> 3 ) | ((*(pDataline+1) & 0xF8) << 2 ) );
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- else
- {
- {
- for (iX = pData->iSourcel + pData->iCol; iX < pData->iSourcer;
- iX += pData->iColinc)
- {
- iA8 = *(pDataline+3); /* get alpha value */
-
- if (iA8) /* any opacity at all ? */
- {
- if (iA8 == 0xFF) /* fully opaque ? */
- { /* then simply copy the values */
- *(pScanline+1) = (mng_uint8)( ((*(pDataline ) & 0xF8) >> 1 ) | (*(pDataline+1) >> 6 ) );
- *pScanline = (mng_uint8)( ( *(pDataline+2) >> 3 ) | ((*(pDataline+1) & 0xF8) << 2 ) );
- }
- else
- { /* do alpha composing */
- mng_uint8 iRed, iGreen, iBlue;
-
- iRed = (mng_uint8)( (*(pScanline+1) & 0xF8) << 1 );
- iGreen = (mng_uint8)( (*(pScanline+1) << 6 ) | ( ((*pScanline) & 0xE0) >> 2 ) );
- iBlue = (mng_uint8)( *(pScanline ) << 3 );
-
- MNG_COMPOSE8 (iRed, *(pDataline+0), iA8, iRed );
- MNG_COMPOSE8 (iGreen, *(pDataline+1), iA8, iGreen );
- MNG_COMPOSE8 (iBlue, *(pDataline+2), iA8, iBlue );
-
- *(pScanline+1) = (mng_uint8)( ( (iRed & 0xF8) >> 1 ) | ( iGreen >> 6 ) );
- *pScanline = (mng_uint8)( (iBlue >> 3 ) | ( (iGreen & 0xF8) << 2 ) );
- }
- }
-
- pScanline += (pData->iColinc * 2);
- pDataline += 4;
- }
- }
- }
- }
-
- check_update_region (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_BGR555, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_SKIPCANVAS_BGR555 */
-
-
-#ifndef MNG_SKIPCHUNK_BACK
-/* ************************************************************************** */
-/* * * */
-/* * Background restore routines - restore the background with info from * */
-/* * the BACK and/or bKGD chunk or the app's background canvas * */
-/* * * */
-/* ************************************************************************** */
-
-mng_retcode mng_restore_bkgd_backimage (mng_datap pData)
-{
- /* save some stuff */
- mng_uint8p pRGBArow = pData->pRGBArow;
- mng_int32 iRow = pData->iRow;
- mng_int32 iRowsamples = pData->iRowsamples;
-
- mng_retcode iRetcode; /* work variables */
- mng_uint8p pTemp;
- mng_uint8p pWork = pRGBArow;
- mng_uint32 iX;
- mng_int32 iZ;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_BACKIMAGE, MNG_LC_START);
-#endif
- /* determine row to retrieve */
- pData->iRow = pData->iDestt + iRow + pData->iBackimgoffsy;
-
- while (pData->iRow >= (mng_int32)pData->iBackimgheight)
- pData->iRow -= (mng_int32)pData->iBackimgheight;
- /* set width to that of background image */
- pData->iRowsamples = pData->iBackimgwidth;
- /* retrieve into alternate buffer ! */
- pData->pRGBArow = pData->pPrevrow;
- /* get it then */
- iRetcode = ((mng_retrieverow)pData->fRetrieverow) (pData);
-
- if (iRetcode) /* on error; bail out */
- return iRetcode;
- /* we got the full row; but now need to
- paste it into the proper location */
- iX = pData->iDestl - pData->iBackimgoffsx;
-
- while (iX >= pData->iBackimgwidth)
- iX -= pData->iBackimgwidth;
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pData->bIsRGBA16) /* 16-bit buffer ? */
- {
- pTemp = pData->pPrevrow + (iX << 3);
-
- for (iZ = (pData->iDestr - pData->iDestl); iZ > 0; iZ--)
- {
- MNG_COPY (pWork, pTemp, 8);
-
- pWork += 8;
- pTemp += 8;
- iX++;
- /* reached end of bkgd-image line ? */
- if (iX >= pData->iBackimgwidth)
- {
- iX = 0;
- pTemp = pData->pPrevrow;
- }
- }
- }
- else
-#endif
- {
- pTemp = pData->pPrevrow + (iX << 2);
-
- for (iZ = (pData->iDestr - pData->iDestl); iZ > 0; iZ--)
- {
- MNG_COPY (pWork, pTemp, 4);
-
- pWork += 4;
- pTemp += 4;
- iX++;
- /* reached end of bkgd-image line ? */
- if (iX >= pData->iBackimgwidth)
- {
- iX = 0;
- pTemp = pData->pPrevrow;
- }
- }
- }
-
- pData->pRGBArow = pRGBArow; /* restore original values */
- pData->iRow = iRow;
- pData->iRowsamples = iRowsamples;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_BACKIMAGE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_restore_bkgd_backcolor (mng_datap pData)
-{
- mng_int32 iX;
- mng_uint32p pWork32 = (mng_uint32p)pData->pRGBArow;
- mng_uint32 iWrite;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_BACKCOLOR, MNG_LC_START);
-#endif
-
-#ifdef MNG_BIGENDIAN_SUPPORTED
- /* fast way for big endian */
- iWrite = (((mng_uint8)(pData->iBACKred >> 8)) << 24) |
- (((mng_uint8)(pData->iBACKgreen >> 8)) << 16) |
- (((mng_uint8)(pData->iBACKblue >> 8)) << 8) |
- ( 0xFF );
-#elif defined(MNG_LITTLEENDIAN_SUPPORTED)
- /* fast way for little endian */
- iWrite = ( 0xFF << 24) |
- (((mng_uint8)(pData->iBACKblue >> 8)) << 16) |
- (((mng_uint8)(pData->iBACKgreen >> 8)) << 8) |
- (((mng_uint8)(pData->iBACKred >> 8)) );
-#else
- /* generic way, works on all platforms */
- /* put the data in memory in the correct order */
- {
- mng_uint8 aBytes[4];
- aBytes[0] = (mng_uint8)(pData->iBACKred >> 8);
- aBytes[1] = (mng_uint8)(pData->iBACKgreen >> 8);
- aBytes[2] = (mng_uint8)(pData->iBACKblue >> 8);
- aBytes[3] = 0xFF;
- /* load that data into a register */
- iWrite = *(mng_uint32*) aBytes;
- }
-#endif
- /* ok; drop the background-color in there */
- for (iX = (pData->iSourcer - pData->iSourcel); iX > 0; iX--)
- *pWork32++ = iWrite;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_BACKCOLOR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_bKGD
-mng_retcode mng_restore_bkgd_bkgd (mng_datap pData)
-{
- mng_int32 iX;
- mng_uint8p pWork = pData->pRGBArow;
- mng_imagep pImage = (mng_imagep)pData->pCurrentobj;
- mng_imagedatap pBuf = pImage->pImgbuf;
- mng_uint8 iRed = 0;
- mng_uint8 iGreen = 0;
- mng_uint8 iBlue = 0;
- mng_uint32p pWork32 = (mng_uint32p)pWork;
- mng_uint32 iWrite;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_BKGD, MNG_LC_START);
-#endif
-
- switch (pBuf->iColortype)
- {
- case 0 : ; /* gray types */
- case 4 : {
- mng_uint8 iGray;
-
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pBuf->iBitdepth > 8)
- iGray = (mng_uint8)(pBuf->iBKGDgray >> 8);
- else
-#endif
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- /* LBR scaling */
- mng_uint8 multiplier[]={0,255,85,0,17,0,0,0,1};
- iGray = (mng_uint8)(multiplier[pBuf->iBitdepth] * pBuf->iBKGDgray);
-#else
- iGray = (mng_uint8)pBuf->iBKGDgray;
-#endif
- }
-
- iRed = iGray;
- iGreen = iGray;
- iBlue = iGray;
-
- break;
- }
-
- case 3 : { /* indexed type */
- iRed = pBuf->aPLTEentries [pBuf->iBKGDindex].iRed;
- iGreen = pBuf->aPLTEentries [pBuf->iBKGDindex].iGreen;
- iBlue = pBuf->aPLTEentries [pBuf->iBKGDindex].iBlue;
-
- break;
- }
-
- case 2 : ; /* rgb types */
- case 6 : {
-#ifndef MNG_NO_16BIT_SUPPORT
- if (pBuf->iBitdepth > 8)
- {
- iRed = (mng_uint8)(pBuf->iBKGDred >> 8);
- iGreen = (mng_uint8)(pBuf->iBKGDgreen >> 8);
- iBlue = (mng_uint8)(pBuf->iBKGDblue >> 8);
- }
- else
-#endif
- {
- iRed = (mng_uint8)(pBuf->iBKGDred );
- iGreen = (mng_uint8)(pBuf->iBKGDgreen);
- iBlue = (mng_uint8)(pBuf->iBKGDblue );
- }
-
- break;
- }
- }
-
-#ifdef MNG_BIGENDIAN_SUPPORTED
- /* fast way for big endian */
- iWrite = (iRed << 24) |
- (iGreen << 16) |
- (iBlue << 8);
-#elif defined(MNG_LITTLEENDIAN_SUPPORTED)
- /* fast way for little endian */
- iWrite = (iBlue << 16) |
- (iGreen << 8) |
- (iRed );
-#else
- /* generic way, works on all platforms */
- /* put the data in memory in the correct order */
- {
- mng_uint8 aBytes[4];
- aBytes[0] = (mng_uint8)(iRed);
- aBytes[1] = (mng_uint8)(iGreen);
- aBytes[2] = (mng_uint8)(iBlue);
- aBytes[3] = 0x00;
- /* load that data into a register */
- iWrite = *(mng_uint32*) aBytes;
- }
-#endif
- /* ok; drop it in there */
- for (iX = (pData->iSourcer - pData->iSourcel); iX > 0; iX--)
- *pWork32++ = iWrite;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_BKGD, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_restore_bkgd_bgcolor (mng_datap pData)
-{
- mng_int32 iX;
- mng_uint32p pWork32 = (mng_uint32p)pData->pRGBArow;
- mng_uint32 iWrite;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_BGCOLOR, MNG_LC_START);
-#endif
-
-#ifdef MNG_BIGENDIAN_SUPPORTED
- /* fast way for big endian */
- iWrite = (((mng_uint8)(pData->iBGred >> 8)) << 24) |
- (((mng_uint8)(pData->iBGgreen >> 8)) << 16) |
- (((mng_uint8)(pData->iBGblue >> 8)) << 8);
-#elif defined(MNG_LITTLEENDIAN_SUPPORTED)
- /* fast way for little endian */
- iWrite = (((mng_uint8)(pData->iBGblue >> 8)) << 16) |
- (((mng_uint8)(pData->iBGgreen >> 8)) << 8) |
- (((mng_uint8)(pData->iBGred >> 8)) );
-#else
- /* generic way, works on all platforms */
- /* put the data in memory in the correct order */
- {
- mng_uint8 aBytes[4];
- aBytes[0] = (mng_uint8)(pData->iBGred >> 8);
- aBytes[1] = (mng_uint8)(pData->iBGgreen >> 8);
- aBytes[2] = (mng_uint8)(pData->iBGblue >> 8);
- aBytes[3] = 0x00;
- /* load that data into a register */
- iWrite = *(mng_uint32*) aBytes;
- }
-#endif
- /* ok; drop the background-color in there */
- for (iX = (pData->iSourcer - pData->iSourcel); iX > 0; iX--)
- *pWork32++ = iWrite;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_BGCOLOR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_RGB8
-mng_retcode mng_restore_bkgd_rgb8 (mng_datap pData)
-{
- mng_int32 iX;
- mng_uint8p pBkgd;
- mng_uint8p pWork = pData->pRGBArow;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_RGB8, MNG_LC_START);
-#endif
-
- if (pData->fGetbkgdline) /* can we access the background ? */
- { /* point to the right pixel then */
- pBkgd = (mng_uint8p)pData->fGetbkgdline ((mng_handle)pData,
- pData->iRow + pData->iDestt) +
- (3 * pData->iDestl);
-
- for (iX = (pData->iSourcer - pData->iSourcel); iX > 0; iX--)
- {
- *pWork = *pBkgd; /* ok; copy the pixel */
- *(pWork+1) = *(pBkgd+1);
- *(pWork+2) = *(pBkgd+2);
- *(pWork+3) = 0x00; /* transparant for alpha-canvasses */
-
- pWork += 4;
- pBkgd += 3;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_RGB8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SKIPCANVAS_RGB8 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_BGR8
-mng_retcode mng_restore_bkgd_bgr8 (mng_datap pData)
-{
- mng_int32 iX;
- mng_uint8p pBkgd;
- mng_uint8p pWork = pData->pRGBArow;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_BGR8, MNG_LC_START);
-#endif
-
- if (pData->fGetbkgdline) /* can we access the background ? */
- { /* point to the right pixel then */
- pBkgd = (mng_uint8p)pData->fGetbkgdline ((mng_handle)pData,
- pData->iRow + pData->iDestt) +
- (3 * pData->iDestl);
-
- for (iX = (pData->iSourcer - pData->iSourcel); iX > 0; iX--)
- {
- *pWork = *(pBkgd+2); /* ok; copy the pixel */
- *(pWork+1) = *(pBkgd+1);
- *(pWork+2) = *pBkgd;
- *(pWork+3) = 0x00; /* transparant for alpha-canvasses */
-
- pWork += 4;
- pBkgd += 3;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_BGR8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SKIPCANVAS_BGR8 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_BGRX8
-mng_retcode mng_restore_bkgd_bgrx8 (mng_datap pData)
-{
- mng_int32 iX;
- mng_uint8p pBkgd;
- mng_uint8p pWork = pData->pRGBArow;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_BGRX8, MNG_LC_START);
-#endif
-
- if (pData->fGetbkgdline) /* can we access the background ? */
- { /* point to the right pixel then */
- pBkgd = (mng_uint8p)pData->fGetbkgdline ((mng_handle)pData,
- pData->iRow + pData->iDestt) +
- (3 * pData->iDestl);
-
- for (iX = (pData->iSourcer - pData->iSourcel); iX > 0; iX--)
- {
- *pWork = *(pBkgd+2); /* ok; copy the pixel */
- *(pWork+1) = *(pBkgd+1);
- *(pWork+2) = *pBkgd;
- *(pWork+3) = 0x00; /* transparant for alpha-canvasses */
-
- pWork += 4;
- pBkgd += 4;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_BGRX8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SKIPCANVAS_BGRX8 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_BGR565
-mng_retcode mng_restore_bkgd_bgr565 (mng_datap pData)
-{
- mng_int32 iX;
- mng_uint8p pBkgd;
- mng_uint8p pWork = pData->pRGBArow;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_BGR565, MNG_LC_START);
-#endif
-
- if (pData->fGetbkgdline) /* can we access the background ? */
- { /* point to the right pixel then */
- pBkgd = (mng_uint8p)pData->fGetbkgdline ((mng_handle)pData,
- pData->iRow + pData->iDestt) +
- (3 * pData->iDestl);
-
- for (iX = (pData->iSourcer - pData->iSourcel); iX > 0; iX--)
- {
- *pWork = (mng_uint8)( *(pBkgd+1) & 0xF8); /* ok; copy the pixel */
- *(pWork+1) = (mng_uint8)( (*(pBkgd+1) << 5 ) | ( ((*pBkgd)&0xE0)>>3 ) );
- *(pWork+2) = (mng_uint8)( *(pBkgd) << 3 );
- *(pWork+3) = 0x00; /* transparant for alpha-canvasses */
-
- pWork += 4;
- pBkgd += 2;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_BGR565, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SKIPCANVAS_BGR565 */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_RGB565
-mng_retcode mng_restore_bkgd_rgb565 (mng_datap pData)
-{
- mng_int32 iX;
- mng_uint8p pBkgd;
- mng_uint8p pWork = pData->pRGBArow;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_RGB565, MNG_LC_START);
-#endif
-
- if (pData->fGetbkgdline) /* can we access the background ? */
- { /* point to the right pixel then */
- pBkgd = (mng_uint8p)pData->fGetbkgdline ((mng_handle)pData,
- pData->iRow + pData->iDestt) +
- (3 * pData->iDestl);
-
- for (iX = (pData->iSourcer - pData->iSourcel); iX > 0; iX--)
- {
- *pWork = (mng_uint8)( *(pBkgd)&0xF8); /* ok; copy the pixel */
- *(pWork+1) = (mng_uint8)( (*(pBkgd+1) << 5) | ( ((*pBkgd)&0xE0)>>3 ) );
- *(pWork+2) = (mng_uint8)( *(pBkgd+1) << 3);
- *(pWork+3) = 0x00; /* transparant for alpha-canvasses */
-
- pWork += 4;
- pBkgd += 2;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RESTORE_RGB565, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SKIPCANVAS_RBB565 */
-
-
-/* ************************************************************************** */
-/* * * */
-/* * Row retrieval routines - retrieve processed & uncompressed row-data * */
-/* * from the current "object" * */
-/* * * */
-/* ************************************************************************** */
-
-/* TODO: a serious optimization is to retrieve only those pixels that will
- actually be displayed; this would require changes in
- the "display_image" routine (in mng_display.c) &
- all the "retrieve_xxx" routines below &
- the "display_xxx" routines above !!!!!
- NOTE that "correct_xxx" routines would not require modification */
-
-mng_retcode mng_retrieve_g8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pRetrieveobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint8 iG;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RETRIEVE_G8, MNG_LC_START);
-#endif
-
- pRGBArow = pData->pRGBArow; /* temporary work pointers */
- pWorkrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize);
-
- if (pBuf->bHasTRNS) /* tRNS in buffer ? */
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iG = *pWorkrow; /* get the gray-value */
- /* is it transparent ? */
- if ((mng_uint16)iG == pBuf->iTRNSgray)
- {
- *pRGBArow = 0x00; /* nuttin to display */
- *(pRGBArow+1) = 0x00;
- *(pRGBArow+2) = 0x00;
- *(pRGBArow+3) = 0x00;
- }
- else
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- mng_uint8 multiplier[]={0,255,85,0,17,0,0,0,1};
- iG = (mng_uint8)(iG * multiplier[pBuf->iBitdepth]);
-#endif
-
- *pRGBArow = iG; /* put in intermediate row */
- *(pRGBArow+1) = iG;
- *(pRGBArow+2) = iG;
- *(pRGBArow+3) = 0xFF;
- }
-
- pWorkrow++; /* next pixel */
- pRGBArow += 4;
- }
- }
- else
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- mng_uint8 multiplier[]={0,255,85,0,17,0,0,0,1}; /* LBR scaling */
- iG = (mng_uint8)(multiplier[pBuf->iBitdepth] * *pWorkrow);
-#else
- iG = *pWorkrow; /* get the gray-value */
-#endif
-
- *pRGBArow = iG; /* put in intermediate row */
- *(pRGBArow+1) = iG;
- *(pRGBArow+2) = iG;
- *(pRGBArow+3) = 0xFF;
-
- pWorkrow++; /* next pixel */
- pRGBArow += 4;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RETRIEVE_G8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_retrieve_g16 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pRetrieveobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint16 iG;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RETRIEVE_G16, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pRGBArow = pData->pRGBArow;
- pWorkrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize);
-
- if (pBuf->bHasTRNS) /* tRNS in buffer ? */
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iG = mng_get_uint16 (pWorkrow); /* get the gray-value */
- /* is it transparent ? */
- if (iG == pBuf->iTRNSgray)
- { /* nuttin to display */
- mng_put_uint16 (pRGBArow, 0x0000);
- mng_put_uint16 (pRGBArow+2, 0x0000);
- mng_put_uint16 (pRGBArow+4, 0x0000);
- mng_put_uint16 (pRGBArow+6, 0x0000);
- }
- else
- { /* put in intermediate row */
- mng_put_uint16 (pRGBArow, iG);
- mng_put_uint16 (pRGBArow+2, iG);
- mng_put_uint16 (pRGBArow+4, iG);
- mng_put_uint16 (pRGBArow+6, 0xFFFF);
- }
-
- pWorkrow += 2; /* next pixel */
- pRGBArow += 8;
- }
- }
- else
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iG = mng_get_uint16 (pWorkrow); /* get the gray-value */
-
- mng_put_uint16 (pRGBArow, iG); /* and put in intermediate row */
- mng_put_uint16 (pRGBArow+2, iG);
- mng_put_uint16 (pRGBArow+4, iG);
- mng_put_uint16 (pRGBArow+6, 0xFFFF);
-
- pWorkrow += 2; /* next pixel */
- pRGBArow += 8;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RETRIEVE_G16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_retrieve_rgb8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pRetrieveobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint8 iR, iG, iB;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RETRIEVE_RGB8, MNG_LC_START);
-#endif
-
- pRGBArow = pData->pRGBArow; /* temporary work pointers */
- pWorkrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize);
-
- if (pBuf->bHasTRNS) /* tRNS in buffer ? */
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iR = *pWorkrow; /* get the rgb-values */
- iG = *(pWorkrow+1);
- iB = *(pWorkrow+2);
- /* is it transparent ? */
- if (((mng_uint16)iR == pBuf->iTRNSred ) &&
- ((mng_uint16)iG == pBuf->iTRNSgreen) &&
- ((mng_uint16)iB == pBuf->iTRNSblue ) )
- {
- *pRGBArow = 0x00; /* nothing to display */
- *(pRGBArow+1) = 0x00;
- *(pRGBArow+2) = 0x00;
- *(pRGBArow+3) = 0x00;
- }
- else
- {
- *pRGBArow = iR; /* put in intermediate row */
- *(pRGBArow+1) = iG;
- *(pRGBArow+2) = iB;
- *(pRGBArow+3) = 0xFF;
- }
-
- pWorkrow += 3; /* next pixel */
- pRGBArow += 4;
- }
- }
- else
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pRGBArow = *pWorkrow; /* just copy the pixel */
- *(pRGBArow+1) = *(pWorkrow+1);
- *(pRGBArow+2) = *(pWorkrow+2);
- *(pRGBArow+3) = 0xFF;
-
- pWorkrow += 3; /* next pixel */
- pRGBArow += 4;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RETRIEVE_RGB8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_retrieve_rgb16 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pRetrieveobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint16 iR, iG, iB;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RETRIEVE_RGB16, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pRGBArow = pData->pRGBArow;
- pWorkrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize);
-
- if (pBuf->bHasTRNS) /* tRNS in buffer ? */
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iR = mng_get_uint16 (pWorkrow); /* get the rgb-values */
- iG = mng_get_uint16 (pWorkrow+2);
- iB = mng_get_uint16 (pWorkrow+4);
- /* is it transparent ? */
- if ((iR == pBuf->iTRNSred ) &&
- (iG == pBuf->iTRNSgreen) &&
- (iB == pBuf->iTRNSblue ) )
- { /* nothing to display */
- mng_put_uint16 (pRGBArow, 0x0000);
- mng_put_uint16 (pRGBArow+2, 0x0000);
- mng_put_uint16 (pRGBArow+4, 0x0000);
- mng_put_uint16 (pRGBArow+6, 0x0000);
- }
- else
- { /* put in intermediate row */
- mng_put_uint16 (pRGBArow, iR);
- mng_put_uint16 (pRGBArow+2, iG);
- mng_put_uint16 (pRGBArow+4, iB);
- mng_put_uint16 (pRGBArow+6, 0xFFFF);
- }
-
- pWorkrow += 6; /* next pixel */
- pRGBArow += 8;
- }
- }
- else
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- { /* just copy the pixel */
- mng_put_uint16 (pRGBArow, mng_get_uint16 (pWorkrow ));
- mng_put_uint16 (pRGBArow+2, mng_get_uint16 (pWorkrow+2));
- mng_put_uint16 (pRGBArow+4, mng_get_uint16 (pWorkrow+4));
- mng_put_uint16 (pRGBArow+6, 0xFFFF);
-
- pWorkrow += 6; /* next pixel */
- pRGBArow += 8;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RETRIEVE_RGB16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_retrieve_idx8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pRetrieveobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint8 iQ;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RETRIEVE_IDX8, MNG_LC_START);
-#endif
-
- pRGBArow = pData->pRGBArow; /* temporary work pointers */
- pWorkrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize);
-
- if (pBuf->bHasTRNS) /* tRNS in buffer ? */
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iQ = *pWorkrow; /* get the index */
- /* is it valid ? */
- if ((mng_uint32)iQ < pBuf->iPLTEcount)
- { /* put in intermediate row */
- *pRGBArow = pBuf->aPLTEentries [iQ].iRed;
- *(pRGBArow+1) = pBuf->aPLTEentries [iQ].iGreen;
- *(pRGBArow+2) = pBuf->aPLTEentries [iQ].iBlue;
- /* transparency for this index ? */
- if ((mng_uint32)iQ < pBuf->iTRNScount)
- *(pRGBArow+3) = pBuf->aTRNSentries [iQ];
- else
- *(pRGBArow+3) = 0xFF;
- }
- else
- MNG_ERROR (pData, MNG_PLTEINDEXERROR);
-
- pWorkrow++; /* next pixel */
- pRGBArow += 4;
- }
- }
- else
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iQ = *pWorkrow; /* get the index */
- /* is it valid ? */
- if ((mng_uint32)iQ < pBuf->iPLTEcount)
- { /* put in intermediate row */
- *pRGBArow = pBuf->aPLTEentries [iQ].iRed;
- *(pRGBArow+1) = pBuf->aPLTEentries [iQ].iGreen;
- *(pRGBArow+2) = pBuf->aPLTEentries [iQ].iBlue;
- *(pRGBArow+3) = 0xFF;
- }
- else
- MNG_ERROR (pData, MNG_PLTEINDEXERROR);
-
- pWorkrow++; /* next pixel */
- pRGBArow += 4;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RETRIEVE_IDX8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_retrieve_ga8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pRetrieveobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint8 iG;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RETRIEVE_GA8, MNG_LC_START);
-#endif
-
- pRGBArow = pData->pRGBArow; /* temporary work pointers */
- pWorkrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iG = *pWorkrow; /* get the gray-value */
- *pRGBArow = iG; /* put in intermediate row */
- *(pRGBArow+1) = iG;
- *(pRGBArow+2) = iG;
- *(pRGBArow+3) = *(pWorkrow+1);
-
- pWorkrow += 2; /* next pixel */
- pRGBArow += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RETRIEVE_GA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_retrieve_ga16 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pRetrieveobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint16 iG;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RETRIEVE_GA16, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pRGBArow = pData->pRGBArow;
- pWorkrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iG = mng_get_uint16 (pWorkrow); /* get the gray-value */
-
- mng_put_uint16 (pRGBArow, iG); /* and put in intermediate row */
- mng_put_uint16 (pRGBArow+2, iG);
- mng_put_uint16 (pRGBArow+4, iG);
- mng_put_uint16 (pRGBArow+6, mng_get_uint16 (pWorkrow+2));
-
- pWorkrow += 4; /* next pixel */
- pRGBArow += 8;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RETRIEVE_GA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_retrieve_rgba8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pRetrieveobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RETRIEVE_RGBA8, MNG_LC_START);
-#endif
-
- pRGBArow = pData->pRGBArow; /* temporary work pointers */
- pWorkrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize);
- /* can't be easier than this ! */
- MNG_COPY (pRGBArow, pWorkrow, pBuf->iRowsize);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RETRIEVE_RGBA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_retrieve_rgba16 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pRetrieveobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RETRIEVE_RGBA16, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pRGBArow = pData->pRGBArow;
- pWorkrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize);
- /* can't be easier than this ! */
- MNG_COPY (pRGBArow, pWorkrow, pBuf->iRowsize);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RETRIEVE_RGBA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Row storage routines - store processed & uncompressed row-data * */
-/* * into the current "object" * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_store_g1 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_G1, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
- iM = 0; /* start at pixel 0 */
- iB = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0x80;
- }
-
- if (iB & iM) /* is it white ? */
- *pOutrow = 0x01; /* white */
- else
- *pOutrow = 0x00; /* black */
-
- pOutrow += pData->iColinc; /* next pixel */
- iM >>= 1;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_G1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_g2 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
- mng_uint8 iQ;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_G2, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xC0;
- iS = 6;
- }
-
- iQ = (mng_uint8)((iB & iM) >> iS); /* get the gray level */
- *pOutrow = iQ; /* put in object buffer */
-
- pOutrow += pData->iColinc; /* next pixel */
- iM >>= 2;
- iS -= 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_G2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_g4 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
- mng_uint8 iQ;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_G4, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xF0;
- iS = 4;
- }
-
- iQ = (mng_uint8)((iB & iM) >> iS); /* get the gray level */
- *pOutrow = iQ; /* put in object buffer */
-
- pOutrow += pData->iColinc; /* next pixel */
- iM >>= 4;
- iS -= 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_G4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_g8 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_G8, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* put in object buffer */
-
- pOutrow += pData->iColinc; /* next pixel */
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_G8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_store_g16 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_G16, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- { /* copy into object buffer */
- mng_put_uint16 (pOutrow, mng_get_uint16 (pWorkrow));
-
- pOutrow += (pData->iColinc << 1); /* next pixel */
- pWorkrow += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_G16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_rgb8 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_RGB8, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* copy the RGB bytes */
- *(pOutrow+1) = *(pWorkrow+1);
- *(pOutrow+2) = *(pWorkrow+2);
-
- pWorkrow += 3; /* next pixel */
- pOutrow += (pData->iColinc * 3);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_RGB8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_store_rgb16 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_RGB16, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- MNG_COPY (pOutrow, pWorkrow, 6); /* copy the RGB bytes */
-
- pWorkrow += 6; /* next pixel */
- pOutrow += (pData->iColinc * 6);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_RGB16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_store_idx1 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_IDX1, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
- iM = 0; /* start at pixel 0 */
- iB = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0x80;
- }
-
- if (iB & iM) /* store the index */
- *pOutrow = 0x01;
- else
- *pOutrow = 0x00;
-
- pOutrow += pData->iColinc; /* next pixel */
- iM >>= 1;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_IDX1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_idx2 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_IDX2, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xC0;
- iS = 6;
- }
- /* store the index */
- *pOutrow = (mng_uint8)((iB & iM) >> iS);
-
- pOutrow += pData->iColinc; /* next pixel */
- iM >>= 2;
- iS -= 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_IDX2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_idx4 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_IDX4, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xF0;
- iS = 4;
- }
- /* store the index */
- *pOutrow = (mng_uint8)((iB & iM) >> iS);
-
- pOutrow += pData->iColinc; /* next pixel */
- iM >>= 4;
- iS -= 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_IDX4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_idx8 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_IDX8, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* put in object buffer */
-
- pOutrow += pData->iColinc; /* next pixel */
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_IDX8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_ga8 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_GA8, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* copy the GA bytes */
- *(pOutrow+1) = *(pWorkrow+1);
-
- pWorkrow += 2; /* next pixel */
- pOutrow += (pData->iColinc << 1);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_GA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_store_ga16 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_GA16, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- MNG_COPY (pOutrow, pWorkrow, 4); /* copy the GA bytes */
-
- pWorkrow += 4; /* next pixel */
- pOutrow += (pData->iColinc << 2);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_GA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_rgba8 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_RGBA8, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* copy the RGBA bytes */
- *(pOutrow+1) = *(pWorkrow+1);
- *(pOutrow+2) = *(pWorkrow+2);
- *(pOutrow+3) = *(pWorkrow+3);
-
- pWorkrow += 4; /* next pixel */
- pOutrow += (pData->iColinc << 2);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_RGBA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_store_rgba16 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_RGBA16, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- MNG_COPY (pOutrow, pWorkrow, 8); /* copy the RGBA bytes */
-
- pWorkrow += 8; /* next pixel */
- pOutrow += (pData->iColinc << 3);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_RGBA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Row storage routines (JPEG) - store processed & uncompressed row-data * */
-/* * into the current "object" * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_jpeg_g8 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G8, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pJPEGrow; /* temporary work pointers */
- pOutrow = pBuf->pImgdata + (pData->iJPEGrow * pBuf->iRowsize);
- /* easy as pie ... */
- MNG_COPY (pOutrow, pWorkrow, pData->iRowsamples);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G8, MNG_LC_END);
-#endif
-
- return mng_next_jpeg_row (pData); /* we've got one more row of gray-samples */
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_jpeg_rgb8 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
-#if RGB_PIXELSIZE != 3
- mng_int32 iX;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_RGB8, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pJPEGrow; /* temporary work pointers */
- pOutrow = pBuf->pImgdata + (pData->iJPEGrow * pBuf->iRowsize);
-
-#if RGB_PIXELSIZE == 3
- /* easy as pie ... */
- MNG_COPY (pOutrow, pWorkrow, pData->iRowsamples * 3);
-#else
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* copy pixel into object buffer */
- *(pOutrow+1) = *(pWorkrow+1);
- *(pOutrow+2) = *(pWorkrow+2);
-
- pOutrow += 3; /* next pixel */
- pWorkrow += RGB_PIXELSIZE;
- }
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_RGB8, MNG_LC_END);
-#endif
-
- return mng_next_jpeg_row (pData); /* we've got one more row of rgb-samples */
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_jpeg_ga8 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_GA8, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pJPEGrow; /* temporary work pointers */
- pOutrow = pBuf->pImgdata + (pData->iJPEGrow * pBuf->iRowsize);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* copy into object buffer */
-
- pOutrow += 2; /* next pixel */
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_GA8, MNG_LC_END);
-#endif
-
- return mng_next_jpeg_row (pData); /* we've got one more row of gray-samples */
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_jpeg_rgba8 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_RGBA8, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pJPEGrow; /* temporary work pointers */
- pOutrow = pBuf->pImgdata + (pData->iJPEGrow * pBuf->iRowsize);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* copy pixel into object buffer */
- *(pOutrow+1) = *(pWorkrow+1);
- *(pOutrow+2) = *(pWorkrow+2);
-
- pOutrow += 4; /* next pixel */
- pWorkrow += RGB_PIXELSIZE;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_RGBA8, MNG_LC_END);
-#endif
-
- return mng_next_jpeg_row (pData); /* we've got one more row of rgb-samples */
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_jpeg_g8_alpha (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G8_ALPHA, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pJPEGrow2;
- pOutrow = pBuf->pImgdata + (pData->iJPEGalpharow * pBuf->iRowsize) + 1;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* put in object buffer */
-
- pOutrow += 2; /* next pixel */
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G8_ALPHA, MNG_LC_END);
-#endif
- /* we've got one more row of alpha-samples */
- return mng_next_jpeg_alpharow (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_jpeg_rgb8_alpha (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_RGB8_ALPHA, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pJPEGrow2;
- pOutrow = pBuf->pImgdata + (pData->iJPEGalpharow * pBuf->iRowsize) + 3;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* put in object buffer */
-
- pOutrow += 4; /* next pixel */
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_RGB8_ALPHA, MNG_LC_END);
-#endif
- /* we've got one more row of alpha-samples */
- return mng_next_jpeg_alpharow (pData);
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_store_jpeg_g8_a1 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G8_A1, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) + 1;
- iM = 0; /* start at pixel 0 */
- iB = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0x80;
- }
-
- if (iB & iM) /* is it opaque ? */
- *pOutrow = 0xFF; /* opaque */
- else
- *pOutrow = 0x00; /* transparent */
-
- pOutrow += 2; /* next pixel */
- iM >>= 1;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G8_A1, MNG_LC_END);
-#endif
- /* we've got one more row of alpha-samples */
- return mng_next_jpeg_alpharow (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_jpeg_g8_a2 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G8_A2, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) + 1;
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xC0;
- iS = 6;
- }
-
-#ifdef MNG_OPTIMIZE_FOOTPRINT_SWITCH
- {
- const mng_uint8 alpha_level[4] = { 0x00, 0x55, 0xAA, 0xFF};
- *pOutrow = alpha_level[((iB & iM) >> iS)] ;
- }
-#else
- switch ((iB & iM) >> iS) /* determine the alpha level */
- {
- case 0x03 : { *pOutrow = 0xFF; break; }
- case 0x02 : { *pOutrow = 0xAA; break; }
- case 0x01 : { *pOutrow = 0x55; break; }
- default : { *pOutrow = 0x00; }
- }
-#endif
-
- pOutrow += 2; /* next pixel */
- iM >>= 2;
- iS -= 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G8_A2, MNG_LC_END);
-#endif
- /* we've got one more row of alpha-samples */
- return mng_next_jpeg_alpharow (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_jpeg_g8_a4 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
- mng_uint8 iQ;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G8_A4, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) + 1;
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xF0;
- iS = 4;
- }
- /* get the alpha level */
- iQ = (mng_uint8)((iB & iM) >> iS);
- iQ = (mng_uint8)(iQ + (iQ << 4)); /* expand to 8-bit by replication */
-
- *pOutrow = iQ; /* put in object buffer */
-
- pOutrow += 2; /* next pixel */
- iM >>= 4;
- iS -= 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G8_A4, MNG_LC_END);
-#endif
- /* we've got one more row of alpha-samples */
- return mng_next_jpeg_alpharow (pData);
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_jpeg_g8_a8 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G8_A8, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) + 1;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* put in object buffer */
-
- pOutrow += 2; /* next pixel */
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G8_A8, MNG_LC_END);
-#endif
- /* we've got one more row of alpha-samples */
- return mng_next_jpeg_alpharow (pData);
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_store_jpeg_g8_a16 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G8_A16, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) + 1;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* only high-order byte! */
-
- pOutrow += 2; /* next pixel */
- pWorkrow += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G8_A16, MNG_LC_END);
-#endif
- /* we've got one more row of alpha-samples */
- return mng_next_jpeg_alpharow (pData);
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_store_jpeg_rgb8_a1 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_RGB8_A1, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) + 3;
- iM = 0; /* start at pixel 0 */
- iB = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0x80;
- }
-
- if (iB & iM) /* is it opaque ? */
- *pOutrow = 0xFF; /* opaque */
- else
- *pOutrow = 0x00; /* transparent */
-
- pOutrow += 4; /* next pixel */
- iM >>= 1;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_RGB8_A1, MNG_LC_END);
-#endif
- /* we've got one more row of alpha-samples */
- return mng_next_jpeg_alpharow (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_jpeg_rgb8_a2 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_RGB8_A2, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) + 3;
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xC0;
- iS = 6;
- }
-
-#ifdef MNG_OPTIMIZE_FOOTPRINT_SWITCH
- {
- const mng_uint8 alpha_level[4] = { 0x00, 0x55, 0xAA, 0xFF};
- *pOutrow = alpha_level[((iB & iM) >> iS)] ;
- }
-#else
- switch ((iB & iM) >> iS) /* determine the alpha level */
- {
- case 0x03 : { *pOutrow = 0xFF; break; }
- case 0x02 : { *pOutrow = 0xAA; break; }
- case 0x01 : { *pOutrow = 0x55; break; }
- default : { *pOutrow = 0x00; }
- }
-#endif
-
- pOutrow += 4; /* next pixel */
- iM >>= 2;
- iS -= 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_RGB8_A2, MNG_LC_END);
-#endif
- /* we've got one more row of alpha-samples */
- return mng_next_jpeg_alpharow (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_jpeg_rgb8_a4 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
- mng_uint8 iQ;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_RGB8_A4, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) + 3;
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xF0;
- iS = 4;
- }
- /* get the alpha level */
- iQ = (mng_uint8)((iB & iM) >> iS);
- iQ = (mng_uint8)(iQ + (iQ << 4)); /* expand to 8-bit by replication */
-
- *pOutrow = iQ; /* put in object buffer */
-
- pOutrow += 4; /* next pixel */
- iM >>= 4;
- iS -= 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_RGB8_A4, MNG_LC_END);
-#endif
- /* we've got one more row of alpha-samples */
- return mng_next_jpeg_alpharow (pData);
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_store_jpeg_rgb8_a8 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_RGB8_A8, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) + 3;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* put in buffer */
-
- pOutrow += 4; /* next pixel */
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_RGB8_A8, MNG_LC_END);
-#endif
- /* we've got one more row of alpha-samples */
- return mng_next_jpeg_alpharow (pData);
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_store_jpeg_rgb8_a16 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_RGB8_A16, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) + 3;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* only high-order byte */
-
- pOutrow += 4; /* next pixel */
- pWorkrow += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_RGB8_A16, MNG_LC_END);
-#endif
- /* we've got one more row of alpha-samples */
- return mng_next_jpeg_alpharow (pData);
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_JPEG12
-mng_retcode mng_store_jpeg_g12_a1 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G12_A1, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) + 2;
- iM = 0; /* start at pixel 0 */
- iB = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0x80;
- }
-
- if (iB & iM) /* opaque ? */
- mng_put_uint16 (pOutrow, 0xFFFF);/* opaque */
- else
- mng_put_uint16 (pOutrow, 0x0000);/* transparent */
-
- pOutrow += 4; /* next pixel */
- iM >>= 1;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G12_A1, MNG_LC_END);
-#endif
- /* we've got one more row of alpha-samples */
- return mng_next_jpeg_alpharow (pData);
-}
-#endif /* MNG_SUPPORT_JPEG12 */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_JPEG12
-mng_retcode mng_store_jpeg_g12_a2 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G12_A2, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) + 2;
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xC0;
- iS = 6;
- }
-
-#ifdef MNG_OPTIMIZE_FOOTPRINT_SWITCH
- {
- const mng_uint16 gray_level[4] = { 0x0000, 0x5555, 0xAAAA, 0xFFFF};
- mng_put_uint16 (pOutrow, gray_level[((iB & iM) >> iS)]) ;
- }
-#else
- switch ((iB & iM) >> iS) /* determine the gray level */
- {
- case 0x03 : { mng_put_uint16 (pOutrow, 0xFFFF); break; }
- case 0x02 : { mng_put_uint16 (pOutrow, 0xAAAA); break; }
- case 0x01 : { mng_put_uint16 (pOutrow, 0x5555); break; }
- default : { mng_put_uint16 (pOutrow, 0x0000); }
- }
-#endif
-
- pOutrow += 4; /* next pixel */
- iM >>= 2;
- iS -= 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G12_A2, MNG_LC_END);
-#endif
- /* we've got one more row of alpha-samples */
- return mng_next_jpeg_alpharow (pData);
-}
-#endif /* MNG_SUPPORT_JPEG12 */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_JPEG12
-mng_retcode mng_store_jpeg_g12_a4 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
- mng_uint16 iQ;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G12_A4, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) + 2;
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xF0;
- iS = 4;
- }
- /* get the gray level */
- iQ = (mng_uint16)((iB & iM) >> iS);
- iQ = (mng_uint16)(iQ + (iQ << 4)); /* expand to 16-bit by replication */
- iQ = (mng_uint16)(iQ + (iQ << 8));
- /* put in object buffer */
- mng_put_uint16 (pOutrow, iQ);
-
- pOutrow += 4; /* next pixel */
- iM >>= 4;
- iS -= 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G12_A4, MNG_LC_END);
-#endif
- /* we've got one more row of alpha-samples */
- return mng_next_jpeg_alpharow (pData);
-}
-#endif /* MNG_SUPPORT_JPEG12 */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_JPEG12
-mng_retcode mng_store_jpeg_g12_a8 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint16 iW;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G12_A8, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) + 2;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iW = (mng_uint16)(*pWorkrow); /* get input byte */
- iW = (mng_uint16)(iW + (iW << 8)); /* expand to 16-bit by replication */
-
- mng_put_uint16 (pOutrow, iW); /* put in object buffer */
-
- pOutrow += 4; /* next pixel */
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G12_A8, MNG_LC_END);
-#endif
- /* we've got one more row of alpha-samples */
- return mng_next_jpeg_alpharow (pData);
-}
-#endif /* MNG_SUPPORT_JPEG12 */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_JPEG12
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_store_jpeg_g12_a16 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G12_A16, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) + 2;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- { /* copy it */
- mng_put_uint16 (pOutrow, mng_get_uint16 (pWorkrow));
-
- pOutrow += 4; /* next pixel */
- pWorkrow += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_STORE_JPEG_G12_A16, MNG_LC_END);
-#endif
- /* we've got one more row of alpha-samples */
- return mng_next_jpeg_alpharow (pData);
-}
-#endif
-#endif /* MNG_SUPPORT_JPEG12 */
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_JNG */
-
-#ifndef MNG_NO_DELTA_PNG
-/* ************************************************************************** */
-/* * * */
-/* * Delta-image row routines - apply the processed & uncompressed row-data * */
-/* * onto the target "object" * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_delta_g1 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pDeltaImage)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G1, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iDeltaBlocky * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) +
- (pData->iDeltaBlockx * pBuf->iSamplesize);
- iM = 0; /* start at pixel 0 */
- iB = 0;
- /* pixel replace ? */
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0x80;
- }
-
- if (iB & iM) /* is it white ? */
- *pOutrow = 0xFF; /* white */
- else
- *pOutrow = 0x00; /* black */
-
- pOutrow += pData->iColinc; /* next pixel */
- iM >>= 1;
- }
- }
- else
- { /* pixel add ! */
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0x80;
- }
-
- if (iB & iM) /* invert if it is white ? */
- *pOutrow = (mng_uint8)(*pOutrow ^ 0xFF);
-
- pOutrow += pData->iColinc; /* next pixel */
- iM >>= 1;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G1, MNG_LC_END);
-#endif
-
- return mng_store_g1 (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_delta_g2 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pDeltaImage)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_SWITCH
- const mng_uint8 level[4] = { 0x00, 0x55, 0xAA, 0xFF};
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G2, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iDeltaBlocky * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) +
- (pData->iDeltaBlockx * pBuf->iSamplesize);
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
- /* pixel replace ? */
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xC0;
- iS = 6;
- }
-
-#ifdef MNG_OPTIMIZE_FOOTPRINT_SWITCH
- *pOutrow = level[((iB & iM) >> iS)] ;
-#else
- switch ((iB & iM) >> iS) /* determine the alpha level */
- {
- case 0x03 : { *pOutrow = 0xFF; break; }
- case 0x02 : { *pOutrow = 0xAA; break; }
- case 0x01 : { *pOutrow = 0x55; break; }
- default : { *pOutrow = 0x00; }
- }
-#endif
-
- pOutrow += pData->iColinc; /* next pixel */
- iM >>= 2;
- iS -= 2;
- }
- }
- else
- { /* pixel add ! */
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xC0;
- iS = 6;
- }
-
-#ifdef MNG_OPTIMIZE_FOOTPRINT_SWITCH
- *pOutrow = level[((*pOutrow >> 6) + ((iB & iM) >> iS)) & 0x03] ;
-#else
- switch (((*pOutrow >> 6) + ((iB & iM) >> iS)) & 0x03)
- {
- case 0x03 : { *pOutrow = 0xFF; break; }
- case 0x02 : { *pOutrow = 0xAA; break; }
- case 0x01 : { *pOutrow = 0x55; break; }
- default : { *pOutrow = 0x00; }
- }
-#endif
-
- pOutrow += pData->iColinc; /* next pixel */
- iM >>= 2;
- iS -= 2;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G2, MNG_LC_END);
-#endif
-
- return mng_store_g2 (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_delta_g4 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pDeltaImage)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
- mng_uint8 iQ;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G4, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iDeltaBlocky * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) +
- (pData->iDeltaBlockx * pBuf->iSamplesize);
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
- /* pixel replace ? */
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xF0;
- iS = 4;
- }
- /* get the gray level */
- iQ = (mng_uint8)((iB & iM) >> iS);
- /* expand to 8-bit by replication */
- iQ = (mng_uint8)(iQ + (iQ << 4));
-
- *pOutrow = iQ; /* put in object buffer */
-
- pOutrow += pData->iColinc; /* next pixel */
- iM >>= 4;
- iS -= 4;
- }
- }
- else
- { /* pixel add ! */
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xF0;
- iS = 4;
- }
- /* get the gray level */
- iQ = (mng_uint8)(((*pOutrow >> 4) + ((iB & iM) >> iS)) & 0x0F);
- /* expand to 8-bit by replication */
- iQ = (mng_uint8)(iQ + (iQ << 4));
-
- *pOutrow = iQ; /* put in object buffer */
-
- pOutrow += pData->iColinc; /* next pixel */
- iM >>= 4;
- iS -= 4;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G4, MNG_LC_END);
-#endif
-
- return mng_store_g4 (pData);
-}
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
-
-/* ************************************************************************** */
-
-mng_retcode mng_delta_g8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pDeltaImage)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G8, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iDeltaBlocky * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) +
- (pData->iDeltaBlockx * pBuf->iSamplesize);
- /* pixel replace ? */
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* put in object buffer */
-
- pOutrow += pData->iColinc; /* next pixel */
- pWorkrow++;
- }
- }
- else
- { /* pixel add ! */
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- { /* add to object buffer */
- *pOutrow = (mng_uint8)(*pOutrow + *pWorkrow);
-
- pOutrow += pData->iColinc; /* next pixel */
- pWorkrow++;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G8, MNG_LC_END);
-#endif
-
- return mng_store_g8 (pData);
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_delta_g16 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pDeltaImage)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G16, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iDeltaBlocky * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) +
- (pData->iDeltaBlockx * pBuf->iSamplesize);
- /* pixel replace ? */
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* put in object buffer */
- *(pOutrow+1) = *(pWorkrow+1);
- /* next pixel */
- pOutrow += (pData->iColinc << 1);
- pWorkrow += 2;
- }
- }
- else
- { /* pixel add ! */
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- { /* add to object buffer */
- mng_put_uint16 (pOutrow, (mng_uint16)(mng_get_uint16 (pOutrow ) +
- mng_get_uint16 (pWorkrow) ));
- /* next pixel */
- pOutrow += (pData->iColinc << 1);
- pWorkrow += 2;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G16, MNG_LC_END);
-#endif
-
- return mng_store_g16 (pData);
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_delta_rgb8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pDeltaImage)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGB8, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iDeltaBlocky * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) +
- (pData->iDeltaBlockx * pBuf->iSamplesize);
- /* pixel replace ? */
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* put in object buffer */
- *(pOutrow+1) = *(pWorkrow+1);
- *(pOutrow+2) = *(pWorkrow+2);
- /* next pixel */
- pOutrow += (pData->iColinc * 3);
- pWorkrow += 3;
- }
- }
- else
- { /* pixel add ! */
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- { /* add to object buffer */
- *pOutrow = (mng_uint8)(*pOutrow + *pWorkrow );
- *(pOutrow+1) = (mng_uint8)(*(pOutrow+1) + *(pWorkrow+1));
- *(pOutrow+2) = (mng_uint8)(*(pOutrow+2) + *(pWorkrow+2));
- /* next pixel */
- pOutrow += (pData->iColinc * 3);
- pWorkrow += 3;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGB8, MNG_LC_END);
-#endif
-
- return mng_store_rgb8 (pData);
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_delta_rgb16 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pDeltaImage)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGB16, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iDeltaBlocky * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) +
- (pData->iDeltaBlockx * pBuf->iSamplesize);
- /* pixel replace ? */
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* put in object buffer */
- *(pOutrow+1) = *(pWorkrow+1);
- *(pOutrow+2) = *(pWorkrow+2);
- *(pOutrow+3) = *(pWorkrow+3);
- *(pOutrow+4) = *(pWorkrow+4);
- *(pOutrow+5) = *(pWorkrow+5);
- /* next pixel */
- pOutrow += (pData->iColinc * 6);
- pWorkrow += 6;
- }
- }
- else
- { /* pixel add ! */
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- { /* add to object buffer */
- mng_put_uint16 (pOutrow, (mng_uint16)(mng_get_uint16 (pOutrow ) +
- mng_get_uint16 (pWorkrow ) ));
- mng_put_uint16 (pOutrow+2, (mng_uint16)(mng_get_uint16 (pOutrow+2 ) +
- mng_get_uint16 (pWorkrow+2) ));
- mng_put_uint16 (pOutrow+4, (mng_uint16)(mng_get_uint16 (pOutrow+4 ) +
- mng_get_uint16 (pWorkrow+4) ));
- /* next pixel */
- pOutrow += (pData->iColinc * 6);
- pWorkrow += 6;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGB16, MNG_LC_END);
-#endif
-
- return mng_store_rgb16 (pData);
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_delta_idx1 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pDeltaImage)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_IDX1, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iDeltaBlocky * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) +
- (pData->iDeltaBlockx * pBuf->iSamplesize);
- iM = 0; /* start at pixel 0 */
- iB = 0;
- /* pixel replace ? */
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0x80;
- }
-
- if (iB & iM) /* put the right index value */
- *pOutrow = 1;
- else
- *pOutrow = 0;
-
- pOutrow += pData->iColinc; /* next pixel */
- iM >>= 1;
- }
- }
- else
- { /* pixel add ! */
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0x80;
- }
-
- if (iB & iM) /* invert if it is non-zero index */
- *pOutrow = (mng_uint8)(*pOutrow ^ 0x01);
-
- pOutrow += pData->iColinc; /* next pixel */
- iM >>= 1;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_IDX1, MNG_LC_END);
-#endif
-
- return mng_store_idx1 (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_delta_idx2 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pDeltaImage)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_IDX2, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iDeltaBlocky * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) +
- (pData->iDeltaBlockx * pBuf->iSamplesize);
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
- /* pixel replace ? */
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xC0;
- iS = 6;
- }
- /* put the index */
- *pOutrow = (mng_uint8)((iB & iM) >> iS);
-
- pOutrow += pData->iColinc; /* next pixel */
- iM >>= 2;
- iS -= 2;
- }
- }
- else
- { /* pixel add ! */
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xC0;
- iS = 6;
- }
- /* calculate the index */
- *pOutrow = (mng_uint8)((*pOutrow + ((iB & iM) >> iS)) & 0x03);
-
- pOutrow += pData->iColinc; /* next pixel */
- iM >>= 2;
- iS -= 2;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_IDX2, MNG_LC_END);
-#endif
-
- return mng_store_idx2 (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_delta_idx4 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pDeltaImage)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_IDX4, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iDeltaBlocky * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) +
- (pData->iDeltaBlockx * pBuf->iSamplesize);
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
- /* pixel replace ? */
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xF0;
- iS = 4;
- }
- /* put the index */
- *pOutrow = (mng_uint8)((iB & iM) >> iS);
-
- pOutrow += pData->iColinc; /* next pixel */
- iM >>= 4;
- iS -= 4;
- }
- }
- else
- { /* pixel add ! */
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xF0;
- iS = 4;
- }
- /* calculate the index */
- *pOutrow = (mng_uint8)((*pOutrow + ((iB & iM) >> iS)) & 0x0F);
-
- pOutrow += pData->iColinc; /* next pixel */
- iM >>= 4;
- iS -= 4;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_IDX4, MNG_LC_END);
-#endif
-
- return mng_store_idx4 (pData);
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_delta_idx8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pDeltaImage)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_IDX8, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iDeltaBlocky * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) +
- (pData->iDeltaBlockx * pBuf->iSamplesize);
- /* pixel replace ? */
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* put in object buffer */
-
- pOutrow += pData->iColinc; /* next pixel */
- pWorkrow++;
- }
- }
- else
- { /* pixel add ! */
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- { /* add to object buffer */
- *pOutrow = (mng_uint8)(*pOutrow + *pWorkrow);
-
- pOutrow += pData->iColinc; /* next pixel */
- pWorkrow++;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_IDX8, MNG_LC_END);
-#endif
-
- return mng_store_idx8 (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_delta_ga8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pDeltaImage)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_GA8, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iDeltaBlocky * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) +
- (pData->iDeltaBlockx * pBuf->iSamplesize);
- /* pixel replace ? */
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* put in object buffer */
- *(pOutrow+1) = *(pWorkrow+1);
- /* next pixel */
- pOutrow += (pData->iColinc << 1);
- pWorkrow += 2;
- }
- }
- else
- { /* pixel add ! */
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- { /* add to object buffer */
- *pOutrow = (mng_uint8)(*pOutrow + *pWorkrow );
- *(pOutrow+1) = (mng_uint8)(*(pOutrow+1) + *(pWorkrow+1));
- /* next pixel */
- pOutrow += (pData->iColinc << 1);
- pWorkrow += 2;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_GA8, MNG_LC_END);
-#endif
-
- return mng_store_ga8 (pData);
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_delta_ga16 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pDeltaImage)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_GA16, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iDeltaBlocky * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) +
- (pData->iDeltaBlockx * pBuf->iSamplesize);
- /* pixel replace ? */
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* put in object buffer */
- *(pOutrow+1) = *(pWorkrow+1);
- *(pOutrow+2) = *(pWorkrow+2);
- *(pOutrow+3) = *(pWorkrow+3);
- /* next pixel */
- pOutrow += (pData->iColinc << 2);
- pWorkrow += 4;
- }
- }
- else
- { /* pixel add ! */
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- { /* add to object buffer */
- mng_put_uint16 (pOutrow, (mng_uint16)(mng_get_uint16 (pOutrow ) +
- mng_get_uint16 (pWorkrow ) ));
- mng_put_uint16 (pOutrow+2, (mng_uint16)(mng_get_uint16 (pOutrow+2 ) +
- mng_get_uint16 (pWorkrow+2) ));
- /* next pixel */
- pOutrow += (pData->iColinc << 2);
- pWorkrow += 4;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_GA16, MNG_LC_END);
-#endif
-
- return mng_store_ga16 (pData);
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_delta_rgba8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pDeltaImage)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGBA8, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iDeltaBlocky * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) +
- (pData->iDeltaBlockx * pBuf->iSamplesize);
- /* pixel replace ? */
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow; /* put in object buffer */
- *(pOutrow+1) = *(pWorkrow+1);
- *(pOutrow+2) = *(pWorkrow+2);
- *(pOutrow+3) = *(pWorkrow+3);
- /* next pixel */
- pOutrow += (pData->iColinc << 2);
- pWorkrow += 4;
- }
- }
- else
- { /* pixel add ! */
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- { /* add to object buffer */
- *pOutrow = (mng_uint8)(*pOutrow + *pWorkrow );
- *(pOutrow+1) = (mng_uint8)(*(pOutrow+1) + *(pWorkrow+1));
- *(pOutrow+2) = (mng_uint8)(*(pOutrow+2) + *(pWorkrow+2));
- *(pOutrow+3) = (mng_uint8)(*(pOutrow+3) + *(pWorkrow+3));
- /* next pixel */
- pOutrow += (pData->iColinc << 2);
- pWorkrow += 4;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGBA8, MNG_LC_END);
-#endif
-
- return mng_store_rgba8 (pData);
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_delta_rgba16 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pDeltaImage)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGBA16, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iDeltaBlocky * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) +
- (pData->iDeltaBlockx * pBuf->iSamplesize);
- /* pixel replace ? */
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- MNG_COPY (pOutrow, pWorkrow, 8); /* put in object buffer */
- /* next pixel */
- pOutrow += (pData->iColinc << 3);
- pWorkrow += 8;
- }
- }
- else
- { /* pixel add ! */
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- { /* add to object buffer */
- mng_put_uint16 (pOutrow, (mng_uint16)(mng_get_uint16 (pOutrow ) +
- mng_get_uint16 (pWorkrow ) ));
- mng_put_uint16 (pOutrow+2, (mng_uint16)(mng_get_uint16 (pOutrow+2 ) +
- mng_get_uint16 (pWorkrow+2) ));
- mng_put_uint16 (pOutrow+4, (mng_uint16)(mng_get_uint16 (pOutrow+4 ) +
- mng_get_uint16 (pWorkrow+4) ));
- mng_put_uint16 (pOutrow+6, (mng_uint16)(mng_get_uint16 (pOutrow+6 ) +
- mng_get_uint16 (pWorkrow+6) ));
- /* next pixel */
- pOutrow += (pData->iColinc << 3);
- pWorkrow += 8;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGBA16, MNG_LC_END);
-#endif
-
- return mng_store_rgba16 (pData);
-}
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Delta-image row routines - apply the source row onto the target * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_delta_g1_g1 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G1_G1, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
- if ((pData->iDeltatype == MNG_DELTATYPE_REPLACE ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- {
- MNG_COPY (pOutrow, pWorkrow, pData->iRowsamples);
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = (mng_uint8)(((mng_uint16)*pOutrow +
- (mng_uint16)*pWorkrow) & 0x01);
-
- pOutrow++;
- pWorkrow++;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G1_G1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_delta_g2_g2 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G2_G2, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
- if ((pData->iDeltatype == MNG_DELTATYPE_REPLACE ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- {
- MNG_COPY (pOutrow, pWorkrow, pData->iRowsamples);
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = (mng_uint8)(((mng_uint16)*pOutrow +
- (mng_uint16)*pWorkrow) & 0x03);
-
- pOutrow++;
- pWorkrow++;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G2_G2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_delta_g4_g4 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G4_G4, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
- if ((pData->iDeltatype == MNG_DELTATYPE_REPLACE ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- {
- MNG_COPY (pOutrow, pWorkrow, pData->iRowsamples);
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = (mng_uint8)(((mng_uint16)*pOutrow +
- (mng_uint16)*pWorkrow) & 0x0F);
-
- pOutrow++;
- pWorkrow++;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G4_G4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_delta_g8_g8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G8_G8, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
- if ((pData->iDeltatype == MNG_DELTATYPE_REPLACE ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- {
- MNG_COPY (pOutrow, pWorkrow, pData->iRowsamples);
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = (mng_uint8)(((mng_uint16)*pOutrow +
- (mng_uint16)*pWorkrow) & 0xFF);
-
- pOutrow++;
- pWorkrow++;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G8_G8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_delta_g16_g16 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G16_G16, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
- if ((pData->iDeltatype == MNG_DELTATYPE_REPLACE ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- {
- MNG_COPY (pOutrow, pWorkrow, (pData->iRowsamples << 1));
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- mng_put_uint16 (pOutrow, (mng_uint16)((mng_get_uint16 (pOutrow) +
- mng_get_uint16 (pWorkrow)) & 0xFFFF));
-
- pOutrow += 2;
- pWorkrow += 2;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_G16_G16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_NO_DELTA_PNG */
-
-/* ************************************************************************** */
-
-mng_retcode mng_delta_rgb8_rgb8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGB8_RGB8, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
- if ((pData->iDeltatype == MNG_DELTATYPE_REPLACE ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- {
- MNG_COPY (pOutrow, pWorkrow, pData->iRowsamples * 3);
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples*3; iX > 0; iX--)
-#else
- for (iX = 0; iX < (pData->iRowsamples * 3); iX++)
-#endif
- {
- *pOutrow = (mng_uint8)(((mng_uint16)*pOutrow +
- (mng_uint16)*pWorkrow) & 0xFF);
-
- pOutrow++;
- pWorkrow++;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGB8_RGB8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_delta_rgb16_rgb16 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGB16_RGB16, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
- if ((pData->iDeltatype == MNG_DELTATYPE_REPLACE ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- {
- MNG_COPY (pOutrow, pWorkrow, (pData->iRowsamples * 6));
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- mng_put_uint16 (pOutrow, (mng_uint16)((mng_get_uint16 (pOutrow ) +
- mng_get_uint16 (pWorkrow )) & 0xFFFF));
- mng_put_uint16 (pOutrow+2, (mng_uint16)((mng_get_uint16 (pOutrow+2) +
- mng_get_uint16 (pWorkrow+2)) & 0xFFFF));
- mng_put_uint16 (pOutrow+4, (mng_uint16)((mng_get_uint16 (pOutrow+4) +
- mng_get_uint16 (pWorkrow+4)) & 0xFFFF));
-
- pOutrow += 6;
- pWorkrow += 6;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGB16_RGB16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode mng_delta_ga8_ga8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_GA8_GA8, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
- if ((pData->iDeltatype == MNG_DELTATYPE_REPLACE ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- {
- MNG_COPY (pOutrow, pWorkrow, pData->iRowsamples << 1);
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = (pData->iRowsamples<<1); iX > 0; iX--)
-#else
- for (iX = 0; iX < (pData->iRowsamples << 1); iX++)
-#endif
- {
- *pOutrow = (mng_uint8)(((mng_uint16)*pOutrow +
- (mng_uint16)*pWorkrow) & 0xFF);
-
- pOutrow++;
- pWorkrow++;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_GA8_GA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_delta_ga8_g8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_GA8_G8, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKCOLORREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow;
-
- pOutrow += 2;
- pWorkrow++;
- }
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKCOLORADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = (mng_uint8)(((mng_uint16)*pOutrow +
- (mng_uint16)*pWorkrow) & 0xFF);
-
- pOutrow += 2;
- pWorkrow++;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_GA8_G8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_delta_ga8_a8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_GA8_A8, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) + 1;
-
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKALPHAREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow;
-
- pOutrow += 2;
- pWorkrow++;
- }
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKALPHAADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = (mng_uint8)(((mng_uint16)*pOutrow +
- (mng_uint16)*pWorkrow) & 0xFF);
-
- pOutrow += 2;
- pWorkrow++;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_GA8_A8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_delta_ga16_ga16 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_GA16_GA16, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
- if ((pData->iDeltatype == MNG_DELTATYPE_REPLACE ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- {
- MNG_COPY (pOutrow, pWorkrow, (pData->iRowsamples << 2));
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- mng_put_uint16 (pOutrow, (mng_uint16)((mng_get_uint16 (pOutrow ) +
- mng_get_uint16 (pWorkrow )) & 0xFFFF));
- mng_put_uint16 (pOutrow+2, (mng_uint16)((mng_get_uint16 (pOutrow+2) +
- mng_get_uint16 (pWorkrow+2)) & 0xFFFF));
-
- pOutrow += 4;
- pWorkrow += 4;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_GA16_GA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_delta_ga16_g16 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_GA16_G16, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKCOLORREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- mng_put_uint16 (pOutrow, mng_get_uint16 (pWorkrow));
-
- pOutrow += 4;
- pWorkrow += 2;
- }
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKCOLORADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- mng_put_uint16 (pOutrow, (mng_uint16)((mng_get_uint16 (pOutrow) +
- mng_get_uint16 (pWorkrow)) & 0xFFFF));
-
- pOutrow += 4;
- pWorkrow += 2;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_GA16_G16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_delta_ga16_a16 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_GA16_A16, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKALPHAREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- mng_put_uint16 (pOutrow+2, mng_get_uint16 (pWorkrow));
-
- pOutrow += 4;
- pWorkrow += 2;
- }
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKALPHAADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- mng_put_uint16 (pOutrow+2, (mng_uint16)((mng_get_uint16 (pOutrow+2) +
- mng_get_uint16 (pWorkrow)) & 0xFFFF));
-
- pOutrow += 4;
- pWorkrow += 2;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_GA16_A16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_NO_DELTA_PNG */
-
-/* ************************************************************************** */
-
-mng_retcode mng_delta_rgba8_rgba8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGBA8_RGBA8, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
- if ((pData->iDeltatype == MNG_DELTATYPE_REPLACE ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- {
- MNG_COPY (pOutrow, pWorkrow, pData->iRowsamples << 2);
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = (pData->iRowsamples << 2); iX > 0; iX--)
-#else
- for (iX = 0; iX < (pData->iRowsamples << 2); iX++)
-#endif
- {
- *pOutrow = (mng_uint8)(((mng_uint16)*pOutrow +
- (mng_uint16)*pWorkrow) & 0xFF);
-
- pOutrow++;
- pWorkrow++;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGBA8_RGBA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-mng_retcode mng_delta_rgba8_rgb8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGBA8_RGB8, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKCOLORREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow;
- *(pOutrow+1) = *(pWorkrow+1);
- *(pOutrow+2) = *(pWorkrow+2);
-
- pOutrow += 4;
- pWorkrow += 3;
- }
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKCOLORADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = (mng_uint8)(((mng_uint16)*pOutrow +
- (mng_uint16)*pWorkrow ) & 0xFF);
- *(pOutrow+1) = (mng_uint8)(((mng_uint16)*(pOutrow+1) +
- (mng_uint16)*(pWorkrow+1)) & 0xFF);
- *(pOutrow+2) = (mng_uint8)(((mng_uint16)*(pOutrow+2) +
- (mng_uint16)*(pWorkrow+2)) & 0xFF);
-
- pOutrow += 4;
- pWorkrow += 3;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGBA8_RGB8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_delta_rgba8_a8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGBA8_A8, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize) + 3;
-
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKALPHAREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = *pWorkrow;
-
- pOutrow += 4;
- pWorkrow++;
- }
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKALPHAADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = (mng_uint8)(((mng_uint16)*pOutrow +
- (mng_uint16)*pWorkrow) & 0xFF);
-
- pOutrow += 4;
- pWorkrow++;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGBA8_A8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_DELTA_PNG */
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_delta_rgba16_rgba16 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGBA16_RGBA16, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
- if ((pData->iDeltatype == MNG_DELTATYPE_REPLACE ) ||
- (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELREPLACE) )
- {
- MNG_COPY (pOutrow, pWorkrow, (pData->iRowsamples << 3));
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKPIXELADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- mng_put_uint16 (pOutrow, (mng_uint16)((mng_get_uint16 (pOutrow ) +
- mng_get_uint16 (pWorkrow )) & 0xFFFF));
- mng_put_uint16 (pOutrow+2, (mng_uint16)((mng_get_uint16 (pOutrow+2) +
- mng_get_uint16 (pWorkrow+2)) & 0xFFFF));
- mng_put_uint16 (pOutrow+4, (mng_uint16)((mng_get_uint16 (pOutrow+4) +
- mng_get_uint16 (pWorkrow+4)) & 0xFFFF));
- mng_put_uint16 (pOutrow+6, (mng_uint16)((mng_get_uint16 (pOutrow+6) +
- mng_get_uint16 (pWorkrow+6)) & 0xFFFF));
-
- pOutrow += 8;
- pWorkrow += 8;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGBA16_RGBA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_delta_rgba16_rgb16 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGBA16_RGB16, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKCOLORREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- mng_put_uint16 (pOutrow, mng_get_uint16 (pWorkrow ));
- mng_put_uint16 (pOutrow+2, mng_get_uint16 (pWorkrow+2));
- mng_put_uint16 (pOutrow+4, mng_get_uint16 (pWorkrow+4));
-
- pOutrow += 8;
- pWorkrow += 6;
- }
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKCOLORADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- mng_put_uint16 (pOutrow, (mng_uint16)((mng_get_uint16 (pOutrow ) +
- mng_get_uint16 (pWorkrow )) & 0xFFFF));
- mng_put_uint16 (pOutrow+2, (mng_uint16)((mng_get_uint16 (pOutrow+2) +
- mng_get_uint16 (pWorkrow+2)) & 0xFFFF));
- mng_put_uint16 (pOutrow+4, (mng_uint16)((mng_get_uint16 (pOutrow+4) +
- mng_get_uint16 (pWorkrow+4)) & 0xFFFF));
-
- pOutrow += 8;
- pWorkrow += 6;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGBA16_RGB16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_delta_rgba16_a16 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGBA16_A16, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKALPHAREPLACE)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- mng_put_uint16 (pOutrow+6, mng_get_uint16 (pWorkrow));
-
- pOutrow += 8;
- pWorkrow += 2;
- }
- }
- else
- if (pData->iDeltatype == MNG_DELTATYPE_BLOCKALPHAADD)
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- mng_put_uint16 (pOutrow+6, (mng_uint16)((mng_get_uint16 (pOutrow+6) +
- mng_get_uint16 (pWorkrow)) & 0xFFFF));
-
- pOutrow += 8;
- pWorkrow += 2;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DELTA_RGBA16_A16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_NO_DELTA_PNG */
-
-/* ************************************************************************** */
-/* * * */
-/* * Delta-image row routines - scale the delta to bitdepth of target * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_scale_g1_g2 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G1_G2, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pWorkrow = (mng_uint8)(*pWorkrow << 1);
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G1_G2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_scale_g1_g4 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G1_G4, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pWorkrow = (mng_uint8)(*pWorkrow << 3);
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G1_G4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_scale_g1_g8 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G1_G8, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pWorkrow = (mng_uint8)(*pWorkrow << 7);
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G1_G8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_scale_g1_g16 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_uint8p pOutrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G1_G16, MNG_LC_START);
-#endif
-
- pWorkrow = pWorkrow + (pData->iRowsamples - 1);
- pOutrow = pOutrow + ((pData->iRowsamples - 1) << 1);
-/* pWorkrow = (mng_uint8p)((mng_uint32)pWorkrow + pData->iRowsamples - 1); */
-/* pOutrow = (mng_uint8p)((mng_uint32)pOutrow + ((pData->iRowsamples - 1) << 1)); */
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *(pOutrow+1) = 0;
- *pOutrow = (mng_uint8)(*pWorkrow << 7);
-
- pWorkrow--;
- pOutrow -= 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G1_G16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_scale_g2_g4 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G2_G4, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pWorkrow = (mng_uint8)(*pWorkrow << 2);
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G2_G4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_scale_g2_g8 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G2_G8, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pWorkrow = (mng_uint8)(*pWorkrow << 6);
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G2_G8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_scale_g2_g16 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_uint8p pOutrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G2_G16, MNG_LC_START);
-#endif
-
- pWorkrow = pWorkrow + (pData->iRowsamples - 1);
- pOutrow = pOutrow + ((pData->iRowsamples - 1) << 1);
-/* pWorkrow = (mng_uint8p)((mng_uint32)pWorkrow + pData->iRowsamples - 1); */
-/* pOutrow = (mng_uint8p)((mng_uint32)pOutrow + ((pData->iRowsamples - 1) << 1)); */
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *(pOutrow+1) = 0;
- *pOutrow = (mng_uint8)(*pWorkrow << 6);
-
- pWorkrow--;
- pOutrow -= 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G2_G16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_scale_g4_g8 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G4_G8, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pWorkrow = (mng_uint8)(*pWorkrow << 4);
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G4_G8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_scale_g4_g16 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_uint8p pOutrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G4_G16, MNG_LC_START);
-#endif
-
- pWorkrow = pWorkrow + (pData->iRowsamples - 1);
- pOutrow = pOutrow + ((pData->iRowsamples - 1) << 1);
-/* pWorkrow = (mng_uint8p)((mng_uint32)pWorkrow + pData->iRowsamples - 1); */
-/* pOutrow = (mng_uint8p)((mng_uint32)pOutrow + ((pData->iRowsamples - 1) << 1)); */
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *(pOutrow+1) = 0;
- *pOutrow = (mng_uint8)(*pWorkrow << 4);
-
- pWorkrow--;
- pOutrow -= 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G4_G16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_scale_g8_g16 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_uint8p pOutrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G8_G16, MNG_LC_START);
-#endif
-
- pWorkrow = pWorkrow + (pData->iRowsamples - 1);
- pOutrow = pOutrow + ((pData->iRowsamples - 1) << 1);
-/* pWorkrow = (mng_uint8p)((mng_uint32)pWorkrow + pData->iRowsamples - 1); */
-/* pOutrow = (mng_uint8p)((mng_uint32)pOutrow + ((pData->iRowsamples - 1) << 1)); */
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *(pOutrow+1) = 0;
- *pOutrow = *pWorkrow;
-
- pWorkrow--;
- pOutrow -= 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G8_G16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_scale_ga8_ga16 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_uint8p pOutrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_GA8_GA16, MNG_LC_START);
-#endif
-
- pWorkrow = pWorkrow + ((pData->iRowsamples - 1) << 1);
- pOutrow = pOutrow + ((pData->iRowsamples - 1) << 2);
-/* pWorkrow = (mng_uint8p)((mng_uint32)pWorkrow + ((pData->iRowsamples - 1) << 1)); */
-/* pOutrow = (mng_uint8p)((mng_uint32)pOutrow + ((pData->iRowsamples - 1) << 2)); */
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *(pOutrow+3) = 0;
- *(pOutrow+2) = *(pWorkrow+1);
- *(pOutrow+1) = 0;
- *pOutrow = *pWorkrow;
-
- pWorkrow -= 2;
- pOutrow -= 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_GA8_GA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_scale_rgb8_rgb16 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_uint8p pOutrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_RGB8_RGB16, MNG_LC_START);
-#endif
-
- pWorkrow = pWorkrow + (3 * (pData->iRowsamples - 1));
- pOutrow = pOutrow + (6 * (pData->iRowsamples - 1));
-/* pWorkrow = (mng_uint8p)((mng_uint32)pWorkrow + 3 * (pData->iRowsamples - 1)); */
-/* pOutrow = (mng_uint8p)((mng_uint32)pOutrow + 6 * (pData->iRowsamples - 1)); */
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *(pOutrow+5) = 0;
- *(pOutrow+4) = *(pWorkrow+2);
- *(pOutrow+3) = 0;
- *(pOutrow+2) = *(pWorkrow+1);
- *(pOutrow+1) = 0;
- *pOutrow = *pWorkrow;
-
- pWorkrow -= 3;
- pOutrow -= 6;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_RGB8_RGB16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_scale_rgba8_rgba16 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_uint8p pOutrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_RGBA8_RGBA16, MNG_LC_START);
-#endif
-
- pWorkrow = pWorkrow + ((pData->iRowsamples - 1) << 2);
- pOutrow = pOutrow + ((pData->iRowsamples - 1) << 3);
-/* pWorkrow = (mng_uint8p)((mng_uint32)pWorkrow + ((pData->iRowsamples - 1) << 2)); */
-/* pOutrow = (mng_uint8p)((mng_uint32)pOutrow + ((pData->iRowsamples - 1) << 3)); */
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *(pOutrow+7) = 0;
- *(pOutrow+6) = *(pWorkrow+3);
- *(pOutrow+5) = 0;
- *(pOutrow+4) = *(pWorkrow+2);
- *(pOutrow+3) = 0;
- *(pOutrow+2) = *(pWorkrow+1);
- *(pOutrow+1) = 0;
- *pOutrow = *pWorkrow;
-
- pWorkrow -= 4;
- pOutrow -= 8;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_RGBA8_RGBA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_scale_g2_g1 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G2_G1, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pWorkrow = (mng_uint8)(*pWorkrow >> 1);
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G2_G1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_scale_g4_g1 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G4_G1, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pWorkrow = (mng_uint8)(*pWorkrow >> 3);
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G4_G1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_scale_g8_g1 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G8_G1, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pWorkrow = (mng_uint8)(*pWorkrow >> 7);
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G8_G1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_scale_g16_g1 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_uint8p pOutrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G16_G1, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = (mng_uint8)(mng_get_uint16 (pWorkrow) >> 15);
- pOutrow++;
- pWorkrow += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G16_G1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_scale_g4_g2 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G4_G2, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pWorkrow = (mng_uint8)(*pWorkrow >> 2);
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G4_G2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_scale_g8_g2 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G8_G2, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pWorkrow = (mng_uint8)(*pWorkrow >> 6);
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G8_G2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_scale_g16_g2 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_uint8p pOutrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G16_G2, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = (mng_uint8)(mng_get_uint16 (pWorkrow) >> 14);
- pOutrow++;
- pWorkrow += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G16_G2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_scale_g8_g4 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G8_G4, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pWorkrow = (mng_uint8)(*pWorkrow >> 4);
- pWorkrow++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G8_G4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_scale_g16_g4 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_uint8p pOutrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G16_G4, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = (mng_uint8)(mng_get_uint16 (pWorkrow) >> 12);
- pOutrow++;
- pWorkrow += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G16_G4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* NO_1_2_4BIT_SUPPORT */
-
-/* ************************************************************************** */
-
-mng_retcode mng_scale_g16_g8 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_uint8p pOutrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G16_G8, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = (mng_uint8)(mng_get_uint16 (pWorkrow) >> 8);
- pOutrow++;
- pWorkrow += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_G16_G8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_scale_ga16_ga8 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_uint8p pOutrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_GA16_GA8, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = (mng_uint8)(mng_get_uint16 (pWorkrow) >> 8);
- pOutrow++;
- pWorkrow += 2;
- *pOutrow = (mng_uint8)(mng_get_uint16 (pWorkrow) >> 8);
- pOutrow++;
- pWorkrow += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_GA16_GA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_scale_rgb16_rgb8 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_uint8p pOutrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_RGB16_RGB8, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = (mng_uint8)(mng_get_uint16 (pWorkrow) >> 8);
- pOutrow++;
- pWorkrow += 2;
- *pOutrow = (mng_uint8)(mng_get_uint16 (pWorkrow) >> 8);
- pOutrow++;
- pWorkrow += 2;
- *pOutrow = (mng_uint8)(mng_get_uint16 (pWorkrow) >> 8);
- pOutrow++;
- pWorkrow += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_RGB16_RGB8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_scale_rgba16_rgba8 (mng_datap pData)
-{
- mng_uint8p pWorkrow = pData->pRGBArow;
- mng_uint8p pOutrow = pData->pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_RGBA16_RGBA8, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pOutrow = (mng_uint8)(mng_get_uint16 (pWorkrow) >> 8);
- pOutrow++;
- pWorkrow += 2;
- *pOutrow = (mng_uint8)(mng_get_uint16 (pWorkrow) >> 8);
- pOutrow++;
- pWorkrow += 2;
- *pOutrow = (mng_uint8)(mng_get_uint16 (pWorkrow) >> 8);
- pOutrow++;
- pWorkrow += 2;
- *pOutrow = (mng_uint8)(mng_get_uint16 (pWorkrow) >> 8);
- pOutrow++;
- pWorkrow += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_SCALE_RGBA16_RGBA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Delta-image bit routines - promote bit_depth * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_uint8 mng_promote_replicate_1_2 (mng_uint8 iB)
-{
- return (mng_uint8)((iB << 1) | iB);
-}
-
-/* ************************************************************************** */
-
-mng_uint8 mng_promote_replicate_1_4 (mng_uint8 iB)
-{
- iB = (mng_uint8)((iB << 1) + iB);
- return (mng_uint8)((iB << 2) + iB);
-}
-
-/* ************************************************************************** */
-
-mng_uint8 mng_promote_replicate_1_8 (mng_uint8 iB)
-{
- iB = (mng_uint8)((iB << 1) + iB);
- iB = (mng_uint8)((iB << 2) + iB);
- return (mng_uint8)((iB << 4) + iB);
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_uint16 mng_promote_replicate_1_16 (mng_uint8 iB)
-{
- iB = (mng_uint8)((iB << 1) + iB);
- iB = (mng_uint8)((iB << 2) + iB);
- iB = (mng_uint8)((iB << 4) + iB);
- return (mng_uint16)(((mng_uint16)iB << 8) + (mng_uint16)iB);
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_uint8 mng_promote_replicate_2_4 (mng_uint8 iB)
-{
- return (mng_uint8)((iB << 2) + iB);
-}
-
-/* ************************************************************************** */
-
-mng_uint8 mng_promote_replicate_2_8 (mng_uint8 iB)
-{
- iB = (mng_uint8)((iB << 2) + iB);
- return (mng_uint8)((iB << 4) + iB);
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_uint16 mng_promote_replicate_2_16 (mng_uint8 iB)
-{
- iB = (mng_uint8)((iB << 2) + iB);
- iB = (mng_uint8)((iB << 4) + iB);
- return (mng_uint16)(((mng_uint16)iB << 8) + (mng_uint16)iB);
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_uint8 mng_promote_replicate_4_8 (mng_uint8 iB)
-{
- return (mng_uint8)((iB << 4) + iB);
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_uint16 mng_promote_replicate_4_16 (mng_uint8 iB)
-{
- iB = (mng_uint8)((iB << 4) + iB);
- return (mng_uint16)(((mng_uint16)iB << 8) + (mng_uint16)iB);
-}
-#endif
-#endif /* NO_1_2_4BIT_SUPPORT */
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_uint16 mng_promote_replicate_8_16 (mng_uint8 iB)
-{
- return (mng_uint16)(((mng_uint16)iB << 8) + (mng_uint16)iB);
-}
-#endif
-
-/* ************************************************************************** */
-
-#if !defined(MNG_NO_DELTA_PNG)
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_uint8 mng_promote_zerofill_1_2 (mng_uint8 iB)
-{
- return (mng_uint8)(iB << 1);
-}
-
-/* ************************************************************************** */
-
-mng_uint8 mng_promote_zerofill_1_4 (mng_uint8 iB)
-{
- return (mng_uint8)(iB << 3);
-}
-
-/* ************************************************************************** */
-
-mng_uint8 mng_promote_zerofill_1_8 (mng_uint8 iB)
-{
- return (mng_uint8)(iB << 7);
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_uint16 mng_promote_zerofill_1_16 (mng_uint8 iB)
-{
- return (mng_uint16)((mng_uint16)iB << 15);
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_uint8 mng_promote_zerofill_2_4 (mng_uint8 iB)
-{
- return (mng_uint8)(iB << 2);
-}
-
-/* ************************************************************************** */
-
-mng_uint8 mng_promote_zerofill_2_8 (mng_uint8 iB)
-{
- return (mng_uint8)(iB << 6);
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_uint16 mng_promote_zerofill_2_16 (mng_uint8 iB)
-{
- return (mng_uint16)((mng_uint16)iB << 14);
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_uint8 mng_promote_zerofill_4_8 (mng_uint8 iB)
-{
- return (mng_uint8)(iB << 4);
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_uint16 mng_promote_zerofill_4_16 (mng_uint8 iB)
-{
- return (mng_uint16)((mng_uint16)iB << 12);
-}
-#endif
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_uint16 mng_promote_zerofill_8_16 (mng_uint8 iB)
-{
- return (mng_uint16)((mng_uint16)iB << 8);
-}
-#endif
-#endif /* MNG_NO_DELTA_PNG */
-
-/* ************************************************************************** */
-/* * * */
-/* * Delta-image row routines - promote color_type * */
-/* * * */
-/* ************************************************************************** */
-
-#if !defined(MNG_NO_DELTA_PNG) || !defined(MNG_SKIPCHUNK_PAST) || !defined(MNG_SKIPCHUNK_MAGN)
-mng_retcode mng_promote_g8_g8 (mng_datap pData)
-{
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint8 iB;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G8_G8, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iB = *pSrcline;
- if (pData->fPromBitdepth) /* bitdepth promoted ? */
- iB = ((mng_bitdepth_8)pData->fPromBitdepth) (iB);
- *pDstline = iB;
-
- pSrcline++;
- pDstline++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G8_G8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_g8_g16 (mng_datap pData)
-{
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint16 iW;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G8_G16, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iW = ((mng_bitdepth_16)pData->fPromBitdepth) (*pSrcline);
-
- *pDstline = (mng_uint8)(iW >> 8);
- *(pDstline+1) = (mng_uint8)(iW && 0xFF);
-
- pSrcline++;
- pDstline += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G8_G16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_promote_g16_g16 (mng_datap pData)
-{
- mng_uint16p pSrcline = (mng_uint16p)pData->pPromSrc;
- mng_uint16p pDstline = (mng_uint16p)pData->pPromDst;
- mng_uint32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G16_G16, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- *pDstline = *pSrcline;
- pSrcline++;
- pDstline++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G16_G16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_promote_g8_ga8 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pPromBuf;
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint8 iB;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G8_GA8, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iB = *pSrcline;
- /* no cheap transparency ? */
- if ((!pBuf->bHasTRNS) || ((mng_uint16)iB != pBuf->iTRNSgray))
- *(pDstline+1) = 0xFF;
-
- if (pData->fPromBitdepth) /* bitdepth promoted ? */
- iB = ((mng_bitdepth_8)pData->fPromBitdepth) (iB);
-
- *pDstline = iB;
-
- pSrcline++;
- pDstline += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G8_GA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_g8_ga16 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pPromBuf;
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint8 iB;
- mng_uint16 iW;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G8_GA16, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iB = *pSrcline;
- /* no cheap transparency ? */
- if ((!pBuf->bHasTRNS) || ((mng_uint16)iB != pBuf->iTRNSgray))
- {
- *(pDstline+2) = 0xFF;
- *(pDstline+3) = 0xFF;
- }
-
- iW = ((mng_bitdepth_16)pData->fPromBitdepth) (iB);
-
- *pDstline = (mng_uint8)(iW >> 8);
- *(pDstline+1) = (mng_uint8)(iW && 0xFF);
-
- pSrcline++;
- pDstline += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G8_GA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_g16_ga16 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pPromBuf;
- mng_uint16p pSrcline = (mng_uint16p)pData->pPromSrc;
- mng_uint16p pDstline = (mng_uint16p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint16 iW;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G16_GA16, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iW = *pSrcline;
- /* no cheap transparency ? */
- if ((!pBuf->bHasTRNS) || ((mng_uint16)iW != pBuf->iTRNSgray))
- *(pDstline+1) = 0xFFFF;
-
- *pDstline = iW;
-
- pSrcline++;
- pDstline += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G16_GA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_promote_g8_rgb8 (mng_datap pData)
-{
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint8 iB;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G8_RGB8, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iB = *pSrcline;
-
- if (pData->fPromBitdepth) /* bitdepth promoted ? */
- iB = ((mng_bitdepth_8)pData->fPromBitdepth) (iB);
-
- *pDstline = iB;
- *(pDstline+1) = iB;
- *(pDstline+2) = iB;
-
- pSrcline++;
- pDstline += 3;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G8_RGB8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_g8_rgb16 (mng_datap pData)
-{
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint8 iB;
- mng_uint16 iW;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G8_RGB16, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iB = *pSrcline;
- iW = ((mng_bitdepth_16)pData->fPromBitdepth) (iB);
-
- iB = (mng_uint8)(iW >> 8);
- *pDstline = iB;
- *(pDstline+2) = iB;
- *(pDstline+4) = iB;
- iB = (mng_uint8)(iW && 0xFF);
- *(pDstline+1) = iB;
- *(pDstline+3) = iB;
- *(pDstline+5) = iB;
-
- pSrcline++;
- pDstline += 6;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G8_RGB16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_g16_rgb16 (mng_datap pData)
-{
- mng_uint16p pSrcline = (mng_uint16p)pData->pPromSrc;
- mng_uint16p pDstline = (mng_uint16p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint16 iW;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G16_RGB16, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iW = *pSrcline;
-
- *pDstline = iW;
- *(pDstline+1) = iW;
- *(pDstline+2) = iW;
-
- pSrcline++;
- pDstline += 3;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G16_RGB16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_promote_g8_rgba8 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pPromBuf;
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint8 iB;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G8_RGBA8, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iB = *pSrcline;
- /* no cheap transparency ? */
- if ((!pBuf->bHasTRNS) || ((mng_uint16)iB != pBuf->iTRNSgray))
- *(pDstline+3) = 0xFF;
-
- if (pData->fPromBitdepth) /* bitdepth promoted ? */
- iB = ((mng_bitdepth_8)pData->fPromBitdepth) (iB);
-
- *pDstline = iB;
- *(pDstline+1) = iB;
- *(pDstline+2) = iB;
-
- pSrcline++;
- pDstline += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G8_RGBA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_g8_rgba16 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pPromBuf;
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint8 iB;
- mng_uint16 iW;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G8_RGBA16, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iB = *pSrcline;
- /* no cheap transparency ? */
- if ((!pBuf->bHasTRNS) || ((mng_uint16)iB != pBuf->iTRNSgray))
- {
- *(pDstline+6) = 0xFF;
- *(pDstline+7) = 0xFF;
- }
-
- iW = ((mng_bitdepth_16)pData->fPromBitdepth) (iB);
-
- iB = (mng_uint8)(iW >> 8);
- *pDstline = iB;
- *(pDstline+2) = iB;
- *(pDstline+4) = iB;
- iB = (mng_uint8)(iW && 0xFF);
- *(pDstline+1) = iB;
- *(pDstline+3) = iB;
- *(pDstline+5) = iB;;
-
- pSrcline++;
- pDstline += 8;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G8_RGBA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_g16_rgba16 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pPromBuf;
- mng_uint16p pSrcline = (mng_uint16p)pData->pPromSrc;
- mng_uint16p pDstline = (mng_uint16p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint16 iW;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G16_RGBA16, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iW = *pSrcline;
- /* no cheap transparency ? */
- if ((!pBuf->bHasTRNS) || (iW != pBuf->iTRNSgray))
- *(pDstline+3) = 0xFFFF;
-
- *pDstline = iW;
- *(pDstline+1) = iW;
- *(pDstline+2) = iW;
-
- pSrcline++;
- pDstline += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_G16_RGBA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_ga8_ga16 (mng_datap pData)
-{
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint16 iW;
- mng_uint16 iA;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_GA8_GA16, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iW = ((mng_bitdepth_16)pData->fPromBitdepth) (*pSrcline);
- iA = ((mng_bitdepth_16)pData->fPromBitdepth) (*(pSrcline+1));
-
- *pDstline = (mng_uint8)(iW >> 8);
- *(pDstline+1) = (mng_uint8)(iW && 0xFF);
- *(pDstline+2) = (mng_uint8)(iA >> 8);
- *(pDstline+3) = (mng_uint8)(iA && 0xFF);
-
- pSrcline += 2;
- pDstline += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_GA8_GA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_promote_ga8_rgba8 (mng_datap pData)
-{
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint8 iB;
- mng_uint8 iA;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_GA8_RGBA8, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iB = *pSrcline;
- iA = *(pSrcline+1);
-
- *pDstline = iB;
- *(pDstline+1) = iB;
- *(pDstline+2) = iB;
- *(pDstline+3) = iA;
-
- pSrcline += 2;
- pDstline += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_GA8_RGBA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_ga8_rgba16 (mng_datap pData)
-{
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint8 iB;
- mng_uint16 iW;
- mng_uint16 iA;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_GA8_RGBA16, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iW = ((mng_bitdepth_16)pData->fPromBitdepth) (*pSrcline);
- iA = ((mng_bitdepth_16)pData->fPromBitdepth) (*(pSrcline+1));
-
- iB = (mng_uint8)(iW >> 8);
- *pDstline = iB;
- *(pDstline+2) = iB;
- *(pDstline+4) = iB;
- iB = (mng_uint8)(iW && 0xFF);
- *(pDstline+1) = iB;
- *(pDstline+3) = iB;
- *(pDstline+5) = iB;
- *(pDstline+6) = (mng_uint8)(iA >> 8);
- *(pDstline+7) = (mng_uint8)(iA && 0xFF);
-
- pSrcline += 2;
- pDstline += 8;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_GA8_RGBA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_ga16_rgba16 (mng_datap pData)
-{
- mng_uint16p pSrcline = (mng_uint16p)pData->pPromSrc;
- mng_uint16p pDstline = (mng_uint16p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint16 iW;
- mng_uint16 iA;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_GA16_RGBA16, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iW = *pSrcline;
- iA = *(pSrcline+1);
-
- *pDstline = iW;
- *(pDstline+1) = iW;
- *(pDstline+2) = iW;
- *(pDstline+3) = iA;
-
- pSrcline += 2;
- pDstline += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_GA16_RGBA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_rgb8_rgb16 (mng_datap pData)
-{
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint16 iR;
- mng_uint16 iG;
- mng_uint16 iB;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_RGB8_RGB16, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iR = ((mng_bitdepth_16)pData->fPromBitdepth) (*pSrcline);
- iG = ((mng_bitdepth_16)pData->fPromBitdepth) (*(pSrcline+1));
- iB = ((mng_bitdepth_16)pData->fPromBitdepth) (*(pSrcline+2));
-
- *pDstline = (mng_uint8)(iR >> 8);
- *(pDstline+1) = (mng_uint8)(iR && 0xFF);
- *(pDstline+2) = (mng_uint8)(iG >> 8);
- *(pDstline+3) = (mng_uint8)(iG && 0xFF);
- *(pDstline+4) = (mng_uint8)(iB >> 8);
- *(pDstline+5) = (mng_uint8)(iB && 0xFF);
-
- pSrcline += 3;
- pDstline += 6;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_RGB8_RGB16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_promote_rgb8_rgba8 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pPromBuf;
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint8 iR;
- mng_uint8 iG;
- mng_uint8 iB;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_RGB8_RGBA8, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iR = *pSrcline;
- iG = *(pSrcline+1);
- iB = *(pSrcline+2);
- /* no cheap transparency ? */
- if ((!pBuf->bHasTRNS) || ((mng_uint16)iR != pBuf->iTRNSred) ||
- ((mng_uint16)iG != pBuf->iTRNSgreen) || ((mng_uint16)iB != pBuf->iTRNSblue))
- *(pDstline+3) = 0xFF;
-
- *pDstline = iR;
- *(pDstline+1) = iG;
- *(pDstline+2) = iB;
-
- pSrcline += 3;
- pDstline += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_RGB8_RGBA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_rgb8_rgba16 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pPromBuf;
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint8 iR;
- mng_uint8 iG;
- mng_uint8 iB;
- mng_uint16 iRw;
- mng_uint16 iGw;
- mng_uint16 iBw;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_RGB8_RGBA16, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iR = *pSrcline;
- iG = *(pSrcline+1);
- iB = *(pSrcline+2);
- /* no cheap transparency ? */
- if ((!pBuf->bHasTRNS) || ((mng_uint16)iR != pBuf->iTRNSred) ||
- ((mng_uint16)iG != pBuf->iTRNSgreen) || ((mng_uint16)iB != pBuf->iTRNSblue))
- {
- *(pDstline+6) = 0xFF;
- *(pDstline+7) = 0xFF;
- }
-
- iRw = ((mng_bitdepth_16)pData->fPromBitdepth) (iR);
- iGw = ((mng_bitdepth_16)pData->fPromBitdepth) (iG);
- iBw = ((mng_bitdepth_16)pData->fPromBitdepth) (iB);
-
- *pDstline = (mng_uint8)(iRw >> 8);
- *(pDstline+1) = (mng_uint8)(iRw && 0xFF);
- *(pDstline+2) = (mng_uint8)(iGw >> 8);
- *(pDstline+3) = (mng_uint8)(iGw && 0xFF);
- *(pDstline+4) = (mng_uint8)(iBw >> 8);
- *(pDstline+5) = (mng_uint8)(iBw && 0xFF);
-
- pSrcline += 3;
- pDstline += 8;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_RGB8_RGBA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_rgb16_rgba16 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pPromBuf;
- mng_uint16p pSrcline = (mng_uint16p)pData->pPromSrc;
- mng_uint16p pDstline = (mng_uint16p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint16 iR;
- mng_uint16 iG;
- mng_uint16 iB;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_RGB16_RGBA16, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iR = *pSrcline;
- iG = *(pSrcline+1);
- iB = *(pSrcline+2);
- /* no cheap transparency ? */
- if ((!pBuf->bHasTRNS) || (iR != pBuf->iTRNSred) ||
- (iG != pBuf->iTRNSgreen) || (iB != pBuf->iTRNSblue))
- *(pDstline+3) = 0xFFFF;
-
- *pDstline = iR;
- *(pDstline+1) = iG;
- *(pDstline+2) = iB;
-
- pSrcline += 3;
- pDstline += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_RGB16_RGBA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_promote_idx8_rgb8 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pPromBuf;
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint8 iB;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_IDX8_RGB8, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iB = *pSrcline;
-
- if ((mng_uint32)iB < pBuf->iPLTEcount)
- {
- *pDstline = pBuf->aPLTEentries [iB].iRed;
- *(pDstline+1) = pBuf->aPLTEentries [iB].iGreen;
- *(pDstline+2) = pBuf->aPLTEentries [iB].iBlue;
- }
-
- pSrcline++;
- pDstline += 3;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_IDX8_RGB8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_idx8_rgb16 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pPromBuf;
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint8 iN;
- mng_uint16 iR;
- mng_uint16 iG;
- mng_uint16 iB;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_IDX8_RGB16, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iN = *pSrcline;
-
- if ((mng_uint32)iN < pBuf->iPLTEcount)
- {
- iR = ((mng_bitdepth_16)pData->fPromBitdepth) (pBuf->aPLTEentries [iN].iRed);
- iG = ((mng_bitdepth_16)pData->fPromBitdepth) (pBuf->aPLTEentries [iN].iGreen);
- iB = ((mng_bitdepth_16)pData->fPromBitdepth) (pBuf->aPLTEentries [iN].iBlue);
- *pDstline = (mng_uint8)(iR >> 8);
- *(pDstline+1) = (mng_uint8)(iR && 0xFF);
- *(pDstline+2) = (mng_uint8)(iG >> 8);
- *(pDstline+3) = (mng_uint8)(iG && 0xFF);
- *(pDstline+4) = (mng_uint8)(iB >> 8);
- *(pDstline+5) = (mng_uint8)(iB && 0xFF);
- }
-
- pSrcline++;
- pDstline += 6;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_IDX8_RGB16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_promote_idx8_rgba8 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pPromBuf;
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint8 iB;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_IDX8_RGBA8, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iB = *pSrcline;
-
- if ((mng_uint32)iB < pBuf->iPLTEcount)
- {
- *pDstline = pBuf->aPLTEentries [iB].iRed;
- *(pDstline+1) = pBuf->aPLTEentries [iB].iGreen;
- *(pDstline+2) = pBuf->aPLTEentries [iB].iBlue;
-
- if ((pBuf->bHasTRNS) && ((mng_uint32)iB < pBuf->iTRNScount))
- *(pDstline+3) = pBuf->aTRNSentries [iB];
- else
- *(pDstline+3) = 0xFF;
- }
-
- pSrcline++;
- pDstline += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_IDX8_RGBA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_idx8_rgba16 (mng_datap pData)
-{
- mng_imagedatap pBuf = (mng_imagedatap)pData->pPromBuf;
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint8 iN;
- mng_uint16 iR;
- mng_uint16 iG;
- mng_uint16 iB;
- mng_uint16 iA;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_IDX8_RGBA16, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iN = *pSrcline;
-
- if ((mng_uint32)iN < pBuf->iPLTEcount)
- {
- iR = ((mng_bitdepth_16)pData->fPromBitdepth) (pBuf->aPLTEentries [iN].iRed);
- iG = ((mng_bitdepth_16)pData->fPromBitdepth) (pBuf->aPLTEentries [iN].iGreen);
- iB = ((mng_bitdepth_16)pData->fPromBitdepth) (pBuf->aPLTEentries [iN].iBlue);
-
- if ((pBuf->bHasTRNS) && ((mng_uint32)iN < pBuf->iTRNScount))
- iA = ((mng_bitdepth_16)pData->fPromBitdepth) (pBuf->aTRNSentries [iN]);
- else
- iA = 0xFFFF;
-
- *pDstline = (mng_uint8)(iR >> 8);
- *(pDstline+1) = (mng_uint8)(iR && 0xFF);
- *(pDstline+2) = (mng_uint8)(iG >> 8);
- *(pDstline+3) = (mng_uint8)(iG && 0xFF);
- *(pDstline+4) = (mng_uint8)(iB >> 8);
- *(pDstline+5) = (mng_uint8)(iB && 0xFF);
- *(pDstline+6) = (mng_uint8)(iA >> 8);
- *(pDstline+7) = (mng_uint8)(iA && 0xFF);
- }
-
- pSrcline++;
- pDstline += 8;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_IDX8_RGBA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_promote_rgba8_rgba16 (mng_datap pData)
-{
- mng_uint8p pSrcline = (mng_uint8p)pData->pPromSrc;
- mng_uint8p pDstline = (mng_uint8p)pData->pPromDst;
- mng_uint32 iX;
- mng_uint16 iR;
- mng_uint16 iG;
- mng_uint16 iB;
- mng_uint16 iA;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_RGBA8_RGBA16, MNG_LC_START);
-#endif
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPromWidth; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPromWidth; iX++)
-#endif
- {
- iR = ((mng_bitdepth_16)pData->fPromBitdepth) (*pSrcline);
- iG = ((mng_bitdepth_16)pData->fPromBitdepth) (*(pSrcline+1));
- iB = ((mng_bitdepth_16)pData->fPromBitdepth) (*(pSrcline+2));
- iA = ((mng_bitdepth_16)pData->fPromBitdepth) (*(pSrcline+3));
-
- *pDstline = (mng_uint8)(iR >> 8);
- *(pDstline+1) = (mng_uint8)(iR && 0xFF);
- *(pDstline+2) = (mng_uint8)(iG >> 8);
- *(pDstline+3) = (mng_uint8)(iG && 0xFF);
- *(pDstline+4) = (mng_uint8)(iB >> 8);
- *(pDstline+5) = (mng_uint8)(iB && 0xFF);
- *(pDstline+6) = (mng_uint8)(iA >> 8);
- *(pDstline+7) = (mng_uint8)(iA && 0xFF);
-
- pSrcline += 4;
- pDstline += 8;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROMOTE_RGBA8_RGBA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* !defined(MNG_NO_DELTA_PNG) || !defined(MNG_SKIPCHUNK_PAST) || !defined(MNG_SKIPCHUNK_MAGN) */
-
-/* ************************************************************************** */
-/* * * */
-/* * Row processing routines - convert uncompressed data from zlib to * */
-/* * managable row-data which serves as input to the color-management * */
-/* * routines * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_process_g1 (mng_datap pData)
-{
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_G1, MNG_LC_START);
-#endif
-
- if (!pBuf) /* no object? then use obj 0 */
- pBuf = ((mng_imagep)pData->pObjzero)->pImgbuf;
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pRGBArow = pData->pRGBArow;
- iM = 0; /* start at pixel 0 */
- iB = 0;
-
- if (pBuf->bHasTRNS) /* tRNS encountered ? */
- {
- if (pBuf->iTRNSgray) /* white transparent ? */
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0x80;
- }
-
- if (iB & iM) /* is it white ? */
- /* transparent ! */
- mng_put_uint32 (pRGBArow, 0x00000000);
- else /* opaque black */
- mng_put_uint32 (pRGBArow, 0x000000FF);
-
- pRGBArow += 4; /* next pixel */
- iM >>= 1;
- }
- }
- else /* black transparent */
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0x80;
- }
-
- if (iB & iM) /* is it white ? */
- /* opaque white */
- mng_put_uint32 (pRGBArow, 0xFFFFFFFF);
- else /* transparent */
- mng_put_uint32 (pRGBArow, 0x00000000);
-
- pRGBArow += 4; /* next pixel */
- iM >>= 1;
- }
- }
-
- pData->bIsOpaque = MNG_FALSE; /* it's not fully opaque */
- }
- else /* no transparency */
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0x80;
- }
-
- if (iB & iM) /* is it white ? */
- /* opaque white */
- mng_put_uint32 (pRGBArow, 0xFFFFFFFF);
- else /* opaque black */
- mng_put_uint32 (pRGBArow, 0x000000FF);
-
- pRGBArow += 4; /* next pixel */
- iM >>= 1;
- }
-
- pData->bIsOpaque = MNG_TRUE; /* it's fully opaque */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_G1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_g2 (mng_datap pData)
-{
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
- mng_uint8 iQ;
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
-#ifdef MNG_OPTIMIZE_FOOTPRINT_SWITCH
- const mng_uint32 level[4] = { 0x000000FF, 0x555555FF,
- 0xAAAAAAFF, 0xFFFFFFFF};
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_G2, MNG_LC_START);
-#endif
-
- if (!pBuf) /* no object? then use obj 0 */
- pBuf = ((mng_imagep)pData->pObjzero)->pImgbuf;
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pRGBArow = pData->pRGBArow;
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
-
- if (pBuf->bHasTRNS) /* tRNS encountered ? */
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xC0;
- iS = 6;
- }
- /* determine gray level */
- iQ = (mng_uint8)((iB & iM) >> iS);
-
- if (iQ == pBuf->iTRNSgray) /* transparent ? */
- mng_put_uint32 (pRGBArow, 0x00000000);
- else
- {
-#ifdef MNG_OPTIMIZE_FOOTPRINT_SWITCH
- mng_put_uint32 (pRGBArow, level[iQ]);
-#else
- switch (iQ) /* determine the gray level */
- {
- case 0x03 : { mng_put_uint32 (pRGBArow, 0xFFFFFFFF); break; }
- case 0x02 : { mng_put_uint32 (pRGBArow, 0xAAAAAAFF); break; }
- case 0x01 : { mng_put_uint32 (pRGBArow, 0x555555FF); break; }
- default : { mng_put_uint32 (pRGBArow, 0x000000FF); }
- }
-#endif
- }
-
- pRGBArow += 4; /* next pixel */
- iM >>= 2;
- iS -= 2;
- }
-
- pData->bIsOpaque = MNG_FALSE; /* it's not fully opaque */
- }
- else
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xC0;
- iS = 6;
- }
-
-#ifdef MNG_OPTIMIZE_FOOTPRINT_SWITCH
- mng_put_uint32 (pRGBArow, level[((iB & iM) >> iS)] );
-#else
- switch ((iB & iM) >> iS) /* determine the gray level */
- {
- case 0x03 : { mng_put_uint32 (pRGBArow, 0xFFFFFFFF); break; }
- case 0x02 : { mng_put_uint32 (pRGBArow, 0xAAAAAAFF); break; }
- case 0x01 : { mng_put_uint32 (pRGBArow, 0x555555FF); break; }
- default : { mng_put_uint32 (pRGBArow, 0x000000FF); }
- }
-#endif
-
- pRGBArow += 4; /* next pixel */
- iM >>= 2;
- iS -= 2;
- }
-
- pData->bIsOpaque = MNG_TRUE; /* it's fully opaque */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_G2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_g4 (mng_datap pData)
-{
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
- mng_uint8 iQ;
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_G4, MNG_LC_START);
-#endif
-
- if (!pBuf) /* no object? then use obj 0 */
- pBuf = ((mng_imagep)pData->pObjzero)->pImgbuf;
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pRGBArow = pData->pRGBArow;
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
-
- if (pBuf->bHasTRNS) /* tRNS encountered ? */
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xF0;
- iS = 4;
- }
- /* get the gray level */
- iQ = (mng_uint8)((iB & iM) >> iS);
-
- if (iQ == pBuf->iTRNSgray) /* transparent ? */
- {
- *pRGBArow = 0; /* put in intermediate row */
- *(pRGBArow+1) = 0;
- *(pRGBArow+2) = 0;
- *(pRGBArow+3) = 0;
- }
- else
- { /* expand to 8-bit by replication */
- iQ = (mng_uint8)(iQ + (iQ << 4));
-
- *pRGBArow = iQ; /* put in intermediate row */
- *(pRGBArow+1) = iQ;
- *(pRGBArow+2) = iQ;
- *(pRGBArow+3) = 0xFF;
- }
-
- pRGBArow += 4; /* next pixel */
- iM >>= 4;
- iS -= 4;
- }
-
- pData->bIsOpaque = MNG_FALSE; /* it's not fully opaque */
- }
- else
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xF0;
- iS = 4;
- }
- /* get the gray level */
- iQ = (mng_uint8)((iB & iM) >> iS);
- iQ = (mng_uint8)(iQ + (iQ << 4));/* expand to 8-bit by replication */
-
- *pRGBArow = iQ; /* put in intermediate row */
- *(pRGBArow+1) = iQ;
- *(pRGBArow+2) = iQ;
- *(pRGBArow+3) = 0xFF;
-
- pRGBArow += 4; /* next pixel */
- iM >>= 4;
- iS -= 4;
- }
-
- pData->bIsOpaque = MNG_TRUE; /* it's fully opaque */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_G4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_g8 (mng_datap pData)
-{
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_G8, MNG_LC_START);
-#endif
-
- if (!pBuf) /* no object? then use obj 0 */
- pBuf = ((mng_imagep)pData->pObjzero)->pImgbuf;
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pRGBArow = pData->pRGBArow;
-
- if (pBuf->bHasTRNS) /* tRNS encountered ? */
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iB = *pWorkrow; /* get next input-byte */
-
- if (iB == pBuf->iTRNSgray) /* transparent ? */
- {
- *pRGBArow = 0; /* put in intermediate row */
- *(pRGBArow+1) = 0;
- *(pRGBArow+2) = 0;
- *(pRGBArow+3) = 0;
- }
- else
- {
- *pRGBArow = iB; /* put in intermediate row */
- *(pRGBArow+1) = iB;
- *(pRGBArow+2) = iB;
- *(pRGBArow+3) = 0xFF;
- }
-
- pRGBArow += 4; /* next pixel */
- pWorkrow++;
- }
-
- pData->bIsOpaque = MNG_FALSE; /* it's not fully opaque */
- }
- else
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iB = *pWorkrow; /* get next input-byte */
-
- *pRGBArow = iB; /* put in intermediate row */
- *(pRGBArow+1) = iB;
- *(pRGBArow+2) = iB;
- *(pRGBArow+3) = 0xFF;
-
- pRGBArow += 4; /* next pixel */
- pWorkrow++;
- }
-
- pData->bIsOpaque = MNG_TRUE; /* it's fully opaque */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_G8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_process_g16 (mng_datap pData)
-{
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint16 iW;
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_G16, MNG_LC_START);
-#endif
-
- if (!pBuf) /* no object? then use obj 0 */
- pBuf = ((mng_imagep)pData->pObjzero)->pImgbuf;
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pRGBArow = pData->pRGBArow;
-
- if (pBuf->bHasTRNS) /* tRNS encountered ? */
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iW = mng_get_uint16 (pWorkrow); /* get input */
-
- if (iW == pBuf->iTRNSgray) /* transparent ? */
- { /* put in intermediate row */
- mng_put_uint16 (pRGBArow, 0);
- mng_put_uint16 (pRGBArow+2, 0);
- mng_put_uint16 (pRGBArow+4, 0);
- mng_put_uint16 (pRGBArow+6, 0);
- }
- else
- { /* put in intermediate row */
- mng_put_uint16 (pRGBArow, iW);
- mng_put_uint16 (pRGBArow+2, iW);
- mng_put_uint16 (pRGBArow+4, iW);
- mng_put_uint16 (pRGBArow+6, 0xFFFF);
- }
-
- pRGBArow += 8; /* next pixel */
- pWorkrow += 2;
- }
-
- pData->bIsOpaque = MNG_FALSE; /* it's not fully opaque */
- }
- else
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iW = mng_get_uint16 (pWorkrow); /* get input */
-
- mng_put_uint16 (pRGBArow, iW); /* and put in intermediate row */
- mng_put_uint16 (pRGBArow+2, iW);
- mng_put_uint16 (pRGBArow+4, iW);
- mng_put_uint16 (pRGBArow+6, 0xFFFF);
-
- pRGBArow += 8; /* next pixel */
- pWorkrow += 2;
- }
-
- pData->bIsOpaque = MNG_TRUE; /* it's fully opaque */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_G16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_rgb8 (mng_datap pData)
-{
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint8 iR, iG, iB;
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_RGB8, MNG_LC_START);
-#endif
-
- if (!pBuf) /* no object? then use obj 0 */
- pBuf = ((mng_imagep)pData->pObjzero)->pImgbuf;
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pRGBArow = pData->pRGBArow;
-
- if (pBuf->bHasTRNS) /* tRNS encountered ? */
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iR = *pWorkrow; /* get the RGB values */
- iG = *(pWorkrow+1);
- iB = *(pWorkrow+2);
- /* transparent ? */
- if ((iR == pBuf->iTRNSred) && (iG == pBuf->iTRNSgreen) &&
- (iB == pBuf->iTRNSblue))
- {
- *pRGBArow = 0; /* this pixel is transparent ! */
- *(pRGBArow+1) = 0;
- *(pRGBArow+2) = 0;
- *(pRGBArow+3) = 0;
- }
- else
- {
- *pRGBArow = iR; /* copy the RGB values */
- *(pRGBArow+1) = iG;
- *(pRGBArow+2) = iB;
- *(pRGBArow+3) = 0xFF; /* this one isn't transparent */
- }
-
- pWorkrow += 3; /* next pixel */
- pRGBArow += 4;
- }
-
- pData->bIsOpaque = MNG_FALSE; /* it's not fully opaque */
- }
- else
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pRGBArow = *pWorkrow; /* copy the RGB bytes */
- *(pRGBArow+1) = *(pWorkrow+1);
- *(pRGBArow+2) = *(pWorkrow+2);
- *(pRGBArow+3) = 0xFF; /* no alpha; so always fully opaque */
-
- pWorkrow += 3; /* next pixel */
- pRGBArow += 4;
- }
-
- pData->bIsOpaque = MNG_TRUE; /* it's fully opaque */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_RGB8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_process_rgb16 (mng_datap pData)
-{
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint16 iR, iG, iB;
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_RGB16, MNG_LC_START);
-#endif
-
- if (!pBuf) /* no object? then use obj 0 */
- pBuf = ((mng_imagep)pData->pObjzero)->pImgbuf;
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pRGBArow = pData->pRGBArow;
-
- if (pBuf->bHasTRNS) /* tRNS encountered ? */
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iR = mng_get_uint16 (pWorkrow); /* get the RGB values */
- iG = mng_get_uint16 (pWorkrow+2);
- iB = mng_get_uint16 (pWorkrow+4);
- /* transparent ? */
- if ((iR == pBuf->iTRNSred) && (iG == pBuf->iTRNSgreen) &&
- (iB == pBuf->iTRNSblue))
- { /* transparent then */
- mng_put_uint16 (pRGBArow, 0);
- mng_put_uint16 (pRGBArow+2, 0);
- mng_put_uint16 (pRGBArow+4, 0);
- mng_put_uint16 (pRGBArow+6, 0);
- }
- else
- { /* put in intermediate row */
- mng_put_uint16 (pRGBArow, iR);
- mng_put_uint16 (pRGBArow+2, iG);
- mng_put_uint16 (pRGBArow+4, iB);
- mng_put_uint16 (pRGBArow+6, 0xFFFF);
- }
-
- pWorkrow += 6; /* next pixel */
- pRGBArow += 8;
- }
-
- pData->bIsOpaque = MNG_FALSE; /* it's not fully opaque */
- }
- else
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- { /* copy the RGB values */
- mng_put_uint16 (pRGBArow, mng_get_uint16 (pWorkrow ));
- mng_put_uint16 (pRGBArow+2, mng_get_uint16 (pWorkrow+2));
- mng_put_uint16 (pRGBArow+4, mng_get_uint16 (pWorkrow+4));
- mng_put_uint16 (pRGBArow+6, 0xFFFF);
-
- pWorkrow += 6; /* next pixel */
- pRGBArow += 8;
- }
-
- pData->bIsOpaque = MNG_TRUE; /* it's fully opaque */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_RGB16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_process_idx1 (mng_datap pData)
-{
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
- mng_uint8 iQ;
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_IDX1, MNG_LC_START);
-#endif
-
- if (!pBuf) /* no object? then use obj 0 */
- pBuf = ((mng_imagep)pData->pObjzero)->pImgbuf;
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pRGBArow = pData->pRGBArow;
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
-
- if (pBuf->bHasTRNS) /* tRNS encountered ? */
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0x80;
- iS = 7;
- }
- /* get the index */
- iQ = (mng_uint8)((iB & iM) >> iS);
- /* index valid ? */
- if ((mng_uint32)iQ < pBuf->iPLTEcount)
- { /* put in intermediate row */
- *pRGBArow = pBuf->aPLTEentries [iQ].iRed;
- *(pRGBArow+1) = pBuf->aPLTEentries [iQ].iGreen;
- *(pRGBArow+2) = pBuf->aPLTEentries [iQ].iBlue;
- /* transparency for this index ? */
- if ((mng_uint32)iQ < pBuf->iTRNScount)
- *(pRGBArow+3) = pBuf->aTRNSentries [iQ];
- else
- *(pRGBArow+3) = 0xFF;
- }
- else
- MNG_ERROR (pData, MNG_PLTEINDEXERROR);
-
- pRGBArow += 4; /* next pixel */
- iM >>= 1;
- iS -= 1;
- }
-
- pData->bIsOpaque = MNG_FALSE; /* it's not fully opaque */
- }
- else
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0x80;
- iS = 7;
- }
- /* get the index */
- iQ = (mng_uint8)((iB & iM) >> iS);
- /* index valid ? */
- if ((mng_uint32)iQ < pBuf->iPLTEcount)
- { /* put in intermediate row */
- *pRGBArow = pBuf->aPLTEentries [iQ].iRed;
- *(pRGBArow+1) = pBuf->aPLTEentries [iQ].iGreen;
- *(pRGBArow+2) = pBuf->aPLTEentries [iQ].iBlue;
- *(pRGBArow+3) = 0xFF;
- }
- else
- MNG_ERROR (pData, MNG_PLTEINDEXERROR);
-
- pRGBArow += 4; /* next pixel */
- iM >>= 1;
- iS -= 1;
- }
-
- pData->bIsOpaque = MNG_TRUE; /* it's fully opaque */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_IDX1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_idx2 (mng_datap pData)
-{
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
- mng_uint8 iQ;
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_IDX2, MNG_LC_START);
-#endif
-
- if (!pBuf) /* no object? then use obj 0 */
- pBuf = ((mng_imagep)pData->pObjzero)->pImgbuf;
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pRGBArow = pData->pRGBArow;
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
-
- if (pBuf->bHasTRNS) /* tRNS encountered ? */
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xC0;
- iS = 6;
- }
- /* get the index */
- iQ = (mng_uint8)((iB & iM) >> iS);
- /* index valid ? */
- if ((mng_uint32)iQ < pBuf->iPLTEcount)
- { /* put in intermediate row */
- *pRGBArow = pBuf->aPLTEentries [iQ].iRed;
- *(pRGBArow+1) = pBuf->aPLTEentries [iQ].iGreen;
- *(pRGBArow+2) = pBuf->aPLTEentries [iQ].iBlue;
- /* transparency for this index ? */
- if ((mng_uint32)iQ < pBuf->iTRNScount)
- *(pRGBArow+3) = pBuf->aTRNSentries [iQ];
- else
- *(pRGBArow+3) = 0xFF;
- }
- else
- MNG_ERROR (pData, MNG_PLTEINDEXERROR);
-
- pRGBArow += 4; /* next pixel */
- iM >>= 2;
- iS -= 2;
- }
-
- pData->bIsOpaque = MNG_FALSE; /* it's not fully opaque */
- }
- else
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = *pWorkrow; /* get next input-byte */
- pWorkrow++;
- iM = 0xC0;
- iS = 6;
- }
- /* get the index */
- iQ = (mng_uint8)((iB & iM) >> iS);
- /* index valid ? */
- if ((mng_uint32)iQ < pBuf->iPLTEcount)
- { /* put in intermediate row */
- *pRGBArow = pBuf->aPLTEentries [iQ].iRed;
- *(pRGBArow+1) = pBuf->aPLTEentries [iQ].iGreen;
- *(pRGBArow+2) = pBuf->aPLTEentries [iQ].iBlue;
- *(pRGBArow+3) = 0xFF;
- }
- else
- MNG_ERROR (pData, MNG_PLTEINDEXERROR);
-
- pRGBArow += 4; /* next pixel */
- iM >>= 2;
- iS -= 2;
- }
-
- pData->bIsOpaque = MNG_TRUE; /* it's fully opaque */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_IDX2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_idx4 (mng_datap pData)
-{
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint8 iB;
- mng_uint8 iM;
- mng_uint32 iS;
- mng_uint8 iQ;
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_IDX4, MNG_LC_START);
-#endif
-
- if (!pBuf) /* no object? then use obj 0 */
- pBuf = ((mng_imagep)pData->pObjzero)->pImgbuf;
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pRGBArow = pData->pRGBArow;
- iM = 0; /* start at pixel 0 */
- iB = 0;
- iS = 0;
-
- if (pBuf->bHasTRNS) /* tRNS encountered ? */
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = pWorkrow [0]; /* get next input-byte */
- pWorkrow++;
- iM = 0xF0;
- iS = 4;
- }
- /* get the index */
- iQ = (mng_uint8)((iB & iM) >> iS);
- /* index valid ? */
- if ((mng_uint32)iQ < pBuf->iPLTEcount)
- { /* put in intermediate row */
- pRGBArow [0] = pBuf->aPLTEentries [iQ].iRed;
- pRGBArow [1] = pBuf->aPLTEentries [iQ].iGreen;
- pRGBArow [2] = pBuf->aPLTEentries [iQ].iBlue;
- /* transparency for this index ? */
- if ((mng_uint32)iQ < pBuf->iTRNScount)
- pRGBArow [3] = pBuf->aTRNSentries [iQ];
- else
- pRGBArow [3] = 0xFF;
- }
- else
- MNG_ERROR (pData, MNG_PLTEINDEXERROR);
-
- pRGBArow += 4; /* next pixel */
- iM >>= 4;
- iS -= 4;
- }
-
- pData->bIsOpaque = MNG_FALSE; /* it's not fully opaque */
- }
- else
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- if (!iM) /* mask underflow ? */
- {
- iB = pWorkrow [0]; /* get next input-byte */
- pWorkrow++;
- iM = 0xF0;
- iS = 4;
- }
- /* get the index */
- iQ = (mng_uint8)((iB & iM) >> iS);
- /* index valid ? */
- if ((mng_uint32)iQ < pBuf->iPLTEcount)
- { /* put in intermediate row */
- pRGBArow [0] = pBuf->aPLTEentries [iQ].iRed;
- pRGBArow [1] = pBuf->aPLTEentries [iQ].iGreen;
- pRGBArow [2] = pBuf->aPLTEentries [iQ].iBlue;
- pRGBArow [3] = 0xFF;
- }
- else
- MNG_ERROR (pData, MNG_PLTEINDEXERROR);
-
- pRGBArow += 4; /* next pixel */
- iM >>= 4;
- iS -= 4;
- }
-
- pData->bIsOpaque = MNG_TRUE; /* it's fully opaque */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_IDX4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_idx8 (mng_datap pData)
-{
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint8 iQ;
- mng_imagedatap pBuf = (mng_imagedatap)pData->pStorebuf;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_IDX8, MNG_LC_START);
-#endif
-
- if (!pBuf) /* no object? then use obj 0 */
- pBuf = ((mng_imagep)pData->pObjzero)->pImgbuf;
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pRGBArow = pData->pRGBArow;
-
- if (pBuf->bHasTRNS) /* tRNS encountered ? */
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iQ = *pWorkrow; /* get input byte */
- /* index valid ? */
- if ((mng_uint32)iQ < pBuf->iPLTEcount)
- { /* put in intermediate row */
- pRGBArow [0] = pBuf->aPLTEentries [iQ].iRed;
- pRGBArow [1] = pBuf->aPLTEentries [iQ].iGreen;
- pRGBArow [2] = pBuf->aPLTEentries [iQ].iBlue;
- /* transparency for this index ? */
- if ((mng_uint32)iQ < pBuf->iTRNScount)
- pRGBArow [3] = pBuf->aTRNSentries [iQ];
- else
- pRGBArow [3] = 0xFF;
- }
- else
- MNG_ERROR (pData, MNG_PLTEINDEXERROR);
-
- pRGBArow += 4; /* next pixel */
- pWorkrow++;
- }
-
- pData->bIsOpaque = MNG_FALSE; /* it's not fully opaque */
- }
- else
- {
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iQ = *pWorkrow; /* get input byte */
- /* index valid ? */
- if ((mng_uint32)iQ < pBuf->iPLTEcount)
- { /* put in intermediate row */
- pRGBArow [0] = pBuf->aPLTEentries [iQ].iRed;
- pRGBArow [1] = pBuf->aPLTEentries [iQ].iGreen;
- pRGBArow [2] = pBuf->aPLTEentries [iQ].iBlue;
- pRGBArow [3] = 0xFF;
- }
- else
- MNG_ERROR (pData, MNG_PLTEINDEXERROR);
-
- pRGBArow += 4; /* next pixel */
- pWorkrow++;
- }
-
- pData->bIsOpaque = MNG_TRUE; /* it's fully opaque */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_IDX8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_ga8 (mng_datap pData)
-{
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_GA8, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pRGBArow = pData->pRGBArow;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- *pRGBArow = *pWorkrow; /* copy the gray value */
- *(pRGBArow+1) = *pWorkrow;
- *(pRGBArow+2) = *pWorkrow;
- *(pRGBArow+3) = *(pWorkrow+1); /* copy the alpha value */
-
- pWorkrow += 2; /* next pixel */
- pRGBArow += 4;
- }
-
- pData->bIsOpaque = MNG_FALSE; /* it's definitely not fully opaque */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_GA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_process_ga16 (mng_datap pData)
-{
- mng_uint8p pWorkrow;
- mng_uint8p pRGBArow;
- mng_int32 iX;
- mng_uint16 iW;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_GA16, MNG_LC_START);
-#endif
- /* temporary work pointers */
- pWorkrow = pData->pWorkrow + pData->iPixelofs;
- pRGBArow = pData->pRGBArow;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iW = mng_get_uint16 (pWorkrow); /* copy the gray value */
- mng_put_uint16 (pRGBArow, iW);
- mng_put_uint16 (pRGBArow+2, iW);
- mng_put_uint16 (pRGBArow+4, iW);
- /* copy the alpha value */
- mng_put_uint16 (pRGBArow+6, mng_get_uint16 (pWorkrow+2));
-
- pWorkrow += 4; /* next pixel */
- pRGBArow += 8;
- }
-
- pData->bIsOpaque = MNG_FALSE; /* it's definitely not fully opaque */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_GA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_rgba8 (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_RGBA8, MNG_LC_START);
-#endif
- /* this is the easiest transform */
- MNG_COPY (pData->pRGBArow, pData->pWorkrow + pData->iPixelofs, pData->iRowsize);
-
- pData->bIsOpaque = MNG_FALSE; /* it's definitely not fully opaque */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_RGBA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_process_rgba16 (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_RGBA16, MNG_LC_START);
-#endif
- /* this is the easiest transform */
- MNG_COPY (pData->pRGBArow, pData->pWorkrow + pData->iPixelofs, pData->iRowsize);
-
- pData->bIsOpaque = MNG_FALSE; /* it's definitely not fully opaque */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_RGBA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Row processing initialization routines - set up the variables needed * */
-/* * to process uncompressed row-data * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_FOOTPRINT_INIT
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_init_g1_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G1_NI, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_g1;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_g1;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_g1;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_g1;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 1;
- pData->iSampleofs = 7;
- pData->iSamplediv = 3;
- pData->iRowsize = (pData->iRowsamples + 7) >> 3;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 1;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G1_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_g1_i (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G1_I, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_g1;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_g1;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_g1;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_g1;
-#endif
-
- pData->iPass = 0; /* from 0..6; is 1..7 in specifications */
- pData->iRow = interlace_row [0];
- pData->iRowinc = interlace_rowskip [0];
- pData->iCol = interlace_col [0];
- pData->iColinc = interlace_colskip [0];
- pData->iRowsamples = (pData->iDatawidth + interlace_roundoff [0]) >> interlace_divider [0];
- pData->iSamplemul = 1;
- pData->iSampleofs = 7;
- pData->iSamplediv = 3;
- pData->iRowsize = ((pData->iRowsamples + 7) >> 3);
- pData->iRowmax = ((pData->iDatawidth + 7) >> 3) + pData->iPixelofs;
- pData->iFilterbpp = 1;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G1_I, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_g2_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G2_NI, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_g2;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_g2;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_g2;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_g2;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 1;
- pData->iSampleofs = 3;
- pData->iSamplediv = 2;
- pData->iRowsize = (pData->iRowsamples + 3) >> 2;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 1;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G2_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_g2_i (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G2_I, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_g2;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_g2;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_g2;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_g2;
-#endif
-
- pData->iPass = 0; /* from 0..6; is 1..7 in specifications */
- pData->iRow = interlace_row [0];
- pData->iRowinc = interlace_rowskip [0];
- pData->iCol = interlace_col [0];
- pData->iColinc = interlace_colskip [0];
- pData->iRowsamples = (pData->iDatawidth + interlace_roundoff [0]) >> interlace_divider [0];
- pData->iSamplemul = 1;
- pData->iSampleofs = 3;
- pData->iSamplediv = 2;
- pData->iRowsize = ((pData->iRowsamples + 3) >> 2);
- pData->iRowmax = ((pData->iDatawidth + 3) >> 2) + pData->iPixelofs;
- pData->iFilterbpp = 1;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G2_I, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_g4_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G4_NI, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_g4;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_g4;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_g4;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_g4;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 1;
- pData->iSampleofs = 1;
- pData->iSamplediv = 1;
- pData->iRowsize = (pData->iRowsamples + 1) >> 1;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 1;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G4_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_g4_i (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G4_I, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_g4;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_g4;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_g4;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_g4;
-#endif
-
- pData->iPass = 0; /* from 0..6; is 1..7 in specifications */
- pData->iRow = interlace_row [0];
- pData->iRowinc = interlace_rowskip [0];
- pData->iCol = interlace_col [0];
- pData->iColinc = interlace_colskip [0];
- pData->iRowsamples = (pData->iDatawidth + interlace_roundoff [0]) >> interlace_divider [0];
- pData->iSamplemul = 1;
- pData->iSampleofs = 1;
- pData->iSamplediv = 1;
- pData->iRowsize = ((pData->iRowsamples + 1) >> 1);
- pData->iRowmax = ((pData->iDatawidth + 1) >> 1) + pData->iPixelofs;
- pData->iFilterbpp = 1;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G4_I, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_g8_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G8_NI, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_g8;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_g8;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_g8;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_g8;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 1;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 1;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G8_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_g8_i (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G8_I, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_g8;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_g8;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_g8;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_g8;
-#endif
-
- pData->iPass = 0; /* from 0..6; is 1..7 in specifications */
- pData->iRow = interlace_row [0];
- pData->iRowinc = interlace_rowskip [0];
- pData->iCol = interlace_col [0];
- pData->iColinc = interlace_colskip [0];
- pData->iRowsamples = (pData->iDatawidth + interlace_roundoff [0]) >> interlace_divider [0];
- pData->iSamplemul = 1;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples;
- pData->iRowmax = pData->iDatawidth + pData->iPixelofs;
- pData->iFilterbpp = 1;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G8_I, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_init_g16_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G16_NI, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_g16;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_g16;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_g16;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_g16;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 2;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples << 1;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 2;
- pData->bIsRGBA16 = MNG_TRUE; /* intermediate row is 16-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G16_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_init_g16_i (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G16_I, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_g16;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_g16;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_g16;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_g16;
-#endif
-
- pData->iPass = 0; /* from 0..6; is 1..7 in specifications */
- pData->iRow = interlace_row [0];
- pData->iRowinc = interlace_rowskip [0];
- pData->iCol = interlace_col [0];
- pData->iColinc = interlace_colskip [0];
- pData->iRowsamples = (pData->iDatawidth + interlace_roundoff [0]) >> interlace_divider [0];
- pData->iSamplemul = 2;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples << 1;
- pData->iRowmax = (pData->iDatawidth << 1) + pData->iPixelofs;
- pData->iFilterbpp = 2;
- pData->bIsRGBA16 = MNG_TRUE; /* intermediate row is 16-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_G16_I, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_rgb8_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_RGB8_NI, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_rgb8;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_rgb8;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_rgb8;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_rgb8;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 3;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples * 3;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 3;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_RGB8_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_rgb8_i (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_RGB8_I, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_rgb8;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_rgb8;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_rgb8;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_rgb8;
-#endif
-
- pData->iPass = 0; /* from 0..6; is 1..7 in specifications */
- pData->iRow = interlace_row [0];
- pData->iRowinc = interlace_rowskip [0];
- pData->iCol = interlace_col [0];
- pData->iColinc = interlace_colskip [0];
- pData->iRowsamples = (pData->iDatawidth + interlace_roundoff [0]) >> interlace_divider [0];
- pData->iSamplemul = 3;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples * 3;
- pData->iRowmax = (pData->iDatawidth * 3) + pData->iPixelofs;
- pData->iFilterbpp = 3;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_RGB8_I, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_init_rgb16_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_RGB16_NI, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_rgb16;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_rgb16;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_rgb16;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_rgb16;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 6;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples * 6;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 6;
- pData->bIsRGBA16 = MNG_TRUE; /* intermediate row is 16-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_RGB16_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_init_rgb16_i (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_RGB16_I, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_rgb16;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_rgb16;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_rgb16;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_rgb16;
-#endif
-
- pData->iPass = 0; /* from 0..6; is 1..7 in specifications */
- pData->iRow = interlace_row [0];
- pData->iRowinc = interlace_rowskip [0];
- pData->iCol = interlace_col [0];
- pData->iColinc = interlace_colskip [0];
- pData->iRowsamples = (pData->iDatawidth + interlace_roundoff [0]) >> interlace_divider [0];
- pData->iSamplemul = 6;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples * 6;
- pData->iRowmax = (pData->iDatawidth * 6) + pData->iPixelofs;
- pData->iFilterbpp = 6;
- pData->bIsRGBA16 = MNG_TRUE; /* intermediate row is 16-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_RGB16_I, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_init_idx1_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IDX1_NI, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_idx1;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_idx1;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_idx1;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_idx1;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 1;
- pData->iSampleofs = 7;
- pData->iSamplediv = 3;
- pData->iRowsize = (pData->iRowsamples + 7) >> 3;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 1;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IDX1_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_idx1_i (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IDX1_I, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_idx1;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_idx1;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_idx1;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_idx1;
-#endif
-
- pData->iPass = 0; /* from 0..6; is 1..7 in specifications */
- pData->iRow = interlace_row [0];
- pData->iRowinc = interlace_rowskip [0];
- pData->iCol = interlace_col [0];
- pData->iColinc = interlace_colskip [0];
- pData->iRowsamples = (pData->iDatawidth + interlace_roundoff [0]) >> interlace_divider [0];
- pData->iSamplemul = 1;
- pData->iSampleofs = 7;
- pData->iSamplediv = 3;
- pData->iRowsize = (pData->iRowsamples + 7) >> 3;
- pData->iRowmax = ((pData->iDatawidth + 7) >> 3) + pData->iPixelofs;
- pData->iFilterbpp = 1;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IDX1_I, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_idx2_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IDX2_NI, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_idx2;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_idx2;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_idx2;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_idx2;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 1;
- pData->iSampleofs = 3;
- pData->iSamplediv = 2;
- pData->iRowsize = (pData->iRowsamples + 3) >> 2;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 1;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IDX2_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_idx2_i (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IDX2_I, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_idx2;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_idx2;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_idx2;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_idx2;
-#endif
-
- pData->iPass = 0; /* from 0..6; is 1..7 in specifications */
- pData->iRow = interlace_row [0];
- pData->iRowinc = interlace_rowskip [0];
- pData->iCol = interlace_col [0];
- pData->iColinc = interlace_colskip [0];
- pData->iRowsamples = (pData->iDatawidth + interlace_roundoff [0]) >> interlace_divider [0];
- pData->iSamplemul = 1;
- pData->iSampleofs = 3;
- pData->iSamplediv = 2;
- pData->iRowsize = (pData->iRowsamples + 3) >> 2;
- pData->iRowmax = ((pData->iDatawidth + 3) >> 2) + pData->iPixelofs;
- pData->iFilterbpp = 1;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IDX2_I, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_idx4_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IDX4_NI, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_idx4;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_idx4;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_idx4;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_idx4;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 1;
- pData->iSampleofs = 1;
- pData->iSamplediv = 1;
- pData->iRowsize = (pData->iRowsamples + 1) >> 1;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 1;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IDX4_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_idx4_i (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IDX4_I, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_idx4;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_idx4;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_idx4;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_idx4;
-#endif
-
- pData->iPass = 0; /* from 0..6; is 1..7 in specifications */
- pData->iRow = interlace_row [0];
- pData->iRowinc = interlace_rowskip [0];
- pData->iCol = interlace_col [0];
- pData->iColinc = interlace_colskip [0];
- pData->iRowsamples = (pData->iDatawidth + interlace_roundoff [0]) >> interlace_divider [0];
- pData->iSamplemul = 1;
- pData->iSampleofs = 1;
- pData->iSamplediv = 1;
- pData->iRowsize = (pData->iRowsamples + 1) >> 1;
- pData->iRowmax = ((pData->iDatawidth + 1) >> 1) + pData->iPixelofs;
- pData->iFilterbpp = 1;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IDX4_I, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_idx8_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IDX8_NI, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_idx8;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_idx8;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_idx8;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_idx8;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 1;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 1;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IDX8_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_idx8_i (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IDX8_I, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_idx8;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_idx8;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_idx8;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_idx8;
-#endif
-
- pData->iPass = 0; /* from 0..6; is 1..7 in specifications */
- pData->iRow = interlace_row [0];
- pData->iRowinc = interlace_rowskip [0];
- pData->iCol = interlace_col [0];
- pData->iColinc = interlace_colskip [0];
- pData->iRowsamples = (pData->iDatawidth + interlace_roundoff [0]) >> interlace_divider [0];
- pData->iSamplemul = 1;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples;
- pData->iRowmax = pData->iDatawidth + pData->iPixelofs;
- pData->iFilterbpp = 1;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_IDX8_I, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_ga8_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_GA8_NI, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_ga8;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_ga8;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_ga8;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_ga8;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 2;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples << 1;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 2;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_GA8_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_ga8_i (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_GA8_I, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_ga8;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_ga8;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_ga8;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_ga8;
-#endif
-
- pData->iPass = 0; /* from 0..6; is 1..7 in specifications */
- pData->iRow = interlace_row [0];
- pData->iRowinc = interlace_rowskip [0];
- pData->iCol = interlace_col [0];
- pData->iColinc = interlace_colskip [0];
- pData->iRowsamples = (pData->iDatawidth + interlace_roundoff [0]) >> interlace_divider [0];
- pData->iSamplemul = 2;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples << 1;
- pData->iRowmax = (pData->iDatawidth << 1) + pData->iPixelofs;
- pData->iFilterbpp = 2;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_GA8_I, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_init_ga16_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_GA16_NI, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_ga16;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_ga16;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_ga16;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_ga16;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 4;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples << 2;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 4;
- pData->bIsRGBA16 = MNG_TRUE; /* intermediate row is 16-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_GA16_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_init_ga16_i (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_GA16_I, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_ga16;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_ga16;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_ga16;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_ga16;
-#endif
-
- pData->iPass = 0; /* from 0..6; is 1..7 in specifications */
- pData->iRow = interlace_row [0];
- pData->iRowinc = interlace_rowskip [0];
- pData->iCol = interlace_col [0];
- pData->iColinc = interlace_colskip [0];
- pData->iRowsamples = (pData->iDatawidth + interlace_roundoff [0]) >> interlace_divider [0];
- pData->iSamplemul = 4;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples << 2;
- pData->iRowmax = (pData->iDatawidth << 2) + pData->iPixelofs;
- pData->iFilterbpp = 4;
- pData->bIsRGBA16 = MNG_TRUE; /* intermediate row is 16-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_GA16_I, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_rgba8_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_RGBA8_NI, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_rgba8;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_rgba8;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_rgba8;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_rgba8;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 4;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples << 2;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 4;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_RGBA8_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-/* ************************************************************************** */
-
-mng_retcode mng_init_rgba8_i (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_RGBA8_I, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_rgba8;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_rgba8;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_rgba8;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_rgba8;
-#endif
-
- pData->iPass = 0; /* from 0..6; is 1..7 in specifications */
- pData->iRow = interlace_row [0];
- pData->iRowinc = interlace_rowskip [0];
- pData->iCol = interlace_col [0];
- pData->iColinc = interlace_colskip [0];
- pData->iRowsamples = (pData->iDatawidth + interlace_roundoff [0]) >> interlace_divider [0];
- pData->iSamplemul = 4;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples << 2;
- pData->iRowmax = (pData->iDatawidth << 2) + pData->iPixelofs;
- pData->iFilterbpp = 4;
- pData->bIsRGBA16 = MNG_FALSE; /* intermediate row is 8-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_RGBA8_I, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_init_rgba16_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_RGBA16_NI, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_rgba16;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_rgba16;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_rgba16;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_rgba16;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 8;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples << 3;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 8;
- pData->bIsRGBA16 = MNG_TRUE; /* intermediate row is 16-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_RGBA16_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_init_rgba16_i (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_RGBA16_I, MNG_LC_START);
-#endif
-
- if (pData->fDisplayrow)
- pData->fProcessrow = (mng_fptr)mng_process_rgba16;
-
- if (pData->pStoreobj) /* store in object too ? */
- { /* immediate delta ? */
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- pData->fStorerow = (mng_fptr)mng_delta_rgba16;
- else
-#endif
- pData->fStorerow = (mng_fptr)mng_store_rgba16;
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_rgba16;
-#endif
-
- pData->iPass = 0; /* from 0..6; (1..7 in specification) */
- pData->iRow = interlace_row [0];
- pData->iRowinc = interlace_rowskip [0];
- pData->iCol = interlace_col [0];
- pData->iColinc = interlace_colskip [0];
- pData->iRowsamples = (pData->iDatawidth + interlace_roundoff [0]) >> interlace_divider [0];
- pData->iSamplemul = 8;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples << 3;
- pData->iRowmax = (pData->iDatawidth << 3) + pData->iPixelofs;
- pData->iFilterbpp = 8;
- pData->bIsRGBA16 = MNG_TRUE; /* intermediate row is 16-bit deep */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_RGBA16_I, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Row processing initialization routines (JPEG) - set up the variables * */
-/* * needed to process uncompressed row-data * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_init_jpeg_a1_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_JPEG_A1_NI, MNG_LC_START);
-#endif
-
- if (pData->pStoreobj) /* store in object too ? */
- {
- if (pData->iJHDRimgbitdepth == 8)
- {
- switch (pData->iJHDRcolortype)
- {
- case 12 : { pData->fStorerow = (mng_fptr)mng_store_jpeg_g8_a1; break; }
- case 14 : { pData->fStorerow = (mng_fptr)mng_store_jpeg_rgb8_a1; break; }
- }
- }
-
- /* TODO: bitdepth 12 & 20 */
-
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_g1;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 1;
- pData->iSampleofs = 7;
- pData->iSamplediv = 3;
- pData->iRowsize = (pData->iRowsamples + 7) >> 3;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 1;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_JPEG_A1_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_jpeg_a2_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_JPEG_A2_NI, MNG_LC_START);
-#endif
-
- if (pData->pStoreobj) /* store in object too ? */
- {
- if (pData->iJHDRimgbitdepth == 8)
- {
- switch (pData->iJHDRcolortype)
- {
- case 12 : { pData->fStorerow = (mng_fptr)mng_store_jpeg_g8_a2; break; }
- case 14 : { pData->fStorerow = (mng_fptr)mng_store_jpeg_rgb8_a2; break; }
- }
- }
-
- /* TODO: bitdepth 12 & 20 */
-
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_g2;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 1;
- pData->iSampleofs = 3;
- pData->iSamplediv = 2;
- pData->iRowsize = (pData->iRowsamples + 3) >> 2;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 1;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_JPEG_A2_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_jpeg_a4_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_JPEG_A4_NI, MNG_LC_START);
-#endif
-
- if (pData->pStoreobj) /* store in object too ? */
- {
- if (pData->iJHDRimgbitdepth == 8)
- {
- switch (pData->iJHDRcolortype)
- {
- case 12 : { pData->fStorerow = (mng_fptr)mng_store_jpeg_g8_a4; break; }
- case 14 : { pData->fStorerow = (mng_fptr)mng_store_jpeg_rgb8_a4; break; }
- }
- }
-
- /* TODO: bitdepth 12 & 20 */
-
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_g4;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 1;
- pData->iSampleofs = 1;
- pData->iSamplediv = 1;
- pData->iRowsize = (pData->iRowsamples + 1) >> 1;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 1;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_JPEG_A4_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
-
-/* ************************************************************************** */
-
-mng_retcode mng_init_jpeg_a8_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_JPEG_A8_NI, MNG_LC_START);
-#endif
-
- if (pData->pStoreobj) /* store in object too ? */
- {
- if (pData->iJHDRimgbitdepth == 8)
- {
- switch (pData->iJHDRcolortype)
- {
- case 12 : { pData->fStorerow = (mng_fptr)mng_store_jpeg_g8_a8; break; }
- case 14 : { pData->fStorerow = (mng_fptr)mng_store_jpeg_rgb8_a8; break; }
- }
- }
-
- /* TODO: bitdepth 12 & 20 */
-
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_g8;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 1;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 1;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_JPEG_A8_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_init_jpeg_a16_ni (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_JPEG_A16_NI, MNG_LC_START);
-#endif
-
- if (pData->pStoreobj) /* store in object too ? */
- {
- if (pData->iJHDRimgbitdepth == 8)
- {
- switch (pData->iJHDRcolortype)
- {
- case 12 : { pData->fStorerow = (mng_fptr)mng_store_jpeg_g8_a16; break; }
- case 14 : { pData->fStorerow = (mng_fptr)mng_store_jpeg_rgb8_a16; break; }
- }
- }
-
- /* TODO: bitdepth 12 & 20 */
-
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- pData->fDifferrow = (mng_fptr)mng_differ_g16;
-#endif
-
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- pData->iSamplemul = 2;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iRowsize = pData->iRowsamples << 1;
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
- pData->iFilterbpp = 2;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_JPEG_A16_NI, MNG_LC_END);
-#endif
-
- return mng_init_rowproc (pData);
-}
-#endif
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_JNG */
-#endif /* MNG_OPTIMIZE_FOOTPRINT_INIT */
-
-
-/* ************************************************************************** */
-/* * * */
-/* * Generic row processing initialization & cleanup routines * */
-/* * - initialize the buffers used by the row processing routines * */
-/* * - cleanup the buffers used by the row processing routines * */
-/* * * */
-/* ************************************************************************** */
-
-mng_retcode mng_init_rowproc (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_ROWPROC, MNG_LC_START);
-#endif
-
-#ifdef MNG_OPTIMIZE_FOOTPRINT_INIT
- if (pData->ePng_imgtype != png_none)
- {
- if (pData->fDisplayrow)
- switch (pData->ePng_imgtype)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case png_g1:
- pData->fProcessrow = (mng_fptr)mng_process_g1;
- break;
- case png_g2:
- pData->fProcessrow = (mng_fptr)mng_process_g2;
- break;
- case png_g4:
- pData->fProcessrow = (mng_fptr)mng_process_g4;
- break;
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case png_g8:
- pData->fProcessrow = (mng_fptr)mng_process_g8;
- break;
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case png_idx1:
- pData->fProcessrow = (mng_fptr)mng_process_idx1;
- break;
- case png_idx2:
- pData->fProcessrow = (mng_fptr)mng_process_idx2;
- break;
- case png_idx4:
- pData->fProcessrow = (mng_fptr)mng_process_idx4;
- break;
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case png_idx8:
- pData->fProcessrow = (mng_fptr)mng_process_idx8;
- break;
- case png_ga8:
- pData->fProcessrow = (mng_fptr)mng_process_ga8;
- break;
- case png_rgb8:
- pData->fProcessrow = (mng_fptr)mng_process_rgb8;
- break;
- case png_rgba8:
- pData->fProcessrow = (mng_fptr)mng_process_rgba8;
- break;
-#ifndef MNG_NO_16BIT_SUPPORT
- case png_g16:
- pData->fProcessrow = (mng_fptr)mng_process_g16;
- break;
- case png_ga16:
- pData->fProcessrow = (mng_fptr)mng_process_ga16;
- break;
- case png_rgb16:
- pData->fProcessrow = (mng_fptr)mng_process_rgb16;
- break;
- case png_rgba16:
- pData->fProcessrow = (mng_fptr)mng_process_rgba16;
- break;
-#endif
- default:
- break;
- }
-
- if (pData->pStoreobj) /* store in object too ? */
- {
-#ifndef MNG_NO_DELTA_PNG
- if ((pData->bHasDHDR) && (pData->bDeltaimmediate))
- switch (pData->ePng_imgtype)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case png_g1:
- pData->fStorerow = (mng_fptr)mng_delta_g1;
- break;
- case png_g2:
- pData->fStorerow = (mng_fptr)mng_delta_g2;
- break;
- case png_g4:
- pData->fStorerow = (mng_fptr)mng_delta_g4;
- break;
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case png_g8:
- pData->fStorerow = (mng_fptr)mng_delta_g8;
- break;
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case png_idx1:
- pData->fStorerow = (mng_fptr)mng_delta_idx1;
- break;
- case png_idx2:
- pData->fStorerow = (mng_fptr)mng_delta_idx2;
- break;
- case png_idx4:
- pData->fStorerow = (mng_fptr)mng_delta_idx4;
- break;
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case png_idx8:
- pData->fStorerow = (mng_fptr)mng_delta_idx8;
- break;
- case png_ga8:
- pData->fStorerow = (mng_fptr)mng_delta_ga8;
- break;
- case png_rgb8:
- pData->fStorerow = (mng_fptr)mng_delta_rgb8;
- break;
- case png_rgba8:
- pData->fStorerow = (mng_fptr)mng_delta_rgba8;
- break;
-#ifndef MNG_NO_16BIT_SUPPORT
- case png_g16:
- pData->fStorerow = (mng_fptr)mng_delta_g16;
- break;
- case png_ga16:
- pData->fStorerow = (mng_fptr)mng_delta_ga16;
- break;
- case png_rgb16:
- pData->fStorerow = (mng_fptr)mng_delta_rgb16;
- break;
- case png_rgba16:
- pData->fStorerow = (mng_fptr)mng_delta_rgba16;
- break;
-#endif
- default:
- break;
- }
- else
-#endif /* MNG_NO_DELTA_PNG */
- switch (pData->ePng_imgtype)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case png_g1:
- pData->fStorerow = (mng_fptr)mng_store_g1;
- break;
- case png_g2:
- pData->fStorerow = (mng_fptr)mng_store_g2;
- break;
- case png_g4:
- pData->fStorerow = (mng_fptr)mng_store_g4;
- break;
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case png_g8:
- pData->fStorerow = (mng_fptr)mng_store_g8;
- break;
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case png_idx1:
- pData->fStorerow = (mng_fptr)mng_store_idx1;
- break;
- case png_idx2:
- pData->fStorerow = (mng_fptr)mng_store_idx2;
- break;
- case png_idx4:
- pData->fStorerow = (mng_fptr)mng_store_idx4;
- break;
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case png_idx8:
- pData->fStorerow = (mng_fptr)mng_store_idx8;
- break;
- case png_ga8:
- pData->fStorerow = (mng_fptr)mng_store_ga8;
- break;
- case png_rgb8:
- pData->fStorerow = (mng_fptr)mng_store_rgb8;
- break;
- case png_rgba8:
- pData->fStorerow = (mng_fptr)mng_store_rgba8;
- break;
-#ifndef MNG_NO_16BIT_SUPPORT
- case png_g16:
- pData->fStorerow = (mng_fptr)mng_store_g16;
- break;
- case png_ga16:
- pData->fStorerow = (mng_fptr)mng_store_ga16;
- break;
- case png_rgb16:
- pData->fStorerow = (mng_fptr)mng_store_rgb16;
- break;
- case png_rgba16:
- pData->fStorerow = (mng_fptr)mng_store_rgba16;
- break;
-#endif
-
-#ifdef MNG_INCLUDE_JNG
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case png_jpeg_a1:
-/* if (pData->iJHDRimgbitdepth == 8) */
- {
- switch (pData->iJHDRcolortype)
- {
- case 12 :
- { pData->fStorerow = (mng_fptr)mng_store_jpeg_g8_a1; break; }
- case 14 :
- { pData->fStorerow = (mng_fptr)mng_store_jpeg_rgb8_a1; break; }
- }
- }
- /* TODO: bitdepth 12 & 20 */
- break;
- case png_jpeg_a2:
-/* if (pData->iJHDRimgbitdepth == 8) */
- {
- switch (pData->iJHDRcolortype)
- {
- case 12 :
- { pData->fStorerow = (mng_fptr)mng_store_jpeg_g8_a2; break; }
- case 14 :
- { pData->fStorerow = (mng_fptr)mng_store_jpeg_rgb8_a2; break; }
- }
- }
- break;
- /* TODO: bitdepth 12 & 20 */
- case png_jpeg_a4:
-/* if (pData->iJHDRimgbitdepth == 8) */
- {
- switch (pData->iJHDRcolortype)
- {
- case 12 :
- { pData->fStorerow = (mng_fptr)mng_store_jpeg_g8_a4; break; }
- case 14 :
- { pData->fStorerow = (mng_fptr)mng_store_jpeg_rgb8_a4; break; }
- }
- }
- break;
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- /* TODO: bitdepth 12 & 20 */
- case png_jpeg_a8:
-/* if (pData->iJHDRimgbitdepth == 8) */
- {
- switch (pData->iJHDRcolortype)
- {
- case 12 :
- { pData->fStorerow = (mng_fptr)mng_store_jpeg_g8_a8; break; }
- case 14 :
- { pData->fStorerow = (mng_fptr)mng_store_jpeg_rgb8_a8; break; }
- }
- }
- break;
- /* TODO: bitdepth 12 & 20 */
-#ifndef MNG_NO_16BIT_SUPPORT
- case png_jpeg_a16:
-/* if (pData->iJHDRimgbitdepth == 8) */
- {
- switch (pData->iJHDRcolortype)
- {
- case 12 :
- { pData->fStorerow = (mng_fptr)mng_store_jpeg_g8_a16; break; }
- case 14 :
- { pData->fStorerow = (mng_fptr)mng_store_jpeg_rgb8_a16; break; }
- }
- }
- break;
- /* TODO: bitdepth 12 & 20 */
-#endif
-#endif /* MNG_INCLUDE_JNG */
- default:
- break;
- }
- }
-
-#ifdef FILTER192 /* leveling & differing ? */
- if (pData->iFilter == MNG_FILTER_DIFFERING)
- switch (pData->ePng_imgtype)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case png_g1:
-#ifdef MNG_INCLUDE_JNG
- case png_jpeg_a1:
-#endif
- pData->fDifferrow = (mng_fptr)mng_differ_g1;
- break;
- case png_g2:
-#ifdef MNG_INCLUDE_JNG
- case png_jpeg_a2:
-#endif
- pData->fDifferrow = (mng_fptr)mng_differ_g2;
- break;
- case png_g4:
-#ifdef MNG_INCLUDE_JNG
- case png_jpeg_a4:
-#endif
- pData->fDifferrow = (mng_fptr)mng_differ_g4;
- break;
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case png_g8:
-#ifdef MNG_INCLUDE_JNG
- case png_jpeg_a8:
-#endif
- pData->fDifferrow = (mng_fptr)mng_differ_g8;
- break;
- case png_rgb8:
- pData->fDifferrow = (mng_fptr)mng_differ_rgb8;
- break;
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case png_idx1:
- pData->fDifferrow = (mng_fptr)mng_differ_idx1;
- break;
- case png_idx2:
- pData->fDifferrow = (mng_fptr)mng_differ_idx2;
- break;
- case png_idx4:
- pData->fDifferrow = (mng_fptr)mng_differ_idx4;
- break;
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case png_idx8:
- pData->fDifferrow = (mng_fptr)mng_differ_idx8;
- break;
- case png_ga8:
- pData->fDifferrow = (mng_fptr)mng_differ_ga8;
- break;
- case png_rgb8:
- pData->fDifferrow = (mng_fptr)mng_differ_rgb8;
- break;
- case png_rgba8:
- pData->fDifferrow = (mng_fptr)mng_differ_rgba8;
- break;
-#ifndef MNG_NO_16BIT_SUPPORT
- case png_g16:
-#ifdef MNG_INCLUDE_JNG
- case png_jpeg_a16:
-#endif
- pData->fDifferrow = (mng_fptr)mng_differ_g16;
- break;
- case png_ga16:
- pData->fDifferrow = (mng_fptr)mng_differ_ga16;
- break;
- case png_rgb16:
- pData->fDifferrow = (mng_fptr)mng_differ_rgb16;
- break;
- case png_rgba16:
- pData->fDifferrow = (mng_fptr)mng_differ_rgba16;
- break;
-#endif
- default:
- break;
- }
-#endif
-
- switch (pData->ePng_imgtype)
- {
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
- case png_g1:
- case png_idx1:
-#ifdef MNG_INCLUDE_JNG
- case png_jpeg_a1:
-#endif
- pData->iSamplemul = 1;
- pData->iSampleofs = 7;
- pData->iSamplediv = 3;
- pData->iFilterbpp = 1;
- break;
- case png_g2:
- case png_idx2:
-#ifdef MNG_INCLUDE_JNG
- case png_jpeg_a2:
-#endif
- pData->iSamplemul = 1;
- pData->iSampleofs = 3;
- pData->iSamplediv = 2;
- pData->iFilterbpp = 1;
- break;
- case png_g4:
- case png_idx4:
-#ifdef MNG_INCLUDE_JNG
- case png_jpeg_a4:
-#endif
- pData->iSamplemul = 1;
- pData->iSampleofs = 1;
- pData->iSamplediv = 1;
- pData->iFilterbpp = 1;
- break;
-#endif /* MNG_NO_1_2_4BIT_SUPPORT */
- case png_g8:
- case png_idx8:
-#ifdef MNG_INCLUDE_JNG
- case png_jpeg_a8:
-#endif
- pData->iSamplemul = 1;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iFilterbpp = 1;
- break;
- case png_ga8:
-#ifndef MNG_NO_16BIT_SUPPORT
- case png_g16:
-#ifdef MNG_INCLUDE_JNG
- case png_jpeg_a16:
-#endif
-#endif
- pData->iSamplemul = 2;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iFilterbpp = 2;
- break;
- case png_rgb8:
- pData->iSamplemul = 3;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iFilterbpp = 3;
- break;
-#ifndef MNG_NO_16BIT_SUPPORT
- case png_ga16:
-#endif
- case png_rgba8:
- pData->iSamplemul = 4;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iFilterbpp = 4;
- break;
-#ifndef MNG_NO_16BIT_SUPPORT
- case png_rgb16:
- pData->iSamplemul = 6;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iFilterbpp = 6;
- break;
- case png_rgba16:
- pData->iSamplemul = 8;
- pData->iSampleofs = 0;
- pData->iSamplediv = 0;
- pData->iFilterbpp = 8;
- break;
-#endif
- default:
- break;
- }
-
- if (pData->iInterlace) /* noninterlaced */
- {
- pData->iPass = 0; /* from 0..6; (1..7 in specification) */
- pData->iRow = interlace_row [0];
- pData->iRowinc = interlace_rowskip [0];
- pData->iCol = interlace_col [0];
- pData->iColinc = interlace_colskip [0];
- pData->iRowsamples = (pData->iDatawidth + interlace_roundoff [0]) >>
- interlace_divider [0];
- pData->iRowmax = ((pData->iDatawidth * pData->iSamplemul +
- pData->iSampleofs) >> pData->iSamplediv) + pData->iPixelofs;
- }
- else /* interlaced */
- {
- pData->iPass = -1;
- pData->iRow = 0;
- pData->iRowinc = 1;
- pData->iCol = 0;
- pData->iColinc = 1;
- pData->iRowsamples = pData->iDatawidth;
- }
- if (pData->iSamplediv > 0)
- pData->iRowsize = (pData->iRowsamples + pData->iSampleofs) >>
- pData->iSamplediv;
- else
- pData->iRowsize = (pData->iRowsamples * pData->iSamplemul);
-
- if (!pData->iInterlace) /* noninterlaced */
- pData->iRowmax = pData->iRowsize + pData->iPixelofs;
-
-#ifdef MNG_NO_16BIT_SUPPORT
- pData->bIsRGBA16 = MNG_FALSE;
-#else
- switch (pData->ePng_imgtype)
- {
- case png_g16:
- case png_ga16:
- case png_rgb16:
- case png_rgba16:
- pData->bIsRGBA16 = MNG_TRUE;
- break;
- default:
- pData->bIsRGBA16 = MNG_FALSE;
- break;
- }
-#endif
-
- }
-#endif /* MNG_OPTIMIZE_FOOTPRINT_INIT */
-
- if (pData->pStoreobj) /* storage object selected ? */
- {
- pData->pStorebuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- /* and so it becomes viewable ! */
- ((mng_imagep)pData->pStoreobj)->bViewable = MNG_TRUE;
- ((mng_imagedatap)pData->pStorebuf)->bViewable = MNG_TRUE;
- }
-
- /* allocate the buffers; the individual init routines have already
- calculated the required maximum size; except in the case of a JNG
- without alpha!!! */
- if (pData->iRowmax)
- {
-#if defined(MNG_NO_16BIT_SUPPORT) || defined (MNG_NO_1_2_4BIT_SUPPORT)
- mng_uint8 iRowadd = 0;
-#ifdef MNG_NO_1_2_4BIT_SUPPORT
- if (pData->iPNGdepth < 8)
- iRowadd=(pData->iPNGdepth*pData->iRowmax+7)/8;
-#endif
-#ifdef MNG_NO_16BIT_SUPPORT
- if (pData->iPNGdepth > 8)
- iRowadd=pData->iRowmax;
-#endif
- MNG_ALLOC (pData, pData->pWorkrow, pData->iRowmax+iRowadd);
- MNG_ALLOC (pData, pData->pPrevrow, pData->iRowmax+iRowadd);
-#else
- MNG_ALLOC (pData, pData->pWorkrow, pData->iRowmax);
- MNG_ALLOC (pData, pData->pPrevrow, pData->iRowmax);
-#endif
- }
-
- /* allocate an RGBA16 row for intermediate processing */
- MNG_ALLOC (pData, pData->pRGBArow, (pData->iDatawidth << 3));
-
-#ifndef MNG_NO_CMS
- if (pData->fDisplayrow) /* display "on-the-fly" ? */
- {
-#if defined(MNG_FULL_CMS) /* determine color-management initialization */
- mng_retcode iRetcode = mng_init_full_cms (pData, MNG_TRUE, MNG_TRUE, MNG_FALSE);
-#elif defined(MNG_GAMMA_ONLY)
- mng_retcode iRetcode = mng_init_gamma_only (pData, MNG_TRUE, MNG_TRUE, MNG_FALSE);
-#elif defined(MNG_APP_CMS)
- mng_retcode iRetcode = mng_init_app_cms (pData, MNG_TRUE, MNG_TRUE, MNG_FALSE);
-#endif
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* !MNG_NO_CMS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_INIT_ROWPROC, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_next_row (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_NEXT_ROW, MNG_LC_START);
-#endif
-
- pData->iRow += pData->iRowinc; /* increase the row counter */
-
- if (pData->iPass >= 0) /* interlaced ? */
- {
- while ((pData->iPass < 7) && /* went 'outside' the image ? */
- ((pData->iRow >= (mng_int32)pData->iDataheight) ||
- (pData->iCol >= (mng_int32)pData->iDatawidth ) ))
- {
- pData->iPass++; /* next pass ! */
-
- if (pData->iPass < 7) /* there's only 7 passes ! */
- {
- pData->iRow = interlace_row [pData->iPass];
- pData->iRowinc = interlace_rowskip [pData->iPass];
- pData->iCol = interlace_col [pData->iPass];
- pData->iColinc = interlace_colskip [pData->iPass];
- pData->iRowsamples = (pData->iDatawidth - pData->iCol + interlace_roundoff [pData->iPass])
- >> interlace_divider [pData->iPass];
-
- if (pData->iSamplemul > 1) /* recalculate row dimension */
- pData->iRowsize = pData->iRowsamples * pData->iSamplemul;
- else
- if (pData->iSamplediv > 0)
- pData->iRowsize = (pData->iRowsamples + pData->iSampleofs) >> pData->iSamplediv;
- else
- pData->iRowsize = pData->iRowsamples;
-
- }
-
- if ((pData->iPass < 7) && /* reset previous row to zeroes ? */
- (pData->iRow < (mng_int32)pData->iDataheight) &&
- (pData->iCol < (mng_int32)pData->iDatawidth ) )
- { /* making sure the filters will work properly! */
- mng_int32 iX;
- mng_uint8p pTemp = pData->pPrevrow;
-
-#ifdef MNG_NO_16BIT_SUPPORT
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iPNGmult*pData->iRowsize; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iPNGmult*pData->iRowsize; iX++)
-#endif
-#else
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsize; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsize; iX++)
-#endif
-#endif
- {
- *pTemp = 0;
- pTemp++;
- }
- }
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_NEXT_ROW, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_cleanup_rowproc (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CLEANUP_ROWPROC, MNG_LC_START);
-#endif
-
-#ifdef MNG_INCLUDE_LCMS /* cleanup cms profile/transform */
- {
- mng_retcode iRetcode = mng_clear_cms (pData);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif /* MNG_INCLUDE_LCMS */
-
- if (pData->pRGBArow) /* cleanup buffer for intermediate row */
- MNG_FREEX (pData, pData->pRGBArow, (pData->iDatawidth << 3));
- if (pData->pPrevrow) /* cleanup buffer for previous row */
- MNG_FREEX (pData, pData->pPrevrow, pData->iRowmax);
- if (pData->pWorkrow) /* cleanup buffer for working row */
- MNG_FREEX (pData, pData->pWorkrow, pData->iRowmax);
-
- pData->pWorkrow = MNG_NULL; /* propogate uninitialized buffers */
- pData->pPrevrow = MNG_NULL;
- pData->pRGBArow = MNG_NULL;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_CLEANUP_ROWPROC, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* woohiii */
-}
-
-/* ************************************************************************** */
-/* * * */
-/* * Generic row processing routines for JNG * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-
-/* ************************************************************************** */
-
-mng_retcode mng_display_jpeg_rows (mng_datap pData)
-{
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_JPEG_ROWS, MNG_LC_START);
-#endif
- /* any completed rows ? */
- if ((pData->iJPEGrow > pData->iJPEGdisprow) &&
- (pData->iJPEGalpharow > pData->iJPEGdisprow) )
- {
- mng_uint32 iX, iMax;
- mng_uint32 iSaverow = pData->iRow; /* save alpha decompression row-count */
- /* determine the highest complete(!) row */
- if (pData->iJPEGrow > pData->iJPEGalpharow)
- iMax = pData->iJPEGalpharow;
- else
- iMax = pData->iJPEGrow;
- /* display the rows */
- for (iX = pData->iJPEGdisprow; iX < iMax; iX++)
- {
- pData->iRow = iX; /* make sure we all know which row to handle */
- /* makeup an intermediate row from the buffer */
- iRetcode = ((mng_retrieverow)pData->fRetrieverow) (pData);
- /* color-correct it if necessary */
- if ((!iRetcode) && (pData->fCorrectrow))
- iRetcode = ((mng_correctrow)pData->fCorrectrow) (pData);
-
- if (!iRetcode) /* and display it */
- {
- iRetcode = ((mng_displayrow)pData->fDisplayrow) (pData);
-
- if (!iRetcode) /* check progressive display refresh */
- iRetcode = mng_display_progressive_check (pData);
- }
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-
- pData->iJPEGdisprow = iMax; /* keep track of the last displayed row */
- pData->iRow = iSaverow; /* restore alpha decompression row-count */
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DISPLAY_JPEG_ROWS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_next_jpeg_alpharow (mng_datap pData)
-{
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_NEXT_JPEG_ALPHAROW, MNG_LC_START);
-#endif
-
- pData->iJPEGalpharow++; /* count the row */
-
- if (pData->fDisplayrow) /* display "on-the-fly" ? */
- { /* try to display what you can */
- iRetcode = mng_display_jpeg_rows (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_NEXT_JPEG_ALPHAROW, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_next_jpeg_row (mng_datap pData)
-{
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_NEXT_JPEG_ROW, MNG_LC_START);
-#endif
-
- pData->iJPEGrow++; /* increase the row-counter */
-
- if (pData->fDisplayrow) /* display "on-the-fly" ? */
- { /* has alpha channel ? */
- if ((pData->iJHDRcolortype == MNG_COLORTYPE_JPEGGRAYA ) ||
- (pData->iJHDRcolortype == MNG_COLORTYPE_JPEGCOLORA) )
- { /* try to display what you can */
- iRetcode = mng_display_jpeg_rows (pData);
- }
- else
- { /* make sure we all know which row to handle */
- pData->iRow = pData->iJPEGrow - 1;
- /* makeup an intermediate row from the buffer */
- iRetcode = ((mng_retrieverow)pData->fRetrieverow) (pData);
- /* color-correct it if necessary */
- if ((!iRetcode) && (pData->fCorrectrow))
- iRetcode = ((mng_correctrow)pData->fCorrectrow) (pData);
-
- if (!iRetcode) /* and display it */
- {
- iRetcode = ((mng_displayrow)pData->fDisplayrow) (pData);
-
- if (!iRetcode) /* check progressive display refresh */
- iRetcode = mng_display_progressive_check (pData);
- }
- }
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-
- /* surpassed last filled row ? */
- if (pData->iJPEGrow > pData->iJPEGrgbrow)
- pData->iJPEGrgbrow = pData->iJPEGrow;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_NEXT_JPEG_ROW, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_MAGN
-#ifndef MNG_OPTIMIZE_FOOTPRINT_MAGN
-#ifndef MNG_NO_GRAY_SUPPORT
-mng_retcode mng_magnify_g8_x1 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX, iS, iM;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G8_X1, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline; /* initialize pixel-loop */
- pTempdst = pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- iM = iML;
- else
- if (iX == (iWidth - 1)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
-
- for (iS = 1; iS < iM; iS++) /* fill interval */
- {
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- }
-
- pTempsrc1++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G8_X1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_g8_x2 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G8_X2, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline; /* initialize pixel-loop */
- pTempdst = pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 1;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- { /* is it same as first ? */
- if (*pTempsrc1 == *pTempsrc2)
- {
- for (iS = 1; iS < iM; iS++) /* then just repeat the first */
- {
- *pTempdst = *pTempsrc1;
- pTempdst++;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++) /* calculate the distances */
- {
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2)) + (mng_int32)(*pTempsrc1) );
- pTempdst++;
- }
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- }
- }
- }
-
- pTempsrc1++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G8_X2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_g8_x3 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM, iH;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G8_X3, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline; /* initialize pixel-loop */
- pTempdst = pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 1;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- { /* is it same as first ? */
- if (*pTempsrc1 == *pTempsrc2)
- {
- for (iS = 1; iS < iM; iS++) /* then just repeat the first */
- {
- *pTempdst = *pTempsrc1;
- pTempdst++;
- }
- }
- else
- {
- iH = (iM+1) / 2; /* calculate halfway point */
-
- for (iS = 1; iS < iH; iS++) /* replicate first half */
- {
- *pTempdst = *pTempsrc1;
- pTempdst++;
- }
-
- for (iS = iH; iS < iM; iS++) /* replicate second half */
- {
- *pTempdst = *pTempsrc2;
- pTempdst++;
- }
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- }
- }
- }
-
- pTempsrc1++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G8_X3, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_GRAY_SUPPORT */
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgb8_x1 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX, iS, iM;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB8_X1, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline; /* initialize pixel-loop */
- pTempdst = pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- iM = iML;
- else
- if (iX == (iWidth - 1)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
-
- for (iS = 1; iS < iM; iS++) /* fill interval */
- {
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- }
-
- pTempsrc1 += 3;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB8_X1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgb8_x2 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB8_X2, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline; /* initialize pixel-loop */
- pTempdst = pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 3;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = (mng_int32)iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = (mng_int32)iMR;
- else
- iM = (mng_int32)iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- for (iS = 1; iS < iM; iS++)
- {
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1; /* just repeat the first */
- else /* calculate the distance */
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2)) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
-
- if (*(pTempsrc1+1) == *(pTempsrc2+1))
- *pTempdst = *(pTempsrc1+1);
- else
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*(pTempsrc2+1)) -
- (mng_int32)(*(pTempsrc1+1)) ) + iM) /
- (iM * 2)) + (mng_int32)(*(pTempsrc1+1)) );
-
- pTempdst++;
-
- if (*(pTempsrc1+2) == *(pTempsrc2+2))
- *pTempdst = *(pTempsrc1+2);
- else
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*(pTempsrc2+2)) -
- (mng_int32)(*(pTempsrc1+2)) ) + iM) /
- (iM * 2)) + (mng_int32)(*(pTempsrc1+2)) );
-
- pTempdst++;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 3;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB8_X2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgb8_x3 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM, iH;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB8_X3, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline; /* initialize pixel-loop */
- pTempdst = pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 3;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = (mng_int32)iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = (mng_int32)iMR;
- else
- iM = (mng_int32)iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- iH = (iM+1) / 2; /* calculate halfway point */
-
- for (iS = 1; iS < iH; iS++) /* replicate first half */
- {
- *pTempdst = *pTempsrc1;
- *(pTempdst+1) = *(pTempsrc1+1);
- *(pTempdst+2) = *(pTempsrc1+2);
-
- pTempdst += 3;
- }
-
- for (iS = iH; iS < iM; iS++) /* replicate second half */
- {
- *pTempdst = *pTempsrc2;
- *(pTempdst+1) = *(pTempsrc2+1);
- *(pTempdst+2) = *(pTempsrc2+2);
-
- pTempdst += 3;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 3;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB8_X3, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_GRAY_SUPPORT
-mng_retcode mng_magnify_ga8_x1 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX, iS, iM;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_X1, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline; /* initialize pixel-loop */
- pTempdst = pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- iM = iML;
- else
- if (iX == (iWidth - 1)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
-
- for (iS = 1; iS < iM; iS++) /* fill interval */
- {
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- }
-
- pTempsrc1 += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_X1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_ga8_x2 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_X2, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline; /* initialize pixel-loop */
- pTempdst = pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 2;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- for (iS = 1; iS < iM; iS++)
- {
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1; /* just repeat the first */
- else /* calculate the distance */
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2)) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
-
- if (*(pTempsrc1+1) == *(pTempsrc2+1))
- *pTempdst = *(pTempsrc1+1);
- else
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*(pTempsrc2+1)) -
- (mng_int32)(*(pTempsrc1+1)) ) + iM) /
- (iM * 2)) + (mng_int32)(*(pTempsrc1+1)) );
-
- pTempdst++;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_X2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_ga8_x3 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM, iH;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_X3, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline; /* initialize pixel-loop */
- pTempdst = pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 2;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- iH = (iM+1) / 2; /* calculate halfway point */
-
- for (iS = 1; iS < iH; iS++) /* replicate first half */
- {
- *pTempdst = *pTempsrc1;
- *(pTempdst+1) = *(pTempsrc1+1);
-
- pTempdst += 2;
- }
-
- for (iS = iH; iS < iM; iS++) /* replicate second half */
- {
- *pTempdst = *pTempsrc2;
- *(pTempdst+1) = *(pTempsrc2+1);
-
- pTempdst += 2;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_X3, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_ga8_x4 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM, iH;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_X4, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline; /* initialize pixel-loop */
- pTempdst = pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 2;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- iH = (iM+1) / 2; /* calculate halfway point */
-
- for (iS = 1; iS < iH; iS++) /* first half */
- {
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1; /* just repeat the first */
- else /* calculate the distance */
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2)) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
-
- *pTempdst = *(pTempsrc1+1); /* replicate alpha from left */
-
- pTempdst++;
- }
-
- for (iS = iH; iS < iM; iS++) /* second half */
- {
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1; /* just repeat the first */
- else /* calculate the distance */
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2)) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
-
- *pTempdst = *(pTempsrc2+1); /* replicate alpha from right */
-
- pTempdst++;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_X4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_ga8_x5 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM, iH;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_X5, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline; /* initialize pixel-loop */
- pTempdst = pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 2;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- iH = (iM+1) / 2; /* calculate halfway point */
-
- for (iS = 1; iS < iH; iS++) /* first half */
- {
- *pTempdst = *pTempsrc1; /* replicate gray from left */
-
- pTempdst++;
-
- if (*(pTempsrc1+1) == *(pTempsrc2+1))
- *pTempdst = *(pTempsrc1+1);/* just repeat the first */
- else /* calculate the distance */
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*(pTempsrc2+1)) -
- (mng_int32)(*(pTempsrc1+1)) ) + iM) /
- (iM * 2)) + (mng_int32)(*(pTempsrc1+1)) );
-
- pTempdst++;
- }
-
- for (iS = iH; iS < iM; iS++) /* second half */
- {
- *pTempdst = *pTempsrc2; /* replicate gray from right */
-
- pTempdst++;
-
- if (*(pTempsrc1+1) == *(pTempsrc2+1))
- *pTempdst = *(pTempsrc1+1);/* just repeat the first */
- else /* calculate the distance */
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*(pTempsrc2+1)) -
- (mng_int32)(*(pTempsrc1+1)) ) + iM) /
- (iM * 2)) + (mng_int32)(*(pTempsrc1+1)) );
-
- pTempdst++;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_X5, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_GRAY_SUPPORT */
-#endif /* MNG_OPTIMIZE_FOOTPRINT_MAGN */
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba8_x1 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX, iS, iM;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_X1, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline; /* initialize pixel-loop */
- pTempdst = pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- iM = iML;
- else
- if (iX == (iWidth - 1)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
-
- for (iS = 1; iS < iM; iS++) /* fill interval */
- {
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
- }
-
- pTempsrc1 += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_X1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba8_x2 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_X2, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline; /* initialize pixel-loop */
- pTempdst = pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 4;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = (mng_int32)iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = (mng_int32)iMR;
- else
- iM = (mng_int32)iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- for (iS = 1; iS < iM; iS++)
- {
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1; /* just repeat the first */
- else /* calculate the distance */
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2)) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
-
- if (*(pTempsrc1+1) == *(pTempsrc2+1))
- *pTempdst = *(pTempsrc1+1);
- else
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*(pTempsrc2+1)) -
- (mng_int32)(*(pTempsrc1+1)) ) + iM) /
- (iM * 2)) + (mng_int32)(*(pTempsrc1+1)) );
-
- pTempdst++;
-
- if (*(pTempsrc1+2) == *(pTempsrc2+2))
- *pTempdst = *(pTempsrc1+2);
- else
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*(pTempsrc2+2)) -
- (mng_int32)(*(pTempsrc1+2)) ) + iM) /
- (iM * 2)) + (mng_int32)(*(pTempsrc1+2)) );
-
- pTempdst++;
-
- if (*(pTempsrc1+3) == *(pTempsrc2+3))
- *pTempdst = *(pTempsrc1+3);
- else
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*(pTempsrc2+3)) -
- (mng_int32)(*(pTempsrc1+3)) ) + iM) /
- (iM * 2)) + (mng_int32)(*(pTempsrc1+3)) );
-
- pTempdst++;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_X2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba8_x3 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM, iH;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_X3, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline; /* initialize pixel-loop */
- pTempdst = pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 4;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = (mng_int32)iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = (mng_int32)iMR;
- else
- iM = (mng_int32)iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- iH = (iM+1) / 2; /* calculate halfway point */
-
- for (iS = 1; iS < iH; iS++) /* replicate first half */
- {
- *pTempdst = *pTempsrc1;
- *(pTempdst+1) = *(pTempsrc1+1);
- *(pTempdst+2) = *(pTempsrc1+2);
- *(pTempdst+3) = *(pTempsrc1+3);
-
- pTempdst += 4;
- }
-
- for (iS = iH; iS < iM; iS++) /* replicate second half */
- {
- *pTempdst = *pTempsrc2;
- *(pTempdst+1) = *(pTempsrc2+1);
- *(pTempdst+2) = *(pTempsrc2+2);
- *(pTempdst+3) = *(pTempsrc2+3);
-
- pTempdst += 4;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_X3, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba8_x4 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM, iH;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_X4, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline; /* initialize pixel-loop */
- pTempdst = pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 4;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = (mng_int32)iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = (mng_int32)iMR;
- else
- iM = (mng_int32)iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- iH = (iM+1) / 2; /* calculate halfway point */
-
- for (iS = 1; iS < iH; iS++) /* first half */
- {
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1; /* just repeat the first */
- else /* calculate the distance */
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2)) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
-
- if (*(pTempsrc1+1) == *(pTempsrc2+1))
- *pTempdst = *(pTempsrc1+1);
- else
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*(pTempsrc2+1)) -
- (mng_int32)(*(pTempsrc1+1)) ) + iM) /
- (iM * 2)) + (mng_int32)(*(pTempsrc1+1)) );
-
- pTempdst++;
-
- if (*(pTempsrc1+2) == *(pTempsrc2+2))
- *pTempdst = *(pTempsrc1+2);
- else
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*(pTempsrc2+2)) -
- (mng_int32)(*(pTempsrc1+2)) ) + iM) /
- (iM * 2)) + (mng_int32)(*(pTempsrc1+2)) );
-
- pTempdst++;
- /* replicate alpha from left */
- *pTempdst = *(pTempsrc1+3);
-
- pTempdst++;
- }
-
- for (iS = iH; iS < iM; iS++) /* second half */
- {
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1; /* just repeat the first */
- else /* calculate the distance */
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2)) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
-
- if (*(pTempsrc1+1) == *(pTempsrc2+1))
- *pTempdst = *(pTempsrc1+1);
- else
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*(pTempsrc2+1)) -
- (mng_int32)(*(pTempsrc1+1)) ) + iM) /
- (iM * 2)) + (mng_int32)(*(pTempsrc1+1)) );
-
- pTempdst++;
-
- if (*(pTempsrc1+2) == *(pTempsrc2+2))
- *pTempdst = *(pTempsrc1+2);
- else
- *pTempdst = (mng_uint8)(((2 * iS * ( (mng_int32)(*(pTempsrc2+2)) -
- (mng_int32)(*(pTempsrc1+2)) ) + iM) /
- (iM * 2)) + (mng_int32)(*(pTempsrc1+2)) );
-
- pTempdst++;
- /* replicate alpha from right */
- *pTempdst = *(pTempsrc2+3);
-
- pTempdst++;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_X4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba8_x5 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM, iH;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_X5, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline; /* initialize pixel-loop */
- pTempdst = pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 4;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = (mng_int32)iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = (mng_int32)iMR;
- else
- iM = (mng_int32)iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- iH = (iM+1) / 2; /* calculate halfway point */
-
- for (iS = 1; iS < iH; iS++) /* first half */
- {
- *pTempdst = *pTempsrc1; /* replicate color from left */
- *(pTempdst+1) = *(pTempsrc1+1);
- *(pTempdst+2) = *(pTempsrc1+2);
-
- if (*(pTempsrc1+3) == *(pTempsrc2+3))
- *(pTempdst+3) = *(pTempsrc1+3);
- else
- *(pTempdst+3) = (mng_uint8)(((2 * iS * ( (mng_int32)(*(pTempsrc2+3)) -
- (mng_int32)(*(pTempsrc1+3)) ) + iM) /
- (iM * 2)) + (mng_int32)(*(pTempsrc1+3)) );
-
- pTempdst += 4;
- }
-
- for (iS = iH; iS < iM; iS++) /* second half */
- {
- *pTempdst = *pTempsrc2; /* replicate color from right */
- *(pTempdst+1) = *(pTempsrc2+1);
- *(pTempdst+2) = *(pTempsrc2+2);
-
- if (*(pTempsrc1+3) == *(pTempsrc2+3))
- *(pTempdst+3) = *(pTempsrc1+3);
- else
- *(pTempdst+3) = (mng_uint8)(((2 * iS * ( (mng_int32)(*(pTempsrc2+3)) -
- (mng_int32)(*(pTempsrc1+3)) ) + iM) /
- (iM * 2)) + (mng_int32)(*(pTempsrc1+3)) );
-
- pTempdst += 4;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_X4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_FOOTPRINT_MAGN
-#ifndef MNG_NO_GRAY_SUPPORT
-mng_retcode mng_magnify_g8_y1 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G8_Y1, MNG_LC_START);
-#endif
-
- MNG_COPY (pDstline, pSrcline1, iWidth);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G8_Y1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-mng_retcode mng_magnify_g8_y2 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G8_Y2, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline1; /* initialize pixel-loop */
- pTempsrc2 = pSrcline2;
- pTempdst = pDstline;
-
- if (pTempsrc2) /* do we have a second line ? */
- {
- for (iX = 0; iX < iWidth; iX++)
- { /* calculate the distances */
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
- }
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pTempdst, pTempsrc1, iWidth);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G8_Y2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_g8_y3 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G8_Y3, MNG_LC_START);
-#endif
-
- if (pSrcline2) /* do we have a second line ? */
- {
- if (iS < (iM+1) / 2) /* top half ? */
- MNG_COPY (pDstline, pSrcline1, iWidth)
- else
- MNG_COPY (pDstline, pSrcline2, iWidth);
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pDstline, pSrcline1, iWidth);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G8_Y3, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_GRAY_SUPPORT */
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgb8_y1 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB8_Y1, MNG_LC_START);
-#endif
-
- MNG_COPY (pDstline, pSrcline1, iWidth * 3);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB8_Y1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgb8_y2 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB8_Y2, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline1; /* initialize pixel-loop */
- pTempsrc2 = pSrcline2;
- pTempdst = pDstline;
-
- if (pTempsrc2) /* do we have a second line ? */
- {
- for (iX = 0; iX < iWidth; iX++)
- { /* calculate the distances */
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
- }
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pTempdst, pTempsrc1, iWidth * 3);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB8_Y2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgb8_y3 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB8_Y3, MNG_LC_START);
-#endif
-
- if (pSrcline2) /* do we have a second line ? */
- {
- if (iS < (iM+1) / 2) /* top half ? */
- MNG_COPY (pDstline, pSrcline1, iWidth * 3)
- else
- MNG_COPY (pDstline, pSrcline2, iWidth * 3);
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pDstline, pSrcline1, iWidth * 3);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB8_Y3, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_GRAY_SUPPORT
-mng_retcode mng_magnify_ga8_y1 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_Y1, MNG_LC_START);
-#endif
-
- MNG_COPY (pDstline, pSrcline1, iWidth << 1);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_Y1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_ga8_y2 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_Y2, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline1; /* initialize pixel-loop */
- pTempsrc2 = pSrcline2;
- pTempdst = pDstline;
-
- if (pTempsrc2) /* do we have a second line ? */
- {
- for (iX = 0; iX < iWidth; iX++)
- { /* calculate the distances */
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
- }
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pTempdst, pTempsrc1, iWidth << 1);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_Y2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_ga8_y3 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_Y3, MNG_LC_START);
-#endif
-
- if (pSrcline2) /* do we have a second line ? */
- {
- if (iS < (iM+1) / 2) /* top half ? */
- MNG_COPY (pDstline, pSrcline1, iWidth << 1)
- else
- MNG_COPY (pDstline, pSrcline2, iWidth << 1);
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pDstline, pSrcline1, iWidth << 1);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_Y2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_ga8_y4 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_Y4, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline1; /* initialize pixel-loop */
- pTempsrc2 = pSrcline2;
- pTempdst = pDstline;
-
- if (pTempsrc2) /* do we have a second line ? */
- {
- if (iS < (iM+1) / 2) /* top half ? */
- {
- for (iX = 0; iX < iWidth; iX++)
- { /* calculate the distances */
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2 += 2;
-
- *pTempdst++ = *pTempsrc1++; /* replicate alpha from top */
- }
- }
- else
- {
- for (iX = 0; iX < iWidth; iX++)
- { /* calculate the distances */
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1 += 2;
- pTempsrc2++;
-
- *pTempdst++ = *pTempsrc2++; /* replicate alpha from bottom */
- }
- }
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pTempdst, pTempsrc1, iWidth << 1);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_Y4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_ga8_y5 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_Y5, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline1; /* initialize pixel-loop */
- pTempsrc2 = pSrcline2;
- pTempdst = pDstline;
-
- if (pTempsrc2) /* do we have a second line ? */
- {
- if (iS < (iM+1) / 2) /* top half ? */
- {
- for (iX = 0; iX < iWidth; iX++)
- {
- *pTempdst = *pTempsrc1; /* replicate gray from top */
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2) /* calculate the distances */
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
- }
- }
- else
- {
- for (iX = 0; iX < iWidth; iX++)
- {
- *pTempdst = *pTempsrc2; /* replicate gray from bottom */
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2) /* calculate the distances */
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
- }
- }
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pTempdst, pTempsrc1, iWidth << 1);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA8_Y5, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_GRAY_SUPPORT */
-#endif /* MNG_OPTIMIZE_FOOTPRINT_MAGN */
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba8_y1 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_Y1, MNG_LC_START);
-#endif
-
- MNG_COPY (pDstline, pSrcline1, iWidth << 2);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_Y1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba8_y2 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_Y2, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline1; /* initialize pixel-loop */
- pTempsrc2 = pSrcline2;
- pTempdst = pDstline;
-
- if (pTempsrc2) /* do we have a second line ? */
- {
- for (iX = 0; iX < iWidth; iX++)
- { /* calculate the distances */
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
- }
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pTempdst, pTempsrc1, iWidth << 2);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_Y2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba8_y3 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_Y3, MNG_LC_START);
-#endif
-
- if (pSrcline2) /* do we have a second line ? */
- {
- if (iS < (iM+1) / 2) /* top half ? */
- MNG_COPY (pDstline, pSrcline1, iWidth << 2)
- else
- MNG_COPY (pDstline, pSrcline2, iWidth << 2);
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pDstline, pSrcline1, iWidth << 2);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_Y2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba8_y4 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_Y4, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline1; /* initialize pixel-loop */
- pTempsrc2 = pSrcline2;
- pTempdst = pDstline;
-
- if (pTempsrc2) /* do we have a second line ? */
- {
- if (iS < (iM+1) / 2) /* top half ? */
- {
- for (iX = 0; iX < iWidth; iX++)
- { /* calculate the distances */
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2 += 2;
-
- *pTempdst++ = *pTempsrc1++; /* replicate alpha from top */
- }
- }
- else
- {
- for (iX = 0; iX < iWidth; iX++)
- { /* calculate the distances */
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1 += 2;
- pTempsrc2++;
-
- *pTempdst++ = *pTempsrc2++; /* replicate alpha from bottom */
- }
- }
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pTempdst, pTempsrc1, iWidth << 2);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_Y4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba8_y5 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_uint8p pTempsrc1;
- mng_uint8p pTempsrc2;
- mng_uint8p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_Y5, MNG_LC_START);
-#endif
-
- pTempsrc1 = pSrcline1; /* initialize pixel-loop */
- pTempsrc2 = pSrcline2;
- pTempdst = pDstline;
-
- if (pTempsrc2) /* do we have a second line ? */
- {
- if (iS < (iM+1) / 2) /* top half ? */
- {
- for (iX = 0; iX < iWidth; iX++)
- {
- *pTempdst++ = *pTempsrc1++; /* replicate color from top */
- *pTempdst++ = *pTempsrc1++;
- *pTempdst++ = *pTempsrc1++;
-
- pTempsrc2 += 3;
-
- if (*pTempsrc1 == *pTempsrc2) /* calculate the distances */
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
- }
- }
- else
- {
- for (iX = 0; iX < iWidth; iX++)
- {
- *pTempdst++ = *pTempsrc2++; /* replicate color from bottom */
- *pTempdst++ = *pTempsrc2++;
- *pTempdst++ = *pTempsrc2++;
-
- pTempsrc1 += 3;
-
- if (*pTempsrc1 == *pTempsrc2) /* calculate the distances */
- *pTempdst = *pTempsrc1;
- else
- *pTempdst = (mng_uint8)( ( (2 * iS * ( (mng_int32)(*pTempsrc2) -
- (mng_int32)(*pTempsrc1) ) + iM) /
- (iM * 2) ) + (mng_int32)(*pTempsrc1) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
- }
- }
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pTempdst, pTempsrc1, iWidth << 2);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA8_Y5, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_FOOTPRINT_MAGN
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_NO_GRAY_SUPPORT
-mng_retcode mng_magnify_g16_x1 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX, iS, iM;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G16_X1, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline; /* initialize pixel-loop */
- pTempdst = (mng_uint16p)pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- iM = iML;
- else
- if (iX == (iWidth - 1)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
-
- for (iS = 1; iS < iM; iS++) /* fill interval */
- {
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- }
-
- pTempsrc1++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G16_X1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_g16_x2 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G16_X2, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline; /* initialize pixel-loop */
- pTempdst = (mng_uint16p)pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 1;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- { /* is it same as first ? */
- if (*pTempsrc1 == *pTempsrc2)
- {
- for (iS = 1; iS < iM; iS++) /* then just repeat the first */
- {
- *pTempdst = *pTempsrc1;
- pTempdst++;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++) /* calculate the distances */
- {
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ));
- pTempdst++;
- }
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- }
- }
- }
-
- pTempsrc1++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G16_X2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_g16_x3 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM, iH;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G16_X3, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline; /* initialize pixel-loop */
- pTempdst = (mng_uint16p)pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 1;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- { /* is it same as first ? */
- if (*pTempsrc1 == *pTempsrc2)
- {
- for (iS = 1; iS < iM; iS++) /* then just repeat the first */
- {
- *pTempdst = *pTempsrc1;
- pTempdst++;
- }
- }
- else
- {
- iH = (iM+1) / 2; /* calculate halfway point */
-
- for (iS = 1; iS < iH; iS++) /* replicate first half */
- {
- *pTempdst = *pTempsrc1;
- pTempdst++;
- }
-
- for (iS = iH; iS < iM; iS++) /* replicate second half */
- {
- *pTempdst = *pTempsrc2;
- pTempdst++;
- }
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- }
- }
- }
-
- pTempsrc1++;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G16_X3, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_GRAY_SUPPORT */
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgb16_x1 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX, iS, iM;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB16_X1, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline; /* initialize pixel-loop */
- pTempdst = (mng_uint16p)pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- iM = iML;
- else
- if (iX == (iWidth - 1)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
-
- for (iS = 1; iS < iM; iS++) /* fill interval */
- {
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- }
-
- pTempsrc1 += 3;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB16_X1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgb16_x2 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB16_X2, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline; /* initialize pixel-loop */
- pTempdst = (mng_uint16p)pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 3;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = (mng_int32)iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = (mng_int32)iMR;
- else
- iM = (mng_int32)iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- for (iS = 1; iS < iM; iS++)
- {
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1; /* just repeat the first */
- else /* calculate the distance */
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
-
- if (*(pTempsrc1+1) == *(pTempsrc2+1))
- *pTempdst = *(pTempsrc1+1);
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc2+1))) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+1))) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+1))) ) );
-
- pTempdst++;
-
- if (*(pTempsrc1+2) == *(pTempsrc2+2))
- *pTempdst = *(pTempsrc1+2);
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc2+2))) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+2))) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+2))) ) );
-
- pTempdst++;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 3;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB16_X2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgb16_x3 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM, iH;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB16_X3, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline; /* initialize pixel-loop */
- pTempdst = (mng_uint16p)pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 3;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = (mng_int32)iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = (mng_int32)iMR;
- else
- iM = (mng_int32)iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- iH = (iM+1) / 2; /* calculate halfway point */
-
- for (iS = 1; iS < iH; iS++) /* replicate first half */
- {
- *pTempdst = *pTempsrc1;
- *(pTempdst+1) = *(pTempsrc1+1);
- *(pTempdst+2) = *(pTempsrc1+2);
-
- pTempdst += 3;
- }
-
- for (iS = iH; iS < iM; iS++) /* replicate second half */
- {
- *pTempdst = *pTempsrc2;
- *(pTempdst+1) = *(pTempsrc2+1);
- *(pTempdst+2) = *(pTempsrc2+2);
-
- pTempdst += 3;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 3;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB16_X3, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_GRAY_SUPPORT
-mng_retcode mng_magnify_ga16_x1 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX, iS, iM;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_X1, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p) pSrcline; /* initialize pixel-loop */
- pTempdst = (mng_uint16p)pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- iM = iML;
- else
- if (iX == (iWidth - 1)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
-
- for (iS = 1; iS < iM; iS++) /* fill interval */
- {
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- }
-
- pTempsrc1 += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_X1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_ga16_x2 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_X2, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline; /* initialize pixel-loop */
- pTempdst = (mng_uint16p)pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 2;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- for (iS = 1; iS < iM; iS++)
- {
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1; /* just repeat the first */
- else /* calculate the distance */
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
-
- if (*(pTempsrc1+1) == *(pTempsrc2+1))
- *pTempdst = *(pTempsrc1+1);
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc2+1))) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+1))) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+1))) ) );
-
- pTempdst++;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_X2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_ga16_x3 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM, iH;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_X3, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline; /* initialize pixel-loop */
- pTempdst = (mng_uint16p)pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 2;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- iH = (iM+1) / 2; /* calculate halfway point */
-
- for (iS = 1; iS < iH; iS++) /* replicate first half */
- {
- *pTempdst = *pTempsrc1;
- *(pTempdst+1) = *(pTempsrc1+1);
-
- pTempdst += 2;
- }
-
- for (iS = iH; iS < iM; iS++) /* replicate second half */
- {
- *pTempdst = *pTempsrc2;
- *(pTempdst+1) = *(pTempsrc2+1);
-
- pTempdst += 2;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_X3, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_ga16_x4 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM, iH;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_X4, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline; /* initialize pixel-loop */
- pTempdst = (mng_uint16p)pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 2;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- iH = (iM+1) / 2; /* calculate halfway point */
-
- for (iS = 1; iS < iH; iS++) /* first half */
- {
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1; /* just repeat the first */
- else /* calculate the distance */
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
-
- *pTempdst = *(pTempsrc1+1); /* replicate alpha from left */
-
- pTempdst++;
- }
-
- for (iS = iH; iS < iM; iS++) /* second half */
- {
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1; /* just repeat the first */
- else /* calculate the distance */
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
-
- *pTempdst = *(pTempsrc2+1); /* replicate alpha from right */
-
- pTempdst++;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_X4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_ga16_x5 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM, iH;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_X5, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline; /* initialize pixel-loop */
- pTempdst = (mng_uint16p)pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 2;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- iH = (iM+1) / 2; /* calculate halfway point */
-
- for (iS = 1; iS < iH; iS++) /* first half */
- {
- *pTempdst = *pTempsrc1; /* replicate gray from left */
-
- pTempdst++;
-
- if (*(pTempsrc1+1) == *(pTempsrc2+1))
- *pTempdst = *(pTempsrc1+1);/* just repeat the first */
- else /* calculate the distance */
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc2+1))) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+1))) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+1))) ) );
-
- pTempdst++;
- }
-
- for (iS = iH; iS < iM; iS++) /* second half */
- {
- *pTempdst = *pTempsrc2; /* replicate gray from right */
-
- pTempdst++;
-
- if (*(pTempsrc1+1) == *(pTempsrc2+1))
- *pTempdst = *(pTempsrc1+1);/* just repeat the first */
- else /* calculate the distance */
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc2+1))) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+1))) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+1))) ) );
-
- pTempdst++;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_X5, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_GRAY_SUPPORT */
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba16_x1 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX, iS, iM;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_X1, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline; /* initialize pixel-loop */
- pTempdst = (mng_uint16p)pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- iM = iML;
- else
- if (iX == (iWidth - 1)) /* last interval ? */
- iM = iMR;
- else
- iM = iMX;
-
- for (iS = 1; iS < iM; iS++) /* fill interval */
- {
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
- }
-
- pTempsrc1 += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_X1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba16_x2 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_X2, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline; /* initialize pixel-loop */
- pTempdst = (mng_uint16p)pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 4;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = (mng_int32)iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = (mng_int32)iMR;
- else
- iM = (mng_int32)iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- for (iS = 1; iS < iM; iS++)
- {
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1; /* just repeat the first */
- else /* calculate the distance */
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
-
- if (*(pTempsrc1+1) == *(pTempsrc2+1))
- *pTempdst = *(pTempsrc1+1);
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc2+1))) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+1))) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+1))) ) );
-
- pTempdst++;
-
- if (*(pTempsrc1+2) == *(pTempsrc2+2))
- *pTempdst = *(pTempsrc1+2);
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc2+2))) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+2))) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+2))) ) );
-
- pTempdst++;
-
- if (*(pTempsrc1+3) == *(pTempsrc2+3))
- *pTempdst = *(pTempsrc1+3);
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc2+3))) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+3))) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+3))) ) );
-
- pTempdst++;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_X2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba16_x3 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM, iH;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_X3, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline; /* initialize pixel-loop */
- pTempdst = (mng_uint16p)pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 4;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = (mng_int32)iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = (mng_int32)iMR;
- else
- iM = (mng_int32)iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- iH = (iM+1) / 2; /* calculate halfway point */
-
- for (iS = 1; iS < iH; iS++) /* replicate first half */
- {
- *pTempdst = *pTempsrc1;
- *(pTempdst+1) = *(pTempsrc1+1);
- *(pTempdst+2) = *(pTempsrc1+2);
- *(pTempdst+3) = *(pTempsrc1+3);
-
- pTempdst += 4;
- }
-
- for (iS = iH; iS < iM; iS++) /* replicate second half */
- {
- *pTempdst = *pTempsrc2;
- *(pTempdst+1) = *(pTempsrc2+1);
- *(pTempdst+2) = *(pTempsrc2+2);
- *(pTempdst+3) = *(pTempsrc2+3);
-
- pTempdst += 4;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_X3, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba16_x4 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM, iH;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_X4, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline; /* initialize pixel-loop */
- pTempdst = (mng_uint16p)pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 4;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = (mng_int32)iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = (mng_int32)iMR;
- else
- iM = (mng_int32)iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- iH = (iM+1) / 2; /* calculate halfway point */
-
- for (iS = 1; iS < iH; iS++) /* first half */
- {
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1; /* just repeat the first */
- else /* calculate the distance */
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
-
- if (*(pTempsrc1+1) == *(pTempsrc2+1))
- *pTempdst = *(pTempsrc1+1);
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc2+1))) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+1))) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+1))) ) );
-
- pTempdst++;
-
- if (*(pTempsrc1+2) == *(pTempsrc2+2))
- *pTempdst = *(pTempsrc1+2);
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc2+2))) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+2))) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+2))) ) );
-
- pTempdst++;
- /* replicate alpha from left */
- *pTempdst = *(pTempsrc1+3);
-
- pTempdst++;
- }
-
- for (iS = iH; iS < iM; iS++) /* second half */
- {
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1; /* just repeat the first */
- else /* calculate the distance */
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
-
- if (*(pTempsrc1+1) == *(pTempsrc2+1))
- *pTempdst = *(pTempsrc1+1);
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc2+1))) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+1))) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+1))) ) );
-
- pTempdst++;
-
- if (*(pTempsrc1+2) == *(pTempsrc2+2))
- *pTempdst = *(pTempsrc1+2);
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc2+2))) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+2))) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+2))) ) );
-
- pTempdst++;
- /* replicate alpha from right */
- *pTempdst = *(pTempsrc2+3);
-
- pTempdst++;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_X4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba16_x5 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_int32 iS, iM, iH;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_X5, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline; /* initialize pixel-loop */
- pTempdst = (mng_uint16p)pDstline;
-
- for (iX = 0; iX < iWidth; iX++)
- {
- pTempsrc2 = pTempsrc1 + 4;
-
- *pTempdst = *pTempsrc1; /* copy original source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
-
- if (iX == 0) /* first interval ? */
- {
- if (iWidth == 1) /* single pixel ? */
- pTempsrc2 = MNG_NULL;
-
- iM = (mng_int32)iML;
- }
- else
- if (iX == (iWidth - 2)) /* last interval ? */
- iM = (mng_int32)iMR;
- else
- iM = (mng_int32)iMX;
- /* fill interval ? */
- if ((iX < iWidth - 1) || (iWidth == 1))
- {
- if (pTempsrc2) /* do we have the second pixel ? */
- {
- iH = (iM+1) / 2; /* calculate halfway point */
-
- for (iS = 1; iS < iH; iS++) /* first half */
- {
- *pTempdst = *pTempsrc1; /* replicate color from left */
- *(pTempdst+1) = *(pTempsrc1+1);
- *(pTempdst+2) = *(pTempsrc1+2);
-
- if (*(pTempsrc1+3) == *(pTempsrc2+3))
- *(pTempdst+3) = *(pTempsrc1+3);
- else
- mng_put_uint16 ((mng_uint8p)(pTempdst+3),
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc2+3))) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+3))) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+3))) ) );
-
- pTempdst += 4;
- }
-
- for (iS = iH; iS < iM; iS++) /* second half */
- {
- *pTempdst = *pTempsrc2; /* replicate color from right */
- *(pTempdst+1) = *(pTempsrc2+1);
- *(pTempdst+2) = *(pTempsrc2+2);
-
- if (*(pTempsrc1+3) == *(pTempsrc2+3))
- *(pTempdst+3) = *(pTempsrc1+3);
- else
- mng_put_uint16 ((mng_uint8p)(pTempdst+3),
- (mng_uint16)(((2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc2+3))) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+3))) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)(pTempsrc1+3))) ) );
-
- pTempdst += 4;
- }
- }
- else
- {
- for (iS = 1; iS < iM; iS++)
- {
- *pTempdst = *pTempsrc1; /* repeat first source pixel */
- pTempdst++;
- *pTempdst = *(pTempsrc1+1);
- pTempdst++;
- *pTempdst = *(pTempsrc1+2);
- pTempdst++;
- *pTempdst = *(pTempsrc1+3);
- pTempdst++;
- }
- }
- }
-
- pTempsrc1 += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_X4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_GRAY_SUPPORT
-mng_retcode mng_magnify_g16_y1 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G16_Y1, MNG_LC_START);
-#endif
-
- MNG_COPY (pDstline, pSrcline1, (iWidth << 1));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G16_Y1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_g16_y2 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G16_Y2, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline1; /* initialize pixel-loop */
- pTempsrc2 = (mng_uint16p)pSrcline2;
- pTempdst = (mng_uint16p)pDstline;
-
- if (pTempsrc2) /* do we have a second line ? */
- {
- for (iX = 0; iX < iWidth; iX++)
- { /* calculate the distances */
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
- }
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pTempdst, pTempsrc1, (iWidth << 1));
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G16_Y2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_g16_y3 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G16_Y3, MNG_LC_START);
-#endif
-
- if (pSrcline2) /* do we have a second line ? */
- {
- if (iS < (iM+1) / 2) /* top half ? */
- MNG_COPY (pDstline, pSrcline1, (iWidth << 1))
- else
- MNG_COPY (pDstline, pSrcline2, (iWidth << 1));
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pDstline, pSrcline1, (iWidth << 1));
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_G16_Y3, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_GRAY_SUPPORT */
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgb16_y1 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB16_Y1, MNG_LC_START);
-#endif
-
- MNG_COPY (pDstline, pSrcline1, iWidth * 6);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB16_Y1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgb16_y2 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB16_Y2, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline1; /* initialize pixel-loop */
- pTempsrc2 = (mng_uint16p)pSrcline2;
- pTempdst = (mng_uint16p)pDstline;
-
- if (pTempsrc2) /* do we have a second line ? */
- {
- for (iX = 0; iX < iWidth; iX++)
- { /* calculate the distances */
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
- }
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pTempdst, pTempsrc1, iWidth * 6);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB16_Y2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgb16_y3 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB16_Y3, MNG_LC_START);
-#endif
-
- if (pSrcline2) /* do we have a second line ? */
- {
- if (iS < (iM+1) / 2) /* top half ? */
- MNG_COPY (pDstline, pSrcline1, iWidth * 6)
- else
- MNG_COPY (pDstline, pSrcline2, iWidth * 6);
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pDstline, pSrcline1, iWidth * 6);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGB16_Y3, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_GRAY_SUPPORT
-mng_retcode mng_magnify_ga16_y1 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_Y1, MNG_LC_START);
-#endif
-
- MNG_COPY (pDstline, pSrcline1, (iWidth << 2));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_Y1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_ga16_y2 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_Y2, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline1; /* initialize pixel-loop */
- pTempsrc2 = (mng_uint16p)pSrcline2;
- pTempdst = (mng_uint16p)pDstline;
-
- if (pTempsrc2) /* do we have a second line ? */
- {
- for (iX = 0; iX < iWidth; iX++)
- { /* calculate the distances */
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
- }
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pTempdst, pTempsrc1, (iWidth << 2));
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_Y2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_ga16_y3 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_Y3, MNG_LC_START);
-#endif
-
- if (pSrcline2) /* do we have a second line ? */
- {
- if (iS < (iM+1) / 2) /* top half ? */
- MNG_COPY (pDstline, pSrcline1, (iWidth << 2))
- else
- MNG_COPY (pDstline, pSrcline2, (iWidth << 2));
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pDstline, pSrcline1, (iWidth << 2));
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_Y2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_ga16_y4 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_Y4, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline1; /* initialize pixel-loop */
- pTempsrc2 = (mng_uint16p)pSrcline2;
- pTempdst = (mng_uint16p)pDstline;
-
- if (pTempsrc2) /* do we have a second line ? */
- {
- if (iS < (iM+1) / 2) /* top half ? */
- {
- for (iX = 0; iX < iWidth; iX++)
- { /* calculate the distances */
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2 += 2;
-
- *pTempdst++ = *pTempsrc1++; /* replicate alpha from top */
- }
- }
- else
- {
- for (iX = 0; iX < iWidth; iX++)
- { /* calculate the distances */
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1 += 2;
- pTempsrc2++;
-
- *pTempdst++ = *pTempsrc2++; /* replicate alpha from bottom */
- }
- }
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pTempdst, pTempsrc1, (iWidth << 2));
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_Y4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_ga16_y5 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_Y5, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline1; /* initialize pixel-loop */
- pTempsrc2 = (mng_uint16p)pSrcline2;
- pTempdst = (mng_uint16p)pDstline;
-
- if (pTempsrc2) /* do we have a second line ? */
- {
- if (iS < (iM+1) / 2) /* top half ? */
- {
- for (iX = 0; iX < iWidth; iX++)
- {
- *pTempdst = *pTempsrc1; /* replicate gray from top */
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2) /* calculate the distances */
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
- }
- }
- else
- {
- for (iX = 0; iX < iWidth; iX++)
- {
- *pTempdst = *pTempsrc2; /* replicate gray from bottom */
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2) /* calculate the distances */
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
- }
- }
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pTempdst, pTempsrc1, (iWidth << 2));
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_GA16_Y5, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_GRAY_SUPPORT */
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba16_y1 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_Y1, MNG_LC_START);
-#endif
-
- MNG_COPY (pDstline, pSrcline1, (iWidth << 3));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_Y1, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba16_y2 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_Y2, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline1; /* initialize pixel-loop */
- pTempsrc2 = (mng_uint16p)pSrcline2;
- pTempdst = (mng_uint16p)pDstline;
-
- if (pTempsrc2) /* do we have a second line ? */
- {
- for (iX = 0; iX < iWidth; iX++)
- { /* calculate the distances */
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
- }
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pTempdst, pTempsrc1, (iWidth << 3));
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_Y2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba16_y3 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_Y3, MNG_LC_START);
-#endif
-
- if (pSrcline2) /* do we have a second line ? */
- {
- if (iS < (iM+1) / 2) /* top half ? */
- MNG_COPY (pDstline, pSrcline1, (iWidth << 3))
- else
- MNG_COPY (pDstline, pSrcline2, (iWidth << 3));
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pDstline, pSrcline1, (iWidth << 3));
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_Y2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba16_y4 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_Y4, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline1; /* initialize pixel-loop */
- pTempsrc2 = (mng_uint16p)pSrcline2;
- pTempdst = (mng_uint16p)pDstline;
-
- if (pTempsrc2) /* do we have a second line ? */
- {
- if (iS < (iM+1) / 2) /* top half ? */
- {
- for (iX = 0; iX < iWidth; iX++)
- { /* calculate the distances */
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2 += 2;
-
- *pTempdst++ = *pTempsrc1++; /* replicate alpha from top */
- }
- }
- else
- {
- for (iX = 0; iX < iWidth; iX++)
- { /* calculate the distances */
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
-
- if (*pTempsrc1 == *pTempsrc2)
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1 += 2;
- pTempsrc2++;
-
- *pTempdst++ = *pTempsrc2++; /* replicate alpha from bottom */
- }
- }
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pTempdst, pTempsrc1, (iWidth << 3));
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_Y4, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_magnify_rgba16_y5 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline)
-{
- mng_uint32 iX;
- mng_uint16p pTempsrc1;
- mng_uint16p pTempsrc2;
- mng_uint16p pTempdst;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_Y5, MNG_LC_START);
-#endif
-
- pTempsrc1 = (mng_uint16p)pSrcline1; /* initialize pixel-loop */
- pTempsrc2 = (mng_uint16p)pSrcline2;
- pTempdst = (mng_uint16p)pDstline;
-
- if (pTempsrc2) /* do we have a second line ? */
- {
- if (iS < (iM+1) / 2) /* top half ? */
- {
- for (iX = 0; iX < iWidth; iX++)
- {
- *pTempdst++ = *pTempsrc1++; /* replicate color from top */
- *pTempdst++ = *pTempsrc1++;
- *pTempdst++ = *pTempsrc1++;
-
- pTempsrc2 += 3;
-
- if (*pTempsrc1 == *pTempsrc2) /* calculate the distances */
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
- }
- }
- else
- {
- for (iX = 0; iX < iWidth; iX++)
- {
- *pTempdst++ = *pTempsrc2++; /* replicate color from bottom */
- *pTempdst++ = *pTempsrc2++;
- *pTempdst++ = *pTempsrc2++;
-
- pTempsrc1 += 3;
-
- if (*pTempsrc1 == *pTempsrc2) /* calculate the distances */
- *pTempdst = *pTempsrc1;
- else
- mng_put_uint16 ((mng_uint8p)pTempdst,
- (mng_uint16)( ( (2 * iS * ( (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc2)) -
- (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) + iM) /
- (iM * 2)) + (mng_int32)(mng_get_uint16 ((mng_uint8p)pTempsrc1)) ) );
-
- pTempdst++;
- pTempsrc1++;
- pTempsrc2++;
- }
- }
- }
- else
- { /* just repeat the entire line */
- MNG_COPY (pTempdst, pTempsrc1, (iWidth << 3));
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_MAGNIFY_RGBA16_Y5, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_NO_16BIT_SUPPORT */
-#endif /* MNG_OPTIMIZE_FOOTPRINT_MAGN */
-#endif /* MNG_SKIPCHUNK_MAGN */
-
-/* ************************************************************************** */
-/* * * */
-/* * PAST composition routines - compose over/under with a target object * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-mng_retcode mng_composeover_rgba8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8;
- mng_uint8 iCr8, iCg8, iCb8, iCa8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_COMPOSEOVER_RGBA8, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iFGa8 = *(pWorkrow+3); /* get alpha values */
- iBGa8 = *(pOutrow+3);
-
- if (iFGa8) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa8 == 0xFF) || (iBGa8 == 0))
- { /* then simply copy the values */
- *pOutrow = *pWorkrow;
- *(pOutrow+1) = *(pWorkrow+1);
- *(pOutrow+2) = *(pWorkrow+2);
- *(pOutrow+3) = iFGa8;
- }
- else
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do alpha composing */
-#ifdef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
- int i;
- for (i=2; i >= 0; i--)
- {
- MNG_COMPOSE8 (*(pOutrow+i), *(pWorkrow+i), iFGa8, *(pOutrow+i));
- }
-#else
- MNG_COMPOSE8 (*pOutrow, *pWorkrow, iFGa8, *pOutrow );
- MNG_COMPOSE8 (*(pOutrow+1), *(pWorkrow+1), iFGa8, *(pOutrow+1));
- MNG_COMPOSE8 (*(pOutrow+2), *(pWorkrow+2), iFGa8, *(pOutrow+2));
-#endif
- /* alpha remains fully opaque !!! */
- }
- else
- { /* here we'll have to blend */
- MNG_BLEND8 (*pWorkrow, *(pWorkrow+1), *(pWorkrow+2), iFGa8,
- *pOutrow, *(pOutrow+1), *(pOutrow+2), iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *pOutrow = iCr8;
- *(pOutrow+1) = iCg8;
- *(pOutrow+2) = iCb8;
- *(pOutrow+3) = iCa8;
- }
- }
- }
-
- pOutrow += 4;
- pWorkrow += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_COMPOSEOVER_RGBA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_composeover_rgba16 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint16p pWorkrow;
- mng_uint16p pOutrow;
- mng_int32 iX;
- mng_uint16 iFGa16, iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGa16, iBGr16, iBGg16, iBGb16;
- mng_uint16 iCr16, iCg16, iCb16, iCa16;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_COMPOSEOVER_RGBA16, MNG_LC_START);
-#endif
-
- pWorkrow = (mng_uint16p)pData->pRGBArow;
- pOutrow = (mng_uint16p)(pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize));
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- { /* get alpha values */
- iFGa16 = mng_get_uint16 ((mng_uint8p)(pWorkrow+3));
- iBGa16 = mng_get_uint16 ((mng_uint8p)(pOutrow+3));
-
- if (iFGa16) /* any opacity at all ? */
- { /* fully opaque or background fully transparent ? */
- if ((iFGa16 == 0xFFFF) || (iBGa16 == 0))
- { /* then simply copy the values */
- *pOutrow = *pWorkrow;
- *(pOutrow+1) = *(pWorkrow+1);
- *(pOutrow+2) = *(pWorkrow+2);
- *(pOutrow+3) = *(pWorkrow+3);
- }
- else
- { /* get color values */
- iFGr16 = mng_get_uint16 ((mng_uint8p)pWorkrow);
- iFGg16 = mng_get_uint16 ((mng_uint8p)(pWorkrow+1));
- iFGb16 = mng_get_uint16 ((mng_uint8p)(pWorkrow+2));
- iBGr16 = mng_get_uint16 ((mng_uint8p)pOutrow);
- iBGg16 = mng_get_uint16 ((mng_uint8p)(pOutrow+1));
- iBGb16 = mng_get_uint16 ((mng_uint8p)(pOutrow+2));
-
- if (iBGa16 == 0xFFFF) /* background fully opaque ? */
- { /* do alpha composing */
- MNG_COMPOSE16 (iFGr16, iFGr16, iFGa16, iBGr16);
- MNG_COMPOSE16 (iFGg16, iFGg16, iFGa16, iBGg16);
- MNG_COMPOSE16 (iFGb16, iFGb16, iFGa16, iBGb16);
-
- mng_put_uint16 ((mng_uint8p)pOutrow, iFGr16);
- mng_put_uint16 ((mng_uint8p)(pOutrow+1), iFGg16);
- mng_put_uint16 ((mng_uint8p)(pOutrow+2), iFGb16);
- /* alpha remains fully opaque !!! */
- }
- else
- { /* here we'll have to blend */
- MNG_BLEND16 (iFGr16, iFGg16, iFGb16, iFGa16,
- iBGr16, iBGg16, iBGb16, iBGa16,
- iCr16, iCg16, iCb16, iCa16);
- /* and return the composed values */
- mng_put_uint16 ((mng_uint8p)pOutrow, iCr16);
- mng_put_uint16 ((mng_uint8p)(pOutrow+1), iCg16);
- mng_put_uint16 ((mng_uint8p)(pOutrow+2), iCb16);
- mng_put_uint16 ((mng_uint8p)(pOutrow+3), iCa16);
- }
- }
- }
-
- pOutrow += 4;
- pWorkrow += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_COMPOSEOVER_RGBA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_composeunder_rgba8 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint8p pWorkrow;
- mng_uint8p pOutrow;
- mng_int32 iX;
- mng_uint8 iFGa8, iBGa8;
- mng_uint8 iCr8, iCg8, iCb8, iCa8;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_COMPOSEUNDER_RGBA8, MNG_LC_START);
-#endif
-
- pWorkrow = pData->pRGBArow;
- pOutrow = pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize);
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- {
- iFGa8 = *(pOutrow+3); /* get alpha values */
- iBGa8 = *(pWorkrow+3);
- /* anything to do at all ? */
- if ((iBGa8) && (iFGa8 != 0xFF))
- {
- if (iBGa8 == 0xFF) /* background fully opaque ? */
- { /* do alpha composing */
-#ifdef MNG_OPTIMIZE_FOOTPRINT_COMPOSE
- int i;
- for (i=2; i >= 0; i--)
- {
- MNG_COMPOSE8 (*(pOutrow+i), *(pOutrow+i), iFGa8, *(pWorkrow+i));
- }
-#else
- MNG_COMPOSE8 (*pOutrow, *pOutrow, iFGa8, *pWorkrow );
- MNG_COMPOSE8 (*(pOutrow+1), *(pOutrow+1), iFGa8, *(pWorkrow+1));
- MNG_COMPOSE8 (*(pOutrow+2), *(pOutrow+2), iFGa8, *(pWorkrow+2));
-#endif
- *(pOutrow+3) = 0xFF; /* alpha becomes fully opaque !!! */
- }
- else
- { /* here we'll have to blend */
- MNG_BLEND8 (*pOutrow, *(pOutrow+1), *(pOutrow+2), iFGa8,
- *pWorkrow, *(pWorkrow+1), *(pWorkrow+2), iBGa8,
- iCr8, iCg8, iCb8, iCa8);
- /* and return the composed values */
- *pOutrow = iCr8;
- *(pOutrow+1) = iCg8;
- *(pOutrow+2) = iCb8;
- *(pOutrow+3) = iCa8;
- }
- }
-
- pOutrow += 4;
- pWorkrow += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_COMPOSEUNDER_RGBA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_composeunder_rgba16 (mng_datap pData)
-{
- mng_imagedatap pBuf = ((mng_imagep)pData->pStoreobj)->pImgbuf;
- mng_uint16p pWorkrow;
- mng_uint16p pOutrow;
- mng_int32 iX;
- mng_uint16 iFGa16, iFGr16, iFGg16, iFGb16;
- mng_uint16 iBGa16, iBGr16, iBGg16, iBGb16;
- mng_uint16 iCr16, iCg16, iCb16, iCa16;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_COMPOSEUNDER_RGBA16, MNG_LC_START);
-#endif
-
- pWorkrow = (mng_uint16p)pData->pRGBArow;
- pOutrow = (mng_uint16p)(pBuf->pImgdata + (pData->iRow * pBuf->iRowsize ) +
- (pData->iCol * pBuf->iSamplesize));
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- { /* get alpha values */
- iFGa16 = mng_get_uint16 ((mng_uint8p)(pOutrow+3));
- iBGa16 = mng_get_uint16 ((mng_uint8p)(pWorkrow+3));
- /* anything to do at all ? */
- if ((iBGa16) && (iFGa16 != 0xFFFF))
- {
- iFGr16 = mng_get_uint16 ((mng_uint8p)pOutrow);
- iFGg16 = mng_get_uint16 ((mng_uint8p)(pOutrow+1));
- iFGb16 = mng_get_uint16 ((mng_uint8p)(pOutrow+2));
- iBGr16 = mng_get_uint16 ((mng_uint8p)pWorkrow);
- iBGg16 = mng_get_uint16 ((mng_uint8p)(pWorkrow+1));
- iBGb16 = mng_get_uint16 ((mng_uint8p)(pWorkrow+2));
-
- if (iBGa16 == 0xFFFF) /* background fully opaque ? */
- { /* do alpha composing */
- MNG_COMPOSE16 (iFGr16, iFGr16, iFGa16, iBGr16);
- MNG_COMPOSE16 (iFGg16, iFGg16, iFGa16, iBGg16);
- MNG_COMPOSE16 (iFGb16, iFGb16, iFGa16, iBGb16);
-
- mng_put_uint16 ((mng_uint8p)pOutrow, iFGr16);
- mng_put_uint16 ((mng_uint8p)(pOutrow+1), iFGg16);
- mng_put_uint16 ((mng_uint8p)(pOutrow+2), iFGb16);
- *(pOutrow+3) = 0xFFFF; /* alpha becomes fully opaque !!! */
- }
- else
- { /* here we'll have to blend */
- MNG_BLEND16 (iFGr16, iFGg16, iFGb16, iFGa16,
- iBGr16, iBGg16, iBGb16, iBGa16,
- iCr16, iCg16, iCb16, iCa16);
- /* and return the composed values */
- mng_put_uint16 ((mng_uint8p)pOutrow, iCr16);
- mng_put_uint16 ((mng_uint8p)(pOutrow+1), iCg16);
- mng_put_uint16 ((mng_uint8p)(pOutrow+2), iCb16);
- mng_put_uint16 ((mng_uint8p)(pOutrow+3), iCa16);
- }
- }
-
- pOutrow += 4;
- pWorkrow += 4;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_COMPOSEUNDER_RGBA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * PAST flip & tile routines - flip or tile a row of pixels * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-mng_retcode mng_flip_rgba8 (mng_datap pData)
-{
- mng_uint32p pWorkrow;
- mng_uint32p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FLIP_RGBA8, MNG_LC_START);
-#endif
- /* setup temp pointers */
- pWorkrow = (mng_uint32p)pData->pRGBArow + pData->iRowsamples - 1;
- pOutrow = (mng_uint32p)pData->pWorkrow;
- /* swap original buffers */
- pData->pWorkrow = pData->pRGBArow;
- pData->pRGBArow = (mng_uint8p)pOutrow;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- { /* let's flip */
- *pOutrow = *pWorkrow;
- pOutrow++;
- pWorkrow--;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FLIP_RGBA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_flip_rgba16 (mng_datap pData)
-{
- mng_uint32p pWorkrow;
- mng_uint32p pOutrow;
- mng_int32 iX;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FLIP_RGBA16, MNG_LC_START);
-#endif
- /* setup temp pointers */
- pWorkrow = (mng_uint32p)pData->pRGBArow + ((pData->iRowsamples - 1) << 1);
- pOutrow = (mng_uint32p)pData->pWorkrow;
- /* swap original buffers */
- pData->pWorkrow = pData->pRGBArow;
- pData->pRGBArow = (mng_uint8p)pOutrow;
-
-#ifdef MNG_DECREMENT_LOOPS
- for (iX = pData->iRowsamples; iX > 0; iX--)
-#else
- for (iX = 0; iX < pData->iRowsamples; iX++)
-#endif
- { /* let's flip */
- *pOutrow = *pWorkrow;
- *(pOutrow + 1) = *(pWorkrow + 1);
-
- pOutrow += 2;
- pWorkrow -= 2;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_FLIP_RGBA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode mng_tile_rgba8 (mng_datap pData)
-{
- mng_uint32p pWorkrow;
- mng_uint32p pOutrow;
- mng_int32 iX;
- mng_uint32 iZ, iMax;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_TILE_RGBA8, MNG_LC_START);
-#endif
-
- iZ = pData->iSourcel; /* indent ? */
- /* what's our source-length */
- iMax = ((mng_imagep)pData->pRetrieveobj)->pImgbuf->iWidth;
- /* setup temp pointers */
- pWorkrow = (mng_uint32p)pData->pRGBArow + iZ;
- pOutrow = (mng_uint32p)pData->pWorkrow;
- /* swap original buffers */
- pData->pWorkrow = pData->pRGBArow;
- pData->pRGBArow = (mng_uint8p)pOutrow;
-
- for (iX = pData->iDestl; iX < pData->iDestr; iX++)
- { /* tiiiile */
- *pOutrow = *pWorkrow;
-
- pWorkrow++;
- pOutrow++;
- iZ++;
-
- if (iZ >= iMax) /* end of source ? */
- {
- iZ = 0;
- pWorkrow = (mng_uint32p)pData->pWorkrow;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_TILE_RGBA8, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_tile_rgba16 (mng_datap pData)
-{
- mng_uint32p pWorkrow;
- mng_uint32p pOutrow;
- mng_int32 iX;
- mng_uint32 iZ, iMax;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_TILE_RGBA16, MNG_LC_START);
-#endif
-
- iZ = pData->iSourcel; /* indent ? */
- /* what's our source-length */
- iMax = ((mng_imagep)pData->pRetrieveobj)->pImgbuf->iWidth;
- /* setup temp pointers */
- pWorkrow = (mng_uint32p)pData->pRGBArow + (iZ << 1);
- pOutrow = (mng_uint32p)pData->pWorkrow;
- /* swap original buffers */
- pData->pWorkrow = pData->pRGBArow;
- pData->pRGBArow = (mng_uint8p)pOutrow;
-
- for (iX = pData->iDestl; iX < pData->iDestr; iX++)
- { /* tiiiile */
- *pOutrow = *pWorkrow;
- *(pOutrow + 1) = *(pWorkrow + 1);
-
- pWorkrow += 2;
- pOutrow += 2;
- iZ++;
-
- if (iZ >= iMax) /* end of source ? */
- {
- iZ = 0;
- pWorkrow = (mng_uint32p)pData->pWorkrow;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_TILE_RGBA16, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_SKIPCHUNK_PAST */
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_DISPLAY_PROCS */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/libmng_pixels.h b/src/3rdparty/libmng/libmng_pixels.h
deleted file mode 100644
index 5a0281e89d..0000000000
--- a/src/3rdparty/libmng/libmng_pixels.h
+++ /dev/null
@@ -1,1147 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_pixels.h copyright (c) 2000-2006 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : Pixel-row management routines (definition) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : Definition of the pixel-row management routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * * */
-/* * 0.5.2 - 05/22/2000 - G.Juyn * */
-/* * - added some JNG definitions * */
-/* * - added delta-image row-processing routines * */
-/* * 0.5.2 - 06/05/2000 - G.Juyn * */
-/* * - added support for RGB8_A8 canvasstyle * */
-/* * * */
-/* * 0.5.3 - 06/16/2000 - G.Juyn * */
-/* * - changed progressive-display processing * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 08/26/2000 - G.Juyn * */
-/* * - added MAGN support * */
-/* * 0.9.3 - 09/07/2000 - G.Juyn * */
-/* * - added support for new filter_types * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added optional support for bKGD for PNG images * */
-/* * - added support for JDAA * */
-/* * 0.9.3 - 10/19/2000 - G.Juyn * */
-/* * - implemented delayed delta-processing * */
-/* * * */
-/* * 0.9.4 - 1/18/2001 - G.Juyn * */
-/* * - added "new" MAGN methods 3, 4 & 5 * */
-/* * * */
-/* * 1.0.1 - 04/21/2001 - G.Juyn (code by G.Kelly) * */
-/* * - added BGRA8 canvas with premultiplied alpha * */
-/* * * */
-/* * 1.0.5 - 08/15/2002 - G.Juyn * */
-/* * - completed PROM support * */
-/* * - completed delta-image support * */
-/* * 1.0.5 - 08/16/2002 - G.Juyn * */
-/* * - completed MAGN support (16-bit functions) * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * 1.0.5 - 09/22/2002 - G.Juyn * */
-/* * - added bgrx8 canvas (filler byte) * */
-/* * 1.0.5 - 09/23/2002 - G.Juyn * */
-/* * - added compose over/under routines for PAST processing * */
-/* * - added flip & tile routines for PAST processing * */
-/* * * */
-/* * 1.0.6 - 03/09/2003 - G.Juyn * */
-/* * - hiding 12-bit JPEG stuff * */
-/* * 1.0.6 - 05/11/2003 - G. Juyn * */
-/* * - added conditionals around canvas update routines * */
-/* * 1.0.6 - 06/09/2003 - G. R-P * */
-/* * - added conditionals around 8-bit magn routines * */
-/* * 1.0.6 - 07/07/2003 - G. R-P * */
-/* * - removed conditionals around 8-bit magn routines * */
-/* * - added conditionals around 16-bit and delta-PNG * */
-/* * supporting code * */
-/* * 1.0.6 - 07/29/2003 - G.R-P * */
-/* * - added SKIPCHUNK conditionals around PAST chunk support * */
-/* * 1.0.6 - 08/18/2003 - G.R-P * */
-/* * - added conditionals around 1, 2, and 4-bit prototypes * */
-/* * * */
-/* * 1.0.7 - 11/27/2003 - R.A * */
-/* * - added CANVAS_RGB565 and CANVAS_BGR565 * */
-/* * 1.0.7 - 12/06/2003 - R.A * */
-/* * - added CANVAS_RGBA565 and CANVAS_BGRA565 * */
-/* * 1.0.7 - 01/25/2004 - J.S * */
-/* * - added premultiplied alpha canvas' for RGBA, ARGB, ABGR * */
-/* * * */
-/* * 1.0.9 - 10/10/2004 - G.R-P. * */
-/* * - added MNG_NO_1_2_4BIT_SUPPORT * */
-/* * 1.0.9 - 10/14/2004 - G.Juyn * */
-/* * - added bgr565_a8 canvas-style (thanks to J. Elvander) * */
-/* * * */
-/* * 1.0.10 - 03/07/2006 - (thanks to W. Manthey) * */
-/* * - added CANVAS_RGB555 and CANVAS_BGR555 * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_pixels_h_
-#define _libmng_pixels_h_
-
-/* ************************************************************************** */
-/* * * */
-/* * Progressive display check - checks to see if progressive display is * */
-/* * in order & indicates so * */
-/* * * */
-/* * The routine is called after a call to one of the display_xxx routines * */
-/* * if appropriate * */
-/* * * */
-/* * The refresh is warrented in the read_chunk routine (mng_read.c) * */
-/* * and only during read&display processing, since there's not much point * */
-/* * doing it from memory! * */
-/* * * */
-/* ************************************************************************** */
-
-mng_retcode mng_display_progressive_check (mng_datap pData);
-
-/* ************************************************************************** */
-/* * * */
-/* * Display routines - convert rowdata (which is already color-corrected) * */
-/* * to the output canvas, respecting any transparency information * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCANVAS_RGB8
-mng_retcode mng_display_rgb8 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_RGBA8
-mng_retcode mng_display_rgba8 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_RGBA8_PM
-mng_retcode mng_display_rgba8_pm (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_ARGB8
-mng_retcode mng_display_argb8 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_ARGB8_PM
-mng_retcode mng_display_argb8_pm (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_RGB8_A8
-mng_retcode mng_display_rgb8_a8 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_BGR8
-mng_retcode mng_display_bgr8 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_BGRX8
-mng_retcode mng_display_bgrx8 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_BGRA8
-mng_retcode mng_display_bgra8 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_BGRA8_PM
-mng_retcode mng_display_bgra8_pm (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_ABGR8
-mng_retcode mng_display_abgr8 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_ABGR8_PM
-mng_retcode mng_display_abgr8_pm (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_RGB565
-mng_retcode mng_display_rgb565 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_RGBA565
-mng_retcode mng_display_rgba565 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_BGR565
-mng_retcode mng_display_bgr565 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_BGRA565
-mng_retcode mng_display_bgra565 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_BGR565_A8
-mng_retcode mng_display_bgr565_a8 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_RGB555
-mng_retcode mng_display_rgb555 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_BGR555
-mng_retcode mng_display_bgr555 (mng_datap pData);
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Background restore routines - restore the background with info from * */
-/* * the BACK and/or bKGD chunk and/or the app's background canvas * */
-/* * * */
-/* ************************************************************************** */
-
-mng_retcode mng_restore_bkgd_backimage (mng_datap pData);
-mng_retcode mng_restore_bkgd_backcolor (mng_datap pData);
-mng_retcode mng_restore_bkgd_bkgd (mng_datap pData);
-mng_retcode mng_restore_bkgd_bgcolor (mng_datap pData);
-#ifndef MNG_SKIPCANVAS_RGB8
-mng_retcode mng_restore_bkgd_rgb8 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_BGR8
-mng_retcode mng_restore_bkgd_bgr8 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_BGRX8
-mng_retcode mng_restore_bkgd_bgrx8 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_RGB565
-mng_retcode mng_restore_bkgd_rgb565 (mng_datap pData);
-#endif
-#ifndef MNG_SKIPCANVAS_BGR565
-mng_retcode mng_restore_bkgd_bgr565 (mng_datap pData);
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Row retrieval routines - retrieve processed & uncompressed row-data * */
-/* * from the current "object" * */
-/* * * */
-/* ************************************************************************** */
-
-mng_retcode mng_retrieve_g8 (mng_datap pData);
-mng_retcode mng_retrieve_rgb8 (mng_datap pData);
-mng_retcode mng_retrieve_idx8 (mng_datap pData);
-mng_retcode mng_retrieve_ga8 (mng_datap pData);
-mng_retcode mng_retrieve_rgba8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_retrieve_g16 (mng_datap pData);
-mng_retcode mng_retrieve_ga16 (mng_datap pData);
-mng_retcode mng_retrieve_rgb16 (mng_datap pData);
-mng_retcode mng_retrieve_rgba16 (mng_datap pData);
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Row storage routines - store processed & uncompressed row-data * */
-/* * into the current "object" * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_store_g1 (mng_datap pData);
-mng_retcode mng_store_g2 (mng_datap pData);
-mng_retcode mng_store_g4 (mng_datap pData);
-mng_retcode mng_store_idx1 (mng_datap pData);
-mng_retcode mng_store_idx2 (mng_datap pData);
-mng_retcode mng_store_idx4 (mng_datap pData);
-#endif
-mng_retcode mng_store_idx8 (mng_datap pData);
-mng_retcode mng_store_rgb8 (mng_datap pData);
-mng_retcode mng_store_g8 (mng_datap pData);
-mng_retcode mng_store_ga8 (mng_datap pData);
-mng_retcode mng_store_rgba8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_store_g16 (mng_datap pData);
-mng_retcode mng_store_ga16 (mng_datap pData);
-mng_retcode mng_store_rgb16 (mng_datap pData);
-mng_retcode mng_store_rgba16 (mng_datap pData);
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Row storage routines (JPEG) - store processed & uncompressed row-data * */
-/* * into the current "object" * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-mng_retcode mng_store_jpeg_g8 (mng_datap pData);
-mng_retcode mng_store_jpeg_rgb8 (mng_datap pData);
-mng_retcode mng_store_jpeg_ga8 (mng_datap pData);
-mng_retcode mng_store_jpeg_rgba8 (mng_datap pData);
-
-#ifdef MNG_SUPPORT_JPEG12
-mng_retcode mng_store_jpeg_g12 (mng_datap pData);
-mng_retcode mng_store_jpeg_rgb12 (mng_datap pData);
-mng_retcode mng_store_jpeg_ga12 (mng_datap pData);
-mng_retcode mng_store_jpeg_rgba12 (mng_datap pData);
-#endif
-
-mng_retcode mng_store_jpeg_g8_alpha (mng_datap pData);
-mng_retcode mng_store_jpeg_rgb8_alpha (mng_datap pData);
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_store_jpeg_g8_a1 (mng_datap pData);
-mng_retcode mng_store_jpeg_g8_a2 (mng_datap pData);
-mng_retcode mng_store_jpeg_g8_a4 (mng_datap pData);
-#endif
-mng_retcode mng_store_jpeg_g8_a8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_store_jpeg_g8_a16 (mng_datap pData);
-#endif
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_store_jpeg_rgb8_a1 (mng_datap pData);
-mng_retcode mng_store_jpeg_rgb8_a2 (mng_datap pData);
-mng_retcode mng_store_jpeg_rgb8_a4 (mng_datap pData);
-#endif
-mng_retcode mng_store_jpeg_rgb8_a8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_store_jpeg_rgb8_a16 (mng_datap pData);
-#endif
-
-#ifdef MNG_SUPPORT_JPEG12
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_store_jpeg_g12_a1 (mng_datap pData);
-mng_retcode mng_store_jpeg_g12_a2 (mng_datap pData);
-mng_retcode mng_store_jpeg_g12_a4 (mng_datap pData);
-#endif
-mng_retcode mng_store_jpeg_g12_a8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_store_jpeg_g12_a16 (mng_datap pData);
-#endif
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_store_jpeg_rgb12_a1 (mng_datap pData);
-mng_retcode mng_store_jpeg_rgb12_a2 (mng_datap pData);
-mng_retcode mng_store_jpeg_rgb12_a4 (mng_datap pData);
-#endif
-mng_retcode mng_store_jpeg_rgb12_a8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_store_jpeg_rgb12_a16 (mng_datap pData);
-#endif
-#endif
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Delta-image row routines - apply the processed & uncompressed row-data * */
-/* * onto the target "object" * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_delta_g1 (mng_datap pData);
-mng_retcode mng_delta_g2 (mng_datap pData);
-mng_retcode mng_delta_g4 (mng_datap pData);
-#endif
-mng_retcode mng_delta_g8 (mng_datap pData);
-mng_retcode mng_delta_g16 (mng_datap pData);
-mng_retcode mng_delta_rgb8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_delta_rgb16 (mng_datap pData);
-#endif
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_delta_idx1 (mng_datap pData);
-mng_retcode mng_delta_idx2 (mng_datap pData);
-mng_retcode mng_delta_idx4 (mng_datap pData);
-#endif
-mng_retcode mng_delta_idx8 (mng_datap pData);
-mng_retcode mng_delta_ga8 (mng_datap pData);
-mng_retcode mng_delta_rgba8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_delta_ga16 (mng_datap pData);
-mng_retcode mng_delta_rgba16 (mng_datap pData);
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Delta-image row routines - apply the source row onto the target * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_delta_g1_g1 (mng_datap pData);
-mng_retcode mng_delta_g2_g2 (mng_datap pData);
-mng_retcode mng_delta_g4_g4 (mng_datap pData);
-#endif
-mng_retcode mng_delta_g8_g8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_delta_g16_g16 (mng_datap pData);
-#endif
-mng_retcode mng_delta_ga8_ga8 (mng_datap pData);
-mng_retcode mng_delta_ga8_g8 (mng_datap pData);
-mng_retcode mng_delta_ga8_a8 (mng_datap pData);
-mng_retcode mng_delta_rgba8_rgb8 (mng_datap pData);
-mng_retcode mng_delta_rgba8_a8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_delta_ga16_ga16 (mng_datap pData);
-mng_retcode mng_delta_ga16_g16 (mng_datap pData);
-mng_retcode mng_delta_ga16_a16 (mng_datap pData);
-mng_retcode mng_delta_rgba16_a16 (mng_datap pData);
-mng_retcode mng_delta_rgba16_rgb16 (mng_datap pData);
-#endif
-#endif /* MNG_NO_DELTA_PNG */
-mng_retcode mng_delta_rgb8_rgb8 (mng_datap pData); /* Used for PAST */
-mng_retcode mng_delta_rgba8_rgba8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_delta_rgb16_rgb16 (mng_datap pData);
-mng_retcode mng_delta_rgba16_rgba16 (mng_datap pData);
-#endif
-
-#ifndef MNG_NO_DELTA_PNG
-/* ************************************************************************** */
-/* * * */
-/* * Delta-image row routines - scale the delta to bitdepth of target * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_scale_g1_g2 (mng_datap pData);
-mng_retcode mng_scale_g1_g4 (mng_datap pData);
-mng_retcode mng_scale_g1_g8 (mng_datap pData);
-mng_retcode mng_scale_g2_g4 (mng_datap pData);
-mng_retcode mng_scale_g2_g8 (mng_datap pData);
-mng_retcode mng_scale_g4_g8 (mng_datap pData);
-#endif
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_scale_g1_g16 (mng_datap pData);
-mng_retcode mng_scale_g2_g16 (mng_datap pData);
-mng_retcode mng_scale_g4_g16 (mng_datap pData);
-#endif
-mng_retcode mng_scale_g8_g16 (mng_datap pData);
-mng_retcode mng_scale_ga8_ga16 (mng_datap pData);
-mng_retcode mng_scale_rgb8_rgb16 (mng_datap pData);
-mng_retcode mng_scale_rgba8_rgba16 (mng_datap pData);
-#endif
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_scale_g2_g1 (mng_datap pData);
-mng_retcode mng_scale_g4_g1 (mng_datap pData);
-mng_retcode mng_scale_g8_g1 (mng_datap pData);
-mng_retcode mng_scale_g4_g2 (mng_datap pData);
-mng_retcode mng_scale_g8_g2 (mng_datap pData);
-mng_retcode mng_scale_g8_g4 (mng_datap pData);
-#endif
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_scale_g16_g1 (mng_datap pData);
-mng_retcode mng_scale_g16_g2 (mng_datap pData);
-mng_retcode mng_scale_g16_g4 (mng_datap pData);
-#endif
-mng_retcode mng_scale_g16_g8 (mng_datap pData);
-mng_retcode mng_scale_ga16_ga8 (mng_datap pData);
-mng_retcode mng_scale_rgb16_rgb8 (mng_datap pData);
-mng_retcode mng_scale_rgba16_rgba8 (mng_datap pData);
-#endif
-#endif /* MNG_NO_DELTA_PNG */
-
-/* ************************************************************************** */
-/* * * */
-/* * Delta-image bit routines - promote bit_depth * */
-/* * * */
-/* ************************************************************************** */
-
-mng_uint8 mng_promote_replicate_1_2 (mng_uint8 iB);
-mng_uint8 mng_promote_replicate_1_4 (mng_uint8 iB);
-mng_uint8 mng_promote_replicate_1_8 (mng_uint8 iB);
-mng_uint8 mng_promote_replicate_2_4 (mng_uint8 iB);
-mng_uint8 mng_promote_replicate_2_8 (mng_uint8 iB);
-mng_uint8 mng_promote_replicate_4_8 (mng_uint8 iB);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_uint16 mng_promote_replicate_1_16 (mng_uint8 iB);
-mng_uint16 mng_promote_replicate_2_16 (mng_uint8 iB);
-mng_uint16 mng_promote_replicate_4_16 (mng_uint8 iB);
-mng_uint16 mng_promote_replicate_8_16 (mng_uint8 iB);
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DELTA_PNG
-mng_uint8 mng_promote_zerofill_1_2 (mng_uint8 iB);
-mng_uint8 mng_promote_zerofill_1_4 (mng_uint8 iB);
-mng_uint8 mng_promote_zerofill_1_8 (mng_uint8 iB);
-mng_uint8 mng_promote_zerofill_2_4 (mng_uint8 iB);
-mng_uint8 mng_promote_zerofill_2_8 (mng_uint8 iB);
-mng_uint8 mng_promote_zerofill_4_8 (mng_uint8 iB);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_uint16 mng_promote_zerofill_1_16 (mng_uint8 iB);
-mng_uint16 mng_promote_zerofill_2_16 (mng_uint8 iB);
-mng_uint16 mng_promote_zerofill_4_16 (mng_uint8 iB);
-mng_uint16 mng_promote_zerofill_8_16 (mng_uint8 iB);
-#endif
-#endif /* MNG_NO_DELTA_PNG */
-
-/* ************************************************************************** */
-/* * * */
-/* * Delta-image row routines - promote color_type * */
-/* * * */
-/* ************************************************************************** */
-
-mng_retcode mng_promote_g8_g8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_g8_g16 (mng_datap pData);
-mng_retcode mng_promote_g16_g16 (mng_datap pData);
-#endif
-
-mng_retcode mng_promote_g8_ga8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_g8_ga16 (mng_datap pData);
-mng_retcode mng_promote_g16_ga16 (mng_datap pData);
-#endif
-
-mng_retcode mng_promote_g8_rgb8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_g8_rgb16 (mng_datap pData);
-mng_retcode mng_promote_g16_rgb16 (mng_datap pData);
-#endif
-
-mng_retcode mng_promote_g8_rgba8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_g8_rgba16 (mng_datap pData);
-mng_retcode mng_promote_g16_rgba16 (mng_datap pData);
-
-mng_retcode mng_promote_ga8_ga16 (mng_datap pData);
-#endif
-
-mng_retcode mng_promote_ga8_rgba8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_ga8_rgba16 (mng_datap pData);
-mng_retcode mng_promote_ga16_rgba16 (mng_datap pData);
-#endif
-
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_rgb8_rgb16 (mng_datap pData);
-#endif
-
-mng_retcode mng_promote_rgb8_rgba8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_rgb8_rgba16 (mng_datap pData);
-mng_retcode mng_promote_rgb16_rgba16 (mng_datap pData);
-#endif
-
-mng_retcode mng_promote_idx8_rgb8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_idx8_rgb16 (mng_datap pData);
-#endif
-
-mng_retcode mng_promote_idx8_rgba8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_promote_idx8_rgba16 (mng_datap pData);
-
-mng_retcode mng_promote_rgba8_rgba16 (mng_datap pData);
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Row processing routines - convert uncompressed data from zlib to * */
-/* * managable row-data which serves as input to the color-management * */
-/* * routines * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_process_g1 (mng_datap pData);
-mng_retcode mng_process_g2 (mng_datap pData);
-mng_retcode mng_process_g4 (mng_datap pData);
-#endif
-mng_retcode mng_process_g8 (mng_datap pData);
-mng_retcode mng_process_rgb8 (mng_datap pData);
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_process_idx1 (mng_datap pData);
-mng_retcode mng_process_idx2 (mng_datap pData);
-mng_retcode mng_process_idx4 (mng_datap pData);
-#endif
-mng_retcode mng_process_idx8 (mng_datap pData);
-mng_retcode mng_process_ga8 (mng_datap pData);
-mng_retcode mng_process_rgba8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_process_g16 (mng_datap pData);
-mng_retcode mng_process_ga16 (mng_datap pData);
-mng_retcode mng_process_rgb16 (mng_datap pData);
-mng_retcode mng_process_rgba16 (mng_datap pData);
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Row processing initialization routines - set up the variables needed * */
-/* * to process uncompressed row-data * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_FOOTPRINT_INIT
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_init_g1_i (mng_datap pData);
-mng_retcode mng_init_g2_i (mng_datap pData);
-mng_retcode mng_init_g4_i (mng_datap pData);
-#endif
-mng_retcode mng_init_g8_i (mng_datap pData);
-mng_retcode mng_init_rgb8_i (mng_datap pData);
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_init_idx1_i (mng_datap pData);
-mng_retcode mng_init_idx2_i (mng_datap pData);
-mng_retcode mng_init_idx4_i (mng_datap pData);
-#endif
-mng_retcode mng_init_idx8_i (mng_datap pData);
-mng_retcode mng_init_ga8_i (mng_datap pData);
-mng_retcode mng_init_rgba8_i (mng_datap pData);
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_init_g1_ni (mng_datap pData);
-mng_retcode mng_init_g2_ni (mng_datap pData);
-mng_retcode mng_init_g4_ni (mng_datap pData);
-#endif
-mng_retcode mng_init_g8_ni (mng_datap pData);
-mng_retcode mng_init_rgb8_ni (mng_datap pData);
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_init_idx1_ni (mng_datap pData);
-mng_retcode mng_init_idx2_ni (mng_datap pData);
-mng_retcode mng_init_idx4_ni (mng_datap pData);
-#endif
-mng_retcode mng_init_idx8_ni (mng_datap pData);
-mng_retcode mng_init_ga8_ni (mng_datap pData);
-mng_retcode mng_init_rgba8_ni (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_init_g16_i (mng_datap pData);
-mng_retcode mng_init_rgb16_i (mng_datap pData);
-mng_retcode mng_init_ga16_i (mng_datap pData);
-mng_retcode mng_init_rgba16_i (mng_datap pData);
-mng_retcode mng_init_g16_ni (mng_datap pData);
-mng_retcode mng_init_rgb16_ni (mng_datap pData);
-mng_retcode mng_init_ga16_ni (mng_datap pData);
-mng_retcode mng_init_rgba16_ni (mng_datap pData);
-#endif
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Row processing initialization routines (JPEG) - set up the variables * */
-/* * needed to process uncompressed row-data * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_FOOTPRINT_INIT
-#ifdef MNG_INCLUDE_JNG
-#ifndef MNG_NO_1_2_4BIT_SUPPORT
-mng_retcode mng_init_jpeg_a1_ni (mng_datap pData);
-mng_retcode mng_init_jpeg_a2_ni (mng_datap pData);
-mng_retcode mng_init_jpeg_a4_ni (mng_datap pData);
-#endif
-mng_retcode mng_init_jpeg_a8_ni (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_init_jpeg_a16_ni (mng_datap pData);
-#endif
-#endif
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * General row processing routines * */
-/* * * */
-/* ************************************************************************** */
-
-mng_retcode mng_init_rowproc (mng_datap pData);
-mng_retcode mng_next_row (mng_datap pData);
-#ifdef MNG_INCLUDE_JNG
-mng_retcode mng_next_jpeg_alpharow (mng_datap pData);
-mng_retcode mng_next_jpeg_row (mng_datap pData);
-#endif
-mng_retcode mng_cleanup_rowproc (mng_datap pData);
-
-/* ************************************************************************** */
-/* * * */
-/* * Magnification row routines - apply magnification transforms * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_OPTIMIZE_FOOTPRINT_MAGN
-mng_retcode mng_magnify_g8_x1 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_g8_x2 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_g8_x3 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgb8_x1 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgb8_x2 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgb8_x3 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga8_x1 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga8_x2 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga8_x3 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga8_x4 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga8_x5 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-#endif
-mng_retcode mng_magnify_rgba8_x1 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgba8_x2 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgba8_x3 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgba8_x4 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgba8_x5 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-#ifndef MNG_OPTIMIZE_FOOTPRINT_MAGN
-mng_retcode mng_magnify_g8_y1 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_g8_y2 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_g8_y3 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgb8_y1 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgb8_y2 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgb8_y3 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga8_y1 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga8_y2 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga8_y3 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga8_y4 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga8_y5 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-#endif
-mng_retcode mng_magnify_rgba8_y1 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgba8_y2 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgba8_y3 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgba8_y4 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgba8_y5 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-
-/* ************************************************************************** */
-#ifndef MNG_NO_16BIT_SUPPORT
-#ifndef MNG_OPTIMIZE_FOOTPRINT_MAGN
-mng_retcode mng_magnify_g16_x1 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_g16_x2 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_g16_x3 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgb16_x1 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgb16_x2 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgb16_x3 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga16_x1 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga16_x2 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga16_x3 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga16_x4 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga16_x5 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgba16_x1 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgba16_x2 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgba16_x3 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgba16_x4 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgba16_x5 (mng_datap pData,
- mng_uint16 iMX,
- mng_uint16 iML,
- mng_uint16 iMR,
- mng_uint32 iWidth,
- mng_uint8p pSrcline,
- mng_uint8p pDstline);
-
-mng_retcode mng_magnify_g16_y1 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_g16_y2 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_g16_y3 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgb16_y1 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgb16_y2 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgb16_y3 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga16_y1 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga16_y2 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga16_y3 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga16_y4 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_ga16_y5 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgba16_y1 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgba16_y2 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgba16_y3 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgba16_y4 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-mng_retcode mng_magnify_rgba16_y5 (mng_datap pData,
- mng_int32 iS,
- mng_int32 iM,
- mng_uint32 iWidth,
- mng_uint8p pSrcline1,
- mng_uint8p pSrcline2,
- mng_uint8p pDstline);
-#endif
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * PAST composition routines - compose over/under with a target object * */
-/* * * */
-/* ************************************************************************** */
-
-mng_retcode mng_composeover_rgba8 (mng_datap pData);
-#ifndef MNG_SKIPCHUNK_PAST
-mng_retcode mng_composeunder_rgba8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_composeover_rgba16 (mng_datap pData);
-mng_retcode mng_composeunder_rgba16 (mng_datap pData);
-#endif
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * PAST flip & tile routines - flip or tile a row of pixels * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef MNG_SKIPCHUNK_PAST
-mng_retcode mng_flip_rgba8 (mng_datap pData);
-mng_retcode mng_tile_rgba8 (mng_datap pData);
-#ifndef MNG_NO_16BIT_SUPPORT
-mng_retcode mng_flip_rgba16 (mng_datap pData);
-mng_retcode mng_tile_rgba16 (mng_datap pData);
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#endif /* _libmng_pixels_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/libmng_prop_xs.c b/src/3rdparty/libmng/libmng_prop_xs.c
deleted file mode 100644
index 3849d51cc5..0000000000
--- a/src/3rdparty/libmng/libmng_prop_xs.c
+++ /dev/null
@@ -1,2799 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_prop_xs.c copyright (c) 2000-2006 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : property get/set interface (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of the property get/set functions * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - fixed calling convention * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/11/2000 - G.Juyn * */
-/* * - added set_outputprofile2 & set_srgbprofile2 * */
-/* * 0.5.1 - 05/12/2000 - G.Juyn * */
-/* * - changed trace to macro for callback error-reporting * */
-/* * * */
-/* * 0.5.2 - 05/23/2000 - G.Juyn * */
-/* * - changed inclusion of cms-routines * */
-/* * 0.5.2 - 05/24/2000 - G.Juyn * */
-/* * - added support for get/set default zlib/IJG parms * */
-/* * 0.5.2 - 05/31/2000 - G.Juyn * */
-/* * - fixed up punctuation (contribution by Tim Rowley) * */
-/* * 0.5.2 - 06/05/2000 - G.Juyn * */
-/* * - added support for RGB8_A8 canvasstyle * */
-/* * * */
-/* * 0.5.3 - 06/21/2000 - G.Juyn * */
-/* * - added get/set for speedtype to facilitate testing * */
-/* * - added get for imagelevel during processtext callback * */
-/* * 0.5.3 - 06/26/2000 - G.Juyn * */
-/* * - changed userdata variable to mng_ptr * */
-/* * 0.5.3 - 06/29/2000 - G.Juyn * */
-/* * - fixed incompatible return-types * */
-/* * * */
-/* * 0.9.1 - 07/08/2000 - G.Juyn * */
-/* * - added get routines for internal display variables * */
-/* * - added get/set routines for suspensionmode variable * */
-/* * 0.9.1 - 07/15/2000 - G.Juyn * */
-/* * - added get/set routines for sectionbreak variable * */
-/* * * */
-/* * 0.9.2 - 07/31/2000 - G.Juyn * */
-/* * - added status_xxxx functions * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 10/10/2000 - G.Juyn * */
-/* * - added support for alpha-depth prediction * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added functions to retrieve PNG/JNG specific header-info * */
-/* * 0.9.3 - 10/20/2000 - G.Juyn * */
-/* * - added get/set for bKGD preference setting * */
-/* * 0.9.3 - 10/21/2000 - G.Juyn * */
-/* * - added get function for interlace/progressive display * */
-/* * * */
-/* * 1.0.1 - 04/21/2001 - G.Juyn (code by G.Kelly) * */
-/* * - added BGRA8 canvas with premultiplied alpha * */
-/* * 1.0.1 - 05/02/2001 - G.Juyn * */
-/* * - added "default" sRGB generation (Thanks Marti!) * */
-/* * * */
-/* * 1.0.2 - 06/23/2001 - G.Juyn * */
-/* * - added optimization option for MNG-video playback * */
-/* * 1.0.2 - 06/25/2001 - G.Juyn * */
-/* * - added option to turn off progressive refresh * */
-/* * * */
-/* * 1.0.3 - 08/06/2001 - G.Juyn * */
-/* * - added get function for last processed BACK chunk * */
-/* * * */
-/* * 1.0.4 - 06/22/2002 - G.Juyn * */
-/* * - B495442 - invalid returnvalue in mng_get_suspensionmode * */
-/* * * */
-/* * 1.0.5 - 09/14/2002 - G.Juyn * */
-/* * - added event handling for dynamic MNG * */
-/* * 1.0.5 - 09/22/2002 - G.Juyn * */
-/* * - added bgrx8 canvas (filler byte) * */
-/* * 1.0.5 - 11/07/2002 - G.Juyn * */
-/* * - added support to get totals after mng_read() * */
-/* * * */
-/* * 1.0.6 - 05/11/2003 - G. Juyn * */
-/* * - added conditionals around canvas update routines * */
-/* * 1.0.6 - 07/07/2003 - G.R-P * */
-/* * - added conditionals around some JNG-supporting code * */
-/* * 1.0.6 - 07/11/2003 - G.R-P * */
-/* * - added conditionals zlib and jpeg property accessors * */
-/* * 1.0.6 - 07/14/2003 - G.R-P * */
-/* * - added conditionals around various unused functions * */
-/* * * */
-/* * 1.0.7 - 11/27/2003 - R.A * */
-/* * - added CANVAS_RGB565 and CANVAS_BGR565 * */
-/* * 1.0.7 - 12/06/2003 - R.A * */
-/* * - added CANVAS_RGBA565 and CANVAS_BGRA565 * */
-/* * 1.0.7 - 01/25/2004 - J.S * */
-/* * - added premultiplied alpha canvas' for RGBA, ARGB, ABGR * */
-/* * 1.0.7 - 03/07/2004 - G.R-P. * */
-/* * - put gamma, cms-related functions inside #ifdef * */
-/* * * */
-/* * 1.0.8 - 04/02/2004 - G.Juyn * */
-/* * - added CRC existence & checking flags * */
-/* * * */
-/* * 1.0.9 - 09/18/2004 - G.R-P. * */
-/* * - added some MNG_SUPPORT_WRITE conditionals * */
-/* * 1.0.9 - 10/03/2004 - G.Juyn * */
-/* * - added function to retrieve current FRAM delay * */
-/* * 1.0.9 - 10/14/2004 - G.Juyn * */
-/* * - added bgr565_a8 canvas-style (thanks to J. Elvander) * */
-/* * 1.0.9 - 12/20/2004 - G.Juyn * */
-/* * - cleaned up macro-invocations (thanks to D. Airlie) * */
-/* * * */
-/* * 1.0.10 - 03/07/2006 - (thanks to W. Manthey) * */
-/* * - added CANVAS_RGB555 and CANVAS_BGR555 * */
-/* * * */
-/* ************************************************************************** */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-#include "libmng_objects.h"
-#include "libmng_memory.h"
-#include "libmng_cms.h"
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Property set functions * */
-/* * * */
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_set_userdata (mng_handle hHandle,
- mng_ptr pUserdata)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_USERDATA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->pUserdata = pUserdata;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_USERDATA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_set_canvasstyle (mng_handle hHandle,
- mng_uint32 iStyle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_CANVASSTYLE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
-
- switch (iStyle)
- {
-#ifndef MNG_SKIPCANVAS_RGB8
- case MNG_CANVAS_RGB8 : break;
-#endif
-#ifndef MNG_SKIPCANVAS_RGBA8
- case MNG_CANVAS_RGBA8 : break;
-#endif
-#ifndef MNG_SKIPCANVAS_RGBA8_PM
- case MNG_CANVAS_RGBA8_PM: break;
-#endif
-#ifndef MNG_SKIPCANVAS_ARGB8
- case MNG_CANVAS_ARGB8 : break;
-#endif
-#ifndef MNG_SKIPCANVAS_ARGB8_PM
- case MNG_CANVAS_ARGB8_PM: break;
-#endif
-#ifndef MNG_SKIPCANVAS_RGB8_A8
- case MNG_CANVAS_RGB8_A8 : break;
-#endif
-#ifndef MNG_SKIPCANVAS_BGR8
- case MNG_CANVAS_BGR8 : break;
-#endif
-#ifndef MNG_SKIPCANVAS_BGRX8
- case MNG_CANVAS_BGRX8 : break;
-#endif
-#ifndef MNG_SKIPCANVAS_BGRA8
- case MNG_CANVAS_BGRA8 : break;
-#endif
-#ifndef MNG_SKIPCANVAS_BGRA8_PM
- case MNG_CANVAS_BGRA8_PM: break;
-#endif
-#ifndef MNG_SKIPCANVAS_ABGR8
- case MNG_CANVAS_ABGR8 : break;
-#endif
-#ifndef MNG_SKIPCANVAS_ABGR8_PM
- case MNG_CANVAS_ABGR8_PM: break;
-#endif
-#ifndef MNG_SKIPCANVAS_RGB565
- case MNG_CANVAS_RGB565 : break;
-#endif
-#ifndef MNG_SKIPCANVAS_RGBA565
- case MNG_CANVAS_RGBA565 : break;
-#endif
-#ifndef MNG_SKIPCANVAS_BGR565
- case MNG_CANVAS_BGR565 : break;
-#endif
-#ifndef MNG_SKIPCANVAS_BGRA565
- case MNG_CANVAS_BGRA565 : break;
-#endif
-#ifndef MNG_SKIPCANVAS_BGR565_A8
- case MNG_CANVAS_BGR565_A8 : break;
-#endif
-#ifndef MNG_SKIPCANVAS_RGB555
- case MNG_CANVAS_RGB555 : break;
-#endif
-#ifndef MNG_SKIPCANVAS_BGR555
- case MNG_CANVAS_BGR555 : break;
-#endif
-/* case MNG_CANVAS_RGB16 : break; */
-/* case MNG_CANVAS_RGBA16 : break; */
-/* case MNG_CANVAS_ARGB16 : break; */
-/* case MNG_CANVAS_BGR16 : break; */
-/* case MNG_CANVAS_BGRA16 : break; */
-/* case MNG_CANVAS_ABGR16 : break; */
-/* case MNG_CANVAS_INDEX8 : break; */
-/* case MNG_CANVAS_INDEXA8 : break; */
-/* case MNG_CANVAS_AINDEX8 : break; */
-/* case MNG_CANVAS_GRAY8 : break; */
-/* case MNG_CANVAS_GRAY16 : break; */
-/* case MNG_CANVAS_GRAYA8 : break; */
-/* case MNG_CANVAS_GRAYA16 : break; */
-/* case MNG_CANVAS_AGRAY8 : break; */
-/* case MNG_CANVAS_AGRAY16 : break; */
-/* case MNG_CANVAS_DX15 : break; */
-/* case MNG_CANVAS_DX16 : break; */
- default : { MNG_ERROR (((mng_datap)hHandle), MNG_INVALIDCNVSTYLE) };
- }
-
- ((mng_datap)hHandle)->iCanvasstyle = iStyle;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_CANVASSTYLE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_set_bkgdstyle (mng_handle hHandle,
- mng_uint32 iStyle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_BKGDSTYLE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
-
- switch (iStyle) /* alpha-modes not supported */
- {
-#ifndef MNG_SKIPCANVAS_RGB8
- case MNG_CANVAS_RGB8 : break;
-#endif
-#ifndef MNG_SKIPCANVAS_BGR8
- case MNG_CANVAS_BGR8 : break;
-#endif
-#ifndef MNG_SKIPCANVAS_BGRX8
- case MNG_CANVAS_BGRX8 : break;
-#endif
-#ifndef MNG_SKIPCANVAS_RGB565
- case MNG_CANVAS_RGB565 : break;
-#endif
-#ifndef MNG_SKIPCANVAS_BGR565
- case MNG_CANVAS_BGR565 : break;
-#endif
-/* case MNG_CANVAS_RGB16 : break; */
-/* case MNG_CANVAS_BGR16 : break; */
-/* case MNG_CANVAS_INDEX8 : break; */
-/* case MNG_CANVAS_GRAY8 : break; */
-/* case MNG_CANVAS_GRAY16 : break; */
-/* case MNG_CANVAS_DX15 : break; */
-/* case MNG_CANVAS_DX16 : break; */
- default : MNG_ERROR (((mng_datap)hHandle), MNG_INVALIDCNVSTYLE);
- }
-
- ((mng_datap)hHandle)->iBkgdstyle = iStyle;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_BKGDSTYLE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_set_bgcolor (mng_handle hHandle,
- mng_uint16 iRed,
- mng_uint16 iGreen,
- mng_uint16 iBlue)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_BGCOLOR, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->iBGred = iRed;
- ((mng_datap)hHandle)->iBGgreen = iGreen;
- ((mng_datap)hHandle)->iBGblue = iBlue;
- ((mng_datap)hHandle)->bUseBKGD = MNG_FALSE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_BGCOLOR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_set_usebkgd (mng_handle hHandle,
- mng_bool bUseBKGD)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_USEBKGD, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->bUseBKGD = bUseBKGD;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_USEBKGD, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_set_storechunks (mng_handle hHandle,
- mng_bool bStorechunks)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_STORECHUNKS, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->bStorechunks = bStorechunks;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_STORECHUNKS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_set_sectionbreaks (mng_handle hHandle,
- mng_bool bSectionbreaks)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SECTIONBREAKS, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->bSectionbreaks = bSectionbreaks;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SECTIONBREAKS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_set_cacheplayback (mng_handle hHandle,
- mng_bool bCacheplayback)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_CACHEPLAYBACK, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
-
- if (((mng_datap)hHandle)->bHasheader)
- MNG_ERROR (((mng_datap)hHandle), MNG_FUNCTIONINVALID);
-
- ((mng_datap)hHandle)->bCacheplayback = bCacheplayback;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_CACHEPLAYBACK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_set_doprogressive (mng_handle hHandle,
- mng_bool bDoProgressive)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DOPROGRESSIVE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
-
- ((mng_datap)hHandle)->bDoProgressive = bDoProgressive;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DOPROGRESSIVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_set_crcmode (mng_handle hHandle,
- mng_uint32 iCrcmode)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_CRCMODE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
-
- ((mng_datap)hHandle)->iCrcmode = iCrcmode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_CRCMODE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_retcode MNG_DECL mng_set_srgb (mng_handle hHandle,
- mng_bool bIssRGB)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SRGB, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->bIssRGB = bIssRGB;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SRGB, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifndef MNG_SKIPCHUNK_iCCP
-mng_retcode MNG_DECL mng_set_outputprofile (mng_handle hHandle,
- mng_pchar zFilename)
-{
-#ifdef MNG_INCLUDE_LCMS
- mng_datap pData;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_OUTPUTPROFILE, MNG_LC_START);
-#endif
-
-#ifdef MNG_INCLUDE_LCMS
- MNG_VALIDHANDLE (hHandle)
-
- pData = (mng_datap)hHandle; /* address the structure */
-
- if (pData->hProf2) /* previously defined ? */
- mnglcms_freeprofile (pData->hProf2);
- /* allocate new CMS profile handle */
- pData->hProf2 = mnglcms_createfileprofile (zFilename);
-
- if (!pData->hProf2) /* handle error ? */
- MNG_ERRORL (pData, MNG_LCMS_NOHANDLE);
-#endif /* MNG_INCLUDE_LCMS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_OUTPUTPROFILE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifndef MNG_SKIPCHUNK_iCCP
-mng_retcode MNG_DECL mng_set_outputprofile2 (mng_handle hHandle,
- mng_uint32 iProfilesize,
- mng_ptr pProfile)
-{
-#ifdef MNG_INCLUDE_LCMS
- mng_datap pData;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_OUTPUTPROFILE2, MNG_LC_START);
-#endif
-
-#ifdef MNG_INCLUDE_LCMS
- MNG_VALIDHANDLE (hHandle)
-
- pData = (mng_datap)hHandle; /* address the structure */
-
- if (pData->hProf2) /* previously defined ? */
- mnglcms_freeprofile (pData->hProf2);
- /* allocate new CMS profile handle */
- pData->hProf2 = mnglcms_creatememprofile (iProfilesize, pProfile);
-
- if (!pData->hProf2) /* handle error ? */
- MNG_ERRORL (pData, MNG_LCMS_NOHANDLE);
-#endif /* MNG_INCLUDE_LCMS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_OUTPUTPROFILE2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_set_outputsrgb (mng_handle hHandle)
-{
-#ifdef MNG_INCLUDE_LCMS
- mng_datap pData;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_OUTPUTSRGB, MNG_LC_START);
-#endif
-
-#ifdef MNG_INCLUDE_LCMS
- MNG_VALIDHANDLE (hHandle)
-
- pData = (mng_datap)hHandle; /* address the structure */
-
- if (pData->hProf2) /* previously defined ? */
- mnglcms_freeprofile (pData->hProf2);
- /* allocate new CMS profile handle */
- pData->hProf2 = mnglcms_createsrgbprofile ();
-
- if (!pData->hProf2) /* handle error ? */
- MNG_ERRORL (pData, MNG_LCMS_NOHANDLE);
-#endif /* MNG_INCLUDE_LCMS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_OUTPUTSRGB, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_retcode MNG_DECL mng_set_srgbprofile (mng_handle hHandle,
- mng_pchar zFilename)
-{
-#ifdef MNG_INCLUDE_LCMS
- mng_datap pData;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SRGBPROFILE2, MNG_LC_START);
-#endif
-
-#ifdef MNG_INCLUDE_LCMS
- MNG_VALIDHANDLE (hHandle)
-
- pData = (mng_datap)hHandle; /* address the structure */
-
- if (pData->hProf3) /* previously defined ? */
- mnglcms_freeprofile (pData->hProf3);
- /* allocate new CMS profile handle */
- pData->hProf3 = mnglcms_createfileprofile (zFilename);
-
- if (!pData->hProf3) /* handle error ? */
- MNG_ERRORL (pData, MNG_LCMS_NOHANDLE);
-#endif /* MNG_INCLUDE_LCMS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SRGBPROFILE2, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_retcode MNG_DECL mng_set_srgbprofile2 (mng_handle hHandle,
- mng_uint32 iProfilesize,
- mng_ptr pProfile)
-{
-#ifdef MNG_INCLUDE_LCMS
- mng_datap pData;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SRGBPROFILE, MNG_LC_START);
-#endif
-
-#ifdef MNG_INCLUDE_LCMS
- MNG_VALIDHANDLE (hHandle)
-
- pData = (mng_datap)hHandle; /* address the structure */
-
- if (pData->hProf3) /* previously defined ? */
- mnglcms_freeprofile (pData->hProf3);
- /* allocate new CMS profile handle */
- pData->hProf3 = mnglcms_creatememprofile (iProfilesize, pProfile);
-
- if (!pData->hProf3) /* handle error ? */
- MNG_ERRORL (pData, MNG_LCMS_NOHANDLE);
-#endif /* MNG_INCLUDE_LCMS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SRGBPROFILE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_set_srgbimplicit (mng_handle hHandle)
-{
-#ifdef MNG_INCLUDE_LCMS
- mng_datap pData;
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SRGBIMPLICIT, MNG_LC_START);
-#endif
-
-#ifdef MNG_INCLUDE_LCMS
- MNG_VALIDHANDLE (hHandle)
-
- pData = (mng_datap)hHandle; /* address the structure */
-
- if (pData->hProf3) /* previously defined ? */
- mnglcms_freeprofile (pData->hProf3);
- /* allocate new CMS profile handle */
- pData->hProf3 = mnglcms_createsrgbprofile ();
-
- if (!pData->hProf3) /* handle error ? */
- MNG_ERRORL (pData, MNG_LCMS_NOHANDLE);
-#endif /* MNG_INCLUDE_LCMS */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SRGBIMPLICIT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
-mng_retcode MNG_DECL mng_set_viewgamma (mng_handle hHandle,
- mng_float dGamma)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_VIEWGAMMA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->dViewgamma = dGamma;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_VIEWGAMMA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_set_displaygamma (mng_handle hHandle,
- mng_float dGamma)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DISPLAYGAMMA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->dDisplaygamma = dGamma;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DISPLAYGAMMA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_set_dfltimggamma (mng_handle hHandle,
- mng_float dGamma)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DFLTIMGGAMMA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->dDfltimggamma = dGamma;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DFLTIMGGAMMA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
-mng_retcode MNG_DECL mng_set_viewgammaint (mng_handle hHandle,
- mng_uint32 iGamma)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_VIEWGAMMA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->dViewgamma = (mng_float)iGamma / 100000;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_VIEWGAMMA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_set_displaygammaint (mng_handle hHandle,
- mng_uint32 iGamma)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DISPLAYGAMMA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->dDisplaygamma = (mng_float)iGamma / 100000;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DISPLAYGAMMA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DFLT_INFO
-mng_retcode MNG_DECL mng_set_dfltimggammaint (mng_handle hHandle,
- mng_uint32 iGamma)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DFLTIMGGAMMA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->dDfltimggamma = (mng_float)iGamma / 100000;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_DFLTIMGGAMMA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIP_MAXCANVAS
-mng_retcode MNG_DECL mng_set_maxcanvaswidth (mng_handle hHandle,
- mng_uint32 iMaxwidth)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_MAXCANVASWIDTH, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->iMaxwidth = iMaxwidth;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_MAXCANVASWIDTH, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_set_maxcanvasheight (mng_handle hHandle,
- mng_uint32 iMaxheight)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_MAXCANVASHEIGHT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->iMaxheight = iMaxheight;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_MAXCANVASHEIGHT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_set_maxcanvassize (mng_handle hHandle,
- mng_uint32 iMaxwidth,
- mng_uint32 iMaxheight)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_MAXCANVASSIZE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->iMaxwidth = iMaxwidth;
- ((mng_datap)hHandle)->iMaxheight = iMaxheight;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_MAXCANVASSIZE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ZLIB
-#ifdef MNG_ACCESS_ZLIB
-#ifdef MNG_SUPPORT_WRITE
-mng_retcode MNG_DECL mng_set_zlib_level (mng_handle hHandle,
- mng_int32 iZlevel)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_LEVEL, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->iZlevel = iZlevel;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_LEVEL, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_WRITE */
-#endif /* MNG_ACCESS_ZLIB */
-#endif /* MNG_INCLUDE_ZLIB */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ZLIB
-#ifdef MNG_ACCESS_ZLIB
-#ifdef MNG_SUPPORT_WRITE
-mng_retcode MNG_DECL mng_set_zlib_method (mng_handle hHandle,
- mng_int32 iZmethod)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_METHOD, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->iZmethod = iZmethod;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_METHOD, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_WRITE */
-#endif /* MNG_ACCESS_ZLIB */
-#endif /* MNG_INCLUDE_ZLIB */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ZLIB
-#ifdef MNG_ACCESS_ZLIB
-#ifdef MNG_SUPPORT_WRITE
-mng_retcode MNG_DECL mng_set_zlib_windowbits (mng_handle hHandle,
- mng_int32 iZwindowbits)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_WINDOWBITS, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->iZwindowbits = iZwindowbits;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_WINDOWBITS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_WRITE */
-#endif /* MNG_ACCESS_ZLIB */
-#endif /* MNG_INCLUDE_ZLIB */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ZLIB
-#ifdef MNG_ACCESS_ZLIB
-#ifdef MNG_SUPPORT_WRITE
-mng_retcode MNG_DECL mng_set_zlib_memlevel (mng_handle hHandle,
- mng_int32 iZmemlevel)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_MEMLEVEL, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->iZmemlevel = iZmemlevel;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_MEMLEVEL, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_WRITE */
-#endif /* MNG_ACCESS_ZLIB */
-#endif /* MNG_INCLUDE_ZLIB */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ZLIB
-#ifdef MNG_ACCESS_ZLIB
-#ifdef MNG_SUPPORT_WRITE
-mng_retcode MNG_DECL mng_set_zlib_strategy (mng_handle hHandle,
- mng_int32 iZstrategy)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_STRATEGY, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->iZstrategy = iZstrategy;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_STRATEGY, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_WRITE */
-#endif /* MNG_ACCESS_ZLIB */
-#endif /* MNG_INCLUDE_ZLIB */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ZLIB
-#ifdef MNG_ACCESS_ZLIB
-#ifdef MNG_SUPPORT_WRITE
-mng_retcode MNG_DECL mng_set_zlib_maxidat (mng_handle hHandle,
- mng_uint32 iMaxIDAT)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_MAXIDAT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->iMaxIDAT = iMaxIDAT;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_ZLIB_MAXIDAT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_WRITE */
-#endif /* MNG_ACCESS_ZLIB */
-#endif /* MNG_INCLUDE_ZLIB */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-#ifdef MNG_ACCESS_JPEG
-#ifdef MNG_SUPPORT_WRITE
-mng_retcode MNG_DECL mng_set_jpeg_dctmethod (mng_handle hHandle,
- mngjpeg_dctmethod eJPEGdctmethod)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_DCTMETHOD, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->eJPEGdctmethod = eJPEGdctmethod;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_DCTMETHOD, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_WRITE */
-#endif /* MNG_ACCESS_JPEG */
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-#ifdef MNG_ACCESS_JPEG
-#ifdef MNG_SUPPORT_WRITE
-mng_retcode MNG_DECL mng_set_jpeg_quality (mng_handle hHandle,
- mng_int32 iJPEGquality)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_QUALITY, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->iJPEGquality = iJPEGquality;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_QUALITY, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_WRITE */
-#endif /* MNG_ACCESS_JPEG */
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-#ifdef MNG_ACCESS_JPEG
-#ifdef MNG_SUPPORT_WRITE
-mng_retcode MNG_DECL mng_set_jpeg_smoothing (mng_handle hHandle,
- mng_int32 iJPEGsmoothing)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_SMOOTHING, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->iJPEGsmoothing = iJPEGsmoothing;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_SMOOTHING, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_WRITE */
-#endif /* MNG_ACCESS_JPEG */
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-#ifdef MNG_ACCESS_JPEG
-#ifdef MNG_SUPPORT_WRITE
-mng_retcode MNG_DECL mng_set_jpeg_progressive (mng_handle hHandle,
- mng_bool bJPEGprogressive)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_PROGRESSIVE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->bJPEGcompressprogr = bJPEGprogressive;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_PROGRESSIVE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_WRITE */
-#endif /* MNG_ACCESS_JPEG */
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-#ifdef MNG_ACCESS_JPEG
-#ifdef MNG_SUPPORT_WRITE
-mng_retcode MNG_DECL mng_set_jpeg_optimized (mng_handle hHandle,
- mng_bool bJPEGoptimized)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_OPTIMIZED, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->bJPEGcompressopt = bJPEGoptimized;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_OPTIMIZED, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_WRITE */
-#endif /* MNG_ACCESS_JPEG */
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-#ifdef MNG_ACCESS_JPEG
-#ifdef MNG_SUPPORT_WRITE
-mng_retcode MNG_DECL mng_set_jpeg_maxjdat (mng_handle hHandle,
- mng_uint32 iMaxJDAT)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_MAXJDAT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->iMaxJDAT = iMaxJDAT;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_JPEG_MAXJDAT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_WRITE */
-#endif /* MNG_ACCESS_JPEG */
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_retcode MNG_DECL mng_set_suspensionmode (mng_handle hHandle,
- mng_bool bSuspensionmode)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SUSPENSIONMODE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
-
- if (((mng_datap)hHandle)->bReading) /* we must NOT be reading !!! */
- MNG_ERROR ((mng_datap)hHandle, MNG_FUNCTIONINVALID);
-
- ((mng_datap)hHandle)->bSuspensionmode = bSuspensionmode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SUSPENSIONMODE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_retcode MNG_DECL mng_set_speed (mng_handle hHandle,
- mng_speedtype iSpeed)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SPEED, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- ((mng_datap)hHandle)->iSpeed = iSpeed;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_SET_SPEED, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-/* * * */
-/* * Property get functions * */
-/* * * */
-/* ************************************************************************** */
-
-mng_ptr MNG_DECL mng_get_userdata (mng_handle hHandle)
-{ /* no tracing in here to prevent recursive calls */
- MNG_VALIDHANDLEX (hHandle)
- return ((mng_datap)hHandle)->pUserdata;
-}
-
-/* ************************************************************************** */
-
-mng_imgtype MNG_DECL mng_get_sigtype (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_SIGTYPE, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return mng_it_unknown;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_SIGTYPE, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->eSigtype;
-}
-
-/* ************************************************************************** */
-
-mng_imgtype MNG_DECL mng_get_imagetype (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_IMAGETYPE, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return mng_it_unknown;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_IMAGETYPE, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->eImagetype;
-}
-
-/* ************************************************************************** */
-
-mng_uint32 MNG_DECL mng_get_imagewidth (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_IMAGEWIDTH, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_IMAGEWIDTH, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iWidth;
-}
-
-/* ************************************************************************** */
-
-mng_uint32 MNG_DECL mng_get_imageheight (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_IMAGEWIDTH, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_IMAGEHEIGHT, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iHeight;
-}
-
-/* ************************************************************************** */
-
-mng_uint32 MNG_DECL mng_get_ticks (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_TICKS, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_TICKS, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iTicks;
-}
-
-/* ************************************************************************** */
-
-mng_uint32 MNG_DECL mng_get_framecount (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_FRAMECOUNT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_FRAMECOUNT, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iFramecount;
-}
-
-/* ************************************************************************** */
-
-mng_uint32 MNG_DECL mng_get_layercount (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_LAYERCOUNT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_LAYERCOUNT, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iLayercount;
-}
-
-/* ************************************************************************** */
-
-mng_uint32 MNG_DECL mng_get_playtime (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_PLAYTIME, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_PLAYTIME, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iPlaytime;
-}
-
-/* ************************************************************************** */
-
-mng_uint32 MNG_DECL mng_get_simplicity (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_SIMPLICITY, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_SIMPLICITY, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iSimplicity;
-}
-
-/* ************************************************************************** */
-
-mng_uint8 MNG_DECL mng_get_bitdepth (mng_handle hHandle)
-{
- mng_uint8 iRslt;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_BITDEPTH, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
- if (((mng_datap)hHandle)->eImagetype == mng_it_png)
- iRslt = ((mng_datap)hHandle)->iBitdepth;
- else
-#ifdef MNG_INCLUDE_JNG
- if (((mng_datap)hHandle)->eImagetype == mng_it_jng)
- iRslt = ((mng_datap)hHandle)->iJHDRimgbitdepth;
- else
-#endif
- iRslt = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_BITDEPTH, MNG_LC_END);
-#endif
-
- return iRslt;
-}
-
-/* ************************************************************************** */
-
-mng_uint8 MNG_DECL mng_get_colortype (mng_handle hHandle)
-{
- mng_uint8 iRslt;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_COLORTYPE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
- if (((mng_datap)hHandle)->eImagetype == mng_it_png)
- iRslt = ((mng_datap)hHandle)->iColortype;
- else
-#ifdef MNG_INCLUDE_JNG
- if (((mng_datap)hHandle)->eImagetype == mng_it_jng)
- iRslt = ((mng_datap)hHandle)->iJHDRcolortype;
- else
-#endif
- iRslt = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_COLORTYPE, MNG_LC_END);
-#endif
-
- return iRslt;
-}
-
-/* ************************************************************************** */
-
-mng_uint8 MNG_DECL mng_get_compression (mng_handle hHandle)
-{
- mng_uint8 iRslt;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_COMPRESSION, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
- if (((mng_datap)hHandle)->eImagetype == mng_it_png)
- iRslt = ((mng_datap)hHandle)->iCompression;
- else
-#ifdef MNG_INCLUDE_JNG
- if (((mng_datap)hHandle)->eImagetype == mng_it_jng)
- iRslt = ((mng_datap)hHandle)->iJHDRimgcompression;
- else
-#endif
- iRslt = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_COMPRESSION, MNG_LC_END);
-#endif
-
- return iRslt;
-}
-
-/* ************************************************************************** */
-
-mng_uint8 MNG_DECL mng_get_filter (mng_handle hHandle)
-{
- mng_uint8 iRslt;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_FILTER, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
- if (((mng_datap)hHandle)->eImagetype == mng_it_png)
- iRslt = ((mng_datap)hHandle)->iFilter;
- else
- iRslt = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_FILTER, MNG_LC_END);
-#endif
-
- return iRslt;
-}
-
-/* ************************************************************************** */
-
-mng_uint8 MNG_DECL mng_get_interlace (mng_handle hHandle)
-{
- mng_uint8 iRslt;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_INTERLACE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
- if (((mng_datap)hHandle)->eImagetype == mng_it_png)
- iRslt = ((mng_datap)hHandle)->iInterlace;
- else
-#ifdef MNG_INCLUDE_JNG
- if (((mng_datap)hHandle)->eImagetype == mng_it_jng)
- iRslt = ((mng_datap)hHandle)->iJHDRimginterlace;
- else
-#endif
- iRslt = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_INTERLACE, MNG_LC_END);
-#endif
-
- return iRslt;
-}
-
-/* ************************************************************************** */
-
-mng_uint8 MNG_DECL mng_get_alphabitdepth (mng_handle hHandle)
-{
- mng_uint8 iRslt;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHABITDEPTH, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_INCLUDE_JNG
- if (((mng_datap)hHandle)->eImagetype == mng_it_jng)
- iRslt = ((mng_datap)hHandle)->iJHDRalphabitdepth;
- else
-#endif
- iRslt = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHABITDEPTH, MNG_LC_END);
-#endif
-
- return iRslt;
-}
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_uint8 MNG_DECL mng_get_refreshpass (mng_handle hHandle)
-{
- mng_uint8 iRslt;
- mng_datap pData;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_REFRESHPASS, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
- pData = (mng_datap)hHandle;
- /* for PNG we know the exact pass */
- if ((pData->eImagetype == mng_it_png) && (pData->iPass >= 0))
- iRslt = pData->iPass;
-#ifdef MNG_INCLUDE_JNG
- else /* for JNG we'll fake it... */
- if ((pData->eImagetype == mng_it_jng) &&
- (pData->bJPEGhasheader) && (pData->bJPEGdecostarted) &&
- (pData->bJPEGprogressive))
- {
- if (pData->pJPEGdinfo->input_scan_number <= 1)
- iRslt = 0; /* first pass (I think...) */
- else
- if (jpeg_input_complete (pData->pJPEGdinfo))
- iRslt = 7; /* input complete; aka final pass */
- else
- iRslt = 3; /* anything between 0 and 7 will do */
-
- }
-#endif
- else
- iRslt = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_REFRESHPASS, MNG_LC_END);
-#endif
-
- return iRslt;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-mng_uint8 MNG_DECL mng_get_alphacompression (mng_handle hHandle)
-{
- mng_uint8 iRslt;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHACOMPRESSION, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_INCLUDE_JNG
- if (((mng_datap)hHandle)->eImagetype == mng_it_jng)
- iRslt = ((mng_datap)hHandle)->iJHDRalphacompression;
- else
-#endif
- iRslt = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHACOMPRESSION, MNG_LC_END);
-#endif
-
- return iRslt;
-}
-
-/* ************************************************************************** */
-
-mng_uint8 MNG_DECL mng_get_alphafilter (mng_handle hHandle)
-{
- mng_uint8 iRslt;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHAFILTER, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_INCLUDE_JNG
- if (((mng_datap)hHandle)->eImagetype == mng_it_jng)
- iRslt = ((mng_datap)hHandle)->iJHDRalphafilter;
- else
-#endif
- iRslt = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHAFILTER, MNG_LC_END);
-#endif
-
- return iRslt;
-}
-
-/* ************************************************************************** */
-
-mng_uint8 MNG_DECL mng_get_alphainterlace (mng_handle hHandle)
-{
- mng_uint8 iRslt;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHAINTERLACE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_INCLUDE_JNG
- if (((mng_datap)hHandle)->eImagetype == mng_it_jng)
- iRslt = ((mng_datap)hHandle)->iJHDRalphainterlace;
- else
-#endif
- iRslt = 0;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHAINTERLACE, MNG_LC_END);
-#endif
-
- return iRslt;
-}
-
-/* ************************************************************************** */
-
-mng_uint8 MNG_DECL mng_get_alphadepth (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHADEPTH, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ALPHADEPTH, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iAlphadepth;
-}
-
-/* ************************************************************************** */
-
-mng_uint32 MNG_DECL mng_get_canvasstyle (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_CANVASSTYLE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_CANVASSTYLE, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iCanvasstyle;
-}
-
-/* ************************************************************************** */
-
-mng_uint32 MNG_DECL mng_get_bkgdstyle (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_BKGDSTYLE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_BKGDSTYLE, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iBkgdstyle;
-}
-
-/* ************************************************************************** */
-
-mng_retcode MNG_DECL mng_get_bgcolor (mng_handle hHandle,
- mng_uint16* iRed,
- mng_uint16* iGreen,
- mng_uint16* iBlue)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GET_BGCOLOR, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
- *iRed = ((mng_datap)hHandle)->iBGred;
- *iGreen = ((mng_datap)hHandle)->iBGgreen;
- *iBlue = ((mng_datap)hHandle)->iBGblue;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (((mng_datap)hHandle), MNG_FN_GET_BGCOLOR, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_bool MNG_DECL mng_get_usebkgd (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_USEBKGD, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_USEBKGD, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->bUseBKGD;
-}
-
-/* ************************************************************************** */
-
-mng_bool MNG_DECL mng_get_storechunks (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_STORECHUNKS, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_STORECHUNKS, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->bStorechunks;
-}
-
-/* ************************************************************************** */
-
-mng_bool MNG_DECL mng_get_sectionbreaks (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_SECTIONBREAKS, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_SECTIONBREAKS, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->bSectionbreaks;
-}
-
-/* ************************************************************************** */
-
-mng_bool MNG_DECL mng_get_cacheplayback (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_CACHEPLAYBACK, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_CACHEPLAYBACK, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->bCacheplayback;
-}
-
-/* ************************************************************************** */
-
-mng_bool MNG_DECL mng_get_doprogressive (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_DOPROGRESSIVE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_DOPROGRESSIVE, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->bDoProgressive;
-}
-
-/* ************************************************************************** */
-
-mng_uint32 MNG_DECL mng_get_crcmode (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_CRCMODE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_CRCMODE, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iCrcmode;
-}
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_bool MNG_DECL mng_get_srgb (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_SRGB, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEB (((mng_datap)hHandle), MNG_FN_GET_SRGB, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->bIssRGB;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
-mng_float MNG_DECL mng_get_viewgamma (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_VIEWGAMMA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_VIEWGAMMA, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->dViewgamma;
-}
-#endif
-
-/* ************************************************************************** */
-
-#if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
-mng_float MNG_DECL mng_get_displaygamma (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_DISPLAYGAMMA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_DISPLAYGAMMA, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->dDisplaygamma;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DFLT_INFO
-#if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
-mng_float MNG_DECL mng_get_dfltimggamma (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_DFLTIMGGAMMA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_DFLTIMGGAMMA, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->dDfltimggamma;
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
-mng_uint32 MNG_DECL mng_get_viewgammaint (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_VIEWGAMMA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_VIEWGAMMA, MNG_LC_END);
-#endif
-
- return (mng_uint32)(((mng_datap)hHandle)->dViewgamma * 100000);
-}
-#endif
-
-/* ************************************************************************** */
-
-#if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
-mng_uint32 MNG_DECL mng_get_displaygammaint (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_DISPLAYGAMMA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_DISPLAYGAMMA, MNG_LC_END);
-#endif
-
- return (mng_uint32)(((mng_datap)hHandle)->dDisplaygamma * 100000);
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_NO_DFLT_INFO
-#if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
-mng_uint32 MNG_DECL mng_get_dfltimggammaint (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_DFLTIMGGAMMA, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_DFLTIMGGAMMA, MNG_LC_END);
-#endif
-
- return (mng_uint32)(((mng_datap)hHandle)->dDfltimggamma * 100000);
-}
-#endif
-#endif
-
-/* ************************************************************************** */
-
-#ifndef MNG_SKIP_MAXCANVAS
-mng_uint32 MNG_DECL mng_get_maxcanvaswidth (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_MAXCANVASWIDTH, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_MAXCANVASWIDTH, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iMaxwidth;
-}
-
-/* ************************************************************************** */
-
-mng_uint32 MNG_DECL mng_get_maxcanvasheight (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_MAXCANVASHEIGHT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_MAXCANVASHEIGHT, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iMaxheight;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ZLIB
-#ifdef MNG_ACCESS_ZLIB
-mng_int32 MNG_DECL mng_get_zlib_level (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_LEVEL, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_LEVEL, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iZlevel;
-}
-#endif /* MNG_ACCESS_ZLIB */
-#endif /* MNG_INCLUDE_ZLIB */
-
-/* ************************************************************************** */
-#ifdef MNG_INCLUDE_ZLIB
-#ifdef MNG_ACCESS_ZLIB
-mng_int32 MNG_DECL mng_get_zlib_method (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_METHOD, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_METHOD, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iZmethod;
-}
-
-#endif /* MNG_ACCESS_ZLIB */
-#endif /* MNG_INCLUDE_ZLIB */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ZLIB
-#ifdef MNG_ACCESS_ZLIB
-mng_int32 MNG_DECL mng_get_zlib_windowbits (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_WINDOWBITS, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_WINDOWBITS, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iZwindowbits;
-}
-#endif /* MNG_ACCESS_ZLIB */
-#endif /* MNG_INCLUDE_ZLIB */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ZLIB
-#ifdef MNG_ACCESS_ZLIB
-mng_int32 MNG_DECL mng_get_zlib_memlevel (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_MEMLEVEL, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_MEMLEVEL, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iZmemlevel;
-}
-#endif /* MNG_ACCESS_ZLIB */
-#endif /* MNG_INCLUDE_ZLIB */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ZLIB
-#ifdef MNG_ACCESS_ZLIB
-mng_int32 MNG_DECL mng_get_zlib_strategy (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_STRATEGY, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_STRATEGY, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iZstrategy;
-}
-#endif /* MNG_ACCESS_ZLIB */
-#endif /* MNG_INCLUDE_ZLIB */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ZLIB
-#ifdef MNG_ACCESS_ZLIB
-mng_uint32 MNG_DECL mng_get_zlib_maxidat (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_MAXIDAT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_ZLIB_MAXIDAT, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iMaxIDAT;
-}
-#endif /* MNG_ACCESS_ZLIB */
-#endif /* MNG_INCLUDE_ZLIB */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-#ifdef MNG_ACCESS_JPEG
-mngjpeg_dctmethod MNG_DECL mng_get_jpeg_dctmethod (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_JPEG_DCTMETHOD, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return JDCT_ISLOW;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_JPEG_DCTMETHOD, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->eJPEGdctmethod;
-}
-#endif /* MNG_ACCESS_JPEG */
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-#ifdef MNG_ACCESS_JPEG
-mng_int32 MNG_DECL mng_get_jpeg_quality (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_JPEG_QUALITY, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_JPEG_QUALITY, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iJPEGquality;
-}
-#endif /* MNG_ACCESS_JPEG */
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-#ifdef MNG_ACCESS_JPEG
-mng_int32 MNG_DECL mng_get_jpeg_smoothing (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_JPEG_SMOOTHING, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_JPEG_SMOOTHING, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iJPEGsmoothing;
-}
-#endif /* MNG_ACCESS_JPEG */
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-#ifdef MNG_ACCESS_JPEG
-mng_bool MNG_DECL mng_get_jpeg_progressive (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_JPEG_PROGRESSIVE, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_JPEG_PROGRESSIVE, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->bJPEGcompressprogr;
-}
-#endif /* MNG_ACCESS_JPEG */
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-#ifdef MNG_ACCESS_JPEG
-mng_bool MNG_DECL mng_get_jpeg_optimized (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_JPEG_OPTIMIZED, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_JPEG_OPTIMIZED, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->bJPEGcompressopt;
-}
-#endif /* MNG_ACCESS_JPEG */
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-#ifdef MNG_ACCESS_JPEG
-mng_uint32 MNG_DECL mng_get_jpeg_maxjdat (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_JPEG_MAXJDAT, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_JPEG_MAXJDAT, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iMaxJDAT;
-}
-#endif /* MNG_ACCESS_JPEG */
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_bool MNG_DECL mng_get_suspensionmode (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_SUSPENSIONMODE, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return MNG_FALSE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_SUSPENSIONMODE, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->bSuspensionmode;
-}
-#endif /* MNG_SUPPORT_READ */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_speedtype MNG_DECL mng_get_speed (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_SPEED, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return mng_st_normal;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_SPEED, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iSpeed;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-mng_uint32 MNG_DECL mng_get_imagelevel (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_IMAGELEVEL, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLEX (hHandle)
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_IMAGELEVEL, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iImagelevel;
-}
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_retcode MNG_DECL mng_get_lastbackchunk (mng_handle hHandle,
- mng_uint16* iRed,
- mng_uint16* iGreen,
- mng_uint16* iBlue,
- mng_uint8* iMandatory)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_LASTBACKCHUNK, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
-
- if (((mng_datap)hHandle)->eImagetype != mng_it_mng)
- MNG_ERROR (((mng_datap)hHandle), MNG_FUNCTIONINVALID);
-
- *iRed = ((mng_datap)hHandle)->iBACKred;
- *iGreen = ((mng_datap)hHandle)->iBACKgreen;
- *iBlue = ((mng_datap)hHandle)->iBACKblue;
- *iMandatory = ((mng_datap)hHandle)->iBACKmandatory;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_LASTBACKCHUNK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_retcode MNG_DECL mng_get_lastseekname (mng_handle hHandle,
- mng_pchar zSegmentname)
-{
- mng_datap pData;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_LASTSEEKNAME, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
-
- pData = (mng_datap)hHandle;
- /* only allowed for MNG ! */
- if (pData->eImagetype != mng_it_mng)
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-
- if (pData->pLastseek) /* is there a last SEEK ? */
- {
- mng_ani_seekp pSEEK = (mng_ani_seekp)pData->pLastseek;
-
- if (pSEEK->iSegmentnamesize) /* copy the name if there is one */
- MNG_COPY (zSegmentname, pSEEK->zSegmentname, pSEEK->iSegmentnamesize);
-
- *(((mng_uint8p)zSegmentname) + pSEEK->iSegmentnamesize) = 0;
- }
- else
- { /* return an empty string */
- *((mng_uint8p)zSegmentname) = 0;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_LASTSEEKNAME, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_uint32 MNG_DECL mng_get_currframdelay (mng_handle hHandle)
-{
- mng_datap pData;
- mng_uint32 iRslt;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_CURRFRAMDELAY, MNG_LC_START);
-#endif
-
- MNG_VALIDHANDLE (hHandle)
-
- pData = (mng_datap)hHandle;
- /* only allowed for MNG ! */
- if (pData->eImagetype != mng_it_mng)
- MNG_ERROR (pData, MNG_FUNCTIONINVALID);
-
- iRslt = pData->iFramedelay;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_CURRFRAMDELAY, MNG_LC_END);
-#endif
-
- return iRslt;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_uint32 MNG_DECL mng_get_starttime (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_STARTTIME, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return mng_st_normal;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_STARTTIME, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iStarttime;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_uint32 MNG_DECL mng_get_runtime (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_RUNTIME, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return mng_st_normal;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_RUNTIME, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iRuntime;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifndef MNG_NO_CURRENT_INFO
-mng_uint32 MNG_DECL mng_get_currentframe (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_CURRENTFRAME, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return mng_st_normal;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_CURRENTFRAME, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iFrameseq;
-}
-#endif
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifndef MNG_NO_CURRENT_INFO
-mng_uint32 MNG_DECL mng_get_currentlayer (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_CURRENTLAYER, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return mng_st_normal;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_CURRENTLAYER, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iLayerseq;
-}
-#endif
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifndef MNG_NO_CURRENT_INFO
-mng_uint32 MNG_DECL mng_get_currentplaytime (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_CURRENTPLAYTIME, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return mng_st_normal;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_CURRENTPLAYTIME, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iFrametime;
-}
-#endif
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifndef MNG_NO_CURRENT_INFO
-mng_uint32 MNG_DECL mng_get_totalframes (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_TOTALFRAMES, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return mng_st_normal;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_TOTALFRAMES, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iTotalframes;
-}
-#endif
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifndef MNG_NO_CURRENT_INFO
-mng_uint32 MNG_DECL mng_get_totallayers (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_TOTALLAYERS, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return mng_st_normal;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_TOTALLAYERS, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iTotallayers;
-}
-#endif
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-#ifndef MNG_NO_CURRENT_INFO
-mng_uint32 MNG_DECL mng_get_totalplaytime (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_TOTALPLAYTIME, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return mng_st_normal;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_GET_TOTALPLAYTIME, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->iTotalplaytime;
-}
-#endif
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-mng_bool MNG_DECL mng_status_error (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_ERROR, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return MNG_FALSE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_ERROR, MNG_LC_END);
-#endif
-
- return (mng_bool)((mng_datap)hHandle)->iErrorcode;
-}
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_bool MNG_DECL mng_status_reading (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_READING, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return MNG_FALSE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_READING, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->bReading;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_READ
-mng_bool MNG_DECL mng_status_suspendbreak (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_SUSPENDBREAK, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return MNG_FALSE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_SUSPENDBREAK, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->bSuspended;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_WRITE
-mng_bool MNG_DECL mng_status_creating (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_CREATING, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return MNG_FALSE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_CREATING, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->bCreating;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_WRITE
-mng_bool MNG_DECL mng_status_writing (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_WRITING, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return MNG_FALSE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_WRITING, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->bWriting;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_bool MNG_DECL mng_status_displaying (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_DISPLAYING, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return MNG_FALSE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_DISPLAYING, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->bDisplaying;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_bool MNG_DECL mng_status_running (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_RUNNING, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return MNG_FALSE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_RUNNING, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->bRunning;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_bool MNG_DECL mng_status_timerbreak (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_TIMERBREAK, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return MNG_FALSE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_TIMERBREAK, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->bTimerset;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DYNAMICMNG
-mng_bool MNG_DECL mng_status_dynamic (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_DYNAMIC, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return MNG_FALSE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_DYNAMIC, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->bDynamic;
-}
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DYNAMICMNG
-mng_bool MNG_DECL mng_status_runningevent (mng_handle hHandle)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_RUNNINGEVENT, MNG_LC_START);
-#endif
-
- if ((hHandle == 0) || (((mng_datap)hHandle)->iMagic != MNG_MAGIC))
- return MNG_FALSE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACEX (((mng_datap)hHandle), MNG_FN_STATUS_RUNNINGEVENT, MNG_LC_END);
-#endif
-
- return ((mng_datap)hHandle)->bRunningevent;
-}
-#endif
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
diff --git a/src/3rdparty/libmng/libmng_read.c b/src/3rdparty/libmng/libmng_read.c
deleted file mode 100644
index c922e19a5e..0000000000
--- a/src/3rdparty/libmng/libmng_read.c
+++ /dev/null
@@ -1,1369 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_read.c copyright (c) 2000-2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : Read logic (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of the high-level read logic * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/11/2000 - G.Juyn * */
-/* * - added callback error-reporting support * */
-/* * 0.5.1 - 05/12/2000 - G.Juyn * */
-/* * - changed trace to macro for callback error-reporting * */
-/* * * */
-/* * 0.5.2 - 05/19/2000 - G.Juyn * */
-/* * - cleaned up some code regarding mixed support * */
-/* * 0.5.2 - 05/20/2000 - G.Juyn * */
-/* * - added support for JNG * */
-/* * 0.5.2 - 05/31/2000 - G.Juyn * */
-/* * - fixed up punctuation (contribution by Tim Rowley) * */
-/* * * */
-/* * 0.5.3 - 06/16/2000 - G.Juyn * */
-/* * - changed progressive-display processing * */
-/* * * */
-/* * 0.9.1 - 07/08/2000 - G.Juyn * */
-/* * - changed read-processing for improved I/O-suspension * */
-/* * 0.9.1 - 07/14/2000 - G.Juyn * */
-/* * - changed EOF processing behavior * */
-/* * 0.9.1 - 07/14/2000 - G.Juyn * */
-/* * - changed default readbuffer size from 1024 to 4200 * */
-/* * * */
-/* * 0.9.2 - 07/27/2000 - G.Juyn * */
-/* * - B110320 - fixed GCC warning about mix-sized pointer math * */
-/* * 0.9.2 - 07/31/2000 - G.Juyn * */
-/* * - B110546 - fixed for improperly returning UNEXPECTEDEOF * */
-/* * 0.9.2 - 08/04/2000 - G.Juyn * */
-/* * - B111096 - fixed large-buffer read-suspension * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 08/26/2000 - G.Juyn * */
-/* * - added MAGN chunk * */
-/* * 0.9.3 - 10/11/2000 - G.Juyn * */
-/* * - removed test-MaGN * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added support for JDAA * */
-/* * * */
-/* * 0.9.5 - 01/23/2001 - G.Juyn * */
-/* * - fixed timing-problem with switching framing_modes * */
-/* * * */
-/* * 1.0.4 - 06/22/2002 - G.Juyn * */
-/* * - B495443 - incorrect suspend check in read_databuffer * */
-/* * * */
-/* * 1.0.5 - 07/04/2002 - G.Juyn * */
-/* * - added errorcode for extreme chunk-sizes * */
-/* * 1.0.5 - 07/08/2002 - G.Juyn * */
-/* * - B578572 - removed eMNGma hack (thanks Dimitri!) * */
-/* * 1.0.5 - 07/16/2002 - G.Juyn * */
-/* * - B581625 - large chunks fail with suspension reads * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * - added HLAPI function to copy chunks * */
-/* * 1.0.5 - 09/16/2002 - G.Juyn * */
-/* * - added event handling for dynamic MNG * */
-/* * * */
-/* * 1.0.6 - 05/25/2003 - G.R-P * */
-/* * - added MNG_SKIPCHUNK_cHNK footprint optimizations * */
-/* * 1.0.6 - 07/07/2003 - G.R-P * */
-/* * - added MNG_NO_DELTA_PNG reduction * */
-/* * - skip additional code when MNG_INCLUDE_JNG is not enabled * */
-/* * 1.0.6 - 07/29/2003 - G.R-P * */
-/* * - added conditionals around PAST chunk support * */
-/* * 1.0.6 - 08/17/2003 - G.R-P * */
-/* * - added conditionals around non-VLC chunk support * */
-/* * * */
-/* * 1.0.7 - 03/10/2004 - G.R-P * */
-/* * - added conditionals around openstream/closestream * */
-/* * * */
-/* * 1.0.8 - 04/08/2004 - G.Juyn * */
-/* * - added CRC existence & checking flags * */
-/* * 1.0.8 - 04/11/2004 - G.Juyn * */
-/* * - added data-push mechanisms for specialized decoders * */
-/* * 1.0.8 - 07/06/2004 - G.R-P * */
-/* * - defend against using undefined closestream function * */
-/* * 1.0.8 - 07/28/2004 - G.R-P * */
-/* * - added check for extreme chunk-lengths * */
-/* * * */
-/* * 1.0.9 - 09/16/2004 - G.Juyn * */
-/* * - fixed chunk pushing mechanism * */
-/* * 1.0.9 - 12/05/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_CHUNKINITFREE * */
-/* * 1.0.9 - 12/06/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_CHUNKASSIGN * */
-/* * - added conditional MNG_OPTIMIZE_CHUNKREADER * */
-/* * 1.0.9 - 12/20/2004 - G.Juyn * */
-/* * - cleaned up macro-invocations (thanks to D. Airlie) * */
-/* * 1.0.9 - 12/31/2004 - G.R-P * */
-/* * - removed stray characters from #ifdef directive * */
-/* * * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * * */
-/* ************************************************************************** */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-#include "libmng_memory.h"
-#include "libmng_objects.h"
-#include "libmng_object_prc.h"
-#include "libmng_chunks.h"
-#ifdef MNG_OPTIMIZE_CHUNKREADER
-#include "libmng_chunk_descr.h"
-#endif
-#include "libmng_chunk_prc.h"
-#include "libmng_chunk_io.h"
-#include "libmng_display.h"
-#include "libmng_read.h"
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_READ_PROCS
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_eof (mng_datap pData)
-{
- if (!pData->bEOF) /* haven't closed the stream yet ? */
- {
- pData->bEOF = MNG_TRUE; /* now we do! */
-
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
- if (pData->fClosestream && !pData->fClosestream ((mng_handle)pData))
- {
- MNG_ERROR (pData, MNG_APPIOERROR);
- }
-#endif
- }
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_release_pushdata (mng_datap pData)
-{
- mng_pushdatap pFirst = pData->pFirstpushdata;
- mng_pushdatap pNext = pFirst->pNext;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RELEASE_PUSHDATA, MNG_LC_START);
-#endif
-
- pData->pFirstpushdata = pNext; /* next becomes the first */
-
- if (!pNext) /* no next? => no last! */
- pData->pLastpushdata = MNG_NULL;
- /* buffer owned and release callback defined? */
- if ((pFirst->bOwned) && (pData->fReleasedata))
- pData->fReleasedata ((mng_handle)pData, pFirst->pData, pFirst->iLength);
- else /* otherwise use internal free mechanism */
- MNG_FREEX (pData, pFirst->pData, pFirst->iLength);
- /* and free it */
- MNG_FREEX (pData, pFirst, sizeof(mng_pushdata));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RELEASE_PUSHDATA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_release_pushchunk (mng_datap pData)
-{
- mng_pushdatap pFirst = pData->pFirstpushchunk;
- mng_pushdatap pNext = pFirst->pNext;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RELEASE_PUSHCHUNK, MNG_LC_START);
-#endif
-
- pData->pFirstpushchunk = pNext; /* next becomes the first */
-
- if (!pNext) /* no next? => no last! */
- pData->pLastpushchunk = MNG_NULL;
- /* buffer owned and release callback defined? */
- if ((pFirst->bOwned) && (pData->fReleasedata))
- pData->fReleasedata ((mng_handle)pData, pFirst->pData, pFirst->iLength);
- else /* otherwise use internal free mechanism */
- MNG_FREEX (pData, pFirst->pData, pFirst->iLength);
- /* and free it */
- MNG_FREEX (pData, pFirst, sizeof(mng_pushdata));
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_RELEASE_PUSHCHUNK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode read_data (mng_datap pData,
- mng_uint8p pBuf,
- mng_uint32 iSize,
- mng_uint32 * iRead)
-{
- mng_retcode iRetcode;
- mng_uint32 iTempsize = iSize;
- mng_uint8p pTempbuf = pBuf;
- mng_pushdatap pPush = pData->pFirstpushdata;
- mng_uint32 iPushsize = 0;
- *iRead = 0; /* nothing yet */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_DATA, MNG_LC_START);
-#endif
-
- while (pPush) /* calculate size of pushed data */
- {
- iPushsize += pPush->iRemaining;
- pPush = pPush->pNext;
- }
-
- if (iTempsize <= iPushsize) /* got enough push data? */
- {
- while (iTempsize)
- {
- pPush = pData->pFirstpushdata;
- /* enough data remaining in this buffer? */
- if (pPush->iRemaining <= iTempsize)
- { /* no: then copy what we've got */
- MNG_COPY (pTempbuf, pPush->pDatanext, pPush->iRemaining);
- /* move pointers & lengths */
- pTempbuf += pPush->iRemaining;
- *iRead += pPush->iRemaining;
- iTempsize -= pPush->iRemaining;
- /* release the depleted buffer */
- iRetcode = mng_release_pushdata (pData);
- if (iRetcode)
- return iRetcode;
- }
- else
- { /* copy the needed bytes */
- MNG_COPY (pTempbuf, pPush->pDatanext, iTempsize);
- /* move pointers & lengths */
- pPush->iRemaining -= iTempsize;
- pPush->pDatanext += iTempsize;
- pTempbuf += iTempsize;
- *iRead += iTempsize;
- iTempsize = 0; /* all done!!! */
- }
- }
- }
- else
- {
- mng_uint32 iTempread = 0;
- /* get it from the app then */
- if (!pData->fReaddata (((mng_handle)pData), pTempbuf, iTempsize, &iTempread))
- MNG_ERROR (pData, MNG_APPIOERROR);
-
- *iRead += iTempread;
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_DATA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode read_databuffer (mng_datap pData,
- mng_uint8p pBuf,
- mng_uint8p * pBufnext,
- mng_uint32 iSize,
- mng_uint32 * iRead)
-{
- mng_retcode iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_DATABUFFER, MNG_LC_START);
-#endif
-
- if (pData->bSuspensionmode)
- {
- mng_uint8p pTemp;
- mng_uint32 iTemp;
-
- *iRead = 0; /* let's be negative about the outcome */
-
- if (!pData->pSuspendbuf) /* need to create a suspension buffer ? */
- {
- pData->iSuspendbufsize = MNG_SUSPENDBUFFERSIZE;
- /* so, create it */
- MNG_ALLOC (pData, pData->pSuspendbuf, pData->iSuspendbufsize);
-
- pData->iSuspendbufleft = 0; /* make sure to fill it first time */
- pData->pSuspendbufnext = pData->pSuspendbuf;
- }
- /* more than our buffer can hold ? */
- if (iSize > pData->iSuspendbufsize)
- {
- mng_uint32 iRemain;
-
- if (!*pBufnext) /* first time ? */
- {
- if (pData->iSuspendbufleft) /* do we have some data left ? */
- { /* then copy it */
- MNG_COPY (pBuf, pData->pSuspendbufnext, pData->iSuspendbufleft);
- /* fixup variables */
- *pBufnext = pBuf + pData->iSuspendbufleft;
- pData->pSuspendbufnext = pData->pSuspendbuf;
- pData->iSuspendbufleft = 0;
- }
- else
- {
- *pBufnext = pBuf;
- }
- }
- /* calculate how much to get */
- iRemain = iSize - (mng_uint32)(*pBufnext - pBuf);
- /* let's go get it */
- iRetcode = read_data (pData, *pBufnext, iRemain, &iTemp);
- if (iRetcode)
- return iRetcode;
- /* first read after suspension return 0 means EOF */
- if ((pData->iSuspendpoint) && (iTemp == 0))
- { /* that makes it final */
- mng_retcode iRetcode = mng_process_eof (pData);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* indicate the source is depleted */
- *iRead = iSize - iRemain + iTemp;
- }
- else
- {
- if (iTemp < iRemain) /* suspension required ? */
- {
- *pBufnext = *pBufnext + iTemp;
- pData->bSuspended = MNG_TRUE;
- }
- else
- {
- *iRead = iSize; /* got it all now ! */
- }
- }
- }
- else
- { /* need to read some more ? */
- while ((!pData->bSuspended) && (!pData->bEOF) && (iSize > pData->iSuspendbufleft))
- { /* not enough space left in buffer ? */
- if (pData->iSuspendbufsize - pData->iSuspendbufleft -
- (mng_uint32)(pData->pSuspendbufnext - pData->pSuspendbuf) <
- MNG_SUSPENDREQUESTSIZE)
- {
- if (pData->iSuspendbufleft) /* then lets shift (if there's anything left) */
- MNG_COPY (pData->pSuspendbuf, pData->pSuspendbufnext, pData->iSuspendbufleft);
- /* adjust running pointer */
- pData->pSuspendbufnext = pData->pSuspendbuf;
- }
- /* still not enough room ? */
- if (pData->iSuspendbufsize - pData->iSuspendbufleft < MNG_SUSPENDREQUESTSIZE)
- MNG_ERROR (pData, MNG_INTERNALERROR);
- /* now read some more data */
- pTemp = pData->pSuspendbufnext + pData->iSuspendbufleft;
-
- iRetcode = read_data (pData, pTemp, MNG_SUSPENDREQUESTSIZE, &iTemp);
- if (iRetcode)
- return iRetcode;
- /* adjust fill-counter */
- pData->iSuspendbufleft += iTemp;
- /* first read after suspension returning 0 means EOF */
- if ((pData->iSuspendpoint) && (iTemp == 0))
- { /* that makes it final */
- mng_retcode iRetcode = mng_process_eof (pData);
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- if (pData->iSuspendbufleft) /* return the leftover scraps */
- MNG_COPY (pBuf, pData->pSuspendbufnext, pData->iSuspendbufleft);
- /* and indicate so */
- *iRead = pData->iSuspendbufleft;
- pData->pSuspendbufnext = pData->pSuspendbuf;
- pData->iSuspendbufleft = 0;
- }
- else
- { /* suspension required ? */
- if ((iSize > pData->iSuspendbufleft) && (iTemp < MNG_SUSPENDREQUESTSIZE))
- pData->bSuspended = MNG_TRUE;
-
- }
-
- pData->iSuspendpoint = 0; /* reset it here in case we loop back */
- }
-
- if ((!pData->bSuspended) && (!pData->bEOF))
- { /* return the data ! */
- MNG_COPY (pBuf, pData->pSuspendbufnext, iSize);
-
- *iRead = iSize; /* returned it all */
- /* adjust suspension-buffer variables */
- pData->pSuspendbufnext += iSize;
- pData->iSuspendbufleft -= iSize;
- }
- }
- }
- else
- {
- iRetcode = read_data (pData, (mng_ptr)pBuf, iSize, iRead);
- if (iRetcode)
- return iRetcode;
- if (*iRead == 0) /* suspension required ? */
- pData->bSuspended = MNG_TRUE;
- }
-
- pData->iSuspendpoint = 0; /* safely reset it here ! */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_DATABUFFER, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode process_raw_chunk (mng_datap pData,
- mng_uint8p pBuf,
- mng_uint32 iBuflen)
-{
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- /* the table-idea & binary search code was adapted from
- libpng 1.1.0 (pngread.c) */
- /* NOTE1: the table must remain sorted by chunkname, otherwise the binary
- search will break !!! (ps. watch upper-/lower-case chunknames !!) */
- /* NOTE2: the layout must remain equal to the header part of all the
- chunk-structures (yes, that means even the pNext and pPrev fields;
- it's wasting a bit of space, but hey, the code is a lot easier) */
-
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
- mng_chunk_header mng_chunk_unknown = {MNG_UINT_HUH, mng_init_general, mng_free_unknown,
- mng_read_unknown, mng_write_unknown, mng_assign_unknown, 0, 0, sizeof(mng_unknown_chunk)};
-#else
- mng_chunk_header mng_chunk_unknown = {MNG_UINT_HUH, mng_init_unknown, mng_free_unknown,
- mng_read_unknown, mng_write_unknown, mng_assign_unknown, 0, 0};
-#endif
-
-#ifdef MNG_OPTIMIZE_CHUNKINITFREE
-
- mng_chunk_header mng_chunk_table [] =
- {
-#ifndef MNG_SKIPCHUNK_BACK
- {MNG_UINT_BACK, mng_init_general, mng_free_general, mng_read_back, mng_write_back, mng_assign_general, 0, 0, sizeof(mng_back)},
-#endif
-#ifndef MNG_SKIPCHUNK_BASI
- {MNG_UINT_BASI, mng_init_general, mng_free_general, mng_read_basi, mng_write_basi, mng_assign_general, 0, 0, sizeof(mng_basi)},
-#endif
-#ifndef MNG_SKIPCHUNK_CLIP
- {MNG_UINT_CLIP, mng_init_general, mng_free_general, mng_read_clip, mng_write_clip, mng_assign_general, 0, 0, sizeof(mng_clip)},
-#endif
-#ifndef MNG_SKIPCHUNK_CLON
- {MNG_UINT_CLON, mng_init_general, mng_free_general, mng_read_clon, mng_write_clon, mng_assign_general, 0, 0, sizeof(mng_clon)},
-#endif
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_DBYK
- {MNG_UINT_DBYK, mng_init_general, mng_free_dbyk, mng_read_dbyk, mng_write_dbyk, mng_assign_dbyk, 0, 0, sizeof(mng_dbyk)},
-#endif
-#endif
-#ifndef MNG_SKIPCHUNK_DEFI
- {MNG_UINT_DEFI, mng_init_general, mng_free_general, mng_read_defi, mng_write_defi, mng_assign_general, 0, 0, sizeof(mng_defi)},
-#endif
-#ifndef MNG_NO_DELTA_PNG
- {MNG_UINT_DHDR, mng_init_general, mng_free_general, mng_read_dhdr, mng_write_dhdr, mng_assign_general, 0, 0, sizeof(mng_dhdr)},
-#endif
-#ifndef MNG_SKIPCHUNK_DISC
- {MNG_UINT_DISC, mng_init_general, mng_free_disc, mng_read_disc, mng_write_disc, mng_assign_disc, 0, 0, sizeof(mng_disc)},
-#endif
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_DROP
- {MNG_UINT_DROP, mng_init_general, mng_free_drop, mng_read_drop, mng_write_drop, mng_assign_drop, 0, 0, sizeof(mng_drop)},
-#endif
-#endif
-#ifndef MNG_SKIPCHUNK_LOOP
- {MNG_UINT_ENDL, mng_init_general, mng_free_general, mng_read_endl, mng_write_endl, mng_assign_general, 0, 0, sizeof(mng_endl)},
-#endif
-#ifndef MNG_SKIPCHUNK_FRAM
- {MNG_UINT_FRAM, mng_init_general, mng_free_fram, mng_read_fram, mng_write_fram, mng_assign_fram, 0, 0, sizeof(mng_fram)},
-#endif
- {MNG_UINT_IDAT, mng_init_general, mng_free_idat, mng_read_idat, mng_write_idat, mng_assign_idat, 0, 0, sizeof(mng_idat)}, /* 12-th element! */
- {MNG_UINT_IEND, mng_init_general, mng_free_general, mng_read_iend, mng_write_iend, mng_assign_general, 0, 0, sizeof(mng_iend)},
- {MNG_UINT_IHDR, mng_init_general, mng_free_general, mng_read_ihdr, mng_write_ihdr, mng_assign_general, 0, 0, sizeof(mng_ihdr)},
-#ifndef MNG_NO_DELTA_PNG
-#ifdef MNG_INCLUDE_JNG
- {MNG_UINT_IJNG, mng_init_general, mng_free_general, mng_read_ijng, mng_write_ijng, mng_assign_general, 0, 0, sizeof(mng_ijng)},
-#endif
- {MNG_UINT_IPNG, mng_init_general, mng_free_general, mng_read_ipng, mng_write_ipng, mng_assign_general, 0, 0, sizeof(mng_ipng)},
-#endif
-#ifdef MNG_INCLUDE_JNG
- {MNG_UINT_JDAA, mng_init_general, mng_free_jdaa, mng_read_jdaa, mng_write_jdaa, mng_assign_jdaa, 0, 0, sizeof(mng_jdaa)},
- {MNG_UINT_JDAT, mng_init_general, mng_free_jdat, mng_read_jdat, mng_write_jdat, mng_assign_jdat, 0, 0, sizeof(mng_jdat)},
- {MNG_UINT_JHDR, mng_init_general, mng_free_general, mng_read_jhdr, mng_write_jhdr, mng_assign_general, 0, 0, sizeof(mng_jhdr)},
- {MNG_UINT_JSEP, mng_init_general, mng_free_general, mng_read_jsep, mng_write_jsep, mng_assign_general, 0, 0, sizeof(mng_jsep)},
- {MNG_UINT_JdAA, mng_init_general, mng_free_jdaa, mng_read_jdaa, mng_write_jdaa, mng_assign_jdaa, 0, 0, sizeof(mng_jdaa)},
-#endif
-#ifndef MNG_SKIPCHUNK_LOOP
- {MNG_UINT_LOOP, mng_init_general, mng_free_loop, mng_read_loop, mng_write_loop, mng_assign_loop, 0, 0, sizeof(mng_loop)},
-#endif
-#ifndef MNG_SKIPCHUNK_MAGN
- {MNG_UINT_MAGN, mng_init_general, mng_free_general, mng_read_magn, mng_write_magn, mng_assign_general, 0, 0, sizeof(mng_magn)},
-#endif
- {MNG_UINT_MEND, mng_init_general, mng_free_general, mng_read_mend, mng_write_mend, mng_assign_general, 0, 0, sizeof(mng_mend)},
- {MNG_UINT_MHDR, mng_init_general, mng_free_general, mng_read_mhdr, mng_write_mhdr, mng_assign_general, 0, 0, sizeof(mng_mhdr)},
-#ifndef MNG_SKIPCHUNK_MOVE
- {MNG_UINT_MOVE, mng_init_general, mng_free_general, mng_read_move, mng_write_move, mng_assign_general, 0, 0, sizeof(mng_move)},
-#endif
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_ORDR
- {MNG_UINT_ORDR, mng_init_general, mng_free_ordr, mng_read_ordr, mng_write_ordr, mng_assign_ordr, 0, 0, sizeof(mng_ordr)},
-#endif
-#endif
-#ifndef MNG_SKIPCHUNK_PAST
- {MNG_UINT_PAST, mng_init_general, mng_free_past, mng_read_past, mng_write_past, mng_assign_past, 0, 0, sizeof(mng_past)},
-#endif
- {MNG_UINT_PLTE, mng_init_general, mng_free_general, mng_read_plte, mng_write_plte, mng_assign_general, 0, 0, sizeof(mng_plte)},
-#ifndef MNG_NO_DELTA_PNG
- {MNG_UINT_PPLT, mng_init_general, mng_free_general, mng_read_pplt, mng_write_pplt, mng_assign_general, 0, 0, sizeof(mng_pplt)},
- {MNG_UINT_PROM, mng_init_general, mng_free_general, mng_read_prom, mng_write_prom, mng_assign_general, 0, 0, sizeof(mng_prom)},
-#endif
-#ifndef MNG_SKIPCHUNK_SAVE
- {MNG_UINT_SAVE, mng_init_general, mng_free_save, mng_read_save, mng_write_save, mng_assign_save, 0, 0, sizeof(mng_save)},
-#endif
-#ifndef MNG_SKIPCHUNK_SEEK
- {MNG_UINT_SEEK, mng_init_general, mng_free_seek, mng_read_seek, mng_write_seek, mng_assign_seek, 0, 0, sizeof(mng_seek)},
-#endif
-#ifndef MNG_SKIPCHUNK_SHOW
- {MNG_UINT_SHOW, mng_init_general, mng_free_general, mng_read_show, mng_write_show, mng_assign_general, 0, 0, sizeof(mng_show)},
-#endif
-#ifndef MNG_SKIPCHUNK_TERM
- {MNG_UINT_TERM, mng_init_general, mng_free_general, mng_read_term, mng_write_term, mng_assign_general, 0, 0, sizeof(mng_term)},
-#endif
-#ifndef MNG_SKIPCHUNK_bKGD
- {MNG_UINT_bKGD, mng_init_general, mng_free_general, mng_read_bkgd, mng_write_bkgd, mng_assign_general, 0, 0, sizeof(mng_bkgd)},
-#endif
-#ifndef MNG_SKIPCHUNK_cHRM
- {MNG_UINT_cHRM, mng_init_general, mng_free_general, mng_read_chrm, mng_write_chrm, mng_assign_general, 0, 0, sizeof(mng_chrm)},
-#endif
-#ifndef MNG_SKIPCHUNK_eXPI
- {MNG_UINT_eXPI, mng_init_general, mng_free_expi, mng_read_expi, mng_write_expi, mng_assign_expi, 0, 0, sizeof(mng_expi)},
-#endif
-#ifndef MNG_SKIPCHUNK_evNT
- {MNG_UINT_evNT, mng_init_general, mng_free_evnt, mng_read_evnt, mng_write_evnt, mng_assign_evnt, 0, 0, sizeof(mng_evnt)},
-#endif
-#ifndef MNG_SKIPCHUNK_fPRI
- {MNG_UINT_fPRI, mng_init_general, mng_free_general, mng_read_fpri, mng_write_fpri, mng_assign_general, 0, 0, sizeof(mng_fpri)},
-#endif
-#ifndef MNG_SKIPCHUNK_gAMA
- {MNG_UINT_gAMA, mng_init_general, mng_free_general, mng_read_gama, mng_write_gama, mng_assign_general, 0, 0, sizeof(mng_gama)},
-#endif
-#ifndef MNG_SKIPCHUNK_hIST
- {MNG_UINT_hIST, mng_init_general, mng_free_general, mng_read_hist, mng_write_hist, mng_assign_general, 0, 0, sizeof(mng_hist)},
-#endif
-#ifndef MNG_SKIPCHUNK_iCCP
- {MNG_UINT_iCCP, mng_init_general, mng_free_iccp, mng_read_iccp, mng_write_iccp, mng_assign_iccp, 0, 0, sizeof(mng_iccp)},
-#endif
-#ifndef MNG_SKIPCHUNK_iTXt
- {MNG_UINT_iTXt, mng_init_general, mng_free_itxt, mng_read_itxt, mng_write_itxt, mng_assign_itxt, 0, 0, sizeof(mng_itxt)},
-#endif
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- {MNG_UINT_mpNG, mng_init_general, mng_free_mpng, mng_read_mpng, mng_write_mpng, mng_assign_mpng, 0, 0, sizeof(mng_mpng)},
-#endif
-#ifndef MNG_SKIPCHUNK_nEED
- {MNG_UINT_nEED, mng_init_general, mng_free_need, mng_read_need, mng_write_need, mng_assign_need, 0, 0, sizeof(mng_need)},
-#endif
-/* TODO: {MNG_UINT_oFFs, 0, 0, 0, 0, 0, 0}, */
-/* TODO: {MNG_UINT_pCAL, 0, 0, 0, 0, 0, 0}, */
-#ifndef MNG_SKIPCHUNK_pHYg
- {MNG_UINT_pHYg, mng_init_general, mng_free_general, mng_read_phyg, mng_write_phyg, mng_assign_general, 0, 0, sizeof(mng_phyg)},
-#endif
-#ifndef MNG_SKIPCHUNK_pHYs
- {MNG_UINT_pHYs, mng_init_general, mng_free_general, mng_read_phys, mng_write_phys, mng_assign_general, 0, 0, sizeof(mng_phys)},
-#endif
-#ifndef MNG_SKIPCHUNK_sBIT
- {MNG_UINT_sBIT, mng_init_general, mng_free_general, mng_read_sbit, mng_write_sbit, mng_assign_general, 0, 0, sizeof(mng_sbit)},
-#endif
-/* TODO: {MNG_UINT_sCAL, 0, 0, 0, 0, 0, 0}, */
-#ifndef MNG_SKIPCHUNK_sPLT
- {MNG_UINT_sPLT, mng_init_general, mng_free_splt, mng_read_splt, mng_write_splt, mng_assign_splt, 0, 0, sizeof(mng_splt)},
-#endif
- {MNG_UINT_sRGB, mng_init_general, mng_free_general, mng_read_srgb, mng_write_srgb, mng_assign_general, 0, 0, sizeof(mng_srgb)},
-#ifndef MNG_SKIPCHUNK_tEXt
- {MNG_UINT_tEXt, mng_init_general, mng_free_text, mng_read_text, mng_write_text, mng_assign_text, 0, 0, sizeof(mng_text)},
-#endif
-#ifndef MNG_SKIPCHUNK_tIME
- {MNG_UINT_tIME, mng_init_general, mng_free_general, mng_read_time, mng_write_time, mng_assign_general, 0, 0, sizeof(mng_time)},
-#endif
- {MNG_UINT_tRNS, mng_init_general, mng_free_general, mng_read_trns, mng_write_trns, mng_assign_general, 0, 0, sizeof(mng_trns)},
-#ifndef MNG_SKIPCHUNK_zTXt
- {MNG_UINT_zTXt, mng_init_general, mng_free_ztxt, mng_read_ztxt, mng_write_ztxt, mng_assign_ztxt, 0, 0, sizeof(mng_ztxt)},
-#endif
- };
-
-#else /* MNG_OPTIMIZE_CHUNKINITFREE */
-
- mng_chunk_header mng_chunk_table [] =
- {
-#ifndef MNG_SKIPCHUNK_BACK
- {MNG_UINT_BACK, mng_init_back, mng_free_back, mng_read_back, mng_write_back, mng_assign_back, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_BASI
- {MNG_UINT_BASI, mng_init_basi, mng_free_basi, mng_read_basi, mng_write_basi, mng_assign_basi, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_CLIP
- {MNG_UINT_CLIP, mng_init_clip, mng_free_clip, mng_read_clip, mng_write_clip, mng_assign_clip, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_CLON
- {MNG_UINT_CLON, mng_init_clon, mng_free_clon, mng_read_clon, mng_write_clon, mng_assign_clon, 0, 0},
-#endif
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_DBYK
- {MNG_UINT_DBYK, mng_init_dbyk, mng_free_dbyk, mng_read_dbyk, mng_write_dbyk, mng_assign_dbyk, 0, 0},
-#endif
-#endif
-#ifndef MNG_SKIPCHUNK_DEFI
- {MNG_UINT_DEFI, mng_init_defi, mng_free_defi, mng_read_defi, mng_write_defi, mng_assign_defi, 0, 0},
-#endif
-#ifndef MNG_NO_DELTA_PNG
- {MNG_UINT_DHDR, mng_init_dhdr, mng_free_dhdr, mng_read_dhdr, mng_write_dhdr, mng_assign_dhdr, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_DISC
- {MNG_UINT_DISC, mng_init_disc, mng_free_disc, mng_read_disc, mng_write_disc, mng_assign_disc, 0, 0},
-#endif
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_DROP
- {MNG_UINT_DROP, mng_init_drop, mng_free_drop, mng_read_drop, mng_write_drop, mng_assign_drop, 0, 0},
-#endif
-#endif
-#ifndef MNG_SKIPCHUNK_LOOP
- {MNG_UINT_ENDL, mng_init_endl, mng_free_endl, mng_read_endl, mng_write_endl, mng_assign_endl, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_FRAM
- {MNG_UINT_FRAM, mng_init_fram, mng_free_fram, mng_read_fram, mng_write_fram, mng_assign_fram, 0, 0},
-#endif
- {MNG_UINT_IDAT, mng_init_idat, mng_free_idat, mng_read_idat, mng_write_idat, mng_assign_idat, 0, 0}, /* 12-th element! */
- {MNG_UINT_IEND, mng_init_iend, mng_free_iend, mng_read_iend, mng_write_iend, mng_assign_iend, 0, 0},
- {MNG_UINT_IHDR, mng_init_ihdr, mng_free_ihdr, mng_read_ihdr, mng_write_ihdr, mng_assign_ihdr, 0, 0},
-#ifndef MNG_NO_DELTA_PNG
-#ifdef MNG_INCLUDE_JNG
- {MNG_UINT_IJNG, mng_init_ijng, mng_free_ijng, mng_read_ijng, mng_write_ijng, mng_assign_ijng, 0, 0},
-#endif
- {MNG_UINT_IPNG, mng_init_ipng, mng_free_ipng, mng_read_ipng, mng_write_ipng, mng_assign_ipng, 0, 0},
-#endif
-#ifdef MNG_INCLUDE_JNG
- {MNG_UINT_JDAA, mng_init_jdaa, mng_free_jdaa, mng_read_jdaa, mng_write_jdaa, mng_assign_jdaa, 0, 0},
- {MNG_UINT_JDAT, mng_init_jdat, mng_free_jdat, mng_read_jdat, mng_write_jdat, mng_assign_jdat, 0, 0},
- {MNG_UINT_JHDR, mng_init_jhdr, mng_free_jhdr, mng_read_jhdr, mng_write_jhdr, mng_assign_jhdr, 0, 0},
- {MNG_UINT_JSEP, mng_init_jsep, mng_free_jsep, mng_read_jsep, mng_write_jsep, mng_assign_jsep, 0, 0},
- {MNG_UINT_JdAA, mng_init_jdaa, mng_free_jdaa, mng_read_jdaa, mng_write_jdaa, mng_assign_jdaa, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_LOOP
- {MNG_UINT_LOOP, mng_init_loop, mng_free_loop, mng_read_loop, mng_write_loop, mng_assign_loop, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_MAGN
- {MNG_UINT_MAGN, mng_init_magn, mng_free_magn, mng_read_magn, mng_write_magn, mng_assign_magn, 0, 0},
-#endif
- {MNG_UINT_MEND, mng_init_mend, mng_free_mend, mng_read_mend, mng_write_mend, mng_assign_mend, 0, 0},
- {MNG_UINT_MHDR, mng_init_mhdr, mng_free_mhdr, mng_read_mhdr, mng_write_mhdr, mng_assign_mhdr, 0, 0},
-#ifndef MNG_SKIPCHUNK_MOVE
- {MNG_UINT_MOVE, mng_init_move, mng_free_move, mng_read_move, mng_write_move, mng_assign_move, 0, 0},
-#endif
-#ifndef MNG_NO_DELTA_PNG
-#ifndef MNG_SKIPCHUNK_ORDR
- {MNG_UINT_ORDR, mng_init_ordr, mng_free_ordr, mng_read_ordr, mng_write_ordr, mng_assign_ordr, 0, 0},
-#endif
-#endif
-#ifndef MNG_SKIPCHUNK_PAST
- {MNG_UINT_PAST, mng_init_past, mng_free_past, mng_read_past, mng_write_past, mng_assign_past, 0, 0},
-#endif
- {MNG_UINT_PLTE, mng_init_plte, mng_free_plte, mng_read_plte, mng_write_plte, mng_assign_plte, 0, 0},
-#ifndef MNG_NO_DELTA_PNG
- {MNG_UINT_PPLT, mng_init_pplt, mng_free_pplt, mng_read_pplt, mng_write_pplt, mng_assign_pplt, 0, 0},
- {MNG_UINT_PROM, mng_init_prom, mng_free_prom, mng_read_prom, mng_write_prom, mng_assign_prom, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_SAVE
- {MNG_UINT_SAVE, mng_init_save, mng_free_save, mng_read_save, mng_write_save, mng_assign_save, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_SEEK
- {MNG_UINT_SEEK, mng_init_seek, mng_free_seek, mng_read_seek, mng_write_seek, mng_assign_seek, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_SHOW
- {MNG_UINT_SHOW, mng_init_show, mng_free_show, mng_read_show, mng_write_show, mng_assign_show, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_TERM
- {MNG_UINT_TERM, mng_init_term, mng_free_term, mng_read_term, mng_write_term, mng_assign_term, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_bKGD
- {MNG_UINT_bKGD, mng_init_bkgd, mng_free_bkgd, mng_read_bkgd, mng_write_bkgd, mng_assign_bkgd, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_cHRM
- {MNG_UINT_cHRM, mng_init_chrm, mng_free_chrm, mng_read_chrm, mng_write_chrm, mng_assign_chrm, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_eXPI
- {MNG_UINT_eXPI, mng_init_expi, mng_free_expi, mng_read_expi, mng_write_expi, mng_assign_expi, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_evNT
- {MNG_UINT_evNT, mng_init_evnt, mng_free_evnt, mng_read_evnt, mng_write_evnt, mng_assign_evnt, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_fPRI
- {MNG_UINT_fPRI, mng_init_fpri, mng_free_fpri, mng_read_fpri, mng_write_fpri, mng_assign_fpri, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_gAMA
- {MNG_UINT_gAMA, mng_init_gama, mng_free_gama, mng_read_gama, mng_write_gama, mng_assign_gama, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_hIST
- {MNG_UINT_hIST, mng_init_hist, mng_free_hist, mng_read_hist, mng_write_hist, mng_assign_hist, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_iCCP
- {MNG_UINT_iCCP, mng_init_iccp, mng_free_iccp, mng_read_iccp, mng_write_iccp, mng_assign_iccp, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_iTXt
- {MNG_UINT_iTXt, mng_init_itxt, mng_free_itxt, mng_read_itxt, mng_write_itxt, mng_assign_itxt, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_nEED
- {MNG_UINT_nEED, mng_init_need, mng_free_need, mng_read_need, mng_write_need, mng_assign_need, 0, 0},
-#endif
-/* TODO: {MNG_UINT_oFFs, 0, 0, 0, 0, 0, 0}, */
-/* TODO: {MNG_UINT_pCAL, 0, 0, 0, 0, 0, 0}, */
-#ifndef MNG_SKIPCHUNK_pHYg
- {MNG_UINT_pHYg, mng_init_phyg, mng_free_phyg, mng_read_phyg, mng_write_phyg, mng_assign_phyg, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_pHYs
- {MNG_UINT_pHYs, mng_init_phys, mng_free_phys, mng_read_phys, mng_write_phys, mng_assign_phys, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_sBIT
- {MNG_UINT_sBIT, mng_init_sbit, mng_free_sbit, mng_read_sbit, mng_write_sbit, mng_assign_sbit, 0, 0},
-#endif
-/* TODO: {MNG_UINT_sCAL, 0, 0, 0, 0, 0, 0}, */
-#ifndef MNG_SKIPCHUNK_sPLT
- {MNG_UINT_sPLT, mng_init_splt, mng_free_splt, mng_read_splt, mng_write_splt, mng_assign_splt, 0, 0},
-#endif
- {MNG_UINT_sRGB, mng_init_srgb, mng_free_srgb, mng_read_srgb, mng_write_srgb, mng_assign_srgb, 0, 0},
-#ifndef MNG_SKIPCHUNK_tEXt
- {MNG_UINT_tEXt, mng_init_text, mng_free_text, mng_read_text, mng_write_text, mng_assign_text, 0, 0},
-#endif
-#ifndef MNG_SKIPCHUNK_tIME
- {MNG_UINT_tIME, mng_init_time, mng_free_time, mng_read_time, mng_write_time, mng_assign_time, 0, 0},
-#endif
- {MNG_UINT_tRNS, mng_init_trns, mng_free_trns, mng_read_trns, mng_write_trns, mng_assign_trns, 0, 0},
-#ifndef MNG_SKIPCHUNK_zTXt
- {MNG_UINT_zTXt, mng_init_ztxt, mng_free_ztxt, mng_read_ztxt, mng_write_ztxt, mng_assign_ztxt, 0, 0},
-#endif
- };
-
-#endif /* MNG_OPTIMIZE_CHUNKINITFREE */
-
- /* binary search variables */
- mng_int32 iTop, iLower, iUpper, iMiddle;
- mng_chunk_headerp pEntry; /* pointer to found entry */
-#else
- mng_chunk_header sEntry; /* temp chunk-header */
-#endif /* MNG_OPTIMIZE_CHUNKREADER */
-
- mng_chunkid iChunkname; /* the chunk's tag */
- mng_chunkp pChunk; /* chunk structure (if #define MNG_STORE_CHUNKS) */
- mng_retcode iRetcode; /* temporary error-code */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_RAW_CHUNK, MNG_LC_START);
-#endif
- /* reset timer indicator on read-cycle */
- if ((pData->bReading) && (!pData->bDisplaying))
- pData->bTimerset = MNG_FALSE;
- /* get the chunkname */
- iChunkname = (mng_chunkid)(mng_get_uint32 (pBuf));
-
- pBuf += sizeof (mng_chunkid); /* adjust the buffer */
- iBuflen -= sizeof (mng_chunkid);
- pChunk = 0;
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- /* determine max index of table */
- iTop = (sizeof (mng_chunk_table) / sizeof (mng_chunk_table [0])) - 1;
-
- /* binary search; with 54 chunks, worst-case is 7 comparisons */
- iLower = 0;
-#ifndef MNG_NO_DELTA_PNG
- iMiddle = 11; /* start with the IDAT entry */
-#else
- iMiddle = 8;
-#endif
- iUpper = iTop;
- pEntry = 0; /* no goods yet! */
-
- do /* the binary search itself */
- {
- if (mng_chunk_table [iMiddle].iChunkname < iChunkname)
- iLower = iMiddle + 1;
- else if (mng_chunk_table [iMiddle].iChunkname > iChunkname)
- iUpper = iMiddle - 1;
- else
- {
- pEntry = &mng_chunk_table [iMiddle];
- break;
- }
-
- iMiddle = (iLower + iUpper) >> 1;
- }
- while (iLower <= iUpper);
-
- if (!pEntry) /* unknown chunk ? */
- pEntry = &mng_chunk_unknown; /* make it so! */
-
-#else /* MNG_OPTIMIZE_CHUNKREADER */
-
- mng_get_chunkheader (iChunkname, &sEntry);
-
-#endif /* MNG_OPTIMIZE_CHUNKREADER */
-
- pData->iChunkname = iChunkname; /* keep track of where we are */
- pData->iChunkseq++;
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- if (pEntry->fRead) /* read-callback available ? */
- {
- iRetcode = pEntry->fRead (pData, pEntry, iBuflen, (mng_ptr)pBuf, &pChunk);
-
- if (!iRetcode) /* everything oke ? */
- { /* remember unknown chunk's id */
- if ((pChunk) && (pEntry->iChunkname == MNG_UINT_HUH))
- ((mng_chunk_headerp)pChunk)->iChunkname = iChunkname;
- }
- }
-#else /* MNG_OPTIMIZE_CHUNKREADER */
- if (sEntry.fRead) /* read-callback available ? */
- {
- iRetcode = sEntry.fRead (pData, &sEntry, iBuflen, (mng_ptr)pBuf, &pChunk);
-
-#ifndef MNG_OPTIMIZE_CHUNKREADER
- if (!iRetcode) /* everything oke ? */
- { /* remember unknown chunk's id */
- if ((pChunk) && (sEntry.iChunkname == MNG_UINT_HUH))
- ((mng_chunk_headerp)pChunk)->iChunkname = iChunkname;
- }
-#endif
- }
-#endif /* MNG_OPTIMIZE_CHUNKREADER */
- else
- iRetcode = MNG_NOERROR;
-
- if (pChunk) /* store this chunk ? */
- mng_add_chunk (pData, pChunk); /* do it */
-
-#ifdef MNG_INCLUDE_JNG /* implicit EOF ? */
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR) && (!pData->bHasJHDR))
-#else
- if ((!pData->bHasMHDR) && (!pData->bHasIHDR))
-#endif
- iRetcode = mng_process_eof (pData);/* then do some EOF processing */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_PROCESS_RAW_CHUNK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode check_chunk_crc (mng_datap pData,
- mng_uint8p pBuf,
- mng_uint32 iBuflen)
-{
- mng_uint32 iCrc; /* calculated CRC */
- mng_bool bDiscard = MNG_FALSE;
- mng_retcode iRetcode = MNG_NOERROR;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_CHUNK_CRC, MNG_LC_START);
-#endif
-
- if (pData->iCrcmode & MNG_CRC_INPUT) /* crc included ? */
- {
- mng_bool bCritical = (mng_bool)((*pBuf & 0x20) == 0);
- mng_uint32 iL = iBuflen - (mng_uint32)(sizeof (iCrc));
-
- if (((bCritical ) && (pData->iCrcmode & MNG_CRC_CRITICAL )) ||
- ((!bCritical) && (pData->iCrcmode & MNG_CRC_ANCILLARY)))
- { /* calculate the crc */
- iCrc = mng_crc (pData, pBuf, iL);
- /* and check it */
- if (!(iCrc == mng_get_uint32 (pBuf + iL)))
- {
- mng_bool bWarning = MNG_FALSE;
- mng_bool bError = MNG_FALSE;
-
- if (bCritical)
- {
- switch (pData->iCrcmode & MNG_CRC_CRITICAL)
- {
- case MNG_CRC_CRITICAL_WARNING : { bWarning = MNG_TRUE; break; }
- case MNG_CRC_CRITICAL_ERROR : { bError = MNG_TRUE; break; }
- }
- }
- else
- {
- switch (pData->iCrcmode & MNG_CRC_ANCILLARY)
- {
- case MNG_CRC_ANCILLARY_DISCARD : { bDiscard = MNG_TRUE; break; }
- case MNG_CRC_ANCILLARY_WARNING : { bWarning = MNG_TRUE; break; }
- case MNG_CRC_ANCILLARY_ERROR : { bError = MNG_TRUE; break; }
- }
- }
-
- if (bWarning)
- MNG_WARNING (pData, MNG_INVALIDCRC);
- if (bError)
- MNG_ERROR (pData, MNG_INVALIDCRC);
- }
- }
-
- if (!bDiscard) /* still processing ? */
- iRetcode = process_raw_chunk (pData, pBuf, iL);
- }
- else
- { /* no crc => straight onto processing */
- iRetcode = process_raw_chunk (pData, pBuf, iBuflen);
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_CHUNK_CRC, MNG_LC_END);
-#endif
-
- return iRetcode;
-}
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode read_chunk (mng_datap pData)
-{
- mng_uint32 iBufmax = pData->iReadbufsize;
- mng_uint8p pBuf = pData->pReadbuf;
- mng_uint32 iBuflen = 0; /* number of bytes requested */
- mng_uint32 iRead = 0; /* number of bytes read */
- mng_retcode iRetcode = MNG_NOERROR;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_CHUNK, MNG_LC_START);
-#endif
-
-#ifdef MNG_SUPPORT_DISPLAY
- if (pData->pCurraniobj) /* processing an animation object ? */
- {
- do /* process it then */
- {
- iRetcode = ((mng_object_headerp)pData->pCurraniobj)->fProcess (pData, pData->pCurraniobj);
- /* refresh needed ? */
-/* if ((!iRetcode) && (!pData->bTimerset) && (pData->bNeedrefresh))
- iRetcode = display_progressive_refresh (pData, 1); */
- /* can we advance to next object ? */
- if ((!iRetcode) && (pData->pCurraniobj) &&
- (!pData->bTimerset) && (!pData->bSectionwait))
- { /* reset timer indicator on read-cycle */
- if ((pData->bReading) && (!pData->bDisplaying))
- pData->bTimerset = MNG_FALSE;
-
- pData->pCurraniobj = ((mng_object_headerp)pData->pCurraniobj)->pNext;
- /* TERM processing to be done ? */
- if ((!pData->pCurraniobj) && (pData->bHasTERM) && (!pData->bHasMHDR))
- iRetcode = mng_process_display_mend (pData);
- }
- } /* until error or a break or no more objects */
- while ((!iRetcode) && (pData->pCurraniobj) &&
- (!pData->bTimerset) && (!pData->bSectionwait) && (!pData->bFreezing));
- }
- else
- {
- if (pData->iBreakpoint) /* do we need to finish something first ? */
- {
- switch (pData->iBreakpoint) /* return to broken display routine */
- {
-#ifndef MNG_SKIPCHUNK_FRAM
- case 1 : { iRetcode = mng_process_display_fram2 (pData); break; }
-#endif
- case 2 : { iRetcode = mng_process_display_ihdr (pData); break; }
-#ifndef MNG_SKIPCHUNK_SHOW
- case 3 : ; /* same as 4 !!! */
- case 4 : { iRetcode = mng_process_display_show (pData); break; }
-#endif
-#ifndef MNG_SKIPCHUNK_CLON
- case 5 : { iRetcode = mng_process_display_clon2 (pData); break; }
-#endif
-#ifdef MNG_INCLUDE_JNG
- case 7 : { iRetcode = mng_process_display_jhdr (pData); break; }
-#endif
- case 6 : ; /* same as 8 !!! */
- case 8 : { iRetcode = mng_process_display_iend (pData); break; }
-#ifndef MNG_SKIPCHUNK_MAGN
- case 9 : { iRetcode = mng_process_display_magn2 (pData); break; }
-#endif
- case 10 : { iRetcode = mng_process_display_mend2 (pData); break; }
-#ifndef MNG_SKIPCHUNK_PAST
- case 11 : { iRetcode = mng_process_display_past2 (pData); break; }
-#endif
- }
- }
- }
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#endif /* MNG_SUPPORT_DISPLAY */
- /* can we continue processing now, or do we */
- /* need to wait for the timer to finish (again) ? */
-#ifdef MNG_SUPPORT_DISPLAY
- if ((!pData->bTimerset) && (!pData->bSectionwait) && (!pData->bEOF))
-#else
- if (!pData->bEOF)
-#endif
- {
-#ifdef MNG_SUPPORT_DISPLAY
- /* freezing in progress ? */
- if ((pData->bFreezing) && (pData->iSuspendpoint == 0))
- pData->bRunning = MNG_FALSE; /* then this is the right moment to do it */
-#endif
-
- if (pData->iSuspendpoint <= 2)
- {
- iBuflen = sizeof (mng_uint32); /* read length */
- iRetcode = read_databuffer (pData, pBuf, &pData->pReadbufnext, iBuflen, &iRead);
-
- if (iRetcode) /* bail on errors */
- return iRetcode;
-
- if (pData->bSuspended) /* suspended ? */
- pData->iSuspendpoint = 2;
- else /* save the length */
- {
- pData->iChunklen = mng_get_uint32 (pBuf);
- if (pData->iChunklen > 0x7ffffff)
- return MNG_INVALIDLENGTH;
- }
-
- }
-
- if (!pData->bSuspended) /* still going ? */
- { /* previously suspended or not eof ? */
- if ((pData->iSuspendpoint > 2) || (iRead == iBuflen))
- { /* determine length chunkname + data (+ crc) */
- if (pData->iCrcmode & MNG_CRC_INPUT)
- iBuflen = pData->iChunklen + (mng_uint32)(sizeof (mng_chunkid) + sizeof (mng_uint32));
- else
- iBuflen = pData->iChunklen + (mng_uint32)(sizeof (mng_chunkid));
-
- /* do we have enough data in the current push buffer ? */
- if ((pData->pFirstpushdata) && (iBuflen <= pData->pFirstpushdata->iRemaining))
- {
- mng_pushdatap pPush = pData->pFirstpushdata;
- pBuf = pPush->pDatanext;
- pPush->pDatanext += iBuflen;
- pPush->iRemaining -= iBuflen;
- pData->iSuspendpoint = 0; /* safely reset this here ! */
-
- iRetcode = check_chunk_crc (pData, pBuf, iBuflen);
- if (iRetcode)
- return iRetcode;
-
- if (!pPush->iRemaining) /* buffer depleted? then release it */
- iRetcode = mng_release_pushdata (pData);
- }
- else
- {
- if (iBuflen < iBufmax) /* does it fit in default buffer ? */
- { /* note that we don't use the full size
- so there's always a zero-byte at the
- very end !!! */
- iRetcode = read_databuffer (pData, pBuf, &pData->pReadbufnext, iBuflen, &iRead);
- if (iRetcode) /* bail on errors */
- return iRetcode;
-
- if (pData->bSuspended) /* suspended ? */
- pData->iSuspendpoint = 3;
- else
- {
- if (iRead != iBuflen) /* did we get all the data ? */
- MNG_ERROR (pData, MNG_UNEXPECTEDEOF);
- iRetcode = check_chunk_crc (pData, pBuf, iBuflen);
- }
- }
- else
- {
- if (iBuflen > 16777216) /* is the length incredible? */
- MNG_ERROR (pData, MNG_IMPROBABLELENGTH);
-
- if (!pData->iSuspendpoint) /* create additional large buffer ? */
- { /* again reserve space for the last zero-byte */
- pData->iLargebufsize = iBuflen + 1;
- pData->pLargebufnext = MNG_NULL;
- MNG_ALLOC (pData, pData->pLargebuf, pData->iLargebufsize);
- }
-
- iRetcode = read_databuffer (pData, pData->pLargebuf, &pData->pLargebufnext, iBuflen, &iRead);
- if (iRetcode)
- return iRetcode;
-
- if (pData->bSuspended) /* suspended ? */
- pData->iSuspendpoint = 4;
- else
- {
- if (iRead != iBuflen) /* did we get all the data ? */
- MNG_ERROR (pData, MNG_UNEXPECTEDEOF);
- iRetcode = check_chunk_crc (pData, pData->pLargebuf, iBuflen);
- /* cleanup additional large buffer */
- MNG_FREE (pData, pData->pLargebuf, pData->iLargebufsize);
- }
- }
- }
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- }
- else
- { /* that's final */
- iRetcode = mng_process_eof (pData);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
- if ((iRead != 0) || /* did we get an unexpected eof ? */
-#ifdef MNG_INCLUDE_JNG
- (pData->bHasIHDR || pData->bHasMHDR || pData->bHasJHDR))
-#else
- (pData->bHasIHDR || pData->bHasMHDR))
-#endif
- MNG_ERROR (pData, MNG_UNEXPECTEDEOF);
- }
- }
- }
-
-#ifdef MNG_SUPPORT_DISPLAY /* refresh needed ? */
- if ((!pData->bTimerset) && (!pData->bSuspended) && (pData->bNeedrefresh))
- {
- iRetcode = mng_display_progressive_refresh (pData, 1);
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_CHUNK, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-MNG_LOCAL mng_retcode process_pushedchunk (mng_datap pData)
-{
- mng_pushdatap pPush;
- mng_retcode iRetcode = MNG_NOERROR;
-
-#ifdef MNG_SUPPORT_DISPLAY
- if (pData->pCurraniobj) /* processing an animation object ? */
- {
- do /* process it then */
- {
- iRetcode = ((mng_object_headerp)pData->pCurraniobj)->fProcess (pData, pData->pCurraniobj);
- /* refresh needed ? */
-/* if ((!iRetcode) && (!pData->bTimerset) && (pData->bNeedrefresh))
- iRetcode = display_progressive_refresh (pData, 1); */
- /* can we advance to next object ? */
- if ((!iRetcode) && (pData->pCurraniobj) &&
- (!pData->bTimerset) && (!pData->bSectionwait))
- { /* reset timer indicator on read-cycle */
- if ((pData->bReading) && (!pData->bDisplaying))
- pData->bTimerset = MNG_FALSE;
-
- pData->pCurraniobj = ((mng_object_headerp)pData->pCurraniobj)->pNext;
- /* TERM processing to be done ? */
- if ((!pData->pCurraniobj) && (pData->bHasTERM) && (!pData->bHasMHDR))
- iRetcode = mng_process_display_mend (pData);
- }
- } /* until error or a break or no more objects */
- while ((!iRetcode) && (pData->pCurraniobj) &&
- (!pData->bTimerset) && (!pData->bSectionwait) && (!pData->bFreezing));
- }
- else
- {
- if (pData->iBreakpoint) /* do we need to finish something first ? */
- {
- switch (pData->iBreakpoint) /* return to broken display routine */
- {
-#ifndef MNG_SKIPCHUNK_FRAM
- case 1 : { iRetcode = mng_process_display_fram2 (pData); break; }
-#endif
- case 2 : { iRetcode = mng_process_display_ihdr (pData); break; }
-#ifndef MNG_SKIPCHUNK_SHOW
- case 3 : ; /* same as 4 !!! */
- case 4 : { iRetcode = mng_process_display_show (pData); break; }
-#endif
-#ifndef MNG_SKIPCHUNK_CLON
- case 5 : { iRetcode = mng_process_display_clon2 (pData); break; }
-#endif
-#ifdef MNG_INCLUDE_JNG
- case 7 : { iRetcode = mng_process_display_jhdr (pData); break; }
-#endif
- case 6 : ; /* same as 8 !!! */
- case 8 : { iRetcode = mng_process_display_iend (pData); break; }
-#ifndef MNG_SKIPCHUNK_MAGN
- case 9 : { iRetcode = mng_process_display_magn2 (pData); break; }
-#endif
- case 10 : { iRetcode = mng_process_display_mend2 (pData); break; }
-#ifndef MNG_SKIPCHUNK_PAST
- case 11 : { iRetcode = mng_process_display_past2 (pData); break; }
-#endif
- }
- }
- }
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
-
-#endif /* MNG_SUPPORT_DISPLAY */
- /* can we continue processing now, or do we */
- /* need to wait for the timer to finish (again) ? */
-#ifdef MNG_SUPPORT_DISPLAY
- if ((!pData->bTimerset) && (!pData->bSectionwait) && (!pData->bEOF))
-#else
- if (!pData->bEOF)
-#endif
- {
- pData->iSuspendpoint = 0; /* safely reset it here ! */
- pPush = pData->pFirstpushchunk;
-
- iRetcode = process_raw_chunk (pData, pPush->pData, pPush->iLength);
- if (iRetcode)
- return iRetcode;
-
-#ifdef MNG_SUPPORT_DISPLAY /* refresh needed ? */
- if ((!pData->bTimerset) && (!pData->bSuspended) && (pData->bNeedrefresh))
- {
- iRetcode = mng_display_progressive_refresh (pData, 1);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#endif
- }
-
- return mng_release_pushchunk (pData);
-}
-
-/* ************************************************************************** */
-
-mng_retcode mng_read_graphic (mng_datap pData)
-{
- mng_uint32 iBuflen; /* number of bytes requested */
- mng_uint32 iRead; /* number of bytes read */
- mng_retcode iRetcode; /* temporary error-code */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_GRAPHIC, MNG_LC_START);
-#endif
-
- if (!pData->pReadbuf) /* buffer allocated ? */
- {
- pData->iReadbufsize = 4200; /* allocate a default read buffer */
- MNG_ALLOC (pData, pData->pReadbuf, pData->iReadbufsize);
- }
- /* haven't processed the signature ? */
- if ((!pData->bHavesig) || (pData->iSuspendpoint == 1))
- {
- iBuflen = 2 * sizeof (mng_uint32); /* read signature */
-
- iRetcode = read_databuffer (pData, pData->pReadbuf, &pData->pReadbufnext, iBuflen, &iRead);
-
- if (iRetcode)
- return iRetcode;
-
- if (pData->bSuspended) /* input suspension ? */
- pData->iSuspendpoint = 1;
- else
- {
- if (iRead != iBuflen) /* full signature received ? */
- MNG_ERROR (pData, MNG_UNEXPECTEDEOF);
- /* is it a valid signature ? */
- if (mng_get_uint32 (pData->pReadbuf) == PNG_SIG)
- pData->eSigtype = mng_it_png;
- else
-#ifdef MNG_INCLUDE_JNG
- if (mng_get_uint32 (pData->pReadbuf) == JNG_SIG)
- pData->eSigtype = mng_it_jng;
- else
-#endif
- if (mng_get_uint32 (pData->pReadbuf) == MNG_SIG)
- pData->eSigtype = mng_it_mng;
- else
- MNG_ERROR (pData, MNG_INVALIDSIG);
- /* all of it ? */
- if (mng_get_uint32 (pData->pReadbuf+4) != POST_SIG)
- MNG_ERROR (pData, MNG_INVALIDSIG);
-
- pData->bHavesig = MNG_TRUE;
- }
- }
-
- if (!pData->bSuspended) /* still going ? */
- {
- do
- { /* reset timer during mng_read() ? */
- if ((pData->bReading) && (!pData->bDisplaying))
- pData->bTimerset = MNG_FALSE;
-
- if (pData->pFirstpushchunk) /* chunks pushed ? */
- iRetcode = process_pushedchunk (pData); /* process the pushed chunk */
- else
- iRetcode = read_chunk (pData); /* read & process a chunk */
-
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
-#ifdef MNG_SUPPORT_DISPLAY /* until EOF or a break-request */
- while (((!pData->bEOF) || (pData->pCurraniobj)) &&
- (!pData->bSuspended) && (!pData->bSectionwait) &&
- ((!pData->bTimerset) || ((pData->bReading) && (!pData->bDisplaying))));
-#else
- while ((!pData->bEOF) && (!pData->bSuspended));
-#endif
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_READ_GRAPHIC, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_READ_PROCS */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
diff --git a/src/3rdparty/libmng/libmng_read.h b/src/3rdparty/libmng/libmng_read.h
deleted file mode 100644
index 119cc3e60e..0000000000
--- a/src/3rdparty/libmng/libmng_read.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_read.h copyright (c) 2000-2004 G.Juyn * */
-/* * version : 1.0.8 * */
-/* * * */
-/* * purpose : Read management (definition) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : Definition of the read management routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 10/18/2000 - G.Juyn * */
-/* * - added closestream() processing for mng_cleanup() * */
-/* * * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * * */
-/* * 1.0.8 - 04/12/2004 - G.Juyn * */
-/* * - added data-push mechanisms for specialized decoders * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_read_h_
-#define _libmng_read_h_
-
-/* ************************************************************************** */
-
-mng_retcode mng_process_eof (mng_datap pData);
-
-mng_retcode mng_release_pushdata (mng_datap pData);
-
-mng_retcode mng_release_pushchunk (mng_datap pData);
-
-mng_retcode mng_read_graphic (mng_datap pData);
-
-/* ************************************************************************** */
-
-#endif /* _libmng_read_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/libmng_trace.c b/src/3rdparty/libmng/libmng_trace.c
deleted file mode 100644
index a6a2cab2b6..0000000000
--- a/src/3rdparty/libmng/libmng_trace.c
+++ /dev/null
@@ -1,1683 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_trace.c copyright (c) 2000-2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : Trace functions (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of the trace functions * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/12/2000 - G.Juyn * */
-/* * - added callback error-reporting support * */
-/* * * */
-/* * 0.5.2 - 05/23/2000 - G.Juyn * */
-/* * - added trace telltale reporting * */
-/* * 0.5.2 - 05/24/2000 - G.Juyn * */
-/* * - added tracestrings for global animation color-chunks * */
-/* * - added tracestrings for get/set of default ZLIB/IJG parms * */
-/* * - added tracestrings for global PLTE,tRNS,bKGD * */
-/* * 0.5.2 - 05/30/2000 - G.Juyn * */
-/* * - added tracestrings for image-object promotion * */
-/* * - added tracestrings for delta-image processing * */
-/* * 0.5.2 - 06/02/2000 - G.Juyn * */
-/* * - added tracestrings for getalphaline callback * */
-/* * 0.5.2 - 06/05/2000 - G.Juyn * */
-/* * - added tracestring for RGB8_A8 canvasstyle * */
-/* * 0.5.2 - 06/06/2000 - G.Juyn * */
-/* * - added tracestring for mng_read_resume HLAPI function * */
-/* * * */
-/* * 0.5.3 - 06/21/2000 - G.Juyn * */
-/* * - added tracestrings for get/set speedtype * */
-/* * - added tracestring for get imagelevel * */
-/* * 0.5.3 - 06/22/2000 - G.Juyn * */
-/* * - added tracestring for delta-image processing * */
-/* * - added tracestrings for PPLT chunk processing * */
-/* * * */
-/* * 0.9.1 - 07/07/2000 - G.Juyn * */
-/* * - added tracecodes for special display processing * */
-/* * 0.9.1 - 07/08/2000 - G.Juyn * */
-/* * - added tracestring for get/set suspensionmode * */
-/* * - added tracestrings for get/set display variables * */
-/* * - added tracecode for read_databuffer (I/O-suspension) * */
-/* * 0.9.1 - 07/15/2000 - G.Juyn * */
-/* * - added tracestrings for SAVE/SEEK callbacks * */
-/* * - added tracestrings for get/set sectionbreaks * */
-/* * - added tracestring for special error routine * */
-/* * 0.9.1 - 07/19/2000 - G.Juyn * */
-/* * - added tracestring for updatemngheader * */
-/* * * */
-/* * 0.9.2 - 07/31/2000 - G.Juyn * */
-/* * - added tracestrings for status_xxxxx functions * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * - added tracestring for updatemngsimplicity * */
-/* * * */
-/* * 0.9.3 - 08/26/2000 - G.Juyn * */
-/* * - added MAGN chunk * */
-/* * 0.9.3 - 09/07/2000 - G.Juyn * */
-/* * - added support for new filter_types * */
-/* * 0.9.3 - 10/10/2000 - G.Juyn * */
-/* * - added support for alpha-depth prediction * */
-/* * 0.9.3 - 10/11/2000 - G.Juyn * */
-/* * - added JDAA chunk * */
-/* * - added support for nEED * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added functions to retrieve PNG/JNG specific header-info * */
-/* * - added optional support for bKGD for PNG images * */
-/* * 0.9.3 - 10/17/2000 - G.Juyn * */
-/* * - added callback to process non-critical unknown chunks * */
-/* * - added routine to discard "invalid" objects * */
-/* * 0.9.3 - 10/19/2000 - G.Juyn * */
-/* * - implemented delayed delta-processing * */
-/* * 0.9.3 - 10/20/2000 - G.Juyn * */
-/* * - added get/set for bKGD preference setting * */
-/* * 0.9.3 - 10/21/2000 - G.Juyn * */
-/* * - added get function for interlace/progressive display * */
-/* * * */
-/* * 0.9.4 - 1/18/2001 - G.Juyn * */
-/* * - added "new" MAGN methods 3, 4 & 5 * */
-/* * * */
-/* * 1.0.1 - 02/08/2001 - G.Juyn * */
-/* * - added MEND processing callback * */
-/* * 1.0.1 - 04/21/2001 - G.Juyn (code by G.Kelly) * */
-/* * - added BGRA8 canvas with premultiplied alpha * */
-/* * 1.0.1 - 05/02/2001 - G.Juyn * */
-/* * - added "default" sRGB generation (Thanks Marti!) * */
-/* * * */
-/* * 1.0.2 - 06/23/2001 - G.Juyn * */
-/* * - added optimization option for MNG-video playback * */
-/* * - added processterm callback * */
-/* * 1.0.2 - 06/25/2001 - G.Juyn * */
-/* * - added option to turn off progressive refresh * */
-/* * * */
-/* * 1.0.3 - 08/06/2001 - G.Juyn * */
-/* * - added get function for last processed BACK chunk * */
-/* * * */
-/* * 1.0.5 - 08/15/2002 - G.Juyn * */
-/* * - completed PROM support * */
-/* * - completed delta-image support * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * - added HLAPI function to copy chunks * */
-/* * 1.0.5 - 09/14/2002 - G.Juyn * */
-/* * - added event handling for dynamic MNG * */
-/* * 1.0.5 - 09/20/2002 - G.Juyn * */
-/* * - added support for PAST * */
-/* * 1.0.5 - 09/22/2002 - G.Juyn * */
-/* * - added bgrx8 canvas (filler byte) * */
-/* * 1.0.5 - 09/23/2002 - G.Juyn * */
-/* * - added in-memory color-correction of abstract images * */
-/* * - added compose over/under routines for PAST processing * */
-/* * - added flip & tile routines for PAST processing * */
-/* * 1.0.5 - 10/09/2002 - G.Juyn * */
-/* * - fixed trace-constants for PAST chunk * */
-/* * 1.0.5 - 11/07/2002 - G.Juyn * */
-/* * - added support to get totals after mng_read() * */
-/* * * */
-/* * 1.0.6 - 07/07/2003 - G.R-P * */
-/* * - added conditionals around JNG and Delta-PNG code * */
-/* * 1.0.6 - 07/14/2003 - G.R-P * */
-/* * - added conditionals around various unused functions * */
-/* * 1.0.6 - 07/29/2003 - G.R-P * */
-/* * - added conditionals around PAST chunk support * */
-/* * * */
-/* * 1.0.7 - 11/27/2003 - R.A * */
-/* * - added CANVAS_RGB565 and CANVAS_BGR565 * */
-/* * 1.0.7 - 01/25/2004 - J.S * */
-/* * - added premultiplied alpha canvas' for RGBA, ARGB, ABGR * */
-/* * 1.0.7 - 03/07/2004 - G. Randers-Pehrson * */
-/* * - put gamma, cms-related declarations inside #ifdef * */
-/* * 1.0.7 - 03/10/2004 - G.R-P * */
-/* * - added conditionals around openstream/closestream * */
-/* * * */
-/* * 1.0.8 - 04/02/2004 - G.Juyn * */
-/* * - added CRC existence & checking flags * */
-/* * 1.0.8 - 04/11/2004 - G.Juyn * */
-/* * - added data-push mechanisms for specialized decoders * */
-/* * * */
-/* * 1.0.9 - 10/03/2004 - G.Juyn * */
-/* * - added function to retrieve current FRAM delay * */
-/* * 1.0.9 - 10/14/2004 - G.Juyn * */
-/* * - added bgr565_a8 canvas-style (thanks to J. Elvander) * */
-/* * * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * 1.0.10 - 07/06/2007 - G.R-P bugfix by Lucas Quintana * */
-/* * * */
-/* ************************************************************************** */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_TRACE_PROCS
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_TRACE_STRINGS
-MNG_LOCAL mng_trace_entry const trace_table [] =
- {
- {MNG_FN_INITIALIZE, "initialize"},
- {MNG_FN_RESET, "reset"},
- {MNG_FN_CLEANUP, "cleanup"},
- {MNG_FN_READ, "read"},
- {MNG_FN_WRITE, "write"},
- {MNG_FN_CREATE, "create"},
- {MNG_FN_READDISPLAY, "readdisplay"},
- {MNG_FN_DISPLAY, "display"},
- {MNG_FN_DISPLAY_RESUME, "display_resume"},
- {MNG_FN_DISPLAY_FREEZE, "display_freeze"},
- {MNG_FN_DISPLAY_RESET, "display_reset"},
-#ifndef MNG_NO_DISPLAY_GO_SUPPORTED
- {MNG_FN_DISPLAY_GOFRAME, "display_goframe"},
- {MNG_FN_DISPLAY_GOLAYER, "display_golayer"},
- {MNG_FN_DISPLAY_GOTIME, "display_gotime"},
-#endif
- {MNG_FN_GETLASTERROR, "getlasterror"},
- {MNG_FN_READ_RESUME, "read_resume"},
- {MNG_FN_TRAPEVENT, "trapevent"},
- {MNG_FN_READ_PUSHDATA, "read_pushdata"},
- {MNG_FN_READ_PUSHSIG, "read_pushsig"},
- {MNG_FN_READ_PUSHCHUNK, "read_pushchunk"},
-
- {MNG_FN_SETCB_MEMALLOC, "setcb_memalloc"},
- {MNG_FN_SETCB_MEMFREE, "setcb_memfree"},
- {MNG_FN_SETCB_READDATA, "setcb_readdata"},
- {MNG_FN_SETCB_WRITEDATA, "setcb_writedata"},
- {MNG_FN_SETCB_ERRORPROC, "setcb_errorproc"},
- {MNG_FN_SETCB_TRACEPROC, "setcb_traceproc"},
- {MNG_FN_SETCB_PROCESSHEADER, "setcb_processheader"},
- {MNG_FN_SETCB_PROCESSTEXT, "setcb_processtext"},
- {MNG_FN_SETCB_GETCANVASLINE, "setcb_getcanvasline"},
- {MNG_FN_SETCB_GETBKGDLINE, "setcb_getbkgdline"},
- {MNG_FN_SETCB_REFRESH, "setcb_refresh"},
- {MNG_FN_SETCB_GETTICKCOUNT, "setcb_gettickcount"},
- {MNG_FN_SETCB_SETTIMER, "setcb_settimer"},
- {MNG_FN_SETCB_PROCESSGAMMA, "setcb_processgamma"},
- {MNG_FN_SETCB_PROCESSCHROMA, "setcb_processchroma"},
- {MNG_FN_SETCB_PROCESSSRGB, "setcb_processsrgb"},
- {MNG_FN_SETCB_PROCESSICCP, "setcb_processiccp"},
- {MNG_FN_SETCB_PROCESSAROW, "setcb_processarow"},
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
- {MNG_FN_SETCB_OPENSTREAM, "setcb_openstream"},
- {MNG_FN_SETCB_CLOSESTREAM, "setcb_closestream"},
-#endif
- {MNG_FN_SETCB_GETALPHALINE, "setcb_getalphaline"},
- {MNG_FN_SETCB_PROCESSSAVE, "setcb_processsave"},
- {MNG_FN_SETCB_PROCESSSEEK, "setcb_processseek"},
- {MNG_FN_SETCB_PROCESSNEED, "setcb_processneed"},
- {MNG_FN_SETCB_PROCESSUNKNOWN, "setcb_processunknown"},
- {MNG_FN_SETCB_PROCESSMEND, "setcb_processmend"},
- {MNG_FN_SETCB_PROCESSTERM, "setcb_processterm"},
- {MNG_FN_SETCB_RELEASEDATA, "setcb_releasedata"},
-
- {MNG_FN_GETCB_MEMALLOC, "getcb_memalloc"},
- {MNG_FN_GETCB_MEMFREE, "getcb_memfree"},
- {MNG_FN_GETCB_READDATA, "getcb_readdata,"},
- {MNG_FN_GETCB_WRITEDATA, "getcb_writedata"},
- {MNG_FN_GETCB_ERRORPROC, "getcb_errorproc"},
- {MNG_FN_GETCB_TRACEPROC, "getcb_traceproc"},
- {MNG_FN_GETCB_PROCESSHEADER, "getcb_processheader"},
- {MNG_FN_GETCB_PROCESSTEXT, "getcb_processtext"},
- {MNG_FN_GETCB_GETCANVASLINE, "getcb_getcanvasline"},
- {MNG_FN_GETCB_GETBKGDLINE, "getcb_getbkgdline"},
- {MNG_FN_GETCB_REFRESH, "getcb_refresh"},
- {MNG_FN_GETCB_GETTICKCOUNT, "getcb_gettickcount"},
- {MNG_FN_GETCB_SETTIMER, "getcb_settimer"},
- {MNG_FN_GETCB_PROCESSGAMMA, "getcb_processgamma"},
- {MNG_FN_GETCB_PROCESSCHROMA, "getcb_processchroma"},
- {MNG_FN_GETCB_PROCESSSRGB, "getcb_processsrgb"},
- {MNG_FN_GETCB_PROCESSICCP, "getcb_processiccp"},
- {MNG_FN_GETCB_PROCESSAROW, "getcb_processarow"},
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
- {MNG_FN_GETCB_OPENSTREAM, "getcb_openstream"},
- {MNG_FN_GETCB_CLOSESTREAM, "getcb_closestream"},
-#endif
- {MNG_FN_GETCB_GETALPHALINE, "getcb_getalphaline"},
- {MNG_FN_GETCB_PROCESSSAVE, "getcb_processsave"},
- {MNG_FN_GETCB_PROCESSSEEK, "getcb_processseek"},
- {MNG_FN_GETCB_PROCESSNEED, "getcb_processneed"},
- {MNG_FN_GETCB_PROCESSUNKNOWN, "getcb_processunknown"},
- {MNG_FN_GETCB_PROCESSMEND, "getcb_processmend"},
- {MNG_FN_GETCB_PROCESSTERM, "getcb_processterm"},
- {MNG_FN_GETCB_RELEASEDATA, "getcb_releasedata"},
-
- {MNG_FN_SET_USERDATA, "set_userdata"},
- {MNG_FN_SET_CANVASSTYLE, "set_canvasstyle"},
- {MNG_FN_SET_BKGDSTYLE, "set_bkgdstyle"},
- {MNG_FN_SET_BGCOLOR, "set_bgcolor"},
- {MNG_FN_SET_STORECHUNKS, "set_storechunks"},
-#if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
- {MNG_FN_SET_VIEWGAMMA, "set_viewgamma"},
-#ifndef MNG_NO_DFLT_INFO
- {MNG_FN_SET_DISPLAYGAMMA, "set_displaygamma"},
-#endif
- {MNG_FN_SET_DFLTIMGGAMMA, "set_dfltimggamma"},
-#endif
- {MNG_FN_SET_SRGB, "set_srgb"},
- {MNG_FN_SET_OUTPUTPROFILE, "set_outputprofile"},
- {MNG_FN_SET_SRGBPROFILE, "set_srgbprofile"},
-#ifndef MNG_SKIP_MAXCANVAS
- {MNG_FN_SET_MAXCANVASWIDTH, "set_maxcanvaswidth"},
- {MNG_FN_SET_MAXCANVASHEIGHT, "set_maxcanvasheight"},
- {MNG_FN_SET_MAXCANVASSIZE, "set_maxcanvassize"},
-#endif
-#ifndef MNG_NO_ACCESS_ZLIB
- {MNG_FN_SET_ZLIB_LEVEL, "set_zlib_level"},
- {MNG_FN_SET_ZLIB_METHOD, "set_zlib_method"},
- {MNG_FN_SET_ZLIB_WINDOWBITS, "set_zlib_windowbits"},
- {MNG_FN_SET_ZLIB_MEMLEVEL, "set_zlib_memlevel"},
- {MNG_FN_SET_ZLIB_STRATEGY, "set_zlib_strategy"},
- {MNG_FN_SET_ZLIB_MAXIDAT, "set_zlib_maxidat"},
-#endif
-#ifndef MNG_NO_ACCESS_JPEG
- {MNG_FN_SET_JPEG_DCTMETHOD, "set_jpeg_dctmethod"},
- {MNG_FN_SET_JPEG_QUALITY, "set_jpeg_quality"},
- {MNG_FN_SET_JPEG_SMOOTHING, "set_jpeg_smoothing"},
- {MNG_FN_SET_JPEG_PROGRESSIVE, "set_jpeg_progressive"},
- {MNG_FN_SET_JPEG_OPTIMIZED, "set_jpeg_optimized"},
- {MNG_FN_SET_JPEG_MAXJDAT, "set_jpeg_maxjdat"},
-#endif
- {MNG_FN_SET_SPEED, "set_speed"},
- {MNG_FN_SET_SUSPENSIONMODE, "set_suspensionmode"},
- {MNG_FN_SET_SECTIONBREAKS, "set_sectionbreaks"},
- {MNG_FN_SET_USEBKGD, "set_usebkgd"},
- {MNG_FN_SET_OUTPUTPROFILE2, "set_outputprofile2"},
- {MNG_FN_SET_SRGBPROFILE2, "set_srgbprofile2"},
- {MNG_FN_SET_OUTPUTSRGB, "set_outputsrgb"},
- {MNG_FN_SET_SRGBIMPLICIT, "set_srgbimplicit"},
- {MNG_FN_SET_CACHEPLAYBACK, "set_cacheplayback"},
- {MNG_FN_SET_DOPROGRESSIVE, "set_doprogressive"},
- {MNG_FN_SET_CRCMODE, "set_crcmode"},
-
- {MNG_FN_GET_USERDATA, "get_userdata"},
- {MNG_FN_GET_SIGTYPE, "get_sigtype"},
- {MNG_FN_GET_IMAGETYPE, "get_imagetype"},
- {MNG_FN_GET_IMAGEWIDTH, "get_imagewidth"},
- {MNG_FN_GET_IMAGEHEIGHT, "get_imageheight"},
- {MNG_FN_GET_TICKS, "get_ticks"},
- {MNG_FN_GET_FRAMECOUNT, "get_framecount"},
- {MNG_FN_GET_LAYERCOUNT, "get_layercount"},
- {MNG_FN_GET_PLAYTIME, "get_playtime"},
- {MNG_FN_GET_SIMPLICITY, "get_simplicity"},
- {MNG_FN_GET_CANVASSTYLE, "get_canvasstyle"},
- {MNG_FN_GET_BKGDSTYLE, "get_bkgdstyle"},
- {MNG_FN_GET_BGCOLOR, "get_bgcolor"},
- {MNG_FN_GET_STORECHUNKS, "get_storechunks"},
-#if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
- {MNG_FN_GET_VIEWGAMMA, "get_viewgamma"},
- {MNG_FN_GET_DISPLAYGAMMA, "get_displaygamma"},
-#ifndef MNG_NO_DFLT_INFO
- {MNG_FN_GET_DFLTIMGGAMMA, "get_dfltimggamma"},
-#endif
-#endif
- {MNG_FN_GET_SRGB, "get_srgb"},
-#ifndef MNG_SKIP_MAXCANVAS
- {MNG_FN_GET_MAXCANVASWIDTH, "get_maxcanvaswidth"},
- {MNG_FN_GET_MAXCANVASHEIGHT, "get_maxcanvasheight"},
-#endif
-#ifndef MNG_NO_ACCESS_ZLIB
- {MNG_FN_GET_ZLIB_LEVEL, "get_zlib_level"},
- {MNG_FN_GET_ZLIB_METHOD, "get_zlib_method"},
- {MNG_FN_GET_ZLIB_WINDOWBITS, "get_zlib_windowbits"},
- {MNG_FN_GET_ZLIB_MEMLEVEL, "get_zlib_memlevel"},
- {MNG_FN_GET_ZLIB_STRATEGY, "get_zlib_strategy"},
- {MNG_FN_GET_ZLIB_MAXIDAT, "get_zlib_maxidat"},
-#endif
-#ifndef MNG_NO_ACCESS_JPEG
- {MNG_FN_GET_JPEG_DCTMETHOD, "get_jpeg_dctmethod"},
- {MNG_FN_GET_JPEG_QUALITY, "get_jpeg_quality"},
- {MNG_FN_GET_JPEG_SMOOTHING, "get_jpeg_smoothing"},
- {MNG_FN_GET_JPEG_PROGRESSIVE, "get_jpeg_progressive"},
- {MNG_FN_GET_JPEG_OPTIMIZED, "get_jpeg_optimized"},
- {MNG_FN_GET_JPEG_MAXJDAT, "get_jpeg_maxjdat"},
-#endif
- {MNG_FN_GET_SPEED, "get_speed"},
- {MNG_FN_GET_IMAGELEVEL, "get_imagelevel"},
- {MNG_FN_GET_SUSPENSIONMODE, "get_speed"},
- {MNG_FN_GET_STARTTIME, "get_starttime"},
- {MNG_FN_GET_RUNTIME, "get_runtime"},
-#ifndef MNG_NO_CURRENT_INFO
- {MNG_FN_GET_CURRENTFRAME, "get_currentframe"},
- {MNG_FN_GET_CURRENTLAYER, "get_currentlayer"},
- {MNG_FN_GET_CURRENTPLAYTIME, "get_currentplaytime"},
-#endif
- {MNG_FN_GET_SECTIONBREAKS, "get_sectionbreaks"},
- {MNG_FN_GET_ALPHADEPTH, "get_alphadepth"},
- {MNG_FN_GET_BITDEPTH, "get_bitdepth"},
- {MNG_FN_GET_COLORTYPE, "get_colortype"},
- {MNG_FN_GET_COMPRESSION, "get_compression"},
- {MNG_FN_GET_FILTER, "get_filter"},
- {MNG_FN_GET_INTERLACE, "get_interlace"},
- {MNG_FN_GET_ALPHABITDEPTH, "get_alphabitdepth"},
- {MNG_FN_GET_ALPHACOMPRESSION, "get_alphacompression"},
- {MNG_FN_GET_ALPHAFILTER, "get_alphafilter"},
- {MNG_FN_GET_ALPHAINTERLACE, "get_alphainterlace"},
- {MNG_FN_GET_USEBKGD, "get_usebkgd"},
- {MNG_FN_GET_REFRESHPASS, "get_refreshpass"},
- {MNG_FN_GET_CACHEPLAYBACK, "get_cacheplayback"},
- {MNG_FN_GET_DOPROGRESSIVE, "get_doprogressive"},
- {MNG_FN_GET_LASTBACKCHUNK, "get_lastbackchunk"},
- {MNG_FN_GET_LASTSEEKNAME, "get_lastseekname"},
-#ifndef MNG_NO_CURRENT_INFO
- {MNG_FN_GET_TOTALFRAMES, "get_totalframes"},
- {MNG_FN_GET_TOTALLAYERS, "get_totallayers"},
- {MNG_FN_GET_TOTALPLAYTIME, "get_totalplaytime"},
-#endif
- {MNG_FN_GET_CRCMODE, "get_crcmode"},
- {MNG_FN_GET_CURRFRAMDELAY, "get_currframdelay"},
-
- {MNG_FN_STATUS_ERROR, "status_error"},
- {MNG_FN_STATUS_READING, "status_reading"},
- {MNG_FN_STATUS_SUSPENDBREAK, "status_suspendbreak"},
- {MNG_FN_STATUS_CREATING, "status_creating"},
- {MNG_FN_STATUS_WRITING, "status_writing"},
- {MNG_FN_STATUS_DISPLAYING, "status_displaying"},
- {MNG_FN_STATUS_RUNNING, "status_running"},
- {MNG_FN_STATUS_TIMERBREAK, "status_timerbreak"},
- {MNG_FN_STATUS_DYNAMIC, "status_dynamic"},
- {MNG_FN_STATUS_RUNNINGEVENT, "status_runningevent"},
-
- {MNG_FN_ITERATE_CHUNKS, "iterate_chunks"},
- {MNG_FN_COPY_CHUNK, "copy_chunk"},
-
- {MNG_FN_GETCHUNK_IHDR, "getchunk_ihdr"},
- {MNG_FN_GETCHUNK_PLTE, "getchunk_plte"},
- {MNG_FN_GETCHUNK_IDAT, "getchunk_idat"},
- {MNG_FN_GETCHUNK_IEND, "getchunk_iend"},
- {MNG_FN_GETCHUNK_TRNS, "getchunk_trns"},
-#ifndef MNG_SKIPCHUNK_gAMA
- {MNG_FN_GETCHUNK_GAMA, "getchunk_gama"},
-#endif
-#ifndef MNG_SKIPCHUNK_cHRM
- {MNG_FN_GETCHUNK_CHRM, "getchunk_chrm"},
-#endif
-#ifndef MNG_SKIPCHUNK_sRGB
- {MNG_FN_GETCHUNK_SRGB, "getchunk_srgb"},
-#endif
-#ifndef MNG_SKIPCHUNK_iCCP
- {MNG_FN_GETCHUNK_ICCP, "getchunk_iccp"},
-#endif
-#ifndef MNG_SKIPCHUNK_tEXt
- {MNG_FN_GETCHUNK_TEXT, "getchunk_text"},
-#endif
-#ifndef MNG_SKIPCHUNK_zTXt
- {MNG_FN_GETCHUNK_ZTXT, "getchunk_ztxt"},
-#endif
-#ifndef MNG_SKIPCHUNK_iTXt
- {MNG_FN_GETCHUNK_ITXT, "getchunk_itxt"},
-#endif
-#ifndef MNG_SKIPCHUNK_bKGD
- {MNG_FN_GETCHUNK_BKGD, "getchunk_bkgd"},
-#endif
-#ifndef MNG_SKIPCHUNK_pHYs
- {MNG_FN_GETCHUNK_PHYS, "getchunk_phys"},
-#endif
-#ifndef MNG_SKIPCHUNK_sBIT
- {MNG_FN_GETCHUNK_SBIT, "getchunk_sbit"},
-#endif
-#ifndef MNG_SKIPCHUNK_sPLT
- {MNG_FN_GETCHUNK_SPLT, "getchunk_splt"},
-#endif
-#ifndef MNG_SKIPCHUNK_hIST
- {MNG_FN_GETCHUNK_HIST, "getchunk_hist"},
-#endif
-#ifndef MNG_SKIPCHUNK_tIME
- {MNG_FN_GETCHUNK_TIME, "getchunk_time"},
-#endif
- {MNG_FN_GETCHUNK_MHDR, "getchunk_mhdr"},
- {MNG_FN_GETCHUNK_MEND, "getchunk_mend"},
-#ifndef MNG_SKIPCHUNK_LOOP
- {MNG_FN_GETCHUNK_LOOP, "getchunk_loop"},
- {MNG_FN_GETCHUNK_ENDL, "getchunk_endl"},
-#endif
- {MNG_FN_GETCHUNK_DEFI, "getchunk_defi"},
-#ifndef MNG_SKIPCHUNK_BASI
- {MNG_FN_GETCHUNK_BASI, "getchunk_basi"},
-#endif
- {MNG_FN_GETCHUNK_CLON, "getchunk_clon"},
-#ifndef MNG_SKIPCHUNK_PAST
- {MNG_FN_GETCHUNK_PAST, "getchunk_past"},
-#endif
- {MNG_FN_GETCHUNK_DISC, "getchunk_disc"},
- {MNG_FN_GETCHUNK_BACK, "getchunk_back"},
- {MNG_FN_GETCHUNK_FRAM, "getchunk_fram"},
- {MNG_FN_GETCHUNK_MOVE, "getchunk_move"},
- {MNG_FN_GETCHUNK_CLIP, "getchunk_clip"},
- {MNG_FN_GETCHUNK_SHOW, "getchunk_show"},
- {MNG_FN_GETCHUNK_TERM, "getchunk_term"},
-#ifndef MNG_SKIPCHUNK_SAVE
- {MNG_FN_GETCHUNK_SAVE, "getchunk_save"},
-#endif
-#ifndef MNG_SKIPCHUNK_SEEK
- {MNG_FN_GETCHUNK_SEEK, "getchunk_seek"},
-#endif
-#ifndef MNG_SKIPCHUNK_eXPI
- {MNG_FN_GETCHUNK_EXPI, "getchunk_expi"},
-#endif
-#ifndef MNG_SKIPCHUNK_fPRI
- {MNG_FN_GETCHUNK_FPRI, "getchunk_fpri"},
-#endif
-#ifndef MNG_SKIPCHUNK_nEED
- {MNG_FN_GETCHUNK_NEED, "getchunk_need"},
-#endif
-#ifndef MNG_SKIPCHUNK_pHYg
- {MNG_FN_GETCHUNK_PHYG, "getchunk_phyg"},
-#endif
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_GETCHUNK_JHDR, "getchunk_jhdr"},
- {MNG_FN_GETCHUNK_JDAT, "getchunk_jdat"},
- {MNG_FN_GETCHUNK_JSEP, "getchunk_jsep"},
-#endif
-#ifndef MNG_NO_DELTA_PNG
- {MNG_FN_GETCHUNK_DHDR, "getchunk_dhdr"},
- {MNG_FN_GETCHUNK_PROM, "getchunk_prom"},
- {MNG_FN_GETCHUNK_IPNG, "getchunk_ipng"},
- {MNG_FN_GETCHUNK_PPLT, "getchunk_pplt"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_GETCHUNK_IJNG, "getchunk_ijng"},
-#endif
-#ifndef MNG_SKIPCHUNK_DROP
- {MNG_FN_GETCHUNK_DROP, "getchunk_drop"},
-#endif
-#ifndef MNG_SKIPCHUNK_DBYK
- {MNG_FN_GETCHUNK_DBYK, "getchunk_dbyk"},
-#endif
-#ifndef MNG_SKIPCHUNK_ORDR
- {MNG_FN_GETCHUNK_ORDR, "getchunk_ordr"},
-#endif
-#endif
- {MNG_FN_GETCHUNK_UNKNOWN, "getchunk_unknown"},
- {MNG_FN_GETCHUNK_MAGN, "getchunk_magn"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_GETCHUNK_JDAA, "getchunk_jdaa"},
-#endif
-#ifndef MNG_SKIPCHUNK_evNT
- {MNG_FN_GETCHUNK_EVNT, "getchunk_evnt"},
-#endif
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- {MNG_FN_GETCHUNK_MPNG, "getchunk_mpng"},
-#endif
-
-#ifndef MNG_SKIPCHUNK_PAST
- {MNG_FN_GETCHUNK_PAST_SRC, "getchunk_past_src"},
-#endif
-#ifndef MNG_SKIPCHUNK_SAVE
- {MNG_FN_GETCHUNK_SAVE_ENTRY, "getchunk_save_entry"},
-#endif
-#ifndef MNG_NO_DELTA_PNG
- {MNG_FN_GETCHUNK_PPLT_ENTRY, "getchunk_pplt_entry"},
- {MNG_FN_GETCHUNK_ORDR_ENTRY, "getchunk_ordr_entry"},
-#endif
-#ifndef MNG_SKIPCHUNK_evNT
- {MNG_FN_GETCHUNK_EVNT_ENTRY, "getchunk_evnt_entry"},
-#endif
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- {MNG_FN_GETCHUNK_MPNG_FRAME, "getchunk_mpng_frame"},
-#endif
-
- {MNG_FN_PUTCHUNK_IHDR, "putchunk_ihdr"},
- {MNG_FN_PUTCHUNK_PLTE, "putchunk_plte"},
- {MNG_FN_PUTCHUNK_IDAT, "putchunk_idat"},
- {MNG_FN_PUTCHUNK_IEND, "putchunk_iend"},
- {MNG_FN_PUTCHUNK_TRNS, "putchunk_trns"},
-#ifndef MNG_SKIPCHUNK_gAMA
- {MNG_FN_PUTCHUNK_GAMA, "putchunk_gama"},
-#endif
-#ifndef MNG_SKIPCHUNK_cHRM
- {MNG_FN_PUTCHUNK_CHRM, "putchunk_chrm"},
-#endif
-#ifndef MNG_SKIPCHUNK_sRGB
- {MNG_FN_PUTCHUNK_SRGB, "putchunk_srgb"},
-#endif
-#ifndef MNG_SKIPCHUNK_iCCP
- {MNG_FN_PUTCHUNK_ICCP, "putchunk_iccp"},
-#endif
-#ifndef MNG_SKIPCHUNK_tEXt
- {MNG_FN_PUTCHUNK_TEXT, "putchunk_text"},
-#endif
-#ifndef MNG_SKIPCHUNK_zTXt
- {MNG_FN_PUTCHUNK_ZTXT, "putchunk_ztxt"},
-#endif
-#ifndef MNG_SKIPCHUNK_iTXt
- {MNG_FN_PUTCHUNK_ITXT, "putchunk_itxt"},
-#endif
-#ifndef MNG_SKIPCHUNK_bKGD
- {MNG_FN_PUTCHUNK_BKGD, "putchunk_bkgd"},
-#endif
-#ifndef MNG_SKIPCHUNK_pHYs
- {MNG_FN_PUTCHUNK_PHYS, "putchunk_phys"},
-#endif
-#ifndef MNG_SKIPCHUNK_sBIT
- {MNG_FN_PUTCHUNK_SBIT, "putchunk_sbit"},
-#endif
-#ifndef MNG_SKIPCHUNK_sPLT
- {MNG_FN_PUTCHUNK_SPLT, "putchunk_splt"},
-#endif
-#ifndef MNG_SKIPCHUNK_hIST
- {MNG_FN_PUTCHUNK_HIST, "putchunk_hist"},
-#endif
-#ifndef MNG_SKIPCHUNK_tIME
- {MNG_FN_PUTCHUNK_TIME, "putchunk_time"},
-#endif
- {MNG_FN_PUTCHUNK_MHDR, "putchunk_mhdr"},
- {MNG_FN_PUTCHUNK_MEND, "putchunk_mend"},
- {MNG_FN_PUTCHUNK_LOOP, "putchunk_loop"},
- {MNG_FN_PUTCHUNK_ENDL, "putchunk_endl"},
- {MNG_FN_PUTCHUNK_DEFI, "putchunk_defi"},
- {MNG_FN_PUTCHUNK_BASI, "putchunk_basi"},
- {MNG_FN_PUTCHUNK_CLON, "putchunk_clon"},
-#ifndef MNG_SKIPCHUNK_PAST
- {MNG_FN_PUTCHUNK_PAST, "putchunk_past"},
-#endif
- {MNG_FN_PUTCHUNK_DISC, "putchunk_disc"},
- {MNG_FN_PUTCHUNK_BACK, "putchunk_back"},
- {MNG_FN_PUTCHUNK_FRAM, "putchunk_fram"},
- {MNG_FN_PUTCHUNK_MOVE, "putchunk_move"},
- {MNG_FN_PUTCHUNK_CLIP, "putchunk_clip"},
- {MNG_FN_PUTCHUNK_SHOW, "putchunk_show"},
- {MNG_FN_PUTCHUNK_TERM, "putchunk_term"},
-#ifndef MNG_SKIPCHUNK_SAVE
- {MNG_FN_PUTCHUNK_SAVE, "putchunk_save"},
-#endif
-#ifndef MNG_SKIPCHUNK_SEEK
- {MNG_FN_PUTCHUNK_SEEK, "putchunk_seek"},
-#endif
-#ifndef MNG_SKIPCHUNK_eXPI
- {MNG_FN_PUTCHUNK_EXPI, "putchunk_expi"},
-#endif
-#ifndef MNG_SKIPCHUNK_fPRI
- {MNG_FN_PUTCHUNK_FPRI, "putchunk_fpri"},
-#endif
-#ifndef MNG_SKIPCHUNK_nEED
- {MNG_FN_PUTCHUNK_NEED, "putchunk_need"},
-#endif
-#ifndef MNG_SKIPCHUNK_pHYg
- {MNG_FN_PUTCHUNK_PHYG, "putchunk_phyg"},
-#endif
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_PUTCHUNK_JHDR, "putchunk_jhdr"},
- {MNG_FN_PUTCHUNK_JDAT, "putchunk_jdat"},
- {MNG_FN_PUTCHUNK_JSEP, "putchunk_jsep"},
-#endif
-#ifndef MNG_NO_DELTA_PNG
- {MNG_FN_PUTCHUNK_DHDR, "putchunk_dhdr"},
- {MNG_FN_PUTCHUNK_PROM, "putchunk_prom"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_PUTCHUNK_IPNG, "putchunk_ipng"},
-#endif
- {MNG_FN_PUTCHUNK_PPLT, "putchunk_pplt"},
- {MNG_FN_PUTCHUNK_IJNG, "putchunk_ijng"},
-#ifndef MNG_SKIPCHUNK_DROP
- {MNG_FN_PUTCHUNK_DROP, "putchunk_drop"},
-#endif
-#ifndef MNG_SKIPCHUNK_DBYK
- {MNG_FN_PUTCHUNK_DBYK, "putchunk_dbyk"},
-#endif
-#ifndef MNG_SKIPCHUNK_ORDR
- {MNG_FN_PUTCHUNK_ORDR, "putchunk_ordr"},
-#endif
-#endif
- {MNG_FN_PUTCHUNK_UNKNOWN, "putchunk_unknown"},
- {MNG_FN_PUTCHUNK_MAGN, "putchunk_magn"},
- {MNG_FN_PUTCHUNK_JDAA, "putchunk_jdaa"},
-#ifndef MNG_SKIPCHUNK_evNT
- {MNG_FN_PUTCHUNK_EVNT, "putchunk_evnt"},
-#endif
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- {MNG_FN_PUTCHUNK_MPNG, "putchunk_mpng"},
-#endif
-
-#ifndef MNG_SKIPCHUNK_PAST
- {MNG_FN_PUTCHUNK_PAST_SRC, "putchunk_past_src"},
-#endif
-#ifndef MNG_SKIPCHUNK_SAVE
- {MNG_FN_PUTCHUNK_SAVE_ENTRY, "putchunk_save_entry"},
-#endif
-#ifndef MNG_NO_DELTA_PNG
- {MNG_FN_PUTCHUNK_PPLT_ENTRY, "putchunk_pplt_entry"},
-#ifndef MNG_SKIPCHUNK_ORDR
- {MNG_FN_PUTCHUNK_ORDR_ENTRY, "putchunk_ordr_entry"},
-#endif
-#endif
-#ifndef MNG_SKIPCHUNK_evNT
- {MNG_FN_PUTCHUNK_EVNT_ENTRY, "putchunk_evnt_entry"},
-#endif
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- {MNG_FN_PUTCHUNK_MPNG_FRAME, "putchunk_mpng_frame"},
-#endif
-
- {MNG_FN_GETIMGDATA_SEQ, "getimgdata_seq"},
- {MNG_FN_GETIMGDATA_CHUNKSEQ, "getimgdata_chunkseq"},
- {MNG_FN_GETIMGDATA_CHUNK, "getimgdata_chunk"},
-
- {MNG_FN_PUTIMGDATA_IHDR, "putimgdata_ihdr"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_PUTIMGDATA_JHDR, "putimgdata_jhdr"},
- {MNG_FN_PUTIMGDATA_BASI, "putimgdata_basi"},
- {MNG_FN_PUTIMGDATA_DHDR, "putimgdata_dhdr"},
-#endif
-
- {MNG_FN_UPDATEMNGHEADER, "updatemngheader"},
- {MNG_FN_UPDATEMNGSIMPLICITY, "updatemngsimplicity"},
-
- {MNG_FN_PROCESS_RAW_CHUNK, "process_raw_chunk"},
- {MNG_FN_READ_GRAPHIC, "read_graphic"},
- {MNG_FN_DROP_CHUNKS, "drop_chunks"},
- {MNG_FN_PROCESS_ERROR, "process_error"},
- {MNG_FN_CLEAR_CMS, "clear_cms"},
- {MNG_FN_DROP_OBJECTS, "drop_objects"},
- {MNG_FN_READ_CHUNK, "read_chunk"},
- {MNG_FN_LOAD_BKGDLAYER, "load_bkgdlayer"},
- {MNG_FN_NEXT_FRAME, "next_frame"},
- {MNG_FN_NEXT_LAYER, "next_layer"},
- {MNG_FN_INTERFRAME_DELAY, "interframe_delay"},
- {MNG_FN_DISPLAY_IMAGE, "display_image"},
- {MNG_FN_DROP_IMGOBJECTS, "drop_imgobjects"},
- {MNG_FN_DROP_ANIOBJECTS, "drop_aniobjects"},
- {MNG_FN_INFLATE_BUFFER, "inflate_buffer"},
- {MNG_FN_DEFLATE_BUFFER, "deflate_buffer"},
- {MNG_FN_WRITE_RAW_CHUNK, "write_raw_chunk"},
- {MNG_FN_WRITE_GRAPHIC, "write_graphic"},
- {MNG_FN_SAVE_STATE, "save_state"},
- {MNG_FN_RESTORE_STATE, "restore_state"},
- {MNG_FN_DROP_SAVEDATA, "drop_savedata"},
-#ifndef MNG_NO_DELTA_PNG
- {MNG_FN_EXECUTE_DELTA_IMAGE, "execute_delta_image"},
-#endif
- {MNG_FN_PROCESS_DISPLAY, "process_display"},
- {MNG_FN_CLEAR_CANVAS, "clear_canvas"},
- {MNG_FN_READ_DATABUFFER, "read_databuffer"},
- {MNG_FN_STORE_ERROR, "store_error"},
- {MNG_FN_DROP_INVALID_OBJECTS, "drop_invalid_objects"},
- {MNG_FN_RELEASE_PUSHDATA, "release_pushdata"},
- {MNG_FN_READ_DATA, "read_data"},
- {MNG_FN_READ_CHUNK_CRC, "read_chunk_crc"},
- {MNG_FN_RELEASE_PUSHCHUNK, "release_pushchunk"},
-
- {MNG_FN_DISPLAY_RGB8, "display_rgb8"},
- {MNG_FN_DISPLAY_RGBA8, "display_rgba8"},
- {MNG_FN_DISPLAY_ARGB8, "display_argb8"},
- {MNG_FN_DISPLAY_BGR8, "display_bgr8"},
- {MNG_FN_DISPLAY_BGRA8, "display_bgra8"},
- {MNG_FN_DISPLAY_ABGR8, "display_abgr8"},
- {MNG_FN_DISPLAY_RGB16, "display_rgb16"},
- {MNG_FN_DISPLAY_RGBA16, "display_rgba16"},
- {MNG_FN_DISPLAY_ARGB16, "display_argb16"},
- {MNG_FN_DISPLAY_BGR16, "display_bgr16"},
- {MNG_FN_DISPLAY_BGRA16, "display_bgra16"},
- {MNG_FN_DISPLAY_ABGR16, "display_abgr16"},
- {MNG_FN_DISPLAY_INDEX8, "display_index8"},
- {MNG_FN_DISPLAY_INDEXA8, "display_indexa8"},
- {MNG_FN_DISPLAY_AINDEX8, "display_aindex8"},
- {MNG_FN_DISPLAY_GRAY8, "display_gray8"},
- {MNG_FN_DISPLAY_GRAY16, "display_gray16"},
- {MNG_FN_DISPLAY_GRAYA8, "display_graya8"},
- {MNG_FN_DISPLAY_GRAYA16, "display_graya16"},
- {MNG_FN_DISPLAY_AGRAY8, "display_agray8"},
- {MNG_FN_DISPLAY_AGRAY16, "display_agray16"},
- {MNG_FN_DISPLAY_DX15, "display_dx15"},
- {MNG_FN_DISPLAY_DX16, "display_dx16"},
- {MNG_FN_DISPLAY_RGB8_A8, "display_rgb8_a8"},
- {MNG_FN_DISPLAY_BGRA8PM, "display_bgra8_pm"},
- {MNG_FN_DISPLAY_BGRX8, "display_bgrx8"},
- {MNG_FN_DISPLAY_RGB565, "display_rgb565"},
- {MNG_FN_DISPLAY_RGBA565, "display_rgba565"},
- {MNG_FN_DISPLAY_BGR565, "display_bgr565"},
- {MNG_FN_DISPLAY_BGRA565, "display_bgra565"},
- {MNG_FN_DISPLAY_RGBA8_PM, "display_rgba8_pm"},
- {MNG_FN_DISPLAY_ARGB8_PM, "display_argb8_pm"},
- {MNG_FN_DISPLAY_ABGR8_PM, "display_abgr8_pm"},
- {MNG_FN_DISPLAY_BGR565_A8, "display_bgr565_a8"},
-
- {MNG_FN_INIT_FULL_CMS, "init_full_cms"},
- {MNG_FN_CORRECT_FULL_CMS, "correct_full_cms"},
- {MNG_FN_INIT_GAMMA_ONLY, "init_gamma_only"},
- {MNG_FN_CORRECT_GAMMA_ONLY, "correct_gamma_only"},
- {MNG_FN_CORRECT_APP_CMS, "correct_app_cms"},
- {MNG_FN_INIT_FULL_CMS_OBJ, "init_full_cms_obj"},
- {MNG_FN_INIT_GAMMA_ONLY_OBJ, "init_gamma_only_obj"},
- {MNG_FN_INIT_APP_CMS, "init_app_cms"},
- {MNG_FN_INIT_APP_CMS_OBJ, "init_app_cms_obj"},
-
- {MNG_FN_PROCESS_G1, "process_g1"},
- {MNG_FN_PROCESS_G2, "process_g2"},
- {MNG_FN_PROCESS_G4, "process_g4"},
- {MNG_FN_PROCESS_G8, "process_g8"},
- {MNG_FN_PROCESS_G16, "process_g16"},
- {MNG_FN_PROCESS_RGB8, "process_rgb8"},
- {MNG_FN_PROCESS_RGB16, "process_rgb16"},
- {MNG_FN_PROCESS_IDX1, "process_idx1"},
- {MNG_FN_PROCESS_IDX2, "process_idx2"},
- {MNG_FN_PROCESS_IDX4, "process_idx4"},
- {MNG_FN_PROCESS_IDX8, "process_idx8"},
- {MNG_FN_PROCESS_GA8, "process_ga8"},
- {MNG_FN_PROCESS_GA16, "process_ga16"},
- {MNG_FN_PROCESS_RGBA8, "process_rgba8"},
- {MNG_FN_PROCESS_RGBA16, "process_rgba16"},
-
- {MNG_FN_INIT_G1_I, "init_g1_i"},
- {MNG_FN_INIT_G2_I, "init_g2_i"},
- {MNG_FN_INIT_G4_I, "init_g4_i"},
- {MNG_FN_INIT_G8_I, "init_g8_i"},
- {MNG_FN_INIT_G16_I, "init_g16_i"},
- {MNG_FN_INIT_RGB8_I, "init_rgb8_i"},
- {MNG_FN_INIT_RGB16_I, "init_rgb16_i"},
- {MNG_FN_INIT_IDX1_I, "init_idx1_i"},
- {MNG_FN_INIT_IDX2_I, "init_idx2_i"},
- {MNG_FN_INIT_IDX4_I, "init_idx4_i"},
- {MNG_FN_INIT_IDX8_I, "init_idx8_i"},
- {MNG_FN_INIT_GA8_I, "init_ga8_i"},
- {MNG_FN_INIT_GA16_I, "init_ga16_i"},
- {MNG_FN_INIT_RGBA8_I, "init_rgba8_i"},
- {MNG_FN_INIT_RGBA16_I, "init_rgba16_i"},
-#ifndef MNG_OPTIMIZE_FOOTPRINT_INIT
- {MNG_FN_INIT_G1_NI, "init_g1_ni"},
- {MNG_FN_INIT_G2_NI, "init_g2_ni"},
- {MNG_FN_INIT_G4_NI, "init_g4_ni"},
- {MNG_FN_INIT_G8_NI, "init_g8_ni"},
- {MNG_FN_INIT_G16_NI, "init_g16_ni"},
- {MNG_FN_INIT_RGB8_NI, "init_rgb8_ni"},
- {MNG_FN_INIT_RGB16_NI, "init_rgb16_ni"},
- {MNG_FN_INIT_IDX1_NI, "init_idx1_ni"},
- {MNG_FN_INIT_IDX2_NI, "init_idx2_ni"},
- {MNG_FN_INIT_IDX4_NI, "init_idx4_ni"},
- {MNG_FN_INIT_IDX8_NI, "init_idx8_ni"},
- {MNG_FN_INIT_GA8_NI, "init_ga8_ni"},
- {MNG_FN_INIT_GA16_NI, "init_ga16_ni"},
- {MNG_FN_INIT_RGBA8_NI, "init_rgba8_ni"},
- {MNG_FN_INIT_RGBA16_NI, "init_rgba16_ni"},
-#endif
-
- {MNG_FN_INIT_ROWPROC, "init_rowproc"},
- {MNG_FN_NEXT_ROW, "next_row"},
- {MNG_FN_CLEANUP_ROWPROC, "cleanup_rowproc"},
-
- {MNG_FN_FILTER_A_ROW, "filter_a_row"},
- {MNG_FN_FILTER_SUB, "filter_sub"},
- {MNG_FN_FILTER_UP, "filter_up"},
- {MNG_FN_FILTER_AVERAGE, "filter_average"},
- {MNG_FN_FILTER_PAETH, "filter_paeth"},
-
- {MNG_FN_INIT_ROWDIFFERING, "init_rowdiffering"},
- {MNG_FN_DIFFER_G1, "differ_g1"},
- {MNG_FN_DIFFER_G2, "differ_g2"},
- {MNG_FN_DIFFER_G4, "differ_g4"},
- {MNG_FN_DIFFER_G8, "differ_g8"},
- {MNG_FN_DIFFER_G16, "differ_g16"},
- {MNG_FN_DIFFER_RGB8, "differ_rgb8"},
- {MNG_FN_DIFFER_RGB16, "differ_rgb16"},
- {MNG_FN_DIFFER_IDX1, "differ_idx1"},
- {MNG_FN_DIFFER_IDX2, "differ_idx2"},
- {MNG_FN_DIFFER_IDX4, "differ_idx4"},
- {MNG_FN_DIFFER_IDX8, "differ_idx8"},
- {MNG_FN_DIFFER_GA8, "differ_ga8"},
- {MNG_FN_DIFFER_GA16, "differ_ga16"},
- {MNG_FN_DIFFER_RGBA8, "differ_rgba8"},
- {MNG_FN_DIFFER_RGBA16, "differ_rgba16"},
-
- {MNG_FN_CREATE_IMGDATAOBJECT, "create_imgdataobject"},
- {MNG_FN_FREE_IMGDATAOBJECT, "free_imgdataobject"},
- {MNG_FN_CLONE_IMGDATAOBJECT, "clone_imgdataobject"},
- {MNG_FN_CREATE_IMGOBJECT, "create_imgobject"},
- {MNG_FN_FREE_IMGOBJECT, "free_imgobject"},
- {MNG_FN_FIND_IMGOBJECT, "find_imgobject"},
- {MNG_FN_CLONE_IMGOBJECT, "clone_imgobject"},
- {MNG_FN_RESET_OBJECTDETAILS, "reset_objectdetails"},
- {MNG_FN_RENUM_IMGOBJECT, "renum_imgobject"},
- {MNG_FN_PROMOTE_IMGOBJECT, "promote_imgobject"},
- {MNG_FN_MAGNIFY_IMGOBJECT, "magnify_imgobject"},
- {MNG_FN_COLORCORRECT_OBJECT, "colorcorrect_object"},
-
- {MNG_FN_STORE_G1, "store_g1"},
- {MNG_FN_STORE_G2, "store_g2"},
- {MNG_FN_STORE_G4, "store_g4"},
- {MNG_FN_STORE_G8, "store_g8"},
- {MNG_FN_STORE_G16, "store_g16"},
- {MNG_FN_STORE_RGB8, "store_rgb8"},
- {MNG_FN_STORE_RGB16, "store_rgb16"},
- {MNG_FN_STORE_IDX1, "store_idx1"},
- {MNG_FN_STORE_IDX2, "store_idx2"},
- {MNG_FN_STORE_IDX4, "store_idx4"},
- {MNG_FN_STORE_IDX8, "store_idx8"},
- {MNG_FN_STORE_GA8, "store_ga8"},
- {MNG_FN_STORE_GA16, "store_ga16"},
- {MNG_FN_STORE_RGBA8, "store_rgba8"},
- {MNG_FN_STORE_RGBA16, "store_rgba16"},
-
- {MNG_FN_RETRIEVE_G8, "retrieve_g8"},
- {MNG_FN_RETRIEVE_G16, "retrieve_g16"},
- {MNG_FN_RETRIEVE_RGB8, "retrieve_rgb8"},
- {MNG_FN_RETRIEVE_RGB16, "retrieve_rgb16"},
- {MNG_FN_RETRIEVE_IDX8, "retrieve_idx8"},
- {MNG_FN_RETRIEVE_GA8, "retrieve_ga8"},
- {MNG_FN_RETRIEVE_GA16, "retrieve_ga16"},
- {MNG_FN_RETRIEVE_RGBA8, "retrieve_rgba8"},
- {MNG_FN_RETRIEVE_RGBA16, "retrieve_rgba16"},
-
-#ifndef MNG_NO_DELTA_PNG
- {MNG_FN_DELTA_G1, "delta_g1"},
- {MNG_FN_DELTA_G2, "delta_g2"},
- {MNG_FN_DELTA_G4, "delta_g4"},
- {MNG_FN_DELTA_G8, "delta_g8"},
- {MNG_FN_DELTA_G16, "delta_g16"},
- {MNG_FN_DELTA_RGB8, "delta_rgb8"},
- {MNG_FN_DELTA_RGB16, "delta_rgb16"},
- {MNG_FN_DELTA_IDX1, "delta_idx1"},
- {MNG_FN_DELTA_IDX2, "delta_idx2"},
- {MNG_FN_DELTA_IDX4, "delta_idx4"},
- {MNG_FN_DELTA_IDX8, "delta_idx8"},
- {MNG_FN_DELTA_GA8, "delta_ga8"},
- {MNG_FN_DELTA_GA16, "delta_ga16"},
- {MNG_FN_DELTA_RGBA8, "delta_rgba8"},
- {MNG_FN_DELTA_RGBA16, "delta_rgba16"},
-#endif
-
- {MNG_FN_CREATE_ANI_LOOP, "create_ani_loop"},
- {MNG_FN_CREATE_ANI_ENDL, "create_ani_endl"},
- {MNG_FN_CREATE_ANI_DEFI, "create_ani_defi"},
- {MNG_FN_CREATE_ANI_BASI, "create_ani_basi"},
- {MNG_FN_CREATE_ANI_CLON, "create_ani_clon"},
-#ifndef MNG_SKIPCHUNK_PAST
- {MNG_FN_CREATE_ANI_PAST, "create_ani_past"},
-#endif
- {MNG_FN_CREATE_ANI_DISC, "create_ani_disc"},
- {MNG_FN_CREATE_ANI_BACK, "create_ani_back"},
- {MNG_FN_CREATE_ANI_FRAM, "create_ani_fram"},
- {MNG_FN_CREATE_ANI_MOVE, "create_ani_move"},
- {MNG_FN_CREATE_ANI_CLIP, "create_ani_clip"},
- {MNG_FN_CREATE_ANI_SHOW, "create_ani_show"},
- {MNG_FN_CREATE_ANI_TERM, "create_ani_term"},
- {MNG_FN_CREATE_ANI_SAVE, "create_ani_save"},
- {MNG_FN_CREATE_ANI_SEEK, "create_ani_seek"},
- {MNG_FN_CREATE_ANI_GAMA, "create_ani_gama"},
- {MNG_FN_CREATE_ANI_CHRM, "create_ani_chrm"},
- {MNG_FN_CREATE_ANI_SRGB, "create_ani_srgb"},
- {MNG_FN_CREATE_ANI_ICCP, "create_ani_iccp"},
- {MNG_FN_CREATE_ANI_PLTE, "create_ani_plte"},
- {MNG_FN_CREATE_ANI_TRNS, "create_ani_trns"},
- {MNG_FN_CREATE_ANI_BKGD, "create_ani_bkgd"},
-#ifndef MNG_NO_DELTA_PNG
- {MNG_FN_CREATE_ANI_DHDR, "create_ani_dhdr"},
- {MNG_FN_CREATE_ANI_PROM, "create_ani_prom"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_CREATE_ANI_IPNG, "create_ani_ipng"},
-#endif
- {MNG_FN_CREATE_ANI_IJNG, "create_ani_ijng"},
- {MNG_FN_CREATE_ANI_PPLT, "create_ani_pplt"},
-#endif
- {MNG_FN_CREATE_ANI_MAGN, "create_ani_magn"},
-
- {MNG_FN_CREATE_ANI_IMAGE, "create_ani_image"},
- {MNG_FN_CREATE_EVENT, "create_event"},
-
- {MNG_FN_FREE_ANI_LOOP, "free_ani_loop"},
- {MNG_FN_FREE_ANI_ENDL, "free_ani_endl"},
- {MNG_FN_FREE_ANI_DEFI, "free_ani_defi"},
- {MNG_FN_FREE_ANI_BASI, "free_ani_basi"},
- {MNG_FN_FREE_ANI_CLON, "free_ani_clon"},
-#ifndef MNG_SKIPCHUNK_PAST
- {MNG_FN_FREE_ANI_PAST, "free_ani_past"},
-#endif
- {MNG_FN_FREE_ANI_DISC, "free_ani_disc"},
- {MNG_FN_FREE_ANI_BACK, "free_ani_back"},
- {MNG_FN_FREE_ANI_FRAM, "free_ani_fram"},
- {MNG_FN_FREE_ANI_MOVE, "free_ani_move"},
- {MNG_FN_FREE_ANI_CLIP, "free_ani_clip"},
- {MNG_FN_FREE_ANI_SHOW, "free_ani_show"},
- {MNG_FN_FREE_ANI_TERM, "free_ani_term"},
- {MNG_FN_FREE_ANI_SAVE, "free_ani_save"},
- {MNG_FN_FREE_ANI_SEEK, "free_ani_seek"},
- {MNG_FN_FREE_ANI_GAMA, "free_ani_gama"},
- {MNG_FN_FREE_ANI_CHRM, "free_ani_chrm"},
- {MNG_FN_FREE_ANI_SRGB, "free_ani_srgb"},
- {MNG_FN_FREE_ANI_ICCP, "free_ani_iccp"},
- {MNG_FN_FREE_ANI_PLTE, "free_ani_plte"},
- {MNG_FN_FREE_ANI_TRNS, "free_ani_trns"},
- {MNG_FN_FREE_ANI_BKGD, "free_ani_bkgd"},
-#ifndef MNG_NO_DELTA_PNG
- {MNG_FN_FREE_ANI_DHDR, "free_ani_dhdr"},
- {MNG_FN_FREE_ANI_PROM, "free_ani_prom"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_FREE_ANI_IPNG, "free_ani_ipng"},
-#endif
- {MNG_FN_FREE_ANI_IJNG, "free_ani_ijng"},
- {MNG_FN_FREE_ANI_PPLT, "free_ani_pplt"},
-#endif
- {MNG_FN_FREE_ANI_MAGN, "free_ani_magn"},
-
- {MNG_FN_FREE_ANI_IMAGE, "free_ani_image"},
- {MNG_FN_FREE_EVENT, "free_event"},
-
- {MNG_FN_PROCESS_ANI_LOOP, "process_ani_loop"},
- {MNG_FN_PROCESS_ANI_ENDL, "process_ani_endl"},
- {MNG_FN_PROCESS_ANI_DEFI, "process_ani_defi"},
- {MNG_FN_PROCESS_ANI_BASI, "process_ani_basi"},
- {MNG_FN_PROCESS_ANI_CLON, "process_ani_clon"},
-#ifndef MNG_SKIPCHUNK_PAST
- {MNG_FN_PROCESS_ANI_PAST, "process_ani_past"},
-#endif
- {MNG_FN_PROCESS_ANI_DISC, "process_ani_disc"},
- {MNG_FN_PROCESS_ANI_BACK, "process_ani_back"},
- {MNG_FN_PROCESS_ANI_FRAM, "process_ani_fram"},
- {MNG_FN_PROCESS_ANI_MOVE, "process_ani_move"},
- {MNG_FN_PROCESS_ANI_CLIP, "process_ani_clip"},
- {MNG_FN_PROCESS_ANI_SHOW, "process_ani_show"},
- {MNG_FN_PROCESS_ANI_TERM, "process_ani_term"},
- {MNG_FN_PROCESS_ANI_SAVE, "process_ani_save"},
- {MNG_FN_PROCESS_ANI_SEEK, "process_ani_seek"},
- {MNG_FN_PROCESS_ANI_GAMA, "process_ani_gama"},
- {MNG_FN_PROCESS_ANI_CHRM, "process_ani_chrm"},
- {MNG_FN_PROCESS_ANI_SRGB, "process_ani_srgb"},
- {MNG_FN_PROCESS_ANI_ICCP, "process_ani_iccp"},
- {MNG_FN_PROCESS_ANI_PLTE, "process_ani_plte"},
- {MNG_FN_PROCESS_ANI_TRNS, "process_ani_trns"},
- {MNG_FN_PROCESS_ANI_BKGD, "process_ani_bkgd"},
-#ifndef MNG_NO_DELTA_PNG
- {MNG_FN_PROCESS_ANI_DHDR, "process_ani_dhdr"},
- {MNG_FN_PROCESS_ANI_PROM, "process_ani_prom"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_PROCESS_ANI_IPNG, "process_ani_ipng"},
-#endif
- {MNG_FN_PROCESS_ANI_IJNG, "process_ani_ijng"},
- {MNG_FN_PROCESS_ANI_PPLT, "process_ani_pplt"},
-#endif
- {MNG_FN_PROCESS_ANI_MAGN, "process_ani_magn"},
-
- {MNG_FN_PROCESS_ANI_IMAGE, "process_ani_image"},
- {MNG_FN_PROCESS_EVENT, "process_event"},
-
- {MNG_FN_RESTORE_BACKIMAGE, "restore_backimage"},
- {MNG_FN_RESTORE_BACKCOLOR, "restore_backcolor"},
- {MNG_FN_RESTORE_BGCOLOR, "restore_bgcolor"},
- {MNG_FN_RESTORE_RGB8, "restore_rgb8"},
- {MNG_FN_RESTORE_BGR8, "restore_bgr8"},
- {MNG_FN_RESTORE_BKGD, "restore_bkgd"},
- {MNG_FN_RESTORE_BGRX8, "restore_bgrx8"},
- {MNG_FN_RESTORE_RGB565, "restore_rgb565"},
-
- {MNG_FN_INIT_IHDR, "init_ihdr"},
- {MNG_FN_INIT_PLTE, "init_plte"},
- {MNG_FN_INIT_IDAT, "init_idat"},
- {MNG_FN_INIT_IEND, "init_iend"},
- {MNG_FN_INIT_TRNS, "init_trns"},
- {MNG_FN_INIT_GAMA, "init_gama"},
- {MNG_FN_INIT_CHRM, "init_chrm"},
- {MNG_FN_INIT_SRGB, "init_srgb"},
- {MNG_FN_INIT_ICCP, "init_iccp"},
- {MNG_FN_INIT_TEXT, "init_text"},
- {MNG_FN_INIT_ZTXT, "init_ztxt"},
- {MNG_FN_INIT_ITXT, "init_itxt"},
- {MNG_FN_INIT_BKGD, "init_bkgd"},
- {MNG_FN_INIT_PHYS, "init_phys"},
- {MNG_FN_INIT_SBIT, "init_sbit"},
- {MNG_FN_INIT_SPLT, "init_splt"},
- {MNG_FN_INIT_HIST, "init_hist"},
- {MNG_FN_INIT_TIME, "init_time"},
- {MNG_FN_INIT_MHDR, "init_mhdr"},
- {MNG_FN_INIT_MEND, "init_mend"},
- {MNG_FN_INIT_LOOP, "init_loop"},
- {MNG_FN_INIT_ENDL, "init_endl"},
- {MNG_FN_INIT_DEFI, "init_defi"},
- {MNG_FN_INIT_BASI, "init_basi"},
- {MNG_FN_INIT_CLON, "init_clon"},
-#ifndef MNG_SKIPCHUNK_PAST
- {MNG_FN_INIT_PAST, "init_past"},
-#endif
- {MNG_FN_INIT_DISC, "init_disc"},
- {MNG_FN_INIT_BACK, "init_back"},
- {MNG_FN_INIT_FRAM, "init_fram"},
- {MNG_FN_INIT_MOVE, "init_move"},
- {MNG_FN_INIT_CLIP, "init_clip"},
- {MNG_FN_INIT_SHOW, "init_show"},
- {MNG_FN_INIT_TERM, "init_term"},
- {MNG_FN_INIT_SAVE, "init_save"},
- {MNG_FN_INIT_SEEK, "init_seek"},
- {MNG_FN_INIT_EXPI, "init_expi"},
- {MNG_FN_INIT_FPRI, "init_fpri"},
- {MNG_FN_INIT_NEED, "init_need"},
- {MNG_FN_INIT_PHYG, "init_phyg"},
-#ifndef MNG_NO_DELTA_PNG
- {MNG_FN_INIT_JHDR, "init_jhdr"},
- {MNG_FN_INIT_JDAT, "init_jdat"},
- {MNG_FN_INIT_JSEP, "init_jsep"},
-#endif
-#ifndef MNG_NO_DELTA_PNG
- {MNG_FN_INIT_DHDR, "init_dhdr"},
- {MNG_FN_INIT_PROM, "init_prom"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_INIT_IPNG, "init_ipng"},
-#endif
- {MNG_FN_INIT_PPLT, "init_pplt"},
- {MNG_FN_INIT_IJNG, "init_ijng"},
- {MNG_FN_INIT_DROP, "init_drop"},
- {MNG_FN_INIT_DBYK, "init_dbyk"},
- {MNG_FN_INIT_ORDR, "init_ordr"},
-#endif
- {MNG_FN_INIT_UNKNOWN, "init_unknown"},
- {MNG_FN_INIT_MAGN, "init_magn"},
- {MNG_FN_INIT_JDAA, "init_jdaa"},
- {MNG_FN_INIT_EVNT, "init_evnt"},
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- {MNG_FN_INIT_MPNG, "init_mpng"},
-#endif
-
- {MNG_FN_ASSIGN_IHDR, "assign_ihdr"},
- {MNG_FN_ASSIGN_PLTE, "assign_plte"},
- {MNG_FN_ASSIGN_IDAT, "assign_idat"},
- {MNG_FN_ASSIGN_IEND, "assign_iend"},
- {MNG_FN_ASSIGN_TRNS, "assign_trns"},
- {MNG_FN_ASSIGN_GAMA, "assign_gama"},
- {MNG_FN_ASSIGN_CHRM, "assign_chrm"},
- {MNG_FN_ASSIGN_SRGB, "assign_srgb"},
- {MNG_FN_ASSIGN_ICCP, "assign_iccp"},
- {MNG_FN_ASSIGN_TEXT, "assign_text"},
- {MNG_FN_ASSIGN_ZTXT, "assign_ztxt"},
- {MNG_FN_ASSIGN_ITXT, "assign_itxt"},
- {MNG_FN_ASSIGN_BKGD, "assign_bkgd"},
- {MNG_FN_ASSIGN_PHYS, "assign_phys"},
- {MNG_FN_ASSIGN_SBIT, "assign_sbit"},
- {MNG_FN_ASSIGN_SPLT, "assign_splt"},
- {MNG_FN_ASSIGN_HIST, "assign_hist"},
- {MNG_FN_ASSIGN_TIME, "assign_time"},
- {MNG_FN_ASSIGN_MHDR, "assign_mhdr"},
- {MNG_FN_ASSIGN_MEND, "assign_mend"},
- {MNG_FN_ASSIGN_LOOP, "assign_loop"},
- {MNG_FN_ASSIGN_ENDL, "assign_endl"},
- {MNG_FN_ASSIGN_DEFI, "assign_defi"},
- {MNG_FN_ASSIGN_BASI, "assign_basi"},
- {MNG_FN_ASSIGN_CLON, "assign_clon"},
-#ifndef MNG_SKIPCHUNK_PAST
- {MNG_FN_ASSIGN_PAST, "assign_past"},
-#endif
- {MNG_FN_ASSIGN_DISC, "assign_disc"},
- {MNG_FN_ASSIGN_BACK, "assign_back"},
- {MNG_FN_ASSIGN_FRAM, "assign_fram"},
- {MNG_FN_ASSIGN_MOVE, "assign_move"},
- {MNG_FN_ASSIGN_CLIP, "assign_clip"},
- {MNG_FN_ASSIGN_SHOW, "assign_show"},
- {MNG_FN_ASSIGN_TERM, "assign_term"},
- {MNG_FN_ASSIGN_SAVE, "assign_save"},
- {MNG_FN_ASSIGN_SEEK, "assign_seek"},
- {MNG_FN_ASSIGN_EXPI, "assign_expi"},
- {MNG_FN_ASSIGN_FPRI, "assign_fpri"},
- {MNG_FN_ASSIGN_NEED, "assign_need"},
- {MNG_FN_ASSIGN_PHYG, "assign_phyg"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_ASSIGN_JHDR, "assign_jhdr"},
- {MNG_FN_ASSIGN_JDAT, "assign_jdat"},
- {MNG_FN_ASSIGN_JSEP, "assign_jsep"},
-#endif
-#ifndef MNG_NO_DELTA_PNG
- {MNG_FN_ASSIGN_DHDR, "assign_dhdr"},
- {MNG_FN_ASSIGN_PROM, "assign_prom"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_ASSIGN_IPNG, "assign_ipng"},
-#endif
- {MNG_FN_ASSIGN_PPLT, "assign_pplt"},
- {MNG_FN_ASSIGN_IJNG, "assign_ijng"},
- {MNG_FN_ASSIGN_DROP, "assign_drop"},
- {MNG_FN_ASSIGN_DBYK, "assign_dbyk"},
- {MNG_FN_ASSIGN_ORDR, "assign_ordr"},
-#endif
- {MNG_FN_ASSIGN_UNKNOWN, "assign_unknown"},
- {MNG_FN_ASSIGN_MAGN, "assign_magn"},
- {MNG_FN_ASSIGN_JDAA, "assign_jdaa"},
- {MNG_FN_ASSIGN_EVNT, "assign_evnt"},
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- {MNG_FN_ASSIGN_MPNG, "assign_mpng"},
-#endif
-
- {MNG_FN_FREE_IHDR, "free_ihdr"},
- {MNG_FN_FREE_PLTE, "free_plte"},
- {MNG_FN_FREE_IDAT, "free_idat"},
- {MNG_FN_FREE_IEND, "free_iend"},
- {MNG_FN_FREE_TRNS, "free_trns"},
- {MNG_FN_FREE_GAMA, "free_gama"},
- {MNG_FN_FREE_CHRM, "free_chrm"},
- {MNG_FN_FREE_SRGB, "free_srgb"},
- {MNG_FN_FREE_ICCP, "free_iccp"},
- {MNG_FN_FREE_TEXT, "free_text"},
- {MNG_FN_FREE_ZTXT, "free_ztxt"},
- {MNG_FN_FREE_ITXT, "free_itxt"},
- {MNG_FN_FREE_BKGD, "free_bkgd"},
- {MNG_FN_FREE_PHYS, "free_phys"},
- {MNG_FN_FREE_SBIT, "free_sbit"},
- {MNG_FN_FREE_SPLT, "free_splt"},
- {MNG_FN_FREE_HIST, "free_hist"},
- {MNG_FN_FREE_TIME, "free_time"},
- {MNG_FN_FREE_MHDR, "free_mhdr"},
- {MNG_FN_FREE_MEND, "free_mend"},
- {MNG_FN_FREE_LOOP, "free_loop"},
- {MNG_FN_FREE_ENDL, "free_endl"},
- {MNG_FN_FREE_DEFI, "free_defi"},
- {MNG_FN_FREE_BASI, "free_basi"},
- {MNG_FN_FREE_CLON, "free_clon"},
-#ifndef MNG_SKIPCHUNK_PAST
- {MNG_FN_FREE_PAST, "free_past"},
-#endif
- {MNG_FN_FREE_DISC, "free_disc"},
- {MNG_FN_FREE_BACK, "free_back"},
- {MNG_FN_FREE_FRAM, "free_fram"},
- {MNG_FN_FREE_MOVE, "free_move"},
- {MNG_FN_FREE_CLIP, "free_clip"},
- {MNG_FN_FREE_SHOW, "free_show"},
- {MNG_FN_FREE_TERM, "free_term"},
- {MNG_FN_FREE_SAVE, "free_save"},
- {MNG_FN_FREE_SEEK, "free_seek"},
- {MNG_FN_FREE_EXPI, "free_expi"},
- {MNG_FN_FREE_FPRI, "free_fpri"},
- {MNG_FN_FREE_NEED, "free_need"},
- {MNG_FN_FREE_PHYG, "free_phyg"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_FREE_JHDR, "free_jhdr"},
- {MNG_FN_FREE_JDAT, "free_jdat"},
- {MNG_FN_FREE_JSEP, "free_jsep"},
-#endif
-#ifndef MNG_NO_DELTA_PNG
- {MNG_FN_FREE_DHDR, "free_dhdr"},
- {MNG_FN_FREE_PROM, "free_prom"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_FREE_IPNG, "free_ipng"},
-#endif
- {MNG_FN_FREE_PPLT, "free_pplt"},
- {MNG_FN_FREE_IJNG, "free_ijng"},
- {MNG_FN_FREE_DROP, "free_drop"},
- {MNG_FN_FREE_DBYK, "free_dbyk"},
- {MNG_FN_FREE_ORDR, "free_ordr"},
-#endif
- {MNG_FN_FREE_UNKNOWN, "free_unknown"},
- {MNG_FN_FREE_MAGN, "free_magn"},
- {MNG_FN_FREE_JDAA, "free_jdaa"},
- {MNG_FN_FREE_EVNT, "free_evnt"},
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- {MNG_FN_FREE_MPNG, "free_mpng"},
-#endif
-
- {MNG_FN_READ_IHDR, "read_ihdr"},
- {MNG_FN_READ_PLTE, "read_plte"},
- {MNG_FN_READ_IDAT, "read_idat"},
- {MNG_FN_READ_IEND, "read_iend"},
- {MNG_FN_READ_TRNS, "read_trns"},
- {MNG_FN_READ_GAMA, "read_gama"},
- {MNG_FN_READ_CHRM, "read_chrm"},
- {MNG_FN_READ_SRGB, "read_srgb"},
- {MNG_FN_READ_ICCP, "read_iccp"},
- {MNG_FN_READ_TEXT, "read_text"},
- {MNG_FN_READ_ZTXT, "read_ztxt"},
- {MNG_FN_READ_ITXT, "read_itxt"},
- {MNG_FN_READ_BKGD, "read_bkgd"},
- {MNG_FN_READ_PHYS, "read_phys"},
- {MNG_FN_READ_SBIT, "read_sbit"},
- {MNG_FN_READ_SPLT, "read_splt"},
- {MNG_FN_READ_HIST, "read_hist"},
- {MNG_FN_READ_TIME, "read_time"},
- {MNG_FN_READ_MHDR, "read_mhdr"},
- {MNG_FN_READ_MEND, "read_mend"},
- {MNG_FN_READ_LOOP, "read_loop"},
- {MNG_FN_READ_ENDL, "read_endl"},
- {MNG_FN_READ_DEFI, "read_defi"},
- {MNG_FN_READ_BASI, "read_basi"},
- {MNG_FN_READ_CLON, "read_clon"},
-#ifndef MNG_SKIPCHUNK_PAST
- {MNG_FN_READ_PAST, "read_past"},
-#endif
- {MNG_FN_READ_DISC, "read_disc"},
- {MNG_FN_READ_BACK, "read_back"},
- {MNG_FN_READ_FRAM, "read_fram"},
- {MNG_FN_READ_MOVE, "read_move"},
- {MNG_FN_READ_CLIP, "read_clip"},
- {MNG_FN_READ_SHOW, "read_show"},
- {MNG_FN_READ_TERM, "read_term"},
- {MNG_FN_READ_SAVE, "read_save"},
- {MNG_FN_READ_SEEK, "read_seek"},
- {MNG_FN_READ_EXPI, "read_expi"},
- {MNG_FN_READ_FPRI, "read_fpri"},
- {MNG_FN_READ_NEED, "read_need"},
- {MNG_FN_READ_PHYG, "read_phyg"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_READ_JHDR, "read_jhdr"},
- {MNG_FN_READ_JDAT, "read_jdat"},
- {MNG_FN_READ_JSEP, "read_jsep"},
-#endif
-#ifndef MNG_NO_DELTA_PNG
- {MNG_FN_READ_DHDR, "read_dhdr"},
- {MNG_FN_READ_PROM, "read_prom"},
- {MNG_FN_READ_IPNG, "read_ipng"},
- {MNG_FN_READ_PPLT, "read_pplt"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_READ_IJNG, "read_ijng"},
-#endif
- {MNG_FN_READ_DROP, "read_drop"},
- {MNG_FN_READ_DBYK, "read_dbyk"},
- {MNG_FN_READ_ORDR, "read_ordr"},
-#endif
- {MNG_FN_READ_UNKNOWN, "read_unknown"},
- {MNG_FN_READ_MAGN, "read_magn"},
- {MNG_FN_READ_JDAA, "read_jdaa"},
- {MNG_FN_READ_EVNT, "read_evnt"},
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- {MNG_FN_READ_MPNG, "read_mpng"},
-#endif
-
- {MNG_FN_WRITE_IHDR, "write_ihdr"},
- {MNG_FN_WRITE_PLTE, "write_plte"},
- {MNG_FN_WRITE_IDAT, "write_idat"},
- {MNG_FN_WRITE_IEND, "write_iend"},
- {MNG_FN_WRITE_TRNS, "write_trns"},
- {MNG_FN_WRITE_GAMA, "write_gama"},
- {MNG_FN_WRITE_CHRM, "write_chrm"},
- {MNG_FN_WRITE_SRGB, "write_srgb"},
- {MNG_FN_WRITE_ICCP, "write_iccp"},
- {MNG_FN_WRITE_TEXT, "write_text"},
- {MNG_FN_WRITE_ZTXT, "write_ztxt"},
- {MNG_FN_WRITE_ITXT, "write_itxt"},
- {MNG_FN_WRITE_BKGD, "write_bkgd"},
- {MNG_FN_WRITE_PHYS, "write_phys"},
- {MNG_FN_WRITE_SBIT, "write_sbit"},
- {MNG_FN_WRITE_SPLT, "write_splt"},
- {MNG_FN_WRITE_HIST, "write_hist"},
- {MNG_FN_WRITE_TIME, "write_time"},
- {MNG_FN_WRITE_MHDR, "write_mhdr"},
- {MNG_FN_WRITE_MEND, "write_mend"},
- {MNG_FN_WRITE_LOOP, "write_loop"},
- {MNG_FN_WRITE_ENDL, "write_endl"},
- {MNG_FN_WRITE_DEFI, "write_defi"},
- {MNG_FN_WRITE_BASI, "write_basi"},
- {MNG_FN_WRITE_CLON, "write_clon"},
-#ifndef MNG_SKIPCHUNK_PAST
- {MNG_FN_WRITE_PAST, "write_past"},
-#endif
- {MNG_FN_WRITE_DISC, "write_disc"},
- {MNG_FN_WRITE_BACK, "write_back"},
- {MNG_FN_WRITE_FRAM, "write_fram"},
- {MNG_FN_WRITE_MOVE, "write_move"},
- {MNG_FN_WRITE_CLIP, "write_clip"},
- {MNG_FN_WRITE_SHOW, "write_show"},
- {MNG_FN_WRITE_TERM, "write_term"},
- {MNG_FN_WRITE_SAVE, "write_save"},
- {MNG_FN_WRITE_SEEK, "write_seek"},
- {MNG_FN_WRITE_EXPI, "write_expi"},
- {MNG_FN_WRITE_FPRI, "write_fpri"},
- {MNG_FN_WRITE_NEED, "write_need"},
- {MNG_FN_WRITE_PHYG, "write_phyg"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_WRITE_JHDR, "write_jhdr"},
- {MNG_FN_WRITE_JDAT, "write_jdat"},
- {MNG_FN_WRITE_JSEP, "write_jsep"},
-#endif
-#ifndef MNG_NO_DELTA_PNG
- {MNG_FN_WRITE_DHDR, "write_dhdr"},
- {MNG_FN_WRITE_PROM, "write_prom"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_WRITE_IPNG, "write_ipng"},
-#endif
- {MNG_FN_WRITE_PPLT, "write_pplt"},
- {MNG_FN_WRITE_IJNG, "write_ijng"},
- {MNG_FN_WRITE_DROP, "write_drop"},
- {MNG_FN_WRITE_DBYK, "write_dbyk"},
- {MNG_FN_WRITE_ORDR, "write_ordr"},
-#endif
- {MNG_FN_WRITE_UNKNOWN, "write_unknown"},
- {MNG_FN_WRITE_MAGN, "write_magn"},
- {MNG_FN_WRITE_JDAA, "write_jdaa"},
- {MNG_FN_WRITE_EVNT, "write_evnt"},
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- {MNG_FN_WRITE_MPNG, "write_mpng"},
-#endif
-
- {MNG_FN_ZLIB_INITIALIZE, "zlib_initialize"},
- {MNG_FN_ZLIB_CLEANUP, "zlib_cleanup"},
- {MNG_FN_ZLIB_INFLATEINIT, "zlib_inflateinit"},
- {MNG_FN_ZLIB_INFLATEROWS, "zlib_inflaterows"},
- {MNG_FN_ZLIB_INFLATEDATA, "zlib_inflatedata"},
- {MNG_FN_ZLIB_INFLATEFREE, "zlib_inflatefree"},
- {MNG_FN_ZLIB_DEFLATEINIT, "zlib_deflateinit"},
- {MNG_FN_ZLIB_DEFLATEROWS, "zlib_deflaterows"},
- {MNG_FN_ZLIB_DEFLATEDATA, "zlib_deflatedata"},
- {MNG_FN_ZLIB_DEFLATEFREE, "zlib_deflatefree"},
-
- {MNG_FN_PROCESS_DISPLAY_IHDR, "process_display_ihdr"},
- {MNG_FN_PROCESS_DISPLAY_PLTE, "process_display_plte"},
- {MNG_FN_PROCESS_DISPLAY_IDAT, "process_display_idat"},
- {MNG_FN_PROCESS_DISPLAY_IEND, "process_display_iend"},
- {MNG_FN_PROCESS_DISPLAY_TRNS, "process_display_trns"},
- {MNG_FN_PROCESS_DISPLAY_GAMA, "process_display_gama"},
- {MNG_FN_PROCESS_DISPLAY_CHRM, "process_display_chrm"},
- {MNG_FN_PROCESS_DISPLAY_SRGB, "process_display_srgb"},
- {MNG_FN_PROCESS_DISPLAY_ICCP, "process_display_iccp"},
- {MNG_FN_PROCESS_DISPLAY_BKGD, "process_display_bkgd"},
- {MNG_FN_PROCESS_DISPLAY_PHYS, "process_display_phys"},
- {MNG_FN_PROCESS_DISPLAY_SBIT, "process_display_sbit"},
- {MNG_FN_PROCESS_DISPLAY_SPLT, "process_display_splt"},
- {MNG_FN_PROCESS_DISPLAY_HIST, "process_display_hist"},
- {MNG_FN_PROCESS_DISPLAY_MHDR, "process_display_mhdr"},
- {MNG_FN_PROCESS_DISPLAY_MEND, "process_display_mend"},
- {MNG_FN_PROCESS_DISPLAY_LOOP, "process_display_loop"},
- {MNG_FN_PROCESS_DISPLAY_ENDL, "process_display_endl"},
- {MNG_FN_PROCESS_DISPLAY_DEFI, "process_display_defi"},
- {MNG_FN_PROCESS_DISPLAY_BASI, "process_display_basi"},
- {MNG_FN_PROCESS_DISPLAY_CLON, "process_display_clon"},
-#ifndef MNG_SKIPCHUNK_PAST
- {MNG_FN_PROCESS_DISPLAY_PAST, "process_display_past"},
-#endif
- {MNG_FN_PROCESS_DISPLAY_DISC, "process_display_disc"},
- {MNG_FN_PROCESS_DISPLAY_BACK, "process_display_back"},
- {MNG_FN_PROCESS_DISPLAY_FRAM, "process_display_fram"},
- {MNG_FN_PROCESS_DISPLAY_MOVE, "process_display_move"},
- {MNG_FN_PROCESS_DISPLAY_CLIP, "process_display_clip"},
- {MNG_FN_PROCESS_DISPLAY_SHOW, "process_display_show"},
- {MNG_FN_PROCESS_DISPLAY_TERM, "process_display_term"},
- {MNG_FN_PROCESS_DISPLAY_SAVE, "process_display_save"},
- {MNG_FN_PROCESS_DISPLAY_SEEK, "process_display_seek"},
- {MNG_FN_PROCESS_DISPLAY_EXPI, "process_display_expi"},
- {MNG_FN_PROCESS_DISPLAY_FPRI, "process_display_fpri"},
- {MNG_FN_PROCESS_DISPLAY_NEED, "process_display_need"},
- {MNG_FN_PROCESS_DISPLAY_PHYG, "process_display_phyg"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_PROCESS_DISPLAY_JHDR, "process_display_jhdr"},
- {MNG_FN_PROCESS_DISPLAY_JDAT, "process_display_jdat"},
- {MNG_FN_PROCESS_DISPLAY_JSEP, "process_display_jsep"},
-#endif
-#ifndef MNG_NO_DELTA_PNG
- {MNG_FN_PROCESS_DISPLAY_DHDR, "process_display_dhdr"},
- {MNG_FN_PROCESS_DISPLAY_PROM, "process_display_prom"},
-#ifdef MNG_INCLUDE_JNG
- {MNG_FN_PROCESS_DISPLAY_IPNG, "process_display_ipng"},
-#endif
- {MNG_FN_PROCESS_DISPLAY_PPLT, "process_display_pplt"},
- {MNG_FN_PROCESS_DISPLAY_IJNG, "process_display_ijng"},
- {MNG_FN_PROCESS_DISPLAY_DROP, "process_display_drop"},
- {MNG_FN_PROCESS_DISPLAY_DBYK, "process_display_dbyk"},
- {MNG_FN_PROCESS_DISPLAY_ORDR, "process_display_ordr"},
-#endif
- {MNG_FN_PROCESS_DISPLAY_MAGN, "process_display_magn"},
- {MNG_FN_PROCESS_DISPLAY_JDAA, "process_display_jdaa"},
-
- {MNG_FN_JPEG_INITIALIZE, "jpeg_initialize"},
- {MNG_FN_JPEG_CLEANUP, "jpeg_cleanup"},
- {MNG_FN_JPEG_DECOMPRESSINIT, "jpeg_decompressinit"},
- {MNG_FN_JPEG_DECOMPRESSDATA, "jpeg_decompressdata"},
- {MNG_FN_JPEG_DECOMPRESSFREE, "jpeg_decompressfree"},
-
- {MNG_FN_STORE_JPEG_G8, "store_jpeg_g8"},
- {MNG_FN_STORE_JPEG_RGB8, "store_jpeg_rgb8"},
- {MNG_FN_STORE_JPEG_G12, "store_jpeg_g12"},
- {MNG_FN_STORE_JPEG_RGB12, "store_jpeg_rgb12"},
- {MNG_FN_STORE_JPEG_GA8, "store_jpeg_ga8"},
- {MNG_FN_STORE_JPEG_RGBA8, "store_jpeg_rgba8"},
- {MNG_FN_STORE_JPEG_GA12, "store_jpeg_ga12"},
- {MNG_FN_STORE_JPEG_RGBA12, "store_jpeg_rgba12"},
- {MNG_FN_STORE_JPEG_G8_ALPHA, "store_jpeg_g8_alpha"},
- {MNG_FN_STORE_JPEG_RGB8_ALPHA, "store_jpeg_rgb8_alpha"},
-
- {MNG_FN_INIT_JPEG_A1_NI, "init_jpeg_a1_ni"},
- {MNG_FN_INIT_JPEG_A2_NI, "init_jpeg_a2_ni"},
- {MNG_FN_INIT_JPEG_A4_NI, "init_jpeg_a4_ni"},
- {MNG_FN_INIT_JPEG_A8_NI, "init_jpeg_a8_ni"},
- {MNG_FN_INIT_JPEG_A16_NI, "init_jpeg_a16_ni"},
-
- {MNG_FN_STORE_JPEG_G8_A1, "store_jpeg_g8_a1"},
- {MNG_FN_STORE_JPEG_G8_A2, "store_jpeg_g8_a2"},
- {MNG_FN_STORE_JPEG_G8_A4, "store_jpeg_g8_a4"},
- {MNG_FN_STORE_JPEG_G8_A8, "store_jpeg_g8_a8"},
- {MNG_FN_STORE_JPEG_G8_A16, "store_jpeg_g8_a16"},
-
- {MNG_FN_STORE_JPEG_RGB8_A1, "store_jpeg_rgb8_a1"},
- {MNG_FN_STORE_JPEG_RGB8_A2, "store_jpeg_rgb8_a2"},
- {MNG_FN_STORE_JPEG_RGB8_A4, "store_jpeg_rgb8_a4"},
- {MNG_FN_STORE_JPEG_RGB8_A8, "store_jpeg_rgb8_a8"},
- {MNG_FN_STORE_JPEG_RGB8_A16, "store_jpeg_rgb8_a16"},
-
- {MNG_FN_STORE_JPEG_G12_A1, "store_jpeg_g12_a1"},
- {MNG_FN_STORE_JPEG_G12_A2, "store_jpeg_g12_a2"},
- {MNG_FN_STORE_JPEG_G12_A4, "store_jpeg_g12_a4"},
- {MNG_FN_STORE_JPEG_G12_A8, "store_jpeg_g12_a8"},
- {MNG_FN_STORE_JPEG_G12_A16, "store_jpeg_g12_a16"},
-
- {MNG_FN_STORE_JPEG_RGB12_A1, "store_jpeg_rgb12_a1"},
- {MNG_FN_STORE_JPEG_RGB12_A2, "store_jpeg_rgb12_a2"},
- {MNG_FN_STORE_JPEG_RGB12_A4, "store_jpeg_rgb12_a4"},
- {MNG_FN_STORE_JPEG_RGB12_A8, "store_jpeg_rgb12_a8"},
- {MNG_FN_STORE_JPEG_RGB12_A16, "store_jpeg_rgb12_a16"},
-
- {MNG_FN_NEXT_JPEG_ALPHAROW, "next_jpeg_alpharow"},
- {MNG_FN_NEXT_JPEG_ROW, "next_jpeg_row"},
- {MNG_FN_DISPLAY_JPEG_ROWS, "display_jpeg_rows"},
-
- {MNG_FN_MAGNIFY_G8_X1, "magnify_g8_x1"},
- {MNG_FN_MAGNIFY_G8_X2, "magnify_g8_x2"},
- {MNG_FN_MAGNIFY_RGB8_X1, "magnify_rgb8_x1"},
- {MNG_FN_MAGNIFY_RGB8_X2, "magnify_rgb8_x2"},
- {MNG_FN_MAGNIFY_GA8_X1, "magnify_ga8_x1"},
- {MNG_FN_MAGNIFY_GA8_X2, "magnify_ga8_x2"},
- {MNG_FN_MAGNIFY_GA8_X3, "magnify_ga8_x3"},
- {MNG_FN_MAGNIFY_GA8_X4, "magnify_ga8_x4"},
- {MNG_FN_MAGNIFY_RGBA8_X1, "magnify_rgba8_x1"},
- {MNG_FN_MAGNIFY_RGBA8_X2, "magnify_rgba8_x2"},
- {MNG_FN_MAGNIFY_RGBA8_X3, "magnify_rgba8_x3"},
- {MNG_FN_MAGNIFY_RGBA8_X4, "magnify_rgba8_x4"},
- {MNG_FN_MAGNIFY_G8_X3, "magnify_g8_x3"},
- {MNG_FN_MAGNIFY_RGB8_X3, "magnify_rgb8_x3"},
- {MNG_FN_MAGNIFY_GA8_X5, "magnify_ga8_x5"},
- {MNG_FN_MAGNIFY_RGBA8_X5, "magnify_rgba8_x5"},
-
- {MNG_FN_MAGNIFY_G8_Y1, "magnify_g8_y1"},
- {MNG_FN_MAGNIFY_G8_Y2, "magnify_g8_y2"},
- {MNG_FN_MAGNIFY_RGB8_Y1, "magnify_rgb8_y1"},
- {MNG_FN_MAGNIFY_RGB8_Y2, "magnify_rgb8_y2"},
- {MNG_FN_MAGNIFY_GA8_Y1, "magnify_ga8_y1"},
- {MNG_FN_MAGNIFY_GA8_Y2, "magnify_ga8_y2"},
- {MNG_FN_MAGNIFY_GA8_Y3, "magnify_ga8_y3"},
- {MNG_FN_MAGNIFY_GA8_Y4, "magnify_ga8_y4"},
- {MNG_FN_MAGNIFY_RGBA8_Y1, "magnify_rgba8_y1"},
- {MNG_FN_MAGNIFY_RGBA8_Y2, "magnify_rgba8_y2"},
- {MNG_FN_MAGNIFY_RGBA8_Y3, "magnify_rgba8_y3"},
- {MNG_FN_MAGNIFY_RGBA8_Y4, "magnify_rgba8_y4"},
- {MNG_FN_MAGNIFY_G8_Y3, "magnify_g8_y3"},
- {MNG_FN_MAGNIFY_RGB8_Y3, "magnify_rgb8_y3"},
- {MNG_FN_MAGNIFY_GA8_Y5, "magnify_ga8_y5"},
- {MNG_FN_MAGNIFY_RGBA8_Y5, "magnify_rgba8_y5"},
-
- {MNG_FN_MAGNIFY_G8_X1, "magnify_g8_x1"},
- {MNG_FN_MAGNIFY_G8_X2, "magnify_g8_x2"},
- {MNG_FN_MAGNIFY_RGB8_X1, "magnify_rgb8_x1"},
- {MNG_FN_MAGNIFY_RGB8_X2, "magnify_rgb8_x2"},
- {MNG_FN_MAGNIFY_GA8_X1, "magnify_ga8_x1"},
- {MNG_FN_MAGNIFY_GA8_X2, "magnify_ga8_x2"},
- {MNG_FN_MAGNIFY_GA8_X3, "magnify_ga8_x3"},
- {MNG_FN_MAGNIFY_GA8_X4, "magnify_ga8_x4"},
- {MNG_FN_MAGNIFY_RGBA8_X1, "magnify_rgba8_x1"},
- {MNG_FN_MAGNIFY_RGBA8_X2, "magnify_rgba8_x2"},
- {MNG_FN_MAGNIFY_RGBA8_X3, "magnify_rgba8_x3"},
- {MNG_FN_MAGNIFY_RGBA8_X4, "magnify_rgba8_x4"},
- {MNG_FN_MAGNIFY_G8_X3, "magnify_g8_x3"},
- {MNG_FN_MAGNIFY_RGB8_X3, "magnify_rgb8_x3"},
- {MNG_FN_MAGNIFY_GA8_X5, "magnify_ga8_x5"},
- {MNG_FN_MAGNIFY_RGBA8_X5, "magnify_rgba8_x5"},
-
- {MNG_FN_MAGNIFY_G8_Y1, "magnify_g8_y1"},
- {MNG_FN_MAGNIFY_G8_Y2, "magnify_g8_y2"},
- {MNG_FN_MAGNIFY_RGB8_Y1, "magnify_rgb8_y1"},
- {MNG_FN_MAGNIFY_RGB8_Y2, "magnify_rgb8_y2"},
- {MNG_FN_MAGNIFY_GA8_Y1, "magnify_ga8_y1"},
- {MNG_FN_MAGNIFY_GA8_Y2, "magnify_ga8_y2"},
- {MNG_FN_MAGNIFY_GA8_Y3, "magnify_ga8_y3"},
- {MNG_FN_MAGNIFY_GA8_Y4, "magnify_ga8_y4"},
- {MNG_FN_MAGNIFY_RGBA8_Y1, "magnify_rgba8_y1"},
- {MNG_FN_MAGNIFY_RGBA8_Y2, "magnify_rgba8_y2"},
- {MNG_FN_MAGNIFY_RGBA8_Y3, "magnify_rgba8_y3"},
- {MNG_FN_MAGNIFY_RGBA8_Y4, "magnify_rgba8_y4"},
- {MNG_FN_MAGNIFY_G8_Y3, "magnify_g8_y3"},
- {MNG_FN_MAGNIFY_RGB8_Y3, "magnify_rgb8_y3"},
- {MNG_FN_MAGNIFY_GA8_Y5, "magnify_ga8_y5"},
- {MNG_FN_MAGNIFY_RGBA8_Y5, "magnify_rgba8_y5"},
-
- {MNG_FN_DELTA_G1_G1, "delta_g1_g1"},
- {MNG_FN_DELTA_G2_G2, "delta_g2_g2"},
- {MNG_FN_DELTA_G4_G4, "delta_g4_g4"},
- {MNG_FN_DELTA_G8_G8, "delta_g8_g8"},
- {MNG_FN_DELTA_G16_G16, "delta_g16_g16"},
- {MNG_FN_DELTA_RGB8_RGB8, "delta_rgb8_rgb8"},
- {MNG_FN_DELTA_RGB16_RGB16, "delta_rgb16_rgb16"},
- {MNG_FN_DELTA_GA8_GA8, "delta_ga8_ga8"},
- {MNG_FN_DELTA_GA8_G8, "delta_ga8_g8"},
- {MNG_FN_DELTA_GA8_A8, "delta_ga8_a8"},
- {MNG_FN_DELTA_GA16_GA16, "delta_ga16_ga16"},
- {MNG_FN_DELTA_GA16_G16, "delta_ga16_g16"},
- {MNG_FN_DELTA_GA16_A16, "delta_ga16_a16"},
- {MNG_FN_DELTA_RGBA8_RGBA8, "delta_rgba8_rgba8"},
- {MNG_FN_DELTA_RGBA8_RGB8, "delta_rgba8_rgb8"},
- {MNG_FN_DELTA_RGBA8_A8, "delta_rgba8_a8"},
- {MNG_FN_DELTA_RGBA16_RGBA16, "delta_rgba16_rgba16"},
- {MNG_FN_DELTA_RGBA16_RGB16, "delta_rgba16_rgb16"},
- {MNG_FN_DELTA_RGBA16_A16, "delta_rgba16_a16"},
-
- {MNG_FN_PROMOTE_G8_G8, "promote_g8_g8"},
- {MNG_FN_PROMOTE_G8_G16, "promote_g8_g16"},
- {MNG_FN_PROMOTE_G16_G16, "promote_g8_g16"},
- {MNG_FN_PROMOTE_G8_GA8, "promote_g8_ga8"},
- {MNG_FN_PROMOTE_G8_GA16, "promote_g8_ga16"},
- {MNG_FN_PROMOTE_G16_GA16, "promote_g16_ga16"},
- {MNG_FN_PROMOTE_G8_RGB8, "promote_g8_rgb8"},
- {MNG_FN_PROMOTE_G8_RGB16, "promote_g8_rgb16"},
- {MNG_FN_PROMOTE_G16_RGB16, "promote_g16_rgb16"},
- {MNG_FN_PROMOTE_G8_RGBA8, "promote_g8_rgba8"},
- {MNG_FN_PROMOTE_G8_RGBA16, "promote_g8_rgba16"},
- {MNG_FN_PROMOTE_G16_RGBA16, "promote_g16_rgba16"},
- {MNG_FN_PROMOTE_GA8_GA16, "promote_ga8_ga16"},
- {MNG_FN_PROMOTE_GA8_RGBA8, "promote_ga8_rgba8"},
- {MNG_FN_PROMOTE_GA8_RGBA16, "promote_ga8_rgba16"},
- {MNG_FN_PROMOTE_GA16_RGBA16, "promote_ga16_rgba16"},
- {MNG_FN_PROMOTE_RGB8_RGB16, "promote_rgb8_rgb16"},
- {MNG_FN_PROMOTE_RGB8_RGBA8, "promote_rgb8_rgba8"},
- {MNG_FN_PROMOTE_RGB8_RGBA16, "promote_rgb8_rgba16"},
- {MNG_FN_PROMOTE_RGB16_RGBA16, "promote_rgb16_rgba16"},
- {MNG_FN_PROMOTE_RGBA8_RGBA16, "promote_rgba8_rgba16"},
- {MNG_FN_PROMOTE_IDX8_RGB8, "promote_idx8_rgb8"},
- {MNG_FN_PROMOTE_IDX8_RGB16, "promote_idx8_rgb16"},
- {MNG_FN_PROMOTE_IDX8_RGBA8, "promote_idx8_rgba8"},
- {MNG_FN_PROMOTE_IDX8_RGBA16, "promote_idx8_rgba16"},
-
- {MNG_FN_SCALE_G1_G2, "scale_g1_g2"},
- {MNG_FN_SCALE_G1_G4, "scale_g1_g4"},
- {MNG_FN_SCALE_G1_G8, "scale_g1_g8"},
- {MNG_FN_SCALE_G1_G16, "scale_g1_g16"},
- {MNG_FN_SCALE_G2_G4, "scale_g2_g4"},
- {MNG_FN_SCALE_G2_G8, "scale_g2_g8"},
- {MNG_FN_SCALE_G2_G16, "scale_g2_g16"},
- {MNG_FN_SCALE_G4_G8, "scale_g4_g8"},
- {MNG_FN_SCALE_G4_G16, "scale_g4_g16"},
- {MNG_FN_SCALE_G8_G16, "scale_g8_g16"},
- {MNG_FN_SCALE_GA8_GA16, "scale_ga8_ga16"},
- {MNG_FN_SCALE_RGB8_RGB16, "scale_rgb8_rgb16"},
- {MNG_FN_SCALE_RGBA8_RGBA16, "scale_rgba8_rgba16"},
-
- {MNG_FN_SCALE_G2_G1, "scale_g2_g1"},
- {MNG_FN_SCALE_G4_G1, "scale_g4_g1"},
- {MNG_FN_SCALE_G8_G1, "scale_g8_g1"},
- {MNG_FN_SCALE_G16_G1, "scale_g16_g1"},
- {MNG_FN_SCALE_G4_G2, "scale_g4_g2"},
- {MNG_FN_SCALE_G8_G2, "scale_g8_g2"},
- {MNG_FN_SCALE_G16_G2, "scale_g16_g2"},
- {MNG_FN_SCALE_G8_G4, "scale_g8_g4"},
- {MNG_FN_SCALE_G16_G4, "scale_g16_g4"},
- {MNG_FN_SCALE_G16_G8, "scale_g16_g8"},
- {MNG_FN_SCALE_GA16_GA8, "scale_ga16_ga8"},
- {MNG_FN_SCALE_RGB16_RGB8, "scale_rgb16_rgb8"},
- {MNG_FN_SCALE_RGBA16_RGBA8, "scale_rgba16_rgba8"},
-
- {MNG_FN_COMPOSEOVER_RGBA8, "composeover_rgba8"},
- {MNG_FN_COMPOSEOVER_RGBA16, "composeover_rgba16"},
- {MNG_FN_COMPOSEUNDER_RGBA8, "composeunder_rgba8"},
- {MNG_FN_COMPOSEUNDER_RGBA16, "composeunder_rgba16"},
-
- {MNG_FN_FLIP_RGBA8, "flip_rgba8"},
- {MNG_FN_FLIP_RGBA16, "flip_rgba16"},
- {MNG_FN_TILE_RGBA8, "tile_rgba8"},
- {MNG_FN_TILE_RGBA16, "tile_rgba16"}
-
- };
-#endif /* MNG_INCLUDE_TRACE_STINGS */
-
-/* ************************************************************************** */
-
-mng_retcode mng_trace (mng_datap pData,
- mng_uint32 iFunction,
- mng_uint32 iLocation)
-{
- mng_pchar zName = 0; /* bufferptr for tracestring */
-
- if ((pData == 0) || (pData->iMagic != MNG_MAGIC))
- return MNG_INVALIDHANDLE; /* no good if the handle is corrupt */
-
- if (pData->fTraceproc) /* report back to user ? */
- {
-#ifdef MNG_INCLUDE_TRACE_STRINGS
- { /* binary search variables */
- mng_int32 iTop, iLower, iUpper, iMiddle;
- mng_trace_entryp pEntry; /* pointer to found entry */
- /* determine max index of table */
- iTop = (sizeof (trace_table) / sizeof (trace_table [0])) - 1;
-
- iLower = 0; /* initialize binary search */
- iMiddle = iTop >> 1; /* start in the middle */
- iUpper = iTop;
- pEntry = 0; /* no goods yet! */
-
- do /* the binary search itself */
- {
- if (trace_table [iMiddle].iFunction < iFunction)
- iLower = iMiddle + 1;
- else if (trace_table [iMiddle].iFunction > iFunction)
- iUpper = iMiddle - 1;
- else
- {
- pEntry = &trace_table [iMiddle];
- break;
- };
-
- iMiddle = (iLower + iUpper) >> 1;
- }
- while (iLower <= iUpper);
-
- if (pEntry) /* found it ? */
- zName = pEntry->zTracetext;
-
- }
-#endif
- /* oke, now tell */
- if (!pData->fTraceproc (((mng_handle)pData), iFunction, iLocation, zName))
- return MNG_APPTRACEABORT;
-
- }
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_TRACE_PROCS */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
diff --git a/src/3rdparty/libmng/libmng_trace.h b/src/3rdparty/libmng/libmng_trace.h
deleted file mode 100644
index 0c749d978f..0000000000
--- a/src/3rdparty/libmng/libmng_trace.h
+++ /dev/null
@@ -1,1474 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_trace.h copyright (c) 2000-2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : Trace functions (definition) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : Definition of the trace functions * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - added chunk-access function trace-codes * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/12/2000 - G.Juyn * */
-/* * - changed trace to macro for callback error-reporting * */
-/* * 0.5.1 - 05/13/2000 - G.Juyn * */
-/* * - added save_state & restore_state trace-codes * */
-/* * 0.5.1 - 05/15/2000 - G.Juyn * */
-/* * - added getimgdata & putimgdata trace-codes * */
-/* * * */
-/* * 0.5.2 - 05/20/2000 - G.Juyn * */
-/* * - added JNG tracecodes * */
-/* * 0.5.2 - 05/23/2000 - G.Juyn * */
-/* * - added trace-table entry definition * */
-/* * 0.5.2 - 05/24/2000 - G.Juyn * */
-/* * - added tracecodes for global animation color-chunks * */
-/* * - added tracecodes for get/set of default ZLIB/IJG parms * */
-/* * - added tracecodes for global PLTE,tRNS,bKGD * */
-/* * 0.5.2 - 05/30/2000 - G.Juyn * */
-/* * - added tracecodes for image-object promotion * */
-/* * - added tracecodes for delta-image processing * */
-/* * 0.5.2 - 06/02/2000 - G.Juyn * */
-/* * - added tracecodes for getalphaline callback * */
-/* * 0.5.2 - 06/05/2000 - G.Juyn * */
-/* * - added tracecode for RGB8_A8 canvasstyle * */
-/* * 0.5.2 - 06/06/2000 - G.Juyn * */
-/* * - added tracecode for mng_read_resume HLAPI function * */
-/* * * */
-/* * 0.5.3 - 06/06/2000 - G.Juyn * */
-/* * - added tracecodes for tracing JPEG progression * */
-/* * 0.5.3 - 06/21/2000 - G.Juyn * */
-/* * - added tracecodes for get/set speedtype * */
-/* * - added tracecodes for get imagelevel * */
-/* * 0.5.3 - 06/22/2000 - G.Juyn * */
-/* * - added tracecode for delta-image processing * */
-/* * - added tracecodes for PPLT chunk processing * */
-/* * * */
-/* * 0.9.1 - 07/07/2000 - G.Juyn * */
-/* * - added tracecodes for special display processing * */
-/* * 0.9.1 - 07/08/2000 - G.Juyn * */
-/* * - added tracecode for get/set suspensionmode * */
-/* * - added tracecodes for get/set display variables * */
-/* * - added tracecode for read_databuffer (I/O-suspension) * */
-/* * 0.9.1 - 07/15/2000 - G.Juyn * */
-/* * - added tracecodes for SAVE/SEEK callbacks * */
-/* * - added tracecodes for get/set sectionbreaks * */
-/* * - added tracecode for special error routine * */
-/* * 0.9.1 - 07/19/2000 - G.Juyn * */
-/* * - added tracecode for updatemngheader * */
-/* * * */
-/* * 0.9.2 - 07/31/2000 - G.Juyn * */
-/* * - added tracecodes for status_xxxxx functions * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * - added tracecode for updatemngsimplicity * */
-/* * * */
-/* * 0.9.3 - 08/26/2000 - G.Juyn * */
-/* * - added MAGN chunk * */
-/* * 0.9.3 - 09/07/2000 - G.Juyn * */
-/* * - added support for new filter_types * */
-/* * 0.9.3 - 10/10/2000 - G.Juyn * */
-/* * - added support for alpha-depth prediction * */
-/* * 0.9.3 - 10/11/2000 - G.Juyn * */
-/* * - added JDAA chunk * */
-/* * - added support for nEED * */
-/* * 0.9.3 - 10/16/2000 - G.Juyn * */
-/* * - added functions to retrieve PNG/JNG specific header-info * */
-/* * - added optional support for bKGD for PNG images * */
-/* * 0.9.3 - 10/17/2000 - G.Juyn * */
-/* * - added callback to process non-critical unknown chunks * */
-/* * - added routine to discard "invalid" objects * */
-/* * 0.9.3 - 10/19/2000 - G.Juyn * */
-/* * - implemented delayed delta-processing * */
-/* * 0.9.3 - 10/20/2000 - G.Juyn * */
-/* * - added get/set for bKGD preference setting * */
-/* * 0.9.3 - 10/21/2000 - G.Juyn * */
-/* * - added get function for interlace/progressive display * */
-/* * * */
-/* * 0.9.4 - 1/18/2001 - G.Juyn * */
-/* * - added "new" MAGN methods 3, 4 & 5 * */
-/* * * */
-/* * 1.0.1 - 02/08/2001 - G.Juyn * */
-/* * - added MEND processing callback * */
-/* * 1.0.1 - 04/21/2001 - G.Juyn (code by G.Kelly) * */
-/* * - added BGRA8 canvas with premultiplied alpha * */
-/* * 1.0.1 - 05/02/2001 - G.Juyn * */
-/* * - added "default" sRGB generation (Thanks Marti!) * */
-/* * * */
-/* * 1.0.2 - 06/23/2001 - G.Juyn * */
-/* * - added optimization option for MNG-video playback * */
-/* * - added processterm callback * */
-/* * 1.0.2 - 06/25/2001 - G.Juyn * */
-/* * - added option to turn off progressive refresh * */
-/* * * */
-/* * 1.0.3 - 08/06/2001 - G.Juyn * */
-/* * - added get function for last processed BACK chunk * */
-/* * * */
-/* * 1.0.5 - 08/15/2002 - G.Juyn * */
-/* * - completed PROM support * */
-/* * - completed delta-image support * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * - added HLAPI function to copy chunks * */
-/* * 1.0.5 - 09/14/2002 - G.Juyn * */
-/* * - added event handling for dynamic MNG * */
-/* * 1.0.5 - 09/20/2002 - G.Juyn * */
-/* * - added support for PAST * */
-/* * 1.0.5 - 09/22/2002 - G.Juyn * */
-/* * - added bgrx8 canvas (filler byte) * */
-/* * 1.0.5 - 09/23/2002 - G.Juyn * */
-/* * - added in-memory color-correction of abstract images * */
-/* * - added compose over/under routines for PAST processing * */
-/* * - added flip & tile routines for PAST processing * */
-/* * 1.0.5 - 10/09/2002 - G.Juyn * */
-/* * - fixed trace-constants for PAST chunk * */
-/* * 1.0.5 - 11/07/2002 - G.Juyn * */
-/* * - added support to get totals after mng_read() * */
-/* * * */
-/* * 1.0.6 - 07/14/2003 - G.Randers-Pehrson * */
-/* * - added conditionals around rarely used features * */
-/* * * */
-/* * 1.0.7 - 11/27/2003 - R.A * */
-/* * - added CANVAS_RGB565 and CANVAS_BGR565 * */
-/* * 1.0.7 - 01/25/2004 - J.S * */
-/* * - added premultiplied alpha canvas' for RGBA, ARGB, ABGR * */
-/* * 1.0.7 - 03/10/2004 - G.R-P * */
-/* * - added conditionals around openstream/closestream * */
-/* * * */
-/* * 1.0.8 - 04/02/2004 - G.Juyn * */
-/* * - added CRC existence & checking flags * */
-/* * 1.0.8 - 04/11/2004 - G.Juyn * */
-/* * - added data-push mechanisms for specialized decoders * */
-/* * * */
-/* * 1.0.9 - 10/03/2004 - G.Juyn * */
-/* * - added function to retrieve current FRAM delay * */
-/* * 1.0.9 - 10/14/2004 - G.Juyn * */
-/* * - added bgr565_a8 canvas-style (thanks to J. Elvander) * */
-/* * * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * 1.0.10 - 07/06/2007 - G.R-P bugfix by Lucas Quintana * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_trace_h_
-#define _libmng_trace_h_
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_TRACE_PROCS
-
-/* ************************************************************************** */
-
-/* TODO: add a trace-mask so certain functions can be excluded */
-
-mng_retcode mng_trace (mng_datap pData,
- mng_uint32 iFunction,
- mng_uint32 iLocation);
-
-/* ************************************************************************** */
-
-#define MNG_TRACE(D,F,L) { mng_retcode iR = mng_trace (D,F,L); \
- if (iR) return iR; }
-
-#define MNG_TRACEB(D,F,L) { if (mng_trace (D,F,L)) return MNG_FALSE; }
-
-#define MNG_TRACEX(D,F,L) { if (mng_trace (D,F,L)) return 0; }
-
-/* ************************************************************************** */
-
-#define MNG_LC_START 1
-#define MNG_LC_END 2
-#define MNG_LC_INITIALIZE 3
-#define MNG_LC_CLEANUP 4
-
-/* ************************************************************************** */
-
-#define MNG_LC_JPEG_CREATE_DECOMPRESS 101
-#define MNG_LC_JPEG_READ_HEADER 102
-#define MNG_LC_JPEG_START_DECOMPRESS 103
-#define MNG_LC_JPEG_START_OUTPUT 104
-#define MNG_LC_JPEG_READ_SCANLINES 105
-#define MNG_LC_JPEG_FINISH_OUTPUT 106
-#define MNG_LC_JPEG_FINISH_DECOMPRESS 107
-#define MNG_LC_JPEG_DESTROY_DECOMPRESS 108
-
-/* ************************************************************************** */
-
-#define MNG_FN_INITIALIZE 1
-#define MNG_FN_RESET 2
-#define MNG_FN_CLEANUP 3
-#define MNG_FN_READ 4
-#define MNG_FN_WRITE 5
-#define MNG_FN_CREATE 6
-#define MNG_FN_READDISPLAY 7
-#define MNG_FN_DISPLAY 8
-#define MNG_FN_DISPLAY_RESUME 9
-#define MNG_FN_DISPLAY_FREEZE 10
-#define MNG_FN_DISPLAY_RESET 11
-#ifndef MNG_NO_DISPLAY_GO_SUPPORTED
-#define MNG_FN_DISPLAY_GOFRAME 12
-#define MNG_FN_DISPLAY_GOLAYER 13
-#define MNG_FN_DISPLAY_GOTIME 14
-#endif
-#define MNG_FN_GETLASTERROR 15
-#define MNG_FN_READ_RESUME 16
-#define MNG_FN_TRAPEVENT 17
-#define MNG_FN_READ_PUSHDATA 18
-#define MNG_FN_READ_PUSHSIG 19
-#define MNG_FN_READ_PUSHCHUNK 20
-
-#define MNG_FN_SETCB_MEMALLOC 101
-#define MNG_FN_SETCB_MEMFREE 102
-#define MNG_FN_SETCB_READDATA 103
-#define MNG_FN_SETCB_WRITEDATA 104
-#define MNG_FN_SETCB_ERRORPROC 105
-#define MNG_FN_SETCB_TRACEPROC 106
-#define MNG_FN_SETCB_PROCESSHEADER 107
-#define MNG_FN_SETCB_PROCESSTEXT 108
-#define MNG_FN_SETCB_GETCANVASLINE 109
-#define MNG_FN_SETCB_GETBKGDLINE 110
-#define MNG_FN_SETCB_REFRESH 111
-#define MNG_FN_SETCB_GETTICKCOUNT 112
-#define MNG_FN_SETCB_SETTIMER 113
-#define MNG_FN_SETCB_PROCESSGAMMA 114
-#define MNG_FN_SETCB_PROCESSCHROMA 115
-#define MNG_FN_SETCB_PROCESSSRGB 116
-#define MNG_FN_SETCB_PROCESSICCP 117
-#define MNG_FN_SETCB_PROCESSAROW 118
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
-#define MNG_FN_SETCB_OPENSTREAM 119
-#define MNG_FN_SETCB_CLOSESTREAM 120
-#endif
-#define MNG_FN_SETCB_GETALPHALINE 121
-#define MNG_FN_SETCB_PROCESSSAVE 122
-#define MNG_FN_SETCB_PROCESSSEEK 123
-#define MNG_FN_SETCB_PROCESSNEED 124
-#define MNG_FN_SETCB_PROCESSUNKNOWN 125
-#define MNG_FN_SETCB_PROCESSMEND 126
-#define MNG_FN_SETCB_PROCESSTERM 127
-#define MNG_FN_SETCB_RELEASEDATA 128
-
-#define MNG_FN_GETCB_MEMALLOC 201
-#define MNG_FN_GETCB_MEMFREE 202
-#define MNG_FN_GETCB_READDATA 203
-#define MNG_FN_GETCB_WRITEDATA 204
-#define MNG_FN_GETCB_ERRORPROC 205
-#define MNG_FN_GETCB_TRACEPROC 206
-#define MNG_FN_GETCB_PROCESSHEADER 207
-#define MNG_FN_GETCB_PROCESSTEXT 208
-#define MNG_FN_GETCB_GETCANVASLINE 209
-#define MNG_FN_GETCB_GETBKGDLINE 210
-#define MNG_FN_GETCB_REFRESH 211
-#define MNG_FN_GETCB_GETTICKCOUNT 212
-#define MNG_FN_GETCB_SETTIMER 213
-#define MNG_FN_GETCB_PROCESSGAMMA 214
-#define MNG_FN_GETCB_PROCESSCHROMA 215
-#define MNG_FN_GETCB_PROCESSSRGB 216
-#define MNG_FN_GETCB_PROCESSICCP 217
-#define MNG_FN_GETCB_PROCESSAROW 218
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
-#define MNG_FN_GETCB_OPENSTREAM 219
-#define MNG_FN_GETCB_CLOSESTREAM 220
-#endif
-#define MNG_FN_GETCB_GETALPHALINE 221
-#define MNG_FN_GETCB_PROCESSSAVE 222
-#define MNG_FN_GETCB_PROCESSSEEK 223
-#define MNG_FN_GETCB_PROCESSNEED 224
-#define MNG_FN_GETCB_PROCESSUNKNOWN 225
-#define MNG_FN_GETCB_PROCESSMEND 226
-#define MNG_FN_GETCB_PROCESSTERM 227
-#define MNG_FN_GETCB_RELEASEDATA 228
-
-#define MNG_FN_SET_USERDATA 301
-#define MNG_FN_SET_CANVASSTYLE 302
-#define MNG_FN_SET_BKGDSTYLE 303
-#define MNG_FN_SET_BGCOLOR 304
-#define MNG_FN_SET_STORECHUNKS 305
-#define MNG_FN_SET_VIEWGAMMA 306
-#define MNG_FN_SET_DISPLAYGAMMA 307
-#define MNG_FN_SET_DFLTIMGGAMMA 308
-#define MNG_FN_SET_SRGB 309
-#define MNG_FN_SET_OUTPUTPROFILE 310
-#define MNG_FN_SET_SRGBPROFILE 311
-#define MNG_FN_SET_MAXCANVASWIDTH 312
-#define MNG_FN_SET_MAXCANVASHEIGHT 313
-#define MNG_FN_SET_MAXCANVASSIZE 314
-#define MNG_FN_SET_ZLIB_LEVEL 315
-#define MNG_FN_SET_ZLIB_METHOD 316
-#define MNG_FN_SET_ZLIB_WINDOWBITS 317
-#define MNG_FN_SET_ZLIB_MEMLEVEL 318
-#define MNG_FN_SET_ZLIB_STRATEGY 319
-#define MNG_FN_SET_ZLIB_MAXIDAT 320
-#define MNG_FN_SET_JPEG_DCTMETHOD 321
-#define MNG_FN_SET_JPEG_QUALITY 322
-#define MNG_FN_SET_JPEG_SMOOTHING 323
-#define MNG_FN_SET_JPEG_PROGRESSIVE 324
-#define MNG_FN_SET_JPEG_OPTIMIZED 325
-#define MNG_FN_SET_JPEG_MAXJDAT 326
-#define MNG_FN_SET_SPEED 327
-#define MNG_FN_SET_SUSPENSIONMODE 328
-#define MNG_FN_SET_SECTIONBREAKS 329
-#define MNG_FN_SET_USEBKGD 330
-#define MNG_FN_SET_OUTPUTPROFILE2 331
-#define MNG_FN_SET_SRGBPROFILE2 332
-#define MNG_FN_SET_OUTPUTSRGB 333
-#define MNG_FN_SET_SRGBIMPLICIT 334
-#define MNG_FN_SET_CACHEPLAYBACK 335
-#define MNG_FN_SET_DOPROGRESSIVE 336
-#define MNG_FN_SET_CRCMODE 337
-
-#define MNG_FN_GET_USERDATA 401
-#define MNG_FN_GET_SIGTYPE 402
-#define MNG_FN_GET_IMAGETYPE 403
-#define MNG_FN_GET_IMAGEWIDTH 404
-#define MNG_FN_GET_IMAGEHEIGHT 405
-#define MNG_FN_GET_TICKS 406
-#define MNG_FN_GET_FRAMECOUNT 407
-#define MNG_FN_GET_LAYERCOUNT 408
-#define MNG_FN_GET_PLAYTIME 409
-#define MNG_FN_GET_SIMPLICITY 410
-#define MNG_FN_GET_CANVASSTYLE 411
-#define MNG_FN_GET_BKGDSTYLE 412
-#define MNG_FN_GET_BGCOLOR 413
-#define MNG_FN_GET_STORECHUNKS 414
-#define MNG_FN_GET_VIEWGAMMA 415
-#define MNG_FN_GET_DISPLAYGAMMA 416
-#define MNG_FN_GET_DFLTIMGGAMMA 417
-#define MNG_FN_GET_SRGB 418
-#define MNG_FN_GET_MAXCANVASWIDTH 419
-#define MNG_FN_GET_MAXCANVASHEIGHT 420
-#define MNG_FN_GET_ZLIB_LEVEL 421
-#define MNG_FN_GET_ZLIB_METHOD 422
-#define MNG_FN_GET_ZLIB_WINDOWBITS 423
-#define MNG_FN_GET_ZLIB_MEMLEVEL 424
-#define MNG_FN_GET_ZLIB_STRATEGY 425
-#define MNG_FN_GET_ZLIB_MAXIDAT 426
-#define MNG_FN_GET_JPEG_DCTMETHOD 427
-#define MNG_FN_GET_JPEG_QUALITY 428
-#define MNG_FN_GET_JPEG_SMOOTHING 429
-#define MNG_FN_GET_JPEG_PROGRESSIVE 430
-#define MNG_FN_GET_JPEG_OPTIMIZED 431
-#define MNG_FN_GET_JPEG_MAXJDAT 432
-#define MNG_FN_GET_SPEED 433
-#define MNG_FN_GET_IMAGELEVEL 434
-#define MNG_FN_GET_SUSPENSIONMODE 435
-#define MNG_FN_GET_STARTTIME 436
-#define MNG_FN_GET_RUNTIME 437
-#define MNG_FN_GET_CURRENTFRAME 438
-#define MNG_FN_GET_CURRENTLAYER 439
-#define MNG_FN_GET_CURRENTPLAYTIME 440
-#define MNG_FN_GET_SECTIONBREAKS 441
-#define MNG_FN_GET_ALPHADEPTH 442
-#define MNG_FN_GET_BITDEPTH 443
-#define MNG_FN_GET_COLORTYPE 444
-#define MNG_FN_GET_COMPRESSION 445
-#define MNG_FN_GET_FILTER 446
-#define MNG_FN_GET_INTERLACE 447
-#define MNG_FN_GET_ALPHABITDEPTH 448
-#define MNG_FN_GET_ALPHACOMPRESSION 449
-#define MNG_FN_GET_ALPHAFILTER 450
-#define MNG_FN_GET_ALPHAINTERLACE 451
-#define MNG_FN_GET_USEBKGD 452
-#define MNG_FN_GET_REFRESHPASS 453
-#define MNG_FN_GET_CACHEPLAYBACK 454
-#define MNG_FN_GET_DOPROGRESSIVE 455
-#define MNG_FN_GET_LASTBACKCHUNK 456
-#define MNG_FN_GET_LASTSEEKNAME 457
-#define MNG_FN_GET_TOTALFRAMES 458
-#define MNG_FN_GET_TOTALLAYERS 459
-#define MNG_FN_GET_TOTALPLAYTIME 460
-#define MNG_FN_GET_CRCMODE 461
-#define MNG_FN_GET_CURRFRAMDELAY 462
-
-#define MNG_FN_STATUS_ERROR 481
-#define MNG_FN_STATUS_READING 482
-#define MNG_FN_STATUS_SUSPENDBREAK 483
-#define MNG_FN_STATUS_CREATING 484
-#define MNG_FN_STATUS_WRITING 485
-#define MNG_FN_STATUS_DISPLAYING 486
-#define MNG_FN_STATUS_RUNNING 487
-#define MNG_FN_STATUS_TIMERBREAK 488
-#define MNG_FN_STATUS_DYNAMIC 489
-#define MNG_FN_STATUS_RUNNINGEVENT 490
-
-/* ************************************************************************** */
-
-#define MNG_FN_ITERATE_CHUNKS 601
-#define MNG_FN_COPY_CHUNK 602
-
-#define MNG_FN_GETCHUNK_IHDR 701
-#define MNG_FN_GETCHUNK_PLTE 702
-#define MNG_FN_GETCHUNK_IDAT 703
-#define MNG_FN_GETCHUNK_IEND 704
-#define MNG_FN_GETCHUNK_TRNS 705
-#define MNG_FN_GETCHUNK_GAMA 706
-#define MNG_FN_GETCHUNK_CHRM 707
-#define MNG_FN_GETCHUNK_SRGB 708
-#define MNG_FN_GETCHUNK_ICCP 709
-#define MNG_FN_GETCHUNK_TEXT 710
-#define MNG_FN_GETCHUNK_ZTXT 711
-#define MNG_FN_GETCHUNK_ITXT 712
-#define MNG_FN_GETCHUNK_BKGD 713
-#define MNG_FN_GETCHUNK_PHYS 714
-#define MNG_FN_GETCHUNK_SBIT 715
-#define MNG_FN_GETCHUNK_SPLT 716
-#define MNG_FN_GETCHUNK_HIST 717
-#define MNG_FN_GETCHUNK_TIME 718
-#define MNG_FN_GETCHUNK_MHDR 719
-#define MNG_FN_GETCHUNK_MEND 720
-#define MNG_FN_GETCHUNK_LOOP 721
-#define MNG_FN_GETCHUNK_ENDL 722
-#define MNG_FN_GETCHUNK_DEFI 723
-#define MNG_FN_GETCHUNK_BASI 724
-#define MNG_FN_GETCHUNK_CLON 725
-#define MNG_FN_GETCHUNK_PAST 726
-#define MNG_FN_GETCHUNK_DISC 727
-#define MNG_FN_GETCHUNK_BACK 728
-#define MNG_FN_GETCHUNK_FRAM 729
-#define MNG_FN_GETCHUNK_MOVE 730
-#define MNG_FN_GETCHUNK_CLIP 731
-#define MNG_FN_GETCHUNK_SHOW 732
-#define MNG_FN_GETCHUNK_TERM 733
-#define MNG_FN_GETCHUNK_SAVE 734
-#define MNG_FN_GETCHUNK_SEEK 735
-#define MNG_FN_GETCHUNK_EXPI 736
-#define MNG_FN_GETCHUNK_FPRI 737
-#define MNG_FN_GETCHUNK_NEED 738
-#define MNG_FN_GETCHUNK_PHYG 739
-#define MNG_FN_GETCHUNK_JHDR 740
-#define MNG_FN_GETCHUNK_JDAT 741
-#define MNG_FN_GETCHUNK_JSEP 742
-#define MNG_FN_GETCHUNK_DHDR 743
-#define MNG_FN_GETCHUNK_PROM 744
-#define MNG_FN_GETCHUNK_IPNG 745
-#define MNG_FN_GETCHUNK_PPLT 746
-#define MNG_FN_GETCHUNK_IJNG 747
-#define MNG_FN_GETCHUNK_DROP 748
-#define MNG_FN_GETCHUNK_DBYK 749
-#define MNG_FN_GETCHUNK_ORDR 750
-#define MNG_FN_GETCHUNK_UNKNOWN 751
-#define MNG_FN_GETCHUNK_MAGN 752
-#define MNG_FN_GETCHUNK_JDAA 753
-#define MNG_FN_GETCHUNK_EVNT 754
-#define MNG_FN_GETCHUNK_MPNG 755
-
-#define MNG_FN_GETCHUNK_PAST_SRC 781
-#define MNG_FN_GETCHUNK_SAVE_ENTRY 782
-#define MNG_FN_GETCHUNK_PPLT_ENTRY 783
-#define MNG_FN_GETCHUNK_ORDR_ENTRY 784
-#define MNG_FN_GETCHUNK_EVNT_ENTRY 785
-#define MNG_FN_GETCHUNK_MPNG_FRAME 786
-
-#define MNG_FN_PUTCHUNK_IHDR 801
-#define MNG_FN_PUTCHUNK_PLTE 802
-#define MNG_FN_PUTCHUNK_IDAT 803
-#define MNG_FN_PUTCHUNK_IEND 804
-#define MNG_FN_PUTCHUNK_TRNS 805
-#define MNG_FN_PUTCHUNK_GAMA 806
-#define MNG_FN_PUTCHUNK_CHRM 807
-#define MNG_FN_PUTCHUNK_SRGB 808
-#define MNG_FN_PUTCHUNK_ICCP 809
-#define MNG_FN_PUTCHUNK_TEXT 810
-#define MNG_FN_PUTCHUNK_ZTXT 811
-#define MNG_FN_PUTCHUNK_ITXT 812
-#define MNG_FN_PUTCHUNK_BKGD 813
-#define MNG_FN_PUTCHUNK_PHYS 814
-#define MNG_FN_PUTCHUNK_SBIT 815
-#define MNG_FN_PUTCHUNK_SPLT 816
-#define MNG_FN_PUTCHUNK_HIST 817
-#define MNG_FN_PUTCHUNK_TIME 818
-#define MNG_FN_PUTCHUNK_MHDR 819
-#define MNG_FN_PUTCHUNK_MEND 820
-#define MNG_FN_PUTCHUNK_LOOP 821
-#define MNG_FN_PUTCHUNK_ENDL 822
-#define MNG_FN_PUTCHUNK_DEFI 823
-#define MNG_FN_PUTCHUNK_BASI 824
-#define MNG_FN_PUTCHUNK_CLON 825
-#define MNG_FN_PUTCHUNK_PAST 826
-#define MNG_FN_PUTCHUNK_DISC 827
-#define MNG_FN_PUTCHUNK_BACK 828
-#define MNG_FN_PUTCHUNK_FRAM 829
-#define MNG_FN_PUTCHUNK_MOVE 830
-#define MNG_FN_PUTCHUNK_CLIP 831
-#define MNG_FN_PUTCHUNK_SHOW 832
-#define MNG_FN_PUTCHUNK_TERM 833
-#define MNG_FN_PUTCHUNK_SAVE 834
-#define MNG_FN_PUTCHUNK_SEEK 835
-#define MNG_FN_PUTCHUNK_EXPI 836
-#define MNG_FN_PUTCHUNK_FPRI 837
-#define MNG_FN_PUTCHUNK_NEED 838
-#define MNG_FN_PUTCHUNK_PHYG 839
-#define MNG_FN_PUTCHUNK_JHDR 840
-#define MNG_FN_PUTCHUNK_JDAT 841
-#define MNG_FN_PUTCHUNK_JSEP 842
-#define MNG_FN_PUTCHUNK_DHDR 843
-#define MNG_FN_PUTCHUNK_PROM 844
-#define MNG_FN_PUTCHUNK_IPNG 845
-#define MNG_FN_PUTCHUNK_PPLT 846
-#define MNG_FN_PUTCHUNK_IJNG 847
-#define MNG_FN_PUTCHUNK_DROP 848
-#define MNG_FN_PUTCHUNK_DBYK 849
-#define MNG_FN_PUTCHUNK_ORDR 850
-#define MNG_FN_PUTCHUNK_UNKNOWN 851
-#define MNG_FN_PUTCHUNK_MAGN 852
-#define MNG_FN_PUTCHUNK_JDAA 853
-#define MNG_FN_PUTCHUNK_EVNT 854
-#define MNG_FN_PUTCHUNK_MPNG 855
-
-#define MNG_FN_PUTCHUNK_PAST_SRC 881
-#define MNG_FN_PUTCHUNK_SAVE_ENTRY 882
-#define MNG_FN_PUTCHUNK_PPLT_ENTRY 883
-#define MNG_FN_PUTCHUNK_ORDR_ENTRY 884
-#define MNG_FN_PUTCHUNK_EVNT_ENTRY 885
-#define MNG_FN_PUTCHUNK_MPNG_FRAME 886
-
-/* ************************************************************************** */
-
-#define MNG_FN_GETIMGDATA_SEQ 901
-#define MNG_FN_GETIMGDATA_CHUNKSEQ 902
-#define MNG_FN_GETIMGDATA_CHUNK 903
-
-#define MNG_FN_PUTIMGDATA_IHDR 951
-#define MNG_FN_PUTIMGDATA_JHDR 952
-#define MNG_FN_PUTIMGDATA_BASI 953
-#define MNG_FN_PUTIMGDATA_DHDR 954
-
-#define MNG_FN_UPDATEMNGHEADER 981
-#define MNG_FN_UPDATEMNGSIMPLICITY 982
-
-/* ************************************************************************** */
-
-#define MNG_FN_PROCESS_RAW_CHUNK 1001
-#define MNG_FN_READ_GRAPHIC 1002
-#define MNG_FN_DROP_CHUNKS 1003
-#define MNG_FN_PROCESS_ERROR 1004
-#define MNG_FN_CLEAR_CMS 1005
-#define MNG_FN_DROP_OBJECTS 1006
-#define MNG_FN_READ_CHUNK 1007
-#define MNG_FN_LOAD_BKGDLAYER 1008
-#define MNG_FN_NEXT_FRAME 1009
-#define MNG_FN_NEXT_LAYER 1010
-#define MNG_FN_INTERFRAME_DELAY 1011
-#define MNG_FN_DISPLAY_IMAGE 1012
-#define MNG_FN_DROP_IMGOBJECTS 1013
-#define MNG_FN_DROP_ANIOBJECTS 1014
-#define MNG_FN_INFLATE_BUFFER 1015
-#define MNG_FN_DEFLATE_BUFFER 1016
-#define MNG_FN_WRITE_RAW_CHUNK 1017
-#define MNG_FN_WRITE_GRAPHIC 1018
-#define MNG_FN_SAVE_STATE 1019
-#define MNG_FN_RESTORE_STATE 1020
-#define MNG_FN_DROP_SAVEDATA 1021
-#define MNG_FN_EXECUTE_DELTA_IMAGE 1022
-#define MNG_FN_PROCESS_DISPLAY 1023
-#define MNG_FN_CLEAR_CANVAS 1024
-#define MNG_FN_READ_DATABUFFER 1025
-#define MNG_FN_STORE_ERROR 1026
-#define MNG_FN_DROP_INVALID_OBJECTS 1027
-#define MNG_FN_RELEASE_PUSHDATA 1028
-#define MNG_FN_READ_DATA 1029
-#define MNG_FN_READ_CHUNK_CRC 1030
-#define MNG_FN_RELEASE_PUSHCHUNK 1031
-
-/* ************************************************************************** */
-
-#define MNG_FN_DISPLAY_RGB8 1101
-#define MNG_FN_DISPLAY_RGBA8 1102
-#define MNG_FN_DISPLAY_ARGB8 1103
-#define MNG_FN_DISPLAY_BGR8 1104
-#define MNG_FN_DISPLAY_BGRA8 1105
-#define MNG_FN_DISPLAY_ABGR8 1106
-#define MNG_FN_DISPLAY_RGB16 1107
-#define MNG_FN_DISPLAY_RGBA16 1108
-#define MNG_FN_DISPLAY_ARGB16 1109
-#define MNG_FN_DISPLAY_BGR16 1110
-#define MNG_FN_DISPLAY_BGRA16 1111
-#define MNG_FN_DISPLAY_ABGR16 1112
-#define MNG_FN_DISPLAY_INDEX8 1113
-#define MNG_FN_DISPLAY_INDEXA8 1114
-#define MNG_FN_DISPLAY_AINDEX8 1115
-#define MNG_FN_DISPLAY_GRAY8 1116
-#define MNG_FN_DISPLAY_GRAY16 1117
-#define MNG_FN_DISPLAY_GRAYA8 1118
-#define MNG_FN_DISPLAY_GRAYA16 1119
-#define MNG_FN_DISPLAY_AGRAY8 1120
-#define MNG_FN_DISPLAY_AGRAY16 1121
-#define MNG_FN_DISPLAY_DX15 1122
-#define MNG_FN_DISPLAY_DX16 1123
-#define MNG_FN_DISPLAY_RGB8_A8 1124
-#define MNG_FN_DISPLAY_BGRA8PM 1125
-#define MNG_FN_DISPLAY_BGRX8 1126
-#define MNG_FN_DISPLAY_RGB565 1127
-#define MNG_FN_DISPLAY_RGBA565 1128
-#define MNG_FN_DISPLAY_BGR565 1129
-#define MNG_FN_DISPLAY_BGRA565 1130
-#define MNG_FN_DISPLAY_RGBA8_PM 1131
-#define MNG_FN_DISPLAY_ARGB8_PM 1132
-#define MNG_FN_DISPLAY_ABGR8_PM 1133
-#define MNG_FN_DISPLAY_BGR565_A8 1134
-#define MNG_FN_DISPLAY_RGB555 1135
-#define MNG_FN_DISPLAY_BGR555 1136
-
-/* ************************************************************************** */
-
-#define MNG_FN_INIT_FULL_CMS 1201
-#define MNG_FN_CORRECT_FULL_CMS 1202
-#define MNG_FN_INIT_GAMMA_ONLY 1204
-#define MNG_FN_CORRECT_GAMMA_ONLY 1205
-#define MNG_FN_CORRECT_APP_CMS 1206
-#define MNG_FN_INIT_FULL_CMS_OBJ 1207
-#define MNG_FN_INIT_GAMMA_ONLY_OBJ 1208
-#define MNG_FN_INIT_APP_CMS 1209
-#define MNG_FN_INIT_APP_CMS_OBJ 1210
-
-/* ************************************************************************** */
-
-#define MNG_FN_PROCESS_G1 1301
-#define MNG_FN_PROCESS_G2 1302
-#define MNG_FN_PROCESS_G4 1303
-#define MNG_FN_PROCESS_G8 1304
-#define MNG_FN_PROCESS_G16 1305
-#define MNG_FN_PROCESS_RGB8 1306
-#define MNG_FN_PROCESS_RGB16 1307
-#define MNG_FN_PROCESS_IDX1 1308
-#define MNG_FN_PROCESS_IDX2 1309
-#define MNG_FN_PROCESS_IDX4 1310
-#define MNG_FN_PROCESS_IDX8 1311
-#define MNG_FN_PROCESS_GA8 1312
-#define MNG_FN_PROCESS_GA16 1313
-#define MNG_FN_PROCESS_RGBA8 1314
-#define MNG_FN_PROCESS_RGBA16 1315
-
-/* ************************************************************************** */
-
-#define MNG_FN_INIT_G1_NI 1401
-#define MNG_FN_INIT_G1_I 1402
-#define MNG_FN_INIT_G2_NI 1403
-#define MNG_FN_INIT_G2_I 1404
-#define MNG_FN_INIT_G4_NI 1405
-#define MNG_FN_INIT_G4_I 1406
-#define MNG_FN_INIT_G8_NI 1407
-#define MNG_FN_INIT_G8_I 1408
-#define MNG_FN_INIT_G16_NI 1409
-#define MNG_FN_INIT_G16_I 1410
-#define MNG_FN_INIT_RGB8_NI 1411
-#define MNG_FN_INIT_RGB8_I 1412
-#define MNG_FN_INIT_RGB16_NI 1413
-#define MNG_FN_INIT_RGB16_I 1414
-#define MNG_FN_INIT_IDX1_NI 1415
-#define MNG_FN_INIT_IDX1_I 1416
-#define MNG_FN_INIT_IDX2_NI 1417
-#define MNG_FN_INIT_IDX2_I 1418
-#define MNG_FN_INIT_IDX4_NI 1419
-#define MNG_FN_INIT_IDX4_I 1420
-#define MNG_FN_INIT_IDX8_NI 1421
-#define MNG_FN_INIT_IDX8_I 1422
-#define MNG_FN_INIT_GA8_NI 1423
-#define MNG_FN_INIT_GA8_I 1424
-#define MNG_FN_INIT_GA16_NI 1425
-#define MNG_FN_INIT_GA16_I 1426
-#define MNG_FN_INIT_RGBA8_NI 1427
-#define MNG_FN_INIT_RGBA8_I 1428
-#define MNG_FN_INIT_RGBA16_NI 1429
-#define MNG_FN_INIT_RGBA16_I 1430
-
-#define MNG_FN_INIT_ROWPROC 1497
-#define MNG_FN_NEXT_ROW 1498
-#define MNG_FN_CLEANUP_ROWPROC 1499
-
-/* ************************************************************************** */
-
-#define MNG_FN_FILTER_A_ROW 1501
-#define MNG_FN_FILTER_SUB 1502
-#define MNG_FN_FILTER_UP 1503
-#define MNG_FN_FILTER_AVERAGE 1504
-#define MNG_FN_FILTER_PAETH 1505
-
-#define MNG_FN_INIT_ROWDIFFERING 1551
-#define MNG_FN_DIFFER_G1 1552
-#define MNG_FN_DIFFER_G2 1553
-#define MNG_FN_DIFFER_G4 1554
-#define MNG_FN_DIFFER_G8 1555
-#define MNG_FN_DIFFER_G16 1556
-#define MNG_FN_DIFFER_RGB8 1557
-#define MNG_FN_DIFFER_RGB16 1558
-#define MNG_FN_DIFFER_IDX1 1559
-#define MNG_FN_DIFFER_IDX2 1560
-#define MNG_FN_DIFFER_IDX4 1561
-#define MNG_FN_DIFFER_IDX8 1562
-#define MNG_FN_DIFFER_GA8 1563
-#define MNG_FN_DIFFER_GA16 1564
-#define MNG_FN_DIFFER_RGBA8 1565
-#define MNG_FN_DIFFER_RGBA16 1566
-
-/* ************************************************************************** */
-
-#define MNG_FN_CREATE_IMGDATAOBJECT 1601
-#define MNG_FN_FREE_IMGDATAOBJECT 1602
-#define MNG_FN_CLONE_IMGDATAOBJECT 1603
-#define MNG_FN_CREATE_IMGOBJECT 1604
-#define MNG_FN_FREE_IMGOBJECT 1605
-#define MNG_FN_FIND_IMGOBJECT 1606
-#define MNG_FN_CLONE_IMGOBJECT 1607
-#define MNG_FN_RESET_OBJECTDETAILS 1608
-#define MNG_FN_RENUM_IMGOBJECT 1609
-#define MNG_FN_PROMOTE_IMGOBJECT 1610
-#define MNG_FN_MAGNIFY_IMGOBJECT 1611
-#define MNG_FN_COLORCORRECT_OBJECT 1612
-
-/* ************************************************************************** */
-
-#define MNG_FN_STORE_G1 1701
-#define MNG_FN_STORE_G2 1702
-#define MNG_FN_STORE_G4 1703
-#define MNG_FN_STORE_G8 1704
-#define MNG_FN_STORE_G16 1705
-#define MNG_FN_STORE_RGB8 1706
-#define MNG_FN_STORE_RGB16 1707
-#define MNG_FN_STORE_IDX1 1708
-#define MNG_FN_STORE_IDX2 1709
-#define MNG_FN_STORE_IDX4 1710
-#define MNG_FN_STORE_IDX8 1711
-#define MNG_FN_STORE_GA8 1712
-#define MNG_FN_STORE_GA16 1713
-#define MNG_FN_STORE_RGBA8 1714
-#define MNG_FN_STORE_RGBA16 1715
-
-#define MNG_FN_RETRIEVE_G8 1751
-#define MNG_FN_RETRIEVE_G16 1752
-#define MNG_FN_RETRIEVE_RGB8 1753
-#define MNG_FN_RETRIEVE_RGB16 1754
-#define MNG_FN_RETRIEVE_IDX8 1755
-#define MNG_FN_RETRIEVE_GA8 1756
-#define MNG_FN_RETRIEVE_GA16 1757
-#define MNG_FN_RETRIEVE_RGBA8 1758
-#define MNG_FN_RETRIEVE_RGBA16 1759
-
-#define MNG_FN_DELTA_G1 1771
-#define MNG_FN_DELTA_G2 1772
-#define MNG_FN_DELTA_G4 1773
-#define MNG_FN_DELTA_G8 1774
-#define MNG_FN_DELTA_G16 1775
-#define MNG_FN_DELTA_RGB8 1776
-#define MNG_FN_DELTA_RGB16 1777
-#define MNG_FN_DELTA_IDX1 1778
-#define MNG_FN_DELTA_IDX2 1779
-#define MNG_FN_DELTA_IDX4 1780
-#define MNG_FN_DELTA_IDX8 1781
-#define MNG_FN_DELTA_GA8 1782
-#define MNG_FN_DELTA_GA16 1783
-#define MNG_FN_DELTA_RGBA8 1784
-#define MNG_FN_DELTA_RGBA16 1785
-
-/* ************************************************************************** */
-
-#define MNG_FN_CREATE_ANI_LOOP 1801
-#define MNG_FN_CREATE_ANI_ENDL 1802
-#define MNG_FN_CREATE_ANI_DEFI 1803
-#define MNG_FN_CREATE_ANI_BASI 1804
-#define MNG_FN_CREATE_ANI_CLON 1805
-#define MNG_FN_CREATE_ANI_PAST 1806
-#define MNG_FN_CREATE_ANI_DISC 1807
-#define MNG_FN_CREATE_ANI_BACK 1808
-#define MNG_FN_CREATE_ANI_FRAM 1809
-#define MNG_FN_CREATE_ANI_MOVE 1810
-#define MNG_FN_CREATE_ANI_CLIP 1811
-#define MNG_FN_CREATE_ANI_SHOW 1812
-#define MNG_FN_CREATE_ANI_TERM 1813
-#define MNG_FN_CREATE_ANI_SAVE 1814
-#define MNG_FN_CREATE_ANI_SEEK 1815
-#define MNG_FN_CREATE_ANI_GAMA 1816
-#define MNG_FN_CREATE_ANI_CHRM 1817
-#define MNG_FN_CREATE_ANI_SRGB 1818
-#define MNG_FN_CREATE_ANI_ICCP 1819
-#define MNG_FN_CREATE_ANI_PLTE 1820
-#define MNG_FN_CREATE_ANI_TRNS 1821
-#define MNG_FN_CREATE_ANI_BKGD 1822
-#define MNG_FN_CREATE_ANI_DHDR 1823
-#define MNG_FN_CREATE_ANI_PROM 1824
-#define MNG_FN_CREATE_ANI_IPNG 1825
-#define MNG_FN_CREATE_ANI_IJNG 1826
-#define MNG_FN_CREATE_ANI_PPLT 1827
-#define MNG_FN_CREATE_ANI_MAGN 1828
-
-#define MNG_FN_CREATE_ANI_IMAGE 1891
-#define MNG_FN_CREATE_EVENT 1892
-
-/* ************************************************************************** */
-
-#define MNG_FN_FREE_ANI_LOOP 1901
-#define MNG_FN_FREE_ANI_ENDL 1902
-#define MNG_FN_FREE_ANI_DEFI 1903
-#define MNG_FN_FREE_ANI_BASI 1904
-#define MNG_FN_FREE_ANI_CLON 1905
-#define MNG_FN_FREE_ANI_PAST 1906
-#define MNG_FN_FREE_ANI_DISC 1907
-#define MNG_FN_FREE_ANI_BACK 1908
-#define MNG_FN_FREE_ANI_FRAM 1909
-#define MNG_FN_FREE_ANI_MOVE 1910
-#define MNG_FN_FREE_ANI_CLIP 1911
-#define MNG_FN_FREE_ANI_SHOW 1912
-#define MNG_FN_FREE_ANI_TERM 1913
-#define MNG_FN_FREE_ANI_SAVE 1914
-#define MNG_FN_FREE_ANI_SEEK 1915
-#define MNG_FN_FREE_ANI_GAMA 1916
-#define MNG_FN_FREE_ANI_CHRM 1917
-#define MNG_FN_FREE_ANI_SRGB 1918
-#define MNG_FN_FREE_ANI_ICCP 1919
-#define MNG_FN_FREE_ANI_PLTE 1920
-#define MNG_FN_FREE_ANI_TRNS 1921
-#define MNG_FN_FREE_ANI_BKGD 1922
-#define MNG_FN_FREE_ANI_DHDR 1923
-#define MNG_FN_FREE_ANI_PROM 1924
-#define MNG_FN_FREE_ANI_IPNG 1925
-#define MNG_FN_FREE_ANI_IJNG 1926
-#define MNG_FN_FREE_ANI_PPLT 1927
-#define MNG_FN_FREE_ANI_MAGN 1928
-
-#define MNG_FN_FREE_ANI_IMAGE 1991
-#define MNG_FN_FREE_EVENT 1992
-
-/* ************************************************************************** */
-
-#define MNG_FN_PROCESS_ANI_LOOP 2001
-#define MNG_FN_PROCESS_ANI_ENDL 2002
-#define MNG_FN_PROCESS_ANI_DEFI 2003
-#define MNG_FN_PROCESS_ANI_BASI 2004
-#define MNG_FN_PROCESS_ANI_CLON 2005
-#define MNG_FN_PROCESS_ANI_PAST 2006
-#define MNG_FN_PROCESS_ANI_DISC 2007
-#define MNG_FN_PROCESS_ANI_BACK 2008
-#define MNG_FN_PROCESS_ANI_FRAM 2009
-#define MNG_FN_PROCESS_ANI_MOVE 2010
-#define MNG_FN_PROCESS_ANI_CLIP 2011
-#define MNG_FN_PROCESS_ANI_SHOW 2012
-#define MNG_FN_PROCESS_ANI_TERM 2013
-#define MNG_FN_PROCESS_ANI_SAVE 2014
-#define MNG_FN_PROCESS_ANI_SEEK 2015
-#define MNG_FN_PROCESS_ANI_GAMA 2016
-#define MNG_FN_PROCESS_ANI_CHRM 2017
-#define MNG_FN_PROCESS_ANI_SRGB 2018
-#define MNG_FN_PROCESS_ANI_ICCP 2019
-#define MNG_FN_PROCESS_ANI_PLTE 2020
-#define MNG_FN_PROCESS_ANI_TRNS 2021
-#define MNG_FN_PROCESS_ANI_BKGD 2022
-#define MNG_FN_PROCESS_ANI_DHDR 2023
-#define MNG_FN_PROCESS_ANI_PROM 2024
-#define MNG_FN_PROCESS_ANI_IPNG 2025
-#define MNG_FN_PROCESS_ANI_IJNG 2026
-#define MNG_FN_PROCESS_ANI_PPLT 2027
-#define MNG_FN_PROCESS_ANI_MAGN 2028
-
-#define MNG_FN_PROCESS_ANI_IMAGE 2091
-#define MNG_FN_PROCESS_EVENT 2092
-
-/* ************************************************************************** */
-
-#define MNG_FN_RESTORE_BACKIMAGE 2101
-#define MNG_FN_RESTORE_BACKCOLOR 2102
-#define MNG_FN_RESTORE_BGCOLOR 2103
-#define MNG_FN_RESTORE_RGB8 2104
-#define MNG_FN_RESTORE_BGR8 2105
-#define MNG_FN_RESTORE_BKGD 2106
-#define MNG_FN_RESTORE_BGRX8 2107
-#define MNG_FN_RESTORE_RGB565 2108
-#define MNG_FN_RESTORE_BGR565 2109
-
-/* ************************************************************************** */
-
-#define MNG_FN_INIT_IHDR 2201
-#define MNG_FN_INIT_PLTE 2202
-#define MNG_FN_INIT_IDAT 2203
-#define MNG_FN_INIT_IEND 2204
-#define MNG_FN_INIT_TRNS 2205
-#define MNG_FN_INIT_GAMA 2206
-#define MNG_FN_INIT_CHRM 2207
-#define MNG_FN_INIT_SRGB 2208
-#define MNG_FN_INIT_ICCP 2209
-#define MNG_FN_INIT_TEXT 2210
-#define MNG_FN_INIT_ZTXT 2211
-#define MNG_FN_INIT_ITXT 2212
-#define MNG_FN_INIT_BKGD 2213
-#define MNG_FN_INIT_PHYS 2214
-#define MNG_FN_INIT_SBIT 2215
-#define MNG_FN_INIT_SPLT 2216
-#define MNG_FN_INIT_HIST 2217
-#define MNG_FN_INIT_TIME 2218
-#define MNG_FN_INIT_MHDR 2219
-#define MNG_FN_INIT_MEND 2220
-#define MNG_FN_INIT_LOOP 2221
-#define MNG_FN_INIT_ENDL 2222
-#define MNG_FN_INIT_DEFI 2223
-#define MNG_FN_INIT_BASI 2224
-#define MNG_FN_INIT_CLON 2225
-#define MNG_FN_INIT_PAST 2226
-#define MNG_FN_INIT_DISC 2227
-#define MNG_FN_INIT_BACK 2228
-#define MNG_FN_INIT_FRAM 2229
-#define MNG_FN_INIT_MOVE 2230
-#define MNG_FN_INIT_CLIP 2231
-#define MNG_FN_INIT_SHOW 2232
-#define MNG_FN_INIT_TERM 2233
-#define MNG_FN_INIT_SAVE 2234
-#define MNG_FN_INIT_SEEK 2235
-#define MNG_FN_INIT_EXPI 2236
-#define MNG_FN_INIT_FPRI 2237
-#define MNG_FN_INIT_NEED 2238
-#define MNG_FN_INIT_PHYG 2239
-#define MNG_FN_INIT_JHDR 2240
-#define MNG_FN_INIT_JDAT 2241
-#define MNG_FN_INIT_JSEP 2242
-#define MNG_FN_INIT_DHDR 2243
-#define MNG_FN_INIT_PROM 2244
-#define MNG_FN_INIT_IPNG 2245
-#define MNG_FN_INIT_PPLT 2246
-#define MNG_FN_INIT_IJNG 2247
-#define MNG_FN_INIT_DROP 2248
-#define MNG_FN_INIT_DBYK 2249
-#define MNG_FN_INIT_ORDR 2250
-#define MNG_FN_INIT_UNKNOWN 2251
-#define MNG_FN_INIT_MAGN 2252
-#define MNG_FN_INIT_JDAA 2253
-#define MNG_FN_INIT_EVNT 2254
-#define MNG_FN_INIT_MPNG 2255
-
-/* ************************************************************************** */
-
-#define MNG_FN_ASSIGN_IHDR 2301
-#define MNG_FN_ASSIGN_PLTE 2302
-#define MNG_FN_ASSIGN_IDAT 2303
-#define MNG_FN_ASSIGN_IEND 2304
-#define MNG_FN_ASSIGN_TRNS 2305
-#define MNG_FN_ASSIGN_GAMA 2306
-#define MNG_FN_ASSIGN_CHRM 2307
-#define MNG_FN_ASSIGN_SRGB 2308
-#define MNG_FN_ASSIGN_ICCP 2309
-#define MNG_FN_ASSIGN_TEXT 2310
-#define MNG_FN_ASSIGN_ZTXT 2311
-#define MNG_FN_ASSIGN_ITXT 2312
-#define MNG_FN_ASSIGN_BKGD 2313
-#define MNG_FN_ASSIGN_PHYS 2314
-#define MNG_FN_ASSIGN_SBIT 2315
-#define MNG_FN_ASSIGN_SPLT 2316
-#define MNG_FN_ASSIGN_HIST 2317
-#define MNG_FN_ASSIGN_TIME 2318
-#define MNG_FN_ASSIGN_MHDR 2319
-#define MNG_FN_ASSIGN_MEND 2320
-#define MNG_FN_ASSIGN_LOOP 2321
-#define MNG_FN_ASSIGN_ENDL 2322
-#define MNG_FN_ASSIGN_DEFI 2323
-#define MNG_FN_ASSIGN_BASI 2324
-#define MNG_FN_ASSIGN_CLON 2325
-#define MNG_FN_ASSIGN_PAST 2326
-#define MNG_FN_ASSIGN_DISC 2327
-#define MNG_FN_ASSIGN_BACK 2328
-#define MNG_FN_ASSIGN_FRAM 2329
-#define MNG_FN_ASSIGN_MOVE 2330
-#define MNG_FN_ASSIGN_CLIP 2331
-#define MNG_FN_ASSIGN_SHOW 2332
-#define MNG_FN_ASSIGN_TERM 2333
-#define MNG_FN_ASSIGN_SAVE 2334
-#define MNG_FN_ASSIGN_SEEK 2335
-#define MNG_FN_ASSIGN_EXPI 2336
-#define MNG_FN_ASSIGN_FPRI 2337
-#define MNG_FN_ASSIGN_NEED 2338
-#define MNG_FN_ASSIGN_PHYG 2339
-#define MNG_FN_ASSIGN_JHDR 2340
-#define MNG_FN_ASSIGN_JDAT 2341
-#define MNG_FN_ASSIGN_JSEP 2342
-#define MNG_FN_ASSIGN_DHDR 2343
-#define MNG_FN_ASSIGN_PROM 2344
-#define MNG_FN_ASSIGN_IPNG 2345
-#define MNG_FN_ASSIGN_PPLT 2346
-#define MNG_FN_ASSIGN_IJNG 2347
-#define MNG_FN_ASSIGN_DROP 2348
-#define MNG_FN_ASSIGN_DBYK 2349
-#define MNG_FN_ASSIGN_ORDR 2350
-#define MNG_FN_ASSIGN_UNKNOWN 2351
-#define MNG_FN_ASSIGN_MAGN 2352
-#define MNG_FN_ASSIGN_JDAA 2353
-#define MNG_FN_ASSIGN_EVNT 2354
-#define MNG_FN_ASSIGN_MPNG 2355
-
-/* ************************************************************************** */
-
-#define MNG_FN_FREE_IHDR 2401
-#define MNG_FN_FREE_PLTE 2402
-#define MNG_FN_FREE_IDAT 2403
-#define MNG_FN_FREE_IEND 2404
-#define MNG_FN_FREE_TRNS 2405
-#define MNG_FN_FREE_GAMA 2406
-#define MNG_FN_FREE_CHRM 2407
-#define MNG_FN_FREE_SRGB 2408
-#define MNG_FN_FREE_ICCP 2409
-#define MNG_FN_FREE_TEXT 2410
-#define MNG_FN_FREE_ZTXT 2411
-#define MNG_FN_FREE_ITXT 2412
-#define MNG_FN_FREE_BKGD 2413
-#define MNG_FN_FREE_PHYS 2414
-#define MNG_FN_FREE_SBIT 2415
-#define MNG_FN_FREE_SPLT 2416
-#define MNG_FN_FREE_HIST 2417
-#define MNG_FN_FREE_TIME 2418
-#define MNG_FN_FREE_MHDR 2419
-#define MNG_FN_FREE_MEND 2420
-#define MNG_FN_FREE_LOOP 2421
-#define MNG_FN_FREE_ENDL 2422
-#define MNG_FN_FREE_DEFI 2423
-#define MNG_FN_FREE_BASI 2424
-#define MNG_FN_FREE_CLON 2425
-#define MNG_FN_FREE_PAST 2426
-#define MNG_FN_FREE_DISC 2427
-#define MNG_FN_FREE_BACK 2428
-#define MNG_FN_FREE_FRAM 2429
-#define MNG_FN_FREE_MOVE 2430
-#define MNG_FN_FREE_CLIP 2431
-#define MNG_FN_FREE_SHOW 2432
-#define MNG_FN_FREE_TERM 2433
-#define MNG_FN_FREE_SAVE 2434
-#define MNG_FN_FREE_SEEK 2435
-#define MNG_FN_FREE_EXPI 2436
-#define MNG_FN_FREE_FPRI 2437
-#define MNG_FN_FREE_NEED 2438
-#define MNG_FN_FREE_PHYG 2439
-#define MNG_FN_FREE_JHDR 2440
-#define MNG_FN_FREE_JDAT 2441
-#define MNG_FN_FREE_JSEP 2442
-#define MNG_FN_FREE_DHDR 2443
-#define MNG_FN_FREE_PROM 2444
-#define MNG_FN_FREE_IPNG 2445
-#define MNG_FN_FREE_PPLT 2446
-#define MNG_FN_FREE_IJNG 2447
-#define MNG_FN_FREE_DROP 2448
-#define MNG_FN_FREE_DBYK 2449
-#define MNG_FN_FREE_ORDR 2450
-#define MNG_FN_FREE_UNKNOWN 2451
-#define MNG_FN_FREE_MAGN 2452
-#define MNG_FN_FREE_JDAA 2453
-#define MNG_FN_FREE_EVNT 2454
-#define MNG_FN_FREE_MPNG 2455
-
-/* ************************************************************************** */
-
-#define MNG_FN_READ_IHDR 2601
-#define MNG_FN_READ_PLTE 2602
-#define MNG_FN_READ_IDAT 2603
-#define MNG_FN_READ_IEND 2604
-#define MNG_FN_READ_TRNS 2605
-#define MNG_FN_READ_GAMA 2606
-#define MNG_FN_READ_CHRM 2607
-#define MNG_FN_READ_SRGB 2608
-#define MNG_FN_READ_ICCP 2609
-#define MNG_FN_READ_TEXT 2610
-#define MNG_FN_READ_ZTXT 2611
-#define MNG_FN_READ_ITXT 2612
-#define MNG_FN_READ_BKGD 2613
-#define MNG_FN_READ_PHYS 2614
-#define MNG_FN_READ_SBIT 2615
-#define MNG_FN_READ_SPLT 2616
-#define MNG_FN_READ_HIST 2617
-#define MNG_FN_READ_TIME 2618
-#define MNG_FN_READ_MHDR 2619
-#define MNG_FN_READ_MEND 2620
-#define MNG_FN_READ_LOOP 2621
-#define MNG_FN_READ_ENDL 2622
-#define MNG_FN_READ_DEFI 2623
-#define MNG_FN_READ_BASI 2624
-#define MNG_FN_READ_CLON 2625
-#define MNG_FN_READ_PAST 2626
-#define MNG_FN_READ_DISC 2627
-#define MNG_FN_READ_BACK 2628
-#define MNG_FN_READ_FRAM 2629
-#define MNG_FN_READ_MOVE 2630
-#define MNG_FN_READ_CLIP 2631
-#define MNG_FN_READ_SHOW 2632
-#define MNG_FN_READ_TERM 2633
-#define MNG_FN_READ_SAVE 2634
-#define MNG_FN_READ_SEEK 2635
-#define MNG_FN_READ_EXPI 2636
-#define MNG_FN_READ_FPRI 2637
-#define MNG_FN_READ_NEED 2638
-#define MNG_FN_READ_PHYG 2639
-#define MNG_FN_READ_JHDR 2640
-#define MNG_FN_READ_JDAT 2641
-#define MNG_FN_READ_JSEP 2642
-#define MNG_FN_READ_DHDR 2643
-#define MNG_FN_READ_PROM 2644
-#define MNG_FN_READ_IPNG 2645
-#define MNG_FN_READ_PPLT 2646
-#define MNG_FN_READ_IJNG 2647
-#define MNG_FN_READ_DROP 2648
-#define MNG_FN_READ_DBYK 2649
-#define MNG_FN_READ_ORDR 2650
-#define MNG_FN_READ_UNKNOWN 2651
-#define MNG_FN_READ_MAGN 2652
-#define MNG_FN_READ_JDAA 2653
-#define MNG_FN_READ_EVNT 2654
-#define MNG_FN_READ_MPNG 2655
-
-/* ************************************************************************** */
-
-#define MNG_FN_WRITE_IHDR 2801
-#define MNG_FN_WRITE_PLTE 2802
-#define MNG_FN_WRITE_IDAT 2803
-#define MNG_FN_WRITE_IEND 2804
-#define MNG_FN_WRITE_TRNS 2805
-#define MNG_FN_WRITE_GAMA 2806
-#define MNG_FN_WRITE_CHRM 2807
-#define MNG_FN_WRITE_SRGB 2808
-#define MNG_FN_WRITE_ICCP 2809
-#define MNG_FN_WRITE_TEXT 2810
-#define MNG_FN_WRITE_ZTXT 2811
-#define MNG_FN_WRITE_ITXT 2812
-#define MNG_FN_WRITE_BKGD 2813
-#define MNG_FN_WRITE_PHYS 2814
-#define MNG_FN_WRITE_SBIT 2815
-#define MNG_FN_WRITE_SPLT 2816
-#define MNG_FN_WRITE_HIST 2817
-#define MNG_FN_WRITE_TIME 2818
-#define MNG_FN_WRITE_MHDR 2819
-#define MNG_FN_WRITE_MEND 2820
-#define MNG_FN_WRITE_LOOP 2821
-#define MNG_FN_WRITE_ENDL 2822
-#define MNG_FN_WRITE_DEFI 2823
-#define MNG_FN_WRITE_BASI 2824
-#define MNG_FN_WRITE_CLON 2825
-#define MNG_FN_WRITE_PAST 2826
-#define MNG_FN_WRITE_DISC 2827
-#define MNG_FN_WRITE_BACK 2828
-#define MNG_FN_WRITE_FRAM 2829
-#define MNG_FN_WRITE_MOVE 2830
-#define MNG_FN_WRITE_CLIP 2831
-#define MNG_FN_WRITE_SHOW 2832
-#define MNG_FN_WRITE_TERM 2833
-#define MNG_FN_WRITE_SAVE 2834
-#define MNG_FN_WRITE_SEEK 2835
-#define MNG_FN_WRITE_EXPI 2836
-#define MNG_FN_WRITE_FPRI 2837
-#define MNG_FN_WRITE_NEED 2838
-#define MNG_FN_WRITE_PHYG 2839
-#define MNG_FN_WRITE_JHDR 2840
-#define MNG_FN_WRITE_JDAT 2841
-#define MNG_FN_WRITE_JSEP 2842
-#define MNG_FN_WRITE_DHDR 2843
-#define MNG_FN_WRITE_PROM 2844
-#define MNG_FN_WRITE_IPNG 2845
-#define MNG_FN_WRITE_PPLT 2846
-#define MNG_FN_WRITE_IJNG 2847
-#define MNG_FN_WRITE_DROP 2848
-#define MNG_FN_WRITE_DBYK 2849
-#define MNG_FN_WRITE_ORDR 2850
-#define MNG_FN_WRITE_UNKNOWN 2851
-#define MNG_FN_WRITE_MAGN 2852
-#define MNG_FN_WRITE_JDAA 2853
-#define MNG_FN_WRITE_EVNT 2854
-#define MNG_FN_WRITE_MPNG 2855
-
-/* ************************************************************************** */
-
-#define MNG_FN_ZLIB_INITIALIZE 3001
-#define MNG_FN_ZLIB_CLEANUP 3002
-#define MNG_FN_ZLIB_INFLATEINIT 3003
-#define MNG_FN_ZLIB_INFLATEROWS 3004
-#define MNG_FN_ZLIB_INFLATEDATA 3005
-#define MNG_FN_ZLIB_INFLATEFREE 3006
-#define MNG_FN_ZLIB_DEFLATEINIT 3007
-#define MNG_FN_ZLIB_DEFLATEROWS 3008
-#define MNG_FN_ZLIB_DEFLATEDATA 3009
-#define MNG_FN_ZLIB_DEFLATEFREE 3010
-
-/* ************************************************************************** */
-
-#define MNG_FN_PROCESS_DISPLAY_IHDR 3201
-#define MNG_FN_PROCESS_DISPLAY_PLTE 3202
-#define MNG_FN_PROCESS_DISPLAY_IDAT 3203
-#define MNG_FN_PROCESS_DISPLAY_IEND 3204
-#define MNG_FN_PROCESS_DISPLAY_TRNS 3205
-#define MNG_FN_PROCESS_DISPLAY_GAMA 3206
-#define MNG_FN_PROCESS_DISPLAY_CHRM 3207
-#define MNG_FN_PROCESS_DISPLAY_SRGB 3208
-#define MNG_FN_PROCESS_DISPLAY_ICCP 3209
-#define MNG_FN_PROCESS_DISPLAY_BKGD 3210
-#define MNG_FN_PROCESS_DISPLAY_PHYS 3211
-#define MNG_FN_PROCESS_DISPLAY_SBIT 3212
-#define MNG_FN_PROCESS_DISPLAY_SPLT 3213
-#define MNG_FN_PROCESS_DISPLAY_HIST 3214
-#define MNG_FN_PROCESS_DISPLAY_MHDR 3215
-#define MNG_FN_PROCESS_DISPLAY_MEND 3216
-#define MNG_FN_PROCESS_DISPLAY_LOOP 3217
-#define MNG_FN_PROCESS_DISPLAY_ENDL 3218
-#define MNG_FN_PROCESS_DISPLAY_DEFI 3219
-#define MNG_FN_PROCESS_DISPLAY_BASI 3220
-#define MNG_FN_PROCESS_DISPLAY_CLON 3221
-#define MNG_FN_PROCESS_DISPLAY_PAST 3222
-#define MNG_FN_PROCESS_DISPLAY_DISC 3223
-#define MNG_FN_PROCESS_DISPLAY_BACK 3224
-#define MNG_FN_PROCESS_DISPLAY_FRAM 3225
-#define MNG_FN_PROCESS_DISPLAY_MOVE 3226
-#define MNG_FN_PROCESS_DISPLAY_CLIP 3227
-#define MNG_FN_PROCESS_DISPLAY_SHOW 3228
-#define MNG_FN_PROCESS_DISPLAY_TERM 3229
-#define MNG_FN_PROCESS_DISPLAY_SAVE 3230
-#define MNG_FN_PROCESS_DISPLAY_SEEK 3231
-#define MNG_FN_PROCESS_DISPLAY_EXPI 3232
-#define MNG_FN_PROCESS_DISPLAY_FPRI 3233
-#define MNG_FN_PROCESS_DISPLAY_NEED 3234
-#define MNG_FN_PROCESS_DISPLAY_PHYG 3235
-#define MNG_FN_PROCESS_DISPLAY_JHDR 3236
-#define MNG_FN_PROCESS_DISPLAY_JDAT 3237
-#define MNG_FN_PROCESS_DISPLAY_JSEP 3238
-#define MNG_FN_PROCESS_DISPLAY_DHDR 3239
-#define MNG_FN_PROCESS_DISPLAY_PROM 3240
-#define MNG_FN_PROCESS_DISPLAY_IPNG 3241
-#define MNG_FN_PROCESS_DISPLAY_PPLT 3242
-#define MNG_FN_PROCESS_DISPLAY_IJNG 3243
-#define MNG_FN_PROCESS_DISPLAY_DROP 3244
-#define MNG_FN_PROCESS_DISPLAY_DBYK 3245
-#define MNG_FN_PROCESS_DISPLAY_ORDR 3246
-#define MNG_FN_PROCESS_DISPLAY_MAGN 3247
-#define MNG_FN_PROCESS_DISPLAY_JDAA 3248
-
-/* ************************************************************************** */
-
-#define MNG_FN_JPEG_INITIALIZE 3401
-#define MNG_FN_JPEG_CLEANUP 3402
-#define MNG_FN_JPEG_DECOMPRESSINIT 3403
-#define MNG_FN_JPEG_DECOMPRESSDATA 3404
-#define MNG_FN_JPEG_DECOMPRESSFREE 3405
-
-#define MNG_FN_STORE_JPEG_G8 3501
-#define MNG_FN_STORE_JPEG_RGB8 3502
-#define MNG_FN_STORE_JPEG_G12 3503
-#define MNG_FN_STORE_JPEG_RGB12 3504
-#define MNG_FN_STORE_JPEG_GA8 3505
-#define MNG_FN_STORE_JPEG_RGBA8 3506
-#define MNG_FN_STORE_JPEG_GA12 3507
-#define MNG_FN_STORE_JPEG_RGBA12 3508
-#define MNG_FN_STORE_JPEG_G8_ALPHA 3509
-#define MNG_FN_STORE_JPEG_RGB8_ALPHA 3510
-
-#define MNG_FN_INIT_JPEG_A1_NI 3511
-#define MNG_FN_INIT_JPEG_A2_NI 3512
-#define MNG_FN_INIT_JPEG_A4_NI 3513
-#define MNG_FN_INIT_JPEG_A8_NI 3514
-#define MNG_FN_INIT_JPEG_A16_NI 3515
-
-#define MNG_FN_STORE_JPEG_G8_A1 3521
-#define MNG_FN_STORE_JPEG_G8_A2 3522
-#define MNG_FN_STORE_JPEG_G8_A4 3523
-#define MNG_FN_STORE_JPEG_G8_A8 3524
-#define MNG_FN_STORE_JPEG_G8_A16 3525
-
-#define MNG_FN_STORE_JPEG_RGB8_A1 3531
-#define MNG_FN_STORE_JPEG_RGB8_A2 3532
-#define MNG_FN_STORE_JPEG_RGB8_A4 3533
-#define MNG_FN_STORE_JPEG_RGB8_A8 3534
-#define MNG_FN_STORE_JPEG_RGB8_A16 3535
-
-#define MNG_FN_STORE_JPEG_G12_A1 3541
-#define MNG_FN_STORE_JPEG_G12_A2 3542
-#define MNG_FN_STORE_JPEG_G12_A4 3543
-#define MNG_FN_STORE_JPEG_G12_A8 3544
-#define MNG_FN_STORE_JPEG_G12_A16 3545
-
-#define MNG_FN_STORE_JPEG_RGB12_A1 3551
-#define MNG_FN_STORE_JPEG_RGB12_A2 3552
-#define MNG_FN_STORE_JPEG_RGB12_A4 3553
-#define MNG_FN_STORE_JPEG_RGB12_A8 3554
-#define MNG_FN_STORE_JPEG_RGB12_A16 3555
-
-#define MNG_FN_NEXT_JPEG_ALPHAROW 3591
-#define MNG_FN_NEXT_JPEG_ROW 3592
-#define MNG_FN_DISPLAY_JPEG_ROWS 3593
-
-/* ************************************************************************** */
-
-#define MNG_FN_MAGNIFY_G8_X1 3701
-#define MNG_FN_MAGNIFY_G8_X2 3702
-#define MNG_FN_MAGNIFY_RGB8_X1 3703
-#define MNG_FN_MAGNIFY_RGB8_X2 3704
-#define MNG_FN_MAGNIFY_GA8_X1 3705
-#define MNG_FN_MAGNIFY_GA8_X2 3706
-#define MNG_FN_MAGNIFY_GA8_X3 3707
-#define MNG_FN_MAGNIFY_GA8_X4 3708
-#define MNG_FN_MAGNIFY_RGBA8_X1 3709
-#define MNG_FN_MAGNIFY_RGBA8_X2 3710
-#define MNG_FN_MAGNIFY_RGBA8_X3 3711
-#define MNG_FN_MAGNIFY_RGBA8_X4 3712
-#define MNG_FN_MAGNIFY_G8_X3 3713
-#define MNG_FN_MAGNIFY_RGB8_X3 3714
-#define MNG_FN_MAGNIFY_GA8_X5 3715
-#define MNG_FN_MAGNIFY_RGBA8_X5 3716
-
-#define MNG_FN_MAGNIFY_G16_X1 3725
-#define MNG_FN_MAGNIFY_G16_X2 3726
-#define MNG_FN_MAGNIFY_RGB16_X1 3727
-#define MNG_FN_MAGNIFY_RGB16_X2 3728
-#define MNG_FN_MAGNIFY_GA16_X1 3729
-#define MNG_FN_MAGNIFY_GA16_X2 3730
-#define MNG_FN_MAGNIFY_GA16_X3 3731
-#define MNG_FN_MAGNIFY_GA16_X4 3732
-#define MNG_FN_MAGNIFY_RGBA16_X1 3733
-#define MNG_FN_MAGNIFY_RGBA16_X2 3734
-#define MNG_FN_MAGNIFY_RGBA16_X3 3735
-#define MNG_FN_MAGNIFY_RGBA16_X4 3736
-#define MNG_FN_MAGNIFY_G16_X3 3737
-#define MNG_FN_MAGNIFY_RGB16_X3 3738
-#define MNG_FN_MAGNIFY_GA16_X5 3739
-#define MNG_FN_MAGNIFY_RGBA16_X5 3740
-
-#define MNG_FN_MAGNIFY_G8_Y1 3751
-#define MNG_FN_MAGNIFY_G8_Y2 3752
-#define MNG_FN_MAGNIFY_RGB8_Y1 3753
-#define MNG_FN_MAGNIFY_RGB8_Y2 3754
-#define MNG_FN_MAGNIFY_GA8_Y1 3755
-#define MNG_FN_MAGNIFY_GA8_Y2 3756
-#define MNG_FN_MAGNIFY_GA8_Y3 3757
-#define MNG_FN_MAGNIFY_GA8_Y4 3758
-#define MNG_FN_MAGNIFY_RGBA8_Y1 3759
-#define MNG_FN_MAGNIFY_RGBA8_Y2 3760
-#define MNG_FN_MAGNIFY_RGBA8_Y3 3761
-#define MNG_FN_MAGNIFY_RGBA8_Y4 3762
-#define MNG_FN_MAGNIFY_G8_Y3 3763
-#define MNG_FN_MAGNIFY_RGB8_Y3 3764
-#define MNG_FN_MAGNIFY_GA8_Y5 3765
-#define MNG_FN_MAGNIFY_RGBA8_Y5 3766
-
-#define MNG_FN_MAGNIFY_G16_Y1 3775
-#define MNG_FN_MAGNIFY_G16_Y2 3776
-#define MNG_FN_MAGNIFY_RGB16_Y1 3777
-#define MNG_FN_MAGNIFY_RGB16_Y2 3778
-#define MNG_FN_MAGNIFY_GA16_Y1 3779
-#define MNG_FN_MAGNIFY_GA16_Y2 3780
-#define MNG_FN_MAGNIFY_GA16_Y3 3781
-#define MNG_FN_MAGNIFY_GA16_Y4 3782
-#define MNG_FN_MAGNIFY_RGBA16_Y1 3783
-#define MNG_FN_MAGNIFY_RGBA16_Y2 3784
-#define MNG_FN_MAGNIFY_RGBA16_Y3 3785
-#define MNG_FN_MAGNIFY_RGBA16_Y4 3786
-#define MNG_FN_MAGNIFY_G16_Y3 3787
-#define MNG_FN_MAGNIFY_RGB16_Y3 3788
-#define MNG_FN_MAGNIFY_GA16_Y5 3789
-#define MNG_FN_MAGNIFY_RGBA16_Y5 3790
-
-/* ************************************************************************** */
-
-#define MNG_FN_DELTA_G1_G1 3801
-#define MNG_FN_DELTA_G2_G2 3802
-#define MNG_FN_DELTA_G4_G4 3803
-#define MNG_FN_DELTA_G8_G8 3804
-#define MNG_FN_DELTA_G16_G16 3805
-#define MNG_FN_DELTA_RGB8_RGB8 3806
-#define MNG_FN_DELTA_RGB16_RGB16 3807
-#define MNG_FN_DELTA_GA8_GA8 3808
-#define MNG_FN_DELTA_GA8_G8 3809
-#define MNG_FN_DELTA_GA8_A8 3810
-#define MNG_FN_DELTA_GA16_GA16 3811
-#define MNG_FN_DELTA_GA16_G16 3812
-#define MNG_FN_DELTA_GA16_A16 3813
-#define MNG_FN_DELTA_RGBA8_RGBA8 3814
-#define MNG_FN_DELTA_RGBA8_RGB8 3815
-#define MNG_FN_DELTA_RGBA8_A8 3816
-#define MNG_FN_DELTA_RGBA16_RGBA16 3817
-#define MNG_FN_DELTA_RGBA16_RGB16 3818
-#define MNG_FN_DELTA_RGBA16_A16 3819
-
-#define MNG_FN_PROMOTE_G8_G8 3901
-#define MNG_FN_PROMOTE_G8_G16 3902
-#define MNG_FN_PROMOTE_G16_G16 3903
-#define MNG_FN_PROMOTE_G8_GA8 3904
-#define MNG_FN_PROMOTE_G8_GA16 3905
-#define MNG_FN_PROMOTE_G16_GA16 3906
-#define MNG_FN_PROMOTE_G8_RGB8 3907
-#define MNG_FN_PROMOTE_G8_RGB16 3908
-#define MNG_FN_PROMOTE_G16_RGB16 3909
-#define MNG_FN_PROMOTE_G8_RGBA8 3910
-#define MNG_FN_PROMOTE_G8_RGBA16 3911
-#define MNG_FN_PROMOTE_G16_RGBA16 3912
-#define MNG_FN_PROMOTE_GA8_GA16 3913
-#define MNG_FN_PROMOTE_GA8_RGBA8 3914
-#define MNG_FN_PROMOTE_GA8_RGBA16 3915
-#define MNG_FN_PROMOTE_GA16_RGBA16 3916
-#define MNG_FN_PROMOTE_RGB8_RGB16 3917
-#define MNG_FN_PROMOTE_RGB8_RGBA8 3918
-#define MNG_FN_PROMOTE_RGB8_RGBA16 3919
-#define MNG_FN_PROMOTE_RGB16_RGBA16 3920
-#define MNG_FN_PROMOTE_RGBA8_RGBA16 3921
-#define MNG_FN_PROMOTE_IDX8_RGB8 3922
-#define MNG_FN_PROMOTE_IDX8_RGB16 3923
-#define MNG_FN_PROMOTE_IDX8_RGBA8 3924
-#define MNG_FN_PROMOTE_IDX8_RGBA16 3925
-
-#define MNG_FN_SCALE_G1_G2 4001
-#define MNG_FN_SCALE_G1_G4 4002
-#define MNG_FN_SCALE_G1_G8 4003
-#define MNG_FN_SCALE_G1_G16 4004
-#define MNG_FN_SCALE_G2_G4 4005
-#define MNG_FN_SCALE_G2_G8 4006
-#define MNG_FN_SCALE_G2_G16 4007
-#define MNG_FN_SCALE_G4_G8 4008
-#define MNG_FN_SCALE_G4_G16 4009
-#define MNG_FN_SCALE_G8_G16 4010
-#define MNG_FN_SCALE_GA8_GA16 4011
-#define MNG_FN_SCALE_RGB8_RGB16 4012
-#define MNG_FN_SCALE_RGBA8_RGBA16 4013
-
-#define MNG_FN_SCALE_G2_G1 4021
-#define MNG_FN_SCALE_G4_G1 4022
-#define MNG_FN_SCALE_G8_G1 4023
-#define MNG_FN_SCALE_G16_G1 4024
-#define MNG_FN_SCALE_G4_G2 4025
-#define MNG_FN_SCALE_G8_G2 4026
-#define MNG_FN_SCALE_G16_G2 4027
-#define MNG_FN_SCALE_G8_G4 4028
-#define MNG_FN_SCALE_G16_G4 4029
-#define MNG_FN_SCALE_G16_G8 4030
-#define MNG_FN_SCALE_GA16_GA8 4031
-#define MNG_FN_SCALE_RGB16_RGB8 4032
-#define MNG_FN_SCALE_RGBA16_RGBA8 4033
-
-#define MNG_FN_COMPOSEOVER_RGBA8 4501
-#define MNG_FN_COMPOSEOVER_RGBA16 4502
-#define MNG_FN_COMPOSEUNDER_RGBA8 4503
-#define MNG_FN_COMPOSEUNDER_RGBA16 4504
-
-#define MNG_FN_FLIP_RGBA8 4521
-#define MNG_FN_FLIP_RGBA16 4522
-#define MNG_FN_TILE_RGBA8 4523
-#define MNG_FN_TILE_RGBA16 4524
-
-/* ************************************************************************** */
-/* * * */
-/* * Trace string-table entry * */
-/* * * */
-/* ************************************************************************** */
-
-typedef struct {
- mng_uint32 iFunction;
- mng_pchar zTracetext;
- } mng_trace_entry;
-typedef mng_trace_entry const * mng_trace_entryp;
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_TRACE_PROCS */
-
-/* ************************************************************************** */
-
-#endif /* _libmng_trace_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
diff --git a/src/3rdparty/libmng/libmng_types.h b/src/3rdparty/libmng/libmng_types.h
deleted file mode 100644
index 81fb29f528..0000000000
--- a/src/3rdparty/libmng/libmng_types.h
+++ /dev/null
@@ -1,574 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_types.h copyright (c) 2000-2007 G.Juyn * */
-/* * version : 1.0.10 * */
-/* * * */
-/* * purpose : type specifications * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : Specification of the types used by the library * */
-/* * Creates platform-independant structure * */
-/* * * */
-/* * changes : 0.5.1 - 05/06/2000 - G.Juyn * */
-/* * - added iteratechunk callback definition * */
-/* * 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - improved definitions for DLL support * */
-/* * - added 8-bit palette definition * */
-/* * - added general array definitions * */
-/* * - added MNG_NULL definition * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/11/2000 - G.Juyn * */
-/* * - changed most callback prototypes to allow the app * */
-/* * to report errors during callback processing * */
-/* * 0.5.1 - 05/16/2000 - G.Juyn * */
-/* * - moved standard header includes into this file * */
-/* * (stdlib/mem for mem-mngmt & math for fp gamma-calc) * */
-/* * * */
-/* * 0.5.2 - 05/18/2000 - G.Juyn * */
-/* * - B003 - fixed problem with <mem.h> being proprietary * */
-/* * to Borland platform * */
-/* * - added helper definitions for JNG (IJG-based) * */
-/* * - fixed support for IJGSRC6B * */
-/* * 0.5.2 - 05/24/2000 - G.Juyn * */
-/* * - added default IJG compression parameters and such * */
-/* * 0.5.2 - 05/31/2000 - G.Juyn * */
-/* * - fixed inclusion for memcpy (contributed by Tim Rowley) * */
-/* * - added mng_int32p (contributed by Tim Rowley) * */
-/* * 0.5.2 - 06/02/2000 - G.Juyn * */
-/* * - removed SWAP_ENDIAN reference (contributed by Tim Rowley)* */
-/* * - added getalphaline callback for RGB8_A8 canvasstyle * */
-/* * * */
-/* * 0.5.3 - 06/21/2000 - G.Juyn * */
-/* * - added speedtype to facilitate testing * */
-/* * 0.5.3 - 06/27/2000 - G.Juyn * */
-/* * - added typedef for mng_size_t * */
-/* * - changed size parameter for memory callbacks to * */
-/* * mng_size_t * */
-/* * 0.5.3 - 06/28/2000 - G.Juyn * */
-/* * - changed definition of 32-bit ints (64-bit platforms) * */
-/* * - changed definition of mng_handle (64-bit platforms) * */
-/* * 0.5.3 - 06/29/2000 - G.Juyn * */
-/* * - changed definition of mng_handle (again) * */
-/* * - swapped refresh parameters * */
-/* * - added inclusion of stdlib.h for abs() * */
-/* * * */
-/* * 0.9.0 - 06/30/2000 - G.Juyn * */
-/* * - changed refresh parameters to 'x,y,width,height' * */
-/* * 0.9.1 - 07/10/2000 - G.Juyn * */
-/* * - added suspendbuffer constants * */
-/* * 0.9.1 - 07/15/2000 - G.Juyn * */
-/* * - added callbacks for SAVE/SEEK processing * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 08/07/2000 - G.Juyn * */
-/* * - B111300 - fixup for improved portability * */
-/* * 0.9.3 - 08/12/2000 - G.Juyn * */
-/* * - added workaround for faulty PhotoShop iCCP chunk * */
-/* * 0.9.3 - 09/11/2000 - G.Juyn * */
-/* * - added export of zlib functions from windows dll * */
-/* * - fixed inclusion parameters once again to make those * */
-/* * external libs work together * */
-/* * - re-fixed fixed inclusion parameters * */
-/* * (these freeking libraries make me mad) * */
-/* * 0.9.3 - 10/11/2000 - G.Juyn * */
-/* * - added support for nEED * */
-/* * 0.9.3 - 10/17/2000 - G.Juyn * */
-/* * - added callback to process non-critical unknown chunks * */
-/* * * */
-/* * 0.9.4 - 11/20/2000 - R.Giles * */
-/* * - fixed inclusion of lcms header for non-windows platforms * */
-/* * 0.9.4 - 12/12/2000 - G.Juyn * */
-/* * - changed callback convention for MSVC (Thanks Chad) * */
-/* * 0.9.4 - 12/16/2000 - G.Juyn * */
-/* * - fixed mixup of data- & function-pointers (thanks Dimitri)* */
-/* * * */
-/* * 1.0.1 - 02/08/2001 - G.Juyn * */
-/* * - added MEND processing callback * */
-/* * * */
-/* * 1.0.2 - 06/23/2001 - G.Juyn * */
-/* * - added processterm callback * */
-/* * * */
-/* * 1.0.3 - 08/06/2001 - G.Juyn * */
-/* * - changed inclusion of lcms.h for Linux platforms * */
-/* * * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * * */
-/* * 1.0.6 - 04/11/2003 - G.Juyn * */
-/* * - B719420 - fixed several MNG_APP_CMS problems * */
-/* * 1.0.6 - 06/15/2003 - R.Giles * */
-/* * - lcms.h inclusion is generally no longer prefixed * */
-/* * 1.0.6 - 07/07/2003 - G. R-P. * */
-/* * - added png_imgtypes enumeration * */
-/* * * */
-/* * 1.0.7 - 03/10/2004 - G.R-P * */
-/* * - added conditionals around openstream/closestream * */
-/* * * */
-/* * 1.0.8 - 04/11/2004 - G.Juyn * */
-/* * - added data-push mechanisms for specialized decoders * */
-/* * 1.0.8 - 08/01/2004 - G.Juyn * */
-/* * - added support for 3+byte pixelsize for JPEG's * */
-/* * * */
-/* * 1.0.9 - 12/05/2004 - G.Juyn * */
-/* * - inclusion of zlib/lcms/ijgsrc6b with <> instead of "" * */
-/* * 1.0.9 - 12/06/2004 - G.Juyn * */
-/* * - added conditional MNG_OPTIMIZE_CHUNKREADER * */
-/* * * */
-/* * 1.0.10 - 04/08/2007 - G.Juyn * */
-/* * - added support for mPNG proposal * */
-/* * 1.0.10 - 04/12/2007 - G.Juyn * */
-/* * - added support for ANG proposal * */
-/* * * */
-/* ************************************************************************** */
-
-#ifndef _libmng_types_h_
-#define _libmng_types_h_
-
-/* ************************************************************************** */
-
-#ifdef __BORLANDC__
-#pragma option -AT /* turn off strict ANSI-C for the moment */
-#endif
-
-#ifndef WIN32
-#if defined(_WIN32) || defined(__WIN32__) || defined(_Windows) || defined(_WINDOWS)
-#define WIN32 /* gather them into a single define */
-#endif
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Here's where the external & standard libs are embedded * */
-/* * * */
-/* * (it can be a bit of a pain in the lower-back to get them to work * */
-/* * together) * */
-/* * * */
-/* ************************************************************************** */
-
-#ifdef WIN32 /* only include needed stuff */
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#endif
-
-#ifdef MNG_USE_DLL
-#ifdef MNG_SKIP_ZLIB
-#undef MNG_INCLUDE_ZLIB
-#endif
-#ifdef MNG_SKIP_LCMS
-#undef MNG_INCLUDE_LCMS
-#endif
-#ifdef MNG_SKIP_IJG6B
-#undef MNG_INCLUDE_IJG6B
-#endif
-#endif
-
-#ifdef MNG_INCLUDE_ZLIB /* zlib by Mark Adler & Jean-loup Gailly */
-#include <zlib.h>
-#endif
-
-#ifdef MNG_INCLUDE_LCMS /* little cms by Marti Maria Saguer */
-#ifndef ZLIB_DLL
-#undef FAR
-#endif
-#include <lcms.h>
-#endif /* MNG_INCLUDE_LCMS */
-
-#ifdef MNG_INCLUDE_IJG6B /* IJG's jpgsrc6b */
-#include <stdio.h>
-#ifdef MNG_USE_SETJMP
-#include <setjmp.h> /* needed for error-recovery (blergh) */
-#else
-#ifdef WIN32
-#define USE_WINDOWS_MESSAGEBOX /* display a messagebox under Windoze */
-#endif
-#endif /* MNG_USE_SETJMP */
-#ifdef FAR
-#undef FAR /* possibly defined by zlib or lcms */
-#endif
-#define JPEG_INTERNAL_OPTIONS /* for RGB_PIXELSIZE */
-#include <jpeglib.h> /* all that for JPEG support :-) */
-#endif /* MNG_INCLUDE_IJG6B */
-
-#if defined(MNG_INTERNAL_MEMMNGMT) || defined(MNG_INCLUDE_FILTERS)
-#include <stdlib.h> /* "calloc" & "free" & "abs" */
-#endif
-
-#include <limits.h> /* get proper integer widths */
-
-#ifdef WIN32
-#if defined __BORLANDC__
-#include <mem.h> /* defines "memcpy" for BCB */
-#else
-#include <memory.h> /* defines "memcpy" for other win32 platforms */
-#endif
-#include <string.h> /* "strncmp" + "strcmp" */
-#else /* WIN32 */
-#ifdef BSD
-#include <strings.h> /* defines "memcpy", etc for BSD (?) */
-#else
-#include <string.h> /* defines "memcpy", etc for all others (???) */
-#endif
-#endif /* WIN32 */
-
-#if defined(MNG_FULL_CMS) || defined(MNG_GAMMA_ONLY) || defined(MNG_APP_CMS)
-#include <math.h> /* fp gamma-calculation */
-#endif
-
-/* ************************************************************************** */
-/* * * */
-/* * Platform-dependant stuff * */
-/* * * */
-/* ************************************************************************** */
-
-/* TODO: this may require some elaboration for other platforms;
- only works with BCB for now */
-
-#ifndef MNG_DLL
-#if defined(MNG_BUILD_DLL) || defined(MNG_USE_DLL)
-#define MNG_DLL
-#endif
-#endif
-
-#define MNG_LOCAL static
-
-#if defined(MNG_DLL) && defined(WIN32) /* setup DLL calling conventions */
-#define MNG_DECL __stdcall
-#if defined(MNG_BUILD_DLL)
-#define MNG_EXT __declspec(dllexport)
-#elif defined(MNG_USE_DLL)
-#define MNG_EXT __declspec(dllimport)
-#else
-#define MNG_EXT
-#endif
-#ifdef MNG_STRICT_ANSI
-#undef MNG_STRICT_ANSI /* can't do strict-ANSI with this DLL-stuff */
-#endif
-#else
-#define MNG_DECL /* dummies for non-DLL */
-#define MNG_EXT
-#endif /* MNG_DLL && WIN32 */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* now force ANSI-C from here on */
-#endif
-
-/* ************************************************************************** */
-
-#if USHRT_MAX == 0xffffffffU /* get the proper 32-bit width !!! */
-typedef unsigned short mng_uint32;
-typedef signed short mng_int32;
-#elif UINT_MAX == 0xffffffffU
-typedef unsigned int mng_uint32;
-typedef signed int mng_int32;
-#elif ULONG_MAX == 0xffffffffU
-typedef unsigned long mng_uint32;
-typedef signed long mng_int32;
-#else
-#error "Sorry, I can't find any 32-bit integers on this platform."
-#endif
-
-typedef signed short mng_int16; /* other basic integers */
-typedef unsigned short mng_uint16;
-typedef signed char mng_int8;
-typedef unsigned char mng_uint8;
-
-typedef double mng_float; /* basic float */
-
-typedef size_t mng_size_t; /* size field for memory allocation */
-
-typedef char * mng_pchar; /* string */
-typedef void * mng_ptr; /* generic pointer */
-typedef void (*mng_fptr) (void); /* generic function pointer */
-
-/* ************************************************************************** */
-/* * * */
-/* * Platform-independant from here * */
-/* * * */
-/* ************************************************************************** */
-
-typedef mng_uint32 * mng_uint32p; /* pointer to unsigned longs */
-typedef mng_int32 * mng_int32p; /* pointer to longs */
-typedef mng_uint16 * mng_uint16p; /* pointer to unsigned words */
-typedef mng_uint8 * mng_uint8p; /* pointer to unsigned bytes */
-
-typedef mng_int8 mng_bool; /* booleans */
-
-struct mng_data_struct;
-typedef struct mng_data_struct * mng_handle; /* generic handle */
-
-typedef mng_int32 mng_retcode; /* generic return code */
-typedef mng_int32 mng_chunkid; /* 4-byte chunkname identifier */
-typedef mng_ptr mng_chunkp; /* pointer to a chunk-structure */
-typedef mng_ptr mng_objectp; /* pointer to an object-structure */
-
-typedef mng_chunkid * mng_chunkidp; /* pointer to chunkid */
-
-typedef struct { /* 8-bit palette element */
- mng_uint8 iRed;
- mng_uint8 iGreen;
- mng_uint8 iBlue;
- } mng_palette8e;
-typedef mng_palette8e mng_palette8[256]; /* 8-bit palette */
-typedef mng_palette8e * mng_palette8ep;
-
-typedef mng_uint8 mng_uint8arr[256]; /* generic arrays */
-typedef mng_uint8 mng_uint8arr4[4];
-typedef mng_uint16 mng_uint16arr[256];
-typedef mng_uint32 mng_uint32arr2[2];
-
-/* ************************************************************************** */
-
-#define MNG_FALSE 0
-#define MNG_TRUE 1
-#define MNG_NULL 0
-
-#define MNG_SUSPENDBUFFERSIZE 32768
-#define MNG_SUSPENDREQUESTSIZE 1024
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ZLIB
-
-/* size of temporary zlib buffer for deflate processing */
-#define MNG_ZLIB_MAXBUF 8192
-
-/* default zlib compression parameters for deflateinit2 */
-#define MNG_ZLIB_LEVEL 9 /* level */
-#define MNG_ZLIB_METHOD Z_DEFLATED /* method */
-#define MNG_ZLIB_WINDOWBITS 15 /* window size */
-#define MNG_ZLIB_MEMLEVEL 9 /* memory level */
-#define MNG_ZLIB_STRATEGY Z_DEFAULT_STRATEGY /* strategy */
-
-#define MNG_MAX_IDAT_SIZE 4096 /* maximum size of IDAT data */
-
-#endif /* MNG_INCLUDE_ZLIB */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_JNG
-
-#ifdef MNG_INCLUDE_IJG6B /* IJG helper defs */
-typedef struct jpeg_compress_struct mngjpeg_comp;
-typedef struct jpeg_decompress_struct mngjpeg_decomp;
-typedef struct jpeg_error_mgr mngjpeg_error;
-typedef struct jpeg_source_mgr mngjpeg_source;
-
-typedef mngjpeg_comp * mngjpeg_compp;
-typedef mngjpeg_decomp * mngjpeg_decompp;
-typedef mngjpeg_error * mngjpeg_errorp;
-typedef mngjpeg_source * mngjpeg_sourcep;
-
-typedef J_DCT_METHOD mngjpeg_dctmethod;
-
-/* default IJG parameters for compression */
-#define MNG_JPEG_DCT JDCT_DEFAULT /* DCT algorithm (JDCT_ISLOW) */
-#define MNG_JPEG_QUALITY 100 /* quality 0..100; 100=best */
-#define MNG_JPEG_SMOOTHING 0 /* default no smoothing */
-#define MNG_JPEG_PROGRESSIVE MNG_FALSE /* default is just baseline */
-#define MNG_JPEG_OPTIMIZED MNG_FALSE /* default is not optimized */
-#endif /* MNG_INCLUDE_IJG6B */
-
-#define MNG_JPEG_MAXBUF 65500 /* max size of temp JPEG buffer */
-#define MNG_MAX_JDAT_SIZE 4096 /* maximum size of JDAT data */
-
-#endif /* MNG_INCLUDE_JNG */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_LCMS
-typedef cmsHPROFILE mng_cmsprof; /* little CMS helper defs */
-typedef cmsHTRANSFORM mng_cmstrans;
-typedef cmsCIExyY mng_CIExyY;
-typedef cmsCIExyYTRIPLE mng_CIExyYTRIPLE;
-typedef LPGAMMATABLE mng_gammatabp;
-#endif /* MNG_INCLUDE_LCMS */
-
-/* ************************************************************************** */
-
- /* enumeration of known graphics types */
-enum mng_imgtypes {mng_it_unknown, mng_it_png, mng_it_mng, mng_it_jng
-#ifdef MNG_INCLUDE_MPNG_PROPOSAL
- ,mng_it_mpng
-#endif
-#ifdef MNG_INCLUDE_ANG_PROPOSAL
- ,mng_it_ang
-#endif
- };
-typedef enum mng_imgtypes mng_imgtype;
-
- /* enumeration of animation speed-types */
-enum mng_speedtypes {mng_st_normal, mng_st_fast, mng_st_slow, mng_st_slowest};
-typedef enum mng_speedtypes mng_speedtype;
-
-#ifdef MNG_OPTIMIZE_CHUNKREADER
- /* enumeration object-creation indicators */
-enum mng_createobjtypes {mng_create_none, mng_create_always, mng_create_ifglobal};
-typedef enum mng_createobjtypes mng_createobjtype;
-#endif
-
-/* ************************************************************************** */
-
-/* enumeration of PNG image types */
-#ifdef MNG_OPTIMIZE_FOOTPRINT_INIT
-enum png_imgtypes
- {
- png_g1,
- png_g2,
- png_g4,
- png_g8,
- png_rgb8,
- png_idx1,
- png_idx2,
- png_idx4,
- png_idx8,
- png_ga8,
- png_rgba8,
-#ifdef MNG_INCLUDE_JNG
- png_jpeg_a1,
- png_jpeg_a2,
- png_jpeg_a4,
- png_jpeg_a8,
-#endif
-#ifndef MNG_NO_16BIT_SUPPORT
- png_g16,
- png_ga16,
- png_rgb16,
- png_rgba16,
-#ifdef MNG_INCLUDE_JNG
- png_jpeg_a16,
-#endif
-#endif
- png_none
- };
-
-typedef enum png_imgtypes png_imgtype;
-#endif
-/* ************************************************************************** */
-
- /* memory management callbacks */
-typedef mng_ptr (MNG_DECL *mng_memalloc) (mng_size_t iLen);
-typedef void (MNG_DECL *mng_memfree) (mng_ptr iPtr,
- mng_size_t iLen);
-
-typedef void (MNG_DECL *mng_releasedata) (mng_ptr pUserdata,
- mng_ptr pData,
- mng_size_t iLength);
-
- /* I/O management callbacks */
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
-typedef mng_bool (MNG_DECL *mng_openstream) (mng_handle hHandle);
-typedef mng_bool (MNG_DECL *mng_closestream) (mng_handle hHandle);
-#endif
-typedef mng_bool (MNG_DECL *mng_readdata) (mng_handle hHandle,
- mng_ptr pBuf,
- mng_uint32 iBuflen,
- mng_uint32p pRead);
-typedef mng_bool (MNG_DECL *mng_writedata) (mng_handle hHandle,
- mng_ptr pBuf,
- mng_uint32 iBuflen,
- mng_uint32p pWritten);
-
- /* error & trace processing callbacks */
-typedef mng_bool (MNG_DECL *mng_errorproc) (mng_handle hHandle,
- mng_int32 iErrorcode,
- mng_int8 iSeverity,
- mng_chunkid iChunkname,
- mng_uint32 iChunkseq,
- mng_int32 iExtra1,
- mng_int32 iExtra2,
- mng_pchar zErrortext);
-typedef mng_bool (MNG_DECL *mng_traceproc) (mng_handle hHandle,
- mng_int32 iFuncnr,
- mng_int32 iFuncseq,
- mng_pchar zFuncname);
-
- /* read processing callbacks */
-typedef mng_bool (MNG_DECL *mng_processheader) (mng_handle hHandle,
- mng_uint32 iWidth,
- mng_uint32 iHeight);
-typedef mng_bool (MNG_DECL *mng_processtext) (mng_handle hHandle,
- mng_uint8 iType,
- mng_pchar zKeyword,
- mng_pchar zText,
- mng_pchar zLanguage,
- mng_pchar zTranslation);
-typedef mng_bool (MNG_DECL *mng_processsave) (mng_handle hHandle);
-typedef mng_bool (MNG_DECL *mng_processseek) (mng_handle hHandle,
- mng_pchar zName);
-typedef mng_bool (MNG_DECL *mng_processneed) (mng_handle hHandle,
- mng_pchar zKeyword);
-typedef mng_bool (MNG_DECL *mng_processmend) (mng_handle hHandle,
- mng_uint32 iIterationsdone,
- mng_uint32 iIterationsleft);
-typedef mng_bool (MNG_DECL *mng_processunknown) (mng_handle hHandle,
- mng_chunkid iChunkid,
- mng_uint32 iRawlen,
- mng_ptr pRawdata);
-typedef mng_bool (MNG_DECL *mng_processterm) (mng_handle hHandle,
- mng_uint8 iTermaction,
- mng_uint8 iIteraction,
- mng_uint32 iDelay,
- mng_uint32 iItermax);
-
- /* display processing callbacks */
-typedef mng_ptr (MNG_DECL *mng_getcanvasline) (mng_handle hHandle,
- mng_uint32 iLinenr);
-typedef mng_ptr (MNG_DECL *mng_getbkgdline) (mng_handle hHandle,
- mng_uint32 iLinenr);
-typedef mng_ptr (MNG_DECL *mng_getalphaline) (mng_handle hHandle,
- mng_uint32 iLinenr);
-typedef mng_bool (MNG_DECL *mng_refresh) (mng_handle hHandle,
- mng_uint32 iX,
- mng_uint32 iY,
- mng_uint32 iWidth,
- mng_uint32 iHeight);
-
- /* timer management callbacks */
-typedef mng_uint32 (MNG_DECL *mng_gettickcount) (mng_handle hHandle);
-typedef mng_bool (MNG_DECL *mng_settimer) (mng_handle hHandle,
- mng_uint32 iMsecs);
-
- /* color management callbacks */
-typedef mng_bool (MNG_DECL *mng_processgamma) (mng_handle hHandle,
- mng_uint32 iGamma);
-typedef mng_bool (MNG_DECL *mng_processchroma) (mng_handle hHandle,
- mng_uint32 iWhitepointx,
- mng_uint32 iWhitepointy,
- mng_uint32 iRedx,
- mng_uint32 iRedy,
- mng_uint32 iGreenx,
- mng_uint32 iGreeny,
- mng_uint32 iBluex,
- mng_uint32 iBluey);
-typedef mng_bool (MNG_DECL *mng_processsrgb) (mng_handle hHandle,
- mng_uint8 iRenderingintent);
-typedef mng_bool (MNG_DECL *mng_processiccp) (mng_handle hHandle,
- mng_uint32 iProfilesize,
- mng_ptr pProfile);
-typedef mng_bool (MNG_DECL *mng_processarow) (mng_handle hHandle,
- mng_uint32 iRowsamples,
- mng_bool bIsRGBA16,
- mng_ptr pRow);
-
- /* chunk access callback(s) */
-typedef mng_bool (MNG_DECL *mng_iteratechunk) (mng_handle hHandle,
- mng_handle hChunk,
- mng_chunkid iChunkid,
- mng_uint32 iChunkseq);
-
-/* ************************************************************************** */
-
-#endif /* _libmng_types_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
diff --git a/src/3rdparty/libmng/libmng_write.c b/src/3rdparty/libmng/libmng_write.c
deleted file mode 100644
index 79ff544384..0000000000
--- a/src/3rdparty/libmng/libmng_write.c
+++ /dev/null
@@ -1,198 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_write.c copyright (c) 2000-2004 G.Juyn * */
-/* * version : 1.0.9 * */
-/* * * */
-/* * purpose : Write management (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of the write management routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/12/2000 - G.Juyn * */
-/* * - changed trace to macro for callback error-reporting * */
-/* * 0.5.1 - 05/16/2000 - G.Juyn * */
-/* * - moved the actual write_graphic functionality from * */
-/* * mng_hlapi to its appropriate function here * */
-/* * * */
-/* * 0.9.1 - 07/19/2000 - G.Juyn * */
-/* * - fixed writing of signature * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * * */
-/* * 1.0.8 - 07/06/2004 - G.R-P * */
-/* * - added conditionals around openstream/closestream * */
-/* * - defend against using undefined Open/Closestream function * */
-/* * 1.0.8 - 08/02/2004 - G.Juyn * */
-/* * - added conditional to allow easier writing of large MNG's * */
-/* * * */
-/* * 1.0.9 - 09/25/2004 - G.Juyn * */
-/* * - replaced MNG_TWEAK_LARGE_FILES with permanent solution * */
-/* * 1.0.9 - 12/20/2004 - G.Juyn * */
-/* * - cleaned up macro-invocations (thanks to D. Airlie) * */
-/* * * */
-/* ************************************************************************** */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-#include "libmng_memory.h"
-#include "libmng_chunks.h"
-#include "libmng_chunk_io.h"
-#include "libmng_write.h"
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-
-#if defined(MNG_SUPPORT_READ) || defined(MNG_SUPPORT_WRITE)
-mng_retcode mng_drop_chunks (mng_datap pData)
-{
- mng_chunkp pChunk;
- mng_chunkp pNext;
- mng_cleanupchunk fCleanup;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DROP_CHUNKS, MNG_LC_START);
-#endif
-
- pChunk = pData->pFirstchunk; /* and get first stored chunk (if any) */
-
- while (pChunk) /* more chunks to discard ? */
- {
- pNext = ((mng_chunk_headerp)pChunk)->pNext;
- /* call appropriate cleanup */
- fCleanup = ((mng_chunk_headerp)pChunk)->fCleanup;
- fCleanup (pData, pChunk);
-
- pChunk = pNext; /* neeeext */
- }
-
- pData->pFirstchunk = MNG_NULL;
- pData->pLastchunk = MNG_NULL;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_DROP_CHUNKS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_READ || MNG_SUPPORT_WRITE */
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_WRITE_PROCS
-
-/* ************************************************************************** */
-
-mng_retcode mng_write_graphic (mng_datap pData)
-{
- mng_chunkp pChunk;
- mng_retcode iRetcode;
- mng_uint32 iWritten;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_GRAPHIC, MNG_LC_START);
-#endif
-
- pChunk = pData->pFirstchunk; /* we'll start with the first, thank you */
-
- if (pChunk) /* is there anything to write ? */
- { /* open the file */
- if (!pData->bWriting)
- {
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
- if (pData->fOpenstream && !pData->fOpenstream ((mng_handle)pData))
- MNG_ERROR (pData, MNG_APPIOERROR);
-#endif
- {
- pData->bWriting = MNG_TRUE; /* indicate writing */
- pData->iWritebufsize = 32768; /* get a temporary write buffer */
- /* reserve 12 bytes for length, chunkname & crc */
- MNG_ALLOC (pData, pData->pWritebuf, pData->iWritebufsize+12);
-
- /* write the signature */
- if (((mng_chunk_headerp)pChunk)->iChunkname == MNG_UINT_IHDR)
- mng_put_uint32 (pData->pWritebuf, PNG_SIG);
- else
- if (((mng_chunk_headerp)pChunk)->iChunkname == MNG_UINT_JHDR)
- mng_put_uint32 (pData->pWritebuf, JNG_SIG);
- else
- mng_put_uint32 (pData->pWritebuf, MNG_SIG);
-
- mng_put_uint32 (pData->pWritebuf+4, POST_SIG);
-
- if (!pData->fWritedata ((mng_handle)pData, pData->pWritebuf, 8, &iWritten))
- {
- MNG_FREE (pData, pData->pWritebuf, pData->iWritebufsize+12);
- MNG_ERROR (pData, MNG_APPIOERROR);
- }
-
- if (iWritten != 8) /* disk full ? */
- {
- MNG_FREE (pData, pData->pWritebuf, pData->iWritebufsize+12);
- MNG_ERROR (pData, MNG_OUTPUTERROR);
- }
- }
- }
-
- while (pChunk) /* so long as there's something to write */
- { /* let's call its output routine */
- iRetcode = ((mng_chunk_headerp)pChunk)->fWrite (pData, pChunk);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- /* neeeext */
- pChunk = ((mng_chunk_headerp)pChunk)->pNext;
- }
-
- if (!pData->bCreating)
- { /* free the temporary buffer */
- MNG_FREE (pData, pData->pWritebuf, pData->iWritebufsize+12);
-
- pData->bWriting = MNG_FALSE; /* done writing */
- /* close the stream now */
-#ifndef MNG_NO_OPEN_CLOSE_STREAM
- if (pData->fClosestream && !pData->fClosestream ((mng_handle)pData))
- MNG_ERROR (pData, MNG_APPIOERROR);
-#endif
-
- } else {
- /* cleanup the written chunks */
- iRetcode = mng_drop_chunks (pData);
- if (iRetcode) /* on error bail out */
- return iRetcode;
- }
- }
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_WRITE_GRAPHIC, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_WRITE_PROCS */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
-
diff --git a/src/3rdparty/libmng/libmng_write.h b/src/3rdparty/libmng/libmng_write.h
deleted file mode 100644
index df058fb774..0000000000
--- a/src/3rdparty/libmng/libmng_write.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_write.h copyright (c) 2000-2004 G.Juyn * */
-/* * version : 1.0.9 * */
-/* * * */
-/* * purpose : Write management (definition) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : Definition of the write management routines * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * * */
-/* * 1.0.9 - 09/25/2004 - G.Juyn * */
-/* * - replaced MNG_TWEAK_LARGE_FILES with permanent solution * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_write_h_
-#define _libmng_write_h_
-
-/* ************************************************************************** */
-
-mng_retcode mng_drop_chunks (mng_datap pData);
-
-mng_retcode mng_write_graphic (mng_datap pData);
-
-/* ************************************************************************** */
-
-#endif /* _libmng_write_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/libmng_zlib.c b/src/3rdparty/libmng/libmng_zlib.c
deleted file mode 100644
index 7d102e160d..0000000000
--- a/src/3rdparty/libmng/libmng_zlib.c
+++ /dev/null
@@ -1,607 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_zlib.c copyright (c) 2000-2004 G.Juyn * */
-/* * version : 1.0.9 * */
-/* * * */
-/* * purpose : ZLIB library interface (implementation) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : implementation of the ZLIB library interface * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * 0.5.1 - 05/11/2000 - G.Juyn * */
-/* * - filled the deflatedata routine * */
-/* * 0.5.1 - 05/12/2000 - G.Juyn * */
-/* * - changed trace to macro for callback error-reporting * */
-/* * * */
-/* * 0.5.2 - 05/20/2000 - G.Juyn * */
-/* * - fixed for JNG alpha handling * */
-/* * 0.5.2 - 05/24/2000 - G.Juyn * */
-/* * - moved init of default zlib parms from here to * */
-/* * "mng_hlapi.c" * */
-/* * * */
-/* * 0.5.3 - 06/16/2000 - G.Juyn * */
-/* * - changed progressive-display processing * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* * 0.9.3 - 08/08/2000 - G.Juyn * */
-/* * - fixed compiler-warnings from Mozilla * */
-/* * 0.9.3 - 09/07/2000 - G.Juyn * */
-/* * - added support for new filter_types * */
-/* * * */
-/* * 1.0.5 - 08/07/2002 - G.Juyn * */
-/* * - added test-option for PNG filter method 193 (=no filter) * */
-/* * 1.0.5 - 08/19/2002 - G.Juyn * */
-/* * - B597134 - libmng pollutes the linker namespace * */
-/* * 1.0.5 - 09/19/2002 - G.Juyn * */
-/* * - added warning for too much IDAT data * */
-/* * * */
-/* * 1.0.6 - 07/07/2003 - G.R-P * */
-/* * - added MNG_NO_16BIT_SUPPORT support * */
-/* * * */
-/* * 1.0.9 - 10/09/2004 - G.R-P * */
-/* * - added MNG_NO_1_2_4BIT_SUPPORT support * */
-/* * * */
-/* ************************************************************************** */
-
-#include "libmng.h"
-#include "libmng_data.h"
-#include "libmng_error.h"
-#include "libmng_trace.h"
-#ifdef __BORLANDC__
-#pragma hdrstop
-#endif
-#include "libmng_memory.h"
-#include "libmng_pixels.h"
-#include "libmng_filter.h"
-#include "libmng_zlib.h"
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-/* ************************************************************************** */
-
-#ifdef MNG_INCLUDE_ZLIB
-
-/* ************************************************************************** */
-
-voidpf mngzlib_alloc (voidpf pData,
- uInt iCount,
- uInt iSize)
-{
- voidpf pPtr; /* temporary space */
-
-#ifdef MNG_INTERNAL_MEMMNGMT
- pPtr = calloc (iCount, iSize); /* local allocation */
-#else
- if (((mng_datap)pData)->fMemalloc) /* callback function set ? */
- pPtr = ((mng_datap)pData)->fMemalloc (iCount * iSize);
- else
- pPtr = Z_NULL; /* can't allocate! */
-#endif
-
- return pPtr; /* return the result */
-}
-
-/* ************************************************************************** */
-
-void mngzlib_free (voidpf pData,
- voidpf pAddress)
-{
-#ifdef MNG_INTERNAL_MEMMNGMT
- free (pAddress); /* free locally */
-#else
- if (((mng_datap)pData)->fMemfree) /* callback set? */
- ((mng_datap)pData)->fMemfree (pAddress, 1);
-#endif
-}
-
-/* ************************************************************************** */
-
-mng_retcode mngzlib_initialize (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_INITIALIZE, MNG_LC_START);
-#endif
-
-#ifdef MNG_INTERNAL_MEMMNGMT
- pData->sZlib.zalloc = Z_NULL; /* let zlib figure out memory management */
- pData->sZlib.zfree = Z_NULL;
- pData->sZlib.opaque = Z_NULL;
-#else /* use user-provided callbacks */
- pData->sZlib.zalloc = mngzlib_alloc;
- pData->sZlib.zfree = mngzlib_free;
- pData->sZlib.opaque = (voidpf)pData;
-#endif
-
- pData->bInflating = MNG_FALSE; /* not performing any action yet */
- pData->bDeflating = MNG_FALSE;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_INITIALIZE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-
-/* ************************************************************************** */
-
-mng_retcode mngzlib_cleanup (mng_datap pData)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_CLEANUP, MNG_LC_START);
-#endif
-
- if (pData->bInflating) /* force zlib cleanup */
- mngzlib_inflatefree (pData);
- if (pData->bDeflating)
- mngzlib_deflatefree (pData);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_CLEANUP, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-
-/* ************************************************************************** */
-
-mng_retcode mngzlib_inflateinit (mng_datap pData)
-{
- int iZrslt;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_INFLATEINIT, MNG_LC_START);
-#endif
- /* initialize zlib structures and such */
- iZrslt = inflateInit (&pData->sZlib);
-
- if (iZrslt != Z_OK) /* on error bail out */
- MNG_ERRORZ (pData, (mng_uint32)iZrslt);
-
- pData->bInflating = MNG_TRUE; /* really inflating something now */
- pData->sZlib.next_out = 0; /* force JIT initialization */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_INFLATEINIT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-
-/* ************************************************************************** */
-
-#ifdef MNG_SUPPORT_DISPLAY
-mng_retcode mngzlib_inflaterows (mng_datap pData,
- mng_uint32 iInlen,
- mng_uint8p pIndata)
-{
- int iZrslt;
- mng_retcode iRslt;
- mng_ptr pSwap;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_INFLATEROWS, MNG_LC_START);
-#endif
-
- pData->sZlib.next_in = pIndata; /* let zlib know where to get stuff */
- pData->sZlib.avail_in = (uInt)iInlen;
-
- if (pData->sZlib.next_out == 0) /* initialize output variables ? */
- { /* let zlib know where to store stuff */
- pData->sZlib.next_out = pData->pWorkrow;
- pData->sZlib.avail_out = (uInt)(pData->iRowsize + pData->iPixelofs);
-#ifdef MNG_NO_1_2_4BIT_SUPPORT
- if (pData->iPNGdepth < 8)
- pData->sZlib.avail_out = (uInt)((pData->iPNGdepth*pData->iRowsize + 7)/8
- + pData->iPixelofs);
-#endif
-#ifdef MNG_NO_16BIT_SUPPORT
- if (pData->iPNGdepth > 8)
- pData->sZlib.avail_out = (uInt)(2*pData->iRowsize + pData->iPixelofs);
-#endif
- }
-
- do
- { /* now inflate a row */
- iZrslt = inflate (&pData->sZlib, Z_SYNC_FLUSH);
- /* produced a full row ? */
- if (((iZrslt == Z_OK) || (iZrslt == Z_STREAM_END)) &&
- (pData->sZlib.avail_out == 0))
- { /* image not completed yet ? */
- if (pData->iRow < (mng_int32)pData->iDataheight)
- {
-#ifdef MNG_NO_1_2_4BIT_SUPPORT
- if (pData->iPNGdepth == 1)
- {
- /* Inflate Workrow to 8-bit */
- mng_int32 iX;
- mng_uint8p pSrc = pData->pWorkrow+1;
- mng_uint8p pDest = pSrc + pData->iRowsize - (pData->iRowsize+7)/8;
-
- for (iX = ((pData->iRowsize+7)/8) ; iX > 0 ; iX--)
- *pDest++ = *pSrc++;
-
- pDest = pData->pWorkrow+1;
- pSrc = pDest + pData->iRowsize - (pData->iRowsize+7)/8;
- for (iX = pData->iRowsize; ;)
- {
- *pDest++ = (((*pSrc)>>7)&1);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc)>>6)&1);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc)>>5)&1);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc)>>4)&1);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc)>>3)&1);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc)>>2)&1);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc)>>1)&1);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc) )&1);
- if (iX-- <= 0)
- break;
- pSrc++;
- }
- }
- else if (pData->iPNGdepth == 2)
- {
- /* Inflate Workrow to 8-bit */
- mng_int32 iX;
- mng_uint8p pSrc = pData->pWorkrow+1;
- mng_uint8p pDest = pSrc + pData->iRowsize - (2*pData->iRowsize+7)/8;
-
- for (iX = ((2*pData->iRowsize+7)/8) ; iX > 0 ; iX--)
- *pDest++ = *pSrc++;
-
- pDest = pData->pWorkrow+1;
- pSrc = pDest + pData->iRowsize - (2*pData->iRowsize+7)/8;
- for (iX = pData->iRowsize; ;)
- {
- *pDest++ = (((*pSrc)>>6)&3);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc)>>4)&3);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc)>>2)&3);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc) )&3);
- if (iX-- <= 0)
- break;
- pSrc++;
- }
- }
- else if (pData->iPNGdepth == 4)
- {
- /* Inflate Workrow to 8-bit */
- mng_int32 iX;
- mng_uint8p pSrc = pData->pWorkrow+1;
- mng_uint8p pDest = pSrc + pData->iRowsize - (4*pData->iRowsize+7)/8;
-
- for (iX = ((4*pData->iRowsize+7)/8) ; iX > 0 ; iX--)
- *pDest++ = *pSrc++;
-
- pDest = pData->pWorkrow+1;
- pSrc = pDest + pData->iRowsize - (4*pData->iRowsize+7)/8;
- for (iX = pData->iRowsize; ;)
- {
- *pDest++ = (((*pSrc)>>4)&0x0f);
- if (iX-- <= 0)
- break;
- *pDest++ = (((*pSrc) )&0x0f);
- if (iX-- <= 0)
- break;
- pSrc++;
- }
- }
- if (pData->iPNGdepth < 8 && pData->iColortype == 0)
- {
- /* Expand samples to 8-bit by LBR */
- mng_int32 iX;
- mng_uint8p pSrc = pData->pWorkrow+1;
- mng_uint8 multiplier[]={0,255,85,0,17,0,0,0,1};
-
- for (iX = pData->iRowsize; iX > 0; iX--)
- *pSrc++ *= multiplier[pData->iPNGdepth];
- }
-#endif
-#ifdef MNG_NO_16BIT_SUPPORT
- if (pData->iPNGdepth > 8)
- {
- /* Reduce Workrow to 8-bit */
- mng_int32 iX;
- mng_uint8p pSrc = pData->pWorkrow+1;
- mng_uint8p pDest = pSrc;
-
- for (iX = pData->iRowsize; iX > 0; iX--)
- {
- *pDest = *pSrc;
- pDest++;
- pSrc+=2;
- }
- }
-#endif
-
-#ifdef FILTER192 /* has leveling info ? */
- if (pData->iFilterofs == MNG_FILTER_DIFFERING)
- iRslt = init_rowdiffering (pData);
- else
-#endif
- iRslt = MNG_NOERROR;
- /* filter the row if necessary */
- if ((!iRslt) && (pData->iFilterofs < pData->iPixelofs ) &&
- (*(pData->pWorkrow + pData->iFilterofs)) )
- iRslt = mng_filter_a_row (pData);
- else
- iRslt = MNG_NOERROR;
- /* additional leveling/differing ? */
- if ((!iRslt) && (pData->fDifferrow))
- {
- iRslt = ((mng_differrow)pData->fDifferrow) (pData);
-
- pSwap = pData->pWorkrow;
- pData->pWorkrow = pData->pPrevrow;
- pData->pPrevrow = pSwap; /* make sure we're processing the right data */
- }
-
- if (!iRslt)
- {
-#ifdef MNG_INCLUDE_JNG
- if (pData->bHasJHDR) /* is JNG alpha-channel ? */
- { /* just store in object ? */
- if ((!iRslt) && (pData->fStorerow))
- iRslt = ((mng_storerow)pData->fStorerow) (pData);
- }
- else
-#endif /* MNG_INCLUDE_JNG */
- { /* process this row */
- if ((!iRslt) && (pData->fProcessrow))
- iRslt = ((mng_processrow)pData->fProcessrow) (pData);
- /* store in object ? */
- if ((!iRslt) && (pData->fStorerow))
- iRslt = ((mng_storerow)pData->fStorerow) (pData);
- /* color correction ? */
- if ((!iRslt) && (pData->fCorrectrow))
- iRslt = ((mng_correctrow)pData->fCorrectrow) (pData);
- /* slap onto canvas ? */
- if ((!iRslt) && (pData->fDisplayrow))
- {
- iRslt = ((mng_displayrow)pData->fDisplayrow) (pData);
-
- if (!iRslt) /* check progressive display refresh */
- iRslt = mng_display_progressive_check (pData);
-
- }
- }
- }
-
- if (iRslt) /* on error bail out */
- MNG_ERROR (pData, iRslt);
-
- if (!pData->fDifferrow) /* swap row-pointers */
- {
- pSwap = pData->pWorkrow;
- pData->pWorkrow = pData->pPrevrow;
- pData->pPrevrow = pSwap; /* so prev points to the processed row! */
- }
-
- iRslt = mng_next_row (pData); /* adjust variables for next row */
-
- if (iRslt) /* on error bail out */
- MNG_ERROR (pData, iRslt);
- }
- /* let zlib know where to store next output */
- pData->sZlib.next_out = pData->pWorkrow;
- pData->sZlib.avail_out = (uInt)(pData->iRowsize + pData->iPixelofs);
-#ifdef MNG_NO_1_2_4BIT_SUPPORT
- if (pData->iPNGdepth < 8)
- pData->sZlib.avail_out = (uInt)((pData->iPNGdepth*pData->iRowsize + 7)/8
- + pData->iPixelofs);
-#endif
-#ifdef MNG_NO_16BIT_SUPPORT
- if (pData->iPNGdepth > 8)
- pData->sZlib.avail_out = (uInt)(2*pData->iRowsize + pData->iPixelofs);
-#endif
- }
- } /* until some error or EOI
- or all pixels received */
- while ( (iZrslt == Z_OK) && (pData->sZlib.avail_in > 0) &&
- ( (pData->iRow < (mng_int32)pData->iDataheight) ||
- ( (pData->iPass >= 0) && (pData->iPass < 7) ) ) );
- /* on error bail out */
- if ((iZrslt != Z_OK) && (iZrslt != Z_STREAM_END))
- MNG_ERRORZ (pData, (mng_uint32)iZrslt);
- /* too much data ? */
- if ((iZrslt == Z_OK) && (pData->sZlib.avail_in > 0))
- MNG_WARNING (pData, MNG_TOOMUCHIDAT);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_INFLATEROWS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-#endif /* MNG_SUPPORT_DISPLAY */
-
-/* ************************************************************************** */
-
-mng_retcode mngzlib_inflatedata (mng_datap pData,
- mng_uint32 iInlen,
- mng_uint8p pIndata)
-{
- int iZrslt;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_INFLATEDATA, MNG_LC_START);
-#endif
- /* let zlib know where to get stuff */
- pData->sZlib.next_in = pIndata;
- pData->sZlib.avail_in = (uInt)iInlen;
- /* now inflate the data in one go! */
- iZrslt = inflate (&pData->sZlib, Z_FINISH);
- /* not enough room in output-buffer ? */
- if ((iZrslt == Z_BUF_ERROR) || (pData->sZlib.avail_in > 0))
- return MNG_BUFOVERFLOW;
- /* on error bail out */
- if ((iZrslt != Z_OK) && (iZrslt != Z_STREAM_END))
- MNG_ERRORZ (pData, (mng_uint32)iZrslt);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_INFLATEDATA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mngzlib_inflatefree (mng_datap pData)
-{
- int iZrslt;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_INFLATEFREE, MNG_LC_START);
-#endif
-
- pData->bInflating = MNG_FALSE; /* stopped it */
-
- iZrslt = inflateEnd (&pData->sZlib); /* let zlib cleanup its own stuff */
-
- if (iZrslt != Z_OK) /* on error bail out */
- MNG_ERRORZ (pData, (mng_uint32)iZrslt);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_INFLATEFREE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-
-/* ************************************************************************** */
-
-mng_retcode mngzlib_deflateinit (mng_datap pData)
-{
- int iZrslt;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_DEFLATEINIT, MNG_LC_START);
-#endif
- /* initialize zlib structures and such */
- iZrslt = deflateInit2 (&pData->sZlib, pData->iZlevel, pData->iZmethod,
- pData->iZwindowbits, pData->iZmemlevel,
- pData->iZstrategy);
-
- if (iZrslt != Z_OK) /* on error bail out */
- MNG_ERRORZ (pData, (mng_uint32)iZrslt);
-
- pData->bDeflating = MNG_TRUE; /* really deflating something now */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_DEFLATEINIT, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-
-/* ************************************************************************** */
-
-mng_retcode mngzlib_deflaterows (mng_datap pData,
- mng_uint32 iInlen,
- mng_uint8p pIndata)
-{
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_DEFLATEROWS, MNG_LC_START);
-#endif
-
-
-
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_DEFLATEROWS, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mngzlib_deflatedata (mng_datap pData,
- mng_uint32 iInlen,
- mng_uint8p pIndata)
-{
- int iZrslt;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_DEFLATEDATA, MNG_LC_START);
-#endif
-
- pData->sZlib.next_in = pIndata; /* let zlib know where to get stuff */
- pData->sZlib.avail_in = (uInt)iInlen;
- /* now deflate the data in one go! */
- iZrslt = deflate (&pData->sZlib, Z_FINISH);
- /* not enough room in output-buffer ? */
- if ((iZrslt == Z_BUF_ERROR) || (pData->sZlib.avail_in > 0))
- return MNG_BUFOVERFLOW;
- /* on error bail out */
- if ((iZrslt != Z_OK) && (iZrslt != Z_STREAM_END))
- MNG_ERRORZ (pData, (mng_uint32)iZrslt);
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_DEFLATEDATA, MNG_LC_END);
-#endif
-
- return MNG_NOERROR;
-}
-
-/* ************************************************************************** */
-
-mng_retcode mngzlib_deflatefree (mng_datap pData)
-{
- int iZrslt;
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_DEFLATEFREE, MNG_LC_START);
-#endif
-
- iZrslt = deflateEnd (&pData->sZlib); /* let zlib cleanup its own stuff */
-
- if (iZrslt != Z_OK) /* on error bail out */
- MNG_ERRORZ (pData, (mng_uint32)iZrslt);
-
- pData->bDeflating = MNG_FALSE; /* stopped it */
-
-#ifdef MNG_SUPPORT_TRACE
- MNG_TRACE (pData, MNG_FN_ZLIB_DEFLATEFREE, MNG_LC_END);
-#endif
-
- return MNG_NOERROR; /* done */
-}
-
-/* ************************************************************************** */
-
-#endif /* MNG_INCLUDE_ZLIB */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
-
diff --git a/src/3rdparty/libmng/libmng_zlib.h b/src/3rdparty/libmng/libmng_zlib.h
deleted file mode 100644
index cfc3918234..0000000000
--- a/src/3rdparty/libmng/libmng_zlib.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/* ************************************************************************** */
-/* * For conditions of distribution and use, * */
-/* * see copyright notice in libmng.h * */
-/* ************************************************************************** */
-/* * * */
-/* * project : libmng * */
-/* * file : libmng_zlib.h copyright (c) 2000-2002 G.Juyn * */
-/* * version : 1.0.0 * */
-/* * * */
-/* * purpose : ZLIB package interface (definition) * */
-/* * * */
-/* * author : G.Juyn * */
-/* * * */
-/* * comment : Definition of the ZLIB package interface * */
-/* * * */
-/* * changes : 0.5.1 - 05/08/2000 - G.Juyn * */
-/* * - changed strict-ANSI stuff * */
-/* * * */
-/* * 0.9.2 - 08/05/2000 - G.Juyn * */
-/* * - changed file-prefixes * */
-/* * * */
-/* ************************************************************************** */
-
-#if defined(__BORLANDC__) && defined(MNG_STRICT_ANSI)
-#pragma option -A /* force ANSI-C */
-#endif
-
-#ifndef _libmng_zlib_h_
-#define _libmng_zlib_h_
-
-/* ************************************************************************** */
-
-mng_retcode mngzlib_initialize (mng_datap pData);
-mng_retcode mngzlib_cleanup (mng_datap pData);
-
-mng_retcode mngzlib_inflateinit (mng_datap pData);
-mng_retcode mngzlib_inflaterows (mng_datap pData,
- mng_uint32 iInlen,
- mng_uint8p pIndata);
-mng_retcode mngzlib_inflatedata (mng_datap pData,
- mng_uint32 iInlen,
- mng_uint8p pIndata);
-mng_retcode mngzlib_inflatefree (mng_datap pData);
-
-mng_retcode mngzlib_deflateinit (mng_datap pData);
-mng_retcode mngzlib_deflaterows (mng_datap pData,
- mng_uint32 iInlen,
- mng_uint8p pIndata);
-mng_retcode mngzlib_deflatedata (mng_datap pData,
- mng_uint32 iInlen,
- mng_uint8p pIndata);
-mng_retcode mngzlib_deflatefree (mng_datap pData);
-
-/* ************************************************************************** */
-
-#endif /* _libmng_zlib_h_ */
-
-/* ************************************************************************** */
-/* * end of file * */
-/* ************************************************************************** */
diff --git a/src/3rdparty/libmng/makefiles/Makefile.am b/src/3rdparty/libmng/makefiles/Makefile.am
deleted file mode 100644
index b53523e9aa..0000000000
--- a/src/3rdparty/libmng/makefiles/Makefile.am
+++ /dev/null
@@ -1,29 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-AUTOMAKE_OPTIONS = 1.3 foreign no-dependencies
-
-# include the app subdirectories in the distribution
-EXTRA_DIST = makefiles doc contrib
-
-
-# libmng release @VERSION@
-libmng_la_LDFLAGS = -version-info 1:0:0
-
-lib_LTLIBRARIES = libmng.la
-
-include_HEADERS = libmng.h libmng_conf.h libmng_types.h
-noinst_HEADERS = libmng_chunk_io.h libmng_chunk_prc.h libmng_chunks.h \
- libmng_cms.h libmng_data.h libmng_display.h libmng_dither.h \
- libmng_error.h libmng_filter.h libmng_jpeg.h libmng_memory.h \
- libmng_object_prc.h libmng_objects.h libmng_pixels.h \
- libmng_read.h libmng_trace.h libmng_write.h libmng_zlib.h
-
-libmng_la_SOURCES = libmng_callback_xs.c libmng_chunk_io.c \
- libmng_chunk_prc.c libmng_chunk_xs.c libmng_cms.c \
- libmng_display.c libmng_dither.c libmng_error.c \
- libmng_filter.c libmng_hlapi.c libmng_jpeg.c \
- libmng_object_prc.c libmng_pixels.c libmng_prop_xs.c \
- libmng_read.c libmng_trace.c libmng_write.c libmng_zlib.c
-
-man_MANS = doc/man/libmng.3 doc/man/jng.5 doc/man/mng.5
-
diff --git a/src/3rdparty/libmng/makefiles/README b/src/3rdparty/libmng/makefiles/README
deleted file mode 100644
index 63faaafb0c..0000000000
--- a/src/3rdparty/libmng/makefiles/README
+++ /dev/null
@@ -1,27 +0,0 @@
-For conditions of distribution and use, see copyright notice in libmng.h
-or the file LICENSE in the top-level directory of the source distribution.
-
-This directory hosts the makefiles for a number of supported platforms.
-
-If you're using a system with POSIX shell capabilities, you can use the
-'configure' script in the top-level directory, or generate it by running
-'autogen.sh' if you have the necessary tools installed.
-
-Otherwise, copy the module for your environment (or the closest thing)
-into the libmng source-directory and change it to your needs. If you
-create a new file for a platform not on the list send it to me (gerard @
-libmng.com) and I'll be happy to include it in the next release!
-
-
-Current files:
-
-makefile.bcb3 - Borland C++ Builder
-makefile.vcwin32 - Microsoft Visual C++
-makefile.unix - generic Unix
-makefile.linux - Linux ELF (builds shared library)
-makefile.dj - DJGPP
-makefile.mingw - builds a static library for mingw32
-makefile.mingwdll - builds a dynamic library for mingw32
-makefile.irix - builds a static library for SGI/IRIX (6.5.21)
-
-Makefile.am, configure.in and acinclude.m4 (if present) - automake/autoconf source
diff --git a/src/3rdparty/libmng/makefiles/configure.in b/src/3rdparty/libmng/makefiles/configure.in
deleted file mode 100644
index e7cb75c006..0000000000
--- a/src/3rdparty/libmng/makefiles/configure.in
+++ /dev/null
@@ -1,193 +0,0 @@
-dnl Process this file with autoconf to produce a configure script.
-
-AC_INIT
-AC_CONFIG_SRCDIR([libmng.h])
-AC_PREREQ(2.52)
-
-dnl this call will define PACKAGE and VERSION
-dnl please use this as the primary reference for the version number
-AM_INIT_AUTOMAKE(libmng, 1.0.9)
-
-dnl pass the version string on the the makefiles
-AC_SUBST(PACKAGE)
-AC_SUBST(VERSION)
-
-dnl Checks for programs.
-AC_PROG_CC
-AC_ISC_POSIX
-AM_C_PROTOTYPES
-if test "x$U" != "x"; then
- AC_MSG_ERROR(Compiler not ANSI compliant)
-fi
-AM_PROG_LIBTOOL
-AC_PROG_INSTALL
-
-dnl support for files >2GB
-AC_SYS_LARGEFILE
-
-dnl Check for required header files
-AC_HEADER_STDC
-
-dnl Checks for typedefs, structures, and compiler characteristics.
-AC_C_CONST
-
-dnl need pow and fabs
-AC_CHECK_FUNC(pow, , AC_CHECK_LIB(m, pow, LIBS="$LIBS -lm"))
-
-
-dnl what functionality we want to add (read, write, display).
-dnl all on by default. see libmng_conf.h for full descriptions
-
-dnl not building a standard shared object?
-AC_ARG_ENABLE(buildso,
-[ --disable-buildso disable building standard shared object])
-if test "x$enable_buildso" != "xno"; then
- AC_DEFINE(MNG_BUILD_SO)
-fi
-
-dnl we only support the full mng spec for now (no LC or VLC)
-AC_DEFINE(MNG_SUPPORT_FULL)
-
-dnl remove support in library to read images?
-AC_ARG_ENABLE(read,
-[ --disable-read remove read support from library])
-if test "x$enable_read" != "xno"; then
- AC_DEFINE(MNG_SUPPORT_READ)
-fi
-
-dnl remove support in library to write images?
-AC_ARG_ENABLE(write,
-[ --disable-write remove write support from library])
-if test "x$enable_write" != "xno"; then
- AC_DEFINE(MNG_SUPPORT_WRITE)
-fi
-
-dnl remove support in library to display images?
-AC_ARG_ENABLE(display,
-[ --disable-display remove display support from library])
-if test "x$enable_display" != "xno"; then
- AC_DEFINE(MNG_SUPPORT_DISPLAY)
-fi
-
-dnl remove support for 'dynamic' MNG?
-AC_ARG_ENABLE(dynamic,
-[ --disable-dynamic remove dynamic MNG support from library])
-if test "x$enable_dynamic" != "xno"; then
- AC_DEFINE(MNG_SUPPORT_DYNAMICMNG)
-fi
-
-dnl remove support in library to access chunks?
-AC_ARG_ENABLE(chunks,
-[ --disable-chunks remove support for chunk access])
-if test "x$enable_chunks" != "xno"; then
- AC_DEFINE(MNG_ACCESS_CHUNKS)
-fi
-
-dnl disable support for accessing chunks that have been previously read?
-AC_ARG_ENABLE(storechunks,
-[ --disable-storechunks remove support for access of previous chunks])
-if test "x$enable_storechunks" != "xno"; then
- AC_DEFINE(MNG_STORE_CHUNKS)
-fi
-
-dnl enable support for debug tracing callbacks and messages?
-AC_ARG_ENABLE(trace,
-[ --enable-trace include support for debug tracing callbacks],[
-if test "x$enable_trace" = "xyes"; then
- AC_DEFINE(MNG_SUPPORT_TRACE)
- AC_DEFINE(MNG_TRACE_TELLTALE)
-fi
-])
-
-dnl verbose error text
-dnl this should always be on
-AC_DEFINE(MNG_ERROR_TELLTALE)
-
-
-dnl libz is required.
-AC_ARG_WITH(zlib,
-[ --with-zlib[=DIR] use zlib include/library files in DIR],[
- if test -d "$withval"; then
- CPPFLAGS="$CPPFLAGS -I$withval/include"
- LDFLAGS="$LDFLAGS -L$withval/lib"
- fi
-])
-AC_CHECK_HEADER(zlib.h,
- AC_CHECK_LIB(z, gzread, , AC_MSG_ERROR(zlib library not found)),
- AC_MSG_ERROR(zlib header not found)
-)
-
-dnl check for jpeg library
-AC_ARG_WITH(jpeg,
-[ --with-jpeg[=DIR] use jpeg include/library files in DIR],
-[with_jpeg=$withval],[with_jpeg=_auto])
-
- if test "x$with_jpeg" != "xno" -a "x$with_jpeg" != "xyes" -a \
- "x$with_jpeg" != "x_auto"; then
- # Save in case test with directory specified fails
- _cppflags=${CPPFLAGS}
- _ldflags=${LDFLAGS}
- _restore=1
-
- CPPFLAGS="${CPPFLAGS} -I$withval/include"
- LDFLAGS="${LDFLAGS} -L$withval/lib"
- else
- _restore=0
- fi
-
- if test "x$with_jpeg" != "xno"; then
- AC_CHECK_HEADER(jpeglib.h,
- AC_CHECK_LIB(jpeg, jpeg_read_header, [
- LIBS="$LIBS -ljpeg"
- AC_DEFINE(HAVE_LIBJPEG)
- _restore=0
- ],
- AC_MSG_WARN(jpeg library not found)),
- AC_MSG_WARN(jpeg header not found)
- )
- fi
-
- test $_restore -eq 1 && CPPFLAGS=$_cppflags LDFLAGS=$_ldflags
-
-dnl check for lcms library
-AC_ARG_WITH(lcms,
-[ --with-lcms[=DIR] use lcms include/library files in DIR],
-[with_lcms=$withval],[with_lcms=_auto])
-
- if test "x$with_lcms" != "xno" -a "x$with_lcms" != "xyes" -a \
- "x$with_lcms" != "x_auto"; then
- # Save in case test with directory specified fails
- _cppflags=$CPPFLAGS
- _ldflags=$LDFLAGS
- _restore=1
-
- CPPFLAGS="$CPPFLAGS -I$withval/include"
- LDFLAGS="$LDFLAGS -L$withval/lib"
- else
- _restore=0
- fi
-
- if test "x$with_lcms" != "xno"; then
- AC_CHECK_HEADER(lcms.h, [
- have_lcms=yes
- AC_CHECK_LIB(lcms, cmsCreateRGBProfile, [
- LIBS="$LIBS -llcms"
- AC_DEFINE(HAVE_LIBLCMS)
- dnl for now this implies MNG_INCLUDE_LCMS in the headers:
- AC_DEFINE(MNG_FULL_CMS)
- _restore=0
- have_lcms=yes
- ],[
- have_lcms=no
- ])
- ])
- dnl give feedback only if the user asked specifically for lcms
- if test "x$with_lcms" != "x_auto" -a "x$have_lcms" != "xyes"; then
- AC_MSG_WARN([lcms not found... disabling CMS support])
- fi
- fi
-
- test $_restore -eq 1 && CPPFLAGS=$_cppflags LDFLAGS=$_ldflags
-
-AC_CONFIG_FILES([Makefile])
-AC_OUTPUT
diff --git a/src/3rdparty/libmng/makefiles/makefile.bcb3 b/src/3rdparty/libmng/makefiles/makefile.bcb3
deleted file mode 100644
index 3ddcb2d139..0000000000
--- a/src/3rdparty/libmng/makefiles/makefile.bcb3
+++ /dev/null
@@ -1,108 +0,0 @@
-#
-# For conditions of distribution and use, see copyright notice in libmng.h
-#
-# makefile for libmng - THE MNG library
-# this makefile is suitable for Borland C++ Builder.
-# it works (at least) with Borland C++ Builder v3
-
-# Configuration options are now in mng_conf.h
-# this option forces dll compatibility
-MNGOPT = -DMNG_BUILD_DLL
-
-# The name of your C compiler:
-CC= bcc32
-
-# compiler options:
-CFLAGS= -WD -O2 -Hc -w-par -k -y -v -vi -c -tWD \
- -wuse -wucp -wstv -wstu -wsig -wpin -wnod -wnak -wdef -wcln -wbbf -wasm -wamp \
- -wamb -Tkh30000 -ff -5 -I.;..\zlib;..\jpgsrc6b;..\lcms\include $(MNGOPT)
-
-# source files
-SOURCES= libmng_hlapi.c libmng_callback_xs.c libmng_prop_xs.c libmng_chunk_xs.c \
- libmng_chunk_descr.c libmng_read.c libmng_write.c libmng_display.c \
- libmng_object_prc.c libmng_chunk_prc.c libmng_chunk_io.c libmng_error.c \
- libmng_trace.c libmng_pixels.c libmng_filter.c libmng_dither.c \
- libmng_zlib.c libmng_jpeg.c libmng_cms.c
-
-# object files
-OBJECTS= libmng_hlapi.obj libmng_callback_xs.obj libmng_prop_xs.obj libmng_chunk_xs.obj \
- libmng_chunk_descr.obj libmng_read.obj libmng_write.obj libmng_display.obj \
- libmng_object_prc.obj libmng_chunk_prc.obj libmng_chunk_io.obj libmng_error.obj \
- libmng_trace.obj libmng_pixels.obj libmng_filter.obj libmng_dither.obj \
- libmng_zlib.obj libmng_jpeg.obj libmng_cms.obj
-
-# type dependancies
-.c.obj:
- $(CC) $(CFLAGS) -c{ $<}
-
-# make options
-all: libmng.lib
-
-clean:
- - del *.obj
- - del libmng.lib
-
-# file dependancies
-libmng.lib: $(OBJECTS)
- - del libmng.lib
- tlib libmng.lib /E /C @&&|
-+libmng_hlapi.obj +libmng_callback_xs.obj +libmng_prop_xs.obj +libmng_chunk_xs.obj &
-+libmng_read.obj +libmng_write.obj +libmng_display.obj &
-+libmng_object_prc.obj +libmng_chunk_prc.obj +libmng_chunk_io.obj +libmng_error.obj &
-+libmng_trace.obj +libmng_pixels.obj +libmng_filter.obj +libmng_dither.obj &
-+libmng_zlib.obj +libmng_jpeg.obj +libmng_cms.obj
-|
-
-libmng_hlapi.obj: libmng_hlapi.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_object_prc.h \
- libmng_chunks.h libmng_memory.h libmng_error.h libmng_trace.h libmng_read.h \
- libmng_write.h libmng_display.h libmng_zlib.h libmng_cms.h libmng_zlib.h
-libmng_callback_xs.obj: libmng_callback_xs.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h
-libmng_prop_xs.obj: libmng_prop_xs.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_cms.h
-libmng_chunk_xs.obj: libmng_chunk_xs.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_chunks.h libmng_chunk_prc.h libmng_error.h libmng_trace.h
-libmng_read.obj: libmng_read.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_object_prc.h \
- libmng_chunks.h libmng_chunk_prc.h libmng_chunk_io.h libmng_memory.h \
- libmng_error.h libmng_trace.h libmng_read.h libmng_display.h
-libmng_write.obj: libmng_write.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_write.h
-libmng_display.obj: libmng_display.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_object_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h libmng_zlib.h libmng_cms.h \
- libmng_pixels.h libmng_display.h
-libmng_object_prc.obj: libmng_object_prc.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_object_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h libmng_display.h libmng_pixels.h
-libmng_chunk_descr.obj: libmng_chunk_descr.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_chunks.h libmng_chunk_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h
-libmng_chunk_prc.obj: libmng_chunk_prc.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_chunks.h libmng_chunk_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h
-libmng_chunk_io.obj: libmng_chunk_io.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_object_prc.h libmng_chunks.h \
- libmng_chunk_io.h libmng_chunk_prc libmng_memory.h libmng_error.h \
- libmng_trace.h libmng_display.h libmng_zlib.h libmng_pixels.h
-libmng_error.obj: libmng_error.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h
-libmng_trace.obj: libmng_trace.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h
-libmng_pixels.obj: libmng_pixels.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_memory.h libmng_error.h libmng_trace.h \
- libmng_cms.h libmng_filter.h libmng_pixels.h
-libmng_filter.obj: libmng_filter.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_filter.h
-libmng_dither.obj: libmng_dither.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_dither.h
-libmng_zlib.obj: libmng_zlib.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_memory.h libmng_error.h libmng_trace.h libmng_pixels.h \
- libmng_filter.h libmng_zlib.h
-libmng_jpeg.obj: libmng_jpeg.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_memory.h libmng_error.h libmng_trace.h \
- libmng_pixels.h libmng_jpeg.h
-libmng_cms.obj: libmng_cms.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_error.h libmng_trace.h libmng_cms.h
-
diff --git a/src/3rdparty/libmng/makefiles/makefile.dj b/src/3rdparty/libmng/makefiles/makefile.dj
deleted file mode 100644
index 2cef088817..0000000000
--- a/src/3rdparty/libmng/makefiles/makefile.dj
+++ /dev/null
@@ -1,155 +0,0 @@
-#
-# For conditions of distribution and use, see copyright notice in libmng.h
-#
-# makefile for libmng - THE MNG library
-# This makefile have been tested on DJGPP v2
-# (Based on makefile.linux since both are GNU compilers)
-#
-# By Silvio Fonseca - gissi@sti.com.br
-
-#compiler
-CC=gcc
-
-#default build options
-OPTIONS=
-
-#DJGPP directory
-prefix=C:/DJGPP
-installprefix=C:\DJGPP
-
-#ZLIB Library and includes
-ZLIBLIB=$(prefix)/lib
-#ZLIBLIB=../zlib
-ZLIBINC=$(prefix)/include
-#ZLIBINC=../zlib
-
-#Jpeg library and includes
-JPEGLIB=$(prefix)/lib
-#JPEGLIB=../jpgsrc
-JPEGINC=$(prefix)/include
-#JPEGINC=../jpgsrc
-
-#Lcms library and includes
-LCMSLIB=$(prefix)/lib
-#LCMSLIB=../lcms
-LCMSINC=$(prefix)/include
-#LCMSINC=../lcms
-
-ALIGN=
-# for i386:
-#ALIGN=-malign-loops=2 -malign-functions=2
-
-WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \
- -Wmissing-declarations -Wtraditional -Wcast-align \
- -Wstrict-prototypes -Wmissing-prototypes #-Wconversion
-
-CFLAGS=-I$(ZLIBINC) -I$(JPEGINC) -I$(LCMSINC) -Wall -O3 -funroll-loops \
- $(OPTIONS) $(ALIGN) # $(WARNMORE) -g
-LDFLAGS=-L. -Wl,-rpath,. \
- -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) \
- -L$(JPEGLIB) -Wl,-rpath,$(JPEGLIB) \
- -L$(LCMSLIB) -Wl,-rpath,$(LCMSLIB) \
- -lmng -lz -ljpeg -llcms -lm
-INCPATH=$(prefix)/include
-LIBPATH=$(prefix)/lib
-
-OBJS = \
- libmng_callback_xs.o \
- libmng_chunk_io.o \
- libmng_chunk_descr.o \
- libmng_chunk_prc.o \
- libmng_chunk_xs.o \
- libmng_cms.o \
- libmng_display.o \
- libmng_dither.o \
- libmng_error.o \
- libmng_filter.o \
- libmng_hlapi.o \
- libmng_jpeg.o \
- libmng_object_prc.o \
- libmng_pixels.o \
- libmng_prop_xs.o \
- libmng_read.o \
- libmng_trace.o \
- libmng_write.o \
- libmng_zlib.o
-
-OBJSDLL = $(OBJS:.0=.pic.o)
-
-.SUFFIXES: .c .o .pic.o
-
-.c.pic.o:
- $(CC) -c $(CFLAGS) -fPIC -o $@ $*.c
-
-all: libmng.a
-
-libmng.a: $(OBJS)
- ar rc $@ $(OBJS)
- ranlib $@
-
-install: libmng.a
- -@md $(installprefix)\include $(installprefix)\lib
- copy libmng.h $(installprefix)\include
- copy libmng_conf.h $(installprefix)\include
- copy libmng_types.h $(installprefix)\include
- copy libmng.a $(installprefix)\lib
-
-clean:
- del *.o
- del libmng.a
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-libmng_hlapi.o libmng_hlapi.pic.o: libmng_hlapi.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_object_prc.h \
- libmng_chunks.h libmng_memory.h libmng_error.h libmng_trace.h libmng_read.h \
- libmng_write.h libmng_display.h libmng_zlib.h libmng_cms.h libmng_zlib.h
-libmng_callback_xs.o libmng_callback_xs.pic.o: libmng_callback_xs.c libmng.h \
- libmng_conf.h libmng_types.h libmng_data.h libmng_error.h libmng_trace.h
-libmng_prop_xs.o libmng_prop_xs.pic.o: libmng_prop_xs.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_error.h libmng_trace.h libmng_cms.h
-libmng_chunk_xs.o libmng_chunk_xs.pic.o: libmng_chunk_xs.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_chunks.h libmng_chunk_prc.h \
- libmng_error.h libmng_trace.h
-libmng_read.o libmng_read.pic.o: libmng_read.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_object_prc.h \
- libmng_chunks.h libmng_chunk_prc.h libmng_chunk_io.h libmng_memory.h \
- libmng_error.h libmng_trace.h libmng_read.h libmng_display.h
-libmng_write.o libmng_write.pic.o: libmng_write.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_write.h
-libmng_display.o libmng_display.pic.o: libmng_display.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_objects.h libmng_object_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h libmng_zlib.h libmng_cms.h libmng_pixels.h \
- libmng_display.h
-libmng_object_prc.o libmng_object_prc.pic.o: libmng_object_prc.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_objects.h libmng_object_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h libmng_display.h libmng_pixels.h
-libmng_chunk_descr.o libmng_chunk_descr.pic.o: libmng_chunk_descr.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_chunks.h libmng_chunk_descr.h \
- libmng_chunk_prc.h libmng_memory.h libmng_error.h libmng_trace.h
-libmng_chunk_prc.o libmng_chunk_prc.pic.o: libmng_chunk_prc.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_chunks.h libmng_chunk_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h
-libmng_chunk_io.o libmng_chunk_io.pic.o: libmng_chunk_io.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_objects.h libmng_object_prc.h \
- libmng_chunks.h libmng_chunk_io.h libmng_chunk_prc.h libmng_memory.h libmng_error.h \
- libmng_trace.h libmng_display.h libmng_zlib.h libmng_pixels.h
-libmng_error.o libmng_error.pic.o: libmng_error.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h
-libmng_trace.o libmng_trace.pic.o: libmng_trace.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h
-libmng_pixels.o libmng_pixels.pic.o: libmng_pixels.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_memory.h libmng_error.h libmng_trace.h \
- libmng_cms.h libmng_filter.h libmng_pixels.h
-libmng_filter.o libmng_filter.pic.o: libmng_filter.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_filter.h
-libmng_dither.o libmng_dither.pic.o: libmng_dither.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_dither.h
-libmng_zlib.o libmng_zlib.pic.o: libmng_zlib.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_memory.h libmng_error.h libmng_trace.h libmng_pixels.h \
- libmng_filter.h libmng_zlib.h
-libmng_jpeg.o libmng_jpeg.pic.o: libmng_jpeg.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_memory.h libmng_error.h libmng_trace.h libmng_pixels.h libmng_jpeg.h
-libmng_cms.o libmng_cms.pic.o: libmng_cms.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_error.h libmng_trace.h libmng_cms.h
-
diff --git a/src/3rdparty/libmng/makefiles/makefile.linux b/src/3rdparty/libmng/makefiles/makefile.linux
deleted file mode 100644
index e06a8294c6..0000000000
--- a/src/3rdparty/libmng/makefiles/makefile.linux
+++ /dev/null
@@ -1,180 +0,0 @@
-#
-# For conditions of distribution and use, see copyright notice in libmng.h
-#
-# makefile for libmng - THE MNG library
-# this makefile is suitable for Linux ELF with gcc
-#
-# (this file is heavily copied from makefile.linux in the libpng package)
-
-# compiler
-CC=gcc
-
-# default build options (this forces shared library compatibility!!)
-#OPTIONS = -DMNG_BUILD_SO
-OPTIONS = -DMNG_BUILD_SO -DMNG_FULL_CMS
-
-# where "make install" puts libmng.a,libmng.so*,libmng.h,libmng_conf.h,libmng_types.h
-prefix=/usr/local
-
-# Where the zlib library and include files are located
-#ZLIBLIB=../zlib
-#ZLIBINC=../zlib
-ZLIBLIB=/usr/local/lib
-ZLIBINC=/usr/local/include
-
-# Where the jpeg library and include files are located
-#JPEGLIB=../jpgsrc
-#JPEGINC=../jpgsrc
-JPEGLIB=/usr/local/lib
-JPEGINC=/usr/local/include
-
-# Where the lcms library and include files are located
-#LCMSLIB=../lcms/lib
-#LCMSINC=../lcms/source
-LCMSLIB=/usr/local/lib
-LCMSINC=/usr/local/include
-
-ALIGN=
-# for i386:
-#ALIGN=-malign-loops=2 -malign-functions=2
-
-WARNMORE=-Wwrite-strings -Wpointer-arith -Wshadow \
- -Wmissing-declarations -Wtraditional -Wcast-align \
- -Wstrict-prototypes -Wmissing-prototypes #-Wconversion
-
-# for pgcc version 2.95.1, -O3 is buggy; don't use it.
-
-CFLAGS=-I$(ZLIBINC) -I$(JPEGINC) -I$(LCMSINC) -Wall -O3 -funroll-loops \
- $(OPTIONS) $(ALIGN) # $(WARNMORE) -g
-LDFLAGS=-L. -Wl,-rpath,. \
- -L$(ZLIBLIB) -Wl,-rpath,$(ZLIBLIB) \
- -L$(JPEGLIB) -Wl,-rpath,$(JPEGLIB) \
- -L$(LCMSLIB) -Wl,-rpath,$(LCMSLIB) \
- -lmng -lz -ljpeg -llcms -lm
-
-RANLIB=ranlib
-#RANLIB=echo
-
-# current version numbers
-MNGMAJ = 1
-MNGMIN = 1.0.9
-MNGVER = $(MNGMAJ).$(MNGMIN)
-
-INCPATH=$(prefix)/include
-LIBPATH=$(prefix)/lib
-
-OBJS = \
- libmng_callback_xs.o \
- libmng_chunk_io.o \
- libmng_chunk_descr.o \
- libmng_chunk_prc.o \
- libmng_chunk_xs.o \
- libmng_cms.o \
- libmng_display.o \
- libmng_dither.o \
- libmng_error.o \
- libmng_filter.o \
- libmng_hlapi.o \
- libmng_jpeg.o \
- libmng_object_prc.o \
- libmng_pixels.o \
- libmng_prop_xs.o \
- libmng_read.o \
- libmng_trace.o \
- libmng_write.o \
- libmng_zlib.o
-
-OBJSDLL = $(OBJS:.0=.pic.o)
-
-.SUFFIXES: .c .o .pic.o
-
-.c.pic.o:
- $(CC) -c $(CFLAGS) -fPIC -o $@ $*.c
-
-all: libmng.a libmng.so
-
-libmng.a: $(OBJS)
- ar rc $@ $(OBJS)
- $(RANLIB) $@
-
-libmng.so: libmng.so.$(MNGMAJ)
- ln -sf libmng.so.$(MNGMAJ) libmng.so
-
-libmng.so.$(MNGMAJ): libmng.so.$(MNGVER)
- ln -sf libmng.so.$(MNGVER) libmng.so.$(MNGMAJ)
-
-libmng.so.$(MNGVER): $(OBJSDLL)
-# $(CC) -shared -Wl,-soname,libmng.so.$(MNGMAJ) -o libmng.so.$(MNGVER) \
-# $(OBJSDLL) -L$(ZLIBLIB) -L$(JPEGLIB) -L$(LCMSLIB) -lz -lm -lc
- $(CC) -shared -Wl,-soname,libmng.so.$(MNGMAJ) -o libmng.so.$(MNGVER) \
- $(OBJSDLL) -L$(ZLIBLIB) -L$(JPEGLIB) -ljpeg -L$(LCMSLIB) -llcms \
- -lz -lm -lc
-
-install: libmng.a libmng.so.$(MNGVER)
- -@mkdir $(INCPATH) $(LIBPATH)
- cp libmng.h libmng_conf.h libmng_types.h $(INCPATH)
- chmod 644 $(INCPATH)/libmng.h $(INCPATH)/libmng_conf.h $(INCPATH)/libmng_types.h
- cp libmng.a libmng.so.$(MNGVER) $(LIBPATH)
- chmod 755 $(LIBPATH)/libmng.so.$(MNGVER)
- -@/bin/rm -f $(LIBPATH)/libmng.so.$(MNGMAJ) $(LIBPATH)/libmng.so
- (cd $(LIBPATH); ln -sf libmng.so.$(MNGVER) libmng.so.$(MNGMAJ); \
- ln -sf libmng.so.$(MNGMAJ) libmng.so)
-
-clean:
- /bin/rm -f *.o libmng.a libmng.so*
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-libmng_hlapi.o libmng_hlapi.pic.o: libmng_hlapi.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_object_prc.h \
- libmng_chunks.h libmng_memory.h libmng_error.h libmng_trace.h libmng_read.h \
- libmng_write.h libmng_display.h libmng_zlib.h libmng_cms.h libmng_zlib.h
-libmng_callback_xs.o libmng_callback_xs.pic.o: libmng_callback_xs.c libmng.h \
- libmng_conf.h libmng_types.h libmng_data.h libmng_error.h libmng_trace.h
-libmng_prop_xs.o libmng_prop_xs.pic.o: libmng_prop_xs.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_error.h libmng_trace.h libmng_cms.h
-libmng_chunk_xs.o libmng_chunk_xs.pic.o: libmng_chunk_xs.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_chunks.h libmng_chunk_prc.h \
- libmng_error.h libmng_trace.h
-libmng_read.o libmng_read.pic.o: libmng_read.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_object_prc.h \
- libmng_chunks.h libmng_chunk_prc.h libmng_chunk_io.h libmng_memory.h \
- libmng_error.h libmng_trace.h libmng_read.h libmng_display.h
-libmng_write.o libmng_write.pic.o: libmng_write.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_write.h
-libmng_display.o libmng_display.pic.o: libmng_display.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_objects.h libmng_object_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h libmng_zlib.h libmng_cms.h libmng_pixels.h \
- libmng_display.h
-libmng_object_prc.o libmng_object_prc.pic.o: libmng_object_prc.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_objects.h libmng_object_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h libmng_display.h libmng_pixels.h
-libmng_chunk_descr.o libmng_chunk_descr.pic.o: libmng_chunk_descr.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_chunks.h libmng_chunk_descr.h libmng_memory.h \
- libmng_chunk_prc.h libmng_error.h libmng_trace.h
-libmng_chunk_prc.o libmng_chunk_prc.pic.o: libmng_chunk_prc.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_chunks.h libmng_chunk_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h
-libmng_chunk_io.o libmng_chunk_io.pic.o: libmng_chunk_io.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_objects.h libmng_object_prc.h \
- libmng_chunks.h libmng_chunk_io.h libmng_chunk_prc.h libmng_memory.h libmng_error.h \
- libmng_trace.h libmng_display.h libmng_zlib.h libmng_pixels.h
-libmng_error.o libmng_error.pic.o: libmng_error.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h
-libmng_trace.o libmng_trace.pic.o: libmng_trace.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h
-libmng_pixels.o libmng_pixels.pic.o: libmng_pixels.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_memory.h libmng_error.h libmng_trace.h \
- libmng_cms.h libmng_filter.h libmng_pixels.h
-libmng_filter.o libmng_filter.pic.o: libmng_filter.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_filter.h
-libmng_dither.o libmng_dither.pic.o: libmng_dither.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_dither.h
-libmng_zlib.o libmng_zlib.pic.o: libmng_zlib.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_memory.h libmng_error.h libmng_trace.h libmng_pixels.h \
- libmng_filter.h libmng_zlib.h
-libmng_jpeg.o libmng_jpeg.pic.o: libmng_jpeg.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_memory.h libmng_error.h libmng_trace.h libmng_pixels.h libmng_jpeg.h
-libmng_cms.o libmng_cms.pic.o: libmng_cms.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_error.h libmng_trace.h libmng_cms.h
-
diff --git a/src/3rdparty/libmng/makefiles/makefile.mingw b/src/3rdparty/libmng/makefiles/makefile.mingw
deleted file mode 100644
index 703ae30590..0000000000
--- a/src/3rdparty/libmng/makefiles/makefile.mingw
+++ /dev/null
@@ -1,164 +0,0 @@
-#
-# For conditions of distribution and use, see copyright notice in libmng.h
-#
-# makefile for libmng - THE MNG library
-# this makefile is for MinGW32, it have been tested with gcc 2.95.3,
-# binutils 2.11.90 and mingw-runtime 1.0
-#
-# By Benoit Blanchon - benoit.blanchon@laposte.net
-#
-# Note : this makefile builds a static library; although it's seems to be
-# possible to build working DLL and import lib, I didn't manage do to it.
-# If you do, please let me know.
-
-# outputs
-LIBMNG_A = libmng.a
-INSTALL_PREFIX = C:/MinGW/
-# maybe you sould replace with anti-slashes
-
-# default build options
-OPTIONS = -DMNG_NO_CMS -DMNG_ACCESS_CHUNKS -DMNG_STORE_CHUNKS
-
-# Where the zlib library and include files are located
-ZLIBLIB=-lz
-#ZLIBLIB=-L../zlib -lz
-#ZLIBINC=-I../zlib
-
-# Where the jpeg library and include files are located
-JPEGLIB=-ljpeg
-#JPEGLIB=-L../jpgsrc -ljpeg
-#JPEGINC=-I../jpgsrc
-
-# Where the lcms library and include files are located
-#LCMSLIB=-llcms
-#LCMSLIB=-L../lcms/lib -llcms
-#LCMSINC=-I../lcms/source
-
-# file deletion command
-RM=rm -f
-#RM=del
-
-# directory creation command
-MKDIR=mkdir -p
-
-# file copy command
-COPY=cp
-#COPY=copy
-
-# compiler
-CC=gcc
-
-ALIGN=
-# for i386:
-#ALIGN=-malign-loops=2 -malign-functions=2
-
-CFLAGS=$(ZLIBINC) $(JPEGINC) $(LCMSINC) -Wall -O3 -funroll-loops $(OPTIONS) $(ALIGN)
-LDFLAGS=-L. -lmng $(ZLIBLIB) $(JPEGLIB) $(LCMSLIB) -lm
-
-# library (.a) file creation command
-AR= ar rc
-# second step in .a creation (use "touch" if not needed)
-AR2= ranlib
-
-INCPATH=$(prefix)/include
-LIBPATH=$(prefix)/lib
-
-OBJS = \
- libmng_callback_xs.o \
- libmng_chunk_io.o \
- libmng_chunk_descr.o \
- libmng_chunk_prc.o \
- libmng_chunk_xs.o \
- libmng_cms.o \
- libmng_display.o \
- libmng_dither.o \
- libmng_error.o \
- libmng_filter.o \
- libmng_hlapi.o \
- libmng_jpeg.o \
- libmng_object_prc.o \
- libmng_pixels.o \
- libmng_prop_xs.o \
- libmng_read.o \
- libmng_trace.o \
- libmng_write.o \
- libmng_zlib.o
-
-.SUFFIXES: .c .o
-
-.c.o:
- $(CC) -c $(CFLAGS) -o $@ $*.c
-
-all: $(LIBMNG_A)
-
-$(LIBMNG_A) : $(OBJS)
- $(RM) $@
- $(AR) $@ $(OBJS)
- $(AR2) $@
-
-install : $(LIBMNG_A)
- $(MKDIR) $(INSTALL_PREFIX)include
- $(COPY) libmng.h $(INSTALL_PREFIX)include
- $(COPY) libmng_conf.h $(INSTALL_PREFIX)include
- $(COPY) libmng_types.h $(INSTALL_PREFIX)include
- $(MKDIR) $(INSTALL_PREFIX)lib
- $(COPY) $(LIBMNG_A) $(INSTALL_PREFIX)lib
-
-clean:
- $(RM) *.o
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-libmng_hlapi.o : libmng_hlapi.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_object_prc.h \
- libmng_chunks.h libmng_memory.h libmng_error.h libmng_trace.h libmng_read.h \
- libmng_write.h libmng_display.h libmng_zlib.h libmng_cms.h libmng_zlib.h
-libmng_callback_xs.o : libmng_callback_xs.c libmng.h \
- libmng_conf.h libmng_types.h libmng_data.h libmng_error.h libmng_trace.h
-libmng_prop_xs.o : libmng_prop_xs.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_error.h libmng_trace.h libmng_cms.h
-libmng_chunk_xs.o : libmng_chunk_xs.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_chunks.h libmng_chunk_prc.h \
- libmng_error.h libmng_trace.h
-libmng_read.o : libmng_read.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_object_prc.h \
- libmng_chunks.h libmng_chunk_prc.h libmng_chunk_io.h libmng_memory.h \
- libmng_error.h libmng_trace.h libmng_read.h libmng_display.h
-libmng_write.o : libmng_write.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_write.h
-libmng_display.o : libmng_display.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_objects.h libmng_object_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h libmng_zlib.h libmng_cms.h libmng_pixels.h \
- libmng_display.h
-libmng_object_prc.o : libmng_object_prc.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_objects.h libmng_object_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h libmng_display.h libmng_pixels.h
-libmng_chunk_descr.o : libmng_chunk_descr.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_chunks.h libmng_chunk_descr.h \
- libmng_chunk_prc.h libmng_memory.h libmng_error.h libmng_trace.h
-libmng_chunk_prc.o : libmng_chunk_prc.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_chunks.h libmng_chunk_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h
-libmng_chunk_io.o : libmng_chunk_io.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_objects.h libmng_object_prc.h \
- libmng_chunks.h libmng_chunk_io.h libmng_chunk_prc.h libmng_memory.h libmng_error.h \
- libmng_trace.h libmng_display.h libmng_zlib.h libmng_pixels.h
-libmng_error.o : libmng_error.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h
-libmng_trace.o : libmng_trace.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h
-libmng_pixels.o : libmng_pixels.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_memory.h libmng_error.h libmng_trace.h \
- libmng_cms.h libmng_filter.h libmng_pixels.h
-libmng_filter.o : libmng_filter.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_filter.h
-libmng_dither.o : libmng_dither.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_dither.h
-libmng_zlib.o : libmng_zlib.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_memory.h libmng_error.h libmng_trace.h libmng_pixels.h \
- libmng_filter.h libmng_zlib.h
-libmng_jpeg.o : libmng_jpeg.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_memory.h libmng_error.h libmng_trace.h libmng_pixels.h libmng_jpeg.h
-libmng_cms.o : libmng_cms.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_error.h libmng_trace.h libmng_cms.h
-
diff --git a/src/3rdparty/libmng/makefiles/makefile.mingwdll b/src/3rdparty/libmng/makefiles/makefile.mingwdll
deleted file mode 100644
index 2837218281..0000000000
--- a/src/3rdparty/libmng/makefiles/makefile.mingwdll
+++ /dev/null
@@ -1,158 +0,0 @@
-#
-# For conditions of distribution and use, see copyright notice in libmng.h
-#
-# makefile for libmng - THE MNG library
-# this makefile is for MinGW32, it has been tested with gcc 3.1,
-# binutils 2.12.90 and mingw-runtime 2.0
-#
-# By Benoit Blanchon - benoit.blanchon@laposte.net
-# DLL mods by F. Richter <frichter@gmx.li>
-#
-
-# outputs
-LIBMNG_A = libmng.a
-LIBMNG_DLL = libmng.1.dll
-INSTALL_PREFIX = C:/MinGW/
-# maybe you sould replace with anti-slashes
-
-# default build options
-OPTIONS = -DMNG_BUILD_DLL -DMNG_ACCESS_CHUNKS -DMNG_STORE_CHUNKS
-
-# Where the zlib library and include files are located
-ZLIBLIB=-lz
-#ZLIBLIB=-L../zlib -lz
-#ZLIBINC=-I../zlib
-
-# Where the jpeg library and include files are located
-JPEGLIB=-ljpeg
-#JPEGLIB=-L../jpgsrc -ljpeg
-#JPEGINC=-I../jpgsrc
-
-# Where the lcms library and include files are located
-#LCMSLIB=-llcms
-LCMSLIB=-L../lcms/lib -llcms
-LCMSINC=-I../lcms/source
-
-# file deletion command
-RM=rm -f
-#RM=del
-
-# directory creation command
-MKDIR=mkdir -p
-
-# file copy command
-COPY=cp
-#COPY=copy
-
-# compiler
-CC=gcc
-
-ALIGN=
-# for i386:
-#ALIGN=-malign-loops=2 -malign-functions=2
-
-CFLAGS=$(ZLIBINC) $(JPEGINC) $(LCMSINC) -Wall -O3 -funroll-loops $(OPTIONS) $(ALIGN) -s
-LDFLAGS=-L. -lmng $(ZLIBLIB) $(JPEGLIB) $(LCMSLIB) -lm -s
-
-INCPATH=$(prefix)/include
-LIBPATH=$(prefix)/lib
-
-OBJS = \
- libmng_callback_xs.o \
- libmng_chunk_io.o \
- libmng_chunk_descr.o \
- libmng_chunk_prc.o \
- libmng_chunk_xs.o \
- libmng_cms.o \
- libmng_display.o \
- libmng_dither.o \
- libmng_error.o \
- libmng_filter.o \
- libmng_hlapi.o \
- libmng_jpeg.o \
- libmng_object_prc.o \
- libmng_pixels.o \
- libmng_prop_xs.o \
- libmng_read.o \
- libmng_trace.o \
- libmng_write.o \
- libmng_zlib.o
-
-.SUFFIXES: .c .o
-
-.c.o:
- $(CC) -c $(CFLAGS) -o $@ $*.c
-
-all: $(LIBMNG_A)
-
-$(LIBMNG_A): $(LIBMNG_DLL)
-
-$(LIBMNG_DLL) : $(OBJS)
- dllwrap --implib=$(LIBMNG_A) --dllname=$(LIBMNG_DLL) $(OBJS) $(LDFLAGS)
-
-install : $(LIBMNG_A)
- $(MKDIR) $(INSTALL_PREFIX)include
- $(COPY) libmng.h $(INSTALL_PREFIX)include
- $(COPY) libmng_conf.h $(INSTALL_PREFIX)include
- $(COPY) libmng_types.h $(INSTALL_PREFIX)include
- $(MKDIR) $(INSTALL_PREFIX)lib
- $(COPY) $(LIBMNG_A) $(INSTALL_PREFIX)lib
-
-clean:
- $(RM) *.o
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-libmng_hlapi.o : libmng_hlapi.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_object_prc.h \
- libmng_chunks.h libmng_memory.h libmng_error.h libmng_trace.h libmng_read.h \
- libmng_write.h libmng_display.h libmng_zlib.h libmng_cms.h libmng_zlib.h
-libmng_callback_xs.o : libmng_callback_xs.c libmng.h \
- libmng_conf.h libmng_types.h libmng_data.h libmng_error.h libmng_trace.h
-libmng_prop_xs.o : libmng_prop_xs.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_error.h libmng_trace.h libmng_cms.h
-libmng_chunk_xs.o : libmng_chunk_xs.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_chunks.h libmng_chunk_prc.h \
- libmng_error.h libmng_trace.h
-libmng_read.o : libmng_read.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_object_prc.h \
- libmng_chunks.h libmng_chunk_prc.h libmng_chunk_io.h libmng_memory.h \
- libmng_error.h libmng_trace.h libmng_read.h libmng_display.h
-libmng_write.o : libmng_write.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_write.h
-libmng_display.o : libmng_display.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_objects.h libmng_object_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h libmng_zlib.h libmng_cms.h libmng_pixels.h \
- libmng_display.h
-libmng_object_prc.o : libmng_object_prc.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_objects.h libmng_object_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h libmng_display.h libmng_pixels.h
-libmng_chunk_descr.o : libmng_chunk_descr.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_chunks.h libmng_chunk_descr.h \
- libmng_chunk_prc.h libmng_memory.h libmng_error.h libmng_trace.h
-libmng_chunk_prc.o : libmng_chunk_prc.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_chunks.h libmng_chunk_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h
-libmng_chunk_io.o : libmng_chunk_io.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_objects.h libmng_object_prc.h \
- libmng_chunks.h libmng_chunk_io.h libmng_chunk_prc.h libmng_memory.h libmng_error.h \
- libmng_trace.h libmng_display.h libmng_zlib.h libmng_pixels.h
-libmng_error.o : libmng_error.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h
-libmng_trace.o : libmng_trace.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h
-libmng_pixels.o : libmng_pixels.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_memory.h libmng_error.h libmng_trace.h \
- libmng_cms.h libmng_filter.h libmng_pixels.h
-libmng_filter.o : libmng_filter.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_filter.h
-libmng_dither.o : libmng_dither.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_dither.h
-libmng_zlib.o : libmng_zlib.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_memory.h libmng_error.h libmng_trace.h libmng_pixels.h \
- libmng_filter.h libmng_zlib.h
-libmng_jpeg.o : libmng_jpeg.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_memory.h libmng_error.h libmng_trace.h libmng_pixels.h libmng_jpeg.h
-libmng_cms.o : libmng_cms.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_error.h libmng_trace.h libmng_cms.h
-
diff --git a/src/3rdparty/libmng/makefiles/makefile.qnx b/src/3rdparty/libmng/makefiles/makefile.qnx
deleted file mode 100644
index 28f18d7634..0000000000
--- a/src/3rdparty/libmng/makefiles/makefile.qnx
+++ /dev/null
@@ -1,160 +0,0 @@
-#
-# For conditions of distribution and use, see copyright notice in libmng.h
-#
-# makefile for libmng - THE MNG library
-# this makefile is suitable for QNX Neutrino
-
-# Configuration options are now in libmng_conf.h
-
-# The architecture of your target
-# one of arm, mips, ppc, sh, x86
-ARCH = mips
-
-# The name of the library
-LIBNAME = libmng
-ARNAME = $(LIBNAME).a
-SONAME = $(LIBNAME).so
-
-# current version numbers
-MNGMAJ = 1
-MNGMIN = 0.9
-MNGVER = $(MNGMAJ).$(MNGMIN)
-
-# The artefact output folder
-OBJDIR = bin
-
-# Location of jpeg header files
-JPEG_INC = $(QNX_TARGET)/usr/include/jpeg
-
-# Location of zlib header files
-ZLIB_INC = $(QNX_TARGET)/usr/include
-
-# Location of lcms header files
-# (switch on MNG_FULL_CMS in libmng_conf.h if you want to use this)
-LCMS_INC = $(QNX_TARGET)/usr/include/lcms
-
-# default build defines
-DEF =
-DEF_SO = -DMNG_BUILD_SO
-
-# compiler options:
-CFLAGS = -O2 -funroll-loops
-
-# include paths
-INC = -I$(ZLIB_INC) -I$(JPEG_INC)
-
-# The name of your C compiler:
-CC = nto$(ARCH)-gcc
-
-# source files
-SRC= \
- libmng_callback_xs.c \
- libmng_chunk_io.c \
- libmng_chunk_descr.c \
- libmng_chunk_prc.c \
- libmng_chunk_xs.c \
- libmng_cms.c \
- libmng_display.c \
- libmng_dither.c \
- libmng_error.c \
- libmng_filter.c \
- libmng_hlapi.c \
- libmng_jpeg.c \
- libmng_object_prc.c \
- libmng_pixels.c \
- libmng_prop_xs.c \
- libmng_read.c \
- libmng_trace.c \
- libmng_write.c \
- libmng_zlib.c
-
-# object files
-OBJ=$(addprefix $(OBJDIR)/$(ARCH)/, $(SRC:%.c=%.o))
-
-# object files for shared object
-OBJ_SO=$(addprefix $(OBJDIR)/$(ARCH)/, $(SRC:%.c=%.pic.o))
-
-# type dependancies
-$(OBJDIR)/$(ARCH)/%.o: %.c
- $(CC) $(CFLAGS) $(INC) $(DEF) -o $@ -c $<
-
-$(OBJDIR)/$(ARCH)/%.pic.o: %.c
- $(CC) $(CFLAGS) $(INC) $(DEF_SO) -fPIC -o $@ -c $<
-
-all: init $(ARNAME) $(SONAME)
-
-init:
- if [ ! -d $(OBJDIR)/$(ARCH) ]; then mkdir -p $(OBJDIR)/$(ARCH); fi
-
-$(ARNAME): $(OBJ)
- ar r $(OBJDIR)/$(ARCH)/$(ARNAME) $(OBJ)
-
-$(SONAME): $(SONAME).$(MNGMAJ)
- ln -sf $(OBJDIR)/$(ARCH)/$(SONAME).$(MNGMAJ) $(OBJDIR)/$(ARCH)/$(SONAME)
-
-$(SONAME).$(MNGMAJ): $(SONAME).$(MNGVER)
- ln -sf $(OBJDIR)/$(ARCH)/$(SONAME).$(MNGVER) $(OBJDIR)/$(ARCH)/$(SONAME).$(MNGMAJ)
-
-$(SONAME).$(MNGVER): $(OBJ_SO)
- $(CC) -shared -Wl,-soname,$(SONAME).$(MNGMAJ) -o $(OBJDIR)/$(ARCH)/$(SONAME).$(MNGVER) $(OBJ_SO) \
- -lz -lm -ljpeg
-# -lz -lm -ljpeg -llcms
-
-clean:
- rm -f $(OBJ) $(OBJ_SO)
- rm -f $(OBJDIR)/$(ARCH)/$(ARNAME) $(OBJDIR)/$(ARCH)/$(SONAME)*
-
-# DO NOT DELETE THIS LINE -- make depend depends on it.
-
-libmng_hlapi.o libmng_hlapi.pic.o: libmng_hlapi.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_object_prc.h \
- libmng_chunks.h libmng_memory.h libmng_error.h libmng_trace.h libmng_read.h \
- libmng_write.h libmng_display.h libmng_zlib.h libmng_cms.h libmng_zlib.h
-libmng_callback_xs.o libmng_callback_xs.pic.o: libmng_callback_xs.c libmng.h \
- libmng_conf.h libmng_types.h libmng_data.h libmng_error.h libmng_trace.h
-libmng_prop_xs.o libmng_prop_xs.pic.o: libmng_prop_xs.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_error.h libmng_trace.h libmng_cms.h
-libmng_chunk_xs.o libmng_chunk_xs.pic.o: libmng_chunk_xs.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_chunks.h libmng_chunk_prc.h \
- libmng_error.h libmng_trace.h
-libmng_read.o libmng_read.pic.o: libmng_read.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_object_prc.h \
- libmng_chunks.h libmng_chunk_prc.h libmng_chunk_io.h libmng_memory.h \
- libmng_error.h libmng_trace.h libmng_read.h libmng_display.h
-libmng_write.o libmng_write.pic.o: libmng_write.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_write.h
-libmng_display.o libmng_display.pic.o: libmng_display.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_objects.h libmng_object_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h libmng_zlib.h libmng_cms.h libmng_pixels.h \
- libmng_display.h
-libmng_object_prc.o libmng_object_prc.pic.o: libmng_object_prc.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_objects.h libmng_object_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h libmng_display.h libmng_pixels.h
-libmng_chunk_descr.o libmng_chunk_descr.pic.o: libmng_chunk_descr.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_chunks.h libmng_chunk_descr.h libmng_memory.h \
- libmng_chunk_prc.h libmng_error.h libmng_trace.h
-libmng_chunk_prc.o libmng_chunk_prc.pic.o: libmng_chunk_prc.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_chunks.h libmng_chunk_prc.h libmng_memory.h \
- libmng_error.h libmng_trace.h
-libmng_chunk_io.o libmng_chunk_io.pic.o: libmng_chunk_io.c libmng.h libmng_conf.h \
- libmng_types.h libmng_data.h libmng_objects.h libmng_object_prc.h \
- libmng_chunks.h libmng_chunk_io.h libmng_chunk_prc.h libmng_memory.h libmng_error.h \
- libmng_trace.h libmng_display.h libmng_zlib.h libmng_pixels.h
-libmng_error.o libmng_error.pic.o: libmng_error.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h
-libmng_trace.o libmng_trace.pic.o: libmng_trace.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h
-libmng_pixels.o libmng_pixels.pic.o: libmng_pixels.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_memory.h libmng_error.h libmng_trace.h \
- libmng_cms.h libmng_filter.h libmng_pixels.h
-libmng_filter.o libmng_filter.pic.o: libmng_filter.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_filter.h
-libmng_dither.o libmng_dither.pic.o: libmng_dither.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_error.h libmng_trace.h libmng_dither.h
-libmng_zlib.o libmng_zlib.pic.o: libmng_zlib.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_memory.h libmng_error.h libmng_trace.h libmng_pixels.h \
- libmng_filter.h libmng_zlib.h
-libmng_jpeg.o libmng_jpeg.pic.o: libmng_jpeg.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_memory.h libmng_error.h libmng_trace.h libmng_pixels.h libmng_jpeg.h
-libmng_cms.o libmng_cms.pic.o: libmng_cms.c libmng.h libmng_conf.h libmng_types.h \
- libmng_data.h libmng_objects.h libmng_error.h libmng_trace.h libmng_cms.h
diff --git a/src/3rdparty/libmng/makefiles/makefile.unix b/src/3rdparty/libmng/makefiles/makefile.unix
deleted file mode 100644
index 4d3fd97f4e..0000000000
--- a/src/3rdparty/libmng/makefiles/makefile.unix
+++ /dev/null
@@ -1,67 +0,0 @@
-#
-# For conditions of distribution and use, see copyright notice in libmng.h
-#
-# makefile for libmng - THE MNG library
-# this makefile is suitable for generic unix
-
-# Configuration options are now in libmng_conf.h
-
-# The name of your C compiler:
-CC= cc
-
-# Location of jpeg header files
-JPEG_INC= /cs/include/jpeg
-
-# Location of zlib header files
-ZLIB_INC= /cs/include
-
-# Location of lcms header files
-# (switch on MNG_FULL_CMS in libmng_conf.h if you want to use this)
-LCMS_INC= /ltmp/lcms-1.06/source
-
-# compiler options:
-CFLAGS= -O -I. -I$(ZLIB_INC) -I$(JPEG_INC) -I$(LCMS_INC)
-
-# source files
-SOURCES= \
- libmng_callback_xs.c \
- libmng_chunk_io.c \
- libmng_chunk_descr.c \
- libmng_chunk_prc.c \
- libmng_chunk_xs.c \
- libmng_cms.c \
- libmng_display.c \
- libmng_dither.c \
- libmng_error.c \
- libmng_filter.c \
- libmng_hlapi.c \
- libmng_jpeg.c \
- libmng_object_prc.c \
- libmng_pixels.c \
- libmng_prop_xs.c \
- libmng_read.c \
- libmng_trace.c \
- libmng_write.c \
- libmng_zlib.c
-
-# object files
-OBJECTS= $(SOURCES:%.c=%.o)
-
-# type dependancies
-.c.o:
- $(CC) $(CFLAGS) -c $<
-
-all: libmng.a
-
-clean:
- /bin/rm -f $(OBJECTS)
- /bin/rm -f libmng.a
- /bin/rm -f *~ core
-
-libmng.a: $(OBJECTS)
- ar r libmng.a $(OBJECTS)
-
-depend:
- makedepend -- $(CFLAGS) $(IFLAGS) -- *.c
-
-# DO NOT DELETE
diff --git a/src/3rdparty/libmng/makefiles/makefile.vcwin32 b/src/3rdparty/libmng/makefiles/makefile.vcwin32
deleted file mode 100644
index 6f9c2c0470..0000000000
--- a/src/3rdparty/libmng/makefiles/makefile.vcwin32
+++ /dev/null
@@ -1,99 +0,0 @@
-# makefile for libmng
-# Copyright (C) 2000 AM(s98t269@stmail.eng.kagawa-u.ac.jp)
-# For conditions of distribution and use, see copyright notice in libmng.h
-# Assumes that zlib.lib, zconf.h, and zlib.h have been copied to ..\zlib
-# Assumes that libjpeg.lib, *.h have been copied to ..\jpgsrc6b
-# Assumes that lcmsdll.lib and lcmsstat.lib have been copied to ..\lcms\lib\msvc
-# To use, do "nmake /f makefiles\makefile.vcwin32"
-
-# -------- Microsoft Visual C++ 4.0 and later, no assembler code --------
-
-CFLAGS= -Ox -GA3s -nologo -W3 -I..\zlib -I..\jpgsrc6b -I..\lcms\include
-
-CC=cl
-LD=link
-LDFLAGS=
-O=.obj
-
-#uncomment next to put error messages in a file
-#ERRFILE= >> mngerrs
-
-# variables
-OBJS1 = libmng_callback_xs$(O) libmng_chunk_io$(O) libmng_chunk_prc$(O) libmng_chunk_descr$(0)
-OBJS2 = libmng_chunk_xs$(O) libmng_cms$(O) libmng_display$(O) libmng_dither$(O)
-OBJS3 = libmng_error$(O) libmng_filter$(O) libmng_hlapi$(O) libmng_jpeg$(O)
-OBJS4 = libmng_object_prc$(O) libmng_pixels$(O) libmng_prop_xs$(O)
-OBJS5 = libmng_read$(O) libmng_trace$(O) libmng_write$(O) libmng_zlib$(O)
-
-all: libmng.lib
-
-libmng_callback_xs$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng_chunk_io$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng_chunk_descr$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng_chunk_prc$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng_chunk_xs$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng_cms$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng_display$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng_dither$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng_error$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng_filter$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng_hlapi$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng_jpeg$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng_object_prc$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng_pixels$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng_prop_xs$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng_read$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng_trace$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng_write$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng_zlib$(O): libmng.h libmng_data.h libmng_error.h libmng_trace.h
- $(CC) -c $(CFLAGS) $*.c $(ERRFILE)
-
-libmng.lib: $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) $(OBJS5)
- echo something to del > libmng.lib
- del libmng.lib
- lib /OUT:libmng.lib $(OBJS1) $(OBJS2) $(OBJS3) $(OBJS4) $(OBJS5)
-
-mngtest.exe: mngtest.obj libmng.lib
- $(LD) $(LDFLAGS) mngtest.obj libmng.lib ..\zlib\zlib.lib /OUT:mngtest.exe /SUBSYSTEM:CONSOLE
-
-test: mngtest.exe
- mngtest
-
-# End of makefile for libmng
-
diff --git a/src/3rdparty/libmng/unmaintained/autogen.sh b/src/3rdparty/libmng/unmaintained/autogen.sh
deleted file mode 100755
index 308ae37393..0000000000
--- a/src/3rdparty/libmng/unmaintained/autogen.sh
+++ /dev/null
@@ -1,50 +0,0 @@
-# autogen.sh
-#
-# invoke the auto* tools to create the configureation system
-
-# move out configure.in
-if ! test -f configure.in; then
- echo "copying configure.in"
- ln -s makefiles/configure.in .
-fi
-
-# move out the macros and run aclocal
-if test ! -f acinclude.m4 -a -r makefiles/acinclude.m4; then
- echo "copying configure macros"
- ln -s makefiles/acinclude.m4 .
-fi
-
-# copy up our Makefile template
-if ! test -f Makefile.am; then
- echo "copying automake template"
- ln -s makefiles/Makefile.am .
-fi
-
-echo "running aclocal"
-aclocal
-
-# libtool is named glibtool on MacOS X
-for LIBTOOLIZE in libtoolize glibtoolize nope; do
- ($LIBTOOLIZE --version) < /dev/null > /dev/null 2>&1 && break
-done
-if test x$LIBTOOLIZE = xnope; then
- echo "error: Could not find libtoolize in the path!"
- echo " You'll need to install a copy of libtool before continuing"
- echo " with the generation of the build system."
- echo
- exit 1
-fi
-
-echo "running $LIBTOOLIZE"
-$LIBTOOLIZE --automake
-
-echo "running automake"
-automake --foreign --add-missing
-
-echo "building configure script"
-autoconf
-
-# and finally invoke our new configure
-./configure $*
-
-# end
diff --git a/src/3rdparty/libpng/pngpriv.h b/src/3rdparty/libpng/pngpriv.h
index 9b90f26801..e248ad8bbe 100644
--- a/src/3rdparty/libpng/pngpriv.h
+++ b/src/3rdparty/libpng/pngpriv.h
@@ -179,9 +179,7 @@ typedef PNG_CONST png_uint_16p FAR * png_const_uint_16pp;
#if defined(WIN32) || defined(_Windows) || defined(_WINDOWS) || \
defined(_WIN32) || defined(__WIN32__)
-# if !defined(__SYMBIAN32__)
-# include <windows.h> /* defines _WINDOWS_ macro */
-# endif
+# include <windows.h> /* defines _WINDOWS_ macro */
#endif
/* Moved here around 1.5.0beta36 from pngconf.h */
diff --git a/src/3rdparty/libtiff.pri b/src/3rdparty/libtiff.pri
deleted file mode 100644
index e43e1feca2..0000000000
--- a/src/3rdparty/libtiff.pri
+++ /dev/null
@@ -1,43 +0,0 @@
-INCLUDEPATH += $$PWD/libtiff/libtiff
-SOURCES += \
- $$PWD/libtiff/libtiff/tif_aux.c \
- $$PWD/libtiff/libtiff/tif_close.c \
- $$PWD/libtiff/libtiff/tif_codec.c \
- $$PWD/libtiff/libtiff/tif_color.c \
- $$PWD/libtiff/libtiff/tif_compress.c \
- $$PWD/libtiff/libtiff/tif_dir.c \
- $$PWD/libtiff/libtiff/tif_dirinfo.c \
- $$PWD/libtiff/libtiff/tif_dirread.c \
- $$PWD/libtiff/libtiff/tif_dirwrite.c \
- $$PWD/libtiff/libtiff/tif_dumpmode.c \
- $$PWD/libtiff/libtiff/tif_error.c \
- $$PWD/libtiff/libtiff/tif_extension.c \
- $$PWD/libtiff/libtiff/tif_fax3.c \
- $$PWD/libtiff/libtiff/tif_fax3sm.c \
- $$PWD/libtiff/libtiff/tif_flush.c \
- $$PWD/libtiff/libtiff/tif_getimage.c \
- $$PWD/libtiff/libtiff/tif_luv.c \
- $$PWD/libtiff/libtiff/tif_lzw.c \
- $$PWD/libtiff/libtiff/tif_next.c \
- $$PWD/libtiff/libtiff/tif_open.c \
- $$PWD/libtiff/libtiff/tif_packbits.c \
- $$PWD/libtiff/libtiff/tif_pixarlog.c \
- $$PWD/libtiff/libtiff/tif_predict.c \
- $$PWD/libtiff/libtiff/tif_print.c \
- $$PWD/libtiff/libtiff/tif_read.c \
- $$PWD/libtiff/libtiff/tif_strip.c \
- $$PWD/libtiff/libtiff/tif_swab.c \
- $$PWD/libtiff/libtiff/tif_thunder.c \
- $$PWD/libtiff/libtiff/tif_tile.c \
- $$PWD/libtiff/libtiff/tif_version.c \
- $$PWD/libtiff/libtiff/tif_warning.c \
- $$PWD/libtiff/libtiff/tif_write.c \
- $$PWD/libtiff/libtiff/tif_zip.c
-
-wince*: SOURCES += $$PWD/../corelib/kernel/qfunctions_wince.cpp \
- $$PWD/libtiff/libtiff/tif_wince.c
-win32: SOURCES += $$PWD/libtiff/libtiff/tif_win32.c
-else: SOURCES += $$PWD/libtiff/libtiff/tif_unix.c
-symbian: SOURCES += $$PWD/libtiff/port/lfind.c
-
-include($$PWD/zlib_dependency.pri)
diff --git a/src/3rdparty/libtiff/COPYRIGHT b/src/3rdparty/libtiff/COPYRIGHT
deleted file mode 100644
index 8282186151..0000000000
--- a/src/3rdparty/libtiff/COPYRIGHT
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright (c) 1988-1997 Sam Leffler
-Copyright (c) 1991-1997 Silicon Graphics, Inc.
-
-Permission to use, copy, modify, distribute, and sell this software and
-its documentation for any purpose is hereby granted without fee, provided
-that (i) the above copyright notices and this permission notice appear in
-all copies of the software and related documentation, and (ii) the names of
-Sam Leffler and Silicon Graphics may not be used in any advertising or
-publicity relating to the software without the specific, prior written
-permission of Sam Leffler and Silicon Graphics.
-
-THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
-EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
-WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
-LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-OF THIS SOFTWARE.
diff --git a/src/3rdparty/libtiff/ChangeLog b/src/3rdparty/libtiff/ChangeLog
deleted file mode 100644
index 20cb7538fd..0000000000
--- a/src/3rdparty/libtiff/ChangeLog
+++ /dev/null
@@ -1,4426 +0,0 @@
-2009-11-04 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * libtiff 3.9.2 released.
-
-2009-11-03 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * tools/tiffcrop.c: Updated tiffcrop from Richard Nolde. This
- version has undergone substantial testing with arbitrary sample
- bit depths. Also eliminates GCC compilation warnings.
-
-2009-11-02 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * port/libport.h: Added header file for porting prototypes and
- extern declarations.
-
-2009-10-31 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * libtiff/tif_dirwrite.c (TIFFWriteAnyArray): Add missing break
- statement so writing an array of TIFF_DOUBLE works.
-
-2009-10-29 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * libtiff/tif_dirread.c: Eliminate GCC "dereferencing type-punned
- pointer" warnings.
-
-2009-10-28 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * html/tools.html: Add manual page links, and a summary
- description of tiffcrop.
-
-2009-10-07 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * configure.ac: x86_64 should use the same fill order as i386.
-
-2009-09-24 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * tools/tiffcrop.c, man/tiffcrop.1: New tiffcrop from Richard
- Nolde. Major updates to add significant functionality for reading
- and writing tile based images with bit depths not a multiple of 8
- which cannot be handled by tiffcp.
-
-2009-09-03 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * libtiff/tif_ojpeg.c (OJPEGWriteHeaderInfo): IJG JPEG 7 needs
- do_fancy_upsampling=FALSE in order to read raw data. Resolves
- "Bug 2090 - OJPEG crash with libjpeg v7".
- http://bugzilla.maptools.org/show_bug.cgi?id=2090
-
-2009-08-30 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * contrib/iptcutil/iptcutil.c,
- libtiff/tif_getimage.c,libtiff/tif_jpeg.c,libtiff/tif_ojpeg.c,tools/tiffcrop.c,tools/tiffgt.c:
- Applied patch from Oden Eriksson to allow building with GCC using
- the "-Wformat -Werror=format-security" flags.
-
-2009-08-28 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * libtiff 3.9.1 released.
-
-2009-08-28 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dirwrite.c: Back out changes from 2007-11-22 that
- resulted in the final strip not being written in some circumstances.
- http://bugzilla.maptools.org/show_bug.cgi?id=2088
-
-2009-08-27 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * libtiff/tif_write.c (TIFFAppendToStrip): Remove cast which
- caused libtiff to output a wrong last strip with byte-count and
- strip-offset of zero. This cast was added on the day of the 3.9.0
- release.
-
- * libtiff/tif_config.vc.h: tiffiop.h needs the TIFF_INT64_T and
- TIFF_UINT64_T defines in order to compile. Copy existing
- definitions from tiffconf.vc.h.
-
-2009-08-21 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * test/Makefile.am (AUTOMAKE_OPTIONS): Colorized tests was not
- actually activated since it needed to be enabled in this
- Makefile.am. Also activated parallel-tests mode since it offers
- useful features such as per-test .log files and a summary test
- report .log file.
-
-2009-08-20 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * libtiff 3.9.0 released.
-
- * libtiff/tif_print.c (TIFFPrintDirectory): Applied patch for "tag
- error may cause segfault in tif_print.c."
- http://bugzilla.maptools.org/show_bug.cgi?id=1896
-
- * tools/{rgb2ycbcr.c, tiff2rgba.c}: Applied patch for
- CVE-2009-2347 libtiff: integer overflows in various inter-color
- space conversion tools.
- http://bugzilla.maptools.org/show_bug.cgi?id=2079
-
- * configure.ac: Updated autotools. Autoconf 2.64, Automake 1.11,
- libtool 2.2.6. Enabled support for silent build rules
- (--enable-silent-rules or 'make V=0') and colorized tests.
-
-2009-06-30 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_luv.c: correct return codes from encoderow to be
- 1 on success instead of zero.
- http://bugzilla.maptools.org/show_bug.cgi?id=2069
-
-2009-06-22 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_lzw.c: Fix buffer underflow bug.
- http://bugzilla.maptools.org/show_bug.cgi?id=2065
-
-2009-06-03 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_write.c: do not override the planar configuration to be
- contig for one sample files if planar configuration is already set.
- http://bugzilla.maptools.org/show_bug.cgi?id=2057
-
-2009-02-12 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_luv.c: Fix handling of tiled logluv images.
- http://bugzilla.maptools.org/show_bug.cgi?id=2005
-
-2009-01-23 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_predict.c: Add support for 32bit integer horz. predictors.
- http://bugzilla.maptools.org/show_bug.cgi?id=1911
-
-2009-01-20 Frank Warmerdam <warmerdam@pobox.com>
-
- * tools/tiffsplit.c: fix sampleformat to be shortv instead of longv.
-
-2009-01-12 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * tools/tiff2ps.c: Remove spurious message printed to stderr.
-
-2009-01-11 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * tools/tiff2ps.c: Incorporated significant functionality update
- from Richard Nolde. In particular, support for rotating the image
- by 90, 180, 270, and 'auto' has been added.
-
- * tools/tiffcrop.c: Incorporated significant functionality update
- from Richard Nolde.
-
-2009-01-06 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * libtiff/tiffiop.h: Add private type declarations for int64, and
- uint64 so that bundled utilities (like tiffcrop) can use it when
- necessary.
-
-2009-01-01 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * configure.ac: Updated to test for 64-bit types. This version of
- the library does not require a 64-bit type, but tiffcrop needs it.
-
-2008-12-31 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * Update to use current FSF autotools versions.
- * libtiff/tiffio.h: GCC will now validate format specifications
- for TIFFError(), TIFFErrorExt(), TIFFWarning(), and
- TIFFWarningExt() in order to reveal bugs. Cleaned up resulting
- warnings throughout for 32 bit build only.
-
-2008-12-31 Frank Warmerdam <warmerdam@pobox.com>
-
- * tools/tiffcrop.c, man/tiffcrop.1: A major update from Richard
- Nolde.
-
-2008-12-21 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_jpeg.c: Avoid errors if the application writes a full
- strip for the last partial strip in a jpeg compressed file.
- http://bugzilla.maptools.org/show_bug.cgi?id=1981
-
-2008-12-21 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_getimage.c, tiffio.h: More ABI corrections.
- Removed SubsamplingHor/Ver from TIFFRGBAImage structure.
- http://bugzilla.maptools.org/show_bug.cgi?id=1980
-
-2008-12-18 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_getimage.c,tiffio.h: removed all use of UaToAa and
- Bitmap16to8 arrays in TIFFRGBAImage structure to restore ABI
- compatability. These were just an attempt to speed up processing
- with precalculated tables.
- http://bugzilla.maptools.org/show_bug.cgi?id=1979
-
- * libtiff/tif_codec.c: Avoid printing c->name if it does not exist.
-
-2008-10-21 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_jbig.c: Support the JBIG-KIT 2.0 (compatibility with
- the older versions retained).
-
-2008-09-05 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffsplit.c: Use dynamically allocated array instead of static
- when constructing output file names.
-
-2008-09-03 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffsplit.c: Get rid of unsafe strcpy()/strcat() calls when
- doing the filename/path construction.
-
- * tools/tiff2pdf.c: More appropriate format string in
- t2p_write_pdf_string(); avoid signed/unsigned mismatch.
-
- * libtiff/tif_lzw.c: Properly zero out the codetable. As per bug
-
- http://bugzilla.maptools.org/show_bug.cgi?id=1929
-
- * libtiff/tif_lzw.c: Properly zero out the string table. Fixes
- CVE-2008-2327 security issue.
-
-2008-05-24 Frank Warmerdam <warmerdam@pobox.com>
-
- * tif_codec.c: Avoid NULL pointer dereferencing for exotic
- compression codec codes.
-
- * tif_dirread.c: zero tif->tif_dir after freeing the directory
- in TIFFReadCustomDirectory(). I don't exactly remember why this
- was important.
-
- * tif_dirwrite.c: Fix potential memory leak writing large double
- tags.
-
- * tif_dirread.c: Fix unchecked malloc result.
-
-2008-01-30 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tif_fax3.c: Make find0span() and find1span() non-inline to
- make MSVC 6.0 compiler happy.
-
-2007-11-26 Frank Warmerdam <warmerdam@pobox.com>
-
- * tif_fax3.c: fix leak of FAXCS state (per bug 1603).
-
-2007-11-23 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * configure.com, libtiff/tif_vms.c: Better OpenVMS support. Patches
- from Alexey Chupahin.
-
-2007-11-22 Frank Warmerdam <warmerdam@pobox.com>
-
- * tif_write.c: Rip out the fancy logic in TIFFAppendToStrip() for
- establishing if an existing tile can be rewritten to the same location
- by comparing the current size to all the other blocks in the same
- directory. This is dangerous in many situations and can easily
- corrupt a file. (observed in esoteric GDAL situation that's hard to
- document). This change involves leaving the stripbytecount[] values
- unaltered till TIFFAppendToStrip(). Now we only write a block back
- to the same location it used to be at if the new data is the same
- size or smaller - otherwise we move it to the end of file.
-
- * tif_dirwrite.c: Try to avoid writing out a full readbuffer of tile
- data when writing the directory just because we have BEENWRITING at
- some point in the past. This was causing odd junk to be written out
- in a tile of data when a single tile had an interleaving of reading
- and writing with reading last. (highlighted by gdal
- autotest/gcore/tif_write.py test 7.
-
- * tif_predict.c: use working buffer in PredictorEncodeTile to avoid
- modifying callers buffer.
- http://trac.osgeo.org/gdal/ticket/1965
-
- * tif_predict.c/h, tif_lzw.c, tif_zip.c: Improvements so that
- predictor based encoding and decoding works in read-write update
- mode properly.
- http://trac.osgeo.org/gdal/ticket/1948
-
-2007-10-05 Frank Warmerdam <warmerdam@pobox.com>
-
- * tools/tiff2pdf.c: Fixed setting of alpha value per report on list.
-
-2007-09-13 Frank Warmerdam <warmerdam@pobox.com>
-
- * tif_dirinfo.c: _TIFFMergeFields() now only merges in field
- definitions that are missing. Existing definitions are silently
- ignored. (Bug #1585)
-
-2007-07-18 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{Makefile.am, Makefile.v}: Do not distribute tiffconf.h,
- remove tif_config.h/tiffconf.h during cleaning. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1573
-
-2007-07-13 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff 3.9.0beta released.
-
-2007-07-12 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2pdf.c: Added missed extern optind as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1567
-
-2007-07-03 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2ps.c: Added support 16-bit images as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1566
-
- Patch from William Bader.
-
- * tools/tiff2pdf.c: Fix for TIFFTAG_JPEGTABLES tag fetching and
- significant upgrade of the whole utility as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1560
-
- Now we don't need tiffiop.h in tiff2pdf anymore and will open output
- PDF file using TIFFClientOpen() machinery as it is implemented
- by Leon Bottou.
-
-2007-06-29 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * libtiff/tif_dirinfo.c (_TIFFFindFieldInfo): Don't attempt to
- bsearch() on a NULL fieldinfo list.
- (_TIFFFindFieldInfoByName): Don't attempt to
- lfind() on a NULL fieldinfo list.
-
-2007-05-01 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirwrite.c: Fixed problem introduced with a fix for a
- byte swapping issue
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1363
-
- As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1550
-
-2007-04-27 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2pdf.c: Check the tmpfile() return status as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=154
-
-2007-04-07 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_dir.h, tif_dirread.c, tif_dirinfo.c, tif_jpeg.c,
- tif_fax3.c, tif_jbig.c, tif_luv.c, tif_ojpeg.c, tif_pixarlog.c,
- tif_predict.c, tif_zip.c}: Finally fix bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1274
-
- by introducing _TIFFMergeFieldInfo() returning integer error status
- instead of void in case of problems with field merging (e.g., if the
- field with such a tag already registered). TIFFMergeFieldInfo() in
- public API remains void. Use _TIFFMergeFieldInfo() everywhere and
- check returned value.
-
-2007-04-07 Frank Warmerdam <warmerdam@pobox.com>
-
- * contrib/addtiffo/tif_overview.c: Fix problems with odd sized output
- blocks in TIFF_DownSample_Subsampled() (bug 1542).
-
-2007-04-06 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_jpeg.c: Changed JPEGInitializeLibJPEG() so that it
- will convert from decompressor to compressor or compress to decompress
- if required by the force arguments. This works around a problem in
- where the JPEGFixupTestSubsampling() may cause a decompressor to
- be setup on a directory when later a compressor is required with the
- force flag set. Occurs with the addtiffo program for instance.
-
-2007-04-06 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirwrite.c: Fixed swapping of byte arrays stored
- in-place in tag offsets as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1363
-
- * tools/tiffcrop.c, man/tiffcrop.1: Significant update in
- functionality from Richard Nolde. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1525
-
-2007-03-28 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_fax3.c: "inline static" -> "static inline" for IRIC CC.
-
-2007-03-07 Joris Van Damme <joris.at.lebbeke@skynet.be>
-
- * libtiff/tif_getimage.c: workaround for 'Fractional scanline' error reading
- OJPEG images with rowsperstrip that is not a multiple of vertical subsampling
- factor. This bug is mentioned in:
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1390
- http://www.asmail.be/msg0054766825.html
-
-2007-03-07 Joris Van Damme <joris.at.lebbeke@skynet.be>
-
- * libtiff/tif_win32.c: made inclusion of windows.h unconditional
-
- * libtiff/tif_win32.c: replaced preprocessor indication for consiously
- unused arguments by standard C indication for the same
-
-2007-02-27 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirread.c: Use uint32 type instead of tsize_t in byte
- counters in TIFFFetchData(). Should finally fix the issue
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=890
-
-2007-02-24 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffset.c: Properly handle tags with TIFF_VARIABLE writecount.
- As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1350
-
- * libtiff/tif_dirread.c: Added special function to handle
- SubjectDistance EXIF tag as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1362
-
- * tools/tiff2pdf.c: Do not assume inches when the resolution units
- do not specified. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1366
-
- * tools/{tiffcp.c, tiffcrop.c}: Do not change RowsPerStrip value if
- it was set as infinite. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1368
-
- * tools/tiffcrop.c, man/tiffcrop.1: New tiffcrop utility contributed
- by Richard Nolde. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1383
-
-2007-02-22 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dir.c: Workaround for incorrect TIFFs with
- ExtraSamples == 999 produced by Corel Draw. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1490
-
- * libtiff/{tif_dirread.c, tif_read.c}: Type of the byte counters
- changed from tsize_t to uint32 to be able to work with data arrays
- larger than 2GB. Fixes bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=890
-
- Idea submitted by Matt Hancher.
-
-2007-01-31 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tif2rgba.c: This utility does not work properly on big-endian
- architectures. It was fixed including the bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1149
-
-2007-01-15 Mateusz Loskot <mateusz@loskot.net>
-
- * Submitted libtiff port for Windows CE platform
- * libtiff/tif_config.wince.h: Added configuration header for WinCE.
- * libtiff/tiffconf.wince.h: Ported old configuration header for WinCE.
- * libtiff/tif_wince.c: Added WinCE-specific implementation of some
- functons from tif_win32.c.
- * libtiff/tif_win32.c: Disabled some functions already reimplemented in tif_wince.c.
- * libtiff/tiffiop.h, port/lfind.c: Added conditional include of some
- standard header files for Windows CE build.
- * tools/tiffinfoce.c: Ported tiffinfo utility for Windows CE.
-
-2006-11-19 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_write.c: TIFFAppendToStrip() - clear sorted flag if
- we move a strip.
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1359
-
-2006-10-13 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dir.c: More fixes for vulnerabilities, reported
- in Gentoo bug ():
-
- http://bugs.gentoo.org/show_bug.cgi?id=142383
-
- * libtiff/contrib/dbs/xtiff/xtiff.c: Make xtiff utility compilable.
- Though it is still far from the state of being working and useful.
-
-2006-10-12 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_fax3.c: Save the state of printdir codec dependent
- method.
-
- * libtiff/tif_jpeg.c: Save the state of printdir codec dependent method
- as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1273
-
- * libtiff/tif_win32.c: Fixed problem with offset value manipulation
- as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1322
-
- * libtiff/{tif_read.c, tif_jpeg.c, tif_dir.c}: More fixes for
- vulnerabilities, reported in Gentoo bug ():
-
- http://bugs.gentoo.org/show_bug.cgi?id=142383
-
-2006-09-28 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_fax3.c, tif_next.c, tif_pixarlog.c}: Fixed multiple
- vulnerabilities, as per Gentoo bug ():
-
- http://bugs.gentoo.org/show_bug.cgi?id=142383
-
-2006-09-27 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_lzw.c, libtiff/tif_zip.c: Fixed problems with mixing
- encoding and decoding on the same read-write TIFF handle. The LZW
- code can now maintain encode and decode state at the same time. The
- ZIP code will switch back and forth as needed.
- http://bugzilla.remotesensing.org/show_bug.cgi?id=757
-
-2006-09-20 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff: Rename config.h.vc and tif_config.h.vc to config.vc.h and
- tif_config.vc.h for easier identification by folks using an IDE.
-
-2006-07-25 Frank Warmerdam <warmerdam@pobox.com>
-
- * tif_msdos.c: Avoid handle leak for failed opens. c/o Thierry Pierron
-
-2006-07-19 Frank Warmerdam <warmerdam@pobox.com>
-
- * tif_dirwrite.c: take care not to flush out buffer of strip/tile
- data in _TIFFWriteDirectory if TIFF_BEENWRITING not set. Relates
- to bug report by Peng Gao with black strip at bottom of images.
-
-2006-07-12 Frank Warmerdam <warmerdam@pobox.com>
-
- * tif_dirwrite.c: make sure to use uint32 for wordcount in
- TIFFWriteNormanTag if writecount is VARIABLE2 for ASCII fields.
- It already seems to have been done for other field types. Needed
- for "tiffset" on files with geotiff ascii text.
-
-2006-07-04 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * {configure.ac, libtiff/tif_config.h.vc, libtiff/tif_jbig.c}
- (JBIGDecode): jbg_newlen is not available in older JBIG-KIT and
- its use does not appear to be required, so use it only when it is
- available.
-
-2006-06-24 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirinfo.c: Added missed EXIF tag ColorSpace (40961).
-
- * libtiff/tif_dirread.c: Move IFD fetching code in the separate
- function TIFFFetchDirectory() avoiding code duplication in
- TIFFReadDirectory() and TIFFReadCustomDirectory().
-
-2006-06-19 Frank Warmerdam <warmerdam@pobox.com>
-
- * tools/tiff2pdf.c: Fix handling of -q values.
- http://bugzilla.remotesensing.org/show_bug.cgi?id=587
-
-2006-06-17 Frank Warmerdam <warmerdam@pobox.com>
-
- * tif_readdir.c: Added case in EstimateStripByteCounts() for tiled
- files. Modified TIFFReadDirectory() to not invoke
- EstimateStripByteCounts() for case where entry 0 and 1 are unequal
- but one of them is zero.
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1204
-
-2006-06-08 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_open.c, tif_dirread.c, tiffiop.h}: Move IFD looping
- checking code in the separate function TIFFCheckDirOffset().
-
- * libtiff/tif_aux.c: Added _TIFFCheckRealloc() function.
-
- * tools/tiffcmp.c: Fixed floating point comparison logic as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1191
-
- * libtiff/tif_fax3.c: Fixed problems in fax decoder as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1194
-
- * tools/tiff2pdf.c: Fixed buffer overflow condition in
- t2p_write_pdf_string() as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1196
-
-2006-06-07 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * {configure, configure.ac, libtiff/tif_jbig.c, tools/tiffcp.c}: Added
- support for JBIG compression scheme (34661 code) contributed by Lee
- Howard. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=896
-
- * configure, configure.ac: OJPEG support enabled by default.
-
- * contrib/ojpeg/: Removed. New OJPEG support does not need this patch.
-
-2006-06-03 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * libtiff/{tif_dirinfo.c, tif_print.c} : Fix crash in
- TIFFPrintDirectory(). Joris Van Damme authored the fix.
-
-2006-04-21 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2pdf.c: Unified line ending characters (always use '\n')
- as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1163
-
- * README.vms, Makefile.am, configure.com, libtiff/{Makefile.am,
- tif_config.h-vms, tif_stream.cxx, tif_vms.c, tiffconf.h-vms}:
- Added support for OpenVMS by Alexey Chupahin, elvis_75@mail.ru.
-
-2006-04-20 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/{fax2ps.c, fax2tiff.c, ppm2tiff.c, ras2tiff.c, tiff2pdf.c}:
- Properly set the binary mode for stdin stream as per bug
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1141
-
- * man/{bmp2tiff.1, fax2ps.1, fax2tiff.1, gif2tiff.1, ras2tiff.1,
- raw2tiff.1, rgb2ycbcr.1, sgi2tiff.1, tiff2bw.1, tiff2pdf.1, tiff2ps.1,
- tiff2rgba.1, tiffcmp.1, tiffcp.1, tiffdither.1, tiffdump.1, tiffgt.1,
- tiffset.1}: Improvements in page formatting as per bug
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1140
-
- * html/tools.html, html/man/Makefile.am, tools/tiff2pdf.c: Fixed
- typos as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1139
-
-2006-04-18 Frank Warmerdam <warmerdam@pobox.com>
-
- * nmake.opt: use /EHsc for VS2005 compatibility. Also define
- _CRT_SECURE_NO_DEPRECATE to avoid noise on VS2005.
-
-2006-04-12 Joris Van Damme <joris.at.lebbeke@skynet.be>
-
- * libtiff/tif_getimage.c: Added support for planarconfig separate
- non-subsampled YCbCr (i.e. separate YCbCr with subsampling [1,1])
-
-2006-04-11 Joris Van Damme <joris.at.lebbeke@skynet.be>
-
- * libtiff/tif_getimage.c: Revision of all RGB(A) put routines
- - Conversion of unassociated alpha to associated alpha now done with
- more performant LUT, and calculation more correct
- - Conversion of 16bit data to 8bit data now done with
- more performant LUT, and calculation more correct
- - Bugfix of handling of 16bit RGB with unassociated alpha
-
-2006-04-11 Joris Van Damme <joris.at.lebbeke@skynet.be>
-
- * libtiff/tif_getimage.c:
- - When there is no alpha, gtTileSeparate and gtStripSeparate allocated
- buffer for alpha strile and filled it, only to never read it back.
- Removed allocation and fill.
- - Minor rename of vars in gtTileSeparate and gtStripSeparate
- anticipating planned functionality extension
-
-2006-04-08 Joris Van Damme <joris.at.lebbeke@skynet.be>
-
- * libtiff/tif_getimage.c: renamed pickTileContigCase to PickContigCase
- and pickTileSeparateCase to PickSeparateCase as both work on strips as
- well
-
- * libtiff/tif_getimage.c: moved img->get selection from
- TIFFRGBAImageBegin into PickContigCase and PickSeparateCase to create
- logical hook for planned functionality extension
-
-2006-04-08 Joris Van Damme <joris.at.lebbeke@skynet.be>
-
- * libtiff/tif_ojpeg.c: resolved memory leak that was a consequence
- of inappropriate use of jpeg_abort instead of jpeg_destroy
-
-2006-04-07 Joris Van Damme <joris.at.lebbeke@skynet.be>
-
- * libtiff/tif_getimage.c: replaced usage of TIFFScanlineSize in
- gtStripContig with TIFFNewScanlineSize so as to fix buggy behaviour
- on subsampled images - this ought to get sorted when we feel brave
- enough to replace TIFFScanlineSize alltogether
-
- * libtiff/tif_ojpeg.c: fixed bug in OJPEGReadSkip
-
-2006-04-04 Joris Van Damme <joris.at.lebbeke@skynet.be>
-
- * libtiff/tiffio.h: added new type tstrile_t
-
- * libtiff/tif_dir.h: changed types of td_stripsperimage and td_nstrips
- to new tstrile_t, types of td_stripoffset and td_stripbytecount to
- toff_t*
-
- * libtiff/tif_ojpeg.c: totally new implementation
-
- * libtiff/tif_dirread.c: added several hacks to suit new support of
- OJPEG
-
- * libtiff/tif_getimage.c: removed TIFFTAG_JPEGCOLORMODE handling
- of OJPEG images in favor of tif_getimage.c native handling of
- YCbCr and desubsampling
-
-2006-03-29 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_jpeg.c: JPEGVSetField() so that altering the photometric
- interpretation causes the "upsampled" flag to be recomputed. Fixes
- peculiar bug where photometric flag had to be set before jpegcolormode
- flag.
-
-2006-03-25 Joris Van Damme <joris.at.lebbeke@skynet.be>
-
- * libtiff/tif_jpeg.c: strip size related bugfix in encode raw
-
- * libtiff/tif_strip.c: temporarilly added two new versions of
- TIFFScanlineSize
- - TIFFNewScanlineSize: proposed new version, after all related
- issues and side-effects are sorted out
- - TIFFOldScanlineSize: old version, from prior to 2006-03-21 change
- This needs further sorting out.
-
-2006-03-25 Joris Van Damme <joris.at.lebbeke@skynet.be>
-
- * contrib/addtiffo/tif_ovrcache.c: bugfix to correctly pass size
- of last truncated strip data to TIFFWriteEncodedStrip
-
-2006-03-25 Joris Van Damme <joris.at.lebbeke@skynet.be>
-
- * libtiff/{tif_jpeg.c, tif_strip.c}: bugfix of tif_jpeg decode raw
-
-2006-03-25 Joris Van Damme <joris.at.lebbeke@skynet.be>
-
- * libtiff/tif_getimage.c: bugfix/rewrite of putcontig8bitYCbCr22tile
-
- * libtiff/tif_getimage.c: added putcontig8bitYCbCr12tile
-
- * libtiff/tif_read.c: added support for new TIFF_NOREADRAW flag to
- prepare the path for new tif_ojpeg.c
-
-2006-03-23 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff 3.8.2 released.
-
- * tools/Makefile.am: Use runtime paths linker flags when rpath
- option enabled.
-
-2006-03-21 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/libtiff.def: Added missed exports as per bug
- http://bugzilla.remotesensing.org/attachment.cgi?id=337
-
- * contrib/addtiffo/Makefile.vc, libtiff/Makefile.vc, port/Makefile.vc,
- tools/Makefile.vc: Makefiles improvements as per bug
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1128
-
- * nmake.opt libtiff/{tif_config.h.vc, tif_unix.c, tiffio.h},
- tools/{fax2ps.c, fax2tiff.c, tiff2pdf.c}: Fixed win32 I/O functions
- usage as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1127
-
- * libtiff/tif_strip.c: Take subsampling in account when calculating
- TIFFScanlineSize().
-
- * tools/tiffcp.c: Do not set RowsPerStrip bigger than image length.
-
-2006-03-17 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/fax2tiff.c: Fixed wrong TIFFerror() invocations as per bug
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1125
-
- * tools/fax2ps.c: Fixed reading the input stream from stdin as per bug
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1124
-
-2006-03-16 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tiffiop.h: Added decalration for
- _TIFFSetDefaultCompressionState().
-
- * libtiff/{tif_jpeg.c, tif_fax3.c, tif_zip.c, tif_pixarlog.c,
- tif_lzw.c, tif_luv.c}: Use _TIFFSetDefaultCompressionState() in all
- codec cleanup methods. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1120
-
-2006-03-15 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_jpeg.c: Do not cleanup codec state in TIFFInitJPEG(). As
- per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1119
-
- * tools/raw2tiff.c: Do not set RowsPerStrip larger than ImageLength.
- As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1110
-
- * libtiff/tiffiop.h: dblparam_t typedef removed; GLOBALDATA macro
- removed; move here the STRIP_SIZE_DEFAULT macro definition.
-
- * libtiff/{tif_dirread.c, tif_strip.c}: Removed STRIP_SIZE_DEFAULT
- macro definition.
-
- * libtiff/tif_dir.c: Use double type instead of dblparam_t.
-
-2006-03-14 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirread.c: Do not check the PlanarConfig tag presence
- in TIFFReadDirectory, because it is always set at the start of
- function and we allow TIFFs without that tag set.
-
-2005-03-13 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff 3.8.1 released.
-
-2006-03-07 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirread.c: Fixed error reporting in TIFFFetchAnyArray()
- function as per bug
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1102
-
- * libtiff/tif_dirread.c: More wise check for integer overflow
- condition as per bug
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1102
-
- * libtiff/{tif_jpeg.c, tif_pixarlog.c, tif_fax3.c, tif_zip.c}:
- Properly restore setfield/getfield methods in cleanup functions. As
- per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1102
-
-2006-03-03 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_predict.c, tif_predict.h}: Added new function
- TIFFPredictorCleanup() to restore parent decode/encode/field methods.
-
- * libtiff/{tif_lzw.c, tif_pixarlog.c, tif_zip.c}: Use
- TIFFPredictorCleanup() in codec cleanup methods. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1102
-
- * libtiff/tif_dirread.c: Fixed integer overflow condition in
- TIFFFetchData() function. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1102
-
-2006-03-01 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_ojpeg.c: Set the ReferenceBlackWhite with the
- TIFFSetField() method, not directly. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1043
-
- * tools/ppm2tiff.c: Added support for PBM files as per bug
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1044
-
-2006-02-27 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_write.c: Small code rearrangement in TIFFWriteScanline()
- to avoid crash as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1081.
-
-2006-02-26 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2pdf.c: Functions t2p_sample_rgbaa_to_rgb() and
- t2p_sample_rgba_to_rgb() was used in place of each other, that was
- resulted in problems with RGBA images with associated alpha.
- As per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1097
-
-2006-02-23 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirwrite.c: Properly write TIFFTAG_DOTRANGE tag as per
- bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1088.
-
- * libtiff/tif_print.c: Properly read TIFFTAG_PAGENUMBER,
- TIFFTAG_HALFTONEHINTS, TIFFTAG_YCBCRSUBSAMPLING and TIFFTAG_DOTRANGE
- tags as per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1088.
-
- * tools/tiff2ps.c: Properly scale all the pages when converting
- multipage TIFF with /width/height/center options set. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1080
-
-2006-02-15 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2pdf.c: Do not create output file until all option checks
- will be done. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1072
-
- * tools/bmp2tiff.c: Added ability to create multipage TIFFs from the
- list of input files as per bug:
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1077
-
-2006-02-09 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_tile.c: Fix error reporting in TIFFCheckTile() as per
- bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1063.
-
- * tools/tiffgt.c: Avoid crashing in case of image unsupported by
- TIFFRGBAImage interface.
-
- * libtiff/tif_color.c: Avoid overflow in case of wrong input as per
- bug http://bugzilla.remotesensing.org/show_bug.cgi?id=1065.
-
-2006-02-07 Frank Warmerdam <warmerdam@pobox.com>
-
- * tools/tiff2pdf.c: Fixed support for non-YCbCr encoded JPEG
- compressed TIFF files, per submission from Dan Cobra.
-
-2006-02-07 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_dirread.c, tif_packbits.c, tif_win32.c}: Properly
- cast values to avoid warnings. As per bug
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1033.
-
- * libtiff/tif_dirinfo.c: Use TIFF_NOTYPE instead of 0 when
- appropriate. As per bug
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1033.
-
- * libtiff/tif_aux.c: Fixed type of temporary variable in
- _TIFFCheckMalloc() as per bug
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1033.
-
-2006-02-06 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_aux.c: Return static array when fetching default
- YCbCrCoefficients (another problem, reported a the
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1029 entry).
-
-2006-02-03 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dir.c: Special handling for PageNumber, HalftoneHints,
- YCbCrSubsampling and DotRange tags as per bugs
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1029
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1034
-
- * libtiff/tif_dirread.c: Use _TIFFGetExifFieldInfo() instead of
- _TIFFGetFieldInfo() in TIFFReadEXIFDirectory() call as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1026.
-
-2006-01-23 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtool related stuff updated from the 2.1a branch.
-
-2006-01-11 Frank Warmerdam <warmerdam@pobox.com>
-
- * tools/bmp2tiff,pal2rgb,ppm2tiff,ras2tiff,raw2tiff,sgi2tiff,
- tiff2bw,tiffcp: Fixed jpeg option processing so -c jpeg:r:50 works
- properly as per bug:
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1025
-
-2006-01-09 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * configure.ac: Fix with_default_strip_size comparison as reported
- by Norihiko Murase.
-
-2006-01-08 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * test/Makefile.am (LIBTIFF): Due to linking against libtiff
- incorrectly, tests were not actually testing the uninstalled
- libtiff. Now they are.
-
-2006-01-04 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirinfo.c: Change definitions for TIFFTAG_ICCPROFILE,
- TIFFTAG_PHOTOSHOP, TIFFTAG_RICHTIFFIPTC, TIFFTAG_XMLPACKET: readcount
- should be uint32 value.
-
-2006-01-02 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * html/man/Makefile.am (htmldoc): Fix htmldoc rule so that it can
- be used if build directory is not the same as source directory.
- * man/{TIFFGetField.3tiff, TIFFSetField.3tiff}: Documented
- TIFFTAG_PHOTOSHOP, TIFFTAG_RICHTIFFIPTC, and TIFFTAG_XMLPACKET,
- and re-sorted tag names in alphabetical order.
-
-2005-12-29 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff 3.8.0 released.
-
-2005-12-28 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * tools/bmp2tiff.c (main): Fixed warning regarding returning
- inconsistent types from a condition.
- * tools/tiffcmp.c (CheckLongTag): Eliminate warning due to printf
- format.
- * tools/bmp2tiff.c: Reduce compilation warnings on big-endian CPUs.
-
-2005-12-28 Joris Van Damme <joris.at.lebbeke@skynet.be>
-
- * html/{index.html, support.hml, libtiff.html}: Cleaned up HTML
-
-2005-12-27 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tiffio.h: Added VC_EXTRALEAN definition before including
- windows.h, to reduce the compile time.
-
-2005-12-26 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * libtiff/tif_jpeg.c: Improve compilation under MinGW.
-
-2005-12-26 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_dir.c, tif_dir.h, tif_dirread.c, tif_dirinfo.c}:
- tiffFieldInfo and exifFieldInfo arrays definitions moved back to
- tif_dirinfo.c; added _TIFFGetFieldInfo() and _TIFFGetExifFieldInfo()
- private functions to retrieve FieldInfo arrays.
-
-2005-12-24 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * html/build.html: Added some additional instructions for when
- building using MSVC under Windows. Also fixed two HTML syntax
- errors and used HTML Tidy to tidy up the HTML syntax and
- formatting.
-
-2005-12-24 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_aux.c, tif_dir.c, tif_dir.h, tif_dirwrite.c,
- tif_print.c, tif_getimage.c}: Make InkSet, NumberOfInks, DotRange and
- StoNits tags custom.
-
-2005-12-23 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_aux.c, tif_dir.c, tif_dir.h, tif_print.c}: Make
- WhitePoint tag custom.
-
- * libtiff/{tif_dir.h, tiff.h}: More EXIF tags added.
-
-2005-12-23 Joris Van Damme <joris.at.lebbeke@skynet.be>
-
- * libtiff/tiffio.h: fixed typo that potentially resulted in
- redefininition of USE_WIN32_FILEIO
-
- * libtiff/*: Added more 'dual-mode' error handling: Done TIFFWarning
- calls in core LibTiff.
-
-2005-12-21 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_dir.c, tif_dir.h, tif_print.c}: Make RichTIFFIPTC,
- Photoshop and ICCProfile tags custom.
-
-2005-12-21 Joris Van Damme <joris.at.lebbeke@skynet.be>
-
- * libtiff/*, contrib/*: Added 'dual-mode' error handling, enabling
- newer code to get context indicator in error handler and still
- remain compatible with older code: Done TIFFError calls everywhere
- except in tools
-
-2005-12-20 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffcp.c: Added many error reporting messages; fixed integer
- overflow as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=789
-
-2005-12-16 Frank Warmerdam <warmerdam@pobox.com>
-
- * contrib/addtiffo/*: Major upgrade by Joris to support subsampled
- YCbCr images in jpeg compressed TIFF files.
-
-2005-12-14 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffcp.c: Return non-zero status when reading fails (again).
-
-2005-12-13 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffcp.c: Return non-zero status when reading fails.
-
-2005-12-12 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_dir.h, tiff.h}: Added more EXIF tags.
-
-2005-12-09 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_dir.c, tif_dir.h, tif_print.c}: Make XMLPacket tag
- custom.
-
- * tools/tiffinfo.c: Print EXIF directory contents if exist.
-
- * libtiff/tiff.h: Few EXIF tag numbers added.
-
- * libtiff/{tif_dirinfo.c, tif_dirread.c, tif_dir.h, tif_dir.c,
- tiffio.h}: Preliminary support to read custom directories. New
- functions: TIFFReadCustomDirectory() and TIFFReadEXIFDirectory().
-
-2005-12-07 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_dirinfo.c, tif_dirread.c, tif_dir.h, tif_dir.c}:
- More work to implement custom directory read support.
-
- * libtiff/{tif_aux.c, tif_dirinfo.c, tif_dirread.c, tif_dir.h,
- tif_dir.c, tif_print.c}: Make YCbCrCoefficients and ReferenceBlackWhite
- tags custom.
-
-2005-12-05 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirread.c: One more workaround for broken
- StripByteCounts tag. Handle the case when StripByteCounts array filled
- with completely wrong values.
-
-2005-11-30 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirinfo.c: Release file descriptor in case of failure
- in the TIFFOpenW() function as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1003
-
- * libtiff/tif_dirinfo.c: Correctly yse bsearch() and lfind()
- functions as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1008
-
-2005-11-20 Frank Warmerdam <warmerdam@pobox.com>
-
- * tif_open.c, tiff.h, tiffdump.c: Incorporate preliminary support
- for MS MDI format.
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1002
-
- * .cvsignore: many files added, and a few update according
- to suggestion of Brad HArds on tiff mailing list.
-
-2005-11-03 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/libtiff.def, tiffiop.h, tiffio.h: Made TIFFFreeDirectory
- public.
-
-2005-10-31 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/fax2tiff.c: Properly calculate sizes of temporary arrays
- as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=943
-
- * tools/fax2tiff.c: Added option '-r' to set RowsPerStrip parameter
- as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=944
-
- * tools/tiffdump.c: Fixed typeshift and typemask arrays initialization
- problem as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=946
-
- * tools/bmp2tiff.c: Fixed possible integer overflow error as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=965
-
- * libtiff/tif_dirinfo.c: Make XResolution, YResolution and
- ResolutionUnit tags modifiable during write process. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=977
-
- * tools/tiffsplit.c: Copy fax related fields over splitted parts
- as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=983
-
-2005-10-21 Frank Warmerdam <warmerdam@pobox.com>
-
- * tif_dirread.c: Don't try and split single strips into "0" strips
- in ChopUpSingleUncompressedStrip. This happens in some degenerate
- cases (like 1x1 files with stripbytecounts==0 (gtsmall.jp2 embed tiff)
-
-2005-10-20 Joris Van Damme <joris.at.lebbeke@skynet.be>
-
- * tif_fax3.c: changed 'at scanline ...' style warning/errors
- with incorrect use of tif_row, to 'at line ... of
- strip/tile ...' style
-
-2005-10-15 Frank Warmerdam <warmerdam@pobox.com>
-
- * tif_write.c: fixed setting of planarconfig as per bug report
- on the mailing list from Joris.
-
-2005-10-07 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * configure.ac, configure, nmake.opt, libtiff/{tif_config.h,
- tif_dirread.c}: Make the default strip size configurable via the
- --with-default-strip-size and STRIP_SIZE_DEFAULT options.
-
-2005-09-30 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * html/support.html: Fixed link to documentation on Greg Ward's
- LogLuv TIFF format.
-
-2005-09-28 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffdump.c: Fixed crash when reading malformed tags.
-
-2005-09-20 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2pdf.c: Added missed 'break' statement as per bug
- http://bugzilla.remotesensing.org/show_bug.cgi?id=932
-
-2005-09-12 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff 3.7.4 released.
-
- * {configure, configure.ac, Makefile.am, autogen.sh}: Applied patch
- from Patrick Welche (all scripts moved in the 'config' and 'm4'
- directories).
-
-2005-09-12 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_open.c: reintroduce seek to avoid problem on solaris.
-
-2005-09-05 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dir.c: When prefreeing tv->value in TIFFSetFieldV
- also set it to NULL to avoid double free when re-setting custom
- string fields as per:
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=922
-
-2005-08-12 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_print.c: avoid signed/unsigned warning.
-
- * libtiff/tif_dirread.c: removed unused variable.
-
-2005-07-30 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dir.c: Fixed up support for swapping "double complex"
- values (128 bits as 2 64 bits doubles). GDAL gcore tests now
- pass on bigendian (macosx) system.
-
-2005-07-28 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_aux.c, tif_dirread.c, tif_fax3.c, tiffiop.h}: Rename
- CheckMalloc() function to _TIFFCheckMalloc() and make it available
- globally as an internal helper routine.
-
-2005-07-27 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dir.c: More improvements in the "pass by value" part of
- the custom tags handling code.
-
-2005-07-26 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_dirread.c, tif_dirinfo.c}: Do not upcast BYTEs to
- SHORTs in the TIFFFetchByteArray(). Remove TIFFFetchExtraSamples()
- function, use TIFFFetchNormalTag() instead as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=831
-
- Remove TIFFFetchExtraSamples() function, use TIFFFetchNormalTag()
- instead.
-
- * libtiff/tiffconf.h.in: One more attempt to fix the AIX bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=39
-
-2005-07-25 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_print.c: Fixed printing of the BYTE and SBYTE arrays.
-
- * tools/tiffdump.c: Added support for TIFF_IFD datatype.
-
-2005-07-21 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_write.c: Do not check the PlanarConfiguration field in
- the TIFFWriteCheck() function in case of single band images (as per
- TIFF spec).
-
-2005-07-12 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * SConstruct, libtiff/SConstruct: Added the first very preliminary
- support for SCons software building tool (http://www.scons.org/).
- This is experimental infrastructure and it will exist along with the
- autotools mechanics.
-
-2005-07-07 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * port/{getopt.c, strcasecmp.c, strtoul.c}: Update modules from
- the NetBSD source tree (the old 4-clause BSD license changed to
- the new 3-clause one).
-
- * configure.ac, port/lfind.c, libtiff/tiffiop.h: Added lfind()
- replacement module.
-
- * port/dummy.c: Make the dummy function static.
-
-2005-07-06 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffcp.c: Fixed WhitePoint tag copying.
-
- * libtiff/{tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_print.c}:
- Make FieldOfViewCotangent, MatrixWorldToScreen, MatrixWorldToCamera,
- ImageFullWidth, ImageFullLength and PrimaryChromaticities tags custom.
-
-2005-07-04 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff 3.7.3 released.
-
- * configure, configure.ac: Do not use empty -R option when linking
- with --enable-rpath.
-
-2005-07-01 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tiffiop.h, tif_open.c}: Added open option 'h' to avoid
- reading the first IFD when needed. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=875
-
- * libtiff/tif_color.c: Better use of TIFFmin() macro to avoid side
- effects.
-
-2005-06-23 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2pdf.c: Print two characters per loop in the
- t2p_write_pdf_trailer(). As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=594
-
- * tools/tiffgt.c: Use MacOS X OpenGL framework when appropriate. As
- per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=844
-
- * acinclude.m4: Updated to latest OpenGL test macros versions.
-
- * libtiff/tiff.h: Use correct int size on Sparc 64bit/Sun compiler
- platform. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=855
-
-2005-06-14 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirinfo.c: Added support for ClipPath, XClipPathUnits
- and YClipPathUnits tags.
-
-2005-06-07 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * contrib/addtiffo/tif_ovrcache.c: Properly extract tile/strip size;
- use pixel sized shift in contigous case.
-
-2005-06-06 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * contrib/addtiffo/{tif_overview.c, tif_ovrcache.c, tif_ovrcache.h}:
- Make overviews working for contiguos images.
-
-2005-06-03 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_open.c: Replace runtime endianess check with the compile
- time one.
-
- * libtiff/tif_predict.c: Floating point predictor now works on
- big-endian hosts.
-
-2005-06-01 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dir.c: Use _TIFFsetString() function when read custom
- ASCII values.
-
- * libtiff/{tif_dirinfo.c, tif_dir.h, tif_dir.c, tif_print.c}: Make
- DocumentName, Artist, HostComputer, ImageDescription, Make, Model,
- Copyright, DateTime, PageName, TextureFormat, TextureWrapModes and
- TargetPrinter tags custom.
-
- * libtiff/tif_jpeg.c: Cleanup the codec state depending on
- TIFF_CODERSETUP flag (to fix memry leaks).
-
- * libtiff/tif_jpeg.c: Initialize JPEGTables array with zero after
- allocating.
-
-2005-05-26 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * configure.ac, libtiff/Makefile.am: Added workaround for
- OpenBSD/MirOS soname problem as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=838
-
- * libtiff/tif_dirwrite.c: Use tdir_count when calling
- TIFFCvtNativeToIEEEDouble() in the TIFFWriteDoubleArray() function as
- per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=845
-
-2005-05-25 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/ppm2tiff.c: Fixed format string when read PPM file header with
- the fscanf() function. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=861
-
- * libtiff/{tif_dirinfo.c, tif_print.c}: TIFFFetchByteArray() returns
- uint16 array when fetching the BYTE and SBYTE filds, so we should
- consider result as pointer to uint16 array and not as array of chars.
- As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=831
-
- * libtiff/tif_dir.c: More efficient custom tags retrieval as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=830
-
- * libtiff/tif_win32.c: Use FILE_SHARE_READ | FILE_SHARE_WRITE share
- mode in CreateFile() call as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=829
-
- * libtiff/Makefile.am: Fixed parallel compilation of the libtiff and
- libtiffxx libraries as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=826
-
- * contrib/addtiffo/{tif_overview.c, tif_ovrcache.h}: Sinchronized with
- GDAL.
-
-2005-05-23 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_jpeg.c: Substantial fix for addtiffo problems with
- JPEG encoded TIFF files. Pre-allocate lots of space for jpegtables
- in directory.
-
-2005-05-22 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dirread.c: Changed the code that computes
- stripbytecount[0] if it appears bogus to ignore if stripoffset[0] is
- zero. This is a common case with GDAL indicating a "null" tile/strip.
-
-2005-05-17 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffsplit.c: Check for JPEGTables tag presence before copying.
-
-2005-05-06 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dirread.c: Applied similar change to
- TIFFFetchPerSampleLongs and TIFFFetchPerSampleAnys.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=843
-
- * libtiff/tif_jpeg.c: added LIB_JPEG_MK1 support in JPEGDecodeRaw().
-
-2005-05-06 Andrey Kiselev <dron@ak4719.spb.edu>
- * tools/tiff2pdfr.c, man/tiff2pdf.1: Calculate the tile width properly;
- added new option '-b' to use interpolation in output PDF files (Bruno
- Ledoux).
-
-2005-05-05 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dirread.c: Ensure that broken files with too many
- values in PerSampleShorts work ok instead of crashing.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=843
-
-2005-04-27 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffdither.c: Copy the PhotometricInterpretation tag from the
- input file.
-
-2005-04-15 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_predict.c: Added ability to encode floating point
- predictor, as per TIFF Technical Note 3.
-
-2005-04-14 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_predict.h, tif_predict.c}: Added ability to decode
- floating point predictor, as per TIFF Technical Note 3.
-
-2005-04-13 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tiffio.h, tiffiop.h, tif_dir.c, tif_read.c, tif_swab.c}:
- Added _TIFFSwab24BitData() and TIFFSwabArrayOfLong() functions used to
- swap 24-bit floating point values.
-
- * libtiff/tiff.h: Added predictor constants.
-
-2005-04-08 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tiffiop.h, tif_dir.c}: Use uint32 type for appropriate
- values in _TIFFVSetField() function. Inspired by the bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=816
-
- * man/TIFFSetField.3tiff: Fixed definition of the TIFFTAG_INKNAMES tag
- as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=816
-
-2005-03-30 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_open.c: Do not read header in case the output file
- should be truncated (Ron).
-
- * libtiff/{tif_dirinfo.c, tif_config.h.vc}: Use lfind() instead
- of bsearch() in _TIFFFindFieldInfoByName() function (Ron).
-
- * libtiff/{tiff.h, tif_dirinfo.c}: Fixes in EXIF tag ordering (Ron).
-
-2005-03-22 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * configure.ac, libtiff/Makefile.am: Use libtool machinery to pass
- rpath option.
-
-2005-03-21 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_dir.c, tif_print.c}: Handle all data types in custom
- tags.
-
-2005-03-18 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/dirinfo.c: Added DNG tags.
-
- * libtiff/{tif_dir.c, tif_print.c}: More improvements in custom tag
- handling code.
-
- * libtiff/tiff.h: More comments; added missed DNG tag (LensInfo);
- added DNG 1.1.0.0 tags.
-
- * tools/tif2pdf.c: Fixed problem with alpha channel handling as per
- bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=794
-
- * man/TIFFGetField.3tiff: Add a note about autoregistered tags.
-
-2005-03-17 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * nmake.opt: Build with Win32 CRT library by default.
-
- * tools/tiff2ps.c: Fixed typo in page size handling code.
-
- * libtiff/{tif_dir.c, tif_print.c}: Support for custom tags, passed
- by value.
-
- * libtiff/{tiff.h, tif_dirinfo.c, tiffiop.h}: Added EXIF related tags.
-
-2005-03-15 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff 3.7.2 released.
-
-2005-03-09 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffcmp.c: Added ability to compare the 32-bit integer and
- floating point data; complain on unsupported bit depths.
-
-2005-03-05 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tif_stream.cxx: Use ios namespace instead of ios_base to support
- GCC 2.95.
-
- * libtiff/{tiff.h, tif_fax3.tif, tif_jpeg.c}: Applied correct patch from
- Lee Howard for HylaFax DCS tag
- (see http://bugzilla.remotesensing.org/show_bug.cgi?id=771)
-
-2005-03-04 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * configure, configure.ac: Use -rpath option instead of -R as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=732
-
- * libtiff/{tiff.h, tif_fax3.tif, tif_jpeg.c}: Applied patch from Lee
- Howard to support a new tag TIFFTAG_FAXDCS (34911) used in HylaFax
- software. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=771
-
- * nmake.opt, html/build.html: Add more comments, change the config
- file organization a bit as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=764
-
- * tools/tiffcmp.c: Use properly sized buffer in short arrays comparison
- as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=785
-
-2005-03-03 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirread.c: More logic to guess missed strip size as per
- bug http://bugzilla.remotesensing.org/show_bug.cgi?id=705
-
- * tools/fax2ps.c: Replace insecure mktemp() function with the
- tmpfile() as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=786
-
-2005-02-04 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tiff.h: Changed the int8 definition to be always signed char
- as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=727
-
- * libtiff/tiffio.h: Move TIFFOpenW() function into the extern "C"{}
- block as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=763
-
-2005-02-03 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * tools/tiffgt.c: Fix problem on big-endian CPUs so that images
- display more correctly. Images display brighter than they should
- on a Sun workstation.
-
-2005-02-03 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirread.c: Estimate strip size in case of wrong or
- suspicious values in the tags. As per bugs
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=705
-
- and
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=320
-
- * tools/tiff2ps.c: Fixed problem with page sizes as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=742
-
-2005-01-31 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * libtiff/tiff.h (TIFFTAG_TILEWIDTH): Corrected description.
- (TIFFTAG_TILELENGTH): Corrected description.
-
-2005-01-30 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * configure.ac: Fixes for --with-docdir option as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=759
-
- * libtiff/tif_open.c: Remove unnesessary TIFFSeekFile() call as per
- bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=756
-
- * libtiff/tif_stream.cxx: Fixes for C++ stream interface from
- Michael Rinne and Edward Lam.
-
-2005-01-15 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * configure.ac: Make the documentation directory location configurable
- via the --with-docdir option (as suggested by Jeremy C. Reed).
-
- * libtiff/tif_color.c: Use double as the second argument of pow()
- function in TIFFCIELabToRGBInit(). As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=741
-
- * libtiff/tif_pixarlog.c: Avoid warnings when converting float to
- integer as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=740
-
- * libtiff/tif_getimage.c: Always fill the error message buffer in
- TIFFRGBAImageBegin() as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=739
-
-2005-01-12 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_jpeg.c: Added ability to read/write the fax specific
- TIFFTAG_FAXRECVPARAMS, TIFFTAG_FAXSUBADDRESS and TIFFTAG_FAXRECVTIME
- tags as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=736
-
- * libtiff/tif_win32.c: Fixed message formatting in functions
- Win32WarningHandler() and Win32ErrorHandler() as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=735
-
- * tools/tiff2ps.c: Interpret the -w and -h options independently. As
- per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=689
-
-2005-01-11 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tiffio.h: Move the color conversion routines in the 'extern
- "C"' section as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=727
-
- * libtiff/tiff.h: Restore back the workaround for AIX Visual Age C
- compiler to avoid double definition of BSD types as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=39
-
- * libtiff/Makefile.am: Place the C++ stream API in the separate
- library called libtiffxx to avoid unneeded dependencies. Probably
- there will be more C++ API in the future. As per bugs
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=733
-
- and
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=730
-
-2005-01-05 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffdump.c: Fixed problem when read broken TIFFs with the
- wrong tag counts (Dmitry V. Levin, Martin Pitt).
-
- * configure.ac: Replace --disable-c++ with the --disable-cxx option as
- per bug http://bugzilla.remotesensing.org/show_bug.cgi?id=730
-
-2004-12-25 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_getimage.c: More fixes for multiple-alpha-channelled
- RGB-images as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=713
-
-
- * tools/tiffset.c: Convert character option to integer value as per
- bug http://bugzilla.remotesensing.org/show_bug.cgi?id=725
-
-2004-12-20 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff 3.7.1 released.
-
- * html/tiffset.1.html: Add missed manual page as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=678
-
- * libtiff/tiff.h: Revert back libtiff data type definitions as per
- bug http://bugzilla.remotesensing.org/show_bug.cgi?id=687
-
-2004-12-19 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirread.c: Do not forget about TIFF_VARIABLE2 when
- checking for tag count in TIFFReadDirectory() function. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=713
-
- * libtiff/{tif_dirread.c, tif_fax3.c}: More argument checking in
- CheckMallock() function.
-
- * libtiff/tif_getimage.c: Support for multiple-alpha-channelled
- RGB-images as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=718
-
-2004-12-15 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_getimage.c: #define A1 bracketing for clean build on
- SunPro compiler.
-
-2004-12-11 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * autogen.sh: aclocal and autoheader should be executed after
- libtoolize. Also add '-I .' to aclocal invocation to check
- current directory for macros.
-
-2004-12-10 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirwrite.c: Always write TIFFTAG_SUBIFD using LONG type
- as per bugs
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=703
-
- and
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=704
-
-2004-12-04 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * nmake.opt: Link with the user32.lib in windowed mode. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=697
-
- * libtiff/tif_win32.c: Use char* strings instead of TCHAR in windowed
- mode as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=697
-
- * libtiff/tif_config.in.vc: Removed unneded definitions for
- read/open/close/lseek functions to fix the
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=680
-
-2004-12-03 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_dir.c, tif_dirread.c}: Remove TIFFReassignTagToIgnore()
- call from the TIFFReadDirectory() function. TIFFReassignTagToIgnore
- must be removed in the future, as it was never used properly. As per
- bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=692
-
-2004-11-30 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * libtiff/tif_jpeg.c: Added a work-around in order to allow
- compilation with the heavily modified version of libjpeg delivered
- with Cygwin.
-
-2004-11-29 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dir.c: Properly handle tags, which have the uint32
- counts. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=693
-
- * tools/fax2ps.c: Be able to extract the first page (#0). As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=690
-
-2004-11-28 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_unix.c: Make UNIX module compilable (and usable)
- on Windows.
-
- * nmake.opt: Add missed DLLNAME variable.
-
-2004-11-26 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/makefile.vc: make it easier to rename the libtiff DLL.
-
-2004-11-24 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * man/libtiff.3tiff: Improvements in the "LIST OF ROUTINES" table as
- per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=545
-
- * man/tiffset.1: Added manual page for tiffset tool written by Jay
- Berkenbilt. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=678
-
-2004-11-23 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_error.c: fixed TIFFerror call to be TIFFError.
-
-2004-11-21 Frank Warmerdam <warmerdam@pobox.com>
-
- * html/document.html: Updated Adobe web links as per email from Joris.
-
-2004-11-21 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tiffio.hxx, tiffio.h}: C++ stream interface moved to new
- file tiffio.hxx. We don't have any C++ in tiffio.h, those who want to
- use C++ streams should #include <tiffio.hxx>.
-
-2004-11-13 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tiff.h: Added Adobe DNG tags.
-
- * libtiff/tif_win32.c: Typo fixed.
-
- * libtiff/{tif_stream.cxx, tiffio.h}: C++ stream interface updated to
- be compliant with the latest standard. Appropriate additions in
- makefiles now completed.
-
-2004-11-11 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffset.c, libtiff/tif_dirinfo.c: Properly handle the
- different tag types. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=600
-
-2004-11-10 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_aux.c: Set the appropriate ReferenceBlackWhite array for
- YCbCr image which lacks that tag (noted by Hans Petter Selasky).
-
-2004-11-09 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_color.c: Division by zero fixed (Hans Petter Selasky).
-
-2004-11-07 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_stream.cxx, tiffio.h}: Added C++ stream interface
- contributed by Edward Lam (see
- http://bugzilla.remotesensing.org/show_bug.cgi?id=654 for details).
- Though no changes in any makefiles yet.
-
-2004-11-05 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_open.c: Removed close() in TIFFClientOpen() if file
- is bad. This is the callers responsibility.
- http://bugzilla.remotesensing.org/show_bug.cgi?id=651
-
-2004-11-05 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tiffio.h, tif_win32.c, libtiff.def}: Added TIFFOpenW()
- function to work with the double byte strings (used to represent
- filenames in some locales). As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=625
-
- * libtiff/tif_dirread.c: Fixed problem when fetching BitsPerSample and
- Compression tags of type LONG from broken TIFFS as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=662
-
- * libtiff/tif_dirinfo.c: Fixed definition for TIFFTAG_RICHTIFFIPTC,
- the writecount should have uint32 type. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=662
-
- * libtiff/tif_write.c: Fixed wrong if() statement in
- TIFFAppendToStrip() function as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=660
-
-2004-11-04 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirinfo.c: Change definition for TIFFTAG_EXTRASAMPLES
- field. The caller should supply a count when setting this field. As
- per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=648
-
- * libtiff/{tif_jpeg.c, tif_ojpeg.c}: TIFFTAG_JPEGTABLES should have
- uint32 count. Use this type everywhere.
-
-2004-11-03 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_next.c: avoid use of u_long and u_char types. Bug 653.
-
-2004-11-02 Frank Warmerdam <warmerdam@pobox.com>
-
- * tools/tiff2rgba.c: removed extra newlines in usage message.
-
-2004-10-30 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirwrite.c: Improvements in tag writing code.
-
- * tools/tiff2ps.c: Fixed wrong variable data type when read Position
- tags (Tristan Hill).
-
-2004-10-30 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tiffiop.h: added fallback definition of assert() if we
- don't have assert.h.
-
-2004-10-29 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_fax3.c: Fixed case with the wrong decode routines
- choosing when the incorrect Group4Options tag set. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=323
-
- * libtiff/tif_dirwrite.c: Fixed problem with passing count variable of
- wrong type when writing the TIFF_BYTE/TIFF_SBYTE tags in
- TIFFWriteNormalTag().
-
-2004-10-28 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2ps.c: Fixed wrong variable data type when read Resolution
- tags (Peter Fales).
-
- * tools/{bmp2tiff.c, raw2tiff.c}: Get rid of stream I/O functions.
-
-2004-10-28 Frank Warmerdam <warmerdam@pobox.com>
-
- * tools/tiff2pdf.c: added casts to avoid warnings.
-
- * libtiff/libtiff.def: Added several more entry points required
- to link fax2tiff.c against the DLL on windows.
-
-2004-10-27 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * configure, configure.ac: Added --enable-rpath option to embed linker
- paths into library binary.
-
-2004-10-26 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffset.c: Check the malloc return value (Dmitry V. Levin).
-
- * libtiff/{tif_strip.c, tif_tile.c}: Zero division problem fixed
- (Vladimir Nadvornik, Dmitry V. Levin).
-
-2004-10-16 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff 3.7.0 released.
-
-2004-10-15 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * libtiff/tif_jpeg.c: There seems to be no need to include stdio.h
- in this file so its inclusion is removed. Including stdio.h
- sometimes incurs an INT32 typedef conflict between MinGW's
- basetsd.h and libjpeg's jmorecfg.h.
-
-2004-10-15 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * man/bmp2tiff.1: Added manual page for bmp2tiff utility.
-
-2004-10-13 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * tools/tiffcmp.c (leof): Renamed from 'eof' in order to avoid
- conflict noticed under MinGW.
- * ltmain.sh: Fix for MinGW compilation.
-
-2004-10-13 Frank Warmerdam <warmerdam@pobox.com>
-
- * man/tiffsplit.1: Fixed to indicate using aaa-zzz, not aa-zz.
- http://bugzilla.remotesensing.org/show_bug.cgi?id=635
-
-2004-10-12 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_dirread.c, tif_jpeg.c, tif_luv.c, tif_ojpeg.c,
- tif_pixarlog.c, tif_write.c}: Handle the zero strip/tile sizes
- properly (Dmitry V. Levin, Marcus Meissner).
-
-2004-10-11 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirinfo.c: Type of the TIFFTAG_SUBIFD field changed
- to TIFF_IFD.
-
-2004-10-10 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/bmp2tif.c: Check the space allocation results.
-
-2004-10-09 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dir.c: Initialize td_tilewidth and td_tilelength fields
- of the TIFFDirectory structure with the 0 instead of -1 to avoid
- confusing integer overflows in TIFFTileRowSize() for striped images.
-
- * tools/tiff2pdf.c: Fixed TransferFunction tag handling reported
- by Ross A. Finlayson.
-
- * libtiff/tif_dir.c: Fixed custom tags handling as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=629
-
-2004-10-08 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dirinfo.c: Fix bug with tif_foundfield and reallocation
- of tif_fieldinfo.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=630
-
-2004-10-04 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * contrib/iptcutil/README: Added the missing README which goes
- along with iptcutil.
-
-2004-10-03 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_compress.c: Improved error reporting in
- TIFFGetConfiguredCODECs() (Dmitry V. Levin).
-
-2004-10-02 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff 3.7.0beta2 released.
-
- * libtiff/{tif_aux.c, tif_compress.c, tif_dirinfo.c, tif_dirwrite.c,
- tif_extension.c, tif_fax3.c, tif_luv.c, tif_packbits.c,
- tif_pixarlog.c, tif_write.c}: Added checks for failed memory
- allocations and integer overflows (Dmitry V. Levin).
-
- * libtiff/tiff.h: Missed TIFF_BIGTIFF_VERSION constant added.
-
-2004-10-01 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_open.c: added a more informative message if a BigTIFF
- file is opened.
-
-2004-09-30 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dirinfo.c: changed type of XMLPacket (tag 700) to
- TIFFTAG_BYTE instead of TIFFTAG_UNDEFINED to comply with the info
- in the Adobe XMP Specification.
-
-2004-09-29 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_jpeg.c, tif_pixarlog.c}: Use _TIFFmemset() instead of
- memset().
-
- * libtiff/{tif_dirread.c, tif_strip.c, tif_tile.c}: Applied patches
- from Dmitry V. Levin to fix possible integer overflow problems.
-
-2004-09-28 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_getimage.c: Check for allocated buffers before clearing
- (Dmitry V. Levin).
-
-2004-09-26 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_dir.h, tif_dir.c, tif_dirread.c, tif_write.c}:
- Optimize checking for the strip bounds.
-
- * libtiff/{tif_dirread.c, tif_strip.c}: TIFFScanlineSize() and
- TIFFRasterScanlineSize() functions report zero in the case of integer
- overflow now. Properly handle this case in TIFFReadDirectory()
- (patches from Dmitry V. Levin).
-
-2004-09-25 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_dirinfo.c, tif_strip.c, tif_tile.c}: Use TIFFhowmany8()
- macro where appropriate.
-
- * tools/tiff2bw.c: Write ImageWidth/Height tags to output file, as
- noted by Gennady Khokhorin.
-
- * libtiff/tif_dirread.c: Always check the return values, returned
- by the _TIFFmalloc() (Dmitry V. Levin).
-
- * libtiff/tif_dir.c: Fixed possible integer overflow _TIFFset*Array()
- functions (Dmitry V. Levin).
-
- * libtiff/{tif_dirread.c, tif_dir.c, tif_write.c}:
- Potential memory leak fixed in TIFFReadDirectory(), _TIFFVSetField(),
- TIFFGrowStrips() (found by Dmitry V. Levin).
-
-2004-09-24 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tiffio.h, tif_compress.c}: Added TIFFGetConfiguredCODECs()
- to get the list of configured codecs.
-
- * libtiff/{tiffiop.h, tif_dirread.c}: More overflow fixes from
- Dmitry V. Levin.
-
-2004-09-23 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirread.c: Applied patch from Dmitry V. Levin to fix
- possible integer overflow in CheckMalloc() function.
-
-2004-09-22 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tiffiop.h, tif_strip.c}: Use TIFFhowmany8() macro instead
- of plain TIFFhowmany() where appropriate.
-
-2004-09-21 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_getimage.c: Initialize arrays after space allocation.
-
-2004-09-19 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff 3.7.0beta released.
-
- * libtiff/{tif_luv.c, tif_next.c, tif_thunder.c}: Several buffer
- overruns fixed, as noted by Chris Evans.
-
-2004-09-14 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * commit: Added a script to make it more convenient to commit
- updates. The CVS commit message is extracted from this ChangeLog
- file.
-
-2004-09-14 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * configure.ac, configure, aclocal.m4, libtiff/{mkspans.c, tif_fax3.c,
- tif_getimage.c, tif_luv.c, tif_lzw.c, tif_ojpeg.c, tif_packbits.c,
- tif_predict.c, tif_read.c, tif_swab.c, tif_thunder.c, tif_write.c,
- tif_dir.c, tif_dirread.c, tif_dirwrite.c, tif_jpeg.c, tif_dirinfo.c,
- tif_vms.c, tif_print.c, tif_strip.c, tif_tile.c, tif_dir.h,
- tif_config.h.in, tiffiop.h}:
- Get rid of BSD data types (u_char, u_short, u_int, u_long).
-
-2004-09-13 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * libtiff/tiff.h: Fix column tagging. Reference current Adobe XMP
- specification. Reference libtiff bug tracking system to submit
- private tag additions.
-
-2004-09-12 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * tools/tiffgt.c: Include "tif_config.h".
-
- * configure.ac: Use AM_PROG_CC_C_O since it is now needed to build
- tiffgt. This results in the 'compile' script being added to the
- project.
-
- * tools/Makefile.am (tiffgt_CFLAGS): Add extra build options
- required to find OpenGL headers necessary to build tiffgt. Also
- ensure that the libtiff that we built is used rather than some other
- libtiff installed on the system.
-
-2004-09-12 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * configure.ac, acinclude.m4, aclocal.m4: New macros to detect GLUT
- libraries.
-
-2004-09-11 Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
-
- * configure.ac: Pass library configuration defines via
- tif_config.h rather than extending CPPFLAGS. Configure a
- libtiff/tiffconf.h in order to satisfy application requirements
- (not used by library build). Do not define _POSIX_C_SOURCE=2 since
- this causes failure to build on systems which properly respect
- this request.
-
- * libtiff/tiffconf.h.in: New file to act as the template for the
- configured tiffconf.h
-
- * libtiff/files.lst (HDRS): Install the configured tiffconf.h.
-
-2004-09-10 Frank Warmerdam <warmerdam@pobox.com>
-
- * html/internals.html: Split off a discussion of adding new tags
- into addingtags.html.
-
-2004-09-10 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * test/{ascii_tag.c, long_tag.c}: Preliminary test suite added.
-
- * tools/tiff2pdf.c: Fixed reading TransferFunction tag as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=590
-
- * libtiff/tif_print.c: Fixes in InkNames and NumberOfInks reporting.
-
- * libtiff/tif_dirread.c: Don't reject to read tags of the
- SamplesPerPixel size when the tag count is greater than number of
- samples as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=576
-
- * libtiff/tiff.h: Use _TIFF_DATA_TYPEDEFS_ guardian to switch off
- defining int8/uint8/... etc. types. As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=607
-
-2004-09-09 Frank Warmerdam <warmerdam@pobox.com>
-
- * tools/tiff2ps.c, tools/tiffmedian.c: fiddle with include files
- to avoid compile warnings about getopt() and a few other things.
-
-2004-09-02 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirread.c: Use memcpy() function instead of pointer
- assigning magic in TIFFFetchFloat().
-
-2004-09-01 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tiffio.h, tif_open.c}: Applied patches from Joris Van Damme
- to avoid requirement for tiffiop.h inclusion in some applications. See
- here
-
- http://www.asmail.be/msg0054799560.html
-
- for details.
-
- * tools/fax2tiff.c: Use the new functions in the code.
-
-2004-08-25 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2pdf.c: Initialize arrays properly.
-
- * tools/tiff2ps.c: Avoid zero division in setupPageState() function;
- properly initialize array in PSDataBW().
-
-2004-08-24 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2pdf.c: More fixes for bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=590
-
- from Ross Finlayson.
-
-2004-08-23 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2ps.c: Fixed problem with uninitialized values.
-
- * libtiff/tif_dir.c: Initialize tif_foundfield data member in the
- TIFFDefaultDirectory() (in addition to 2004-08-19 fix).
-
- * tools/tiff2pdf.c: Fixed a bunch of problems as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=590
-
-2004-08-20 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2pdf.c: Applied patch from Ross Finlayson that checks
- that the input file has compression, photometric interpretation,
- etcetra, tags or if not than a more descriptive error is returned.
-
- * libtiff/tif_dirread.c: Fixed problem in TIFFReadDirectory() in the
- code, responsible for tag data type checking.
-
-2004-08-19 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tiffiop.h, tif_dirinfo.c}: Fixed problem with the static
- variable as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=593
-
-2004-08-16 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/ras2tiff.c: Fixed issue with missed big-endian checks as per
- bug http://bugzilla.remotesensing.org/show_bug.cgi?id=586
-
-2004-08-01 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_config.h.in, tif_config.h.vc}: config.h.in and
- config.h.vc files renamed in the tif_config.h.in and tif_config.h.vc.
-
-2004-07-24 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_lzw.c: LZW compression code is merged back from the
- separate package. All libtiff tools are updated to not advertise an
- abcence of LZW support.
-
-2004-07-12 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tiffio.h: Revert thandle_t back to void* type.
-
-2004-07-11 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_read.c, tif_tile.c, tif_strip.c}: Fixes in error
- messages, as suggested by Bernd Herd.
-
-2004-07-03 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dir.c: Call TIFFError() instead of producing warnings
- when setting custom tags by value. Reported by Eric Fieleke.
-
-2004-06-14 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/bmp2tiff.c: Add missed RawsPerStrip setting.
-
-2004-06-08 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/bmp2tiff.c: Added new utility to convert Windows BMP files
- into TIFFs.
-
-2004-06-07 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff 3.7.0alpha released.
-
-2004-06-06 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tiff.h, tif_dirwrite.c, tif_fax3.c, tif_packbits.c,}: Get rid
- of ugly 64-bit hacks, replace them with the clever (autoconf based )
- ones :-).
-
- * libtiff/tiffio.h: Define thandle_t as int, not void* (may cause
- problems in 64-bit environment).
-
-2004-06-05 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffset.c: tiffset now can set any libtiff supported tags.
- Tags can be supplied by the mnemonic name or number.
-
- * libtiff/{tiffio.h, tif_dir.h, tif_dirinfo.c,}: Added two new
- functions TIFFFindFieldInfoByName() and TIFFFieldWithName().
-
-2004-05-27 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_ojpeg.c: Fixed problem with duplicated SOI and SOF
- markers as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=581
-
-2004-05-24 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffsplit.c: Don't forget to copy Photometric
- Interpretation tag.
-
-2004-05-20 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_open.c, tiffio.h}: New function added:
- TIFFIsBigEndian(). Function returns nonzero if given was file written
- in big-endian order.
-
- * tools/tiffsplit.c: Fixed problem with unproperly written multibyte
- files. Now output files will be written using the same byte order
- flag as in the input image. See
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=574
-
- for details.
-
-2004-05-19 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_print.c: added (untested) support for printing
- SSHORT, SLONG and SRATIONAL fields.
-
- * tools/tiffcp.c: close output file on normal exit.
-
-2004-05-17 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_fax3.c: Avoid reading CCITT compression options
- if compression type mismatches. See
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=565
-
-2004-04-30 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_strip.c: Never return 0 from the
- TIFFNumberOfStrips().
-
-2004-04-29 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirread.c: Workaround for broken TIFF writers which
- store single SampleFormat value for multisampled images. See
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=562
-
-2004-04-25 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * configure.ac, libtiff/{tiff.h, config.h.in}: Added tests for int8,
- int16 and int32 types to avoid complains on some compilers. Details at
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=39
-
-2004-04-20 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2pdf.c: Fixed problem with unaligned access as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=555
-
-2004-04-14 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_write.c: Allow in-place updating of the compressed
- images (don't work properly with all codecs). For details see GDAL bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=534
-
-2004-04-06 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_jpeg.c: Workaround for wrong sampling factors used
- in the Intergarph JPEG compressed TIFF images as per bug:
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=532
-
-2004-04-04 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_open.c: close clientdata if TIFFClientOpen() fails
- via bad2.
-
-2004-03-26 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffcp.c: Properly set Photometric Interpretation in case of
- JPEG compression of grayscale images.
-
- * tools/tiffcp.c: Don't emit warnings when Orientation tag does not
- present in the input image.
-
-2004-03-19 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * {many}: The first attempt to switch to autotools.
-
-2004-03-03 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_open.c: Use dummy mmap/munmap functions in
- TIFFClientOpen() when the appropriate client functions was not
- supplied by user.
-
-2004-03-02 Frank Warmerdam <warmerdam@pobox.com>
-
- * tools/ycbcr.c: fixed main() declaration as per:
- http://bugzilla.remotesensing.org/show_bug.cgi?id=513
-
-2004-02-26 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffsplit.c: Copy JPEGTables tag contents for JPEG compressed
- images. Reported by Artem Mirolubov.
-
- * libtiff/tif_dirread.c: Fixed problem with handling TIFF_UNDEFINED
- tag type in TIFFFetchNormalTag() as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=508
-
-2004-02-17 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_codec.c: Fixed typo in TIFFInitPackBits name as per:
- http://bugzilla.remotesensing.org/show_bug.cgi?id=494
-
-2004-02-05 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_fax3.c: Fixed problem with CCITT encoding modes as per
- bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=483
-
- But we need more work on fax codec to support update mode.
-
-2004-01-30 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/libtiff.def: Added TIFFCurrentDirOffset, TIFFWriteCheck,
- TIFFRGBAImageOK, and TIFFNumberOfDirectories as suggested by
- Scott Reynolds.
-
-2004-01-29 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tiff.h: Fixed tag definitions for TIFFTAG_YCLIPPATHUNITS
- and TIFFTAG_INDEXED as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=475
-
- * libtiff/{tif_win32.c, tif_unix.c}: Check whether the pointer is
- NULL before proceeding further as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=474
-
- Check results, returned by the TIFFFdOpen() before returning and close
- file if TIFFFdOpen() failed as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=468
-
- * libtiff/tif_open.c: More fixes for
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=468
-
-2004-01-28 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{libtiff.def, tif_close.c, tiffio.h, tif_open.c}: Separate
- TIFFCleanup() from the TIFFClose() in order to fix the bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=468
-
- * tools/tiffcp.c: Fixed problem with wrong interpretation of the
- InkNames tag as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=466
-
- Memory leak fixed.
-
-2004-01-21 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dirwrite.c: Fixed handling of writable ASCII tags that
- are field_passcount=TRUE properly. Arguably anonymous custom tags
- should be declared as passcount=FALSE, but I don't want to change
- that without a careful review.
-
-2004-01-20 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_write.c: Fixed reporting size of the buffer in case of
- stripped image in TIFFWriteBufferSetup(). As per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=460
-
-2004-01-11 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dir.c: Incomplete cleanup in TIFFFreeDirectory(),
- patch from Gerben Koopmans.
-
- * libtiff/tif_dirread.c: Check field_passcount value before setting
- the value of undefined type, patch from Gerben Koopmans.
-
-2004-01-02 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffcp.c: Fixed problem with wrong Photometric setting for
- non-RGB images.
-
-2003-12-31 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_win32.c: Fixed problem with _TIFFrealloc() when the NULL
- pointer passed. Patch supplied by Larry Grill.
-
- * libtiff/{tiff.h, tif_fax3.c}:Fixes for AMD 64 platform as
- suggested by Jeremy C. Reed.
-
-2003-12-26 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff 3.6.1 released.
-
-2003-12-24 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * config.guess, config.sub: Updated from the recent upstream.
-
-2003-12-22 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_color, tif_getimage.c, tiffio.h}, man/TIFFcolor.3t:
- More cleanups in color conversion interface, added appropriate manual
- page.
-
-2003-12-19 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_extension.c, tif_dirinfo.c, tiff.h}: Warnings fixed as
- per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=357
-
- * tools/tiff2ps.c: Added support for alpha channel. Fixes
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=428
-
- * libtiff/{libtiff.def, tif_color.c, tif_getimage.c, tiffio.h}:
- Interface for Lab->RGB color conversion is finally cleaned up.
- Added support for ReferenceBlackWhite tag handling when converted from
- YCbCr color space. The latter closes
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=120
-
-2003-12-07 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_getimage.c, tiffio.h}: Avoid warnings.
-
- * libtiff/makefile.vc, tools/makefile.vc: Support for IJG JPEG
- library.
-
-2003-12-06 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_getimage.c, tif_aux.c}: Read WhitePoint tag from the
- file and properly use it for CIE Lab->RGB transform.
-
-2003-12-04 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_getimage.c, tif_color.c, tiffio.h}: YCbCr->RGB
- conversion routines now in the tif_color.c module. New function
- TIFFYCbCrtoRGB() available in TIFF API.
-
- * libtiff/tif_dirwrite.c: Handle TIFF_IFD tag type correctly.
-
-2003-12-03 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_getimage.c, tif_color.c, tiffio.h}: Improvements in
- CIE Lab conversion code. Start moving YCbCr stuff to the tif_color.c
- module.
-
- * libtiff/{tif_getimage.c, tiffio.h}, man{TIFFReadRGBAImage.3t,
- TIFFReadRGBAStrip.3t, TIFFReadRGBATile.3t, TIFFRGBAImage.3t}:
- Finally resolved problems with orientation handling. TIFFRGBAImage
- interface now properly supports all possible orientations, i.e. images
- will be flipped both in horizontal and vertical directions if
- required. 'Known bugs' section now removed from the appropriate manual
- pages. Closed bug entry:
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=322
-
-2003-12-02 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dir.c: Fixed order of the parameters in TIFFError()
- function calls as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=440
-
-2003-11-28 Ross Finlayson <libtiff@apexinternetsoftware.com>
-
- * tools/tiff2pdf.c: Some bugs fixed.
-
-2003-11-27 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_luv.c: Fixed bug in 48-bit to 24-bit conversion routine,
- reported by Antonio Scuri.
-
- * man/tiff2pdf.1: Few improvements in page layout.
-
- * Makefile.in, /man/Makefile.in, /html/man/tiff2pdf.1.html:
- Added support fpr tiff2pdf manual page.
-
-2003-11-26 Ross Finlayson <libtiff@apexinternetsoftware.com>
-
- * /man/tiff2pdf.1: File added to repository.
-
-2003-11-26 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * Makefile.in, /tools/{Makefile.in, makefile.vc}:
- Added support fpr tiff2pdf utility.
-
-2003-11-25 Ross Finlayson <libtiff@apexinternetsoftware.com>
-
- * /tools/tiff2pdf.c: File added to repository.
-
-2003-11-22 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * /tools/raw2tiff.c: sqrtf() replaced with sqrt().
-
-2003-11-21 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * /tools/raw2tiff.c: #include <getopt.h> removed.
-
- * tools/{Makefile.in, tiffgt.c}: Unmaintained and platform dependent
- sgigt utility removed and replaced with the completely rewritten
- portable tiffgt tool (depend on OpenGL and GLUT). Initial revision,
- there is a lot of things to improve.
-
- * libtiff/tif_ojpeg.c: TIFFVGetField() function now can properly
- extract the fields from the OJPEG files. Patch supplied by Ross
- Finlayson.
-
- * libtiff/{tiffio.h, tif_codec.c}, man/{libtiff.3t, TIFFcodec.3t}:
- Added new function TIFFIsCODECConfigured(), suggested by Ross
- Finlayson.
-
-2003-11-18 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirinfo.c: Implemented binary search in
- _TIFFMergeFieldInfo(). Patch supplied by Ross Finlayson.
-
- * libtiff/tif_dir.h: _TIFFFindOrRegisterdInfo declaration replaced
- with _TIFFFindOrRegisterFieldInfo as reported by Ross Finlayson.
-
-2003-11-17 Frank Warmerdam <warmerdam@pobox.com>
-
- * tif_dirread.c: do not mark all anonymously defined tags to be
- IGNOREd.
-
-2003-11-17 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * contrib/pds/{tif_pdsdirread.c, tif_pdsdirwrite.c}: Use
- TIFFDataWidth() function insted of tiffDataWidth array.
-
-2003-11-16 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tiff.h, tif_dirinfo.c}: Added support for IFD (13)
- datatype, intruduced in "Adobe PageMaker TIFF Tech. Notes".
-
-2003-11-15 Frank Warmerdam <warmerdam@pobox.com>
-
- * Makefile.in: fixed missing backslash for tif_color.c in list.
-
-2003-11-13 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_color.c, tif_getimage.c, tiffio.h, Makefile.in}:
- New color space conversion code: CIE L*a*b* 1976 images now supported
- by the TIFFRGBAImage interface. All introduced routines go to new
- module tif_color.c. Eventually all color conversion functions should
- be moved there.
-
-2003-11-12 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/{ras2tiff.c, rasterfile.h}: Properly determine SUN Rasterfiles
- with the reverse byte order (it is reported by the magic header
- field). Problem reported by Andreas Wiesmann.
-
- * tools/raw2tiff.c, man/raw2tiff.1: Few improvements in correlation
- calculation function. Guessing mechanics now documented in manual page.
-
-2003-11-11 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/raw2tiff.c: Implemented image size guessing using
- correlation coefficient calculation between two neighbour lines.
-
-2003-11-09 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_tile.c: remove spurious use of "s" (sample) in the
- planarconfig_contig case in TIFFComputeTile().
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=387
-
-2003-11-09 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tiffiop.h: New macros: TIFFmax, TIFFmin and TIFFrint.
-
-2003-11-07 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tiffio.h, tif_strip.c}, man/{TIFFstrip.3t, libtiff.3t}:
- Added TIFFRawStripSize() function as suggested by Chris Hanson.
-
-2003-11-03 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_lzw.c, tif_fax3.c}: Proper support for update mode as
- per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=424
-
-2003-10-29 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/libtiff.def: Added TIFFReadRGBAImageOriented.
-
- * html/build.html: Added note about GNU make requirement.
-
-2003-10-25 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * Makefile.in: Fixes in using MAKEFLAGS as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=418
-
- * port/install.sh.in: Option -p added to the mkdir command to create
- all directory tree structure before installing.
-
-2003-10-18 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * /tools/tiff2ps.c: #include <strings.h> replaced with the
- #include <string.h>.
-
-2003-10-16 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * Makefile.in: Add an absolute path to the test_pics.sh call.
-
-2003-10-12 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tiffcomp.h: #define _BSDTYPES_DEFINED when defining BSD
- typedefs.
-
-2003-10-09 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * configure, libtiff/{Makefile.in, mkversion.c}:
- Relative buildings fixed.
-
- * tools/Makefile.in: Added "-I../libtiff" to the tiffset building
- rule.
-
-2003-10-07 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * Makefile.in: Added missed v3.6.0.html.
-
- * libtiff/tiffio.h: Typo fixed: ORIENTATION_BOTTOMLEFT replaced with
- ORIENTATION_BOTLEFT.
-
-2003-10-04 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * 3.6.0 final release.
-
-2003-10-03 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tif_getimage.c, tiffio.h}, man/TIFFReadRGBAImage.3t: New
- function TIFFReadRGBAImageOriented() implemented to retrieve raster
- array with user-specified origin position as suggested by Jason Frank.
- See
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=322
-
- for details.
-
- * tools/tiff2rgba.c: Switched to use TIFFReadRGBAImageOriented()
- instead of TIFFReadRGBAImage().
-
- * tools/tiff2ps.c: Fixed possible endless loop as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=404
-
-2003-09-30 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirread.c: Check field counter against number of fields
- in order to fix
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=366
-
- * libtiff/tif_fax3.c: Fix wrong line numbering as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=342
-
-2003-09-25 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/{tiffiop.h, tif_dirread.c, tif_dir.c, tif_open.c,
- tif_close.c}: Store a list of opened IFD to prevent looping as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=383
-
-2003-09-23 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirread.c: More fixes for EstimateStripByteCounts(). See
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=358
-
-2003-08-21 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffmedian.c: int declaration replaced with the uint32 to
- support large images as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=382
-
-2003-08-12 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/Makefile.in: Fixed problem with building in different
- directory.
-
- * tools/tiff2ps.c: Added missing #include <strings.h>.
-
- * libtiff/tif_dirwrite.c: More fixes for custom tags code
- from Ashley Dreier.
-
-2003-08-07 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2ps.c: Added page size setting when creating PS Level 2.
- Patch submitted by Balatoni Denes (with corrections from Tom
- Kacvinsky).
-
- * tools/tiff2ps.c: Fixed PS comment emitted when FlateDecode is
- being used. Reported by Tom Kacvinsky.
-
- * libtiff/tif_dirwrite.c: Fixed problem with custom tags writing,
- reported by Ashley Dreier.
-
- * libtiff/tif_print.c: Fixed problem with float tags reading, support
- for printing RATIONAL and BYTE tags added.
-
-2003-08-05 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_lzw.c: Move LZW codec state block allocation back to
- TIFFInitLZW(), because its initialization in LZWSetupDecode() cause
- problems with predictor initialization. Remove O_RDONLY check during
- state block allocation to be able open LZW compressed files in update
- mode.
-
- Problem exist for libtiff version of the tif_lzw.c module. One from
- lzw-compression-kit hasn't such troubles.
-
-2003-08-04 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_write.c: modified tif_write.c so that the various
- encoded write functions use tif_postdecode() to apply byte order
- swapping (swab) to the application passed data buffer if the same
- would be done when reading. This allows us to write pixel data with
- more than 8 bits per sample to existing files of a non-native byte
- order. One side effect of this change is the applications buffer
- itself is altered in this case by the act of writing.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=171
-
-2003-07-25 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_open.c: avoid signed/unsigned casting warning
- initializing typemask as per patch from J.A. Strother.
-
- * tools/tiffcp.c: fixed signed/unsigned casting warning.
-
- * libtiff/tif_print.c: dos2unix conversion.
-
- * tools/tiffsplit.c: increased the maximum number of pages that
- can be split. Patch provided by Andrew J. Montalenti.
-
-2003-07-11 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/raw2tiff.c: Added option `-p' to explicitly select color
- space of input image data. Closes
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=364
-
-2003-07-08 Frank Warmerdam <warmerdam@pobox.com>
-
- * tif_aux.c, tif_codec.c, tif_dir.c, tif_dirread.c, tif_extension.c,
- tif_fax3.c, tif_getimage.c, tif_luv.c, tif_lzw.c, tif_next.c,
- tif_packbits.c, tif_predict.c, tif_print.c, tif_swab.c, tif_thunder.c:
- avoid casting warning at /W4.
-
-2003-07-03 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/thumbnail.c: Memory leak fixed as reported by Robert S. Kissel.
-
-2003-06-30 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_pixarlog.c: Unused variables removed.
-
- * libtiff/{tif_dirread.c, tif_dir.c}: Fixed problem with
- EstimateStripByteCounts() as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=358
-
- * libtiff/{tif_dirwrite.c, tif_packbits.c}: Fixed compilation on
- 64-bit architectures as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=357
-
- * libtiff/tif_dirinfo.c: TIFFDataWidth() returns 0 in case of
- unknown data type.
-
-2003-06-19 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_print.c: fixed some serious bugs when printing
- custom tags ... almost certain to crash.
-
- * libtiff/tif_dirread.c: Don't ignore custom fields that are
- autodefined. Not sure how this got to be like this.
-
-2003-06-18 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * 3.6.0 Beta2 released.
-
- * tools/tiffcmp.c, man/tiffcmp.1: Fixed problem with unused data
- comparing as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=349
-
- `-z' option now can be used to set the number of reported different
- bytes.
-
-2003-06-09 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffcp.c, man/tiffcp.1: Added possibility to specify value -1
- to -r option to get the entire image as one strip. See
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=343
-
- for details.
-
-2003-06-04 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffcp.c: Set the correct RowsPerStrip and PageNumber
- values as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=343
-
-2003-05-27 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_jpeg.c: modified segment_height calculation to always
- be a full height tile for tiled images. Also changed error to just
- be a warning.
-
-2003-05-25 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/fax2tiff.c: Page numbering fixed, as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=341
-
-2003-05-20 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * contrib/ojpeg/{Makefile.in, jdhuff.h, jinclude.h, ojpeg.c, README},
- configure, Makefile.in: Switched back to the old behaviour. Likely
- better solution should be found for OJPEG support.
-
-2003-05-11 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/mkversion.c: Fixed problem with wrong string size when
- reading RELEASE-DATE file.
-
-2003-05-07 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2ps.c: Fixed bug in Ascii85EncodeBlock() function: array
- index was out of range.
-
-2003-05-06 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * contrib/ojpeg/{Makefile.in, jdhuff.h, jinclude.h, ojpeg.c, README},
- configure, Makefile.in: Improved libtiff compilation with OJPEG
- support. Now no need for patching IJG JPEG library, hack requred by
- libtiff will be compiled and used in-place. Implemented with
- suggestion and help from Bill Allombert, Debian's libjpeg maintainer.
-
- * libtiff/tif_aux.c: Properly handle TIFFTAG_PREDICTOR in
- TIFFVGetFieldDefaulted() function.
-
-2003-05-05 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/ppm2tiff.c: PPM header parser improved: now able to skip
- comments.
-
- * tools/tiffdither.c: Fixed problem with bit fill order tag setting:
- was not copied from source image.
-
- * libtiff/getimage.c: Workaround for some images without correct
- info about alpha channel as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=331
-
-2003-04-29 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2ps.c, man/tiff2ps.1: Add ability to generate PS Level 3.
- It basically allows one to use the /flateDecode filter for ZIP
- compressed TIFF images. Patch supplied by Tom Kacvinsky. Fixes
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=328
-
- * tools/tiff2ps.c: Force deadzone printing when EPS output specified
- as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=325
-
-2003-04-17 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirread.c: Removed additional check for StripByteCounts
- due to problems with multidirectory images. Quality of error messages
- improved.
-
-2003-04-16 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiffcp.c: Fixed problem with colorspace conversion for JPEG
- encoded images. See bug entries
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=275
-
- and
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=23
-
- * libtiff/tif_dirread.c: Additional check for StripByteCounts
- correctness. Fixes
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=320
-
-2003-03-12 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/{fax2ps.c, fax2tiff.c, gif2tiff.c, pal2rgb.c, ppm2tiff.c,
- ras2tiff.c, raw2tiff.c, rgb2ycbcr.c, thumbnail.c, tiff2bw.c,
- tiff2ps.c, tiff2rgba.c, tiffcp.c, tiffdither.c, tiffinfo.c,
- tiffmedian.c}: Added library version reporting facility to all tools.
-
-2003-03-06 Frank Warmerdam <warmerdam@pobox.com>
-
- * port/install.sh.in: Fixed problems with install producing paths
- like ///usr/local/lib on cygwin.
-
-2003-02-27 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/fax2tiff.c, man/fax2tiff.1: New switch (-X) to set width of
- raw input page. Patch supplied by Julien Gaulmin. See
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=293
-
- for details.
-
-2003-02-26 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dir.c: fixed up the tif_postdecode settings
- responsible for byte swapping complex image data.
-
- * libtiff/tif_lzw.c: fixed so that decoder state isn't allocated till
- LZWSetupDecode(). Needed to read LZW files in "r+" mode.
-
-2003-02-07 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/ppm2tiff.c: Fixed problem with too many arguments.
-
-2003-02-04 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/raw2tiff.c: Memory leak fixed.
-
-2003-02-03 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/fax2tiff.c, man/fax2tiff.1: Applied patch from Julien Gaulmin
- (thanks, Julien!). More switches for fax2tiff tool for better control
- of input and output. Details at
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=272
-
-2003-02-03 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_jpeg.c: Modified to defer initialization of jpeg
- library so that we can check if there is already any tile/strip data
- before deciding between creating a compressor or a decompressor.
-
-2003-01-31 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_write.c: TIFFWriteCheck() now fails if the image is
- a pre-existing compressed image. That is, image writing to
- pre-existing compressed images is not allowed.
-
- * libtiff/tif_open.c: Removed error if opening a compressed file
- in update mode.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=198
-
-2003-01-31 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * config.guess, config.sub: Updated to recent upstream versions.
-
-2003-01-15 Frank Warmerdam <warmerdam@pobox.com>
-
- * cut 3.6.0 Beta release.
-
-2002-12-20 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/fax2ps.c, man/fax2ps.1: Page size was determined
- in wrong way as per bug
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=239
-
-2002-12-17 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dirread.c: Allow wrong sized arrays in
- TIFFFetchStripThing().
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=49
-
-2002-12-02 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dir.c: fix problem with test on td_customValueCount.
- Was using realloc even first time. Fix by Igor Venevtsev.
-
-2002-11-30 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dir.c: fixed bug with resetting an existing custom
- field value.
-
- * libtiff/tif_dir.c: Fixed potential problem with ascii "custom"
- tags in TIFFVGetField() ... added missing break.
-
-2002-10-14 Frank Warmerdam <warmerdam@pobox.com>
-
- * tools/tiff2ps.c: fixes a problem where "tiff2ps -1e" did not make
- the scanline buffer long enough when writing rgb triplets.
- The scanline needs to be 3 X the number of dots or else it will
- contain an incomplete triplet and programs that try to separate
- the eps by redefining the colorimage operator will get messed up.
- Patch supplied by William Bader.
-
- * Makefile.in: added tif_extension.c to file list as per
- http://bugzilla.remotesensing.org/show_bug.cgi?id=218.
-
-2002-10-11 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * configure, config.site, libtiff/{tif_unix.c, Makefile.in}: Fix for
- large files (>2GiB) supporting. New option in the config.site:
- LARGEFILE="yes". Should be enough for I/O of the large files.
-
-2002-10-10 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/html/v3.6.0.html: new release notes.
-
- * libtiff/index.html: removed faq, cvs snapshot cruft. Added email
- link for Andrey. Pointer to v3.6.0.html.
-
- * libtiff/Makefile.in: added direct rule for tiffvers.h for release.
-
-2002-10-07 Andrey Kiselev <dron@ak4719.spb.edu>
- * tools/tiff2ps.c, man/tiff2ps.1: Applied patch form Sebastian Eken
- (thanks, Sebastian!). New switches:
- -b # for a bottom margin of # inches
- -c center image
- -l # for a left margin of # inches
- -r rotate the image by 180 degrees
- New features merged with code for shrinking/overlapping.
- Previously added -c and -n switches (for overriding PS units) renamed
- in -x and -y respectively.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=200
-
- * html/man/*.html: Updated from actual manual pages.
-
-2002-10-06 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_jpeg.c: fixed problem with boolean defined with wrong
- size on windows. Use #define boolean hack.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=188
-
- * libtiff/tiff.h: Don't do special type handling in tiff.h unless
- USING_VISUALAGE is defined.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=39
-
-2002-10-03 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tiff.h: added COMPRESSION_JP2000.
-
-2002-10-02 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_dirread.c: Another fix for the fetching SBYTE arrays
- by the TIFFFetchByteArray() function. Should finally resolve
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=52
-
- * configure: Set -DPIXARLOG_SUPPORT option along with -DZIP_SUPPORT
-
- * html/Makefile.in: New targets added: html and groffhtml for
- producing HTML representations of the manual pages automatically.
- html target uses man2html tool, groffhtml uses groff tool.
-
-2002-09-29 Frank Warmerdam <warmerdam@pobox.com>
-
- * configure, libtiff/Makefile.in: Added SCO OpenServer 5.0.6 support
- from John H. DuBois III.
-
-2002-09-15 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * Makefile.in, /man/{raw2tiff.1, Makefile.in, libtiff.3}: Added
- manual page for raw2tiff(1) tool.
-
-2002-09-12 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * /libtiff/{tiffio.h, tif_dir.h}: TIFFDataWidth() declaration moved to
- the tiffio.h header file.
-
- * Makefile.in, /man/{TIFFDataWidth.3t, Makefile.in, libtiff.3}: Added
- manual page for TIFFDataWidth() function
-
-2002-09-08 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dirread.c: Expand v[2] to v[4] in TIFFFetchShortPair()
- as per http://bugzilla.remotesensing.org/show_bug.cgi?id=196.
-
- * tools/tiff2ps.c: Don't emit BeginData/EndData DSC comments
- since we are unable to properly include the amount to skip.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=80
-
-2002-09-02 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * /libtiff/tif_dirread.c: Fixed problem with SBYTE type data fetching
- in TIFFFetchByteArray(). Problem described at
- http://bugzilla.remotesensing.org/show_bug.cgi?id=52
-
-2002-08-22 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * /libtiff/tif_dirinfo.c: Further additions to free custom fields
- in _TIFFSetupFieldInfo() function.
- See http://bugzilla.remotesensing.org/show_bug.cgi?id=169 for details.
-
- * /libtiff/tif_lzw.c: Additional consistency checking added in
- LZWDecode() and LZWDecodeCompat().
- Fixes http://bugzilla.remotesensing.org/show_bug.cgi?id=190
- and http://bugzilla.remotesensing.org/show_bug.cgi?id=100
-
- * /libtiff/tif_lzw.c:
- Added check for valid code lengths in LZWDecode() and
- LZWDecodeCompat(). Fixes
- http://bugzilla.remotesensing.org/show_bug.cgi?id=115
-
-2002-08-16 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * /libtiff/{Makefile.vc, libtiff.def}:
- Missed declarations added.
-
-2002-08-15 Frank Warmerdam <warmerdam@pobox.com>
-
- * tif_getimage.c: Ensure that TIFFRGBAImageBegin() returns the
- return code from the underlying pick function.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=177
-
- * tif_dir.h: changed FIELD_CODEC to 66 from 64 to avoid overlap
- with FIELD_CUSTOM as mentioned in bug 169.
-
- * tif_close.c: added logic to free dynamically created anonymous
- field definitions to correct a small memory leak.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=169
-
-2002-08-10 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * /tools/{raw2tiff.c, Makefile.in, Makefile.lcc, Makefile.vc}:
- New tool: raw2tiff --- raw images to TIFF converter. No manual page yet.
-
-2002-07-31 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_jpeg.c: Fixed problem with setting of nrows in
- JPEGDecode() as per bugzilla bug (issue 1):
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=129
-
- * libtiff/{tif_jpeg.c,tif_strip.c,tif_print.c}: Hacked tif_jpeg.c to
- fetch TIFFTAG_YCBCRSUBSAMPLING from the jpeg data stream if it isn't
- present in the tiff tags.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=168
-
- * libtiff/tif_read.c, libtiff/tif_write.c: TIFFReadScanline() and
- TIFFWriteScanline() now set tif_row explicitly in case the codec has
- fooled with the value.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=129
-
-2002-06-22 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * /tools/tiff2ps.c: Added workaround for some software that may crash
- when last strip of image contains fewer number of scanlines than
- specified by the `/Height' variable. See
- http://bugzilla.remotesensing.org/show_bug.cgi?id=164
- for explanation.
-
-2002-06-21 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2ps, man/tiff2ps.1: New functionality for tiff2ps utility:
- splitting long images in several pages. See
- http://bugzilla.remotesensing.org/show_bug.cgi?id=142 for explanation.
- Patch granted by John Williams <williams@morinda.com>.
-
-2002-06-11 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/contrib/win95: renamed to contrib/win_dib. Added new
- Tiffile.cpp example of converting TIFF files into a DIB on Win32.
- This one is described in:
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=143
-
- * libtiff/tif_ojpeg.c: Major upgrade from Scott. See details at:
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=156
-
-2002-05-10 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2ps: New commandline switches to override resolution
- units obtained from the input file. Closes
- http://bugzilla.remotesensing.org/show_bug.cgi?id=131
-
-2002-04-26 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/libtiff.def: Added missed declaration.
-
-2002-04-22 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/fax2tiff.c: Updated to reflect latest changes in libtiff.
- Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=125
-
-2002-04-20 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_open.c: Pointers to custom procedures
- in TIFFClientOpen() are checked to be not NULL-pointers.
-
-2002-04-18 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/libtiff.def: Added missed declarations.
-
- * libtiff/tif_pixarlog.c: Updated for using tif_tagmethods structure.
-
-2002-04-16 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_lzw.c: Additional checks for data integrity introduced.
- Should finally close
- http://bugzilla.remotesensing.org/show_bug.cgi?id=100
-
-2002-04-10 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/tiff2ps: Division by zero fixed.
- Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=88
-
-2002-04-09 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/: tif_dirwrite.c, tif_write.c, tiffio.h:
- TIFFCheckpointDirectory() routine added.
- Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=124
-
- * man/: TIFFWriteDirectory.3t, Makefile.in: Added description
- for the new function.
-
-2002-04-08 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/: tif_codec.c, tif_compress.c, tiffiop.h: Introduced
- additional members tif->tif_decodestatus and tif->tif_encodestatus
- for correct handling of unconfigured codecs (we should not try to read
- data or to define data size without correct codecs).
-
- * libtiff/tif_getimage.c: The way of codecs checking in TIFFRGBAImageOK
- changed. Now it has used tif->tif_decodestatus and
- tif->tif_encodestatus.
- Should fix http://bugzilla.remotesensing.org/show_bug.cgi?id=119 (in
- case of __cvs_8.tif test image).
-
- * libtiff/: tif_dirinfo.c, tif_dirread.c: Somebody makes a bug in
- tif_dirread.c when TIFFCreateAnonFieldInfo was introduced.
- Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=119 in case
- of _cvs_00000-00.tif, _cvs_00000-01.tif and _cvs_00000-02.tif.
-
-2002-04-04 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/: tif_lzw.c: Assertions in LZWDecode and LZWDecodeCompat
- replaced by warnings. Now libtiff should read corrupted LZW-compressed
- files by skipping bad strips.
- Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=100
-
-2002-04-03 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dirwrite.c: Removed some dead code.
-
- * libtiff/*: Cleanup some warnings.
-
- * libtiff/tif_dir.c: Fixed bug with count returned by TIFFGetField()
- for variable length FIELD_CUSTOM values. Was int * but should be
- u_short *.
-
-2002-04-01 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * tools/: tifcp.c: Added support for 'Orientation' tag in tiffcp
- utility (at cpStripToTile routine).
-
-2002-03-27 Frank Warmerdam <warmerdam@pobox.com>
-
- * tif_dirread.c: avoid div-by-zero if rowbytes is zero in chop func.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=111
-
- * tif_print.c: Fixed so that ASCII FIELD_CUSTOM values with
- passcount set FALSE can be printed (such as TIFFTAG_SOFTWARE).
-
- * libtiff/tif_dir.c,tif_dirinfo.c,tif_dir.h,tif_ojpeg.c: modified so
- that TIFFTAG_SOFTWARE uses FIELD_CUSTOM as an example.
-
-2002-03-26 Dwight Kelly <dbmalloc@remotesensing.org>
-
- * libtiff/: tiff.h, tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c,
- tif_dirwrite.c: Added get/put code for new tag XMLPACKET as defined
- in Adobe XMP Technote. Added missing INKSET tag value from TIFF 6.0 spec
- INKSET_MULTIINK (=2). Added missing tags from Adobe TIFF technotes:
- CLIPPATH, XCLIPPATHUNITS, YCLIPPATHUNITS, OPIIMAGEID, OPIPROXY and
- INDEXED. Added PHOTOMETRIC tag value from TIFF technote 4 ICCLAB (=9).
-
-2002-03-26 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/: tif_getimage.c: TIFFReadRGBAStrip and TIFFReadRGBATile
- now also uses TIFFRGBAImageOK before reading. This is additional fix
- for http://bugzilla.remotesensing.org/show_bug.cgi?id=110
-
-2002-03-25 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/: tif_getimage.c: Additional check for supported
- codecs added in TIFFRGBAImageOK and TIFFReadRGBAImage now uses
- TIFFRGBAImageOK before reading.
- Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=110
-
-2002-03-15 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/: tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c,
- tif_dirwrite.c: Added routine TIFFDataWidth for detrmining
- TIFFDataType sizes instead of working with tiffDataWidth array
- directly. Should prevent out-of-borders bugs in case of unknown or
- broken data types. EstimateStripByteCounts routine modified, so it
- won't work when tags with uknown sizes founded.
- Closes http://bugzilla.remotesensing.org/show_bug.cgi?id=109
-
-2002-03-13 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/tif_getimage.c: Added support for correct handling
- `Orientation' tag in gtTileContig. Should be added in other gt*
- functions as well, but I have not images for testing yet. Partially
- resolves http://bugzilla.remotesensing.org/show_bug.cgi?id=23
-
-2002-03-10 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/: tif_dirinfo.c, tif_dirwrite.c: Added possibility to
- read broken TIFFs with LONG type used for TIFFTAG_COMPRESSION,
- TIFFTAG_BITSPERSAMPLE, TIFFTAG_PHOTOMETRIC. Closes
- http://bugzilla.remotesensing.org/show_bug.cgi?id=99
-
-2002-03-08 Andrey Kiselev <dron@ak4719.spb.edu>
-
- * libtiff/Makefile.in, tools/Makefile.in: Shared library will not
- be stripped when installing, utility binaries will do. Closes
- http://bugzilla.remotesensing.org/show_bug.cgi?id=93
-
-2002-02-28 Frank Warmerdam <warmerdam@pobox.com>
-
- * man/TIFFGetField: fixed type of TIFFTAG_COPYRIGHT.
-
- * man/libtiff.3t: added copyright tag info.
-
-2002-02-11 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/{tiff.h,tif_fax3.c}: Add support for __arch64__.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=94
-
- * man/Makefile.in: Patch DESTDIR handling
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=95
-
- * configure: OpenBSD changes for Sparc64 and DSO version.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=96
-
-2002-02-05 Frank Warmerdam <warmerdam@pobox.com>
-
- * config.site/configure: added support for OJPEG=yes option to enable
- OJPEG support from config.site.
-
-2002-01-27 Frank Warmerdam <warmerdam@pobox.com>
-
- * html/document.html: fixed links for TIFf 6 docs.
-
-2002-01-18 Frank Warmerdam <warmerdam@pobox.com>
-
- * config.guess, config.sub: Updated from ftp.gnu.org/pub/config.
-
- * libtiff/tif_read.c: Fixed TIFFReadEncodedStrip() to fail if the
- decodestrip function returns anything not greater than zero as per
- http://bugzilla.remotesensing.org/show_bug.cgi?id=97
-
- * configure: Modify CheckForBigEndian so it can work in a cross
- compiled situation.
-
-2002-01-16 Frank Warmerdam <warmerdam@pobox.com>
-
- * tools/tiffdump.c: include TIFFTAG_JPEGTABLES in tag list.
-
- * tools/tiffset.c: fix bug in error reporting.
-
- * tools/tiffcp.c: fix several warnings that show up with -Wall.
-
-2002-01-04 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_jpeg.c: fixed computation of segment_width for
- tiles files to avoid error about it not matching the
- cinfo.d.image_width values ("JPEGPreDecode: Improper JPEG strip/tile
- size.") for ITIFF files. Apparently the problem was incorporated since
- 3.5.5, presumably during the OJPEG/JPEG work recently.
-
-2001-12-15 Frank Warmerdam <warmerdam@pobox.com>
-
- * configure, libtiff/Makefile.in: Changes for building on MacOS 10.1.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=94
-
- * libtiff/tif_getimage.c: If DEFAULT_EXTRASAMPLE_AS_ALPHA is 1
- (defined in tiffconf.h - 1 by default) then the RGBA interface
- will assume that a fourth extra sample is ASSOCALPHA if the
- EXTRASAMPLE value isn't set for it. This changes the behaviour of
- the library, but makes it work better with RGBA files produced by
- lots of applications that don't mark the alpha values properly.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=93
- http://bugzilla.remotesensing.org/show_bug.cgi?id=65
-
-2001-12-12 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_jpeg.c: allow jpeg data stream sampling values to
- override those from tiff directory. This makes this work with
- ImageGear generated files.
-
-2001-12-07 Frank Warmerdam <warmerdam@pobox.com>
-
- * html/Makefile.in: added missing images per bug 92.
-
- * port/Makefile.in: fixed clean target per bug 92.
-
-2001-11-28 Frank Warmerdam <warmerdam@pobox.com>
-
- * Reissue 3.5.7 release.
-
- * libtiff/mkversion.c: Fix output of TIFF_VERSION to be
- YYYYMMDD so that it is increasing over time.
-
- * Makefile.in: Ensure that tiffvers.h is regenerated in the
- make release target.
-
- * Makefile.in: added libtiff/tiffvers.h to the release file list.
-
-2001-11-23 Frank Warmerdam <warmerdam@pobox.com>
-
- * added html/v3.5.7.html, updated html/index.html.
-
- * Makefile.in: added contrib/addtiffo/tif_ovrcache.{c,h}.
-
-2001-11-15 Frank Warmerdam <warmerdam@pobox.com>
-
- * configure: fixed test for -lm.
-
-2001-11-02 Frank Warmerdam <warmerdam@pobox.com>
-
- * Added PHOTOMETRIC_ITULAB as per bug 90.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=90
-
-2001-10-10 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tiff.h: I have created COMPRESSION_CCITT_T4,
- COMPRESSION_CCITT_T6, TIFFTAG_T4OPTIONS and TIFFTAG_T6OPTIONS aliases
- in keeping with TIFF 6.0 standard in tiff.h
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=83
-
-2001-09-26 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dirwrite.c: added TIFFRewriteDirectory() function.
- Updated TIFFWriteDirectory man page to include TIFFRewriteDirectory.
-
-2001-09-24 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_lzw.c: Avoid MS VC++ 5.0 optimization bug.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=78
-
- * libtiff/tif_lzw.c: added dummy LZWSetupEncode() to report an
- error about LZW not being available.
-
- * libtiff/tif_dir.c: propagate failure to initialize compression
- back from TIFFSetField() as an error status, so applications can
- detect failure.
-
- * libtiff/tif_dir.c: removed the auto replacement of
- COMPRESSION_LZW with COMPRESSION_NONE in _TIFFVSetField().
-
- * Removed Makefile, tools/Makefile, port/install.sh, man/Makefile
- from CVS as they are all supposed to be auto-generated by configure.
-
-2001-09-22 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_ojpeg.c: new update from Scott.
-
-2001-09-09 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtif/tif_fax3.c: Removed #ifdef PURIFY logic, and modified to
- always use the "safe" version, even if there is a very slight
- cost in performance.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=54
-
- * libtiff/Makefile.in: Fixed @DSOSUB_VERSION to be @DSOSUF_VERSION@
- in two places.
-
- * libtiff/tif_getimage.c: Fixed problem with reading strips or
- tiles that don't start on a tile boundary. Fix contributed by
- Josep Vallverdu (from HP), and further described in bug 47.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=47
-
- * tools/tiff2ps.c: added OJPEG YCbCr to RGB support.
-
- * libtiff/tif_ojpeg.c: Applied substantial patch from Scott.
-
-2001-09-06 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_packbits.c: fixed memory overrun error.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=77
-
-2001-08-31 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_getimage.c: relax handling of contig case where
- there are extra samples that are supposed to be ignored. This
- should now work for 8bit greyscale or palletted images.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=75
-
-2001-08-28 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_getimage.c: Don't complain for CMYK (separated)
- images with more than four samples per pixel. See:
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=73
-
-2001-08-10 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_getimage.c: Use memmove() instead of TIFFmemcpy()
- in TIFFReadRGBATile() to avoid issues in cases of overlapping
- buffers. See Bug 69 in Bugzilla.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=69
-
- * tools/tiff2rgba.c: fixed getopt() call so that -b works again.
-
-2001-08-09 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tiff.h, libtiff/tif_fax3.c: added check for __LP64__
- when checking for 64 bit architectures as per bugzilla bug 67.
-
-2001-07-27 Frank Warmerdam <warmerdam@pobox.com>
-
- * man/Makefile.in: add TIFFClientOpen link as per debian submitted
- bug 66.
-
-2001-07-20 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_jpeg.c: Define HAVE_BOOLEAN on windows if RPCNDR.H
- has been included.
-
-2001-07-19 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_open.c: Seek back to zero after failed read,
- before writing header.
-
-2001-07-18 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_ojpeg.c: updates from Scott. Handles colors
- much better. Now depends on having patched libjpeg as per
- patch in contrib/ojpeg/*.
-
-2001-07-17 Frank Warmerdam <warmerdam@pobox.com>
-
- * */Makefile.in: added DESTDIR support.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=60
-
-2001-07-16 Frank Warmerdam <warmerdam@pobox.com>
-
- * configure, libtiff/Makefile.in: applied OpenBSD patches
- as per:
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=61
-
-2001-06-28 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_getimage.c: Fixed so that failure is properly
- reported by gtTileContig, gtStripContig, gtTileSeparate and
- gtStripSeparate.
-
- See http://bugzilla.remotesensing.org/show_bug.cgi?id=51
-
- * tiffcmp.c: Fixed multi samples per pixel support for ContigCompare.
- Updated bug section of tiffcmp.1 to note tiled file issues.
-
- See http://bugzilla.remotesensing.org/show_bug.cgi?id=53
-
-2001-06-22 Frank Warmerdam <warmerdam@pobox.com>
-
- * configure: Changes for DSO generation on AIX provided by
- John Marquart <jomarqua@indiana.edu>.
-
- * configure, libtiff/Makeifle.in: Modified to build DSOs properly
- on Darwin thanks to Robert Krajewski (rpk@alum.mit.edu) and
- Keisuke Fujii (fujiik@jlcuxf.kek.jp).
-
-2001-06-13 Frank Warmerdam <warmerdam@pobox.com>
-
- * tools/tiff2rgba.c: added -n flag to avoid emitting alpha component.
-
- * man/tiff2rgba.1: new
-
-2001-05-22 Frank Warmerdam <warmerdam@pobox.com>
-
- * Added tiffset and tif_ojpeg to the dist lists in Makefile.in.
-
-2001-05-13 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tools/thumbnail.c: changed default output compression
- to packbits from LZW since LZW isn't generally available.
-
-2001-05-12 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_ojpeg.c: New.
- libtiff/tif_jpeg.c, tiffconf.h, tif_getimage.c: changes related
- to OJPEG support.
-
- Scott Marovich <marovich@hpl.hp.com> supplied OJPEG support.
-
-2001-05-11 Frank Warmerdam <warmerdam@pobox.com>
-
- * tiff.h: removed, it duplicates libtiff/tiff.h.
-
-2001-05-08 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dirinfo.c: moved pixar and copyright flags to
- ensure everything is in order.
-
- * libtiff/libtiff.def: added TIFFCreateDirectory and
- TIFFDefaultStripSize as per:
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=46
-
-2001-05-02 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dirinfo.c: Modified the TIFF_BYTE definition for
- TIFFTAG_PHOTOSHOP to use a writecount of TIFF_VARIABLE2 (-3) to
- force use of uint32 counts instead of short counts.
-
- * libtiff/tif_dirwrite.c: Added support for TIFF_VARIABLE2 in the
- case of writing TIFF_BYTE/TIFF_SBYTE fields.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=43
-
-2001-05-01 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_dirinfo.c: removed duplicate TIFFTAG_PHOTOSHOP as per
- bug report http://bugzilla.remotesensing.org/show_bug.cgi?id=44
-
-2001-04-05 Frank Warmerdam <warmerdam@pobox.com>
-
- * tiffio.h: removed C++ style comment.
-
- * configure: fixed up SCRIPT_SH/SHELL handling.
-
- * Makefile.in: Fixed SCRIPT_SH/SHELL handling.
-
- * config.guess: documented more variables as per bug 40.
-
-2001-04-03 Frank Warmerdam <warmerdam@pobox.com>
-
- * configure, *Makefile.in: Various changes to improve configuration
- for HP/UX specifically, and also in general. They include:
- - Try to handle /usr/bin/sh instead of /bin/sh where necessary.
- - Upgrade to HP/UX 10.x+ compiler, linker and dso options.
- - Fixed mmap() test to avoid MMAP_FIXED ... it isn't available on HP
- - Use -${MAKEFLAGS} in sub makes from makefiles.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=40
-
-2001-04-02 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tiff.h: Applied hac to try and resolve the problem
- with the inttypes.h include file on AIX.
-
- See http://bugzilla.remotesensing.org/show_bug.cgi?id=39
-
- * VERSION: update to 3.5.7 beta in preparation for release.
-
- * configure/config.site: modified to check if -lm is needed for
- MACHDEPLIBS if not supplied by config.site. Needed for Darwin.
-
- * config.guess: updated wholesale to an FSF version apparently
- from 1998 (as opposed to 1994). This is mainly inspired by
- providing for MacOS X support.
-
-2001-03-29 Frank Warmerdam <warmerdam@pobox.com>
-
- * configure, Makefile.in, etc: added support for OPTIMIZER being
- set from config.site.
-
-2001-03-28 Frank Warmerdam <warmerdam@pobox.com>
-
- * fax2ps.c: Helge (libtiff at oldach.net) submitted fix:
-
- Here's a fix for fax2ps that corrects behaviour for non-Letter paper
- sizes. It fixes two problems:
-
- Without scaling (-S) the fax is now centered on the page size specified
- with -H and/or -W. Before, fax2ps was using an obscure and practially
- useless algorithm to allocate the image relative to Letter sized paper
- which sometime sled to useless whitespace on the paper, while at the
- same time cutting of the faxes printable area at the opposite border.
-
- Second, scaling now preserves aspect ratio, which makes unusual faxes
- (in particular short ones) print properly.
-
- See http://bugzilla.remotesensing.org/show_bug.cgi?id=35
-
- * tiff2ps.c/tiff2ps.1: Substantial changes to tiff2ps by
- Bruce A. Mallett. See check message for detailed information
- on all the changes, including a faster encoder, fixes for level
- 2 PostScript, and support for the imagemask operator.
-
-2001-03-27 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tiffio.h: Changed "#if LOGLUV_PUBLIC" to
- "#ifdef LOGLUV_PUBLIC" so it will work with VisualAge on AIX.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=39
-
-2001-03-16 Frank Warmerdam <warmerdam@pobox.com>
-
- * tif_dirinfo.c: moved definition of copyright tag in field list.
- Apparently they have to be in sorted order by tag id.
-
-2001-03-13 Frank Warmerdam <warmerdam@pobox.com>
-
- * tif_getimage.c: Added support for 16bit minisblack/miniswhite
- images in RGBA interface.
-
-2001-03-02 Frank Warmerdam <warmerdam@pobox.com>
-
- * Added TIFFTAG_COPYRIGHT support.
-
-2001-02-19 Frank Warmerdam <warmerdam@pobox.com>
-
- * Brent Roman contributed updated tiffcp utility (and tiffcp.1)
- with support for extracting subimages with the ,n syntax, and also
- adding the -b bias removal flag.
-
-2001-02-16 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/libtiff.def: Brent Roman submitted new version adding
- serveral missing entry points.
-
- * libtiff/tif_dirinfo.c: don't declare tiffFieldInfo static on VMS.
- Some sort of weird VMS thing.
-
- http://bugzilla.remotesensing.org/show_bug.cgi?id=31
-
- * tif_luv.c/tiff.h/tiffio.h:
- New version of TIFF LogLuv (SGILOG) modules contributed by Greg Ward
- (greg@shutterfly.com). He writes:
-
- 1) I improved the gamut-mapping function in tif_luv.c for imaginary
- colors, because some images were being super-saturated on the input
- side and this resulted in some strange color shifts in the output.
-
- 2) I added a psuedotag in tiff.h to control random dithering during
- LogLuv encoding. This is turned off by default for 32-bit LogLuv and
- on for 24-bit LogLuv output. Dithering improves the average color
- accuracy over the image.
-
- 3) I added a #define for LOG_LUV_PUBLIC, which is enabled by default in
- tiffio.h, to expose internal routines for converting between LogLuv and
- XYZ coordinates. This is helpful for writing more efficient,
- specialized conversion routines, especially for reading LogLuv files.
-
- Changes applied with minor edits.
-
-2001-01-23 Frank Warmerdam <warmerdam@pobox.com>
-
- * tif_fax3.c: keep rw_mode flag internal to fax3 state to remember
- whether we are encoding or decoding. This is to ensure graceful
- recovery if TIFFClientOpen() discovers an attempt to open a compressed
- file for "r+" access, and subsequently close it, as it resets the
- tif_mode flag to O_RDONLY in this case to avoid writes, confusing the
- compressor's concept of whether it is in encode or decode mode.
-
-2001-01-08 Mike Welles <mike@bangstate.com>
-
- * Makefile.in: Now cleaning up after itself after creating the .tar.gz and .zip
-
-2001-01-07 Frank Warmerdam <warmerdam@pobox.com>
-
- * html/libtiff.html: Fixed arguments in example for TIFFRGBAImageGet()
- as per bug report by Patrick Connor.
-
-2000-12-28 Frank Warmerdam <warmerdam@pobox.com>
-
- * Added RELEASE-DATE file to release file list.
-
- * Fixed libtiff/makefile.vc to make tiffvers.h not version.h.
-
-2000-12-22 Mike Welles <mike@bangstate.com>
- * added link to CVS mirror from index.html
-
- * updated html/internals.html to note that LZW compression is
- not supported by default.
-
-2000-12-22 Frank Warmerdam <warmerdam@pobox.com>
-
- * updated html/libtiff.html to not point at Niles' old JPL web site
- for the man pages, point at www.libtiff.org.
-
-2000-12-21 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/tif_apple.c: Applied "Carbon" support patches supplied by
- Leonard Rosenthol <leonardr@lazerware.com>. May interfere
- with correct building on older systems. If so, please let me know.
-
-2000-12-19 Mike Welles <mike@bangsate.com>
-
- * Took out LZW Encoding from tif_lzw.c
-
- * Created HOWTO-RELEASE
-
- * Created html/v3.5.6.html
-
- * updated index.html
-
-2000-12-01 Frank Warmerdam <warmerdam@pobox.com>
-
- * Added patches for EOFB support in tif_fax3.c and tif_fax3.h.
- Patches supplied by Frank Cringle <fdc@cliwe.ping.de>
- Example file at: ftp://ftp.remotesensing.org/pub/libtiff/eofb_396.tif
-
-2000-11-24 Frank Warmerdam <warmerdam@pobox.com>
-
- * libtiff/Makefile.in: Added an installPrivateHdrs and install-private
- target so that the private headers required by libgeotiff can be
- installed with the others. They are not installed by default.
-
- * libtiff/Makefile.in: Added @MACHLIBDEPS@ to LINUXdso and GNULDdso
- targets so libtiff.so will be built with an explicit dependency
- on libm.so.
-
- * libtiff/Makefile.in: Use softlinks to link libtiff.so.3 to
- libtiff.so.3.5.5.
-
- * libtiff/Makefile.in & configure: Remove all references to the ALPHA
- file, or ALPHA version logic. Added stuff about DIST_POINT in
- place of DIST_TYPE and the alpha release number stuff.
-
-2000-11-22 Frank Warmerdam <warmerdam@pobox.com>
-
- * I have applied a patch from Steffen Moeller <moeller@ebi.ac.uk> to
- the configure script so that it now accepts the --prefix, and
- --exec-prefix directives.
-
-2000-11-13 Frank Warmerdam <warmerda@cs46980-c>
-
- * I have made a variety of modifications in an effort to ensure the
- TIFFLIB_VERSION macro is automatically generated from the RELEASE-DATE
- file which seems to be updated regularly.
-
- o mkversion.c now reads RELEASE-DATE and emits TIFFLIB_VERSION in
- version include file.
- o renamed version.h to tiffvers.h because we now have to install it
- with the public libtiff include files.
- o include tiffvers.h in tiffio.h.
- o updated tif_version.c to use tiffvers.h.
- o Updated Makefile.in accordingly.
-
- * As per http://bugzilla.remotesensing.org/show_bug.cgi?id=25
- I have updated the win32 detection rules in tiffcomp.h.
-
-2000-10-20 Frank Warmerdam <warmerda@cs46980-c>
-
- * tif_getimage.c: Fixed RGBA translation for YCbCr images for which
- the strip/tile width and height aren't multiples of the sampling size.
- See http://bugzilla.remotesensing.org/show_bug.cgi?id=20
- Some patches from Rick LaMont of Dot C Software.
-
- * Modified tif_packbits.c encoder to avoid compressing more
- data than provided if rowsize doesn't factor into provided data
- (such as occurs for YCbCr).
-
-2000-10-19 Frank Warmerdam <warmerda@cs46980-c>
-
- * tools/rgb2ycbcr.c: fixed output strip size to account for vertical
- roundup if rows_per_strip not a multiple of vertical sample size.
-
-2000-10-16 Frank Warmerdam <warmerda@cs46980-c>
-
- * tif_dir.c: Clear TIFF_ISTILED flag in TIFFDefaultDirectory
- as per http://bugzilla.remotesensing.org/show_bug.cgi?id=18
- from vandrove@vc.cvut.cz.
-
- * Modified tif_packbits.c decoding to avoid overrunning the
- output buffer, and to issue a warning if data needs to be
- discarded. See http://bugzilla.remotesensing.org/show_bug.cgi?id=18
-
-2000-10-12 Frank Warmerdam <warmerda@cs46980-c>
-
- * Modified tiff2bw to ensure portions add to 100%, and that
- white is properly recovered.
-
- See bug http://bugzilla.remotesensing.org/show_bug.cgi?id=15
- Patch c/o Stanislav Brabec <utx@penguin.cz>
-
-2000-09-30 Frank Warmerdam <warmerda@cs46980-c>
-
- * Modified TIFFClientOpen() to emit an error on an attempt to
- open a comperessed file for update (O_RDWR/r+) access. This is
- because the compressor/decompressor code gets very confused when
- the mode is O_RDWR, assuming this means writing only. See
- bug http://bugzilla.remotesensing.org/show_bug.cgi?id=13
-
-2000-09-27 Frank Warmerdam <warmerda@cs46980-c>
-
- * Added GNULDdso target an`d switched linux and freebsd to use it.
-
-2000-09-26 Frank Warmerdam <warmerda@cs46980-c>
-
- * Applied patch for 0x0000 sequences in tif_fax3.h's definition
- of EXPAND1D() as per bug 11 (from Roman).
-
-2000-09-25 Frank Warmerdam <warmerda@cs46980-c>
- * Fixed tiffcomp.h to avoid win32 stuff if unix #defined, to improve
- cygwin compatibility.
-
- * Applied patch from Roman Shpount to tif_fax3.c. This seems to
- be a proper fix to the buffer sizing problem. See
- http://bugzilla.remotesensing.org/show_bug.cgi?id=11
-
- * Fixed tif_getimage.c to fix overrun bug with YCbCr images without
- downsampling. http://bugzilla.remotesensing.org/show_bug.cgi?id=10
- Thanks to Nick Lamb <njl98r@ecs.soton.ac.uk> for reporting the
- bug and proving the patch.
-
-2000-09-18 Frank Warmerdam <warmerda@cs46980-c>
-
- * Fixed tif_jpeg.c so avoid destroying the decompressor before
- we are done access data thanks to bug report from:
- Michael Eckstein <eckstein@gepro.cz>.
-
- * Reverted tif_flush change.
-
-2000-09-14 Frank Warmerdam <warmerda@cs46980-c>
-
- * tif_flush.c: Changed so that TIFFFlushData() doesn't return an
- error when TIFF_BEENWRITING is not set. This ensures that the
- directory contents can still be flushed by TIFFFlush().
-
-2000-08-14 Frank Warmerdam <warmerda@rommel.atlsci.com>
-
- * tif_open.c: Don't set MMAP for O_RDWR files.
-
- * tif_open.c: Set STRIPCHOP_DEFAULT for O_RDWR as well as O_RDONLY
- so that files opened for update can be strip chopped too.
-
- * tif_read.c: fixed up bug with files missing rowsperstrip and
- the strips per separation fix done a few weeks ago.
-
-2000-07-17 Frank Warmerdam <warmerda@cs46980-c>
-
- * Tentatively added support for SAMPLEFORMAT_COMPLEXIEEEFP, and
- SAMPLEFORMAT_COMPLEXINT.
-
-2000-07-13 Mike Welles <mike@onshore.com>
-
- * index.html, bugs.html: added bugzilla info.
-
-2000-07-12 Frank Warmerdam <warmerda@rommel.atlsci.com>
-
- * tif_read.c: fix subtle bug with determining the number of
- rows for strips that are the last strip in a separation but
- not the last strip of all in TIFFReadEncodedStrip().
-
- * Applied 16/32 bit fix to tif_fax3.c. Fix supplied by
- Peter Skarpetis <peters@serendipity-software.com.au>
-
-2000-06-15 Frank Warmerdam <warmerda@rommel.atlsci.com>
-
- * Modified tiffio.h logic with regard to including windows.h. It
- won't include it when building with __CYGWIN__.
-
-2000-05-11 Frank Warmerdam <warmerda@cs46980-c>
-
- * README: update to mention www.libtiff.org, don't list Sam's old
- email address.
-
- * configure: Fixed DSO test for Linux as per patch from
- Jan Van Buggenhout <chipzz@Ace.ULYSSIS.Student.KULeuven.Ac.Be>.
-
-2000-04-21 Frank Warmerdam <warmerda@rommel.atlsci.com>
-
- * libtiff/tif_dirread.c: Don't use estimate strip byte count for
- one tile/strip images with an offset, and byte count of zero. These
- could be "unpopulated" images.
-
-2000-04-18 Frank Warmerdam <warmerda@rommel.atlsci.com>
-
- * contrib/addtiffo: Added "averaging" resampling option.
-
- * tools/tiffsplit.c: Copy TIFFTAG_SAMPLEFORMAT.
-
-Tue Apr 18 16:18:08 2000 Frank Warmerdam <warmerda@esabot.atlsci.com>
-
- * tools/Makefile.in: Modified to install properly on SGI.
-
-2000-04-12 Mike Welles <mike@onshore.com>
- * configure: Fixed stupid mistake in libc6 test on Linux
-
-2000-04-04 Mike Welles <mike@onshore.com>
- * tif_win32.c: Applied patch to fix overreads and ovverwrites
- caught by BoundsChecker. From Arvan Pritchard
- <arvan.pritchard@infomatix.co.uk> (untested).
-
- * tif_getimage.c: Applied patch to silence VC6 warnings. From
- Arvan Pritchard <arvan.pritchard@informatix.co.uk>
-
- * tif_lzw.c: Applied patch to silence VC6 warnings. From
- Arvan Pritchard <arvan.pritchard@informatix.co.uk>
-
-2000-03-28 Frank Warmerdam <warmerda@cs46980-c>
-
- * Added contrib/stream (stream io) code submitted by Avi Bleiweiss.
-
-2000-03-28 Frank Warmerdam <warmerda@cs46980-c> *** 3.5.5 release ***
-
- * fax2ps: Fixed mixup of width and height in bounding box statement
- as per submission by Nalin Dahyabhai <nalin@redhat.com>.
-
-2000-03-27 Mike Welles <mike@onshore.com>
-
- * fax2ps: Modified printruns to take uint32 instead of uint16.
- Patch courtesy of Bernt Herd <herd@herdsoft.com>
-
-2000-03-20 Mike Welles <mike@onshore.com>
-
- * configure: added test for libc6 for linux targets. Bug reported by
- Stanislav Brabec <utx@k332.feld.cvut.cz>
-
- * Added 3.5 docs to html/Makefile.in.
- Thanks to Stanislav Brabec <utx@k332.feld.cvut.cz>
-
- * configure: fixed bugs in sed scripts
- (applied sed script s:/@:s;@:;s:/s;;:;: to configure).
- fix submitted to Stanislav Brabec <utx@k332.feld.cvut.cz>
-
- * tools/iptcutil was not in files list, and wasn't being
- added to tar archive. Updated Makefile.in.
-
-2000-03-17 Frank Warmerdam <warmerda@cs46980-c>
-
- * tif_fax3.c: Fixed serious bug introduced during the uint16->uint32
- conversion for the run arrays.
-
-2000-03-03 Frank Warmerdam <warmerda@cs46980-c.mtnk1.on.wave.home.com>
-
- * Set td_sampleformat default to SAMPLEFORMAT_UINT instead of
- SAMPLEFORMAT_VOID in TIFFDefaultDirectory() in tif_dir.c.
-
-2000-03-02 Frank Warmerdam <warmerda@cs46980-c.mtnk1.on.wave.home.com>
-
- * Added "GetDefaulted" support for TIFFTAG_SAMPLEFORMAT in tif_aux.c.
-
- * Patched tif_fax3.c so that dsp->runs is allocated a bit bigger
- to avoid overruns encountered with frle_bug.tif.
-
-Tue Feb 15 22:01:05 2000 Frank Warmerdam <warmerda@gdal.velocet.ca>
-
- * Fixed tools/tiffcmp so that stopondiff testing works.
- Patch care of Joseph Orost <joe@sanskrit.lz.att.com>.
-
-2000-01-28 <warmerda@CS46980-B>
-
- * Modified tif_unix.c to support 2-4GB seeks if USE_64BIT_API is
- set to 1, and added default (off) setting in tiffconf.h. This
- should eventually be set by the configure script somehow.
-
- The original work on all these 2-4GB changes was done by
- Peter Smith (psmith@creo.com).
-
- * Modified tif_win32.c to support 2-4GB seeks.
-
- * tentatively changed toff_t to be unsigned instead of signed to
- facilitate support for 2-4GB files.
-
- * Updated a variety of files to use toff_t. Fixed some mixups
- between toff_t and tsize_t.
-
-Fri Jan 28 10:13:49 2000 Frank Warmerdam <warmerda@gdal.velocet.ca>
-
- * Largely reimplemented contrib/addtiffo to avoid temp files,
- updating the TIFF file in place. Fixed a few other bugs to.
-
- * Set tif_rawdatasize to zero when freeing raw data buffer in
- TIFFWriteDirectory().
-
- * Enabled "REWRITE_HACK" in tif_write.c by default.
-
- * Fix bug in tif_write.c when switching between reading one directory
- and writing to another.
-
- * Made TIFFWriteCheck() public, and added TIFFCreateDirectory()
-
-Wed Jan 5 12:37:48 2000 Frank Warmerdam <warmerda@gdal.velocet.ca>
-
- * Added TIFFmemory(3t) functions to libtiff.def.
-
-Tue Jan 4 13:39:00 2000 Frank Warmerdam <warmerda@gdal.velocet.ca>
-
- * Added libtiff/libtiff.def to TIFFILES distribution list.
-
-Mon Dec 27 12:13:39 EST 1999 Mike Welles <mike@onshore.com>
-
- * Created lzw compression kit, as a new module (libtiff-lzw-compression-kit).
-
- * Altered descriptions in tools to reflect "by default" lzw not supported
-
- * Updated index.html to note lzw compression kit.
-
-Tue Dec 21 14:01:51 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
-
- * Added fax3sm_winnt.c to distribution list in Makefile.in.
-
-Tue Dec 21 11:04:45 EST 1999 Mike Welles <mike@onshore.com> *** 3.5.4 release ***
-
- * Aadded Pixar tag support. Contributed by Phil Beffery <phil@pixar.com>
-
- * Made one more change to tif_dir.c for removal of LZW compression. Also added notice
- when LZW compression invoked.
-
- * Changed default compression in tools to TIFF_PACKBITS, and changed usage descriptions
- in tools to reflect removal of LZW compression
-
-Mon Dec 20 18:39:02 EST 1999 Mike Welles <mike@onshore.com>
-
- * Fixed bug that caused LZW (non) compression to segfault. Added
- warning about LZW compression removed being removed, and why.
-
- * Added nostrip to install in tools/Makefile.in so that debugging
- symbols are kept.
-
-Tue Dec 7 12:04:47 EST 1999 Mike Welles <mike@onshore.com>
-
- * Added patch from Ivo Penzar <ivo.penzar@infolink-software.com>,
- supporting Adobe ZIP deflate. Untested.
-
-Sat Dec 4 15:47:11 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
-
- * Made Packbits the default compression in tools/tiff2rgba.c instead
- of LZW.
-
-Tue Nov 30 14:41:43 1999 Frank Warmerdam <warmerda@gdal.velocet.ca> *** 3.5.3. release ***
-
- * Added tif_luv to contrib/djgpp/Makefile.lib.
-
-Tue Nov 30 14:15:32 EST 1999 Mike Welles <mike@onshore.com>
-
- * Added zip creation to relase makefile target
-
- * Added html for TIFFWriteTile.3t man page.
-
-Tue Nov 30 09:20:16 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
-
- * Added some changes to tif_write.c to support rewriting existing
- fixed sized tiles and strips. Code mods disabled by default, only
- enabled if REWRITE_HACK is defined for now.
-
-Mon Nov 29 11:43:42 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
-
- * Added TIFFWriteTile.3t man page.
-
-Sun Nov 28 20:36:18 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
-
- * Added notes on use of makefile.vc in build.html, and fixed
- email subscription address.
-
-199-11-28 Mike Welles <mike@onshore.com>
-
- * Fixed apocalypse-inducing y2k bug in contrib/ras/ras2tiff.c
-
- * Did some casts cleaning up to reduce compiler warnings in tif_fax3.c,
- from Bruce Carmeron <cameron@petris.com> -- modifications of
- changes made by Frank (sun cc still complained on cast).
-
- * Added tiffconf.h to install target per request from Bill
- Radcliffe <billr@corbis.com>: "We need a way for ImageMagick to
- know features have been compiled into the TIFF library in order to
- handle things properly".
-
-Sat Nov 27 16:49:21 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
-
- * fixed various VC++ warnings as suggested by Gilles Vollant
- <info@winimage.com>.
-
-Wed Nov 24 12:08:16 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
-
- * Modified TIFFquery.3t man pages info on TIFFIsByteSwapped() to
- not imply applications are responsible for image data swapping.
-
-1999-11-22 Mike Welles <mike@onshore.com>
- * HTML-ized the man pages, added to html/man
-
- * Removed LZW Compression to comply with Unisys patent extortion.
-
-1999-09-29 Mike Welles <mike@onshore.com>
- * Corrected one remaining 16 -> 32 bit value in tif_fax3.c,
- From Ivo Penzar <ivo.penzar@infolink-software.com.
-
- * Added patch from Ivo Penzar to have TiffAdvanceDirectory handle
- memory mapped files. <ivo.penzar@infolink-software.com>
-
-1999-09-26 Mike Welles <mike@onshore.com> *** 3.5.2 release ***
- * Corrected alpha versioning.
-
- * Removed distinction between alpha and release targets in Makefile.in.
-
- * added release.stamp target, which tags cvs tree, and updates
- "RELEASE-DATE"
-
- * added releasediff target, which diffs tree with source as of
- date in "RELEASE-DATE"
-
- * Ticked up version to 3.5.2 (alpha 01 -- but I think we'll moving
- away from alpha/non-alpha distinctions).
-
- * updated html to reflect release
-
-1999-09-23 <warmerda@CS46980-B>
-
- * Set O_BINARY for tif_unix.c open() ... used on cygwin for instance.
-
- * Added CYGWIN case in configure.
-
-Fri Sep 17 00:13:51 CEST 1999 Mike Welles <mike@onshore.com>
-
- * Applied Francois Dagand's patch to handle fax decompression bug.
- (sizes >= 65536 were failing)
-
-Tue Sep 14 21:31:43 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
-
- * Applied "a" mode fix to tif_win32.c/TIFFOpen() as suggested
- by Christopher Lawton <clawton@mathworks.com>
-
-Wed Sep 8 08:19:18 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
-
- * Added IRIX/gcc, and OSF/1 4.x support on behalf of
- Albert Chin-A-Young <china@thewrittenword.com>
-
- * Added TIFFReassignTagToIgnore() API on behalf of
- Bruce Cameron <cameron@petris.com>. Man page still pending.
-
-Wed Aug 25 11:39:07 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
-
- * Added test target in Makefile, test_pics.sh script and pics/*.rpt
- files to provide for a rudimentary testsuite.
-
- * Added contrib/tags back from old distribution ... fixed up a bit.
-
-1999-08-16 <warmerda@CS46980-B>
-
- * Added simple makefile.vc makefiles for building with MS VC++
- on Windows NT/98/95 in console mode. Stuff in contrib/win* make give
- better solutions for some users.
-
-Mon Aug 16 21:52:11 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
-
- * Added addtiffo (add overviews to a TIFF file) in contrib. Didn't
- put it in tools since part of it is in C++.
-
-1999-08-16 Michael L. Welles <mike@kurtz.fake>
-
- * Updated html/index.html with anon CVS instructions.
-
-Mon Aug 16 13:18:41 1999 Frank Warmerdam <warmerda@gdal.velocet.ca>
-
- * pre-remove so link before softlink in LINUXdso action in
- libtiff/Makefile.in to avoid failure on LINUXdso builds other than
- the first.
-
- * Fixed problem with cvtcmap() in tif_getimage.c modifying the
- colormaps owned by the TIFF handle itself when trying to fixup wrong
- (eight bit) colormaps. Corrected by maintaining a private copy of
- the colormap.
-
- * Added TIFFReadRGBATile()/TIFFReadRGBAStrip() support in
- tif_getimage.c.
-
- * CVS Repository placed at remotesensing.org. ChangeLog added.
diff --git a/src/3rdparty/libtiff/HOWTO-RELEASE b/src/3rdparty/libtiff/HOWTO-RELEASE
deleted file mode 100644
index d6035a5c85..0000000000
--- a/src/3rdparty/libtiff/HOWTO-RELEASE
+++ /dev/null
@@ -1,105 +0,0 @@
-HOWTO-RELEASE:
-
-Notes on releasing.
-
-0. Make sure that you have current FSF releases of autoconf, automake,
- and libtool packages installed under a common installation prefix
- and that these tools are in your executable search path prior to
- any other installed versions. Versions delivered with Linux may be
- altered so it is best to install official FSF releases. GNU 'm4'
- 1.4.6 or later is needed in order to avoid bugs in m4. These
- packages may be downloaded from the following ftp locations:
-
- autoconf - ftp://ftp.gnu.org/pub/gnu/autoconf
- automake - ftp://ftp.gnu.org/pub/gnu/automake
- libtool - ftp://ftp.gnu.org/pub/gnu/libtool
-
- Release builds should only be done on a system with a functioning
- and correctly set system clock and on a filesystem which accurately
- records file update times. Use of GNU make is recommended.
-
-1. Commit any unsaved changes.
-
-2. Create html/vX.X.html. Take ChangeLog entries and html-ify in there.
- Easist thing to do is take html/vX.(X-1).html and use it as a template.
- Add that file to the list of EXTRA_DIST files in the html/Makefile.am.
-
-3. Update html/index.html to refer to this new page as the current release.
-
-4. Increment the release version in configure.ac. Put 'alpha' or
- 'beta' after the version, if applicable. For example:
-
- 3.9.1
- or
- 3.9.1beta
-
- Version should be updated in two places: in the second argument of the
- AC_INIT macro and in LIBTIFF_xxx_VERSION variables.
-
-5. Add an entry to Changelog similar to:
-
- * libtiff 3.9.1 released.
-
-6. In the source tree do
-
- ./autogen.sh
-
- This step may be skipped if you have already been using a
- maintainer build with current autoconf, automake, and libtool
- packages. It is only needed when updating tool versions.
-
-7. It is recommended (but not required) to build outside of the source
- tree so that the source tree is kept in a pristine state. This
- also allows sharing the source directory on several networked
- systems. For example:
-
- mkdir libtiff-build
- cd libtiff-build
- /path/to/libtiff/configure --enable-maintainer-mode
-
- otherwise do
-
- ./configure --enable-maintainer-mode
-
-8. In the build tree do
-
- make release
-
- This will update "RELEASE-DATE", "VERSION", and libtiff/tiffvers.h
- in the source tree.
-
-9. In the source tree, verify that the version info in RELEASE-DATE,
- VERSION and libtiff/tiffvers.h is right.
-
-10. In the build tree do
-
- make
- make distcheck
-
- If 'make distcheck' fails, then correct any issues until it
- succeeds.
-
- Two files with names tiff-version.tar.gz and tiff-version.zip will
- be created in the top level build directory.
-
-11. In the source tree do
-
- 'cvs commit'.
-
-12. In the source tree do
-
- cvs tag Release-v3-9-1
-
- (or the appropriate name for the release)
-
-13. Copy release packages from the build tree to the
- ftp.remotesensing.org ftp site.
-
- scp tiff-*.tar.gz tiff-*.zip \
- frankw@upload.osgeo.org:/osgeo/download/libtiff
-
-14. Announce to list, tiff@lists.maptools.org
-
-15. Update libtiff page on freshmeat with new version announcement.
-
-
diff --git a/src/3rdparty/libtiff/README b/src/3rdparty/libtiff/README
deleted file mode 100644
index c0e5521d8a..0000000000
--- a/src/3rdparty/libtiff/README
+++ /dev/null
@@ -1,59 +0,0 @@
-$Header: /cvs/maptools/cvsroot/libtiff/README,v 1.5 2004/10/30 13:44:45 dron Exp $
-
-
-TIFF Software Distribution
---------------------------
-This file is just a placeholder; all the documentation is now in
-HTML in the html directory. To view the documentation point your
-favorite WWW viewer at html/index.html; e.g.
-
- netscape html/index.html
-
-If you don't have an HTML viewer then you can read the HTML source
-or fetch a PostScript version of this documentation from the directory
-
- ftp://ftp.remotesensing.org/pub/libtiff/
-
-If you can't hack either of these options then basically what you
-want to do is:
-
- % ./configure
- % make
- % su
- # make install
-
-More information, email contacts, and mailing list information can be
-found online at http://www.remotesensing.org/libtiff/.
-
-
-Use and Copyright
------------------
-Silicon Graphics has seen fit to allow us to give this work away. It
-is free. There is no support or guarantee of any sort as to its
-operations, correctness, or whatever. If you do anything useful with
-all or parts of it you need to honor the copyright notices. I would
-also be interested in knowing about it and, hopefully, be acknowledged.
-
-The legal way of saying that is:
-
-Copyright (c) 1988-1997 Sam Leffler
-Copyright (c) 1991-1997 Silicon Graphics, Inc.
-
-Permission to use, copy, modify, distribute, and sell this software and
-its documentation for any purpose is hereby granted without fee, provided
-that (i) the above copyright notices and this permission notice appear in
-all copies of the software and related documentation, and (ii) the names of
-Sam Leffler and Silicon Graphics may not be used in any advertising or
-publicity relating to the software without the specific, prior written
-permission of Sam Leffler and Silicon Graphics.
-
-THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
-EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
-WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
-LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-OF THIS SOFTWARE.
diff --git a/src/3rdparty/libtiff/README.vms b/src/3rdparty/libtiff/README.vms
deleted file mode 100644
index 44d9663927..0000000000
--- a/src/3rdparty/libtiff/README.vms
+++ /dev/null
@@ -1,12 +0,0 @@
-Dear OpenVMS user
-to make this library, execute
-$@CONFIGURE
-$@BUILD
-
-Build process should be error and warning free. When process will be finished,
-LIBTIFF$STRATUP.COM file containing all required definitions, will be created.
-Please call it from system startup procedure or individual user procedure LOGIN.COM
-To link software with libtiff, use TIFF:LIBTIFF.OPT
-
-best regards,
-Alexey Chupahin, elvis_75@mail.ru
diff --git a/src/3rdparty/libtiff/RELEASE-DATE b/src/3rdparty/libtiff/RELEASE-DATE
deleted file mode 100644
index 1f15bfe5c4..0000000000
--- a/src/3rdparty/libtiff/RELEASE-DATE
+++ /dev/null
@@ -1 +0,0 @@
-20091104
diff --git a/src/3rdparty/libtiff/SConstruct b/src/3rdparty/libtiff/SConstruct
deleted file mode 100644
index 682246ea06..0000000000
--- a/src/3rdparty/libtiff/SConstruct
+++ /dev/null
@@ -1,171 +0,0 @@
-# $Id: SConstruct,v 1.4 2007/02/24 15:03:47 dron Exp $
-
-# Tag Image File Format (TIFF) Software
-#
-# Copyright (C) 2005, Andrey Kiselev <dron@ak4719.spb.edu>
-#
-# Permission to use, copy, modify, distribute, and sell this software and
-# its documentation for any purpose is hereby granted without fee, provided
-# that (i) the above copyright notices and this permission notice appear in
-# all copies of the software and related documentation, and (ii) the names of
-# Sam Leffler and Silicon Graphics may not be used in any advertising or
-# publicity relating to the software without the specific, prior written
-# permission of Sam Leffler and Silicon Graphics.
-#
-# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
-# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-#
-# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
-# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-# OF THIS SOFTWARE.
-
-# This file contains rules to build software with the SCons tool
-# (see the http://www.scons.org/ for details on SCons).
-
-import os
-
-env = Environment()
-
-# Read the user supplied options
-opts = Options('libtiff.conf')
-opts.Add(PathOption('PREFIX', \
- 'install architecture-independent files in this directory', \
- '/usr/local', PathOption.PathIsDirCreate))
-opts.Add(BoolOption('ccitt', \
- 'enable support for CCITT Group 3 & 4 algorithms', \
- 'yes'))
-opts.Add(BoolOption('packbits', \
- 'enable support for Macintosh PackBits algorithm', \
- 'yes'))
-opts.Add(BoolOption('lzw', \
- 'enable support for LZW algorithm', \
- 'yes'))
-opts.Add(BoolOption('thunder', \
- 'enable support for ThunderScan 4-bit RLE algorithm', \
- 'yes'))
-opts.Add(BoolOption('next', \
- 'enable support for NeXT 2-bit RLE algorithm', \
- 'yes'))
-opts.Add(BoolOption('logluv', \
- 'enable support for LogLuv high dynamic range encoding', \
- 'yes'))
-opts.Add(BoolOption('strip_chopping', \
- 'support for strip chopping (whether or not to convert single-strip uncompressed images to mutiple strips of ~8Kb to reduce memory usage)', \
- 'yes'))
-opts.Add(BoolOption('extrasample_as_alpha', \
- 'the RGBA interface will treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many packages produce RGBA files but don\'t mark the alpha properly', \
- 'yes'))
-opts.Add(BoolOption('check_ycbcr_subsampling', \
- 'disable picking up YCbCr subsampling info from the JPEG data stream to support files lacking the tag', \
- 'yes'))
-opts.Update(env)
-opts.Save('libtiff.conf', env)
-Help(opts.GenerateHelpText(env))
-
-# Here are our installation paths:
-idir_prefix = '$PREFIX'
-idir_lib = '$PREFIX/lib'
-idir_bin = '$PREFIX/bin'
-idir_inc = '$PREFIX/include'
-idir_doc = '$PREFIX/doc'
-Export([ 'env', 'idir_prefix', 'idir_lib', 'idir_bin', 'idir_inc', 'idir_doc' ])
-
-# Now proceed to system feature checks
-target_cpu, target_vendor, target_kernel, target_os = \
- os.popen("./config/config.guess").readlines()[0].split("-")
-
-def Define(context, key, have):
- import SCons.Conftest
- SCons.Conftest._Have(context, key, have)
-
-def CheckCustomOption(context, name):
- context.Message('Checking is the ' + name + ' option set... ')
- ret = env[name]
- Define(context, name + '_SUPPORT', ret)
- context.Result(ret)
- return ret
-
-def CheckFillorderOption(context):
- context.Message('Checking for the native cpu bit order... ')
- if target_cpu[0] == 'i' and target_cpu[2:] == '86':
- Define(context, 'HOST_FILLORDER', 'FILLORDER_LSB2MSB')
- context.Result('lsb2msb')
- else:
- Define(context, 'HOST_FILLORDER', 'FILLORDER_MSB2LSB')
- context.Result('msb2lsb')
- return 1
-
-def CheckIEEEFPOption(context):
- context.Message('Checking for the IEEE floating point format... ')
- Define(context, 'HAVE_IEEEFP', 1)
- context.Result(1)
- return 1
-
-def CheckOtherOption(context, name):
- context.Message('Checking is the ' + name + ' option set... ')
- ret = env[name]
- Define(context, 'HAVE_' + name, ret)
- context.Result(ret)
- return ret
-
-custom_tests = { \
- 'CheckCustomOption' : CheckCustomOption, \
- 'CheckFillorderOption' : CheckFillorderOption, \
- 'CheckIEEEFPOption' : CheckIEEEFPOption, \
- 'CheckOtherOption' : CheckOtherOption \
- }
-conf = Configure(env, custom_tests = custom_tests, \
- config_h = 'libtiff/tif_config.h')
-
-# Check for standard library
-conf.CheckLib('c')
-if target_os != 'cygwin' \
- and target_os != 'mingw32' \
- and target_os != 'beos' \
- and target_os != 'darwin':
- conf.CheckLib('m')
-
-# Check for system headers
-conf.CheckCHeader('assert.h')
-conf.CheckCHeader('fcntl.h')
-conf.CheckCHeader('io.h')
-conf.CheckCHeader('limits.h')
-conf.CheckCHeader('malloc.h')
-conf.CheckCHeader('search.h')
-conf.CheckCHeader('sys/time.h')
-conf.CheckCHeader('unistd.h')
-
-# Check for standard library functions
-conf.CheckFunc('floor')
-conf.CheckFunc('isascii')
-conf.CheckFunc('memmove')
-conf.CheckFunc('memset')
-conf.CheckFunc('mmap')
-conf.CheckFunc('pow')
-conf.CheckFunc('setmode')
-conf.CheckFunc('sqrt')
-conf.CheckFunc('strchr')
-conf.CheckFunc('strrchr')
-conf.CheckFunc('strstr')
-conf.CheckFunc('strtol')
-
-conf.CheckFillorderOption()
-conf.CheckIEEEFPOption()
-conf.CheckCustomOption('ccitt')
-conf.CheckCustomOption('packbits')
-conf.CheckCustomOption('lzw')
-conf.CheckCustomOption('thunder')
-conf.CheckCustomOption('next')
-conf.CheckCustomOption('logluv')
-conf.CheckOtherOption('strip_chopping')
-conf.CheckOtherOption('extrasample_as_alpha')
-conf.CheckOtherOption('check_ycbcr_subsampling')
-
-env = conf.Finish()
-
-# Ok, now go to build files in the subdirectories
-SConscript(dirs = [ 'libtiff' ], name = 'SConstruct')
diff --git a/src/3rdparty/libtiff/TODO b/src/3rdparty/libtiff/TODO
deleted file mode 100644
index 6c58eb045d..0000000000
--- a/src/3rdparty/libtiff/TODO
+++ /dev/null
@@ -1,12 +0,0 @@
-# $Header: /cvs/maptools/cvsroot/libtiff/TODO,v 1.6 2002/10/10 05:28:43 warmerda Exp $
-
-o gif2tiff segaulting on selected images
-o tiffcmp read data by strip/tile instead of scanline
-o YCbCr sampling support
-o extracate colorspace conversion support
-o look at isolating all codecs from TIFF library
-o JPEG colormode order dependency problem
-o Write documentation on how do extend tags, and how the custom field
- stuff all works.
-
-
diff --git a/src/3rdparty/libtiff/VERSION b/src/3rdparty/libtiff/VERSION
deleted file mode 100644
index 2009c7dfad..0000000000
--- a/src/3rdparty/libtiff/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-3.9.2
diff --git a/src/3rdparty/libtiff/html/TIFFTechNote2.html b/src/3rdparty/libtiff/html/TIFFTechNote2.html
deleted file mode 100644
index 92bace4660..0000000000
--- a/src/3rdparty/libtiff/html/TIFFTechNote2.html
+++ /dev/null
@@ -1,707 +0,0 @@
-<pre>
-DRAFT TIFF Technical Note #2 17-Mar-95
-============================
-
-This Technical Note describes serious problems that have been found in
-TIFF 6.0's design for embedding JPEG-compressed data in TIFF (Section 22
-of the TIFF 6.0 spec of 3 June 1992). A replacement TIFF/JPEG
-specification is given. Some corrections to Section 21 are also given.
-
-To permit TIFF implementations to continue to read existing files, the 6.0
-JPEG fields and tag values will remain reserved indefinitely. However,
-TIFF writers are strongly discouraged from using the 6.0 JPEG design. It
-is expected that the next full release of the TIFF specification will not
-describe the old design at all, except to note that certain tag numbers
-are reserved. The existing Section 22 will be replaced by the
-specification text given in the second part of this Tech Note.
-
-
-Problems in TIFF 6.0 JPEG
-=========================
-
-Abandoning a published spec is not a step to be taken lightly. This
-section summarizes the reasons that have forced this decision.
-TIFF 6.0's JPEG design suffers from design errors and limitations,
-ambiguities, and unnecessary complexity.
-
-
-Design errors and limitations
------------------------------
-
-The fundamental design error in the existing Section 22 is that JPEG's
-various tables and parameters are broken out as separate fields which the
-TIFF control logic must manage. This is bad software engineering: that
-information should be treated as private to the JPEG codec
-(compressor/decompressor). Worse, the fields themselves are specified
-without sufficient thought for future extension and without regard to
-well-established TIFF conventions. Here are some of the significant
-problems:
-
-* The JPEGxxTable fields do not store the table data directly in the
-IFD/field structure; rather, the fields hold pointers to information
-elsewhere in the file. This requires special-purpose code to be added to
-*every* TIFF-manipulating application, whether it needs to decode JPEG
-image data or not. Even a trivial TIFF editor, for example a program to
-add an ImageDescription field to a TIFF file, must be explicitly aware of
-the internal structure of the JPEG-related tables, or else it will probably
-break the file. Every other auxiliary field in the TIFF spec contains
-data, not pointers, and can be copied or relocated by standard code that
-doesn't know anything about the particular field. This is a crucial
-property of the TIFF format that must not be given up.
-
-* To manipulate these fields, the TIFF control logic is required to know a
-great deal about JPEG details, for example such arcana as how to compute
-the length of a Huffman code table --- the length is not supplied in the
-field structure and can only be found by inspecting the table contents.
-This is again a violation of good software practice. Moreover, it will
-prevent easy adoption of future JPEG extensions that might change these
-low-level details.
-
-* The design neglects the fact that baseline JPEG codecs support only two
-sets of Huffman tables: it specifies a separate table for each color
-component. This implies that encoders must waste space (by storing
-duplicate Huffman tables) or else violate the well-founded TIFF convention
-that prohibits duplicate pointers. Furthermore, baseline decoders must
-test to find out which tables are identical, a waste of time and code
-space.
-
-* The JPEGInterchangeFormat field also violates TIFF's proscription against
-duplicate pointers: the normal strip/tile pointers are expected to point
-into the larger data area pointed to by JPEGInterchangeFormat. All TIFF
-editing applications must be specifically aware of this relationship, since
-they must maintain it or else delete the JPEGInterchangeFormat field. The
-JPEGxxTables fields are also likely to point into the JPEGInterchangeFormat
-area, creating additional pointer relationships that must be maintained.
-
-* The JPEGQTables field is fixed at a byte per table entry; there is no
-way to support 16-bit quantization values. This is a serious impediment
-to extending TIFF to use 12-bit JPEG.
-
-* The 6.0 design cannot support using different quantization tables in
-different strips/tiles of an image (so as to encode some areas at higher
-quality than others). Furthermore, since quantization tables are tied
-one-for-one to color components, the design cannot support table switching
-options that are likely to be added in future JPEG revisions.
-
-
-Ambiguities
------------
-
-Several incompatible interpretations are possible for 6.0's treatment of
-JPEG restart markers:
-
- * It is unclear whether restart markers must be omitted at TIFF segment
- (strip/tile) boundaries, or whether they are optional.
-
- * It is unclear whether the segment size is required to be chosen as
- a multiple of the specified restart interval (if any); perhaps the
- JPEG codec is supposed to be reset at each segment boundary as if
- there were a restart marker there, even if the boundary does not fall
- at a multiple of the nominal restart interval.
-
- * The spec fails to address the question of restart marker numbering:
- do the numbers begin again within each segment, or not?
-
-That last point is particularly nasty. If we make numbering begin again
-within each segment, we give up the ability to impose a TIFF strip/tile
-structure on an existing JPEG datastream with restarts (which was clearly a
-goal of Section 22's authors). But the other choice interferes with random
-access to the image segments: a reader must compute the first restart
-number to be expected within a segment, and must have a way to reset its
-JPEG decoder to expect a nonzero restart number first. This may not even
-be possible with some JPEG chips.
-
-The tile height restriction found on page 104 contradicts Section 15's
-general description of tiles. For an image that is not vertically
-downsampled, page 104 specifies a tile height of one MCU or 8 pixels; but
-Section 15 requires tiles to be a multiple of 16 pixels high.
-
-This Tech Note does not attempt to resolve these ambiguities, so
-implementations that follow the 6.0 design should be aware that
-inter-application compatibility problems are likely to arise.
-
-
-Unnecessary complexity
-----------------------
-
-The 6.0 design creates problems for implementations that need to keep the
-JPEG codec separate from the TIFF control logic --- for example, consider
-using a JPEG chip that was not designed specifically for TIFF. JPEG codecs
-generally want to produce or consume a standard ISO JPEG datastream, not
-just raw compressed data. (If they were to handle raw data, a separate
-out-of-band mechanism would be needed to load tables into the codec.)
-With such a codec, the TIFF control logic must parse JPEG markers emitted
-by the codec to create the TIFF table fields (when writing) or synthesize
-JPEG markers from the TIFF fields to feed the codec (when reading). This
-means that the control logic must know a great deal more about JPEG details
-than we would like. The parsing and reconstruction of the markers also
-represents a fair amount of unnecessary work.
-
-Quite a few implementors have proposed writing "TIFF/JPEG" files in which
-a standard JPEG datastream is simply dumped into the file and pointed to
-by JPEGInterchangeFormat. To avoid parsing the JPEG datastream, they
-suggest not writing the JPEG auxiliary fields (JPEGxxTables etc) nor even
-the basic TIFF strip/tile data pointers. This approach is incompatible
-with implementations that handle the full TIFF 6.0 JPEG design, since they
-will expect to find strip/tile pointers and auxiliary fields. Indeed this
-is arguably not TIFF at all, since *all* TIFF-reading applications expect
-to find strip or tile pointers. A subset implementation that is not
-upward-compatible with the full spec is clearly unacceptable. However,
-the frequency with which this idea has come up makes it clear that
-implementors find the existing Section 22 too complex.
-
-
-Overview of the solution
-========================
-
-To solve these problems, we adopt a new design for embedding
-JPEG-compressed data in TIFF files. The new design uses only complete,
-uninterpreted ISO JPEG datastreams, so it should be much more forgiving of
-extensions to the ISO standard. It should also be far easier to implement
-using unmodified JPEG codecs.
-
-To reduce overhead in multi-segment TIFF files, we allow JPEG overhead
-tables to be stored just once in a JPEGTables auxiliary field. This
-feature does not violate the integrity of the JPEG datastreams, because it
-uses the notions of "tables-only datastreams" and "abbreviated image
-datastreams" as defined by the ISO standard.
-
-To prevent confusion with the old design, the new design is given a new
-Compression tag value, Compression=7. Readers that need to handle
-existing 6.0 JPEG files may read both old and new files, using whatever
-interpretation of the 6.0 spec they did before. Compression tag value 6
-and the field tag numbers defined by 6.0 section 22 will remain reserved
-indefinitely, even though detailed descriptions of them will be dropped
-from future editions of the TIFF specification.
-
-
-Replacement TIFF/JPEG specification
-===================================
-
-[This section of the Tech Note is expected to replace Section 22 in the
-next release of the TIFF specification.]
-
-This section describes TIFF compression scheme 7, a high-performance
-compression method for continuous-tone images.
-
-Introduction
-------------
-
-This TIFF compression method uses the international standard for image
-compression ISO/IEC 10918-1, usually known as "JPEG" (after the original
-name of the standards committee, Joint Photographic Experts Group). JPEG
-is a joint ISO/CCITT standard for compression of continuous-tone images.
-
-The JPEG committee decided that because of the broad scope of the standard,
-no one algorithmic procedure was able to satisfy the requirements of all
-applications. Instead, the JPEG standard became a "toolkit" of multiple
-algorithms and optional capabilities. Individual applications may select
-a subset of the JPEG standard that meets their requirements.
-
-The most important distinction among the JPEG processes is between lossy
-and lossless compression. Lossy compression methods provide high
-compression but allow only approximate reconstruction of the original
-image. JPEG's lossy processes allow the encoder to trade off compressed
-file size against reconstruction fidelity over a wide range. Typically,
-10:1 or more compression of full-color data can be obtained while keeping
-the reconstructed image visually indistinguishable from the original. Much
-higher compression ratios are possible if a low-quality reconstructed image
-is acceptable. Lossless compression provides exact reconstruction of the
-source data, but the achievable compression ratio is much lower than for
-the lossy processes; JPEG's rather simple lossless process typically
-achieves around 2:1 compression of full-color data.
-
-The most widely implemented JPEG subset is the "baseline" JPEG process.
-This provides lossy compression of 8-bit-per-channel data. Optional
-extensions include 12-bit-per-channel data, arithmetic entropy coding for
-better compression, and progressive/hierarchical representations. The
-lossless process is an independent algorithm that has little in
-common with the lossy processes.
-
-It should be noted that the optional arithmetic-coding extension is subject
-to several US and Japanese patents. To avoid patent problems, use of
-arithmetic coding processes in TIFF files intended for inter-application
-interchange is discouraged.
-
-All of the JPEG processes are useful only for "continuous tone" data,
-in which the difference between adjacent pixel values is usually small.
-Low-bit-depth source data is not appropriate for JPEG compression, nor
-are palette-color images good candidates. The JPEG processes work well
-on grayscale and full-color data.
-
-Describing the JPEG compression algorithms in sufficient detail to permit
-implementation would require more space than we have here. Instead, we
-refer the reader to the References section.
-
-
-What data is being compressed?
-------------------------------
-
-In lossy JPEG compression, it is customary to convert color source data
-to YCbCr and then downsample it before JPEG compression. This gives
-2:1 data compression with hardly any visible image degradation, and it
-permits additional space savings within the JPEG compression step proper.
-However, these steps are not considered part of the ISO JPEG standard.
-The ISO standard is "color blind": it accepts data in any color space.
-
-For TIFF purposes, the JPEG compression tag is considered to represent the
-ISO JPEG compression standard only. The ISO standard is applied to the
-same data that would be stored in the TIFF file if no compression were
-used. Therefore, if color conversion or downsampling are used, they must
-be reflected in the regular TIFF fields; these steps are not considered to
-be implicit in the JPEG compression tag value. PhotometricInterpretation
-and related fields shall describe the color space actually stored in the
-file. With the TIFF 6.0 field definitions, downsampling is permissible
-only for YCbCr data, and it must correspond to the YCbCrSubSampling field.
-(Note that the default value for this field is not 1,1; so the default for
-YCbCr is to apply downsampling!) It is likely that future versions of TIFF
-will provide additional PhotometricInterpretation values and a more general
-way of defining subsampling, so as to allow more flexibility in
-JPEG-compressed files. But that issue is not addressed in this Tech Note.
-
-Implementors should note that many popular JPEG codecs
-(compressor/decompressors) provide automatic color conversion and
-downsampling, so that the application may supply full-size RGB data which
-is nonetheless converted to downsampled YCbCr. This is an implementation
-convenience which does not excuse the TIFF control layer from its
-responsibility to know what is really going on. The
-PhotometricInterpretation and subsampling fields written to the file must
-describe what is actually in the file.
-
-A JPEG-compressed TIFF file will typically have PhotometricInterpretation =
-YCbCr and YCbCrSubSampling = [2,1] or [2,2], unless the source data was
-grayscale or CMYK.
-
-
-Basic representation of JPEG-compressed images
-----------------------------------------------
-
-JPEG compression works in either strip-based or tile-based TIFF files.
-Rather than repeating "strip or tile" constantly, we will use the term
-"segment" to mean either a strip or a tile.
-
-When the Compression field has the value 7, each image segment contains
-a complete JPEG datastream which is valid according to the ISO JPEG
-standard (ISO/IEC 10918-1). Any sequential JPEG process can be used,
-including lossless JPEG, but progressive and hierarchical processes are not
-supported. Since JPEG is useful only for continuous-tone images, the
-PhotometricInterpretation of the image shall not be 3 (palette color) nor
-4 (transparency mask). The bit depth of the data is also restricted as
-specified below.
-
-Each image segment in a JPEG-compressed TIFF file shall contain a valid
-JPEG datastream according to the ISO JPEG standard's rules for
-interchange-format or abbreviated-image-format data. The datastream shall
-contain a single JPEG frame storing that segment of the image. The
-required JPEG markers within a segment are:
- SOI (must appear at very beginning of segment)
- SOFn
- SOS (one for each scan, if there is more than one scan)
- EOI (must appear at very end of segment)
-The actual compressed data follows SOS; it may contain RSTn markers if DRI
-is used.
-
-Additional JPEG "tables and miscellaneous" markers may appear between SOI
-and SOFn, between SOFn and SOS, and before each subsequent SOS if there is
-more than one scan. These markers include:
- DQT
- DHT
- DAC (not to appear unless arithmetic coding is used)
- DRI
- APPn (shall be ignored by TIFF readers)
- COM (shall be ignored by TIFF readers)
-DNL markers shall not be used in TIFF files. Readers should abort if any
-other marker type is found, especially the JPEG reserved markers;
-occurrence of such a marker is likely to indicate a JPEG extension.
-
-The tables/miscellaneous markers may appear in any order. Readers are
-cautioned that although the SOFn marker refers to DQT tables, JPEG does not
-require those tables to precede the SOFn, only the SOS. Missing-table
-checks should be made when SOS is reached.
-
-If no JPEGTables field is used, then each image segment shall be a complete
-JPEG interchange datastream. Each segment must define all the tables it
-references. To allow readers to decode segments in any order, no segment
-may rely on tables being carried over from a previous segment.
-
-When a JPEGTables field is used, image segments may omit tables that have
-been specified in the JPEGTables field. Further details appear below.
-
-The SOFn marker shall be of type SOF0 for strict baseline JPEG data, of
-type SOF1 for non-baseline lossy JPEG data, or of type SOF3 for lossless
-JPEG data. (SOF9 or SOF11 would be used for arithmetic coding.) All
-segments of a JPEG-compressed TIFF image shall use the same JPEG
-compression process, in particular the same SOFn type.
-
-The data precision field of the SOFn marker shall agree with the TIFF
-BitsPerSample field. (Note that when PlanarConfiguration=1, this implies
-that all components must have the same BitsPerSample value; when
-PlanarConfiguration=2, different components could have different bit
-depths.) For SOF0 only precision 8 is permitted; for SOF1, precision 8 or
-12 is permitted; for SOF3, precisions 2 to 16 are permitted.
-
-The image dimensions given in the SOFn marker shall agree with the logical
-dimensions of that particular strip or tile. For strip images, the SOFn
-image width shall equal ImageWidth and the height shall equal RowsPerStrip,
-except in the last strip; its SOFn height shall equal the number of rows
-remaining in the ImageLength. (In other words, no padding data is counted
-in the SOFn dimensions.) For tile images, each SOFn shall have width
-TileWidth and height TileHeight; adding and removing any padding needed in
-the edge tiles is the concern of some higher level of the TIFF software.
-(The dimensional rules are slightly different when PlanarConfiguration=2,
-as described below.)
-
-The ISO JPEG standard only permits images up to 65535 pixels in width or
-height, due to 2-byte fields in the SOFn markers. In TIFF, this limits
-the size of an individual JPEG-compressed strip or tile, but the total
-image size can be greater.
-
-The number of components in the JPEG datastream shall equal SamplesPerPixel
-for PlanarConfiguration=1, and shall be 1 for PlanarConfiguration=2. The
-components shall be stored in the same order as they are described at the
-TIFF field level. (This applies both to their order in the SOFn marker,
-and to the order in which they are scanned if multiple JPEG scans are
-used.) The component ID bytes are arbitrary so long as each component
-within an image segment is given a distinct ID. To avoid any possible
-confusion, we require that all segments of a TIFF image use the same ID
-code for a given component.
-
-In PlanarConfiguration 1, the sampling factors given in SOFn markers shall
-agree with the sampling factors defined by the related TIFF fields (or with
-the default values that are specified in the absence of those fields).
-
-When DCT-based JPEG is used in a strip TIFF file, RowsPerStrip is required
-to be a multiple of 8 times the largest vertical sampling factor, i.e., a
-multiple of the height of an interleaved MCU. (For simplicity of
-specification, we require this even if the data is not actually
-interleaved.) For example, if YCbCrSubSampling = [2,2] then RowsPerStrip
-must be a multiple of 16. An exception to this rule is made for
-single-strip images (RowsPerStrip >= ImageLength): the exact value of
-RowsPerStrip is unimportant in that case. This rule ensures that no data
-padding is needed at the bottom of a strip, except perhaps the last strip.
-Any padding required at the right edge of the image, or at the bottom of
-the last strip, is expected to occur internally to the JPEG codec.
-
-When DCT-based JPEG is used in a tiled TIFF file, TileLength is required
-to be a multiple of 8 times the largest vertical sampling factor, i.e.,
-a multiple of the height of an interleaved MCU; and TileWidth is required
-to be a multiple of 8 times the largest horizontal sampling factor, i.e.,
-a multiple of the width of an interleaved MCU. (For simplicity of
-specification, we require this even if the data is not actually
-interleaved.) All edge padding required will therefore occur in the course
-of normal TIFF tile padding; it is not special to JPEG.
-
-Lossless JPEG does not impose these constraints on strip and tile sizes,
-since it is not DCT-based.
-
-Note that within JPEG datastreams, multibyte values appear in the MSB-first
-order specified by the JPEG standard, regardless of the byte ordering of
-the surrounding TIFF file.
-
-
-JPEGTables field
-----------------
-
-The only auxiliary TIFF field added for Compression=7 is the optional
-JPEGTables field. The purpose of JPEGTables is to predefine JPEG
-quantization and/or Huffman tables for subsequent use by JPEG image
-segments. When this is done, these rather bulky tables need not be
-duplicated in each segment, thus saving space and processing time.
-JPEGTables may be used even in a single-segment file, although there is no
-space savings in that case.
-
-JPEGTables:
- Tag = 347 (15B.H)
- Type = UNDEFINED
- N = number of bytes in tables datastream, typically a few hundred
-JPEGTables provides default JPEG quantization and/or Huffman tables which
-are used whenever a segment datastream does not contain its own tables, as
-specified below.
-
-Notice that the JPEGTables field is required to have type code UNDEFINED,
-not type code BYTE. This is to cue readers that expanding individual bytes
-to short or long integers is not appropriate. A TIFF reader will generally
-need to store the field value as an uninterpreted byte sequence until it is
-fed to the JPEG decoder.
-
-Multibyte quantities within the tables follow the ISO JPEG convention of
-MSB-first storage, regardless of the byte ordering of the surrounding TIFF
-file.
-
-When the JPEGTables field is present, it shall contain a valid JPEG
-"abbreviated table specification" datastream. This datastream shall begin
-with SOI and end with EOI. It may contain zero or more JPEG "tables and
-miscellaneous" markers, namely:
- DQT
- DHT
- DAC (not to appear unless arithmetic coding is used)
- DRI
- APPn (shall be ignored by TIFF readers)
- COM (shall be ignored by TIFF readers)
-Since JPEG defines the SOI marker to reset the DAC and DRI state, these two
-markers' values cannot be carried over into any image datastream, and thus
-they are effectively no-ops in the JPEGTables field. To avoid confusion,
-it is recommended that writers not place DAC or DRI markers in JPEGTables.
-However readers must properly skip over them if they appear.
-
-When JPEGTables is present, readers shall load the table specifications
-contained in JPEGTables before processing image segment datastreams.
-Image segments may simply refer to these preloaded tables without defining
-them. An image segment can still define and use its own tables, subject to
-the restrictions below.
-
-An image segment may not redefine any table defined in JPEGTables. (This
-restriction is imposed to allow readers to process image segments in random
-order without having to reload JPEGTables between segments.) Therefore, use
-of JPEGTables divides the available table slots into two groups: "global"
-slots are defined in JPEGTables and may be used but not redefined by
-segments; "local" slots are available for local definition and use in each
-segment. To permit random access, a segment may not reference any local
-tables that it does not itself define.
-
-
-Special considerations for PlanarConfiguration 2
-------------------------------------------------
-
-In PlanarConfiguration 2, each image segment contains data for only one
-color component. To avoid confusing the JPEG codec, we wish the segments
-to look like valid single-channel (i.e., grayscale) JPEG datastreams. This
-means that different rules must be used for the SOFn parameters.
-
-In PlanarConfiguration 2, the dimensions given in the SOFn of a subsampled
-component shall be scaled down by the sampling factors compared to the SOFn
-dimensions that would be used in PlanarConfiguration 1. This is necessary
-to match the actual number of samples stored in that segment, so that the
-JPEG codec doesn't complain about too much or too little data. In strip
-TIFF files the computed dimensions may need to be rounded up to the next
-integer; in tiled files, the restrictions on tile size make this case
-impossible.
-
-Furthermore, all SOFn sampling factors shall be given as 1. (This is
-merely to avoid confusion, since the sampling factors in a single-channel
-JPEG datastream have no real effect.)
-
-Any downsampling will need to happen externally to the JPEG codec, since
-JPEG sampling factors are defined with reference to the full-precision
-component. In PlanarConfiguration 2, the JPEG codec will be working on
-only one component at a time and thus will have no reference component to
-downsample against.
-
-
-Minimum requirements for TIFF/JPEG
-----------------------------------
-
-ISO JPEG is a large and complex standard; most implementations support only
-a subset of it. Here we define a "core" subset of TIFF/JPEG which readers
-must support to claim TIFF/JPEG compatibility. For maximum
-cross-application compatibility, we recommend that writers confine
-themselves to this subset unless there is very good reason to do otherwise.
-
-Use the ISO baseline JPEG process: 8-bit data precision, Huffman coding,
-with no more than 2 DC and 2 AC Huffman tables. Note that this implies
-BitsPerSample = 8 for each component. We recommend deviating from baseline
-JPEG only if 12-bit data precision or lossless coding is required.
-
-Use no subsampling (all JPEG sampling factors = 1) for color spaces other
-than YCbCr. (This is, in fact, required with the TIFF 6.0 field
-definitions, but may not be so in future revisions.) For YCbCr, use one of
-the following choices:
- YCbCrSubSampling field JPEG sampling factors
- 1,1 1h1v, 1h1v, 1h1v
- 2,1 2h1v, 1h1v, 1h1v
- 2,2 (default value) 2h2v, 1h1v, 1h1v
-We recommend that RGB source data be converted to YCbCr for best compression
-results. Other source data colorspaces should probably be left alone.
-Minimal readers need not support JPEG images with colorspaces other than
-YCbCr and grayscale (PhotometricInterpretation = 6 or 1).
-
-A minimal reader also need not support JPEG YCbCr images with nondefault
-values of YCbCrCoefficients or YCbCrPositioning, nor with values of
-ReferenceBlackWhite other than [0,255,128,255,128,255]. (These values
-correspond to the RGB<=>YCbCr conversion specified by JFIF, which is widely
-implemented in JPEG codecs.)
-
-Writers are reminded that a ReferenceBlackWhite field *must* be included
-when PhotometricInterpretation is YCbCr, because the default
-ReferenceBlackWhite values are inappropriate for YCbCr.
-
-If any subsampling is used, PlanarConfiguration=1 is preferred to avoid the
-possibly-confusing requirements of PlanarConfiguration=2. In any case,
-readers are not required to support PlanarConfiguration=2.
-
-If possible, use a single interleaved scan in each image segment. This is
-not legal JPEG if there are more than 4 SamplesPerPixel or if the sampling
-factors are such that more than 10 blocks would be needed per MCU; in that
-case, use a separate scan for each component. (The recommended color
-spaces and sampling factors will not run into that restriction, so a
-minimal reader need not support more than one scan per segment.)
-
-To claim TIFF/JPEG compatibility, readers shall support multiple-strip TIFF
-files and the optional JPEGTables field; it is not acceptable to read only
-single-datastream files. Support for tiled TIFF files is strongly
-recommended but not required.
-
-
-Other recommendations for implementors
---------------------------------------
-
-The TIFF tag Compression=7 guarantees only that the compressed data is
-represented as ISO JPEG datastreams. Since JPEG is a large and evolving
-standard, readers should apply careful error checking to the JPEG markers
-to ensure that the compression process is within their capabilities. In
-particular, to avoid being confused by future extensions to the JPEG
-standard, it is important to abort if unknown marker codes are seen.
-
-The point of requiring that all image segments use the same JPEG process is
-to ensure that a reader need check only one segment to determine whether it
-can handle the image. For example, consider a TIFF reader that has access
-to fast but restricted JPEG hardware, as well as a slower, more general
-software implementation. It is desirable to check only one image segment
-to find out whether the fast hardware can be used. Thus, writers should
-try to ensure that all segments of an image look as much "alike" as
-possible: there should be no variation in scan layout, use of options such
-as DRI, etc. Ideally, segments will be processed identically except
-perhaps for using different local quantization or entropy-coding tables.
-
-Writers should avoid including "noise" JPEG markers (COM and APPn markers).
-Standard TIFF fields provide a better way to transport any non-image data.
-Some JPEG codecs may change behavior if they see an APPn marker they
-think they understand; since the TIFF spec requires these markers to be
-ignored, this behavior is undesirable.
-
-It is possible to convert an interchange-JPEG file (e.g., a JFIF file) to
-TIFF simply by dropping the interchange datastream into a single strip.
-(However, designers are reminded that the TIFF spec discourages huge
-strips; splitting the image is somewhat more work but may give better
-results.) Conversion from TIFF to interchange JPEG is more complex. A
-strip-based TIFF/JPEG file can be converted fairly easily if all strips use
-identical JPEG tables and no RSTn markers: just delete the overhead markers
-and insert RSTn markers between strips. Converting tiled images is harder,
-since the data will usually not be in the right order (unless the tiles are
-only one MCU high). This can still be done losslessly, but it will require
-undoing and redoing the entropy coding so that the DC coefficient
-differences can be updated.
-
-There is no default value for JPEGTables: standard TIFF files must define all
-tables that they reference. For some closed systems in which many files will
-have identical tables, it might make sense to define a default JPEGTables
-value to avoid actually storing the tables. Or even better, invent a
-private field selecting one of N default JPEGTables settings, so as to allow
-for future expansion. Either of these must be regarded as a private
-extension that will render the files unreadable by other applications.
-
-
-References
-----------
-
-[1] Wallace, Gregory K. "The JPEG Still Picture Compression Standard",
-Communications of the ACM, April 1991 (vol. 34 no. 4), pp. 30-44.
-
-This is the best short technical introduction to the JPEG algorithms.
-It is a good overview but does not provide sufficiently detailed
-information to write an implementation.
-
-[2] Pennebaker, William B. and Mitchell, Joan L. "JPEG Still Image Data
-Compression Standard", Van Nostrand Reinhold, 1993, ISBN 0-442-01272-1.
-638pp.
-
-This textbook is by far the most complete exposition of JPEG in existence.
-It includes the full text of the ISO JPEG standards (DIS 10918-1 and draft
-DIS 10918-2). No would-be JPEG implementor should be without it.
-
-[3] ISO/IEC IS 10918-1, "Digital Compression and Coding of Continuous-tone
-Still Images, Part 1: Requirements and guidelines", February 1994.
-ISO/IEC DIS 10918-2, "Digital Compression and Coding of Continuous-tone
-Still Images, Part 2: Compliance testing", final approval expected 1994.
-
-These are the official standards documents. Note that the Pennebaker and
-Mitchell textbook is likely to be cheaper and more useful than the official
-standards.
-
-
-Changes to Section 21: YCbCr Images
-===================================
-
-[This section of the Tech Note clarifies section 21 to make clear the
-interpretation of image dimensions in a subsampled image. Furthermore,
-the section is changed to allow the original image dimensions not to be
-multiples of the sampling factors. This change is necessary to support use
-of JPEG compression on odd-size images.]
-
-Add the following paragraphs to the Section 21 introduction (p. 89),
-just after the paragraph beginning "When a Class Y image is subsampled":
-
- In a subsampled image, it is understood that all TIFF image
- dimensions are measured in terms of the highest-resolution
- (luminance) component. In particular, ImageWidth, ImageLength,
- RowsPerStrip, TileWidth, TileLength, XResolution, and YResolution
- are measured in luminance samples.
-
- RowsPerStrip, TileWidth, and TileLength are constrained so that
- there are an integral number of samples of each component in a
- complete strip or tile. However, ImageWidth/ImageLength are not
- constrained. If an odd-size image is to be converted to subsampled
- format, the writer should pad the source data to a multiple of the
- sampling factors by replication of the last column and/or row, then
- downsample. The number of luminance samples actually stored in the
- file will be a multiple of the sampling factors. Conversely,
- readers must ignore any extra data (outside the specified image
- dimensions) after upsampling.
-
- When PlanarConfiguration=2, each strip or tile covers the same
- image area despite subsampling; that is, the total number of strips
- or tiles in the image is the same for each component. Therefore
- strips or tiles of the subsampled components contain fewer samples
- than strips or tiles of the luminance component.
-
- If there are extra samples per pixel (see field ExtraSamples),
- these data channels have the same number of samples as the
- luminance component.
-
-Rewrite the YCbCrSubSampling field description (pp 91-92) as follows
-(largely to eliminate possibly-misleading references to
-ImageWidth/ImageLength of the subsampled components):
-
- (first paragraph unchanged)
-
- The two elements of this field are defined as follows:
-
- Short 0: ChromaSubsampleHoriz:
-
- 1 = there are equal numbers of luma and chroma samples horizontally.
-
- 2 = there are twice as many luma samples as chroma samples
- horizontally.
-
- 4 = there are four times as many luma samples as chroma samples
- horizontally.
-
- Short 1: ChromaSubsampleVert:
-
- 1 = there are equal numbers of luma and chroma samples vertically.
-
- 2 = there are twice as many luma samples as chroma samples
- vertically.
-
- 4 = there are four times as many luma samples as chroma samples
- vertically.
-
- ChromaSubsampleVert shall always be less than or equal to
- ChromaSubsampleHoriz. Note that Cb and Cr have the same sampling
- ratios.
-
- In a strip TIFF file, RowsPerStrip is required to be an integer
- multiple of ChromaSubSampleVert (unless RowsPerStrip >=
- ImageLength, in which case its exact value is unimportant).
- If ImageWidth and ImageLength are not multiples of
- ChromaSubsampleHoriz and ChromaSubsampleVert respectively, then the
- source data shall be padded to the next integer multiple of these
- values before downsampling.
-
- In a tiled TIFF file, TileWidth must be an integer multiple of
- ChromaSubsampleHoriz and TileLength must be an integer multiple of
- ChromaSubsampleVert. Padding will occur to tile boundaries.
-
- The default values of this field are [ 2,2 ]. Thus, YCbCr data is
- downsampled by default!
-</pre>
diff --git a/src/3rdparty/libtiff/html/addingtags.html b/src/3rdparty/libtiff/html/addingtags.html
deleted file mode 100644
index 452821c2d0..0000000000
--- a/src/3rdparty/libtiff/html/addingtags.html
+++ /dev/null
@@ -1,292 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Modifying The TIFF Library
-</TITLE>
-</HEAD>
-<BODY BGCOLOR=white>
-<FONT FACE="Arial, Helvetica, Sans">
-
-<H1>
-Defining New TIFF Tags
-</H1>
-
-Libtiff has built-in knowledge of all the standard TIFF tags, as
-well as extentions. The following describes how to add knowledge of
-new tags as builtins to libtiff, or how to application specific tags can
-be used by applications without modifying libtiff.
-<p>
-
-<h2>TIFFFieldInfo</h2>
-
-How libtiff manages specific tags is primarily controlled by the
-definition for that tag value stored internally as a TIFFFieldInfo structure.
-This structure looks like this:
-<p>
-
-<pre>
-typedef struct {
- ttag_t field_tag; /* field's tag */
- short field_readcount; /* read count/TIFF_VARIABLE/TIFF_SPP */
- short field_writecount; /* write count/TIFF_VARIABLE */
- TIFFDataType field_type; /* type of associated data */
- unsigned short field_bit; /* bit in fieldsset bit vector */
- unsigned char field_oktochange;/* if true, can change while writing */
- unsigned char field_passcount;/* if true, pass dir count on set */
- char *field_name; /* ASCII name */
-} TIFFFieldInfo;
-</pre>
-
-<ul>
-<li> <b>field_tag</b>: the tag number. For instance 277 for the
-SamplesPerPixel tag. Builtin tags will generally have a #define in
-tiff.h for each known tag. <p>
-
-<li> <b>field_readcount</b>: The number of values which should be read.
-The special value TIFF_VARIABLE (-1) indicates that a variable number of
-values may be read. The special value TIFFTAG_SPP (-2) indicates that there
-should be one value for each sample as defined by TIFFTAG_SAMPLESPERPIXEL.
-The special value TIFF_VARIABLE2 (-3) is presumably similar to TIFF_VARIABLE
-though I am not sure what the distinction in behaviour is. This field
-is TIFF_VARIABLE for variable length ascii fields.<p>
-
-<li> <b>field_writecount</b>: The number of values which should be written.
-Generally the same as field_readcount. A few built-in exceptions exist, but
-I haven't analysed why they differ. <p>
-
-<li> <b>field_type</b>: Type of the field. One of TIFF_BYTE, TIFF_ASCII,
-TIFF_SHORT, TIFF_LONG, TIFF_RATIONAL, TIFF_SBYTE, TIFF_UNDEFINED,
-TIFF_SSHORT, TIFF_SLONG, TIFF_SRATIONAL, TIFF_FLOAT, TIFF_DOUBLE or
-TIFF_IFD. Note that some fields can support more than one type (for
-instance short and long). These fields should have multiple TIFFFieldInfos.
-<p>
-
-<li> <b>field_bit</b>: Built-in tags stored in special fields in the
-TIFF structure have assigned field numbers to distinguish them (ie.
-FIELD_SAMPLESPERPIXEL). New tags should generally just use
-FIELD_CUSTOM indicating they are stored in the generic tag list.<p>
-
-<li> <b>field_oktochange</b>: TRUE if it is OK to change this tag value
-while an image is being written. FALSE for stuff that must be set once
-and then left unchanged (like ImageWidth, or PhotometricInterpretation for
-instance).<p>
-
-<li> <b>field_passcount</b>: If TRUE, then the count value must be passed
-in TIFFSetField(), and TIFFGetField(), otherwise the count is not required.
-This should generally be TRUE for non-ascii variable count tags unless
-the count is implicit (such as with the colormap).<p>
-
-<li> <b>field_name</b>: A name for the tag. Normally mixed case (studly caps)
-like "StripByteCounts" and relatively short. <p>
-
-</ul>
-
-A TIFFFieldInfo definition exists for each built-in tag in the tif_dirinfo.c
-file. Some tags which support multiple data types have more than one
-definition, one per data type supported. <p>
-
-Various functions exist for getting the internal TIFFFieldInfo definitions,
-including _TIFFFindFieldInfo(), and _TIFFFindFieldInfoByName(). See
-tif_dirinfo.c for details. There must be some mechanism to get the whole
-list, though I don't see it off hand.<p>
-
-<h2>Default Tag Auto-registration</h2>
-
-In libtiff 3.6.0 a new mechanism was introduced allowing libtiff to
-read unrecognised tags automatically. When an unknown tags is encountered,
-it is automatically internally defined with a default name and a type
-derived from the tag value in the file. Applications only need to predefine
-application specific tags if they need to be able to set them in a file, or
-if particular calling conventions are desired for TIFFSetField() and
-TIFFGetField().<p>
-
-When tags are autodefined like this the <b>field_readcount</b> and
-<b>field_writecount</b> values are always TIFF_VARIABLE. The
-<b>field_passcount</b> is always TRUE, and the <b>field_bit</b> is
-FIELD_CUSTOM. The field name will be "Tag %d" where the %d is the tag
-number.<p>
-
-<h2>Defining Application Tags</h2>
-
-For various reasons, it is common for applications to want to define
-their own tags to store information outside the core TIFF specification.
-This is done by calling TIFFMergeFieldInfo() with one or more TIFFFieldInfos.
-<p>
-
-The libgeotiff library provides geospatial information extentions within
-a TIFF file. First, a set of TIFFFieldInfo's is prepared with information
-on the new tags:<p>
-
-<pre>
-static const TIFFFieldInfo xtiffFieldInfo[] = {
-
- /* XXX Insert Your tags here */
- { TIFFTAG_GEOPIXELSCALE, -1,-1, TIFF_DOUBLE, FIELD_CUSTOM,
- TRUE, TRUE, "GeoPixelScale" },
- { TIFFTAG_GEOTRANSMATRIX, -1,-1, TIFF_DOUBLE, FIELD_CUSTOM,
- TRUE, TRUE, "GeoTransformationMatrix" },
- { TIFFTAG_GEOTIEPOINTS, -1,-1, TIFF_DOUBLE, FIELD_CUSTOM,
- TRUE, TRUE, "GeoTiePoints" },
- { TIFFTAG_GEOKEYDIRECTORY, -1,-1, TIFF_SHORT, FIELD_CUSTOM,
- TRUE, TRUE, "GeoKeyDirectory" },
- { TIFFTAG_GEODOUBLEPARAMS, -1,-1, TIFF_DOUBLE, FIELD_CUSTOM,
- TRUE, TRUE, "GeoDoubleParams" },
- { TIFFTAG_GEOASCIIPARAMS, -1,-1, TIFF_ASCII, FIELD_CUSTOM,
- TRUE, FALSE, "GeoASCIIParams" }
-};
-</pre>
-
-In order to define the tags, we call TIFFMergeFieldInfo() on the
-desired TIFF handle with the list of TIFFFieldInfos.<p>
-
-<pre>
-#define N(a) (sizeof (a) / sizeof (a[0]))
-
- /* Install the extended Tag field info */
- TIFFMergeFieldInfo(tif, xtiffFieldInfo, N(xtiffFieldInfo));
-</pre>
-
-The tags need to be defined for each TIFF file opened - and when reading
-they should be defined before the tags of the file are read, yet a valid
-TIFF * is needed to merge the tags against. In order to get them
-registered at the appropriate part of the setup process, it is necessary
-to register our merge function as an extender callback with libtiff.
-This is done with TIFFSetTagExtender(). We also keep track of the
-previous tag extender (if any) so that we can call it from our extender
-allowing a chain of customizations to take effect. <P>
-
-<pre>
-static TIFFExtendProc _ParentExtender = NULL;
-
-static
-void _XTIFFInitialize(void)
-{
- static int first_time=1;
-
- if (! first_time) return; /* Been there. Done that. */
- first_time = 0;
-
- /* Grab the inherited method and install */
- _ParentExtender = TIFFSetTagExtender(_XTIFFDefaultDirectory);
-}
-</pre>
-
-The extender callback is looks like this. It merges in our new fields
-and then calls the next extender if there is one in effect.<p>
-
-<pre>
-static void
-_XTIFFDefaultDirectory(TIFF *tif)
-{
- /* Install the extended Tag field info */
- TIFFMergeFieldInfo(tif, xtiffFieldInfo, N(xtiffFieldInfo));
-
- /* Since an XTIFF client module may have overridden
- * the default directory method, we call it now to
- * allow it to set up the rest of its own methods.
- */
-
- if (_ParentExtender)
- (*_ParentExtender)(tif);
-}
-</pre>
-
-The above approach ensures that our new definitions are used when reading
-or writing any TIFF file. However, since on reading we already have
-default definitions for tags, it is usually not critical to pre-define them.
-If tag definitions are only required for writing custom tags, you can just
-call TIFFMergeFieldInfo() before setting new tags. The whole extender
-architecture can then be avoided.<p>
-
-<A NAME=AddingTags><P><H2>Adding New Builtin Tags</H2></A>
-
-A similar approach is taken to the above. However, the TIFFFieldInfo
-should be added to the tiffFieldInfo[] list in tif_dirinfo.c. Ensure that
-new tags are added in sorted order by the tag number.<p>
-
-Normally new built-in tags should be defined with FIELD_CUSTOM; however, if
-it is desirable for the tag value to have it's own field in the TIFFDirectory
-structure, then you will need to #define a new FIELD_ value for it, and
-add appropriate handling as follows:
-
-
-<OL>
-<LI>Define the tag in <B>tiff.h</B>.
-<LI>Add a field to the directory structure in <B>tif_dir.h</B>
- and define a <TT>FIELD_*</TT> bit (also update the definition of
- <TT>FIELD_CODEC</TT> to reflect your addition).
-<LI>Add an entry in the <TT>TIFFFieldInfo</TT> array defined at the top of
- <B>tif_dirinfo.c</B>.
- Note that you must keep this array sorted by tag
- number and that the widest variant entry for a tag should come
- first (e.g. <TT>LONG</TT> before <TT>SHORT</TT>).
-<LI>Add entries in <TT>_TIFFVSetField()</TT> and <TT>_TIFFVGetField()</TT>
- for the new tag.
-<LI>(<I>optional</I>) If the value associated with the tag is not a scalar value
- (e.g. the array for <TT>TransferFunction</TT>) and requires
- special processing,
- then add the appropriate code to <TT>TIFFReadDirectory()</TT> and
- <TT>TIFFWriteDirectory()</TT>. You're best off finding a similar tag and
- cribbing code.
-<LI>Add support to <TT>TIFFPrintDirectory()</TT> in <B>tif_print.c</B>
- to print the tag's value.
-</OL>
-
-<P>
-If you want to maintain portability, beware of making assumptions
-about data types. Use the typedefs (<TT>uint16</TT>, etc. when dealing with
-data on disk and <TT>t*_t</TT> when stuff is in memory) and be careful about
-passing items through printf or similar vararg interfaces.
-
-<A NAME=AddingCODECTags><P><H2>Adding New Codec-private Tags</H2></A>
-
-To add tags that are meaningful <EM>only when a particular compression
-algorithm is used</EM> follow these steps:
-
-<OL>
-<LI>Define the tag in <B>tiff.h</B>.
-<LI>Allocate storage for the tag values in the private state block of
- the codec.
-<LI>Insure the state block is created when the codec is initialized.
-<LI>At <TT>TIFFInitfoo</TT> time override the method pointers in the
- TIFF structure
- for getting, setting and printing tag values. For example,
-<PRE>
- sp->vgetparent = tif->tif_vgetfield;
- tif->tif_vgetfield = fooVGetField; /* hook for codec tags */
- sp->vsetparent = tif->tif_vsetfield;
- tif->tif_vsetfield = fooVSetField; /* hook for codec tags */
- tif->tif_printdir = fooPrintDir; /* hook for codec tags */
-</PRE>
- (Actually you may decide not to override the
- <TT>tif_printdir</TT> method, but rather just specify it).
-<LI>Create a private <TT>TIFFFieldInfo</TT> array for your tags and
- merge them into the core tags at initialization time using
- <TT>_TIFFMergeFieldInfo</TT>; e.g.
-<PRE>
- _TIFFMergeFieldInfo(tif, fooFieldInfo, N(fooFieldInfo));
-</PRE>
- (where <TT>N</TT> is a macro used liberaly throughout the distributed code).
-<LI>Fill in the get and set routines. Be sure to call the parent method
- for tags that you are not handled directly. Also be sure to set the
- <TT>FIELD_*</TT> bits for tags that are to be written to the file. Note that
- you can create ``pseudo-tags'' by defining tags that are processed
- exclusively in the get/set routines and never written to file (see
- the handling of <TT>TIFFTAG_FAXMODE</TT> in <B>tif_fax3.c</B>
- for an example of this).
-<LI>Fill in the print routine, if appropriate.
-</OL>
-
-Note that space has been allocated in the <TT>FIELD_*</TT> bit space for
-codec-private tags. Define your bits as <TT>FIELD_CODEC+&lt;offset&gt;</TT> to
-keep them away from the core tags. If you need more tags than there
-is room for, just increase <TT>FIELD_SETLONGS</TT> at the top of
-<B>tiffiop.h</B>.
-
-<HR>
-
-Last updated: $Date: 2004/09/10 14:43:18 $
-
-</BODY>
-
-</HTML>
diff --git a/src/3rdparty/libtiff/html/bugs.html b/src/3rdparty/libtiff/html/bugs.html
deleted file mode 100644
index dd17c73ebf..0000000000
--- a/src/3rdparty/libtiff/html/bugs.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>Bugs and the TIFF Mailing List</TITLE>
-</HEAD>
-<BODY BGCOLOR=white>
-<FONT FACE="Arial, Helvetica, Sans">
-<H1>
-<IMG SRC=images/cover.jpg WIDTH=110 HEIGHT=110 ALIGN=left BORDER=1 HSPACE=6>
-Bugs, Bugzilla, and the TIFF Mailing List
-</H1>
-
-<P>
-This software is free. Please let us know when you find a problem or
-fix a bug.
-
-<P>
-Thanks to <A HREF=http://www.maptools.org/>MapTools.org</a>, libtiff now uses
-bugzilla to track bugs. All bugs filed in the older bugzilla at
-bugzilla.remotesensing.org (pre April 2008) have unfortunately been lost.
-<P>
-If you think you've discovered a bug, please first check to see if it is
-already known by looking at the list of already reported bugs. You can do so
-by visiting the buglist at
-<A HREF=http://bugzilla.maptools.org/buglist.cgi?product=libtiff>http://bugzilla.maptools.org/buglist.cgi?product=libtiff</A>. Also verify that
-the problem is still reproducable with the current development software
-from CVS.
-<P>
-If you'd like to enter a new bug, you can do so at
-<A HREF=http://bugzilla.maptools.org/enter_bug.cgi?product=libtiff>http://bugzilla.maptools.org/enter_bug.cgi?product=libtiff</A>.
-<P>
-If you'd like to inform us about some kind of security issue that should not
-be disclosed for a period of time, then you can contact maintainers directly.
-Send a copies of your report to the following people: Frank Warmerdam
-<a href="mailto:warmerdam@pobox.com">&lt;warmerdam@pobox.com&gt;</a>,
-Andrey Kiselev
-<a href="mailto:dron@ak4719.spb.edu">&lt;dron@ak4719.spb.edu&gt;</a>.
-<P>
-
-Of course, reporting bugs is no substitute for discussion. The
-<a href="mailto:tiff@lists.maptools.org">tiff@lists.maptools.org</a> mailing
-list is for users of this software, and discussion TIFF issues in general.
-It is managed with the Mailman software, and the web interface for subscribing
-and managing your access to the list is at:<p>
-
- <a href="http://lists.maptools.org/mailman/listinfo/tiff">http://lists.maptools.org/mailman/listinfo/tiff</a><P>
-
-Posts to the list are only accepted from members of the list in order
-to limit the amount of spam propagated. Also, to be approved as a member
-you will need to email the list administrator with a brief description of
-why you are interested in TIFF so we can weed out spammers.<p>
-
-A <A HREF="http://www.awaresystems.be/imaging/tiff/tml.html">Long Term
-Archive</a> including recent messages, and most messages back to 1993,
-with search capabilities is available, and
-has been prepared and hosted by <a href="http://www.awaresystems.be">AWare
-Systems</a>. <p>
-
-
-<HR>
-
-Last updated: $Date: 2008/09/03 08:04:26 $
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/build.html b/src/3rdparty/libtiff/html/build.html
deleted file mode 100644
index e0b21575c0..0000000000
--- a/src/3rdparty/libtiff/html/build.html
+++ /dev/null
@@ -1,880 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta name="generator" content=
-"HTML Tidy for Solaris (vers 12 April 2005), see www.w3.org">
-<title>Building the TIFF Software Distribution</title>
-</head>
-<body bgcolor="white">
-<h1><font face="Arial, Helvetica, Sans"><img src=
-"images/cramps.gif" width="159" height="203" align="left" border=
-"1" hspace="6"> Building the Software Distribution</font></h1>
-<ul>
-<li><a href="#UNIX">Building on a UNIX system</a>.</li>
-<li><a href="#MacMPW">Building on a Macintosh system with
-MPW</a>.</li>
-<li><a href="#MacCW">Building on a Macintosh system with
-CodeWarrior</a>.</li>
-<li><a href="#PC">Building on an MS-DOS or Windows system</a>.</li>
-<li><a href="#DJGPP">Building on MS-DOS with the DJGPP v2
-compiler</a>.</li>
-<li><a href="#VMS">Building on a VMS system</a>.</li>
-<li><a href="#Acorn">Building on an Acorn RISC OS system</a>.</li>
-<li><a href="#Other">Building the Software on Other
-Systems</a></li>
-</ul>
-<br clear="left">
-This chapter contains step-by-step instructions on how to configure
-and build the TIFF software distribution. The software is most
-easily built on a UNIX system, but with a little bit of work it can
-easily be built and used on other non-UNIX platforms. <a name=
-"UNIX" id="UNIX"></a>
-<hr>
-<h2>Building on a UNIX System</h2>
-To build the software on a UNIX system you need to first run the
-configure shell script that is located in the top level of the
-source directory. This script probes the target system for
-necessary tools and functions and constructs a build environment in
-which the software may be compiled. Once configuration is done, you
-simply run <tt>make</tt> (or <tt>gmake</tt>) to build the software
-and then <tt>make install</tt> to do the installation; for example:
-<div style="margin-left: 2em">
-<pre>
-hyla% <b>cd tiff-v3.4beta099</b>
-hyla% <b>./configure</b>
- <i>...lots of messages...</i>
-hyla% <b>make</b>
- <i>...lots of messages...</i>
-hyla# <b>make install</b>
-</pre></div>
-Supplied makefiles are depend on GNU <tt>make</tt> utility, so you
-will need the one. Depending on your installation <b>make</b>
-command may invoke standard system <tt>make</tt> and <b>gmake</b>
-invoke GNU make. In this case you should use former. If you don't
-have <tt>make</tt> at all, but only <tt>gmake</tt>, you should
-export environment variable <tt>MAKE=gmake</tt> before
-<b>./configure</b>.
-<p>In general, the software is designed such that the following
-should be ``<i>make-able</i>'' in each directory:</p>
-<div style="margin-left: 2em">
-<pre>
-make [all] build stuff
-make install build&amp;install stuff
-make clean remove .o files, executables and cruft
-make distclean remove everything, that can be recreated
-</pre></div>
-Note that after running "<tt>make distclean</tt>" the
-<tt>configure</tt> script must be run again to create the Makefiles
-and other make-related files. <a name="BuildTrees" id=
-"BuildTrees"></a>
-<hr width="65%" align="right">
-<h3>Build Trees</h3>
-There are two schemes for configuring and building the software. If
-you intend to build the software for only one target system, you
-can configure the software so that it is built in the same
-directories as the source code.
-<div style="margin-left: 2em">
-<pre>
-hyla% <b>cd tiff-v3.4beta099</b>
-hyla% <b>ls</b>
-COPYRIGHT VERSION config.sub dist man
-Makefile.in config.guess configure html port
-README config.site contrib libtiff tools
-hyla% <b>./configure</b>
-</pre></div>
-<p>Otherwise, you can configure a build tree that is parallel to
-the source tree hierarchy but which contains only configured files
-and files created during the build procedure.</p>
-<div style="margin-left: 2em">
-<pre>
-hyla% <b>cd tiff-v3.4beta099</b>
-hyla% <b>mkdir obj obj/mycpu</b>
-hyla% <b>cd obj/mycpu</b>
-hyla% <b>../../configure</b>
-</pre></div>
-This second scheme is useful for:
-<ul>
-<li>building multiple targets from a single source tree</li>
-<li>building from a read-only source tree (e.g. if you receive the
-distribution on CD-ROM)</li>
-</ul>
-<a name="ConfigOptions" id="ConfigOptions"></a>
-<hr width="65%" align="right">
-<h3>Configuration Options</h3>
-The configuration process is critical to the proper compilation,
-installation, and operation of the software. The configure script
-runs a series of tests to decide whether or not the target system
-supports required functionality and, if it does not, whether it can
-emulate or workaround the missing functions. This procedure is
-fairly complicated and, due to the nonstandard nature of most UNIX
-systems, prone to error. The first time that you configure the
-software for use you should check the output from the configure
-script and look for anything that does not make sense for your
-system.
-<p>A second function of the configure script is to set the default
-configuration parameters for the software. Of particular note are
-the directories where the software is to be installed. By default
-the software is installed in the <b>/usr/local</b> hierarchy. To
-change this behaviour the appropriate parameters can be specified
-on the command line to configure. Run <b>./configure --help</b> to
-get a list of possible options. Installation related options are
-shown below.</p>
-<pre>
-<tt>
-Installation directories:
- --prefix=PREFIX install architecture-independent files in PREFIX
- [/usr/local]
- --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
- [PREFIX]
-
-By default, `make install' will install all the files in
-`/usr/local/bin', `/usr/local/lib' etc. You can specify
-an installation prefix other than `/usr/local' using `--prefix',
-for instance `--prefix=$HOME'.
-
-For better control, use the options below.
-
-Fine tuning of the installation directories:
- --bindir=DIR user executables [EPREFIX/bin]
- --sbindir=DIR system admin executables [EPREFIX/sbin]
- --libexecdir=DIR program executables [EPREFIX/libexec]
- --datadir=DIR read-only architecture-independent data [PREFIX/share]
- --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
- --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
- --localstatedir=DIR modifiable single-machine data [PREFIX/var]
- --libdir=DIR object code libraries [EPREFIX/lib]
- --includedir=DIR C header files [PREFIX/include]
- --oldincludedir=DIR C header files for non-gcc [/usr/include]
- --infodir=DIR info documentation [PREFIX/info]
- --mandir=DIR man documentation [PREFIX/man]
-
-Program names:
- --program-prefix=PREFIX prepend PREFIX to installed program names
- --program-suffix=SUFFIX append SUFFIX to installed program names
- --program-transform-name=PROGRAM run sed PROGRAM on installed program names
-</tt>
-</pre>
-<a name="Packages" id="Packages"></a>
-<hr width="65%" align="right">
-<h3>Configuring Optional Packages/Support</h3>
-The TIFF software comes with several packages that are installed
-only as needed, or only if specifically configured at the time the
-configure script is run. Packages can be configured via the
-<b>configure</b> script commandline parameters.
-<dl>
-<dt><i>Static/Shared Objects Support</i></dt>
-<dd><tt>--enable-shared[=PKGS]&nbsp;&nbsp;&nbsp;&nbsp;build shared
-libraries [default=yes]<br>
---enable-static[=PKGS]&nbsp;&nbsp;&nbsp;&nbsp;build static
-libraries [default=yes]</tt>
-<p>These options control whether or not to configure the software
-to build a shared and static binaries for the TIFF library. Use of
-shared libraries can significantly reduce the disk space needed for
-users of the TIFF software. If shared libarries are not used then
-the code is statically linked into each application that uses it.
-By default both types of binaries is configured.</p>
-<p><tt>--enable-rpath&nbsp;&nbsp;&nbsp;&nbsp;Enable runtime linker
-paths (-R libtool option)</tt></p>
-<p>Add library directories (see other options below) to the TIFF
-library run-time linker path.</p>
-</dd>
-<dt><i>JPEG Support</i></dt>
-<dd><tt>--disable-jpeg&nbsp;&nbsp;&nbsp;&nbsp;disable IJG JPEG
-library usage (required for JPEG compression, enabled by default)
---with-jpeg-include-dir=DIR&nbsp;&nbsp;&nbsp;&nbsp;location of IJG
-JPEG library headers
---with-jpeg-lib-dir=DIR&nbsp;&nbsp;&nbsp;&nbsp;location of IJG JPEG
-library binary)</tt></dd>
-<dd>The <tt>JPEG</tt> package enables support for the handling of
-TIFF images with JPEG-encoded data. Support for JPEG-encoded data
-requires the Independent JPEG Group (IJG) <tt>libjpeg</tt>
-distribution; this software is available at <a href=
-"ftp://ftp.uu.net/graphics/jpeg/">ftp.uu.net:/graphics/jpeg/</a>.
-<b>configure</b> script automatically tries to search the working
-IJG JPEG installation. If it fails to find library, JPEG support
-will be automatically disabled.If you want specify the exact paths
-to library binary and headers, use above switches for that.</dd>
-<dt><i>ZIP Support</i></dt>
-<dd>The <tt>ZIP</tt> support enables support for the handling of
-TIFF images with deflate-encoded data. Support for deflate-encoded
-data requires the freely available <tt>zlib</tt> distribution
-written by Jean-loup Gailly and Mark Adler; this software is
-available at <a href=
-"ftp://ftp.uu.net/pub/archiving/zip/zlib/">ftp.uu.net:/pub/archiving/zip/zlib/</a>
-(or try <a href=
-"ftp://quest.jpl.nasa.gov/beta/zlib/">quest.jpl.nasa.gov:/beta/zlib/</a>).
-If ZIP support is enabled the <tt>DIRS_LIBINC</tt> and
-<tt>DIR_GZLIB</tt> parameters should also be set (see below). By
-default this package is not configured.</dd>
-</dl>
-<a name="Sample" id="Sample"></a>
-<hr width="65%" align="right">
-<h3>A Sample Configuration Session</h3>
-This section shows a sample configuration session and describes the
-work done. The session is shown indented in a <tt>fixed width
-font</tt> with user-supplied input in a <tt><b>bold font</b></tt>.
-Comments are shown in a normal or <i>italic</i> font. This session
-was collected on a 486 machine running BSDI 1.1.
-<div style="margin-left: 2em">
-<pre>
-<tt>
-wullbrandt% <b>mkdir tiff</b>
-wullbrandt% <b>cd tiff</b>
-wullbrandt% <b>ln -s /hosts/oxford/usr/people/sam/tiff src</b>
-</tt>
-</pre></div>
-A build tree separate from the source tree is used here. In fact,
-in this case the distribution is accessed from a read-only
-NFS-mounted filesystem.
-<div style="margin-left: 2em">
-<pre>
-<tt>
-wullbrandt% <b>src/configure</b>
-Configuring TIFF Software v3.4beta015.
-
-Reading site-wide parameters from ../tiff-v3.4beta015/config.site.
-Reading local parameters from config.local.
-Gosh, aren't you lucky to have a i386-unknown-bsdi1.1 system!
-</tt>
-</pre></div>
-Note that configure announces the distribution version and the
-deduced target configuration (<tt>i386-unknown-bsdi1.1</tt> here).
-<div style="margin-left: 2em">
-<pre>
-<tt>
-Using /usr/local/bin/gcc for a C compiler (set CC to override).
-Looks like /usr/local/bin/gcc supports the -g option.
-Using " -g" for C compiler options.
-</tt>
-</pre></div>
-configure checked the normal shell search path for potential ANSI C
-compilers. The compiler is selected according to it properly
-compiling a small ANSI C test program. A specific compiler may be
-requested by setting the <tt>CC</tt> environment variable to the
-appropriate pathname, by supplying the parameter on the command
-line, e.g. <tt>-with-CC=gcc</tt>, or by setting <tt>CC</tt> in a
-configuration file.
-<p><img src="images/info.gif" align="left" hspace="10"> <em>Note
-that an ANSI C compiler is required to build the software. If a C
-compiler requires options to enable ANSI C compilation, they can be
-specified with the <tt>ENVOPTS</tt> parameter.</em></p>
-<p>Once a compiler is selected configure checks to see if the
-compiler accepts a -g option to enable the generation of debugging
-symbols, and if the compiler includes an ANSI C preprocessor.</p>
-<div style="margin-left: 2em">
-<pre>
-<tt>
-Using /usr/ucb/make to configure the software.
-</tt>
-</pre></div>
-Next various system-specific libraries that may or may not be
-needed are checked for (none are needed in this case). If your
-system requires a library that is not automatically included it can
-be specified by setting the <tt>MACHDEPLIBS</tt> parameter.
-<p><i>Creating port.h.</i> The <b>port.h</b> file is included by
-all the C code in the library (but not the tools). It includes
-definitions for functions and type definitions that are missing
-from system include files, <tt>#defines</tt> to enable or disable
-system-specific functionality, and other odds and ends.</p>
-<div style="margin-left: 2em">
-<pre>
-<tt>
-Creating libtiff/port.h with necessary definitions.
-... using LSB2MSB bit order for your i386 cpu
-... using big-endian byte order for your i386 cpu
-... configure use of mmap for memory-mapped files
-... O_RDONLY is in &lt;fcntl.h&gt;
-... using double for promoted floating point parameters
-... enabling use of inline functions
-Done creating libtiff/port.h.
-</tt>
-</pre></div>
-This file can take a long time to create so configure generates the
-file only when it is needed, either because the file does not exist
-or because a different target or compiler is to be used. Note that
-running "<tt>make distclean</tt>" in the top-level directory of the
-build tree will remove the <b>port.h</b> file (along with all the
-other files generated by configure).
-<p><i>Selecting emulated library functions.</i> Certain library
-functions used by the tools are not present on all systems and can
-be emulated using other system functionality. configure checks for
-the presence of such functions and if they are missing, will
-configure emulation code from the <b>port</b> directory to use
-instead. Building the TIFF software on unsupported systems may
-require adding to the code to the <b>port</b> directory.</p>
-<div style="margin-left: 2em">
-<pre>
-<tt>
-Checking system libraries for functionality to emulate.
-Done checking system libraries.
-</tt>
-</pre></div>
-If a routine must be emulated and configure does not automatically
-check for it, the routine name can be specified using the
-<tt>PORTFUNCS</tt> parameter. To add emulation support for a new
-function <tt>foo</tt>, create a file <b>port/foo.c</b> that
-contains the emulation code and then set <tt>PORTFUNCS=foo</tt> in
-a configuration file or modify the configure script to
-automatically check for the missing function.
-<div style="margin-left: 2em">
-<pre>
-<tt>
-Checking for Dynamic Shared Object (DSO) support.
-Done checking for DSO support.
-</tt>
-</pre></div>
-If the <tt>DSO</tt> package is enabled (<tt>DSO=auto</tt> or
-<tt>DSO=yes</tt>), then configure will verify the system and
-compiler are capable of constructing SVR4-style DSO's in the
-expected way. Note that while a system may support DSO's the
-compiler may not be capable of generating the required
-position-independent code and/or the compiler may not pass the
-needed options through to the loader.
-<p><i>Selecting utility programs.</i> configure locates various
-system utility programs that are used during installation of the
-software.</p>
-<div style="margin-left: 2em">
-<pre>
-<tt>
-Selecting programs used during installation.
-Looks like mv supports the -f option to force a move.
-Looks like /bin/ln supports the -s option to create a symbolic link.
-Done selecting programs.
-</tt>
-</pre></div>
-<p><i>Selecting default configuration parameters.</i> The remainder
-of the work done by configure involves setting up configuration
-parameters that control the placement and setup of files during the
-installation procedure.</p>
-<div style="margin-left: 2em">
-<pre>
-<tt>
-Selecting default TIFF configuration parameters.
-
-Looks like manual pages go in /usr/contrib/man.
-Looks like manual pages should be installed with bsd-nroff-gzip-0.gz.
-
-TIFF configuration parameters are:
-
-[ 1] Directory for tools: /usr/contrib/bin
-[ 2] Directory for libraries: /usr/contrib/lib
-[ 3] Directory for include files: /usr/contrib/include
-[ 4] Directory for manual pages: /usr/contrib/man
-[ 5] Manual page installation scheme: bsd-nroff-gzip-0.gz
-
-Are these ok [yes]?
-</tt>
-</pre></div>
-At this point you can interactively modify any of the displayed
-parameters. Hitting a carriage return or typing <tt>yes</tt> will
-accept the current parameters. Typing one of the number displayed
-along the left hand side causes configure to prompt for a new value
-of the specified parameter. Typing anything else causes configure
-to prompt for a new value <em>for each parameter</em>. In general
-hitting carriage return will accept the current value and typing
-anything that is unacceptable will cause a help message to be
-displayed. A description of each of the configuration parameters is
-given below.
-<p>Once acceptable parameters are setup configure will generate all
-the files that depend on these parameters. Note that certain files
-may or may not be created based on the configuration of optional
-packages and/or the functions supported by target system.</p>
-<div style="margin-left: 2em">
-<pre>
-<tt>
-Creating Makefile from ../tiff-v3.4beta015/Makefile.in
-Creating libtiff/Makefile from ../tiff-v3.4beta015/libtiff/Makefile.in
-Creating man/Makefile from ../tiff-v3.4beta015/man/Makefile.in
-Creating tools/Makefile from ../tiff-v3.4beta015/tools/Makefile.in
-Creating port/install.sh from ../tiff-v3.4beta015/port/install.sh.in
-Done.
-</tt>
-</pre></div>
-<a name="DSOSupport" id="DSOSupport"></a>
-<hr>
-<h3>Shared Library Support</h3>
-It is desirable to make the TIFF library be a shared object on
-systems that have support for shared libraries. Unfortunately the
-rules to use to build a shared library vary between operating
-systems and even compilers. The distributed software includes
-support for building a shared version of the library on a number of
-different systems. This support is split between rules in the file
-<b>libtiff/Makefile.in</b> that construct the shared library and
-checks done by the <tt>configure</tt> script to verify that the
-expected rules are supported by compilation tools for the target
-system.
-<p>To add new support for building a shared library both these
-files must be updated. In the configure script search for the
-section where the autoconfiguration setting of the <tt>DSO</tt>
-parameter is handled and add a new case for the target system that
-sets the <tt>DSOSUF</tt>, <tt>DSOLD</tt>, <tt>DSOOPTS</tt>, and
-<tt>LIBCOPTS</tt> options as appropriate for the system.
-<tt>DSOSUF</tt> specifies the filename suffix used for the shared
-library (e.g. ``.so'' for Dynamic Shared Objects on most SVR4-based
-systems). <tt>DSOLD</tt> specifies the program to use to build the
-shared library from a compiled object file; typically ``${LD}''
-though on some systems it is better to use the C compiler directly
-so system-dependent options and libraries are automatically
-supplied. <tt>DSOOPTS</tt> are options that must be specified to
-<tt>DSOLD</tt> when building the shared library. <tt>LIBCOPTS</tt>
-are options to pass to the C compiler when constructing a
-relocatable object file to include in a shared library; e.g. ``-K
-PIC'' on a Sun system. The <tt>DSO</tt> parameter must also be set
-to a unique label that identifies the target system and compilation
-tools. This label is used to select a target in
-<b>libtiff/Makefile.in</b> to do the actual work in building the
-shared library. Finally, to complete support for the shared library
-added the appropriate rules to <b>libtiff/Makefile.in</b> under the
-target specified in the <tt>configure</tt> script. <a name="PC" id=
-"PC"></a></p>
-<hr>
-<h2>Building the Software under Windows 95/98/NT/2000 with MS
-VC++</h2>
-With Microsoft Visual C++ installed, and properly configured for
-commandline use (you will likely need to source VCVARS32.BAT in
-AUTOEXEC.bAT or somewhere similar) you should be able to use the
-provided <tt>makefile.vc</tt>.
-<p>The source package is delivered using Unix line termination
-conventions, which work with MSVC but do not work with Windows
-'notepad'. If you use unzip from the <a href=
-"http://www.info-zip.org/pub/infozip/">Info-Zip</a> package, you
-can extract the files using Windows normal line termination
-conventions with a command similar to:</p>
-<pre>
- unzip -aa -a tiff-3.7.4.zip
-</pre>
-<p>By default libtiff expects that a pre-built zlib and jpeg
-library are provided by the user. If this is not the case, then you
-may edit libtiff\tiffconf.h using a text editor (e.g. notepad) and
-comment out the entries for JPEG_SUPPORT, PIXARLOG_SUPPORT, and
-ZIP_SUPPORT. Ignore the comment at the top of the file which says
-that it has no influence on the build, because the statement is not
-true for Windows. However, by taking this approach, libtiff will
-not be able to open some TIFF files.</p>
-<p>To build using the provided makefile.vc you may use:</p>
-<pre>
- C:\tiff-3.7.4&gt; nmake /f makefile.vc clean
- C:\tiff-3.7.4&gt; nmake /f makefile.vc
-
- or (the hard way)
-
- C:\tiff-3.7.4&gt; cd port
- C:\tiff-3.7.4\port&gt; nmake /f makefile.vc clean
- C:\tiff-3.7.4\port&gt; nmake /f makefile.vc
- C:\tiff-3.7.4&gt; cd ../libtiff
- C:\tiff-3.7.4\libtiff&gt; nmake /f makefile.vc clean
- C:\tiff-3.7.4\libtiff&gt; nmake /f makefile.vc
- C:\tiff-3.7.4\libtiff&gt; cd ..\tools
- C:\tiff-3.7.4\tools&gt; nmake /f makefile.vc clean
- C:\tiff-3.7.4\tools&gt; nmake /f makefile.vc
-</pre>
-<p>This will build the library file
-<tt>libtiff\libtiff\libtiff.lib</tt>. This can be used in Win32
-programs. You may want to adjust the build options before start
-compiling. All parameters contained in the <tt>nmake.opt</tt>
-file.This is a plain text file you can open with your favorite text
-editor.</p>
-<p>The makefile also builds a DLL (libtiff.dll) with an associated
-import library (libtiff_i.lib). Any builds using libtiff will need
-to include the LIBTIFF\LIBTIFF directory in the include path.</p>
-<p>The <tt>libtiff\tools\makefile.vc</tt> should build .exe's for
-all the standard TIFF tool programs.</p>
-<p><a name="DJGPP" id="DJGPP"></a></p>
-<hr>
-<h2>Building the Software under MS/DOS with the DJGPP v2
-compiler</h2>
-[<i>From the file <b>contrib/dosdjgpp/README</b>.</i>]
-<p>The directory <b>contrib/dosdjgpp</b> contains the files
-necessary to build the library and tools with the DJGPP v2 compiler
-under MSDOS.</p>
-<p>All you have to do is copy the files in the directory into the
-respective directories and run make. If you want, you can use the
-<b>conf.bat</b> script to do that for you, make sure that the file
-is stored with MSDOS text EOL-convention (CR/LF), otherwise the
-<b>command.com</b> will not do anything.</p>
-<p>Note that you probably will not be able to build the library
-with the v1.x versions of djgpp, due to two problems. First, the
-top makefile calls a sub-make for each directory and you are likely
-to run out of memory, since each recursive invocation of a djgpp
-v1.x program requires about 130k, to avoid that, you can enter the
-directories manually and call make (well, there are only two dirs).
-The 2nd problem is that djgpp 1.x doesn't call the coff2exe
-(stubify) program when creating an executable. This means that all
-programs compiled are not converted to exe and consequently are not
-available for calling directly. For the tools directory, you can
-just call coff2exe for each program after make finishes, but in the
-libtiff directory, a few programs are created during the make
-process that have to be called for make to continue (e.g.
-mkg3states). Make will probably report an error at each such stage.
-To fix that, either add a coff2exe call before each program is
-called or call coff2exe manually and rerun make (there 2-3 such
-programs). <a name="MacMPW" id="MacMPW"></a></p>
-<hr>
-<h2>Building the Software on a Macintosh with MPW</h2>
-The directory <b>contrib/mac-mpw</b> contains support for compiling
-the library and tools under the MPW Shell on a Macintosh system.
-This support was contributed by Niles Ritter (<a href=
-"mailto:ndr@tazboy.jpl.nasa.gov">ndr@tazboy.jpl.nasa.gov</a>).
-<p>[<i>From the file <b>contrib/mac-mpw/README</b>.</i>]</p>
-<p>This directory contains all of the utilities and makefile source
-to build the LIBTIFF library and tools from the MPW Shell. The file
-BUILD.mpw in this directory is an executable script which uses all
-of these files to create the MPW makefiles and run them.</p>
-<p>The &lt;file&gt;.make files are not MPW makefiles as such, but
-are when run through the "mactrans" program, which turns the ascii
-"%nn" metacharacters into the standard weird MPW make
-characters.</p>
-<p>This translation trick is necessary to protect the files when
-they are put into unix tarfiles, which tend to mangle the special
-characters. <a name="MacCW" id="MacCW"></a></p>
-<hr>
-<h2>Building the Software on a Macintosh with CodeWarrior</h2>
-The directory <b>contrib/mac-cw</b> contains support for compiling
-the library and tools with MetroWerks CodeWarrior 6.1 on a
-Macintosh system. This support was contributed by Niles Ritter
-(<a href=
-"mailto:ndr@tazboy.jpl.nasa.gov">ndr@tazboy.jpl.nasa.gov</a>).
-<p>[<i>From the file <b>contrib/mac-cw/README</b>.</i>] In this
-directory you will find a Makefile.script Applescript file, which
-should be run in order to build the libtiff code using MetroWerks
-CodeWarrior. Refer to the "metrowerks.note" instructions on
-building the library for 68k and PowerPC native code, as well as
-building some of the libtiff tools, which are rather unix-like, but
-at least give an example of how to link everything together.
-<a name="VMS" id="VMS"></a></p>
-<hr>
-<h2>Building the Software on a VMS System</h2>
-The VMS port was done by Karsten Spang (<a href=
-"mailto:krs@kampsax.dk">krs@kampsax.dk</a>), who also "sort of"
-maintains it. The VMS specific files are not in the main
-directories. Instead they are placed under
-<tt>[.CONTRIB.VMS...]</tt> in the distribution tree. Installation:
-It is assumed that you have unpacked the tar file into a VMS
-directory tree, in this text called DISK:[TIFF].
-<ol>
-<li>Move the VMS specific files to their proper directories.
-<pre>
-$ SET DEFAULT DISK:[TIFF.CONTRIB.VMS]
-$ RENAME [.LIBTIFF]*.* [-.-.LIBTIFF]
-$ RENAME [.TOOLS]*.* [-.-.TOOLS]
-</pre></li>
-<li>Compile the library.
-<pre>
-$ SET DEFAULT DISK:[TIFF.LIBTIFF]
-$ @MAKEVMS
-</pre></li>
-<li>Compile the tools.
-<pre>
-$ SET DEFAULT DISK:[TIFF.TOOLS]
-$ @MAKEVMS
-</pre></li>
-<li>Define the programs.
-<pre>
-$ DEFINE TIFFSHR DISK:[TIFF.LIBTIFF]TIFFSHR
-$ FAX2PS :==$DISK:[TIFF.TOOLS]FAX2PS
-$ FAX2TIFF :==$DISK:[TIFF.TOOLS]FAX2TIFF
-$ GIF2TIFF :==$DISK:[TIFF.TOOLS]GIF2TIFF
-$ PAL2RGB :==$DISK:[TIFF.TOOLS]PAL2RGB
-$ PPM2TIFF :==$DISK:[TIFF.TOOLS]PPM2TIFF
-$ RAS2TIFF :==$DISK:[TIFF.TOOLS]RAS2TIFF
-$ RGB2YCBCR :==$DISK:[TIFF.TOOLS]RGB2YCBCR
-$ THUMBNAIL :==$DISK:[TIFF.TOOLS]THUMBNAIL
-$ TIFF2BW :==$DISK:[TIFF.TOOLS]TIFF2BW
-$ TIFF2PS :==$DISK:[TIFF.TOOLS]TIFF2PS
-$ TIFFCMP :==$DISK:[TIFF.TOOLS]TIFFCMP
-$ TIFFCP :==$DISK:[TIFF.TOOLS]TIFFCP
-$ TIFFDITHER:==$DISK:[TIFF.TOOLS]TIFFDITHER
-$ TIFFDUMP :==$DISK:[TIFF.TOOLS]TIFFDUMP
-$ TIFFINFO :==$DISK:[TIFF.TOOLS]TIFFINFO
-$ TIFFMEDIAN:==$DISK:[TIFF.TOOLS]TIFFMEDIAN
-$ TIFFSPLIT :==$DISK:[TIFF.TOOLS]TIFFSPLIT
-$ YCBCR :==$DISK:[TIFF.TOOLS]YCBCR
-</pre></li>
-</ol>
-You will want to add these lines to your <tt>LOGIN.COM</tt> file,
-after changing the name of the directory that you have used on your
-machine.
-<p>This release has been tested on OpenVMS/VAX 5.5-2, using VAX C
-3.2. A previous release was tested under OpenVMS/AXP ?.? using DEC
-C ?.?, it is believed that this release as well works on AXP. The
-code contains some GNU C specific things. This does *not* imply,
-however, that the VAX/GCC configuration has been tested, *it has
-not*.</p>
-<p>The command procedures (<tt>MAKEVMS.COM</tt>) for building the
-library and tools, is believed to choose the correct options for
-the VAX and AXP cases automatically.</p>
-<p>On the AXP, IEEE floating point is used by default. If you want
-VAX floating point, remove the <tt>/FLOAT=IEEE_FLOAT</tt>
-qualifier, and change <tt>HAVE_IEEEFP=1</tt> to
-<tt>HAVE_IEEEFP=0</tt> in the <tt>MAKEVMS.COM</tt> files in both
-the <b>libtiff</b> and <b>tools</b> directories.</p>
-<h3>Compiling your own program on a VMS system:</h3>
-When compiling a source file in which you <tt>"#include
-&lt;tiffio.h&gt;"</tt>, use the following command
-<pre>
- $ CC/INCLUDE=DISK:[TIFF.LIBTIFF]
-</pre>
-This ensures that the header file is found. On the AXP, also add
-<tt>/FLOAT=IEEE_FLOAT</tt> (if used when building the library).
-<h3>Linking your own program to the TIFF library on a VMS
-system:</h3>
-You can link to the library in two ways: Either using the shareable
-library, or using the object library. On the VAX these
-possibilities are:
-<ol>
-<li>Using the shareable TIFF library.
-<pre>
-$ LINK MY_PROGRAM,DISK:[TIFF.LIBTIFF]TIFF/OPTIONS,SYS$INPUT:/OPTIONS
- SYS$SHARE:VAXCRTL/SHAREABLE
-</pre></li>
-<li>Using the TIFF object library.
-<pre>
-$ LINK MY_PROGRAM, -
- DISK:[TIFF.LIBTIFF]TIFF/LIBRARY/INCLUDE=(TIF_FAX3SM,TIF_CODEC), -
- SYS$INPUT:/OPTIONS
- SYS$SHARE:VAXCRTL/SHAREABLE
-</pre></li>
-</ol>
-On AXP (and possibly also using DEC C on VAX) the corresponding
-commands are
-<ol>
-<li>Using the shareable TIFF library.
-<pre>
-$ LINK MY_PROGRAM,DISK:[TIFF.LIBTIFF]TIFF/OPTIONS
-</pre></li>
-<li>Using the TIFF object library.
-<pre>
-$ LINK MY_PROGRAM,DISK:[TIFF.LIBTIFF]TIFF/LIBRARY
-</pre></li>
-</ol>
-Method 1 uses the shortest link time and smallest <tt>.EXE</tt>
-files, but it requires that <tt>TIFFSHR</tt> is defined as above at
-link time and <strong>at run time</strong>. Using the compilation
-procedure above, the tools are linked in this way.
-<p>Method 2 gives somewhat longer link time and larger
-<tt>.EXE</tt> files, but does not require <tt>TIFFSHR</tt> to be
-defined. This method is recommended if you want to run your program
-on another machine, and for some reason don't want to have the
-library on that machine. If you plan to have more than one program
-(including the tools) on the machine, it is recommended that you
-copy the library to the other machine and use method 1. <a name=
-"Acorn" id="Acorn"></a></p>
-<hr>
-<h2>Building the Software on an Acorn RISC OS system</h2>
-The directory <b>contrib/acorn</b> contains support for compiling
-the library under Acorn C/C++ under Acorn's RISC OS 3.10 or above.
-Subsequent pathnames will use the Acorn format: The full-stop or
-period character is a pathname delimeter, and the slash character
-is not interpreted; the reverse position from Unix. Thus
-"libtiff/tif_acorn.c" becomes "libtiff.tif_acorn/c".
-<p>This support was contributed by Peter Greenham. (<a href=
-"mailto:peter@enlarion.demon.co.uk">peter@enlarion.demon.co.uk</a>).</p>
-<h3>Installing LibTIFF:</h3>
-<p>LIBTIFF uses several files which have names longer than the
-normal RISC OS maximum of ten characters. This complicates matters.
-Maybe one day Acorn will address the problem and implement long
-filenames properly. Until then this gets messy, especially as I'm
-trying to do this with obeyfiles and not have to include binaries
-in this distribution.</p>
-<p>First of all, ensure you have Truncate configured on (type
-<tt>*Configure Truncate On</tt>)</p>
-<p>Although it is, of course, preferable to have long filenames,
-LIBTIFF can be installed with short filenames, and it will compile
-and link without problems. However, <i>getting</i> it there is more
-problematic. <b>contrib.acorn.install</b> is an installation
-obeyfile which will create a normal Acorn-style library from the
-source (ie: with c, h and o folders etc.), but needs the
-distribution library to have been unpacked into a location which is
-capable of supporting long filenames, even if only temporarily.</p>
-<p>My recommendation, until Acorn address this problem properly, is
-to use Jason Tribbeck's <a href=
-"ftp://ftp.demon.co.uk/pub/mirrors/hensa/micros/arch/riscos/c/c020/longfiles.arc">
-LongFilenames</a>, or any other working system that gives you long
-filenames, like a nearby NFS server for instance.</p>
-<p>If you are using Longfilenames, even if only temporarily to
-install LIBTIFF, unpack the TAR into a RAMDisc which has been
-longfilenamed (ie: <tt>*addlongfs ram</tt>) and then install from
-there to the hard disk. Unfortunately Longfilenames seems a bit
-unhappy about copying a bunch of long-named files across the same
-filing system, but is happy going between systems. You'll need to
-create a ramdisk of about 2Mb.</p>
-<p>Now you can run the installation script I've supplied (in
-contrib.acorn), which will automate the process of installing
-LIBTIFF as an Acorn-style library. The syntax is as follows:</p>
-<p><tt>install &lt;source_dir&gt; &lt;dest_dir&gt;</tt></p>
-<p>Install will then create &lt;dest_dir&gt; and put the library in
-there. For example, having used LongFilenames on the RAMDisk and
-unpacked the library into there, you can then type:</p>
-<p><tt>Obey RAM::RamDisc0.$.contrib.acorn.install RAM::RamDisc0.$
-ADFS::4.$.LIBTIFF</tt></p>
-<p>It doesn't matter if the destination location can cope with long
-filenames or not. The filenames will be truncated if necessary
-(*Configure Truncate On if you get errors) and all will be
-well.</p>
-<h3>Compiling LibTIFF:</h3>
-<p>Once the LibTIFF folder has been created and the files put
-inside, making the library should be just a matter of running
-'<b>SetVars</b>' to set the appropriate system variables, then
-running '<b>Makefile</b>'.</p>
-<p><b>OSLib</b></p>
-<p><a href=
-"ftp://ftp.acorn.co.uk/pub/riscos/releases/oslib/oslib.arc">OSLib</a>
-is a comprehensive API for RISC OS machines, written by Jonathan
-Coxhead of Acorn Computers (although OSLib is not an official Acorn
-product). Using the OSLib SWI veneers produces code which is more
-compact and more efficient than code written using _kernel_swi or
-_swi. The Acorn port of LibTIFF can take advantage of this if
-present. Edit the Makefile and go to the Static dependencies
-section. The first entry is:</p>
-<pre>
-# Static dependencies:
-@.o.tif_acorn: @.c.tif_acorn
- cc $(ccflags) -o @.o.tif_acorn @.c.tif_acorn
-</pre>
-<p>Change the cc line to:</p>
-<pre>
- cc $(ccflags) -DINCLUDE_OSLIB -o @.o.tif_acorn @.c.tif_acorn
-</pre>
-<p>Remember, however, that OSLib is only <i>recommended</i> for
-efficiency's sake. It is not required. <a name="Other" id=
-"Other"></a></p>
-<hr>
-<h2>Building the Software on Other Systems</h2>
-This section contains information that might be useful if you are
-working on a non-UNIX system that is not directly supported. All
-library-related files described below are located in the
-<b>libtiff</b> directory.
-<p>The library requires two files that are generated
-<i>on-the-fly</i>. The file <b>tif_fax3sm.c</b> has the state
-tables for the Group 3 and Group 4 decoders. This file is generated
-by the <tt>mkg3states</tt> program on a UNIX system; for
-example,</p>
-<div style="margin-left: 2em">
-<pre>
-<tt>
-cd libtiff
-cc -o mkg3states mkg3states.c
-rm -f tif_fax3sm.c
-./mkg3states -c const tif_fax3sm.c
-</tt>
-</pre></div>
-The <tt>-c</tt> option can be used to control whether or not the
-resutling tables are generated with a <tt>const</tt> declaration.
-The <tt>-s</tt> option can be used to specify a C storage class for
-the table declarations. The <tt>-b</tt> option can be used to force
-data values to be explicitly bracketed with ``{}'' (apparently
-needed for some MS-Windows compilers); otherwise the structures are
-emitted in as compact a format as possible. Consult the source code
-for this program if you have questions.
-<p>The second file required to build the library, <b>version.h</b>,
-contains the version information returned by the
-<tt>TIFFGetVersion</tt> routine. This file is built on most systems
-using the <tt>mkversion</tt> program and the contents of the
-<tt>VERSION</tt> and <tt>tiff.alpha</tt> files; for example,</p>
-<div style="margin-left: 2em">
-<pre>
-cd libtiff
-cc -o mkversion mkversion.c
-rm -f version.h
-./mkversion -v ../VERSION -a ../dist/tiff.alpha version.h
-</pre></div>
-<p>Otherwise, when building the library on a non-UNIX system be
-sure to consult the files <b>tiffcomp.h</b> and <b>tiffconf.h</b>.
-The former contains system compatibility definitions while the
-latter is provided so that the software configuration can be
-controlled on systems that do not support the make facility for
-building the software.</p>
-<p>Systems without a 32-bit compiler may not be able to handle some
-of the codecs in the library; especially the Group 3 and 4 decoder.
-If you encounter problems try disabling support for a particular
-codec; consult the <a href=
-"internals.html#Config">documentation</a>.</p>
-<p>Programs in the tools directory are written to assume an ANSI C
-compilation environment. There may be a few POSIX'isms as well. The
-code in the <b>port</b> directory is provided to emulate routines
-that may be missing on some systems. On UNIX systems the
-<tt>configure</tt> script automatically figures out which routines
-are not present on a system and enables the use of the equivalent
-emulation routines from the <b>port</b> directory. It may be
-necessary to manually do this work on a non-UNIX system. <a name=
-"Testing" id="Testing"></a></p>
-<hr>
-<h2>Checking out the Software</h2>
-<p>Assuming you have working versions of <tt>tiffgt</tt> and
-<tt>tiffsv</tt>, you can just use them to view any of the sample
-images available for testing (see the <a href="images.html">section
-on obtaining the test images</a>). Otherwise, you can do a cursory
-check of the library with the <tt>tiffcp</tt> and <tt>tiffcmp</tt>
-programs. For example,</p>
-<div style="margin-left: 2em">
-<pre>
-tiffcp -lzw cramps.tif x.tif
-tiffcmp cramps.tif x.tif
-</pre></div>
-<p>(<tt>tiffcmp</tt> should be silent if the files compare
-correctly). <a name="TOC" id="TOC"></a></p>
-<hr>
-<h2>Table of Contents</h2>
-The following files makup the core library:
-<pre>
-libtiff/tiff.h TIFF spec definitions
-libtiff/tiffcomp.h non-UNIX OS-compatibility definitions
-libtiff/tiffconf.h non-UNIX configuration definitions
-libtiff/tiffio.h public TIFF library definitions
-libtiff/tiffiop.h private TIFF library definitions
-libtiff/t4.h CCITT Group 3/4 code tables+definitions
-libtiff/tif_dir.h private defs for TIFF directory handling
-libtiff/tif_fax3.h CCITT Group 3/4-related definitions
-libtiff/tif_predict.h private defs for Predictor tag support
-libtiff/uvcode.h LogL/LogLuv codec-specific definitions
-libtiff/version.h version string (generated by Makefile)
-
-libtiff/tif_acorn.c Acorn-related OS support
-libtiff/tif_apple.c Apple-related OS support
-libtiff/tif_atari.c Atari-related OS support
-libtiff/tif_aux.c auxilary directory-related functions
-libtiff/tif_close.c close an open TIFF file
-libtiff/tif_codec.c configuration table of builtin codecs
-libtiff/tif_compress.c compression scheme support
-libtiff/tif_dir.c directory tag interface code
-libtiff/tif_dirinfo.c directory known tag support code
-libtiff/tif_dirread.c directory reading code
-libtiff/tif_dirwrite.c directory writing code
-libtiff/tif_dumpmode.c "no" compression codec
-libtiff/tif_error.c library error handler
-libtiff/tif_fax3.c CCITT Group 3 and 4 codec
-libtiff/tif_fax3sm.c G3/G4 state tables (generated by mkg3states)
-libtiff/tif_flush.c i/o and directory state flushing
-libtiff/tif_getimage.c TIFFRGBAImage support
-libtiff/tif_jpeg.c JPEG codec (interface to the IJG distribution)
-libtiff/tif_luv.c SGI LogL/LogLuv codec
-libtiff/tif_lzw.c LZW codec
-libtiff/tif_msdos.c MSDOS-related OS support
-libtiff/tif_next.c NeXT 2-bit scheme codec (decoding only)
-libtiff/tif_open.c open and simply query code
-libtiff/tif_packbits.c Packbits codec
-libtiff/tif_pixarlog.c Pixar codec
-libtiff/tif_predict.c Predictor tag support
-libtiff/tif_print.c directory printing support
-libtiff/tif_read.c image data reading support
-libtiff/tif_strip.c some strip-related code
-libtiff/tif_swab.c byte and bit swapping support
-libtiff/tif_thunder.c Thunderscan codec (decoding only)
-libtiff/tif_tile.c some tile-related code
-libtiff/tif_unix.c UNIX-related OS support
-libtiff/tif_version.c library version support
-libtiff/tif_vms.c VMS-related OS support
-libtiff/tif_warning.c library warning handler
-libtiff/tif_win3.c Windows-3.1-related OS support
-libtiff/tif_win32.c Win32 (95/98/NT) related OS support
-libtiff/tif_write.c image data writing support
-libtiff/tif_zip.c Deflate codec
-
-libtiff/mkg3states.c program to generate G3/G4 decoder state tables
-libtiff/mkspans.c program to generate black-white span tables
-libtiff/mkversion.c program to generate libtiff/version.h.
-</pre>
-<hr>
-Last updated: $Date: 2005/12/24 22:25:05 $
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/contrib.html b/src/3rdparty/libtiff/html/contrib.html
deleted file mode 100644
index d138900a8b..0000000000
--- a/src/3rdparty/libtiff/html/contrib.html
+++ /dev/null
@@ -1,209 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Contributed TIFF Software
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Arial, Helvetica, Sans">
-<H1>
-<IMG SRC=images/smallliz.jpg WIDTH=144 HEIGHT=108 ALIGN=left BORDER=1 HSPACE=6>
-Contributed TIFF Software
-</H1>
-
-
-<P>
-The <B>contrib</B> directory has contributed software that
-uses the TIFF library or which is associated with the library
-(typically glue and guidance for ports to non-UNIX platforms, or tools that
-aren't directly TIFF related).
-
-<BR CLEAR=left>
-
-<P>
-<TABLE BORDER CELLPADDING=3>
-
-<TR>
-<TD VALIGN=top>
-<B>contrib/vms</B>
-</TD>
-<TD>
-scripts and files from Karsten Spang for building
- the library and tools under VMS
-</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top>
-<B>contrib/dbs</B>
-</TD>
-<TD>
-various tools from Dan & Chris Sears, including a simple X-based viewer
-</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top>
-<B>contrib/ras</B>
-</TD>
-<TD>
-two programs by Patrick Naughton for converting
- between Sun rasterfile format and TIFF (these
- require <TT>libpixrect.a</TT>, as opposed to the one in
- tools that doesn't)
-</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top>
-<B>contrib/mac-mpw</B><br>
-<B>contrib/mac-cw</B>
-</TD>
-<TD>
-scripts and files from Niles Ritter for building
-the library and tools under Macintosh/MPW C and
-code warrior.
-</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top>
-<B>contrib/acorn</B>
-</TD>
-<TD>
-scripts and files from Peter Greenham for building
- the library and tools on an Acorn RISC OS system.
-</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top>
-<B>contrib/win32</B>
-</TD>
-<TD>
-scripts and files from Scott Wagner for building
-the library under Windows NT and Windows 95. (The makefile.vc in the
-libtiff/libtiff directory may be sufficient for most users.)
-</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top>
-<B>contrib/win_dib</B>
-</TD>
-<TD>
-two separate implementations of TIFF to DIB code suitable for any Win32
-platform. Contributed by Mark James, and Philippe Tenenhaus.
-</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top>
-<B>contrib/ojpeg</B>
-</TD>
-<TD>
-Patch for IJG JPEG library related to support for some Old JPEG in TIFF files.
-Contributed by Scott Marovich.
-</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top>
-<B>contrib/dosdjgpp</B>
-</TD>
-<TD>
-scripts and files from Alexander Lehmann for building
- the library under MSDOS with the DJGPP v2 compiler.
-</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top>
-<B>contrib/tags</B>
-</TD>
-<TD>
-scripts and files from Niles Ritter for adding private
- tag support at runtime, without changing libtiff.
-</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top>
-<B>contrib/mfs</B>
-</TD>
-<TD>
-code from Mike Johnson to read+write images in memory
-without modifying the library
-</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top>
-<B>contrib/pds</B>
-</TD>
-<TD>
-various routines from Conrad Poelman; a TIFF image iterator and
- code to support ``private sub-directories''
-</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top>
-<B>contrib/iptcutil</B>
-</TD>
-
-<TD>
-
-A utility by <A HREF=mailto:billr@corbis.com>Bill Radcliffe</a> to
-convert an extracted IPTC Newsphoto caption from a binary blob to
-ASCII text, and vice versa. IPTC binary blobs can be extracted from
-images via the <A
-HREF=http://www.ImageMagick.org/>ImageMagick</a> convert(1)
-utility.
-
-
-</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top>
-<B>contrib/addtiffo</B>
-</TD>
-
-<TD>
-
-A utility (and supporting subroutine) for building
-one or more reduce resolution
-overviews to an existing TIFF file. Supplied by
-<a href="http://pobox.com/~warmerdam">Frank Warmerdam</a>.
-
-</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top>
-<B>contrib/stream</B>
-</TD>
-
-<TD>
-
-A class (TiffStream) for accessing TIFF files through a C++ stream
-interface. Supplied by <a href="mailto:avi@shutterfly.com">Avi Bleiweiss</a>.
-
-</TD>
-</TR>
-
-</TABLE>
-
-<P>
-Questions regarding these packages are usually best directed toward
-their authors.
-
-<P>
-<HR>
-
-Last updated: $Date: 2006/01/03 01:42:30 $
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/document.html b/src/3rdparty/libtiff/html/document.html
deleted file mode 100644
index 12f138f5aa..0000000000
--- a/src/3rdparty/libtiff/html/document.html
+++ /dev/null
@@ -1,48 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-TIFF Documentation
-</TITLE>
-</HEAD>
-<BODY BGCOLOR=white>
-<FONT FACE="Arial, Helvetica, Sans">
-<H1>
-<IMG SRC=images/jim.gif WIDTH=139 HEIGHT=170 ALIGN=left BORDER=1 HSPACE=6>
-TIFF Documentation
-</H1>
-
-<P>
-A copy of the 6.0 specification is available from Adobe at
-<A HREF="http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf">http://partners.adobe.com/public/developer/en/tiff/TIFF6.pdf</A>, or from the libtiff
-ftp site at <a href="ftp://ftp.remotesensing.org/pub/libtiff/doc/TIFF6.pdf">
-ftp://ftp.remotesensing.org/pub/libtiff/doc/TIFF6.pdf</A>.<p>
-
-<P>
-Draft <a href="TIFFTechNote2.html">TIFF Technical Note #2</A> covers problems
-with the TIFF 6.0 design for embedding JPEG-compressed data in TIFF, and
-describes an alternative. <p>
-
-Other Adobe information on TIFF can be retrieved from:
-
-<A HREF="http://partners.adobe.com/public/developer/tiff/index.html">
-http://partners.adobe.com/public/developer/tiff/index.html</A>
-
-<P>
-Joris Van Damme maintains a list of known tags and their descriptions and
-definitions. It is available online at
-<A HREF="http://www.awaresystems.be/imaging/tiff/tifftags.html">
-http://www.awaresystems.be/imaging/tiff/tifftags.html</A>
-
-<P>
-There is a FAQ, related both to TIFF format and libtiff library:
-<A HREF="http://www.awaresystems.be/imaging/tiff/faq.html">
-http://www.awaresystems.be/imaging/tiff/faq.html</A>
-
-<HR>
-
-<ADDRESS>
- Last updated: $Date: 2009-08-20 22:31:00 $
-</ADDRESS>
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/images.html b/src/3rdparty/libtiff/html/images.html
deleted file mode 100644
index 150ed0c42a..0000000000
--- a/src/3rdparty/libtiff/html/images.html
+++ /dev/null
@@ -1,41 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-TIFF Test Images
-</TITLE>
-</HEAD>
-<BODY BGCOLOR=white>
-<FONT FACE="Arial, Helvetica, Sans">
-<H1>
-<IMG SRC=images/bali.jpg WIDTH=158 HEIGHT=107 ALIGN=left BORDER=1 HSPACE=6>
-TIFF Test Images
-</H1>
-
-<P>
-Test images are available for most formats supported by the library.
-Most of the images included in the test kit are also part of this
-documentation (albeit in TIFF rather than GIF or JFIF).
-The images are kept in a separate archive that should be located in
-the same directory as this software.
-
-<BR CLEAR=left>
-
-<P>
-The latest archive of test images is located at
-<A HREF="ftp://ftp.remotesensing.org/pub/libtiff/pics-3.8.0.tar.gz">
-ftp://ftp.remotesensing.org/pub/libtiff/pics-3.8.0.tar.gz</A>
-
-<P>
-There are two other good sources for TIFF test images:
-the contributed software <B>contrib/dbs</B> includes several
-programs that generate test images suitable for debugging, and
-the <TT>tiffcp</TT> program can be used to generate a variety
-of images with different storage characteristics.
-
-<P>
-<HR>
-
-Last updated: $Date: 2006/01/02 23:50:44 $
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/images/back.gif b/src/3rdparty/libtiff/html/images/back.gif
deleted file mode 100644
index 11d0c35f46..0000000000
--- a/src/3rdparty/libtiff/html/images/back.gif
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/libtiff/html/images/bali.jpg b/src/3rdparty/libtiff/html/images/bali.jpg
deleted file mode 100644
index 1f5c146dd5..0000000000
--- a/src/3rdparty/libtiff/html/images/bali.jpg
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/libtiff/html/images/cat.gif b/src/3rdparty/libtiff/html/images/cat.gif
deleted file mode 100644
index 5bd3fac1e2..0000000000
--- a/src/3rdparty/libtiff/html/images/cat.gif
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/libtiff/html/images/cover.jpg b/src/3rdparty/libtiff/html/images/cover.jpg
deleted file mode 100644
index 8698cfb064..0000000000
--- a/src/3rdparty/libtiff/html/images/cover.jpg
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/libtiff/html/images/cramps.gif b/src/3rdparty/libtiff/html/images/cramps.gif
deleted file mode 100644
index 9153f9ae28..0000000000
--- a/src/3rdparty/libtiff/html/images/cramps.gif
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/libtiff/html/images/dave.gif b/src/3rdparty/libtiff/html/images/dave.gif
deleted file mode 100644
index c36d447772..0000000000
--- a/src/3rdparty/libtiff/html/images/dave.gif
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/libtiff/html/images/info.gif b/src/3rdparty/libtiff/html/images/info.gif
deleted file mode 100644
index 783d63153e..0000000000
--- a/src/3rdparty/libtiff/html/images/info.gif
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/libtiff/html/images/jello.jpg b/src/3rdparty/libtiff/html/images/jello.jpg
deleted file mode 100644
index df99e663ef..0000000000
--- a/src/3rdparty/libtiff/html/images/jello.jpg
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/libtiff/html/images/jim.gif b/src/3rdparty/libtiff/html/images/jim.gif
deleted file mode 100644
index 9a18a031fa..0000000000
--- a/src/3rdparty/libtiff/html/images/jim.gif
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/libtiff/html/images/note.gif b/src/3rdparty/libtiff/html/images/note.gif
deleted file mode 100644
index 7177d68a19..0000000000
--- a/src/3rdparty/libtiff/html/images/note.gif
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/libtiff/html/images/oxford.gif b/src/3rdparty/libtiff/html/images/oxford.gif
deleted file mode 100644
index dd4b86e186..0000000000
--- a/src/3rdparty/libtiff/html/images/oxford.gif
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/libtiff/html/images/quad.jpg b/src/3rdparty/libtiff/html/images/quad.jpg
deleted file mode 100644
index 4b7df170be..0000000000
--- a/src/3rdparty/libtiff/html/images/quad.jpg
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/libtiff/html/images/ring.gif b/src/3rdparty/libtiff/html/images/ring.gif
deleted file mode 100644
index 2a614f4929..0000000000
--- a/src/3rdparty/libtiff/html/images/ring.gif
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/libtiff/html/images/smallliz.jpg b/src/3rdparty/libtiff/html/images/smallliz.jpg
deleted file mode 100644
index 8eb827f8ad..0000000000
--- a/src/3rdparty/libtiff/html/images/smallliz.jpg
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/libtiff/html/images/strike.gif b/src/3rdparty/libtiff/html/images/strike.gif
deleted file mode 100644
index 0709d19867..0000000000
--- a/src/3rdparty/libtiff/html/images/strike.gif
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/libtiff/html/images/warning.gif b/src/3rdparty/libtiff/html/images/warning.gif
deleted file mode 100644
index f51eb4b1a7..0000000000
--- a/src/3rdparty/libtiff/html/images/warning.gif
+++ /dev/null
Binary files differ
diff --git a/src/3rdparty/libtiff/html/index.html b/src/3rdparty/libtiff/html/index.html
deleted file mode 100644
index e43a708640..0000000000
--- a/src/3rdparty/libtiff/html/index.html
+++ /dev/null
@@ -1,123 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html lang="en">
-<head>
- <title>LibTIFF - TIFF Library and Utilities</title>
- <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
- <meta http-equiv="content-language" content="en">
- <style type="text/css">
- <!--
- th {text-align: left; vertical-align: top; padding-right: 1em; white-space: nowrap}
- -->
- </style>
-</head>
-<body lang="en" text="#000000" bgcolor="#ffffff" link="#0000ff" alink="#0000ff" vlink="#0000ff">
- <h1>LibTIFF - TIFF Library and Utilities</h1>
- <hr>
- <table cellspacing="0" cellpadding="0" border="0">
- <tr>
- <th>Home Page</th>
- <td><a href="http://www.remotesensing.org/libtiff/" title="Home of the LibTIFF software">http://www.remotesensing.org/libtiff/</a></td>
- </tr>
- <tr>
- <th>Home Page Mirror</th>
- <td><a href="http://libtiff.maptools.org/" title="Mirror of the LibTIFF software">http://libtiff.maptools.org/</a></td>
- </tr>
- <tr>
- <th>Latest Stable Release</th>
- <td><a href="v3.9.2.html">v3.9.2</a></td>
- </tr>
- <tr>
- <th>Master Download Site</th>
- <td><a href="ftp://ftp.remotesensing.org/pub/libtiff">ftp.remotesensing.org</a>, directory pub/libtiff</td>
- </tr>
- <tr>
- <th>Mirror Download Site</th>
- <td><a href="http://libtiff.maptools.org/dl/">http://libtiff.maptools.org/dl/</a></td>
- </tr>
- <tr>
- <th>Windows Binaries</th>
- <td><a href="http://gnuwin32.sourceforge.net/packages/libtiff.htm">GnuWin32 Project</a></td>
- </tr>
- <tr>
- <th>Mailing List</th>
- <td><a href="mailto:tiff@lists.maptools.org">tiff@lists.maptools.org</a>,
- <a href="http://lists.maptools.org/mailman/listinfo/tiff/">Subscription</a>,
- <a href="http://www.awaresystems.be/imaging/tiff/tml.html">Archive</a>.
- Please, read the <a href="http://www.awaresystems.be/imaging/tiff/faq.html">TIFF FAQ</a>
- before asking questions.</td>
- </tr>
- <tr>
- <th>Anonymous CVS</th>
- <td><tt>export CVSROOT=:pserver:cvsanon@cvs.maptools.org:/cvs/maptools/cvsroot<br>
- cvs login</tt><br>
- (use empty password)<br>
- <tt>cvs checkout -r branch-3-9 libtiff<br></tt>
- to get stable libtiff branch, or<br>
- <tt>cvs checkout libtiff</tt><br>
- to get bleeding edge development version of libtiff from CVS HEAD.</td>
- </tr>
- </table>
- <hr>
- <p>
- This software provides support for the <i>Tag Image File Format</i> (TIFF),
- a widely used format for storing image data. The latest version of
- the TIFF specification is <a href="document.html">available on-line</a>
- in several different formats.
- </p>
- <p>
- Included in this software distribution is a library, libtiff, for reading
- and writing TIFF, a small collection of tools for doing simple
- manipulations of TIFF images, and documentation on the
- library and tools. Libtiff is a portable software, it was built and
- tested on various systems: UNIX flavors (Linux, BSD, Solaris, MacOS X),
- Windows, OpenVMS. It should be possible to port libtiff and additional
- tools on other OSes.
- </p>
- <p>
- The library, along with associated tool programs, should handle most of
- your needs for reading and writing TIFF images on 32- and 64-bit
- machines. This software can also be used on older 16-bit systems
- though it may require some effort and you may need to leave out some of
- the compression support.
- </p>
- <p>
- The software was originally authored and maintained by Sam Leffler.
- While he keeps a fatherly eye on the mailing list, he is no longer
- responsible for day to day maintenance.
- </p>
- <p>
- Questions should be sent to the TIFF mailing list:
- <a href="mailto:tiff@lists.maptools.org">tiff@lists.maptools.org</a>, with
- a subscription interface at
- <a href="http://lists.maptools.org/mailman/listinfo/tiff">http://lists.maptools.org/mailman/listinfo/tiff</a>.
- </p>
- <p>
- The persons responsible for putting up this site and putting together
- versions &gt;= 3.5.1 are
- <a href="http://pobox.com/~warmerdam">Frank Warmerdam</a>,
- <a href="mailto:dron@ak4719.spb.edu">Andrey Kiselev</a>, Bob Friesenhahn,
-Joris Van Damme and Lee Howard.
- </p>
- <p>
- The following sections are included in this documentation:
- </p>
- <ul>
- <li><a href="support.html">TIFF 6.0 specification coverage</a></li>
- <li><a href="libtiff.html">Using the TIFF Library</a></li>
- <li><a href="internals.html">Modifying the TIFF Library</a>
- and <a href="addingtags.html">Adding New Tags</a></li>
- <li><a href="tools.html">TIFF tools overview</a></li>
- <li><a href="contrib.html">Contributed software</a></li>
- <li><a href="document.html">TIFF documentation</a></li>
- <li><a href="build.html">Building the software distribution</a></li>
- <li><a href="bugs.html">Bugs, Bugzilla, and the TIFF mailing list</a></li>
- <li><a href="images.html">Test images</a></li>
- <li><a href="misc.html">Acknowledgements and copyright issues</a></li>
- <li><a href="man/index.html">Man Pages</a></li>
- </ul>
- <hr>
- <p>
- Last updated $Date: 2009-08-28 16:24:13 $.
- </p>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/internals.html b/src/3rdparty/libtiff/html/internals.html
deleted file mode 100644
index 3cc9673125..0000000000
--- a/src/3rdparty/libtiff/html/internals.html
+++ /dev/null
@@ -1,572 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Modifying The TIFF Library
-</TITLE>
-</HEAD>
-<BODY BGCOLOR=white>
-<FONT FACE="Arial, Helvetica, Sans">
-<H1>
-<IMG SRC=images/dave.gif WIDTH=107 HEIGHT=148 BORDER=2 ALIGN=left HSPACE=6>
-Modifying The TIFF Library
-</H1>
-
-
-<P>
-This chapter provides information about the internal structure of
-the library, how to control the configuration when building it, and
-how to add new support to the library.
-The following sections are found in this chapter:
-
-<UL>
-<LI><A HREF=#Config>Library Configuration</A>
-<LI><A HREF=#Portability>General Portability Comments</A>
-<LI><A HREF="#Types">Types and Portability</A>
-<LI><A HREF="addingtags.html">Adding New Tags</A>
-<LI><A HREF=#AddingCODECS>Adding New Builtin Codecs</A>
-<LI><A HREF="addingtags.html#AddingCODECTags">Adding New Codec-private Tags</A>
-<LI><A HREF=#Other>Other Comments</A>
-</UL>
-
-
-<A NAME="Config"><P><HR WIDTH=65% ALIGN=right><H3>Library Configuration</H3></A>
-
-Information on compiling the library is given
-<A HREF=build.html>elsewhere in this documentation</A>.
-This section describes the low-level mechanisms used to control
-the optional parts of the library that are configured at build
-time. Control is based on
-a collection of C defines that are specified either on the compiler
-command line or in a configuration file such as <TT>port.h</TT>
-(as generated by the <TT>configure</TT> script for UNIX systems)
-or <B>tiffconf.h</B>.
-
-<P>
-Configuration defines are split into three areas:
-<UL>
-<LI>those that control which compression schemes are
- configured as part of the builtin codecs,
-<LI>those that control support for groups of tags that
- are considered optional, and
-<LI>those that control operating system or machine-specific support.
-</UL>
-
-<P>
-If the define <TT>COMPRESSION_SUPPORT</TT> is <STRONG>not defined</STRONG>
-then a default set of compression schemes is automatically
-configured:
-<UL>
-<LI>CCITT Group 3 and 4 algorithms (compression codes 2, 3, 4, and 32771),
-<LI>the Macintosh PackBits algorithm (compression 32773),
-<LI>a 4-bit run-length encoding scheme from ThunderScan (compression 32809),
-<LI>a 2-bit encoding scheme used by NeXT (compression 32766), and
-<LI>two experimental schemes intended for images with high dynamic range
-(compression 34676 and 34677).
-</UL>
-
-<P>
-
-To override the default compression behaviour define
-<TT>COMPRESSION_SUPPORT</TT> and then one or more additional defines
-to enable configuration of the appropriate codecs (see the table
-below); e.g.
-
-<UL><PRE>
-#define COMPRESSION_SUPPORT
-#define CCITT_SUPPORT
-#define PACKBITS_SUPPORT
-</PRE></UL>
-
-Several other compression schemes are configured separately from
-the default set because they depend on ancillary software
-packages that are not distributed with <TT>libtiff</TT>.
-
-<P>
-Support for JPEG compression is controlled by <TT>JPEG_SUPPORT</TT>.
-The JPEG codec that comes with <TT>libtiff</TT> is designed for
-use with release 5 or later of the Independent JPEG Group's freely
-available software distribution.
-This software can be retrieved from the directory
-<A HREF=ftp://ftp.uu.net/graphics/jpeg>ftp.uu.net:/graphics/jpeg/</A>.
-
-
-<P>
-<IMG SRC="images/info.gif" ALT="NOTE: " ALIGN=left HSPACE=8>
-<EM>Enabling JPEG support automatically enables support for
-the TIFF 6.0 colorimetry and YCbCr-related tags.</EM>
-
-<P>
-Experimental support for the deflate algorithm is controlled by
-<TT>DEFLATE_SUPPORT</TT>.
-The deflate codec that comes with <TT>libtiff</TT> is designed
-for use with version 0.99 or later of the freely available
-<TT>libz</TT> library written by Jean-loup Gailly and Mark Adler.
-The data format used by this library is described
-in the files
-<A HREF=ftp://ftp.uu.net/pub/archiving/zip/doc/zlib-3.1.doc>zlib-3.1.doc</A>,
-and
-<A HREF=ftp://ftp.uu.net/pub/archiving/zip/doc/deflate-1.1.doc>deflate-1.1.doc</A>,
-available in the directory
-<A HREF=ftp://ftp.uu.net/pub/archiving/zip/doc>ftp.uu.net:/pub/archiving/zip/doc</A>.</EM>
-The library can be retried from the directory
-<A HREF=ftp://ftp.uu.net/pub/archiving/zip/zlib/>ftp.uu.net:/pub/archiving/zip/zlib/</A>
-(or try <A HREF=ftp://quest.jpl.nasa.gov/beta/zlib/>quest.jpl.nasa.gov:/beta/zlib/</A>).
-
-<P>
-<IMG SRC="images/warning.gif" ALT="NOTE: " ALIGN=left HSPACE=8 VSPACE=6>
-<EM>The deflate algorithm is experimental. Do not expect
-to exchange files using this compression scheme;
-it is included only because the similar, and more common,
-LZW algorithm is claimed to be governed by licensing restrictions.</EM>
-
-
-<P>
-By default <B>tiffconf.h</B> defines
-<TT>COLORIMETRY_SUPPORT</TT>,
-<TT>YCBCR_SUPPORT</TT>,
-and
-<TT>CMYK_SUPPORT</TT>.
-
-<P>
-<TABLE BORDER CELLPADDING=3>
-
-<TR><TH ALIGN=left>Define</TH><TH ALIGN=left>Description</TH></TR>
-
-<TR>
-<TD VALIGN=top><TT>CCITT_SUPPORT</TT></TD>
-<TD>CCITT Group 3 and 4 algorithms (compression codes 2, 3, 4,
- and 32771)</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top><TT>PACKBITS_SUPPORT</TT></TD>
-<TD>Macintosh PackBits algorithm (compression 32773)</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top><TT>LZW_SUPPORT</TT></TD>
-<TD>Lempel-Ziv & Welch (LZW) algorithm (compression 5)</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top><TT>THUNDER_SUPPORT</TT></TD>
-<TD>4-bit
-run-length encoding scheme from ThunderScan (compression 32809)</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top><TT>NEXT_SUPPORT</TT></TD>
-<TD>2-bit encoding scheme used by NeXT (compression 32766)</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top><TT>OJPEG_SUPPORT</TT></TD>
-<TD>obsolete JPEG scheme defined in the 6.0 spec (compression 6)</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top><TT>JPEG_SUPPORT</TT></TD>
-<TD>current JPEG scheme defined in TTN2 (compression 7)</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top><TT>ZIP_SUPPORT</TT></TD>
-<TD>experimental Deflate scheme (compression 32946)</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top><TT>PIXARLOG_SUPPORT</TT></TD>
-<TD>Pixar's compression scheme for high-resolution color images (compression 32909)</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top><TT>SGILOG_SUPPORT</TT></TD>
-<TD>SGI's compression scheme for high-resolution color images (compression 34676 and 34677)</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top><TT>COLORIMETRY_SUPPORT</TT></TD>
-<TD>support for the TIFF 6.0 colorimetry tags</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top><TT>YCBCR_SUPPORT</TT></TD>
-<TD>support for the TIFF 6.0 YCbCr-related tags</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top><TT>CMYK_SUPPORT</TT></TD>
-<TD>support for the TIFF 6.0 CMYK-related tags</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top><TT>ICC_SUPPORT</TT></TD>
-<TD>support for the ICC Profile tag; see
-<I>The ICC Profile Format Specification</I>,
-Annex B.3 "Embedding ICC Profiles in TIFF Files";
-available at
-<A HREF=http://www.color.org>http://www.color.org</A>
-</TD>
-</TR>
-
-</TABLE>
-
-
-<A NAME="Portability"><P><HR WIDTH=65% ALIGN=right><H3>General Portability Comments</H3></A>
-
-This software is developed on Silicon Graphics UNIX
-systems (big-endian, MIPS CPU, 32-bit ints,
-IEEE floating point).
-The <TT>configure</TT> shell script generates the appropriate
-include files and make files for UNIX systems.
-Makefiles exist for non-UNIX platforms that the
-code runs on -- this work has mostly been done by other people.
-
-<P>
-In general, the code is guaranteed to work only on SGI machines.
-In practice it is highly portable to any 32-bit or 64-bit system and much
-work has been done to insure portability to 16-bit systems.
-If you encounter portability problems please return fixes so
-that future distributions can be improved.
-
-<P>
-The software is written to assume an ANSI C compilation environment.
-If your compiler does not support ANSI function prototypes, <TT>const</TT>,
-and <TT>&lt;stdarg.h&gt;</TT> then you will have to make modifications to the
-software. In the past I have tried to support compilers without <TT>const</TT>
-and systems without <TT>&lt;stdarg.h&gt;</TT>, but I am
-<EM>no longer interested in these
-antiquated environments</EM>. With the general availability of
-the freely available GCC compiler, I
-see no reason to incorporate modifications to the software for these
-purposes.
-
-<P>
-An effort has been made to isolate as many of the
-operating system-dependencies
-as possible in two files: <B>tiffcomp.h</B> and
-<B>libtiff/tif_&lt;os&gt;.c</B>. The latter file contains
-operating system-specific routines to do I/O and I/O-related operations.
-The UNIX (<B>tif_unix.c</B>),
-Macintosh (<B>tif_apple.c</B>),
-and VMS (<B>tif_vms.c</B>)
-code has had the most use;
-the MS/DOS support (<B>tif_msdos.c</B>) assumes
-some level of UNIX system call emulation (i.e.
-<TT>open</TT>,
-<TT>read</TT>,
-<TT>write</TT>,
-<TT>fstat</TT>,
-<TT>malloc</TT>,
-<TT>free</TT>).
-
-<P>
-Native CPU byte order is determined on the fly by
-the library and does not need to be specified.
-The <TT>HOST_FILLORDER</TT> and <TT>HOST_BIGENDIAN</TT>
-definitions are not currently used, but may be employed by
-codecs for optimization purposes.
-
-<P>
-The following defines control general portability:
-
-<P>
-<TABLE BORDER CELLPADDING=3 WIDTH=100%>
-
-<TR>
-<TD VALIGN=top><TT>BSDTYPES</TT></TD>
-<TD>Define this if your system does NOT define the
- usual BSD typedefs: <TT>u_char</TT>,
- <TT>u_short</TT>, <TT>u_int</TT>, <TT>u_long</TT>.</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top><TT>HAVE_IEEEFP</TT></TD>
-<TD>Define this as 0 or 1 according to the floating point
- format suported by the machine. If your machine does
- not support IEEE floating point then you will need to
- add support to tif_machdep.c to convert between the
- native format and IEEE format.</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top><TT>HAVE_MMAP</TT></TD>
-<TD>Define this if there is <I>mmap-style</I> support for
-mapping files into memory (used only to read data).</TD>
-</TR>
-
-<TR>
-<TD VALIGN=top><TT>HOST_FILLORDER</TT></TD>
-<TD>Define the native CPU bit order: one of <TT>FILLORDER_MSB2LSB</TT>
- or <TT>FILLORDER_LSB2MSB</TT></TD>
-</TR>
-
-<TR>
-<TD VALIGN=top><TT>HOST_BIGENDIAN</TT></TD>
-<TD>Define the native CPU byte order: 1 if big-endian (Motorola)
- or 0 if little-endian (Intel); this may be used
- in codecs to optimize code</TD>
-</TR>
-</TABLE>
-
-<P>
-On UNIX systems <TT>HAVE_MMAP</TT> is defined through the running of
-the <TT>configure</TT> script; otherwise support for memory-mapped
-files is disabled.
-Note that <B>tiffcomp.h</B> defines <TT>HAVE_IEEEFP</TT> to be
-1 (<TT>BSDTYPES</TT> is not defined).
-
-
-<A NAME="Types"><P><HR WIDTH=65% ALIGN=right><H3>Types and Portability</H3></A>
-
-The software makes extensive use of C typedefs to promote portability.
-Two sets of typedefs are used, one for communication with clients
-of the library and one for internal data structures and parsing of the
-TIFF format. There are interactions between these two to be careful
-of, but for the most part you should be able to deal with portability
-purely by fiddling with the following machine-dependent typedefs:
-
-
-<P>
-<TABLE BORDER CELLPADDING=3 WIDTH=100%>
-
-<TR>
-<TD>uint8</TD>
-<TD>8-bit unsigned integer</TD>
-<TD>tiff.h</TD>
-</TR>
-
-<TR>
-<TD>int8</TD>
-<TD>8-bit signed integer</TD>
-<TD>tiff.h</TD>
-</TR>
-
-<TR>
-<TD>uint16</TD>
-<TD>16-bit unsigned integer</TD>
-<TD>tiff.h</TD>
-</TR>
-
-<TR>
-<TD>int16</TD>
-<TD>16-bit signed integer</TD>
-<TD>tiff.h</TD>
-</TR>
-
-<TR>
-<TD>uint32</TD>
-<TD>32-bit unsigned integer</TD>
-<TD>tiff.h</TD>
-</TR>
-
-<TR>
-<TD>int32</TD>
-<TD>32-bit signed integer</TD>
-<TD>tiff.h</TD>
-</TR>
-
-<TR>
-<TD>dblparam_t</TD>
-<TD>promoted type for floats</TD>
-<TD>tiffcomp.h</TD>
-</TR>
-
-</TABLE>
-
-<P>
-(to clarify <TT>dblparam_t</TT>, it is the type that float parameters are
-promoted to when passed by value in a function call.)
-
-<P>
-The following typedefs are used throughout the library and interfaces
-to refer to certain objects whose size is dependent on the TIFF image
-structure:
-
-
-<P>
-<TABLE BORDER CELLPADDING=3 WIDTH=100%>
-
-<TR>
-<TD WIDTH=25%>typedef unsigned int ttag_t;</TD> <TD>directory tag</TD>
-</TR>
-
-<TR>
-<TD>typedef uint16 tdir_t;</TD> <TD>directory index</TD>
-</TR>
-
-<TR>
-<TD>typedef uint16 tsample_t;</TD> <TD>sample number</TD>
-</TR>
-
-<TR>
-<TD>typedef uint32 tstrip_t;</TD> <TD>strip number</TD>
-</TR>
-
-<TR>
-<TD>typedef uint32 ttile_t;</TD> <TD>tile number</TD>
-</TR>
-
-<TR>
-<TD>typedef int32 tsize_t;</TD> <TD>i/o size in bytes</TD>
-</TR>
-
-<TR>
-<TD>typedef void* tdata_t;</TD> <TD>image data ref</TD>
-</TR>
-
-<TR>
-<TD>typedef void* thandle_t;</TD> <TD>client data handle</TD>
-</TR>
-
-<TR>
-<TD>typedef int32 toff_t;</TD> <TD>file offset (should be off_t)</TD>
-</TR>
-
-<TR>
-<TD>typedef unsigned char* tidata_t;</TD> <TD>internal image data</TD>
-</TR>
-
-</TABLE>
-
-<P>
-Note that <TT>tstrip_t</TT>, <TT>ttile_t</TT>, and <TT>tsize_t</TT>
-are constrained to be
-no more than 32-bit quantities by 32-bit fields they are stored
-in in the TIFF image. Likewise <TT>tsample_t</TT> is limited by the 16-bit
-field used to store the <TT>SamplesPerPixel</TT> tag. <TT>tdir_t</TT>
-constrains
-the maximum number of IFDs that may appear in an image and may
-be an arbitrary size (without penalty). <TT>ttag_t</TT> must be either
-<TT>int</TT>, <TT>unsigned int</TT>, pointer, or <TT>double</TT>
-because the library uses a varargs
-interface and ANSI C restricts the type of the parameter before an
-ellipsis to be a promoted type. <TT>toff_t</TT> is defined as
-<TT>int32</TT> because
-TIFF file offsets are (unsigned) 32-bit quantities. A signed
-value is used because some interfaces return -1 on error (sigh).
-Finally, note that <TT>tidata_t</TT> is used internally to the library to
-manipulate internal data. User-specified data references are
-passed as opaque handles and only cast at the lowest layers where
-their type is presumed.
-
-
-<P><HR WIDTH=65% ALIGN=right><H3>General Comments</H3></A>
-
-The library is designed to hide as much of the details of TIFF from
-applications as
-possible. In particular, TIFF directories are read in their entirety
-into an internal format. Only the tags known by the library are
-available to a user and certain tag data may be maintained that a user
-does not care about (e.g. transfer function tables).
-
-<A NAME=AddingCODECS><P><HR WIDTH=65% ALIGN=right><H3>Adding New Builtin Codecs</H3></A>
-
-To add builtin support for a new compression algorithm, you can either
-use the "tag-extension" trick to override the handling of the
-TIFF Compression tag (see <A HREF=addingtags.html>Adding New Tags</A>),
-or do the following to add support directly to the core library:
-
-<OL>
-<LI>Define the tag value in <B>tiff.h</B>.
-<LI>Edit the file <B>tif_codec.c</B> to add an entry to the
- _TIFFBuiltinCODECS array (see how other algorithms are handled).
-<LI>Add the appropriate function prototype declaration to
- <B>tiffiop.h</B> (close to the bottom).
-<LI>Create a file with the compression scheme code, by convention files
- are named <B>tif_*.c</B> (except perhaps on some systems where the
- tif_ prefix pushes some filenames over 14 chars.
-<LI>Edit <B>Makefile.in</B> (and any other Makefiles)
- to include the new source file.
-</OL>
-
-<P>
-A codec, say <TT>foo</TT>, can have many different entry points:
-
-<PRE>
-TIFFInitfoo(tif, scheme)/* initialize scheme and setup entry points in tif */
-fooSetupDecode(tif) /* called once per IFD after tags has been frozen */
-fooPreDecode(tif, sample)/* called once per strip/tile, after data is read,
- but before the first row is decoded */
-fooDecode*(tif, bp, cc, sample)/* decode cc bytes of data into the buffer */
- fooDecodeRow(...) /* called to decode a single scanline */
- fooDecodeStrip(...) /* called to decode an entire strip */
- fooDecodeTile(...) /* called to decode an entire tile */
-fooSetupEncode(tif) /* called once per IFD after tags has been frozen */
-fooPreEncode(tif, sample)/* called once per strip/tile, before the first row in
- a strip/tile is encoded */
-fooEncode*(tif, bp, cc, sample)/* encode cc bytes of user data (bp) */
- fooEncodeRow(...) /* called to decode a single scanline */
- fooEncodeStrip(...) /* called to decode an entire strip */
- fooEncodeTile(...) /* called to decode an entire tile */
-fooPostEncode(tif) /* called once per strip/tile, just before data is written */
-fooSeek(tif, row) /* seek forwards row scanlines from the beginning
- of a strip (row will always be &gt;0 and &lt;rows/strip */
-fooCleanup(tif) /* called when compression scheme is replaced by user */
-</PRE>
-
-<P>
-Note that the encoding and decoding variants are only needed when
-a compression algorithm is dependent on the structure of the data.
-For example, Group 3 2D encoding and decoding maintains a reference
-scanline. The sample parameter identifies which sample is to be
-encoded or decoded if the image is organized with <TT>PlanarConfig</TT>=2
-(separate planes). This is important for algorithms such as JPEG.
-If <TT>PlanarConfig</TT>=1 (interleaved), then sample will always be 0.
-
-<A NAME=Other><P><HR WIDTH=65% ALIGN=right><H3>Other Comments</H3></A>
-
-The library handles most I/O buffering. There are two data buffers
-when decoding data: a raw data buffer that holds all the data in a
-strip, and a user-supplied scanline buffer that compression schemes
-place decoded data into. When encoding data the data in the
-user-supplied scanline buffer is encoded into the raw data buffer (from
-where it is written). Decoding routines should never have to explicitly
-read data -- a full strip/tile's worth of raw data is read and scanlines
-never cross strip boundaries. Encoding routines must be cognizant of
-the raw data buffer size and call <TT>TIFFFlushData1()</TT> when necessary.
-Note that any pending data is automatically flushed when a new strip/tile is
-started, so there's no need do that in the tif_postencode routine (if
-one exists). Bit order is automatically handled by the library when
-a raw strip or tile is filled. If the decoded samples are interpreted
-by the decoding routine before they are passed back to the user, then
-the decoding logic must handle byte-swapping by overriding the
-<TT>tif_postdecode</TT>
-routine (set it to <TT>TIFFNoPostDecode</TT>) and doing the required work
-internally. For an example of doing this look at the horizontal
-differencing code in the routines in <B>tif_predict.c</B>.
-
-<P>
-The variables <TT>tif_rawcc</TT>, <TT>tif_rawdata</TT>, and
-<TT>tif_rawcp</TT> in a <TT>TIFF</TT> structure
-are associated with the raw data buffer. <TT>tif_rawcc</TT> must be non-zero
-for the library to automatically flush data. The variable
-<TT>tif_scanlinesize</TT> is the size a user's scanline buffer should be. The
-variable <TT>tif_tilesize</TT> is the size of a tile for tiled images. This
-should not normally be used by compression routines, except where it
-relates to the compression algorithm. That is, the <TT>cc</TT> parameter to the
-<TT>tif_decode*</TT> and <TT>tif_encode*</TT>
-routines should be used in terminating
-decompression/compression. This ensures these routines can be used,
-for example, to decode/encode entire strips of data.
-
-<P>
-In general, if you have a new compression algorithm to add, work from
-the code for an existing routine. In particular,
-<B>tif_dumpmode.c</B>
-has the trivial code for the "nil" compression scheme,
-<B>tif_packbits.c</B> is a
-simple byte-oriented scheme that has to watch out for buffer
-boundaries, and <B>tif_lzw.c</B> has the LZW scheme that has the most
-complexity -- it tracks the buffer boundary at a bit level.
-Of course, using a private compression scheme (or private tags) limits
-the portability of your TIFF files.
-
-<P>
-<HR>
-
-Last updated: $Date: 2004/09/10 14:47:31 $
-
-</BODY>
-
-</HTML>
diff --git a/src/3rdparty/libtiff/html/intro.html b/src/3rdparty/libtiff/html/intro.html
deleted file mode 100644
index 61c01d4a2d..0000000000
--- a/src/3rdparty/libtiff/html/intro.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Introduction to the TIFF Documentation
-</TITLE>
-</HEAD>
-<BODY BGCOLOR=white>
-<FONT FACE="Arial, Helvetica, Sans">
-<H1>
-<IMG SRC=images/strike.gif WIDTH=128 HEIGHT=100 ALIGN=left HSPACE=6>
-Introduction to the TIFF Documentation
-</H1>
-
-
-<P>
-The following definitions are used throughout this documentation.
-They are consistent with the terminology used in the TIFF 6.0 specification.
-
-<DL>
-<DT><I>Sample</I>
-<DD>The unit of information stored in an image; often called a
- channel elsewhere. Sample values are numbers, usually unsigned
- integers, but possibly in some other format if the SampleFormat
- tag is specified in a TIFF
-<DT><I>Pixel</I>
-<DD>A collection of one or more samples that go together.
-<DT><I>Row</I>
-<DD>An Nx1 rectangular collection of pixels.
-<DT><I>Tile</I>
-<DD>An NxM rectangular organization of data (or pixels).
-<DT><I>Strip</I>
-<DD>A tile whose width is the full image width.
-<DT><I>Compression</I>
-<DD>A scheme by which pixel or sample data are stored in
- an encoded form, specifically with the intent of reducing the
- storage cost.
-<DT><I>Codec</I>
-<DD>Software that implements the decoding and encoding algorithms
- of a compression scheme.
-</UL>
-
-<P>
-In order to better understand how TIFF works (and consequently this
-software) it is important to recognize the distinction between the
-physical organization of image data as it is stored in a TIFF and how
-the data is interpreted and manipulated as pixels in an image. TIFF
-supports a wide variety of storage and data compression schemes that
-can be used to optimize retrieval time and/or minimize storage space.
-These on-disk formats are independent of the image characteristics; it
-is the responsibility of the TIFF reader to process the on-disk storage
-into an in-memory format suitable for an application. Furthermore, it
-is the responsibility of the application to properly interpret the
-visual characteristics of the image data. TIFF defines a framework for
-specifying the on-disk storage format and image characteristics with
-few restrictions. This permits significant complexity that can be
-daunting. Good applications that handle TIFF work by handling as wide
-a range of storage formats as possible, while constraining the
-acceptable image characteristics to those that make sense for the
-application.
-
-
-<P>
-<HR>
-
-Last updated: $Date: 1999/08/09 20:21:21 $
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/libtiff.html b/src/3rdparty/libtiff/html/libtiff.html
deleted file mode 100644
index 6a2c42e607..0000000000
--- a/src/3rdparty/libtiff/html/libtiff.html
+++ /dev/null
@@ -1,747 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html lang="en">
-<head>
- <title>Using The TIFF Library</title>
- <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
- <meta http-equiv="content-language" content="en">
- <style type="text/css">
- <!--
- th {text-align: left; vertical-align: top; font-style: italic; font-weight: normal}
- -->
- </style>
-</head>
-<body lang="en" text="#000000" bgcolor="#ffffff" link="#0000ff" alink="#0000ff" vlink="#0000ff">
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td style="padding-left: 1em; padding-right: 1em"><img src="images/cat.gif" width="113" height="146" alt=""></td>
- <td>
- <h1>Using The TIFF Library</h1>
- <p>
- <tt>libtiff</tt> is a set of C functions (a library) that support
- the manipulation of TIFF image files.
- The library requires an ANSI C compilation environment for building
- and presumes an ANSI C environment for use.
- </p>
- </td>
- </tr>
- </table>
- <br>
- <p>
- <tt>libtiff</tt>
- provides interfaces to image data at several layers of abstraction (and cost).
- At the highest level image data can be read into an 8-bit/sample,
- ABGR pixel raster format without regard for the underlying data organization,
- colorspace, or compression scheme. Below this high-level interface
- the library provides scanline-, strip-, and tile-oriented interfaces that
- return data decompressed but otherwise untransformed. These interfaces
- require that the application first identify the organization of stored
- data and select either a strip-based or tile-based API for manipulating
- data. At the lowest level the library
- provides access to the raw uncompressed strips or tiles,
- returning the data exactly as it appears in the file.
- </p>
- <p>
- The material presented in this chapter is a basic introduction
- to the capabilities of the library; it is not an attempt to describe
- everything a developer needs to know about the library or about TIFF.
- Detailed information on the interfaces to the library are given in
- the <a href="http://www.remotesensing.org/libtiff/man/index.html">UNIX
- manual pages</a> that accompany this software.
- </p>
- <p>
- Michael Still has also written a useful introduction to libtiff for the
- IBM DeveloperWorks site available at
- <a href="http://www.ibm.com/developerworks/linux/library/l-libtiff">http://www.ibm.com/developerworks/linux/library/l-libtiff</a>.
- </p>
- <p>
- The following sections are found in this chapter:
- </p>
- <ul>
- <li><a href="#version">How to tell which version you have</a></li>
- <li><a href="#typedefs">Library Datatypes</a></li>
- <li><a href="#mman">Memory Management</a></li>
- <li><a href="#errors">Error Handling</a></li>
- <li><a href="#fio">Basic File Handling</a></li>
- <li><a href="#dirs">TIFF Directories</a></li>
- <li><a href="#tags">TIFF Tags</a></li>
- <li><a href="#compression">TIFF Compression Schemes</a></li>
- <li><a href="#byteorder">Byte Order</a></li>
- <li><a href="#dataplacement">Data Placement</a></li>
- <li><a href="#tiffrgbaimage">TIFFRGBAImage Support</a></li>
- <li><a href="#scanlines">Scanline-based Image I/O</a></li>
- <li><a href="#strips">Strip-oriented Image I/O</a></li>
- <li><a href="#tiles">Tile-oriented Image I/O</a></li>
- <li><a href="#other">Other Stuff</a></li>
- </ul>
- <hr>
- <h2 id="version">How to tell which version you have</h2>
- <p>
- The software version can be found by looking at the file named
- <tt>VERSION</tt>
- that is located at the top of the source tree; the precise alpha number
- is given in the file <tt>dist/tiff.alpha</tt>.
- If you have need to refer to this
- specific software, you should identify it as:
- </p>
- <p style="margin-left: 40px">
- <tt>TIFF &lt;<i>version</i>&gt; &lt;<i>alpha</i>&gt;</tt>
- </p>
- <p>
- where <tt>&lt;<i>version</i>&gt;</tt> is whatever you get from
- <tt>"cat VERSION"</tt> and <tt>&lt;<i>alpha</i>&gt;</tt> is
- what you get from <tt>"cat dist/tiff.alpha"</tt>.
- </p>
- <p>
- Within an application that uses <tt>libtiff</tt> the <tt>TIFFGetVersion</tt>
- routine will return a pointer to a string that contains software version
- information.
- The library include file <tt>&lt;tiffio.h&gt;</tt> contains a C pre-processor
- define <tt>TIFFLIB_VERSION</tt> that can be used to check library
- version compatiblity at compile time.
- </p>
- <hr>
- <h2 id="typedefs">Library Datatypes</h2>
- <p>
- <tt>libtiff</tt> defines a portable programming interface through the
- use of a set of C type definitions.
- These definitions, defined in in the files <b>tiff.h</b> and
- <b>tiffio.h</b>,
- isolate the <tt>libtiff</tt> API from the characteristics
- of the underlying machine.
- To insure portable code and correct operation, applications that use
- <tt>libtiff</tt> should use the typedefs and follow the function
- prototypes for the library API.
- </p>
- <hr>
- <h2 id="mman">Memory Management</h2>
- <p>
- <tt>libtiff</tt> uses a machine-specific set of routines for managing
- dynamically allocated memory.
- <tt>_TIFFmalloc</tt>, <tt>_TIFFrealloc</tt>, and <tt>_TIFFfree</tt>
- mimic the normal ANSI C routines.
- Any dynamically allocated memory that is to be passed into the library
- should be allocated using these interfaces in order to insure pointer
- compatibility on machines with a segmented architecture.
- (On 32-bit UNIX systems these routines just call the normal <tt>malloc</tt>,
- <tt>realloc</tt>, and <tt>free</tt> routines in the C library.)
- </p>
- <p>
- To deal with segmented pointer issues <tt>libtiff</tt> also provides
- <tt>_TIFFmemcpy</tt>, <tt>_TIFFmemset</tt>, and <tt>_TIFFmemmove</tt>
- routines that mimic the equivalent ANSI C routines, but that are
- intended for use with memory allocated through <tt>_TIFFmalloc</tt>
- and <tt>_TIFFrealloc</tt>.
- </p>
- <hr>
- <h2 id="errors">Error Handling</h2>
- <p>
- <tt>libtiff</tt> handles most errors by returning an invalid/erroneous
- value when returning from a function call.
- Various diagnostic messages may also be generated by the library.
- All error messages are directed to a single global error handler
- routine that can be specified with a call to <tt>TIFFSetErrorHandler</tt>.
- Likewise warning messages are directed to a single handler routine
- that can be specified with a call to <tt>TIFFSetWarningHandler</tt>
- </p>
- <hr>
- <h2 id="fio">Basic File Handling</h2>
- <p>
- The library is modeled after the normal UNIX stdio library.
- For example, to read from an existing TIFF image the
- file must first be opened:
- </p>
- <p style="margin-left: 40px">
- <tt>#include "tiffio.h"<br>
- main()<br>
- {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;TIFF* tif = TIFFOpen("foo.tif", "r");<br>
- &nbsp;&nbsp;&nbsp;&nbsp;... do stuff ...<br>
- &nbsp;&nbsp;&nbsp;&nbsp;TIFFClose(tif);<br>
- }</tt>
- </p>
- <p>
- The handle returned by <tt>TIFFOpen</tt> is <i>opaque</i>, that is
- the application is not permitted to know about its contents.
- All subsequent library calls for this file must pass the handle
- as an argument.
- </p>
- <p>
- To create or overwrite a TIFF image the file is also opened, but with
- a <tt>"w"</tt> argument:
- <p>
- <p style="margin-left: 40px">
- <tt>#include "tiffio.h"<br>
- main()<br>
- {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;TIFF* tif = TIFFOpen("foo.tif", "w");<br>
- &nbsp;&nbsp;&nbsp;&nbsp;... do stuff ...<br>
- &nbsp;&nbsp;&nbsp;&nbsp;TIFFClose(tif);<br>
- }</tt>
- </p>
- <p>
- If the file already exists it is first truncated to zero length.
- </p>
- <table>
- <tr>
- <td valign=top><img src="images/warning.gif" width="40" height="40" alt=""></td>
- <td><i>Note that unlike the stdio library TIFF image files may not be
- opened for both reading and writing;
- there is no support for altering the contents of a TIFF file.</i></td>
- </tr>
- </table>
- <p>
- <tt>libtiff</tt> buffers much information associated with writing a
- valid TIFF image. Consequently, when writing a TIFF image it is necessary
- to always call <tt>TIFFClose</tt> or <tt>TIFFFlush</tt> to flush any
- buffered information to a file. Note that if you call <tt>TIFFClose</tt>
- you do not need to call <tt>TIFFFlush</tt>.
- </p>
- <hr>
- <h2 id="dirs">TIFF Directories</h2>
- <p>
- TIFF supports the storage of multiple images in a single file.
- Each image has an associated data structure termed a <i>directory</i>
- that houses all the information about the format and content of the
- image data.
- Images in a file are usually related but they do not need to be; it
- is perfectly alright to store a color image together with a black and
- white image.
- Note however that while images may be related their directories are
- not.
- That is, each directory stands on its own; their is no need to read
- an unrelated directory in order to properly interpret the contents
- of an image.
- </p>
- <p>
- <tt>libtiff</tt> provides several routines for reading and writing
- directories. In normal use there is no need to explicitly
- read or write a directory: the library automatically reads the first
- directory in a file when opened for reading, and directory information
- to be written is automatically accumulated and written when writing
- (assuming <tt>TIFFClose</tt> or <tt>TIFFFlush</tt> are called).
- </p>
- <p>
- For a file open for reading the <tt>TIFFSetDirectory</tt> routine can
- be used to select an arbitrary directory; directories are referenced by
- number with the numbering starting at 0. Otherwise the
- <tt>TIFFReadDirectory</tt> and <tt>TIFFWriteDirectory</tt> routines can
- be used for sequential access to directories.
- For example, to count the number of directories in a file the following
- code might be used:
- </p>
- <p style="margin-left: 40px">
- <tt>#include "tiffio.h"<br>
- main(int argc, char* argv[])<br>
- {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;TIFF* tif = TIFFOpen(argv[1], "r");<br>
- &nbsp;&nbsp;&nbsp;&nbsp;if (tif) {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int dircount = 0;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;dircount++;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} while (TIFFReadDirectory(tif));<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d directories in %s\n", dircount, argv[1]);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFFClose(tif);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;}<br>
- &nbsp;&nbsp;&nbsp;&nbsp;exit(0);<br>
- }</tt>
- </p>
- <p>
- Finally, note that there are several routines for querying the
- directory status of an open file:
- <tt>TIFFCurrentDirectory</tt> returns the index of the current
- directory and
- <tt>TIFFLastDirectory</tt> returns an indication of whether the
- current directory is the last directory in a file.
- There is also a routine, <tt>TIFFPrintDirectory</tt>, that can
- be called to print a formatted description of the contents of
- the current directory; consult the manual page for complete details.
- </p>
- <hr>
- <h2 id="tags">TIFF Tags</h2>
- <p>
- Image-related information such as the image width and height, number
- of samples, orientation, colorimetric information, etc.
- are stored in each image
- directory in <i>fields</i> or <i>tags</i>.
- Tags are identified by a number that is usually a value registered
- with the Aldus (now Adobe) Corporation.
- Beware however that some vendors write
- TIFF images with tags that are unregistered; in this case interpreting
- their contents is usually a waste of time.
- </p>
- <p>
- <tt>libtiff</tt> reads the contents of a directory all at once
- and converts the on-disk information to an appropriate in-memory
- form. While the TIFF specification permits an arbitrary set of
- tags to be defined and used in a file, the library only understands
- a limited set of tags.
- Any unknown tags that are encountered in a file are ignored.
- There is a mechanism to extend the set of tags the library handles
- without modifying the library itself;
- this is described <a href="addingtags.html">elsewhere</a>.
- </p>
- <p>
- <tt>libtiff</tt> provides two interfaces for getting and setting tag
- values: <tt>TIFFGetField</tt> and <tt>TIFFSetField</tt>.
- These routines use a variable argument list-style interface to pass
- parameters of different type through a single function interface.
- The <i>get interface</i> takes one or more pointers to memory locations
- where the tag values are to be returned and also returns one or
- zero according to whether the requested tag is defined in the directory.
- The <i>set interface</i> takes the tag values either by-reference or
- by-value.
- The TIFF specification defines
- <i>default values</i> for some tags.
- To get the value of a tag, or its default value if it is undefined,
- the <tt>TIFFGetFieldDefaulted</tt> interface may be used.
- </p>
- <p>
- The manual pages for the tag get and set routines specifiy the exact data types
- and calling conventions required for each tag supported by the library.
- </p>
- <hr>
- <h2 id="compression">TIFF Compression Schemes</h2>
- <p>
- <tt>libtiff</tt> includes support for a wide variety of
- data compression schemes.
- In normal operation a compression scheme is automatically used when
- the TIFF <tt>Compression</tt> tag is set, either by opening a file
- for reading, or by setting the tag when writing.
- </p>
- <p>
- Compression schemes are implemented by software modules termed <i>codecs</i>
- that implement decoder and encoder routines that hook into the
- core library i/o support.
- Codecs other than those bundled with the library can be registered
- for use with the <tt>TIFFRegisterCODEC</tt> routine.
- This interface can also be used to override the core-library
- implementation for a compression scheme.
- </p>
- <hr>
- <h2 id="byteorder">Byte Order</h2>
- <p>
- The TIFF specification says, and has always said, that
- <em>a correct TIFF
- reader must handle images in big-endian and little-endian byte order</em>.
- <tt>libtiff</tt> conforms in this respect.
- Consequently there is no means to force a specific
- byte order for the data written to a TIFF image file (data is
- written in the native order of the host CPU unless appending to
- an existing file, in which case it is written in the byte order
- specified in the file).
- </p>
- <hr>
- <h2 id="dataplacement">Data Placement</h2>
- <p>
- The TIFF specification requires that all information except an
- 8-byte header can be placed anywhere in a file.
- In particular, it is perfectly legitimate for directory information
- to be written after the image data itself.
- Consequently TIFF is inherently not suitable for passing through a
- stream-oriented mechanism such as UNIX pipes.
- Software that require that data be organized in a file in a particular
- order (e.g. directory information before image data) does not
- correctly support TIFF.
- <tt>libtiff</tt> provides no mechanism for controlling the placement
- of data in a file; image data is typically written before directory
- information.
- </p>
- <hr>
- <h2 id="tiffrgbaimage">TIFFRGBAImage Support</h2>
- <p>
- <tt>libtiff</tt> provides a high-level interface for reading image
- data from a TIFF file. This interface handles the details of
- data organization and format for a wide variety of TIFF files;
- at least the large majority of those files that one would normally
- encounter. Image data is, by default, returned as ABGR
- pixels packed into 32-bit words (8 bits per sample). Rectangular
- rasters can be read or data can be intercepted at an intermediate
- level and packed into memory in a format more suitable to the
- application.
- The library handles all the details of the format of data stored on
- disk and, in most cases, if any colorspace conversions are required:
- bilevel to RGB, greyscale to RGB, CMYK to RGB, YCbCr to RGB, 16-bit
- samples to 8-bit samples, associated/unassociated alpha, etc.
- </p>
- <p>
- There are two ways to read image data using this interface. If
- all the data is to be stored in memory and manipulated at once,
- then the routine <tt>TIFFReadRGBAImage</tt> can be used:
- </p>
- <p>
- <p style="margin-left: 40px">
- <tt>#include "tiffio.h"<br>
- main(int argc, char* argv[])<br>
- {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;TIFF* tif = TIFFOpen(argv[1], "r");<br>
- &nbsp;&nbsp;&nbsp;&nbsp;if (tif) {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32 w, h;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size_t npixels;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32* raster;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &amp;w);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &amp;h);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;npixels = w * h;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;raster = (uint32*) _TIFFmalloc(npixels * sizeof (uint32));<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (raster != NULL) {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (TIFFReadRGBAImage(tif, w, h, raster, 0)) {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...process raster data...<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_TIFFfree(raster);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFFClose(tif);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;}<br>
- &nbsp;&nbsp;&nbsp;&nbsp;exit(0);<br>
- }</tt>
- </p>
- <p>
- Note above that <tt>_TIFFmalloc</tt> is used to allocate memory for
- the raster passed to <tt>TIFFReadRGBAImage</tt>; this is important
- to insure the ``appropriate type of memory'' is passed on machines
- with segmented architectures.
- </p>
- <p>
- Alternatively, <tt>TIFFReadRGBAImage</tt> can be replaced with a
- more low-level interface that permits an application to have more
- control over this reading procedure. The equivalent to the above
- is:
- </p>
- <p style="margin-left: 40px">
- <tt>#include "tiffio.h"<br>
- main(int argc, char* argv[])<br>
- {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;TIFF* tif = TIFFOpen(argv[1], "r");<br>
- &nbsp;&nbsp;&nbsp;&nbsp;if (tif) {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFFRGBAImage img;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;char emsg[1024];<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (TIFFRGBAImageBegin(&amp;img, tif, 0, emsg)) {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size_t npixels;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32* raster;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;npixels = img.width * img.height;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;raster = (uint32*) _TIFFmalloc(npixels * sizeof (uint32));<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (raster != NULL) {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (TIFFRGBAImageGet(&amp;img, raster, img.width, img.height)) {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;...process raster data...<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_TIFFfree(raster);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFFRGBAImageEnd(&amp;img);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFFError(argv[1], emsg);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFFClose(tif);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;}<br>
- &nbsp;&nbsp;&nbsp;&nbsp;exit(0);<br>
- }</tt>
- </p>
- <p>
- However this usage does not take advantage of the more fine-grained
- control that's possible. That is, by using this interface it is
- possible to:
- </p>
- <ul>
- <li>repeatedly fetch (and manipulate) an image without opening
- and closing the file</li>
- <li>interpose a method for packing raster pixel data according to
- application-specific needs (or write the data at all)</li>
- <li>interpose methods that handle TIFF formats that are not already
- handled by the core library</li>
- </ul>
- <p>
- The first item means that, for example, image viewers that want to
- handle multiple files can cache decoding information in order to
- speedup the work required to display a TIFF image.
- </p>
- <p>
- The second item is the main reason for this interface. By interposing
- a "put method" (the routine that is called to pack pixel data in
- the raster) it is possible share the core logic that understands how
- to deal with TIFF while packing the resultant pixels in a format that
- is optimized for the application. This alternate format might be very
- different than the 8-bit per sample ABGR format the library writes by
- default. For example, if the application is going to display the image
- on an 8-bit colormap display the put routine might take the data and
- convert it on-the-fly to the best colormap indices for display.
- </p>
- <p>
- The last item permits an application to extend the library
- without modifying the core code.
- By overriding the code provided an application might add support
- for some esoteric flavor of TIFF that it needs, or it might
- substitute a packing routine that is able to do optimizations
- using application/environment-specific information.
- </p>
- <p>
- The TIFF image viewer found in <b>tools/sgigt.c</b> is an example
- of an application that makes use of the <tt>TIFFRGBAImage</tt>
- support.
- </p>
- <hr>
- <h2 id="scanlines">Scanline-based Image I/O</h2>
- <p>
- The simplest interface provided by <tt>libtiff</tt> is a
- scanline-oriented interface that can be used to read TIFF
- images that have their image data organized in strips
- (trying to use this interface to read data written in tiles
- will produce errors.)
- A scanline is a one pixel high row of image data whose width
- is the width of the image.
- Data is returned packed if the image data is stored with samples
- packed together, or as arrays of separate samples if the data
- is stored with samples separated.
- The major limitation of the scanline-oriented interface, other
- than the need to first identify an existing file as having a
- suitable organization, is that random access to individual
- scanlines can only be provided when data is not stored in a
- compressed format, or when the number of rows in a strip
- of image data is set to one (<tt>RowsPerStrip</tt> is one).
- </p>
- <p>
- Two routines are provided for scanline-based i/o:
- <tt>TIFFReadScanline</tt>
- and
- <tt>TIFFWriteScanline</tt>.
- For example, to read the contents of a file that
- is assumed to be organized in strips, the following might be used:
- </p>
- <p style="margin-left: 40px">
- <tt>#include "tiffio.h"<br>
- main()<br>
- {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;TIFF* tif = TIFFOpen("myfile.tif", "r");<br>
- &nbsp;&nbsp;&nbsp;&nbsp;if (tif) {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32 imagelength;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tdata_t buf;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32 row;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &amp;imagelength);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf = _TIFFmalloc(TIFFScanlineSize(tif));<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (row = 0; row &lt; imagelength; row++)<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tiffreadscanline(tif, buf, row);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_tifffree(buf);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tiffclose(tif);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;}<br>
- }</tt>
- </p>
- <p>
- <tt>TIFFScanlineSize</tt> returns the number of bytes in
- a decoded scanline, as returned by <tt>TIFFReadScanline</tt>.
- Note however that if the file had been create with samples
- written in separate planes, then the above code would only
- read data that contained the first sample of each pixel;
- to handle either case one might use the following instead:
- </p>
- <p style="margin-left: 40px">
- <tt>#include "tiffio.h"<br>
- main()<br>
- {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;TIFF* tif = TIFFOpen("myfile.tif", "r");<br>
- &nbsp;&nbsp;&nbsp;&nbsp;if (tif) {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32 imagelength;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tdata_t buf;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32 row;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &amp;imagelength);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFFGetField(tif, TIFFTAG_PLANARCONFIG, &amp;config);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf = _TIFFmalloc(TIFFScanlineSize(tif));<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (config == PLANARCONFIG_CONTIG) {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (row = 0; row &lt; imagelength; row++)<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tiffreadscanline(tif, buf, row);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} else if (config == planarconfig_separate) {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint16 s, nsamples;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tiffgetfield(tif, tifftag_samplesperpixel, &amp;nsamples);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (s = 0; s &lt; nsamples; s++)<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (row = 0; row &lt; imagelength; row++)<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tiffreadscanline(tif, buf, row, s);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_tifffree(buf);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tiffclose(tif);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;}<br>
- }</tt>
- </p>
- <p>
- Beware however that if the following code were used instead to
- read data in the case <tt>PLANARCONFIG_SEPARATE</tt>,...
- </p>
- <p style="margin-left: 40px">
- <tt>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (row = 0; row &lt; imagelength; row++)<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (s = 0; s &lt; nsamples; s++)<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tiffreadscanline(tif, buf, row, s);</tt>
- </p>
- <p>
- ...then problems would arise if <tt>RowsPerStrip</tt> was not one
- because the order in which scanlines are requested would require
- random access to data within strips (something that is not supported
- by the library when strips are compressed).
- </p>
- <hr>
- <h2 id="strips">Strip-oriented Image I/O</h2>
- <p>
- The strip-oriented interfaces provided by the library provide
- access to entire strips of data. Unlike the scanline-oriented
- calls, data can be read or written compressed or uncompressed.
- Accessing data at a strip (or tile) level is often desirable
- because there are no complications with regard to random access
- to data within strips.
- </p>
- <p>
- A simple example of reading an image by strips is:
- </p>
- <p style="margin-left: 40px">
- <tt>#include "tiffio.h"<br>
- main()<br>
- {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;TIFF* tif = TIFFOpen("myfile.tif", "r");<br>
- &nbsp;&nbsp;&nbsp;&nbsp;if (tif) {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tdata_t buf;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tstrip_t strip;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf = _TIFFmalloc(TIFFStripSize(tif));<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (strip = 0; strip &lt; tiffnumberofstrips(tif); strip++)<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tiffreadencodedstrip(tif, strip, buf, (tsize_t) -1);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_tifffree(buf);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tiffclose(tif);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;}<br>
- }</tt>
- </p>
- <p>
- Notice how a strip size of <tt>-1</tt> is used; <tt>TIFFReadEncodedStrip</tt>
- will calculate the appropriate size in this case.
- </p>
- <p>
- The above code reads strips in the order in which the
- data is physically stored in the file. If multiple samples
- are present and data is stored with <tt>PLANARCONFIG_SEPARATE</tt>
- then all the strips of data holding the first sample will be
- read, followed by strips for the second sample, etc.
- </p>
- <p>
- Finally, note that the last strip of data in an image may have fewer
- rows in it than specified by the <tt>RowsPerStrip</tt> tag. A
- reader should not assume that each decoded strip contains a full
- set of rows in it.
- </p>
- <p>
- The following is an example of how to read raw strips of data from
- a file:
- </p>
- <p style="margin-left: 40px">
- <tt>#include "tiffio.h"<br>
- main()<br>
- {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;TIFF* tif = TIFFOpen("myfile.tif", "r");<br>
- &nbsp;&nbsp;&nbsp;&nbsp;if (tif) {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tdata_t buf;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tstrip_t strip;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32* bc;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32 stripsize;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFFGetField(tif, TIFFTAG_STRIPBYTECOUNTS, &amp;bc);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stripsize = bc[0];<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf = _TIFFmalloc(stripsize);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (strip = 0; strip &lt; tiffnumberofstrips(tif); strip++) {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (bc[strip] &gt; stripsize) {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf = _TIFFrealloc(buf, bc[strip]);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stripsize = bc[strip];<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFFReadRawStrip(tif, strip, buf, bc[strip]);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_TIFFfree(buf);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFFClose(tif);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;}<br>
- }</tt>
- </p>
- <p>
- As above the strips are read in the order in which they are
- physically stored in the file; this may be different from the
- logical ordering expected by an application.
- </p>
- <hr>
- <h2 id="tiles">Tile-oriented Image I/O</h2>
- <p>
- Tiles of data may be read and written in a manner similar to strips.
- With this interface, an image is
- broken up into a set of rectangular areas that may have dimensions
- less than the image width and height. All the tiles
- in an image have the same size, and the tile width and length must each
- be a multiple of 16 pixels. Tiles are ordered left-to-right and
- top-to-bottom in an image. As for scanlines, samples can be packed
- contiguously or separately. When separated, all the tiles for a sample
- are colocated in the file. That is, all the tiles for sample 0 appear
- before the tiles for sample 1, etc.
- </p>
- <p>
- Tiles and strips may also be extended in a z dimension to form
- volumes. Data volumes are organized as "slices". That is, all the
- data for a slice is colocated. Volumes whose data is organized in
- tiles can also have a tile depth so that data can be organized in
- cubes.
- </p>
- <p>
- There are actually two interfaces for tiles.
- One interface is similar to scanlines, to read a tiled image,
- code of the following sort might be used:
- </p>
- <p style="margin-left: 40px">
- <tt>main()<br>
- {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;TIFF* tif = TIFFOpen("myfile.tif", "r");<br>
- &nbsp;&nbsp;&nbsp;&nbsp;if (tif) {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32 imageWidth, imageLength;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32 tileWidth, tileLength;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;uint32 x, y;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tdata_t buf;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &amp;imageWidth);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &amp;imageLength);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFFGetField(tif, TIFFTAG_TILEWIDTH, &amp;tileWidth);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TIFFGetField(tif, TIFFTAG_TILELENGTH, &amp;tileLength);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf = _TIFFmalloc(TIFFTileSize(tif));<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (y = 0; y &lt; imagelength; y += tilelength)<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (x = 0; x &lt; imagewidth; x += tilewidth)<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tiffreadtile(tif, buf, x, y, 0);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_tifffree(buf);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tiffclose(tif);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;}<br>
- }</tt>
- </p>
- <p>
- (once again, we assume samples are packed contiguously.)
- </p>
- <p>
- Alternatively a direct interface to the low-level data is provided
- a la strips. Tiles can be read with
- <tt>TIFFReadEncodedTile</tt> or <tt>TIFFReadRawTile</tt>,
- and written with <tt>TIFFWriteEncodedTile</tt> or
- <tt>TIFFWriteRawTile</tt>. For example, to read all the tiles in an image:
- </p>
- <p style="margin-left: 40px">
- <tt>#include "tiffio.h"<br>
- main()<br>
- {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;TIFF* tif = TIFFOpen("myfile.tif", "r");<br>
- &nbsp;&nbsp;&nbsp;&nbsp;if (tif) {<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tdata_t buf;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ttile_t tile;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;buf = _TIFFmalloc(TIFFTileSize(tif));<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for (tile = 0; tile &lt; tiffnumberoftiles(tif); tile++)<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tiffreadencodedtile(tif, tile, buf, (tsize_t) -1);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;_tifffree(buf);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tiffclose(tif);<br>
- &nbsp;&nbsp;&nbsp;&nbsp;}<br>
- }</tt>
- </p>
- <hr>
- <h2 id="other">Other Stuff</h2>
- <p>
- Some other stuff will almost certainly go here...
- </p>
- <hr>
- <p>
- Last updated: $Date: 2005/12/28 06:53:18 $
- </p>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFClose.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFClose.3tiff.html
deleted file mode 100644
index 42e3ba8970..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFClose.3tiff.html
+++ /dev/null
@@ -1,87 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:15 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFClose</title>
-</head>
-<body>
-
-<h1 align=center>TIFFClose</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFClose &minus; close a previously opened
-<small>TIFF</small> file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>void TIFFClose(TIFF *</b><i>tif</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFClose</i> closes a file that was previously opened
-with <b>TIFFOpen</b>(3TIFF). Any buffered data are flushed
-to the file, including the contents of the current directory
-(if modified); and all resources are reclaimed.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the routine. Likewise,
-warning messages are directed to the
-<b>TIFFWarning</b>(3TIFF) routine.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>libtiff</b>(3TIFF), <b>TIFFOpen</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFDataWidth.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFDataWidth.3tiff.html
deleted file mode 100644
index 237296e18d..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFDataWidth.3tiff.html
+++ /dev/null
@@ -1,98 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:15 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFDataWidth</title>
-</head>
-<body>
-
-<h1 align=center>TIFFDataWidth</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFDataWidth &minus; Get the size of TIFF data types</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFDataWidth(TIFFDataType</b>
-<i>type</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFDataWidth</i> returns a size of <i>type</i> in
-bytes. Currently following data types are supported:<i><br>
-TIFF_BYTE<br>
-TIFF_ASCII<br>
-TIFF_SBYTE<br>
-TIFF_UNDEFINED<br>
-TIFF_SHORT<br>
-TIFF_SSHORT<br>
-TIFF_LONG<br>
-TIFF_SLONG<br>
-TIFF_FLOAT<br>
-TIFF_IFD<br>
-TIFF_RATIONAL<br>
-TIFF_SRATIONAL<br>
-TIFF_DOUBLE</i></p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFDataWidth</i> returns a number of bytes occupied
-by the item of given type. 0 returned when uknown data type
-supplied.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>libtiff</b>(3TIFF),</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFError.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFError.3tiff.html
deleted file mode 100644
index 5d39a139ec..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFError.3tiff.html
+++ /dev/null
@@ -1,106 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:15 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFError</title>
-</head>
-<body>
-
-<h1 align=center>TIFFError</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFError, TIFFSetErrorHandler &minus; library error
-handling interface</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>void TIFFError(const char *</b><i>module</i><b>, const
-char *</b><i>fmt</i><b>,</b> <i>...</i><b>)</b></p>
-<!-- INDENTATION -->
-<p><b>#include &lt;stdarg.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>typedef void (*TIFFErrorHandler)(const char
-*</b><i>module</i><b>, const char *</b><i>fmt</i><b>,
-va_list</b> <i>ap</i><b>);<br>
-TIFFErrorHandler TIFFSetErrorHandler(TIFFErrorHandler
-handler);</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFError</i> invokes the library-wide error handling
-function to (normally) write an error message to the
-<b>stderr</b>. The <i>fmt</i> parameter is a
-<i>printf</i>(3S) format string, and any number arguments
-can be supplied. The <i>module</i> parameter, if non-zero,
-is printed before the message; it typically is used to
-identify the software module in which an error is
-detected.</p>
-<!-- INDENTATION -->
-<p>Applications that desire to capture control in the event
-of an error should use <i>TIFFSetErrorHandler</i> to
-override the default error handler. A <small>NULL</small>
-(0) error handling function may be installed to suppress
-error messages.</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFSetErrorHandler</i> returns a reference to the
-previous error handling function.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFWarning</b>(3TIFF), <b>libtiff</b>(3TIFF),
-<b>printf</b>(3)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFFlush.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFFlush.3tiff.html
deleted file mode 100644
index f32ccd3da7..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFFlush.3tiff.html
+++ /dev/null
@@ -1,113 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:15 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFFlush</title>
-</head>
-<body>
-
-<h1 align=center>TIFFFlush</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFFlush, TIFFFlushData &minus; flush pending writes to
-an open <small>TIFF</small> file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFFlush(TIFF *</b><i>tif</i><b>)<br>
-int TIFFFlushData(TIFF *</b><i>tif</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFFlush</i> causes any pending writes for the
-specified file (including writes for the current directory)
-to be done. In normal operation this call is never needed
-&minus; the library automatically does any flushing
-required.</p>
-<!-- INDENTATION -->
-<p><i>TIFFFlushData</i> flushes any pending image data for
-the specified file to be written out; directory-related data
-are not flushed. In normal operation this call is never
-needed &minus; the library automatically does any flushing
-required.</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>0 is returned if an error is encountered, otherwise 1 is
-returned.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<b>TIFFError</b>(3TIFF) routine.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFOpen</b>(3TIFF),
-<b>TIFFWriteEncodedStrip</b>(3TIFF),
-<b>TIFFWriteEncodedTile</b>(3TIFF),
-<b>TIFFWriteRawStrip</b>(3TIFF),
-<b>TIFFWriteRawTile</b>(3TIFF),
-<b>TIFFWriteScanline</b>(3TIFF), <b>TIFFWriteTile</b>(3TIFF)
-<b>libtiff</b>(3TIFF),</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFGetField.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFGetField.3tiff.html
deleted file mode 100644
index e644b1d412..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFGetField.3tiff.html
+++ /dev/null
@@ -1,1446 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:15 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFGetField</title>
-</head>
-<body>
-
-<h1 align=center>TIFFGetField</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#AUTOREGISTERED TAGS">AUTOREGISTERED TAGS</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFGetField, TIFFVGetField &minus; get the value(s) of a
-tag in an open <small>TIFF</small> file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFGetField(TIFF *</b><i>tif</i><b>, ttag_t</b>
-<i>tag</i><b>,</b> <i>...</i><b>)</b></p>
-<!-- INDENTATION -->
-<p><b>#include &lt;stdarg.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFVGetField(TIFF *</b><i>tif</i><b>, ttag_t</b>
-<i>tag</i><b>, va_list</b> <i>ap</i><b>)<br>
-int TIFFGetFieldDefaulted(TIFF *</b><i>tif</i><b>,
-ttag_t</b> <i>tag</i><b>,</b> <i>...</i><b>)<br>
-int TIFFVGetFieldDefaulted(TIFF *</b><i>tif</i><b>,
-ttag_t</b> <i>tag</i><b>, va_list</b> <i>ap</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFGetField</i> returns the value of a tag or
-pseudo-tag associated with the the current directory of the
-opened <small>TIFF</small> file <i>tif</i>. (A
-<i>pseudo-tag</i> is a parameter that is used to control the
-operation of the <small>TIFF</small> library but whose value
-is not read or written to the underlying file.) The file
-must have been previously opened with
-<i>TIFFOpen</i>(3TIFF). The tag is identified by <i>tag</i>,
-one of the values defined in the include file <b>tiff.h</b>
-(see also the table below). The type and number of values
-returned is dependent on the tag being requested. The
-programming interface uses a variable argument list as
-prescribed by the <i>stdarg</i>(3) interface. The returned
-values should only be interpreted if <i>TIFFGetField</i>
-returns 1.</p>
-<!-- INDENTATION -->
-<p><i>TIFFVGetField</i> is functionally equivalent to
-<i>TIFFGetField</i> except that it takes a pointer to a
-variable argument list. <i>TIFFVGetField</i> is useful for
-layering interfaces on top of the functionality provided by
-<i>TIFFGetField</i>.</p>
-<!-- INDENTATION -->
-<p><i>TIFFGetFieldDefaulted</i> and
-<i>TIFFVGetFieldDefaulted</i> are identical to
-<i>TIFFGetField</i> and <i>TIFFVGetField</i>, except that if
-a tag is not defined in the current directory and it has a
-default value, then the default value is returned.</p>
-<!-- INDENTATION -->
-<p>The tags understood by <i>libtiff(3TIFF),</i> the number
-of parameter values, and the types for the returned values
-are shown below. The data types are specified as in C and
-correspond to the types used to specify tag values to
-<i>TIFFSetField</i>(3TIFF). Remember that
-<i>TIFFGetField</i> returns parameter values, so all the
-listed data types are pointers to storage where values
-should be returned. Consult the <small>TIFF</small>
-specification (or relevant industry specification) for
-information on the meaning of each tag and their possible
-values.</p></td>
-</table>
-<!-- TABS -->
-
-<p><i>Tag Name Count Types Notes</i></p>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_ARTIST</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_BADFAXLINES</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_BITSPERSAMPLE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_CLEANFAXDATA</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_COLORMAP</p>
-</td>
-<td width="8%">
-
-<p>3</p>
-</td>
-<td width="23%">
-
-<p>uint16**</p>
-</td>
-<td width="17%">
-
-<p>1&lt;&lt;BitsPerSample arrays</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_COMPRESSION</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_CONSECUTIVEBADFAXLINES</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_COPYRIGHT</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_DATATYPE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_DATETIME</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_DOCUMENTNAME</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_DOTRANGE</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_EXTRASAMPLES</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="23%">
-
-<p>uint16*,uint16**</p>
-</td>
-<td width="17%">
-
-<p>count &amp; types array</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_FAXFILLFUNC</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>TIFFFaxFillFunc*</p>
-</td>
-<td width="17%">
-
-<p>G3/G4 compression pseudo-tag</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_FAXMODE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>int*</p>
-</td>
-<td width="17%">
-
-<p>G3/G4 compression pseudo-tag</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_FILLORDER</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_GROUP3OPTIONS</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_GROUP4OPTIONS</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_HALFTONEHINTS</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_HOSTCOMPUTER</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_ICCPROFILE</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="23%">
-
-<p>uint32*,void**</p>
-</td>
-<td width="17%">
-
-<p>count, profile data</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_IMAGEDEPTH</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_IMAGEDESCRIPTION</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_IMAGELENGTH</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_IMAGEWIDTH</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_INKNAMES</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_INKSET</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_JPEGCOLORMODE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>int*</p>
-</td>
-<td width="17%">
-
-<p>JPEG pseudo-tag</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_JPEGQUALITY</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>int*</p>
-</td>
-<td width="17%">
-
-<p>JPEG pseudo-tag</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_JPEGTABLES</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="23%">
-
-<p>uint32*,void**</p>
-</td>
-<td width="17%">
-
-<p>count &amp; tables</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_JPEGTABLESMODE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>int*</p>
-</td>
-<td width="17%">
-
-<p>JPEG pseudo-tag</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_MAKE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_MATTEING</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_MAXSAMPLEVALUE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_MINSAMPLEVALUE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_MODEL</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_ORIENTATION</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_PAGENAME</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_PAGENUMBER</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_PHOTOMETRIC</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_PHOTOSHOP</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="23%">
-
-<p>uint32*,void**</p>
-</td>
-<td width="17%">
-
-<p>count, data</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_PLANARCONFIG</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_PREDICTOR</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_PRIMARYCHROMATICITIES</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>float**</p>
-</td>
-<td width="17%">
-
-<p>6-entry array</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_REFERENCEBLACKWHITE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>float**</p>
-</td>
-<td width="17%">
-
-<p>2*SamplesPerPixel array</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_RESOLUTIONUNIT</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_RICHTIFFIPTC</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="23%">
-
-<p>uint32*,void**</p>
-</td>
-<td width="17%">
-
-<p>count, data</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_ROWSPERSTRIP</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_SAMPLEFORMAT</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_SAMPLESPERPIXEL</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_SMAXSAMPLEVALUE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>double*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_SMINSAMPLEVALUE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>double*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_SOFTWARE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_STONITS</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>double**</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_STRIPBYTECOUNTS</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint32**</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_STRIPOFFSETS</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint32**</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_SUBFILETYPE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_SUBIFD</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="23%">
-
-<p>uint16*,uint32**</p>
-</td>
-<td width="17%">
-
-<p>count &amp; offsets array</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_TARGETPRINTER</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>char**</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_THRESHHOLDING</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_TILEBYTECOUNTS</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint32**</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_TILEDEPTH</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_TILELENGTH</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_TILEOFFSETS</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint32**</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_TILEWIDTH</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint32*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_TRANSFERFUNCTION</p>
-</td>
-<td width="8%">
-
-<p>1 or 3&dagger;</p>
-</td>
-<td width="23%"></td>
-<td width="17%">
-
-<p>uint16**1&lt;&lt;BitsPerSample entry arrays</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_WHITEPOINT</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>float**</p>
-</td>
-<td width="17%">
-
-<p>2-entry array</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_XMLPACKET</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="23%">
-
-<p>uint32*,void**</p>
-</td>
-<td width="17%">
-
-<p>count, data</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_XPOSITION</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>float*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_XRESOLUTION</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>float*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_YCBCRCOEFFICIENTS</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>float**</p>
-</td>
-<td width="17%">
-
-<p>3-entry array</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_YCBCRPOSITIONING</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_YCBCRSUBSAMPLING</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="23%">
-
-<p>uint16*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_YPOSITION</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>float*</p>
-</td>
-<td width="17%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_YRESOLUTION</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="23%">
-
-<p>float*&Dagger;</p>
-</td>
-<td width="17%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>&dagger; If <i>SamplesPerPixel</i> is one, then a single
-array is returned; otherwise three arrays are returned.<br>
-&Dagger; The contents of this field are quite complex. See
-<i>The ICC Profile Format Specification</i>, Annex B.3
-&quot;Embedding ICC Profiles in TIFF Files&quot; (available
-at http://www.color.org) for an explanation.</p>
-</td>
-</table>
-<a name="AUTOREGISTERED TAGS"></a>
-<h2>AUTOREGISTERED TAGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>If you can&rsquo;t find the tag in the table above that
-means this is unsupported tag. But you still be able to read
-it&rsquo;s value if you know the data type of that tag. For
-example, if you want to read the LONG value from the tag
-33424 and ASCII string from the tag 36867 you can use the
-following code:</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>uint16 count;
-void *data;
-
-TIFFGetField(tiff, 33424, &amp;count, &amp;data);
-printf(&quot;Tag %d: %d, count %d0, 33424, *(uint32 *)data, count);
-TIFFGetField(tiff, 36867, &amp;count, &amp;data);
-printf(&quot;Tag %d: %s, count %d0, 36867, (char *)data, count);
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>is not supported by <b>libtiff(3TIFF),</b> library</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>1 is returned if the tag is defined in the current
-directory; otherwise a 0 is returned.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<b>TIFFError</b>(3TIFF) routine.</p>
-<!-- INDENTATION -->
-<p><b>Unknown field, tag 0x%x</b>. An unknown tag was
-supplied.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFOpen</b>(3TIFF), <b>TIFFSetField</b>(3TIFF),
-<b>TIFFSetDirectory</b>(3TIFF),
-<b>TIFFReadDirectory</b>(3TIFF),
-<b>TIFFWriteDirectory</b>(3TIFF) <b>libtiff</b>(3TIFF),</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFOpen.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFOpen.3tiff.html
deleted file mode 100644
index 6bc85d84e0..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFOpen.3tiff.html
+++ /dev/null
@@ -1,421 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:15 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFOpen</title>
-</head>
-<body>
-
-<h1 align=center>TIFFOpen</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#BYTE ORDER">BYTE ORDER</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFOpen, TIFFFdOpen, TIFFClientOpen &minus; open a
-<small>TIFF</small> file for reading or writing</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>TIFF* TIFFOpen(const char *</b><i>filename</i><b>,
-const char *</b><i>mode</i><b>)<br>
-TIFF* TIFFFdOpen(const int</b> <i>fd</i><b>, const char
-*</b><i>filename</i><b>, const char
-*</b><i>mode</i><b>)</b></p>
-<!-- INDENTATION -->
-<p><b>typedef tsize_t (*TIFFReadWriteProc)(thandle_t,
-tdata_t, tsize_t);<br>
-typedef toff_t (*TIFFSeekProc)(thandle_t, toff_t, int);<br>
-typedef int (*TIFFCloseProc)(thandle_t);<br>
-typedef toff_t (*TIFFSizeProc)(thandle_t);<br>
-typedef int (*TIFFMapFileProc)(thandle_t, tdata_t*,
-toff_t*);<br>
-typedef void (*TIFFUnmapFileProc)(thandle_t, tdata_t,
-toff_t);</b></p>
-<!-- INDENTATION -->
-<p><b>TIFF* TIFFClientOpen(const char
-*</b><i>filename</i><b>, const char *</b><i>mode</i><b>,
-thandle_t</b> <i>clientdata</i><b>, TIFFReadWriteProc</b>
-<i>readproc</i><b>, TIFFReadWriteProc</b>
-<i>writeproc</i><b>, TIFFSeekProc</b> <i>seekproc</i><b>,
-TIFFCloseProc</b> <i>closeproc</i><b>, TIFFSizeProc</b>
-<i>sizeproc</i><b>, TIFFMapFileProc</b> <i>mapproc</i><b>,
-TIFFUnmapFileProc</b> <i>unmapproc</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFOpen</i> opens a <small>TIFF</small> file whose
-name is <i>filename</i> and returns a handle to be used in
-subsequent calls to routines in <i>libtiff</i>. If the open
-operation fails, then zero is returned. The <i>mode</i>
-parameter specifies if the file is to be opened for reading
-(&lsquo;&lsquo;r&rsquo;&rsquo;), writing
-(&lsquo;&lsquo;w&rsquo;&rsquo;), or appending
-(&lsquo;&lsquo;a&rsquo;&rsquo;) and, optionally, whether to
-override certain default aspects of library operation (see
-below). When a file is opened for appending, existing data
-will not be touched; instead new data will be written as
-additional subfiles. If an existing file is opened for
-writing, all previous data is overwritten.</p>
-<!-- INDENTATION -->
-<p>If a file is opened for reading, the first
-<small>TIFF</small> directory in the file is automatically
-read (also see <i>TIFFSetDirectory</i>(3TIFF) for reading
-directories other than the first). If a file is opened for
-writing or appending, a default directory is automatically
-created for writing subsequent data. This directory has all
-the default values specified in <small>TIFF</small> Revision
-6.0: <i>BitsPerSample</i>=1, <i>ThreshHolding</i>=bilevel
-art scan, <i>FillOrder</i>=1 (most significant bit of each
-data byte is filled first), <i>Orientation</i>=1 (the 0th
-row represents the visual top of the image, and the 0th
-column represents the visual left hand side),
-<i>SamplesPerPixel</i>=1, <i>RowsPerStrip</i>=infinity,
-<i>ResolutionUnit</i>=2 (inches), and <i>Compression</i>=1
-(no compression). To alter these values, or to define values
-for additional fields, <i>TIFFSetField</i>(3TIFF) must be
-used.</p>
-<!-- INDENTATION -->
-<p><i>TIFFFdOpen</i> is like <i>TIFFOpen</i> except that it
-opens a <small>TIFF</small> file given an open file
-descriptor <i>fd</i>. The file&rsquo;s name and mode must
-reflect that of the open descriptor. The object associated
-with the file descriptor <b>must support random
-access</b>.</p>
-<!-- INDENTATION -->
-<p><i>TIFFClientOpen</i> is like <i>TIFFOpen</i> except that
-the caller supplies a collection of functions that the
-library will use to do <small>UNIX</small> -like I/O
-operations. The <i>readproc</i> and <i>writeproc</i> are
-called to read and write data at the current file position.
-<i>seekproc</i> is called to change the current file
-position a la <i>lseek</i>(2). <i>closeproc</i> is invoked
-to release any resources associated with an open file.
-<i>sizeproc</i> is invoked to obtain the size in bytes of a
-file. <i>mapproc</i> and <i>unmapproc</i> are called to map
-and unmap a file&rsquo;s contents in memory; c.f.
-<i>mmap</i>(2) and <i>munmap</i>(2). The <i>clientdata</i>
-parameter is an opaque &lsquo;&lsquo;handle&rsquo;&rsquo;
-passed to the client-specified routines passed as parameters
-to <i>TIFFClientOpen</i>.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The open mode parameter can include the following flags
-in addition to the &lsquo;&lsquo;r&rsquo;&rsquo;,
-&lsquo;&lsquo;w&rsquo;&rsquo;, and
-&lsquo;&lsquo;a&rsquo;&rsquo; flags. Note however that
-option flags must follow the read-write-append
-specification.</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="2%">
-
-<p><b>l</b></p>
-</td>
-<td width="6%"></td>
-<td width="80%">
-
-<p>When creating a new file force information be written
-with Little-Endian byte order (but see below). By default
-the library will create new files using the native
-<small>CPU</small> byte order.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="2%">
-
-<p><b>b</b></p>
-</td>
-<td width="6%"></td>
-<td width="80%">
-
-<p>When creating a new file force information be written
-with Big-Endian byte order (but see below). By default the
-library will create new files using the native
-<small>CPU</small> byte order.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="2%">
-
-<p><b>L</b></p>
-</td>
-<td width="6%"></td>
-<td width="80%">
-
-<p>Force image data that is read or written to be treated
-with bits filled from Least Significant Bit (
-<small>LSB</small> ) to Most Significant Bit (
-<small>MSB</small> ). Note that this is the opposite to the
-way the library has worked from its inception.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="2%">
-
-<p><b>B</b></p>
-</td>
-<td width="6%"></td>
-<td width="80%">
-
-<p>Force image data that is read or written to be treated
-with bits filled from Most Significant Bit (
-<small>MSB</small> ) to Least Significant Bit (
-<small>LSB</small> ); this is the default.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="2%">
-
-<p><b>H</b></p>
-</td>
-<td width="6%"></td>
-<td width="80%">
-
-<p>Force image data that is read or written to be treated
-with bits filled in the same order as the native
-<small>CPU.</small></p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="2%">
-
-<p><b>M</b></p>
-</td>
-<td width="6%"></td>
-<td width="80%">
-
-<p>Enable the use of memory-mapped files for images opened
-read-only. If the underlying system does not support
-memory-mapped files or if the specific image being opened
-cannot be memory-mapped then the library will fallback to
-using the normal system interface for reading information.
-By default the library will attempt to use memory-mapped
-files.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="2%">
-
-<p><b>m</b></p>
-</td>
-<td width="6%"></td>
-<td width="80%">
-
-<p>Disable the use of memory-mapped files.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="2%">
-
-<p><b>C</b></p>
-</td>
-<td width="6%"></td>
-<td width="80%">
-
-<p>Enable the use of &lsquo;&lsquo;strip
-chopping&rsquo;&rsquo; when reading images that are
-comprised of a single strip or tile of uncompressed data.
-Strip chopping is a mechanism by which the library will
-automatically convert the single-strip image to multiple
-strips, each of which has about 8 Kilobytes of data. This
-facility can be useful in reducing the amount of memory used
-to read an image because the library normally reads each
-strip in its entirety. Strip chopping does however alter the
-apparent contents of the image because when an image is
-divided into multiple strips it looks as though the
-underlying file contains multiple separate strips. Finally,
-note that default handling of strip chopping is a
-compile-time configuration parameter. The default behaviour,
-for backwards compatibility, is to enable strip
-chopping.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="2%">
-
-<p><b>c</b></p>
-</td>
-<td width="6%"></td>
-<td width="80%">
-
-<p>Disable the use of strip chopping when reading
-images.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="2%">
-
-<p><b>h</b></p>
-</td>
-<td width="6%"></td>
-<td width="80%">
-
-<p>Read TIFF header only, do not load the first image
-directory. That could be useful in case of the broken first
-directory. We can open the file and proceed to the other
-directories.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="BYTE ORDER"></a>
-<h2>BYTE ORDER</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The <small>TIFF</small> specification (<b>all
-versions</b>) states that compliant readers <i>must be
-capable of reading images written in either byte order</i>.
-Nonetheless some software that claims to support the reading
-of <small>TIFF</small> images is incapable of reading images
-in anything but the native <small>CPU</small> byte order on
-which the software was written. (Especially notorious are
-applications written to run on Intel-based machines.) By
-default the library will create new files with the native
-byte-order of the <small>CPU</small> on which the
-application is run. This ensures optimal performance and is
-portable to any application that conforms to the TIFF
-specification. To force the library to use a specific
-byte-order when creating a new file the
-&lsquo;&lsquo;b&rsquo;&rsquo; and
-&lsquo;&lsquo;l&rsquo;&rsquo; option flags may be included
-in the call to open a file; for example,
-&lsquo;&lsquo;wb&rsquo;&rsquo; or
-&lsquo;&lsquo;wl&rsquo;&rsquo;.</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Upon successful completion <i>TIFFOpen</i>,
-<i>TIFFFdOpen</i>, and <i>TIFFClientOpen</i> return a
-<small>TIFF</small> pointer. Otherwise, NULL is
-returned.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<i>TIFFError</i>(3TIFF) routine. Likewise, warning messages
-are directed to the <i>TIFFWarning</i>(3TIFF) routine.</p>
-<!-- INDENTATION -->
-<p><b>&quot;%s&quot;: Bad mode</b>. The specified
-<i>mode</i> parameter was not one of
-&lsquo;&lsquo;r&rsquo;&rsquo; (read),
-&lsquo;&lsquo;w&rsquo;&rsquo; (write), or
-&lsquo;&lsquo;a&rsquo;&rsquo; (append).</p>
-<!-- INDENTATION -->
-<p><b>%s: Cannot open</b>. <i>TIFFOpen</i>() was unable to
-open the specified filename for read/writing.</p>
-<!-- INDENTATION -->
-<p><b>Cannot read TIFF header</b>. An error occurred while
-attempting to read the header information.</p>
-<!-- INDENTATION -->
-<p><b>Error writing TIFF header</b>. An error occurred while
-writing the default header information for a new file.</p>
-<!-- INDENTATION -->
-<p><b>Not a TIFF file, bad magic number %d (0x%x)</b>. The
-magic number in the header was not (hex) 0x4d4d or (hex)
-0x4949.</p>
-<!-- INDENTATION -->
-<p><b>Not a TIFF file, bad version number %d (0x%x)</b>. The
-version field in the header was not 42 (decimal).</p>
-<!-- INDENTATION -->
-<p><b>Cannot append to file that has opposite byte
-ordering</b>. A file with a byte ordering opposite to the
-native byte ordering of the current machine was opened for
-appending (&lsquo;&lsquo;a&rsquo;&rsquo;). This is a
-limitation of the library.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>libtiff</i>(3TIFF), <i>TIFFClose</i>(3TIFF)</p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFPrintDirectory.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFPrintDirectory.3tiff.html
deleted file mode 100644
index a5f418a115..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFPrintDirectory.3tiff.html
+++ /dev/null
@@ -1,225 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:15 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFPrintDirectory</title>
-</head>
-<body>
-
-<h1 align=center>TIFFPrintDirectory</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#NOTES">NOTES</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFPrintDirectory &minus; print a description of a
-<small>TIFF</small> directory</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>void TIFFPrintDirectory(TIFF *</b><i>tif</i><b>, FILE
-*</b><i>fd</i><b>, long</b> <i>flags</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFPrintDirectory</i> prints a description of the
-current directory in the specified <small>TIFF</small> file
-to the standard I/O output stream <i>fd</i>. The
-<i>flags</i> parameter is used to control the <i>level of
-detail</i> of the printed information; it is a bit-or of the
-flags defined in <b>tiffio.h</b>:</p></td>
-</table>
-<!-- TABS -->
-
-<p>#define TIFFPRINT_NONE 0x0 /* no extra info */</p>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="1%">
-
-<p>#define</p>
-</td>
-<td width="30%">
-
-<p>TIFFPRINT_STRIPS</p>
-</td>
-<td width="10%">
-
-<p>0x1</p>
-</td>
-<td width="48%">
-
-<p>/* strips/tiles info */</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="1%">
-
-<p>#define</p>
-</td>
-<td width="30%">
-
-<p>TIFFPRINT_CURVES</p>
-</td>
-<td width="10%">
-
-<p>0x2</p>
-</td>
-<td width="48%">
-
-<p>/* color/gray response curves */</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="1%">
-
-<p>#define</p>
-</td>
-<td width="30%">
-
-<p>TIFFPRINT_COLORMAP</p>
-</td>
-<td width="10%">
-
-<p>0x4</p>
-</td>
-<td width="48%">
-
-<p>/* colormap */</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="1%">
-
-<p>#define</p>
-</td>
-<td width="30%">
-
-<p>TIFFPRINT_JPEGQTABLES</p>
-</td>
-<td width="10%">
-
-<p>0x100</p>
-</td>
-<td width="48%">
-
-<p>/* JPEG Q matrices */</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="1%">
-
-<p>#define</p>
-</td>
-<td width="30%">
-
-<p>TIFFPRINT_JPEGACTABLES</p>
-</td>
-<td width="10%">
-
-<p>0x200</p>
-</td>
-<td width="48%">
-
-<p>/* JPEG AC tables */</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="1%">
-
-<p>#define</p>
-</td>
-<td width="30%">
-
-<p>TIFFPRINT_JPEGDCTABLES</p>
-</td>
-<td width="10%">
-
-<p>0x200</p>
-</td>
-<td width="48%">
-
-<p>/* JPEG DC tables */</p>
-</td>
-</table>
-<a name="NOTES"></a>
-<h2>NOTES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>In C++ the <i>flags</i> parameter defaults to 0.</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>None.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>None.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>libtiff</i>(3TIFF), <i>TIFFOpen</i>(3TIFF),
-<i>TIFFReadDirectory</i>(3TIFF),
-<i>TIFFSetDirectory</i>(3TIFF)</p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFRGBAImage.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFRGBAImage.3tiff.html
deleted file mode 100644
index 7bbee0f25e..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFRGBAImage.3tiff.html
+++ /dev/null
@@ -1,319 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:16 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFRGBAImage</title>
-</head>
-<body>
-
-<h1 align=center>TIFFRGBAImage</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#ALTERNATE RASTER FORMATS">ALTERNATE RASTER FORMATS</a><br>
-<a href="#SIMULTANEOUS RASTER STORE AND DISPLAY">SIMULTANEOUS RASTER STORE AND DISPLAY</a><br>
-<a href="#SUPPORTING ADDITIONAL TIFF FORMATS">SUPPORTING ADDITIONAL TIFF FORMATS</a><br>
-<a href="#NOTES">NOTES</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFRGBAImageOK, TIFFRGBAImageBegin, TIFFRGBAImageGet,
-TIFFRGBAImageEnd &minus; read and decode an image into a
-raster</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>typedef unsigned char TIFFRGBValue; typedef struct
-_TIFFRGBAImage TIFFRGBAImage;</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFRGBAImageOK(TIFF *</b><i>tif</i><b>, char</b>
-<i>emsg[1024]</i><b>)<br>
-int TIFFRGBAImageBegin(TIFFRGBAImage *</b><i>img</i><b>,
-TIFF*</b> <i>tif</i><b>, int</b> <i>stopOnError</i><b>,
-char</b> <i>emsg[1024]</i><b>)<br>
-int TIFFRGBAImageGet(TIFFRGBAImage *</b><i>img</i><b>,
-uint32*</b> <i>raster</i><b>, uint32</b> <i>width</i> <b>,
-uint32</b> <i>height</i><b>)<br>
-void TIFFRGBAImageEnd(TIFFRGBAImage
-*</b><i>img</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The routines described here provide a high-level
-interface through which <small>TIFF</small> images may be
-read into memory. Images may be strip- or tile-based and
-have a variety of different characteristics: bits/sample,
-samples/pixel, photometric, etc. Decoding state is
-encapsulated in a <i>TIFFRGBAImage</i> structure making it
-possible to capture state for multiple images and quickly
-switch between them. The target raster format can be
-customized to a particular application&rsquo;s needs by
-installing custom routines that manipulate image data
-according to application requirements.</p>
-<!-- INDENTATION -->
-<p>The default usage for these routines is: check if an
-image can be processed using <i>TIFFRGBAImageOK</i>,
-construct a decoder state block using
-<i>TIFFRGBAImageBegin</i>, read and decode an image into a
-target raster using <i>TIFFRGBAImageGet</i>, and then
-release resources using <i>TIFFRGBAImageEnd</i>.
-<i>TIFFRGBAImageGet</i> can be called multiple times to
-decode an image using different state parameters. If
-multiple images are to be displayed and there is not enough
-space for each of the decoded rasters, multiple state blocks
-can be managed and then calls can be made to
-<i>TIFFRGBAImageGet</i> as needed to display an image.</p>
-<!-- INDENTATION -->
-<p>The generated raster is assumed to be an array of
-<i>width</i> times <i>height</i> 32-bit entries, where
-<i>width</i> must be less than or equal to the width of the
-image (<i>height</i> may be any non-zero size). If the
-raster dimensions are smaller than the image, the image data
-is cropped to the raster bounds. If the raster height is
-greater than that of the image, then the image data are
-placed in the lower part of the raster. (Note that the
-raster is assume to be organized such that the pixel at
-location (<i>x</i>,<i>y</i>) is
-<i>raster</i>[<i>y</i>*<i>width</i>+<i>x</i>]; with the
-raster origin in the <b>lower-left</b> hand corner.)</p>
-<!-- INDENTATION -->
-<p>Raster pixels are 8-bit packed red, green, blue, alpha
-samples. The macros <i>TIFFGetR</i>, <i>TIFFGetG</i>,
-<i>TIFFGetB</i>, and <i>TIFFGetA</i> should be used to
-access individual samples. Images without Associated Alpha
-matting information have a constant Alpha of 1.0 (255).</p>
-<!-- INDENTATION -->
-<p><i>TIFFRGBAImageGet</i> converts non-8-bit images by
-scaling sample values. Palette, grayscale, bilevel,
-<small>CMYK</small> , and YCbCr images are converted to
-<small>RGB</small> transparently. Raster pixels are returned
-uncorrected by any colorimetry information present in the
-directory.</p>
-<!-- INDENTATION -->
-<p>The parameter <i>stopOnError</i> specifies how to act if
-an error is encountered while reading the image. If
-<i>stopOnError</i> is non-zero, then an error will terminate
-the operation; otherwise <i>TIFFRGBAImageGet</i> will
-continue processing data until all the possible data in the
-image have been requested.</p>
-</td>
-</table>
-<a name="ALTERNATE RASTER FORMATS"></a>
-<h2>ALTERNATE RASTER FORMATS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>To use the core support for reading and processing
-<small>TIFF</small> images, but write the resulting raster
-data in a different format one need only override the
-&lsquo;&lsquo;<i>put methods</i>&rsquo;&rsquo; used to store
-raster data. These methods are are defined in the
-<i>TIFFRGBAImage</i> structure and initially setup by
-<i>TIFFRGBAImageBegin</i> to point to routines that pack
-raster data in the default <small>ABGR</small> pixel format.
-Two different routines are used according to the physical
-organization of the image data in the file:
-<i>PlanarConfiguration</i>=1 (packed samples), and
-<i>PlanarConfiguration</i>=2 (separated samples). Note that
-this mechanism can be used to transform the data before
-storing it in the raster. For example one can convert data
-to colormap indices for display on a colormap display.</p>
-</td>
-</table>
-<a name="SIMULTANEOUS RASTER STORE AND DISPLAY"></a>
-<h2>SIMULTANEOUS RASTER STORE AND DISPLAY</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>It is simple to display an image as it is being read into
-memory by overriding the put methods as described above for
-supporting alternate raster formats. Simply keep a reference
-to the default put methods setup by
-<i>TIFFRGBAImageBegin</i> and then invoke them before or
-after each display operation. For example, the
-<i>tiffgt</i>(1) utility uses the following put method to
-update the display as the raster is being filled:</p>
-<!-- INDENTATION -->
-<pre>static void
-putContigAndDraw(TIFFRGBAImage* img, uint32* raster,
- uint32 x, uint32 y, uint32 w, uint32 h,
- int32 fromskew, int32 toskew,
- unsigned char* cp)
-{
- (*putContig)(img, raster, x, y, w, h, fromskew, toskew, cp);
- if (x+w == width) {
- w = width;
- if (img-&gt;orientation == ORIENTATION_TOPLEFT)
- lrectwrite(0, y-(h-1), w-1, y, raster-x-(h-1)*w);
- else
- lrectwrite(0, y, w-1, y+h-1, raster);
- }
-}
-</pre>
-<!-- INDENTATION -->
-<p>(the original routine provided by the library is saved in
-the variable <i>putContig</i>.)</p>
-</td>
-</table>
-<a name="SUPPORTING ADDITIONAL TIFF FORMATS"></a>
-<h2>SUPPORTING ADDITIONAL TIFF FORMATS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The <i>TIFFRGBAImage</i> routines support the most
-commonly encountered flavors of <small>TIFF.</small> It is
-possible to extend this support by overriding the
-&lsquo;&lsquo;<i>get method</i>&rsquo;&rsquo; invoked by
-<i>TIFFRGBAImageGet</i> to read <small>TIFF</small> image
-data. Details of doing this are a bit involved, it is best
-to make a copy of an existing get method and modify it to
-suit the needs of an application.</p>
-</td>
-</table>
-<a name="NOTES"></a>
-<h2>NOTES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Samples must be either 1, 2, 4, 8, or 16 bits.
-Colorimetric samples/pixel must be either 1, 3, or 4 (i.e.
-<i>SamplesPerPixel</i> minus <i>ExtraSamples</i>).</p>
-<!-- INDENTATION -->
-<p>Palette image colormaps that appear to be incorrectly
-written as 8-bit values are automatically scaled to
-16-bits.</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All routines return 1 if the operation was successful.
-Otherwise, 0 is returned if an error was encountered and
-<i>stopOnError</i> is zero.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<i>TIFFError</i>(3TIFF) routine.</p>
-<!-- INDENTATION -->
-<p><b>Sorry, can not handle %d-bit pictures</b>. The image
-had <i>BitsPerSample</i> other than 1, 2, 4, 8, or 16.</p>
-<!-- INDENTATION -->
-<p><b>Sorry, can not handle %d-channel images</b>. The image
-had <i>SamplesPerPixel</i> other than 1, 3, or 4.</p>
-<!-- INDENTATION -->
-<p><b>Missing needed &quot;PhotometricInterpretation&quot;
-tag</b>. The image did not have a tag that describes how to
-display the data.</p>
-<!-- INDENTATION -->
-<p><b>No &quot;PhotometricInterpretation&quot; tag, assuming
-RGB</b>. The image was missing a tag that describes how to
-display it, but because it has 3 or 4 samples/pixel, it is
-assumed to be <small>RGB.</small></p>
-<!-- INDENTATION -->
-<p><b>No &quot;PhotometricInterpretation&quot; tag, assuming
-min-is-black</b>. The image was missing a tag that describes
-how to display it, but because it has 1 sample/pixel, it is
-assumed to be a grayscale or bilevel image.</p>
-<!-- INDENTATION -->
-<p><b>No space for photometric conversion table</b>. There
-was insufficient memory for a table used to convert image
-samples to 8-bit <small>RGB.</small></p>
-<!-- INDENTATION -->
-<p><b>Missing required &quot;Colormap&quot; tag</b>. A
-Palette image did not have a required <i>Colormap</i>
-tag.</p>
-<!-- INDENTATION -->
-<p><b>No space for tile buffer</b>. There was insufficient
-memory to allocate an i/o buffer.</p>
-<!-- INDENTATION -->
-<p><b>No space for strip buffer</b>. There was insufficient
-memory to allocate an i/o buffer.</p>
-<!-- INDENTATION -->
-<p><b>Can not handle format</b>. The image has a format
-(combination of <i>BitsPerSample</i>,
-<i>SamplesPerPixel</i>, and
-<i>PhotometricInterpretation</i>) that can not be
-handled.</p>
-<!-- INDENTATION -->
-<p><b>No space for B&amp;W mapping table</b>. There was
-insufficient memory to allocate a table used to map
-grayscale data to <small>RGB.</small></p>
-<!-- INDENTATION -->
-<p><b>No space for Palette mapping table</b>. There was
-insufficient memory to allocate a table used to map data to
-8-bit <small>RGB.</small></p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFOpen</b>(3TIFF), <b>TIFFReadRGBAImage</b>(3TIFF),
-<b>TIFFReadRGBAImageOriented</b>(3TIFF),
-<b>TIFFReadRGBAStrip</b>(3TIFF),
-<b>TIFFReadRGBATile</b>(3TIFF), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFReadDirectory.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFReadDirectory.3tiff.html
deleted file mode 100644
index 5bb828efa7..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFReadDirectory.3tiff.html
+++ /dev/null
@@ -1,218 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:16 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFReadDirectory</title>
-</head>
-<body>
-
-<h1 align=center>TIFFReadDirectory</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#NOTES">NOTES</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>TIFFReadDirectory &minus; get the contents of the
-next directory in an open</big> TIFF <big>file</big></p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>#include &lt;tiffio.h&gt;</b></big></p>
-<!-- INDENTATION -->
-<p><big><b>int TIFFReadDirectory(TIFF
-*</b><i>tif</i><b>)</b></big></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>Read the next directory in the specified file and
-make it the current directory. Applications only need to
-call <i>TIFFReadDirectory</i> to read multiple subfiles in a
-single</big> TIFF <big>file&mdash; the first directory in a
-file is automatically read when <i>TIFFOpen</i> is
-called.</big></p>
-</td>
-</table>
-<a name="NOTES"></a>
-<h2>NOTES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>If the library is compiled with</big>
-STRIPCHOP_SUPPORT <big>enabled, then images that have a
-single uncompressed strip or tile of data are automatically
-treated as if they were made up of multiple strips or tiles
-of approximately 8 kilobytes each. This operation is done
-only in-memory; it does not alter the contents of the file.
-However, the construction of the &lsquo;&lsquo;chopped
-strips&rsquo;&rsquo; is visible to the application through
-the number of strips [tiles] returned by
-<i>TIFFNumberOfStrips</i>
-[<i>TIFFNumberOfTiles</i>].</big></p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>If the next directory was successfully read, 1 is
-returned. Otherwise, 0 is returned if an error was
-encountered, or if there are no more directories to be
-read.</big></p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>All error messages are directed to the
-<i>TIFFError</i>(3TIFF) routine. All warning messages are
-directed to the <i>TIFFWarning</i>(3TIFF) routine.</big></p>
-<!-- INDENTATION -->
-<p><big><b>Seek error accessing TIFF directory</b>. An error
-occurred while positioning to the location of the
-directory.</big></p>
-<!-- INDENTATION -->
-<p><big><b>Wrong data type %d for field &quot;%s&quot;</b>.
-The tag entry in the directory had an incorrect data type.
-For example, an <i>ImageDescription</i> tag with a</big>
-SHORT <big>data type.</big></p>
-<!-- INDENTATION -->
-<p><big><b>TIFF directory is missing required &quot;%s&quot;
-field</b>. The specified tag is required to be present by
-the</big> TIFF <big>5.0 specification, but is missing. The
-directory is (usually) unusable.</big></p>
-<!-- INDENTATION -->
-<p><big><b>%s: Rational with zero denominator</b>. A
-directory tag has a</big> RATIONAL <big>value whose
-denominator is zero.</big></p>
-<!-- INDENTATION -->
-<p><big><b>Incorrect count %d for field &quot;%s&quot; (%lu,
-expecting %lu); tag ignored</b>. The specified tag&rsquo;s
-count field is bad. For example, a count other than 1 for a
-<i>SubFileType</i> tag.</big></p>
-<!-- INDENTATION -->
-<p><big><b>Cannot handle different per-sample values for
-field &quot;%s&quot;</b>. The tag has <i>SamplesPerPixel</i>
-values and they are not all the same; e.g.
-<i>BitsPerSample</i>. The library is unable to handle images
-of this sort.</big></p>
-<!-- INDENTATION -->
-<p><big><b>Count mismatch for field &quot;%s&quot;;
-expecting %d, got %d</b>. The count field in a tag does not
-agree with the number expected by the library. This should
-never happen, so if it does, the library refuses to read the
-directory.</big></p>
-<!-- INDENTATION -->
-<p><big><b>Invalid TIFF directory; tags are not sorted in
-ascending order</b>. The directory tags are not properly
-sorted as specified in the</big> TIFF <big>5.0
-specification. This error is not fatal.</big></p>
-<!-- INDENTATION -->
-<p><big><b>Ignoring unknown field with tag %d (0x%x)</b>. An
-unknown tag was encountered in the directory; the library
-ignores all such tags.</big></p>
-<!-- INDENTATION -->
-<p><big><b>TIFF directory is missing requred
-&quot;ImageLength&quot; field</b>. The image violates the
-specification by not having a necessary field. There is no
-way for the library to recover from this error.</big></p>
-<!-- INDENTATION -->
-<p><big><b>TIFF directory is missing requred
-&quot;PlanarConfig&quot; field</b>. The image violates the
-specification by not having a necessary field. There is no
-way for the library to recover from this error.</big></p>
-<!-- INDENTATION -->
-<p><big><b>TIFF directory is missing requred
-&quot;StripOffsets&quot; field</b>. The image has multiple
-strips, but is missing the tag that specifies the file
-offset to each strip of data. There is no way for the
-library to recover from this error.</big></p>
-<!-- INDENTATION -->
-<p><big><b>TIFF directory is missing requred
-&quot;TileOffsets&quot; field</b>. The image has multiple
-tiles, but is missing the tag that specifies the file offset
-to each tile of data. There is no way for the library to
-recover from this error.</big></p>
-<!-- INDENTATION -->
-<p><big><b>TIFF directory is missing required
-&quot;StripByteCounts&quot; field</b>. The image has
-multiple strips, but is missing the tag that specifies the
-size of each strip of data. There is no way for the library
-to recover from this error.</big></p>
-<!-- INDENTATION -->
-<p><big><b>TIFF directory is missing required
-&quot;StripByteCounts&quot; field, calculating from
-imagelength</b>. The image violates the specification by not
-having a necessary field. However, when the image is
-comprised of only one strip or tile, the library will
-estimate the missing value based on the file size.</big></p>
-<!-- INDENTATION -->
-<p><big><b>Bogus &quot;StripByteCounts&quot; field, ignoring
-and calculating from imagelength</b>. Certain vendors
-violate the specification by writing zero for the
-StripByteCounts tag when they want to leave the value
-unspecified. If the image has a single strip, the library
-will estimate the missing value based on the file
-size.</big></p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFOpen</b>(3TIFF),
-<b>TIFFWriteDirectory</b>(3TIFF),
-<b>TIFFSetDirectory</b>(3TIFF),
-<b>TIFFSetSubDirectory</b>(3TIFF),
-<b>libtiff</b>(3TIFF)</big></p>
-<!-- INDENTATION -->
-<p><big>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></big></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFReadEncodedStrip.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFReadEncodedStrip.3tiff.html
deleted file mode 100644
index 39d411d765..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFReadEncodedStrip.3tiff.html
+++ /dev/null
@@ -1,133 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:16 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFReadEncodedStrip</title>
-</head>
-<body>
-
-<h1 align=center>TIFFReadEncodedStrip</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#NOTES">NOTES</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>TIFFReadEncodedStrip &minus; read and decode a strip
-of data from an open</big> TIFF <big>file</big></p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>#include &lt;tiffio.h&gt;</b></big></p>
-<!-- INDENTATION -->
-<p><big><b>tsize_t TIFFReadEncodedStrip(TIFF
-*</b><i>tif</i><b>, tstrip_t</b> <i>strip</i><b>,
-tdata_t</b> <i>buf</i><b>, tsize_t</b>
-<i>size</i><b>)</b></big></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>Read the specified strip of data and place up to
-<i>size</i> bytes of decompressed information in the (user
-supplied) data buffer.</big></p>
-</td>
-</table>
-<a name="NOTES"></a>
-<h2>NOTES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>The value of <i>strip</i> is a &lsquo;&lsquo;raw
-strip number.&rsquo;&rsquo; That is, the caller must take
-into account whether or not the data are organized in
-separate planes (<i>PlanarConfiguration</i>=2). To read a
-full strip of data the data buffer should typically be at
-least as large as the number returned by
-<b>TIFFStripSize</b>(3TIFF). If the -1 passed in <i>size</i>
-parameter, the whole strip will be read. You should be sure
-you have enough space allocated for the buffer.</big></p>
-<!-- INDENTATION -->
-<p><big>The library attempts to hide bit- and byte-ordering
-differences between the image and the native machine by
-converting data to the native machine order. Bit reversal is
-done if the <i>FillOrder</i> tag is opposite to the native
-machine bit order. 16- and 32-bit samples are automatically
-byte-swapped if the file was written with a byte order
-opposite to the native machine byte order,</big></p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>The actual number of bytes of data that were placed
-in <i>buf</i> is returned; <i>TIFFReadEncodedStrip</i>
-returns &minus;1 if an error was encountered.</big></p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>All error messages are directed to the
-<b>TIFFError</b>(3TIFF) routine.</big></p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFOpen</b>(3TIFF),
-<b>TIFFReadRawStrip</b>(3TIFF),
-<b>TIFFReadScanline</b>(3TIFF),
-<b>libtiff</b>(3TIFF)</big></p>
-<!-- INDENTATION -->
-<p><big>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></big></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFReadEncodedTile.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFReadEncodedTile.3tiff.html
deleted file mode 100644
index 752b1ea3e6..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFReadEncodedTile.3tiff.html
+++ /dev/null
@@ -1,130 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:16 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFReadEncodedTile</title>
-</head>
-<body>
-
-<h1 align=center>TIFFReadEncodedTile</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#NOTES">NOTES</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFReadEncodedTile &minus; read and decode a tile of
-data from an open <small>TIFF</small> file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFReadEncodedTile(TIFF *</b><i>tif</i><b>,
-ttile_t</b> <i>tile</i><b>, tdata_t</b> <i>buf</i><b>,
-tsize_t</b> <i>size</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Read the specified tile of data and place up to
-<i>size</i> bytes of decompressed information in the (user
-supplied) data buffer.</p>
-</td>
-</table>
-<a name="NOTES"></a>
-<h2>NOTES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The value of <i>tile</i> is a &lsquo;&lsquo;raw tile
-number.&rsquo;&rsquo; That is, the caller must take into
-account whether or not the data are organized in separate
-planes (<i>PlanarConfiguration</i>=2).
-<i>TIFFComputeTile</i> automatically does this when
-converting an (x,y,z,sample) coordinate quadruple to a tile
-number. To read a full tile of data the data buffer should
-be at least as large as the value returned by
-<i>TIFFTileSize</i>.</p>
-<!-- INDENTATION -->
-<p>The library attempts to hide bit- and byte-ordering
-differences between the image and the native machine by
-converting data to the native machine order. Bit reversal is
-done if the <i>FillOrder</i> tag is opposite to the native
-machine bit order. 16- and 32-bit samples are automatically
-byte-swapped if the file was written with a byte order
-opposite to the native machine byte order,</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The actual number of bytes of data that were placed in
-<i>buf</i> is returned; <i>TIFFReadEncodedTile</i> returns
-&minus;1 if an error was encountered.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<b>TIFFError</b>(3TIFF) routine.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFOpen</b>(3TIFF), <b>TIFFReadRawTile</b>(3TIFF),
-<b>TIFFReadTile</b>(3TIFF), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFReadRGBAImage.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFReadRGBAImage.3tiff.html
deleted file mode 100644
index 165284e50c..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFReadRGBAImage.3tiff.html
+++ /dev/null
@@ -1,301 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:16 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFReadRGBAImage</title>
-</head>
-<body>
-
-<h1 align=center>TIFFReadRGBAImage</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#NOTES">NOTES</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFReadRGBAImage, TIFFReadRGBAImageOriented &minus; read
-and decode an image into a fixed-format raster</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>#define TIFFGetR(abgr) ((abgr) &amp; 0xff)<br>
-#define TIFFGetG(abgr) (((abgr) &gt;&gt; 8) &amp; 0xff)<br>
-#define TIFFGetB(abgr) (((abgr) &gt;&gt; 16) &amp; 0xff)<br>
-#define TIFFGetA(abgr) (((abgr) &gt;&gt; 24) &amp;
-0xff)</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFReadRGBAImage(TIFF *</b><i>tif</i><b>,
-uint32</b> <i>width</i><b>, uint32</b> <i>height</i><b>,
-uint32 *</b><i>raster</i><b>, int</b>
-<i>stopOnError</i><b>)<br>
-int TIFFReadRGBAImageOriented(TIFF *</b><i>tif</i><b>,
-uint32</b> <i>width</i><b>, uint32</b> <i>height</i><b>,
-uint32 *</b><i>raster</i><b>, int</b> <i>orientation</i><b>,
-int</b> <i>stopOnError</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFReadRGBAImage</i> reads a strip- or tile-based
-image into memory, storing the result in the user supplied
-<i>raster</i>. The raster is assumed to be an array of
-<i>width</i> times <i>height</i> 32-bit entries, where
-<i>width</i> must be less than or equal to the width of the
-image (<i>height</i> may be any non-zero size). If the
-raster dimensions are smaller than the image, the image data
-is cropped to the raster bounds. If the raster height is
-greater than that of the image, then the image data are
-placed in the lower part of the raster. (Note that the
-raster is assume to be organized such that the pixel at
-location (<i>x</i>,<i>y</i>) is
-<i>raster</i>[<i>y</i>*<i>width</i>+<i>x</i>]; with the
-raster origin in the lower-left hand corner.)</p>
-<!-- INDENTATION -->
-<p><i>TIFFReadRGBAImageOriented</i> works like
-<i>TIFFReadRGBAImage</i> with except of that user can
-specify the raster origin position with the
-<i>orientation</i> parameter. Four orientations
-supported:</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>ORIENTATION_TOPLEFT</b></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>origin in top-left corner,</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>ORIENTATION_TOPRIGHT</b></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>origin in top-right corner,</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>ORIENTATION_BOTLEFT</b></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>origin in bottom-left corner and</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>ORIENTATION_BOTRIGHT</b></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>origin in bottom-right corner.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>If you choose <b>ORIENTATION_BOTLEFT</b> result will be
-the same as returned by the <i>TIFFReadRGBAImage.</i></p>
-<!-- INDENTATION -->
-<p>Raster pixels are 8-bit packed red, green, blue, alpha
-samples. The macros <i>TIFFGetR</i>, <i>TIFFGetG</i>,
-<i>TIFFGetB</i>, and <i>TIFFGetA</i> should be used to
-access individual samples. Images without Associated Alpha
-matting information have a constant Alpha of 1.0 (255).</p>
-<!-- INDENTATION -->
-<p><i>TIFFReadRGBAImage</i> converts non-8-bit images by
-scaling sample values. Palette, grayscale, bilevel,
-<small>CMYK</small> , and YCbCr images are converted to
-<small>RGB</small> transparently. Raster pixels are returned
-uncorrected by any colorimetry information present in the
-directory.</p>
-<!-- INDENTATION -->
-<p>The paramater <i>stopOnError</i> specifies how to act if
-an error is encountered while reading the image. If
-<i>stopOnError</i> is non-zero, then an error will terminate
-the operation; otherwise <i>TIFFReadRGBAImage</i> will
-continue processing data until all the possible data in the
-image have been requested.</p>
-</td>
-</table>
-<a name="NOTES"></a>
-<h2>NOTES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>In C++ the <i>stopOnError</i> parameter defaults to
-0.</p>
-<!-- INDENTATION -->
-<p>Samples must be either 1, 2, 4, 8, or 16 bits.
-Colorimetric samples/pixel must be either 1, 3, or 4 (i.e.
-<i>SamplesPerPixel</i> minus <i>ExtraSamples</i>).</p>
-<!-- INDENTATION -->
-<p>Palettte image colormaps that appear to be incorrectly
-written as 8-bit values are automatically scaled to
-16-bits.</p>
-<!-- INDENTATION -->
-<p><i>TIFFReadRGBAImage</i> is just a wrapper around the
-more general <i>TIFFRGBAImage</i>(3TIFF) facilities.</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>1 is returned if the image was successfully read and
-converted. Otherwise, 0 is returned if an error was
-encountered and <i>stopOnError</i> is zero.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<i>TIFFError</i>(3TIFF) routine.</p>
-<!-- INDENTATION -->
-<p><b>Sorry, can not handle %d-bit pictures</b>. The image
-had <i>BitsPerSample</i> other than 1, 2, 4, 8, or 16.</p>
-<!-- INDENTATION -->
-<p><b>Sorry, can not handle %d-channel images</b>. The image
-had <i>SamplesPerPixel</i> other than 1, 3, or 4.</p>
-<!-- INDENTATION -->
-<p><b>Missing needed &quot;PhotometricInterpretation&quot;
-tag</b>. The image did not have a tag that describes how to
-display the data.</p>
-<!-- INDENTATION -->
-<p><b>No &quot;PhotometricInterpretation&quot; tag, assuming
-RGB</b>. The image was missing a tag that describes how to
-display it, but because it has 3 or 4 samples/pixel, it is
-assumed to be <small>RGB.</small></p>
-<!-- INDENTATION -->
-<p><b>No &quot;PhotometricInterpretation&quot; tag, assuming
-min-is-black</b>. The image was missing a tag that describes
-how to display it, but because it has 1 sample/pixel, it is
-assumed to be a grayscale or bilevel image.</p>
-<!-- INDENTATION -->
-<p><b>No space for photometric conversion table</b>. There
-was insufficient memory for a table used to convert image
-samples to 8-bit <small>RGB.</small></p>
-<!-- INDENTATION -->
-<p><b>Missing required &quot;Colormap&quot; tag</b>. A
-Palette image did not have a required <i>Colormap</i>
-tag.</p>
-<!-- INDENTATION -->
-<p><b>No space for tile buffer</b>. There was insufficient
-memory to allocate an i/o buffer.</p>
-<!-- INDENTATION -->
-<p><b>No space for strip buffer</b>. There was insufficient
-memory to allocate an i/o buffer.</p>
-<!-- INDENTATION -->
-<p><b>Can not handle format</b>. The image has a format
-(combination of <i>BitsPerSample</i>,
-<i>SamplesPerPixel</i>, and
-<i>PhotometricInterpretation</i>) that
-<i>TIFFReadRGBAImage</i> can not handle.</p>
-<!-- INDENTATION -->
-<p><b>No space for B&amp;W mapping table</b>. There was
-insufficient memory to allocate a table used to map
-grayscale data to <small>RGB.</small></p>
-<!-- INDENTATION -->
-<p><b>No space for Palette mapping table</b>. There was
-insufficient memory to allocate a table used to map data to
-8-bit <small>RGB.</small></p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFOpen</b>(3TIFF), <b>TIFFRGBAImage</b>(3TIFF),
-<b>TIFFReadRGBAStrip</b>(3TIFF),
-<b>TIFFReadRGBATile</b>(3TIFF), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFReadRGBAStrip.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFReadRGBAStrip.3tiff.html
deleted file mode 100644
index df09f649fa..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFReadRGBAStrip.3tiff.html
+++ /dev/null
@@ -1,208 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:16 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFReadRGBAStrip</title>
-</head>
-<body>
-
-<h1 align=center>TIFFReadRGBAStrip</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#NOTES">NOTES</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFReadRGBAStrip &minus; read and decode an image strip
-into a fixed-format raster</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>#define TIFFGetR(abgr) ((abgr) &amp; 0xff)<br>
-#define TIFFGetG(abgr) (((abgr) &gt;&gt; 8) &amp; 0xff)<br>
-#define TIFFGetB(abgr) (((abgr) &gt;&gt; 16) &amp; 0xff)<br>
-#define TIFFGetA(abgr) (((abgr) &gt;&gt; 24) &amp;
-0xff)</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFReadRGBAStrip(TIFF *</b><i>tif</i><b>,
-uint32</b> <i>row</i><b>, uint32
-*</b><i>raster</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFReadRGBAStrip</i> reads a single strip of a
-strip-based image into memory, storing the result in the
-user supplied RGBA <i>raster</i>. The raster is assumed to
-be an array of width times rowsperstrip 32-bit entries,
-where width is the width of the image (TIFFTAG_IMAGEWIDTH)
-and rowsperstrip is the maximum lines in a strip
-(TIFFTAG_ROWSPERSTRIP).</p>
-<!-- INDENTATION -->
-<p>The <i>row</i> value should be the row of the first row
-in the strip (strip * rowsperstrip, zero based).</p>
-<!-- INDENTATION -->
-<p>Note that the raster is assume to be organized such that
-the pixel at location (<i>x</i>,<i>y</i>) is
-<i>raster</i>[<i>y</i>*<i>width</i>+<i>x</i>]; with the
-raster origin in the <i>lower-left hand corner</i> of the
-strip. That is bottom to top organization. When reading a
-partial last strip in the file the last line of the image
-will begin at the beginning of the buffer.</p>
-<!-- INDENTATION -->
-<p>Raster pixels are 8-bit packed red, green, blue, alpha
-samples. The macros <i>TIFFGetR</i>, <i>TIFFGetG</i>,
-<i>TIFFGetB</i>, and <i>TIFFGetA</i> should be used to
-access individual samples. Images without Associated Alpha
-matting information have a constant Alpha of 1.0 (255).</p>
-<!-- INDENTATION -->
-<p>See the <i>TIFFRGBAImage</i>(3TIFF) page for more details
-on how various image types are converted to RGBA values.</p>
-</td>
-</table>
-<a name="NOTES"></a>
-<h2>NOTES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Samples must be either 1, 2, 4, 8, or 16 bits.
-Colorimetric samples/pixel must be either 1, 3, or 4 (i.e.
-<i>SamplesPerPixel</i> minus <i>ExtraSamples</i>).</p>
-<!-- INDENTATION -->
-<p>Palette image colormaps that appear to be incorrectly
-written as 8-bit values are automatically scaled to
-16-bits.</p>
-<!-- INDENTATION -->
-<p><i>TIFFReadRGBAStrip</i> is just a wrapper around the
-more general <i>TIFFRGBAImage</i>(3TIFF) facilities.
-It&rsquo;s main advantage over the similar
-<i>TIFFReadRGBAImage()</i> function is that for large images
-a single buffer capable of holding the whole image
-doesn&rsquo;t need to be allocated, only enough for one
-strip. The <i>TIFFReadRGBATile()</i> function does a similar
-operation for tiled images.</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>1 is returned if the image was successfully read and
-converted. Otherwise, 0 is returned if an error was
-encountered.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<i>TIFFError</i>(3TIFF) routine.</p>
-<!-- INDENTATION -->
-<p><b>Sorry, can not handle %d-bit pictures</b>. The image
-had <i>BitsPerSample</i> other than 1, 2, 4, 8, or 16.</p>
-<!-- INDENTATION -->
-<p><b>Sorry, can not handle %d-channel images</b>. The image
-had <i>SamplesPerPixel</i> other than 1, 3, or 4.</p>
-<!-- INDENTATION -->
-<p><b>Missing needed &quot;PhotometricInterpretation&quot;
-tag</b>. The image did not have a tag that describes how to
-display the data.</p>
-<!-- INDENTATION -->
-<p><b>No &quot;PhotometricInterpretation&quot; tag, assuming
-RGB</b>. The image was missing a tag that describes how to
-display it, but because it has 3 or 4 samples/pixel, it is
-assumed to be <small>RGB.</small></p>
-<!-- INDENTATION -->
-<p><b>No &quot;PhotometricInterpretation&quot; tag, assuming
-min-is-black</b>. The image was missing a tag that describes
-how to display it, but because it has 1 sample/pixel, it is
-assumed to be a grayscale or bilevel image.</p>
-<!-- INDENTATION -->
-<p><b>No space for photometric conversion table</b>. There
-was insufficient memory for a table used to convert image
-samples to 8-bit <small>RGB.</small></p>
-<!-- INDENTATION -->
-<p><b>Missing required &quot;Colormap&quot; tag</b>. A
-Palette image did not have a required <i>Colormap</i>
-tag.</p>
-<!-- INDENTATION -->
-<p><b>No space for tile buffer</b>. There was insufficient
-memory to allocate an i/o buffer.</p>
-<!-- INDENTATION -->
-<p><b>No space for strip buffer</b>. There was insufficient
-memory to allocate an i/o buffer.</p>
-<!-- INDENTATION -->
-<p><b>Can not handle format</b>. The image has a format
-(combination of <i>BitsPerSample</i>,
-<i>SamplesPerPixel</i>, and
-<i>PhotometricInterpretation</i>) that
-<i>TIFFReadRGBAImage</i> can not handle.</p>
-<!-- INDENTATION -->
-<p><b>No space for B&amp;W mapping table</b>. There was
-insufficient memory to allocate a table used to map
-grayscale data to <small>RGB.</small></p>
-<!-- INDENTATION -->
-<p><b>No space for Palette mapping table</b>. There was
-insufficient memory to allocate a table used to map data to
-8-bit <small>RGB.</small></p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFOpen</b>(3TIFF), <b>TIFFRGBAImage</b>(3TIFF),
-<b>TIFFReadRGBAImage</b>(3TIFF),
-<b>TIFFReadRGBATile</b>(3TIFF), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFReadRGBATile.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFReadRGBATile.3tiff.html
deleted file mode 100644
index ed67b83278..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFReadRGBATile.3tiff.html
+++ /dev/null
@@ -1,261 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:16 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFReadRGBATile</title>
-</head>
-<body>
-
-<h1 align=center>TIFFReadRGBATile</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#NOTES">NOTES</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFReadRGBATile &minus; read and decode an image tile
-into a fixed-format raster</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="-2%">
-
-<p><b>#define TIFFGetR(abgr)</b></p>
-</td>
-<td width="25%"></td>
-<td width="6%"></td>
-<td width="61%">
-
-<p><b>((abgr) &amp; 0xff)</b></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="-2%">
-
-<p><b>#define TIFFGetG(abgr)</b></p>
-</td>
-<td width="25%"></td>
-<td width="6%"></td>
-<td width="61%">
-
-<p><b>(((abgr) &gt;&gt; 8) &amp; 0xff)</b></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="-2%">
-
-<p><b>#define TIFFGetB(abgr)</b></p>
-</td>
-<td width="25%"></td>
-<td width="6%"></td>
-<td width="61%">
-
-<p><b>(((abgr) &gt;&gt; 16) &amp; 0xff)</b></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="-2%">
-
-<p><b>#define TIFFGetA(abgr)</b></p>
-</td>
-<td width="25%"></td>
-<td width="6%"></td>
-<td width="61%">
-
-<p><b>(((abgr) &gt;&gt; 24) &amp; 0xff)</b></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>int TIFFReadRGBATile(TIFF *</b><i>tif</i><b>,
-uint32</b> <i>x</i><b>, uint32</b> <i>y</i><b>, uint32
-*</b><i>raster</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFReadRGBATile</i> reads a single tile of a
-tile-based image into memory, storing the result in the user
-supplied RGBA <i>raster</i>. The raster is assumed to be an
-array of width times length 32-bit entries, where width is
-the width of a tile (TIFFTAG_TILEWIDTH) and length is the
-height of a tile (TIFFTAG_TILELENGTH).</p>
-<!-- INDENTATION -->
-<p>The <i>x</i> and <i>y</i> values are the offsets from the
-top left corner to the top left corner of the tile to be
-read. They must be an exact multiple of the tile width and
-length.</p>
-<!-- INDENTATION -->
-<p>Note that the raster is assume to be organized such that
-the pixel at location (<i>x</i>,<i>y</i>) is
-<i>raster</i>[<i>y</i>*<i>width</i>+<i>x</i>]; with the
-raster origin in the <i>lower-left hand corner</i> of the
-tile. That is bottom to top organization. Edge tiles which
-partly fall off the image will be filled out with
-appropriate zeroed areas.</p>
-<!-- INDENTATION -->
-<p>Raster pixels are 8-bit packed red, green, blue, alpha
-samples. The macros <i>TIFFGetR</i>, <i>TIFFGetG</i>,
-<i>TIFFGetB</i>, and <i>TIFFGetA</i> should be used to
-access individual samples. Images without Associated Alpha
-matting information have a constant Alpha of 1.0 (255).</p>
-<!-- INDENTATION -->
-<p>See the <i>TIFFRGBAImage</i>(3TIFF) page for more details
-on how various image types are converted to RGBA values.</p>
-</td>
-</table>
-<a name="NOTES"></a>
-<h2>NOTES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Samples must be either 1, 2, 4, 8, or 16 bits.
-Colorimetric samples/pixel must be either 1, 3, or 4 (i.e.
-<i>SamplesPerPixel</i> minus <i>ExtraSamples</i>).</p>
-<!-- INDENTATION -->
-<p>Palette image colormaps that appear to be incorrectly
-written as 8-bit values are automatically scaled to
-16-bits.</p>
-<!-- INDENTATION -->
-<p><i>TIFFReadRGBATile</i> is just a wrapper around the more
-general <i>TIFFRGBAImage</i>(3TIFF) facilities. It&rsquo;s
-main advantage over the similar <i>TIFFReadRGBAImage()</i>
-function is that for large images a single buffer capable of
-holding the whole image doesn&rsquo;t need to be allocated,
-only enough for one tile. The <i>TIFFReadRGBAStrip()</i>
-function does a similar operation for stripped images.</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>1 is returned if the image was successfully read and
-converted. Otherwise, 0 is returned if an error was
-encountered.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<i>TIFFError</i>(3TIFF) routine.</p>
-<!-- INDENTATION -->
-<p><b>Sorry, can not handle %d-bit pictures</b>. The image
-had <i>BitsPerSample</i> other than 1, 2, 4, 8, or 16.</p>
-<!-- INDENTATION -->
-<p><b>Sorry, can not handle %d-channel images</b>. The image
-had <i>SamplesPerPixel</i> other than 1, 3, or 4.</p>
-<!-- INDENTATION -->
-<p><b>Missing needed &quot;PhotometricInterpretation&quot;
-tag</b>. The image did not have a tag that describes how to
-display the data.</p>
-<!-- INDENTATION -->
-<p><b>No &quot;PhotometricInterpretation&quot; tag, assuming
-RGB</b>. The image was missing a tag that describes how to
-display it, but because it has 3 or 4 samples/pixel, it is
-assumed to be <small>RGB.</small></p>
-<!-- INDENTATION -->
-<p><b>No &quot;PhotometricInterpretation&quot; tag, assuming
-min-is-black</b>. The image was missing a tag that describes
-how to display it, but because it has 1 sample/pixel, it is
-assumed to be a grayscale or bilevel image.</p>
-<!-- INDENTATION -->
-<p><b>No space for photometric conversion table</b>. There
-was insufficient memory for a table used to convert image
-samples to 8-bit <small>RGB.</small></p>
-<!-- INDENTATION -->
-<p><b>Missing required &quot;Colormap&quot; tag</b>. A
-Palette image did not have a required <i>Colormap</i>
-tag.</p>
-<!-- INDENTATION -->
-<p><b>No space for tile buffer</b>. There was insufficient
-memory to allocate an i/o buffer.</p>
-<!-- INDENTATION -->
-<p><b>No space for strip buffer</b>. There was insufficient
-memory to allocate an i/o buffer.</p>
-<!-- INDENTATION -->
-<p><b>Can not handle format</b>. The image has a format
-(combination of <i>BitsPerSample</i>,
-<i>SamplesPerPixel</i>, and
-<i>PhotometricInterpretation</i>) that
-<i>TIFFReadRGBAImage</i> can not handle.</p>
-<!-- INDENTATION -->
-<p><b>No space for B&amp;W mapping table</b>. There was
-insufficient memory to allocate a table used to map
-grayscale data to <small>RGB.</small></p>
-<!-- INDENTATION -->
-<p><b>No space for Palette mapping table</b>. There was
-insufficient memory to allocate a table used to map data to
-8-bit <small>RGB.</small></p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFOpen</b>(3TIFF), <b>TIFFRGBAImage</b>(3TIFF),
-<b>TIFFReadRGBAImage</b>(3TIFF),
-<b>TIFFReadRGBAStrip</b>(3TIFF), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFReadRawStrip.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFReadRawStrip.3tiff.html
deleted file mode 100644
index bd14f723bc..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFReadRawStrip.3tiff.html
+++ /dev/null
@@ -1,109 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:16 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFReadRawStrip</title>
-</head>
-<body>
-
-<h1 align=center>TIFFReadRawStrip</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFReadRawStrip &minus; return the undecoded contents of
-a strip of data from an open <small>TIFF</small> file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>tsize_t TIFFReadRawStrip(TIFF *</b><i>tif</i><b>,
-tstrip_t</b> <i>strip</i><b>, tdata_t</b> <i>buf</i><b>,
-tsize_t</b> <i>size</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Read the contents of the specified strip into the (user
-supplied) data buffer. Note that the value of <i>strip</i>
-is a &lsquo;&lsquo;raw strip number.&rsquo;&rsquo; That is,
-the caller must take into account whether or not the data is
-organized in separate planes (<i>PlanarConfiguration</i>=2).
-To read a full strip of data the data buffer should
-typically be at least as large as the number returned by
-<i>TIFFStripSize</i>.</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The actual number of bytes of data that were placed in
-<i>buf</i> is returned; <i>TIFFReadEncodedStrip</i> returns
-&minus;1 if an error was encountered.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<b>TIFFError</b>(3TIFF) routine.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFOpen</b>(3TIFF),
-<b>TIFFReadEncodedStrip</b>(3TIFF),
-<b>TIFFReadScanline</b>(3TIFF), <b>TIFFStripSize</b>(3TIFF),
-<b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFReadRawTile.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFReadRawTile.3tiff.html
deleted file mode 100644
index bae2b46cd6..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFReadRawTile.3tiff.html
+++ /dev/null
@@ -1,111 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:16 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFReadRawTile</title>
-</head>
-<body>
-
-<h1 align=center>TIFFReadRawTile</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFReadRawTile &minus; return an undecoded tile of data
-from an open <small>TIFF</small> file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>tsize_t TIFFReadRawTile(TIFF *</b><i>tif</i><b>,
-ttile_t</b> <i>tile</i><b>, tdata_t</b> <i>buf</i><b>,
-tsize_t</b> <i>size</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Read the contents of the specified tile into the (user
-supplied) data buffer. Note that the value of <i>tile</i> is
-a &lsquo;&lsquo;raw tile number.&rsquo;&rsquo; That is, the
-caller must take into account whether or not the data is
-organized in separate planes (<i>PlanarConfiguration</i>=2).
-<i>TIFFComputeTile</i> automatically does this when
-converting an (x,y,z,sample) coordinate quadruple to a tile
-number. To read a full tile of data the data buffer should
-typically be at least as large as the value returned by
-<i>TIFFTileSize</i>.</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The actual number of bytes of data that were placed in
-<i>buf</i> is returned; <i>TIFFReadEncodedTile</i> returns
-&minus;1 if an error was encountered.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<b>TIFFError</b>(3TIFF) routine.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFOpen</b>(3TIFF),
-<b>TIFFReadEncodedTile</b>(3TIFF),
-<b>TIFFReadTile</b>(3TIFF), <b>TIFFTileSize</b>(3TIFF),
-<b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFReadScanline.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFReadScanline.3tiff.html
deleted file mode 100644
index 423645cc96..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFReadScanline.3tiff.html
+++ /dev/null
@@ -1,157 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:16 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFReadScanline</title>
-</head>
-<body>
-
-<h1 align=center>TIFFReadScanline</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#NOTES">NOTES</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#BUGS">BUGS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFReadScanline &minus; read and decode a scanline of
-data from an open <small>TIFF</small> file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFReadScanline(TIFF *</b><i>tif</i><b>,
-tdata_t</b> <i>buf</i><b>, uint32</b> <i>row</i><b>,
-tsample_t</b> <i>sample</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Read the data for the specified row into the (user
-supplied) data buffer <i>buf</i>. The data are returned
-decompressed and, in the native byte- and bit-ordering, but
-are otherwise packed (see further below). The buffer must be
-large enough to hold an entire scanline of data.
-Applications should call the routine <i>TIFFScanlineSize</i>
-to find out the size (in bytes) of a scanline buffer. The
-<i>row</i> parameter is always used by
-<i>TIFFReadScanline</i>; the <i>sample</i> parameter is used
-only if data are organized in separate planes
-(<i>PlanarConfiguration</i>=2).</p>
-</td>
-</table>
-<a name="NOTES"></a>
-<h2>NOTES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The library attempts to hide bit- and byte-ordering
-differences between the image and the native machine by
-converting data to the native machine order. Bit reversal is
-done if the <i>FillOrder</i> tag is opposite to the native
-machine bit order. 16- and 32-bit samples are automatically
-byte-swapped if the file was written with a byte order
-opposite to the native machine byte order,</p>
-<!-- INDENTATION -->
-<p>In C++ the <i>sample</i> parameter defaults to 0.</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFReadScanline</i> returns &minus;1 if it detects an
-error; otherwise 1 is returned.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<i>TIFFError</i>(3TIFF) routine.</p>
-<!-- INDENTATION -->
-<p><b>Compression algorithm does not support random
-access</b>. Data was requested in a non-sequential order
-from a file that uses a compression algorithm and that has
-<i>RowsPerStrip</i> greater than one. That is, data in the
-image is stored in a compressed form, and with multiple rows
-packed into a strip. In this case, the library does not
-support random access to the data. The data should either be
-accessed sequentially, or the file should be converted so
-that each strip is made up of one row of data.</p>
-</td>
-</table>
-<a name="BUGS"></a>
-<h2>BUGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Reading subsampled YCbCR data does not work correctly
-because, for <i>PlanarConfiguration</i>=2 the size of a
-scanline is not calculated on a per-sample basis, and for
-<i>PlanarConfiguration</i>=1 the library does not unpack the
-block-interleaved samples; use the strip- and tile-based
-interfaces to read these formats.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFOpen</b>(3TIFF),
-<b>TIFFReadEncodedStrip</b>(3TIFF),
-<b>TIFFReadRawStrip</b>(3TIFF), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFReadTile.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFReadTile.3tiff.html
deleted file mode 100644
index ff726b49d2..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFReadTile.3tiff.html
+++ /dev/null
@@ -1,133 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:16 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFReadTile</title>
-</head>
-<body>
-
-<h1 align=center>TIFFReadTile</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#NOTES">NOTES</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFReadTile &minus; read and decode a tile of data from
-an open <small>TIFF</small> file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>tsize_t TIFFReadTile(TIFF *</b><i>tif</i><b>,
-tdata_t</b> <i>buf</i><b>, uint32</b> <i>x</i><b>,
-uint32</b> <i>y</i><b>, uint32</b> <i>z</i><b>,
-tsample_t</b> <i>sample</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Return the data for the tile <i>containing</i> the
-specified coordinates. The data placed in <i>buf</i> are
-returned decompressed and, typically, in the native byte-
-and bit-ordering, but are otherwise packed (see further
-below). The buffer must be large enough to hold an entire
-tile of data. Applications should call the routine
-<i>TIFFTileSize</i> to find out the size (in bytes) of a
-tile buffer. The <i>x</i> and <i>y</i> parameters are always
-used by <i>TIFFReadTile</i>. The <i>z</i> parameter is used
-if the image is deeper than 1 slice
-(<i>ImageDepth</i>&gt;1). The <i>sample</i> parameter is
-used only if data are organized in separate planes
-(<i>PlanarConfiguration</i>=2).</p>
-</td>
-</table>
-<a name="NOTES"></a>
-<h2>NOTES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The library attempts to hide bit- and byte-ordering
-differences between the image and the native machine by
-converting data to the native machine order. Bit reversal is
-done if the <i>FillOrder</i> tag is opposite to the native
-machine bit order. 16- and 32-bit samples are automatically
-byte-swapped if the file was written with a byte order
-opposite to the native machine byte order,</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFReadTile</i> returns &minus;1 if it detects an
-error; otherwise the number of bytes in the decoded tile is
-returned.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<b>TIFFError</b>(3TIFF) routine.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFCheckTile</b>(3TIFF),
-<b>TIFFComputeTile</b>(3TIFF), <b>TIFFOpen</b>(3TIFF),
-<b>TIFFReadEncodedTile</b>(3TIFF),
-<b>TIFFReadRawTile</b>(3TIFF), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFSetDirectory.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFSetDirectory.3tiff.html
deleted file mode 100644
index a0e5cfc0a1..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFSetDirectory.3tiff.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:17 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFSetDirectory</title>
-</head>
-<body>
-
-<h1 align=center>TIFFSetDirectory</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFSetDirectory, TIFFSetSubDirectory &minus; set the
-current directory for an open <small>TIFF</small> file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFSetDirectory(TIFF *</b><i>tif</i><b>,
-tdir_t</b> <i>dirnum</i><b>)<br>
-int TIFFSetSubDirectory(TIFF *</b><i>tif</i><b>, uint32</b>
-<i>diroff</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFSetDirectory</i> changes the current directory and
-reads its contents with <i>TIFFReadDirectory</i>. The
-parameter <i>dirnum</i> specifies the subfile/directory as
-an integer number, with the first directory numbered
-zero.</p>
-<!-- INDENTATION -->
-<p><i>TIFFSetSubDirectory</i> acts like
-<i>TIFFSetDirectory</i>, except the directory is specified
-as a file offset instead of an index; this is required for
-accessing subdirectories linked through a <i>SubIFD</i>
-tag.</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>On successful return 1 is returned. Otherwise, 0 is
-returned if <i>dirnum</i> or <i>diroff</i> specifies a
-non-existent directory, or if an error was encountered while
-reading the directory&rsquo;s contents.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<i>TIFFError</i>(3TIFF) routine.</p>
-<!-- INDENTATION -->
-<p><b>%s: Error fetching directory count</b>. An error was
-encountered while reading the &lsquo;&lsquo;directory
-count&rsquo;&rsquo; field.</p>
-<!-- INDENTATION -->
-<p><b>%s: Error fetching directory link</b>. An error was
-encountered while reading the &lsquo;&lsquo;link
-value&rsquo;&rsquo; that points to the next directory in a
-file.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFCurrentDirectory</i>(3TIFF),
-<i>TIFFOpen</i>(3TIFF), <i>TIFFReadDirectory</i>(3TIFF),
-<i>TIFFWriteDirectory</i>(3TIFF), <i>libtiff</i>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFSetField.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFSetField.3tiff.html
deleted file mode 100644
index 2e70225b33..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFSetField.3tiff.html
+++ /dev/null
@@ -1,1362 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:17 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFSetField</title>
-</head>
-<body>
-
-<h1 align=center>TIFFSetField</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFSetField, TIFFVSetField &minus; set the value(s) of a
-tag in a <small>TIFF</small> file open for writing</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFSetField(TIFF *</b><i>tif</i><b>, ttag_t</b>
-<i>tag</i><b>,</b> <i>...</i><b>)</b></p>
-<!-- INDENTATION -->
-<p><b>#include &lt;stdarg.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFVSetField(TIFF *</b><i>tif</i><b>, ttag_t</b>
-<i>tag</i><b>, va_list</b> <i>ap</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFSetField</i> sets the value of a field or
-pseudo-tag in the current directory associated with the open
-<small>TIFF</small> file <i>tif</i>. (A <i>pseudo-tag</i> is
-a parameter that is used to control the operation of the
-<small>TIFF</small> library but whose value is not read or
-written to the underlying file.) To set the value of a field
-the file must have been previously opened for writing with
-<i>TIFFOpen</i>(3TIFF); pseudo-tags can be set whether the
-file was opened for reading or writing. The field is
-identified by <i>tag</i>, one of the values defined in the
-include file <b>tiff.h</b> (see also the table below). The
-actual value is specified using a variable argument list, as
-prescribed by the <i>stdarg</i>(3) interface (or, on some
-machines, the <i>varargs</i>(3) interface.)</p>
-<!-- INDENTATION -->
-<p><i>TIFFVSetField</i> is functionally equivalent to
-<i>TIFFSetField</i> except that it takes a pointer to a
-variable argument list. <i>TIFFVSetField</i> is useful for
-writing routines that are layered on top of the
-functionality provided by <i>TIFFSetField</i>.</p>
-<!-- INDENTATION -->
-<p>The tags understood by <i>libtiff</i>, the number of
-parameter values, and the expected types for the parameter
-values are shown below. The data types are: <i>char*</i> is
-null-terminated string and corresponds to the
-<small>ASCII</small> data type; <i>uint16</i> is an unsigned
-16-bit value; <i>uint32</i> is an unsigned 32-bit value;
-<i>uint16*</i> is an array of unsigned 16-bit values.
-<i>void*</i> is an array of data values of unspecified
-type.</p>
-<!-- INDENTATION -->
-<p>Consult the <small>TIFF</small> specification for
-information on the meaning of each tag.</p></td>
-</table>
-<!-- TABS -->
-
-<p><i>Tag Name Count Types Notes</i></p>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_ARTIST</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_BADFAXLINES</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint32</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_BITSPERSAMPLE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-
-<p>&dagger;</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_CLEANFAXDATA</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_COLORMAP</p>
-</td>
-<td width="8%">
-
-<p>3</p>
-</td>
-<td width="24%">
-
-<p>uint16*</p>
-</td>
-<td width="16%">
-
-<p>1&lt;&lt;BitsPerSample arrays</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_COMPRESSION</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-
-<p>&dagger;</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_CONSECUTIVEBADFAXLINES</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint32</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_COPYRIGHT</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_DATETIME</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_DOCUMENTNAME</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_DOTRANGE</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_EXTRASAMPLES</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="24%">
-
-<p>uint16,uint16*</p>
-</td>
-<td width="16%">
-
-<p>&dagger; count &amp; types array</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_FAXFILLFUNC</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>TIFFFaxFillFunc</p>
-</td>
-<td width="16%">
-
-<p>G3/G4 compression pseudo-tag</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_FAXMODE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>int</p>
-</td>
-<td width="16%">
-
-<p>&dagger; G3/G4 compression pseudo-tag</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_FILLORDER</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-
-<p>&dagger;</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_GROUP3OPTIONS</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint32</p>
-</td>
-<td width="16%">
-
-<p>&dagger;</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_GROUP4OPTIONS</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint32</p>
-</td>
-<td width="16%">
-
-<p>&dagger;</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_HALFTONEHINTS</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_HOSTCOMPUTER</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_ICCPROFILE</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="24%">
-
-<p>uint32,void*</p>
-</td>
-<td width="16%">
-
-<p>count, profile data</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_IMAGEDEPTH</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint32</p>
-</td>
-<td width="16%">
-
-<p>&dagger;</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_IMAGEDESCRIPTION</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_IMAGELENGTH</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint32</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_IMAGEWIDTH</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint32</p>
-</td>
-<td width="16%">
-
-<p>&dagger;</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_INKNAMES</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="24%">
-
-<p>uint16, char*</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_INKSET</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-
-<p>&dagger;</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_JPEGCOLORMODE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>int</p>
-</td>
-<td width="16%">
-
-<p>&dagger; JPEG pseudo-tag</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_JPEGQUALITY</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>int</p>
-</td>
-<td width="16%">
-
-<p>JPEG pseudo-tag</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_JPEGTABLES</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="24%">
-
-<p>uint32*,void*</p>
-</td>
-<td width="16%">
-
-<p>&dagger; count &amp; tables</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_JPEGTABLESMODE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>int</p>
-</td>
-<td width="16%">
-
-<p>&dagger; JPEG pseudo-tag</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_MAKE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_MATTEING</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-
-<p>&dagger;</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_MAXSAMPLEVALUE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_MINSAMPLEVALUE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_MODEL</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_ORIENTATION</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_PAGENAME</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_PAGENUMBER</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_PHOTOMETRIC</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_PHOTOSHOP</p>
-</td>
-<td width="8%">
-
-<p>?</p>
-</td>
-<td width="24%">
-
-<p>uint32,void*</p>
-</td>
-<td width="16%">
-
-<p>count, data</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_PLANARCONFIG</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-
-<p>&dagger;</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_PREDICTOR</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-
-<p>&dagger;</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_PRIMARYCHROMATICITIES</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>float*</p>
-</td>
-<td width="16%">
-
-<p>6-entry array</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_REFERENCEBLACKWHITE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>float*</p>
-</td>
-<td width="16%">
-
-<p>&dagger; 2*SamplesPerPixel array</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_RESOLUTIONUNIT</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_RICHTIFFIPTC</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="24%">
-
-<p>uint32,void*</p>
-</td>
-<td width="16%">
-
-<p>count, data</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_ROWSPERSTRIP</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint32</p>
-</td>
-<td width="16%">
-
-<p>&dagger; must be &gt; 0</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_SAMPLEFORMAT</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-
-<p>&dagger;</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_SAMPLESPERPIXEL</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-
-<p>&dagger; value must be &lt;= 4</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_SMAXSAMPLEVALUE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>double</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_SMINSAMPLEVALUE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>double</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_SOFTWARE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_STONITS</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>double</p>
-</td>
-<td width="16%">
-
-<p>&dagger;</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_SUBFILETYPE</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint32</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_SUBIFD</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="24%">
-
-<p>uint16,uint32*</p>
-</td>
-<td width="16%">
-
-<p>count &amp; offsets array</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_TARGETPRINTER</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>char*</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_THRESHHOLDING</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_TILEDEPTH</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint32</p>
-</td>
-<td width="16%">
-
-<p>&dagger;</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_TILELENGTH</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint32</p>
-</td>
-<td width="16%">
-
-<p>&dagger; must be a multiple of 8</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_TILEWIDTH</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint32</p>
-</td>
-<td width="16%">
-
-<p>&dagger; must be a multiple of 8</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_TRANSFERFUNCTION</p>
-</td>
-<td width="8%">
-
-<p>1 or 3&Dagger; uint16*</p>
-</td>
-<td width="24%"></td>
-<td width="16%">
-
-<p>1&lt;&lt;BitsPerSample entry arrays</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_WHITEPOINT</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>float*</p>
-</td>
-<td width="16%">
-
-<p>2-entry array</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_XMLPACKET</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="24%">
-
-<p>uint32,void*</p>
-</td>
-<td width="16%">
-
-<p>count, data</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_XPOSITION</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>float</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_XRESOLUTION</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>float</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_YCBCRCOEFFICIENTS</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>float*</p>
-</td>
-<td width="16%">
-
-<p>&dagger; 3-entry array</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_YCBCRPOSITIONING</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-
-<p>&dagger;</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_YCBCRSAMPLING</p>
-</td>
-<td width="8%">
-
-<p>2</p>
-</td>
-<td width="24%">
-
-<p>uint16</p>
-</td>
-<td width="16%">
-
-<p>&dagger;</p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_YPOSITION</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>float</p>
-</td>
-<td width="16%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="41%">
-
-<p>TIFFTAG_YRESOLUTION</p>
-</td>
-<td width="8%">
-
-<p>1</p>
-</td>
-<td width="24%">
-
-<p>float</p>
-</td>
-<td width="16%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>&dagger; Tag may not have its values changed once data is
-written.<br>
-&Dagger; If <i>SamplesPerPixel</i> is one, then a single
-array is passed; otherwise three arrays should be
-passed.<br>
-* The contents of this field are quite complex. See <b>The
-ICC Profile Format Specification</b>, Annex B.3
-&quot;Embedding ICC Profiles in TIFF Files&quot; (available
-at http://www.color.org) for an explanation.</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>1 is returned if the operation was successful. Otherwise,
-0 is returned if an error was detected.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<b>TIFFError</b>(3TIFF) routine.</p>
-<!-- INDENTATION -->
-<p><b>%s: Cannot modify tag &quot;%s&quot; while
-writing</b>. Data has already been written to the file, so
-the specified tag&rsquo;s value can not be changed. This
-restriction is applied to all tags that affect the format of
-written data.</p>
-<!-- INDENTATION -->
-<p><b>%d: Bad value for &quot;%s&quot;</b>. An invalid value
-was supplied for the named tag.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFOpen</b>(3TIFF), <b>TIFFGetField</b>(3TIFF),
-<b>TIFFSetDirectory</b>(3TIFF),
-<b>TIFFWriteDirectory</b>(3TIFF),
-<b>TIFFReadDirectory</b>(3TIFF), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFWarning.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFWarning.3tiff.html
deleted file mode 100644
index df17073b57..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFWarning.3tiff.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:17 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFWarning</title>
-</head>
-<body>
-
-<h1 align=center>TIFFWarning</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFWarning, TIFFSetWarningHandler &minus; library
-warning interface</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>void TIFFWarning(const char *</b><i>module</i><b>,
-const char *</b><i>fmt</i><b>,</b> <i>...</i><b>)</b></p>
-<!-- INDENTATION -->
-<p><b>#include &lt;stdargh.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>typedef void (*TIFFWarningHandler)(const char
-*</b><i>module</i><b>, const char *</b><i>fmt</i><b>,
-va_list</b> <i>ap</i><b>);</b></p>
-<!-- INDENTATION -->
-<p><b>TIFFWarningHandler
-TIFFSetWarningHandler(TIFFWarningHandler</b>
-<i>handler</i><b>);</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFWarning</i> invokes the library-wide warning
-handler function to (normally) write a warning message to
-the <b>stderr</b>. The <i>fmt</i> parameter is a
-<i>printf</i>(3S) format string, and any number arguments
-can be supplied. The <i>module</i> parameter is interpreted
-as a string that, if non-zero, should be printed before the
-message; it typically is used to identify the software
-module in which a warning is detected.</p>
-<!-- INDENTATION -->
-<p>Applications that desire to capture control in the event
-of a warning should use <i>TIFFSetWarningHandler</i> to
-override the default warning handler. A <small>NULL</small>
-(0) warning handler function may be installed to suppress
-error messages.</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFSetWarningHandler</i> returns a reference to the
-previous error handling function.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFError</b>(3TIFF), <b>libtiff</b>(3TIFF),
-<b>printf</b>(3)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFWriteDirectory.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFWriteDirectory.3tiff.html
deleted file mode 100644
index 07a443e145..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFWriteDirectory.3tiff.html
+++ /dev/null
@@ -1,176 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:17 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFWriteDirectory</title>
-</head>
-<body>
-
-<h1 align=center>TIFFWriteDirectory</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFWriteDirectory, TIFFRewriteDirectory,
-TIFFCheckpointDirectory &minus; write the current directory
-in an open <small>TIFF</small> file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFWriteDirectory(TIFF *</b><i>tif</i><b>)<br>
-int TIFFRewriteDirectory(TIFF *</b><i>tif</i><b>)<br>
-int TIFFCheckpointDirectory(TIFF *</b><i>tif</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFWriteDirectory</i> will write the contents of the
-current directory to the file and setup to create a new
-subfile in the same file. Applications only need to call
-<i>TIFFWriteDirectory</i> when writing multiple subfiles to
-a single <small>TIFF</small> file. <i>TIFFWriteDirectory</i>
-is automatically called by <i>TIFFClose</i> and
-<i>TIFFFlush</i> to write a modified directory if the file
-is open for writing.</p>
-<!-- INDENTATION -->
-<p>The <i>TIFFRewriteDirectory</i> function operates
-similarly to <i>TIFFWriteDirectory,</i> but can be called
-with directories previously read or written that already
-have an established location in the file. It will rewrite
-the directory, but instead of place it at it&rsquo;s old
-location (as <i>TIFFWriteDirectory</i> would) it will place
-them at the end of the file, correcting the pointer from the
-preceeding directory or file header to point to it&rsquo;s
-new location. This is particularly important in cases where
-the size of the directory and pointed to data has grown, so
-it won&rsquo;t fit in the space available at the old
-location.</p>
-<!-- INDENTATION -->
-<p>The <i>TIFFCheckpointDirectory</i> writes the current
-state of the tiff directory into the file to make what is
-currently in the file readable. Unlike
-<i>TIFFWriteDirectory, TIFFCheckpointDirectory</i> does not
-free up the directory data structures in memory, so they can
-be updated (as strips/tiles are written) and written again.
-Reading such a partial file you will at worst get a tiff
-read error for the first strip/tile encountered that is
-incomplete, but you will at least get all the valid data in
-the file before that. When the file is complete, just use
-<i>TIFFWriteDirectory</i> as usual to finish it off
-cleanly.</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>1 is returned when the contents are successfully written
-to the file. Otherwise, 0 is returned if an error was
-encountered when writing the directory contents.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<i>TIFFError</i>(3TIFF) routine.</p>
-<!-- INDENTATION -->
-<p><b>Error post-encoding before directory write</b>. Before
-writing the contents of the current directory, any pending
-data are flushed. This message indicates that an error
-occurred while doing this.</p>
-<!-- INDENTATION -->
-<p><b>Error flushing data before directory write</b>. Before
-writing the contents of the current directory, any pending
-data are flushed. This message indicates that an error
-occurred while doing this.</p>
-<!-- INDENTATION -->
-<p><b>Cannot write directory, out of space</b>. There was
-not enough space to allocate a temporary area for the
-directory that was to be written.</p>
-<!-- INDENTATION -->
-<p><b>Error writing directory count</b>. A write error
-occurred when writing the count of fields in the
-directory.</p>
-<!-- INDENTATION -->
-<p><b>Error writing directory contents</b>. A write error
-occurred when writing the directory fields.</p>
-<!-- INDENTATION -->
-<p><b>Error writing directory link</b>. A write error
-occurred when writing the link to the next directory.</p>
-<!-- INDENTATION -->
-<p><b>Error writing data for field &quot;%s&quot;</b>. A
-write error occurred when writing indirect data for the
-specified field.</p>
-<!-- INDENTATION -->
-<p><b>Error writing TIFF header</b>. A write error occurred
-when re-writing header at the front of the file.</p>
-<!-- INDENTATION -->
-<p><b>Error fetching directory count</b>. A read error
-occurred when fetching the directory count field for a
-previous directory. This can occur when setting up a link to
-the directory that is being written.</p>
-<!-- INDENTATION -->
-<p><b>Error fetching directory link</b>. A read error
-occurred when fetching the directory link field for a
-previous directory. This can occur when setting up a link to
-the directory that is being written.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFOpen</b>(3TIFF), <b>TIFFError</b>(3TIFF),
-<b>TIFFReadDirectory</b>(3TIFF),
-<b>TIFFSetDirectory</b>(3TIFF), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFWriteEncodedStrip.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFWriteEncodedStrip.3tiff.html
deleted file mode 100644
index 5a45f593a2..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFWriteEncodedStrip.3tiff.html
+++ /dev/null
@@ -1,153 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:17 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFWriteEncodedStrip</title>
-</head>
-<body>
-
-<h1 align=center>TIFFWriteEncodedStrip</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#NOTES">NOTES</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>TIFFWritedEncodedStrip &minus; compress and write a
-strip of data to an open</big> TIFF <big>file</big></p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>#include &lt;tiffio.h&gt;</b></big></p>
-<!-- INDENTATION -->
-<p><big><b>tsize_t TIFFWriteEncodedStrip(TIFF
-*</b><i>tif</i><b>, tstrip_t</b> <i>strip</i><b>,
-tdata_t</b> <i>buf</i><b>, tsize_t</b>
-<i>size</i><b>)</b></big></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>Compress <i>size</i> bytes of raw data from
-<i>buf</i> and write the result to the specified strip;
-replacing any previously written data. Note that the value
-of <i>strip</i> is a &lsquo;&lsquo;raw strip
-number.&rsquo;&rsquo; That is, the caller must take into
-account whether or not the data are organized in separate
-planes (<i>PlanarConfiguration</i>=2).</big></p>
-</td>
-</table>
-<a name="NOTES"></a>
-<h2>NOTES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>The library writes encoded data using the native
-machine byte order. Correctly implemented</big> TIFF
-<big>readers are expected to do any necessary byte-swapping
-to correctly process image data with BitsPerSample greater
-than 8.</big></p>
-<!-- INDENTATION -->
-<p><big>The strip number must be valid according to the
-current settings of the <i>ImageLength</i> and
-<i>RowsPerStrip</i> tags. An image may be dynamically grown
-by increasing the value of <i>ImageLength</i> prior to each
-call to <i>TIFFWriteEncodedStrip</i>.</big></p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>&minus;1 is returned if an error was encountered.
-Otherwise, the value of <i>size</i> is returned.</big></p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>All error messages are directed to the
-<i>TIFFError</i>(3TIFF) routine.</big></p>
-<!-- INDENTATION -->
-<p><big><b>%s: File not open for writing</b>. The file was
-opened for reading, not writing.</big></p>
-<!-- INDENTATION -->
-<p><big><b>Can not write scanlines to a tiled image</b>. The
-image is assumed to be organized in tiles because the
-<i>TileWidth</i> and <i>TileLength</i> tags have been set
-with <i>TIFFSetField</i>(3TIFF).</big></p>
-<!-- INDENTATION -->
-<p><big><b>%s: Must set &quot;ImageWidth&quot; before
-writing data</b>. The image&rsquo;s width has not be set
-before the first write. See <i>TIFFSetField</i>(3TIFF) for
-information on how to do this.</big></p>
-<!-- INDENTATION -->
-<p><big><b>%s: Must set &quot;PlanarConfiguration&quot;
-before writing data</b>. The organization of data has not be
-defined before the first write. See
-<i>TIFFSetField</i>(3TIFF) for information on how to do
-this.</big></p>
-<!-- INDENTATION -->
-<p><big><b>%s: No space for strip arrays&quot;</b>. There
-was not enough space for the arrays that hold strip offsets
-and byte counts.</big></p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFOpen</b>(3TIFF),
-<b>TIFFWriteScanline</b>(3TIFF),
-<b>TIFFWriteRawStrip</b>(3TIFF),
-<b>libtiff</b>(3TIFF)</big></p>
-<!-- INDENTATION -->
-<p><big>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></big></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFWriteEncodedTile.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFWriteEncodedTile.3tiff.html
deleted file mode 100644
index 0e6e1bac88..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFWriteEncodedTile.3tiff.html
+++ /dev/null
@@ -1,147 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:17 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFWriteEncodedTile</title>
-</head>
-<body>
-
-<h1 align=center>TIFFWriteEncodedTile</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#NOTES">NOTES</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>TIFFWritedEncodedTile &minus; compress and write a
-tile of data to an open</big> TIFF <big>file</big></p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>#include &lt;tiffio.h&gt;</b></big></p>
-<!-- INDENTATION -->
-<p><big><b>tsize_t TIFFWriteEncodedTile(TIFF
-*</b><i>tif</i><b>, ttile_t</b> <i>tile</i><b>, tdata_t</b>
-<i>buf</i><b>, tsize_t</b> <i>size</i><b>)</b></big></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>Compress <i>size</i> bytes of raw data from
-<i>buf</i> and <b>append</b> the result to the end of the
-specified tile. Note that the value of <i>tile</i> is a
-&lsquo;&lsquo;raw tile number.&rsquo;&rsquo; That is, the
-caller must take into account whether or not the data are
-organized in separate places (<i>PlanarConfiguration</i>=2).
-<i>TIFFComputeTile</i> automatically does this when
-converting an (x,y,z,sample) coordinate quadruple to a tile
-number.</big></p>
-</td>
-</table>
-<a name="NOTES"></a>
-<h2>NOTES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>The library writes encoded data using the native
-machine byte order. Correctly implemented</big> TIFF
-<big>readers are expected to do any necessary byte-swapping
-to correctly process image data with BitsPerSample greater
-than 8.</big></p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>&minus;1 is returned if an error was encountered.
-Otherwise, the value of <i>size</i> is returned.</big></p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>All error messages are directed to the
-<b>TIFFError</b>(3TIFF) routine.</big></p>
-<!-- INDENTATION -->
-<p><big><b>%s: File not open for writing</b>. The file was
-opened for reading, not writing.</big></p>
-<!-- INDENTATION -->
-<p><big><b>Can not write tiles to a stripped image</b>. The
-image is assumed to be organized in strips because neither
-of the <i>TileWidth</i> or <i>TileLength</i> tags have been
-set with <b>TIFFSetField</b>(3TIFF).</big></p>
-<!-- INDENTATION -->
-<p><big><b>%s: Must set &quot;ImageWidth&quot; before
-writing data</b>. The image&rsquo;s width has not be set
-before the first write. See <b>TIFFSetField</b>(3TIFF) for
-information on how to do this.</big></p>
-<!-- INDENTATION -->
-<p><big><b>%s: Must set &quot;PlanarConfiguration&quot;
-before writing data</b>. The organization of data has not be
-defined before the first write. See
-<b>TIFFSetField</b>(3TIFF) for information on how to do
-this.</big></p>
-<!-- INDENTATION -->
-<p><big><b>%s: No space for tile arrays&quot;</b>. There was
-not enough space for the arrays that hold tile offsets and
-byte counts.</big></p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFOpen</b>(3TIFF), <b>TIFFWriteTile</b>(3TIFF),
-<b>TIFFWriteRawTile</b>(3TIFF),
-<b>libtiff</b>(3TIFF)</big></p>
-<!-- INDENTATION -->
-<p><big>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></big></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFWriteRawStrip.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFWriteRawStrip.3tiff.html
deleted file mode 100644
index 95b48570ed..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFWriteRawStrip.3tiff.html
+++ /dev/null
@@ -1,144 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:17 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFWriteRawstrip</title>
-</head>
-<body>
-
-<h1 align=center>TIFFWriteRawstrip</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#NOTES">NOTES</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFWriteRawStrip &minus; write a strip of raw data to an
-open <small>TIFF</small> file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>tsize_t TIFFWriteRawStrip(TIFF *</b><i>tif</i><b>,
-tstrip_t</b> <i>strip</i><b>, tdata_t</b> <i>buf</i><b>,
-tsize_t</b> <i>size</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Append <i>size</i> bytes of raw data to the specified
-strip.</p>
-</td>
-</table>
-<a name="NOTES"></a>
-<h2>NOTES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The strip number must be valid according to the current
-settings of the <i>ImageLength</i> and <i>RowsPerStrip</i>
-tags. An image may be dynamically grown by increasing the
-value of <i>ImageLength</i> prior to each call to
-<i>TIFFWriteRawStrip</i>.</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>&minus;1 is returned if an error occurred. Otherwise, the
-value of <i>size</i> is returned.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<b>TIFFError</b>(3TIFF) routine.</p>
-<!-- INDENTATION -->
-<p><b>%s: File not open for writing</b>. The file was opened
-for reading, not writing.</p>
-<!-- INDENTATION -->
-<p><b>Can not write scanlines to a tiled image</b>. The
-image is assumed to be organized in tiles because the
-<i>TileWidth</i> and <i>TileLength</i> tags have been set
-with <b>TIFFSetField</b>(3TIFF).</p>
-<!-- INDENTATION -->
-<p><b>%s: Must set &quot;ImageWidth&quot; before writing
-data</b>. The image&rsquo;s width has not be set before the
-first write. See <b>TIFFSetField</b>(3TIFF) for information
-on how to do this.</p>
-<!-- INDENTATION -->
-<p><b>%s: Must set &quot;PlanarConfiguration&quot; before
-writing data</b>. The organization of data has not be
-defined before the first write. See
-<b>TIFFSetField</b>(3TIFF) for information on how to do
-this.</p>
-<!-- INDENTATION -->
-<p><b>%s: No space for strip arrays&quot;</b>. There was not
-enough space for the arrays that hold strip offsets and byte
-counts.</p>
-<!-- INDENTATION -->
-<p><b>%s: Strip %d out of range, max %d</b>. The specified
-strip is not a valid strip according to the currently
-specified image dimensions.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFOpen</b>(3TIFF),
-<b>TIFFWriteEncodedStrip</b>(3TIFF),
-<b>TIFFWriteScanline</b>(3TIFF), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFWriteRawTile.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFWriteRawTile.3tiff.html
deleted file mode 100644
index 3d18ed18c3..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFWriteRawTile.3tiff.html
+++ /dev/null
@@ -1,128 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:18 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFWriteRawtile</title>
-</head>
-<body>
-
-<h1 align=center>TIFFWriteRawtile</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFWriteRawTile &minus; write a tile of raw data to an
-open <small>TIFF</small> file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>tsize_t TIFFWriteRawTile(TIFF *</b><i>tif</i><b>,
-ttile_t</b> <i>tile</i><b>, tdata_t</b> <i>buf</i><b>,
-tsize_t</b> <i>size</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Append <i>size</i> bytes of raw data to the specified
-tile.</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>&minus;1 is returned if an error occurred. Otherwise, the
-value of <i>size</i> is returned.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<b>TIFFError</b>(3TIFF) routine.</p>
-<!-- INDENTATION -->
-<p><b>%s: File not open for writing</b>. The file was opened
-for reading, not writing.</p>
-<!-- INDENTATION -->
-<p><b>Can not write tiles to a stripped image</b>. The image
-is assumed to be organized in strips because neither of the
-<i>TileWidth</i> or <i>TileLength</i> tags have been set
-with <b>TIFFSetField</b>(3TIFF).</p>
-<!-- INDENTATION -->
-<p><b>%s: Must set &quot;ImageWidth&quot; before writing
-data</b>. The image&rsquo;s width has not be set before the
-first write. See <b>TIFFSetField</b>(3TIFF) for information
-on how to do this.</p>
-<!-- INDENTATION -->
-<p><b>%s: Must set &quot;PlanarConfiguration&quot; before
-writing data</b>. The organization of data has not be
-defined before the first write. See
-<b>TIFFSetField</b>(3TIFF) for information on how to do
-this.</p>
-<!-- INDENTATION -->
-<p><b>%s: No space for tile arrays&quot;</b>. There was not
-enough space for the arrays that hold tile offsets and byte
-counts.</p>
-<!-- INDENTATION -->
-<p><b>%s: Specified tile %d out of range, max %d</b>. The
-specified tile is not valid according to the currently
-specified image dimensions.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFOpen</b>(3TIFF),
-<b>TIFFWriteEncodedTile</b>(3TIFF),
-<b>TIFFWriteScanline</b>(3TIFF), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFWriteScanline.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFWriteScanline.3tiff.html
deleted file mode 100644
index bb9323d2e3..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFWriteScanline.3tiff.html
+++ /dev/null
@@ -1,206 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:18 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFWriteScanline</title>
-</head>
-<body>
-
-<h1 align=center>TIFFWriteScanline</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#NOTES">NOTES</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#BUGS">BUGS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFWriteScanline &minus; write a scanline to an open
-<small>TIFF</small> file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFWriteScanline(TIFF *</b><i>tif</i><b>,
-tdata_t</b> <i>buf</i><b>, uint32</b> <i>row</i><b>,
-tsample_t</b> <i>sample</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Write data to a file at the specified row. The
-<i>sample</i> parameter is used only if data are organized
-in separate planes (<i>PlanarConfiguration</i>=2). The data
-are assumed to be uncompressed and in the native bit- and
-byte-order of the host machine. The data written to the file
-is compressed according to the compression scheme of the
-current <small>TIFF</small> directory (see further below).
-If the current scanline is past the end of the current
-subfile, the <i>ImageLength</i> field is automatically
-increased to include the scanline (except for
-<i>PlanarConfiguration</i>=2, where the <i>ImageLength</i>
-cannot be changed once the first data are written). If the
-<i>ImageLength</i> is increased, the <i>StripOffsets</i> and
-<i>StripByteCounts</i> fields are similarly enlarged to
-reflect data written past the previous end of image.</p>
-</td>
-</table>
-<a name="NOTES"></a>
-<h2>NOTES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The library writes encoded data using the native machine
-byte order. Correctly implemented <small>TIFF</small>
-readers are expected to do any necessary byte-swapping to
-correctly process image data with BitsPerSample greater than
-8. The library attempts to hide bit-ordering differences
-between the image and the native machine by converting data
-from the native machine order.</p>
-<!-- INDENTATION -->
-<p>In C++ the <i>sample</i> parameter defaults to 0.</p>
-<!-- INDENTATION -->
-<p>Once data are written to a file for the current
-directory, the values of certain tags may not be altered;
-see <i>TIFFSetField</i>(3TIFF) for more information.</p>
-<!-- INDENTATION -->
-<p>It is not possible to write scanlines to a file that uses
-a tiled organization. The routine <i>TIFFIsTiled</i> can be
-used to determine if the file is organized as tiles or
-strips.</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFWriteScanline</i> returns &minus;1 if it
-immediately detects an error and 1 for a successful
-write.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<i>TIFFError</i>(3TIFF) routine.</p>
-<!-- INDENTATION -->
-<p><b>%s: File not open for writing .</b> The file was
-opened for reading, not writing.</p>
-<!-- INDENTATION -->
-<p><b>Can not write scanlines to a tiled image</b>. An
-attempt was made to write a scanline to a tiled image. The
-image is assumed to be organized in tiles because the
-<i>TileWidth</i> and <i>TileLength</i> tags have been set
-with <i>TIFFSetField</i>(3TIFF).</p>
-<!-- INDENTATION -->
-<p><b>Compression algorithm does not support random
-access</b>. Data was written in a non-sequential order to a
-file that uses a compression algorithm and that has
-<i>RowsPerStrip</i> greater than one. That is, data in the
-image is to be stored in a compressed form, and with
-multiple rows packed into a strip. In this case, the library
-does not support random access to the data. The data should
-either be written as entire strips, sequentially by rows, or
-the value of <i>RowsPerStrip</i> should be set to one.</p>
-<!-- INDENTATION -->
-<p><b>%s: Must set &quot;ImageWidth&quot; before writing
-data</b>. The image&rsquo;s width has not be set before the
-first write. See <b>TIFFSetField</b>(3TIFF) for information
-on how to do this.</p>
-<!-- INDENTATION -->
-<p><b>%s: Must set &quot;PlanarConfiguration&quot; before
-writing data</b>. The organization of data has not be
-defined before the first write. See
-<b>TIFFSetField</b>(3TIFF) for information on how to do
-this.</p>
-<!-- INDENTATION -->
-<p><b>Can not change &quot;ImageLength&quot; when using
-separate planes</b>. Separate image planes are being used
-(<i>PlanarConfiguration</i>=2), but the number of rows has
-not been specified before the first write. The library
-supports the dynamic growth of an image only when data are
-organized in a contiguous manner
-(<i>PlanarConfiguration</i>=1).</p>
-<!-- INDENTATION -->
-<p><b>%d: Sample out of range, max %d</b>. The <i>sample</i>
-parameter was greater than the value of the SamplesPerPixel
-tag.</p>
-<!-- INDENTATION -->
-<p><b>%s: No space for strip arrays .</b> There was not
-enough space for the arrays that hold strip offsets and byte
-counts.</p>
-</td>
-</table>
-<a name="BUGS"></a>
-<h2>BUGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Writing subsampled YCbCR data does not work correctly
-because, for <i>PlanarConfiguration</i>=2 the size of a
-scanline is not calculated on a per-sample basis, and for
-<i>PlanarConfiguration</i>=1 the library does not pack the
-block-interleaved samples.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFOpen</b>(3TIFF),
-<b>TIFFWriteEncodedStrip</b>(3TIFF),
-<b>TIFFWriteRawStrip</b>(3TIFF), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFWriteTile.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFWriteTile.3tiff.html
deleted file mode 100644
index d6bc5d8aed..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFWriteTile.3tiff.html
+++ /dev/null
@@ -1,115 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:18 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFWriteTile</title>
-</head>
-<body>
-
-<h1 align=center>TIFFWriteTile</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#RETURN VALUES">RETURN VALUES</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFWriteTile &minus; encode and write a tile of data to
-an open <small>TIFF</small> file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>tsize_t TIFFWriteTile(TIFF *</b><i>tif</i><b>,
-tdata_t</b> <i>buf</i><b>, uint32</b> <i>x</i><b>,
-uint32</b> <i>y</i><b>, uint32</b> <i>z</i><b>,
-tsample_t</b> <i>sample</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Write the data for the tile <i>containing</i> the
-specified coordinates. The data in <i>buf</i> are is
-(potentially) compressed, and written to the indicated file,
-normally being appended to the end of the file. The buffer
-must be contain an entire tile of data. Applications should
-call the routine <i>TIFFTileSize</i> to find out the size
-(in bytes) of a tile buffer. The <i>x</i> and <i>y</i>
-parameters are always used by <i>TIFFWriteTile</i>. The
-<i>z</i> parameter is used if the image is deeper than 1
-slice (<i>ImageDepth</i>&gt;1). The <i>sample</i> parameter
-is used only if data are organized in separate planes
-(<i>PlanarConfiguration</i>=2).</p>
-</td>
-</table>
-<a name="RETURN VALUES"></a>
-<h2>RETURN VALUES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFWriteTile</i> returns &minus;1 if it detects an
-error; otherwise the number of bytes in the tile is
-returned.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>All error messages are directed to the
-<b>TIFFError</b>(3TIFF) routine.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFCheckTile</b>(3TIFF),
-<b>TIFFComputeTile</b>(3TIFF), <b>TIFFOpen</b>(3TIFF),
-<b>TIFFReadTile</b>(3TIFF), <b>TIFFWriteScanline</b>(3TIFF),
-<b>TIFFWriteEncodedTile</b>(3TIFF),
-<b>TIFFWriteRawTile</b>(3TIFF), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFbuffer.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFbuffer.3tiff.html
deleted file mode 100644
index 3d610ca539..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFbuffer.3tiff.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:14 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFBUFFER</title>
-</head>
-<body>
-
-<h1 align=center>TIFFBUFFER</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFReadBufferSetup, TIFFWriteBufferSetup &minus; I/O
-buffering control routines</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<pre><b>#include &lt;tiffio.h&gt;
-
-int TIFFReadBufferSetup(TIFF *</b><i>tif</i><b>, tdata_t</b> <i>buffer</i><b>, tsize_t</b> <i>size</i><b>);
-int TIFFWriteBufferSetup(TIFF *</b><i>tif</i><b>, tdata_t</b> <i>buffer</i><b>, tsize_t</b> <i>size</i><b>);
-</b></pre>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The following routines are provided for client-control of
-the I/O buffers used by the library. Applications need never
-use these routines; they are provided only for
-&lsquo;&lsquo;intelligent clients&rsquo;&rsquo; that wish to
-optimize memory usage and/or eliminate potential copy
-operations that can occur when working with images that have
-data stored without compression.</p>
-<!-- INDENTATION -->
-<p><i>TIFFReadBufferSetup</i> sets up the data buffer used
-to read raw (encoded) data from a file. If the specified
-pointer is <small>NULL</small> (zero), then a buffer of the
-appropriate size is allocated. Otherwise the caller must
-guarantee that the buffer is large enough to hold any
-individual strip of raw data. <i>TIFFReadBufferSetup</i>
-returns a non-zero value if the setup was successful and
-zero otherwise.</p>
-<!-- INDENTATION -->
-<p><i>TIFFWriteBufferSetup</i> sets up the data buffer used
-to write raw (encoded) data to a file. If the specified
-<i>size</i> is &minus;1 then the buffer size is selected to
-hold a complete tile or strip, or at least 8 kilobytes,
-whichever is greater. If the specified <i>buffer</i> is
-<small>NULL</small> (zero), then a buffer of the appropriate
-size is dynamically allocated. <i>TIFFWriteBufferSetup</i>
-returns a non-zero value if the setup was successful and
-zero otherwise.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>%s: No space for data buffer at scanline %ld</b>.
-<i>TIFFReadBufferSetup</i> was unable to dynamically
-allocate space for a data buffer.</p>
-<!-- INDENTATION -->
-<p><b>%s: No space for output buffer</b>.
-<i>TIFFWriteBufferSetup</i> was unable to dynamically
-allocate space for a data buffer.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFcodec.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFcodec.3tiff.html
deleted file mode 100644
index 8567b30b4b..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFcodec.3tiff.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:15 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>CODEC</title>
-</head>
-<body>
-
-<h1 align=center>CODEC</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFFindCODEC, TIFFRegisterCODEC, TIFFUnRegisterCODEC,
-TIFFIsCODECConfigured &minus; codec-related utility
-routines</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>const TIFFCodec* TIFFFindCODEC(uint16</b>
-<i>scheme</i><b>);<br>
-TIFFCodec* TIFFRegisterCODEC(uint16</b> <i>scheme</i><b>,
-const char *</b><i>method</i><b>, TIFFInitMethod</b>
-<i>init</i><b>);<br>
-void TIFFUnRegisterCODEC(TIFFCodec
-*</b><i>codec</i><b>);<br>
-int TIFFIsCODECConfigured(uint16</b>
-<i>scheme</i><b>);</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>libtiff</i> supports a variety of compression schemes
-implemented by software <i>codecs</i>. Each codec adheres to
-a modular interface that provides for the decoding and
-encoding of image data; as well as some other methods for
-initialization, setup, cleanup, and the control of default
-strip and tile sizes. Codecs are identified by the
-associated value of the <small>TIFF</small>
-<i>Compression</i> tag; e.g. 5 for <small>LZW</small>
-compression.</p>
-<!-- INDENTATION -->
-<p>The <i>TIFFRegisterCODEC</i> routine can be used to
-augment or override the set of codecs available to an
-application. If the specified <i>scheme</i> already has a
-registered codec then it is <i>overridden</i> and any images
-with data encoded with this compression scheme will be
-decoded using the supplied coded.</p>
-<!-- INDENTATION -->
-<p><i>TIFFIsCODECConfigured</i> returns 1 if the codec is
-configured and working. Otherwise 0 will be returned.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>No space to register compression scheme %s</b>.
-<i>TIFFRegisterCODEC</i> was unable to allocate memory for
-the data structures needed to register a codec.</p>
-<!-- INDENTATION -->
-<p><b>Cannot remove compression scheme %s; not
-registered</b>. <i>TIFFUnRegisterCODEC</i> did not locate
-the specified codec in the table of registered compression
-schemes.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFcolor.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFcolor.3tiff.html
deleted file mode 100644
index 7e4eea51c7..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFcolor.3tiff.html
+++ /dev/null
@@ -1,975 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:15 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>COLOR</title>
-</head>
-<body>
-
-<h1 align=center>COLOR</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFYCbCrToRGBInit, TIFFYCbCrtoRGB, TIFFCIELabToRGBInit,
-TIFFCIELabToXYZ, TIFFXYZToRGB &minus; color conversion
-routines.</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFYCbCrToRGBInit(TIFFYCbCrToRGB
-*</b><i>ycbcr</i><b>, float *</b><i>luma</i><b>, float
-*</b><i>refBlackWhite&quot;</i><b>);&quot;<br>
-void TIFFYCbCrtoRGB(TIFFYCbCrToRGB *</b><i>ycbcr</i><b>,
-uint32</b> <i>Y</i><b>, int32</b> <i>Cb</i><b>, int32</b>
-<i>Cr</i><b>, uint32 *</b><i>R</i><b>, uint32
-*</b><i>G</i><b>, uint32 *</b><i>B</i> <b>);</b></p>
-<!-- INDENTATION -->
-<p><b>int TIFFCIELabToRGBInit(TIFFCIELabToRGB
-*</b><i>cielab</i><b>, TIFFDisplay *</b><i>display</i><b>,
-float *</b><i>refWhite</i><b>);<br>
-void TIFFCIELabToXYZ(TIFFCIELabToRGB *</b><i>cielab</i><b>,
-uint32</b> <i>L</i><b>, int32</b> <i>a</i><b>, int32</b>
-<i>b</i><b>, float *</b><i>X</i><b>, float *</b><i>Y</i><b>,
-float *</b><i>Z</i><b>);<br>
-void TIFFXYZToRGB(TIFFCIELabToRGB *</b><i>cielab</i><b>,
-float</b> <i>X</i><b>, float</b> <i>Y</i><b>, float</b>
-<i>Z&quot;</i><b>,</b><i>uint32</i><b>*&quot;</b><i>R</i><b>,
-uint32 *</b><i>G</i><b>, uint32 *</b><i>B</i><b>);</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFF supports several color spaces for images stored in
-that format. There is usually a problem of application to
-handle the data properly and convert between different
-colorspaces for displaying and printing purposes. To
-simplify this task libtiff implements several color
-conversion routines itself. In particular, these routines
-used in <b>TIFFRGBAImage(3TIFF)</b> interface.</p>
-<!-- INDENTATION -->
-<p><b>TIFFYCbCrToRGBInit()</b> used to initialize
-<i>YCbCr</i> to <i>RGB</i> conversion state. Allocating and
-freeing of the <i>ycbcr</i> structure belongs to programmer.
-<i>TIFFYCbCrToRGB</i> defined in <b>tiffio.h</b> as</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>typedef struct { /* YCbCr-&gt;RGB support */
- TIFFRGBValue* clamptab; /* range clamping table */
-</pre>
-</td>
-</table>
-<!-- TABS -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-
-<p>int*</p>
-<td width="28%"></td>
-<td width="-3%"></td>
-<td width="12%"></td>
-<td width="6%">
-
-<p>Cr_r_tab;<br>
-int*</p>
-</td>
-<td width="56%">
-</td>
-<tr valign="top" align="left">
-<td width="28%"></td>
-<td width="-3%"></td>
-<td width="12%"></td>
-<td width="6%">
-
-<p>Cb_b_tab;<br>
-int32*</p>
-</td>
-<td width="56%">
-</td>
-<tr valign="top" align="left">
-<td width="28%"></td>
-<td width="-3%"></td>
-<td width="12%"></td>
-<td width="6%">
-
-<p>Cr_g_tab;<br>
-int32*</p>
-</td>
-<td width="56%">
-</td>
-<tr valign="top" align="left">
-<td width="28%"></td>
-<td width="-3%"></td>
-<td width="12%"></td>
-<td width="6%">
-
-<p>Cb_g_tab;</p>
-</td>
-<td width="56%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p>int32* Y_tab;<br>
-} TIFFYCbCrToRGB;</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>luma</i> is a float array of three values representing
-proportions of the red, green and blue in luminance, Y (see
-section 21 of the TIFF 6.0 specification, where the YCbCr
-images discussed). <i>TIFFTAG_YCBCRCOEFFICIENTS</i> holds
-that values in TIFF file. <i>refBlackWhite</i> is a float
-array of 6 values which specifies a pair of headroom and
-footroom image data values (codes) for each image component
-(see section 20 of the TIFF 6.0 specification where the
-colorinmetry fields discussed).
-<i>TIFFTAG_REFERENCEBLACKWHITE</i> is responsible for
-storing these values in TIFF file. Following code snippet
-should helps to understand the the technique:</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>float *luma, *refBlackWhite;
-uint16 hs, vs;
-
-/* Initialize structures */
-ycbcr = (TIFFYCbCrToRGB*)
-</pre>
-</td>
-</table>
-<!-- TABS -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>_TIFFmalloc(TIFFroundup(sizeof(TIFFYCbCrToRGB),
-sizeof(long))</p>
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>+ 4*256*sizeof(TIFFRGBValue)</p>
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>+ 2*256*sizeof(int)</p>
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>+ 3*256*sizeof(int32));</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p>if (ycbcr == NULL) {<br>
-TIFFError(&quot;YCbCr-&gt;RGB&quot;,</p></td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="4" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="6%">
-</td>
-<td width="6%">
-
-<p>&quot;No space for YCbCr-&gt;RGB conversion
-state&quot;);</p>
-</td>
-<td width="62%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p>exit(0);<br>
-}</p>
-<!-- INDENTATION -->
-<p>TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRCOEFFICIENTS,
-&amp;luma);<br>
-TIFFGetFieldDefaulted(tif, TIFFTAG_REFERENCEBLACKWHITE,
-&amp;refBlackWhite);<br>
-if (TIFFYCbCrToRGBInit(ycbcr, luma, refBlackWhite) &lt;
-0)</p></td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>exit(0);</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p>/* Start conversion */<br>
-uint32 r, g, b;<br>
-uint32 Y;<br>
-int32 Cb, Cr;</p>
-<!-- INDENTATION -->
-<p>for each pixel in image</p></td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>TIFFYCbCrtoRGB(img-&gt;ycbcr, Y, Cb, Cr, &amp;r, &amp;g,
-&amp;b);</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p>/* Free state structure */<br>
-_TIFFfree(ycbcr);</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFCIELabToRGBInit()</b> initializes the <i>CIE
-L*a*b* 1976</i> to <i>RGB</i> conversion state.
-<b>TIFFCIELabToRGB</b> defined as</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>#define CIELABTORGB_TABLE_RANGE 1500
-
-</pre>
-</td>
-</table>
-<!-- TABS -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="9" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="6%">
-
-<p>typedef struct {</p>
-</td>
-<td width="6%"></td>
-<td width="6%"></td>
-<td width="6%"></td>
-<td width="6%">
-</td>
-<td width="6%">
-
-<p>/* CIE Lab 1976-&gt;RGB support */</p>
-</td>
-<td width="6%"></td>
-<td width="37%">
-</td>
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="6%">
-</td>
-<td width="6%">
-
-<p>int</p>
-</td>
-<td width="6%">
-
-<p>range;</p>
-</td>
-<td width="6%"></td>
-<td width="6%">
-</td>
-<td width="6%">
-
-<p>/* Size of conversion table */</p>
-</td>
-<td width="6%"></td>
-<td width="37%">
-</td>
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="6%">
-</td>
-<td width="6%">
-
-<p>float</p>
-</td>
-<td width="6%"></td>
-<td width="6%">
-
-<p>rstep, gstep, bstep;</p>
-</td>
-<td width="6%"></td>
-<td width="6%"></td>
-<td width="6%"></td>
-<td width="37%">
-</td>
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="6%">
-</td>
-<td width="6%">
-
-<p>float</p>
-</td>
-<td width="6%"></td>
-<td width="6%">
-
-<p>X0, Y0, Z0;</p>
-</td>
-<td width="6%"></td>
-<td width="6%"></td>
-<td width="6%">
-
-<p>/* Reference white point */</p>
-</td>
-<td width="37%">
-</td>
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="6%"></td>
-<td width="6%">
-
-<p>TIFFDisplay display;</p>
-</td>
-<td width="6%"></td>
-<td width="6%"></td>
-<td width="6%"></td>
-<td width="6%"></td>
-<td width="6%"></td>
-<td width="37%">
-</td>
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="6%">
-</td>
-<td width="6%">
-
-<p>float</p>
-</td>
-<td width="6%"></td>
-<td width="6%">
-
-<p>Yr2r[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yr
-to r */</p>
-</td>
-<td width="6%"></td>
-<td width="6%"></td>
-<td width="6%"></td>
-<td width="37%">
-</td>
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="6%">
-</td>
-<td width="6%">
-
-<p>float</p>
-</td>
-<td width="6%"></td>
-<td width="6%">
-
-<p>Yg2g[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yg
-to g */</p>
-</td>
-<td width="6%"></td>
-<td width="6%"></td>
-<td width="6%"></td>
-<td width="37%">
-</td>
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="6%">
-</td>
-<td width="6%">
-
-<p>float</p>
-</td>
-<td width="6%"></td>
-<td width="6%">
-
-<p>Yb2b[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yb
-to b */</p>
-</td>
-<td width="6%"></td>
-<td width="6%"></td>
-<td width="6%"></td>
-<td width="37%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p>} TIFFCIELabToRGB;</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>display</i> is a display device description, declared
-as</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>typedef struct {
-</pre>
-</td>
-</table>
-<!-- TABS -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>float d_mat[3][3]; /* XYZ -&gt; luminance matrix */</p>
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>float d_YCR; /* Light o/p for reference white */</p>
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>float d_YCG;</p>
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>float d_YCB;</p>
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>uint32 d_Vrwr; /* Pixel values for ref. white */</p>
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>uint32 d_Vrwg;</p>
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>uint32 d_Vrwb;</p>
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>float d_Y0R; /* Residual light for black pixel */</p>
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>float d_Y0G;</p>
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>float d_Y0B;</p>
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>float d_gammaR; /* Gamma values for the three guns
-*/</p>
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>float d_gammaG;</p>
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>float d_gammaB;</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p>} TIFFDisplay;</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>For example, the one can use sRGB device, which has the
-following parameters:</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>TIFFDisplay display_sRGB = {
-</pre>
-</td>
-</table>
-<!-- TABS -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="0%"></td>
-<td width="6%">
-
-<p>{ /* XYZ -&gt; luminance matrix */</p>
-</td>
-<td width="6%"></td>
-<td width="62%">
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="0%"></td>
-<td width="6%">
-</td>
-<td width="6%">
-
-<p>{ 3.2410F, -1.5374F, -0.4986F },</p>
-</td>
-<td width="62%">
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="0%"></td>
-<td width="6%">
-</td>
-<td width="6%">
-
-<p>{ -0.9692F, 1.8760F, 0.0416F },</p>
-</td>
-<td width="62%">
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="0%"></td>
-<td width="6%">
-</td>
-<td width="6%">
-
-<p>{ 0.0556F, -0.2040F, 1.0570F }</p>
-</td>
-<td width="62%">
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="0%"></td>
-<td width="6%">
-
-<p>},</p>
-</td>
-<td width="6%">
-</td>
-<td width="62%">
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="0%"></td>
-<td width="6%">
-
-<p>100.0F, 100.0F, 100.0F, /* Light o/p for reference white
-*/</p>
-</td>
-<td width="6%"></td>
-<td width="62%">
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="0%"></td>
-<td width="6%">
-
-<p>255, 255, 255, /* Pixel values for ref. white */</p>
-</td>
-<td width="6%"></td>
-<td width="62%">
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="0%"></td>
-<td width="6%">
-
-<p>1.0F, 1.0F, 1.0F, /* Residual light o/p for black pixel
-*/</p>
-</td>
-<td width="6%"></td>
-<td width="62%">
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="0%"></td>
-<td width="6%">
-
-<p>2.4F, 2.4F, 2.4F, /* Gamma values for the three guns
-*/</p>
-</td>
-<td width="6%"></td>
-<td width="62%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p>};</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>refWhite</i> is a color temperature of the reference
-white. The <i>TIFFTAG_WHITEPOINT</i> contains the
-chromaticity of the white point of the image from where the
-reference white can be calculated using following
-formulae:</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p>refWhite_Y = 100.0<br>
-refWhite_X = whitePoint_x / whitePoint_y * refWhite_Y<br>
-refWhite_Z = (1.0 - whitePoint_x - whitePoint_y) /
-whitePoint_y * refWhite_X</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The conversion itself performed in two steps: at the
-first one we will convert <i>CIE L*a*b* 1976</i> to <i>CIE
-XYZ</i> using <b>TIFFCIELabToXYZ()</b> routine, and at the
-second step we will convert <i>CIE XYZ</i> to <i>RGB</i>
-using <b>TIFFXYZToRGB().</b> Look at the code sample
-below:</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>float *whitePoint;
-float refWhite[3];
-
-/* Initialize structures */
-img-&gt;cielab = (TIFFCIELabToRGB *)
-</pre>
-</td>
-</table>
-<!-- TABS -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>_TIFFmalloc(sizeof(TIFFCIELabToRGB));</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p>if (!cielab) {</p></td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="0%"></td>
-<td width="6%">
-
-<p>TIFFError(&quot;CIE L*a*b*-&gt;RGB&quot;,</p>
-</td>
-<td width="6%"></td>
-<td width="62%">
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="0%"></td>
-<td width="6%">
-</td>
-<td width="6%">
-
-<p>&quot;No space for CIE L*a*b*-&gt;RGB conversion
-state.&quot;);</p>
-</td>
-<td width="62%">
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="0%"></td>
-<td width="6%">
-
-<p>exit(0);</p>
-</td>
-<td width="6%"></td>
-<td width="62%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p>}</p>
-<!-- INDENTATION -->
-<p>TIFFGetFieldDefaulted(tif, TIFFTAG_WHITEPOINT,
-&amp;whitePoint);<br>
-refWhite[1] = 100.0F;<br>
-refWhite[0] = whitePoint[0] / whitePoint[1] *
-refWhite[1];<br>
-refWhite[2] = (1.0F - whitePoint[0] -
-whitePoint[1])</p></td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>/ whitePoint[1] * refWhite[1];</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p>if (TIFFCIELabToRGBInit(cielab, &amp;display_sRGB,
-refWhite) &lt; 0) {</p></td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="0%"></td>
-<td width="6%">
-
-<p>TIFFError(&quot;CIE L*a*b*-&gt;RGB&quot;,</p>
-</td>
-<td width="6%"></td>
-<td width="62%">
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="0%"></td>
-<td width="6%">
-</td>
-<td width="6%">
-
-<p>&quot;Failed to initialize CIE L*a*b*-&gt;RGB conversion
-state.&quot;);</p>
-</td>
-<td width="62%">
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="0%"></td>
-<td width="6%">
-
-<p>_TIFFfree(cielab);</p>
-</td>
-<td width="6%"></td>
-<td width="62%">
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="0%"></td>
-<td width="6%">
-
-<p>exit(0);</p>
-</td>
-<td width="6%"></td>
-<td width="62%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p>}</p>
-<!-- INDENTATION -->
-<p>/* Now we can start to convert */<br>
-uint32 r, g, b;<br>
-uint32 L;<br>
-int32 a, b;<br>
-float X, Y, Z;</p>
-<!-- INDENTATION -->
-<p>for each pixel in image</p></td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>TIFFCIELabToXYZ(cielab, L, a, b, &amp;X, &amp;Y,
-&amp;Z);</p>
-</td>
-<tr valign="top" align="left">
-<td width="24%"></td>
-<td width="75%">
-
-<p>TIFFXYZToRGB(cielab, X, Y, Z, &amp;r, &amp;g,
-&amp;b);</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p>/* Don&rsquo;t forget to free the state structure */<br>
-_TIFFfree(cielab);</p></td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFRGBAImage</b>(3TIFF) <b>libtiff</b>(3TIFF),</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFmemory.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFmemory.3tiff.html
deleted file mode 100644
index 746b5ec269..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFmemory.3tiff.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:15 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>MEMORY</title>
-</head>
-<body>
-
-<h1 align=center>MEMORY</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>_TIFFmalloc, _TIFFrealloc, _TIFFfree, _TIFFmemset,
-_TIFFmemcpy, _TIFFmemcmp, &minus; memory management-related
-functions for use with <small>TIFF</small> files</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>tdata_t _TIFFmalloc(tsize_t</b> <i>size</i><b>);<br>
-tdata_t _TIFFrealloc(tdata_t</b> <i>buffer</i><b>,
-tsize_t</b> <i>size</i><b>);<br>
-void _TIFFfree(tdata_t</b> <i>buffer</i><b>);<br>
-void _TIFFmemset(tdata_t</b> <i>s</i><b>, int</b>
-<i>c</i><b>, tsize_t</b> <i>n</i><b>);<br>
-void _TIFFmemcpy(tdata_t</b> <i>dest</i><b>, const
-tdata_t</b> <i>src</i><b>, tsize_t</b> <i>n</i><b>);<br>
-int _TIFFmemcmp(const tdata_t</b> <i>s1</i><b>, const
-tdata_t</b> <i>s2</i><b>, tsize_t</b> <i>n</i><b>);</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>These routines are provided for writing portable software
-that uses <i>libtiff</i>; they hide any memory-management
-related issues, such as dealing with segmented architectures
-found on 16-bit machines.</p>
-<!-- INDENTATION -->
-<p><i>_TIFFmalloc</i> and <i>_TIFFrealloc</i> are used to
-dynamically allocate and reallocate memory used by
-<i>libtiff</i>; such as memory passed into the I/O routines.
-Memory allocated through these interfaces is released back
-to the system using the <i>_TIFFfree</i> routine.</p>
-<!-- INDENTATION -->
-<p>Memory allocated through one of the above interfaces can
-be set to a known value using <i>_TIFFmemset</i>, copied to
-another memory location using <i>_TIFFmemcpy</i>, or
-compared for equality using <i>_TIFFmemcmp</i>. These
-routines conform to the equivalent <small>ANSI</small> C
-routines: <i>memset</i>, <i>memcpy</i>, and <i>memcmp</i>,
-repsectively.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>None.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>malloc</b>(3), <b>memory</b>(3),
-<b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFquery.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFquery.3tiff.html
deleted file mode 100644
index e27354af84..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFquery.3tiff.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:15 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>QUERY</title>
-</head>
-<body>
-
-<h1 align=center>QUERY</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFCurrentRow, TIFFCurrentStrip, TIFFCurrentTile,
-TIFFCurrentDirectory, TIFFLastDirectory, TIFFFileno,
-TIFFFileName, TIFFGetMode, TIFFIsTiled, TIFFIsByteSwapped,
-TIFFIsUpSampled, TIFFIsMSB2LSB, TIFFGetVersion &minus; query
-routines</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>uint32 TIFFCurrentRow(TIFF*</b> <i>tif</i><b>)<br>
-tstrip_t TIFFCurrentStrip(TIFF*</b> <i>tif</i><b>)<br>
-ttile_t TIFFCurrentTile(TIFF*</b> <i>tif</i><b>)<br>
-tdir_t TIFFCurrentDirectory(TIFF*</b> <i>tif</i><b>)<br>
-int TIFFLastDirectory(TIFF*</b> <i>tif</i><b>)<br>
-int TIFFFileno(TIFF*</b> <i>tif</i><b>)<br>
-char* TIFFFileName(TIFF*</b> <i>tif</i><b>)<br>
-int TIFFGetMode(TIFF*</b> <i>tif</i><b>)<br>
-int TIFFIsTiled(TIFF*</b> <i>tif</i><b>)<br>
-int TIFFIsByteSwapped(TIFF*</b> <i>tif</i><b>)<br>
-int TIFFIsUpSampled(TIFF*</b> <i>tif</i><b>)<br>
-int TIFFIsMSB2LSB(TIFF*</b> <i>tif</i><b>)<br>
-const char* TIFFGetVersion(void)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The following routines return status information about an
-open <small>TIFF</small> file.</p>
-<!-- INDENTATION -->
-<p><i>TIFFCurrentDirectory</i> returns the index of the
-current directory (directories are numbered starting at 0).
-This number is suitable for use with the
-<i>TIFFSetDirectory</i> routine.</p>
-<!-- INDENTATION -->
-<p><i>TIFFLastDirectory</i> returns a non-zero value if the
-current directory is the last directory in the file;
-otherwise zero is returned.</p>
-<!-- INDENTATION -->
-<p><i>TIFFCurrentRow</i>, <i>TIFFCurrentStrip</i>, and
-<i>TIFFCurrentTile</i>, return the current row, strip, and
-tile, respectively, that is being read or written. These
-values are updated each time a read or write is done.</p>
-<!-- INDENTATION -->
-<p><i>TIFFFileno</i> returns the underlying file descriptor
-used to access the <small>TIFF</small> image in the
-filesystem.</p>
-<!-- INDENTATION -->
-<p><i>TIFFFileName</i> returns the pathname argument passed
-to <i>TIFFOpen</i> or <i>TIFFFdOpen</i>.</p>
-<!-- INDENTATION -->
-<p><i>TIFFGetMode</i> returns the mode with which the
-underlying file was opened. On <small>UNIX</small> systems,
-this is the value passed to the <i>open</i>(2) system
-call.</p>
-<!-- INDENTATION -->
-<p><i>TIFFIsTiled</i> returns a non-zero value if the image
-data has a tiled organization. Zero is returned if the image
-data is organized in strips.</p>
-<!-- INDENTATION -->
-<p><i>TIFFIsByteSwapped</i> returns a non-zero value if the
-image data was in a different byte-order than the host
-machine. Zero is returned if the TIFF file and local host
-byte-orders are the same. Note that TIFFReadTile(),
-TIFFReadStrip() and TIFFReadScanline() functions already
-normally perform byte swapping to local host order if
-needed.</p>
-<!-- INDENTATION -->
-<p><i>TIFFIsUpSampled</i> returns a non-zero value if image
-data returned through the read interface routines is being
-up-sampled. This can be useful to applications that want to
-calculate I/O buffer sizes to reflect this usage (though the
-usual strip and tile size routines already do this).</p>
-<!-- INDENTATION -->
-<p><i>TIFFIsMSB2LSB</i> returns a non-zero value if the
-image data is being returned with bit 0 as the most
-significant bit.</p>
-<!-- INDENTATION -->
-<p><i>TIFFGetVersion</i> returns an <small>ASCII</small>
-string that has a version stamp for the <small>TIFF</small>
-library software.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>None.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>libtiff</i>(3TIFF), <i>TIFFOpen</i>(3TIFF),
-<i>TIFFFdOpen</i>(3TIFF)</p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFsize.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFsize.3tiff.html
deleted file mode 100644
index 54fb71b8c3..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFsize.3tiff.html
+++ /dev/null
@@ -1,95 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:17 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFSIZE</title>
-</head>
-<body>
-
-<h1 align=center>TIFFSIZE</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFScanlineSize, TIFFRasterScanlineSize, &minus; return
-the size of various items associated with an open
-<small>TIFF</small> file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>tsize_t TIFFRasterScanlineSize(TIFF
-*</b><i>tif</i><b>)<br>
-tsize_t TIFFScanlineSize(TIFF *</b><i>tif</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFScanlineSize</i> returns the size in bytes of a
-row of data as it would be returned in a call to
-<i>TIFFReadScanline</i>, or as it would be expected in a
-call to <i>TIFFWriteScanline</i>.</p>
-<!-- INDENTATION -->
-<p><i>TIFFRasterScanlineSize</i> returns the size in bytes
-of a complete decoded and packed raster scanline. Note that
-this value may be different from the value returned by
-<i>TIFFScanlineSize</i> if data is stored as separate
-planes.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>None.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFOpen</b>(3TIFF), <b>TIFFReadScanline</b>(3TIFF),
-<b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFstrip.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFstrip.3tiff.html
deleted file mode 100644
index a0fc358bff..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFstrip.3tiff.html
+++ /dev/null
@@ -1,129 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:17 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFSTRIP</title>
-</head>
-<body>
-
-<h1 align=center>TIFFSTRIP</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFDefaultStripSize, TIFFStripSize, TIFFVStripSize,
-TIFFRawStripSize, TIFFComputeStrip, TIFFNumberOfStrips
-&minus; strip-related utility routines</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>uint32 TIFFDefaultStripSize(TIFF *</b><i>tif</i><b>,
-uint32</b> <i>estimate</i><b>)<br>
-tsize_t TIFFStripSize(TIFF *</b><i>tif</i><b>)<br>
-tsize_t TIFFVStripSize(TIFF *</b><i>tif</i><b>, uint32</b>
-<i>nrows</i><b>)<br>
-tsize_t TIFFRawStripSize(TIFF *</b><i>tif</i><b>,
-tstrip_t</b> <i>strip</i><b>)<br>
-tstrip_t TIFFComputeStrip(TIFF *</b><i>tif</i><b>,
-uint32</b> <i>row</i><b>, tsample_t</b>
-<i>sample</i><b>)<br>
-tstrip_t TIFFNumberOfStrips(TIFF *</b><i>tif</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFDefaultStripSize</i> returns the number of rows
-for a reasonable-sized strip according to the current
-settings of the <i>ImageWidth</i>, <i>BitsPerSample</i>,
-<i>SamplesPerPixel</i>, tags and any compression-specific
-requirements. If the <i>estimate</i> parameter, if non-zero,
-then it is taken as an estimate of the desired strip size
-and adjusted according to any compression-specific
-requirements. The value returned by this function is
-typically used to define the <i>RowsPerStrip</i> tag. In
-lieu of any unusual requirements <i>TIFFDefaultStripSize</i>
-tries to create strips that have approximately 8 kilobytes
-of uncompressed data.</p>
-<!-- INDENTATION -->
-<p><i>TIFFStripSize</i> returns the equivalent size for a
-strip of data as it would be returned in a call to
-<i>TIFFReadEncodedStrip</i> or as it would be expected in a
-call to <i>TIFFWriteEncodedStrip</i>.</p>
-<!-- INDENTATION -->
-<p><i>TIFFVStripSize</i> returns the number of bytes in a
-strip with <i>nrows</i> rows of data.</p>
-<!-- INDENTATION -->
-<p><i>TIFFRawStripSize</i> returns the number of bytes in a
-raw strip (i.e. not decoded).</p>
-<!-- INDENTATION -->
-<p><i>TIFFComputeStrip</i> returns the strip that contains
-the specified coordinates. A valid strip is always returned;
-out-of-range coordinate values are clamped to the bounds of
-the image. The <i>row</i> parameter is always used in
-calculating a strip. The <i>sample</i> parameter is used
-only if data are organized in separate planes
-(<i>PlanarConfiguration</i>=2).</p>
-<!-- INDENTATION -->
-<p><i>TIFFNumberOfStrips</i> returns the number of strips in
-the image.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>None.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFReadEncodedStrip</b>(3TIFF),
-<b>TIFFReadRawStrip</b>(3TIFF),
-<b>TIFFWriteEncodedStrip</b>(3TIFF),
-<b>TIFFWriteRawStrip</b>(3TIFF), <b>libtiff</b>(3TIFF),</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFswab.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFswab.3tiff.html
deleted file mode 100644
index 2924a38bd9..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFswab.3tiff.html
+++ /dev/null
@@ -1,110 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:17 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>SWAB</title>
-</head>
-<body>
-
-<h1 align=center>SWAB</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFGetBitRevTable, TIFFReverseBits, TIFFSwabShort,
-TIFFSwabLong, TIFFSwabArrayOfShort, TIFFSwabArrayOfLong
-&minus; byte- and bit-swapping routines</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>const unsigned char* TIFFGetBitRevTable(int</b>
-<i>reversed</i><b>)<br>
-void TIFFReverseBits(u_char *</b><i>data</i><b>, unsigned
-long</b> <i>nbytes</i><b>)<br>
-void TIFFSwabShort(uint16 *</b><i>data</i><b>)<br>
-void TIFFSwabLong(uint32 *</b><i>data</i><b>)<br>
-void TIFFSwabArrayOfShort(uint16 *</b><i>data</i><b>,
-unsigned long</b> <i>nshorts</i><b>)<br>
-void TIFFSwabArrayOfLong(uint32 *</b><i>data</i><b>,
-unsigned long</b> <i>nlongs</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The following routines are used by the library to swap
-16- and 32-bit data and to reverse the order of bits in
-bytes.</p>
-<!-- INDENTATION -->
-<p><i>TIFFSwabShort</i> and <i>TIFFSwabLong</i> swap the
-bytes in a single 16-bit and 32-bit item, respectively.
-<i>TIFFSwabArrayOfShort</i> and <i>TIFFSwabArrayOfLong</i>
-swap the bytes in an array of 16-bit and 32-bit items,
-respectively.</p>
-<!-- INDENTATION -->
-<p><i>TIFFReverseBits</i> replaces each byte in <i>data</i>
-with the equivalent bit-reversed value. This operation is
-performed with a lookup table, which is returned using the
-<i>TIFFGetBitRevTable</i> function. <i>reversed</i>
-parameter specifies which table should be returned. Supply
-<i>1</i> if you want bit reversal table. Supply <i>0</i> to
-get the table that do not reverse bit values. It is a lookup
-table that can be used as an <i>identity function</i>; i.e.
-<i>TIFFNoBitRevTable[n] == n</i>.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>None.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/TIFFtile.3tiff.html b/src/3rdparty/libtiff/html/man/TIFFtile.3tiff.html
deleted file mode 100644
index e8e0008a06..0000000000
--- a/src/3rdparty/libtiff/html/man/TIFFtile.3tiff.html
+++ /dev/null
@@ -1,141 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:17 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFTILE</title>
-</head>
-<body>
-
-<h1 align=center>TIFFTILE</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>TIFFTileSize, TIFFTileRowSize, TIFFVTileSize,
-TIFFDefaultTileSize, TIFFComputeTile, TIFFCheckTile,
-TIFFNumberOfTiles &minus; tile-related utility routines</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>#include &lt;tiffio.h&gt;</b></p>
-<!-- INDENTATION -->
-<p><b>void TIFFDefaultTileSize(TIFF *</b><i>tif</i><b>,
-uint32 *</b><i>tw</i><b>, uint32 *</b><i>th</i><b>)<br>
-tsize_t TIFFTileSize(TIFF *</b><i>tif</i><b>)<br>
-tsize_t TIFFTileRowSize(TIFF *</b><i>tif</i><b>)<br>
-tsize_t TIFFVTileSize(TIFF *</b><i>tif</i><b>, uint32</b>
-<i>nrows</i><b>)<br>
-ttile_t TIFFComputeTile(TIFF *</b><i>tif</i><b>, uint32</b>
-<i>x</i><b>, uint32</b> <i>y</i><b>, uint32</b> <i>z</i><b>,
-tsample_t</b> <i>sample</i><b>)<br>
-int TIFFCheckTile(TIFF *</b><i>tif</i><b>, uint32</b>
-<i>x</i><b>, uint32</b> <i>y</i><b>, uint32</b> <i>z</i><b>,
-tsample_t</b> <i>sample</i><b>)<br>
-ttile_t TIFFNumberOfTiles(TIFF *</b><i>tif</i><b>)</b></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>TIFFDefaultTileSize</i> returns the pixel width and
-height of a reasonable-sized tile; suitable for setting up
-the <i>TileWidth</i> and <i>TileLength</i> tags. If the
-<i>tw</i> and <i>th</i> values passed in are non-zero, then
-they are adjusted to reflect any compression-specific
-requirements. The returned width and height are constrained
-to be a multiple of 16 pixels to conform with the
-<small>TIFF</small> specification.</p>
-<!-- INDENTATION -->
-<p><i>TIFFTileSize</i> returns the equivalent size for a
-tile of data as it would be returned in a call to
-<i>TIFFReadTile</i> or as it would be expected in a call to
-<i>TIFFWriteTile</i>.</p>
-<!-- INDENTATION -->
-<p><i>TIFFVTileSize</i> returns the number of bytes in a
-row-aligned tile with <i>nrows</i> of data.</p>
-<!-- INDENTATION -->
-<p><i>TIFFTileRowSize</i> returns the number of bytes of a
-row of data in a tile.</p>
-<!-- INDENTATION -->
-<p><i>TIFFComputeTile</i> returns the tile that contains the
-specified coordinates. A valid tile is always returned;
-out-of-range coordinate values are clamped to the bounds of
-the image. The <i>x</i> and <i>y</i> parameters are always
-used in calculating a tile. The <i>z</i> parameter is used
-if the image is deeper than 1 slice
-(<i>ImageDepth</i>&gt;1). The <i>sample</i> parameter is
-used only if data are organized in separate planes
-(<i>PlanarConfiguration</i>=2).</p>
-<!-- INDENTATION -->
-<p><i>TIFFCheckTile</i> returns a non-zero value if the
-supplied coordinates are within the bounds of the image and
-zero otherwise. The <i>x</i> parameter is checked against
-the value of the <i>ImageWidth</i> tag. The <i>y</i>
-parameter is checked against the value of the
-<i>ImageLength</i> tag. The <i>z</i> parameter is checked
-against the value of the <i>ImageDepth</i> tag (if defined).
-The <i>sample</i> parameter is checked against the value of
-the <i>SamplesPerPixel</i> parameter if the data are
-organized in separate planes.</p>
-<!-- INDENTATION -->
-<p><i>TIFFNumberOfTiles</i> returns the number of tiles in
-the image.</p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>None.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>TIFFReadEncodedTile</b>(3TIFF),
-<b>TIFFReadRawTile</b>(3TIFF), <b>TIFFReadTile</b>(3TIFF),
-<b>TIFFWriteEncodedTile</b>(3TIFF),
-<b>TIFFWriteRawTile</b>(3TIFF), <b>TIFFWriteTile</b>(3TIFF),
-<b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/fax2ps.1.html b/src/3rdparty/libtiff/html/man/fax2ps.1.html
deleted file mode 100644
index c5396143ab..0000000000
--- a/src/3rdparty/libtiff/html/man/fax2ps.1.html
+++ /dev/null
@@ -1,252 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:18 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>FAX2PS</title>
-</head>
-<body>
-
-<h1 align=center>FAX2PS</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#NOTES">NOTES</a><br>
-<a href="#BUGS">BUGS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>fax2ps &minus; convert a <small>TIFF</small> facsimile to
-compressed PostScript&trade;</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>fax2ps</b> [ <i>options</i> ] [ <i>file ...</i> ]</p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>fax2ps</i> reads one or more <small>TIFF</small>
-facsimile image files and prints a compressed form of
-PostScript on the standard output that is suitable for
-printing.</p>
-<!-- INDENTATION -->
-<p>By default, each page is scaled to reflect the image
-dimensions and resolutions stored in the file. The
-<b>&minus;x</b> and <b>&minus;y</b> options can be used to
-specify the horizontal and vertical image resolutions
-(lines/inch), respectively. If the <b>&minus;S</b> option is
-specified, each page is scaled to fill an output page. The
-default output page is 8.5 by 11 inches. Alternate page
-dimensions can be specified in inches with the
-<b>&minus;W</b> and <b>&minus;H</b> options.</p>
-<!-- INDENTATION -->
-<p>By default <i>fax2ps</i> generates PostScript for all
-pages in the file. The <b>&minus;p</b> option can be used to
-select one or more pages from a multi-page document.</p>
-<!-- INDENTATION -->
-<p><i>fax2ps</i> generates a compressed form of PostScript
-that is optimized for sending pages of text to a PostScript
-printer attached to a host through a low-speed link (such as
-a serial line). Each output page is filled with white and
-then only the black areas are drawn. The PostScript
-specification of the black drawing operations is optimized
-by using a special font that encodes the move-draw
-operations required to fill the black regions on the page.
-This compression scheme typically results in a substantially
-reduced PostScript description, relative to the
-straightforward imaging of the page with a PostScript
-<i>image</i> operator. This algorithm can, however, be
-ineffective for continuous-tone and white-on-black images.
-For these images, it sometimes is more efficient to send the
-raster bitmap image directly; see <b>tiff2ps</b>(1).</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="4" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="11%"></td>
-<td width="11%">
-
-<p><b>&minus;p</b> <i>number</i></p>
-</td>
-<td width="76%">
-
-<p>Print only the indicated page. Multiple pages may be
-printed by specifying this option more than once.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;x</b> <i>resolution</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="23%"></td>
-<td width="76%">
-<p>Use <i>resolution</i> as the horizontal resolution, in
-dots/inch, of the image data. By default this value is taken
-from the file.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;y</b> <i>resolution</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="23%"></td>
-<td width="76%">
-<p>Use <i>resolution</i> as the vertical resolution, in
-lines/inch, of the image data. By default this value is
-taken from the file.</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="4" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="12%">
-
-<p><b>&minus;S</b></p>
-</td>
-<td width="76%">
-
-<p>Scale each page of image data to fill the output page
-dimensions. By default images are presented according to the
-dimension information recorded in the <small>TIFF</small>
-file.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="12%">
-
-<p><b>&minus;W</b> <i>width</i></p>
-</td>
-<td width="76%">
-
-<p>Use <i>width</i> as the width, in inches, of the output
-page.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="12%">
-
-<p><b>&minus;H</b> <i>height</i></p>
-</td>
-<td width="76%">
-
-<p>Use <i>height</i> as the height, in inches, of the
-output page.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Some messages about malformed <small>TIFF</small> images
-come from the <small>TIFF</small> library.</p>
-<!-- INDENTATION -->
-<p>Various messages about badly formatted facsimile images
-may be generated due to transmission errors in received
-facsimile. <i>fax2ps</i> attempts to recover from such data
-errors by resynchronizing decoding at the end of the current
-scanline. This can result in long horizontal black lines in
-the resultant PostScript image.</p>
-</td>
-</table>
-<a name="NOTES"></a>
-<h2>NOTES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>If the destination printer supports PostScript Level II
-then it is always faster to just send the encoded bitmap
-generated by the <b>tiff2ps</b>(1) program.</p>
-</td>
-</table>
-<a name="BUGS"></a>
-<h2>BUGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>fax2ps</i> should probably figure out when it is doing
-a poor job of compressing the output and just generate
-PostScript to image the bitmap raster instead.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiff2ps</b>(1), <b>libtiff</b>(3)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/fax2tiff.1.html b/src/3rdparty/libtiff/html/man/fax2tiff.1.html
deleted file mode 100644
index 38b54c013c..0000000000
--- a/src/3rdparty/libtiff/html/man/fax2tiff.1.html
+++ /dev/null
@@ -1,607 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:18 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>FAX2TIFF</title>
-</head>
-<body>
-
-<h1 align=center>FAX2TIFF</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#BUGS">BUGS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>fax2tiff &minus; create a <small>TIFF</small> Class F fax
-file from raw fax data</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>fax2tiff</b> [ <i>options</i> ] [ <b>&minus;o</b>
-<i>output.tif</i> ] <i>input.raw</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>Fax2tiff</i> creates a <small>TIFF</small> file
-containing <small>CCITT</small> Group 3 or Group 4 encoded
-data from one or more files containing
-&lsquo;&lsquo;raw&rsquo;&rsquo; Group 3 or Group 4 encoded
-data (typically obtained directly from a fax modem). By
-default, each row of data in the resultant
-<small>TIFF</small> file is 1-dimensionally encoded and
-padded or truncated to 1728 pixels, as needed. The resultant
-image is a set of low resolution (98 lines/inch) or medium
-resolution (196 lines/inch) pages, each of which is a single
-strip of data. The generated file conforms to the
-<small>TIFF</small> Class F ( <small>FAX</small> )
-specification for storing facsimile data. This means, in
-particular, that each page of the data does <b>not</b>
-include the trailing <i>return to control</i> (
-<small>RTC</small> ) code; as required for transmission by
-the <small>CCITT</small> Group 3 specifications. The old,
-&lsquo;&lsquo;classic&rsquo;&rsquo;, format is created if
-the <b>&minus;c</b> option is used. (The Class F format can
-also be requested with the <b>&minus;f</b> option.)</p>
-<!-- INDENTATION -->
-<p>The default name of the output image is <i>fax.tif</i>;
-this can be changed with the <b>&minus;o</b> option. Each
-input file is assumed to be a separate page of facsimile
-data from the same document. The order in which input files
-are specified on the command line is the order in which the
-resultant pages appear in the output file.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Options that affect the interpretation of input data
-are:</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;3</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Assume input data is <small>CCITT</small> Group 3
-encoded (default).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;4</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Assume input data is <small>CCITT</small> Group 4
-encoded.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;U</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Assume input data is uncompressed (Group 3 or Group
-4).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;1</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Assume input data is encoded with the 1-dimensional
-version of the <small>CCITT</small> Group 3 Huffman encoding
-algorithm (default).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;2</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Assume input data is 2-dimensional version of the
-<small>CCITT</small> Group 3 Huffman encoding algorithm.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;P</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Assume input data is <b>not</b> EOL-aligned (default).
-This option has effect with Group 3 encoded input only.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;A</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Assume input data is EOL-aligned. This option has effect
-with Group 3 encoded input only.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;M</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Treat input data as having bits filled from most
-significant bit ( <small>MSB</small> ) to most least bit (
-<small>LSB</small> ).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;L</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Treat input data as having bits filled from least
-significant bit ( <small>LSB</small> ) to most significant
-bit ( <small>MSB</small> ) (default).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;B</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Assume input data was encoded with black as 0 and white
-as 1.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;W</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Assume input data was encoded with black as 1 and white
-as 0 (default).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;R</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the vertical resolution, in lines/inch, of the
-input images. By default input are assumed to have a
-vertical resolution of 196 lines/inch. If images are low
-resolution facsimile, a value of 98 lines/inch should be
-specified.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;X</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the width, in pixels, of the input images. By
-default input are assumed to have a width of 1728
-pixels.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Options that affect the output file format are:</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;o</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the name of the output file.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;7</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force output to be compressed with the
-<small>CCITT</small> Group 3 Huffman encoding algorithm
-(default).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;8</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force output to be compressed with the
-<small>CCITT</small> Group 4 Huffman encoding.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;u</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force output to be uncompressed (Group 3 or Group
-4).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;5</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force output to be encoded with the 1-dimensional
-version of the <small>CCITT</small> Group 3 Huffman encoding
-algorithm.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;6</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force output to be encoded with the 2-dimensional
-version of the <small>CCITT</small> Group 3 Huffman encoding
-algorithm (default).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;a</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force the last bit of each <i>End Of Line</i> (
-<small>EOL</small> ) code to land on a byte boundary
-(default). This &lsquo;&lsquo;zero padding&rsquo;&rsquo;
-will be reflected in the contents of the
-<i>Group3Options</i> tag of the resultant
-<small>TIFF</small> file. This option has effect with Group
-3 encoded output only.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;p</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Do not EOL-align output. This option has effect with
-Group 3 encoded output only.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Generate &quot;classic&quot; Group 3 TIFF format.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;f</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Generate TIFF Class F (TIFF/F) format (default).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;m</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force output data to have bits filled from most
-significant bit ( <small>MSB</small> ) to most least bit (
-<small>LSB</small> ).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;l</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force output data to have bits filled from least
-significant bit ( <small>LSB</small> ) to most significant
-bit ( <small>MSB</small> ) (default).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;r</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the number of rows (scanlines) in each strip of
-data written to the output file. By default (or when value
-<b>0</b> is specified), <i>tiffcp</i> attempts to set the
-rows/strip that no more than 8 kilobytes of data appear in a
-strip (with except of G3/G4 compression schemes). If you
-specify special value <b>&minus;1</b> it will results in
-infinite number of the rows per strip. The entire image will
-be the one strip in that case. This is default in case of
-G3/G4 output compression schemes.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;s</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Stretch the input image vertically by writing each input
-row of data twice to the output file.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;v</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force <i>fax2tiff</i> to print the number of rows of
-data it retrieved from the input file.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;z</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force output to be compressed with the LZW encoding.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The following warnings and errors come from the decoding
-routines in the library.</p>
-<!-- INDENTATION -->
-<p><b>Warning, %s: Premature EOL at scanline %d (x
-%d).\n</b>. The input data had a row that was shorter than
-the expected width. The row is padded with white.</p>
-<!-- INDENTATION -->
-<p><b>%s: Premature EOF at scanline %d (x %d).\n</b>. The
-decoder ran out of data in the middle of a scanline. The
-resultant row is padded with white.</p>
-<!-- INDENTATION -->
-<p><b>%s: Bad code word at row %d, x %d\n</b>. An invalid
-Group 3 <i>code</i> was encountered while decoding the input
-file. The row number and horizontal position is given. The
-remainder of the input row is discarded, while the
-corresponding output row is padded with white.</p>
-<!-- INDENTATION -->
-<p><b>%s: Bad 2D code word at scanline %d.\n</b>. An invalid
-Group 4 or 2D Group 3 <i>code</i> was encountered while
-decoding the input file. The row number and horizontal
-position is given. The remainder of the input row is
-discarded, while the corresponding output row is padded with
-white.</p>
-</td>
-</table>
-<a name="BUGS"></a>
-<h2>BUGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Input data are assumed to have a a &lsquo;&lsquo;top
-left&rsquo;&rsquo; orientation; it should be possible to
-override this assumption from the command line.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b><small>CCITT</small> Recommendation T.4</b>
-(Standardization of Group 3 Facsimile Apparatus for Document
-Transmission).</p>
-<!-- INDENTATION -->
-<p><b>The Spirit of TIFF Class F</b>, an appendix to the
-TIFF 5.0 specification prepared by Cygnet Technologies.</p>
-<!-- INDENTATION -->
-<p><b>tiffinfo</b>(1), <b>tiffdither</b>(1),
-<b>tiffgt</b>(1), <b>libtiff</b>(3)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/gif2tiff.1.html b/src/3rdparty/libtiff/html/man/gif2tiff.1.html
deleted file mode 100644
index 6114bd317a..0000000000
--- a/src/3rdparty/libtiff/html/man/gif2tiff.1.html
+++ /dev/null
@@ -1,141 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:18 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>GIF2TIFF</title>
-</head>
-<body>
-
-<h1 align=center>GIF2TIFF</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#NOTES">NOTES</a><br>
-<a href="#BUGS">BUGS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>gif2tiff &minus; create a <small>TIFF</small> file from a
-GIF87 format image file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>gif2tiff</b> [ <i>options</i> ] <i>input.gif
-output.tif</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>Gif2tiff</i> converts a file in the GIF87 format to
-<small>TIFF.</small> The <small>TIFF</small> image is
-created as a palette image, with samples compressed with the
-Lempel-Ziv &amp; Welch algorithm (<i>Compression</i>=5).
-These characteristics can overridden, or explicitly
-specified with the options described below.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify a compression scheme to use when writing image
-data: <b>&minus;c none</b> for no compression, <b>&minus;c
-packbits</b> for the PackBits compression algorithm,
-<b>&minus;c zip</b> for the Deflate compression algorithm,
-and <b>&minus;c lzw</b> for Lempel-Ziv &amp; Welch (the
-default).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;r</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Write data with a specified number of rows per strip; by
-default the number of rows/strip is selected so that each
-strip is approximately 8 kilobytes.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="NOTES"></a>
-<h2>NOTES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The program is based on Paul Haeberli&rsquo;s
-<i>fromgif</i> program which, in turn, is based on Marcel
-J.E. Mol&rsquo;s GIF reader.</p>
-</td>
-</table>
-<a name="BUGS"></a>
-<h2>BUGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Should have more options to control output format.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>pal2rgb</b>(1), <b>tiffinfo</b>(1), <b>tiffcp</b>(1),
-<b>tiffmedian</b>(1), <b>libtiff</b>(3)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/index.html b/src/3rdparty/libtiff/html/man/index.html
deleted file mode 100644
index 7e9e8d2c7f..0000000000
--- a/src/3rdparty/libtiff/html/man/index.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<HTML><HEAD><TITLE>Libtiff HTML manpage index</TITLE></HEAD><BODY BGCOLOR=white><ul><H2>Man Pages</h2><p>
-<li><A HREF=TIFFbuffer.3tiff.html>TIFFbuffer.3tiff.html</a>
-<li><A HREF=TIFFClose.3tiff.html>TIFFClose.3tiff.html</a>
-<li><A HREF=TIFFcodec.3tiff.html>TIFFcodec.3tiff.html</a>
-<li><A HREF=TIFFcolor.3tiff.html>TIFFcolor.3tiff.html</a>
-<li><A HREF=TIFFDataWidth.3tiff.html>TIFFDataWidth.3tiff.html</a>
-<li><A HREF=TIFFError.3tiff.html>TIFFError.3tiff.html</a>
-<li><A HREF=TIFFFlush.3tiff.html>TIFFFlush.3tiff.html</a>
-<li><A HREF=TIFFGetField.3tiff.html>TIFFGetField.3tiff.html</a>
-<li><A HREF=TIFFmemory.3tiff.html>TIFFmemory.3tiff.html</a>
-<li><A HREF=TIFFOpen.3tiff.html>TIFFOpen.3tiff.html</a>
-<li><A HREF=TIFFPrintDirectory.3tiff.html>TIFFPrintDirectory.3tiff.html</a>
-<li><A HREF=TIFFquery.3tiff.html>TIFFquery.3tiff.html</a>
-<li><A HREF=TIFFReadDirectory.3tiff.html>TIFFReadDirectory.3tiff.html</a>
-<li><A HREF=TIFFReadEncodedStrip.3tiff.html>TIFFReadEncodedStrip.3tiff.html</a>
-<li><A HREF=TIFFReadEncodedTile.3tiff.html>TIFFReadEncodedTile.3tiff.html</a>
-<li><A HREF=TIFFReadRawStrip.3tiff.html>TIFFReadRawStrip.3tiff.html</a>
-<li><A HREF=TIFFReadRawTile.3tiff.html>TIFFReadRawTile.3tiff.html</a>
-<li><A HREF=TIFFReadRGBAImage.3tiff.html>TIFFReadRGBAImage.3tiff.html</a>
-<li><A HREF=TIFFReadRGBAStrip.3tiff.html>TIFFReadRGBAStrip.3tiff.html</a>
-<li><A HREF=TIFFReadRGBATile.3tiff.html>TIFFReadRGBATile.3tiff.html</a>
-<li><A HREF=TIFFReadScanline.3tiff.html>TIFFReadScanline.3tiff.html</a>
-<li><A HREF=TIFFReadTile.3tiff.html>TIFFReadTile.3tiff.html</a>
-<li><A HREF=TIFFRGBAImage.3tiff.html>TIFFRGBAImage.3tiff.html</a>
-<li><A HREF=TIFFSetDirectory.3tiff.html>TIFFSetDirectory.3tiff.html</a>
-<li><A HREF=TIFFSetField.3tiff.html>TIFFSetField.3tiff.html</a>
-<li><A HREF=TIFFsize.3tiff.html>TIFFsize.3tiff.html</a>
-<li><A HREF=TIFFstrip.3tiff.html>TIFFstrip.3tiff.html</a>
-<li><A HREF=TIFFswab.3tiff.html>TIFFswab.3tiff.html</a>
-<li><A HREF=TIFFtile.3tiff.html>TIFFtile.3tiff.html</a>
-<li><A HREF=TIFFWarning.3tiff.html>TIFFWarning.3tiff.html</a>
-<li><A HREF=TIFFWriteDirectory.3tiff.html>TIFFWriteDirectory.3tiff.html</a>
-<li><A HREF=TIFFWriteEncodedStrip.3tiff.html>TIFFWriteEncodedStrip.3tiff.html</a>
-<li><A HREF=TIFFWriteEncodedTile.3tiff.html>TIFFWriteEncodedTile.3tiff.html</a>
-<li><A HREF=TIFFWriteRawStrip.3tiff.html>TIFFWriteRawStrip.3tiff.html</a>
-<li><A HREF=TIFFWriteRawTile.3tiff.html>TIFFWriteRawTile.3tiff.html</a>
-<li><A HREF=TIFFWriteScanline.3tiff.html>TIFFWriteScanline.3tiff.html</a>
-<li><A HREF=TIFFWriteTile.3tiff.html>TIFFWriteTile.3tiff.html</a>
-<li><A HREF=fax2ps.1.html>fax2ps.1.html</a>
-<li><A HREF=fax2tiff.1.html>fax2tiff.1.html</a>
-<li><A HREF=gif2tiff.1.html>gif2tiff.1.html</a>
-<li><A HREF=pal2rgb.1.html>pal2rgb.1.html</a>
-<li><A HREF=ppm2tiff.1.html>ppm2tiff.1.html</a>
-<li><A HREF=ras2tiff.1.html>ras2tiff.1.html</a>
-<li><A HREF=raw2tiff.1.html>raw2tiff.1.html</a>
-<li><A HREF=rgb2ycbcr.1.html>rgb2ycbcr.1.html</a>
-<li><A HREF=sgi2tiff.1.html>sgi2tiff.1.html</a>
-<li><A HREF=thumbnail.1.html>thumbnail.1.html</a>
-<li><A HREF=tiff2bw.1.html>tiff2bw.1.html</a>
-<li><A HREF=tiff2pdf.1.html>tiff2pdf.1.html</a>
-<li><A HREF=tiff2ps.1.html>tiff2ps.1.html</a>
-<li><A HREF=tiff2rgba.1.html>tiff2rgba.1.html</a>
-<li><A HREF=tiffcmp.1.html>tiffcmp.1.html</a>
-<li><A HREF=tiffcp.1.html>tiffcp.1.html</a>
-<li><A HREF=tiffcrop.1.html>tiffcrop.1.html</a>
-<li><A HREF=tiffdither.1.html>tiffdither.1.html</a>
-<li><A HREF=tiffdump.1.html>tiffdump.1.html</a>
-<li><A HREF=tiffgt.1.html>tiffgt.1.html</a>
-<li><A HREF=tiffinfo.1.html>tiffinfo.1.html</a>
-<li><A HREF=tiffmedian.1.html>tiffmedian.1.html</a>
-<li><A HREF=tiffset.1.html>tiffset.1.html</a>
-<li><A HREF=tiffsplit.1.html>tiffsplit.1.html</a>
-<li><A HREF=tiffsv.1.html>tiffsv.1.html</a>
-</ul></BODY></HTML>
diff --git a/src/3rdparty/libtiff/html/man/libtiff.3tiff.html b/src/3rdparty/libtiff/html/man/libtiff.3tiff.html
deleted file mode 100644
index bea73f761f..0000000000
--- a/src/3rdparty/libtiff/html/man/libtiff.3tiff.html
+++ /dev/null
@@ -1,3137 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:14 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>INTRO</title>
-</head>
-<body>
-
-<h1 align=center>INTRO</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#DATA TYPES">DATA TYPES</a><br>
-<a href="#LIST OF ROUTINES">LIST OF ROUTINES</a><br>
-<a href="#TAG USAGE">TAG USAGE</a><br>
-<a href="#PSEUDO TAGS">PSEUDO TAGS</a><br>
-<a href="#DIAGNOSTICS">DIAGNOSTICS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-<a href="#BUGS">BUGS</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>libtiff &minus; introduction to <i>libtiff</i>, a
-library for reading and writing</big> TIFF
-<big>files</big></p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>#include &lt;tiffio.h&gt;</b></big></p>
-<!-- INDENTATION -->
-<p><big>cc file.c <b>-ltiff</b></big></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><i>libtiff</i> is a library for reading and writing
-data files encoded with the <i>Tag Image File</i> format,
-Revision 6.0 (or revision 5.0 or revision 4.0). This file
-format is suitable for archiving multi-color and
-monochromatic image data.</big></p>
-<!-- INDENTATION -->
-<p><big>The library supports several compression algorithms,
-as indicated by the <i>Compression</i> field, including: no
-compression (1),</big> CCITT <big>1D Huffman compression
-(2),</big> CCITT <big>Group 3 Facsimile compression
-(3),</big> CCITT <big>Group 4 Facsimile compression (4),
-Lempel-Ziv &amp; Welch compression (5), baseline JPEG
-compression (7), word-aligned 1D Huffman compression
-(32771), and PackBits compression (32773). In addition,
-several nonstandard compression algorithms are supported:
-the 4-bit compression algorithm used by the
-<i>ThunderScan</i> program (32809) (decompression only),
-NeXT&rsquo;s 2-bit compression algorithm (32766)
-(decompression only), an experimental LZ-style algorithm
-known as Deflate (32946), and an experimental CIE LogLuv
-compression scheme designed for images with high dynamic
-range (32845 for LogL and 32845 for LogLuv). Directory
-information may be in either little- or big-endian byte
-order&minus;byte swapping is automatically done by the
-library. Data bit ordering may be either Most Significant
-Bit (</big> MSB <big>) to Least Significant Bit (</big> LSB
-<big>) or</big> LSB <big>to</big> MSB. <big>Finally, the
-library does not support files in which the
-<i>BitsPerSample</i>, <i>Compression</i>,
-<i>MinSampleValue</i>, or <i>MaxSampleValue</i> fields are
-defined differently on a per-sample basis (in Rev. 6.0 the
-<i>Compression</i> tag is not defined on a per-sample basis,
-so this is immaterial).</big></p>
-</td>
-</table>
-<a name="DATA TYPES"></a>
-<h2>DATA TYPES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>The library makes extensive use of C typedefs to
-promote portability. Two sets of typedefs are used, one for
-communication with clients of the library and one for
-internal data structures and parsing of the</big> TIFF
-<big>format. The following typedefs are exposed to users
-either through function definitions or through parameters
-passed through the varargs interfaces.</big></p></td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="3" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="15%"></td>
-<td width="46%">
-
-<p><big>typedef unsigned short uint16;</big></p>
-</td>
-<td width="38%">
-
-<p><big>16-bit unsigned integer</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="15%"></td>
-<td width="46%">
-
-<p><big>typedef unsigned &lt;<i>thing</i>&gt;
-uint32;</big></p>
-</td>
-<td width="38%">
-
-<p><big>32-bit unsigned integer</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="15%"></td>
-<td width="46%">
-
-<p><big>typedef unsigned int ttag_t;</big></p>
-</td>
-<td width="38%">
-
-<p><big>directory tag</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="15%"></td>
-<td width="46%">
-
-<p><big>typedef uint16 tdir_t;</big></p>
-</td>
-<td width="38%">
-
-<p><big>directory index</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="15%"></td>
-<td width="46%">
-
-<p><big>typedef uint16 tsample_t;</big></p>
-</td>
-<td width="38%">
-
-<p><big>sample number</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="15%"></td>
-<td width="46%">
-
-<p><big>typedef uint32 tstrip_t;</big></p>
-</td>
-<td width="38%">
-
-<p><big>strip number</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="15%"></td>
-<td width="46%">
-
-<p><big>typedef uint32 ttile_t;</big></p>
-</td>
-<td width="38%">
-
-<p><big>tile number</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="15%"></td>
-<td width="46%">
-
-<p><big>typedef int32 tsize_t;</big></p>
-</td>
-<td width="38%">
-
-<p><big>i/o size in bytes</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="15%"></td>
-<td width="46%">
-
-<p><big>typedef void* tdata_t;</big></p>
-</td>
-<td width="38%">
-
-<p><big>image data ref</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="15%"></td>
-<td width="46%">
-
-<p><big>typedef void* thandle_t;</big></p>
-</td>
-<td width="38%">
-
-<p><big>client data handle</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="15%"></td>
-<td width="46%">
-
-<p><big>typedef int32 toff_t;</big></p>
-</td>
-<td width="38%">
-
-<p><big>file offset</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>Note that <i>tstrip_t</i>, <i>ttile_t</i>, and
-<i>tsize_t</i> are constrained to be no more than 32-bit
-quantities by 32-bit fields they are stored in in the</big>
-TIFF <big>image. Likewise <i>tsample_t</i> is limited by the
-16-bit field used to store the <i>SamplesPerPixel</i> tag.
-<i>tdir_t</i> constrains the maximum number of</big> IFDs
-<big>that may appear in an image and may be an arbitrary
-size (w/o penalty). <i>ttag_t</i> must be either int,
-unsigned int, pointer, or double because the library uses a
-varargs interface and</big> ANSI C <big>restricts the type
-of the parameter before an ellipsis to be a promoted type.
-<i>toff_t</i> is defined as int32 because TIFF file offsets
-are (unsigned) 32-bit quantities. A signed value is used
-because some interfaces return &minus;1 on error. Finally,
-note that user-specified data references are passed as
-opaque handles and only cast at the lowest layers where
-their type is presumed.</big></p>
-</td>
-</table>
-<a name="LIST OF ROUTINES"></a>
-<h2>LIST OF ROUTINES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>The following routines are part of the library.
-Consult specific manual pages for details on their
-operation; on most systems doing &lsquo;&lsquo;man
-function-name&rsquo;&rsquo; will work.</big></p></td>
-</table>
-<!-- TABS -->
-
-<p><big><i>Name Description</i></big></p>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="3" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFCheckpointDirectory</big></p>
-</td>
-<td width="67%">
-
-<p><big>writes the current state of the directory</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFCheckTile</big></p>
-</td>
-<td width="67%">
-
-<p><big>very x,y,z,sample is within image</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFCIELabToRGBInit</big></p>
-</td>
-<td width="67%">
-
-<p><big>initialize CIE L*a*b* 1976 to RGB conversion
-state</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFCIELabToXYZ</big></p>
-</td>
-<td width="67%">
-
-<p><big>perform CIE L*a*b* 1976 to CIE XYZ
-conversion</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFClientOpen</big></p>
-</td>
-<td width="67%">
-
-<p><big>open a file for reading or writing</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFClose</big></p>
-</td>
-<td width="67%">
-
-<p><big>close an open file</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFComputeStrip</big></p>
-</td>
-<td width="67%">
-
-<p><big>return strip containing y,sample</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFComputeTile</big></p>
-</td>
-<td width="67%">
-
-<p><big>return tile containing x,y,z,sample</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFCurrentDirectory</big></p>
-</td>
-<td width="67%">
-
-<p><big>return index of current directory</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFCurrentRow</big></p>
-</td>
-<td width="67%">
-
-<p><big>return index of current scanline</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFCurrentStrip</big></p>
-</td>
-<td width="67%">
-
-<p><big>return index of current strip</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFCurrentTile</big></p>
-</td>
-<td width="67%">
-
-<p><big>return index of current tile</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFDataWidth</big></p>
-</td>
-<td width="67%">
-
-<p><big>return the size of TIFF data types</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFError</big></p>
-</td>
-<td width="67%">
-
-<p><big>library error handler</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFFdOpen</big></p>
-</td>
-<td width="67%">
-
-<p><big>open a file for reading or writing</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFFileName</big></p>
-</td>
-<td width="67%">
-
-<p><big>return name of open file</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFFileno</big></p>
-</td>
-<td width="67%">
-
-<p><big>return open file descriptor</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFFindCODEC</big></p>
-</td>
-<td width="67%">
-
-<p><big>find standard codec for the specific
-scheme</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFFlush</big></p>
-</td>
-<td width="67%">
-
-<p><big>flush all pending writes</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFFlushData</big></p>
-</td>
-<td width="67%">
-
-<p><big>flush pending data writes</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFGetBitRevTable</big></p>
-</td>
-<td width="67%">
-
-<p><big>return bit reversal table</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFGetField</big></p>
-</td>
-<td width="67%">
-
-<p><big>return tag value in current directory</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFGetFieldDefaulted</big></p>
-</td>
-<td width="67%">
-
-<p><big>return tag value in current directory</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFGetMode</big></p>
-</td>
-<td width="67%">
-
-<p><big>return open file mode</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFGetVersion</big></p>
-</td>
-<td width="67%">
-
-<p><big>return library version string</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFIsCODECConfigured</big></p>
-</td>
-<td width="67%">
-
-<p><big>check, whether we have working codec</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFIsMSB2LSB</big></p>
-</td>
-<td width="67%">
-
-<p><big>return true if image data is being
-returned</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%"></td>
-<td width="67%">
-
-<p><big>with bit 0 as the most significant bit</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFIsTiled</big></p>
-</td>
-<td width="67%">
-
-<p><big>return true if image data is tiled</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFIsByteSwapped</big></p>
-</td>
-<td width="67%">
-
-<p><big>return true if image data is byte-swapped</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFNumberOfStrips</big></p>
-</td>
-<td width="67%">
-
-<p><big>return number of strips in an image</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFNumberOfTiles</big></p>
-</td>
-<td width="67%">
-
-<p><big>return number of tiles in an image</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFOpen</big></p>
-</td>
-<td width="67%">
-
-<p><big>open a file for reading or writing</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFPrintDirectory</big></p>
-</td>
-<td width="67%">
-
-<p><big>print description of the current
-directory</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFReadBufferSetup</big></p>
-</td>
-<td width="67%">
-
-<p><big>specify i/o buffer for reading</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFReadDirectory</big></p>
-</td>
-<td width="67%">
-
-<p><big>read the next directory</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFReadEncodedStrip</big></p>
-</td>
-<td width="67%">
-
-<p><big>read and decode a strip of data</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFReadEncodedTile</big></p>
-</td>
-<td width="67%">
-
-<p><big>read and decode a tile of data</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFReadRawStrip</big></p>
-</td>
-<td width="67%">
-
-<p><big>read a raw strip of data</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFReadRawTile</big></p>
-</td>
-<td width="67%">
-
-<p><big>read a raw tile of data</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFReadRGBAImage</big></p>
-</td>
-<td width="67%">
-
-<p><big>read an image into a fixed format raster</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFReadScanline</big></p>
-</td>
-<td width="67%">
-
-<p><big>read and decode a row of data</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFReadTile</big></p>
-</td>
-<td width="67%">
-
-<p><big>read and decode a tile of data</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFRegisterCODEC</big></p>
-</td>
-<td width="67%">
-
-<p><big>override standard codec for the specific
-scheme</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFReverseBits</big></p>
-</td>
-<td width="67%">
-
-<p><big>reverse bits in an array of bytes</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFRGBAImageBegin</big></p>
-</td>
-<td width="67%">
-
-<p><big>setup decoder state for TIFFRGBAImageGet</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFRGBAImageEnd</big></p>
-</td>
-<td width="67%">
-
-<p><big>release TIFFRGBAImage decoder state</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFRGBAImageGet</big></p>
-</td>
-<td width="67%">
-
-<p><big>read and decode an image</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFRGBAImageOK</big></p>
-</td>
-<td width="67%">
-
-<p><big>is image readable by TIFFRGBAImageGet</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFScanlineSize</big></p>
-</td>
-<td width="67%">
-
-<p><big>return size of a scanline</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFSetDirectory</big></p>
-</td>
-<td width="67%">
-
-<p><big>set the current directory</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFSetSubDirectory</big></p>
-</td>
-<td width="67%">
-
-<p><big>set the current directory</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFSetErrorHandler</big></p>
-</td>
-<td width="67%">
-
-<p><big>set error handler function</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFSetField</big></p>
-</td>
-<td width="67%">
-
-<p><big>set a tag&rsquo;s value in the current
-directory</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFSetWarningHandler</big></p>
-</td>
-<td width="67%">
-
-<p><big>set warning handler function</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFStripSize</big></p>
-</td>
-<td width="67%">
-
-<p><big>returns size of a strip</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFRawStripSize</big></p>
-</td>
-<td width="67%">
-
-<p><big>returns the number of bytes in a raw
-strip</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFSwabShort</big></p>
-</td>
-<td width="67%">
-
-<p><big>swap bytes of short</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFSwabLong</big></p>
-</td>
-<td width="67%">
-
-<p><big>swap bytes of long</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFSwabArrayOfShort</big></p>
-</td>
-<td width="67%">
-
-<p><big>swap bytes of an array of shorts</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFSwabArrayOfLong</big></p>
-</td>
-<td width="67%">
-
-<p><big>swap bytes of an array of longs</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFTileRowSize</big></p>
-</td>
-<td width="67%">
-
-<p><big>return size of a row in a tile</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFTileSize</big></p>
-</td>
-<td width="67%">
-
-<p><big>return size of a tile</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFUnRegisterCODEC</big></p>
-</td>
-<td width="67%">
-
-<p><big>unregisters the codec</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFVGetField</big></p>
-</td>
-<td width="67%">
-
-<p><big>return tag value in current directory</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFVGetFieldDefaulted</big></p>
-</td>
-<td width="67%">
-
-<p><big>return tag value in current directory</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFVSetField</big></p>
-</td>
-<td width="67%">
-
-<p><big>set a tag&rsquo;s value in the current
-directory</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFVStripSize</big></p>
-</td>
-<td width="67%">
-
-<p><big>returns the number of bytes in a strip</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFWarning</big></p>
-</td>
-<td width="67%">
-
-<p><big>library warning handler</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFWriteDirectory</big></p>
-</td>
-<td width="67%">
-
-<p><big>write the current directory</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFWriteEncodedStrip</big></p>
-</td>
-<td width="67%">
-
-<p><big>compress and write a strip of data</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFWriteEncodedTile</big></p>
-</td>
-<td width="67%">
-
-<p><big>compress and write a tile of data</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFWriteRawStrip</big></p>
-</td>
-<td width="67%">
-
-<p><big>write a raw strip of data</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFWriteRawTile</big></p>
-</td>
-<td width="67%">
-
-<p><big>write a raw tile of data</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFWriteScanline</big></p>
-</td>
-<td width="67%">
-
-<p><big>write a scanline of data</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFWriteTile</big></p>
-</td>
-<td width="67%">
-
-<p><big>compress and write a tile of data</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFXYZToRGB</big></p>
-</td>
-<td width="67%">
-
-<p><big>perform CIE XYZ to RGB conversion</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFYCbCrToRGBInit</big></p>
-</td>
-<td width="67%">
-
-<p><big>initialize YCbCr to RGB conversion state</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>TIFFYCbCrtoRGB</big></p>
-</td>
-<td width="67%">
-
-<p><big>perform YCbCr to RGB conversion</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>Auxiliary functions:</big></p></td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="3" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>_TIFFfree</big></p>
-</td>
-<td width="67%">
-
-<p><big>free memory buffer</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>_TIFFmalloc</big></p>
-</td>
-<td width="67%">
-
-<p><big>dynamically allocate memory buffer</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>_TIFFmemcmp</big></p>
-</td>
-<td width="67%">
-
-<p><big>compare contents of the memory buffers</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>_TIFFmemcpy</big></p>
-</td>
-<td width="67%">
-
-<p><big>copy contents of the one buffer to
-another</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>_TIFFmemset</big></p>
-</td>
-<td width="67%">
-
-<p><big>fill memory buffer with a constant byte</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="23%">
-
-<p><big>_TIFFrealloc</big></p>
-</td>
-<td width="67%">
-
-<p><big>dynamically reallocate memory buffer</big></p>
-</td>
-</table>
-<a name="TAG USAGE"></a>
-<h2>TAG USAGE</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>The table below lists the</big> TIFF <big>tags that
-are recognized and handled by the library. If no use is
-indicated in the table, then the library reads and writes
-the tag, but does not use it internally. Note that some tags
-are meaningful only when a particular compression scheme is
-being used; e.g. <i>Group3Options</i> is only useful if
-<i>Compression</i> is set to</big> CCITT <big>Group 3
-encoding. Tags of this sort are considered
-<i>codec-specific</i> tags and the library does not
-recognize them except when the <i>Compression</i> tag has
-been previously set to the relevant compression
-scheme.</big></p>
-<!-- INDENTATION -->
-<pre><big><i>Tag Name Value R/W Library Use/Notes
-</i></big></pre>
-</td>
-</table>
-<!-- TABS -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Artist</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>315</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>BadFaxLines</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>326</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>BitsPerSample</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>258</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>lots</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>CellLength</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>265</big></p>
-</td>
-<td width="53%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>parsed but ignored</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>CellWidth</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>264</big></p>
-</td>
-<td width="53%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>parsed but ignored</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>CleanFaxData</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>327</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ColorMap</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>320</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ColorResponseUnit</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>300</big></p>
-</td>
-<td width="53%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>parsed but ignored</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Compression</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>259</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>choosing codec</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ConsecutiveBadFaxLines</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>328</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>Copyright 33432 R/W</big></p></td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>DataType</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>32996</big></p>
-</td>
-<td width="53%">
-
-<p><big>R</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>obsoleted by SampleFormat tag</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>DateTime</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>306</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>DocumentName</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>269</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>DotRange</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>336</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ExtraSamples</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>338</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>lots</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>FaxRecvParams</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>34908</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>FaxSubAddress</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>34909</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>FaxRecvTime</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>34910</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>FillOrder</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>266</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>control bit order</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>FreeByteCounts</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>289</big></p>
-</td>
-<td width="53%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>parsed but ignored</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>FreeOffsets</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>288</big></p>
-</td>
-<td width="53%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>parsed but ignored</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>GrayResponseCurve</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>291</big></p>
-</td>
-<td width="53%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>parsed but ignored</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>GrayResponseUnit</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>290</big></p>
-</td>
-<td width="53%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>parsed but ignored</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Group3Options</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>292</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>used by Group 3 codec</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Group4Options</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>293</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>HostComputer</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>316</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ImageDepth</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>32997</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>tile/strip calculations</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ImageDescription</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>270</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ImageLength</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>257</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>lots</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ImageWidth</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>256</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>lots</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>InkNames</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>333</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>InkSet</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>332</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>JPEGTables</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>347</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>used by JPEG codec</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Make</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>271</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Matteing</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>32995</big></p>
-</td>
-<td width="53%">
-
-<p><big>R</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>obsoleted by ExtraSamples tag</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>MaxSampleValue</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>281</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>MinSampleValue</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>280</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Model</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>272</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>NewSubFileType</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>254</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>called SubFileType in spec</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>NumberOfInks</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>334</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Orientation</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>274</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>PageName</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>285</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>PageNumber</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>297</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>PhotometricInterpretation</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>262</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>R/Wused by Group 3 and JPEG codecs</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>PlanarConfiguration</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>284</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>data i/o</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Predictor</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>317</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>used by LZW and Deflate codecs</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>PrimaryChromacities</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>319</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ReferenceBlackWhite</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>532</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>ResolutionUnit</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>296</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>used by Group 3 codec</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>RowsPerStrip</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>278</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>data i/o</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>SampleFormat</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>339</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>SamplesPerPixel</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>277</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>lots</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>SMinSampleValue</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>340</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>SMaxSampleValue</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>341</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Software</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>305</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>StoNits</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>37439</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>StripByteCounts</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>279</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>data i/o</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>StripOffsets</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>273</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>data i/o</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>SubFileType</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>255</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>called OSubFileType in spec</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TargetPrinter</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>337</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>Thresholding</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>263</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TileByteCounts</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>324</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>data i/o</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TileDepth</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>32998</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>tile/strip calculations</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TileLength</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>323</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>data i/o</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TileOffsets</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>324</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>data i/o</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TileWidth</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>322</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>data i/o</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TransferFunction</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>301</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>WhitePoint</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>318</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>XPosition</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>286</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>XResolution</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>282</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>YCbCrCoefficients</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>529</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>used by TIFFRGBAImage support</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>YCbCrPositioning</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>531</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>tile/strip size calulcations</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>YCbCrSubsampling</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>530</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>YPosition</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>286</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>YResolution</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>283</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>used by Group 3 codec</big></p>
-</td>
-</table>
-<a name="PSEUDO TAGS"></a>
-<h2>PSEUDO TAGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>In addition to the normal</big> TIFF <big>tags the
-library supports a collection of tags whose values lie in a
-range outside the valid range of</big> TIFF <big>tags. These
-tags are termed <i>pseud-tags</i> and are used to control
-various codec-specific functions within the library. The
-table below summarizes the defined pseudo-tags.</big></p>
-<!-- INDENTATION -->
-<pre><big><i>Tag Name Codec R/W Library Use/Notes
-</i></big></pre>
-</td>
-</table>
-<!-- TABS -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TIFFTAG_FAXMODE</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>G3</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>general codec operation</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TIFFTAG_FAXFILLFUNC</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>G3/G4</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>bitmap fill function</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TIFFTAG_JPEGQUALITY</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>JPEG</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>compression quality control</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TIFFTAG_JPEGCOLORMODE</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>JPEG</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>control colorspace conversions</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TIFFTAG_JPEGTABLESMODE</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>JPEG</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>control contents of <i>JPEGTables</i> tag</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TIFFTAG_ZIPQUALITY</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>Deflate</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/Wcompression quality level</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TIFFTAG_PIXARLOGDATAFMT</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>PixarLog</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/Wuser data format</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TIFFTAG_PIXARLOGQUALITY</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>PixarLog</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/Wcompression quality level</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%">
-
-<p><big>TIFFTAG_SGILOGDATAFMT</big></p>
-</td>
-<td width="8%"></td>
-<td width="6%">
-
-<p><big>SGILog</big></p>
-</td>
-<td width="53%">
-
-<p><big>R/W</big></p>
-</td>
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="21%"></td>
-<td width="8%"></td>
-<td width="6%"></td>
-<td width="53%">
-
-<p><big>user data format</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_FAXMODE</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Control the operation of the Group 3 codec. Possible
-values (independent bits that can be combined by
-or&rsquo;ing them together) are: FAXMODE_CLASSIC (enable
-old-style format in which the</big> RTC <big>is written at
-the end of the last strip), FAXMODE_NORTC (opposite of
-FAXMODE_CLASSIC; also called FAXMODE_CLASSF), FAXMODE_NOEOL
-(do not write</big> EOL <big>codes at the start of each row
-of data), FAXMODE_BYTEALIGN (align each encoded row to an
-8-bit boundary), FAXMODE_WORDALIGN (align each encoded row
-to an 16-bit boundary), The default value is dependent on
-the compression scheme; this pseudo-tag is used by the
-various G3 and G4 codecs to share code.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_FAXFILLFUNC</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Control the function used to convert arrays of black
-and white runs to packed bit arrays. This hook can be used
-to image decoded scanlines in multi-bit depth rasters (e.g.
-for display in colormap mode) or for other purposes. The
-default value is a pointer to a builtin function that images
-packed bilevel data.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_IPTCNEWSPHOTO</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Tag contaings image metadata per the IPTC newsphoto
-spec: Headline, captioning, credit, etc... Used by most wire
-services.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_PHOTOSHOP</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Tag contains Photoshop captioning information and
-metadata. Photoshop uses in parallel and redundantly
-alongside IPTCNEWSPHOTO information.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_JPEGQUALITY</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Control the compression quality level used in the
-baseline algorithm. Note that quality levels are in the
-range 0-100 with a default value of 75.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_JPEGCOLORMODE</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Control whether or not conversion is done between
-RGB and YCbCr colorspaces. Possible values are:
-JPEGCOLORMODE_RAW (do not convert), and JPEGCOLORMODE_RGB
-(convert to/from RGB) The default value is
-JPEGCOLORMODE_RAW.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_JPEGTABLESMODE</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Control the information written in the
-<i>JPEGTables</i> tag. Possible values (independent bits
-that can be combined by or&rsquo;ing them together) are:
-JPEGTABLESMODE_QUANT (include quantization tables), and
-JPEGTABLESMODE_HUFF (include Huffman encoding tables). The
-default value is
-JPEGTABLESMODE_QUANT|JPEGTABLESMODE_HUFF.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_ZIPQUALITY</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Control the compression technique used by the
-Deflate codec. Quality levels are in the range 1-9 with
-larger numbers yielding better compression at the cost of
-more computation. The default quality level is 6 which
-yields a good time-space tradeoff.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_PIXARLOGDATAFMT</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Control the format of user data passed <i>in</i> to
-the PixarLog codec when encoding and passed <i>out</i> from
-when decoding. Possible values are: PIXARLOGDATAFMT_8BIT for
-8-bit unsigned pixels, PIXARLOGDATAFMT_8BITABGR for 8-bit
-unsigned ABGR-ordered pixels, PIXARLOGDATAFMT_11BITLOG for
-11-bit log-encoded raw data, PIXARLOGDATAFMT_12BITPICIO for
-12-bit PICIO-compatible data, PIXARLOGDATAFMT_16BIT for
-16-bit signed samples, and PIXARLOGDATAFMT_FLOAT for 32-bit
-IEEE floating point samples.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_PIXARLOGQUALITY</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Control the compression technique used by the
-PixarLog codec. This value is treated identically to
-TIFFTAG_ZIPQUALITY; see the above description.</big></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>TIFFTAG_SGILOGDATAFMT</b></big></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p><big>Control the format of client data passed <i>in</i>
-to the SGILog codec when encoding and passed <i>out</i> from
-when decoding. Possible values are: SGILOGDATAFMT_FLTXYZ for
-converting between LogLuv and 32-bit IEEE floating valued
-XYZ pixels, SGILOGDATAFMT_16BITLUV for 16-bit encoded Luv
-pixels, SGILOGDATAFMT_32BITRAW and SGILOGDATAFMT_24BITRAW
-for no conversion of data, SGILOGDATAFMT_8BITRGB for
-returning 8-bit RGB data (valid only when decoding
-LogLuv-encoded data), SGILOGDATAFMT_FLTY for converting
-between LogL and 32-bit IEEE floating valued Y pixels,
-SGILOGDATAFMT_16BITL for 16-bit encoded L pixels, and
-SGILOGDATAFMT_8BITGRY for returning 8-bit greyscale data
-(valid only when decoding LogL-encoded data).</big></p>
-</td>
-</table>
-<a name="DIAGNOSTICS"></a>
-<h2>DIAGNOSTICS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>All error messages are directed through the
-<i>TIFFError</i> routine. By default messages are directed
-to <b>stderr</b> in the form: <i>module: message\n.</i>
-Warning messages are likewise directed through the
-<i>TIFFWarning</i> routine.</big></p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big><b>fax2tiff</b>(1), <b>gif2tiff</b>(1),
-<b>pal2rgb</b>(1), <b>ppm2tiff</b>(1), <b>rgb2ycbcr</b>(1),
-<b>ras2tiff</b>(1), <b>raw2tiff</b>(1), <b>sgi2tiff</b>(1),
-<b>tiff2bw</b>(1), <b>tiffdither</b>(1), <b>tiffdump</b>(1),
-<b>tiffcp</b>(1), <b>tiffcmp</b>(1), <b>tiffgt</b>(1),
-<b>tiffinfo</b>(1), <b>tiffmedian</b>(1),
-<b>tiffsplit</b>(1), <b>tiffsv</b>(1).</big></p>
-<!-- INDENTATION -->
-<p><big><b>Tag Image File Format Specification &mdash;
-Revision 6.0</b>, an Aldus Technical Memorandum.</big></p>
-<!-- INDENTATION -->
-<p><big><b>The Spirit of TIFF Class F</b>, an appendix to
-the TIFF 5.0 specification prepared by Cygnet
-Technologies.</big></p>
-<!-- INDENTATION -->
-<p><big>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></big></p>
-</td>
-</table>
-<a name="BUGS"></a>
-<h2>BUGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><big>The library does not support multi-sample images
-where some samples have different bits/sample.</big></p>
-<!-- INDENTATION -->
-<p><big>The library does not support random access to
-compressed data that is organized with more than one row per
-tile or strip.</big></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/pal2rgb.1.html b/src/3rdparty/libtiff/html/man/pal2rgb.1.html
deleted file mode 100644
index 5c3a679a95..0000000000
--- a/src/3rdparty/libtiff/html/man/pal2rgb.1.html
+++ /dev/null
@@ -1,189 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:18 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>PAL2RGB</title>
-</head>
-<body>
-
-<h1 align=center>PAL2RGB</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#BUGS">BUGS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>pal2rgb &minus; convert a palette color
-<small>TIFF</small> image to a full color image</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>pal2rgb</b> [ <i>options</i> ] <i>input.tif
-output.tif</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>Pal2rgb</i> converts a palette color
-<small>TIFF</small> image to a full color image by applying
-the colormap of the palette image to each sample to generate
-a full color <small>RGB</small> image.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Options that affect the interpretation of input data
-are:</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="11%"></td>
-<td width="2%">
-
-<p><b>&minus;C</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>This option overrides the default behavior of
-<i>pal2rgb</i> in determining whether or not colormap
-entries contain 16-bit or 8-bit values. By default the
-colormap is inspected and if no colormap entry greater than
-255 is found, the colormap is assumed to have only 8-bit
-values; otherwise 16-bit values (as required by the
-<small>TIFF</small> specification) are assumed. The
-<b>&minus;C</b> option can be used to explicitly specify the
-number of bits for colormap entries: <b>&minus;C 8</b> for
-8-bit values, <b>&minus;C 16</b> for 16-bit values.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Options that affect the output file format are:</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="5%">
-
-<p><b>&minus;p</b></p>
-</td>
-<td width="3%"></td>
-<td width="80%">
-
-<p>Explicitly select the planar configuration used in
-organizing data samples in the output image: <b>&minus;p
-contig</b> for samples packed contiguously, and <b>&minus;p
-separate</b> for samples stored separately. By default
-samples are packed.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="5%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="3%"></td>
-<td width="80%">
-
-<p>Use the specific compression algorithm to encoded image
-data in the output file: <b>&minus;c packbits</b> for
-Macintosh Packbits, <b>&minus;c lzw</b> for Lempel-Ziv &amp;
-Welch, <b>&minus;c zip</b> for Deflate, <b>&minus;c none</b>
-for no compression. If no compression-related option is
-specified, the input file&rsquo;s compression algorithm is
-used.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="5%">
-
-<p><b>&minus;r</b></p>
-</td>
-<td width="3%"></td>
-<td width="80%">
-
-<p>Explicitly specify the number of rows in each strip of
-the output file. If the <b>&minus;r</b> option is not
-specified, a number is selected such that each output strip
-has approximately 8 kilobytes of data in it.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="BUGS"></a>
-<h2>BUGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Only 8-bit images are handled.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffinfo</b>(1), <b>tiffcp</b>(1),
-<b>tiffmedian</b>(1), <b>libtiff</b>(3)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/ppm2tiff.1.html b/src/3rdparty/libtiff/html/man/ppm2tiff.1.html
deleted file mode 100644
index 60e56e1ff5..0000000000
--- a/src/3rdparty/libtiff/html/man/ppm2tiff.1.html
+++ /dev/null
@@ -1,141 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:18 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>PPM2TIFF</title>
-</head>
-<body>
-
-<h1 align=center>PPM2TIFF</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>ppm2tiff &minus; create a <small>TIFF</small> file from
-<small>PPM, PGM</small> and <small>PBM</small> image
-files</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>ppm2tiff</b> [ <i>options</i> ] [ <i>input.ppm</i> ]
-<i>output.tif</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>ppm2tiff</i> converts a file in the <small>PPM,
-PGM</small> and <small>PBM</small> image formats to
-<small>TIFF.</small> By default, the <small>TIFF</small>
-image is created with data samples packed
-(<i>PlanarConfiguration</i>=1), compressed with the Packbits
-algorithm (<i>Compression</i>=32773), and with each strip no
-more than 8 kilobytes. These characteristics can be
-overridden, or explicitly specified with the options
-described below</p>
-<!-- INDENTATION -->
-<p>If the <small>PPM</small> file contains greyscale data,
-then the <i>PhotometricInterpretation</i> tag is set to 1
-(min-is-black), otherwise it is set to 2 (RGB).</p>
-<!-- INDENTATION -->
-<p>If no <small>PPM</small> file is specified on the command
-line, <i>ppm2tiff</i> will read from the standard input.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify a compression scheme to use when writing image
-data: <b>none</b> for no compression, <b>packbits</b> for
-PackBits compression (will be used by default), <b>lzw</b>
-for Lempel-Ziv &amp; Welch compression, <b>jpeg</b> for
-baseline JPEG compression, <b>zip</b> for Deflate
-compression, <b>g3</b> for CCITT Group 3 (T.4) compression,
-and <b>g4</b> for CCITT Group 4 (T.6) compression.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;r</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Write data with a specified number of rows per strip; by
-default the number of rows/strip is selected so that each
-strip is approximately 8 kilobytes.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;R</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Mark the resultant image to have the specified X and Y
-resolution (in dots/inch).</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffinfo</b>(1), <b>tiffcp</b>(1),
-<b>tiffmedian</b>(1), <b>libtiff</b>(3)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/ras2tiff.1.html b/src/3rdparty/libtiff/html/man/ras2tiff.1.html
deleted file mode 100644
index b0b8993288..0000000000
--- a/src/3rdparty/libtiff/html/man/ras2tiff.1.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:18 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>RAS2TIFF</title>
-</head>
-<body>
-
-<h1 align=center>RAS2TIFF</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#BUGS">BUGS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>ras2tiff &minus; create a <small>TIFF</small> file from a
-Sun rasterfile</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>ras2tiff</b> [ <i>options</i> ] <i>input.ras
-output.tif</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>ras2tiff</i> converts a file in the Sun rasterfile
-format to <small>TIFF.</small> By default, the
-<small>TIFF</small> image is created with data samples
-packed (<i>PlanarConfiguration</i>=1), compressed with the
-Lempel-Ziv &amp; Welch algorithm (<i>Compression</i>=5), and
-with each strip no more than 8 kilobytes. These
-characteristics can overridden, or explicitly specified with
-the options described below.</p>
-<!-- INDENTATION -->
-<p>Any colormap information in the rasterfile is carried
-over to the <small>TIFF</small> file by including a
-<i>Colormap</i> tag in the output file. If the rasterfile
-has a colormap, the <i>PhotometricInterpretation</i> tag is
-set to 3 (palette); otherwise it is set to 2 (RGB) if the
-depth is 24 or 1 (min-is-black) if the depth is not 24.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="2%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="6%"></td>
-<td width="80%">
-
-<p>Specify a compression scheme to use when writing image
-data: <b>&minus;c none</b> for no compression, <b>&minus;c
-packbits</b> for the PackBits compression algorithm,
-<b>&minus;c jpeg</b> for the baseline JPEG compression
-algorithm, <b>&minus;c zip</b> for the Deflate compression
-algorithm, and <b>&minus;c lzw</b> for Lempel-Ziv &amp;
-Welch (the default).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="2%">
-
-<p><b>&minus;r</b></p>
-</td>
-<td width="6%"></td>
-<td width="80%">
-
-<p>Write data with a specified number of rows per strip; by
-default the number of rows/strip is selected so that each
-strip is approximately 8 kilobytes.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="BUGS"></a>
-<h2>BUGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Does not handle all possible rasterfiles. In particular,
-<i>ras2tiff</i> does not handle run-length encoded
-images.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>pal2rgb</b>(1), <b>tiffinfo</b>(1), <b>tiffcp</b>(1),
-<b>tiffmedian</b>(1), <b>libtiff</b>(3)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/raw2tiff.1.html b/src/3rdparty/libtiff/html/man/raw2tiff.1.html
deleted file mode 100644
index 360eb27718..0000000000
--- a/src/3rdparty/libtiff/html/man/raw2tiff.1.html
+++ /dev/null
@@ -1,510 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:18 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>RAW2TIFF</title>
-</head>
-<body>
-
-<h1 align=center>RAW2TIFF</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#GUESSING THE IMAGE GEOMETRY">GUESSING THE IMAGE GEOMETRY</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>raw2tiff &minus; create a <small>TIFF</small> file from a
-raw data</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>raw2tiff</b> [ <i>options</i> ] <i>input.raw
-output.tif</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>raw2tiff</i> converts a raw byte sequence into
-<small>TIFF.</small> By default, the <small>TIFF</small>
-image is created with data samples packed
-(<i>PlanarConfiguration</i>=1), compressed with the PackBits
-algorithm (<i>Compression</i>=32773), and with each strip no
-more than 8 kilobytes. These characteristics can overridden,
-or explicitly specified with the options described
-below.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;H</b> <i>number</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>size of input image file header in bytes (0 by default).
-This amount of data just will be skipped from the start of
-file while reading.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;w</b> <i>number</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>width of input image in pixels (can be guessed, see
-<b><small>GUESSING THE IMAGE GEOMETRY</small></b>
-below).</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;l</b> <i>number</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>length of input image in lines (can be guessed, see
-<b><small>GUESSING THE IMAGE GEOMETRY</small></b>
-below).</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;b</b> <i>number</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>number of bands in input image (1 by default).</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;d</b> <i>data_type</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>type of samples in input image, where <i>data_type</i>
-may be:</p></td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="3" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="10%">
-
-<p><b>byte</b></p>
-</td>
-<td width="70%">
-
-<p>8-bit unsigned integer (default),</p>
-</td>
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="10%">
-
-<p><b>short</b></p>
-</td>
-<td width="70%">
-
-<p>16-bit unsigned integer,</p>
-</td>
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="10%">
-
-<p><b>long</b></p>
-</td>
-<td width="70%">
-
-<p>32-bit unsigned integer,</p>
-</td>
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="10%">
-
-<p><b>sbyte</b></p>
-</td>
-<td width="70%">
-
-<p>8-bit signed integer,</p>
-</td>
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="10%">
-
-<p><b>sshort</b></p>
-</td>
-<td width="70%">
-
-<p>16-bit signed integer,</p>
-</td>
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="10%">
-
-<p><b>slong</b></p>
-</td>
-<td width="70%">
-
-<p>32-bit signed integer,</p>
-</td>
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="10%">
-
-<p><b>float</b></p>
-</td>
-<td width="70%">
-
-<p>32-bit IEEE floating point,</p>
-</td>
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="10%">
-
-<p><b>double</b></p>
-</td>
-<td width="70%">
-
-<p>64-bit IEEE floating point.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;i</b> <i>config</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>type of samples interleaving in input image, where
-<i>config</i> may be:</p></td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="3" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="8%">
-
-<p><b>pixel</b></p>
-</td>
-<td width="71%">
-
-<p>pixel interleaved data (default),</p>
-</td>
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="8%">
-
-<p><b>band</b></p>
-</td>
-<td width="71%">
-
-<p>band interleaved data.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;p</b> <i>photo</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>photometric interpretation (color space) of the input
-image, where <i>photo</i> may be:</p></td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="3" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="15%">
-
-<p><b>miniswhite</b></p>
-</td>
-<td width="65%">
-
-<p>white color represented with 0 value,</p>
-</td>
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="15%">
-
-<p><b>minisblack</b></p>
-</td>
-<td width="65%">
-
-<p>black color represented with 0 value (default),</p>
-</td>
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="15%">
-
-<p><b>rgb</b></p>
-</td>
-<td width="65%">
-
-<p>image has RGB color model,</p>
-</td>
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="15%">
-
-<p><b>cmyk</b></p>
-</td>
-<td width="65%">
-
-<p>image has CMYK (separated) color model,</p>
-</td>
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="15%">
-
-<p><b>ycbcr</b></p>
-</td>
-<td width="65%">
-
-<p>image has YCbCr color model,</p>
-</td>
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="15%">
-
-<p><b>cielab</b></p>
-</td>
-<td width="65%">
-
-<p>image has CIE L*a*b color model,</p>
-</td>
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="15%">
-
-<p><b>icclab</b></p>
-</td>
-<td width="65%">
-
-<p>image has ICC L*a*b color model,</p>
-</td>
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="15%">
-
-<p><b>itulab</b></p>
-</td>
-<td width="65%">
-
-<p>image has ITU L*a*b color model.</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;s</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>swap bytes fetched from the input file.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;L</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>input data has LSB2MSB bit order (default).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;M</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>input data has MSB2LSB bit order.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify a compression scheme to use when writing image
-data: <b>&minus;c none</b> for no compression, <b>&minus;c
-packbits</b> for the PackBits compression algorithm (the
-default), <b>&minus;c jpeg</b> for the baseline JPEG
-compression algorithm, <b>&minus;c zip</b> for the Deflate
-compression algorithm, and <b>&minus;c lzw</b> for
-Lempel-Ziv &amp; Welch.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;r</b> <i>number</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>Write data with a specified number of rows per strip; by
-default the number of rows/strip is selected so that each
-strip is approximately 8 kilobytes.</p>
-</td>
-</table>
-<a name="GUESSING THE IMAGE GEOMETRY"></a>
-<h2>GUESSING THE IMAGE GEOMETRY</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>raw2tiff</i> can guess image width and height in case
-one or both of these parameters are not specified. If you
-omit one of those parameters, the complementary one will be
-calculated based on the file size (taking into account
-header size, number of bands and data type). If you omit
-both parameters, the statistical approach will be used.
-Utility will compute correlation coefficient between two
-lines at the image center using several appropriate line
-sizes and the highest absolute value of the coefficient will
-indicate the right line size. That is why you should be
-cautious with the very large images, because guessing
-process may take a while (depending on your system
-performance). Of course, the utility can&rsquo;t guess the
-header size, number of bands and data type, so it should be
-specified manually. If you don&rsquo;t know anything about
-your image, just try with the several combinations of those
-options.</p>
-<!-- INDENTATION -->
-<p>There is no magic, it is just a mathematical statistics,
-so it can be wrong in some cases. But for most ordinary
-images guessing method will work fine.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>pal2rgb</b>(1), <b>tiffcp</b>(1),
-<b>tiffmedian</b>(1), <b>libtiff</b>(3)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/rgb2ycbcr.1.html b/src/3rdparty/libtiff/html/man/rgb2ycbcr.1.html
deleted file mode 100644
index 5cff15fb53..0000000000
--- a/src/3rdparty/libtiff/html/man/rgb2ycbcr.1.html
+++ /dev/null
@@ -1,155 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:19 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>RGB2YCBCR</title>
-</head>
-<body>
-
-<h1 align=center>RGB2YCBCR</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>rgb2ycbcr &minus; convert non-YCbCr <small>TIFF</small>
-images to a YCbCr <small>TIFF</small> image</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>rgb2ycbcr</b> [ <i>options</i> ] <i>src1.tif src2.tif
-... dst.tif</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>rgb2ycbcr</i> converts <small>RGB</small> color,
-greyscale, or bi-level <small>TIFF</small> images to YCbCr
-images by transforming and sampling pixel data. If multiple
-files are specified on the command line each source file is
-converted to a separate directory in the destination
-file.</p>
-<!-- INDENTATION -->
-<p>By default, chrominance samples are created by sampling 2
-by 2 blocks of luminance values; this can be changed with
-the <b>&minus;h</b> and <b>&minus;v</b> options. Output data
-are compressed with the <small>PackBits</small> compression
-scheme, by default; an alternate scheme can be selected with
-the <b>&minus;c</b> option. By default, output data are
-compressed in strips with the number of rows in each strip
-selected so that the size of a strip is never more than 8
-kilobytes; the <b>&minus;r</b> option can be used to
-explicitly set the number of rows per strip.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify a compression scheme to use when writing image
-data: <b>&minus;c none</b> for no compression, <b>&minus;c
-packbits</b> for the PackBits compression algorithm (the
-default), <b>&minus;c jpeg</b> for the JPEG compression
-algorithm, <b>&minus;c zip</b> for the deflate compression
-algorithm, and <b>&minus;c lzw</b> for Lempel-Ziv &amp;
-Welch.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;h</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Set the horizontal sampling dimension to one of: 1, 2
-(default), or 4.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;r</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Write data with a specified number of rows per strip; by
-default the number of rows/strip is selected so that each
-strip is approximately 8 kilobytes.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;v</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Set the vertical sampling dimension to one of: 1, 2
-(default), or 4.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffinfo</b>(1), <b>tiffcp</b>(1),
-<b>libtiff</b>(3)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/sgi2tiff.1.html b/src/3rdparty/libtiff/html/man/sgi2tiff.1.html
deleted file mode 100644
index fe90d6477f..0000000000
--- a/src/3rdparty/libtiff/html/man/sgi2tiff.1.html
+++ /dev/null
@@ -1,147 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:19 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>SGI2TIFF</title>
-</head>
-<body>
-
-<h1 align=center>SGI2TIFF</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#BUGS">BUGS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>sgi2tiff &minus; create a <small>TIFF</small> file from
-an <small>SGI</small> image file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>sgi2tiff</b> [ <i>options</i> ] <i>input.rgb
-output.tif</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>sgi2tiff</i> converts a file in the <small>SGI</small>
-image format to <small>TIFF.</small> By default, the
-<small>TIFF</small> image is created with data samples
-packed (<i>PlanarConfiguration</i>=1), compressed with the
-Lempel-Ziv &amp; Welch algorithm (<i>Compression</i>=5), and
-with each strip no more than 8 kilobytes. These
-characteristics can overridden, or explicitly specified with
-the options described below.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify a compression scheme to use when writing image
-data: <b>&minus;c none</b> for no compression, <b>&minus;c
-packbits</b> for the PackBits compression algorithm),
-<b>&minus;c jpeg</b> for the baseline JPEG compression
-algorithm, <b>&minus;c zip</b> for the Deflate compression
-algorithm, and <b>&minus;c lzw</b> for Lempel-Ziv &amp;
-Welch (the default).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;p</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Explicitly select the planar configuration used in
-organizing data samples in the output image: <b>&minus;p
-contig</b> for samples packed contiguously, and <b>&minus;p
-separate</b> for samples stored separately. By default
-samples are packed.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;r</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Write data with a specified number of rows per strip; by
-default the number of rows/strip is selected so that each
-strip is approximately 8 kilobytes.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="BUGS"></a>
-<h2>BUGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Does not record colormap information.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffinfo</b>(1), <b>tiffcp</b>(1),
-<b>tiffmedian</b>(1), <b>libtiff</b>(3)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/thumbnail.1.html b/src/3rdparty/libtiff/html/man/thumbnail.1.html
deleted file mode 100644
index fabc60116e..0000000000
--- a/src/3rdparty/libtiff/html/man/thumbnail.1.html
+++ /dev/null
@@ -1,148 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:19 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>THUMBNAIL</title>
-</head>
-<body>
-
-<h1 align=center>THUMBNAIL</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#BUGS">BUGS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>thumbnail &minus; create a <small>TIFF</small> file with
-thumbnail images</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>thumbnail</b> [ <i>options</i> ] <i>input.tif
-output.tif</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>thumbnail</i> is a program written to show how one
-might use the SubIFD tag (#330) to store thumbnail images.
-<i>thumbnail</i> copies a <small>TIFF</small> Class F
-facsimile file to the output file and for each image an
-8-bit greyscale <i>thumbnail sketch</i>. The output file
-contains the thumbnail image with the associated
-full-resolution page linked below with the SubIFD tag.</p>
-<!-- INDENTATION -->
-<p>By default, thumbnail images are 216 pixels wide by 274
-pixels high. Pixels are calculated by sampling and filtering
-the input image with each pixel value passed through a
-contrast curve.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;w</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the width of thumbnail images in pixels.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;h</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the height of thumbnail images in pixels.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify a contrast curve to apply in generating the
-thumbnail images. By default pixels values are passed
-through a linear contrast curve that simply maps the pixel
-value ranges. Alternative curves are: <b>exp50</b> for a 50%
-exponential curve, <b>exp60</b> for a 60% exponential curve,
-<b>exp70</b> for a 70% exponential curve, <b>exp80</b> for a
-80% exponential curve, <b>exp90</b> for a 90% exponential
-curve, <b>exp</b> for a pure exponential curve,
-<b>linear</b> for a linear curve.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="BUGS"></a>
-<h2>BUGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>There are no options to control the format of the saved
-thumbnail images.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffdump</b>(1), <b>tiffgt</b>(1), <b>tiffinfo</b>(1),
-<b>libtiff</b>(3)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/tiff2bw.1.html b/src/3rdparty/libtiff/html/man/tiff2bw.1.html
deleted file mode 100644
index 6b6accfc1d..0000000000
--- a/src/3rdparty/libtiff/html/man/tiff2bw.1.html
+++ /dev/null
@@ -1,161 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:19 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFF2BW</title>
-</head>
-<body>
-
-<h1 align=center>TIFF2BW</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>tiff2bw &minus; convert a color <small>TIFF</small> image
-to greyscale</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiff2bw</b> [ <i>options</i> ] <i>input.tif
-output.tif</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>Tiff2bw</i> converts an <small>RGB</small> or Palette
-color <small>TIFF</small> image to a greyscale image by
-combining percentages of the red, green, and blue channels.
-By default, output samples are created by taking 28% of the
-red channel, 59% of the green channel, and 11% of the blue
-channel. To alter these percentages, the <b>&minus;R</b>,
-<b>&minus;G</b>, and <b>&minus;B</b> options may be
-used.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify a compression scheme to use when writing image
-data: <b>&minus;c none</b> for no compression, <b>&minus;c
-packbits</b> for the PackBits compression algorithm,
-<b>&minus;c zip</b> for the Deflate compression algorithm,
-<b>&minus;c g3</b> for the CCITT Group 3 compression
-algorithm, <b>&minus;c g4</b> for the CCITT Group 4
-compression algorithm, and <b>&minus;c lzw</b> for
-Lempel-Ziv &amp; Welch (the default).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;r</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Write data with a specified number of rows per strip; by
-default the number of rows/strip is selected so that each
-strip is approximately 8 kilobytes.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;R</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the percentage of the red channel to use
-(default 28).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;G</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the percentage of the green channel to use
-(default 59).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;B</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the percentage of the blue channel to use
-(default 11).</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>pal2rgb</b>(1), <b>tiffinfo</b>(1), <b>tiffcp</b>(1),
-<b>tiffmedian</b>(1), <b>libtiff</b>(3)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/tiff2pdf.1.html b/src/3rdparty/libtiff/html/man/tiff2pdf.1.html
deleted file mode 100644
index 80e0d557ae..0000000000
--- a/src/3rdparty/libtiff/html/man/tiff2pdf.1.html
+++ /dev/null
@@ -1,609 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:19 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFF2PDF</title>
-</head>
-<body>
-
-<h1 align=center>TIFF2PDF</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#EXAMPLES">EXAMPLES</a><br>
-<a href="#BUGS">BUGS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p>tiff2pdf &minus; convert a TIFF image to a PDF
-document</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p><b>tiff2pdf</b> [ <i>options</i> ] <i>input.tiff</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p><i>tiff2pdf</i> opens a TIFF image and writes a PDF
-document to standard output.</p>
-<!-- INDENTATION -->
-<p>The program converts one TIFF file to one PDF file,
-including multiple page TIFF files, tiled TIFF files, black
-and white. grayscale, and color TIFF files that contain data
-of TIFF photometric interpretations of bilevel, grayscale,
-RGB, YCbCr, CMYK separation, and ICC L*a*b* as supported by
-<i>libtiff</i> and PDF.</p>
-<!-- INDENTATION -->
-<p>If you have multiple TIFF files to convert into one PDF
-file then use <i>tiffcp</i> or other program to concatenate
-the files into a multiple page TIFF file. If the input TIFF
-file is of huge dimensions (greater than 10000 pixels height
-or width) convert the input image to a tiled TIFF if it is
-not already.</p>
-<!-- INDENTATION -->
-<p>The standard output is standard output. Set the output
-file name with the <b>&minus;o</b> <i>output.pdf</i>
-option.</p>
-<!-- INDENTATION -->
-<p>All black and white files are compressed into a single
-strip CCITT G4 Fax compressed PDF, unless tiled, where tiled
-black and white images are compressed into tiled CCITT G4
-Fax compressed PDF, <i>libtiff</i> CCITT support is
-assumed.</p>
-<!-- INDENTATION -->
-<p>Color and grayscale data can be compressed using either
-JPEG compression, ITU-T T.81, or Zip/Deflate LZ77
-compression. Set the compression type using the
-<b>&minus;j</b> or <b>&minus;z</b> options. JPEG compression
-support requires that <i>libtiff</i> be configured with JPEG
-support, and Zip/Deflate compression support requires that
-<i>libtiff</i> be configured with Zip support, in
-tiffconf.h. Use only one or the other of <b>&minus;j</b> and
-<b>&minus;z.</b></p>
-<!-- INDENTATION -->
-<p>If the input TIFF contains single strip CCITT G4 Fax
-compressed information, then that is written to the PDF file
-without transcoding, unless the options of no compression
-and no passthrough are set, <b>&minus;d</b> and
-<b>&minus;n.</b></p>
-<!-- INDENTATION -->
-<p>If the input TIFF contains JPEG or single strip
-Zip/Deflate compressed information, and they are configured,
-then that is written to the PDF file without transcoding,
-unless the options of no compression and no passthrough are
-set.</p>
-<!-- INDENTATION -->
-<p>The default page size upon which the TIFF image is placed
-is determined by the resolution and extent of the image
-data. Default values for the TIFF image resolution can be
-set using the <b>&minus;x</b> and <b>&minus;y</b> options.
-The page size can be set using the <b>&minus;p</b> option
-for paper size, or <b>&minus;w</b> and <b>&minus;l</b> for
-paper width and length, then each page of the TIFF image is
-centered on its page. The distance unit for default
-resolution and page width and length can be set by the
-<b>&minus;u</b> option, the default unit is inch.</p>
-<!-- INDENTATION -->
-<p>Various items of the output document information can be
-set with the <b>&minus;e</b>, <b>&minus;c</b>,
-<b>&minus;a</b>, <b>&minus;t</b>, <b>&minus;s</b>, and
-<b>&minus;k</b> options. Setting the argument of the option
-to &quot;&quot; for these tags causes the relevant document
-information field to be not written. Some of the document
-information values otherwise get their information from the
-input TIFF image, the software, author, document name, and
-image description.</p>
-<!-- INDENTATION -->
-<p>The Portable Document Format (PDF) specification is
-copyrighted by Adobe Systems, Incorporated.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p><b>&minus;o</b> <i>output-file</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="21%"></td>
-<td width="77%">
-<p>Set the output to go to file. <i>output-file</i></p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="4" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="11%"></td>
-<td width="4%">
-
-<p><b>&minus;j</b></p>
-</td>
-<td width="5%"></td>
-<td width="77%">
-
-<p>Compress with JPEG (requires <i>libjpeg</i> configured
-with <i>libtiff</i>).</p>
-</td>
-<tr valign="top" align="left">
-<td width="11%"></td>
-<td width="4%">
-
-<p><b>&minus;z</b></p>
-</td>
-<td width="5%"></td>
-<td width="77%">
-
-<p>Compress with Zip/Deflate (requires <i>zlib</i>
-configured with <i>libtiff</i>).</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p><b>&minus;q</b> <i>quality</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="21%"></td>
-<td width="77%">
-<p>Set the compression quality, 1-100 for JPEG.</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="4" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="11%"></td>
-<td width="2%">
-
-<p><b>&minus;n</b></p>
-</td>
-<td width="7%"></td>
-<td width="77%">
-
-<p>Do not allow data to be converted without uncompressing,
-no compressed data passthrough.</p>
-</td>
-<tr valign="top" align="left">
-<td width="11%"></td>
-<td width="2%">
-
-<p><b>&minus;b</b></p>
-</td>
-<td width="7%"></td>
-<td width="77%">
-
-<p>Set PDF &lsquo;&lsquo;Interpolate&rsquo;&rsquo; user
-preference.</p>
-</td>
-<tr valign="top" align="left">
-<td width="11%"></td>
-<td width="2%">
-
-<p><b>&minus;d</b></p>
-</td>
-<td width="7%"></td>
-<td width="77%">
-
-<p>Do not compress (decompress).</p>
-</td>
-<tr valign="top" align="left">
-<td width="11%"></td>
-<td width="2%">
-
-<p><b>&minus;i</b></p>
-</td>
-<td width="7%"></td>
-<td width="77%">
-
-<p>Invert colors.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p><b>&minus;p</b> <i>paper-size</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="21%"></td>
-<td width="77%">
-<p>Set paper size, e.g., <b>letter</b>, <b>legal</b>,
-<b>A4</b>.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p><b>&minus;u</b> [<b>i</b>|<b>m</b>]</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="21%"></td>
-<td width="77%">
-<p>Set distance unit, <b>i</b> for inch, <b>m</b> for
-centimeter.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p><b>&minus;w</b> <i>width</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="21%"></td>
-<td width="77%">
-<p>Set width in units.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p><b>&minus;l</b> <i>length</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="21%"></td>
-<td width="77%">
-<p>Set length in units.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p><b>&minus;x</b> <i>xres</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="21%"></td>
-<td width="77%">
-<p>Set x/width resolution default.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p><b>&minus;y</b> <i>yres</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="21%"></td>
-<td width="77%">
-<p>Set y/length resolution default.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p><b>&minus;r</b> [<b>d</b>|<b>o</b>]</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="21%"></td>
-<td width="77%">
-<p>Set <b>d</b> for resolution default for images without
-resolution, <b>o</b> for resolution override for all
-images.</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="11%"></td>
-<td width="2%">
-
-<p><b>&minus;f</b></p>
-</td>
-<td width="13%"></td>
-<td width="57%">
-
-<p>Set PDF &lsquo;&lsquo;Fit Window&rsquo;&rsquo; user
-preference.</p>
-</td>
-<td width="14%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p><b>&minus;e</b> <i>YYYYMMDDHHMMSS</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="21%"></td>
-<td width="77%">
-<p>Set document information date, overrides image or current
-date/time default, <i>YYYYMMDDHHMMSS.</i></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p><b>&minus;c</b> <i>creator</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="21%"></td>
-<td width="77%">
-<p>Set document information creator, overrides image
-software default.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p><b>&minus;a</b> <i>author</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="21%"></td>
-<td width="77%">
-<p>Set document information author, overrides image artist
-default.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p><b>&minus;t</b> <i>title</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="21%"></td>
-<td width="77%">
-<p>Set document information title, overrides image document
-name default.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p><b>&minus;s</b> <i>subject</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="21%"></td>
-<td width="77%">
-<p>Set document information subject, overrides image image
-description default.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p><b>&minus;k</b> <i>keywords</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="21%"></td>
-<td width="77%">
-<p>Set document information keywords.</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="11%"></td>
-<td width="2%">
-
-<p><b>&minus;h</b></p>
-</td>
-<td width="13%"></td>
-<td width="57%">
-
-<p>List usage reminder to stderr and exit.</p>
-</td>
-<td width="14%">
-</td>
-</table>
-<a name="EXAMPLES"></a>
-<h2>EXAMPLES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p>The following example would generate the file output.pdf
-from input.tiff.</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="20%"></td>
-<td width="79%">
-<pre>tiff2pdf &minus;o output.pdf input.tiff
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p>The following example would generate PDF output from
-input.tiff and write it to standard output.</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="20%"></td>
-<td width="79%">
-<pre>tiff2pdf input.tiff
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p>The following example would generate the file output.pdf
-from input.tiff, putting the image pages on a letter sized
-page, compressing the output with JPEG, with JPEG quality
-75, setting the title to
-&lsquo;&lsquo;Document&rsquo;&rsquo;, and setting the
-&lsquo;&lsquo;Fit Window&rsquo;&rsquo; option.</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="20%"></td>
-<td width="79%">
-<pre>tiff2pdf &minus;p letter &minus;j &minus;q 75 &minus;t &quot;Document&quot; &minus;f &minus;o output.pdf input.tiff
-</pre>
-</td>
-</table>
-<a name="BUGS"></a>
-<h2>BUGS</h2>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p>Please report bugs via the web interface at</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="20%"></td>
-<td width="79%">
-
-<p>http://bugzilla.remotesensing.org/enter_bug.cgi?product=libtiff</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="89%">
-<p><b>libtiff</b>(3), <b>tiffcp</b>(1),
-<b>tiff2ps</b>(1)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/tiff2ps.1.html b/src/3rdparty/libtiff/html/man/tiff2ps.1.html
deleted file mode 100644
index e13bb8f893..0000000000
--- a/src/3rdparty/libtiff/html/man/tiff2ps.1.html
+++ /dev/null
@@ -1,532 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:19 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFF2PS</title>
-</head>
-<body>
-
-<h1 align=center>TIFF2PS</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#EXAMPLES">EXAMPLES</a><br>
-<a href="#BUGS">BUGS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>tiff2ps &minus; convert a <small>TIFF</small> image to
-PostScript&trade;</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiff2ps</b> [ <i>options</i> ] <i>input.tif
-...</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>tiff2ps</i> reads <small>TIFF</small> images and
-writes PostScript or Encapsulated PostScript (EPS) on the
-standard output. By default, <i>tiff2ps</i> writes
-Encapsulated PostScript for the first image in the specified
-<small>TIFF</small> image file.</p>
-<!-- INDENTATION -->
-<p>By default, <i>tiff2ps</i> will generate PostScript that
-fills a printed area specified by the <small>TIFF</small>
-tags in the input file. If the file does not contain
-<i>XResolution</i> or <i>YResolution</i> tags, then the
-printed area is set according to the image dimensions. The
-<b>&minus;w</b> and <b>&minus;h</b> options (see below) can
-be used to set the dimensions of the printed area in inches;
-overriding any relevant <small>TIFF</small> tags.</p>
-<!-- INDENTATION -->
-<p>The PostScript generated for <small>RGB,</small> palette,
-and <small>CMYK</small> images uses the <i>colorimage</i>
-operator. The PostScript generated for greyscale and bilevel
-images uses the <i>image</i> operator. When the
-<i>colorimage</i> operator is used, PostScript code to
-emulate this operator on older PostScript printers is also
-generated. Note that this emulation code can be very
-slow.</p>
-<!-- INDENTATION -->
-<p>Color images with associated alpha data are composited
-over a white background.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;1</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Generate PostScript Level 1 (the default).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;2</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Generate PostScript Level 2.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;3</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Generate PostScript Level 3. It basically allows one to
-use the /flateDecode filter for ZIP compressed TIFF
-images.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;a</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Generate output for all IFDs (pages) in the input
-file.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;b</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the bottom margin for the output (in inches).
-This does not affect the height of the printed image.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Center the image in the output. This option only shows
-an effect if both the <b>&minus;w</b> and the
-<b>&minus;h</b> option are given.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;d</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Set the initial <small>TIFF</small> directory to the
-specified directory number. (NB: Directories are numbered
-starting at zero.) This option is useful for selecting
-individual pages in a multi-page (e.g. facsimile) file.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;e</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force the generation of Encapsulated PostScript (implies
-<b>&minus;z</b>).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;h</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the vertical size of the printed area (in
-inches).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;H</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the maximum height of image (in inches). Images
-with larger sizes will be split in several pages. Option
-<b>&minus;L</b> may be used for specifying size of split
-images overlapping.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;i</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Enable/disable pixel interpolation. This option requires
-a single numeric value: zero to disable pixel interpolation
-and non-zero to enable. The default is enabled.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;L</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the size of overlapping for split images (in
-inches). Used in conjunction with <b>&minus;H</b>
-option.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;l</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the left margin for the output (in inches). This
-does not affect the width of the printed image.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;m</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Where possible render using the <i>imagemask</i>
-PostScript operator instead of the <i>image</i> operator.
-When this option is specified <i>tiff2ps</i> will use
-<i>imagemask</i> for rendering 1 bit deep images. If this
-option is not specified or if the image depth is greater
-than 1 then the <i>image</i> operator is used.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;o</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Set the initial <small>TIFF</small> directory to the
-<small>IFD</small> at the specified file offset. This option
-is useful for selecting thumbnail images and the like which
-are hidden using the <i>SubIFD</i> tag.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;p</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force the generation of (non-Encapsulated)
-PostScript.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;r</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Rotate image by 180 degrees.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;s</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Generate output for a single IFD (page) in the input
-file.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;w</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the horizontal size of the printed area (in
-inches).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;x</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Override resolution units specified in the TIFF as
-centimeters.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;y</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Override resolution units specified in the TIFF as
-inches.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;z</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>When generating PostScript Level 2, data is scaled so
-that it does not image into the <i>deadzone</i> on a page
-(the outer margin that the printing device is unable to
-mark). This option suppresses this behavior. When PostScript
-Level 1 is generated, data is imaged to the entire printed
-page and this option has no affect.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="EXAMPLES"></a>
-<h2>EXAMPLES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The following generates PostScript Level 2 for all pages
-of a facsimile:</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>tiff2ps &minus;a2 fax.tif | lpr
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Note also that if you have version 2.6.1 or newer of
-Ghostscript then you can efficiently preview facsimile
-generated with the above command.</p>
-<!-- INDENTATION -->
-<p>To generate Encapsulated PostScript for a the image at
-directory 2 of an image use:</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>tiff2ps &minus;d 1 foo.tif
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>(Notice that directories are numbered starting at
-zero.)</p>
-<!-- INDENTATION -->
-<p>If you have a long image, it may be split in several
-pages:</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>tiff2ps &minus;h11 &minus;w8.5 &minus;H14 &minus;L.5 foo.tif &gt; foo.ps
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The page size is set to 8.5x11 by <b>&minus;w</b> and
-<b>&minus;h</b> options. We will accept a small amount of
-vertical compression, so <b>&minus;H</b> set to 14. Any
-pages between 11 and 14 inches will be fit onto one page.
-Pages longer than 14 inches are cut off at 11 and continued
-on the next page. The <b>&minus;L.5</b> option says to
-repeat a half inch on the next page (to improve
-readability).</p>
-</td>
-</table>
-<a name="BUGS"></a>
-<h2>BUGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Because PostScript does not support the notion of a
-colormap, 8-bit palette images produce 24-bit PostScript
-images. This conversion results in output that is six times
-bigger than the original image and which takes a long time
-to send to a printer over a serial line. Matters are even
-worse for 4-, 2-, and 1-bit palette images.</p>
-<!-- INDENTATION -->
-<p>Does not handle tiled images when generating PostScript
-Level I output.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>pal2rgb</b>(1), <b>tiffinfo</b>(1), <b>tiffcp</b>(1),
-<b>tiffgt</b>(1), <b>tiffmedian</b>(1), <b>tiff2bw</b>(1),
-<b>tiffsv</b>(1), <b>libtiff</b>(3)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/tiff2rgba.1.html b/src/3rdparty/libtiff/html/man/tiff2rgba.1.html
deleted file mode 100644
index eec3968317..0000000000
--- a/src/3rdparty/libtiff/html/man/tiff2rgba.1.html
+++ /dev/null
@@ -1,162 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:19 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFF2RGBA</title>
-</head>
-<body>
-
-<h1 align=center>TIFF2RGBA</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>tiff2rgba &minus; convert a <small>TIFF</small> image to
-RGBA color space</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiff2rgba</b> [ <i>options</i> ] <i>input.tif
-output.tif</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>Tiff2rgba</i> converts a wide variety of TIFF images
-into an RGBA TIFF image. This includes the ability to
-translate different color spaces and photometric
-interpretation into RGBA, support for alpha blending, and
-translation of many different bit depths into a 32bit RGBA
-image.</p>
-<!-- INDENTATION -->
-<p>Internally this program is implemented using the
-<i>TIFFReadRGBAImage()</i> function, and it suffers any
-limitations of that image. This includes limited support for
-&gt; 8 BitsPerSample images, and flaws with some esoteric
-combinations of BitsPerSample, photometric interpretation,
-block organization and planar configuration.</p>
-<!-- INDENTATION -->
-<p>The generated images are stripped images with four
-samples per pixel (red, green, blue and alpha) or if the
-<b>&minus;n</b> flag is used, three samples per pixel (red,
-green, and blue). The resulting images are always planar
-configuration contiguous. For this reason, this program is a
-useful utility for transform exotic TIFF files into a form
-ingestible by almost any TIFF supporting software.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="11%"></td>
-<td width="2%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify a compression scheme to use when writing image
-data: <b>&minus;c none</b> for no compression (the default),
-<b>&minus;c packbits</b> for the PackBits compression
-algorithm, <b>&minus;c zip</b> for the Deflate compression
-algorithm, <b>&minus;c jpeg</b> for the JPEG compression
-algorithm, and <b>&minus;c lzw</b> for Lempel-Ziv &amp;
-Welch.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="11%"></td>
-<td width="2%">
-
-<p><b>&minus;r</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Write data with a specified number of rows per strip; by
-default the number of rows/strip is selected so that each
-strip is approximately 8 kilobytes.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="11%"></td>
-<td width="2%">
-
-<p><b>&minus;b</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Process the image one block (strip/tile) at a time
-instead of by reading the whole image into memory at once.
-This may be necessary for very large images on systems with
-limited RAM.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="11%"></td>
-<td width="2%">
-
-<p><b>&minus;n</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Drop the alpha component from the output file, producing
-a pure RGB file. Currently this does not work if the
-<b>&minus;b</b> flag is also in effect.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiff2bw</b>(1), <b>TIFFReadRGBAImage</b>(3t),
-<b>libtiff</b>(3)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/tiffcmp.1.html b/src/3rdparty/libtiff/html/man/tiffcmp.1.html
deleted file mode 100644
index a9fca2f15a..0000000000
--- a/src/3rdparty/libtiff/html/man/tiffcmp.1.html
+++ /dev/null
@@ -1,156 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:19 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFCMP</title>
-</head>
-<body>
-
-<h1 align=center>TIFFCMP</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#BUGS">BUGS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>tiffcmp &minus; compare two <small>TIFF</small> files</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffcmp</b> [ <i>options</i> ] <i>file1.tif
-file2.tif</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>Tiffcmp</i> compares the tags and data in two files
-created according to the Tagged Image File Format, Revision
-6.0. The schemes used for compressing data in each file are
-immaterial when data are compared&minus;data are compared on
-a scanline-by-scanline basis after decompression. Most
-directory tags are checked; notable exceptions are:
-<i>GrayResponseCurve</i>, <i>ColorResponseCurve</i>, and
-<i>ColorMap</i> tags. Data will not be compared if any of
-the <i>BitsPerSample</i>, <i>SamplesPerPixel</i>, or
-<i>ImageWidth</i> values are not equal. By default,
-<i>tiffcmp</i> will terminate if it encounters any
-difference.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="11%"></td>
-<td width="2%">
-
-<p><b>&minus;l</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>List each byte of image data that differs between the
-files.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;z</b> <i>number</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>List specified number of image data bytes that differs
-between the files.</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="2%">
-
-<p><b>&minus;t</b></p>
-</td>
-<td width="11%"></td>
-<td width="52%">
-
-<p>Ignore any differences in directory tags.</p>
-</td>
-<td width="23%">
-</td>
-</table>
-<a name="BUGS"></a>
-<h2>BUGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Tags that are not recognized by the library are not
-compared; they may also generate spurious diagnostics.</p>
-<!-- INDENTATION -->
-<p>The image data of tiled files is not compared, since the
-<i>TIFFReadScanline()</i> function is used. An error will be
-reported for tiled files.</p>
-<!-- INDENTATION -->
-<p>The pixel and/or sample number reported in differences
-may be off in some exotic cases.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>pal2rgb</b>(1), <b>tiffcp</b>(1),
-<b>tiffmedian</b>(1), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/tiffcp.1.html b/src/3rdparty/libtiff/html/man/tiffcp.1.html
deleted file mode 100644
index 2b30d5f19a..0000000000
--- a/src/3rdparty/libtiff/html/man/tiffcp.1.html
+++ /dev/null
@@ -1,522 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:19 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFCP</title>
-</head>
-<body>
-
-<h1 align=center>TIFFCP</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#EXAMPLES">EXAMPLES</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>tiffcp &minus; copy (and possibly convert) a
-<small>TIFF</small> file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffcp</b> [ <i>options</i> ] <i>src1.tif ... srcN.tif
-dst.tif</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>tiffcp</i> combines one or more files created
-according to the Tag Image File Format, Revision 6.0 into a
-single <small>TIFF</small> file. Because the output file may
-be compressed using a different algorithm than the input
-files, <i>tiffcp</i> is most often used to convert between
-different compression schemes.</p>
-<!-- INDENTATION -->
-<p>By default, <i>tiffcp</i> will copy all the understood
-tags in a <small>TIFF</small> directory of an input file to
-the associated directory in the output file.</p>
-<!-- INDENTATION -->
-<p><i>tiffcp</i> can be used to reorganize the storage
-characteristics of data in a file, but it is explicitly
-intended to not alter or convert the image data content in
-any way.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;b</b> <i>image</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>subtract the following monochrome image from all others
-processed. This can be used to remove a noise bias from a
-set of images. This bias image is typically an image of
-noise the camera saw with its shutter closed.</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;B</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force output to be written with Big-Endian byte order.
-This option only has an effect when the output file is
-created or overwritten and not when it is appended to.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;C</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Suppress the use of &lsquo;&lsquo;strip
-chopping&rsquo;&rsquo; when reading images that have a
-single strip/tile of uncompressed data.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the compression to use for data written to the
-output file: <b>none</b> for no compression, <b>packbits</b>
-for PackBits compression, <b>lzw</b> for Lempel-Ziv &amp;
-Welch compression, <b>jpeg</b> for baseline JPEG
-compression, <b>zip</b> for Deflate compression, <b>g3</b>
-for CCITT Group 3 (T.4) compression, and <b>g4</b> for CCITT
-Group 4 (T.6) compression. By default <i>tiffcp</i> will
-compress data according to the value of the
-<i>Compression</i> tag found in the source file.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p>The <small>CCITT</small> Group 3 and Group 4 compression
-algorithms can only be used with bilevel data.</p>
-<!-- INDENTATION -->
-<p>Group 3 compression can be specified together with
-several T.4-specific options: <b>1d</b> for 1-dimensional
-encoding, <b>2d</b> for 2-dimensional encoding, and
-<b>fill</b> to force each encoded scanline to be zero-filled
-so that the terminating EOL code lies on a byte boundary.
-Group 3-specific options are specified by appending a
-&lsquo;&lsquo;:&rsquo;&rsquo;-separated list to the
-&lsquo;&lsquo;g3&rsquo;&rsquo; option; e.g. <b>&minus;c
-g3:2d:fill</b> to get 2D-encoded data with byte-aligned EOL
-codes.</p>
-<!-- INDENTATION -->
-<p><small>LZW</small> compression can be specified together
-with a <i>predictor</i> value. A predictor value of 2 causes
-each scanline of the output image to undergo horizontal
-differencing before it is encoded; a value of 1 forces each
-scanline to be encoded without differencing. LZW-specific
-options are specified by appending a
-&lsquo;&lsquo;:&rsquo;&rsquo;-separated list to the
-&lsquo;&lsquo;lzw&rsquo;&rsquo; option; e.g. <b>&minus;c
-lzw:2</b> for <small>LZW</small> compression with horizontal
-differencing.</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;f</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the bit fill order to use in writing output
-data. By default, <i>tiffcp</i> will create a new file with
-the same fill order as the original. Specifying <b>&minus;f
-lsb2msb</b> will force data to be written with the FillOrder
-tag set to <small>LSB2MSB,</small> while <b>&minus;f
-msb2lsb</b> will force data to be written with the FillOrder
-tag set to <small>MSB2LSB.</small></p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;i</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Ignore non-fatal read errors and continue processing of
-the input file.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;l</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the length of a tile (in pixels). <i>tiffcp</i>
-attempts to set the tile dimensions so that no more than 8
-kilobytes of data appear in a tile.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;L</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force output to be written with Little-Endian byte
-order. This option only has an effect when the output file
-is created or overwritten and not when it is appended
-to.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;M</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Suppress the use of memory-mapped files when reading
-images.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;p</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the planar configuration to use in writing image
-data that has one 8-bit sample per pixel. By default,
-<i>tiffcp</i> will create a new file with the same planar
-configuration as the original. Specifying <b>&minus;p
-contig</b> will force data to be written with multi-sample
-data packed together, while <b>&minus;p separate</b> will
-force samples to be written in separate planes.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;r</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the number of rows (scanlines) in each strip of
-data written to the output file. By default (or when value
-<b>0</b> is specified), <i>tiffcp</i> attempts to set the
-rows/strip that no more than 8 kilobytes of data appear in a
-strip. If you specify special value <b>&minus;1</b> it will
-results in infinite number of the rows per strip. The entire
-image will be the one strip in that case.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;s</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force the output file to be written with data organized
-in strips (rather than tiles).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;t</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force the output file to be written with data organized
-in tiles (rather than strips). options can be used to force
-the resultant image to be written as strips or tiles of
-data, respectively.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;w</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the width of a tile (in pixels). <i>tiffcp</i>
-attempts to set the tile dimensions so that no more than 8
-kilobytes of data appear in a tile. <i>tiffcp</i> attempts
-to set the tile dimensions so that no more than 8 kilobytes
-of data appear in a tile.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;,=</b><i>character</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>substitute <i>character</i> for &lsquo;,&rsquo; in
-parsing image directory indices in files. This is necessary
-if filenames contain commas. Note that <b>&minus;,=</b> with
-whitespace immediately following will disable the special
-meaning of the &lsquo;,&rsquo; entirely. See examples.</p>
-</td>
-</table>
-<a name="EXAMPLES"></a>
-<h2>EXAMPLES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The following concatenates two files and writes the
-result using <small>LZW</small> encoding:</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>tiffcp &minus;c lzw a.tif b.tif result.tif
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>To convert a G3 1d-encoded <small>TIFF</small> to a
-single strip of G4-encoded data the following might be
-used:</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>tiffcp &minus;c g4 &minus;r 10000 g3.tif g4.tif
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>(1000 is just a number that is larger than the number of
-rows in the source file.)</p>
-<!-- INDENTATION -->
-<p>To extract a selected set of images from a multi-image
-TIFF file, the file name may be immediately followed by a
-&lsquo;,&rsquo; separated list of image directory indices.
-The first image is always in directory 0. Thus, to copy the
-1st and 3rd images of image file
-&lsquo;&lsquo;album.tif&rsquo;&rsquo; to
-&lsquo;&lsquo;result.tif&rsquo;&rsquo;:</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>tiffcp album.tif,0,2 result.tif
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>A trailing comma denotes remaining images in sequence.
-The following command will copy all image with except the
-first one:</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>tiffcp album.tif,1, result.tif
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Given file &lsquo;&lsquo;CCD.tif&rsquo;&rsquo; whose
-first image is a noise bias followed by images which include
-that bias, subtract the noise from all those images
-following it (while decompressing) with the
-command:</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>tiffcp &minus;c none &minus;b CCD.tif CCD.tif,1, result.tif
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>If the file above were named
-&lsquo;&lsquo;CCD,X.tif&rsquo;&rsquo;, the <b>&minus;,=</b>
-option would be required to correctly parse this filename
-with image numbers, as follows:</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>tiffcp &minus;c none &minus;,=% &minus;b CCD,X.tif CCD,X%1%.tif result.tif
-
-</pre>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>pal2rgb</b>(1), <b>tiffinfo</b>(1), <b>tiffcmp</b>(1),
-<b>tiffmedian</b>(1), <b>tiffsplit</b>(1),
-<b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/tiffcrop.1.html b/src/3rdparty/libtiff/html/man/tiffcrop.1.html
deleted file mode 100644
index 4c25c2921b..0000000000
--- a/src/3rdparty/libtiff/html/man/tiffcrop.1.html
+++ /dev/null
@@ -1,851 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:19 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFCROP</title>
-</head>
-<body>
-
-<h1 align=center>TIFFCROP</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#EXAMPLES">EXAMPLES</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>tiffcrop &minus; copy, convert, crop, extract, or process
-a <small>TIFF</small> file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffcrop</b> [ <i>options</i> ] <i>src1.tif ...
-srcN.tif dst.tif</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>tiffcrop</i> combines one or more files created
-according to the Tag Image File Format, Revision 6.0 into a
-single <small>TIFF</small> file. The output file may be
-compressed using a different algorithm than the input files.
-<i>tiffcrop</i> is most often used to extract portions of an
-image for processing with bar code recognizer or OCR
-software when that software cannot restrict the region of
-interest to a specific portion of the image or to improve
-efficiency when the regions of interest must be rotated. It
-can also be used to subdivide all or part of a processed
-image into smaller sections.</p>
-<!-- INDENTATION -->
-<p>Functions are applied to the input image in the following
-order:</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>cropping, fixed area extraction, zones, inversion, mirroring, rotation.
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Functions are applied to the output image in the
-following order:</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p>output resolution, output margins, rows and columns
-<b>or</b> page size divisions, orientation options, strip,
-tile, byte order, and compression options.</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>By default, <i>tiffcrop</i> will copy all the understood
-tags in a <small>TIFF</small> directory of an input file to
-the associated directory in the output file. Options can be
-used to force the resultant image to be written as strips or
-tiles of data, respectively.</p>
-<!-- INDENTATION -->
-<p><i>tiffcrop</i> can be used to reorganize the storage
-characteristics of data in a file, and to reorganize,
-extract, rotate, and otherwise process the image data as
-specified at the same time whereas tiffcp does not alter the
-image data itself.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;N odd|even|#,#-#,#|last</b></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>Specify one or more series or range(s) of images within
-file to process. The words <b>odd</b> or <b>even</b> may be
-used to specify all odd or even numbered images. The word
-<b>last</b> may be used in place of a number in the sequence
-to indicate the final image in the file without knowing how
-many images there are. Ranges of images may be specified
-with a dash and multiple sets can be indicated by joining
-them in a comma-separated list. eg. use <b>&minus;N
-1,5-7,last</b> to process the 1st, 5th through 7th, and
-final image in the file.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;E top|bottom|left|right</b></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>Specify the top, bottom, left, or right edge as the
-reference from which to calcuate the width and length of
-crop regions or sequence of postions for zones. May be
-abbreviated to first letter.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;U in|cm|px</b></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>Specify the type of units to apply to dimensions for
-margins and crop regions for input and output images. Inches
-or centimeters are converted to pixels using the resolution
-unit specified in the TIFF file (which defaults to inches if
-not specified in the IFD).</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;m #,#,#,#</b></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>Specify margins to be removed from the input image. The
-order must be top, left, bottom, right with only commas
-separating the elements of the list. Margins are scaled
-according to the current units and removed before any other
-extractions are computed. Captial M was in use.</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="6%">
-
-<p><b>&minus;X #</b></p>
-</td>
-<td width="2%"></td>
-<td width="80%">
-
-<p>Set the horizontal (X-axis) dimension of a region to
-extract relative to the specified origin reference. If the
-origin is the top or bottom edge, the X axis value will be
-assumed to start at the left edge.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="6%">
-
-<p><b>&minus;Y #</b></p>
-</td>
-<td width="2%"></td>
-<td width="80%">
-
-<p>Set the vertical (Y-axis) dimension of a region to
-extract relative to the specified origin reference. If the
-origin is the left or right edge, the Y axis value will be
-assumed to start at the top.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;Z #:#,#:#</b></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>Specify zones of the image designated as position X of Y
-equal sized portions measured from the reference edge, eg
-1:3 would be first third of the image starting from the
-reference edge minus any margins specified for the confining
-edges. Multiple zones can be specified as a comma separated
-list but they must reference the same edge. To extract the
-top quarter and the bottom third of an image you would use
-<b>&minus;Z 1:4,3:3.</b></p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;F horiz|vert</b></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>Flip, ie mirror, the image or extracted region
-horizontally or vertically.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;R 90|180|270</b></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>Rotate the image or extracted region 90, 180, or 270
-degrees clockwise.</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="6%">
-
-<p><b>&minus;I</b></p>
-</td>
-<td width="2%"></td>
-<td width="80%">
-
-<p>Invert the colorspace values for grayscale and bilevel
-images. This would be used to correct negative images that
-have incorrect PHOTMETRIC INTERPRETATION tags. No support
-for color images.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="6%">
-
-<p><b>&minus;H #</b></p>
-</td>
-<td width="2%"></td>
-<td width="80%">
-
-<p>Set the horizontal resolution of output images to #
-expressed in the current units.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="6%">
-
-<p><b>&minus;V #</b></p>
-</td>
-<td width="2%"></td>
-<td width="80%">
-
-<p>Set the vertical resolution of the output images to #
-expressed in the current units.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="6%">
-
-<p><b>&minus;J #</b></p>
-</td>
-<td width="2%"></td>
-<td width="80%">
-
-<p>Set the horizontal margin of an output page size to #
-expressed in the current units.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="6%">
-
-<p><b>&minus;K #</b></p>
-</td>
-<td width="2%"></td>
-<td width="80%">
-
-<p>Set the vertical margin of an output page size to #
-expressed in the current units.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;O portrait|landscape|auto</b></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>Set the output orientation of the pages or sections. Auto
-will use the arrangement that requires the fewest pages.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;S cols:rows</b></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>Divide each image into cols across and rows down equal
-sections.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;P page</b></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>Format the output images to fit on page size paper. Use
--P list to show the supported page sizes and dimensions.</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;B</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force output to be written with Big-Endian byte order.
-This option only has an effect when the output file is
-created or overwritten and not when it is appended to.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;C</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Suppress the use of &lsquo;&lsquo;strip
-chopping&rsquo;&rsquo; when reading images that have a
-single strip/tile of uncompressed data.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the compression to use for data written to the
-output file: <b>none</b> for no compression, <b>packbits</b>
-for PackBits compression, <b>lzw</b> for Lempel-Ziv &amp;
-Welch compression, <b>jpeg</b> for baseline JPEG
-compression, <b>zip</b> for Deflate compression, <b>g3</b>
-for CCITT Group 3 (T.4) compression, and <b>g4</b> for CCITT
-Group 4 (T.6) compression. By default <i>tiffcrop</i> will
-compress data according to the value of the
-<i>Compression</i> tag found in the source file.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p>The <small>CCITT</small> Group 3 and Group 4 compression
-algorithms can only be used with bilevel data.</p>
-<!-- INDENTATION -->
-<p>Group 3 compression can be specified together with
-several T.4-specific options: <b>1d</b> for 1-dimensional
-encoding, <b>2d</b> for 2-dimensional encoding, and
-<b>fill</b> to force each encoded scanline to be zero-filled
-so that the terminating EOL code lies on a byte boundary.
-Group 3-specific options are specified by appending a
-&lsquo;&lsquo;:&rsquo;&rsquo;-separated list to the
-&lsquo;&lsquo;g3&rsquo;&rsquo; option; e.g. <b>&minus;c
-g3:2d:fill</b> to get 2D-encoded data with byte-aligned EOL
-codes.</p>
-<!-- INDENTATION -->
-<p><small>LZW</small> compression can be specified together
-with a <i>predictor</i> value. A predictor value of 2 causes
-each scanline of the output image to undergo horizontal
-differencing before it is encoded; a value of 1 forces each
-scanline to be encoded without differencing. LZW-specific
-options are specified by appending a
-&lsquo;&lsquo;:&rsquo;&rsquo;-separated list to the
-&lsquo;&lsquo;lzw&rsquo;&rsquo; option; e.g. <b>&minus;c
-lzw:2</b> for <small>LZW</small> compression with horizontal
-differencing.</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;f</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the bit fill order to use in writing output
-data. By default, <i>tiffcrop</i> will create a new file
-with the same fill order as the original. Specifying
-<b>&minus;f lsb2msb</b> will force data to be written with
-the FillOrder tag set to <small>LSB2MSB,</small> while
-<b>&minus;f msb2lsb</b> will force data to be written with
-the FillOrder tag set to <small>MSB2LSB.</small></p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;i</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Ignore non-fatal read errors and continue processing of
-the input file.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;l</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the length of a tile (in pixels).
-<i>tiffcrop</i> attempts to set the tile dimensions so that
-no more than 8 kilobytes of data appear in a tile.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;L</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force output to be written with Little-Endian byte
-order. This option only has an effect when the output file
-is created or overwritten and not when it is appended
-to.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;M</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Suppress the use of memory-mapped files when reading
-images.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;p</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the planar configuration to use in writing image
-data that has more than one 8-bit sample per pixel. By
-default, <i>tiffcrop</i> will create a new file with the
-same planar configuration as the original. Specifying
-<b>&minus;p contig</b> will force data to be written with
-multi-sample data packed together, while <b>&minus;p
-separate</b> will force samples to be written in separate
-planes.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;r</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the number of rows (scanlines) in each strip of
-data written to the output file. By default (or when value
-<b>0</b> is specified), <i>tiffcrop</i> attempts to set the
-rows/strip that no more than 8 kilobytes of data appear in a
-strip. If you specify the special value <b>-1</b> it will
-results in infinite number of the rows per strip. The entire
-image will be the one strip in that case.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;s</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force the output file to be written with data organized
-in strips (rather than tiles).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;t</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force the output file to be written with data organized
-in tiles (rather than strips).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;w</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the width of a tile (in pixels). <i>tiffcrop</i>
-attempts to set the tile dimensions so that no more than 8
-kilobytes of data appear in a tile. <i>tiffcrop</i> attempts
-to set the tile dimensions so that no more than 8 kilobytes
-of data appear in a tile.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;,={character}</b></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>substitute {character} for &rsquo;,&rsquo; in parsing
-image directory indices in files. This is necessary if
-filenames contain commas. Note that &rsquo;,=&rsquo; with
-whitespace immediately following will disable the special
-meaning of the &rsquo;,&rsquo; entirely. See examples.</p>
-</td>
-</table>
-<a name="EXAMPLES"></a>
-<h2>EXAMPLES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The following concatenates two files and writes the
-result using <small>LZW</small> encoding:</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>tiffcrop -c lzw a.tif b.tif result.tif
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>To convert a G3 1d-encoded <small>TIFF</small> to a
-single strip of G4-encoded data the following might be
-used:</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>tiffcrop -c g4 -r 10000 g3.tif g4.tif
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>(1000 is just a number that is larger than the number of
-rows in the source file.)</p>
-<!-- INDENTATION -->
-<p>To extract a selected set of images from a multi-image
-TIFF file use the -N option described above. Thus, to copy
-the 1st and 3rd images of image file &quot;album.tif&quot;
-to &quot;result.tif&quot;:</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>tiffcrop -N 1,3 album.tif result.tif
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Invert a bilevel image scan of a microfilmed document and
-crop off margins of 0.25 inches on the left and right, 0.5
-inch on the top, nad 0.75 inch on the bottom. From the
-remaining portion of the image, select the second and third
-quarters, ie, one half of the area left from the center to
-each margin.</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>tiffcrop -U in -m 0.5,0.25,0.75,0.25 -E left -Z 2:4,3:4 -I MicrofilmNegative.tif MicrofilmPostiveCenter.tif
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Extract only the final image of a large Architectural E
-sized multipage TIFF file and rotate it 90 degrees clockwise
-while reformatting the output to fit on tabloid sized sheets
-with one quarter of an inch on each side:</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>tiffcrop -N last -R 90 -O auto -P tabloid -U in -J 0.25 -K 0.25 -H 300 -V 300 Big-PlatMap.tif BigPlatMap-Tabloid.tif
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The output images will have a specified resolution of 300
-dpi in both directions. The orientation of each page will be
-determined by whichever choice requires the fewest pages. To
-specify a specific orientation, use the portrait or
-landscape option.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>pal2rgb</b>(1), <b>tiffinfo</b>(1), <b>tiffcmp</b>(1),
-<b>tiffcp</b>(1), <b>tiffmedian</b>(1), <b>tiffsplit</b>(1),
-<b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/tiffdither.1.html b/src/3rdparty/libtiff/html/man/tiffdither.1.html
deleted file mode 100644
index 2427a90125..0000000000
--- a/src/3rdparty/libtiff/html/man/tiffdither.1.html
+++ /dev/null
@@ -1,183 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:19 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFDITHER</title>
-</head>
-<body>
-
-<h1 align=center>TIFFDITHER</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#NOTES">NOTES</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>tiffdither &minus; convert a greyscale image to bilevel
-using dithering</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffdither</b> [ <i>options</i> ] <i>input.tif
-output.tif</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>tiffdither</i> converts a single channel 8-bit
-greyscale image to a bilevel image using Floyd-Steinberg
-error propagation with thresholding.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="2%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="6%"></td>
-<td width="80%">
-
-<p>Specify the compression to use for data written to the
-output file: <b>none</b> for no compression, <b>packbits</b>
-for PackBits compression, <b>lzw</b> for Lempel-Ziv &amp;
-Welch compression, <b>zip</b> for Deflate compression,
-<b>g3</b> for CCITT Group 3 (T.4) compression, and <b>g4</b>
-for CCITT Group 4 (T.6) compression. By default
-<i>tiffdither</i> will compress data according to the value
-of the <i>Compression</i> tag found in the source file.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p>The <small>CCITT</small> Group 3 and Group 4 compression
-algorithms can only be used with bilevel data.</p>
-<!-- INDENTATION -->
-<p>Group 3 compression can be specified together with
-several T.4-specific options: <b>1d</b> for 1-dimensional
-encoding, <b>2d</b> for 2-dimensional encoding, and
-<b>fill</b> to force each encoded scanline to be zero-filled
-so that the terminating EOL code lies on a byte boundary.
-Group 3-specific options are specified by appending a
-&lsquo;&lsquo;:&rsquo;&rsquo;-separated list to the
-&lsquo;&lsquo;g3&rsquo;&rsquo; option; e.g. <b>&minus;c
-g3:2d:fill</b> to get 2D-encoded data with byte-aligned EOL
-codes.</p>
-<!-- INDENTATION -->
-<p><small>LZW</small> compression can be specified together
-with a <i>predictor</i> value. A predictor value of 2 causes
-each scanline of the output image to undergo horizontal
-differencing before it is encoded; a value of 1 forces each
-scanline to be encoded without differencing. LZW-specific
-options are specified by appending a
-&lsquo;&lsquo;:&rsquo;&rsquo;-separated list to the
-&lsquo;&lsquo;lzw&rsquo;&rsquo; option; e.g. <b>&minus;c
-lzw:2</b> for <small>LZW</small> compression with horizontal
-differencing.</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;f</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the bit fill order to use in writing output
-data. By default, <i>tiffdither</i> will create a new file
-with the same fill order as the original. Specifying
-<b>&minus;f lsb2msb</b> will force data to be written with
-the <i>FillOrder</i> tag set to <small>LSB2MSB ,</small>
-while <b>&minus;f msb2lsb</b> will force data to be written
-with the <i>Fill- Order</i> tag set to <small>MSB2LSB
-.</small></p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;t</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Set the threshold value for dithering. By default the
-threshold value is 128.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="NOTES"></a>
-<h2>NOTES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The dither algorithm is taken from the
-<b>tiffmedian</b>(1) program (written by Paul Heckbert).</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>pal2rgb</b>(1), <b>fax2tiff</b>(1),
-<b>tiffinfo</b>(1), <b>tiffcp</b>(1), <b>tiff2bw</b>(1),
-<b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/tiffdump.1.html b/src/3rdparty/libtiff/html/man/tiffdump.1.html
deleted file mode 100644
index abf0662c66..0000000000
--- a/src/3rdparty/libtiff/html/man/tiffdump.1.html
+++ /dev/null
@@ -1,145 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:20 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFDUMP</title>
-</head>
-<body>
-
-<h1 align=center>TIFFDUMP</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>tiffdump &minus; print verbatim information about
-<small>TIFF</small> files</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffdump</b> [ <i>options</i> ] <i>name ...</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>tiffdump</i> displays directory information from files
-created according to the Tag Image File Format, Revision
-6.0. The header of each <small>TIFF</small> file (magic
-number, version, and first directory offset) is displayed,
-followed by the tag contents of each directory in the file.
-For each tag, the name, data type, count, and value(s) is
-displayed. When the symbolic name for a tag or data type is
-known, the symbolic name is displayed followed by it&rsquo;s
-numeric (decimal) value. Tag values are displayed enclosed
-in &lsquo;&lsquo;&lt;&gt;&rsquo;&rsquo; characters
-immediately preceded by the value of the count field. For
-example, an <i>ImageWidth</i> tag might be displayed as
-&lsquo;&lsquo;ImageWidth (256) SHORT (3)
-1&lt;800&gt;&rsquo;&rsquo;.</p>
-<!-- INDENTATION -->
-<p><i>tiffdump</i> is particularly useful for investigating
-the contents of <small>TIFF</small> files that
-<i>libtiff</i> does not understand.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="2%">
-
-<p><b>&minus;h</b></p>
-</td>
-<td width="6%"></td>
-<td width="80%">
-
-<p>Force numeric data to be printed in hexadecimal rather
-than the default decimal.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;m</b> <i>items</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>Change the number of indirect data items that are
-printed. By default, this will be 24.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;o</b> <i>offset</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>Dump the contents of the <small>IFD</small> at the a
-particular file offset. The file offset may be specified
-using the usual C-style syntax; i.e. a leading
-&lsquo;&lsquo;0x&rsquo;&rsquo; for hexadecimal and a leading
-&lsquo;&lsquo;0&rsquo;&rsquo; for octal.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffinfo</b>(1), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/tiffgt.1.html b/src/3rdparty/libtiff/html/man/tiffgt.1.html
deleted file mode 100644
index e8bd4b2312..0000000000
--- a/src/3rdparty/libtiff/html/man/tiffgt.1.html
+++ /dev/null
@@ -1,551 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:20 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFGT</title>
-</head>
-<body>
-
-<h1 align=center>TIFFGT</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#BUGS">BUGS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>tiffgt &minus; display an image stored in a
-<small>TIFF</small> file (Silicon Graphics version)</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffgt</b> [ <i>options</i> ] <i>input.tif ...</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>tiffgt</i> displays one or more images stored using
-the Tag Image File Format, Revision 6.0. Each image is
-placed in a fixed size window that the user must position on
-the display (unless configured otherwise through X
-defaults). If the display has fewer than 24 bitplanes, or if
-the image does not warrant full color, then
-<small>RGB</small> color values are mapped to the closest
-values that exist in the colormap (this is done using the
-<i>rgbi</i> routine found in the graphics utility library
-<b>&minus;lgutil</b>.)</p>
-<!-- INDENTATION -->
-<p><i>tiffgt</i> correctly handles files with any of the
-following characteristics:</p></td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="3" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="15%"></td>
-<td width="34%">
-
-<p><i>BitsPerSample</i></p>
-</td>
-<td width="50%">
-
-<p>1, 2, 4, 8, 16</p>
-</td>
-<tr valign="top" align="left">
-<td width="15%"></td>
-<td width="34%">
-
-<p><i>SamplesPerPixel</i></p>
-</td>
-<td width="50%">
-
-<p>1, 3, 4 (the 4th sample is ignored)</p>
-</td>
-<tr valign="top" align="left">
-<td width="15%"></td>
-<td width="34%">
-
-<p><i>PhotometricInterpretation</i></p>
-</td>
-<td width="50%">
-
-<p>0 (min-is-white), 1 (min-is-black), 2 (RGB), 3
-(palette), 6 (YCbCr)</p>
-</td>
-<tr valign="top" align="left">
-<td width="15%"></td>
-<td width="34%">
-
-<p><i>PlanarConfiguration</i></p>
-</td>
-<td width="50%">
-
-<p>1 (contiguous), 2 (separate)</p>
-</td>
-<tr valign="top" align="left">
-<td width="15%"></td>
-<td width="34%">
-
-<p><i>Orientation</i></p>
-</td>
-<td width="50%">
-
-<p>1 (top-left), 4 (bottom-left)</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Data may be organized as strips or tiles and may be
-compressed with any of the compression algorithms supported
-by the <i>libtiff</i>(3) library.</p>
-<!-- INDENTATION -->
-<p>For palette images (<i>PhotometricInterpretation</i>=3),
-<i>tiffgt</i> inspects the colormap values and assumes
-either 16-bit or 8-bit values according to the maximum
-value. That is, if no colormap entry greater than 255 is
-found, <i>tiffgt</i> assumes the colormap has only 8-bit
-values; otherwise it assumes 16-bit values. This inspection
-is done to handle old images written by previous (incorrect)
-versions of <i>libtiff</i>.</p>
-<!-- INDENTATION -->
-<p><i>tiffgt</i> can be used to display multiple images
-one-at-a-time. The left mouse button switches the display to
-the first image in the <i>next</i> file in the list of files
-specified on the command line. The right mouse button
-switches to the first image in the <i>previous</i> file in
-the list. The middle mouse button causes the first image in
-the first file specified on the command line to be
-displayed. In addition the following keyboard commands are
-recognized:</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="4" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="8%">
-
-<p><b>b</b></p>
-</td>
-<td width="80%">
-
-<p>Use a <i>PhotometricInterpretation</i> of MinIsBlack in
-displaying the current image.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="8%">
-
-<p><b>l</b></p>
-</td>
-<td width="80%">
-
-<p>Use a <i>FillOrder</i> of lsb-to-msb in decoding the
-current image.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="8%">
-
-<p><b>m</b></p>
-</td>
-<td width="80%">
-
-<p>Use a <i>FillOrder</i> of msb-to-lsb in decoding the
-current image.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="8%">
-
-<p><b>c</b></p>
-</td>
-<td width="80%">
-
-<p>Use a colormap visual to display the current image.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="8%">
-
-<p><b>r</b></p>
-</td>
-<td width="80%">
-
-<p>Use a true color (24-bit RGB) visual to display the
-current image.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="8%">
-
-<p><b>w</b></p>
-</td>
-<td width="80%">
-
-<p>Use a <i>PhotometricInterpretation</i> of MinIsWhite in
-displaying the current image.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="8%">
-
-<p><b>W</b></p>
-</td>
-<td width="80%">
-
-<p>Toggle (enable/disable) display of warning messages from
-the <small>TIFF</small> library when decoding images.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="8%">
-
-<p><b>E</b></p>
-</td>
-<td width="80%">
-
-<p>Toggle (enable/disable) display of error messages from
-the <small>TIFF</small> library when decoding images.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="8%">
-
-<p><b>z</b></p>
-</td>
-<td width="80%">
-
-<p>Reset all parameters to their default settings
-(<i>FillOrder</i>, <i>PhotometricInterpretation</i>,
-handling of warnings and errors).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="8%">
-
-<p><b>PageUp</b></p>
-</td>
-<td width="80%">
-
-<p>Display the previous image in the current file or the
-last image in the previous file.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>PageDown</b></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>Display the next image in the current file or the first
-image in the next file.</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="6%">
-
-<p><b>Home</b></p>
-</td>
-<td width="2%"></td>
-<td width="80%">
-
-<p>Display the first image in the current file.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="6%">
-
-<p><b>End</b></p>
-</td>
-<td width="2%"></td>
-<td width="80%">
-
-<p>Display the last image in the current file
-(unimplemented).</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force image display in a colormap window.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;d</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify an image to display by directory number. By
-default the first image in the file is displayed.
-Directories are numbered starting at zero.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;e</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Enable reporting of error messages from the
-<small>TIFF</small> library. By default <i>tiffgt</i>
-silently ignores images that cannot be read.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;f</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force <i>tiffgt</i> to run as a foreground process. By
-default <i>tiffgt</i> will place itself in the background
-once it has opened the requested image file.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;l</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force the presumed bit ordering to be <small>LSB</small>
-to <small>MSB.</small></p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;m</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force the presumed bit ordering to be <small>MSB</small>
-to <small>LSB.</small></p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;o</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify an image to display by directory offset. By
-default the first image in the file is displayed.
-Directories offsets may be specified using C-style syntax;
-i.e. a leading &lsquo;&lsquo;0x&rsquo;&rsquo; for
-hexadecimal and a leading &lsquo;&lsquo;0&rsquo;&rsquo; for
-octal.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;p</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Override the value of the
-<i>PhotometricInterpretation</i> tag; the parameter may be
-one of: <b>miniswhite</b>, <b>minisblack</b>, <b>rgb</b>,
-<b>palette</b>, <b>mask</b>, <b>separated</b>, <b>ycbcr</b>,
-and <b>cielab</b>.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;r</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Force image display in a full color window.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;s</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Stop on the first read error. By default all errors in
-the input data are ignored and <i>tiffgt</i> does it&rsquo;s
-best to display as much of an image as possible.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;w</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Enable reporting of warning messages from the
-<small>TIFF</small> library. By default <i>tiffgt</i>
-ignores warning messages generated when reading an
-image.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;v</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Place information in the title bar describing what type
-of window (full color or colormap) is being used, the name
-of the input file, and the directory index of the image (if
-non-zero). By default, the window type is not shown in the
-title bar.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="BUGS"></a>
-<h2>BUGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Images wider and taller than the display are silently
-truncated to avoid crashing old versions of the window
-manager.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffdump</b>(1), <b>tiffinfo</b>(1), <b>tiffcp</b>(1),
-<b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/tiffinfo.1.html b/src/3rdparty/libtiff/html/man/tiffinfo.1.html
deleted file mode 100644
index 4863ed3762..0000000000
--- a/src/3rdparty/libtiff/html/man/tiffinfo.1.html
+++ /dev/null
@@ -1,196 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:20 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFINFO</title>
-</head>
-<body>
-
-<h1 align=center>TIFFINFO</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>tiffinfo &minus; print information about
-<small>TIFF</small> files</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffinfo</b> [ <i>options</i> ] <i>input.tif
-...</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>Tiffinfo</i> displays information about files created
-according to the Tag Image File Format, Revision 6.0. By
-default, the contents of each <small>TIFF</small> directory
-in each file is displayed, with the value of each tag shown
-symbolically (where sensible).</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Display the colormap and color/gray response curves, if
-present.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;D</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>In addition to displaying the directory tags, read and
-decompress all the data in each image (but not display
-it).</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;d</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>In addition to displaying the directory tags, print each
-byte of decompressed data in hexadecimal.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;j</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Display any <small>JPEG</small> -related tags that are
-present.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;o</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Set the initial <small>TIFF</small> directory according
-to the specified file offset. The file offset may be
-specified using the usual C-style syntax; i.e. a leading
-&lsquo;&lsquo;0x&rsquo;&rsquo; for hexadecimal and a leading
-&lsquo;&lsquo;0&rsquo;&rsquo; for octal.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;s</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Display the offsets and byte counts for each data strip
-in a directory.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;z</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Enable strip chopping when reading image data.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;#</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Set the initial <small>TIFF</small> directory to
-<i>#</i>.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>pal2rgb</b>(1), <b>tiffcp</b>(1), <b>tiffcmp</b>(1),
-<b>tiffmedian</b>(1), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/tiffmedian.1.html b/src/3rdparty/libtiff/html/man/tiffmedian.1.html
deleted file mode 100644
index 59613177c9..0000000000
--- a/src/3rdparty/libtiff/html/man/tiffmedian.1.html
+++ /dev/null
@@ -1,183 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:20 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFMEDIAN</title>
-</head>
-<body>
-
-<h1 align=center>TIFFMEDIAN</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#NOTES">NOTES</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>tiffmedian &minus; apply the median cut algorithm to data
-in a <small>TIFF</small> file</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffmedian</b> [ <i>options</i> ] <i>input.tif
-output.tif</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>tiffmedian</i> applies the median cut algorithm to an
-<small>RGB</small> image in <i>input.tif</i> to generate a
-palette image that is written to <i>output.tif</i>. The
-generated colormap has, by default, 256 entries. The image
-data is quantized by mapping each pixel to the closest color
-values in the colormap.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="11%"></td>
-<td width="2%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the compression to use for data written to the
-output file: <b>none</b> for no compression, <b>packbits</b>
-for PackBits compression, <b>lzw</b> for Lempel-Ziv &amp;
-Welch compression, and <b>zip</b> for Deflate compression.
-By default <i>tiffmedian</i> will compress data according to
-the value of the <i>Compression</i> tag found in the source
-file.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p><small>LZW</small> compression can be specified together
-with a <i>predictor</i> value. A predictor value of 2 causes
-each scanline of the output image to undergo horizontal
-differencing before it is encoded; a value of 1 forces each
-scanline to be encoded without differencing. LZW-specific
-options are specified by appending a
-&lsquo;&lsquo;:&rsquo;&rsquo;-separated list to the
-&lsquo;&lsquo;lzw&rsquo;&rsquo; option; e.g. <b>&minus;c
-lzw:2</b> for <small>LZW</small> compression with horizontal
-differencing.</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="2%">
-
-<p><b>&minus;C</b></p>
-</td>
-<td width="6%"></td>
-<td width="80%">
-
-<p>Specify the number of entries to use in the generated
-colormap. By default all 256 entries/colors are used.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="2%">
-
-<p><b>&minus;f</b></p>
-</td>
-<td width="6%"></td>
-<td width="80%">
-
-<p>Apply Floyd-Steinberg dithering before selecting a
-colormap entry.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="2%">
-
-<p><b>&minus;r</b></p>
-</td>
-<td width="6%"></td>
-<td width="80%">
-
-<p>Specify the number of rows (scanlines) in each strip of
-data written to the output file. By default,
-<i>tiffmedian</i> attempts to set the rows/strip that no
-more than 8 kilobytes of data appear in a strip.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="NOTES"></a>
-<h2>NOTES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>This program is derived from Paul Heckbert&rsquo;s
-<i>median</i> program.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>pal2rgb</b>(1), <b>tiffinfo</b>(1), <b>tiffcp</b>(1),
-<b>tiffcmp</b>(1), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p><b>Color Image Quantization for Frame Buffer Display</b>,
-Paul Heckbert, SIGGRAPH proceedings, 1982, pp. 297-307.</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/tiffset.1.html b/src/3rdparty/libtiff/html/man/tiffset.1.html
deleted file mode 100644
index fb4d0ed580..0000000000
--- a/src/3rdparty/libtiff/html/man/tiffset.1.html
+++ /dev/null
@@ -1,176 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:20 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFSET</title>
-</head>
-<body>
-
-<h1 align=center>TIFFSET</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#EXAMPLES">EXAMPLES</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>tiffset &minus; set a field in a <small>TIFF</small>
-header</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffset</b> [ <i>options</i> ] <i>filename.tif</i></p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>Tiffset</i> sets the value of a <small>TIFF</small>
-header to a specified value.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;s</b> <i>tagnumber</i> [ <i>count</i> ]
-<i>value ...</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>Set the value of the named tag to the value or values
-specified.</p>
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>&minus;sf</b> <i>tagnumber filename</i></p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="19%"></td>
-<td width="80%">
-<p>Set the value of the tag to the contents of filename.
-This option is supported for ASCII tags only.</p>
-</td>
-</table>
-<a name="EXAMPLES"></a>
-<h2>EXAMPLES</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The following example sets the image description tag
-(270) of a.tif to the contents of the file descrip:</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>tiffset &minus;sf 270 descrip a.tif
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>The following example sets the artist tag (315) of a.tif
-to the string
-&lsquo;&lsquo;Anonymous&rsquo;&rsquo;:</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>tiffset &minus;s 305 Anonymous a.tif
-</pre>
-</td>
-</table>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>This example sets the resolution of the file a.tif to 300
-dpi:</p></td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<pre>tiffset &minus;s 296 2 a.tif
-tiffset &minus;s 282 300.0 a.tif
-tiffset &minus;s 283 300.0 a.tif
-</pre>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffdump</b>(1), <b>tiffinfo</b>(1), <b>tiffcp</b>(1),
-<b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/tiffsplit.1.html b/src/3rdparty/libtiff/html/man/tiffsplit.1.html
deleted file mode 100644
index adbc2f8899..0000000000
--- a/src/3rdparty/libtiff/html/man/tiffsplit.1.html
+++ /dev/null
@@ -1,102 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:20 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFSPLIT</title>
-</head>
-<body>
-
-<h1 align=center>TIFFSPLIT</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#BUGS">BUGS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>tiffsplit &minus; split a multi-image <small>TIFF</small>
-into single-image <small>TIFF</small> files</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffsplit</b> <i>src.tif</i> [ <i>prefix</i> ]</p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>tiffsplit</i> takes a multi-directory (page)
-<small>TIFF</small> file and creates one or more
-single-directory (page) <small>TIFF</small> files from it.
-The output files are given names created by concatenating a
-prefix, a lexically ordered suffix in the range
-[<i>aaa</i>-<i>zzz</i>], the suffix <i>.tif</i> (e.g.
-<i>xaaa.tif</i>, <i>xaab.tif</i>, <i>xzzz.tif</i>). If a
-prefix is not specified on the command line, the default
-prefix of <i>x</i> is used.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>None.</p>
-</td>
-</table>
-<a name="BUGS"></a>
-<h2>BUGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Only a select set of &lsquo;&lsquo;known
-tags&rsquo;&rsquo; is copied when splitting.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffcp</b>(1), <b>tiffinfo</b>(1),
-<b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/man/tiffsv.1.html b/src/3rdparty/libtiff/html/man/tiffsv.1.html
deleted file mode 100644
index fb484b01f8..0000000000
--- a/src/3rdparty/libtiff/html/man/tiffsv.1.html
+++ /dev/null
@@ -1,207 +0,0 @@
-<!-- Creator : groff version 1.18.1 -->
-<!-- CreationDate: Fri Jul 13 17:43:20 2007 -->
-<html>
-<head>
-<meta name="generator" content="groff -Thtml, see www.gnu.org">
-<meta name="Content-Style" content="text/css">
-<title>TIFFSV</title>
-</head>
-<body>
-
-<h1 align=center>TIFFSV</h1>
-<a href="#NAME">NAME</a><br>
-<a href="#SYNOPSIS">SYNOPSIS</a><br>
-<a href="#DESCRIPTION">DESCRIPTION</a><br>
-<a href="#OPTIONS">OPTIONS</a><br>
-<a href="#NOTE">NOTE</a><br>
-<a href="#BUGS">BUGS</a><br>
-<a href="#SEE ALSO">SEE ALSO</a><br>
-
-<hr>
-<a name="NAME"></a>
-<h2>NAME</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>tiffsv &minus; save an image from the framebuffer in a
-<small>TIFF</small> file (Silicon Graphics version)</p>
-</td>
-</table>
-<a name="SYNOPSIS"></a>
-<h2>SYNOPSIS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>tiffsv</b> [ <i>options</i> ] <i>output.tif</i> [
-<i>x1 x2 y1 y2</i> ]</p>
-</td>
-</table>
-<a name="DESCRIPTION"></a>
-<h2>DESCRIPTION</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><i>tiffsv</i> saves all or part of the framebuffer in a
-file using the Tag Image File Format, Revision 6.0. By
-default, the image is saved with data samples packed
-(<i>PlanarConfiguration</i>=1), compressed with the
-Lempel-Ziv &amp; Welch algorithm (<i>Compression</i>=5), and
-with each strip no more than 8 kilobytes. These
-characteristics can be overridden, or explicitly specified
-with the options described below.</p>
-</td>
-</table>
-<a name="OPTIONS"></a>
-<h2>OPTIONS</h2>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;b</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Save the image as a greyscale image as if it were
-processed by <i>tiff2bw</i>(1). This option is included for
-compatibility with the standard <i>scrsave</i>(6D)
-program.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;c</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the compression to use for data written to the
-output file: <b>none</b> for no compression, <b>packbits</b>
-for PackBits compression, <b>jpeg</b> for baseline JPEG
-compression, <b>zip</b> for Deflate compression, and
-<b>lzw</b> for Lempel-Ziv &amp; Welch compression
-(default).</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="17%"></td>
-<td width="82%">
-<p><small>LZW</small> compression can be specified together
-with a <i>predictor</i> value. A predictor value of 2 causes
-each scanline of the output image to undergo horizontal
-differencing before it is encoded; a value of 1 forces each
-scanline to be encoded without differencing. LZW-specific
-options are specified by appending a
-&lsquo;&lsquo;:&rsquo;&rsquo;-separated list to the
-&lsquo;&lsquo;lzw&rsquo;&rsquo; option; e.g. <b>&minus;c
-lzw:2</b> for <small>LZW</small> compression with horizontal
-differencing.</p>
-</td>
-</table>
-<!-- TABS -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="5" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;p</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the planar configuration to use in writing image
-data. By default, <i>tiffsv</i> will create a new file with
-the data samples packed contiguously. Specifying <b>&minus;p
-contig</b> will force data to be written with multi-sample
-data packed together, while <b>&minus;p separate</b> will
-force samples to be written in separate planes.</p>
-</td>
-<td width="0%">
-</td>
-<tr valign="top" align="left">
-<td width="10%"></td>
-<td width="3%">
-
-<p><b>&minus;r</b></p>
-</td>
-<td width="5%"></td>
-<td width="80%">
-
-<p>Specify the number of rows (scanlines) in each strip of
-data written to the output file. By default, <i>tiffsv</i>
-attempts to set the rows/strip that no more than 8 kilobytes
-of data appear in a strip.</p>
-</td>
-<td width="0%">
-</td>
-</table>
-<a name="NOTE"></a>
-<h2>NOTE</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>Except for the use of <small>TIFF,</small> this program
-is equivalent to the standard <i>scrsave</i> program. This
-means, for example, that you can use it in conjunction with
-the standard <i>icut</i> program simply by creating a link
-called <i>scrsave</i>, or by creating a shell script called
-<i>scrsave</i> that invokes <i>tiffgt</i> with the
-appropriate options.</p>
-</td>
-</table>
-<a name="BUGS"></a>
-<h2>BUGS</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p>If data are saved compressed and in separate planes, then
-the rows in each strip is silently set to one to avoid
-limitations in the <b>libtiff</b>(3TIFF) library.</p>
-</td>
-</table>
-<a name="SEE ALSO"></a>
-<h2>SEE ALSO</h2>
-<!-- INDENTATION -->
-<table width="100%" border=0 rules="none" frame="void"
- cols="2" cellspacing="0" cellpadding="0">
-<tr valign="top" align="left">
-<td width="8%"></td>
-<td width="91%">
-<p><b>scrsave</b>(6D) <b>pal2rgb</b>(1), <b>tiffdump</b>(1),
-<b>tiffgt</b>(1), <b>tiffinfo</b>(1), <b>tiffcp</b>(1),
-<b>tiffmedian</b>(1), <b>libtiff</b>(3TIFF)</p>
-<!-- INDENTATION -->
-<p>Libtiff library home page:
-<b>http://www.remotesensing.org/libtiff/</b></p>
-</td>
-</table>
-<hr>
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/misc.html b/src/3rdparty/libtiff/html/misc.html
deleted file mode 100644
index aed91a9213..0000000000
--- a/src/3rdparty/libtiff/html/misc.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Acknowledgments and Other Issues
-</TITLE>
-</HEAD>
-<BODY BGCOLOR=white>
-<FONT FACE="Arial, Helvetica, Sans">
-<H1>
-<IMG SRC=images/ring.gif WIDTH=124 HEIGHT=124 ALIGN=left BORDER=1 HSPACE=6>
-Acknowledgments and Other Issues
-</H1>
-
-<P>
-Silicon Graphics has seen fit to allow us to give this work away. It
-is free. There is no support or guarantee of any sort as to its
-operations, correctness, or whatever. If you do anything useful with
-all or parts of it you need to honor the copyright notices. It would
-also be nice to be acknowledged.<p>
-
-<BR CLEAR=left>
-
-<H2>Acknowledgements</H2>
-
-The libtiff software was written by Sam Leffler while working for
-Silicon Graphics.<p>
-
-The LZW algorithm is derived from the compress program (the proper attribution
-is included in the source code). The Group 3 fax stuff originated as code
-from Jef Poskanzer, but has since been rewritten several times. The latest
-version uses an algorithm from Frank Cringle -- consult
-<TT>libtiff/mkg3states.c</TT> and <TT>libtiff/tif_fax3.h</TT> for further
-information. The JPEG support was written by Tom Lane and is dependent on the
-excellent work of Tom Lane and the Independent JPEG Group (IJG) who distribute
-their work under friendly licensing similar to this software. Joris Van Damme
-implemented the robust Old JPEG decoder (as included in libtiff since version
-3.9.0, there was another Old JPEG module in older releases, which was
-incomplete and unsuitable for many existing images of that format). JBIG
-module was written by Lee Howard and depends on JBIG library from the Markus
-Kuhn. Many other people have by now helped with bug fixes and code; a few of
-the more persistent contributors have been:
-
-<PRE>
- Bjorn P. Brox
- Dan McCoy
- J.T. Conklin
- Richard Minner
- Frank D. Cringle
- Richard Mlynarik
- Soren Pingel Dalsgaard
- Niles Ritter
- Steve Johnson
- Karsten Spang
- Tom Lane
- Peter Smith
- Brent Roman
- Mike Welles
- Frank Warmerdam
- Greg Ward
- Stanislav Brabec
- Roman Shpount
- Peter Skarpetis
- Arvan Pritchard
- Bernt Herd
- Joseph Orost
- Phil Beffery
- Ivo Penzar
- Francois Dagand
- Albert Chin-A-Young
- Bruce A. Mallett
- Dwight Kelly
- Andrey Kiselev
- Ross Finlayson
- Dmitry V. Levin
- Bob Friesenhahn
- Lee Howard
- Joris Van Damme
- Tavis Ormandy
- Richard Nolde
-</PRE>
-
-(my apology to anyone that was inadvertently not listed.)
-
-<H2>Use and Copyright</H2>
-
-<P><H5><PRE>
-Copyright (c) 1988-1997 Sam Leffler
-Copyright (c) 1991-1997 Silicon Graphics, Inc.
-
-Permission to use, copy, modify, distribute, and sell this software and
-its documentation for any purpose is hereby granted without fee, provided
-that (i) the above copyright notices and this permission notice appear in
-all copies of the software and related documentation, and (ii) the names of
-Sam Leffler and Silicon Graphics may not be used in any advertising or
-publicity relating to the software without the specific, prior written
-permission of Sam Leffler and Silicon Graphics.
-
-THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
-EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
-WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-
-IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
-LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-OF THIS SOFTWARE.
-</PRE></H5>
-
-<P>
-<HR>
-
-
-Last updated: $Date: 2007/02/24 15:47:04 $
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/support.html b/src/3rdparty/libtiff/html/support.html
deleted file mode 100644
index f6f5d60877..0000000000
--- a/src/3rdparty/libtiff/html/support.html
+++ /dev/null
@@ -1,655 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html lang="en">
-<head>
- <title>TIFF 6.0 Specification Coverage</title>
- <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
- <meta http-equiv="content-language" content="en">
- <style type="text/css">
- <!--
- th {text-align: left; vertical-align: top; font-style: italic; font-weight: normal}
- -->
- </style>
-</head>
-<body lang="en" text="#000000" bgcolor="#ffffff" link="#0000ff" alink="#0000ff" vlink="#0000ff">
- <table border="0" cellspacing="0" cellpadding="0">
- <tr>
- <td style="padding-left: 1em; padding-right: 1em"><img src="images/strike.gif" width="128" height="100" alt=""></td>
- <td>
- <h1>TIFF 6.0 Specification Coverage</h1>
- <p>
- The library is capable of dealing with images that are written to
- follow the 5.0 or 6.0 TIFF spec. There is also considerable support
- for some of the more esoteric portions of the 6.0 TIFF spec.
- </p>
- </td>
- </tr>
- </table>
- <br>
- <table border="1" cellspacing="0" cellpadding="5">
- <tr>
- <th>Core requirements</th>
- <td>
- <p>
- Both <tt>"MM"</tt> and <tt>"II"</tt> byte orders are handled.
- Both packed and separated planar configuration of samples.
- Any number of samples per pixel (memory permitting).
- Any image width and height (memory permitting).
- Multiple subfiles can be read and written.
- Editing is <b>not</b> supported in that related subfiles (e.g.
- a reduced resolution version of an image) are not automatically
- updated.
- </p>
- <p>
- Tags handled: <tt>ExtraSamples</tt>, <tt>ImageWidth</tt>,
- <tt>ImageLength</tt>, <tt>NewSubfileType</tt>, <tt>ResolutionUnit</tt>.
- <tt>Rowsperstrip</tt>, <tt>StripOffsets</tt>, <tt>StripByteCounts</tt>,
- <tt>XResolution</tt>, <tt>YResolution</tt>
- </p>
- </td>
- </tr>
- <tr>
- <th>Tiled Images</th>
- <td><tt>TileWidth</tt>, <tt>TileLength</tt>, <tt>TileOffsets</tt>,
- <tt>TileByteCounts</tt></td>
- </tr>
- <tr>
- <th>Image Colorimetry Information</th>
- <td><tt>WhitePoint</tt>, <tt>PrimaryChromaticities</tt>, <tt>TransferFunction</tt>,
- <tt>ReferenceBlackWhite</tt></td>
- </tr>
- <tr>
- <th>Class B for bilevel images</th>
- <td><tt>SamplesPerPixel</tt> = 1<br>
- <tt>BitsPerSample</tt> = 1<br>
- <tt>Compression</tt> = 1 (none), 2 (CCITT 1D), or 32773 (PackBits)<br>
- <tt>PhotometricInterpretation</tt> = 0 (Min-is-White), 1 (Min-is-Black)</td>
- </tr>
- <tr>
- <th>Class G for grayscale images</th>
- <td><tt>SamplesPerPixel</tt> = 1<br>
- <tt>BitsPerSample</tt> = 4, 8<br>
- <tt>Compression</tt> = 1 (none) 5 (LZW)<br>
- <tt>PhotometricInterpretation</tt> = 0 (Min-is-White), 1 (Min-is-Black)</td>
- </tr>
- <tr>
- <th>Class P for palette color images</th>
- <td><tt>SamplesPerPixel</tt> = 1<br>
- <tt>BitsPerSample</tt> = 1-8<br>
- <tt>Compression</tt> = 1 (none) 5 (LZW)<br>
- <tt>PhotometricInterpretation</tt> = 3 (Palette RGB)<br>
- <tt>ColorMap</tt></td>
- </tr>
- <tr>
- <th>Class R for RGB full color images</th>
- <td><tt>SamplesPerPixel</tt> = 3<br>
- <tt>BitsPerSample</tt> = &lt;8,8,8&gt;<br>
- <tt>PlanarConfiguration</tt> = 1, 2<br>
- <tt>Compression</tt> = 1 (none) 5 (LZW)<br>
- <tt>PhotometricInterpretation</tt> = 2 (RGB)</td>
- </tr>
- <tr>
- <th>Class F for facsimile</th>
- <td>(<i>Class B tags plus...</i>)<br>
- <tt>Compression</tt> = 3 (CCITT Group 3), 4 (CCITT Group 4)<br>
- <tt>FillOrder</tt> = 1 (MSB), 2 (LSB)<br>
- <tt>Group3Options</tt> = 1 (2d encoding), 4 (zero fill), 5 (2d+fill)<br>
- <tt>ImageWidth</tt> = 1728, 2048, 2482<br>
- <tt>NewSubFileType</tt> = 2<br>
- <tt>ResolutionUnit</tt> = 2 (Inch), 3 (Centimeter)<br>
- <tt>PageNumber</tt>,
- <tt>XResolution</tt>,
- <tt>YResolution</tt>,
- <tt>Software</tt>,
- <tt>BadFaxLines</tt>,
- <tt>CleanFaxData</tt>,
- <tt>ConsecutiveBadFaxLines</tt>,
- <tt>DateTime</tt>,
- <tt>DocumentName</tt>,
- <tt>ImageDescription</tt>,
- <tt>Orientation</tt></td>
- </tr>
- <tr>
- <th>Class S for separated images</th>
- <td><tt>SamplesPerPixel</tt> = 4<br>
- <tt>PlanarConfiguration</tt> = 1, 2<br>
- <tt>Compression</tt> = 1 (none), 5 (LZW)<br>
- <tt>PhotometricInterpretation</tt> = 5 (Separated)<br>
- <tt>InkSet</tt> = 1 (CMYK)<br>
- <tt>DotRange</tt>,
- <tt>InkNames</tt>,
- <tt>DotRange</tt>,
- <tt>TargetPrinter</tt></td>
- </tr>
- <tr>
- <th>Class Y for YCbCr images</th>
- <td><tt>SamplesPerPixel</tt> = 3<br>
- <tt>BitsPerSample</tt> = &lt;8,8,8&gt;<br>
- <tt>PlanarConfiguration</tt> = 1, 2<br>
- <tt>Compression</tt> = 1 (none), 5 (LZW), 7 (JPEG)<br>
- <tt>PhotometricInterpretation</tt> = 6 (YCbCr)<br>
- <tt>YCbCrCoefficients</tt>,
- <tt>YCbCrSubsampling</tt>,
- <tt>YCbCrPositioning</tt><br>
- (<i>colorimetry info from Appendix H; see above</i>)</td>
- </tr>
- <tr>
- <th>Class "JPEG" for JPEG images (per TTN2)</th>
- <td><tt>PhotometricInterpretation</tt> = 1 (grayscale), 2 (RGB), 5 (CMYK), 6 (YCbCr)<br>
- (<i>Class Y tags if YCbCr</i>)<br>
- (<i>Class S tags if CMYK</i>)<br>
- <tt>Compression</tt> = 7 (JPEG)</td>
- </tr>
- </table>
- <p>
- In addition, the library supports some optional compression algorithms
- that are, in some cases, of dubious value.
- </p>
- <table border="0" cellspacing="0" cellpadding="2">
- <tr><th>Compression tag value</th><th>Compression algorithm</th></tr>
- <tr><td>32766</td><td>NeXT 2-bit encoding</td></tr>
- <tr><td>32809</td><td>ThunderScan 4-bit encoding</td></tr>
- <tr><td>32909</td><td>Pixar companded 11-bit ZIP encoding</td></tr>
- <tr><td>32946</td><td>PKZIP-style Deflate encoding (experimental)</td></tr>
- <tr><td>34676</td><td>SGI 32-bit Log Luminance encoding (experimental)</td></tr>
- <tr><td>34677</td><td>SGI 24-bit Log Luminance encoding (experimental)</td></tr>
- </table>
- <br>
- <p>
- Note that there is no support for the JPEG-related tags defined
- in the 6.0 specification; the JPEG support is based on the post-6.0
- proposal given in TIFF Technical Note #2.
- </p>
- <table>
- <tr>
- <td valign=top><img src="images/info.gif" width="32" height="32" alt=""></td>
- <td>For more information on the experimental Log Luminance encoding
- consult the materials available at
- <a href="http://www.anyhere.com/gward/pixformat/tiffluv.html">http://www.anyhere.com/gward/pixformat/tiffluv.html</a>.</td>
- </tr>
- </table>
- <br>
- <p>
- The following table shows the tags that are recognized
- and how they are used by the library. If no use is indicated,
- then the library reads and writes the tag, but does not use it internally.
- </p>
- <table border="1" cellspacing="0" cellpadding="5">
- <tr>
- <th>Tag Name</th>
- <th>Value</th>
- <th>R/W</th>
- <th>Library's Use (Comments)</th>
- </tr>
- <tr>
- <td><tt>NewSubFileType</tt></td>
- <td>254</td>
- <td>R/W</td>
- <td>none (called <tt>SubFileType</tt> in &lt;tiff.h&gt;)</td>
- </tr>
- <tr>
- <td><tt>SubFileType</tt></td>
- <td>255</td>
- <td>R/W</td>
- <td>none (called <tt>OSubFileType</tt> in &lt;tiff.h&gt;)</td>
- </tr>
- <tr>
- <td><tt>ImageWidth</tt></td>
- <td>256</td>
- <td>R/W</td>
- <td>lots</td>
- </tr>
- <tr>
- <td><tt>ImageLength</tt></td>
- <td>257</td>
- <td>R/W</td>
- <td>lots</td>
- </tr>
- <tr>
- <td><tt>BitsPerSample</tt></td>
- <td>258</td>
- <td>R/W</td>
- <td>lots</td>
- </tr>
- <tr>
- <td><tt>Compression</tt></td>
- <td>259</td>
- <td>R/W</td>
- <td>to select appropriate codec</td>
- </tr>
- <tr>
- <td><tt>PhotometricInterpretation</tt></td>
- <td>262</td>
- <td>R/W</td>
- <td>lots</td>
- </tr>
- <tr>
- <td><tt>Thresholding</tt></td>
- <td>263</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>CellWidth</tt></td>
- <td>264</td>
- <td>&nbsp;</td>
- <td>parsed but ignored</td>
- </tr>
- <tr>
- <td><tt>CellLength</tt></td>
- <td>265</td>
- <td>&nbsp;</td>
- <td>parsed but ignored</td>
- </tr>
- <tr>
- <td><tt>FillOrder</tt></td>
- <td>266</td>
- <td>R/W</td>
- <td>control bit order</td>
- </tr>
- <tr>
- <td><tt>DocumentName</tt></td>
- <td>269</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>ImageDescription</tt></td>
- <td>270</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>Make</tt></td>
- <td>271</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>Model</tt></td>
- <td>272</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>StripOffsets</tt></td>
- <td>273</td>
- <td>R/W</td>
- <td>data i/o</td>
- </tr>
- <tr>
- <td><tt>Orientation</tt></td>
- <td>274</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>SamplesPerPixel</tt></td>
- <td>277</td>
- <td>R/W</td>
- <td>lots</td>
- </tr>
- <tr>
- <td><tt>RowsPerStrip</tt></td>
- <td>278</td>
- <td>R/W</td>
- <td>data i/o</td>
- </tr>
- <tr>
- <td><tt>StripByteCounts</tt></td>
- <td>279</td>
- <td>R/W</td>
- <td>data i/o</td>
- </tr>
- <tr>
- <td><tt>MinSampleValue</tt></td>
- <td>280</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>MaxSampleValue</tt></td>
- <td>281</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>XResolution</tt></td>
- <td>282</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>YResolution</tt></td>
- <td>283</td>
- <td>R/W</td>
- <td>used by Group 3 2d encoder</td>
- </tr>
- <tr>
- <td><tt>PlanarConfiguration</tt></td>
- <td>284</td>
- <td>R/W</td>
- <td>data i/o</td>
- </tr>
- <tr>
- <td><tt>PageName</tt></td>
- <td>285</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>XPosition</tt></td>
- <td>286</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>YPosition</tt></td>
- <td>286</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>FreeOffsets</tt></td>
- <td>288</td>
- <td>&nbsp;</td>
- <td>parsed but ignored</td>
- </tr>
- <tr>
- <td><tt>FreeByteCounts</tt></td>
- <td>289</td>
- <td>&nbsp;</td>
- <td>parsed but ignored</td>
- </tr>
- <tr>
- <td><tt>GrayResponseUnit</tt></td>
- <td>290</td>
- <td>&nbsp;</td>
- <td>parsed but ignored</td>
- </tr>
- <tr>
- <td><tt>GrayResponseCurve</tt></td>
- <td>291</td>
- <td>&nbsp;</td>
- <td>parsed but ignored</td>
- </tr>
- <tr>
- <td><tt>Group3Options</tt></td>
- <td>292</td>
- <td>R/W</td>
- <td>used by Group 3 codec</td>
- </tr>
- <tr>
- <td><tt>Group4Options</tt></td>
- <td>293</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>ResolutionUnit</tt></td>
- <td>296</td>
- <td>R/W</td>
- <td>used by Group 3 2d encoder</td>
- </tr>
- <tr>
- <td><tt>PageNumber</tt></td>
- <td>297</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>ColorResponseUnit</tt></td>
- <td>300</td>
- <td>&nbsp;</td>
- <td>parsed but ignored</td>
- </tr>
- <tr>
- <td><tt>TransferFunction</tt></td>
- <td>301</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>Software</tt></td>
- <td>305</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>DateTime</tt></td>
- <td>306</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>Artist</tt></td>
- <td>315</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>HostComputer</tt></td>
- <td>316</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>Predictor</tt></td>
- <td>317</td>
- <td>R/W</td>
- <td>used by LZW codec</td>
- </tr>
- <tr>
- <td><tt>WhitePoint</tt></td>
- <td>318</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>PrimaryChromacities</tt></td>
- <td>319</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>ColorMap</tt></td>
- <td>320</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>TileWidth</tt></td>
- <td>322</td>
- <td>R/W</td>
- <td>data i/o</td>
- </tr>
- <tr>
- <td><tt>TileLength</tt></td>
- <td>323</td>
- <td>R/W</td>
- <td>data i/o</td>
- </tr>
- <tr>
- <td><tt>TileOffsets</tt></td>
- <td>324</td>
- <td>R/W</td>
- <td>data i/o</td>
- </tr>
- <tr>
- <td><tt>TileByteCounts</tt></td>
- <td>324</td>
- <td>R/W</td>
- <td>data i/o</td>
- </tr>
- <tr>
- <td><tt>BadFaxLines</tt></td>
- <td>326</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>CleanFaxData</tt></td>
- <td>327</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>ConsecutiveBadFaxLines</tt></td>
- <td>328</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>SubIFD</tt></td>
- <td>330</td>
- <td>R/W</td>
- <td>subimage descriptor support</td>
- </tr>
- <tr>
- <td><tt>InkSet</tt></td>
- <td>332</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>InkNames</tt></td>
- <td>333</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>DotRange</tt></td>
- <td>336</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>TargetPrinter</tt></td>
- <td>337</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>ExtraSamples</tt></td>
- <td>338</td>
- <td>R/W</td>
- <td>lots</td>
- </tr>
- <tr>
- <td><tt>SampleFormat</tt></td>
- <td>339</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>SMinSampleValue</tt></td>
- <td>340</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>SMaxSampleValue</tt></td>
- <td>341</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>JPEGTables</tt></td>
- <td>347</td>
- <td>R/W</td>
- <td>used by JPEG codec</td>
- </tr>
- <tr>
- <td><tt>YCbCrCoefficients</tt></td>
- <td>529</td>
- <td>R/W</td>
- <td>used by <tt>TIFFReadRGBAImage</tt> support</td>
- </tr>
- <tr>
- <td><tt>YCbCrSubsampling</tt></td>
- <td>530</td>
- <td>R/W</td>
- <td>tile/strip size calculations</td>
- </tr>
- <tr>
- <td><tt>YCbCrPositioning</tt></td>
- <td>531</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>ReferenceBlackWhite</tt></td>
- <td>532</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- <tr>
- <td><tt>Matteing</tt></td>
- <td>32995</td>
- <td>R</td>
- <td>none (obsoleted by <tt>ExtraSamples</tt> tag)</td>
- </tr>
- <tr>
- <td><tt>DataType</tt></td>
- <td>32996</td>
- <td>R</td>
- <td>none (obsoleted by <tt>SampleFormat</tt> tag)</td>
- </tr>
- <tr>
- <td><tt>ImageDepth</tt></td>
- <td>32997</td>
- <td>R/W</td>
- <td>tile/strip calculations</td>
- </tr>
- <tr>
- <td><tt>TileDepth</tt></td>
- <td>32998</td>
- <td>R/W</td>
- <td>tile/strip calculations</td>
- </tr>
- <tr>
- <td><tt>StoNits</tt></td>
- <td>37439</td>
- <td>R/W</td>
- <td>&nbsp;</td>
- </tr>
- </table>
- <p>
- The <tt>Matteing</tt> and <tt>DataType</tt>
- tags have been obsoleted by the 6.0
- <tt>ExtraSamples</tt> and <tt>SampleFormat</tt> tags.
- Consult the documentation on the
- <tt>ExtraSamples</tt> tag and Associated Alpha for elaboration. Note however
- that if you use Associated Alpha, you are expected to save data that is
- pre-multipled by Alpha. If this means nothing to you, check out
- Porter &amp; Duff's paper in the '84 SIGGRAPH proceedings: "Compositing Digital
- Images".
- </p>
- <p>
- The <tt>ImageDepth</tt>
- tag is a non-standard, but registered tag that specifies
- the Z-dimension of volumetric data. The combination of <tt>ImageWidth</tt>,
- <tt>ImageLength</tt>, and <tt>ImageDepth</tt>,
- defines a 3D volume of pixels that are
- further specified by <tt>BitsPerSample</tt> and
- <tt>SamplesPerPixel</tt>. The <tt>TileDepth</tt>
- tag (also non-standard, but registered) can be used to specified a
- subvolume "tiling" of a volume of data.
- </p>
- <p>
- The Colorimetry, and CMYK tags are additions that appear in TIFF 6.0.
- Consult the TIFF 6.0 specification included in the <b>doc</b> directory
- and <a href="document.html">online</a>.
- </p>
- <p>
- The JPEG-related tag is specified in
- <a href="TIFFTechNote2.html">TIFF Technical Note #2</a> which defines
- a revised JPEG-in-TIFF scheme (revised over that appendix that was
- part of the TIFF 6.0 specification).
- </p>
- <hr>
- <p>
- Last updated: $Date: 2005/12/28 06:53:18 $
- </p>
-</body>
-</html>
-
diff --git a/src/3rdparty/libtiff/html/tools.html b/src/3rdparty/libtiff/html/tools.html
deleted file mode 100644
index b1a757e7ef..0000000000
--- a/src/3rdparty/libtiff/html/tools.html
+++ /dev/null
@@ -1,164 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
-<meta name="generator" content=
-"HTML Tidy for Solaris (vers 12 April 2005), see www.w3.org">
-<title>TIFF Tools Overview</title>
-</head>
-<body bgcolor="white">
-<h1><font face="Arial, Helvetica, Sans"><img src="images/quad.jpg"
-width="144" height="108" align="left" border="1" hspace="6"> TIFF
-Tools Overview</font></h1>
-<p>This software distribution comes with a small collection of
-programs for converting non-TIFF format images to TIFF and for
-manipulating and interrogating the contents of TIFF images. Several
-of these tools are useful in their own right. Many of them however
-are more intended to serve as programming examples for using the
-TIFF library.</p>
-<h3>Device-dependent Programs</h3>
-There are two device-dependent programs that serve as simple
-examples for writing programs to display and save TIFF images.
-<table border cellpadding="3">
-<tr>
-<td valign="top" width="10%">
-<tt><a href="man/tiffgt.1.html">tiffgt</a>&nbsp;&nbsp;&nbsp;&nbsp;</tt></td>
-<td>Display the contents of one or more TIFF images using OpenGL.
-The software makes extensive use of the <tt>TIFFRGBAImage</tt>
-facilities described elsewhere.</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/tiffsv.1.html">tiffsv</a></tt></td>
-<td>A program to save all or part of a screen dump on a Silicon
-Graphics system. As for <tt>tiffgt</tt> this code, while written to
-use the IRIS GL, can be easily tailored to other devices.</td>
-</tr>
-</table>
-<h3>Device-independent Programs</h3>
-The remaining programs should be device-independent:
-<table border cellpadding="3">
-<tr>
-<td valign="top" width="10%"><tt><a href="man/bmp2tiff.1.html">bmp2tiff</a></tt></td>
-<td>Convert BMP images to TIFF</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/fax2ps.1.html">fax2ps</a></tt></td>
-<td>Convert a Group 3- or Group 4- compressed TIFF to PostScript
-that is significantly more compressed than is generated by
-<tt>tiff2ps</tt> (unless <tt>tiff2ps</tt> writes PS Level II)</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/fax2tiff.1.html">fax2tiff</a></tt></td>
-<td>Convert raw Group 3 or Group 4 facsimile data to TIFF</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/gif2tiff.1.html">gif2tiff</a></tt></td>
-<td>A quick hack that converts GIF 87a (old) format images to TIFF</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/pal2rgb.1.html">pal2rgb</a></tt></td>
-<td>Convert a Palette-style image to a full color RGB image by
-applying the colormap</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/ppm2tiff.1.html">ppm2tiff</a></tt></td>
-<td>A quick hack that converts 8-bit PPM format images to TIFF</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/ras2tiff.1.html">ras2tiff</a></tt></td>
-<td>A quick hack that converts Sun rasterfile format images to TIFF
--- it's less than complete</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/raw2tiff.1.html">raw2tiff</a></tt></td>
-<td>Create a TIFF file from raw data</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/rgb2ycbcr.1.html">rgb2ycbcr</a></tt></td>
-<td>Convert an RGB, grayscale, or bilevel TIFF image to a YCbCr
-TIFF image; it's mainly provided for testing</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/sgi2tiff.1.html">sgi2tiff</a></tt></td>
-<td>A program to convert SGI image files to TIFF. This program is
-only useful on SGI machines as it uses <tt>-limage</tt>.</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/thumbnail.1.html">thumbnail</a></tt></tt></td>
-<td>Copy a bilevel TIFF to one that includes 8-bit greyscale
-"thumbnail images" for each page; it is provided as an example of
-how one might use the <tt>SubIFD</tt> tag (and the library support
-for it)</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/tiff2bw.1.html">tiff2bw</a></tt></td>
-<td>A simple program to convert a color image to grayscale</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/tiff2pdf.1.html">tiff2pdf</a></tt></td>
-<td>Convert TIFF images to PDF</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/tiff2ps.1.html">tiff2ps</a></tt></td>
-<td>Convert TIFF images to PostScript</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/tiff2rgba.1.html">tiff2rgba</a></tt></td>
-<td>Convert a TIFF image to RGBA color space</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/tiffcmp.1.html">tiffcmp</a></tt></td>
-<td>Compare the contents of two TIFF files (it does not check all
-the directory information, but does check all the data)</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/tiffcp.1.html">tiffcp</a></tt></td>
-<td>Copy, concatenate, and convert TIFF images (e.g. switching from
-Compression=5 to Compression=1)</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/tiffcrop.1.html">tiffcrop</a></tt></td>
-<td>Provides selection of images from within one or more multi-image
-TIFF files, with orthogonal rotation, mirroring, cropping, and
-extraction of multiple sections and exporting to one or more files.
-It extends the functionality of tiffcp to support additional bit
-depths in strips and tiles and enhances the selection capabilities of
-tiffsplit. Bilevel images can be inverted and images may be split into
-segments to fit on multiple /pages/ (standard paper sizes), plus other
-functions described in the tiffcrop man page</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/tiffdither.1.html">tiffdither</a></tt></td>
-<td>Dither a b&amp;w image into a bilevel image (suitable for use
-in creating fax files)</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/tiffdump.1.html">tiffdump</a></tt></td>
-<td>Display the verbatim contents of the TIFF directory in a file
-(it's very useful for debugging bogus files that you may get from
-someone that claims they support TIFF)</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/tiffinfo.1.html">tiffinfo</a></tt></td>
-<td>Display information about one or more TIFF files.</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/tiffmedian.1.html">tiffmedian</a></tt></td>
-<td>A version of Paul Heckbert's median cut program that reads an
-RGB TIFF image, and creates a TIFF palette file as a result</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/tiffset.1.html">tiffset</a></tt></td>
-<td>Set a field in a TIFF header</td>
-</tr>
-<tr>
-<td valign="top" width="10%"><tt><a href="man/tiffsplit.1.html">tiffsplit</a></tt></td>
-<td>Create one or more single-image files from a (possibly)
-multi-image file</td>
-</tr>
-</table>
-<p>Check out the manual pages for details about the above
-programs.</p>
-<hr>
-Last updated: $Date: 2009-10-28 22:13:58 $
-</body>
-</html>
diff --git a/src/3rdparty/libtiff/html/v3.4beta007.html b/src/3rdparty/libtiff/html/v3.4beta007.html
deleted file mode 100644
index c535d2708d..0000000000
--- a/src/3rdparty/libtiff/html/v3.4beta007.html
+++ /dev/null
@@ -1,112 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.4beta007
-</TITLE>
-</HEAD>
-
-<BODY>
-<FONT FACE="Arial, Helvetica, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.4beta007<BR>
-<B>Previous Version</B>: v3.4beta004<BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#port">Changes in the portability support</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-<LI>bit order was corrected for Pentium systems
-<LI>a new define, <TT>HOST_BIGENDIAN</TT>, was added for code that
- wants to statically use information about native cpu byte order
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-<LI>the G3/G4 decoder was replaced by a new one that is faster and
- has smaller state tables
-<LI>Niles Ritter's client tag extension hooks were added
-<LI>a new routine <TT>TIFFCurrentDirOffset</TT> was added for
- applications that want to find out the file offset of a TIFF directory
-<LI>the calculation of the number of strips in an image was corected
- for images with certain esoteric configurations
-<LI>a potential memory leak (very unlikely) was plugged
-<LI>the <TT>TIFFReadRGBAImage</TT> support was completely rewritten
- and new, more flexible support was added for reading images into
- a fixed-format raster
-<LI>YCbCr to RGB conversion done in the <TT>TIFFReadRGBAImage</TT> support
- was optimized
-<LI>a bug in JPEG support calculation of strip size was corrected
-<LI>the LZW decoder was changed to initialize the code table to zero
- to lessen potential problems that arise when invalid data is decoded
-<LI><B>tiffcomp.h</B> is now aware of OS/2
-<LI>some function prototypes in <B>tiffio.h</B> and <B>tiffiop.h</B>
- that contained parameter
- names have been changed to avoid complaints from certain compilers
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="port"><B><FONT SIZE=+3>C</FONT>HANGES IN THE PORTABILITY SUPPORT:</B></A>
-
-<UL>
-<LI><B>Makefile.in</B> has been corrected to use the parameters
- chosen by the configure script
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
-<LI><TT>fax2ps</TT> has been rewritten and moved over from the user
- contributed software
-<LI>an uninitialized variable in <TT>pal2rgb</TT> has been fixed
-<LI><TT>ras2tiff</TT> now converts 24-bit RGB raster data so that
- samples are written in the proper order
-<LI><TT>tiff2ps</TT> has been updated to include fixes
- and enhancements from Alberto Accomazzi
-<LI><TT>tiffcp</TT> now has a <TT>-o</TT> option to select a directory
- by file offset
-<LI><TT>tiffinfo</TT> is now capable of displaying the raw undecoded
- image data in a file
-<LI><TT>tiffgt</TT> has been rewritten to use the new <TT>TIFFRGBAImage</TT>
- support and to handle multiple files
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-<ADDRESS>
-<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>
-Last updated $Date: 1999/08/09 20:21:21 $.
-</ADDRESS>
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.4beta016.html b/src/3rdparty/libtiff/html/v3.4beta016.html
deleted file mode 100644
index 22f185f54b..0000000000
--- a/src/3rdparty/libtiff/html/v3.4beta016.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.4beta016
-</TITLE>
-</HEAD>
-
-<BODY>
-<FONT FACE="Arial, Helvetica, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.4beta016<BR>
-<B>Previous Version</B>: <A HREF=v3.4beta007.html>v3.4beta007</A><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#man">Changes in the manual pages</A>
-<LI><A HREF="#html">Changes in the documentation</A>
-<LI><A HREF="#contrib">Changes in contributed software</A>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-<LI>support was added for configuring the Deflate codec
-<LI>support was added for the HTML documentation
-<LI>codecs that are not configured for inclusion in the library
- are no longer compiled
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-<LI>support was added for registering new codecs external to the library
- and for overriding the codecs that are builtin to the library
-<LI>emulation support for the old <TT>DataType</TT> tag was improved
-<LI>suppport was added for the <TT>SMinSampleValue</TT>
- and <TT>SMaxSampleValue</TT> tags
-<LI>the library no longer ignores <TT>TileWidth</TT> and <TT>TileLength</TT>
- tags whose values are not a multiple of 16 (per the spec); this
- permits old, improperly written, images to be read
-<LI>the support for the <TT>Predictor</TT> tag was placed in a reusable
- module so that it can be shared by multiple codecs
-<LI>experimental compression support was added for the Deflate algorithm
- (using the freely available zlib package)
-<LI>a new routine, <TT>TIFFWriteBufferSetup</TT> was added a la the
- routine <TT>TIFFReadBufferSetup</TT>
-<LI>the DSO version of the library is now statically linked with the
- JPEG and Deflate libraries; this means applications that link against
- the DSO do not also need to link against these ancillary libraries
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
-<LI>all the tools now use common code to process compress-oriented arguments
-<LI><TT>tiffdump</TT> should now compile on a Macintosh with MPW
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="man"><B><FONT SIZE=+3>C</FONT>HANGES IN THE MANUAL PAGES:</B></A>
-
-<UL>
-<LI>everything was updated
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="html"><B><FONT SIZE=+3>C</FONT>HANGES IN THE DOCUMENTATION:</B></A>
-
-<UL>
-<LI>everything was updated
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN CONTRIBUTED SOFTWARE:</B></A>
-
-<UL>
-<LI><B>contrib/dbs/xtiff</B> was made to compile
-<LI><B>contrib/mac-mpw</B> is new support for compiling the software on
- a Macintosh under MPW; consult <A HREF=build.html#Mac>the documentation</A>
- for details
-<LI><B>contrib/tags</B> is information on how to use the tag extenion
- facilities; consult
- <A HREF=../contrib/tags/README>contrib/tags/README</A> for details
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-<ADDRESS>
-<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>
-Last updated $Date: 1999/08/09 20:21:21 $.
-</ADDRESS>
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.4beta018.html b/src/3rdparty/libtiff/html/v3.4beta018.html
deleted file mode 100644
index ac1877fae4..0000000000
--- a/src/3rdparty/libtiff/html/v3.4beta018.html
+++ /dev/null
@@ -1,84 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.4beta018
-</TITLE>
-</HEAD>
-
-<BODY>
-<FONT FACE="Arial, Helvetica, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.4beta018<BR>
-<B>Previous Version</B>: <A HREF=v3.4beta016.html>v3.4beta016</A><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-<LI>configure now recognizes IRIX 6.x systems
-<LI>configure now uses <TT>ENVOPTS</TT> when searching for an ANSI
- C compiler; this fixes a problem configuring the software under
- HP/UX with the native C compiler
-<LI>configure now correctly recognizes memory-mapped files are supported
- under AIX
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-<LI><TT>make install</TT> now properly installs the include files
-<LI>some portability fixes from Bjorn Brox
-<LI>the G3/G4 codec now warns about decoded rows that are longer than
- the image/tile width
-<LI>changes from Frank Cringle to make the library work with the
- gcc-specific bounds checking software
-<LI>miscellaneous fixes to <TT>TIFFPrintDirectory</TT>
-<LI>bug fix to correct a problem where <TT>TIFFWriteRawStrip</TT>
- could not be used to automatically grow an image's length
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
-<LI>fixes from Frank Cringle to update <TT>fax2tiff</TT>
-<LI>portability fixes to <TT>tiff2bw</TT> and <TT>tiffcmp</TT>
-<LI><TT>tiffdump</TT> now uses the byte swapping routines in the library
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-<ADDRESS>
-<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>
-Last updated $Date: 1999/08/09 20:21:21 $.
-</ADDRESS>
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.4beta024.html b/src/3rdparty/libtiff/html/v3.4beta024.html
deleted file mode 100644
index 25a33478fa..0000000000
--- a/src/3rdparty/libtiff/html/v3.4beta024.html
+++ /dev/null
@@ -1,139 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.4beta024
-</TITLE>
-</HEAD>
-
-<BODY>
-<FONT FACE="Arial, Helvetica, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.4beta024<BR>
-<B>Previous Version</B>: <A HREF=v3.4beta018.html>v3.4beta018</A><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#man">Changes in the manual pages</A>
-<LI><A HREF="#contrib">Changes in the contributed software</A>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-<LI>It is now possible to setup the software to build only the
- library; configure reconizes this is the intent when the
- <B>VERSION</B>, <B>tiff.alpha</B>, and <B>tif_version.c</B>
- files are in the local directory (i.e. ``.'')
-<LI>configure no longer tries to setup HTML materials
-<LI>include file directories needed in building the library are now
- specified with a <TT>DIRS_LIBINC</TT> config parameter
-<LI>configure no longer checks for alternate compilers if <TT>CC</TT>
- is set; if the specified compiler is not found or is not appropriate
- the configuration procedure aborts
-<LI>the <B>port.h</B> file generated by configure is now used only by
- the library and as such as have been moved to the <B>libtiff</B>
- directory
-<LI>there is beginning support for building DSO's on systems other than IRIX
-<LI>configure now verifies the JPEG and zlib directory pathnames by
- checking for well-known include files in these directories
-<LI>configure no longer creates the <B>dist</B> directory needed only
- on SGI machines (for building SGI binary distributions)
-<LI>a bug was fixed whereby configure would incorrectly set
- <TT>ENVOPTS</TT> when building the software with gcc under AIX
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-<LI>two new typedefs were added to <B>tiff.h</TT>: <TT>int8</TT>
- and <TT>uint8</TT> for signed and unsigned 8-bit quantities,
- respectively; these are currently used only by
- programs in the <B>tools</B> directory
-<LI>the <TT>BadFaxLines</TT>, <TT>CleanFaxData</TT>, and
- <TT>ConsecutiveBadFaxLines</B> tags are now supported with
- Group 4 compression
-<LI>byte order is now correctly identified on 64-bit machines
-<LI>a bug was fixed in the PackBits decoder where input data would
- appear short when a no-op run was present
-<LI>a bug was fixed in calculations with very wide strips
-<LI><TT>TIFFWriteEncodedStrip</TT> and <TT>TIFFWriteRawStrip</TT>
- were extended to support dynamically growing the number of
- strips in an image (must set <TT>ImageLength</TT> prior to
- making calls though)
-<LI><TT>TIFFDefaultTileSize</TT> now rounds tile width and height
- up to a multiple of 16 pixels, as required by the TIFF 6.0 specification
-<LI>the file <B>version.h</B> is now built by a new <B>mkversion</B>
- program; this was done for portability to non-UNIX systems
-<LI>support was added for the Acorn RISC OS (from Peter Greenham)
-<LI>the builtin codec table is now made <TT>const</TT> when compiling
- under VMS so that <B>libtiff</B> can be built as a shared library
-<LI>support for the PowerPC Mac (from Ruedi Boesch)
-<LI>support for Window NT/Window 95 (from Scott Wagner)
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
-<LI>the tools no longer include <B>port.h</B>
-<LI>various portability fixes; mostly to eliminate implicit assumptions
- about how long <TT>int32</TT> data types are
-<LI>PostScript Level II additions to <TT>tiff2ps</TT> from Bjorn Brox
-<LI><TT>sgi2tiff</TT> now handles RGBA images
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="man"><B><FONT SIZE=+3>C</FONT>HANGES IN THE MANUAL PAGES:</B></A>
-
-<UL>
-<LI>the documentation has been updated to reflect the current state of
- the software
-<LI>some routines have been moved to different manual pages
- to group like-routines together
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIBUTED SOFTWARE:</B></A>
-
-<UL>
-<LI>support was added for the Acorn RISC OS (from Peter Greenham)
-<LI>support for Windows NT/Windows 95 contributed for a previous
- version of this software was sort of incorporated (it's broken
- right now) (from Scott Wagner)
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-<ADDRESS>
-<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>
-Last updated $Date: 1999/08/09 20:21:21 $.
-</ADDRESS>
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.4beta028.html b/src/3rdparty/libtiff/html/v3.4beta028.html
deleted file mode 100644
index ff7ef69a23..0000000000
--- a/src/3rdparty/libtiff/html/v3.4beta028.html
+++ /dev/null
@@ -1,146 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.4beta028
-</TITLE>
-</HEAD>
-
-<BODY>
-<FONT FACE="Arial, Helvetica, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.4beta028<BR>
-<B>Previous Version</B>: <A HREF=v3.4beta024.html>v3.4beta024</A><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#man">Changes in the manual pages</A>
-<LI><A HREF="#contrib">Changes in the contributed software</A>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-<LI>a <TT>-noninteractive</TT> flag was added to configure to
- control whether or not it prints and prompts for configuration information
-<LI>various typos and fixes were made in configure for the the
- library-only build support (this and other configure fixes from
- Richard Mlynarik <A HREF=mailto:mly@adoc.xerox.com>&lt;mly@adoc.xerox.com&gt;</A>)
-<LI>bugs were fixed in the handling of pathnames supplied for external
- packages; e.g. <TT>DIR_JPEG</TT>
-<LI>the handling of <TT>SETMAKE</TT> is now done properly
-<LI>the default prototype function declaration for <TT>pow</TT> was corrected
-<LI>a bug was fixed in <B>libtiff/Makefile.in</B> that caused installation
- to fail on systems without DSO support
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-<LI>Acorn RISC O/S support that was accidentally left out of the
- left out of the previous distribution is present (from Peter Greenham)
-<LI>complaints about unknown and/or unsupported codecs have been
- delayed until they are invoked; this permits applications to open
- images and look at tags even if the image data is compressed with
- an unknown/unsupported compression scheme
-<LI>bugs in handling unknown tags have been corrected; applications
- that use multiple codecs, each with codec-specific tags, no longer
- generate confusing error messages
-<LI>a missing pseudo-tag definition in the CCITT G3 codec was fixed
- (this problem caused core dumps in the <TT>tiffcp</TT> program)
-<LI>pseudo-tags are now treated specially; they are always considered
- to be set (i.e. they do not use bits in the <TT>FIELD_*</TT> bit-vectors).
-<LI>the use of strip chopping can now be controlled on a per-file basis
- through a mode parameter supplied when opening a file (``C'' to
- enable strip chopping and ``c'' to disable)
-<LI>two bugs were fixed in the writing of opposite-endian byte-order
- files
-<LI>support was added for three new fax-related tags registered to
- SGI: FaxRecvParams, FaxRecvTime, and FaxSubAddress
-<LI>the bit order of image data read and written can now be controlled
- on a per-file basis through a mode parameter supplied when opening
- a file (``B'' to force MSB2LSB bit order, ``L'' for LSB2MSB bit
- order, and ``H'' for the bit order of the native CPU)
-<LI>the byte order of image and tag data written to newly-created files
- can now be controlled on a per-file basis through a mode parameter
- supplied when openening a file (``b'' to force Big-Endian byte order
- and ``l'' to force Little-Endian byte order)
-<LI>the use memory-mapped files for images opened read-only can now
- be controlled on a per-file basis through a mode parameter supplied
- when opening a file (``M'' to enable use of memory-mapped files
- and ``m'' to disable use)
-<LI>the use of the <TT>WIN32</TT> define in <B>tiffiop.h</B> has
- been replaced by <TT>__WIN32__</TT>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
-<LI><TT>fax2ps</TT> now does a <TT>save</TT> and <TT>restore</TT>
- around each page of PostScript; this fixes a problem with VM
- overflow when printing a many-page document on some printers
-<LI>a bug in the handling of 3-channel images by <TT>ras2tiff</TT>
- was fixed
-<LI><TT>tiffcp</TT> has new options to control the byte order of
- newly created files: <B>-B</B> for Big-Endian byte order, <B>-L</B>
- for Little-Endian byte order; a <B>-M</B> option to disable the
- use of memory-mapped files, and a <B>-C</B> option to disable the
- use of strip chopping
-<LI>bugs were fixed in <TT>tiffcp</TT>'s handling of codec-specific tags
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="man"><B><FONT SIZE=+3>C</FONT>HANGES IN THE MANUAL PAGES:</B></A>
-
-<UL>
-<LI>the <TT>TIFFOpen</TT> page has been updated to reflect the new
- optional open mode parameters
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIBUTED SOFTWARE:</B></A>
-
-<UL>
-<LI><B>contrib/win95</B> contains information and code from Philippe Tenenhaus
- <A HREF=mailto:100423.3705@compuserve.com>&lt;100423.3705@compuserve.com&gt;</A>
- about using the software under Windows 95
-<LI><B>contrib/winnt</B> contains information and code from Dave Dyer
- <A HREF=mailto:ddyer@triple-i.com>&lt;ddyer@triple-i.com&gt;</A>
- about using the software under Windows NT
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-<ADDRESS>
-<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>
-Last updated $Date: 1999/08/09 20:21:21 $.
-</ADDRESS>
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.4beta029.html b/src/3rdparty/libtiff/html/v3.4beta029.html
deleted file mode 100644
index f2a3d3f6aa..0000000000
--- a/src/3rdparty/libtiff/html/v3.4beta029.html
+++ /dev/null
@@ -1,86 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.4beta029
-</TITLE>
-</HEAD>
-
-<BODY>
-<FONT FACE="Arial, Helvetica, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.4beta029<BR>
-<B>Previous Version</B>: <A HREF=v3.4beta028.html>v3.4beta028</A><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#contrib">Changes in the contributed software</A>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-<LI><B>configure</B> now relativizes pathname references given in
- <TT>-L</TT> options (as frequently specified when configuring
- ancillary packages)
-<LI>problems related to configuring the software on Ultrix 4.4 have
- been corrected
-<LI>the shell to use in Makefiles and scripts can now be set with the
- <TT>SCRIPT_SH</TT> configuration parameter
-<LI>comments in <B>config.site</B> now correctly indicate how to setup the
- use of ancillary packages
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-<LI>mods for building the software on a Mac using the
- MetroWerks CodeWarrior compilers
-<LI>a bug in the CCITT T.4/T.6 decoder was fixed where the last codeword in
- a strip/tile might not be decoded; this was seen only when decoding
- multi-strip images
-<LI>a bug in the CCITT RLE codecs was fixed whereby the pseudo tags were not
- being properly registered
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIBUTED SOFTWARE:</B></A>
-
-<UL>
-<LI><B>contrib/mac-cw</B> contains information and code from Niles Ritter
- <A HREF=mailto:ndr@tazboy.jpl.nasa.gov>&lt;ndr@tazboy.jpl.nasa.gov&gt;</A>
- about building the software with the MetroWerks CodeWarrior compilers
- on Macintosh systems
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-<ADDRESS>
-<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>
-Last updated $Date: 1999/08/09 20:21:21 $.
-</ADDRESS>
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.4beta031.html b/src/3rdparty/libtiff/html/v3.4beta031.html
deleted file mode 100644
index d5b7eac4f4..0000000000
--- a/src/3rdparty/libtiff/html/v3.4beta031.html
+++ /dev/null
@@ -1,94 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.4beta031
-</TITLE>
-</HEAD>
-
-<BODY>
-<FONT FACE="Arial, Helvetica, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.4beta031<BR>
-<B>Previous Version</B>: <A HREF=v3.4beta029.html>v3.4beta029</A><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#man">Changes in the manual pages</A>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-<LI><B>configure</B> now captures significantly more information
- in the <B>config.log</B> file and provides more information when
- it is unable to setup a configuration
-<LI>support was added for building shared libraries on more systems:
- AIX, HPUX, Solaris, and Linux.
-<LI>a new configuration parameter <TT>LIBCOPTS</TT> was added for
- passing arguments to the C compiler to use when building only
- the library; this is part of the enhanced support for building
- shared libraries
-<LI>include files for optional packages that reside in <B>/usr/include</B>
- are now handled correctly
-<LI>build trees may now be configured using either relative or absolute
- pathnames to the source distribution
-<LI>several new configuration parameters were added, mainly for building
- shared libraries: <TT>DIST_MAJOR</TT>, <TT>DIST_MINOR</TT>,
- <TT>DIST_ALPHA</TT>, and <TT>DSOSUF_VERSION</TT>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-<LI>the Deflate support has been revised: it requires version 0.99 of
- the zlib software distribution, <B>the output format has changed and
- is incompatible with previous versions of this library</B> (each
- strip now includes a header read and written by the zlib library)
-<LI>the codec name printed by the TIFFPrintDirectory routine is now
- taken from the codec table instead of from a builtin table; this means
- that application-defined codecs are handled correctly
-<LI>a new symbol was added that contains the library version number;
- this can be used to do a compile-time compatibility check of the
- library version
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="man"><B><FONT SIZE=+3>C</FONT>HANGES IN THE MANUAL PAGES:</B></A>
-
-<UL>
-<LI>the creation and installation of manual pages was redone; it now
- implements the documented ``configuration scheme''
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-<ADDRESS>
-<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>
-Last updated $Date: 1999/08/09 20:21:21 $.
-</ADDRESS>
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.4beta032.html b/src/3rdparty/libtiff/html/v3.4beta032.html
deleted file mode 100644
index bc14ef3368..0000000000
--- a/src/3rdparty/libtiff/html/v3.4beta032.html
+++ /dev/null
@@ -1,90 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.4beta032
-</TITLE>
-</HEAD>
-
-<BODY>
-<FONT FACE="Arial, Helvetica, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.4beta032<BR>
-<B>Previous Version</B>: <A HREF=v3.4beta031.html>v3.4beta031</A><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in the contributed software</A>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-<LI>various fixups and subtle improvements to <B>configure</B>
- from Richard Mlynarik
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-<LI>a new codec from Pixar designed for high-resolution color images;
- note that this codec is not configured by default
-<LI>a bug fix for reading tags with a single <TT>FLOAT</TT> value
-<LI>change to the <TT>TIFFGetField</TT> calling convention:
- a tag that has a single value of
- type <TT>DOUBLE</TT> is now retrieved by passing a
- ``<TT>double*</TT>'' instead of a
- ``<TT>double**</TT>'' (this change makes the handling of tags with
- <TT>DOUBLE</TT> values identical to the handling of tags with
- <TT>FLOAT</TT> values)
-<LI>fix to VMS support for the handling of floating point values
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
-<LI><B>tiffdump</B> now handles tags with <TT>FLOAT</TT> and <TT>DOUBLE</TT>
- values
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIBUTED SOFTWARE:</B></A>
-
-<UL>
-<LI>updates to the Acorn OS support from Peter Greenham
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-<ADDRESS>
-<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>
-Last updated $Date: 1999/08/09 20:21:21 $.
-</ADDRESS>
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.4beta033.html b/src/3rdparty/libtiff/html/v3.4beta033.html
deleted file mode 100644
index 8d8345a871..0000000000
--- a/src/3rdparty/libtiff/html/v3.4beta033.html
+++ /dev/null
@@ -1,82 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.4beta033
-</TITLE>
-</HEAD>
-
-<BODY>
-<FONT FACE="Arial, Helvetica, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.4beta033 (aka the v3.4 release)<BR>
-<B>Previous Version</B>: <A HREF=v3.4beta032.html>v3.4beta032</A><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in the contributed software</A>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-<LI>support was added for building the library as a DSO under OSF/1
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-<LI>fixes to the Pixar codec
-<LI>portability mods for VMS
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
-<LI>fixes to <B>gif2tiff</B> and <B>ppm2tiff</B> for building under MS/DOS
-<LI>portability mods to <B>fax2ps</B> and <B>ycbcr</B> for VMS
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIBUTED SOFTWARE:</B></A>
-
-<UL>
-<LI>a new package from Alexander Lehmann
- for building the library and tools under MS/DOS with DJGPP v2
-<LI>updated VMS support from Karsten Spang
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-<ADDRESS>
-<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>
-Last updated $Date: 1999/08/09 20:21:21 $.
-</ADDRESS>
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.4beta034.html b/src/3rdparty/libtiff/html/v3.4beta034.html
deleted file mode 100644
index 77d9863b4b..0000000000
--- a/src/3rdparty/libtiff/html/v3.4beta034.html
+++ /dev/null
@@ -1,68 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.4beta034
-</TITLE>
-</HEAD>
-
-<BODY>
-<FONT FACE="Arial, Helvetica, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.4beta034<BR>
-<B>Previous Version</B>: <A HREF=v3.4beta033.html>v3.4beta033</A><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-<LI>support was added for building the library as a DSO under NetBSD
-<LI>a bug was fixed in the DSO support for Linux
-<LI>the handling of version strings has changed slightly to simplify parsing
-<LI>a new parameter, <TT>TIFFLIBREF</TT>, was added to control how the
- library is referenced when linking programs in the <B>tools</B> directory
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-<LI>DSO creation under Solaris now forces the DSO name with a <TT>-h</TT> option
-<LI>the interface to the <B>mkversion</B> program was changed
- to eliminate the need to parse files
-<LI>a bug was fixed in the EOL-detection logic of the T.4/T.6 decoder
-<LI>ANSI IT8 TIFF/IT tag definitions were added to <B>tiff.h</B>
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-<ADDRESS>
-<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>
-Last updated $Date: 1999/08/09 20:21:21 $.
-</ADDRESS>
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.4beta035.html b/src/3rdparty/libtiff/html/v3.4beta035.html
deleted file mode 100644
index 22fb2b8d0e..0000000000
--- a/src/3rdparty/libtiff/html/v3.4beta035.html
+++ /dev/null
@@ -1,63 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.4beta035
-</TITLE>
-</HEAD>
-
-<BODY>
-<FONT FACE="Arial, Helvetica, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.4beta035<BR>
-<B>Previous Version</B>: <A HREF=v3.4beta034.html>v3.4beta034</A><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-<LI>support was added installing the HTML documentation
-<LI>support was added for building the library as a DSO under FreeBSD
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-<LI>the interface to the <B>mkversion</B> program was restored to
- the form used prior to v3.4beta034
-<LI>several portability problems for 16-bit systems were fixed
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-<ADDRESS>
-<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>
-Last updated $Date: 1999/08/09 20:21:21 $.
-</ADDRESS>
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.4beta036.html b/src/3rdparty/libtiff/html/v3.4beta036.html
deleted file mode 100644
index e36754d364..0000000000
--- a/src/3rdparty/libtiff/html/v3.4beta036.html
+++ /dev/null
@@ -1,117 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.4beta036
-</TITLE>
-</HEAD>
-
-<BODY>
-<FONT FACE="Arial, Helvetica, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.4beta036<BR>
-<B>Previous Version</B>: <A HREF=v3.4beta035.html>v3.4beta035</A><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.sgi.com/graphics/tiff">ftp.sgi.com (192.48.153.1), directory graphics/tiff</A><BR>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-<LI>support was added for building the library as a DSO under HP-UX with
- the native C compiler
-<LI>tools are now built with explicit pathnames for the DSO under IRIX,
- Solaris, and Linux
-<LI>DSO configuration support for Linux was changed to require that
- <B>libc.so</B> only be readable (not executable)
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-<LI>support was add for ICC: <TT>NumberOfInks</TT>, and <TT>ICCProfile</TT>
-<LI>a memory leak caused by doing <TT>TIFFSetDirectory(0)</TT> was fixed
-<LI>a bug was fixed whereby certain multi-directory files were not
- properly handled when accessed by mapping the data into memory
-<LI>the strip chopping support is now always compiled
- into the library with the default usage controlled by a
- <TT>STRIPCHOP_DEFAULT</TT> configuration parameter
-<LI>the strip chopping support no longer chops tiled images
-<LI>all static strings are now const--for shared libraries
-<LI>the logic for estimating the strip size of images without
- a <TT>StripByteCounts</TT> tag was improved by handling
- <TT>PlanarContig</TT> images differently from <TT>PlanarSeparate</TT>
-<LI>a bug was fixed in the G3 codec when converting the Y resolution
- of data specified in metric units
-<LI>a bug was fixed in the G3/G4 decoder for data where lines terminate
- with a v0 code
-<LI>the <TT>TIFFRGBAImage</TT> support was changed to scale 16-bit colormap
- entries more conservatively to avoid problems with applications
- that do not generate fully saturated pixel values
-<LI>the LZW decoder was changed to use a more conservative scheme when
- bounds checking the hash table array; this avoids pitfalls with
- systems that load objects into memory in unusual locations
-<LI>a bug was fixed in <TT>TIFFPrintDirectory</TT>'s handling of the
- <TT>InkNames</TT> tag
-<LI><TT>TIFFPrintDirectory</TT> now understands <TT>NumberOfInks</TT>
- and ICC-related tags
-<LI>the routines for reading image data now provide more useful information
- when a read error is encountered
-<LI>support was added for compiling with Microsoft Visual C++ 4.0
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
-<LI>a bug was fixed in <B>pal2rgb</B>'s colormap handling
-<LI><B>tiff2ps</B> now includes John Wehle's changes for maintaining
- the aspect ratio
- of images when scaling and for honoring the deadzone on a page when
- generating PostScript Level II
-<LI><B>tiff2ps</B> does a better job guarding against the mishandling
- of greyscale images
-<LI><B>tiff2ps</B> now correctly converts X- and Y-resolution values
- specified in metric units
-<LI><B>tiffdump</B> has a new <TT>-m</TT> option to control the maximum
- number of indirect
- data values printed for a tag (by default 24)
-<LI><B>tiffdump</B> understands several new tags
-<LI><B>tiffdump</B> now shows any terminating null in ASCII strings
-<LI><B>tiffinfo</B> now suppresses strip chopping when interpreting an image;
- a new <TT>-z</TT> option has been added to enable strip chopping
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-<ADDRESS>
-<A HREF="sam.html">Sam Leffler</A> / <A HREF="mailto:sam@engr.sgi.com">sam@engr.sgi.com</A>
-Last updated $Date: 1999/08/09 20:21:21 $.
-</ADDRESS>
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.5.1.html b/src/3rdparty/libtiff/html/v3.5.1.html
deleted file mode 100644
index 0c88de9547..0000000000
--- a/src/3rdparty/libtiff/html/v3.5.1.html
+++ /dev/null
@@ -1,75 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.5.1
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Arial, Helvetica, Sans">
-<FONT FACE="Arial, Helvetica, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.5.1<BR>
-<B>Previous Version</B>: v3.4beta037<BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.onshore.com/pub/libtiff">ftp.onshore.com, directory graphics/tiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff/>http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
- <LI> <em> None of consequence </em>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-
-<UL>
-<LI> Support was added for IPTC Newsphoto metadata (TIFFTAGE_IPTCNEWSPHOTO)
-<LI> Support was added for photoshop caption handling (TIFFTAG_PHOTOSHOP)
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
-<LI> <A HREF=mailto:billr@corbis.com>Bill Radcliffe's</a> iptcutil was
-added to the "contrib" subdirectory . It can convert an IPTC binary
-blob to ASCII text and vice-versa. The blob itself can be extracted
-from or added to an image with the <A
-href=http://www.ImageMagick.org/>ImageMagick</a> convert(1)
-utility.
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-Last updated $Date: 2006/01/03 01:42:30 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.5.2.html b/src/3rdparty/libtiff/html/v3.5.2.html
deleted file mode 100644
index 71b486a6f4..0000000000
--- a/src/3rdparty/libtiff/html/v3.5.2.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.5.2
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Arial, Helvetica, Sans">
-<FONT FACE="Arial, Helvetica, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.5.2<BR>
-<B>Previous Version</B>: <A HREF=v3.5.1.html>v3.5.1</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.onshore.com/pub/libtiff">ftp.onshore.com, directory graphics/tiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff/">http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
- <LI> Corrected alpha versioning.
-
- <LI> Removed distinction between alpha and release targets in Makefile.in.
-
- <LI> Added release.stamp target, which tags cvs tree, and updates
- "RELEASE-DATE"
-
- <LI> Added releasediff target, which diffs tree with source as of
- date in "RELEASE-DATE"
-
- <LI>Ticked up version to 3.5.2 (alpha 01 -- but I think we'll moving
- away from alpha/non-alpha distinctions).
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-
-<UL>
- <LI> Added IRIX/gcc, and OSF/1 4.x support on behalf of
- Albert Chin-A-Young <china@thewrittenword.com>
-
- <LI> Added TIFFReassignTagToIgnore() API on behalf of
- Bruce Cameron <cameron@petris.com>. Man page still pending.
-
- <LI> pre-remove so link before softlink in LINUXdso action in
- libtiff/Makefile.in to avoid failure on LINUXdso builds other than
- the first.
-
- <LI> Fixed problem with cvtcmap() in tif_getimage.c modifying the
- colormaps owned by the TIFF handle itself when trying to fixup wrong
- (eight bit) colormaps. Corrected by maintaining a private copy of
- the colormap.
-
- <LI> Added TIFFReadRGBATile()/TIFFReadRGBAStrip() support in
- tif_getimage.c.
-
- <LI> Applied "a" mode fix to tif_win32.c/TIFFOpen() as suggested
- by Christopher Lawton <clawton@mathworks.com>
-
- <LI> Set O_BINARY for tif_unix.c open() ... used on cygwin for instance.
-
- <LI> Added CYGWIN case in configure.
-
- <LI> Applied Francois Dagand's patch to handle fax decompression bug.
- (sizes >= 65536 were failing)
-</UL>
-
-<P><HR WIDTH=65% ALIGN=right>
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
- <LI> Added addtiffo (add overviews to a TIFF file) in contrib. Didn't
- put it in tools since part of it is in C++.
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-Last updated $Date: 2004/11/26 14:37:20 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.5.3.html b/src/3rdparty/libtiff/html/v3.5.3.html
deleted file mode 100644
index e7910d9b7a..0000000000
--- a/src/3rdparty/libtiff/html/v3.5.3.html
+++ /dev/null
@@ -1,132 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.5.3
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Arial, Helvetica, Sans">
-<FONT FACE="Arial, Helvetica, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.5.3<BR>
-<B>Previous Version</B>: <A HREF=v3.5.2.html>v3.5.2</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.onshore.com/pub/libtiff">ftp.onshore.com</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff/">http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-</UL>
-<p>
-The ChangeLog will follow, but please note the most important change:
-LZW compression has been removed.
-<p>
-Unisys has the patent on LZW compression and have been very active in
-their enforcement of late, demanding payments of $5000 or more from
-websites using unlicensed software to create GIF's. They could well
-do the same do persons using libtiff to create LZW compressed TIFF
-images.
-<p>
-From <A HREF=http://burnallgifs.org>Burn All GIF's Day</a>:
-<br>
-<em>The catch is that it appears to be difficult or impossible to get a
-Unisys license to use LZW in free software that complies with the Open
-Source Definition</em>
-<P>
-Unfortunatly, the removal of LZW compression means that saved image size has
-grown dramatically. Without a change in the TIFF spec to support
-another lossless compression format, this is unavoidable.
-<P>
-The library can use zip for lossless compression, but as this is not
-part of the spec, TIFFs using zip compression may not work with other
-software
-<P>
-We will be making a patch available that will contain the LZW
-compression code for users who have either obtained a license from
-Unisys or are willing to risk it.
-<p>
-LZW decompression is unchanged.
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
- <LI> Added zip creation to release makefile target
-
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-
-<UL>
-
- <LI> Added html for TIFFWriteTile.3t man page.
-
- <LI> Added some changes to tif_write.c to support rewriting existing
- fixed sized tiles and strips. Code mods disabled by default, only
- enabled if REWRITE_HACK is defined for now.
-
- <LI> Added TIFFWriteTile.3t man page.
-
- <LI> Added notes on use of makefile.vc in build.html, and fixed
- email subscription address.
-
- <LI> Fixed apocalypse-inducing y2k bug in contrib/ras/ras2tiff.c
-
- <LI> Did some casts cleaning up to reduce compiler warnings in tif_fax3.c,
- from Bruce Carmeron <cameron@petris.com> -- modifications of
- changes made by Frank (sun cc still complained on cast).
-
- <LI> fixed various VC++ warnings as suggested by Gilles Vollant
- <info@winimage.com>.
-
- <LI> Modified TIFFquery.3t man pages info on TIFFIsByteSwapped() to
- not imply applications are responsible for image data swapping.
-
- <LI> HTML-ized the man pages, added to html/man
-
- <LI> Removed LZW Compression to comply with Unisys patent extortion.
-
- <LI> Corrected one remaining 16 -> 32 bit value in tif_fax3.c,
- From Ivo Penzar <ivo.penzar@infolink-software.com.
-
- <LI> Added patch from Ivo Penzar to have TiffAdvanceDirectory handle
- memory mapped files. <ivo.penzar@infolink-software.com>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
- <LI> Fixed apocalypse-inducing y2k bug in contrib/ras/ras2tiff.c
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-Last updated $Date: 2004/11/26 14:37:20 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.5.4.html b/src/3rdparty/libtiff/html/v3.5.4.html
deleted file mode 100644
index 714621e0c8..0000000000
--- a/src/3rdparty/libtiff/html/v3.5.4.html
+++ /dev/null
@@ -1,88 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.5.4
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.5.4<BR>
-<B>Previous Version</B>: <A HREF=v3.5.3.html>v3.5.3</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.onshore.com/pub/libtiff">ftp.onshore.com</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff/">http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
- <LI> None
-
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-
-<UL>
-
- <li> Added Pixar tag support. Contributed by Phil Beffery <phil@pixar.com>
-
- <li> Made one more change to tif_dir.c for removal of LZW compression. Also added notice
- when LZW compression invoked.
-
- <li> Fixed bug that caused LZW (non) compression to segfault. Added
- warning about LZW compression removed being removed, and why.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
- <li> Changed default compression in tools to TIFF_PACKBITS, and changed usage descriptions
- in tools to reflect removal of LZW compression
-
- <li> Added nostrip to install in tools/Makefile.in so that debugging
- symbols are kept.
-
- <li> Made Packbits the default compression in tools/tiff2rgba.c instead
- of LZW.
-
-
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-Last updated $Date: 2006/01/03 01:45:41 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.5.5.html b/src/3rdparty/libtiff/html/v3.5.5.html
deleted file mode 100644
index 20be92f8ec..0000000000
--- a/src/3rdparty/libtiff/html/v3.5.5.html
+++ /dev/null
@@ -1,155 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.5.5
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.5.5<BR>
-<B>Previous Version</B>: <A HREF=v3.5.4.html>v3.5.4</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.onshore.com/pub/libtiff">ftp.onshore.com</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff/">http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#lzwkit">Changes in the LZW compression kit</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-
- <LI> configure: added test for libc6 for linux targets. Bug reported by
- Stanislav Brabec <utx@k332.feld.cvut.cz>
-
- <LI> configure: fixed bugs in sed scripts
- (applied sed script s:/@:s;@:;s:/s;;:;: to configure).
- fix submitted by Stanislav Brabec <utx@k332.feld.cvut.cz>
-
- <LI> tools/iptcutil was not in files list, and wasn't being
- added to tar archive. Updated Makefile.in.
-
- <LI> Added 3.5 docs to html/Makefile.in.
- Thanks to Stanislav Brabec <utx@k332.feld.cvut.cz>
-
- <LI> Fixed tools/tiffcmp so that stopondiff testing works.
- Patch care of Joseph Orost <joe@sanskrit.lz.att.com>.
-
- <LI> Added fax3sm_winnt.c to distribution list in Makefile.in.
-
- <LI> Added libtiff/libtiff.def to TIFFILES distribution list.
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-
-<UL>
- <LI>tif_fax3.c: Fixed serious bug introduced during the uint16->uint32
- conversion for the run arrays.
-
- <LI> Set td_sampleformat default to SAMPLEFORMAT_UINT instead of
- SAMPLEFORMAT_VOID in TIFFDefaultDirectory() in tif_dir.c.
-
- <LI> Added "GetDefaulted" support for TIFFTAG_SAMPLEFORMAT in tif_aux.c.
-
- <LI> Patched tif_fax3.c so that dsp->runs is allocated a bit bigger
- to avoid overruns encountered with frle_bug.tif.
-
-
- <LI> Modified tif_unix.c to support 2-4GB seeks if USE_64BIT_API is
- set to 1, and added default (off) setting in tiffconf.h. This
- should eventually be set by the configure script somehow.
-
- The original work on all these 2-4GB changes was done by
- Peter Smith (psmith@creo.com).
-
- <LI> Modified tif_win32.c to support 2-4GB seeks.
-
- <LI> tentatively changed toff_t to be unsigned instead of signed to
- facilitate support for 2-4GB files.
-
- <LI> Updated a variety of files to use toff_t. Fixed some mixups
- between toff_t and tsize_t.
-
- <LI> Set tif_rawdatasize to zero when freeing raw data buffer in
- TIFFWriteDirectory().
-
- <LI> Enabled "REWRITE_HACK" in tif_write.c by default.
-
- <LI> Fix bug in tif_write.c when switching between reading one directory
- and writing to another.
-
- <LI> Made TIFFWriteCheck() public, and added TIFFCreateDirectory()
-
- <LI> Added TIFFmemory(3t) functions to libtiff.def.
-
- <LI> Added libtiff/libtiff.def to TIFFILES distribution list.
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
- <LI> fax2ps: Fixed mixup of width and height in bounding box statement
- as per submission by Nalin Dahyabhai <nalin@redhat.com>.
-
- <LI> fax2ps: Modified printruns to take uint32 instead of uint16.
- Patch courtesy of Bernt Herd <herd@herdsoft.com>
-
-
- <LI> Largely reimplemented contrib/addtiffo to avoid temp files,
- updating the TIFF file in place. Fixed a few other bugs to.
-
- <LI> Altered descriptions in tools to reflect "by default" lzw not supported
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION KIT</B></A>
-<UL>
- <LI>created mangle-src.sh -- sed scripts to munge src into LZW enabled format. Thanks to Stanislav Brabec <utx@k332.feld.cvut.cz>
-
- <LI>created Makefile
-
- <LI>merged tif_dir.c with current source.
-
-
- <LI> Created lzw compression kit, as a new CVS module (libtiff-lzw-compression-kit).
-
- <LI> Updated index.html to note lzw compression kit.
-
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-Last updated $Date: 2004/11/26 14:37:20 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.5.6-beta.html b/src/3rdparty/libtiff/html/v3.5.6-beta.html
deleted file mode 100644
index 682f845baa..0000000000
--- a/src/3rdparty/libtiff/html/v3.5.6-beta.html
+++ /dev/null
@@ -1,185 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.5.6
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.5.6beta<BR>
-<B>Previous Version</B>: <A HREF=v3.5.5.html>v3.5.5</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.onshore.com/pub/libtiff">ftp.onshore.com</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff/">http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in contrib</A>
-<LI><A HREF="#lzwkit">Changes in the LZW compression kit</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-
- <LI> Added GNULDdso target and switched linux and freebsd to use it.
- <LI> tools/Makefile.in: Modified to install properly on SGI.
- <LI> configure: Fixed DSO test for Linux as per patch from
- Jan Van Buggenhout <chipzz@Ace.ULYSSIS.Student.KULeuven.Ac.Be>.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-
-<UL>
-
- <LI> tif_dir.c: Clear TIFF_ISTILED flag in TIFFDefaultDirectory
- as per http://bugzilla.remotesensing.org/show_bug.cgi?id=18
- from vandrove@vc.cvut.cz.
-
- <LI> Modified tif_packbits.c decoding to avoid overrunning the
- output buffer, and to issue a warning if data needs to be
- discarded. See http://bugzilla.remotesensing.org/show_bug.cgi?id=18
-
- <LI> Modified TIFFClientOpen() to emit an error on an attempt to
- open a comperessed file for update (O_RDWR/r+) access. This is
- because the compressor/decompressor code gets very confused when
- the mode is O_RDWR, assuming this means writing only. See
- bug http://bugzilla.remotesensing.org/show_bug.cgi?id=13
-
- <LI> Applied patch for 0x0000 sequences in tif_fax3.h's definition
- of EXPAND1D() as per bug 11 (from Roman).
-
- <LI> Fixed tiffcomp.h to avoid win32 stuff if unix #defined, to improve
- cygwin compatibility.
-
- <LI> Applied patch from Roman Shpount to tif_fax3.c. This seems to
- be a proper fix to the buffer sizing problem. See
- http://bugzilla.remotesensing.org/show_bug.cgi?id=11
-
- <LI> Fixed tif_getimage.c to fix overrun bug with YCbCr images without
- downsampling. http://bugzilla.remotesensing.org/show_bug.cgi?id=10
- Thanks to Nick Lamb <njl98r@ecs.soton.ac.uk> for reporting the
- bug and proving the patch.
-
- <LI> Fixed tif_jpeg.c so avoid destroying the decompressor before
- we are done access data thanks to bug report from:
- Michael Eckstein <eckstein@gepro.cz>.
-
- <LI> tif_open.c: Don't set MMAP for O_RDWR files.
-
- <LI> tif_open.c: Set STRIPCHOP_DEFAULT for O_RDWR as well as O_RDONLY
- so that files opened for update can be strip chopped too.
-
- <LI> tif_read.c: fixed up bug with files missing rowsperstrip and
- the strips per separation fix done a few weeks ago.
-
- <LI> Tentatively added support for SAMPLEFORMAT_COMPLEXIEEEFP, and
- SAMPLEFORMAT_COMPLEXINT.
-
- <LI> index.html, bugs.html: added bugzilla info.
-
- <LI> tif_read.c: fix subtle bug with determining the number of
- rows for strips that are the last strip in a separation but
- not the last strip of all in TIFFReadEncodedStrip().
-
- <LI> Applied 16/32 bit fix to tif_fax3.c. Fix supplied by
- Peter Skarpetis <peters@serendipity-software.com.au>
-
- <LI> Modified tiffio.h logic with regard to including windows.h. It
- won't include it when building with __CYGWIN__.
-
- <LI> README: update to mention www.libtiff.org, don't list Sam's old
- email address.
-
- <LI> libtiff/tif_dirread.c: Don't use estimate strip byte count for
- one tile/strip images with an offset, and byte count of zero. These
- could be "unpopulated" images.
-
- <LI> tif_win32.c: Applied patch to fix overreads and ovverwrites
- caught by BoundsChecker. From Arvan Pritchard
- <arvan.pritchard@infomatix.co.uk> (untested).
-
- <LI> tif_getimage.c: Applied patch to silence VC6 warnings. From
- Arvan Pritchard <arvan.pritchard@informatix.co.uk>
-
- <LI> tif_lzw.c: Applied patch to silence VC6 warnings. From
- Arvan Pritchard <arvan.pritchard@informatix.co.uk>
-
- <LI> libtiff/tif_apple.c: Applied "Carbon" support patches supplied by
- Leonard Rosenthol <leonardr@lazerware.com>. May interfere
- with correct building on older systems. If so, please let me know.
-
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
-
- <LI> tools/rgb2ycbcr.c: fixed output strip size to account for vertical
- roundup if rows_per_strip not a multiple of vertical sample size.
-
- <LI> tools/tiffsplit.c: Copy TIFFTAG_SAMPLEFORMAT.
-
- <LI> Modified tiff2bw to ensure portions add to 100%, and that
- white is properly recovered. See bug
- http://bugzilla.remotesensing.org/show_bug.cgi?id=15 Patch
- c/o Stanislav Brabec <utx@penguin.cz>
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN CONTRIB:</B></A>
-
-<UL>
-
- <LI> contrib/addtiffo: Added "averaging" resampling option.
-
- <LI> Added contrib/stream (stream io) code submitted by Avi Bleiweiss.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION KIT</B></A>
-<UL>
-
- <LI> updated tif_dir.c to reflect changes to no-lzw tif_dir.c
-
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-Last updated $Date: 2006/03/18 17:12:47 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.5.7.html b/src/3rdparty/libtiff/html/v3.5.7.html
deleted file mode 100644
index 528df74e6e..0000000000
--- a/src/3rdparty/libtiff/html/v3.5.7.html
+++ /dev/null
@@ -1,259 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.5.7
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.5.7<BR>
-<B>Previous Version</B>: <A HREF=v3.5.6-beta.html>v3.5.6 Beta</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff/">http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#lzwkit">Changes in the LZW compression kit</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-<li> libtiff/libtiff.def: Brent Roman submitted new version adding
-serveral missing entry points. Also add a few other entry points
-later.
-
-<li> configure, Makefile.in, etc: added support for OPTIMIZER being
- set from config.site.
-<li> config.guess: updated wholesale to an FSF version apparently
- from 1998 (as opposed to 1994). This is mainly inspired by
- providing for MacOS X support.
-
-<li> configure/config.site: modified to check if -lm is needed for
- MACHDEPLIBS if not supplied by config.site. Needed for Darwin.
-<li> libtiff/tiff.h: Applied hac to try and resolve the problem
- with the inttypes.h include file on AIX. (Bug 39)
-
-<li> configure, *Makefile.in: Various changes to improve configuration
- for HP/UX specifically, and also in general. (Bug 40) They include:
-<ul>
- <li> Try to handle /usr/bin/sh instead of /bin/sh where necessary.
- <li> Upgrade to HP/UX 10.x+ compiler, linker and dso options.
- <li> Fixed mmap() test to avoid MMAP_FIXED ... it isn't available on HP
- <li> Use -${MAKEFLAGS} in sub makes from makefiles.
- <li> Fixed SCRIPT_SH/SHELL handling.
-</ul>
-<li> configure: Changes for DSO generation on AIX provided by
- John Marquart <jomarqua@indiana.edu>.
-
-<li> configure, libtiff/Makefile.in: Modified to build DSOs properly
- on Darwin thanks to Robert Krajewski (rpk@alum.mit.edu) and
- Keisuke Fujii (fujiik@jlcuxf.kek.jp).
-
-<li> configure, libtiff/Makefile.in: applied OpenBSD patches as per bug 61.
-
-<li> Makefile.in: added DESTDIR support as per bug 60.
-
-<li> libtiff/tif_jpeg.c: Define HAVE_BOOLEAN on windows if RPCNDR.H
- has been included.
-<li> man/Makefile.in: add TIFFClientOpen link as per debian submitted
- bug 66.
-<li> libtiff/Makefile.in: Fixed @DSOSUB_VERSION to be @DSOSUF_VERSION@
- in two places.
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-
-<UL>
-<li> tif_fax3.c: keep rw_mode flag internal to fax3 state to remember
- whether we are encoding or decoding. This is to ensure graceful
- recovery if TIFFClientOpen() discovers an attempt to open a compressed
- file for "r+" access, and subsequently close it, as it resets the
- tif_mode flag to O_RDONLY in this case to avoid writes, confusing the
- compressor's concept of whether it is in encode or decode mode.
-<li> tif_luv.c/tiff.h/tiffio.h:
- New version of TIFF LogLuv (SGILOG) modules contributed by Greg Ward
- (greg@shutterfly.com). He writes:
-
-<ol>
- <li> I improved the gamut-mapping function in tif_luv.c for imaginary
- colors, because some images were being super-saturated on the input
- side and this resulted in some strange color shifts in the output.
-
- <li> I added a psuedotag in tiff.h to control random dithering during
- LogLuv encoding. This is turned off by default for 32-bit LogLuv and
- on for 24-bit LogLuv output. Dithering improves the average color
- accuracy over the image.
-
- <li> I added a #define for LOG_LUV_PUBLIC, which is enabled by default in
- tiffio.h, to expose internal routines for converting between LogLuv and
- XYZ coordinates. This is helpful for writing more efficient,
- specialized conversion routines, especially for reading LogLuv files.
-</ol>
-
-<li> libtiff/tif_dirinfo.c: don't declare tiffFieldInfo static on VMS.
-
-<li> Added TIFFTAG_COPYRIGHT support.
-<li> tif_getimage.c: Added support for 16bit minisblack/miniswhite
- images in RGBA interface.
-<li> libtiff/tif_dirinfo.c: removed duplicate TIFFTAG_PHOTOSHOP as per
- bug 44.
-<li> libtiff/tif_dirwrite.c: Added support for TIFF_VARIABLE2 in the
- case of writing TIFF_BYTE/TIFF_SBYTE fields as per bug 43.
-
-<li> libtiff/tif_dirinfo.c: Modified the TIFF_BYTE definition for
- TIFFTAG_PHOTOSHOP to use a writecount of TIFF_VARIABLE2 (-3) to
- force use of uint32 counts instead of short counts.
-
-<li> libtiff/tif_dirinfo.c: moved pixar and copyright flags to
- ensure everything is in order.
-
-<li> Integrated experimental OJPEG support from Scott Marovich of HP.
-
-<li> libtiff/tif_open.c: Seek back to zero after failed read,
- before writing header.
-
-<li> libtiff/tiff.h, libtiff/tif_fax3.c: added check for __LP64__
- when checking for 64 bit architectures as per bugzilla bug 67.
-<li> libtiff/tif_getimage.c: Use memmove() instead of TIFFmemcpy()
- in TIFFReadRGBATile() to avoid issues in cases of overlapping
- buffers. See Bug 69 in Bugzilla.
-<li> libtiff/tif_getimage.c: Don't complain for CMYK (separated)
- images with more than four samples per pixel as per bug 73.
-
-<li> libtiff/tif_getimage.c: relax handling of contig case where
-there are extra samples that are supposed to be ignored as per bug 75. This
-should now work for 8bit greyscale or palletted images.
-
-<li> libtiff/tif_packbits.c: fixed memory overrun error as per bug 77.
-
-<li> libtiff/tif_getimage.c: Fixed problem with reading strips or
-tiles that don't start on a tile boundary. Fix contributed by
-Josep Vallverdu (from HP), and further described in bug 47.
-
-<li> libtif/tif_fax3.c: Removed #ifdef PURIFY logic, and modified to
- always use the "safe" version, even if there is a very slight
- cost in performance as per bug 54.
-<li> libtiff/tif_lzw.c: added dummy LZWSetupEncode() to report an
- error about LZW not being available.
-
-<li> libtiff/tif_dir.c: propagate failure to initialize compression
- back from TIFFSetField() as an error status, so applications can
- detect failure.
-
-<li> libtiff/tif_lzw.c: Avoid MS VC++ 5.0 optimization bug as per bug 78.
-
-<li> libtiff/tif_dirwrite.c: added TIFFRewriteDirectory() function.
-Updated TIFFWriteDirectory man page to include TIFFRewriteDirectory.
-
-<li> libtiff/tiff.h: I have created COMPRESSION_CCITT_T4,
- COMPRESSION_CCITT_T6, TIFFTAG_T4OPTIONS and TIFFTAG_T6OPTIONS aliases
- in keeping with TIFF 6.0 standard in tiff.h as per bug 83.
-
-<li> Added PHOTOMETRIC_ITULAB as per bug 90.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!-------------------------------------------------------------------------->
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
-<li> Brent Roman contributed updated tiffcp utility (and tiffcp.1)
- with support for extracting subimages with the ,n syntax, and also
- adding the -b bias removal flag.
-<li> tiff2ps.c/tiff2ps.1: Substantial changes to tiff2ps by
- Bruce A. Mallett, including a faster encoder, fixes for level
- 2 PostScript, and support for the imagemask operator.
-<li> fax2ps.c: Helge (libtiff at oldach.net) submitted fix
-that corrects behaviour for non-Letter paper
-sizes. (Bug 35) It fixes two problems:
-<br>
- Without scaling (-S) the fax is now centered on the page size specified
- with -H and/or -W. Before, fax2ps was using an obscure and practially
- useless algorithm to allocate the image relative to Letter sized paper
- which sometime sled to useless whitespace on the paper, while at the
- same time cutting of the faxes printable area at the opposite border.
-<br>
-
- Second, scaling now preserves aspect ratio, which makes unusual faxes
- (in particular short ones) print properly.
-
-<li> thumbnail.c: changed default output compression
- to packbits from LZW since LZW isn't generally available.
-<li> tiff2rgba.c: added -n flag to avoid emitting alpha component. Also added
-a man page for tiff2rgba.
-
-<li> tiffcmp.c: Fixed multi samples per pixel support for ContigCompare
-as per bug 53.
-Updated bug section of tiffcmp.1 to note tiled file issues.
-
-<li> libtiff/tif_getimage.c: Fixed so that failure is properly
- reported by gtTileContig, gtStripContig, gtTileSeparate and
- gtStripSeparate as per bug 51.
-
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION KIT:</B></A>
-<UL>
- <LI> Rewrote lzw patching process so that is required to enable full
- LZW support is to drop the tif_lzw.c from the
- libtiff-lzw-compression-kit over the one in the libtiff directory.
-
- <LI> Some changes were made to make recovery from failure to
- initialize the LZW compressor more graceful.
-
- <LI> Note that as distributed libtiff support LZW decompression, but
- not LZW compression.
-</UL>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
-<UL>
-<li> Fixed distribution to include contrib/addtiffo/tif_ovrcache.{c,h}.
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-Last updated $Date: 2004/11/26 14:37:20 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.6.0.html b/src/3rdparty/libtiff/html/v3.6.0.html
deleted file mode 100644
index 888e5472e7..0000000000
--- a/src/3rdparty/libtiff/html/v3.6.0.html
+++ /dev/null
@@ -1,434 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.6.0
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.6.0<BR>
-<B>Previous Version</B>: <A HREF=v3.5.7.html>v3.5.7</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
-ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
-http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#hightlights">Major Changes</A>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in the contrib area</A>
-<LI><A HREF="#lzwkit">Changes in the LZW compression kit</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
-
-<ul>
- <li> New utility <a href=./man/raw2tiff.1.html>raw2tiff</a>
-for converting raw rasters into TIFF files.
- <li> Lots of new <a href=./man/tiff2ps.1.html>tiff2ps</a> options.
- <li> Lots of new <a href=./man/fax2tiff.1.html>fax2tiff</a> options.
- <li> Lots of bug fixes for LZW, JPEG and OJPEG compression.
-</ul>
-
-<h3>Custom Tag Support</h3>
-
-The approach to extending libtiff with custom tags has changed radically.
-Previously, all internally supported TIFF tags had a place in the
-private TIFFDirectory structure within libtiff to hold the values (if read),
-and a "field number" (ie. FIELD_SUBFILETYPE) used to identify that tag.
-However, every time a new tag was added to the core, the size of the
-TIFFDirectory structure would changing, breaking any dynamically linked
-software that used the private data structures.<p>
-
-Also, any tag not recognised
-by libtiff would not be read and accessable to applications without some
-fairly complicated work on the applications part to pre-register the tags
-as exemplified by the support for "Geo"TIFF tags by libgeotiff layered on
-libtiff. <p>
-
-Amoung other things this approach required the extension code
-to access the private libtiff structures ... which made the higher level
-non-libtiff code be locked into a specific version of libtiff at compile time.
-This caused no end of bug reports!<p>
-
-The new approach is for libtiff to read all tags from TIFF files. Those that
-aren't recognised as "core tags" (those having an associated FIELD_ value,
-and place for storage in the TIFFDirectory structure) are now read into a
-dynamic list of extra tags (td_customValues in TIFFDirectory). When a new
-tag code is encountered for the first time in a given TIFF file, a new
-anonymous tag definition is created for the tag in the tag definition list.
-The type, and some other metadata is worked out from the instance encountered.
-These fields are known as "custom tags". <p>
-
-Custom tags can be set and fetched normally using TIFFSetField() and
-TIFFGetField(), and appear pretty much like normal tags to application code.
-However, they have no impact on internal libtiff processing (such as
-compression). Some utilities, such as tiffcp will now copy these custom
-tags to the new output files. <p>
-
-As well as the internal work with custom tags, new C API entry points
-were added so that extension libraries, such as libgeotiff, could
-define new tags more easily without accessing internal data structures.
-Because tag handling of extension tags is done via the "custom fields"
-mechanism as well, the definition provided externally mostly serves to provide
-a meaningful name for the tag.
-
-The addition of "custom tags" and the altered approach to extending libtiff
-with externally defined tags is the primary reason for the shift to the
-3.6.x version number from 3.5.x.<p>
-
-<P><HR WIDTH=65% ALIGN=left>
-<!--------------------------------------------------------------------------->
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-<li> configure, config.site: Fix for large files (>2GiB) support. New
-option in the config.site: LARGEFILE="yes". Should be enougth for the large
-files I/O.
-
-<li> configure: Set -DPIXARLOG_SUPPORT option along with -DZIP_SUPPORT.
-
-<li> html/Makefile.in: Updated to use groffhtml for generating html pages
-from man pages.
-
-<li> configure, libtiff/Makefile.in: Added SCO OpenServer 5.0.6 support
-from John H. DuBois III.
-
-<li> libtiff/{Makefile.vc, libtiff.def}: Missed declarations added.
-
-<li> libtiff/Makefile.in, tools/Makefile.in: Shared library will not be
-stripped when installing, utility binaries will do be stripped. As per bug 93.
-
-<li> man/Makefile.in: Patch DESTDIR handling as per bug 95.
-
-<li> configure: OpenBSD changes for Sparc64 and DSO version as per bug 96.
-
-<li> config.site/configure: added support for OJPEG=yes option to enable
-OJPEG support from config.site.
-
-<li> config.guess, config.sub: Updated from ftp.gnu.org/pub/config.
-
-<li> configure: Modify CheckForBigEndian so it can work in a cross
-compiled situation.
-
-<li> configure, libtiff/Makefile.in: Changes for building on MacOS 10.1
-as per bug 94.
-
-<li> html/Makefile.in: added missing images per bug 92.
-
-<li> port/Makefile.in: fixed clean target per bug 92.
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-
-<li> libtiff/tif_getimage.c: New function <A
-HREF="./man/TIFFReadRGBAImage.3t.html">TIFFReadRGBAImageOriented()</A>
-implemented to retrieve raster array with user-specified origin position.
-
-<li> libtiff/tif_fax3.c: Fix wrong line numbering.
-
-<li> libtiff/tif_dirread.c: Check field counter against number of fields.
-
-<li> Store a list of opened IFD to prevent directory looping.
-
-<li> libtiff/tif_jpeg.c: modified segment_height calculation to always
-be a full height tile for tiled images. Also changed error to just
-be a warning.
-
-<li> libtiff/tif_lzw.c: fixed so that decoder state isn't allocated till
-LZWSetupDecode(). Needed to read LZW files in "r+" mode.
-
-<li> libtiff/tif_dir.c: fixed up the tif_postdecode settings responsible
-for byte swapping complex image data.
-
-<li> libtiff/tif_open.c: Removed error if opening a compressed file
-in update mode bug (198).
-
-<li> libtiff/tif_write.c: TIFFWriteCheck() now fails if the image is
-a pre-existing compressed image. That is, image writing to pre-existing
-compressed images is not allowed.
-
-<li> html/man/*.html: Web pages regenerated from man pages.
-
-<li> libtiff/tif_jpeg.c: Hack to ensure that "boolean" is defined properly
-on Windows so as to avoid the structure size mismatch error from libjpeg
-(bug 188).
-
-<li> libtiff/tiff.h: #ifdef USING_VISUALAGE around previous Visual Age
-AIX porting hack as it screwed up gcc. (bug 39)
-
-<li> libtiff/tiff.h: added COMPRESSION_JP2000 (34712) for LEAD tools
-custom compression.
-
-<li> libtiff/tif_dirread.c: Another fix for the fetching SBYTE arrays
-by the TIFFFetchByteArray() function. (bug 52)
-
-<li> libtiff/tif_dirread.c: Expand v[2] to v[4] in TIFFFetchShortPair()
-as per bug 196.
-
-<li> libtiff/tif_lzw.c: Additional consistency checking added in
-LZWDecode() and LZWDecodeCompat() fixing bugs 190 and 100.
-
-<li> libtiff/tif_lzw.c: Added check for valid code lengths in LZWDecode()
-and LZWDecodeCompat(). Fixes bug 115.
-
-<li> tif_getimage.c: Ensure that TIFFRGBAImageBegin() returns the
-return code from the underlying pick function as per bug 177.
-
-<li> libtiff/{tif_jpeg.c,tif_strip.c,tif_print.c}: Hacked tif_jpeg.c to
-fetch TIFFTAG_YCBCRSUBSAMPLING from the jpeg data stream if it isn't
-present in the tiff tags as per bug 168.
-
-<li> libtiff/tif_jpeg.c: Fixed problem with setting of nrows in
-JPEGDecode() as per bug 129.
-
-<li> libtiff/tif_read.c, libtiff/tif_write.c: TIFFReadScanline() and
-TIFFWriteScanline() now set tif_row explicitly in case the codec has
-fooled with the value as per bug 129.
-
-<li> libtiff/tif_ojpeg.c: Major upgrade from Scott. Details in bug 156.
-
-<li> libtiff/tif_open.c: Pointers to custom procedures
-in TIFFClientOpen() are checked to be not NULL-pointers.
-
-<li> libtiff/tif_lzw.c: Assertions in LZWDecode and LZWDecodeCompat
-replaced by warnings. Now libtiff should read corrupted LZW-compressed
-files by skipping bad strips as per bug 100.
-
-<li> libtiff/: tif_dirwrite.c, tif_write.c, tiffio.h:
-<a href=./man/TIFFWriteDirectory.3t.html>TIFFCheckpointDirectory()</a>
-routine added as per bug 124. The
-<a href=./man/TIFFWriteDirectory.3t.html>TIFFWriteDirectory</a>
-man page discusses this new function as well as the related
-<a href=./man/TIFFWriteDirectory.3t.html>TIFFRewriteDirectory()</a>.
-
-<li> libtiff/: tif_codec.c, tif_compress.c, tiffiop.h, tif_getimage.c:
-Introduced
-additional members tif->tif_decodestatus and tif->tif_encodestatus
-for correct handling of unconfigured codecs (we should not try to read
-data or to define data size without correct codecs). See bug 119.
-
-<li> tif_dirread.c: avoid div-by-zero if rowbytes is zero in chop func as
-per bug 111.
-
-<li> libtiff/: tiff.h, tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c,
-tif_dirwrite.c: Dwight Kelly added get/put code for new tag XMLPACKET as
-defined in Adobe XMP Technote. Added missing INKSET tag value from TIFF 6.0
-spec INKSET_MULTIINK (=2). Added missing tags from Adobe TIFF technotes:
-CLIPPATH, XCLIPPATHUNITS, YCLIPPATHUNITS, OPIIMAGEID, OPIPROXY and
-INDEXED. Added PHOTOMETRIC tag value from TIFF technote 4 ICCLAB (=9).
-
-<li> libtiff/tif_getimage.c: Additional check for supported codecs added in
-TIFFRGBAImageOK, TIFFReadRGBAImage, TIFFReadRGBAStrip and TIFFReadRGBATile now
-use TIFFRGBAImageOK before reading a per bug 110.
-
-<li> libtiff/: tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_dirread.c,
-tif_dirwrite.c: Added routine
-<a href=./man/TIFFDataWidth.3t.html>TIFFDataWidth</a> for determining
-TIFFDataType sizes instead of working with tiffDataWidth array
-directly as per bug 109.
-
-<li>libtiff/: tif_dirinfo.c, tif_dirwrite.c: Added possibility to
-read broken TIFFs with LONG type used for TIFFTAG_COMPRESSION,
-TIFFTAG_BITSPERSAMPLE, TIFFTAG_PHOTOMETRIC as per bug 99.
-
-<li> libtiff/{tiff.h,tif_fax3.c}: Add support for __arch64__ as per bug 94.
-
-<li> libtiff/tif_read.c: Fixed TIFFReadEncodedStrip() to fail if the
-decodestrip function returns anything not greater than zero as per bug 97.
-
-<li> libtiff/tif_jpeg.c: fixed computation of segment_width for
-tiles files to avoid error about it not matching the
-cinfo.d.image_width values ("JPEGPreDecode: Improper JPEG strip/tile
-size.") for ITIFF files. Apparently the problem was incorporated since
-3.5.5, presumably during the OJPEG/JPEG work recently.
-
-<li> libtiff/tif_getimage.c: If DEFAULT_EXTRASAMPLE_AS_ALPHA is 1
-(defined in tiffconf.h - 1 by default) then the RGBA interface
-will assume that a fourth extra sample is ASSOCALPHA if the
-EXTRASAMPLE value isn't set for it. This changes the behaviour of
-the library, but makes it work better with RGBA files produced by
-lots of applications that don't mark the alpha values properly.
-As per bugs 93 and 65.
-
-<li> libtiff/tif_jpeg.c: allow jpeg data stream sampling values to
-override those from tiff directory. This makes this work with
-ImageGear generated files.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!-------------------------------------------------------------------------->
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
-
-<li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Added page size setting
-when creating PS Level 2.
-
-<li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Fixed PS comment emitted when
-FlateDecode is being used.
-
-<li> <a href=./man/tiffsplit.1.html>tiffsplit</a>: increased the maximum
-number of pages that can be split.
-
-<li> <a href=./man/raw2tiff.1.html>raw2tiff</a>: Added option `-p' to
-explicitly select color space of input image data.
-
-<li> <a href=./man/tiffmedian.1.html>tiffmedian</a>: Suppiort for large
-(> 2GB) images.
-
-<li> <a href=./man/ppm2tiff.1.html>ppm2tiff</a>: Fixed possible endless loop.
-
-<li> <a href=./man/tiff2rgba.1.html>tiff2rgba</a>: Switched to use
-<A HREF="./man/TIFFReadRGBAImage.3t.html">TIFFReadRGBAImageOriented()</A>
-instead of <A HREF="./man/TIFFReadRGBAImage.3t.html">TIFFReadRGBAImage()</A>.
-
-<li> <a href=./man/tiffcmp.1.html>tiffcmp</a>: Fixed problem with unused data
-comparing (bug 349). `-z' option now can be used to set the number of reported
-different bytes.
-
-<li> <a href=./man/tiffcp.1.html>tiffcp</a>: Added possibility to specify
-value -1 to -r option to get the entire image as one strip (bug 343).
-
-<li> <a href=./man/tiffcp.1.html>tiffcp</a>: Set the correct RowsPerStrip
-and PageNumber values (bug 343).
-
-<li> <a href=./man/fax2tiff.1.html>fax2tiff</a>: Page numbering fixed (bug
-341).
-
-<li> <a href=./man/ppm2tiff.1.html>ppm2tiff</a>: PPM header parser improved:
-now able to skip comments.
-
-<li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Force deadzone printing when
-EPS output specified (bug 325).
-
-<li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Add ability to generate
-PS Level 3. It basically allows one to use the /flateDecode filter for ZIP
-compressed TIFF images. Patch supplied by Tom Kacvinsky (bug 328).
-
-<li> <a href=./man/tiffcp.1.html>tiffcp</a>: Fixed problem with colorspace
-conversion for JPEG encoded images (bugs 23 and 275)
-
-<li> <a href=./man/fax2tiff.1.html>fax2tiff</a>: Applied patch from
-Julien Gaulmin. More switches for fax2tiff tool for better control
-of input and output (bugs 272 and 293).
-
-<li> <a href=./man/raw2tiff.1.html>raw2tiff</a>:
-New utility for turning raw raster images into TIFF files
-written by Andrey Kiselev.
-
-<li> <a href=./man/tiff2ps.1.html>tiff2ps</a>:
-Sebastian Eken provided patches (bug 200) to add new these new
-switches:
- <ul>
- <li> <b>-b #</b>: for a bottom margin of # inches
- <li> <b>-c</b>: center image
- <li> <b>-l #</b>: for a left margin of # inches
- <li> <b>-r</b>: rotate the image by 180 degrees
- </ul>
-
-Also, new features merged with code for shrinking/overlapping.
-
-<li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Don't emit BeginData/EndData
-DSC comments since we are unable to properly include the amount to skip
-as per bug 80.
-
-<li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Added workaround for some
-software that may crash when last strip of image contains fewer number
-of scanlines than specified by the `/Height' variable as per bug 164.
-
-<li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: Patch from John Williams to add new
-functionality for tiff2ps utility splitting long images in several pages as
-per bug 142. New switches:
- <ul>
- <li> <b>-H #</b>: split image if height is more than # inches
- <li> <b>-L #</b>: overLap split images by # inches
- </ul>
-
-<li> <a href=./man/tiff2ps.1.html>tiff2ps</a>: New commandline
-switches to override resolution units obtained from the input file per bug 131:
- <ul>
- <li> <b>-x</b>: override resolution units as centimeters
- <li> <b>-y</b>: override resolution units as inches
- </ul>
-
-<li> <a href=./man/fax2tiff.1.html>fax2tiff</a>: Updated to reflect
-latest changes in libtiff per bug 125.
-
-<li> tiff2ps: Division by zero fixed as per bug 88.
-
-<li> <a href=./man/tiffcp.1.html>tiffcp<a>:
-Added support for 'Orientation' tag.
-
-<li> <a href=./man/tiffdump.1.html>tiffdump</a>:
-include TIFFTAG_JPEGTABLES in tag list.
-
-<li> tiffset: fix bug in error reporting.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
-<UL>
-
-<li> Fixed distribution to include contrib/addtiffo/tif_ovrcache.{c,h}.
-<li> libtiff/contrib/win95: renamed to contrib/win_dib. Added new
-Tiffile.cpp example of converting TIFF files into a DIB on Win32 as per
-bug 143.
-
-</UL>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION
-KIT:</B></A>
-<UL>
-
-<li> LZW compression kit synchronized with actual libtiff version.
-
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-Last updated $Date: 2003/10/04 11:38:17 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.6.1.html b/src/3rdparty/libtiff/html/v3.6.1.html
deleted file mode 100644
index d10606225b..0000000000
--- a/src/3rdparty/libtiff/html/v3.6.1.html
+++ /dev/null
@@ -1,199 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
-Changes in TIFF v3.6.1
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.6.1<BR>
-<B>Previous Version</B>: <A HREF=v3.6.0.html>v3.6.0</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
-ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
-http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#hightlights">Major Changes</A>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in the contrib area</A>
-<LI><A HREF="#lzwkit">Changes in the LZW compression kit</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
-
-<ul>
- <li> New utility <a href="./man/tiff2pdf.1.html">tiff2pdf</a>
- for converting TIFF images directly into PDF.
- <li> New <a href="./man/TIFFcolor.3t.html">color conversion module</a>.
- <li> Full support for Orientation tag in
- <a href="./man/TIFFReadRGBAImage.3t.html">TIFFRGBAImage</a> interface.
- <li> Many bugs fixed.
-</ul>
-
-
-<P><HR WIDTH=65% ALIGN=left>
-<!--------------------------------------------------------------------------->
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-
-<li> libtiff/makefile.vc, tools/makefile.vc: Support for IJG JPEG library.
-
-<li> Makefile.in: Add an absolute path to the test_pics.sh call.
-
-<li> Makefile.in: Add an absolute path to the test_pics.sh call.
-
-<li> libtiff/tiffcomp.h: #define _BSDTYPES_DEFINED when defining BSD typedefs.
-
-<li> configure, libtiff/{Makefile.in, mkversion.c}: Relative buildings fixed.
-
-<li> Makefile.in: Add an absolute path to the test_pics.sh call.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-
-<li> libtiff/{tif_color.c, tif_getimage.c, tiffio.h}: Added support
-for ReferenceBlackWhite tag handling when converted from YCbCr color space as
-per bug 120.
-
-<li> libtiff/{tif_getimage.c, tif_aux.c}: Read WhitePoint tag from the
-file and properly use it for CIE Lab 1976 to RGB transform.
-
-<li> libtiff/{tif_getimage.c, tiffio.h}: Finally resolved problems with
-orientation handling. TIFFRGBAImage interface now properly supports all
-possible orientations, i.e. images will be flipped both in horizontal and
-vertical directions if required. 'Known bugs' section now removed from the
-appropriate manual pages.
-
-<li> libtiff/tif_luv.c: Fixed bug in 48-bit to 24-bit conversion routine,
-reported by Antonio Scuri.
-
-<li> libtiff/{tiffio.h, tif_codec.c}: Added new function
-TIFFIsCODECConfigured(), suggested by Ross Finlayson.
-
-<li> libtiff/tif_ojpeg.c: TIFFVGetField() function now can properly extract
-the fields from the OJPEG files. Patch supplied by Ross Finlayson.
-
-<li> libtiff/tif_dir.h: _TIFFFindOrRegisterdInfo declaration replaced
-with _TIFFFindOrRegisterFieldInfo as reported by Ross Finlayson.
-
-<li> libtiff/tif_dirinfo.c: Implemented binary search in _TIFFMergeFieldInfo().
-Patch supplied by Ross Finlayson.
-
-<li> tif_dirread.c: do not mark all anonymously defined tags to be IGNOREd (as
-it was done in 3.6.0).
-
-<li> libtiff/{tiff.h, tif_dirinfo.c}: Added support for IFD (13) datatype,
-intruduced in "Adobe PageMaker TIFF Technical Notes".
-
-<li> libtiff/{tif_color.c, tif_getimage.c, tiffio.h}: New color space
-conversion code: CIE L*a*b* 1976 images now supported by the TIFFRGBAImage
-interface. YCbCr to RGB conversion code also moved there and now has
-<a href="./man/TIFFcolor.3t.html">publicly available interface</a>. These
-routines currently used in TIFFRGBAImage interface only and not supported in
-other libtiff tools yet. So if you want, for example, to convert CIE Lab image
-into PostScript file you should do it in two steps: chnge colorspace to RGB
-using <a href="./man/tiff2rgba.1.html">tiff2rgba</a> utility abd then process
-it with the <a href="./man/tiff2ps.1.html">tiff2ps</a>.
-
-<li> libtiff/tif_tile.c: Remove spurious use of "s" (sample) in the
-planarconfig_contig case in TIFFComputeTile() as per bug 387
-
-<li> libtiff/tiffiop.h: New macros: TIFFmax and TIFFmin.
-
-<li> libtiff/{tiffio.h, tif_strip.c}: Added TIFFRawStripSize() function
-as suggested by Chris Hanson.
-
-<li> libtiff/{tif_lzw.c, tif_fax3.c}: Proper support for update mode
-as per bug 424.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!-------------------------------------------------------------------------->
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
-
-<li> <a href=./man/tiff2pdf.1.html>tiff2pdf</a>: New tool, written by
-Ross Finlayson, to directly convert TIFF files to PDF.
-
-<li> <a href=./man/tiffgt.1.html>tiffgt</a>: Unmaintained and platform
-dependent sgigt utility removed and replaced with the completely rewritten
-portable <a href=./man/tiffgt.1.html>tiffgt</a> tool (depend on OpenGL and
-GLUT). This tool will not build by default.
-
-<li> <a href=./man/ras2tiff.1.html>ras2tiff</a>: Properly determine
-SUN Rasterfiles with the reverse byte order (it is reported by the magic
-header field). Problem reported by Andreas Wiesmann.
-
-<li> <a href=./man/raw2tiff.1.html>raw2tiff</a>: Implemented image size
-guessing using correlation coefficient calculation between two neighbour
-lines.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
-<UL>
-
-<li> contrib/pds/{tif_pdsdirread.c, tif_pdsdirwrite.c}: Use TIFFDataWidth()
-function insted of tiffDataWidth array.
-
-</UL>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION
-KIT:</B></A>
-<UL>
-
-<li> Proper support for update mode as per bug 424.
-
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-Last updated $Date: 2003/12/24 22:14:15 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.7.0.html b/src/3rdparty/libtiff/html/v3.7.0.html
deleted file mode 100644
index 413f2c6053..0000000000
--- a/src/3rdparty/libtiff/html/v3.7.0.html
+++ /dev/null
@@ -1,144 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
- Changes in TIFF v3.7.0
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.7.0<BR>
-<B>Previous Version</B>: <A HREF=v3.7.0beta2.html>v3.7.0beta2</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
-ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
-http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#hightlights">Major Changes</A>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in the contrib area</A>
-<LI><A HREF="#lzwkit">Changes in the LZW compression kit</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
-
-<UL>
-
- <li> Several bugs found after 3.7.0beta2 release were fixed.
-
-</UL>
-
-
-<P><HR WIDTH=65% ALIGN=left>
-<!--------------------------------------------------------------------------->
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
- <li> ltmain.sh: Fix for MinGW compilation.
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-
- <li> libtiff/{tif_dirread.c, tif_jpeg.c, tif_luv.c, tif_ojpeg.c,
- tif_pixarlog.c, tif_write.c}: Handle the zero strip/tile sizes
- properly (Dmitry V. Levin, Marcus Meissner).
-
- <li> libtiff/tif_dirinfo.c: Type of the TIFFTAG_SUBIFD field changed
- to TIFF_IFD.
-
- <li> Preliminary support for BigTIFF files: now libtiff can
- recognize and reject to open such images. ;-)
-
- <li> libtiff/tif_dir.c: Initialize td_tilewidth and td_tilelength fields
- of the TIFFDirectory structure with the 0 instead of -1 to avoid
- confusing integer overflows in TIFFTileRowSize() for striped images.
-
- <li> libtiff/tif_dir.c: Initialize td_tilewidth and td_tilelength fields
- of the TIFFDirectory structure with the 0 instead of -1 to avoid
- confusing integer overflows in TIFFTileRowSize() for striped images.
-
- <li> libtiff/tif_dirinfo.c: Fix bug with tif_foundfield and reallocation
- of tif_fieldinfo as per bug
- <A HREF="http://bugzilla.remotesensing.org/show_bug.cgi?id=630">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=630</A>
-
- <li> libtiff/tif_compress.c: Improved error reporting in
- TIFFGetConfiguredCODECs() (Dmitry V. Levin).
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!-------------------------------------------------------------------------->
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
- <li> tiffcmp.c (leof): Renamed from 'eof' in order to avoid
- conflict noticed under MinGW.
-
- <li> tiff2pdf.c: Fixed TransferFunction tag handling reported
- by Ross A. Finlayson.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
-
-<UL>
-
- <li> No changes.
-
-</UL>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION
-KIT:</B></A>
-<UL>
-
- <li> This one is not longer needed.
-
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-Last updated $Date: 2004/12/20 19:31:44 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.7.0alpha.html b/src/3rdparty/libtiff/html/v3.7.0alpha.html
deleted file mode 100644
index 95c633ca5d..0000000000
--- a/src/3rdparty/libtiff/html/v3.7.0alpha.html
+++ /dev/null
@@ -1,249 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
- Changes in TIFF v3.7.0alpha
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.7.0alpha<BR>
-<B>Previous Version</B>: <A HREF=v3.6.1.html>v3.6.1</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
-ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
-http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#hightlights">Major Changes</A>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in the contrib area</A>
-<LI><A HREF="#lzwkit">Changes in the LZW compression kit</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
-
-<ul>
- <li> Significant changes in software configuration: we are switched
- to GNU autotools now.
-
- <li> tiffset: tiffset now can set any libtiff supported tags. Tags
- can be supplied by the mnemonic name or number.
-</ul>
-
-
-<P><HR WIDTH=65% ALIGN=left>
-<!--------------------------------------------------------------------------->
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
- <li> Get rid of the old configuration system and switch to
- GNU autotools.
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
- <li> libtiff/tif_ojpeg.c: Fixed problem with duplicated SOI and SOF
- markers as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=581"
- http://bugzilla.remotesensing.org/show_bug.cgi?id=581</a>.
-
- <li> libtiff/{tif_open.c, tiffio.h}: New function added:
- TIFFIsBigEndian(). Function returns nonzero if given was file written
- in big-endian order.
-
- <li> libtiff/tif_print.c: added (untested) support for printing
- SSHORT, SLONG and SRATIONAL fields.
-
- <li> libtiff/tif_fax3.c: Avoid reading CCITT compression options
- if compression type mismatches. See
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=565">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=565</a>.
-
- <li> libtiff/tif_strip.c: Never return 0 from the TIFFNumberOfStrips().
-
- <li> libtiff/tif_dirread.c: Workaround for broken TIFF writers which
- store single SampleFormat value for multisampled images. See
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=562">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=562</a>.
-
- <li> libtiff/tif_write.c: Allow in-place updating of the compressed
- images (don't work properly with all codecs). For details see GDAL bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=534">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=534</a>.
-
- <li> libtiff/tif_jpeg.c: Workaround for wrong sampling factors used
- in the Intergarph JPEG compressed TIFF images as per bug:
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=532">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=532</a>.
-
- <li> libtiff/tif_open.c: Use dummy mmap/munmap functions in
- TIFFClientOpen() when the appropriate client functions was not
- supplied by user.
-
- <li> libtiff/tif_dirread.c: Fixed problem with handling TIFF_UNDEFINED
- tag type in TIFFFetchNormalTag() as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=508"
- http://bugzilla.remotesensing.org/show_bug.cgi?id=508</a>.
-
- <li> libtiff/tif_codec.c: Fixed typo in TIFFInitPackBits name as per:
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=494">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=494</a>.
-
- <li> libtiff/tif_fax3.c: Fixed problem, introdiced in 3.6.1 release,
- with the CCITT encoding modes as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=483">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=483</a>.
- We need more work on fax codec to support update mode.
-
- <li> libtiff/tiff.h: Fixed tag definitions for TIFFTAG_YCLIPPATHUNITS
- and TIFFTAG_INDEXED as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=475">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=475</a>.
-
- <li> libtiff/{tif_win32.c, tif_unix.c}: Check whether the pointer is
- NULL before proceeding further as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=474">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=474</a>.
- Check results, returned by the TIFFFdOpen() before returning and close
- file if TIFFFdOpen() failed as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=468">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=468</a>.
-
- <li> libtiff/{libtiff.def, tif_close.c, tiffio.h, tif_open.c}:
- Separate TIFFCleanup() from the TIFFClose() in order to fix the bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=468">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=468</a>.
-
- <li> libtiff/tif_dirwrite.c: Fixed handling of writable ASCII tags
- that are field_passcount=TRUE properly. Arguably anonymous custom
- tags should be declared as passcount=FALSE, but I don't want to change
- that without a careful review.
-
- <li> libtiff/tif_write.c: Fixed reporting size of the buffer in case
- of stripped image in TIFFWriteBufferSetup(). As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=460">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=460</a>.
-
- <li> libtiff/tif_dir.c: Incomplete cleanup in TIFFFreeDirectory(),
- patch from Gerben Koopmans.
-
- <li> libtiff/tif_dirread.c: Check field_passcount value before setting
- the value of undefined type, patch from Gerben Koopmans.
-
- <li> libtiff/{tiff.h, tif_fax3.c}:Fixes for AMD 64 platform as
- suggested by Jeremy C. Reed.
-
- <li> libtiff/tif_win32.c: Fixed problem with _TIFFrealloc() when
- the NULL pointer passed. Patch supplied by Larry Grill.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!-------------------------------------------------------------------------->
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
- <li> tiffset: tiffset now can set any libtiff supported tags. Tags
- can be supplied by the mnemonic name or number.
-
- <li> ycbcr.c: fixed main() declaration as per:
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=513">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=513</a>.
-
- <li> <a href=./man/tiffsplit.1.html>tiffsplit</a>: Don't forget
- to copy Photometric Interpretation tag.
-
- <li> <a href=./man/tiffsplit.1.html>tiffsplit</a>: Fixed problem with
- unproperly written multibyte files. Now output files will be written
- using the same byte order flag as in the input image. See
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=574"
- http://bugzilla.remotesensing.org/show_bug.cgi?id=574</a>.
-
- <li> <a href=./man/tiffsplit.1.html>tiffsplit</a>: Copy JPEGTables
- tag contents for JPEG compressed images. Reported by Artem Mirolubov.
-
- <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Close output file
- on normal exit.
-
- <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Don't emit warnings
- when Orientation tag does not present in the input image.
-
- <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Properly set
- Photometric Interpretation in case of JPEG compression of grayscale
- images.
-
- <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Fixed problem with wrong
- interpretation of the InkNames tag as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=466">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=466</a>.
- Memory leak fixed.
-
- <li> <a href=./man/tiffcp.1.html>tiffcp</a>: Fixed problem with
- wrong Photometric setting for non-RGB images.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
-
-<UL>
-
- <li> Outdated stuff removed.
-
- <li> Almost all programs are sinchronized with the current libtiff
- and should compile without problems.
-
-</UL>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION
-KIT:</B></A>
-<UL>
-
-<li> No changes.
-
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-Last updated $Date: 2006/03/18 17:12:47 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.7.0beta.html b/src/3rdparty/libtiff/html/v3.7.0beta.html
deleted file mode 100644
index 7d7c868b08..0000000000
--- a/src/3rdparty/libtiff/html/v3.7.0beta.html
+++ /dev/null
@@ -1,162 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
- Changes in TIFF v3.7.0beta
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.7.0beta<BR>
-<B>Previous Version</B>: <A HREF=v3.7.0alpha.html>v3.7.0alpha</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
-ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
-http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#hightlights">Major Changes</A>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in the contrib area</A>
-<LI><A HREF="#lzwkit">Changes in the LZW compression kit</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
-
-<ul>
- <li> LZW compression enabled by default. You don't need the separate
- compression kit anymore.
-
- <li> bmp2tiff: Added new utility to convert Windows BMP files
- into TIFFs.
-
- <li> The first attempt to implement a test suite.
-</ul>
-
-
-<P><HR WIDTH=65% ALIGN=left>
-<!--------------------------------------------------------------------------->
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
- <li> Many portability fixes in the new autotooled build suite.
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
- <li> libtiff/{tif_luv.c, tif_next.c, tif_thunder.c}: Several buffer
- overruns fixed, as noted by Chris Evans.
-
- <li> BSD data types (u_char, u_short, u_int, u_long) is no longer
- used internally in the libtiff. Should result in simpler configuration
- and better portability.
-
- <li> libtiff/tiff.h: Fix column tagging. Reference current Adobe XMP
- specification. Reference libtiff bug tracking system to submit
- private tag additions.
-
- <li> libtiff/tif_dirread.c: Don't reject to read tags of the
- SamplesPerPixel size when the tag count is greater than number of
- samples as per bug
- <A HREF="http://bugzilla.remotesensing.org/show_bug.cgi?id=576">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=576</A>.
-
- <li> libtiff/{tiffio.h, tif_open.c}: Applied patches from
- Joris Van Damme to avoid requirement for tiffiop.h inclusion in
- some applications. Look for details here:
- <A HREF="http://www.asmail.be/msg0054799560.html">
- http://www.asmail.be/msg0054799560.html</A>.
-
- <li> libtiff/{tiffiop.h, tif_dirinfo.c}: Fixed problem with the static
- variable as per bug
- <A HREF="http://bugzilla.remotesensing.org/show_bug.cgi?id=593">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=593</A>.
-
- <li> libtiff/tif_lzw.c: LZW compression code is merged back from the
- separate package. All libtiff tools are updated to not advertise an
- abcence of LZW support.
-
- <li> libtiff/tif_dir.c: Call TIFFError() instead of producing warnings
- when setting custom tags by value. Reported by Eric Fieleke.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!-------------------------------------------------------------------------->
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
- <li> tiff2ps: Avoid zero division in setupPageState() function;
- properly initialize array in PSDataBW().
-
- <li> tiff2pdf: Multiple bugfixes.
-
- <li> ras2tiff: Fixed issue with missed big-endian checks as per bug
- </A HREF="http://bugzilla.remotesensing.org/show_bug.cgi?id=586">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=586</A>.
-
- <li> bmp2tiff: Added new utility to convert Windows BMP files
- into TIFFs.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
-
-<UL>
-
- <li> No changes.
-
-</UL>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION
-KIT:</B></A>
-<UL>
-
- <li> This one is not longer needed.
-
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-Last updated $Date: 2006/03/18 17:12:47 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.7.0beta2.html b/src/3rdparty/libtiff/html/v3.7.0beta2.html
deleted file mode 100644
index 67dd8dad3f..0000000000
--- a/src/3rdparty/libtiff/html/v3.7.0beta2.html
+++ /dev/null
@@ -1,131 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
- Changes in TIFF v3.7.0beta2
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.7.0beta2<BR>
-<B>Previous Version</B>: <A HREF=v3.7.0beta.html>v3.7.0beta</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
-ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
-http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#hightlights">Major Changes</A>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in the contrib area</A>
-<LI><A HREF="#lzwkit">Changes in the LZW compression kit</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
-
-<UL>
-
- <li> The code has been reviewed by Dmitry Levin: added checks
- for values, returned by the space allocation functions, fixed
- problems with the possible integer overflows.
-
-</UL>
-
-
-<P><HR WIDTH=65% ALIGN=left>
-<!--------------------------------------------------------------------------->
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
- <li> Several fixes in the test suite.
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-
- <li> Preliminary support for BigTIFF files: now libtiff can
- recognize and reject to open such images. ;-)
-
- <li> libtiff/tif_dirinfo.c: changed type of XMLPacket (tag 700) to
- TIFFTAG_BYTE instead of TIFFTAG_UNDEFINED to comply with the info
- in the Adobe XMP Specification.
-
- <li> Added many checks for integer overflow and for successful space
- allocations in the different parts of library. Code review
- completed by Dmitry V. Levin.
-
- <li> libtiff/{tiffio.h, tif_compress.c}: Added
- TIFFGetConfiguredCODECs()function to get the list of configured codecs.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!-------------------------------------------------------------------------->
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
- <li> tiff2bw: Write ImageWidth/Height tags to output file, as
- noted by Gennady Khokhorin.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
-
-<UL>
-
- <li> No changes.
-
-</UL>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="lzwkit"><B><FONT SIZE=+3>C</FONT>HANGES IN THE LZW COMPRESSION
-KIT:</B></A>
-<UL>
-
- <li> This one is not longer needed.
-
-</UL>
-
-<A HREF="index.html"><IMG SRC="images/back.gif"></A> TIFF home page.<BR>
-
-<HR>
-
-Last updated $Date: 2006/03/18 17:12:47 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.7.1.html b/src/3rdparty/libtiff/html/v3.7.1.html
deleted file mode 100644
index b888792f21..0000000000
--- a/src/3rdparty/libtiff/html/v3.7.1.html
+++ /dev/null
@@ -1,233 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
- Changes in TIFF v3.7.1
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.7.1<BR>
-<B>Previous Version</B>: <A HREF=v3.7.0.html>v3.7.0</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
-ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
-http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#hightlights">Major Changes</A>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in the contrib area</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
-
-<UL>
-
- <li> This is mostly bugfix release. Most important fix is the one
- related to wrong custom tag read/write code.
-
-</UL>
-
-
-<P><HR WIDTH=65% ALIGN=left>
-<!--------------------------------------------------------------------------->
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-
- <li> autogen.sh: aclocal and autoheader should be executed after
- libtoolize. Also add '-I .' to aclocal invocation to check
- current directory for macros.
-
- <li> nmake.opt: Link with the user32.lib in windowed mode. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=697">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=697</a>
-
- <li> nmake.opt, makefile.vc: make it easier to rename the libtiff DLL.
-
- <li> configure, configure.ac: Added --enable-rpath option to embed
- linker paths into library binary.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-
- <li> tiff.h: Revert back libtiff data type definitions as per
- bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=687">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=687</a>
-
- <li> tif_dirread.c: Do not forget about TIFF_VARIABLE2 when
- checking for tag count in TIFFReadDirectory() function. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=713">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=713</a>
-
- <li> tif_getimage.c: Support for multiple-alpha-channelled
- RGB-images as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=718">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=718</a>
-
- <li> tif_getimage.c: #define A1 bracketing for clean build on
- SunPro compiler.
-
- <li> tif_dirwrite.c: Always write TIFFTAG_SUBIFD using LONG type
- as per bugs
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=703">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=703</a> and
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=704">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=704</a>.
-
- <li> tif_win32.c: Use char* strings instead of TCHAR in windowed
- mode as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=697">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=697</a>
-
- <li> tif_dir.c, tif_dirread.c: Remove TIFFReassignTagToIgnore()
- call from the TIFFReadDirectory() function. TIFFReassignTagToIgnore
- must be removed in the future, as it was never used properly. As per
- bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=692">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=692</a>
-
- <li> tif_jpeg.c: Added a work-around in order to allow
- compilation with the heavily modified version of libjpeg delivered
- with Cygwin.
-
- <li> tif_dir.c: Properly handle tags, which have the uint32
- counts. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=693">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=693</a>
-
- <li> tif_unix.c: Make UNIX module compilable (and usable)
- on Windows.
-
- <li> tiff.h: Added Adobe DNG tags.
-
- <li> tif_aux.c: Set the appropriate ReferenceBlackWhite array for
- YCbCr image which lacks that tag (noted by Hans Petter Selasky).
-
- <li> tif_color.c: Division by zero fixed (Hans Petter Selasky).
-
- <li> tif_stream.cxx, tiffio.h: Added C++ stream interface
- contributed by Edward Lam (see
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=654">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=654</a>
- for details). Those who want to use C++ streams should
- #include <tiffio.hxx>.
-
- <li> tif_open.c: Removed close() in TIFFClientOpen() if file
- is bad. This is the callers responsibility.
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=651">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=651</a>
-
- <li> tiffio.h, tif_win32.c, libtiff.def}: Added TIFFOpenW()
- function to work with the double byte strings (used to represent
- filenames in some locales). As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=625">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=625</a>
-
- <li> tif_dirread.c: Fixed problem when fetching BitsPerSample and
- Compression tags of type LONG from broken TIFFS as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=662">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=662</a>
-
- <li> tif_dirinfo.c: Fixed definition for TIFFTAG_RICHTIFFIPTC,
- the writecount should have uint32 type. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=662">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=662</a>
-
- <li> tif_write.c: Fixed wrong if() statement in
- TIFFAppendToStrip() function as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=660">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=660</a>
-
- <li> tif_dirinfo.c: Change definition for TIFFTAG_EXTRASAMPLES
- field. The caller should supply a count when setting this field. As
- per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=648">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=648</a>.
-
- <li> tif_jpeg.c, tif_ojpeg.c: TIFFTAG_JPEGTABLES should have
- uint32 count. Use this type everywhere.
-
- <li> tif_next.c: avoid use of u_long and u_char types.
-
- <li> tif_fax3.c: Fixed case with the wrong decode routines
- choosing when the incorrect Group4Options tag set. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=323">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=323</a>
-
- <li> tif_dirwrite.c: Fixed problem with passing count variable of
- wrong type when writing the TIFF_BYTE/TIFF_SBYTE tags in
- TIFFWriteNormalTag().
-
- <li> tif_compress.c: Zero division problem fixed (Vladimir Nadvornik,
- Dmitry V. Levin).
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!-------------------------------------------------------------------------->
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
-
- <li> fax2ps.c: Be able to extract the first page (#0). As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=690">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=690</a>
-
- <li> tiff2ps.c: Fixed wrong variable data type when read Position
- tags (Tristan Hill).
-
- <li> tiff2ps.c: Fixed wrong variable data type when read Resolution
- tags (Peter Fales).
-
- <li> tiffset.c: Check the malloc return value (Dmitry V. Levin).
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
-
-<UL>
-
- <li> No changes.
-
-</UL>
-
-Last updated $Date: 2004/12/20 19:31:44 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.7.2.html b/src/3rdparty/libtiff/html/v3.7.2.html
deleted file mode 100644
index 6cb6f7cd3a..0000000000
--- a/src/3rdparty/libtiff/html/v3.7.2.html
+++ /dev/null
@@ -1,222 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
- Changes in TIFF v3.7.2
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.7.2<BR>
-<B>Previous Version</B>: <A HREF=v3.7.1.html>v3.7.1</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
-ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
-http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#hightlights">Major Changes</A>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in the contrib area</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
-
-<UL>
-
- <li> Maintainance release. Many bugfixes in the build environment
- and compatibility improvements.
-
-</UL>
-
-
-<P><HR WIDTH=65% ALIGN=left>
-<!--------------------------------------------------------------------------->
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
- <li> configure.ac: Use -rpath option instead of -R as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=732">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=732</a>
-
- <li> tif_stream.cxx: Fixes for C++ stream interface from
- Michael Rinne and Edward Lam.
-
- <li> configure.ac: Make the documentation directory location
- configurable via the --with-docdir option (as suggested by
- Jeremy C. Reed).
-
- <li> Place the C++ stream API in the separate library called
- libtiffxx to avoid unneeded dependencies. Probably there will be
- more C++ API in the future. As per bugs
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=733">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=733</a>
- and <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=730">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=730</a>
-
- <li> configure, configure.ac: Replace --disable-c++ with the
- --disable-cxx option as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=730">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=730</a>.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-
- <li> Applied patch from Lee Howard to support a new tag TIFFTAG_FAXDCS
- (34911) used in HylaFax software. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=771">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=771</a>
-
- <li> tif_open.c: Remove unnesessary TIFFSeekFile() call as per
- bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=756">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=756</a>
-
- <li> tiff.h: Changed the int8 definition to be always signed char
- as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=727">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=727</a>
-
- <li> tiffio.h: Move TIFFOpenW() function into the extern "C"{}
- block as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=763">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=763</a>
-
- <li> tif_dirread.c: Estimate strip size in case of wrong or
- suspicious values in the tags. As per bugs
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=705">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=705</a>
- and <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=320">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=320</a>
-
- <li> tif_color.c: Use double as the second argument of pow()
- function in TIFFCIELabToRGBInit(). As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=741">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=741</a>
-
- <li> tif_pixarlog.c: Avoid warnings when converting float to
- integer as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=740">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=740</a>
-
- <li> tif_getimage.c: Always fill the error message buffer in
- TIFFRGBAImageBegin() as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=739">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=739</a>
-
- <li> tif_jpeg.c: Added ability to read/write the fax specific
- TIFFTAG_FAXRECVPARAMS, TIFFTAG_FAXSUBADDRESS and TIFFTAG_FAXRECVTIME
- tags as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=736">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=736</a>
-
- <li> tif_win32.c: Fixed message formatting in functions
- Win32WarningHandler() and Win32ErrorHandler() as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=735">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=735</a>
-
- <li> tiffio.h: Move the color conversion routines in the 'extern
- "C"' section as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=727">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=727</a>
-
- <li> tiff.h: Restore back the workaround for AIX Visual Age C
- compiler to avoid double definition of BSD types as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=39">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=39</a>
-
- <li> tif_getimage.c: More fixes for multiple-alpha-channelled
- RGB-images as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=713">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=713</a>
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!-------------------------------------------------------------------------->
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
-
- <li> tiffcmp.c: Added ability to compare the 32-bit integer and
- floating point data; complain on unsupported bit depths.
-
- <li> tiffcmp.c: Use properly sized buffer in short arrays comparison
- as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=785">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=785</a>
-
- <li> fax2ps.c: Replace insecure mktemp() function with the
- tmpfile() as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=786">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=786</a>
-
- <li> tiffgt.c: Fix problem on big-endian CPUs so that images
- display more correctly. Images display brighter than they should
- on a Sun workstation.
-
- <li> tiff2ps.c: Fixed problem with page sizes as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=742">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=742</a>
-
- <li> tiff2ps.c: Interpret the -w and -h options independently. As
- per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=689">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=689</a>
-
- <li> tiffdump.c: Fixed problem when read broken TIFFs with the
- wrong tag counts (Dmitry V. Levin, Martin Pitt).
-
- <li> tiffset.c: Convert character option to integer value as per
- bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=725">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=725</a>.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
-
-<UL>
-
- <li> No changes.
-
-</UL>
-
-Last updated $Date: 2005/03/15 15:17:44 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.7.3.html b/src/3rdparty/libtiff/html/v3.7.3.html
deleted file mode 100644
index d69845176c..0000000000
--- a/src/3rdparty/libtiff/html/v3.7.3.html
+++ /dev/null
@@ -1,230 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
- Changes in TIFF v3.7.3
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.7.3<BR>
-<B>Previous Version</B>: <A HREF=v3.7.2.html>v3.7.2</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
-ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
-http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#hightlights">Major Changes</A>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in the contrib area</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
-
-<UL>
- <li> Replace runtime endianess check with the compile time one.
-
- <li> Added support for the new predictor type (floating point
- predictor), defined at the TIFF Technical Note 3.
-
- <li> Added Support for custom tags, passed by value.
- Added support for all DNG tags.
-</UL>
-
-
-<P><HR WIDTH=65% ALIGN=left>
-<!--------------------------------------------------------------------------->
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
- <li> Do not use empty -R option when linking with --enable-rpath.
-
- <li> Added workaround for OpenBSD/MirOS soname problem as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=838">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=838</a>
-
- <li> Fixed parallel compilation of the libtiff and
- libtiffxx libraries as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=826">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=826</a>
-
- <li> configure.ac, libtiff/Makefile.am: Use libtool machinery to pass
- rpath option.
-
- <li> make.opt: Build with Win32 CRT library by default.
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
- <li> tiffiop.h, tif_open.c: Added open option 'h' to avoid reading
- the first IFD when needed. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=875">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=875</a>
-
- <li> tiff.h: Use correct int size on Sparc 64bit/Sun compiler
- platform. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=855">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=855</a>
-
- <li> tif_dirinfo.c: Added support for ClipPath, XClipPathUnits
- and YClipPathUnits tags.
-
- <li> tif_dirinfo.c, tif_dir.h, tif_dir.c, tif_print.c: Make
- DocumentName, Artist, HostComputer, ImageDescription, Make, Model,
- Copyright, DateTime, PageName, TextureFormat, TextureWrapModes and
- TargetPrinter tags custom.
-
- <li> tif_jpeg.c: Cleanup the codec state depending on TIFF_CODERSETUP
- flag (to fix memory leaks).
-
- <li> tif_dirwrite.c: Use tdir_count when calling
- TIFFCvtNativeToIEEEDouble() in the TIFFWriteDoubleArray() function as
- per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=845">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=845</a>
-
- <li> tif_dirinfo.c, tif_print.c: TIFFFetchByteArray() returns
- uint16 array when fetching the BYTE and SBYTE fields, so we should
- consider result as pointer to uint16 array and not as array of chars.
- As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=831">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=831</a>
-
- <li> tif_dir.c: More efficient custom tags retrieval as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=830">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=830</a>
-
- <li> tif_win32.c: Use FILE_SHARE_READ | FILE_SHARE_WRITE share
- mode in CreateFile() call as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=829">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=829</a>
-
- <li> tif_jpeg.c: Substantial fix for addtiffo problems with
- JPEG encoded TIFF files. Pre-allocate lots of space for jpegtables
- in directory.
-
- <li> tif_dirread.c: Changed the code that computes
- stripbytecount[0] if it appears bogus to ignore if stripoffset[0] is
- zero. This is a common case with GDAL indicating a "null" tile/strip.
-
- <li> tif_jpeg.c: added LIB_JPEG_MK1 support in JPEGDecodeRaw().
-
- <li> tif_dirread.c: Ensure that broken files with too many
- values in PerSampleShorts, TIFFFetchPerSampleLongs and
- TIFFFetchPerSampleAnys work ok instead of crashing.
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=843">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=843</a>
-
- <li> tif_predict.h, tif_predict.c: Added ability to decode and encode
- floating point predictor, as per TIFF Technical Note 3.
- See http://chriscox.org/TIFF_TN3_Draft2.pdf for details.
-
- <li> tiffio.h, tiffiop.h, tif_dir.c, tif_read.c, tif_swab.c:
- Added _TIFFSwab24BitData() and TIFFSwabArrayOfLong() functions used to
- swap 24-bit floating point values.
-
- <li> tiff.h: Added predictor constants.
-
- <li> tiffiop.h, tif_dir.c: Use uint32 type for appropriate values
- in _TIFFVSetField() function. Inspired by the bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=816">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=816</a>
-
- <li> tif_open.c: Do not read header in case the output file should
- be truncated (Ron).
-
- <li> tif_dirinfo.c, tif_config.h.vc: Use lfind() instead of bsearch()
- in _TIFFFindFieldInfoByName() function (Ron).
-
- <li> tif_dir.c, tif_print.c: Properly handle all data types in custom
- tags.
-
- <li> dirinfo.c: Added DNG tags.
-
- <li> tiff.h: Added missed DNG tag (LensInfo); added DNG 1.1.0.0 tags.
-
- <li> tif_dir.c, tif_print.c: Added Support for custom tags, passed
- by value.
-
- <li> tiff.h, tif_dirinfo.c, tiffiop.h: Added EXIF related tags.
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!-------------------------------------------------------------------------->
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
- <li> tiff2pdf.c: Print two characters per loop in the
- t2p_write_pdf_trailer(). As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=594">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=594</a>
-
- <li> tiffgt.c: Use MacOS X OpenGL framework when appropriate. As
- per bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=844">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=844</a>
-
- <li> ppm2tiff.c: Fixed format string when read PPM file header with
- the fscanf() function. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=861">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=861</a>
-
- <li> tiffsplit.c: Check for JPEGTables tag presence before copying.
-
- <li> tiff2pdfr.c: Calculate the tile width properly; added new
- option '-b' to use interpolation in output PDF files (Bruno Ledoux).
-
- <li> tiffdither.c: Copy the PhotometricInterpretation tag from the
- input file.
-
- <li> tif2pdf.c: Fixed problem with alpha channel handling as per
- bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=794">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=794</a>.
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
-
-<UL>
-
- <li> addtiffo/{tif_overview.c, tif_ovrcache.c, tif_ovrcache.h}:
- Make overviews working for contiguous images.
-
-</UL>
-
-Last updated $Date: 2006/01/04 22:04:46 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.7.4.html b/src/3rdparty/libtiff/html/v3.7.4.html
deleted file mode 100644
index 943732019e..0000000000
--- a/src/3rdparty/libtiff/html/v3.7.4.html
+++ /dev/null
@@ -1,133 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
- Changes in TIFF v3.7.4
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.7.4<BR>
-<B>Previous Version</B>: <A HREF=v3.7.3.html>v3.7.3</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
-ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
-http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#hightlights">Major Changes</A>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in the contrib area</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
-
-<UL>
- <li> Fixed important bug in custom tags handling code..
-</UL>
-
-
-<P><HR WIDTH=65% ALIGN=left>
-<!--------------------------------------------------------------------------->
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
- <li> Applied patch from Patrick Welche (all scripts moved in the
- 'config' and 'm4' directories).
-
- <li> SConstruct, libtiff/SConstruct: Added the first very preliminary
- support for SCons software building tool (http://www.scons.org/).
- This is experimental infrastructure and it will exist along with the
- autotools stuff.
-
- <li> port/lfind.c: Added lfind() replacement module.
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
- <li> tif_dir.c: When prefreeing tv->value in TIFFSetFieldV
- also set it to NULL to avoid double free when re-setting custom
- string fields as per:
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=922">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=922</a>
-
- <li> tif_dir.c: Fixed up support for swapping "double complex"
- values (128 bits as 2 64 bits doubles). GDAL gcore tests now
- pass on bigendian (macosx) system.
-
- <li> libtiff/{tif_dirread.c, tif_dirinfo.c}: Do not upcast BYTEs to
- SHORTs in the TIFFFetchByteArray(). Remove TIFFFetchExtraSamples()
- function, use TIFFFetchNormalTag() instead as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=831">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=831</a>
-
- Remove TIFFFetchExtraSamples() function, use TIFFFetchNormalTag()
- instead.
-
- <li> tif_print.c: Fixed printing of the BYTE and SBYTE arrays.
-
- <li> tif_write.c: Do not check the PlanarConfiguration field in
- the TIFFWriteCheck() function in case of single band images (as per
- TIFF spec).
-
- <li> libtiff/{tif_dir.c, tif_dir.h, tif_dirinfo.c, tif_print.c}:
- Make FieldOfViewCotangent, MatrixWorldToScreen, MatrixWorldToCamera,
- ImageFullWidth, ImageFullLength and PrimaryChromaticities tags custom.
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!-------------------------------------------------------------------------->
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
- <li> tiffcp.c: Fixed WhitePoint tag copying.
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
-
-<UL>
- <li> tiffdump.c: Added support for TIFF_IFD datatype.
-
- <li> addtiffo/{tif_overview.c, tif_ovrcache.c, tif_ovrcache.h}:
- Make overviews working for contiguous images.
-
-</UL>
-
-Last updated $Date: 2005/11/03 14:18:43 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.8.0.html b/src/3rdparty/libtiff/html/v3.8.0.html
deleted file mode 100644
index 914dcb0c55..0000000000
--- a/src/3rdparty/libtiff/html/v3.8.0.html
+++ /dev/null
@@ -1,199 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
- Changes in TIFF v3.8.0
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.8.0<BR>
-<B>Previous Version</B>: <A HREF=v3.7.4.html>v3.7.4</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
-ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
-http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#hightlights">Major Changes</A>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in the contrib area</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
-
-<UL>
- <li> Read-only support for custom directories (e.g. EXIF directory).
-
- <li> Preliminary support for MS MDI format.
-</UL>
-
-
-<P><HR WIDTH=65% ALIGN=left>
-<!--------------------------------------------------------------------------->
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
- <li> Make the default strip size configurable via the
- --with-default-strip-size and STRIP_SIZE_DEFAULT options.
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
- <li> tiffio.h: Added VC_EXTRALEAN definition before including
- windows.h, to reduce the compile time.
-
- <li> tif_jpeg.c: Improve compilation under MinGW.
-
- <li> {tif_aux.c, tif_dir.c, tif_dir.h, tif_dirwrite.c,
- tif_print.c, tif_getimage.c}: Make InkSet, NumberOfInks, DotRange and
- StoNits tags custom.
-
- <li> {tif_aux.c, tif_dir.c, tif_dir.h, tif_print.c}: Make
- WhitePoint tag custom.
-
- <li> tiffio.h: fixed typo that potentially resulted in
- redefininition of USE_WIN32_FILEIO
-
- <li> {tif_dir.c, tif_dir.h, tif_print.c}: Make RichTIFFIPTC,
- Photoshop and ICCProfile tags custom.
-
- <li> libtiff/*, contrib/*: Added 'dual-mode' error handling, enabling
- newer code to get context indicator in error handler and still
- remain compatible with older code: Done TIFFError calls everywhere
- except in tools.
-
- <li> tiffinfo.c: Print EXIF directory contents if exist.
-
- <li> {tif_dirinfo.c, tif_dirread.c, tif_dir.h, tif_dir.c}:
- Custom directory read-only support.
-
- <li> {tif_aux.c, tif_dirinfo.c, tif_dirread.c, tif_dir.h,
- tif_dir.c, tif_print.c}: Make YCbCrCoefficients and ReferenceBlackWhite
- tags custom.
-
- <li> tif_dirread.c: One more workaround for broken StripByteCounts
- tag. Handle the case when StripByteCounts array filled with
- completely wrong values.
-
- <li> tif_dirinfo.c: Release file descriptor in case of failure
- in the TIFFOpenW() function as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1003">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1003</a>
-
- <li> tif_dirinfo.c: Correctly yse bsearch() and lfind()
- functions as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1008">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1008</a>
-
- <li> tif_open.c, tiff.h, tiffdump.c: Incorporate preliminary support
- for MS MDI format.
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1002">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1002</a>
-
- <li> libtiff.def, tiffiop.h, tiffio.h: Made TIFFFreeDirectory
- public.
-
- <li> /tif_dirinfo.c: Make XResolution, YResolution and
- ResolutionUnit tags modifiable during write process. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=977">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=977</a>
-
- <li> if_dirread.c: Don't try and split single strips into "0" strips
- in ChopUpSingleUncompressedStrip. This happens in some degenerate
- cases (like 1x1 files with stripbytecounts==0 (gtsmall.jp2 embed tiff)
-
- <li> tif_fax3.c: changed 'at scanline ...' style warning/errors
- with incorrect use of tif_row, to 'at line ... of
- strip/tile ...' style.
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!-------------------------------------------------------------------------->
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
- <li> tiffcp.c: Added many error reporting messages; fixed integer
- overflow as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=789">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=789</a>
-
- <li> tiffcp.c: Return non-zero status when reading fails.
-
- <li> fax2tiff.c: Properly calculate sizes of temporary arrays
- as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=943">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=943</a>
-
- <li> fax2tiff.c: Added option '-r' to set RowsPerStrip parameter
- as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=944">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=944</a>
-
- <li> tiffdump.c: Fixed typeshift and typemask arrays initialization
- problem as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=946">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=946</a>
-
- <li> bmp2tiff.c: Fixed possible integer overflow error as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=965">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=965</a>
-
- <li> tiffsplit.c: Copy fax related fields over splitted parts
- as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=983">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=983</a>
-
- <li> tiffdump.c: Fixed crash when reading malformed tags.
-
- <li> tiff2pdf.c: Added missed 'break' statement as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=932">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=932</a>
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
-
-<UL>
- <li> contrib/addtiffo/*: Major upgrade by Joris to support subsampled
- YCbCr images in jpeg compressed TIFF files.
-
-</UL>
-
-Last updated $Date: 2006/01/04 23:38:38 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.8.1.html b/src/3rdparty/libtiff/html/v3.8.1.html
deleted file mode 100644
index 9fea1407e6..0000000000
--- a/src/3rdparty/libtiff/html/v3.8.1.html
+++ /dev/null
@@ -1,217 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
- Changes in TIFF v3.8.1
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.8.1<BR>
-<B>Previous Version</B>: <A HREF=v3.8.0.html>v3.8.0</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
-ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
-http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#hightlights">Major Changes</A>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in the contrib area</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
-
-<UL>
- <li> Bug-fix release.
-</UL>
-
-
-<P><HR WIDTH=65% ALIGN=left>
-<!--------------------------------------------------------------------------->
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
- <li> libtool related stuff updated from the 2.1a branch.
-
- <li> Fix with_default_strip_size comparison as reported by
- Norihiko Murase.
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
-
- <li> tif_dirread.c: Fixed error reporting in TIFFFetchAnyArray()
- function as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1102">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1102</a>
-
- <li> tif_jpeg.c, tif_pixarlog.c, tif_fax3.c, tif_zip.c:
- Properly restore setfield/getfield methods in cleanup functions. As
- per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1102">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1102</a>
-
- <li> tif_lzw.c, tif_pixarlog.c, tif_zip.c: Use
- TIFFPredictorCleanup() in codec cleanup methods. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1102">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1102</a>
-
- <li> tif_predict.c, tif_predict.h: Added new function
- TIFFPredictorCleanup() to restore parent decode/encode/field methods.
-
- <li> tif_dirread.c: Fixed integer overflow condition in
- TIFFFetchData() function. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1102">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1102</a>
-
- <li> tif_ojpeg.c: Set the ReferenceBlackWhite with the
- TIFFSetField() method, not directly. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1043">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1043</a>
-
- <li> tif_write.c: Small code rearrangement in TIFFWriteScanline()
- to avoid crash as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1081">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1081</a>
-
- <li> tif_dirwrite.c: Properly write TIFFTAG_DOTRANGE tag as per
- bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1088">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1088</a>
-
- <li> tif_print.c: Properly read TIFFTAG_PAGENUMBER,
- TIFFTAG_HALFTONEHINTS, TIFFTAG_YCBCRSUBSAMPLING and TIFFTAG_DOTRANGE
- tags as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1088">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1088</a>
-
- <li> tif_tile.c: Fix error reporting in TIFFCheckTile() as per
- bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1063">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1063</a>
-
- <li> tif_color.c: Avoid overflow in case of wrong input as per
- bug <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1065">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1065</a>
-
- <li> tif_dirinfo.c: Use TIFF_NOTYPE instead of 0 when
- appropriate. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1033">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1033</a>
-
- <li> tif_aux.c: Fixed type of temporary variable in
- _TIFFCheckMalloc() as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=103">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=103</a>
-
- <li> tif_aux.c: Return static array when fetching default
- YCbCrCoefficients (another problem, reported a the
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1029">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1029</a>
- entry).
-
- <li> tif_dir.c: Special handling for PageNumber, HalftoneHints,
- YCbCrSubsampling and DotRange tags as per bugs
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1029">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1029</a>
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1034">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1034</a>
-
- <li> tif_dirread.c: Use _TIFFGetExifFieldInfo() instead of
- _TIFFGetFieldInfo() in TIFFReadEXIFDirectory() call as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1026">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1026</a>
-
- <li> tif_dirinfo.c: Change definitions for TIFFTAG_ICCPROFILE,
- TIFFTAG_PHOTOSHOP, TIFFTAG_RICHTIFFIPTC, TIFFTAG_XMLPACKET:
- readcount should be uint32 value.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!-------------------------------------------------------------------------->
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
- <li> ppm2tiff.c: Added support for PBM files as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1044">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1044</a>
-
- <li> tiff2pdf.c: Functions t2p_sample_rgbaa_to_rgb() and
- t2p_sample_rgba_to_rgb() was used in place of each other, that was
- resulted in problems with RGBA images with associated alpha.
- As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1097">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1097</a>
-
- <li> tiff2ps.c: Properly scale all the pages when converting
- multipage TIFF with /width/height/center options set. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1080">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1080</a>
-
- <li> tiff2pdf.c: Do not create output file until all option checks
- will be done. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1072">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1072</a>
-
- <li> bmp2tiff.c: Added ability to create multipage TIFFs from the
- list of input files as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1077">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1077</a>
-
- <li> tiffgt.c: Avoid crashing in case of image unsupported by
- TIFFRGBAImage interface.
-
- <li> tiff2pdf.c: Fixed support for non-YCbCr encoded JPEG
- compressed TIFF files, per submission from Dan Cobra.
-
- <li> bmp2tiff, pal2rgb, ppm2tiff, ras2tiff, raw2tiff, sgi2tiff,
- tiff2bw, tiffcp: Fixed jpeg option processing so -c jpeg:r:50 works
- properly as per bug:
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1025">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1025</a>
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
-
-<UL>
-</UL>
-
-Last updated $Date: 2006/03/13 14:52:12 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.8.2.html b/src/3rdparty/libtiff/html/v3.8.2.html
deleted file mode 100644
index e648127586..0000000000
--- a/src/3rdparty/libtiff/html/v3.8.2.html
+++ /dev/null
@@ -1,137 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
- Changes in TIFF v3.8.2
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.8.2<BR>
-<B>Previous Version</B>: <A HREF=v3.8.1.html>v3.8.1</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
-ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
-http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#hightlights">Major Changes</A>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in the contrib area</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
-
-<UL>
- <li> Bug-fix release.
-</UL>
-
-
-<P><HR WIDTH=65% ALIGN=left>
-<!--------------------------------------------------------------------------->
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-
- <li> tools/Makefile.am: Use runtime paths linker flags when rpath
- option enabled.
-
- <li> Makefiles improvements as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1128">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1128</a>
-
- <li> Fixed win32 I/O functions usage as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1127">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1127</a>
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
- <li> tif_strip.c: Take subsampling in account when calculating
- TIFFScanlineSize().
-
- <li> tif_jpeg.c, tif_fax3.c, tif_zip.c, tif_pixarlog.c,
- tif_lzw.c, tif_luv.c: Use _TIFFSetDefaultCompressionState() in all
- codec cleanup methods. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1120">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1120</a>
-
- <li> tif_jpeg.c: Do not cleanup codec state in TIFFInitJPEG(). As
- per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1119">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1119</a>
-
- <li> tif_dir.c: Use double type instead of dblparam_t.
-
- <li> tif_dirread.c: Do not check the PlanarConfig tag presence
- in TIFFReadDirectory, because it is always set at the start of
- function and we allow TIFFs without that tag set.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!-------------------------------------------------------------------------->
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
- <li> tiffcp.c: Do not set RowsPerStrip bigger than image length.
-
- <li> fax2tiff.c: Fixed wrong TIFFerror() invocations as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1125">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1125</a>
-
- <li> fax2ps.c: Fixed reading the input stream from stdin as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1124">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1124</a>
-
- <li> raw2tiff.c: Do not set RowsPerStrip larger than ImageLength.
- As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1110">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1110</a>
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
-
-<UL>
-</UL>
-
-Last updated $Date: 2006/03/23 14:54:01 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.9.0beta.html b/src/3rdparty/libtiff/html/v3.9.0beta.html
deleted file mode 100644
index 053b34ab52..0000000000
--- a/src/3rdparty/libtiff/html/v3.9.0beta.html
+++ /dev/null
@@ -1,304 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
- Changes in TIFF v3.9.0beta
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.9.0beta<BR>
-<B>Previous Version</B>: <A HREF=v3.8.2.html>v3.8.2</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
-ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
-http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above).
-If you don't find something listed here, then it was not done in this
-timeframe, or it was not considered important enough to be mentioned.
-The following information is located here:
-<UL>
-<LI><A HREF="#hightlights">Major Changes</A>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in the contrib area</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
-
-<UL>
- <li> New <b>tiffcrop</b> utility contributed by Richard Nolde.
- <b>tiffcrop</b> does the same as <b>tiffcp</b>, but also can crop,
- extract, rotate and mirror images.
-
- <li> tif_jbig.c: Added support for JBIG compression scheme
- (34661 code), contributed by Lee Howard.
-
- <li> Totally new implementation of OJPEG module from
- Joris Van Damme. No need to patch libjpeg anymore. Many OJPEG files
- should be supported now that was not supported previously.
-
-</UL>
-
-
-<P><HR WIDTH=65% ALIGN=left>
-<!--------------------------------------------------------------------------->
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-
- <li> tif_config.wince.h, tiffconf.wince.h, tif_wince.c: WinCE-specific
- compatibility stuff from Mateusz Loskot.
-
- <li> Rename config.h.vc and tif_config.h.vc to config.vc.h and
- tif_config.vc.h for easier identification by folks using an IDE.
-
- <li> configure, configure.ac: OJPEG support enabled by default (i.e.,
- whe the conformant JPEG support enabled).
-
- <li> README.vms, Makefile.am, configure.com, libtiff/{Makefile.am,
- tif_config.h-vms, tif_stream.cxx, tif_vms.c, tiffconf.h-vms}:
- Added support for OpenVMS by Alexey Chupahin.
-
- <li> nmake.opt: use /EHsc for VS2005 compatibility. Also define
- _CRT_SECURE_NO_DEPRECATE to avoid noise on VS2005.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
- <li> tif_dirinfo.c (_TIFFFindFieldInfo): Don't attempt to
- bsearch() on a NULL fieldinfo list.
- (_TIFFFindFieldInfoByName): Don't attempt to lfind() on a NULL
- fieldinfo list.
-
- <li> tif_jpeg.c: Changed JPEGInitializeLibJPEG() so that it
- will convert from decompressor to compressor or compress to decompress
- if required by the force arguments. This works around a problem in
- where the JPEGFixupTestSubsampling() may cause a decompressor to
- be setup on a directory when later a compressor is required with the
- force flag set. Occurs with the addtiffo program for instance.
-
- <li> tif_dirwrite.c: Fixed swapping of byte arrays stored
- in-place in tag offsets as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1363">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1363</a>
-
- <li> tif_getimage.c: workaround for 'Fractional scanline' error
- reading OJPEG images with rowsperstrip that is not a multiple of
- vertical subsampling factor. This bug is mentioned in
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1390">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1390</a> and
- <a href="http://www.asmail.be/msg0054766825.html">
- http://www.asmail.be/msg0054766825.html</a>
-
- <li> tif_dirread.c: Added special function to handle
- SubjectDistance EXIF tag as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1362">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1362</a>
-
- <li> tif_dirread.c, tif_read.c: Type of the byte counters
- changed from tsize_t to uint32 to be able to work with data arrays
- larger than 2GB. Fixes bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=890">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=89</a>
- Idea submitted by Matt Hancher.
-
- <li> tif_dir.c: Workaround for incorrect TIFFs with
- ExtraSamples == 999 produced by Corel Draw. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1490">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1490</a>
-
- <li> tif_write.c: TIFFAppendToStrip() - clear sorted flag if
- we move a strip.
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1359">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1359</a>
-
- <li> tif_fax3.c: Save the state of printdir codec dependent method.
-
- <li> tif_jpeg.c: Save the state of printdir codec dependent method
- as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1273">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1273</a>
-
- <li> tif_win32.c: Fixed problem with offset value manipulation
- as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1322">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1322</a>
-
- <li> tif_fax3.c, tif_next.c, tif_pixarlog.c: Fixed multiple
- vulnerabilities, as per Gentoo bug ():
- <a href="http://bugs.gentoo.org/show_bug.cgi?id=142383">
- http://bugs.gentoo.org/show_bug.cgi?id=142383</a>
-
- <li> tif_lzw.c, tif_zip.c: Fixed problems with mixing
- encoding and decoding on the same read-write TIFF handle. The LZW
- code can now maintain encode and decode state at the same time. The
- ZIP code will switch back and forth as needed.
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=757">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=757</a>
-
- <li> tif_msdos.c: Avoid handle leak for failed opens.
- c/o Thierry Pierron
-
- <li> tif_dirwrite.c: take care not to flush out buffer of strip/tile
- data in _TIFFWriteDirectory if TIFF_BEENWRITING not set. Relates
- to bug report by Peng Gao with black strip at bottom of images.
-
- <li> tif_dirwrite.c: make sure to use uint32 for wordcount in
- TIFFWriteNormanTag if writecount is VARIABLE2 for ASCII fields.
- It already seems to have been done for other field types. Needed
- for "tiffset" on files with geotiff ascii text.
-
- <li> tif_dirinfo.c: Added missed EXIF tag ColorSpace (40961).
-
- <li> tif_dirread.c: Move IFD fetching code in the separate
- function TIFFFetchDirectory() avoiding code duplication in
- TIFFReadDirectory() and TIFFReadCustomDirectory().
-
- <li>tif_readdir.c: Added case in EstimateStripByteCounts() for tiled
- files. Modified TIFFReadDirectory() to not invoke
- EstimateStripByteCounts() for case where entry 0 and 1 are unequal but
- one of them is zero.
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1204">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1204</a>
-
- <li> tif_open.c, tif_dirread.c, tiffiop.h: Move IFD looping
- checking code in the separate function TIFFCheckDirOffset().
-
- <li> tif_aux.c: Added _TIFFCheckRealloc() function.
-
- <li> tif_fax3.c: Fixed problems in fax decoder as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1194">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1194</a>
-
- <li> tif_jbig.c: Added support for JBIG compression scheme
- (34661 code) contributed by Lee Howard. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=896">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=896</a>
-
- <li> tif_getimage.c: Added support for planarconfig separate
- non-subsampled YCbCr (i.e. separate YCbCr with subsampling [1,1]).
-
- <li> tif_getimage.c: Revision of all RGB(A) put routines:
- <ul>
- <li> Conversion of unassociated alpha to associated alpha
- now done with more performant LUT, and calculation more
- correct.
- <li> Conversion of 16bit data to 8bit data now done with
- more performant LUT, and calculation more correct
- <li> Bugfix of handling of 16bit RGB with unassociated alpha
- </ul>
-
- <li> tif_ojpeg.c: totally new implementation
-
- <li> tif_getimage.c: removed TIFFTAG_JPEGCOLORMODE handling
- of OJPEG images in favor of tif_getimage.c native handling of
- YCbCr and desubsampling.
-
- <li> tif_jpeg.c: JPEGVSetField() so that altering the photometric
- interpretation causes the "upsampled" flag to be recomputed. Fixes
- peculiar bug where photometric flag had to be set before jpegcolormode
- flag.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!-------------------------------------------------------------------------->
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
- <li> tiff2ps.c: Added support 16-bit images as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1566">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1566</a>.
- Patch from William Bader.
-
- <li> tiff2pdf.c: Fix for TIFFTAG_JPEGTABLES tag fetching and
- significant upgrade of the whole utility as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1560">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1560</a>.
- Now we don't need tiffiop.h in tiff2pdf anymore and will open output
- PDF file using TIFFClientOpen() machinery as it is implemented
- by Leon Bottou.
-
- <li> tiffcrop.c: New tiffcrop utility contributed
- by Richard Nolde. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1383">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1383</a>
-
- <li> tiff2pdf.c: Do not assume inches when the resolution units
- do not specified. As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1366">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1366</a>
-
- <li> tiffset.c: Properly handle tags with TIFF_VARIABLE writecount.
- As per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1350">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1350</a>
-
- <li> tif2rgba.c: This utility does not work properly on big-endian
- architectures. It was fixed including the bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1149">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1149</a>
-
- <li> tiff2pdf.c: Fix handling of -q values.
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=587">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=587</a>
-
- <li> tiffcmp.c: Fixed floating point comparison logic as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1191">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1191</a>
-
- <li> tiff2pdf.c: Fixed buffer overflow condition in
- t2p_write_pdf_string() as per bug
- <a href="http://bugzilla.remotesensing.org/show_bug.cgi?id=1196">
- http://bugzilla.remotesensing.org/show_bug.cgi?id=1196</a>
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
-
-<UL>
-
- <li> contrib/addtiffo/tif_overview.c: Fix problems with odd sized
- output blocks in TIFF_DownSample_Subsampled() (bug 1542).
-
- <li> contrib/dbs/xtiff/xtiff.c: Make xtiff utility compilable.
- Though it is still far from the state of being working and useful.
-
-</UL>
-
-Last updated $Date: 2007/07/13 13:40:12 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.9.1.html b/src/3rdparty/libtiff/html/v3.9.1.html
deleted file mode 100644
index 93228483bd..0000000000
--- a/src/3rdparty/libtiff/html/v3.9.1.html
+++ /dev/null
@@ -1,115 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
- Changes in TIFF v3.9.1
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.9.1<BR>
-<B>Previous Version</B>: <A HREF=v3.9.1.html>v3.9.1</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
-ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
-http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above). If you don't
-find something listed here, then it was not done in this timeframe, or
-it was not considered important enough to be mentioned. The following
-information is located here:
-<UL>
-<LI><A HREF="#hightlights">Major Changes</A>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in the contrib area</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
-
-<UL>
- <li> This is a bug-fix release for several bugs (two of which
- are dire) which were discovered in the 3.9.0 release.
-
-</UL>
-
-
-<P><HR WIDTH=65% ALIGN=left>
-<!--------------------------------------------------------------------------->
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-
- <li> Several defines were missing from tif_config.vc.h which
- are necessary to compile the library using MSVC.
-
- <li> Colorized tests were actually not enabled as expected.
- Parallel tests mode is now also enabled so that tests can be
- run in parallel, and test output is sent to .log files.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
- <li> libtiff/tif_write.c (TIFFAppendToStrip): Remove cast
- which caused libtiff to output a wrong last strip with
- byte-count and strip-offset of zero. This cast was added on
- the day of the 3.9.0 release.
-
- <li> libtiff/tif_dirwrite.c: Back out changes from 2007-11-22
- that resulted in the final strip not being written in some
- circumstances.
- http://bugzilla.maptools.org/show_bug.cgi?id=2088
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!-------------------------------------------------------------------------->
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
- <li> None
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
-
-<UL>
-
- <li> None
-
-</UL>
-
-Last updated $Date: 2009-08-28 18:49:02 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/html/v3.9.2.html b/src/3rdparty/libtiff/html/v3.9.2.html
deleted file mode 100644
index 2f390c838d..0000000000
--- a/src/3rdparty/libtiff/html/v3.9.2.html
+++ /dev/null
@@ -1,122 +0,0 @@
-<HTML>
-<HEAD>
-<TITLE>
- Changes in TIFF v3.9.2
-</TITLE>
-</HEAD>
-
-<BODY BGCOLOR=white>
-<FONT FACE="Helvetica, Arial, Sans">
-<FONT FACE="Helvetica, Arial, Sans">
-
-<BASEFONT SIZE=4>
-<B><FONT SIZE=+3>T</FONT>IFF <FONT SIZE=+2>C</FONT>HANGE <FONT SIZE=+2>I</FONT>NFORMATION</B>
-<BASEFONT SIZE=3>
-
-<UL>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-<B>Current Version</B>: v3.9.2<BR>
-<B>Previous Version</B>: <A HREF=v3.9.1.html>v3.9.1</a><BR>
-<B>Master FTP Site</B>: <A HREF="ftp://ftp.remotesensing.org/pub/libtiff">
-ftp.remotesensing.org</a>, directory pub/libtiff</A><BR>
-<B>Master HTTP Site</B>: <A HREF="http://www.remotesensing.org/libtiff">
-http://www.remotesensing.org/libtiff</a>
-<HR SIZE=4 WIDTH=65% ALIGN=left>
-</UL>
-
-<P>
-This document describes the changes made to the software between the
-<I>previous</I> and <I>current</I> versions (see above). If you don't
-find something listed here, then it was not done in this timeframe, or
-it was not considered important enough to be mentioned. The following
-information is located here:
-<UL>
-<LI><A HREF="#hightlights">Major Changes</A>
-<LI><A HREF="#configure">Changes in the software configuration</A>
-<LI><A HREF="#libtiff">Changes in libtiff</A>
-<LI><A HREF="#tools">Changes in the tools</A>
-<LI><A HREF="#contrib">Changes in the contrib area</A>
-</UL>
-<p>
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="highlights"><B><FONT SIZE=+3>M</FONT>AJOR CHANGES:</B></A>
-
-<UL>
-
- <li> Fixes a number of bugs present in the 3.9.1 release.
-
- <li> OJPEG support updated to work with IJG JPEG 7 release.
-
- <li> Tiffcrop validated for most TIFF storage subformats and sample depths.
-
-</UL>
-
-
-<P><HR WIDTH=65% ALIGN=left>
-<!--------------------------------------------------------------------------->
-
-<A NAME="configure"><B><FONT SIZE=+3>C</FONT>HANGES IN THE SOFTWARE CONFIGURATION:</B></A>
-
-<UL>
-
- <li> x86_64 now uses the same default fill order as i386.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="libtiff"><B><FONT SIZE=+3>C</FONT>HANGES IN LIBTIFF:</B></A>
-
-<UL>
- <li> Writing tags with an array value of type TIFF_DOUBLE now
- returns correct error status. The TIFFTAG_SMINSAMPLEVALUE and
- TIFFTAG_SMAXSAMPLEVALUE tags failed to write without this fix.
-
- <li> OJPEG decoder now works with IJG JPEG 7. Resolves "Bug
- 2090 - OJPEG crash with libjpeg v7".
- http://bugzilla.maptools.org/show_bug.cgi?id=2090
-
- <li> Eliminate most GCC "dereferencing type-punned pointer"
- warnings.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!-------------------------------------------------------------------------->
-
-<A NAME="tools"><B><FONT SIZE=+3>C</FONT>HANGES IN THE TOOLS:</B></A>
-
-<UL>
-
- <li> New tiffcrop from Richard Nolde. Major updates to add
- significant functionality for reading and writing tile based
- images with bit depths not a multiple of 8 which cannot be
- handled by tiffcp.
-
- <li> Allow building tools with GCC using the "-Wformat
- -Werror=format-security" flags.
-
-</UL>
-
-<P><HR WIDTH=65% ALIGN=left>
-
-<!--------------------------------------------------------------------------->
-
-<A NAME="contrib"><B><FONT SIZE=+3>C</FONT>HANGES IN THE CONTRIB AREA:</B></A>
-
-<UL>
-
- <li> None
-
-</UL>
-
-Last updated $Date: 2009-08-28 18:49:02 $.
-
-</BODY>
-</HTML>
diff --git a/src/3rdparty/libtiff/libtiff/SConstruct b/src/3rdparty/libtiff/libtiff/SConstruct
deleted file mode 100644
index cb6a7cc957..0000000000
--- a/src/3rdparty/libtiff/libtiff/SConstruct
+++ /dev/null
@@ -1,73 +0,0 @@
-# $Id: SConstruct,v 1.4 2007/02/24 15:03:50 dron Exp $
-
-# Tag Image File Format (TIFF) Software
-#
-# Copyright (C) 2005, Andrey Kiselev <dron@ak4719.spb.edu>
-#
-# Permission to use, copy, modify, distribute, and sell this software and
-# its documentation for any purpose is hereby granted without fee, provided
-# that (i) the above copyright notices and this permission notice appear in
-# all copies of the software and related documentation, and (ii) the names of
-# Sam Leffler and Silicon Graphics may not be used in any advertising or
-# publicity relating to the software without the specific, prior written
-# permission of Sam Leffler and Silicon Graphics.
-#
-# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
-# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-#
-# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
-# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-# OF THIS SOFTWARE.
-
-# This file contains rules to build software with the SCons tool
-# (see the http://www.scons.org/ for details on SCons).
-
-# Import globally defined options
-Import([ 'env', 'idir_lib' ])
-
-SRCS = [ \
- 'tif_aux.c', \
- 'tif_close.c', \
- 'tif_codec.c', \
- 'tif_color.c', \
- 'tif_compress.c', \
- 'tif_dir.c', \
- 'tif_dirinfo.c', \
- 'tif_dirread.c', \
- 'tif_dirwrite.c', \
- 'tif_dumpmode.c', \
- 'tif_error.c', \
- 'tif_extension.c', \
- 'tif_fax3.c', \
- 'tif_fax3sm.c', \
- 'tif_flush.c', \
- 'tif_getimage.c', \
- 'tif_jbig.c', \
- 'tif_jpeg.c', \
- 'tif_luv.c', \
- 'tif_lzw.c', \
- 'tif_next.c', \
- 'tif_ojpeg.c', \
- 'tif_open.c', \
- 'tif_packbits.c', \
- 'tif_pixarlog.c', \
- 'tif_predict.c', \
- 'tif_print.c', \
- 'tif_read.c', \
- 'tif_strip.c', \
- 'tif_swab.c', \
- 'tif_thunder.c', \
- 'tif_tile.c', \
- 'tif_unix.c', \
- 'tif_version.c', \
- 'tif_warning.c', \
- 'tif_write.c', \
- 'tif_zip.c' ]
-
-StaticLibrary('tiff', SRCS)
-SharedLibrary('tiff', SRCS)
-
diff --git a/src/3rdparty/libtiff/libtiff/libtiff.def b/src/3rdparty/libtiff/libtiff/libtiff.def
deleted file mode 100644
index 3caefd8365..0000000000
--- a/src/3rdparty/libtiff/libtiff/libtiff.def
+++ /dev/null
@@ -1,140 +0,0 @@
-EXPORTS TIFFOpen
- TIFFOpenW
- TIFFGetVersion
- TIFFCleanup
- TIFFClose
- TIFFFlush
- TIFFFlushData
- TIFFGetField
- TIFFVGetField
- TIFFGetFieldDefaulted
- TIFFVGetFieldDefaulted
- TIFFGetTagListEntry
- TIFFGetTagListCount
- TIFFReadDirectory
- TIFFScanlineSize
- TIFFStripSize
- TIFFVStripSize
- TIFFRawStripSize
- TIFFTileRowSize
- TIFFTileSize
- TIFFVTileSize
- TIFFFileno
- TIFFSetFileno
- TIFFGetMode
- TIFFIsTiled
- TIFFIsByteSwapped
- TIFFIsBigEndian
- TIFFIsMSB2LSB
- TIFFIsUpSampled
- TIFFCIELabToRGBInit
- TIFFCIELabToXYZ
- TIFFXYZToRGB
- TIFFYCbCrToRGBInit
- TIFFYCbCrtoRGB
- TIFFCurrentRow
- TIFFCurrentDirectory
- TIFFCurrentStrip
- TIFFCurrentTile
- TIFFDataWidth
- TIFFReadBufferSetup
- TIFFWriteBufferSetup
- TIFFSetupStrips
- TIFFLastDirectory
- TIFFSetDirectory
- TIFFSetSubDirectory
- TIFFUnlinkDirectory
- TIFFSetField
- TIFFVSetField
- TIFFCheckpointDirectory
- TIFFWriteDirectory
- TIFFRewriteDirectory
- TIFFPrintDirectory
- TIFFReadScanline
- TIFFWriteScanline
- TIFFReadRGBAImage
- TIFFReadRGBAImageOriented
- TIFFFdOpen
- TIFFClientOpen
- TIFFFileName
- TIFFError
- TIFFErrorExt
- TIFFWarning
- TIFFWarningExt
- TIFFSetErrorHandler
- TIFFSetErrorHandlerExt
- TIFFSetWarningHandler
- TIFFSetWarningHandlerExt
- TIFFComputeTile
- TIFFCheckTile
- TIFFNumberOfTiles
- TIFFReadTile
- TIFFWriteTile
- TIFFComputeStrip
- TIFFNumberOfStrips
- TIFFRGBAImageBegin
- TIFFRGBAImageGet
- TIFFRGBAImageEnd
- TIFFReadEncodedStrip
- TIFFReadRawStrip
- TIFFReadEncodedTile
- TIFFReadRawTile
- TIFFReadRGBATile
- TIFFReadRGBAStrip
- TIFFWriteEncodedStrip
- TIFFWriteRawStrip
- TIFFWriteEncodedTile
- TIFFWriteRawTile
- TIFFSetWriteOffset
- TIFFSwabDouble
- TIFFSwabShort
- TIFFSwabLong
- TIFFSwabArrayOfShort
- TIFFSwabArrayOfLong
- TIFFSwabArrayOfDouble
- TIFFSwabArrayOfTriples
- TIFFReverseBits
- TIFFGetBitRevTable
- TIFFDefaultStripSize
- TIFFDefaultTileSize
- TIFFRasterScanlineSize
- _TIFFmalloc
- _TIFFrealloc
- _TIFFfree
- _TIFFmemset
- _TIFFmemcpy
- _TIFFmemcmp
- TIFFCreateDirectory
- TIFFSetTagExtender
- TIFFMergeFieldInfo
- TIFFFindFieldInfo
- TIFFFindFieldInfoByName
- TIFFFieldWithName
- TIFFFieldWithTag
- TIFFCurrentDirOffset
- TIFFWriteCheck
- TIFFRGBAImageOK
- TIFFNumberOfDirectories
- TIFFSetFileName
- TIFFSetClientdata
- TIFFSetMode
- TIFFClientdata
- TIFFGetReadProc
- TIFFGetWriteProc
- TIFFGetSeekProc
- TIFFGetCloseProc
- TIFFGetSizeProc
- TIFFGetMapFileProc
- TIFFGetUnmapFileProc
- TIFFIsCODECConfigured
- TIFFGetConfiguredCODECs
- TIFFFindCODEC
- TIFFRegisterCODEC
- TIFFUnRegisterCODEC
- TIFFFreeDirectory
- TIFFReadCustomDirectory
- TIFFReadEXIFDirectory
- TIFFAccessTagMethods
- TIFFGetClientInfo
- TIFFSetClientInfo
- TIFFReassignTagToIgnore
diff --git a/src/3rdparty/libtiff/libtiff/mkg3states.c b/src/3rdparty/libtiff/libtiff/mkg3states.c
deleted file mode 100644
index dd29ec82b7..0000000000
--- a/src/3rdparty/libtiff/libtiff/mkg3states.c
+++ /dev/null
@@ -1,444 +0,0 @@
-/* "$Id: mkg3states.c,v 1.10 2007/02/22 11:27:17 dron Exp $ */
-
-/*
- * Copyright (c) 1991-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/* Initialise fax decoder tables
- * Decoder support is derived, with permission, from the code
- * in Frank Cringle's viewfax program;
- * Copyright (C) 1990, 1995 Frank D. Cringle.
- */
-#include "tif_config.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#include "tif_fax3.h"
-
-#ifndef HAVE_GETOPT
-extern int getopt(int, char**, char*);
-#endif
-
-#define streq(a,b) (strcmp(a,b) == 0)
-
-/* NB: can't use names in tif_fax3.h 'cuz they are declared const */
-TIFFFaxTabEnt MainTable[128];
-TIFFFaxTabEnt WhiteTable[4096];
-TIFFFaxTabEnt BlackTable[8192];
-
-struct proto {
- uint16 code; /* right justified, lsb-first, zero filled */
- uint16 val; /* (pixel count)<<4 + code width */
-};
-
-static struct proto Pass[] = {
-{ 0x0008, 4 },
-{ 0, 0 }
-};
-
-static struct proto Horiz[] = {
-{ 0x0004, 3 },
-{ 0, 0 }
-};
-
-static struct proto V0[] = {
-{ 0x0001, 1 },
-{ 0, 0 }
-};
-
-static struct proto VR[] = {
-{ 0x0006, (1<<4)+3 },
-{ 0x0030, (2<<4)+6 },
-{ 0x0060, (3<<4)+7 },
-{ 0, 0 }
-};
-
-static struct proto VL[] = {
-{ 0x0002, (1<<4)+3 },
-{ 0x0010, (2<<4)+6 },
-{ 0x0020, (3<<4)+7 },
-{ 0, 0 }
-};
-
-static struct proto Ext[] = {
-{ 0x0040, 7 },
-{ 0, 0 }
-};
-
-static struct proto EOLV[] = {
-{ 0x0000, 7 },
-{ 0, 0 }
-};
-
-static struct proto MakeUpW[] = {
-{ 0x001b, 1029 },
-{ 0x0009, 2053 },
-{ 0x003a, 3078 },
-{ 0x0076, 4103 },
-{ 0x006c, 5128 },
-{ 0x00ec, 6152 },
-{ 0x0026, 7176 },
-{ 0x00a6, 8200 },
-{ 0x0016, 9224 },
-{ 0x00e6, 10248 },
-{ 0x0066, 11273 },
-{ 0x0166, 12297 },
-{ 0x0096, 13321 },
-{ 0x0196, 14345 },
-{ 0x0056, 15369 },
-{ 0x0156, 16393 },
-{ 0x00d6, 17417 },
-{ 0x01d6, 18441 },
-{ 0x0036, 19465 },
-{ 0x0136, 20489 },
-{ 0x00b6, 21513 },
-{ 0x01b6, 22537 },
-{ 0x0032, 23561 },
-{ 0x0132, 24585 },
-{ 0x00b2, 25609 },
-{ 0x0006, 26630 },
-{ 0x01b2, 27657 },
-{ 0, 0 }
-};
-
-static struct proto MakeUpB[] = {
-{ 0x03c0, 1034 },
-{ 0x0130, 2060 },
-{ 0x0930, 3084 },
-{ 0x0da0, 4108 },
-{ 0x0cc0, 5132 },
-{ 0x02c0, 6156 },
-{ 0x0ac0, 7180 },
-{ 0x06c0, 8205 },
-{ 0x16c0, 9229 },
-{ 0x0a40, 10253 },
-{ 0x1a40, 11277 },
-{ 0x0640, 12301 },
-{ 0x1640, 13325 },
-{ 0x09c0, 14349 },
-{ 0x19c0, 15373 },
-{ 0x05c0, 16397 },
-{ 0x15c0, 17421 },
-{ 0x0dc0, 18445 },
-{ 0x1dc0, 19469 },
-{ 0x0940, 20493 },
-{ 0x1940, 21517 },
-{ 0x0540, 22541 },
-{ 0x1540, 23565 },
-{ 0x0b40, 24589 },
-{ 0x1b40, 25613 },
-{ 0x04c0, 26637 },
-{ 0x14c0, 27661 },
-{ 0, 0 }
-};
-
-static struct proto MakeUp[] = {
-{ 0x0080, 28683 },
-{ 0x0180, 29707 },
-{ 0x0580, 30731 },
-{ 0x0480, 31756 },
-{ 0x0c80, 32780 },
-{ 0x0280, 33804 },
-{ 0x0a80, 34828 },
-{ 0x0680, 35852 },
-{ 0x0e80, 36876 },
-{ 0x0380, 37900 },
-{ 0x0b80, 38924 },
-{ 0x0780, 39948 },
-{ 0x0f80, 40972 },
-{ 0, 0 }
-};
-
-static struct proto TermW[] = {
-{ 0x00ac, 8 },
-{ 0x0038, 22 },
-{ 0x000e, 36 },
-{ 0x0001, 52 },
-{ 0x000d, 68 },
-{ 0x0003, 84 },
-{ 0x0007, 100 },
-{ 0x000f, 116 },
-{ 0x0019, 133 },
-{ 0x0005, 149 },
-{ 0x001c, 165 },
-{ 0x0002, 181 },
-{ 0x0004, 198 },
-{ 0x0030, 214 },
-{ 0x000b, 230 },
-{ 0x002b, 246 },
-{ 0x0015, 262 },
-{ 0x0035, 278 },
-{ 0x0072, 295 },
-{ 0x0018, 311 },
-{ 0x0008, 327 },
-{ 0x0074, 343 },
-{ 0x0060, 359 },
-{ 0x0010, 375 },
-{ 0x000a, 391 },
-{ 0x006a, 407 },
-{ 0x0064, 423 },
-{ 0x0012, 439 },
-{ 0x000c, 455 },
-{ 0x0040, 472 },
-{ 0x00c0, 488 },
-{ 0x0058, 504 },
-{ 0x00d8, 520 },
-{ 0x0048, 536 },
-{ 0x00c8, 552 },
-{ 0x0028, 568 },
-{ 0x00a8, 584 },
-{ 0x0068, 600 },
-{ 0x00e8, 616 },
-{ 0x0014, 632 },
-{ 0x0094, 648 },
-{ 0x0054, 664 },
-{ 0x00d4, 680 },
-{ 0x0034, 696 },
-{ 0x00b4, 712 },
-{ 0x0020, 728 },
-{ 0x00a0, 744 },
-{ 0x0050, 760 },
-{ 0x00d0, 776 },
-{ 0x004a, 792 },
-{ 0x00ca, 808 },
-{ 0x002a, 824 },
-{ 0x00aa, 840 },
-{ 0x0024, 856 },
-{ 0x00a4, 872 },
-{ 0x001a, 888 },
-{ 0x009a, 904 },
-{ 0x005a, 920 },
-{ 0x00da, 936 },
-{ 0x0052, 952 },
-{ 0x00d2, 968 },
-{ 0x004c, 984 },
-{ 0x00cc, 1000 },
-{ 0x002c, 1016 },
-{ 0, 0 }
-};
-
-static struct proto TermB[] = {
-{ 0x03b0, 10 },
-{ 0x0002, 19 },
-{ 0x0003, 34 },
-{ 0x0001, 50 },
-{ 0x0006, 67 },
-{ 0x000c, 84 },
-{ 0x0004, 100 },
-{ 0x0018, 117 },
-{ 0x0028, 134 },
-{ 0x0008, 150 },
-{ 0x0010, 167 },
-{ 0x0050, 183 },
-{ 0x0070, 199 },
-{ 0x0020, 216 },
-{ 0x00e0, 232 },
-{ 0x0030, 249 },
-{ 0x03a0, 266 },
-{ 0x0060, 282 },
-{ 0x0040, 298 },
-{ 0x0730, 315 },
-{ 0x00b0, 331 },
-{ 0x01b0, 347 },
-{ 0x0760, 363 },
-{ 0x00a0, 379 },
-{ 0x0740, 395 },
-{ 0x00c0, 411 },
-{ 0x0530, 428 },
-{ 0x0d30, 444 },
-{ 0x0330, 460 },
-{ 0x0b30, 476 },
-{ 0x0160, 492 },
-{ 0x0960, 508 },
-{ 0x0560, 524 },
-{ 0x0d60, 540 },
-{ 0x04b0, 556 },
-{ 0x0cb0, 572 },
-{ 0x02b0, 588 },
-{ 0x0ab0, 604 },
-{ 0x06b0, 620 },
-{ 0x0eb0, 636 },
-{ 0x0360, 652 },
-{ 0x0b60, 668 },
-{ 0x05b0, 684 },
-{ 0x0db0, 700 },
-{ 0x02a0, 716 },
-{ 0x0aa0, 732 },
-{ 0x06a0, 748 },
-{ 0x0ea0, 764 },
-{ 0x0260, 780 },
-{ 0x0a60, 796 },
-{ 0x04a0, 812 },
-{ 0x0ca0, 828 },
-{ 0x0240, 844 },
-{ 0x0ec0, 860 },
-{ 0x01c0, 876 },
-{ 0x0e40, 892 },
-{ 0x0140, 908 },
-{ 0x01a0, 924 },
-{ 0x09a0, 940 },
-{ 0x0d40, 956 },
-{ 0x0340, 972 },
-{ 0x05a0, 988 },
-{ 0x0660, 1004 },
-{ 0x0e60, 1020 },
-{ 0, 0 }
-};
-
-static struct proto EOLH[] = {
-{ 0x0000, 11 },
-{ 0, 0 }
-};
-
-static void
-FillTable(TIFFFaxTabEnt *T, int Size, struct proto *P, int State)
-{
- int limit = 1 << Size;
-
- while (P->val) {
- int width = P->val & 15;
- int param = P->val >> 4;
- int incr = 1 << width;
- int code;
- for (code = P->code; code < limit; code += incr) {
- TIFFFaxTabEnt *E = T+code;
- E->State = State;
- E->Width = width;
- E->Param = param;
- }
- P++;
- }
-}
-
-static char* storage_class = "";
-static char* const_class = "";
-static int packoutput = 1;
-static char* prebrace = "";
-static char* postbrace = "";
-
-void
-WriteTable(FILE* fd, const TIFFFaxTabEnt* T, int Size, const char* name)
-{
- int i;
- char* sep;
-
- fprintf(fd, "%s %s TIFFFaxTabEnt %s[%d] = {",
- storage_class, const_class, name, Size);
- if (packoutput) {
- sep = "\n";
- for (i = 0; i < Size; i++) {
- fprintf(fd, "%s%s%d,%d,%d%s",
- sep, prebrace, T->State, T->Width, (int) T->Param, postbrace);
- if (((i+1) % 10) == 0)
- sep = ",\n";
- else
- sep = ",";
- T++;
- }
- } else {
- sep = "\n ";
- for (i = 0; i < Size; i++) {
- fprintf(fd, "%s%s%3d,%3d,%4d%s",
- sep, prebrace, T->State, T->Width, (int) T->Param, postbrace);
- if (((i+1) % 6) == 0)
- sep = ",\n ";
- else
- sep = ",";
- T++;
- }
- }
- fprintf(fd, "\n};\n");
-}
-
-/* initialise the huffman code tables */
-int
-main(int argc, char* argv[])
-{
- FILE* fd;
- char* outputfile;
- int c;
- extern int optind;
- extern char* optarg;
-
- while ((c = getopt(argc, argv, "c:s:bp")) != -1)
- switch (c) {
- case 'c':
- const_class = optarg;
- break;
- case 's':
- storage_class = optarg;
- break;
- case 'p':
- packoutput = 0;
- break;
- case 'b':
- prebrace = "{";
- postbrace = "}";
- break;
- case '?':
- fprintf(stderr,
- "usage: %s [-c const] [-s storage] [-p] [-b] file\n",
- argv[0]);
- return (-1);
- }
- outputfile = optind < argc ? argv[optind] : "g3states.h";
- fd = fopen(outputfile, "w");
- if (fd == NULL) {
- fprintf(stderr, "%s: %s: Cannot create output file.\n",
- argv[0], outputfile);
- return (-2);
- }
- FillTable(MainTable, 7, Pass, S_Pass);
- FillTable(MainTable, 7, Horiz, S_Horiz);
- FillTable(MainTable, 7, V0, S_V0);
- FillTable(MainTable, 7, VR, S_VR);
- FillTable(MainTable, 7, VL, S_VL);
- FillTable(MainTable, 7, Ext, S_Ext);
- FillTable(MainTable, 7, EOLV, S_EOL);
- FillTable(WhiteTable, 12, MakeUpW, S_MakeUpW);
- FillTable(WhiteTable, 12, MakeUp, S_MakeUp);
- FillTable(WhiteTable, 12, TermW, S_TermW);
- FillTable(WhiteTable, 12, EOLH, S_EOL);
- FillTable(BlackTable, 13, MakeUpB, S_MakeUpB);
- FillTable(BlackTable, 13, MakeUp, S_MakeUp);
- FillTable(BlackTable, 13, TermB, S_TermB);
- FillTable(BlackTable, 13, EOLH, S_EOL);
-
- fprintf(fd, "/* WARNING, this file was automatically generated by the\n");
- fprintf(fd, " mkg3states program */\n");
- fprintf(fd, "#include \"tiff.h\"\n");
- fprintf(fd, "#include \"tif_fax3.h\"\n");
- WriteTable(fd, MainTable, 128, "TIFFFaxMainTable");
- WriteTable(fd, WhiteTable, 4096, "TIFFFaxWhiteTable");
- WriteTable(fd, BlackTable, 8192, "TIFFFaxBlackTable");
- fclose(fd);
- return (0);
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/t4.h b/src/3rdparty/libtiff/libtiff/t4.h
deleted file mode 100644
index 10bb17a5cb..0000000000
--- a/src/3rdparty/libtiff/libtiff/t4.h
+++ /dev/null
@@ -1,285 +0,0 @@
-/* $Id: t4.h,v 1.1.1.1 1999/07/27 21:50:27 mike Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#ifndef _T4_
-#define _T4_
-/*
- * CCITT T.4 1D Huffman runlength codes and
- * related definitions. Given the small sizes
- * of these tables it does not seem
- * worthwhile to make code & length 8 bits.
- */
-typedef struct tableentry {
- unsigned short length; /* bit length of g3 code */
- unsigned short code; /* g3 code */
- short runlen; /* run length in bits */
-} tableentry;
-
-#define EOL 0x001 /* EOL code value - 0000 0000 0000 1 */
-
-/* status values returned instead of a run length */
-#define G3CODE_EOL -1 /* NB: ACT_EOL - ACT_WRUNT */
-#define G3CODE_INVALID -2 /* NB: ACT_INVALID - ACT_WRUNT */
-#define G3CODE_EOF -3 /* end of input data */
-#define G3CODE_INCOMP -4 /* incomplete run code */
-
-/*
- * Note that these tables are ordered such that the
- * index into the table is known to be either the
- * run length, or (run length / 64) + a fixed offset.
- *
- * NB: The G3CODE_INVALID entries are only used
- * during state generation (see mkg3states.c).
- */
-#ifdef G3CODES
-const tableentry TIFFFaxWhiteCodes[] = {
- { 8, 0x35, 0 }, /* 0011 0101 */
- { 6, 0x7, 1 }, /* 0001 11 */
- { 4, 0x7, 2 }, /* 0111 */
- { 4, 0x8, 3 }, /* 1000 */
- { 4, 0xB, 4 }, /* 1011 */
- { 4, 0xC, 5 }, /* 1100 */
- { 4, 0xE, 6 }, /* 1110 */
- { 4, 0xF, 7 }, /* 1111 */
- { 5, 0x13, 8 }, /* 1001 1 */
- { 5, 0x14, 9 }, /* 1010 0 */
- { 5, 0x7, 10 }, /* 0011 1 */
- { 5, 0x8, 11 }, /* 0100 0 */
- { 6, 0x8, 12 }, /* 0010 00 */
- { 6, 0x3, 13 }, /* 0000 11 */
- { 6, 0x34, 14 }, /* 1101 00 */
- { 6, 0x35, 15 }, /* 1101 01 */
- { 6, 0x2A, 16 }, /* 1010 10 */
- { 6, 0x2B, 17 }, /* 1010 11 */
- { 7, 0x27, 18 }, /* 0100 111 */
- { 7, 0xC, 19 }, /* 0001 100 */
- { 7, 0x8, 20 }, /* 0001 000 */
- { 7, 0x17, 21 }, /* 0010 111 */
- { 7, 0x3, 22 }, /* 0000 011 */
- { 7, 0x4, 23 }, /* 0000 100 */
- { 7, 0x28, 24 }, /* 0101 000 */
- { 7, 0x2B, 25 }, /* 0101 011 */
- { 7, 0x13, 26 }, /* 0010 011 */
- { 7, 0x24, 27 }, /* 0100 100 */
- { 7, 0x18, 28 }, /* 0011 000 */
- { 8, 0x2, 29 }, /* 0000 0010 */
- { 8, 0x3, 30 }, /* 0000 0011 */
- { 8, 0x1A, 31 }, /* 0001 1010 */
- { 8, 0x1B, 32 }, /* 0001 1011 */
- { 8, 0x12, 33 }, /* 0001 0010 */
- { 8, 0x13, 34 }, /* 0001 0011 */
- { 8, 0x14, 35 }, /* 0001 0100 */
- { 8, 0x15, 36 }, /* 0001 0101 */
- { 8, 0x16, 37 }, /* 0001 0110 */
- { 8, 0x17, 38 }, /* 0001 0111 */
- { 8, 0x28, 39 }, /* 0010 1000 */
- { 8, 0x29, 40 }, /* 0010 1001 */
- { 8, 0x2A, 41 }, /* 0010 1010 */
- { 8, 0x2B, 42 }, /* 0010 1011 */
- { 8, 0x2C, 43 }, /* 0010 1100 */
- { 8, 0x2D, 44 }, /* 0010 1101 */
- { 8, 0x4, 45 }, /* 0000 0100 */
- { 8, 0x5, 46 }, /* 0000 0101 */
- { 8, 0xA, 47 }, /* 0000 1010 */
- { 8, 0xB, 48 }, /* 0000 1011 */
- { 8, 0x52, 49 }, /* 0101 0010 */
- { 8, 0x53, 50 }, /* 0101 0011 */
- { 8, 0x54, 51 }, /* 0101 0100 */
- { 8, 0x55, 52 }, /* 0101 0101 */
- { 8, 0x24, 53 }, /* 0010 0100 */
- { 8, 0x25, 54 }, /* 0010 0101 */
- { 8, 0x58, 55 }, /* 0101 1000 */
- { 8, 0x59, 56 }, /* 0101 1001 */
- { 8, 0x5A, 57 }, /* 0101 1010 */
- { 8, 0x5B, 58 }, /* 0101 1011 */
- { 8, 0x4A, 59 }, /* 0100 1010 */
- { 8, 0x4B, 60 }, /* 0100 1011 */
- { 8, 0x32, 61 }, /* 0011 0010 */
- { 8, 0x33, 62 }, /* 0011 0011 */
- { 8, 0x34, 63 }, /* 0011 0100 */
- { 5, 0x1B, 64 }, /* 1101 1 */
- { 5, 0x12, 128 }, /* 1001 0 */
- { 6, 0x17, 192 }, /* 0101 11 */
- { 7, 0x37, 256 }, /* 0110 111 */
- { 8, 0x36, 320 }, /* 0011 0110 */
- { 8, 0x37, 384 }, /* 0011 0111 */
- { 8, 0x64, 448 }, /* 0110 0100 */
- { 8, 0x65, 512 }, /* 0110 0101 */
- { 8, 0x68, 576 }, /* 0110 1000 */
- { 8, 0x67, 640 }, /* 0110 0111 */
- { 9, 0xCC, 704 }, /* 0110 0110 0 */
- { 9, 0xCD, 768 }, /* 0110 0110 1 */
- { 9, 0xD2, 832 }, /* 0110 1001 0 */
- { 9, 0xD3, 896 }, /* 0110 1001 1 */
- { 9, 0xD4, 960 }, /* 0110 1010 0 */
- { 9, 0xD5, 1024 }, /* 0110 1010 1 */
- { 9, 0xD6, 1088 }, /* 0110 1011 0 */
- { 9, 0xD7, 1152 }, /* 0110 1011 1 */
- { 9, 0xD8, 1216 }, /* 0110 1100 0 */
- { 9, 0xD9, 1280 }, /* 0110 1100 1 */
- { 9, 0xDA, 1344 }, /* 0110 1101 0 */
- { 9, 0xDB, 1408 }, /* 0110 1101 1 */
- { 9, 0x98, 1472 }, /* 0100 1100 0 */
- { 9, 0x99, 1536 }, /* 0100 1100 1 */
- { 9, 0x9A, 1600 }, /* 0100 1101 0 */
- { 6, 0x18, 1664 }, /* 0110 00 */
- { 9, 0x9B, 1728 }, /* 0100 1101 1 */
- { 11, 0x8, 1792 }, /* 0000 0001 000 */
- { 11, 0xC, 1856 }, /* 0000 0001 100 */
- { 11, 0xD, 1920 }, /* 0000 0001 101 */
- { 12, 0x12, 1984 }, /* 0000 0001 0010 */
- { 12, 0x13, 2048 }, /* 0000 0001 0011 */
- { 12, 0x14, 2112 }, /* 0000 0001 0100 */
- { 12, 0x15, 2176 }, /* 0000 0001 0101 */
- { 12, 0x16, 2240 }, /* 0000 0001 0110 */
- { 12, 0x17, 2304 }, /* 0000 0001 0111 */
- { 12, 0x1C, 2368 }, /* 0000 0001 1100 */
- { 12, 0x1D, 2432 }, /* 0000 0001 1101 */
- { 12, 0x1E, 2496 }, /* 0000 0001 1110 */
- { 12, 0x1F, 2560 }, /* 0000 0001 1111 */
- { 12, 0x1, G3CODE_EOL }, /* 0000 0000 0001 */
- { 9, 0x1, G3CODE_INVALID }, /* 0000 0000 1 */
- { 10, 0x1, G3CODE_INVALID }, /* 0000 0000 01 */
- { 11, 0x1, G3CODE_INVALID }, /* 0000 0000 001 */
- { 12, 0x0, G3CODE_INVALID }, /* 0000 0000 0000 */
-};
-
-const tableentry TIFFFaxBlackCodes[] = {
- { 10, 0x37, 0 }, /* 0000 1101 11 */
- { 3, 0x2, 1 }, /* 010 */
- { 2, 0x3, 2 }, /* 11 */
- { 2, 0x2, 3 }, /* 10 */
- { 3, 0x3, 4 }, /* 011 */
- { 4, 0x3, 5 }, /* 0011 */
- { 4, 0x2, 6 }, /* 0010 */
- { 5, 0x3, 7 }, /* 0001 1 */
- { 6, 0x5, 8 }, /* 0001 01 */
- { 6, 0x4, 9 }, /* 0001 00 */
- { 7, 0x4, 10 }, /* 0000 100 */
- { 7, 0x5, 11 }, /* 0000 101 */
- { 7, 0x7, 12 }, /* 0000 111 */
- { 8, 0x4, 13 }, /* 0000 0100 */
- { 8, 0x7, 14 }, /* 0000 0111 */
- { 9, 0x18, 15 }, /* 0000 1100 0 */
- { 10, 0x17, 16 }, /* 0000 0101 11 */
- { 10, 0x18, 17 }, /* 0000 0110 00 */
- { 10, 0x8, 18 }, /* 0000 0010 00 */
- { 11, 0x67, 19 }, /* 0000 1100 111 */
- { 11, 0x68, 20 }, /* 0000 1101 000 */
- { 11, 0x6C, 21 }, /* 0000 1101 100 */
- { 11, 0x37, 22 }, /* 0000 0110 111 */
- { 11, 0x28, 23 }, /* 0000 0101 000 */
- { 11, 0x17, 24 }, /* 0000 0010 111 */
- { 11, 0x18, 25 }, /* 0000 0011 000 */
- { 12, 0xCA, 26 }, /* 0000 1100 1010 */
- { 12, 0xCB, 27 }, /* 0000 1100 1011 */
- { 12, 0xCC, 28 }, /* 0000 1100 1100 */
- { 12, 0xCD, 29 }, /* 0000 1100 1101 */
- { 12, 0x68, 30 }, /* 0000 0110 1000 */
- { 12, 0x69, 31 }, /* 0000 0110 1001 */
- { 12, 0x6A, 32 }, /* 0000 0110 1010 */
- { 12, 0x6B, 33 }, /* 0000 0110 1011 */
- { 12, 0xD2, 34 }, /* 0000 1101 0010 */
- { 12, 0xD3, 35 }, /* 0000 1101 0011 */
- { 12, 0xD4, 36 }, /* 0000 1101 0100 */
- { 12, 0xD5, 37 }, /* 0000 1101 0101 */
- { 12, 0xD6, 38 }, /* 0000 1101 0110 */
- { 12, 0xD7, 39 }, /* 0000 1101 0111 */
- { 12, 0x6C, 40 }, /* 0000 0110 1100 */
- { 12, 0x6D, 41 }, /* 0000 0110 1101 */
- { 12, 0xDA, 42 }, /* 0000 1101 1010 */
- { 12, 0xDB, 43 }, /* 0000 1101 1011 */
- { 12, 0x54, 44 }, /* 0000 0101 0100 */
- { 12, 0x55, 45 }, /* 0000 0101 0101 */
- { 12, 0x56, 46 }, /* 0000 0101 0110 */
- { 12, 0x57, 47 }, /* 0000 0101 0111 */
- { 12, 0x64, 48 }, /* 0000 0110 0100 */
- { 12, 0x65, 49 }, /* 0000 0110 0101 */
- { 12, 0x52, 50 }, /* 0000 0101 0010 */
- { 12, 0x53, 51 }, /* 0000 0101 0011 */
- { 12, 0x24, 52 }, /* 0000 0010 0100 */
- { 12, 0x37, 53 }, /* 0000 0011 0111 */
- { 12, 0x38, 54 }, /* 0000 0011 1000 */
- { 12, 0x27, 55 }, /* 0000 0010 0111 */
- { 12, 0x28, 56 }, /* 0000 0010 1000 */
- { 12, 0x58, 57 }, /* 0000 0101 1000 */
- { 12, 0x59, 58 }, /* 0000 0101 1001 */
- { 12, 0x2B, 59 }, /* 0000 0010 1011 */
- { 12, 0x2C, 60 }, /* 0000 0010 1100 */
- { 12, 0x5A, 61 }, /* 0000 0101 1010 */
- { 12, 0x66, 62 }, /* 0000 0110 0110 */
- { 12, 0x67, 63 }, /* 0000 0110 0111 */
- { 10, 0xF, 64 }, /* 0000 0011 11 */
- { 12, 0xC8, 128 }, /* 0000 1100 1000 */
- { 12, 0xC9, 192 }, /* 0000 1100 1001 */
- { 12, 0x5B, 256 }, /* 0000 0101 1011 */
- { 12, 0x33, 320 }, /* 0000 0011 0011 */
- { 12, 0x34, 384 }, /* 0000 0011 0100 */
- { 12, 0x35, 448 }, /* 0000 0011 0101 */
- { 13, 0x6C, 512 }, /* 0000 0011 0110 0 */
- { 13, 0x6D, 576 }, /* 0000 0011 0110 1 */
- { 13, 0x4A, 640 }, /* 0000 0010 0101 0 */
- { 13, 0x4B, 704 }, /* 0000 0010 0101 1 */
- { 13, 0x4C, 768 }, /* 0000 0010 0110 0 */
- { 13, 0x4D, 832 }, /* 0000 0010 0110 1 */
- { 13, 0x72, 896 }, /* 0000 0011 1001 0 */
- { 13, 0x73, 960 }, /* 0000 0011 1001 1 */
- { 13, 0x74, 1024 }, /* 0000 0011 1010 0 */
- { 13, 0x75, 1088 }, /* 0000 0011 1010 1 */
- { 13, 0x76, 1152 }, /* 0000 0011 1011 0 */
- { 13, 0x77, 1216 }, /* 0000 0011 1011 1 */
- { 13, 0x52, 1280 }, /* 0000 0010 1001 0 */
- { 13, 0x53, 1344 }, /* 0000 0010 1001 1 */
- { 13, 0x54, 1408 }, /* 0000 0010 1010 0 */
- { 13, 0x55, 1472 }, /* 0000 0010 1010 1 */
- { 13, 0x5A, 1536 }, /* 0000 0010 1101 0 */
- { 13, 0x5B, 1600 }, /* 0000 0010 1101 1 */
- { 13, 0x64, 1664 }, /* 0000 0011 0010 0 */
- { 13, 0x65, 1728 }, /* 0000 0011 0010 1 */
- { 11, 0x8, 1792 }, /* 0000 0001 000 */
- { 11, 0xC, 1856 }, /* 0000 0001 100 */
- { 11, 0xD, 1920 }, /* 0000 0001 101 */
- { 12, 0x12, 1984 }, /* 0000 0001 0010 */
- { 12, 0x13, 2048 }, /* 0000 0001 0011 */
- { 12, 0x14, 2112 }, /* 0000 0001 0100 */
- { 12, 0x15, 2176 }, /* 0000 0001 0101 */
- { 12, 0x16, 2240 }, /* 0000 0001 0110 */
- { 12, 0x17, 2304 }, /* 0000 0001 0111 */
- { 12, 0x1C, 2368 }, /* 0000 0001 1100 */
- { 12, 0x1D, 2432 }, /* 0000 0001 1101 */
- { 12, 0x1E, 2496 }, /* 0000 0001 1110 */
- { 12, 0x1F, 2560 }, /* 0000 0001 1111 */
- { 12, 0x1, G3CODE_EOL }, /* 0000 0000 0001 */
- { 9, 0x1, G3CODE_INVALID }, /* 0000 0000 1 */
- { 10, 0x1, G3CODE_INVALID }, /* 0000 0000 01 */
- { 11, 0x1, G3CODE_INVALID }, /* 0000 0000 001 */
- { 12, 0x0, G3CODE_INVALID }, /* 0000 0000 0000 */
-};
-#else
-extern const tableentry TIFFFaxWhiteCodes[];
-extern const tableentry TIFFFaxBlackCodes[];
-#endif
-#endif /* _T4_ */
diff --git a/src/3rdparty/libtiff/libtiff/tif_acorn.c b/src/3rdparty/libtiff/libtiff/tif_acorn.c
deleted file mode 100644
index 478390fc59..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_acorn.c
+++ /dev/null
@@ -1,519 +0,0 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_acorn.c,v 1.2 2005/12/21 12:23:13 joris Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library RISC OS specific Routines.
- * Developed out of the Unix version.
- * Peter Greenham, May 1995
- */
-#include "tiffiop.h"
-#include <stdio.h>
-#include <stdlib.h>
-
-/*
-Low-level file handling
-~~~~~~~~~~~~~~~~~~~~~~~
-The functions in osfcn.h are unavailable when compiling under C, as it's a
-C++ header. Therefore they have been implemented here.
-
-Now, why have I done it this way?
-
-The definitive API library for RISC OS is Jonathan Coxhead's OSLib, which
-uses heavily optimised ARM assembler or even plain inline SWI calls for
-maximum performance and minimum runtime size. However, I don't want to make
-LIBTIFF need that to survive. Therefore I have also emulated the functions
-using macros to _swi() and _swix() defined in the swis.h header, and
-borrowing types from kernel.h, which is less efficient but doesn't need any
-third-party libraries.
- */
-
-#ifdef INCLUDE_OSLIB
-
-#include "osfile.h"
-#include "osgbpb.h"
-#include "osargs.h"
-#include "osfind.h"
-
-#else
-
-/* OSLIB EMULATION STARTS */
-
-#include "kernel.h"
-#include "swis.h"
-
-/* From oslib:types.h */
-typedef unsigned int bits;
-typedef unsigned char byte;
-#ifndef TRUE
-#define TRUE 1
-#endif
-#ifndef FALSE
-#define FALSE 0
-#endif
-#ifndef NULL
-#define NULL 0
-#endif
-#ifndef SKIP
-#define SKIP 0
-#endif
-
-/* From oslib:os.h */
-typedef _kernel_oserror os_error;
-typedef byte os_f;
-
-/* From oslib:osfile.h */
-#undef OS_File
-#define OS_File 0x8
-
-/* From oslib:osgbpb.h */
-#undef OS_GBPB
-#define OS_GBPB 0xC
-#undef OSGBPB_Write
-#define OSGBPB_Write 0x2
-#undef OSGBPB_Read
-#define OSGBPB_Read 0x4
-
-extern os_error *xosgbpb_write (os_f file,
- byte *data,
- int size,
- int *unwritten);
-extern int osgbpb_write (os_f file,
- byte *data,
- int size);
-
-#define xosgbpb_write(file, data, size, unwritten) \
- (os_error*) _swix(OS_GBPB, _IN(0)|_IN(1)|_IN(2)|_IN(3)|_IN(4)|_OUT(3), \
- OSGBPB_WriteAt, \
- file, \
- data, \
- size, \
- unwritten)
-
-#define osgbpb_write(file, data, size) \
- _swi(OS_GBPB, _IN(0)|_IN(1)|_IN(2)|_IN(3)|_RETURN(3), \
- OSGBPB_Write, \
- file, \
- data, \
- size)
-
-extern os_error *xosgbpb_read (os_f file,
- byte *buffer,
- int size,
- int *unread);
-extern int osgbpb_read (os_f file,
- byte *buffer,
- int size);
-
-#define xosgbpb_read(file, buffer, size, unread) \
- (os_error*) _swix(OS_GBPB, _IN(0)|_IN(1)|_IN(2)|_IN(3)|_OUT(3), \
- OSGBPB_Read, \
- file, \
- buffer, \
- size, \
- unread)
-
-#define osgbpb_read(file, buffer, size) \
- _swi(OS_GBPB, _IN(0)|_IN(1)|_IN(2)|_IN(3)|_RETURN(3), \
- OSGBPB_Read, \
- file, \
- buffer, \
- size)
-
-/* From oslib:osfind.h */
-#undef OS_Find
-#define OS_Find 0xD
-#undef OSFind_Openin
-#define OSFind_Openin 0x40
-#undef OSFind_Openout
-#define OSFind_Openout 0x80
-#undef OSFind_Openup
-#define OSFind_Openup 0xC0
-#undef OSFind_Close
-#define OSFind_Close 0x0
-
-#define xosfind_open(reason, file_name, path, file) \
- (os_error*) _swix(OS_Find, _IN(0)|_IN(1)|_IN(2)|_OUT(0), \
- reason, file_name, path, file)
-
-#define osfind_open(reason, file_name, path) \
- (os_f) _swi(OS_Find, _IN(0)|_IN(1)|_IN(2)|_RETURN(0), \
- reason, file_name, path)
-
-extern os_error *xosfind_openin (bits flags,
- char *file_name,
- char *path,
- os_f *file);
-extern os_f osfind_openin (bits flags,
- char *file_name,
- char *path);
-
-#define xosfind_openin(flags, file_name, path, file) \
- xosfind_open(flags | OSFind_Openin, file_name, path, file)
-
-#define osfind_openin(flags, file_name, path) \
- osfind_open(flags | OSFind_Openin, file_name, path)
-
-extern os_error *xosfind_openout (bits flags,
- char *file_name,
- char *path,
- os_f *file);
-extern os_f osfind_openout (bits flags,
- char *file_name,
- char *path);
-
-#define xosfind_openout(flags, file_name, path, file) \
- xosfind_open(flags | OSFind_Openout, file_name, path, file)
-
-#define osfind_openout(flags, file_name, path) \
- osfind_open(flags | OSFind_Openout, file_name, path)
-
-extern os_error *xosfind_openup (bits flags,
- char *file_name,
- char *path,
- os_f *file);
-extern os_f osfind_openup (bits flags,
- char *file_name,
- char *path);
-
-#define xosfind_openup(flags, file_name, path, file) \
- xosfind_open(flags | OSFind_Openup, file_name, path, file)
-
-#define osfind_openup(flags, file_name, path) \
- osfind_open(flags | OSFind_Openup, file_name, path)
-
-extern os_error *xosfind_close (os_f file);
-extern void osfind_close (os_f file);
-
-#define xosfind_close(file) \
- (os_error*) _swix(OS_Find, _IN(0)|_IN(1), \
- OSFind_Close, \
- file)
-
-#define osfind_close(file) \
- (void) _swi(OS_Find, _IN(0)|_IN(1), \
- OSFind_Close, \
- file)
-
-/* From oslib:osargs.h */
-#undef OS_Args
-#define OS_Args 0x9
-#undef OSArgs_ReadPtr
-#define OSArgs_ReadPtr 0x0
-#undef OSArgs_SetPtr
-#define OSArgs_SetPtr 0x1
-#undef OSArgs_ReadExt
-#define OSArgs_ReadExt 0x2
-
-extern os_error *xosargs_read_ptr (os_f file,
- int *ptr);
-extern int osargs_read_ptr (os_f file);
-
-#define xosargs_read_ptr(file, ptr) \
- (os_error*) _swix(OS_Args, _IN(0)|_IN(1)|_OUT(2), \
- OSArgs_ReadPtr, \
- file, \
- ptr)
-
-#define osargs_read_ptr(file) \
- _swi(OS_Args, _IN(0)|_IN(1)|_RETURN(2), \
- OSArgs_ReadPtr, \
- file)
-
-extern os_error *xosargs_set_ptr (os_f file,
- int ptr);
-extern void osargs_set_ptr (os_f file,
- int ptr);
-
-#define xosargs_set_ptr(file, ptr) \
- (os_error*) _swix(OS_Args, _IN(0)|_IN(1)|_IN(2), \
- OSArgs_SetPtr, \
- file, \
- ptr)
-
-#define osargs_set_ptr(file, ptr) \
- (void) _swi(OS_Args, _IN(0)|_IN(1)|_IN(2), \
- OSArgs_SetPtr, \
- file, \
- ptr)
-
-extern os_error *xosargs_read_ext (os_f file,
- int *ext);
-extern int osargs_read_ext (os_f file);
-
-#define xosargs_read_ext(file, ext) \
- (os_error*) _swix(OS_Args, _IN(0)|_IN(1)|_OUT(2), \
- OSArgs_ReadExt, \
- file, \
- ext)
-
-#define osargs_read_ext(file) \
- _swi(OS_Args, _IN(0)|_IN(1)|_RETURN(2), \
- OSArgs_ReadExt, \
- file)
-
-/* OSLIB EMULATION ENDS */
-
-#endif
-
-#ifndef __osfcn_h
-/* Will be set or not during tiffcomp.h */
-/* You get this to compile under C++? Please say how! */
-
-extern int open(const char* name, int flags, int mode)
-{
- /* From what I can tell, should return <0 for failure */
- os_error* e = (os_error*) 1; /* Cheeky way to use a pointer eh? :-) */
- os_f file = (os_f) -1;
-
- flags = flags;
-
- switch(mode)
- {
- case O_RDONLY:
- {
- e = xosfind_openin(SKIP, name, SKIP, &file);
- break;
- }
- case O_WRONLY:
- case O_RDWR|O_CREAT:
- case O_RDWR|O_CREAT|O_TRUNC:
- {
- e = xosfind_openout(SKIP, name, SKIP, &file);
- break;
- }
- case O_RDWR:
- {
- e = xosfind_openup(SKIP, name, SKIP, &file);
- break;
- }
- }
- if (e)
- {
- file = (os_f) -1;
- }
- return (file);
-}
-
-extern int close(int fd)
-{
- return ((int) xosfind_close((os_f) fd));
-}
-
-extern int write(int fd, const char *buf, int nbytes)
-{
- /* Returns number of bytes written */
- return (nbytes - osgbpb_write((os_f) fd, (const byte*) buf, nbytes));
-}
-
-extern int read(int fd, char *buf, int nbytes)
-{
- /* Returns number of bytes read */
- return (nbytes - osgbpb_read((os_f) fd, (byte*) buf, nbytes));
-}
-
-extern off_t lseek(int fd, off_t offset, int whence)
-{
- int absolute = 0;
-
- switch (whence)
- {
- case SEEK_SET:
- {
- absolute = (int) offset;
- break;
- }
- case SEEK_CUR:
- {
- absolute = osargs_read_ptr((os_f) fd) + (int) offset;
- break;
- }
- case SEEK_END:
- {
- absolute = osargs_read_ext((os_f) fd) + (int) offset;
- break;
- }
- }
-
- osargs_set_ptr((os_f) fd, absolute);
-
- return ((off_t) osargs_read_ptr((os_f) fd));
-}
-#endif
-
-static tsize_t
-_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
- return ((tsize_t) read((int) fd, buf, (size_t) size));
-}
-
-static tsize_t
-_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
- return ((tsize_t) write((int) fd, buf, (size_t) size));
-}
-
-static toff_t
-_tiffSeekProc(thandle_t fd, toff_t off, int whence)
-{
- return ((toff_t) lseek((int) fd, (off_t) off, whence));
-}
-
-static int
-_tiffCloseProc(thandle_t fd)
-{
- return (close((int) fd));
-}
-
-static toff_t
-_tiffSizeProc(thandle_t fd)
-{
- return (lseek((int) fd, SEEK_END, SEEK_SET));
-}
-
-#ifdef HAVE_MMAP
-#error "I didn't know Acorn had that!"
-#endif
-
-/* !HAVE_MMAP */
-static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
- (void) fd; (void) pbase; (void) psize;
- return (0);
-}
-
-static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
- (void) fd; (void) base; (void) size;
-}
-
-/*
- * Open a TIFF file descriptor for read/writing.
- */
-TIFF*
-TIFFFdOpen(int fd, const char* name, const char* mode)
-{
- TIFF* tif;
-
- tif = TIFFClientOpen(name, mode,
- (thandle_t) fd,
- _tiffReadProc, _tiffWriteProc,
- _tiffSeekProc, _tiffCloseProc, _tiffSizeProc,
- _tiffMapProc, _tiffUnmapProc);
- if (tif)
- {
- tif->tif_fd = fd;
- }
- return (tif);
-}
-
-/*
- * Open a TIFF file for read/writing.
- */
-TIFF*
-TIFFOpen(const char* name, const char* mode)
-{
- static const char module[] = "TIFFOpen";
- int m, fd;
-
- m = _TIFFgetMode(mode, module);
-
- if (m == -1)
- {
- return ((TIFF*) 0);
- }
-
- fd = open(name, 0, m);
-
- if (fd < 0)
- {
- TIFFErrorExt(0, module, "%s: Cannot open", name);
- return ((TIFF *)0);
- }
- return (TIFFFdOpen(fd, name, mode));
-}
-
-void*
-_TIFFmalloc(tsize_t s)
-{
- return (malloc((size_t) s));
-}
-
-void
-_TIFFfree(tdata_t p)
-{
- free(p);
-}
-
-void*
-_TIFFrealloc(tdata_t p, tsize_t s)
-{
- return (realloc(p, (size_t) s));
-}
-
-void
-_TIFFmemset(tdata_t p, int v, tsize_t c)
-{
- memset(p, v, (size_t) c);
-}
-
-void
-_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c)
-{
- memcpy(d, s, (size_t) c);
-}
-
-int
-_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
-{
- return (memcmp(p1, p2, (size_t) c));
-}
-
-static void
-acornWarningHandler(const char* module, const char* fmt, va_list ap)
-{
- if (module != NULL)
- {
- fprintf(stderr, "%s: ", module);
- }
- fprintf(stderr, "Warning, ");
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFwarningHandler = acornWarningHandler;
-
-static void
-acornErrorHandler(const char* module, const char* fmt, va_list ap)
-{
- if (module != NULL)
- {
- fprintf(stderr, "%s: ", module);
- }
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFerrorHandler = acornErrorHandler;
diff --git a/src/3rdparty/libtiff/libtiff/tif_apple.c b/src/3rdparty/libtiff/libtiff/tif_apple.c
deleted file mode 100644
index 47e0e0767f..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_apple.c
+++ /dev/null
@@ -1,274 +0,0 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_apple.c,v 1.3 2005/12/21 12:23:13 joris Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library Macintosh-specific routines.
- *
- * These routines use only Toolbox and high-level File Manager traps.
- * They make no calls to the THINK C "unix" compatibility library. Also,
- * malloc is not used directly but it is still referenced internally by
- * the ANSI library in rare cases. Heap fragmentation by the malloc ring
- * buffer is therefore minimized.
- *
- * O_RDONLY and O_RDWR are treated identically here. The tif_mode flag is
- * checked in TIFFWriteCheck().
- *
- * Create below fills in a blank creator signature and sets the file type
- * to 'TIFF'. It is much better for the application to do this by Create'ing
- * the file first and TIFFOpen'ing it later.
- * ---------
- * This code has been "Carbonized", and may not work with older MacOS versions.
- * If so, grab the tif_apple.c out of an older libtiff distribution, like
- * 3.5.5 from www.libtiff.org.
- */
-
-#include "tiffiop.h"
-#include <Errors.h>
-#include <Files.h>
-#include <Memory.h>
-#include <Script.h>
-
-#if defined(__PPCC__) || defined(__SC__) || defined(__MRC__) || defined(applec)
-#define CtoPstr c2pstr
-#endif
-
-static tsize_t
-_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
- return (FSRead((short) fd, (long*) &size, (char*) buf) == noErr ?
- size : (tsize_t) -1);
-}
-
-static tsize_t
-_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
- return (FSWrite((short) fd, (long*) &size, (char*) buf) == noErr ?
- size : (tsize_t) -1);
-}
-
-static toff_t
-_tiffSeekProc(thandle_t fd, toff_t off, int whence)
-{
- long fpos, size;
-
- if (GetEOF((short) fd, &size) != noErr)
- return EOF;
- (void) GetFPos((short) fd, &fpos);
-
- switch (whence) {
- case SEEK_CUR:
- if (off + fpos > size)
- SetEOF((short) fd, off + fpos);
- if (SetFPos((short) fd, fsFromMark, off) != noErr)
- return EOF;
- break;
- case SEEK_END:
- if (off > 0)
- SetEOF((short) fd, off + size);
- if (SetFPos((short) fd, fsFromStart, off + size) != noErr)
- return EOF;
- break;
- case SEEK_SET:
- if (off > size)
- SetEOF((short) fd, off);
- if (SetFPos((short) fd, fsFromStart, off) != noErr)
- return EOF;
- break;
- }
-
- return (toff_t)(GetFPos((short) fd, &fpos) == noErr ? fpos : EOF);
-}
-
-static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
- return (0);
-}
-
-static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
-}
-
-static int
-_tiffCloseProc(thandle_t fd)
-{
- return (FSClose((short) fd));
-}
-
-static toff_t
-_tiffSizeProc(thandle_t fd)
-{
- long size;
-
- if (GetEOF((short) fd, &size) != noErr) {
- TIFFErrorExt(fd, "_tiffSizeProc", "%s: Cannot get file size");
- return (-1L);
- }
- return ((toff_t) size);
-}
-
-/*
- * Open a TIFF file descriptor for read/writing.
- */
-TIFF*
-TIFFFdOpen(int fd, const char* name, const char* mode)
-{
- TIFF* tif;
-
- tif = TIFFClientOpen(name, mode, (thandle_t) fd,
- _tiffReadProc, _tiffWriteProc, _tiffSeekProc, _tiffCloseProc,
- _tiffSizeProc, _tiffMapProc, _tiffUnmapProc);
- if (tif)
- tif->tif_fd = fd;
- return (tif);
-}
-
-static void ourc2pstr( char* inString )
-{
- int sLen = strlen( inString );
- BlockMoveData( inString, &inString[1], sLen );
- inString[0] = sLen;
-}
-
-/*
- * Open a TIFF file for read/writing.
- */
-TIFF*
-TIFFOpen(const char* name, const char* mode)
-{
- static const char module[] = "TIFFOpen";
- Str255 pname;
- FInfo finfo;
- short fref;
- OSErr err;
- FSSpec fSpec;
-
- strcpy((char*) pname, name);
- ourc2pstr((char*) pname);
-
- err = FSMakeFSSpec( 0, 0, pname, &fSpec );
-
- switch (_TIFFgetMode(mode, module)) {
- default:
- return ((TIFF*) 0);
- case O_RDWR | O_CREAT | O_TRUNC:
- if (FSpGetFInfo(&fSpec, &finfo) == noErr)
- FSpDelete(&fSpec);
- /* fall through */
- case O_RDWR | O_CREAT:
- if ((err = FSpGetFInfo(&fSpec, &finfo)) == fnfErr) {
- if (FSpCreate(&fSpec, ' ', 'TIFF', smSystemScript) != noErr)
- goto badCreate;
- if (FSpOpenDF(&fSpec, fsRdWrPerm, &fref) != noErr)
- goto badOpen;
- } else if (err == noErr) {
- if (FSpOpenDF(&fSpec, fsRdWrPerm, &fref) != noErr)
- goto badOpen;
- } else
- goto badOpen;
- break;
- case O_RDONLY:
- if (FSpOpenDF(&fSpec, fsRdPerm, &fref) != noErr)
- goto badOpen;
- break;
- case O_RDWR:
- if (FSpOpenDF(&fSpec, fsRdWrPerm, &fref) != noErr)
- goto badOpen;
- break;
- }
- return (TIFFFdOpen((int) fref, name, mode));
-badCreate:
- TIFFErrorExt(0, module, "%s: Cannot create", name);
- return ((TIFF*) 0);
-badOpen:
- TIFFErrorExt(0, module, "%s: Cannot open", name);
- return ((TIFF*) 0);
-}
-
-void
-_TIFFmemset(tdata_t p, int v, tsize_t c)
-{
- memset(p, v, (size_t) c);
-}
-
-void
-_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c)
-{
- memcpy(d, s, (size_t) c);
-}
-
-int
-_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
-{
- return (memcmp(p1, p2, (size_t) c));
-}
-
-tdata_t
-_TIFFmalloc(tsize_t s)
-{
- return (NewPtr((size_t) s));
-}
-
-void
-_TIFFfree(tdata_t p)
-{
- DisposePtr(p);
-}
-
-tdata_t
-_TIFFrealloc(tdata_t p, tsize_t s)
-{
- Ptr n = p;
-
- SetPtrSize(p, (size_t) s);
- if (MemError() && (n = NewPtr((size_t) s)) != NULL) {
- BlockMove(p, n, GetPtrSize(p));
- DisposePtr(p);
- }
- return ((tdata_t) n);
-}
-
-static void
-appleWarningHandler(const char* module, const char* fmt, va_list ap)
-{
- if (module != NULL)
- fprintf(stderr, "%s: ", module);
- fprintf(stderr, "Warning, ");
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFwarningHandler = appleWarningHandler;
-
-static void
-appleErrorHandler(const char* module, const char* fmt, va_list ap)
-{
- if (module != NULL)
- fprintf(stderr, "%s: ", module);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFerrorHandler = appleErrorHandler;
diff --git a/src/3rdparty/libtiff/libtiff/tif_atari.c b/src/3rdparty/libtiff/libtiff/tif_atari.c
deleted file mode 100644
index a519fa4426..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_atari.c
+++ /dev/null
@@ -1,243 +0,0 @@
-/* "$Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_atari.c,v 1.2 2005/12/21 12:23:13 joris Exp $" */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library ATARI-specific Routines.
- */
-#include "tiffiop.h"
-#if defined(__TURBOC__)
-#include <tos.h>
-#include <stdio.h>
-#else
-#include <osbind.h>
-#include <fcntl.h>
-#endif
-
-#ifndef O_ACCMODE
-#define O_ACCMODE 3
-#endif
-
-#include <errno.h>
-
-#define AEFILNF -33
-
-static tsize_t
-_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
- long r;
-
- r = Fread((int) fd, size, buf);
- if (r < 0) {
- errno = (int)-r;
- r = -1;
- }
- return r;
-}
-
-static tsize_t
-_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
- long r;
-
- r = Fwrite((int) fd, size, buf);
- if (r < 0) {
- errno = (int)-r;
- r = -1;
- }
- return r;
-}
-
-static toff_t
-_tiffSeekProc(thandle_t fd, off_t off, int whence)
-{
- char buf[256];
- long current_off, expected_off, new_off;
-
- if (whence == SEEK_END || off <= 0)
- return Fseek(off, (int) fd, whence);
- current_off = Fseek(0, (int) fd, SEEK_CUR); /* find out where we are */
- if (whence == SEEK_SET)
- expected_off = off;
- else
- expected_off = off + current_off;
- new_off = Fseek(off, (int) fd, whence);
- if (new_off == expected_off)
- return new_off;
- /* otherwise extend file -- zero filling the hole */
- if (new_off < 0) /* error? */
- new_off = Fseek(0, (int) fd, SEEK_END); /* go to eof */
- _TIFFmemset(buf, 0, sizeof(buf));
- while (expected_off > new_off) {
- off = expected_off - new_off;
- if (off > sizeof(buf))
- off = sizeof(buf);
- if ((current_off = Fwrite((int) fd, off, buf)) != off)
- return (current_off > 0) ?
- new_off + current_off : new_off;
- new_off += off;
- }
- return new_off;
-}
-
-static int
-_tiffCloseProc(thandle_t fd)
-{
- long r;
-
- r = Fclose((int) fd);
- if (r < 0) {
- errno = (int)-r;
- r = -1;
- }
- return (int)r;
-}
-
-static toff_t
-_tiffSizeProc(thandle_t fd)
-{
- long pos, eof;
-
- pos = Fseek(0, (int) fd, SEEK_CUR);
- eof = Fseek(0, (int) fd, SEEK_END);
- Fseek(pos, (int) fd, SEEK_SET);
- return eof;
-}
-
-static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
- return (0);
-}
-
-static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
-}
-
-/*
-* Open a TIFF file descriptor for read/writing.
-*/
-TIFF*
-TIFFFdOpen(int fd, const char* name, const char* mode)
-{
- TIFF* tif;
-
- tif = TIFFClientOpen(name, mode,
- (thandle_t) fd,
- _tiffReadProc, _tiffWriteProc, _tiffSeekProc, _tiffCloseProc,
- _tiffSizeProc, _tiffMapProc, _tiffUnmapProc);
- if (tif)
- tif->tif_fd = fd;
- return (tif);
-}
-
-/*
-* Open a TIFF file for read/writing.
-*/
-TIFF*
-TIFFOpen(const char* name, const char* mode)
-{
- static const char module[] = "TIFFOpen";
- int m;
- long fd;
-
- m = _TIFFgetMode(mode, module);
- if (m == -1)
- return ((TIFF*)0);
- if (m & O_TRUNC) {
- fd = Fcreate(name, 0);
- } else {
- fd = Fopen(name, m & O_ACCMODE);
- if (fd == AEFILNF && m & O_CREAT)
- fd = Fcreate(name, 0);
- }
- if (fd < 0)
- errno = (int)fd;
- if (fd < 0) {
- TIFFErrorExt(0, module, "%s: Cannot open", name);
- return ((TIFF*)0);
- }
- return (TIFFFdOpen(fd, name, mode));
-}
-
-#include <stdlib.h>
-
-tdata_t
-_TIFFmalloc(tsize_t s)
-{
- return (malloc((size_t) s));
-}
-
-void
-_TIFFfree(tdata_t p)
-{
- free(p);
-}
-
-tdata_t
-_TIFFrealloc(tdata_t p, tsize_t s)
-{
- return (realloc(p, (size_t) s));
-}
-
-void
-_TIFFmemset(tdata_t p, int v, size_t c)
-{
- memset(p, v, (size_t) c);
-}
-
-void
-_TIFFmemcpy(tdata_t d, const tdata_t s, size_t c)
-{
- memcpy(d, s, (size_t) c);
-}
-
-int
-_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
-{
- return (memcmp(p1, p2, (size_t) c));
-}
-
-static void
-atariWarningHandler(const char* module, const char* fmt, va_list ap)
-{
- if (module != NULL)
- fprintf(stderr, "%s: ", module);
- fprintf(stderr, "Warning, ");
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFwarningHandler = atariWarningHandler;
-
-static void
-atariErrorHandler(const char* module, const char* fmt, va_list ap)
-{
- if (module != NULL)
- fprintf(stderr, "%s: ", module);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFerrorHandler = atariErrorHandler;
diff --git a/src/3rdparty/libtiff/libtiff/tif_aux.c b/src/3rdparty/libtiff/libtiff/tif_aux.c
deleted file mode 100644
index 43d591b38a..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_aux.c
+++ /dev/null
@@ -1,275 +0,0 @@
-/* $Id: tif_aux.c,v 1.20 2006/06/08 14:24:13 dron Exp $ */
-
-/*
- * Copyright (c) 1991-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- *
- * Auxiliary Support Routines.
- */
-#include "tiffiop.h"
-#include "tif_predict.h"
-#include <math.h>
-
-tdata_t
-_TIFFCheckRealloc(TIFF* tif, tdata_t buffer,
- size_t nmemb, size_t elem_size, const char* what)
-{
- tdata_t cp = NULL;
- tsize_t bytes = nmemb * elem_size;
-
- /*
- * XXX: Check for integer overflow.
- */
- if (nmemb && elem_size && bytes / elem_size == nmemb)
- cp = _TIFFrealloc(buffer, bytes);
-
- if (cp == NULL)
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "No space %s", what);
-
- return cp;
-}
-
-tdata_t
-_TIFFCheckMalloc(TIFF* tif, size_t nmemb, size_t elem_size, const char* what)
-{
- return _TIFFCheckRealloc(tif, NULL, nmemb, elem_size, what);
-}
-
-static int
-TIFFDefaultTransferFunction(TIFFDirectory* td)
-{
- uint16 **tf = td->td_transferfunction;
- tsize_t i, n, nbytes;
-
- tf[0] = tf[1] = tf[2] = 0;
- if (td->td_bitspersample >= sizeof(tsize_t) * 8 - 2)
- return 0;
-
- n = 1<<td->td_bitspersample;
- nbytes = n * sizeof (uint16);
- if (!(tf[0] = (uint16 *)_TIFFmalloc(nbytes)))
- return 0;
- tf[0][0] = 0;
- for (i = 1; i < n; i++) {
- double t = (double)i/((double) n-1.);
- tf[0][i] = (uint16)floor(65535.*pow(t, 2.2) + .5);
- }
-
- if (td->td_samplesperpixel - td->td_extrasamples > 1) {
- if (!(tf[1] = (uint16 *)_TIFFmalloc(nbytes)))
- goto bad;
- _TIFFmemcpy(tf[1], tf[0], nbytes);
- if (!(tf[2] = (uint16 *)_TIFFmalloc(nbytes)))
- goto bad;
- _TIFFmemcpy(tf[2], tf[0], nbytes);
- }
- return 1;
-
-bad:
- if (tf[0])
- _TIFFfree(tf[0]);
- if (tf[1])
- _TIFFfree(tf[1]);
- if (tf[2])
- _TIFFfree(tf[2]);
- tf[0] = tf[1] = tf[2] = 0;
- return 0;
-}
-
-/*
- * Like TIFFGetField, but return any default
- * value if the tag is not present in the directory.
- *
- * NB: We use the value in the directory, rather than
- * explcit values so that defaults exist only one
- * place in the library -- in TIFFDefaultDirectory.
- */
-int
-TIFFVGetFieldDefaulted(TIFF* tif, ttag_t tag, va_list ap)
-{
- TIFFDirectory *td = &tif->tif_dir;
-
- if (TIFFVGetField(tif, tag, ap))
- return (1);
- switch (tag) {
- case TIFFTAG_SUBFILETYPE:
- *va_arg(ap, uint32 *) = td->td_subfiletype;
- return (1);
- case TIFFTAG_BITSPERSAMPLE:
- *va_arg(ap, uint16 *) = td->td_bitspersample;
- return (1);
- case TIFFTAG_THRESHHOLDING:
- *va_arg(ap, uint16 *) = td->td_threshholding;
- return (1);
- case TIFFTAG_FILLORDER:
- *va_arg(ap, uint16 *) = td->td_fillorder;
- return (1);
- case TIFFTAG_ORIENTATION:
- *va_arg(ap, uint16 *) = td->td_orientation;
- return (1);
- case TIFFTAG_SAMPLESPERPIXEL:
- *va_arg(ap, uint16 *) = td->td_samplesperpixel;
- return (1);
- case TIFFTAG_ROWSPERSTRIP:
- *va_arg(ap, uint32 *) = td->td_rowsperstrip;
- return (1);
- case TIFFTAG_MINSAMPLEVALUE:
- *va_arg(ap, uint16 *) = td->td_minsamplevalue;
- return (1);
- case TIFFTAG_MAXSAMPLEVALUE:
- *va_arg(ap, uint16 *) = td->td_maxsamplevalue;
- return (1);
- case TIFFTAG_PLANARCONFIG:
- *va_arg(ap, uint16 *) = td->td_planarconfig;
- return (1);
- case TIFFTAG_RESOLUTIONUNIT:
- *va_arg(ap, uint16 *) = td->td_resolutionunit;
- return (1);
- case TIFFTAG_PREDICTOR:
- {
- TIFFPredictorState* sp = (TIFFPredictorState*) tif->tif_data;
- *va_arg(ap, uint16*) = (uint16) sp->predictor;
- return 1;
- }
- case TIFFTAG_DOTRANGE:
- *va_arg(ap, uint16 *) = 0;
- *va_arg(ap, uint16 *) = (1<<td->td_bitspersample)-1;
- return (1);
- case TIFFTAG_INKSET:
- *va_arg(ap, uint16 *) = INKSET_CMYK;
- return 1;
- case TIFFTAG_NUMBEROFINKS:
- *va_arg(ap, uint16 *) = 4;
- return (1);
- case TIFFTAG_EXTRASAMPLES:
- *va_arg(ap, uint16 *) = td->td_extrasamples;
- *va_arg(ap, uint16 **) = td->td_sampleinfo;
- return (1);
- case TIFFTAG_MATTEING:
- *va_arg(ap, uint16 *) =
- (td->td_extrasamples == 1 &&
- td->td_sampleinfo[0] == EXTRASAMPLE_ASSOCALPHA);
- return (1);
- case TIFFTAG_TILEDEPTH:
- *va_arg(ap, uint32 *) = td->td_tiledepth;
- return (1);
- case TIFFTAG_DATATYPE:
- *va_arg(ap, uint16 *) = td->td_sampleformat-1;
- return (1);
- case TIFFTAG_SAMPLEFORMAT:
- *va_arg(ap, uint16 *) = td->td_sampleformat;
- return(1);
- case TIFFTAG_IMAGEDEPTH:
- *va_arg(ap, uint32 *) = td->td_imagedepth;
- return (1);
- case TIFFTAG_YCBCRCOEFFICIENTS:
- {
- /* defaults are from CCIR Recommendation 601-1 */
- static float ycbcrcoeffs[] = { 0.299f, 0.587f, 0.114f };
- *va_arg(ap, float **) = ycbcrcoeffs;
- return 1;
- }
- case TIFFTAG_YCBCRSUBSAMPLING:
- *va_arg(ap, uint16 *) = td->td_ycbcrsubsampling[0];
- *va_arg(ap, uint16 *) = td->td_ycbcrsubsampling[1];
- return (1);
- case TIFFTAG_YCBCRPOSITIONING:
- *va_arg(ap, uint16 *) = td->td_ycbcrpositioning;
- return (1);
- case TIFFTAG_WHITEPOINT:
- {
- static float whitepoint[2];
-
- /* TIFF 6.0 specification tells that it is no default
- value for the WhitePoint, but AdobePhotoshop TIFF
- Technical Note tells that it should be CIE D50. */
- whitepoint[0] = D50_X0 / (D50_X0 + D50_Y0 + D50_Z0);
- whitepoint[1] = D50_Y0 / (D50_X0 + D50_Y0 + D50_Z0);
- *va_arg(ap, float **) = whitepoint;
- return 1;
- }
- case TIFFTAG_TRANSFERFUNCTION:
- if (!td->td_transferfunction[0] &&
- !TIFFDefaultTransferFunction(td)) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "No space for \"TransferFunction\" tag");
- return (0);
- }
- *va_arg(ap, uint16 **) = td->td_transferfunction[0];
- if (td->td_samplesperpixel - td->td_extrasamples > 1) {
- *va_arg(ap, uint16 **) = td->td_transferfunction[1];
- *va_arg(ap, uint16 **) = td->td_transferfunction[2];
- }
- return (1);
- case TIFFTAG_REFERENCEBLACKWHITE:
- {
- int i;
- static float ycbcr_refblackwhite[] =
- { 0.0F, 255.0F, 128.0F, 255.0F, 128.0F, 255.0F };
- static float rgb_refblackwhite[6];
-
- for (i = 0; i < 3; i++) {
- rgb_refblackwhite[2 * i + 0] = 0.0F;
- rgb_refblackwhite[2 * i + 1] =
- (float)((1L<<td->td_bitspersample)-1L);
- }
-
- if (td->td_photometric == PHOTOMETRIC_YCBCR) {
- /*
- * YCbCr (Class Y) images must have the
- * ReferenceBlackWhite tag set. Fix the
- * broken images, which lacks that tag.
- */
- *va_arg(ap, float **) = ycbcr_refblackwhite;
- } else {
- /*
- * Assume RGB (Class R)
- */
- *va_arg(ap, float **) = rgb_refblackwhite;
- }
- return 1;
- }
- }
- return 0;
-}
-
-/*
- * Like TIFFGetField, but return any default
- * value if the tag is not present in the directory.
- */
-int
-TIFFGetFieldDefaulted(TIFF* tif, ttag_t tag, ...)
-{
- int ok;
- va_list ap;
-
- va_start(ap, tag);
- ok = TIFFVGetFieldDefaulted(tif, tag, ap);
- va_end(ap);
- return (ok);
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_close.c b/src/3rdparty/libtiff/libtiff/tif_close.c
deleted file mode 100644
index 3623277414..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_close.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* $Id: tif_close.c,v 1.10 2006/03/25 03:09:24 joris Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- */
-#include "tiffiop.h"
-
-/************************************************************************/
-/* TIFFCleanup() */
-/************************************************************************/
-
-/**
- * Auxiliary function to free the TIFF structure. Given structure will be
- * completetly freed, so you should save opened file handle and pointer
- * to the close procedure in external variables before calling
- * _TIFFCleanup(), if you will need these ones to close the file.
- *
- * @param tif A TIFF pointer.
- */
-
-void
-TIFFCleanup(TIFF* tif)
-{
- if (tif->tif_mode != O_RDONLY)
- /*
- * Flush buffered data and directory (if dirty).
- */
- TIFFFlush(tif);
- (*tif->tif_cleanup)(tif);
- TIFFFreeDirectory(tif);
-
- if (tif->tif_dirlist)
- _TIFFfree(tif->tif_dirlist);
-
- /* Clean up client info links */
- while( tif->tif_clientinfo )
- {
- TIFFClientInfoLink *link = tif->tif_clientinfo;
-
- tif->tif_clientinfo = link->next;
- _TIFFfree( link->name );
- _TIFFfree( link );
- }
-
- if (tif->tif_rawdata && (tif->tif_flags&TIFF_MYBUFFER))
- _TIFFfree(tif->tif_rawdata);
- if (isMapped(tif))
- TIFFUnmapFileContents(tif, tif->tif_base, tif->tif_size);
-
- /* Clean up custom fields */
- if (tif->tif_nfields > 0)
- {
- size_t i;
-
- for (i = 0; i < tif->tif_nfields; i++)
- {
- TIFFFieldInfo *fld = tif->tif_fieldinfo[i];
- if (fld->field_bit == FIELD_CUSTOM &&
- strncmp("Tag ", fld->field_name, 4) == 0)
- {
- _TIFFfree(fld->field_name);
- _TIFFfree(fld);
- }
- }
-
- _TIFFfree(tif->tif_fieldinfo);
- }
-
- _TIFFfree(tif);
-}
-
-/************************************************************************/
-/* TIFFClose() */
-/************************************************************************/
-
-/**
- * Close a previously opened TIFF file.
- *
- * TIFFClose closes a file that was previously opened with TIFFOpen().
- * Any buffered data are flushed to the file, including the contents of
- * the current directory (if modified); and all resources are reclaimed.
- *
- * @param tif A TIFF pointer.
- */
-
-void
-TIFFClose(TIFF* tif)
-{
- TIFFCloseProc closeproc = tif->tif_closeproc;
- thandle_t fd = tif->tif_clientdata;
-
- TIFFCleanup(tif);
- (void) (*closeproc)(fd);
-}
-
diff --git a/src/3rdparty/libtiff/libtiff/tif_codec.c b/src/3rdparty/libtiff/libtiff/tif_codec.c
deleted file mode 100644
index 02fb839b2f..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_codec.c
+++ /dev/null
@@ -1,153 +0,0 @@
-/* $Id: tif_codec.c,v 1.10.2.1 2008-12-18 19:50:41 fwarmerdam Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library
- *
- * Builtin Compression Scheme Configuration Support.
- */
-#include "tiffiop.h"
-
-static int NotConfigured(TIFF*, int);
-
-#ifndef LZW_SUPPORT
-#define TIFFInitLZW NotConfigured
-#endif
-#ifndef PACKBITS_SUPPORT
-#define TIFFInitPackBits NotConfigured
-#endif
-#ifndef THUNDER_SUPPORT
-#define TIFFInitThunderScan NotConfigured
-#endif
-#ifndef NEXT_SUPPORT
-#define TIFFInitNeXT NotConfigured
-#endif
-#ifndef JPEG_SUPPORT
-#define TIFFInitJPEG NotConfigured
-#endif
-#ifndef OJPEG_SUPPORT
-#define TIFFInitOJPEG NotConfigured
-#endif
-#ifndef CCITT_SUPPORT
-#define TIFFInitCCITTRLE NotConfigured
-#define TIFFInitCCITTRLEW NotConfigured
-#define TIFFInitCCITTFax3 NotConfigured
-#define TIFFInitCCITTFax4 NotConfigured
-#endif
-#ifndef JBIG_SUPPORT
-#define TIFFInitJBIG NotConfigured
-#endif
-#ifndef ZIP_SUPPORT
-#define TIFFInitZIP NotConfigured
-#endif
-#ifndef PIXARLOG_SUPPORT
-#define TIFFInitPixarLog NotConfigured
-#endif
-#ifndef LOGLUV_SUPPORT
-#define TIFFInitSGILog NotConfigured
-#endif
-
-/*
- * Compression schemes statically built into the library.
- */
-#ifdef VMS
-const TIFFCodec _TIFFBuiltinCODECS[] = {
-#else
-TIFFCodec _TIFFBuiltinCODECS[] = {
-#endif
- { "None", COMPRESSION_NONE, TIFFInitDumpMode },
- { "LZW", COMPRESSION_LZW, TIFFInitLZW },
- { "PackBits", COMPRESSION_PACKBITS, TIFFInitPackBits },
- { "ThunderScan", COMPRESSION_THUNDERSCAN,TIFFInitThunderScan },
- { "NeXT", COMPRESSION_NEXT, TIFFInitNeXT },
- { "JPEG", COMPRESSION_JPEG, TIFFInitJPEG },
- { "Old-style JPEG", COMPRESSION_OJPEG, TIFFInitOJPEG },
- { "CCITT RLE", COMPRESSION_CCITTRLE, TIFFInitCCITTRLE },
- { "CCITT RLE/W", COMPRESSION_CCITTRLEW, TIFFInitCCITTRLEW },
- { "CCITT Group 3", COMPRESSION_CCITTFAX3, TIFFInitCCITTFax3 },
- { "CCITT Group 4", COMPRESSION_CCITTFAX4, TIFFInitCCITTFax4 },
- { "ISO JBIG", COMPRESSION_JBIG, TIFFInitJBIG },
- { "Deflate", COMPRESSION_DEFLATE, TIFFInitZIP },
- { "AdobeDeflate", COMPRESSION_ADOBE_DEFLATE , TIFFInitZIP },
- { "PixarLog", COMPRESSION_PIXARLOG, TIFFInitPixarLog },
- { "SGILog", COMPRESSION_SGILOG, TIFFInitSGILog },
- { "SGILog24", COMPRESSION_SGILOG24, TIFFInitSGILog },
- { NULL, 0, NULL }
-};
-
-static int
-_notConfigured(TIFF* tif)
-{
- const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
- char compression_code[20];
-
- sprintf( compression_code, "%d", tif->tif_dir.td_compression );
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%s compression support is not configured",
- c ? c->name : compression_code );
- return (0);
-}
-
-static int
-NotConfigured(TIFF* tif, int scheme)
-{
- (void) scheme;
-
- tif->tif_decodestatus = FALSE;
- tif->tif_setupdecode = _notConfigured;
- tif->tif_encodestatus = FALSE;
- tif->tif_setupencode = _notConfigured;
- return (1);
-}
-
-/************************************************************************/
-/* TIFFIsCODECConfigured() */
-/************************************************************************/
-
-/**
- * Check whether we have working codec for the specific coding scheme.
- *
- * @return returns 1 if the codec is configured and working. Otherwise
- * 0 will be returned.
- */
-
-int
-TIFFIsCODECConfigured(uint16 scheme)
-{
- const TIFFCodec* codec = TIFFFindCODEC(scheme);
-
- if(codec == NULL) {
- return 0;
- }
- if(codec->init == NULL) {
- return 0;
- }
- if(codec->init != NotConfigured){
- return 1;
- }
- return 0;
-}
-
diff --git a/src/3rdparty/libtiff/libtiff/tif_color.c b/src/3rdparty/libtiff/libtiff/tif_color.c
deleted file mode 100644
index 0f484aa7cc..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_color.c
+++ /dev/null
@@ -1,275 +0,0 @@
-/* $Id: tif_color.c,v 1.12 2006/02/09 15:42:20 dron Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * CIE L*a*b* to CIE XYZ and CIE XYZ to RGB conversion routines are taken
- * from the VIPS library (http://www.vips.ecs.soton.ac.uk) with
- * the permission of John Cupitt, the VIPS author.
- */
-
-/*
- * TIFF Library.
- *
- * Color space conversion routines.
- */
-
-#include "tiffiop.h"
-#include <math.h>
-
-/*
- * Convert color value from the CIE L*a*b* 1976 space to CIE XYZ.
- */
-void
-TIFFCIELabToXYZ(TIFFCIELabToRGB *cielab, uint32 l, int32 a, int32 b,
- float *X, float *Y, float *Z)
-{
- float L = (float)l * 100.0F / 255.0F;
- float cby, tmp;
-
- if( L < 8.856F ) {
- *Y = (L * cielab->Y0) / 903.292F;
- cby = 7.787F * (*Y / cielab->Y0) + 16.0F / 116.0F;
- } else {
- cby = (L + 16.0F) / 116.0F;
- *Y = cielab->Y0 * cby * cby * cby;
- }
-
- tmp = (float)a / 500.0F + cby;
- if( tmp < 0.2069F )
- *X = cielab->X0 * (tmp - 0.13793F) / 7.787F;
- else
- *X = cielab->X0 * tmp * tmp * tmp;
-
- tmp = cby - (float)b / 200.0F;
- if( tmp < 0.2069F )
- *Z = cielab->Z0 * (tmp - 0.13793F) / 7.787F;
- else
- *Z = cielab->Z0 * tmp * tmp * tmp;
-}
-
-#define RINT(R) ((uint32)((R)>0?((R)+0.5):((R)-0.5)))
-/*
- * Convert color value from the XYZ space to RGB.
- */
-void
-TIFFXYZToRGB(TIFFCIELabToRGB *cielab, float X, float Y, float Z,
- uint32 *r, uint32 *g, uint32 *b)
-{
- int i;
- float Yr, Yg, Yb;
- float *matrix = &cielab->display.d_mat[0][0];
-
- /* Multiply through the matrix to get luminosity values. */
- Yr = matrix[0] * X + matrix[1] * Y + matrix[2] * Z;
- Yg = matrix[3] * X + matrix[4] * Y + matrix[5] * Z;
- Yb = matrix[6] * X + matrix[7] * Y + matrix[8] * Z;
-
- /* Clip input */
- Yr = TIFFmax(Yr, cielab->display.d_Y0R);
- Yg = TIFFmax(Yg, cielab->display.d_Y0G);
- Yb = TIFFmax(Yb, cielab->display.d_Y0B);
-
- /* Avoid overflow in case of wrong input values */
- Yr = TIFFmin(Yr, cielab->display.d_YCR);
- Yg = TIFFmin(Yg, cielab->display.d_YCG);
- Yb = TIFFmin(Yb, cielab->display.d_YCB);
-
- /* Turn luminosity to colour value. */
- i = (int)((Yr - cielab->display.d_Y0R) / cielab->rstep);
- i = TIFFmin(cielab->range, i);
- *r = RINT(cielab->Yr2r[i]);
-
- i = (int)((Yg - cielab->display.d_Y0G) / cielab->gstep);
- i = TIFFmin(cielab->range, i);
- *g = RINT(cielab->Yg2g[i]);
-
- i = (int)((Yb - cielab->display.d_Y0B) / cielab->bstep);
- i = TIFFmin(cielab->range, i);
- *b = RINT(cielab->Yb2b[i]);
-
- /* Clip output. */
- *r = TIFFmin(*r, cielab->display.d_Vrwr);
- *g = TIFFmin(*g, cielab->display.d_Vrwg);
- *b = TIFFmin(*b, cielab->display.d_Vrwb);
-}
-#undef RINT
-
-/*
- * Allocate conversion state structures and make look_up tables for
- * the Yr,Yb,Yg <=> r,g,b conversions.
- */
-int
-TIFFCIELabToRGBInit(TIFFCIELabToRGB* cielab,
- TIFFDisplay *display, float *refWhite)
-{
- int i;
- double gamma;
-
- cielab->range = CIELABTORGB_TABLE_RANGE;
-
- _TIFFmemcpy(&cielab->display, display, sizeof(TIFFDisplay));
-
- /* Red */
- gamma = 1.0 / cielab->display.d_gammaR ;
- cielab->rstep =
- (cielab->display.d_YCR - cielab->display.d_Y0R) / cielab->range;
- for(i = 0; i <= cielab->range; i++) {
- cielab->Yr2r[i] = cielab->display.d_Vrwr
- * ((float)pow((double)i / cielab->range, gamma));
- }
-
- /* Green */
- gamma = 1.0 / cielab->display.d_gammaG ;
- cielab->gstep =
- (cielab->display.d_YCR - cielab->display.d_Y0R) / cielab->range;
- for(i = 0; i <= cielab->range; i++) {
- cielab->Yg2g[i] = cielab->display.d_Vrwg
- * ((float)pow((double)i / cielab->range, gamma));
- }
-
- /* Blue */
- gamma = 1.0 / cielab->display.d_gammaB ;
- cielab->bstep =
- (cielab->display.d_YCR - cielab->display.d_Y0R) / cielab->range;
- for(i = 0; i <= cielab->range; i++) {
- cielab->Yb2b[i] = cielab->display.d_Vrwb
- * ((float)pow((double)i / cielab->range, gamma));
- }
-
- /* Init reference white point */
- cielab->X0 = refWhite[0];
- cielab->Y0 = refWhite[1];
- cielab->Z0 = refWhite[2];
-
- return 0;
-}
-
-/*
- * Convert color value from the YCbCr space to CIE XYZ.
- * The colorspace conversion algorithm comes from the IJG v5a code;
- * see below for more information on how it works.
- */
-#define SHIFT 16
-#define FIX(x) ((int32)((x) * (1L<<SHIFT) + 0.5))
-#define ONE_HALF ((int32)(1<<(SHIFT-1)))
-#define Code2V(c, RB, RW, CR) ((((c)-(int32)(RB))*(float)(CR))/(float)(((RW)-(RB)) ? ((RW)-(RB)) : 1))
-#define CLAMP(f,min,max) ((f)<(min)?(min):(f)>(max)?(max):(f))
-#define HICLAMP(f,max) ((f)>(max)?(max):(f))
-
-void
-TIFFYCbCrtoRGB(TIFFYCbCrToRGB *ycbcr, uint32 Y, int32 Cb, int32 Cr,
- uint32 *r, uint32 *g, uint32 *b)
-{
- /* XXX: Only 8-bit YCbCr input supported for now */
- Y = HICLAMP(Y, 255), Cb = CLAMP(Cb, 0, 255), Cr = CLAMP(Cr, 0, 255);
-
- *r = ycbcr->clamptab[ycbcr->Y_tab[Y] + ycbcr->Cr_r_tab[Cr]];
- *g = ycbcr->clamptab[ycbcr->Y_tab[Y]
- + (int)((ycbcr->Cb_g_tab[Cb] + ycbcr->Cr_g_tab[Cr]) >> SHIFT)];
- *b = ycbcr->clamptab[ycbcr->Y_tab[Y] + ycbcr->Cb_b_tab[Cb]];
-}
-
-/*
- * Initialize the YCbCr->RGB conversion tables. The conversion
- * is done according to the 6.0 spec:
- *
- * R = Y + Cr*(2 - 2*LumaRed)
- * B = Y + Cb*(2 - 2*LumaBlue)
- * G = Y
- * - LumaBlue*Cb*(2-2*LumaBlue)/LumaGreen
- * - LumaRed*Cr*(2-2*LumaRed)/LumaGreen
- *
- * To avoid floating point arithmetic the fractional constants that
- * come out of the equations are represented as fixed point values
- * in the range 0...2^16. We also eliminate multiplications by
- * pre-calculating possible values indexed by Cb and Cr (this code
- * assumes conversion is being done for 8-bit samples).
- */
-int
-TIFFYCbCrToRGBInit(TIFFYCbCrToRGB* ycbcr, float *luma, float *refBlackWhite)
-{
- TIFFRGBValue* clamptab;
- int i;
-
-#define LumaRed luma[0]
-#define LumaGreen luma[1]
-#define LumaBlue luma[2]
-
- clamptab = (TIFFRGBValue*)(
- (tidata_t) ycbcr+TIFFroundup(sizeof (TIFFYCbCrToRGB), sizeof (long)));
- _TIFFmemset(clamptab, 0, 256); /* v < 0 => 0 */
- ycbcr->clamptab = (clamptab += 256);
- for (i = 0; i < 256; i++)
- clamptab[i] = (TIFFRGBValue) i;
- _TIFFmemset(clamptab+256, 255, 2*256); /* v > 255 => 255 */
- ycbcr->Cr_r_tab = (int*) (clamptab + 3*256);
- ycbcr->Cb_b_tab = ycbcr->Cr_r_tab + 256;
- ycbcr->Cr_g_tab = (int32*) (ycbcr->Cb_b_tab + 256);
- ycbcr->Cb_g_tab = ycbcr->Cr_g_tab + 256;
- ycbcr->Y_tab = ycbcr->Cb_g_tab + 256;
-
- { float f1 = 2-2*LumaRed; int32 D1 = FIX(f1);
- float f2 = LumaRed*f1/LumaGreen; int32 D2 = -FIX(f2);
- float f3 = 2-2*LumaBlue; int32 D3 = FIX(f3);
- float f4 = LumaBlue*f3/LumaGreen; int32 D4 = -FIX(f4);
- int x;
-
-#undef LumaBlue
-#undef LumaGreen
-#undef LumaRed
-
- /*
- * i is the actual input pixel value in the range 0..255
- * Cb and Cr values are in the range -128..127 (actually
- * they are in a range defined by the ReferenceBlackWhite
- * tag) so there is some range shifting to do here when
- * constructing tables indexed by the raw pixel data.
- */
- for (i = 0, x = -128; i < 256; i++, x++) {
- int32 Cr = (int32)Code2V(x, refBlackWhite[4] - 128.0F,
- refBlackWhite[5] - 128.0F, 127);
- int32 Cb = (int32)Code2V(x, refBlackWhite[2] - 128.0F,
- refBlackWhite[3] - 128.0F, 127);
-
- ycbcr->Cr_r_tab[i] = (int32)((D1*Cr + ONE_HALF)>>SHIFT);
- ycbcr->Cb_b_tab[i] = (int32)((D3*Cb + ONE_HALF)>>SHIFT);
- ycbcr->Cr_g_tab[i] = D2*Cr;
- ycbcr->Cb_g_tab[i] = D4*Cb + ONE_HALF;
- ycbcr->Y_tab[i] =
- (int32)Code2V(x + 128, refBlackWhite[0], refBlackWhite[1], 255);
- }
- }
-
- return 0;
-}
-#undef HICLAMP
-#undef CLAMP
-#undef Code2V
-#undef SHIFT
-#undef ONE_HALF
-#undef FIX
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_compress.c b/src/3rdparty/libtiff/libtiff/tif_compress.c
deleted file mode 100644
index 6c3f322cf7..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_compress.c
+++ /dev/null
@@ -1,288 +0,0 @@
-/* $Id: tif_compress.c,v 1.13 2007/02/24 15:03:50 dron Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library
- *
- * Compression Scheme Configuration Support.
- */
-#include "tiffiop.h"
-
-static int
-TIFFNoEncode(TIFF* tif, const char* method)
-{
- const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
-
- if (c) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%s %s encoding is not implemented",
- c->name, method);
- } else {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Compression scheme %u %s encoding is not implemented",
- tif->tif_dir.td_compression, method);
- }
- return (-1);
-}
-
-int
-_TIFFNoRowEncode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
-{
- (void) pp; (void) cc; (void) s;
- return (TIFFNoEncode(tif, "scanline"));
-}
-
-int
-_TIFFNoStripEncode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
-{
- (void) pp; (void) cc; (void) s;
- return (TIFFNoEncode(tif, "strip"));
-}
-
-int
-_TIFFNoTileEncode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
-{
- (void) pp; (void) cc; (void) s;
- return (TIFFNoEncode(tif, "tile"));
-}
-
-static int
-TIFFNoDecode(TIFF* tif, const char* method)
-{
- const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
-
- if (c)
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%s %s decoding is not implemented",
- c->name, method);
- else
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Compression scheme %u %s decoding is not implemented",
- tif->tif_dir.td_compression, method);
- return (-1);
-}
-
-int
-_TIFFNoRowDecode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
-{
- (void) pp; (void) cc; (void) s;
- return (TIFFNoDecode(tif, "scanline"));
-}
-
-int
-_TIFFNoStripDecode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
-{
- (void) pp; (void) cc; (void) s;
- return (TIFFNoDecode(tif, "strip"));
-}
-
-int
-_TIFFNoTileDecode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
-{
- (void) pp; (void) cc; (void) s;
- return (TIFFNoDecode(tif, "tile"));
-}
-
-int
-_TIFFNoSeek(TIFF* tif, uint32 off)
-{
- (void) off;
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Compression algorithm does not support random access");
- return (0);
-}
-
-int
-_TIFFNoPreCode(TIFF* tif, tsample_t s)
-{
- (void) tif; (void) s;
- return (1);
-}
-
-static int _TIFFtrue(TIFF* tif) { (void) tif; return (1); }
-static void _TIFFvoid(TIFF* tif) { (void) tif; }
-
-void
-_TIFFSetDefaultCompressionState(TIFF* tif)
-{
- tif->tif_decodestatus = TRUE;
- tif->tif_setupdecode = _TIFFtrue;
- tif->tif_predecode = _TIFFNoPreCode;
- tif->tif_decoderow = _TIFFNoRowDecode;
- tif->tif_decodestrip = _TIFFNoStripDecode;
- tif->tif_decodetile = _TIFFNoTileDecode;
- tif->tif_encodestatus = TRUE;
- tif->tif_setupencode = _TIFFtrue;
- tif->tif_preencode = _TIFFNoPreCode;
- tif->tif_postencode = _TIFFtrue;
- tif->tif_encoderow = _TIFFNoRowEncode;
- tif->tif_encodestrip = _TIFFNoStripEncode;
- tif->tif_encodetile = _TIFFNoTileEncode;
- tif->tif_close = _TIFFvoid;
- tif->tif_seek = _TIFFNoSeek;
- tif->tif_cleanup = _TIFFvoid;
- tif->tif_defstripsize = _TIFFDefaultStripSize;
- tif->tif_deftilesize = _TIFFDefaultTileSize;
- tif->tif_flags &= ~(TIFF_NOBITREV|TIFF_NOREADRAW);
-}
-
-int
-TIFFSetCompressionScheme(TIFF* tif, int scheme)
-{
- const TIFFCodec *c = TIFFFindCODEC((uint16) scheme);
-
- _TIFFSetDefaultCompressionState(tif);
- /*
- * Don't treat an unknown compression scheme as an error.
- * This permits applications to open files with data that
- * the library does not have builtin support for, but which
- * may still be meaningful.
- */
- return (c ? (*c->init)(tif, scheme) : 1);
-}
-
-/*
- * Other compression schemes may be registered. Registered
- * schemes can also override the builtin versions provided
- * by this library.
- */
-typedef struct _codec {
- struct _codec* next;
- TIFFCodec* info;
-} codec_t;
-static codec_t* registeredCODECS = NULL;
-
-const TIFFCodec*
-TIFFFindCODEC(uint16 scheme)
-{
- const TIFFCodec* c;
- codec_t* cd;
-
- for (cd = registeredCODECS; cd; cd = cd->next)
- if (cd->info->scheme == scheme)
- return ((const TIFFCodec*) cd->info);
- for (c = _TIFFBuiltinCODECS; c->name; c++)
- if (c->scheme == scheme)
- return (c);
- return ((const TIFFCodec*) 0);
-}
-
-TIFFCodec*
-TIFFRegisterCODEC(uint16 scheme, const char* name, TIFFInitMethod init)
-{
- codec_t* cd = (codec_t*)
- _TIFFmalloc(sizeof (codec_t) + sizeof (TIFFCodec) + strlen(name)+1);
-
- if (cd != NULL) {
- cd->info = (TIFFCodec*) ((tidata_t) cd + sizeof (codec_t));
- cd->info->name = (char*)
- ((tidata_t) cd->info + sizeof (TIFFCodec));
- strcpy(cd->info->name, name);
- cd->info->scheme = scheme;
- cd->info->init = init;
- cd->next = registeredCODECS;
- registeredCODECS = cd;
- } else {
- TIFFErrorExt(0, "TIFFRegisterCODEC",
- "No space to register compression scheme %s", name);
- return NULL;
- }
- return (cd->info);
-}
-
-void
-TIFFUnRegisterCODEC(TIFFCodec* c)
-{
- codec_t* cd;
- codec_t** pcd;
-
- for (pcd = &registeredCODECS; (cd = *pcd); pcd = &cd->next)
- if (cd->info == c) {
- *pcd = cd->next;
- _TIFFfree(cd);
- return;
- }
- TIFFErrorExt(0, "TIFFUnRegisterCODEC",
- "Cannot remove compression scheme %s; not registered", c->name);
-}
-
-/************************************************************************/
-/* TIFFGetConfisuredCODECs() */
-/************************************************************************/
-
-/**
- * Get list of configured codecs, both built-in and registered by user.
- * Caller is responsible to free this structure.
- *
- * @return returns array of TIFFCodec records (the last record should be NULL)
- * or NULL if function failed.
- */
-
-TIFFCodec*
-TIFFGetConfiguredCODECs()
-{
- int i = 1;
- codec_t *cd;
- const TIFFCodec *c;
- TIFFCodec *codecs = NULL, *new_codecs;
-
- for (cd = registeredCODECS; cd; cd = cd->next) {
- new_codecs = (TIFFCodec *)
- _TIFFrealloc(codecs, i * sizeof(TIFFCodec));
- if (!new_codecs) {
- _TIFFfree (codecs);
- return NULL;
- }
- codecs = new_codecs;
- _TIFFmemcpy(codecs + i - 1, cd, sizeof(TIFFCodec));
- i++;
- }
- for (c = _TIFFBuiltinCODECS; c->name; c++) {
- if (TIFFIsCODECConfigured(c->scheme)) {
- new_codecs = (TIFFCodec *)
- _TIFFrealloc(codecs, i * sizeof(TIFFCodec));
- if (!new_codecs) {
- _TIFFfree (codecs);
- return NULL;
- }
- codecs = new_codecs;
- _TIFFmemcpy(codecs + i - 1, (const tdata_t)c, sizeof(TIFFCodec));
- i++;
- }
- }
-
- new_codecs = (TIFFCodec *) _TIFFrealloc(codecs, i * sizeof(TIFFCodec));
- if (!new_codecs) {
- _TIFFfree (codecs);
- return NULL;
- }
- codecs = new_codecs;
- _TIFFmemset(codecs + i - 1, 0, sizeof(TIFFCodec));
-
- return codecs;
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_config.h b/src/3rdparty/libtiff/libtiff/tif_config.h
deleted file mode 100644
index f851384379..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_config.h
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- Configuration defines for Qt.
-*/
-
-#include <qglobal.h>
-#if defined(Q_OS_WINCE)
-# include <qfunctions_wince.h>
-#endif
-
-/* Define if building universal (internal helper macro) */
-/* #undef AC_APPLE_UNIVERSAL_BUILD */
-
-/* Support CCITT Group 3 & 4 algorithms */
-#define CCITT_SUPPORT 1
-
-/* Pick up YCbCr subsampling info from the JPEG data stream to support files
- lacking the tag (default enabled). */
-#define CHECK_JPEG_YCBCR_SUBSAMPLING 1
-
-/* Support C++ stream API (requires C++ compiler) */
-/* #undef CXX_SUPPORT */
-
-/* Treat extra sample as alpha (default enabled). The RGBA interface will
- treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many
- packages produce RGBA files but don't mark the alpha properly. */
-#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1
-
-/* Use the Apple OpenGL framework. */
-/* #undef HAVE_APPLE_OPENGL_FRAMEWORK */
-
-/* Define to 1 if you have the <assert.h> header file. */
-#define HAVE_ASSERT_H 1
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-/* #undef HAVE_DLFCN_H */
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#if !defined(Q_OS_WINCE)
-#define HAVE_FCNTL_H 1
-#endif
-
-/* Define to 1 if you have the `floor' function. */
-/* #undef HAVE_FLOOR */
-
-/* Define to 1 if you have the `getopt' function. */
-/* #undef HAVE_GETOPT */
-
-/* Define as 0 or 1 according to the floating point format suported by the
- machine */
-#define HAVE_IEEEFP 1
-
-/* Define to 1 if the system has the type `int16'. */
-#ifdef Q_OS_AIX
-#define HAVE_INT16 1
-#endif
-
-/* Define to 1 if the system has the type `int32'. */
-#ifdef Q_OS_AIX
-#define HAVE_INT32 1
-#endif
-
-/* Define to 1 if the system has the type `int8'. */
-#ifdef Q_OS_AIX
-#define HAVE_INT8 1
-#endif
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-/* #undef HAVE_INTTYPES_H */
-
-/* Define to 1 if you have the <io.h> header file. */
-/* #undef HAVE_IO_H */
-
-/* Define to 1 if you have the `isascii' function. */
-/* #undef HAVE_ISASCII */
-
-/* Define to 1 if you have the `jbg_newlen' function. */
-/* #undef HAVE_JBG_NEWLEN */
-
-/* Define to 1 if you have the `lfind' function. */
-/* #undef HAVE_LFIND */
-
-/* Define to 1 if you have the `c' library (-lc). */
-/* #undef HAVE_LIBC */
-
-/* Define to 1 if you have the `m' library (-lm). */
-/* #undef HAVE_LIBM */
-
-/* Define to 1 if you have the <limits.h> header file. */
-/* #undef HAVE_LIMITS_H */
-
-/* Define to 1 if you have the <malloc.h> header file. */
-/* #undef HAVE_MALLOC_H */
-
-/* Define to 1 if you have the `memmove' function. */
-/* #undef HAVE_MEMMOVE */
-
-/* Define to 1 if you have the <memory.h> header file. */
-/* #undef HAVE_MEMORY_H */
-
-/* Define to 1 if you have the `memset' function. */
-/* #undef HAVE_MEMSET */
-
-/* Define to 1 if you have the `mmap' function. */
-/* #undef HAVE_MMAP */
-
-/* Define to 1 if you have the `pow' function. */
-/* #undef HAVE_POW */
-
-/* Define if you have POSIX threads libraries and header files. */
-/* #undef HAVE_PTHREAD */
-
-/* Define to 1 if you have the <search.h> header file. */
-#if !defined(Q_OS_WINCE) && !defined(Q_OS_SYMBIAN) && !defined(Q_OS_VXWORKS)
-#define HAVE_SEARCH_H 1
-#endif
-
-/* Define to 1 if you have the `setmode' function. */
-/* #undef HAVE_SETMODE */
-
-/* Define to 1 if you have the `sqrt' function. */
-/* #undef HAVE_SQRT */
-
-/* Define to 1 if you have the <stdint.h> header file. */
-/* #undef HAVE_STDINT_H */
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-/* #undef HAVE_STDLIB_H */
-
-/* Define to 1 if you have the `strcasecmp' function. */
-/* #undef HAVE_STRCASECMP */
-
-/* Define to 1 if you have the `strchr' function. */
-/* #undef HAVE_STRCHR */
-
-/* Define to 1 if you have the <strings.h> header file. */
-/* #undef HAVE_STRINGS_H */
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the `strrchr' function. */
-/* #undef HAVE_STRRCHR */
-
-/* Define to 1 if you have the `strstr' function. */
-/* #undef HAVE_STRSTR */
-
-/* Define to 1 if you have the `strtol' function. */
-/* #undef HAVE_STRTOL */
-
-/* Define to 1 if you have the `strtoul' function. */
-/* #undef HAVE_STRTOUL */
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-/* #undef HAVE_SYS_STAT_H */
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-/* #undef HAVE_SYS_TIME_H */
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#if !defined(Q_OS_WIN)
-#define HAVE_UNISTD_H 1
-#endif
-
-/* Define to 1 if you have the <windows.h> header file. */
-/* #undef HAVE_WINDOWS_H */
-
-/* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian
- (Intel) */
-#if (Q_BYTE_ORDER == Q_BIG_ENDIAN)
-#define HOST_BIGENDIAN 1
-#else
-#define HOST_BIGENDIAN 0
-#endif
-
-/* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */
-#define HOST_FILLORDER FILLORDER_LSB2MSB
-
-/* Support ISO JBIG compression (requires JBIG-KIT library) */
-/* #undef JBIG_SUPPORT */
-
-/* Support JPEG compression (requires IJG JPEG library) */
-/* #undef JPEG_SUPPORT */
-
-/* Support LogLuv high dynamic range encoding */
-#define LOGLUV_SUPPORT 1
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
-/* #undef LT_OBJDIR */
-
-/* Support LZW algorithm */
-#define LZW_SUPPORT 1
-
-/* Support Microsoft Document Imaging format */
-#define MDI_SUPPORT 1
-
-/* Support NeXT 2-bit RLE algorithm */
-#define NEXT_SUPPORT 1
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-/* #undef NO_MINUS_C_MINUS_O */
-
-/* Support Old JPEG compresson (read-only) */
-/* #undef OJPEG_SUPPORT */
-
-/* Name of package */
-/* #undef PACKAGE */
-
-/* Define to the address where bug reports for this package should be sent. */
-/* #undef PACKAGE_BUGREPORT */
-
-/* Define to the full name of this package. */
-/* #undef PACKAGE_NAME */
-
-/* Define to the full name and version of this package. */
-/* #undef PACKAGE_STRING */
-
-/* Define to the one symbol short name of this package. */
-/* #undef PACKAGE_TARNAME */
-
-/* Define to the home page for this package. */
-/* #undef PACKAGE_URL */
-
-/* Define to the version of this package. */
-#define PACKAGE_VERSION "3.9.2"
-
-/* Support Macintosh PackBits algorithm */
-#define PACKBITS_SUPPORT 1
-
-/* Support Pixar log-format algorithm (requires Zlib) */
-#define PIXARLOG_SUPPORT 1
-
-/* Define to necessary symbol if this constant uses a non-standard name on
- your system. */
-/* #undef PTHREAD_CREATE_JOINABLE */
-
-/* The size of `int', as computed by sizeof. */
-#define SIZEOF_INT 4
-
-/* The size of `long', as computed by sizeof. */
-#if (QT_POINTER_SIZE == 8) && !defined(Q_OS_WIN64)
-#define SIZEOF_LONG 8
-#else
-#define SIZEOF_LONG 4
-#endif
-
-/* The size of `signed long', as computed by sizeof. */
-/* #undef SIZEOF_SIGNED_LONG */
-
-/* The size of `signed long long', as computed by sizeof. */
-/* #undef SIZEOF_SIGNED_LONG_LONG */
-
-/* The size of `unsigned long', as computed by sizeof. */
-/* #undef SIZEOF_UNSIGNED_LONG */
-
-/* The size of `unsigned long long', as computed by sizeof. */
-/* #undef SIZEOF_UNSIGNED_LONG_LONG */
-
-/* Define to 1 if you have the ANSI C header files. */
-/* #undef STDC_HEADERS */
-
-/* Support strip chopping (whether or not to convert single-strip uncompressed
- images to mutiple strips of specified size to reduce memory usage) */
-#define STRIPCHOP_DEFAULT TIFF_STRIPCHOP
-
-/* Default size of the strip in bytes (when strip chopping enabled) */
-/* #undef STRIP_SIZE_DEFAULT */
-
-/* Enable SubIFD tag (330) support */
-#define SUBIFD_SUPPORT 1
-
-/* Support ThunderScan 4-bit RLE algorithm */
-#define THUNDER_SUPPORT 1
-
-/* Signed 64-bit type formatter */
-/* #undef TIFF_INT64_FORMAT */
-
-/* Signed 64-bit type */
-#define TIFF_INT64_T qint64
-
-/* Unsigned 64-bit type formatter */
-/* #undef TIFF_UINT64_FORMAT */
-
-/* Unsigned 64-bit type */
-#define TIFF_UINT64_T quint64
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-/* #undef TIME_WITH_SYS_TIME */
-
-/* Define to 1 if your <sys/time.h> declares `struct tm'. */
-/* #undef TM_IN_SYS_TIME */
-
-/* Version number of package */
-/* #undef VERSION */
-
-/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
- significant byte first (like Motorola and SPARC, unlike Intel). */
-#if (Q_BYTE_ORDER == Q_BIG_ENDIAN)
-#define WORDS_BIGENDIAN 1
-#endif
-
-/* Define to 1 if the X Window System is missing or not being used. */
-/* #undef X_DISPLAY_MISSING */
-
-/* Support Deflate compression */
-#define ZIP_SUPPORT 1
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-/* #undef _FILE_OFFSET_BITS */
-
-/* Define for large files, on AIX-style hosts. */
-/* #undef _LARGE_FILES */
-
-/* Define to empty if `const' does not conform to ANSI C. */
-/* #undef const */
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
- calls it, or to nothing if 'inline' is not supported under any name. */
-#ifndef Q_OS_SYMBIAN
-#ifndef __cplusplus
-#undef inline
-#define inline
-#endif
-#endif
-
-/* Define to `long int' if <sys/types.h> does not define. */
-/* #undef off_t */
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-/* #undef size_t */
-
-#ifdef Q_OS_WIN
-#define TIF_PLATFORM_CONSOLE
-#endif
diff --git a/src/3rdparty/libtiff/libtiff/tif_config.h-vms b/src/3rdparty/libtiff/libtiff/tif_config.h-vms
deleted file mode 100644
index d653bd8270..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_config.h-vms
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Define to 1 if you have the <assert.h> header file. */
-#define HAVE_ASSERT_H 1
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define as 0 or 1 according to the floating point format suported by the
- machine */
-#define HAVE_IEEEFP 1
-
-#define HAVE_UNISTD_H 1
-
-#define HAVE_STRING_H 1
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <io.h> header file. */
-//#define HAVE_IO_H 1
-
-/* Define to 1 if you have the <search.h> header file. */
-//#define HAVE_SEARCH_H 1
-
-/* The size of a `int', as computed by sizeof. */
-#define SIZEOF_INT 4
-
-/* The size of a `long', as computed by sizeof. */
-#define SIZEOF_LONG 4
-
-/* Set the native cpu bit order */
-#define HOST_FILLORDER FILLORDER_LSB2MSB
-
-/* Define to 1 if your processor stores words with the most significant byte
- first (like Motorola and SPARC, unlike Intel and VAX). */
-/* #undef WORDS_BIGENDIAN */
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
- calls it, or to nothing if 'inline' is not supported under any name. */
-/*
-#ifndef __cplusplus
-# ifndef inline
-# define inline __inline
-# endif
-#endif
-*/
-
-// #define lfind _lfind
diff --git a/src/3rdparty/libtiff/libtiff/tif_config.h.in b/src/3rdparty/libtiff/libtiff/tif_config.h.in
deleted file mode 100644
index 01e54de878..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_config.h.in
+++ /dev/null
@@ -1,309 +0,0 @@
-/* libtiff/tif_config.h.in. Generated from configure.ac by autoheader. */
-
-/* Define if building universal (internal helper macro) */
-#undef AC_APPLE_UNIVERSAL_BUILD
-
-/* Support CCITT Group 3 & 4 algorithms */
-#undef CCITT_SUPPORT
-
-/* Pick up YCbCr subsampling info from the JPEG data stream to support files
- lacking the tag (default enabled). */
-#undef CHECK_JPEG_YCBCR_SUBSAMPLING
-
-/* Support C++ stream API (requires C++ compiler) */
-#undef CXX_SUPPORT
-
-/* Treat extra sample as alpha (default enabled). The RGBA interface will
- treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many
- packages produce RGBA files but don't mark the alpha properly. */
-#undef DEFAULT_EXTRASAMPLE_AS_ALPHA
-
-/* Use the Apple OpenGL framework. */
-#undef HAVE_APPLE_OPENGL_FRAMEWORK
-
-/* Define to 1 if you have the <assert.h> header file. */
-#undef HAVE_ASSERT_H
-
-/* Define to 1 if you have the <dlfcn.h> header file. */
-#undef HAVE_DLFCN_H
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#undef HAVE_FCNTL_H
-
-/* Define to 1 if you have the `floor' function. */
-#undef HAVE_FLOOR
-
-/* Define to 1 if you have the `getopt' function. */
-#undef HAVE_GETOPT
-
-/* Define as 0 or 1 according to the floating point format suported by the
- machine */
-#undef HAVE_IEEEFP
-
-/* Define to 1 if the system has the type `int16'. */
-#undef HAVE_INT16
-
-/* Define to 1 if the system has the type `int32'. */
-#undef HAVE_INT32
-
-/* Define to 1 if the system has the type `int8'. */
-#undef HAVE_INT8
-
-/* Define to 1 if you have the <inttypes.h> header file. */
-#undef HAVE_INTTYPES_H
-
-/* Define to 1 if you have the <io.h> header file. */
-#undef HAVE_IO_H
-
-/* Define to 1 if you have the `isascii' function. */
-#undef HAVE_ISASCII
-
-/* Define to 1 if you have the `jbg_newlen' function. */
-#undef HAVE_JBG_NEWLEN
-
-/* Define to 1 if you have the `lfind' function. */
-#undef HAVE_LFIND
-
-/* Define to 1 if you have the `c' library (-lc). */
-#undef HAVE_LIBC
-
-/* Define to 1 if you have the `m' library (-lm). */
-#undef HAVE_LIBM
-
-/* Define to 1 if you have the <limits.h> header file. */
-#undef HAVE_LIMITS_H
-
-/* Define to 1 if you have the <malloc.h> header file. */
-#undef HAVE_MALLOC_H
-
-/* Define to 1 if you have the `memmove' function. */
-#undef HAVE_MEMMOVE
-
-/* Define to 1 if you have the <memory.h> header file. */
-#undef HAVE_MEMORY_H
-
-/* Define to 1 if you have the `memset' function. */
-#undef HAVE_MEMSET
-
-/* Define to 1 if you have the `mmap' function. */
-#undef HAVE_MMAP
-
-/* Define to 1 if you have the `pow' function. */
-#undef HAVE_POW
-
-/* Define if you have POSIX threads libraries and header files. */
-#undef HAVE_PTHREAD
-
-/* Define to 1 if you have the <search.h> header file. */
-#undef HAVE_SEARCH_H
-
-/* Define to 1 if you have the `setmode' function. */
-#undef HAVE_SETMODE
-
-/* Define to 1 if you have the `sqrt' function. */
-#undef HAVE_SQRT
-
-/* Define to 1 if you have the <stdint.h> header file. */
-#undef HAVE_STDINT_H
-
-/* Define to 1 if you have the <stdlib.h> header file. */
-#undef HAVE_STDLIB_H
-
-/* Define to 1 if you have the `strcasecmp' function. */
-#undef HAVE_STRCASECMP
-
-/* Define to 1 if you have the `strchr' function. */
-#undef HAVE_STRCHR
-
-/* Define to 1 if you have the <strings.h> header file. */
-#undef HAVE_STRINGS_H
-
-/* Define to 1 if you have the <string.h> header file. */
-#undef HAVE_STRING_H
-
-/* Define to 1 if you have the `strrchr' function. */
-#undef HAVE_STRRCHR
-
-/* Define to 1 if you have the `strstr' function. */
-#undef HAVE_STRSTR
-
-/* Define to 1 if you have the `strtol' function. */
-#undef HAVE_STRTOL
-
-/* Define to 1 if you have the `strtoul' function. */
-#undef HAVE_STRTOUL
-
-/* Define to 1 if you have the <sys/stat.h> header file. */
-#undef HAVE_SYS_STAT_H
-
-/* Define to 1 if you have the <sys/time.h> header file. */
-#undef HAVE_SYS_TIME_H
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <unistd.h> header file. */
-#undef HAVE_UNISTD_H
-
-/* Define to 1 if you have the <windows.h> header file. */
-#undef HAVE_WINDOWS_H
-
-/* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian
- (Intel) */
-#undef HOST_BIGENDIAN
-
-/* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */
-#undef HOST_FILLORDER
-
-/* Support ISO JBIG compression (requires JBIG-KIT library) */
-#undef JBIG_SUPPORT
-
-/* Support JPEG compression (requires IJG JPEG library) */
-#undef JPEG_SUPPORT
-
-/* Support LogLuv high dynamic range encoding */
-#undef LOGLUV_SUPPORT
-
-/* Define to the sub-directory in which libtool stores uninstalled libraries.
- */
-#undef LT_OBJDIR
-
-/* Support LZW algorithm */
-#undef LZW_SUPPORT
-
-/* Support Microsoft Document Imaging format */
-#undef MDI_SUPPORT
-
-/* Support NeXT 2-bit RLE algorithm */
-#undef NEXT_SUPPORT
-
-/* Define to 1 if your C compiler doesn't accept -c and -o together. */
-#undef NO_MINUS_C_MINUS_O
-
-/* Support Old JPEG compresson (read-only) */
-#undef OJPEG_SUPPORT
-
-/* Name of package */
-#undef PACKAGE
-
-/* Define to the address where bug reports for this package should be sent. */
-#undef PACKAGE_BUGREPORT
-
-/* Define to the full name of this package. */
-#undef PACKAGE_NAME
-
-/* Define to the full name and version of this package. */
-#undef PACKAGE_STRING
-
-/* Define to the one symbol short name of this package. */
-#undef PACKAGE_TARNAME
-
-/* Define to the home page for this package. */
-#undef PACKAGE_URL
-
-/* Define to the version of this package. */
-#undef PACKAGE_VERSION
-
-/* Support Macintosh PackBits algorithm */
-#undef PACKBITS_SUPPORT
-
-/* Support Pixar log-format algorithm (requires Zlib) */
-#undef PIXARLOG_SUPPORT
-
-/* Define to necessary symbol if this constant uses a non-standard name on
- your system. */
-#undef PTHREAD_CREATE_JOINABLE
-
-/* The size of `int', as computed by sizeof. */
-#undef SIZEOF_INT
-
-/* The size of `long', as computed by sizeof. */
-#undef SIZEOF_LONG
-
-/* The size of `signed long', as computed by sizeof. */
-#undef SIZEOF_SIGNED_LONG
-
-/* The size of `signed long long', as computed by sizeof. */
-#undef SIZEOF_SIGNED_LONG_LONG
-
-/* The size of `unsigned long', as computed by sizeof. */
-#undef SIZEOF_UNSIGNED_LONG
-
-/* The size of `unsigned long long', as computed by sizeof. */
-#undef SIZEOF_UNSIGNED_LONG_LONG
-
-/* Define to 1 if you have the ANSI C header files. */
-#undef STDC_HEADERS
-
-/* Support strip chopping (whether or not to convert single-strip uncompressed
- images to mutiple strips of specified size to reduce memory usage) */
-#undef STRIPCHOP_DEFAULT
-
-/* Default size of the strip in bytes (when strip chopping enabled) */
-#undef STRIP_SIZE_DEFAULT
-
-/* Enable SubIFD tag (330) support */
-#undef SUBIFD_SUPPORT
-
-/* Support ThunderScan 4-bit RLE algorithm */
-#undef THUNDER_SUPPORT
-
-/* Signed 64-bit type formatter */
-#undef TIFF_INT64_FORMAT
-
-/* Signed 64-bit type */
-#undef TIFF_INT64_T
-
-/* Unsigned 64-bit type formatter */
-#undef TIFF_UINT64_FORMAT
-
-/* Unsigned 64-bit type */
-#undef TIFF_UINT64_T
-
-/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */
-#undef TIME_WITH_SYS_TIME
-
-/* Define to 1 if your <sys/time.h> declares `struct tm'. */
-#undef TM_IN_SYS_TIME
-
-/* Version number of package */
-#undef VERSION
-
-/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
- significant byte first (like Motorola and SPARC, unlike Intel). */
-#if defined AC_APPLE_UNIVERSAL_BUILD
-# if defined __BIG_ENDIAN__
-# define WORDS_BIGENDIAN 1
-# endif
-#else
-# ifndef WORDS_BIGENDIAN
-# undef WORDS_BIGENDIAN
-# endif
-#endif
-
-/* Define to 1 if the X Window System is missing or not being used. */
-#undef X_DISPLAY_MISSING
-
-/* Support Deflate compression */
-#undef ZIP_SUPPORT
-
-/* Number of bits in a file offset, on hosts where this is settable. */
-#undef _FILE_OFFSET_BITS
-
-/* Define for large files, on AIX-style hosts. */
-#undef _LARGE_FILES
-
-/* Define to empty if `const' does not conform to ANSI C. */
-#undef const
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
- calls it, or to nothing if 'inline' is not supported under any name. */
-#ifndef __cplusplus
-#undef inline
-#endif
-
-/* Define to `long int' if <sys/types.h> does not define. */
-#undef off_t
-
-/* Define to `unsigned int' if <sys/types.h> does not define. */
-#undef size_t
diff --git a/src/3rdparty/libtiff/libtiff/tif_config.vc.h b/src/3rdparty/libtiff/libtiff/tif_config.vc.h
deleted file mode 100644
index d9caecf5fa..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_config.vc.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Define to 1 if you have the <assert.h> header file. */
-#define HAVE_ASSERT_H 1
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define as 0 or 1 according to the floating point format suported by the
- machine */
-#define HAVE_IEEEFP 1
-
-/* Define to 1 if you have the `jbg_newlen' function. */
-#define HAVE_JBG_NEWLEN 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#define HAVE_SYS_TYPES_H 1
-
-/* Define to 1 if you have the <io.h> header file. */
-#define HAVE_IO_H 1
-
-/* Define to 1 if you have the <search.h> header file. */
-#define HAVE_SEARCH_H 1
-
-/* Define to 1 if you have the `setmode' function. */
-#define HAVE_SETMODE 1
-
-/* The size of a `int', as computed by sizeof. */
-#define SIZEOF_INT 4
-
-/* The size of a `long', as computed by sizeof. */
-#define SIZEOF_LONG 4
-
-/* Signed 64-bit type */
-#define TIFF_INT64_T signed __int64
-
-/* Unsigned 64-bit type */
-#define TIFF_UINT64_T unsigned __int64
-
-/* Set the native cpu bit order */
-#define HOST_FILLORDER FILLORDER_LSB2MSB
-
-/* Define to 1 if your processor stores words with the most significant byte
- first (like Motorola and SPARC, unlike Intel and VAX). */
-/* #undef WORDS_BIGENDIAN */
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
- calls it, or to nothing if 'inline' is not supported under any name. */
-#ifndef __cplusplus
-# ifndef inline
-# define inline __inline
-# endif
-#endif
-
-#define lfind _lfind
diff --git a/src/3rdparty/libtiff/libtiff/tif_config.wince.h b/src/3rdparty/libtiff/libtiff/tif_config.wince.h
deleted file mode 100644
index a50b01681f..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_config.wince.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/* $Id: tif_config.wince.h,v 1.1 2007/01/15 18:40:39 mloskot Exp $ */
-
-/*
- * TIFF library configuration header for Windows CE platform.
- */
-#ifndef _WIN32_WCE
-# error This version of tif_config.h header is dedicated for Windows CE platform!
-#endif
-
-/* Define to 1 if you have the <assert.h> header file. */
-#define HAVE_ASSERT_H 1
-
-/* Define to 1 if you have the <fcntl.h> header file. */
-#define HAVE_FCNTL_H 1
-
-/* Define as 0 or 1 according to the floating point format suported by the
- machine */
-#define HAVE_IEEEFP 1
-
-/* Define to 1 if you have the `jbg_newlen' function. */
-#define HAVE_JBG_NEWLEN 1
-
-/* Define to 1 if you have the <string.h> header file. */
-#define HAVE_STRING_H 1
-
-/* Define to 1 if you have the <sys/types.h> header file. */
-#undef HAVE_SYS_TYPES_H
-
-/* Define to 1 if you have the <io.h> header file. */
-#define HAVE_IO_H 1
-
-/* Define to 1 if you have the <search.h> header file. */
-#define HAVE_SEARCH_H 1
-
-/* Define to 1 if you have the `setmode' function. */
-#define HAVE_SETMODE 1
-
-/* Define to 1 if you have the `bsearch' function. */
-#define HAVE_BSEARCH 1
-#define bsearch wceex_bsearch
-
-/* Define to 1 if you have the `lfind' function. */
-#define HAVE_LFIND 1
-#define lfind wceex_lfind
-
-/* The size of a `int', as computed by sizeof. */
-#define SIZEOF_INT 4
-
-/* The size of a `long', as computed by sizeof. */
-#define SIZEOF_LONG 4
-
-/* Set the native cpu bit order */
-#define HOST_FILLORDER FILLORDER_LSB2MSB
-
-/* Define to 1 if your processor stores words with the most significant byte
- first (like Motorola and SPARC, unlike Intel and VAX). */
-/* #undef WORDS_BIGENDIAN */
-
-/* Define to `__inline__' or `__inline' if that's what the C compiler
- calls it, or to nothing if 'inline' is not supported under any name. */
-#ifndef __cplusplus
-# ifndef inline
-# define inline __inline
-# endif
-#endif
-
-
diff --git a/src/3rdparty/libtiff/libtiff/tif_dir.c b/src/3rdparty/libtiff/libtiff/tif_dir.c
deleted file mode 100644
index 102c9a85cd..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_dir.c
+++ /dev/null
@@ -1,1369 +0,0 @@
-/* $Id: tif_dir.c,v 1.75.2.2 2009-01-01 00:10:43 bfriesen Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- *
- * Directory Tag Get & Set Routines.
- * (and also some miscellaneous stuff)
- */
-#include "tiffiop.h"
-
-/*
- * These are used in the backwards compatibility code...
- */
-#define DATATYPE_VOID 0 /* !untyped data */
-#define DATATYPE_INT 1 /* !signed integer data */
-#define DATATYPE_UINT 2 /* !unsigned integer data */
-#define DATATYPE_IEEEFP 3 /* !IEEE floating point data */
-
-static void
-setByteArray(void** vpp, void* vp, size_t nmemb, size_t elem_size)
-{
- if (*vpp)
- _TIFFfree(*vpp), *vpp = 0;
- if (vp) {
- tsize_t bytes = nmemb * elem_size;
- if (elem_size && bytes / elem_size == nmemb)
- *vpp = (void*) _TIFFmalloc(bytes);
- if (*vpp)
- _TIFFmemcpy(*vpp, vp, bytes);
- }
-}
-void _TIFFsetByteArray(void** vpp, void* vp, uint32 n)
- { setByteArray(vpp, vp, n, 1); }
-void _TIFFsetString(char** cpp, char* cp)
- { setByteArray((void**) cpp, (void*) cp, strlen(cp)+1, 1); }
-void _TIFFsetNString(char** cpp, char* cp, uint32 n)
- { setByteArray((void**) cpp, (void*) cp, n, 1); }
-void _TIFFsetShortArray(uint16** wpp, uint16* wp, uint32 n)
- { setByteArray((void**) wpp, (void*) wp, n, sizeof (uint16)); }
-void _TIFFsetLongArray(uint32** lpp, uint32* lp, uint32 n)
- { setByteArray((void**) lpp, (void*) lp, n, sizeof (uint32)); }
-void _TIFFsetFloatArray(float** fpp, float* fp, uint32 n)
- { setByteArray((void**) fpp, (void*) fp, n, sizeof (float)); }
-void _TIFFsetDoubleArray(double** dpp, double* dp, uint32 n)
- { setByteArray((void**) dpp, (void*) dp, n, sizeof (double)); }
-
-/*
- * Install extra samples information.
- */
-static int
-setExtraSamples(TIFFDirectory* td, va_list ap, uint32* v)
-{
-/* XXX: Unassociated alpha data == 999 is a known Corel Draw bug, see below */
-#define EXTRASAMPLE_COREL_UNASSALPHA 999
-
- uint16* va;
- uint32 i;
-
- *v = va_arg(ap, uint32);
- if ((uint16) *v > td->td_samplesperpixel)
- return 0;
- va = va_arg(ap, uint16*);
- if (*v > 0 && va == NULL) /* typically missing param */
- return 0;
- for (i = 0; i < *v; i++) {
- if (va[i] > EXTRASAMPLE_UNASSALPHA) {
- /*
- * XXX: Corel Draw is known to produce incorrect
- * ExtraSamples tags which must be patched here if we
- * want to be able to open some of the damaged TIFF
- * files:
- */
- if (va[i] == EXTRASAMPLE_COREL_UNASSALPHA)
- va[i] = EXTRASAMPLE_UNASSALPHA;
- else
- return 0;
- }
- }
- td->td_extrasamples = (uint16) *v;
- _TIFFsetShortArray(&td->td_sampleinfo, va, td->td_extrasamples);
- return 1;
-
-#undef EXTRASAMPLE_COREL_UNASSALPHA
-}
-
-static uint32
-checkInkNamesString(TIFF* tif, uint32 slen, const char* s)
-{
- TIFFDirectory* td = &tif->tif_dir;
- uint16 i = td->td_samplesperpixel;
-
- if (slen > 0) {
- const char* ep = s+slen;
- const char* cp = s;
- for (; i > 0; i--) {
- for (; *cp != '\0'; cp++)
- if (cp >= ep)
- goto bad;
- cp++; /* skip \0 */
- }
- return (cp-s);
- }
-bad:
- TIFFErrorExt(tif->tif_clientdata, "TIFFSetField",
- "%s: Invalid InkNames value; expecting %d names, found %d",
- tif->tif_name,
- td->td_samplesperpixel,
- td->td_samplesperpixel-i);
- return (0);
-}
-
-static int
-_TIFFVSetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- static const char module[] = "_TIFFVSetField";
-
- TIFFDirectory* td = &tif->tif_dir;
- int status = 1;
- uint32 v32, i, v;
- char* s;
-
- switch (tag) {
- case TIFFTAG_SUBFILETYPE:
- td->td_subfiletype = va_arg(ap, uint32);
- break;
- case TIFFTAG_IMAGEWIDTH:
- td->td_imagewidth = va_arg(ap, uint32);
- break;
- case TIFFTAG_IMAGELENGTH:
- td->td_imagelength = va_arg(ap, uint32);
- break;
- case TIFFTAG_BITSPERSAMPLE:
- td->td_bitspersample = (uint16) va_arg(ap, int);
- /*
- * If the data require post-decoding processing to byte-swap
- * samples, set it up here. Note that since tags are required
- * to be ordered, compression code can override this behaviour
- * in the setup method if it wants to roll the post decoding
- * work in with its normal work.
- */
- if (tif->tif_flags & TIFF_SWAB) {
- if (td->td_bitspersample == 16)
- tif->tif_postdecode = _TIFFSwab16BitData;
- else if (td->td_bitspersample == 24)
- tif->tif_postdecode = _TIFFSwab24BitData;
- else if (td->td_bitspersample == 32)
- tif->tif_postdecode = _TIFFSwab32BitData;
- else if (td->td_bitspersample == 64)
- tif->tif_postdecode = _TIFFSwab64BitData;
- else if (td->td_bitspersample == 128) /* two 64's */
- tif->tif_postdecode = _TIFFSwab64BitData;
- }
- break;
- case TIFFTAG_COMPRESSION:
- v = va_arg(ap, uint32) & 0xffff;
- /*
- * If we're changing the compression scheme, the notify the
- * previous module so that it can cleanup any state it's
- * setup.
- */
- if (TIFFFieldSet(tif, FIELD_COMPRESSION)) {
- if (td->td_compression == v)
- break;
- (*tif->tif_cleanup)(tif);
- tif->tif_flags &= ~TIFF_CODERSETUP;
- }
- /*
- * Setup new compression routine state.
- */
- if( (status = TIFFSetCompressionScheme(tif, v)) != 0 )
- td->td_compression = (uint16) v;
- else
- status = 0;
- break;
- case TIFFTAG_PHOTOMETRIC:
- td->td_photometric = (uint16) va_arg(ap, int);
- break;
- case TIFFTAG_THRESHHOLDING:
- td->td_threshholding = (uint16) va_arg(ap, int);
- break;
- case TIFFTAG_FILLORDER:
- v = va_arg(ap, uint32);
- if (v != FILLORDER_LSB2MSB && v != FILLORDER_MSB2LSB)
- goto badvalue;
- td->td_fillorder = (uint16) v;
- break;
- case TIFFTAG_ORIENTATION:
- v = va_arg(ap, uint32);
- if (v < ORIENTATION_TOPLEFT || ORIENTATION_LEFTBOT < v)
- goto badvalue;
- else
- td->td_orientation = (uint16) v;
- break;
- case TIFFTAG_SAMPLESPERPIXEL:
- /* XXX should cross check -- e.g. if pallette, then 1 */
- v = va_arg(ap, uint32);
- if (v == 0)
- goto badvalue;
- td->td_samplesperpixel = (uint16) v;
- break;
- case TIFFTAG_ROWSPERSTRIP:
- v32 = va_arg(ap, uint32);
- if (v32 == 0)
- goto badvalue32;
- td->td_rowsperstrip = v32;
- if (!TIFFFieldSet(tif, FIELD_TILEDIMENSIONS)) {
- td->td_tilelength = v32;
- td->td_tilewidth = td->td_imagewidth;
- }
- break;
- case TIFFTAG_MINSAMPLEVALUE:
- td->td_minsamplevalue = (uint16) va_arg(ap, int);
- break;
- case TIFFTAG_MAXSAMPLEVALUE:
- td->td_maxsamplevalue = (uint16) va_arg(ap, int);
- break;
- case TIFFTAG_SMINSAMPLEVALUE:
- td->td_sminsamplevalue = va_arg(ap, double);
- break;
- case TIFFTAG_SMAXSAMPLEVALUE:
- td->td_smaxsamplevalue = va_arg(ap, double);
- break;
- case TIFFTAG_XRESOLUTION:
- td->td_xresolution = (float) va_arg(ap, double);
- break;
- case TIFFTAG_YRESOLUTION:
- td->td_yresolution = (float) va_arg(ap, double);
- break;
- case TIFFTAG_PLANARCONFIG:
- v = va_arg(ap, uint32);
- if (v != PLANARCONFIG_CONTIG && v != PLANARCONFIG_SEPARATE)
- goto badvalue;
- td->td_planarconfig = (uint16) v;
- break;
- case TIFFTAG_XPOSITION:
- td->td_xposition = (float) va_arg(ap, double);
- break;
- case TIFFTAG_YPOSITION:
- td->td_yposition = (float) va_arg(ap, double);
- break;
- case TIFFTAG_RESOLUTIONUNIT:
- v = va_arg(ap, uint32);
- if (v < RESUNIT_NONE || RESUNIT_CENTIMETER < v)
- goto badvalue;
- td->td_resolutionunit = (uint16) v;
- break;
- case TIFFTAG_PAGENUMBER:
- td->td_pagenumber[0] = (uint16) va_arg(ap, int);
- td->td_pagenumber[1] = (uint16) va_arg(ap, int);
- break;
- case TIFFTAG_HALFTONEHINTS:
- td->td_halftonehints[0] = (uint16) va_arg(ap, int);
- td->td_halftonehints[1] = (uint16) va_arg(ap, int);
- break;
- case TIFFTAG_COLORMAP:
- v32 = (uint32)(1L<<td->td_bitspersample);
- _TIFFsetShortArray(&td->td_colormap[0], va_arg(ap, uint16*), v32);
- _TIFFsetShortArray(&td->td_colormap[1], va_arg(ap, uint16*), v32);
- _TIFFsetShortArray(&td->td_colormap[2], va_arg(ap, uint16*), v32);
- break;
- case TIFFTAG_EXTRASAMPLES:
- if (!setExtraSamples(td, ap, &v))
- goto badvalue;
- break;
- case TIFFTAG_MATTEING:
- td->td_extrasamples = (uint16) (va_arg(ap, int) != 0);
- if (td->td_extrasamples) {
- uint16 sv = EXTRASAMPLE_ASSOCALPHA;
- _TIFFsetShortArray(&td->td_sampleinfo, &sv, 1);
- }
- break;
- case TIFFTAG_TILEWIDTH:
- v32 = va_arg(ap, uint32);
- if (v32 % 16) {
- if (tif->tif_mode != O_RDONLY)
- goto badvalue32;
- TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
- "Nonstandard tile width %d, convert file", v32);
- }
- td->td_tilewidth = v32;
- tif->tif_flags |= TIFF_ISTILED;
- break;
- case TIFFTAG_TILELENGTH:
- v32 = va_arg(ap, uint32);
- if (v32 % 16) {
- if (tif->tif_mode != O_RDONLY)
- goto badvalue32;
- TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
- "Nonstandard tile length %d, convert file", v32);
- }
- td->td_tilelength = v32;
- tif->tif_flags |= TIFF_ISTILED;
- break;
- case TIFFTAG_TILEDEPTH:
- v32 = va_arg(ap, uint32);
- if (v32 == 0)
- goto badvalue32;
- td->td_tiledepth = v32;
- break;
- case TIFFTAG_DATATYPE:
- v = va_arg(ap, uint32);
- switch (v) {
- case DATATYPE_VOID: v = SAMPLEFORMAT_VOID; break;
- case DATATYPE_INT: v = SAMPLEFORMAT_INT; break;
- case DATATYPE_UINT: v = SAMPLEFORMAT_UINT; break;
- case DATATYPE_IEEEFP: v = SAMPLEFORMAT_IEEEFP;break;
- default: goto badvalue;
- }
- td->td_sampleformat = (uint16) v;
- break;
- case TIFFTAG_SAMPLEFORMAT:
- v = va_arg(ap, uint32);
- if (v < SAMPLEFORMAT_UINT || SAMPLEFORMAT_COMPLEXIEEEFP < v)
- goto badvalue;
- td->td_sampleformat = (uint16) v;
-
- /* Try to fix up the SWAB function for complex data. */
- if( td->td_sampleformat == SAMPLEFORMAT_COMPLEXINT
- && td->td_bitspersample == 32
- && tif->tif_postdecode == _TIFFSwab32BitData )
- tif->tif_postdecode = _TIFFSwab16BitData;
- else if( (td->td_sampleformat == SAMPLEFORMAT_COMPLEXINT
- || td->td_sampleformat == SAMPLEFORMAT_COMPLEXIEEEFP)
- && td->td_bitspersample == 64
- && tif->tif_postdecode == _TIFFSwab64BitData )
- tif->tif_postdecode = _TIFFSwab32BitData;
- break;
- case TIFFTAG_IMAGEDEPTH:
- td->td_imagedepth = va_arg(ap, uint32);
- break;
- case TIFFTAG_SUBIFD:
- if ((tif->tif_flags & TIFF_INSUBIFD) == 0) {
- td->td_nsubifd = (uint16) va_arg(ap, int);
- _TIFFsetLongArray(&td->td_subifd, va_arg(ap, uint32*),
- (long) td->td_nsubifd);
- } else {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Sorry, cannot nest SubIFDs",
- tif->tif_name);
- status = 0;
- }
- break;
- case TIFFTAG_YCBCRPOSITIONING:
- td->td_ycbcrpositioning = (uint16) va_arg(ap, int);
- break;
- case TIFFTAG_YCBCRSUBSAMPLING:
- td->td_ycbcrsubsampling[0] = (uint16) va_arg(ap, int);
- td->td_ycbcrsubsampling[1] = (uint16) va_arg(ap, int);
- break;
- case TIFFTAG_TRANSFERFUNCTION:
- v = (td->td_samplesperpixel - td->td_extrasamples) > 1 ? 3 : 1;
- for (i = 0; i < v; i++)
- _TIFFsetShortArray(&td->td_transferfunction[i],
- va_arg(ap, uint16*), 1L<<td->td_bitspersample);
- break;
- case TIFFTAG_INKNAMES:
- v = va_arg(ap, uint32);
- s = va_arg(ap, char*);
- v = checkInkNamesString(tif, v, s);
- status = v > 0;
- if( v > 0 ) {
- _TIFFsetNString(&td->td_inknames, s, v);
- td->td_inknameslen = v;
- }
- break;
- default: {
- TIFFTagValue *tv;
- int tv_size, iCustom;
- const TIFFFieldInfo* fip = _TIFFFindFieldInfo(tif, tag, TIFF_ANY);
-
- /*
- * This can happen if multiple images are open with different
- * codecs which have private tags. The global tag information
- * table may then have tags that are valid for one file but not
- * the other. If the client tries to set a tag that is not valid
- * for the image's codec then we'll arrive here. This
- * happens, for example, when tiffcp is used to convert between
- * compression schemes and codec-specific tags are blindly copied.
- */
- if(fip == NULL || fip->field_bit != FIELD_CUSTOM) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Invalid %stag \"%s\" (not supported by codec)",
- tif->tif_name, isPseudoTag(tag) ? "pseudo-" : "",
- fip ? fip->field_name : "Unknown");
- status = 0;
- break;
- }
-
- /*
- * Find the existing entry for this custom value.
- */
- tv = NULL;
- for (iCustom = 0; iCustom < td->td_customValueCount; iCustom++) {
- if (td->td_customValues[iCustom].info->field_tag == tag) {
- tv = td->td_customValues + iCustom;
- if (tv->value != NULL) {
- _TIFFfree(tv->value);
- tv->value = NULL;
- }
- break;
- }
- }
-
- /*
- * Grow the custom list if the entry was not found.
- */
- if(tv == NULL) {
- TIFFTagValue *new_customValues;
-
- td->td_customValueCount++;
- new_customValues = (TIFFTagValue *)
- _TIFFrealloc(td->td_customValues,
- sizeof(TIFFTagValue) * td->td_customValueCount);
- if (!new_customValues) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Failed to allocate space for list of custom values",
- tif->tif_name);
- status = 0;
- goto end;
- }
-
- td->td_customValues = new_customValues;
-
- tv = td->td_customValues + (td->td_customValueCount - 1);
- tv->info = fip;
- tv->value = NULL;
- tv->count = 0;
- }
-
- /*
- * Set custom value ... save a copy of the custom tag value.
- */
- tv_size = _TIFFDataSize(fip->field_type);
- if (tv_size == 0) {
- status = 0;
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Bad field type %d for \"%s\"",
- tif->tif_name, fip->field_type,
- fip->field_name);
- goto end;
- }
-
- if(fip->field_passcount) {
- if (fip->field_writecount == TIFF_VARIABLE2)
- tv->count = (uint32) va_arg(ap, uint32);
- else
- tv->count = (int) va_arg(ap, int);
- } else if (fip->field_writecount == TIFF_VARIABLE
- || fip->field_writecount == TIFF_VARIABLE2)
- tv->count = 1;
- else if (fip->field_writecount == TIFF_SPP)
- tv->count = td->td_samplesperpixel;
- else
- tv->count = fip->field_writecount;
-
-
- if (fip->field_type == TIFF_ASCII)
- _TIFFsetString((char **)&tv->value, va_arg(ap, char *));
- else {
- tv->value = _TIFFCheckMalloc(tif, tv_size, tv->count,
- "Tag Value");
- if (!tv->value) {
- status = 0;
- goto end;
- }
-
- if ((fip->field_passcount
- || fip->field_writecount == TIFF_VARIABLE
- || fip->field_writecount == TIFF_VARIABLE2
- || fip->field_writecount == TIFF_SPP
- || tv->count > 1)
- && fip->field_tag != TIFFTAG_PAGENUMBER
- && fip->field_tag != TIFFTAG_HALFTONEHINTS
- && fip->field_tag != TIFFTAG_YCBCRSUBSAMPLING
- && fip->field_tag != TIFFTAG_DOTRANGE) {
- _TIFFmemcpy(tv->value, va_arg(ap, void *),
- tv->count * tv_size);
- } else {
- /*
- * XXX: The following loop required to handle
- * TIFFTAG_PAGENUMBER, TIFFTAG_HALFTONEHINTS,
- * TIFFTAG_YCBCRSUBSAMPLING and TIFFTAG_DOTRANGE tags.
- * These tags are actually arrays and should be passed as
- * array pointers to TIFFSetField() function, but actually
- * passed as a list of separate values. This behaviour
- * must be changed in the future!
- */
- int i;
- char *val = (char *)tv->value;
-
- for (i = 0; i < tv->count; i++, val += tv_size) {
- switch (fip->field_type) {
- case TIFF_BYTE:
- case TIFF_UNDEFINED:
- {
- uint8 v = (uint8)va_arg(ap, int);
- _TIFFmemcpy(val, &v, tv_size);
- }
- break;
- case TIFF_SBYTE:
- {
- int8 v = (int8)va_arg(ap, int);
- _TIFFmemcpy(val, &v, tv_size);
- }
- break;
- case TIFF_SHORT:
- {
- uint16 v = (uint16)va_arg(ap, int);
- _TIFFmemcpy(val, &v, tv_size);
- }
- break;
- case TIFF_SSHORT:
- {
- int16 v = (int16)va_arg(ap, int);
- _TIFFmemcpy(val, &v, tv_size);
- }
- break;
- case TIFF_LONG:
- case TIFF_IFD:
- {
- uint32 v = va_arg(ap, uint32);
- _TIFFmemcpy(val, &v, tv_size);
- }
- break;
- case TIFF_SLONG:
- {
- int32 v = va_arg(ap, int32);
- _TIFFmemcpy(val, &v, tv_size);
- }
- break;
- case TIFF_RATIONAL:
- case TIFF_SRATIONAL:
- case TIFF_FLOAT:
- {
- float v = (float)va_arg(ap, double);
- _TIFFmemcpy(val, &v, tv_size);
- }
- break;
- case TIFF_DOUBLE:
- {
- double v = va_arg(ap, double);
- _TIFFmemcpy(val, &v, tv_size);
- }
- break;
- default:
- _TIFFmemset(val, 0, tv_size);
- status = 0;
- break;
- }
- }
- }
- }
- }
- }
- if (status) {
- TIFFSetFieldBit(tif, _TIFFFieldWithTag(tif, tag)->field_bit);
- tif->tif_flags |= TIFF_DIRTYDIRECT;
- }
-
-end:
- va_end(ap);
- return (status);
-badvalue:
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Bad value %d for \"%s\" tag",
- tif->tif_name, v,
- _TIFFFieldWithTag(tif, tag)->field_name);
- va_end(ap);
- return (0);
-badvalue32:
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Bad value %u for \"%s\" tag",
- tif->tif_name, v32,
- _TIFFFieldWithTag(tif, tag)->field_name);
- va_end(ap);
- return (0);
-}
-
-/*
- * Return 1/0 according to whether or not
- * it is permissible to set the tag's value.
- * Note that we allow ImageLength to be changed
- * so that we can append and extend to images.
- * Any other tag may not be altered once writing
- * has commenced, unless its value has no effect
- * on the format of the data that is written.
- */
-static int
-OkToChangeTag(TIFF* tif, ttag_t tag)
-{
- const TIFFFieldInfo* fip = _TIFFFindFieldInfo(tif, tag, TIFF_ANY);
- if (!fip) { /* unknown tag */
- TIFFErrorExt(tif->tif_clientdata, "TIFFSetField", "%s: Unknown %stag %u",
- tif->tif_name, isPseudoTag(tag) ? "pseudo-" : "", tag);
- return (0);
- }
- if (tag != TIFFTAG_IMAGELENGTH && (tif->tif_flags & TIFF_BEENWRITING) &&
- !fip->field_oktochange) {
- /*
- * Consult info table to see if tag can be changed
- * after we've started writing. We only allow changes
- * to those tags that don't/shouldn't affect the
- * compression and/or format of the data.
- */
- TIFFErrorExt(tif->tif_clientdata, "TIFFSetField",
- "%s: Cannot modify tag \"%s\" while writing",
- tif->tif_name, fip->field_name);
- return (0);
- }
- return (1);
-}
-
-/*
- * Record the value of a field in the
- * internal directory structure. The
- * field will be written to the file
- * when/if the directory structure is
- * updated.
- */
-int
-TIFFSetField(TIFF* tif, ttag_t tag, ...)
-{
- va_list ap;
- int status;
-
- va_start(ap, tag);
- status = TIFFVSetField(tif, tag, ap);
- va_end(ap);
- return (status);
-}
-
-/*
- * Like TIFFSetField, but taking a varargs
- * parameter list. This routine is useful
- * for building higher-level interfaces on
- * top of the library.
- */
-int
-TIFFVSetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- return OkToChangeTag(tif, tag) ?
- (*tif->tif_tagmethods.vsetfield)(tif, tag, ap) : 0;
-}
-
-static int
-_TIFFVGetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- TIFFDirectory* td = &tif->tif_dir;
- int ret_val = 1;
-
- switch (tag) {
- case TIFFTAG_SUBFILETYPE:
- *va_arg(ap, uint32*) = td->td_subfiletype;
- break;
- case TIFFTAG_IMAGEWIDTH:
- *va_arg(ap, uint32*) = td->td_imagewidth;
- break;
- case TIFFTAG_IMAGELENGTH:
- *va_arg(ap, uint32*) = td->td_imagelength;
- break;
- case TIFFTAG_BITSPERSAMPLE:
- *va_arg(ap, uint16*) = td->td_bitspersample;
- break;
- case TIFFTAG_COMPRESSION:
- *va_arg(ap, uint16*) = td->td_compression;
- break;
- case TIFFTAG_PHOTOMETRIC:
- *va_arg(ap, uint16*) = td->td_photometric;
- break;
- case TIFFTAG_THRESHHOLDING:
- *va_arg(ap, uint16*) = td->td_threshholding;
- break;
- case TIFFTAG_FILLORDER:
- *va_arg(ap, uint16*) = td->td_fillorder;
- break;
- case TIFFTAG_ORIENTATION:
- *va_arg(ap, uint16*) = td->td_orientation;
- break;
- case TIFFTAG_SAMPLESPERPIXEL:
- *va_arg(ap, uint16*) = td->td_samplesperpixel;
- break;
- case TIFFTAG_ROWSPERSTRIP:
- *va_arg(ap, uint32*) = td->td_rowsperstrip;
- break;
- case TIFFTAG_MINSAMPLEVALUE:
- *va_arg(ap, uint16*) = td->td_minsamplevalue;
- break;
- case TIFFTAG_MAXSAMPLEVALUE:
- *va_arg(ap, uint16*) = td->td_maxsamplevalue;
- break;
- case TIFFTAG_SMINSAMPLEVALUE:
- *va_arg(ap, double*) = td->td_sminsamplevalue;
- break;
- case TIFFTAG_SMAXSAMPLEVALUE:
- *va_arg(ap, double*) = td->td_smaxsamplevalue;
- break;
- case TIFFTAG_XRESOLUTION:
- *va_arg(ap, float*) = td->td_xresolution;
- break;
- case TIFFTAG_YRESOLUTION:
- *va_arg(ap, float*) = td->td_yresolution;
- break;
- case TIFFTAG_PLANARCONFIG:
- *va_arg(ap, uint16*) = td->td_planarconfig;
- break;
- case TIFFTAG_XPOSITION:
- *va_arg(ap, float*) = td->td_xposition;
- break;
- case TIFFTAG_YPOSITION:
- *va_arg(ap, float*) = td->td_yposition;
- break;
- case TIFFTAG_RESOLUTIONUNIT:
- *va_arg(ap, uint16*) = td->td_resolutionunit;
- break;
- case TIFFTAG_PAGENUMBER:
- *va_arg(ap, uint16*) = td->td_pagenumber[0];
- *va_arg(ap, uint16*) = td->td_pagenumber[1];
- break;
- case TIFFTAG_HALFTONEHINTS:
- *va_arg(ap, uint16*) = td->td_halftonehints[0];
- *va_arg(ap, uint16*) = td->td_halftonehints[1];
- break;
- case TIFFTAG_COLORMAP:
- *va_arg(ap, uint16**) = td->td_colormap[0];
- *va_arg(ap, uint16**) = td->td_colormap[1];
- *va_arg(ap, uint16**) = td->td_colormap[2];
- break;
- case TIFFTAG_STRIPOFFSETS:
- case TIFFTAG_TILEOFFSETS:
- *va_arg(ap, uint32**) = td->td_stripoffset;
- break;
- case TIFFTAG_STRIPBYTECOUNTS:
- case TIFFTAG_TILEBYTECOUNTS:
- *va_arg(ap, uint32**) = td->td_stripbytecount;
- break;
- case TIFFTAG_MATTEING:
- *va_arg(ap, uint16*) =
- (td->td_extrasamples == 1 &&
- td->td_sampleinfo[0] == EXTRASAMPLE_ASSOCALPHA);
- break;
- case TIFFTAG_EXTRASAMPLES:
- *va_arg(ap, uint16*) = td->td_extrasamples;
- *va_arg(ap, uint16**) = td->td_sampleinfo;
- break;
- case TIFFTAG_TILEWIDTH:
- *va_arg(ap, uint32*) = td->td_tilewidth;
- break;
- case TIFFTAG_TILELENGTH:
- *va_arg(ap, uint32*) = td->td_tilelength;
- break;
- case TIFFTAG_TILEDEPTH:
- *va_arg(ap, uint32*) = td->td_tiledepth;
- break;
- case TIFFTAG_DATATYPE:
- switch (td->td_sampleformat) {
- case SAMPLEFORMAT_UINT:
- *va_arg(ap, uint16*) = DATATYPE_UINT;
- break;
- case SAMPLEFORMAT_INT:
- *va_arg(ap, uint16*) = DATATYPE_INT;
- break;
- case SAMPLEFORMAT_IEEEFP:
- *va_arg(ap, uint16*) = DATATYPE_IEEEFP;
- break;
- case SAMPLEFORMAT_VOID:
- *va_arg(ap, uint16*) = DATATYPE_VOID;
- break;
- }
- break;
- case TIFFTAG_SAMPLEFORMAT:
- *va_arg(ap, uint16*) = td->td_sampleformat;
- break;
- case TIFFTAG_IMAGEDEPTH:
- *va_arg(ap, uint32*) = td->td_imagedepth;
- break;
- case TIFFTAG_SUBIFD:
- *va_arg(ap, uint16*) = td->td_nsubifd;
- *va_arg(ap, uint32**) = td->td_subifd;
- break;
- case TIFFTAG_YCBCRPOSITIONING:
- *va_arg(ap, uint16*) = td->td_ycbcrpositioning;
- break;
- case TIFFTAG_YCBCRSUBSAMPLING:
- *va_arg(ap, uint16*) = td->td_ycbcrsubsampling[0];
- *va_arg(ap, uint16*) = td->td_ycbcrsubsampling[1];
- break;
- case TIFFTAG_TRANSFERFUNCTION:
- *va_arg(ap, uint16**) = td->td_transferfunction[0];
- if (td->td_samplesperpixel - td->td_extrasamples > 1) {
- *va_arg(ap, uint16**) = td->td_transferfunction[1];
- *va_arg(ap, uint16**) = td->td_transferfunction[2];
- }
- break;
- case TIFFTAG_INKNAMES:
- *va_arg(ap, char**) = td->td_inknames;
- break;
- default:
- {
- const TIFFFieldInfo* fip = _TIFFFindFieldInfo(tif, tag, TIFF_ANY);
- int i;
-
- /*
- * This can happen if multiple images are open with different
- * codecs which have private tags. The global tag information
- * table may then have tags that are valid for one file but not
- * the other. If the client tries to get a tag that is not valid
- * for the image's codec then we'll arrive here.
- */
- if( fip == NULL || fip->field_bit != FIELD_CUSTOM )
- {
- TIFFErrorExt(tif->tif_clientdata, "_TIFFVGetField",
- "%s: Invalid %stag \"%s\" "
- "(not supported by codec)",
- tif->tif_name,
- isPseudoTag(tag) ? "pseudo-" : "",
- fip ? fip->field_name : "Unknown");
- ret_val = 0;
- break;
- }
-
- /*
- * Do we have a custom value?
- */
- ret_val = 0;
- for (i = 0; i < td->td_customValueCount; i++) {
- TIFFTagValue *tv = td->td_customValues + i;
-
- if (tv->info->field_tag != tag)
- continue;
-
- if (fip->field_passcount) {
- if (fip->field_readcount == TIFF_VARIABLE2)
- *va_arg(ap, uint32*) = (uint32)tv->count;
- else /* Assume TIFF_VARIABLE */
- *va_arg(ap, uint16*) = (uint16)tv->count;
- *va_arg(ap, void **) = tv->value;
- ret_val = 1;
- } else {
- if ((fip->field_type == TIFF_ASCII
- || fip->field_readcount == TIFF_VARIABLE
- || fip->field_readcount == TIFF_VARIABLE2
- || fip->field_readcount == TIFF_SPP
- || tv->count > 1)
- && fip->field_tag != TIFFTAG_PAGENUMBER
- && fip->field_tag != TIFFTAG_HALFTONEHINTS
- && fip->field_tag != TIFFTAG_YCBCRSUBSAMPLING
- && fip->field_tag != TIFFTAG_DOTRANGE) {
- *va_arg(ap, void **) = tv->value;
- ret_val = 1;
- } else {
- int j;
- char *val = (char *)tv->value;
-
- for (j = 0; j < tv->count;
- j++, val += _TIFFDataSize(tv->info->field_type)) {
- switch (fip->field_type) {
- case TIFF_BYTE:
- case TIFF_UNDEFINED:
- *va_arg(ap, uint8*) =
- *(uint8 *)val;
- ret_val = 1;
- break;
- case TIFF_SBYTE:
- *va_arg(ap, int8*) =
- *(int8 *)val;
- ret_val = 1;
- break;
- case TIFF_SHORT:
- *va_arg(ap, uint16*) =
- *(uint16 *)val;
- ret_val = 1;
- break;
- case TIFF_SSHORT:
- *va_arg(ap, int16*) =
- *(int16 *)val;
- ret_val = 1;
- break;
- case TIFF_LONG:
- case TIFF_IFD:
- *va_arg(ap, uint32*) =
- *(uint32 *)val;
- ret_val = 1;
- break;
- case TIFF_SLONG:
- *va_arg(ap, int32*) =
- *(int32 *)val;
- ret_val = 1;
- break;
- case TIFF_RATIONAL:
- case TIFF_SRATIONAL:
- case TIFF_FLOAT:
- *va_arg(ap, float*) =
- *(float *)val;
- ret_val = 1;
- break;
- case TIFF_DOUBLE:
- *va_arg(ap, double*) =
- *(double *)val;
- ret_val = 1;
- break;
- default:
- ret_val = 0;
- break;
- }
- }
- }
- }
- break;
- }
- }
- }
- return(ret_val);
-}
-
-/*
- * Return the value of a field in the
- * internal directory structure.
- */
-int
-TIFFGetField(TIFF* tif, ttag_t tag, ...)
-{
- int status;
- va_list ap;
-
- va_start(ap, tag);
- status = TIFFVGetField(tif, tag, ap);
- va_end(ap);
- return (status);
-}
-
-/*
- * Like TIFFGetField, but taking a varargs
- * parameter list. This routine is useful
- * for building higher-level interfaces on
- * top of the library.
- */
-int
-TIFFVGetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- const TIFFFieldInfo* fip = _TIFFFindFieldInfo(tif, tag, TIFF_ANY);
- return (fip && (isPseudoTag(tag) || TIFFFieldSet(tif, fip->field_bit)) ?
- (*tif->tif_tagmethods.vgetfield)(tif, tag, ap) : 0);
-}
-
-#define CleanupField(member) { \
- if (td->member) { \
- _TIFFfree(td->member); \
- td->member = 0; \
- } \
-}
-
-/*
- * Release storage associated with a directory.
- */
-void
-TIFFFreeDirectory(TIFF* tif)
-{
- TIFFDirectory *td = &tif->tif_dir;
- int i;
-
- _TIFFmemset(td->td_fieldsset, 0, FIELD_SETLONGS);
- CleanupField(td_colormap[0]);
- CleanupField(td_colormap[1]);
- CleanupField(td_colormap[2]);
- CleanupField(td_sampleinfo);
- CleanupField(td_subifd);
- CleanupField(td_inknames);
- CleanupField(td_transferfunction[0]);
- CleanupField(td_transferfunction[1]);
- CleanupField(td_transferfunction[2]);
- CleanupField(td_stripoffset);
- CleanupField(td_stripbytecount);
- TIFFClrFieldBit(tif, FIELD_YCBCRSUBSAMPLING);
- TIFFClrFieldBit(tif, FIELD_YCBCRPOSITIONING);
-
- /* Cleanup custom tag values */
- for( i = 0; i < td->td_customValueCount; i++ ) {
- if (td->td_customValues[i].value)
- _TIFFfree(td->td_customValues[i].value);
- }
-
- td->td_customValueCount = 0;
- CleanupField(td_customValues);
-}
-#undef CleanupField
-
-/*
- * Client Tag extension support (from Niles Ritter).
- */
-static TIFFExtendProc _TIFFextender = (TIFFExtendProc) NULL;
-
-TIFFExtendProc
-TIFFSetTagExtender(TIFFExtendProc extender)
-{
- TIFFExtendProc prev = _TIFFextender;
- _TIFFextender = extender;
- return (prev);
-}
-
-/*
- * Setup for a new directory. Should we automatically call
- * TIFFWriteDirectory() if the current one is dirty?
- *
- * The newly created directory will not exist on the file till
- * TIFFWriteDirectory(), TIFFFlush() or TIFFClose() is called.
- */
-int
-TIFFCreateDirectory(TIFF* tif)
-{
- TIFFDefaultDirectory(tif);
- tif->tif_diroff = 0;
- tif->tif_nextdiroff = 0;
- tif->tif_curoff = 0;
- tif->tif_row = (uint32) -1;
- tif->tif_curstrip = (tstrip_t) -1;
-
- return 0;
-}
-
-/*
- * Setup a default directory structure.
- */
-int
-TIFFDefaultDirectory(TIFF* tif)
-{
- register TIFFDirectory* td = &tif->tif_dir;
-
- size_t tiffFieldInfoCount;
- const TIFFFieldInfo *tiffFieldInfo =
- _TIFFGetFieldInfo(&tiffFieldInfoCount);
- _TIFFSetupFieldInfo(tif, tiffFieldInfo, tiffFieldInfoCount);
-
- _TIFFmemset(td, 0, sizeof (*td));
- td->td_fillorder = FILLORDER_MSB2LSB;
- td->td_bitspersample = 1;
- td->td_threshholding = THRESHHOLD_BILEVEL;
- td->td_orientation = ORIENTATION_TOPLEFT;
- td->td_samplesperpixel = 1;
- td->td_rowsperstrip = (uint32) -1;
- td->td_tilewidth = 0;
- td->td_tilelength = 0;
- td->td_tiledepth = 1;
- td->td_stripbytecountsorted = 1; /* Our own arrays always sorted. */
- td->td_resolutionunit = RESUNIT_INCH;
- td->td_sampleformat = SAMPLEFORMAT_UINT;
- td->td_imagedepth = 1;
- td->td_ycbcrsubsampling[0] = 2;
- td->td_ycbcrsubsampling[1] = 2;
- td->td_ycbcrpositioning = YCBCRPOSITION_CENTERED;
- tif->tif_postdecode = _TIFFNoPostDecode;
- tif->tif_foundfield = NULL;
- tif->tif_tagmethods.vsetfield = _TIFFVSetField;
- tif->tif_tagmethods.vgetfield = _TIFFVGetField;
- tif->tif_tagmethods.printdir = NULL;
- /*
- * Give client code a chance to install their own
- * tag extensions & methods, prior to compression overloads.
- */
- if (_TIFFextender)
- (*_TIFFextender)(tif);
- (void) TIFFSetField(tif, TIFFTAG_COMPRESSION, COMPRESSION_NONE);
- /*
- * NB: The directory is marked dirty as a result of setting
- * up the default compression scheme. However, this really
- * isn't correct -- we want TIFF_DIRTYDIRECT to be set only
- * if the user does something. We could just do the setup
- * by hand, but it seems better to use the normal mechanism
- * (i.e. TIFFSetField).
- */
- tif->tif_flags &= ~TIFF_DIRTYDIRECT;
-
- /*
- * As per http://bugzilla.remotesensing.org/show_bug.cgi?id=19
- * we clear the ISTILED flag when setting up a new directory.
- * Should we also be clearing stuff like INSUBIFD?
- */
- tif->tif_flags &= ~TIFF_ISTILED;
-
- return (1);
-}
-
-static int
-TIFFAdvanceDirectory(TIFF* tif, uint32* nextdir, toff_t* off)
-{
- static const char module[] = "TIFFAdvanceDirectory";
- uint16 dircount;
- if (isMapped(tif))
- {
- toff_t poff=*nextdir;
- if (poff+sizeof(uint16) > tif->tif_size)
- {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: Error fetching directory count",
- tif->tif_name);
- return (0);
- }
- _TIFFmemcpy(&dircount, tif->tif_base+poff, sizeof (uint16));
- if (tif->tif_flags & TIFF_SWAB)
- TIFFSwabShort(&dircount);
- poff+=sizeof (uint16)+dircount*sizeof (TIFFDirEntry);
- if (off != NULL)
- *off = poff;
- if (((toff_t) (poff+sizeof (uint32))) > tif->tif_size)
- {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: Error fetching directory link",
- tif->tif_name);
- return (0);
- }
- _TIFFmemcpy(nextdir, tif->tif_base+poff, sizeof (uint32));
- if (tif->tif_flags & TIFF_SWAB)
- TIFFSwabLong(nextdir);
- return (1);
- }
- else
- {
- if (!SeekOK(tif, *nextdir) ||
- !ReadOK(tif, &dircount, sizeof (uint16))) {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: Error fetching directory count",
- tif->tif_name);
- return (0);
- }
- if (tif->tif_flags & TIFF_SWAB)
- TIFFSwabShort(&dircount);
- if (off != NULL)
- *off = TIFFSeekFile(tif,
- dircount*sizeof (TIFFDirEntry), SEEK_CUR);
- else
- (void) TIFFSeekFile(tif,
- dircount*sizeof (TIFFDirEntry), SEEK_CUR);
- if (!ReadOK(tif, nextdir, sizeof (uint32))) {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: Error fetching directory link",
- tif->tif_name);
- return (0);
- }
- if (tif->tif_flags & TIFF_SWAB)
- TIFFSwabLong(nextdir);
- return (1);
- }
-}
-
-/*
- * Count the number of directories in a file.
- */
-tdir_t
-TIFFNumberOfDirectories(TIFF* tif)
-{
- toff_t nextdir = tif->tif_header.tiff_diroff;
- tdir_t n = 0;
-
- while (nextdir != 0 && TIFFAdvanceDirectory(tif, &nextdir, NULL))
- n++;
- return (n);
-}
-
-/*
- * Set the n-th directory as the current directory.
- * NB: Directories are numbered starting at 0.
- */
-int
-TIFFSetDirectory(TIFF* tif, tdir_t dirn)
-{
- toff_t nextdir;
- tdir_t n;
-
- nextdir = tif->tif_header.tiff_diroff;
- for (n = dirn; n > 0 && nextdir != 0; n--)
- if (!TIFFAdvanceDirectory(tif, &nextdir, NULL))
- return (0);
- tif->tif_nextdiroff = nextdir;
- /*
- * Set curdir to the actual directory index. The
- * -1 is because TIFFReadDirectory will increment
- * tif_curdir after successfully reading the directory.
- */
- tif->tif_curdir = (dirn - n) - 1;
- /*
- * Reset tif_dirnumber counter and start new list of seen directories.
- * We need this to prevent IFD loops.
- */
- tif->tif_dirnumber = 0;
- return (TIFFReadDirectory(tif));
-}
-
-/*
- * Set the current directory to be the directory
- * located at the specified file offset. This interface
- * is used mainly to access directories linked with
- * the SubIFD tag (e.g. thumbnail images).
- */
-int
-TIFFSetSubDirectory(TIFF* tif, uint32 diroff)
-{
- tif->tif_nextdiroff = diroff;
- /*
- * Reset tif_dirnumber counter and start new list of seen directories.
- * We need this to prevent IFD loops.
- */
- tif->tif_dirnumber = 0;
- return (TIFFReadDirectory(tif));
-}
-
-/*
- * Return file offset of the current directory.
- */
-uint32
-TIFFCurrentDirOffset(TIFF* tif)
-{
- return (tif->tif_diroff);
-}
-
-/*
- * Return an indication of whether or not we are
- * at the last directory in the file.
- */
-int
-TIFFLastDirectory(TIFF* tif)
-{
- return (tif->tif_nextdiroff == 0);
-}
-
-/*
- * Unlink the specified directory from the directory chain.
- */
-int
-TIFFUnlinkDirectory(TIFF* tif, tdir_t dirn)
-{
- static const char module[] = "TIFFUnlinkDirectory";
- toff_t nextdir;
- toff_t off;
- tdir_t n;
-
- if (tif->tif_mode == O_RDONLY) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "Can not unlink directory in read-only file");
- return (0);
- }
- /*
- * Go to the directory before the one we want
- * to unlink and nab the offset of the link
- * field we'll need to patch.
- */
- nextdir = tif->tif_header.tiff_diroff;
- off = sizeof (uint16) + sizeof (uint16);
- for (n = dirn-1; n > 0; n--) {
- if (nextdir == 0) {
- TIFFErrorExt(tif->tif_clientdata, module, "Directory %d does not exist", dirn);
- return (0);
- }
- if (!TIFFAdvanceDirectory(tif, &nextdir, &off))
- return (0);
- }
- /*
- * Advance to the directory to be unlinked and fetch
- * the offset of the directory that follows.
- */
- if (!TIFFAdvanceDirectory(tif, &nextdir, NULL))
- return (0);
- /*
- * Go back and patch the link field of the preceding
- * directory to point to the offset of the directory
- * that follows.
- */
- (void) TIFFSeekFile(tif, off, SEEK_SET);
- if (tif->tif_flags & TIFF_SWAB)
- TIFFSwabLong(&nextdir);
- if (!WriteOK(tif, &nextdir, sizeof (uint32))) {
- TIFFErrorExt(tif->tif_clientdata, module, "Error writing directory link");
- return (0);
- }
- /*
- * Leave directory state setup safely. We don't have
- * facilities for doing inserting and removing directories,
- * so it's safest to just invalidate everything. This
- * means that the caller can only append to the directory
- * chain.
- */
- (*tif->tif_cleanup)(tif);
- if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata) {
- _TIFFfree(tif->tif_rawdata);
- tif->tif_rawdata = NULL;
- tif->tif_rawcc = 0;
- }
- tif->tif_flags &= ~(TIFF_BEENWRITING|TIFF_BUFFERSETUP|TIFF_POSTENCODE);
- TIFFFreeDirectory(tif);
- TIFFDefaultDirectory(tif);
- tif->tif_diroff = 0; /* force link on next write */
- tif->tif_nextdiroff = 0; /* next write must be at end */
- tif->tif_curoff = 0;
- tif->tif_row = (uint32) -1;
- tif->tif_curstrip = (tstrip_t) -1;
- return (1);
-}
-
-/* [BFC]
- *
- * Author: Bruce Cameron <cameron@petris.com>
- *
- * Set a table of tags that are to be replaced during directory process by the
- * 'IGNORE' state - or return TRUE/FALSE for the requested tag such that
- * 'ReadDirectory' can use the stored information.
- *
- * FIXME: this is never used properly. Should be removed in the future.
- */
-int
-TIFFReassignTagToIgnore (enum TIFFIgnoreSense task, int TIFFtagID)
-{
- static int TIFFignoretags [FIELD_LAST];
- static int tagcount = 0 ;
- int i; /* Loop index */
- int j; /* Loop index */
-
- switch (task)
- {
- case TIS_STORE:
- if ( tagcount < (FIELD_LAST - 1) )
- {
- for ( j = 0 ; j < tagcount ; ++j )
- { /* Do not add duplicate tag */
- if ( TIFFignoretags [j] == TIFFtagID )
- return (TRUE) ;
- }
- TIFFignoretags [tagcount++] = TIFFtagID ;
- return (TRUE) ;
- }
- break ;
-
- case TIS_EXTRACT:
- for ( i = 0 ; i < tagcount ; ++i )
- {
- if ( TIFFignoretags [i] == TIFFtagID )
- return (TRUE) ;
- }
- break;
-
- case TIS_EMPTY:
- tagcount = 0 ; /* Clear the list */
- return (TRUE) ;
-
- default:
- break;
- }
-
- return (FALSE);
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_dir.h b/src/3rdparty/libtiff/libtiff/tif_dir.h
deleted file mode 100644
index e2aeea2917..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_dir.h
+++ /dev/null
@@ -1,202 +0,0 @@
-/* $Id: tif_dir.h,v 1.30.2.1 2007/04/07 14:58:30 dron Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#ifndef _TIFFDIR_
-#define _TIFFDIR_
-/*
- * ``Library-private'' Directory-related Definitions.
- */
-
-/*
- * Internal format of a TIFF directory entry.
- */
-typedef struct {
-#define FIELD_SETLONGS 4
- /* bit vector of fields that are set */
- unsigned long td_fieldsset[FIELD_SETLONGS];
-
- uint32 td_imagewidth, td_imagelength, td_imagedepth;
- uint32 td_tilewidth, td_tilelength, td_tiledepth;
- uint32 td_subfiletype;
- uint16 td_bitspersample;
- uint16 td_sampleformat;
- uint16 td_compression;
- uint16 td_photometric;
- uint16 td_threshholding;
- uint16 td_fillorder;
- uint16 td_orientation;
- uint16 td_samplesperpixel;
- uint32 td_rowsperstrip;
- uint16 td_minsamplevalue, td_maxsamplevalue;
- double td_sminsamplevalue, td_smaxsamplevalue;
- float td_xresolution, td_yresolution;
- uint16 td_resolutionunit;
- uint16 td_planarconfig;
- float td_xposition, td_yposition;
- uint16 td_pagenumber[2];
- uint16* td_colormap[3];
- uint16 td_halftonehints[2];
- uint16 td_extrasamples;
- uint16* td_sampleinfo;
- /* even though the name is misleading, td_stripsperimage is the number
- * of striles (=strips or tiles) per plane, and td_nstrips the total
- * number of striles */
- tstrile_t td_stripsperimage;
- tstrile_t td_nstrips; /* size of offset & bytecount arrays */
- toff_t* td_stripoffset;
- toff_t* td_stripbytecount; /* FIXME: it should be tsize_t array */
- int td_stripbytecountsorted; /* is the bytecount array sorted ascending? */
- uint16 td_nsubifd;
- uint32* td_subifd;
- /* YCbCr parameters */
- uint16 td_ycbcrsubsampling[2];
- uint16 td_ycbcrpositioning;
- /* Colorimetry parameters */
- uint16* td_transferfunction[3];
- /* CMYK parameters */
- int td_inknameslen;
- char* td_inknames;
-
- int td_customValueCount;
- TIFFTagValue *td_customValues;
-} TIFFDirectory;
-
-/*
- * Field flags used to indicate fields that have
- * been set in a directory, and to reference fields
- * when manipulating a directory.
- */
-
-/*
- * FIELD_IGNORE is used to signify tags that are to
- * be processed but otherwise ignored. This permits
- * antiquated tags to be quietly read and discarded.
- * Note that a bit *is* allocated for ignored tags;
- * this is understood by the directory reading logic
- * which uses this fact to avoid special-case handling
- */
-#define FIELD_IGNORE 0
-
-/* multi-item fields */
-#define FIELD_IMAGEDIMENSIONS 1
-#define FIELD_TILEDIMENSIONS 2
-#define FIELD_RESOLUTION 3
-#define FIELD_POSITION 4
-
-/* single-item fields */
-#define FIELD_SUBFILETYPE 5
-#define FIELD_BITSPERSAMPLE 6
-#define FIELD_COMPRESSION 7
-#define FIELD_PHOTOMETRIC 8
-#define FIELD_THRESHHOLDING 9
-#define FIELD_FILLORDER 10
-#define FIELD_ORIENTATION 15
-#define FIELD_SAMPLESPERPIXEL 16
-#define FIELD_ROWSPERSTRIP 17
-#define FIELD_MINSAMPLEVALUE 18
-#define FIELD_MAXSAMPLEVALUE 19
-#define FIELD_PLANARCONFIG 20
-#define FIELD_RESOLUTIONUNIT 22
-#define FIELD_PAGENUMBER 23
-#define FIELD_STRIPBYTECOUNTS 24
-#define FIELD_STRIPOFFSETS 25
-#define FIELD_COLORMAP 26
-#define FIELD_EXTRASAMPLES 31
-#define FIELD_SAMPLEFORMAT 32
-#define FIELD_SMINSAMPLEVALUE 33
-#define FIELD_SMAXSAMPLEVALUE 34
-#define FIELD_IMAGEDEPTH 35
-#define FIELD_TILEDEPTH 36
-#define FIELD_HALFTONEHINTS 37
-#define FIELD_YCBCRSUBSAMPLING 39
-#define FIELD_YCBCRPOSITIONING 40
-#define FIELD_TRANSFERFUNCTION 44
-#define FIELD_INKNAMES 46
-#define FIELD_SUBIFD 49
-/* FIELD_CUSTOM (see tiffio.h) 65 */
-/* end of support for well-known tags; codec-private tags follow */
-#define FIELD_CODEC 66 /* base of codec-private tags */
-
-
-/*
- * Pseudo-tags don't normally need field bits since they
- * are not written to an output file (by definition).
- * The library also has express logic to always query a
- * codec for a pseudo-tag so allocating a field bit for
- * one is a waste. If codec wants to promote the notion
- * of a pseudo-tag being ``set'' or ``unset'' then it can
- * do using internal state flags without polluting the
- * field bit space defined for real tags.
- */
-#define FIELD_PSEUDO 0
-
-#define FIELD_LAST (32*FIELD_SETLONGS-1)
-
-#define TIFFExtractData(tif, type, v) \
- ((uint32) ((tif)->tif_header.tiff_magic == TIFF_BIGENDIAN ? \
- ((v) >> (tif)->tif_typeshift[type]) & (tif)->tif_typemask[type] : \
- (v) & (tif)->tif_typemask[type]))
-#define TIFFInsertData(tif, type, v) \
- ((uint32) ((tif)->tif_header.tiff_magic == TIFF_BIGENDIAN ? \
- ((v) & (tif)->tif_typemask[type]) << (tif)->tif_typeshift[type] : \
- (v) & (tif)->tif_typemask[type]))
-
-
-#define BITn(n) (((unsigned long)1L)<<((n)&0x1f))
-#define BITFIELDn(tif, n) ((tif)->tif_dir.td_fieldsset[(n)/32])
-#define TIFFFieldSet(tif, field) (BITFIELDn(tif, field) & BITn(field))
-#define TIFFSetFieldBit(tif, field) (BITFIELDn(tif, field) |= BITn(field))
-#define TIFFClrFieldBit(tif, field) (BITFIELDn(tif, field) &= ~BITn(field))
-
-#define FieldSet(fields, f) (fields[(f)/32] & BITn(f))
-#define ResetFieldBit(fields, f) (fields[(f)/32] &= ~BITn(f))
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-extern const TIFFFieldInfo *_TIFFGetFieldInfo(size_t *);
-extern const TIFFFieldInfo *_TIFFGetExifFieldInfo(size_t *);
-extern void _TIFFSetupFieldInfo(TIFF*, const TIFFFieldInfo[], size_t);
-extern int _TIFFMergeFieldInfo(TIFF*, const TIFFFieldInfo[], int);
-extern void _TIFFPrintFieldInfo(TIFF*, FILE*);
-extern TIFFDataType _TIFFSampleToTagType(TIFF*);
-extern const TIFFFieldInfo* _TIFFFindOrRegisterFieldInfo( TIFF *tif,
- ttag_t tag,
- TIFFDataType dt );
-extern TIFFFieldInfo* _TIFFCreateAnonFieldInfo( TIFF *tif, ttag_t tag,
- TIFFDataType dt );
-
-#define _TIFFFindFieldInfo TIFFFindFieldInfo
-#define _TIFFFindFieldInfoByName TIFFFindFieldInfoByName
-#define _TIFFFieldWithTag TIFFFieldWithTag
-#define _TIFFFieldWithName TIFFFieldWithName
-
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _TIFFDIR_ */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_dirinfo.c b/src/3rdparty/libtiff/libtiff/tif_dirinfo.c
deleted file mode 100644
index 99a871cc37..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_dirinfo.c
+++ /dev/null
@@ -1,881 +0,0 @@
-/* $Id: tif_dirinfo.c,v 1.65.2.7 2009-09-17 18:00:28 bfriesen Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- *
- * Core Directory Tag Support.
- */
-#include "tiffiop.h"
-#include <stdlib.h>
-#include <string.h>
-
-/*
- * NB: NB: THIS ARRAY IS ASSUMED TO BE SORTED BY TAG.
- * If a tag can have both LONG and SHORT types then the LONG must be
- * placed before the SHORT for writing to work properly.
- *
- * NOTE: The second field (field_readcount) and third field (field_writecount)
- * sometimes use the values TIFF_VARIABLE (-1), TIFF_VARIABLE2 (-3)
- * and TIFFTAG_SPP (-2). The macros should be used but would throw off
- * the formatting of the code, so please interprete the -1, -2 and -3
- * values accordingly.
- */
-static const TIFFFieldInfo
-tiffFieldInfo[] = {
- { TIFFTAG_SUBFILETYPE, 1, 1, TIFF_LONG, FIELD_SUBFILETYPE,
- 1, 0, "SubfileType" },
-/* XXX SHORT for compatibility w/ old versions of the library */
- { TIFFTAG_SUBFILETYPE, 1, 1, TIFF_SHORT, FIELD_SUBFILETYPE,
- 1, 0, "SubfileType" },
- { TIFFTAG_OSUBFILETYPE, 1, 1, TIFF_SHORT, FIELD_SUBFILETYPE,
- 1, 0, "OldSubfileType" },
- { TIFFTAG_IMAGEWIDTH, 1, 1, TIFF_LONG, FIELD_IMAGEDIMENSIONS,
- 0, 0, "ImageWidth" },
- { TIFFTAG_IMAGEWIDTH, 1, 1, TIFF_SHORT, FIELD_IMAGEDIMENSIONS,
- 0, 0, "ImageWidth" },
- { TIFFTAG_IMAGELENGTH, 1, 1, TIFF_LONG, FIELD_IMAGEDIMENSIONS,
- 1, 0, "ImageLength" },
- { TIFFTAG_IMAGELENGTH, 1, 1, TIFF_SHORT, FIELD_IMAGEDIMENSIONS,
- 1, 0, "ImageLength" },
- { TIFFTAG_BITSPERSAMPLE, -1,-1, TIFF_SHORT, FIELD_BITSPERSAMPLE,
- 0, 0, "BitsPerSample" },
-/* XXX LONG for compatibility with some broken TIFF writers */
- { TIFFTAG_BITSPERSAMPLE, -1,-1, TIFF_LONG, FIELD_BITSPERSAMPLE,
- 0, 0, "BitsPerSample" },
- { TIFFTAG_COMPRESSION, -1, 1, TIFF_SHORT, FIELD_COMPRESSION,
- 0, 0, "Compression" },
-/* XXX LONG for compatibility with some broken TIFF writers */
- { TIFFTAG_COMPRESSION, -1, 1, TIFF_LONG, FIELD_COMPRESSION,
- 0, 0, "Compression" },
- { TIFFTAG_PHOTOMETRIC, 1, 1, TIFF_SHORT, FIELD_PHOTOMETRIC,
- 0, 0, "PhotometricInterpretation" },
-/* XXX LONG for compatibility with some broken TIFF writers */
- { TIFFTAG_PHOTOMETRIC, 1, 1, TIFF_LONG, FIELD_PHOTOMETRIC,
- 0, 0, "PhotometricInterpretation" },
- { TIFFTAG_THRESHHOLDING, 1, 1, TIFF_SHORT, FIELD_THRESHHOLDING,
- 1, 0, "Threshholding" },
- { TIFFTAG_CELLWIDTH, 1, 1, TIFF_SHORT, FIELD_IGNORE,
- 1, 0, "CellWidth" },
- { TIFFTAG_CELLLENGTH, 1, 1, TIFF_SHORT, FIELD_IGNORE,
- 1, 0, "CellLength" },
- { TIFFTAG_FILLORDER, 1, 1, TIFF_SHORT, FIELD_FILLORDER,
- 0, 0, "FillOrder" },
- { TIFFTAG_DOCUMENTNAME, -1,-1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "DocumentName" },
- { TIFFTAG_IMAGEDESCRIPTION, -1,-1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "ImageDescription" },
- { TIFFTAG_MAKE, -1,-1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "Make" },
- { TIFFTAG_MODEL, -1,-1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "Model" },
- { TIFFTAG_STRIPOFFSETS, -1,-1, TIFF_LONG, FIELD_STRIPOFFSETS,
- 0, 0, "StripOffsets" },
- { TIFFTAG_STRIPOFFSETS, -1,-1, TIFF_SHORT, FIELD_STRIPOFFSETS,
- 0, 0, "StripOffsets" },
- { TIFFTAG_ORIENTATION, 1, 1, TIFF_SHORT, FIELD_ORIENTATION,
- 0, 0, "Orientation" },
- { TIFFTAG_SAMPLESPERPIXEL, 1, 1, TIFF_SHORT, FIELD_SAMPLESPERPIXEL,
- 0, 0, "SamplesPerPixel" },
- { TIFFTAG_ROWSPERSTRIP, 1, 1, TIFF_LONG, FIELD_ROWSPERSTRIP,
- 0, 0, "RowsPerStrip" },
- { TIFFTAG_ROWSPERSTRIP, 1, 1, TIFF_SHORT, FIELD_ROWSPERSTRIP,
- 0, 0, "RowsPerStrip" },
- { TIFFTAG_STRIPBYTECOUNTS, -1,-1, TIFF_LONG, FIELD_STRIPBYTECOUNTS,
- 0, 0, "StripByteCounts" },
- { TIFFTAG_STRIPBYTECOUNTS, -1,-1, TIFF_SHORT, FIELD_STRIPBYTECOUNTS,
- 0, 0, "StripByteCounts" },
- { TIFFTAG_MINSAMPLEVALUE, -2,-1, TIFF_SHORT, FIELD_MINSAMPLEVALUE,
- 1, 0, "MinSampleValue" },
- { TIFFTAG_MAXSAMPLEVALUE, -2,-1, TIFF_SHORT, FIELD_MAXSAMPLEVALUE,
- 1, 0, "MaxSampleValue" },
- { TIFFTAG_XRESOLUTION, 1, 1, TIFF_RATIONAL, FIELD_RESOLUTION,
- 1, 0, "XResolution" },
- { TIFFTAG_YRESOLUTION, 1, 1, TIFF_RATIONAL, FIELD_RESOLUTION,
- 1, 0, "YResolution" },
- { TIFFTAG_PLANARCONFIG, 1, 1, TIFF_SHORT, FIELD_PLANARCONFIG,
- 0, 0, "PlanarConfiguration" },
- { TIFFTAG_PAGENAME, -1,-1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "PageName" },
- { TIFFTAG_XPOSITION, 1, 1, TIFF_RATIONAL, FIELD_POSITION,
- 1, 0, "XPosition" },
- { TIFFTAG_YPOSITION, 1, 1, TIFF_RATIONAL, FIELD_POSITION,
- 1, 0, "YPosition" },
- { TIFFTAG_FREEOFFSETS, -1,-1, TIFF_LONG, FIELD_IGNORE,
- 0, 0, "FreeOffsets" },
- { TIFFTAG_FREEBYTECOUNTS, -1,-1, TIFF_LONG, FIELD_IGNORE,
- 0, 0, "FreeByteCounts" },
- { TIFFTAG_GRAYRESPONSEUNIT, 1, 1, TIFF_SHORT, FIELD_IGNORE,
- 1, 0, "GrayResponseUnit" },
- { TIFFTAG_GRAYRESPONSECURVE,-1,-1, TIFF_SHORT, FIELD_IGNORE,
- 1, 0, "GrayResponseCurve" },
- { TIFFTAG_RESOLUTIONUNIT, 1, 1, TIFF_SHORT, FIELD_RESOLUTIONUNIT,
- 1, 0, "ResolutionUnit" },
- { TIFFTAG_PAGENUMBER, 2, 2, TIFF_SHORT, FIELD_PAGENUMBER,
- 1, 0, "PageNumber" },
- { TIFFTAG_COLORRESPONSEUNIT, 1, 1, TIFF_SHORT, FIELD_IGNORE,
- 1, 0, "ColorResponseUnit" },
- { TIFFTAG_TRANSFERFUNCTION, -1,-1, TIFF_SHORT, FIELD_TRANSFERFUNCTION,
- 1, 0, "TransferFunction" },
- { TIFFTAG_SOFTWARE, -1,-1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "Software" },
- { TIFFTAG_DATETIME, 20,20, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "DateTime" },
- { TIFFTAG_ARTIST, -1,-1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "Artist" },
- { TIFFTAG_HOSTCOMPUTER, -1,-1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "HostComputer" },
- { TIFFTAG_WHITEPOINT, 2, 2, TIFF_RATIONAL, FIELD_CUSTOM,
- 1, 0, "WhitePoint" },
- { TIFFTAG_PRIMARYCHROMATICITIES,6,6,TIFF_RATIONAL, FIELD_CUSTOM,
- 1, 0, "PrimaryChromaticities" },
- { TIFFTAG_COLORMAP, -1,-1, TIFF_SHORT, FIELD_COLORMAP,
- 1, 0, "ColorMap" },
- { TIFFTAG_HALFTONEHINTS, 2, 2, TIFF_SHORT, FIELD_HALFTONEHINTS,
- 1, 0, "HalftoneHints" },
- { TIFFTAG_TILEWIDTH, 1, 1, TIFF_LONG, FIELD_TILEDIMENSIONS,
- 0, 0, "TileWidth" },
- { TIFFTAG_TILEWIDTH, 1, 1, TIFF_SHORT, FIELD_TILEDIMENSIONS,
- 0, 0, "TileWidth" },
- { TIFFTAG_TILELENGTH, 1, 1, TIFF_LONG, FIELD_TILEDIMENSIONS,
- 0, 0, "TileLength" },
- { TIFFTAG_TILELENGTH, 1, 1, TIFF_SHORT, FIELD_TILEDIMENSIONS,
- 0, 0, "TileLength" },
- { TIFFTAG_TILEOFFSETS, -1, 1, TIFF_LONG, FIELD_STRIPOFFSETS,
- 0, 0, "TileOffsets" },
- { TIFFTAG_TILEBYTECOUNTS, -1, 1, TIFF_LONG, FIELD_STRIPBYTECOUNTS,
- 0, 0, "TileByteCounts" },
- { TIFFTAG_TILEBYTECOUNTS, -1, 1, TIFF_SHORT, FIELD_STRIPBYTECOUNTS,
- 0, 0, "TileByteCounts" },
- { TIFFTAG_SUBIFD, -1,-1, TIFF_IFD, FIELD_SUBIFD,
- 1, 1, "SubIFD" },
- { TIFFTAG_SUBIFD, -1,-1, TIFF_LONG, FIELD_SUBIFD,
- 1, 1, "SubIFD" },
- { TIFFTAG_INKSET, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 0, 0, "InkSet" },
- { TIFFTAG_INKNAMES, -1,-1, TIFF_ASCII, FIELD_INKNAMES,
- 1, 1, "InkNames" },
- { TIFFTAG_NUMBEROFINKS, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "NumberOfInks" },
- { TIFFTAG_DOTRANGE, 2, 2, TIFF_SHORT, FIELD_CUSTOM,
- 0, 0, "DotRange" },
- { TIFFTAG_DOTRANGE, 2, 2, TIFF_BYTE, FIELD_CUSTOM,
- 0, 0, "DotRange" },
- { TIFFTAG_TARGETPRINTER, -1,-1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "TargetPrinter" },
- { TIFFTAG_EXTRASAMPLES, -1,-1, TIFF_SHORT, FIELD_EXTRASAMPLES,
- 0, 1, "ExtraSamples" },
-/* XXX for bogus Adobe Photoshop v2.5 files */
- { TIFFTAG_EXTRASAMPLES, -1,-1, TIFF_BYTE, FIELD_EXTRASAMPLES,
- 0, 1, "ExtraSamples" },
- { TIFFTAG_SAMPLEFORMAT, -1,-1, TIFF_SHORT, FIELD_SAMPLEFORMAT,
- 0, 0, "SampleFormat" },
- { TIFFTAG_SMINSAMPLEVALUE, -2,-1, TIFF_ANY, FIELD_SMINSAMPLEVALUE,
- 1, 0, "SMinSampleValue" },
- { TIFFTAG_SMAXSAMPLEVALUE, -2,-1, TIFF_ANY, FIELD_SMAXSAMPLEVALUE,
- 1, 0, "SMaxSampleValue" },
- { TIFFTAG_CLIPPATH, -1, -3, TIFF_BYTE, FIELD_CUSTOM,
- 0, 1, "ClipPath" },
- { TIFFTAG_XCLIPPATHUNITS, 1, 1, TIFF_SLONG, FIELD_CUSTOM,
- 0, 0, "XClipPathUnits" },
- { TIFFTAG_XCLIPPATHUNITS, 1, 1, TIFF_SSHORT, FIELD_CUSTOM,
- 0, 0, "XClipPathUnits" },
- { TIFFTAG_XCLIPPATHUNITS, 1, 1, TIFF_SBYTE, FIELD_CUSTOM,
- 0, 0, "XClipPathUnits" },
- { TIFFTAG_YCLIPPATHUNITS, 1, 1, TIFF_SLONG, FIELD_CUSTOM,
- 0, 0, "YClipPathUnits" },
- { TIFFTAG_YCLIPPATHUNITS, 1, 1, TIFF_SSHORT, FIELD_CUSTOM,
- 0, 0, "YClipPathUnits" },
- { TIFFTAG_YCLIPPATHUNITS, 1, 1, TIFF_SBYTE, FIELD_CUSTOM,
- 0, 0, "YClipPathUnits" },
- { TIFFTAG_YCBCRCOEFFICIENTS, 3, 3, TIFF_RATIONAL, FIELD_CUSTOM,
- 0, 0, "YCbCrCoefficients" },
- { TIFFTAG_YCBCRSUBSAMPLING, 2, 2, TIFF_SHORT, FIELD_YCBCRSUBSAMPLING,
- 0, 0, "YCbCrSubsampling" },
- { TIFFTAG_YCBCRPOSITIONING, 1, 1, TIFF_SHORT, FIELD_YCBCRPOSITIONING,
- 0, 0, "YCbCrPositioning" },
- { TIFFTAG_REFERENCEBLACKWHITE, 6, 6, TIFF_RATIONAL, FIELD_CUSTOM,
- 1, 0, "ReferenceBlackWhite" },
-/* XXX temporarily accept LONG for backwards compatibility */
- { TIFFTAG_REFERENCEBLACKWHITE, 6, 6, TIFF_LONG, FIELD_CUSTOM,
- 1, 0, "ReferenceBlackWhite" },
- { TIFFTAG_XMLPACKET, -3,-3, TIFF_BYTE, FIELD_CUSTOM,
- 0, 1, "XMLPacket" },
-/* begin SGI tags */
- { TIFFTAG_MATTEING, 1, 1, TIFF_SHORT, FIELD_EXTRASAMPLES,
- 0, 0, "Matteing" },
- { TIFFTAG_DATATYPE, -2,-1, TIFF_SHORT, FIELD_SAMPLEFORMAT,
- 0, 0, "DataType" },
- { TIFFTAG_IMAGEDEPTH, 1, 1, TIFF_LONG, FIELD_IMAGEDEPTH,
- 0, 0, "ImageDepth" },
- { TIFFTAG_IMAGEDEPTH, 1, 1, TIFF_SHORT, FIELD_IMAGEDEPTH,
- 0, 0, "ImageDepth" },
- { TIFFTAG_TILEDEPTH, 1, 1, TIFF_LONG, FIELD_TILEDEPTH,
- 0, 0, "TileDepth" },
- { TIFFTAG_TILEDEPTH, 1, 1, TIFF_SHORT, FIELD_TILEDEPTH,
- 0, 0, "TileDepth" },
-/* end SGI tags */
-/* begin Pixar tags */
- { TIFFTAG_PIXAR_IMAGEFULLWIDTH, 1, 1, TIFF_LONG, FIELD_CUSTOM,
- 1, 0, "ImageFullWidth" },
- { TIFFTAG_PIXAR_IMAGEFULLLENGTH, 1, 1, TIFF_LONG, FIELD_CUSTOM,
- 1, 0, "ImageFullLength" },
- { TIFFTAG_PIXAR_TEXTUREFORMAT, -1, -1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "TextureFormat" },
- { TIFFTAG_PIXAR_WRAPMODES, -1, -1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "TextureWrapModes" },
- { TIFFTAG_PIXAR_FOVCOT, 1, 1, TIFF_FLOAT, FIELD_CUSTOM,
- 1, 0, "FieldOfViewCotangent" },
- { TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN, 16,16, TIFF_FLOAT,
- FIELD_CUSTOM, 1, 0, "MatrixWorldToScreen" },
- { TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA, 16,16, TIFF_FLOAT,
- FIELD_CUSTOM, 1, 0, "MatrixWorldToCamera" },
- { TIFFTAG_COPYRIGHT, -1, -1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "Copyright" },
-/* end Pixar tags */
- { TIFFTAG_RICHTIFFIPTC, -3, -3, TIFF_LONG, FIELD_CUSTOM,
- 0, 1, "RichTIFFIPTC" },
- { TIFFTAG_PHOTOSHOP, -3, -3, TIFF_BYTE, FIELD_CUSTOM,
- 0, 1, "Photoshop" },
- { TIFFTAG_EXIFIFD, 1, 1, TIFF_LONG, FIELD_CUSTOM,
- 0, 0, "EXIFIFDOffset" },
- { TIFFTAG_ICCPROFILE, -3, -3, TIFF_UNDEFINED, FIELD_CUSTOM,
- 0, 1, "ICC Profile" },
- { TIFFTAG_GPSIFD, 1, 1, TIFF_LONG, FIELD_CUSTOM,
- 0, 0, "GPSIFDOffset" },
- { TIFFTAG_STONITS, 1, 1, TIFF_DOUBLE, FIELD_CUSTOM,
- 0, 0, "StoNits" },
- { TIFFTAG_INTEROPERABILITYIFD, 1, 1, TIFF_LONG, FIELD_CUSTOM,
- 0, 0, "InteroperabilityIFDOffset" },
-/* begin DNG tags */
- { TIFFTAG_DNGVERSION, 4, 4, TIFF_BYTE, FIELD_CUSTOM,
- 0, 0, "DNGVersion" },
- { TIFFTAG_DNGBACKWARDVERSION, 4, 4, TIFF_BYTE, FIELD_CUSTOM,
- 0, 0, "DNGBackwardVersion" },
- { TIFFTAG_UNIQUECAMERAMODEL, -1, -1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "UniqueCameraModel" },
- { TIFFTAG_LOCALIZEDCAMERAMODEL, -1, -1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "LocalizedCameraModel" },
- { TIFFTAG_LOCALIZEDCAMERAMODEL, -1, -1, TIFF_BYTE, FIELD_CUSTOM,
- 1, 1, "LocalizedCameraModel" },
- { TIFFTAG_CFAPLANECOLOR, -1, -1, TIFF_BYTE, FIELD_CUSTOM,
- 0, 1, "CFAPlaneColor" },
- { TIFFTAG_CFALAYOUT, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 0, 0, "CFALayout" },
- { TIFFTAG_LINEARIZATIONTABLE, -1, -1, TIFF_SHORT, FIELD_CUSTOM,
- 0, 1, "LinearizationTable" },
- { TIFFTAG_BLACKLEVELREPEATDIM, 2, 2, TIFF_SHORT, FIELD_CUSTOM,
- 0, 0, "BlackLevelRepeatDim" },
- { TIFFTAG_BLACKLEVEL, -1, -1, TIFF_LONG, FIELD_CUSTOM,
- 0, 1, "BlackLevel" },
- { TIFFTAG_BLACKLEVEL, -1, -1, TIFF_SHORT, FIELD_CUSTOM,
- 0, 1, "BlackLevel" },
- { TIFFTAG_BLACKLEVEL, -1, -1, TIFF_RATIONAL, FIELD_CUSTOM,
- 0, 1, "BlackLevel" },
- { TIFFTAG_BLACKLEVELDELTAH, -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM,
- 0, 1, "BlackLevelDeltaH" },
- { TIFFTAG_BLACKLEVELDELTAV, -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM,
- 0, 1, "BlackLevelDeltaV" },
- { TIFFTAG_WHITELEVEL, -2, -2, TIFF_LONG, FIELD_CUSTOM,
- 0, 0, "WhiteLevel" },
- { TIFFTAG_WHITELEVEL, -2, -2, TIFF_SHORT, FIELD_CUSTOM,
- 0, 0, "WhiteLevel" },
- { TIFFTAG_DEFAULTSCALE, 2, 2, TIFF_RATIONAL, FIELD_CUSTOM,
- 0, 0, "DefaultScale" },
- { TIFFTAG_BESTQUALITYSCALE, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 0, 0, "BestQualityScale" },
- { TIFFTAG_DEFAULTCROPORIGIN, 2, 2, TIFF_LONG, FIELD_CUSTOM,
- 0, 0, "DefaultCropOrigin" },
- { TIFFTAG_DEFAULTCROPORIGIN, 2, 2, TIFF_SHORT, FIELD_CUSTOM,
- 0, 0, "DefaultCropOrigin" },
- { TIFFTAG_DEFAULTCROPORIGIN, 2, 2, TIFF_RATIONAL, FIELD_CUSTOM,
- 0, 0, "DefaultCropOrigin" },
- { TIFFTAG_DEFAULTCROPSIZE, 2, 2, TIFF_LONG, FIELD_CUSTOM,
- 0, 0, "DefaultCropSize" },
- { TIFFTAG_DEFAULTCROPSIZE, 2, 2, TIFF_SHORT, FIELD_CUSTOM,
- 0, 0, "DefaultCropSize" },
- { TIFFTAG_DEFAULTCROPSIZE, 2, 2, TIFF_RATIONAL, FIELD_CUSTOM,
- 0, 0, "DefaultCropSize" },
- { TIFFTAG_COLORMATRIX1, -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM,
- 0, 1, "ColorMatrix1" },
- { TIFFTAG_COLORMATRIX2, -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM,
- 0, 1, "ColorMatrix2" },
- { TIFFTAG_CAMERACALIBRATION1, -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM,
- 0, 1, "CameraCalibration1" },
- { TIFFTAG_CAMERACALIBRATION2, -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM,
- 0, 1, "CameraCalibration2" },
- { TIFFTAG_REDUCTIONMATRIX1, -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM,
- 0, 1, "ReductionMatrix1" },
- { TIFFTAG_REDUCTIONMATRIX2, -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM,
- 0, 1, "ReductionMatrix2" },
- { TIFFTAG_ANALOGBALANCE, -1, -1, TIFF_RATIONAL, FIELD_CUSTOM,
- 0, 1, "AnalogBalance" },
- { TIFFTAG_ASSHOTNEUTRAL, -1, -1, TIFF_SHORT, FIELD_CUSTOM,
- 0, 1, "AsShotNeutral" },
- { TIFFTAG_ASSHOTNEUTRAL, -1, -1, TIFF_RATIONAL, FIELD_CUSTOM,
- 0, 1, "AsShotNeutral" },
- { TIFFTAG_ASSHOTWHITEXY, 2, 2, TIFF_RATIONAL, FIELD_CUSTOM,
- 0, 0, "AsShotWhiteXY" },
- { TIFFTAG_BASELINEEXPOSURE, 1, 1, TIFF_SRATIONAL, FIELD_CUSTOM,
- 0, 0, "BaselineExposure" },
- { TIFFTAG_BASELINENOISE, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 0, 0, "BaselineNoise" },
- { TIFFTAG_BASELINESHARPNESS, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 0, 0, "BaselineSharpness" },
- { TIFFTAG_BAYERGREENSPLIT, 1, 1, TIFF_LONG, FIELD_CUSTOM,
- 0, 0, "BayerGreenSplit" },
- { TIFFTAG_LINEARRESPONSELIMIT, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 0, 0, "LinearResponseLimit" },
- { TIFFTAG_CAMERASERIALNUMBER, -1, -1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "CameraSerialNumber" },
- { TIFFTAG_LENSINFO, 4, 4, TIFF_RATIONAL, FIELD_CUSTOM,
- 0, 0, "LensInfo" },
- { TIFFTAG_CHROMABLURRADIUS, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 0, 0, "ChromaBlurRadius" },
- { TIFFTAG_ANTIALIASSTRENGTH, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 0, 0, "AntiAliasStrength" },
- { TIFFTAG_SHADOWSCALE, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 0, 0, "ShadowScale" },
- { TIFFTAG_DNGPRIVATEDATA, -1, -1, TIFF_BYTE, FIELD_CUSTOM,
- 0, 1, "DNGPrivateData" },
- { TIFFTAG_MAKERNOTESAFETY, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 0, 0, "MakerNoteSafety" },
- { TIFFTAG_CALIBRATIONILLUMINANT1, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 0, 0, "CalibrationIlluminant1" },
- { TIFFTAG_CALIBRATIONILLUMINANT2, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 0, 0, "CalibrationIlluminant2" },
- { TIFFTAG_RAWDATAUNIQUEID, 16, 16, TIFF_BYTE, FIELD_CUSTOM,
- 0, 0, "RawDataUniqueID" },
- { TIFFTAG_ORIGINALRAWFILENAME, -1, -1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "OriginalRawFileName" },
- { TIFFTAG_ORIGINALRAWFILENAME, -1, -1, TIFF_BYTE, FIELD_CUSTOM,
- 1, 1, "OriginalRawFileName" },
- { TIFFTAG_ORIGINALRAWFILEDATA, -1, -1, TIFF_UNDEFINED, FIELD_CUSTOM,
- 0, 1, "OriginalRawFileData" },
- { TIFFTAG_ACTIVEAREA, 4, 4, TIFF_LONG, FIELD_CUSTOM,
- 0, 0, "ActiveArea" },
- { TIFFTAG_ACTIVEAREA, 4, 4, TIFF_SHORT, FIELD_CUSTOM,
- 0, 0, "ActiveArea" },
- { TIFFTAG_MASKEDAREAS, -1, -1, TIFF_LONG, FIELD_CUSTOM,
- 0, 1, "MaskedAreas" },
- { TIFFTAG_ASSHOTICCPROFILE, -1, -1, TIFF_UNDEFINED, FIELD_CUSTOM,
- 0, 1, "AsShotICCProfile" },
- { TIFFTAG_ASSHOTPREPROFILEMATRIX, -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM,
- 0, 1, "AsShotPreProfileMatrix" },
- { TIFFTAG_CURRENTICCPROFILE, -1, -1, TIFF_UNDEFINED, FIELD_CUSTOM,
- 0, 1, "CurrentICCProfile" },
- { TIFFTAG_CURRENTPREPROFILEMATRIX, -1, -1, TIFF_SRATIONAL, FIELD_CUSTOM,
- 0, 1, "CurrentPreProfileMatrix" },
-/* end DNG tags */
-};
-
-static const TIFFFieldInfo
-exifFieldInfo[] = {
- { EXIFTAG_EXPOSURETIME, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 1, 0, "ExposureTime" },
- { EXIFTAG_FNUMBER, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 1, 0, "FNumber" },
- { EXIFTAG_EXPOSUREPROGRAM, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "ExposureProgram" },
- { EXIFTAG_SPECTRALSENSITIVITY, -1, -1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "SpectralSensitivity" },
- { EXIFTAG_ISOSPEEDRATINGS, -1, -1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 1, "ISOSpeedRatings" },
- { EXIFTAG_OECF, -1, -1, TIFF_UNDEFINED, FIELD_CUSTOM,
- 1, 1, "OptoelectricConversionFactor" },
- { EXIFTAG_EXIFVERSION, 4, 4, TIFF_UNDEFINED, FIELD_CUSTOM,
- 1, 0, "ExifVersion" },
- { EXIFTAG_DATETIMEORIGINAL, 20, 20, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "DateTimeOriginal" },
- { EXIFTAG_DATETIMEDIGITIZED, 20, 20, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "DateTimeDigitized" },
- { EXIFTAG_COMPONENTSCONFIGURATION, 4, 4, TIFF_UNDEFINED, FIELD_CUSTOM,
- 1, 0, "ComponentsConfiguration" },
- { EXIFTAG_COMPRESSEDBITSPERPIXEL, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 1, 0, "CompressedBitsPerPixel" },
- { EXIFTAG_SHUTTERSPEEDVALUE, 1, 1, TIFF_SRATIONAL, FIELD_CUSTOM,
- 1, 0, "ShutterSpeedValue" },
- { EXIFTAG_APERTUREVALUE, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 1, 0, "ApertureValue" },
- { EXIFTAG_BRIGHTNESSVALUE, 1, 1, TIFF_SRATIONAL, FIELD_CUSTOM,
- 1, 0, "BrightnessValue" },
- { EXIFTAG_EXPOSUREBIASVALUE, 1, 1, TIFF_SRATIONAL, FIELD_CUSTOM,
- 1, 0, "ExposureBiasValue" },
- { EXIFTAG_MAXAPERTUREVALUE, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 1, 0, "MaxApertureValue" },
- { EXIFTAG_SUBJECTDISTANCE, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 1, 0, "SubjectDistance" },
- { EXIFTAG_METERINGMODE, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "MeteringMode" },
- { EXIFTAG_LIGHTSOURCE, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "LightSource" },
- { EXIFTAG_FLASH, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "Flash" },
- { EXIFTAG_FOCALLENGTH, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 1, 0, "FocalLength" },
- { EXIFTAG_SUBJECTAREA, -1, -1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 1, "SubjectArea" },
- { EXIFTAG_MAKERNOTE, -1, -1, TIFF_UNDEFINED, FIELD_CUSTOM,
- 1, 1, "MakerNote" },
- { EXIFTAG_USERCOMMENT, -1, -1, TIFF_UNDEFINED, FIELD_CUSTOM,
- 1, 1, "UserComment" },
- { EXIFTAG_SUBSECTIME, -1, -1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "SubSecTime" },
- { EXIFTAG_SUBSECTIMEORIGINAL, -1, -1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "SubSecTimeOriginal" },
- { EXIFTAG_SUBSECTIMEDIGITIZED,-1, -1, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "SubSecTimeDigitized" },
- { EXIFTAG_FLASHPIXVERSION, 4, 4, TIFF_UNDEFINED, FIELD_CUSTOM,
- 1, 0, "FlashpixVersion" },
- { EXIFTAG_COLORSPACE, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "ColorSpace" },
- { EXIFTAG_PIXELXDIMENSION, 1, 1, TIFF_LONG, FIELD_CUSTOM,
- 1, 0, "PixelXDimension" },
- { EXIFTAG_PIXELXDIMENSION, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "PixelXDimension" },
- { EXIFTAG_PIXELYDIMENSION, 1, 1, TIFF_LONG, FIELD_CUSTOM,
- 1, 0, "PixelYDimension" },
- { EXIFTAG_PIXELYDIMENSION, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "PixelYDimension" },
- { EXIFTAG_RELATEDSOUNDFILE, 13, 13, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "RelatedSoundFile" },
- { EXIFTAG_FLASHENERGY, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 1, 0, "FlashEnergy" },
- { EXIFTAG_SPATIALFREQUENCYRESPONSE, -1, -1, TIFF_UNDEFINED, FIELD_CUSTOM,
- 1, 1, "SpatialFrequencyResponse" },
- { EXIFTAG_FOCALPLANEXRESOLUTION, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 1, 0, "FocalPlaneXResolution" },
- { EXIFTAG_FOCALPLANEYRESOLUTION, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 1, 0, "FocalPlaneYResolution" },
- { EXIFTAG_FOCALPLANERESOLUTIONUNIT, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "FocalPlaneResolutionUnit" },
- { EXIFTAG_SUBJECTLOCATION, 2, 2, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "SubjectLocation" },
- { EXIFTAG_EXPOSUREINDEX, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 1, 0, "ExposureIndex" },
- { EXIFTAG_SENSINGMETHOD, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "SensingMethod" },
- { EXIFTAG_FILESOURCE, 1, 1, TIFF_UNDEFINED, FIELD_CUSTOM,
- 1, 0, "FileSource" },
- { EXIFTAG_SCENETYPE, 1, 1, TIFF_UNDEFINED, FIELD_CUSTOM,
- 1, 0, "SceneType" },
- { EXIFTAG_CFAPATTERN, -1, -1, TIFF_UNDEFINED, FIELD_CUSTOM,
- 1, 1, "CFAPattern" },
- { EXIFTAG_CUSTOMRENDERED, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "CustomRendered" },
- { EXIFTAG_EXPOSUREMODE, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "ExposureMode" },
- { EXIFTAG_WHITEBALANCE, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "WhiteBalance" },
- { EXIFTAG_DIGITALZOOMRATIO, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 1, 0, "DigitalZoomRatio" },
- { EXIFTAG_FOCALLENGTHIN35MMFILM, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "FocalLengthIn35mmFilm" },
- { EXIFTAG_SCENECAPTURETYPE, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "SceneCaptureType" },
- { EXIFTAG_GAINCONTROL, 1, 1, TIFF_RATIONAL, FIELD_CUSTOM,
- 1, 0, "GainControl" },
- { EXIFTAG_CONTRAST, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "Contrast" },
- { EXIFTAG_SATURATION, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "Saturation" },
- { EXIFTAG_SHARPNESS, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "Sharpness" },
- { EXIFTAG_DEVICESETTINGDESCRIPTION, -1, -1, TIFF_UNDEFINED, FIELD_CUSTOM,
- 1, 1, "DeviceSettingDescription" },
- { EXIFTAG_SUBJECTDISTANCERANGE, 1, 1, TIFF_SHORT, FIELD_CUSTOM,
- 1, 0, "SubjectDistanceRange" },
- { EXIFTAG_IMAGEUNIQUEID, 33, 33, TIFF_ASCII, FIELD_CUSTOM,
- 1, 0, "ImageUniqueID" }
-};
-
-const TIFFFieldInfo *
-_TIFFGetFieldInfo(size_t *size)
-{
- *size = TIFFArrayCount(tiffFieldInfo);
- return tiffFieldInfo;
-}
-
-const TIFFFieldInfo *
-_TIFFGetExifFieldInfo(size_t *size)
-{
- *size = TIFFArrayCount(exifFieldInfo);
- return exifFieldInfo;
-}
-
-void
-_TIFFSetupFieldInfo(TIFF* tif, const TIFFFieldInfo info[], size_t n)
-{
- if (tif->tif_fieldinfo) {
- size_t i;
-
- for (i = 0; i < tif->tif_nfields; i++)
- {
- TIFFFieldInfo *fld = tif->tif_fieldinfo[i];
- if (fld->field_bit == FIELD_CUSTOM &&
- strncmp("Tag ", fld->field_name, 4) == 0) {
- _TIFFfree(fld->field_name);
- _TIFFfree(fld);
- }
- }
-
- _TIFFfree(tif->tif_fieldinfo);
- tif->tif_nfields = 0;
- }
- if (!_TIFFMergeFieldInfo(tif, info, n))
- {
- TIFFErrorExt(tif->tif_clientdata, "_TIFFSetupFieldInfo",
- "Setting up field info failed");
- }
-}
-
-static int
-tagCompare(const void* a, const void* b)
-{
- const TIFFFieldInfo* ta = *(const TIFFFieldInfo**) a;
- const TIFFFieldInfo* tb = *(const TIFFFieldInfo**) b;
- /* NB: be careful of return values for 16-bit platforms */
- if (ta->field_tag != tb->field_tag)
- return (int)ta->field_tag - (int)tb->field_tag;
- else
- return (ta->field_type == TIFF_ANY) ?
- 0 : ((int)tb->field_type - (int)ta->field_type);
-}
-
-static int
-tagNameCompare(const void* a, const void* b)
-{
- const TIFFFieldInfo* ta = *(const TIFFFieldInfo**) a;
- const TIFFFieldInfo* tb = *(const TIFFFieldInfo**) b;
- int ret = strcmp(ta->field_name, tb->field_name);
-
- if (ret)
- return ret;
- else
- return (ta->field_type == TIFF_ANY) ?
- 0 : ((int)tb->field_type - (int)ta->field_type);
-}
-
-void
-TIFFMergeFieldInfo(TIFF* tif, const TIFFFieldInfo info[], int n)
-{
- if (_TIFFMergeFieldInfo(tif, info, n) < 0)
- {
- TIFFErrorExt(tif->tif_clientdata, "TIFFMergeFieldInfo",
- "Merging block of %d fields failed", n);
- }
-}
-
-int
-_TIFFMergeFieldInfo(TIFF* tif, const TIFFFieldInfo info[], int n)
-{
- static const char module[] = "_TIFFMergeFieldInfo";
- static const char reason[] = "for field info array";
- TIFFFieldInfo** tp;
- int i;
-
- tif->tif_foundfield = NULL;
-
- if (tif->tif_nfields > 0) {
- tif->tif_fieldinfo = (TIFFFieldInfo**)
- _TIFFCheckRealloc(tif, tif->tif_fieldinfo,
- (tif->tif_nfields + n),
- sizeof (TIFFFieldInfo*), reason);
- } else {
- tif->tif_fieldinfo = (TIFFFieldInfo**)
- _TIFFCheckMalloc(tif, n, sizeof (TIFFFieldInfo*),
- reason);
- }
- if (!tif->tif_fieldinfo) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "Failed to allocate field info array");
- return 0;
- }
- tp = tif->tif_fieldinfo + tif->tif_nfields;
- for (i = 0; i < n; i++)
- {
- const TIFFFieldInfo *fip =
- _TIFFFindFieldInfo(tif, info[i].field_tag, info[i].field_type);
-
- /* only add definitions that aren't already present */
- if (!fip) {
- *tp++ = (TIFFFieldInfo*) (info + i);
- tif->tif_nfields++;
- }
- }
-
- /* Sort the field info by tag number */
- qsort(tif->tif_fieldinfo, tif->tif_nfields,
- sizeof (TIFFFieldInfo*), tagCompare);
-
- return n;
-}
-
-void
-_TIFFPrintFieldInfo(TIFF* tif, FILE* fd)
-{
- size_t i;
-
- fprintf(fd, "%s: \n", tif->tif_name);
- for (i = 0; i < tif->tif_nfields; i++) {
- const TIFFFieldInfo* fip = tif->tif_fieldinfo[i];
- fprintf(fd, "field[%2d] %5lu, %2d, %2d, %d, %2d, %5s, %5s, %s\n"
- , (int)i
- , (unsigned long) fip->field_tag
- , fip->field_readcount, fip->field_writecount
- , fip->field_type
- , fip->field_bit
- , fip->field_oktochange ? "TRUE" : "FALSE"
- , fip->field_passcount ? "TRUE" : "FALSE"
- , fip->field_name
- );
- }
-}
-
-/*
- * Return size of TIFFDataType in bytes
- */
-int
-TIFFDataWidth(TIFFDataType type)
-{
- switch(type)
- {
- case 0: /* nothing */
- case 1: /* TIFF_BYTE */
- case 2: /* TIFF_ASCII */
- case 6: /* TIFF_SBYTE */
- case 7: /* TIFF_UNDEFINED */
- return 1;
- case 3: /* TIFF_SHORT */
- case 8: /* TIFF_SSHORT */
- return 2;
- case 4: /* TIFF_LONG */
- case 9: /* TIFF_SLONG */
- case 11: /* TIFF_FLOAT */
- case 13: /* TIFF_IFD */
- return 4;
- case 5: /* TIFF_RATIONAL */
- case 10: /* TIFF_SRATIONAL */
- case 12: /* TIFF_DOUBLE */
- return 8;
- default:
- return 0; /* will return 0 for unknown types */
- }
-}
-
-/*
- * Return size of TIFFDataType in bytes.
- *
- * XXX: We need a separate function to determine the space needed
- * to store the value. For TIFF_RATIONAL values TIFFDataWidth() returns 8,
- * but we use 4-byte float to represent rationals.
- */
-int
-_TIFFDataSize(TIFFDataType type)
-{
- switch (type) {
- case TIFF_BYTE:
- case TIFF_SBYTE:
- case TIFF_ASCII:
- case TIFF_UNDEFINED:
- return 1;
- case TIFF_SHORT:
- case TIFF_SSHORT:
- return 2;
- case TIFF_LONG:
- case TIFF_SLONG:
- case TIFF_FLOAT:
- case TIFF_IFD:
- case TIFF_RATIONAL:
- case TIFF_SRATIONAL:
- return 4;
- case TIFF_DOUBLE:
- return 8;
- default:
- return 0;
- }
-}
-
-/*
- * Return nearest TIFFDataType to the sample type of an image.
- */
-TIFFDataType
-_TIFFSampleToTagType(TIFF* tif)
-{
- uint32 bps = TIFFhowmany8(tif->tif_dir.td_bitspersample);
-
- switch (tif->tif_dir.td_sampleformat) {
- case SAMPLEFORMAT_IEEEFP:
- return (bps == 4 ? TIFF_FLOAT : TIFF_DOUBLE);
- case SAMPLEFORMAT_INT:
- return (bps <= 1 ? TIFF_SBYTE :
- bps <= 2 ? TIFF_SSHORT : TIFF_SLONG);
- case SAMPLEFORMAT_UINT:
- return (bps <= 1 ? TIFF_BYTE :
- bps <= 2 ? TIFF_SHORT : TIFF_LONG);
- case SAMPLEFORMAT_VOID:
- return (TIFF_UNDEFINED);
- }
- /*NOTREACHED*/
- return (TIFF_UNDEFINED);
-}
-
-const TIFFFieldInfo*
-_TIFFFindFieldInfo(TIFF* tif, ttag_t tag, TIFFDataType dt)
-{
- TIFFFieldInfo key = {0, 0, 0, TIFF_NOTYPE, 0, 0, 0, 0};
- TIFFFieldInfo* pkey = &key;
- const TIFFFieldInfo **ret;
-
- if (tif->tif_foundfield && tif->tif_foundfield->field_tag == tag &&
- (dt == TIFF_ANY || dt == tif->tif_foundfield->field_type))
- return tif->tif_foundfield;
-
- /* If we are invoked with no field information, then just return. */
- if ( !tif->tif_fieldinfo ) {
- return NULL;
- }
-
- /* NB: use sorted search (e.g. binary search) */
- key.field_tag = tag;
- key.field_type = dt;
-
- ret = (const TIFFFieldInfo **) bsearch(&pkey,
- tif->tif_fieldinfo,
- tif->tif_nfields,
- sizeof(TIFFFieldInfo *),
- tagCompare);
- return tif->tif_foundfield = (ret ? *ret : NULL);
-}
-
-const TIFFFieldInfo*
-_TIFFFindFieldInfoByName(TIFF* tif, const char *field_name, TIFFDataType dt)
-{
- TIFFFieldInfo key = {0, 0, 0, TIFF_NOTYPE, 0, 0, 0, 0};
- TIFFFieldInfo* pkey = &key;
- const TIFFFieldInfo **ret;
-
- if (tif->tif_foundfield
- && streq(tif->tif_foundfield->field_name, field_name)
- && (dt == TIFF_ANY || dt == tif->tif_foundfield->field_type))
- return (tif->tif_foundfield);
-
- /* If we are invoked with no field information, then just return. */
- if ( !tif->tif_fieldinfo ) {
- return NULL;
- }
-
- /* NB: use sorted search (e.g. binary search) */
- key.field_name = (char *)field_name;
- key.field_type = dt;
-
- ret = (const TIFFFieldInfo **) lfind(&pkey,
- tif->tif_fieldinfo,
- &tif->tif_nfields,
- sizeof(TIFFFieldInfo *),
- tagNameCompare);
- return tif->tif_foundfield = (ret ? *ret : NULL);
-}
-
-const TIFFFieldInfo*
-_TIFFFieldWithTag(TIFF* tif, ttag_t tag)
-{
- const TIFFFieldInfo* fip = _TIFFFindFieldInfo(tif, tag, TIFF_ANY);
- if (!fip) {
- TIFFErrorExt(tif->tif_clientdata, "TIFFFieldWithTag",
- "Internal error, unknown tag 0x%x",
- (unsigned int) tag);
- assert(fip != NULL);
- /*NOTREACHED*/
- }
- return (fip);
-}
-
-const TIFFFieldInfo*
-_TIFFFieldWithName(TIFF* tif, const char *field_name)
-{
- const TIFFFieldInfo* fip =
- _TIFFFindFieldInfoByName(tif, field_name, TIFF_ANY);
- if (!fip) {
- TIFFErrorExt(tif->tif_clientdata, "TIFFFieldWithName",
- "Internal error, unknown tag %s", field_name);
- assert(fip != NULL);
- /*NOTREACHED*/
- }
- return (fip);
-}
-
-const TIFFFieldInfo*
-_TIFFFindOrRegisterFieldInfo( TIFF *tif, ttag_t tag, TIFFDataType dt )
-
-{
- const TIFFFieldInfo *fld;
-
- fld = _TIFFFindFieldInfo( tif, tag, dt );
- if( fld == NULL )
- {
- fld = _TIFFCreateAnonFieldInfo( tif, tag, dt );
- if (!_TIFFMergeFieldInfo(tif, fld, 1))
- return NULL;
- }
-
- return fld;
-}
-
-TIFFFieldInfo*
-_TIFFCreateAnonFieldInfo(TIFF *tif, ttag_t tag, TIFFDataType field_type)
-{
- TIFFFieldInfo *fld;
- (void) tif;
-
- fld = (TIFFFieldInfo *) _TIFFmalloc(sizeof (TIFFFieldInfo));
- if (fld == NULL)
- return NULL;
- _TIFFmemset( fld, 0, sizeof(TIFFFieldInfo) );
-
- fld->field_tag = tag;
- fld->field_readcount = TIFF_VARIABLE2;
- fld->field_writecount = TIFF_VARIABLE2;
- fld->field_type = field_type;
- fld->field_bit = FIELD_CUSTOM;
- fld->field_oktochange = TRUE;
- fld->field_passcount = TRUE;
- fld->field_name = (char *) _TIFFmalloc(32);
- if (fld->field_name == NULL) {
- _TIFFfree(fld);
- return NULL;
- }
-
- /*
- * note that this name is a special sign to TIFFClose() and
- * _TIFFSetupFieldInfo() to free the field
- */
- sprintf(fld->field_name, "Tag %d", (int) tag);
-
- return fld;
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_dirread.c b/src/3rdparty/libtiff/libtiff/tif_dirread.c
deleted file mode 100644
index 52d53fc3ce..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_dirread.c
+++ /dev/null
@@ -1,2016 +0,0 @@
-/* $Id: tif_dirread.c,v 1.92.2.6 2009-10-29 20:04:32 bfriesen Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- *
- * Directory Read Support Routines.
- */
-#include "tiffiop.h"
-
-#define IGNORE 0 /* tag placeholder used below */
-
-#ifdef HAVE_IEEEFP
-# define TIFFCvtIEEEFloatToNative(tif, n, fp)
-# define TIFFCvtIEEEDoubleToNative(tif, n, dp)
-#else
-extern void TIFFCvtIEEEFloatToNative(TIFF*, uint32, float*);
-extern void TIFFCvtIEEEDoubleToNative(TIFF*, uint32, double*);
-#endif
-
-static TIFFDirEntry* TIFFReadDirectoryFind(TIFFDirEntry* dir,
- uint16 dircount, uint16 tagid);
-static int EstimateStripByteCounts(TIFF*, TIFFDirEntry*, uint16);
-static void MissingRequired(TIFF*, const char*);
-static int TIFFCheckDirOffset(TIFF*, toff_t);
-static int CheckDirCount(TIFF*, TIFFDirEntry*, uint32);
-static uint16 TIFFFetchDirectory(TIFF*, toff_t, TIFFDirEntry**, toff_t *);
-static tsize_t TIFFFetchData(TIFF*, TIFFDirEntry*, char*);
-static tsize_t TIFFFetchString(TIFF*, TIFFDirEntry*, char*);
-static float TIFFFetchRational(TIFF*, TIFFDirEntry*);
-static int TIFFFetchNormalTag(TIFF*, TIFFDirEntry*);
-static int TIFFFetchPerSampleShorts(TIFF*, TIFFDirEntry*, uint16*);
-static int TIFFFetchPerSampleLongs(TIFF*, TIFFDirEntry*, uint32*);
-static int TIFFFetchPerSampleAnys(TIFF*, TIFFDirEntry*, double*);
-static int TIFFFetchShortArray(TIFF*, TIFFDirEntry*, uint16*);
-static int TIFFFetchStripThing(TIFF*, TIFFDirEntry*, long, uint32**);
-static int TIFFFetchRefBlackWhite(TIFF*, TIFFDirEntry*);
-static int TIFFFetchSubjectDistance(TIFF*, TIFFDirEntry*);
-static float TIFFFetchFloat(TIFF*, TIFFDirEntry*);
-static int TIFFFetchFloatArray(TIFF*, TIFFDirEntry*, float*);
-static int TIFFFetchDoubleArray(TIFF*, TIFFDirEntry*, double*);
-static int TIFFFetchAnyArray(TIFF*, TIFFDirEntry*, double*);
-static int TIFFFetchShortPair(TIFF*, TIFFDirEntry*);
-static void ChopUpSingleUncompressedStrip(TIFF*);
-
-/*
- * Read the next TIFF directory from a file and convert it to the internal
- * format. We read directories sequentially.
- */
-int
-TIFFReadDirectory(TIFF* tif)
-{
- static const char module[] = "TIFFReadDirectory";
-
- int n;
- TIFFDirectory* td;
- TIFFDirEntry *dp, *dir = NULL;
- uint16 iv;
- uint32 v;
- const TIFFFieldInfo* fip;
- size_t fix;
- uint16 dircount;
- int diroutoforderwarning = 0, compressionknown = 0;
-
- tif->tif_diroff = tif->tif_nextdiroff;
- /*
- * Check whether we have the last offset or bad offset (IFD looping).
- */
- if (!TIFFCheckDirOffset(tif, tif->tif_nextdiroff))
- return 0;
- /*
- * Cleanup any previous compression state.
- */
- (*tif->tif_cleanup)(tif);
- tif->tif_curdir++;
- dircount = TIFFFetchDirectory(tif, tif->tif_nextdiroff,
- &dir, &tif->tif_nextdiroff);
- if (!dircount) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Failed to read directory at offset %u",
- tif->tif_name, tif->tif_nextdiroff);
- return 0;
- }
-
- tif->tif_flags &= ~TIFF_BEENWRITING; /* reset before new dir */
- /*
- * Setup default value and then make a pass over
- * the fields to check type and tag information,
- * and to extract info required to size data
- * structures. A second pass is made afterwards
- * to read in everthing not taken in the first pass.
- */
- td = &tif->tif_dir;
- /* free any old stuff and reinit */
- TIFFFreeDirectory(tif);
- TIFFDefaultDirectory(tif);
- /*
- * Electronic Arts writes gray-scale TIFF files
- * without a PlanarConfiguration directory entry.
- * Thus we setup a default value here, even though
- * the TIFF spec says there is no default value.
- */
- TIFFSetField(tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
-
- /*
- * Sigh, we must make a separate pass through the
- * directory for the following reason:
- *
- * We must process the Compression tag in the first pass
- * in order to merge in codec-private tag definitions (otherwise
- * we may get complaints about unknown tags). However, the
- * Compression tag may be dependent on the SamplesPerPixel
- * tag value because older TIFF specs permited Compression
- * to be written as a SamplesPerPixel-count tag entry.
- * Thus if we don't first figure out the correct SamplesPerPixel
- * tag value then we may end up ignoring the Compression tag
- * value because it has an incorrect count value (if the
- * true value of SamplesPerPixel is not 1).
- *
- * It sure would have been nice if Aldus had really thought
- * this stuff through carefully.
- */
- for (dp = dir, n = dircount; n > 0; n--, dp++) {
- if (tif->tif_flags & TIFF_SWAB) {
- TIFFSwabArrayOfShort(&dp->tdir_tag, 2);
- TIFFSwabArrayOfLong(&dp->tdir_count, 2);
- }
- if (dp->tdir_tag == TIFFTAG_SAMPLESPERPIXEL) {
- if (!TIFFFetchNormalTag(tif, dp))
- goto bad;
- dp->tdir_tag = IGNORE;
- }
- }
- /*
- * First real pass over the directory.
- */
- fix = 0;
- for (dp = dir, n = dircount; n > 0; n--, dp++) {
-
- if (fix >= tif->tif_nfields || dp->tdir_tag == IGNORE)
- continue;
-
- /*
- * Silicon Beach (at least) writes unordered
- * directory tags (violating the spec). Handle
- * it here, but be obnoxious (maybe they'll fix it?).
- */
- if (dp->tdir_tag < tif->tif_fieldinfo[fix]->field_tag) {
- if (!diroutoforderwarning) {
- TIFFWarningExt(tif->tif_clientdata, module,
- "%s: invalid TIFF directory; tags are not sorted in ascending order",
- tif->tif_name);
- diroutoforderwarning = 1;
- }
- fix = 0; /* O(n^2) */
- }
- while (fix < tif->tif_nfields &&
- tif->tif_fieldinfo[fix]->field_tag < dp->tdir_tag)
- fix++;
- if (fix >= tif->tif_nfields ||
- tif->tif_fieldinfo[fix]->field_tag != dp->tdir_tag) {
-
- TIFFWarningExt(tif->tif_clientdata,
- module,
- "%s: unknown field with tag %d (0x%x) encountered",
- tif->tif_name,
- dp->tdir_tag,
- dp->tdir_tag);
-
- if (!_TIFFMergeFieldInfo(tif,
- _TIFFCreateAnonFieldInfo(tif,
- dp->tdir_tag,
- (TIFFDataType) dp->tdir_type),
- 1))
- {
- TIFFWarningExt(tif->tif_clientdata,
- module,
- "Registering anonymous field with tag %d (0x%x) failed",
- dp->tdir_tag,
- dp->tdir_tag);
- goto ignore;
- }
- fix = 0;
- while (fix < tif->tif_nfields &&
- tif->tif_fieldinfo[fix]->field_tag < dp->tdir_tag)
- fix++;
- }
- /*
- * Null out old tags that we ignore.
- */
- if (tif->tif_fieldinfo[fix]->field_bit == FIELD_IGNORE) {
- ignore:
- dp->tdir_tag = IGNORE;
- continue;
- }
- /*
- * Check data type.
- */
- fip = tif->tif_fieldinfo[fix];
- while (dp->tdir_type != (unsigned short) fip->field_type
- && fix < tif->tif_nfields) {
- if (fip->field_type == TIFF_ANY) /* wildcard */
- break;
- fip = tif->tif_fieldinfo[++fix];
- if (fix >= tif->tif_nfields ||
- fip->field_tag != dp->tdir_tag) {
- TIFFWarningExt(tif->tif_clientdata, module,
- "%s: wrong data type %d for \"%s\"; tag ignored",
- tif->tif_name, dp->tdir_type,
- tif->tif_fieldinfo[fix-1]->field_name);
- goto ignore;
- }
- }
- /*
- * Check count if known in advance.
- */
- if (fip->field_readcount != TIFF_VARIABLE
- && fip->field_readcount != TIFF_VARIABLE2) {
- uint32 expected = (fip->field_readcount == TIFF_SPP) ?
- (uint32) td->td_samplesperpixel :
- (uint32) fip->field_readcount;
- if (!CheckDirCount(tif, dp, expected))
- goto ignore;
- }
-
- switch (dp->tdir_tag) {
- case TIFFTAG_COMPRESSION:
- /*
- * The 5.0 spec says the Compression tag has
- * one value, while earlier specs say it has
- * one value per sample. Because of this, we
- * accept the tag if one value is supplied.
- */
- if (dp->tdir_count == 1) {
- v = TIFFExtractData(tif,
- dp->tdir_type, dp->tdir_offset);
- if (!TIFFSetField(tif, dp->tdir_tag, (uint16)v))
- goto bad;
- else
- compressionknown = 1;
- break;
- /* XXX: workaround for broken TIFFs */
- } else if (dp->tdir_type == TIFF_LONG) {
- if (!TIFFFetchPerSampleLongs(tif, dp, &v) ||
- !TIFFSetField(tif, dp->tdir_tag, (uint16)v))
- goto bad;
- } else {
- if (!TIFFFetchPerSampleShorts(tif, dp, &iv)
- || !TIFFSetField(tif, dp->tdir_tag, iv))
- goto bad;
- }
- dp->tdir_tag = IGNORE;
- break;
- case TIFFTAG_STRIPOFFSETS:
- case TIFFTAG_STRIPBYTECOUNTS:
- case TIFFTAG_TILEOFFSETS:
- case TIFFTAG_TILEBYTECOUNTS:
- TIFFSetFieldBit(tif, fip->field_bit);
- break;
- case TIFFTAG_IMAGEWIDTH:
- case TIFFTAG_IMAGELENGTH:
- case TIFFTAG_IMAGEDEPTH:
- case TIFFTAG_TILELENGTH:
- case TIFFTAG_TILEWIDTH:
- case TIFFTAG_TILEDEPTH:
- case TIFFTAG_PLANARCONFIG:
- case TIFFTAG_ROWSPERSTRIP:
- case TIFFTAG_EXTRASAMPLES:
- if (!TIFFFetchNormalTag(tif, dp))
- goto bad;
- dp->tdir_tag = IGNORE;
- break;
- }
- }
-
- /*
- * XXX: OJPEG hack.
- * If a) compression is OJPEG, b) planarconfig tag says it's separate,
- * c) strip offsets/bytecounts tag are both present and
- * d) both contain exactly one value, then we consistently find
- * that the buggy implementation of the buggy compression scheme
- * matches contig planarconfig best. So we 'fix-up' the tag here
- */
- if ((td->td_compression==COMPRESSION_OJPEG) &&
- (td->td_planarconfig==PLANARCONFIG_SEPARATE)) {
- dp = TIFFReadDirectoryFind(dir,dircount,TIFFTAG_STRIPOFFSETS);
- if ((dp!=0) && (dp->tdir_count==1)) {
- dp = TIFFReadDirectoryFind(dir, dircount,
- TIFFTAG_STRIPBYTECOUNTS);
- if ((dp!=0) && (dp->tdir_count==1)) {
- td->td_planarconfig=PLANARCONFIG_CONTIG;
- TIFFWarningExt(tif->tif_clientdata,
- "TIFFReadDirectory",
- "Planarconfig tag value assumed incorrect, "
- "assuming data is contig instead of chunky");
- }
- }
- }
-
- /*
- * Allocate directory structure and setup defaults.
- */
- if (!TIFFFieldSet(tif, FIELD_IMAGEDIMENSIONS)) {
- MissingRequired(tif, "ImageLength");
- goto bad;
- }
- /*
- * Setup appropriate structures (by strip or by tile)
- */
- if (!TIFFFieldSet(tif, FIELD_TILEDIMENSIONS)) {
- td->td_nstrips = TIFFNumberOfStrips(tif);
- td->td_tilewidth = td->td_imagewidth;
- td->td_tilelength = td->td_rowsperstrip;
- td->td_tiledepth = td->td_imagedepth;
- tif->tif_flags &= ~TIFF_ISTILED;
- } else {
- td->td_nstrips = TIFFNumberOfTiles(tif);
- tif->tif_flags |= TIFF_ISTILED;
- }
- if (!td->td_nstrips) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: cannot handle zero number of %s",
- tif->tif_name, isTiled(tif) ? "tiles" : "strips");
- goto bad;
- }
- td->td_stripsperimage = td->td_nstrips;
- if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
- td->td_stripsperimage /= td->td_samplesperpixel;
- if (!TIFFFieldSet(tif, FIELD_STRIPOFFSETS)) {
- if ((td->td_compression==COMPRESSION_OJPEG) &&
- (isTiled(tif)==0) &&
- (td->td_nstrips==1)) {
- /*
- * XXX: OJPEG hack.
- * If a) compression is OJPEG, b) it's not a tiled TIFF,
- * and c) the number of strips is 1,
- * then we tolerate the absence of stripoffsets tag,
- * because, presumably, all required data is in the
- * JpegInterchangeFormat stream.
- */
- TIFFSetFieldBit(tif, FIELD_STRIPOFFSETS);
- } else {
- MissingRequired(tif,
- isTiled(tif) ? "TileOffsets" : "StripOffsets");
- goto bad;
- }
- }
-
- /*
- * Second pass: extract other information.
- */
- for (dp = dir, n = dircount; n > 0; n--, dp++) {
- if (dp->tdir_tag == IGNORE)
- continue;
- switch (dp->tdir_tag) {
- case TIFFTAG_MINSAMPLEVALUE:
- case TIFFTAG_MAXSAMPLEVALUE:
- case TIFFTAG_BITSPERSAMPLE:
- case TIFFTAG_DATATYPE:
- case TIFFTAG_SAMPLEFORMAT:
- /*
- * The 5.0 spec says the Compression tag has
- * one value, while earlier specs say it has
- * one value per sample. Because of this, we
- * accept the tag if one value is supplied.
- *
- * The MinSampleValue, MaxSampleValue, BitsPerSample
- * DataType and SampleFormat tags are supposed to be
- * written as one value/sample, but some vendors
- * incorrectly write one value only -- so we accept
- * that as well (yech). Other vendors write correct
- * value for NumberOfSamples, but incorrect one for
- * BitsPerSample and friends, and we will read this
- * too.
- */
- if (dp->tdir_count == 1) {
- v = TIFFExtractData(tif,
- dp->tdir_type, dp->tdir_offset);
- if (!TIFFSetField(tif, dp->tdir_tag, (uint16)v))
- goto bad;
- /* XXX: workaround for broken TIFFs */
- } else if (dp->tdir_tag == TIFFTAG_BITSPERSAMPLE
- && dp->tdir_type == TIFF_LONG) {
- if (!TIFFFetchPerSampleLongs(tif, dp, &v) ||
- !TIFFSetField(tif, dp->tdir_tag, (uint16)v))
- goto bad;
- } else {
- if (!TIFFFetchPerSampleShorts(tif, dp, &iv) ||
- !TIFFSetField(tif, dp->tdir_tag, iv))
- goto bad;
- }
- break;
- case TIFFTAG_SMINSAMPLEVALUE:
- case TIFFTAG_SMAXSAMPLEVALUE:
- {
- double dv = 0.0;
- if (!TIFFFetchPerSampleAnys(tif, dp, &dv) ||
- !TIFFSetField(tif, dp->tdir_tag, dv))
- goto bad;
- }
- break;
- case TIFFTAG_STRIPOFFSETS:
- case TIFFTAG_TILEOFFSETS:
- if (!TIFFFetchStripThing(tif, dp,
- td->td_nstrips, &td->td_stripoffset))
- goto bad;
- break;
- case TIFFTAG_STRIPBYTECOUNTS:
- case TIFFTAG_TILEBYTECOUNTS:
- if (!TIFFFetchStripThing(tif, dp,
- td->td_nstrips, &td->td_stripbytecount))
- goto bad;
- break;
- case TIFFTAG_COLORMAP:
- case TIFFTAG_TRANSFERFUNCTION:
- {
- char* cp;
- /*
- * TransferFunction can have either 1x or 3x
- * data values; Colormap can have only 3x
- * items.
- */
- v = 1L<<td->td_bitspersample;
- if (dp->tdir_tag == TIFFTAG_COLORMAP ||
- dp->tdir_count != v) {
- if (!CheckDirCount(tif, dp, 3 * v))
- break;
- }
- v *= sizeof(uint16);
- cp = (char *)_TIFFCheckMalloc(tif,
- dp->tdir_count,
- sizeof (uint16),
- "to read \"TransferFunction\" tag");
- if (cp != NULL) {
- if (TIFFFetchData(tif, dp, cp)) {
- /*
- * This deals with there being
- * only one array to apply to
- * all samples.
- */
- uint32 c = 1L << td->td_bitspersample;
- if (dp->tdir_count == c)
- v = 0L;
- TIFFSetField(tif, dp->tdir_tag,
- cp, cp+v, cp+2*v);
- }
- _TIFFfree(cp);
- }
- break;
- }
- case TIFFTAG_PAGENUMBER:
- case TIFFTAG_HALFTONEHINTS:
- case TIFFTAG_YCBCRSUBSAMPLING:
- case TIFFTAG_DOTRANGE:
- (void) TIFFFetchShortPair(tif, dp);
- break;
- case TIFFTAG_REFERENCEBLACKWHITE:
- (void) TIFFFetchRefBlackWhite(tif, dp);
- break;
-/* BEGIN REV 4.0 COMPATIBILITY */
- case TIFFTAG_OSUBFILETYPE:
- v = 0L;
- switch (TIFFExtractData(tif, dp->tdir_type,
- dp->tdir_offset)) {
- case OFILETYPE_REDUCEDIMAGE:
- v = FILETYPE_REDUCEDIMAGE;
- break;
- case OFILETYPE_PAGE:
- v = FILETYPE_PAGE;
- break;
- }
- if (v)
- TIFFSetField(tif, TIFFTAG_SUBFILETYPE, v);
- break;
-/* END REV 4.0 COMPATIBILITY */
- default:
- (void) TIFFFetchNormalTag(tif, dp);
- break;
- }
- }
- /*
- * OJPEG hack:
- * - If a) compression is OJPEG, and b) photometric tag is missing,
- * then we consistently find that photometric should be YCbCr
- * - If a) compression is OJPEG, and b) photometric tag says it's RGB,
- * then we consistently find that the buggy implementation of the
- * buggy compression scheme matches photometric YCbCr instead.
- * - If a) compression is OJPEG, and b) bitspersample tag is missing,
- * then we consistently find bitspersample should be 8.
- * - If a) compression is OJPEG, b) samplesperpixel tag is missing,
- * and c) photometric is RGB or YCbCr, then we consistently find
- * samplesperpixel should be 3
- * - If a) compression is OJPEG, b) samplesperpixel tag is missing,
- * and c) photometric is MINISWHITE or MINISBLACK, then we consistently
- * find samplesperpixel should be 3
- */
- if (td->td_compression==COMPRESSION_OJPEG)
- {
- if (!TIFFFieldSet(tif,FIELD_PHOTOMETRIC))
- {
- TIFFWarningExt(tif->tif_clientdata, "TIFFReadDirectory",
- "Photometric tag is missing, assuming data is YCbCr");
- if (!TIFFSetField(tif,TIFFTAG_PHOTOMETRIC,PHOTOMETRIC_YCBCR))
- goto bad;
- }
- else if (td->td_photometric==PHOTOMETRIC_RGB)
- {
- td->td_photometric=PHOTOMETRIC_YCBCR;
- TIFFWarningExt(tif->tif_clientdata, "TIFFReadDirectory",
- "Photometric tag value assumed incorrect, "
- "assuming data is YCbCr instead of RGB");
- }
- if (!TIFFFieldSet(tif,FIELD_BITSPERSAMPLE))
- {
- TIFFWarningExt(tif->tif_clientdata,"TIFFReadDirectory",
- "BitsPerSample tag is missing, assuming 8 bits per sample");
- if (!TIFFSetField(tif,TIFFTAG_BITSPERSAMPLE,8))
- goto bad;
- }
- if (!TIFFFieldSet(tif,FIELD_SAMPLESPERPIXEL))
- {
- if ((td->td_photometric==PHOTOMETRIC_RGB)
- || (td->td_photometric==PHOTOMETRIC_YCBCR))
- {
- TIFFWarningExt(tif->tif_clientdata,
- "TIFFReadDirectory",
- "SamplesPerPixel tag is missing, "
- "assuming correct SamplesPerPixel value is 3");
- if (!TIFFSetField(tif,TIFFTAG_SAMPLESPERPIXEL,3))
- goto bad;
- }
- else if ((td->td_photometric==PHOTOMETRIC_MINISWHITE)
- || (td->td_photometric==PHOTOMETRIC_MINISBLACK))
- {
- TIFFWarningExt(tif->tif_clientdata,
- "TIFFReadDirectory",
- "SamplesPerPixel tag is missing, "
- "assuming correct SamplesPerPixel value is 1");
- if (!TIFFSetField(tif,TIFFTAG_SAMPLESPERPIXEL,1))
- goto bad;
- }
- }
- }
- /*
- * Verify Palette image has a Colormap.
- */
- if (td->td_photometric == PHOTOMETRIC_PALETTE &&
- !TIFFFieldSet(tif, FIELD_COLORMAP)) {
- MissingRequired(tif, "Colormap");
- goto bad;
- }
- /*
- * OJPEG hack:
- * We do no further messing with strip/tile offsets/bytecounts in OJPEG
- * TIFFs
- */
- if (td->td_compression!=COMPRESSION_OJPEG)
- {
- /*
- * Attempt to deal with a missing StripByteCounts tag.
- */
- if (!TIFFFieldSet(tif, FIELD_STRIPBYTECOUNTS)) {
- /*
- * Some manufacturers violate the spec by not giving
- * the size of the strips. In this case, assume there
- * is one uncompressed strip of data.
- */
- if ((td->td_planarconfig == PLANARCONFIG_CONTIG &&
- td->td_nstrips > 1) ||
- (td->td_planarconfig == PLANARCONFIG_SEPARATE &&
- td->td_nstrips != td->td_samplesperpixel)) {
- MissingRequired(tif, "StripByteCounts");
- goto bad;
- }
- TIFFWarningExt(tif->tif_clientdata, module,
- "%s: TIFF directory is missing required "
- "\"%s\" field, calculating from imagelength",
- tif->tif_name,
- _TIFFFieldWithTag(tif,TIFFTAG_STRIPBYTECOUNTS)->field_name);
- if (EstimateStripByteCounts(tif, dir, dircount) < 0)
- goto bad;
- /*
- * Assume we have wrong StripByteCount value (in case
- * of single strip) in following cases:
- * - it is equal to zero along with StripOffset;
- * - it is larger than file itself (in case of uncompressed
- * image);
- * - it is smaller than the size of the bytes per row
- * multiplied on the number of rows. The last case should
- * not be checked in the case of writing new image,
- * because we may do not know the exact strip size
- * until the whole image will be written and directory
- * dumped out.
- */
- #define BYTECOUNTLOOKSBAD \
- ( (td->td_stripbytecount[0] == 0 && td->td_stripoffset[0] != 0) || \
- (td->td_compression == COMPRESSION_NONE && \
- td->td_stripbytecount[0] > TIFFGetFileSize(tif) - td->td_stripoffset[0]) || \
- (tif->tif_mode == O_RDONLY && \
- td->td_compression == COMPRESSION_NONE && \
- td->td_stripbytecount[0] < TIFFScanlineSize(tif) * td->td_imagelength) )
-
- } else if (td->td_nstrips == 1
- && td->td_stripoffset[0] != 0
- && BYTECOUNTLOOKSBAD) {
- /*
- * XXX: Plexus (and others) sometimes give a value of
- * zero for a tag when they don't know what the
- * correct value is! Try and handle the simple case
- * of estimating the size of a one strip image.
- */
- TIFFWarningExt(tif->tif_clientdata, module,
- "%s: Bogus \"%s\" field, ignoring and calculating from imagelength",
- tif->tif_name,
- _TIFFFieldWithTag(tif,TIFFTAG_STRIPBYTECOUNTS)->field_name);
- if(EstimateStripByteCounts(tif, dir, dircount) < 0)
- goto bad;
- } else if (td->td_planarconfig == PLANARCONFIG_CONTIG
- && td->td_nstrips > 2
- && td->td_compression == COMPRESSION_NONE
- && td->td_stripbytecount[0] != td->td_stripbytecount[1]
- && td->td_stripbytecount[0] != 0
- && td->td_stripbytecount[1] != 0 ) {
- /*
- * XXX: Some vendors fill StripByteCount array with
- * absolutely wrong values (it can be equal to
- * StripOffset array, for example). Catch this case
- * here.
- */
- TIFFWarningExt(tif->tif_clientdata, module,
- "%s: Wrong \"%s\" field, ignoring and calculating from imagelength",
- tif->tif_name,
- _TIFFFieldWithTag(tif,TIFFTAG_STRIPBYTECOUNTS)->field_name);
- if (EstimateStripByteCounts(tif, dir, dircount) < 0)
- goto bad;
- }
- }
- if (dir) {
- _TIFFfree((char *)dir);
- dir = NULL;
- }
- if (!TIFFFieldSet(tif, FIELD_MAXSAMPLEVALUE))
- td->td_maxsamplevalue = (uint16)((1L<<td->td_bitspersample)-1);
- /*
- * Setup default compression scheme.
- */
-
- /*
- * XXX: We can optimize checking for the strip bounds using the sorted
- * bytecounts array. See also comments for TIFFAppendToStrip()
- * function in tif_write.c.
- */
- if (td->td_nstrips > 1) {
- tstrip_t strip;
-
- td->td_stripbytecountsorted = 1;
- for (strip = 1; strip < td->td_nstrips; strip++) {
- if (td->td_stripoffset[strip - 1] >
- td->td_stripoffset[strip]) {
- td->td_stripbytecountsorted = 0;
- break;
- }
- }
- }
-
- if (!TIFFFieldSet(tif, FIELD_COMPRESSION))
- TIFFSetField(tif, TIFFTAG_COMPRESSION, COMPRESSION_NONE);
- /*
- * Some manufacturers make life difficult by writing
- * large amounts of uncompressed data as a single strip.
- * This is contrary to the recommendations of the spec.
- * The following makes an attempt at breaking such images
- * into strips closer to the recommended 8k bytes. A
- * side effect, however, is that the RowsPerStrip tag
- * value may be changed.
- */
- if (td->td_nstrips == 1 && td->td_compression == COMPRESSION_NONE &&
- (tif->tif_flags & (TIFF_STRIPCHOP|TIFF_ISTILED)) == TIFF_STRIPCHOP)
- ChopUpSingleUncompressedStrip(tif);
-
- /*
- * Reinitialize i/o since we are starting on a new directory.
- */
- tif->tif_row = (uint32) -1;
- tif->tif_curstrip = (tstrip_t) -1;
- tif->tif_col = (uint32) -1;
- tif->tif_curtile = (ttile_t) -1;
- tif->tif_tilesize = (tsize_t) -1;
-
- tif->tif_scanlinesize = TIFFScanlineSize(tif);
- if (!tif->tif_scanlinesize) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: cannot handle zero scanline size",
- tif->tif_name);
- return (0);
- }
-
- if (isTiled(tif)) {
- tif->tif_tilesize = TIFFTileSize(tif);
- if (!tif->tif_tilesize) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: cannot handle zero tile size",
- tif->tif_name);
- return (0);
- }
- } else {
- if (!TIFFStripSize(tif)) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: cannot handle zero strip size",
- tif->tif_name);
- return (0);
- }
- }
- return (1);
-bad:
- if (dir)
- _TIFFfree(dir);
- return (0);
-}
-
-static TIFFDirEntry*
-TIFFReadDirectoryFind(TIFFDirEntry* dir, uint16 dircount, uint16 tagid)
-{
- TIFFDirEntry* m;
- uint16 n;
- for (m=dir, n=0; n<dircount; m++, n++)
- {
- if (m->tdir_tag==tagid)
- return(m);
- }
- return(0);
-}
-
-/*
- * Read custom directory from the arbitarry offset.
- * The code is very similar to TIFFReadDirectory().
- */
-int
-TIFFReadCustomDirectory(TIFF* tif, toff_t diroff,
- const TIFFFieldInfo info[], size_t n)
-{
- static const char module[] = "TIFFReadCustomDirectory";
-
- TIFFDirectory* td = &tif->tif_dir;
- TIFFDirEntry *dp, *dir = NULL;
- const TIFFFieldInfo* fip;
- size_t fix;
- uint16 i, dircount;
-
- _TIFFSetupFieldInfo(tif, info, n);
-
- dircount = TIFFFetchDirectory(tif, diroff, &dir, NULL);
- if (!dircount) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Failed to read custom directory at offset %u",
- tif->tif_name, diroff);
- return 0;
- }
-
- TIFFFreeDirectory(tif);
- _TIFFmemset(&tif->tif_dir, 0, sizeof(TIFFDirectory));
-
- fix = 0;
- for (dp = dir, i = dircount; i > 0; i--, dp++) {
- if (tif->tif_flags & TIFF_SWAB) {
- TIFFSwabArrayOfShort(&dp->tdir_tag, 2);
- TIFFSwabArrayOfLong(&dp->tdir_count, 2);
- }
-
- if (fix >= tif->tif_nfields || dp->tdir_tag == IGNORE)
- continue;
-
- while (fix < tif->tif_nfields &&
- tif->tif_fieldinfo[fix]->field_tag < dp->tdir_tag)
- fix++;
-
- if (fix >= tif->tif_nfields ||
- tif->tif_fieldinfo[fix]->field_tag != dp->tdir_tag) {
-
- TIFFWarningExt(tif->tif_clientdata, module,
- "%s: unknown field with tag %d (0x%x) encountered",
- tif->tif_name, dp->tdir_tag, dp->tdir_tag);
- if (!_TIFFMergeFieldInfo(tif,
- _TIFFCreateAnonFieldInfo(tif,
- dp->tdir_tag,
- (TIFFDataType) dp->tdir_type),
- 1))
- {
- TIFFWarningExt(tif->tif_clientdata, module,
- "Registering anonymous field with tag %d (0x%x) failed",
- dp->tdir_tag, dp->tdir_tag);
- goto ignore;
- }
-
- fix = 0;
- while (fix < tif->tif_nfields &&
- tif->tif_fieldinfo[fix]->field_tag < dp->tdir_tag)
- fix++;
- }
- /*
- * Null out old tags that we ignore.
- */
- if (tif->tif_fieldinfo[fix]->field_bit == FIELD_IGNORE) {
- ignore:
- dp->tdir_tag = IGNORE;
- continue;
- }
- /*
- * Check data type.
- */
- fip = tif->tif_fieldinfo[fix];
- while (dp->tdir_type != (unsigned short) fip->field_type
- && fix < tif->tif_nfields) {
- if (fip->field_type == TIFF_ANY) /* wildcard */
- break;
- fip = tif->tif_fieldinfo[++fix];
- if (fix >= tif->tif_nfields ||
- fip->field_tag != dp->tdir_tag) {
- TIFFWarningExt(tif->tif_clientdata, module,
- "%s: wrong data type %d for \"%s\"; tag ignored",
- tif->tif_name, dp->tdir_type,
- tif->tif_fieldinfo[fix-1]->field_name);
- goto ignore;
- }
- }
- /*
- * Check count if known in advance.
- */
- if (fip->field_readcount != TIFF_VARIABLE
- && fip->field_readcount != TIFF_VARIABLE2) {
- uint32 expected = (fip->field_readcount == TIFF_SPP) ?
- (uint32) td->td_samplesperpixel :
- (uint32) fip->field_readcount;
- if (!CheckDirCount(tif, dp, expected))
- goto ignore;
- }
-
- /*
- * EXIF tags which need to be specifically processed.
- */
- switch (dp->tdir_tag) {
- case EXIFTAG_SUBJECTDISTANCE:
- (void) TIFFFetchSubjectDistance(tif, dp);
- break;
- default:
- (void) TIFFFetchNormalTag(tif, dp);
- break;
- }
- }
-
- if (dir)
- _TIFFfree(dir);
- return 1;
-}
-
-/*
- * EXIF is important special case of custom IFD, so we have a special
- * function to read it.
- */
-int
-TIFFReadEXIFDirectory(TIFF* tif, toff_t diroff)
-{
- size_t exifFieldInfoCount;
- const TIFFFieldInfo *exifFieldInfo =
- _TIFFGetExifFieldInfo(&exifFieldInfoCount);
- return TIFFReadCustomDirectory(tif, diroff, exifFieldInfo,
- exifFieldInfoCount);
-}
-
-static int
-EstimateStripByteCounts(TIFF* tif, TIFFDirEntry* dir, uint16 dircount)
-{
- static const char module[] = "EstimateStripByteCounts";
-
- TIFFDirEntry *dp;
- TIFFDirectory *td = &tif->tif_dir;
- uint32 strip;
-
- if (td->td_stripbytecount)
- _TIFFfree(td->td_stripbytecount);
- td->td_stripbytecount = (uint32*)
- _TIFFCheckMalloc(tif, td->td_nstrips, sizeof (uint32),
- "for \"StripByteCounts\" array");
- if( td->td_stripbytecount == NULL )
- return -1;
-
- if (td->td_compression != COMPRESSION_NONE) {
- uint32 space = (uint32)(sizeof (TIFFHeader)
- + sizeof (uint16)
- + (dircount * sizeof (TIFFDirEntry))
- + sizeof (uint32));
- toff_t filesize = TIFFGetFileSize(tif);
- uint16 n;
-
- /* calculate amount of space used by indirect values */
- for (dp = dir, n = dircount; n > 0; n--, dp++)
- {
- uint32 cc = TIFFDataWidth((TIFFDataType) dp->tdir_type);
- if (cc == 0) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Cannot determine size of unknown tag type %d",
- tif->tif_name, dp->tdir_type);
- return -1;
- }
- cc = cc * dp->tdir_count;
- if (cc > sizeof (uint32))
- space += cc;
- }
- space = filesize - space;
- if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
- space /= td->td_samplesperpixel;
- for (strip = 0; strip < td->td_nstrips; strip++)
- td->td_stripbytecount[strip] = space;
- /*
- * This gross hack handles the case were the offset to
- * the last strip is past the place where we think the strip
- * should begin. Since a strip of data must be contiguous,
- * it's safe to assume that we've overestimated the amount
- * of data in the strip and trim this number back accordingly.
- */
- strip--;
- if (((toff_t)(td->td_stripoffset[strip]+
- td->td_stripbytecount[strip])) > filesize)
- td->td_stripbytecount[strip] =
- filesize - td->td_stripoffset[strip];
- } else if (isTiled(tif)) {
- uint32 bytespertile = TIFFTileSize(tif);
-
- for (strip = 0; strip < td->td_nstrips; strip++)
- td->td_stripbytecount[strip] = bytespertile;
- } else {
- uint32 rowbytes = TIFFScanlineSize(tif);
- uint32 rowsperstrip = td->td_imagelength/td->td_stripsperimage;
- for (strip = 0; strip < td->td_nstrips; strip++)
- td->td_stripbytecount[strip] = rowbytes * rowsperstrip;
- }
- TIFFSetFieldBit(tif, FIELD_STRIPBYTECOUNTS);
- if (!TIFFFieldSet(tif, FIELD_ROWSPERSTRIP))
- td->td_rowsperstrip = td->td_imagelength;
- return 1;
-}
-
-static void
-MissingRequired(TIFF* tif, const char* tagname)
-{
- static const char module[] = "MissingRequired";
-
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: TIFF directory is missing required \"%s\" field",
- tif->tif_name, tagname);
-}
-
-/*
- * Check the directory offset against the list of already seen directory
- * offsets. This is a trick to prevent IFD looping. The one can create TIFF
- * file with looped directory pointers. We will maintain a list of already
- * seen directories and check every IFD offset against that list.
- */
-static int
-TIFFCheckDirOffset(TIFF* tif, toff_t diroff)
-{
- uint16 n;
-
- if (diroff == 0) /* no more directories */
- return 0;
-
- for (n = 0; n < tif->tif_dirnumber && tif->tif_dirlist; n++) {
- if (tif->tif_dirlist[n] == diroff)
- return 0;
- }
-
- tif->tif_dirnumber++;
-
- if (tif->tif_dirnumber > tif->tif_dirlistsize) {
- toff_t* new_dirlist;
-
- /*
- * XXX: Reduce memory allocation granularity of the dirlist
- * array.
- */
- new_dirlist = (toff_t *)_TIFFCheckRealloc(tif,
- tif->tif_dirlist,
- tif->tif_dirnumber,
- 2 * sizeof(toff_t),
- "for IFD list");
- if (!new_dirlist)
- return 0;
- tif->tif_dirlistsize = 2 * tif->tif_dirnumber;
- tif->tif_dirlist = new_dirlist;
- }
-
- tif->tif_dirlist[tif->tif_dirnumber - 1] = diroff;
-
- return 1;
-}
-
-/*
- * Check the count field of a directory entry against a known value. The
- * caller is expected to skip/ignore the tag if there is a mismatch.
- */
-static int
-CheckDirCount(TIFF* tif, TIFFDirEntry* dir, uint32 count)
-{
- if (count > dir->tdir_count) {
- TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
- "incorrect count for field \"%s\" (%u, expecting %u); tag ignored",
- _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name,
- dir->tdir_count, count);
- return (0);
- } else if (count < dir->tdir_count) {
- TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
- "incorrect count for field \"%s\" (%u, expecting %u); tag trimmed",
- _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name,
- dir->tdir_count, count);
- return (1);
- }
- return (1);
-}
-
-/*
- * Read IFD structure from the specified offset. If the pointer to
- * nextdiroff variable has been specified, read it too. Function returns a
- * number of fields in the directory or 0 if failed.
- */
-static uint16
-TIFFFetchDirectory(TIFF* tif, toff_t diroff, TIFFDirEntry **pdir,
- toff_t *nextdiroff)
-{
- static const char module[] = "TIFFFetchDirectory";
-
- TIFFDirEntry *dir;
- uint16 dircount;
-
- assert(pdir);
-
- tif->tif_diroff = diroff;
- if (nextdiroff)
- *nextdiroff = 0;
- if (!isMapped(tif)) {
- if (!SeekOK(tif, tif->tif_diroff)) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Seek error accessing TIFF directory",
- tif->tif_name);
- return 0;
- }
- if (!ReadOK(tif, &dircount, sizeof (uint16))) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Can not read TIFF directory count",
- tif->tif_name);
- return 0;
- }
- if (tif->tif_flags & TIFF_SWAB)
- TIFFSwabShort(&dircount);
- dir = (TIFFDirEntry *)_TIFFCheckMalloc(tif, dircount,
- sizeof (TIFFDirEntry),
- "to read TIFF directory");
- if (dir == NULL)
- return 0;
- if (!ReadOK(tif, dir, dircount*sizeof (TIFFDirEntry))) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%.100s: Can not read TIFF directory",
- tif->tif_name);
- _TIFFfree(dir);
- return 0;
- }
- /*
- * Read offset to next directory for sequential scans if
- * needed.
- */
- if (nextdiroff)
- (void) ReadOK(tif, nextdiroff, sizeof(uint32));
- } else {
- toff_t off = tif->tif_diroff;
-
- /*
- * Check for integer overflow when validating the dir_off,
- * otherwise a very high offset may cause an OOB read and
- * crash the client. Make two comparisons instead of
- *
- * off + sizeof(uint16) > tif->tif_size
- *
- * to avoid overflow.
- */
- if (tif->tif_size < sizeof (uint16) ||
- off > tif->tif_size - sizeof(uint16)) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Can not read TIFF directory count",
- tif->tif_name);
- return 0;
- } else {
- _TIFFmemcpy(&dircount, tif->tif_base + off,
- sizeof(uint16));
- }
- off += sizeof (uint16);
- if (tif->tif_flags & TIFF_SWAB)
- TIFFSwabShort(&dircount);
- dir = (TIFFDirEntry *)_TIFFCheckMalloc(tif, dircount,
- sizeof(TIFFDirEntry),
- "to read TIFF directory");
- if (dir == NULL)
- return 0;
- if (off + dircount * sizeof (TIFFDirEntry) > tif->tif_size) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Can not read TIFF directory",
- tif->tif_name);
- _TIFFfree(dir);
- return 0;
- } else {
- _TIFFmemcpy(dir, tif->tif_base + off,
- dircount * sizeof(TIFFDirEntry));
- }
- if (nextdiroff) {
- off += dircount * sizeof (TIFFDirEntry);
- if (off + sizeof (uint32) <= tif->tif_size) {
- _TIFFmemcpy(nextdiroff, tif->tif_base + off,
- sizeof (uint32));
- }
- }
- }
- if (nextdiroff && tif->tif_flags & TIFF_SWAB)
- TIFFSwabLong(nextdiroff);
- *pdir = dir;
- return dircount;
-}
-
-/*
- * Fetch a contiguous directory item.
- */
-static tsize_t
-TIFFFetchData(TIFF* tif, TIFFDirEntry* dir, char* cp)
-{
- uint32 w = TIFFDataWidth((TIFFDataType) dir->tdir_type);
- /*
- * FIXME: butecount should have tsize_t type, but for now libtiff
- * defines tsize_t as a signed 32-bit integer and we are losing
- * ability to read arrays larger than 2^31 bytes. So we are using
- * uint32 instead of tsize_t here.
- */
- uint32 cc = dir->tdir_count * w;
-
- /* Check for overflow. */
- if (!dir->tdir_count || !w || cc / w != dir->tdir_count)
- goto bad;
-
- if (!isMapped(tif)) {
- if (!SeekOK(tif, dir->tdir_offset))
- goto bad;
- if (!ReadOK(tif, cp, cc))
- goto bad;
- } else {
- /* Check for overflow. */
- if (dir->tdir_offset + cc < dir->tdir_offset
- || dir->tdir_offset + cc < cc
- || dir->tdir_offset + cc > tif->tif_size)
- goto bad;
- _TIFFmemcpy(cp, tif->tif_base + dir->tdir_offset, cc);
- }
- if (tif->tif_flags & TIFF_SWAB) {
- switch (dir->tdir_type) {
- case TIFF_SHORT:
- case TIFF_SSHORT:
- TIFFSwabArrayOfShort((uint16*) cp, dir->tdir_count);
- break;
- case TIFF_LONG:
- case TIFF_SLONG:
- case TIFF_FLOAT:
- TIFFSwabArrayOfLong((uint32*) cp, dir->tdir_count);
- break;
- case TIFF_RATIONAL:
- case TIFF_SRATIONAL:
- TIFFSwabArrayOfLong((uint32*) cp, 2*dir->tdir_count);
- break;
- case TIFF_DOUBLE:
- TIFFSwabArrayOfDouble((double*) cp, dir->tdir_count);
- break;
- }
- }
- return (cc);
-bad:
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Error fetching data for field \"%s\"",
- _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
- return (tsize_t) 0;
-}
-
-/*
- * Fetch an ASCII item from the file.
- */
-static tsize_t
-TIFFFetchString(TIFF* tif, TIFFDirEntry* dir, char* cp)
-{
- if (dir->tdir_count <= 4) {
- uint32 l = dir->tdir_offset;
- if (tif->tif_flags & TIFF_SWAB)
- TIFFSwabLong(&l);
- _TIFFmemcpy(cp, &l, dir->tdir_count);
- return (1);
- }
- return (TIFFFetchData(tif, dir, cp));
-}
-
-/*
- * Convert numerator+denominator to float.
- */
-static int
-cvtRational(TIFF* tif, TIFFDirEntry* dir, uint32 num, uint32 denom, float* rv)
-{
- if (denom == 0) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%s: Rational with zero denominator (num = %u)",
- _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name, num);
- return (0);
- } else {
- if (dir->tdir_type == TIFF_RATIONAL)
- *rv = ((float)num / (float)denom);
- else
- *rv = ((float)(int32)num / (float)(int32)denom);
- return (1);
- }
-}
-
-/*
- * Fetch a rational item from the file at offset off and return the value as a
- * floating point number.
- */
-static float
-TIFFFetchRational(TIFF* tif, TIFFDirEntry* dir)
-{
- uint32 l[2];
- float v;
-
- return (!TIFFFetchData(tif, dir, (char *)l) ||
- !cvtRational(tif, dir, l[0], l[1], &v) ? 1.0f : v);
-}
-
-/*
- * Fetch a single floating point value from the offset field and return it as
- * a native float.
- */
-static float
-TIFFFetchFloat(TIFF* tif, TIFFDirEntry* dir)
-{
- float v;
- int32 l = TIFFExtractData(tif, dir->tdir_type, dir->tdir_offset);
- _TIFFmemcpy(&v, &l, sizeof(float));
- TIFFCvtIEEEFloatToNative(tif, 1, &v);
- return (v);
-}
-
-/*
- * Fetch an array of BYTE or SBYTE values.
- */
-static int
-TIFFFetchByteArray(TIFF* tif, TIFFDirEntry* dir, uint8* v)
-{
- if (dir->tdir_count <= 4) {
- /*
- * Extract data from offset field.
- */
- if (tif->tif_header.tiff_magic == TIFF_BIGENDIAN) {
- if (dir->tdir_type == TIFF_SBYTE)
- switch (dir->tdir_count) {
- case 4: v[3] = dir->tdir_offset & 0xff;
- case 3: v[2] = (dir->tdir_offset >> 8) & 0xff;
- case 2: v[1] = (dir->tdir_offset >> 16) & 0xff;
- case 1: v[0] = dir->tdir_offset >> 24;
- }
- else
- switch (dir->tdir_count) {
- case 4: v[3] = dir->tdir_offset & 0xff;
- case 3: v[2] = (dir->tdir_offset >> 8) & 0xff;
- case 2: v[1] = (dir->tdir_offset >> 16) & 0xff;
- case 1: v[0] = dir->tdir_offset >> 24;
- }
- } else {
- if (dir->tdir_type == TIFF_SBYTE)
- switch (dir->tdir_count) {
- case 4: v[3] = dir->tdir_offset >> 24;
- case 3: v[2] = (dir->tdir_offset >> 16) & 0xff;
- case 2: v[1] = (dir->tdir_offset >> 8) & 0xff;
- case 1: v[0] = dir->tdir_offset & 0xff;
- }
- else
- switch (dir->tdir_count) {
- case 4: v[3] = dir->tdir_offset >> 24;
- case 3: v[2] = (dir->tdir_offset >> 16) & 0xff;
- case 2: v[1] = (dir->tdir_offset >> 8) & 0xff;
- case 1: v[0] = dir->tdir_offset & 0xff;
- }
- }
- return (1);
- } else
- return (TIFFFetchData(tif, dir, (char*) v) != 0); /* XXX */
-}
-
-/*
- * Fetch an array of SHORT or SSHORT values.
- */
-static int
-TIFFFetchShortArray(TIFF* tif, TIFFDirEntry* dir, uint16* v)
-{
- if (dir->tdir_count <= 2) {
- if (tif->tif_header.tiff_magic == TIFF_BIGENDIAN) {
- switch (dir->tdir_count) {
- case 2: v[1] = (uint16) (dir->tdir_offset & 0xffff);
- case 1: v[0] = (uint16) (dir->tdir_offset >> 16);
- }
- } else {
- switch (dir->tdir_count) {
- case 2: v[1] = (uint16) (dir->tdir_offset >> 16);
- case 1: v[0] = (uint16) (dir->tdir_offset & 0xffff);
- }
- }
- return (1);
- } else
- return (TIFFFetchData(tif, dir, (char *)v) != 0);
-}
-
-/*
- * Fetch a pair of SHORT or BYTE values. Some tags may have either BYTE
- * or SHORT type and this function works with both ones.
- */
-static int
-TIFFFetchShortPair(TIFF* tif, TIFFDirEntry* dir)
-{
- /*
- * Prevent overflowing the v stack arrays below by performing a sanity
- * check on tdir_count, this should never be greater than two.
- */
- if (dir->tdir_count > 2) {
- TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
- "unexpected count for field \"%s\", %u, expected 2; ignored",
- _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name,
- dir->tdir_count);
- return 0;
- }
-
- switch (dir->tdir_type) {
- case TIFF_BYTE:
- case TIFF_SBYTE:
- {
- uint8 v[4];
- return TIFFFetchByteArray(tif, dir, v)
- && TIFFSetField(tif, dir->tdir_tag, v[0], v[1]);
- }
- case TIFF_SHORT:
- case TIFF_SSHORT:
- {
- uint16 v[2];
- return TIFFFetchShortArray(tif, dir, v)
- && TIFFSetField(tif, dir->tdir_tag, v[0], v[1]);
- }
- default:
- return 0;
- }
-}
-
-/*
- * Fetch an array of LONG or SLONG values.
- */
-static int
-TIFFFetchLongArray(TIFF* tif, TIFFDirEntry* dir, uint32* v)
-{
- if (dir->tdir_count == 1) {
- v[0] = dir->tdir_offset;
- return (1);
- } else
- return (TIFFFetchData(tif, dir, (char*) v) != 0);
-}
-
-/*
- * Fetch an array of RATIONAL or SRATIONAL values.
- */
-static int
-TIFFFetchRationalArray(TIFF* tif, TIFFDirEntry* dir, float* v)
-{
- int ok = 0;
- uint32* l;
-
- l = (uint32*)_TIFFCheckMalloc(tif,
- dir->tdir_count, TIFFDataWidth((TIFFDataType) dir->tdir_type),
- "to fetch array of rationals");
- if (l) {
- if (TIFFFetchData(tif, dir, (char *)l)) {
- uint32 i;
- for (i = 0; i < dir->tdir_count; i++) {
- ok = cvtRational(tif, dir,
- l[2*i+0], l[2*i+1], &v[i]);
- if (!ok)
- break;
- }
- }
- _TIFFfree((char *)l);
- }
- return (ok);
-}
-
-/*
- * Fetch an array of FLOAT values.
- */
-static int
-TIFFFetchFloatArray(TIFF* tif, TIFFDirEntry* dir, float* v)
-{
-
- if (dir->tdir_count == 1) {
- union
- {
- float f;
- uint32 i;
- } float_union;
-
- float_union.i=dir->tdir_offset;
- v[0]=float_union.f;
- TIFFCvtIEEEFloatToNative(tif, dir->tdir_count, v);
- return (1);
- } else if (TIFFFetchData(tif, dir, (char*) v)) {
- TIFFCvtIEEEFloatToNative(tif, dir->tdir_count, v);
- return (1);
- } else
- return (0);
-}
-
-/*
- * Fetch an array of DOUBLE values.
- */
-static int
-TIFFFetchDoubleArray(TIFF* tif, TIFFDirEntry* dir, double* v)
-{
- if (TIFFFetchData(tif, dir, (char*) v)) {
- TIFFCvtIEEEDoubleToNative(tif, dir->tdir_count, v);
- return (1);
- } else
- return (0);
-}
-
-/*
- * Fetch an array of ANY values. The actual values are returned as doubles
- * which should be able hold all the types. Yes, there really should be an
- * tany_t to avoid this potential non-portability ... Note in particular that
- * we assume that the double return value vector is large enough to read in
- * any fundamental type. We use that vector as a buffer to read in the base
- * type vector and then convert it in place to double (from end to front of
- * course).
- */
-static int
-TIFFFetchAnyArray(TIFF* tif, TIFFDirEntry* dir, double* v)
-{
- int i;
-
- switch (dir->tdir_type) {
- case TIFF_BYTE:
- case TIFF_SBYTE:
- if (!TIFFFetchByteArray(tif, dir, (uint8*) v))
- return (0);
- if (dir->tdir_type == TIFF_BYTE) {
- uint8* vp = (uint8*) v;
- for (i = dir->tdir_count-1; i >= 0; i--)
- v[i] = vp[i];
- } else {
- int8* vp = (int8*) v;
- for (i = dir->tdir_count-1; i >= 0; i--)
- v[i] = vp[i];
- }
- break;
- case TIFF_SHORT:
- case TIFF_SSHORT:
- if (!TIFFFetchShortArray(tif, dir, (uint16*) v))
- return (0);
- if (dir->tdir_type == TIFF_SHORT) {
- uint16* vp = (uint16*) v;
- for (i = dir->tdir_count-1; i >= 0; i--)
- v[i] = vp[i];
- } else {
- int16* vp = (int16*) v;
- for (i = dir->tdir_count-1; i >= 0; i--)
- v[i] = vp[i];
- }
- break;
- case TIFF_LONG:
- case TIFF_SLONG:
- if (!TIFFFetchLongArray(tif, dir, (uint32*) v))
- return (0);
- if (dir->tdir_type == TIFF_LONG) {
- uint32* vp = (uint32*) v;
- for (i = dir->tdir_count-1; i >= 0; i--)
- v[i] = vp[i];
- } else {
- int32* vp = (int32*) v;
- for (i = dir->tdir_count-1; i >= 0; i--)
- v[i] = vp[i];
- }
- break;
- case TIFF_RATIONAL:
- case TIFF_SRATIONAL:
- if (!TIFFFetchRationalArray(tif, dir, (float*) v))
- return (0);
- { float* vp = (float*) v;
- for (i = dir->tdir_count-1; i >= 0; i--)
- v[i] = vp[i];
- }
- break;
- case TIFF_FLOAT:
- if (!TIFFFetchFloatArray(tif, dir, (float*) v))
- return (0);
- { float* vp = (float*) v;
- for (i = dir->tdir_count-1; i >= 0; i--)
- v[i] = vp[i];
- }
- break;
- case TIFF_DOUBLE:
- return (TIFFFetchDoubleArray(tif, dir, (double*) v));
- default:
- /* TIFF_NOTYPE */
- /* TIFF_ASCII */
- /* TIFF_UNDEFINED */
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "cannot read TIFF_ANY type %d for field \"%s\"",
- dir->tdir_type,
- _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
- return (0);
- }
- return (1);
-}
-
-/*
- * Fetch a tag that is not handled by special case code.
- */
-static int
-TIFFFetchNormalTag(TIFF* tif, TIFFDirEntry* dp)
-{
- static const char mesg[] = "to fetch tag value";
- int ok = 0;
- const TIFFFieldInfo* fip = _TIFFFieldWithTag(tif, dp->tdir_tag);
-
- if (dp->tdir_count > 1) { /* array of values */
- char* cp = NULL;
-
- switch (dp->tdir_type) {
- case TIFF_BYTE:
- case TIFF_SBYTE:
- cp = (char *)_TIFFCheckMalloc(tif,
- dp->tdir_count, sizeof (uint8), mesg);
- ok = cp && TIFFFetchByteArray(tif, dp, (uint8*) cp);
- break;
- case TIFF_SHORT:
- case TIFF_SSHORT:
- cp = (char *)_TIFFCheckMalloc(tif,
- dp->tdir_count, sizeof (uint16), mesg);
- ok = cp && TIFFFetchShortArray(tif, dp, (uint16*) cp);
- break;
- case TIFF_LONG:
- case TIFF_SLONG:
- cp = (char *)_TIFFCheckMalloc(tif,
- dp->tdir_count, sizeof (uint32), mesg);
- ok = cp && TIFFFetchLongArray(tif, dp, (uint32*) cp);
- break;
- case TIFF_RATIONAL:
- case TIFF_SRATIONAL:
- cp = (char *)_TIFFCheckMalloc(tif,
- dp->tdir_count, sizeof (float), mesg);
- ok = cp && TIFFFetchRationalArray(tif, dp, (float*) cp);
- break;
- case TIFF_FLOAT:
- cp = (char *)_TIFFCheckMalloc(tif,
- dp->tdir_count, sizeof (float), mesg);
- ok = cp && TIFFFetchFloatArray(tif, dp, (float*) cp);
- break;
- case TIFF_DOUBLE:
- cp = (char *)_TIFFCheckMalloc(tif,
- dp->tdir_count, sizeof (double), mesg);
- ok = cp && TIFFFetchDoubleArray(tif, dp, (double*) cp);
- break;
- case TIFF_ASCII:
- case TIFF_UNDEFINED: /* bit of a cheat... */
- /*
- * Some vendors write strings w/o the trailing
- * NULL byte, so always append one just in case.
- */
- cp = (char *)_TIFFCheckMalloc(tif, dp->tdir_count + 1,
- 1, mesg);
- if( (ok = (cp && TIFFFetchString(tif, dp, cp))) != 0 )
- cp[dp->tdir_count] = '\0'; /* XXX */
- break;
- }
- if (ok) {
- ok = (fip->field_passcount ?
- TIFFSetField(tif, dp->tdir_tag, dp->tdir_count, cp)
- : TIFFSetField(tif, dp->tdir_tag, cp));
- }
- if (cp != NULL)
- _TIFFfree(cp);
- } else if (CheckDirCount(tif, dp, 1)) { /* singleton value */
- switch (dp->tdir_type) {
- case TIFF_BYTE:
- case TIFF_SBYTE:
- case TIFF_SHORT:
- case TIFF_SSHORT:
- /*
- * If the tag is also acceptable as a LONG or SLONG
- * then TIFFSetField will expect an uint32 parameter
- * passed to it (through varargs). Thus, for machines
- * where sizeof (int) != sizeof (uint32) we must do
- * a careful check here. It's hard to say if this
- * is worth optimizing.
- *
- * NB: We use TIFFFieldWithTag here knowing that
- * it returns us the first entry in the table
- * for the tag and that that entry is for the
- * widest potential data type the tag may have.
- */
- { TIFFDataType type = fip->field_type;
- if (type != TIFF_LONG && type != TIFF_SLONG) {
- uint16 v = (uint16)
- TIFFExtractData(tif, dp->tdir_type, dp->tdir_offset);
- ok = (fip->field_passcount ?
- TIFFSetField(tif, dp->tdir_tag, 1, &v)
- : TIFFSetField(tif, dp->tdir_tag, v));
- break;
- }
- }
- /* fall thru... */
- case TIFF_LONG:
- case TIFF_SLONG:
- { uint32 v32 =
- TIFFExtractData(tif, dp->tdir_type, dp->tdir_offset);
- ok = (fip->field_passcount ?
- TIFFSetField(tif, dp->tdir_tag, 1, &v32)
- : TIFFSetField(tif, dp->tdir_tag, v32));
- }
- break;
- case TIFF_RATIONAL:
- case TIFF_SRATIONAL:
- case TIFF_FLOAT:
- { float v = (dp->tdir_type == TIFF_FLOAT ?
- TIFFFetchFloat(tif, dp)
- : TIFFFetchRational(tif, dp));
- ok = (fip->field_passcount ?
- TIFFSetField(tif, dp->tdir_tag, 1, &v)
- : TIFFSetField(tif, dp->tdir_tag, v));
- }
- break;
- case TIFF_DOUBLE:
- { double v;
- ok = (TIFFFetchDoubleArray(tif, dp, &v) &&
- (fip->field_passcount ?
- TIFFSetField(tif, dp->tdir_tag, 1, &v)
- : TIFFSetField(tif, dp->tdir_tag, v))
- );
- }
- break;
- case TIFF_ASCII:
- case TIFF_UNDEFINED: /* bit of a cheat... */
- { char c[2];
- if( (ok = (TIFFFetchString(tif, dp, c) != 0)) != 0 ) {
- c[1] = '\0'; /* XXX paranoid */
- ok = (fip->field_passcount ?
- TIFFSetField(tif, dp->tdir_tag, 1, c)
- : TIFFSetField(tif, dp->tdir_tag, c));
- }
- }
- break;
- }
- }
- return (ok);
-}
-
-#define NITEMS(x) (sizeof (x) / sizeof (x[0]))
-/*
- * Fetch samples/pixel short values for
- * the specified tag and verify that
- * all values are the same.
- */
-static int
-TIFFFetchPerSampleShorts(TIFF* tif, TIFFDirEntry* dir, uint16* pl)
-{
- uint16 samples = tif->tif_dir.td_samplesperpixel;
- int status = 0;
-
- if (CheckDirCount(tif, dir, (uint32) samples)) {
- uint16 buf[10];
- uint16* v = buf;
-
- if (dir->tdir_count > NITEMS(buf))
- v = (uint16*) _TIFFCheckMalloc(tif, dir->tdir_count, sizeof(uint16),
- "to fetch per-sample values");
- if (v && TIFFFetchShortArray(tif, dir, v)) {
- uint16 i;
- int check_count = dir->tdir_count;
- if( samples < check_count )
- check_count = samples;
-
- for (i = 1; i < check_count; i++)
- if (v[i] != v[0]) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Cannot handle different per-sample values for field \"%s\"",
- _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
- goto bad;
- }
- *pl = v[0];
- status = 1;
- }
- bad:
- if (v && v != buf)
- _TIFFfree(v);
- }
- return (status);
-}
-
-/*
- * Fetch samples/pixel long values for
- * the specified tag and verify that
- * all values are the same.
- */
-static int
-TIFFFetchPerSampleLongs(TIFF* tif, TIFFDirEntry* dir, uint32* pl)
-{
- uint16 samples = tif->tif_dir.td_samplesperpixel;
- int status = 0;
-
- if (CheckDirCount(tif, dir, (uint32) samples)) {
- uint32 buf[10];
- uint32* v = buf;
-
- if (dir->tdir_count > NITEMS(buf))
- v = (uint32*) _TIFFCheckMalloc(tif, dir->tdir_count, sizeof(uint32),
- "to fetch per-sample values");
- if (v && TIFFFetchLongArray(tif, dir, v)) {
- uint16 i;
- int check_count = dir->tdir_count;
-
- if( samples < check_count )
- check_count = samples;
- for (i = 1; i < check_count; i++)
- if (v[i] != v[0]) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Cannot handle different per-sample values for field \"%s\"",
- _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
- goto bad;
- }
- *pl = v[0];
- status = 1;
- }
- bad:
- if (v && v != buf)
- _TIFFfree(v);
- }
- return (status);
-}
-
-/*
- * Fetch samples/pixel ANY values for the specified tag and verify that all
- * values are the same.
- */
-static int
-TIFFFetchPerSampleAnys(TIFF* tif, TIFFDirEntry* dir, double* pl)
-{
- uint16 samples = tif->tif_dir.td_samplesperpixel;
- int status = 0;
-
- if (CheckDirCount(tif, dir, (uint32) samples)) {
- double buf[10];
- double* v = buf;
-
- if (dir->tdir_count > NITEMS(buf))
- v = (double*) _TIFFCheckMalloc(tif, dir->tdir_count, sizeof (double),
- "to fetch per-sample values");
- if (v && TIFFFetchAnyArray(tif, dir, v)) {
- uint16 i;
- int check_count = dir->tdir_count;
- if( samples < check_count )
- check_count = samples;
-
- for (i = 1; i < check_count; i++)
- if (v[i] != v[0]) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Cannot handle different per-sample values for field \"%s\"",
- _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
- goto bad;
- }
- *pl = v[0];
- status = 1;
- }
- bad:
- if (v && v != buf)
- _TIFFfree(v);
- }
- return (status);
-}
-#undef NITEMS
-
-/*
- * Fetch a set of offsets or lengths.
- * While this routine says "strips", in fact it's also used for tiles.
- */
-static int
-TIFFFetchStripThing(TIFF* tif, TIFFDirEntry* dir, long nstrips, uint32** lpp)
-{
- register uint32* lp;
- int status;
-
- CheckDirCount(tif, dir, (uint32) nstrips);
-
- /*
- * Allocate space for strip information.
- */
- if (*lpp == NULL &&
- (*lpp = (uint32 *)_TIFFCheckMalloc(tif,
- nstrips, sizeof (uint32), "for strip array")) == NULL)
- return (0);
- lp = *lpp;
- _TIFFmemset( lp, 0, sizeof(uint32) * nstrips );
-
- if (dir->tdir_type == (int)TIFF_SHORT) {
- /*
- * Handle uint16->uint32 expansion.
- */
- uint16* dp = (uint16*) _TIFFCheckMalloc(tif,
- dir->tdir_count, sizeof (uint16), "to fetch strip tag");
- if (dp == NULL)
- return (0);
- if( (status = TIFFFetchShortArray(tif, dir, dp)) != 0 ) {
- int i;
-
- for( i = 0; i < nstrips && i < (int) dir->tdir_count; i++ )
- {
- lp[i] = dp[i];
- }
- }
- _TIFFfree((char*) dp);
-
- } else if( nstrips != (int) dir->tdir_count ) {
- /* Special case to correct length */
-
- uint32* dp = (uint32*) _TIFFCheckMalloc(tif,
- dir->tdir_count, sizeof (uint32), "to fetch strip tag");
- if (dp == NULL)
- return (0);
-
- status = TIFFFetchLongArray(tif, dir, dp);
- if( status != 0 ) {
- int i;
-
- for( i = 0; i < nstrips && i < (int) dir->tdir_count; i++ )
- {
- lp[i] = dp[i];
- }
- }
-
- _TIFFfree( (char *) dp );
- } else
- status = TIFFFetchLongArray(tif, dir, lp);
-
- return (status);
-}
-
-/*
- * Fetch and set the RefBlackWhite tag.
- */
-static int
-TIFFFetchRefBlackWhite(TIFF* tif, TIFFDirEntry* dir)
-{
- static const char mesg[] = "for \"ReferenceBlackWhite\" array";
- char* cp;
- int ok;
-
- if (dir->tdir_type == TIFF_RATIONAL)
- return (TIFFFetchNormalTag(tif, dir));
- /*
- * Handle LONG's for backward compatibility.
- */
- cp = (char *)_TIFFCheckMalloc(tif, dir->tdir_count,
- sizeof (uint32), mesg);
- if( (ok = (cp && TIFFFetchLongArray(tif, dir, (uint32*) cp))) != 0) {
- float* fp = (float*)
- _TIFFCheckMalloc(tif, dir->tdir_count, sizeof (float), mesg);
- if( (ok = (fp != NULL)) != 0 ) {
- uint32 i;
- for (i = 0; i < dir->tdir_count; i++)
- fp[i] = (float)((uint32*) cp)[i];
- ok = TIFFSetField(tif, dir->tdir_tag, fp);
- _TIFFfree((char*) fp);
- }
- }
- if (cp)
- _TIFFfree(cp);
- return (ok);
-}
-
-/*
- * Fetch and set the SubjectDistance EXIF tag.
- */
-static int
-TIFFFetchSubjectDistance(TIFF* tif, TIFFDirEntry* dir)
-{
- uint32 l[2];
- float v;
- int ok = 0;
-
- if (TIFFFetchData(tif, dir, (char *)l)
- && cvtRational(tif, dir, l[0], l[1], &v)) {
- /*
- * XXX: Numerator 0xFFFFFFFF means that we have infinite
- * distance. Indicate that with a negative floating point
- * SubjectDistance value.
- */
- ok = TIFFSetField(tif, dir->tdir_tag,
- (l[0] != 0xFFFFFFFF) ? v : -v);
- }
-
- return ok;
-}
-
-/*
- * Replace a single strip (tile) of uncompressed data by multiple strips
- * (tiles), each approximately STRIP_SIZE_DEFAULT bytes. This is useful for
- * dealing with large images or for dealing with machines with a limited
- * amount memory.
- */
-static void
-ChopUpSingleUncompressedStrip(TIFF* tif)
-{
- register TIFFDirectory *td = &tif->tif_dir;
- uint32 bytecount = td->td_stripbytecount[0];
- uint32 offset = td->td_stripoffset[0];
- tsize_t rowbytes = TIFFVTileSize(tif, 1), stripbytes;
- tstrip_t strip, nstrips, rowsperstrip;
- uint32* newcounts;
- uint32* newoffsets;
-
- /*
- * Make the rows hold at least one scanline, but fill specified amount
- * of data if possible.
- */
- if (rowbytes > STRIP_SIZE_DEFAULT) {
- stripbytes = rowbytes;
- rowsperstrip = 1;
- } else if (rowbytes > 0 ) {
- rowsperstrip = STRIP_SIZE_DEFAULT / rowbytes;
- stripbytes = rowbytes * rowsperstrip;
- }
- else
- return;
-
- /*
- * never increase the number of strips in an image
- */
- if (rowsperstrip >= td->td_rowsperstrip)
- return;
- nstrips = (tstrip_t) TIFFhowmany(bytecount, stripbytes);
- if( nstrips == 0 ) /* something is wonky, do nothing. */
- return;
-
- newcounts = (uint32*) _TIFFCheckMalloc(tif, nstrips, sizeof (uint32),
- "for chopped \"StripByteCounts\" array");
- newoffsets = (uint32*) _TIFFCheckMalloc(tif, nstrips, sizeof (uint32),
- "for chopped \"StripOffsets\" array");
- if (newcounts == NULL || newoffsets == NULL) {
- /*
- * Unable to allocate new strip information, give up and use
- * the original one strip information.
- */
- if (newcounts != NULL)
- _TIFFfree(newcounts);
- if (newoffsets != NULL)
- _TIFFfree(newoffsets);
- return;
- }
- /*
- * Fill the strip information arrays with new bytecounts and offsets
- * that reflect the broken-up format.
- */
- for (strip = 0; strip < nstrips; strip++) {
- if ((uint32)stripbytes > bytecount)
- stripbytes = bytecount;
- newcounts[strip] = stripbytes;
- newoffsets[strip] = offset;
- offset += stripbytes;
- bytecount -= stripbytes;
- }
- /*
- * Replace old single strip info with multi-strip info.
- */
- td->td_stripsperimage = td->td_nstrips = nstrips;
- TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, rowsperstrip);
-
- _TIFFfree(td->td_stripbytecount);
- _TIFFfree(td->td_stripoffset);
- td->td_stripbytecount = newcounts;
- td->td_stripoffset = newoffsets;
- td->td_stripbytecountsorted = 1;
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_dirwrite.c b/src/3rdparty/libtiff/libtiff/tif_dirwrite.c
deleted file mode 100644
index 5148097dc3..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_dirwrite.c
+++ /dev/null
@@ -1,1407 +0,0 @@
-/* $Id: tif_dirwrite.c,v 1.37.2.6 2009-10-31 21:51:08 bfriesen Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- *
- * Directory Write Support Routines.
- */
-#include "tiffiop.h"
-
-#ifdef HAVE_IEEEFP
-# define TIFFCvtNativeToIEEEFloat(tif, n, fp)
-# define TIFFCvtNativeToIEEEDouble(tif, n, dp)
-#else
-extern void TIFFCvtNativeToIEEEFloat(TIFF*, uint32, float*);
-extern void TIFFCvtNativeToIEEEDouble(TIFF*, uint32, double*);
-#endif
-
-static int TIFFWriteNormalTag(TIFF*, TIFFDirEntry*, const TIFFFieldInfo*);
-static void TIFFSetupShortLong(TIFF*, ttag_t, TIFFDirEntry*, uint32);
-static void TIFFSetupShort(TIFF*, ttag_t, TIFFDirEntry*, uint16);
-static int TIFFSetupShortPair(TIFF*, ttag_t, TIFFDirEntry*);
-static int TIFFWritePerSampleShorts(TIFF*, ttag_t, TIFFDirEntry*);
-static int TIFFWritePerSampleAnys(TIFF*, TIFFDataType, ttag_t, TIFFDirEntry*);
-static int TIFFWriteShortTable(TIFF*, ttag_t, TIFFDirEntry*, uint32, uint16**);
-static int TIFFWriteShortArray(TIFF*, TIFFDirEntry*, uint16*);
-static int TIFFWriteLongArray(TIFF *, TIFFDirEntry*, uint32*);
-static int TIFFWriteRationalArray(TIFF *, TIFFDirEntry*, float*);
-static int TIFFWriteFloatArray(TIFF *, TIFFDirEntry*, float*);
-static int TIFFWriteDoubleArray(TIFF *, TIFFDirEntry*, double*);
-static int TIFFWriteByteArray(TIFF*, TIFFDirEntry*, char*);
-static int TIFFWriteAnyArray(TIFF*,
- TIFFDataType, ttag_t, TIFFDirEntry*, uint32, double*);
-static int TIFFWriteTransferFunction(TIFF*, TIFFDirEntry*);
-static int TIFFWriteInkNames(TIFF*, TIFFDirEntry*);
-static int TIFFWriteData(TIFF*, TIFFDirEntry*, char*);
-static int TIFFLinkDirectory(TIFF*);
-
-#define WriteRationalPair(type, tag1, v1, tag2, v2) { \
- TIFFWriteRational((tif), (type), (tag1), (dir), (v1)) \
- TIFFWriteRational((tif), (type), (tag2), (dir)+1, (v2)) \
- (dir)++; \
-}
-#define TIFFWriteRational(tif, type, tag, dir, v) \
- (dir)->tdir_tag = (tag); \
- (dir)->tdir_type = (type); \
- (dir)->tdir_count = 1; \
- if (!TIFFWriteRationalArray((tif), (dir), &(v))) \
- goto bad;
-
-/*
- * Write the contents of the current directory
- * to the specified file. This routine doesn't
- * handle overwriting a directory with auxiliary
- * storage that's been changed.
- */
-static int
-_TIFFWriteDirectory(TIFF* tif, int done)
-{
- uint16 dircount;
- toff_t diroff;
- ttag_t tag;
- uint32 nfields;
- tsize_t dirsize;
- char* data;
- TIFFDirEntry* dir;
- TIFFDirectory* td;
- unsigned long b, fields[FIELD_SETLONGS];
- int fi, nfi;
-
- if (tif->tif_mode == O_RDONLY)
- return (1);
- /*
- * Clear write state so that subsequent images with
- * different characteristics get the right buffers
- * setup for them.
- */
- if (done)
- {
- if (tif->tif_flags & TIFF_POSTENCODE) {
- tif->tif_flags &= ~TIFF_POSTENCODE;
- if (!(*tif->tif_postencode)(tif)) {
- TIFFErrorExt(tif->tif_clientdata,
- tif->tif_name,
- "Error post-encoding before directory write");
- return (0);
- }
- }
- (*tif->tif_close)(tif); /* shutdown encoder */
- /*
- * Flush any data that might have been written
- * by the compression close+cleanup routines.
- */
- if (tif->tif_rawcc > 0
- && (tif->tif_flags & TIFF_BEENWRITING) != 0
- && !TIFFFlushData1(tif)) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Error flushing data before directory write");
- return (0);
- }
- if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata) {
- _TIFFfree(tif->tif_rawdata);
- tif->tif_rawdata = NULL;
- tif->tif_rawcc = 0;
- tif->tif_rawdatasize = 0;
- }
- tif->tif_flags &= ~(TIFF_BEENWRITING|TIFF_BUFFERSETUP);
- }
-
- td = &tif->tif_dir;
- /*
- * Size the directory so that we can calculate
- * offsets for the data items that aren't kept
- * in-place in each field.
- */
- nfields = 0;
- for (b = 0; b <= FIELD_LAST; b++)
- if (TIFFFieldSet(tif, b) && b != FIELD_CUSTOM)
- nfields += (b < FIELD_SUBFILETYPE ? 2 : 1);
- nfields += td->td_customValueCount;
- dirsize = nfields * sizeof (TIFFDirEntry);
- data = (char*) _TIFFmalloc(dirsize);
- if (data == NULL) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Cannot write directory, out of space");
- return (0);
- }
- /*
- * Directory hasn't been placed yet, put
- * it at the end of the file and link it
- * into the existing directory structure.
- */
- if (tif->tif_diroff == 0 && !TIFFLinkDirectory(tif))
- goto bad;
- tif->tif_dataoff = (toff_t)(
- tif->tif_diroff + sizeof (uint16) + dirsize + sizeof (toff_t));
- if (tif->tif_dataoff & 1)
- tif->tif_dataoff++;
- (void) TIFFSeekFile(tif, tif->tif_dataoff, SEEK_SET);
- tif->tif_curdir++;
- dir = (TIFFDirEntry*) data;
- /*
- * Setup external form of directory
- * entries and write data items.
- */
- _TIFFmemcpy(fields, td->td_fieldsset, sizeof (fields));
- /*
- * Write out ExtraSamples tag only if
- * extra samples are present in the data.
- */
- if (FieldSet(fields, FIELD_EXTRASAMPLES) && !td->td_extrasamples) {
- ResetFieldBit(fields, FIELD_EXTRASAMPLES);
- nfields--;
- dirsize -= sizeof (TIFFDirEntry);
- } /*XXX*/
- for (fi = 0, nfi = tif->tif_nfields; nfi > 0; nfi--, fi++) {
- const TIFFFieldInfo* fip = tif->tif_fieldinfo[fi];
-
- /*
- * For custom fields, we test to see if the custom field
- * is set or not. For normal fields, we just use the
- * FieldSet test.
- */
- if( fip->field_bit == FIELD_CUSTOM )
- {
- int ci, is_set = FALSE;
-
- for( ci = 0; ci < td->td_customValueCount; ci++ )
- is_set |= (td->td_customValues[ci].info == fip);
-
- if( !is_set )
- continue;
- }
- else if (!FieldSet(fields, fip->field_bit))
- continue;
-
- /*
- * Handle other fields.
- */
- switch (fip->field_bit)
- {
- case FIELD_STRIPOFFSETS:
- /*
- * We use one field bit for both strip and tile
-
- * offsets, and so must be careful in selecting
- * the appropriate field descriptor (so that tags
- * are written in sorted order).
- */
- tag = isTiled(tif) ?
- TIFFTAG_TILEOFFSETS : TIFFTAG_STRIPOFFSETS;
- if (tag != fip->field_tag)
- continue;
-
- dir->tdir_tag = (uint16) tag;
- dir->tdir_type = (uint16) TIFF_LONG;
- dir->tdir_count = (uint32) td->td_nstrips;
- if (!TIFFWriteLongArray(tif, dir, td->td_stripoffset))
- goto bad;
- break;
- case FIELD_STRIPBYTECOUNTS:
- /*
- * We use one field bit for both strip and tile
- * byte counts, and so must be careful in selecting
- * the appropriate field descriptor (so that tags
- * are written in sorted order).
- */
- tag = isTiled(tif) ?
- TIFFTAG_TILEBYTECOUNTS : TIFFTAG_STRIPBYTECOUNTS;
- if (tag != fip->field_tag)
- continue;
-
- dir->tdir_tag = (uint16) tag;
- dir->tdir_type = (uint16) TIFF_LONG;
- dir->tdir_count = (uint32) td->td_nstrips;
- if (!TIFFWriteLongArray(tif, dir, td->td_stripbytecount))
- goto bad;
- break;
- case FIELD_ROWSPERSTRIP:
- TIFFSetupShortLong(tif, TIFFTAG_ROWSPERSTRIP,
- dir, td->td_rowsperstrip);
- break;
- case FIELD_COLORMAP:
- if (!TIFFWriteShortTable(tif, TIFFTAG_COLORMAP, dir,
- 3, td->td_colormap))
- goto bad;
- break;
- case FIELD_IMAGEDIMENSIONS:
- TIFFSetupShortLong(tif, TIFFTAG_IMAGEWIDTH,
- dir++, td->td_imagewidth);
- TIFFSetupShortLong(tif, TIFFTAG_IMAGELENGTH,
- dir, td->td_imagelength);
- break;
- case FIELD_TILEDIMENSIONS:
- TIFFSetupShortLong(tif, TIFFTAG_TILEWIDTH,
- dir++, td->td_tilewidth);
- TIFFSetupShortLong(tif, TIFFTAG_TILELENGTH,
- dir, td->td_tilelength);
- break;
- case FIELD_COMPRESSION:
- TIFFSetupShort(tif, TIFFTAG_COMPRESSION,
- dir, td->td_compression);
- break;
- case FIELD_PHOTOMETRIC:
- TIFFSetupShort(tif, TIFFTAG_PHOTOMETRIC,
- dir, td->td_photometric);
- break;
- case FIELD_POSITION:
- WriteRationalPair(TIFF_RATIONAL,
- TIFFTAG_XPOSITION, td->td_xposition,
- TIFFTAG_YPOSITION, td->td_yposition);
- break;
- case FIELD_RESOLUTION:
- WriteRationalPair(TIFF_RATIONAL,
- TIFFTAG_XRESOLUTION, td->td_xresolution,
- TIFFTAG_YRESOLUTION, td->td_yresolution);
- break;
- case FIELD_BITSPERSAMPLE:
- case FIELD_MINSAMPLEVALUE:
- case FIELD_MAXSAMPLEVALUE:
- case FIELD_SAMPLEFORMAT:
- if (!TIFFWritePerSampleShorts(tif, fip->field_tag, dir))
- goto bad;
- break;
- case FIELD_SMINSAMPLEVALUE:
- case FIELD_SMAXSAMPLEVALUE:
- if (!TIFFWritePerSampleAnys(tif,
- _TIFFSampleToTagType(tif), fip->field_tag, dir))
- goto bad;
- break;
- case FIELD_PAGENUMBER:
- case FIELD_HALFTONEHINTS:
- case FIELD_YCBCRSUBSAMPLING:
- if (!TIFFSetupShortPair(tif, fip->field_tag, dir))
- goto bad;
- break;
- case FIELD_INKNAMES:
- if (!TIFFWriteInkNames(tif, dir))
- goto bad;
- break;
- case FIELD_TRANSFERFUNCTION:
- if (!TIFFWriteTransferFunction(tif, dir))
- goto bad;
- break;
- case FIELD_SUBIFD:
- /*
- * XXX: Always write this field using LONG type
- * for backward compatibility.
- */
- dir->tdir_tag = (uint16) fip->field_tag;
- dir->tdir_type = (uint16) TIFF_LONG;
- dir->tdir_count = (uint32) td->td_nsubifd;
- if (!TIFFWriteLongArray(tif, dir, td->td_subifd))
- goto bad;
- /*
- * Total hack: if this directory includes a SubIFD
- * tag then force the next <n> directories to be
- * written as ``sub directories'' of this one. This
- * is used to write things like thumbnails and
- * image masks that one wants to keep out of the
- * normal directory linkage access mechanism.
- */
- if (dir->tdir_count > 0) {
- tif->tif_flags |= TIFF_INSUBIFD;
- tif->tif_nsubifd = (uint16) dir->tdir_count;
- if (dir->tdir_count > 1)
- tif->tif_subifdoff = dir->tdir_offset;
- else
- tif->tif_subifdoff = (uint32)(
- tif->tif_diroff
- + sizeof (uint16)
- + ((char*)&dir->tdir_offset-data));
- }
- break;
- default:
- /* XXX: Should be fixed and removed. */
- if (fip->field_tag == TIFFTAG_DOTRANGE) {
- if (!TIFFSetupShortPair(tif, fip->field_tag, dir))
- goto bad;
- }
- else if (!TIFFWriteNormalTag(tif, dir, fip))
- goto bad;
- break;
- }
- dir++;
-
- if( fip->field_bit != FIELD_CUSTOM )
- ResetFieldBit(fields, fip->field_bit);
- }
-
- /*
- * Write directory.
- */
- dircount = (uint16) nfields;
- diroff = (uint32) tif->tif_nextdiroff;
- if (tif->tif_flags & TIFF_SWAB) {
- /*
- * The file's byte order is opposite to the
- * native machine architecture. We overwrite
- * the directory information with impunity
- * because it'll be released below after we
- * write it to the file. Note that all the
- * other tag construction routines assume that
- * we do this byte-swapping; i.e. they only
- * byte-swap indirect data.
- */
- for (dir = (TIFFDirEntry*) data; dircount; dir++, dircount--) {
- TIFFSwabArrayOfShort(&dir->tdir_tag, 2);
- TIFFSwabArrayOfLong(&dir->tdir_count, 2);
- }
- dircount = (uint16) nfields;
- TIFFSwabShort(&dircount);
- TIFFSwabLong(&diroff);
- }
- (void) TIFFSeekFile(tif, tif->tif_diroff, SEEK_SET);
- if (!WriteOK(tif, &dircount, sizeof (dircount))) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Error writing directory count");
- goto bad;
- }
- if (!WriteOK(tif, data, dirsize)) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Error writing directory contents");
- goto bad;
- }
- if (!WriteOK(tif, &diroff, sizeof (uint32))) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Error writing directory link");
- goto bad;
- }
- if (done) {
- TIFFFreeDirectory(tif);
- tif->tif_flags &= ~TIFF_DIRTYDIRECT;
- (*tif->tif_cleanup)(tif);
-
- /*
- * Reset directory-related state for subsequent
- * directories.
- */
- TIFFCreateDirectory(tif);
- }
- _TIFFfree(data);
- return (1);
-bad:
- _TIFFfree(data);
- return (0);
-}
-#undef WriteRationalPair
-
-int
-TIFFWriteDirectory(TIFF* tif)
-{
- return _TIFFWriteDirectory(tif, TRUE);
-}
-
-/*
- * Similar to TIFFWriteDirectory(), writes the directory out
- * but leaves all data structures in memory so that it can be
- * written again. This will make a partially written TIFF file
- * readable before it is successfully completed/closed.
- */
-int
-TIFFCheckpointDirectory(TIFF* tif)
-{
- int rc;
- /* Setup the strips arrays, if they haven't already been. */
- if (tif->tif_dir.td_stripoffset == NULL)
- (void) TIFFSetupStrips(tif);
- rc = _TIFFWriteDirectory(tif, FALSE);
- (void) TIFFSetWriteOffset(tif, TIFFSeekFile(tif, 0, SEEK_END));
- return rc;
-}
-
-static int
-_TIFFWriteCustomDirectory(TIFF* tif, toff_t *pdiroff)
-{
- uint16 dircount;
- uint32 nfields;
- tsize_t dirsize;
- char* data;
- TIFFDirEntry* dir;
- TIFFDirectory* td;
- unsigned long b, fields[FIELD_SETLONGS];
- int fi, nfi;
-
- if (tif->tif_mode == O_RDONLY)
- return (1);
-
- td = &tif->tif_dir;
- /*
- * Size the directory so that we can calculate
- * offsets for the data items that aren't kept
- * in-place in each field.
- */
- nfields = 0;
- for (b = 0; b <= FIELD_LAST; b++)
- if (TIFFFieldSet(tif, b) && b != FIELD_CUSTOM)
- nfields += (b < FIELD_SUBFILETYPE ? 2 : 1);
- nfields += td->td_customValueCount;
- dirsize = nfields * sizeof (TIFFDirEntry);
- data = (char*) _TIFFmalloc(dirsize);
- if (data == NULL) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Cannot write directory, out of space");
- return (0);
- }
- /*
- * Put the directory at the end of the file.
- */
- tif->tif_diroff = (TIFFSeekFile(tif, (toff_t) 0, SEEK_END)+1) &~ 1;
- tif->tif_dataoff = (toff_t)(
- tif->tif_diroff + sizeof (uint16) + dirsize + sizeof (toff_t));
- if (tif->tif_dataoff & 1)
- tif->tif_dataoff++;
- (void) TIFFSeekFile(tif, tif->tif_dataoff, SEEK_SET);
- dir = (TIFFDirEntry*) data;
- /*
- * Setup external form of directory
- * entries and write data items.
- */
- _TIFFmemcpy(fields, td->td_fieldsset, sizeof (fields));
-
- for (fi = 0, nfi = tif->tif_nfields; nfi > 0; nfi--, fi++) {
- const TIFFFieldInfo* fip = tif->tif_fieldinfo[fi];
-
- /*
- * For custom fields, we test to see if the custom field
- * is set or not. For normal fields, we just use the
- * FieldSet test.
- */
- if( fip->field_bit == FIELD_CUSTOM )
- {
- int ci, is_set = FALSE;
-
- for( ci = 0; ci < td->td_customValueCount; ci++ )
- is_set |= (td->td_customValues[ci].info == fip);
-
- if( !is_set )
- continue;
- }
- else if (!FieldSet(fields, fip->field_bit))
- continue;
-
- if( fip->field_bit != FIELD_CUSTOM )
- ResetFieldBit(fields, fip->field_bit);
- }
-
- /*
- * Write directory.
- */
- dircount = (uint16) nfields;
- *pdiroff = (uint32) tif->tif_nextdiroff;
- if (tif->tif_flags & TIFF_SWAB) {
- /*
- * The file's byte order is opposite to the
- * native machine architecture. We overwrite
- * the directory information with impunity
- * because it'll be released below after we
- * write it to the file. Note that all the
- * other tag construction routines assume that
- * we do this byte-swapping; i.e. they only
- * byte-swap indirect data.
- */
- for (dir = (TIFFDirEntry*) data; dircount; dir++, dircount--) {
- TIFFSwabArrayOfShort(&dir->tdir_tag, 2);
- TIFFSwabArrayOfLong(&dir->tdir_count, 2);
- }
- dircount = (uint16) nfields;
- TIFFSwabShort(&dircount);
- TIFFSwabLong(pdiroff);
- }
- (void) TIFFSeekFile(tif, tif->tif_diroff, SEEK_SET);
- if (!WriteOK(tif, &dircount, sizeof (dircount))) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Error writing directory count");
- goto bad;
- }
- if (!WriteOK(tif, data, dirsize)) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Error writing directory contents");
- goto bad;
- }
- if (!WriteOK(tif, pdiroff, sizeof (uint32))) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Error writing directory link");
- goto bad;
- }
- _TIFFfree(data);
- return (1);
-bad:
- _TIFFfree(data);
- return (0);
-}
-
-int
-TIFFWriteCustomDirectory(TIFF* tif, toff_t *pdiroff)
-{
- return _TIFFWriteCustomDirectory(tif, pdiroff);
-}
-
-/*
- * Process tags that are not special cased.
- */
-static int
-TIFFWriteNormalTag(TIFF* tif, TIFFDirEntry* dir, const TIFFFieldInfo* fip)
-{
- uint16 wc = (uint16) fip->field_writecount;
- uint32 wc2;
-
- dir->tdir_tag = (uint16) fip->field_tag;
- dir->tdir_type = (uint16) fip->field_type;
- dir->tdir_count = wc;
-
- switch (fip->field_type) {
- case TIFF_SHORT:
- case TIFF_SSHORT:
- if (fip->field_passcount) {
- uint16* wp;
- if (wc == (uint16) TIFF_VARIABLE2) {
- TIFFGetField(tif, fip->field_tag, &wc2, &wp);
- dir->tdir_count = wc2;
- } else { /* Assume TIFF_VARIABLE */
- TIFFGetField(tif, fip->field_tag, &wc, &wp);
- dir->tdir_count = wc;
- }
- if (!TIFFWriteShortArray(tif, dir, wp))
- return 0;
- } else {
- if (wc == 1) {
- uint16 sv;
- TIFFGetField(tif, fip->field_tag, &sv);
- dir->tdir_offset =
- TIFFInsertData(tif, dir->tdir_type, sv);
- } else {
- uint16* wp;
- TIFFGetField(tif, fip->field_tag, &wp);
- if (!TIFFWriteShortArray(tif, dir, wp))
- return 0;
- }
- }
- break;
- case TIFF_LONG:
- case TIFF_SLONG:
- case TIFF_IFD:
- if (fip->field_passcount) {
- uint32* lp;
- if (wc == (uint16) TIFF_VARIABLE2) {
- TIFFGetField(tif, fip->field_tag, &wc2, &lp);
- dir->tdir_count = wc2;
- } else { /* Assume TIFF_VARIABLE */
- TIFFGetField(tif, fip->field_tag, &wc, &lp);
- dir->tdir_count = wc;
- }
- if (!TIFFWriteLongArray(tif, dir, lp))
- return 0;
- } else {
- if (wc == 1) {
- /* XXX handle LONG->SHORT conversion */
- TIFFGetField(tif, fip->field_tag,
- &dir->tdir_offset);
- } else {
- uint32* lp;
- TIFFGetField(tif, fip->field_tag, &lp);
- if (!TIFFWriteLongArray(tif, dir, lp))
- return 0;
- }
- }
- break;
- case TIFF_RATIONAL:
- case TIFF_SRATIONAL:
- if (fip->field_passcount) {
- float* fp;
- if (wc == (uint16) TIFF_VARIABLE2) {
- TIFFGetField(tif, fip->field_tag, &wc2, &fp);
- dir->tdir_count = wc2;
- } else { /* Assume TIFF_VARIABLE */
- TIFFGetField(tif, fip->field_tag, &wc, &fp);
- dir->tdir_count = wc;
- }
- if (!TIFFWriteRationalArray(tif, dir, fp))
- return 0;
- } else {
- if (wc == 1) {
- float fv;
- TIFFGetField(tif, fip->field_tag, &fv);
- if (!TIFFWriteRationalArray(tif, dir, &fv))
- return 0;
- } else {
- float* fp;
- TIFFGetField(tif, fip->field_tag, &fp);
- if (!TIFFWriteRationalArray(tif, dir, fp))
- return 0;
- }
- }
- break;
- case TIFF_FLOAT:
- if (fip->field_passcount) {
- float* fp;
- if (wc == (uint16) TIFF_VARIABLE2) {
- TIFFGetField(tif, fip->field_tag, &wc2, &fp);
- dir->tdir_count = wc2;
- } else { /* Assume TIFF_VARIABLE */
- TIFFGetField(tif, fip->field_tag, &wc, &fp);
- dir->tdir_count = wc;
- }
- if (!TIFFWriteFloatArray(tif, dir, fp))
- return 0;
- } else {
- if (wc == 1) {
- float fv;
- TIFFGetField(tif, fip->field_tag, &fv);
- if (!TIFFWriteFloatArray(tif, dir, &fv))
- return 0;
- } else {
- float* fp;
- TIFFGetField(tif, fip->field_tag, &fp);
- if (!TIFFWriteFloatArray(tif, dir, fp))
- return 0;
- }
- }
- break;
- case TIFF_DOUBLE:
- if (fip->field_passcount) {
- double* dp;
- if (wc == (uint16) TIFF_VARIABLE2) {
- TIFFGetField(tif, fip->field_tag, &wc2, &dp);
- dir->tdir_count = wc2;
- } else { /* Assume TIFF_VARIABLE */
- TIFFGetField(tif, fip->field_tag, &wc, &dp);
- dir->tdir_count = wc;
- }
- if (!TIFFWriteDoubleArray(tif, dir, dp))
- return 0;
- } else {
- if (wc == 1) {
- double dv;
- TIFFGetField(tif, fip->field_tag, &dv);
- if (!TIFFWriteDoubleArray(tif, dir, &dv))
- return 0;
- } else {
- double* dp;
- TIFFGetField(tif, fip->field_tag, &dp);
- if (!TIFFWriteDoubleArray(tif, dir, dp))
- return 0;
- }
- }
- break;
- case TIFF_ASCII:
- {
- char* cp;
- if (fip->field_passcount)
- {
- if( wc == (uint16) TIFF_VARIABLE2 )
- TIFFGetField(tif, fip->field_tag, &wc2, &cp);
- else
- TIFFGetField(tif, fip->field_tag, &wc, &cp);
- }
- else
- TIFFGetField(tif, fip->field_tag, &cp);
-
- dir->tdir_count = (uint32) (strlen(cp) + 1);
- if (!TIFFWriteByteArray(tif, dir, cp))
- return (0);
- }
- break;
-
- case TIFF_BYTE:
- case TIFF_SBYTE:
- if (fip->field_passcount) {
- char* cp;
- if (wc == (uint16) TIFF_VARIABLE2) {
- TIFFGetField(tif, fip->field_tag, &wc2, &cp);
- dir->tdir_count = wc2;
- } else { /* Assume TIFF_VARIABLE */
- TIFFGetField(tif, fip->field_tag, &wc, &cp);
- dir->tdir_count = wc;
- }
- if (!TIFFWriteByteArray(tif, dir, cp))
- return 0;
- } else {
- if (wc == 1) {
- char cv;
- TIFFGetField(tif, fip->field_tag, &cv);
- if (!TIFFWriteByteArray(tif, dir, &cv))
- return 0;
- } else {
- char* cp;
- TIFFGetField(tif, fip->field_tag, &cp);
- if (!TIFFWriteByteArray(tif, dir, cp))
- return 0;
- }
- }
- break;
-
- case TIFF_UNDEFINED:
- { char* cp;
- if (wc == (unsigned short) TIFF_VARIABLE) {
- TIFFGetField(tif, fip->field_tag, &wc, &cp);
- dir->tdir_count = wc;
- } else if (wc == (unsigned short) TIFF_VARIABLE2) {
- TIFFGetField(tif, fip->field_tag, &wc2, &cp);
- dir->tdir_count = wc2;
- } else
- TIFFGetField(tif, fip->field_tag, &cp);
- if (!TIFFWriteByteArray(tif, dir, cp))
- return (0);
- }
- break;
-
- case TIFF_NOTYPE:
- break;
- }
- return (1);
-}
-
-/*
- * Setup a directory entry with either a SHORT
- * or LONG type according to the value.
- */
-static void
-TIFFSetupShortLong(TIFF* tif, ttag_t tag, TIFFDirEntry* dir, uint32 v)
-{
- dir->tdir_tag = (uint16) tag;
- dir->tdir_count = 1;
- if (v > 0xffffL) {
- dir->tdir_type = (short) TIFF_LONG;
- dir->tdir_offset = v;
- } else {
- dir->tdir_type = (short) TIFF_SHORT;
- dir->tdir_offset = TIFFInsertData(tif, (int) TIFF_SHORT, v);
- }
-}
-
-/*
- * Setup a SHORT directory entry
- */
-static void
-TIFFSetupShort(TIFF* tif, ttag_t tag, TIFFDirEntry* dir, uint16 v)
-{
- dir->tdir_tag = (uint16) tag;
- dir->tdir_count = 1;
- dir->tdir_type = (short) TIFF_SHORT;
- dir->tdir_offset = TIFFInsertData(tif, (int) TIFF_SHORT, v);
-}
-#undef MakeShortDirent
-
-#define NITEMS(x) (sizeof (x) / sizeof (x[0]))
-/*
- * Setup a directory entry that references a
- * samples/pixel array of SHORT values and
- * (potentially) write the associated indirect
- * values.
- */
-static int
-TIFFWritePerSampleShorts(TIFF* tif, ttag_t tag, TIFFDirEntry* dir)
-{
- uint16 buf[10], v;
- uint16* w = buf;
- uint16 i, samples = tif->tif_dir.td_samplesperpixel;
- int status;
-
- if (samples > NITEMS(buf)) {
- w = (uint16*) _TIFFmalloc(samples * sizeof (uint16));
- if (w == NULL) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "No space to write per-sample shorts");
- return (0);
- }
- }
- TIFFGetField(tif, tag, &v);
- for (i = 0; i < samples; i++)
- w[i] = v;
-
- dir->tdir_tag = (uint16) tag;
- dir->tdir_type = (uint16) TIFF_SHORT;
- dir->tdir_count = samples;
- status = TIFFWriteShortArray(tif, dir, w);
- if (w != buf)
- _TIFFfree((char*) w);
- return (status);
-}
-
-/*
- * Setup a directory entry that references a samples/pixel array of ``type''
- * values and (potentially) write the associated indirect values. The source
- * data from TIFFGetField() for the specified tag must be returned as double.
- */
-static int
-TIFFWritePerSampleAnys(TIFF* tif,
- TIFFDataType type, ttag_t tag, TIFFDirEntry* dir)
-{
- double buf[10], v;
- double* w = buf;
- uint16 i, samples = tif->tif_dir.td_samplesperpixel;
- int status;
-
- if (samples > NITEMS(buf)) {
- w = (double*) _TIFFmalloc(samples * sizeof (double));
- if (w == NULL) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "No space to write per-sample values");
- return (0);
- }
- }
- TIFFGetField(tif, tag, &v);
- for (i = 0; i < samples; i++)
- w[i] = v;
- status = TIFFWriteAnyArray(tif, type, tag, dir, samples, w);
- if (w != buf)
- _TIFFfree(w);
- return (status);
-}
-#undef NITEMS
-
-/*
- * Setup a pair of shorts that are returned by
- * value, rather than as a reference to an array.
- */
-static int
-TIFFSetupShortPair(TIFF* tif, ttag_t tag, TIFFDirEntry* dir)
-{
- uint16 v[2];
-
- TIFFGetField(tif, tag, &v[0], &v[1]);
-
- dir->tdir_tag = (uint16) tag;
- dir->tdir_type = (uint16) TIFF_SHORT;
- dir->tdir_count = 2;
- return (TIFFWriteShortArray(tif, dir, v));
-}
-
-/*
- * Setup a directory entry for an NxM table of shorts,
- * where M is known to be 2**bitspersample, and write
- * the associated indirect data.
- */
-static int
-TIFFWriteShortTable(TIFF* tif,
- ttag_t tag, TIFFDirEntry* dir, uint32 n, uint16** table)
-{
- uint32 i, off;
-
- dir->tdir_tag = (uint16) tag;
- dir->tdir_type = (short) TIFF_SHORT;
- /* XXX -- yech, fool TIFFWriteData */
- dir->tdir_count = (uint32) (1L<<tif->tif_dir.td_bitspersample);
- off = tif->tif_dataoff;
- for (i = 0; i < n; i++)
- if (!TIFFWriteData(tif, dir, (char *)table[i]))
- return (0);
- dir->tdir_count *= n;
- dir->tdir_offset = off;
- return (1);
-}
-
-/*
- * Write/copy data associated with an ASCII or opaque tag value.
- */
-static int
-TIFFWriteByteArray(TIFF* tif, TIFFDirEntry* dir, char* cp)
-{
- if (dir->tdir_count <= 4) {
- if (tif->tif_header.tiff_magic == TIFF_BIGENDIAN) {
- dir->tdir_offset = (uint32)cp[0] << 24;
- if (dir->tdir_count >= 2)
- dir->tdir_offset |= (uint32)cp[1] << 16;
- if (dir->tdir_count >= 3)
- dir->tdir_offset |= (uint32)cp[2] << 8;
- if (dir->tdir_count == 4)
- dir->tdir_offset |= cp[3];
- } else {
- dir->tdir_offset = cp[0];
- if (dir->tdir_count >= 2)
- dir->tdir_offset |= (uint32) cp[1] << 8;
- if (dir->tdir_count >= 3)
- dir->tdir_offset |= (uint32) cp[2] << 16;
- if (dir->tdir_count == 4)
- dir->tdir_offset |= (uint32) cp[3] << 24;
- }
- return 1;
- } else
- return TIFFWriteData(tif, dir, cp);
-}
-
-/*
- * Setup a directory entry of an array of SHORT
- * or SSHORT and write the associated indirect values.
- */
-static int
-TIFFWriteShortArray(TIFF* tif, TIFFDirEntry* dir, uint16* v)
-{
- if (dir->tdir_count <= 2) {
- if (tif->tif_header.tiff_magic == TIFF_BIGENDIAN) {
- dir->tdir_offset = (uint32) v[0] << 16;
- if (dir->tdir_count == 2)
- dir->tdir_offset |= v[1] & 0xffff;
- } else {
- dir->tdir_offset = v[0] & 0xffff;
- if (dir->tdir_count == 2)
- dir->tdir_offset |= (uint32) v[1] << 16;
- }
- return (1);
- } else
- return (TIFFWriteData(tif, dir, (char*) v));
-}
-
-/*
- * Setup a directory entry of an array of LONG
- * or SLONG and write the associated indirect values.
- */
-static int
-TIFFWriteLongArray(TIFF* tif, TIFFDirEntry* dir, uint32* v)
-{
- if (dir->tdir_count == 1) {
- dir->tdir_offset = v[0];
- return (1);
- } else
- return (TIFFWriteData(tif, dir, (char*) v));
-}
-
-/*
- * Setup a directory entry of an array of RATIONAL
- * or SRATIONAL and write the associated indirect values.
- */
-static int
-TIFFWriteRationalArray(TIFF* tif, TIFFDirEntry* dir, float* v)
-{
- uint32 i;
- uint32* t;
- int status;
-
- t = (uint32*) _TIFFmalloc(2 * dir->tdir_count * sizeof (uint32));
- if (t == NULL) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "No space to write RATIONAL array");
- return (0);
- }
- for (i = 0; i < dir->tdir_count; i++) {
- float fv = v[i];
- int sign = 1;
- uint32 den;
-
- if (fv < 0) {
- if (dir->tdir_type == TIFF_RATIONAL) {
- TIFFWarningExt(tif->tif_clientdata,
- tif->tif_name,
- "\"%s\": Information lost writing value (%g) as (unsigned) RATIONAL",
- _TIFFFieldWithTag(tif,dir->tdir_tag)->field_name,
- fv);
- fv = 0;
- } else
- fv = -fv, sign = -1;
- }
- den = 1L;
- if (fv > 0) {
- while (fv < 1L<<(31-3) && den < 1L<<(31-3))
- fv *= 1<<3, den *= 1L<<3;
- }
- t[2*i+0] = (uint32) (sign * (fv + 0.5));
- t[2*i+1] = den;
- }
- status = TIFFWriteData(tif, dir, (char *)t);
- _TIFFfree((char*) t);
- return (status);
-}
-
-static int
-TIFFWriteFloatArray(TIFF* tif, TIFFDirEntry* dir, float* v)
-{
- TIFFCvtNativeToIEEEFloat(tif, dir->tdir_count, v);
- if (dir->tdir_count == 1) {
- dir->tdir_offset = *(uint32*) &v[0];
- return (1);
- } else
- return (TIFFWriteData(tif, dir, (char*) v));
-}
-
-static int
-TIFFWriteDoubleArray(TIFF* tif, TIFFDirEntry* dir, double* v)
-{
- TIFFCvtNativeToIEEEDouble(tif, dir->tdir_count, v);
- return (TIFFWriteData(tif, dir, (char*) v));
-}
-
-/*
- * Write an array of ``type'' values for a specified tag (i.e. this is a tag
- * which is allowed to have different types, e.g. SMaxSampleType).
- * Internally the data values are represented as double since a double can
- * hold any of the TIFF tag types (yes, this should really be an abstract
- * type tany_t for portability). The data is converted into the specified
- * type in a temporary buffer and then handed off to the appropriate array
- * writer.
- */
-static int
-TIFFWriteAnyArray(TIFF* tif,
- TIFFDataType type, ttag_t tag, TIFFDirEntry* dir, uint32 n, double* v)
-{
- char buf[10 * sizeof(double)];
- char* w = buf;
- int i, status = 0;
-
- if (n * TIFFDataWidth(type) > sizeof buf) {
- w = (char*) _TIFFmalloc(n * TIFFDataWidth(type));
- if (w == NULL) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "No space to write array");
- return (0);
- }
- }
-
- dir->tdir_tag = (uint16) tag;
- dir->tdir_type = (uint16) type;
- dir->tdir_count = n;
-
- switch (type) {
- case TIFF_BYTE:
- {
- uint8* bp = (uint8*) w;
- for (i = 0; i < (int) n; i++)
- bp[i] = (uint8) v[i];
- if (!TIFFWriteByteArray(tif, dir, (char*) bp))
- goto out;
- }
- break;
- case TIFF_SBYTE:
- {
- int8* bp = (int8*) w;
- for (i = 0; i < (int) n; i++)
- bp[i] = (int8) v[i];
- if (!TIFFWriteByteArray(tif, dir, (char*) bp))
- goto out;
- }
- break;
- case TIFF_SHORT:
- {
- uint16* bp = (uint16*) w;
- for (i = 0; i < (int) n; i++)
- bp[i] = (uint16) v[i];
- if (!TIFFWriteShortArray(tif, dir, (uint16*)bp))
- goto out;
- }
- break;
- case TIFF_SSHORT:
- {
- int16* bp = (int16*) w;
- for (i = 0; i < (int) n; i++)
- bp[i] = (int16) v[i];
- if (!TIFFWriteShortArray(tif, dir, (uint16*)bp))
- goto out;
- }
- break;
- case TIFF_LONG:
- {
- uint32* bp = (uint32*) w;
- for (i = 0; i < (int) n; i++)
- bp[i] = (uint32) v[i];
- if (!TIFFWriteLongArray(tif, dir, bp))
- goto out;
- }
- break;
- case TIFF_SLONG:
- {
- int32* bp = (int32*) w;
- for (i = 0; i < (int) n; i++)
- bp[i] = (int32) v[i];
- if (!TIFFWriteLongArray(tif, dir, (uint32*) bp))
- goto out;
- }
- break;
- case TIFF_FLOAT:
- {
- float* bp = (float*) w;
- for (i = 0; i < (int) n; i++)
- bp[i] = (float) v[i];
- if (!TIFFWriteFloatArray(tif, dir, bp))
- goto out;
- }
- break;
- case TIFF_DOUBLE:
- {
- if( !TIFFWriteDoubleArray(tif, dir, v))
- goto out;
- }
- break;
- default:
- /* TIFF_NOTYPE */
- /* TIFF_ASCII */
- /* TIFF_UNDEFINED */
- /* TIFF_RATIONAL */
- /* TIFF_SRATIONAL */
- goto out;
- }
- status = 1;
- out:
- if (w != buf)
- _TIFFfree(w);
- return (status);
-}
-
-static int
-TIFFWriteTransferFunction(TIFF* tif, TIFFDirEntry* dir)
-{
- TIFFDirectory* td = &tif->tif_dir;
- tsize_t n = (1L<<td->td_bitspersample) * sizeof (uint16);
- uint16** tf = td->td_transferfunction;
- int ncols;
-
- /*
- * Check if the table can be written as a single column,
- * or if it must be written as 3 columns. Note that we
- * write a 3-column tag if there are 2 samples/pixel and
- * a single column of data won't suffice--hmm.
- */
- switch (td->td_samplesperpixel - td->td_extrasamples) {
- default: if (_TIFFmemcmp(tf[0], tf[2], n)) { ncols = 3; break; }
- case 2: if (_TIFFmemcmp(tf[0], tf[1], n)) { ncols = 3; break; }
- case 1: case 0: ncols = 1;
- }
- return (TIFFWriteShortTable(tif,
- TIFFTAG_TRANSFERFUNCTION, dir, ncols, tf));
-}
-
-static int
-TIFFWriteInkNames(TIFF* tif, TIFFDirEntry* dir)
-{
- TIFFDirectory* td = &tif->tif_dir;
-
- dir->tdir_tag = TIFFTAG_INKNAMES;
- dir->tdir_type = (short) TIFF_ASCII;
- dir->tdir_count = td->td_inknameslen;
- return (TIFFWriteByteArray(tif, dir, td->td_inknames));
-}
-
-/*
- * Write a contiguous directory item.
- */
-static int
-TIFFWriteData(TIFF* tif, TIFFDirEntry* dir, char* cp)
-{
- tsize_t cc;
-
- if (tif->tif_flags & TIFF_SWAB) {
- switch (dir->tdir_type) {
- case TIFF_SHORT:
- case TIFF_SSHORT:
- TIFFSwabArrayOfShort((uint16*) cp, dir->tdir_count);
- break;
- case TIFF_LONG:
- case TIFF_SLONG:
- case TIFF_FLOAT:
- TIFFSwabArrayOfLong((uint32*) cp, dir->tdir_count);
- break;
- case TIFF_RATIONAL:
- case TIFF_SRATIONAL:
- TIFFSwabArrayOfLong((uint32*) cp, 2*dir->tdir_count);
- break;
- case TIFF_DOUBLE:
- TIFFSwabArrayOfDouble((double*) cp, dir->tdir_count);
- break;
- }
- }
- dir->tdir_offset = tif->tif_dataoff;
- cc = dir->tdir_count * TIFFDataWidth((TIFFDataType) dir->tdir_type);
- if (SeekOK(tif, dir->tdir_offset) &&
- WriteOK(tif, cp, cc)) {
- tif->tif_dataoff += (cc + 1) & ~1;
- return (1);
- }
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Error writing data for field \"%s\"",
- _TIFFFieldWithTag(tif, dir->tdir_tag)->field_name);
- return (0);
-}
-
-/*
- * Similar to TIFFWriteDirectory(), but if the directory has already
- * been written once, it is relocated to the end of the file, in case it
- * has changed in size. Note that this will result in the loss of the
- * previously used directory space.
- */
-
-int
-TIFFRewriteDirectory( TIFF *tif )
-{
- static const char module[] = "TIFFRewriteDirectory";
-
- /* We don't need to do anything special if it hasn't been written. */
- if( tif->tif_diroff == 0 )
- return TIFFWriteDirectory( tif );
-
- /*
- ** Find and zero the pointer to this directory, so that TIFFLinkDirectory
- ** will cause it to be added after this directories current pre-link.
- */
-
- /* Is it the first directory in the file? */
- if (tif->tif_header.tiff_diroff == tif->tif_diroff)
- {
- tif->tif_header.tiff_diroff = 0;
- tif->tif_diroff = 0;
-
- TIFFSeekFile(tif, (toff_t)(TIFF_MAGIC_SIZE+TIFF_VERSION_SIZE),
- SEEK_SET);
- if (!WriteOK(tif, &(tif->tif_header.tiff_diroff),
- sizeof (tif->tif_diroff)))
- {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Error updating TIFF header");
- return (0);
- }
- }
- else
- {
- toff_t nextdir, off;
-
- nextdir = tif->tif_header.tiff_diroff;
- do {
- uint16 dircount;
-
- if (!SeekOK(tif, nextdir) ||
- !ReadOK(tif, &dircount, sizeof (dircount))) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "Error fetching directory count");
- return (0);
- }
- if (tif->tif_flags & TIFF_SWAB)
- TIFFSwabShort(&dircount);
- (void) TIFFSeekFile(tif,
- dircount * sizeof (TIFFDirEntry), SEEK_CUR);
- if (!ReadOK(tif, &nextdir, sizeof (nextdir))) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "Error fetching directory link");
- return (0);
- }
- if (tif->tif_flags & TIFF_SWAB)
- TIFFSwabLong(&nextdir);
- } while (nextdir != tif->tif_diroff && nextdir != 0);
- off = TIFFSeekFile(tif, 0, SEEK_CUR); /* get current offset */
- (void) TIFFSeekFile(tif, off - (toff_t)sizeof(nextdir), SEEK_SET);
- tif->tif_diroff = 0;
- if (!WriteOK(tif, &(tif->tif_diroff), sizeof (nextdir))) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "Error writing directory link");
- return (0);
- }
- }
-
- /*
- ** Now use TIFFWriteDirectory() normally.
- */
-
- return TIFFWriteDirectory( tif );
-}
-
-
-/*
- * Link the current directory into the directory chain for the file.
- */
-static int
-TIFFLinkDirectory(TIFF* tif)
-{
- static const char module[] = "TIFFLinkDirectory";
- toff_t nextdir;
- toff_t diroff, off;
-
- tif->tif_diroff = (TIFFSeekFile(tif, (toff_t) 0, SEEK_END)+1) &~ 1;
- diroff = tif->tif_diroff;
- if (tif->tif_flags & TIFF_SWAB)
- TIFFSwabLong(&diroff);
-
- /*
- * Handle SubIFDs
- */
- if (tif->tif_flags & TIFF_INSUBIFD) {
- (void) TIFFSeekFile(tif, tif->tif_subifdoff, SEEK_SET);
- if (!WriteOK(tif, &diroff, sizeof (diroff))) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Error writing SubIFD directory link",
- tif->tif_name);
- return (0);
- }
- /*
- * Advance to the next SubIFD or, if this is
- * the last one configured, revert back to the
- * normal directory linkage.
- */
- if (--tif->tif_nsubifd)
- tif->tif_subifdoff += sizeof (diroff);
- else
- tif->tif_flags &= ~TIFF_INSUBIFD;
- return (1);
- }
-
- if (tif->tif_header.tiff_diroff == 0) {
- /*
- * First directory, overwrite offset in header.
- */
- tif->tif_header.tiff_diroff = tif->tif_diroff;
- (void) TIFFSeekFile(tif,
- (toff_t)(TIFF_MAGIC_SIZE+TIFF_VERSION_SIZE),
- SEEK_SET);
- if (!WriteOK(tif, &diroff, sizeof (diroff))) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Error writing TIFF header");
- return (0);
- }
- return (1);
- }
- /*
- * Not the first directory, search to the last and append.
- */
- nextdir = tif->tif_header.tiff_diroff;
- do {
- uint16 dircount;
-
- if (!SeekOK(tif, nextdir) ||
- !ReadOK(tif, &dircount, sizeof (dircount))) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "Error fetching directory count");
- return (0);
- }
- if (tif->tif_flags & TIFF_SWAB)
- TIFFSwabShort(&dircount);
- (void) TIFFSeekFile(tif,
- dircount * sizeof (TIFFDirEntry), SEEK_CUR);
- if (!ReadOK(tif, &nextdir, sizeof (nextdir))) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "Error fetching directory link");
- return (0);
- }
- if (tif->tif_flags & TIFF_SWAB)
- TIFFSwabLong(&nextdir);
- } while (nextdir != 0);
- off = TIFFSeekFile(tif, 0, SEEK_CUR); /* get current offset */
- (void) TIFFSeekFile(tif, off - (toff_t)sizeof(nextdir), SEEK_SET);
- if (!WriteOK(tif, &diroff, sizeof (diroff))) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "Error writing directory link");
- return (0);
- }
- return (1);
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_dumpmode.c b/src/3rdparty/libtiff/libtiff/tif_dumpmode.c
deleted file mode 100644
index 767d6d9263..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_dumpmode.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_dumpmode.c,v 1.5.2.1 2009-01-01 00:10:43 bfriesen Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- *
- * "Null" Compression Algorithm Support.
- */
-#include "tiffiop.h"
-
-/*
- * Encode a hunk of pixels.
- */
-static int
-DumpModeEncode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
-{
- (void) s;
- while (cc > 0) {
- tsize_t n;
-
- n = cc;
- if (tif->tif_rawcc + n > tif->tif_rawdatasize)
- n = tif->tif_rawdatasize - tif->tif_rawcc;
-
- assert( n > 0 );
-
- /*
- * Avoid copy if client has setup raw
- * data buffer to avoid extra copy.
- */
- if (tif->tif_rawcp != pp)
- _TIFFmemcpy(tif->tif_rawcp, pp, n);
- tif->tif_rawcp += n;
- tif->tif_rawcc += n;
- pp += n;
- cc -= n;
- if (tif->tif_rawcc >= tif->tif_rawdatasize &&
- !TIFFFlushData1(tif))
- return (-1);
- }
- return (1);
-}
-
-/*
- * Decode a hunk of pixels.
- */
-static int
-DumpModeDecode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
-{
- (void) s;
-/* fprintf(stderr,"DumpModeDecode: scanline %ld, expected %ld bytes, got %ld bytes\n", */
-/* (long) tif->tif_row, (long) tif->tif_rawcc, (long) cc); */
- if (tif->tif_rawcc < cc) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "DumpModeDecode: Not enough data for scanline %d",
- tif->tif_row);
- return (0);
- }
- /*
- * Avoid copy if client has setup raw
- * data buffer to avoid extra copy.
- */
- if (tif->tif_rawcp != buf)
- _TIFFmemcpy(buf, tif->tif_rawcp, cc);
- tif->tif_rawcp += cc;
- tif->tif_rawcc -= cc;
- return (1);
-}
-
-/*
- * Seek forwards nrows in the current strip.
- */
-static int
-DumpModeSeek(TIFF* tif, uint32 nrows)
-{
- tif->tif_rawcp += nrows * tif->tif_scanlinesize;
- tif->tif_rawcc -= nrows * tif->tif_scanlinesize;
- return (1);
-}
-
-/*
- * Initialize dump mode.
- */
-int
-TIFFInitDumpMode(TIFF* tif, int scheme)
-{
- (void) scheme;
- tif->tif_decoderow = DumpModeDecode;
- tif->tif_decodestrip = DumpModeDecode;
- tif->tif_decodetile = DumpModeDecode;
- tif->tif_encoderow = DumpModeEncode;
- tif->tif_encodestrip = DumpModeEncode;
- tif->tif_encodetile = DumpModeEncode;
- tif->tif_seek = DumpModeSeek;
- return (1);
-}
diff --git a/src/3rdparty/libtiff/libtiff/tif_error.c b/src/3rdparty/libtiff/libtiff/tif_error.c
deleted file mode 100644
index 7025080ed3..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_error.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_error.c,v 1.4 2005/12/23 01:18:59 joris Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- */
-#include "tiffiop.h"
-
-TIFFErrorHandlerExt _TIFFerrorHandlerExt = NULL;
-
-TIFFErrorHandler
-TIFFSetErrorHandler(TIFFErrorHandler handler)
-{
- TIFFErrorHandler prev = _TIFFerrorHandler;
- _TIFFerrorHandler = handler;
- return (prev);
-}
-
-TIFFErrorHandlerExt
-TIFFSetErrorHandlerExt(TIFFErrorHandlerExt handler)
-{
- TIFFErrorHandlerExt prev = _TIFFerrorHandlerExt;
- _TIFFerrorHandlerExt = handler;
- return (prev);
-}
-
-void
-TIFFError(const char* module, const char* fmt, ...)
-{
- va_list ap;
- va_start(ap, fmt);
- if (_TIFFerrorHandler)
- (*_TIFFerrorHandler)(module, fmt, ap);
- if (_TIFFerrorHandlerExt)
- (*_TIFFerrorHandlerExt)(0, module, fmt, ap);
- va_end(ap);
-}
-
-void
-TIFFErrorExt(thandle_t fd, const char* module, const char* fmt, ...)
-{
- va_list ap;
- va_start(ap, fmt);
- if (_TIFFerrorHandler)
- (*_TIFFerrorHandler)(module, fmt, ap);
- if (_TIFFerrorHandlerExt)
- (*_TIFFerrorHandlerExt)(fd, module, fmt, ap);
- va_end(ap);
-}
-
diff --git a/src/3rdparty/libtiff/libtiff/tif_extension.c b/src/3rdparty/libtiff/libtiff/tif_extension.c
deleted file mode 100644
index 6861522285..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_extension.c
+++ /dev/null
@@ -1,111 +0,0 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_extension.c,v 1.4 2004/10/02 13:29:41 dron Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- *
- * Various routines support external extension of the tag set, and other
- * application extension capabilities.
- */
-
-#include "tiffiop.h"
-
-int TIFFGetTagListCount( TIFF *tif )
-
-{
- TIFFDirectory* td = &tif->tif_dir;
-
- return td->td_customValueCount;
-}
-
-ttag_t TIFFGetTagListEntry( TIFF *tif, int tag_index )
-
-{
- TIFFDirectory* td = &tif->tif_dir;
-
- if( tag_index < 0 || tag_index >= td->td_customValueCount )
- return (ttag_t) -1;
- else
- return td->td_customValues[tag_index].info->field_tag;
-}
-
-/*
-** This provides read/write access to the TIFFTagMethods within the TIFF
-** structure to application code without giving access to the private
-** TIFF structure.
-*/
-TIFFTagMethods *TIFFAccessTagMethods( TIFF *tif )
-
-{
- return &(tif->tif_tagmethods);
-}
-
-void *TIFFGetClientInfo( TIFF *tif, const char *name )
-
-{
- TIFFClientInfoLink *link = tif->tif_clientinfo;
-
- while( link != NULL && strcmp(link->name,name) != 0 )
- link = link->next;
-
- if( link != NULL )
- return link->data;
- else
- return NULL;
-}
-
-void TIFFSetClientInfo( TIFF *tif, void *data, const char *name )
-
-{
- TIFFClientInfoLink *link = tif->tif_clientinfo;
-
- /*
- ** Do we have an existing link with this name? If so, just
- ** set it.
- */
- while( link != NULL && strcmp(link->name,name) != 0 )
- link = link->next;
-
- if( link != NULL )
- {
- link->data = data;
- return;
- }
-
- /*
- ** Create a new link.
- */
-
- link = (TIFFClientInfoLink *) _TIFFmalloc(sizeof(TIFFClientInfoLink));
- assert (link != NULL);
- link->next = tif->tif_clientinfo;
- link->name = (char *) _TIFFmalloc(strlen(name)+1);
- assert (link->name != NULL);
- strcpy(link->name, name);
- link->data = data;
-
- tif->tif_clientinfo = link;
-}
diff --git a/src/3rdparty/libtiff/libtiff/tif_fax3.c b/src/3rdparty/libtiff/libtiff/tif_fax3.c
deleted file mode 100644
index b560d56415..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_fax3.c
+++ /dev/null
@@ -1,1603 +0,0 @@
-/* $Id: tif_fax3.c,v 1.43.2.5 2009-01-01 00:10:43 bfriesen Exp $ */
-
-/*
- * Copyright (c) 1990-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#include "tiffiop.h"
-#ifdef CCITT_SUPPORT
-/*
- * TIFF Library.
- *
- * CCITT Group 3 (T.4) and Group 4 (T.6) Compression Support.
- *
- * This file contains support for decoding and encoding TIFF
- * compression algorithms 2, 3, 4, and 32771.
- *
- * Decoder support is derived, with permission, from the code
- * in Frank Cringle's viewfax program;
- * Copyright (C) 1990, 1995 Frank D. Cringle.
- */
-#include "tif_fax3.h"
-#define G3CODES
-#include "t4.h"
-#include <stdio.h>
-
-/*
- * Compression+decompression state blocks are
- * derived from this ``base state'' block.
- */
-typedef struct {
- int rw_mode; /* O_RDONLY for decode, else encode */
- int mode; /* operating mode */
- uint32 rowbytes; /* bytes in a decoded scanline */
- uint32 rowpixels; /* pixels in a scanline */
-
- uint16 cleanfaxdata; /* CleanFaxData tag */
- uint32 badfaxrun; /* BadFaxRun tag */
- uint32 badfaxlines; /* BadFaxLines tag */
- uint32 groupoptions; /* Group 3/4 options tag */
- uint32 recvparams; /* encoded Class 2 session params */
- char* subaddress; /* subaddress string */
- uint32 recvtime; /* time spent receiving (secs) */
- char* faxdcs; /* Table 2/T.30 encoded session params */
- TIFFVGetMethod vgetparent; /* super-class method */
- TIFFVSetMethod vsetparent; /* super-class method */
- TIFFPrintMethod printdir; /* super-class method */
-} Fax3BaseState;
-#define Fax3State(tif) ((Fax3BaseState*) (tif)->tif_data)
-
-typedef enum { G3_1D, G3_2D } Ttag;
-typedef struct {
- Fax3BaseState b;
-
- /* Decoder state info */
- const unsigned char* bitmap; /* bit reversal table */
- uint32 data; /* current i/o byte/word */
- int bit; /* current i/o bit in byte */
- int EOLcnt; /* count of EOL codes recognized */
- TIFFFaxFillFunc fill; /* fill routine */
- uint32* runs; /* b&w runs for current/previous row */
- uint32* refruns; /* runs for reference line */
- uint32* curruns; /* runs for current line */
-
- /* Encoder state info */
- Ttag tag; /* encoding state */
- unsigned char* refline; /* reference line for 2d decoding */
- int k; /* #rows left that can be 2d encoded */
- int maxk; /* max #rows that can be 2d encoded */
-
- int line;
-} Fax3CodecState;
-#define DecoderState(tif) ((Fax3CodecState*) Fax3State(tif))
-#define EncoderState(tif) ((Fax3CodecState*) Fax3State(tif))
-
-#define is2DEncoding(sp) \
- (sp->b.groupoptions & GROUP3OPT_2DENCODING)
-#define isAligned(p,t) ((((unsigned long)(p)) & (sizeof (t)-1)) == 0)
-
-/*
- * Group 3 and Group 4 Decoding.
- */
-
-/*
- * These macros glue the TIFF library state to
- * the state expected by Frank's decoder.
- */
-#define DECLARE_STATE(tif, sp, mod) \
- static const char module[] = mod; \
- Fax3CodecState* sp = DecoderState(tif); \
- int a0; /* reference element */ \
- int lastx = sp->b.rowpixels; /* last element in row */ \
- uint32 BitAcc; /* bit accumulator */ \
- int BitsAvail; /* # valid bits in BitAcc */ \
- int RunLength; /* length of current run */ \
- unsigned char* cp; /* next byte of input data */ \
- unsigned char* ep; /* end of input data */ \
- uint32* pa; /* place to stuff next run */ \
- uint32* thisrun; /* current row's run array */ \
- int EOLcnt; /* # EOL codes recognized */ \
- const unsigned char* bitmap = sp->bitmap; /* input data bit reverser */ \
- const TIFFFaxTabEnt* TabEnt
-#define DECLARE_STATE_2D(tif, sp, mod) \
- DECLARE_STATE(tif, sp, mod); \
- int b1; /* next change on prev line */ \
- uint32* pb /* next run in reference line */\
-/*
- * Load any state that may be changed during decoding.
- */
-#define CACHE_STATE(tif, sp) do { \
- BitAcc = sp->data; \
- BitsAvail = sp->bit; \
- EOLcnt = sp->EOLcnt; \
- cp = (unsigned char*) tif->tif_rawcp; \
- ep = cp + tif->tif_rawcc; \
-} while (0)
-/*
- * Save state possibly changed during decoding.
- */
-#define UNCACHE_STATE(tif, sp) do { \
- sp->bit = BitsAvail; \
- sp->data = BitAcc; \
- sp->EOLcnt = EOLcnt; \
- tif->tif_rawcc -= (tidata_t) cp - tif->tif_rawcp; \
- tif->tif_rawcp = (tidata_t) cp; \
-} while (0)
-
-/*
- * Setup state for decoding a strip.
- */
-static int
-Fax3PreDecode(TIFF* tif, tsample_t s)
-{
- Fax3CodecState* sp = DecoderState(tif);
-
- (void) s;
- assert(sp != NULL);
- sp->bit = 0; /* force initial read */
- sp->data = 0;
- sp->EOLcnt = 0; /* force initial scan for EOL */
- /*
- * Decoder assumes lsb-to-msb bit order. Note that we select
- * this here rather than in Fax3SetupState so that viewers can
- * hold the image open, fiddle with the FillOrder tag value,
- * and then re-decode the image. Otherwise they'd need to close
- * and open the image to get the state reset.
- */
- sp->bitmap =
- TIFFGetBitRevTable(tif->tif_dir.td_fillorder != FILLORDER_LSB2MSB);
- if (sp->refruns) { /* init reference line to white */
- sp->refruns[0] = (uint32) sp->b.rowpixels;
- sp->refruns[1] = 0;
- }
- sp->line = 0;
- return (1);
-}
-
-/*
- * Routine for handling various errors/conditions.
- * Note how they are "glued into the decoder" by
- * overriding the definitions used by the decoder.
- */
-
-static void
-Fax3Unexpected(const char* module, TIFF* tif, uint32 line, uint32 a0)
-{
- TIFFErrorExt(tif->tif_clientdata, module, "%s: Bad code word at line %u of %s %u (x %u)",
- tif->tif_name, line, isTiled(tif) ? "tile" : "strip",
- (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip),
- a0);
-}
-#define unexpected(table, a0) Fax3Unexpected(module, tif, sp->line, a0)
-
-static void
-Fax3Extension(const char* module, TIFF* tif, uint32 line, uint32 a0)
-{
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Uncompressed data (not supported) at line %u of %s %u (x %u)",
- tif->tif_name, line, isTiled(tif) ? "tile" : "strip",
- (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip),
- a0);
-}
-#define extension(a0) Fax3Extension(module, tif, sp->line, a0)
-
-static void
-Fax3BadLength(const char* module, TIFF* tif, uint32 line, uint32 a0, uint32 lastx)
-{
- TIFFWarningExt(tif->tif_clientdata, module, "%s: %s at line %u of %s %u (got %u, expected %u)",
- tif->tif_name,
- a0 < lastx ? "Premature EOL" : "Line length mismatch",
- line, isTiled(tif) ? "tile" : "strip",
- (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip),
- a0, lastx);
-}
-#define badlength(a0,lastx) Fax3BadLength(module, tif, sp->line, a0, lastx)
-
-static void
-Fax3PrematureEOF(const char* module, TIFF* tif, uint32 line, uint32 a0)
-{
- TIFFWarningExt(tif->tif_clientdata, module, "%s: Premature EOF at line %u of %s %u (x %u)",
- tif->tif_name,
- line, isTiled(tif) ? "tile" : "strip",
- (isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip),
- a0);
-}
-#define prematureEOF(a0) Fax3PrematureEOF(module, tif, sp->line, a0)
-
-#define Nop
-
-/*
- * Decode the requested amount of G3 1D-encoded data.
- */
-static int
-Fax3Decode1D(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
-{
- DECLARE_STATE(tif, sp, "Fax3Decode1D");
-
- (void) s;
- CACHE_STATE(tif, sp);
- thisrun = sp->curruns;
- while ((long)occ > 0) {
- a0 = 0;
- RunLength = 0;
- pa = thisrun;
-#ifdef FAX3_DEBUG
- printf("\nBitAcc=%08X, BitsAvail = %d\n", BitAcc, BitsAvail);
- printf("-------------------- %d\n", tif->tif_row);
- fflush(stdout);
-#endif
- SYNC_EOL(EOF1D);
- EXPAND1D(EOF1Da);
- (*sp->fill)(buf, thisrun, pa, lastx);
- buf += sp->b.rowbytes;
- occ -= sp->b.rowbytes;
- sp->line++;
- continue;
- EOF1D: /* premature EOF */
- CLEANUP_RUNS();
- EOF1Da: /* premature EOF */
- (*sp->fill)(buf, thisrun, pa, lastx);
- UNCACHE_STATE(tif, sp);
- return (-1);
- }
- UNCACHE_STATE(tif, sp);
- return (1);
-}
-
-#define SWAP(t,a,b) { t x; x = (a); (a) = (b); (b) = x; }
-/*
- * Decode the requested amount of G3 2D-encoded data.
- */
-static int
-Fax3Decode2D(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
-{
- DECLARE_STATE_2D(tif, sp, "Fax3Decode2D");
- int is1D; /* current line is 1d/2d-encoded */
-
- (void) s;
- CACHE_STATE(tif, sp);
- while ((long)occ > 0) {
- a0 = 0;
- RunLength = 0;
- pa = thisrun = sp->curruns;
-#ifdef FAX3_DEBUG
- printf("\nBitAcc=%08X, BitsAvail = %d EOLcnt = %d",
- BitAcc, BitsAvail, EOLcnt);
-#endif
- SYNC_EOL(EOF2D);
- NeedBits8(1, EOF2D);
- is1D = GetBits(1); /* 1D/2D-encoding tag bit */
- ClrBits(1);
-#ifdef FAX3_DEBUG
- printf(" %s\n-------------------- %d\n",
- is1D ? "1D" : "2D", tif->tif_row);
- fflush(stdout);
-#endif
- pb = sp->refruns;
- b1 = *pb++;
- if (is1D)
- EXPAND1D(EOF2Da);
- else
- EXPAND2D(EOF2Da);
- (*sp->fill)(buf, thisrun, pa, lastx);
- SETVALUE(0); /* imaginary change for reference */
- SWAP(uint32*, sp->curruns, sp->refruns);
- buf += sp->b.rowbytes;
- occ -= sp->b.rowbytes;
- sp->line++;
- continue;
- EOF2D: /* premature EOF */
- CLEANUP_RUNS();
- EOF2Da: /* premature EOF */
- (*sp->fill)(buf, thisrun, pa, lastx);
- UNCACHE_STATE(tif, sp);
- return (-1);
- }
- UNCACHE_STATE(tif, sp);
- return (1);
-}
-#undef SWAP
-
-/*
- * The ZERO & FILL macros must handle spans < 2*sizeof(long) bytes.
- * For machines with 64-bit longs this is <16 bytes; otherwise
- * this is <8 bytes. We optimize the code here to reflect the
- * machine characteristics.
- */
-#if SIZEOF_LONG == 8
-# define FILL(n, cp) \
- switch (n) { \
- case 15:(cp)[14] = 0xff; case 14:(cp)[13] = 0xff; case 13: (cp)[12] = 0xff;\
- case 12:(cp)[11] = 0xff; case 11:(cp)[10] = 0xff; case 10: (cp)[9] = 0xff;\
- case 9: (cp)[8] = 0xff; case 8: (cp)[7] = 0xff; case 7: (cp)[6] = 0xff;\
- case 6: (cp)[5] = 0xff; case 5: (cp)[4] = 0xff; case 4: (cp)[3] = 0xff;\
- case 3: (cp)[2] = 0xff; case 2: (cp)[1] = 0xff; \
- case 1: (cp)[0] = 0xff; (cp) += (n); case 0: ; \
- }
-# define ZERO(n, cp) \
- switch (n) { \
- case 15:(cp)[14] = 0; case 14:(cp)[13] = 0; case 13: (cp)[12] = 0; \
- case 12:(cp)[11] = 0; case 11:(cp)[10] = 0; case 10: (cp)[9] = 0; \
- case 9: (cp)[8] = 0; case 8: (cp)[7] = 0; case 7: (cp)[6] = 0; \
- case 6: (cp)[5] = 0; case 5: (cp)[4] = 0; case 4: (cp)[3] = 0; \
- case 3: (cp)[2] = 0; case 2: (cp)[1] = 0; \
- case 1: (cp)[0] = 0; (cp) += (n); case 0: ; \
- }
-#else
-# define FILL(n, cp) \
- switch (n) { \
- case 7: (cp)[6] = 0xff; case 6: (cp)[5] = 0xff; case 5: (cp)[4] = 0xff; \
- case 4: (cp)[3] = 0xff; case 3: (cp)[2] = 0xff; case 2: (cp)[1] = 0xff; \
- case 1: (cp)[0] = 0xff; (cp) += (n); case 0: ; \
- }
-# define ZERO(n, cp) \
- switch (n) { \
- case 7: (cp)[6] = 0; case 6: (cp)[5] = 0; case 5: (cp)[4] = 0; \
- case 4: (cp)[3] = 0; case 3: (cp)[2] = 0; case 2: (cp)[1] = 0; \
- case 1: (cp)[0] = 0; (cp) += (n); case 0: ; \
- }
-#endif
-
-/*
- * Bit-fill a row according to the white/black
- * runs generated during G3/G4 decoding.
- */
-void
-_TIFFFax3fillruns(unsigned char* buf, uint32* runs, uint32* erun, uint32 lastx)
-{
- static const unsigned char _fillmasks[] =
- { 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff };
- unsigned char* cp;
- uint32 x, bx, run;
- int32 n, nw;
- long* lp;
-
- if ((erun-runs)&1)
- *erun++ = 0;
- x = 0;
- for (; runs < erun; runs += 2) {
- run = runs[0];
- if (x+run > lastx || run > lastx )
- run = runs[0] = (uint32) (lastx - x);
- if (run) {
- cp = buf + (x>>3);
- bx = x&7;
- if (run > 8-bx) {
- if (bx) { /* align to byte boundary */
- *cp++ &= 0xff << (8-bx);
- run -= 8-bx;
- }
- if( (n = run >> 3) != 0 ) { /* multiple bytes to fill */
- if ((n/sizeof (long)) > 1) {
- /*
- * Align to longword boundary and fill.
- */
- for (; n && !isAligned(cp, long); n--)
- *cp++ = 0x00;
- lp = (long*) cp;
- nw = (int32)(n / sizeof (long));
- n -= nw * sizeof (long);
- do {
- *lp++ = 0L;
- } while (--nw);
- cp = (unsigned char*) lp;
- }
- ZERO(n, cp);
- run &= 7;
- }
- if (run)
- cp[0] &= 0xff >> run;
- } else
- cp[0] &= ~(_fillmasks[run]>>bx);
- x += runs[0];
- }
- run = runs[1];
- if (x+run > lastx || run > lastx )
- run = runs[1] = lastx - x;
- if (run) {
- cp = buf + (x>>3);
- bx = x&7;
- if (run > 8-bx) {
- if (bx) { /* align to byte boundary */
- *cp++ |= 0xff >> bx;
- run -= 8-bx;
- }
- if( (n = run>>3) != 0 ) { /* multiple bytes to fill */
- if ((n/sizeof (long)) > 1) {
- /*
- * Align to longword boundary and fill.
- */
- for (; n && !isAligned(cp, long); n--)
- *cp++ = 0xff;
- lp = (long*) cp;
- nw = (int32)(n / sizeof (long));
- n -= nw * sizeof (long);
- do {
- *lp++ = -1L;
- } while (--nw);
- cp = (unsigned char*) lp;
- }
- FILL(n, cp);
- run &= 7;
- }
- if (run)
- cp[0] |= 0xff00 >> run;
- } else
- cp[0] |= _fillmasks[run]>>bx;
- x += runs[1];
- }
- }
- assert(x == lastx);
-}
-#undef ZERO
-#undef FILL
-
-/*
- * Setup G3/G4-related compression/decompression state
- * before data is processed. This routine is called once
- * per image -- it sets up different state based on whether
- * or not decoding or encoding is being done and whether
- * 1D- or 2D-encoded data is involved.
- */
-static int
-Fax3SetupState(TIFF* tif)
-{
- TIFFDirectory* td = &tif->tif_dir;
- Fax3BaseState* sp = Fax3State(tif);
- int needsRefLine;
- Fax3CodecState* dsp = (Fax3CodecState*) Fax3State(tif);
- uint32 rowbytes, rowpixels, nruns;
-
- if (td->td_bitspersample != 1) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Bits/sample must be 1 for Group 3/4 encoding/decoding");
- return (0);
- }
- /*
- * Calculate the scanline/tile widths.
- */
- if (isTiled(tif)) {
- rowbytes = TIFFTileRowSize(tif);
- rowpixels = td->td_tilewidth;
- } else {
- rowbytes = TIFFScanlineSize(tif);
- rowpixels = td->td_imagewidth;
- }
- sp->rowbytes = (uint32) rowbytes;
- sp->rowpixels = (uint32) rowpixels;
- /*
- * Allocate any additional space required for decoding/encoding.
- */
- needsRefLine = (
- (sp->groupoptions & GROUP3OPT_2DENCODING) ||
- td->td_compression == COMPRESSION_CCITTFAX4
- );
-
- nruns = needsRefLine ? 2*TIFFroundup(rowpixels,32) : rowpixels;
- nruns += 3;
- dsp->runs = (uint32*) _TIFFCheckMalloc(tif, 2*nruns, sizeof (uint32),
- "for Group 3/4 run arrays");
- if (dsp->runs == NULL)
- return (0);
- dsp->curruns = dsp->runs;
- if (needsRefLine)
- dsp->refruns = dsp->runs + nruns;
- else
- dsp->refruns = NULL;
- if (td->td_compression == COMPRESSION_CCITTFAX3
- && is2DEncoding(dsp)) { /* NB: default is 1D routine */
- tif->tif_decoderow = Fax3Decode2D;
- tif->tif_decodestrip = Fax3Decode2D;
- tif->tif_decodetile = Fax3Decode2D;
- }
-
- if (needsRefLine) { /* 2d encoding */
- Fax3CodecState* esp = EncoderState(tif);
- /*
- * 2d encoding requires a scanline
- * buffer for the ``reference line''; the
- * scanline against which delta encoding
- * is referenced. The reference line must
- * be initialized to be ``white'' (done elsewhere).
- */
- esp->refline = (unsigned char*) _TIFFmalloc(rowbytes);
- if (esp->refline == NULL) {
- TIFFErrorExt(tif->tif_clientdata, "Fax3SetupState",
- "%s: No space for Group 3/4 reference line",
- tif->tif_name);
- return (0);
- }
- } else /* 1d encoding */
- EncoderState(tif)->refline = NULL;
-
- return (1);
-}
-
-/*
- * CCITT Group 3 FAX Encoding.
- */
-
-#define Fax3FlushBits(tif, sp) { \
- if ((tif)->tif_rawcc >= (tif)->tif_rawdatasize) \
- (void) TIFFFlushData1(tif); \
- *(tif)->tif_rawcp++ = (tidataval_t) (sp)->data; \
- (tif)->tif_rawcc++; \
- (sp)->data = 0, (sp)->bit = 8; \
-}
-#define _FlushBits(tif) { \
- if ((tif)->tif_rawcc >= (tif)->tif_rawdatasize) \
- (void) TIFFFlushData1(tif); \
- *(tif)->tif_rawcp++ = (tidataval_t) data; \
- (tif)->tif_rawcc++; \
- data = 0, bit = 8; \
-}
-static const int _msbmask[9] =
- { 0x00, 0x01, 0x03, 0x07, 0x0f, 0x1f, 0x3f, 0x7f, 0xff };
-#define _PutBits(tif, bits, length) { \
- while (length > bit) { \
- data |= bits >> (length - bit); \
- length -= bit; \
- _FlushBits(tif); \
- } \
- data |= (bits & _msbmask[length]) << (bit - length); \
- bit -= length; \
- if (bit == 0) \
- _FlushBits(tif); \
-}
-
-/*
- * Write a variable-length bit-value to
- * the output stream. Values are
- * assumed to be at most 16 bits.
- */
-static void
-Fax3PutBits(TIFF* tif, unsigned int bits, unsigned int length)
-{
- Fax3CodecState* sp = EncoderState(tif);
- unsigned int bit = sp->bit;
- int data = sp->data;
-
- _PutBits(tif, bits, length);
-
- sp->data = data;
- sp->bit = bit;
-}
-
-/*
- * Write a code to the output stream.
- */
-#define putcode(tif, te) Fax3PutBits(tif, (te)->code, (te)->length)
-
-#ifdef FAX3_DEBUG
-#define DEBUG_COLOR(w) (tab == TIFFFaxWhiteCodes ? w "W" : w "B")
-#define DEBUG_PRINT(what,len) { \
- int t; \
- printf("%08X/%-2d: %s%5d\t", data, bit, DEBUG_COLOR(what), len); \
- for (t = length-1; t >= 0; t--) \
- putchar(code & (1<<t) ? '1' : '0'); \
- putchar('\n'); \
-}
-#endif
-
-/*
- * Write the sequence of codes that describes
- * the specified span of zero's or one's. The
- * appropriate table that holds the make-up and
- * terminating codes is supplied.
- */
-static void
-putspan(TIFF* tif, int32 span, const tableentry* tab)
-{
- Fax3CodecState* sp = EncoderState(tif);
- unsigned int bit = sp->bit;
- int data = sp->data;
- unsigned int code, length;
-
- while (span >= 2624) {
- const tableentry* te = &tab[63 + (2560>>6)];
- code = te->code, length = te->length;
-#ifdef FAX3_DEBUG
- DEBUG_PRINT("MakeUp", te->runlen);
-#endif
- _PutBits(tif, code, length);
- span -= te->runlen;
- }
- if (span >= 64) {
- const tableentry* te = &tab[63 + (span>>6)];
- assert(te->runlen == 64*(span>>6));
- code = te->code, length = te->length;
-#ifdef FAX3_DEBUG
- DEBUG_PRINT("MakeUp", te->runlen);
-#endif
- _PutBits(tif, code, length);
- span -= te->runlen;
- }
- code = tab[span].code, length = tab[span].length;
-#ifdef FAX3_DEBUG
- DEBUG_PRINT(" Term", tab[span].runlen);
-#endif
- _PutBits(tif, code, length);
-
- sp->data = data;
- sp->bit = bit;
-}
-
-/*
- * Write an EOL code to the output stream. The zero-fill
- * logic for byte-aligning encoded scanlines is handled
- * here. We also handle writing the tag bit for the next
- * scanline when doing 2d encoding.
- */
-static void
-Fax3PutEOL(TIFF* tif)
-{
- Fax3CodecState* sp = EncoderState(tif);
- unsigned int bit = sp->bit;
- int data = sp->data;
- unsigned int code, length, tparm;
-
- if (sp->b.groupoptions & GROUP3OPT_FILLBITS) {
- /*
- * Force bit alignment so EOL will terminate on
- * a byte boundary. That is, force the bit alignment
- * to 16-12 = 4 before putting out the EOL code.
- */
- int align = 8 - 4;
- if (align != sp->bit) {
- if (align > sp->bit)
- align = sp->bit + (8 - align);
- else
- align = sp->bit - align;
- code = 0;
- tparm=align;
- _PutBits(tif, 0, tparm);
- }
- }
- code = EOL, length = 12;
- if (is2DEncoding(sp))
- code = (code<<1) | (sp->tag == G3_1D), length++;
- _PutBits(tif, code, length);
-
- sp->data = data;
- sp->bit = bit;
-}
-
-/*
- * Reset encoding state at the start of a strip.
- */
-static int
-Fax3PreEncode(TIFF* tif, tsample_t s)
-{
- Fax3CodecState* sp = EncoderState(tif);
-
- (void) s;
- assert(sp != NULL);
- sp->bit = 8;
- sp->data = 0;
- sp->tag = G3_1D;
- /*
- * This is necessary for Group 4; otherwise it isn't
- * needed because the first scanline of each strip ends
- * up being copied into the refline.
- */
- if (sp->refline)
- _TIFFmemset(sp->refline, 0x00, sp->b.rowbytes);
- if (is2DEncoding(sp)) {
- float res = tif->tif_dir.td_yresolution;
- /*
- * The CCITT spec says that when doing 2d encoding, you
- * should only do it on K consecutive scanlines, where K
- * depends on the resolution of the image being encoded
- * (2 for <= 200 lpi, 4 for > 200 lpi). Since the directory
- * code initializes td_yresolution to 0, this code will
- * select a K of 2 unless the YResolution tag is set
- * appropriately. (Note also that we fudge a little here
- * and use 150 lpi to avoid problems with units conversion.)
- */
- if (tif->tif_dir.td_resolutionunit == RESUNIT_CENTIMETER)
- res *= 2.54f; /* convert to inches */
- sp->maxk = (res > 150 ? 4 : 2);
- sp->k = sp->maxk-1;
- } else
- sp->k = sp->maxk = 0;
- sp->line = 0;
- return (1);
-}
-
-static const unsigned char zeroruns[256] = {
- 8, 7, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 4, /* 0x00 - 0x0f */
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* 0x10 - 0x1f */
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* 0x20 - 0x2f */
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* 0x30 - 0x3f */
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x40 - 0x4f */
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x50 - 0x5f */
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x60 - 0x6f */
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x70 - 0x7f */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x80 - 0x8f */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x90 - 0x9f */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xa0 - 0xaf */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xb0 - 0xbf */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xc0 - 0xcf */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xd0 - 0xdf */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xe0 - 0xef */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0xf0 - 0xff */
-};
-static const unsigned char oneruns[256] = {
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x00 - 0x0f */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x10 - 0x1f */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x20 - 0x2f */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x30 - 0x3f */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x40 - 0x4f */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x50 - 0x5f */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x60 - 0x6f */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 0x70 - 0x7f */
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x80 - 0x8f */
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0x90 - 0x9f */
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0xa0 - 0xaf */
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, /* 0xb0 - 0xbf */
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* 0xc0 - 0xcf */
- 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, /* 0xd0 - 0xdf */
- 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, /* 0xe0 - 0xef */
- 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 8, /* 0xf0 - 0xff */
-};
-
-/*
- * On certain systems it pays to inline
- * the routines that find pixel spans.
- */
-#ifdef VAXC
-static int32 find0span(unsigned char*, int32, int32);
-static int32 find1span(unsigned char*, int32, int32);
-#pragma inline(find0span,find1span)
-#endif
-
-/*
- * Find a span of ones or zeros using the supplied
- * table. The ``base'' of the bit string is supplied
- * along with the start+end bit indices.
- */
-static int32
-find0span(unsigned char* bp, int32 bs, int32 be)
-{
- int32 bits = be - bs;
- int32 n, span;
-
- bp += bs>>3;
- /*
- * Check partial byte on lhs.
- */
- if (bits > 0 && (n = (bs & 7))) {
- span = zeroruns[(*bp << n) & 0xff];
- if (span > 8-n) /* table value too generous */
- span = 8-n;
- if (span > bits) /* constrain span to bit range */
- span = bits;
- if (n+span < 8) /* doesn't extend to edge of byte */
- return (span);
- bits -= span;
- bp++;
- } else
- span = 0;
- if (bits >= (int32)(2 * 8 * sizeof(long))) {
- long* lp;
- /*
- * Align to longword boundary and check longwords.
- */
- while (!isAligned(bp, long)) {
- if (*bp != 0x00)
- return (span + zeroruns[*bp]);
- span += 8, bits -= 8;
- bp++;
- }
- lp = (long*) bp;
- while ((bits >= (int32)(8 * sizeof(long))) && (0 == *lp)) {
- span += 8*sizeof (long), bits -= 8*sizeof (long);
- lp++;
- }
- bp = (unsigned char*) lp;
- }
- /*
- * Scan full bytes for all 0's.
- */
- while (bits >= 8) {
- if (*bp != 0x00) /* end of run */
- return (span + zeroruns[*bp]);
- span += 8, bits -= 8;
- bp++;
- }
- /*
- * Check partial byte on rhs.
- */
- if (bits > 0) {
- n = zeroruns[*bp];
- span += (n > bits ? bits : n);
- }
- return (span);
-}
-
-static int32
-find1span(unsigned char* bp, int32 bs, int32 be)
-{
- int32 bits = be - bs;
- int32 n, span;
-
- bp += bs>>3;
- /*
- * Check partial byte on lhs.
- */
- if (bits > 0 && (n = (bs & 7))) {
- span = oneruns[(*bp << n) & 0xff];
- if (span > 8-n) /* table value too generous */
- span = 8-n;
- if (span > bits) /* constrain span to bit range */
- span = bits;
- if (n+span < 8) /* doesn't extend to edge of byte */
- return (span);
- bits -= span;
- bp++;
- } else
- span = 0;
- if (bits >= (int32)(2 * 8 * sizeof(long))) {
- long* lp;
- /*
- * Align to longword boundary and check longwords.
- */
- while (!isAligned(bp, long)) {
- if (*bp != 0xff)
- return (span + oneruns[*bp]);
- span += 8, bits -= 8;
- bp++;
- }
- lp = (long*) bp;
- while ((bits >= (int32)(8 * sizeof(long))) && (~0 == *lp)) {
- span += 8*sizeof (long), bits -= 8*sizeof (long);
- lp++;
- }
- bp = (unsigned char*) lp;
- }
- /*
- * Scan full bytes for all 1's.
- */
- while (bits >= 8) {
- if (*bp != 0xff) /* end of run */
- return (span + oneruns[*bp]);
- span += 8, bits -= 8;
- bp++;
- }
- /*
- * Check partial byte on rhs.
- */
- if (bits > 0) {
- n = oneruns[*bp];
- span += (n > bits ? bits : n);
- }
- return (span);
-}
-
-/*
- * Return the offset of the next bit in the range
- * [bs..be] that is different from the specified
- * color. The end, be, is returned if no such bit
- * exists.
- */
-#define finddiff(_cp, _bs, _be, _color) \
- (_bs + (_color ? find1span(_cp,_bs,_be) : find0span(_cp,_bs,_be)))
-/*
- * Like finddiff, but also check the starting bit
- * against the end in case start > end.
- */
-#define finddiff2(_cp, _bs, _be, _color) \
- (_bs < _be ? finddiff(_cp,_bs,_be,_color) : _be)
-
-/*
- * 1d-encode a row of pixels. The encoding is
- * a sequence of all-white or all-black spans
- * of pixels encoded with Huffman codes.
- */
-static int
-Fax3Encode1DRow(TIFF* tif, unsigned char* bp, uint32 bits)
-{
- Fax3CodecState* sp = EncoderState(tif);
- int32 span;
- uint32 bs = 0;
-
- for (;;) {
- span = find0span(bp, bs, bits); /* white span */
- putspan(tif, span, TIFFFaxWhiteCodes);
- bs += span;
- if (bs >= bits)
- break;
- span = find1span(bp, bs, bits); /* black span */
- putspan(tif, span, TIFFFaxBlackCodes);
- bs += span;
- if (bs >= bits)
- break;
- }
- if (sp->b.mode & (FAXMODE_BYTEALIGN|FAXMODE_WORDALIGN)) {
- if (sp->bit != 8) /* byte-align */
- Fax3FlushBits(tif, sp);
- if ((sp->b.mode&FAXMODE_WORDALIGN) &&
- !isAligned(tif->tif_rawcp, uint16))
- Fax3FlushBits(tif, sp);
- }
- return (1);
-}
-
-static const tableentry horizcode =
- { 3, 0x1, 0 }; /* 001 */
-static const tableentry passcode =
- { 4, 0x1, 0 }; /* 0001 */
-static const tableentry vcodes[7] = {
- { 7, 0x03, 0 }, /* 0000 011 */
- { 6, 0x03, 0 }, /* 0000 11 */
- { 3, 0x03, 0 }, /* 011 */
- { 1, 0x1, 0 }, /* 1 */
- { 3, 0x2, 0 }, /* 010 */
- { 6, 0x02, 0 }, /* 0000 10 */
- { 7, 0x02, 0 } /* 0000 010 */
-};
-
-/*
- * 2d-encode a row of pixels. Consult the CCITT
- * documentation for the algorithm.
- */
-static int
-Fax3Encode2DRow(TIFF* tif, unsigned char* bp, unsigned char* rp, uint32 bits)
-{
-#define PIXEL(buf,ix) ((((buf)[(ix)>>3]) >> (7-((ix)&7))) & 1)
- uint32 a0 = 0;
- uint32 a1 = (PIXEL(bp, 0) != 0 ? 0 : finddiff(bp, 0, bits, 0));
- uint32 b1 = (PIXEL(rp, 0) != 0 ? 0 : finddiff(rp, 0, bits, 0));
- uint32 a2, b2;
-
- for (;;) {
- b2 = finddiff2(rp, b1, bits, PIXEL(rp,b1));
- if (b2 >= a1) {
- int32 d = b1 - a1;
- if (!(-3 <= d && d <= 3)) { /* horizontal mode */
- a2 = finddiff2(bp, a1, bits, PIXEL(bp,a1));
- putcode(tif, &horizcode);
- if (a0+a1 == 0 || PIXEL(bp, a0) == 0) {
- putspan(tif, a1-a0, TIFFFaxWhiteCodes);
- putspan(tif, a2-a1, TIFFFaxBlackCodes);
- } else {
- putspan(tif, a1-a0, TIFFFaxBlackCodes);
- putspan(tif, a2-a1, TIFFFaxWhiteCodes);
- }
- a0 = a2;
- } else { /* vertical mode */
- putcode(tif, &vcodes[d+3]);
- a0 = a1;
- }
- } else { /* pass mode */
- putcode(tif, &passcode);
- a0 = b2;
- }
- if (a0 >= bits)
- break;
- a1 = finddiff(bp, a0, bits, PIXEL(bp,a0));
- b1 = finddiff(rp, a0, bits, !PIXEL(bp,a0));
- b1 = finddiff(rp, b1, bits, PIXEL(bp,a0));
- }
- return (1);
-#undef PIXEL
-}
-
-/*
- * Encode a buffer of pixels.
- */
-static int
-Fax3Encode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
- Fax3CodecState* sp = EncoderState(tif);
-
- (void) s;
- while ((long)cc > 0) {
- if ((sp->b.mode & FAXMODE_NOEOL) == 0)
- Fax3PutEOL(tif);
- if (is2DEncoding(sp)) {
- if (sp->tag == G3_1D) {
- if (!Fax3Encode1DRow(tif, bp, sp->b.rowpixels))
- return (0);
- sp->tag = G3_2D;
- } else {
- if (!Fax3Encode2DRow(tif, bp, sp->refline,
- sp->b.rowpixels))
- return (0);
- sp->k--;
- }
- if (sp->k == 0) {
- sp->tag = G3_1D;
- sp->k = sp->maxk-1;
- } else
- _TIFFmemcpy(sp->refline, bp, sp->b.rowbytes);
- } else {
- if (!Fax3Encode1DRow(tif, bp, sp->b.rowpixels))
- return (0);
- }
- bp += sp->b.rowbytes;
- cc -= sp->b.rowbytes;
- }
- return (1);
-}
-
-static int
-Fax3PostEncode(TIFF* tif)
-{
- Fax3CodecState* sp = EncoderState(tif);
-
- if (sp->bit != 8)
- Fax3FlushBits(tif, sp);
- return (1);
-}
-
-static void
-Fax3Close(TIFF* tif)
-{
- if ((Fax3State(tif)->mode & FAXMODE_NORTC) == 0) {
- Fax3CodecState* sp = EncoderState(tif);
- unsigned int code = EOL;
- unsigned int length = 12;
- int i;
-
- if (is2DEncoding(sp))
- code = (code<<1) | (sp->tag == G3_1D), length++;
- for (i = 0; i < 6; i++)
- Fax3PutBits(tif, code, length);
- Fax3FlushBits(tif, sp);
- }
-}
-
-static void
-Fax3Cleanup(TIFF* tif)
-{
- Fax3CodecState* sp = DecoderState(tif);
-
- assert(sp != 0);
-
- tif->tif_tagmethods.vgetfield = sp->b.vgetparent;
- tif->tif_tagmethods.vsetfield = sp->b.vsetparent;
- tif->tif_tagmethods.printdir = sp->b.printdir;
-
- if (sp->runs)
- _TIFFfree(sp->runs);
- if (sp->refline)
- _TIFFfree(sp->refline);
-
- if (Fax3State(tif)->subaddress)
- _TIFFfree(Fax3State(tif)->subaddress);
- if (Fax3State(tif)->faxdcs)
- _TIFFfree(Fax3State(tif)->faxdcs);
-
- _TIFFfree(tif->tif_data);
- tif->tif_data = NULL;
-
- _TIFFSetDefaultCompressionState(tif);
-}
-
-#define FIELD_BADFAXLINES (FIELD_CODEC+0)
-#define FIELD_CLEANFAXDATA (FIELD_CODEC+1)
-#define FIELD_BADFAXRUN (FIELD_CODEC+2)
-#define FIELD_RECVPARAMS (FIELD_CODEC+3)
-#define FIELD_SUBADDRESS (FIELD_CODEC+4)
-#define FIELD_RECVTIME (FIELD_CODEC+5)
-#define FIELD_FAXDCS (FIELD_CODEC+6)
-
-#define FIELD_OPTIONS (FIELD_CODEC+7)
-
-static const TIFFFieldInfo faxFieldInfo[] = {
- { TIFFTAG_FAXMODE, 0, 0, TIFF_ANY, FIELD_PSEUDO,
- FALSE, FALSE, "FaxMode" },
- { TIFFTAG_FAXFILLFUNC, 0, 0, TIFF_ANY, FIELD_PSEUDO,
- FALSE, FALSE, "FaxFillFunc" },
- { TIFFTAG_BADFAXLINES, 1, 1, TIFF_LONG, FIELD_BADFAXLINES,
- TRUE, FALSE, "BadFaxLines" },
- { TIFFTAG_BADFAXLINES, 1, 1, TIFF_SHORT, FIELD_BADFAXLINES,
- TRUE, FALSE, "BadFaxLines" },
- { TIFFTAG_CLEANFAXDATA, 1, 1, TIFF_SHORT, FIELD_CLEANFAXDATA,
- TRUE, FALSE, "CleanFaxData" },
- { TIFFTAG_CONSECUTIVEBADFAXLINES,1,1, TIFF_LONG, FIELD_BADFAXRUN,
- TRUE, FALSE, "ConsecutiveBadFaxLines" },
- { TIFFTAG_CONSECUTIVEBADFAXLINES,1,1, TIFF_SHORT, FIELD_BADFAXRUN,
- TRUE, FALSE, "ConsecutiveBadFaxLines" },
- { TIFFTAG_FAXRECVPARAMS, 1, 1, TIFF_LONG, FIELD_RECVPARAMS,
- TRUE, FALSE, "FaxRecvParams" },
- { TIFFTAG_FAXSUBADDRESS, -1,-1, TIFF_ASCII, FIELD_SUBADDRESS,
- TRUE, FALSE, "FaxSubAddress" },
- { TIFFTAG_FAXRECVTIME, 1, 1, TIFF_LONG, FIELD_RECVTIME,
- TRUE, FALSE, "FaxRecvTime" },
- { TIFFTAG_FAXDCS, -1,-1, TIFF_ASCII, FIELD_FAXDCS,
- TRUE, FALSE, "FaxDcs" },
-};
-static const TIFFFieldInfo fax3FieldInfo[] = {
- { TIFFTAG_GROUP3OPTIONS, 1, 1, TIFF_LONG, FIELD_OPTIONS,
- FALSE, FALSE, "Group3Options" },
-};
-static const TIFFFieldInfo fax4FieldInfo[] = {
- { TIFFTAG_GROUP4OPTIONS, 1, 1, TIFF_LONG, FIELD_OPTIONS,
- FALSE, FALSE, "Group4Options" },
-};
-#define N(a) (sizeof (a) / sizeof (a[0]))
-
-static int
-Fax3VSetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- Fax3BaseState* sp = Fax3State(tif);
- const TIFFFieldInfo* fip;
-
- assert(sp != 0);
- assert(sp->vsetparent != 0);
-
- switch (tag) {
- case TIFFTAG_FAXMODE:
- sp->mode = va_arg(ap, int);
- return 1; /* NB: pseudo tag */
- case TIFFTAG_FAXFILLFUNC:
- DecoderState(tif)->fill = va_arg(ap, TIFFFaxFillFunc);
- return 1; /* NB: pseudo tag */
- case TIFFTAG_GROUP3OPTIONS:
- /* XXX: avoid reading options if compression mismatches. */
- if (tif->tif_dir.td_compression == COMPRESSION_CCITTFAX3)
- sp->groupoptions = va_arg(ap, uint32);
- break;
- case TIFFTAG_GROUP4OPTIONS:
- /* XXX: avoid reading options if compression mismatches. */
- if (tif->tif_dir.td_compression == COMPRESSION_CCITTFAX4)
- sp->groupoptions = va_arg(ap, uint32);
- break;
- case TIFFTAG_BADFAXLINES:
- sp->badfaxlines = va_arg(ap, uint32);
- break;
- case TIFFTAG_CLEANFAXDATA:
- sp->cleanfaxdata = (uint16) va_arg(ap, int);
- break;
- case TIFFTAG_CONSECUTIVEBADFAXLINES:
- sp->badfaxrun = va_arg(ap, uint32);
- break;
- case TIFFTAG_FAXRECVPARAMS:
- sp->recvparams = va_arg(ap, uint32);
- break;
- case TIFFTAG_FAXSUBADDRESS:
- _TIFFsetString(&sp->subaddress, va_arg(ap, char*));
- break;
- case TIFFTAG_FAXRECVTIME:
- sp->recvtime = va_arg(ap, uint32);
- break;
- case TIFFTAG_FAXDCS:
- _TIFFsetString(&sp->faxdcs, va_arg(ap, char*));
- break;
- default:
- return (*sp->vsetparent)(tif, tag, ap);
- }
-
- if ((fip = _TIFFFieldWithTag(tif, tag)))
- TIFFSetFieldBit(tif, fip->field_bit);
- else
- return 0;
-
- tif->tif_flags |= TIFF_DIRTYDIRECT;
- return 1;
-}
-
-static int
-Fax3VGetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- Fax3BaseState* sp = Fax3State(tif);
-
- assert(sp != 0);
-
- switch (tag) {
- case TIFFTAG_FAXMODE:
- *va_arg(ap, int*) = sp->mode;
- break;
- case TIFFTAG_FAXFILLFUNC:
- *va_arg(ap, TIFFFaxFillFunc*) = DecoderState(tif)->fill;
- break;
- case TIFFTAG_GROUP3OPTIONS:
- case TIFFTAG_GROUP4OPTIONS:
- *va_arg(ap, uint32*) = sp->groupoptions;
- break;
- case TIFFTAG_BADFAXLINES:
- *va_arg(ap, uint32*) = sp->badfaxlines;
- break;
- case TIFFTAG_CLEANFAXDATA:
- *va_arg(ap, uint16*) = sp->cleanfaxdata;
- break;
- case TIFFTAG_CONSECUTIVEBADFAXLINES:
- *va_arg(ap, uint32*) = sp->badfaxrun;
- break;
- case TIFFTAG_FAXRECVPARAMS:
- *va_arg(ap, uint32*) = sp->recvparams;
- break;
- case TIFFTAG_FAXSUBADDRESS:
- *va_arg(ap, char**) = sp->subaddress;
- break;
- case TIFFTAG_FAXRECVTIME:
- *va_arg(ap, uint32*) = sp->recvtime;
- break;
- case TIFFTAG_FAXDCS:
- *va_arg(ap, char**) = sp->faxdcs;
- break;
- default:
- return (*sp->vgetparent)(tif, tag, ap);
- }
- return (1);
-}
-
-static void
-Fax3PrintDir(TIFF* tif, FILE* fd, long flags)
-{
- Fax3BaseState* sp = Fax3State(tif);
-
- assert(sp != 0);
-
- (void) flags;
- if (TIFFFieldSet(tif,FIELD_OPTIONS)) {
- const char* sep = " ";
- if (tif->tif_dir.td_compression == COMPRESSION_CCITTFAX4) {
- fprintf(fd, " Group 4 Options:");
- if (sp->groupoptions & GROUP4OPT_UNCOMPRESSED)
- fprintf(fd, "%suncompressed data", sep);
- } else {
-
- fprintf(fd, " Group 3 Options:");
- if (sp->groupoptions & GROUP3OPT_2DENCODING)
- fprintf(fd, "%s2-d encoding", sep), sep = "+";
- if (sp->groupoptions & GROUP3OPT_FILLBITS)
- fprintf(fd, "%sEOL padding", sep), sep = "+";
- if (sp->groupoptions & GROUP3OPT_UNCOMPRESSED)
- fprintf(fd, "%suncompressed data", sep);
- }
- fprintf(fd, " (%lu = 0x%lx)\n",
- (unsigned long) sp->groupoptions,
- (unsigned long) sp->groupoptions);
- }
- if (TIFFFieldSet(tif,FIELD_CLEANFAXDATA)) {
- fprintf(fd, " Fax Data:");
- switch (sp->cleanfaxdata) {
- case CLEANFAXDATA_CLEAN:
- fprintf(fd, " clean");
- break;
- case CLEANFAXDATA_REGENERATED:
- fprintf(fd, " receiver regenerated");
- break;
- case CLEANFAXDATA_UNCLEAN:
- fprintf(fd, " uncorrected errors");
- break;
- }
- fprintf(fd, " (%u = 0x%x)\n",
- sp->cleanfaxdata, sp->cleanfaxdata);
- }
- if (TIFFFieldSet(tif,FIELD_BADFAXLINES))
- fprintf(fd, " Bad Fax Lines: %lu\n",
- (unsigned long) sp->badfaxlines);
- if (TIFFFieldSet(tif,FIELD_BADFAXRUN))
- fprintf(fd, " Consecutive Bad Fax Lines: %lu\n",
- (unsigned long) sp->badfaxrun);
- if (TIFFFieldSet(tif,FIELD_RECVPARAMS))
- fprintf(fd, " Fax Receive Parameters: %08lx\n",
- (unsigned long) sp->recvparams);
- if (TIFFFieldSet(tif,FIELD_SUBADDRESS))
- fprintf(fd, " Fax SubAddress: %s\n", sp->subaddress);
- if (TIFFFieldSet(tif,FIELD_RECVTIME))
- fprintf(fd, " Fax Receive Time: %lu secs\n",
- (unsigned long) sp->recvtime);
- if (TIFFFieldSet(tif,FIELD_FAXDCS))
- fprintf(fd, " Fax DCS: %s\n", sp->faxdcs);
-}
-
-static int
-InitCCITTFax3(TIFF* tif)
-{
- Fax3BaseState* sp;
-
- /*
- * Merge codec-specific tag information.
- */
- if (!_TIFFMergeFieldInfo(tif, faxFieldInfo, N(faxFieldInfo))) {
- TIFFErrorExt(tif->tif_clientdata, "InitCCITTFax3",
- "Merging common CCITT Fax codec-specific tags failed");
- return 0;
- }
-
- /*
- * Allocate state block so tag methods have storage to record values.
- */
- tif->tif_data = (tidata_t)
- _TIFFmalloc(sizeof (Fax3CodecState));
-
- if (tif->tif_data == NULL) {
- TIFFErrorExt(tif->tif_clientdata, "TIFFInitCCITTFax3",
- "%s: No space for state block", tif->tif_name);
- return (0);
- }
-
- sp = Fax3State(tif);
- sp->rw_mode = tif->tif_mode;
-
- /*
- * Override parent get/set field methods.
- */
- sp->vgetparent = tif->tif_tagmethods.vgetfield;
- tif->tif_tagmethods.vgetfield = Fax3VGetField; /* hook for codec tags */
- sp->vsetparent = tif->tif_tagmethods.vsetfield;
- tif->tif_tagmethods.vsetfield = Fax3VSetField; /* hook for codec tags */
- sp->printdir = tif->tif_tagmethods.printdir;
- tif->tif_tagmethods.printdir = Fax3PrintDir; /* hook for codec tags */
- sp->groupoptions = 0;
- sp->recvparams = 0;
- sp->subaddress = NULL;
- sp->faxdcs = NULL;
-
- if (sp->rw_mode == O_RDONLY) /* FIXME: improve for in place update */
- tif->tif_flags |= TIFF_NOBITREV; /* decoder does bit reversal */
- DecoderState(tif)->runs = NULL;
- TIFFSetField(tif, TIFFTAG_FAXFILLFUNC, _TIFFFax3fillruns);
- EncoderState(tif)->refline = NULL;
-
- /*
- * Install codec methods.
- */
- tif->tif_setupdecode = Fax3SetupState;
- tif->tif_predecode = Fax3PreDecode;
- tif->tif_decoderow = Fax3Decode1D;
- tif->tif_decodestrip = Fax3Decode1D;
- tif->tif_decodetile = Fax3Decode1D;
- tif->tif_setupencode = Fax3SetupState;
- tif->tif_preencode = Fax3PreEncode;
- tif->tif_postencode = Fax3PostEncode;
- tif->tif_encoderow = Fax3Encode;
- tif->tif_encodestrip = Fax3Encode;
- tif->tif_encodetile = Fax3Encode;
- tif->tif_close = Fax3Close;
- tif->tif_cleanup = Fax3Cleanup;
-
- return (1);
-}
-
-int
-TIFFInitCCITTFax3(TIFF* tif, int scheme)
-{
- (void) scheme;
- if (InitCCITTFax3(tif)) {
- /*
- * Merge codec-specific tag information.
- */
- if (!_TIFFMergeFieldInfo(tif, fax3FieldInfo, N(fax3FieldInfo))) {
- TIFFErrorExt(tif->tif_clientdata, "TIFFInitCCITTFax3",
- "Merging CCITT Fax 3 codec-specific tags failed");
- return 0;
- }
-
- /*
- * The default format is Class/F-style w/o RTC.
- */
- return TIFFSetField(tif, TIFFTAG_FAXMODE, FAXMODE_CLASSF);
- } else
- return 01;
-}
-
-/*
- * CCITT Group 4 (T.6) Facsimile-compatible
- * Compression Scheme Support.
- */
-
-#define SWAP(t,a,b) { t x; x = (a); (a) = (b); (b) = x; }
-/*
- * Decode the requested amount of G4-encoded data.
- */
-static int
-Fax4Decode(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
-{
- DECLARE_STATE_2D(tif, sp, "Fax4Decode");
-
- (void) s;
- CACHE_STATE(tif, sp);
- while ((long)occ > 0) {
- a0 = 0;
- RunLength = 0;
- pa = thisrun = sp->curruns;
- pb = sp->refruns;
- b1 = *pb++;
-#ifdef FAX3_DEBUG
- printf("\nBitAcc=%08X, BitsAvail = %d\n", BitAcc, BitsAvail);
- printf("-------------------- %d\n", tif->tif_row);
- fflush(stdout);
-#endif
- EXPAND2D(EOFG4);
- if (EOLcnt)
- goto EOFG4;
- (*sp->fill)(buf, thisrun, pa, lastx);
- SETVALUE(0); /* imaginary change for reference */
- SWAP(uint32*, sp->curruns, sp->refruns);
- buf += sp->b.rowbytes;
- occ -= sp->b.rowbytes;
- sp->line++;
- continue;
- EOFG4:
- NeedBits16( 13, BADG4 );
- BADG4:
-#ifdef FAX3_DEBUG
- if( GetBits(13) != 0x1001 )
- fputs( "Bad RTC\n", stderr );
-#endif
- ClrBits( 13 );
- (*sp->fill)(buf, thisrun, pa, lastx);
- UNCACHE_STATE(tif, sp);
- return (-1);
- }
- UNCACHE_STATE(tif, sp);
- return (1);
-}
-#undef SWAP
-
-/*
- * Encode the requested amount of data.
- */
-static int
-Fax4Encode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
- Fax3CodecState *sp = EncoderState(tif);
-
- (void) s;
- while ((long)cc > 0) {
- if (!Fax3Encode2DRow(tif, bp, sp->refline, sp->b.rowpixels))
- return (0);
- _TIFFmemcpy(sp->refline, bp, sp->b.rowbytes);
- bp += sp->b.rowbytes;
- cc -= sp->b.rowbytes;
- }
- return (1);
-}
-
-static int
-Fax4PostEncode(TIFF* tif)
-{
- Fax3CodecState *sp = EncoderState(tif);
-
- /* terminate strip w/ EOFB */
- Fax3PutBits(tif, EOL, 12);
- Fax3PutBits(tif, EOL, 12);
- if (sp->bit != 8)
- Fax3FlushBits(tif, sp);
- return (1);
-}
-
-int
-TIFFInitCCITTFax4(TIFF* tif, int scheme)
-{
- (void) scheme;
- if (InitCCITTFax3(tif)) { /* reuse G3 support */
- /*
- * Merge codec-specific tag information.
- */
- if (!_TIFFMergeFieldInfo(tif, fax4FieldInfo, N(fax4FieldInfo))) {
- TIFFErrorExt(tif->tif_clientdata, "TIFFInitCCITTFax4",
- "Merging CCITT Fax 4 codec-specific tags failed");
- return 0;
- }
-
- tif->tif_decoderow = Fax4Decode;
- tif->tif_decodestrip = Fax4Decode;
- tif->tif_decodetile = Fax4Decode;
- tif->tif_encoderow = Fax4Encode;
- tif->tif_encodestrip = Fax4Encode;
- tif->tif_encodetile = Fax4Encode;
- tif->tif_postencode = Fax4PostEncode;
- /*
- * Suppress RTC at the end of each strip.
- */
- return TIFFSetField(tif, TIFFTAG_FAXMODE, FAXMODE_NORTC);
- } else
- return (0);
-}
-
-/*
- * CCITT Group 3 1-D Modified Huffman RLE Compression Support.
- * (Compression algorithms 2 and 32771)
- */
-
-/*
- * Decode the requested amount of RLE-encoded data.
- */
-static int
-Fax3DecodeRLE(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
-{
- DECLARE_STATE(tif, sp, "Fax3DecodeRLE");
- int mode = sp->b.mode;
-
- (void) s;
- CACHE_STATE(tif, sp);
- thisrun = sp->curruns;
- while ((long)occ > 0) {
- a0 = 0;
- RunLength = 0;
- pa = thisrun;
-#ifdef FAX3_DEBUG
- printf("\nBitAcc=%08X, BitsAvail = %d\n", BitAcc, BitsAvail);
- printf("-------------------- %d\n", tif->tif_row);
- fflush(stdout);
-#endif
- EXPAND1D(EOFRLE);
- (*sp->fill)(buf, thisrun, pa, lastx);
- /*
- * Cleanup at the end of the row.
- */
- if (mode & FAXMODE_BYTEALIGN) {
- int n = BitsAvail - (BitsAvail &~ 7);
- ClrBits(n);
- } else if (mode & FAXMODE_WORDALIGN) {
- int n = BitsAvail - (BitsAvail &~ 15);
- ClrBits(n);
- if (BitsAvail == 0 && !isAligned(cp, uint16))
- cp++;
- }
- buf += sp->b.rowbytes;
- occ -= sp->b.rowbytes;
- sp->line++;
- continue;
- EOFRLE: /* premature EOF */
- (*sp->fill)(buf, thisrun, pa, lastx);
- UNCACHE_STATE(tif, sp);
- return (-1);
- }
- UNCACHE_STATE(tif, sp);
- return (1);
-}
-
-int
-TIFFInitCCITTRLE(TIFF* tif, int scheme)
-{
- (void) scheme;
- if (InitCCITTFax3(tif)) { /* reuse G3 support */
- tif->tif_decoderow = Fax3DecodeRLE;
- tif->tif_decodestrip = Fax3DecodeRLE;
- tif->tif_decodetile = Fax3DecodeRLE;
- /*
- * Suppress RTC+EOLs when encoding and byte-align data.
- */
- return TIFFSetField(tif, TIFFTAG_FAXMODE,
- FAXMODE_NORTC|FAXMODE_NOEOL|FAXMODE_BYTEALIGN);
- } else
- return (0);
-}
-
-int
-TIFFInitCCITTRLEW(TIFF* tif, int scheme)
-{
- (void) scheme;
- if (InitCCITTFax3(tif)) { /* reuse G3 support */
- tif->tif_decoderow = Fax3DecodeRLE;
- tif->tif_decodestrip = Fax3DecodeRLE;
- tif->tif_decodetile = Fax3DecodeRLE;
- /*
- * Suppress RTC+EOLs when encoding and word-align data.
- */
- return TIFFSetField(tif, TIFFTAG_FAXMODE,
- FAXMODE_NORTC|FAXMODE_NOEOL|FAXMODE_WORDALIGN);
- } else
- return (0);
-}
-#endif /* CCITT_SUPPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_fax3.h b/src/3rdparty/libtiff/libtiff/tif_fax3.h
deleted file mode 100644
index 030632f80a..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_fax3.h
+++ /dev/null
@@ -1,525 +0,0 @@
-/* $Id: tif_fax3.h,v 1.5 2005/12/12 09:23:11 dron Exp $ */
-
-/*
- * Copyright (c) 1990-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#ifndef _FAX3_
-#define _FAX3_
-/*
- * TIFF Library.
- *
- * CCITT Group 3 (T.4) and Group 4 (T.6) Decompression Support.
- *
- * Decoder support is derived, with permission, from the code
- * in Frank Cringle's viewfax program;
- * Copyright (C) 1990, 1995 Frank D. Cringle.
- */
-#include "tiff.h"
-
-/*
- * To override the default routine used to image decoded
- * spans one can use the pseduo tag TIFFTAG_FAXFILLFUNC.
- * The routine must have the type signature given below;
- * for example:
- *
- * fillruns(unsigned char* buf, uint32* runs, uint32* erun, uint32 lastx)
- *
- * where buf is place to set the bits, runs is the array of b&w run
- * lengths (white then black), erun is the last run in the array, and
- * lastx is the width of the row in pixels. Fill routines can assume
- * the run array has room for at least lastx runs and can overwrite
- * data in the run array as needed (e.g. to append zero runs to bring
- * the count up to a nice multiple).
- */
-typedef void (*TIFFFaxFillFunc)(unsigned char*, uint32*, uint32*, uint32);
-
-/*
- * The default run filler; made external for other decoders.
- */
-#if defined(__cplusplus)
-extern "C" {
-#endif
-extern void _TIFFFax3fillruns(unsigned char*, uint32*, uint32*, uint32);
-#if defined(__cplusplus)
-}
-#endif
-
-
-/* finite state machine codes */
-#define S_Null 0
-#define S_Pass 1
-#define S_Horiz 2
-#define S_V0 3
-#define S_VR 4
-#define S_VL 5
-#define S_Ext 6
-#define S_TermW 7
-#define S_TermB 8
-#define S_MakeUpW 9
-#define S_MakeUpB 10
-#define S_MakeUp 11
-#define S_EOL 12
-
-typedef struct { /* state table entry */
- unsigned char State; /* see above */
- unsigned char Width; /* width of code in bits */
- uint32 Param; /* unsigned 32-bit run length in bits */
-} TIFFFaxTabEnt;
-
-extern const TIFFFaxTabEnt TIFFFaxMainTable[];
-extern const TIFFFaxTabEnt TIFFFaxWhiteTable[];
-extern const TIFFFaxTabEnt TIFFFaxBlackTable[];
-
-/*
- * The following macros define the majority of the G3/G4 decoder
- * algorithm using the state tables defined elsewhere. To build
- * a decoder you need some setup code and some glue code. Note
- * that you may also need/want to change the way the NeedBits*
- * macros get input data if, for example, you know the data to be
- * decoded is properly aligned and oriented (doing so before running
- * the decoder can be a big performance win).
- *
- * Consult the decoder in the TIFF library for an idea of what you
- * need to define and setup to make use of these definitions.
- *
- * NB: to enable a debugging version of these macros define FAX3_DEBUG
- * before including this file. Trace output goes to stdout.
- */
-
-#ifndef EndOfData
-#define EndOfData() (cp >= ep)
-#endif
-/*
- * Need <=8 or <=16 bits of input data. Unlike viewfax we
- * cannot use/assume a word-aligned, properly bit swizzled
- * input data set because data may come from an arbitrarily
- * aligned, read-only source such as a memory-mapped file.
- * Note also that the viewfax decoder does not check for
- * running off the end of the input data buffer. This is
- * possible for G3-encoded data because it prescans the input
- * data to count EOL markers, but can cause problems for G4
- * data. In any event, we don't prescan and must watch for
- * running out of data since we can't permit the library to
- * scan past the end of the input data buffer.
- *
- * Finally, note that we must handle remaindered data at the end
- * of a strip specially. The coder asks for a fixed number of
- * bits when scanning for the next code. This may be more bits
- * than are actually present in the data stream. If we appear
- * to run out of data but still have some number of valid bits
- * remaining then we makeup the requested amount with zeros and
- * return successfully. If the returned data is incorrect then
- * we should be called again and get a premature EOF error;
- * otherwise we should get the right answer.
- */
-#ifndef NeedBits8
-#define NeedBits8(n,eoflab) do { \
- if (BitsAvail < (n)) { \
- if (EndOfData()) { \
- if (BitsAvail == 0) /* no valid bits */ \
- goto eoflab; \
- BitsAvail = (n); /* pad with zeros */ \
- } else { \
- BitAcc |= ((uint32) bitmap[*cp++])<<BitsAvail; \
- BitsAvail += 8; \
- } \
- } \
-} while (0)
-#endif
-#ifndef NeedBits16
-#define NeedBits16(n,eoflab) do { \
- if (BitsAvail < (n)) { \
- if (EndOfData()) { \
- if (BitsAvail == 0) /* no valid bits */ \
- goto eoflab; \
- BitsAvail = (n); /* pad with zeros */ \
- } else { \
- BitAcc |= ((uint32) bitmap[*cp++])<<BitsAvail; \
- if ((BitsAvail += 8) < (n)) { \
- if (EndOfData()) { \
- /* NB: we know BitsAvail is non-zero here */ \
- BitsAvail = (n); /* pad with zeros */ \
- } else { \
- BitAcc |= ((uint32) bitmap[*cp++])<<BitsAvail; \
- BitsAvail += 8; \
- } \
- } \
- } \
- } \
-} while (0)
-#endif
-#define GetBits(n) (BitAcc & ((1<<(n))-1))
-#define ClrBits(n) do { \
- BitsAvail -= (n); \
- BitAcc >>= (n); \
-} while (0)
-
-#ifdef FAX3_DEBUG
-static const char* StateNames[] = {
- "Null ",
- "Pass ",
- "Horiz ",
- "V0 ",
- "VR ",
- "VL ",
- "Ext ",
- "TermW ",
- "TermB ",
- "MakeUpW",
- "MakeUpB",
- "MakeUp ",
- "EOL ",
-};
-#define DEBUG_SHOW putchar(BitAcc & (1 << t) ? '1' : '0')
-#define LOOKUP8(wid,tab,eoflab) do { \
- int t; \
- NeedBits8(wid,eoflab); \
- TabEnt = tab + GetBits(wid); \
- printf("%08lX/%d: %s%5d\t", (long) BitAcc, BitsAvail, \
- StateNames[TabEnt->State], TabEnt->Param); \
- for (t = 0; t < TabEnt->Width; t++) \
- DEBUG_SHOW; \
- putchar('\n'); \
- fflush(stdout); \
- ClrBits(TabEnt->Width); \
-} while (0)
-#define LOOKUP16(wid,tab,eoflab) do { \
- int t; \
- NeedBits16(wid,eoflab); \
- TabEnt = tab + GetBits(wid); \
- printf("%08lX/%d: %s%5d\t", (long) BitAcc, BitsAvail, \
- StateNames[TabEnt->State], TabEnt->Param); \
- for (t = 0; t < TabEnt->Width; t++) \
- DEBUG_SHOW; \
- putchar('\n'); \
- fflush(stdout); \
- ClrBits(TabEnt->Width); \
-} while (0)
-
-#define SETVALUE(x) do { \
- *pa++ = RunLength + (x); \
- printf("SETVALUE: %d\t%d\n", RunLength + (x), a0); \
- a0 += x; \
- RunLength = 0; \
-} while (0)
-#else
-#define LOOKUP8(wid,tab,eoflab) do { \
- NeedBits8(wid,eoflab); \
- TabEnt = tab + GetBits(wid); \
- ClrBits(TabEnt->Width); \
-} while (0)
-#define LOOKUP16(wid,tab,eoflab) do { \
- NeedBits16(wid,eoflab); \
- TabEnt = tab + GetBits(wid); \
- ClrBits(TabEnt->Width); \
-} while (0)
-
-/*
- * Append a run to the run length array for the
- * current row and reset decoding state.
- */
-#define SETVALUE(x) do { \
- *pa++ = RunLength + (x); \
- a0 += (x); \
- RunLength = 0; \
-} while (0)
-#endif
-
-/*
- * Synchronize input decoding at the start of each
- * row by scanning for an EOL (if appropriate) and
- * skipping any trash data that might be present
- * after a decoding error. Note that the decoding
- * done elsewhere that recognizes an EOL only consumes
- * 11 consecutive zero bits. This means that if EOLcnt
- * is non-zero then we still need to scan for the final flag
- * bit that is part of the EOL code.
- */
-#define SYNC_EOL(eoflab) do { \
- if (EOLcnt == 0) { \
- for (;;) { \
- NeedBits16(11,eoflab); \
- if (GetBits(11) == 0) \
- break; \
- ClrBits(1); \
- } \
- } \
- for (;;) { \
- NeedBits8(8,eoflab); \
- if (GetBits(8)) \
- break; \
- ClrBits(8); \
- } \
- while (GetBits(1) == 0) \
- ClrBits(1); \
- ClrBits(1); /* EOL bit */ \
- EOLcnt = 0; /* reset EOL counter/flag */ \
-} while (0)
-
-/*
- * Cleanup the array of runs after decoding a row.
- * We adjust final runs to insure the user buffer is not
- * overwritten and/or undecoded area is white filled.
- */
-#define CLEANUP_RUNS() do { \
- if (RunLength) \
- SETVALUE(0); \
- if (a0 != lastx) { \
- badlength(a0, lastx); \
- while (a0 > lastx && pa > thisrun) \
- a0 -= *--pa; \
- if (a0 < lastx) { \
- if (a0 < 0) \
- a0 = 0; \
- if ((pa-thisrun)&1) \
- SETVALUE(0); \
- SETVALUE(lastx - a0); \
- } else if (a0 > lastx) { \
- SETVALUE(lastx); \
- SETVALUE(0); \
- } \
- } \
-} while (0)
-
-/*
- * Decode a line of 1D-encoded data.
- *
- * The line expanders are written as macros so that they can be reused
- * but still have direct access to the local variables of the "calling"
- * function.
- *
- * Note that unlike the original version we have to explicitly test for
- * a0 >= lastx after each black/white run is decoded. This is because
- * the original code depended on the input data being zero-padded to
- * insure the decoder recognized an EOL before running out of data.
- */
-#define EXPAND1D(eoflab) do { \
- for (;;) { \
- for (;;) { \
- LOOKUP16(12, TIFFFaxWhiteTable, eof1d); \
- switch (TabEnt->State) { \
- case S_EOL: \
- EOLcnt = 1; \
- goto done1d; \
- case S_TermW: \
- SETVALUE(TabEnt->Param); \
- goto doneWhite1d; \
- case S_MakeUpW: \
- case S_MakeUp: \
- a0 += TabEnt->Param; \
- RunLength += TabEnt->Param; \
- break; \
- default: \
- unexpected("WhiteTable", a0); \
- goto done1d; \
- } \
- } \
- doneWhite1d: \
- if (a0 >= lastx) \
- goto done1d; \
- for (;;) { \
- LOOKUP16(13, TIFFFaxBlackTable, eof1d); \
- switch (TabEnt->State) { \
- case S_EOL: \
- EOLcnt = 1; \
- goto done1d; \
- case S_TermB: \
- SETVALUE(TabEnt->Param); \
- goto doneBlack1d; \
- case S_MakeUpB: \
- case S_MakeUp: \
- a0 += TabEnt->Param; \
- RunLength += TabEnt->Param; \
- break; \
- default: \
- unexpected("BlackTable", a0); \
- goto done1d; \
- } \
- } \
- doneBlack1d: \
- if (a0 >= lastx) \
- goto done1d; \
- if( *(pa-1) == 0 && *(pa-2) == 0 ) \
- pa -= 2; \
- } \
-eof1d: \
- prematureEOF(a0); \
- CLEANUP_RUNS(); \
- goto eoflab; \
-done1d: \
- CLEANUP_RUNS(); \
-} while (0)
-
-/*
- * Update the value of b1 using the array
- * of runs for the reference line.
- */
-#define CHECK_b1 do { \
- if (pa != thisrun) while (b1 <= a0 && b1 < lastx) { \
- b1 += pb[0] + pb[1]; \
- pb += 2; \
- } \
-} while (0)
-
-/*
- * Expand a row of 2D-encoded data.
- */
-#define EXPAND2D(eoflab) do { \
- while (a0 < lastx) { \
- LOOKUP8(7, TIFFFaxMainTable, eof2d); \
- switch (TabEnt->State) { \
- case S_Pass: \
- CHECK_b1; \
- b1 += *pb++; \
- RunLength += b1 - a0; \
- a0 = b1; \
- b1 += *pb++; \
- break; \
- case S_Horiz: \
- if ((pa-thisrun)&1) { \
- for (;;) { /* black first */ \
- LOOKUP16(13, TIFFFaxBlackTable, eof2d); \
- switch (TabEnt->State) { \
- case S_TermB: \
- SETVALUE(TabEnt->Param); \
- goto doneWhite2da; \
- case S_MakeUpB: \
- case S_MakeUp: \
- a0 += TabEnt->Param; \
- RunLength += TabEnt->Param; \
- break; \
- default: \
- goto badBlack2d; \
- } \
- } \
- doneWhite2da:; \
- for (;;) { /* then white */ \
- LOOKUP16(12, TIFFFaxWhiteTable, eof2d); \
- switch (TabEnt->State) { \
- case S_TermW: \
- SETVALUE(TabEnt->Param); \
- goto doneBlack2da; \
- case S_MakeUpW: \
- case S_MakeUp: \
- a0 += TabEnt->Param; \
- RunLength += TabEnt->Param; \
- break; \
- default: \
- goto badWhite2d; \
- } \
- } \
- doneBlack2da:; \
- } else { \
- for (;;) { /* white first */ \
- LOOKUP16(12, TIFFFaxWhiteTable, eof2d); \
- switch (TabEnt->State) { \
- case S_TermW: \
- SETVALUE(TabEnt->Param); \
- goto doneWhite2db; \
- case S_MakeUpW: \
- case S_MakeUp: \
- a0 += TabEnt->Param; \
- RunLength += TabEnt->Param; \
- break; \
- default: \
- goto badWhite2d; \
- } \
- } \
- doneWhite2db:; \
- for (;;) { /* then black */ \
- LOOKUP16(13, TIFFFaxBlackTable, eof2d); \
- switch (TabEnt->State) { \
- case S_TermB: \
- SETVALUE(TabEnt->Param); \
- goto doneBlack2db; \
- case S_MakeUpB: \
- case S_MakeUp: \
- a0 += TabEnt->Param; \
- RunLength += TabEnt->Param; \
- break; \
- default: \
- goto badBlack2d; \
- } \
- } \
- doneBlack2db:; \
- } \
- CHECK_b1; \
- break; \
- case S_V0: \
- CHECK_b1; \
- SETVALUE(b1 - a0); \
- b1 += *pb++; \
- break; \
- case S_VR: \
- CHECK_b1; \
- SETVALUE(b1 - a0 + TabEnt->Param); \
- b1 += *pb++; \
- break; \
- case S_VL: \
- CHECK_b1; \
- SETVALUE(b1 - a0 - TabEnt->Param); \
- b1 -= *--pb; \
- break; \
- case S_Ext: \
- *pa++ = lastx - a0; \
- extension(a0); \
- goto eol2d; \
- case S_EOL: \
- *pa++ = lastx - a0; \
- NeedBits8(4,eof2d); \
- if (GetBits(4)) \
- unexpected("EOL", a0); \
- ClrBits(4); \
- EOLcnt = 1; \
- goto eol2d; \
- default: \
- badMain2d: \
- unexpected("MainTable", a0); \
- goto eol2d; \
- badBlack2d: \
- unexpected("BlackTable", a0); \
- goto eol2d; \
- badWhite2d: \
- unexpected("WhiteTable", a0); \
- goto eol2d; \
- eof2d: \
- prematureEOF(a0); \
- CLEANUP_RUNS(); \
- goto eoflab; \
- } \
- } \
- if (RunLength) { \
- if (RunLength + a0 < lastx) { \
- /* expect a final V0 */ \
- NeedBits8(1,eof2d); \
- if (!GetBits(1)) \
- goto badMain2d; \
- ClrBits(1); \
- } \
- SETVALUE(0); \
- } \
-eol2d: \
- CLEANUP_RUNS(); \
-} while (0)
-#endif /* _FAX3_ */
diff --git a/src/3rdparty/libtiff/libtiff/tif_fax3sm.c b/src/3rdparty/libtiff/libtiff/tif_fax3sm.c
deleted file mode 100644
index 08ce1ad608..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_fax3sm.c
+++ /dev/null
@@ -1,1253 +0,0 @@
-/* WARNING, this file was automatically generated by the
- mkg3states program */
-#include "tiff.h"
-#include "tif_fax3.h"
- const TIFFFaxTabEnt TIFFFaxMainTable[128] = {
-{12,7,0},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0},{1,4,0},{3,1,0},
-{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0},{5,6,2},{3,1,0},{5,3,1},{3,1,0},
-{2,3,0},{3,1,0},{4,3,1},{3,1,0},{1,4,0},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},
-{4,3,1},{3,1,0},{5,7,3},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0},
-{1,4,0},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0},{4,6,2},{3,1,0},
-{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0},{1,4,0},{3,1,0},{5,3,1},{3,1,0},
-{2,3,0},{3,1,0},{4,3,1},{3,1,0},{6,7,0},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},
-{4,3,1},{3,1,0},{1,4,0},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0},
-{5,6,2},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0},{1,4,0},{3,1,0},
-{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0},{4,7,3},{3,1,0},{5,3,1},{3,1,0},
-{2,3,0},{3,1,0},{4,3,1},{3,1,0},{1,4,0},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},
-{4,3,1},{3,1,0},{4,6,2},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0},
-{1,4,0},{3,1,0},{5,3,1},{3,1,0},{2,3,0},{3,1,0},{4,3,1},{3,1,0}
-};
- const TIFFFaxTabEnt TIFFFaxWhiteTable[4096] = {
-{12,11,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},
-{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},
-{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},
-{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{9,9,1472},{7,4,5},{7,8,43},{7,6,17},{9,9,1216},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},
-{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,960},{7,4,6},{7,8,31},{7,5,8},
-{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},
-{7,7,26},{7,5,9},{9,9,704},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,11,1792},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},
-{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},
-{9,9,832},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},
-{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1600},{7,4,5},
-{7,8,44},{7,6,17},{9,9,1344},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},
-{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1088},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},
-{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{0,0,0},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},
-{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,39},{7,6,16},{9,8,576},{7,4,6},
-{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,45},{7,4,3},
-{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},{7,8,35},{9,5,128},{7,8,51},{7,6,15},
-{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1536},{7,4,5},{7,8,43},{7,6,17},
-{9,9,1280},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,33},{9,5,128},
-{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},{7,8,47},{7,4,3},{7,8,59},{7,4,5},
-{7,8,41},{7,6,16},{9,9,1024},{7,4,6},{7,8,31},{7,5,8},{7,8,57},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,9,768},{7,4,6},
-{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,11,1856},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},
-{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},{9,9,896},{7,4,6},{7,7,19},{7,5,8},
-{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,46},{7,4,3},{7,5,11},{7,4,5},
-{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},{7,8,52},{7,6,15},{7,8,0},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1728},{7,4,5},{7,8,44},{7,6,17},{9,9,1408},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,30},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,34},{9,5,128},{7,8,50},{7,6,14},
-{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},{7,8,60},{7,4,5},{7,8,42},{7,6,16},
-{9,9,1152},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,8,640},{7,4,6},{7,8,38},{9,5,128},
-{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},
-{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{0,0,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},
-{7,7,27},{7,4,5},{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},
-{9,8,448},{7,4,6},{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{9,9,1472},{7,4,5},{7,8,43},{7,6,17},{9,9,1216},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},
-{7,4,2},{7,4,7},{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,960},{7,4,6},
-{7,8,31},{7,5,8},{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},
-{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,9,704},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},
-{9,8,320},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},
-{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{11,12,2112},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},
-{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},
-{7,8,40},{7,6,16},{9,9,832},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},
-{7,8,36},{9,5,128},{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{9,9,1600},{7,4,5},{7,8,44},{7,6,17},{9,9,1344},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},
-{7,8,48},{7,4,3},{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1088},{7,4,6},{7,8,32},{7,5,8},
-{7,8,58},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},
-{7,7,26},{7,5,9},{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{0,0,0},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},
-{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,39},{7,6,16},
-{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},{7,8,35},{9,5,128},
-{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1536},{7,4,5},
-{7,8,43},{7,6,17},{9,9,1280},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},{7,8,47},{7,4,3},
-{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,1024},{7,4,6},{7,8,31},{7,5,8},{7,8,57},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},
-{9,9,768},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,12,2368},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},
-{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},{9,9,896},{7,4,6},
-{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,46},{7,4,3},
-{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},{7,8,52},{7,6,15},
-{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1728},{7,4,5},{7,8,44},{7,6,17},
-{9,9,1408},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,34},{9,5,128},
-{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},{7,8,60},{7,4,5},
-{7,8,42},{7,6,16},{9,9,1152},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,8,640},{7,4,6},
-{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{0,0,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},
-{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},
-{7,8,55},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},
-{7,8,53},{7,5,9},{9,8,448},{7,4,6},{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1472},{7,4,5},{7,8,43},{7,6,17},{9,9,1216},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},
-{7,8,61},{7,4,4},{7,4,2},{7,4,7},{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},
-{9,9,960},{7,4,6},{7,8,31},{7,5,8},{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,9,704},{7,4,6},{7,8,37},{9,5,128},
-{7,7,25},{7,6,15},{9,8,320},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},
-{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{11,12,1984},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},
-{7,7,27},{7,4,5},{7,8,40},{7,6,16},{9,9,832},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},
-{9,8,512},{7,4,6},{7,8,36},{9,5,128},{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{9,9,1600},{7,4,5},{7,8,44},{7,6,17},{9,9,1344},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},
-{7,4,2},{7,4,7},{7,8,48},{7,4,3},{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1088},{7,4,6},
-{7,8,32},{7,5,8},{7,8,58},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},
-{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},
-{9,8,384},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},
-{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{0,0,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},
-{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},
-{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},
-{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{9,9,1536},{7,4,5},{7,8,43},{7,6,17},{9,9,1280},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},
-{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,1024},{7,4,6},{7,8,31},{7,5,8},
-{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},
-{7,7,26},{7,5,9},{9,9,768},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,11,1920},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},
-{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},
-{9,9,896},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},
-{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1728},{7,4,5},
-{7,8,44},{7,6,17},{9,9,1408},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},
-{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1152},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},
-{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{0,0,0},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},
-{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,39},{7,6,16},{9,8,576},{7,4,6},
-{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,45},{7,4,3},
-{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},{7,8,35},{9,5,128},{7,8,51},{7,6,15},
-{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1472},{7,4,5},{7,8,43},{7,6,17},
-{9,9,1216},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,33},{9,5,128},
-{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},{7,8,47},{7,4,3},{7,8,59},{7,4,5},
-{7,8,41},{7,6,16},{9,9,960},{7,4,6},{7,8,31},{7,5,8},{7,8,57},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,9,704},{7,4,6},
-{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,12,2240},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},
-{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},{9,9,832},{7,4,6},{7,7,19},{7,5,8},
-{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,46},{7,4,3},{7,5,11},{7,4,5},
-{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},{7,8,52},{7,6,15},{7,8,0},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1600},{7,4,5},{7,8,44},{7,6,17},{9,9,1344},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,30},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,34},{9,5,128},{7,8,50},{7,6,14},
-{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},{7,8,60},{7,4,5},{7,8,42},{7,6,16},
-{9,9,1088},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,8,640},{7,4,6},{7,8,38},{9,5,128},
-{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},
-{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{0,0,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},
-{7,7,27},{7,4,5},{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},
-{9,8,448},{7,4,6},{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{9,9,1536},{7,4,5},{7,8,43},{7,6,17},{9,9,1280},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},
-{7,4,2},{7,4,7},{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,1024},{7,4,6},
-{7,8,31},{7,5,8},{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},
-{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,9,768},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},
-{9,8,320},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},
-{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{11,12,2496},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},
-{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},
-{7,8,40},{7,6,16},{9,9,896},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},
-{7,8,36},{9,5,128},{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{9,9,1728},{7,4,5},{7,8,44},{7,6,17},{9,9,1408},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},
-{7,8,48},{7,4,3},{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1152},{7,4,6},{7,8,32},{7,5,8},
-{7,8,58},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},
-{7,7,26},{7,5,9},{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{12,11,0},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},
-{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,39},{7,6,16},
-{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},{7,8,35},{9,5,128},
-{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1472},{7,4,5},
-{7,8,43},{7,6,17},{9,9,1216},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},{7,8,47},{7,4,3},
-{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,960},{7,4,6},{7,8,31},{7,5,8},{7,8,57},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},
-{9,9,704},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,11,1792},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},
-{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},{9,9,832},{7,4,6},
-{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,46},{7,4,3},
-{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},{7,8,52},{7,6,15},
-{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1600},{7,4,5},{7,8,44},{7,6,17},
-{9,9,1344},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,34},{9,5,128},
-{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},{7,8,60},{7,4,5},
-{7,8,42},{7,6,16},{9,9,1088},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,8,640},{7,4,6},
-{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{0,0,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},
-{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},
-{7,8,55},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},
-{7,8,53},{7,5,9},{9,8,448},{7,4,6},{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1536},{7,4,5},{7,8,43},{7,6,17},{9,9,1280},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},
-{7,8,61},{7,4,4},{7,4,2},{7,4,7},{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},
-{9,9,1024},{7,4,6},{7,8,31},{7,5,8},{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,9,768},{7,4,6},{7,8,37},{9,5,128},
-{7,7,25},{7,6,15},{9,8,320},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},
-{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{11,11,1856},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},
-{7,7,27},{7,4,5},{7,8,40},{7,6,16},{9,9,896},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},
-{9,8,512},{7,4,6},{7,8,36},{9,5,128},{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{9,9,1728},{7,4,5},{7,8,44},{7,6,17},{9,9,1408},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},
-{7,4,2},{7,4,7},{7,8,48},{7,4,3},{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1152},{7,4,6},
-{7,8,32},{7,5,8},{7,8,58},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},
-{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},
-{9,8,384},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},
-{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{0,0,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},
-{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},
-{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},
-{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{9,9,1472},{7,4,5},{7,8,43},{7,6,17},{9,9,1216},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},
-{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,960},{7,4,6},{7,8,31},{7,5,8},
-{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},
-{7,7,26},{7,5,9},{9,9,704},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,12,2176},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},
-{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},
-{9,9,832},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},
-{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1600},{7,4,5},
-{7,8,44},{7,6,17},{9,9,1344},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},
-{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1088},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},
-{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{0,0,0},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},
-{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,39},{7,6,16},{9,8,576},{7,4,6},
-{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,45},{7,4,3},
-{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},{7,8,35},{9,5,128},{7,8,51},{7,6,15},
-{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1536},{7,4,5},{7,8,43},{7,6,17},
-{9,9,1280},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,33},{9,5,128},
-{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},{7,8,47},{7,4,3},{7,8,59},{7,4,5},
-{7,8,41},{7,6,16},{9,9,1024},{7,4,6},{7,8,31},{7,5,8},{7,8,57},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,9,768},{7,4,6},
-{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,12,2432},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},
-{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},{9,9,896},{7,4,6},{7,7,19},{7,5,8},
-{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,46},{7,4,3},{7,5,11},{7,4,5},
-{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},{7,8,52},{7,6,15},{7,8,0},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1728},{7,4,5},{7,8,44},{7,6,17},{9,9,1408},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,30},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,34},{9,5,128},{7,8,50},{7,6,14},
-{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},{7,8,60},{7,4,5},{7,8,42},{7,6,16},
-{9,9,1152},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,8,640},{7,4,6},{7,8,38},{9,5,128},
-{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},
-{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{0,0,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},
-{7,7,27},{7,4,5},{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},
-{9,8,448},{7,4,6},{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{9,9,1472},{7,4,5},{7,8,43},{7,6,17},{9,9,1216},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},
-{7,4,2},{7,4,7},{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,960},{7,4,6},
-{7,8,31},{7,5,8},{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},
-{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,9,704},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},
-{9,8,320},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},
-{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{11,12,2048},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},
-{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},
-{7,8,40},{7,6,16},{9,9,832},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},
-{7,8,36},{9,5,128},{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{9,9,1600},{7,4,5},{7,8,44},{7,6,17},{9,9,1344},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},
-{7,8,48},{7,4,3},{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1088},{7,4,6},{7,8,32},{7,5,8},
-{7,8,58},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},
-{7,7,26},{7,5,9},{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{0,0,0},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},
-{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,39},{7,6,16},
-{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},{7,8,35},{9,5,128},
-{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1536},{7,4,5},
-{7,8,43},{7,6,17},{9,9,1280},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},{7,8,47},{7,4,3},
-{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,1024},{7,4,6},{7,8,31},{7,5,8},{7,8,57},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},
-{9,9,768},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,11,1920},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},
-{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},{9,9,896},{7,4,6},
-{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,46},{7,4,3},
-{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},{7,8,52},{7,6,15},
-{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1728},{7,4,5},{7,8,44},{7,6,17},
-{9,9,1408},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,34},{9,5,128},
-{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},{7,8,60},{7,4,5},
-{7,8,42},{7,6,16},{9,9,1152},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,8,640},{7,4,6},
-{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{0,0,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},
-{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},
-{7,8,55},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},
-{7,8,53},{7,5,9},{9,8,448},{7,4,6},{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1472},{7,4,5},{7,8,43},{7,6,17},{9,9,1216},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},
-{7,8,61},{7,4,4},{7,4,2},{7,4,7},{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},
-{9,9,960},{7,4,6},{7,8,31},{7,5,8},{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,9,704},{7,4,6},{7,8,37},{9,5,128},
-{7,7,25},{7,6,15},{9,8,320},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},
-{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{11,12,2304},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,7,20},{9,5,128},{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},
-{7,7,27},{7,4,5},{7,8,40},{7,6,16},{9,9,832},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},
-{9,8,512},{7,4,6},{7,8,36},{9,5,128},{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{9,9,1600},{7,4,5},{7,8,44},{7,6,17},{9,9,1344},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},
-{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},
-{7,4,2},{7,4,7},{7,8,48},{7,4,3},{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1088},{7,4,6},
-{7,8,32},{7,5,8},{7,8,58},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},
-{7,5,11},{7,4,5},{7,7,26},{7,5,9},{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},
-{9,8,384},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},
-{9,7,256},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{0,0,0},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},
-{7,7,24},{7,6,14},{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},
-{7,8,39},{7,6,16},{9,8,576},{7,4,6},{7,7,19},{7,5,8},{7,8,55},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,45},{7,4,3},{7,5,11},{7,4,5},{7,8,53},{7,5,9},{9,8,448},{7,4,6},
-{7,8,35},{9,5,128},{7,8,51},{7,6,15},{7,8,63},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},
-{9,9,1536},{7,4,5},{7,8,43},{7,6,17},{9,9,1280},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,8,29},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},
-{9,6,1664},{7,4,6},{7,8,33},{9,5,128},{7,8,49},{7,6,14},{7,8,61},{7,4,4},{7,4,2},{7,4,7},
-{7,8,47},{7,4,3},{7,8,59},{7,4,5},{7,8,41},{7,6,16},{9,9,1024},{7,4,6},{7,8,31},{7,5,8},
-{7,8,57},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},
-{7,7,26},{7,5,9},{9,9,768},{7,4,6},{7,8,37},{9,5,128},{7,7,25},{7,6,15},{9,8,320},{7,4,4},
-{7,4,2},{7,4,7},{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},
-{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},{11,12,2560},{7,4,3},
-{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},{7,7,20},{9,5,128},{7,7,24},{7,6,14},
-{7,7,28},{7,4,4},{7,4,2},{7,4,7},{7,7,23},{7,4,3},{7,7,27},{7,4,5},{7,8,40},{7,6,16},
-{9,9,896},{7,4,6},{7,7,19},{7,5,8},{7,8,56},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7},
-{7,8,46},{7,4,3},{7,5,11},{7,4,5},{7,8,54},{7,5,9},{9,8,512},{7,4,6},{7,8,36},{9,5,128},
-{7,8,52},{7,6,15},{7,8,0},{7,4,4},{7,4,2},{7,4,7},{7,6,13},{7,4,3},{9,9,1728},{7,4,5},
-{7,8,44},{7,6,17},{9,9,1408},{7,4,6},{7,6,1},{7,5,8},{9,6,192},{9,5,64},{7,5,10},{7,4,4},
-{7,4,2},{7,4,7},{7,8,30},{7,4,3},{7,5,11},{7,4,5},{7,6,12},{7,5,9},{9,6,1664},{7,4,6},
-{7,8,34},{9,5,128},{7,8,50},{7,6,14},{7,8,62},{7,4,4},{7,4,2},{7,4,7},{7,8,48},{7,4,3},
-{7,8,60},{7,4,5},{7,8,42},{7,6,16},{9,9,1152},{7,4,6},{7,8,32},{7,5,8},{7,8,58},{9,5,64},
-{7,5,10},{7,4,4},{7,4,2},{7,4,7},{7,7,22},{7,4,3},{7,5,11},{7,4,5},{7,7,26},{7,5,9},
-{9,8,640},{7,4,6},{7,8,38},{9,5,128},{7,7,25},{7,6,15},{9,8,384},{7,4,4},{7,4,2},{7,4,7},
-{7,6,13},{7,4,3},{7,7,18},{7,4,5},{7,7,21},{7,6,17},{9,7,256},{7,4,6},{7,6,1},{7,5,8},
-{9,6,192},{9,5,64},{7,5,10},{7,4,4},{7,4,2},{7,4,7}
-};
- const TIFFFaxTabEnt TIFFFaxBlackTable[8192] = {
-{12,11,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,18},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,17},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,11,1792},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,11,23},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,20},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,11,25},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,12,128},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,56},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,30},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,11,1856},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,57},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,11,21},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,54},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,9,15},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,52},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,48},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{11,12,2112},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,44},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,36},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,12,384},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,28},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,60},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,40},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2368},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,16},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,10,64},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,9,15},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,18},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,10,17},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{11,12,1984},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,50},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,34},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,1664},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,26},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,1408},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,32},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,11,1920},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,61},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,42},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{10,13,1024},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,13,768},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,62},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2240},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,46},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,38},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,512},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,11,19},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,24},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,22},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{11,12,2496},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,10,16},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,0},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,10,64},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{12,11,0},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,10,18},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,17},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,11,1792},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,23},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,20},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,11,25},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{10,12,192},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,1280},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,31},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{11,11,1856},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,58},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,11,21},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,896},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,640},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,49},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2176},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,45},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,37},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{10,12,448},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,29},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,13,1536},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,41},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2432},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,16},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,10,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,10,64},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,9,15},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,18},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,17},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{11,12,2048},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,51},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,35},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,12,320},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,27},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,59},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,33},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,11,1920},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,12,256},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,43},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,13,1152},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,9,15},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,55},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,63},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{11,12,2304},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,47},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,39},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,53},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,19},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,24},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,22},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2560},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,10,16},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,0},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{10,10,64},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{12,11,0},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,10,18},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,10,17},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,11,1792},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,23},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,11,20},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,25},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,12,128},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,56},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,30},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{11,11,1856},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,57},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,21},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,54},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,52},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,48},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2112},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,44},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,36},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,12,384},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,28},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,60},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,40},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{11,12,2368},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,16},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,10,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,10,64},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,18},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,17},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,1984},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,50},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,34},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{10,13,1728},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,26},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,13,1472},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,32},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,11,1920},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,61},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,42},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,1088},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,9,15},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,832},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,62},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{11,12,2240},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,46},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,38},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,576},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,19},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,11,24},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,22},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2496},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,16},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,10,64},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{12,11,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,9,15},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,18},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,10,17},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{11,11,1792},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,23},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,11,20},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,25},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,12,192},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,1344},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,31},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,11,1856},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,58},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,21},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{10,13,960},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,13,704},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,49},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2176},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,45},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,37},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,12,448},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,29},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,1600},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,41},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{11,12,2432},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,10,16},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,0},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,10,64},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,10,18},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,17},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2048},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,51},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,35},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{10,12,320},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,27},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,59},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,33},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{11,11,1920},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,12,256},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,43},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,13,1216},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{0,0,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,8,13},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,9,15},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,55},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,63},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2304},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,12,47},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,12,39},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,12,53},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,12},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{0,0,0},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,8,13},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,11,19},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,11,24},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,11,22},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{11,12,2560},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,7,10},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,10,16},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2},{8,10,0},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},
-{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{10,10,64},{8,2,3},
-{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,9},{8,2,3},{8,3,1},{8,2,2},
-{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,11},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},
-{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},
-{8,8,14},{8,2,3},{8,3,1},{8,2,2},{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,6,8},{8,2,3},
-{8,3,1},{8,2,2},{8,4,5},{8,2,3},{8,3,4},{8,2,2},{8,7,12},{8,2,3},{8,3,1},{8,2,2},
-{8,4,6},{8,2,3},{8,3,4},{8,2,2},{8,5,7},{8,2,3},{8,3,1},{8,2,2},{8,4,5},{8,2,3},
-{8,3,4},{8,2,2}
-};
diff --git a/src/3rdparty/libtiff/libtiff/tif_flush.c b/src/3rdparty/libtiff/libtiff/tif_flush.c
deleted file mode 100644
index 5ff56e9a81..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_flush.c
+++ /dev/null
@@ -1,67 +0,0 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_flush.c,v 1.3 2000/09/15 20:52:42 warmerda Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- */
-#include "tiffiop.h"
-
-int
-TIFFFlush(TIFF* tif)
-{
-
- if (tif->tif_mode != O_RDONLY) {
- if (!TIFFFlushData(tif))
- return (0);
- if ((tif->tif_flags & TIFF_DIRTYDIRECT) &&
- !TIFFWriteDirectory(tif))
- return (0);
- }
- return (1);
-}
-
-/*
- * Flush buffered data to the file.
- *
- * Frank Warmerdam'2000: I modified this to return 1 if TIFF_BEENWRITING
- * is not set, so that TIFFFlush() will proceed to write out the directory.
- * The documentation says returning 1 is an error indicator, but not having
- * been writing isn't exactly a an error. Hopefully this doesn't cause
- * problems for other people.
- */
-int
-TIFFFlushData(TIFF* tif)
-{
- if ((tif->tif_flags & TIFF_BEENWRITING) == 0)
- return (0);
- if (tif->tif_flags & TIFF_POSTENCODE) {
- tif->tif_flags &= ~TIFF_POSTENCODE;
- if (!(*tif->tif_postencode)(tif))
- return (0);
- }
- return (TIFFFlushData1(tif));
-}
-
diff --git a/src/3rdparty/libtiff/libtiff/tif_getimage.c b/src/3rdparty/libtiff/libtiff/tif_getimage.c
deleted file mode 100644
index 667f32380a..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_getimage.c
+++ /dev/null
@@ -1,2669 +0,0 @@
-/* $Id: tif_getimage.c,v 1.63.2.3 2009-08-30 16:21:46 bfriesen Exp $ */
-
-/*
- * Copyright (c) 1991-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library
- *
- * Read and return a packed RGBA image.
- */
-#include "tiffiop.h"
-#include <stdio.h>
-
-static int gtTileContig(TIFFRGBAImage*, uint32*, uint32, uint32);
-static int gtTileSeparate(TIFFRGBAImage*, uint32*, uint32, uint32);
-static int gtStripContig(TIFFRGBAImage*, uint32*, uint32, uint32);
-static int gtStripSeparate(TIFFRGBAImage*, uint32*, uint32, uint32);
-static int PickContigCase(TIFFRGBAImage*);
-static int PickSeparateCase(TIFFRGBAImage*);
-static const char photoTag[] = "PhotometricInterpretation";
-
-/*
- * Helper constants used in Orientation tag handling
- */
-#define FLIP_VERTICALLY 0x01
-#define FLIP_HORIZONTALLY 0x02
-
-/*
- * Color conversion constants. We will define display types here.
- */
-
-TIFFDisplay display_sRGB = {
- { /* XYZ -> luminance matrix */
- { 3.2410F, -1.5374F, -0.4986F },
- { -0.9692F, 1.8760F, 0.0416F },
- { 0.0556F, -0.2040F, 1.0570F }
- },
- 100.0F, 100.0F, 100.0F, /* Light o/p for reference white */
- 255, 255, 255, /* Pixel values for ref. white */
- 1.0F, 1.0F, 1.0F, /* Residual light o/p for black pixel */
- 2.4F, 2.4F, 2.4F, /* Gamma values for the three guns */
-};
-
-/*
- * Check the image to see if TIFFReadRGBAImage can deal with it.
- * 1/0 is returned according to whether or not the image can
- * be handled. If 0 is returned, emsg contains the reason
- * why it is being rejected.
- */
-int
-TIFFRGBAImageOK(TIFF* tif, char emsg[1024])
-{
- TIFFDirectory* td = &tif->tif_dir;
- uint16 photometric;
- int colorchannels;
-
- if (!tif->tif_decodestatus) {
- sprintf(emsg, "Sorry, requested compression method is not configured");
- return (0);
- }
- switch (td->td_bitspersample) {
- case 1:
- case 2:
- case 4:
- case 8:
- case 16:
- break;
- default:
- sprintf(emsg, "Sorry, can not handle images with %d-bit samples",
- td->td_bitspersample);
- return (0);
- }
- colorchannels = td->td_samplesperpixel - td->td_extrasamples;
- if (!TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &photometric)) {
- switch (colorchannels) {
- case 1:
- photometric = PHOTOMETRIC_MINISBLACK;
- break;
- case 3:
- photometric = PHOTOMETRIC_RGB;
- break;
- default:
- sprintf(emsg, "Missing needed %s tag", photoTag);
- return (0);
- }
- }
- switch (photometric) {
- case PHOTOMETRIC_MINISWHITE:
- case PHOTOMETRIC_MINISBLACK:
- case PHOTOMETRIC_PALETTE:
- if (td->td_planarconfig == PLANARCONFIG_CONTIG
- && td->td_samplesperpixel != 1
- && td->td_bitspersample < 8 ) {
- sprintf(emsg,
- "Sorry, can not handle contiguous data with %s=%d, "
- "and %s=%d and Bits/Sample=%d",
- photoTag, photometric,
- "Samples/pixel", td->td_samplesperpixel,
- td->td_bitspersample);
- return (0);
- }
- /*
- * We should likely validate that any extra samples are either
- * to be ignored, or are alpha, and if alpha we should try to use
- * them. But for now we won't bother with this.
- */
- break;
- case PHOTOMETRIC_YCBCR:
- /*
- * TODO: if at all meaningful and useful, make more complete
- * support check here, or better still, refactor to let supporting
- * code decide whether there is support and what meaningfull
- * error to return
- */
- break;
- case PHOTOMETRIC_RGB:
- if (colorchannels < 3) {
- sprintf(emsg, "Sorry, can not handle RGB image with %s=%d",
- "Color channels", colorchannels);
- return (0);
- }
- break;
- case PHOTOMETRIC_SEPARATED:
- {
- uint16 inkset;
- TIFFGetFieldDefaulted(tif, TIFFTAG_INKSET, &inkset);
- if (inkset != INKSET_CMYK) {
- sprintf(emsg,
- "Sorry, can not handle separated image with %s=%d",
- "InkSet", inkset);
- return 0;
- }
- if (td->td_samplesperpixel < 4) {
- sprintf(emsg,
- "Sorry, can not handle separated image with %s=%d",
- "Samples/pixel", td->td_samplesperpixel);
- return 0;
- }
- break;
- }
- case PHOTOMETRIC_LOGL:
- if (td->td_compression != COMPRESSION_SGILOG) {
- sprintf(emsg, "Sorry, LogL data must have %s=%d",
- "Compression", COMPRESSION_SGILOG);
- return (0);
- }
- break;
- case PHOTOMETRIC_LOGLUV:
- if (td->td_compression != COMPRESSION_SGILOG &&
- td->td_compression != COMPRESSION_SGILOG24) {
- sprintf(emsg, "Sorry, LogLuv data must have %s=%d or %d",
- "Compression", COMPRESSION_SGILOG, COMPRESSION_SGILOG24);
- return (0);
- }
- if (td->td_planarconfig != PLANARCONFIG_CONTIG) {
- sprintf(emsg, "Sorry, can not handle LogLuv images with %s=%d",
- "Planarconfiguration", td->td_planarconfig);
- return (0);
- }
- break;
- case PHOTOMETRIC_CIELAB:
- break;
- default:
- sprintf(emsg, "Sorry, can not handle image with %s=%d",
- photoTag, photometric);
- return (0);
- }
- return (1);
-}
-
-void
-TIFFRGBAImageEnd(TIFFRGBAImage* img)
-{
- if (img->Map)
- _TIFFfree(img->Map), img->Map = NULL;
- if (img->BWmap)
- _TIFFfree(img->BWmap), img->BWmap = NULL;
- if (img->PALmap)
- _TIFFfree(img->PALmap), img->PALmap = NULL;
- if (img->ycbcr)
- _TIFFfree(img->ycbcr), img->ycbcr = NULL;
- if (img->cielab)
- _TIFFfree(img->cielab), img->cielab = NULL;
- if( img->redcmap ) {
- _TIFFfree( img->redcmap );
- _TIFFfree( img->greencmap );
- _TIFFfree( img->bluecmap );
- }
-}
-
-static int
-isCCITTCompression(TIFF* tif)
-{
- uint16 compress;
- TIFFGetField(tif, TIFFTAG_COMPRESSION, &compress);
- return (compress == COMPRESSION_CCITTFAX3 ||
- compress == COMPRESSION_CCITTFAX4 ||
- compress == COMPRESSION_CCITTRLE ||
- compress == COMPRESSION_CCITTRLEW);
-}
-
-int
-TIFFRGBAImageBegin(TIFFRGBAImage* img, TIFF* tif, int stop, char emsg[1024])
-{
- uint16* sampleinfo;
- uint16 extrasamples;
- uint16 planarconfig;
- uint16 compress;
- int colorchannels;
- uint16 *red_orig, *green_orig, *blue_orig;
- int n_color;
-
- /* Initialize to normal values */
- img->row_offset = 0;
- img->col_offset = 0;
- img->redcmap = NULL;
- img->greencmap = NULL;
- img->bluecmap = NULL;
- img->req_orientation = ORIENTATION_BOTLEFT; /* It is the default */
-
- img->tif = tif;
- img->stoponerr = stop;
- TIFFGetFieldDefaulted(tif, TIFFTAG_BITSPERSAMPLE, &img->bitspersample);
- switch (img->bitspersample) {
- case 1:
- case 2:
- case 4:
- case 8:
- case 16:
- break;
- default:
- sprintf(emsg, "Sorry, can not handle images with %d-bit samples",
- img->bitspersample);
- return (0);
- }
- img->alpha = 0;
- TIFFGetFieldDefaulted(tif, TIFFTAG_SAMPLESPERPIXEL, &img->samplesperpixel);
- TIFFGetFieldDefaulted(tif, TIFFTAG_EXTRASAMPLES,
- &extrasamples, &sampleinfo);
- if (extrasamples >= 1)
- {
- switch (sampleinfo[0]) {
- case EXTRASAMPLE_UNSPECIFIED: /* Workaround for some images without */
- if (img->samplesperpixel > 3) /* correct info about alpha channel */
- img->alpha = EXTRASAMPLE_ASSOCALPHA;
- break;
- case EXTRASAMPLE_ASSOCALPHA: /* data is pre-multiplied */
- case EXTRASAMPLE_UNASSALPHA: /* data is not pre-multiplied */
- img->alpha = sampleinfo[0];
- break;
- }
- }
-
-#ifdef DEFAULT_EXTRASAMPLE_AS_ALPHA
- if( !TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &img->photometric))
- img->photometric = PHOTOMETRIC_MINISWHITE;
-
- if( extrasamples == 0
- && img->samplesperpixel == 4
- && img->photometric == PHOTOMETRIC_RGB )
- {
- img->alpha = EXTRASAMPLE_ASSOCALPHA;
- extrasamples = 1;
- }
-#endif
-
- colorchannels = img->samplesperpixel - extrasamples;
- TIFFGetFieldDefaulted(tif, TIFFTAG_COMPRESSION, &compress);
- TIFFGetFieldDefaulted(tif, TIFFTAG_PLANARCONFIG, &planarconfig);
- if (!TIFFGetField(tif, TIFFTAG_PHOTOMETRIC, &img->photometric)) {
- switch (colorchannels) {
- case 1:
- if (isCCITTCompression(tif))
- img->photometric = PHOTOMETRIC_MINISWHITE;
- else
- img->photometric = PHOTOMETRIC_MINISBLACK;
- break;
- case 3:
- img->photometric = PHOTOMETRIC_RGB;
- break;
- default:
- sprintf(emsg, "Missing needed %s tag", photoTag);
- return (0);
- }
- }
- switch (img->photometric) {
- case PHOTOMETRIC_PALETTE:
- if (!TIFFGetField(tif, TIFFTAG_COLORMAP,
- &red_orig, &green_orig, &blue_orig)) {
- sprintf(emsg, "Missing required \"Colormap\" tag");
- return (0);
- }
-
- /* copy the colormaps so we can modify them */
- n_color = (1L << img->bitspersample);
- img->redcmap = (uint16 *) _TIFFmalloc(sizeof(uint16)*n_color);
- img->greencmap = (uint16 *) _TIFFmalloc(sizeof(uint16)*n_color);
- img->bluecmap = (uint16 *) _TIFFmalloc(sizeof(uint16)*n_color);
- if( !img->redcmap || !img->greencmap || !img->bluecmap ) {
- sprintf(emsg, "Out of memory for colormap copy");
- return (0);
- }
-
- _TIFFmemcpy( img->redcmap, red_orig, n_color * 2 );
- _TIFFmemcpy( img->greencmap, green_orig, n_color * 2 );
- _TIFFmemcpy( img->bluecmap, blue_orig, n_color * 2 );
-
- /* fall thru... */
- case PHOTOMETRIC_MINISWHITE:
- case PHOTOMETRIC_MINISBLACK:
- if (planarconfig == PLANARCONFIG_CONTIG
- && img->samplesperpixel != 1
- && img->bitspersample < 8 ) {
- sprintf(emsg,
- "Sorry, can not handle contiguous data with %s=%d, "
- "and %s=%d and Bits/Sample=%d",
- photoTag, img->photometric,
- "Samples/pixel", img->samplesperpixel,
- img->bitspersample);
- return (0);
- }
- break;
- case PHOTOMETRIC_YCBCR:
- /* It would probably be nice to have a reality check here. */
- if (planarconfig == PLANARCONFIG_CONTIG)
- /* can rely on libjpeg to convert to RGB */
- /* XXX should restore current state on exit */
- switch (compress) {
- case COMPRESSION_JPEG:
- /*
- * TODO: when complete tests verify complete desubsampling
- * and YCbCr handling, remove use of TIFFTAG_JPEGCOLORMODE in
- * favor of tif_getimage.c native handling
- */
- TIFFSetField(tif, TIFFTAG_JPEGCOLORMODE, JPEGCOLORMODE_RGB);
- img->photometric = PHOTOMETRIC_RGB;
- break;
- default:
- /* do nothing */;
- break;
- }
- /*
- * TODO: if at all meaningful and useful, make more complete
- * support check here, or better still, refactor to let supporting
- * code decide whether there is support and what meaningfull
- * error to return
- */
- break;
- case PHOTOMETRIC_RGB:
- if (colorchannels < 3) {
- sprintf(emsg, "Sorry, can not handle RGB image with %s=%d",
- "Color channels", colorchannels);
- return (0);
- }
- break;
- case PHOTOMETRIC_SEPARATED:
- {
- uint16 inkset;
- TIFFGetFieldDefaulted(tif, TIFFTAG_INKSET, &inkset);
- if (inkset != INKSET_CMYK) {
- sprintf(emsg, "Sorry, can not handle separated image with %s=%d",
- "InkSet", inkset);
- return (0);
- }
- if (img->samplesperpixel < 4) {
- sprintf(emsg, "Sorry, can not handle separated image with %s=%d",
- "Samples/pixel", img->samplesperpixel);
- return (0);
- }
- }
- break;
- case PHOTOMETRIC_LOGL:
- if (compress != COMPRESSION_SGILOG) {
- sprintf(emsg, "Sorry, LogL data must have %s=%d",
- "Compression", COMPRESSION_SGILOG);
- return (0);
- }
- TIFFSetField(tif, TIFFTAG_SGILOGDATAFMT, SGILOGDATAFMT_8BIT);
- img->photometric = PHOTOMETRIC_MINISBLACK; /* little white lie */
- img->bitspersample = 8;
- break;
- case PHOTOMETRIC_LOGLUV:
- if (compress != COMPRESSION_SGILOG && compress != COMPRESSION_SGILOG24) {
- sprintf(emsg, "Sorry, LogLuv data must have %s=%d or %d",
- "Compression", COMPRESSION_SGILOG, COMPRESSION_SGILOG24);
- return (0);
- }
- if (planarconfig != PLANARCONFIG_CONTIG) {
- sprintf(emsg, "Sorry, can not handle LogLuv images with %s=%d",
- "Planarconfiguration", planarconfig);
- return (0);
- }
- TIFFSetField(tif, TIFFTAG_SGILOGDATAFMT, SGILOGDATAFMT_8BIT);
- img->photometric = PHOTOMETRIC_RGB; /* little white lie */
- img->bitspersample = 8;
- break;
- case PHOTOMETRIC_CIELAB:
- break;
- default:
- sprintf(emsg, "Sorry, can not handle image with %s=%d",
- photoTag, img->photometric);
- return (0);
- }
- img->Map = NULL;
- img->BWmap = NULL;
- img->PALmap = NULL;
- img->ycbcr = NULL;
- img->cielab = NULL;
- TIFFGetField(tif, TIFFTAG_IMAGEWIDTH, &img->width);
- TIFFGetField(tif, TIFFTAG_IMAGELENGTH, &img->height);
- TIFFGetFieldDefaulted(tif, TIFFTAG_ORIENTATION, &img->orientation);
- img->isContig =
- !(planarconfig == PLANARCONFIG_SEPARATE && colorchannels > 1);
- if (img->isContig) {
- if (!PickContigCase(img)) {
- sprintf(emsg, "Sorry, can not handle image");
- return 0;
- }
- } else {
- if (!PickSeparateCase(img)) {
- sprintf(emsg, "Sorry, can not handle image");
- return 0;
- }
- }
- return 1;
-}
-
-int
-TIFFRGBAImageGet(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
-{
- if (img->get == NULL) {
- TIFFErrorExt(img->tif->tif_clientdata, TIFFFileName(img->tif), "No \"get\" routine setup");
- return (0);
- }
- if (img->put.any == NULL) {
- TIFFErrorExt(img->tif->tif_clientdata, TIFFFileName(img->tif),
- "No \"put\" routine setupl; probably can not handle image format");
- return (0);
- }
- return (*img->get)(img, raster, w, h);
-}
-
-/*
- * Read the specified image into an ABGR-format rastertaking in account
- * specified orientation.
- */
-int
-TIFFReadRGBAImageOriented(TIFF* tif,
- uint32 rwidth, uint32 rheight, uint32* raster,
- int orientation, int stop)
-{
- char emsg[1024] = "";
- TIFFRGBAImage img;
- int ok;
-
- if (TIFFRGBAImageOK(tif, emsg) && TIFFRGBAImageBegin(&img, tif, stop, emsg)) {
- img.req_orientation = orientation;
- /* XXX verify rwidth and rheight against width and height */
- ok = TIFFRGBAImageGet(&img, raster+(rheight-img.height)*rwidth,
- rwidth, img.height);
- TIFFRGBAImageEnd(&img);
- } else {
- TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "%s", emsg);
- ok = 0;
- }
- return (ok);
-}
-
-/*
- * Read the specified image into an ABGR-format raster. Use bottom left
- * origin for raster by default.
- */
-int
-TIFFReadRGBAImage(TIFF* tif,
- uint32 rwidth, uint32 rheight, uint32* raster, int stop)
-{
- return TIFFReadRGBAImageOriented(tif, rwidth, rheight, raster,
- ORIENTATION_BOTLEFT, stop);
-}
-
-static int
-setorientation(TIFFRGBAImage* img)
-{
- switch (img->orientation) {
- case ORIENTATION_TOPLEFT:
- case ORIENTATION_LEFTTOP:
- if (img->req_orientation == ORIENTATION_TOPRIGHT ||
- img->req_orientation == ORIENTATION_RIGHTTOP)
- return FLIP_HORIZONTALLY;
- else if (img->req_orientation == ORIENTATION_BOTRIGHT ||
- img->req_orientation == ORIENTATION_RIGHTBOT)
- return FLIP_HORIZONTALLY | FLIP_VERTICALLY;
- else if (img->req_orientation == ORIENTATION_BOTLEFT ||
- img->req_orientation == ORIENTATION_LEFTBOT)
- return FLIP_VERTICALLY;
- else
- return 0;
- case ORIENTATION_TOPRIGHT:
- case ORIENTATION_RIGHTTOP:
- if (img->req_orientation == ORIENTATION_TOPLEFT ||
- img->req_orientation == ORIENTATION_LEFTTOP)
- return FLIP_HORIZONTALLY;
- else if (img->req_orientation == ORIENTATION_BOTRIGHT ||
- img->req_orientation == ORIENTATION_RIGHTBOT)
- return FLIP_VERTICALLY;
- else if (img->req_orientation == ORIENTATION_BOTLEFT ||
- img->req_orientation == ORIENTATION_LEFTBOT)
- return FLIP_HORIZONTALLY | FLIP_VERTICALLY;
- else
- return 0;
- case ORIENTATION_BOTRIGHT:
- case ORIENTATION_RIGHTBOT:
- if (img->req_orientation == ORIENTATION_TOPLEFT ||
- img->req_orientation == ORIENTATION_LEFTTOP)
- return FLIP_HORIZONTALLY | FLIP_VERTICALLY;
- else if (img->req_orientation == ORIENTATION_TOPRIGHT ||
- img->req_orientation == ORIENTATION_RIGHTTOP)
- return FLIP_VERTICALLY;
- else if (img->req_orientation == ORIENTATION_BOTLEFT ||
- img->req_orientation == ORIENTATION_LEFTBOT)
- return FLIP_HORIZONTALLY;
- else
- return 0;
- case ORIENTATION_BOTLEFT:
- case ORIENTATION_LEFTBOT:
- if (img->req_orientation == ORIENTATION_TOPLEFT ||
- img->req_orientation == ORIENTATION_LEFTTOP)
- return FLIP_VERTICALLY;
- else if (img->req_orientation == ORIENTATION_TOPRIGHT ||
- img->req_orientation == ORIENTATION_RIGHTTOP)
- return FLIP_HORIZONTALLY | FLIP_VERTICALLY;
- else if (img->req_orientation == ORIENTATION_BOTRIGHT ||
- img->req_orientation == ORIENTATION_RIGHTBOT)
- return FLIP_HORIZONTALLY;
- else
- return 0;
- default: /* NOTREACHED */
- return 0;
- }
-}
-
-/*
- * Get an tile-organized image that has
- * PlanarConfiguration contiguous if SamplesPerPixel > 1
- * or
- * SamplesPerPixel == 1
- */
-static int
-gtTileContig(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
-{
- TIFF* tif = img->tif;
- tileContigRoutine put = img->put.contig;
- uint32 col, row, y, rowstoread;
- uint32 pos;
- uint32 tw, th;
- unsigned char* buf;
- int32 fromskew, toskew;
- uint32 nrow;
- int ret = 1, flip;
-
- buf = (unsigned char*) _TIFFmalloc(TIFFTileSize(tif));
- if (buf == 0) {
- TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "No space for tile buffer");
- return (0);
- }
- _TIFFmemset(buf, 0, TIFFTileSize(tif));
- TIFFGetField(tif, TIFFTAG_TILEWIDTH, &tw);
- TIFFGetField(tif, TIFFTAG_TILELENGTH, &th);
-
- flip = setorientation(img);
- if (flip & FLIP_VERTICALLY) {
- y = h - 1;
- toskew = -(int32)(tw + w);
- }
- else {
- y = 0;
- toskew = -(int32)(tw - w);
- }
-
- for (row = 0; row < h; row += nrow)
- {
- rowstoread = th - (row + img->row_offset) % th;
- nrow = (row + rowstoread > h ? h - row : rowstoread);
- for (col = 0; col < w; col += tw)
- {
- if (TIFFReadTile(tif, buf, col+img->col_offset,
- row+img->row_offset, 0, 0) < 0 && img->stoponerr)
- {
- ret = 0;
- break;
- }
-
- pos = ((row+img->row_offset) % th) * TIFFTileRowSize(tif);
-
- if (col + tw > w)
- {
- /*
- * Tile is clipped horizontally. Calculate
- * visible portion and skewing factors.
- */
- uint32 npix = w - col;
- fromskew = tw - npix;
- (*put)(img, raster+y*w+col, col, y,
- npix, nrow, fromskew, toskew + fromskew, buf + pos);
- }
- else
- {
- (*put)(img, raster+y*w+col, col, y, tw, nrow, 0, toskew, buf + pos);
- }
- }
-
- y += (flip & FLIP_VERTICALLY ? -(int32) nrow : (int32) nrow);
- }
- _TIFFfree(buf);
-
- if (flip & FLIP_HORIZONTALLY) {
- uint32 line;
-
- for (line = 0; line < h; line++) {
- uint32 *left = raster + (line * w);
- uint32 *right = left + w - 1;
-
- while ( left < right ) {
- uint32 temp = *left;
- *left = *right;
- *right = temp;
- left++, right--;
- }
- }
- }
-
- return (ret);
-}
-
-/*
- * Get an tile-organized image that has
- * SamplesPerPixel > 1
- * PlanarConfiguration separated
- * We assume that all such images are RGB.
- */
-static int
-gtTileSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
-{
- TIFF* tif = img->tif;
- tileSeparateRoutine put = img->put.separate;
- uint32 col, row, y, rowstoread;
- uint32 pos;
- uint32 tw, th;
- unsigned char* buf;
- unsigned char* p0;
- unsigned char* p1;
- unsigned char* p2;
- unsigned char* pa;
- tsize_t tilesize;
- int32 fromskew, toskew;
- int alpha = img->alpha;
- uint32 nrow;
- int ret = 1, flip;
-
- tilesize = TIFFTileSize(tif);
- buf = (unsigned char*) _TIFFmalloc((alpha?4:3)*tilesize);
- if (buf == 0) {
- TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "No space for tile buffer");
- return (0);
- }
- _TIFFmemset(buf, 0, (alpha?4:3)*tilesize);
- p0 = buf;
- p1 = p0 + tilesize;
- p2 = p1 + tilesize;
- pa = (alpha?(p2+tilesize):NULL);
- TIFFGetField(tif, TIFFTAG_TILEWIDTH, &tw);
- TIFFGetField(tif, TIFFTAG_TILELENGTH, &th);
-
- flip = setorientation(img);
- if (flip & FLIP_VERTICALLY) {
- y = h - 1;
- toskew = -(int32)(tw + w);
- }
- else {
- y = 0;
- toskew = -(int32)(tw - w);
- }
-
- for (row = 0; row < h; row += nrow)
- {
- rowstoread = th - (row + img->row_offset) % th;
- nrow = (row + rowstoread > h ? h - row : rowstoread);
- for (col = 0; col < w; col += tw)
- {
- if (TIFFReadTile(tif, p0, col+img->col_offset,
- row+img->row_offset,0,0) < 0 && img->stoponerr)
- {
- ret = 0;
- break;
- }
- if (TIFFReadTile(tif, p1, col+img->col_offset,
- row+img->row_offset,0,1) < 0 && img->stoponerr)
- {
- ret = 0;
- break;
- }
- if (TIFFReadTile(tif, p2, col+img->col_offset,
- row+img->row_offset,0,2) < 0 && img->stoponerr)
- {
- ret = 0;
- break;
- }
- if (alpha)
- {
- if (TIFFReadTile(tif,pa,col+img->col_offset,
- row+img->row_offset,0,3) < 0 && img->stoponerr)
- {
- ret = 0;
- break;
- }
- }
-
- pos = ((row+img->row_offset) % th) * TIFFTileRowSize(tif);
-
- if (col + tw > w)
- {
- /*
- * Tile is clipped horizontally. Calculate
- * visible portion and skewing factors.
- */
- uint32 npix = w - col;
- fromskew = tw - npix;
- (*put)(img, raster+y*w+col, col, y,
- npix, nrow, fromskew, toskew + fromskew,
- p0 + pos, p1 + pos, p2 + pos, (alpha?(pa+pos):NULL));
- } else {
- (*put)(img, raster+y*w+col, col, y,
- tw, nrow, 0, toskew, p0 + pos, p1 + pos, p2 + pos, (alpha?(pa+pos):NULL));
- }
- }
-
- y += (flip & FLIP_VERTICALLY ?-(int32) nrow : (int32) nrow);
- }
-
- if (flip & FLIP_HORIZONTALLY) {
- uint32 line;
-
- for (line = 0; line < h; line++) {
- uint32 *left = raster + (line * w);
- uint32 *right = left + w - 1;
-
- while ( left < right ) {
- uint32 temp = *left;
- *left = *right;
- *right = temp;
- left++, right--;
- }
- }
- }
-
- _TIFFfree(buf);
- return (ret);
-}
-
-/*
- * Get a strip-organized image that has
- * PlanarConfiguration contiguous if SamplesPerPixel > 1
- * or
- * SamplesPerPixel == 1
- */
-static int
-gtStripContig(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
-{
- TIFF* tif = img->tif;
- tileContigRoutine put = img->put.contig;
- uint32 row, y, nrow, nrowsub, rowstoread;
- uint32 pos;
- unsigned char* buf;
- uint32 rowsperstrip;
- uint16 subsamplinghor,subsamplingver;
- uint32 imagewidth = img->width;
- tsize_t scanline;
- int32 fromskew, toskew;
- int ret = 1, flip;
-
- buf = (unsigned char*) _TIFFmalloc(TIFFStripSize(tif));
- if (buf == 0) {
- TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "No space for strip buffer");
- return (0);
- }
- _TIFFmemset(buf, 0, TIFFStripSize(tif));
-
- flip = setorientation(img);
- if (flip & FLIP_VERTICALLY) {
- y = h - 1;
- toskew = -(int32)(w + w);
- } else {
- y = 0;
- toskew = -(int32)(w - w);
- }
-
- TIFFGetFieldDefaulted(tif, TIFFTAG_ROWSPERSTRIP, &rowsperstrip);
- TIFFGetFieldDefaulted(tif, TIFFTAG_YCBCRSUBSAMPLING, &subsamplinghor, &subsamplingver);
- scanline = TIFFNewScanlineSize(tif);
- fromskew = (w < imagewidth ? imagewidth - w : 0);
- for (row = 0; row < h; row += nrow)
- {
- rowstoread = rowsperstrip - (row + img->row_offset) % rowsperstrip;
- nrow = (row + rowstoread > h ? h - row : rowstoread);
- nrowsub = nrow;
- if ((nrowsub%subsamplingver)!=0)
- nrowsub+=subsamplingver-nrowsub%subsamplingver;
- if (TIFFReadEncodedStrip(tif,
- TIFFComputeStrip(tif,row+img->row_offset, 0),
- buf,
- ((row + img->row_offset)%rowsperstrip + nrowsub) * scanline) < 0
- && img->stoponerr)
- {
- ret = 0;
- break;
- }
-
- pos = ((row + img->row_offset) % rowsperstrip) * scanline;
- (*put)(img, raster+y*w, 0, y, w, nrow, fromskew, toskew, buf + pos);
- y += (flip & FLIP_VERTICALLY ? -(int32) nrow : (int32) nrow);
- }
-
- if (flip & FLIP_HORIZONTALLY) {
- uint32 line;
-
- for (line = 0; line < h; line++) {
- uint32 *left = raster + (line * w);
- uint32 *right = left + w - 1;
-
- while ( left < right ) {
- uint32 temp = *left;
- *left = *right;
- *right = temp;
- left++, right--;
- }
- }
- }
-
- _TIFFfree(buf);
- return (ret);
-}
-
-/*
- * Get a strip-organized image with
- * SamplesPerPixel > 1
- * PlanarConfiguration separated
- * We assume that all such images are RGB.
- */
-static int
-gtStripSeparate(TIFFRGBAImage* img, uint32* raster, uint32 w, uint32 h)
-{
- TIFF* tif = img->tif;
- tileSeparateRoutine put = img->put.separate;
- unsigned char *buf;
- unsigned char *p0, *p1, *p2, *pa;
- uint32 row, y, nrow, rowstoread;
- uint32 pos;
- tsize_t scanline;
- uint32 rowsperstrip, offset_row;
- uint32 imagewidth = img->width;
- tsize_t stripsize;
- int32 fromskew, toskew;
- int alpha = img->alpha;
- int ret = 1, flip;
-
- stripsize = TIFFStripSize(tif);
- p0 = buf = (unsigned char *)_TIFFmalloc((alpha?4:3)*stripsize);
- if (buf == 0) {
- TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "No space for tile buffer");
- return (0);
- }
- _TIFFmemset(buf, 0, (alpha?4:3)*stripsize);
- p1 = p0 + stripsize;
- p2 = p1 + stripsize;
- pa = (alpha?(p2+stripsize):NULL);
-
- flip = setorientation(img);
- if (flip & FLIP_VERTICALLY) {
- y = h - 1;
- toskew = -(int32)(w + w);
- }
- else {
- y = 0;
- toskew = -(int32)(w - w);
- }
-
- TIFFGetFieldDefaulted(tif, TIFFTAG_ROWSPERSTRIP, &rowsperstrip);
- scanline = TIFFScanlineSize(tif);
- fromskew = (w < imagewidth ? imagewidth - w : 0);
- for (row = 0; row < h; row += nrow)
- {
- rowstoread = rowsperstrip - (row + img->row_offset) % rowsperstrip;
- nrow = (row + rowstoread > h ? h - row : rowstoread);
- offset_row = row + img->row_offset;
- if (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, 0),
- p0, ((row + img->row_offset)%rowsperstrip + nrow) * scanline) < 0
- && img->stoponerr)
- {
- ret = 0;
- break;
- }
- if (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, 1),
- p1, ((row + img->row_offset)%rowsperstrip + nrow) * scanline) < 0
- && img->stoponerr)
- {
- ret = 0;
- break;
- }
- if (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, 2),
- p2, ((row + img->row_offset)%rowsperstrip + nrow) * scanline) < 0
- && img->stoponerr)
- {
- ret = 0;
- break;
- }
- if (alpha)
- {
- if (TIFFReadEncodedStrip(tif, TIFFComputeStrip(tif, offset_row, 3),
- pa, ((row + img->row_offset)%rowsperstrip + nrow) * scanline) < 0
- && img->stoponerr)
- {
- ret = 0;
- break;
- }
- }
-
- pos = ((row + img->row_offset) % rowsperstrip) * scanline;
- (*put)(img, raster+y*w, 0, y, w, nrow, fromskew, toskew, p0 + pos, p1 + pos,
- p2 + pos, (alpha?(pa+pos):NULL));
- y += (flip & FLIP_VERTICALLY ? -(int32) nrow : (int32) nrow);
- }
-
- if (flip & FLIP_HORIZONTALLY) {
- uint32 line;
-
- for (line = 0; line < h; line++) {
- uint32 *left = raster + (line * w);
- uint32 *right = left + w - 1;
-
- while ( left < right ) {
- uint32 temp = *left;
- *left = *right;
- *right = temp;
- left++, right--;
- }
- }
- }
-
- _TIFFfree(buf);
- return (ret);
-}
-
-/*
- * The following routines move decoded data returned
- * from the TIFF library into rasters filled with packed
- * ABGR pixels (i.e. suitable for passing to lrecwrite.)
- *
- * The routines have been created according to the most
- * important cases and optimized. PickContigCase and
- * PickSeparateCase analyze the parameters and select
- * the appropriate "get" and "put" routine to use.
- */
-#define REPEAT8(op) REPEAT4(op); REPEAT4(op)
-#define REPEAT4(op) REPEAT2(op); REPEAT2(op)
-#define REPEAT2(op) op; op
-#define CASE8(x,op) \
- switch (x) { \
- case 7: op; case 6: op; case 5: op; \
- case 4: op; case 3: op; case 2: op; \
- case 1: op; \
- }
-#define CASE4(x,op) switch (x) { case 3: op; case 2: op; case 1: op; }
-#define NOP
-
-#define UNROLL8(w, op1, op2) { \
- uint32 _x; \
- for (_x = w; _x >= 8; _x -= 8) { \
- op1; \
- REPEAT8(op2); \
- } \
- if (_x > 0) { \
- op1; \
- CASE8(_x,op2); \
- } \
-}
-#define UNROLL4(w, op1, op2) { \
- uint32 _x; \
- for (_x = w; _x >= 4; _x -= 4) { \
- op1; \
- REPEAT4(op2); \
- } \
- if (_x > 0) { \
- op1; \
- CASE4(_x,op2); \
- } \
-}
-#define UNROLL2(w, op1, op2) { \
- uint32 _x; \
- for (_x = w; _x >= 2; _x -= 2) { \
- op1; \
- REPEAT2(op2); \
- } \
- if (_x) { \
- op1; \
- op2; \
- } \
-}
-
-#define SKEW(r,g,b,skew) { r += skew; g += skew; b += skew; }
-#define SKEW4(r,g,b,a,skew) { r += skew; g += skew; b += skew; a+= skew; }
-
-#define A1 (((uint32)0xffL)<<24)
-#define PACK(r,g,b) \
- ((uint32)(r)|((uint32)(g)<<8)|((uint32)(b)<<16)|A1)
-#define PACK4(r,g,b,a) \
- ((uint32)(r)|((uint32)(g)<<8)|((uint32)(b)<<16)|((uint32)(a)<<24))
-#define W2B(v) (((v)>>8)&0xff)
-#define PACKW(r,g,b) \
- ((uint32)W2B(r)|((uint32)W2B(g)<<8)|((uint32)W2B(b)<<16)|A1)
-#define PACKW4(r,g,b,a) \
- ((uint32)W2B(r)|((uint32)W2B(g)<<8)|((uint32)W2B(b)<<16)|((uint32)W2B(a)<<24))
-
-#define DECLAREContigPutFunc(name) \
-static void name(\
- TIFFRGBAImage* img, \
- uint32* cp, \
- uint32 x, uint32 y, \
- uint32 w, uint32 h, \
- int32 fromskew, int32 toskew, \
- unsigned char* pp \
-)
-
-/*
- * 8-bit palette => colormap/RGB
- */
-DECLAREContigPutFunc(put8bitcmaptile)
-{
- uint32** PALmap = img->PALmap;
- int samplesperpixel = img->samplesperpixel;
-
- (void) y;
- while (h-- > 0) {
- for (x = w; x-- > 0;)
- {
- *cp++ = PALmap[*pp][0];
- pp += samplesperpixel;
- }
- cp += toskew;
- pp += fromskew;
- }
-}
-
-/*
- * 4-bit palette => colormap/RGB
- */
-DECLAREContigPutFunc(put4bitcmaptile)
-{
- uint32** PALmap = img->PALmap;
-
- (void) x; (void) y;
- fromskew /= 2;
- while (h-- > 0) {
- uint32* bw;
- UNROLL2(w, bw = PALmap[*pp++], *cp++ = *bw++);
- cp += toskew;
- pp += fromskew;
- }
-}
-
-/*
- * 2-bit palette => colormap/RGB
- */
-DECLAREContigPutFunc(put2bitcmaptile)
-{
- uint32** PALmap = img->PALmap;
-
- (void) x; (void) y;
- fromskew /= 4;
- while (h-- > 0) {
- uint32* bw;
- UNROLL4(w, bw = PALmap[*pp++], *cp++ = *bw++);
- cp += toskew;
- pp += fromskew;
- }
-}
-
-/*
- * 1-bit palette => colormap/RGB
- */
-DECLAREContigPutFunc(put1bitcmaptile)
-{
- uint32** PALmap = img->PALmap;
-
- (void) x; (void) y;
- fromskew /= 8;
- while (h-- > 0) {
- uint32* bw;
- UNROLL8(w, bw = PALmap[*pp++], *cp++ = *bw++);
- cp += toskew;
- pp += fromskew;
- }
-}
-
-/*
- * 8-bit greyscale => colormap/RGB
- */
-DECLAREContigPutFunc(putgreytile)
-{
- int samplesperpixel = img->samplesperpixel;
- uint32** BWmap = img->BWmap;
-
- (void) y;
- while (h-- > 0) {
- for (x = w; x-- > 0;)
- {
- *cp++ = BWmap[*pp][0];
- pp += samplesperpixel;
- }
- cp += toskew;
- pp += fromskew;
- }
-}
-
-/*
- * 16-bit greyscale => colormap/RGB
- */
-DECLAREContigPutFunc(put16bitbwtile)
-{
- int samplesperpixel = img->samplesperpixel;
- uint32** BWmap = img->BWmap;
-
- (void) y;
- while (h-- > 0) {
- uint16 *wp = (uint16 *) pp;
-
- for (x = w; x-- > 0;)
- {
- /* use high order byte of 16bit value */
-
- *cp++ = BWmap[*wp >> 8][0];
- pp += 2 * samplesperpixel;
- wp += samplesperpixel;
- }
- cp += toskew;
- pp += fromskew;
- }
-}
-
-/*
- * 1-bit bilevel => colormap/RGB
- */
-DECLAREContigPutFunc(put1bitbwtile)
-{
- uint32** BWmap = img->BWmap;
-
- (void) x; (void) y;
- fromskew /= 8;
- while (h-- > 0) {
- uint32* bw;
- UNROLL8(w, bw = BWmap[*pp++], *cp++ = *bw++);
- cp += toskew;
- pp += fromskew;
- }
-}
-
-/*
- * 2-bit greyscale => colormap/RGB
- */
-DECLAREContigPutFunc(put2bitbwtile)
-{
- uint32** BWmap = img->BWmap;
-
- (void) x; (void) y;
- fromskew /= 4;
- while (h-- > 0) {
- uint32* bw;
- UNROLL4(w, bw = BWmap[*pp++], *cp++ = *bw++);
- cp += toskew;
- pp += fromskew;
- }
-}
-
-/*
- * 4-bit greyscale => colormap/RGB
- */
-DECLAREContigPutFunc(put4bitbwtile)
-{
- uint32** BWmap = img->BWmap;
-
- (void) x; (void) y;
- fromskew /= 2;
- while (h-- > 0) {
- uint32* bw;
- UNROLL2(w, bw = BWmap[*pp++], *cp++ = *bw++);
- cp += toskew;
- pp += fromskew;
- }
-}
-
-/*
- * 8-bit packed samples, no Map => RGB
- */
-DECLAREContigPutFunc(putRGBcontig8bittile)
-{
- int samplesperpixel = img->samplesperpixel;
-
- (void) x; (void) y;
- fromskew *= samplesperpixel;
- while (h-- > 0) {
- UNROLL8(w, NOP,
- *cp++ = PACK(pp[0], pp[1], pp[2]);
- pp += samplesperpixel);
- cp += toskew;
- pp += fromskew;
- }
-}
-
-/*
- * 8-bit packed samples => RGBA w/ associated alpha
- * (known to have Map == NULL)
- */
-DECLAREContigPutFunc(putRGBAAcontig8bittile)
-{
- int samplesperpixel = img->samplesperpixel;
-
- (void) x; (void) y;
- fromskew *= samplesperpixel;
- while (h-- > 0) {
- UNROLL8(w, NOP,
- *cp++ = PACK4(pp[0], pp[1], pp[2], pp[3]);
- pp += samplesperpixel);
- cp += toskew;
- pp += fromskew;
- }
-}
-
-/*
- * 8-bit packed samples => RGBA w/ unassociated alpha
- * (known to have Map == NULL)
- */
-DECLAREContigPutFunc(putRGBUAcontig8bittile)
-{
- int samplesperpixel = img->samplesperpixel;
- (void) y;
- fromskew *= samplesperpixel;
- while (h-- > 0) {
- uint32 r, g, b, a;
- for (x = w; x-- > 0;) {
- a = pp[3];
- r = (a*pp[0] + 127) / 255;
- g = (a*pp[1] + 127) / 255;
- b = (a*pp[2] + 127) / 255;
- *cp++ = PACK4(r,g,b,a);
- pp += samplesperpixel;
- }
- cp += toskew;
- pp += fromskew;
- }
-}
-
-/*
- * 16-bit packed samples => RGB
- */
-DECLAREContigPutFunc(putRGBcontig16bittile)
-{
- int samplesperpixel = img->samplesperpixel;
- uint16 *wp = (uint16 *)pp;
- (void) y;
- fromskew *= samplesperpixel;
- while (h-- > 0) {
- for (x = w; x-- > 0;) {
- *cp++ = PACKW(wp[0],wp[1],wp[2]);
- wp += samplesperpixel;
- }
- cp += toskew;
- wp += fromskew;
- }
-}
-
-/*
- * 16-bit packed samples => RGBA w/ associated alpha
- * (known to have Map == NULL)
- */
-DECLAREContigPutFunc(putRGBAAcontig16bittile)
-{
- int samplesperpixel = img->samplesperpixel;
- uint16 *wp = (uint16 *)pp;
- (void) y;
- fromskew *= samplesperpixel;
- while (h-- > 0) {
- for (x = w; x-- > 0;) {
- *cp++ = PACKW4(wp[0],wp[1],wp[2],wp[3]);
- wp += samplesperpixel;
- }
- cp += toskew;
- wp += fromskew;
- }
-}
-
-/*
- * 16-bit packed samples => RGBA w/ unassociated alpha
- * (known to have Map == NULL)
- */
-DECLAREContigPutFunc(putRGBUAcontig16bittile)
-{
- int samplesperpixel = img->samplesperpixel;
- uint16 *wp = (uint16 *)pp;
- (void) y;
- fromskew *= samplesperpixel;
- while (h-- > 0) {
- uint32 r,g,b,a;
- for (x = w; x-- > 0;) {
- a = W2B(wp[3]);
- r = (a*W2B(wp[0]) + 127) / 255;
- g = (a*W2B(wp[1]) + 127) / 255;
- b = (a*W2B(wp[2]) + 127) / 255;
- *cp++ = PACK4(r,g,b,a);
- wp += samplesperpixel;
- }
- cp += toskew;
- wp += fromskew;
- }
-}
-
-/*
- * 8-bit packed CMYK samples w/o Map => RGB
- *
- * NB: The conversion of CMYK->RGB is *very* crude.
- */
-DECLAREContigPutFunc(putRGBcontig8bitCMYKtile)
-{
- int samplesperpixel = img->samplesperpixel;
- uint16 r, g, b, k;
-
- (void) x; (void) y;
- fromskew *= samplesperpixel;
- while (h-- > 0) {
- UNROLL8(w, NOP,
- k = 255 - pp[3];
- r = (k*(255-pp[0]))/255;
- g = (k*(255-pp[1]))/255;
- b = (k*(255-pp[2]))/255;
- *cp++ = PACK(r, g, b);
- pp += samplesperpixel);
- cp += toskew;
- pp += fromskew;
- }
-}
-
-/*
- * 8-bit packed CMYK samples w/Map => RGB
- *
- * NB: The conversion of CMYK->RGB is *very* crude.
- */
-DECLAREContigPutFunc(putRGBcontig8bitCMYKMaptile)
-{
- int samplesperpixel = img->samplesperpixel;
- TIFFRGBValue* Map = img->Map;
- uint16 r, g, b, k;
-
- (void) y;
- fromskew *= samplesperpixel;
- while (h-- > 0) {
- for (x = w; x-- > 0;) {
- k = 255 - pp[3];
- r = (k*(255-pp[0]))/255;
- g = (k*(255-pp[1]))/255;
- b = (k*(255-pp[2]))/255;
- *cp++ = PACK(Map[r], Map[g], Map[b]);
- pp += samplesperpixel;
- }
- pp += fromskew;
- cp += toskew;
- }
-}
-
-#define DECLARESepPutFunc(name) \
-static void name(\
- TIFFRGBAImage* img,\
- uint32* cp,\
- uint32 x, uint32 y, \
- uint32 w, uint32 h,\
- int32 fromskew, int32 toskew,\
- unsigned char* r, unsigned char* g, unsigned char* b, unsigned char* a\
-)
-
-/*
- * 8-bit unpacked samples => RGB
- */
-DECLARESepPutFunc(putRGBseparate8bittile)
-{
- (void) img; (void) x; (void) y; (void) a;
- while (h-- > 0) {
- UNROLL8(w, NOP, *cp++ = PACK(*r++, *g++, *b++));
- SKEW(r, g, b, fromskew);
- cp += toskew;
- }
-}
-
-/*
- * 8-bit unpacked samples => RGBA w/ associated alpha
- */
-DECLARESepPutFunc(putRGBAAseparate8bittile)
-{
- (void) img; (void) x; (void) y;
- while (h-- > 0) {
- UNROLL8(w, NOP, *cp++ = PACK4(*r++, *g++, *b++, *a++));
- SKEW4(r, g, b, a, fromskew);
- cp += toskew;
- }
-}
-
-/*
- * 8-bit unpacked samples => RGBA w/ unassociated alpha
- */
-DECLARESepPutFunc(putRGBUAseparate8bittile)
-{
- (void) img; (void) y;
- while (h-- > 0) {
- uint32 rv, gv, bv, av;
- for (x = w; x-- > 0;) {
- av = *a++;
- rv = (av* *r++ + 127) / 255;
- gv = (av* *g++ + 127) / 255;
- bv = (av* *b++ + 127) / 255;
- *cp++ = PACK4(rv,gv,bv,av);
- }
- SKEW4(r, g, b, a, fromskew);
- cp += toskew;
- }
-}
-
-/*
- * 16-bit unpacked samples => RGB
- */
-DECLARESepPutFunc(putRGBseparate16bittile)
-{
- uint16 *wr = (uint16*) r;
- uint16 *wg = (uint16*) g;
- uint16 *wb = (uint16*) b;
- (void) img; (void) y; (void) a;
- while (h-- > 0) {
- for (x = 0; x < w; x++)
- *cp++ = PACKW(*wr++,*wg++,*wb++);
- SKEW(wr, wg, wb, fromskew);
- cp += toskew;
- }
-}
-
-/*
- * 16-bit unpacked samples => RGBA w/ associated alpha
- */
-DECLARESepPutFunc(putRGBAAseparate16bittile)
-{
- uint16 *wr = (uint16*) r;
- uint16 *wg = (uint16*) g;
- uint16 *wb = (uint16*) b;
- uint16 *wa = (uint16*) a;
- (void) img; (void) y;
- while (h-- > 0) {
- for (x = 0; x < w; x++)
- *cp++ = PACKW4(*wr++,*wg++,*wb++,*wa++);
- SKEW4(wr, wg, wb, wa, fromskew);
- cp += toskew;
- }
-}
-
-/*
- * 16-bit unpacked samples => RGBA w/ unassociated alpha
- */
-DECLARESepPutFunc(putRGBUAseparate16bittile)
-{
- uint16 *wr = (uint16*) r;
- uint16 *wg = (uint16*) g;
- uint16 *wb = (uint16*) b;
- uint16 *wa = (uint16*) a;
- (void) img; (void) y;
- while (h-- > 0) {
- uint32 r,g,b,a;
- for (x = w; x-- > 0;) {
- a = W2B(*wa++);
- r = (a*W2B(*wr++) + 127) / 255;
- g = (a*W2B(*wg++) + 127) / 255;
- b = (a*W2B(*wb++) + 127) / 255;
- *cp++ = PACK4(r,g,b,a);
- }
- SKEW4(wr, wg, wb, wa, fromskew);
- cp += toskew;
- }
-}
-
-/*
- * 8-bit packed CIE L*a*b 1976 samples => RGB
- */
-DECLAREContigPutFunc(putcontig8bitCIELab)
-{
- float X, Y, Z;
- uint32 r, g, b;
- (void) y;
- fromskew *= 3;
- while (h-- > 0) {
- for (x = w; x-- > 0;) {
- TIFFCIELabToXYZ(img->cielab,
- (unsigned char)pp[0],
- (signed char)pp[1],
- (signed char)pp[2],
- &X, &Y, &Z);
- TIFFXYZToRGB(img->cielab, X, Y, Z, &r, &g, &b);
- *cp++ = PACK(r, g, b);
- pp += 3;
- }
- cp += toskew;
- pp += fromskew;
- }
-}
-
-/*
- * YCbCr -> RGB conversion and packing routines.
- */
-
-#define YCbCrtoRGB(dst, Y) { \
- uint32 r, g, b; \
- TIFFYCbCrtoRGB(img->ycbcr, (Y), Cb, Cr, &r, &g, &b); \
- dst = PACK(r, g, b); \
-}
-
-/*
- * 8-bit packed YCbCr samples => RGB
- * This function is generic for different sampling sizes,
- * and can handle blocks sizes that aren't multiples of the
- * sampling size. However, it is substantially less optimized
- * than the specific sampling cases. It is used as a fallback
- * for difficult blocks.
- */
-#ifdef notdef
-static void putcontig8bitYCbCrGenericTile(
- TIFFRGBAImage* img,
- uint32* cp,
- uint32 x, uint32 y,
- uint32 w, uint32 h,
- int32 fromskew, int32 toskew,
- unsigned char* pp,
- int h_group,
- int v_group )
-
-{
- uint32* cp1 = cp+w+toskew;
- uint32* cp2 = cp1+w+toskew;
- uint32* cp3 = cp2+w+toskew;
- int32 incr = 3*w+4*toskew;
- int32 Cb, Cr;
- int group_size = v_group * h_group + 2;
-
- (void) y;
- fromskew = (fromskew * group_size) / h_group;
-
- for( yy = 0; yy < h; yy++ )
- {
- unsigned char *pp_line;
- int y_line_group = yy / v_group;
- int y_remainder = yy - y_line_group * v_group;
-
- pp_line = pp + v_line_group *
-
-
- for( xx = 0; xx < w; xx++ )
- {
- Cb = pp
- }
- }
- for (; h >= 4; h -= 4) {
- x = w>>2;
- do {
- Cb = pp[16];
- Cr = pp[17];
-
- YCbCrtoRGB(cp [0], pp[ 0]);
- YCbCrtoRGB(cp [1], pp[ 1]);
- YCbCrtoRGB(cp [2], pp[ 2]);
- YCbCrtoRGB(cp [3], pp[ 3]);
- YCbCrtoRGB(cp1[0], pp[ 4]);
- YCbCrtoRGB(cp1[1], pp[ 5]);
- YCbCrtoRGB(cp1[2], pp[ 6]);
- YCbCrtoRGB(cp1[3], pp[ 7]);
- YCbCrtoRGB(cp2[0], pp[ 8]);
- YCbCrtoRGB(cp2[1], pp[ 9]);
- YCbCrtoRGB(cp2[2], pp[10]);
- YCbCrtoRGB(cp2[3], pp[11]);
- YCbCrtoRGB(cp3[0], pp[12]);
- YCbCrtoRGB(cp3[1], pp[13]);
- YCbCrtoRGB(cp3[2], pp[14]);
- YCbCrtoRGB(cp3[3], pp[15]);
-
- cp += 4, cp1 += 4, cp2 += 4, cp3 += 4;
- pp += 18;
- } while (--x);
- cp += incr, cp1 += incr, cp2 += incr, cp3 += incr;
- pp += fromskew;
- }
-}
-#endif
-
-/*
- * 8-bit packed YCbCr samples w/ 4,4 subsampling => RGB
- */
-DECLAREContigPutFunc(putcontig8bitYCbCr44tile)
-{
- uint32* cp1 = cp+w+toskew;
- uint32* cp2 = cp1+w+toskew;
- uint32* cp3 = cp2+w+toskew;
- int32 incr = 3*w+4*toskew;
-
- (void) y;
- /* adjust fromskew */
- fromskew = (fromskew * 18) / 4;
- if ((h & 3) == 0 && (w & 3) == 0) {
- for (; h >= 4; h -= 4) {
- x = w>>2;
- do {
- int32 Cb = pp[16];
- int32 Cr = pp[17];
-
- YCbCrtoRGB(cp [0], pp[ 0]);
- YCbCrtoRGB(cp [1], pp[ 1]);
- YCbCrtoRGB(cp [2], pp[ 2]);
- YCbCrtoRGB(cp [3], pp[ 3]);
- YCbCrtoRGB(cp1[0], pp[ 4]);
- YCbCrtoRGB(cp1[1], pp[ 5]);
- YCbCrtoRGB(cp1[2], pp[ 6]);
- YCbCrtoRGB(cp1[3], pp[ 7]);
- YCbCrtoRGB(cp2[0], pp[ 8]);
- YCbCrtoRGB(cp2[1], pp[ 9]);
- YCbCrtoRGB(cp2[2], pp[10]);
- YCbCrtoRGB(cp2[3], pp[11]);
- YCbCrtoRGB(cp3[0], pp[12]);
- YCbCrtoRGB(cp3[1], pp[13]);
- YCbCrtoRGB(cp3[2], pp[14]);
- YCbCrtoRGB(cp3[3], pp[15]);
-
- cp += 4, cp1 += 4, cp2 += 4, cp3 += 4;
- pp += 18;
- } while (--x);
- cp += incr, cp1 += incr, cp2 += incr, cp3 += incr;
- pp += fromskew;
- }
- } else {
- while (h > 0) {
- for (x = w; x > 0;) {
- int32 Cb = pp[16];
- int32 Cr = pp[17];
- switch (x) {
- default:
- switch (h) {
- default: YCbCrtoRGB(cp3[3], pp[15]); /* FALLTHROUGH */
- case 3: YCbCrtoRGB(cp2[3], pp[11]); /* FALLTHROUGH */
- case 2: YCbCrtoRGB(cp1[3], pp[ 7]); /* FALLTHROUGH */
- case 1: YCbCrtoRGB(cp [3], pp[ 3]); /* FALLTHROUGH */
- } /* FALLTHROUGH */
- case 3:
- switch (h) {
- default: YCbCrtoRGB(cp3[2], pp[14]); /* FALLTHROUGH */
- case 3: YCbCrtoRGB(cp2[2], pp[10]); /* FALLTHROUGH */
- case 2: YCbCrtoRGB(cp1[2], pp[ 6]); /* FALLTHROUGH */
- case 1: YCbCrtoRGB(cp [2], pp[ 2]); /* FALLTHROUGH */
- } /* FALLTHROUGH */
- case 2:
- switch (h) {
- default: YCbCrtoRGB(cp3[1], pp[13]); /* FALLTHROUGH */
- case 3: YCbCrtoRGB(cp2[1], pp[ 9]); /* FALLTHROUGH */
- case 2: YCbCrtoRGB(cp1[1], pp[ 5]); /* FALLTHROUGH */
- case 1: YCbCrtoRGB(cp [1], pp[ 1]); /* FALLTHROUGH */
- } /* FALLTHROUGH */
- case 1:
- switch (h) {
- default: YCbCrtoRGB(cp3[0], pp[12]); /* FALLTHROUGH */
- case 3: YCbCrtoRGB(cp2[0], pp[ 8]); /* FALLTHROUGH */
- case 2: YCbCrtoRGB(cp1[0], pp[ 4]); /* FALLTHROUGH */
- case 1: YCbCrtoRGB(cp [0], pp[ 0]); /* FALLTHROUGH */
- } /* FALLTHROUGH */
- }
- if (x < 4) {
- cp += x; cp1 += x; cp2 += x; cp3 += x;
- x = 0;
- }
- else {
- cp += 4; cp1 += 4; cp2 += 4; cp3 += 4;
- x -= 4;
- }
- pp += 18;
- }
- if (h <= 4)
- break;
- h -= 4;
- cp += incr, cp1 += incr, cp2 += incr, cp3 += incr;
- pp += fromskew;
- }
- }
-}
-
-/*
- * 8-bit packed YCbCr samples w/ 4,2 subsampling => RGB
- */
-DECLAREContigPutFunc(putcontig8bitYCbCr42tile)
-{
- uint32* cp1 = cp+w+toskew;
- int32 incr = 2*toskew+w;
-
- (void) y;
- fromskew = (fromskew * 10) / 4;
- if ((h & 3) == 0 && (w & 1) == 0) {
- for (; h >= 2; h -= 2) {
- x = w>>2;
- do {
- int32 Cb = pp[8];
- int32 Cr = pp[9];
-
- YCbCrtoRGB(cp [0], pp[0]);
- YCbCrtoRGB(cp [1], pp[1]);
- YCbCrtoRGB(cp [2], pp[2]);
- YCbCrtoRGB(cp [3], pp[3]);
- YCbCrtoRGB(cp1[0], pp[4]);
- YCbCrtoRGB(cp1[1], pp[5]);
- YCbCrtoRGB(cp1[2], pp[6]);
- YCbCrtoRGB(cp1[3], pp[7]);
-
- cp += 4, cp1 += 4;
- pp += 10;
- } while (--x);
- cp += incr, cp1 += incr;
- pp += fromskew;
- }
- } else {
- while (h > 0) {
- for (x = w; x > 0;) {
- int32 Cb = pp[8];
- int32 Cr = pp[9];
- switch (x) {
- default:
- switch (h) {
- default: YCbCrtoRGB(cp1[3], pp[ 7]); /* FALLTHROUGH */
- case 1: YCbCrtoRGB(cp [3], pp[ 3]); /* FALLTHROUGH */
- } /* FALLTHROUGH */
- case 3:
- switch (h) {
- default: YCbCrtoRGB(cp1[2], pp[ 6]); /* FALLTHROUGH */
- case 1: YCbCrtoRGB(cp [2], pp[ 2]); /* FALLTHROUGH */
- } /* FALLTHROUGH */
- case 2:
- switch (h) {
- default: YCbCrtoRGB(cp1[1], pp[ 5]); /* FALLTHROUGH */
- case 1: YCbCrtoRGB(cp [1], pp[ 1]); /* FALLTHROUGH */
- } /* FALLTHROUGH */
- case 1:
- switch (h) {
- default: YCbCrtoRGB(cp1[0], pp[ 4]); /* FALLTHROUGH */
- case 1: YCbCrtoRGB(cp [0], pp[ 0]); /* FALLTHROUGH */
- } /* FALLTHROUGH */
- }
- if (x < 4) {
- cp += x; cp1 += x;
- x = 0;
- }
- else {
- cp += 4; cp1 += 4;
- x -= 4;
- }
- pp += 10;
- }
- if (h <= 2)
- break;
- h -= 2;
- cp += incr, cp1 += incr;
- pp += fromskew;
- }
- }
-}
-
-/*
- * 8-bit packed YCbCr samples w/ 4,1 subsampling => RGB
- */
-DECLAREContigPutFunc(putcontig8bitYCbCr41tile)
-{
- (void) y;
- /* XXX adjust fromskew */
- do {
- x = w>>2;
- do {
- int32 Cb = pp[4];
- int32 Cr = pp[5];
-
- YCbCrtoRGB(cp [0], pp[0]);
- YCbCrtoRGB(cp [1], pp[1]);
- YCbCrtoRGB(cp [2], pp[2]);
- YCbCrtoRGB(cp [3], pp[3]);
-
- cp += 4;
- pp += 6;
- } while (--x);
-
- if( (w&3) != 0 )
- {
- int32 Cb = pp[4];
- int32 Cr = pp[5];
-
- switch( (w&3) ) {
- case 3: YCbCrtoRGB(cp [2], pp[2]);
- case 2: YCbCrtoRGB(cp [1], pp[1]);
- case 1: YCbCrtoRGB(cp [0], pp[0]);
- case 0: break;
- }
-
- cp += (w&3);
- pp += 6;
- }
-
- cp += toskew;
- pp += fromskew;
- } while (--h);
-
-}
-
-/*
- * 8-bit packed YCbCr samples w/ 2,2 subsampling => RGB
- */
-DECLAREContigPutFunc(putcontig8bitYCbCr22tile)
-{
- uint32* cp2;
- (void) y;
- fromskew = (fromskew / 2) * 6;
- cp2 = cp+w+toskew;
- while (h>=2) {
- x = w;
- while (x>=2) {
- uint32 Cb = pp[4];
- uint32 Cr = pp[5];
- YCbCrtoRGB(cp[0], pp[0]);
- YCbCrtoRGB(cp[1], pp[1]);
- YCbCrtoRGB(cp2[0], pp[2]);
- YCbCrtoRGB(cp2[1], pp[3]);
- cp += 2;
- cp2 += 2;
- pp += 6;
- x -= 2;
- }
- if (x==1) {
- uint32 Cb = pp[4];
- uint32 Cr = pp[5];
- YCbCrtoRGB(cp[0], pp[0]);
- YCbCrtoRGB(cp2[0], pp[2]);
- cp ++ ;
- cp2 ++ ;
- pp += 6;
- }
- cp += toskew*2+w;
- cp2 += toskew*2+w;
- pp += fromskew;
- h-=2;
- }
- if (h==1) {
- x = w;
- while (x>=2) {
- uint32 Cb = pp[4];
- uint32 Cr = pp[5];
- YCbCrtoRGB(cp[0], pp[0]);
- YCbCrtoRGB(cp[1], pp[1]);
- cp += 2;
- cp2 += 2;
- pp += 6;
- x -= 2;
- }
- if (x==1) {
- uint32 Cb = pp[4];
- uint32 Cr = pp[5];
- YCbCrtoRGB(cp[0], pp[0]);
- }
- }
-}
-
-/*
- * 8-bit packed YCbCr samples w/ 2,1 subsampling => RGB
- */
-DECLAREContigPutFunc(putcontig8bitYCbCr21tile)
-{
- (void) y;
- fromskew = (fromskew * 4) / 2;
- do {
- x = w>>1;
- do {
- int32 Cb = pp[2];
- int32 Cr = pp[3];
-
- YCbCrtoRGB(cp[0], pp[0]);
- YCbCrtoRGB(cp[1], pp[1]);
-
- cp += 2;
- pp += 4;
- } while (--x);
-
- if( (w&1) != 0 )
- {
- int32 Cb = pp[2];
- int32 Cr = pp[3];
-
- YCbCrtoRGB(cp[0], pp[0]);
-
- cp += 1;
- pp += 4;
- }
-
- cp += toskew;
- pp += fromskew;
- } while (--h);
-}
-
-/*
- * 8-bit packed YCbCr samples w/ 1,2 subsampling => RGB
- */
-DECLAREContigPutFunc(putcontig8bitYCbCr12tile)
-{
- uint32* cp2;
- (void) y;
- fromskew = (fromskew / 2) * 4;
- cp2 = cp+w+toskew;
- while (h>=2) {
- x = w;
- do {
- uint32 Cb = pp[2];
- uint32 Cr = pp[3];
- YCbCrtoRGB(cp[0], pp[0]);
- YCbCrtoRGB(cp2[0], pp[1]);
- cp ++;
- cp2 ++;
- pp += 4;
- } while (--x);
- cp += toskew*2+w;
- cp2 += toskew*2+w;
- pp += fromskew;
- h-=2;
- }
- if (h==1) {
- x = w;
- do {
- uint32 Cb = pp[2];
- uint32 Cr = pp[3];
- YCbCrtoRGB(cp[0], pp[0]);
- cp ++;
- pp += 4;
- } while (--x);
- }
-}
-
-/*
- * 8-bit packed YCbCr samples w/ no subsampling => RGB
- */
-DECLAREContigPutFunc(putcontig8bitYCbCr11tile)
-{
- (void) y;
- fromskew *= 3;
- do {
- x = w; /* was x = w>>1; patched 2000/09/25 warmerda@home.com */
- do {
- int32 Cb = pp[1];
- int32 Cr = pp[2];
-
- YCbCrtoRGB(*cp++, pp[0]);
-
- pp += 3;
- } while (--x);
- cp += toskew;
- pp += fromskew;
- } while (--h);
-}
-
-/*
- * 8-bit packed YCbCr samples w/ no subsampling => RGB
- */
-DECLARESepPutFunc(putseparate8bitYCbCr11tile)
-{
- (void) y;
- (void) a;
- /* TODO: naming of input vars is still off, change obfuscating declaration inside define, or resolve obfuscation */
- while (h-- > 0) {
- x = w;
- do {
- uint32 dr, dg, db;
- TIFFYCbCrtoRGB(img->ycbcr,*r++,*g++,*b++,&dr,&dg,&db);
- *cp++ = PACK(dr,dg,db);
- } while (--x);
- SKEW(r, g, b, fromskew);
- cp += toskew;
- }
-}
-#undef YCbCrtoRGB
-
-static int
-initYCbCrConversion(TIFFRGBAImage* img)
-{
- static char module[] = "initYCbCrConversion";
-
- float *luma, *refBlackWhite;
-
- if (img->ycbcr == NULL) {
- img->ycbcr = (TIFFYCbCrToRGB*) _TIFFmalloc(
- TIFFroundup(sizeof (TIFFYCbCrToRGB), sizeof (long))
- + 4*256*sizeof (TIFFRGBValue)
- + 2*256*sizeof (int)
- + 3*256*sizeof (int32)
- );
- if (img->ycbcr == NULL) {
- TIFFErrorExt(img->tif->tif_clientdata, module,
- "No space for YCbCr->RGB conversion state");
- return (0);
- }
- }
-
- TIFFGetFieldDefaulted(img->tif, TIFFTAG_YCBCRCOEFFICIENTS, &luma);
- TIFFGetFieldDefaulted(img->tif, TIFFTAG_REFERENCEBLACKWHITE,
- &refBlackWhite);
- if (TIFFYCbCrToRGBInit(img->ycbcr, luma, refBlackWhite) < 0)
- return(0);
- return (1);
-}
-
-static tileContigRoutine
-initCIELabConversion(TIFFRGBAImage* img)
-{
- static char module[] = "initCIELabConversion";
-
- float *whitePoint;
- float refWhite[3];
-
- if (!img->cielab) {
- img->cielab = (TIFFCIELabToRGB *)
- _TIFFmalloc(sizeof(TIFFCIELabToRGB));
- if (!img->cielab) {
- TIFFErrorExt(img->tif->tif_clientdata, module,
- "No space for CIE L*a*b*->RGB conversion state.");
- return NULL;
- }
- }
-
- TIFFGetFieldDefaulted(img->tif, TIFFTAG_WHITEPOINT, &whitePoint);
- refWhite[1] = 100.0F;
- refWhite[0] = whitePoint[0] / whitePoint[1] * refWhite[1];
- refWhite[2] = (1.0F - whitePoint[0] - whitePoint[1])
- / whitePoint[1] * refWhite[1];
- if (TIFFCIELabToRGBInit(img->cielab, &display_sRGB, refWhite) < 0) {
- TIFFErrorExt(img->tif->tif_clientdata, module,
- "Failed to initialize CIE L*a*b*->RGB conversion state.");
- _TIFFfree(img->cielab);
- return NULL;
- }
-
- return putcontig8bitCIELab;
-}
-
-/*
- * Greyscale images with less than 8 bits/sample are handled
- * with a table to avoid lots of shifts and masks. The table
- * is setup so that put*bwtile (below) can retrieve 8/bitspersample
- * pixel values simply by indexing into the table with one
- * number.
- */
-static int
-makebwmap(TIFFRGBAImage* img)
-{
- TIFFRGBValue* Map = img->Map;
- int bitspersample = img->bitspersample;
- int nsamples = 8 / bitspersample;
- int i;
- uint32* p;
-
- if( nsamples == 0 )
- nsamples = 1;
-
- img->BWmap = (uint32**) _TIFFmalloc(
- 256*sizeof (uint32 *)+(256*nsamples*sizeof(uint32)));
- if (img->BWmap == NULL) {
- TIFFErrorExt(img->tif->tif_clientdata, TIFFFileName(img->tif), "No space for B&W mapping table");
- return (0);
- }
- p = (uint32*)(img->BWmap + 256);
- for (i = 0; i < 256; i++) {
- TIFFRGBValue c;
- img->BWmap[i] = p;
- switch (bitspersample) {
-#define GREY(x) c = Map[x]; *p++ = PACK(c,c,c);
- case 1:
- GREY(i>>7);
- GREY((i>>6)&1);
- GREY((i>>5)&1);
- GREY((i>>4)&1);
- GREY((i>>3)&1);
- GREY((i>>2)&1);
- GREY((i>>1)&1);
- GREY(i&1);
- break;
- case 2:
- GREY(i>>6);
- GREY((i>>4)&3);
- GREY((i>>2)&3);
- GREY(i&3);
- break;
- case 4:
- GREY(i>>4);
- GREY(i&0xf);
- break;
- case 8:
- case 16:
- GREY(i);
- break;
- }
-#undef GREY
- }
- return (1);
-}
-
-/*
- * Construct a mapping table to convert from the range
- * of the data samples to [0,255] --for display. This
- * process also handles inverting B&W images when needed.
- */
-static int
-setupMap(TIFFRGBAImage* img)
-{
- int32 x, range;
-
- range = (int32)((1L<<img->bitspersample)-1);
-
- /* treat 16 bit the same as eight bit */
- if( img->bitspersample == 16 )
- range = (int32) 255;
-
- img->Map = (TIFFRGBValue*) _TIFFmalloc((range+1) * sizeof (TIFFRGBValue));
- if (img->Map == NULL) {
- TIFFErrorExt(img->tif->tif_clientdata, TIFFFileName(img->tif),
- "No space for photometric conversion table");
- return (0);
- }
- if (img->photometric == PHOTOMETRIC_MINISWHITE) {
- for (x = 0; x <= range; x++)
- img->Map[x] = (TIFFRGBValue) (((range - x) * 255) / range);
- } else {
- for (x = 0; x <= range; x++)
- img->Map[x] = (TIFFRGBValue) ((x * 255) / range);
- }
- if (img->bitspersample <= 16 &&
- (img->photometric == PHOTOMETRIC_MINISBLACK ||
- img->photometric == PHOTOMETRIC_MINISWHITE)) {
- /*
- * Use photometric mapping table to construct
- * unpacking tables for samples <= 8 bits.
- */
- if (!makebwmap(img))
- return (0);
- /* no longer need Map, free it */
- _TIFFfree(img->Map), img->Map = NULL;
- }
- return (1);
-}
-
-static int
-checkcmap(TIFFRGBAImage* img)
-{
- uint16* r = img->redcmap;
- uint16* g = img->greencmap;
- uint16* b = img->bluecmap;
- long n = 1L<<img->bitspersample;
-
- while (n-- > 0)
- if (*r++ >= 256 || *g++ >= 256 || *b++ >= 256)
- return (16);
- return (8);
-}
-
-static void
-cvtcmap(TIFFRGBAImage* img)
-{
- uint16* r = img->redcmap;
- uint16* g = img->greencmap;
- uint16* b = img->bluecmap;
- long i;
-
- for (i = (1L<<img->bitspersample)-1; i >= 0; i--) {
-#define CVT(x) ((uint16)((x)>>8))
- r[i] = CVT(r[i]);
- g[i] = CVT(g[i]);
- b[i] = CVT(b[i]);
-#undef CVT
- }
-}
-
-/*
- * Palette images with <= 8 bits/sample are handled
- * with a table to avoid lots of shifts and masks. The table
- * is setup so that put*cmaptile (below) can retrieve 8/bitspersample
- * pixel values simply by indexing into the table with one
- * number.
- */
-static int
-makecmap(TIFFRGBAImage* img)
-{
- int bitspersample = img->bitspersample;
- int nsamples = 8 / bitspersample;
- uint16* r = img->redcmap;
- uint16* g = img->greencmap;
- uint16* b = img->bluecmap;
- uint32 *p;
- int i;
-
- img->PALmap = (uint32**) _TIFFmalloc(
- 256*sizeof (uint32 *)+(256*nsamples*sizeof(uint32)));
- if (img->PALmap == NULL) {
- TIFFErrorExt(img->tif->tif_clientdata, TIFFFileName(img->tif), "No space for Palette mapping table");
- return (0);
- }
- p = (uint32*)(img->PALmap + 256);
- for (i = 0; i < 256; i++) {
- TIFFRGBValue c;
- img->PALmap[i] = p;
-#define CMAP(x) c = (TIFFRGBValue) x; *p++ = PACK(r[c]&0xff, g[c]&0xff, b[c]&0xff);
- switch (bitspersample) {
- case 1:
- CMAP(i>>7);
- CMAP((i>>6)&1);
- CMAP((i>>5)&1);
- CMAP((i>>4)&1);
- CMAP((i>>3)&1);
- CMAP((i>>2)&1);
- CMAP((i>>1)&1);
- CMAP(i&1);
- break;
- case 2:
- CMAP(i>>6);
- CMAP((i>>4)&3);
- CMAP((i>>2)&3);
- CMAP(i&3);
- break;
- case 4:
- CMAP(i>>4);
- CMAP(i&0xf);
- break;
- case 8:
- CMAP(i);
- break;
- }
-#undef CMAP
- }
- return (1);
-}
-
-/*
- * Construct any mapping table used
- * by the associated put routine.
- */
-static int
-buildMap(TIFFRGBAImage* img)
-{
- switch (img->photometric) {
- case PHOTOMETRIC_RGB:
- case PHOTOMETRIC_YCBCR:
- case PHOTOMETRIC_SEPARATED:
- if (img->bitspersample == 8)
- break;
- /* fall thru... */
- case PHOTOMETRIC_MINISBLACK:
- case PHOTOMETRIC_MINISWHITE:
- if (!setupMap(img))
- return (0);
- break;
- case PHOTOMETRIC_PALETTE:
- /*
- * Convert 16-bit colormap to 8-bit (unless it looks
- * like an old-style 8-bit colormap).
- */
- if (checkcmap(img) == 16)
- cvtcmap(img);
- else
- TIFFWarningExt(img->tif->tif_clientdata, TIFFFileName(img->tif), "Assuming 8-bit colormap");
- /*
- * Use mapping table and colormap to construct
- * unpacking tables for samples < 8 bits.
- */
- if (img->bitspersample <= 8 && !makecmap(img))
- return (0);
- break;
- }
- return (1);
-}
-
-/*
- * Select the appropriate conversion routine for packed data.
- */
-static int
-PickContigCase(TIFFRGBAImage* img)
-{
- img->get = TIFFIsTiled(img->tif) ? gtTileContig : gtStripContig;
- img->put.contig = NULL;
- switch (img->photometric) {
- case PHOTOMETRIC_RGB:
- switch (img->bitspersample) {
- case 8:
- if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
- img->put.contig = putRGBAAcontig8bittile;
- else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
- {
- img->put.contig = putRGBUAcontig8bittile;
- }
- else
- img->put.contig = putRGBcontig8bittile;
- break;
- case 16:
- if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
- {
- img->put.contig = putRGBAAcontig16bittile;
- }
- else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
- {
- img->put.contig = putRGBUAcontig16bittile;
- }
- else
- {
- img->put.contig = putRGBcontig16bittile;
- }
- break;
- }
- break;
- case PHOTOMETRIC_SEPARATED:
- if (buildMap(img)) {
- if (img->bitspersample == 8) {
- if (!img->Map)
- img->put.contig = putRGBcontig8bitCMYKtile;
- else
- img->put.contig = putRGBcontig8bitCMYKMaptile;
- }
- }
- break;
- case PHOTOMETRIC_PALETTE:
- if (buildMap(img)) {
- switch (img->bitspersample) {
- case 8:
- img->put.contig = put8bitcmaptile;
- break;
- case 4:
- img->put.contig = put4bitcmaptile;
- break;
- case 2:
- img->put.contig = put2bitcmaptile;
- break;
- case 1:
- img->put.contig = put1bitcmaptile;
- break;
- }
- }
- break;
- case PHOTOMETRIC_MINISWHITE:
- case PHOTOMETRIC_MINISBLACK:
- if (buildMap(img)) {
- switch (img->bitspersample) {
- case 16:
- img->put.contig = put16bitbwtile;
- break;
- case 8:
- img->put.contig = putgreytile;
- break;
- case 4:
- img->put.contig = put4bitbwtile;
- break;
- case 2:
- img->put.contig = put2bitbwtile;
- break;
- case 1:
- img->put.contig = put1bitbwtile;
- break;
- }
- }
- break;
- case PHOTOMETRIC_YCBCR:
- if (img->bitspersample == 8)
- {
- if (initYCbCrConversion(img)!=0)
- {
- /*
- * The 6.0 spec says that subsampling must be
- * one of 1, 2, or 4, and that vertical subsampling
- * must always be <= horizontal subsampling; so
- * there are only a few possibilities and we just
- * enumerate the cases.
- * Joris: added support for the [1,2] case, nonetheless, to accomodate
- * some OJPEG files
- */
- uint16 SubsamplingHor;
- uint16 SubsamplingVer;
- TIFFGetFieldDefaulted(img->tif, TIFFTAG_YCBCRSUBSAMPLING, &SubsamplingHor, &SubsamplingVer);
- switch ((SubsamplingHor<<4)|SubsamplingVer) {
- case 0x44:
- img->put.contig = putcontig8bitYCbCr44tile;
- break;
- case 0x42:
- img->put.contig = putcontig8bitYCbCr42tile;
- break;
- case 0x41:
- img->put.contig = putcontig8bitYCbCr41tile;
- break;
- case 0x22:
- img->put.contig = putcontig8bitYCbCr22tile;
- break;
- case 0x21:
- img->put.contig = putcontig8bitYCbCr21tile;
- break;
- case 0x12:
- img->put.contig = putcontig8bitYCbCr12tile;
- break;
- case 0x11:
- img->put.contig = putcontig8bitYCbCr11tile;
- break;
- }
- }
- }
- break;
- case PHOTOMETRIC_CIELAB:
- if (buildMap(img)) {
- if (img->bitspersample == 8)
- img->put.contig = initCIELabConversion(img);
- break;
- }
- }
- return ((img->get!=NULL) && (img->put.contig!=NULL));
-}
-
-/*
- * Select the appropriate conversion routine for unpacked data.
- *
- * NB: we assume that unpacked single channel data is directed
- * to the "packed routines.
- */
-static int
-PickSeparateCase(TIFFRGBAImage* img)
-{
- img->get = TIFFIsTiled(img->tif) ? gtTileSeparate : gtStripSeparate;
- img->put.separate = NULL;
- switch (img->photometric) {
- case PHOTOMETRIC_RGB:
- switch (img->bitspersample) {
- case 8:
- if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
- img->put.separate = putRGBAAseparate8bittile;
- else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
- {
- img->put.separate = putRGBUAseparate8bittile;
- }
- else
- img->put.separate = putRGBseparate8bittile;
- break;
- case 16:
- if (img->alpha == EXTRASAMPLE_ASSOCALPHA)
- {
- img->put.separate = putRGBAAseparate16bittile;
- }
- else if (img->alpha == EXTRASAMPLE_UNASSALPHA)
- {
- img->put.separate = putRGBUAseparate16bittile;
- }
- else
- {
- img->put.separate = putRGBseparate16bittile;
- }
- break;
- }
- break;
- case PHOTOMETRIC_YCBCR:
- if ((img->bitspersample==8) && (img->samplesperpixel==3))
- {
- if (initYCbCrConversion(img)!=0)
- {
- uint16 hs, vs;
- TIFFGetFieldDefaulted(img->tif, TIFFTAG_YCBCRSUBSAMPLING, &hs, &vs);
- switch ((hs<<4)|vs) {
- case 0x11:
- img->put.separate = putseparate8bitYCbCr11tile;
- break;
- /* TODO: add other cases here */
- }
- }
- }
- break;
- }
- return ((img->get!=NULL) && (img->put.separate!=NULL));
-}
-
-/*
- * Read a whole strip off data from the file, and convert to RGBA form.
- * If this is the last strip, then it will only contain the portion of
- * the strip that is actually within the image space. The result is
- * organized in bottom to top form.
- */
-
-
-int
-TIFFReadRGBAStrip(TIFF* tif, uint32 row, uint32 * raster )
-
-{
- char emsg[1024] = "";
- TIFFRGBAImage img;
- int ok;
- uint32 rowsperstrip, rows_to_read;
-
- if( TIFFIsTiled( tif ) )
- {
- TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif),
- "Can't use TIFFReadRGBAStrip() with tiled file.");
- return (0);
- }
-
- TIFFGetFieldDefaulted(tif, TIFFTAG_ROWSPERSTRIP, &rowsperstrip);
- if( (row % rowsperstrip) != 0 )
- {
- TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif),
- "Row passed to TIFFReadRGBAStrip() must be first in a strip.");
- return (0);
- }
-
- if (TIFFRGBAImageOK(tif, emsg) && TIFFRGBAImageBegin(&img, tif, 0, emsg)) {
-
- img.row_offset = row;
- img.col_offset = 0;
-
- if( row + rowsperstrip > img.height )
- rows_to_read = img.height - row;
- else
- rows_to_read = rowsperstrip;
-
- ok = TIFFRGBAImageGet(&img, raster, img.width, rows_to_read );
-
- TIFFRGBAImageEnd(&img);
- } else {
- TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "%s", emsg);
- ok = 0;
- }
-
- return (ok);
-}
-
-/*
- * Read a whole tile off data from the file, and convert to RGBA form.
- * The returned RGBA data is organized from bottom to top of tile,
- * and may include zeroed areas if the tile extends off the image.
- */
-
-int
-TIFFReadRGBATile(TIFF* tif, uint32 col, uint32 row, uint32 * raster)
-
-{
- char emsg[1024] = "";
- TIFFRGBAImage img;
- int ok;
- uint32 tile_xsize, tile_ysize;
- uint32 read_xsize, read_ysize;
- uint32 i_row;
-
- /*
- * Verify that our request is legal - on a tile file, and on a
- * tile boundary.
- */
-
- if( !TIFFIsTiled( tif ) )
- {
- TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif),
- "Can't use TIFFReadRGBATile() with stripped file.");
- return (0);
- }
-
- TIFFGetFieldDefaulted(tif, TIFFTAG_TILEWIDTH, &tile_xsize);
- TIFFGetFieldDefaulted(tif, TIFFTAG_TILELENGTH, &tile_ysize);
- if( (col % tile_xsize) != 0 || (row % tile_ysize) != 0 )
- {
- TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif),
- "Row/col passed to TIFFReadRGBATile() must be top"
- "left corner of a tile.");
- return (0);
- }
-
- /*
- * Setup the RGBA reader.
- */
-
- if (!TIFFRGBAImageOK(tif, emsg)
- || !TIFFRGBAImageBegin(&img, tif, 0, emsg)) {
- TIFFErrorExt(tif->tif_clientdata, TIFFFileName(tif), "%s", emsg);
- return( 0 );
- }
-
- /*
- * The TIFFRGBAImageGet() function doesn't allow us to get off the
- * edge of the image, even to fill an otherwise valid tile. So we
- * figure out how much we can read, and fix up the tile buffer to
- * a full tile configuration afterwards.
- */
-
- if( row + tile_ysize > img.height )
- read_ysize = img.height - row;
- else
- read_ysize = tile_ysize;
-
- if( col + tile_xsize > img.width )
- read_xsize = img.width - col;
- else
- read_xsize = tile_xsize;
-
- /*
- * Read the chunk of imagery.
- */
-
- img.row_offset = row;
- img.col_offset = col;
-
- ok = TIFFRGBAImageGet(&img, raster, read_xsize, read_ysize );
-
- TIFFRGBAImageEnd(&img);
-
- /*
- * If our read was incomplete we will need to fix up the tile by
- * shifting the data around as if a full tile of data is being returned.
- *
- * This is all the more complicated because the image is organized in
- * bottom to top format.
- */
-
- if( read_xsize == tile_xsize && read_ysize == tile_ysize )
- return( ok );
-
- for( i_row = 0; i_row < read_ysize; i_row++ ) {
- memmove( raster + (tile_ysize - i_row - 1) * tile_xsize,
- raster + (read_ysize - i_row - 1) * read_xsize,
- read_xsize * sizeof(uint32) );
- _TIFFmemset( raster + (tile_ysize - i_row - 1) * tile_xsize+read_xsize,
- 0, sizeof(uint32) * (tile_xsize - read_xsize) );
- }
-
- for( i_row = read_ysize; i_row < tile_ysize; i_row++ ) {
- _TIFFmemset( raster + (tile_ysize - i_row - 1) * tile_xsize,
- 0, sizeof(uint32) * tile_xsize );
- }
-
- return (ok);
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_jbig.c b/src/3rdparty/libtiff/libtiff/tif_jbig.c
deleted file mode 100644
index 99183ba74e..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_jbig.c
+++ /dev/null
@@ -1,378 +0,0 @@
-/* $Id: tif_jbig.c,v 1.2.2.2 2008-10-21 13:13:07 dron Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- *
- * JBIG Compression Algorithm Support.
- * Contributed by Lee Howard <faxguy@deanox.com>
- *
- */
-
-#include "tiffiop.h"
-
-#ifdef JBIG_SUPPORT
-#include "jbig.h"
-
-typedef struct
-{
- uint32 recvparams; /* encoded Class 2 session params */
- char* subaddress; /* subaddress string */
- uint32 recvtime; /* time spend receiving in seconds */
- char* faxdcs; /* encoded fax parameters (DCS, Table 2/T.30) */
-
- TIFFVGetMethod vgetparent;
- TIFFVSetMethod vsetparent;
-} JBIGState;
-
-#define GetJBIGState(tif) ((JBIGState*)(tif)->tif_data)
-
-#define FIELD_RECVPARAMS (FIELD_CODEC+0)
-#define FIELD_SUBADDRESS (FIELD_CODEC+1)
-#define FIELD_RECVTIME (FIELD_CODEC+2)
-#define FIELD_FAXDCS (FIELD_CODEC+3)
-
-static const TIFFFieldInfo jbigFieldInfo[] =
-{
- {TIFFTAG_FAXRECVPARAMS, 1, 1, TIFF_LONG, FIELD_RECVPARAMS, TRUE, FALSE, "FaxRecvParams"},
- {TIFFTAG_FAXSUBADDRESS, -1, -1, TIFF_ASCII, FIELD_SUBADDRESS, TRUE, FALSE, "FaxSubAddress"},
- {TIFFTAG_FAXRECVTIME, 1, 1, TIFF_LONG, FIELD_RECVTIME, TRUE, FALSE, "FaxRecvTime"},
- {TIFFTAG_FAXDCS, -1, -1, TIFF_ASCII, FIELD_FAXDCS, TRUE, FALSE, "FaxDcs"},
-};
-
-static int JBIGSetupDecode(TIFF* tif)
-{
- if (TIFFNumberOfStrips(tif) != 1)
- {
- TIFFError("JBIG", "Multistrip images not supported in decoder");
- return 0;
- }
-
- return 1;
-}
-
-static int JBIGDecode(TIFF* tif, tidata_t buffer, tsize_t size, tsample_t s)
-{
- struct jbg_dec_state decoder;
- int decodeStatus = 0;
- unsigned char* pImage = NULL;
- (void) size, (void) s;
-
- if (isFillOrder(tif, tif->tif_dir.td_fillorder))
- {
- TIFFReverseBits(tif->tif_rawdata, tif->tif_rawdatasize);
- }
-
- jbg_dec_init(&decoder);
-
-#if defined(HAVE_JBG_NEWLEN)
- jbg_newlen(tif->tif_rawdata, tif->tif_rawdatasize);
- /*
- * I do not check the return status of jbg_newlen because even if this
- * function fails it does not necessarily mean that decoding the image
- * will fail. It is generally only needed for received fax images
- * that do not contain the actual length of the image in the BIE
- * header. I do not log when an error occurs because that will cause
- * problems when converting JBIG encoded TIFF's to
- * PostScript. As long as the actual image length is contained in the
- * BIE header jbg_dec_in should succeed.
- */
-#endif /* HAVE_JBG_NEWLEN */
-
- decodeStatus = jbg_dec_in(&decoder, tif->tif_rawdata,
- tif->tif_rawdatasize, NULL);
- if (JBG_EOK != decodeStatus)
- {
- /*
- * XXX: JBG_EN constant was defined in pre-2.0 releases of the
- * JBIG-KIT. Since the 2.0 the error reporting functions were
- * changed. We will handle both cases here.
- */
- TIFFError("JBIG", "Error (%d) decoding: %s", decodeStatus,
-#if defined(JBG_EN)
- jbg_strerror(decodeStatus, JBG_EN)
-#else
- jbg_strerror(decodeStatus)
-#endif
- );
- return 0;
- }
-
- pImage = jbg_dec_getimage(&decoder, 0);
- _TIFFmemcpy(buffer, pImage, jbg_dec_getsize(&decoder));
- jbg_dec_free(&decoder);
- return 1;
-}
-
-static int JBIGSetupEncode(TIFF* tif)
-{
- if (TIFFNumberOfStrips(tif) != 1)
- {
- TIFFError("JBIG", "Multistrip images not supported in encoder");
- return 0;
- }
-
- return 1;
-}
-
-static int JBIGCopyEncodedData(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
-{
- (void) s;
- while (cc > 0)
- {
- tsize_t n = cc;
-
- if (tif->tif_rawcc + n > tif->tif_rawdatasize)
- {
- n = tif->tif_rawdatasize - tif->tif_rawcc;
- }
-
- assert(n > 0);
- _TIFFmemcpy(tif->tif_rawcp, pp, n);
- tif->tif_rawcp += n;
- tif->tif_rawcc += n;
- pp += n;
- cc -= n;
- if (tif->tif_rawcc >= tif->tif_rawdatasize &&
- !TIFFFlushData1(tif))
- {
- return (-1);
- }
- }
-
- return (1);
-}
-
-static void JBIGOutputBie(unsigned char* buffer, size_t len, void *userData)
-{
- TIFF* tif = (TIFF*)userData;
-
- if (isFillOrder(tif, tif->tif_dir.td_fillorder))
- {
- TIFFReverseBits(buffer, len);
- }
-
- JBIGCopyEncodedData(tif, buffer, len, 0);
-}
-
-static int JBIGEncode(TIFF* tif, tidata_t buffer, tsize_t size, tsample_t s)
-{
- TIFFDirectory* dir = &tif->tif_dir;
- struct jbg_enc_state encoder;
-
- (void) size, (void) s;
-
- jbg_enc_init(&encoder,
- dir->td_imagewidth,
- dir->td_imagelength,
- 1,
- &buffer,
- JBIGOutputBie,
- tif);
- /*
- * jbg_enc_out does the "real" encoding. As data is encoded,
- * JBIGOutputBie is called, which writes the data to the directory.
- */
- jbg_enc_out(&encoder);
- jbg_enc_free(&encoder);
-
- return 1;
-}
-
-static void JBIGCleanup(TIFF* tif)
-{
- JBIGState *sp = GetJBIGState(tif);
-
- assert(sp != 0);
-
- tif->tif_tagmethods.vgetfield = sp->vgetparent;
- tif->tif_tagmethods.vsetfield = sp->vsetparent;
-
- _TIFFfree(tif->tif_data);
- tif->tif_data = NULL;
-
- _TIFFSetDefaultCompressionState(tif);
-}
-
-static void JBIGPrintDir(TIFF* tif, FILE* fd, long flags)
-{
- JBIGState* codec = GetJBIGState(tif);
- (void)flags;
-
- if (TIFFFieldSet(tif, FIELD_RECVPARAMS))
- {
- fprintf(fd,
- " Fax Receive Parameters: %08lx\n",
- (unsigned long)codec->recvparams);
- }
-
- if (TIFFFieldSet(tif, FIELD_SUBADDRESS))
- {
- fprintf(fd,
- " Fax SubAddress: %s\n",
- codec->subaddress);
- }
-
- if (TIFFFieldSet(tif, FIELD_RECVTIME))
- {
- fprintf(fd,
- " Fax Receive Time: %lu secs\n",
- (unsigned long)codec->recvtime);
- }
-
- if (TIFFFieldSet(tif, FIELD_FAXDCS))
- {
- fprintf(fd,
- " Fax DCS: %s\n",
- codec->faxdcs);
- }
-}
-
-static int JBIGVGetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- JBIGState* codec = GetJBIGState(tif);
-
- switch (tag)
- {
- case TIFFTAG_FAXRECVPARAMS:
- *va_arg(ap, uint32*) = codec->recvparams;
- break;
-
- case TIFFTAG_FAXSUBADDRESS:
- *va_arg(ap, char**) = codec->subaddress;
- break;
-
- case TIFFTAG_FAXRECVTIME:
- *va_arg(ap, uint32*) = codec->recvtime;
- break;
-
- case TIFFTAG_FAXDCS:
- *va_arg(ap, char**) = codec->faxdcs;
- break;
-
- default:
- return (*codec->vgetparent)(tif, tag, ap);
- }
-
- return 1;
-}
-
-static int JBIGVSetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- JBIGState* codec = GetJBIGState(tif);
-
- switch (tag)
- {
- case TIFFTAG_FAXRECVPARAMS:
- codec->recvparams = va_arg(ap, uint32);
- break;
-
- case TIFFTAG_FAXSUBADDRESS:
- _TIFFsetString(&codec->subaddress, va_arg(ap, char*));
- break;
-
- case TIFFTAG_FAXRECVTIME:
- codec->recvtime = va_arg(ap, uint32);
- break;
-
- case TIFFTAG_FAXDCS:
- _TIFFsetString(&codec->faxdcs, va_arg(ap, char*));
- break;
-
- default:
- return (*codec->vsetparent)(tif, tag, ap);
- }
-
- TIFFSetFieldBit(tif, _TIFFFieldWithTag(tif, tag)->field_bit);
- tif->tif_flags |= TIFF_DIRTYDIRECT;
- return 1;
-}
-
-int TIFFInitJBIG(TIFF* tif, int scheme)
-{
- JBIGState* codec = NULL;
-
- assert(scheme == COMPRESSION_JBIG);
-
- /*
- * Merge codec-specific tag information.
- */
- if (!_TIFFMergeFieldInfo(tif, jbigFieldInfo,
- TIFFArrayCount(jbigFieldInfo))) {
- TIFFErrorExt(tif->tif_clientdata, "TIFFInitJBIG",
- "Merging JBIG codec-specific tags failed");
- return 0;
- }
-
- /* Allocate memory for the JBIGState structure.*/
- tif->tif_data = (tdata_t)_TIFFmalloc(sizeof(JBIGState));
- if (tif->tif_data == NULL)
- {
- TIFFError("TIFFInitJBIG", "Not enough memory for JBIGState");
- return 0;
- }
- _TIFFmemset(tif->tif_data, 0, sizeof(JBIGState));
- codec = GetJBIGState(tif);
-
- /* Initialize codec private fields */
- codec->recvparams = 0;
- codec->subaddress = NULL;
- codec->faxdcs = NULL;
- codec->recvtime = 0;
-
- /*
- * Override parent get/set field methods.
- */
- codec->vgetparent = tif->tif_tagmethods.vgetfield;
- codec->vsetparent = tif->tif_tagmethods.vsetfield;
- tif->tif_tagmethods.vgetfield = JBIGVGetField;
- tif->tif_tagmethods.vsetfield = JBIGVSetField;
- tif->tif_tagmethods.printdir = JBIGPrintDir;
-
- /*
- * These flags are set so the JBIG Codec can control when to reverse
- * bits and when not to and to allow the jbig decoder and bit reverser
- * to write to memory when necessary.
- */
- tif->tif_flags |= TIFF_NOBITREV;
- tif->tif_flags &= ~TIFF_MAPPED;
-
- /* Setup the function pointers for encode, decode, and cleanup. */
- tif->tif_setupdecode = JBIGSetupDecode;
- tif->tif_decodestrip = JBIGDecode;
-
- tif->tif_setupencode = JBIGSetupEncode;
- tif->tif_encodestrip = JBIGEncode;
-
- tif->tif_cleanup = JBIGCleanup;
-
- return 1;
-}
-
-#endif /* JBIG_SUPPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
-
diff --git a/src/3rdparty/libtiff/libtiff/tif_jpeg.c b/src/3rdparty/libtiff/libtiff/tif_jpeg.c
deleted file mode 100644
index 74b0d3f860..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_jpeg.c
+++ /dev/null
@@ -1,2035 +0,0 @@
-/* $Id: tif_jpeg.c,v 1.50.2.4 2009-08-30 16:21:46 bfriesen Exp $ */
-
-/*
- * Copyright (c) 1994-1997 Sam Leffler
- * Copyright (c) 1994-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#define WIN32_LEAN_AND_MEAN
-#define VC_EXTRALEAN
-
-#include "tiffiop.h"
-#ifdef JPEG_SUPPORT
-
-/*
- * TIFF Library
- *
- * JPEG Compression support per TIFF Technical Note #2
- * (*not* per the original TIFF 6.0 spec).
- *
- * This file is simply an interface to the libjpeg library written by
- * the Independent JPEG Group. You need release 5 or later of the IJG
- * code, which you can find on the Internet at ftp.uu.net:/graphics/jpeg/.
- *
- * Contributed by Tom Lane <tgl@sss.pgh.pa.us>.
- */
-#include <setjmp.h>
-
-int TIFFFillStrip(TIFF*, tstrip_t);
-int TIFFFillTile(TIFF*, ttile_t);
-
-/* We undefine FAR to avoid conflict with JPEG definition */
-
-#ifdef FAR
-#undef FAR
-#endif
-
-/*
- Libjpeg's jmorecfg.h defines INT16 and INT32, but only if XMD_H is
- not defined. Unfortunately, the MinGW and Borland compilers include
- a typedef for INT32, which causes a conflict. MSVC does not include
- a conficting typedef given the headers which are included.
-*/
-#if defined(__BORLANDC__) || defined(__MINGW32__)
-# define XMD_H 1
-#endif
-
-/*
- The windows RPCNDR.H file defines boolean, but defines it with the
- unsigned char size. You should compile JPEG library using appropriate
- definitions in jconfig.h header, but many users compile library in wrong
- way. That causes errors of the following type:
-
- "JPEGLib: JPEG parameter struct mismatch: library thinks size is 432,
- caller expects 464"
-
- For such users we wil fix the problem here. See install.doc file from
- the JPEG library distribution for details.
-*/
-
-/* Define "boolean" as unsigned char, not int, per Windows custom. */
-#if defined(WIN32) && !defined(__MINGW32__)
-# ifndef __RPCNDR_H__ /* don't conflict if rpcndr.h already read */
- typedef unsigned char boolean;
-# endif
-# define HAVE_BOOLEAN /* prevent jmorecfg.h from redefining it */
-#endif
-
-#include "jpeglib.h"
-#include "jerror.h"
-
-/*
- * We are using width_in_blocks which is supposed to be private to
- * libjpeg. Unfortunately, the libjpeg delivered with Cygwin has
- * renamed this member to width_in_data_units. Since the header has
- * also renamed a define, use that unique define name in order to
- * detect the problem header and adjust to suit.
- */
-#if defined(D_MAX_DATA_UNITS_IN_MCU)
-#define width_in_blocks width_in_data_units
-#endif
-
-/*
- * On some machines it may be worthwhile to use _setjmp or sigsetjmp
- * in place of plain setjmp. These macros will make it easier.
- */
-#define SETJMP(jbuf) setjmp(jbuf)
-#define LONGJMP(jbuf,code) longjmp(jbuf,code)
-#define JMP_BUF jmp_buf
-
-typedef struct jpeg_destination_mgr jpeg_destination_mgr;
-typedef struct jpeg_source_mgr jpeg_source_mgr;
-typedef struct jpeg_error_mgr jpeg_error_mgr;
-
-/*
- * State block for each open TIFF file using
- * libjpeg to do JPEG compression/decompression.
- *
- * libjpeg's visible state is either a jpeg_compress_struct
- * or jpeg_decompress_struct depending on which way we
- * are going. comm can be used to refer to the fields
- * which are common to both.
- *
- * NB: cinfo is required to be the first member of JPEGState,
- * so we can safely cast JPEGState* -> jpeg_xxx_struct*
- * and vice versa!
- */
-typedef struct {
- union {
- struct jpeg_compress_struct c;
- struct jpeg_decompress_struct d;
- struct jpeg_common_struct comm;
- } cinfo; /* NB: must be first */
- int cinfo_initialized;
-
- jpeg_error_mgr err; /* libjpeg error manager */
- JMP_BUF exit_jmpbuf; /* for catching libjpeg failures */
- /*
- * The following two members could be a union, but
- * they're small enough that it's not worth the effort.
- */
- jpeg_destination_mgr dest; /* data dest for compression */
- jpeg_source_mgr src; /* data source for decompression */
- /* private state */
- TIFF* tif; /* back link needed by some code */
- uint16 photometric; /* copy of PhotometricInterpretation */
- uint16 h_sampling; /* luminance sampling factors */
- uint16 v_sampling;
- tsize_t bytesperline; /* decompressed bytes per scanline */
- /* pointers to intermediate buffers when processing downsampled data */
- JSAMPARRAY ds_buffer[MAX_COMPONENTS];
- int scancount; /* number of "scanlines" accumulated */
- int samplesperclump;
-
- TIFFVGetMethod vgetparent; /* super-class method */
- TIFFVSetMethod vsetparent; /* super-class method */
- TIFFPrintMethod printdir; /* super-class method */
- TIFFStripMethod defsparent; /* super-class method */
- TIFFTileMethod deftparent; /* super-class method */
- /* pseudo-tag fields */
- void* jpegtables; /* JPEGTables tag value, or NULL */
- uint32 jpegtables_length; /* number of bytes in same */
- int jpegquality; /* Compression quality level */
- int jpegcolormode; /* Auto RGB<=>YCbCr convert? */
- int jpegtablesmode; /* What to put in JPEGTables */
-
- int ycbcrsampling_fetched;
- uint32 recvparams; /* encoded Class 2 session params */
- char* subaddress; /* subaddress string */
- uint32 recvtime; /* time spent receiving (secs) */
- char* faxdcs; /* encoded fax parameters (DCS, Table 2/T.30) */
-} JPEGState;
-
-#define JState(tif) ((JPEGState*)(tif)->tif_data)
-
-static int JPEGDecode(TIFF*, tidata_t, tsize_t, tsample_t);
-static int JPEGDecodeRaw(TIFF*, tidata_t, tsize_t, tsample_t);
-static int JPEGEncode(TIFF*, tidata_t, tsize_t, tsample_t);
-static int JPEGEncodeRaw(TIFF*, tidata_t, tsize_t, tsample_t);
-static int JPEGInitializeLibJPEG( TIFF * tif,
- int force_encode, int force_decode );
-
-#define FIELD_JPEGTABLES (FIELD_CODEC+0)
-#define FIELD_RECVPARAMS (FIELD_CODEC+1)
-#define FIELD_SUBADDRESS (FIELD_CODEC+2)
-#define FIELD_RECVTIME (FIELD_CODEC+3)
-#define FIELD_FAXDCS (FIELD_CODEC+4)
-
-static const TIFFFieldInfo jpegFieldInfo[] = {
- { TIFFTAG_JPEGTABLES, -3,-3, TIFF_UNDEFINED, FIELD_JPEGTABLES,
- FALSE, TRUE, "JPEGTables" },
- { TIFFTAG_JPEGQUALITY, 0, 0, TIFF_ANY, FIELD_PSEUDO,
- TRUE, FALSE, "" },
- { TIFFTAG_JPEGCOLORMODE, 0, 0, TIFF_ANY, FIELD_PSEUDO,
- FALSE, FALSE, "" },
- { TIFFTAG_JPEGTABLESMODE, 0, 0, TIFF_ANY, FIELD_PSEUDO,
- FALSE, FALSE, "" },
- /* Specific for JPEG in faxes */
- { TIFFTAG_FAXRECVPARAMS, 1, 1, TIFF_LONG, FIELD_RECVPARAMS,
- TRUE, FALSE, "FaxRecvParams" },
- { TIFFTAG_FAXSUBADDRESS, -1,-1, TIFF_ASCII, FIELD_SUBADDRESS,
- TRUE, FALSE, "FaxSubAddress" },
- { TIFFTAG_FAXRECVTIME, 1, 1, TIFF_LONG, FIELD_RECVTIME,
- TRUE, FALSE, "FaxRecvTime" },
- { TIFFTAG_FAXDCS, -1, -1, TIFF_ASCII, FIELD_FAXDCS,
- TRUE, FALSE, "FaxDcs" },
-};
-#define N(a) (sizeof (a) / sizeof (a[0]))
-
-/*
- * libjpeg interface layer.
- *
- * We use setjmp/longjmp to return control to libtiff
- * when a fatal error is encountered within the JPEG
- * library. We also direct libjpeg error and warning
- * messages through the appropriate libtiff handlers.
- */
-
-/*
- * Error handling routines (these replace corresponding
- * IJG routines from jerror.c). These are used for both
- * compression and decompression.
- */
-static void
-TIFFjpeg_error_exit(j_common_ptr cinfo)
-{
- JPEGState *sp = (JPEGState *) cinfo; /* NB: cinfo assumed first */
- char buffer[JMSG_LENGTH_MAX];
-
- (*cinfo->err->format_message) (cinfo, buffer);
- TIFFErrorExt(sp->tif->tif_clientdata, "JPEGLib", "%s", buffer); /* display the error message */
- jpeg_abort(cinfo); /* clean up libjpeg state */
- LONGJMP(sp->exit_jmpbuf, 1); /* return to libtiff caller */
-}
-
-/*
- * This routine is invoked only for warning messages,
- * since error_exit does its own thing and trace_level
- * is never set > 0.
- */
-static void
-TIFFjpeg_output_message(j_common_ptr cinfo)
-{
- char buffer[JMSG_LENGTH_MAX];
-
- (*cinfo->err->format_message) (cinfo, buffer);
- TIFFWarningExt(((JPEGState *) cinfo)->tif->tif_clientdata, "JPEGLib", "%s", buffer);
-}
-
-/*
- * Interface routines. This layer of routines exists
- * primarily to limit side-effects from using setjmp.
- * Also, normal/error returns are converted into return
- * values per libtiff practice.
- */
-#define CALLJPEG(sp, fail, op) (SETJMP((sp)->exit_jmpbuf) ? (fail) : (op))
-#define CALLVJPEG(sp, op) CALLJPEG(sp, 0, ((op),1))
-
-static int
-TIFFjpeg_create_compress(JPEGState* sp)
-{
- /* initialize JPEG error handling */
- sp->cinfo.c.err = jpeg_std_error(&sp->err);
- sp->err.error_exit = TIFFjpeg_error_exit;
- sp->err.output_message = TIFFjpeg_output_message;
-
- return CALLVJPEG(sp, jpeg_create_compress(&sp->cinfo.c));
-}
-
-static int
-TIFFjpeg_create_decompress(JPEGState* sp)
-{
- /* initialize JPEG error handling */
- sp->cinfo.d.err = jpeg_std_error(&sp->err);
- sp->err.error_exit = TIFFjpeg_error_exit;
- sp->err.output_message = TIFFjpeg_output_message;
-
- return CALLVJPEG(sp, jpeg_create_decompress(&sp->cinfo.d));
-}
-
-static int
-TIFFjpeg_set_defaults(JPEGState* sp)
-{
- return CALLVJPEG(sp, jpeg_set_defaults(&sp->cinfo.c));
-}
-
-static int
-TIFFjpeg_set_colorspace(JPEGState* sp, J_COLOR_SPACE colorspace)
-{
- return CALLVJPEG(sp, jpeg_set_colorspace(&sp->cinfo.c, colorspace));
-}
-
-static int
-TIFFjpeg_set_quality(JPEGState* sp, int quality, boolean force_baseline)
-{
- return CALLVJPEG(sp,
- jpeg_set_quality(&sp->cinfo.c, quality, force_baseline));
-}
-
-static int
-TIFFjpeg_suppress_tables(JPEGState* sp, boolean suppress)
-{
- return CALLVJPEG(sp, jpeg_suppress_tables(&sp->cinfo.c, suppress));
-}
-
-static int
-TIFFjpeg_start_compress(JPEGState* sp, boolean write_all_tables)
-{
- return CALLVJPEG(sp,
- jpeg_start_compress(&sp->cinfo.c, write_all_tables));
-}
-
-static int
-TIFFjpeg_write_scanlines(JPEGState* sp, JSAMPARRAY scanlines, int num_lines)
-{
- return CALLJPEG(sp, -1, (int) jpeg_write_scanlines(&sp->cinfo.c,
- scanlines, (JDIMENSION) num_lines));
-}
-
-static int
-TIFFjpeg_write_raw_data(JPEGState* sp, JSAMPIMAGE data, int num_lines)
-{
- return CALLJPEG(sp, -1, (int) jpeg_write_raw_data(&sp->cinfo.c,
- data, (JDIMENSION) num_lines));
-}
-
-static int
-TIFFjpeg_finish_compress(JPEGState* sp)
-{
- return CALLVJPEG(sp, jpeg_finish_compress(&sp->cinfo.c));
-}
-
-static int
-TIFFjpeg_write_tables(JPEGState* sp)
-{
- return CALLVJPEG(sp, jpeg_write_tables(&sp->cinfo.c));
-}
-
-static int
-TIFFjpeg_read_header(JPEGState* sp, boolean require_image)
-{
- return CALLJPEG(sp, -1, jpeg_read_header(&sp->cinfo.d, require_image));
-}
-
-static int
-TIFFjpeg_start_decompress(JPEGState* sp)
-{
- return CALLVJPEG(sp, jpeg_start_decompress(&sp->cinfo.d));
-}
-
-static int
-TIFFjpeg_read_scanlines(JPEGState* sp, JSAMPARRAY scanlines, int max_lines)
-{
- return CALLJPEG(sp, -1, (int) jpeg_read_scanlines(&sp->cinfo.d,
- scanlines, (JDIMENSION) max_lines));
-}
-
-static int
-TIFFjpeg_read_raw_data(JPEGState* sp, JSAMPIMAGE data, int max_lines)
-{
- return CALLJPEG(sp, -1, (int) jpeg_read_raw_data(&sp->cinfo.d,
- data, (JDIMENSION) max_lines));
-}
-
-static int
-TIFFjpeg_finish_decompress(JPEGState* sp)
-{
- return CALLJPEG(sp, -1, (int) jpeg_finish_decompress(&sp->cinfo.d));
-}
-
-static int
-TIFFjpeg_abort(JPEGState* sp)
-{
- return CALLVJPEG(sp, jpeg_abort(&sp->cinfo.comm));
-}
-
-static int
-TIFFjpeg_destroy(JPEGState* sp)
-{
- return CALLVJPEG(sp, jpeg_destroy(&sp->cinfo.comm));
-}
-
-static JSAMPARRAY
-TIFFjpeg_alloc_sarray(JPEGState* sp, int pool_id,
- JDIMENSION samplesperrow, JDIMENSION numrows)
-{
- return CALLJPEG(sp, (JSAMPARRAY) NULL,
- (*sp->cinfo.comm.mem->alloc_sarray)
- (&sp->cinfo.comm, pool_id, samplesperrow, numrows));
-}
-
-/*
- * JPEG library destination data manager.
- * These routines direct compressed data from libjpeg into the
- * libtiff output buffer.
- */
-
-static void
-std_init_destination(j_compress_ptr cinfo)
-{
- JPEGState* sp = (JPEGState*) cinfo;
- TIFF* tif = sp->tif;
-
- sp->dest.next_output_byte = (JOCTET*) tif->tif_rawdata;
- sp->dest.free_in_buffer = (size_t) tif->tif_rawdatasize;
-}
-
-static boolean
-std_empty_output_buffer(j_compress_ptr cinfo)
-{
- JPEGState* sp = (JPEGState*) cinfo;
- TIFF* tif = sp->tif;
-
- /* the entire buffer has been filled */
- tif->tif_rawcc = tif->tif_rawdatasize;
- TIFFFlushData1(tif);
- sp->dest.next_output_byte = (JOCTET*) tif->tif_rawdata;
- sp->dest.free_in_buffer = (size_t) tif->tif_rawdatasize;
-
- return (TRUE);
-}
-
-static void
-std_term_destination(j_compress_ptr cinfo)
-{
- JPEGState* sp = (JPEGState*) cinfo;
- TIFF* tif = sp->tif;
-
- tif->tif_rawcp = (tidata_t) sp->dest.next_output_byte;
- tif->tif_rawcc =
- tif->tif_rawdatasize - (tsize_t) sp->dest.free_in_buffer;
- /* NB: libtiff does the final buffer flush */
-}
-
-static void
-TIFFjpeg_data_dest(JPEGState* sp, TIFF* tif)
-{
- (void) tif;
- sp->cinfo.c.dest = &sp->dest;
- sp->dest.init_destination = std_init_destination;
- sp->dest.empty_output_buffer = std_empty_output_buffer;
- sp->dest.term_destination = std_term_destination;
-}
-
-/*
- * Alternate destination manager for outputting to JPEGTables field.
- */
-
-static void
-tables_init_destination(j_compress_ptr cinfo)
-{
- JPEGState* sp = (JPEGState*) cinfo;
-
- /* while building, jpegtables_length is allocated buffer size */
- sp->dest.next_output_byte = (JOCTET*) sp->jpegtables;
- sp->dest.free_in_buffer = (size_t) sp->jpegtables_length;
-}
-
-static boolean
-tables_empty_output_buffer(j_compress_ptr cinfo)
-{
- JPEGState* sp = (JPEGState*) cinfo;
- void* newbuf;
-
- /* the entire buffer has been filled; enlarge it by 1000 bytes */
- newbuf = _TIFFrealloc((tdata_t) sp->jpegtables,
- (tsize_t) (sp->jpegtables_length + 1000));
- if (newbuf == NULL)
- ERREXIT1(cinfo, JERR_OUT_OF_MEMORY, 100);
- sp->dest.next_output_byte = (JOCTET*) newbuf + sp->jpegtables_length;
- sp->dest.free_in_buffer = (size_t) 1000;
- sp->jpegtables = newbuf;
- sp->jpegtables_length += 1000;
- return (TRUE);
-}
-
-static void
-tables_term_destination(j_compress_ptr cinfo)
-{
- JPEGState* sp = (JPEGState*) cinfo;
-
- /* set tables length to number of bytes actually emitted */
- sp->jpegtables_length -= sp->dest.free_in_buffer;
-}
-
-static int
-TIFFjpeg_tables_dest(JPEGState* sp, TIFF* tif)
-{
- (void) tif;
- /*
- * Allocate a working buffer for building tables.
- * Initial size is 1000 bytes, which is usually adequate.
- */
- if (sp->jpegtables)
- _TIFFfree(sp->jpegtables);
- sp->jpegtables_length = 1000;
- sp->jpegtables = (void*) _TIFFmalloc((tsize_t) sp->jpegtables_length);
- if (sp->jpegtables == NULL) {
- sp->jpegtables_length = 0;
- TIFFErrorExt(sp->tif->tif_clientdata, "TIFFjpeg_tables_dest", "No space for JPEGTables");
- return (0);
- }
- sp->cinfo.c.dest = &sp->dest;
- sp->dest.init_destination = tables_init_destination;
- sp->dest.empty_output_buffer = tables_empty_output_buffer;
- sp->dest.term_destination = tables_term_destination;
- return (1);
-}
-
-/*
- * JPEG library source data manager.
- * These routines supply compressed data to libjpeg.
- */
-
-static void
-std_init_source(j_decompress_ptr cinfo)
-{
- JPEGState* sp = (JPEGState*) cinfo;
- TIFF* tif = sp->tif;
-
- sp->src.next_input_byte = (const JOCTET*) tif->tif_rawdata;
- sp->src.bytes_in_buffer = (size_t) tif->tif_rawcc;
-}
-
-static boolean
-std_fill_input_buffer(j_decompress_ptr cinfo)
-{
- JPEGState* sp = (JPEGState* ) cinfo;
- static const JOCTET dummy_EOI[2] = { 0xFF, JPEG_EOI };
-
- /*
- * Should never get here since entire strip/tile is
- * read into memory before the decompressor is called,
- * and thus was supplied by init_source.
- */
- WARNMS(cinfo, JWRN_JPEG_EOF);
- /* insert a fake EOI marker */
- sp->src.next_input_byte = dummy_EOI;
- sp->src.bytes_in_buffer = 2;
- return (TRUE);
-}
-
-static void
-std_skip_input_data(j_decompress_ptr cinfo, long num_bytes)
-{
- JPEGState* sp = (JPEGState*) cinfo;
-
- if (num_bytes > 0) {
- if (num_bytes > (long) sp->src.bytes_in_buffer) {
- /* oops, buffer overrun */
- (void) std_fill_input_buffer(cinfo);
- } else {
- sp->src.next_input_byte += (size_t) num_bytes;
- sp->src.bytes_in_buffer -= (size_t) num_bytes;
- }
- }
-}
-
-static void
-std_term_source(j_decompress_ptr cinfo)
-{
- /* No work necessary here */
- /* Or must we update tif->tif_rawcp, tif->tif_rawcc ??? */
- /* (if so, need empty tables_term_source!) */
- (void) cinfo;
-}
-
-static void
-TIFFjpeg_data_src(JPEGState* sp, TIFF* tif)
-{
- (void) tif;
- sp->cinfo.d.src = &sp->src;
- sp->src.init_source = std_init_source;
- sp->src.fill_input_buffer = std_fill_input_buffer;
- sp->src.skip_input_data = std_skip_input_data;
- sp->src.resync_to_restart = jpeg_resync_to_restart;
- sp->src.term_source = std_term_source;
- sp->src.bytes_in_buffer = 0; /* for safety */
- sp->src.next_input_byte = NULL;
-}
-
-/*
- * Alternate source manager for reading from JPEGTables.
- * We can share all the code except for the init routine.
- */
-
-static void
-tables_init_source(j_decompress_ptr cinfo)
-{
- JPEGState* sp = (JPEGState*) cinfo;
-
- sp->src.next_input_byte = (const JOCTET*) sp->jpegtables;
- sp->src.bytes_in_buffer = (size_t) sp->jpegtables_length;
-}
-
-static void
-TIFFjpeg_tables_src(JPEGState* sp, TIFF* tif)
-{
- TIFFjpeg_data_src(sp, tif);
- sp->src.init_source = tables_init_source;
-}
-
-/*
- * Allocate downsampled-data buffers needed for downsampled I/O.
- * We use values computed in jpeg_start_compress or jpeg_start_decompress.
- * We use libjpeg's allocator so that buffers will be released automatically
- * when done with strip/tile.
- * This is also a handy place to compute samplesperclump, bytesperline.
- */
-static int
-alloc_downsampled_buffers(TIFF* tif, jpeg_component_info* comp_info,
- int num_components)
-{
- JPEGState* sp = JState(tif);
- int ci;
- jpeg_component_info* compptr;
- JSAMPARRAY buf;
- int samples_per_clump = 0;
-
- for (ci = 0, compptr = comp_info; ci < num_components;
- ci++, compptr++) {
- samples_per_clump += compptr->h_samp_factor *
- compptr->v_samp_factor;
- buf = TIFFjpeg_alloc_sarray(sp, JPOOL_IMAGE,
- compptr->width_in_blocks * DCTSIZE,
- (JDIMENSION) (compptr->v_samp_factor*DCTSIZE));
- if (buf == NULL)
- return (0);
- sp->ds_buffer[ci] = buf;
- }
- sp->samplesperclump = samples_per_clump;
- return (1);
-}
-
-
-/*
- * JPEG Decoding.
- */
-
-static int
-JPEGSetupDecode(TIFF* tif)
-{
- JPEGState* sp = JState(tif);
- TIFFDirectory *td = &tif->tif_dir;
-
- JPEGInitializeLibJPEG( tif, 0, 1 );
-
- assert(sp != NULL);
- assert(sp->cinfo.comm.is_decompressor);
-
- /* Read JPEGTables if it is present */
- if (TIFFFieldSet(tif,FIELD_JPEGTABLES)) {
- TIFFjpeg_tables_src(sp, tif);
- if(TIFFjpeg_read_header(sp,FALSE) != JPEG_HEADER_TABLES_ONLY) {
- TIFFErrorExt(tif->tif_clientdata, "JPEGSetupDecode", "Bogus JPEGTables field");
- return (0);
- }
- }
-
- /* Grab parameters that are same for all strips/tiles */
- sp->photometric = td->td_photometric;
- switch (sp->photometric) {
- case PHOTOMETRIC_YCBCR:
- sp->h_sampling = td->td_ycbcrsubsampling[0];
- sp->v_sampling = td->td_ycbcrsubsampling[1];
- break;
- default:
- /* TIFF 6.0 forbids subsampling of all other color spaces */
- sp->h_sampling = 1;
- sp->v_sampling = 1;
- break;
- }
-
- /* Set up for reading normal data */
- TIFFjpeg_data_src(sp, tif);
- tif->tif_postdecode = _TIFFNoPostDecode; /* override byte swapping */
- return (1);
-}
-
-/*
- * Set up for decoding a strip or tile.
- */
-static int
-JPEGPreDecode(TIFF* tif, tsample_t s)
-{
- JPEGState *sp = JState(tif);
- TIFFDirectory *td = &tif->tif_dir;
- static const char module[] = "JPEGPreDecode";
- uint32 segment_width, segment_height;
- int downsampled_output;
- int ci;
-
- assert(sp != NULL);
- assert(sp->cinfo.comm.is_decompressor);
- /*
- * Reset decoder state from any previous strip/tile,
- * in case application didn't read the whole strip.
- */
- if (!TIFFjpeg_abort(sp))
- return (0);
- /*
- * Read the header for this strip/tile.
- */
- if (TIFFjpeg_read_header(sp, TRUE) != JPEG_HEADER_OK)
- return (0);
- /*
- * Check image parameters and set decompression parameters.
- */
- segment_width = td->td_imagewidth;
- segment_height = td->td_imagelength - tif->tif_row;
- if (isTiled(tif)) {
- segment_width = td->td_tilewidth;
- segment_height = td->td_tilelength;
- sp->bytesperline = TIFFTileRowSize(tif);
- } else {
- if (segment_height > td->td_rowsperstrip)
- segment_height = td->td_rowsperstrip;
- sp->bytesperline = TIFFOldScanlineSize(tif);
- }
- if (td->td_planarconfig == PLANARCONFIG_SEPARATE && s > 0) {
- /*
- * For PC 2, scale down the expected strip/tile size
- * to match a downsampled component
- */
- segment_width = TIFFhowmany(segment_width, sp->h_sampling);
- segment_height = TIFFhowmany(segment_height, sp->v_sampling);
- }
- if (sp->cinfo.d.image_width < segment_width ||
- sp->cinfo.d.image_height < segment_height) {
- TIFFWarningExt(tif->tif_clientdata, module,
- "Improper JPEG strip/tile size, "
- "expected %dx%d, got %dx%d",
- segment_width, segment_height,
- sp->cinfo.d.image_width,
- sp->cinfo.d.image_height);
- }
- if (sp->cinfo.d.image_width > segment_width ||
- sp->cinfo.d.image_height > segment_height) {
- /*
- * This case could be dangerous, if the strip or tile size has
- * been reported as less than the amount of data jpeg will
- * return, some potential security issues arise. Catch this
- * case and error out.
- */
- TIFFErrorExt(tif->tif_clientdata, module,
- "JPEG strip/tile size exceeds expected dimensions,"
- " expected %dx%d, got %dx%d",
- segment_width, segment_height,
- sp->cinfo.d.image_width, sp->cinfo.d.image_height);
- return (0);
- }
- if (sp->cinfo.d.num_components !=
- (td->td_planarconfig == PLANARCONFIG_CONTIG ?
- td->td_samplesperpixel : 1)) {
- TIFFErrorExt(tif->tif_clientdata, module, "Improper JPEG component count");
- return (0);
- }
-#ifdef JPEG_LIB_MK1
- if (12 != td->td_bitspersample && 8 != td->td_bitspersample) {
- TIFFErrorExt(tif->tif_clientdata, module, "Improper JPEG data precision");
- return (0);
- }
- sp->cinfo.d.data_precision = td->td_bitspersample;
- sp->cinfo.d.bits_in_jsample = td->td_bitspersample;
-#else
- if (sp->cinfo.d.data_precision != td->td_bitspersample) {
- TIFFErrorExt(tif->tif_clientdata, module, "Improper JPEG data precision");
- return (0);
- }
-#endif
- if (td->td_planarconfig == PLANARCONFIG_CONTIG) {
- /* Component 0 should have expected sampling factors */
- if (sp->cinfo.d.comp_info[0].h_samp_factor != sp->h_sampling ||
- sp->cinfo.d.comp_info[0].v_samp_factor != sp->v_sampling) {
- TIFFWarningExt(tif->tif_clientdata, module,
- "Improper JPEG sampling factors %d,%d\n"
- "Apparently should be %d,%d.",
- sp->cinfo.d.comp_info[0].h_samp_factor,
- sp->cinfo.d.comp_info[0].v_samp_factor,
- sp->h_sampling, sp->v_sampling);
-
- /*
- * There are potential security issues here
- * for decoders that have already allocated
- * buffers based on the expected sampling
- * factors. Lets check the sampling factors
- * dont exceed what we were expecting.
- */
- if (sp->cinfo.d.comp_info[0].h_samp_factor
- > sp->h_sampling
- || sp->cinfo.d.comp_info[0].v_samp_factor
- > sp->v_sampling) {
- TIFFErrorExt(tif->tif_clientdata,
- module,
- "Cannot honour JPEG sampling factors"
- " that exceed those specified.");
- return (0);
- }
-
- /*
- * XXX: Files written by the Intergraph software
- * has different sampling factors stored in the
- * TIFF tags and in the JPEG structures. We will
- * try to deduce Intergraph files by the presense
- * of the tag 33918.
- */
- if (!_TIFFFindFieldInfo(tif, 33918, TIFF_ANY)) {
- TIFFWarningExt(tif->tif_clientdata, module,
- "Decompressor will try reading with "
- "sampling %d,%d.",
- sp->cinfo.d.comp_info[0].h_samp_factor,
- sp->cinfo.d.comp_info[0].v_samp_factor);
-
- sp->h_sampling = (uint16)
- sp->cinfo.d.comp_info[0].h_samp_factor;
- sp->v_sampling = (uint16)
- sp->cinfo.d.comp_info[0].v_samp_factor;
- }
- }
- /* Rest should have sampling factors 1,1 */
- for (ci = 1; ci < sp->cinfo.d.num_components; ci++) {
- if (sp->cinfo.d.comp_info[ci].h_samp_factor != 1 ||
- sp->cinfo.d.comp_info[ci].v_samp_factor != 1) {
- TIFFErrorExt(tif->tif_clientdata, module, "Improper JPEG sampling factors");
- return (0);
- }
- }
- } else {
- /* PC 2's single component should have sampling factors 1,1 */
- if (sp->cinfo.d.comp_info[0].h_samp_factor != 1 ||
- sp->cinfo.d.comp_info[0].v_samp_factor != 1) {
- TIFFErrorExt(tif->tif_clientdata, module, "Improper JPEG sampling factors");
- return (0);
- }
- }
- downsampled_output = FALSE;
- if (td->td_planarconfig == PLANARCONFIG_CONTIG &&
- sp->photometric == PHOTOMETRIC_YCBCR &&
- sp->jpegcolormode == JPEGCOLORMODE_RGB) {
- /* Convert YCbCr to RGB */
- sp->cinfo.d.jpeg_color_space = JCS_YCbCr;
- sp->cinfo.d.out_color_space = JCS_RGB;
- } else {
- /* Suppress colorspace handling */
- sp->cinfo.d.jpeg_color_space = JCS_UNKNOWN;
- sp->cinfo.d.out_color_space = JCS_UNKNOWN;
- if (td->td_planarconfig == PLANARCONFIG_CONTIG &&
- (sp->h_sampling != 1 || sp->v_sampling != 1))
- downsampled_output = TRUE;
- /* XXX what about up-sampling? */
- }
- if (downsampled_output) {
- /* Need to use raw-data interface to libjpeg */
- sp->cinfo.d.raw_data_out = TRUE;
- tif->tif_decoderow = JPEGDecodeRaw;
- tif->tif_decodestrip = JPEGDecodeRaw;
- tif->tif_decodetile = JPEGDecodeRaw;
- } else {
- /* Use normal interface to libjpeg */
- sp->cinfo.d.raw_data_out = FALSE;
- tif->tif_decoderow = JPEGDecode;
- tif->tif_decodestrip = JPEGDecode;
- tif->tif_decodetile = JPEGDecode;
- }
- /* Start JPEG decompressor */
- if (!TIFFjpeg_start_decompress(sp))
- return (0);
- /* Allocate downsampled-data buffers if needed */
- if (downsampled_output) {
- if (!alloc_downsampled_buffers(tif, sp->cinfo.d.comp_info,
- sp->cinfo.d.num_components))
- return (0);
- sp->scancount = DCTSIZE; /* mark buffer empty */
- }
- return (1);
-}
-
-/*
- * Decode a chunk of pixels.
- * "Standard" case: returned data is not downsampled.
- */
-/*ARGSUSED*/ static int
-JPEGDecode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
-{
- JPEGState *sp = JState(tif);
- tsize_t nrows;
- (void) s;
-
- nrows = cc / sp->bytesperline;
- if (cc % sp->bytesperline)
- TIFFWarningExt(tif->tif_clientdata, tif->tif_name, "fractional scanline not read");
-
- if( nrows > (int) sp->cinfo.d.image_height )
- nrows = sp->cinfo.d.image_height;
-
- /* data is expected to be read in multiples of a scanline */
- if (nrows)
- {
- JSAMPROW line_work_buf = NULL;
-
- /*
- ** For 6B, only use temporary buffer for 12 bit imagery.
- ** For Mk1 always use it.
- */
-#if !defined(JPEG_LIB_MK1)
- if( sp->cinfo.d.data_precision == 12 )
-#endif
- {
- line_work_buf = (JSAMPROW)
- _TIFFmalloc(sizeof(short) * sp->cinfo.d.output_width
- * sp->cinfo.d.num_components );
- }
-
- do {
- if( line_work_buf != NULL )
- {
- /*
- ** In the MK1 case, we aways read into a 16bit buffer, and then
- ** pack down to 12bit or 8bit. In 6B case we only read into 16
- ** bit buffer for 12bit data, which we need to repack.
- */
- if (TIFFjpeg_read_scanlines(sp, &line_work_buf, 1) != 1)
- return (0);
-
- if( sp->cinfo.d.data_precision == 12 )
- {
- int value_pairs = (sp->cinfo.d.output_width
- * sp->cinfo.d.num_components) / 2;
- int iPair;
-
- for( iPair = 0; iPair < value_pairs; iPair++ )
- {
- unsigned char *out_ptr =
- ((unsigned char *) buf) + iPair * 3;
- JSAMPLE *in_ptr = line_work_buf + iPair * 2;
-
- out_ptr[0] = (in_ptr[0] & 0xff0) >> 4;
- out_ptr[1] = ((in_ptr[0] & 0xf) << 4)
- | ((in_ptr[1] & 0xf00) >> 8);
- out_ptr[2] = ((in_ptr[1] & 0xff) >> 0);
- }
- }
- else if( sp->cinfo.d.data_precision == 8 )
- {
- int value_count = (sp->cinfo.d.output_width
- * sp->cinfo.d.num_components);
- int iValue;
-
- for( iValue = 0; iValue < value_count; iValue++ )
- {
- ((unsigned char *) buf)[iValue] =
- line_work_buf[iValue] & 0xff;
- }
- }
- }
- else
- {
- /*
- ** In the libjpeg6b 8bit case. We read directly into the
- ** TIFF buffer.
- */
- JSAMPROW bufptr = (JSAMPROW)buf;
-
- if (TIFFjpeg_read_scanlines(sp, &bufptr, 1) != 1)
- return (0);
- }
-
- ++tif->tif_row;
- buf += sp->bytesperline;
- cc -= sp->bytesperline;
- } while (--nrows > 0);
-
- if( line_work_buf != NULL )
- _TIFFfree( line_work_buf );
- }
-
- /* Close down the decompressor if we've finished the strip or tile. */
- return sp->cinfo.d.output_scanline < sp->cinfo.d.output_height
- || TIFFjpeg_finish_decompress(sp);
-}
-
-/*
- * Decode a chunk of pixels.
- * Returned data is downsampled per sampling factors.
- */
-/*ARGSUSED*/ static int
-JPEGDecodeRaw(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
-{
- JPEGState *sp = JState(tif);
- tsize_t nrows;
- (void) s;
-
- /* data is expected to be read in multiples of a scanline */
- if ( (nrows = sp->cinfo.d.image_height) ) {
- /* Cb,Cr both have sampling factors 1, so this is correct */
- JDIMENSION clumps_per_line = sp->cinfo.d.comp_info[1].downsampled_width;
- int samples_per_clump = sp->samplesperclump;
-
-#ifdef JPEG_LIB_MK1
- unsigned short* tmpbuf = _TIFFmalloc(sizeof(unsigned short) *
- sp->cinfo.d.output_width *
- sp->cinfo.d.num_components);
-#endif
-
- do {
- jpeg_component_info *compptr;
- int ci, clumpoffset;
-
- /* Reload downsampled-data buffer if needed */
- if (sp->scancount >= DCTSIZE) {
- int n = sp->cinfo.d.max_v_samp_factor * DCTSIZE;
- if (TIFFjpeg_read_raw_data(sp, sp->ds_buffer, n) != n)
- return (0);
- sp->scancount = 0;
- }
- /*
- * Fastest way to unseparate data is to make one pass
- * over the scanline for each row of each component.
- */
- clumpoffset = 0; /* first sample in clump */
- for (ci = 0, compptr = sp->cinfo.d.comp_info;
- ci < sp->cinfo.d.num_components;
- ci++, compptr++) {
- int hsamp = compptr->h_samp_factor;
- int vsamp = compptr->v_samp_factor;
- int ypos;
-
- for (ypos = 0; ypos < vsamp; ypos++) {
- JSAMPLE *inptr = sp->ds_buffer[ci][sp->scancount*vsamp + ypos];
-#ifdef JPEG_LIB_MK1
- JSAMPLE *outptr = (JSAMPLE*)tmpbuf + clumpoffset;
-#else
- JSAMPLE *outptr = (JSAMPLE*)buf + clumpoffset;
-#endif
- JDIMENSION nclump;
-
- if (hsamp == 1) {
- /* fast path for at least Cb and Cr */
- for (nclump = clumps_per_line; nclump-- > 0; ) {
- outptr[0] = *inptr++;
- outptr += samples_per_clump;
- }
- } else {
- int xpos;
-
- /* general case */
- for (nclump = clumps_per_line; nclump-- > 0; ) {
- for (xpos = 0; xpos < hsamp; xpos++)
- outptr[xpos] = *inptr++;
- outptr += samples_per_clump;
- }
- }
- clumpoffset += hsamp;
- }
- }
-
-#ifdef JPEG_LIB_MK1
- {
- if (sp->cinfo.d.data_precision == 8)
- {
- int i=0;
- int len = sp->cinfo.d.output_width * sp->cinfo.d.num_components;
- for (i=0; i<len; i++)
- {
- ((unsigned char*)buf)[i] = tmpbuf[i] & 0xff;
- }
- }
- else
- { // 12-bit
- int value_pairs = (sp->cinfo.d.output_width
- * sp->cinfo.d.num_components) / 2;
- int iPair;
- for( iPair = 0; iPair < value_pairs; iPair++ )
- {
- unsigned char *out_ptr = ((unsigned char *) buf) + iPair * 3;
- JSAMPLE *in_ptr = tmpbuf + iPair * 2;
- out_ptr[0] = (in_ptr[0] & 0xff0) >> 4;
- out_ptr[1] = ((in_ptr[0] & 0xf) << 4)
- | ((in_ptr[1] & 0xf00) >> 8);
- out_ptr[2] = ((in_ptr[1] & 0xff) >> 0);
- }
- }
- }
-#endif
-
- sp->scancount ++;
- tif->tif_row += sp->v_sampling;
- /* increment/decrement of buf and cc is still incorrect, but should not matter
- * TODO: resolve this */
- buf += sp->bytesperline;
- cc -= sp->bytesperline;
- nrows -= sp->v_sampling;
- } while (nrows > 0);
-
-#ifdef JPEG_LIB_MK1
- _TIFFfree(tmpbuf);
-#endif
-
- }
-
- /* Close down the decompressor if done. */
- return sp->cinfo.d.output_scanline < sp->cinfo.d.output_height
- || TIFFjpeg_finish_decompress(sp);
-}
-
-
-/*
- * JPEG Encoding.
- */
-
-static void
-unsuppress_quant_table (JPEGState* sp, int tblno)
-{
- JQUANT_TBL* qtbl;
-
- if ((qtbl = sp->cinfo.c.quant_tbl_ptrs[tblno]) != NULL)
- qtbl->sent_table = FALSE;
-}
-
-static void
-unsuppress_huff_table (JPEGState* sp, int tblno)
-{
- JHUFF_TBL* htbl;
-
- if ((htbl = sp->cinfo.c.dc_huff_tbl_ptrs[tblno]) != NULL)
- htbl->sent_table = FALSE;
- if ((htbl = sp->cinfo.c.ac_huff_tbl_ptrs[tblno]) != NULL)
- htbl->sent_table = FALSE;
-}
-
-static int
-prepare_JPEGTables(TIFF* tif)
-{
- JPEGState* sp = JState(tif);
-
- JPEGInitializeLibJPEG( tif, 0, 0 );
-
- /* Initialize quant tables for current quality setting */
- if (!TIFFjpeg_set_quality(sp, sp->jpegquality, FALSE))
- return (0);
- /* Mark only the tables we want for output */
- /* NB: chrominance tables are currently used only with YCbCr */
- if (!TIFFjpeg_suppress_tables(sp, TRUE))
- return (0);
- if (sp->jpegtablesmode & JPEGTABLESMODE_QUANT) {
- unsuppress_quant_table(sp, 0);
- if (sp->photometric == PHOTOMETRIC_YCBCR)
- unsuppress_quant_table(sp, 1);
- }
- if (sp->jpegtablesmode & JPEGTABLESMODE_HUFF) {
- unsuppress_huff_table(sp, 0);
- if (sp->photometric == PHOTOMETRIC_YCBCR)
- unsuppress_huff_table(sp, 1);
- }
- /* Direct libjpeg output into jpegtables */
- if (!TIFFjpeg_tables_dest(sp, tif))
- return (0);
- /* Emit tables-only datastream */
- if (!TIFFjpeg_write_tables(sp))
- return (0);
-
- return (1);
-}
-
-static int
-JPEGSetupEncode(TIFF* tif)
-{
- JPEGState* sp = JState(tif);
- TIFFDirectory *td = &tif->tif_dir;
- static const char module[] = "JPEGSetupEncode";
-
- JPEGInitializeLibJPEG( tif, 1, 0 );
-
- assert(sp != NULL);
- assert(!sp->cinfo.comm.is_decompressor);
-
- /*
- * Initialize all JPEG parameters to default values.
- * Note that jpeg_set_defaults needs legal values for
- * in_color_space and input_components.
- */
- sp->cinfo.c.in_color_space = JCS_UNKNOWN;
- sp->cinfo.c.input_components = 1;
- if (!TIFFjpeg_set_defaults(sp))
- return (0);
- /* Set per-file parameters */
- sp->photometric = td->td_photometric;
- switch (sp->photometric) {
- case PHOTOMETRIC_YCBCR:
- sp->h_sampling = td->td_ycbcrsubsampling[0];
- sp->v_sampling = td->td_ycbcrsubsampling[1];
- /*
- * A ReferenceBlackWhite field *must* be present since the
- * default value is inappropriate for YCbCr. Fill in the
- * proper value if application didn't set it.
- */
- {
- float *ref;
- if (!TIFFGetField(tif, TIFFTAG_REFERENCEBLACKWHITE,
- &ref)) {
- float refbw[6];
- long top = 1L << td->td_bitspersample;
- refbw[0] = 0;
- refbw[1] = (float)(top-1L);
- refbw[2] = (float)(top>>1);
- refbw[3] = refbw[1];
- refbw[4] = refbw[2];
- refbw[5] = refbw[1];
- TIFFSetField(tif, TIFFTAG_REFERENCEBLACKWHITE,
- refbw);
- }
- }
- break;
- case PHOTOMETRIC_PALETTE: /* disallowed by Tech Note */
- case PHOTOMETRIC_MASK:
- TIFFErrorExt(tif->tif_clientdata, module,
- "PhotometricInterpretation %d not allowed for JPEG",
- (int) sp->photometric);
- return (0);
- default:
- /* TIFF 6.0 forbids subsampling of all other color spaces */
- sp->h_sampling = 1;
- sp->v_sampling = 1;
- break;
- }
-
- /* Verify miscellaneous parameters */
-
- /*
- * This would need work if libtiff ever supports different
- * depths for different components, or if libjpeg ever supports
- * run-time selection of depth. Neither is imminent.
- */
-#ifdef JPEG_LIB_MK1
- /* BITS_IN_JSAMPLE now permits 8 and 12 --- dgilbert */
- if (td->td_bitspersample != 8 && td->td_bitspersample != 12)
-#else
- if (td->td_bitspersample != BITS_IN_JSAMPLE )
-#endif
- {
- TIFFErrorExt(tif->tif_clientdata, module, "BitsPerSample %d not allowed for JPEG",
- (int) td->td_bitspersample);
- return (0);
- }
- sp->cinfo.c.data_precision = td->td_bitspersample;
-#ifdef JPEG_LIB_MK1
- sp->cinfo.c.bits_in_jsample = td->td_bitspersample;
-#endif
- if (isTiled(tif)) {
- if ((td->td_tilelength % (sp->v_sampling * DCTSIZE)) != 0) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "JPEG tile height must be multiple of %d",
- sp->v_sampling * DCTSIZE);
- return (0);
- }
- if ((td->td_tilewidth % (sp->h_sampling * DCTSIZE)) != 0) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "JPEG tile width must be multiple of %d",
- sp->h_sampling * DCTSIZE);
- return (0);
- }
- } else {
- if (td->td_rowsperstrip < td->td_imagelength &&
- (td->td_rowsperstrip % (sp->v_sampling * DCTSIZE)) != 0) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "RowsPerStrip must be multiple of %d for JPEG",
- sp->v_sampling * DCTSIZE);
- return (0);
- }
- }
-
- /* Create a JPEGTables field if appropriate */
- if (sp->jpegtablesmode & (JPEGTABLESMODE_QUANT|JPEGTABLESMODE_HUFF)) {
- if (!prepare_JPEGTables(tif))
- return (0);
- /* Mark the field present */
- /* Can't use TIFFSetField since BEENWRITING is already set! */
- TIFFSetFieldBit(tif, FIELD_JPEGTABLES);
- tif->tif_flags |= TIFF_DIRTYDIRECT;
- } else {
- /* We do not support application-supplied JPEGTables, */
- /* so mark the field not present */
- TIFFClrFieldBit(tif, FIELD_JPEGTABLES);
- }
-
- /* Direct libjpeg output to libtiff's output buffer */
- TIFFjpeg_data_dest(sp, tif);
-
- return (1);
-}
-
-/*
- * Set encoding state at the start of a strip or tile.
- */
-static int
-JPEGPreEncode(TIFF* tif, tsample_t s)
-{
- JPEGState *sp = JState(tif);
- TIFFDirectory *td = &tif->tif_dir;
- static const char module[] = "JPEGPreEncode";
- uint32 segment_width, segment_height;
- int downsampled_input;
-
- assert(sp != NULL);
- assert(!sp->cinfo.comm.is_decompressor);
- /*
- * Set encoding parameters for this strip/tile.
- */
- if (isTiled(tif)) {
- segment_width = td->td_tilewidth;
- segment_height = td->td_tilelength;
- sp->bytesperline = TIFFTileRowSize(tif);
- } else {
- segment_width = td->td_imagewidth;
- segment_height = td->td_imagelength - tif->tif_row;
- if (segment_height > td->td_rowsperstrip)
- segment_height = td->td_rowsperstrip;
- sp->bytesperline = TIFFOldScanlineSize(tif);
- }
- if (td->td_planarconfig == PLANARCONFIG_SEPARATE && s > 0) {
- /* for PC 2, scale down the strip/tile size
- * to match a downsampled component
- */
- segment_width = TIFFhowmany(segment_width, sp->h_sampling);
- segment_height = TIFFhowmany(segment_height, sp->v_sampling);
- }
- if (segment_width > 65535 || segment_height > 65535) {
- TIFFErrorExt(tif->tif_clientdata, module, "Strip/tile too large for JPEG");
- return (0);
- }
- sp->cinfo.c.image_width = segment_width;
- sp->cinfo.c.image_height = segment_height;
- downsampled_input = FALSE;
- if (td->td_planarconfig == PLANARCONFIG_CONTIG) {
- sp->cinfo.c.input_components = td->td_samplesperpixel;
- if (sp->photometric == PHOTOMETRIC_YCBCR) {
- if (sp->jpegcolormode == JPEGCOLORMODE_RGB) {
- sp->cinfo.c.in_color_space = JCS_RGB;
- } else {
- sp->cinfo.c.in_color_space = JCS_YCbCr;
- if (sp->h_sampling != 1 || sp->v_sampling != 1)
- downsampled_input = TRUE;
- }
- if (!TIFFjpeg_set_colorspace(sp, JCS_YCbCr))
- return (0);
- /*
- * Set Y sampling factors;
- * we assume jpeg_set_colorspace() set the rest to 1
- */
- sp->cinfo.c.comp_info[0].h_samp_factor = sp->h_sampling;
- sp->cinfo.c.comp_info[0].v_samp_factor = sp->v_sampling;
- } else {
- sp->cinfo.c.in_color_space = JCS_UNKNOWN;
- if (!TIFFjpeg_set_colorspace(sp, JCS_UNKNOWN))
- return (0);
- /* jpeg_set_colorspace set all sampling factors to 1 */
- }
- } else {
- sp->cinfo.c.input_components = 1;
- sp->cinfo.c.in_color_space = JCS_UNKNOWN;
- if (!TIFFjpeg_set_colorspace(sp, JCS_UNKNOWN))
- return (0);
- sp->cinfo.c.comp_info[0].component_id = s;
- /* jpeg_set_colorspace() set sampling factors to 1 */
- if (sp->photometric == PHOTOMETRIC_YCBCR && s > 0) {
- sp->cinfo.c.comp_info[0].quant_tbl_no = 1;
- sp->cinfo.c.comp_info[0].dc_tbl_no = 1;
- sp->cinfo.c.comp_info[0].ac_tbl_no = 1;
- }
- }
- /* ensure libjpeg won't write any extraneous markers */
- sp->cinfo.c.write_JFIF_header = FALSE;
- sp->cinfo.c.write_Adobe_marker = FALSE;
- /* set up table handling correctly */
- if (! (sp->jpegtablesmode & JPEGTABLESMODE_QUANT)) {
- if (!TIFFjpeg_set_quality(sp, sp->jpegquality, FALSE))
- return (0);
- unsuppress_quant_table(sp, 0);
- unsuppress_quant_table(sp, 1);
- }
- if (sp->jpegtablesmode & JPEGTABLESMODE_HUFF)
- sp->cinfo.c.optimize_coding = FALSE;
- else
- sp->cinfo.c.optimize_coding = TRUE;
- if (downsampled_input) {
- /* Need to use raw-data interface to libjpeg */
- sp->cinfo.c.raw_data_in = TRUE;
- tif->tif_encoderow = JPEGEncodeRaw;
- tif->tif_encodestrip = JPEGEncodeRaw;
- tif->tif_encodetile = JPEGEncodeRaw;
- } else {
- /* Use normal interface to libjpeg */
- sp->cinfo.c.raw_data_in = FALSE;
- tif->tif_encoderow = JPEGEncode;
- tif->tif_encodestrip = JPEGEncode;
- tif->tif_encodetile = JPEGEncode;
- }
- /* Start JPEG compressor */
- if (!TIFFjpeg_start_compress(sp, FALSE))
- return (0);
- /* Allocate downsampled-data buffers if needed */
- if (downsampled_input) {
- if (!alloc_downsampled_buffers(tif, sp->cinfo.c.comp_info,
- sp->cinfo.c.num_components))
- return (0);
- }
- sp->scancount = 0;
-
- return (1);
-}
-
-/*
- * Encode a chunk of pixels.
- * "Standard" case: incoming data is not downsampled.
- */
-static int
-JPEGEncode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
-{
- JPEGState *sp = JState(tif);
- tsize_t nrows;
- JSAMPROW bufptr[1];
-
- (void) s;
- assert(sp != NULL);
- /* data is expected to be supplied in multiples of a scanline */
- nrows = cc / sp->bytesperline;
- if (cc % sp->bytesperline)
- TIFFWarningExt(tif->tif_clientdata, tif->tif_name, "fractional scanline discarded");
-
- /* The last strip will be limited to image size */
- if( !isTiled(tif) && tif->tif_row+nrows > tif->tif_dir.td_imagelength )
- nrows = tif->tif_dir.td_imagelength - tif->tif_row;
-
- while (nrows-- > 0) {
- bufptr[0] = (JSAMPROW) buf;
- if (TIFFjpeg_write_scanlines(sp, bufptr, 1) != 1)
- return (0);
- if (nrows > 0)
- tif->tif_row++;
- buf += sp->bytesperline;
- }
- return (1);
-}
-
-/*
- * Encode a chunk of pixels.
- * Incoming data is expected to be downsampled per sampling factors.
- */
-static int
-JPEGEncodeRaw(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
-{
- JPEGState *sp = JState(tif);
- JSAMPLE* inptr;
- JSAMPLE* outptr;
- tsize_t nrows;
- JDIMENSION clumps_per_line, nclump;
- int clumpoffset, ci, xpos, ypos;
- jpeg_component_info* compptr;
- int samples_per_clump = sp->samplesperclump;
- tsize_t bytesperclumpline;
-
- (void) s;
- assert(sp != NULL);
- /* data is expected to be supplied in multiples of a clumpline */
- /* a clumpline is equivalent to v_sampling desubsampled scanlines */
- /* TODO: the following calculation of bytesperclumpline, should substitute calculation of sp->bytesperline, except that it is per v_sampling lines */
- bytesperclumpline = (((sp->cinfo.c.image_width+sp->h_sampling-1)/sp->h_sampling)
- *(sp->h_sampling*sp->v_sampling+2)*sp->cinfo.c.data_precision+7)
- /8;
-
- nrows = ( cc / bytesperclumpline ) * sp->v_sampling;
- if (cc % bytesperclumpline)
- TIFFWarningExt(tif->tif_clientdata, tif->tif_name, "fractional scanline discarded");
-
- /* Cb,Cr both have sampling factors 1, so this is correct */
- clumps_per_line = sp->cinfo.c.comp_info[1].downsampled_width;
-
- while (nrows > 0) {
- /*
- * Fastest way to separate the data is to make one pass
- * over the scanline for each row of each component.
- */
- clumpoffset = 0; /* first sample in clump */
- for (ci = 0, compptr = sp->cinfo.c.comp_info;
- ci < sp->cinfo.c.num_components;
- ci++, compptr++) {
- int hsamp = compptr->h_samp_factor;
- int vsamp = compptr->v_samp_factor;
- int padding = (int) (compptr->width_in_blocks * DCTSIZE -
- clumps_per_line * hsamp);
- for (ypos = 0; ypos < vsamp; ypos++) {
- inptr = ((JSAMPLE*) buf) + clumpoffset;
- outptr = sp->ds_buffer[ci][sp->scancount*vsamp + ypos];
- if (hsamp == 1) {
- /* fast path for at least Cb and Cr */
- for (nclump = clumps_per_line; nclump-- > 0; ) {
- *outptr++ = inptr[0];
- inptr += samples_per_clump;
- }
- } else {
- /* general case */
- for (nclump = clumps_per_line; nclump-- > 0; ) {
- for (xpos = 0; xpos < hsamp; xpos++)
- *outptr++ = inptr[xpos];
- inptr += samples_per_clump;
- }
- }
- /* pad each scanline as needed */
- for (xpos = 0; xpos < padding; xpos++) {
- *outptr = outptr[-1];
- outptr++;
- }
- clumpoffset += hsamp;
- }
- }
- sp->scancount++;
- if (sp->scancount >= DCTSIZE) {
- int n = sp->cinfo.c.max_v_samp_factor * DCTSIZE;
- if (TIFFjpeg_write_raw_data(sp, sp->ds_buffer, n) != n)
- return (0);
- sp->scancount = 0;
- }
- tif->tif_row += sp->v_sampling;
- buf += sp->bytesperline;
- nrows -= sp->v_sampling;
- }
- return (1);
-}
-
-/*
- * Finish up at the end of a strip or tile.
- */
-static int
-JPEGPostEncode(TIFF* tif)
-{
- JPEGState *sp = JState(tif);
-
- if (sp->scancount > 0) {
- /*
- * Need to emit a partial bufferload of downsampled data.
- * Pad the data vertically.
- */
- int ci, ypos, n;
- jpeg_component_info* compptr;
-
- for (ci = 0, compptr = sp->cinfo.c.comp_info;
- ci < sp->cinfo.c.num_components;
- ci++, compptr++) {
- int vsamp = compptr->v_samp_factor;
- tsize_t row_width = compptr->width_in_blocks * DCTSIZE
- * sizeof(JSAMPLE);
- for (ypos = sp->scancount * vsamp;
- ypos < DCTSIZE * vsamp; ypos++) {
- _TIFFmemcpy((tdata_t)sp->ds_buffer[ci][ypos],
- (tdata_t)sp->ds_buffer[ci][ypos-1],
- row_width);
-
- }
- }
- n = sp->cinfo.c.max_v_samp_factor * DCTSIZE;
- if (TIFFjpeg_write_raw_data(sp, sp->ds_buffer, n) != n)
- return (0);
- }
-
- return (TIFFjpeg_finish_compress(JState(tif)));
-}
-
-static void
-JPEGCleanup(TIFF* tif)
-{
- JPEGState *sp = JState(tif);
-
- assert(sp != 0);
-
- tif->tif_tagmethods.vgetfield = sp->vgetparent;
- tif->tif_tagmethods.vsetfield = sp->vsetparent;
- tif->tif_tagmethods.printdir = sp->printdir;
-
- if( sp->cinfo_initialized )
- TIFFjpeg_destroy(sp); /* release libjpeg resources */
- if (sp->jpegtables) /* tag value */
- _TIFFfree(sp->jpegtables);
- _TIFFfree(tif->tif_data); /* release local state */
- tif->tif_data = NULL;
-
- _TIFFSetDefaultCompressionState(tif);
-}
-
-static void
-JPEGResetUpsampled( TIFF* tif )
-{
- JPEGState* sp = JState(tif);
- TIFFDirectory* td = &tif->tif_dir;
-
- /*
- * Mark whether returned data is up-sampled or not so TIFFStripSize
- * and TIFFTileSize return values that reflect the true amount of
- * data.
- */
- tif->tif_flags &= ~TIFF_UPSAMPLED;
- if (td->td_planarconfig == PLANARCONFIG_CONTIG) {
- if (td->td_photometric == PHOTOMETRIC_YCBCR &&
- sp->jpegcolormode == JPEGCOLORMODE_RGB) {
- tif->tif_flags |= TIFF_UPSAMPLED;
- } else {
-#ifdef notdef
- if (td->td_ycbcrsubsampling[0] != 1 ||
- td->td_ycbcrsubsampling[1] != 1)
- ; /* XXX what about up-sampling? */
-#endif
- }
- }
-
- /*
- * Must recalculate cached tile size in case sampling state changed.
- * Should we really be doing this now if image size isn't set?
- */
- tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;
-}
-
-static int
-JPEGVSetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- JPEGState* sp = JState(tif);
- const TIFFFieldInfo* fip;
- uint32 v32;
-
- assert(sp != NULL);
-
- switch (tag) {
- case TIFFTAG_JPEGTABLES:
- v32 = va_arg(ap, uint32);
- if (v32 == 0) {
- /* XXX */
- return (0);
- }
- _TIFFsetByteArray(&sp->jpegtables, va_arg(ap, void*),
- (long) v32);
- sp->jpegtables_length = v32;
- TIFFSetFieldBit(tif, FIELD_JPEGTABLES);
- break;
- case TIFFTAG_JPEGQUALITY:
- sp->jpegquality = va_arg(ap, int);
- return (1); /* pseudo tag */
- case TIFFTAG_JPEGCOLORMODE:
- sp->jpegcolormode = va_arg(ap, int);
- JPEGResetUpsampled( tif );
- return (1); /* pseudo tag */
- case TIFFTAG_PHOTOMETRIC:
- {
- int ret_value = (*sp->vsetparent)(tif, tag, ap);
- JPEGResetUpsampled( tif );
- return ret_value;
- }
- case TIFFTAG_JPEGTABLESMODE:
- sp->jpegtablesmode = va_arg(ap, int);
- return (1); /* pseudo tag */
- case TIFFTAG_YCBCRSUBSAMPLING:
- /* mark the fact that we have a real ycbcrsubsampling! */
- sp->ycbcrsampling_fetched = 1;
- /* should we be recomputing upsampling info here? */
- return (*sp->vsetparent)(tif, tag, ap);
- case TIFFTAG_FAXRECVPARAMS:
- sp->recvparams = va_arg(ap, uint32);
- break;
- case TIFFTAG_FAXSUBADDRESS:
- _TIFFsetString(&sp->subaddress, va_arg(ap, char*));
- break;
- case TIFFTAG_FAXRECVTIME:
- sp->recvtime = va_arg(ap, uint32);
- break;
- case TIFFTAG_FAXDCS:
- _TIFFsetString(&sp->faxdcs, va_arg(ap, char*));
- break;
- default:
- return (*sp->vsetparent)(tif, tag, ap);
- }
-
- if ((fip = _TIFFFieldWithTag(tif, tag))) {
- TIFFSetFieldBit(tif, fip->field_bit);
- } else {
- return (0);
- }
-
- tif->tif_flags |= TIFF_DIRTYDIRECT;
- return (1);
-}
-
-/*
- * Some JPEG-in-TIFF produces do not emit the YCBCRSUBSAMPLING values in
- * the TIFF tags, but still use non-default (2,2) values within the jpeg
- * data stream itself. In order for TIFF applications to work properly
- * - for instance to get the strip buffer size right - it is imperative
- * that the subsampling be available before we start reading the image
- * data normally. This function will attempt to load the first strip in
- * order to get the sampling values from the jpeg data stream. Various
- * hacks are various places are done to ensure this function gets called
- * before the td_ycbcrsubsampling values are used from the directory structure,
- * including calling TIFFGetField() for the YCBCRSUBSAMPLING field from
- * TIFFStripSize(), and the printing code in tif_print.c.
- *
- * Note that JPEGPreDeocode() will produce a fairly loud warning when the
- * discovered sampling does not match the default sampling (2,2) or whatever
- * was actually in the tiff tags.
- *
- * Problems:
- * o This code will cause one whole strip/tile of compressed data to be
- * loaded just to get the tags right, even if the imagery is never read.
- * It would be more efficient to just load a bit of the header, and
- * initialize things from that.
- *
- * See the bug in bugzilla for details:
- *
- * http://bugzilla.remotesensing.org/show_bug.cgi?id=168
- *
- * Frank Warmerdam, July 2002
- */
-
-static void
-JPEGFixupTestSubsampling( TIFF * tif )
-{
-#ifdef CHECK_JPEG_YCBCR_SUBSAMPLING
- JPEGState *sp = JState(tif);
- TIFFDirectory *td = &tif->tif_dir;
-
- JPEGInitializeLibJPEG( tif, 0, 0 );
-
- /*
- * Some JPEG-in-TIFF files don't provide the ycbcrsampling tags,
- * and use a sampling schema other than the default 2,2. To handle
- * this we actually have to scan the header of a strip or tile of
- * jpeg data to get the sampling.
- */
- if( !sp->cinfo.comm.is_decompressor
- || sp->ycbcrsampling_fetched
- || td->td_photometric != PHOTOMETRIC_YCBCR )
- return;
-
- sp->ycbcrsampling_fetched = 1;
- if( TIFFIsTiled( tif ) )
- {
- if( !TIFFFillTile( tif, 0 ) )
- return;
- }
- else
- {
- if( !TIFFFillStrip( tif, 0 ) )
- return;
- }
-
- TIFFSetField( tif, TIFFTAG_YCBCRSUBSAMPLING,
- (uint16) sp->h_sampling, (uint16) sp->v_sampling );
-#endif /* CHECK_JPEG_YCBCR_SUBSAMPLING */
-}
-
-static int
-JPEGVGetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- JPEGState* sp = JState(tif);
-
- assert(sp != NULL);
-
- switch (tag) {
- case TIFFTAG_JPEGTABLES:
- *va_arg(ap, uint32*) = sp->jpegtables_length;
- *va_arg(ap, void**) = sp->jpegtables;
- break;
- case TIFFTAG_JPEGQUALITY:
- *va_arg(ap, int*) = sp->jpegquality;
- break;
- case TIFFTAG_JPEGCOLORMODE:
- *va_arg(ap, int*) = sp->jpegcolormode;
- break;
- case TIFFTAG_JPEGTABLESMODE:
- *va_arg(ap, int*) = sp->jpegtablesmode;
- break;
- case TIFFTAG_YCBCRSUBSAMPLING:
- JPEGFixupTestSubsampling( tif );
- return (*sp->vgetparent)(tif, tag, ap);
- case TIFFTAG_FAXRECVPARAMS:
- *va_arg(ap, uint32*) = sp->recvparams;
- break;
- case TIFFTAG_FAXSUBADDRESS:
- *va_arg(ap, char**) = sp->subaddress;
- break;
- case TIFFTAG_FAXRECVTIME:
- *va_arg(ap, uint32*) = sp->recvtime;
- break;
- case TIFFTAG_FAXDCS:
- *va_arg(ap, char**) = sp->faxdcs;
- break;
- default:
- return (*sp->vgetparent)(tif, tag, ap);
- }
- return (1);
-}
-
-static void
-JPEGPrintDir(TIFF* tif, FILE* fd, long flags)
-{
- JPEGState* sp = JState(tif);
-
- assert(sp != NULL);
-
- (void) flags;
- if (TIFFFieldSet(tif,FIELD_JPEGTABLES))
- fprintf(fd, " JPEG Tables: (%lu bytes)\n",
- (unsigned long) sp->jpegtables_length);
- if (TIFFFieldSet(tif,FIELD_RECVPARAMS))
- fprintf(fd, " Fax Receive Parameters: %08lx\n",
- (unsigned long) sp->recvparams);
- if (TIFFFieldSet(tif,FIELD_SUBADDRESS))
- fprintf(fd, " Fax SubAddress: %s\n", sp->subaddress);
- if (TIFFFieldSet(tif,FIELD_RECVTIME))
- fprintf(fd, " Fax Receive Time: %lu secs\n",
- (unsigned long) sp->recvtime);
- if (TIFFFieldSet(tif,FIELD_FAXDCS))
- fprintf(fd, " Fax DCS: %s\n", sp->faxdcs);
-}
-
-static uint32
-JPEGDefaultStripSize(TIFF* tif, uint32 s)
-{
- JPEGState* sp = JState(tif);
- TIFFDirectory *td = &tif->tif_dir;
-
- s = (*sp->defsparent)(tif, s);
- if (s < td->td_imagelength)
- s = TIFFroundup(s, td->td_ycbcrsubsampling[1] * DCTSIZE);
- return (s);
-}
-
-static void
-JPEGDefaultTileSize(TIFF* tif, uint32* tw, uint32* th)
-{
- JPEGState* sp = JState(tif);
- TIFFDirectory *td = &tif->tif_dir;
-
- (*sp->deftparent)(tif, tw, th);
- *tw = TIFFroundup(*tw, td->td_ycbcrsubsampling[0] * DCTSIZE);
- *th = TIFFroundup(*th, td->td_ycbcrsubsampling[1] * DCTSIZE);
-}
-
-/*
- * The JPEG library initialized used to be done in TIFFInitJPEG(), but
- * now that we allow a TIFF file to be opened in update mode it is necessary
- * to have some way of deciding whether compression or decompression is
- * desired other than looking at tif->tif_mode. We accomplish this by
- * examining {TILE/STRIP}BYTECOUNTS to see if there is a non-zero entry.
- * If so, we assume decompression is desired.
- *
- * This is tricky, because TIFFInitJPEG() is called while the directory is
- * being read, and generally speaking the BYTECOUNTS tag won't have been read
- * at that point. So we try to defer jpeg library initialization till we
- * do have that tag ... basically any access that might require the compressor
- * or decompressor that occurs after the reading of the directory.
- *
- * In an ideal world compressors or decompressors would be setup
- * at the point where a single tile or strip was accessed (for read or write)
- * so that stuff like update of missing tiles, or replacement of tiles could
- * be done. However, we aren't trying to crack that nut just yet ...
- *
- * NFW, Feb 3rd, 2003.
- */
-
-static int JPEGInitializeLibJPEG( TIFF * tif, int force_encode, int force_decode )
-{
- JPEGState* sp = JState(tif);
- uint32 *byte_counts = NULL;
- int data_is_empty = TRUE;
- int decompress;
-
-
- if(sp->cinfo_initialized)
- {
- if( force_encode && sp->cinfo.comm.is_decompressor )
- TIFFjpeg_destroy( sp );
- else if( force_decode && !sp->cinfo.comm.is_decompressor )
- TIFFjpeg_destroy( sp );
- else
- return 1;
-
- sp->cinfo_initialized = 0;
- }
-
- /*
- * Do we have tile data already? Make sure we initialize the
- * the state in decompressor mode if we have tile data, even if we
- * are not in read-only file access mode.
- */
- if( TIFFIsTiled( tif )
- && TIFFGetField( tif, TIFFTAG_TILEBYTECOUNTS, &byte_counts )
- && byte_counts != NULL )
- {
- data_is_empty = byte_counts[0] == 0;
- }
- if( !TIFFIsTiled( tif )
- && TIFFGetField( tif, TIFFTAG_STRIPBYTECOUNTS, &byte_counts)
- && byte_counts != NULL )
- {
- data_is_empty = byte_counts[0] == 0;
- }
-
- if( force_decode )
- decompress = 1;
- else if( force_encode )
- decompress = 0;
- else if( tif->tif_mode == O_RDONLY )
- decompress = 1;
- else if( data_is_empty )
- decompress = 0;
- else
- decompress = 1;
-
- /*
- * Initialize libjpeg.
- */
- if ( decompress ) {
- if (!TIFFjpeg_create_decompress(sp))
- return (0);
-
- } else {
- if (!TIFFjpeg_create_compress(sp))
- return (0);
- }
-
- sp->cinfo_initialized = TRUE;
-
- return 1;
-}
-
-int
-TIFFInitJPEG(TIFF* tif, int scheme)
-{
- JPEGState* sp;
-
- assert(scheme == COMPRESSION_JPEG);
-
- /*
- * Merge codec-specific tag information.
- */
- if (!_TIFFMergeFieldInfo(tif, jpegFieldInfo, N(jpegFieldInfo))) {
- TIFFErrorExt(tif->tif_clientdata,
- "TIFFInitJPEG",
- "Merging JPEG codec-specific tags failed");
- return 0;
- }
-
- /*
- * Allocate state block so tag methods have storage to record values.
- */
- tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (JPEGState));
-
- if (tif->tif_data == NULL) {
- TIFFErrorExt(tif->tif_clientdata,
- "TIFFInitJPEG", "No space for JPEG state block");
- return 0;
- }
- _TIFFmemset(tif->tif_data, 0, sizeof(JPEGState));
-
- sp = JState(tif);
- sp->tif = tif; /* back link */
-
- /*
- * Override parent get/set field methods.
- */
- sp->vgetparent = tif->tif_tagmethods.vgetfield;
- tif->tif_tagmethods.vgetfield = JPEGVGetField; /* hook for codec tags */
- sp->vsetparent = tif->tif_tagmethods.vsetfield;
- tif->tif_tagmethods.vsetfield = JPEGVSetField; /* hook for codec tags */
- sp->printdir = tif->tif_tagmethods.printdir;
- tif->tif_tagmethods.printdir = JPEGPrintDir; /* hook for codec tags */
-
- /* Default values for codec-specific fields */
- sp->jpegtables = NULL;
- sp->jpegtables_length = 0;
- sp->jpegquality = 75; /* Default IJG quality */
- sp->jpegcolormode = JPEGCOLORMODE_RAW;
- sp->jpegtablesmode = JPEGTABLESMODE_QUANT | JPEGTABLESMODE_HUFF;
-
- sp->recvparams = 0;
- sp->subaddress = NULL;
- sp->faxdcs = NULL;
-
- sp->ycbcrsampling_fetched = 0;
-
- /*
- * Install codec methods.
- */
- tif->tif_setupdecode = JPEGSetupDecode;
- tif->tif_predecode = JPEGPreDecode;
- tif->tif_decoderow = JPEGDecode;
- tif->tif_decodestrip = JPEGDecode;
- tif->tif_decodetile = JPEGDecode;
- tif->tif_setupencode = JPEGSetupEncode;
- tif->tif_preencode = JPEGPreEncode;
- tif->tif_postencode = JPEGPostEncode;
- tif->tif_encoderow = JPEGEncode;
- tif->tif_encodestrip = JPEGEncode;
- tif->tif_encodetile = JPEGEncode;
- tif->tif_cleanup = JPEGCleanup;
- sp->defsparent = tif->tif_defstripsize;
- tif->tif_defstripsize = JPEGDefaultStripSize;
- sp->deftparent = tif->tif_deftilesize;
- tif->tif_deftilesize = JPEGDefaultTileSize;
- tif->tif_flags |= TIFF_NOBITREV; /* no bit reversal, please */
-
- sp->cinfo_initialized = FALSE;
-
- /*
- ** Create a JPEGTables field if no directory has yet been created.
- ** We do this just to ensure that sufficient space is reserved for
- ** the JPEGTables field. It will be properly created the right
- ** size later.
- */
- if( tif->tif_diroff == 0 )
- {
-#define SIZE_OF_JPEGTABLES 2000
- TIFFSetFieldBit(tif, FIELD_JPEGTABLES);
- sp->jpegtables_length = SIZE_OF_JPEGTABLES;
- sp->jpegtables = (void *) _TIFFmalloc(sp->jpegtables_length);
- _TIFFmemset(sp->jpegtables, 0, SIZE_OF_JPEGTABLES);
-#undef SIZE_OF_JPEGTABLES
- }
-
- /*
- * Mark the TIFFTAG_YCBCRSAMPLES as present even if it is not
- * see: JPEGFixupTestSubsampling().
- */
- TIFFSetFieldBit( tif, FIELD_YCBCRSUBSAMPLING );
-
- return 1;
-}
-#endif /* JPEG_SUPPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
-
diff --git a/src/3rdparty/libtiff/libtiff/tif_luv.c b/src/3rdparty/libtiff/libtiff/tif_luv.c
deleted file mode 100644
index be8fceaf86..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_luv.c
+++ /dev/null
@@ -1,1622 +0,0 @@
-/* $Id: tif_luv.c,v 1.17.2.3 2009-06-30 17:06:25 fwarmerdam Exp $ */
-
-/*
- * Copyright (c) 1997 Greg Ward Larson
- * Copyright (c) 1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler, Greg Larson and Silicon Graphics may not be used in any
- * advertising or publicity relating to the software without the specific,
- * prior written permission of Sam Leffler, Greg Larson and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER, GREG LARSON OR SILICON GRAPHICS BE LIABLE
- * FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#include "tiffiop.h"
-#ifdef LOGLUV_SUPPORT
-
-/*
- * TIFF Library.
- * LogLuv compression support for high dynamic range images.
- *
- * Contributed by Greg Larson.
- *
- * LogLuv image support uses the TIFF library to store 16 or 10-bit
- * log luminance values with 8 bits each of u and v or a 14-bit index.
- *
- * The codec can take as input and produce as output 32-bit IEEE float values
- * as well as 16-bit integer values. A 16-bit luminance is interpreted
- * as a sign bit followed by a 15-bit integer that is converted
- * to and from a linear magnitude using the transformation:
- *
- * L = 2^( (Le+.5)/256 - 64 ) # real from 15-bit
- *
- * Le = floor( 256*(log2(L) + 64) ) # 15-bit from real
- *
- * The actual conversion to world luminance units in candelas per sq. meter
- * requires an additional multiplier, which is stored in the TIFFTAG_STONITS.
- * This value is usually set such that a reasonable exposure comes from
- * clamping decoded luminances above 1 to 1 in the displayed image.
- *
- * The 16-bit values for u and v may be converted to real values by dividing
- * each by 32768. (This allows for negative values, which aren't useful as
- * far as we know, but are left in case of future improvements in human
- * color vision.)
- *
- * Conversion from (u,v), which is actually the CIE (u',v') system for
- * you color scientists, is accomplished by the following transformation:
- *
- * u = 4*x / (-2*x + 12*y + 3)
- * v = 9*y / (-2*x + 12*y + 3)
- *
- * x = 9*u / (6*u - 16*v + 12)
- * y = 4*v / (6*u - 16*v + 12)
- *
- * This process is greatly simplified by passing 32-bit IEEE floats
- * for each of three CIE XYZ coordinates. The codec then takes care
- * of conversion to and from LogLuv, though the application is still
- * responsible for interpreting the TIFFTAG_STONITS calibration factor.
- *
- * By definition, a CIE XYZ vector of [1 1 1] corresponds to a neutral white
- * point of (x,y)=(1/3,1/3). However, most color systems assume some other
- * white point, such as D65, and an absolute color conversion to XYZ then
- * to another color space with a different white point may introduce an
- * unwanted color cast to the image. It is often desirable, therefore, to
- * perform a white point conversion that maps the input white to [1 1 1]
- * in XYZ, then record the original white point using the TIFFTAG_WHITEPOINT
- * tag value. A decoder that demands absolute color calibration may use
- * this white point tag to get back the original colors, but usually it
- * will be ignored and the new white point will be used instead that
- * matches the output color space.
- *
- * Pixel information is compressed into one of two basic encodings, depending
- * on the setting of the compression tag, which is one of COMPRESSION_SGILOG
- * or COMPRESSION_SGILOG24. For COMPRESSION_SGILOG, greyscale data is
- * stored as:
- *
- * 1 15
- * |-+---------------|
- *
- * COMPRESSION_SGILOG color data is stored as:
- *
- * 1 15 8 8
- * |-+---------------|--------+--------|
- * S Le ue ve
- *
- * For the 24-bit COMPRESSION_SGILOG24 color format, the data is stored as:
- *
- * 10 14
- * |----------|--------------|
- * Le' Ce
- *
- * There is no sign bit in the 24-bit case, and the (u,v) chromaticity is
- * encoded as an index for optimal color resolution. The 10 log bits are
- * defined by the following conversions:
- *
- * L = 2^((Le'+.5)/64 - 12) # real from 10-bit
- *
- * Le' = floor( 64*(log2(L) + 12) ) # 10-bit from real
- *
- * The 10 bits of the smaller format may be converted into the 15 bits of
- * the larger format by multiplying by 4 and adding 13314. Obviously,
- * a smaller range of magnitudes is covered (about 5 orders of magnitude
- * instead of 38), and the lack of a sign bit means that negative luminances
- * are not allowed. (Well, they aren't allowed in the real world, either,
- * but they are useful for certain types of image processing.)
- *
- * The desired user format is controlled by the setting the internal
- * pseudo tag TIFFTAG_SGILOGDATAFMT to one of:
- * SGILOGDATAFMT_FLOAT = IEEE 32-bit float XYZ values
- * SGILOGDATAFMT_16BIT = 16-bit integer encodings of logL, u and v
- * Raw data i/o is also possible using:
- * SGILOGDATAFMT_RAW = 32-bit unsigned integer with encoded pixel
- * In addition, the following decoding is provided for ease of display:
- * SGILOGDATAFMT_8BIT = 8-bit default RGB gamma-corrected values
- *
- * For grayscale images, we provide the following data formats:
- * SGILOGDATAFMT_FLOAT = IEEE 32-bit float Y values
- * SGILOGDATAFMT_16BIT = 16-bit integer w/ encoded luminance
- * SGILOGDATAFMT_8BIT = 8-bit gray monitor values
- *
- * Note that the COMPRESSION_SGILOG applies a simple run-length encoding
- * scheme by separating the logL, u and v bytes for each row and applying
- * a PackBits type of compression. Since the 24-bit encoding is not
- * adaptive, the 32-bit color format takes less space in many cases.
- *
- * Further control is provided over the conversion from higher-resolution
- * formats to final encoded values through the pseudo tag
- * TIFFTAG_SGILOGENCODE:
- * SGILOGENCODE_NODITHER = do not dither encoded values
- * SGILOGENCODE_RANDITHER = apply random dithering during encoding
- *
- * The default value of this tag is SGILOGENCODE_NODITHER for
- * COMPRESSION_SGILOG to maximize run-length encoding and
- * SGILOGENCODE_RANDITHER for COMPRESSION_SGILOG24 to turn
- * quantization errors into noise.
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-
-/*
- * State block for each open TIFF
- * file using LogLuv compression/decompression.
- */
-typedef struct logLuvState LogLuvState;
-
-struct logLuvState {
- int user_datafmt; /* user data format */
- int encode_meth; /* encoding method */
- int pixel_size; /* bytes per pixel */
-
- tidata_t* tbuf; /* translation buffer */
- int tbuflen; /* buffer length */
- void (*tfunc)(LogLuvState*, tidata_t, int);
-
- TIFFVSetMethod vgetparent; /* super-class method */
- TIFFVSetMethod vsetparent; /* super-class method */
-};
-
-#define DecoderState(tif) ((LogLuvState*) (tif)->tif_data)
-#define EncoderState(tif) ((LogLuvState*) (tif)->tif_data)
-
-#define SGILOGDATAFMT_UNKNOWN -1
-
-#define MINRUN 4 /* minimum run length */
-
-/*
- * Decode a string of 16-bit gray pixels.
- */
-static int
-LogL16Decode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
-{
- LogLuvState* sp = DecoderState(tif);
- int shft, i, npixels;
- unsigned char* bp;
- int16* tp;
- int16 b;
- int cc, rc;
-
- assert(s == 0);
- assert(sp != NULL);
-
- npixels = occ / sp->pixel_size;
-
- if (sp->user_datafmt == SGILOGDATAFMT_16BIT)
- tp = (int16*) op;
- else {
- assert(sp->tbuflen >= npixels);
- tp = (int16*) sp->tbuf;
- }
- _TIFFmemset((tdata_t) tp, 0, npixels*sizeof (tp[0]));
-
- bp = (unsigned char*) tif->tif_rawcp;
- cc = tif->tif_rawcc;
- /* get each byte string */
- for (shft = 2*8; (shft -= 8) >= 0; ) {
- for (i = 0; i < npixels && cc > 0; )
- if (*bp >= 128) { /* run */
- rc = *bp++ + (2-128);
- b = (int16)(*bp++ << shft);
- cc -= 2;
- while (rc-- && i < npixels)
- tp[i++] |= b;
- } else { /* non-run */
- rc = *bp++; /* nul is noop */
- while (--cc && rc-- && i < npixels)
- tp[i++] |= (int16)*bp++ << shft;
- }
- if (i != npixels) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "LogL16Decode: Not enough data at row %d (short %d pixels)",
- tif->tif_row, npixels - i);
- tif->tif_rawcp = (tidata_t) bp;
- tif->tif_rawcc = cc;
- return (0);
- }
- }
- (*sp->tfunc)(sp, op, npixels);
- tif->tif_rawcp = (tidata_t) bp;
- tif->tif_rawcc = cc;
- return (1);
-}
-
-/*
- * Decode a string of 24-bit pixels.
- */
-static int
-LogLuvDecode24(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
-{
- LogLuvState* sp = DecoderState(tif);
- int cc, i, npixels;
- unsigned char* bp;
- uint32* tp;
-
- assert(s == 0);
- assert(sp != NULL);
-
- npixels = occ / sp->pixel_size;
-
- if (sp->user_datafmt == SGILOGDATAFMT_RAW)
- tp = (uint32 *)op;
- else {
- assert(sp->tbuflen >= npixels);
- tp = (uint32 *) sp->tbuf;
- }
- /* copy to array of uint32 */
- bp = (unsigned char*) tif->tif_rawcp;
- cc = tif->tif_rawcc;
- for (i = 0; i < npixels && cc > 0; i++) {
- tp[i] = bp[0] << 16 | bp[1] << 8 | bp[2];
- bp += 3;
- cc -= 3;
- }
- tif->tif_rawcp = (tidata_t) bp;
- tif->tif_rawcc = cc;
- if (i != npixels) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "LogLuvDecode24: Not enough data at row %d (short %d pixels)",
- tif->tif_row, npixels - i);
- return (0);
- }
- (*sp->tfunc)(sp, op, npixels);
- return (1);
-}
-
-/*
- * Decode a string of 32-bit pixels.
- */
-static int
-LogLuvDecode32(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
-{
- LogLuvState* sp;
- int shft, i, npixels;
- unsigned char* bp;
- uint32* tp;
- uint32 b;
- int cc, rc;
-
- assert(s == 0);
- sp = DecoderState(tif);
- assert(sp != NULL);
-
- npixels = occ / sp->pixel_size;
-
- if (sp->user_datafmt == SGILOGDATAFMT_RAW)
- tp = (uint32*) op;
- else {
- assert(sp->tbuflen >= npixels);
- tp = (uint32*) sp->tbuf;
- }
- _TIFFmemset((tdata_t) tp, 0, npixels*sizeof (tp[0]));
-
- bp = (unsigned char*) tif->tif_rawcp;
- cc = tif->tif_rawcc;
- /* get each byte string */
- for (shft = 4*8; (shft -= 8) >= 0; ) {
- for (i = 0; i < npixels && cc > 0; )
- if (*bp >= 128) { /* run */
- rc = *bp++ + (2-128);
- b = (uint32)*bp++ << shft;
- cc -= 2;
- while (rc-- && i < npixels)
- tp[i++] |= b;
- } else { /* non-run */
- rc = *bp++; /* nul is noop */
- while (--cc && rc-- && i < npixels)
- tp[i++] |= (uint32)*bp++ << shft;
- }
- if (i != npixels) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "LogLuvDecode32: Not enough data at row %d (short %d pixels)",
- tif->tif_row, npixels - i);
- tif->tif_rawcp = (tidata_t) bp;
- tif->tif_rawcc = cc;
- return (0);
- }
- }
- (*sp->tfunc)(sp, op, npixels);
- tif->tif_rawcp = (tidata_t) bp;
- tif->tif_rawcc = cc;
- return (1);
-}
-
-/*
- * Decode a strip of pixels. We break it into rows to
- * maintain synchrony with the encode algorithm, which
- * is row by row.
- */
-static int
-LogLuvDecodeStrip(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
- tsize_t rowlen = TIFFScanlineSize(tif);
-
- assert(cc%rowlen == 0);
- while (cc && (*tif->tif_decoderow)(tif, bp, rowlen, s))
- bp += rowlen, cc -= rowlen;
- return (cc == 0);
-}
-
-/*
- * Decode a tile of pixels. We break it into rows to
- * maintain synchrony with the encode algorithm, which
- * is row by row.
- */
-static int
-LogLuvDecodeTile(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
- tsize_t rowlen = TIFFTileRowSize(tif);
-
- assert(cc%rowlen == 0);
- while (cc && (*tif->tif_decoderow)(tif, bp, rowlen, s))
- bp += rowlen, cc -= rowlen;
- return (cc == 0);
-}
-
-/*
- * Encode a row of 16-bit pixels.
- */
-static int
-LogL16Encode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
- LogLuvState* sp = EncoderState(tif);
- int shft, i, j, npixels;
- tidata_t op;
- int16* tp;
- int16 b;
- int occ, rc=0, mask, beg;
-
- assert(s == 0);
- assert(sp != NULL);
- npixels = cc / sp->pixel_size;
-
- if (sp->user_datafmt == SGILOGDATAFMT_16BIT)
- tp = (int16*) bp;
- else {
- tp = (int16*) sp->tbuf;
- assert(sp->tbuflen >= npixels);
- (*sp->tfunc)(sp, bp, npixels);
- }
- /* compress each byte string */
- op = tif->tif_rawcp;
- occ = tif->tif_rawdatasize - tif->tif_rawcc;
- for (shft = 2*8; (shft -= 8) >= 0; )
- for (i = 0; i < npixels; i += rc) {
- if (occ < 4) {
- tif->tif_rawcp = op;
- tif->tif_rawcc = tif->tif_rawdatasize - occ;
- if (!TIFFFlushData1(tif))
- return (-1);
- op = tif->tif_rawcp;
- occ = tif->tif_rawdatasize - tif->tif_rawcc;
- }
- mask = 0xff << shft; /* find next run */
- for (beg = i; beg < npixels; beg += rc) {
- b = (int16) (tp[beg] & mask);
- rc = 1;
- while (rc < 127+2 && beg+rc < npixels &&
- (tp[beg+rc] & mask) == b)
- rc++;
- if (rc >= MINRUN)
- break; /* long enough */
- }
- if (beg-i > 1 && beg-i < MINRUN) {
- b = (int16) (tp[i] & mask);/*check short run */
- j = i+1;
- while ((tp[j++] & mask) == b)
- if (j == beg) {
- *op++ = (tidataval_t)(128-2+j-i);
- *op++ = (tidataval_t) (b >> shft);
- occ -= 2;
- i = beg;
- break;
- }
- }
- while (i < beg) { /* write out non-run */
- if ((j = beg-i) > 127) j = 127;
- if (occ < j+3) {
- tif->tif_rawcp = op;
- tif->tif_rawcc = tif->tif_rawdatasize - occ;
- if (!TIFFFlushData1(tif))
- return (-1);
- op = tif->tif_rawcp;
- occ = tif->tif_rawdatasize - tif->tif_rawcc;
- }
- *op++ = (tidataval_t) j; occ--;
- while (j--) {
- *op++ = (tidataval_t) (tp[i++] >> shft & 0xff);
- occ--;
- }
- }
- if (rc >= MINRUN) { /* write out run */
- *op++ = (tidataval_t) (128-2+rc);
- *op++ = (tidataval_t) (tp[beg] >> shft & 0xff);
- occ -= 2;
- } else
- rc = 0;
- }
- tif->tif_rawcp = op;
- tif->tif_rawcc = tif->tif_rawdatasize - occ;
-
- return (1);
-}
-
-/*
- * Encode a row of 24-bit pixels.
- */
-static int
-LogLuvEncode24(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
- LogLuvState* sp = EncoderState(tif);
- int i, npixels, occ;
- tidata_t op;
- uint32* tp;
-
- assert(s == 0);
- assert(sp != NULL);
- npixels = cc / sp->pixel_size;
-
- if (sp->user_datafmt == SGILOGDATAFMT_RAW)
- tp = (uint32*) bp;
- else {
- tp = (uint32*) sp->tbuf;
- assert(sp->tbuflen >= npixels);
- (*sp->tfunc)(sp, bp, npixels);
- }
- /* write out encoded pixels */
- op = tif->tif_rawcp;
- occ = tif->tif_rawdatasize - tif->tif_rawcc;
- for (i = npixels; i--; ) {
- if (occ < 3) {
- tif->tif_rawcp = op;
- tif->tif_rawcc = tif->tif_rawdatasize - occ;
- if (!TIFFFlushData1(tif))
- return (-1);
- op = tif->tif_rawcp;
- occ = tif->tif_rawdatasize - tif->tif_rawcc;
- }
- *op++ = (tidataval_t)(*tp >> 16);
- *op++ = (tidataval_t)(*tp >> 8 & 0xff);
- *op++ = (tidataval_t)(*tp++ & 0xff);
- occ -= 3;
- }
- tif->tif_rawcp = op;
- tif->tif_rawcc = tif->tif_rawdatasize - occ;
-
- return (1);
-}
-
-/*
- * Encode a row of 32-bit pixels.
- */
-static int
-LogLuvEncode32(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
- LogLuvState* sp = EncoderState(tif);
- int shft, i, j, npixels;
- tidata_t op;
- uint32* tp;
- uint32 b;
- int occ, rc=0, mask, beg;
-
- assert(s == 0);
- assert(sp != NULL);
-
- npixels = cc / sp->pixel_size;
-
- if (sp->user_datafmt == SGILOGDATAFMT_RAW)
- tp = (uint32*) bp;
- else {
- tp = (uint32*) sp->tbuf;
- assert(sp->tbuflen >= npixels);
- (*sp->tfunc)(sp, bp, npixels);
- }
- /* compress each byte string */
- op = tif->tif_rawcp;
- occ = tif->tif_rawdatasize - tif->tif_rawcc;
- for (shft = 4*8; (shft -= 8) >= 0; )
- for (i = 0; i < npixels; i += rc) {
- if (occ < 4) {
- tif->tif_rawcp = op;
- tif->tif_rawcc = tif->tif_rawdatasize - occ;
- if (!TIFFFlushData1(tif))
- return (-1);
- op = tif->tif_rawcp;
- occ = tif->tif_rawdatasize - tif->tif_rawcc;
- }
- mask = 0xff << shft; /* find next run */
- for (beg = i; beg < npixels; beg += rc) {
- b = tp[beg] & mask;
- rc = 1;
- while (rc < 127+2 && beg+rc < npixels &&
- (tp[beg+rc] & mask) == b)
- rc++;
- if (rc >= MINRUN)
- break; /* long enough */
- }
- if (beg-i > 1 && beg-i < MINRUN) {
- b = tp[i] & mask; /* check short run */
- j = i+1;
- while ((tp[j++] & mask) == b)
- if (j == beg) {
- *op++ = (tidataval_t)(128-2+j-i);
- *op++ = (tidataval_t)(b >> shft);
- occ -= 2;
- i = beg;
- break;
- }
- }
- while (i < beg) { /* write out non-run */
- if ((j = beg-i) > 127) j = 127;
- if (occ < j+3) {
- tif->tif_rawcp = op;
- tif->tif_rawcc = tif->tif_rawdatasize - occ;
- if (!TIFFFlushData1(tif))
- return (-1);
- op = tif->tif_rawcp;
- occ = tif->tif_rawdatasize - tif->tif_rawcc;
- }
- *op++ = (tidataval_t) j; occ--;
- while (j--) {
- *op++ = (tidataval_t)(tp[i++] >> shft & 0xff);
- occ--;
- }
- }
- if (rc >= MINRUN) { /* write out run */
- *op++ = (tidataval_t) (128-2+rc);
- *op++ = (tidataval_t)(tp[beg] >> shft & 0xff);
- occ -= 2;
- } else
- rc = 0;
- }
- tif->tif_rawcp = op;
- tif->tif_rawcc = tif->tif_rawdatasize - occ;
-
- return (1);
-}
-
-/*
- * Encode a strip of pixels. We break it into rows to
- * avoid encoding runs across row boundaries.
- */
-static int
-LogLuvEncodeStrip(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
- tsize_t rowlen = TIFFScanlineSize(tif);
-
- assert(cc%rowlen == 0);
- while (cc && (*tif->tif_encoderow)(tif, bp, rowlen, s) == 1)
- bp += rowlen, cc -= rowlen;
- return (cc == 0);
-}
-
-/*
- * Encode a tile of pixels. We break it into rows to
- * avoid encoding runs across row boundaries.
- */
-static int
-LogLuvEncodeTile(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
- tsize_t rowlen = TIFFTileRowSize(tif);
-
- assert(cc%rowlen == 0);
- while (cc && (*tif->tif_encoderow)(tif, bp, rowlen, s) == 1)
- bp += rowlen, cc -= rowlen;
- return (cc == 0);
-}
-
-/*
- * Encode/Decode functions for converting to and from user formats.
- */
-
-#include "uvcode.h"
-
-#ifndef UVSCALE
-#define U_NEU 0.210526316
-#define V_NEU 0.473684211
-#define UVSCALE 410.
-#endif
-
-#ifndef M_LN2
-#define M_LN2 0.69314718055994530942
-#endif
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-#define log2(x) ((1./M_LN2)*log(x))
-#define exp2(x) exp(M_LN2*(x))
-
-#define itrunc(x,m) ((m)==SGILOGENCODE_NODITHER ? \
- (int)(x) : \
- (int)((x) + rand()*(1./RAND_MAX) - .5))
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-double
-LogL16toY(int p16) /* compute luminance from 16-bit LogL */
-{
- int Le = p16 & 0x7fff;
- double Y;
-
- if (!Le)
- return (0.);
- Y = exp(M_LN2/256.*(Le+.5) - M_LN2*64.);
- return (!(p16 & 0x8000) ? Y : -Y);
-}
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-int
-LogL16fromY(double Y, int em) /* get 16-bit LogL from Y */
-{
- if (Y >= 1.8371976e19)
- return (0x7fff);
- if (Y <= -1.8371976e19)
- return (0xffff);
- if (Y > 5.4136769e-20)
- return itrunc(256.*(log2(Y) + 64.), em);
- if (Y < -5.4136769e-20)
- return (~0x7fff | itrunc(256.*(log2(-Y) + 64.), em));
- return (0);
-}
-
-static void
-L16toY(LogLuvState* sp, tidata_t op, int n)
-{
- int16* l16 = (int16*) sp->tbuf;
- float* yp = (float*) op;
-
- while (n-- > 0)
- *yp++ = (float)LogL16toY(*l16++);
-}
-
-static void
-L16toGry(LogLuvState* sp, tidata_t op, int n)
-{
- int16* l16 = (int16*) sp->tbuf;
- uint8* gp = (uint8*) op;
-
- while (n-- > 0) {
- double Y = LogL16toY(*l16++);
- *gp++ = (uint8) ((Y <= 0.) ? 0 : (Y >= 1.) ? 255 : (int)(256.*sqrt(Y)));
- }
-}
-
-static void
-L16fromY(LogLuvState* sp, tidata_t op, int n)
-{
- int16* l16 = (int16*) sp->tbuf;
- float* yp = (float*) op;
-
- while (n-- > 0)
- *l16++ = (int16) (LogL16fromY(*yp++, sp->encode_meth));
-}
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-void
-XYZtoRGB24(float xyz[3], uint8 rgb[3])
-{
- double r, g, b;
- /* assume CCIR-709 primaries */
- r = 2.690*xyz[0] + -1.276*xyz[1] + -0.414*xyz[2];
- g = -1.022*xyz[0] + 1.978*xyz[1] + 0.044*xyz[2];
- b = 0.061*xyz[0] + -0.224*xyz[1] + 1.163*xyz[2];
- /* assume 2.0 gamma for speed */
- /* could use integer sqrt approx., but this is probably faster */
- rgb[0] = (uint8)((r<=0.) ? 0 : (r >= 1.) ? 255 : (int)(256.*sqrt(r)));
- rgb[1] = (uint8)((g<=0.) ? 0 : (g >= 1.) ? 255 : (int)(256.*sqrt(g)));
- rgb[2] = (uint8)((b<=0.) ? 0 : (b >= 1.) ? 255 : (int)(256.*sqrt(b)));
-}
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-double
-LogL10toY(int p10) /* compute luminance from 10-bit LogL */
-{
- if (p10 == 0)
- return (0.);
- return (exp(M_LN2/64.*(p10+.5) - M_LN2*12.));
-}
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-int
-LogL10fromY(double Y, int em) /* get 10-bit LogL from Y */
-{
- if (Y >= 15.742)
- return (0x3ff);
- else if (Y <= .00024283)
- return (0);
- else
- return itrunc(64.*(log2(Y) + 12.), em);
-}
-
-#define NANGLES 100
-#define uv2ang(u, v) ( (NANGLES*.499999999/M_PI) \
- * atan2((v)-V_NEU,(u)-U_NEU) + .5*NANGLES )
-
-static int
-oog_encode(double u, double v) /* encode out-of-gamut chroma */
-{
- static int oog_table[NANGLES];
- static int initialized = 0;
- register int i;
-
- if (!initialized) { /* set up perimeter table */
- double eps[NANGLES], ua, va, ang, epsa;
- int ui, vi, ustep;
- for (i = NANGLES; i--; )
- eps[i] = 2.;
- for (vi = UV_NVS; vi--; ) {
- va = UV_VSTART + (vi+.5)*UV_SQSIZ;
- ustep = uv_row[vi].nus-1;
- if (vi == UV_NVS-1 || vi == 0 || ustep <= 0)
- ustep = 1;
- for (ui = uv_row[vi].nus-1; ui >= 0; ui -= ustep) {
- ua = uv_row[vi].ustart + (ui+.5)*UV_SQSIZ;
- ang = uv2ang(ua, va);
- i = (int) ang;
- epsa = fabs(ang - (i+.5));
- if (epsa < eps[i]) {
- oog_table[i] = uv_row[vi].ncum + ui;
- eps[i] = epsa;
- }
- }
- }
- for (i = NANGLES; i--; ) /* fill any holes */
- if (eps[i] > 1.5) {
- int i1, i2;
- for (i1 = 1; i1 < NANGLES/2; i1++)
- if (eps[(i+i1)%NANGLES] < 1.5)
- break;
- for (i2 = 1; i2 < NANGLES/2; i2++)
- if (eps[(i+NANGLES-i2)%NANGLES] < 1.5)
- break;
- if (i1 < i2)
- oog_table[i] =
- oog_table[(i+i1)%NANGLES];
- else
- oog_table[i] =
- oog_table[(i+NANGLES-i2)%NANGLES];
- }
- initialized = 1;
- }
- i = (int) uv2ang(u, v); /* look up hue angle */
- return (oog_table[i]);
-}
-
-#undef uv2ang
-#undef NANGLES
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-int
-uv_encode(double u, double v, int em) /* encode (u',v') coordinates */
-{
- register int vi, ui;
-
- if (v < UV_VSTART)
- return oog_encode(u, v);
- vi = itrunc((v - UV_VSTART)*(1./UV_SQSIZ), em);
- if (vi >= UV_NVS)
- return oog_encode(u, v);
- if (u < uv_row[vi].ustart)
- return oog_encode(u, v);
- ui = itrunc((u - uv_row[vi].ustart)*(1./UV_SQSIZ), em);
- if (ui >= uv_row[vi].nus)
- return oog_encode(u, v);
-
- return (uv_row[vi].ncum + ui);
-}
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-int
-uv_decode(double *up, double *vp, int c) /* decode (u',v') index */
-{
- int upper, lower;
- register int ui, vi;
-
- if (c < 0 || c >= UV_NDIVS)
- return (-1);
- lower = 0; /* binary search */
- upper = UV_NVS;
- while (upper - lower > 1) {
- vi = (lower + upper) >> 1;
- ui = c - uv_row[vi].ncum;
- if (ui > 0)
- lower = vi;
- else if (ui < 0)
- upper = vi;
- else {
- lower = vi;
- break;
- }
- }
- vi = lower;
- ui = c - uv_row[vi].ncum;
- *up = uv_row[vi].ustart + (ui+.5)*UV_SQSIZ;
- *vp = UV_VSTART + (vi+.5)*UV_SQSIZ;
- return (0);
-}
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-void
-LogLuv24toXYZ(uint32 p, float XYZ[3])
-{
- int Ce;
- double L, u, v, s, x, y;
- /* decode luminance */
- L = LogL10toY(p>>14 & 0x3ff);
- if (L <= 0.) {
- XYZ[0] = XYZ[1] = XYZ[2] = 0.;
- return;
- }
- /* decode color */
- Ce = p & 0x3fff;
- if (uv_decode(&u, &v, Ce) < 0) {
- u = U_NEU; v = V_NEU;
- }
- s = 1./(6.*u - 16.*v + 12.);
- x = 9.*u * s;
- y = 4.*v * s;
- /* convert to XYZ */
- XYZ[0] = (float)(x/y * L);
- XYZ[1] = (float)L;
- XYZ[2] = (float)((1.-x-y)/y * L);
-}
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-uint32
-LogLuv24fromXYZ(float XYZ[3], int em)
-{
- int Le, Ce;
- double u, v, s;
- /* encode luminance */
- Le = LogL10fromY(XYZ[1], em);
- /* encode color */
- s = XYZ[0] + 15.*XYZ[1] + 3.*XYZ[2];
- if (!Le || s <= 0.) {
- u = U_NEU;
- v = V_NEU;
- } else {
- u = 4.*XYZ[0] / s;
- v = 9.*XYZ[1] / s;
- }
- Ce = uv_encode(u, v, em);
- if (Ce < 0) /* never happens */
- Ce = uv_encode(U_NEU, V_NEU, SGILOGENCODE_NODITHER);
- /* combine encodings */
- return (Le << 14 | Ce);
-}
-
-static void
-Luv24toXYZ(LogLuvState* sp, tidata_t op, int n)
-{
- uint32* luv = (uint32*) sp->tbuf;
- float* xyz = (float*) op;
-
- while (n-- > 0) {
- LogLuv24toXYZ(*luv, xyz);
- xyz += 3;
- luv++;
- }
-}
-
-static void
-Luv24toLuv48(LogLuvState* sp, tidata_t op, int n)
-{
- uint32* luv = (uint32*) sp->tbuf;
- int16* luv3 = (int16*) op;
-
- while (n-- > 0) {
- double u, v;
-
- *luv3++ = (int16)((*luv >> 12 & 0xffd) + 13314);
- if (uv_decode(&u, &v, *luv&0x3fff) < 0) {
- u = U_NEU;
- v = V_NEU;
- }
- *luv3++ = (int16)(u * (1L<<15));
- *luv3++ = (int16)(v * (1L<<15));
- luv++;
- }
-}
-
-static void
-Luv24toRGB(LogLuvState* sp, tidata_t op, int n)
-{
- uint32* luv = (uint32*) sp->tbuf;
- uint8* rgb = (uint8*) op;
-
- while (n-- > 0) {
- float xyz[3];
-
- LogLuv24toXYZ(*luv++, xyz);
- XYZtoRGB24(xyz, rgb);
- rgb += 3;
- }
-}
-
-static void
-Luv24fromXYZ(LogLuvState* sp, tidata_t op, int n)
-{
- uint32* luv = (uint32*) sp->tbuf;
- float* xyz = (float*) op;
-
- while (n-- > 0) {
- *luv++ = LogLuv24fromXYZ(xyz, sp->encode_meth);
- xyz += 3;
- }
-}
-
-static void
-Luv24fromLuv48(LogLuvState* sp, tidata_t op, int n)
-{
- uint32* luv = (uint32*) sp->tbuf;
- int16* luv3 = (int16*) op;
-
- while (n-- > 0) {
- int Le, Ce;
-
- if (luv3[0] <= 0)
- Le = 0;
- else if (luv3[0] >= (1<<12)+3314)
- Le = (1<<10) - 1;
- else if (sp->encode_meth == SGILOGENCODE_NODITHER)
- Le = (luv3[0]-3314) >> 2;
- else
- Le = itrunc(.25*(luv3[0]-3314.), sp->encode_meth);
-
- Ce = uv_encode((luv3[1]+.5)/(1<<15), (luv3[2]+.5)/(1<<15),
- sp->encode_meth);
- if (Ce < 0) /* never happens */
- Ce = uv_encode(U_NEU, V_NEU, SGILOGENCODE_NODITHER);
- *luv++ = (uint32)Le << 14 | Ce;
- luv3 += 3;
- }
-}
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-void
-LogLuv32toXYZ(uint32 p, float XYZ[3])
-{
- double L, u, v, s, x, y;
- /* decode luminance */
- L = LogL16toY((int)p >> 16);
- if (L <= 0.) {
- XYZ[0] = XYZ[1] = XYZ[2] = 0.;
- return;
- }
- /* decode color */
- u = 1./UVSCALE * ((p>>8 & 0xff) + .5);
- v = 1./UVSCALE * ((p & 0xff) + .5);
- s = 1./(6.*u - 16.*v + 12.);
- x = 9.*u * s;
- y = 4.*v * s;
- /* convert to XYZ */
- XYZ[0] = (float)(x/y * L);
- XYZ[1] = (float)L;
- XYZ[2] = (float)((1.-x-y)/y * L);
-}
-
-#if !LOGLUV_PUBLIC
-static
-#endif
-uint32
-LogLuv32fromXYZ(float XYZ[3], int em)
-{
- unsigned int Le, ue, ve;
- double u, v, s;
- /* encode luminance */
- Le = (unsigned int)LogL16fromY(XYZ[1], em);
- /* encode color */
- s = XYZ[0] + 15.*XYZ[1] + 3.*XYZ[2];
- if (!Le || s <= 0.) {
- u = U_NEU;
- v = V_NEU;
- } else {
- u = 4.*XYZ[0] / s;
- v = 9.*XYZ[1] / s;
- }
- if (u <= 0.) ue = 0;
- else ue = itrunc(UVSCALE*u, em);
- if (ue > 255) ue = 255;
- if (v <= 0.) ve = 0;
- else ve = itrunc(UVSCALE*v, em);
- if (ve > 255) ve = 255;
- /* combine encodings */
- return (Le << 16 | ue << 8 | ve);
-}
-
-static void
-Luv32toXYZ(LogLuvState* sp, tidata_t op, int n)
-{
- uint32* luv = (uint32*) sp->tbuf;
- float* xyz = (float*) op;
-
- while (n-- > 0) {
- LogLuv32toXYZ(*luv++, xyz);
- xyz += 3;
- }
-}
-
-static void
-Luv32toLuv48(LogLuvState* sp, tidata_t op, int n)
-{
- uint32* luv = (uint32*) sp->tbuf;
- int16* luv3 = (int16*) op;
-
- while (n-- > 0) {
- double u, v;
-
- *luv3++ = (int16)(*luv >> 16);
- u = 1./UVSCALE * ((*luv>>8 & 0xff) + .5);
- v = 1./UVSCALE * ((*luv & 0xff) + .5);
- *luv3++ = (int16)(u * (1L<<15));
- *luv3++ = (int16)(v * (1L<<15));
- luv++;
- }
-}
-
-static void
-Luv32toRGB(LogLuvState* sp, tidata_t op, int n)
-{
- uint32* luv = (uint32*) sp->tbuf;
- uint8* rgb = (uint8*) op;
-
- while (n-- > 0) {
- float xyz[3];
-
- LogLuv32toXYZ(*luv++, xyz);
- XYZtoRGB24(xyz, rgb);
- rgb += 3;
- }
-}
-
-static void
-Luv32fromXYZ(LogLuvState* sp, tidata_t op, int n)
-{
- uint32* luv = (uint32*) sp->tbuf;
- float* xyz = (float*) op;
-
- while (n-- > 0) {
- *luv++ = LogLuv32fromXYZ(xyz, sp->encode_meth);
- xyz += 3;
- }
-}
-
-static void
-Luv32fromLuv48(LogLuvState* sp, tidata_t op, int n)
-{
- uint32* luv = (uint32*) sp->tbuf;
- int16* luv3 = (int16*) op;
-
- if (sp->encode_meth == SGILOGENCODE_NODITHER) {
- while (n-- > 0) {
- *luv++ = (uint32)luv3[0] << 16 |
- (luv3[1]*(uint32)(UVSCALE+.5) >> 7 & 0xff00) |
- (luv3[2]*(uint32)(UVSCALE+.5) >> 15 & 0xff);
- luv3 += 3;
- }
- return;
- }
- while (n-- > 0) {
- *luv++ = (uint32)luv3[0] << 16 |
- (itrunc(luv3[1]*(UVSCALE/(1<<15)), sp->encode_meth) << 8 & 0xff00) |
- (itrunc(luv3[2]*(UVSCALE/(1<<15)), sp->encode_meth) & 0xff);
- luv3 += 3;
- }
-}
-
-static void
-_logLuvNop(LogLuvState* sp, tidata_t op, int n)
-{
- (void) sp; (void) op; (void) n;
-}
-
-static int
-LogL16GuessDataFmt(TIFFDirectory *td)
-{
-#define PACK(s,b,f) (((b)<<6)|((s)<<3)|(f))
- switch (PACK(td->td_samplesperpixel, td->td_bitspersample, td->td_sampleformat)) {
- case PACK(1, 32, SAMPLEFORMAT_IEEEFP):
- return (SGILOGDATAFMT_FLOAT);
- case PACK(1, 16, SAMPLEFORMAT_VOID):
- case PACK(1, 16, SAMPLEFORMAT_INT):
- case PACK(1, 16, SAMPLEFORMAT_UINT):
- return (SGILOGDATAFMT_16BIT);
- case PACK(1, 8, SAMPLEFORMAT_VOID):
- case PACK(1, 8, SAMPLEFORMAT_UINT):
- return (SGILOGDATAFMT_8BIT);
- }
-#undef PACK
- return (SGILOGDATAFMT_UNKNOWN);
-}
-
-static uint32
-multiply(size_t m1, size_t m2)
-{
- uint32 bytes = m1 * m2;
-
- if (m1 && bytes / m1 != m2)
- bytes = 0;
-
- return bytes;
-}
-
-static int
-LogL16InitState(TIFF* tif)
-{
- TIFFDirectory *td = &tif->tif_dir;
- LogLuvState* sp = DecoderState(tif);
- static const char module[] = "LogL16InitState";
-
- assert(sp != NULL);
- assert(td->td_photometric == PHOTOMETRIC_LOGL);
-
- /* for some reason, we can't do this in TIFFInitLogL16 */
- if (sp->user_datafmt == SGILOGDATAFMT_UNKNOWN)
- sp->user_datafmt = LogL16GuessDataFmt(td);
- switch (sp->user_datafmt) {
- case SGILOGDATAFMT_FLOAT:
- sp->pixel_size = sizeof (float);
- break;
- case SGILOGDATAFMT_16BIT:
- sp->pixel_size = sizeof (int16);
- break;
- case SGILOGDATAFMT_8BIT:
- sp->pixel_size = sizeof (uint8);
- break;
- default:
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "No support for converting user data format to LogL");
- return (0);
- }
- if( isTiled(tif) )
- sp->tbuflen = multiply(td->td_tilewidth, td->td_tilelength);
- else
- sp->tbuflen = multiply(td->td_imagewidth, td->td_rowsperstrip);
- if (multiply(sp->tbuflen, sizeof (int16)) == 0 ||
- (sp->tbuf = (tidata_t*) _TIFFmalloc(sp->tbuflen * sizeof (int16))) == NULL) {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: No space for SGILog translation buffer",
- tif->tif_name);
- return (0);
- }
- return (1);
-}
-
-static int
-LogLuvGuessDataFmt(TIFFDirectory *td)
-{
- int guess;
-
- /*
- * If the user didn't tell us their datafmt,
- * take our best guess from the bitspersample.
- */
-#define PACK(a,b) (((a)<<3)|(b))
- switch (PACK(td->td_bitspersample, td->td_sampleformat)) {
- case PACK(32, SAMPLEFORMAT_IEEEFP):
- guess = SGILOGDATAFMT_FLOAT;
- break;
- case PACK(32, SAMPLEFORMAT_VOID):
- case PACK(32, SAMPLEFORMAT_UINT):
- case PACK(32, SAMPLEFORMAT_INT):
- guess = SGILOGDATAFMT_RAW;
- break;
- case PACK(16, SAMPLEFORMAT_VOID):
- case PACK(16, SAMPLEFORMAT_INT):
- case PACK(16, SAMPLEFORMAT_UINT):
- guess = SGILOGDATAFMT_16BIT;
- break;
- case PACK( 8, SAMPLEFORMAT_VOID):
- case PACK( 8, SAMPLEFORMAT_UINT):
- guess = SGILOGDATAFMT_8BIT;
- break;
- default:
- guess = SGILOGDATAFMT_UNKNOWN;
- break;
-#undef PACK
- }
- /*
- * Double-check samples per pixel.
- */
- switch (td->td_samplesperpixel) {
- case 1:
- if (guess != SGILOGDATAFMT_RAW)
- guess = SGILOGDATAFMT_UNKNOWN;
- break;
- case 3:
- if (guess == SGILOGDATAFMT_RAW)
- guess = SGILOGDATAFMT_UNKNOWN;
- break;
- default:
- guess = SGILOGDATAFMT_UNKNOWN;
- break;
- }
- return (guess);
-}
-
-static int
-LogLuvInitState(TIFF* tif)
-{
- TIFFDirectory* td = &tif->tif_dir;
- LogLuvState* sp = DecoderState(tif);
- static const char module[] = "LogLuvInitState";
-
- assert(sp != NULL);
- assert(td->td_photometric == PHOTOMETRIC_LOGLUV);
-
- /* for some reason, we can't do this in TIFFInitLogLuv */
- if (td->td_planarconfig != PLANARCONFIG_CONTIG) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "SGILog compression cannot handle non-contiguous data");
- return (0);
- }
- if (sp->user_datafmt == SGILOGDATAFMT_UNKNOWN)
- sp->user_datafmt = LogLuvGuessDataFmt(td);
- switch (sp->user_datafmt) {
- case SGILOGDATAFMT_FLOAT:
- sp->pixel_size = 3*sizeof (float);
- break;
- case SGILOGDATAFMT_16BIT:
- sp->pixel_size = 3*sizeof (int16);
- break;
- case SGILOGDATAFMT_RAW:
- sp->pixel_size = sizeof (uint32);
- break;
- case SGILOGDATAFMT_8BIT:
- sp->pixel_size = 3*sizeof (uint8);
- break;
- default:
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "No support for converting user data format to LogLuv");
- return (0);
- }
- if( isTiled(tif) )
- sp->tbuflen = multiply(td->td_tilewidth, td->td_tilelength);
- else
- sp->tbuflen = multiply(td->td_imagewidth, td->td_rowsperstrip);
- if (multiply(sp->tbuflen, sizeof (uint32)) == 0 ||
- (sp->tbuf = (tidata_t*) _TIFFmalloc(sp->tbuflen * sizeof (uint32))) == NULL) {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: No space for SGILog translation buffer",
- tif->tif_name);
- return (0);
- }
- return (1);
-}
-
-static int
-LogLuvSetupDecode(TIFF* tif)
-{
- LogLuvState* sp = DecoderState(tif);
- TIFFDirectory* td = &tif->tif_dir;
-
- tif->tif_postdecode = _TIFFNoPostDecode;
- switch (td->td_photometric) {
- case PHOTOMETRIC_LOGLUV:
- if (!LogLuvInitState(tif))
- break;
- if (td->td_compression == COMPRESSION_SGILOG24) {
- tif->tif_decoderow = LogLuvDecode24;
- switch (sp->user_datafmt) {
- case SGILOGDATAFMT_FLOAT:
- sp->tfunc = Luv24toXYZ;
- break;
- case SGILOGDATAFMT_16BIT:
- sp->tfunc = Luv24toLuv48;
- break;
- case SGILOGDATAFMT_8BIT:
- sp->tfunc = Luv24toRGB;
- break;
- }
- } else {
- tif->tif_decoderow = LogLuvDecode32;
- switch (sp->user_datafmt) {
- case SGILOGDATAFMT_FLOAT:
- sp->tfunc = Luv32toXYZ;
- break;
- case SGILOGDATAFMT_16BIT:
- sp->tfunc = Luv32toLuv48;
- break;
- case SGILOGDATAFMT_8BIT:
- sp->tfunc = Luv32toRGB;
- break;
- }
- }
- return (1);
- case PHOTOMETRIC_LOGL:
- if (!LogL16InitState(tif))
- break;
- tif->tif_decoderow = LogL16Decode;
- switch (sp->user_datafmt) {
- case SGILOGDATAFMT_FLOAT:
- sp->tfunc = L16toY;
- break;
- case SGILOGDATAFMT_8BIT:
- sp->tfunc = L16toGry;
- break;
- }
- return (1);
- default:
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Inappropriate photometric interpretation %d for SGILog compression; %s",
- td->td_photometric, "must be either LogLUV or LogL");
- break;
- }
- return (0);
-}
-
-static int
-LogLuvSetupEncode(TIFF* tif)
-{
- LogLuvState* sp = EncoderState(tif);
- TIFFDirectory* td = &tif->tif_dir;
-
- switch (td->td_photometric) {
- case PHOTOMETRIC_LOGLUV:
- if (!LogLuvInitState(tif))
- break;
- if (td->td_compression == COMPRESSION_SGILOG24) {
- tif->tif_encoderow = LogLuvEncode24;
- switch (sp->user_datafmt) {
- case SGILOGDATAFMT_FLOAT:
- sp->tfunc = Luv24fromXYZ;
- break;
- case SGILOGDATAFMT_16BIT:
- sp->tfunc = Luv24fromLuv48;
- break;
- case SGILOGDATAFMT_RAW:
- break;
- default:
- goto notsupported;
- }
- } else {
- tif->tif_encoderow = LogLuvEncode32;
- switch (sp->user_datafmt) {
- case SGILOGDATAFMT_FLOAT:
- sp->tfunc = Luv32fromXYZ;
- break;
- case SGILOGDATAFMT_16BIT:
- sp->tfunc = Luv32fromLuv48;
- break;
- case SGILOGDATAFMT_RAW:
- break;
- default:
- goto notsupported;
- }
- }
- break;
- case PHOTOMETRIC_LOGL:
- if (!LogL16InitState(tif))
- break;
- tif->tif_encoderow = LogL16Encode;
- switch (sp->user_datafmt) {
- case SGILOGDATAFMT_FLOAT:
- sp->tfunc = L16fromY;
- break;
- case SGILOGDATAFMT_16BIT:
- break;
- default:
- goto notsupported;
- }
- break;
- default:
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Inappropriate photometric interpretation %d for SGILog compression; %s",
- td->td_photometric, "must be either LogLUV or LogL");
- break;
- }
- return (1);
-notsupported:
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "SGILog compression supported only for %s, or raw data",
- td->td_photometric == PHOTOMETRIC_LOGL ? "Y, L" : "XYZ, Luv");
- return (0);
-}
-
-static void
-LogLuvClose(TIFF* tif)
-{
- TIFFDirectory *td = &tif->tif_dir;
-
- /*
- * For consistency, we always want to write out the same
- * bitspersample and sampleformat for our TIFF file,
- * regardless of the data format being used by the application.
- * Since this routine is called after tags have been set but
- * before they have been recorded in the file, we reset them here.
- */
- td->td_samplesperpixel =
- (td->td_photometric == PHOTOMETRIC_LOGL) ? 1 : 3;
- td->td_bitspersample = 16;
- td->td_sampleformat = SAMPLEFORMAT_INT;
-}
-
-static void
-LogLuvCleanup(TIFF* tif)
-{
- LogLuvState* sp = (LogLuvState *)tif->tif_data;
-
- assert(sp != 0);
-
- tif->tif_tagmethods.vgetfield = sp->vgetparent;
- tif->tif_tagmethods.vsetfield = sp->vsetparent;
-
- if (sp->tbuf)
- _TIFFfree(sp->tbuf);
- _TIFFfree(sp);
- tif->tif_data = NULL;
-
- _TIFFSetDefaultCompressionState(tif);
-}
-
-static int
-LogLuvVSetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- LogLuvState* sp = DecoderState(tif);
- int bps, fmt;
-
- switch (tag) {
- case TIFFTAG_SGILOGDATAFMT:
- sp->user_datafmt = va_arg(ap, int);
- /*
- * Tweak the TIFF header so that the rest of libtiff knows what
- * size of data will be passed between app and library, and
- * assume that the app knows what it is doing and is not
- * confused by these header manipulations...
- */
- switch (sp->user_datafmt) {
- case SGILOGDATAFMT_FLOAT:
- bps = 32, fmt = SAMPLEFORMAT_IEEEFP;
- break;
- case SGILOGDATAFMT_16BIT:
- bps = 16, fmt = SAMPLEFORMAT_INT;
- break;
- case SGILOGDATAFMT_RAW:
- bps = 32, fmt = SAMPLEFORMAT_UINT;
- TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, 1);
- break;
- case SGILOGDATAFMT_8BIT:
- bps = 8, fmt = SAMPLEFORMAT_UINT;
- break;
- default:
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Unknown data format %d for LogLuv compression",
- sp->user_datafmt);
- return (0);
- }
- TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, bps);
- TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, fmt);
- /*
- * Must recalculate sizes should bits/sample change.
- */
- tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;
- tif->tif_scanlinesize = TIFFScanlineSize(tif);
- return (1);
- case TIFFTAG_SGILOGENCODE:
- sp->encode_meth = va_arg(ap, int);
- if (sp->encode_meth != SGILOGENCODE_NODITHER &&
- sp->encode_meth != SGILOGENCODE_RANDITHER) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Unknown encoding %d for LogLuv compression",
- sp->encode_meth);
- return (0);
- }
- return (1);
- default:
- return (*sp->vsetparent)(tif, tag, ap);
- }
-}
-
-static int
-LogLuvVGetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- LogLuvState *sp = (LogLuvState *)tif->tif_data;
-
- switch (tag) {
- case TIFFTAG_SGILOGDATAFMT:
- *va_arg(ap, int*) = sp->user_datafmt;
- return (1);
- default:
- return (*sp->vgetparent)(tif, tag, ap);
- }
-}
-
-static const TIFFFieldInfo LogLuvFieldInfo[] = {
- { TIFFTAG_SGILOGDATAFMT, 0, 0, TIFF_SHORT, FIELD_PSEUDO,
- TRUE, FALSE, "SGILogDataFmt"},
- { TIFFTAG_SGILOGENCODE, 0, 0, TIFF_SHORT, FIELD_PSEUDO,
- TRUE, FALSE, "SGILogEncode"}
-};
-
-int
-TIFFInitSGILog(TIFF* tif, int scheme)
-{
- static const char module[] = "TIFFInitSGILog";
- LogLuvState* sp;
-
- assert(scheme == COMPRESSION_SGILOG24 || scheme == COMPRESSION_SGILOG);
-
- /*
- * Merge codec-specific tag information.
- */
- if (!_TIFFMergeFieldInfo(tif, LogLuvFieldInfo,
- TIFFArrayCount(LogLuvFieldInfo))) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "Merging SGILog codec-specific tags failed");
- return 0;
- }
-
- /*
- * Allocate state block so tag methods have storage to record values.
- */
- tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (LogLuvState));
- if (tif->tif_data == NULL)
- goto bad;
- sp = (LogLuvState*) tif->tif_data;
- _TIFFmemset((tdata_t)sp, 0, sizeof (*sp));
- sp->user_datafmt = SGILOGDATAFMT_UNKNOWN;
- sp->encode_meth = (scheme == COMPRESSION_SGILOG24) ?
- SGILOGENCODE_RANDITHER : SGILOGENCODE_NODITHER;
- sp->tfunc = _logLuvNop;
-
- /*
- * Install codec methods.
- * NB: tif_decoderow & tif_encoderow are filled
- * in at setup time.
- */
- tif->tif_setupdecode = LogLuvSetupDecode;
- tif->tif_decodestrip = LogLuvDecodeStrip;
- tif->tif_decodetile = LogLuvDecodeTile;
- tif->tif_setupencode = LogLuvSetupEncode;
- tif->tif_encodestrip = LogLuvEncodeStrip;
- tif->tif_encodetile = LogLuvEncodeTile;
- tif->tif_close = LogLuvClose;
- tif->tif_cleanup = LogLuvCleanup;
-
- /*
- * Override parent get/set field methods.
- */
- sp->vgetparent = tif->tif_tagmethods.vgetfield;
- tif->tif_tagmethods.vgetfield = LogLuvVGetField; /* hook for codec tags */
- sp->vsetparent = tif->tif_tagmethods.vsetfield;
- tif->tif_tagmethods.vsetfield = LogLuvVSetField; /* hook for codec tags */
-
- return (1);
-bad:
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: No space for LogLuv state block", tif->tif_name);
- return (0);
-}
-#endif /* LOGLUV_SUPPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_lzw.c b/src/3rdparty/libtiff/libtiff/tif_lzw.c
deleted file mode 100644
index bc4dac6537..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_lzw.c
+++ /dev/null
@@ -1,1122 +0,0 @@
-/* $Id: tif_lzw.c,v 1.29.2.5 2009-06-22 04:57:31 fwarmerdam Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#include "tiffiop.h"
-#ifdef LZW_SUPPORT
-/*
- * TIFF Library.
- * Rev 5.0 Lempel-Ziv & Welch Compression Support
- *
- * This code is derived from the compress program whose code is
- * derived from software contributed to Berkeley by James A. Woods,
- * derived from original work by Spencer Thomas and Joseph Orost.
- *
- * The original Berkeley copyright notice appears below in its entirety.
- */
-#include "tif_predict.h"
-
-#include <stdio.h>
-
-/*
- * NB: The 5.0 spec describes a different algorithm than Aldus
- * implements. Specifically, Aldus does code length transitions
- * one code earlier than should be done (for real LZW).
- * Earlier versions of this library implemented the correct
- * LZW algorithm, but emitted codes in a bit order opposite
- * to the TIFF spec. Thus, to maintain compatibility w/ Aldus
- * we interpret MSB-LSB ordered codes to be images written w/
- * old versions of this library, but otherwise adhere to the
- * Aldus "off by one" algorithm.
- *
- * Future revisions to the TIFF spec are expected to "clarify this issue".
- */
-#define LZW_COMPAT /* include backwards compatibility code */
-/*
- * Each strip of data is supposed to be terminated by a CODE_EOI.
- * If the following #define is included, the decoder will also
- * check for end-of-strip w/o seeing this code. This makes the
- * library more robust, but also slower.
- */
-#define LZW_CHECKEOS /* include checks for strips w/o EOI code */
-
-#define MAXCODE(n) ((1L<<(n))-1)
-/*
- * The TIFF spec specifies that encoded bit
- * strings range from 9 to 12 bits.
- */
-#define BITS_MIN 9 /* start with 9 bits */
-#define BITS_MAX 12 /* max of 12 bit strings */
-/* predefined codes */
-#define CODE_CLEAR 256 /* code to clear string table */
-#define CODE_EOI 257 /* end-of-information code */
-#define CODE_FIRST 258 /* first free code entry */
-#define CODE_MAX MAXCODE(BITS_MAX)
-#define HSIZE 9001L /* 91% occupancy */
-#define HSHIFT (13-8)
-#ifdef LZW_COMPAT
-/* NB: +1024 is for compatibility with old files */
-#define CSIZE (MAXCODE(BITS_MAX)+1024L)
-#else
-#define CSIZE (MAXCODE(BITS_MAX)+1L)
-#endif
-
-/*
- * State block for each open TIFF file using LZW
- * compression/decompression. Note that the predictor
- * state block must be first in this data structure.
- */
-typedef struct {
- TIFFPredictorState predict; /* predictor super class */
-
- unsigned short nbits; /* # of bits/code */
- unsigned short maxcode; /* maximum code for lzw_nbits */
- unsigned short free_ent; /* next free entry in hash table */
- long nextdata; /* next bits of i/o */
- long nextbits; /* # of valid bits in lzw_nextdata */
-
- int rw_mode; /* preserve rw_mode from init */
-} LZWBaseState;
-
-#define lzw_nbits base.nbits
-#define lzw_maxcode base.maxcode
-#define lzw_free_ent base.free_ent
-#define lzw_nextdata base.nextdata
-#define lzw_nextbits base.nextbits
-
-/*
- * Encoding-specific state.
- */
-typedef uint16 hcode_t; /* codes fit in 16 bits */
-typedef struct {
- long hash;
- hcode_t code;
-} hash_t;
-
-/*
- * Decoding-specific state.
- */
-typedef struct code_ent {
- struct code_ent *next;
- unsigned short length; /* string len, including this token */
- unsigned char value; /* data value */
- unsigned char firstchar; /* first token of string */
-} code_t;
-
-typedef int (*decodeFunc)(TIFF*, tidata_t, tsize_t, tsample_t);
-
-typedef struct {
- LZWBaseState base;
-
- /* Decoding specific data */
- long dec_nbitsmask; /* lzw_nbits 1 bits, right adjusted */
- long dec_restart; /* restart count */
-#ifdef LZW_CHECKEOS
- long dec_bitsleft; /* available bits in raw data */
-#endif
- decodeFunc dec_decode; /* regular or backwards compatible */
- code_t* dec_codep; /* current recognized code */
- code_t* dec_oldcodep; /* previously recognized code */
- code_t* dec_free_entp; /* next free entry */
- code_t* dec_maxcodep; /* max available entry */
- code_t* dec_codetab; /* kept separate for small machines */
-
- /* Encoding specific data */
- int enc_oldcode; /* last code encountered */
- long enc_checkpoint; /* point at which to clear table */
-#define CHECK_GAP 10000 /* enc_ratio check interval */
- long enc_ratio; /* current compression ratio */
- long enc_incount; /* (input) data bytes encoded */
- long enc_outcount; /* encoded (output) bytes */
- tidata_t enc_rawlimit; /* bound on tif_rawdata buffer */
- hash_t* enc_hashtab; /* kept separate for small machines */
-} LZWCodecState;
-
-#define LZWState(tif) ((LZWBaseState*) (tif)->tif_data)
-#define DecoderState(tif) ((LZWCodecState*) LZWState(tif))
-#define EncoderState(tif) ((LZWCodecState*) LZWState(tif))
-
-static int LZWDecode(TIFF*, tidata_t, tsize_t, tsample_t);
-#ifdef LZW_COMPAT
-static int LZWDecodeCompat(TIFF*, tidata_t, tsize_t, tsample_t);
-#endif
-static void cl_hash(LZWCodecState*);
-
-/*
- * LZW Decoder.
- */
-
-#ifdef LZW_CHECKEOS
-/*
- * This check shouldn't be necessary because each
- * strip is suppose to be terminated with CODE_EOI.
- */
-#define NextCode(_tif, _sp, _bp, _code, _get) { \
- if ((_sp)->dec_bitsleft < nbits) { \
- TIFFWarningExt(_tif->tif_clientdata, _tif->tif_name, \
- "LZWDecode: Strip %d not terminated with EOI code", \
- _tif->tif_curstrip); \
- _code = CODE_EOI; \
- } else { \
- _get(_sp,_bp,_code); \
- (_sp)->dec_bitsleft -= nbits; \
- } \
-}
-#else
-#define NextCode(tif, sp, bp, code, get) get(sp, bp, code)
-#endif
-
-static int
-LZWSetupDecode(TIFF* tif)
-{
- LZWCodecState* sp = DecoderState(tif);
- static const char module[] = " LZWSetupDecode";
- int code;
-
- if( sp == NULL )
- {
- /*
- * Allocate state block so tag methods have storage to record
- * values.
- */
- tif->tif_data = (tidata_t) _TIFFmalloc(sizeof(LZWCodecState));
- if (tif->tif_data == NULL)
- {
- TIFFErrorExt(tif->tif_clientdata, "LZWPreDecode", "No space for LZW state block");
- return (0);
- }
-
- DecoderState(tif)->dec_codetab = NULL;
- DecoderState(tif)->dec_decode = NULL;
-
- /*
- * Setup predictor setup.
- */
- (void) TIFFPredictorInit(tif);
-
- sp = DecoderState(tif);
- }
-
- assert(sp != NULL);
-
- if (sp->dec_codetab == NULL) {
- sp->dec_codetab = (code_t*)_TIFFmalloc(CSIZE*sizeof (code_t));
- if (sp->dec_codetab == NULL) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "No space for LZW code table");
- return (0);
- }
- /*
- * Pre-load the table.
- */
- code = 255;
- do {
- sp->dec_codetab[code].value = code;
- sp->dec_codetab[code].firstchar = code;
- sp->dec_codetab[code].length = 1;
- sp->dec_codetab[code].next = NULL;
- } while (code--);
- /*
- * Zero-out the unused entries
- */
- _TIFFmemset(&sp->dec_codetab[CODE_CLEAR], 0,
- (CODE_FIRST - CODE_CLEAR) * sizeof (code_t));
- }
- return (1);
-}
-
-/*
- * Setup state for decoding a strip.
- */
-static int
-LZWPreDecode(TIFF* tif, tsample_t s)
-{
- LZWCodecState *sp = DecoderState(tif);
-
- (void) s;
- assert(sp != NULL);
- if( sp->dec_codetab == NULL )
- {
- tif->tif_setupdecode( tif );
- }
-
- /*
- * Check for old bit-reversed codes.
- */
- if (tif->tif_rawdata[0] == 0 && (tif->tif_rawdata[1] & 0x1)) {
-#ifdef LZW_COMPAT
- if (!sp->dec_decode) {
- TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
- "Old-style LZW codes, convert file");
- /*
- * Override default decoding methods with
- * ones that deal with the old coding.
- * Otherwise the predictor versions set
- * above will call the compatibility routines
- * through the dec_decode method.
- */
- tif->tif_decoderow = LZWDecodeCompat;
- tif->tif_decodestrip = LZWDecodeCompat;
- tif->tif_decodetile = LZWDecodeCompat;
- /*
- * If doing horizontal differencing, must
- * re-setup the predictor logic since we
- * switched the basic decoder methods...
- */
- (*tif->tif_setupdecode)(tif);
- sp->dec_decode = LZWDecodeCompat;
- }
- sp->lzw_maxcode = MAXCODE(BITS_MIN);
-#else /* !LZW_COMPAT */
- if (!sp->dec_decode) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Old-style LZW codes not supported");
- sp->dec_decode = LZWDecode;
- }
- return (0);
-#endif/* !LZW_COMPAT */
- } else {
- sp->lzw_maxcode = MAXCODE(BITS_MIN)-1;
- sp->dec_decode = LZWDecode;
- }
- sp->lzw_nbits = BITS_MIN;
- sp->lzw_nextbits = 0;
- sp->lzw_nextdata = 0;
-
- sp->dec_restart = 0;
- sp->dec_nbitsmask = MAXCODE(BITS_MIN);
-#ifdef LZW_CHECKEOS
- sp->dec_bitsleft = tif->tif_rawcc << 3;
-#endif
- sp->dec_free_entp = sp->dec_codetab + CODE_FIRST;
- /*
- * Zero entries that are not yet filled in. We do
- * this to guard against bogus input data that causes
- * us to index into undefined entries. If you can
- * come up with a way to safely bounds-check input codes
- * while decoding then you can remove this operation.
- */
- _TIFFmemset(sp->dec_free_entp, 0, (CSIZE-CODE_FIRST)*sizeof (code_t));
- sp->dec_oldcodep = &sp->dec_codetab[-1];
- sp->dec_maxcodep = &sp->dec_codetab[sp->dec_nbitsmask-1];
- return (1);
-}
-
-/*
- * Decode a "hunk of data".
- */
-#define GetNextCode(sp, bp, code) { \
- nextdata = (nextdata<<8) | *(bp)++; \
- nextbits += 8; \
- if (nextbits < nbits) { \
- nextdata = (nextdata<<8) | *(bp)++; \
- nextbits += 8; \
- } \
- code = (hcode_t)((nextdata >> (nextbits-nbits)) & nbitsmask); \
- nextbits -= nbits; \
-}
-
-static void
-codeLoop(TIFF* tif)
-{
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "LZWDecode: Bogus encoding, loop in the code table; scanline %d",
- tif->tif_row);
-}
-
-static int
-LZWDecode(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
-{
- LZWCodecState *sp = DecoderState(tif);
- char *op = (char*) op0;
- long occ = (long) occ0;
- char *tp;
- unsigned char *bp;
- hcode_t code;
- int len;
- long nbits, nextbits, nextdata, nbitsmask;
- code_t *codep, *free_entp, *maxcodep, *oldcodep;
-
- (void) s;
- assert(sp != NULL);
- assert(sp->dec_codetab != NULL);
- /*
- * Restart interrupted output operation.
- */
- if (sp->dec_restart) {
- long residue;
-
- codep = sp->dec_codep;
- residue = codep->length - sp->dec_restart;
- if (residue > occ) {
- /*
- * Residue from previous decode is sufficient
- * to satisfy decode request. Skip to the
- * start of the decoded string, place decoded
- * values in the output buffer, and return.
- */
- sp->dec_restart += occ;
- do {
- codep = codep->next;
- } while (--residue > occ && codep);
- if (codep) {
- tp = op + occ;
- do {
- *--tp = codep->value;
- codep = codep->next;
- } while (--occ && codep);
- }
- return (1);
- }
- /*
- * Residue satisfies only part of the decode request.
- */
- op += residue, occ -= residue;
- tp = op;
- do {
- int t;
- --tp;
- t = codep->value;
- codep = codep->next;
- *tp = t;
- } while (--residue && codep);
- sp->dec_restart = 0;
- }
-
- bp = (unsigned char *)tif->tif_rawcp;
- nbits = sp->lzw_nbits;
- nextdata = sp->lzw_nextdata;
- nextbits = sp->lzw_nextbits;
- nbitsmask = sp->dec_nbitsmask;
- oldcodep = sp->dec_oldcodep;
- free_entp = sp->dec_free_entp;
- maxcodep = sp->dec_maxcodep;
-
- while (occ > 0) {
- NextCode(tif, sp, bp, code, GetNextCode);
- if (code == CODE_EOI)
- break;
- if (code == CODE_CLEAR) {
- free_entp = sp->dec_codetab + CODE_FIRST;
- _TIFFmemset(free_entp, 0,
- (CSIZE - CODE_FIRST) * sizeof (code_t));
- nbits = BITS_MIN;
- nbitsmask = MAXCODE(BITS_MIN);
- maxcodep = sp->dec_codetab + nbitsmask-1;
- NextCode(tif, sp, bp, code, GetNextCode);
- if (code == CODE_EOI)
- break;
- if (code == CODE_CLEAR) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "LZWDecode: Corrupted LZW table at scanline %d",
- tif->tif_row);
- return (0);
- }
- *op++ = (char)code, occ--;
- oldcodep = sp->dec_codetab + code;
- continue;
- }
- codep = sp->dec_codetab + code;
-
- /*
- * Add the new entry to the code table.
- */
- if (free_entp < &sp->dec_codetab[0] ||
- free_entp >= &sp->dec_codetab[CSIZE]) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "LZWDecode: Corrupted LZW table at scanline %d",
- tif->tif_row);
- return (0);
- }
-
- free_entp->next = oldcodep;
- if (free_entp->next < &sp->dec_codetab[0] ||
- free_entp->next >= &sp->dec_codetab[CSIZE]) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "LZWDecode: Corrupted LZW table at scanline %d",
- tif->tif_row);
- return (0);
- }
- free_entp->firstchar = free_entp->next->firstchar;
- free_entp->length = free_entp->next->length+1;
- free_entp->value = (codep < free_entp) ?
- codep->firstchar : free_entp->firstchar;
- if (++free_entp > maxcodep) {
- if (++nbits > BITS_MAX) /* should not happen */
- nbits = BITS_MAX;
- nbitsmask = MAXCODE(nbits);
- maxcodep = sp->dec_codetab + nbitsmask-1;
- }
- oldcodep = codep;
- if (code >= 256) {
- /*
- * Code maps to a string, copy string
- * value to output (written in reverse).
- */
- if(codep->length == 0) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "LZWDecode: Wrong length of decoded string: "
- "data probably corrupted at scanline %d",
- tif->tif_row);
- return (0);
- }
- if (codep->length > occ) {
- /*
- * String is too long for decode buffer,
- * locate portion that will fit, copy to
- * the decode buffer, and setup restart
- * logic for the next decoding call.
- */
- sp->dec_codep = codep;
- do {
- codep = codep->next;
- } while (codep && codep->length > occ);
- if (codep) {
- sp->dec_restart = occ;
- tp = op + occ;
- do {
- *--tp = codep->value;
- codep = codep->next;
- } while (--occ && codep);
- if (codep)
- codeLoop(tif);
- }
- break;
- }
- len = codep->length;
- tp = op + len;
- do {
- int t;
- --tp;
- t = codep->value;
- codep = codep->next;
- *tp = t;
- } while (codep && tp > op);
- if (codep) {
- codeLoop(tif);
- break;
- }
- op += len, occ -= len;
- } else
- *op++ = (char)code, occ--;
- }
-
- tif->tif_rawcp = (tidata_t) bp;
- sp->lzw_nbits = (unsigned short) nbits;
- sp->lzw_nextdata = nextdata;
- sp->lzw_nextbits = nextbits;
- sp->dec_nbitsmask = nbitsmask;
- sp->dec_oldcodep = oldcodep;
- sp->dec_free_entp = free_entp;
- sp->dec_maxcodep = maxcodep;
-
- if (occ > 0) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "LZWDecode: Not enough data at scanline %d (short %ld bytes)",
- tif->tif_row, occ);
- return (0);
- }
- return (1);
-}
-
-#ifdef LZW_COMPAT
-/*
- * Decode a "hunk of data" for old images.
- */
-#define GetNextCodeCompat(sp, bp, code) { \
- nextdata |= (unsigned long) *(bp)++ << nextbits; \
- nextbits += 8; \
- if (nextbits < nbits) { \
- nextdata |= (unsigned long) *(bp)++ << nextbits;\
- nextbits += 8; \
- } \
- code = (hcode_t)(nextdata & nbitsmask); \
- nextdata >>= nbits; \
- nextbits -= nbits; \
-}
-
-static int
-LZWDecodeCompat(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
-{
- LZWCodecState *sp = DecoderState(tif);
- char *op = (char*) op0;
- long occ = (long) occ0;
- char *tp;
- unsigned char *bp;
- int code, nbits;
- long nextbits, nextdata, nbitsmask;
- code_t *codep, *free_entp, *maxcodep, *oldcodep;
-
- (void) s;
- assert(sp != NULL);
- /*
- * Restart interrupted output operation.
- */
- if (sp->dec_restart) {
- long residue;
-
- codep = sp->dec_codep;
- residue = codep->length - sp->dec_restart;
- if (residue > occ) {
- /*
- * Residue from previous decode is sufficient
- * to satisfy decode request. Skip to the
- * start of the decoded string, place decoded
- * values in the output buffer, and return.
- */
- sp->dec_restart += occ;
- do {
- codep = codep->next;
- } while (--residue > occ);
- tp = op + occ;
- do {
- *--tp = codep->value;
- codep = codep->next;
- } while (--occ);
- return (1);
- }
- /*
- * Residue satisfies only part of the decode request.
- */
- op += residue, occ -= residue;
- tp = op;
- do {
- *--tp = codep->value;
- codep = codep->next;
- } while (--residue);
- sp->dec_restart = 0;
- }
-
- bp = (unsigned char *)tif->tif_rawcp;
- nbits = sp->lzw_nbits;
- nextdata = sp->lzw_nextdata;
- nextbits = sp->lzw_nextbits;
- nbitsmask = sp->dec_nbitsmask;
- oldcodep = sp->dec_oldcodep;
- free_entp = sp->dec_free_entp;
- maxcodep = sp->dec_maxcodep;
-
- while (occ > 0) {
- NextCode(tif, sp, bp, code, GetNextCodeCompat);
- if (code == CODE_EOI)
- break;
- if (code == CODE_CLEAR) {
- free_entp = sp->dec_codetab + CODE_FIRST;
- _TIFFmemset(free_entp, 0,
- (CSIZE - CODE_FIRST) * sizeof (code_t));
- nbits = BITS_MIN;
- nbitsmask = MAXCODE(BITS_MIN);
- maxcodep = sp->dec_codetab + nbitsmask;
- NextCode(tif, sp, bp, code, GetNextCodeCompat);
- if (code == CODE_EOI)
- break;
- if (code == CODE_CLEAR) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "LZWDecode: Corrupted LZW table at scanline %d",
- tif->tif_row);
- return (0);
- }
- *op++ = code, occ--;
- oldcodep = sp->dec_codetab + code;
- continue;
- }
- codep = sp->dec_codetab + code;
-
- /*
- * Add the new entry to the code table.
- */
- if (free_entp < &sp->dec_codetab[0] ||
- free_entp >= &sp->dec_codetab[CSIZE]) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "LZWDecodeCompat: Corrupted LZW table at scanline %d",
- tif->tif_row);
- return (0);
- }
-
- free_entp->next = oldcodep;
- if (free_entp->next < &sp->dec_codetab[0] ||
- free_entp->next >= &sp->dec_codetab[CSIZE]) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "LZWDecodeCompat: Corrupted LZW table at scanline %d",
- tif->tif_row);
- return (0);
- }
- free_entp->firstchar = free_entp->next->firstchar;
- free_entp->length = free_entp->next->length+1;
- free_entp->value = (codep < free_entp) ?
- codep->firstchar : free_entp->firstchar;
- if (++free_entp > maxcodep) {
- if (++nbits > BITS_MAX) /* should not happen */
- nbits = BITS_MAX;
- nbitsmask = MAXCODE(nbits);
- maxcodep = sp->dec_codetab + nbitsmask;
- }
- oldcodep = codep;
- if (code >= 256) {
- char *op_orig = op;
- /*
- * Code maps to a string, copy string
- * value to output (written in reverse).
- */
- if(codep->length == 0) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "LZWDecodeCompat: Wrong length of decoded "
- "string: data probably corrupted at scanline %d",
- tif->tif_row);
- return (0);
- }
- if (codep->length > occ) {
- /*
- * String is too long for decode buffer,
- * locate portion that will fit, copy to
- * the decode buffer, and setup restart
- * logic for the next decoding call.
- */
- sp->dec_codep = codep;
- do {
- codep = codep->next;
- } while (codep->length > occ);
- sp->dec_restart = occ;
- tp = op + occ;
- do {
- *--tp = codep->value;
- codep = codep->next;
- } while (--occ);
- break;
- }
- op += codep->length, occ -= codep->length;
- tp = op;
- do {
- *--tp = codep->value;
- } while( (codep = codep->next) != NULL && tp > op_orig);
- } else
- *op++ = code, occ--;
- }
-
- tif->tif_rawcp = (tidata_t) bp;
- sp->lzw_nbits = nbits;
- sp->lzw_nextdata = nextdata;
- sp->lzw_nextbits = nextbits;
- sp->dec_nbitsmask = nbitsmask;
- sp->dec_oldcodep = oldcodep;
- sp->dec_free_entp = free_entp;
- sp->dec_maxcodep = maxcodep;
-
- if (occ > 0) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "LZWDecodeCompat: Not enough data at scanline %d (short %ld bytes)",
- tif->tif_row, occ);
- return (0);
- }
- return (1);
-}
-#endif /* LZW_COMPAT */
-
-/*
- * LZW Encoding.
- */
-
-static int
-LZWSetupEncode(TIFF* tif)
-{
- LZWCodecState* sp = EncoderState(tif);
- static const char module[] = "LZWSetupEncode";
-
- assert(sp != NULL);
- sp->enc_hashtab = (hash_t*) _TIFFmalloc(HSIZE*sizeof (hash_t));
- if (sp->enc_hashtab == NULL) {
- TIFFErrorExt(tif->tif_clientdata, module, "No space for LZW hash table");
- return (0);
- }
- return (1);
-}
-
-/*
- * Reset encoding state at the start of a strip.
- */
-static int
-LZWPreEncode(TIFF* tif, tsample_t s)
-{
- LZWCodecState *sp = EncoderState(tif);
-
- (void) s;
- assert(sp != NULL);
-
- if( sp->enc_hashtab == NULL )
- {
- tif->tif_setupencode( tif );
- }
-
- sp->lzw_nbits = BITS_MIN;
- sp->lzw_maxcode = MAXCODE(BITS_MIN);
- sp->lzw_free_ent = CODE_FIRST;
- sp->lzw_nextbits = 0;
- sp->lzw_nextdata = 0;
- sp->enc_checkpoint = CHECK_GAP;
- sp->enc_ratio = 0;
- sp->enc_incount = 0;
- sp->enc_outcount = 0;
- /*
- * The 4 here insures there is space for 2 max-sized
- * codes in LZWEncode and LZWPostDecode.
- */
- sp->enc_rawlimit = tif->tif_rawdata + tif->tif_rawdatasize-1 - 4;
- cl_hash(sp); /* clear hash table */
- sp->enc_oldcode = (hcode_t) -1; /* generates CODE_CLEAR in LZWEncode */
- return (1);
-}
-
-#define CALCRATIO(sp, rat) { \
- if (incount > 0x007fffff) { /* NB: shift will overflow */\
- rat = outcount >> 8; \
- rat = (rat == 0 ? 0x7fffffff : incount/rat); \
- } else \
- rat = (incount<<8) / outcount; \
-}
-#define PutNextCode(op, c) { \
- nextdata = (nextdata << nbits) | c; \
- nextbits += nbits; \
- *op++ = (unsigned char)(nextdata >> (nextbits-8)); \
- nextbits -= 8; \
- if (nextbits >= 8) { \
- *op++ = (unsigned char)(nextdata >> (nextbits-8)); \
- nextbits -= 8; \
- } \
- outcount += nbits; \
-}
-
-/*
- * Encode a chunk of pixels.
- *
- * Uses an open addressing double hashing (no chaining) on the
- * prefix code/next character combination. We do a variant of
- * Knuth's algorithm D (vol. 3, sec. 6.4) along with G. Knott's
- * relatively-prime secondary probe. Here, the modular division
- * first probe is gives way to a faster exclusive-or manipulation.
- * Also do block compression with an adaptive reset, whereby the
- * code table is cleared when the compression ratio decreases,
- * but after the table fills. The variable-length output codes
- * are re-sized at this point, and a CODE_CLEAR is generated
- * for the decoder.
- */
-static int
-LZWEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
- register LZWCodecState *sp = EncoderState(tif);
- register long fcode;
- register hash_t *hp;
- register int h, c;
- hcode_t ent;
- long disp;
- long incount, outcount, checkpoint;
- long nextdata, nextbits;
- int free_ent, maxcode, nbits;
- tidata_t op, limit;
-
- (void) s;
- if (sp == NULL)
- return (0);
-
- assert(sp->enc_hashtab != NULL);
-
- /*
- * Load local state.
- */
- incount = sp->enc_incount;
- outcount = sp->enc_outcount;
- checkpoint = sp->enc_checkpoint;
- nextdata = sp->lzw_nextdata;
- nextbits = sp->lzw_nextbits;
- free_ent = sp->lzw_free_ent;
- maxcode = sp->lzw_maxcode;
- nbits = sp->lzw_nbits;
- op = tif->tif_rawcp;
- limit = sp->enc_rawlimit;
- ent = sp->enc_oldcode;
-
- if (ent == (hcode_t) -1 && cc > 0) {
- /*
- * NB: This is safe because it can only happen
- * at the start of a strip where we know there
- * is space in the data buffer.
- */
- PutNextCode(op, CODE_CLEAR);
- ent = *bp++; cc--; incount++;
- }
- while (cc > 0) {
- c = *bp++; cc--; incount++;
- fcode = ((long)c << BITS_MAX) + ent;
- h = (c << HSHIFT) ^ ent; /* xor hashing */
-#ifdef _WINDOWS
- /*
- * Check hash index for an overflow.
- */
- if (h >= HSIZE)
- h -= HSIZE;
-#endif
- hp = &sp->enc_hashtab[h];
- if (hp->hash == fcode) {
- ent = hp->code;
- continue;
- }
- if (hp->hash >= 0) {
- /*
- * Primary hash failed, check secondary hash.
- */
- disp = HSIZE - h;
- if (h == 0)
- disp = 1;
- do {
- /*
- * Avoid pointer arithmetic 'cuz of
- * wraparound problems with segments.
- */
- if ((h -= disp) < 0)
- h += HSIZE;
- hp = &sp->enc_hashtab[h];
- if (hp->hash == fcode) {
- ent = hp->code;
- goto hit;
- }
- } while (hp->hash >= 0);
- }
- /*
- * New entry, emit code and add to table.
- */
- /*
- * Verify there is space in the buffer for the code
- * and any potential Clear code that might be emitted
- * below. The value of limit is setup so that there
- * are at least 4 bytes free--room for 2 codes.
- */
- if (op > limit) {
- tif->tif_rawcc = (tsize_t)(op - tif->tif_rawdata);
- TIFFFlushData1(tif);
- op = tif->tif_rawdata;
- }
- PutNextCode(op, ent);
- ent = c;
- hp->code = free_ent++;
- hp->hash = fcode;
- if (free_ent == CODE_MAX-1) {
- /* table is full, emit clear code and reset */
- cl_hash(sp);
- sp->enc_ratio = 0;
- incount = 0;
- outcount = 0;
- free_ent = CODE_FIRST;
- PutNextCode(op, CODE_CLEAR);
- nbits = BITS_MIN;
- maxcode = MAXCODE(BITS_MIN);
- } else {
- /*
- * If the next entry is going to be too big for
- * the code size, then increase it, if possible.
- */
- if (free_ent > maxcode) {
- nbits++;
- assert(nbits <= BITS_MAX);
- maxcode = (int) MAXCODE(nbits);
- } else if (incount >= checkpoint) {
- long rat;
- /*
- * Check compression ratio and, if things seem
- * to be slipping, clear the hash table and
- * reset state. The compression ratio is a
- * 24+8-bit fractional number.
- */
- checkpoint = incount+CHECK_GAP;
- CALCRATIO(sp, rat);
- if (rat <= sp->enc_ratio) {
- cl_hash(sp);
- sp->enc_ratio = 0;
- incount = 0;
- outcount = 0;
- free_ent = CODE_FIRST;
- PutNextCode(op, CODE_CLEAR);
- nbits = BITS_MIN;
- maxcode = MAXCODE(BITS_MIN);
- } else
- sp->enc_ratio = rat;
- }
- }
- hit:
- ;
- }
-
- /*
- * Restore global state.
- */
- sp->enc_incount = incount;
- sp->enc_outcount = outcount;
- sp->enc_checkpoint = checkpoint;
- sp->enc_oldcode = ent;
- sp->lzw_nextdata = nextdata;
- sp->lzw_nextbits = nextbits;
- sp->lzw_free_ent = free_ent;
- sp->lzw_maxcode = maxcode;
- sp->lzw_nbits = nbits;
- tif->tif_rawcp = op;
- return (1);
-}
-
-/*
- * Finish off an encoded strip by flushing the last
- * string and tacking on an End Of Information code.
- */
-static int
-LZWPostEncode(TIFF* tif)
-{
- register LZWCodecState *sp = EncoderState(tif);
- tidata_t op = tif->tif_rawcp;
- long nextbits = sp->lzw_nextbits;
- long nextdata = sp->lzw_nextdata;
- long outcount = sp->enc_outcount;
- int nbits = sp->lzw_nbits;
-
- if (op > sp->enc_rawlimit) {
- tif->tif_rawcc = (tsize_t)(op - tif->tif_rawdata);
- TIFFFlushData1(tif);
- op = tif->tif_rawdata;
- }
- if (sp->enc_oldcode != (hcode_t) -1) {
- PutNextCode(op, sp->enc_oldcode);
- sp->enc_oldcode = (hcode_t) -1;
- }
- PutNextCode(op, CODE_EOI);
- if (nextbits > 0)
- *op++ = (unsigned char)(nextdata << (8-nextbits));
- tif->tif_rawcc = (tsize_t)(op - tif->tif_rawdata);
- return (1);
-}
-
-/*
- * Reset encoding hash table.
- */
-static void
-cl_hash(LZWCodecState* sp)
-{
- register hash_t *hp = &sp->enc_hashtab[HSIZE-1];
- register long i = HSIZE-8;
-
- do {
- i -= 8;
- hp[-7].hash = -1;
- hp[-6].hash = -1;
- hp[-5].hash = -1;
- hp[-4].hash = -1;
- hp[-3].hash = -1;
- hp[-2].hash = -1;
- hp[-1].hash = -1;
- hp[ 0].hash = -1;
- hp -= 8;
- } while (i >= 0);
- for (i += 8; i > 0; i--, hp--)
- hp->hash = -1;
-}
-
-static void
-LZWCleanup(TIFF* tif)
-{
- (void)TIFFPredictorCleanup(tif);
-
- assert(tif->tif_data != 0);
-
- if (DecoderState(tif)->dec_codetab)
- _TIFFfree(DecoderState(tif)->dec_codetab);
-
- if (EncoderState(tif)->enc_hashtab)
- _TIFFfree(EncoderState(tif)->enc_hashtab);
-
- _TIFFfree(tif->tif_data);
- tif->tif_data = NULL;
-
- _TIFFSetDefaultCompressionState(tif);
-}
-
-int
-TIFFInitLZW(TIFF* tif, int scheme)
-{
- assert(scheme == COMPRESSION_LZW);
- /*
- * Allocate state block so tag methods have storage to record values.
- */
- tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (LZWCodecState));
- if (tif->tif_data == NULL)
- goto bad;
- DecoderState(tif)->dec_codetab = NULL;
- DecoderState(tif)->dec_decode = NULL;
- EncoderState(tif)->enc_hashtab = NULL;
- LZWState(tif)->rw_mode = tif->tif_mode;
-
- /*
- * Install codec methods.
- */
- tif->tif_setupdecode = LZWSetupDecode;
- tif->tif_predecode = LZWPreDecode;
- tif->tif_decoderow = LZWDecode;
- tif->tif_decodestrip = LZWDecode;
- tif->tif_decodetile = LZWDecode;
- tif->tif_setupencode = LZWSetupEncode;
- tif->tif_preencode = LZWPreEncode;
- tif->tif_postencode = LZWPostEncode;
- tif->tif_encoderow = LZWEncode;
- tif->tif_encodestrip = LZWEncode;
- tif->tif_encodetile = LZWEncode;
- tif->tif_cleanup = LZWCleanup;
- /*
- * Setup predictor setup.
- */
- (void) TIFFPredictorInit(tif);
- return (1);
-bad:
- TIFFErrorExt(tif->tif_clientdata, "TIFFInitLZW",
- "No space for LZW state block");
- return (0);
-}
-
-/*
- * Copyright (c) 1985, 1986 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * James A. Woods, derived from original work by Spencer Thomas
- * and Joseph Orost.
- *
- * Redistribution and use in source and binary forms are permitted
- * provided that the above copyright notice and this paragraph are
- * duplicated in all such forms and that any documentation,
- * advertising materials, and other materials related to such
- * distribution and use acknowledge that the software was developed
- * by the University of California, Berkeley. The name of the
- * University may not be used to endorse or promote products derived
- * from this software without specific prior written permission.
- * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-#endif /* LZW_SUPPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_msdos.c b/src/3rdparty/libtiff/libtiff/tif_msdos.c
deleted file mode 100644
index 72cd39e04b..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_msdos.c
+++ /dev/null
@@ -1,186 +0,0 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_msdos.c,v 1.3 2006/07/25 18:26:33 fwarmerdam Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library MSDOS-specific Routines.
- */
-#if defined(__WATCOMC__) || defined(__BORLANDC__) || defined(_MSC_VER)
-#include <io.h> /* for open, close, etc. function prototypes */
-#include <stdio.h>
-#endif
-#include "tiffiop.h"
-
-static tsize_t
-_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
- return (read((int) fd, buf, size));
-}
-
-static tsize_t
-_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
- return (write((int) fd, buf, size));
-}
-
-static toff_t
-_tiffSeekProc(thandle_t fd, toff_t off, int whence)
-{
- return (lseek((int) fd, (off_t) off, whence));
-}
-
-static int
-_tiffCloseProc(thandle_t fd)
-{
- return (close((int) fd));
-}
-
-#include <sys/stat.h>
-
-static toff_t
-_tiffSizeProc(thandle_t fd)
-{
- struct stat sb;
- return (fstat((int) fd, &sb) < 0 ? 0 : sb.st_size);
-}
-
-static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
- return (0);
-}
-
-static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
-}
-
-/*
- * Open a TIFF file descriptor for read/writing.
- */
-TIFF*
-TIFFFdOpen(int fd, const char* name, const char* mode)
-{
- TIFF* tif;
-
- tif = TIFFClientOpen(name, mode,
- (void*) fd,
- _tiffReadProc, _tiffWriteProc, _tiffSeekProc, _tiffCloseProc,
- _tiffSizeProc, _tiffMapProc, _tiffUnmapProc);
- if (tif)
- tif->tif_fd = fd;
- return (tif);
-}
-
-/*
- * Open a TIFF file for read/writing.
- */
-TIFF*
-TIFFOpen(const char* name, const char* mode)
-{
- static const char module[] = "TIFFOpen";
- int m, fd;
- TIFF *ret;
-
- m = _TIFFgetMode(mode, module);
- if (m == -1)
- return ((TIFF*)0);
- fd = open(name, m|O_BINARY, 0666);
- if (fd < 0) {
- TIFFErrorExt(0, module, "%s: Cannot open", name);
- return ((TIFF*)0);
- }
- return (TIFFFdOpen(fd, name, mode));
-
- ret = TIFFFdOpen(fd, name, mode);
-
- if (ret == NULL) close(fd);
-
- return ret;
-}
-
-#ifdef __GNUC__
-extern char* malloc();
-extern char* realloc();
-#else
-#include <malloc.h>
-#endif
-
-tdata_t
-_TIFFmalloc(tsize_t s)
-{
- return (malloc((size_t) s));
-}
-
-void
-_TIFFfree(tdata_t p)
-{
- free(p);
-}
-
-tdata_t
-_TIFFrealloc(tdata_t p, tsize_t s)
-{
- return (realloc(p, (size_t) s));
-}
-
-void
-_TIFFmemset(tdata_t p, int v, tsize_t c)
-{
- memset(p, v, (size_t) c);
-}
-
-void
-_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c)
-{
- memcpy(d, s, (size_t) c);
-}
-
-int
-_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
-{
- return (memcmp(p1, p2, (size_t) c));
-}
-
-static void
-msdosWarningHandler(const char* module, const char* fmt, va_list ap)
-{
- if (module != NULL)
- fprintf(stderr, "%s: ", module);
- fprintf(stderr, "Warning, ");
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFwarningHandler = msdosWarningHandler;
-
-static void
-msdosErrorHandler(const char* module, const char* fmt, va_list ap)
-{
- if (module != NULL)
- fprintf(stderr, "%s: ", module);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFerrorHandler = msdosErrorHandler;
diff --git a/src/3rdparty/libtiff/libtiff/tif_next.c b/src/3rdparty/libtiff/libtiff/tif_next.c
deleted file mode 100644
index 0e1842d872..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_next.c
+++ /dev/null
@@ -1,147 +0,0 @@
-/* $Id: tif_next.c,v 1.8 2006/10/12 15:00:49 dron Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#include "tiffiop.h"
-#ifdef NEXT_SUPPORT
-/*
- * TIFF Library.
- *
- * NeXT 2-bit Grey Scale Compression Algorithm Support
- */
-
-#define SETPIXEL(op, v) { \
- switch (npixels++ & 3) { \
- case 0: op[0] = (unsigned char) ((v) << 6); break; \
- case 1: op[0] |= (v) << 4; break; \
- case 2: op[0] |= (v) << 2; break; \
- case 3: *op++ |= (v); break; \
- } \
-}
-
-#define LITERALROW 0x00
-#define LITERALSPAN 0x40
-#define WHITE ((1<<2)-1)
-
-static int
-NeXTDecode(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
-{
- unsigned char *bp, *op;
- tsize_t cc;
- tidata_t row;
- tsize_t scanline, n;
-
- (void) s;
- /*
- * Each scanline is assumed to start off as all
- * white (we assume a PhotometricInterpretation
- * of ``min-is-black'').
- */
- for (op = buf, cc = occ; cc-- > 0;)
- *op++ = 0xff;
-
- bp = (unsigned char *)tif->tif_rawcp;
- cc = tif->tif_rawcc;
- scanline = tif->tif_scanlinesize;
- for (row = buf; occ > 0; occ -= scanline, row += scanline) {
- n = *bp++, cc--;
- switch (n) {
- case LITERALROW:
- /*
- * The entire scanline is given as literal values.
- */
- if (cc < scanline)
- goto bad;
- _TIFFmemcpy(row, bp, scanline);
- bp += scanline;
- cc -= scanline;
- break;
- case LITERALSPAN: {
- tsize_t off;
- /*
- * The scanline has a literal span that begins at some
- * offset.
- */
- off = (bp[0] * 256) + bp[1];
- n = (bp[2] * 256) + bp[3];
- if (cc < 4+n || off+n > scanline)
- goto bad;
- _TIFFmemcpy(row+off, bp+4, n);
- bp += 4+n;
- cc -= 4+n;
- break;
- }
- default: {
- uint32 npixels = 0, grey;
- uint32 imagewidth = tif->tif_dir.td_imagewidth;
-
- /*
- * The scanline is composed of a sequence of constant
- * color ``runs''. We shift into ``run mode'' and
- * interpret bytes as codes of the form
- * <color><npixels> until we've filled the scanline.
- */
- op = row;
- for (;;) {
- grey = (n>>6) & 0x3;
- n &= 0x3f;
- /*
- * Ensure the run does not exceed the scanline
- * bounds, potentially resulting in a security
- * issue.
- */
- while (n-- > 0 && npixels < imagewidth)
- SETPIXEL(op, grey);
- if (npixels >= imagewidth)
- break;
- if (cc == 0)
- goto bad;
- n = *bp++, cc--;
- }
- break;
- }
- }
- }
- tif->tif_rawcp = (tidata_t) bp;
- tif->tif_rawcc = cc;
- return (1);
-bad:
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "NeXTDecode: Not enough data for scanline %ld",
- (long) tif->tif_row);
- return (0);
-}
-
-int
-TIFFInitNeXT(TIFF* tif, int scheme)
-{
- (void) scheme;
- tif->tif_decoderow = NeXTDecode;
- tif->tif_decodestrip = NeXTDecode;
- tif->tif_decodetile = NeXTDecode;
- return (1);
-}
-#endif /* NEXT_SUPPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_ojpeg.c b/src/3rdparty/libtiff/libtiff/tif_ojpeg.c
deleted file mode 100644
index 9d1e8043e8..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_ojpeg.c
+++ /dev/null
@@ -1,2427 +0,0 @@
-/* $Id: tif_ojpeg.c,v 1.24.2.4 2009-09-03 20:45:10 bfriesen Exp $ */
-
-/* WARNING: The type of JPEG encapsulation defined by the TIFF Version 6.0
- specification is now totally obsolete and deprecated for new applications and
- images. This file was was created solely in order to read unconverted images
- still present on some users' computer systems. It will never be extended
- to write such files. Writing new-style JPEG compressed TIFFs is implemented
- in tif_jpeg.c.
-
- The code is carefully crafted to robustly read all gathered JPEG-in-TIFF
- testfiles, and anticipate as much as possible all other... But still, it may
- fail on some. If you encounter problems, please report them on the TIFF
- mailing list and/or to Joris Van Damme <info@awaresystems.be>.
-
- Please read the file called "TIFF Technical Note #2" if you need to be
- convinced this compression scheme is bad and breaks TIFF. That document
- is linked to from the LibTiff site <http://www.remotesensing.org/libtiff/>
- and from AWare Systems' TIFF section
- <http://www.awaresystems.be/imaging/tiff.html>. It is also absorbed
- in Adobe's specification supplements, marked "draft" up to this day, but
- supported by the TIFF community.
-
- This file interfaces with Release 6B of the JPEG Library written by the
- Independent JPEG Group. Previous versions of this file required a hack inside
- the LibJpeg library. This version no longer requires that. Remember to
- remove the hack if you update from the old version.
-
- Copyright (c) Joris Van Damme <info@awaresystems.be>
- Copyright (c) AWare Systems <http://www.awaresystems.be/>
-
- The licence agreement for this file is the same as the rest of the LibTiff
- library.
-
- IN NO EVENT SHALL JORIS VAN DAMME OR AWARE SYSTEMS BE LIABLE FOR
- ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- OF THIS SOFTWARE.
-
- Joris Van Damme and/or AWare Systems may be available for custom
- developement. If you like what you see, and need anything similar or related,
- contact <info@awaresystems.be>.
-*/
-
-/* What is what, and what is not?
-
- This decoder starts with an input stream, that is essentially the JpegInterchangeFormat
- stream, if any, followed by the strile data, if any. This stream is read in
- OJPEGReadByte and related functions.
-
- It analyzes the start of this stream, until it encounters non-marker data, i.e.
- compressed image data. Some of the header markers it sees have no actual content,
- like the SOI marker, and APP/COM markers that really shouldn't even be there. Some
- other markers do have content, and the valuable bits and pieces of information
- in these markers are saved, checking all to verify that the stream is more or
- less within expected bounds. This happens inside the OJPEGReadHeaderInfoSecStreamXxx
- functions.
-
- Some OJPEG imagery contains no valid JPEG header markers. This situation is picked
- up on if we've seen no SOF marker when we're at the start of the compressed image
- data. In this case, the tables are read from JpegXxxTables tags, and the other
- bits and pieces of information is initialized to its most basic value. This is
- implemented in the OJPEGReadHeaderInfoSecTablesXxx functions.
-
- When this is complete, a good and valid JPEG header can be assembled, and this is
- passed through to LibJpeg. When that's done, the remainder of the input stream, i.e.
- the compressed image data, can be passed through unchanged. This is done in
- OJPEGWriteStream functions.
-
- LibTiff rightly expects to know the subsampling values before decompression. Just like
- in new-style JPEG-in-TIFF, though, or even more so, actually, the YCbCrsubsampling
- tag is notoriously unreliable. To correct these tag values with the ones inside
- the JPEG stream, the first part of the input stream is pre-scanned in
- OJPEGSubsamplingCorrect, making no note of any other data, reporting no warnings
- or errors, up to the point where either these values are read, or it's clear they
- aren't there. This means that some of the data is read twice, but we feel speed
- in correcting these values is important enough to warrant this sacrifice. Allthough
- there is currently no define or other configuration mechanism to disable this behaviour,
- the actual header scanning is build to robustly respond with error report if it
- should encounter an uncorrected mismatch of subsampling values. See
- OJPEGReadHeaderInfoSecStreamSof.
-
- The restart interval and restart markers are the most tricky part... The restart
- interval can be specified in a tag. It can also be set inside the input JPEG stream.
- It can be used inside the input JPEG stream. If reading from strile data, we've
- consistenly discovered the need to insert restart markers in between the different
- striles, as is also probably the most likely interpretation of the original TIFF 6.0
- specification. With all this setting of interval, and actual use of markers that is not
- predictable at the time of valid JPEG header assembly, the restart thing may turn
- out the Achilles heel of this implementation. Fortunately, most OJPEG writer vendors
- succeed in reading back what they write, which may be the reason why we've been able
- to discover ways that seem to work.
-
- Some special provision is made for planarconfig separate OJPEG files. These seem
- to consistently contain header info, a SOS marker, a plane, SOS marker, plane, SOS,
- and plane. This may or may not be a valid JPEG configuration, we don't know and don't
- care. We want LibTiff to be able to access the planes individually, without huge
- buffering inside LibJpeg, anyway. So we compose headers to feed to LibJpeg, in this
- case, that allow us to pass a single plane such that LibJpeg sees a valid
- single-channel JPEG stream. Locating subsequent SOS markers, and thus subsequent
- planes, is done inside OJPEGReadSecondarySos.
-
- The benefit of the scheme is... that it works, basically. We know of no other that
- does. It works without checking software tag, or otherwise going about things in an
- OJPEG flavor specific manner. Instead, it is a single scheme, that covers the cases
- with and without JpegInterchangeFormat, with and without striles, with part of
- the header in JpegInterchangeFormat and remainder in first strile, etc. It is forgiving
- and robust, may likely work with OJPEG flavors we've not seen yet, and makes most out
- of the data.
-
- Another nice side-effect is that a complete JPEG single valid stream is build if
- planarconfig is not separate (vast majority). We may one day use that to build
- converters to JPEG, and/or to new-style JPEG compression inside TIFF.
-
- A dissadvantage is the lack of random access to the individual striles. This is the
- reason for much of the complicated restart-and-position stuff inside OJPEGPreDecode.
- Applications would do well accessing all striles in order, as this will result in
- a single sequential scan of the input stream, and no restarting of LibJpeg decoding
- session.
-*/
-
-
-#include "tiffiop.h"
-#ifdef OJPEG_SUPPORT
-
-/* Configuration defines here are:
- * JPEG_ENCAP_EXTERNAL: The normal way to call libjpeg, uses longjump. In some environments,
- * like eg LibTiffDelphi, this is not possible. For this reason, the actual calls to
- * libjpeg, with longjump stuff, are encapsulated in dedicated functions. When
- * JPEG_ENCAP_EXTERNAL is defined, these encapsulating functions are declared external
- * to this unit, and can be defined elsewhere to use stuff other then longjump.
- * The default mode, without JPEG_ENCAP_EXTERNAL, implements the call encapsulators
- * here, internally, with normal longjump.
- * SETJMP, LONGJMP, JMP_BUF: On some machines/environments a longjump equivalent is
- * conviniently available, but still it may be worthwhile to use _setjmp or sigsetjmp
- * in place of plain setjmp. These macros will make it easier. It is useless
- * to fiddle with these if you define JPEG_ENCAP_EXTERNAL.
- * OJPEG_BUFFER: Define the size of the desired buffer here. Should be small enough so as to guarantee
- * instant processing, optimal streaming and optimal use of processor cache, but also big
- * enough so as to not result in significant call overhead. It should be at least a few
- * bytes to accomodate some structures (this is verified in asserts), but it would not be
- * sensible to make it this small anyway, and it should be at most 64K since it is indexed
- * with uint16. We recommend 2K.
- * EGYPTIANWALK: You could also define EGYPTIANWALK here, but it is not used anywhere and has
- * absolutely no effect. That is why most people insist the EGYPTIANWALK is a bit silly.
- */
-
-/* #define LIBJPEG_ENCAP_EXTERNAL */
-#define SETJMP(jbuf) setjmp(jbuf)
-#define LONGJMP(jbuf,code) longjmp(jbuf,code)
-#define JMP_BUF jmp_buf
-#define OJPEG_BUFFER 2048
-/* define EGYPTIANWALK */
-
-#define JPEG_MARKER_SOF0 0xC0
-#define JPEG_MARKER_SOF1 0xC1
-#define JPEG_MARKER_SOF3 0xC3
-#define JPEG_MARKER_DHT 0xC4
-#define JPEG_MARKER_RST0 0XD0
-#define JPEG_MARKER_SOI 0xD8
-#define JPEG_MARKER_EOI 0xD9
-#define JPEG_MARKER_SOS 0xDA
-#define JPEG_MARKER_DQT 0xDB
-#define JPEG_MARKER_DRI 0xDD
-#define JPEG_MARKER_APP0 0xE0
-#define JPEG_MARKER_COM 0xFE
-
-#define FIELD_OJPEG_JPEGINTERCHANGEFORMAT (FIELD_CODEC+0)
-#define FIELD_OJPEG_JPEGINTERCHANGEFORMATLENGTH (FIELD_CODEC+1)
-#define FIELD_OJPEG_JPEGQTABLES (FIELD_CODEC+2)
-#define FIELD_OJPEG_JPEGDCTABLES (FIELD_CODEC+3)
-#define FIELD_OJPEG_JPEGACTABLES (FIELD_CODEC+4)
-#define FIELD_OJPEG_JPEGPROC (FIELD_CODEC+5)
-#define FIELD_OJPEG_JPEGRESTARTINTERVAL (FIELD_CODEC+6)
-#define FIELD_OJPEG_COUNT 7
-
-static const TIFFFieldInfo ojpeg_field_info[] = {
- {TIFFTAG_JPEGIFOFFSET,1,1,TIFF_LONG,FIELD_OJPEG_JPEGINTERCHANGEFORMAT,TRUE,FALSE,"JpegInterchangeFormat"},
- {TIFFTAG_JPEGIFBYTECOUNT,1,1,TIFF_LONG,FIELD_OJPEG_JPEGINTERCHANGEFORMATLENGTH,TRUE,FALSE,"JpegInterchangeFormatLength"},
- {TIFFTAG_JPEGQTABLES,TIFF_VARIABLE,TIFF_VARIABLE,TIFF_LONG,FIELD_OJPEG_JPEGQTABLES,FALSE,TRUE,"JpegQTables"},
- {TIFFTAG_JPEGDCTABLES,TIFF_VARIABLE,TIFF_VARIABLE,TIFF_LONG,FIELD_OJPEG_JPEGDCTABLES,FALSE,TRUE,"JpegDcTables"},
- {TIFFTAG_JPEGACTABLES,TIFF_VARIABLE,TIFF_VARIABLE,TIFF_LONG,FIELD_OJPEG_JPEGACTABLES,FALSE,TRUE,"JpegAcTables"},
- {TIFFTAG_JPEGPROC,1,1,TIFF_SHORT,FIELD_OJPEG_JPEGPROC,FALSE,FALSE,"JpegProc"},
- {TIFFTAG_JPEGRESTARTINTERVAL,1,1,TIFF_SHORT,FIELD_OJPEG_JPEGRESTARTINTERVAL,FALSE,FALSE,"JpegRestartInterval"},
-};
-
-#ifndef LIBJPEG_ENCAP_EXTERNAL
-#include <setjmp.h>
-#endif
-
-#include "jpeglib.h"
-#include "jerror.h"
-
-typedef struct jpeg_error_mgr jpeg_error_mgr;
-typedef struct jpeg_common_struct jpeg_common_struct;
-typedef struct jpeg_decompress_struct jpeg_decompress_struct;
-typedef struct jpeg_source_mgr jpeg_source_mgr;
-
-typedef enum {
- osibsNotSetYet,
- osibsJpegInterchangeFormat,
- osibsStrile,
- osibsEof
-} OJPEGStateInBufferSource;
-
-typedef enum {
- ososSoi,
- ososQTable0,ososQTable1,ososQTable2,ososQTable3,
- ososDcTable0,ososDcTable1,ososDcTable2,ososDcTable3,
- ososAcTable0,ososAcTable1,ososAcTable2,ososAcTable3,
- ososDri,
- ososSof,
- ososSos,
- ososCompressed,
- ososRst,
- ososEoi
-} OJPEGStateOutState;
-
-typedef struct {
- TIFF* tif;
- #ifndef LIBJPEG_ENCAP_EXTERNAL
- JMP_BUF exit_jmpbuf;
- #endif
- TIFFVGetMethod vgetparent;
- TIFFVSetMethod vsetparent;
- toff_t file_size;
- uint32 image_width;
- uint32 image_length;
- uint32 strile_width;
- uint32 strile_length;
- uint32 strile_length_total;
- uint8 samples_per_pixel;
- uint8 plane_sample_offset;
- uint8 samples_per_pixel_per_plane;
- toff_t jpeg_interchange_format;
- toff_t jpeg_interchange_format_length;
- uint8 jpeg_proc;
- uint8 subsamplingcorrect;
- uint8 subsamplingcorrect_done;
- uint8 subsampling_tag;
- uint8 subsampling_hor;
- uint8 subsampling_ver;
- uint8 subsampling_force_desubsampling_inside_decompression;
- uint8 qtable_offset_count;
- uint8 dctable_offset_count;
- uint8 actable_offset_count;
- toff_t qtable_offset[3];
- toff_t dctable_offset[3];
- toff_t actable_offset[3];
- uint8* qtable[4];
- uint8* dctable[4];
- uint8* actable[4];
- uint16 restart_interval;
- uint8 restart_index;
- uint8 sof_log;
- uint8 sof_marker_id;
- uint32 sof_x;
- uint32 sof_y;
- uint8 sof_c[3];
- uint8 sof_hv[3];
- uint8 sof_tq[3];
- uint8 sos_cs[3];
- uint8 sos_tda[3];
- struct {
- uint8 log;
- OJPEGStateInBufferSource in_buffer_source;
- tstrile_t in_buffer_next_strile;
- toff_t in_buffer_file_pos;
- toff_t in_buffer_file_togo;
- } sos_end[3];
- uint8 readheader_done;
- uint8 writeheader_done;
- tsample_t write_cursample;
- tstrile_t write_curstrile;
- uint8 libjpeg_session_active;
- uint8 libjpeg_jpeg_query_style;
- jpeg_error_mgr libjpeg_jpeg_error_mgr;
- jpeg_decompress_struct libjpeg_jpeg_decompress_struct;
- jpeg_source_mgr libjpeg_jpeg_source_mgr;
- uint8 subsampling_convert_log;
- uint32 subsampling_convert_ylinelen;
- uint32 subsampling_convert_ylines;
- uint32 subsampling_convert_clinelen;
- uint32 subsampling_convert_clines;
- uint32 subsampling_convert_ybuflen;
- uint32 subsampling_convert_cbuflen;
- uint32 subsampling_convert_ycbcrbuflen;
- uint8* subsampling_convert_ycbcrbuf;
- uint8* subsampling_convert_ybuf;
- uint8* subsampling_convert_cbbuf;
- uint8* subsampling_convert_crbuf;
- uint32 subsampling_convert_ycbcrimagelen;
- uint8** subsampling_convert_ycbcrimage;
- uint32 subsampling_convert_clinelenout;
- uint32 subsampling_convert_state;
- uint32 bytes_per_line; /* if the codec outputs subsampled data, a 'line' in bytes_per_line */
- uint32 lines_per_strile; /* and lines_per_strile means subsampling_ver desubsampled rows */
- OJPEGStateInBufferSource in_buffer_source;
- tstrile_t in_buffer_next_strile;
- tstrile_t in_buffer_strile_count;
- toff_t in_buffer_file_pos;
- uint8 in_buffer_file_pos_log;
- toff_t in_buffer_file_togo;
- uint16 in_buffer_togo;
- uint8* in_buffer_cur;
- uint8 in_buffer[OJPEG_BUFFER];
- OJPEGStateOutState out_state;
- uint8 out_buffer[OJPEG_BUFFER];
- uint8* skip_buffer;
-} OJPEGState;
-
-static int OJPEGVGetField(TIFF* tif, ttag_t tag, va_list ap);
-static int OJPEGVSetField(TIFF* tif, ttag_t tag, va_list ap);
-static void OJPEGPrintDir(TIFF* tif, FILE* fd, long flags);
-
-static int OJPEGSetupDecode(TIFF* tif);
-static int OJPEGPreDecode(TIFF* tif, tsample_t s);
-static int OJPEGPreDecodeSkipRaw(TIFF* tif);
-static int OJPEGPreDecodeSkipScanlines(TIFF* tif);
-static int OJPEGDecode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s);
-static int OJPEGDecodeRaw(TIFF* tif, tidata_t buf, tsize_t cc);
-static int OJPEGDecodeScanlines(TIFF* tif, tidata_t buf, tsize_t cc);
-static void OJPEGPostDecode(TIFF* tif, tidata_t buf, tsize_t cc);
-static int OJPEGSetupEncode(TIFF* tif);
-static int OJPEGPreEncode(TIFF* tif, tsample_t s);
-static int OJPEGEncode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s);
-static int OJPEGPostEncode(TIFF* tif);
-static void OJPEGCleanup(TIFF* tif);
-
-static void OJPEGSubsamplingCorrect(TIFF* tif);
-static int OJPEGReadHeaderInfo(TIFF* tif);
-static int OJPEGReadSecondarySos(TIFF* tif, tsample_t s);
-static int OJPEGWriteHeaderInfo(TIFF* tif);
-static void OJPEGLibjpegSessionAbort(TIFF* tif);
-
-static int OJPEGReadHeaderInfoSec(TIFF* tif);
-static int OJPEGReadHeaderInfoSecStreamDri(TIFF* tif);
-static int OJPEGReadHeaderInfoSecStreamDqt(TIFF* tif);
-static int OJPEGReadHeaderInfoSecStreamDht(TIFF* tif);
-static int OJPEGReadHeaderInfoSecStreamSof(TIFF* tif, uint8 marker_id);
-static int OJPEGReadHeaderInfoSecStreamSos(TIFF* tif);
-static int OJPEGReadHeaderInfoSecTablesQTable(TIFF* tif);
-static int OJPEGReadHeaderInfoSecTablesDcTable(TIFF* tif);
-static int OJPEGReadHeaderInfoSecTablesAcTable(TIFF* tif);
-
-static int OJPEGReadBufferFill(OJPEGState* sp);
-static int OJPEGReadByte(OJPEGState* sp, uint8* byte);
-static int OJPEGReadBytePeek(OJPEGState* sp, uint8* byte);
-static void OJPEGReadByteAdvance(OJPEGState* sp);
-static int OJPEGReadWord(OJPEGState* sp, uint16* word);
-static int OJPEGReadBlock(OJPEGState* sp, uint16 len, void* mem);
-static void OJPEGReadSkip(OJPEGState* sp, uint16 len);
-
-static int OJPEGWriteStream(TIFF* tif, void** mem, uint32* len);
-static void OJPEGWriteStreamSoi(TIFF* tif, void** mem, uint32* len);
-static void OJPEGWriteStreamQTable(TIFF* tif, uint8 table_index, void** mem, uint32* len);
-static void OJPEGWriteStreamDcTable(TIFF* tif, uint8 table_index, void** mem, uint32* len);
-static void OJPEGWriteStreamAcTable(TIFF* tif, uint8 table_index, void** mem, uint32* len);
-static void OJPEGWriteStreamDri(TIFF* tif, void** mem, uint32* len);
-static void OJPEGWriteStreamSof(TIFF* tif, void** mem, uint32* len);
-static void OJPEGWriteStreamSos(TIFF* tif, void** mem, uint32* len);
-static int OJPEGWriteStreamCompressed(TIFF* tif, void** mem, uint32* len);
-static void OJPEGWriteStreamRst(TIFF* tif, void** mem, uint32* len);
-static void OJPEGWriteStreamEoi(TIFF* tif, void** mem, uint32* len);
-
-#ifdef LIBJPEG_ENCAP_EXTERNAL
-extern int jpeg_create_decompress_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo);
-extern int jpeg_read_header_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo, uint8 require_image);
-extern int jpeg_start_decompress_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo);
-extern int jpeg_read_scanlines_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo, void* scanlines, uint32 max_lines);
-extern int jpeg_read_raw_data_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo, void* data, uint32 max_lines);
-extern void jpeg_encap_unwind(TIFF* tif);
-#else
-static int jpeg_create_decompress_encap(OJPEGState* sp, jpeg_decompress_struct* j);
-static int jpeg_read_header_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo, uint8 require_image);
-static int jpeg_start_decompress_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo);
-static int jpeg_read_scanlines_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo, void* scanlines, uint32 max_lines);
-static int jpeg_read_raw_data_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo, void* data, uint32 max_lines);
-static void jpeg_encap_unwind(TIFF* tif);
-#endif
-
-static void OJPEGLibjpegJpegErrorMgrOutputMessage(jpeg_common_struct* cinfo);
-static void OJPEGLibjpegJpegErrorMgrErrorExit(jpeg_common_struct* cinfo);
-static void OJPEGLibjpegJpegSourceMgrInitSource(jpeg_decompress_struct* cinfo);
-static boolean OJPEGLibjpegJpegSourceMgrFillInputBuffer(jpeg_decompress_struct* cinfo);
-static void OJPEGLibjpegJpegSourceMgrSkipInputData(jpeg_decompress_struct* cinfo, long num_bytes);
-static boolean OJPEGLibjpegJpegSourceMgrResyncToRestart(jpeg_decompress_struct* cinfo, int desired);
-static void OJPEGLibjpegJpegSourceMgrTermSource(jpeg_decompress_struct* cinfo);
-
-int
-TIFFInitOJPEG(TIFF* tif, int scheme)
-{
- static const char module[]="TIFFInitOJPEG";
- OJPEGState* sp;
-
- assert(scheme==COMPRESSION_OJPEG);
-
- /*
- * Merge codec-specific tag information.
- */
- if (!_TIFFMergeFieldInfo(tif,ojpeg_field_info,FIELD_OJPEG_COUNT)) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "Merging Old JPEG codec-specific tags failed");
- return 0;
- }
-
- /* state block */
- sp=_TIFFmalloc(sizeof(OJPEGState));
- if (sp==NULL)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"No space for OJPEG state block");
- return(0);
- }
- _TIFFmemset(sp,0,sizeof(OJPEGState));
- sp->tif=tif;
- sp->jpeg_proc=1;
- sp->subsampling_hor=2;
- sp->subsampling_ver=2;
- TIFFSetField(tif,TIFFTAG_YCBCRSUBSAMPLING,2,2);
- /* tif codec methods */
- tif->tif_setupdecode=OJPEGSetupDecode;
- tif->tif_predecode=OJPEGPreDecode;
- tif->tif_postdecode=OJPEGPostDecode;
- tif->tif_decoderow=OJPEGDecode;
- tif->tif_decodestrip=OJPEGDecode;
- tif->tif_decodetile=OJPEGDecode;
- tif->tif_setupencode=OJPEGSetupEncode;
- tif->tif_preencode=OJPEGPreEncode;
- tif->tif_postencode=OJPEGPostEncode;
- tif->tif_encoderow=OJPEGEncode;
- tif->tif_encodestrip=OJPEGEncode;
- tif->tif_encodetile=OJPEGEncode;
- tif->tif_cleanup=OJPEGCleanup;
- tif->tif_data=(tidata_t)sp;
- /* tif tag methods */
- sp->vgetparent=tif->tif_tagmethods.vgetfield;
- tif->tif_tagmethods.vgetfield=OJPEGVGetField;
- sp->vsetparent=tif->tif_tagmethods.vsetfield;
- tif->tif_tagmethods.vsetfield=OJPEGVSetField;
- tif->tif_tagmethods.printdir=OJPEGPrintDir;
- /* Some OJPEG files don't have strip or tile offsets or bytecounts tags.
- Some others do, but have totally meaningless or corrupt values
- in these tags. In these cases, the JpegInterchangeFormat stream is
- reliable. In any case, this decoder reads the compressed data itself,
- from the most reliable locations, and we need to notify encapsulating
- LibTiff not to read raw strips or tiles for us. */
- tif->tif_flags|=TIFF_NOREADRAW;
- return(1);
-}
-
-static int
-OJPEGVGetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- switch(tag)
- {
- case TIFFTAG_JPEGIFOFFSET:
- *va_arg(ap,uint32*)=(uint32)sp->jpeg_interchange_format;
- break;
- case TIFFTAG_JPEGIFBYTECOUNT:
- *va_arg(ap,uint32*)=(uint32)sp->jpeg_interchange_format_length;
- break;
- case TIFFTAG_YCBCRSUBSAMPLING:
- if (sp->subsamplingcorrect_done==0)
- OJPEGSubsamplingCorrect(tif);
- *va_arg(ap,uint16*)=(uint16)sp->subsampling_hor;
- *va_arg(ap,uint16*)=(uint16)sp->subsampling_ver;
- break;
- case TIFFTAG_JPEGQTABLES:
- *va_arg(ap,uint32*)=(uint32)sp->qtable_offset_count;
- *va_arg(ap,void**)=(void*)sp->qtable_offset;
- break;
- case TIFFTAG_JPEGDCTABLES:
- *va_arg(ap,uint32*)=(uint32)sp->dctable_offset_count;
- *va_arg(ap,void**)=(void*)sp->dctable_offset;
- break;
- case TIFFTAG_JPEGACTABLES:
- *va_arg(ap,uint32*)=(uint32)sp->actable_offset_count;
- *va_arg(ap,void**)=(void*)sp->actable_offset;
- break;
- case TIFFTAG_JPEGPROC:
- *va_arg(ap,uint16*)=(uint16)sp->jpeg_proc;
- break;
- case TIFFTAG_JPEGRESTARTINTERVAL:
- *va_arg(ap,uint16*)=sp->restart_interval;
- break;
- default:
- return (*sp->vgetparent)(tif,tag,ap);
- }
- return (1);
-}
-
-static int
-OJPEGVSetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- static const char module[]="OJPEGVSetField";
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint32 ma;
- uint32* mb;
- uint32 n;
- switch(tag)
- {
- case TIFFTAG_JPEGIFOFFSET:
- sp->jpeg_interchange_format=(toff_t)va_arg(ap,uint32);
- break;
- case TIFFTAG_JPEGIFBYTECOUNT:
- sp->jpeg_interchange_format_length=(toff_t)va_arg(ap,uint32);
- break;
- case TIFFTAG_YCBCRSUBSAMPLING:
- sp->subsampling_tag=1;
- sp->subsampling_hor=(uint8)va_arg(ap,int);
- sp->subsampling_ver=(uint8)va_arg(ap,int);
- tif->tif_dir.td_ycbcrsubsampling[0]=sp->subsampling_hor;
- tif->tif_dir.td_ycbcrsubsampling[1]=sp->subsampling_ver;
- break;
- case TIFFTAG_JPEGQTABLES:
- ma=va_arg(ap,uint32);
- if (ma!=0)
- {
- if (ma>3)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"JpegQTables tag has incorrect count");
- return(0);
- }
- sp->qtable_offset_count=(uint8)ma;
- mb=va_arg(ap,uint32*);
- for (n=0; n<ma; n++)
- sp->qtable_offset[n]=(toff_t)mb[n];
- }
- break;
- case TIFFTAG_JPEGDCTABLES:
- ma=va_arg(ap,uint32);
- if (ma!=0)
- {
- if (ma>3)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"JpegDcTables tag has incorrect count");
- return(0);
- }
- sp->dctable_offset_count=(uint8)ma;
- mb=va_arg(ap,uint32*);
- for (n=0; n<ma; n++)
- sp->dctable_offset[n]=(toff_t)mb[n];
- }
- break;
- case TIFFTAG_JPEGACTABLES:
- ma=va_arg(ap,uint32);
- if (ma!=0)
- {
- if (ma>3)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"JpegAcTables tag has incorrect count");
- return(0);
- }
- sp->actable_offset_count=(uint8)ma;
- mb=va_arg(ap,uint32*);
- for (n=0; n<ma; n++)
- sp->actable_offset[n]=(toff_t)mb[n];
- }
- break;
- case TIFFTAG_JPEGPROC:
- sp->jpeg_proc=(uint8)va_arg(ap,uint32);
- break;
- case TIFFTAG_JPEGRESTARTINTERVAL:
- sp->restart_interval=(uint16)va_arg(ap,uint32);
- break;
- default:
- return (*sp->vsetparent)(tif,tag,ap);
- }
- TIFFSetFieldBit(tif,_TIFFFieldWithTag(tif,tag)->field_bit);
- tif->tif_flags|=TIFF_DIRTYDIRECT;
- return(1);
-}
-
-static void
-OJPEGPrintDir(TIFF* tif, FILE* fd, long flags)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint8 m;
- (void)flags;
- assert(sp!=NULL);
- if (TIFFFieldSet(tif,FIELD_OJPEG_JPEGINTERCHANGEFORMAT))
- fprintf(fd," JpegInterchangeFormat: %lu\n",(unsigned long)sp->jpeg_interchange_format);
- if (TIFFFieldSet(tif,FIELD_OJPEG_JPEGINTERCHANGEFORMATLENGTH))
- fprintf(fd," JpegInterchangeFormatLength: %lu\n",(unsigned long)sp->jpeg_interchange_format_length);
- if (TIFFFieldSet(tif,FIELD_OJPEG_JPEGQTABLES))
- {
- fprintf(fd," JpegQTables:");
- for (m=0; m<sp->qtable_offset_count; m++)
- fprintf(fd," %lu",(unsigned long)sp->qtable_offset[m]);
- fprintf(fd,"\n");
- }
- if (TIFFFieldSet(tif,FIELD_OJPEG_JPEGDCTABLES))
- {
- fprintf(fd," JpegDcTables:");
- for (m=0; m<sp->dctable_offset_count; m++)
- fprintf(fd," %lu",(unsigned long)sp->dctable_offset[m]);
- fprintf(fd,"\n");
- }
- if (TIFFFieldSet(tif,FIELD_OJPEG_JPEGACTABLES))
- {
- fprintf(fd," JpegAcTables:");
- for (m=0; m<sp->actable_offset_count; m++)
- fprintf(fd," %lu",(unsigned long)sp->actable_offset[m]);
- fprintf(fd,"\n");
- }
- if (TIFFFieldSet(tif,FIELD_OJPEG_JPEGPROC))
- fprintf(fd," JpegProc: %u\n",(unsigned int)sp->jpeg_proc);
- if (TIFFFieldSet(tif,FIELD_OJPEG_JPEGRESTARTINTERVAL))
- fprintf(fd," JpegRestartInterval: %u\n",(unsigned int)sp->restart_interval);
-}
-
-static int
-OJPEGSetupDecode(TIFF* tif)
-{
- static const char module[]="OJPEGSetupDecode";
- TIFFWarningExt(tif->tif_clientdata,module,"Depreciated and troublesome old-style JPEG compression mode, please convert to new-style JPEG compression and notify vendor of writing software");
- return(1);
-}
-
-static int
-OJPEGPreDecode(TIFF* tif, tsample_t s)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- tstrile_t m;
- if (sp->subsamplingcorrect_done==0)
- OJPEGSubsamplingCorrect(tif);
- if (sp->readheader_done==0)
- {
- if (OJPEGReadHeaderInfo(tif)==0)
- return(0);
- }
- if (sp->sos_end[s].log==0)
- {
- if (OJPEGReadSecondarySos(tif,s)==0)
- return(0);
- }
- if isTiled(tif)
- m=(tstrile_t)tif->tif_curtile;
- else
- m=(tstrile_t)tif->tif_curstrip;
- if ((sp->writeheader_done!=0) && ((sp->write_cursample!=s) || (sp->write_curstrile>m)))
- {
- if (sp->libjpeg_session_active!=0)
- OJPEGLibjpegSessionAbort(tif);
- sp->writeheader_done=0;
- }
- if (sp->writeheader_done==0)
- {
- sp->plane_sample_offset=s;
- sp->write_cursample=s;
- sp->write_curstrile=s*tif->tif_dir.td_stripsperimage;
- if ((sp->in_buffer_file_pos_log==0) ||
- (sp->in_buffer_file_pos-sp->in_buffer_togo!=sp->sos_end[s].in_buffer_file_pos))
- {
- sp->in_buffer_source=sp->sos_end[s].in_buffer_source;
- sp->in_buffer_next_strile=sp->sos_end[s].in_buffer_next_strile;
- sp->in_buffer_file_pos=sp->sos_end[s].in_buffer_file_pos;
- sp->in_buffer_file_pos_log=0;
- sp->in_buffer_file_togo=sp->sos_end[s].in_buffer_file_togo;
- sp->in_buffer_togo=0;
- sp->in_buffer_cur=0;
- }
- if (OJPEGWriteHeaderInfo(tif)==0)
- return(0);
- }
- while (sp->write_curstrile<m)
- {
- if (sp->libjpeg_jpeg_query_style==0)
- {
- if (OJPEGPreDecodeSkipRaw(tif)==0)
- return(0);
- }
- else
- {
- if (OJPEGPreDecodeSkipScanlines(tif)==0)
- return(0);
- }
- sp->write_curstrile++;
- }
- return(1);
-}
-
-static int
-OJPEGPreDecodeSkipRaw(TIFF* tif)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint32 m;
- m=sp->lines_per_strile;
- if (sp->subsampling_convert_state!=0)
- {
- if (sp->subsampling_convert_clines-sp->subsampling_convert_state>=m)
- {
- sp->subsampling_convert_state+=m;
- if (sp->subsampling_convert_state==sp->subsampling_convert_clines)
- sp->subsampling_convert_state=0;
- return(1);
- }
- m-=sp->subsampling_convert_clines-sp->subsampling_convert_state;
- sp->subsampling_convert_state=0;
- }
- while (m>=sp->subsampling_convert_clines)
- {
- if (jpeg_read_raw_data_encap(sp,&(sp->libjpeg_jpeg_decompress_struct),sp->subsampling_convert_ycbcrimage,sp->subsampling_ver*8)==0)
- return(0);
- m-=sp->subsampling_convert_clines;
- }
- if (m>0)
- {
- if (jpeg_read_raw_data_encap(sp,&(sp->libjpeg_jpeg_decompress_struct),sp->subsampling_convert_ycbcrimage,sp->subsampling_ver*8)==0)
- return(0);
- sp->subsampling_convert_state=m;
- }
- return(1);
-}
-
-static int
-OJPEGPreDecodeSkipScanlines(TIFF* tif)
-{
- static const char module[]="OJPEGPreDecodeSkipScanlines";
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint32 m;
- if (sp->skip_buffer==NULL)
- {
- sp->skip_buffer=_TIFFmalloc(sp->bytes_per_line);
- if (sp->skip_buffer==NULL)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
- return(0);
- }
- }
- for (m=0; m<sp->lines_per_strile; m++)
- {
- if (jpeg_read_scanlines_encap(sp,&(sp->libjpeg_jpeg_decompress_struct),&sp->skip_buffer,1)==0)
- return(0);
- }
- return(1);
-}
-
-static int
-OJPEGDecode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- (void)s;
- if (sp->libjpeg_jpeg_query_style==0)
- {
- if (OJPEGDecodeRaw(tif,buf,cc)==0)
- return(0);
- }
- else
- {
- if (OJPEGDecodeScanlines(tif,buf,cc)==0)
- return(0);
- }
- return(1);
-}
-
-static int
-OJPEGDecodeRaw(TIFF* tif, tidata_t buf, tsize_t cc)
-{
- static const char module[]="OJPEGDecodeRaw";
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint8* m;
- uint32 n;
- uint8* oy;
- uint8* ocb;
- uint8* ocr;
- uint8* p;
- uint32 q;
- uint8* r;
- uint8 sx,sy;
- if (cc%sp->bytes_per_line!=0)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Fractional scanline not read");
- return(0);
- }
- assert(cc>0);
- m=buf;
- n=cc;
- do
- {
- if (sp->subsampling_convert_state==0)
- {
- if (jpeg_read_raw_data_encap(sp,&(sp->libjpeg_jpeg_decompress_struct),sp->subsampling_convert_ycbcrimage,sp->subsampling_ver*8)==0)
- return(0);
- }
- oy=sp->subsampling_convert_ybuf+sp->subsampling_convert_state*sp->subsampling_ver*sp->subsampling_convert_ylinelen;
- ocb=sp->subsampling_convert_cbbuf+sp->subsampling_convert_state*sp->subsampling_convert_clinelen;
- ocr=sp->subsampling_convert_crbuf+sp->subsampling_convert_state*sp->subsampling_convert_clinelen;
- p=m;
- for (q=0; q<sp->subsampling_convert_clinelenout; q++)
- {
- r=oy;
- for (sy=0; sy<sp->subsampling_ver; sy++)
- {
- for (sx=0; sx<sp->subsampling_hor; sx++)
- *p++=*r++;
- r+=sp->subsampling_convert_ylinelen-sp->subsampling_hor;
- }
- oy+=sp->subsampling_hor;
- *p++=*ocb++;
- *p++=*ocr++;
- }
- sp->subsampling_convert_state++;
- if (sp->subsampling_convert_state==sp->subsampling_convert_clines)
- sp->subsampling_convert_state=0;
- m+=sp->bytes_per_line;
- n-=sp->bytes_per_line;
- } while(n>0);
- return(1);
-}
-
-static int
-OJPEGDecodeScanlines(TIFF* tif, tidata_t buf, tsize_t cc)
-{
- static const char module[]="OJPEGDecodeScanlines";
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint8* m;
- uint32 n;
- if (cc%sp->bytes_per_line!=0)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Fractional scanline not read");
- return(0);
- }
- assert(cc>0);
- m=buf;
- n=cc;
- do
- {
- if (jpeg_read_scanlines_encap(sp,&(sp->libjpeg_jpeg_decompress_struct),&m,1)==0)
- return(0);
- m+=sp->bytes_per_line;
- n-=sp->bytes_per_line;
- } while(n>0);
- return(1);
-}
-
-static void
-OJPEGPostDecode(TIFF* tif, tidata_t buf, tsize_t cc)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- (void)buf;
- (void)cc;
- sp->write_curstrile++;
- if (sp->write_curstrile%tif->tif_dir.td_stripsperimage==0)
- {
- assert(sp->libjpeg_session_active!=0);
- OJPEGLibjpegSessionAbort(tif);
- sp->writeheader_done=0;
- }
-}
-
-static int
-OJPEGSetupEncode(TIFF* tif)
-{
- static const char module[]="OJPEGSetupEncode";
- TIFFErrorExt(tif->tif_clientdata,module,"OJPEG encoding not supported; use new-style JPEG compression instead");
- return(0);
-}
-
-static int
-OJPEGPreEncode(TIFF* tif, tsample_t s)
-{
- static const char module[]="OJPEGPreEncode";
- (void)s;
- TIFFErrorExt(tif->tif_clientdata,module,"OJPEG encoding not supported; use new-style JPEG compression instead");
- return(0);
-}
-
-static int
-OJPEGEncode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
-{
- static const char module[]="OJPEGEncode";
- (void)buf;
- (void)cc;
- (void)s;
- TIFFErrorExt(tif->tif_clientdata,module,"OJPEG encoding not supported; use new-style JPEG compression instead");
- return(0);
-}
-
-static int
-OJPEGPostEncode(TIFF* tif)
-{
- static const char module[]="OJPEGPostEncode";
- TIFFErrorExt(tif->tif_clientdata,module,"OJPEG encoding not supported; use new-style JPEG compression instead");
- return(0);
-}
-
-static void
-OJPEGCleanup(TIFF* tif)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- if (sp!=0)
- {
- tif->tif_tagmethods.vgetfield=sp->vgetparent;
- tif->tif_tagmethods.vsetfield=sp->vsetparent;
- if (sp->qtable[0]!=0)
- _TIFFfree(sp->qtable[0]);
- if (sp->qtable[1]!=0)
- _TIFFfree(sp->qtable[1]);
- if (sp->qtable[2]!=0)
- _TIFFfree(sp->qtable[2]);
- if (sp->qtable[3]!=0)
- _TIFFfree(sp->qtable[3]);
- if (sp->dctable[0]!=0)
- _TIFFfree(sp->dctable[0]);
- if (sp->dctable[1]!=0)
- _TIFFfree(sp->dctable[1]);
- if (sp->dctable[2]!=0)
- _TIFFfree(sp->dctable[2]);
- if (sp->dctable[3]!=0)
- _TIFFfree(sp->dctable[3]);
- if (sp->actable[0]!=0)
- _TIFFfree(sp->actable[0]);
- if (sp->actable[1]!=0)
- _TIFFfree(sp->actable[1]);
- if (sp->actable[2]!=0)
- _TIFFfree(sp->actable[2]);
- if (sp->actable[3]!=0)
- _TIFFfree(sp->actable[3]);
- if (sp->libjpeg_session_active!=0)
- OJPEGLibjpegSessionAbort(tif);
- if (sp->subsampling_convert_ycbcrbuf!=0)
- _TIFFfree(sp->subsampling_convert_ycbcrbuf);
- if (sp->subsampling_convert_ycbcrimage!=0)
- _TIFFfree(sp->subsampling_convert_ycbcrimage);
- if (sp->skip_buffer!=0)
- _TIFFfree(sp->skip_buffer);
- _TIFFfree(sp);
- tif->tif_data=NULL;
- _TIFFSetDefaultCompressionState(tif);
- }
-}
-
-static void
-OJPEGSubsamplingCorrect(TIFF* tif)
-{
- static const char module[]="OJPEGSubsamplingCorrect";
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint8 mh;
- uint8 mv;
- assert(sp->subsamplingcorrect_done==0);
- if ((tif->tif_dir.td_samplesperpixel!=3) || ((tif->tif_dir.td_photometric!=PHOTOMETRIC_YCBCR) &&
- (tif->tif_dir.td_photometric!=PHOTOMETRIC_ITULAB)))
- {
- if (sp->subsampling_tag!=0)
- TIFFWarningExt(tif->tif_clientdata,module,"Subsampling tag not appropriate for this Photometric and/or SamplesPerPixel");
- sp->subsampling_hor=1;
- sp->subsampling_ver=1;
- sp->subsampling_force_desubsampling_inside_decompression=0;
- }
- else
- {
- sp->subsamplingcorrect_done=1;
- mh=sp->subsampling_hor;
- mv=sp->subsampling_ver;
- sp->subsamplingcorrect=1;
- OJPEGReadHeaderInfoSec(tif);
- if (sp->subsampling_force_desubsampling_inside_decompression!=0)
- {
- sp->subsampling_hor=1;
- sp->subsampling_ver=1;
- }
- sp->subsamplingcorrect=0;
- if (((sp->subsampling_hor!=mh) || (sp->subsampling_ver!=mv)) && (sp->subsampling_force_desubsampling_inside_decompression==0))
- {
- if (sp->subsampling_tag==0)
- TIFFWarningExt(tif->tif_clientdata,module,"Subsampling tag is not set, yet subsampling inside JPEG data [%d,%d] does not match default values [2,2]; assuming subsampling inside JPEG data is correct",sp->subsampling_hor,sp->subsampling_ver);
- else
- TIFFWarningExt(tif->tif_clientdata,module,"Subsampling inside JPEG data [%d,%d] does not match subsampling tag values [%d,%d]; assuming subsampling inside JPEG data is correct",sp->subsampling_hor,sp->subsampling_ver,mh,mv);
- }
- if (sp->subsampling_force_desubsampling_inside_decompression!=0)
- {
- if (sp->subsampling_tag==0)
- TIFFWarningExt(tif->tif_clientdata,module,"Subsampling tag is not set, yet subsampling inside JPEG data does not match default values [2,2] (nor any other values allowed in TIFF); assuming subsampling inside JPEG data is correct and desubsampling inside JPEG decompression");
- else
- TIFFWarningExt(tif->tif_clientdata,module,"Subsampling inside JPEG data does not match subsampling tag values [%d,%d] (nor any other values allowed in TIFF); assuming subsampling inside JPEG data is correct and desubsampling inside JPEG decompression",mh,mv);
- }
- if (sp->subsampling_force_desubsampling_inside_decompression==0)
- {
- if (sp->subsampling_hor<sp->subsampling_ver)
- TIFFWarningExt(tif->tif_clientdata,module,"Subsampling values [%d,%d] are not allowed in TIFF",sp->subsampling_hor,sp->subsampling_ver);
- }
- }
- sp->subsamplingcorrect_done=1;
-}
-
-static int
-OJPEGReadHeaderInfo(TIFF* tif)
-{
- static const char module[]="OJPEGReadHeaderInfo";
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- assert(sp->readheader_done==0);
- sp->image_width=tif->tif_dir.td_imagewidth;
- sp->image_length=tif->tif_dir.td_imagelength;
- if isTiled(tif)
- {
- sp->strile_width=tif->tif_dir.td_tilewidth;
- sp->strile_length=tif->tif_dir.td_tilelength;
- sp->strile_length_total=((sp->image_length+sp->strile_length-1)/sp->strile_length)*sp->strile_length;
- }
- else
- {
- sp->strile_width=sp->image_width;
- sp->strile_length=tif->tif_dir.td_rowsperstrip;
- sp->strile_length_total=sp->image_length;
- }
- sp->samples_per_pixel=tif->tif_dir.td_samplesperpixel;
- if (sp->samples_per_pixel==1)
- {
- sp->plane_sample_offset=0;
- sp->samples_per_pixel_per_plane=sp->samples_per_pixel;
- sp->subsampling_hor=1;
- sp->subsampling_ver=1;
- }
- else
- {
- if (sp->samples_per_pixel!=3)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"SamplesPerPixel %d not supported for this compression scheme",sp->samples_per_pixel);
- return(0);
- }
- sp->plane_sample_offset=0;
- if (tif->tif_dir.td_planarconfig==PLANARCONFIG_CONTIG)
- sp->samples_per_pixel_per_plane=3;
- else
- sp->samples_per_pixel_per_plane=1;
- }
- if (sp->strile_length<sp->image_length)
- {
- if (sp->strile_length%(sp->subsampling_ver*8)!=0)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Incompatible vertical subsampling and image strip/tile length");
- return(0);
- }
- sp->restart_interval=((sp->strile_width+sp->subsampling_hor*8-1)/(sp->subsampling_hor*8))*(sp->strile_length/(sp->subsampling_ver*8));
- }
- if (OJPEGReadHeaderInfoSec(tif)==0)
- return(0);
- sp->sos_end[0].log=1;
- sp->sos_end[0].in_buffer_source=sp->in_buffer_source;
- sp->sos_end[0].in_buffer_next_strile=sp->in_buffer_next_strile;
- sp->sos_end[0].in_buffer_file_pos=sp->in_buffer_file_pos-sp->in_buffer_togo;
- sp->sos_end[0].in_buffer_file_togo=sp->in_buffer_file_togo+sp->in_buffer_togo;
- sp->readheader_done=1;
- return(1);
-}
-
-static int
-OJPEGReadSecondarySos(TIFF* tif, tsample_t s)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint8 m;
- assert(s>0);
- assert(s<3);
- assert(sp->sos_end[0].log!=0);
- assert(sp->sos_end[s].log==0);
- sp->plane_sample_offset=s-1;
- while(sp->sos_end[sp->plane_sample_offset].log==0)
- sp->plane_sample_offset--;
- sp->in_buffer_source=sp->sos_end[sp->plane_sample_offset].in_buffer_source;
- sp->in_buffer_next_strile=sp->sos_end[sp->plane_sample_offset].in_buffer_next_strile;
- sp->in_buffer_file_pos=sp->sos_end[sp->plane_sample_offset].in_buffer_file_pos;
- sp->in_buffer_file_pos_log=0;
- sp->in_buffer_file_togo=sp->sos_end[sp->plane_sample_offset].in_buffer_file_togo;
- sp->in_buffer_togo=0;
- sp->in_buffer_cur=0;
- while(sp->plane_sample_offset<s)
- {
- do
- {
- if (OJPEGReadByte(sp,&m)==0)
- return(0);
- if (m==255)
- {
- do
- {
- if (OJPEGReadByte(sp,&m)==0)
- return(0);
- if (m!=255)
- break;
- } while(1);
- if (m==JPEG_MARKER_SOS)
- break;
- }
- } while(1);
- sp->plane_sample_offset++;
- if (OJPEGReadHeaderInfoSecStreamSos(tif)==0)
- return(0);
- sp->sos_end[sp->plane_sample_offset].log=1;
- sp->sos_end[sp->plane_sample_offset].in_buffer_source=sp->in_buffer_source;
- sp->sos_end[sp->plane_sample_offset].in_buffer_next_strile=sp->in_buffer_next_strile;
- sp->sos_end[sp->plane_sample_offset].in_buffer_file_pos=sp->in_buffer_file_pos-sp->in_buffer_togo;
- sp->sos_end[sp->plane_sample_offset].in_buffer_file_togo=sp->in_buffer_file_togo+sp->in_buffer_togo;
- }
- return(1);
-}
-
-static int
-OJPEGWriteHeaderInfo(TIFF* tif)
-{
- static const char module[]="OJPEGWriteHeaderInfo";
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint8** m;
- uint32 n;
- assert(sp->libjpeg_session_active==0);
- sp->out_state=ososSoi;
- sp->restart_index=0;
- jpeg_std_error(&(sp->libjpeg_jpeg_error_mgr));
- sp->libjpeg_jpeg_error_mgr.output_message=OJPEGLibjpegJpegErrorMgrOutputMessage;
- sp->libjpeg_jpeg_error_mgr.error_exit=OJPEGLibjpegJpegErrorMgrErrorExit;
- sp->libjpeg_jpeg_decompress_struct.err=&(sp->libjpeg_jpeg_error_mgr);
- sp->libjpeg_jpeg_decompress_struct.client_data=(void*)tif;
- if (jpeg_create_decompress_encap(sp,&(sp->libjpeg_jpeg_decompress_struct))==0)
- return(0);
- sp->libjpeg_session_active=1;
- sp->libjpeg_jpeg_source_mgr.bytes_in_buffer=0;
- sp->libjpeg_jpeg_source_mgr.init_source=OJPEGLibjpegJpegSourceMgrInitSource;
- sp->libjpeg_jpeg_source_mgr.fill_input_buffer=OJPEGLibjpegJpegSourceMgrFillInputBuffer;
- sp->libjpeg_jpeg_source_mgr.skip_input_data=OJPEGLibjpegJpegSourceMgrSkipInputData;
- sp->libjpeg_jpeg_source_mgr.resync_to_restart=OJPEGLibjpegJpegSourceMgrResyncToRestart;
- sp->libjpeg_jpeg_source_mgr.term_source=OJPEGLibjpegJpegSourceMgrTermSource;
- sp->libjpeg_jpeg_decompress_struct.src=&(sp->libjpeg_jpeg_source_mgr);
- if (jpeg_read_header_encap(sp,&(sp->libjpeg_jpeg_decompress_struct),1)==0)
- return(0);
- if ((sp->subsampling_force_desubsampling_inside_decompression==0) && (sp->samples_per_pixel_per_plane>1))
- {
- sp->libjpeg_jpeg_decompress_struct.raw_data_out=1;
-#if JPEG_LIB_VERSION >= 70
- sp->libjpeg_jpeg_decompress_struct.do_fancy_upsampling=FALSE;
-#endif
- sp->libjpeg_jpeg_query_style=0;
- if (sp->subsampling_convert_log==0)
- {
- assert(sp->subsampling_convert_ycbcrbuf==0);
- assert(sp->subsampling_convert_ycbcrimage==0);
- sp->subsampling_convert_ylinelen=((sp->strile_width+sp->subsampling_hor*8-1)/(sp->subsampling_hor*8)*sp->subsampling_hor*8);
- sp->subsampling_convert_ylines=sp->subsampling_ver*8;
- sp->subsampling_convert_clinelen=sp->subsampling_convert_ylinelen/sp->subsampling_hor;
- sp->subsampling_convert_clines=8;
- sp->subsampling_convert_ybuflen=sp->subsampling_convert_ylinelen*sp->subsampling_convert_ylines;
- sp->subsampling_convert_cbuflen=sp->subsampling_convert_clinelen*sp->subsampling_convert_clines;
- sp->subsampling_convert_ycbcrbuflen=sp->subsampling_convert_ybuflen+2*sp->subsampling_convert_cbuflen;
- sp->subsampling_convert_ycbcrbuf=_TIFFmalloc(sp->subsampling_convert_ycbcrbuflen);
- if (sp->subsampling_convert_ycbcrbuf==0)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
- return(0);
- }
- sp->subsampling_convert_ybuf=sp->subsampling_convert_ycbcrbuf;
- sp->subsampling_convert_cbbuf=sp->subsampling_convert_ybuf+sp->subsampling_convert_ybuflen;
- sp->subsampling_convert_crbuf=sp->subsampling_convert_cbbuf+sp->subsampling_convert_cbuflen;
- sp->subsampling_convert_ycbcrimagelen=3+sp->subsampling_convert_ylines+2*sp->subsampling_convert_clines;
- sp->subsampling_convert_ycbcrimage=_TIFFmalloc(sp->subsampling_convert_ycbcrimagelen*sizeof(uint8*));
- if (sp->subsampling_convert_ycbcrimage==0)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
- return(0);
- }
- m=sp->subsampling_convert_ycbcrimage;
- *m++=(uint8*)(sp->subsampling_convert_ycbcrimage+3);
- *m++=(uint8*)(sp->subsampling_convert_ycbcrimage+3+sp->subsampling_convert_ylines);
- *m++=(uint8*)(sp->subsampling_convert_ycbcrimage+3+sp->subsampling_convert_ylines+sp->subsampling_convert_clines);
- for (n=0; n<sp->subsampling_convert_ylines; n++)
- *m++=sp->subsampling_convert_ybuf+n*sp->subsampling_convert_ylinelen;
- for (n=0; n<sp->subsampling_convert_clines; n++)
- *m++=sp->subsampling_convert_cbbuf+n*sp->subsampling_convert_clinelen;
- for (n=0; n<sp->subsampling_convert_clines; n++)
- *m++=sp->subsampling_convert_crbuf+n*sp->subsampling_convert_clinelen;
- sp->subsampling_convert_clinelenout=((sp->strile_width+sp->subsampling_hor-1)/sp->subsampling_hor);
- sp->subsampling_convert_state=0;
- sp->bytes_per_line=sp->subsampling_convert_clinelenout*(sp->subsampling_ver*sp->subsampling_hor+2);
- sp->lines_per_strile=((sp->strile_length+sp->subsampling_ver-1)/sp->subsampling_ver);
- sp->subsampling_convert_log=1;
- }
- }
- else
- {
- sp->libjpeg_jpeg_decompress_struct.jpeg_color_space=JCS_UNKNOWN;
- sp->libjpeg_jpeg_decompress_struct.out_color_space=JCS_UNKNOWN;
- sp->libjpeg_jpeg_query_style=1;
- sp->bytes_per_line=sp->samples_per_pixel_per_plane*sp->strile_width;
- sp->lines_per_strile=sp->strile_length;
- }
- if (jpeg_start_decompress_encap(sp,&(sp->libjpeg_jpeg_decompress_struct))==0)
- return(0);
- sp->writeheader_done=1;
- return(1);
-}
-
-static void
-OJPEGLibjpegSessionAbort(TIFF* tif)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- assert(sp->libjpeg_session_active!=0);
- jpeg_destroy((jpeg_common_struct*)(&(sp->libjpeg_jpeg_decompress_struct)));
- sp->libjpeg_session_active=0;
-}
-
-static int
-OJPEGReadHeaderInfoSec(TIFF* tif)
-{
- static const char module[]="OJPEGReadHeaderInfoSec";
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint8 m;
- uint16 n;
- uint8 o;
- if (sp->file_size==0)
- sp->file_size=TIFFGetFileSize(tif);
- if (sp->jpeg_interchange_format!=0)
- {
- if (sp->jpeg_interchange_format>=sp->file_size)
- {
- sp->jpeg_interchange_format=0;
- sp->jpeg_interchange_format_length=0;
- }
- else
- {
- if ((sp->jpeg_interchange_format_length==0) || (sp->jpeg_interchange_format+sp->jpeg_interchange_format_length>sp->file_size))
- sp->jpeg_interchange_format_length=sp->file_size-sp->jpeg_interchange_format;
- }
- }
- sp->in_buffer_source=osibsNotSetYet;
- sp->in_buffer_next_strile=0;
- sp->in_buffer_strile_count=tif->tif_dir.td_nstrips;
- sp->in_buffer_file_togo=0;
- sp->in_buffer_togo=0;
- do
- {
- if (OJPEGReadBytePeek(sp,&m)==0)
- return(0);
- if (m!=255)
- break;
- OJPEGReadByteAdvance(sp);
- do
- {
- if (OJPEGReadByte(sp,&m)==0)
- return(0);
- } while(m==255);
- switch(m)
- {
- case JPEG_MARKER_SOI:
- /* this type of marker has no data, and should be skipped */
- break;
- case JPEG_MARKER_COM:
- case JPEG_MARKER_APP0:
- case JPEG_MARKER_APP0+1:
- case JPEG_MARKER_APP0+2:
- case JPEG_MARKER_APP0+3:
- case JPEG_MARKER_APP0+4:
- case JPEG_MARKER_APP0+5:
- case JPEG_MARKER_APP0+6:
- case JPEG_MARKER_APP0+7:
- case JPEG_MARKER_APP0+8:
- case JPEG_MARKER_APP0+9:
- case JPEG_MARKER_APP0+10:
- case JPEG_MARKER_APP0+11:
- case JPEG_MARKER_APP0+12:
- case JPEG_MARKER_APP0+13:
- case JPEG_MARKER_APP0+14:
- case JPEG_MARKER_APP0+15:
- /* this type of marker has data, but it has no use to us (and no place here) and should be skipped */
- if (OJPEGReadWord(sp,&n)==0)
- return(0);
- if (n<2)
- {
- if (sp->subsamplingcorrect==0)
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt JPEG data");
- return(0);
- }
- if (n>2)
- OJPEGReadSkip(sp,n-2);
- break;
- case JPEG_MARKER_DRI:
- if (OJPEGReadHeaderInfoSecStreamDri(tif)==0)
- return(0);
- break;
- case JPEG_MARKER_DQT:
- if (OJPEGReadHeaderInfoSecStreamDqt(tif)==0)
- return(0);
- break;
- case JPEG_MARKER_DHT:
- if (OJPEGReadHeaderInfoSecStreamDht(tif)==0)
- return(0);
- break;
- case JPEG_MARKER_SOF0:
- case JPEG_MARKER_SOF1:
- case JPEG_MARKER_SOF3:
- if (OJPEGReadHeaderInfoSecStreamSof(tif,m)==0)
- return(0);
- if (sp->subsamplingcorrect!=0)
- return(1);
- break;
- case JPEG_MARKER_SOS:
- if (sp->subsamplingcorrect!=0)
- return(1);
- assert(sp->plane_sample_offset==0);
- if (OJPEGReadHeaderInfoSecStreamSos(tif)==0)
- return(0);
- break;
- default:
- TIFFErrorExt(tif->tif_clientdata,module,"Unknown marker type %d in JPEG data",m);
- return(0);
- }
- } while(m!=JPEG_MARKER_SOS);
- if (sp->subsamplingcorrect)
- return(1);
- if (sp->sof_log==0)
- {
- if (OJPEGReadHeaderInfoSecTablesQTable(tif)==0)
- return(0);
- sp->sof_marker_id=JPEG_MARKER_SOF0;
- for (o=0; o<sp->samples_per_pixel; o++)
- sp->sof_c[o]=o;
- sp->sof_hv[0]=((sp->subsampling_hor<<4)|sp->subsampling_ver);
- for (o=1; o<sp->samples_per_pixel; o++)
- sp->sof_hv[o]=17;
- sp->sof_x=sp->strile_width;
- sp->sof_y=sp->strile_length_total;
- sp->sof_log=1;
- if (OJPEGReadHeaderInfoSecTablesDcTable(tif)==0)
- return(0);
- if (OJPEGReadHeaderInfoSecTablesAcTable(tif)==0)
- return(0);
- for (o=1; o<sp->samples_per_pixel; o++)
- sp->sos_cs[o]=o;
- }
- return(1);
-}
-
-static int
-OJPEGReadHeaderInfoSecStreamDri(TIFF* tif)
-{
- /* this could easilly cause trouble in some cases... but no such cases have occured sofar */
- static const char module[]="OJPEGReadHeaderInfoSecStreamDri";
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint16 m;
- if (OJPEGReadWord(sp,&m)==0)
- return(0);
- if (m!=4)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt DRI marker in JPEG data");
- return(0);
- }
- if (OJPEGReadWord(sp,&m)==0)
- return(0);
- sp->restart_interval=m;
- return(1);
-}
-
-static int
-OJPEGReadHeaderInfoSecStreamDqt(TIFF* tif)
-{
- /* this is a table marker, and it is to be saved as a whole for exact pushing on the jpeg stream later on */
- static const char module[]="OJPEGReadHeaderInfoSecStreamDqt";
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint16 m;
- uint32 na;
- uint8* nb;
- uint8 o;
- if (OJPEGReadWord(sp,&m)==0)
- return(0);
- if (m<=2)
- {
- if (sp->subsamplingcorrect==0)
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt DQT marker in JPEG data");
- return(0);
- }
- if (sp->subsamplingcorrect!=0)
- OJPEGReadSkip(sp,m-2);
- else
- {
- m-=2;
- do
- {
- if (m<65)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt DQT marker in JPEG data");
- return(0);
- }
- na=sizeof(uint32)+69;
- nb=_TIFFmalloc(na);
- if (nb==0)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
- return(0);
- }
- *(uint32*)nb=na;
- nb[sizeof(uint32)]=255;
- nb[sizeof(uint32)+1]=JPEG_MARKER_DQT;
- nb[sizeof(uint32)+2]=0;
- nb[sizeof(uint32)+3]=67;
- if (OJPEGReadBlock(sp,65,&nb[sizeof(uint32)+4])==0)
- return(0);
- o=nb[sizeof(uint32)+4]&15;
- if (3<o)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt DQT marker in JPEG data");
- return(0);
- }
- if (sp->qtable[o]!=0)
- _TIFFfree(sp->qtable[o]);
- sp->qtable[o]=nb;
- m-=65;
- } while(m>0);
- }
- return(1);
-}
-
-static int
-OJPEGReadHeaderInfoSecStreamDht(TIFF* tif)
-{
- /* this is a table marker, and it is to be saved as a whole for exact pushing on the jpeg stream later on */
- /* TODO: the following assumes there is only one table in this marker... but i'm not quite sure that assumption is guaranteed correct */
- static const char module[]="OJPEGReadHeaderInfoSecStreamDht";
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint16 m;
- uint32 na;
- uint8* nb;
- uint8 o;
- if (OJPEGReadWord(sp,&m)==0)
- return(0);
- if (m<=2)
- {
- if (sp->subsamplingcorrect==0)
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt DHT marker in JPEG data");
- return(0);
- }
- if (sp->subsamplingcorrect!=0)
- {
- OJPEGReadSkip(sp,m-2);
- }
- else
- {
- na=sizeof(uint32)+2+m;
- nb=_TIFFmalloc(na);
- if (nb==0)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
- return(0);
- }
- *(uint32*)nb=na;
- nb[sizeof(uint32)]=255;
- nb[sizeof(uint32)+1]=JPEG_MARKER_DHT;
- nb[sizeof(uint32)+2]=(m>>8);
- nb[sizeof(uint32)+3]=(m&255);
- if (OJPEGReadBlock(sp,m-2,&nb[sizeof(uint32)+4])==0)
- return(0);
- o=nb[sizeof(uint32)+4];
- if ((o&240)==0)
- {
- if (3<o)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt DHT marker in JPEG data");
- return(0);
- }
- if (sp->dctable[o]!=0)
- _TIFFfree(sp->dctable[o]);
- sp->dctable[o]=nb;
- }
- else
- {
- if ((o&240)!=16)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt DHT marker in JPEG data");
- return(0);
- }
- o&=15;
- if (3<o)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt DHT marker in JPEG data");
- return(0);
- }
- if (sp->actable[o]!=0)
- _TIFFfree(sp->actable[o]);
- sp->actable[o]=nb;
- }
- }
- return(1);
-}
-
-static int
-OJPEGReadHeaderInfoSecStreamSof(TIFF* tif, uint8 marker_id)
-{
- /* this marker needs to be checked, and part of its data needs to be saved for regeneration later on */
- static const char module[]="OJPEGReadHeaderInfoSecStreamSof";
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint16 m;
- uint16 n;
- uint8 o;
- uint16 p;
- uint16 q;
- if (sp->sof_log!=0)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt JPEG data");
- return(0);
- }
- if (sp->subsamplingcorrect==0)
- sp->sof_marker_id=marker_id;
- /* Lf: data length */
- if (OJPEGReadWord(sp,&m)==0)
- return(0);
- if (m<11)
- {
- if (sp->subsamplingcorrect==0)
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt SOF marker in JPEG data");
- return(0);
- }
- m-=8;
- if (m%3!=0)
- {
- if (sp->subsamplingcorrect==0)
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt SOF marker in JPEG data");
- return(0);
- }
- n=m/3;
- if (sp->subsamplingcorrect==0)
- {
- if (n!=sp->samples_per_pixel)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"JPEG compressed data indicates unexpected number of samples");
- return(0);
- }
- }
- /* P: Sample precision */
- if (OJPEGReadByte(sp,&o)==0)
- return(0);
- if (o!=8)
- {
- if (sp->subsamplingcorrect==0)
- TIFFErrorExt(tif->tif_clientdata,module,"JPEG compressed data indicates unexpected number of bits per sample");
- return(0);
- }
- /* Y: Number of lines, X: Number of samples per line */
- if (sp->subsamplingcorrect)
- OJPEGReadSkip(sp,4);
- else
- {
- /* TODO: probably best to also add check on allowed upper bound, especially x, may cause buffer overflow otherwise i think */
- /* Y: Number of lines */
- if (OJPEGReadWord(sp,&p)==0)
- return(0);
- if ((p<sp->image_length) && (p<sp->strile_length_total))
- {
- TIFFErrorExt(tif->tif_clientdata,module,"JPEG compressed data indicates unexpected height");
- return(0);
- }
- sp->sof_y=p;
- /* X: Number of samples per line */
- if (OJPEGReadWord(sp,&p)==0)
- return(0);
- if ((p<sp->image_width) && (p<sp->strile_width))
- {
- TIFFErrorExt(tif->tif_clientdata,module,"JPEG compressed data indicates unexpected width");
- return(0);
- }
- sp->sof_x=p;
- }
- /* Nf: Number of image components in frame */
- if (OJPEGReadByte(sp,&o)==0)
- return(0);
- if (o!=n)
- {
- if (sp->subsamplingcorrect==0)
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt SOF marker in JPEG data");
- return(0);
- }
- /* per component stuff */
- /* TODO: double-check that flow implies that n cannot be as big as to make us overflow sof_c, sof_hv and sof_tq arrays */
- for (q=0; q<n; q++)
- {
- /* C: Component identifier */
- if (OJPEGReadByte(sp,&o)==0)
- return(0);
- if (sp->subsamplingcorrect==0)
- sp->sof_c[q]=o;
- /* H: Horizontal sampling factor, and V: Vertical sampling factor */
- if (OJPEGReadByte(sp,&o)==0)
- return(0);
- if (sp->subsamplingcorrect!=0)
- {
- if (q==0)
- {
- sp->subsampling_hor=(o>>4);
- sp->subsampling_ver=(o&15);
- if (((sp->subsampling_hor!=1) && (sp->subsampling_hor!=2) && (sp->subsampling_hor!=4)) ||
- ((sp->subsampling_ver!=1) && (sp->subsampling_ver!=2) && (sp->subsampling_ver!=4)))
- sp->subsampling_force_desubsampling_inside_decompression=1;
- }
- else
- {
- if (o!=17)
- sp->subsampling_force_desubsampling_inside_decompression=1;
- }
- }
- else
- {
- sp->sof_hv[q]=o;
- if (sp->subsampling_force_desubsampling_inside_decompression==0)
- {
- if (q==0)
- {
- if (o!=((sp->subsampling_hor<<4)|sp->subsampling_ver))
- {
- TIFFErrorExt(tif->tif_clientdata,module,"JPEG compressed data indicates unexpected subsampling values");
- return(0);
- }
- }
- else
- {
- if (o!=17)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"JPEG compressed data indicates unexpected subsampling values");
- return(0);
- }
- }
- }
- }
- /* Tq: Quantization table destination selector */
- if (OJPEGReadByte(sp,&o)==0)
- return(0);
- if (sp->subsamplingcorrect==0)
- sp->sof_tq[q]=o;
- }
- if (sp->subsamplingcorrect==0)
- sp->sof_log=1;
- return(1);
-}
-
-static int
-OJPEGReadHeaderInfoSecStreamSos(TIFF* tif)
-{
- /* this marker needs to be checked, and part of its data needs to be saved for regeneration later on */
- static const char module[]="OJPEGReadHeaderInfoSecStreamSos";
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint16 m;
- uint8 n;
- uint8 o;
- assert(sp->subsamplingcorrect==0);
- if (sp->sof_log==0)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt SOS marker in JPEG data");
- return(0);
- }
- /* Ls */
- if (OJPEGReadWord(sp,&m)==0)
- return(0);
- if (m!=6+sp->samples_per_pixel_per_plane*2)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt SOS marker in JPEG data");
- return(0);
- }
- /* Ns */
- if (OJPEGReadByte(sp,&n)==0)
- return(0);
- if (n!=sp->samples_per_pixel_per_plane)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt SOS marker in JPEG data");
- return(0);
- }
- /* Cs, Td, and Ta */
- for (o=0; o<sp->samples_per_pixel_per_plane; o++)
- {
- /* Cs */
- if (OJPEGReadByte(sp,&n)==0)
- return(0);
- sp->sos_cs[sp->plane_sample_offset+o]=n;
- /* Td and Ta */
- if (OJPEGReadByte(sp,&n)==0)
- return(0);
- sp->sos_tda[sp->plane_sample_offset+o]=n;
- }
- /* skip Ss, Se, Ah, en Al -> no check, as per Tom Lane recommendation, as per LibJpeg source */
- OJPEGReadSkip(sp,3);
- return(1);
-}
-
-static int
-OJPEGReadHeaderInfoSecTablesQTable(TIFF* tif)
-{
- static const char module[]="OJPEGReadHeaderInfoSecTablesQTable";
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint8 m;
- uint8 n;
- uint32 oa;
- uint8* ob;
- uint32 p;
- if (sp->qtable_offset[0]==0)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Missing JPEG tables");
- return(0);
- }
- sp->in_buffer_file_pos_log=0;
- for (m=0; m<sp->samples_per_pixel; m++)
- {
- if ((sp->qtable_offset[m]!=0) && ((m==0) || (sp->qtable_offset[m]!=sp->qtable_offset[m-1])))
- {
- for (n=0; n<m-1; n++)
- {
- if (sp->qtable_offset[m]==sp->qtable_offset[n])
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt JpegQTables tag value");
- return(0);
- }
- }
- oa=sizeof(uint32)+69;
- ob=_TIFFmalloc(oa);
- if (ob==0)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
- return(0);
- }
- *(uint32*)ob=oa;
- ob[sizeof(uint32)]=255;
- ob[sizeof(uint32)+1]=JPEG_MARKER_DQT;
- ob[sizeof(uint32)+2]=0;
- ob[sizeof(uint32)+3]=67;
- ob[sizeof(uint32)+4]=m;
- TIFFSeekFile(tif,sp->qtable_offset[m],SEEK_SET);
- p=TIFFReadFile(tif,&ob[sizeof(uint32)+5],64);
- if (p!=64)
- return(0);
- sp->qtable[m]=ob;
- sp->sof_tq[m]=m;
- }
- else
- sp->sof_tq[m]=sp->sof_tq[m-1];
- }
- return(1);
-}
-
-static int
-OJPEGReadHeaderInfoSecTablesDcTable(TIFF* tif)
-{
- static const char module[]="OJPEGReadHeaderInfoSecTablesDcTable";
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint8 m;
- uint8 n;
- uint8 o[16];
- uint32 p;
- uint32 q;
- uint32 ra;
- uint8* rb;
- if (sp->dctable_offset[0]==0)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Missing JPEG tables");
- return(0);
- }
- sp->in_buffer_file_pos_log=0;
- for (m=0; m<sp->samples_per_pixel; m++)
- {
- if ((sp->dctable_offset[m]!=0) && ((m==0) || (sp->dctable_offset[m]!=sp->dctable_offset[m-1])))
- {
- for (n=0; n<m-1; n++)
- {
- if (sp->dctable_offset[m]==sp->dctable_offset[n])
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt JpegDcTables tag value");
- return(0);
- }
- }
- TIFFSeekFile(tif,sp->dctable_offset[m],SEEK_SET);
- p=TIFFReadFile(tif,o,16);
- if (p!=16)
- return(0);
- q=0;
- for (n=0; n<16; n++)
- q+=o[n];
- ra=sizeof(uint32)+21+q;
- rb=_TIFFmalloc(ra);
- if (rb==0)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
- return(0);
- }
- *(uint32*)rb=ra;
- rb[sizeof(uint32)]=255;
- rb[sizeof(uint32)+1]=JPEG_MARKER_DHT;
- rb[sizeof(uint32)+2]=((19+q)>>8);
- rb[sizeof(uint32)+3]=((19+q)&255);
- rb[sizeof(uint32)+4]=m;
- for (n=0; n<16; n++)
- rb[sizeof(uint32)+5+n]=o[n];
- p=TIFFReadFile(tif,&(rb[sizeof(uint32)+21]),q);
- if (p!=q)
- return(0);
- sp->dctable[m]=rb;
- sp->sos_tda[m]=(m<<4);
- }
- else
- sp->sos_tda[m]=sp->sos_tda[m-1];
- }
- return(1);
-}
-
-static int
-OJPEGReadHeaderInfoSecTablesAcTable(TIFF* tif)
-{
- static const char module[]="OJPEGReadHeaderInfoSecTablesAcTable";
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint8 m;
- uint8 n;
- uint8 o[16];
- uint32 p;
- uint32 q;
- uint32 ra;
- uint8* rb;
- if (sp->actable_offset[0]==0)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Missing JPEG tables");
- return(0);
- }
- sp->in_buffer_file_pos_log=0;
- for (m=0; m<sp->samples_per_pixel; m++)
- {
- if ((sp->actable_offset[m]!=0) && ((m==0) || (sp->actable_offset[m]!=sp->actable_offset[m-1])))
- {
- for (n=0; n<m-1; n++)
- {
- if (sp->actable_offset[m]==sp->actable_offset[n])
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Corrupt JpegAcTables tag value");
- return(0);
- }
- }
- TIFFSeekFile(tif,sp->actable_offset[m],SEEK_SET);
- p=TIFFReadFile(tif,o,16);
- if (p!=16)
- return(0);
- q=0;
- for (n=0; n<16; n++)
- q+=o[n];
- ra=sizeof(uint32)+21+q;
- rb=_TIFFmalloc(ra);
- if (rb==0)
- {
- TIFFErrorExt(tif->tif_clientdata,module,"Out of memory");
- return(0);
- }
- *(uint32*)rb=ra;
- rb[sizeof(uint32)]=255;
- rb[sizeof(uint32)+1]=JPEG_MARKER_DHT;
- rb[sizeof(uint32)+2]=((19+q)>>8);
- rb[sizeof(uint32)+3]=((19+q)&255);
- rb[sizeof(uint32)+4]=(16|m);
- for (n=0; n<16; n++)
- rb[sizeof(uint32)+5+n]=o[n];
- p=TIFFReadFile(tif,&(rb[sizeof(uint32)+21]),q);
- if (p!=q)
- return(0);
- sp->actable[m]=rb;
- sp->sos_tda[m]=(sp->sos_tda[m]|m);
- }
- else
- sp->sos_tda[m]=(sp->sos_tda[m]|(sp->sos_tda[m-1]&15));
- }
- return(1);
-}
-
-static int
-OJPEGReadBufferFill(OJPEGState* sp)
-{
- uint16 m;
- tsize_t n;
- /* TODO: double-check: when subsamplingcorrect is set, no call to TIFFErrorExt or TIFFWarningExt should be made
- * in any other case, seek or read errors should be passed through */
- do
- {
- if (sp->in_buffer_file_togo!=0)
- {
- if (sp->in_buffer_file_pos_log==0)
- {
- TIFFSeekFile(sp->tif,sp->in_buffer_file_pos,SEEK_SET);
- sp->in_buffer_file_pos_log=1;
- }
- m=OJPEG_BUFFER;
- if (m>sp->in_buffer_file_togo)
- m=(uint16)sp->in_buffer_file_togo;
- n=TIFFReadFile(sp->tif,sp->in_buffer,(tsize_t)m);
- if (n==0)
- return(0);
- assert(n>0);
- assert(n<=OJPEG_BUFFER);
- assert(n<65536);
- assert((uint16)n<=sp->in_buffer_file_togo);
- m=(uint16)n;
- sp->in_buffer_togo=m;
- sp->in_buffer_cur=sp->in_buffer;
- sp->in_buffer_file_togo-=m;
- sp->in_buffer_file_pos+=m;
- break;
- }
- sp->in_buffer_file_pos_log=0;
- switch(sp->in_buffer_source)
- {
- case osibsNotSetYet:
- if (sp->jpeg_interchange_format!=0)
- {
- sp->in_buffer_file_pos=sp->jpeg_interchange_format;
- sp->in_buffer_file_togo=sp->jpeg_interchange_format_length;
- }
- sp->in_buffer_source=osibsJpegInterchangeFormat;
- break;
- case osibsJpegInterchangeFormat:
- sp->in_buffer_source=osibsStrile;
- case osibsStrile:
- if (sp->in_buffer_next_strile==sp->in_buffer_strile_count)
- sp->in_buffer_source=osibsEof;
- else
- {
- sp->in_buffer_file_pos=sp->tif->tif_dir.td_stripoffset[sp->in_buffer_next_strile];
- if (sp->in_buffer_file_pos!=0)
- {
- if (sp->in_buffer_file_pos>=sp->file_size)
- sp->in_buffer_file_pos=0;
- else
- {
- sp->in_buffer_file_togo=sp->tif->tif_dir.td_stripbytecount[sp->in_buffer_next_strile];
- if (sp->in_buffer_file_togo==0)
- sp->in_buffer_file_pos=0;
- else if (sp->in_buffer_file_pos+sp->in_buffer_file_togo>sp->file_size)
- sp->in_buffer_file_togo=sp->file_size-sp->in_buffer_file_pos;
- }
- }
- sp->in_buffer_next_strile++;
- }
- break;
- default:
- return(0);
- }
- } while (1);
- return(1);
-}
-
-static int
-OJPEGReadByte(OJPEGState* sp, uint8* byte)
-{
- if (sp->in_buffer_togo==0)
- {
- if (OJPEGReadBufferFill(sp)==0)
- return(0);
- assert(sp->in_buffer_togo>0);
- }
- *byte=*(sp->in_buffer_cur);
- sp->in_buffer_cur++;
- sp->in_buffer_togo--;
- return(1);
-}
-
-static int
-OJPEGReadBytePeek(OJPEGState* sp, uint8* byte)
-{
- if (sp->in_buffer_togo==0)
- {
- if (OJPEGReadBufferFill(sp)==0)
- return(0);
- assert(sp->in_buffer_togo>0);
- }
- *byte=*(sp->in_buffer_cur);
- return(1);
-}
-
-static void
-OJPEGReadByteAdvance(OJPEGState* sp)
-{
- assert(sp->in_buffer_togo>0);
- sp->in_buffer_cur++;
- sp->in_buffer_togo--;
-}
-
-static int
-OJPEGReadWord(OJPEGState* sp, uint16* word)
-{
- uint8 m;
- if (OJPEGReadByte(sp,&m)==0)
- return(0);
- *word=(m<<8);
- if (OJPEGReadByte(sp,&m)==0)
- return(0);
- *word|=m;
- return(1);
-}
-
-static int
-OJPEGReadBlock(OJPEGState* sp, uint16 len, void* mem)
-{
- uint16 mlen;
- uint8* mmem;
- uint16 n;
- assert(len>0);
- mlen=len;
- mmem=mem;
- do
- {
- if (sp->in_buffer_togo==0)
- {
- if (OJPEGReadBufferFill(sp)==0)
- return(0);
- assert(sp->in_buffer_togo>0);
- }
- n=mlen;
- if (n>sp->in_buffer_togo)
- n=sp->in_buffer_togo;
- _TIFFmemcpy(mmem,sp->in_buffer_cur,n);
- sp->in_buffer_cur+=n;
- sp->in_buffer_togo-=n;
- mlen-=n;
- mmem+=n;
- } while(mlen>0);
- return(1);
-}
-
-static void
-OJPEGReadSkip(OJPEGState* sp, uint16 len)
-{
- uint16 m;
- uint16 n;
- m=len;
- n=m;
- if (n>sp->in_buffer_togo)
- n=sp->in_buffer_togo;
- sp->in_buffer_cur+=n;
- sp->in_buffer_togo-=n;
- m-=n;
- if (m>0)
- {
- assert(sp->in_buffer_togo==0);
- n=m;
- if (n>sp->in_buffer_file_togo)
- n=sp->in_buffer_file_togo;
- sp->in_buffer_file_pos+=n;
- sp->in_buffer_file_togo-=n;
- sp->in_buffer_file_pos_log=0;
- /* we don't skip past jpeginterchangeformat/strile block...
- * if that is asked from us, we're dealing with totally bazurk
- * data anyway, and we've not seen this happening on any
- * testfile, so we might as well likely cause some other
- * meaningless error to be passed at some later time
- */
- }
-}
-
-static int
-OJPEGWriteStream(TIFF* tif, void** mem, uint32* len)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- *len=0;
- do
- {
- assert(sp->out_state<=ososEoi);
- switch(sp->out_state)
- {
- case ososSoi:
- OJPEGWriteStreamSoi(tif,mem,len);
- break;
- case ososQTable0:
- OJPEGWriteStreamQTable(tif,0,mem,len);
- break;
- case ososQTable1:
- OJPEGWriteStreamQTable(tif,1,mem,len);
- break;
- case ososQTable2:
- OJPEGWriteStreamQTable(tif,2,mem,len);
- break;
- case ososQTable3:
- OJPEGWriteStreamQTable(tif,3,mem,len);
- break;
- case ososDcTable0:
- OJPEGWriteStreamDcTable(tif,0,mem,len);
- break;
- case ososDcTable1:
- OJPEGWriteStreamDcTable(tif,1,mem,len);
- break;
- case ososDcTable2:
- OJPEGWriteStreamDcTable(tif,2,mem,len);
- break;
- case ososDcTable3:
- OJPEGWriteStreamDcTable(tif,3,mem,len);
- break;
- case ososAcTable0:
- OJPEGWriteStreamAcTable(tif,0,mem,len);
- break;
- case ososAcTable1:
- OJPEGWriteStreamAcTable(tif,1,mem,len);
- break;
- case ososAcTable2:
- OJPEGWriteStreamAcTable(tif,2,mem,len);
- break;
- case ososAcTable3:
- OJPEGWriteStreamAcTable(tif,3,mem,len);
- break;
- case ososDri:
- OJPEGWriteStreamDri(tif,mem,len);
- break;
- case ososSof:
- OJPEGWriteStreamSof(tif,mem,len);
- break;
- case ososSos:
- OJPEGWriteStreamSos(tif,mem,len);
- break;
- case ososCompressed:
- if (OJPEGWriteStreamCompressed(tif,mem,len)==0)
- return(0);
- break;
- case ososRst:
- OJPEGWriteStreamRst(tif,mem,len);
- break;
- case ososEoi:
- OJPEGWriteStreamEoi(tif,mem,len);
- break;
- }
- } while (*len==0);
- return(1);
-}
-
-static void
-OJPEGWriteStreamSoi(TIFF* tif, void** mem, uint32* len)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- assert(OJPEG_BUFFER>=2);
- sp->out_buffer[0]=255;
- sp->out_buffer[1]=JPEG_MARKER_SOI;
- *len=2;
- *mem=(void*)sp->out_buffer;
- sp->out_state++;
-}
-
-static void
-OJPEGWriteStreamQTable(TIFF* tif, uint8 table_index, void** mem, uint32* len)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- if (sp->qtable[table_index]!=0)
- {
- *mem=(void*)(sp->qtable[table_index]+sizeof(uint32));
- *len=*((uint32*)sp->qtable[table_index])-sizeof(uint32);
- }
- sp->out_state++;
-}
-
-static void
-OJPEGWriteStreamDcTable(TIFF* tif, uint8 table_index, void** mem, uint32* len)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- if (sp->dctable[table_index]!=0)
- {
- *mem=(void*)(sp->dctable[table_index]+sizeof(uint32));
- *len=*((uint32*)sp->dctable[table_index])-sizeof(uint32);
- }
- sp->out_state++;
-}
-
-static void
-OJPEGWriteStreamAcTable(TIFF* tif, uint8 table_index, void** mem, uint32* len)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- if (sp->actable[table_index]!=0)
- {
- *mem=(void*)(sp->actable[table_index]+sizeof(uint32));
- *len=*((uint32*)sp->actable[table_index])-sizeof(uint32);
- }
- sp->out_state++;
-}
-
-static void
-OJPEGWriteStreamDri(TIFF* tif, void** mem, uint32* len)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- assert(OJPEG_BUFFER>=6);
- if (sp->restart_interval!=0)
- {
- sp->out_buffer[0]=255;
- sp->out_buffer[1]=JPEG_MARKER_DRI;
- sp->out_buffer[2]=0;
- sp->out_buffer[3]=4;
- sp->out_buffer[4]=(sp->restart_interval>>8);
- sp->out_buffer[5]=(sp->restart_interval&255);
- *len=6;
- *mem=(void*)sp->out_buffer;
- }
- sp->out_state++;
-}
-
-static void
-OJPEGWriteStreamSof(TIFF* tif, void** mem, uint32* len)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint8 m;
- assert(OJPEG_BUFFER>=2+8+sp->samples_per_pixel_per_plane*3);
- assert(255>=8+sp->samples_per_pixel_per_plane*3);
- sp->out_buffer[0]=255;
- sp->out_buffer[1]=sp->sof_marker_id;
- /* Lf */
- sp->out_buffer[2]=0;
- sp->out_buffer[3]=8+sp->samples_per_pixel_per_plane*3;
- /* P */
- sp->out_buffer[4]=8;
- /* Y */
- sp->out_buffer[5]=(sp->sof_y>>8);
- sp->out_buffer[6]=(sp->sof_y&255);
- /* X */
- sp->out_buffer[7]=(sp->sof_x>>8);
- sp->out_buffer[8]=(sp->sof_x&255);
- /* Nf */
- sp->out_buffer[9]=sp->samples_per_pixel_per_plane;
- for (m=0; m<sp->samples_per_pixel_per_plane; m++)
- {
- /* C */
- sp->out_buffer[10+m*3]=sp->sof_c[sp->plane_sample_offset+m];
- /* H and V */
- sp->out_buffer[10+m*3+1]=sp->sof_hv[sp->plane_sample_offset+m];
- /* Tq */
- sp->out_buffer[10+m*3+2]=sp->sof_tq[sp->plane_sample_offset+m];
- }
- *len=10+sp->samples_per_pixel_per_plane*3;
- *mem=(void*)sp->out_buffer;
- sp->out_state++;
-}
-
-static void
-OJPEGWriteStreamSos(TIFF* tif, void** mem, uint32* len)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- uint8 m;
- assert(OJPEG_BUFFER>=2+6+sp->samples_per_pixel_per_plane*2);
- assert(255>=6+sp->samples_per_pixel_per_plane*2);
- sp->out_buffer[0]=255;
- sp->out_buffer[1]=JPEG_MARKER_SOS;
- /* Ls */
- sp->out_buffer[2]=0;
- sp->out_buffer[3]=6+sp->samples_per_pixel_per_plane*2;
- /* Ns */
- sp->out_buffer[4]=sp->samples_per_pixel_per_plane;
- for (m=0; m<sp->samples_per_pixel_per_plane; m++)
- {
- /* Cs */
- sp->out_buffer[5+m*2]=sp->sos_cs[sp->plane_sample_offset+m];
- /* Td and Ta */
- sp->out_buffer[5+m*2+1]=sp->sos_tda[sp->plane_sample_offset+m];
- }
- /* Ss */
- sp->out_buffer[5+sp->samples_per_pixel_per_plane*2]=0;
- /* Se */
- sp->out_buffer[5+sp->samples_per_pixel_per_plane*2+1]=63;
- /* Ah and Al */
- sp->out_buffer[5+sp->samples_per_pixel_per_plane*2+2]=0;
- *len=8+sp->samples_per_pixel_per_plane*2;
- *mem=(void*)sp->out_buffer;
- sp->out_state++;
-}
-
-static int
-OJPEGWriteStreamCompressed(TIFF* tif, void** mem, uint32* len)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- if (sp->in_buffer_togo==0)
- {
- if (OJPEGReadBufferFill(sp)==0)
- return(0);
- assert(sp->in_buffer_togo>0);
- }
- *len=sp->in_buffer_togo;
- *mem=(void*)sp->in_buffer_cur;
- sp->in_buffer_togo=0;
- if (sp->in_buffer_file_togo==0)
- {
- switch(sp->in_buffer_source)
- {
- case osibsStrile:
- if (sp->in_buffer_next_strile<sp->in_buffer_strile_count)
- sp->out_state=ososRst;
- else
- sp->out_state=ososEoi;
- break;
- case osibsEof:
- sp->out_state=ososEoi;
- break;
- default:
- break;
- }
- }
- return(1);
-}
-
-static void
-OJPEGWriteStreamRst(TIFF* tif, void** mem, uint32* len)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- assert(OJPEG_BUFFER>=2);
- sp->out_buffer[0]=255;
- sp->out_buffer[1]=JPEG_MARKER_RST0+sp->restart_index;
- sp->restart_index++;
- if (sp->restart_index==8)
- sp->restart_index=0;
- *len=2;
- *mem=(void*)sp->out_buffer;
- sp->out_state=ososCompressed;
-}
-
-static void
-OJPEGWriteStreamEoi(TIFF* tif, void** mem, uint32* len)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- assert(OJPEG_BUFFER>=2);
- sp->out_buffer[0]=255;
- sp->out_buffer[1]=JPEG_MARKER_EOI;
- *len=2;
- *mem=(void*)sp->out_buffer;
-}
-
-#ifndef LIBJPEG_ENCAP_EXTERNAL
-static int
-jpeg_create_decompress_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo)
-{
- return(SETJMP(sp->exit_jmpbuf)?0:(jpeg_create_decompress(cinfo),1));
-}
-#endif
-
-#ifndef LIBJPEG_ENCAP_EXTERNAL
-static int
-jpeg_read_header_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo, uint8 require_image)
-{
- return(SETJMP(sp->exit_jmpbuf)?0:(jpeg_read_header(cinfo,require_image),1));
-}
-#endif
-
-#ifndef LIBJPEG_ENCAP_EXTERNAL
-static int
-jpeg_start_decompress_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo)
-{
- return(SETJMP(sp->exit_jmpbuf)?0:(jpeg_start_decompress(cinfo),1));
-}
-#endif
-
-#ifndef LIBJPEG_ENCAP_EXTERNAL
-static int
-jpeg_read_scanlines_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo, void* scanlines, uint32 max_lines)
-{
- return(SETJMP(sp->exit_jmpbuf)?0:(jpeg_read_scanlines(cinfo,scanlines,max_lines),1));
-}
-#endif
-
-#ifndef LIBJPEG_ENCAP_EXTERNAL
-static int
-jpeg_read_raw_data_encap(OJPEGState* sp, jpeg_decompress_struct* cinfo, void* data, uint32 max_lines)
-{
- return(SETJMP(sp->exit_jmpbuf)?0:(jpeg_read_raw_data(cinfo,data,max_lines),1));
-}
-#endif
-
-#ifndef LIBJPEG_ENCAP_EXTERNAL
-static void
-jpeg_encap_unwind(TIFF* tif)
-{
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- LONGJMP(sp->exit_jmpbuf,1);
-}
-#endif
-
-static void
-OJPEGLibjpegJpegErrorMgrOutputMessage(jpeg_common_struct* cinfo)
-{
- char buffer[JMSG_LENGTH_MAX];
- (*cinfo->err->format_message)(cinfo,buffer);
- TIFFWarningExt(((TIFF*)(cinfo->client_data))->tif_clientdata,"LibJpeg", "%s", buffer);
-}
-
-static void
-OJPEGLibjpegJpegErrorMgrErrorExit(jpeg_common_struct* cinfo)
-{
- char buffer[JMSG_LENGTH_MAX];
- (*cinfo->err->format_message)(cinfo,buffer);
- TIFFErrorExt(((TIFF*)(cinfo->client_data))->tif_clientdata,"LibJpeg", "%s", buffer);
- jpeg_encap_unwind((TIFF*)(cinfo->client_data));
-}
-
-static void
-OJPEGLibjpegJpegSourceMgrInitSource(jpeg_decompress_struct* cinfo)
-{
- (void)cinfo;
-}
-
-static boolean
-OJPEGLibjpegJpegSourceMgrFillInputBuffer(jpeg_decompress_struct* cinfo)
-{
- TIFF* tif=(TIFF*)cinfo->client_data;
- OJPEGState* sp=(OJPEGState*)tif->tif_data;
- void* mem=0;
- uint32 len=0;
- if (OJPEGWriteStream(tif,&mem,&len)==0)
- {
- TIFFErrorExt(tif->tif_clientdata,"LibJpeg","Premature end of JPEG data");
- jpeg_encap_unwind(tif);
- }
- sp->libjpeg_jpeg_source_mgr.bytes_in_buffer=len;
- sp->libjpeg_jpeg_source_mgr.next_input_byte=mem;
- return(1);
-}
-
-static void
-OJPEGLibjpegJpegSourceMgrSkipInputData(jpeg_decompress_struct* cinfo, long num_bytes)
-{
- TIFF* tif=(TIFF*)cinfo->client_data;
- (void)num_bytes;
- TIFFErrorExt(tif->tif_clientdata,"LibJpeg","Unexpected error");
- jpeg_encap_unwind(tif);
-}
-
-static boolean
-OJPEGLibjpegJpegSourceMgrResyncToRestart(jpeg_decompress_struct* cinfo, int desired)
-{
- TIFF* tif=(TIFF*)cinfo->client_data;
- (void)desired;
- TIFFErrorExt(tif->tif_clientdata,"LibJpeg","Unexpected error");
- jpeg_encap_unwind(tif);
- return(0);
-}
-
-static void
-OJPEGLibjpegJpegSourceMgrTermSource(jpeg_decompress_struct* cinfo)
-{
- (void)cinfo;
-}
-
-#endif
-
-
diff --git a/src/3rdparty/libtiff/libtiff/tif_open.c b/src/3rdparty/libtiff/libtiff/tif_open.c
deleted file mode 100644
index a567056ce7..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_open.c
+++ /dev/null
@@ -1,688 +0,0 @@
-/* $Id: tif_open.c,v 1.33 2006/06/08 14:27:17 dron Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- */
-#include "tiffiop.h"
-
-static const long typemask[13] = {
- (long)0L, /* TIFF_NOTYPE */
- (long)0x000000ffL, /* TIFF_BYTE */
- (long)0xffffffffL, /* TIFF_ASCII */
- (long)0x0000ffffL, /* TIFF_SHORT */
- (long)0xffffffffL, /* TIFF_LONG */
- (long)0xffffffffL, /* TIFF_RATIONAL */
- (long)0x000000ffL, /* TIFF_SBYTE */
- (long)0x000000ffL, /* TIFF_UNDEFINED */
- (long)0x0000ffffL, /* TIFF_SSHORT */
- (long)0xffffffffL, /* TIFF_SLONG */
- (long)0xffffffffL, /* TIFF_SRATIONAL */
- (long)0xffffffffL, /* TIFF_FLOAT */
- (long)0xffffffffL, /* TIFF_DOUBLE */
-};
-static const int bigTypeshift[13] = {
- 0, /* TIFF_NOTYPE */
- 24, /* TIFF_BYTE */
- 0, /* TIFF_ASCII */
- 16, /* TIFF_SHORT */
- 0, /* TIFF_LONG */
- 0, /* TIFF_RATIONAL */
- 24, /* TIFF_SBYTE */
- 24, /* TIFF_UNDEFINED */
- 16, /* TIFF_SSHORT */
- 0, /* TIFF_SLONG */
- 0, /* TIFF_SRATIONAL */
- 0, /* TIFF_FLOAT */
- 0, /* TIFF_DOUBLE */
-};
-static const int litTypeshift[13] = {
- 0, /* TIFF_NOTYPE */
- 0, /* TIFF_BYTE */
- 0, /* TIFF_ASCII */
- 0, /* TIFF_SHORT */
- 0, /* TIFF_LONG */
- 0, /* TIFF_RATIONAL */
- 0, /* TIFF_SBYTE */
- 0, /* TIFF_UNDEFINED */
- 0, /* TIFF_SSHORT */
- 0, /* TIFF_SLONG */
- 0, /* TIFF_SRATIONAL */
- 0, /* TIFF_FLOAT */
- 0, /* TIFF_DOUBLE */
-};
-
-/*
- * Dummy functions to fill the omitted client procedures.
- */
-static int
-_tiffDummyMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
- (void) fd; (void) pbase; (void) psize;
- return (0);
-}
-
-static void
-_tiffDummyUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
- (void) fd; (void) base; (void) size;
-}
-
-/*
- * Initialize the shift & mask tables, and the
- * byte swapping state according to the file
- * contents and the machine architecture.
- */
-static void
-TIFFInitOrder(TIFF* tif, int magic)
-{
- tif->tif_typemask = typemask;
- if (magic == TIFF_BIGENDIAN) {
- tif->tif_typeshift = bigTypeshift;
-#ifndef WORDS_BIGENDIAN
- tif->tif_flags |= TIFF_SWAB;
-#endif
- } else {
- tif->tif_typeshift = litTypeshift;
-#ifdef WORDS_BIGENDIAN
- tif->tif_flags |= TIFF_SWAB;
-#endif
- }
-}
-
-int
-_TIFFgetMode(const char* mode, const char* module)
-{
- int m = -1;
-
- switch (mode[0]) {
- case 'r':
- m = O_RDONLY;
- if (mode[1] == '+')
- m = O_RDWR;
- break;
- case 'w':
- case 'a':
- m = O_RDWR|O_CREAT;
- if (mode[0] == 'w')
- m |= O_TRUNC;
- break;
- default:
- TIFFErrorExt(0, module, "\"%s\": Bad mode", mode);
- break;
- }
- return (m);
-}
-
-TIFF*
-TIFFClientOpen(
- const char* name, const char* mode,
- thandle_t clientdata,
- TIFFReadWriteProc readproc,
- TIFFReadWriteProc writeproc,
- TIFFSeekProc seekproc,
- TIFFCloseProc closeproc,
- TIFFSizeProc sizeproc,
- TIFFMapFileProc mapproc,
- TIFFUnmapFileProc unmapproc
-)
-{
- static const char module[] = "TIFFClientOpen";
- TIFF *tif;
- int m;
- const char* cp;
-
- m = _TIFFgetMode(mode, module);
- if (m == -1)
- goto bad2;
- tif = (TIFF *)_TIFFmalloc(sizeof (TIFF) + strlen(name) + 1);
- if (tif == NULL) {
- TIFFErrorExt(clientdata, module, "%s: Out of memory (TIFF structure)", name);
- goto bad2;
- }
- _TIFFmemset(tif, 0, sizeof (*tif));
- tif->tif_name = (char *)tif + sizeof (TIFF);
- strcpy(tif->tif_name, name);
- tif->tif_mode = m &~ (O_CREAT|O_TRUNC);
- tif->tif_curdir = (tdir_t) -1; /* non-existent directory */
- tif->tif_curoff = 0;
- tif->tif_curstrip = (tstrip_t) -1; /* invalid strip */
- tif->tif_row = (uint32) -1; /* read/write pre-increment */
- tif->tif_clientdata = clientdata;
- if (!readproc || !writeproc || !seekproc || !closeproc || !sizeproc) {
- TIFFErrorExt(clientdata, module,
- "One of the client procedures is NULL pointer.");
- goto bad2;
- }
- tif->tif_readproc = readproc;
- tif->tif_writeproc = writeproc;
- tif->tif_seekproc = seekproc;
- tif->tif_closeproc = closeproc;
- tif->tif_sizeproc = sizeproc;
- if (mapproc)
- tif->tif_mapproc = mapproc;
- else
- tif->tif_mapproc = _tiffDummyMapProc;
- if (unmapproc)
- tif->tif_unmapproc = unmapproc;
- else
- tif->tif_unmapproc = _tiffDummyUnmapProc;
- _TIFFSetDefaultCompressionState(tif); /* setup default state */
- /*
- * Default is to return data MSB2LSB and enable the
- * use of memory-mapped files and strip chopping when
- * a file is opened read-only.
- */
- tif->tif_flags = FILLORDER_MSB2LSB;
- if (m == O_RDONLY )
- tif->tif_flags |= TIFF_MAPPED;
-
-#ifdef STRIPCHOP_DEFAULT
- if (m == O_RDONLY || m == O_RDWR)
- tif->tif_flags |= STRIPCHOP_DEFAULT;
-#endif
-
- /*
- * Process library-specific flags in the open mode string.
- * The following flags may be used to control intrinsic library
- * behaviour that may or may not be desirable (usually for
- * compatibility with some application that claims to support
- * TIFF but only supports some braindead idea of what the
- * vendor thinks TIFF is):
- *
- * 'l' use little-endian byte order for creating a file
- * 'b' use big-endian byte order for creating a file
- * 'L' read/write information using LSB2MSB bit order
- * 'B' read/write information using MSB2LSB bit order
- * 'H' read/write information using host bit order
- * 'M' enable use of memory-mapped files when supported
- * 'm' disable use of memory-mapped files
- * 'C' enable strip chopping support when reading
- * 'c' disable strip chopping support
- * 'h' read TIFF header only, do not load the first IFD
- *
- * The use of the 'l' and 'b' flags is strongly discouraged.
- * These flags are provided solely because numerous vendors,
- * typically on the PC, do not correctly support TIFF; they
- * only support the Intel little-endian byte order. This
- * support is not configured by default because it supports
- * the violation of the TIFF spec that says that readers *MUST*
- * support both byte orders. It is strongly recommended that
- * you not use this feature except to deal with busted apps
- * that write invalid TIFF. And even in those cases you should
- * bang on the vendors to fix their software.
- *
- * The 'L', 'B', and 'H' flags are intended for applications
- * that can optimize operations on data by using a particular
- * bit order. By default the library returns data in MSB2LSB
- * bit order for compatibiltiy with older versions of this
- * library. Returning data in the bit order of the native cpu
- * makes the most sense but also requires applications to check
- * the value of the FillOrder tag; something they probably do
- * not do right now.
- *
- * The 'M' and 'm' flags are provided because some virtual memory
- * systems exhibit poor behaviour when large images are mapped.
- * These options permit clients to control the use of memory-mapped
- * files on a per-file basis.
- *
- * The 'C' and 'c' flags are provided because the library support
- * for chopping up large strips into multiple smaller strips is not
- * application-transparent and as such can cause problems. The 'c'
- * option permits applications that only want to look at the tags,
- * for example, to get the unadulterated TIFF tag information.
- */
- for (cp = mode; *cp; cp++)
- switch (*cp) {
- case 'b':
-#ifndef WORDS_BIGENDIAN
- if (m&O_CREAT)
- tif->tif_flags |= TIFF_SWAB;
-#endif
- break;
- case 'l':
-#ifdef WORDS_BIGENDIAN
- if ((m&O_CREAT))
- tif->tif_flags |= TIFF_SWAB;
-#endif
- break;
- case 'B':
- tif->tif_flags = (tif->tif_flags &~ TIFF_FILLORDER) |
- FILLORDER_MSB2LSB;
- break;
- case 'L':
- tif->tif_flags = (tif->tif_flags &~ TIFF_FILLORDER) |
- FILLORDER_LSB2MSB;
- break;
- case 'H':
- tif->tif_flags = (tif->tif_flags &~ TIFF_FILLORDER) |
- HOST_FILLORDER;
- break;
- case 'M':
- if (m == O_RDONLY)
- tif->tif_flags |= TIFF_MAPPED;
- break;
- case 'm':
- if (m == O_RDONLY)
- tif->tif_flags &= ~TIFF_MAPPED;
- break;
- case 'C':
- if (m == O_RDONLY)
- tif->tif_flags |= TIFF_STRIPCHOP;
- break;
- case 'c':
- if (m == O_RDONLY)
- tif->tif_flags &= ~TIFF_STRIPCHOP;
- break;
- case 'h':
- tif->tif_flags |= TIFF_HEADERONLY;
- break;
- }
- /*
- * Read in TIFF header.
- */
- if (tif->tif_mode & O_TRUNC ||
- !ReadOK(tif, &tif->tif_header, sizeof (TIFFHeader))) {
- if (tif->tif_mode == O_RDONLY) {
- TIFFErrorExt(tif->tif_clientdata, name,
- "Cannot read TIFF header");
- goto bad;
- }
- /*
- * Setup header and write.
- */
-#ifdef WORDS_BIGENDIAN
- tif->tif_header.tiff_magic = tif->tif_flags & TIFF_SWAB
- ? TIFF_LITTLEENDIAN : TIFF_BIGENDIAN;
-#else
- tif->tif_header.tiff_magic = tif->tif_flags & TIFF_SWAB
- ? TIFF_BIGENDIAN : TIFF_LITTLEENDIAN;
-#endif
- tif->tif_header.tiff_version = TIFF_VERSION;
- if (tif->tif_flags & TIFF_SWAB)
- TIFFSwabShort(&tif->tif_header.tiff_version);
- tif->tif_header.tiff_diroff = 0; /* filled in later */
-
-
- /*
- * The doc for "fopen" for some STD_C_LIBs says that if you
- * open a file for modify ("+"), then you must fseek (or
- * fflush?) between any freads and fwrites. This is not
- * necessary on most systems, but has been shown to be needed
- * on Solaris.
- */
- TIFFSeekFile( tif, 0, SEEK_SET );
-
- if (!WriteOK(tif, &tif->tif_header, sizeof (TIFFHeader))) {
- TIFFErrorExt(tif->tif_clientdata, name,
- "Error writing TIFF header");
- goto bad;
- }
- /*
- * Setup the byte order handling.
- */
- TIFFInitOrder(tif, tif->tif_header.tiff_magic);
- /*
- * Setup default directory.
- */
- if (!TIFFDefaultDirectory(tif))
- goto bad;
- tif->tif_diroff = 0;
- tif->tif_dirlist = NULL;
- tif->tif_dirlistsize = 0;
- tif->tif_dirnumber = 0;
- return (tif);
- }
- /*
- * Setup the byte order handling.
- */
- if (tif->tif_header.tiff_magic != TIFF_BIGENDIAN &&
- tif->tif_header.tiff_magic != TIFF_LITTLEENDIAN
-#if MDI_SUPPORT
- &&
-#if HOST_BIGENDIAN
- tif->tif_header.tiff_magic != MDI_BIGENDIAN
-#else
- tif->tif_header.tiff_magic != MDI_LITTLEENDIAN
-#endif
- ) {
- TIFFErrorExt(tif->tif_clientdata, name,
- "Not a TIFF or MDI file, bad magic number %d (0x%x)",
-#else
- ) {
- TIFFErrorExt(tif->tif_clientdata, name,
- "Not a TIFF file, bad magic number %d (0x%x)",
-#endif
- tif->tif_header.tiff_magic,
- tif->tif_header.tiff_magic);
- goto bad;
- }
- TIFFInitOrder(tif, tif->tif_header.tiff_magic);
- /*
- * Swap header if required.
- */
- if (tif->tif_flags & TIFF_SWAB) {
- TIFFSwabShort(&tif->tif_header.tiff_version);
- TIFFSwabLong(&tif->tif_header.tiff_diroff);
- }
- /*
- * Now check version (if needed, it's been byte-swapped).
- * Note that this isn't actually a version number, it's a
- * magic number that doesn't change (stupid).
- */
- if (tif->tif_header.tiff_version == TIFF_BIGTIFF_VERSION) {
- TIFFErrorExt(tif->tif_clientdata, name,
- "This is a BigTIFF file. This format not supported\n"
- "by this version of libtiff." );
- goto bad;
- }
- if (tif->tif_header.tiff_version != TIFF_VERSION) {
- TIFFErrorExt(tif->tif_clientdata, name,
- "Not a TIFF file, bad version number %d (0x%x)",
- tif->tif_header.tiff_version,
- tif->tif_header.tiff_version);
- goto bad;
- }
- tif->tif_flags |= TIFF_MYBUFFER;
- tif->tif_rawcp = tif->tif_rawdata = 0;
- tif->tif_rawdatasize = 0;
-
- /*
- * Sometimes we do not want to read the first directory (for example,
- * it may be broken) and want to proceed to other directories. I this
- * case we use the TIFF_HEADERONLY flag to open file and return
- * immediately after reading TIFF header.
- */
- if (tif->tif_flags & TIFF_HEADERONLY)
- return (tif);
-
- /*
- * Setup initial directory.
- */
- switch (mode[0]) {
- case 'r':
- tif->tif_nextdiroff = tif->tif_header.tiff_diroff;
- /*
- * Try to use a memory-mapped file if the client
- * has not explicitly suppressed usage with the
- * 'm' flag in the open mode (see above).
- */
- if ((tif->tif_flags & TIFF_MAPPED) &&
- !TIFFMapFileContents(tif, (tdata_t*) &tif->tif_base, &tif->tif_size))
- tif->tif_flags &= ~TIFF_MAPPED;
- if (TIFFReadDirectory(tif)) {
- tif->tif_rawcc = -1;
- tif->tif_flags |= TIFF_BUFFERSETUP;
- return (tif);
- }
- break;
- case 'a':
- /*
- * New directories are automatically append
- * to the end of the directory chain when they
- * are written out (see TIFFWriteDirectory).
- */
- if (!TIFFDefaultDirectory(tif))
- goto bad;
- return (tif);
- }
-bad:
- tif->tif_mode = O_RDONLY; /* XXX avoid flush */
- TIFFCleanup(tif);
-bad2:
- return ((TIFF*)0);
-}
-
-/*
- * Query functions to access private data.
- */
-
-/*
- * Return open file's name.
- */
-const char *
-TIFFFileName(TIFF* tif)
-{
- return (tif->tif_name);
-}
-
-/*
- * Set the file name.
- */
-const char *
-TIFFSetFileName(TIFF* tif, const char *name)
-{
- const char* old_name = tif->tif_name;
- tif->tif_name = (char *)name;
- return (old_name);
-}
-
-/*
- * Return open file's I/O descriptor.
- */
-int
-TIFFFileno(TIFF* tif)
-{
- return (tif->tif_fd);
-}
-
-/*
- * Set open file's I/O descriptor, and return previous value.
- */
-int
-TIFFSetFileno(TIFF* tif, int fd)
-{
- int old_fd = tif->tif_fd;
- tif->tif_fd = fd;
- return old_fd;
-}
-
-/*
- * Return open file's clientdata.
- */
-thandle_t
-TIFFClientdata(TIFF* tif)
-{
- return (tif->tif_clientdata);
-}
-
-/*
- * Set open file's clientdata, and return previous value.
- */
-thandle_t
-TIFFSetClientdata(TIFF* tif, thandle_t newvalue)
-{
- thandle_t m = tif->tif_clientdata;
- tif->tif_clientdata = newvalue;
- return m;
-}
-
-/*
- * Return read/write mode.
- */
-int
-TIFFGetMode(TIFF* tif)
-{
- return (tif->tif_mode);
-}
-
-/*
- * Return read/write mode.
- */
-int
-TIFFSetMode(TIFF* tif, int mode)
-{
- int old_mode = tif->tif_mode;
- tif->tif_mode = mode;
- return (old_mode);
-}
-
-/*
- * Return nonzero if file is organized in
- * tiles; zero if organized as strips.
- */
-int
-TIFFIsTiled(TIFF* tif)
-{
- return (isTiled(tif));
-}
-
-/*
- * Return current row being read/written.
- */
-uint32
-TIFFCurrentRow(TIFF* tif)
-{
- return (tif->tif_row);
-}
-
-/*
- * Return index of the current directory.
- */
-tdir_t
-TIFFCurrentDirectory(TIFF* tif)
-{
- return (tif->tif_curdir);
-}
-
-/*
- * Return current strip.
- */
-tstrip_t
-TIFFCurrentStrip(TIFF* tif)
-{
- return (tif->tif_curstrip);
-}
-
-/*
- * Return current tile.
- */
-ttile_t
-TIFFCurrentTile(TIFF* tif)
-{
- return (tif->tif_curtile);
-}
-
-/*
- * Return nonzero if the file has byte-swapped data.
- */
-int
-TIFFIsByteSwapped(TIFF* tif)
-{
- return ((tif->tif_flags & TIFF_SWAB) != 0);
-}
-
-/*
- * Return nonzero if the data is returned up-sampled.
- */
-int
-TIFFIsUpSampled(TIFF* tif)
-{
- return (isUpSampled(tif));
-}
-
-/*
- * Return nonzero if the data is returned in MSB-to-LSB bit order.
- */
-int
-TIFFIsMSB2LSB(TIFF* tif)
-{
- return (isFillOrder(tif, FILLORDER_MSB2LSB));
-}
-
-/*
- * Return nonzero if given file was written in big-endian order.
- */
-int
-TIFFIsBigEndian(TIFF* tif)
-{
- return (tif->tif_header.tiff_magic == TIFF_BIGENDIAN);
-}
-
-/*
- * Return pointer to file read method.
- */
-TIFFReadWriteProc
-TIFFGetReadProc(TIFF* tif)
-{
- return (tif->tif_readproc);
-}
-
-/*
- * Return pointer to file write method.
- */
-TIFFReadWriteProc
-TIFFGetWriteProc(TIFF* tif)
-{
- return (tif->tif_writeproc);
-}
-
-/*
- * Return pointer to file seek method.
- */
-TIFFSeekProc
-TIFFGetSeekProc(TIFF* tif)
-{
- return (tif->tif_seekproc);
-}
-
-/*
- * Return pointer to file close method.
- */
-TIFFCloseProc
-TIFFGetCloseProc(TIFF* tif)
-{
- return (tif->tif_closeproc);
-}
-
-/*
- * Return pointer to file size requesting method.
- */
-TIFFSizeProc
-TIFFGetSizeProc(TIFF* tif)
-{
- return (tif->tif_sizeproc);
-}
-
-/*
- * Return pointer to memory mapping method.
- */
-TIFFMapFileProc
-TIFFGetMapFileProc(TIFF* tif)
-{
- return (tif->tif_mapproc);
-}
-
-/*
- * Return pointer to memory unmapping method.
- */
-TIFFUnmapFileProc
-TIFFGetUnmapFileProc(TIFF* tif)
-{
- return (tif->tif_unmapproc);
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_packbits.c b/src/3rdparty/libtiff/libtiff/tif_packbits.c
deleted file mode 100644
index 171a2692a8..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_packbits.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/* $Id: tif_packbits.c,v 1.13.2.1 2009-01-01 00:10:43 bfriesen Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#include "tiffiop.h"
-#ifdef PACKBITS_SUPPORT
-/*
- * TIFF Library.
- *
- * PackBits Compression Algorithm Support
- */
-#include <stdio.h>
-
-static int
-PackBitsPreEncode(TIFF* tif, tsample_t s)
-{
- (void) s;
-
- if (!(tif->tif_data = (tidata_t)_TIFFmalloc(sizeof(tsize_t))))
- return (0);
- /*
- * Calculate the scanline/tile-width size in bytes.
- */
- if (isTiled(tif))
- *(tsize_t*)tif->tif_data = TIFFTileRowSize(tif);
- else
- *(tsize_t*)tif->tif_data = TIFFScanlineSize(tif);
- return (1);
-}
-
-static int
-PackBitsPostEncode(TIFF* tif)
-{
- if (tif->tif_data)
- _TIFFfree(tif->tif_data);
- return (1);
-}
-
-/*
- * NB: tidata is the type representing *(tidata_t);
- * if tidata_t is made signed then this type must
- * be adjusted accordingly.
- */
-typedef unsigned char tidata;
-
-/*
- * Encode a run of pixels.
- */
-static int
-PackBitsEncode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
-{
- unsigned char* bp = (unsigned char*) buf;
- tidata_t op, ep, lastliteral;
- long n, slop;
- int b;
- enum { BASE, LITERAL, RUN, LITERAL_RUN } state;
-
- (void) s;
- op = tif->tif_rawcp;
- ep = tif->tif_rawdata + tif->tif_rawdatasize;
- state = BASE;
- lastliteral = 0;
- while (cc > 0) {
- /*
- * Find the longest string of identical bytes.
- */
- b = *bp++, cc--, n = 1;
- for (; cc > 0 && b == *bp; cc--, bp++)
- n++;
- again:
- if (op + 2 >= ep) { /* insure space for new data */
- /*
- * Be careful about writing the last
- * literal. Must write up to that point
- * and then copy the remainder to the
- * front of the buffer.
- */
- if (state == LITERAL || state == LITERAL_RUN) {
- slop = op - lastliteral;
- tif->tif_rawcc += lastliteral - tif->tif_rawcp;
- if (!TIFFFlushData1(tif))
- return (-1);
- op = tif->tif_rawcp;
- while (slop-- > 0)
- *op++ = *lastliteral++;
- lastliteral = tif->tif_rawcp;
- } else {
- tif->tif_rawcc += op - tif->tif_rawcp;
- if (!TIFFFlushData1(tif))
- return (-1);
- op = tif->tif_rawcp;
- }
- }
- switch (state) {
- case BASE: /* initial state, set run/literal */
- if (n > 1) {
- state = RUN;
- if (n > 128) {
- *op++ = (tidata) -127;
- *op++ = (tidataval_t) b;
- n -= 128;
- goto again;
- }
- *op++ = (tidataval_t)(-(n-1));
- *op++ = (tidataval_t) b;
- } else {
- lastliteral = op;
- *op++ = 0;
- *op++ = (tidataval_t) b;
- state = LITERAL;
- }
- break;
- case LITERAL: /* last object was literal string */
- if (n > 1) {
- state = LITERAL_RUN;
- if (n > 128) {
- *op++ = (tidata) -127;
- *op++ = (tidataval_t) b;
- n -= 128;
- goto again;
- }
- *op++ = (tidataval_t)(-(n-1)); /* encode run */
- *op++ = (tidataval_t) b;
- } else { /* extend literal */
- if (++(*lastliteral) == 127)
- state = BASE;
- *op++ = (tidataval_t) b;
- }
- break;
- case RUN: /* last object was run */
- if (n > 1) {
- if (n > 128) {
- *op++ = (tidata) -127;
- *op++ = (tidataval_t) b;
- n -= 128;
- goto again;
- }
- *op++ = (tidataval_t)(-(n-1));
- *op++ = (tidataval_t) b;
- } else {
- lastliteral = op;
- *op++ = 0;
- *op++ = (tidataval_t) b;
- state = LITERAL;
- }
- break;
- case LITERAL_RUN: /* literal followed by a run */
- /*
- * Check to see if previous run should
- * be converted to a literal, in which
- * case we convert literal-run-literal
- * to a single literal.
- */
- if (n == 1 && op[-2] == (tidata) -1 &&
- *lastliteral < 126) {
- state = (((*lastliteral) += 2) == 127 ?
- BASE : LITERAL);
- op[-2] = op[-1]; /* replicate */
- } else
- state = RUN;
- goto again;
- }
- }
- tif->tif_rawcc += op - tif->tif_rawcp;
- tif->tif_rawcp = op;
- return (1);
-}
-
-/*
- * Encode a rectangular chunk of pixels. We break it up
- * into row-sized pieces to insure that encoded runs do
- * not span rows. Otherwise, there can be problems with
- * the decoder if data is read, for example, by scanlines
- * when it was encoded by strips.
- */
-static int
-PackBitsEncodeChunk(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
- tsize_t rowsize = *(tsize_t*)tif->tif_data;
-
- while ((long)cc > 0) {
- int chunk = rowsize;
-
- if( cc < chunk )
- chunk = cc;
-
- if (PackBitsEncode(tif, bp, chunk, s) < 0)
- return (-1);
- bp += chunk;
- cc -= chunk;
- }
- return (1);
-}
-
-static int
-PackBitsDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
-{
- char *bp;
- tsize_t cc;
- long n;
- int b;
-
- (void) s;
- bp = (char*) tif->tif_rawcp;
- cc = tif->tif_rawcc;
- while (cc > 0 && (long)occ > 0) {
- n = (long) *bp++, cc--;
- /*
- * Watch out for compilers that
- * don't sign extend chars...
- */
- if (n >= 128)
- n -= 256;
- if (n < 0) { /* replicate next byte -n+1 times */
- if (n == -128) /* nop */
- continue;
- n = -n + 1;
- if( occ < n )
- {
- TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
- "PackBitsDecode: discarding %ld bytes "
- "to avoid buffer overrun",
- n - occ);
- n = occ;
- }
- occ -= n;
- b = *bp++, cc--;
- while (n-- > 0)
- *op++ = (tidataval_t) b;
- } else { /* copy next n+1 bytes literally */
- if (occ < n + 1)
- {
- TIFFWarningExt(tif->tif_clientdata, tif->tif_name,
- "PackBitsDecode: discarding %ld bytes "
- "to avoid buffer overrun",
- n - occ + 1);
- n = occ - 1;
- }
- _TIFFmemcpy(op, bp, ++n);
- op += n; occ -= n;
- bp += n; cc -= n;
- }
- }
- tif->tif_rawcp = (tidata_t) bp;
- tif->tif_rawcc = cc;
- if (occ > 0) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "PackBitsDecode: Not enough data for scanline %ld",
- (long) tif->tif_row);
- return (0);
- }
- return (1);
-}
-
-int
-TIFFInitPackBits(TIFF* tif, int scheme)
-{
- (void) scheme;
- tif->tif_decoderow = PackBitsDecode;
- tif->tif_decodestrip = PackBitsDecode;
- tif->tif_decodetile = PackBitsDecode;
- tif->tif_preencode = PackBitsPreEncode;
- tif->tif_postencode = PackBitsPostEncode;
- tif->tif_encoderow = PackBitsEncode;
- tif->tif_encodestrip = PackBitsEncodeChunk;
- tif->tif_encodetile = PackBitsEncodeChunk;
- return (1);
-}
-#endif /* PACKBITS_SUPPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_pixarlog.c b/src/3rdparty/libtiff/libtiff/tif_pixarlog.c
deleted file mode 100644
index 5ad84f8b80..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_pixarlog.c
+++ /dev/null
@@ -1,1364 +0,0 @@
-/* $Id: tif_pixarlog.c,v 1.15.2.3 2009-01-01 00:10:43 bfriesen Exp $ */
-
-/*
- * Copyright (c) 1996-1997 Sam Leffler
- * Copyright (c) 1996 Pixar
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Pixar, Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Pixar, Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL PIXAR, SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#include "tiffiop.h"
-#ifdef PIXARLOG_SUPPORT
-
-/*
- * TIFF Library.
- * PixarLog Compression Support
- *
- * Contributed by Dan McCoy.
- *
- * PixarLog film support uses the TIFF library to store companded
- * 11 bit values into a tiff file, which are compressed using the
- * zip compressor.
- *
- * The codec can take as input and produce as output 32-bit IEEE float values
- * as well as 16-bit or 8-bit unsigned integer values.
- *
- * On writing any of the above are converted into the internal
- * 11-bit log format. In the case of 8 and 16 bit values, the
- * input is assumed to be unsigned linear color values that represent
- * the range 0-1. In the case of IEEE values, the 0-1 range is assumed to
- * be the normal linear color range, in addition over 1 values are
- * accepted up to a value of about 25.0 to encode "hot" hightlights and such.
- * The encoding is lossless for 8-bit values, slightly lossy for the
- * other bit depths. The actual color precision should be better
- * than the human eye can perceive with extra room to allow for
- * error introduced by further image computation. As with any quantized
- * color format, it is possible to perform image calculations which
- * expose the quantization error. This format should certainly be less
- * susceptable to such errors than standard 8-bit encodings, but more
- * susceptable than straight 16-bit or 32-bit encodings.
- *
- * On reading the internal format is converted to the desired output format.
- * The program can request which format it desires by setting the internal
- * pseudo tag TIFFTAG_PIXARLOGDATAFMT to one of these possible values:
- * PIXARLOGDATAFMT_FLOAT = provide IEEE float values.
- * PIXARLOGDATAFMT_16BIT = provide unsigned 16-bit integer values
- * PIXARLOGDATAFMT_8BIT = provide unsigned 8-bit integer values
- *
- * alternately PIXARLOGDATAFMT_8BITABGR provides unsigned 8-bit integer
- * values with the difference that if there are exactly three or four channels
- * (rgb or rgba) it swaps the channel order (bgr or abgr).
- *
- * PIXARLOGDATAFMT_11BITLOG provides the internal encoding directly
- * packed in 16-bit values. However no tools are supplied for interpreting
- * these values.
- *
- * "hot" (over 1.0) areas written in floating point get clamped to
- * 1.0 in the integer data types.
- *
- * When the file is closed after writing, the bit depth and sample format
- * are set always to appear as if 8-bit data has been written into it.
- * That way a naive program unaware of the particulars of the encoding
- * gets the format it is most likely able to handle.
- *
- * The codec does it's own horizontal differencing step on the coded
- * values so the libraries predictor stuff should be turned off.
- * The codec also handle byte swapping the encoded values as necessary
- * since the library does not have the information necessary
- * to know the bit depth of the raw unencoded buffer.
- *
- */
-
-#include "tif_predict.h"
-#include "zlib.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-
-/* Tables for converting to/from 11 bit coded values */
-
-#define TSIZE 2048 /* decode table size (11-bit tokens) */
-#define TSIZEP1 2049 /* Plus one for slop */
-#define ONE 1250 /* token value of 1.0 exactly */
-#define RATIO 1.004 /* nominal ratio for log part */
-
-#define CODE_MASK 0x7ff /* 11 bits. */
-
-static float Fltsize;
-static float LogK1, LogK2;
-
-#define REPEAT(n, op) { int i; i=n; do { i--; op; } while (i>0); }
-
-static void
-horizontalAccumulateF(uint16 *wp, int n, int stride, float *op,
- float *ToLinearF)
-{
- register unsigned int cr, cg, cb, ca, mask;
- register float t0, t1, t2, t3;
-
- if (n >= stride) {
- mask = CODE_MASK;
- if (stride == 3) {
- t0 = ToLinearF[cr = wp[0]];
- t1 = ToLinearF[cg = wp[1]];
- t2 = ToLinearF[cb = wp[2]];
- op[0] = t0;
- op[1] = t1;
- op[2] = t2;
- n -= 3;
- while (n > 0) {
- wp += 3;
- op += 3;
- n -= 3;
- t0 = ToLinearF[(cr += wp[0]) & mask];
- t1 = ToLinearF[(cg += wp[1]) & mask];
- t2 = ToLinearF[(cb += wp[2]) & mask];
- op[0] = t0;
- op[1] = t1;
- op[2] = t2;
- }
- } else if (stride == 4) {
- t0 = ToLinearF[cr = wp[0]];
- t1 = ToLinearF[cg = wp[1]];
- t2 = ToLinearF[cb = wp[2]];
- t3 = ToLinearF[ca = wp[3]];
- op[0] = t0;
- op[1] = t1;
- op[2] = t2;
- op[3] = t3;
- n -= 4;
- while (n > 0) {
- wp += 4;
- op += 4;
- n -= 4;
- t0 = ToLinearF[(cr += wp[0]) & mask];
- t1 = ToLinearF[(cg += wp[1]) & mask];
- t2 = ToLinearF[(cb += wp[2]) & mask];
- t3 = ToLinearF[(ca += wp[3]) & mask];
- op[0] = t0;
- op[1] = t1;
- op[2] = t2;
- op[3] = t3;
- }
- } else {
- REPEAT(stride, *op = ToLinearF[*wp&mask]; wp++; op++)
- n -= stride;
- while (n > 0) {
- REPEAT(stride,
- wp[stride] += *wp; *op = ToLinearF[*wp&mask]; wp++; op++)
- n -= stride;
- }
- }
- }
-}
-
-static void
-horizontalAccumulate12(uint16 *wp, int n, int stride, int16 *op,
- float *ToLinearF)
-{
- register unsigned int cr, cg, cb, ca, mask;
- register float t0, t1, t2, t3;
-
-#define SCALE12 2048.0F
-#define CLAMP12(t) (((t) < 3071) ? (uint16) (t) : 3071)
-
- if (n >= stride) {
- mask = CODE_MASK;
- if (stride == 3) {
- t0 = ToLinearF[cr = wp[0]] * SCALE12;
- t1 = ToLinearF[cg = wp[1]] * SCALE12;
- t2 = ToLinearF[cb = wp[2]] * SCALE12;
- op[0] = CLAMP12(t0);
- op[1] = CLAMP12(t1);
- op[2] = CLAMP12(t2);
- n -= 3;
- while (n > 0) {
- wp += 3;
- op += 3;
- n -= 3;
- t0 = ToLinearF[(cr += wp[0]) & mask] * SCALE12;
- t1 = ToLinearF[(cg += wp[1]) & mask] * SCALE12;
- t2 = ToLinearF[(cb += wp[2]) & mask] * SCALE12;
- op[0] = CLAMP12(t0);
- op[1] = CLAMP12(t1);
- op[2] = CLAMP12(t2);
- }
- } else if (stride == 4) {
- t0 = ToLinearF[cr = wp[0]] * SCALE12;
- t1 = ToLinearF[cg = wp[1]] * SCALE12;
- t2 = ToLinearF[cb = wp[2]] * SCALE12;
- t3 = ToLinearF[ca = wp[3]] * SCALE12;
- op[0] = CLAMP12(t0);
- op[1] = CLAMP12(t1);
- op[2] = CLAMP12(t2);
- op[3] = CLAMP12(t3);
- n -= 4;
- while (n > 0) {
- wp += 4;
- op += 4;
- n -= 4;
- t0 = ToLinearF[(cr += wp[0]) & mask] * SCALE12;
- t1 = ToLinearF[(cg += wp[1]) & mask] * SCALE12;
- t2 = ToLinearF[(cb += wp[2]) & mask] * SCALE12;
- t3 = ToLinearF[(ca += wp[3]) & mask] * SCALE12;
- op[0] = CLAMP12(t0);
- op[1] = CLAMP12(t1);
- op[2] = CLAMP12(t2);
- op[3] = CLAMP12(t3);
- }
- } else {
- REPEAT(stride, t0 = ToLinearF[*wp&mask] * SCALE12;
- *op = CLAMP12(t0); wp++; op++)
- n -= stride;
- while (n > 0) {
- REPEAT(stride,
- wp[stride] += *wp; t0 = ToLinearF[wp[stride]&mask]*SCALE12;
- *op = CLAMP12(t0); wp++; op++)
- n -= stride;
- }
- }
- }
-}
-
-static void
-horizontalAccumulate16(uint16 *wp, int n, int stride, uint16 *op,
- uint16 *ToLinear16)
-{
- register unsigned int cr, cg, cb, ca, mask;
-
- if (n >= stride) {
- mask = CODE_MASK;
- if (stride == 3) {
- op[0] = ToLinear16[cr = wp[0]];
- op[1] = ToLinear16[cg = wp[1]];
- op[2] = ToLinear16[cb = wp[2]];
- n -= 3;
- while (n > 0) {
- wp += 3;
- op += 3;
- n -= 3;
- op[0] = ToLinear16[(cr += wp[0]) & mask];
- op[1] = ToLinear16[(cg += wp[1]) & mask];
- op[2] = ToLinear16[(cb += wp[2]) & mask];
- }
- } else if (stride == 4) {
- op[0] = ToLinear16[cr = wp[0]];
- op[1] = ToLinear16[cg = wp[1]];
- op[2] = ToLinear16[cb = wp[2]];
- op[3] = ToLinear16[ca = wp[3]];
- n -= 4;
- while (n > 0) {
- wp += 4;
- op += 4;
- n -= 4;
- op[0] = ToLinear16[(cr += wp[0]) & mask];
- op[1] = ToLinear16[(cg += wp[1]) & mask];
- op[2] = ToLinear16[(cb += wp[2]) & mask];
- op[3] = ToLinear16[(ca += wp[3]) & mask];
- }
- } else {
- REPEAT(stride, *op = ToLinear16[*wp&mask]; wp++; op++)
- n -= stride;
- while (n > 0) {
- REPEAT(stride,
- wp[stride] += *wp; *op = ToLinear16[*wp&mask]; wp++; op++)
- n -= stride;
- }
- }
- }
-}
-
-/*
- * Returns the log encoded 11-bit values with the horizontal
- * differencing undone.
- */
-static void
-horizontalAccumulate11(uint16 *wp, int n, int stride, uint16 *op)
-{
- register unsigned int cr, cg, cb, ca, mask;
-
- if (n >= stride) {
- mask = CODE_MASK;
- if (stride == 3) {
- op[0] = cr = wp[0]; op[1] = cg = wp[1]; op[2] = cb = wp[2];
- n -= 3;
- while (n > 0) {
- wp += 3;
- op += 3;
- n -= 3;
- op[0] = (cr += wp[0]) & mask;
- op[1] = (cg += wp[1]) & mask;
- op[2] = (cb += wp[2]) & mask;
- }
- } else if (stride == 4) {
- op[0] = cr = wp[0]; op[1] = cg = wp[1];
- op[2] = cb = wp[2]; op[3] = ca = wp[3];
- n -= 4;
- while (n > 0) {
- wp += 4;
- op += 4;
- n -= 4;
- op[0] = (cr += wp[0]) & mask;
- op[1] = (cg += wp[1]) & mask;
- op[2] = (cb += wp[2]) & mask;
- op[3] = (ca += wp[3]) & mask;
- }
- } else {
- REPEAT(stride, *op = *wp&mask; wp++; op++)
- n -= stride;
- while (n > 0) {
- REPEAT(stride,
- wp[stride] += *wp; *op = *wp&mask; wp++; op++)
- n -= stride;
- }
- }
- }
-}
-
-static void
-horizontalAccumulate8(uint16 *wp, int n, int stride, unsigned char *op,
- unsigned char *ToLinear8)
-{
- register unsigned int cr, cg, cb, ca, mask;
-
- if (n >= stride) {
- mask = CODE_MASK;
- if (stride == 3) {
- op[0] = ToLinear8[cr = wp[0]];
- op[1] = ToLinear8[cg = wp[1]];
- op[2] = ToLinear8[cb = wp[2]];
- n -= 3;
- while (n > 0) {
- n -= 3;
- wp += 3;
- op += 3;
- op[0] = ToLinear8[(cr += wp[0]) & mask];
- op[1] = ToLinear8[(cg += wp[1]) & mask];
- op[2] = ToLinear8[(cb += wp[2]) & mask];
- }
- } else if (stride == 4) {
- op[0] = ToLinear8[cr = wp[0]];
- op[1] = ToLinear8[cg = wp[1]];
- op[2] = ToLinear8[cb = wp[2]];
- op[3] = ToLinear8[ca = wp[3]];
- n -= 4;
- while (n > 0) {
- n -= 4;
- wp += 4;
- op += 4;
- op[0] = ToLinear8[(cr += wp[0]) & mask];
- op[1] = ToLinear8[(cg += wp[1]) & mask];
- op[2] = ToLinear8[(cb += wp[2]) & mask];
- op[3] = ToLinear8[(ca += wp[3]) & mask];
- }
- } else {
- REPEAT(stride, *op = ToLinear8[*wp&mask]; wp++; op++)
- n -= stride;
- while (n > 0) {
- REPEAT(stride,
- wp[stride] += *wp; *op = ToLinear8[*wp&mask]; wp++; op++)
- n -= stride;
- }
- }
- }
-}
-
-
-static void
-horizontalAccumulate8abgr(uint16 *wp, int n, int stride, unsigned char *op,
- unsigned char *ToLinear8)
-{
- register unsigned int cr, cg, cb, ca, mask;
- register unsigned char t0, t1, t2, t3;
-
- if (n >= stride) {
- mask = CODE_MASK;
- if (stride == 3) {
- op[0] = 0;
- t1 = ToLinear8[cb = wp[2]];
- t2 = ToLinear8[cg = wp[1]];
- t3 = ToLinear8[cr = wp[0]];
- op[1] = t1;
- op[2] = t2;
- op[3] = t3;
- n -= 3;
- while (n > 0) {
- n -= 3;
- wp += 3;
- op += 4;
- op[0] = 0;
- t1 = ToLinear8[(cb += wp[2]) & mask];
- t2 = ToLinear8[(cg += wp[1]) & mask];
- t3 = ToLinear8[(cr += wp[0]) & mask];
- op[1] = t1;
- op[2] = t2;
- op[3] = t3;
- }
- } else if (stride == 4) {
- t0 = ToLinear8[ca = wp[3]];
- t1 = ToLinear8[cb = wp[2]];
- t2 = ToLinear8[cg = wp[1]];
- t3 = ToLinear8[cr = wp[0]];
- op[0] = t0;
- op[1] = t1;
- op[2] = t2;
- op[3] = t3;
- n -= 4;
- while (n > 0) {
- n -= 4;
- wp += 4;
- op += 4;
- t0 = ToLinear8[(ca += wp[3]) & mask];
- t1 = ToLinear8[(cb += wp[2]) & mask];
- t2 = ToLinear8[(cg += wp[1]) & mask];
- t3 = ToLinear8[(cr += wp[0]) & mask];
- op[0] = t0;
- op[1] = t1;
- op[2] = t2;
- op[3] = t3;
- }
- } else {
- REPEAT(stride, *op = ToLinear8[*wp&mask]; wp++; op++)
- n -= stride;
- while (n > 0) {
- REPEAT(stride,
- wp[stride] += *wp; *op = ToLinear8[*wp&mask]; wp++; op++)
- n -= stride;
- }
- }
- }
-}
-
-/*
- * State block for each open TIFF
- * file using PixarLog compression/decompression.
- */
-typedef struct {
- TIFFPredictorState predict;
- z_stream stream;
- uint16 *tbuf;
- uint16 stride;
- int state;
- int user_datafmt;
- int quality;
-#define PLSTATE_INIT 1
-
- TIFFVSetMethod vgetparent; /* super-class method */
- TIFFVSetMethod vsetparent; /* super-class method */
-
- float *ToLinearF;
- uint16 *ToLinear16;
- unsigned char *ToLinear8;
- uint16 *FromLT2;
- uint16 *From14; /* Really for 16-bit data, but we shift down 2 */
- uint16 *From8;
-
-} PixarLogState;
-
-static int
-PixarLogMakeTables(PixarLogState *sp)
-{
-
-/*
- * We make several tables here to convert between various external
- * representations (float, 16-bit, and 8-bit) and the internal
- * 11-bit companded representation. The 11-bit representation has two
- * distinct regions. A linear bottom end up through .018316 in steps
- * of about .000073, and a region of constant ratio up to about 25.
- * These floating point numbers are stored in the main table ToLinearF.
- * All other tables are derived from this one. The tables (and the
- * ratios) are continuous at the internal seam.
- */
-
- int nlin, lt2size;
- int i, j;
- double b, c, linstep, v;
- float *ToLinearF;
- uint16 *ToLinear16;
- unsigned char *ToLinear8;
- uint16 *FromLT2;
- uint16 *From14; /* Really for 16-bit data, but we shift down 2 */
- uint16 *From8;
-
- c = log(RATIO);
- nlin = (int)(1./c); /* nlin must be an integer */
- c = 1./nlin;
- b = exp(-c*ONE); /* multiplicative scale factor [b*exp(c*ONE) = 1] */
- linstep = b*c*exp(1.);
-
- LogK1 = (float)(1./c); /* if (v >= 2) token = k1*log(v*k2) */
- LogK2 = (float)(1./b);
- lt2size = (int)(2./linstep) + 1;
- FromLT2 = (uint16 *)_TIFFmalloc(lt2size*sizeof(uint16));
- From14 = (uint16 *)_TIFFmalloc(16384*sizeof(uint16));
- From8 = (uint16 *)_TIFFmalloc(256*sizeof(uint16));
- ToLinearF = (float *)_TIFFmalloc(TSIZEP1 * sizeof(float));
- ToLinear16 = (uint16 *)_TIFFmalloc(TSIZEP1 * sizeof(uint16));
- ToLinear8 = (unsigned char *)_TIFFmalloc(TSIZEP1 * sizeof(unsigned char));
- if (FromLT2 == NULL || From14 == NULL || From8 == NULL ||
- ToLinearF == NULL || ToLinear16 == NULL || ToLinear8 == NULL) {
- if (FromLT2) _TIFFfree(FromLT2);
- if (From14) _TIFFfree(From14);
- if (From8) _TIFFfree(From8);
- if (ToLinearF) _TIFFfree(ToLinearF);
- if (ToLinear16) _TIFFfree(ToLinear16);
- if (ToLinear8) _TIFFfree(ToLinear8);
- sp->FromLT2 = NULL;
- sp->From14 = NULL;
- sp->From8 = NULL;
- sp->ToLinearF = NULL;
- sp->ToLinear16 = NULL;
- sp->ToLinear8 = NULL;
- return 0;
- }
-
- j = 0;
-
- for (i = 0; i < nlin; i++) {
- v = i * linstep;
- ToLinearF[j++] = (float)v;
- }
-
- for (i = nlin; i < TSIZE; i++)
- ToLinearF[j++] = (float)(b*exp(c*i));
-
- ToLinearF[2048] = ToLinearF[2047];
-
- for (i = 0; i < TSIZEP1; i++) {
- v = ToLinearF[i]*65535.0 + 0.5;
- ToLinear16[i] = (v > 65535.0) ? 65535 : (uint16)v;
- v = ToLinearF[i]*255.0 + 0.5;
- ToLinear8[i] = (v > 255.0) ? 255 : (unsigned char)v;
- }
-
- j = 0;
- for (i = 0; i < lt2size; i++) {
- if ((i*linstep)*(i*linstep) > ToLinearF[j]*ToLinearF[j+1])
- j++;
- FromLT2[i] = j;
- }
-
- /*
- * Since we lose info anyway on 16-bit data, we set up a 14-bit
- * table and shift 16-bit values down two bits on input.
- * saves a little table space.
- */
- j = 0;
- for (i = 0; i < 16384; i++) {
- while ((i/16383.)*(i/16383.) > ToLinearF[j]*ToLinearF[j+1])
- j++;
- From14[i] = j;
- }
-
- j = 0;
- for (i = 0; i < 256; i++) {
- while ((i/255.)*(i/255.) > ToLinearF[j]*ToLinearF[j+1])
- j++;
- From8[i] = j;
- }
-
- Fltsize = (float)(lt2size/2);
-
- sp->ToLinearF = ToLinearF;
- sp->ToLinear16 = ToLinear16;
- sp->ToLinear8 = ToLinear8;
- sp->FromLT2 = FromLT2;
- sp->From14 = From14;
- sp->From8 = From8;
-
- return 1;
-}
-
-#define DecoderState(tif) ((PixarLogState*) (tif)->tif_data)
-#define EncoderState(tif) ((PixarLogState*) (tif)->tif_data)
-
-static int PixarLogEncode(TIFF*, tidata_t, tsize_t, tsample_t);
-static int PixarLogDecode(TIFF*, tidata_t, tsize_t, tsample_t);
-
-#define PIXARLOGDATAFMT_UNKNOWN -1
-
-static int
-PixarLogGuessDataFmt(TIFFDirectory *td)
-{
- int guess = PIXARLOGDATAFMT_UNKNOWN;
- int format = td->td_sampleformat;
-
- /* If the user didn't tell us his datafmt,
- * take our best guess from the bitspersample.
- */
- switch (td->td_bitspersample) {
- case 32:
- if (format == SAMPLEFORMAT_IEEEFP)
- guess = PIXARLOGDATAFMT_FLOAT;
- break;
- case 16:
- if (format == SAMPLEFORMAT_VOID || format == SAMPLEFORMAT_UINT)
- guess = PIXARLOGDATAFMT_16BIT;
- break;
- case 12:
- if (format == SAMPLEFORMAT_VOID || format == SAMPLEFORMAT_INT)
- guess = PIXARLOGDATAFMT_12BITPICIO;
- break;
- case 11:
- if (format == SAMPLEFORMAT_VOID || format == SAMPLEFORMAT_UINT)
- guess = PIXARLOGDATAFMT_11BITLOG;
- break;
- case 8:
- if (format == SAMPLEFORMAT_VOID || format == SAMPLEFORMAT_UINT)
- guess = PIXARLOGDATAFMT_8BIT;
- break;
- }
-
- return guess;
-}
-
-static uint32
-multiply(size_t m1, size_t m2)
-{
- uint32 bytes = m1 * m2;
-
- if (m1 && bytes / m1 != m2)
- bytes = 0;
-
- return bytes;
-}
-
-static int
-PixarLogSetupDecode(TIFF* tif)
-{
- TIFFDirectory *td = &tif->tif_dir;
- PixarLogState* sp = DecoderState(tif);
- tsize_t tbuf_size;
- static const char module[] = "PixarLogSetupDecode";
-
- assert(sp != NULL);
-
- /* Make sure no byte swapping happens on the data
- * after decompression. */
- tif->tif_postdecode = _TIFFNoPostDecode;
-
- /* for some reason, we can't do this in TIFFInitPixarLog */
-
- sp->stride = (td->td_planarconfig == PLANARCONFIG_CONTIG ?
- td->td_samplesperpixel : 1);
- tbuf_size = multiply(multiply(multiply(sp->stride, td->td_imagewidth),
- td->td_rowsperstrip), sizeof(uint16));
- if (tbuf_size == 0)
- return (0);
- sp->tbuf = (uint16 *) _TIFFmalloc(tbuf_size);
- if (sp->tbuf == NULL)
- return (0);
- if (sp->user_datafmt == PIXARLOGDATAFMT_UNKNOWN)
- sp->user_datafmt = PixarLogGuessDataFmt(td);
- if (sp->user_datafmt == PIXARLOGDATAFMT_UNKNOWN) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "PixarLog compression can't handle bits depth/data format combination (depth: %d)",
- td->td_bitspersample);
- return (0);
- }
-
- if (inflateInit(&sp->stream) != Z_OK) {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: %s", tif->tif_name, sp->stream.msg);
- return (0);
- } else {
- sp->state |= PLSTATE_INIT;
- return (1);
- }
-}
-
-/*
- * Setup state for decoding a strip.
- */
-static int
-PixarLogPreDecode(TIFF* tif, tsample_t s)
-{
- PixarLogState* sp = DecoderState(tif);
-
- (void) s;
- assert(sp != NULL);
- sp->stream.next_in = tif->tif_rawdata;
- sp->stream.avail_in = tif->tif_rawcc;
- return (inflateReset(&sp->stream) == Z_OK);
-}
-
-static int
-PixarLogDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
-{
- TIFFDirectory *td = &tif->tif_dir;
- PixarLogState* sp = DecoderState(tif);
- static const char module[] = "PixarLogDecode";
- int i, nsamples, llen;
- uint16 *up;
-
- switch (sp->user_datafmt) {
- case PIXARLOGDATAFMT_FLOAT:
- nsamples = occ / sizeof(float); /* XXX float == 32 bits */
- break;
- case PIXARLOGDATAFMT_16BIT:
- case PIXARLOGDATAFMT_12BITPICIO:
- case PIXARLOGDATAFMT_11BITLOG:
- nsamples = occ / sizeof(uint16); /* XXX uint16 == 16 bits */
- break;
- case PIXARLOGDATAFMT_8BIT:
- case PIXARLOGDATAFMT_8BITABGR:
- nsamples = occ;
- break;
- default:
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%d bit input not supported in PixarLog",
- td->td_bitspersample);
- return 0;
- }
-
- llen = sp->stride * td->td_imagewidth;
-
- (void) s;
- assert(sp != NULL);
- sp->stream.next_out = (unsigned char *) sp->tbuf;
- sp->stream.avail_out = nsamples * sizeof(uint16);
- do {
- int state = inflate(&sp->stream, Z_PARTIAL_FLUSH);
- if (state == Z_STREAM_END) {
- break; /* XXX */
- }
- if (state == Z_DATA_ERROR) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Decoding error at scanline %d, %s",
- tif->tif_name, tif->tif_row, sp->stream.msg);
- if (inflateSync(&sp->stream) != Z_OK)
- return (0);
- continue;
- }
- if (state != Z_OK) {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",
- tif->tif_name, sp->stream.msg);
- return (0);
- }
- } while (sp->stream.avail_out > 0);
-
- /* hopefully, we got all the bytes we needed */
- if (sp->stream.avail_out != 0) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Not enough data at scanline %d (short %d bytes)",
- tif->tif_name, tif->tif_row, sp->stream.avail_out);
- return (0);
- }
-
- up = sp->tbuf;
- /* Swap bytes in the data if from a different endian machine. */
- if (tif->tif_flags & TIFF_SWAB)
- TIFFSwabArrayOfShort(up, nsamples);
-
- /*
- * if llen is not an exact multiple of nsamples, the decode operation
- * may overflow the output buffer, so truncate it enough to prevent
- * that but still salvage as much data as possible.
- */
- if (nsamples % llen) {
- TIFFWarningExt(tif->tif_clientdata, module,
- "%s: stride %d is not a multiple of sample count, "
- "%d, data truncated.", tif->tif_name, llen, nsamples);
- nsamples -= nsamples % llen;
- }
-
- for (i = 0; i < nsamples; i += llen, up += llen) {
- switch (sp->user_datafmt) {
- case PIXARLOGDATAFMT_FLOAT:
- horizontalAccumulateF(up, llen, sp->stride,
- (float *)op, sp->ToLinearF);
- op += llen * sizeof(float);
- break;
- case PIXARLOGDATAFMT_16BIT:
- horizontalAccumulate16(up, llen, sp->stride,
- (uint16 *)op, sp->ToLinear16);
- op += llen * sizeof(uint16);
- break;
- case PIXARLOGDATAFMT_12BITPICIO:
- horizontalAccumulate12(up, llen, sp->stride,
- (int16 *)op, sp->ToLinearF);
- op += llen * sizeof(int16);
- break;
- case PIXARLOGDATAFMT_11BITLOG:
- horizontalAccumulate11(up, llen, sp->stride,
- (uint16 *)op);
- op += llen * sizeof(uint16);
- break;
- case PIXARLOGDATAFMT_8BIT:
- horizontalAccumulate8(up, llen, sp->stride,
- (unsigned char *)op, sp->ToLinear8);
- op += llen * sizeof(unsigned char);
- break;
- case PIXARLOGDATAFMT_8BITABGR:
- horizontalAccumulate8abgr(up, llen, sp->stride,
- (unsigned char *)op, sp->ToLinear8);
- op += llen * sizeof(unsigned char);
- break;
- default:
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "PixarLogDecode: unsupported bits/sample: %d",
- td->td_bitspersample);
- return (0);
- }
- }
-
- return (1);
-}
-
-static int
-PixarLogSetupEncode(TIFF* tif)
-{
- TIFFDirectory *td = &tif->tif_dir;
- PixarLogState* sp = EncoderState(tif);
- tsize_t tbuf_size;
- static const char module[] = "PixarLogSetupEncode";
-
- assert(sp != NULL);
-
- /* for some reason, we can't do this in TIFFInitPixarLog */
-
- sp->stride = (td->td_planarconfig == PLANARCONFIG_CONTIG ?
- td->td_samplesperpixel : 1);
- tbuf_size = multiply(multiply(multiply(sp->stride, td->td_imagewidth),
- td->td_rowsperstrip), sizeof(uint16));
- if (tbuf_size == 0)
- return (0);
- sp->tbuf = (uint16 *) _TIFFmalloc(tbuf_size);
- if (sp->tbuf == NULL)
- return (0);
- if (sp->user_datafmt == PIXARLOGDATAFMT_UNKNOWN)
- sp->user_datafmt = PixarLogGuessDataFmt(td);
- if (sp->user_datafmt == PIXARLOGDATAFMT_UNKNOWN) {
- TIFFErrorExt(tif->tif_clientdata, module, "PixarLog compression can't handle %d bit linear encodings", td->td_bitspersample);
- return (0);
- }
-
- if (deflateInit(&sp->stream, sp->quality) != Z_OK) {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: %s", tif->tif_name, sp->stream.msg);
- return (0);
- } else {
- sp->state |= PLSTATE_INIT;
- return (1);
- }
-}
-
-/*
- * Reset encoding state at the start of a strip.
- */
-static int
-PixarLogPreEncode(TIFF* tif, tsample_t s)
-{
- PixarLogState *sp = EncoderState(tif);
-
- (void) s;
- assert(sp != NULL);
- sp->stream.next_out = tif->tif_rawdata;
- sp->stream.avail_out = tif->tif_rawdatasize;
- return (deflateReset(&sp->stream) == Z_OK);
-}
-
-static void
-horizontalDifferenceF(float *ip, int n, int stride, uint16 *wp, uint16 *FromLT2)
-{
-
- int32 r1, g1, b1, a1, r2, g2, b2, a2, mask;
- float fltsize = Fltsize;
-
-#define CLAMP(v) ( (v<(float)0.) ? 0 \
- : (v<(float)2.) ? FromLT2[(int)(v*fltsize)] \
- : (v>(float)24.2) ? 2047 \
- : LogK1*log(v*LogK2) + 0.5 )
-
- mask = CODE_MASK;
- if (n >= stride) {
- if (stride == 3) {
- r2 = wp[0] = (uint16) CLAMP(ip[0]);
- g2 = wp[1] = (uint16) CLAMP(ip[1]);
- b2 = wp[2] = (uint16) CLAMP(ip[2]);
- n -= 3;
- while (n > 0) {
- n -= 3;
- wp += 3;
- ip += 3;
- r1 = (int32) CLAMP(ip[0]); wp[0] = (r1-r2) & mask; r2 = r1;
- g1 = (int32) CLAMP(ip[1]); wp[1] = (g1-g2) & mask; g2 = g1;
- b1 = (int32) CLAMP(ip[2]); wp[2] = (b1-b2) & mask; b2 = b1;
- }
- } else if (stride == 4) {
- r2 = wp[0] = (uint16) CLAMP(ip[0]);
- g2 = wp[1] = (uint16) CLAMP(ip[1]);
- b2 = wp[2] = (uint16) CLAMP(ip[2]);
- a2 = wp[3] = (uint16) CLAMP(ip[3]);
- n -= 4;
- while (n > 0) {
- n -= 4;
- wp += 4;
- ip += 4;
- r1 = (int32) CLAMP(ip[0]); wp[0] = (r1-r2) & mask; r2 = r1;
- g1 = (int32) CLAMP(ip[1]); wp[1] = (g1-g2) & mask; g2 = g1;
- b1 = (int32) CLAMP(ip[2]); wp[2] = (b1-b2) & mask; b2 = b1;
- a1 = (int32) CLAMP(ip[3]); wp[3] = (a1-a2) & mask; a2 = a1;
- }
- } else {
- ip += n - 1; /* point to last one */
- wp += n - 1; /* point to last one */
- n -= stride;
- while (n > 0) {
- REPEAT(stride, wp[0] = (uint16) CLAMP(ip[0]);
- wp[stride] -= wp[0];
- wp[stride] &= mask;
- wp--; ip--)
- n -= stride;
- }
- REPEAT(stride, wp[0] = (uint16) CLAMP(ip[0]); wp--; ip--)
- }
- }
-}
-
-static void
-horizontalDifference16(unsigned short *ip, int n, int stride,
- unsigned short *wp, uint16 *From14)
-{
- register int r1, g1, b1, a1, r2, g2, b2, a2, mask;
-
-/* assumption is unsigned pixel values */
-#undef CLAMP
-#define CLAMP(v) From14[(v) >> 2]
-
- mask = CODE_MASK;
- if (n >= stride) {
- if (stride == 3) {
- r2 = wp[0] = CLAMP(ip[0]); g2 = wp[1] = CLAMP(ip[1]);
- b2 = wp[2] = CLAMP(ip[2]);
- n -= 3;
- while (n > 0) {
- n -= 3;
- wp += 3;
- ip += 3;
- r1 = CLAMP(ip[0]); wp[0] = (r1-r2) & mask; r2 = r1;
- g1 = CLAMP(ip[1]); wp[1] = (g1-g2) & mask; g2 = g1;
- b1 = CLAMP(ip[2]); wp[2] = (b1-b2) & mask; b2 = b1;
- }
- } else if (stride == 4) {
- r2 = wp[0] = CLAMP(ip[0]); g2 = wp[1] = CLAMP(ip[1]);
- b2 = wp[2] = CLAMP(ip[2]); a2 = wp[3] = CLAMP(ip[3]);
- n -= 4;
- while (n > 0) {
- n -= 4;
- wp += 4;
- ip += 4;
- r1 = CLAMP(ip[0]); wp[0] = (r1-r2) & mask; r2 = r1;
- g1 = CLAMP(ip[1]); wp[1] = (g1-g2) & mask; g2 = g1;
- b1 = CLAMP(ip[2]); wp[2] = (b1-b2) & mask; b2 = b1;
- a1 = CLAMP(ip[3]); wp[3] = (a1-a2) & mask; a2 = a1;
- }
- } else {
- ip += n - 1; /* point to last one */
- wp += n - 1; /* point to last one */
- n -= stride;
- while (n > 0) {
- REPEAT(stride, wp[0] = CLAMP(ip[0]);
- wp[stride] -= wp[0];
- wp[stride] &= mask;
- wp--; ip--)
- n -= stride;
- }
- REPEAT(stride, wp[0] = CLAMP(ip[0]); wp--; ip--)
- }
- }
-}
-
-
-static void
-horizontalDifference8(unsigned char *ip, int n, int stride,
- unsigned short *wp, uint16 *From8)
-{
- register int r1, g1, b1, a1, r2, g2, b2, a2, mask;
-
-#undef CLAMP
-#define CLAMP(v) (From8[(v)])
-
- mask = CODE_MASK;
- if (n >= stride) {
- if (stride == 3) {
- r2 = wp[0] = CLAMP(ip[0]); g2 = wp[1] = CLAMP(ip[1]);
- b2 = wp[2] = CLAMP(ip[2]);
- n -= 3;
- while (n > 0) {
- n -= 3;
- r1 = CLAMP(ip[3]); wp[3] = (r1-r2) & mask; r2 = r1;
- g1 = CLAMP(ip[4]); wp[4] = (g1-g2) & mask; g2 = g1;
- b1 = CLAMP(ip[5]); wp[5] = (b1-b2) & mask; b2 = b1;
- wp += 3;
- ip += 3;
- }
- } else if (stride == 4) {
- r2 = wp[0] = CLAMP(ip[0]); g2 = wp[1] = CLAMP(ip[1]);
- b2 = wp[2] = CLAMP(ip[2]); a2 = wp[3] = CLAMP(ip[3]);
- n -= 4;
- while (n > 0) {
- n -= 4;
- r1 = CLAMP(ip[4]); wp[4] = (r1-r2) & mask; r2 = r1;
- g1 = CLAMP(ip[5]); wp[5] = (g1-g2) & mask; g2 = g1;
- b1 = CLAMP(ip[6]); wp[6] = (b1-b2) & mask; b2 = b1;
- a1 = CLAMP(ip[7]); wp[7] = (a1-a2) & mask; a2 = a1;
- wp += 4;
- ip += 4;
- }
- } else {
- wp += n + stride - 1; /* point to last one */
- ip += n + stride - 1; /* point to last one */
- n -= stride;
- while (n > 0) {
- REPEAT(stride, wp[0] = CLAMP(ip[0]);
- wp[stride] -= wp[0];
- wp[stride] &= mask;
- wp--; ip--)
- n -= stride;
- }
- REPEAT(stride, wp[0] = CLAMP(ip[0]); wp--; ip--)
- }
- }
-}
-
-/*
- * Encode a chunk of pixels.
- */
-static int
-PixarLogEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
- TIFFDirectory *td = &tif->tif_dir;
- PixarLogState *sp = EncoderState(tif);
- static const char module[] = "PixarLogEncode";
- int i, n, llen;
- unsigned short * up;
-
- (void) s;
-
- switch (sp->user_datafmt) {
- case PIXARLOGDATAFMT_FLOAT:
- n = cc / sizeof(float); /* XXX float == 32 bits */
- break;
- case PIXARLOGDATAFMT_16BIT:
- case PIXARLOGDATAFMT_12BITPICIO:
- case PIXARLOGDATAFMT_11BITLOG:
- n = cc / sizeof(uint16); /* XXX uint16 == 16 bits */
- break;
- case PIXARLOGDATAFMT_8BIT:
- case PIXARLOGDATAFMT_8BITABGR:
- n = cc;
- break;
- default:
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%d bit input not supported in PixarLog",
- td->td_bitspersample);
- return 0;
- }
-
- llen = sp->stride * td->td_imagewidth;
-
- for (i = 0, up = sp->tbuf; i < n; i += llen, up += llen) {
- switch (sp->user_datafmt) {
- case PIXARLOGDATAFMT_FLOAT:
- horizontalDifferenceF((float *)bp, llen,
- sp->stride, up, sp->FromLT2);
- bp += llen * sizeof(float);
- break;
- case PIXARLOGDATAFMT_16BIT:
- horizontalDifference16((uint16 *)bp, llen,
- sp->stride, up, sp->From14);
- bp += llen * sizeof(uint16);
- break;
- case PIXARLOGDATAFMT_8BIT:
- horizontalDifference8((unsigned char *)bp, llen,
- sp->stride, up, sp->From8);
- bp += llen * sizeof(unsigned char);
- break;
- default:
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%d bit input not supported in PixarLog",
- td->td_bitspersample);
- return 0;
- }
- }
-
- sp->stream.next_in = (unsigned char *) sp->tbuf;
- sp->stream.avail_in = n * sizeof(uint16);
-
- do {
- if (deflate(&sp->stream, Z_NO_FLUSH) != Z_OK) {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: Encoder error: %s",
- tif->tif_name, sp->stream.msg);
- return (0);
- }
- if (sp->stream.avail_out == 0) {
- tif->tif_rawcc = tif->tif_rawdatasize;
- TIFFFlushData1(tif);
- sp->stream.next_out = tif->tif_rawdata;
- sp->stream.avail_out = tif->tif_rawdatasize;
- }
- } while (sp->stream.avail_in > 0);
- return (1);
-}
-
-/*
- * Finish off an encoded strip by flushing the last
- * string and tacking on an End Of Information code.
- */
-
-static int
-PixarLogPostEncode(TIFF* tif)
-{
- PixarLogState *sp = EncoderState(tif);
- static const char module[] = "PixarLogPostEncode";
- int state;
-
- sp->stream.avail_in = 0;
-
- do {
- state = deflate(&sp->stream, Z_FINISH);
- switch (state) {
- case Z_STREAM_END:
- case Z_OK:
- if (sp->stream.avail_out != (uint32)tif->tif_rawdatasize) {
- tif->tif_rawcc =
- tif->tif_rawdatasize - sp->stream.avail_out;
- TIFFFlushData1(tif);
- sp->stream.next_out = tif->tif_rawdata;
- sp->stream.avail_out = tif->tif_rawdatasize;
- }
- break;
- default:
- TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",
- tif->tif_name, sp->stream.msg);
- return (0);
- }
- } while (state != Z_STREAM_END);
- return (1);
-}
-
-static void
-PixarLogClose(TIFF* tif)
-{
- TIFFDirectory *td = &tif->tif_dir;
-
- /* In a really sneaky maneuver, on close, we covertly modify both
- * bitspersample and sampleformat in the directory to indicate
- * 8-bit linear. This way, the decode "just works" even for
- * readers that don't know about PixarLog, or how to set
- * the PIXARLOGDATFMT pseudo-tag.
- */
- td->td_bitspersample = 8;
- td->td_sampleformat = SAMPLEFORMAT_UINT;
-}
-
-static void
-PixarLogCleanup(TIFF* tif)
-{
- PixarLogState* sp = (PixarLogState*) tif->tif_data;
-
- assert(sp != 0);
-
- (void)TIFFPredictorCleanup(tif);
-
- tif->tif_tagmethods.vgetfield = sp->vgetparent;
- tif->tif_tagmethods.vsetfield = sp->vsetparent;
-
- if (sp->FromLT2) _TIFFfree(sp->FromLT2);
- if (sp->From14) _TIFFfree(sp->From14);
- if (sp->From8) _TIFFfree(sp->From8);
- if (sp->ToLinearF) _TIFFfree(sp->ToLinearF);
- if (sp->ToLinear16) _TIFFfree(sp->ToLinear16);
- if (sp->ToLinear8) _TIFFfree(sp->ToLinear8);
- if (sp->state&PLSTATE_INIT) {
- if (tif->tif_mode == O_RDONLY)
- inflateEnd(&sp->stream);
- else
- deflateEnd(&sp->stream);
- }
- if (sp->tbuf)
- _TIFFfree(sp->tbuf);
- _TIFFfree(sp);
- tif->tif_data = NULL;
-
- _TIFFSetDefaultCompressionState(tif);
-}
-
-static int
-PixarLogVSetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- PixarLogState *sp = (PixarLogState *)tif->tif_data;
- int result;
- static const char module[] = "PixarLogVSetField";
-
- switch (tag) {
- case TIFFTAG_PIXARLOGQUALITY:
- sp->quality = va_arg(ap, int);
- if (tif->tif_mode != O_RDONLY && (sp->state&PLSTATE_INIT)) {
- if (deflateParams(&sp->stream,
- sp->quality, Z_DEFAULT_STRATEGY) != Z_OK) {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",
- tif->tif_name, sp->stream.msg);
- return (0);
- }
- }
- return (1);
- case TIFFTAG_PIXARLOGDATAFMT:
- sp->user_datafmt = va_arg(ap, int);
- /* Tweak the TIFF header so that the rest of libtiff knows what
- * size of data will be passed between app and library, and
- * assume that the app knows what it is doing and is not
- * confused by these header manipulations...
- */
- switch (sp->user_datafmt) {
- case PIXARLOGDATAFMT_8BIT:
- case PIXARLOGDATAFMT_8BITABGR:
- TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8);
- TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT);
- break;
- case PIXARLOGDATAFMT_11BITLOG:
- TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 16);
- TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT);
- break;
- case PIXARLOGDATAFMT_12BITPICIO:
- TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 16);
- TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_INT);
- break;
- case PIXARLOGDATAFMT_16BIT:
- TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 16);
- TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT);
- break;
- case PIXARLOGDATAFMT_FLOAT:
- TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 32);
- TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_IEEEFP);
- break;
- }
- /*
- * Must recalculate sizes should bits/sample change.
- */
- tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;
- tif->tif_scanlinesize = TIFFScanlineSize(tif);
- result = 1; /* NB: pseudo tag */
- break;
- default:
- result = (*sp->vsetparent)(tif, tag, ap);
- }
- return (result);
-}
-
-static int
-PixarLogVGetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- PixarLogState *sp = (PixarLogState *)tif->tif_data;
-
- switch (tag) {
- case TIFFTAG_PIXARLOGQUALITY:
- *va_arg(ap, int*) = sp->quality;
- break;
- case TIFFTAG_PIXARLOGDATAFMT:
- *va_arg(ap, int*) = sp->user_datafmt;
- break;
- default:
- return (*sp->vgetparent)(tif, tag, ap);
- }
- return (1);
-}
-
-static const TIFFFieldInfo pixarlogFieldInfo[] = {
- {TIFFTAG_PIXARLOGDATAFMT,0,0,TIFF_ANY, FIELD_PSEUDO,FALSE,FALSE,""},
- {TIFFTAG_PIXARLOGQUALITY,0,0,TIFF_ANY, FIELD_PSEUDO,FALSE,FALSE,""}
-};
-
-int
-TIFFInitPixarLog(TIFF* tif, int scheme)
-{
- static const char module[] = "TIFFInitPixarLog";
-
- PixarLogState* sp;
-
- assert(scheme == COMPRESSION_PIXARLOG);
-
- /*
- * Merge codec-specific tag information.
- */
- if (!_TIFFMergeFieldInfo(tif, pixarlogFieldInfo,
- TIFFArrayCount(pixarlogFieldInfo))) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "Merging PixarLog codec-specific tags failed");
- return 0;
- }
-
- /*
- * Allocate state block so tag methods have storage to record values.
- */
- tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (PixarLogState));
- if (tif->tif_data == NULL)
- goto bad;
- sp = (PixarLogState*) tif->tif_data;
- _TIFFmemset(sp, 0, sizeof (*sp));
- sp->stream.data_type = Z_BINARY;
- sp->user_datafmt = PIXARLOGDATAFMT_UNKNOWN;
-
- /*
- * Install codec methods.
- */
- tif->tif_setupdecode = PixarLogSetupDecode;
- tif->tif_predecode = PixarLogPreDecode;
- tif->tif_decoderow = PixarLogDecode;
- tif->tif_decodestrip = PixarLogDecode;
- tif->tif_decodetile = PixarLogDecode;
- tif->tif_setupencode = PixarLogSetupEncode;
- tif->tif_preencode = PixarLogPreEncode;
- tif->tif_postencode = PixarLogPostEncode;
- tif->tif_encoderow = PixarLogEncode;
- tif->tif_encodestrip = PixarLogEncode;
- tif->tif_encodetile = PixarLogEncode;
- tif->tif_close = PixarLogClose;
- tif->tif_cleanup = PixarLogCleanup;
-
- /* Override SetField so we can handle our private pseudo-tag */
- sp->vgetparent = tif->tif_tagmethods.vgetfield;
- tif->tif_tagmethods.vgetfield = PixarLogVGetField; /* hook for codec tags */
- sp->vsetparent = tif->tif_tagmethods.vsetfield;
- tif->tif_tagmethods.vsetfield = PixarLogVSetField; /* hook for codec tags */
-
- /* Default values for codec-specific fields */
- sp->quality = Z_DEFAULT_COMPRESSION; /* default comp. level */
- sp->state = 0;
-
- /* we don't wish to use the predictor,
- * the default is none, which predictor value 1
- */
- (void) TIFFPredictorInit(tif);
-
- /*
- * build the companding tables
- */
- PixarLogMakeTables(sp);
-
- return (1);
-bad:
- TIFFErrorExt(tif->tif_clientdata, module,
- "No space for PixarLog state block");
- return (0);
-}
-#endif /* PIXARLOG_SUPPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_predict.c b/src/3rdparty/libtiff/libtiff/tif_predict.c
deleted file mode 100644
index 052a8e2f0a..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_predict.c
+++ /dev/null
@@ -1,729 +0,0 @@
-/* $Id: tif_predict.c,v 1.11.2.3 2009-01-23 15:57:18 fwarmerdam Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- *
- * Predictor Tag Support (used by multiple codecs).
- */
-#include "tiffiop.h"
-#include "tif_predict.h"
-
-#define PredictorState(tif) ((TIFFPredictorState*) (tif)->tif_data)
-
-static void horAcc8(TIFF*, tidata_t, tsize_t);
-static void horAcc16(TIFF*, tidata_t, tsize_t);
-static void horAcc32(TIFF*, tidata_t, tsize_t);
-static void swabHorAcc16(TIFF*, tidata_t, tsize_t);
-static void swabHorAcc32(TIFF*, tidata_t, tsize_t);
-static void horDiff8(TIFF*, tidata_t, tsize_t);
-static void horDiff16(TIFF*, tidata_t, tsize_t);
-static void horDiff32(TIFF*, tidata_t, tsize_t);
-static void fpAcc(TIFF*, tidata_t, tsize_t);
-static void fpDiff(TIFF*, tidata_t, tsize_t);
-static int PredictorDecodeRow(TIFF*, tidata_t, tsize_t, tsample_t);
-static int PredictorDecodeTile(TIFF*, tidata_t, tsize_t, tsample_t);
-static int PredictorEncodeRow(TIFF*, tidata_t, tsize_t, tsample_t);
-static int PredictorEncodeTile(TIFF*, tidata_t, tsize_t, tsample_t);
-
-static int
-PredictorSetup(TIFF* tif)
-{
- static const char module[] = "PredictorSetup";
-
- TIFFPredictorState* sp = PredictorState(tif);
- TIFFDirectory* td = &tif->tif_dir;
-
- switch (sp->predictor) /* no differencing */
- {
- case PREDICTOR_NONE:
- return 1;
- case PREDICTOR_HORIZONTAL:
- if (td->td_bitspersample != 8
- && td->td_bitspersample != 16
- && td->td_bitspersample != 32) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "Horizontal differencing \"Predictor\" not supported with %d-bit samples",
- td->td_bitspersample);
- return 0;
- }
- break;
- case PREDICTOR_FLOATINGPOINT:
- if (td->td_sampleformat != SAMPLEFORMAT_IEEEFP) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "Floating point \"Predictor\" not supported with %d data format",
- td->td_sampleformat);
- return 0;
- }
- break;
- default:
- TIFFErrorExt(tif->tif_clientdata, module,
- "\"Predictor\" value %d not supported",
- sp->predictor);
- return 0;
- }
- sp->stride = (td->td_planarconfig == PLANARCONFIG_CONTIG ?
- td->td_samplesperpixel : 1);
- /*
- * Calculate the scanline/tile-width size in bytes.
- */
- if (isTiled(tif))
- sp->rowsize = TIFFTileRowSize(tif);
- else
- sp->rowsize = TIFFScanlineSize(tif);
-
- return 1;
-}
-
-static int
-PredictorSetupDecode(TIFF* tif)
-{
- TIFFPredictorState* sp = PredictorState(tif);
- TIFFDirectory* td = &tif->tif_dir;
-
- if (!(*sp->setupdecode)(tif) || !PredictorSetup(tif))
- return 0;
-
- if (sp->predictor == 2) {
- switch (td->td_bitspersample) {
- case 8: sp->decodepfunc = horAcc8; break;
- case 16: sp->decodepfunc = horAcc16; break;
- case 32: sp->decodepfunc = horAcc32; break;
- }
- /*
- * Override default decoding method with one that does the
- * predictor stuff.
- */
- if( tif->tif_decoderow != PredictorDecodeRow )
- {
- sp->decoderow = tif->tif_decoderow;
- tif->tif_decoderow = PredictorDecodeRow;
- sp->decodestrip = tif->tif_decodestrip;
- tif->tif_decodestrip = PredictorDecodeTile;
- sp->decodetile = tif->tif_decodetile;
- tif->tif_decodetile = PredictorDecodeTile;
- }
- /*
- * If the data is horizontally differenced 16-bit data that
- * requires byte-swapping, then it must be byte swapped before
- * the accumulation step. We do this with a special-purpose
- * routine and override the normal post decoding logic that
- * the library setup when the directory was read.
- */
- if (tif->tif_flags & TIFF_SWAB) {
- if (sp->decodepfunc == horAcc16) {
- sp->decodepfunc = swabHorAcc16;
- tif->tif_postdecode = _TIFFNoPostDecode;
- } else if (sp->decodepfunc == horAcc32) {
- sp->decodepfunc = swabHorAcc32;
- tif->tif_postdecode = _TIFFNoPostDecode;
- }
- }
- }
-
- else if (sp->predictor == 3) {
- sp->decodepfunc = fpAcc;
- /*
- * Override default decoding method with one that does the
- * predictor stuff.
- */
- if( tif->tif_decoderow != PredictorDecodeRow )
- {
- sp->decoderow = tif->tif_decoderow;
- tif->tif_decoderow = PredictorDecodeRow;
- sp->decodestrip = tif->tif_decodestrip;
- tif->tif_decodestrip = PredictorDecodeTile;
- sp->decodetile = tif->tif_decodetile;
- tif->tif_decodetile = PredictorDecodeTile;
- }
- /*
- * The data should not be swapped outside of the floating
- * point predictor, the accumulation routine should return
- * byres in the native order.
- */
- if (tif->tif_flags & TIFF_SWAB) {
- tif->tif_postdecode = _TIFFNoPostDecode;
- }
- /*
- * Allocate buffer to keep the decoded bytes before
- * rearranging in the ight order
- */
- }
-
- return 1;
-}
-
-static int
-PredictorSetupEncode(TIFF* tif)
-{
- TIFFPredictorState* sp = PredictorState(tif);
- TIFFDirectory* td = &tif->tif_dir;
-
- if (!(*sp->setupencode)(tif) || !PredictorSetup(tif))
- return 0;
-
- if (sp->predictor == 2) {
- switch (td->td_bitspersample) {
- case 8: sp->encodepfunc = horDiff8; break;
- case 16: sp->encodepfunc = horDiff16; break;
- case 32: sp->encodepfunc = horDiff32; break;
- }
- /*
- * Override default encoding method with one that does the
- * predictor stuff.
- */
- if( tif->tif_encoderow != PredictorEncodeRow )
- {
- sp->encoderow = tif->tif_encoderow;
- tif->tif_encoderow = PredictorEncodeRow;
- sp->encodestrip = tif->tif_encodestrip;
- tif->tif_encodestrip = PredictorEncodeTile;
- sp->encodetile = tif->tif_encodetile;
- tif->tif_encodetile = PredictorEncodeTile;
- }
- }
-
- else if (sp->predictor == 3) {
- sp->encodepfunc = fpDiff;
- /*
- * Override default encoding method with one that does the
- * predictor stuff.
- */
- if( tif->tif_encoderow != PredictorEncodeRow )
- {
- sp->encoderow = tif->tif_encoderow;
- tif->tif_encoderow = PredictorEncodeRow;
- sp->encodestrip = tif->tif_encodestrip;
- tif->tif_encodestrip = PredictorEncodeTile;
- sp->encodetile = tif->tif_encodetile;
- tif->tif_encodetile = PredictorEncodeTile;
- }
- }
-
- return 1;
-}
-
-#define REPEAT4(n, op) \
- switch (n) { \
- default: { int i; for (i = n-4; i > 0; i--) { op; } } \
- case 4: op; \
- case 3: op; \
- case 2: op; \
- case 1: op; \
- case 0: ; \
- }
-
-static void
-horAcc8(TIFF* tif, tidata_t cp0, tsize_t cc)
-{
- tsize_t stride = PredictorState(tif)->stride;
-
- char* cp = (char*) cp0;
- if (cc > stride) {
- cc -= stride;
- /*
- * Pipeline the most common cases.
- */
- if (stride == 3) {
- unsigned int cr = cp[0];
- unsigned int cg = cp[1];
- unsigned int cb = cp[2];
- do {
- cc -= 3, cp += 3;
- cp[0] = (char) (cr += cp[0]);
- cp[1] = (char) (cg += cp[1]);
- cp[2] = (char) (cb += cp[2]);
- } while ((int32) cc > 0);
- } else if (stride == 4) {
- unsigned int cr = cp[0];
- unsigned int cg = cp[1];
- unsigned int cb = cp[2];
- unsigned int ca = cp[3];
- do {
- cc -= 4, cp += 4;
- cp[0] = (char) (cr += cp[0]);
- cp[1] = (char) (cg += cp[1]);
- cp[2] = (char) (cb += cp[2]);
- cp[3] = (char) (ca += cp[3]);
- } while ((int32) cc > 0);
- } else {
- do {
- REPEAT4(stride, cp[stride] =
- (char) (cp[stride] + *cp); cp++)
- cc -= stride;
- } while ((int32) cc > 0);
- }
- }
-}
-
-static void
-swabHorAcc16(TIFF* tif, tidata_t cp0, tsize_t cc)
-{
- tsize_t stride = PredictorState(tif)->stride;
- uint16* wp = (uint16*) cp0;
- tsize_t wc = cc / 2;
-
- if (wc > stride) {
- TIFFSwabArrayOfShort(wp, wc);
- wc -= stride;
- do {
- REPEAT4(stride, wp[stride] += wp[0]; wp++)
- wc -= stride;
- } while ((int32) wc > 0);
- }
-}
-
-static void
-horAcc16(TIFF* tif, tidata_t cp0, tsize_t cc)
-{
- tsize_t stride = PredictorState(tif)->stride;
- uint16* wp = (uint16*) cp0;
- tsize_t wc = cc / 2;
-
- if (wc > stride) {
- wc -= stride;
- do {
- REPEAT4(stride, wp[stride] += wp[0]; wp++)
- wc -= stride;
- } while ((int32) wc > 0);
- }
-}
-
-static void
-swabHorAcc32(TIFF* tif, tidata_t cp0, tsize_t cc)
-{
- tsize_t stride = PredictorState(tif)->stride;
- uint32* wp = (uint32*) cp0;
- tsize_t wc = cc / 4;
-
- if (wc > stride) {
- TIFFSwabArrayOfLong(wp, wc);
- wc -= stride;
- do {
- REPEAT4(stride, wp[stride] += wp[0]; wp++)
- wc -= stride;
- } while ((int32) wc > 0);
- }
-}
-
-static void
-horAcc32(TIFF* tif, tidata_t cp0, tsize_t cc)
-{
- tsize_t stride = PredictorState(tif)->stride;
- uint32* wp = (uint32*) cp0;
- tsize_t wc = cc / 4;
-
- if (wc > stride) {
- wc -= stride;
- do {
- REPEAT4(stride, wp[stride] += wp[0]; wp++)
- wc -= stride;
- } while ((int32) wc > 0);
- }
-}
-
-/*
- * Floating point predictor accumulation routine.
- */
-static void
-fpAcc(TIFF* tif, tidata_t cp0, tsize_t cc)
-{
- tsize_t stride = PredictorState(tif)->stride;
- uint32 bps = tif->tif_dir.td_bitspersample / 8;
- tsize_t wc = cc / bps;
- tsize_t count = cc;
- uint8 *cp = (uint8 *) cp0;
- uint8 *tmp = (uint8 *)_TIFFmalloc(cc);
-
- if (!tmp)
- return;
-
- while (count > stride) {
- REPEAT4(stride, cp[stride] += cp[0]; cp++)
- count -= stride;
- }
-
- _TIFFmemcpy(tmp, cp0, cc);
- cp = (uint8 *) cp0;
- for (count = 0; count < wc; count++) {
- uint32 byte;
- for (byte = 0; byte < bps; byte++) {
-#if WORDS_BIGENDIAN
- cp[bps * count + byte] = tmp[byte * wc + count];
-#else
- cp[bps * count + byte] =
- tmp[(bps - byte - 1) * wc + count];
-#endif
- }
- }
- _TIFFfree(tmp);
-}
-
-/*
- * Decode a scanline and apply the predictor routine.
- */
-static int
-PredictorDecodeRow(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
-{
- TIFFPredictorState *sp = PredictorState(tif);
-
- assert(sp != NULL);
- assert(sp->decoderow != NULL);
- assert(sp->decodepfunc != NULL);
-
- if ((*sp->decoderow)(tif, op0, occ0, s)) {
- (*sp->decodepfunc)(tif, op0, occ0);
- return 1;
- } else
- return 0;
-}
-
-/*
- * Decode a tile/strip and apply the predictor routine.
- * Note that horizontal differencing must be done on a
- * row-by-row basis. The width of a "row" has already
- * been calculated at pre-decode time according to the
- * strip/tile dimensions.
- */
-static int
-PredictorDecodeTile(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
-{
- TIFFPredictorState *sp = PredictorState(tif);
-
- assert(sp != NULL);
- assert(sp->decodetile != NULL);
-
- if ((*sp->decodetile)(tif, op0, occ0, s)) {
- tsize_t rowsize = sp->rowsize;
- assert(rowsize > 0);
- assert(sp->decodepfunc != NULL);
- while ((long)occ0 > 0) {
- (*sp->decodepfunc)(tif, op0, (tsize_t) rowsize);
- occ0 -= rowsize;
- op0 += rowsize;
- }
- return 1;
- } else
- return 0;
-}
-
-static void
-horDiff8(TIFF* tif, tidata_t cp0, tsize_t cc)
-{
- TIFFPredictorState* sp = PredictorState(tif);
- tsize_t stride = sp->stride;
- char* cp = (char*) cp0;
-
- if (cc > stride) {
- cc -= stride;
- /*
- * Pipeline the most common cases.
- */
- if (stride == 3) {
- int r1, g1, b1;
- int r2 = cp[0];
- int g2 = cp[1];
- int b2 = cp[2];
- do {
- r1 = cp[3]; cp[3] = r1-r2; r2 = r1;
- g1 = cp[4]; cp[4] = g1-g2; g2 = g1;
- b1 = cp[5]; cp[5] = b1-b2; b2 = b1;
- cp += 3;
- } while ((int32)(cc -= 3) > 0);
- } else if (stride == 4) {
- int r1, g1, b1, a1;
- int r2 = cp[0];
- int g2 = cp[1];
- int b2 = cp[2];
- int a2 = cp[3];
- do {
- r1 = cp[4]; cp[4] = r1-r2; r2 = r1;
- g1 = cp[5]; cp[5] = g1-g2; g2 = g1;
- b1 = cp[6]; cp[6] = b1-b2; b2 = b1;
- a1 = cp[7]; cp[7] = a1-a2; a2 = a1;
- cp += 4;
- } while ((int32)(cc -= 4) > 0);
- } else {
- cp += cc - 1;
- do {
- REPEAT4(stride, cp[stride] -= cp[0]; cp--)
- } while ((int32)(cc -= stride) > 0);
- }
- }
-}
-
-static void
-horDiff16(TIFF* tif, tidata_t cp0, tsize_t cc)
-{
- TIFFPredictorState* sp = PredictorState(tif);
- tsize_t stride = sp->stride;
- int16 *wp = (int16*) cp0;
- tsize_t wc = cc/2;
-
- if (wc > stride) {
- wc -= stride;
- wp += wc - 1;
- do {
- REPEAT4(stride, wp[stride] -= wp[0]; wp--)
- wc -= stride;
- } while ((int32) wc > 0);
- }
-}
-
-static void
-horDiff32(TIFF* tif, tidata_t cp0, tsize_t cc)
-{
- TIFFPredictorState* sp = PredictorState(tif);
- tsize_t stride = sp->stride;
- int32 *wp = (int32*) cp0;
- tsize_t wc = cc/4;
-
- if (wc > stride) {
- wc -= stride;
- wp += wc - 1;
- do {
- REPEAT4(stride, wp[stride] -= wp[0]; wp--)
- wc -= stride;
- } while ((int32) wc > 0);
- }
-}
-
-/*
- * Floating point predictor differencing routine.
- */
-static void
-fpDiff(TIFF* tif, tidata_t cp0, tsize_t cc)
-{
- tsize_t stride = PredictorState(tif)->stride;
- uint32 bps = tif->tif_dir.td_bitspersample / 8;
- tsize_t wc = cc / bps;
- tsize_t count;
- uint8 *cp = (uint8 *) cp0;
- uint8 *tmp = (uint8 *)_TIFFmalloc(cc);
-
- if (!tmp)
- return;
-
- _TIFFmemcpy(tmp, cp0, cc);
- for (count = 0; count < wc; count++) {
- uint32 byte;
- for (byte = 0; byte < bps; byte++) {
-#if WORDS_BIGENDIAN
- cp[byte * wc + count] = tmp[bps * count + byte];
-#else
- cp[(bps - byte - 1) * wc + count] =
- tmp[bps * count + byte];
-#endif
- }
- }
- _TIFFfree(tmp);
-
- cp = (uint8 *) cp0;
- cp += cc - stride - 1;
- for (count = cc; count > stride; count -= stride)
- REPEAT4(stride, cp[stride] -= cp[0]; cp--)
-}
-
-static int
-PredictorEncodeRow(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
- TIFFPredictorState *sp = PredictorState(tif);
-
- assert(sp != NULL);
- assert(sp->encodepfunc != NULL);
- assert(sp->encoderow != NULL);
-
- /* XXX horizontal differencing alters user's data XXX */
- (*sp->encodepfunc)(tif, bp, cc);
- return (*sp->encoderow)(tif, bp, cc, s);
-}
-
-static int
-PredictorEncodeTile(TIFF* tif, tidata_t bp0, tsize_t cc0, tsample_t s)
-{
- static const char module[] = "PredictorEncodeTile";
- TIFFPredictorState *sp = PredictorState(tif);
- uint8 *working_copy;
- tsize_t cc = cc0, rowsize;
- unsigned char* bp;
- int result_code;
-
- assert(sp != NULL);
- assert(sp->encodepfunc != NULL);
- assert(sp->encodetile != NULL);
-
- /*
- * Do predictor manipulation in a working buffer to avoid altering
- * the callers buffer. http://trac.osgeo.org/gdal/ticket/1965
- */
- working_copy = (uint8*) _TIFFmalloc(cc0);
- if( working_copy == NULL )
- {
- TIFFErrorExt(tif->tif_clientdata, module,
- "Out of memory allocating %d byte temp buffer.",
- cc0 );
- return 0;
- }
- memcpy( working_copy, bp0, cc0 );
- bp = working_copy;
-
- rowsize = sp->rowsize;
- assert(rowsize > 0);
- assert((cc0%rowsize)==0);
- while (cc > 0) {
- (*sp->encodepfunc)(tif, bp, rowsize);
- cc -= rowsize;
- bp += rowsize;
- }
- result_code = (*sp->encodetile)(tif, working_copy, cc0, s);
-
- _TIFFfree( working_copy );
-
- return result_code;
-}
-
-#define FIELD_PREDICTOR (FIELD_CODEC+0) /* XXX */
-
-static const TIFFFieldInfo predictFieldInfo[] = {
- { TIFFTAG_PREDICTOR, 1, 1, TIFF_SHORT, FIELD_PREDICTOR,
- FALSE, FALSE, "Predictor" },
-};
-
-static int
-PredictorVSetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- TIFFPredictorState *sp = PredictorState(tif);
-
- assert(sp != NULL);
- assert(sp->vsetparent != NULL);
-
- switch (tag) {
- case TIFFTAG_PREDICTOR:
- sp->predictor = (uint16) va_arg(ap, int);
- TIFFSetFieldBit(tif, FIELD_PREDICTOR);
- break;
- default:
- return (*sp->vsetparent)(tif, tag, ap);
- }
- tif->tif_flags |= TIFF_DIRTYDIRECT;
- return 1;
-}
-
-static int
-PredictorVGetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- TIFFPredictorState *sp = PredictorState(tif);
-
- assert(sp != NULL);
- assert(sp->vgetparent != NULL);
-
- switch (tag) {
- case TIFFTAG_PREDICTOR:
- *va_arg(ap, uint16*) = sp->predictor;
- break;
- default:
- return (*sp->vgetparent)(tif, tag, ap);
- }
- return 1;
-}
-
-static void
-PredictorPrintDir(TIFF* tif, FILE* fd, long flags)
-{
- TIFFPredictorState* sp = PredictorState(tif);
-
- (void) flags;
- if (TIFFFieldSet(tif,FIELD_PREDICTOR)) {
- fprintf(fd, " Predictor: ");
- switch (sp->predictor) {
- case 1: fprintf(fd, "none "); break;
- case 2: fprintf(fd, "horizontal differencing "); break;
- case 3: fprintf(fd, "floating point predictor "); break;
- }
- fprintf(fd, "%u (0x%x)\n", sp->predictor, sp->predictor);
- }
- if (sp->printdir)
- (*sp->printdir)(tif, fd, flags);
-}
-
-int
-TIFFPredictorInit(TIFF* tif)
-{
- TIFFPredictorState* sp = PredictorState(tif);
-
- assert(sp != 0);
-
- /*
- * Merge codec-specific tag information.
- */
- if (!_TIFFMergeFieldInfo(tif, predictFieldInfo,
- TIFFArrayCount(predictFieldInfo))) {
- TIFFErrorExt(tif->tif_clientdata, "TIFFPredictorInit",
- "Merging Predictor codec-specific tags failed");
- return 0;
- }
-
- /*
- * Override parent get/set field methods.
- */
- sp->vgetparent = tif->tif_tagmethods.vgetfield;
- tif->tif_tagmethods.vgetfield =
- PredictorVGetField;/* hook for predictor tag */
- sp->vsetparent = tif->tif_tagmethods.vsetfield;
- tif->tif_tagmethods.vsetfield =
- PredictorVSetField;/* hook for predictor tag */
- sp->printdir = tif->tif_tagmethods.printdir;
- tif->tif_tagmethods.printdir =
- PredictorPrintDir; /* hook for predictor tag */
-
- sp->setupdecode = tif->tif_setupdecode;
- tif->tif_setupdecode = PredictorSetupDecode;
- sp->setupencode = tif->tif_setupencode;
- tif->tif_setupencode = PredictorSetupEncode;
-
- sp->predictor = 1; /* default value */
- sp->encodepfunc = NULL; /* no predictor routine */
- sp->decodepfunc = NULL; /* no predictor routine */
- return 1;
-}
-
-int
-TIFFPredictorCleanup(TIFF* tif)
-{
- TIFFPredictorState* sp = PredictorState(tif);
-
- assert(sp != 0);
-
- tif->tif_tagmethods.vgetfield = sp->vgetparent;
- tif->tif_tagmethods.vsetfield = sp->vsetparent;
- tif->tif_tagmethods.printdir = sp->printdir;
- tif->tif_setupdecode = sp->setupdecode;
- tif->tif_setupencode = sp->setupencode;
-
- return 1;
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_predict.h b/src/3rdparty/libtiff/libtiff/tif_predict.h
deleted file mode 100644
index 0c1aefccdc..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_predict.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/* $Id: tif_predict.h,v 1.3.2.1 2007/11/22 21:24:51 fwarmerdam Exp $ */
-
-/*
- * Copyright (c) 1995-1997 Sam Leffler
- * Copyright (c) 1995-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#ifndef _TIFFPREDICT_
-#define _TIFFPREDICT_
-/*
- * ``Library-private'' Support for the Predictor Tag
- */
-
-/*
- * Codecs that want to support the Predictor tag must place
- * this structure first in their private state block so that
- * the predictor code can cast tif_data to find its state.
- */
-typedef struct {
- int predictor; /* predictor tag value */
- int stride; /* sample stride over data */
- tsize_t rowsize; /* tile/strip row size */
-
- TIFFCodeMethod encoderow; /* parent codec encode/decode row */
- TIFFCodeMethod encodestrip; /* parent codec encode/decode strip */
- TIFFCodeMethod encodetile; /* parent codec encode/decode tile */
- TIFFPostMethod encodepfunc; /* horizontal differencer */
-
- TIFFCodeMethod decoderow; /* parent codec encode/decode row */
- TIFFCodeMethod decodestrip; /* parent codec encode/decode strip */
- TIFFCodeMethod decodetile; /* parent codec encode/decode tile */
- TIFFPostMethod decodepfunc; /* horizontal accumulator */
-
- TIFFVGetMethod vgetparent; /* super-class method */
- TIFFVSetMethod vsetparent; /* super-class method */
- TIFFPrintMethod printdir; /* super-class method */
- TIFFBoolMethod setupdecode; /* super-class method */
- TIFFBoolMethod setupencode; /* super-class method */
-} TIFFPredictorState;
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-extern int TIFFPredictorInit(TIFF*);
-extern int TIFFPredictorCleanup(TIFF*);
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _TIFFPREDICT_ */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_print.c b/src/3rdparty/libtiff/libtiff/tif_print.c
deleted file mode 100644
index 871fffd614..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_print.c
+++ /dev/null
@@ -1,639 +0,0 @@
-/* $Id: tif_print.c,v 1.36.2.2 2009-09-17 18:00:28 bfriesen Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- *
- * Directory Printing Support
- */
-#include "tiffiop.h"
-#include <stdio.h>
-#include <string.h>
-#include <ctype.h>
-
-static const char *photoNames[] = {
- "min-is-white", /* PHOTOMETRIC_MINISWHITE */
- "min-is-black", /* PHOTOMETRIC_MINISBLACK */
- "RGB color", /* PHOTOMETRIC_RGB */
- "palette color (RGB from colormap)", /* PHOTOMETRIC_PALETTE */
- "transparency mask", /* PHOTOMETRIC_MASK */
- "separated", /* PHOTOMETRIC_SEPARATED */
- "YCbCr", /* PHOTOMETRIC_YCBCR */
- "7 (0x7)",
- "CIE L*a*b*", /* PHOTOMETRIC_CIELAB */
-};
-#define NPHOTONAMES (sizeof (photoNames) / sizeof (photoNames[0]))
-
-static const char *orientNames[] = {
- "0 (0x0)",
- "row 0 top, col 0 lhs", /* ORIENTATION_TOPLEFT */
- "row 0 top, col 0 rhs", /* ORIENTATION_TOPRIGHT */
- "row 0 bottom, col 0 rhs", /* ORIENTATION_BOTRIGHT */
- "row 0 bottom, col 0 lhs", /* ORIENTATION_BOTLEFT */
- "row 0 lhs, col 0 top", /* ORIENTATION_LEFTTOP */
- "row 0 rhs, col 0 top", /* ORIENTATION_RIGHTTOP */
- "row 0 rhs, col 0 bottom", /* ORIENTATION_RIGHTBOT */
- "row 0 lhs, col 0 bottom", /* ORIENTATION_LEFTBOT */
-};
-#define NORIENTNAMES (sizeof (orientNames) / sizeof (orientNames[0]))
-
-static void
-_TIFFPrintField(FILE* fd, const TIFFFieldInfo *fip,
- uint32 value_count, void *raw_data)
-{
- uint32 j;
-
- fprintf(fd, " %s: ", fip->field_name);
-
- for(j = 0; j < value_count; j++) {
- if(fip->field_type == TIFF_BYTE)
- fprintf(fd, "%u", ((uint8 *) raw_data)[j]);
- else if(fip->field_type == TIFF_UNDEFINED)
- fprintf(fd, "0x%x",
- (unsigned int) ((unsigned char *) raw_data)[j]);
- else if(fip->field_type == TIFF_SBYTE)
- fprintf(fd, "%d", ((int8 *) raw_data)[j]);
- else if(fip->field_type == TIFF_SHORT)
- fprintf(fd, "%u", ((uint16 *) raw_data)[j]);
- else if(fip->field_type == TIFF_SSHORT)
- fprintf(fd, "%d", ((int16 *) raw_data)[j]);
- else if(fip->field_type == TIFF_LONG)
- fprintf(fd, "%lu",
- (unsigned long)((uint32 *) raw_data)[j]);
- else if(fip->field_type == TIFF_SLONG)
- fprintf(fd, "%ld", (long)((int32 *) raw_data)[j]);
- else if(fip->field_type == TIFF_RATIONAL
- || fip->field_type == TIFF_SRATIONAL
- || fip->field_type == TIFF_FLOAT)
- fprintf(fd, "%f", ((float *) raw_data)[j]);
- else if(fip->field_type == TIFF_IFD)
- fprintf(fd, "0x%ulx", ((uint32 *) raw_data)[j]);
- else if(fip->field_type == TIFF_ASCII) {
- fprintf(fd, "%s", (char *) raw_data);
- break;
- }
- else if(fip->field_type == TIFF_DOUBLE)
- fprintf(fd, "%f", ((double *) raw_data)[j]);
- else if(fip->field_type == TIFF_FLOAT)
- fprintf(fd, "%f", ((float *)raw_data)[j]);
- else {
- fprintf(fd, "<unsupported data type in TIFFPrint>");
- break;
- }
-
- if(j < value_count - 1)
- fprintf(fd, ",");
- }
-
- fprintf(fd, "\n");
-}
-
-static int
-_TIFFPrettyPrintField(TIFF* tif, FILE* fd, ttag_t tag,
- uint32 value_count, void *raw_data)
-{
- TIFFDirectory *td = &tif->tif_dir;
-
- switch (tag)
- {
- case TIFFTAG_INKSET:
- fprintf(fd, " Ink Set: ");
- switch (*((uint16*)raw_data)) {
- case INKSET_CMYK:
- fprintf(fd, "CMYK\n");
- break;
- default:
- fprintf(fd, "%u (0x%x)\n",
- *((uint16*)raw_data),
- *((uint16*)raw_data));
- break;
- }
- return 1;
- case TIFFTAG_DOTRANGE:
- fprintf(fd, " Dot Range: %u-%u\n",
- ((uint16*)raw_data)[0], ((uint16*)raw_data)[1]);
- return 1;
- case TIFFTAG_WHITEPOINT:
- fprintf(fd, " White Point: %g-%g\n",
- ((float *)raw_data)[0], ((float *)raw_data)[1]); return 1;
- case TIFFTAG_REFERENCEBLACKWHITE:
- {
- uint16 i;
-
- fprintf(fd, " Reference Black/White:\n");
- for (i = 0; i < td->td_samplesperpixel; i++)
- fprintf(fd, " %2d: %5g %5g\n", i,
- ((float *)raw_data)[2*i+0],
- ((float *)raw_data)[2*i+1]);
- return 1;
- }
- case TIFFTAG_XMLPACKET:
- {
- uint32 i;
-
- fprintf(fd, " XMLPacket (XMP Metadata):\n" );
- for(i = 0; i < value_count; i++)
- fputc(((char *)raw_data)[i], fd);
- fprintf( fd, "\n" );
- return 1;
- }
- case TIFFTAG_RICHTIFFIPTC:
- /*
- * XXX: for some weird reason RichTIFFIPTC tag
- * defined as array of LONG values.
- */
- fprintf(fd,
- " RichTIFFIPTC Data: <present>, %lu bytes\n",
- (unsigned long) value_count * 4);
- return 1;
- case TIFFTAG_PHOTOSHOP:
- fprintf(fd, " Photoshop Data: <present>, %lu bytes\n",
- (unsigned long) value_count);
- return 1;
- case TIFFTAG_ICCPROFILE:
- fprintf(fd, " ICC Profile: <present>, %lu bytes\n",
- (unsigned long) value_count);
- return 1;
- case TIFFTAG_STONITS:
- fprintf(fd,
- " Sample to Nits conversion factor: %.4e\n",
- *((double*)raw_data));
- return 1;
- }
-
- return 0;
-}
-
-/*
- * Print the contents of the current directory
- * to the specified stdio file stream.
- */
-void
-TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags)
-{
- TIFFDirectory *td = &tif->tif_dir;
- char *sep;
- uint16 i;
- long l, n;
-
- fprintf(fd, "TIFF Directory at offset 0x%lx (%lu)\n",
- (unsigned long)tif->tif_diroff, (unsigned long)tif->tif_diroff);
- if (TIFFFieldSet(tif,FIELD_SUBFILETYPE)) {
- fprintf(fd, " Subfile Type:");
- sep = " ";
- if (td->td_subfiletype & FILETYPE_REDUCEDIMAGE) {
- fprintf(fd, "%sreduced-resolution image", sep);
- sep = "/";
- }
- if (td->td_subfiletype & FILETYPE_PAGE) {
- fprintf(fd, "%smulti-page document", sep);
- sep = "/";
- }
- if (td->td_subfiletype & FILETYPE_MASK)
- fprintf(fd, "%stransparency mask", sep);
- fprintf(fd, " (%lu = 0x%lx)\n",
- (long) td->td_subfiletype, (long) td->td_subfiletype);
- }
- if (TIFFFieldSet(tif,FIELD_IMAGEDIMENSIONS)) {
- fprintf(fd, " Image Width: %lu Image Length: %lu",
- (unsigned long) td->td_imagewidth, (unsigned long) td->td_imagelength);
- if (TIFFFieldSet(tif,FIELD_IMAGEDEPTH))
- fprintf(fd, " Image Depth: %lu",
- (unsigned long) td->td_imagedepth);
- fprintf(fd, "\n");
- }
- if (TIFFFieldSet(tif,FIELD_TILEDIMENSIONS)) {
- fprintf(fd, " Tile Width: %lu Tile Length: %lu",
- (unsigned long) td->td_tilewidth, (unsigned long) td->td_tilelength);
- if (TIFFFieldSet(tif,FIELD_TILEDEPTH))
- fprintf(fd, " Tile Depth: %lu",
- (unsigned long) td->td_tiledepth);
- fprintf(fd, "\n");
- }
- if (TIFFFieldSet(tif,FIELD_RESOLUTION)) {
- fprintf(fd, " Resolution: %g, %g",
- td->td_xresolution, td->td_yresolution);
- if (TIFFFieldSet(tif,FIELD_RESOLUTIONUNIT)) {
- switch (td->td_resolutionunit) {
- case RESUNIT_NONE:
- fprintf(fd, " (unitless)");
- break;
- case RESUNIT_INCH:
- fprintf(fd, " pixels/inch");
- break;
- case RESUNIT_CENTIMETER:
- fprintf(fd, " pixels/cm");
- break;
- default:
- fprintf(fd, " (unit %u = 0x%x)",
- td->td_resolutionunit,
- td->td_resolutionunit);
- break;
- }
- }
- fprintf(fd, "\n");
- }
- if (TIFFFieldSet(tif,FIELD_POSITION))
- fprintf(fd, " Position: %g, %g\n",
- td->td_xposition, td->td_yposition);
- if (TIFFFieldSet(tif,FIELD_BITSPERSAMPLE))
- fprintf(fd, " Bits/Sample: %u\n", td->td_bitspersample);
- if (TIFFFieldSet(tif,FIELD_SAMPLEFORMAT)) {
- fprintf(fd, " Sample Format: ");
- switch (td->td_sampleformat) {
- case SAMPLEFORMAT_VOID:
- fprintf(fd, "void\n");
- break;
- case SAMPLEFORMAT_INT:
- fprintf(fd, "signed integer\n");
- break;
- case SAMPLEFORMAT_UINT:
- fprintf(fd, "unsigned integer\n");
- break;
- case SAMPLEFORMAT_IEEEFP:
- fprintf(fd, "IEEE floating point\n");
- break;
- case SAMPLEFORMAT_COMPLEXINT:
- fprintf(fd, "complex signed integer\n");
- break;
- case SAMPLEFORMAT_COMPLEXIEEEFP:
- fprintf(fd, "complex IEEE floating point\n");
- break;
- default:
- fprintf(fd, "%u (0x%x)\n",
- td->td_sampleformat, td->td_sampleformat);
- break;
- }
- }
- if (TIFFFieldSet(tif,FIELD_COMPRESSION)) {
- const TIFFCodec* c = TIFFFindCODEC(td->td_compression);
- fprintf(fd, " Compression Scheme: ");
- if (c)
- fprintf(fd, "%s\n", c->name);
- else
- fprintf(fd, "%u (0x%x)\n",
- td->td_compression, td->td_compression);
- }
- if (TIFFFieldSet(tif,FIELD_PHOTOMETRIC)) {
- fprintf(fd, " Photometric Interpretation: ");
- if (td->td_photometric < NPHOTONAMES)
- fprintf(fd, "%s\n", photoNames[td->td_photometric]);
- else {
- switch (td->td_photometric) {
- case PHOTOMETRIC_LOGL:
- fprintf(fd, "CIE Log2(L)\n");
- break;
- case PHOTOMETRIC_LOGLUV:
- fprintf(fd, "CIE Log2(L) (u',v')\n");
- break;
- default:
- fprintf(fd, "%u (0x%x)\n",
- td->td_photometric, td->td_photometric);
- break;
- }
- }
- }
- if (TIFFFieldSet(tif,FIELD_EXTRASAMPLES) && td->td_extrasamples) {
- fprintf(fd, " Extra Samples: %u<", td->td_extrasamples);
- sep = "";
- for (i = 0; i < td->td_extrasamples; i++) {
- switch (td->td_sampleinfo[i]) {
- case EXTRASAMPLE_UNSPECIFIED:
- fprintf(fd, "%sunspecified", sep);
- break;
- case EXTRASAMPLE_ASSOCALPHA:
- fprintf(fd, "%sassoc-alpha", sep);
- break;
- case EXTRASAMPLE_UNASSALPHA:
- fprintf(fd, "%sunassoc-alpha", sep);
- break;
- default:
- fprintf(fd, "%s%u (0x%x)", sep,
- td->td_sampleinfo[i], td->td_sampleinfo[i]);
- break;
- }
- sep = ", ";
- }
- fprintf(fd, ">\n");
- }
- if (TIFFFieldSet(tif,FIELD_INKNAMES)) {
- char* cp;
- fprintf(fd, " Ink Names: ");
- i = td->td_samplesperpixel;
- sep = "";
- for (cp = td->td_inknames; i > 0; cp = strchr(cp,'\0')+1, i--) {
- fputs(sep, fd);
- _TIFFprintAscii(fd, cp);
- sep = ", ";
- }
- fputs("\n", fd);
- }
- if (TIFFFieldSet(tif,FIELD_THRESHHOLDING)) {
- fprintf(fd, " Thresholding: ");
- switch (td->td_threshholding) {
- case THRESHHOLD_BILEVEL:
- fprintf(fd, "bilevel art scan\n");
- break;
- case THRESHHOLD_HALFTONE:
- fprintf(fd, "halftone or dithered scan\n");
- break;
- case THRESHHOLD_ERRORDIFFUSE:
- fprintf(fd, "error diffused\n");
- break;
- default:
- fprintf(fd, "%u (0x%x)\n",
- td->td_threshholding, td->td_threshholding);
- break;
- }
- }
- if (TIFFFieldSet(tif,FIELD_FILLORDER)) {
- fprintf(fd, " FillOrder: ");
- switch (td->td_fillorder) {
- case FILLORDER_MSB2LSB:
- fprintf(fd, "msb-to-lsb\n");
- break;
- case FILLORDER_LSB2MSB:
- fprintf(fd, "lsb-to-msb\n");
- break;
- default:
- fprintf(fd, "%u (0x%x)\n",
- td->td_fillorder, td->td_fillorder);
- break;
- }
- }
- if (TIFFFieldSet(tif,FIELD_YCBCRSUBSAMPLING))
- {
- /*
- * For hacky reasons (see tif_jpeg.c - JPEGFixupTestSubsampling),
- * we need to fetch this rather than trust what is in our
- * structures.
- */
- uint16 subsampling[2];
-
- TIFFGetField( tif, TIFFTAG_YCBCRSUBSAMPLING,
- subsampling + 0, subsampling + 1 );
- fprintf(fd, " YCbCr Subsampling: %u, %u\n",
- subsampling[0], subsampling[1] );
- }
- if (TIFFFieldSet(tif,FIELD_YCBCRPOSITIONING)) {
- fprintf(fd, " YCbCr Positioning: ");
- switch (td->td_ycbcrpositioning) {
- case YCBCRPOSITION_CENTERED:
- fprintf(fd, "centered\n");
- break;
- case YCBCRPOSITION_COSITED:
- fprintf(fd, "cosited\n");
- break;
- default:
- fprintf(fd, "%u (0x%x)\n",
- td->td_ycbcrpositioning, td->td_ycbcrpositioning);
- break;
- }
- }
- if (TIFFFieldSet(tif,FIELD_HALFTONEHINTS))
- fprintf(fd, " Halftone Hints: light %u dark %u\n",
- td->td_halftonehints[0], td->td_halftonehints[1]);
- if (TIFFFieldSet(tif,FIELD_ORIENTATION)) {
- fprintf(fd, " Orientation: ");
- if (td->td_orientation < NORIENTNAMES)
- fprintf(fd, "%s\n", orientNames[td->td_orientation]);
- else
- fprintf(fd, "%u (0x%x)\n",
- td->td_orientation, td->td_orientation);
- }
- if (TIFFFieldSet(tif,FIELD_SAMPLESPERPIXEL))
- fprintf(fd, " Samples/Pixel: %u\n", td->td_samplesperpixel);
- if (TIFFFieldSet(tif,FIELD_ROWSPERSTRIP)) {
- fprintf(fd, " Rows/Strip: ");
- if (td->td_rowsperstrip == (uint32) -1)
- fprintf(fd, "(infinite)\n");
- else
- fprintf(fd, "%lu\n", (unsigned long) td->td_rowsperstrip);
- }
- if (TIFFFieldSet(tif,FIELD_MINSAMPLEVALUE))
- fprintf(fd, " Min Sample Value: %u\n", td->td_minsamplevalue);
- if (TIFFFieldSet(tif,FIELD_MAXSAMPLEVALUE))
- fprintf(fd, " Max Sample Value: %u\n", td->td_maxsamplevalue);
- if (TIFFFieldSet(tif,FIELD_SMINSAMPLEVALUE))
- fprintf(fd, " SMin Sample Value: %g\n",
- td->td_sminsamplevalue);
- if (TIFFFieldSet(tif,FIELD_SMAXSAMPLEVALUE))
- fprintf(fd, " SMax Sample Value: %g\n",
- td->td_smaxsamplevalue);
- if (TIFFFieldSet(tif,FIELD_PLANARCONFIG)) {
- fprintf(fd, " Planar Configuration: ");
- switch (td->td_planarconfig) {
- case PLANARCONFIG_CONTIG:
- fprintf(fd, "single image plane\n");
- break;
- case PLANARCONFIG_SEPARATE:
- fprintf(fd, "separate image planes\n");
- break;
- default:
- fprintf(fd, "%u (0x%x)\n",
- td->td_planarconfig, td->td_planarconfig);
- break;
- }
- }
- if (TIFFFieldSet(tif,FIELD_PAGENUMBER))
- fprintf(fd, " Page Number: %u-%u\n",
- td->td_pagenumber[0], td->td_pagenumber[1]);
- if (TIFFFieldSet(tif,FIELD_COLORMAP)) {
- fprintf(fd, " Color Map: ");
- if (flags & TIFFPRINT_COLORMAP) {
- fprintf(fd, "\n");
- n = 1L<<td->td_bitspersample;
- for (l = 0; l < n; l++)
- fprintf(fd, " %5lu: %5u %5u %5u\n",
- l,
- td->td_colormap[0][l],
- td->td_colormap[1][l],
- td->td_colormap[2][l]);
- } else
- fprintf(fd, "(present)\n");
- }
- if (TIFFFieldSet(tif,FIELD_TRANSFERFUNCTION)) {
- fprintf(fd, " Transfer Function: ");
- if (flags & TIFFPRINT_CURVES) {
- fprintf(fd, "\n");
- n = 1L<<td->td_bitspersample;
- for (l = 0; l < n; l++) {
- fprintf(fd, " %2lu: %5u",
- l, td->td_transferfunction[0][l]);
- for (i = 1; i < td->td_samplesperpixel; i++)
- fprintf(fd, " %5u",
- td->td_transferfunction[i][l]);
- fputc('\n', fd);
- }
- } else
- fprintf(fd, "(present)\n");
- }
- if (TIFFFieldSet(tif, FIELD_SUBIFD) && (td->td_subifd)) {
- fprintf(fd, " SubIFD Offsets:");
- for (i = 0; i < td->td_nsubifd; i++)
- fprintf(fd, " %5lu", (long) td->td_subifd[i]);
- fputc('\n', fd);
- }
-
- /*
- ** Custom tag support.
- */
- {
- int i;
- short count;
-
- count = (short) TIFFGetTagListCount(tif);
- for(i = 0; i < count; i++) {
- ttag_t tag = TIFFGetTagListEntry(tif, i);
- const TIFFFieldInfo *fip;
- uint32 value_count;
- int mem_alloc = 0;
- void *raw_data;
-
- fip = TIFFFieldWithTag(tif, tag);
- if(fip == NULL)
- continue;
-
- if(fip->field_passcount) {
- if(TIFFGetField(tif, tag, &value_count, &raw_data) != 1)
- continue;
- } else {
- if (fip->field_readcount == TIFF_VARIABLE
- || fip->field_readcount == TIFF_VARIABLE2)
- value_count = 1;
- else if (fip->field_readcount == TIFF_SPP)
- value_count = td->td_samplesperpixel;
- else
- value_count = fip->field_readcount;
- if ((fip->field_type == TIFF_ASCII
- || fip->field_readcount == TIFF_VARIABLE
- || fip->field_readcount == TIFF_VARIABLE2
- || fip->field_readcount == TIFF_SPP
- || value_count > 1)
- && fip->field_tag != TIFFTAG_PAGENUMBER
- && fip->field_tag != TIFFTAG_HALFTONEHINTS
- && fip->field_tag != TIFFTAG_YCBCRSUBSAMPLING
- && fip->field_tag != TIFFTAG_DOTRANGE) {
- if(TIFFGetField(tif, tag, &raw_data) != 1)
- continue;
- } else if (fip->field_tag != TIFFTAG_PAGENUMBER
- && fip->field_tag != TIFFTAG_HALFTONEHINTS
- && fip->field_tag != TIFFTAG_YCBCRSUBSAMPLING
- && fip->field_tag != TIFFTAG_DOTRANGE) {
- raw_data = _TIFFmalloc(
- _TIFFDataSize(fip->field_type)
- * value_count);
- mem_alloc = 1;
- if(TIFFGetField(tif, tag, raw_data) != 1) {
- _TIFFfree(raw_data);
- continue;
- }
- } else {
- /*
- * XXX: Should be fixed and removed, see the
- * notes related to TIFFTAG_PAGENUMBER,
- * TIFFTAG_HALFTONEHINTS,
- * TIFFTAG_YCBCRSUBSAMPLING and
- * TIFFTAG_DOTRANGE tags in tif_dir.c. */
- char *tmp;
- raw_data = _TIFFmalloc(
- _TIFFDataSize(fip->field_type)
- * value_count);
- tmp = raw_data;
- mem_alloc = 1;
- if(TIFFGetField(tif, tag, tmp,
- tmp + _TIFFDataSize(fip->field_type)) != 1) {
- _TIFFfree(raw_data);
- continue;
- }
- }
- }
-
- /*
- * Catch the tags which needs to be specially handled and
- * pretty print them. If tag not handled in
- * _TIFFPrettyPrintField() fall down and print it as any other
- * tag.
- */
- if (_TIFFPrettyPrintField(tif, fd, tag, value_count, raw_data)) {
- if(mem_alloc)
- _TIFFfree(raw_data);
- continue;
- }
- else
- _TIFFPrintField(fd, fip, value_count, raw_data);
-
- if(mem_alloc)
- _TIFFfree(raw_data);
- }
- }
-
- if (tif->tif_tagmethods.printdir)
- (*tif->tif_tagmethods.printdir)(tif, fd, flags);
- if ((flags & TIFFPRINT_STRIPS) &&
- TIFFFieldSet(tif,FIELD_STRIPOFFSETS)) {
- tstrip_t s;
-
- fprintf(fd, " %lu %s:\n",
- (long) td->td_nstrips,
- isTiled(tif) ? "Tiles" : "Strips");
- for (s = 0; s < td->td_nstrips; s++)
- fprintf(fd, " %3lu: [%8lu, %8lu]\n",
- (unsigned long) s,
- (unsigned long) td->td_stripoffset[s],
- (unsigned long) td->td_stripbytecount[s]);
- }
-}
-
-void
-_TIFFprintAscii(FILE* fd, const char* cp)
-{
- for (; *cp != '\0'; cp++) {
- const char* tp;
-
- if (isprint((int)*cp)) {
- fputc(*cp, fd);
- continue;
- }
- for (tp = "\tt\bb\rr\nn\vv"; *tp; tp++)
- if (*tp++ == *cp)
- break;
- if (*tp)
- fprintf(fd, "\\%c", *tp);
- else
- fprintf(fd, "\\%03o", *cp & 0xff);
- }
-}
-
-void
-_TIFFprintAsciiTag(FILE* fd, const char* name, const char* value)
-{
- fprintf(fd, " %s: \"", name);
- _TIFFprintAscii(fd, value);
- fprintf(fd, "\"\n");
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_read.c b/src/3rdparty/libtiff/libtiff/tif_read.c
deleted file mode 100644
index 92e47469e2..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_read.c
+++ /dev/null
@@ -1,741 +0,0 @@
-/* $Id: tif_read.c,v 1.16 2007/02/22 11:33:44 dron Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- * Scanline-oriented Read Support
- */
-#include "tiffiop.h"
-#include <stdio.h>
-
- int TIFFFillStrip(TIFF*, tstrip_t);
- int TIFFFillTile(TIFF*, ttile_t);
-static int TIFFStartStrip(TIFF*, tstrip_t);
-static int TIFFStartTile(TIFF*, ttile_t);
-static int TIFFCheckRead(TIFF*, int);
-
-#define NOSTRIP ((tstrip_t) -1) /* undefined state */
-#define NOTILE ((ttile_t) -1) /* undefined state */
-
-/*
- * Seek to a random row+sample in a file.
- */
-static int
-TIFFSeek(TIFF* tif, uint32 row, tsample_t sample)
-{
- register TIFFDirectory *td = &tif->tif_dir;
- tstrip_t strip;
-
- if (row >= td->td_imagelength) { /* out of range */
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%lu: Row out of range, max %lu",
- (unsigned long) row,
- (unsigned long) td->td_imagelength);
- return (0);
- }
- if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
- if (sample >= td->td_samplesperpixel) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%lu: Sample out of range, max %lu",
- (unsigned long) sample, (unsigned long) td->td_samplesperpixel);
- return (0);
- }
- strip = sample*td->td_stripsperimage + row/td->td_rowsperstrip;
- } else
- strip = row / td->td_rowsperstrip;
- if (strip != tif->tif_curstrip) { /* different strip, refill */
- if (!TIFFFillStrip(tif, strip))
- return (0);
- } else if (row < tif->tif_row) {
- /*
- * Moving backwards within the same strip: backup
- * to the start and then decode forward (below).
- *
- * NB: If you're planning on lots of random access within a
- * strip, it's better to just read and decode the entire
- * strip, and then access the decoded data in a random fashion.
- */
- if (!TIFFStartStrip(tif, strip))
- return (0);
- }
- if (row != tif->tif_row) {
- /*
- * Seek forward to the desired row.
- */
- if (!(*tif->tif_seek)(tif, row - tif->tif_row))
- return (0);
- tif->tif_row = row;
- }
- return (1);
-}
-
-int
-TIFFReadScanline(TIFF* tif, tdata_t buf, uint32 row, tsample_t sample)
-{
- int e;
-
- if (!TIFFCheckRead(tif, 0))
- return (-1);
- if( (e = TIFFSeek(tif, row, sample)) != 0) {
- /*
- * Decompress desired row into user buffer.
- */
- e = (*tif->tif_decoderow)
- (tif, (tidata_t) buf, tif->tif_scanlinesize, sample);
-
- /* we are now poised at the beginning of the next row */
- tif->tif_row = row + 1;
-
- if (e)
- (*tif->tif_postdecode)(tif, (tidata_t) buf,
- tif->tif_scanlinesize);
- }
- return (e > 0 ? 1 : -1);
-}
-
-/*
- * Read a strip of data and decompress the specified
- * amount into the user-supplied buffer.
- */
-tsize_t
-TIFFReadEncodedStrip(TIFF* tif, tstrip_t strip, tdata_t buf, tsize_t size)
-{
- TIFFDirectory *td = &tif->tif_dir;
- uint32 nrows;
- tsize_t stripsize;
- tstrip_t sep_strip, strips_per_sep;
-
- if (!TIFFCheckRead(tif, 0))
- return (-1);
- if (strip >= td->td_nstrips) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%ld: Strip out of range, max %ld",
- (long) strip, (long) td->td_nstrips);
- return (-1);
- }
- /*
- * Calculate the strip size according to the number of
- * rows in the strip (check for truncated last strip on any
- * of the separations).
- */
- if( td->td_rowsperstrip >= td->td_imagelength )
- strips_per_sep = 1;
- else
- strips_per_sep = (td->td_imagelength+td->td_rowsperstrip-1)
- / td->td_rowsperstrip;
-
- sep_strip = strip % strips_per_sep;
-
- if (sep_strip != strips_per_sep-1 ||
- (nrows = td->td_imagelength % td->td_rowsperstrip) == 0)
- nrows = td->td_rowsperstrip;
-
- stripsize = TIFFVStripSize(tif, nrows);
- if (size == (tsize_t) -1)
- size = stripsize;
- else if (size > stripsize)
- size = stripsize;
- if (TIFFFillStrip(tif, strip)
- && (*tif->tif_decodestrip)(tif, (tidata_t) buf, size,
- (tsample_t)(strip / td->td_stripsperimage)) > 0 ) {
- (*tif->tif_postdecode)(tif, (tidata_t) buf, size);
- return (size);
- } else
- return ((tsize_t) -1);
-}
-
-static tsize_t
-TIFFReadRawStrip1(TIFF* tif,
- tstrip_t strip, tdata_t buf, tsize_t size, const char* module)
-{
- TIFFDirectory *td = &tif->tif_dir;
-
- assert((tif->tif_flags&TIFF_NOREADRAW)==0);
- if (!isMapped(tif)) {
- tsize_t cc;
-
- if (!SeekOK(tif, td->td_stripoffset[strip])) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Seek error at scanline %lu, strip %lu",
- tif->tif_name,
- (unsigned long) tif->tif_row, (unsigned long) strip);
- return (-1);
- }
- cc = TIFFReadFile(tif, buf, size);
- if (cc != size) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Read error at scanline %lu; got %lu bytes, expected %lu",
- tif->tif_name,
- (unsigned long) tif->tif_row,
- (unsigned long) cc,
- (unsigned long) size);
- return (-1);
- }
- } else {
- if (td->td_stripoffset[strip] + size > tif->tif_size) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Read error at scanline %lu, strip %lu; got %lu bytes, expected %lu",
- tif->tif_name,
- (unsigned long) tif->tif_row,
- (unsigned long) strip,
- (unsigned long) tif->tif_size - td->td_stripoffset[strip],
- (unsigned long) size);
- return (-1);
- }
- _TIFFmemcpy(buf, tif->tif_base + td->td_stripoffset[strip],
- size);
- }
- return (size);
-}
-
-/*
- * Read a strip of data from the file.
- */
-tsize_t
-TIFFReadRawStrip(TIFF* tif, tstrip_t strip, tdata_t buf, tsize_t size)
-{
- static const char module[] = "TIFFReadRawStrip";
- TIFFDirectory *td = &tif->tif_dir;
- /*
- * FIXME: butecount should have tsize_t type, but for now libtiff
- * defines tsize_t as a signed 32-bit integer and we are losing
- * ability to read arrays larger than 2^31 bytes. So we are using
- * uint32 instead of tsize_t here.
- */
- uint32 bytecount;
-
- if (!TIFFCheckRead(tif, 0))
- return ((tsize_t) -1);
- if (strip >= td->td_nstrips) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%lu: Strip out of range, max %lu",
- (unsigned long) strip,
- (unsigned long) td->td_nstrips);
- return ((tsize_t) -1);
- }
- if (tif->tif_flags&TIFF_NOREADRAW)
- {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Compression scheme does not support access to raw uncompressed data");
- return ((tsize_t) -1);
- }
- bytecount = td->td_stripbytecount[strip];
- if (bytecount <= 0) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%lu: Invalid strip byte count, strip %lu",
- (unsigned long) bytecount, (unsigned long) strip);
- return ((tsize_t) -1);
- }
- if (size != (tsize_t)-1 && (uint32)size < bytecount)
- bytecount = size;
- return (TIFFReadRawStrip1(tif, strip, buf, bytecount, module));
-}
-
-/*
- * Read the specified strip and setup for decoding. The data buffer is
- * expanded, as necessary, to hold the strip's data.
- */
-int
-TIFFFillStrip(TIFF* tif, tstrip_t strip)
-{
- static const char module[] = "TIFFFillStrip";
- TIFFDirectory *td = &tif->tif_dir;
-
- if ((tif->tif_flags&TIFF_NOREADRAW)==0)
- {
- /*
- * FIXME: butecount should have tsize_t type, but for now
- * libtiff defines tsize_t as a signed 32-bit integer and we
- * are losing ability to read arrays larger than 2^31 bytes.
- * So we are using uint32 instead of tsize_t here.
- */
- uint32 bytecount = td->td_stripbytecount[strip];
- if (bytecount <= 0) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Invalid strip byte count %lu, strip %lu",
- tif->tif_name, (unsigned long) bytecount,
- (unsigned long) strip);
- return (0);
- }
- if (isMapped(tif) &&
- (isFillOrder(tif, td->td_fillorder)
- || (tif->tif_flags & TIFF_NOBITREV))) {
- /*
- * The image is mapped into memory and we either don't
- * need to flip bits or the compression routine is
- * going to handle this operation itself. In this
- * case, avoid copying the raw data and instead just
- * reference the data from the memory mapped file
- * image. This assumes that the decompression
- * routines do not modify the contents of the raw data
- * buffer (if they try to, the application will get a
- * fault since the file is mapped read-only).
- */
- if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata)
- _TIFFfree(tif->tif_rawdata);
- tif->tif_flags &= ~TIFF_MYBUFFER;
- /*
- * We must check for overflow, potentially causing
- * an OOB read. Instead of simple
- *
- * td->td_stripoffset[strip]+bytecount > tif->tif_size
- *
- * comparison (which can overflow) we do the following
- * two comparisons:
- */
- if (bytecount > tif->tif_size ||
- td->td_stripoffset[strip] > tif->tif_size - bytecount) {
- /*
- * This error message might seem strange, but
- * it's what would happen if a read were done
- * instead.
- */
- TIFFErrorExt(tif->tif_clientdata, module,
-
- "%s: Read error on strip %lu; "
- "got %lu bytes, expected %lu",
- tif->tif_name, (unsigned long) strip,
- (unsigned long) tif->tif_size - td->td_stripoffset[strip],
- (unsigned long) bytecount);
- tif->tif_curstrip = NOSTRIP;
- return (0);
- }
- tif->tif_rawdatasize = bytecount;
- tif->tif_rawdata = tif->tif_base + td->td_stripoffset[strip];
- } else {
- /*
- * Expand raw data buffer, if needed, to hold data
- * strip coming from file (perhaps should set upper
- * bound on the size of a buffer we'll use?).
- */
- if (bytecount > (uint32)tif->tif_rawdatasize) {
- tif->tif_curstrip = NOSTRIP;
- if ((tif->tif_flags & TIFF_MYBUFFER) == 0) {
- TIFFErrorExt(tif->tif_clientdata,
- module,
- "%s: Data buffer too small to hold strip %lu",
- tif->tif_name,
- (unsigned long) strip);
- return (0);
- }
- if (!TIFFReadBufferSetup(tif, 0,
- TIFFroundup(bytecount, 1024)))
- return (0);
- }
- if ((uint32)TIFFReadRawStrip1(tif, strip,
- (unsigned char *)tif->tif_rawdata,
- bytecount, module) != bytecount)
- return (0);
- if (!isFillOrder(tif, td->td_fillorder) &&
- (tif->tif_flags & TIFF_NOBITREV) == 0)
- TIFFReverseBits(tif->tif_rawdata, bytecount);
- }
- }
- return (TIFFStartStrip(tif, strip));
-}
-
-/*
- * Tile-oriented Read Support
- * Contributed by Nancy Cam (Silicon Graphics).
- */
-
-/*
- * Read and decompress a tile of data. The
- * tile is selected by the (x,y,z,s) coordinates.
- */
-tsize_t
-TIFFReadTile(TIFF* tif,
- tdata_t buf, uint32 x, uint32 y, uint32 z, tsample_t s)
-{
- if (!TIFFCheckRead(tif, 1) || !TIFFCheckTile(tif, x, y, z, s))
- return (-1);
- return (TIFFReadEncodedTile(tif,
- TIFFComputeTile(tif, x, y, z, s), buf, (tsize_t) -1));
-}
-
-/*
- * Read a tile of data and decompress the specified
- * amount into the user-supplied buffer.
- */
-tsize_t
-TIFFReadEncodedTile(TIFF* tif, ttile_t tile, tdata_t buf, tsize_t size)
-{
- TIFFDirectory *td = &tif->tif_dir;
- tsize_t tilesize = tif->tif_tilesize;
-
- if (!TIFFCheckRead(tif, 1))
- return (-1);
- if (tile >= td->td_nstrips) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%ld: Tile out of range, max %ld",
- (long) tile, (unsigned long) td->td_nstrips);
- return (-1);
- }
- if (size == (tsize_t) -1)
- size = tilesize;
- else if (size > tilesize)
- size = tilesize;
- if (TIFFFillTile(tif, tile) && (*tif->tif_decodetile)(tif,
- (tidata_t) buf, size, (tsample_t)(tile/td->td_stripsperimage))) {
- (*tif->tif_postdecode)(tif, (tidata_t) buf, size);
- return (size);
- } else
- return (-1);
-}
-
-static tsize_t
-TIFFReadRawTile1(TIFF* tif,
- ttile_t tile, tdata_t buf, tsize_t size, const char* module)
-{
- TIFFDirectory *td = &tif->tif_dir;
-
- assert((tif->tif_flags&TIFF_NOREADRAW)==0);
- if (!isMapped(tif)) {
- tsize_t cc;
-
- if (!SeekOK(tif, td->td_stripoffset[tile])) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Seek error at row %ld, col %ld, tile %ld",
- tif->tif_name,
- (long) tif->tif_row,
- (long) tif->tif_col,
- (long) tile);
- return ((tsize_t) -1);
- }
- cc = TIFFReadFile(tif, buf, size);
- if (cc != size) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Read error at row %ld, col %ld; got %lu bytes, expected %lu",
- tif->tif_name,
- (long) tif->tif_row,
- (long) tif->tif_col,
- (unsigned long) cc,
- (unsigned long) size);
- return ((tsize_t) -1);
- }
- } else {
- if (td->td_stripoffset[tile] + size > tif->tif_size) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Read error at row %ld, col %ld, tile %ld; got %lu bytes, expected %lu",
- tif->tif_name,
- (long) tif->tif_row,
- (long) tif->tif_col,
- (long) tile,
- (unsigned long) tif->tif_size - td->td_stripoffset[tile],
- (unsigned long) size);
- return ((tsize_t) -1);
- }
- _TIFFmemcpy(buf, tif->tif_base + td->td_stripoffset[tile], size);
- }
- return (size);
-}
-
-/*
- * Read a tile of data from the file.
- */
-tsize_t
-TIFFReadRawTile(TIFF* tif, ttile_t tile, tdata_t buf, tsize_t size)
-{
- static const char module[] = "TIFFReadRawTile";
- TIFFDirectory *td = &tif->tif_dir;
- /*
- * FIXME: butecount should have tsize_t type, but for now libtiff
- * defines tsize_t as a signed 32-bit integer and we are losing
- * ability to read arrays larger than 2^31 bytes. So we are using
- * uint32 instead of tsize_t here.
- */
- uint32 bytecount;
-
- if (!TIFFCheckRead(tif, 1))
- return ((tsize_t) -1);
- if (tile >= td->td_nstrips) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%lu: Tile out of range, max %lu",
- (unsigned long) tile, (unsigned long) td->td_nstrips);
- return ((tsize_t) -1);
- }
- if (tif->tif_flags&TIFF_NOREADRAW)
- {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Compression scheme does not support access to raw uncompressed data");
- return ((tsize_t) -1);
- }
- bytecount = td->td_stripbytecount[tile];
- if (size != (tsize_t) -1 && (uint32)size < bytecount)
- bytecount = size;
- return (TIFFReadRawTile1(tif, tile, buf, bytecount, module));
-}
-
-/*
- * Read the specified tile and setup for decoding. The data buffer is
- * expanded, as necessary, to hold the tile's data.
- */
-int
-TIFFFillTile(TIFF* tif, ttile_t tile)
-{
- static const char module[] = "TIFFFillTile";
- TIFFDirectory *td = &tif->tif_dir;
-
- if ((tif->tif_flags&TIFF_NOREADRAW)==0)
- {
- /*
- * FIXME: butecount should have tsize_t type, but for now
- * libtiff defines tsize_t as a signed 32-bit integer and we
- * are losing ability to read arrays larger than 2^31 bytes.
- * So we are using uint32 instead of tsize_t here.
- */
- uint32 bytecount = td->td_stripbytecount[tile];
- if (bytecount <= 0) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%lu: Invalid tile byte count, tile %lu",
- (unsigned long) bytecount, (unsigned long) tile);
- return (0);
- }
- if (isMapped(tif) &&
- (isFillOrder(tif, td->td_fillorder)
- || (tif->tif_flags & TIFF_NOBITREV))) {
- /*
- * The image is mapped into memory and we either don't
- * need to flip bits or the compression routine is
- * going to handle this operation itself. In this
- * case, avoid copying the raw data and instead just
- * reference the data from the memory mapped file
- * image. This assumes that the decompression
- * routines do not modify the contents of the raw data
- * buffer (if they try to, the application will get a
- * fault since the file is mapped read-only).
- */
- if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata)
- _TIFFfree(tif->tif_rawdata);
- tif->tif_flags &= ~TIFF_MYBUFFER;
- /*
- * We must check for overflow, potentially causing
- * an OOB read. Instead of simple
- *
- * td->td_stripoffset[tile]+bytecount > tif->tif_size
- *
- * comparison (which can overflow) we do the following
- * two comparisons:
- */
- if (bytecount > tif->tif_size ||
- td->td_stripoffset[tile] > tif->tif_size - bytecount) {
- tif->tif_curtile = NOTILE;
- return (0);
- }
- tif->tif_rawdatasize = bytecount;
- tif->tif_rawdata =
- tif->tif_base + td->td_stripoffset[tile];
- } else {
- /*
- * Expand raw data buffer, if needed, to hold data
- * tile coming from file (perhaps should set upper
- * bound on the size of a buffer we'll use?).
- */
- if (bytecount > (uint32)tif->tif_rawdatasize) {
- tif->tif_curtile = NOTILE;
- if ((tif->tif_flags & TIFF_MYBUFFER) == 0) {
- TIFFErrorExt(tif->tif_clientdata,
- module,
- "%s: Data buffer too small to hold tile %ld",
- tif->tif_name,
- (long) tile);
- return (0);
- }
- if (!TIFFReadBufferSetup(tif, 0,
- TIFFroundup(bytecount, 1024)))
- return (0);
- }
- if ((uint32)TIFFReadRawTile1(tif, tile,
- (unsigned char *)tif->tif_rawdata,
- bytecount, module) != bytecount)
- return (0);
- if (!isFillOrder(tif, td->td_fillorder) &&
- (tif->tif_flags & TIFF_NOBITREV) == 0)
- TIFFReverseBits(tif->tif_rawdata, bytecount);
- }
- }
- return (TIFFStartTile(tif, tile));
-}
-
-/*
- * Setup the raw data buffer in preparation for
- * reading a strip of raw data. If the buffer
- * is specified as zero, then a buffer of appropriate
- * size is allocated by the library. Otherwise,
- * the client must guarantee that the buffer is
- * large enough to hold any individual strip of
- * raw data.
- */
-int
-TIFFReadBufferSetup(TIFF* tif, tdata_t bp, tsize_t size)
-{
- static const char module[] = "TIFFReadBufferSetup";
-
- assert((tif->tif_flags&TIFF_NOREADRAW)==0);
- if (tif->tif_rawdata) {
- if (tif->tif_flags & TIFF_MYBUFFER)
- _TIFFfree(tif->tif_rawdata);
- tif->tif_rawdata = NULL;
- }
- if (bp) {
- tif->tif_rawdatasize = size;
- tif->tif_rawdata = (tidata_t) bp;
- tif->tif_flags &= ~TIFF_MYBUFFER;
- } else {
- tif->tif_rawdatasize = TIFFroundup(size, 1024);
- tif->tif_rawdata = (tidata_t) _TIFFmalloc(tif->tif_rawdatasize);
- tif->tif_flags |= TIFF_MYBUFFER;
- }
- if (tif->tif_rawdata == NULL) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: No space for data buffer at scanline %ld",
- tif->tif_name, (long) tif->tif_row);
- tif->tif_rawdatasize = 0;
- return (0);
- }
- return (1);
-}
-
-/*
- * Set state to appear as if a
- * strip has just been read in.
- */
-static int
-TIFFStartStrip(TIFF* tif, tstrip_t strip)
-{
- TIFFDirectory *td = &tif->tif_dir;
-
- if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
- if (!(*tif->tif_setupdecode)(tif))
- return (0);
- tif->tif_flags |= TIFF_CODERSETUP;
- }
- tif->tif_curstrip = strip;
- tif->tif_row = (strip % td->td_stripsperimage) * td->td_rowsperstrip;
- if (tif->tif_flags&TIFF_NOREADRAW)
- {
- tif->tif_rawcp = NULL;
- tif->tif_rawcc = 0;
- }
- else
- {
- tif->tif_rawcp = tif->tif_rawdata;
- tif->tif_rawcc = td->td_stripbytecount[strip];
- }
- return ((*tif->tif_predecode)(tif,
- (tsample_t)(strip / td->td_stripsperimage)));
-}
-
-/*
- * Set state to appear as if a
- * tile has just been read in.
- */
-static int
-TIFFStartTile(TIFF* tif, ttile_t tile)
-{
- TIFFDirectory *td = &tif->tif_dir;
-
- if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
- if (!(*tif->tif_setupdecode)(tif))
- return (0);
- tif->tif_flags |= TIFF_CODERSETUP;
- }
- tif->tif_curtile = tile;
- tif->tif_row =
- (tile % TIFFhowmany(td->td_imagewidth, td->td_tilewidth)) *
- td->td_tilelength;
- tif->tif_col =
- (tile % TIFFhowmany(td->td_imagelength, td->td_tilelength)) *
- td->td_tilewidth;
- if (tif->tif_flags&TIFF_NOREADRAW)
- {
- tif->tif_rawcp = NULL;
- tif->tif_rawcc = 0;
- }
- else
- {
- tif->tif_rawcp = tif->tif_rawdata;
- tif->tif_rawcc = td->td_stripbytecount[tile];
- }
- return ((*tif->tif_predecode)(tif,
- (tsample_t)(tile/td->td_stripsperimage)));
-}
-
-static int
-TIFFCheckRead(TIFF* tif, int tiles)
-{
- if (tif->tif_mode == O_WRONLY) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "File not open for reading");
- return (0);
- }
- if (tiles ^ isTiled(tif)) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name, tiles ?
- "Can not read tiles from a stripped image" :
- "Can not read scanlines from a tiled image");
- return (0);
- }
- return (1);
-}
-
-void
-_TIFFNoPostDecode(TIFF* tif, tidata_t buf, tsize_t cc)
-{
- (void) tif; (void) buf; (void) cc;
-}
-
-void
-_TIFFSwab16BitData(TIFF* tif, tidata_t buf, tsize_t cc)
-{
- (void) tif;
- assert((cc & 1) == 0);
- TIFFSwabArrayOfShort((uint16*) buf, cc/2);
-}
-
-void
-_TIFFSwab24BitData(TIFF* tif, tidata_t buf, tsize_t cc)
-{
- (void) tif;
- assert((cc % 3) == 0);
- TIFFSwabArrayOfTriples((uint8*) buf, cc/3);
-}
-
-void
-_TIFFSwab32BitData(TIFF* tif, tidata_t buf, tsize_t cc)
-{
- (void) tif;
- assert((cc & 3) == 0);
- TIFFSwabArrayOfLong((uint32*) buf, cc/4);
-}
-
-void
-_TIFFSwab64BitData(TIFF* tif, tidata_t buf, tsize_t cc)
-{
- (void) tif;
- assert((cc & 7) == 0);
- TIFFSwabArrayOfDouble((double*) buf, cc/8);
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_stream.cxx b/src/3rdparty/libtiff/libtiff/tif_stream.cxx
deleted file mode 100644
index 2a2351b2ba..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_stream.cxx
+++ /dev/null
@@ -1,295 +0,0 @@
-/* $Id: tif_stream.cxx,v 1.6.2.1 2009-01-01 00:10:43 bfriesen Exp $ */
-
-/*
- * Copyright (c) 1988-1996 Sam Leffler
- * Copyright (c) 1991-1996 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library UNIX-specific Routines.
- */
-#include "tiffiop.h"
-#include <iostream>
-
-#ifndef __VMS
-using namespace std;
-#endif
-
-class tiffis_data
-{
- public:
-
- istream *myIS;
- long myStreamStartPos;
-};
-
-class tiffos_data
-{
- public:
-
- ostream *myOS;
- long myStreamStartPos;
-};
-
-static tsize_t
-_tiffosReadProc(thandle_t, tdata_t, tsize_t)
-{
- return 0;
-}
-
-static tsize_t
-_tiffisReadProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
- tiffis_data *data = (tiffis_data *)fd;
-
- data->myIS->read((char *)buf, (int)size);
-
- return data->myIS->gcount();
-}
-
-static tsize_t
-_tiffosWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
- tiffos_data *data = (tiffos_data *)fd;
- ostream *os = data->myOS;
- int pos = os->tellp();
-
- os->write((const char *)buf, size);
-
- return ((int)os->tellp()) - pos;
-}
-
-static tsize_t
-_tiffisWriteProc(thandle_t, tdata_t, tsize_t)
-{
- return 0;
-}
-
-static toff_t
-_tiffosSeekProc(thandle_t fd, toff_t off, int whence)
-{
- tiffos_data *data = (tiffos_data *)fd;
- ostream *os = data->myOS;
-
- // if the stream has already failed, don't do anything
- if( os->fail() )
- return os->tellp();
-
- switch(whence) {
- case SEEK_SET:
- os->seekp(data->myStreamStartPos + off, ios::beg);
- break;
- case SEEK_CUR:
- os->seekp(off, ios::cur);
- break;
- case SEEK_END:
- os->seekp(off, ios::end);
- break;
- }
-
- // Attempt to workaround problems with seeking past the end of the
- // stream. ofstream doesn't have a problem with this but
- // ostrstream/ostringstream does. In that situation, add intermediate
- // '\0' characters.
- if( os->fail() ) {
-#ifdef __VMS
- int old_state;
-#else
- ios::iostate old_state;
-#endif
- toff_t origin=0;
-
- old_state = os->rdstate();
- // reset the fail bit or else tellp() won't work below
- os->clear(os->rdstate() & ~ios::failbit);
- switch( whence ) {
- case SEEK_SET:
- origin = data->myStreamStartPos;
- break;
- case SEEK_CUR:
- origin = os->tellp();
- break;
- case SEEK_END:
- os->seekp(0, ios::end);
- origin = os->tellp();
- break;
- }
- // restore original stream state
- os->clear(old_state);
-
- // only do something if desired seek position is valid
- if( origin + off > data->myStreamStartPos ) {
- toff_t num_fill;
-
- // clear the fail bit
- os->clear(os->rdstate() & ~ios::failbit);
-
- // extend the stream to the expected size
- os->seekp(0, ios::end);
- num_fill = origin + off - (toff_t)os->tellp();
- for( toff_t i = 0; i < num_fill; i++ )
- os->put('\0');
-
- // retry the seek
- os->seekp(origin + off, ios::beg);
- }
- }
-
- return os->tellp();
-}
-
-static toff_t
-_tiffisSeekProc(thandle_t fd, toff_t off, int whence)
-{
- tiffis_data *data = (tiffis_data *)fd;
-
- switch(whence) {
- case SEEK_SET:
- data->myIS->seekg(data->myStreamStartPos + off, ios::beg);
- break;
- case SEEK_CUR:
- data->myIS->seekg(off, ios::cur);
- break;
- case SEEK_END:
- data->myIS->seekg(off, ios::end);
- break;
- }
-
- return ((long)data->myIS->tellg()) - data->myStreamStartPos;
-}
-
-static toff_t
-_tiffosSizeProc(thandle_t fd)
-{
- tiffos_data *data = (tiffos_data *)fd;
- ostream *os = data->myOS;
- toff_t pos = os->tellp();
- toff_t len;
-
- os->seekp(0, ios::end);
- len = os->tellp();
- os->seekp(pos);
-
- return len;
-}
-
-static toff_t
-_tiffisSizeProc(thandle_t fd)
-{
- tiffis_data *data = (tiffis_data *)fd;
- int pos = data->myIS->tellg();
- int len;
-
- data->myIS->seekg(0, ios::end);
- len = data->myIS->tellg();
- data->myIS->seekg(pos);
-
- return len;
-}
-
-static int
-_tiffosCloseProc(thandle_t fd)
-{
- // Our stream was not allocated by us, so it shouldn't be closed by us.
- delete (tiffos_data *)fd;
- return 0;
-}
-
-static int
-_tiffisCloseProc(thandle_t fd)
-{
- // Our stream was not allocated by us, so it shouldn't be closed by us.
- delete (tiffis_data *)fd;
- return 0;
-}
-
-static int
-_tiffDummyMapProc(thandle_t , tdata_t* , toff_t* )
-{
- return (0);
-}
-
-static void
-_tiffDummyUnmapProc(thandle_t , tdata_t , toff_t )
-{
-}
-
-/*
- * Open a TIFF file descriptor for read/writing.
- */
-static TIFF*
-_tiffStreamOpen(const char* name, const char* mode, void *fd)
-{
- TIFF* tif;
-
- if( strchr(mode, 'w') ) {
- tiffos_data *data = new tiffos_data;
- data->myOS = (ostream *)fd;
- data->myStreamStartPos = data->myOS->tellp();
-
- // Open for writing.
- tif = TIFFClientOpen(name, mode,
- (thandle_t) data,
- _tiffosReadProc, _tiffosWriteProc,
- _tiffosSeekProc, _tiffosCloseProc,
- _tiffosSizeProc,
- _tiffDummyMapProc, _tiffDummyUnmapProc);
- } else {
- tiffis_data *data = new tiffis_data;
- data->myIS = (istream *)fd;
- data->myStreamStartPos = data->myIS->tellg();
- // Open for reading.
- tif = TIFFClientOpen(name, mode,
- (thandle_t) data,
- _tiffisReadProc, _tiffisWriteProc,
- _tiffisSeekProc, _tiffisCloseProc,
- _tiffisSizeProc,
- _tiffDummyMapProc, _tiffDummyUnmapProc);
- }
-
- return (tif);
-}
-
-TIFF*
-TIFFStreamOpen(const char* name, ostream *os)
-{
- // If os is either a ostrstream or ostringstream, and has no data
- // written to it yet, then tellp() will return -1 which will break us.
- // We workaround this by writing out a dummy character and
- // then seek back to the beginning.
- if( !os->fail() && (int)os->tellp() < 0 ) {
- *os << '\0';
- os->seekp(0);
- }
-
- // NB: We don't support mapped files with streams so add 'm'
- return _tiffStreamOpen(name, "wm", os);
-}
-
-TIFF*
-TIFFStreamOpen(const char* name, istream *is)
-{
- // NB: We don't support mapped files with streams so add 'm'
- return _tiffStreamOpen(name, "rm", is);
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_strip.c b/src/3rdparty/libtiff/libtiff/tif_strip.c
deleted file mode 100644
index 962d3fa7bc..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_strip.c
+++ /dev/null
@@ -1,363 +0,0 @@
-/* $Id: tif_strip.c,v 1.19 2006/03/25 18:04:35 joris Exp $ */
-
-/*
- * Copyright (c) 1991-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- *
- * Strip-organized Image Support Routines.
- */
-#include "tiffiop.h"
-
-static uint32
-summarize(TIFF* tif, size_t summand1, size_t summand2, const char* where)
-{
- /*
- * XXX: We are using casting to uint32 here, bacause sizeof(size_t)
- * may be larger than sizeof(uint32) on 64-bit architectures.
- */
- uint32 bytes = summand1 + summand2;
-
- if (bytes - summand1 != summand2) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Integer overflow in %s", where);
- bytes = 0;
- }
-
- return (bytes);
-}
-
-static uint32
-multiply(TIFF* tif, size_t nmemb, size_t elem_size, const char* where)
-{
- uint32 bytes = nmemb * elem_size;
-
- if (elem_size && bytes / elem_size != nmemb) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Integer overflow in %s", where);
- bytes = 0;
- }
-
- return (bytes);
-}
-
-/*
- * Compute which strip a (row,sample) value is in.
- */
-tstrip_t
-TIFFComputeStrip(TIFF* tif, uint32 row, tsample_t sample)
-{
- TIFFDirectory *td = &tif->tif_dir;
- tstrip_t strip;
-
- strip = row / td->td_rowsperstrip;
- if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
- if (sample >= td->td_samplesperpixel) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%lu: Sample out of range, max %lu",
- (unsigned long) sample, (unsigned long) td->td_samplesperpixel);
- return ((tstrip_t) 0);
- }
- strip += sample*td->td_stripsperimage;
- }
- return (strip);
-}
-
-/*
- * Compute how many strips are in an image.
- */
-tstrip_t
-TIFFNumberOfStrips(TIFF* tif)
-{
- TIFFDirectory *td = &tif->tif_dir;
- tstrip_t nstrips;
-
- nstrips = (td->td_rowsperstrip == (uint32) -1 ? 1 :
- TIFFhowmany(td->td_imagelength, td->td_rowsperstrip));
- if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
- nstrips = multiply(tif, nstrips, td->td_samplesperpixel,
- "TIFFNumberOfStrips");
- return (nstrips);
-}
-
-/*
- * Compute the # bytes in a variable height, row-aligned strip.
- */
-tsize_t
-TIFFVStripSize(TIFF* tif, uint32 nrows)
-{
- TIFFDirectory *td = &tif->tif_dir;
-
- if (nrows == (uint32) -1)
- nrows = td->td_imagelength;
- if (td->td_planarconfig == PLANARCONFIG_CONTIG &&
- td->td_photometric == PHOTOMETRIC_YCBCR &&
- !isUpSampled(tif)) {
- /*
- * Packed YCbCr data contain one Cb+Cr for every
- * HorizontalSampling*VerticalSampling Y values.
- * Must also roundup width and height when calculating
- * since images that are not a multiple of the
- * horizontal/vertical subsampling area include
- * YCbCr data for the extended image.
- */
- uint16 ycbcrsubsampling[2];
- tsize_t w, scanline, samplingarea;
-
- TIFFGetField( tif, TIFFTAG_YCBCRSUBSAMPLING,
- ycbcrsubsampling + 0,
- ycbcrsubsampling + 1 );
-
- samplingarea = ycbcrsubsampling[0]*ycbcrsubsampling[1];
- if (samplingarea == 0) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Invalid YCbCr subsampling");
- return 0;
- }
-
- w = TIFFroundup(td->td_imagewidth, ycbcrsubsampling[0]);
- scanline = TIFFhowmany8(multiply(tif, w, td->td_bitspersample,
- "TIFFVStripSize"));
- nrows = TIFFroundup(nrows, ycbcrsubsampling[1]);
- /* NB: don't need TIFFhowmany here 'cuz everything is rounded */
- scanline = multiply(tif, nrows, scanline, "TIFFVStripSize");
- return ((tsize_t)
- summarize(tif, scanline,
- multiply(tif, 2, scanline / samplingarea,
- "TIFFVStripSize"), "TIFFVStripSize"));
- } else
- return ((tsize_t) multiply(tif, nrows, TIFFScanlineSize(tif),
- "TIFFVStripSize"));
-}
-
-
-/*
- * Compute the # bytes in a raw strip.
- */
-tsize_t
-TIFFRawStripSize(TIFF* tif, tstrip_t strip)
-{
- TIFFDirectory* td = &tif->tif_dir;
- tsize_t bytecount = td->td_stripbytecount[strip];
-
- if (bytecount <= 0) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%lu: Invalid strip byte count, strip %lu",
- (unsigned long) bytecount, (unsigned long) strip);
- bytecount = (tsize_t) -1;
- }
-
- return bytecount;
-}
-
-/*
- * Compute the # bytes in a (row-aligned) strip.
- *
- * Note that if RowsPerStrip is larger than the
- * recorded ImageLength, then the strip size is
- * truncated to reflect the actual space required
- * to hold the strip.
- */
-tsize_t
-TIFFStripSize(TIFF* tif)
-{
- TIFFDirectory* td = &tif->tif_dir;
- uint32 rps = td->td_rowsperstrip;
- if (rps > td->td_imagelength)
- rps = td->td_imagelength;
- return (TIFFVStripSize(tif, rps));
-}
-
-/*
- * Compute a default strip size based on the image
- * characteristics and a requested value. If the
- * request is <1 then we choose a strip size according
- * to certain heuristics.
- */
-uint32
-TIFFDefaultStripSize(TIFF* tif, uint32 request)
-{
- return (*tif->tif_defstripsize)(tif, request);
-}
-
-uint32
-_TIFFDefaultStripSize(TIFF* tif, uint32 s)
-{
- if ((int32) s < 1) {
- /*
- * If RowsPerStrip is unspecified, try to break the
- * image up into strips that are approximately
- * STRIP_SIZE_DEFAULT bytes long.
- */
- tsize_t scanline = TIFFScanlineSize(tif);
- s = (uint32)STRIP_SIZE_DEFAULT / (scanline == 0 ? 1 : scanline);
- if (s == 0) /* very wide images */
- s = 1;
- }
- return (s);
-}
-
-/*
- * Return the number of bytes to read/write in a call to
- * one of the scanline-oriented i/o routines. Note that
- * this number may be 1/samples-per-pixel if data is
- * stored as separate planes.
- */
-tsize_t
-TIFFScanlineSize(TIFF* tif)
-{
- TIFFDirectory *td = &tif->tif_dir;
- tsize_t scanline;
-
- if (td->td_planarconfig == PLANARCONFIG_CONTIG) {
- if (td->td_photometric == PHOTOMETRIC_YCBCR
- && !isUpSampled(tif)) {
- uint16 ycbcrsubsampling[2];
-
- TIFFGetField(tif, TIFFTAG_YCBCRSUBSAMPLING,
- ycbcrsubsampling + 0,
- ycbcrsubsampling + 1);
-
- if (ycbcrsubsampling[0] == 0) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Invalid YCbCr subsampling");
- return 0;
- }
-
- scanline = TIFFroundup(td->td_imagewidth,
- ycbcrsubsampling[0]);
- scanline = TIFFhowmany8(multiply(tif, scanline,
- td->td_bitspersample,
- "TIFFScanlineSize"));
- return ((tsize_t)
- summarize(tif, scanline,
- multiply(tif, 2,
- scanline / ycbcrsubsampling[0],
- "TIFFVStripSize"),
- "TIFFVStripSize"));
- } else {
- scanline = multiply(tif, td->td_imagewidth,
- td->td_samplesperpixel,
- "TIFFScanlineSize");
- }
- } else
- scanline = td->td_imagewidth;
- return ((tsize_t) TIFFhowmany8(multiply(tif, scanline,
- td->td_bitspersample,
- "TIFFScanlineSize")));
-}
-
-/*
- * Some stuff depends on this older version of TIFFScanlineSize
- * TODO: resolve this
- */
-tsize_t
-TIFFOldScanlineSize(TIFF* tif)
-{
- TIFFDirectory *td = &tif->tif_dir;
- tsize_t scanline;
-
- scanline = multiply (tif, td->td_bitspersample, td->td_imagewidth,
- "TIFFScanlineSize");
- if (td->td_planarconfig == PLANARCONFIG_CONTIG)
- scanline = multiply (tif, scanline, td->td_samplesperpixel,
- "TIFFScanlineSize");
- return ((tsize_t) TIFFhowmany8(scanline));
-}
-
-/*
- * Return the number of bytes to read/write in a call to
- * one of the scanline-oriented i/o routines. Note that
- * this number may be 1/samples-per-pixel if data is
- * stored as separate planes.
- * The ScanlineSize in case of YCbCrSubsampling is defined as the
- * strip size divided by the strip height, i.e. the size of a pack of vertical
- * subsampling lines divided by vertical subsampling. It should thus make
- * sense when multiplied by a multiple of vertical subsampling.
- * Some stuff depends on this newer version of TIFFScanlineSize
- * TODO: resolve this
- */
-tsize_t
-TIFFNewScanlineSize(TIFF* tif)
-{
- TIFFDirectory *td = &tif->tif_dir;
- tsize_t scanline;
-
- if (td->td_planarconfig == PLANARCONFIG_CONTIG) {
- if (td->td_photometric == PHOTOMETRIC_YCBCR
- && !isUpSampled(tif)) {
- uint16 ycbcrsubsampling[2];
-
- TIFFGetField(tif, TIFFTAG_YCBCRSUBSAMPLING,
- ycbcrsubsampling + 0,
- ycbcrsubsampling + 1);
-
- if (ycbcrsubsampling[0]*ycbcrsubsampling[1] == 0) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Invalid YCbCr subsampling");
- return 0;
- }
-
- return((tsize_t) ((((td->td_imagewidth+ycbcrsubsampling[0]-1)
- /ycbcrsubsampling[0])
- *(ycbcrsubsampling[0]*ycbcrsubsampling[1]+2)
- *td->td_bitspersample+7)
- /8)/ycbcrsubsampling[1]);
-
- } else {
- scanline = multiply(tif, td->td_imagewidth,
- td->td_samplesperpixel,
- "TIFFScanlineSize");
- }
- } else
- scanline = td->td_imagewidth;
- return ((tsize_t) TIFFhowmany8(multiply(tif, scanline,
- td->td_bitspersample,
- "TIFFScanlineSize")));
-}
-
-/*
- * Return the number of bytes required to store a complete
- * decoded and packed raster scanline (as opposed to the
- * I/O size returned by TIFFScanlineSize which may be less
- * if data is store as separate planes).
- */
-tsize_t
-TIFFRasterScanlineSize(TIFF* tif)
-{
- TIFFDirectory *td = &tif->tif_dir;
- tsize_t scanline;
-
- scanline = multiply (tif, td->td_bitspersample, td->td_imagewidth,
- "TIFFRasterScanlineSize");
- if (td->td_planarconfig == PLANARCONFIG_CONTIG) {
- scanline = multiply (tif, scanline, td->td_samplesperpixel,
- "TIFFRasterScanlineSize");
- return ((tsize_t) TIFFhowmany8(scanline));
- } else
- return ((tsize_t) multiply (tif, TIFFhowmany8(scanline),
- td->td_samplesperpixel,
- "TIFFRasterScanlineSize"));
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_swab.c b/src/3rdparty/libtiff/libtiff/tif_swab.c
deleted file mode 100644
index 97cc88825c..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_swab.c
+++ /dev/null
@@ -1,235 +0,0 @@
-/* $Id: tif_swab.c,v 1.4 2005/04/13 14:06:21 dron Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library Bit & Byte Swapping Support.
- *
- * XXX We assume short = 16-bits and long = 32-bits XXX
- */
-#include "tiffiop.h"
-
-#ifndef TIFFSwabShort
-void
-TIFFSwabShort(uint16* wp)
-{
- register unsigned char* cp = (unsigned char*) wp;
- unsigned char t;
-
- t = cp[1]; cp[1] = cp[0]; cp[0] = t;
-}
-#endif
-
-#ifndef TIFFSwabLong
-void
-TIFFSwabLong(uint32* lp)
-{
- register unsigned char* cp = (unsigned char*) lp;
- unsigned char t;
-
- t = cp[3]; cp[3] = cp[0]; cp[0] = t;
- t = cp[2]; cp[2] = cp[1]; cp[1] = t;
-}
-#endif
-
-#ifndef TIFFSwabArrayOfShort
-void
-TIFFSwabArrayOfShort(uint16* wp, register unsigned long n)
-{
- register unsigned char* cp;
- register unsigned char t;
-
- /* XXX unroll loop some */
- while (n-- > 0) {
- cp = (unsigned char*) wp;
- t = cp[1]; cp[1] = cp[0]; cp[0] = t;
- wp++;
- }
-}
-#endif
-
-#ifndef TIFFSwabArrayOfTriples
-void
-TIFFSwabArrayOfTriples(uint8* tp, unsigned long n)
-{
- unsigned char* cp;
- unsigned char t;
-
- /* XXX unroll loop some */
- while (n-- > 0) {
- cp = (unsigned char*) tp;
- t = cp[2]; cp[2] = cp[0]; cp[0] = t;
- tp += 3;
- }
-}
-#endif
-
-#ifndef TIFFSwabArrayOfLong
-void
-TIFFSwabArrayOfLong(register uint32* lp, register unsigned long n)
-{
- register unsigned char *cp;
- register unsigned char t;
-
- /* XXX unroll loop some */
- while (n-- > 0) {
- cp = (unsigned char *)lp;
- t = cp[3]; cp[3] = cp[0]; cp[0] = t;
- t = cp[2]; cp[2] = cp[1]; cp[1] = t;
- lp++;
- }
-}
-#endif
-
-#ifndef TIFFSwabDouble
-void
-TIFFSwabDouble(double *dp)
-{
- register uint32* lp = (uint32*) dp;
- uint32 t;
-
- TIFFSwabArrayOfLong(lp, 2);
- t = lp[0]; lp[0] = lp[1]; lp[1] = t;
-}
-#endif
-
-#ifndef TIFFSwabArrayOfDouble
-void
-TIFFSwabArrayOfDouble(double* dp, register unsigned long n)
-{
- register uint32* lp = (uint32*) dp;
- register uint32 t;
-
- TIFFSwabArrayOfLong(lp, n + n);
- while (n-- > 0) {
- t = lp[0]; lp[0] = lp[1]; lp[1] = t;
- lp += 2;
- }
-}
-#endif
-
-/*
- * Bit reversal tables. TIFFBitRevTable[<byte>] gives
- * the bit reversed value of <byte>. Used in various
- * places in the library when the FillOrder requires
- * bit reversal of byte values (e.g. CCITT Fax 3
- * encoding/decoding). TIFFNoBitRevTable is provided
- * for algorithms that want an equivalent table that
- * do not reverse bit values.
- */
-static const unsigned char TIFFBitRevTable[256] = {
- 0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
- 0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
- 0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
- 0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
- 0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
- 0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
- 0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
- 0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
- 0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
- 0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
- 0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
- 0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
- 0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
- 0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
- 0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
- 0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
- 0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
- 0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
- 0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
- 0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
- 0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
- 0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
- 0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
- 0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
- 0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
- 0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
- 0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
- 0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
- 0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
- 0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
- 0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
- 0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
-};
-static const unsigned char TIFFNoBitRevTable[256] = {
- 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
- 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
- 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
- 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
- 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
- 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
- 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
- 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
- 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
- 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
- 0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
- 0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
- 0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
- 0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
- 0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
- 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
- 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
- 0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
- 0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
- 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
- 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
- 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
- 0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
- 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
- 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
- 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
- 0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
- 0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
- 0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
- 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
- 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
-};
-
-const unsigned char*
-TIFFGetBitRevTable(int reversed)
-{
- return (reversed ? TIFFBitRevTable : TIFFNoBitRevTable);
-}
-
-void
-TIFFReverseBits(register unsigned char* cp, register unsigned long n)
-{
- for (; n > 8; n -= 8) {
- cp[0] = TIFFBitRevTable[cp[0]];
- cp[1] = TIFFBitRevTable[cp[1]];
- cp[2] = TIFFBitRevTable[cp[2]];
- cp[3] = TIFFBitRevTable[cp[3]];
- cp[4] = TIFFBitRevTable[cp[4]];
- cp[5] = TIFFBitRevTable[cp[5]];
- cp[6] = TIFFBitRevTable[cp[6]];
- cp[7] = TIFFBitRevTable[cp[7]];
- cp += 8;
- }
- while (n-- > 0)
- *cp = TIFFBitRevTable[*cp], cp++;
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_thunder.c b/src/3rdparty/libtiff/libtiff/tif_thunder.c
deleted file mode 100644
index 94496eccb1..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_thunder.c
+++ /dev/null
@@ -1,158 +0,0 @@
-/* $Id: tif_thunder.c,v 1.5 2005/12/21 12:23:13 joris Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#include "tiffiop.h"
-#ifdef THUNDER_SUPPORT
-/*
- * TIFF Library.
- *
- * ThunderScan 4-bit Compression Algorithm Support
- */
-
-/*
- * ThunderScan uses an encoding scheme designed for
- * 4-bit pixel values. Data is encoded in bytes, with
- * each byte split into a 2-bit code word and a 6-bit
- * data value. The encoding gives raw data, runs of
- * pixels, or pixel values encoded as a delta from the
- * previous pixel value. For the latter, either 2-bit
- * or 3-bit delta values are used, with the deltas packed
- * into a single byte.
- */
-#define THUNDER_DATA 0x3f /* mask for 6-bit data */
-#define THUNDER_CODE 0xc0 /* mask for 2-bit code word */
-/* code values */
-#define THUNDER_RUN 0x00 /* run of pixels w/ encoded count */
-#define THUNDER_2BITDELTAS 0x40 /* 3 pixels w/ encoded 2-bit deltas */
-#define DELTA2_SKIP 2 /* skip code for 2-bit deltas */
-#define THUNDER_3BITDELTAS 0x80 /* 2 pixels w/ encoded 3-bit deltas */
-#define DELTA3_SKIP 4 /* skip code for 3-bit deltas */
-#define THUNDER_RAW 0xc0 /* raw data encoded */
-
-static const int twobitdeltas[4] = { 0, 1, 0, -1 };
-static const int threebitdeltas[8] = { 0, 1, 2, 3, 0, -3, -2, -1 };
-
-#define SETPIXEL(op, v) { \
- lastpixel = (v) & 0xf; \
- if (npixels++ & 1) \
- *op++ |= lastpixel; \
- else \
- op[0] = (tidataval_t) (lastpixel << 4); \
-}
-
-static int
-ThunderDecode(TIFF* tif, tidata_t op, tsize_t maxpixels)
-{
- register unsigned char *bp;
- register tsize_t cc;
- unsigned int lastpixel;
- tsize_t npixels;
-
- bp = (unsigned char *)tif->tif_rawcp;
- cc = tif->tif_rawcc;
- lastpixel = 0;
- npixels = 0;
- while (cc > 0 && npixels < maxpixels) {
- int n, delta;
-
- n = *bp++, cc--;
- switch (n & THUNDER_CODE) {
- case THUNDER_RUN: /* pixel run */
- /*
- * Replicate the last pixel n times,
- * where n is the lower-order 6 bits.
- */
- if (npixels & 1) {
- op[0] |= lastpixel;
- lastpixel = *op++; npixels++; n--;
- } else
- lastpixel |= lastpixel << 4;
- npixels += n;
- if (npixels < maxpixels) {
- for (; n > 0; n -= 2)
- *op++ = (tidataval_t) lastpixel;
- }
- if (n == -1)
- *--op &= 0xf0;
- lastpixel &= 0xf;
- break;
- case THUNDER_2BITDELTAS: /* 2-bit deltas */
- if ((delta = ((n >> 4) & 3)) != DELTA2_SKIP)
- SETPIXEL(op, lastpixel + twobitdeltas[delta]);
- if ((delta = ((n >> 2) & 3)) != DELTA2_SKIP)
- SETPIXEL(op, lastpixel + twobitdeltas[delta]);
- if ((delta = (n & 3)) != DELTA2_SKIP)
- SETPIXEL(op, lastpixel + twobitdeltas[delta]);
- break;
- case THUNDER_3BITDELTAS: /* 3-bit deltas */
- if ((delta = ((n >> 3) & 7)) != DELTA3_SKIP)
- SETPIXEL(op, lastpixel + threebitdeltas[delta]);
- if ((delta = (n & 7)) != DELTA3_SKIP)
- SETPIXEL(op, lastpixel + threebitdeltas[delta]);
- break;
- case THUNDER_RAW: /* raw data */
- SETPIXEL(op, n);
- break;
- }
- }
- tif->tif_rawcp = (tidata_t) bp;
- tif->tif_rawcc = cc;
- if (npixels != maxpixels) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "ThunderDecode: %s data at scanline %ld (%lu != %lu)",
- npixels < maxpixels ? "Not enough" : "Too much",
- (long) tif->tif_row, (long) npixels, (long) maxpixels);
- return (0);
- }
- return (1);
-}
-
-static int
-ThunderDecodeRow(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
-{
- tidata_t row = buf;
-
- (void) s;
- while ((long)occ > 0) {
- if (!ThunderDecode(tif, row, tif->tif_dir.td_imagewidth))
- return (0);
- occ -= tif->tif_scanlinesize;
- row += tif->tif_scanlinesize;
- }
- return (1);
-}
-
-int
-TIFFInitThunderScan(TIFF* tif, int scheme)
-{
- (void) scheme;
- tif->tif_decoderow = ThunderDecodeRow;
- tif->tif_decodestrip = ThunderDecodeRow;
- return (1);
-}
-#endif /* THUNDER_SUPPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_tile.c b/src/3rdparty/libtiff/libtiff/tif_tile.c
deleted file mode 100644
index 454fe5cd24..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_tile.c
+++ /dev/null
@@ -1,273 +0,0 @@
-/* $Id: tif_tile.c,v 1.12 2006/02/09 16:15:43 dron Exp $ */
-
-/*
- * Copyright (c) 1991-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- *
- * Tiled Image Support Routines.
- */
-#include "tiffiop.h"
-
-static uint32
-summarize(TIFF* tif, size_t summand1, size_t summand2, const char* where)
-{
- /*
- * XXX: We are using casting to uint32 here, because sizeof(size_t)
- * may be larger than sizeof(uint32) on 64-bit architectures.
- */
- uint32 bytes = summand1 + summand2;
-
- if (bytes - summand1 != summand2) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Integer overflow in %s", where);
- bytes = 0;
- }
-
- return (bytes);
-}
-
-static uint32
-multiply(TIFF* tif, size_t nmemb, size_t elem_size, const char* where)
-{
- uint32 bytes = nmemb * elem_size;
-
- if (elem_size && bytes / elem_size != nmemb) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Integer overflow in %s", where);
- bytes = 0;
- }
-
- return (bytes);
-}
-
-/*
- * Compute which tile an (x,y,z,s) value is in.
- */
-ttile_t
-TIFFComputeTile(TIFF* tif, uint32 x, uint32 y, uint32 z, tsample_t s)
-{
- TIFFDirectory *td = &tif->tif_dir;
- uint32 dx = td->td_tilewidth;
- uint32 dy = td->td_tilelength;
- uint32 dz = td->td_tiledepth;
- ttile_t tile = 1;
-
- if (td->td_imagedepth == 1)
- z = 0;
- if (dx == (uint32) -1)
- dx = td->td_imagewidth;
- if (dy == (uint32) -1)
- dy = td->td_imagelength;
- if (dz == (uint32) -1)
- dz = td->td_imagedepth;
- if (dx != 0 && dy != 0 && dz != 0) {
- uint32 xpt = TIFFhowmany(td->td_imagewidth, dx);
- uint32 ypt = TIFFhowmany(td->td_imagelength, dy);
- uint32 zpt = TIFFhowmany(td->td_imagedepth, dz);
-
- if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
- tile = (xpt*ypt*zpt)*s +
- (xpt*ypt)*(z/dz) +
- xpt*(y/dy) +
- x/dx;
- else
- tile = (xpt*ypt)*(z/dz) + xpt*(y/dy) + x/dx;
- }
- return (tile);
-}
-
-/*
- * Check an (x,y,z,s) coordinate
- * against the image bounds.
- */
-int
-TIFFCheckTile(TIFF* tif, uint32 x, uint32 y, uint32 z, tsample_t s)
-{
- TIFFDirectory *td = &tif->tif_dir;
-
- if (x >= td->td_imagewidth) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%lu: Col out of range, max %lu",
- (unsigned long) x,
- (unsigned long) (td->td_imagewidth - 1));
- return (0);
- }
- if (y >= td->td_imagelength) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%lu: Row out of range, max %lu",
- (unsigned long) y,
- (unsigned long) (td->td_imagelength - 1));
- return (0);
- }
- if (z >= td->td_imagedepth) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%lu: Depth out of range, max %lu",
- (unsigned long) z,
- (unsigned long) (td->td_imagedepth - 1));
- return (0);
- }
- if (td->td_planarconfig == PLANARCONFIG_SEPARATE &&
- s >= td->td_samplesperpixel) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%lu: Sample out of range, max %lu",
- (unsigned long) s,
- (unsigned long) (td->td_samplesperpixel - 1));
- return (0);
- }
- return (1);
-}
-
-/*
- * Compute how many tiles are in an image.
- */
-ttile_t
-TIFFNumberOfTiles(TIFF* tif)
-{
- TIFFDirectory *td = &tif->tif_dir;
- uint32 dx = td->td_tilewidth;
- uint32 dy = td->td_tilelength;
- uint32 dz = td->td_tiledepth;
- ttile_t ntiles;
-
- if (dx == (uint32) -1)
- dx = td->td_imagewidth;
- if (dy == (uint32) -1)
- dy = td->td_imagelength;
- if (dz == (uint32) -1)
- dz = td->td_imagedepth;
- ntiles = (dx == 0 || dy == 0 || dz == 0) ? 0 :
- multiply(tif, multiply(tif, TIFFhowmany(td->td_imagewidth, dx),
- TIFFhowmany(td->td_imagelength, dy),
- "TIFFNumberOfTiles"),
- TIFFhowmany(td->td_imagedepth, dz), "TIFFNumberOfTiles");
- if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
- ntiles = multiply(tif, ntiles, td->td_samplesperpixel,
- "TIFFNumberOfTiles");
- return (ntiles);
-}
-
-/*
- * Compute the # bytes in each row of a tile.
- */
-tsize_t
-TIFFTileRowSize(TIFF* tif)
-{
- TIFFDirectory *td = &tif->tif_dir;
- tsize_t rowsize;
-
- if (td->td_tilelength == 0 || td->td_tilewidth == 0)
- return ((tsize_t) 0);
- rowsize = multiply(tif, td->td_bitspersample, td->td_tilewidth,
- "TIFFTileRowSize");
- if (td->td_planarconfig == PLANARCONFIG_CONTIG)
- rowsize = multiply(tif, rowsize, td->td_samplesperpixel,
- "TIFFTileRowSize");
- return ((tsize_t) TIFFhowmany8(rowsize));
-}
-
-/*
- * Compute the # bytes in a variable length, row-aligned tile.
- */
-tsize_t
-TIFFVTileSize(TIFF* tif, uint32 nrows)
-{
- TIFFDirectory *td = &tif->tif_dir;
- tsize_t tilesize;
-
- if (td->td_tilelength == 0 || td->td_tilewidth == 0 ||
- td->td_tiledepth == 0)
- return ((tsize_t) 0);
- if (td->td_planarconfig == PLANARCONFIG_CONTIG &&
- td->td_photometric == PHOTOMETRIC_YCBCR &&
- !isUpSampled(tif)) {
- /*
- * Packed YCbCr data contain one Cb+Cr for every
- * HorizontalSampling*VerticalSampling Y values.
- * Must also roundup width and height when calculating
- * since images that are not a multiple of the
- * horizontal/vertical subsampling area include
- * YCbCr data for the extended image.
- */
- tsize_t w =
- TIFFroundup(td->td_tilewidth, td->td_ycbcrsubsampling[0]);
- tsize_t rowsize =
- TIFFhowmany8(multiply(tif, w, td->td_bitspersample,
- "TIFFVTileSize"));
- tsize_t samplingarea =
- td->td_ycbcrsubsampling[0]*td->td_ycbcrsubsampling[1];
- if (samplingarea == 0) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name, "Invalid YCbCr subsampling");
- return 0;
- }
- nrows = TIFFroundup(nrows, td->td_ycbcrsubsampling[1]);
- /* NB: don't need TIFFhowmany here 'cuz everything is rounded */
- tilesize = multiply(tif, nrows, rowsize, "TIFFVTileSize");
- tilesize = summarize(tif, tilesize,
- multiply(tif, 2, tilesize / samplingarea,
- "TIFFVTileSize"),
- "TIFFVTileSize");
- } else
- tilesize = multiply(tif, nrows, TIFFTileRowSize(tif),
- "TIFFVTileSize");
- return ((tsize_t)
- multiply(tif, tilesize, td->td_tiledepth, "TIFFVTileSize"));
-}
-
-/*
- * Compute the # bytes in a row-aligned tile.
- */
-tsize_t
-TIFFTileSize(TIFF* tif)
-{
- return (TIFFVTileSize(tif, tif->tif_dir.td_tilelength));
-}
-
-/*
- * Compute a default tile size based on the image
- * characteristics and a requested value. If a
- * request is <1 then we choose a size according
- * to certain heuristics.
- */
-void
-TIFFDefaultTileSize(TIFF* tif, uint32* tw, uint32* th)
-{
- (*tif->tif_deftilesize)(tif, tw, th);
-}
-
-void
-_TIFFDefaultTileSize(TIFF* tif, uint32* tw, uint32* th)
-{
- (void) tif;
- if (*(int32*) tw < 1)
- *tw = 256;
- if (*(int32*) th < 1)
- *th = 256;
- /* roundup to a multiple of 16 per the spec */
- if (*tw & 0xf)
- *tw = TIFFroundup(*tw, 16);
- if (*th & 0xf)
- *th = TIFFroundup(*th, 16);
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_unix.c b/src/3rdparty/libtiff/libtiff/tif_unix.c
deleted file mode 100644
index 2c3bf7d33c..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_unix.c
+++ /dev/null
@@ -1,293 +0,0 @@
-/* $Id: tif_unix.c,v 1.12 2006/03/21 16:37:51 dron Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library UNIX-specific Routines. These are should also work with the
- * Windows Common RunTime Library.
- */
-#include "tif_config.h"
-
-#ifdef HAVE_SYS_TYPES_H
-# include <sys/types.h>
-#endif
-
-#include <stdarg.h>
-#include <stdlib.h>
-#include <sys/stat.h>
-
-#ifdef HAVE_UNISTD_H
-# include <unistd.h>
-#endif
-
-#ifdef HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-
-#ifdef HAVE_IO_H
-# include <io.h>
-#endif
-
-#include "tiffiop.h"
-
-static tsize_t
-_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
- return ((tsize_t) read((int) fd, buf, (size_t) size));
-}
-
-static tsize_t
-_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
- return ((tsize_t) write((int) fd, buf, (size_t) size));
-}
-
-static toff_t
-_tiffSeekProc(thandle_t fd, toff_t off, int whence)
-{
- return ((toff_t) lseek((int) fd, (off_t) off, whence));
-}
-
-static int
-_tiffCloseProc(thandle_t fd)
-{
- return (close((int) fd));
-}
-
-
-static toff_t
-_tiffSizeProc(thandle_t fd)
-{
-#ifdef _AM29K
- long fsize;
- return ((fsize = lseek((int) fd, 0, SEEK_END)) < 0 ? 0 : fsize);
-#else
- struct stat sb;
- return (toff_t) (fstat((int) fd, &sb) < 0 ? 0 : sb.st_size);
-#endif
-}
-
-#ifdef HAVE_MMAP
-#include <sys/mman.h>
-
-static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
- toff_t size = _tiffSizeProc(fd);
- if (size != (toff_t) -1) {
- *pbase = (tdata_t)
- mmap(0, size, PROT_READ, MAP_SHARED, (int) fd, 0);
- if (*pbase != (tdata_t) -1) {
- *psize = size;
- return (1);
- }
- }
- return (0);
-}
-
-static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
- (void) fd;
- (void) munmap(base, (off_t) size);
-}
-#else /* !HAVE_MMAP */
-static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
- (void) fd; (void) pbase; (void) psize;
- return (0);
-}
-
-static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
- (void) fd; (void) base; (void) size;
-}
-#endif /* !HAVE_MMAP */
-
-/*
- * Open a TIFF file descriptor for read/writing.
- */
-TIFF*
-TIFFFdOpen(int fd, const char* name, const char* mode)
-{
- TIFF* tif;
-
- tif = TIFFClientOpen(name, mode,
- (thandle_t) fd,
- _tiffReadProc, _tiffWriteProc,
- _tiffSeekProc, _tiffCloseProc, _tiffSizeProc,
- _tiffMapProc, _tiffUnmapProc);
- if (tif)
- tif->tif_fd = fd;
- return (tif);
-}
-
-/*
- * Open a TIFF file for read/writing.
- */
-TIFF*
-TIFFOpen(const char* name, const char* mode)
-{
- static const char module[] = "TIFFOpen";
- int m, fd;
- TIFF* tif;
-
- m = _TIFFgetMode(mode, module);
- if (m == -1)
- return ((TIFF*)0);
-
-/* for cygwin and mingw */
-#ifdef O_BINARY
- m |= O_BINARY;
-#endif
-
-#ifdef _AM29K
- fd = open(name, m);
-#else
- fd = open(name, m, 0666);
-#endif
- if (fd < 0) {
- TIFFErrorExt(0, module, "%s: Cannot open", name);
- return ((TIFF *)0);
- }
-
- tif = TIFFFdOpen((int)fd, name, mode);
- if(!tif)
- close(fd);
- return tif;
-}
-
-#if defined (__WIN32__) && !defined(__SYMBIAN32__)
-#include <windows.h>
-/*
- * Open a TIFF file with a Unicode filename, for read/writing.
- */
-TIFF*
-TIFFOpenW(const wchar_t* name, const char* mode)
-{
- static const char module[] = "TIFFOpenW";
- int m, fd;
- int mbsize;
- char *mbname;
- TIFF* tif;
-
- m = _TIFFgetMode(mode, module);
- if (m == -1)
- return ((TIFF*)0);
-
-/* for cygwin and mingw */
-#ifdef O_BINARY
- m |= O_BINARY;
-#endif
-
- fd = _wopen(name, m, 0666);
- if (fd < 0) {
- TIFFErrorExt(0, module, "%s: Cannot open", name);
- return ((TIFF *)0);
- }
-
- mbname = NULL;
- mbsize = WideCharToMultiByte(CP_ACP, 0, name, -1, NULL, 0, NULL, NULL);
- if (mbsize > 0) {
- mbname = _TIFFmalloc(mbsize);
- if (!mbname) {
- TIFFErrorExt(0, module,
- "Can't allocate space for filename conversion buffer");
- return ((TIFF*)0);
- }
-
- WideCharToMultiByte(CP_ACP, 0, name, -1, mbname, mbsize,
- NULL, NULL);
- }
-
- tif = TIFFFdOpen((int)fd, (mbname != NULL) ? mbname : "<unknown>",
- mode);
-
- _TIFFfree(mbname);
-
- if(!tif)
- close(fd);
- return tif;
-}
-#endif
-
-void*
-_TIFFmalloc(tsize_t s)
-{
- return (malloc((size_t) s));
-}
-
-void
-_TIFFfree(tdata_t p)
-{
- free(p);
-}
-
-void*
-_TIFFrealloc(tdata_t p, tsize_t s)
-{
- return (realloc(p, (size_t) s));
-}
-
-void
-_TIFFmemset(tdata_t p, int v, tsize_t c)
-{
- memset(p, v, (size_t) c);
-}
-
-void
-_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c)
-{
- memcpy(d, s, (size_t) c);
-}
-
-int
-_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
-{
- return (memcmp(p1, p2, (size_t) c));
-}
-
-static void
-unixWarningHandler(const char* module, const char* fmt, va_list ap)
-{
- if (module != NULL)
- fprintf(stderr, "%s: ", module);
- fprintf(stderr, "Warning, ");
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFwarningHandler = unixWarningHandler;
-
-static void
-unixErrorHandler(const char* module, const char* fmt, va_list ap)
-{
- if (module != NULL)
- fprintf(stderr, "%s: ", module);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, ".\n");
-}
-TIFFErrorHandler _TIFFerrorHandler = unixErrorHandler;
diff --git a/src/3rdparty/libtiff/libtiff/tif_version.c b/src/3rdparty/libtiff/libtiff/tif_version.c
deleted file mode 100644
index 1264b71591..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_version.c
+++ /dev/null
@@ -1,33 +0,0 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_version.c,v 1.2 2000/11/13 14:42:38 warmerda Exp $ */
-/*
- * Copyright (c) 1992-1997 Sam Leffler
- * Copyright (c) 1992-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-#include "tiffiop.h"
-
-static const char TIFFVersion[] = TIFFLIB_VERSION_STR;
-
-const char*
-TIFFGetVersion(void)
-{
- return (TIFFVersion);
-}
diff --git a/src/3rdparty/libtiff/libtiff/tif_warning.c b/src/3rdparty/libtiff/libtiff/tif_warning.c
deleted file mode 100644
index d593469d2d..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_warning.c
+++ /dev/null
@@ -1,74 +0,0 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_warning.c,v 1.2 2005/12/23 01:18:59 joris Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- */
-#include "tiffiop.h"
-
-TIFFErrorHandlerExt _TIFFwarningHandlerExt = NULL;
-
-TIFFErrorHandler
-TIFFSetWarningHandler(TIFFErrorHandler handler)
-{
- TIFFErrorHandler prev = _TIFFwarningHandler;
- _TIFFwarningHandler = handler;
- return (prev);
-}
-
-TIFFErrorHandlerExt
-TIFFSetWarningHandlerExt(TIFFErrorHandlerExt handler)
-{
- TIFFErrorHandlerExt prev = _TIFFwarningHandlerExt;
- _TIFFwarningHandlerExt = handler;
- return (prev);
-}
-
-void
-TIFFWarning(const char* module, const char* fmt, ...)
-{
- va_list ap;
- va_start(ap, fmt);
- if (_TIFFwarningHandler)
- (*_TIFFwarningHandler)(module, fmt, ap);
- if (_TIFFwarningHandlerExt)
- (*_TIFFwarningHandlerExt)(0, module, fmt, ap);
- va_end(ap);
-}
-
-void
-TIFFWarningExt(thandle_t fd, const char* module, const char* fmt, ...)
-{
- va_list ap;
- va_start(ap, fmt);
- if (_TIFFwarningHandler)
- (*_TIFFwarningHandler)(module, fmt, ap);
- if (_TIFFwarningHandlerExt)
- (*_TIFFwarningHandlerExt)(fd, module, fmt, ap);
- va_end(ap);
-}
-
-
diff --git a/src/3rdparty/libtiff/libtiff/tif_win3.c b/src/3rdparty/libtiff/libtiff/tif_win3.c
deleted file mode 100644
index b16b214da3..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_win3.c
+++ /dev/null
@@ -1,225 +0,0 @@
-/* $Header: /cvs/maptools/cvsroot/libtiff/libtiff/tif_win3.c,v 1.2 2005/12/21 12:23:13 joris Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library Windows 3.x-specific Routines.
- */
-#include "tiffiop.h"
-#if defined(__WATCOMC__) || defined(__BORLANDC__) || defined(_MSC_VER)
-#include <io.h> /* for open, close, etc. function prototypes */
-#endif
-
-#include <windows.h>
-#include <windowsx.h>
-#include <memory.h>
-
-static tsize_t
-_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
- return (_hread(fd, buf, size));
-}
-
-static tsize_t
-_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
- return (_hwrite(fd, buf, size));
-}
-
-static toff_t
-_tiffSeekProc(thandle_t fd, toff_t off, int whence)
-{
- return (_llseek(fd, (off_t) off, whence));
-}
-
-static int
-_tiffCloseProc(thandle_t fd)
-{
- return (_lclose(fd));
-}
-
-#include <sys/stat.h>
-
-static toff_t
-_tiffSizeProc(thandle_t fd)
-{
- struct stat sb;
- return (fstat((int) fd, &sb) < 0 ? 0 : sb.st_size);
-}
-
-static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
- return (0);
-}
-
-static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
-}
-
-/*
- * Open a TIFF file descriptor for read/writing.
- */
-TIFF*
-TIFFFdOpen(int fd, const char* name, const char* mode)
-{
- TIFF* tif;
-
- tif = TIFFClientOpen(name, mode,
- (thandle_t) fd,
- _tiffReadProc, _tiffWriteProc, _tiffSeekProc, _tiffCloseProc,
- _tiffSizeProc, _tiffMapProc, _tiffUnmapProc);
- if (tif)
- tif->tif_fd = fd;
- return (tif);
-}
-
-/*
- * Open a TIFF file for read/writing.
- */
-TIFF*
-TIFFOpen(const char* name, const char* mode)
-{
- static const char module[] = "TIFFOpen";
- int m, fd;
- OFSTRUCT of;
- int mm = 0;
-
- m = _TIFFgetMode(mode, module);
- if (m == -1)
- return ((TIFF*)0);
- if (m & O_CREAT) {
- if ((m & O_TRUNC) || OpenFile(name, &of, OF_EXIST) != HFILE_ERROR)
- mm |= OF_CREATE;
- }
- if (m & O_WRONLY)
- mm |= OF_WRITE;
- if (m & O_RDWR)
- mm |= OF_READWRITE;
- fd = OpenFile(name, &of, mm);
- if (fd < 0) {
- TIFFErrorExt(0, module, "%s: Cannot open", name);
- return ((TIFF*)0);
- }
- return (TIFFFdOpen(fd, name, mode));
-}
-
-tdata_t
-_TIFFmalloc(tsize_t s)
-{
- return (tdata_t) GlobalAllocPtr(GHND, (DWORD) s);
-}
-
-void
-_TIFFfree(tdata_t p)
-{
- GlobalFreePtr(p);
-}
-
-tdata_t
-_TIFFrealloc(tdata_t p, tsize_t s)
-{
- return (tdata_t) GlobalReAllocPtr(p, (DWORD) s, GHND);
-}
-
-void
-_TIFFmemset(tdata_t p, int v, tsize_t c)
-{
- char* pp = (char*) p;
-
- while (c > 0) {
- tsize_t chunk = 0x10000 - ((uint32) pp & 0xffff);/* What's left in segment */
- if (chunk > 0xff00) /* No more than 0xff00 */
- chunk = 0xff00;
- if (chunk > c) /* No more than needed */
- chunk = c;
- memset(pp, v, chunk);
- pp = (char*) (chunk + (char huge*) pp);
- c -= chunk;
- }
-}
-
-void
-_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c)
-{
- if (c > 0xFFFF)
- hmemcpy((void _huge*) d, (void _huge*) s, c);
- else
- (void) memcpy(d, s, (size_t) c);
-}
-
-int
-_TIFFmemcmp(const tdata_t d, const tdata_t s, tsize_t c)
-{
- char* dd = (char*) d;
- char* ss = (char*) s;
- tsize_t chunks, chunkd, chunk;
- int result;
-
- while (c > 0) {
- chunks = 0x10000 - ((uint32) ss & 0xffff); /* What's left in segment */
- chunkd = 0x10000 - ((uint32) dd & 0xffff); /* What's left in segment */
- chunk = c; /* Get the largest of */
- if (chunk > chunks) /* c, chunks, chunkd, */
- chunk = chunks; /* 0xff00 */
- if (chunk > chunkd)
- chunk = chunkd;
- if (chunk > 0xff00)
- chunk = 0xff00;
- result = memcmp(dd, ss, chunk);
- if (result != 0)
- return (result);
- dd = (char*) (chunk + (char huge*) dd);
- ss = (char*) (chunk + (char huge*) ss);
- c -= chunk;
- }
- return (0);
-}
-
-static void
-win3WarningHandler(const char* module, const char* fmt, va_list ap)
-{
- char e[512] = { '\0' };
- if (module != NULL)
- strcat(strcpy(e, module), ":");
- vsprintf(e+strlen(e), fmt, ap);
- strcat(e, ".");
- MessageBox(GetActiveWindow(), e, "LibTIFF Warning",
- MB_OK|MB_ICONEXCLAMATION);
-}
-TIFFErrorHandler _TIFFwarningHandler = win3WarningHandler;
-
-static void
-win3ErrorHandler(const char* module, const char* fmt, va_list ap)
-{
- char e[512] = { '\0' };
- if (module != NULL)
- strcat(strcpy(e, module), ":");
- vsprintf(e+strlen(e), fmt, ap);
- strcat(e, ".");
- MessageBox(GetActiveWindow(), e, "LibTIFF Error", MB_OK|MB_ICONSTOP);
-}
-TIFFErrorHandler _TIFFerrorHandler = win3ErrorHandler;
diff --git a/src/3rdparty/libtiff/libtiff/tif_win32.c b/src/3rdparty/libtiff/libtiff/tif_win32.c
deleted file mode 100644
index d7f33de374..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_win32.c
+++ /dev/null
@@ -1,402 +0,0 @@
-/* $Id: tif_win32.c,v 1.21 2007/03/07 17:10:31 joris Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library Win32-specific Routines. Adapted from tif_unix.c 4/5/95 by
- * Scott Wagner (wagner@itek.com), Itek Graphix, Rochester, NY USA
- */
-#include "tiffiop.h"
-#include <windows.h>
-
-#include <windows.h>
-
-static tsize_t
-_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
- DWORD dwSizeRead;
- if (!ReadFile(fd, buf, size, &dwSizeRead, NULL))
- return(0);
- return ((tsize_t) dwSizeRead);
-}
-
-static tsize_t
-_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
- DWORD dwSizeWritten;
- if (!WriteFile(fd, buf, size, &dwSizeWritten, NULL))
- return(0);
- return ((tsize_t) dwSizeWritten);
-}
-
-static toff_t
-_tiffSeekProc(thandle_t fd, toff_t off, int whence)
-{
- ULARGE_INTEGER li;
- DWORD dwMoveMethod;
-
- li.QuadPart = off;
-
- switch(whence)
- {
- case SEEK_SET:
- dwMoveMethod = FILE_BEGIN;
- break;
- case SEEK_CUR:
- dwMoveMethod = FILE_CURRENT;
- break;
- case SEEK_END:
- dwMoveMethod = FILE_END;
- break;
- default:
- dwMoveMethod = FILE_BEGIN;
- break;
- }
- return ((toff_t)SetFilePointer(fd, (LONG) li.LowPart,
- (PLONG)&li.HighPart, dwMoveMethod));
-}
-
-static int
-_tiffCloseProc(thandle_t fd)
-{
- return (CloseHandle(fd) ? 0 : -1);
-}
-
-static toff_t
-_tiffSizeProc(thandle_t fd)
-{
- return ((toff_t)GetFileSize(fd, NULL));
-}
-
-static int
-_tiffDummyMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
- (void) fd;
- (void) pbase;
- (void) psize;
- return (0);
-}
-
-/*
- * From "Hermann Josef Hill" <lhill@rhein-zeitung.de>:
- *
- * Windows uses both a handle and a pointer for file mapping,
- * but according to the SDK documentation and Richter's book
- * "Advanced Windows Programming" it is safe to free the handle
- * after obtaining the file mapping pointer
- *
- * This removes a nasty OS dependency and cures a problem
- * with Visual C++ 5.0
- */
-static int
-_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
-{
- toff_t size;
- HANDLE hMapFile;
-
- if ((size = _tiffSizeProc(fd)) == 0xFFFFFFFF)
- return (0);
- hMapFile = CreateFileMapping(fd, NULL, PAGE_READONLY, 0, size, NULL);
- if (hMapFile == NULL)
- return (0);
- *pbase = MapViewOfFile(hMapFile, FILE_MAP_READ, 0, 0, 0);
- CloseHandle(hMapFile);
- if (*pbase == NULL)
- return (0);
- *psize = size;
- return(1);
-}
-
-static void
-_tiffDummyUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
- (void) fd;
- (void) base;
- (void) size;
-}
-
-static void
-_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
-{
- UnmapViewOfFile(base);
-}
-
-/*
- * Open a TIFF file descriptor for read/writing.
- * Note that TIFFFdOpen and TIFFOpen recognise the character 'u' in the mode
- * string, which forces the file to be opened unmapped.
- */
-TIFF*
-TIFFFdOpen(int ifd, const char* name, const char* mode)
-{
- TIFF* tif;
- BOOL fSuppressMap = (mode[1] == 'u' || (mode[1]!=0 && mode[2] == 'u'));
-
- tif = TIFFClientOpen(name, mode, (thandle_t)ifd,
- _tiffReadProc, _tiffWriteProc,
- _tiffSeekProc, _tiffCloseProc, _tiffSizeProc,
- fSuppressMap ? _tiffDummyMapProc : _tiffMapProc,
- fSuppressMap ? _tiffDummyUnmapProc : _tiffUnmapProc);
- if (tif)
- tif->tif_fd = ifd;
- return (tif);
-}
-
-#ifndef _WIN32_WCE
-
-/*
- * Open a TIFF file for read/writing.
- */
-TIFF*
-TIFFOpen(const char* name, const char* mode)
-{
- static const char module[] = "TIFFOpen";
- thandle_t fd;
- int m;
- DWORD dwMode;
- TIFF* tif;
-
- m = _TIFFgetMode(mode, module);
-
- switch(m)
- {
- case O_RDONLY:
- dwMode = OPEN_EXISTING;
- break;
- case O_RDWR:
- dwMode = OPEN_ALWAYS;
- break;
- case O_RDWR|O_CREAT:
- dwMode = OPEN_ALWAYS;
- break;
- case O_RDWR|O_TRUNC:
- dwMode = CREATE_ALWAYS;
- break;
- case O_RDWR|O_CREAT|O_TRUNC:
- dwMode = CREATE_ALWAYS;
- break;
- default:
- return ((TIFF*)0);
- }
- fd = (thandle_t)CreateFileA(name,
- (m == O_RDONLY)?GENERIC_READ:(GENERIC_READ | GENERIC_WRITE),
- FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, dwMode,
- (m == O_RDONLY)?FILE_ATTRIBUTE_READONLY:FILE_ATTRIBUTE_NORMAL,
- NULL);
- if (fd == INVALID_HANDLE_VALUE) {
- TIFFErrorExt(0, module, "%s: Cannot open", name);
- return ((TIFF *)0);
- }
-
- tif = TIFFFdOpen((int)fd, name, mode);
- if(!tif)
- CloseHandle(fd);
- return tif;
-}
-
-/*
- * Open a TIFF file with a Unicode filename, for read/writing.
- */
-TIFF*
-TIFFOpenW(const wchar_t* name, const char* mode)
-{
- static const char module[] = "TIFFOpenW";
- thandle_t fd;
- int m;
- DWORD dwMode;
- int mbsize;
- char *mbname;
- TIFF *tif;
-
- m = _TIFFgetMode(mode, module);
-
- switch(m) {
- case O_RDONLY: dwMode = OPEN_EXISTING; break;
- case O_RDWR: dwMode = OPEN_ALWAYS; break;
- case O_RDWR|O_CREAT: dwMode = OPEN_ALWAYS; break;
- case O_RDWR|O_TRUNC: dwMode = CREATE_ALWAYS; break;
- case O_RDWR|O_CREAT|O_TRUNC: dwMode = CREATE_ALWAYS; break;
- default: return ((TIFF*)0);
- }
-
- fd = (thandle_t)CreateFileW(name,
- (m == O_RDONLY)?GENERIC_READ:(GENERIC_READ|GENERIC_WRITE),
- FILE_SHARE_READ, NULL, dwMode,
- (m == O_RDONLY)?FILE_ATTRIBUTE_READONLY:FILE_ATTRIBUTE_NORMAL,
- NULL);
- if (fd == INVALID_HANDLE_VALUE) {
- TIFFErrorExt(0, module, "%S: Cannot open", name);
- return ((TIFF *)0);
- }
-
- mbname = NULL;
- mbsize = WideCharToMultiByte(CP_ACP, 0, name, -1, NULL, 0, NULL, NULL);
- if (mbsize > 0) {
- mbname = (char *)_TIFFmalloc(mbsize);
- if (!mbname) {
- TIFFErrorExt(0, module,
- "Can't allocate space for filename conversion buffer");
- return ((TIFF*)0);
- }
-
- WideCharToMultiByte(CP_ACP, 0, name, -1, mbname, mbsize,
- NULL, NULL);
- }
-
- tif = TIFFFdOpen((int)fd,
- (mbname != NULL) ? mbname : "<unknown>", mode);
- if(!tif)
- CloseHandle(fd);
-
- _TIFFfree(mbname);
-
- return tif;
-}
-
-#endif /* ndef _WIN32_WCE */
-
-
-tdata_t
-_TIFFmalloc(tsize_t s)
-{
- return ((tdata_t)GlobalAlloc(GMEM_FIXED, s));
-}
-
-void
-_TIFFfree(tdata_t p)
-{
- GlobalFree(p);
- return;
-}
-
-tdata_t
-_TIFFrealloc(tdata_t p, tsize_t s)
-{
- void* pvTmp;
- tsize_t old;
-
- if(p == NULL)
- return ((tdata_t)GlobalAlloc(GMEM_FIXED, s));
-
- old = GlobalSize(p);
-
- if (old>=s) {
- if ((pvTmp = GlobalAlloc(GMEM_FIXED, s)) != NULL) {
- CopyMemory(pvTmp, p, s);
- GlobalFree(p);
- }
- } else {
- if ((pvTmp = GlobalAlloc(GMEM_FIXED, s)) != NULL) {
- CopyMemory(pvTmp, p, old);
- GlobalFree(p);
- }
- }
- return ((tdata_t)pvTmp);
-}
-
-void
-_TIFFmemset(void* p, int v, tsize_t c)
-{
- FillMemory(p, c, (BYTE)v);
-}
-
-void
-_TIFFmemcpy(void* d, const tdata_t s, tsize_t c)
-{
- CopyMemory(d, s, c);
-}
-
-int
-_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
-{
- register const BYTE *pb1 = (const BYTE *) p1;
- register const BYTE *pb2 = (const BYTE *) p2;
- register DWORD dwTmp = c;
- register int iTmp;
- for (iTmp = 0; dwTmp-- && !iTmp; iTmp = (int)*pb1++ - (int)*pb2++)
- ;
- return (iTmp);
-}
-
-#ifndef _WIN32_WCE
-
-static void
-Win32WarningHandler(const char* module, const char* fmt, va_list ap)
-{
-#ifndef TIF_PLATFORM_CONSOLE
- LPTSTR szTitle;
- LPTSTR szTmp;
- LPCTSTR szTitleText = "%s Warning";
- LPCTSTR szDefaultModule = "LIBTIFF";
- LPCTSTR szTmpModule = (module == NULL) ? szDefaultModule : module;
- if ((szTitle = (LPTSTR)LocalAlloc(LMEM_FIXED, (strlen(szTmpModule) +
- strlen(szTitleText) + strlen(fmt) + 128)*sizeof(char))) == NULL)
- return;
- sprintf(szTitle, szTitleText, szTmpModule);
- szTmp = szTitle + (strlen(szTitle)+2)*sizeof(char);
- vsprintf(szTmp, fmt, ap);
- MessageBoxA(GetFocus(), szTmp, szTitle, MB_OK | MB_ICONINFORMATION);
- LocalFree(szTitle);
- return;
-#else
- if (module != NULL)
- fprintf(stderr, "%s: ", module);
- fprintf(stderr, "Warning, ");
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, ".\n");
-#endif
-}
-TIFFErrorHandler _TIFFwarningHandler = Win32WarningHandler;
-
-static void
-Win32ErrorHandler(const char* module, const char* fmt, va_list ap)
-{
-#ifndef TIF_PLATFORM_CONSOLE
- LPTSTR szTitle;
- LPTSTR szTmp;
- LPCTSTR szTitleText = "%s Error";
- LPCTSTR szDefaultModule = "LIBTIFF";
- LPCTSTR szTmpModule = (module == NULL) ? szDefaultModule : module;
- if ((szTitle = (LPTSTR)LocalAlloc(LMEM_FIXED, (strlen(szTmpModule) +
- strlen(szTitleText) + strlen(fmt) + 128)*sizeof(char))) == NULL)
- return;
- sprintf(szTitle, szTitleText, szTmpModule);
- szTmp = szTitle + (strlen(szTitle)+2)*sizeof(char);
- vsprintf(szTmp, fmt, ap);
- MessageBoxA(GetFocus(), szTmp, szTitle, MB_OK | MB_ICONEXCLAMATION);
- LocalFree(szTitle);
- return;
-#else
- if (module != NULL)
- fprintf(stderr, "%s: ", module);
- vfprintf(stderr, fmt, ap);
- fprintf(stderr, ".\n");
-#endif
-}
-TIFFErrorHandler _TIFFerrorHandler = Win32ErrorHandler;
-
-#endif /* ndef _WIN32_WCE */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_wince.c b/src/3rdparty/libtiff/libtiff/tif_wince.c
deleted file mode 100644
index 4e283daf69..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_wince.c
+++ /dev/null
@@ -1,281 +0,0 @@
-/* $Id: tif_wince.c,v 1.1 2007-01-15 18:40:39 mloskot Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * Windows CE-specific routines for TIFF Library.
- * Adapted from tif_win32.c 01/10/2006 by Mateusz Loskot (mateusz@loskot.net)
- */
-
-#ifndef _WIN32_WCE
-# error "Only Windows CE target is supported!"
-#endif
-
-#include "tiffiop.h"
-#include <windows.h>
-
-/* Turn off console support on Windows CE. */
-#undef TIF_PLATFORM_CONSOLE
-
-
-/*
- * Open a TIFF file for read/writing.
- */
-TIFF*
-TIFFOpen(const char* name, const char* mode)
-{
- static const char module[] = "TIFFOpen";
- thandle_t fd;
- int m;
- DWORD dwMode;
- TIFF* tif;
- size_t nLen;
- size_t nWideLen;
- wchar_t* wchName;
-
- m = _TIFFgetMode(mode, module);
-
- switch(m)
- {
- case O_RDONLY:
- dwMode = OPEN_EXISTING;
- break;
- case O_RDWR:
- dwMode = OPEN_ALWAYS;
- break;
- case O_RDWR|O_CREAT:
- dwMode = OPEN_ALWAYS;
- break;
- case O_RDWR|O_TRUNC:
- dwMode = CREATE_ALWAYS;
- break;
- case O_RDWR|O_CREAT|O_TRUNC:
- dwMode = CREATE_ALWAYS;
- break;
- default:
- return ((TIFF*)0);
- }
-
- /* On Windows CE, CreateFile is mapped to CreateFileW,
- * but file path is passed as char-based string,
- * so the path has to be converted to wchar_t.
- */
-
- nWideLen = 0;
- wchName = NULL;
- nLen = strlen(name) + 1;
-
- nWideLen = MultiByteToWideChar(CP_ACP, 0, name, nLen, NULL, 0);
- wchName = (wchar_t*)malloc(sizeof(wchar_t) * nWideLen);
- if (NULL == wchName)
- {
- TIFFErrorExt(0, module, "Memory allocation error!");
- return ((TIFF *)0);
- }
- memset(wchName, 0, sizeof(wchar_t) * nWideLen);
- MultiByteToWideChar(CP_ACP, 0, name, nLen, wchName, nWideLen);
-
- fd = (thandle_t)CreateFile(wchName,
- (m == O_RDONLY)?GENERIC_READ:(GENERIC_READ | GENERIC_WRITE),
- FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, dwMode,
- (m == O_RDONLY)?FILE_ATTRIBUTE_READONLY:FILE_ATTRIBUTE_NORMAL,
- NULL);
-
- free(wchName);
-
- if (fd == INVALID_HANDLE_VALUE) {
- TIFFErrorExt(0, module, "%s: Cannot open", name);
- return ((TIFF *)0);
- }
-
- /* TODO - mloskot: change to TIFFdOpenW and pass wchar path */
-
- tif = TIFFFdOpen((int)fd, name, mode);
- if(!tif)
- CloseHandle(fd);
- return tif;
-}
-
-/*
- * Open a TIFF file with a Unicode filename, for read/writing.
- */
-TIFF*
-TIFFOpenW(const wchar_t* name, const char* mode)
-{
- static const char module[] = "TIFFOpenW";
- thandle_t fd;
- int m;
- DWORD dwMode;
- int mbsize;
- char *mbname;
- TIFF *tif;
-
- m = _TIFFgetMode(mode, module);
-
- switch(m) {
- case O_RDONLY: dwMode = OPEN_EXISTING; break;
- case O_RDWR: dwMode = OPEN_ALWAYS; break;
- case O_RDWR|O_CREAT: dwMode = OPEN_ALWAYS; break;
- case O_RDWR|O_TRUNC: dwMode = CREATE_ALWAYS; break;
- case O_RDWR|O_CREAT|O_TRUNC: dwMode = CREATE_ALWAYS; break;
- default: return ((TIFF*)0);
- }
-
- /* On Windows CE, CreateFile is mapped to CreateFileW,
- * so no conversion of wchar_t to char is required.
- */
-
- fd = (thandle_t)CreateFile(name,
- (m == O_RDONLY)?GENERIC_READ:(GENERIC_READ|GENERIC_WRITE),
- FILE_SHARE_READ, NULL, dwMode,
- (m == O_RDONLY)?FILE_ATTRIBUTE_READONLY:FILE_ATTRIBUTE_NORMAL,
- NULL);
- if (fd == INVALID_HANDLE_VALUE) {
- TIFFErrorExt(0, module, "%S: Cannot open", name);
- return ((TIFF *)0);
- }
-
- mbname = NULL;
- mbsize = WideCharToMultiByte(CP_ACP, 0, name, -1, NULL, 0, NULL, NULL);
- if (mbsize > 0) {
- mbname = (char *)_TIFFmalloc(mbsize);
- if (!mbname) {
- TIFFErrorExt(0, module,
- "Can't allocate space for filename conversion buffer");
- return ((TIFF*)0);
- }
-
- WideCharToMultiByte(CP_ACP, 0, name, -1, mbname, mbsize,
- NULL, NULL);
- }
-
- tif = TIFFFdOpen((int)fd,
- (mbname != NULL) ? mbname : "<unknown>", mode);
- if(!tif)
- CloseHandle(fd);
-
- _TIFFfree(mbname);
-
- return tif;
-}
-
-static void
-Win32WarningHandler(const char* module, const char* fmt, va_list ap)
-{
- /* On Windows CE, MessageBox is mapped to wide-char based MessageBoxW. */
-
- size_t nWideLen = 0;
- LPTSTR szWideTitle = NULL;
- LPTSTR szWideMsg = NULL;
-
- LPSTR szTitle;
- LPSTR szTmp;
- LPCSTR szTitleText = "%s Warning";
- LPCSTR szDefaultModule = "LIBTIFF";
- LPCSTR szTmpModule;
-
- szTmpModule = (module == NULL) ? szDefaultModule : module;
- if ((szTitle = (LPSTR)LocalAlloc(LMEM_FIXED,
- (strlen(szTmpModule) + strlen(szTitleText)
- + strlen(fmt) + 128) * sizeof(char))) == NULL)
- return;
-
- sprintf(szTitle, szTitleText, szTmpModule);
- szTmp = szTitle + (strlen(szTitle) + 2) * sizeof(char);
- vsprintf(szTmp, fmt, ap);
-
- /* Convert error message to Unicode. */
-
- nWideLen = MultiByteToWideChar(CP_ACP, 0, szTitle, -1, NULL, 0);
- szWideTitle = (wchar_t*)malloc(sizeof(wchar_t) * nWideLen);
- MultiByteToWideChar(CP_ACP, 0, szTitle, -1, szWideTitle, nWideLen);
-
- nWideLen = MultiByteToWideChar(CP_ACP, 0, szTmp, -1, NULL, 0);
- szWideMsg = (wchar_t*)malloc(sizeof(wchar_t) * nWideLen);
- MultiByteToWideChar(CP_ACP, 0, szTmp, -1, szWideMsg, nWideLen);
-
- /* Display message */
-
- MessageBox(GetFocus(), szWideMsg, szWideTitle, MB_OK | MB_ICONEXCLAMATION);
-
- /* Free resources */
-
- LocalFree(szTitle);
- free(szWideMsg);
- free(szWideTitle);
-}
-
-TIFFErrorHandler _TIFFwarningHandler = Win32WarningHandler;
-
-static void
-Win32ErrorHandler(const char* module, const char* fmt, va_list ap)
-{
- /* On Windows CE, MessageBox is mapped to wide-char based MessageBoxW. */
-
- size_t nWideLen = 0;
- LPTSTR szWideTitle = NULL;
- LPTSTR szWideMsg = NULL;
-
- LPSTR szTitle;
- LPSTR szTmp;
- LPCSTR szTitleText = "%s Error";
- LPCSTR szDefaultModule = "LIBTIFF";
- LPCSTR szTmpModule;
-
- szTmpModule = (module == NULL) ? szDefaultModule : module;
- if ((szTitle = (LPSTR)LocalAlloc(LMEM_FIXED,
- (strlen(szTmpModule) + strlen(szTitleText)
- + strlen(fmt) + 128) * sizeof(char))) == NULL)
- return;
-
- sprintf(szTitle, szTitleText, szTmpModule);
- szTmp = szTitle + (strlen(szTitle) + 2) * sizeof(char);
- vsprintf(szTmp, fmt, ap);
-
- /* Convert error message to Unicode. */
-
- nWideLen = MultiByteToWideChar(CP_ACP, 0, szTitle, -1, NULL, 0);
- szWideTitle = (wchar_t*)malloc(sizeof(wchar_t) * nWideLen);
- MultiByteToWideChar(CP_ACP, 0, szTitle, -1, szWideTitle, nWideLen);
-
- nWideLen = MultiByteToWideChar(CP_ACP, 0, szTmp, -1, NULL, 0);
- szWideMsg = (wchar_t*)malloc(sizeof(wchar_t) * nWideLen);
- MultiByteToWideChar(CP_ACP, 0, szTmp, -1, szWideMsg, nWideLen);
-
- /* Display message */
-
- MessageBox(GetFocus(), szWideMsg, szWideTitle, MB_OK | MB_ICONEXCLAMATION);
-
- /* Free resources */
-
- LocalFree(szTitle);
- free(szWideMsg);
- free(szWideTitle);
-}
-
-TIFFErrorHandler _TIFFerrorHandler = Win32ErrorHandler;
-
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_write.c b/src/3rdparty/libtiff/libtiff/tif_write.c
deleted file mode 100644
index ec371361e0..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_write.c
+++ /dev/null
@@ -1,711 +0,0 @@
-/* $Id: tif_write.c,v 1.22.2.4 2009-08-28 02:23:19 bfriesen Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-/*
- * TIFF Library.
- *
- * Scanline-oriented Write Support
- */
-#include "tiffiop.h"
-#include <stdio.h>
-
-#define STRIPINCR 20 /* expansion factor on strip array */
-
-#define WRITECHECKSTRIPS(tif, module) \
- (((tif)->tif_flags&TIFF_BEENWRITING) || TIFFWriteCheck((tif),0,module))
-#define WRITECHECKTILES(tif, module) \
- (((tif)->tif_flags&TIFF_BEENWRITING) || TIFFWriteCheck((tif),1,module))
-#define BUFFERCHECK(tif) \
- ((((tif)->tif_flags & TIFF_BUFFERSETUP) && tif->tif_rawdata) || \
- TIFFWriteBufferSetup((tif), NULL, (tsize_t) -1))
-
-static int TIFFGrowStrips(TIFF*, int, const char*);
-static int TIFFAppendToStrip(TIFF*, tstrip_t, tidata_t, tsize_t);
-
-int
-TIFFWriteScanline(TIFF* tif, tdata_t buf, uint32 row, tsample_t sample)
-{
- static const char module[] = "TIFFWriteScanline";
- register TIFFDirectory *td;
- int status, imagegrew = 0;
- tstrip_t strip;
-
- if (!WRITECHECKSTRIPS(tif, module))
- return (-1);
- /*
- * Handle delayed allocation of data buffer. This
- * permits it to be sized more intelligently (using
- * directory information).
- */
- if (!BUFFERCHECK(tif))
- return (-1);
- td = &tif->tif_dir;
- /*
- * Extend image length if needed
- * (but only for PlanarConfig=1).
- */
- if (row >= td->td_imagelength) { /* extend image */
- if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Can not change \"ImageLength\" when using separate planes");
- return (-1);
- }
- td->td_imagelength = row+1;
- imagegrew = 1;
- }
- /*
- * Calculate strip and check for crossings.
- */
- if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
- if (sample >= td->td_samplesperpixel) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "%d: Sample out of range, max %d",
- sample, td->td_samplesperpixel);
- return (-1);
- }
- strip = sample*td->td_stripsperimage + row/td->td_rowsperstrip;
- } else
- strip = row / td->td_rowsperstrip;
- /*
- * Check strip array to make sure there's space. We don't support
- * dynamically growing files that have data organized in separate
- * bitplanes because it's too painful. In that case we require that
- * the imagelength be set properly before the first write (so that the
- * strips array will be fully allocated above).
- */
- if (strip >= td->td_nstrips && !TIFFGrowStrips(tif, 1, module))
- return (-1);
- if (strip != tif->tif_curstrip) {
- /*
- * Changing strips -- flush any data present.
- */
- if (!TIFFFlushData(tif))
- return (-1);
- tif->tif_curstrip = strip;
- /*
- * Watch out for a growing image. The value of strips/image
- * will initially be 1 (since it can't be deduced until the
- * imagelength is known).
- */
- if (strip >= td->td_stripsperimage && imagegrew)
- td->td_stripsperimage =
- TIFFhowmany(td->td_imagelength,td->td_rowsperstrip);
- tif->tif_row =
- (strip % td->td_stripsperimage) * td->td_rowsperstrip;
- if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
- if (!(*tif->tif_setupencode)(tif))
- return (-1);
- tif->tif_flags |= TIFF_CODERSETUP;
- }
-
- tif->tif_rawcc = 0;
- tif->tif_rawcp = tif->tif_rawdata;
-
- if( td->td_stripbytecount[strip] > 0 )
- {
- /* if we are writing over existing tiles, zero length */
- td->td_stripbytecount[strip] = 0;
-
- /* this forces TIFFAppendToStrip() to do a seek */
- tif->tif_curoff = 0;
- }
-
- if (!(*tif->tif_preencode)(tif, sample))
- return (-1);
- tif->tif_flags |= TIFF_POSTENCODE;
- }
- /*
- * Ensure the write is either sequential or at the
- * beginning of a strip (or that we can randomly
- * access the data -- i.e. no encoding).
- */
- if (row != tif->tif_row) {
- if (row < tif->tif_row) {
- /*
- * Moving backwards within the same strip:
- * backup to the start and then decode
- * forward (below).
- */
- tif->tif_row = (strip % td->td_stripsperimage) *
- td->td_rowsperstrip;
- tif->tif_rawcp = tif->tif_rawdata;
- }
- /*
- * Seek forward to the desired row.
- */
- if (!(*tif->tif_seek)(tif, row - tif->tif_row))
- return (-1);
- tif->tif_row = row;
- }
-
- /* swab if needed - note that source buffer will be altered */
- tif->tif_postdecode( tif, (tidata_t) buf, tif->tif_scanlinesize );
-
- status = (*tif->tif_encoderow)(tif, (tidata_t) buf,
- tif->tif_scanlinesize, sample);
-
- /* we are now poised at the beginning of the next row */
- tif->tif_row = row + 1;
- return (status);
-}
-
-/*
- * Encode the supplied data and write it to the
- * specified strip.
- *
- * NB: Image length must be setup before writing.
- */
-tsize_t
-TIFFWriteEncodedStrip(TIFF* tif, tstrip_t strip, tdata_t data, tsize_t cc)
-{
- static const char module[] = "TIFFWriteEncodedStrip";
- TIFFDirectory *td = &tif->tif_dir;
- tsample_t sample;
-
- if (!WRITECHECKSTRIPS(tif, module))
- return ((tsize_t) -1);
- /*
- * Check strip array to make sure there's space.
- * We don't support dynamically growing files that
- * have data organized in separate bitplanes because
- * it's too painful. In that case we require that
- * the imagelength be set properly before the first
- * write (so that the strips array will be fully
- * allocated above).
- */
- if (strip >= td->td_nstrips) {
- if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Can not grow image by strips when using separate planes");
- return ((tsize_t) -1);
- }
- if (!TIFFGrowStrips(tif, 1, module))
- return ((tsize_t) -1);
- td->td_stripsperimage =
- TIFFhowmany(td->td_imagelength, td->td_rowsperstrip);
- }
- /*
- * Handle delayed allocation of data buffer. This
- * permits it to be sized according to the directory
- * info.
- */
- if (!BUFFERCHECK(tif))
- return ((tsize_t) -1);
- tif->tif_curstrip = strip;
- tif->tif_row = (strip % td->td_stripsperimage) * td->td_rowsperstrip;
- if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
- if (!(*tif->tif_setupencode)(tif))
- return ((tsize_t) -1);
- tif->tif_flags |= TIFF_CODERSETUP;
- }
-
- tif->tif_rawcc = 0;
- tif->tif_rawcp = tif->tif_rawdata;
-
- if( td->td_stripbytecount[strip] > 0 )
- {
- /* Force TIFFAppendToStrip() to consider placing data at end
- of file. */
- tif->tif_curoff = 0;
- }
-
- tif->tif_flags &= ~TIFF_POSTENCODE;
- sample = (tsample_t)(strip / td->td_stripsperimage);
- if (!(*tif->tif_preencode)(tif, sample))
- return ((tsize_t) -1);
-
- /* swab if needed - note that source buffer will be altered */
- tif->tif_postdecode( tif, (tidata_t) data, cc );
-
- if (!(*tif->tif_encodestrip)(tif, (tidata_t) data, cc, sample))
- return ((tsize_t) 0);
- if (!(*tif->tif_postencode)(tif))
- return ((tsize_t) -1);
- if (!isFillOrder(tif, td->td_fillorder) &&
- (tif->tif_flags & TIFF_NOBITREV) == 0)
- TIFFReverseBits(tif->tif_rawdata, tif->tif_rawcc);
- if (tif->tif_rawcc > 0 &&
- !TIFFAppendToStrip(tif, strip, tif->tif_rawdata, tif->tif_rawcc))
- return ((tsize_t) -1);
- tif->tif_rawcc = 0;
- tif->tif_rawcp = tif->tif_rawdata;
- return (cc);
-}
-
-/*
- * Write the supplied data to the specified strip.
- *
- * NB: Image length must be setup before writing.
- */
-tsize_t
-TIFFWriteRawStrip(TIFF* tif, tstrip_t strip, tdata_t data, tsize_t cc)
-{
- static const char module[] = "TIFFWriteRawStrip";
- TIFFDirectory *td = &tif->tif_dir;
-
- if (!WRITECHECKSTRIPS(tif, module))
- return ((tsize_t) -1);
- /*
- * Check strip array to make sure there's space.
- * We don't support dynamically growing files that
- * have data organized in separate bitplanes because
- * it's too painful. In that case we require that
- * the imagelength be set properly before the first
- * write (so that the strips array will be fully
- * allocated above).
- */
- if (strip >= td->td_nstrips) {
- if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name,
- "Can not grow image by strips when using separate planes");
- return ((tsize_t) -1);
- }
- /*
- * Watch out for a growing image. The value of
- * strips/image will initially be 1 (since it
- * can't be deduced until the imagelength is known).
- */
- if (strip >= td->td_stripsperimage)
- td->td_stripsperimage =
- TIFFhowmany(td->td_imagelength,td->td_rowsperstrip);
- if (!TIFFGrowStrips(tif, 1, module))
- return ((tsize_t) -1);
- }
- tif->tif_curstrip = strip;
- tif->tif_row = (strip % td->td_stripsperimage) * td->td_rowsperstrip;
- return (TIFFAppendToStrip(tif, strip, (tidata_t) data, cc) ?
- cc : (tsize_t) -1);
-}
-
-/*
- * Write and compress a tile of data. The
- * tile is selected by the (x,y,z,s) coordinates.
- */
-tsize_t
-TIFFWriteTile(TIFF* tif,
- tdata_t buf, uint32 x, uint32 y, uint32 z, tsample_t s)
-{
- if (!TIFFCheckTile(tif, x, y, z, s))
- return (-1);
- /*
- * NB: A tile size of -1 is used instead of tif_tilesize knowing
- * that TIFFWriteEncodedTile will clamp this to the tile size.
- * This is done because the tile size may not be defined until
- * after the output buffer is setup in TIFFWriteBufferSetup.
- */
- return (TIFFWriteEncodedTile(tif,
- TIFFComputeTile(tif, x, y, z, s), buf, (tsize_t) -1));
-}
-
-/*
- * Encode the supplied data and write it to the
- * specified tile. There must be space for the
- * data. The function clamps individual writes
- * to a tile to the tile size, but does not (and
- * can not) check that multiple writes to the same
- * tile do not write more than tile size data.
- *
- * NB: Image length must be setup before writing; this
- * interface does not support automatically growing
- * the image on each write (as TIFFWriteScanline does).
- */
-tsize_t
-TIFFWriteEncodedTile(TIFF* tif, ttile_t tile, tdata_t data, tsize_t cc)
-{
- static const char module[] = "TIFFWriteEncodedTile";
- TIFFDirectory *td;
- tsample_t sample;
-
- if (!WRITECHECKTILES(tif, module))
- return ((tsize_t) -1);
- td = &tif->tif_dir;
- if (tile >= td->td_nstrips) {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: Tile %lu out of range, max %lu",
- tif->tif_name, (unsigned long) tile, (unsigned long) td->td_nstrips);
- return ((tsize_t) -1);
- }
- /*
- * Handle delayed allocation of data buffer. This
- * permits it to be sized more intelligently (using
- * directory information).
- */
- if (!BUFFERCHECK(tif))
- return ((tsize_t) -1);
- tif->tif_curtile = tile;
-
- tif->tif_rawcc = 0;
- tif->tif_rawcp = tif->tif_rawdata;
-
- if( td->td_stripbytecount[tile] > 0 )
- {
- /* Force TIFFAppendToStrip() to consider placing data at end
- of file. */
- tif->tif_curoff = 0;
- }
-
- /*
- * Compute tiles per row & per column to compute
- * current row and column
- */
- tif->tif_row = (tile % TIFFhowmany(td->td_imagelength, td->td_tilelength))
- * td->td_tilelength;
- tif->tif_col = (tile % TIFFhowmany(td->td_imagewidth, td->td_tilewidth))
- * td->td_tilewidth;
-
- if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
- if (!(*tif->tif_setupencode)(tif))
- return ((tsize_t) -1);
- tif->tif_flags |= TIFF_CODERSETUP;
- }
- tif->tif_flags &= ~TIFF_POSTENCODE;
- sample = (tsample_t)(tile/td->td_stripsperimage);
- if (!(*tif->tif_preencode)(tif, sample))
- return ((tsize_t) -1);
- /*
- * Clamp write amount to the tile size. This is mostly
- * done so that callers can pass in some large number
- * (e.g. -1) and have the tile size used instead.
- */
- if ( cc < 1 || cc > tif->tif_tilesize)
- cc = tif->tif_tilesize;
-
- /* swab if needed - note that source buffer will be altered */
- tif->tif_postdecode( tif, (tidata_t) data, cc );
-
- if (!(*tif->tif_encodetile)(tif, (tidata_t) data, cc, sample))
- return ((tsize_t) 0);
- if (!(*tif->tif_postencode)(tif))
- return ((tsize_t) -1);
- if (!isFillOrder(tif, td->td_fillorder) &&
- (tif->tif_flags & TIFF_NOBITREV) == 0)
- TIFFReverseBits((unsigned char *)tif->tif_rawdata, tif->tif_rawcc);
- if (tif->tif_rawcc > 0 && !TIFFAppendToStrip(tif, tile,
- tif->tif_rawdata, tif->tif_rawcc))
- return ((tsize_t) -1);
- tif->tif_rawcc = 0;
- tif->tif_rawcp = tif->tif_rawdata;
- return (cc);
-}
-
-/*
- * Write the supplied data to the specified strip.
- * There must be space for the data; we don't check
- * if strips overlap!
- *
- * NB: Image length must be setup before writing; this
- * interface does not support automatically growing
- * the image on each write (as TIFFWriteScanline does).
- */
-tsize_t
-TIFFWriteRawTile(TIFF* tif, ttile_t tile, tdata_t data, tsize_t cc)
-{
- static const char module[] = "TIFFWriteRawTile";
-
- if (!WRITECHECKTILES(tif, module))
- return ((tsize_t) -1);
- if (tile >= tif->tif_dir.td_nstrips) {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: Tile %lu out of range, max %lu",
- tif->tif_name, (unsigned long) tile,
- (unsigned long) tif->tif_dir.td_nstrips);
- return ((tsize_t) -1);
- }
- return (TIFFAppendToStrip(tif, tile, (tidata_t) data, cc) ?
- cc : (tsize_t) -1);
-}
-
-#define isUnspecified(tif, f) \
- (TIFFFieldSet(tif,f) && (tif)->tif_dir.td_imagelength == 0)
-
-int
-TIFFSetupStrips(TIFF* tif)
-{
- TIFFDirectory* td = &tif->tif_dir;
-
- if (isTiled(tif))
- td->td_stripsperimage =
- isUnspecified(tif, FIELD_TILEDIMENSIONS) ?
- td->td_samplesperpixel : TIFFNumberOfTiles(tif);
- else
- td->td_stripsperimage =
- isUnspecified(tif, FIELD_ROWSPERSTRIP) ?
- td->td_samplesperpixel : TIFFNumberOfStrips(tif);
- td->td_nstrips = td->td_stripsperimage;
- if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
- td->td_stripsperimage /= td->td_samplesperpixel;
- td->td_stripoffset = (uint32 *)
- _TIFFmalloc(td->td_nstrips * sizeof (uint32));
- td->td_stripbytecount = (uint32 *)
- _TIFFmalloc(td->td_nstrips * sizeof (uint32));
- if (td->td_stripoffset == NULL || td->td_stripbytecount == NULL)
- return (0);
- /*
- * Place data at the end-of-file
- * (by setting offsets to zero).
- */
- _TIFFmemset(td->td_stripoffset, 0, td->td_nstrips*sizeof (uint32));
- _TIFFmemset(td->td_stripbytecount, 0, td->td_nstrips*sizeof (uint32));
- TIFFSetFieldBit(tif, FIELD_STRIPOFFSETS);
- TIFFSetFieldBit(tif, FIELD_STRIPBYTECOUNTS);
- return (1);
-}
-#undef isUnspecified
-
-/*
- * Verify file is writable and that the directory
- * information is setup properly. In doing the latter
- * we also "freeze" the state of the directory so
- * that important information is not changed.
- */
-int
-TIFFWriteCheck(TIFF* tif, int tiles, const char* module)
-{
- if (tif->tif_mode == O_RDONLY) {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: File not open for writing",
- tif->tif_name);
- return (0);
- }
- if (tiles ^ isTiled(tif)) {
- TIFFErrorExt(tif->tif_clientdata, tif->tif_name, tiles ?
- "Can not write tiles to a stripped image" :
- "Can not write scanlines to a tiled image");
- return (0);
- }
-
- /*
- * On the first write verify all the required information
- * has been setup and initialize any data structures that
- * had to wait until directory information was set.
- * Note that a lot of our work is assumed to remain valid
- * because we disallow any of the important parameters
- * from changing after we start writing (i.e. once
- * TIFF_BEENWRITING is set, TIFFSetField will only allow
- * the image's length to be changed).
- */
- if (!TIFFFieldSet(tif, FIELD_IMAGEDIMENSIONS)) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Must set \"ImageWidth\" before writing data",
- tif->tif_name);
- return (0);
- }
- if (tif->tif_dir.td_samplesperpixel == 1) {
- /*
- * Planarconfiguration is irrelevant in case of single band
- * images and need not be included. We will set it anyway,
- * because this field is used in other parts of library even
- * in the single band case.
- */
- if (!TIFFFieldSet(tif, FIELD_PLANARCONFIG))
- tif->tif_dir.td_planarconfig = PLANARCONFIG_CONTIG;
- } else {
- if (!TIFFFieldSet(tif, FIELD_PLANARCONFIG)) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Must set \"PlanarConfiguration\" before writing data",
- tif->tif_name);
- return (0);
- }
- }
- if (tif->tif_dir.td_stripoffset == NULL && !TIFFSetupStrips(tif)) {
- tif->tif_dir.td_nstrips = 0;
- TIFFErrorExt(tif->tif_clientdata, module, "%s: No space for %s arrays",
- tif->tif_name, isTiled(tif) ? "tile" : "strip");
- return (0);
- }
- tif->tif_tilesize = isTiled(tif) ? TIFFTileSize(tif) : (tsize_t) -1;
- tif->tif_scanlinesize = TIFFScanlineSize(tif);
- tif->tif_flags |= TIFF_BEENWRITING;
- return (1);
-}
-
-/*
- * Setup the raw data buffer used for encoding.
- */
-int
-TIFFWriteBufferSetup(TIFF* tif, tdata_t bp, tsize_t size)
-{
- static const char module[] = "TIFFWriteBufferSetup";
-
- if (tif->tif_rawdata) {
- if (tif->tif_flags & TIFF_MYBUFFER) {
- _TIFFfree(tif->tif_rawdata);
- tif->tif_flags &= ~TIFF_MYBUFFER;
- }
- tif->tif_rawdata = NULL;
- }
- if (size == (tsize_t) -1) {
- size = (isTiled(tif) ?
- tif->tif_tilesize : TIFFStripSize(tif));
- /*
- * Make raw data buffer at least 8K
- */
- if (size < 8*1024)
- size = 8*1024;
- bp = NULL; /* NB: force malloc */
- }
- if (bp == NULL) {
- bp = _TIFFmalloc(size);
- if (bp == NULL) {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: No space for output buffer",
- tif->tif_name);
- return (0);
- }
- tif->tif_flags |= TIFF_MYBUFFER;
- } else
- tif->tif_flags &= ~TIFF_MYBUFFER;
- tif->tif_rawdata = (tidata_t) bp;
- tif->tif_rawdatasize = size;
- tif->tif_rawcc = 0;
- tif->tif_rawcp = tif->tif_rawdata;
- tif->tif_flags |= TIFF_BUFFERSETUP;
- return (1);
-}
-
-/*
- * Grow the strip data structures by delta strips.
- */
-static int
-TIFFGrowStrips(TIFF* tif, int delta, const char* module)
-{
- TIFFDirectory *td = &tif->tif_dir;
- uint32 *new_stripoffset, *new_stripbytecount;
-
- assert(td->td_planarconfig == PLANARCONFIG_CONTIG);
- new_stripoffset = (uint32*)_TIFFrealloc(td->td_stripoffset,
- (td->td_nstrips + delta) * sizeof (uint32));
- new_stripbytecount = (uint32*)_TIFFrealloc(td->td_stripbytecount,
- (td->td_nstrips + delta) * sizeof (uint32));
- if (new_stripoffset == NULL || new_stripbytecount == NULL) {
- if (new_stripoffset)
- _TIFFfree(new_stripoffset);
- if (new_stripbytecount)
- _TIFFfree(new_stripbytecount);
- td->td_nstrips = 0;
- TIFFErrorExt(tif->tif_clientdata, module, "%s: No space to expand strip arrays",
- tif->tif_name);
- return (0);
- }
- td->td_stripoffset = new_stripoffset;
- td->td_stripbytecount = new_stripbytecount;
- _TIFFmemset(td->td_stripoffset + td->td_nstrips,
- 0, delta*sizeof (uint32));
- _TIFFmemset(td->td_stripbytecount + td->td_nstrips,
- 0, delta*sizeof (uint32));
- td->td_nstrips += delta;
- return (1);
-}
-
-/*
- * Append the data to the specified strip.
- */
-static int
-TIFFAppendToStrip(TIFF* tif, tstrip_t strip, tidata_t data, tsize_t cc)
-{
- static const char module[] = "TIFFAppendToStrip";
- TIFFDirectory *td = &tif->tif_dir;
-
- if (td->td_stripoffset[strip] == 0 || tif->tif_curoff == 0) {
- assert(td->td_nstrips > 0);
-
- if( td->td_stripbytecount[strip] != 0
- && td->td_stripoffset[strip] != 0
- && td->td_stripbytecount[strip] >= cc )
- {
- /*
- * There is already tile data on disk, and the new tile
- * data we have to will fit in the same space. The only
- * aspect of this that is risky is that there could be
- * more data to append to this strip before we are done
- * depending on how we are getting called.
- */
- if (!SeekOK(tif, td->td_stripoffset[strip])) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "Seek error at scanline %lu",
- (unsigned long)tif->tif_row);
- return (0);
- }
- }
- else
- {
- /*
- * Seek to end of file, and set that as our location to
- * write this strip.
- */
- td->td_stripoffset[strip] = TIFFSeekFile(tif, 0, SEEK_END);
- }
-
- tif->tif_curoff = td->td_stripoffset[strip];
-
- /*
- * We are starting a fresh strip/tile, so set the size to zero.
- */
- td->td_stripbytecount[strip] = 0;
- }
-
- if (!WriteOK(tif, data, cc)) {
- TIFFErrorExt(tif->tif_clientdata, module, "Write error at scanline %lu",
- (unsigned long) tif->tif_row);
- return (0);
- }
- tif->tif_curoff = tif->tif_curoff+cc;
- td->td_stripbytecount[strip] += cc;
- return (1);
-}
-
-/*
- * Internal version of TIFFFlushData that can be
- * called by ``encodestrip routines'' w/o concern
- * for infinite recursion.
- */
-int
-TIFFFlushData1(TIFF* tif)
-{
- if (tif->tif_rawcc > 0) {
- if (!isFillOrder(tif, tif->tif_dir.td_fillorder) &&
- (tif->tif_flags & TIFF_NOBITREV) == 0)
- TIFFReverseBits((unsigned char *)tif->tif_rawdata,
- tif->tif_rawcc);
- if (!TIFFAppendToStrip(tif,
- isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip,
- tif->tif_rawdata, tif->tif_rawcc))
- return (0);
- tif->tif_rawcc = 0;
- tif->tif_rawcp = tif->tif_rawdata;
- }
- return (1);
-}
-
-/*
- * Set the current write offset. This should only be
- * used to set the offset to a known previous location
- * (very carefully), or to 0 so that the next write gets
- * appended to the end of the file.
- */
-void
-TIFFSetWriteOffset(TIFF* tif, toff_t off)
-{
- tif->tif_curoff = off;
-}
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tif_zip.c b/src/3rdparty/libtiff/libtiff/tif_zip.c
deleted file mode 100644
index 38a5773891..0000000000
--- a/src/3rdparty/libtiff/libtiff/tif_zip.c
+++ /dev/null
@@ -1,412 +0,0 @@
-/* $Id: tif_zip.c,v 1.11.2.3 2007/11/22 21:24:51 fwarmerdam Exp $ */
-
-/*
- * Copyright (c) 1995-1997 Sam Leffler
- * Copyright (c) 1995-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#include "tiffiop.h"
-#ifdef ZIP_SUPPORT
-/*
- * TIFF Library.
- *
- * ZIP (aka Deflate) Compression Support
- *
- * This file is simply an interface to the zlib library written by
- * Jean-loup Gailly and Mark Adler. You must use version 1.0 or later
- * of the library: this code assumes the 1.0 API and also depends on
- * the ability to write the zlib header multiple times (one per strip)
- * which was not possible with versions prior to 0.95. Note also that
- * older versions of this codec avoided this bug by supressing the header
- * entirely. This means that files written with the old library cannot
- * be read; they should be converted to a different compression scheme
- * and then reconverted.
- *
- * The data format used by the zlib library is described in the files
- * zlib-3.1.doc, deflate-1.1.doc and gzip-4.1.doc, available in the
- * directory ftp://ftp.uu.net/pub/archiving/zip/doc. The library was
- * last found at ftp://ftp.uu.net/pub/archiving/zip/zlib/zlib-0.99.tar.gz.
- */
-#include "tif_predict.h"
-#include "zlib.h"
-
-#include <stdio.h>
-
-/*
- * Sigh, ZLIB_VERSION is defined as a string so there's no
- * way to do a proper check here. Instead we guess based
- * on the presence of #defines that were added between the
- * 0.95 and 1.0 distributions.
- */
-#if !defined(Z_NO_COMPRESSION) || !defined(Z_DEFLATED)
-#error "Antiquated ZLIB software; you must use version 1.0 or later"
-#endif
-
-/*
- * State block for each open TIFF
- * file using ZIP compression/decompression.
- */
-typedef struct {
- TIFFPredictorState predict;
- z_stream stream;
- int zipquality; /* compression level */
- int state; /* state flags */
-#define ZSTATE_INIT_DECODE 0x01
-#define ZSTATE_INIT_ENCODE 0x02
-
- TIFFVGetMethod vgetparent; /* super-class method */
- TIFFVSetMethod vsetparent; /* super-class method */
-} ZIPState;
-
-#define ZState(tif) ((ZIPState*) (tif)->tif_data)
-#define DecoderState(tif) ZState(tif)
-#define EncoderState(tif) ZState(tif)
-
-static int ZIPEncode(TIFF*, tidata_t, tsize_t, tsample_t);
-static int ZIPDecode(TIFF*, tidata_t, tsize_t, tsample_t);
-
-static int
-ZIPSetupDecode(TIFF* tif)
-{
- ZIPState* sp = DecoderState(tif);
- static const char module[] = "ZIPSetupDecode";
-
- assert(sp != NULL);
-
- /* if we were last encoding, terminate this mode */
- if (sp->state & ZSTATE_INIT_ENCODE) {
- deflateEnd(&sp->stream);
- sp->state = 0;
- }
-
- if (inflateInit(&sp->stream) != Z_OK) {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: %s", tif->tif_name, sp->stream.msg);
- return (0);
- } else {
- sp->state |= ZSTATE_INIT_DECODE;
- return (1);
- }
-}
-
-/*
- * Setup state for decoding a strip.
- */
-static int
-ZIPPreDecode(TIFF* tif, tsample_t s)
-{
- ZIPState* sp = DecoderState(tif);
-
- (void) s;
- assert(sp != NULL);
-
- if( (sp->state & ZSTATE_INIT_DECODE) == 0 )
- tif->tif_setupdecode( tif );
-
- sp->stream.next_in = tif->tif_rawdata;
- sp->stream.avail_in = tif->tif_rawcc;
- return (inflateReset(&sp->stream) == Z_OK);
-}
-
-static int
-ZIPDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
-{
- ZIPState* sp = DecoderState(tif);
- static const char module[] = "ZIPDecode";
-
- (void) s;
- assert(sp != NULL);
- assert(sp->state == ZSTATE_INIT_DECODE);
-
- sp->stream.next_out = op;
- sp->stream.avail_out = occ;
- do {
- int state = inflate(&sp->stream, Z_PARTIAL_FLUSH);
- if (state == Z_STREAM_END)
- break;
- if (state == Z_DATA_ERROR) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Decoding error at scanline %d, %s",
- tif->tif_name, tif->tif_row, sp->stream.msg);
- if (inflateSync(&sp->stream) != Z_OK)
- return (0);
- continue;
- }
- if (state != Z_OK) {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",
- tif->tif_name, sp->stream.msg);
- return (0);
- }
- } while (sp->stream.avail_out > 0);
- if (sp->stream.avail_out != 0) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "%s: Not enough data at scanline %d (short %d bytes)",
- tif->tif_name, tif->tif_row, sp->stream.avail_out);
- return (0);
- }
- return (1);
-}
-
-static int
-ZIPSetupEncode(TIFF* tif)
-{
- ZIPState* sp = EncoderState(tif);
- static const char module[] = "ZIPSetupEncode";
-
- assert(sp != NULL);
- if (sp->state & ZSTATE_INIT_DECODE) {
- inflateEnd(&sp->stream);
- sp->state = 0;
- }
-
- if (deflateInit(&sp->stream, sp->zipquality) != Z_OK) {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: %s", tif->tif_name, sp->stream.msg);
- return (0);
- } else {
- sp->state |= ZSTATE_INIT_ENCODE;
- return (1);
- }
-}
-
-/*
- * Reset encoding state at the start of a strip.
- */
-static int
-ZIPPreEncode(TIFF* tif, tsample_t s)
-{
- ZIPState *sp = EncoderState(tif);
-
- (void) s;
- assert(sp != NULL);
- if( sp->state != ZSTATE_INIT_ENCODE )
- tif->tif_setupencode( tif );
-
- sp->stream.next_out = tif->tif_rawdata;
- sp->stream.avail_out = tif->tif_rawdatasize;
- return (deflateReset(&sp->stream) == Z_OK);
-}
-
-/*
- * Encode a chunk of pixels.
- */
-static int
-ZIPEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
-{
- ZIPState *sp = EncoderState(tif);
- static const char module[] = "ZIPEncode";
-
- assert(sp != NULL);
- assert(sp->state == ZSTATE_INIT_ENCODE);
-
- (void) s;
- sp->stream.next_in = bp;
- sp->stream.avail_in = cc;
- do {
- if (deflate(&sp->stream, Z_NO_FLUSH) != Z_OK) {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: Encoder error: %s",
- tif->tif_name, sp->stream.msg);
- return (0);
- }
- if (sp->stream.avail_out == 0) {
- tif->tif_rawcc = tif->tif_rawdatasize;
- TIFFFlushData1(tif);
- sp->stream.next_out = tif->tif_rawdata;
- sp->stream.avail_out = tif->tif_rawdatasize;
- }
- } while (sp->stream.avail_in > 0);
- return (1);
-}
-
-/*
- * Finish off an encoded strip by flushing the last
- * string and tacking on an End Of Information code.
- */
-static int
-ZIPPostEncode(TIFF* tif)
-{
- ZIPState *sp = EncoderState(tif);
- static const char module[] = "ZIPPostEncode";
- int state;
-
- sp->stream.avail_in = 0;
- do {
- state = deflate(&sp->stream, Z_FINISH);
- switch (state) {
- case Z_STREAM_END:
- case Z_OK:
- if ((int)sp->stream.avail_out != (int)tif->tif_rawdatasize)
- {
- tif->tif_rawcc =
- tif->tif_rawdatasize - sp->stream.avail_out;
- TIFFFlushData1(tif);
- sp->stream.next_out = tif->tif_rawdata;
- sp->stream.avail_out = tif->tif_rawdatasize;
- }
- break;
- default:
- TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",
- tif->tif_name, sp->stream.msg);
- return (0);
- }
- } while (state != Z_STREAM_END);
- return (1);
-}
-
-static void
-ZIPCleanup(TIFF* tif)
-{
- ZIPState* sp = ZState(tif);
-
- assert(sp != 0);
-
- (void)TIFFPredictorCleanup(tif);
-
- tif->tif_tagmethods.vgetfield = sp->vgetparent;
- tif->tif_tagmethods.vsetfield = sp->vsetparent;
-
- if (sp->state & ZSTATE_INIT_ENCODE) {
- deflateEnd(&sp->stream);
- sp->state = 0;
- } else if( sp->state & ZSTATE_INIT_DECODE) {
- inflateEnd(&sp->stream);
- sp->state = 0;
- }
- _TIFFfree(sp);
- tif->tif_data = NULL;
-
- _TIFFSetDefaultCompressionState(tif);
-}
-
-static int
-ZIPVSetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- ZIPState* sp = ZState(tif);
- static const char module[] = "ZIPVSetField";
-
- switch (tag) {
- case TIFFTAG_ZIPQUALITY:
- sp->zipquality = va_arg(ap, int);
- if ( sp->state&ZSTATE_INIT_ENCODE ) {
- if (deflateParams(&sp->stream,
- sp->zipquality, Z_DEFAULT_STRATEGY) != Z_OK) {
- TIFFErrorExt(tif->tif_clientdata, module, "%s: zlib error: %s",
- tif->tif_name, sp->stream.msg);
- return (0);
- }
- }
- return (1);
- default:
- return (*sp->vsetparent)(tif, tag, ap);
- }
- /*NOTREACHED*/
-}
-
-static int
-ZIPVGetField(TIFF* tif, ttag_t tag, va_list ap)
-{
- ZIPState* sp = ZState(tif);
-
- switch (tag) {
- case TIFFTAG_ZIPQUALITY:
- *va_arg(ap, int*) = sp->zipquality;
- break;
- default:
- return (*sp->vgetparent)(tif, tag, ap);
- }
- return (1);
-}
-
-static const TIFFFieldInfo zipFieldInfo[] = {
- { TIFFTAG_ZIPQUALITY, 0, 0, TIFF_ANY, FIELD_PSEUDO,
- TRUE, FALSE, "" },
-};
-
-int
-TIFFInitZIP(TIFF* tif, int scheme)
-{
- static const char module[] = "TIFFInitZIP";
- ZIPState* sp;
-
- assert( (scheme == COMPRESSION_DEFLATE)
- || (scheme == COMPRESSION_ADOBE_DEFLATE));
-
- /*
- * Merge codec-specific tag information.
- */
- if (!_TIFFMergeFieldInfo(tif, zipFieldInfo,
- TIFFArrayCount(zipFieldInfo))) {
- TIFFErrorExt(tif->tif_clientdata, module,
- "Merging Deflate codec-specific tags failed");
- return 0;
- }
-
- /*
- * Allocate state block so tag methods have storage to record values.
- */
- tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (ZIPState));
- if (tif->tif_data == NULL)
- goto bad;
- sp = ZState(tif);
- sp->stream.zalloc = NULL;
- sp->stream.zfree = NULL;
- sp->stream.opaque = NULL;
- sp->stream.data_type = Z_BINARY;
-
- /*
- * Override parent get/set field methods.
- */
- sp->vgetparent = tif->tif_tagmethods.vgetfield;
- tif->tif_tagmethods.vgetfield = ZIPVGetField; /* hook for codec tags */
- sp->vsetparent = tif->tif_tagmethods.vsetfield;
- tif->tif_tagmethods.vsetfield = ZIPVSetField; /* hook for codec tags */
-
- /* Default values for codec-specific fields */
- sp->zipquality = Z_DEFAULT_COMPRESSION; /* default comp. level */
- sp->state = 0;
-
- /*
- * Install codec methods.
- */
- tif->tif_setupdecode = ZIPSetupDecode;
- tif->tif_predecode = ZIPPreDecode;
- tif->tif_decoderow = ZIPDecode;
- tif->tif_decodestrip = ZIPDecode;
- tif->tif_decodetile = ZIPDecode;
- tif->tif_setupencode = ZIPSetupEncode;
- tif->tif_preencode = ZIPPreEncode;
- tif->tif_postencode = ZIPPostEncode;
- tif->tif_encoderow = ZIPEncode;
- tif->tif_encodestrip = ZIPEncode;
- tif->tif_encodetile = ZIPEncode;
- tif->tif_cleanup = ZIPCleanup;
- /*
- * Setup predictor setup.
- */
- (void) TIFFPredictorInit(tif);
- return (1);
-bad:
- TIFFErrorExt(tif->tif_clientdata, module,
- "No space for ZIP state block");
- return (0);
-}
-#endif /* ZIP_SUPORT */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tiff.h b/src/3rdparty/libtiff/libtiff/tiff.h
deleted file mode 100644
index 82116712a0..0000000000
--- a/src/3rdparty/libtiff/libtiff/tiff.h
+++ /dev/null
@@ -1,647 +0,0 @@
-/* $Id: tiff.h,v 1.43 2006-10-05 15:20:40 dron Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#ifndef _TIFF_
-#define _TIFF_
-
-#include "tiffconf.h"
-
-/*
- * Tag Image File Format (TIFF)
- *
- * Based on Rev 6.0 from:
- * Developer's Desk
- * Aldus Corporation
- * 411 First Ave. South
- * Suite 200
- * Seattle, WA 98104
- * 206-622-5500
- *
- * (http://partners.adobe.com/asn/developer/PDFS/TN/TIFF6.pdf)
- *
- * For Big TIFF design notes see the following link
- * http://www.remotesensing.org/libtiff/bigtiffdesign.html
- */
-#define TIFF_VERSION 42
-#define TIFF_BIGTIFF_VERSION 43
-
-#define TIFF_BIGENDIAN 0x4d4d
-#define TIFF_LITTLEENDIAN 0x4949
-#define MDI_LITTLEENDIAN 0x5045
-#define MDI_BIGENDIAN 0x4550
-/*
- * Intrinsic data types required by the file format:
- *
- * 8-bit quantities int8/uint8
- * 16-bit quantities int16/uint16
- * 32-bit quantities int32/uint32
- * strings unsigned char*
- */
-
-#ifndef HAVE_INT8
-typedef signed char int8; /* NB: non-ANSI compilers may not grok */
-#endif
-typedef unsigned char uint8;
-#ifndef HAVE_INT16
-typedef short int16;
-#endif
-typedef unsigned short uint16; /* sizeof (uint16) must == 2 */
-#if SIZEOF_INT == 4
-#ifndef HAVE_INT32
-typedef int int32;
-#endif
-typedef unsigned int uint32; /* sizeof (uint32) must == 4 */
-#elif SIZEOF_LONG == 4
-#ifndef HAVE_INT32
-typedef long int32;
-#endif
-typedef unsigned long uint32; /* sizeof (uint32) must == 4 */
-#endif
-
-/* For TIFFReassignTagToIgnore */
-enum TIFFIgnoreSense /* IGNORE tag table */
-{
- TIS_STORE,
- TIS_EXTRACT,
- TIS_EMPTY
-};
-
-/*
- * TIFF header.
- */
-typedef struct {
- uint16 tiff_magic; /* magic number (defines byte order) */
-#define TIFF_MAGIC_SIZE 2
- uint16 tiff_version; /* TIFF version number */
-#define TIFF_VERSION_SIZE 2
- uint32 tiff_diroff; /* byte offset to first directory */
-#define TIFF_DIROFFSET_SIZE 4
-} TIFFHeader;
-
-
-/*
- * TIFF Image File Directories are comprised of a table of field
- * descriptors of the form shown below. The table is sorted in
- * ascending order by tag. The values associated with each entry are
- * disjoint and may appear anywhere in the file (so long as they are
- * placed on a word boundary).
- *
- * If the value is 4 bytes or less, then it is placed in the offset
- * field to save space. If the value is less than 4 bytes, it is
- * left-justified in the offset field.
- */
-typedef struct {
- uint16 tdir_tag; /* see below */
- uint16 tdir_type; /* data type; see below */
- uint32 tdir_count; /* number of items; length in spec */
- uint32 tdir_offset; /* byte offset to field data */
-} TIFFDirEntry;
-
-/*
- * NB: In the comments below,
- * - items marked with a + are obsoleted by revision 5.0,
- * - items marked with a ! are introduced in revision 6.0.
- * - items marked with a % are introduced post revision 6.0.
- * - items marked with a $ are obsoleted by revision 6.0.
- * - items marked with a & are introduced by Adobe DNG specification.
- */
-
-/*
- * Tag data type information.
- *
- * Note: RATIONALs are the ratio of two 32-bit integer values.
- */
-typedef enum {
- TIFF_NOTYPE = 0, /* placeholder */
- TIFF_BYTE = 1, /* 8-bit unsigned integer */
- TIFF_ASCII = 2, /* 8-bit bytes w/ last byte null */
- TIFF_SHORT = 3, /* 16-bit unsigned integer */
- TIFF_LONG = 4, /* 32-bit unsigned integer */
- TIFF_RATIONAL = 5, /* 64-bit unsigned fraction */
- TIFF_SBYTE = 6, /* !8-bit signed integer */
- TIFF_UNDEFINED = 7, /* !8-bit untyped data */
- TIFF_SSHORT = 8, /* !16-bit signed integer */
- TIFF_SLONG = 9, /* !32-bit signed integer */
- TIFF_SRATIONAL = 10, /* !64-bit signed fraction */
- TIFF_FLOAT = 11, /* !32-bit IEEE floating point */
- TIFF_DOUBLE = 12, /* !64-bit IEEE floating point */
- TIFF_IFD = 13 /* %32-bit unsigned integer (offset) */
-} TIFFDataType;
-
-/*
- * TIFF Tag Definitions.
- */
-#define TIFFTAG_SUBFILETYPE 254 /* subfile data descriptor */
-#define FILETYPE_REDUCEDIMAGE 0x1 /* reduced resolution version */
-#define FILETYPE_PAGE 0x2 /* one page of many */
-#define FILETYPE_MASK 0x4 /* transparency mask */
-#define TIFFTAG_OSUBFILETYPE 255 /* +kind of data in subfile */
-#define OFILETYPE_IMAGE 1 /* full resolution image data */
-#define OFILETYPE_REDUCEDIMAGE 2 /* reduced size image data */
-#define OFILETYPE_PAGE 3 /* one page of many */
-#define TIFFTAG_IMAGEWIDTH 256 /* image width in pixels */
-#define TIFFTAG_IMAGELENGTH 257 /* image height in pixels */
-#define TIFFTAG_BITSPERSAMPLE 258 /* bits per channel (sample) */
-#define TIFFTAG_COMPRESSION 259 /* data compression technique */
-#define COMPRESSION_NONE 1 /* dump mode */
-#define COMPRESSION_CCITTRLE 2 /* CCITT modified Huffman RLE */
-#define COMPRESSION_CCITTFAX3 3 /* CCITT Group 3 fax encoding */
-#define COMPRESSION_CCITT_T4 3 /* CCITT T.4 (TIFF 6 name) */
-#define COMPRESSION_CCITTFAX4 4 /* CCITT Group 4 fax encoding */
-#define COMPRESSION_CCITT_T6 4 /* CCITT T.6 (TIFF 6 name) */
-#define COMPRESSION_LZW 5 /* Lempel-Ziv & Welch */
-#define COMPRESSION_OJPEG 6 /* !6.0 JPEG */
-#define COMPRESSION_JPEG 7 /* %JPEG DCT compression */
-#define COMPRESSION_NEXT 32766 /* NeXT 2-bit RLE */
-#define COMPRESSION_CCITTRLEW 32771 /* #1 w/ word alignment */
-#define COMPRESSION_PACKBITS 32773 /* Macintosh RLE */
-#define COMPRESSION_THUNDERSCAN 32809 /* ThunderScan RLE */
-/* codes 32895-32898 are reserved for ANSI IT8 TIFF/IT <dkelly@apago.com) */
-#define COMPRESSION_IT8CTPAD 32895 /* IT8 CT w/padding */
-#define COMPRESSION_IT8LW 32896 /* IT8 Linework RLE */
-#define COMPRESSION_IT8MP 32897 /* IT8 Monochrome picture */
-#define COMPRESSION_IT8BL 32898 /* IT8 Binary line art */
-/* compression codes 32908-32911 are reserved for Pixar */
-#define COMPRESSION_PIXARFILM 32908 /* Pixar companded 10bit LZW */
-#define COMPRESSION_PIXARLOG 32909 /* Pixar companded 11bit ZIP */
-#define COMPRESSION_DEFLATE 32946 /* Deflate compression */
-#define COMPRESSION_ADOBE_DEFLATE 8 /* Deflate compression,
- as recognized by Adobe */
-/* compression code 32947 is reserved for Oceana Matrix <dev@oceana.com> */
-#define COMPRESSION_DCS 32947 /* Kodak DCS encoding */
-#define COMPRESSION_JBIG 34661 /* ISO JBIG */
-#define COMPRESSION_SGILOG 34676 /* SGI Log Luminance RLE */
-#define COMPRESSION_SGILOG24 34677 /* SGI Log 24-bit packed */
-#define COMPRESSION_JP2000 34712 /* Leadtools JPEG2000 */
-#define TIFFTAG_PHOTOMETRIC 262 /* photometric interpretation */
-#define PHOTOMETRIC_MINISWHITE 0 /* min value is white */
-#define PHOTOMETRIC_MINISBLACK 1 /* min value is black */
-#define PHOTOMETRIC_RGB 2 /* RGB color model */
-#define PHOTOMETRIC_PALETTE 3 /* color map indexed */
-#define PHOTOMETRIC_MASK 4 /* $holdout mask */
-#define PHOTOMETRIC_SEPARATED 5 /* !color separations */
-#define PHOTOMETRIC_YCBCR 6 /* !CCIR 601 */
-#define PHOTOMETRIC_CIELAB 8 /* !1976 CIE L*a*b* */
-#define PHOTOMETRIC_ICCLAB 9 /* ICC L*a*b* [Adobe TIFF Technote 4] */
-#define PHOTOMETRIC_ITULAB 10 /* ITU L*a*b* */
-#define PHOTOMETRIC_LOGL 32844 /* CIE Log2(L) */
-#define PHOTOMETRIC_LOGLUV 32845 /* CIE Log2(L) (u',v') */
-#define TIFFTAG_THRESHHOLDING 263 /* +thresholding used on data */
-#define THRESHHOLD_BILEVEL 1 /* b&w art scan */
-#define THRESHHOLD_HALFTONE 2 /* or dithered scan */
-#define THRESHHOLD_ERRORDIFFUSE 3 /* usually floyd-steinberg */
-#define TIFFTAG_CELLWIDTH 264 /* +dithering matrix width */
-#define TIFFTAG_CELLLENGTH 265 /* +dithering matrix height */
-#define TIFFTAG_FILLORDER 266 /* data order within a byte */
-#define FILLORDER_MSB2LSB 1 /* most significant -> least */
-#define FILLORDER_LSB2MSB 2 /* least significant -> most */
-#define TIFFTAG_DOCUMENTNAME 269 /* name of doc. image is from */
-#define TIFFTAG_IMAGEDESCRIPTION 270 /* info about image */
-#define TIFFTAG_MAKE 271 /* scanner manufacturer name */
-#define TIFFTAG_MODEL 272 /* scanner model name/number */
-#define TIFFTAG_STRIPOFFSETS 273 /* offsets to data strips */
-#define TIFFTAG_ORIENTATION 274 /* +image orientation */
-#define ORIENTATION_TOPLEFT 1 /* row 0 top, col 0 lhs */
-#define ORIENTATION_TOPRIGHT 2 /* row 0 top, col 0 rhs */
-#define ORIENTATION_BOTRIGHT 3 /* row 0 bottom, col 0 rhs */
-#define ORIENTATION_BOTLEFT 4 /* row 0 bottom, col 0 lhs */
-#define ORIENTATION_LEFTTOP 5 /* row 0 lhs, col 0 top */
-#define ORIENTATION_RIGHTTOP 6 /* row 0 rhs, col 0 top */
-#define ORIENTATION_RIGHTBOT 7 /* row 0 rhs, col 0 bottom */
-#define ORIENTATION_LEFTBOT 8 /* row 0 lhs, col 0 bottom */
-#define TIFFTAG_SAMPLESPERPIXEL 277 /* samples per pixel */
-#define TIFFTAG_ROWSPERSTRIP 278 /* rows per strip of data */
-#define TIFFTAG_STRIPBYTECOUNTS 279 /* bytes counts for strips */
-#define TIFFTAG_MINSAMPLEVALUE 280 /* +minimum sample value */
-#define TIFFTAG_MAXSAMPLEVALUE 281 /* +maximum sample value */
-#define TIFFTAG_XRESOLUTION 282 /* pixels/resolution in x */
-#define TIFFTAG_YRESOLUTION 283 /* pixels/resolution in y */
-#define TIFFTAG_PLANARCONFIG 284 /* storage organization */
-#define PLANARCONFIG_CONTIG 1 /* single image plane */
-#define PLANARCONFIG_SEPARATE 2 /* separate planes of data */
-#define TIFFTAG_PAGENAME 285 /* page name image is from */
-#define TIFFTAG_XPOSITION 286 /* x page offset of image lhs */
-#define TIFFTAG_YPOSITION 287 /* y page offset of image lhs */
-#define TIFFTAG_FREEOFFSETS 288 /* +byte offset to free block */
-#define TIFFTAG_FREEBYTECOUNTS 289 /* +sizes of free blocks */
-#define TIFFTAG_GRAYRESPONSEUNIT 290 /* $gray scale curve accuracy */
-#define GRAYRESPONSEUNIT_10S 1 /* tenths of a unit */
-#define GRAYRESPONSEUNIT_100S 2 /* hundredths of a unit */
-#define GRAYRESPONSEUNIT_1000S 3 /* thousandths of a unit */
-#define GRAYRESPONSEUNIT_10000S 4 /* ten-thousandths of a unit */
-#define GRAYRESPONSEUNIT_100000S 5 /* hundred-thousandths */
-#define TIFFTAG_GRAYRESPONSECURVE 291 /* $gray scale response curve */
-#define TIFFTAG_GROUP3OPTIONS 292 /* 32 flag bits */
-#define TIFFTAG_T4OPTIONS 292 /* TIFF 6.0 proper name alias */
-#define GROUP3OPT_2DENCODING 0x1 /* 2-dimensional coding */
-#define GROUP3OPT_UNCOMPRESSED 0x2 /* data not compressed */
-#define GROUP3OPT_FILLBITS 0x4 /* fill to byte boundary */
-#define TIFFTAG_GROUP4OPTIONS 293 /* 32 flag bits */
-#define TIFFTAG_T6OPTIONS 293 /* TIFF 6.0 proper name */
-#define GROUP4OPT_UNCOMPRESSED 0x2 /* data not compressed */
-#define TIFFTAG_RESOLUTIONUNIT 296 /* units of resolutions */
-#define RESUNIT_NONE 1 /* no meaningful units */
-#define RESUNIT_INCH 2 /* english */
-#define RESUNIT_CENTIMETER 3 /* metric */
-#define TIFFTAG_PAGENUMBER 297 /* page numbers of multi-page */
-#define TIFFTAG_COLORRESPONSEUNIT 300 /* $color curve accuracy */
-#define COLORRESPONSEUNIT_10S 1 /* tenths of a unit */
-#define COLORRESPONSEUNIT_100S 2 /* hundredths of a unit */
-#define COLORRESPONSEUNIT_1000S 3 /* thousandths of a unit */
-#define COLORRESPONSEUNIT_10000S 4 /* ten-thousandths of a unit */
-#define COLORRESPONSEUNIT_100000S 5 /* hundred-thousandths */
-#define TIFFTAG_TRANSFERFUNCTION 301 /* !colorimetry info */
-#define TIFFTAG_SOFTWARE 305 /* name & release */
-#define TIFFTAG_DATETIME 306 /* creation date and time */
-#define TIFFTAG_ARTIST 315 /* creator of image */
-#define TIFFTAG_HOSTCOMPUTER 316 /* machine where created */
-#define TIFFTAG_PREDICTOR 317 /* prediction scheme w/ LZW */
-#define PREDICTOR_NONE 1 /* no prediction scheme used */
-#define PREDICTOR_HORIZONTAL 2 /* horizontal differencing */
-#define PREDICTOR_FLOATINGPOINT 3 /* floating point predictor */
-#define TIFFTAG_WHITEPOINT 318 /* image white point */
-#define TIFFTAG_PRIMARYCHROMATICITIES 319 /* !primary chromaticities */
-#define TIFFTAG_COLORMAP 320 /* RGB map for pallette image */
-#define TIFFTAG_HALFTONEHINTS 321 /* !highlight+shadow info */
-#define TIFFTAG_TILEWIDTH 322 /* !tile width in pixels */
-#define TIFFTAG_TILELENGTH 323 /* !tile height in pixels */
-#define TIFFTAG_TILEOFFSETS 324 /* !offsets to data tiles */
-#define TIFFTAG_TILEBYTECOUNTS 325 /* !byte counts for tiles */
-#define TIFFTAG_BADFAXLINES 326 /* lines w/ wrong pixel count */
-#define TIFFTAG_CLEANFAXDATA 327 /* regenerated line info */
-#define CLEANFAXDATA_CLEAN 0 /* no errors detected */
-#define CLEANFAXDATA_REGENERATED 1 /* receiver regenerated lines */
-#define CLEANFAXDATA_UNCLEAN 2 /* uncorrected errors exist */
-#define TIFFTAG_CONSECUTIVEBADFAXLINES 328 /* max consecutive bad lines */
-#define TIFFTAG_SUBIFD 330 /* subimage descriptors */
-#define TIFFTAG_INKSET 332 /* !inks in separated image */
-#define INKSET_CMYK 1 /* !cyan-magenta-yellow-black color */
-#define INKSET_MULTIINK 2 /* !multi-ink or hi-fi color */
-#define TIFFTAG_INKNAMES 333 /* !ascii names of inks */
-#define TIFFTAG_NUMBEROFINKS 334 /* !number of inks */
-#define TIFFTAG_DOTRANGE 336 /* !0% and 100% dot codes */
-#define TIFFTAG_TARGETPRINTER 337 /* !separation target */
-#define TIFFTAG_EXTRASAMPLES 338 /* !info about extra samples */
-#define EXTRASAMPLE_UNSPECIFIED 0 /* !unspecified data */
-#define EXTRASAMPLE_ASSOCALPHA 1 /* !associated alpha data */
-#define EXTRASAMPLE_UNASSALPHA 2 /* !unassociated alpha data */
-#define TIFFTAG_SAMPLEFORMAT 339 /* !data sample format */
-#define SAMPLEFORMAT_UINT 1 /* !unsigned integer data */
-#define SAMPLEFORMAT_INT 2 /* !signed integer data */
-#define SAMPLEFORMAT_IEEEFP 3 /* !IEEE floating point data */
-#define SAMPLEFORMAT_VOID 4 /* !untyped data */
-#define SAMPLEFORMAT_COMPLEXINT 5 /* !complex signed int */
-#define SAMPLEFORMAT_COMPLEXIEEEFP 6 /* !complex ieee floating */
-#define TIFFTAG_SMINSAMPLEVALUE 340 /* !variable MinSampleValue */
-#define TIFFTAG_SMAXSAMPLEVALUE 341 /* !variable MaxSampleValue */
-#define TIFFTAG_CLIPPATH 343 /* %ClipPath
- [Adobe TIFF technote 2] */
-#define TIFFTAG_XCLIPPATHUNITS 344 /* %XClipPathUnits
- [Adobe TIFF technote 2] */
-#define TIFFTAG_YCLIPPATHUNITS 345 /* %YClipPathUnits
- [Adobe TIFF technote 2] */
-#define TIFFTAG_INDEXED 346 /* %Indexed
- [Adobe TIFF Technote 3] */
-#define TIFFTAG_JPEGTABLES 347 /* %JPEG table stream */
-#define TIFFTAG_OPIPROXY 351 /* %OPI Proxy [Adobe TIFF technote] */
-/*
- * Tags 512-521 are obsoleted by Technical Note #2 which specifies a
- * revised JPEG-in-TIFF scheme.
- */
-#define TIFFTAG_JPEGPROC 512 /* !JPEG processing algorithm */
-#define JPEGPROC_BASELINE 1 /* !baseline sequential */
-#define JPEGPROC_LOSSLESS 14 /* !Huffman coded lossless */
-#define TIFFTAG_JPEGIFOFFSET 513 /* !pointer to SOI marker */
-#define TIFFTAG_JPEGIFBYTECOUNT 514 /* !JFIF stream length */
-#define TIFFTAG_JPEGRESTARTINTERVAL 515 /* !restart interval length */
-#define TIFFTAG_JPEGLOSSLESSPREDICTORS 517 /* !lossless proc predictor */
-#define TIFFTAG_JPEGPOINTTRANSFORM 518 /* !lossless point transform */
-#define TIFFTAG_JPEGQTABLES 519 /* !Q matrice offsets */
-#define TIFFTAG_JPEGDCTABLES 520 /* !DCT table offsets */
-#define TIFFTAG_JPEGACTABLES 521 /* !AC coefficient offsets */
-#define TIFFTAG_YCBCRCOEFFICIENTS 529 /* !RGB -> YCbCr transform */
-#define TIFFTAG_YCBCRSUBSAMPLING 530 /* !YCbCr subsampling factors */
-#define TIFFTAG_YCBCRPOSITIONING 531 /* !subsample positioning */
-#define YCBCRPOSITION_CENTERED 1 /* !as in PostScript Level 2 */
-#define YCBCRPOSITION_COSITED 2 /* !as in CCIR 601-1 */
-#define TIFFTAG_REFERENCEBLACKWHITE 532 /* !colorimetry info */
-#define TIFFTAG_XMLPACKET 700 /* %XML packet
- [Adobe XMP Specification,
- January 2004 */
-#define TIFFTAG_OPIIMAGEID 32781 /* %OPI ImageID
- [Adobe TIFF technote] */
-/* tags 32952-32956 are private tags registered to Island Graphics */
-#define TIFFTAG_REFPTS 32953 /* image reference points */
-#define TIFFTAG_REGIONTACKPOINT 32954 /* region-xform tack point */
-#define TIFFTAG_REGIONWARPCORNERS 32955 /* warp quadrilateral */
-#define TIFFTAG_REGIONAFFINE 32956 /* affine transformation mat */
-/* tags 32995-32999 are private tags registered to SGI */
-#define TIFFTAG_MATTEING 32995 /* $use ExtraSamples */
-#define TIFFTAG_DATATYPE 32996 /* $use SampleFormat */
-#define TIFFTAG_IMAGEDEPTH 32997 /* z depth of image */
-#define TIFFTAG_TILEDEPTH 32998 /* z depth/data tile */
-/* tags 33300-33309 are private tags registered to Pixar */
-/*
- * TIFFTAG_PIXAR_IMAGEFULLWIDTH and TIFFTAG_PIXAR_IMAGEFULLLENGTH
- * are set when an image has been cropped out of a larger image.
- * They reflect the size of the original uncropped image.
- * The TIFFTAG_XPOSITION and TIFFTAG_YPOSITION can be used
- * to determine the position of the smaller image in the larger one.
- */
-#define TIFFTAG_PIXAR_IMAGEFULLWIDTH 33300 /* full image size in x */
-#define TIFFTAG_PIXAR_IMAGEFULLLENGTH 33301 /* full image size in y */
- /* Tags 33302-33306 are used to identify special image modes and data
- * used by Pixar's texture formats.
- */
-#define TIFFTAG_PIXAR_TEXTUREFORMAT 33302 /* texture map format */
-#define TIFFTAG_PIXAR_WRAPMODES 33303 /* s & t wrap modes */
-#define TIFFTAG_PIXAR_FOVCOT 33304 /* cotan(fov) for env. maps */
-#define TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 33305
-#define TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 33306
-/* tag 33405 is a private tag registered to Eastman Kodak */
-#define TIFFTAG_WRITERSERIALNUMBER 33405 /* device serial number */
-/* tag 33432 is listed in the 6.0 spec w/ unknown ownership */
-#define TIFFTAG_COPYRIGHT 33432 /* copyright string */
-/* IPTC TAG from RichTIFF specifications */
-#define TIFFTAG_RICHTIFFIPTC 33723
-/* 34016-34029 are reserved for ANSI IT8 TIFF/IT <dkelly@apago.com) */
-#define TIFFTAG_IT8SITE 34016 /* site name */
-#define TIFFTAG_IT8COLORSEQUENCE 34017 /* color seq. [RGB,CMYK,etc] */
-#define TIFFTAG_IT8HEADER 34018 /* DDES Header */
-#define TIFFTAG_IT8RASTERPADDING 34019 /* raster scanline padding */
-#define TIFFTAG_IT8BITSPERRUNLENGTH 34020 /* # of bits in short run */
-#define TIFFTAG_IT8BITSPEREXTENDEDRUNLENGTH 34021/* # of bits in long run */
-#define TIFFTAG_IT8COLORTABLE 34022 /* LW colortable */
-#define TIFFTAG_IT8IMAGECOLORINDICATOR 34023 /* BP/BL image color switch */
-#define TIFFTAG_IT8BKGCOLORINDICATOR 34024 /* BP/BL bg color switch */
-#define TIFFTAG_IT8IMAGECOLORVALUE 34025 /* BP/BL image color value */
-#define TIFFTAG_IT8BKGCOLORVALUE 34026 /* BP/BL bg color value */
-#define TIFFTAG_IT8PIXELINTENSITYRANGE 34027 /* MP pixel intensity value */
-#define TIFFTAG_IT8TRANSPARENCYINDICATOR 34028 /* HC transparency switch */
-#define TIFFTAG_IT8COLORCHARACTERIZATION 34029 /* color character. table */
-#define TIFFTAG_IT8HCUSAGE 34030 /* HC usage indicator */
-#define TIFFTAG_IT8TRAPINDICATOR 34031 /* Trapping indicator
- (untrapped=0, trapped=1) */
-#define TIFFTAG_IT8CMYKEQUIVALENT 34032 /* CMYK color equivalents */
-/* tags 34232-34236 are private tags registered to Texas Instruments */
-#define TIFFTAG_FRAMECOUNT 34232 /* Sequence Frame Count */
-/* tag 34377 is private tag registered to Adobe for PhotoShop */
-#define TIFFTAG_PHOTOSHOP 34377
-/* tags 34665, 34853 and 40965 are documented in EXIF specification */
-#define TIFFTAG_EXIFIFD 34665 /* Pointer to EXIF private directory */
-/* tag 34750 is a private tag registered to Adobe? */
-#define TIFFTAG_ICCPROFILE 34675 /* ICC profile data */
-/* tag 34750 is a private tag registered to Pixel Magic */
-#define TIFFTAG_JBIGOPTIONS 34750 /* JBIG options */
-#define TIFFTAG_GPSIFD 34853 /* Pointer to GPS private directory */
-/* tags 34908-34914 are private tags registered to SGI */
-#define TIFFTAG_FAXRECVPARAMS 34908 /* encoded Class 2 ses. parms */
-#define TIFFTAG_FAXSUBADDRESS 34909 /* received SubAddr string */
-#define TIFFTAG_FAXRECVTIME 34910 /* receive time (secs) */
-#define TIFFTAG_FAXDCS 34911 /* encoded fax ses. params, Table 2/T.30 */
-/* tags 37439-37443 are registered to SGI <gregl@sgi.com> */
-#define TIFFTAG_STONITS 37439 /* Sample value to Nits */
-/* tag 34929 is a private tag registered to FedEx */
-#define TIFFTAG_FEDEX_EDR 34929 /* unknown use */
-#define TIFFTAG_INTEROPERABILITYIFD 40965 /* Pointer to Interoperability private directory */
-/* Adobe Digital Negative (DNG) format tags */
-#define TIFFTAG_DNGVERSION 50706 /* &DNG version number */
-#define TIFFTAG_DNGBACKWARDVERSION 50707 /* &DNG compatibility version */
-#define TIFFTAG_UNIQUECAMERAMODEL 50708 /* &name for the camera model */
-#define TIFFTAG_LOCALIZEDCAMERAMODEL 50709 /* &localized camera model
- name */
-#define TIFFTAG_CFAPLANECOLOR 50710 /* &CFAPattern->LinearRaw space
- mapping */
-#define TIFFTAG_CFALAYOUT 50711 /* &spatial layout of the CFA */
-#define TIFFTAG_LINEARIZATIONTABLE 50712 /* &lookup table description */
-#define TIFFTAG_BLACKLEVELREPEATDIM 50713 /* &repeat pattern size for
- the BlackLevel tag */
-#define TIFFTAG_BLACKLEVEL 50714 /* &zero light encoding level */
-#define TIFFTAG_BLACKLEVELDELTAH 50715 /* &zero light encoding level
- differences (columns) */
-#define TIFFTAG_BLACKLEVELDELTAV 50716 /* &zero light encoding level
- differences (rows) */
-#define TIFFTAG_WHITELEVEL 50717 /* &fully saturated encoding
- level */
-#define TIFFTAG_DEFAULTSCALE 50718 /* &default scale factors */
-#define TIFFTAG_DEFAULTCROPORIGIN 50719 /* &origin of the final image
- area */
-#define TIFFTAG_DEFAULTCROPSIZE 50720 /* &size of the final image
- area */
-#define TIFFTAG_COLORMATRIX1 50721 /* &XYZ->reference color space
- transformation matrix 1 */
-#define TIFFTAG_COLORMATRIX2 50722 /* &XYZ->reference color space
- transformation matrix 2 */
-#define TIFFTAG_CAMERACALIBRATION1 50723 /* &calibration matrix 1 */
-#define TIFFTAG_CAMERACALIBRATION2 50724 /* &calibration matrix 2 */
-#define TIFFTAG_REDUCTIONMATRIX1 50725 /* &dimensionality reduction
- matrix 1 */
-#define TIFFTAG_REDUCTIONMATRIX2 50726 /* &dimensionality reduction
- matrix 2 */
-#define TIFFTAG_ANALOGBALANCE 50727 /* &gain applied the stored raw
- values*/
-#define TIFFTAG_ASSHOTNEUTRAL 50728 /* &selected white balance in
- linear reference space */
-#define TIFFTAG_ASSHOTWHITEXY 50729 /* &selected white balance in
- x-y chromaticity
- coordinates */
-#define TIFFTAG_BASELINEEXPOSURE 50730 /* &how much to move the zero
- point */
-#define TIFFTAG_BASELINENOISE 50731 /* &relative noise level */
-#define TIFFTAG_BASELINESHARPNESS 50732 /* &relative amount of
- sharpening */
-#define TIFFTAG_BAYERGREENSPLIT 50733 /* &how closely the values of
- the green pixels in the
- blue/green rows track the
- values of the green pixels
- in the red/green rows */
-#define TIFFTAG_LINEARRESPONSELIMIT 50734 /* &non-linear encoding range */
-#define TIFFTAG_CAMERASERIALNUMBER 50735 /* &camera's serial number */
-#define TIFFTAG_LENSINFO 50736 /* info about the lens */
-#define TIFFTAG_CHROMABLURRADIUS 50737 /* &chroma blur radius */
-#define TIFFTAG_ANTIALIASSTRENGTH 50738 /* &relative strength of the
- camera's anti-alias filter */
-#define TIFFTAG_SHADOWSCALE 50739 /* &used by Adobe Camera Raw */
-#define TIFFTAG_DNGPRIVATEDATA 50740 /* &manufacturer's private data */
-#define TIFFTAG_MAKERNOTESAFETY 50741 /* &whether the EXIF MakerNote
- tag is safe to preserve
- along with the rest of the
- EXIF data */
-#define TIFFTAG_CALIBRATIONILLUMINANT1 50778 /* &illuminant 1 */
-#define TIFFTAG_CALIBRATIONILLUMINANT2 50779 /* &illuminant 2 */
-#define TIFFTAG_BESTQUALITYSCALE 50780 /* &best quality multiplier */
-#define TIFFTAG_RAWDATAUNIQUEID 50781 /* &unique identifier for
- the raw image data */
-#define TIFFTAG_ORIGINALRAWFILENAME 50827 /* &file name of the original
- raw file */
-#define TIFFTAG_ORIGINALRAWFILEDATA 50828 /* &contents of the original
- raw file */
-#define TIFFTAG_ACTIVEAREA 50829 /* &active (non-masked) pixels
- of the sensor */
-#define TIFFTAG_MASKEDAREAS 50830 /* &list of coordinates
- of fully masked pixels */
-#define TIFFTAG_ASSHOTICCPROFILE 50831 /* &these two tags used to */
-#define TIFFTAG_ASSHOTPREPROFILEMATRIX 50832 /* map cameras's color space
- into ICC profile space */
-#define TIFFTAG_CURRENTICCPROFILE 50833 /* & */
-#define TIFFTAG_CURRENTPREPROFILEMATRIX 50834 /* & */
-/* tag 65535 is an undefined tag used by Eastman Kodak */
-#define TIFFTAG_DCSHUESHIFTVALUES 65535 /* hue shift correction data */
-
-/*
- * The following are ``pseudo tags'' that can be used to control
- * codec-specific functionality. These tags are not written to file.
- * Note that these values start at 0xffff+1 so that they'll never
- * collide with Aldus-assigned tags.
- *
- * If you want your private pseudo tags ``registered'' (i.e. added to
- * this file), please post a bug report via the tracking system at
- * http://www.remotesensing.org/libtiff/bugs.html with the appropriate
- * C definitions to add.
- */
-#define TIFFTAG_FAXMODE 65536 /* Group 3/4 format control */
-#define FAXMODE_CLASSIC 0x0000 /* default, include RTC */
-#define FAXMODE_NORTC 0x0001 /* no RTC at end of data */
-#define FAXMODE_NOEOL 0x0002 /* no EOL code at end of row */
-#define FAXMODE_BYTEALIGN 0x0004 /* byte align row */
-#define FAXMODE_WORDALIGN 0x0008 /* word align row */
-#define FAXMODE_CLASSF FAXMODE_NORTC /* TIFF Class F */
-#define TIFFTAG_JPEGQUALITY 65537 /* Compression quality level */
-/* Note: quality level is on the IJG 0-100 scale. Default value is 75 */
-#define TIFFTAG_JPEGCOLORMODE 65538 /* Auto RGB<=>YCbCr convert? */
-#define JPEGCOLORMODE_RAW 0x0000 /* no conversion (default) */
-#define JPEGCOLORMODE_RGB 0x0001 /* do auto conversion */
-#define TIFFTAG_JPEGTABLESMODE 65539 /* What to put in JPEGTables */
-#define JPEGTABLESMODE_QUANT 0x0001 /* include quantization tbls */
-#define JPEGTABLESMODE_HUFF 0x0002 /* include Huffman tbls */
-/* Note: default is JPEGTABLESMODE_QUANT | JPEGTABLESMODE_HUFF */
-#define TIFFTAG_FAXFILLFUNC 65540 /* G3/G4 fill function */
-#define TIFFTAG_PIXARLOGDATAFMT 65549 /* PixarLogCodec I/O data sz */
-#define PIXARLOGDATAFMT_8BIT 0 /* regular u_char samples */
-#define PIXARLOGDATAFMT_8BITABGR 1 /* ABGR-order u_chars */
-#define PIXARLOGDATAFMT_11BITLOG 2 /* 11-bit log-encoded (raw) */
-#define PIXARLOGDATAFMT_12BITPICIO 3 /* as per PICIO (1.0==2048) */
-#define PIXARLOGDATAFMT_16BIT 4 /* signed short samples */
-#define PIXARLOGDATAFMT_FLOAT 5 /* IEEE float samples */
-/* 65550-65556 are allocated to Oceana Matrix <dev@oceana.com> */
-#define TIFFTAG_DCSIMAGERTYPE 65550 /* imager model & filter */
-#define DCSIMAGERMODEL_M3 0 /* M3 chip (1280 x 1024) */
-#define DCSIMAGERMODEL_M5 1 /* M5 chip (1536 x 1024) */
-#define DCSIMAGERMODEL_M6 2 /* M6 chip (3072 x 2048) */
-#define DCSIMAGERFILTER_IR 0 /* infrared filter */
-#define DCSIMAGERFILTER_MONO 1 /* monochrome filter */
-#define DCSIMAGERFILTER_CFA 2 /* color filter array */
-#define DCSIMAGERFILTER_OTHER 3 /* other filter */
-#define TIFFTAG_DCSINTERPMODE 65551 /* interpolation mode */
-#define DCSINTERPMODE_NORMAL 0x0 /* whole image, default */
-#define DCSINTERPMODE_PREVIEW 0x1 /* preview of image (384x256) */
-#define TIFFTAG_DCSBALANCEARRAY 65552 /* color balance values */
-#define TIFFTAG_DCSCORRECTMATRIX 65553 /* color correction values */
-#define TIFFTAG_DCSGAMMA 65554 /* gamma value */
-#define TIFFTAG_DCSTOESHOULDERPTS 65555 /* toe & shoulder points */
-#define TIFFTAG_DCSCALIBRATIONFD 65556 /* calibration file desc */
-/* Note: quality level is on the ZLIB 1-9 scale. Default value is -1 */
-#define TIFFTAG_ZIPQUALITY 65557 /* compression quality level */
-#define TIFFTAG_PIXARLOGQUALITY 65558 /* PixarLog uses same scale */
-/* 65559 is allocated to Oceana Matrix <dev@oceana.com> */
-#define TIFFTAG_DCSCLIPRECTANGLE 65559 /* area of image to acquire */
-#define TIFFTAG_SGILOGDATAFMT 65560 /* SGILog user data format */
-#define SGILOGDATAFMT_FLOAT 0 /* IEEE float samples */
-#define SGILOGDATAFMT_16BIT 1 /* 16-bit samples */
-#define SGILOGDATAFMT_RAW 2 /* uninterpreted data */
-#define SGILOGDATAFMT_8BIT 3 /* 8-bit RGB monitor values */
-#define TIFFTAG_SGILOGENCODE 65561 /* SGILog data encoding control*/
-#define SGILOGENCODE_NODITHER 0 /* do not dither encoded values*/
-#define SGILOGENCODE_RANDITHER 1 /* randomly dither encd values */
-
-/*
- * EXIF tags
- */
-#define EXIFTAG_EXPOSURETIME 33434 /* Exposure time */
-#define EXIFTAG_FNUMBER 33437 /* F number */
-#define EXIFTAG_EXPOSUREPROGRAM 34850 /* Exposure program */
-#define EXIFTAG_SPECTRALSENSITIVITY 34852 /* Spectral sensitivity */
-#define EXIFTAG_ISOSPEEDRATINGS 34855 /* ISO speed rating */
-#define EXIFTAG_OECF 34856 /* Optoelectric conversion
- factor */
-#define EXIFTAG_EXIFVERSION 36864 /* Exif version */
-#define EXIFTAG_DATETIMEORIGINAL 36867 /* Date and time of original
- data generation */
-#define EXIFTAG_DATETIMEDIGITIZED 36868 /* Date and time of digital
- data generation */
-#define EXIFTAG_COMPONENTSCONFIGURATION 37121 /* Meaning of each component */
-#define EXIFTAG_COMPRESSEDBITSPERPIXEL 37122 /* Image compression mode */
-#define EXIFTAG_SHUTTERSPEEDVALUE 37377 /* Shutter speed */
-#define EXIFTAG_APERTUREVALUE 37378 /* Aperture */
-#define EXIFTAG_BRIGHTNESSVALUE 37379 /* Brightness */
-#define EXIFTAG_EXPOSUREBIASVALUE 37380 /* Exposure bias */
-#define EXIFTAG_MAXAPERTUREVALUE 37381 /* Maximum lens aperture */
-#define EXIFTAG_SUBJECTDISTANCE 37382 /* Subject distance */
-#define EXIFTAG_METERINGMODE 37383 /* Metering mode */
-#define EXIFTAG_LIGHTSOURCE 37384 /* Light source */
-#define EXIFTAG_FLASH 37385 /* Flash */
-#define EXIFTAG_FOCALLENGTH 37386 /* Lens focal length */
-#define EXIFTAG_SUBJECTAREA 37396 /* Subject area */
-#define EXIFTAG_MAKERNOTE 37500 /* Manufacturer notes */
-#define EXIFTAG_USERCOMMENT 37510 /* User comments */
-#define EXIFTAG_SUBSECTIME 37520 /* DateTime subseconds */
-#define EXIFTAG_SUBSECTIMEORIGINAL 37521 /* DateTimeOriginal subseconds */
-#define EXIFTAG_SUBSECTIMEDIGITIZED 37522 /* DateTimeDigitized subseconds */
-#define EXIFTAG_FLASHPIXVERSION 40960 /* Supported Flashpix version */
-#define EXIFTAG_COLORSPACE 40961 /* Color space information */
-#define EXIFTAG_PIXELXDIMENSION 40962 /* Valid image width */
-#define EXIFTAG_PIXELYDIMENSION 40963 /* Valid image height */
-#define EXIFTAG_RELATEDSOUNDFILE 40964 /* Related audio file */
-#define EXIFTAG_FLASHENERGY 41483 /* Flash energy */
-#define EXIFTAG_SPATIALFREQUENCYRESPONSE 41484 /* Spatial frequency response */
-#define EXIFTAG_FOCALPLANEXRESOLUTION 41486 /* Focal plane X resolution */
-#define EXIFTAG_FOCALPLANEYRESOLUTION 41487 /* Focal plane Y resolution */
-#define EXIFTAG_FOCALPLANERESOLUTIONUNIT 41488 /* Focal plane resolution unit */
-#define EXIFTAG_SUBJECTLOCATION 41492 /* Subject location */
-#define EXIFTAG_EXPOSUREINDEX 41493 /* Exposure index */
-#define EXIFTAG_SENSINGMETHOD 41495 /* Sensing method */
-#define EXIFTAG_FILESOURCE 41728 /* File source */
-#define EXIFTAG_SCENETYPE 41729 /* Scene type */
-#define EXIFTAG_CFAPATTERN 41730 /* CFA pattern */
-#define EXIFTAG_CUSTOMRENDERED 41985 /* Custom image processing */
-#define EXIFTAG_EXPOSUREMODE 41986 /* Exposure mode */
-#define EXIFTAG_WHITEBALANCE 41987 /* White balance */
-#define EXIFTAG_DIGITALZOOMRATIO 41988 /* Digital zoom ratio */
-#define EXIFTAG_FOCALLENGTHIN35MMFILM 41989 /* Focal length in 35 mm film */
-#define EXIFTAG_SCENECAPTURETYPE 41990 /* Scene capture type */
-#define EXIFTAG_GAINCONTROL 41991 /* Gain control */
-#define EXIFTAG_CONTRAST 41992 /* Contrast */
-#define EXIFTAG_SATURATION 41993 /* Saturation */
-#define EXIFTAG_SHARPNESS 41994 /* Sharpness */
-#define EXIFTAG_DEVICESETTINGDESCRIPTION 41995 /* Device settings description */
-#define EXIFTAG_SUBJECTDISTANCERANGE 41996 /* Subject distance range */
-#define EXIFTAG_GAINCONTROL 41991 /* Gain control */
-#define EXIFTAG_GAINCONTROL 41991 /* Gain control */
-#define EXIFTAG_IMAGEUNIQUEID 42016 /* Unique image ID */
-
-#endif /* _TIFF_ */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tiffconf.h b/src/3rdparty/libtiff/libtiff/tiffconf.h
deleted file mode 100644
index 1a012226c6..0000000000
--- a/src/3rdparty/libtiff/libtiff/tiffconf.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- Configuration defines for Qt.
- This file maintained for backward compatibility. Do not use definitions
- from this file in your programs.
-*/
-
-#ifndef _TIFFCONF_
-#define _TIFFCONF_
-
-#include <qglobal.h>
-
-/* Define to 1 if the system has the type `int16'. */
-/* #undef HAVE_INT16 */
-
-/* Define to 1 if the system has the type `int32'. */
-/* #undef HAVE_INT32 */
-
-/* Define to 1 if the system has the type `int8'. */
-/* #undef HAVE_INT8 */
-
-/* The size of a `int', as computed by sizeof. */
-#define SIZEOF_INT 4
-
-/* The size of a `long', as computed by sizeof. */
-#if (QT_POINTER_SIZE == 8) && !defined(Q_OS_WIN64)
-#define SIZEOF_LONG 8
-#else
-#define SIZEOF_LONG 4
-#endif
-
-/* Compatibility stuff. */
-
-/* Define as 0 or 1 according to the floating point format suported by the
- machine */
-#define HAVE_IEEEFP 1
-
-/* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */
-#define HOST_FILLORDER FILLORDER_LSB2MSB
-
-/* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian
- (Intel) */
-#if (Q_BYTE_ORDER == Q_BIG_ENDIAN)
-#define HOST_BIGENDIAN 1
-#else
-#define HOST_BIGENDIAN 0
-#endif
-
-/* Support CCITT Group 3 & 4 algorithms */
-#define CCITT_SUPPORT 1
-
-/* Support JPEG compression (requires IJG JPEG library) */
-/* #undef JPEG_SUPPORT */
-
-/* Support LogLuv high dynamic range encoding */
-#define LOGLUV_SUPPORT 1
-
-/* Support LZW algorithm */
-#define LZW_SUPPORT 1
-
-/* Support NeXT 2-bit RLE algorithm */
-#define NEXT_SUPPORT 1
-
-/* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation
- fails with unpatched IJG JPEG library) */
-/* #undef OJPEG_SUPPORT */
-
-/* Support Macintosh PackBits algorithm */
-#define PACKBITS_SUPPORT 1
-
-/* Support Pixar log-format algorithm (requires Zlib) */
-#define PIXARLOG_SUPPORT 1
-
-/* Support ThunderScan 4-bit RLE algorithm */
-#define THUNDER_SUPPORT 1
-
-/* Support Deflate compression */
-#define ZIP_SUPPORT 1
-
-/* Support strip chopping (whether or not to convert single-strip uncompressed
- images to mutiple strips of ~8Kb to reduce memory usage) */
-#define STRIPCHOP_DEFAULT TIFF_STRIPCHOP
-
-/* Enable SubIFD tag (330) support */
-#define SUBIFD_SUPPORT 1
-
-/* Treat extra sample as alpha (default enabled). The RGBA interface will
- treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many
- packages produce RGBA files but don't mark the alpha properly. */
-#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1
-
-/* Pick up YCbCr subsampling info from the JPEG data stream to support files
- lacking the tag (default enabled). */
-#define CHECK_JPEG_YCBCR_SUBSAMPLING 1
-
-/* Support MS MDI magic number files as TIFF */
-#define MDI_SUPPORT 1
-
-/*
- * Feature support definitions.
- * XXX: These macros are obsoleted. Don't use them in your apps!
- * Macros stays here for backward compatibility and should be always defined.
- */
-#define COLORIMETRY_SUPPORT
-#define YCBCR_SUPPORT
-#define CMYK_SUPPORT
-#define ICC_SUPPORT
-#define PHOTOSHOP_SUPPORT
-#define IPTC_SUPPORT
-
-#endif /* _TIFFCONF_ */
diff --git a/src/3rdparty/libtiff/libtiff/tiffconf.h.in b/src/3rdparty/libtiff/libtiff/tiffconf.h.in
deleted file mode 100644
index 1a52b37ada..0000000000
--- a/src/3rdparty/libtiff/libtiff/tiffconf.h.in
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- Configuration defines for installed libtiff.
- This file maintained for backward compatibility. Do not use definitions
- from this file in your programs.
-*/
-
-#ifndef _TIFFCONF_
-#define _TIFFCONF_
-
-/* Define to 1 if the system has the type `int16'. */
-#undef HAVE_INT16
-
-/* Define to 1 if the system has the type `int32'. */
-#undef HAVE_INT32
-
-/* Define to 1 if the system has the type `int8'. */
-#undef HAVE_INT8
-
-/* The size of a `int', as computed by sizeof. */
-#undef SIZEOF_INT
-
-/* The size of a `long', as computed by sizeof. */
-#undef SIZEOF_LONG
-
-/* Compatibility stuff. */
-
-/* Define as 0 or 1 according to the floating point format suported by the
- machine */
-#undef HAVE_IEEEFP
-
-/* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */
-#undef HOST_FILLORDER
-
-/* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian
- (Intel) */
-#undef HOST_BIGENDIAN
-
-/* Support CCITT Group 3 & 4 algorithms */
-#undef CCITT_SUPPORT
-
-/* Support JPEG compression (requires IJG JPEG library) */
-#undef JPEG_SUPPORT
-
-/* Support JBIG compression (requires JBIG-KIT library) */
-#undef JBIG_SUPPORT
-
-/* Support LogLuv high dynamic range encoding */
-#undef LOGLUV_SUPPORT
-
-/* Support LZW algorithm */
-#undef LZW_SUPPORT
-
-/* Support NeXT 2-bit RLE algorithm */
-#undef NEXT_SUPPORT
-
-/* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation
- fails with unpatched IJG JPEG library) */
-#undef OJPEG_SUPPORT
-
-/* Support Macintosh PackBits algorithm */
-#undef PACKBITS_SUPPORT
-
-/* Support Pixar log-format algorithm (requires Zlib) */
-#undef PIXARLOG_SUPPORT
-
-/* Support ThunderScan 4-bit RLE algorithm */
-#undef THUNDER_SUPPORT
-
-/* Support Deflate compression */
-#undef ZIP_SUPPORT
-
-/* Support strip chopping (whether or not to convert single-strip uncompressed
- images to mutiple strips of ~8Kb to reduce memory usage) */
-#undef STRIPCHOP_DEFAULT
-
-/* Enable SubIFD tag (330) support */
-#undef SUBIFD_SUPPORT
-
-/* Treat extra sample as alpha (default enabled). The RGBA interface will
- treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many
- packages produce RGBA files but don't mark the alpha properly. */
-#undef DEFAULT_EXTRASAMPLE_AS_ALPHA
-
-/* Pick up YCbCr subsampling info from the JPEG data stream to support files
- lacking the tag (default enabled). */
-#undef CHECK_JPEG_YCBCR_SUBSAMPLING
-
-/* Support MS MDI magic number files as TIFF */
-#undef MDI_SUPPORT
-
-/*
- * Feature support definitions.
- * XXX: These macros are obsoleted. Don't use them in your apps!
- * Macros stays here for backward compatibility and should be always defined.
- */
-#define COLORIMETRY_SUPPORT
-#define YCBCR_SUPPORT
-#define CMYK_SUPPORT
-#define ICC_SUPPORT
-#define PHOTOSHOP_SUPPORT
-#define IPTC_SUPPORT
-
-#endif /* _TIFFCONF_ */
diff --git a/src/3rdparty/libtiff/libtiff/tiffconf.vc.h b/src/3rdparty/libtiff/libtiff/tiffconf.vc.h
deleted file mode 100644
index 9a0b15205d..0000000000
--- a/src/3rdparty/libtiff/libtiff/tiffconf.vc.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- Configuration defines for installed libtiff.
- This file maintained for backward compatibility. Do not use definitions
- from this file in your programs.
-*/
-
-#ifndef _TIFFCONF_
-#define _TIFFCONF_
-
-/* Define to 1 if the system has the type `int16'. */
-/* #undef HAVE_INT16 */
-
-/* Define to 1 if the system has the type `int32'. */
-/* #undef HAVE_INT32 */
-
-/* Define to 1 if the system has the type `int8'. */
-/* #undef HAVE_INT8 */
-
-/* The size of a `int', as computed by sizeof. */
-#define SIZEOF_INT 4
-
-/* The size of a `long', as computed by sizeof. */
-#define SIZEOF_LONG 4
-
-/* Signed 64-bit type formatter */
-#define TIFF_INT64_FORMAT "%I64d"
-
-/* Signed 64-bit type */
-#define TIFF_INT64_T signed __int64
-
-/* Unsigned 64-bit type formatter */
-#define TIFF_UINT64_FORMAT "%I64u"
-
-/* Unsigned 64-bit type */
-#define TIFF_UINT64_T unsigned __int64
-
-/* Compatibility stuff. */
-
-/* Define as 0 or 1 according to the floating point format suported by the
- machine */
-#define HAVE_IEEEFP 1
-
-/* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */
-#define HOST_FILLORDER FILLORDER_LSB2MSB
-
-/* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian
- (Intel) */
-#define HOST_BIGENDIAN 0
-
-/* Support CCITT Group 3 & 4 algorithms */
-#define CCITT_SUPPORT 1
-
-/* Support JPEG compression (requires IJG JPEG library) */
-/* #undef JPEG_SUPPORT */
-
-/* Support LogLuv high dynamic range encoding */
-#define LOGLUV_SUPPORT 1
-
-/* Support LZW algorithm */
-#define LZW_SUPPORT 1
-
-/* Support NeXT 2-bit RLE algorithm */
-#define NEXT_SUPPORT 1
-
-/* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation
- fails with unpatched IJG JPEG library) */
-/* #undef OJPEG_SUPPORT */
-
-/* Support Macintosh PackBits algorithm */
-#define PACKBITS_SUPPORT 1
-
-/* Support Pixar log-format algorithm (requires Zlib) */
-/* #undef PIXARLOG_SUPPORT */
-
-/* Support ThunderScan 4-bit RLE algorithm */
-#define THUNDER_SUPPORT 1
-
-/* Support Deflate compression */
-/* #undef ZIP_SUPPORT */
-
-/* Support strip chopping (whether or not to convert single-strip uncompressed
- images to mutiple strips of ~8Kb to reduce memory usage) */
-#define STRIPCHOP_DEFAULT TIFF_STRIPCHOP
-
-/* Enable SubIFD tag (330) support */
-#define SUBIFD_SUPPORT 1
-
-/* Treat extra sample as alpha (default enabled). The RGBA interface will
- treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many
- packages produce RGBA files but don't mark the alpha properly. */
-#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1
-
-/* Pick up YCbCr subsampling info from the JPEG data stream to support files
- lacking the tag (default enabled). */
-#define CHECK_JPEG_YCBCR_SUBSAMPLING 1
-
-/*
- * Feature support definitions.
- * XXX: These macros are obsoleted. Don't use them in your apps!
- * Macros stays here for backward compatibility and should be always defined.
- */
-#define COLORIMETRY_SUPPORT
-#define YCBCR_SUPPORT
-#define CMYK_SUPPORT
-#define ICC_SUPPORT
-#define PHOTOSHOP_SUPPORT
-#define IPTC_SUPPORT
-
-#endif /* _TIFFCONF_ */
diff --git a/src/3rdparty/libtiff/libtiff/tiffconf.wince.h b/src/3rdparty/libtiff/libtiff/tiffconf.wince.h
deleted file mode 100644
index 27fa239a92..0000000000
--- a/src/3rdparty/libtiff/libtiff/tiffconf.wince.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/* $Id: tiffconf.wince.h,v 1.1.2.1 2009-01-01 17:52:51 bfriesen Exp $ */
-
-/*
- * Windows CE platform tiffconf.wince.h
- * Created by Mateusz Loskot (mateusz@loskot.net)
- *
- * NOTE: Requires WCELIBCEX library with wceex_* functions,
- * It's an extension to C library on Windows CE platform.
- * For example, HAVE_STDIO_H definition indicates there are
- * following files available:
- * stdio.h - from Windows CE / Windows Mobile SDK
- * wce_stdio.h - from WCELIBCEX library
- */
-
-
-/*
- Configuration defines for installed libtiff.
- This file maintained for backward compatibility. Do not use definitions
- from this file in your programs.
-*/
-
-#ifndef _WIN32_WCE
-# error This version of tif_config.h header is dedicated for Windows CE platform!
-#endif
-
-
-#ifndef _TIFFCONF_
-#define _TIFFCONF_
-
-/* Define to 1 if the system has the type `int16'. */
-/* #undef HAVE_INT16 */
-
-/* Define to 1 if the system has the type `int32'. */
-/* #undef HAVE_INT32 */
-
-/* Define to 1 if the system has the type `int8'. */
-/* #undef HAVE_INT8 */
-
-/* The size of a `int', as computed by sizeof. */
-#define SIZEOF_INT 4
-
-/* The size of a `long', as computed by sizeof. */
-#define SIZEOF_LONG 4
-
-/* Signed 64-bit type formatter */
-#define TIFF_INT64_FORMAT "%I64d"
-
-/* Signed 64-bit type */
-#define TIFF_INT64_T signed __int64
-
-/* Unsigned 64-bit type formatter */
-#define TIFF_UINT64_FORMAT "%I64u"
-
-/* Unsigned 64-bit type */
-#define TIFF_UINT64_T unsigned __int64
-
-/* Compatibility stuff. */
-
-/* Define as 0 or 1 according to the floating point format suported by the
- machine */
-#define HAVE_IEEEFP 1
-
-/* Set the native cpu bit order (FILLORDER_LSB2MSB or FILLORDER_MSB2LSB) */
-#define HOST_FILLORDER FILLORDER_LSB2MSB
-
-/* Native cpu byte order: 1 if big-endian (Motorola) or 0 if little-endian
- (Intel) */
-#define HOST_BIGENDIAN 0
-
-/* Support CCITT Group 3 & 4 algorithms */
-#define CCITT_SUPPORT 1
-
-/* Support JPEG compression (requires IJG JPEG library) */
-/* #undef JPEG_SUPPORT */
-
-/* Support LogLuv high dynamic range encoding */
-#define LOGLUV_SUPPORT 1
-
-/* Support LZW algorithm */
-#define LZW_SUPPORT 1
-
-/* Support NeXT 2-bit RLE algorithm */
-#define NEXT_SUPPORT 1
-
-/* Support Old JPEG compresson (read contrib/ojpeg/README first! Compilation
- fails with unpatched IJG JPEG library) */
-/* #undef OJPEG_SUPPORT */
-
-/* Support Macintosh PackBits algorithm */
-#define PACKBITS_SUPPORT 1
-
-/* Support Pixar log-format algorithm (requires Zlib) */
-/* #undef PIXARLOG_SUPPORT */
-
-/* Support ThunderScan 4-bit RLE algorithm */
-#define THUNDER_SUPPORT 1
-
-/* Support Deflate compression */
-/* #undef ZIP_SUPPORT */
-
-/* Support strip chopping (whether or not to convert single-strip uncompressed
- images to mutiple strips of ~8Kb to reduce memory usage) */
-#define STRIPCHOP_DEFAULT TIFF_STRIPCHOP
-
-/* Enable SubIFD tag (330) support */
-#define SUBIFD_SUPPORT 1
-
-/* Treat extra sample as alpha (default enabled). The RGBA interface will
- treat a fourth sample with no EXTRASAMPLE_ value as being ASSOCALPHA. Many
- packages produce RGBA files but don't mark the alpha properly. */
-#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1
-
-/* Pick up YCbCr subsampling info from the JPEG data stream to support files
- lacking the tag (default enabled). */
-#define CHECK_JPEG_YCBCR_SUBSAMPLING 1
-
-/*
- * Feature support definitions.
- * XXX: These macros are obsoleted. Don't use them in your apps!
- * Macros stays here for backward compatibility and should be always defined.
- */
-#define COLORIMETRY_SUPPORT
-#define YCBCR_SUPPORT
-#define CMYK_SUPPORT
-#define ICC_SUPPORT
-#define PHOTOSHOP_SUPPORT
-#define IPTC_SUPPORT
-
-#endif /* _TIFFCONF_ */
diff --git a/src/3rdparty/libtiff/libtiff/tiffio.h b/src/3rdparty/libtiff/libtiff/tiffio.h
deleted file mode 100644
index 0f2735f95d..0000000000
--- a/src/3rdparty/libtiff/libtiff/tiffio.h
+++ /dev/null
@@ -1,521 +0,0 @@
-/* $Id: tiffio.h,v 1.56.2.3 2009-01-01 00:10:43 bfriesen Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#ifndef _TIFFIO_
-#define _TIFFIO_
-
-/*
- * TIFF I/O Library Definitions.
- */
-#include "tiff.h"
-#include "tiffvers.h"
-
-/*
- * TIFF is defined as an incomplete type to hide the
- * library's internal data structures from clients.
- */
-typedef struct tiff TIFF;
-
-/*
- * The following typedefs define the intrinsic size of
- * data types used in the *exported* interfaces. These
- * definitions depend on the proper definition of types
- * in tiff.h. Note also that the varargs interface used
- * to pass tag types and values uses the types defined in
- * tiff.h directly.
- *
- * NB: ttag_t is unsigned int and not unsigned short because
- * ANSI C requires that the type before the ellipsis be a
- * promoted type (i.e. one of int, unsigned int, pointer,
- * or double) and because we defined pseudo-tags that are
- * outside the range of legal Aldus-assigned tags.
- * NB: tsize_t is int32 and not uint32 because some functions
- * return -1.
- * NB: toff_t is not off_t for many reasons; TIFFs max out at
- * 32-bit file offsets being the most important, and to ensure
- * that it is unsigned, rather than signed.
- */
-typedef uint32 ttag_t; /* directory tag */
-typedef uint16 tdir_t; /* directory index */
-typedef uint16 tsample_t; /* sample number */
-typedef uint32 tstrile_t; /* strip or tile number */
-typedef tstrile_t tstrip_t; /* strip number */
-typedef tstrile_t ttile_t; /* tile number */
-typedef int32 tsize_t; /* i/o size in bytes */
-typedef void* tdata_t; /* image data ref */
-typedef uint32 toff_t; /* file offset */
-
-#if !defined(__WIN32__) && (defined(_WIN32) || defined(WIN32))
-#define __WIN32__
-#endif
-
-#include <stdlib.h>
-
-/*
- * On windows you should define USE_WIN32_FILEIO if you are using tif_win32.c
- * or AVOID_WIN32_FILEIO if you are using something else (like tif_unix.c).
- *
- * By default tif_unix.c is assumed.
- */
-
-#if defined(_WINDOWS) || defined(__WIN32__) || defined(_Windows)
-# if !defined(__CYGWIN) && !defined(AVOID_WIN32_FILEIO) && !defined(USE_WIN32_FILEIO)
-# define AVOID_WIN32_FILEIO
-# endif
-#endif
-
-#if defined(USE_WIN32_FILEIO)
-# define VC_EXTRALEAN
-# include <windows.h>
-# ifdef __WIN32__
-DECLARE_HANDLE(thandle_t); /* Win32 file handle */
-# else
-typedef HFILE thandle_t; /* client data handle */
-# endif /* __WIN32__ */
-#else
-typedef void* thandle_t; /* client data handle */
-#endif /* USE_WIN32_FILEIO */
-
-/*
- * Flags to pass to TIFFPrintDirectory to control
- * printing of data structures that are potentially
- * very large. Bit-or these flags to enable printing
- * multiple items.
- */
-#define TIFFPRINT_NONE 0x0 /* no extra info */
-#define TIFFPRINT_STRIPS 0x1 /* strips/tiles info */
-#define TIFFPRINT_CURVES 0x2 /* color/gray response curves */
-#define TIFFPRINT_COLORMAP 0x4 /* colormap */
-#define TIFFPRINT_JPEGQTABLES 0x100 /* JPEG Q matrices */
-#define TIFFPRINT_JPEGACTABLES 0x200 /* JPEG AC tables */
-#define TIFFPRINT_JPEGDCTABLES 0x200 /* JPEG DC tables */
-
-/*
- * Colour conversion stuff
- */
-
-/* reference white */
-#define D65_X0 (95.0470F)
-#define D65_Y0 (100.0F)
-#define D65_Z0 (108.8827F)
-
-#define D50_X0 (96.4250F)
-#define D50_Y0 (100.0F)
-#define D50_Z0 (82.4680F)
-
-/* Structure for holding information about a display device. */
-
-typedef unsigned char TIFFRGBValue; /* 8-bit samples */
-
-typedef struct {
- float d_mat[3][3]; /* XYZ -> luminance matrix */
- float d_YCR; /* Light o/p for reference white */
- float d_YCG;
- float d_YCB;
- uint32 d_Vrwr; /* Pixel values for ref. white */
- uint32 d_Vrwg;
- uint32 d_Vrwb;
- float d_Y0R; /* Residual light for black pixel */
- float d_Y0G;
- float d_Y0B;
- float d_gammaR; /* Gamma values for the three guns */
- float d_gammaG;
- float d_gammaB;
-} TIFFDisplay;
-
-typedef struct { /* YCbCr->RGB support */
- TIFFRGBValue* clamptab; /* range clamping table */
- int* Cr_r_tab;
- int* Cb_b_tab;
- int32* Cr_g_tab;
- int32* Cb_g_tab;
- int32* Y_tab;
-} TIFFYCbCrToRGB;
-
-typedef struct { /* CIE Lab 1976->RGB support */
- int range; /* Size of conversion table */
-#define CIELABTORGB_TABLE_RANGE 1500
- float rstep, gstep, bstep;
- float X0, Y0, Z0; /* Reference white point */
- TIFFDisplay display;
- float Yr2r[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yr to r */
- float Yg2g[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yg to g */
- float Yb2b[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yb to b */
-} TIFFCIELabToRGB;
-
-/*
- * RGBA-style image support.
- */
-typedef struct _TIFFRGBAImage TIFFRGBAImage;
-/*
- * The image reading and conversion routines invoke
- * ``put routines'' to copy/image/whatever tiles of
- * raw image data. A default set of routines are
- * provided to convert/copy raw image data to 8-bit
- * packed ABGR format rasters. Applications can supply
- * alternate routines that unpack the data into a
- * different format or, for example, unpack the data
- * and draw the unpacked raster on the display.
- */
-typedef void (*tileContigRoutine)
- (TIFFRGBAImage*, uint32*, uint32, uint32, uint32, uint32, int32, int32,
- unsigned char*);
-typedef void (*tileSeparateRoutine)
- (TIFFRGBAImage*, uint32*, uint32, uint32, uint32, uint32, int32, int32,
- unsigned char*, unsigned char*, unsigned char*, unsigned char*);
-/*
- * RGBA-reader state.
- */
-struct _TIFFRGBAImage {
- TIFF* tif; /* image handle */
- int stoponerr; /* stop on read error */
- int isContig; /* data is packed/separate */
- int alpha; /* type of alpha data present */
- uint32 width; /* image width */
- uint32 height; /* image height */
- uint16 bitspersample; /* image bits/sample */
- uint16 samplesperpixel; /* image samples/pixel */
- uint16 orientation; /* image orientation */
- uint16 req_orientation; /* requested orientation */
- uint16 photometric; /* image photometric interp */
- uint16* redcmap; /* colormap pallete */
- uint16* greencmap;
- uint16* bluecmap;
- /* get image data routine */
- int (*get)(TIFFRGBAImage*, uint32*, uint32, uint32);
- /* put decoded strip/tile */
- union {
- void (*any)(TIFFRGBAImage*);
- tileContigRoutine contig;
- tileSeparateRoutine separate;
- } put;
- TIFFRGBValue* Map; /* sample mapping array */
- uint32** BWmap; /* black&white map */
- uint32** PALmap; /* palette image map */
- TIFFYCbCrToRGB* ycbcr; /* YCbCr conversion state */
- TIFFCIELabToRGB* cielab; /* CIE L*a*b conversion state */
-
- int row_offset;
- int col_offset;
-};
-
-/*
- * Macros for extracting components from the
- * packed ABGR form returned by TIFFReadRGBAImage.
- */
-#define TIFFGetR(abgr) ((abgr) & 0xff)
-#define TIFFGetG(abgr) (((abgr) >> 8) & 0xff)
-#define TIFFGetB(abgr) (((abgr) >> 16) & 0xff)
-#define TIFFGetA(abgr) (((abgr) >> 24) & 0xff)
-
-/*
- * A CODEC is a software package that implements decoding,
- * encoding, or decoding+encoding of a compression algorithm.
- * The library provides a collection of builtin codecs.
- * More codecs may be registered through calls to the library
- * and/or the builtin implementations may be overridden.
- */
-typedef int (*TIFFInitMethod)(TIFF*, int);
-typedef struct {
- char* name;
- uint16 scheme;
- TIFFInitMethod init;
-} TIFFCodec;
-
-#include <stdio.h>
-#include <stdarg.h>
-
-/* share internal LogLuv conversion routines? */
-#ifndef LOGLUV_PUBLIC
-#define LOGLUV_PUBLIC 1
-#endif
-
-#if !defined(__GNUC__) && !defined(__attribute__)
-# define __attribute__(x) /*nothing*/
-#endif
-
-#if defined(c_plusplus) || defined(__cplusplus)
-extern "C" {
-#endif
-typedef void (*TIFFErrorHandler)(const char*, const char*, va_list);
-typedef void (*TIFFErrorHandlerExt)(thandle_t, const char*, const char*, va_list);
-typedef tsize_t (*TIFFReadWriteProc)(thandle_t, tdata_t, tsize_t);
-typedef toff_t (*TIFFSeekProc)(thandle_t, toff_t, int);
-typedef int (*TIFFCloseProc)(thandle_t);
-typedef toff_t (*TIFFSizeProc)(thandle_t);
-typedef int (*TIFFMapFileProc)(thandle_t, tdata_t*, toff_t*);
-typedef void (*TIFFUnmapFileProc)(thandle_t, tdata_t, toff_t);
-typedef void (*TIFFExtendProc)(TIFF*);
-
-extern const char* TIFFGetVersion(void);
-
-extern const TIFFCodec* TIFFFindCODEC(uint16);
-extern TIFFCodec* TIFFRegisterCODEC(uint16, const char*, TIFFInitMethod);
-extern void TIFFUnRegisterCODEC(TIFFCodec*);
-extern int TIFFIsCODECConfigured(uint16);
-extern TIFFCodec* TIFFGetConfiguredCODECs(void);
-
-/*
- * Auxiliary functions.
- */
-
-extern tdata_t _TIFFmalloc(tsize_t);
-extern tdata_t _TIFFrealloc(tdata_t, tsize_t);
-extern void _TIFFmemset(tdata_t, int, tsize_t);
-extern void _TIFFmemcpy(tdata_t, const tdata_t, tsize_t);
-extern int _TIFFmemcmp(const tdata_t, const tdata_t, tsize_t);
-extern void _TIFFfree(tdata_t);
-
-/*
-** Stuff, related to tag handling and creating custom tags.
-*/
-extern int TIFFGetTagListCount( TIFF * );
-extern ttag_t TIFFGetTagListEntry( TIFF *, int tag_index );
-
-#define TIFF_ANY TIFF_NOTYPE /* for field descriptor searching */
-#define TIFF_VARIABLE -1 /* marker for variable length tags */
-#define TIFF_SPP -2 /* marker for SamplesPerPixel tags */
-#define TIFF_VARIABLE2 -3 /* marker for uint32 var-length tags */
-
-#define FIELD_CUSTOM 65
-
-typedef struct {
- ttag_t field_tag; /* field's tag */
- short field_readcount; /* read count/TIFF_VARIABLE/TIFF_SPP */
- short field_writecount; /* write count/TIFF_VARIABLE */
- TIFFDataType field_type; /* type of associated data */
- unsigned short field_bit; /* bit in fieldsset bit vector */
- unsigned char field_oktochange; /* if true, can change while writing */
- unsigned char field_passcount; /* if true, pass dir count on set */
- char *field_name; /* ASCII name */
-} TIFFFieldInfo;
-
-typedef struct _TIFFTagValue {
- const TIFFFieldInfo *info;
- int count;
- void *value;
-} TIFFTagValue;
-
-extern void TIFFMergeFieldInfo(TIFF*, const TIFFFieldInfo[], int);
-extern const TIFFFieldInfo* TIFFFindFieldInfo(TIFF*, ttag_t, TIFFDataType);
-extern const TIFFFieldInfo* TIFFFindFieldInfoByName(TIFF* , const char *,
- TIFFDataType);
-extern const TIFFFieldInfo* TIFFFieldWithTag(TIFF*, ttag_t);
-extern const TIFFFieldInfo* TIFFFieldWithName(TIFF*, const char *);
-
-typedef int (*TIFFVSetMethod)(TIFF*, ttag_t, va_list);
-typedef int (*TIFFVGetMethod)(TIFF*, ttag_t, va_list);
-typedef void (*TIFFPrintMethod)(TIFF*, FILE*, long);
-
-typedef struct {
- TIFFVSetMethod vsetfield; /* tag set routine */
- TIFFVGetMethod vgetfield; /* tag get routine */
- TIFFPrintMethod printdir; /* directory print routine */
-} TIFFTagMethods;
-
-extern TIFFTagMethods *TIFFAccessTagMethods( TIFF * );
-extern void *TIFFGetClientInfo( TIFF *, const char * );
-extern void TIFFSetClientInfo( TIFF *, void *, const char * );
-
-extern void TIFFCleanup(TIFF*);
-extern void TIFFClose(TIFF*);
-extern int TIFFFlush(TIFF*);
-extern int TIFFFlushData(TIFF*);
-extern int TIFFGetField(TIFF*, ttag_t, ...);
-extern int TIFFVGetField(TIFF*, ttag_t, va_list);
-extern int TIFFGetFieldDefaulted(TIFF*, ttag_t, ...);
-extern int TIFFVGetFieldDefaulted(TIFF*, ttag_t, va_list);
-extern int TIFFReadDirectory(TIFF*);
-extern int TIFFReadCustomDirectory(TIFF*, toff_t, const TIFFFieldInfo[],
- size_t);
-extern int TIFFReadEXIFDirectory(TIFF*, toff_t);
-extern tsize_t TIFFScanlineSize(TIFF*);
-extern tsize_t TIFFOldScanlineSize(TIFF*);
-extern tsize_t TIFFNewScanlineSize(TIFF*);
-extern tsize_t TIFFRasterScanlineSize(TIFF*);
-extern tsize_t TIFFStripSize(TIFF*);
-extern tsize_t TIFFRawStripSize(TIFF*, tstrip_t);
-extern tsize_t TIFFVStripSize(TIFF*, uint32);
-extern tsize_t TIFFTileRowSize(TIFF*);
-extern tsize_t TIFFTileSize(TIFF*);
-extern tsize_t TIFFVTileSize(TIFF*, uint32);
-extern uint32 TIFFDefaultStripSize(TIFF*, uint32);
-extern void TIFFDefaultTileSize(TIFF*, uint32*, uint32*);
-extern int TIFFFileno(TIFF*);
-extern int TIFFSetFileno(TIFF*, int);
-extern thandle_t TIFFClientdata(TIFF*);
-extern thandle_t TIFFSetClientdata(TIFF*, thandle_t);
-extern int TIFFGetMode(TIFF*);
-extern int TIFFSetMode(TIFF*, int);
-extern int TIFFIsTiled(TIFF*);
-extern int TIFFIsByteSwapped(TIFF*);
-extern int TIFFIsUpSampled(TIFF*);
-extern int TIFFIsMSB2LSB(TIFF*);
-extern int TIFFIsBigEndian(TIFF*);
-extern TIFFReadWriteProc TIFFGetReadProc(TIFF*);
-extern TIFFReadWriteProc TIFFGetWriteProc(TIFF*);
-extern TIFFSeekProc TIFFGetSeekProc(TIFF*);
-extern TIFFCloseProc TIFFGetCloseProc(TIFF*);
-extern TIFFSizeProc TIFFGetSizeProc(TIFF*);
-extern TIFFMapFileProc TIFFGetMapFileProc(TIFF*);
-extern TIFFUnmapFileProc TIFFGetUnmapFileProc(TIFF*);
-extern uint32 TIFFCurrentRow(TIFF*);
-extern tdir_t TIFFCurrentDirectory(TIFF*);
-extern tdir_t TIFFNumberOfDirectories(TIFF*);
-extern uint32 TIFFCurrentDirOffset(TIFF*);
-extern tstrip_t TIFFCurrentStrip(TIFF*);
-extern ttile_t TIFFCurrentTile(TIFF*);
-extern int TIFFReadBufferSetup(TIFF*, tdata_t, tsize_t);
-extern int TIFFWriteBufferSetup(TIFF*, tdata_t, tsize_t);
-extern int TIFFSetupStrips(TIFF *);
-extern int TIFFWriteCheck(TIFF*, int, const char *);
-extern void TIFFFreeDirectory(TIFF*);
-extern int TIFFCreateDirectory(TIFF*);
-extern int TIFFLastDirectory(TIFF*);
-extern int TIFFSetDirectory(TIFF*, tdir_t);
-extern int TIFFSetSubDirectory(TIFF*, uint32);
-extern int TIFFUnlinkDirectory(TIFF*, tdir_t);
-extern int TIFFSetField(TIFF*, ttag_t, ...);
-extern int TIFFVSetField(TIFF*, ttag_t, va_list);
-extern int TIFFWriteDirectory(TIFF *);
-extern int TIFFCheckpointDirectory(TIFF *);
-extern int TIFFRewriteDirectory(TIFF *);
-extern int TIFFReassignTagToIgnore(enum TIFFIgnoreSense, int);
-
-#if defined(c_plusplus) || defined(__cplusplus)
-extern void TIFFPrintDirectory(TIFF*, FILE*, long = 0);
-extern int TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t = 0);
-extern int TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t = 0);
-extern int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int = 0);
-extern int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*,
- int = ORIENTATION_BOTLEFT, int = 0);
-#else
-extern void TIFFPrintDirectory(TIFF*, FILE*, long);
-extern int TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t);
-extern int TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t);
-extern int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int);
-extern int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, int, int);
-#endif
-
-extern int TIFFReadRGBAStrip(TIFF*, tstrip_t, uint32 * );
-extern int TIFFReadRGBATile(TIFF*, uint32, uint32, uint32 * );
-extern int TIFFRGBAImageOK(TIFF*, char [1024]);
-extern int TIFFRGBAImageBegin(TIFFRGBAImage*, TIFF*, int, char [1024]);
-extern int TIFFRGBAImageGet(TIFFRGBAImage*, uint32*, uint32, uint32);
-extern void TIFFRGBAImageEnd(TIFFRGBAImage*);
-extern TIFF* TIFFOpen(const char*, const char*);
-# ifdef __WIN32__
-extern TIFF* TIFFOpenW(const wchar_t*, const char*);
-# endif /* __WIN32__ */
-extern TIFF* TIFFFdOpen(int, const char*, const char*);
-extern TIFF* TIFFClientOpen(const char*, const char*,
- thandle_t,
- TIFFReadWriteProc, TIFFReadWriteProc,
- TIFFSeekProc, TIFFCloseProc,
- TIFFSizeProc,
- TIFFMapFileProc, TIFFUnmapFileProc);
-extern const char* TIFFFileName(TIFF*);
-extern const char* TIFFSetFileName(TIFF*, const char *);
-extern void TIFFError(const char*, const char*, ...) __attribute__((format (printf,2,3)));
-extern void TIFFErrorExt(thandle_t, const char*, const char*, ...) __attribute__((format (printf,3,4)));
-extern void TIFFWarning(const char*, const char*, ...) __attribute__((format (printf,2,3)));
-extern void TIFFWarningExt(thandle_t, const char*, const char*, ...) __attribute__((format (printf,3,4)));
-extern TIFFErrorHandler TIFFSetErrorHandler(TIFFErrorHandler);
-extern TIFFErrorHandlerExt TIFFSetErrorHandlerExt(TIFFErrorHandlerExt);
-extern TIFFErrorHandler TIFFSetWarningHandler(TIFFErrorHandler);
-extern TIFFErrorHandlerExt TIFFSetWarningHandlerExt(TIFFErrorHandlerExt);
-extern TIFFExtendProc TIFFSetTagExtender(TIFFExtendProc);
-extern ttile_t TIFFComputeTile(TIFF*, uint32, uint32, uint32, tsample_t);
-extern int TIFFCheckTile(TIFF*, uint32, uint32, uint32, tsample_t);
-extern ttile_t TIFFNumberOfTiles(TIFF*);
-extern tsize_t TIFFReadTile(TIFF*,
- tdata_t, uint32, uint32, uint32, tsample_t);
-extern tsize_t TIFFWriteTile(TIFF*,
- tdata_t, uint32, uint32, uint32, tsample_t);
-extern tstrip_t TIFFComputeStrip(TIFF*, uint32, tsample_t);
-extern tstrip_t TIFFNumberOfStrips(TIFF*);
-extern tsize_t TIFFReadEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
-extern tsize_t TIFFReadRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
-extern tsize_t TIFFReadEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t);
-extern tsize_t TIFFReadRawTile(TIFF*, ttile_t, tdata_t, tsize_t);
-extern tsize_t TIFFWriteEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
-extern tsize_t TIFFWriteRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
-extern tsize_t TIFFWriteEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t);
-extern tsize_t TIFFWriteRawTile(TIFF*, ttile_t, tdata_t, tsize_t);
-extern int TIFFDataWidth(TIFFDataType); /* table of tag datatype widths */
-extern void TIFFSetWriteOffset(TIFF*, toff_t);
-extern void TIFFSwabShort(uint16*);
-extern void TIFFSwabLong(uint32*);
-extern void TIFFSwabDouble(double*);
-extern void TIFFSwabArrayOfShort(uint16*, unsigned long);
-extern void TIFFSwabArrayOfTriples(uint8*, unsigned long);
-extern void TIFFSwabArrayOfLong(uint32*, unsigned long);
-extern void TIFFSwabArrayOfDouble(double*, unsigned long);
-extern void TIFFReverseBits(unsigned char *, unsigned long);
-extern const unsigned char* TIFFGetBitRevTable(int);
-
-#ifdef LOGLUV_PUBLIC
-#define U_NEU 0.210526316
-#define V_NEU 0.473684211
-#define UVSCALE 410.
-extern double LogL16toY(int);
-extern double LogL10toY(int);
-extern void XYZtoRGB24(float*, uint8*);
-extern int uv_decode(double*, double*, int);
-extern void LogLuv24toXYZ(uint32, float*);
-extern void LogLuv32toXYZ(uint32, float*);
-#if defined(c_plusplus) || defined(__cplusplus)
-extern int LogL16fromY(double, int = SGILOGENCODE_NODITHER);
-extern int LogL10fromY(double, int = SGILOGENCODE_NODITHER);
-extern int uv_encode(double, double, int = SGILOGENCODE_NODITHER);
-extern uint32 LogLuv24fromXYZ(float*, int = SGILOGENCODE_NODITHER);
-extern uint32 LogLuv32fromXYZ(float*, int = SGILOGENCODE_NODITHER);
-#else
-extern int LogL16fromY(double, int);
-extern int LogL10fromY(double, int);
-extern int uv_encode(double, double, int);
-extern uint32 LogLuv24fromXYZ(float*, int);
-extern uint32 LogLuv32fromXYZ(float*, int);
-#endif
-#endif /* LOGLUV_PUBLIC */
-
-extern int TIFFCIELabToRGBInit(TIFFCIELabToRGB*, TIFFDisplay *, float*);
-extern void TIFFCIELabToXYZ(TIFFCIELabToRGB *, uint32, int32, int32,
- float *, float *, float *);
-extern void TIFFXYZToRGB(TIFFCIELabToRGB *, float, float, float,
- uint32 *, uint32 *, uint32 *);
-
-extern int TIFFYCbCrToRGBInit(TIFFYCbCrToRGB*, float*, float*);
-extern void TIFFYCbCrtoRGB(TIFFYCbCrToRGB *, uint32, int32, int32,
- uint32 *, uint32 *, uint32 *);
-
-#if defined(c_plusplus) || defined(__cplusplus)
-}
-#endif
-
-#endif /* _TIFFIO_ */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tiffio.hxx b/src/3rdparty/libtiff/libtiff/tiffio.hxx
deleted file mode 100644
index ac7b9f2cd1..0000000000
--- a/src/3rdparty/libtiff/libtiff/tiffio.hxx
+++ /dev/null
@@ -1,42 +0,0 @@
-/* $Id: tiffio.hxx,v 1.1 2004/11/21 16:12:08 dron Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#ifndef _TIFFIO_HXX_
-#define _TIFFIO_HXX_
-
-/*
- * TIFF I/O library definitions which provide C++ streams API.
- */
-
-#include <iostream>
-#include "tiff.h"
-
-extern TIFF* TIFFStreamOpen(const char*, std::ostream *);
-extern TIFF* TIFFStreamOpen(const char*, std::istream *);
-
-#endif /* _TIFFIO_HXX_ */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tiffiop.h b/src/3rdparty/libtiff/libtiff/tiffiop.h
deleted file mode 100644
index 30bb19cfca..0000000000
--- a/src/3rdparty/libtiff/libtiff/tiffiop.h
+++ /dev/null
@@ -1,343 +0,0 @@
-/* $Id: tiffiop.h,v 1.51.2.1 2009-01-06 19:08:09 bfriesen Exp $ */
-
-/*
- * Copyright (c) 1988-1997 Sam Leffler
- * Copyright (c) 1991-1997 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#ifndef _TIFFIOP_
-#define _TIFFIOP_
-/*
- * ``Library-private'' definitions.
- */
-
-#include "tif_config.h"
-
-#ifdef HAVE_FCNTL_H
-# include <fcntl.h>
-#endif
-
-#ifdef HAVE_SYS_TYPES_H
-#if !defined(Q_OS_WINCE)
-# include <sys/types.h>
-#else
-# include <windows.h>
-# include <types.h>
-#endif
-#endif
-
-#ifdef HAVE_STRING_H
-# include <string.h>
-#endif
-
-#ifdef HAVE_ASSERT_H
-# include <assert.h>
-#else
-# define assert(x)
-#endif
-
-#ifdef HAVE_SEARCH_H
-# include <search.h>
-#else
-extern void *lfind(const void *, const void *, size_t *, size_t,
- int (*)(const void *, const void *));
-#endif
-
-/*
- Libtiff itself does not require a 64-bit type, but bundled TIFF
- utilities may use it.
-*/
-typedef TIFF_INT64_T int64;
-typedef TIFF_UINT64_T uint64;
-
-#include "tiffio.h"
-#include "tif_dir.h"
-
-#ifndef STRIP_SIZE_DEFAULT
-# define STRIP_SIZE_DEFAULT 8192
-#endif
-
-#define streq(a,b) (strcmp(a,b) == 0)
-
-#ifndef TRUE
-#define TRUE 1
-#define FALSE 0
-#endif
-
-typedef struct client_info {
- struct client_info *next;
- void *data;
- char *name;
-} TIFFClientInfoLink;
-
-/*
- * Typedefs for ``method pointers'' used internally.
- */
-typedef unsigned char tidataval_t; /* internal image data value type */
-typedef tidataval_t* tidata_t; /* reference to internal image data */
-
-typedef void (*TIFFVoidMethod)(TIFF*);
-typedef int (*TIFFBoolMethod)(TIFF*);
-typedef int (*TIFFPreMethod)(TIFF*, tsample_t);
-typedef int (*TIFFCodeMethod)(TIFF*, tidata_t, tsize_t, tsample_t);
-typedef int (*TIFFSeekMethod)(TIFF*, uint32);
-typedef void (*TIFFPostMethod)(TIFF*, tidata_t, tsize_t);
-typedef uint32 (*TIFFStripMethod)(TIFF*, uint32);
-typedef void (*TIFFTileMethod)(TIFF*, uint32*, uint32*);
-
-struct tiff {
- char* tif_name; /* name of open file */
- int tif_fd; /* open file descriptor */
- int tif_mode; /* open mode (O_*) */
- uint32 tif_flags;
-#define TIFF_FILLORDER 0x00003 /* natural bit fill order for machine */
-#define TIFF_DIRTYHEADER 0x00004 /* header must be written on close */
-#define TIFF_DIRTYDIRECT 0x00008 /* current directory must be written */
-#define TIFF_BUFFERSETUP 0x00010 /* data buffers setup */
-#define TIFF_CODERSETUP 0x00020 /* encoder/decoder setup done */
-#define TIFF_BEENWRITING 0x00040 /* written 1+ scanlines to file */
-#define TIFF_SWAB 0x00080 /* byte swap file information */
-#define TIFF_NOBITREV 0x00100 /* inhibit bit reversal logic */
-#define TIFF_MYBUFFER 0x00200 /* my raw data buffer; free on close */
-#define TIFF_ISTILED 0x00400 /* file is tile, not strip- based */
-#define TIFF_MAPPED 0x00800 /* file is mapped into memory */
-#define TIFF_POSTENCODE 0x01000 /* need call to postencode routine */
-#define TIFF_INSUBIFD 0x02000 /* currently writing a subifd */
-#define TIFF_UPSAMPLED 0x04000 /* library is doing data up-sampling */
-#define TIFF_STRIPCHOP 0x08000 /* enable strip chopping support */
-#define TIFF_HEADERONLY 0x10000 /* read header only, do not process */
- /* the first directory */
-#define TIFF_NOREADRAW 0x20000 /* skip reading of raw uncompressed */
- /* image data */
-#define TIFF_INCUSTOMIFD 0x40000 /* currently writing a custom IFD */
- toff_t tif_diroff; /* file offset of current directory */
- toff_t tif_nextdiroff; /* file offset of following directory */
- toff_t* tif_dirlist; /* list of offsets to already seen */
- /* directories to prevent IFD looping */
- tsize_t tif_dirlistsize;/* number of entires in offset list */
- uint16 tif_dirnumber; /* number of already seen directories */
- TIFFDirectory tif_dir; /* internal rep of current directory */
- TIFFDirectory tif_customdir; /* custom IFDs are separated from
- the main ones */
- TIFFHeader tif_header; /* file's header block */
- const int* tif_typeshift; /* data type shift counts */
- const long* tif_typemask; /* data type masks */
- uint32 tif_row; /* current scanline */
- tdir_t tif_curdir; /* current directory (index) */
- tstrip_t tif_curstrip; /* current strip for read/write */
- toff_t tif_curoff; /* current offset for read/write */
- toff_t tif_dataoff; /* current offset for writing dir */
-/* SubIFD support */
- uint16 tif_nsubifd; /* remaining subifds to write */
- toff_t tif_subifdoff; /* offset for patching SubIFD link */
-/* tiling support */
- uint32 tif_col; /* current column (offset by row too) */
- ttile_t tif_curtile; /* current tile for read/write */
- tsize_t tif_tilesize; /* # of bytes in a tile */
-/* compression scheme hooks */
- int tif_decodestatus;
- TIFFBoolMethod tif_setupdecode;/* called once before predecode */
- TIFFPreMethod tif_predecode; /* pre- row/strip/tile decoding */
- TIFFBoolMethod tif_setupencode;/* called once before preencode */
- int tif_encodestatus;
- TIFFPreMethod tif_preencode; /* pre- row/strip/tile encoding */
- TIFFBoolMethod tif_postencode; /* post- row/strip/tile encoding */
- TIFFCodeMethod tif_decoderow; /* scanline decoding routine */
- TIFFCodeMethod tif_encoderow; /* scanline encoding routine */
- TIFFCodeMethod tif_decodestrip;/* strip decoding routine */
- TIFFCodeMethod tif_encodestrip;/* strip encoding routine */
- TIFFCodeMethod tif_decodetile; /* tile decoding routine */
- TIFFCodeMethod tif_encodetile; /* tile encoding routine */
- TIFFVoidMethod tif_close; /* cleanup-on-close routine */
- TIFFSeekMethod tif_seek; /* position within a strip routine */
- TIFFVoidMethod tif_cleanup; /* cleanup state routine */
- TIFFStripMethod tif_defstripsize;/* calculate/constrain strip size */
- TIFFTileMethod tif_deftilesize;/* calculate/constrain tile size */
- tidata_t tif_data; /* compression scheme private data */
-/* input/output buffering */
- tsize_t tif_scanlinesize;/* # of bytes in a scanline */
- tsize_t tif_scanlineskew;/* scanline skew for reading strips */
- tidata_t tif_rawdata; /* raw data buffer */
- tsize_t tif_rawdatasize;/* # of bytes in raw data buffer */
- tidata_t tif_rawcp; /* current spot in raw buffer */
- tsize_t tif_rawcc; /* bytes unread from raw buffer */
-/* memory-mapped file support */
- tidata_t tif_base; /* base of mapped file */
- toff_t tif_size; /* size of mapped file region (bytes)
- FIXME: it should be tsize_t */
- TIFFMapFileProc tif_mapproc; /* map file method */
- TIFFUnmapFileProc tif_unmapproc;/* unmap file method */
-/* input/output callback methods */
- thandle_t tif_clientdata; /* callback parameter */
- TIFFReadWriteProc tif_readproc; /* read method */
- TIFFReadWriteProc tif_writeproc;/* write method */
- TIFFSeekProc tif_seekproc; /* lseek method */
- TIFFCloseProc tif_closeproc; /* close method */
- TIFFSizeProc tif_sizeproc; /* filesize method */
-/* post-decoding support */
- TIFFPostMethod tif_postdecode; /* post decoding routine */
-/* tag support */
- TIFFFieldInfo** tif_fieldinfo; /* sorted table of registered tags */
- size_t tif_nfields; /* # entries in registered tag table */
- const TIFFFieldInfo *tif_foundfield;/* cached pointer to already found tag */
- TIFFTagMethods tif_tagmethods; /* tag get/set/print routines */
- TIFFClientInfoLink *tif_clientinfo; /* extra client information. */
-};
-
-#define isPseudoTag(t) (t > 0xffff) /* is tag value normal or pseudo */
-
-#define isTiled(tif) (((tif)->tif_flags & TIFF_ISTILED) != 0)
-#define isMapped(tif) (((tif)->tif_flags & TIFF_MAPPED) != 0)
-#define isFillOrder(tif, o) (((tif)->tif_flags & (o)) != 0)
-#define isUpSampled(tif) (((tif)->tif_flags & TIFF_UPSAMPLED) != 0)
-#define TIFFReadFile(tif, buf, size) \
- ((*(tif)->tif_readproc)((tif)->tif_clientdata,buf,size))
-#define TIFFWriteFile(tif, buf, size) \
- ((*(tif)->tif_writeproc)((tif)->tif_clientdata,buf,size))
-#define TIFFSeekFile(tif, off, whence) \
- ((*(tif)->tif_seekproc)((tif)->tif_clientdata,(toff_t)(off),whence))
-#define TIFFCloseFile(tif) \
- ((*(tif)->tif_closeproc)((tif)->tif_clientdata))
-#define TIFFGetFileSize(tif) \
- ((*(tif)->tif_sizeproc)((tif)->tif_clientdata))
-#define TIFFMapFileContents(tif, paddr, psize) \
- ((*(tif)->tif_mapproc)((tif)->tif_clientdata,paddr,psize))
-#define TIFFUnmapFileContents(tif, addr, size) \
- ((*(tif)->tif_unmapproc)((tif)->tif_clientdata,addr,size))
-
-/*
- * Default Read/Seek/Write definitions.
- */
-#ifndef ReadOK
-#define ReadOK(tif, buf, size) \
- (TIFFReadFile(tif, (tdata_t) buf, (tsize_t)(size)) == (tsize_t)(size))
-#endif
-#ifndef SeekOK
-#define SeekOK(tif, off) \
- (TIFFSeekFile(tif, (toff_t) off, SEEK_SET) == (toff_t) off)
-#endif
-#ifndef WriteOK
-#define WriteOK(tif, buf, size) \
- (TIFFWriteFile(tif, (tdata_t) buf, (tsize_t) size) == (tsize_t) size)
-#endif
-
-/* NB: the uint32 casts are to silence certain ANSI-C compilers */
-#define TIFFhowmany(x, y) ((((uint32)(x))+(((uint32)(y))-1))/((uint32)(y)))
-#define TIFFhowmany8(x) (((x)&0x07)?((uint32)(x)>>3)+1:(uint32)(x)>>3)
-#define TIFFroundup(x, y) (TIFFhowmany(x,y)*(y))
-
-#define TIFFmax(A,B) ((A)>(B)?(A):(B))
-#define TIFFmin(A,B) ((A)<(B)?(A):(B))
-
-#define TIFFArrayCount(a) (sizeof (a) / sizeof ((a)[0]))
-
-#if defined(__cplusplus)
-extern "C" {
-#endif
-extern int _TIFFgetMode(const char*, const char*);
-extern int _TIFFNoRowEncode(TIFF*, tidata_t, tsize_t, tsample_t);
-extern int _TIFFNoStripEncode(TIFF*, tidata_t, tsize_t, tsample_t);
-extern int _TIFFNoTileEncode(TIFF*, tidata_t, tsize_t, tsample_t);
-extern int _TIFFNoRowDecode(TIFF*, tidata_t, tsize_t, tsample_t);
-extern int _TIFFNoStripDecode(TIFF*, tidata_t, tsize_t, tsample_t);
-extern int _TIFFNoTileDecode(TIFF*, tidata_t, tsize_t, tsample_t);
-extern void _TIFFNoPostDecode(TIFF*, tidata_t, tsize_t);
-extern int _TIFFNoPreCode (TIFF*, tsample_t);
-extern int _TIFFNoSeek(TIFF*, uint32);
-extern void _TIFFSwab16BitData(TIFF*, tidata_t, tsize_t);
-extern void _TIFFSwab24BitData(TIFF*, tidata_t, tsize_t);
-extern void _TIFFSwab32BitData(TIFF*, tidata_t, tsize_t);
-extern void _TIFFSwab64BitData(TIFF*, tidata_t, tsize_t);
-extern int TIFFFlushData1(TIFF*);
-extern int TIFFDefaultDirectory(TIFF*);
-extern void _TIFFSetDefaultCompressionState(TIFF*);
-extern int TIFFSetCompressionScheme(TIFF*, int);
-extern int TIFFSetDefaultCompressionState(TIFF*);
-extern uint32 _TIFFDefaultStripSize(TIFF*, uint32);
-extern void _TIFFDefaultTileSize(TIFF*, uint32*, uint32*);
-extern int _TIFFDataSize(TIFFDataType);
-
-extern void _TIFFsetByteArray(void**, void*, uint32);
-extern void _TIFFsetString(char**, char*);
-extern void _TIFFsetShortArray(uint16**, uint16*, uint32);
-extern void _TIFFsetLongArray(uint32**, uint32*, uint32);
-extern void _TIFFsetFloatArray(float**, float*, uint32);
-extern void _TIFFsetDoubleArray(double**, double*, uint32);
-
-extern void _TIFFprintAscii(FILE*, const char*);
-extern void _TIFFprintAsciiTag(FILE*, const char*, const char*);
-
-extern TIFFErrorHandler _TIFFwarningHandler;
-extern TIFFErrorHandler _TIFFerrorHandler;
-extern TIFFErrorHandlerExt _TIFFwarningHandlerExt;
-extern TIFFErrorHandlerExt _TIFFerrorHandlerExt;
-
-extern tdata_t _TIFFCheckMalloc(TIFF*, size_t, size_t, const char*);
-extern tdata_t _TIFFCheckRealloc(TIFF*, tdata_t, size_t, size_t, const char*);
-
-extern int TIFFInitDumpMode(TIFF*, int);
-#ifdef PACKBITS_SUPPORT
-extern int TIFFInitPackBits(TIFF*, int);
-#endif
-#ifdef CCITT_SUPPORT
-extern int TIFFInitCCITTRLE(TIFF*, int), TIFFInitCCITTRLEW(TIFF*, int);
-extern int TIFFInitCCITTFax3(TIFF*, int), TIFFInitCCITTFax4(TIFF*, int);
-#endif
-#ifdef THUNDER_SUPPORT
-extern int TIFFInitThunderScan(TIFF*, int);
-#endif
-#ifdef NEXT_SUPPORT
-extern int TIFFInitNeXT(TIFF*, int);
-#endif
-#ifdef LZW_SUPPORT
-extern int TIFFInitLZW(TIFF*, int);
-#endif
-#ifdef OJPEG_SUPPORT
-extern int TIFFInitOJPEG(TIFF*, int);
-#endif
-#ifdef JPEG_SUPPORT
-extern int TIFFInitJPEG(TIFF*, int);
-#endif
-#ifdef JBIG_SUPPORT
-extern int TIFFInitJBIG(TIFF*, int);
-#endif
-#ifdef ZIP_SUPPORT
-extern int TIFFInitZIP(TIFF*, int);
-#endif
-#ifdef PIXARLOG_SUPPORT
-extern int TIFFInitPixarLog(TIFF*, int);
-#endif
-#ifdef LOGLUV_SUPPORT
-extern int TIFFInitSGILog(TIFF*, int);
-#endif
-#ifdef VMS
-extern const TIFFCodec _TIFFBuiltinCODECS[];
-#else
-extern TIFFCodec _TIFFBuiltinCODECS[];
-#endif
-
-#if defined(__cplusplus)
-}
-#endif
-#endif /* _TIFFIOP_ */
-
-/* vim: set ts=8 sts=8 sw=8 noet: */
diff --git a/src/3rdparty/libtiff/libtiff/tiffvers.h b/src/3rdparty/libtiff/libtiff/tiffvers.h
deleted file mode 100644
index 7108541bc2..0000000000
--- a/src/3rdparty/libtiff/libtiff/tiffvers.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#define TIFFLIB_VERSION_STR "LIBTIFF, Version 3.9.2\nCopyright (c) 1988-1996 Sam Leffler\nCopyright (c) 1991-1996 Silicon Graphics, Inc."
-/*
- * This define can be used in code that requires
- * compilation-related definitions specific to a
- * version or versions of the library. Runtime
- * version checking should be done based on the
- * string returned by TIFFGetVersion.
- */
-#define TIFFLIB_VERSION 20091104
diff --git a/src/3rdparty/libtiff/libtiff/uvcode.h b/src/3rdparty/libtiff/libtiff/uvcode.h
deleted file mode 100644
index 5b2d7d71fa..0000000000
--- a/src/3rdparty/libtiff/libtiff/uvcode.h
+++ /dev/null
@@ -1,173 +0,0 @@
-/* Version 1.0 generated April 7, 1997 by Greg Ward Larson, SGI */
-#define UV_SQSIZ (float)0.003500
-#define UV_NDIVS 16289
-#define UV_VSTART (float)0.016940
-#define UV_NVS 163
-static struct {
- float ustart;
- short nus, ncum;
-} uv_row[UV_NVS] = {
- { (float)0.247663, 4, 0 },
- { (float)0.243779, 6, 4 },
- { (float)0.241684, 7, 10 },
- { (float)0.237874, 9, 17 },
- { (float)0.235906, 10, 26 },
- { (float)0.232153, 12, 36 },
- { (float)0.228352, 14, 48 },
- { (float)0.226259, 15, 62 },
- { (float)0.222371, 17, 77 },
- { (float)0.220410, 18, 94 },
- { (float)0.214710, 21, 112 },
- { (float)0.212714, 22, 133 },
- { (float)0.210721, 23, 155 },
- { (float)0.204976, 26, 178 },
- { (float)0.202986, 27, 204 },
- { (float)0.199245, 29, 231 },
- { (float)0.195525, 31, 260 },
- { (float)0.193560, 32, 291 },
- { (float)0.189878, 34, 323 },
- { (float)0.186216, 36, 357 },
- { (float)0.186216, 36, 393 },
- { (float)0.182592, 38, 429 },
- { (float)0.179003, 40, 467 },
- { (float)0.175466, 42, 507 },
- { (float)0.172001, 44, 549 },
- { (float)0.172001, 44, 593 },
- { (float)0.168612, 46, 637 },
- { (float)0.168612, 46, 683 },
- { (float)0.163575, 49, 729 },
- { (float)0.158642, 52, 778 },
- { (float)0.158642, 52, 830 },
- { (float)0.158642, 52, 882 },
- { (float)0.153815, 55, 934 },
- { (float)0.153815, 55, 989 },
- { (float)0.149097, 58, 1044 },
- { (float)0.149097, 58, 1102 },
- { (float)0.142746, 62, 1160 },
- { (float)0.142746, 62, 1222 },
- { (float)0.142746, 62, 1284 },
- { (float)0.138270, 65, 1346 },
- { (float)0.138270, 65, 1411 },
- { (float)0.138270, 65, 1476 },
- { (float)0.132166, 69, 1541 },
- { (float)0.132166, 69, 1610 },
- { (float)0.126204, 73, 1679 },
- { (float)0.126204, 73, 1752 },
- { (float)0.126204, 73, 1825 },
- { (float)0.120381, 77, 1898 },
- { (float)0.120381, 77, 1975 },
- { (float)0.120381, 77, 2052 },
- { (float)0.120381, 77, 2129 },
- { (float)0.112962, 82, 2206 },
- { (float)0.112962, 82, 2288 },
- { (float)0.112962, 82, 2370 },
- { (float)0.107450, 86, 2452 },
- { (float)0.107450, 86, 2538 },
- { (float)0.107450, 86, 2624 },
- { (float)0.107450, 86, 2710 },
- { (float)0.100343, 91, 2796 },
- { (float)0.100343, 91, 2887 },
- { (float)0.100343, 91, 2978 },
- { (float)0.095126, 95, 3069 },
- { (float)0.095126, 95, 3164 },
- { (float)0.095126, 95, 3259 },
- { (float)0.095126, 95, 3354 },
- { (float)0.088276, 100, 3449 },
- { (float)0.088276, 100, 3549 },
- { (float)0.088276, 100, 3649 },
- { (float)0.088276, 100, 3749 },
- { (float)0.081523, 105, 3849 },
- { (float)0.081523, 105, 3954 },
- { (float)0.081523, 105, 4059 },
- { (float)0.081523, 105, 4164 },
- { (float)0.074861, 110, 4269 },
- { (float)0.074861, 110, 4379 },
- { (float)0.074861, 110, 4489 },
- { (float)0.074861, 110, 4599 },
- { (float)0.068290, 115, 4709 },
- { (float)0.068290, 115, 4824 },
- { (float)0.068290, 115, 4939 },
- { (float)0.068290, 115, 5054 },
- { (float)0.063573, 119, 5169 },
- { (float)0.063573, 119, 5288 },
- { (float)0.063573, 119, 5407 },
- { (float)0.063573, 119, 5526 },
- { (float)0.057219, 124, 5645 },
- { (float)0.057219, 124, 5769 },
- { (float)0.057219, 124, 5893 },
- { (float)0.057219, 124, 6017 },
- { (float)0.050985, 129, 6141 },
- { (float)0.050985, 129, 6270 },
- { (float)0.050985, 129, 6399 },
- { (float)0.050985, 129, 6528 },
- { (float)0.050985, 129, 6657 },
- { (float)0.044859, 134, 6786 },
- { (float)0.044859, 134, 6920 },
- { (float)0.044859, 134, 7054 },
- { (float)0.044859, 134, 7188 },
- { (float)0.040571, 138, 7322 },
- { (float)0.040571, 138, 7460 },
- { (float)0.040571, 138, 7598 },
- { (float)0.040571, 138, 7736 },
- { (float)0.036339, 142, 7874 },
- { (float)0.036339, 142, 8016 },
- { (float)0.036339, 142, 8158 },
- { (float)0.036339, 142, 8300 },
- { (float)0.032139, 146, 8442 },
- { (float)0.032139, 146, 8588 },
- { (float)0.032139, 146, 8734 },
- { (float)0.032139, 146, 8880 },
- { (float)0.027947, 150, 9026 },
- { (float)0.027947, 150, 9176 },
- { (float)0.027947, 150, 9326 },
- { (float)0.023739, 154, 9476 },
- { (float)0.023739, 154, 9630 },
- { (float)0.023739, 154, 9784 },
- { (float)0.023739, 154, 9938 },
- { (float)0.019504, 158, 10092 },
- { (float)0.019504, 158, 10250 },
- { (float)0.019504, 158, 10408 },
- { (float)0.016976, 161, 10566 },
- { (float)0.016976, 161, 10727 },
- { (float)0.016976, 161, 10888 },
- { (float)0.016976, 161, 11049 },
- { (float)0.012639, 165, 11210 },
- { (float)0.012639, 165, 11375 },
- { (float)0.012639, 165, 11540 },
- { (float)0.009991, 168, 11705 },
- { (float)0.009991, 168, 11873 },
- { (float)0.009991, 168, 12041 },
- { (float)0.009016, 170, 12209 },
- { (float)0.009016, 170, 12379 },
- { (float)0.009016, 170, 12549 },
- { (float)0.006217, 173, 12719 },
- { (float)0.006217, 173, 12892 },
- { (float)0.005097, 175, 13065 },
- { (float)0.005097, 175, 13240 },
- { (float)0.005097, 175, 13415 },
- { (float)0.003909, 177, 13590 },
- { (float)0.003909, 177, 13767 },
- { (float)0.002340, 177, 13944 },
- { (float)0.002389, 170, 14121 },
- { (float)0.001068, 164, 14291 },
- { (float)0.001653, 157, 14455 },
- { (float)0.000717, 150, 14612 },
- { (float)0.001614, 143, 14762 },
- { (float)0.000270, 136, 14905 },
- { (float)0.000484, 129, 15041 },
- { (float)0.001103, 123, 15170 },
- { (float)0.001242, 115, 15293 },
- { (float)0.001188, 109, 15408 },
- { (float)0.001011, 103, 15517 },
- { (float)0.000709, 97, 15620 },
- { (float)0.000301, 89, 15717 },
- { (float)0.002416, 82, 15806 },
- { (float)0.003251, 76, 15888 },
- { (float)0.003246, 69, 15964 },
- { (float)0.004141, 62, 16033 },
- { (float)0.005963, 55, 16095 },
- { (float)0.008839, 47, 16150 },
- { (float)0.010490, 40, 16197 },
- { (float)0.016994, 31, 16237 },
- { (float)0.023659, 21, 16268 },
-};
diff --git a/src/3rdparty/libtiff/nmake.opt b/src/3rdparty/libtiff/nmake.opt
deleted file mode 100644
index 7e882d2d4a..0000000000
--- a/src/3rdparty/libtiff/nmake.opt
+++ /dev/null
@@ -1,218 +0,0 @@
-# $Id: nmake.opt,v 1.18 2006/06/07 16:33:45 dron Exp $
-#
-# Copyright (C) 2004, Andrey Kiselev <dron@ak4719.spb.edu>
-#
-# Permission to use, copy, modify, distribute, and sell this software and
-# its documentation for any purpose is hereby granted without fee, provided
-# that (i) the above copyright notices and this permission notice appear in
-# all copies of the software and related documentation, and (ii) the names of
-# Sam Leffler and Silicon Graphics may not be used in any advertising or
-# publicity relating to the software without the specific, prior written
-# permission of Sam Leffler and Silicon Graphics.
-#
-# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
-# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
-# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
-#
-# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
-# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
-# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
-# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
-# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
-# OF THIS SOFTWARE.
-
-# Compile time parameters for MS Visual C++ compiler.
-# You may edit this file to specify building options.
-
-#
-###### Edit the following lines to choose a feature set you need. #######
-#
-
-#
-# Select WINMODE_CONSOLE to build a library which reports errors to stderr, or
-# WINMODE_WINDOWED to build such that errors are reported via MessageBox().
-#
-WINMODE_CONSOLE = 1
-#WINMODE_WINDOWED = 1
-
-#
-# Comment out the following lines to disable internal codecs.
-#
-# Support for CCITT Group 3 & 4 algorithms
-CCITT_SUPPORT = 1
-# Support for Macintosh PackBits algorithm
-PACKBITS_SUPPORT = 1
-# Support for LZW algorithm
-LZW_SUPPORT = 1
-# Support for ThunderScan 4-bit RLE algorithm
-THUNDER_SUPPORT = 1
-# Support for NeXT 2-bit RLE algorithm
-NEXT_SUPPORT = 1
-# Support for LogLuv high dynamic range encoding
-LOGLUV_SUPPORT = 1
-
-#
-# Uncomment and edit following lines to enable JPEG support.
-#
-#JPEG_SUPPORT = 1
-#JPEGDIR = d:/projects/jpeg-6b
-#JPEG_INCLUDE = -I$(JPEGDIR)
-#JPEG_LIB = $(JPEGDIR)/Release/jpeg.lib
-
-#
-# Uncomment and edit following lines to enable ZIP support
-# (required for Deflate compression and Pixar log-format)
-#
-#ZIP_SUPPORT = 1
-#ZLIBDIR = d:/projects/zlib-1.2.1
-#ZLIB_INCLUDE = -I$(ZLIBDIR)
-#ZLIB_LIB = $(ZLIBDIR)/zlib.lib
-
-#
-# Uncomment and edit following lines to enable ISO JBIG support
-#
-#JBIG_SUPPORT = 1
-#JBIGDIR = d:/projects/jbigkit
-#JBIG_INCLUDE = -I$(JBIGDIR)/libjbig
-#JBIG_LIB = $(JBIGDIR)/libjbig/jbig.lib
-
-#
-# Uncomment following line to enable Pixar log-format algorithm
-# (Zlib required).
-#
-#PIXARLOG_SUPPORT = 1
-
-#
-# Comment out the following lines to disable strip chopping
-# (whether or not to convert single-strip uncompressed images to mutiple
-# strips of specified size to reduce memory usage). Default strip size
-# is 8192 bytes, it can be configured via the STRIP_SIZE_DEFAULT parameter
-#
-STRIPCHOP_SUPPORT = 1
-STRIP_SIZE_DEFAULT = 8192
-
-#
-# Comment out the following lines to disable treating the fourth sample with
-# no EXTRASAMPLE_ value as being ASSOCALPHA. Many packages produce RGBA
-# files but don't mark the alpha properly.
-#
-EXTRASAMPLE_AS_ALPHA_SUPPORT = 1
-
-#
-# Comment out the following lines to disable picking up YCbCr subsampling
-# info from the JPEG data stream to support files lacking the tag.
-# See Bug 168 in Bugzilla, and JPEGFixupTestSubsampling() for details.
-#
-CHECK_JPEG_YCBCR_SUBSAMPLING = 1
-
-#
-####################### Compiler related options. #######################
-#
-
-#
-# Pick debug or optimized build flags. We default to an optimized build
-# with no debugging information.
-# NOTE: /EHsc option required if you want to build the C++ stream API
-#
-OPTFLAGS = /Ox /MD /EHsc /W3 /D_CRT_SECURE_NO_DEPRECATE
-#OPTFLAGS = /Zi
-
-#
-# Uncomment following line to enable using Windows Common RunTime Library
-# instead of Windows specific system calls. See notes on top of tif_unix.c
-# module for details.
-#
-USE_WIN_CRT_LIB = 1
-
-# Compiler specific options. You may probably want to adjust compilation
-# parameters in CFLAGS variable. Refer to your compiler documentation
-# for the option reference.
-#
-MAKE = nmake /nologo
-CC = cl /nologo
-CXX = cl /nologo
-AR = lib /nologo
-LD = link /nologo
-
-CFLAGS = $(OPTFLAGS) $(INCL) $(EXTRAFLAGS)
-CXXFLAGS = $(OPTFLAGS) $(INCL) $(EXTRAFLAGS)
-EXTRAFLAGS =
-LIBS =
-
-# Name of the output shared library
-DLLNAME = libtiff.dll
-
-#
-########### There is nothing to edit below this line normally. ###########
-#
-
-# Set the native cpu bit order
-EXTRAFLAGS = -DFILLODER_LSB2MSB $(EXTRAFLAGS)
-
-!IFDEF WINMODE_WINDOWED
-EXTRAFLAGS = -DTIF_PLATFORM_WINDOWED $(EXTRAFLAGS)
-LIBS = user32.lib $(LIBS)
-!ELSE
-EXTRAFLAGS = -DTIF_PLATFORM_CONSOLE $(EXTRAFLAGS)
-!ENDIF
-
-# Codec stuff
-!IFDEF CCITT_SUPPORT
-EXTRAFLAGS = -DCCITT_SUPPORT $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF PACKBITS_SUPPORT
-EXTRAFLAGS = -DPACKBITS_SUPPORT $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF LZW_SUPPORT
-EXTRAFLAGS = -DLZW_SUPPORT $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF THUNDER_SUPPORT
-EXTRAFLAGS = -DTHUNDER_SUPPORT $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF NEXT_SUPPORT
-EXTRAFLAGS = -DNEXT_SUPPORT $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF LOGLUV_SUPPORT
-EXTRAFLAGS = -DLOGLUV_SUPPORT $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF JPEG_SUPPORT
-LIBS = $(LIBS) $(JPEG_LIB)
-EXTRAFLAGS = -DJPEG_SUPPORT -DOJPEG_SUPPORT $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF ZIP_SUPPORT
-LIBS = $(LIBS) $(ZLIB_LIB)
-EXTRAFLAGS = -DZIP_SUPPORT $(EXTRAFLAGS)
-!IFDEF PIXARLOG_SUPPORT
-EXTRAFLAGS = -DPIXARLOG_SUPPORT $(EXTRAFLAGS)
-!ENDIF
-!ENDIF
-
-!IFDEF JBIG_SUPPORT
-LIBS = $(LIBS) $(JBIG_LIB)
-EXTRAFLAGS = -DJBIG_SUPPORT $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF STRIPCHOP_SUPPORT
-EXTRAFLAGS = -DSTRIPCHOP_DEFAULT=TIFF_STRIPCHOP -DSTRIP_SIZE_DEFAULT=$(STRIP_SIZE_DEFAULT) $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF EXTRASAMPLE_AS_ALPHA_SUPPORT
-EXTRAFLAGS = -DDEFAULT_EXTRASAMPLE_AS_ALPHA $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF CHECK_JPEG_YCBCR_SUBSAMPLING
-EXTRAFLAGS = -DCHECK_JPEG_YCBCR_SUBSAMPLING $(EXTRAFLAGS)
-!ENDIF
-
-!IFDEF USE_WIN_CRT_LIB
-EXTRAFLAGS = -DAVOID_WIN32_FILEIO $(EXTRAFLAGS)
-!ELSE
-EXTRAFLAGS = -DUSE_WIN32_FILEIO $(EXTRAFLAGS)
-!ENDIF
diff --git a/src/3rdparty/libtiff/port/dummy.c b/src/3rdparty/libtiff/port/dummy.c
deleted file mode 100644
index 1cbda6afa1..0000000000
--- a/src/3rdparty/libtiff/port/dummy.c
+++ /dev/null
@@ -1,12 +0,0 @@
-/* $Id: dummy.c,v 1.2.2.1 2007/03/21 14:53:46 dron Exp $ */
-
-/*
- * Dummy function, just to be ensure that the library always will be created.
- */
-
-void
-libport_dummy_function()
-{
- return;
-}
-
diff --git a/src/3rdparty/libtiff/port/getopt.c b/src/3rdparty/libtiff/port/getopt.c
deleted file mode 100644
index 0138c89e30..0000000000
--- a/src/3rdparty/libtiff/port/getopt.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/* $Id: getopt.c,v 1.2 2005/07/07 16:34:06 dron Exp $ */
-
-/*
- * Copyright (c) 1987, 1993, 1994
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if 0
-static char sccsid[] = "@(#)getopt.c 8.3 (Berkeley) 4/27/95";
-__RCSID("$NetBSD: getopt.c,v 1.26 2003/08/07 16:43:40 agc Exp $");
-#endif
-
-#include <stdio.h>
-#include <string.h>
-
-int opterr = 1, /* if error message should be printed */
- optind = 1, /* index into parent argv vector */
- optopt, /* character checked for validity */
- optreset; /* reset getopt */
-char *optarg; /* argument associated with option */
-
-#define BADCH (int)'?'
-#define BADARG (int)':'
-#define EMSG ""
-
-/*
- * getopt --
- * Parse argc/argv argument vector.
- */
-int
-getopt(int argc, char * const argv[], const char *optstring)
-{
- static char *place = EMSG; /* option letter processing */
- char *oli; /* option letter list index */
-
- if (optreset || *place == 0) { /* update scanning pointer */
- optreset = 0;
- place = argv[optind];
- if (optind >= argc || *place++ != '-') {
- /* Argument is absent or is not an option */
- place = EMSG;
- return (-1);
- }
- optopt = *place++;
- if (optopt == '-' && *place == 0) {
- /* "--" => end of options */
- ++optind;
- place = EMSG;
- return (-1);
- }
- if (optopt == 0) {
- /* Solitary '-', treat as a '-' option
- if the program (eg su) is looking for it. */
- place = EMSG;
- if (strchr(optstring, '-') == NULL)
- return -1;
- optopt = '-';
- }
- } else
- optopt = *place++;
-
- /* See if option letter is one the caller wanted... */
- if (optopt == ':' || (oli = strchr(optstring, optopt)) == NULL) {
- if (*place == 0)
- ++optind;
- if (opterr && *optstring != ':')
- (void)fprintf(stderr,
- "unknown option -- %c\n", optopt);
- return (BADCH);
- }
-
- /* Does this option need an argument? */
- if (oli[1] != ':') {
- /* don't need argument */
- optarg = NULL;
- if (*place == 0)
- ++optind;
- } else {
- /* Option-argument is either the rest of this argument or the
- entire next argument. */
- if (*place)
- optarg = place;
- else if (argc > ++optind)
- optarg = argv[optind];
- else {
- /* option-argument absent */
- place = EMSG;
- if (*optstring == ':')
- return (BADARG);
- if (opterr)
- (void)fprintf(stderr,
- "option requires an argument -- %c\n",
- optopt);
- return (BADCH);
- }
- place = EMSG;
- ++optind;
- }
- return (optopt); /* return option letter */
-}
diff --git a/src/3rdparty/libtiff/port/lfind.c b/src/3rdparty/libtiff/port/lfind.c
deleted file mode 100644
index 64b261ca36..0000000000
--- a/src/3rdparty/libtiff/port/lfind.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/* $Id: lfind.c,v 1.4 2007/01/15 18:40:39 mloskot Exp $ */
-
-/*
- * Copyright (c) 1989, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Roger L. Snyder.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if 0
-static char sccsid[] = "@(#)lsearch.c 8.1 (Berkeley) 6/4/93";
-__RCSID("$NetBSD: lsearch.c,v 1.2 2005/07/06 15:47:15 drochner Exp $");
-#endif
-
-#ifdef _WIN32_WCE
-# include <wce_types.h>
-#else
-# include <sys/types.h>
-#endif
-
-#ifndef NULL
-# define NULL 0
-#endif
-
-void *
-lfind(const void *key, const void *base, size_t *nmemb, size_t size,
- int(*compar)(const void *, const void *))
-{
- char *element, *end;
-
- end = (char *)base + *nmemb * size;
- for (element = (char *)base; element < end; element += size)
- if (!compar(element, key)) /* key found */
- return element;
-
- return NULL;
-}
diff --git a/src/3rdparty/libtiff/port/libport.h b/src/3rdparty/libtiff/port/libport.h
deleted file mode 100644
index e3413f7af2..0000000000
--- a/src/3rdparty/libtiff/port/libport.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* $Id: libport.h,v 1.2.2.2 2009-11-02 14:47:41 bfriesen Exp $ */
-
-/*
- * Copyright (c) 2009 Frank Warmerdam
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee, provided
- * that (i) the above copyright notices and this permission notice appear in
- * all copies of the software and related documentation, and (ii) the names of
- * Sam Leffler and Silicon Graphics may not be used in any advertising or
- * publicity relating to the software without the specific, prior written
- * permission of Sam Leffler and Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
- * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
- * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
-
-#ifndef _LIBPORT_
-#define _LIBPORT_
-
-int getopt(int argc, char * const argv[], const char *optstring);
-extern char *optarg;
-extern int opterr;
-extern int optind;
-extern int optopt;
-
-int strcasecmp(const char *s1, const char *s2);
-
-#ifndef HAVE_GETOPT
-# define HAVE_GETOPT 1
-#endif
-
-#if 0
-unsigned long strtoul(const char *nptr, char **endptr, int base);
-#endif
-
-#if 0
-void *
-lfind(const void *key, const void *base, size_t *nmemb, size_t size,
- int(*compar)(const void *, const void *));
-#endif
-
-#endif /* ndef _LIBPORT_ */
diff --git a/src/3rdparty/libtiff/port/strcasecmp.c b/src/3rdparty/libtiff/port/strcasecmp.c
deleted file mode 100644
index 2422304b12..0000000000
--- a/src/3rdparty/libtiff/port/strcasecmp.c
+++ /dev/null
@@ -1,50 +0,0 @@
-/* $Id: strcasecmp.c,v 1.2 2005/07/07 16:34:06 dron Exp $ */
-
-/*
- * Copyright (c) 1987, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if 0
-static char sccsid[] = "@(#)strcasecmp.c 8.1 (Berkeley) 6/4/93";
-__RCSID("$NetBSD: strcasecmp.c,v 1.16 2003/08/07 16:43:49 agc Exp $");
-#endif
-
-#include <ctype.h>
-#include <string.h>
-
-int
-strcasecmp(const char *s1, const char *s2)
-{
- const unsigned char *us1 = (const unsigned char *)s1,
- *us2 = (const unsigned char *)s2;
-
- while (tolower(*us1) == tolower(*us2++))
- if (*us1++ == '\0')
- return (0);
- return (tolower(*us1) - tolower(*--us2));
-}
diff --git a/src/3rdparty/libtiff/port/strtoul.c b/src/3rdparty/libtiff/port/strtoul.c
deleted file mode 100644
index f7a9a1a565..0000000000
--- a/src/3rdparty/libtiff/port/strtoul.c
+++ /dev/null
@@ -1,109 +0,0 @@
-/* $Id: strtoul.c,v 1.2 2005/07/07 16:34:06 dron Exp $ */
-
-/*
- * Copyright (c) 1990, 1993
- * The Regents of the University of California. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#if 0
-static char sccsid[] = "@(#)strtoul.c 8.1 (Berkeley) 6/4/93";
-__RCSID("$NetBSD: strtoul.c,v 1.16 2003/08/07 16:43:45 agc Exp $");
-#endif
-
-#include <ctype.h>
-#include <errno.h>
-#include <limits.h>
-#include <stdlib.h>
-
-/*
- * Convert a string to an unsigned long integer.
- *
- * Ignores `locale' stuff. Assumes that the upper and lower case
- * alphabets and digits are each contiguous.
- */
-unsigned long
-strtoul(const char *nptr, char **endptr, int base)
-{
- const char *s;
- unsigned long acc, cutoff;
- int c;
- int neg, any, cutlim;
-
- /*
- * See strtol for comments as to the logic used.
- */
- s = nptr;
- do {
- c = (unsigned char) *s++;
- } while (isspace(c));
- if (c == '-') {
- neg = 1;
- c = *s++;
- } else {
- neg = 0;
- if (c == '+')
- c = *s++;
- }
- if ((base == 0 || base == 16) &&
- c == '0' && (*s == 'x' || *s == 'X')) {
- c = s[1];
- s += 2;
- base = 16;
- }
- if (base == 0)
- base = c == '0' ? 8 : 10;
-
- cutoff = ULONG_MAX / (unsigned long)base;
- cutlim = (int)(ULONG_MAX % (unsigned long)base);
- for (acc = 0, any = 0;; c = (unsigned char) *s++) {
- if (isdigit(c))
- c -= '0';
- else if (isalpha(c))
- c -= isupper(c) ? 'A' - 10 : 'a' - 10;
- else
- break;
- if (c >= base)
- break;
- if (any < 0)
- continue;
- if (acc > cutoff || (acc == cutoff && c > cutlim)) {
- any = -1;
- acc = ULONG_MAX;
- errno = ERANGE;
- } else {
- any = 1;
- acc *= (unsigned long)base;
- acc += c;
- }
- }
- if (neg && any > 0)
- acc = -acc;
- if (endptr != 0)
- /* LINTED interface specification */
- *endptr = (char *)(any ? s - 1 : nptr);
- return (acc);
-}
diff --git a/src/3rdparty/patches/libmng-1.0.10-endless-loop.patch b/src/3rdparty/patches/libmng-1.0.10-endless-loop.patch
deleted file mode 100644
index 31f0474e6b..0000000000
--- a/src/3rdparty/patches/libmng-1.0.10-endless-loop.patch
+++ /dev/null
@@ -1,65 +0,0 @@
---- libmng_data.h.orig 2007-04-20 10:41:58.000000000 +0200
-+++ libmng_data.h 2007-07-14 00:00:00.000000000 +0200
-@@ -658,6 +658,9 @@
- mng_int32 iFrameclipb;
-
- mng_uint32 iNextdelay; /* delay *after* next image */
-+
-+ mng_bool bForcedelay;
-+ mng_uint32 iAccumdelay;
- #endif
-
- #ifndef MNG_SKIPCHUNK_SHOW
---- libmng_display.c.orig 2007-04-20 10:41:58.000000000 +0200
-+++ libmng_display.c 2007-07-14 00:00:00.000000000 +0200
-@@ -384,8 +384,9 @@
-
- {
- #ifndef MNG_SKIPCHUNK_FRAM
-- if (pData->iFramedelay > 0) /* real delay ? */
-+ if (pData->iFramedelay > 0 || pData->bForcedelay) /* real delay ? */
- { /* let the app refresh first ? */
-+ pData->bForcedelay = MNG_FALSE;
- if ((pData->bRunning) && (!pData->bSkipping) &&
- (pData->iUpdatetop < pData->iUpdatebottom) && (pData->iUpdateleft < pData->iUpdateright))
- if (!pData->fRefresh (((mng_handle)pData),
-@@ -455,6 +456,7 @@
- pData->iFrametime = pData->iFrametime + iWaitfor;
- /* setup for next delay */
- pData->iFramedelay = pData->iNextdelay;
-+ pData->iAccumdelay += pData->iFramedelay;
- #endif
- }
-
-@@ -3340,6 +3342,9 @@
- MNG_TRACE (pData, MNG_FN_PROCESS_DISPLAY_MEND, MNG_LC_START);
- #endif
-
-+ pData->bForcedelay = pData->iAccumdelay ? MNG_FALSE : MNG_TRUE;
-+ pData->iAccumdelay = 0;
-+
- #ifdef MNG_SUPPORT_DYNAMICMNG
- if (pData->bStopafterseek) /* need to stop after this ? */
- {
---- libmng_hlapi.c.orig 2007-07-06 18:23:04.000000000 +0200
-+++ libmng_hlapi.c 2007-07-14 00:00:00.000000000 +0200
-@@ -446,6 +446,9 @@
- pData->iFrameclipb = 0;
-
- pData->iNextdelay = 1;
-+
-+ pData->bForcedelay = MNG_FALSE;
-+ pData->iAccumdelay = 0;
- #endif
-
- #ifndef MNG_SKIPCHUNK_SHOW
-@@ -1737,6 +1740,9 @@
- pData->iFrameclipb = 0;
-
- pData->iNextdelay = 1;
-+
-+ pData->bForcedelay = MNG_FALSE;
-+ pData->iAccumdelay = 0;
- #endif
-
- #ifndef MNG_SKIPCHUNK_SHOW
diff --git a/src/3rdparty/pcre.pri b/src/3rdparty/pcre.pri
new file mode 100644
index 0000000000..92066e1aee
--- /dev/null
+++ b/src/3rdparty/pcre.pri
@@ -0,0 +1,38 @@
+DEFINES += PCRE_HAVE_CONFIG_H
+
+# man 3 pcrejit for a list of supported platforms;
+# as PCRE 8.30, stable JIT support is available for:
+# - ARM v5, v7, and Thumb2
+# - x86/x86-64
+# - MIPS 32bit
+equals(QT_ARCH, "i386")|equals(QT_ARCH, "x86_64")|equals(QT_ARCH, "arm")|if(equals(QT_ARCH, "mips"):!*-64) {
+ DEFINES += SUPPORT_JIT
+}
+
+win32:DEFINES += PCRE_STATIC
+
+INCLUDEPATH += $$PWD/pcre
+SOURCES += \
+ $$PWD/pcre/pcre16_byte_order.c \
+ $$PWD/pcre/pcre16_chartables.c \
+ $$PWD/pcre/pcre16_compile.c \
+ $$PWD/pcre/pcre16_config.c \
+ $$PWD/pcre/pcre16_dfa_exec.c \
+ $$PWD/pcre/pcre16_exec.c \
+ $$PWD/pcre/pcre16_fullinfo.c \
+ $$PWD/pcre/pcre16_get.c \
+ $$PWD/pcre/pcre16_globals.c \
+ $$PWD/pcre/pcre16_jit_compile.c \
+ $$PWD/pcre/pcre16_maketables.c \
+ $$PWD/pcre/pcre16_newline.c \
+ $$PWD/pcre/pcre16_ord2utf16.c \
+ $$PWD/pcre/pcre16_refcount.c \
+ $$PWD/pcre/pcre16_string_utils.c \
+ $$PWD/pcre/pcre16_study.c \
+ $$PWD/pcre/pcre16_tables.c \
+ $$PWD/pcre/pcre16_ucd.c \
+ $$PWD/pcre/pcre16_utf16_utils.c \
+ $$PWD/pcre/pcre16_valid_utf16.c \
+ $$PWD/pcre/pcre16_version.c \
+ $$PWD/pcre/pcre16_xclass.c
+
diff --git a/src/3rdparty/pcre/config.h b/src/3rdparty/pcre/config.h
new file mode 100644
index 0000000000..4fe10f41d8
--- /dev/null
+++ b/src/3rdparty/pcre/config.h
@@ -0,0 +1,15 @@
+#define HAVE_MEMMOVE 1
+#define HAVE_STDLIB_H 1
+#define HAVE_STRING_H 1
+
+#define LINK_SIZE 2
+#define MATCH_LIMIT 10000000
+#define MATCH_LIMIT_RECURSION MATCH_LIMIT
+#define MAX_NAME_COUNT 10000
+#define MAX_NAME_SIZE 32
+#define NEWLINE 10
+
+#define POSIX_MALLOC_THRESHOLD 10
+#define SUPPORT_UCP
+#define SUPPORT_UTF16
+
diff --git a/src/3rdparty/pcre/import_from_pcre_tarball.sh b/src/3rdparty/pcre/import_from_pcre_tarball.sh
new file mode 100755
index 0000000000..914820e8d6
--- /dev/null
+++ b/src/3rdparty/pcre/import_from_pcre_tarball.sh
@@ -0,0 +1,154 @@
+#! /bin/sh
+#############################################################################
+##
+## Copyright (C) 2012 Giuseppe D'Angelo <dangelog@gmail.com>.
+## Contact: http://www.qt-project.org/
+##
+## This file is the build configuration utility 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$
+##
+#############################################################################
+
+# This is a small script to copy the required files from a PCRE tarball
+# into 3rdparty/pcre/ , following the instructions found in the NON-UNIX-USE
+# file. Documentation, tests, demos etc. are not imported.
+# Also, a global s/HAVE_CONFIG_H/PCRE_HAVE_CONFIG_H/g is performed, to avoid
+# tampering QtCore compilation with a -DHAVE_CONFIG_H.
+
+if [ $# -ne 2 ]; then
+ echo "Usage: $0 pcre_tarball_dir/ \$QTDIR/src/3rdparty/pcre/"
+ exit 1
+fi
+
+PCRE_DIR=$1
+TARGET_DIR=$2
+
+if [ ! -d "$PCRE_DIR" -o ! -r "$PCRE_DIR" -o ! -d "$TARGET_DIR" -o ! -w "$TARGET_DIR" ]; then
+ echo "Either the PCRE source dir or the target dir do not exist,"
+ echo "are not directories or have the wrong permissions."
+ exit 2
+fi
+
+# with 1 argument, copies PCRE_DIR/$1 to TARGET_DIR/$1
+# with 2 arguments, copies PCRE_DIR/$1 to TARGET_DIR/$2
+# every file copied gets a s/HAVE_CONFIG_H/PCRE_HAVE_CONFIG_H/g
+copy_and_convert_file() {
+ if [ $# -lt 1 -o $# -gt 2 ]; then
+ echo "Wrong number of arguments to copy_and_convert_file"
+ exit 3
+ fi
+
+ SOURCE_FILE=$1
+ if [ -n "$2" ]; then
+ DEST_FILE=$2
+ else
+ DEST_FILE=$1
+ fi
+
+ mkdir -p "$TARGET_DIR/$(dirname "$SOURCE_FILE")"
+ sed 's/HAVE_CONFIG_H/PCRE_HAVE_CONFIG_H/g' < "$PCRE_DIR/$SOURCE_FILE" > "$TARGET_DIR/$DEST_FILE"
+}
+
+copy_and_convert_file "pcre.h.generic" "pcre.h"
+copy_and_convert_file "pcre_chartables.c.dist" "pcre_chartables.c"
+
+FILES="
+ AUTHORS
+ COPYING
+ LICENCE
+ pcre_internal.h
+ ucp.h
+ pcre_byte_order.c
+ pcre_compile.c
+ pcre_config.c
+ pcre_dfa_exec.c
+ pcre_exec.c
+ pcre_fullinfo.c
+ pcre_get.c
+ pcre_globals.c
+ pcre_jit_compile.c
+ pcre_maketables.c
+ pcre_newline.c
+ pcre_ord2utf8.c
+ pcre_refcount.c
+ pcre_string_utils.c
+ pcre_study.c
+ pcre_tables.c
+ pcre_ucd.c
+ pcre_valid_utf8.c
+ pcre_version.c
+ pcre_xclass.c
+ pcre16_byte_order.c
+ pcre16_chartables.c
+ pcre16_compile.c
+ pcre16_config.c
+ pcre16_dfa_exec.c
+ pcre16_exec.c
+ pcre16_fullinfo.c
+ pcre16_get.c
+ pcre16_globals.c
+ pcre16_jit_compile.c
+ pcre16_maketables.c
+ pcre16_newline.c
+ pcre16_ord2utf16.c
+ pcre16_refcount.c
+ pcre16_string_utils.c
+ pcre16_study.c
+ pcre16_tables.c
+ pcre16_ucd.c
+ pcre16_utf16_utils.c
+ pcre16_valid_utf16.c
+ pcre16_version.c
+ pcre16_xclass.c
+ sljit/sljitLir.c
+ sljit/sljitLir.h
+ sljit/sljitNativePPC_common.c
+ sljit/sljitNativeX86_common.c
+ sljit/sljitNativeARM_v5.c
+ sljit/sljitNativeX86_32.c
+ sljit/sljitNativeX86_64.c
+ sljit/sljitNativePPC_32.c
+ sljit/sljitNativePPC_64.c
+ sljit/sljitConfig.h
+ sljit/sljitNativeMIPS_32.c
+ sljit/sljitUtils.c
+ sljit/sljitNativeMIPS_common.c
+ sljit/sljitExecAllocator.c
+ sljit/sljitConfigInternal.h
+ sljit/sljitNativeARM_Thumb2.c
+"
+
+for i in $FILES; do
+ copy_and_convert_file "$i"
+done
diff --git a/src/3rdparty/s60/eiksoftkeyimage.h b/src/3rdparty/s60/eiksoftkeyimage.h
deleted file mode 100644
index 01a41a5b47..0000000000
--- a/src/3rdparty/s60/eiksoftkeyimage.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-#ifndef EIKSOFTKEYIMAGE_H
-#define EIKSOFTKEYIMAGE_H
-
-// FORWARD DECLARATIONS
-class CEikButtonGroupContainer;
-
-// CLASS DECLARATION
-
-/**
-* Changes cba button's label to image.
-*
-* @lib EIKCOCTL
-* @since 2.0
-*/
-class EikSoftkeyImage
- {
- public:
-
- /**
- * Set image to cba button by replacing label
- * @since 2.0
- * @param aButtonGroupContainer Button container
- * @param aImage Image to button,
- * Takes Images ownership
- * @param aLeft Boolean: left or right button.
- * If true, then change left,
- * if false, change right
- */
- IMPORT_C static void SetImage(CEikButtonGroupContainer* aButtonGroupContainer, CEikImage& aImage, TBool aLeft);
-
- /**
- * Change to cba button image back to label
- * @since 2.0
- * @param aButtonGroupContainer Button container
- * @param aLeft Boolean: left or right button.
- * If true, then change left,
- * if false, change right
- */
- IMPORT_C static void SetLabel(CEikButtonGroupContainer* aButtonGroupContainer, TBool aLeft);
-
- private:
-
- /**
- * C++ default constructor.
- */
- EikSoftkeyImage() {};
-
-
- };
-
-#endif // EIKSOFTKEYIMAGE_H
-
-// End of File
-
diff --git a/src/3rdparty/sha1/sha1.cpp b/src/3rdparty/sha1/sha1.cpp
index 6270140a79..f4c8e6abe2 100644
--- a/src/3rdparty/sha1/sha1.cpp
+++ b/src/3rdparty/sha1/sha1.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
-** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
**
** This file is part of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/3rdparty/zlib_dependency.pri b/src/3rdparty/zlib_dependency.pri
index 042eb1373f..75dd2396f2 100644
--- a/src/3rdparty/zlib_dependency.pri
+++ b/src/3rdparty/zlib_dependency.pri
@@ -1,8 +1,7 @@
# zlib dependency satisfied by bundled 3rd party zlib or system zlib
contains(QT_CONFIG, system-zlib) {
- symbian: LIBS_PRIVATE += -llibz
- else:if(unix|win32-g++*):LIBS_PRIVATE += -lz
- else: LIBS += zdll.lib
+ if(unix|win32-g++*):LIBS_PRIVATE += -lz
+ else: LIBS += zdll.lib
} else {
INCLUDEPATH += $$PWD/zlib
}
diff --git a/src/concurrent/concurrent.pro b/src/concurrent/concurrent.pro
new file mode 100644
index 0000000000..a9482af057
--- /dev/null
+++ b/src/concurrent/concurrent.pro
@@ -0,0 +1,59 @@
+TARGET = QtConcurrent
+QPRO_PWD = $$PWD
+QT = core-private
+
+CONFIG += module
+MODULE_PRI = ../modules/qt_concurrent.pri
+
+DEFINES += QT_BUILD_CONCURRENT_LIB QT_NO_USING_NAMESPACE
+win32-msvc*|win32-icc:QMAKE_LFLAGS += /BASE:0x66000000
+
+unix|win32-g++*:QMAKE_PKGCONFIG_REQUIRES = QtCore
+
+load(qt_module_config)
+
+HEADERS += $$QT_SOURCE_TREE/src/xml/qtconcurrentversion.h
+
+PRECOMPILED_HEADER = ../corelib/global/qt_pch.h
+
+SOURCES += \
+ qfuture.cpp \
+ qfutureinterface.cpp \
+ qfuturesynchronizer.cpp \
+ qfuturewatcher.cpp \
+ qtconcurrentfilter.cpp \
+ qtconcurrentmap.cpp \
+ qtconcurrentresultstore.cpp \
+ qtconcurrentthreadengine.cpp \
+ qtconcurrentiteratekernel.cpp \
+ qtconcurrentexception.cpp
+
+HEADERS += \
+ qfuture.h \
+ qfutureinterface.h \
+ qfuturesynchronizer.h \
+ qfuturewatcher.h \
+ qtconcurrentcompilertest.h \
+ qtconcurrentexception.h \
+ qtconcurrentfilter.h \
+ qtconcurrentfilterkernel.h \
+ qtconcurrentfunctionwrappers.h \
+ qtconcurrentiteratekernel.h \
+ qtconcurrentmap.h \
+ qtconcurrentmapkernel.h \
+ qtconcurrentmedian.h \
+ qtconcurrentreducekernel.h \
+ qtconcurrentresultstore.h \
+ qtconcurrentrun.h \
+ qtconcurrentrunbase.h \
+ qtconcurrentstoredfunctioncall.h \
+ qtconcurrentthreadengine.h
+
+# private headers
+HEADERS += \
+ qfutureinterface_p.h \
+ qfuturewatcher_p.h
+
+contains(QT_CONFIG, clock-gettime) {
+ linux-*|hpux-*|solaris-*:LIBS *= -lrt
+}
diff --git a/src/concurrent/qfuture.cpp b/src/concurrent/qfuture.cpp
new file mode 100644
index 0000000000..9805454cb2
--- /dev/null
+++ b/src/concurrent/qfuture.cpp
@@ -0,0 +1,697 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+/*! \class QFuture
+ \threadsafe
+ \brief The QFuture class represents the result of an asynchronous computation.
+ \since 4.4
+
+ \ingroup thread
+
+ To start a computation, use one of the APIs in the
+ \l {Concurrent Programming}{Qt Concurrent} framework.
+
+ QFuture allows threads to be synchronized against one or more results
+ which will be ready at a later point in time. The result can be of any type
+ that has a default constructor and a copy constructor. If a result is not
+ available at the time of calling the result(), resultAt(), or results()
+ functions, QFuture will wait until the result becomes available. You can
+ use the isResultReadyAt() function to determine if a result is ready or
+ not. For QFuture objects that report more than one result, the
+ resultCount() function returns the number of continuous results. This
+ means that it is always safe to iterate through the results from 0 to
+ resultCount().
+
+ QFuture provides a \l{Java-style iterators}{Java-style iterator}
+ (QFutureIterator) and an \l{STL-style iterators}{STL-style iterator}
+ (QFuture::const_iterator). Using these iterators is another way to access
+ results in the future.
+
+ QFuture also offers ways to interact with a runnning computation. For
+ instance, the computation can be canceled with the cancel() function. To
+ pause the computation, use the setPaused() function or one of the pause(),
+ resume(), or togglePaused() convenience functions. Be aware that not all
+ asynchronous computations can be canceled or paused. For example, the
+ future returned by QtConcurrent::run() cannot be canceled; but the
+ future returned by QtConcurrent::mappedReduced() can.
+
+ Progress information is provided by the progressValue(),
+ progressMinimum(), progressMaximum(), and progressText() functions. The
+ waitForFinished() function causes the calling thread to block and wait for
+ the computation to finish, ensuring that all results are available.
+
+ The state of the computation represented by a QFuture can be queried using
+ the isCanceled(), isStarted(), isFinished(), isRunning(), or isPaused()
+ functions.
+
+ QFuture is a lightweight reference counted class that can be passed by
+ value.
+
+ QFuture<void> is specialized to not contain any of the result fetching
+ functions. Any QFuture<T> can be assigned or copied into a QFuture<void>
+ as well. This is useful if only status or progress information is needed
+ - not the actual result data.
+
+ To interact with running tasks using signals and slots, use QFutureWatcher.
+
+ \sa QFutureWatcher, {Concurrent Programming}{Qt Concurrent}
+*/
+
+/*! \fn QFuture::QFuture()
+
+ Constructs an empty future.
+*/
+
+/*! \fn QFuture::QFuture(const QFuture &other)
+
+ Constructs a copy of \a other.
+
+ \sa operator=()
+*/
+
+/*! \fn QFuture::QFuture(QFutureInterface<T> *resultHolder)
+ \internal
+*/
+
+/*! \fn QFuture::~QFuture()
+
+ Destroys the future.
+
+ Note that this neither waits nor cancels the asynchronous computation. Use
+ waitForFinished() or QFutureSynchronizer when you need to ensure that the
+ computation is completed before the future is destroyed.
+*/
+
+/*! \fn QFuture &QFuture::operator=(const QFuture &other)
+
+ Assigns \a other to this future and returns a reference to this future.
+*/
+
+/*! \fn bool QFuture::operator==(const QFuture &other) const
+
+ Returns true if \a other is a copy of this future; otherwise returns false.
+*/
+
+/*! \fn bool QFuture::operator!=(const QFuture &other) const
+
+ Returns true if \a other is \e not a copy of this future; otherwise returns
+ false.
+*/
+
+/*! \fn void QFuture::cancel()
+
+ Cancels the asynchronous computation represented by this future. Note that
+ the cancelation is asynchronous. Use waitForFinished() after calling
+ cancel() when you need synchronous cancelation.
+
+ Results currently available may still be accessed on a canceled future,
+ but new results will \e not become available after calling this function.
+ Any QFutureWatcher object that is watching this future will not deliver
+ progress and result ready signals on a canceled future.
+
+ Be aware that not all asynchronous computations can be canceled. For
+ example, the future returned by QtConcurrent::run() cannot be canceled;
+ but the future returned by QtConcurrent::mappedReduced() can.
+*/
+
+/*! \fn bool QFuture::isCanceled() const
+
+ Returns true if the asynchronous computation has been canceled with the
+ cancel() function; otherwise returns false.
+
+ Be aware that the computation may still be running even though this
+ function returns true. See cancel() for more details.
+*/
+
+/*! \fn void QFuture::setPaused(bool paused)
+
+ If \a paused is true, this function pauses the asynchronous computation
+ represented by the future. If the computation is already paused, this
+ function does nothing. Any QFutureWatcher object that is watching this
+ future will stop delivering progress and result ready signals while the
+ future is paused. Signal delivery will continue once the future is
+ resumed.
+
+ If \a paused is false, this function resumes the asynchronous computation.
+ If the computation was not previously paused, this function does nothing.
+
+ Be aware that not all computations can be paused. For example, the future
+ returned by QtConcurrent::run() cannot be paused; but the future returned
+ by QtConcurrent::mappedReduced() can.
+
+ \sa pause(), resume(), togglePaused()
+*/
+
+/*! \fn bool QFuture::isPaused() const
+
+ Returns true if the asynchronous computation has been paused with the
+ pause() function; otherwise returns false.
+
+ Be aware that the computation may still be running even though this
+ function returns true. See setPaused() for more details.
+
+ \sa setPaused(), togglePaused()
+*/
+
+/*! \fn void QFuture::pause()
+
+ Pauses the asynchronous computation represented by this future. This is a
+ convenience method that simply calls setPaused(true).
+
+ \sa resume()
+*/
+
+/*! \fn void QFuture::resume()
+
+ Resumes the asynchronous computation represented by this future. This is a
+ convenience method that simply calls setPaused(false).
+
+ \sa pause()
+*/
+
+/*! \fn void QFuture::togglePaused()
+
+ Toggles the paused state of the asynchronous computation. In other words,
+ if the computation is currently paused, calling this function resumes it;
+ if the computation is running, it is paused. This is a convenience method
+ for calling setPaused(!isPaused()).
+
+ \sa setPaused(), pause(), resume()
+*/
+
+/*! \fn bool QFuture::isStarted() const
+
+ Returns true if the asynchronous computation represented by this future
+ has been started; otherwise returns false.
+*/
+
+/*! \fn bool QFuture::isFinished() const
+
+ Returns true if the asynchronous computation represented by this future
+ has finished; otherwise returns false.
+*/
+
+/*! \fn bool QFuture::isRunning() const
+
+ Returns true if the asynchronous computation represented by this future is
+ currently running; otherwise returns false.
+*/
+
+/*! \fn int QFuture::resultCount() const
+
+ Returns the number of continuous results available in this future. The real
+ number of results stored might be different from this value, due to gaps
+ in the result set. It is always safe to iterate through the results from 0
+ to resultCount().
+ \sa result(), resultAt(), results()
+*/
+
+/*! \fn int QFuture::progressValue() const
+
+ Returns the current progress value, which is between the progressMinimum()
+ and progressMaximum().
+
+ \sa progressMinimum(), progressMaximum()
+*/
+
+/*! \fn int QFuture::progressMinimum() const
+
+ Returns the minimum progressValue().
+
+ \sa progressValue(), progressMaximum()
+*/
+
+/*! \fn int QFuture::progressMaximum() const
+
+ Returns the maximum progressValue().
+
+ \sa progressValue(), progressMinimum()
+*/
+
+/*! \fn QString QFuture::progressText() const
+
+ Returns the (optional) textual representation of the progress as reported
+ by the asynchronous computation.
+
+ Be aware that not all computations provide a textual representation of the
+ progress, and as such, this function may return an empty string.
+*/
+
+/*! \fn void QFuture::waitForFinished()
+
+ Waits for the asynchronous computation to finish (including cancel()ed
+ computations).
+*/
+
+/*! \fn T QFuture::result() const
+
+ Returns the first result in the future. If the result is not immediately
+ available, this function will block and wait for the result to become
+ available. This is a convenience method for calling resultAt(0).
+
+ \sa resultAt(), results()
+*/
+
+/*! \fn T QFuture::resultAt(int index) const
+
+ Returns the result at \a index in the future. If the result is not
+ immediately available, this function will block and wait for the result to
+ become available.
+
+ \sa result(), results(), resultCount()
+*/
+
+/*! \fn bool QFuture::isResultReadyAt(int index) const
+
+ Returns true if the result at \a index is immediately available; otherwise
+ returns false.
+
+ \sa resultAt(), resultCount()
+*/
+
+/*! \fn QFuture::operator T() const
+
+ Returns the first result in the future. If the result is not immediately
+ available, this function will block and wait for the result to become
+ available. This is a convenience method for calling result() or
+ resultAt(0).
+
+ \sa result(), resultAt(), results()
+*/
+
+/*! \fn QList<T> QFuture::results() const
+
+ Returns all results from the future. If the results are not immediately
+ available, this function will block and wait for them to become available.
+
+ \sa result(), resultAt(), resultCount()
+*/
+
+/*! \fn QFuture::const_iterator QFuture::begin() const
+
+ Returns a const \l{STL-style iterator} pointing to the first result in the
+ future.
+
+ \sa constBegin(), end()
+*/
+
+/*! \fn QFuture::const_iterator QFuture::end() const
+
+ Returns a const \l{STL-style iterator} pointing to the imaginary result
+ after the last result in the future.
+
+ \sa begin(), constEnd()
+*/
+
+/*! \fn QFuture::const_iterator QFuture::constBegin() const
+
+ Returns a const \l{STL-style iterator} pointing to the first result in the
+ future.
+
+ \sa begin(), constEnd()
+*/
+
+/*! \fn QFuture::const_iterator QFuture::constEnd() const
+
+ Returns a const \l{STL-style iterator} pointing to the imaginary result
+ after the last result in the future.
+
+ \sa constBegin(), end()
+*/
+
+/*! \class QFuture::const_iterator
+ \reentrant
+ \since 4.4
+
+ \brief The QFuture::const_iterator class provides an STL-style const
+ iterator for QFuture.
+
+ QFuture provides both \l{STL-style iterators} and \l{Java-style iterators}.
+ The STL-style iterators are more low-level and more cumbersome to use; on
+ the other hand, they are slightly faster and, for developers who already
+ know STL, have the advantage of familiarity.
+
+ The default QFuture::const_iterator constructor creates an uninitialized
+ iterator. You must initialize it using a QFuture function like
+ QFuture::constBegin() or QFuture::constEnd() before you start iterating.
+ Here's a typical loop that prints all the results available in a future:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qfuture.cpp 0
+
+ \sa QFutureIterator, QFuture
+*/
+
+/*! \typedef QFuture::const_iterator::iterator_category
+
+ Typedef for std::bidirectional_iterator_tag. Provided for STL compatibility.
+*/
+
+/*! \typedef QFuture::const_iterator::difference_type
+
+ Typedef for ptrdiff_t. Provided for STL compatibility.
+*/
+
+/*! \typedef QFuture::const_iterator::value_type
+
+ Typedef for T. Provided for STL compatibility.
+*/
+
+/*! \typedef QFuture::const_iterator::pointer
+
+ Typedef for const T *. Provided for STL compatibility.
+*/
+
+/*! \typedef QFuture::const_iterator::reference
+
+ Typedef for const T &. Provided for STL compatibility.
+*/
+
+/*! \fn QFuture::const_iterator::const_iterator()
+
+ Constructs an uninitialized iterator.
+
+ Functions like operator*() and operator++() should not be called on an
+ uninitialized iterartor. Use operator=() to assign a value to it before
+ using it.
+
+ \sa QFuture::constBegin() QFuture::constEnd()
+*/
+
+/*! \fn QFuture::const_iterator::const_iterator(QFuture const * const future, int index)
+ \internal
+*/
+
+/*! \fn QFuture::const_iterator::const_iterator(const const_iterator &other)
+
+ Constructs a copy of \a other.
+*/
+
+/*! \fn QFuture::const_iterator &QFuture::const_iterator::operator=(const const_iterator &other)
+
+ Assigns \a other to this iterator.
+*/
+
+/*! \fn const T &QFuture::const_iterator::operator*() const
+
+ Returns the current result.
+*/
+
+/*! \fn const T *QFuture::const_iterator::operator->() const
+
+ Returns a pointer to the current result.
+*/
+
+/*! \fn bool QFuture::const_iterator::operator!=(const const_iterator &other) const
+
+ Returns true if \a other points to a different result than this iterator;
+ otherwise returns false.
+
+ \sa operator==()
+*/
+
+/*! \fn bool QFuture::const_iterator::operator==(const const_iterator &other) const
+
+ Returns true if \a other points to the same result as this iterator;
+ otherwise returns false.
+
+ \sa operator!=()
+*/
+
+/*! \fn QFuture::const_iterator &QFuture::const_iterator::operator++()
+
+ The prefix ++ operator (\c{++it}) advances the iterator to the next result
+ in the future and returns an iterator to the new current result.
+
+ Calling this function on QFuture::constEnd() leads to undefined results.
+
+ \sa operator--()
+*/
+
+/*! \fn QFuture::const_iterator QFuture::const_iterator::operator++(int)
+
+ \overload
+
+ The postfix ++ operator (\c{it++}) advances the iterator to the next
+ result in the future and returns an iterator to the previously current
+ result.
+*/
+
+/*! \fn QFuture::const_iterator &QFuture::const_iterator::operator--()
+
+ The prefix -- operator (\c{--it}) makes the preceding result current and
+ returns an iterator to the new current result.
+
+ Calling this function on QFuture::constBegin() leads to undefined results.
+
+ \sa operator++()
+*/
+
+/*! \fn QFuture::const_iterator QFuture::const_iterator::operator--(int)
+
+ \overload
+
+ The postfix -- operator (\c{it--}) makes the preceding result current and
+ returns an iterator to the previously current result.
+*/
+
+/*! \fn QFuture::const_iterator &QFuture::const_iterator::operator+=(int j)
+
+ Advances the iterator by \a j results. (If \a j is negative, the iterator
+ goes backward.)
+
+ \sa operator-=(), operator+()
+*/
+
+/*! \fn QFuture::const_iterator &QFuture::const_iterator::operator-=(int j)
+
+ Makes the iterator go back by \a j results. (If \a j is negative, the
+ iterator goes forward.)
+
+ \sa operator+=(), operator-()
+*/
+
+/*! \fn QFuture::const_iterator QFuture::const_iterator::operator+(int j) const
+
+ Returns an iterator to the results at \a j positions forward from this
+ iterator. (If \a j is negative, the iterator goes backward.)
+
+ \sa operator-(), operator+=()
+*/
+
+/*! \fn QFuture::const_iterator QFuture::const_iterator::operator-(int j) const
+
+ Returns an iterator to the result at \a j positions backward from this
+ iterator. (If \a j is negative, the iterator goes forward.)
+
+ \sa operator+(), operator-=()
+*/
+
+/*! \typedef QFuture::ConstIterator
+
+ Qt-style synonym for QFuture::const_iterator.
+*/
+
+/*!
+ \class QFutureIterator
+ \reentrant
+ \since 4.4
+ \inmodule QtCore
+
+ \brief The QFutureIterator class provides a Java-style const iterator for
+ QFuture.
+
+ QFuture has both \l{Java-style iterators} and \l{STL-style iterators}. The
+ Java-style iterators are more high-level and easier to use than the
+ STL-style iterators; on the other hand, they are slightly less efficient.
+
+ An alternative to using iterators is to use index positions. Some QFuture
+ member functions take an index as their first parameter, making it
+ possible to access results without using iterators.
+
+ QFutureIterator\<T\> allows you to iterate over a QFuture\<T\>. Note that
+ there is no mutable iterator for QFuture (unlike the other Java-style
+ iterators).
+
+ The QFutureIterator constructor takes a QFuture as its argument. After
+ construction, the iterator is located at the very beginning of the result
+ list (i.e. before the first result). Here's how to iterate over all the
+ results sequentially:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qfuture.cpp 1
+
+ The next() function returns the next result (waiting for it to become
+ available, if necessary) from the future and advances the iterator. Unlike
+ STL-style iterators, Java-style iterators point \e between results rather
+ than directly \e at results. The first call to next() advances the iterator
+ to the position between the first and second result, and returns the first
+ result; the second call to next() advances the iterator to the position
+ between the second and third result, and returns the second result; and
+ so on.
+
+ \img javaiterators1.png
+
+ Here's how to iterate over the elements in reverse order:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qfuture.cpp 2
+
+ If you want to find all occurrences of a particular value, use findNext()
+ or findPrevious() in a loop.
+
+ Multiple iterators can be used on the same future. If the future is
+ modified while a QFutureIterator is active, the QFutureIterator will
+ continue iterating over the original future, ignoring the modified copy.
+
+ \sa QFuture::const_iterator, QFuture
+*/
+
+/*!
+ \fn QFutureIterator::QFutureIterator(const QFuture<T> &future)
+
+ Constructs an iterator for traversing \a future. The iterator is set to be
+ at the front of the result list (before the first result).
+
+ \sa operator=()
+*/
+
+/*! \fn QFutureIterator &QFutureIterator::operator=(const QFuture<T> &future)
+
+ Makes the iterator operate on \a future. The iterator is set to be at the
+ front of the result list (before the first result).
+
+ \sa toFront(), toBack()
+*/
+
+/*! \fn void QFutureIterator::toFront()
+
+ Moves the iterator to the front of the result list (before the first
+ result).
+
+ \sa toBack(), next()
+*/
+
+/*! \fn void QFutureIterator::toBack()
+
+ Moves the iterator to the back of the result list (after the last result).
+
+ \sa toFront(), previous()
+*/
+
+/*! \fn bool QFutureIterator::hasNext() const
+
+ Returns true if there is at least one result ahead of the iterator, e.g.,
+ the iterator is \e not at the back of the result list; otherwise returns
+ false.
+
+ \sa hasPrevious(), next()
+*/
+
+/*! \fn const T &QFutureIterator::next()
+
+ Returns the next result and advances the iterator by one position.
+
+ Calling this function on an iterator located at the back of the result
+ list leads to undefined results.
+
+ \sa hasNext(), peekNext(), previous()
+*/
+
+/*! \fn const T &QFutureIterator::peekNext() const
+
+ Returns the next result without moving the iterator.
+
+ Calling this function on an iterator located at the back of the result
+ list leads to undefined results.
+
+ \sa hasNext(), next(), peekPrevious()
+*/
+
+/*! \fn bool QFutureIterator::hasPrevious() const
+
+ Returns true if there is at least one result ahead of the iterator, e.g.,
+ the iterator is \e not at the front of the result list; otherwise returns
+ false.
+
+ \sa hasNext(), previous()
+*/
+
+/*! \fn const T &QFutureIterator::previous()
+
+ Returns the previous result and moves the iterator back by one position.
+
+ Calling this function on an iterator located at the front of the result
+ list leads to undefined results.
+
+ \sa hasPrevious(), peekPrevious(), next()
+*/
+
+/*! \fn const T &QFutureIterator::peekPrevious() const
+
+ Returns the previous result without moving the iterator.
+
+ Calling this function on an iterator located at the front of the result
+ list leads to undefined results.
+
+ \sa hasPrevious(), previous(), peekNext()
+*/
+
+/*! \fn bool QFutureIterator::findNext(const T &value)
+
+ Searches for \a value starting from the current iterator position forward.
+ Returns true if \a value is found; otherwise returns false.
+
+ After the call, if \a value was found, the iterator is positioned just
+ after the matching result; otherwise, the iterator is positioned at the
+ back of the result list.
+
+ \sa findPrevious()
+*/
+
+/*! \fn bool QFutureIterator::findPrevious(const T &value)
+
+ Searches for \a value starting from the current iterator position
+ backward. Returns true if \a value is found; otherwise returns false.
+
+ After the call, if \a value was found, the iterator is positioned just
+ before the matching result; otherwise, the iterator is positioned at the
+ front of the result list.
+
+ \sa findNext()
+*/
diff --git a/src/concurrent/qfuture.h b/src/concurrent/qfuture.h
new file mode 100644
index 0000000000..6e99a6068e
--- /dev/null
+++ b/src/concurrent/qfuture.h
@@ -0,0 +1,277 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QFUTURE_H
+#define QFUTURE_H
+
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_QFUTURE
+
+#include <QtConcurrent/qfutureinterface.h>
+#include <QtCore/qstring.h>
+#include <QtConcurrent/qtconcurrentcompilertest.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+template <typename T>
+class QFutureWatcher;
+template <>
+class QFutureWatcher<void>;
+
+template <typename T>
+class QFuture
+{
+public:
+ QFuture()
+ : d(QFutureInterface<T>::canceledResult())
+ { }
+ explicit QFuture(QFutureInterface<T> *p) // internal
+ : d(*p)
+ { }
+ QFuture(const QFuture &other)
+ : d(other.d)
+ { }
+ ~QFuture()
+ { }
+
+ inline QFuture &operator=(const QFuture &other);
+ bool operator==(const QFuture &other) const { return (d == other.d); }
+ bool operator!=(const QFuture &other) const { return (d != other.d); }
+
+ void cancel() { d.cancel(); }
+ bool isCanceled() const { return d.isCanceled(); }
+
+ void setPaused(bool paused) { d.setPaused(paused); }
+ bool isPaused() const { return d.isPaused(); }
+ void pause() { setPaused(true); }
+ void resume() { setPaused(false); }
+ void togglePaused() { d.togglePaused(); }
+
+ bool isStarted() const { return d.isStarted(); }
+ bool isFinished() const { return d.isFinished(); }
+ bool isRunning() const { return d.isRunning(); }
+
+ int resultCount() const { return d.resultCount(); }
+ int progressValue() const { return d.progressValue(); }
+ int progressMinimum() const { return d.progressMinimum(); }
+ int progressMaximum() const { return d.progressMaximum(); }
+ QString progressText() const { return d.progressText(); }
+ void waitForFinished() { d.waitForFinished(); }
+
+ inline T result() const;
+ inline T resultAt(int index) const;
+ bool isResultReadyAt(int resultIndex) const { return d.isResultReadyAt(resultIndex); }
+
+ operator T() const { return result(); }
+ QList<T> results() const { return d.results(); }
+
+ class const_iterator
+ {
+ public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef qptrdiff difference_type;
+ typedef T value_type;
+ typedef const T *pointer;
+ typedef const T &reference;
+
+ inline const_iterator() {}
+ inline const_iterator(QFuture const * const _future, int _index) : future(_future), index(_index) {}
+ inline const_iterator(const const_iterator &o) : future(o.future), index(o.index) {}
+ inline const_iterator &operator=(const const_iterator &o)
+ { future = o.future; index = o.index; return *this; }
+ inline const T &operator*() const { return future->d.resultReference(index); }
+ inline const T *operator->() const { return future->d.resultPointer(index); }
+
+ inline bool operator!=(const const_iterator &other) const
+ {
+ if (index == -1 && other.index == -1) // comparing end != end?
+ return false;
+ if (other.index == -1)
+ return (future->isRunning() || (index < future->resultCount()));
+ return (index != other.index);
+ }
+
+ inline bool operator==(const const_iterator &o) const { return !operator!=(o); }
+ inline const_iterator &operator++() { ++index; return *this; }
+ inline const_iterator operator++(int) { const_iterator r = *this; ++index; return r; }
+ inline const_iterator &operator--() { --index; return *this; }
+ inline const_iterator operator--(int) { const_iterator r = *this; --index; return r; }
+ inline const_iterator operator+(int j) const { return const_iterator(future, index + j); }
+ inline const_iterator operator-(int j) const { return const_iterator(future, index - j); }
+ inline const_iterator &operator+=(int j) { index += j; return *this; }
+ inline const_iterator &operator-=(int j) { index -= j; return *this; }
+ private:
+ QFuture const * future;
+ int index;
+ };
+ friend class const_iterator;
+ typedef const_iterator ConstIterator;
+
+ const_iterator begin() const { return const_iterator(this, 0); }
+ const_iterator constBegin() const { return const_iterator(this, 0); }
+ const_iterator end() const { return const_iterator(this, -1); }
+ const_iterator constEnd() const { return const_iterator(this, -1); }
+
+private:
+ friend class QFutureWatcher<T>;
+
+public: // Warning: the d pointer is not documented and is considered private.
+ mutable QFutureInterface<T> d;
+};
+
+template <typename T>
+inline QFuture<T> &QFuture<T>::operator=(const QFuture<T> &other)
+{
+ d = other.d;
+ return *this;
+}
+
+template <typename T>
+inline T QFuture<T>::result() const
+{
+ d.waitForResult(0);
+ return d.resultReference(0);
+}
+
+template <typename T>
+inline T QFuture<T>::resultAt(int index) const
+{
+ d.waitForResult(index);
+ return d.resultReference(index);
+}
+
+template <typename T>
+inline QFuture<T> QFutureInterface<T>::future()
+{
+ return QFuture<T>(this);
+}
+
+Q_DECLARE_SEQUENTIAL_ITERATOR(Future)
+
+template <>
+class QFuture<void>
+{
+public:
+ QFuture()
+ : d(QFutureInterface<void>::canceledResult())
+ { }
+ explicit QFuture(QFutureInterfaceBase *p) // internal
+ : d(*p)
+ { }
+ QFuture(const QFuture &other)
+ : d(other.d)
+ { }
+ ~QFuture()
+ { }
+
+ QFuture &operator=(const QFuture &other);
+ bool operator==(const QFuture &other) const { return (d == other.d); }
+ bool operator!=(const QFuture &other) const { return (d != other.d); }
+
+#if !defined(Q_CC_XLC)
+ template <typename T>
+ QFuture(const QFuture<T> &other)
+ : d(other.d)
+ { }
+
+ template <typename T>
+ QFuture<void> &operator=(const QFuture<T> &other)
+ {
+ d = other.d;
+ return *this;
+ }
+#endif
+
+ void cancel() { d.cancel(); }
+ bool isCanceled() const { return d.isCanceled(); }
+
+ void setPaused(bool paused) { d.setPaused(paused); }
+ bool isPaused() const { return d.isPaused(); }
+ void pause() { setPaused(true); }
+ void resume() { setPaused(false); }
+ void togglePaused() { d.togglePaused(); }
+
+ bool isStarted() const { return d.isStarted(); }
+ bool isFinished() const { return d.isFinished(); }
+ bool isRunning() const { return d.isRunning(); }
+
+ int resultCount() const { return d.resultCount(); }
+ int progressValue() const { return d.progressValue(); }
+ int progressMinimum() const { return d.progressMinimum(); }
+ int progressMaximum() const { return d.progressMaximum(); }
+ QString progressText() const { return d.progressText(); }
+ void waitForFinished() { d.waitForFinished(); }
+
+private:
+ friend class QFutureWatcher<void>;
+
+#ifdef QFUTURE_TEST
+public:
+#endif
+ mutable QFutureInterfaceBase d;
+};
+
+inline QFuture<void> &QFuture<void>::operator=(const QFuture<void> &other)
+{
+ d = other.d;
+ return *this;
+}
+
+inline QFuture<void> QFutureInterface<void>::future()
+{
+ return QFuture<void>(this);
+}
+
+template <typename T>
+QFuture<void> qToVoidFuture(const QFuture<T> &future)
+{
+ return QFuture<void>(future.d);
+}
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif // QFUTURE_H
diff --git a/src/concurrent/qfutureinterface.cpp b/src/concurrent/qfutureinterface.cpp
new file mode 100644
index 0000000000..9a273a1076
--- /dev/null
+++ b/src/concurrent/qfutureinterface.cpp
@@ -0,0 +1,565 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+// qfutureinterface.h included from qfuture.h
+#include "qfuture.h"
+
+#ifndef QT_NO_QFUTURE
+
+#include <QtCore/qatomic.h>
+#include <QtCore/qthread.h>
+#include <QtCore/qthreadpool.h>
+#include <private/qthreadpool_p.h>
+
+#include "qfutureinterface_p.h"
+
+QT_BEGIN_NAMESPACE
+
+enum {
+ MaxProgressEmitsPerSecond = 25
+};
+
+QFutureInterfaceBase::QFutureInterfaceBase(State initialState)
+ : d(new QFutureInterfaceBasePrivate(initialState))
+{ }
+
+QFutureInterfaceBase::QFutureInterfaceBase(const QFutureInterfaceBase &other)
+ : d(other.d)
+{
+ d->refCount.ref();
+}
+
+QFutureInterfaceBase::~QFutureInterfaceBase()
+{
+ if (!d->refCount.deref())
+ delete d;
+}
+
+void QFutureInterfaceBase::cancel()
+{
+ QMutexLocker locker(&d->m_mutex);
+ if (d->state & Canceled)
+ return;
+
+ d->state = State((d->state & ~Paused) | Canceled);
+ d->waitCondition.wakeAll();
+ d->pausedWaitCondition.wakeAll();
+ d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Canceled));
+}
+
+void QFutureInterfaceBase::setPaused(bool paused)
+{
+ QMutexLocker locker(&d->m_mutex);
+ if (paused) {
+ d->state = State(d->state | Paused);
+ d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Paused));
+ } else {
+ d->state = State(d->state & ~Paused);
+ d->pausedWaitCondition.wakeAll();
+ d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Resumed));
+ }
+}
+
+void QFutureInterfaceBase::togglePaused()
+{
+ QMutexLocker locker(&d->m_mutex);
+ if (d->state & Paused) {
+ d->state = State(d->state & ~Paused);
+ d->pausedWaitCondition.wakeAll();
+ d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Resumed));
+ } else {
+ d->state = State(d->state | Paused);
+ d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Paused));
+ }
+}
+
+void QFutureInterfaceBase::setThrottled(bool enable)
+{
+ // bail out if we are not changing the state
+ if ((enable && (d->state & Throttled)) || (!enable && !(d->state & Throttled)))
+ return;
+
+ // lock and change the state
+ QMutexLocker lock(&d->m_mutex);
+ if (enable) {
+ d->state = State(d->state | Throttled);
+ } else {
+ d->state = State(d->state & ~Throttled);
+ if (!(d->state & Paused))
+ d->pausedWaitCondition.wakeAll();
+ }
+}
+
+
+bool QFutureInterfaceBase::isRunning() const
+{
+ return queryState(Running);
+}
+
+bool QFutureInterfaceBase::isStarted() const
+{
+ return queryState(Started);
+}
+
+bool QFutureInterfaceBase::isCanceled() const
+{
+ return queryState(Canceled);
+}
+
+bool QFutureInterfaceBase::isFinished() const
+{
+ return queryState(Finished);
+}
+
+bool QFutureInterfaceBase::isPaused() const
+{
+ return queryState(Paused);
+}
+
+bool QFutureInterfaceBase::isThrottled() const
+{
+ return queryState(Throttled);
+}
+
+bool QFutureInterfaceBase::isResultReadyAt(int index) const
+{
+ QMutexLocker lock(&d->m_mutex);
+ return d->internal_isResultReadyAt(index);
+}
+
+bool QFutureInterfaceBase::waitForNextResult()
+{
+ QMutexLocker lock(&d->m_mutex);
+ return d->internal_waitForNextResult();
+}
+
+void QFutureInterfaceBase::waitForResume()
+{
+ // return early if possible to avoid taking the mutex lock.
+ if ((d->state & Paused) == false || (d->state & Canceled))
+ return;
+
+ QMutexLocker lock(&d->m_mutex);
+ if ((d->state & Paused) == false || (d->state & Canceled))
+ return;
+
+ // decrease active thread count since this thread will wait.
+ QThreadPool::globalInstance()->releaseThread();
+
+ d->pausedWaitCondition.wait(&d->m_mutex);
+
+ QThreadPool::globalInstance()->reserveThread();
+}
+
+int QFutureInterfaceBase::progressValue() const
+{
+ return d->m_progressValue;
+}
+
+int QFutureInterfaceBase::progressMinimum() const
+{
+ return d->m_progressMinimum;
+}
+
+int QFutureInterfaceBase::progressMaximum() const
+{
+ return d->m_progressMaximum;
+}
+
+int QFutureInterfaceBase::resultCount() const
+{
+ QMutexLocker lock(&d->m_mutex);
+ return d->internal_resultCount();
+}
+
+QString QFutureInterfaceBase::progressText() const
+{
+ QMutexLocker locker(&d->m_mutex);
+ return d->m_progressText;
+}
+
+bool QFutureInterfaceBase::isProgressUpdateNeeded() const
+{
+ QMutexLocker locker(&d->m_mutex);
+ return !d->progressTime.isValid() || (d->progressTime.elapsed() > (1000 / MaxProgressEmitsPerSecond));
+}
+
+void QFutureInterfaceBase::reportStarted()
+{
+ QMutexLocker locker(&d->m_mutex);
+ if ((d->state & Started) || (d->state & Canceled) || (d->state & Finished))
+ return;
+
+ d->setState(State(Started | Running));
+ d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Started));
+}
+
+void QFutureInterfaceBase::reportCanceled()
+{
+ cancel();
+}
+
+#ifndef QT_NO_EXCEPTIONS
+void QFutureInterfaceBase::reportException(const QtConcurrent::Exception &exception)
+{
+ QMutexLocker locker(&d->m_mutex);
+ if ((d->state & Canceled) || (d->state & Finished))
+ return;
+
+ d->m_exceptionStore.setException(exception);
+ d->state = State(d->state | Canceled);
+ d->waitCondition.wakeAll();
+ d->pausedWaitCondition.wakeAll();
+ d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Canceled));
+}
+#endif
+
+void QFutureInterfaceBase::reportFinished()
+{
+ QMutexLocker locker(&d->m_mutex);
+ if (!(d->state & Finished)) {
+ d->state = State((d->state & ~Running) | Finished);
+ d->waitCondition.wakeAll();
+ d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Finished));
+ }
+}
+
+void QFutureInterfaceBase::setExpectedResultCount(int resultCount)
+{
+ if (d->manualProgress == false)
+ setProgressRange(0, resultCount);
+ d->m_expectedResultCount = resultCount;
+}
+
+int QFutureInterfaceBase::expectedResultCount()
+{
+ return d->m_expectedResultCount;
+}
+
+bool QFutureInterfaceBase::queryState(State state) const
+{
+ return (d->state & state);
+}
+
+void QFutureInterfaceBase::waitForResult(int resultIndex)
+{
+ d->m_exceptionStore.throwPossibleException();
+
+ if (!(d->state & Running))
+ return;
+
+ // To avoid deadlocks and reduce the number of threads used, try to
+ // run the runnable in the current thread.
+ QThreadPool::globalInstance()->d_func()->stealRunnable(d->runnable);
+
+ QMutexLocker lock(&d->m_mutex);
+
+ if (!(d->state & Running))
+ return;
+
+ const int waitIndex = (resultIndex == -1) ? INT_MAX : resultIndex;
+ while ((d->state & Running) && d->internal_isResultReadyAt(waitIndex) == false)
+ d->waitCondition.wait(&d->m_mutex);
+
+ d->m_exceptionStore.throwPossibleException();
+}
+
+void QFutureInterfaceBase::waitForFinished()
+{
+ if (d->state & Running) {
+ QThreadPool::globalInstance()->d_func()->stealRunnable(d->runnable);
+
+ QMutexLocker lock(&d->m_mutex);
+
+ while (d->state & Running)
+ d->waitCondition.wait(&d->m_mutex);
+ }
+
+ d->m_exceptionStore.throwPossibleException();
+}
+
+void QFutureInterfaceBase::reportResultsReady(int beginIndex, int endIndex)
+{
+ if ((d->state & Canceled) || (d->state & Finished) || beginIndex == endIndex)
+ return;
+
+ d->waitCondition.wakeAll();
+
+ if (d->manualProgress == false) {
+ if (d->internal_updateProgress(d->m_progressValue + endIndex - beginIndex) == false) {
+ d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::ResultsReady,
+ beginIndex,
+ endIndex));
+ return;
+ }
+
+ d->sendCallOuts(QFutureCallOutEvent(QFutureCallOutEvent::Progress,
+ d->m_progressValue,
+ d->m_progressText),
+ QFutureCallOutEvent(QFutureCallOutEvent::ResultsReady,
+ beginIndex,
+ endIndex));
+ return;
+ }
+ d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::ResultsReady, beginIndex, endIndex));
+}
+
+void QFutureInterfaceBase::setRunnable(QRunnable *runnable)
+{
+ d->runnable = runnable;
+}
+
+void QFutureInterfaceBase::setFilterMode(bool enable)
+{
+ QMutexLocker locker(&d->m_mutex);
+ resultStoreBase().setFilterMode(enable);
+}
+
+void QFutureInterfaceBase::setProgressRange(int minimum, int maximum)
+{
+ QMutexLocker locker(&d->m_mutex);
+ d->m_progressMinimum = minimum;
+ d->m_progressMaximum = maximum;
+ d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::ProgressRange, minimum, maximum));
+}
+
+void QFutureInterfaceBase::setProgressValue(int progressValue)
+{
+ setProgressValueAndText(progressValue, QString());
+}
+
+void QFutureInterfaceBase::setProgressValueAndText(int progressValue,
+ const QString &progressText)
+{
+ QMutexLocker locker(&d->m_mutex);
+ if (d->manualProgress == false)
+ d->manualProgress = true;
+ if (d->m_progressValue >= progressValue)
+ return;
+
+ if ((d->state & Canceled) || (d->state & Finished))
+ return;
+
+ if (d->internal_updateProgress(progressValue, progressText)) {
+ d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Progress,
+ d->m_progressValue,
+ d->m_progressText));
+ }
+}
+
+QMutex *QFutureInterfaceBase::mutex() const
+{
+ return &d->m_mutex;
+}
+
+QtConcurrent::internal::ExceptionStore &QFutureInterfaceBase::exceptionStore()
+{
+ return d->m_exceptionStore;
+}
+
+QtConcurrent::ResultStoreBase &QFutureInterfaceBase::resultStoreBase()
+{
+ return d->m_results;
+}
+
+const QtConcurrent::ResultStoreBase &QFutureInterfaceBase::resultStoreBase() const
+{
+ return d->m_results;
+}
+
+QFutureInterfaceBase &QFutureInterfaceBase::operator=(const QFutureInterfaceBase &other)
+{
+ other.d->refCount.ref();
+ if (!d->refCount.deref())
+ delete d;
+ d = other.d;
+ return *this;
+}
+
+bool QFutureInterfaceBase::referenceCountIsOne() const
+{
+ return d->refCount.load() == 1;
+}
+
+QFutureInterfaceBasePrivate::QFutureInterfaceBasePrivate(QFutureInterfaceBase::State initialState)
+ : refCount(1), m_progressValue(0), m_progressMinimum(0), m_progressMaximum(0),
+ state(initialState), pendingResults(0),
+ manualProgress(false), m_expectedResultCount(0), runnable(0)
+{
+ progressTime.invalidate();
+}
+
+int QFutureInterfaceBasePrivate::internal_resultCount() const
+{
+ return m_results.count(); // ### subtract canceled results.
+}
+
+bool QFutureInterfaceBasePrivate::internal_isResultReadyAt(int index) const
+{
+ return (m_results.contains(index));
+}
+
+bool QFutureInterfaceBasePrivate::internal_waitForNextResult()
+{
+ if (m_results.hasNextResult())
+ return true;
+
+ while ((state & QFutureInterfaceBase::Running) && m_results.hasNextResult() == false)
+ waitCondition.wait(&m_mutex);
+
+ return (!(state & QFutureInterfaceBase::Canceled) && m_results.hasNextResult());
+}
+
+bool QFutureInterfaceBasePrivate::internal_updateProgress(int progress,
+ const QString &progressText)
+{
+ if (m_progressValue >= progress)
+ return false;
+
+ m_progressValue = progress;
+ m_progressText = progressText;
+
+ if (progressTime.isValid() && m_progressValue != m_progressMaximum) // make sure the first and last steps are emitted.
+ if (progressTime.elapsed() < (1000 / MaxProgressEmitsPerSecond))
+ return false;
+
+ progressTime.start();
+ return true;
+}
+
+void QFutureInterfaceBasePrivate::internal_setThrottled(bool enable)
+{
+ // bail out if we are not changing the state
+ if ((enable && (state & QFutureInterfaceBase::Throttled))
+ || (!enable && !(state & QFutureInterfaceBase::Throttled)))
+ return;
+
+ // change the state
+ if (enable) {
+ state = QFutureInterfaceBase::State(state | QFutureInterfaceBase::Throttled);
+ } else {
+ state = QFutureInterfaceBase::State(state & ~QFutureInterfaceBase::Throttled);
+ if (!(state & QFutureInterfaceBase::Paused))
+ pausedWaitCondition.wakeAll();
+ }
+}
+
+void QFutureInterfaceBasePrivate::sendCallOut(const QFutureCallOutEvent &callOutEvent)
+{
+ if (outputConnections.isEmpty())
+ return;
+
+ for (int i = 0; i < outputConnections.count(); ++i)
+ outputConnections.at(i)->postCallOutEvent(callOutEvent);
+}
+
+void QFutureInterfaceBasePrivate::sendCallOuts(const QFutureCallOutEvent &callOutEvent1,
+ const QFutureCallOutEvent &callOutEvent2)
+{
+ if (outputConnections.isEmpty())
+ return;
+
+ for (int i = 0; i < outputConnections.count(); ++i) {
+ QFutureCallOutInterface *interface = outputConnections.at(i);
+ interface->postCallOutEvent(callOutEvent1);
+ interface->postCallOutEvent(callOutEvent2);
+ }
+}
+
+// This function connects an output interface (for example a QFutureWatcher)
+// to this future. While holding the lock we check the state and ready results
+// and add the appropriate callouts to the queue. In order to avoid deadlocks,
+// the actual callouts are made at the end while not holding the lock.
+void QFutureInterfaceBasePrivate::connectOutputInterface(QFutureCallOutInterface *interface)
+{
+ QMutexLocker locker(&m_mutex);
+
+ if (state & QFutureInterfaceBase::Started) {
+ interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Started));
+ interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::ProgressRange,
+ m_progressMinimum,
+ m_progressMaximum));
+ interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Progress,
+ m_progressValue,
+ m_progressText));
+ }
+
+ QtConcurrent::ResultIteratorBase it = m_results.begin();
+ while (it != m_results.end()) {
+ const int begin = it.resultIndex();
+ const int end = begin + it.batchSize();
+ interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::ResultsReady,
+ begin,
+ end));
+ it.batchedAdvance();
+ }
+
+ if (state & QFutureInterfaceBase::Paused)
+ interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Paused));
+
+ if (state & QFutureInterfaceBase::Canceled)
+ interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Canceled));
+
+ if (state & QFutureInterfaceBase::Finished)
+ interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Finished));
+
+ outputConnections.append(interface);
+}
+
+void QFutureInterfaceBasePrivate::disconnectOutputInterface(QFutureCallOutInterface *interface)
+{
+ QMutexLocker lock(&m_mutex);
+ const int index = outputConnections.indexOf(interface);
+ if (index == -1)
+ return;
+ outputConnections.removeAt(index);
+
+ interface->callOutInterfaceDisconnected();
+}
+
+void QFutureInterfaceBasePrivate::setState(QFutureInterfaceBase::State newState)
+{
+ state = newState;
+}
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_CONCURRENT
diff --git a/src/concurrent/qfutureinterface.h b/src/concurrent/qfutureinterface.h
new file mode 100644
index 0000000000..f64623ae58
--- /dev/null
+++ b/src/concurrent/qfutureinterface.h
@@ -0,0 +1,312 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QFUTUREINTERFACE_H
+#define QFUTUREINTERFACE_H
+
+#include <QtCore/qglobal.h>
+#include <QtCore/qrunnable.h>
+
+#ifndef QT_NO_QFUTURE
+
+#include <QtCore/qmutex.h>
+#include <QtConcurrent/qtconcurrentexception.h>
+#include <QtConcurrent/qtconcurrentresultstore.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+template <typename T> class QFuture;
+class QFutureInterfaceBasePrivate;
+class QFutureWatcherBase;
+class QFutureWatcherBasePrivate;
+
+class Q_CORE_EXPORT QFutureInterfaceBase
+{
+public:
+ enum State {
+ NoState = 0x00,
+ Running = 0x01,
+ Started = 0x02,
+ Finished = 0x04,
+ Canceled = 0x08,
+ Paused = 0x10,
+ Throttled = 0x20
+ };
+
+ QFutureInterfaceBase(State initialState = NoState);
+ QFutureInterfaceBase(const QFutureInterfaceBase &other);
+ virtual ~QFutureInterfaceBase();
+
+ // reporting functions available to the engine author:
+ void reportStarted();
+ void reportFinished();
+ void reportCanceled();
+#ifndef QT_NO_EXCEPTIONS
+ void reportException(const QtConcurrent::Exception &e);
+#endif
+ void reportResultsReady(int beginIndex, int endIndex);
+
+ void setRunnable(QRunnable *runnable);
+ void setFilterMode(bool enable);
+ void setProgressRange(int minimum, int maximum);
+ int progressMinimum() const;
+ int progressMaximum() const;
+ bool isProgressUpdateNeeded() const;
+ void setProgressValue(int progressValue);
+ int progressValue() const;
+ void setProgressValueAndText(int progressValue, const QString &progressText);
+ QString progressText() const;
+
+ void setExpectedResultCount(int resultCount);
+ int expectedResultCount();
+ int resultCount() const;
+
+ bool queryState(State state) const;
+ bool isRunning() const;
+ bool isStarted() const;
+ bool isCanceled() const;
+ bool isFinished() const;
+ bool isPaused() const;
+ bool isThrottled() const;
+ bool isResultReadyAt(int index) const;
+
+ void cancel();
+ void setPaused(bool paused);
+ void togglePaused();
+ void setThrottled(bool enable);
+
+ void waitForFinished();
+ bool waitForNextResult();
+ void waitForResult(int resultIndex);
+ void waitForResume();
+
+ QMutex *mutex() const;
+ QtConcurrent::internal::ExceptionStore &exceptionStore();
+ QtConcurrent::ResultStoreBase &resultStoreBase();
+ const QtConcurrent::ResultStoreBase &resultStoreBase() const;
+
+ inline bool operator==(const QFutureInterfaceBase &other) const { return d == other.d; }
+ inline bool operator!=(const QFutureInterfaceBase &other) const { return d != other.d; }
+ QFutureInterfaceBase &operator=(const QFutureInterfaceBase &other);
+
+protected:
+ bool referenceCountIsOne() const;
+public:
+
+#ifndef QFUTURE_TEST
+private:
+#endif
+ QFutureInterfaceBasePrivate *d;
+
+private:
+ friend class QFutureWatcherBase;
+ friend class QFutureWatcherBasePrivate;
+};
+
+template <typename T>
+class QFutureInterface : public QFutureInterfaceBase
+{
+public:
+ QFutureInterface(State initialState = NoState)
+ : QFutureInterfaceBase(initialState)
+ { }
+ QFutureInterface(const QFutureInterface &other)
+ : QFutureInterfaceBase(other)
+ { }
+ ~QFutureInterface()
+ {
+ if (referenceCountIsOne())
+ resultStore().clear();
+ }
+
+ static QFutureInterface canceledResult()
+ { return QFutureInterface(State(Started | Finished | Canceled)); }
+
+ QFutureInterface &operator=(const QFutureInterface &other)
+ {
+ if (referenceCountIsOne())
+ resultStore().clear();
+ QFutureInterfaceBase::operator=(other);
+ return *this;
+ }
+
+ inline QFuture<T> future(); // implemented in qfuture.h
+
+ inline void reportResult(const T *result, int index = -1);
+ inline void reportResult(const T &result, int index = -1);
+ inline void reportResults(const QVector<T> &results, int beginIndex = -1, int count = -1);
+ inline void reportFinished(const T *result = 0);
+
+ inline const T &resultReference(int index) const;
+ inline const T *resultPointer(int index) const;
+ inline QList<T> results();
+private:
+ QtConcurrent::ResultStore<T> &resultStore()
+ { return static_cast<QtConcurrent::ResultStore<T> &>(resultStoreBase()); }
+ const QtConcurrent::ResultStore<T> &resultStore() const
+ { return static_cast<const QtConcurrent::ResultStore<T> &>(resultStoreBase()); }
+};
+
+template <typename T>
+inline void QFutureInterface<T>::reportResult(const T *result, int index)
+{
+ QMutexLocker locker(mutex());
+ if (this->queryState(Canceled) || this->queryState(Finished)) {
+ return;
+ }
+
+ QtConcurrent::ResultStore<T> &store = resultStore();
+
+
+ if (store.filterMode()) {
+ const int resultCountBefore = store.count();
+ store.addResult(index, result);
+ this->reportResultsReady(resultCountBefore, resultCountBefore + store.count());
+ } else {
+ const int insertIndex = store.addResult(index, result);
+ this->reportResultsReady(insertIndex, insertIndex + 1);
+ }
+}
+
+template <typename T>
+inline void QFutureInterface<T>::reportResult(const T &result, int index)
+{
+ reportResult(&result, index);
+}
+
+template <typename T>
+inline void QFutureInterface<T>::reportResults(const QVector<T> &_results, int beginIndex, int count)
+{
+ QMutexLocker locker(mutex());
+ if (this->queryState(Canceled) || this->queryState(Finished)) {
+ return;
+ }
+
+ QtConcurrent::ResultStore<T> &store = resultStore();
+
+ if (store.filterMode()) {
+ const int resultCountBefore = store.count();
+ store.addResults(beginIndex, &_results, count);
+ this->reportResultsReady(resultCountBefore, store.count());
+ } else {
+ const int insertIndex = store.addResults(beginIndex, &_results, count);
+ this->reportResultsReady(insertIndex, insertIndex + _results.count());
+ }
+}
+
+template <typename T>
+inline void QFutureInterface<T>::reportFinished(const T *result)
+{
+ if (result)
+ reportResult(result);
+ QFutureInterfaceBase::reportFinished();
+}
+
+template <typename T>
+inline const T &QFutureInterface<T>::resultReference(int index) const
+{
+ QMutexLocker lock(mutex());
+ return resultStore().resultAt(index).value();
+}
+
+template <typename T>
+inline const T *QFutureInterface<T>::resultPointer(int index) const
+{
+ QMutexLocker lock(mutex());
+ return resultStore().resultAt(index).pointer();
+}
+
+template <typename T>
+inline QList<T> QFutureInterface<T>::results()
+{
+ if (this->isCanceled()) {
+ exceptionStore().throwPossibleException();
+ return QList<T>();
+ }
+ QFutureInterfaceBase::waitForResult(-1);
+
+ QList<T> res;
+ QMutexLocker lock(mutex());
+
+ QtConcurrent::ResultIterator<T> it = resultStore().begin();
+ while (it != resultStore().end()) {
+ res.append(it.value());
+ ++it;
+ }
+
+ return res;
+}
+
+template <>
+class QFutureInterface<void> : public QFutureInterfaceBase
+{
+public:
+ QFutureInterface<void>(State initialState = NoState)
+ : QFutureInterfaceBase(initialState)
+ { }
+ QFutureInterface<void>(const QFutureInterface<void> &other)
+ : QFutureInterfaceBase(other)
+ { }
+
+ static QFutureInterface<void> canceledResult()
+ { return QFutureInterface(State(Started | Finished | Canceled)); }
+
+ QFutureInterface<void> &operator=(const QFutureInterface<void> &other)
+ {
+ QFutureInterfaceBase::operator=(other);
+ return *this;
+ }
+
+ inline QFuture<void> future(); // implemented in qfuture.h
+
+ void reportResult(const void *, int) { }
+ void reportResults(const QVector<void> &, int) { }
+ void reportFinished(void * = 0) { QFutureInterfaceBase::reportFinished(); }
+};
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif // QFUTUREINTERFACE_H
diff --git a/src/concurrent/qfutureinterface_p.h b/src/concurrent/qfutureinterface_p.h
new file mode 100644
index 0000000000..ea52621378
--- /dev/null
+++ b/src/concurrent/qfutureinterface_p.h
@@ -0,0 +1,167 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QFUTUREINTERFACE_P_H
+#define QFUTUREINTERFACE_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtCore/qelapsedtimer.h>
+#include <QtCore/qcoreevent.h>
+#include <QtCore/qlist.h>
+#include <QtCore/qwaitcondition.h>
+#include <QtCore/qrunnable.h>
+
+QT_BEGIN_NAMESPACE
+
+class QFutureCallOutEvent : public QEvent
+{
+public:
+ enum CallOutType {
+ Started,
+ Finished,
+ Canceled,
+ Paused,
+ Resumed,
+ Progress,
+ ProgressRange,
+ ResultsReady
+ };
+
+ QFutureCallOutEvent()
+ : QEvent(QEvent::FutureCallOut), callOutType(CallOutType(0)), index1(-1), index2(-1)
+ { }
+ QFutureCallOutEvent(CallOutType callOutType, int index1 = -1)
+ : QEvent(QEvent::FutureCallOut), callOutType(callOutType), index1(index1), index2(-1)
+ { }
+ QFutureCallOutEvent(CallOutType callOutType, int index1, int index2)
+ : QEvent(QEvent::FutureCallOut), callOutType(callOutType), index1(index1), index2(index2)
+ { }
+
+ QFutureCallOutEvent(CallOutType callOutType, int index1, const QString &text)
+ : QEvent(QEvent::FutureCallOut),
+ callOutType(callOutType),
+ index1(index1),
+ index2(-1),
+ text(text)
+ { }
+
+ CallOutType callOutType;
+ int index1;
+ int index2;
+ QString text;
+
+ QFutureCallOutEvent *clone() const
+ {
+ return new QFutureCallOutEvent(callOutType, index1, index2, text);
+ }
+
+private:
+ QFutureCallOutEvent(CallOutType callOutType,
+ int index1,
+ int index2,
+ const QString &text)
+ : QEvent(QEvent::FutureCallOut),
+ callOutType(callOutType),
+ index1(index1),
+ index2(index2),
+ text(text)
+ { }
+};
+
+class QFutureCallOutInterface
+{
+public:
+ virtual ~QFutureCallOutInterface() {}
+ virtual void postCallOutEvent(const QFutureCallOutEvent &) = 0;
+ virtual void callOutInterfaceDisconnected() = 0;
+};
+
+class QFutureInterfaceBasePrivate
+{
+public:
+ QFutureInterfaceBasePrivate(QFutureInterfaceBase::State initialState);
+
+ QAtomicInt refCount;
+ mutable QMutex m_mutex;
+ QWaitCondition waitCondition;
+ QList<QFutureCallOutInterface *> outputConnections;
+ int m_progressValue;
+ int m_progressMinimum;
+ int m_progressMaximum;
+ QFutureInterfaceBase::State state;
+ QElapsedTimer progressTime;
+ QWaitCondition pausedWaitCondition;
+ int pendingResults;
+ QtConcurrent::ResultStoreBase m_results;
+ bool manualProgress;
+ int m_expectedResultCount;
+ QtConcurrent::internal::ExceptionStore m_exceptionStore;
+ QString m_progressText;
+ QRunnable *runnable;
+
+ // Internal functions that does not change the mutex state.
+ // The mutex must be locked when calling these.
+ int internal_resultCount() const;
+ bool internal_isResultReadyAt(int index) const;
+ bool internal_waitForNextResult();
+ bool internal_updateProgress(int progress, const QString &progressText = QString());
+ void internal_setThrottled(bool enable);
+ void sendCallOut(const QFutureCallOutEvent &callOut);
+ void sendCallOuts(const QFutureCallOutEvent &callOut1, const QFutureCallOutEvent &callOut2);
+ void connectOutputInterface(QFutureCallOutInterface *iface);
+ void disconnectOutputInterface(QFutureCallOutInterface *iface);
+
+ void setState(QFutureInterfaceBase::State state);
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/concurrent/qfuturesynchronizer.cpp b/src/concurrent/qfuturesynchronizer.cpp
new file mode 100644
index 0000000000..34b00daf4f
--- /dev/null
+++ b/src/concurrent/qfuturesynchronizer.cpp
@@ -0,0 +1,156 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+/*! \class QFutureSynchronizer
+ \since 4.4
+
+ \brief The QFutureSynchronizer class is a convenience class that simplifies
+ QFuture synchronization.
+
+ \ingroup thread
+
+ QFutureSynchronizer is a template class that simplifies synchronization of
+ one or more QFuture objects. Futures are added using the addFuture() or
+ setFuture() functions. The futures() function returns a list of futures.
+ Use clearFutures() to remove all futures from the QFutureSynchronizer.
+
+ The waitForFinished() function waits for all futures to finish.
+ The destructor of QFutureSynchronizer calls waitForFinished(), providing
+ an easy way to ensure that all futures have finished before returning from
+ a function:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qfuturesynchronizer.cpp 0
+
+ The behavior of waitForFinished() can be changed using the
+ setCancelOnWait() function. Calling setCancelOnWait(true) will cause
+ waitForFinished() to cancel all futures before waiting for them to finish.
+ You can query the status of the cancel-on-wait feature using the
+ cancelOnWait() function.
+
+ \sa QFuture, QFutureWatcher, {Concurrent Programming}{Qt Concurrent}
+*/
+
+/*!
+ \fn QFutureSynchronizer::QFutureSynchronizer()
+
+ Constructs a QFutureSynchronizer.
+*/
+
+/*!
+ \fn QFutureSynchronizer::QFutureSynchronizer(const QFuture<T> &future)
+
+ Constructs a QFutureSynchronizer and begins watching \a future by calling
+ addFuture().
+
+ \sa addFuture()
+*/
+
+/*!
+ \fn QFutureSynchronizer::~QFutureSynchronizer()
+
+ Calls waitForFinished() function to ensure that all futures have finished
+ before destroying this QFutureSynchronizer.
+
+ \sa waitForFinished()
+*/
+
+/*!
+ \fn void QFutureSynchronizer::setFuture(const QFuture<T> &future)
+
+ Sets \a future to be the only future managed by this QFutureSynchronizer.
+ This is a convenience function that calls waitForFinished(),
+ then clearFutures(), and finally passes \a future to addFuture().
+
+ \sa addFuture(), waitForFinished(), clearFutures()
+*/
+
+/*!
+ \fn void QFutureSynchronizer::addFuture(const QFuture<T> &future)
+
+ Adds \a future to the list of managed futures.
+
+ \sa futures()
+*/
+
+/*!
+ \fn void QFutureSynchronizer::waitForFinished()
+
+ Waits for all futures to finish. If cancelOnWait() returns true, each
+ future is canceled before waiting for them to finish.
+
+ \sa cancelOnWait(), setCancelOnWait()
+*/
+
+/*!
+ \fn void QFutureSynchronizer::clearFutures()
+
+ Removes all managed futures from this QFutureSynchronizer.
+
+ \sa addFuture(), setFuture()
+*/
+
+/*!
+ \fn QList<QFuture<T> > QFutureSynchronizer::futures() const
+
+ Returns a list of all managed futures.
+
+ \sa addFuture(), setFuture()
+*/
+
+/*!
+ \fn void QFutureSynchronizer::setCancelOnWait(bool enabled)
+
+ Enables or disables the cancel-on-wait feature based on the \a enabled
+ argument. If \a enabled is true, the waitForFinished() function will cancel
+ all futures before waiting for them to finish.
+
+ \sa waitForFinished()
+*/
+
+/*!
+ \fn bool QFutureSynchronizer::cancelOnWait() const
+
+ Returns true if the cancel-on-wait feature is enabled; otherwise returns
+ false. If cancel-on-wait is enabled, the waitForFinished() function will
+ cancel all futures before waiting for them to finish.
+
+ \sa waitForFinished()
+*/
diff --git a/src/concurrent/qfuturesynchronizer.h b/src/concurrent/qfuturesynchronizer.h
new file mode 100644
index 0000000000..8b7e710ea9
--- /dev/null
+++ b/src/concurrent/qfuturesynchronizer.h
@@ -0,0 +1,120 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QFUTRUESYNCHRONIZER_H
+#define QFUTRUESYNCHRONIZER_H
+
+#include <QtConcurrent/qfuture.h>
+
+#ifndef QT_NO_CONCURRENT
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+template <typename T>
+class QFutureSynchronizer
+{
+ Q_DISABLE_COPY(QFutureSynchronizer)
+
+public:
+ QFutureSynchronizer() : m_cancelOnWait(false) { }
+ explicit QFutureSynchronizer(const QFuture<T> &future)
+ : m_cancelOnWait(false)
+ { addFuture(future); }
+ ~QFutureSynchronizer() { waitForFinished(); }
+
+ void setFuture(const QFuture<T> &future)
+ {
+ waitForFinished();
+ m_futures.clear();
+ addFuture(future);
+ }
+
+ void addFuture(const QFuture<T> &future)
+ {
+ m_futures.append(future);
+ }
+
+ void waitForFinished()
+ {
+ if (m_cancelOnWait) {
+ for (int i = 0; i < m_futures.count(); ++i) {
+ m_futures[i].cancel();
+ }
+ }
+
+ for (int i = 0; i < m_futures.count(); ++i) {
+ m_futures[i].waitForFinished();
+ }
+ }
+
+ void clearFutures()
+ {
+ m_futures.clear();
+ }
+
+ QList<QFuture<T> > futures() const
+ {
+ return m_futures;
+ }
+
+ void setCancelOnWait(bool enabled)
+ {
+ m_cancelOnWait = enabled;
+ }
+
+ bool cancelOnWait() const
+ {
+ return m_cancelOnWait;
+ }
+
+protected:
+ QList<QFuture<T> > m_futures;
+ bool m_cancelOnWait;
+};
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif // QFUTRUESYNCHRONIZER_H
diff --git a/src/concurrent/qfuturewatcher.cpp b/src/concurrent/qfuturewatcher.cpp
new file mode 100644
index 0000000000..d3a1122a07
--- /dev/null
+++ b/src/concurrent/qfuturewatcher.cpp
@@ -0,0 +1,592 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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 "qfuturewatcher.h"
+
+#ifndef QT_NO_QFUTURE
+
+#include <QtCore/qcoreevent.h>
+#include <QtCore/qcoreapplication.h>
+#include <QtCore/qthread.h>
+
+#include "qfuturewatcher_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/*! \class QFutureWatcher
+ \reentrant
+ \since 4.4
+
+ \ingroup thread
+
+ \brief The QFutureWatcher class allows monitoring a QFuture using signals
+ and slots.
+
+ QFutureWatcher provides information and notifications about a QFuture. Use
+ the setFuture() function to start watching a particular QFuture. The
+ future() function returns the future set with setFuture().
+
+ For convenience, several of QFuture's functions are also available in
+ QFutureWatcher: progressValue(), progressMinimum(), progressMaximum(),
+ progressText(), isStarted(), isFinished(), isRunning(), isCanceled(),
+ isPaused(), waitForFinished(), result(), and resultAt(). The cancel(),
+ setPaused(), pause(), resume(), and togglePaused() functions are slots in
+ QFutureWatcher.
+
+ Status changes are reported via the started(), finished(), canceled(),
+ paused(), resumed(), resultReadyAt(), and resultsReadyAt() signals.
+ Progress information is provided from the progressRangeChanged(),
+ void progressValueChanged(), and progressTextChanged() signals.
+
+ Throttling control is provided by the setPendingResultsLimit() function.
+ When the number of pending resultReadyAt() or resultsReadyAt() signals
+ exceeds the limit, the computation represented by the future will be
+ throttled automatically. The computation will resume once the number of
+ pending signals drops below the limit.
+
+ Example: Starting a computation and getting a slot callback when it's
+ finished:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qfuturewatcher.cpp 0
+
+ Be aware that not all asynchronous computations can be canceled or paused.
+ For example, the future returned by QtConcurrent::run() cannot be
+ canceled; but the future returned by QtConcurrent::mappedReduced() can.
+
+ QFutureWatcher<void> is specialized to not contain any of the result
+ fetching functions. Any QFuture<T> can be watched by a
+ QFutureWatcher<void> as well. This is useful if only status or progress
+ information is needed; not the actual result data.
+
+ \sa QFuture, {Concurrent Programming}{Qt Concurrent}
+*/
+
+/*! \fn QFutureWatcher::QFutureWatcher(QObject *parent)
+
+ Constructs a new QFutureWatcher with the given \a parent.
+*/
+QFutureWatcherBase::QFutureWatcherBase(QObject *parent)
+ :QObject(*new QFutureWatcherBasePrivate, parent)
+{ }
+
+/*! \fn QFutureWatcher::~QFutureWatcher()
+
+ Destroys the QFutureWatcher.
+*/
+
+/*! \fn void QFutureWatcher::cancel()
+
+ Cancels the asynchronous computation represented by the future(). Note that
+ the cancelation is asynchronous. Use waitForFinished() after calling
+ cancel() when you need synchronous cancelation.
+
+ Currently available results may still be accessed on a canceled QFuture,
+ but new results will \e not become available after calling this function.
+ Also, this QFutureWatcher will not deliver progress and result ready
+ signals once canceled. This includes the progressValueChanged(),
+ progressRangeChanged(), progressTextChanged(), resultReadyAt(), and
+ resultsReadyAt() signals.
+
+ Be aware that not all asynchronous computations can be canceled. For
+ example, the QFuture returned by QtConcurrent::run() cannot be canceled;
+ but the QFuture returned by QtConcurrent::mappedReduced() can.
+*/
+void QFutureWatcherBase::cancel()
+{
+ futureInterface().cancel();
+}
+
+/*! \fn void QFutureWatcher::setPaused(bool paused)
+
+ If \a paused is true, this function pauses the asynchronous computation
+ represented by the future(). If the computation is already paused, this
+ function does nothing. This QFutureWatcher will stop delivering progress
+ and result ready signals while the future is paused. Signal delivery will
+ continue once the computation is resumed.
+
+ If \a paused is false, this function resumes the asynchronous computation.
+ If the computation was not previously paused, this function does nothing.
+
+ Be aware that not all computations can be paused. For example, the
+ QFuture returned by QtConcurrent::run() cannot be paused; but the QFuture
+ returned by QtConcurrent::mappedReduced() can.
+
+ \sa pause(), resume(), togglePaused()
+*/
+void QFutureWatcherBase::setPaused(bool paused)
+{
+ futureInterface().setPaused(paused);
+}
+
+/*! \fn void QFutureWatcher::pause()
+
+ Pauses the asynchronous computation represented by the future(). This is a
+ convenience method that simply calls setPaused(true).
+
+ \sa resume()
+*/
+void QFutureWatcherBase::pause()
+{
+ futureInterface().setPaused(true);
+}
+
+/*! \fn void QFutureWatcher::resume()
+
+ Resumes the asynchronous computation represented by the future(). This is
+ a convenience method that simply calls setPaused(false).
+
+ \sa pause()
+*/
+void QFutureWatcherBase::resume()
+{
+ futureInterface().setPaused(false);
+}
+
+/*! \fn void QFutureWatcher::togglePaused()
+
+ Toggles the paused state of the asynchronous computation. In other words,
+ if the computation is currently paused, calling this function resumes it;
+ if the computation is running, it becomes paused. This is a convenience
+ method for calling setPaused(!isPaused()).
+
+ \sa setPaused(), pause(), resume()
+*/
+void QFutureWatcherBase::togglePaused()
+{
+ futureInterface().togglePaused();
+}
+
+/*! \fn int QFutureWatcher::progressValue() const
+
+ Returns the current progress value, which is between the progressMinimum()
+ and progressMaximum().
+
+ \sa progressMinimum(), progressMaximum()
+*/
+int QFutureWatcherBase::progressValue() const
+{
+ return futureInterface().progressValue();
+}
+
+/*! \fn int QFutureWatcher::progressMinimum() const
+
+ Returns the minimum progressValue().
+
+ \sa progressValue(), progressMaximum()
+*/
+int QFutureWatcherBase::progressMinimum() const
+{
+ return futureInterface().progressMinimum();
+}
+
+/*! \fn int QFutureWatcher::progressMaximum() const
+
+ Returns the maximum progressValue().
+
+ \sa progressValue(), progressMinimum()
+*/
+int QFutureWatcherBase::progressMaximum() const
+{
+ return futureInterface().progressMaximum();
+}
+
+/*! \fn QString QFutureWatcher::progressText() const
+
+ Returns the (optional) textual representation of the progress as reported
+ by the asynchronous computation.
+
+ Be aware that not all computations provide a textual representation of the
+ progress, and as such, this function may return an empty string.
+*/
+QString QFutureWatcherBase::progressText() const
+{
+ return futureInterface().progressText();
+}
+
+/*! \fn bool QFutureWatcher::isStarted() const
+
+ Returns true if the asynchronous computation represented by the future()
+ has been started; otherwise returns false.
+*/
+bool QFutureWatcherBase::isStarted() const
+{
+ return futureInterface().queryState(QFutureInterfaceBase::Started);
+}
+
+/*! \fn bool QFutureWatcher::isFinished() const
+
+ Returns true if the asynchronous computation represented by the future()
+ has finished; otherwise returns false.
+*/
+bool QFutureWatcherBase::isFinished() const
+{
+ Q_D(const QFutureWatcherBase);
+ return d->finished;
+}
+
+/*! \fn bool QFutureWatcher::isRunning() const
+
+ Returns true if the asynchronous computation represented by the future()
+ is currently running; otherwise returns false.
+*/
+bool QFutureWatcherBase::isRunning() const
+{
+ return futureInterface().queryState(QFutureInterfaceBase::Running);
+}
+
+/*! \fn bool QFutureWatcher::isCanceled() const
+
+ Returns true if the asynchronous computation has been canceled with the
+ cancel() function; otherwise returns false.
+
+ Be aware that the computation may still be running even though this
+ function returns true. See cancel() for more details.
+*/
+bool QFutureWatcherBase::isCanceled() const
+{
+ return futureInterface().queryState(QFutureInterfaceBase::Canceled);
+}
+
+/*! \fn bool QFutureWatcher::isPaused() const
+
+ Returns true if the asynchronous computation has been paused with the
+ pause() function; otherwise returns false.
+
+ Be aware that the computation may still be running even though this
+ function returns true. See setPaused() for more details.
+
+ \sa setPaused(), togglePaused()
+*/
+bool QFutureWatcherBase::isPaused() const
+{
+ return futureInterface().queryState(QFutureInterfaceBase::Paused);
+}
+
+/*! \fn void QFutureWatcher::waitForFinished()
+
+ Waits for the asynchronous computation to finish (including cancel()ed
+ computations).
+*/
+void QFutureWatcherBase::waitForFinished()
+{
+ futureInterface().waitForFinished();
+}
+
+/*! \fn void QFutureWatcher::setPendingResultsLimit(int limit)
+
+ The setPendingResultsLimit() provides throttling control. When the number
+ of pending resultReadyAt() or resultsReadyAt() signals exceeds the
+ \a limit, the computation represented by the future will be throttled
+ automatically. The computation will resume once the number of pending
+ signals drops below the \a limit.
+*/
+
+bool QFutureWatcherBase::event(QEvent *event)
+{
+ Q_D(QFutureWatcherBase);
+ if (event->type() == QEvent::FutureCallOut) {
+ QFutureCallOutEvent *callOutEvent = static_cast<QFutureCallOutEvent *>(event);
+
+ if (futureInterface().isPaused()) {
+ d->pendingCallOutEvents.append(callOutEvent->clone());
+ return true;
+ }
+
+ if (callOutEvent->callOutType == QFutureCallOutEvent::Resumed
+ && !d->pendingCallOutEvents.isEmpty()) {
+ // send the resume
+ d->sendCallOutEvent(callOutEvent);
+
+ // next send all pending call outs
+ for (int i = 0; i < d->pendingCallOutEvents.count(); ++i)
+ d->sendCallOutEvent(d->pendingCallOutEvents.at(i));
+ qDeleteAll(d->pendingCallOutEvents);
+ d->pendingCallOutEvents.clear();
+ } else {
+ d->sendCallOutEvent(callOutEvent);
+ }
+ return true;
+ }
+ return QObject::event(event);
+}
+
+void QFutureWatcherBase::setPendingResultsLimit(int limit)
+{
+ Q_D(QFutureWatcherBase);
+ d->maximumPendingResultsReady = limit;
+}
+
+void QFutureWatcherBase::connectNotify(const char * signal)
+{
+ Q_D(QFutureWatcherBase);
+ if (qstrcmp(signal, SIGNAL(resultReadyAt(int))) == 0)
+ d->resultAtConnected.ref();
+#ifndef QT_NO_DEBUG
+ if (qstrcmp(signal, SIGNAL(finished())) == 0) {
+ if (futureInterface().isRunning()) {
+ //connections should be established before calling stFuture to avoid race.
+ // (The future could finish before the connection is made.)
+ qWarning("QFutureWatcher::connect: connecting after calling setFuture() is likely to produce race");
+ }
+ }
+#endif
+}
+
+void QFutureWatcherBase::disconnectNotify(const char * signal)
+{
+ Q_D(QFutureWatcherBase);
+ if (qstrcmp(signal, SIGNAL(resultReadyAt(int))) == 0)
+ d->resultAtConnected.deref();
+}
+
+/*!
+ \internal
+*/
+QFutureWatcherBasePrivate::QFutureWatcherBasePrivate()
+ : maximumPendingResultsReady(QThread::idealThreadCount() * 2),
+ resultAtConnected(0)
+{ }
+
+/*!
+ \internal
+*/
+void QFutureWatcherBase::connectOutputInterface()
+{
+ futureInterface().d->connectOutputInterface(d_func());
+}
+
+/*!
+ \internal
+*/
+void QFutureWatcherBase::disconnectOutputInterface(bool pendingAssignment)
+{
+ if (pendingAssignment) {
+ Q_D(QFutureWatcherBase);
+ d->pendingResultsReady.store(0);
+ qDeleteAll(d->pendingCallOutEvents);
+ d->pendingCallOutEvents.clear();
+ d->finished = false;
+ }
+
+ futureInterface().d->disconnectOutputInterface(d_func());
+}
+
+void QFutureWatcherBasePrivate::postCallOutEvent(const QFutureCallOutEvent &callOutEvent)
+{
+ Q_Q(QFutureWatcherBase);
+
+ if (callOutEvent.callOutType == QFutureCallOutEvent::ResultsReady) {
+ if (pendingResultsReady.fetchAndAddRelaxed(1) >= maximumPendingResultsReady)
+ q->futureInterface().d->internal_setThrottled(true);
+ }
+
+ QCoreApplication::postEvent(q, callOutEvent.clone());
+}
+
+void QFutureWatcherBasePrivate::callOutInterfaceDisconnected()
+{
+ QCoreApplication::removePostedEvents(q_func(), QEvent::FutureCallOut);
+}
+
+void QFutureWatcherBasePrivate::sendCallOutEvent(QFutureCallOutEvent *event)
+{
+ Q_Q(QFutureWatcherBase);
+
+ switch (event->callOutType) {
+ case QFutureCallOutEvent::Started:
+ emit q->started();
+ break;
+ case QFutureCallOutEvent::Finished:
+ finished = true;
+ emit q->finished();
+ break;
+ case QFutureCallOutEvent::Canceled:
+ pendingResultsReady.store(0);
+ emit q->canceled();
+ break;
+ case QFutureCallOutEvent::Paused:
+ if (q->futureInterface().isCanceled())
+ break;
+ emit q->paused();
+ break;
+ case QFutureCallOutEvent::Resumed:
+ if (q->futureInterface().isCanceled())
+ break;
+ emit q->resumed();
+ break;
+ case QFutureCallOutEvent::ResultsReady: {
+ if (q->futureInterface().isCanceled())
+ break;
+
+ if (pendingResultsReady.fetchAndAddRelaxed(-1) <= maximumPendingResultsReady)
+ q->futureInterface().setThrottled(false);
+
+ const int beginIndex = event->index1;
+ const int endIndex = event->index2;
+
+ emit q->resultsReadyAt(beginIndex, endIndex);
+
+ if (resultAtConnected.load() <= 0)
+ break;
+
+ for (int i = beginIndex; i < endIndex; ++i)
+ emit q->resultReadyAt(i);
+
+ } break;
+ case QFutureCallOutEvent::Progress:
+ if (q->futureInterface().isCanceled())
+ break;
+
+ emit q->progressValueChanged(event->index1);
+ if (!event->text.isNull()) // ###
+ q->progressTextChanged(event->text);
+ break;
+ case QFutureCallOutEvent::ProgressRange:
+ emit q->progressRangeChanged(event->index1, event->index2);
+ break;
+ default: break;
+ }
+}
+
+
+/*! \fn const T &QFutureWatcher::result() const
+
+ Returns the first result in the future(). If the result is not immediately
+ available, this function will block and wait for the result to become
+ available. This is a convenience method for calling resultAt(0).
+
+ \sa resultAt()
+*/
+
+/*! \fn const T &QFutureWatcher::resultAt(int index) const
+
+ Returns the result at \a index in the future(). If the result is not
+ immediately available, this function will block and wait for the result to
+ become available.
+
+ \sa result()
+*/
+
+/*! \fn void QFutureWatcher::setFuture(const QFuture<T> &future)
+
+ Starts watching the given \a future.
+
+ One of the signals might be emitted for the current state of the
+ \a future. For example, if the future is already stopped, the
+ finished signal will be emitted.
+
+ To avoid a race condition, it is important to call this function
+ \e after doing the connections.
+*/
+
+/*! \fn QFuture<T> QFutureWatcher::future() const
+
+ Returns the watched future.
+*/
+
+/*! \fn void QFutureWatcher::started()
+
+ This signal is emitted when this QFutureWatcher starts watching the future
+ set with setFuture().
+*/
+
+/*!
+ \fn void QFutureWatcher::finished()
+ This signal is emitted when the watched future finishes.
+*/
+
+/*!
+ \fn void QFutureWatcher::canceled()
+ This signal is emitted if the watched future is canceled.
+*/
+
+/*! \fn void QFutureWatcher::paused()
+ This signal is emitted when the watched future is paused.
+*/
+
+/*! \fn void QFutureWatcher::resumed()
+ This signal is emitted when the watched future is resumed.
+*/
+
+/*!
+ \fn void QFutureWatcher::progressRangeChanged(int minimum, int maximum)
+
+ The progress range for the watched future has changed to \a minimum and
+ \a maximum
+*/
+
+/*!
+ \fn void QFutureWatcher::progressValueChanged(int progressValue)
+
+ This signal is emitted when the watched future reports progress,
+ \a progressValue gives the current progress. In order to avoid overloading
+ the GUI event loop, QFutureWatcher limits the progress signal emission
+ rate. This means that listeners connected to this slot might not get all
+ progress reports the future makes. The last progress update (where
+ \a progressValue equals the maximum value) will always be delivered.
+*/
+
+/*! \fn void QFutureWatcher::progressTextChanged(const QString &progressText)
+
+ This signal is emitted when the watched future reports textual progress
+ information, \a progressText.
+*/
+
+/*!
+ \fn void QFutureWatcher::resultReadyAt(int index)
+
+ This signal is emitted when the watched future reports a ready result at
+ \a index. If the future reports multiple results, the index will indicate
+ which one it is. Results can be reported out-of-order. To get the result,
+ call future().result(index);
+*/
+
+/*!
+ \fn void QFutureWatcher::resultsReadyAt(int beginIndex, int endIndex);
+
+ This signal is emitted when the watched future reports ready results.
+ The results are indexed from \a beginIndex to \a endIndex.
+
+*/
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_CONCURRENT
diff --git a/src/concurrent/qfuturewatcher.h b/src/concurrent/qfuturewatcher.h
new file mode 100644
index 0000000000..0e94863d12
--- /dev/null
+++ b/src/concurrent/qfuturewatcher.h
@@ -0,0 +1,221 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QFUTUREWATCHER_H
+#define QFUTUREWATCHER_H
+
+#include <QtConcurrent/qfuture.h>
+
+#ifndef QT_NO_QFUTURE
+
+#include <QtCore/qobject.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+class QEvent;
+
+class QFutureWatcherBasePrivate;
+class Q_CORE_EXPORT QFutureWatcherBase : public QObject
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QFutureWatcherBase)
+
+public:
+ QFutureWatcherBase(QObject *parent = 0);
+
+ int progressValue() const;
+ int progressMinimum() const;
+ int progressMaximum() const;
+ QString progressText() const;
+
+ bool isStarted() const;
+ bool isFinished() const;
+ bool isRunning() const;
+ bool isCanceled() const;
+ bool isPaused() const;
+
+ void waitForFinished();
+
+ void setPendingResultsLimit(int limit);
+
+ bool event(QEvent *event);
+
+Q_SIGNALS:
+ void started();
+ void finished();
+ void canceled();
+ void paused();
+ void resumed();
+ void resultReadyAt(int resultIndex);
+ void resultsReadyAt(int beginIndex, int endIndex);
+ void progressRangeChanged(int minimum, int maximum);
+ void progressValueChanged(int progressValue);
+ void progressTextChanged(const QString &progressText);
+
+public Q_SLOTS:
+ void cancel();
+ void setPaused(bool paused);
+ void pause();
+ void resume();
+ void togglePaused();
+
+protected:
+ void connectNotify (const char * signal);
+ void disconnectNotify (const char * signal);
+
+ // called from setFuture() implemented in template sub-classes
+ void connectOutputInterface();
+ void disconnectOutputInterface(bool pendingAssignment = false);
+
+private:
+ // implemented in the template sub-classes
+ virtual const QFutureInterfaceBase &futureInterface() const = 0;
+ virtual QFutureInterfaceBase &futureInterface() = 0;
+};
+
+template <typename T>
+class QFutureWatcher : public QFutureWatcherBase
+{
+public:
+ QFutureWatcher(QObject *_parent = 0)
+ : QFutureWatcherBase(_parent)
+ { }
+ ~QFutureWatcher()
+ { disconnectOutputInterface(); }
+
+ void setFuture(const QFuture<T> &future);
+ QFuture<T> future() const
+ { return m_future; }
+
+ T result() const { return m_future.result(); }
+ T resultAt(int index) const { return m_future.resultAt(index); }
+
+#ifdef qdoc
+ int progressValue() const;
+ int progressMinimum() const;
+ int progressMaximum() const;
+ QString progressText() const;
+
+ bool isStarted() const;
+ bool isFinished() const;
+ bool isRunning() const;
+ bool isCanceled() const;
+ bool isPaused() const;
+
+ void waitForFinished();
+
+ void setPendingResultsLimit(int limit);
+
+Q_SIGNALS:
+ void started();
+ void finished();
+ void canceled();
+ void paused();
+ void resumed();
+ void resultReadyAt(int resultIndex);
+ void resultsReadyAt(int beginIndex, int endIndex);
+ void progressRangeChanged(int minimum, int maximum);
+ void progressValueChanged(int progressValue);
+ void progressTextChanged(const QString &progressText);
+
+public Q_SLOTS:
+ void cancel();
+ void setPaused(bool paused);
+ void pause();
+ void resume();
+ void togglePaused();
+#endif
+
+private:
+ QFuture<T> m_future;
+ const QFutureInterfaceBase &futureInterface() const { return m_future.d; }
+ QFutureInterfaceBase &futureInterface() { return m_future.d; }
+};
+
+template <typename T>
+Q_INLINE_TEMPLATE void QFutureWatcher<T>::setFuture(const QFuture<T> &_future)
+{
+ if (_future == m_future)
+ return;
+
+ disconnectOutputInterface(true);
+ m_future = _future;
+ connectOutputInterface();
+}
+
+template <>
+class QFutureWatcher<void> : public QFutureWatcherBase
+{
+public:
+ QFutureWatcher(QObject *_parent = 0)
+ : QFutureWatcherBase(_parent)
+ { }
+ ~QFutureWatcher()
+ { disconnectOutputInterface(); }
+
+ void setFuture(const QFuture<void> &future);
+ QFuture<void> future() const
+ { return m_future; }
+
+private:
+ QFuture<void> m_future;
+ const QFutureInterfaceBase &futureInterface() const { return m_future.d; }
+ QFutureInterfaceBase &futureInterface() { return m_future.d; }
+};
+
+Q_INLINE_TEMPLATE void QFutureWatcher<void>::setFuture(const QFuture<void> &_future)
+{
+ if (_future == m_future)
+ return;
+
+ disconnectOutputInterface(true);
+ m_future = _future;
+ connectOutputInterface();
+}
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif // QFUTUREWATCHER_H
diff --git a/src/concurrent/qfuturewatcher_p.h b/src/concurrent/qfuturewatcher_p.h
new file mode 100644
index 0000000000..27bc49439a
--- /dev/null
+++ b/src/concurrent/qfuturewatcher_p.h
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QFUTUREWATCHER_P_H
+#define QFUTUREWATCHER_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "qfutureinterface_p.h"
+#include <qlist.h>
+
+#ifndef QT_NO_QFUTURE
+
+#include <private/qobject_p.h>
+
+QT_BEGIN_NAMESPACE
+
+class QFutureWatcherBase;
+class QFutureWatcherBasePrivate : public QObjectPrivate,
+ public QFutureCallOutInterface
+{
+ Q_DECLARE_PUBLIC(QFutureWatcherBase)
+
+public:
+ QFutureWatcherBasePrivate();
+
+ void postCallOutEvent(const QFutureCallOutEvent &callOutEvent);
+ void callOutInterfaceDisconnected();
+
+ void sendCallOutEvent(QFutureCallOutEvent *event);
+
+ QList<QFutureCallOutEvent *> pendingCallOutEvents;
+ QAtomicInt pendingResultsReady;
+ int maximumPendingResultsReady;
+
+ QAtomicInt resultAtConnected;
+ bool finished;
+};
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_QFUTURE
+#endif
diff --git a/src/concurrent/qtconcurrentcompilertest.h b/src/concurrent/qtconcurrentcompilertest.h
new file mode 100644
index 0000000000..7818423090
--- /dev/null
+++ b/src/concurrent/qtconcurrentcompilertest.h
@@ -0,0 +1,78 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QTCONCURRENT_COMPILERTEST_H
+#define QTCONCURRENT_COMPILERTEST_H
+
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_CONCURRENT
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+#if defined (Q_CC_MSVC) && (_MSC_VER < 1300)
+# define QT_TYPENAME
+#else
+# define QT_TYPENAME typename
+#endif
+
+namespace QtPrivate {
+
+template<class T>
+class HasResultType {
+ typedef char Yes;
+ typedef void *No;
+ template<typename U> static Yes test(int, const typename U::result_type * = 0);
+ template<typename U> static No test(double);
+public:
+ enum { Value = (sizeof(test<T>(0)) == sizeof(Yes)) };
+};
+
+}
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif
diff --git a/src/concurrent/qtconcurrentexception.cpp b/src/concurrent/qtconcurrentexception.cpp
new file mode 100644
index 0000000000..caeaa8d9be
--- /dev/null
+++ b/src/concurrent/qtconcurrentexception.cpp
@@ -0,0 +1,211 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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 "qtconcurrentexception.h"
+#include "QtCore/qshareddata.h"
+
+#ifndef QT_NO_QFUTURE
+#ifndef QT_NO_EXCEPTIONS
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QtConcurrent::Exception
+ \brief The Exception class provides a base class for exceptions that can transferred across threads.
+ \since 4.4
+
+ Qt Concurrent supports throwing and catching exceptions across thread
+ boundaries, provided that the exception inherit from QtConcurrent::Exception
+ and implement two helper functions:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp 0
+
+ QtConcurrent::Exception subclasses must be thrown by value and
+ caught by reference:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp 1
+
+ If you throw an exception that is not a subclass of QtConcurrent::Exception,
+ the Qt Concurrent functions will throw a QtConcurrent::UnhandledException
+ in the receiver thread.
+
+ When using QFuture, transferred exceptions will be thrown when calling the following functions:
+ \list
+ \o QFuture::waitForFinished()
+ \o QFuture::result()
+ \o QFuture::resultAt()
+ \o QFuture::results()
+ \endlist
+*/
+
+/*!
+ \fn QtConcurrent::Exception::raise() const
+ In your QtConcurrent::Exception subclass, reimplement raise() like this:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp 2
+*/
+
+/*!
+ \fn QtConcurrent::Exception::clone() const
+ In your QtConcurrent::Exception subclass, reimplement clone() like this:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp 3
+*/
+
+/*!
+ \class QtConcurrent::UnhandledException
+
+ \brief The UnhandledException class represents an unhandled exception in a worker thread.
+ \since 4.4
+
+ If a worker thread throws an exception that is not a subclass of QtConcurrent::Exception,
+ the Qt Concurrent functions will throw a QtConcurrent::UnhandledException
+ on the receiver thread side.
+
+ Inheriting from this class is not supported.
+*/
+
+/*!
+ \fn QtConcurrent::UnhandledException::raise() const
+ \internal
+*/
+
+/*!
+ \fn QtConcurrent::UnhandledException::clone() const
+ \internal
+*/
+
+namespace QtConcurrent
+{
+
+void Exception::raise() const
+{
+ Exception e = *this;
+ throw e;
+}
+
+Exception *Exception::clone() const
+{
+ return new Exception(*this);
+}
+
+void UnhandledException::raise() const
+{
+ UnhandledException e = *this;
+ throw e;
+}
+
+Exception *UnhandledException::clone() const
+{
+ return new UnhandledException(*this);
+}
+
+#ifndef qdoc
+
+namespace internal {
+
+class Base : public QSharedData
+{
+public:
+ Base(Exception *exception)
+ : exception(exception), hasThrown(false) { }
+ ~Base() { delete exception; }
+
+ Exception *exception;
+ bool hasThrown;
+};
+
+ExceptionHolder::ExceptionHolder(Exception *exception)
+: base(new Base(exception)) {}
+
+ExceptionHolder::ExceptionHolder(const ExceptionHolder &other)
+: base(other.base)
+{}
+
+void ExceptionHolder::operator=(const ExceptionHolder &other)
+{
+ base = other.base;
+}
+
+ExceptionHolder::~ExceptionHolder()
+{}
+
+Exception *ExceptionHolder::exception() const
+{
+ return base->exception;
+}
+
+void ExceptionStore::setException(const Exception &e)
+{
+ if (hasException() == false)
+ exceptionHolder = ExceptionHolder(e.clone());
+}
+
+bool ExceptionStore::hasException() const
+{
+ return (exceptionHolder.exception() != 0);
+}
+
+ExceptionHolder ExceptionStore::exception()
+{
+ return exceptionHolder;
+}
+
+void ExceptionStore::throwPossibleException()
+{
+ if (hasException() ) {
+ exceptionHolder.base->hasThrown = true;
+ exceptionHolder.exception()->raise();
+ }
+}
+
+bool ExceptionStore::hasThrown() const { return exceptionHolder.base->hasThrown; }
+
+} // namespace internal
+
+#endif //qdoc
+
+} // namespace QtConcurrent
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_EXCEPTIONS
+#endif // QT_NO_CONCURRENT
diff --git a/src/concurrent/qtconcurrentexception.h b/src/concurrent/qtconcurrentexception.h
new file mode 100644
index 0000000000..b04e1f2a04
--- /dev/null
+++ b/src/concurrent/qtconcurrentexception.h
@@ -0,0 +1,128 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QTCONCURRENT_EXCEPTION_H
+#define QTCONCURRENT_EXCEPTION_H
+
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_QFUTURE
+
+#include <QtCore/qatomic.h>
+#include <QtCore/qshareddata.h>
+
+#ifndef QT_NO_EXCEPTIONS
+# include <exception>
+#endif
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+namespace QtConcurrent
+{
+
+#ifndef QT_NO_EXCEPTIONS
+
+class Q_CORE_EXPORT Exception : public std::exception
+{
+public:
+ virtual void raise() const;
+ virtual Exception *clone() const;
+};
+
+class Q_CORE_EXPORT UnhandledException : public Exception
+{
+public:
+ void raise() const;
+ Exception *clone() const;
+};
+
+namespace internal {
+
+class Base;
+class ExceptionHolder
+{
+public:
+ ExceptionHolder(Exception *exception = 0);
+ ExceptionHolder(const ExceptionHolder &other);
+ void operator=(const ExceptionHolder &other);
+ ~ExceptionHolder();
+ Exception *exception() const;
+ QExplicitlySharedDataPointer<Base> base;
+};
+
+class Q_CORE_EXPORT ExceptionStore
+{
+public:
+ void setException(const Exception &e);
+ bool hasException() const;
+ ExceptionHolder exception();
+ void throwPossibleException();
+ bool hasThrown() const;
+ ExceptionHolder exceptionHolder;
+};
+
+} // namespace internal
+
+#else // QT_NO_EXCEPTIONS
+
+namespace internal {
+
+class Q_CORE_EXPORT ExceptionStore
+{
+public:
+ ExceptionStore() { }
+ inline void throwPossibleException() const {}
+};
+
+} // namespace internal
+
+#endif
+
+} // namespace QtConcurrent
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif
diff --git a/src/concurrent/qtconcurrentfilter.cpp b/src/concurrent/qtconcurrentfilter.cpp
new file mode 100644
index 0000000000..76ce8ca659
--- /dev/null
+++ b/src/concurrent/qtconcurrentfilter.cpp
@@ -0,0 +1,330 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+/*!
+ \headerfile <QtConcurrentFilter>
+ \title Concurrent Filter and Filter-Reduce
+ \ingroup thread
+
+ \brief The <QtConcurrentFilter> header provides concurrent Filter and
+ Filter-Reduce.
+
+ These functions are a part of the \l {Concurrent Programming}{Qt Concurrent} framework.
+
+ The QtConcurrent::filter(), QtConcurrent::filtered() and
+ QtConcurrent::filteredReduced() functions filter items in a sequence such
+ as a QList or a QVector in parallel. QtConcurrent::filter() modifies a
+ sequence in-place, QtConcurrent::filtered() returns a new sequence
+ containing the filtered content, and QtConcurrent::filteredReduced()
+ returns a single result.
+
+ Each of the above functions have a blocking variant that returns the final
+ result instead of a QFuture. You use them in the same way as the
+ asynchronous variants.
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 6
+
+ Note that the result types above are not QFuture objects, but real result
+ types (in this case, QStringList and QSet<QString>).
+
+ \section1 Concurrent Filter
+
+ QtConcurrent::filtered() takes an input sequence and a filter function.
+ This filter function is then called for each item in the sequence, and a
+ new sequence containing the filtered values is returned.
+
+ The filter function must be of the form:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 0
+
+ T must match the type stored in the sequence. The function returns true if
+ the item should be kept, false if it should be discarded.
+
+ This example shows how to keep strings that are all lower-case from a
+ QStringList:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 1
+
+ The results of the filter are made available through QFuture. See the
+ QFuture and QFutureWatcher documentation for more information on how to
+ use QFuture in your applications.
+
+ If you want to modify a sequence in-place, use QtConcurrent::filter():
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 2
+
+ Since the sequence is modified in place, QtConcurrent::filter() does not
+ return any results via QFuture. However, you can still use QFuture and
+ QFutureWatcher to monitor the status of the filter.
+
+ \section1 Concurrent Filter-Reduce
+
+ QtConcurrent::filteredReduced() is similar to QtConcurrent::filtered(),
+ but instead of returing a sequence with the filtered results, the results
+ are combined into a single value using a reduce function.
+
+ The reduce function must be of the form:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 3
+
+ T is the type of the final result, U is the type of items being filtered.
+ Note that the return value and return type of the reduce function are not
+ used.
+
+ Call QtConcurrent::filteredReduced() like this:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 4
+
+ The reduce function will be called once for each result kept by the filter
+ function, and should merge the \e{intermediate} into the \e{result}
+ variable. QtConcurrent::filteredReduced() guarantees that only one thread
+ will call reduce at a time, so using a mutex to lock the result variable
+ is not necessary. The QtConcurrent::ReduceOptions enum provides a way to
+ control the order in which the reduction is done.
+
+ \section1 Additional API Features
+
+ \section2 Using Iterators instead of Sequence
+
+ Each of the above functions has a variant that takes an iterator range
+ instead of a sequence. You use them in the same way as the sequence
+ variants:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 5
+
+
+ \section2 Using Member Functions
+
+ QtConcurrent::filter(), QtConcurrent::filtered(), and
+ QtConcurrent::filteredReduced() accept pointers to member functions.
+ The member function class type must match the type stored in the sequence:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 7
+
+ Note that when using QtConcurrent::filteredReduced(), you can mix the use of
+ normal and member functions freely:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 8
+
+ \section2 Using Function Objects
+
+ QtConcurrent::filter(), QtConcurrent::filtered(), and
+ QtConcurrent::filteredReduced() accept function objects, which can be used to
+ add state to a function call. The result_type typedef must define the
+ result type of the function call operator:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 13
+
+ \section2 Using Bound Function Arguments
+
+ Note that Qt does not provide support for bound functions. This is
+ provided by 3rd party libraries like
+ \l{http://www.boost.org/libs/bind/bind.html}{Boost} or
+ \l{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf}
+ {C++ TR1 Library Extensions}.
+
+ If you want to use a filter function takes more than one argument, you can
+ use boost::bind() or std::tr1::bind() to transform it onto a function that
+ takes one argument.
+
+ As an example, we use QString::contains():
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 9
+
+ QString::contains() takes 2 arguments (including the "this" pointer) and
+ can't be used with QtConcurrent::filtered() directly, because
+ QtConcurrent::filtered() expects a function that takes one argument. To
+ use QString::contains() with QtConcurrent::filtered() we have to provide a
+ value for the \e regexp argument:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 10
+
+ The return value from boost::bind() is a function object (functor) with
+ the following signature:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 11
+
+ This matches what QtConcurrent::filtered() expects, and the complete
+ example becomes:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 12
+*/
+
+/*!
+ \fn QFuture<void> QtConcurrent::filter(Sequence &sequence, FilterFunction filterFunction)
+ \relates <QtConcurrentFilter>
+
+ Calls \a filterFunction once for each item in \a sequence. If
+ \a filterFunction returns true, the item is kept in \a sequence;
+ otherwise, the item is removed from \a sequence.
+*/
+
+/*!
+ \fn QFuture<T> QtConcurrent::filtered(const Sequence &sequence, FilterFunction filterFunction)
+ \relates <QtConcurrentFilter>
+
+ Calls \a filterFunction once for each item in \a sequence and returns a
+ new Sequence of kept items. If \a filterFunction returns true, a copy of
+ the item is put in the new Sequence. Otherwise, the item will \e not
+ appear in the new Sequence.
+*/
+
+/*!
+ \fn QFuture<T> QtConcurrent::filtered(ConstIterator begin, ConstIterator end, FilterFunction filterFunction)
+ \relates <QtConcurrentFilter>
+
+ Calls \a filterFunction once for each item from \a begin to \a end and
+ returns a new Sequence of kept items. If \a filterFunction returns true, a
+ copy of the item is put in the new Sequence. Otherwise, the item will
+ \e not appear in the new Sequence.
+*/
+
+/*!
+ \fn QFuture<T> QtConcurrent::filteredReduced(const Sequence &sequence, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions)
+ \relates <QtConcurrentFilter>
+
+ Calls \a filterFunction once for each item in \a sequence. If
+ \a filterFunction returns true for an item, that item is then passed to
+ \a reduceFunction. In other words, the return value is the result of
+ \a reduceFunction for each item where \a filterFunction returns true.
+
+ Note that while \a filterFunction is called concurrently, only one thread
+ at a time will call \a reduceFunction. The order in which \a reduceFunction
+ is called is undefined if \a reduceOptions is
+ QtConcurrent::UnorderedReduce. If \a reduceOptions is
+ QtConcurrent::OrderedReduce, \a reduceFunction is called in the order of
+ the original sequence.
+*/
+
+/*!
+ \fn QFuture<T> QtConcurrent::filteredReduced(ConstIterator begin, ConstIterator end, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions)
+ \relates <QtConcurrentFilter>
+
+ Calls \a filterFunction once for each item from \a begin to \a end. If
+ \a filterFunction returns true for an item, that item is then passed to
+ \a reduceFunction. In other words, the return value is the result of
+ \a reduceFunction for each item where \a filterFunction returns true.
+
+ Note that while \a filterFunction is called concurrently, only one thread
+ at a time will call \a reduceFunction. The order in which
+ \a reduceFunction is called is undefined if \a reduceOptions is
+ QtConcurrent::UnorderedReduce. If \a reduceOptions is
+ QtConcurrent::OrderedReduce, the \a reduceFunction is called in the order
+ of the original sequence.
+*/
+
+/*!
+ \fn void QtConcurrent::blockingFilter(Sequence &sequence, FilterFunction filterFunction)
+
+ Calls \a filterFunction once for each item in \a sequence. If
+ \a filterFunction returns true, the item is kept in \a sequence;
+ otherwise, the item is removed from \a sequence.
+
+ \note This function will block until all items in the sequence have been processed.
+*/
+
+/*!
+ \fn Sequence QtConcurrent::blockingFiltered(const Sequence &sequence, FilterFunction filterFunction)
+
+ Calls \a filterFunction once for each item in \a sequence and returns a
+ new Sequence of kept items. If \a filterFunction returns true, a copy of
+ the item is put in the new Sequence. Otherwise, the item will \e not
+ appear in the new Sequence.
+
+ \note This function will block until all items in the sequence have been processed.
+
+ \sa filtered()
+*/
+
+/*!
+ \fn Sequence QtConcurrent::blockingFiltered(ConstIterator begin, ConstIterator end, FilterFunction filterFunction)
+
+ Calls \a filterFunction once for each item from \a begin to \a end and
+ returns a new Sequence of kept items. If \a filterFunction returns true, a
+ copy of the item is put in the new Sequence. Otherwise, the item will
+ \e not appear in the new Sequence.
+
+ \note This function will block until the iterator reaches the end of the
+ sequence being processed.
+
+ \sa filtered()
+*/
+
+/*!
+ \fn T QtConcurrent::blockingFilteredReduced(const Sequence &sequence, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions)
+
+ Calls \a filterFunction once for each item in \a sequence. If
+ \a filterFunction returns true for an item, that item is then passed to
+ \a reduceFunction. In other words, the return value is the result of
+ \a reduceFunction for each item where \a filterFunction returns true.
+
+ Note that while \a filterFunction is called concurrently, only one thread
+ at a time will call \a reduceFunction. The order in which \a reduceFunction
+ is called is undefined if \a reduceOptions is
+ QtConcurrent::UnorderedReduce. If \a reduceOptions is
+ QtConcurrent::OrderedReduce, \a reduceFunction is called in the order of
+ the original sequence.
+
+ \note This function will block until all items in the sequence have been processed.
+
+ \sa filteredReduced()
+*/
+
+/*!
+ \fn T QtConcurrent::blockingFilteredReduced(ConstIterator begin, ConstIterator end, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions)
+
+ Calls \a filterFunction once for each item from \a begin to \a end. If
+ \a filterFunction returns true for an item, that item is then passed to
+ \a reduceFunction. In other words, the return value is the result of
+ \a reduceFunction for each item where \a filterFunction returns true.
+
+ Note that while \a filterFunction is called concurrently, only one thread
+ at a time will call \a reduceFunction. The order in which
+ \a reduceFunction is called is undefined if \a reduceOptions is
+ QtConcurrent::UnorderedReduce. If \a reduceOptions is
+ QtConcurrent::OrderedReduce, the \a reduceFunction is called in the order
+ of the original sequence.
+
+ \note This function will block until the iterator reaches the end of the
+ sequence being processed.
+
+ \sa filteredReduced()
+*/
diff --git a/src/concurrent/qtconcurrentfilter.h b/src/concurrent/qtconcurrentfilter.h
new file mode 100644
index 0000000000..1de8d230b1
--- /dev/null
+++ b/src/concurrent/qtconcurrentfilter.h
@@ -0,0 +1,269 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QTCONCURRENT_FILTER_H
+#define QTCONCURRENT_FILTER_H
+
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_CONCURRENT
+
+#include <QtConcurrent/qtconcurrentfilterkernel.h>
+#include <QtConcurrent/qtconcurrentfunctionwrappers.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+#ifdef qdoc
+
+namespace QtConcurrent {
+
+ QFuture<void> filter(Sequence &sequence, FilterFunction filterFunction);
+
+ template <typename T>
+ QFuture<T> filtered(const Sequence &sequence, FilterFunction filterFunction);
+ template <typename T>
+ QFuture<T> filtered(ConstIterator begin, ConstIterator end, FilterFunction filterFunction);
+
+ template <typename T>
+ QFuture<T> filteredReduced(const Sequence &sequence,
+ FilterFunction filterFunction,
+ ReduceFunction reduceFunction,
+ QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce);
+ template <typename T>
+ QFuture<T> filteredReduced(ConstIterator begin,
+ ConstIterator end,
+ FilterFunction filterFunction,
+ ReduceFunction reduceFunction,
+ QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce);
+
+ void blockingFilter(Sequence &sequence, FilterFunction filterFunction);
+
+ template <typename Sequence>
+ Sequence blockingFiltered(const Sequence &sequence, FilterFunction filterFunction);
+ template <typename Sequence>
+ Sequence blockingFiltered(ConstIterator begin, ConstIterator end, FilterFunction filterFunction);
+
+ template <typename T>
+ T blockingFilteredReduced(const Sequence &sequence,
+ FilterFunction filterFunction,
+ ReduceFunction reduceFunction,
+ QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce);
+ template <typename T>
+ T blockingFilteredReduced(ConstIterator begin,
+ ConstIterator end,
+ FilterFunction filterFunction,
+ ReduceFunction reduceFunction,
+ QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce);
+
+} // namespace QtConcurrent
+
+#else
+
+namespace QtConcurrent {
+
+template <typename Sequence, typename KeepFunctor, typename ReduceFunctor>
+ThreadEngineStarter<void> filterInternal(Sequence &sequence, KeepFunctor keep, ReduceFunctor reduce)
+{
+ typedef typename Sequence::const_iterator Iterator;
+ typedef FilterKernel<Sequence, KeepFunctor, ReduceFunctor> KernelType;
+ return startThreadEngine(new KernelType(sequence, keep, reduce));
+}
+
+// filter() on sequences
+template <typename Sequence, typename KeepFunctor>
+QFuture<void> filter(Sequence &sequence, KeepFunctor keep)
+{
+ return filterInternal(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::PushBackWrapper());
+}
+
+// filteredReduced() on sequences
+template <typename ResultType, typename Sequence, typename KeepFunctor, typename ReduceFunctor>
+QFuture<ResultType> filteredReduced(const Sequence &sequence,
+ KeepFunctor keep,
+ ReduceFunctor reduce,
+ ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
+{
+ return startFilteredReduced<ResultType>(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::createFunctionWrapper(reduce), options);
+}
+
+template <typename Sequence, typename KeepFunctor, typename ReduceFunctor>
+QFuture<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType> filteredReduced(const Sequence &sequence,
+ KeepFunctor keep,
+ ReduceFunctor reduce,
+ ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
+{
+ return startFilteredReduced<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType>
+ (sequence,
+ QtPrivate::createFunctionWrapper(keep),
+ QtPrivate::createFunctionWrapper(reduce),
+ options);
+}
+
+// filteredReduced() on iterators
+template <typename ResultType, typename Iterator, typename KeepFunctor, typename ReduceFunctor>
+QFuture<ResultType> filteredReduced(Iterator begin,
+ Iterator end,
+ KeepFunctor keep,
+ ReduceFunctor reduce,
+ ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
+{
+ return startFilteredReduced<ResultType>(begin, end, QtPrivate::createFunctionWrapper(keep), QtPrivate::createFunctionWrapper(reduce), options);
+}
+
+template <typename Iterator, typename KeepFunctor, typename ReduceFunctor>
+QFuture<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType> filteredReduced(Iterator begin,
+ Iterator end,
+ KeepFunctor keep,
+ ReduceFunctor reduce,
+ ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
+{
+ return startFilteredReduced<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType>
+ (begin, end,
+ QtPrivate::createFunctionWrapper(keep),
+ QtPrivate::createFunctionWrapper(reduce),
+ options);
+}
+
+// filtered() on sequences
+template <typename Sequence, typename KeepFunctor>
+QFuture<typename Sequence::value_type> filtered(const Sequence &sequence, KeepFunctor keep)
+{
+ return startFiltered(sequence, QtPrivate::createFunctionWrapper(keep));
+}
+
+// filtered() on iterators
+template <typename Iterator, typename KeepFunctor>
+QFuture<typename qValueType<Iterator>::value_type> filtered(Iterator begin, Iterator end, KeepFunctor keep)
+{
+ return startFiltered(begin, end, QtPrivate::createFunctionWrapper(keep));
+}
+
+// blocking filter() on sequences
+template <typename Sequence, typename KeepFunctor>
+void blockingFilter(Sequence &sequence, KeepFunctor keep)
+{
+ filterInternal(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::PushBackWrapper()).startBlocking();
+}
+
+// blocking filteredReduced() on sequences
+template <typename ResultType, typename Sequence, typename KeepFunctor, typename ReduceFunctor>
+ResultType blockingFilteredReduced(const Sequence &sequence,
+ KeepFunctor keep,
+ ReduceFunctor reduce,
+ ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
+{
+ return startFilteredReduced<ResultType>(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::createFunctionWrapper(reduce), options)
+ .startBlocking();
+}
+
+template <typename Sequence, typename KeepFunctor, typename ReduceFunctor>
+typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType blockingFilteredReduced(const Sequence &sequence,
+ KeepFunctor keep,
+ ReduceFunctor reduce,
+ ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
+{
+ return blockingFilteredReduced<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType>
+ (sequence,
+ QtPrivate::createFunctionWrapper(keep),
+ QtPrivate::createFunctionWrapper(reduce),
+ options);
+}
+
+// blocking filteredReduced() on iterators
+template <typename ResultType, typename Iterator, typename KeepFunctor, typename ReduceFunctor>
+ResultType blockingFilteredReduced(Iterator begin,
+ Iterator end,
+ KeepFunctor keep,
+ ReduceFunctor reduce,
+ ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
+{
+ return startFilteredReduced<ResultType>
+ (begin, end,
+ QtPrivate::createFunctionWrapper(keep),
+ QtPrivate::createFunctionWrapper(reduce),
+ options)
+ .startBlocking();
+}
+
+template <typename Iterator, typename KeepFunctor, typename ReduceFunctor>
+typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType blockingFilteredReduced(Iterator begin,
+ Iterator end,
+ KeepFunctor keep,
+ ReduceFunctor reduce,
+ ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
+{
+ return startFilteredReduced<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType>
+ (begin, end,
+ QtPrivate::createFunctionWrapper(keep),
+ QtPrivate::createFunctionWrapper(reduce),
+ options)
+ .startBlocking();
+}
+
+// blocking filtered() on sequences
+template <typename Sequence, typename KeepFunctor>
+Sequence blockingFiltered(const Sequence &sequence, KeepFunctor keep)
+{
+ return startFilteredReduced<Sequence>(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::PushBackWrapper(), OrderedReduce).startBlocking();
+}
+
+// blocking filtered() on iterators
+template <typename OutputSequence, typename Iterator, typename KeepFunctor>
+OutputSequence blockingFiltered(Iterator begin, Iterator end, KeepFunctor keep)
+{
+ return startFilteredReduced<OutputSequence>(begin, end,
+ QtPrivate::createFunctionWrapper(keep),
+ QtPrivate::PushBackWrapper(),
+ OrderedReduce).startBlocking();
+}
+
+} // namespace QtConcurrent
+
+#endif // qdoc
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif
diff --git a/src/concurrent/qtconcurrentfilterkernel.h b/src/concurrent/qtconcurrentfilterkernel.h
new file mode 100644
index 0000000000..71112cb5a3
--- /dev/null
+++ b/src/concurrent/qtconcurrentfilterkernel.h
@@ -0,0 +1,350 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QTCONCURRENT_FILTERKERNEL_H
+#define QTCONCURRENT_FILTERKERNEL_H
+
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_CONCURRENT
+
+#include <QtConcurrent/qtconcurrentiteratekernel.h>
+#include <QtConcurrent/qtconcurrentmapkernel.h>
+#include <QtConcurrent/qtconcurrentreducekernel.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+#ifndef qdoc
+
+namespace QtConcurrent {
+
+template <typename T>
+struct qValueType
+{
+ typedef typename T::value_type value_type;
+};
+
+template <typename T>
+struct qValueType<const T*>
+{
+ typedef T value_type;
+};
+
+template <typename T>
+struct qValueType<T*>
+{
+ typedef T value_type;
+};
+
+// Implementation of filter
+template <typename Sequence, typename KeepFunctor, typename ReduceFunctor>
+class FilterKernel : public IterateKernel<typename Sequence::const_iterator, void>
+{
+ typedef ReduceKernel<ReduceFunctor, Sequence, typename Sequence::value_type> Reducer;
+ typedef IterateKernel<typename Sequence::const_iterator, void> IterateKernelType;
+ typedef typename ReduceFunctor::result_type T;
+
+ Sequence reducedResult;
+ Sequence &sequence;
+ KeepFunctor keep;
+ ReduceFunctor reduce;
+ Reducer reducer;
+
+public:
+ FilterKernel(Sequence &_sequence, KeepFunctor _keep, ReduceFunctor _reduce)
+ : IterateKernelType(const_cast<const Sequence &>(_sequence).begin(), const_cast<const Sequence &>(_sequence).end()), reducedResult(),
+ sequence(_sequence),
+ keep(_keep),
+ reduce(_reduce),
+ reducer(OrderedReduce)
+ { }
+
+ bool runIteration(typename Sequence::const_iterator it, int index, T *)
+ {
+ IntermediateResults<typename Sequence::value_type> results;
+ results.begin = index;
+ results.end = index + 1;
+
+ if (keep(*it))
+ results.vector.append(*it);
+
+ reducer.runReduce(reduce, reducedResult, results);
+ return false;
+ }
+
+ bool runIterations(typename Sequence::const_iterator sequenceBeginIterator, int begin, int end, T *)
+ {
+ IntermediateResults<typename Sequence::value_type> results;
+ results.begin = begin;
+ results.end = end;
+ results.vector.reserve(end - begin);
+
+
+ typename Sequence::const_iterator it = sequenceBeginIterator;
+ advance(it, begin);
+ for (int i = begin; i < end; ++i) {
+ if (keep(*it))
+ results.vector.append(*it);
+ advance(it, 1);
+ }
+
+ reducer.runReduce(reduce, reducedResult, results);
+ return false;
+ }
+
+ void finish()
+ {
+ reducer.finish(reduce, reducedResult);
+ sequence = reducedResult;
+ }
+
+ inline bool shouldThrottleThread()
+ {
+ return IterateKernelType::shouldThrottleThread() || reducer.shouldThrottle();
+ }
+
+ inline bool shouldStartThread()
+ {
+ return IterateKernelType::shouldStartThread() && reducer.shouldStartThread();
+ }
+
+ typedef void ReturnType;
+ typedef void ResultType;
+};
+
+// Implementation of filter-reduce
+template <typename ReducedResultType,
+ typename Iterator,
+ typename KeepFunctor,
+ typename ReduceFunctor,
+ typename Reducer = ReduceKernel<ReduceFunctor,
+ ReducedResultType,
+ typename qValueType<Iterator>::value_type> >
+class FilteredReducedKernel : public IterateKernel<Iterator, ReducedResultType>
+{
+ ReducedResultType reducedResult;
+ KeepFunctor keep;
+ ReduceFunctor reduce;
+ Reducer reducer;
+ typedef IterateKernel<Iterator, ReducedResultType> IterateKernelType;
+
+public:
+ FilteredReducedKernel(Iterator begin,
+ Iterator end,
+ KeepFunctor _keep,
+ ReduceFunctor _reduce,
+ ReduceOptions reduceOption)
+ : IterateKernelType(begin, end), reducedResult(), keep(_keep), reduce(_reduce), reducer(reduceOption)
+ { }
+
+#if 0
+ FilteredReducedKernel(ReducedResultType initialValue,
+ KeepFunctor keep,
+ ReduceFunctor reduce,
+ ReduceOption reduceOption)
+ : reducedResult(initialValue), keep(keep), reduce(reduce), reducer(reduceOption)
+ { }
+#endif
+
+ bool runIteration(Iterator it, int index, ReducedResultType *)
+ {
+ IntermediateResults<typename qValueType<Iterator>::value_type> results;
+ results.begin = index;
+ results.end = index + 1;
+
+ if (keep(*it))
+ results.vector.append(*it);
+
+ reducer.runReduce(reduce, reducedResult, results);
+ return false;
+ }
+
+ bool runIterations(Iterator sequenceBeginIterator, int begin, int end, ReducedResultType *)
+ {
+ IntermediateResults<typename qValueType<Iterator>::value_type> results;
+ results.begin = begin;
+ results.end = end;
+ results.vector.reserve(end - begin);
+
+ Iterator it = sequenceBeginIterator;
+ advance(it, begin);
+ for (int i = begin; i < end; ++i) {
+ if (keep(*it))
+ results.vector.append(*it);
+ advance(it, 1);
+ }
+
+ reducer.runReduce(reduce, reducedResult, results);
+ return false;
+ }
+
+ void finish()
+ {
+ reducer.finish(reduce, reducedResult);
+ }
+
+ inline bool shouldThrottleThread()
+ {
+ return IterateKernelType::shouldThrottleThread() || reducer.shouldThrottle();
+ }
+
+ inline bool shouldStartThread()
+ {
+ return IterateKernelType::shouldStartThread() && reducer.shouldStartThread();
+ }
+
+ typedef ReducedResultType ReturnType;
+ typedef ReducedResultType ResultType;
+ ReducedResultType *result()
+ {
+ return &reducedResult;
+ }
+};
+
+// Implementation of filter that reports individual results via QFutureInterface
+template <typename Iterator, typename KeepFunctor>
+class FilteredEachKernel : public IterateKernel<Iterator, typename qValueType<Iterator>::value_type>
+{
+ typedef typename qValueType<Iterator>::value_type T;
+ typedef IterateKernel<Iterator, T> IterateKernelType;
+
+ KeepFunctor keep;
+
+public:
+ typedef T ReturnType;
+ typedef T ResultType;
+
+ FilteredEachKernel(Iterator begin, Iterator end, KeepFunctor _keep)
+ : IterateKernelType(begin, end), keep(_keep)
+ { }
+
+ void start()
+ {
+ if (this->futureInterface)
+ this->futureInterface->setFilterMode(true);
+ IterateKernelType::start();
+ }
+
+ bool runIteration(Iterator it, int index, T *)
+ {
+ if (keep(*it))
+ this->reportResult(&(*it), index);
+ else
+ this->reportResult(0, index);
+ return false;
+ }
+
+ bool runIterations(Iterator sequenceBeginIterator, int begin, int end, T *)
+ {
+ const int count = end - begin;
+ IntermediateResults<typename qValueType<Iterator>::value_type> results;
+ results.begin = begin;
+ results.end = end;
+ results.vector.reserve(count);
+
+ Iterator it = sequenceBeginIterator;
+ advance(it, begin);
+ for (int i = begin; i < end; ++i) {
+ if (keep(*it))
+ results.vector.append(*it);
+ advance(it, 1);
+ }
+
+ this->reportResults(results.vector, begin, count);
+ return false;
+ }
+};
+
+template <typename Iterator, typename KeepFunctor>
+inline
+ThreadEngineStarter<typename qValueType<Iterator>::value_type>
+startFiltered(Iterator begin, Iterator end, KeepFunctor functor)
+{
+ return startThreadEngine(new FilteredEachKernel<Iterator, KeepFunctor>(begin, end, functor));
+}
+
+template <typename Sequence, typename KeepFunctor>
+inline ThreadEngineStarter<typename Sequence::value_type>
+startFiltered(const Sequence &sequence, KeepFunctor functor)
+{
+ typedef SequenceHolder1<Sequence,
+ FilteredEachKernel<typename Sequence::const_iterator, KeepFunctor>,
+ KeepFunctor>
+ SequenceHolderType;
+ return startThreadEngine(new SequenceHolderType(sequence, functor));
+}
+
+template <typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor>
+inline ThreadEngineStarter<ResultType> startFilteredReduced(const Sequence & sequence,
+ MapFunctor mapFunctor, ReduceFunctor reduceFunctor,
+ ReduceOptions options)
+{
+ typedef typename Sequence::const_iterator Iterator;
+ typedef ReduceKernel<ReduceFunctor, ResultType, typename qValueType<Iterator>::value_type > Reducer;
+ typedef FilteredReducedKernel<ResultType, Iterator, MapFunctor, ReduceFunctor, Reducer> FilteredReduceType;
+ typedef SequenceHolder2<Sequence, FilteredReduceType, MapFunctor, ReduceFunctor> SequenceHolderType;
+ return startThreadEngine(new SequenceHolderType(sequence, mapFunctor, reduceFunctor, options));
+}
+
+
+template <typename ResultType, typename Iterator, typename MapFunctor, typename ReduceFunctor>
+inline ThreadEngineStarter<ResultType> startFilteredReduced(Iterator begin, Iterator end,
+ MapFunctor mapFunctor, ReduceFunctor reduceFunctor,
+ ReduceOptions options)
+{
+ typedef ReduceKernel<ReduceFunctor, ResultType, typename qValueType<Iterator>::value_type> Reducer;
+ typedef FilteredReducedKernel<ResultType, Iterator, MapFunctor, ReduceFunctor, Reducer> FilteredReduceType;
+ return startThreadEngine(new FilteredReduceType(begin, end, mapFunctor, reduceFunctor, options));
+}
+
+
+} // namespace QtConcurrent
+
+#endif // qdoc
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif
diff --git a/src/concurrent/qtconcurrentfunctionwrappers.h b/src/concurrent/qtconcurrentfunctionwrappers.h
new file mode 100644
index 0000000000..9b86b73f6d
--- /dev/null
+++ b/src/concurrent/qtconcurrentfunctionwrappers.h
@@ -0,0 +1,303 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QTCONCURRENT_FUNCTIONWRAPPERS_H
+#define QTCONCURRENT_FUNCTIONWRAPPERS_H
+
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_CONCURRENT
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+#ifndef qdoc
+
+namespace QtConcurrent {
+
+template <typename T>
+class FunctionWrapper0
+{
+public:
+ typedef T (*FunctionPointerType)();
+ typedef T result_type;
+ inline FunctionWrapper0(FunctionPointerType _functionPointer)
+ :functionPointer(_functionPointer) { }
+
+ inline T operator()()
+ {
+ return functionPointer();
+ }
+private:
+ FunctionPointerType functionPointer;
+};
+
+template <typename T, typename U>
+class FunctionWrapper1
+{
+public:
+ typedef T (*FunctionPointerType)(U u);
+ typedef T result_type;
+ inline FunctionWrapper1(FunctionPointerType _functionPointer)
+ :functionPointer(_functionPointer) { }
+
+ inline T operator()(U u)
+ {
+ return functionPointer(u);
+ }
+
+private:
+ FunctionPointerType functionPointer;
+};
+
+template <typename T, typename U, typename V>
+class FunctionWrapper2
+{
+public:
+ typedef T (*FunctionPointerType)(U u, V v);
+ typedef T result_type;
+ inline FunctionWrapper2(FunctionPointerType _functionPointer)
+ :functionPointer(_functionPointer) { }
+
+ inline T operator()(U u, V v)
+ {
+ return functionPointer(u, v);
+ }
+private:
+ FunctionPointerType functionPointer;
+};
+
+template <typename T, typename C>
+class MemberFunctionWrapper
+{
+public:
+ typedef T (C::*FunctionPointerType)();
+ typedef T result_type;
+ inline MemberFunctionWrapper(FunctionPointerType _functionPointer)
+ :functionPointer(_functionPointer) { }
+
+ inline T operator()(C &c)
+ {
+ return (c.*functionPointer)();
+ }
+private:
+ FunctionPointerType functionPointer;
+};
+
+template <typename T, typename C, typename U>
+class MemberFunctionWrapper1
+{
+public:
+ typedef T (C::*FunctionPointerType)(U);
+ typedef T result_type;
+
+ inline MemberFunctionWrapper1(FunctionPointerType _functionPointer)
+ : functionPointer(_functionPointer)
+ { }
+
+ inline T operator()(C &c, U u)
+ {
+ return (c.*functionPointer)(u);
+ }
+
+private:
+ FunctionPointerType functionPointer;
+};
+
+template <typename T, typename C>
+class ConstMemberFunctionWrapper
+{
+public:
+ typedef T (C::*FunctionPointerType)() const;
+ typedef T result_type;
+ inline ConstMemberFunctionWrapper(FunctionPointerType _functionPointer)
+ :functionPointer(_functionPointer) { }
+
+ inline T operator()(const C &c) const
+ {
+ return (c.*functionPointer)();
+ }
+private:
+ FunctionPointerType functionPointer;
+};
+
+} // namespace QtConcurrent.
+
+namespace QtPrivate {
+
+template <typename T>
+const T& createFunctionWrapper(const T& t)
+{
+ return t;
+}
+
+template <typename T, typename U>
+QtConcurrent::FunctionWrapper1<T, U> createFunctionWrapper(T (*func)(U))
+{
+ return QtConcurrent::FunctionWrapper1<T, U>(func);
+}
+
+template <typename T, typename C>
+QtConcurrent::MemberFunctionWrapper<T, C> createFunctionWrapper(T (C::*func)())
+{
+ return QtConcurrent::MemberFunctionWrapper<T, C>(func);
+}
+
+template <typename T, typename C, typename U>
+QtConcurrent::MemberFunctionWrapper1<T, C, U> createFunctionWrapper(T (C::*func)(U))
+{
+ return QtConcurrent::MemberFunctionWrapper1<T, C, U>(func);
+}
+
+template <typename T, typename C>
+QtConcurrent::ConstMemberFunctionWrapper<T, C> createFunctionWrapper(T (C::*func)() const)
+{
+ return QtConcurrent::ConstMemberFunctionWrapper<T, C>(func);
+}
+
+struct PushBackWrapper
+{
+ typedef void result_type;
+
+ template <class C, class U>
+ inline void operator()(C &c, const U &u) const
+ {
+ return c.push_back(u);
+ }
+
+#ifdef Q_COMPILER_RVALUE_REFS
+ template <class C, class U>
+ inline void operator()(C &c, U &&u) const
+ {
+ return c.push_back(u);
+ }
+#endif
+};
+
+template <typename Functor, bool foo = HasResultType<Functor>::Value>
+struct LazyResultType { typedef typename Functor::result_type Type; };
+template <typename Functor>
+struct LazyResultType<Functor, false> { typedef void Type; };
+
+template <class T>
+struct ReduceResultType;
+
+template <class U, class V>
+struct ReduceResultType<void(*)(U&,V)>
+{
+ typedef U ResultType;
+};
+
+template <class T, class C, class U>
+struct ReduceResultType<T(C::*)(U)>
+{
+ typedef C ResultType;
+};
+
+template <class InputSequence, class MapFunctor>
+struct MapResultType
+{
+ typedef typename LazyResultType<MapFunctor>::Type ResultType;
+};
+
+template <class U, class V>
+struct MapResultType<void, U (*)(V)>
+{
+ typedef U ResultType;
+};
+
+template <class T, class C>
+struct MapResultType<void, T(C::*)() const>
+{
+ typedef T ResultType;
+};
+
+#ifndef QT_NO_TEMPLATE_TEMPLATE_PARAMETERS
+
+template <template <typename> class InputSequence, typename MapFunctor, typename T>
+struct MapResultType<InputSequence<T>, MapFunctor>
+{
+ typedef InputSequence<typename LazyResultType<MapFunctor>::Type> ResultType;
+};
+
+template <template <typename> class InputSequence, class T, class U, class V>
+struct MapResultType<InputSequence<T>, U (*)(V)>
+{
+ typedef InputSequence<U> ResultType;
+};
+
+template <template <typename> class InputSequence, class T, class U, class C>
+struct MapResultType<InputSequence<T>, U(C::*)() const>
+{
+ typedef InputSequence<U> ResultType;
+};
+
+#endif // QT_NO_TEMPLATE_TEMPLATE_PARAMETER
+
+template <class MapFunctor>
+struct MapResultType<QStringList, MapFunctor>
+{
+ typedef QList<typename LazyResultType<MapFunctor>::Type> ResultType;
+};
+
+template <class U, class V>
+struct MapResultType<QStringList, U (*)(V)>
+{
+ typedef QList<U> ResultType;
+};
+
+template <class U, class C>
+struct MapResultType<QStringList, U(C::*)() const>
+{
+ typedef QList<U> ResultType;
+};
+
+} // namespace QtPrivate.
+
+#endif //qdoc
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif
diff --git a/src/concurrent/qtconcurrentiteratekernel.cpp b/src/concurrent/qtconcurrentiteratekernel.cpp
new file mode 100644
index 0000000000..b695805135
--- /dev/null
+++ b/src/concurrent/qtconcurrentiteratekernel.cpp
@@ -0,0 +1,194 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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 "qtconcurrentiteratekernel.h"
+
+#if defined(Q_OS_MAC)
+#include <mach/mach.h>
+#include <mach/mach_time.h>
+#include <unistd.h>
+#elif defined(Q_OS_UNIX)
+#if defined(Q_OS_HURD)
+#include <sys/time.h>
+#endif
+#include <time.h>
+#include <unistd.h>
+#elif defined(Q_OS_WIN)
+#include <qt_windows.h>
+#endif
+
+#include "private/qfunctions_p.h"
+
+
+#ifndef QT_NO_CONCURRENT
+
+QT_BEGIN_NAMESPACE
+
+enum {
+ TargetRatio = 100,
+ MedianSize = 7
+};
+
+#if defined(Q_OS_MAC)
+
+static qint64 getticks()
+{
+ return mach_absolute_time();
+}
+
+#elif defined(Q_OS_UNIX)
+
+
+static qint64 getticks()
+{
+#if defined(_POSIX_TIMERS) && (_POSIX_TIMERS > 0)
+ clockid_t clockId;
+
+#ifndef _POSIX_THREAD_CPUTIME
+ clockId = CLOCK_REALTIME;
+#elif (_POSIX_THREAD_CPUTIME-0 <= 0)
+ // if we don't have CLOCK_THREAD_CPUTIME_ID, we have to just use elapsed realtime instead
+ clockId = CLOCK_REALTIME;
+
+# if (_POSIX_THREAD_CPUTIME-0 == 0)
+ // detect availablility of CLOCK_THREAD_CPUTIME_ID
+ static long useThreadCpuTime = -2;
+ if (useThreadCpuTime == -2) {
+ // sysconf() will return either -1 or _POSIX_VERSION (don't care about thread races here)
+ useThreadCpuTime = sysconf(_SC_THREAD_CPUTIME);
+ }
+ if (useThreadCpuTime != -1)
+ clockId = CLOCK_THREAD_CPUTIME_ID;
+# endif
+#else
+ clockId = CLOCK_THREAD_CPUTIME_ID;
+#endif
+
+ struct timespec ts;
+ if (clock_gettime(clockId, &ts) == -1)
+ return 0;
+ return (ts.tv_sec * 1000000000) + ts.tv_nsec;
+#else
+
+ // no clock_gettime(), fall back to wall time
+ struct timeval tv;
+ gettimeofday(&tv, 0);
+ return (tv.tv_sec * 1000000) + tv.tv_usec;
+#endif
+}
+
+#elif defined(Q_OS_WIN)
+
+static qint64 getticks()
+{
+ LARGE_INTEGER x;
+ if (!QueryPerformanceCounter(&x))
+ return 0;
+ return x.QuadPart;
+}
+
+#endif
+
+static double elapsed(qint64 after, qint64 before)
+{
+ return double(after - before);
+}
+
+namespace QtConcurrent {
+
+/*! \internal
+
+*/
+BlockSizeManager::BlockSizeManager(int iterationCount)
+: maxBlockSize(iterationCount / (QThreadPool::globalInstance()->maxThreadCount() * 2)),
+ beforeUser(0), afterUser(0),
+ controlPartElapsed(MedianSize), userPartElapsed(MedianSize),
+ m_blockSize(1)
+{ }
+
+// Records the time before user code.
+void BlockSizeManager::timeBeforeUser()
+{
+ if (blockSizeMaxed())
+ return;
+
+ beforeUser = getticks();
+ controlPartElapsed.addValue(elapsed(beforeUser, afterUser));
+}
+
+ // Records the time after user code and adjust the block size if we are spending
+ // to much time in the for control code compared with the user code.
+void BlockSizeManager::timeAfterUser()
+{
+ if (blockSizeMaxed())
+ return;
+
+ afterUser = getticks();
+ userPartElapsed.addValue(elapsed(afterUser, beforeUser));
+
+ if (controlPartElapsed.isMedianValid() == false)
+ return;
+
+ if (controlPartElapsed.median() * TargetRatio < userPartElapsed.median())
+ return;
+
+ m_blockSize = qMin(m_blockSize * 2, maxBlockSize);
+
+#ifdef QTCONCURRENT_FOR_DEBUG
+ qDebug() << QThread::currentThread() << "adjusting block size" << controlPartElapsed.median() << userPartElapsed.median() << m_blockSize;
+#endif
+
+ // Reset the medians after adjusting the block size so we get
+ // new measurements with the new block size.
+ controlPartElapsed.reset();
+ userPartElapsed.reset();
+}
+
+int BlockSizeManager::blockSize()
+{
+ return m_blockSize;
+}
+
+} // namespace QtConcurrent
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_CONCURRENT
diff --git a/src/concurrent/qtconcurrentiteratekernel.h b/src/concurrent/qtconcurrentiteratekernel.h
new file mode 100644
index 0000000000..a28bc31a64
--- /dev/null
+++ b/src/concurrent/qtconcurrentiteratekernel.h
@@ -0,0 +1,339 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QTCONCURRENT_ITERATEKERNEL_H
+#define QTCONCURRENT_ITERATEKERNEL_H
+
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_CONCURRENT
+
+#include <QtCore/qatomic.h>
+#include <QtConcurrent/qtconcurrentmedian.h>
+#include <QtConcurrent/qtconcurrentthreadengine.h>
+
+#ifndef QT_NO_STL
+# include <iterator>
+#endif
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+#ifndef qdoc
+
+namespace QtConcurrent {
+
+#ifndef QT_NO_STL
+ using std::advance;
+#else
+ template <typename It, typename T>
+ void advance(It &it, T value)
+ {
+ it+=value;
+ }
+#endif
+
+/*
+ The BlockSizeManager class manages how many iterations a thread should
+ reserve and process at a time. This is done by measuring the time spent
+ in the user code versus the control part code, and then increasing
+ the block size if the ratio between them is to small. The block size
+ management is done on the basis of the median of several timing measuremens,
+ and it is done induvidualy for each thread.
+*/
+class Q_CORE_EXPORT BlockSizeManager
+{
+public:
+ BlockSizeManager(int iterationCount);
+ void timeBeforeUser();
+ void timeAfterUser();
+ int blockSize();
+private:
+ inline bool blockSizeMaxed()
+ {
+ return (m_blockSize >= maxBlockSize);
+ }
+
+ const int maxBlockSize;
+ qint64 beforeUser;
+ qint64 afterUser;
+ Median<double> controlPartElapsed;
+ Median<double> userPartElapsed;
+ int m_blockSize;
+};
+
+template <typename T>
+class ResultReporter
+{
+public:
+ ResultReporter(ThreadEngine<T> *_threadEngine)
+ :threadEngine(_threadEngine)
+ {
+
+ }
+
+ void reserveSpace(int resultCount)
+ {
+ currentResultCount = resultCount;
+ vector.resize(qMax(resultCount, vector.count()));
+ }
+
+ void reportResults(int begin)
+ {
+ const int useVectorThreshold = 4; // Tunable parameter.
+ if (currentResultCount > useVectorThreshold) {
+ vector.resize(currentResultCount);
+ threadEngine->reportResults(vector, begin);
+ } else {
+ for (int i = 0; i < currentResultCount; ++i)
+ threadEngine->reportResult(&vector.at(i), begin + i);
+ }
+ }
+
+ inline T * getPointer()
+ {
+ return vector.data();
+ }
+
+ int currentResultCount;
+ ThreadEngine<T> *threadEngine;
+ QVector<T> vector;
+};
+
+template <>
+class ResultReporter<void>
+{
+public:
+ inline ResultReporter(ThreadEngine<void> *) { }
+ inline void reserveSpace(int) { }
+ inline void reportResults(int) { }
+ inline void * getPointer() { return 0; }
+};
+
+#ifndef QT_NO_STL
+inline bool selectIteration(std::bidirectional_iterator_tag)
+{
+ return false; // while
+}
+
+inline bool selectIteration(std::forward_iterator_tag)
+{
+ return false; // while
+}
+
+inline bool selectIteration(std::random_access_iterator_tag)
+{
+ return true; // for
+}
+#else
+// no stl support, always use while iteration
+template <typename T>
+inline bool selectIteration(T)
+{
+ return false; // while
+}
+#endif
+
+template <typename Iterator, typename T>
+class IterateKernel : public ThreadEngine<T>
+{
+public:
+ typedef T ResultType;
+
+ IterateKernel(Iterator _begin, Iterator _end)
+#if defined (QT_NO_STL)
+ : begin(_begin), end(_end), current(_begin), currentIndex(0),
+ forIteration(false), progressReportingEnabled(true)
+#else
+ : begin(_begin), end(_end), current(_begin), currentIndex(0),
+ forIteration(selectIteration(typename std::iterator_traits<Iterator>::iterator_category())), progressReportingEnabled(true)
+#endif
+ {
+#if defined (QT_NO_STL)
+ iterationCount = 0;
+#else
+ iterationCount = forIteration ? std::distance(_begin, _end) : 0;
+
+#endif
+ }
+
+ virtual ~IterateKernel() { }
+
+ virtual bool runIteration(Iterator it, int index , T *result)
+ { Q_UNUSED(it); Q_UNUSED(index); Q_UNUSED(result); return false; }
+ virtual bool runIterations(Iterator _begin, int beginIndex, int endIndex, T *results)
+ { Q_UNUSED(_begin); Q_UNUSED(beginIndex); Q_UNUSED(endIndex); Q_UNUSED(results); return false; }
+
+ void start()
+ {
+ progressReportingEnabled = this->isProgressReportingEnabled();
+ if (progressReportingEnabled && iterationCount > 0)
+ this->setProgressRange(0, iterationCount);
+ }
+
+ bool shouldStartThread()
+ {
+ if (forIteration)
+ return (currentIndex.load() < iterationCount) && !this->shouldThrottleThread();
+ else // whileIteration
+ return (iteratorThreads.load() == 0);
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ if (forIteration)
+ return this->forThreadFunction();
+ else // whileIteration
+ return this->whileThreadFunction();
+ }
+
+ ThreadFunctionResult forThreadFunction()
+ {
+ BlockSizeManager blockSizeManager(iterationCount);
+ ResultReporter<T> resultReporter(this);
+
+ for(;;) {
+ if (this->isCanceled())
+ break;
+
+ const int currentBlockSize = blockSizeManager.blockSize();
+
+ if (currentIndex.load() >= iterationCount)
+ break;
+
+ // Atomically reserve a block of iterationCount for this thread.
+ const int beginIndex = currentIndex.fetchAndAddRelease(currentBlockSize);
+ const int endIndex = qMin(beginIndex + currentBlockSize, iterationCount);
+
+ if (beginIndex >= endIndex) {
+ // No more work
+ break;
+ }
+
+ this->waitForResume(); // (only waits if the qfuture is paused.)
+
+ if (shouldStartThread())
+ this->startThread();
+
+ const int finalBlockSize = endIndex - beginIndex; // block size adjusted for possible end-of-range
+ resultReporter.reserveSpace(finalBlockSize);
+
+ // Call user code with the current iteration range.
+ blockSizeManager.timeBeforeUser();
+ const bool resultsAvailable = this->runIterations(begin, beginIndex, endIndex, resultReporter.getPointer());
+ blockSizeManager.timeAfterUser();
+
+ if (resultsAvailable)
+ resultReporter.reportResults(beginIndex);
+
+ // Report progress if progress reporting enabled.
+ if (progressReportingEnabled) {
+ completed.fetchAndAddAcquire(finalBlockSize);
+ this->setProgressValue(this->completed.load());
+ }
+
+ if (this->shouldThrottleThread())
+ return ThrottleThread;
+ }
+ return ThreadFinished;
+ }
+
+ ThreadFunctionResult whileThreadFunction()
+ {
+ if (iteratorThreads.testAndSetAcquire(0, 1) == false)
+ return ThreadFinished;
+
+ ResultReporter<T> resultReporter(this);
+ resultReporter.reserveSpace(1);
+
+ while (current != end) {
+ // The following two lines breaks support for input iterators according to
+ // the sgi docs: dereferencing prev after calling ++current is not allowed
+ // on input iterators. (prev is dereferenced inside user.runIteration())
+ Iterator prev = current;
+ ++current;
+ int index = currentIndex.fetchAndAddRelaxed(1);
+ iteratorThreads.testAndSetRelease(1, 0);
+
+ this->waitForResume(); // (only waits if the qfuture is paused.)
+
+ if (shouldStartThread())
+ this->startThread();
+
+ const bool resultAavailable = this->runIteration(prev, index, resultReporter.getPointer());
+ if (resultAavailable)
+ resultReporter.reportResults(index);
+
+ if (this->shouldThrottleThread())
+ return ThrottleThread;
+
+ if (iteratorThreads.testAndSetAcquire(0, 1) == false)
+ return ThreadFinished;
+ }
+
+ return ThreadFinished;
+ }
+
+
+public:
+ const Iterator begin;
+ const Iterator end;
+ Iterator current;
+ QAtomicInt currentIndex;
+ bool forIteration;
+ QAtomicInt iteratorThreads;
+ int iterationCount;
+
+ bool progressReportingEnabled;
+ QAtomicInt completed;
+};
+
+} // namespace QtConcurrent
+
+#endif //qdoc
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif
diff --git a/src/concurrent/qtconcurrentmap.cpp b/src/concurrent/qtconcurrentmap.cpp
new file mode 100644
index 0000000000..1758cb9e95
--- /dev/null
+++ b/src/concurrent/qtconcurrentmap.cpp
@@ -0,0 +1,402 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+/*!
+ \namespace QtConcurrent
+ \inmodule QtCore
+ \since 4.4
+ \brief The QtConcurrent namespace provides high-level APIs that make it
+ possible to write multi-threaded programs without using low-level
+ threading primitives.
+
+ See the \l {Concurrent Programming}{Qt Concurrent} chapter in
+ the \l{threads.html}{threading} documentation.
+
+ \inheaderfile QtCore
+ \ingroup thread
+*/
+
+/*!
+ \namespace QtConcurrent::internal
+ \internal
+
+ \brief The QtConcurrent::internal namespace contains QtConcurrent
+ implementation details.
+*/
+
+/*!
+ \enum QtConcurrent::ReduceOption
+ This enum specifies the order of which results from the map or filter
+ function are passed to the reduce function.
+
+ \value UnorderedReduce Reduction is done in an arbitrary order.
+ \value OrderedReduce Reduction is done in the order of the
+ original sequence.
+ \value SequentialReduce Reduction is done sequentially: only one
+ thread will enter the reduce function at a time. (Parallel reduction
+ might be supported in a future version of Qt Concurrent.)
+*/
+
+/*!
+ \headerfile <QtConcurrentMap>
+ \title Concurrent Map and Map-Reduce
+ \ingroup thread
+
+ \brief The <QtConcurrentMap> header provides concurrent Map and MapReduce.
+
+ These functions are a part of the \l {Concurrent Programming}{Qt Concurrent} framework.
+
+ The QtConcurrent::map(), QtConcurrent::mapped() and
+ QtConcurrent::mappedReduced() functions run computations in parallel on
+ the items in a sequence such as a QList or a QVector. QtConcurrent::map()
+ modifies a sequence in-place, QtConcurrent::mapped() returns a new
+ sequence containing the modified content, and QtConcurrent::mappedReduced()
+ returns a single result.
+
+ Each of the above functions has a blocking variant that returns
+ the final result instead of a QFuture. You use them in the same
+ way as the asynchronous variants.
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 7
+
+ Note that the result types above are not QFuture objects, but real result
+ types (in this case, QList<QImage> and QImage).
+
+ \section1 Concurrent Map
+
+ QtConcurrent::mapped() takes an input sequence and a map function. This map
+ function is then called for each item in the sequence, and a new sequence
+ containing the return values from the map function is returned.
+
+ The map function must be of the form:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 0
+
+ T and U can be any type (and they can even be the same type), but T must
+ match the type stored in the sequence. The function returns the modified
+ or \e mapped content.
+
+ This example shows how to apply a scale function to all the items
+ in a sequence:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 1
+
+ The results of the map are made available through QFuture. See the
+ QFuture and QFutureWatcher documentation for more information on how to
+ use QFuture in your applications.
+
+ If you want to modify a sequence in-place, use QtConcurrent::map(). The
+ map function must then be of the form:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 2
+
+ Note that the return value and return type of the map function are not
+ used.
+
+ Using QtConcurrent::map() is similar to using QtConcurrent::mapped():
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 3
+
+ Since the sequence is modified in place, QtConcurrent::map() does not
+ return any results via QFuture. However, you can still use QFuture and
+ QFutureWatcher to monitor the status of the map.
+
+ \section1 Concurrent Map-Reduce
+
+ QtConcurrent::mappedReduced() is similar to QtConcurrent::mapped(), but
+ instead of returning a sequence with the new results, the results are
+ combined into a single value using a reduce function.
+
+ The reduce function must be of the form:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 4
+
+ T is the type of the final result, U is the return type of the map
+ function. Note that the return value and return type of the reduce
+ function are not used.
+
+ Call QtConcurrent::mappedReduced() like this:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 5
+
+ The reduce function will be called once for each result returned by the map
+ function, and should merge the \e{intermediate} into the \e{result}
+ variable. QtConcurrent::mappedReduced() guarantees that only one thread
+ will call reduce at a time, so using a mutex to lock the result variable
+ is not necessary. The QtConcurrent::ReduceOptions enum provides a way to
+ control the order in which the reduction is done. If
+ QtConcurrent::UnorderedReduce is used (the default), the order is
+ undefined, while QtConcurrent::OrderedReduce ensures that the reduction
+ is done in the order of the original sequence.
+
+ \section1 Additional API Features
+
+ \section2 Using Iterators instead of Sequence
+
+ Each of the above functions has a variant that takes an iterator range
+ instead of a sequence. You use them in the same way as the sequence
+ variants:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 6
+
+ \section2 Blocking Variants
+
+ Each of the above functions has a blocking variant that returns
+ the final result instead of a QFuture. You use them in the same
+ way as the asynchronous variants.
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 7
+
+ Note that the result types above are not QFuture objects, but real result
+ types (in this case, QList<QImage> and QImage).
+
+ \section2 Using Member Functions
+
+ QtConcurrent::map(), QtConcurrent::mapped(), and
+ QtConcurrent::mappedReduced() accept pointers to member functions.
+ The member function class type must match the type stored in the sequence:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 8
+
+ Note that when using QtConcurrent::mappedReduced(), you can mix the use of
+ normal and member functions freely:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 9
+
+ \section2 Using Function Objects
+
+ QtConcurrent::map(), QtConcurrent::mapped(), and
+ QtConcurrent::mappedReduced() accept function objects, which can be used to
+ add state to a function call. The result_type typedef must define the
+ result type of the function call operator:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 14
+
+ \section2 Using Bound Function Arguments
+
+ Note that Qt does not provide support for bound functions. This is
+ provided by 3rd party libraries like
+ \l{http://www.boost.org/libs/bind/bind.html}{Boost} or
+ \l{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf}{C++
+ TR1 Library Extensions}.
+
+ If you want to use a map function that takes more than one argument you can
+ use boost::bind() or std::tr1::bind() to transform it onto a function that
+ takes one argument.
+
+ As an example, we'll use QImage::scaledToWidth():
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 10
+
+ scaledToWidth takes three arguments (including the "this" pointer) and
+ can't be used with QtConcurrent::mapped() directly, because
+ QtConcurrent::mapped() expects a function that takes one argument. To use
+ QImage::scaledToWidth() with QtConcurrent::mapped() we have to provide a
+ value for the \e{width} and the \e{transformation mode}:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 11
+
+ The return value from boost::bind() is a function object (functor) with
+ the following signature:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 12
+
+ This matches what QtConcurrent::mapped() expects, and the complete example
+ becomes:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 13
+*/
+
+/*!
+ \fn QFuture<void> QtConcurrent::map(Sequence &sequence, MapFunction function)
+ \relates <QtConcurrentMap>
+
+ Calls \a function once for each item in \a sequence. The \a function is
+ passed a reference to the item, so that any modifications done to the item
+ will appear in \a sequence.
+*/
+
+/*!
+ \fn QFuture<void> QtConcurrent::map(Iterator begin, Iterator end, MapFunction function)
+ \relates <QtConcurrentMap>
+
+ Calls \a function once for each item from \a begin to \a end. The
+ \a function is passed a reference to the item, so that any modifications
+ done to the item will appear in the sequence which the iterators belong to.
+*/
+
+/*!
+ \fn QFuture<T> QtConcurrent::mapped(const Sequence &sequence, MapFunction function)
+ \relates <QtConcurrentMap>
+
+ Calls \a function once for each item in \a sequence and returns a future
+ with each mapped item as a result. You can use QFuture::const_iterator or
+ QFutureIterator to iterate through the results.
+*/
+
+/*!
+ \fn QFuture<T> QtConcurrent::mapped(ConstIterator begin, ConstIterator end, MapFunction function)
+ \relates <QtConcurrentMap>
+
+ Calls \a function once for each item from \a begin to \a end and returns a
+ future with each mapped item as a result. You can use
+ QFuture::const_iterator or QFutureIterator to iterate through the results.
+*/
+
+/*!
+ \fn QFuture<T> QtConcurrent::mappedReduced(const Sequence &sequence,
+ MapFunction mapFunction, ReduceFunction reduceFunction,
+ QtConcurrent::ReduceOptions reduceOptions)
+
+ \relates <QtConcurrentMap>
+
+ Calls \a mapFunction once for each item in \a sequence. The return value of
+ each \a mapFunction is passed to \a reduceFunction.
+
+ Note that while \a mapFunction is called concurrently, only one thread at a
+ time will call \a reduceFunction. The order in which \a reduceFunction is
+ called is determined by \a reduceOptions.
+*/
+
+/*!
+ \fn QFuture<T> QtConcurrent::mappedReduced(ConstIterator begin,
+ ConstIterator end, MapFunction mapFunction, ReduceFunction reduceFunction,
+ QtConcurrent::ReduceOptions reduceOptions)
+
+ \relates <QtConcurrentMap>
+
+ Calls \a mapFunction once for each item from \a begin to \a end. The return
+ value of each \a mapFunction is passed to \a reduceFunction.
+
+ Note that while \a mapFunction is called concurrently, only one thread at a
+ time will call \a reduceFunction. By default, the order in which
+ \a reduceFunction is called is undefined.
+
+ \note QtConcurrent::OrderedReduce results in the ordered reduction.
+*/
+
+/*!
+ \fn void QtConcurrent::blockingMap(Sequence &sequence, MapFunction function)
+
+ Calls \a function once for each item in \a sequence. The \a function is
+ passed a reference to the item, so that any modifications done to the item
+ will appear in \a sequence.
+
+ \note This function will block until all items in the sequence have been processed.
+
+ \sa map()
+*/
+
+/*!
+ \fn void QtConcurrent::blockingMap(Iterator begin, Iterator end, MapFunction function)
+
+ Calls \a function once for each item from \a begin to \a end. The
+ \a function is passed a reference to the item, so that any modifications
+ done to the item will appear in the sequence which the iterators belong to.
+
+ \note This function will block until the iterator reaches the end of the
+ sequence being processed.
+
+ \sa map()
+*/
+
+/*!
+ \fn T QtConcurrent::blockingMapped(const Sequence &sequence, MapFunction function)
+
+ Calls \a function once for each item in \a sequence and returns a Sequence containing
+ the results. The type of the results will match the type returned my the MapFunction.
+
+ \note This function will block until all items in the sequence have been processed.
+
+ \sa mapped()
+*/
+
+/*!
+ \fn T QtConcurrent::blockingMapped(ConstIterator begin, ConstIterator end, MapFunction function)
+
+ Calls \a function once for each item from \a begin to \a end and returns a
+ container with the results. Specify the type of container as the a template
+ argument, like this:
+
+ \code
+ QList<int> ints = QtConcurrent::blockingMapped<QList<int> >(beginIterator, endIterator, fn);
+ \endcode
+
+ \note This function will block until the iterator reaches the end of the
+ sequence being processed.
+
+ \sa mapped()
+*/
+
+/*!
+ \fn T QtConcurrent::blockingMappedReduced(const Sequence &sequence, MapFunction mapFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions)
+
+ \relates <QtConcurrentMap>
+
+ Calls \a mapFunction once for each item in \a sequence. The return value of
+ each \a mapFunction is passed to \a reduceFunction.
+
+ Note that while \a mapFunction is called concurrently, only one thread at a
+ time will call \a reduceFunction. The order in which \a reduceFunction is
+ called is determined by \a reduceOptions.
+
+ \note This function will block until all items in the sequence have been processed.
+
+ \sa mapped()
+*/
+
+/*!
+ \fn T QtConcurrent::blockingMappedReduced(ConstIterator begin, ConstIterator end, MapFunction mapFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions)
+
+ \relates <QtConcurrentMap>
+
+ Calls \a mapFunction once for each item from \a begin to \a end. The return
+ value of each \a mapFunction is passed to \a reduceFunction.
+
+ Note that while \a mapFunction is called concurrently, only one thread at a
+ time will call \a reduceFunction. The order in which \a reduceFunction is
+ called is undefined.
+
+ \note This function will block until the iterator reaches the end of the
+ sequence being processed.
+
+ \sa blockingMappedReduced()
+*/
diff --git a/src/concurrent/qtconcurrentmap.h b/src/concurrent/qtconcurrentmap.h
new file mode 100644
index 0000000000..8a5557183d
--- /dev/null
+++ b/src/concurrent/qtconcurrentmap.h
@@ -0,0 +1,319 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QTCONCURRENT_MAP_H
+#define QTCONCURRENT_MAP_H
+
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_CONCURRENT
+
+#include <QtConcurrent/qtconcurrentmapkernel.h>
+#include <QtConcurrent/qtconcurrentreducekernel.h>
+#include <QtConcurrent/qtconcurrentfunctionwrappers.h>
+#include <QtCore/qstringlist.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+#ifdef qdoc
+
+namespace QtConcurrent {
+
+ QFuture<void> map(Sequence &sequence, MapFunction function);
+ QFuture<void> map(Iterator begin, Iterator end, MapFunction function);
+
+ template <typename T>
+ QFuture<T> mapped(const Sequence &sequence, MapFunction function);
+ template <typename T>
+ QFuture<T> mapped(ConstIterator begin, ConstIterator end, MapFunction function);
+
+ template <typename T>
+ QFuture<T> mappedReduced(const Sequence &sequence,
+ MapFunction function,
+ ReduceFunction function,
+ QtConcurrent::ReduceOptions options = UnorderedReduce | SequentialReduce);
+ template <typename T>
+ QFuture<T> mappedReduced(ConstIterator begin,
+ ConstIterator end,
+ MapFunction function,
+ ReduceFunction function,
+ QtConcurrent::ReduceOptions options = UnorderedReduce | SequentialReduce);
+
+ void blockingMap(Sequence &sequence, MapFunction function);
+ void blockingMap(Iterator begin, Iterator end, MapFunction function);
+
+ template <typename T>
+ T blockingMapped(const Sequence &sequence, MapFunction function);
+ template <typename T>
+ T blockingMapped(ConstIterator begin, ConstIterator end, MapFunction function);
+
+ template <typename T>
+ T blockingMappedReduced(const Sequence &sequence,
+ MapFunction function,
+ ReduceFunction function,
+ QtConcurrent::ReduceOptions options = UnorderedReduce | SequentialReduce);
+ template <typename T>
+ T blockingMappedReduced(ConstIterator begin,
+ ConstIterator end,
+ MapFunction function,
+ ReduceFunction function,
+ QtConcurrent::ReduceOptions options = UnorderedReduce | SequentialReduce);
+
+} // namespace QtConcurrent
+
+#else
+
+namespace QtConcurrent {
+
+// map() on sequences
+template <typename Sequence, typename MapFunctor>
+QFuture<void> map(Sequence &sequence, MapFunctor map)
+{
+ return startMap(sequence.begin(), sequence.end(), QtPrivate::createFunctionWrapper(map));
+}
+
+// map() on iterators
+template <typename Iterator, typename MapFunctor>
+QFuture<void> map(Iterator begin, Iterator end, MapFunctor map)
+{
+ return startMap(begin, end, QtPrivate::createFunctionWrapper(map));
+}
+
+// mappedReduced() for sequences.
+template <typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor>
+QFuture<ResultType> mappedReduced(const Sequence &sequence,
+ MapFunctor map,
+ ReduceFunctor reduce,
+ ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
+{
+ return startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, ResultType>
+ (sequence,
+ QtPrivate::createFunctionWrapper(map),
+ QtPrivate::createFunctionWrapper(reduce),
+ options);
+}
+
+template <typename Sequence, typename MapFunctor, typename ReduceFunctor>
+QFuture<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType> mappedReduced(const Sequence &sequence,
+ MapFunctor map,
+ ReduceFunctor reduce,
+ ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
+{
+ return startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType>
+ (sequence,
+ QtPrivate::createFunctionWrapper(map),
+ QtPrivate::createFunctionWrapper(reduce),
+ options);
+}
+
+// mappedReduced() for iterators
+template <typename ResultType, typename Iterator, typename MapFunctor, typename ReduceFunctor>
+QFuture<ResultType> mappedReduced(Iterator begin,
+ Iterator end,
+ MapFunctor map,
+ ReduceFunctor reduce,
+ ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
+{
+ return startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, ResultType>
+ (begin, end,
+ QtPrivate::createFunctionWrapper(map),
+ QtPrivate::createFunctionWrapper(reduce),
+ options);
+}
+
+template <typename Iterator, typename MapFunctor, typename ReduceFunctor>
+QFuture<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType> mappedReduced(Iterator begin,
+ Iterator end,
+ MapFunctor map,
+ ReduceFunctor reduce,
+ ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
+{
+ return startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType>
+ (begin, end,
+ QtPrivate::createFunctionWrapper(map),
+ QtPrivate::createFunctionWrapper(reduce),
+ options);
+}
+
+// mapped() for sequences
+template <typename Sequence, typename MapFunctor>
+QFuture<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType> mapped(const Sequence &sequence, MapFunctor map)
+{
+ return startMapped<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType>(sequence, QtPrivate::createFunctionWrapper(map));
+}
+
+// mapped() for iterator ranges.
+template <typename Iterator, typename MapFunctor>
+QFuture<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType> mapped(Iterator begin, Iterator end, MapFunctor map)
+{
+ return startMapped<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType>(begin, end, QtPrivate::createFunctionWrapper(map));
+}
+
+// blockingMap() for sequences
+template <typename Sequence, typename MapFunctor>
+void blockingMap(Sequence &sequence, MapFunctor map)
+{
+ startMap(sequence.begin(), sequence.end(), QtPrivate::createFunctionWrapper(map)).startBlocking();
+}
+
+// blockingMap() for iterator ranges
+template <typename Iterator, typename MapFunctor>
+void blockingMap(Iterator begin, Iterator end, MapFunctor map)
+{
+ startMap(begin, end, QtPrivate::createFunctionWrapper(map)).startBlocking();
+}
+
+// blockingMappedReduced() for sequences
+template <typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor>
+ResultType blockingMappedReduced(const Sequence &sequence,
+ MapFunctor map,
+ ReduceFunctor reduce,
+ ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
+{
+ return QtConcurrent::startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, ResultType>
+ (sequence,
+ QtPrivate::createFunctionWrapper(map),
+ QtPrivate::createFunctionWrapper(reduce),
+ options)
+ .startBlocking();
+}
+
+template <typename MapFunctor, typename ReduceFunctor, typename Sequence>
+typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType blockingMappedReduced(const Sequence &sequence,
+ MapFunctor map,
+ ReduceFunctor reduce,
+ ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
+{
+ return QtConcurrent::startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType>
+ (sequence,
+ QtPrivate::createFunctionWrapper(map),
+ QtPrivate::createFunctionWrapper(reduce),
+ options)
+ .startBlocking();
+}
+
+// blockingMappedReduced() for iterator ranges
+template <typename ResultType, typename Iterator, typename MapFunctor, typename ReduceFunctor>
+ResultType blockingMappedReduced(Iterator begin,
+ Iterator end,
+ MapFunctor map,
+ ReduceFunctor reduce,
+ QtConcurrent::ReduceOptions options = QtConcurrent::ReduceOptions(QtConcurrent::UnorderedReduce | QtConcurrent::SequentialReduce))
+{
+ return QtConcurrent::startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, ResultType>
+ (begin, end,
+ QtPrivate::createFunctionWrapper(map),
+ QtPrivate::createFunctionWrapper(reduce),
+ options)
+ .startBlocking();
+}
+
+template <typename Iterator, typename MapFunctor, typename ReduceFunctor>
+typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType blockingMappedReduced(Iterator begin,
+ Iterator end,
+ MapFunctor map,
+ ReduceFunctor reduce,
+ QtConcurrent::ReduceOptions options = QtConcurrent::ReduceOptions(QtConcurrent::UnorderedReduce | QtConcurrent::SequentialReduce))
+{
+ return QtConcurrent::startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType>
+ (begin, end,
+ QtPrivate::createFunctionWrapper(map),
+ QtPrivate::createFunctionWrapper(reduce),
+ options)
+ .startBlocking();
+}
+
+// mapped() for sequences with a different putput sequence type.
+template <typename OutputSequence, typename InputSequence, typename MapFunctor>
+OutputSequence blockingMapped(const InputSequence &sequence, MapFunctor map)
+{
+ return blockingMappedReduced<OutputSequence>
+ (sequence,
+ QtPrivate::createFunctionWrapper(map),
+ QtPrivate::PushBackWrapper(),
+ QtConcurrent::OrderedReduce);
+}
+
+template <typename MapFunctor, typename InputSequence>
+typename QtPrivate::MapResultType<InputSequence, MapFunctor>::ResultType blockingMapped(const InputSequence &sequence, MapFunctor map)
+{
+ typedef typename QtPrivate::MapResultType<InputSequence, MapFunctor>::ResultType OutputSequence;
+ return blockingMappedReduced<OutputSequence>
+ (sequence,
+ QtPrivate::createFunctionWrapper(map),
+ QtPrivate::PushBackWrapper(),
+ QtConcurrent::OrderedReduce);
+}
+
+// mapped() for iterator ranges
+template <typename Sequence, typename Iterator, typename MapFunctor>
+Sequence blockingMapped(Iterator begin, Iterator end, MapFunctor map)
+{
+ return blockingMappedReduced<Sequence>
+ (begin, end,
+ QtPrivate::createFunctionWrapper(map),
+ QtPrivate::PushBackWrapper(),
+ QtConcurrent::OrderedReduce);
+}
+
+template <typename Iterator, typename MapFunctor>
+typename QtPrivate::MapResultType<Iterator, MapFunctor>::ResultType blockingMapped(Iterator begin, Iterator end, MapFunctor map)
+{
+ typedef typename QtPrivate::MapResultType<Iterator, MapFunctor>::ResultType OutputSequence;
+ return blockingMappedReduced<OutputSequence>
+ (begin, end,
+ QtPrivate::createFunctionWrapper(map),
+ QtPrivate::PushBackWrapper(),
+ QtConcurrent::OrderedReduce);
+}
+
+} // namespace QtConcurrent
+
+#endif // qdoc
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif
diff --git a/src/concurrent/qtconcurrentmapkernel.h b/src/concurrent/qtconcurrentmapkernel.h
new file mode 100644
index 0000000000..ceeaa6e3b3
--- /dev/null
+++ b/src/concurrent/qtconcurrentmapkernel.h
@@ -0,0 +1,272 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QTCONCURRENT_MAPKERNEL_H
+#define QTCONCURRENT_MAPKERNEL_H
+
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_CONCURRENT
+
+#include <QtConcurrent/qtconcurrentiteratekernel.h>
+#include <QtConcurrent/qtconcurrentreducekernel.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+#ifndef qdoc
+namespace QtConcurrent {
+
+// map kernel, works with both parallel-for and parallel-while
+template <typename Iterator, typename MapFunctor>
+class MapKernel : public IterateKernel<Iterator, void>
+{
+ MapFunctor map;
+public:
+ typedef void ReturnType;
+ MapKernel(Iterator begin, Iterator end, MapFunctor _map)
+ : IterateKernel<Iterator, void>(begin, end), map(_map)
+ { }
+
+ bool runIteration(Iterator it, int, void *)
+ {
+ map(*it);
+ return false;
+ }
+
+ bool runIterations(Iterator sequenceBeginIterator, int beginIndex, int endIndex, void *)
+ {
+ Iterator it = sequenceBeginIterator;
+ advance(it, beginIndex);
+ for (int i = beginIndex; i < endIndex; ++i) {
+ runIteration(it, i, 0);
+ advance(it, 1);
+ }
+
+ return false;
+ }
+};
+
+template <typename ReducedResultType,
+ typename Iterator,
+ typename MapFunctor,
+ typename ReduceFunctor,
+ typename Reducer = ReduceKernel<ReduceFunctor,
+ ReducedResultType,
+ typename MapFunctor::result_type> >
+class MappedReducedKernel : public IterateKernel<Iterator, ReducedResultType>
+{
+ ReducedResultType reducedResult;
+ MapFunctor map;
+ ReduceFunctor reduce;
+ Reducer reducer;
+public:
+ typedef ReducedResultType ReturnType;
+ MappedReducedKernel(Iterator begin, Iterator end, MapFunctor _map, ReduceFunctor _reduce, ReduceOptions reduceOptions)
+ : IterateKernel<Iterator, ReducedResultType>(begin, end), reducedResult(), map(_map), reduce(_reduce), reducer(reduceOptions)
+ { }
+
+ MappedReducedKernel(ReducedResultType initialValue,
+ MapFunctor _map,
+ ReduceFunctor _reduce)
+ : reducedResult(initialValue), map(_map), reduce(_reduce)
+ { }
+
+ bool runIteration(Iterator it, int index, ReducedResultType *)
+ {
+ IntermediateResults<typename MapFunctor::result_type> results;
+ results.begin = index;
+ results.end = index + 1;
+
+ results.vector.append(map(*it));
+ reducer.runReduce(reduce, reducedResult, results);
+ return false;
+ }
+
+ bool runIterations(Iterator sequenceBeginIterator, int begin, int end, ReducedResultType *)
+ {
+ IntermediateResults<typename MapFunctor::result_type> results;
+ results.begin = begin;
+ results.end = end;
+ results.vector.reserve(end - begin);
+
+ Iterator it = sequenceBeginIterator;
+ advance(it, begin);
+ for (int i = begin; i < end; ++i) {
+ results.vector.append(map(*(it)));
+ advance(it, 1);
+ }
+
+ reducer.runReduce(reduce, reducedResult, results);
+ return false;
+ }
+
+ void finish()
+ {
+ reducer.finish(reduce, reducedResult);
+ }
+
+ bool shouldThrottleThread()
+ {
+ return IterateKernel<Iterator, ReducedResultType>::shouldThrottleThread() || reducer.shouldThrottle();
+ }
+
+ bool shouldStartThread()
+ {
+ return IterateKernel<Iterator, ReducedResultType>::shouldStartThread() && reducer.shouldStartThread();
+ }
+
+ typedef ReducedResultType ResultType;
+ ReducedResultType *result()
+ {
+ return &reducedResult;
+ }
+};
+
+template <typename Iterator, typename MapFunctor>
+class MappedEachKernel : public IterateKernel<Iterator, typename MapFunctor::result_type>
+{
+ MapFunctor map;
+ typedef typename MapFunctor::result_type T;
+public:
+ typedef T ReturnType;
+ typedef T ResultType;
+
+ MappedEachKernel(Iterator begin, Iterator end, MapFunctor _map)
+ : IterateKernel<Iterator, T>(begin, end), map(_map) { }
+
+ bool runIteration(Iterator it, int, T *result)
+ {
+ *result = map(*it);
+ return true;
+ }
+
+ bool runIterations(Iterator sequenceBeginIterator, int begin, int end, T *results)
+ {
+
+ Iterator it = sequenceBeginIterator;
+ advance(it, begin);
+ for (int i = begin; i < end; ++i) {
+ runIteration(it, i, results + (i - begin));
+ advance(it, 1);
+ }
+
+ return true;
+ }
+};
+
+template <typename Iterator, typename Functor>
+inline ThreadEngineStarter<void> startMap(Iterator begin, Iterator end, Functor functor)
+{
+ return startThreadEngine(new MapKernel<Iterator, Functor>(begin, end, functor));
+}
+
+template <typename T, typename Iterator, typename Functor>
+inline ThreadEngineStarter<T> startMapped(Iterator begin, Iterator end, Functor functor)
+{
+ return startThreadEngine(new MappedEachKernel<Iterator, Functor>(begin, end, functor));
+}
+
+/*
+ The SequnceHolder class is used to hold a reference to the
+ sequence we are working on.
+*/
+template <typename Sequence, typename Base, typename Functor>
+struct SequenceHolder1 : public Base
+{
+ SequenceHolder1(const Sequence &_sequence, Functor functor)
+ : Base(_sequence.begin(), _sequence.end(), functor), sequence(_sequence)
+ { }
+
+ Sequence sequence;
+
+ void finish()
+ {
+ Base::finish();
+ // Clear the sequence to make sure all temporaries are destroyed
+ // before finished is signaled.
+ sequence = Sequence();
+ }
+};
+
+template <typename T, typename Sequence, typename Functor>
+inline ThreadEngineStarter<T> startMapped(const Sequence &sequence, Functor functor)
+{
+ typedef SequenceHolder1<Sequence,
+ MappedEachKernel<typename Sequence::const_iterator , Functor>, Functor>
+ SequenceHolderType;
+
+ return startThreadEngine(new SequenceHolderType(sequence, functor));
+}
+
+template <typename IntermediateType, typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor>
+inline ThreadEngineStarter<ResultType> startMappedReduced(const Sequence & sequence,
+ MapFunctor mapFunctor, ReduceFunctor reduceFunctor,
+ ReduceOptions options)
+{
+ typedef typename Sequence::const_iterator Iterator;
+ typedef ReduceKernel<ReduceFunctor, ResultType, IntermediateType> Reducer;
+ typedef MappedReducedKernel<ResultType, Iterator, MapFunctor, ReduceFunctor, Reducer> MappedReduceType;
+ typedef SequenceHolder2<Sequence, MappedReduceType, MapFunctor, ReduceFunctor> SequenceHolderType;
+ return startThreadEngine(new SequenceHolderType(sequence, mapFunctor, reduceFunctor, options));
+}
+
+template <typename IntermediateType, typename ResultType, typename Iterator, typename MapFunctor, typename ReduceFunctor>
+inline ThreadEngineStarter<ResultType> startMappedReduced(Iterator begin, Iterator end,
+ MapFunctor mapFunctor, ReduceFunctor reduceFunctor,
+ ReduceOptions options)
+{
+ typedef ReduceKernel<ReduceFunctor, ResultType, IntermediateType> Reducer;
+ typedef MappedReducedKernel<ResultType, Iterator, MapFunctor, ReduceFunctor, Reducer> MappedReduceType;
+ return startThreadEngine(new MappedReduceType(begin, end, mapFunctor, reduceFunctor, options));
+}
+
+} // namespace QtConcurrent
+
+#endif //qdoc
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif
diff --git a/src/concurrent/qtconcurrentmedian.h b/src/concurrent/qtconcurrentmedian.h
new file mode 100644
index 0000000000..78fc3d97c8
--- /dev/null
+++ b/src/concurrent/qtconcurrentmedian.h
@@ -0,0 +1,129 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QTCONCURRENT_MEDIAN_H
+#define QTCONCURRENT_MEDIAN_H
+
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_CONCURRENT
+
+#include <QtCore/qvector.h>
+#include <QtCore/qalgorithms.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+#ifndef qdoc
+
+namespace QtConcurrent {
+
+template <typename T>
+class Median
+{
+public:
+ Median(int _bufferSize)
+ : currentMedian(), bufferSize(_bufferSize), currentIndex(0), valid(false), dirty(true)
+ {
+ values.resize(bufferSize);
+ }
+
+ void reset()
+ {
+ values.fill(0);
+ currentIndex = 0;
+ valid = false;
+ dirty = true;
+ }
+
+ void addValue(T value)
+ {
+ currentIndex = ((currentIndex + 1) % bufferSize);
+ if (valid == false && currentIndex % bufferSize == 0)
+ valid = true;
+
+ // Only update the cached median value when we have to, that
+ // is when the new value is on then other side of the median
+ // compared to the current value at the index.
+ const T currentIndexValue = values[currentIndex];
+ if ((currentIndexValue > currentMedian && currentMedian > value)
+ || (currentMedian > currentIndexValue && value > currentMedian)) {
+ dirty = true;
+ }
+
+ values[currentIndex] = value;
+ }
+
+ bool isMedianValid() const
+ {
+ return valid;
+ }
+
+ T median()
+ {
+ if (dirty) {
+ dirty = false;
+ QVector<T> sorted = values;
+ qSort(sorted);
+ currentMedian = sorted.at(bufferSize / 2 + 1);
+ }
+ return currentMedian;
+ }
+private:
+ QVector<T> values;
+ T currentMedian;
+ int bufferSize;
+ int currentIndex;
+ bool valid;
+ bool dirty;
+};
+
+} // namespace QtConcurrent
+
+#endif //qdoc
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif
diff --git a/src/concurrent/qtconcurrentreducekernel.h b/src/concurrent/qtconcurrentreducekernel.h
new file mode 100644
index 0000000000..ddf56298ad
--- /dev/null
+++ b/src/concurrent/qtconcurrentreducekernel.h
@@ -0,0 +1,254 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QTCONCURRENT_REDUCEKERNEL_H
+#define QTCONCURRENT_REDUCEKERNEL_H
+
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_CONCURRENT
+
+#include <QtCore/qatomic.h>
+#include <QtCore/qlist.h>
+#include <QtCore/qmap.h>
+#include <QtCore/qmutex.h>
+#include <QtCore/qthread.h>
+#include <QtCore/qthreadpool.h>
+#include <QtCore/qvector.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+namespace QtConcurrent {
+
+#ifndef qdoc
+
+/*
+ The ReduceQueueStartLimit and ReduceQueueThrottleLimit constants
+ limit the reduce queue size for MapReduce. When the number of
+ reduce blocks in the queue exceeds ReduceQueueStartLimit,
+ MapReduce won't start any new threads, and when it exceeds
+ ReduceQueueThrottleLimit running threads will be stopped.
+*/
+enum {
+ ReduceQueueStartLimit = 20,
+ ReduceQueueThrottleLimit = 30
+};
+
+// IntermediateResults holds a block of intermediate results from a
+// map or filter functor. The begin/end offsets indicates the origin
+// and range of the block.
+template <typename T>
+class IntermediateResults
+{
+public:
+ int begin, end;
+ QVector<T> vector;
+};
+
+#endif // qdoc
+
+enum ReduceOption {
+ UnorderedReduce = 0x1,
+ OrderedReduce = 0x2,
+ SequentialReduce = 0x4
+ // ParallelReduce = 0x8
+};
+Q_DECLARE_FLAGS(ReduceOptions, ReduceOption)
+Q_DECLARE_OPERATORS_FOR_FLAGS(ReduceOptions)
+
+#ifndef qdoc
+
+// supports both ordered and out-of-order reduction
+template <typename ReduceFunctor, typename ReduceResultType, typename T>
+class ReduceKernel
+{
+ typedef QMap<int, IntermediateResults<T> > ResultsMap;
+
+ const ReduceOptions reduceOptions;
+
+ QMutex mutex;
+ int progress, resultsMapSize, threadCount;
+ ResultsMap resultsMap;
+
+ bool canReduce(int begin) const
+ {
+ return (((reduceOptions & UnorderedReduce)
+ && progress == 0)
+ || ((reduceOptions & OrderedReduce)
+ && progress == begin));
+ }
+
+ void reduceResult(ReduceFunctor &reduce,
+ ReduceResultType &r,
+ const IntermediateResults<T> &result)
+ {
+ for (int i = 0; i < result.vector.size(); ++i) {
+ reduce(r, result.vector.at(i));
+ }
+ }
+
+ void reduceResults(ReduceFunctor &reduce,
+ ReduceResultType &r,
+ ResultsMap &map)
+ {
+ typename ResultsMap::iterator it = map.begin();
+ while (it != map.end()) {
+ reduceResult(reduce, r, it.value());
+ ++it;
+ }
+ }
+
+public:
+ ReduceKernel(ReduceOptions _reduceOptions)
+ : reduceOptions(_reduceOptions), progress(0), resultsMapSize(0),
+ threadCount(QThreadPool::globalInstance()->maxThreadCount())
+ { }
+
+ void runReduce(ReduceFunctor &reduce,
+ ReduceResultType &r,
+ const IntermediateResults<T> &result)
+ {
+ QMutexLocker locker(&mutex);
+ if (!canReduce(result.begin)) {
+ ++resultsMapSize;
+ resultsMap.insert(result.begin, result);
+ return;
+ }
+
+ if (reduceOptions & UnorderedReduce) {
+ // UnorderedReduce
+ progress = -1;
+
+ // reduce this result
+ locker.unlock();
+ reduceResult(reduce, r, result);
+ locker.relock();
+
+ // reduce all stored results as well
+ while (!resultsMap.isEmpty()) {
+ ResultsMap resultsMapCopy = resultsMap;
+ resultsMap.clear();
+
+ locker.unlock();
+ reduceResults(reduce, r, resultsMapCopy);
+ locker.relock();
+
+ resultsMapSize -= resultsMapCopy.size();
+ }
+
+ progress = 0;
+ } else {
+ // reduce this result
+ locker.unlock();
+ reduceResult(reduce, r, result);
+ locker.relock();
+
+ // OrderedReduce
+ progress += result.end - result.begin;
+
+ // reduce as many other results as possible
+ typename ResultsMap::iterator it = resultsMap.begin();
+ while (it != resultsMap.end()) {
+ if (it.value().begin != progress)
+ break;
+
+ locker.unlock();
+ reduceResult(reduce, r, it.value());
+ locker.relock();
+
+ --resultsMapSize;
+ progress += it.value().end - it.value().begin;
+ it = resultsMap.erase(it);
+ }
+ }
+ }
+
+ // final reduction
+ void finish(ReduceFunctor &reduce, ReduceResultType &r)
+ {
+ reduceResults(reduce, r, resultsMap);
+ }
+
+ inline bool shouldThrottle()
+ {
+ return (resultsMapSize > (ReduceQueueThrottleLimit * threadCount));
+ }
+
+ inline bool shouldStartThread()
+ {
+ return (resultsMapSize <= (ReduceQueueStartLimit * threadCount));
+ }
+};
+
+template <typename Sequence, typename Base, typename Functor1, typename Functor2>
+struct SequenceHolder2 : public Base
+{
+ SequenceHolder2(const Sequence &_sequence,
+ Functor1 functor1,
+ Functor2 functor2,
+ ReduceOptions reduceOptions)
+ : Base(_sequence.begin(), _sequence.end(), functor1, functor2, reduceOptions),
+ sequence(_sequence)
+ { }
+
+ Sequence sequence;
+
+ void finish()
+ {
+ Base::finish();
+ // Clear the sequence to make sure all temporaries are destroyed
+ // before finished is signaled.
+ sequence = Sequence();
+ }
+};
+
+#endif //qdoc
+
+} // namespace QtConcurrent
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif
diff --git a/src/concurrent/qtconcurrentresultstore.cpp b/src/concurrent/qtconcurrentresultstore.cpp
new file mode 100644
index 0000000000..64de8649ce
--- /dev/null
+++ b/src/concurrent/qtconcurrentresultstore.cpp
@@ -0,0 +1,256 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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 "qtconcurrentresultstore.h"
+
+#ifndef QT_NO_QFUTURE
+
+QT_BEGIN_NAMESPACE
+
+namespace QtConcurrent {
+
+ResultIteratorBase::ResultIteratorBase()
+ : mapIterator(QMap<int, ResultItem>::const_iterator()), m_vectorIndex(0) { }
+ResultIteratorBase::ResultIteratorBase(QMap<int, ResultItem>::const_iterator _mapIterator, int _vectorIndex)
+ : mapIterator(_mapIterator), m_vectorIndex(_vectorIndex) { }
+
+int ResultIteratorBase::vectorIndex() const { return m_vectorIndex; }
+int ResultIteratorBase::resultIndex() const { return mapIterator.key() + m_vectorIndex; }
+
+ResultIteratorBase ResultIteratorBase::operator++()
+{
+ if (canIncrementVectorIndex()) {
+ ++m_vectorIndex;
+ } else {
+ ++mapIterator;
+ m_vectorIndex = 0;
+ }
+ return *this;
+}
+
+int ResultIteratorBase::batchSize() const
+{
+ return mapIterator.value().count();
+}
+
+void ResultIteratorBase::batchedAdvance()
+{
+ ++mapIterator;
+ m_vectorIndex = 0;
+}
+
+bool ResultIteratorBase::operator==(const ResultIteratorBase &other) const
+{
+ return (mapIterator == other.mapIterator && m_vectorIndex == other.m_vectorIndex);
+}
+
+bool ResultIteratorBase::operator!=(const ResultIteratorBase &other) const
+{
+ return !operator==(other);
+}
+
+bool ResultIteratorBase::isVector() const
+{
+ return mapIterator.value().isVector();
+}
+
+bool ResultIteratorBase::canIncrementVectorIndex() const
+{
+ return (m_vectorIndex + 1 < mapIterator.value().m_count);
+}
+
+ResultStoreBase::ResultStoreBase()
+ : insertIndex(0), resultCount(0), m_filterMode(false), filteredResults(0) { }
+
+void ResultStoreBase::setFilterMode(bool enable)
+{
+ m_filterMode = enable;
+}
+
+bool ResultStoreBase::filterMode() const
+{
+ return m_filterMode;
+}
+
+void ResultStoreBase::syncResultCount()
+{
+ ResultIteratorBase it = resultAt(resultCount);
+ while (it != end()) {
+ resultCount += it.batchSize();
+ it = resultAt(resultCount);
+ }
+}
+
+void ResultStoreBase::insertResultItemIfValid(int index, ResultItem &resultItem)
+{
+ if (resultItem.isValid()) {
+ m_results[index] = resultItem;
+ syncResultCount();
+ } else {
+ filteredResults += resultItem.count();
+ }
+}
+
+int ResultStoreBase::insertResultItem(int index, ResultItem &resultItem)
+{
+ int storeIndex;
+ if (m_filterMode && index != -1 && index > insertIndex) {
+ pendingResults[index] = resultItem;
+ storeIndex = index;
+ } else {
+ storeIndex = updateInsertIndex(index, resultItem.count());
+ insertResultItemIfValid(storeIndex - filteredResults, resultItem);
+ }
+ syncPendingResults();
+ return storeIndex;
+}
+
+void ResultStoreBase::syncPendingResults()
+{
+ // check if we can insert any of the pending results:
+ QMap<int, ResultItem>::iterator it = pendingResults.begin();
+ while (it != pendingResults.end()) {
+ int index = it.key();
+ if (index != resultCount + filteredResults)
+ break;
+
+ ResultItem result = it.value();
+ insertResultItemIfValid(index - filteredResults, result);
+ pendingResults.erase(it);
+ it = pendingResults.begin();
+ }
+}
+
+int ResultStoreBase::addResult(int index, const void *result)
+{
+ ResultItem resultItem(result, 0); // 0 means "not a vector"
+ return insertResultItem(index, resultItem);
+}
+
+int ResultStoreBase::addResults(int index, const void *results, int vectorSize, int totalCount)
+{
+ if (m_filterMode == false || vectorSize == totalCount) {
+ ResultItem resultItem(results, vectorSize);
+ return insertResultItem(index, resultItem);
+ } else {
+ if (vectorSize > 0) {
+ ResultItem filteredIn(results, vectorSize);
+ insertResultItem(index, filteredIn);
+ }
+ ResultItem filteredAway(0, totalCount - vectorSize);
+ return insertResultItem(index + vectorSize, filteredAway);
+ }
+}
+
+ResultIteratorBase ResultStoreBase::begin() const
+{
+ return ResultIteratorBase(m_results.begin());
+}
+
+ResultIteratorBase ResultStoreBase::end() const
+{
+ return ResultIteratorBase(m_results.end());
+}
+
+bool ResultStoreBase::hasNextResult() const
+{
+ return begin() != end();
+}
+
+ResultIteratorBase ResultStoreBase::resultAt(int index) const
+{
+ if (m_results.isEmpty())
+ return ResultIteratorBase(m_results.end());
+ QMap<int, ResultItem>::const_iterator it = m_results.lowerBound(index);
+
+ // lowerBound returns either an iterator to the result or an iterator
+ // to the nearest greater index. If the latter happens it might be
+ // that the result is stored in a vector at the previous index.
+ if (it == m_results.end()) {
+ --it;
+ if (it.value().isVector() == false) {
+ return ResultIteratorBase(m_results.end());
+ }
+ } else {
+ if (it.key() > index) {
+ if (it == m_results.begin())
+ return ResultIteratorBase(m_results.end());
+ --it;
+ }
+ }
+
+ const int vectorIndex = index - it.key();
+
+ if (vectorIndex >= it.value().count())
+ return ResultIteratorBase(m_results.end());
+ else if (it.value().isVector() == false && vectorIndex != 0)
+ return ResultIteratorBase(m_results.end());
+ return ResultIteratorBase(it, vectorIndex);
+}
+
+bool ResultStoreBase::contains(int index) const
+{
+ return (resultAt(index) != end());
+}
+
+int ResultStoreBase::count() const
+{
+ return resultCount;
+}
+
+// returns the insert index, calling this function with
+// index equal to -1 returns the next available index.
+int ResultStoreBase::updateInsertIndex(int index, int _count)
+{
+ if (index == -1) {
+ index = insertIndex;
+ insertIndex += _count;
+ } else {
+ insertIndex = qMax(index + _count, insertIndex);
+ }
+ return index;
+}
+
+} // namespace QtConcurrent
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_CONCURRENT
diff --git a/src/concurrent/qtconcurrentresultstore.h b/src/concurrent/qtconcurrentresultstore.h
new file mode 100644
index 0000000000..d39a45bba3
--- /dev/null
+++ b/src/concurrent/qtconcurrentresultstore.h
@@ -0,0 +1,238 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QTCONCURRENT_RESULTSTORE_H
+#define QTCONCURRENT_RESULTSTORE_H
+
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_QFUTURE
+
+#include <QtCore/qmap.h>
+#include <QtCore/qdebug.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+/*
+ ResultStore stores indexed results. Results can be added and retrieved
+ either individually batched in a QVector. Retriveing results and checking
+ which indexes are in the store can be done either by iterating or by random
+ accees. In addition results kan be removed from the front of the store,
+ either individually or in batches.
+*/
+
+#ifndef qdoc
+
+namespace QtConcurrent {
+
+class ResultItem
+{
+public:
+ ResultItem(const void *_result, int _count) : m_count(_count), result(_result) { } // contruct with vector of results
+ ResultItem(const void *_result) : m_count(0), result(_result) { } // construct with result
+ ResultItem() : m_count(0), result(0) { }
+ bool isValid() const { return result != 0; }
+ bool isVector() const { return m_count != 0; }
+ int count() const { return (m_count == 0) ? 1 : m_count; }
+ int m_count; // result is either a pointer to a result or to a vector of results,
+ const void *result; // if count is 0 it's a result, otherwise it's a vector.
+};
+
+class Q_CORE_EXPORT ResultIteratorBase
+{
+public:
+ ResultIteratorBase();
+ ResultIteratorBase(QMap<int, ResultItem>::const_iterator _mapIterator, int _vectorIndex = 0);
+ int vectorIndex() const;
+ int resultIndex() const;
+
+ ResultIteratorBase operator++();
+ int batchSize() const;
+ void batchedAdvance();
+ bool operator==(const ResultIteratorBase &other) const;
+ bool operator!=(const ResultIteratorBase &other) const;
+ bool isVector() const;
+ bool canIncrementVectorIndex() const;
+protected:
+ QMap<int, ResultItem>::const_iterator mapIterator;
+ int m_vectorIndex;
+};
+
+template <typename T>
+class ResultIterator : public ResultIteratorBase
+{
+public:
+ ResultIterator(const ResultIteratorBase &base)
+ : ResultIteratorBase(base) { }
+
+ const T &value() const
+ {
+ return *pointer();
+ }
+
+ const T *pointer() const
+ {
+ if (mapIterator.value().isVector())
+ return &(reinterpret_cast<const QVector<T> *>(mapIterator.value().result)->at(m_vectorIndex));
+ else
+ return reinterpret_cast<const T *>(mapIterator.value().result);
+ }
+};
+
+class Q_CORE_EXPORT ResultStoreBase
+{
+public:
+ ResultStoreBase();
+ void setFilterMode(bool enable);
+ bool filterMode() const;
+ int addResult(int index, const void *result);
+ int addResults(int index, const void *results, int vectorSize, int logicalCount);
+ ResultIteratorBase begin() const;
+ ResultIteratorBase end() const;
+ bool hasNextResult() const;
+ ResultIteratorBase resultAt(int index) const;
+ bool contains(int index) const;
+ int count() const;
+ virtual ~ResultStoreBase() { }
+
+protected:
+ int insertResultItem(int index, ResultItem &resultItem);
+ void insertResultItemIfValid(int index, ResultItem &resultItem);
+ void syncPendingResults();
+ void syncResultCount();
+ int updateInsertIndex(int index, int _count);
+
+ QMap<int, ResultItem> m_results;
+ int insertIndex; // The index where the next results(s) will be inserted.
+ int resultCount; // The number of consecutive results stored, starting at index 0.
+
+ bool m_filterMode;
+ QMap<int, ResultItem> pendingResults;
+ int filteredResults;
+
+};
+
+template <typename T>
+class ResultStore : public ResultStoreBase
+{
+public:
+ ResultStore() { }
+
+ ResultStore(const ResultStoreBase &base)
+ : ResultStoreBase(base) { }
+
+ int addResult(int index, const T *result)
+ {
+ if (result == 0)
+ return ResultStoreBase::addResult(index, result);
+ else
+ return ResultStoreBase::addResult(index, new T(*result));
+ }
+
+ int addResults(int index, const QVector<T> *results)
+ {
+ return ResultStoreBase::addResults(index, new QVector<T>(*results), results->count(), results->count());
+ }
+
+ int addResults(int index, const QVector<T> *results, int totalCount)
+ {
+ return ResultStoreBase::addResults(index, new QVector<T>(*results), results->count(), totalCount);
+ }
+
+ int addCanceledResult(int index)
+ {
+ return addResult(index, 0);
+ }
+
+ int addCanceledResults(int index, int _count)
+ {
+ QVector<T> empty;
+ return addResults(index, &empty, _count);
+ }
+
+ ResultIterator<T> begin() const
+ {
+ return static_cast<ResultIterator<T> >(ResultStoreBase::begin());
+ }
+
+ ResultIterator<T> end() const
+ {
+ return static_cast<ResultIterator<T> >(ResultStoreBase::end());
+ }
+
+ ResultIterator<T> resultAt(int index) const
+ {
+ return static_cast<ResultIterator<T> >(ResultStoreBase::resultAt(index));
+ }
+
+ void clear()
+ {
+ QMap<int, ResultItem>::const_iterator mapIterator = m_results.constBegin();
+ while (mapIterator != m_results.constEnd()) {
+ if (mapIterator.value().isVector())
+ delete reinterpret_cast<const QVector<T> *>(mapIterator.value().result);
+ else
+ delete reinterpret_cast<const T *>(mapIterator.value().result);
+ ++mapIterator;
+ }
+ resultCount = 0;
+ m_results.clear();
+ }
+
+ ~ResultStore()
+ {
+ clear();
+ }
+
+};
+
+} // namespace QtConcurrent
+
+#endif //qdoc
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif
diff --git a/src/concurrent/qtconcurrentrun.cpp b/src/concurrent/qtconcurrentrun.cpp
new file mode 100644
index 0000000000..e51626ed13
--- /dev/null
+++ b/src/concurrent/qtconcurrentrun.cpp
@@ -0,0 +1,152 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+/*!
+ \headerfile <QtConcurrentRun>
+ \title Asynchronous Run
+
+ \brief The <QtConcurrentRun> header provides a way to run a function in a
+ separate thread.
+
+ \ingroup thread
+
+ This function is a part of the \l {Concurrent Programming}{Qt Concurrent} framework.
+
+ The QtConcurrent::run() function runs a function in a separate thread.
+ The return value of the function is made available through the QFuture API.
+
+ \section1 Running a Function in a Separate Thread
+
+ To run a function in another thread, use QtConcurrent::run():
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp 0
+
+ This will run \e aFunction in a separate thread obtained from the default
+ QThreadPool. You can use the QFuture and QFutureWatcher classes to monitor
+ the status of the function.
+
+ \section1 Passing Arguments to the Function
+
+ Passing arguments to the function is done by adding them to the
+ QtConcurrent::run() call immediately after the function name. For example:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp 1
+
+ A copy of each argument is made at the point where QtConcurrent::run() is
+ called, and these values are passed to the thread when it begins executing
+ the function. Changes made to the arguments after calling
+ QtConcurrent::run() are \e not visible to the thread.
+
+ \section1 Returning Values from the Function
+
+ Any return value from the function is available via QFuture:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp 2
+
+ As documented above, passing arguments is done like this:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp 3
+
+ Note that the QFuture::result() function blocks and waits for the result
+ to become available. Use QFutureWatcher to get notification when the
+ function has finished execution and the result is available.
+
+ \section1 Additional API Features
+
+ \section2 Using Member Functions
+
+ QtConcurrent::run() also accepts pointers to member functions. The first
+ argument must be either a const reference or a pointer to an instance of
+ the class. Passing by const reference is useful when calling const member
+ functions; passing by pointer is useful for calling non-const member
+ functions that modify the instance.
+
+ For example, calling QByteArray::split() (a const member function) in a
+ separate thread is done like this:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp 4
+
+ Calling a non-const member function is done like this:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp 5
+
+ \section2 Using Bound Function Arguments
+
+ Note that Qt does not provide support for bound functions. This is
+ provided by 3rd party libraries like
+ \l{http://www.boost.org/libs/bind/bind.html}{Boost} or
+ \l{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf}
+ {C++ TR1 Library Extensions}.
+
+ You can use boost::bind() or std::tr1::bind() to \e bind a number of
+ arguments to a function when called. There are number of reasons for doing
+ this:
+
+ \list
+ \o To call a function that takes more than 5 arguments.
+ \o To simplify calling a function with constant arguments.
+ \o Changing the order of arguments.
+ \endlist
+
+ See the documentation for the relevant functions for details on how to use
+ the bind API.
+
+ Calling a bound function is done like this:
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp 6
+*/
+
+/*!
+ \fn QFuture<T> QtConcurrent::run(Function function, ...);
+ \relates <QtConcurrentRun>
+
+ Runs \a function in a separate thread. The thread is taken from the global
+ QThreadPool. Note that the function may not run immediately; the function
+ will only be run when a thread is available.
+
+ T is the same type as the return value of \a function. Non-void return
+ values can be accessed via the QFuture::result() function.
+
+ Note that the QFuture returned by QtConcurrent::run() does not support
+ canceling, pausing, or progress reporting. The QFuture returned can only
+ be used to query for the running/finished status and the return value of
+ the function.
+*/
diff --git a/src/concurrent/qtconcurrentrun.h b/src/concurrent/qtconcurrentrun.h
new file mode 100644
index 0000000000..d7285388da
--- /dev/null
+++ b/src/concurrent/qtconcurrentrun.h
@@ -0,0 +1,347 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+// Generated code, do not edit! Use generator at tools/qtconcurrent/generaterun/
+#ifndef QTCONCURRENT_RUN_H
+#define QTCONCURRENT_RUN_H
+
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_CONCURRENT
+
+#include <QtConcurrent/qtconcurrentrunbase.h>
+#include <QtConcurrent/qtconcurrentstoredfunctioncall.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+#ifdef qdoc
+
+namespace QtConcurrent {
+
+ template <typename T>
+ QFuture<T> run(Function function, ...);
+
+} // namespace QtConcurrent
+
+#else
+
+namespace QtConcurrent {
+
+template <typename T>
+QFuture<T> run(T (*functionPointer)())
+{
+ return (new StoredFunctorCall0<T, T (*)()>(functionPointer))->start();
+}
+template <typename T, typename Param1, typename Arg1>
+QFuture<T> run(T (*functionPointer)(Param1), const Arg1 &arg1)
+{
+ return (new StoredFunctorCall1<T, T (*)(Param1), Arg1>(functionPointer, arg1))->start();
+}
+template <typename T, typename Param1, typename Arg1, typename Param2, typename Arg2>
+QFuture<T> run(T (*functionPointer)(Param1, Param2), const Arg1 &arg1, const Arg2 &arg2)
+{
+ return (new StoredFunctorCall2<T, T (*)(Param1, Param2), Arg1, Arg2>(functionPointer, arg1, arg2))->start();
+}
+template <typename T, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
+QFuture<T> run(T (*functionPointer)(Param1, Param2, Param3), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3)
+{
+ return (new StoredFunctorCall3<T, T (*)(Param1, Param2, Param3), Arg1, Arg2, Arg3>(functionPointer, arg1, arg2, arg3))->start();
+}
+template <typename T, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
+QFuture<T> run(T (*functionPointer)(Param1, Param2, Param3, Param4), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4)
+{
+ return (new StoredFunctorCall4<T, T (*)(Param1, Param2, Param3, Param4), Arg1, Arg2, Arg3, Arg4>(functionPointer, arg1, arg2, arg3, arg4))->start();
+}
+template <typename T, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
+QFuture<T> run(T (*functionPointer)(Param1, Param2, Param3, Param4, Param5), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4, const Arg5 &arg5)
+{
+ return (new StoredFunctorCall5<T, T (*)(Param1, Param2, Param3, Param4, Param5), Arg1, Arg2, Arg3, Arg4, Arg5>(functionPointer, arg1, arg2, arg3, arg4, arg5))->start();
+}
+
+#ifdef Q_COMPILER_DECLTYPE
+
+template <typename Functor>
+auto run(Functor functor) -> typename QtPrivate::QEnableIf<!QtPrivate::HasResultType<Functor>::Value, QFuture<decltype(functor())> >::Type
+{
+ typedef decltype(functor()) result_type;
+ return (new StoredFunctorCall0<result_type, Functor>(functor))->start();
+}
+
+template <typename Functor, typename Arg1>
+auto run(Functor functor, const Arg1 &arg1)
+ -> typename QtPrivate::QEnableIf<!QtPrivate::HasResultType<Functor>::Value, QFuture<decltype(functor(arg1))> >::Type
+{
+ typedef decltype(functor(arg1)) result_type;
+ return (new StoredFunctorCall1<result_type, Functor, Arg1>(functor, arg1))->start();
+}
+
+template <typename Functor, typename Arg1, typename Arg2>
+auto run(Functor functor, const Arg1 &arg1, const Arg2 &arg2)
+ -> typename QtPrivate::QEnableIf<!QtPrivate::HasResultType<Functor>::Value, QFuture<decltype(functor(arg1, arg2))> >::Type
+{
+ typedef decltype(functor(arg1, arg2)) result_type;
+ return (new StoredFunctorCall2<result_type, Functor, Arg1, Arg2>(functor, arg1, arg2))->start();
+}
+
+template <typename Functor, typename Arg1, typename Arg2, typename Arg3>
+auto run(Functor functor, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3)
+ -> typename QtPrivate::QEnableIf<!QtPrivate::HasResultType<Functor>::Value, QFuture<decltype(functor(arg1, arg2, arg3))> >::Type
+{
+ typedef decltype(functor(arg1, arg2, arg3)) result_type;
+ return (new StoredFunctorCall3<result_type, Functor, Arg1, Arg2, Arg3>(functor, arg1, arg2, arg3))->start();
+}
+
+template <typename Functor, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
+auto run(Functor functor, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4)
+ -> typename QtPrivate::QEnableIf<!QtPrivate::HasResultType<Functor>::Value, QFuture<decltype(functor(arg1, arg2, arg3, arg4))> >::Type
+{
+ typedef decltype(functor(arg1, arg2, arg3, arg4)) result_type;
+ return (new StoredFunctorCall4<result_type, Functor, Arg1, Arg2, Arg3, Arg4>(functor, arg1, arg2, arg3, arg4))->start();
+}
+
+template <typename Functor, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
+auto run(Functor functor, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4, const Arg5 &arg5)
+ -> typename QtPrivate::QEnableIf<!QtPrivate::HasResultType<Functor>::Value, QFuture<decltype(functor(arg1, arg2, arg3, arg4, arg5))> >::Type
+{
+ typedef decltype(functor(arg1, arg2, arg3, arg4, arg5)) result_type;
+ return (new StoredFunctorCall5<result_type, Functor, Arg1, Arg2, Arg3, Arg4, Arg5>(functor, arg1, arg2, arg3, arg4, arg5))->start();
+}
+
+#endif
+
+template <typename FunctionObject>
+QFuture<typename FunctionObject::result_type> run(FunctionObject functionObject)
+{
+ return (new StoredFunctorCall0<QT_TYPENAME FunctionObject::result_type, FunctionObject>(functionObject))->start();
+}
+template <typename FunctionObject, typename Arg1>
+QFuture<typename FunctionObject::result_type> run(FunctionObject functionObject, const Arg1 &arg1)
+{
+ return (new StoredFunctorCall1<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1>(functionObject, arg1))->start();
+}
+template <typename FunctionObject, typename Arg1, typename Arg2>
+QFuture<typename FunctionObject::result_type> run(FunctionObject functionObject, const Arg1 &arg1, const Arg2 &arg2)
+{
+ return (new StoredFunctorCall2<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1, Arg2>(functionObject, arg1, arg2))->start();
+}
+template <typename FunctionObject, typename Arg1, typename Arg2, typename Arg3>
+QFuture<typename FunctionObject::result_type> run(FunctionObject functionObject, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3)
+{
+ return (new StoredFunctorCall3<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1, Arg2, Arg3>(functionObject, arg1, arg2, arg3))->start();
+}
+template <typename FunctionObject, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
+QFuture<typename FunctionObject::result_type> run(FunctionObject functionObject, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4)
+{
+ return (new StoredFunctorCall4<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1, Arg2, Arg3, Arg4>(functionObject, arg1, arg2, arg3, arg4))->start();
+}
+template <typename FunctionObject, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
+QFuture<typename FunctionObject::result_type> run(FunctionObject functionObject, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4, const Arg5 &arg5)
+{
+ return (new StoredFunctorCall5<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1, Arg2, Arg3, Arg4, Arg5>(functionObject, arg1, arg2, arg3, arg4, arg5))->start();
+}
+
+template <typename FunctionObject>
+QFuture<typename FunctionObject::result_type> run(FunctionObject *functionObject)
+{
+ return (new QT_TYPENAME SelectStoredFunctorPointerCall0<QT_TYPENAME FunctionObject::result_type, FunctionObject>::type(functionObject))->start();
+}
+template <typename FunctionObject, typename Arg1>
+QFuture<typename FunctionObject::result_type> run(FunctionObject *functionObject, const Arg1 &arg1)
+{
+ return (new QT_TYPENAME SelectStoredFunctorPointerCall1<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1>::type(functionObject, arg1))->start();
+}
+template <typename FunctionObject, typename Arg1, typename Arg2>
+QFuture<typename FunctionObject::result_type> run(FunctionObject *functionObject, const Arg1 &arg1, const Arg2 &arg2)
+{
+ return (new QT_TYPENAME SelectStoredFunctorPointerCall2<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1, Arg2>::type(functionObject, arg1, arg2))->start();
+}
+template <typename FunctionObject, typename Arg1, typename Arg2, typename Arg3>
+QFuture<typename FunctionObject::result_type> run(FunctionObject *functionObject, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3)
+{
+ return (new QT_TYPENAME SelectStoredFunctorPointerCall3<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1, Arg2, Arg3>::type(functionObject, arg1, arg2, arg3))->start();
+}
+template <typename FunctionObject, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
+QFuture<typename FunctionObject::result_type> run(FunctionObject *functionObject, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4)
+{
+ return (new QT_TYPENAME SelectStoredFunctorPointerCall4<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1, Arg2, Arg3, Arg4>::type(functionObject, arg1, arg2, arg3, arg4))->start();
+}
+template <typename FunctionObject, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
+QFuture<typename FunctionObject::result_type> run(FunctionObject *functionObject, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4, const Arg5 &arg5)
+{
+ return (new QT_TYPENAME SelectStoredFunctorPointerCall5<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1, Arg2, Arg3, Arg4, Arg5>::type(functionObject, arg1, arg2, arg3, arg4, arg5))->start();
+}
+
+template <typename T, typename Class>
+QFuture<T> run(const Class &object, T (Class::*fn)())
+{
+ return (new QT_TYPENAME SelectStoredMemberFunctionCall0<T, Class>::type(fn, object))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1>
+QFuture<T> run(const Class &object, T (Class::*fn)(Param1), const Arg1 &arg1)
+{
+ return (new QT_TYPENAME SelectStoredMemberFunctionCall1<T, Class, Param1, Arg1>::type(fn, object, arg1))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
+QFuture<T> run(const Class &object, T (Class::*fn)(Param1, Param2), const Arg1 &arg1, const Arg2 &arg2)
+{
+ return (new QT_TYPENAME SelectStoredMemberFunctionCall2<T, Class, Param1, Arg1, Param2, Arg2>::type(fn, object, arg1, arg2))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
+QFuture<T> run(const Class &object, T (Class::*fn)(Param1, Param2, Param3), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3)
+{
+ return (new QT_TYPENAME SelectStoredMemberFunctionCall3<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3>::type(fn, object, arg1, arg2, arg3))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
+QFuture<T> run(const Class &object, T (Class::*fn)(Param1, Param2, Param3, Param4), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4)
+{
+ return (new QT_TYPENAME SelectStoredMemberFunctionCall4<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4>::type(fn, object, arg1, arg2, arg3, arg4))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
+QFuture<T> run(const Class &object, T (Class::*fn)(Param1, Param2, Param3, Param4, Param5), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4, const Arg5 &arg5)
+{
+ return (new QT_TYPENAME SelectStoredMemberFunctionCall5<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5>::type(fn, object, arg1, arg2, arg3, arg4, arg5))->start();
+}
+
+template <typename T, typename Class>
+QFuture<T> run(const Class &object, T (Class::*fn)() const)
+{
+ return (new QT_TYPENAME SelectStoredConstMemberFunctionCall0<T, Class>::type(fn, object))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1>
+QFuture<T> run(const Class &object, T (Class::*fn)(Param1) const, const Arg1 &arg1)
+{
+ return (new QT_TYPENAME SelectStoredConstMemberFunctionCall1<T, Class, Param1, Arg1>::type(fn, object, arg1))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
+QFuture<T> run(const Class &object, T (Class::*fn)(Param1, Param2) const, const Arg1 &arg1, const Arg2 &arg2)
+{
+ return (new QT_TYPENAME SelectStoredConstMemberFunctionCall2<T, Class, Param1, Arg1, Param2, Arg2>::type(fn, object, arg1, arg2))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
+QFuture<T> run(const Class &object, T (Class::*fn)(Param1, Param2, Param3) const, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3)
+{
+ return (new QT_TYPENAME SelectStoredConstMemberFunctionCall3<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3>::type(fn, object, arg1, arg2, arg3))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
+QFuture<T> run(const Class &object, T (Class::*fn)(Param1, Param2, Param3, Param4) const, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4)
+{
+ return (new QT_TYPENAME SelectStoredConstMemberFunctionCall4<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4>::type(fn, object, arg1, arg2, arg3, arg4))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
+QFuture<T> run(const Class &object, T (Class::*fn)(Param1, Param2, Param3, Param4, Param5) const, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4, const Arg5 &arg5)
+{
+ return (new QT_TYPENAME SelectStoredConstMemberFunctionCall5<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5>::type(fn, object, arg1, arg2, arg3, arg4, arg5))->start();
+}
+
+template <typename T, typename Class>
+QFuture<T> run(Class *object, T (Class::*fn)())
+{
+ return (new QT_TYPENAME SelectStoredMemberFunctionPointerCall0<T, Class>::type(fn, object))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1>
+QFuture<T> run(Class *object, T (Class::*fn)(Param1), const Arg1 &arg1)
+{
+ return (new QT_TYPENAME SelectStoredMemberFunctionPointerCall1<T, Class, Param1, Arg1>::type(fn, object, arg1))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
+QFuture<T> run(Class *object, T (Class::*fn)(Param1, Param2), const Arg1 &arg1, const Arg2 &arg2)
+{
+ return (new QT_TYPENAME SelectStoredMemberFunctionPointerCall2<T, Class, Param1, Arg1, Param2, Arg2>::type(fn, object, arg1, arg2))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
+QFuture<T> run(Class *object, T (Class::*fn)(Param1, Param2, Param3), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3)
+{
+ return (new QT_TYPENAME SelectStoredMemberFunctionPointerCall3<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3>::type(fn, object, arg1, arg2, arg3))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
+QFuture<T> run(Class *object, T (Class::*fn)(Param1, Param2, Param3, Param4), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4)
+{
+ return (new QT_TYPENAME SelectStoredMemberFunctionPointerCall4<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4>::type(fn, object, arg1, arg2, arg3, arg4))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
+QFuture<T> run(Class *object, T (Class::*fn)(Param1, Param2, Param3, Param4, Param5), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4, const Arg5 &arg5)
+{
+ return (new QT_TYPENAME SelectStoredMemberFunctionPointerCall5<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5>::type(fn, object, arg1, arg2, arg3, arg4, arg5))->start();
+}
+
+template <typename T, typename Class>
+QFuture<T> run(const Class *object, T (Class::*fn)() const)
+{
+ return (new QT_TYPENAME SelectStoredConstMemberFunctionPointerCall0<T, Class>::type(fn, object))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1>
+QFuture<T> run(const Class *object, T (Class::*fn)(Param1) const, const Arg1 &arg1)
+{
+ return (new QT_TYPENAME SelectStoredConstMemberFunctionPointerCall1<T, Class, Param1, Arg1>::type(fn, object, arg1))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
+QFuture<T> run(const Class *object, T (Class::*fn)(Param1, Param2) const, const Arg1 &arg1, const Arg2 &arg2)
+{
+ return (new QT_TYPENAME SelectStoredConstMemberFunctionPointerCall2<T, Class, Param1, Arg1, Param2, Arg2>::type(fn, object, arg1, arg2))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
+QFuture<T> run(const Class *object, T (Class::*fn)(Param1, Param2, Param3) const, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3)
+{
+ return (new QT_TYPENAME SelectStoredConstMemberFunctionPointerCall3<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3>::type(fn, object, arg1, arg2, arg3))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
+QFuture<T> run(const Class *object, T (Class::*fn)(Param1, Param2, Param3, Param4) const, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4)
+{
+ return (new QT_TYPENAME SelectStoredConstMemberFunctionPointerCall4<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4>::type(fn, object, arg1, arg2, arg3, arg4))->start();
+}
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
+QFuture<T> run(const Class *object, T (Class::*fn)(Param1, Param2, Param3, Param4, Param5) const, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4, const Arg5 &arg5)
+{
+ return (new QT_TYPENAME SelectStoredConstMemberFunctionPointerCall5<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5>::type(fn, object, arg1, arg2, arg3, arg4, arg5))->start();
+}
+
+} //namespace QtConcurrent
+
+#endif // qdoc
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif
diff --git a/src/concurrent/qtconcurrentrunbase.h b/src/concurrent/qtconcurrentrunbase.h
new file mode 100644
index 0000000000..2105437ede
--- /dev/null
+++ b/src/concurrent/qtconcurrentrunbase.h
@@ -0,0 +1,154 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QTCONCURRENT_RUNBASE_H
+#define QTCONCURRENT_RUNBASE_H
+
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_CONCURRENT
+
+#include <QtConcurrent/qfuture.h>
+#include <QtCore/qrunnable.h>
+#include <QtCore/qthreadpool.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+#ifndef qdoc
+
+namespace QtConcurrent {
+
+template <typename T>
+struct SelectSpecialization
+{
+ template <class Normal, class Void>
+ struct Type { typedef Normal type; };
+};
+
+template <>
+struct SelectSpecialization<void>
+{
+ template <class Normal, class Void>
+ struct Type { typedef Void type; };
+};
+
+template <typename T>
+class RunFunctionTaskBase : public QFutureInterface<T> , public QRunnable
+{
+public:
+ QFuture<T> start()
+ {
+ this->setRunnable(this);
+ this->reportStarted();
+ QFuture<T> theFuture = this->future();
+ QThreadPool::globalInstance()->start(this, /*m_priority*/ 0);
+ return theFuture;
+ }
+
+ void run() {}
+ virtual void runFunctor() = 0;
+};
+
+template <typename T>
+class RunFunctionTask : public RunFunctionTaskBase<T>
+{
+public:
+ void run()
+ {
+ if (this->isCanceled()) {
+ this->reportFinished();
+ return;
+ }
+#ifndef QT_NO_EXCEPTIONS
+ try {
+#endif
+ this->runFunctor();
+#ifndef QT_NO_EXCEPTIONS
+ } catch (QtConcurrent::Exception &e) {
+ QFutureInterface<T>::reportException(e);
+ } catch (...) {
+ QFutureInterface<T>::reportException(QtConcurrent::UnhandledException());
+ }
+#endif
+
+ this->reportResult(result);
+ this->reportFinished();
+ }
+ T result;
+};
+
+template <>
+class RunFunctionTask<void> : public RunFunctionTaskBase<void>
+{
+public:
+ void run()
+ {
+ if (this->isCanceled()) {
+ this->reportFinished();
+ return;
+ }
+#ifndef QT_NO_EXCEPTIONS
+ try {
+#endif
+ this->runFunctor();
+#ifndef QT_NO_EXCEPTIONS
+ } catch (QtConcurrent::Exception &e) {
+ QFutureInterface<void>::reportException(e);
+ } catch (...) {
+ QFutureInterface<void>::reportException(QtConcurrent::UnhandledException());
+ }
+#endif
+ this->reportFinished();
+ }
+};
+
+} //namespace QtConcurrent
+
+#endif //qdoc
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif
diff --git a/src/concurrent/qtconcurrentstoredfunctioncall.h b/src/concurrent/qtconcurrentstoredfunctioncall.h
new file mode 100644
index 0000000000..c311a72427
--- /dev/null
+++ b/src/concurrent/qtconcurrentstoredfunctioncall.h
@@ -0,0 +1,1312 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+// Generated code, do not edit! Use generator at tools/qtconcurrent/generaterun/
+#ifndef QTCONCURRENT_STOREDFUNCTIONCALL_H
+#define QTCONCURRENT_STOREDFUNCTIONCALL_H
+
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_CONCURRENT
+#include <QtConcurrent/qtconcurrentrunbase.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+#ifndef qdoc
+
+namespace QtConcurrent {
+template <typename T, typename FunctionPointer>
+struct StoredFunctorCall0: public RunFunctionTask<T>
+{
+ inline StoredFunctorCall0(FunctionPointer _function)
+ : function(_function) {}
+ void runFunctor() { this->result = function(); }
+ FunctionPointer function;
+
+};
+
+template <typename FunctionPointer>
+struct StoredFunctorCall0<void, FunctionPointer>: public RunFunctionTask<void>
+{
+ inline StoredFunctorCall0(FunctionPointer _function)
+ : function(_function) {}
+ void runFunctor() { function(); }
+ FunctionPointer function;
+
+};
+
+template <typename T, typename FunctionPointer>
+struct StoredFunctorPointerCall0: public RunFunctionTask<T>
+{
+ inline StoredFunctorPointerCall0(FunctionPointer * _function)
+ : function(_function) {}
+ void runFunctor() { this->result =(*function)(); }
+ FunctionPointer * function;
+
+};
+
+template <typename T, typename FunctionPointer>
+struct VoidStoredFunctorPointerCall0: public RunFunctionTask<T>
+{
+ inline VoidStoredFunctorPointerCall0(FunctionPointer * _function)
+ : function(_function) {}
+ void runFunctor() {(*function)(); }
+ FunctionPointer * function;
+
+};
+
+template <typename T, typename FunctionPointer>
+struct SelectStoredFunctorPointerCall0
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredFunctorPointerCall0 <T, FunctionPointer>,
+ VoidStoredFunctorPointerCall0<T, FunctionPointer> >::type type;
+};
+template <typename T, typename Class>
+class StoredMemberFunctionCall0 : public RunFunctionTask<T>
+{
+public:
+ StoredMemberFunctionCall0(T (Class::*_fn)() , const Class &_object)
+ : fn(_fn), object(_object){ }
+
+ void runFunctor()
+ {
+ this->result = (object.*fn)();
+ }
+private:
+ T (Class::*fn)();
+ Class object;
+
+};
+template <typename T, typename Class>
+class VoidStoredMemberFunctionCall0 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredMemberFunctionCall0(T (Class::*_fn)() , const Class &_object)
+ : fn(_fn), object(_object){ }
+
+ void runFunctor()
+ {
+ (object.*fn)();
+ }
+private:
+ T (Class::*fn)();
+ Class object;
+
+};
+template <typename T, typename Class>
+struct SelectStoredMemberFunctionCall0
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredMemberFunctionCall0 <T, Class>,
+ VoidStoredMemberFunctionCall0<T, Class> >::type type;
+};
+template <typename T, typename Class>
+class StoredConstMemberFunctionCall0 : public RunFunctionTask<T>
+{
+public:
+ StoredConstMemberFunctionCall0(T (Class::*_fn)() const, const Class &_object)
+ : fn(_fn), object(_object){ }
+
+ void runFunctor()
+ {
+ this->result = (object.*fn)();
+ }
+private:
+ T (Class::*fn)()const;
+ const Class object;
+
+};
+template <typename T, typename Class>
+class VoidStoredConstMemberFunctionCall0 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredConstMemberFunctionCall0(T (Class::*_fn)() const, const Class &_object)
+ : fn(_fn), object(_object){ }
+
+ void runFunctor()
+ {
+ (object.*fn)();
+ }
+private:
+ T (Class::*fn)()const;
+ const Class object;
+
+};
+template <typename T, typename Class>
+struct SelectStoredConstMemberFunctionCall0
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredConstMemberFunctionCall0 <T, Class>,
+ VoidStoredConstMemberFunctionCall0<T, Class> >::type type;
+};
+template <typename T, typename Class>
+class StoredMemberFunctionPointerCall0 : public RunFunctionTask<T>
+{
+public:
+ StoredMemberFunctionPointerCall0(T (Class::*_fn)() , Class *_object)
+ : fn(_fn), object(_object){ }
+
+ void runFunctor()
+ {
+ this->result = (object->*fn)();
+ }
+private:
+ T (Class::*fn)();
+ Class *object;
+
+};
+template <typename T, typename Class>
+class VoidStoredMemberFunctionPointerCall0 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredMemberFunctionPointerCall0(T (Class::*_fn)() , Class *_object)
+ : fn(_fn), object(_object){ }
+
+ void runFunctor()
+ {
+ (object->*fn)();
+ }
+private:
+ T (Class::*fn)();
+ Class *object;
+
+};
+template <typename T, typename Class>
+struct SelectStoredMemberFunctionPointerCall0
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredMemberFunctionPointerCall0 <T, Class>,
+ VoidStoredMemberFunctionPointerCall0<T, Class> >::type type;
+};
+template <typename T, typename Class>
+class StoredConstMemberFunctionPointerCall0 : public RunFunctionTask<T>
+{
+public:
+ StoredConstMemberFunctionPointerCall0(T (Class::*_fn)() const, Class const *_object)
+ : fn(_fn), object(_object){ }
+
+ void runFunctor()
+ {
+ this->result = (object->*fn)();
+ }
+private:
+ T (Class::*fn)()const;
+ Class const *object;
+
+};
+template <typename T, typename Class>
+class VoidStoredConstMemberFunctionPointerCall0 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredConstMemberFunctionPointerCall0(T (Class::*_fn)() const, Class const *_object)
+ : fn(_fn), object(_object){ }
+
+ void runFunctor()
+ {
+ (object->*fn)();
+ }
+private:
+ T (Class::*fn)()const;
+ Class const *object;
+
+};
+template <typename T, typename Class>
+struct SelectStoredConstMemberFunctionPointerCall0
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredConstMemberFunctionPointerCall0 <T, Class>,
+ VoidStoredConstMemberFunctionPointerCall0<T, Class> >::type type;
+};
+template <typename T, typename FunctionPointer, typename Arg1>
+struct StoredFunctorCall1: public RunFunctionTask<T>
+{
+ inline StoredFunctorCall1(FunctionPointer _function, const Arg1 &_arg1)
+ : function(_function), arg1(_arg1) {}
+ void runFunctor() { this->result = function(arg1); }
+ FunctionPointer function;
+ Arg1 arg1;
+};
+
+template <typename FunctionPointer, typename Arg1>
+struct StoredFunctorCall1<void, FunctionPointer, Arg1>: public RunFunctionTask<void>
+{
+ inline StoredFunctorCall1(FunctionPointer _function, const Arg1 &_arg1)
+ : function(_function), arg1(_arg1) {}
+ void runFunctor() { function(arg1); }
+ FunctionPointer function;
+ Arg1 arg1;
+};
+
+template <typename T, typename FunctionPointer, typename Arg1>
+struct StoredFunctorPointerCall1: public RunFunctionTask<T>
+{
+ inline StoredFunctorPointerCall1(FunctionPointer * _function, const Arg1 &_arg1)
+ : function(_function), arg1(_arg1) {}
+ void runFunctor() { this->result =(*function)(arg1); }
+ FunctionPointer * function;
+ Arg1 arg1;
+};
+
+template <typename T, typename FunctionPointer, typename Arg1>
+struct VoidStoredFunctorPointerCall1: public RunFunctionTask<T>
+{
+ inline VoidStoredFunctorPointerCall1(FunctionPointer * _function, const Arg1 &_arg1)
+ : function(_function), arg1(_arg1) {}
+ void runFunctor() {(*function)(arg1); }
+ FunctionPointer * function;
+ Arg1 arg1;
+};
+
+template <typename T, typename FunctionPointer, typename Arg1>
+struct SelectStoredFunctorPointerCall1
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredFunctorPointerCall1 <T, FunctionPointer, Arg1>,
+ VoidStoredFunctorPointerCall1<T, FunctionPointer, Arg1> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1>
+class StoredMemberFunctionCall1 : public RunFunctionTask<T>
+{
+public:
+ StoredMemberFunctionCall1(T (Class::*_fn)(Param1) , const Class &_object, const Arg1 &_arg1)
+ : fn(_fn), object(_object), arg1(_arg1){ }
+
+ void runFunctor()
+ {
+ this->result = (object.*fn)(arg1);
+ }
+private:
+ T (Class::*fn)(Param1);
+ Class object;
+ Arg1 arg1;
+};
+template <typename T, typename Class, typename Param1, typename Arg1>
+class VoidStoredMemberFunctionCall1 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredMemberFunctionCall1(T (Class::*_fn)(Param1) , const Class &_object, const Arg1 &_arg1)
+ : fn(_fn), object(_object), arg1(_arg1){ }
+
+ void runFunctor()
+ {
+ (object.*fn)(arg1);
+ }
+private:
+ T (Class::*fn)(Param1);
+ Class object;
+ Arg1 arg1;
+};
+template <typename T, typename Class, typename Param1, typename Arg1>
+struct SelectStoredMemberFunctionCall1
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredMemberFunctionCall1 <T, Class, Param1, Arg1>,
+ VoidStoredMemberFunctionCall1<T, Class, Param1, Arg1> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1>
+class StoredConstMemberFunctionCall1 : public RunFunctionTask<T>
+{
+public:
+ StoredConstMemberFunctionCall1(T (Class::*_fn)(Param1) const, const Class &_object, const Arg1 &_arg1)
+ : fn(_fn), object(_object), arg1(_arg1){ }
+
+ void runFunctor()
+ {
+ this->result = (object.*fn)(arg1);
+ }
+private:
+ T (Class::*fn)(Param1)const;
+ const Class object;
+ Arg1 arg1;
+};
+template <typename T, typename Class, typename Param1, typename Arg1>
+class VoidStoredConstMemberFunctionCall1 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredConstMemberFunctionCall1(T (Class::*_fn)(Param1) const, const Class &_object, const Arg1 &_arg1)
+ : fn(_fn), object(_object), arg1(_arg1){ }
+
+ void runFunctor()
+ {
+ (object.*fn)(arg1);
+ }
+private:
+ T (Class::*fn)(Param1)const;
+ const Class object;
+ Arg1 arg1;
+};
+template <typename T, typename Class, typename Param1, typename Arg1>
+struct SelectStoredConstMemberFunctionCall1
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredConstMemberFunctionCall1 <T, Class, Param1, Arg1>,
+ VoidStoredConstMemberFunctionCall1<T, Class, Param1, Arg1> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1>
+class StoredMemberFunctionPointerCall1 : public RunFunctionTask<T>
+{
+public:
+ StoredMemberFunctionPointerCall1(T (Class::*_fn)(Param1) , Class *_object, const Arg1 &_arg1)
+ : fn(_fn), object(_object), arg1(_arg1){ }
+
+ void runFunctor()
+ {
+ this->result = (object->*fn)(arg1);
+ }
+private:
+ T (Class::*fn)(Param1);
+ Class *object;
+ Arg1 arg1;
+};
+template <typename T, typename Class, typename Param1, typename Arg1>
+class VoidStoredMemberFunctionPointerCall1 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredMemberFunctionPointerCall1(T (Class::*_fn)(Param1) , Class *_object, const Arg1 &_arg1)
+ : fn(_fn), object(_object), arg1(_arg1){ }
+
+ void runFunctor()
+ {
+ (object->*fn)(arg1);
+ }
+private:
+ T (Class::*fn)(Param1);
+ Class *object;
+ Arg1 arg1;
+};
+template <typename T, typename Class, typename Param1, typename Arg1>
+struct SelectStoredMemberFunctionPointerCall1
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredMemberFunctionPointerCall1 <T, Class, Param1, Arg1>,
+ VoidStoredMemberFunctionPointerCall1<T, Class, Param1, Arg1> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1>
+class StoredConstMemberFunctionPointerCall1 : public RunFunctionTask<T>
+{
+public:
+ StoredConstMemberFunctionPointerCall1(T (Class::*_fn)(Param1) const, Class const *_object, const Arg1 &_arg1)
+ : fn(_fn), object(_object), arg1(_arg1){ }
+
+ void runFunctor()
+ {
+ this->result = (object->*fn)(arg1);
+ }
+private:
+ T (Class::*fn)(Param1)const;
+ Class const *object;
+ Arg1 arg1;
+};
+template <typename T, typename Class, typename Param1, typename Arg1>
+class VoidStoredConstMemberFunctionPointerCall1 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredConstMemberFunctionPointerCall1(T (Class::*_fn)(Param1) const, Class const *_object, const Arg1 &_arg1)
+ : fn(_fn), object(_object), arg1(_arg1){ }
+
+ void runFunctor()
+ {
+ (object->*fn)(arg1);
+ }
+private:
+ T (Class::*fn)(Param1)const;
+ Class const *object;
+ Arg1 arg1;
+};
+template <typename T, typename Class, typename Param1, typename Arg1>
+struct SelectStoredConstMemberFunctionPointerCall1
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredConstMemberFunctionPointerCall1 <T, Class, Param1, Arg1>,
+ VoidStoredConstMemberFunctionPointerCall1<T, Class, Param1, Arg1> >::type type;
+};
+template <typename T, typename FunctionPointer, typename Arg1, typename Arg2>
+struct StoredFunctorCall2: public RunFunctionTask<T>
+{
+ inline StoredFunctorCall2(FunctionPointer _function, const Arg1 &_arg1, const Arg2 &_arg2)
+ : function(_function), arg1(_arg1), arg2(_arg2) {}
+ void runFunctor() { this->result = function(arg1, arg2); }
+ FunctionPointer function;
+ Arg1 arg1; Arg2 arg2;
+};
+
+template <typename FunctionPointer, typename Arg1, typename Arg2>
+struct StoredFunctorCall2<void, FunctionPointer, Arg1, Arg2>: public RunFunctionTask<void>
+{
+ inline StoredFunctorCall2(FunctionPointer _function, const Arg1 &_arg1, const Arg2 &_arg2)
+ : function(_function), arg1(_arg1), arg2(_arg2) {}
+ void runFunctor() { function(arg1, arg2); }
+ FunctionPointer function;
+ Arg1 arg1; Arg2 arg2;
+};
+
+template <typename T, typename FunctionPointer, typename Arg1, typename Arg2>
+struct StoredFunctorPointerCall2: public RunFunctionTask<T>
+{
+ inline StoredFunctorPointerCall2(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2)
+ : function(_function), arg1(_arg1), arg2(_arg2) {}
+ void runFunctor() { this->result =(*function)(arg1, arg2); }
+ FunctionPointer * function;
+ Arg1 arg1; Arg2 arg2;
+};
+
+template <typename T, typename FunctionPointer, typename Arg1, typename Arg2>
+struct VoidStoredFunctorPointerCall2: public RunFunctionTask<T>
+{
+ inline VoidStoredFunctorPointerCall2(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2)
+ : function(_function), arg1(_arg1), arg2(_arg2) {}
+ void runFunctor() {(*function)(arg1, arg2); }
+ FunctionPointer * function;
+ Arg1 arg1; Arg2 arg2;
+};
+
+template <typename T, typename FunctionPointer, typename Arg1, typename Arg2>
+struct SelectStoredFunctorPointerCall2
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredFunctorPointerCall2 <T, FunctionPointer, Arg1, Arg2>,
+ VoidStoredFunctorPointerCall2<T, FunctionPointer, Arg1, Arg2> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
+class StoredMemberFunctionCall2 : public RunFunctionTask<T>
+{
+public:
+ StoredMemberFunctionCall2(T (Class::*_fn)(Param1, Param2) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
+
+ void runFunctor()
+ {
+ this->result = (object.*fn)(arg1, arg2);
+ }
+private:
+ T (Class::*fn)(Param1, Param2);
+ Class object;
+ Arg1 arg1; Arg2 arg2;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
+class VoidStoredMemberFunctionCall2 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredMemberFunctionCall2(T (Class::*_fn)(Param1, Param2) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
+
+ void runFunctor()
+ {
+ (object.*fn)(arg1, arg2);
+ }
+private:
+ T (Class::*fn)(Param1, Param2);
+ Class object;
+ Arg1 arg1; Arg2 arg2;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
+struct SelectStoredMemberFunctionCall2
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredMemberFunctionCall2 <T, Class, Param1, Arg1, Param2, Arg2>,
+ VoidStoredMemberFunctionCall2<T, Class, Param1, Arg1, Param2, Arg2> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
+class StoredConstMemberFunctionCall2 : public RunFunctionTask<T>
+{
+public:
+ StoredConstMemberFunctionCall2(T (Class::*_fn)(Param1, Param2) const, const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
+
+ void runFunctor()
+ {
+ this->result = (object.*fn)(arg1, arg2);
+ }
+private:
+ T (Class::*fn)(Param1, Param2)const;
+ const Class object;
+ Arg1 arg1; Arg2 arg2;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
+class VoidStoredConstMemberFunctionCall2 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredConstMemberFunctionCall2(T (Class::*_fn)(Param1, Param2) const, const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
+
+ void runFunctor()
+ {
+ (object.*fn)(arg1, arg2);
+ }
+private:
+ T (Class::*fn)(Param1, Param2)const;
+ const Class object;
+ Arg1 arg1; Arg2 arg2;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
+struct SelectStoredConstMemberFunctionCall2
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredConstMemberFunctionCall2 <T, Class, Param1, Arg1, Param2, Arg2>,
+ VoidStoredConstMemberFunctionCall2<T, Class, Param1, Arg1, Param2, Arg2> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
+class StoredMemberFunctionPointerCall2 : public RunFunctionTask<T>
+{
+public:
+ StoredMemberFunctionPointerCall2(T (Class::*_fn)(Param1, Param2) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
+
+ void runFunctor()
+ {
+ this->result = (object->*fn)(arg1, arg2);
+ }
+private:
+ T (Class::*fn)(Param1, Param2);
+ Class *object;
+ Arg1 arg1; Arg2 arg2;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
+class VoidStoredMemberFunctionPointerCall2 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredMemberFunctionPointerCall2(T (Class::*_fn)(Param1, Param2) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
+
+ void runFunctor()
+ {
+ (object->*fn)(arg1, arg2);
+ }
+private:
+ T (Class::*fn)(Param1, Param2);
+ Class *object;
+ Arg1 arg1; Arg2 arg2;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
+struct SelectStoredMemberFunctionPointerCall2
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredMemberFunctionPointerCall2 <T, Class, Param1, Arg1, Param2, Arg2>,
+ VoidStoredMemberFunctionPointerCall2<T, Class, Param1, Arg1, Param2, Arg2> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
+class StoredConstMemberFunctionPointerCall2 : public RunFunctionTask<T>
+{
+public:
+ StoredConstMemberFunctionPointerCall2(T (Class::*_fn)(Param1, Param2) const, Class const *_object, const Arg1 &_arg1, const Arg2 &_arg2)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
+
+ void runFunctor()
+ {
+ this->result = (object->*fn)(arg1, arg2);
+ }
+private:
+ T (Class::*fn)(Param1, Param2)const;
+ Class const *object;
+ Arg1 arg1; Arg2 arg2;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
+class VoidStoredConstMemberFunctionPointerCall2 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredConstMemberFunctionPointerCall2(T (Class::*_fn)(Param1, Param2) const, Class const *_object, const Arg1 &_arg1, const Arg2 &_arg2)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
+
+ void runFunctor()
+ {
+ (object->*fn)(arg1, arg2);
+ }
+private:
+ T (Class::*fn)(Param1, Param2)const;
+ Class const *object;
+ Arg1 arg1; Arg2 arg2;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
+struct SelectStoredConstMemberFunctionPointerCall2
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredConstMemberFunctionPointerCall2 <T, Class, Param1, Arg1, Param2, Arg2>,
+ VoidStoredConstMemberFunctionPointerCall2<T, Class, Param1, Arg1, Param2, Arg2> >::type type;
+};
+template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3>
+struct StoredFunctorCall3: public RunFunctionTask<T>
+{
+ inline StoredFunctorCall3(FunctionPointer _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
+ : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3) {}
+ void runFunctor() { this->result = function(arg1, arg2, arg3); }
+ FunctionPointer function;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3;
+};
+
+template <typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3>
+struct StoredFunctorCall3<void, FunctionPointer, Arg1, Arg2, Arg3>: public RunFunctionTask<void>
+{
+ inline StoredFunctorCall3(FunctionPointer _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
+ : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3) {}
+ void runFunctor() { function(arg1, arg2, arg3); }
+ FunctionPointer function;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3;
+};
+
+template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3>
+struct StoredFunctorPointerCall3: public RunFunctionTask<T>
+{
+ inline StoredFunctorPointerCall3(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
+ : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3) {}
+ void runFunctor() { this->result =(*function)(arg1, arg2, arg3); }
+ FunctionPointer * function;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3;
+};
+
+template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3>
+struct VoidStoredFunctorPointerCall3: public RunFunctionTask<T>
+{
+ inline VoidStoredFunctorPointerCall3(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
+ : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3) {}
+ void runFunctor() {(*function)(arg1, arg2, arg3); }
+ FunctionPointer * function;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3;
+};
+
+template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3>
+struct SelectStoredFunctorPointerCall3
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredFunctorPointerCall3 <T, FunctionPointer, Arg1, Arg2, Arg3>,
+ VoidStoredFunctorPointerCall3<T, FunctionPointer, Arg1, Arg2, Arg3> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
+class StoredMemberFunctionCall3 : public RunFunctionTask<T>
+{
+public:
+ StoredMemberFunctionCall3(T (Class::*_fn)(Param1, Param2, Param3) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
+
+ void runFunctor()
+ {
+ this->result = (object.*fn)(arg1, arg2, arg3);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3);
+ Class object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
+class VoidStoredMemberFunctionCall3 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredMemberFunctionCall3(T (Class::*_fn)(Param1, Param2, Param3) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
+
+ void runFunctor()
+ {
+ (object.*fn)(arg1, arg2, arg3);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3);
+ Class object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
+struct SelectStoredMemberFunctionCall3
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredMemberFunctionCall3 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3>,
+ VoidStoredMemberFunctionCall3<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
+class StoredConstMemberFunctionCall3 : public RunFunctionTask<T>
+{
+public:
+ StoredConstMemberFunctionCall3(T (Class::*_fn)(Param1, Param2, Param3) const, const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
+
+ void runFunctor()
+ {
+ this->result = (object.*fn)(arg1, arg2, arg3);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3)const;
+ const Class object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
+class VoidStoredConstMemberFunctionCall3 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredConstMemberFunctionCall3(T (Class::*_fn)(Param1, Param2, Param3) const, const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
+
+ void runFunctor()
+ {
+ (object.*fn)(arg1, arg2, arg3);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3)const;
+ const Class object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
+struct SelectStoredConstMemberFunctionCall3
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredConstMemberFunctionCall3 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3>,
+ VoidStoredConstMemberFunctionCall3<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
+class StoredMemberFunctionPointerCall3 : public RunFunctionTask<T>
+{
+public:
+ StoredMemberFunctionPointerCall3(T (Class::*_fn)(Param1, Param2, Param3) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
+
+ void runFunctor()
+ {
+ this->result = (object->*fn)(arg1, arg2, arg3);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3);
+ Class *object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
+class VoidStoredMemberFunctionPointerCall3 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredMemberFunctionPointerCall3(T (Class::*_fn)(Param1, Param2, Param3) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
+
+ void runFunctor()
+ {
+ (object->*fn)(arg1, arg2, arg3);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3);
+ Class *object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
+struct SelectStoredMemberFunctionPointerCall3
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredMemberFunctionPointerCall3 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3>,
+ VoidStoredMemberFunctionPointerCall3<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
+class StoredConstMemberFunctionPointerCall3 : public RunFunctionTask<T>
+{
+public:
+ StoredConstMemberFunctionPointerCall3(T (Class::*_fn)(Param1, Param2, Param3) const, Class const *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
+
+ void runFunctor()
+ {
+ this->result = (object->*fn)(arg1, arg2, arg3);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3)const;
+ Class const *object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
+class VoidStoredConstMemberFunctionPointerCall3 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredConstMemberFunctionPointerCall3(T (Class::*_fn)(Param1, Param2, Param3) const, Class const *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
+
+ void runFunctor()
+ {
+ (object->*fn)(arg1, arg2, arg3);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3)const;
+ Class const *object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
+struct SelectStoredConstMemberFunctionPointerCall3
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredConstMemberFunctionPointerCall3 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3>,
+ VoidStoredConstMemberFunctionPointerCall3<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3> >::type type;
+};
+template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
+struct StoredFunctorCall4: public RunFunctionTask<T>
+{
+ inline StoredFunctorCall4(FunctionPointer _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
+ : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4) {}
+ void runFunctor() { this->result = function(arg1, arg2, arg3, arg4); }
+ FunctionPointer function;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
+};
+
+template <typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
+struct StoredFunctorCall4<void, FunctionPointer, Arg1, Arg2, Arg3, Arg4>: public RunFunctionTask<void>
+{
+ inline StoredFunctorCall4(FunctionPointer _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
+ : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4) {}
+ void runFunctor() { function(arg1, arg2, arg3, arg4); }
+ FunctionPointer function;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
+};
+
+template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
+struct StoredFunctorPointerCall4: public RunFunctionTask<T>
+{
+ inline StoredFunctorPointerCall4(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
+ : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4) {}
+ void runFunctor() { this->result =(*function)(arg1, arg2, arg3, arg4); }
+ FunctionPointer * function;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
+};
+
+template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
+struct VoidStoredFunctorPointerCall4: public RunFunctionTask<T>
+{
+ inline VoidStoredFunctorPointerCall4(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
+ : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4) {}
+ void runFunctor() {(*function)(arg1, arg2, arg3, arg4); }
+ FunctionPointer * function;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
+};
+
+template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
+struct SelectStoredFunctorPointerCall4
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredFunctorPointerCall4 <T, FunctionPointer, Arg1, Arg2, Arg3, Arg4>,
+ VoidStoredFunctorPointerCall4<T, FunctionPointer, Arg1, Arg2, Arg3, Arg4> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
+class StoredMemberFunctionCall4 : public RunFunctionTask<T>
+{
+public:
+ StoredMemberFunctionCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
+
+ void runFunctor()
+ {
+ this->result = (object.*fn)(arg1, arg2, arg3, arg4);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3, Param4);
+ Class object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
+class VoidStoredMemberFunctionCall4 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredMemberFunctionCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
+
+ void runFunctor()
+ {
+ (object.*fn)(arg1, arg2, arg3, arg4);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3, Param4);
+ Class object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
+struct SelectStoredMemberFunctionCall4
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredMemberFunctionCall4 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4>,
+ VoidStoredMemberFunctionCall4<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
+class StoredConstMemberFunctionCall4 : public RunFunctionTask<T>
+{
+public:
+ StoredConstMemberFunctionCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) const, const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
+
+ void runFunctor()
+ {
+ this->result = (object.*fn)(arg1, arg2, arg3, arg4);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3, Param4)const;
+ const Class object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
+class VoidStoredConstMemberFunctionCall4 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredConstMemberFunctionCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) const, const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
+
+ void runFunctor()
+ {
+ (object.*fn)(arg1, arg2, arg3, arg4);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3, Param4)const;
+ const Class object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
+struct SelectStoredConstMemberFunctionCall4
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredConstMemberFunctionCall4 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4>,
+ VoidStoredConstMemberFunctionCall4<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
+class StoredMemberFunctionPointerCall4 : public RunFunctionTask<T>
+{
+public:
+ StoredMemberFunctionPointerCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
+
+ void runFunctor()
+ {
+ this->result = (object->*fn)(arg1, arg2, arg3, arg4);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3, Param4);
+ Class *object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
+class VoidStoredMemberFunctionPointerCall4 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredMemberFunctionPointerCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
+
+ void runFunctor()
+ {
+ (object->*fn)(arg1, arg2, arg3, arg4);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3, Param4);
+ Class *object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
+struct SelectStoredMemberFunctionPointerCall4
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredMemberFunctionPointerCall4 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4>,
+ VoidStoredMemberFunctionPointerCall4<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
+class StoredConstMemberFunctionPointerCall4 : public RunFunctionTask<T>
+{
+public:
+ StoredConstMemberFunctionPointerCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) const, Class const *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
+
+ void runFunctor()
+ {
+ this->result = (object->*fn)(arg1, arg2, arg3, arg4);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3, Param4)const;
+ Class const *object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
+class VoidStoredConstMemberFunctionPointerCall4 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredConstMemberFunctionPointerCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) const, Class const *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
+
+ void runFunctor()
+ {
+ (object->*fn)(arg1, arg2, arg3, arg4);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3, Param4)const;
+ Class const *object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
+struct SelectStoredConstMemberFunctionPointerCall4
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredConstMemberFunctionPointerCall4 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4>,
+ VoidStoredConstMemberFunctionPointerCall4<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4> >::type type;
+};
+template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
+struct StoredFunctorCall5: public RunFunctionTask<T>
+{
+ inline StoredFunctorCall5(FunctionPointer _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
+ : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5) {}
+ void runFunctor() { this->result = function(arg1, arg2, arg3, arg4, arg5); }
+ FunctionPointer function;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
+};
+
+template <typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
+struct StoredFunctorCall5<void, FunctionPointer, Arg1, Arg2, Arg3, Arg4, Arg5>: public RunFunctionTask<void>
+{
+ inline StoredFunctorCall5(FunctionPointer _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
+ : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5) {}
+ void runFunctor() { function(arg1, arg2, arg3, arg4, arg5); }
+ FunctionPointer function;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
+};
+
+template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
+struct StoredFunctorPointerCall5: public RunFunctionTask<T>
+{
+ inline StoredFunctorPointerCall5(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
+ : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5) {}
+ void runFunctor() { this->result =(*function)(arg1, arg2, arg3, arg4, arg5); }
+ FunctionPointer * function;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
+};
+
+template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
+struct VoidStoredFunctorPointerCall5: public RunFunctionTask<T>
+{
+ inline VoidStoredFunctorPointerCall5(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
+ : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5) {}
+ void runFunctor() {(*function)(arg1, arg2, arg3, arg4, arg5); }
+ FunctionPointer * function;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
+};
+
+template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
+struct SelectStoredFunctorPointerCall5
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredFunctorPointerCall5 <T, FunctionPointer, Arg1, Arg2, Arg3, Arg4, Arg5>,
+ VoidStoredFunctorPointerCall5<T, FunctionPointer, Arg1, Arg2, Arg3, Arg4, Arg5> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
+class StoredMemberFunctionCall5 : public RunFunctionTask<T>
+{
+public:
+ StoredMemberFunctionCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
+
+ void runFunctor()
+ {
+ this->result = (object.*fn)(arg1, arg2, arg3, arg4, arg5);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3, Param4, Param5);
+ Class object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
+class VoidStoredMemberFunctionCall5 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredMemberFunctionCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
+
+ void runFunctor()
+ {
+ (object.*fn)(arg1, arg2, arg3, arg4, arg5);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3, Param4, Param5);
+ Class object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
+struct SelectStoredMemberFunctionCall5
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredMemberFunctionCall5 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5>,
+ VoidStoredMemberFunctionCall5<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
+class StoredConstMemberFunctionCall5 : public RunFunctionTask<T>
+{
+public:
+ StoredConstMemberFunctionCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) const, const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
+
+ void runFunctor()
+ {
+ this->result = (object.*fn)(arg1, arg2, arg3, arg4, arg5);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3, Param4, Param5)const;
+ const Class object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
+class VoidStoredConstMemberFunctionCall5 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredConstMemberFunctionCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) const, const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
+
+ void runFunctor()
+ {
+ (object.*fn)(arg1, arg2, arg3, arg4, arg5);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3, Param4, Param5)const;
+ const Class object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
+struct SelectStoredConstMemberFunctionCall5
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredConstMemberFunctionCall5 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5>,
+ VoidStoredConstMemberFunctionCall5<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
+class StoredMemberFunctionPointerCall5 : public RunFunctionTask<T>
+{
+public:
+ StoredMemberFunctionPointerCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
+
+ void runFunctor()
+ {
+ this->result = (object->*fn)(arg1, arg2, arg3, arg4, arg5);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3, Param4, Param5);
+ Class *object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
+class VoidStoredMemberFunctionPointerCall5 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredMemberFunctionPointerCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
+
+ void runFunctor()
+ {
+ (object->*fn)(arg1, arg2, arg3, arg4, arg5);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3, Param4, Param5);
+ Class *object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
+struct SelectStoredMemberFunctionPointerCall5
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredMemberFunctionPointerCall5 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5>,
+ VoidStoredMemberFunctionPointerCall5<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5> >::type type;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
+class StoredConstMemberFunctionPointerCall5 : public RunFunctionTask<T>
+{
+public:
+ StoredConstMemberFunctionPointerCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) const, Class const *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
+
+ void runFunctor()
+ {
+ this->result = (object->*fn)(arg1, arg2, arg3, arg4, arg5);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3, Param4, Param5)const;
+ Class const *object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
+class VoidStoredConstMemberFunctionPointerCall5 : public RunFunctionTask<T>
+{
+public:
+ VoidStoredConstMemberFunctionPointerCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) const, Class const *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
+ : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
+
+ void runFunctor()
+ {
+ (object->*fn)(arg1, arg2, arg3, arg4, arg5);
+ }
+private:
+ T (Class::*fn)(Param1, Param2, Param3, Param4, Param5)const;
+ Class const *object;
+ Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
+};
+template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
+struct SelectStoredConstMemberFunctionPointerCall5
+{
+ typedef typename SelectSpecialization<T>::template
+ Type<StoredConstMemberFunctionPointerCall5 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5>,
+ VoidStoredConstMemberFunctionPointerCall5<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5> >::type type;
+};
+
+template <typename T, typename Functor>
+class StoredFunctorCall : public RunFunctionTask<T>
+{
+public:
+ StoredFunctorCall(const Functor &f) : functor(f) { }
+ void runFunctor()
+ {
+ this->result = functor();
+ }
+private:
+ Functor functor;
+};
+template <typename Functor>
+class StoredFunctorCall<void, Functor> : public RunFunctionTask<void>
+{
+public:
+ StoredFunctorCall(const Functor &f) : functor(f) { }
+ void runFunctor()
+ {
+ functor();
+ }
+private:
+ Functor functor;
+};
+
+
+} //namespace QtConcurrent
+
+#endif // qdoc
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif
diff --git a/src/concurrent/qtconcurrentthreadengine.cpp b/src/concurrent/qtconcurrentthreadengine.cpp
new file mode 100644
index 0000000000..774122674f
--- /dev/null
+++ b/src/concurrent/qtconcurrentthreadengine.cpp
@@ -0,0 +1,299 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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 "qtconcurrentthreadengine.h"
+
+#ifndef QT_NO_CONCURRENT
+
+QT_BEGIN_NAMESPACE
+
+namespace QtConcurrent {
+
+ThreadEngineBarrier::ThreadEngineBarrier()
+:count(0) { }
+
+void ThreadEngineBarrier::acquire()
+{
+ forever {
+ int localCount = count.load();
+ if (localCount < 0) {
+ if (count.testAndSetOrdered(localCount, localCount -1))
+ return;
+ } else {
+ if (count.testAndSetOrdered(localCount, localCount + 1))
+ return;
+ }
+ }
+}
+
+int ThreadEngineBarrier::release()
+{
+ forever {
+ int localCount = count.load();
+ if (localCount == -1) {
+ if (count.testAndSetOrdered(-1, 0)) {
+ semaphore.release();
+ return 0;
+ }
+ } else if (localCount < 0) {
+ if (count.testAndSetOrdered(localCount, localCount + 1))
+ return qAbs(localCount + 1);
+ } else {
+ if (count.testAndSetOrdered(localCount, localCount - 1))
+ return localCount - 1;
+ }
+ }
+}
+
+// Wait until all threads have been released
+void ThreadEngineBarrier::wait()
+{
+ forever {
+ int localCount = count.load();
+ if (localCount == 0)
+ return;
+
+ Q_ASSERT(localCount > 0); // multiple waiters are not allowed.
+ if (count.testAndSetOrdered(localCount, -localCount)) {
+ semaphore.acquire();
+ return;
+ }
+ }
+}
+
+int ThreadEngineBarrier::currentCount()
+{
+ return count.load();
+}
+
+// releases a thread, unless this is the last thread.
+// returns true if the thread was released.
+bool ThreadEngineBarrier::releaseUnlessLast()
+{
+ forever {
+ int localCount = count.load();
+ if (qAbs(localCount) == 1) {
+ return false;
+ } else if (localCount < 0) {
+ if (count.testAndSetOrdered(localCount, localCount + 1))
+ return true;
+ } else {
+ if (count.testAndSetOrdered(localCount, localCount - 1))
+ return true;
+ }
+ }
+}
+
+ThreadEngineBase::ThreadEngineBase()
+:futureInterface(0), threadPool(QThreadPool::globalInstance())
+{
+ setAutoDelete(false);
+}
+
+ThreadEngineBase::~ThreadEngineBase() {}
+
+void ThreadEngineBase::startSingleThreaded()
+{
+ start();
+ while (threadFunction() != ThreadFinished)
+ ;
+ finish();
+}
+
+void ThreadEngineBase::startBlocking()
+{
+ start();
+ barrier.acquire();
+ startThreads();
+
+ bool throttled = false;
+#ifndef QT_NO_EXCEPTIONS
+ try {
+#endif
+ while (threadFunction() == ThrottleThread) {
+ if (threadThrottleExit()) {
+ throttled = true;
+ break;
+ }
+ }
+#ifndef QT_NO_EXCEPTIONS
+ } catch (QtConcurrent::Exception &e) {
+ handleException(e);
+ } catch (...) {
+ handleException(QtConcurrent::UnhandledException());
+ }
+#endif
+
+ if (throttled == false) {
+ barrier.release();
+ }
+
+ barrier.wait();
+ finish();
+ exceptionStore.throwPossibleException();
+}
+
+void ThreadEngineBase::startThread()
+{
+ startThreadInternal();
+}
+
+void ThreadEngineBase::acquireBarrierSemaphore()
+{
+ barrier.acquire();
+}
+
+bool ThreadEngineBase::isCanceled()
+{
+ if (futureInterface)
+ return futureInterface->isCanceled();
+ else
+ return false;
+}
+
+void ThreadEngineBase::waitForResume()
+{
+ if (futureInterface)
+ futureInterface->waitForResume();
+}
+
+bool ThreadEngineBase::isProgressReportingEnabled()
+{
+ // If we don't have a QFuture, there is no-one to report the progress to.
+ return (futureInterface != 0);
+}
+
+void ThreadEngineBase::setProgressValue(int progress)
+{
+ if (futureInterface)
+ futureInterface->setProgressValue(progress);
+}
+
+void ThreadEngineBase::setProgressRange(int minimum, int maximum)
+{
+ if (futureInterface)
+ futureInterface->setProgressRange(minimum, maximum);
+}
+
+bool ThreadEngineBase::startThreadInternal()
+{
+ if (this->isCanceled())
+ return false;
+
+ barrier.acquire();
+ if (!threadPool->tryStart(this)) {
+ barrier.release();
+ return false;
+ }
+ return true;
+}
+
+void ThreadEngineBase::startThreads()
+{
+ while (shouldStartThread() && startThreadInternal())
+ ;
+}
+
+void ThreadEngineBase::threadExit()
+{
+ const bool asynchronous = futureInterface != 0;
+ const int lastThread = (barrier.release() == 0);
+
+ if (lastThread && asynchronous)
+ this->asynchronousFinish();
+}
+
+// Called by a worker thread that wants to be throttled. If the current number
+// of running threads is larger than one the thread is allowed to exit and
+// this function returns one.
+bool ThreadEngineBase::threadThrottleExit()
+{
+ return barrier.releaseUnlessLast();
+}
+
+void ThreadEngineBase::run() // implements QRunnable.
+{
+ if (this->isCanceled()) {
+ threadExit();
+ return;
+ }
+
+ startThreads();
+
+#ifndef QT_NO_EXCEPTIONS
+ try {
+#endif
+ while (threadFunction() == ThrottleThread) {
+ // threadFunction returning ThrottleThread means it that the user
+ // struct wants to be throttled by making a worker thread exit.
+ // Respect that request unless this is the only worker thread left
+ // running, in which case it has to keep going.
+ if (threadThrottleExit())
+ return;
+ }
+
+#ifndef QT_NO_EXCEPTIONS
+ } catch (QtConcurrent::Exception &e) {
+ handleException(e);
+ } catch (...) {
+ handleException(QtConcurrent::UnhandledException());
+ }
+#endif
+ threadExit();
+}
+
+#ifndef QT_NO_EXCEPTIONS
+
+void ThreadEngineBase::handleException(const QtConcurrent::Exception &exception)
+{
+ if (futureInterface)
+ futureInterface->reportException(exception);
+ else
+ exceptionStore.setException(exception);
+}
+#endif
+
+
+} // namepsace QtConcurrent
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_CONCURRENT
diff --git a/src/concurrent/qtconcurrentthreadengine.h b/src/concurrent/qtconcurrentthreadengine.h
new file mode 100644
index 0000000000..20e86f59b6
--- /dev/null
+++ b/src/concurrent/qtconcurrentthreadengine.h
@@ -0,0 +1,284 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QTCONCURRENT_THREADENGINE_H
+#define QTCONCURRENT_THREADENGINE_H
+
+#include <QtCore/qglobal.h>
+
+#ifndef QT_NO_CONCURRENT
+
+#include <QtCore/qthreadpool.h>
+#include <QtConcurrent/qfuture.h>
+#include <QtCore/qdebug.h>
+#include <QtConcurrent/qtconcurrentexception.h>
+#include <QtCore/qwaitcondition.h>
+#include <QtCore/qatomic.h>
+#include <QtCore/qsemaphore.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+#ifndef qdoc
+
+namespace QtConcurrent {
+
+// The ThreadEngineBarrier counts worker threads, and allows one
+// thread to wait for all others to finish. Tested for its use in
+// QtConcurrent, requires more testing for use as a general class.
+class ThreadEngineBarrier
+{
+private:
+ // The thread count is maintained as an integer in the count atomic
+ // variable. The count can be either positive or negative - a negative
+ // count signals that a thread is waiting on the barrier.
+
+ // BC note: inlined code from Qt < 4.6 will expect to find the QMutex
+ // and QAtomicInt here. ### Qt 5: remove.
+ QMutex mutex;
+ QAtomicInt count;
+
+ QSemaphore semaphore;
+public:
+ ThreadEngineBarrier();
+ void acquire();
+ int release();
+ void wait();
+ int currentCount();
+ bool releaseUnlessLast();
+};
+
+enum ThreadFunctionResult { ThrottleThread, ThreadFinished };
+
+// The ThreadEngine controls the threads used in the computation.
+// Can be run in three modes: single threaded, multi-threaded blocking
+// and multi-threaded asynchronous.
+// The code for the single threaded mode is
+class Q_CORE_EXPORT ThreadEngineBase: public QRunnable
+{
+public:
+ // Public API:
+ ThreadEngineBase();
+ virtual ~ThreadEngineBase();
+ void startSingleThreaded();
+ void startBlocking();
+ void startThread();
+ bool isCanceled();
+ void waitForResume();
+ bool isProgressReportingEnabled();
+ void setProgressValue(int progress);
+ void setProgressRange(int minimum, int maximum);
+ void acquireBarrierSemaphore();
+
+protected: // The user overrides these:
+ virtual void start() {}
+ virtual void finish() {}
+ virtual ThreadFunctionResult threadFunction() { return ThreadFinished; }
+ virtual bool shouldStartThread() { return futureInterface ? !futureInterface->isPaused() : true; }
+ virtual bool shouldThrottleThread() { return futureInterface ? futureInterface->isPaused() : false; }
+private:
+ bool startThreadInternal();
+ void startThreads();
+ void threadExit();
+ bool threadThrottleExit();
+ void run();
+ virtual void asynchronousFinish() = 0;
+#ifndef QT_NO_EXCEPTIONS
+ void handleException(const QtConcurrent::Exception &exception);
+#endif
+protected:
+ QFutureInterfaceBase *futureInterface;
+ QThreadPool *threadPool;
+ ThreadEngineBarrier barrier;
+ QtConcurrent::internal::ExceptionStore exceptionStore;
+};
+
+
+template <typename T>
+class ThreadEngine : public virtual ThreadEngineBase
+{
+public:
+ typedef T ResultType;
+
+ virtual T *result() { return 0; }
+
+ QFutureInterface<T> *futureInterfaceTyped()
+ {
+ return static_cast<QFutureInterface<T> *>(futureInterface);
+ }
+
+ // Runs the user algorithm using a single thread.
+ T *startSingleThreaded()
+ {
+ ThreadEngineBase::startSingleThreaded();
+ return result();
+ }
+
+ // Runs the user algorithm using multiple threads.
+ // This function blocks until the algorithm is finished,
+ // and then returns the result.
+ T *startBlocking()
+ {
+ ThreadEngineBase::startBlocking();
+ return result();
+ }
+
+ // Runs the user algorithm using multiple threads.
+ // Does not block, returns a future.
+ QFuture<T> startAsynchronously()
+ {
+ futureInterface = new QFutureInterface<T>();
+
+ // reportStart() must be called before starting threads, otherwise the
+ // user algorithm might finish while reportStart() is running, which
+ // is very bad.
+ futureInterface->reportStarted();
+ QFuture<T> future = QFuture<T>(futureInterfaceTyped());
+ start();
+
+ acquireBarrierSemaphore();
+ threadPool->start(this);
+ return future;
+ }
+
+ void asynchronousFinish()
+ {
+ finish();
+ futureInterfaceTyped()->reportFinished(result());
+ delete futureInterfaceTyped();
+ delete this;
+ }
+
+
+ void reportResult(const T *_result, int index = -1)
+ {
+ if (futureInterface)
+ futureInterfaceTyped()->reportResult(_result, index);
+ }
+
+ void reportResults(const QVector<T> &_result, int index = -1, int count = -1)
+ {
+ if (futureInterface)
+ futureInterfaceTyped()->reportResults(_result, index, count);
+ }
+};
+
+// The ThreadEngineStarter class ecapsulates the return type
+// from the thread engine.
+// Depending on how the it is used, it will run
+// the engine in either blocking mode or asynchronous mode.
+template <typename T>
+class ThreadEngineStarterBase
+{
+public:
+ ThreadEngineStarterBase(ThreadEngine<T> *_threadEngine)
+ : threadEngine(_threadEngine) { }
+
+ inline ThreadEngineStarterBase(const ThreadEngineStarterBase &other)
+ : threadEngine(other.threadEngine) { }
+
+ QFuture<T> startAsynchronously()
+ {
+ return threadEngine->startAsynchronously();
+ }
+
+ operator QFuture<T>()
+ {
+ return startAsynchronously();
+ }
+
+protected:
+ ThreadEngine<T> *threadEngine;
+};
+
+
+// We need to factor out the code that dereferences the T pointer,
+// with a specialization where T is void. (code that dereferences a void *
+// won't compile)
+template <typename T>
+class ThreadEngineStarter : public ThreadEngineStarterBase<T>
+{
+ typedef ThreadEngineStarterBase<T> Base;
+ typedef ThreadEngine<T> TypedThreadEngine;
+public:
+ ThreadEngineStarter(TypedThreadEngine *eng)
+ : Base(eng) { }
+
+ T startBlocking()
+ {
+ T t = *this->threadEngine->startBlocking();
+ delete this->threadEngine;
+ return t;
+ }
+};
+
+// Full template specialization where T is void.
+template <>
+class ThreadEngineStarter<void> : public ThreadEngineStarterBase<void>
+{
+public:
+ ThreadEngineStarter<void>(ThreadEngine<void> *_threadEngine)
+ :ThreadEngineStarterBase<void>(_threadEngine) {}
+
+ void startBlocking()
+ {
+ this->threadEngine->startBlocking();
+ delete this->threadEngine;
+ }
+};
+
+template <typename ThreadEngine>
+inline ThreadEngineStarter<typename ThreadEngine::ResultType> startThreadEngine(ThreadEngine *threadEngine)
+{
+ return ThreadEngineStarter<typename ThreadEngine::ResultType>(threadEngine);
+}
+
+} // namespace QtConcurrent
+
+#endif //qdoc
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_CONCURRENT
+
+#endif
diff --git a/src/corelib/animation/qabstractanimation.cpp b/src/corelib/animation/qabstractanimation.cpp
index 040715f54a..30f071498e 100644
--- a/src/corelib/animation/qabstractanimation.cpp
+++ b/src/corelib/animation/qabstractanimation.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/animation/qabstractanimation.h b/src/corelib/animation/qabstractanimation.h
index 4c20d25a53..70200c4064 100644
--- a/src/corelib/animation/qabstractanimation.h
+++ b/src/corelib/animation/qabstractanimation.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_ANIMATION
diff --git a/src/corelib/animation/qabstractanimation_p.h b/src/corelib/animation/qabstractanimation_p.h
index 2b2d5b8872..c4d53342c2 100644
--- a/src/corelib/animation/qabstractanimation_p.h
+++ b/src/corelib/animation/qabstractanimation_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,10 +60,6 @@
#include <private/qobject_p.h>
#include <qabstractanimation.h>
-#ifdef Q_OS_WIN
-#include <qt_windows.h>
-#endif
-
#ifndef QT_NO_ANIMATION
QT_BEGIN_NAMESPACE
diff --git a/src/corelib/animation/qanimationgroup.cpp b/src/corelib/animation/qanimationgroup.cpp
index 5993eda307..a5259cef64 100644
--- a/src/corelib/animation/qanimationgroup.cpp
+++ b/src/corelib/animation/qanimationgroup.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/animation/qanimationgroup.h b/src/corelib/animation/qanimationgroup.h
index 69a2686b69..0b21bb4594 100644
--- a/src/corelib/animation/qanimationgroup.h
+++ b/src/corelib/animation/qanimationgroup.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_ANIMATION
diff --git a/src/corelib/animation/qanimationgroup_p.h b/src/corelib/animation/qanimationgroup_p.h
index 8415610bdc..8d1806dbe4 100644
--- a/src/corelib/animation/qanimationgroup_p.h
+++ b/src/corelib/animation/qanimationgroup_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/animation/qparallelanimationgroup.cpp b/src/corelib/animation/qparallelanimationgroup.cpp
index 6e21efbc7f..9e0fdaff8a 100644
--- a/src/corelib/animation/qparallelanimationgroup.cpp
+++ b/src/corelib/animation/qparallelanimationgroup.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/animation/qparallelanimationgroup.h b/src/corelib/animation/qparallelanimationgroup.h
index b03163cfbb..429d4912d3 100644
--- a/src/corelib/animation/qparallelanimationgroup.h
+++ b/src/corelib/animation/qparallelanimationgroup.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_ANIMATION
diff --git a/src/corelib/animation/qparallelanimationgroup_p.h b/src/corelib/animation/qparallelanimationgroup_p.h
index 73fed5541c..f8beae5083 100644
--- a/src/corelib/animation/qparallelanimationgroup_p.h
+++ b/src/corelib/animation/qparallelanimationgroup_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/animation/qpauseanimation.cpp b/src/corelib/animation/qpauseanimation.cpp
index fe5bafa3bd..a4338a3656 100644
--- a/src/corelib/animation/qpauseanimation.cpp
+++ b/src/corelib/animation/qpauseanimation.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/animation/qpauseanimation.h b/src/corelib/animation/qpauseanimation.h
index 7f8a2ddf26..799a48f403 100644
--- a/src/corelib/animation/qpauseanimation.h
+++ b/src/corelib/animation/qpauseanimation.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_ANIMATION
diff --git a/src/corelib/animation/qpropertyanimation.cpp b/src/corelib/animation/qpropertyanimation.cpp
index d34242739e..fc51a20a15 100644
--- a/src/corelib/animation/qpropertyanimation.cpp
+++ b/src/corelib/animation/qpropertyanimation.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -187,7 +187,7 @@ QObject *QPropertyAnimation::targetObject() const
void QPropertyAnimation::setTargetObject(QObject *target)
{
Q_D(QPropertyAnimation);
- if (d->targetValue == target)
+ if (d->target.data() == target)
return;
if (d->state != QAbstractAnimation::Stopped) {
diff --git a/src/corelib/animation/qpropertyanimation.h b/src/corelib/animation/qpropertyanimation.h
index f41b96ce64..2d9eb8bcd1 100644
--- a/src/corelib/animation/qpropertyanimation.h
+++ b/src/corelib/animation/qpropertyanimation.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_ANIMATION
diff --git a/src/corelib/animation/qpropertyanimation_p.h b/src/corelib/animation/qpropertyanimation_p.h
index 83f7c3f0fa..c413c683ff 100644
--- a/src/corelib/animation/qpropertyanimation_p.h
+++ b/src/corelib/animation/qpropertyanimation_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/animation/qsequentialanimationgroup.cpp b/src/corelib/animation/qsequentialanimationgroup.cpp
index a991a38823..a893ea73d9 100644
--- a/src/corelib/animation/qsequentialanimationgroup.cpp
+++ b/src/corelib/animation/qsequentialanimationgroup.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/animation/qsequentialanimationgroup.h b/src/corelib/animation/qsequentialanimationgroup.h
index 07b2e3b8fc..9a8b0fafbb 100644
--- a/src/corelib/animation/qsequentialanimationgroup.h
+++ b/src/corelib/animation/qsequentialanimationgroup.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_ANIMATION
diff --git a/src/corelib/animation/qsequentialanimationgroup_p.h b/src/corelib/animation/qsequentialanimationgroup_p.h
index 87cdc044b2..ce61fcb838 100644
--- a/src/corelib/animation/qsequentialanimationgroup_p.h
+++ b/src/corelib/animation/qsequentialanimationgroup_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/animation/qvariantanimation.cpp b/src/corelib/animation/qvariantanimation.cpp
index 8984abbe03..35a340836d 100644
--- a/src/corelib/animation/qvariantanimation.cpp
+++ b/src/corelib/animation/qvariantanimation.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/animation/qvariantanimation.h b/src/corelib/animation/qvariantanimation.h
index 4176b4f428..2ccd1dbedd 100644
--- a/src/corelib/animation/qvariantanimation.h
+++ b/src/corelib/animation/qvariantanimation.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_ANIMATION
diff --git a/src/corelib/animation/qvariantanimation_p.h b/src/corelib/animation/qvariantanimation_p.h
index 940cdbfe39..ebbbfc0622 100644
--- a/src/corelib/animation/qvariantanimation_p.h
+++ b/src/corelib/animation/qvariantanimation_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/arch/alpha/qatomic_alpha.s b/src/corelib/arch/alpha/qatomic_alpha.s
index 7dd09d4480..3bccd12849 100644
--- a/src/corelib/arch/alpha/qatomic_alpha.s
+++ b/src/corelib/arch/alpha/qatomic_alpha.s
@@ -1,8 +1,7 @@
;/****************************************************************************
;**
;** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-;** All rights reserved.
-;** Contact: Nokia Corporation (qt-info@nokia.com)
+;** Contact: http://www.qt-project.org/
;**
;** This file is part of the QtGui module of the Qt Toolkit.
;**
@@ -35,6 +34,7 @@
;**
;**
;**
+;**
;** $QT_END_LICENSE$
;**
;****************************************************************************/
diff --git a/src/corelib/arch/arch.pri b/src/corelib/arch/arch.pri
index 6185b92757..62b07a4a99 100644
--- a/src/corelib/arch/arch.pri
+++ b/src/corelib/arch/arch.pri
@@ -1,18 +1,18 @@
-win32:HEADERS += arch/qatomic_windows.h \
+win32:HEADERS += arch/qatomic_msvc.h \
arch/qatomic_generic.h
win32-g++*:HEADERS += arch/qatomic_i386.h \
arch/qatomic_x86_64.h
-mac:HEADERS += arch/qatomic_macosx.h \
+mac:HEADERS += arch/qatomic_i386.h \
+ arch/qatomic_x86_64.h \
arch/qatomic_generic.h
vxworks:HEADERS += arch/qatomic_vxworks.h
integrity:HEADERS += arch/qatomic_integrity.h
-!wince*:!win32:!mac:!symbian:HEADERS += arch/qatomic_alpha.h \
- arch/qatomic_avr32.h \
+!wince*:!win32:!mac:HEADERS += arch/qatomic_alpha.h \
arch/qatomic_ia64.h \
arch/qatomic_parisc.h \
arch/qatomic_sparc.h \
@@ -28,10 +28,12 @@ integrity:HEADERS += arch/qatomic_integrity.h
arch/qatomic_s390.h \
arch/qatomic_x86_64.h \
arch/qatomic_sh.h \
- arch/qatomic_sh4a.h
+ arch/qatomic_sh4a.h \
+ arch/qatomic_gcc.h \
+ arch/qatomic_cxx11.h
QT_ARCH_CPP = $$QT_SOURCE_TREE/src/corelib/arch/$$QT_ARCH
-DEPENDPATH += $$QT_ARCH_CPP
-!isEmpty(QT_ARCH) {
- include($$QT_ARCH_CPP/arch.pri, "", true)
+exists($$QT_ARCH_CPP) {
+ DEPENDPATH += $$QT_ARCH_CPP
+ include($$QT_ARCH_CPP/arch.pri, "", true)
}
diff --git a/src/corelib/arch/arm/arch.pri b/src/corelib/arch/arm/arch.pri
deleted file mode 100644
index 79e4bfc115..0000000000
--- a/src/corelib/arch/arm/arch.pri
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-# ARM architecture
-#
-SOURCES += $$QT_ARCH_CPP/qatomic_arm.cpp
diff --git a/src/corelib/arch/arm/qatomic_arm.cpp b/src/corelib/arch/arm/qatomic_arm.cpp
deleted file mode 100644
index 0eaeb5a15b..0000000000
--- a/src/corelib/arch/arm/qatomic_arm.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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 <QtCore/qglobal.h>
-
-#include <unistd.h>
-#ifdef _POSIX_PRIORITY_SCHEDULING
-# include <sched.h>
-#endif
-#include <time.h>
-
-QT_BEGIN_NAMESPACE
-
-QT_USE_NAMESPACE
-
-Q_CORE_EXPORT char q_atomic_lock = 0;
-
-Q_CORE_EXPORT void qt_atomic_yield(int *count)
-{
-#ifdef _POSIX_PRIORITY_SCHEDULING
- if((*count)++ < 50) {
- sched_yield();
- } else
-#endif
- {
- struct timespec tm;
- tm.tv_sec = 0;
- tm.tv_nsec = 2000001;
- nanosleep(&tm, NULL);
- *count = 0;
- }
-}
-
-QT_END_NAMESPACE
diff --git a/src/corelib/arch/avr32/arch.pri b/src/corelib/arch/avr32/arch.pri
deleted file mode 100644
index 37f231ee61..0000000000
--- a/src/corelib/arch/avr32/arch.pri
+++ /dev/null
@@ -1,3 +0,0 @@
-#
-# AVR32 architecture
-#
diff --git a/src/corelib/arch/bfin/arch.pri b/src/corelib/arch/bfin/arch.pri
deleted file mode 100644
index fa198ae8bb..0000000000
--- a/src/corelib/arch/bfin/arch.pri
+++ /dev/null
@@ -1,3 +0,0 @@
-#
-# Blackfin architecture
-#
diff --git a/src/corelib/arch/generic/qatomic_generic_unix.cpp b/src/corelib/arch/generic/qatomic_generic_unix.cpp
index 78292e7e49..eb1498fceb 100644
--- a/src/corelib/arch/generic/qatomic_generic_unix.cpp
+++ b/src/corelib/arch/generic/qatomic_generic_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,12 +34,11 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
-#if !defined(Q_OS_SYMBIAN) || (defined(Q_OS_SYMBIAN) && !defined(Q_CC_RVCT))
-
#include "qplatformdefs.h"
#include <QtCore/qatomic.h>
@@ -120,4 +118,3 @@ void *QBasicAtomicPointer_fetchAndAddOrdered(void * volatile *_q_value, qptrdiff
return returnValue;
}
QT_END_NAMESPACE
-#endif //!defined(Q_OS_SYMBIAN) && !defined(Q_CC_RVCT)
diff --git a/src/corelib/arch/generic/qatomic_generic_windows.cpp b/src/corelib/arch/generic/qatomic_generic_windows.cpp
index 94129cb106..dafc8133b2 100644
--- a/src/corelib/arch/generic/qatomic_generic_windows.cpp
+++ b/src/corelib/arch/generic/qatomic_generic_windows.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/arch/i386/arch.pri b/src/corelib/arch/i386/arch.pri
deleted file mode 100644
index 3101dae01b..0000000000
--- a/src/corelib/arch/i386/arch.pri
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-# i386 architecture
-#
-!*-g++*:!*-icc*:SOURCES += $$QT_ARCH_CPP/qatomic_i386.s
diff --git a/src/corelib/arch/i386/qatomic_i386.s b/src/corelib/arch/i386/qatomic_i386.s
deleted file mode 100644
index 08158f926b..0000000000
--- a/src/corelib/arch/i386/qatomic_i386.s
+++ /dev/null
@@ -1,103 +0,0 @@
- .text
-
- .align 4,0x90
- .globl q_atomic_test_and_set_int
-q_atomic_test_and_set_int:
- movl 4(%esp),%ecx
- movl 8(%esp),%eax
- movl 12(%esp),%edx
- lock
- cmpxchgl %edx,(%ecx)
- mov $0,%eax
- sete %al
- ret
- .align 4,0x90
- .type q_atomic_test_and_set_int,@function
- .size q_atomic_test_and_set_int,.-q_atomic_test_and_set_int
-
- .align 4,0x90
- .globl q_atomic_test_and_set_ptr
-q_atomic_test_and_set_ptr:
- movl 4(%esp),%ecx
- movl 8(%esp),%eax
- movl 12(%esp),%edx
- lock
- cmpxchgl %edx,(%ecx)
- mov $0,%eax
- sete %al
- ret
- .align 4,0x90
- .type q_atomic_test_and_set_ptr,@function
- .size q_atomic_test_and_set_ptr,.-q_atomic_test_and_set_ptr
-
- .align 4,0x90
- .globl q_atomic_increment
-q_atomic_increment:
- movl 4(%esp), %ecx
- lock
- incl (%ecx)
- mov $0,%eax
- setne %al
- ret
- .align 4,0x90
- .type q_atomic_increment,@function
- .size q_atomic_increment,.-q_atomic_increment
-
- .align 4,0x90
- .globl q_atomic_decrement
-q_atomic_decrement:
- movl 4(%esp), %ecx
- lock
- decl (%ecx)
- mov $0,%eax
- setne %al
- ret
- .align 4,0x90
- .type q_atomic_decrement,@function
- .size q_atomic_decrement,.-q_atomic_decrement
-
- .align 4,0x90
- .globl q_atomic_set_int
-q_atomic_set_int:
- mov 4(%esp),%ecx
- mov 8(%esp),%eax
- xchgl %eax,(%ecx)
- ret
- .align 4,0x90
- .type q_atomic_set_int,@function
- .size q_atomic_set_int,.-q_atomic_set_int
-
- .align 4,0x90
- .globl q_atomic_set_ptr
-q_atomic_set_ptr:
- mov 4(%esp),%ecx
- mov 8(%esp),%eax
- xchgl %eax,(%ecx)
- ret
- .align 4,0x90
- .type q_atomic_set_ptr,@function
- .size q_atomic_set_ptr,.-q_atomic_set_ptr
-
- .align 4,0x90
- .globl q_atomic_fetch_and_add_int
-q_atomic_fetch_and_add_int:
- mov 4(%esp),%ecx
- mov 8(%esp),%eax
- lock
- xadd %eax,(%ecx)
- ret
- .align 4,0x90
- .type q_atomic_fetch_and_add_int,@function
- .size q_atomic_fetch_and_add_int,.-q_atomic_fetch_and_add_int
-
- .align 4,0x90
- .globl q_atomic_fetch_and_add_ptr
-q_atomic_fetch_and_add_ptr:
- mov 4(%esp),%ecx
- mov 8(%esp),%eax
- lock
- xadd %eax,(%ecx)
- ret
- .align 4,0x90
- .type q_atomic_fetch_and_add_ptr,@function
- .size q_atomic_fetch_and_add_ptr,.-q_atomic_fetch_and_add_ptr
diff --git a/src/corelib/arch/ia64/arch.pri b/src/corelib/arch/ia64/arch.pri
deleted file mode 100644
index 63afa967a4..0000000000
--- a/src/corelib/arch/ia64/arch.pri
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-# Intel Itanium architecture
-#
-!*-g++:!*-icc:!hpuxi-acc-*:SOURCES += $$QT_ARCH_CPP/qatomic_ia64.s
diff --git a/src/corelib/arch/ia64/qatomic_ia64.s b/src/corelib/arch/ia64/qatomic_ia64.s
deleted file mode 100644
index f6b100c170..0000000000
--- a/src/corelib/arch/ia64/qatomic_ia64.s
+++ /dev/null
@@ -1,74 +0,0 @@
-;/****************************************************************************
-;**
-;** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-;** All rights reserved.
-;** Contact: Nokia Corporation (qt-info@nokia.com)
-;**
-;** 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$
-;**
-;****************************************************************************/
- .pred.safe_across_calls p1-p5,p16-p63
-.text
- .align 16
- .global q_atomic_test_and_set_int#
- .proc q_atomic_test_and_set_int#
-q_atomic_test_and_set_int:
- .prologue
- .body
- mov ar.ccv=r33
- ;;
- cmpxchg4.acq r34=[r32],r34,ar.ccv
- ;;
- cmp4.eq p6, p7 = r33, r34
- ;;
- (p6) addl r8 = 1, r0
- (p7) mov r8 = r0
- br.ret.sptk.many b0
- .endp q_atomic_test_and_set_int#
- .align 16
- .global q_atomic_test_and_set_ptr#
- .proc q_atomic_test_and_set_ptr#
-q_atomic_test_and_set_ptr:
- .prologue
- .body
- mov ar.ccv=r33
- ;;
- cmpxchg8.acq r34=[r32],r34,ar.ccv
- ;;
- cmp.eq p6, p7 = r33, r34
- ;;
- (p6) addl r8 = 1, r0
- (p7) mov r8 = r0
- br.ret.sptk.many b0
- .endp q_atomic_test_and_set_ptr#
diff --git a/src/corelib/arch/integrity/arch.pri b/src/corelib/arch/integrity/arch.pri
deleted file mode 100644
index 2c4196ec32..0000000000
--- a/src/corelib/arch/integrity/arch.pri
+++ /dev/null
@@ -1,3 +0,0 @@
-#
-# INTEGRITY RTOS architecture
-#
diff --git a/src/corelib/arch/macosx/arch.pri b/src/corelib/arch/macosx/arch.pri
deleted file mode 100644
index a2b1bf759a..0000000000
--- a/src/corelib/arch/macosx/arch.pri
+++ /dev/null
@@ -1,6 +0,0 @@
-#
-# Mac OS X architecture
-#
-
-# Left blank intentionally since all the current compilers that we support can
-# handle in-line assembly.
diff --git a/src/corelib/arch/macosx/qatomic32_ppc.s b/src/corelib/arch/macosx/qatomic32_ppc.s
deleted file mode 100644
index 97d68cba70..0000000000
--- a/src/corelib/arch/macosx/qatomic32_ppc.s
+++ /dev/null
@@ -1,169 +0,0 @@
-;/****************************************************************************
-;**
-;** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-;** All rights reserved.
-;** Contact: Nokia Corporation (qt-info@nokia.com)
-;**
-;** 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$
-;**
-;****************************************************************************/
- .section __TEXT,__text,regular,pure_instructions
- .section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
- .section __TEXT,__text,regular,pure_instructions
- .align 2
- .align 2
- .globl _q_atomic_test_and_set_int
- .section __TEXT,__text,regular,pure_instructions
- .align 2
-_q_atomic_test_and_set_int:
- lwarx r6,0,r3
- cmpw r6,r4
- bne- $+20
- stwcx. r5,0,r3
- bne- $-16
- addi r3,0,1
- blr
- addi r3,0,0
- blr
-
- .align 2
- .globl _q_atomic_test_and_set_acquire_int
- .section __TEXT,__text,regular,pure_instructions
- .align 2
-_q_atomic_test_and_set_acquire_int:
- lwarx r6,0,r3
- cmpw r6,r4
- bne- $+20
- stwcx. r5,0,r3
- bne- $-16
- addi r3,0,1
- b $+8
- addi r3,0,0
- eieio
- blr
-
- .align 2
- .globl _q_atomic_test_and_set_release_int
- .section __TEXT,__text,regular,pure_instructions
- .align 2
-_q_atomic_test_and_set_release_int:
- eieio
- lwarx r6,0,r3
- cmpw r6,r4
- bne- $+20
- stwcx. r5,0,r3
- bne- $-16
- addi r3,0,1
- blr
- addi r3,0,0
- blr
-
- .align 2
- .globl _q_atomic_test_and_set_ptr
- .section __TEXT,__text,regular,pure_instructions
- .align 2
-_q_atomic_test_and_set_ptr:
- lwarx r6,0,r3
- cmpw r6,r4
- bne- $+20
- stwcx. r5,0,r3
- bne- $-16
- addi r3,0,1
- blr
- addi r3,0,0
- blr
-
- .align 2
- .globl _q_atomic_increment
- .section __TEXT,__text,regular,pure_instructions
- .align 2
-_q_atomic_increment:
- lwarx r4,0,r3
- addi r4,r4,1
- stwcx. r4,0,r3
- bne- $-12
- mr r3,r4
- blr
-
- .align 2
- .globl _q_atomic_decrement
- .section __TEXT,__text,regular,pure_instructions
- .align 2
-_q_atomic_decrement:
- lwarx r4,0,r3
- subi r4,r4,1
- stwcx. r4,0,r3
- bne- $-12
- mr r3,r4
- blr
-
- .align 2
- .globl _q_atomic_set_int
- .section __TEXT,__text,regular,pure_instructions
- .align 2
-_q_atomic_set_int:
- lwarx r5,0,r3
- stwcx. r4,0,r3
- bne- $-8
- mr r3,r5
- blr
-
- .align 2
- .globl _q_atomic_set_ptr
- .section __TEXT,__text,regular,pure_instructions
- .align 2
-_q_atomic_set_ptr:
- lwarx r5,0,r3
- stwcx. r4,0,r3
- bne- $-8
- mr r3,r5
- blr
-
-.globl q_atomic_test_and_set_int.eh
- q_atomic_test_and_set_int.eh = 0
-.globl q_atomic_test_and_set_ptr.eh
- q_atomic_test_and_set_ptr.eh = 0
-.globl q_atomic_increment.eh
- q_atomic_increment.eh = 0
-.globl q_atomic_decrement.eh
- q_atomic_decrement.eh = 0
-.globl q_atomic_set_int.eh
- q_atomic_set_int.eh = 0
-.globl q_atomic_set_ptr.eh
- q_atomic_set_ptr.eh = 0
-.data
-.constructor
-.data
-.destructor
-.align 1
diff --git a/src/corelib/arch/mips/arch.pri b/src/corelib/arch/mips/arch.pri
deleted file mode 100644
index 296c845ab3..0000000000
--- a/src/corelib/arch/mips/arch.pri
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# MIPS 3/4 architecture
-#
-
-# note: even though we use inline assembler with gcc, we always
-# include the compiled version to keep binary compatibility
-*-64:SOURCES += $$QT_ARCH_CPP/qatomic_mips64.s
-else:SOURCES += $$QT_ARCH_CPP/qatomic_mips32.s
diff --git a/src/corelib/arch/mips/qatomic_mips32.s b/src/corelib/arch/mips/qatomic_mips32.s
deleted file mode 100644
index b4013dfff5..0000000000
--- a/src/corelib/arch/mips/qatomic_mips32.s
+++ /dev/null
@@ -1,150 +0,0 @@
-;/****************************************************************************
-;**
-;** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-;** All rights reserved.
-;** Contact: Nokia Corporation (qt-info@nokia.com)
-;**
-;** 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$
-;**
-;****************************************************************************/
- .set nobopt
- .set noreorder
- .option pic2
- .text
-
- .globl q_atomic_test_and_set_int
- .ent q_atomic_test_and_set_int
- .set mips2
-q_atomic_test_and_set_int:
-1: ll $8,0($4)
- bne $8,$5,2f
- move $2,$6
- sc $2,0($4)
- beqz $2,1b
- nop
- jr $31
- nop
-2: jr $31
- move $2,$0
- .set mips0
- .end q_atomic_test_and_set_int
-
- .globl q_atomic_test_and_set_acquire_int
- .ent q_atomic_test_and_set_acquire_int
- .set mips2
-q_atomic_test_and_set_acquire_int:
-1: ll $8,0($4)
- bne $8,$5,2f
- move $2,$6
- sc $2,0($4)
- beqz $2,1b
- nop
- jr $31
- nop
-2: sync
- jr $31
- move $2,$0
- .set mips0
- .end q_atomic_test_and_set_acquire_int
-
- .globl q_atomic_test_and_set_release_int
- .ent q_atomic_test_and_set_release_int
- .set mips2
-q_atomic_test_and_set_release_int:
- sync
-1: ll $8,0($4)
- bne $8,$5,2f
- move $2,$6
- sc $2,0($4)
- beqz $2,1b
- nop
- jr $31
- nop
-2: jr $31
- move $2,$0
- .set mips0
- .end q_atomic_test_and_set_release_int
-
- .globl q_atomic_test_and_set_ptr
- .ent q_atomic_test_and_set_ptr
- .set mips2
-q_atomic_test_and_set_ptr:
-1: ll $8,0($4)
- bne $8,$5,2f
- move $2,$6
- sc $2,0($4)
- beqz $2,1b
- nop
- jr $31
- nop
-2: jr $31
- move $2,$0
- .set mips0
- .end q_atomic_test_and_set_ptr
-
- .globl q_atomic_test_and_set_acquire_ptr
- .ent q_atomic_test_and_set_acquire_ptr
- .set mips2
-q_atomic_test_and_set_acquire_ptr:
-1: ll $8,0($4)
- bne $8,$5,2f
- move $2,$6
- sc $2,0($4)
- beqz $2,1b
- nop
- jr $31
- nop
-2: sync
- jr $31
- move $2,$0
- .set mips0
- .end q_atomic_test_and_set_acquire_ptr
-
- .globl q_atomic_test_and_set_release_ptr
- .ent q_atomic_test_and_set_release_ptr
- .set mips2
-q_atomic_test_and_set_release_ptr:
- sync
-1: ll $8,0($4)
- bne $8,$5,2f
- move $2,$6
- sc $2,0($4)
- beqz $2,1b
- nop
- jr $31
- nop
-2: jr $31
- move $2,$0
- .set mips0
- .end q_atomic_test_and_set_release_ptr
diff --git a/src/corelib/arch/mips/qatomic_mips64.s b/src/corelib/arch/mips/qatomic_mips64.s
deleted file mode 100644
index a66b785e30..0000000000
--- a/src/corelib/arch/mips/qatomic_mips64.s
+++ /dev/null
@@ -1,138 +0,0 @@
-;/****************************************************************************
-;**
-;** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-;** All rights reserved.
-;** Contact: Nokia Corporation (qt-info@nokia.com)
-;**
-;** 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$
-;**
-;****************************************************************************/
- .set nobopt
- .set noreorder
- .option pic2
- .text
-
- .globl q_atomic_test_and_set_int
- .ent q_atomic_test_and_set_int
-q_atomic_test_and_set_int:
-1: ll $8,0($4)
- bne $8,$5,2f
- move $2,$6
- sc $2,0($4)
- beqz $2,1b
- nop
- jr $31
- nop
-2: jr $31
- move $2,$0
- .end q_atomic_test_and_set_int
-
- .globl q_atomic_test_and_set_acquire_int
- .ent q_atomic_test_and_set_acquire_int
-q_atomic_test_and_set_acquire_int:
-1: ll $8,0($4)
- bne $8,$5,2f
- move $2,$6
- sc $2,0($4)
- beqz $2,1b
- nop
- jr $31
- nop
-2: sync
- jr $31
- move $2,$0
- .end q_atomic_test_and_set_acquire_int
-
- .globl q_atomic_test_and_set_release_int
- .ent q_atomic_test_and_set_release_int
-q_atomic_test_and_set_release_int:
- sync
-1: ll $8,0($4)
- bne $8,$5,2f
- move $2,$6
- sc $2,0($4)
- beqz $2,1b
- nop
- jr $31
- nop
-2: jr $31
- move $2,$0
- .end q_atomic_test_and_set_release_int
-
- .globl q_atomic_test_and_set_ptr
- .ent q_atomic_test_and_set_ptr
-q_atomic_test_and_set_ptr:
-1: lld $8,0($4)
- bne $8,$5,2f
- move $2,$6
- scd $2,0($4)
- beqz $2,1b
- nop
- jr $31
- nop
-2: jr $31
- move $2,$0
- .end q_atomic_test_and_set_ptr
-
- .globl q_atomic_test_and_set_acquire_ptr
- .ent q_atomic_test_and_set_acquire_ptr
-q_atomic_test_and_set_acquire_ptr:
-1: lld $8,0($4)
- bne $8,$5,2f
- move $2,$6
- scd $2,0($4)
- beqz $2,1b
- nop
- jr $31
- nop
-2: sync
- jr $31
- move $2,$0
- .end q_atomic_test_and_set_acquire_ptr
-
- .globl q_atomic_test_and_set_release_ptr
- .ent q_atomic_test_and_set_release_ptr
-q_atomic_test_and_set_release_ptr:
- sync
-1: lld $8,0($4)
- bne $8,$5,2f
- move $2,$6
- scd $2,0($4)
- beqz $2,1b
- nop
- jr $31
- nop
-2: jr $31
- move $2,$0
- .end q_atomic_test_and_set_release_ptr
diff --git a/src/corelib/arch/parisc/q_ldcw.s b/src/corelib/arch/parisc/q_ldcw.s
index 0c1db6f394..8af2861c50 100644
--- a/src/corelib/arch/parisc/q_ldcw.s
+++ b/src/corelib/arch/parisc/q_ldcw.s
@@ -1,8 +1,7 @@
;/****************************************************************************
;**
;** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-;** All rights reserved.
-;** Contact: Nokia Corporation (qt-info@nokia.com)
+;** Contact: http://www.qt-project.org/
;**
;** This file is part of the QtGui module of the Qt Toolkit.
;**
@@ -35,6 +34,7 @@
;**
;**
;**
+;**
;** $QT_END_LICENSE$
;**
;****************************************************************************/
diff --git a/src/corelib/arch/parisc/qatomic_parisc.cpp b/src/corelib/arch/parisc/qatomic_parisc.cpp
index da8d480a4f..5e59669b22 100644
--- a/src/corelib/arch/parisc/qatomic_parisc.cpp
+++ b/src/corelib/arch/parisc/qatomic_parisc.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/arch/powerpc/qatomic32.s b/src/corelib/arch/powerpc/qatomic32.s
index dfc0605cff..8e2dbe2e2f 100644
--- a/src/corelib/arch/powerpc/qatomic32.s
+++ b/src/corelib/arch/powerpc/qatomic32.s
@@ -1,8 +1,7 @@
############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is part of the QtGui module of the Qt Toolkit.
##
@@ -35,6 +34,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
############################################################################
diff --git a/src/corelib/arch/powerpc/qatomic64.s b/src/corelib/arch/powerpc/qatomic64.s
index 9e81eb0bc0..84977d5a93 100644
--- a/src/corelib/arch/powerpc/qatomic64.s
+++ b/src/corelib/arch/powerpc/qatomic64.s
@@ -1,8 +1,7 @@
############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is part of the QtGui module of the Qt Toolkit.
##
@@ -35,6 +34,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
############################################################################
diff --git a/src/corelib/arch/qatomic_alpha.h b/src/corelib/arch/qatomic_alpha.h
index b44b9f23f5..432fb62c0a 100644
--- a/src/corelib/arch/qatomic_alpha.h
+++ b/src/corelib/arch/qatomic_alpha.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/arch/qatomic_arch.h b/src/corelib/arch/qatomic_arch.h
index 66e12cc95b..59c8de3cde 100644
--- a/src/corelib/arch/qatomic_arch.h
+++ b/src/corelib/arch/qatomic_arch.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,24 +52,10 @@ QT_BEGIN_HEADER
# include "QtCore/qatomic_vxworks.h"
#elif defined(QT_ARCH_ALPHA)
# include "QtCore/qatomic_alpha.h"
-#elif defined(QT_ARCH_ARM)
-# include "QtCore/qatomic_arm.h"
-#elif defined(QT_ARCH_ARMV6)
-# include "QtCore/qatomic_armv6.h"
-#elif defined(QT_ARCH_AVR32)
-# include "QtCore/qatomic_avr32.h"
#elif defined(QT_ARCH_BFIN)
# include "QtCore/qatomic_bfin.h"
#elif defined(QT_ARCH_GENERIC)
# include "QtCore/qatomic_generic.h"
-#elif defined(QT_ARCH_I386)
-# include "QtCore/qatomic_i386.h"
-#elif defined(QT_ARCH_IA64)
-# include "QtCore/qatomic_ia64.h"
-#elif defined(QT_ARCH_MACOSX)
-# include "QtCore/qatomic_macosx.h"
-#elif defined(QT_ARCH_MIPS)
-# include "QtCore/qatomic_mips.h"
#elif defined(QT_ARCH_PARISC)
# include "QtCore/qatomic_parisc.h"
#elif defined(QT_ARCH_POWERPC)
@@ -78,18 +64,10 @@ QT_BEGIN_HEADER
# include "QtCore/qatomic_s390.h"
#elif defined(QT_ARCH_SPARC)
# include "QtCore/qatomic_sparc.h"
-#elif defined(QT_ARCH_WINDOWS)
-# include "QtCore/qatomic_windows.h"
-#elif defined(QT_ARCH_WINDOWSCE)
-# include "QtCore/qatomic_windowsce.h"
-#elif defined(QT_ARCH_X86_64)
-# include "QtCore/qatomic_x86_64.h"
#elif defined(QT_ARCH_SH)
# include "QtCore/qatomic_sh.h"
#elif defined(QT_ARCH_SH4A)
# include "QtCore/qatomic_sh4a.h"
-#elif defined(QT_ARCH_NACL)
-# include "QtCore/qatomic_generic.h"
#else
# error "Qt has not been ported to this architecture"
#endif
diff --git a/src/corelib/arch/qatomic_arm.h b/src/corelib/arch/qatomic_arm.h
index b5856102b2..3852bbb9e2 100644
--- a/src/corelib/arch/qatomic_arm.h
+++ b/src/corelib/arch/qatomic_arm.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,16 +42,12 @@
#ifndef QATOMIC_ARM_H
#define QATOMIC_ARM_H
-QT_BEGIN_HEADER
-
#if defined(__ARM_ARCH_7__) \
|| defined(__ARM_ARCH_7A__) \
|| defined(__ARM_ARCH_7R__) \
|| defined(__ARM_ARCH_7M__)
# define QT_ARCH_ARMV7
-QT_BEGIN_INCLUDE_HEADER
# include "QtCore/qatomic_armv7.h"
-QT_END_INCLUDE_HEADER
#elif defined(__ARM_ARCH_6__) \
|| defined(__ARM_ARCH_6J__) \
|| defined(__ARM_ARCH_6T2__) \
@@ -61,16 +57,10 @@ QT_END_INCLUDE_HEADER
|| defined(__ARM_ARCH_6M__) \
|| (defined(__TARGET_ARCH_ARM) && (__TARGET_ARCH_ARM-0 >= 6))
# define QT_ARCH_ARMV6
-QT_BEGIN_INCLUDE_HEADER
# include "QtCore/qatomic_armv6.h"
-QT_END_INCLUDE_HEADER
#else
# define QT_ARCH_ARMV5
-QT_BEGIN_INCLUDE_HEADER
# include "QtCore/qatomic_armv5.h"
-QT_END_INCLUDE_HEADER
#endif
-QT_END_HEADER
-
#endif // QATOMIC_ARM_H
diff --git a/src/corelib/arch/qatomic_armv5.h b/src/corelib/arch/qatomic_armv5.h
index d602e83e64..95ad73b713 100644
--- a/src/corelib/arch/qatomic_armv5.h
+++ b/src/corelib/arch/qatomic_armv5.h
@@ -1,8 +1,8 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Copyright (C) 2011 Thiago Macieira <thiago@kde.org>
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,303 +43,112 @@
#ifndef QATOMIC_ARMV5_H
#define QATOMIC_ARMV5_H
+#include <QtCore/qgenericatomic.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_NOT_NATIVE
-
-inline bool QBasicAtomicInt::isReferenceCountingNative()
-{ return false; }
-inline bool QBasicAtomicInt::isReferenceCountingWaitFree()
-{ return false; }
+#if 0
+#pragma qt_sync_stop_processing
+#endif
+#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_NOT_NATIVE
#define Q_ATOMIC_INT_TEST_AND_SET_IS_NOT_NATIVE
-
-inline bool QBasicAtomicInt::isTestAndSetNative()
-{ return false; }
-inline bool QBasicAtomicInt::isTestAndSetWaitFree()
-{ return false; }
-
#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE
#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_WAIT_FREE
-
-inline bool QBasicAtomicInt::isFetchAndStoreNative()
-{ return true; }
-inline bool QBasicAtomicInt::isFetchAndStoreWaitFree()
-{ return true; }
-
#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_NOT_NATIVE
-inline bool QBasicAtomicInt::isFetchAndAddNative()
-{ return false; }
-inline bool QBasicAtomicInt::isFetchAndAddWaitFree()
-{ return false; }
-
#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_NOT_NATIVE
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetNative()
-{ return false; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetWaitFree()
-{ return false; }
-
#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE
#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_WAIT_FREE
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreWaitFree()
-{ return true; }
-
#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_NOT_NATIVE
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddNative()
-{ return false; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddWaitFree()
-{ return false; }
-
-#ifndef QT_NO_ARM_EABI
-
-// kernel places a restartable cmpxchg implementation at a fixed address
-extern "C" typedef int (qt_atomic_eabi_cmpxchg_int_t)(int oldval, int newval, volatile int *ptr);
-extern "C" typedef int (qt_atomic_eabi_cmpxchg_ptr_t)(const void *oldval, const void *newval, volatile void *ptr);
-#define qt_atomic_eabi_cmpxchg_int (*reinterpret_cast<qt_atomic_eabi_cmpxchg_int_t *>(0xffff0fc0))
-#define qt_atomic_eabi_cmpxchg_ptr (*reinterpret_cast<qt_atomic_eabi_cmpxchg_ptr_t *>(0xffff0fc0))
+#ifdef QT_NO_ARM_EABI
+# error "Sorry, ARM without EABI is no longer supported"
+#endif
+#ifndef Q_OS_LINUX
+# error "Qt is misconfigured: this ARMv5 implementation is only possible on Linux"
+#endif
-#else
+template<> struct QAtomicIntegerTraits<int> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned int> { enum { IsInteger = 1 }; };
-extern Q_CORE_EXPORT char q_atomic_lock;
-Q_CORE_EXPORT void qt_atomic_yield(int *);
+template <int size> struct QBasicAtomicOps: QGenericAtomicOps<QBasicAtomicOps<size> >
+{
+ // kernel places a restartable cmpxchg implementation at a fixed address
+ template <typename T>
+ static int _q_cmpxchg(T oldval, T newval, volatile T *ptr)
+ {
+ typedef int (* kernel_cmpxchg_t)(T oldval, T newval, volatile T *ptr);
+ kernel_cmpxchg_t kernel_cmpxchg = *reinterpret_cast<kernel_cmpxchg_t>(0xffff0fc0);
+ return kernel_cmpxchg(oldval, newval, ptr);
+ }
+ static void _q_dmb()
+ {
+ typedef void (* kernel_dmb_t)();
+ kernel_dmb_t kernel_dmb = *reinterpret_cast<kernel_dmb_t>(0xffff0fa0);
+ kernel_dmb();
+ }
-#ifdef Q_CC_RVCT
+ static void orderedMemoryFence() { _q_dmb(); }
-Q_CORE_EXPORT __asm char q_atomic_swp(volatile char *ptr, char newval);
+ template <typename T> static bool ref(T &_q_value);
+ template <typename T> static bool deref(T &_q_value);
-#else
+ static bool isTestAndSetNative() { return false; }
+ static bool isTestAndSetWaitFree() { return false; }
+ template <typename T> static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue);
+ template <typename T> static T fetchAndStoreRelaxed(T &_q_value, T newValue);
+ template <typename T> static
+ T fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd);
+};
-inline char q_atomic_swp(volatile char *ptr, char newval)
+template <typename T> struct QAtomicOps : QBasicAtomicOps<sizeof(T)>
{
- register char ret;
- asm volatile("swpb %0,%2,[%3]"
- : "=&r"(ret), "=m" (*ptr)
- : "r"(newval), "r"(ptr)
- : "cc", "memory");
- return ret;
-}
+ typedef T Type;
+};
-#endif // Q_CC_RVCT
-
-#endif // QT_NO_ARM_EABI
-
-// Reference counting
-
-inline bool QBasicAtomicInt::ref()
+template<> template<typename T> inline
+bool QBasicAtomicOps<4>::ref(T &_q_value)
{
-#ifndef QT_NO_ARM_EABI
- register int originalValue;
- register int newValue;
+ register T originalValue;
+ register T newValue;
do {
originalValue = _q_value;
newValue = originalValue + 1;
- } while (qt_atomic_eabi_cmpxchg_int(originalValue, newValue, &_q_value) != 0);
+ } while (_q_cmpxchg(originalValue, newValue, &_q_value) != 0);
return newValue != 0;
-#else
- int count = 0;
- while (q_atomic_swp(&q_atomic_lock, ~0) != 0)
- qt_atomic_yield(&count);
- int originalValue = _q_value++;
- q_atomic_swp(&q_atomic_lock, 0);
- return originalValue != -1;
-#endif
}
-inline bool QBasicAtomicInt::deref()
+template<> template <typename T> inline
+bool QBasicAtomicOps<4>::deref(T &_q_value)
{
-#ifndef QT_NO_ARM_EABI
- register int originalValue;
- register int newValue;
+ register T originalValue;
+ register T newValue;
do {
originalValue = _q_value;
newValue = originalValue - 1;
- } while (qt_atomic_eabi_cmpxchg_int(originalValue, newValue, &_q_value) != 0);
+ } while (_q_cmpxchg(originalValue, newValue, &_q_value) != 0);
return newValue != 0;
-#else
- int count = 0;
- while (q_atomic_swp(&q_atomic_lock, ~0) != 0)
- qt_atomic_yield(&count);
- int originalValue = _q_value--;
- q_atomic_swp(&q_atomic_lock, 0);
- return originalValue != 1;
-#endif
}
-// Test and set for integers
-
-inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
+template<> template <typename T> inline
+bool QBasicAtomicOps<4>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue)
{
-#ifndef QT_NO_ARM_EABI
- register int originalValue;
+ register T originalValue;
do {
originalValue = _q_value;
if (originalValue != expectedValue)
return false;
- } while (qt_atomic_eabi_cmpxchg_int(expectedValue, newValue, &_q_value) != 0);
+ } while (_q_cmpxchg(expectedValue, newValue, &_q_value) != 0);
return true;
-#else
- bool returnValue = false;
- int count = 0;
- while (q_atomic_swp(&q_atomic_lock, ~0) != 0)
- qt_atomic_yield(&count);
- if (_q_value == expectedValue) {
- _q_value = newValue;
- returnValue = true;
- }
- q_atomic_swp(&q_atomic_lock, 0);
- return returnValue;
-#endif
-}
-
-inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
}
// Fetch and store for integers
-
-#ifndef Q_CC_RVCT
-
-inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue)
-{
- int originalValue;
- asm volatile("swp %0,%2,[%3]"
- : "=&r"(originalValue), "=m" (_q_value)
- : "r"(newValue), "r"(&_q_value)
- : "cc", "memory");
- return originalValue;
-}
-
-#endif
-
-inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-// Fetch and add for integers
-
-inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
-{
-#ifndef QT_NO_ARM_EABI
- register int originalValue;
- register int newValue;
- do {
- originalValue = _q_value;
- newValue = originalValue + valueToAdd;
- } while (qt_atomic_eabi_cmpxchg_int(originalValue, newValue, &_q_value) != 0);
- return originalValue;
-#else
- int count = 0;
- while (q_atomic_swp(&q_atomic_lock, ~0) != 0)
- qt_atomic_yield(&count);
- int originalValue = _q_value;
- _q_value += valueToAdd;
- q_atomic_swp(&q_atomic_lock, 0);
- return originalValue;
-#endif
-}
-
-inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-// Test and set for pointers
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
-{
-#ifndef QT_NO_ARM_EABI
- register T *originalValue;
- do {
- originalValue = _q_value;
- if (originalValue != expectedValue)
- return false;
- } while (qt_atomic_eabi_cmpxchg_ptr(expectedValue, newValue, &_q_value) != 0);
- return true;
-#else
- bool returnValue = false;
- int count = 0;
- while (q_atomic_swp(&q_atomic_lock, ~0) != 0)
- qt_atomic_yield(&count);
- if (_q_value == expectedValue) {
- _q_value = newValue;
- returnValue = true;
- }
- q_atomic_swp(&q_atomic_lock, 0);
- return returnValue;
-#endif
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-// Fetch and store for pointers
-
#ifdef Q_CC_RVCT
-
-template <typename T>
-__asm T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
+template<> template <typename T> inline
+__asm T QBasicAtomicOps<4>::fetchAndStoreRelaxed(T &_q_value, T newValue)
{
add r2, pc, #0
bx r2
@@ -348,80 +158,29 @@ __asm T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
bx lr
thumb
}
-
#else
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
+template<> template <typename T> inline
+T QBasicAtomicOps<4>::fetchAndStoreRelaxed(T &_q_value, T newValue)
{
- T *originalValue;
+ T originalValue;
asm volatile("swp %0,%2,[%3]"
: "=&r"(originalValue), "=m" (_q_value)
: "r"(newValue), "r"(&_q_value)
: "cc", "memory");
return originalValue;
}
-
#endif // Q_CC_RVCT
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-// Fetch and add for pointers
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
+template<> template <typename T> inline
+T QBasicAtomicOps<4>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
-#ifndef QT_NO_ARM_EABI
- register T *originalValue;
- register T *newValue;
+ register T originalValue;
+ register T newValue;
do {
originalValue = _q_value;
newValue = originalValue + valueToAdd;
- } while (qt_atomic_eabi_cmpxchg_ptr(originalValue, newValue, &_q_value) != 0);
+ } while (_q_cmpxchg(originalValue, newValue, &_q_value) != 0);
return originalValue;
-#else
- int count = 0;
- while (q_atomic_swp(&q_atomic_lock, ~0) != 0)
- qt_atomic_yield(&count);
- T *originalValue = (_q_value);
- _q_value += valueToAdd;
- q_atomic_swp(&q_atomic_lock, 0);
- return originalValue;
-#endif
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
}
QT_END_NAMESPACE
diff --git a/src/corelib/arch/qatomic_armv6.h b/src/corelib/arch/qatomic_armv6.h
index 260f48d563..7095d13d9b 100644
--- a/src/corelib/arch/qatomic_armv6.h
+++ b/src/corelib/arch/qatomic_armv6.h
@@ -1,8 +1,8 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Copyright (C) 2011 Thiago Macieira <thiago@kde.org>
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,77 +43,72 @@
#ifndef QATOMIC_ARMV6_H
#define QATOMIC_ARMV6_H
+#include <QtCore/qgenericatomic.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
-
-inline bool QBasicAtomicInt::isReferenceCountingNative()
-{ return true; }
-inline bool QBasicAtomicInt::isReferenceCountingWaitFree()
-{ return false; }
+#if 0
+#pragma qt_sync_stop_processing
+#endif
+#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
#define Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE
-
-inline bool QBasicAtomicInt::isTestAndSetNative()
-{ return true; }
-inline bool QBasicAtomicInt::isTestAndSetWaitFree()
-{ return false; }
-
#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE
-
-inline bool QBasicAtomicInt::isFetchAndStoreNative()
-{ return true; }
-inline bool QBasicAtomicInt::isFetchAndStoreWaitFree()
-{ return false; }
-
#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE
-inline bool QBasicAtomicInt::isFetchAndAddNative()
-{ return true; }
-inline bool QBasicAtomicInt::isFetchAndAddWaitFree()
-{ return false; }
+#define Q_ATOMIC_INT32_IS_SUPPORTED
+#define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_ALWAYS_NATIVE
#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetWaitFree()
-{ return false; }
+template<> struct QAtomicIntegerTraits<int> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned int> { enum { IsInteger = 1 }; };
-#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+template <int size> struct QBasicAtomicOps: QGenericAtomicOps<QBasicAtomicOps<size> >
+{
+ static void orderedMemoryFence();
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreWaitFree()
-{ return false; }
+ static inline bool isReferenceCountingNative() { return true; }
+ template <typename T> static bool ref(T &_q_value);
+ template <typename T> static bool deref(T &_q_value);
-#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+ static inline bool isTestAndSetNative() { return true; }
+ static inline bool isTestAndSetWaitFree() { return false; }
+ template <typename T> static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue);
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddWaitFree()
-{ return false; }
+ static inline bool isFetchAndStoreNative() { return true; }
+ template <typename T> static T fetchAndStoreRelaxed(T &_q_value, T newValue);
+
+ static inline bool isFetchAndAddNative() { return true; }
+ template <typename T> static
+ T fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd);
+};
+
+template <typename T> struct QAtomicOps : QBasicAtomicOps<sizeof(T)>
+{
+ typedef T Type;
+};
#ifndef Q_CC_RVCT
#ifndef Q_DATA_MEMORY_BARRIER
-# define Q_DATA_MEMORY_BARRIER asm volatile("":::"memory")
+# define Q_DATA_MEMORY_BARRIER asm volatile("mcr p15, 0, r0, c7, c10, 5":::"memory")
#endif
#ifndef Q_COMPILER_MEMORY_BARRIER
# define Q_COMPILER_MEMORY_BARRIER asm volatile("":::"memory")
#endif
-inline bool QBasicAtomicInt::ref()
+template<> template<typename T> inline
+bool QBasicAtomicOps<4>::ref(T &_q_value)
{
- register int newValue;
+ register T newValue;
register int result;
asm volatile("0:\n"
"ldrex %[newValue], [%[_q_value]]\n"
@@ -128,9 +124,10 @@ inline bool QBasicAtomicInt::ref()
return newValue != 0;
}
-inline bool QBasicAtomicInt::deref()
+template<> template <typename T> inline
+bool QBasicAtomicOps<4>::deref(T &_q_value)
{
- register int newValue;
+ register T newValue;
register int result;
asm volatile("0:\n"
"ldrex %[newValue], [%[_q_value]]\n"
@@ -146,7 +143,8 @@ inline bool QBasicAtomicInt::deref()
return newValue != 0;
}
-inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
+template<> template <typename T> inline
+bool QBasicAtomicOps<4>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue)
{
register int result;
asm volatile("0:\n"
@@ -165,9 +163,10 @@ inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
return result == 0;
}
-inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue)
+template<> template <typename T> inline
+T QBasicAtomicOps<4>::fetchAndStoreRelaxed(T &_q_value, T newValue)
{
- register int originalValue;
+ register T originalValue;
register int result;
asm volatile("0:\n"
"ldrex %[originalValue], [%[_q_value]]\n"
@@ -183,10 +182,11 @@ inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue)
return originalValue;
}
-inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
+template<> template <typename T> inline
+T QBasicAtomicOps<4>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
- register int originalValue;
- register int newValue;
+ register T originalValue;
+ register T newValue;
register int result;
asm volatile("0:\n"
"ldrex %[originalValue], [%[_q_value]]\n"
@@ -198,21 +198,94 @@ inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
[newValue] "=&r" (newValue),
[result] "=&r" (result),
"+m" (_q_value)
- : [valueToAdd] "r" (valueToAdd),
+ : [valueToAdd] "r" (valueToAdd * QAtomicAdditiveType<T>::AddScale),
[_q_value] "r" (&_q_value)
: "cc");
return originalValue;
}
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue)
+#if defined(__ARM_ARCH_7__) \
+ || defined(__ARM_ARCH_7A__) \
+ || defined(__ARM_ARCH_7R__) \
+ || defined(__ARM_ARCH_7M__) \
+ || defined(__ARM_ARCH_6K__)
+// LDREXB, LDREXH and LDREXD are available on ARMv6K or higher
+
+template<> struct QAtomicIntegerTraits<char> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<signed char> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned char> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<short> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned short> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<long> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned long> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<long long> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned long long> { enum { IsInteger = 1 }; };
+
+#define Q_ATOMIC_INT8_IS_SUPPORTED
+#define Q_ATOMIC_INT8_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT8_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT8_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT8_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+
+#define Q_ATOMIC_INT16_IS_SUPPORTED
+#define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT16_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+
+#define Q_ATOMIC_INT64_IS_SUPPORTED
+#define Q_ATOMIC_INT64_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT64_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT64_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT64_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+
+template<> template<typename T> inline
+bool QBasicAtomicOps<1>::ref(T &_q_value)
+{
+ register T newValue;
+ register int result;
+ asm volatile("0:\n"
+ "ldrexb %[newValue], [%[_q_value]]\n"
+ "add %[newValue], %[newValue], #1\n"
+ "strexb %[result], %[newValue], [%[_q_value]]\n"
+ "teq %[result], #0\n"
+ "bne 0b\n"
+ : [newValue] "=&r" (newValue),
+ [result] "=&r" (result),
+ "+m" (_q_value)
+ : [_q_value] "r" (&_q_value)
+ : "cc", "memory");
+ return newValue != 0;
+}
+
+template<> template <typename T> inline
+bool QBasicAtomicOps<1>::deref(T &_q_value)
{
- register T *result;
+ register T newValue;
+ register int result;
asm volatile("0:\n"
- "ldrex %[result], [%[_q_value]]\n"
+ "ldrexb %[newValue], [%[_q_value]]\n"
+ "sub %[newValue], %[newValue], #1\n"
+ "strexb %[result], %[newValue], [%[_q_value]]\n"
+ "teq %[result], #0\n"
+ "bne 0b\n"
+ : [newValue] "=&r" (newValue),
+ [result] "=&r" (result),
+ "+m" (_q_value)
+ : [_q_value] "r" (&_q_value)
+ : "cc", "memory");
+ return newValue != 0;
+}
+
+template<> template <typename T> inline
+bool QBasicAtomicOps<1>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue)
+{
+ register T result;
+ asm volatile("0:\n"
+ "ldrexb %[result], [%[_q_value]]\n"
"eors %[result], %[result], %[expectedValue]\n"
"itt eq\n"
- "strexeq %[result], %[newValue], [%[_q_value]]\n"
+ "strexbeq %[result], %[newValue], [%[_q_value]]\n"
"teqeq %[result], #1\n"
"beq 0b\n"
: [result] "=&r" (result),
@@ -224,14 +297,14 @@ Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValu
return result == 0;
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
+template<> template <typename T> inline
+T QBasicAtomicOps<1>::fetchAndStoreRelaxed(T &_q_value, T newValue)
{
- register T *originalValue;
+ register T originalValue;
register int result;
asm volatile("0:\n"
- "ldrex %[originalValue], [%[_q_value]]\n"
- "strex %[result], %[newValue], [%[_q_value]]\n"
+ "ldrexb %[originalValue], [%[_q_value]]\n"
+ "strexb %[result], %[newValue], [%[_q_value]]\n"
"teq %[result], #0\n"
"bne 0b\n"
: [originalValue] "=&r" (originalValue),
@@ -243,28 +316,239 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
return originalValue;
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
+template<> template <typename T> inline
+T QBasicAtomicOps<1>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
- register T *originalValue;
- register T *newValue;
+ register T originalValue;
+ register T newValue;
register int result;
asm volatile("0:\n"
- "ldrex %[originalValue], [%[_q_value]]\n"
+ "ldrexb %[originalValue], [%[_q_value]]\n"
"add %[newValue], %[originalValue], %[valueToAdd]\n"
- "strex %[result], %[newValue], [%[_q_value]]\n"
+ "strexb %[result], %[newValue], [%[_q_value]]\n"
+ "teq %[result], #0\n"
+ "bne 0b\n"
+ : [originalValue] "=&r" (originalValue),
+ [newValue] "=&r" (newValue),
+ [result] "=&r" (result),
+ "+m" (_q_value)
+ : [valueToAdd] "r" (valueToAdd * QAtomicAdditiveType<T>::AddScale),
+ [_q_value] "r" (&_q_value)
+ : "cc");
+ return originalValue;
+}
+
+template<> template<typename T> inline
+bool QBasicAtomicOps<2>::ref(T &_q_value)
+{
+ register T newValue;
+ register int result;
+ asm volatile("0:\n"
+ "ldrexh %[newValue], [%[_q_value]]\n"
+ "add %[newValue], %[newValue], #1\n"
+ "strexh %[result], %[newValue], [%[_q_value]]\n"
+ "teq %[result], #0\n"
+ "bne 0b\n"
+ : [newValue] "=&r" (newValue),
+ [result] "=&r" (result),
+ "+m" (_q_value)
+ : [_q_value] "r" (&_q_value)
+ : "cc", "memory");
+ return newValue != 0;
+}
+
+template<> template <typename T> inline
+bool QBasicAtomicOps<2>::deref(T &_q_value)
+{
+ register T newValue;
+ register int result;
+ asm volatile("0:\n"
+ "ldrexh %[newValue], [%[_q_value]]\n"
+ "sub %[newValue], %[newValue], #1\n"
+ "strexh %[result], %[newValue], [%[_q_value]]\n"
+ "teq %[result], #0\n"
+ "bne 0b\n"
+ : [newValue] "=&r" (newValue),
+ [result] "=&r" (result),
+ "+m" (_q_value)
+ : [_q_value] "r" (&_q_value)
+ : "cc", "memory");
+ return newValue != 0;
+}
+
+template<> template <typename T> inline
+bool QBasicAtomicOps<2>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue)
+{
+ register T result;
+ asm volatile("0:\n"
+ "ldrexh %[result], [%[_q_value]]\n"
+ "eors %[result], %[result], %[expectedValue]\n"
+ "strexheq %[result], %[newValue], [%[_q_value]]\n"
+ "teqeq %[result], #1\n"
+ "beq 0b\n"
+ : [result] "=&r" (result),
+ "+m" (_q_value)
+ : [expectedValue] "r" (expectedValue),
+ [newValue] "r" (newValue),
+ [_q_value] "r" (&_q_value)
+ : "cc");
+ return result == 0;
+}
+
+template<> template <typename T> inline
+T QBasicAtomicOps<2>::fetchAndStoreRelaxed(T &_q_value, T newValue)
+{
+ register T originalValue;
+ register int result;
+ asm volatile("0:\n"
+ "ldrexh %[originalValue], [%[_q_value]]\n"
+ "strexh %[result], %[newValue], [%[_q_value]]\n"
+ "teq %[result], #0\n"
+ "bne 0b\n"
+ : [originalValue] "=&r" (originalValue),
+ [result] "=&r" (result),
+ "+m" (_q_value)
+ : [newValue] "r" (newValue),
+ [_q_value] "r" (&_q_value)
+ : "cc");
+ return originalValue;
+}
+
+template<> template <typename T> inline
+T QBasicAtomicOps<2>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
+{
+ register T originalValue;
+ register T newValue;
+ register int result;
+ asm volatile("0:\n"
+ "ldrexh %[originalValue], [%[_q_value]]\n"
+ "add %[newValue], %[originalValue], %[valueToAdd]\n"
+ "strexh %[result], %[newValue], [%[_q_value]]\n"
"teq %[result], #0\n"
"bne 0b\n"
: [originalValue] "=&r" (originalValue),
[newValue] "=&r" (newValue),
[result] "=&r" (result),
"+m" (_q_value)
- : [valueToAdd] "r" (valueToAdd * sizeof(T)),
+ : [valueToAdd] "r" (valueToAdd * QAtomicAdditiveType<T>::AddScale),
[_q_value] "r" (&_q_value)
: "cc");
return originalValue;
}
+// Explanation from GCC's source code (config/arm/arm.c) on the modifiers below:
+// Whenever you use "r" (dwordVariable), you get assigned a register pair:
+// %[reg] - lower-numbered register
+// %H[reg] - higher-numbered register
+// %Q[reg] - low part of the value
+// %R[reg] - high part of the value
+// If this is a little-endian build, H and R are the same; otherwise, H and Q are the same.
+
+template<> template<typename T> inline
+bool QBasicAtomicOps<8>::ref(T &_q_value)
+{
+ register T newValue;
+ register int result;
+ asm volatile("0:\n"
+ "ldrexd %[newValue], %H[newValue], [%[_q_value]]\n"
+ "adds %Q[newValue], %Q[newValue], #1\n"
+ "adc %R[newValue], %R[newValue], #0\n"
+ "strexd %[result], %[newValue], %H[newValue], [%[_q_value]]\n"
+ "teq %[result], #0\n"
+ "bne 0b\n"
+ : [newValue] "=&r" (newValue),
+ [result] "=&r" (result),
+ "+m" (_q_value)
+ : [_q_value] "r" (&_q_value)
+ : "cc", "memory");
+ return newValue != 0;
+}
+
+template<> template <typename T> inline
+bool QBasicAtomicOps<8>::deref(T &_q_value)
+{
+ register T newValue;
+ register int result;
+ asm volatile("0:\n"
+ "ldrexd %[newValue], %H[newValue], [%[_q_value]]\n"
+ "subs %Q[newValue], %Q[newValue], #1\n"
+ "sbc %R[newValue], %R[newValue], #0\n"
+ "strexd %[result], %[newValue], %H[newValue], [%[_q_value]]\n"
+ "teq %[result], #0\n"
+ "bne 0b\n"
+ : [newValue] "=&r" (newValue),
+ [result] "=&r" (result),
+ "+m" (_q_value)
+ : [_q_value] "r" (&_q_value)
+ : "cc", "memory");
+ return newValue != 0;
+}
+
+template<> template <typename T> inline
+bool QBasicAtomicOps<8>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue)
+{
+ register T result;
+ asm volatile("0:\n"
+ "ldrexd %[result], %H[result], [%[_q_value]]\n"
+ "eor %[result], %[result], %[expectedValue]\n"
+ "eor %H[result], %H[result], %H[expectedValue]\n"
+ "orrs %[result], %[result], %H[result]\n"
+ "strexdeq %[result], %[newValue], %H[newValue], [%[_q_value]]\n"
+ "teqeq %[result], #1\n"
+ "beq 0b\n"
+ : [result] "=&r" (result),
+ "+m" (_q_value)
+ : [expectedValue] "r" (expectedValue),
+ [newValue] "r" (newValue),
+ [_q_value] "r" (&_q_value)
+ : "cc");
+ return quint32(result) == 0;
+}
+
+template<> template <typename T> inline
+T QBasicAtomicOps<8>::fetchAndStoreRelaxed(T &_q_value, T newValue)
+{
+ register T originalValue;
+ register int result;
+ asm volatile("0:\n"
+ "ldrexd %[originalValue], %H[originalValue], [%[_q_value]]\n"
+ "strexd %[result], %[newValue], %H[newValue], [%[_q_value]]\n"
+ "teq %[result], #0\n"
+ "bne 0b\n"
+ : [originalValue] "=&r" (originalValue),
+ [result] "=&r" (result),
+ "+m" (_q_value)
+ : [newValue] "r" (newValue),
+ [_q_value] "r" (&_q_value)
+ : "cc");
+ return originalValue;
+}
+
+template<> template <typename T> inline
+T QBasicAtomicOps<8>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
+{
+ register T originalValue;
+ register T newValue;
+ register int result;
+ asm volatile("0:\n"
+ "ldrexd %[originalValue], %H[originalValue], [%[_q_value]]\n"
+ "adds %Q[newValue], %Q[originalValue], %Q[valueToAdd]\n"
+ "adc %R[newValue], %R[originalValue], %R[valueToAdd]\n"
+ "strexd %[result], %[newValue], %H[newValue], [%[_q_value]]\n"
+ "teq %[result], #0\n"
+ "bne 0b\n"
+ : [originalValue] "=&r" (originalValue),
+ [newValue] "=&r" (newValue),
+ [result] "=&r" (result),
+ "+m" (_q_value)
+ : [valueToAdd] "r" (valueToAdd * QAtomicAdditiveType<T>::AddScale),
+ [_q_value] "r" (&_q_value)
+ : "cc");
+ return originalValue;
+}
+
+#endif
+
#else
// This is Q_CC_RVCT
@@ -415,140 +699,10 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueTo
// common code
-inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
-{
- bool returnValue = testAndSetRelaxed(expectedValue, newValue);
- Q_DATA_MEMORY_BARRIER;
- return returnValue;
-}
-
-inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
-{
- Q_DATA_MEMORY_BARRIER;
- return testAndSetRelaxed(expectedValue, newValue);
-}
-
-inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
-{
- Q_DATA_MEMORY_BARRIER;
- bool returnValue = testAndSetRelaxed(expectedValue, newValue);
- Q_COMPILER_MEMORY_BARRIER;
- return returnValue;
-}
-
-inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
-{
- int returnValue = fetchAndStoreRelaxed(newValue);
- Q_DATA_MEMORY_BARRIER;
- return returnValue;
-}
-
-inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
-{
- Q_DATA_MEMORY_BARRIER;
- return fetchAndStoreRelaxed(newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue)
-{
- Q_DATA_MEMORY_BARRIER;
- int returnValue = fetchAndStoreRelaxed(newValue);
- Q_COMPILER_MEMORY_BARRIER;
- return returnValue;
-}
-
-
-inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
-{
- int returnValue = fetchAndAddRelaxed(valueToAdd);
- Q_DATA_MEMORY_BARRIER;
- return returnValue;
-}
-
-inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
-{
- Q_DATA_MEMORY_BARRIER;
- return fetchAndAddRelaxed(valueToAdd);
-}
-
-inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
-{
- Q_DATA_MEMORY_BARRIER;
- int returnValue = fetchAndAddRelaxed(valueToAdd);
- Q_COMPILER_MEMORY_BARRIER;
- return returnValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue)
-{
- bool returnValue = testAndSetRelaxed(expectedValue, newValue);
- Q_DATA_MEMORY_BARRIER;
- return returnValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue)
-{
- Q_DATA_MEMORY_BARRIER;
- return testAndSetRelaxed(expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
-{
- Q_DATA_MEMORY_BARRIER;
- bool returnValue = testAndSetAcquire(expectedValue, newValue);
- Q_COMPILER_MEMORY_BARRIER;
- return returnValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
-{
- T *returnValue = fetchAndStoreRelaxed(newValue);
- Q_DATA_MEMORY_BARRIER;
- return returnValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
-{
- Q_DATA_MEMORY_BARRIER;
- return fetchAndStoreRelaxed(newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
-{
- Q_DATA_MEMORY_BARRIER;
- T *returnValue = fetchAndStoreRelaxed(newValue);
- Q_COMPILER_MEMORY_BARRIER;
- return returnValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
-{
- T *returnValue = fetchAndAddRelaxed(valueToAdd);
- Q_DATA_MEMORY_BARRIER;
- return returnValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd)
-{
- Q_DATA_MEMORY_BARRIER;
- return fetchAndAddRelaxed(valueToAdd);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
+template <int size> inline
+void QBasicAtomicOps<size>::orderedMemoryFence()
{
Q_DATA_MEMORY_BARRIER;
- T *returnValue = fetchAndAddRelaxed(valueToAdd);
- Q_COMPILER_MEMORY_BARRIER;
- return returnValue;
}
#undef Q_DATA_MEMORY_BARRIER
diff --git a/src/corelib/arch/qatomic_armv7.h b/src/corelib/arch/qatomic_armv7.h
index 814eefb376..5b36708ad6 100644
--- a/src/corelib/arch/qatomic_armv7.h
+++ b/src/corelib/arch/qatomic_armv7.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,8 +42,6 @@
#ifndef QATOMIC_ARMV7_H
#define QATOMIC_ARMV7_H
-QT_BEGIN_HEADER
-
// use the DMB instruction when compiling for ARMv7, ...
#ifndef Q_CC_RCVT
# define Q_DATA_MEMORY_BARRIER asm volatile("dmb\n":::"memory")
@@ -52,10 +50,6 @@ QT_BEGIN_HEADER
#endif
// ... but the implementation is otherwise identical to that for ARMv6
-QT_BEGIN_INCLUDE_HEADER
#include "QtCore/qatomic_armv6.h"
-QT_END_INCLUDE_HEADER
-
-QT_END_HEADER
#endif // QATOMIC_ARMV7_H
diff --git a/src/corelib/arch/qatomic_avr32.h b/src/corelib/arch/qatomic_avr32.h
deleted file mode 100644
index 749cc0fd36..0000000000
--- a/src/corelib/arch/qatomic_avr32.h
+++ /dev/null
@@ -1,252 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QATOMIC_AVR32_H
-#define QATOMIC_AVR32_H
-
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
-
-inline bool QBasicAtomicInt::isReferenceCountingNative()
-{ return true; }
-inline bool QBasicAtomicInt::isReferenceCountingWaitFree()
-{ return false; }
-
-#define Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE
-
-inline bool QBasicAtomicInt::isTestAndSetNative()
-{ return true; }
-inline bool QBasicAtomicInt::isTestAndSetWaitFree()
-{ return false; }
-
-#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE
-#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_WAIT_FREE
-
-inline bool QBasicAtomicInt::isFetchAndStoreNative()
-{ return true; }
-inline bool QBasicAtomicInt::isFetchAndStoreWaitFree()
-{ return true; }
-
-#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE
-
-inline bool QBasicAtomicInt::isFetchAndAddNative()
-{ return true; }
-inline bool QBasicAtomicInt::isFetchAndAddWaitFree()
-{ return false; }
-
-#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetWaitFree()
-{ return false; }
-
-#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE
-#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_WAIT_FREE
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreWaitFree()
-{ return true; }
-
-#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddWaitFree()
-{ return false; }
-
-inline bool QBasicAtomicInt::ref()
-{
- return __sync_add_and_fetch(&_q_value, 1);
-}
-
-inline bool QBasicAtomicInt::deref()
-{
- return __sync_sub_and_fetch(&_q_value, 1);
-}
-
-inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
-{
- return __sync_bool_compare_and_swap(&_q_value, expectedValue, newValue);
-}
-
-inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue)
-{
- return __sync_lock_test_and_set(&_q_value, newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
-{
- return __sync_fetch_and_add(&_q_value, valueToAdd);
-}
-
-inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
-{
- return __sync_bool_compare_and_swap(&_q_value, expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
-{
- return __sync_lock_test_and_set(&_q_value, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
-{
- return __sync_fetch_and_add(&_q_value, valueToAdd * sizeof(T));
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif // QATOMIC_AVR32_H
diff --git a/src/corelib/arch/qatomic_bfin.h b/src/corelib/arch/qatomic_bfin.h
index 4784b634fc..530ac8d50f 100644
--- a/src/corelib/arch/qatomic_bfin.h
+++ b/src/corelib/arch/qatomic_bfin.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/arch/qatomic_bootstrap.h b/src/corelib/arch/qatomic_bootstrap.h
index 86376062a2..10cdc888f6 100644
--- a/src/corelib/arch/qatomic_bootstrap.h
+++ b/src/corelib/arch/qatomic_bootstrap.h
@@ -1,8 +1,8 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Copyright (C) 2011 Thiago Macieira <thiago@kde.org>
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,76 +43,54 @@
#ifndef QATOMIC_BOOTSTRAP_H
#define QATOMIC_BOOTSTRAP_H
+#include <QtCore/qgenericatomic.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-inline bool QBasicAtomicInt::ref()
-{
- return ++_q_value != 0;
-}
+#if 0
+#pragma qt_sync_stop_processing
+#endif
-inline bool QBasicAtomicInt::deref()
+template<> struct QAtomicIntegerTraits<int> { enum { IsInteger = 1 }; };
+template <typename T> struct QAtomicOps: QGenericAtomicOps<QAtomicOps<T> >
{
- return --_q_value != 0;
-}
+ typedef T Type;
-inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
-{
- if (_q_value == expectedValue) {
- _q_value = newValue;
- return true;
+ static bool ref(T &_q_value)
+ {
+ return ++_q_value != 0;
+ }
+ static bool deref(T &_q_value)
+ {
+ return --_q_value != 0;
}
- return false;
-}
-
-inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
-{
- int returnValue = _q_value;
- _q_value += valueToAdd;
- return returnValue;
-}
-
-inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
+ static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue)
+ {
+ if (_q_value == expectedValue) {
+ _q_value = newValue;
+ return true;
+ }
+ return false;
+ }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
-{
- if (_q_value == expectedValue) {
+ static T fetchAndStoreRelaxed(T &_q_value, T newValue)
+ {
+ T tmp = _q_value;
_q_value = newValue;
- return true;
+ return tmp;
+ }
+
+ static
+ T fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
+ {
+ T returnValue = _q_value;
+ _q_value += valueToAdd;
+ return returnValue;
}
- return false;
-}
+};
QT_END_NAMESPACE
diff --git a/src/corelib/arch/qatomic_cxx11.h b/src/corelib/arch/qatomic_cxx11.h
new file mode 100644
index 0000000000..c2df59fd54
--- /dev/null
+++ b/src/corelib/arch/qatomic_cxx11.h
@@ -0,0 +1,247 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Thiago Macieira <thiago@kde.org>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QATOMIC_CXX11_H
+#define QATOMIC_CXX11_H
+
+#include <QtCore/qgenericatomic.h>
+#include <atomic>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+#if 0
+#pragma qt_sync_stop_processing
+#endif
+
+#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE
+#define Q_ATOMIC_INT_TEST_AND_SET_IS_SOMETIMES_NATIVE
+#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_SOMETIMES_NATIVE
+#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_SOMETIMES_NATIVE
+
+#define Q_ATOMIC_INT32_IS_SUPPORTED
+#define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE
+#define Q_ATOMIC_INT32_TEST_AND_SET_IS_SOMETIMES_NATIVE
+#define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_SOMETIMES_NATIVE
+#define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_SOMETIMES_NATIVE
+
+#define Q_ATOMIC_POINTER_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE
+#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_SOMETIMES_NATIVE
+#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_SOMETIMES_NATIVE
+#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_SOMETIMES_NATIVE
+
+template<> struct QAtomicIntegerTraits<int> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned int> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<char> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<signed char> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned char> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<short> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned short> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<long> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned long> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<long long> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned long long> { enum { IsInteger = 1 }; };
+
+#define Q_ATOMIC_INT8_IS_SUPPORTED
+#define Q_ATOMIC_INT8_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT8_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT8_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT8_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+
+#define Q_ATOMIC_INT16_IS_SUPPORTED
+#define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT16_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+
+#define Q_ATOMIC_INT64_IS_SUPPORTED
+#define Q_ATOMIC_INT64_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT64_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT64_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT64_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+
+template <typename T> struct QAtomicOps
+{
+ typedef std::atomic<T> Type;
+ typedef typename QAtomicAdditiveType<T>::AdditiveT _AdditiveType;
+ static const int AddScale = QAtomicAdditiveType<T>::AddScale;
+
+ static void acquireMemoryFence() { }
+ static void releaseMemoryFence() { }
+ static void orderedMemoryFence() { }
+
+ static inline
+ T load(const Type &_q_value)
+ {
+ return _q_value.load(std::memory_order_relaxed);
+ }
+
+ static inline
+ T load(const volatile Type &_q_value)
+ {
+ return _q_value.load(std::memory_order_relaxed);
+ }
+
+ static inline
+ T loadAcquire(const Type &_q_value)
+ {
+ return _q_value.load(std::memory_order_acquire);
+ }
+
+ static inline
+ T loadAcquire(const volatile Type &_q_value)
+ {
+ return _q_value.load(std::memory_order_acquire);
+ }
+
+ static inline
+ void store(Type &_q_value, T newValue)
+ {
+ _q_value.store(newValue, std::memory_order_relaxed);
+ }
+
+ static inline
+ void storeRelease(Type &_q_value, T newValue)
+ {
+ _q_value.store(newValue, std::memory_order_release);
+ }
+
+ static inline bool isReferenceCountingNative() { return true; }
+ static inline bool isReferenceCountingWaitFree() { return false; }
+ static inline bool ref(Type &_q_value)
+ {
+ return ++_q_value != 0;
+ }
+
+ static inline bool deref(Type &_q_value)
+ {
+ return --_q_value != 0;
+ }
+
+ static inline bool isTestAndSetNative() { return false; }
+ static inline bool isTestAndSetWaitFree() { return false; }
+
+ static
+ bool testAndSetRelaxed(Type &_q_value, T expectedValue, T newValue)
+ {
+ return _q_value.compare_exchange_strong(expectedValue, newValue, std::memory_order_relaxed);
+ }
+
+ static bool testAndSetAcquire(Type &_q_value, T expectedValue, T newValue)
+ {
+ return _q_value.compare_exchange_strong(expectedValue, newValue, std::memory_order_acquire);
+ }
+
+ static bool testAndSetRelease(Type &_q_value, T expectedValue, T newValue)
+ {
+ return _q_value.compare_exchange_strong(expectedValue, newValue, std::memory_order_release);
+ }
+
+ static bool testAndSetOrdered(Type &_q_value, T expectedValue, T newValue)
+ {
+ return _q_value.compare_exchange_strong(expectedValue, newValue, std::memory_order_acq_rel);
+ }
+
+ static inline bool isFetchAndStoreNative() { return false; }
+ static inline bool isFetchAndStoreWaitFree() { return false; }
+
+ static T fetchAndStoreRelaxed(Type &_q_value, T newValue)
+ {
+ return _q_value.exchange(newValue, std::memory_order_relaxed);
+ }
+
+ static T fetchAndStoreAcquire(Type &_q_value, T newValue)
+ {
+ return _q_value.exchange(newValue, std::memory_order_acquire);
+ }
+
+ static T fetchAndStoreRelease(Type &_q_value, T newValue)
+ {
+ return _q_value.exchange(newValue, std::memory_order_release);
+ }
+
+ static T fetchAndStoreOrdered(Type &_q_value, T newValue)
+ {
+ return _q_value.exchange(newValue, std::memory_order_acq_rel);
+ }
+
+ static inline bool isFetchAndAddNative() { return false; }
+ static inline bool isFetchAndAddWaitFree() { return false; }
+
+ static
+ T fetchAndAddRelaxed(Type &_q_value, _AdditiveType valueToAdd)
+ {
+ return _q_value.fetch_add(valueToAdd * AddScale,
+ std::memory_order_relaxed);
+ }
+
+ static
+ T fetchAndAddAcquire(Type &_q_value, _AdditiveType valueToAdd)
+ {
+ return _q_value.fetch_add(valueToAdd * AddScale,
+ std::memory_order_acquire);
+ }
+
+ static
+ T fetchAndAddRelease(Type &_q_value, _AdditiveType valueToAdd)
+ {
+ return _q_value.fetch_add(valueToAdd * AddScale,
+ std::memory_order_release);
+ }
+
+ static
+ T fetchAndAddOrdered(Type &_q_value, _AdditiveType valueToAdd)
+ {
+ return _q_value.fetch_add(valueToAdd * AddScale,
+ std::memory_order_acq_rel);
+ }
+};
+
+#ifdef ATOMIC_VAR_INIT
+# define Q_BASIC_ATOMIC_INITIALIZER(a) { ATOMIC_VAR_INIT(a) }
+#else
+# define Q_BASIC_ATOMIC_INITIALIZER(a) { {a} }
+#endif
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QATOMIC_CXX0X_H
diff --git a/src/corelib/arch/qatomic_gcc.h b/src/corelib/arch/qatomic_gcc.h
new file mode 100644
index 0000000000..b5244429e6
--- /dev/null
+++ b/src/corelib/arch/qatomic_gcc.h
@@ -0,0 +1,130 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Thiago Macieira <thiago@kde.org>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QATOMIC_GCC_H
+#define QATOMIC_GCC_H
+
+#include <QtCore/qgenericatomic.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+#if 0
+#pragma qt_sync_stop_processing
+#endif
+
+template<> struct QAtomicIntegerTraits<int> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned int> { enum { IsInteger = 1 }; };
+
+#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE
+#define Q_ATOMIC_INT_TEST_AND_SET_IS_SOMETIMES_NATIVE
+#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_SOMETIMES_NATIVE
+#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_SOMETIMES_NATIVE
+
+#define Q_ATOMIC_INT32_IS_SUPPORTED
+#define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE
+#define Q_ATOMIC_INT32_TEST_AND_SET_IS_SOMETIMES_NATIVE
+#define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_SOMETIMES_NATIVE
+#define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_SOMETIMES_NATIVE
+
+#define Q_ATOMIC_POINTER_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE
+#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_SOMETIMES_NATIVE
+#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_SOMETIMES_NATIVE
+#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_SOMETIMES_NATIVE
+
+template <typename T> struct QAtomicOps: QGenericAtomicOps<QAtomicOps<T> >
+{
+ // The GCC intrinsics all have fully-ordered memory semantics, so we define
+ // only the xxxRelaxed functions. The exception is __sync_lock_and_test,
+ // which has acquire semantics, so we need to define the Release and
+ // Ordered versions too.
+
+ typedef T Type;
+
+#ifndef __ia64__
+ static T loadAcquire(T &_q_value)
+ {
+ T tmp = _q_value;
+ __sync_synchronize();
+ return tmp;
+ }
+
+ static void storeRelease(T &_q_value, T newValue)
+ {
+ __sync_synchronize();
+ _q_value = newValue;
+ }
+#endif
+
+ static bool isTestAndSetNative() { return false; }
+ static bool isTestAndSetWaitFree() { return false; }
+ static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue)
+ {
+ return __sync_bool_compare_and_swap(&_q_value, expectedValue, newValue);
+ }
+
+ static T fetchAndStoreRelaxed(T &_q_value, T newValue)
+ {
+ return __sync_lock_test_and_set(&_q_value, newValue);
+ }
+
+ static T fetchAndStoreRelease(T &_q_value, T newValue)
+ {
+ __sync_synchronize();
+ return __sync_lock_test_and_set(&_q_value, newValue);
+ }
+
+ static T fetchAndStoreOrdered(T &_q_value, T newValue)
+ {
+ return fetchAndStoreRelease(_q_value, newValue);
+ }
+
+ static
+ T fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
+ {
+ return __sync_fetch_and_add(&_q_value, valueToAdd * QAtomicAdditiveType<T>::AddScale);
+ }
+};
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QATOMIC_GCC_H
diff --git a/src/corelib/arch/qatomic_generic.h b/src/corelib/arch/qatomic_generic.h
index 0abc29cdb0..621a767dd6 100644
--- a/src/corelib/arch/qatomic_generic.h
+++ b/src/corelib/arch/qatomic_generic.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/arch/qatomic_i386.h b/src/corelib/arch/qatomic_i386.h
index 53a81864bf..6fec561177 100644
--- a/src/corelib/arch/qatomic_i386.h
+++ b/src/corelib/arch/qatomic_i386.h
@@ -1,8 +1,8 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Copyright (C) 2011 Thiago Macieira <thiago@kde.org>
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,318 +43,310 @@
#ifndef QATOMIC_I386_H
#define QATOMIC_I386_H
+#include <QtCore/qgenericatomic.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
+#if 0
+#pragma qt_sync_stop_processing
+#endif
+
+template<> struct QAtomicIntegerTraits<int> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned int> { enum { IsInteger = 1 }; };
+
#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_WAIT_FREE
-inline bool QBasicAtomicInt::isReferenceCountingNative()
-{ return true; }
-inline bool QBasicAtomicInt::isReferenceCountingWaitFree()
-{ return true; }
-
#define Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE
#define Q_ATOMIC_INT_TEST_AND_SET_IS_WAIT_FREE
-inline bool QBasicAtomicInt::isTestAndSetNative()
-{ return true; }
-inline bool QBasicAtomicInt::isTestAndSetWaitFree()
-{ return true; }
-
#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE
#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_WAIT_FREE
-inline bool QBasicAtomicInt::isFetchAndStoreNative()
-{ return true; }
-inline bool QBasicAtomicInt::isFetchAndStoreWaitFree()
-{ return true; }
-
#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE
#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_WAIT_FREE
-inline bool QBasicAtomicInt::isFetchAndAddNative()
-{ return true; }
-inline bool QBasicAtomicInt::isFetchAndAddWaitFree()
-{ return true; }
+#define Q_ATOMIC_INT32_IS_SUPPORTED
+
+#define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT32_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_TEST_AND_SET_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_WAIT_FREE
#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE
#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetWaitFree()
-{ return true; }
-
#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE
#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreWaitFree()
-{ return true; }
-
#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE
#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddWaitFree()
-{ return true; }
+template <int size> struct QBasicAtomicOps: QGenericAtomicOps<QBasicAtomicOps<size> >
+{
+ static inline bool isReferenceCountingNative() { return true; }
+ static inline bool isReferenceCountingWaitFree() { return true; }
+ template <typename T> static bool ref(T &_q_value);
+ template <typename T> static bool deref(T &_q_value);
+
+ static inline bool isTestAndSetNative() { return true; }
+ static inline bool isTestAndSetWaitFree() { return true; }
+ template <typename T> static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue);
+
+ static inline bool isFetchAndStoreNative() { return true; }
+ static inline bool isFetchAndStoreWaitFree() { return true; }
+ template <typename T> static T fetchAndStoreRelaxed(T &_q_value, T newValue);
+
+ static inline bool isFetchAndAddNative() { return true; }
+ static inline bool isFetchAndAddWaitFree() { return true; }
+ template <typename T> static
+ T fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd);
+};
+
+template <typename T> struct QAtomicOps : QBasicAtomicOps<sizeof(T)>
+{
+ typedef T Type;
+};
#if defined(Q_CC_GNU) || defined(Q_CC_INTEL)
-inline bool QBasicAtomicInt::ref()
+template<> struct QAtomicIntegerTraits<char> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<signed char> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned char> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<short> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned short> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<long> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned long> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<long long> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned long long> { enum { IsInteger = 1 }; };
+
+template<> template<typename T> inline
+bool QBasicAtomicOps<1>::ref(T &_q_value)
{
unsigned char ret;
asm volatile("lock\n"
- "incl %0\n"
+ "incb %0\n"
"setne %1"
- : "=m" (_q_value), "=qm" (ret)
- : "m" (_q_value)
+ : "+m" (_q_value), "=qm" (ret)
+ :
: "memory");
return ret != 0;
}
-inline bool QBasicAtomicInt::deref()
+template<> template<typename T> inline
+bool QBasicAtomicOps<2>::ref(T &_q_value)
{
- unsigned char ret;
+ unsigned char ret;
asm volatile("lock\n"
- "decl %0\n"
+ "incw %0\n"
"setne %1"
- : "=m" (_q_value), "=qm" (ret)
- : "m" (_q_value)
+ : "+m" (_q_value), "=qm" (ret)
+ :
: "memory");
return ret != 0;
}
-inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
+template<> template<typename T> inline
+bool QBasicAtomicOps<4>::ref(T &_q_value)
{
unsigned char ret;
asm volatile("lock\n"
- "cmpxchgl %3,%2\n"
- "sete %1\n"
- : "=a" (newValue), "=qm" (ret), "+m" (_q_value)
- : "r" (newValue), "0" (expectedValue)
+ "incl %0\n"
+ "setne %1"
+ : "+m" (_q_value), "=qm" (ret)
+ :
: "memory");
return ret != 0;
}
-inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue)
+template<> template <typename T> inline
+bool QBasicAtomicOps<1>::deref(T &_q_value)
{
- asm volatile("xchgl %0,%1"
- : "=r" (newValue), "+m" (_q_value)
- : "0" (newValue)
+ unsigned char ret;
+ asm volatile("lock\n"
+ "decb %0\n"
+ "setne %1"
+ : "+m" (_q_value), "=qm" (ret)
+ :
: "memory");
- return newValue;
+ return ret != 0;
}
-inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
+template<> template <typename T> inline
+bool QBasicAtomicOps<2>::deref(T &_q_value)
{
+ unsigned char ret;
asm volatile("lock\n"
- "xaddl %0,%1"
- : "=r" (valueToAdd), "+m" (_q_value)
- : "0" (valueToAdd)
+ "decw %0\n"
+ "setne %1"
+ : "+m" (_q_value), "=qm" (ret)
+ :
: "memory");
- return valueToAdd;
+ return ret != 0;
}
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
+template<> template <typename T> inline
+bool QBasicAtomicOps<4>::deref(T &_q_value)
{
unsigned char ret;
asm volatile("lock\n"
- "cmpxchgl %3,%2\n"
- "sete %1\n"
- : "=a" (newValue), "=qm" (ret), "+m" (_q_value)
- : "r" (newValue), "0" (expectedValue)
+ "decl %0\n"
+ "setne %1"
+ : "+m" (_q_value), "=qm" (ret)
+ :
: "memory");
return ret != 0;
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
+template<int size> template <typename T> inline
+bool QBasicAtomicOps<size>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue)
{
- asm volatile("xchgl %0,%1"
- : "=r" (newValue), "+m" (_q_value)
- : "0" (newValue)
+ unsigned char ret;
+ asm volatile("lock\n"
+ "cmpxchg %3,%2\n"
+ "sete %1\n"
+ : "=a" (newValue), "=qm" (ret), "+m" (_q_value)
+ : "r" (newValue), "0" (expectedValue)
: "memory");
- return newValue;
+ return ret != 0;
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
+template<> template <typename T> inline
+bool QBasicAtomicOps<1>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue)
{
+ unsigned char ret;
asm volatile("lock\n"
- "xaddl %0,%1"
- : "=r" (valueToAdd), "+m" (_q_value)
- : "0" (valueToAdd * sizeof(T))
+ "cmpxchg %3,%2\n"
+ "sete %1\n"
+ : "=a" (newValue), "=qm" (ret), "+m" (_q_value)
+ : "q" (newValue), "0" (expectedValue)
: "memory");
- return reinterpret_cast<T *>(valueToAdd);
-}
-
-#else
-
-extern "C" {
- Q_CORE_EXPORT int q_atomic_test_and_set_int(volatile int *ptr, int expected, int newval);
- Q_CORE_EXPORT int q_atomic_test_and_set_ptr(volatile void *ptr, void *expected, void *newval);
- Q_CORE_EXPORT int q_atomic_increment(volatile int *ptr);
- Q_CORE_EXPORT int q_atomic_decrement(volatile int *ptr);
- Q_CORE_EXPORT int q_atomic_set_int(volatile int *ptr, int newval);
- Q_CORE_EXPORT void *q_atomic_set_ptr(volatile void *ptr, void *newval);
- Q_CORE_EXPORT int q_atomic_fetch_and_add_int(volatile int *ptr, int value);
- Q_CORE_EXPORT void *q_atomic_fetch_and_add_ptr(volatile void *ptr, int value);
-} // extern "C"
-
-inline bool QBasicAtomicInt::ref()
-{
- return q_atomic_increment(&_q_value) != 0;
-}
-
-inline bool QBasicAtomicInt::deref()
-{
- return q_atomic_decrement(&_q_value) != 0;
-}
-
-inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
-{
- return q_atomic_test_and_set_int(&_q_value, expectedValue, newValue) != 0;
-}
-
-inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue)
-{
- return q_atomic_set_int(&_q_value, newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
-{
- return q_atomic_fetch_and_add_int(&_q_value, valueToAdd);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
-{
- return q_atomic_test_and_set_ptr(&_q_value, expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
-{
- return reinterpret_cast<T *>(q_atomic_set_ptr(&_q_value, newValue));
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
-{
- return reinterpret_cast<T *>(q_atomic_fetch_and_add_ptr(&_q_value, valueToAdd * sizeof(T)));
-}
-
-#endif
-
-inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
+ return ret != 0;
}
-inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
+template<int size> template <typename T> inline
+T QBasicAtomicOps<size>::fetchAndStoreRelaxed(T &_q_value, T newValue)
{
- return testAndSetOrdered(expectedValue, newValue);
+ asm volatile("xchg %0,%1"
+ : "=r" (newValue), "+m" (_q_value)
+ : "0" (newValue)
+ : "memory");
+ return newValue;
}
-inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue)
+template<> template <typename T> inline
+T QBasicAtomicOps<1>::fetchAndStoreRelaxed(T &_q_value, T newValue)
{
- return fetchAndStoreOrdered(newValue);
+ asm volatile("xchg %0,%1"
+ : "=q" (newValue), "+m" (_q_value)
+ : "0" (newValue)
+ : "memory");
+ return newValue;
}
-inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
+template<int size> template <typename T> inline
+T QBasicAtomicOps<size>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
- return fetchAndStoreOrdered(newValue);
+ T result;
+ asm volatile("lock\n"
+ "xadd %0,%1"
+ : "=r" (result), "+m" (_q_value)
+ : "0" (T(valueToAdd * QAtomicAdditiveType<T>::AddScale))
+ : "memory");
+ return result;
}
-inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
+template<> template <typename T> inline
+T QBasicAtomicOps<1>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
- return fetchAndStoreOrdered(newValue);
+ T result;
+ asm volatile("lock\n"
+ "xadd %0,%1"
+ : "=q" (result), "+m" (_q_value)
+ : "0" (T(valueToAdd * QAtomicAdditiveType<T>::AddScale))
+ : "memory");
+ return result;
}
-inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
+#define Q_ATOMIC_INT8_IS_SUPPORTED
-inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
+#define Q_ATOMIC_INT8_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT8_REFERENCE_COUNTING_IS_WAIT_FREE
-inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
+#define Q_ATOMIC_INT8_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT8_TEST_AND_SET_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
+#define Q_ATOMIC_INT8_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT8_FETCH_AND_STORE_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
+#define Q_ATOMIC_INT8_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT8_FETCH_AND_ADD_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
+#define Q_ATOMIC_INT16_IS_SUPPORTED
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
+#define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
+#define Q_ATOMIC_INT16_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT16_TEST_AND_SET_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
+#define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
+#define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
+template <> struct QBasicAtomicOps<8>: QGenericAtomicOps<QBasicAtomicOps<8> >
{
- return fetchAndAddOrdered(valueToAdd);
-}
+ static inline bool isTestAndSetNative() { return true; }
+ static inline bool isTestAndSetWaitFree() { return true; }
+ template <typename T> static inline
+ bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue)
+ {
+#ifdef __PIC__
+# define EBX_reg "r"
+# define EBX_load(reg) "xchg " reg ", %%ebx\n"
+#else
+# define EBX_reg "b"
+# define EBX_load(reg)
+#endif
+ unsigned char ret;
+ asm volatile(EBX_load("%3")
+ "lock\n"
+ "cmpxchg8b %0\n"
+ EBX_load("%3")
+ "sete %1\n"
+ : "+m" (_q_value), "=qm" (ret),
+ "+A" (expectedValue)
+ : EBX_reg (quint32(newValue & 0xffffffff)), "c" (quint32(newValue >> 32))
+ : "memory");
+ return ret != 0;
+#undef EBX_reg
+#undef EBX_load
+ }
+};
+#define Q_ATOMIC_INT64_IS_SUPPORTED
+
+#define Q_ATOMIC_INT64_REFERENCE_COUNTING_IS_NOT_NATIVE
+
+#define Q_ATOMIC_INT64_TEST_AND_SET_IS_NOT_NATIVE
+#define Q_ATOMIC_INT64_TEST_AND_SET_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT64_FETCH_AND_STORE_IS_NATIVE
+
+#define Q_ATOMIC_INT64_FETCH_AND_ADD_IS_NOT_NATIVE
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
+#else
+# error "This compiler for i386 is not supported"
+#endif
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/corelib/arch/qatomic_ia64.h b/src/corelib/arch/qatomic_ia64.h
index 0782ab3f36..b5cd9f7545 100644
--- a/src/corelib/arch/qatomic_ia64.h
+++ b/src/corelib/arch/qatomic_ia64.h
@@ -1,8 +1,8 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Copyright (C) 2011 Thiago Macieira <thiago@kde.org>
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,69 +43,147 @@
#ifndef QATOMIC_IA64_H
#define QATOMIC_IA64_H
+#include <QtCore/qgenericatomic.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
+#if 0
+#pragma qt_sync_stop_processing
+#endif
+
#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_WAIT_FREE
-inline bool QBasicAtomicInt::isReferenceCountingNative()
-{ return true; }
-inline bool QBasicAtomicInt::isReferenceCountingWaitFree()
-{ return true; }
-
#define Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE
#define Q_ATOMIC_INT_TEST_AND_SET_IS_WAIT_FREE
-inline bool QBasicAtomicInt::isTestAndSetNative()
-{ return true; }
-inline bool QBasicAtomicInt::isTestAndSetWaitFree()
-{ return true; }
-
#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE
#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_WAIT_FREE
-inline bool QBasicAtomicInt::isFetchAndStoreNative()
-{ return true; }
-inline bool QBasicAtomicInt::isFetchAndStoreWaitFree()
-{ return true; }
-
#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE
-inline bool QBasicAtomicInt::isFetchAndAddNative()
-{ return true; }
-inline bool QBasicAtomicInt::isFetchAndAddWaitFree()
-{ return false; }
+#define Q_ATOMIC_INT32_IS_SUPPORTED
+
+#define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT32_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_TEST_AND_SET_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_ALWAYS_NATIVE
#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE
#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetWaitFree()
-{ return true; }
-
#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE
#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreWaitFree()
-{ return true; }
-
#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddWaitFree()
-{ return false; }
+#define Q_ATOMIC_INT8_IS_SUPPORTED
+
+#define Q_ATOMIC_INT8_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+
+#define Q_ATOMIC_INT8_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT8_TEST_AND_SET_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT8_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT8_FETCH_AND_STORE_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT8_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+
+#define Q_ATOMIC_INT16_IS_SUPPORTED
+
+#define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+
+#define Q_ATOMIC_INT16_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT16_TEST_AND_SET_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+
+#define Q_ATOMIC_INT64_IS_SUPPORTED
+
+#define Q_ATOMIC_INT64_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT64_REFERENCE_COUNTING_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT64_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT64_TEST_AND_SET_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT64_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT64_FETCH_AND_STORE_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT64_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+
+template<> struct QAtomicIntegerTraits<int> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned int> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<char> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<signed char> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned char> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<short> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned short> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<long> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned long> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<long long> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned long long> { enum { IsInteger = 1 }; };
+
+template <int size> struct QBasicAtomicOps: QGenericAtomicOps<QBasicAtomicOps<size> >
+{
+ static void orderedMemoryFence();
+
+ template <typename T> static inline
+ T loadAcquire(T &_q_value)
+ {
+ return *static_cast<volatile T *>(&_q_value);
+ }
+
+ template <typename T> static inline
+ void storeRelease(T &_q_value, T newValue)
+ {
+ *static_cast<volatile T *>(&_q_value) = newValue;
+ }
+ static inline bool isReferenceCountingNative() { return true; }
+ static inline bool isReferenceCountingWaitFree() { return size == 4 || size == 8; }
+ template <typename T> static bool ref(T &_q_value);
+ template <typename T> static bool deref(T &_q_value);
+
+ static inline bool isTestAndSetNative() { return true; }
+ static inline bool isTestAndSetWaitFree() { return true; }
+ template <typename T> static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue);
+ template <typename T> static bool testAndSetAcquire(T &_q_value, T expectedValue, T newValue);
+ template <typename T> static bool testAndSetRelease(T &_q_value, T expectedValue, T newValue);
+ template <typename T> static bool testAndSetOrdered(T &_q_value, T expectedValue, T newValue);
+
+ static inline bool isFetchAndStoreNative() { return true; }
+ static inline bool isFetchAndStoreWaitFree() { return true; }
+ template <typename T> static T fetchAndStoreRelaxed(T &_q_value, T newValue);
+ template <typename T> static T fetchAndStoreAcquire(T &_q_value, T newValue);
+ template <typename T> static T fetchAndStoreRelease(T &_q_value, T newValue);
+ template <typename T> static T fetchAndStoreOrdered(T &_q_value, T newValue);
+
+ static inline bool isFetchAndAddNative() { return true; }
+ static inline bool isFetchAndAddWaitFree() { return false; }
+ template <typename T> static
+ T fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd);
+ template <typename T> static
+ T fetchAndAddAcquire(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd);
+ template <typename T> static
+ T fetchAndAddRelease(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd);
+ template <typename T> static
+ T fetchAndAddOrdered(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd);
+};
+
+template <typename T> struct QAtomicOps : QBasicAtomicOps<sizeof(T)>
+{
+ typedef T Type;
+};
inline bool _q_ia64_fetchadd_immediate(register int value)
{
@@ -119,14 +198,14 @@ inline bool _q_ia64_fetchadd_immediate(register int value)
// intrinsics provided by the Intel C++ Compiler
#include <ia64intrin.h>
-inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
+template<int size> inline
+void QBasicAtomicOps<size>::orderedMemoryFence()
{
- return static_cast<int>(_InterlockedExchange(&_q_value, newValue));
+ __memory_barrier();
}
-inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
+inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
{
- __memory_barrier();
return static_cast<int>(_InterlockedExchange(&_q_value, newValue));
}
@@ -157,12 +236,6 @@ inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
== expectedValue);
}
-inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
-{
- __memory_barrier();
- return testAndSetAcquire(expectedValue, newValue);
-}
-
inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
{
if (__builtin_constant_p(valueToAdd)) {
@@ -186,12 +259,6 @@ inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
return _InterlockedExchangeAdd(&_q_value, valueToAdd);
}
-inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
-{
- __memory_barrier();
- return fetchAndAddAcquire(valueToAdd);
-}
-
inline bool QBasicAtomicInt::ref()
{
return _InterlockedIncrement(&_q_value) != 0;
@@ -209,13 +276,6 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
}
template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
-{
- __memory_barrier();
- return fetchAndStoreAcquire(newValue);
-}
-
-template <typename T>
Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue)
{
register T *expectedValueCopy = expectedValue;
@@ -252,13 +312,6 @@ Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValu
}
template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
-{
- __memory_barrier();
- return testAndSetAcquire(expectedValue, newValue);
-}
-
-template <typename T>
Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
{
return (T *)_InterlockedExchangeAdd64((volatile long *)&_q_value,
@@ -273,41 +326,114 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueTo
valueToAdd * sizeof(T));
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
+#elif defined(Q_CC_GNU)
+
+template<int size> inline
+void QBasicAtomicOps<size>::orderedMemoryFence()
{
- __memory_barrier();
- return fetchAndAddAcquire(valueToAdd);
+ asm volatile("mf" ::: "memory");
}
-#else // !Q_CC_INTEL
+template<> template<typename T> inline
+bool QBasicAtomicOps<4>::ref(T &_q_value)
+{
+ T ret;
+ asm volatile("fetchadd4.acq %0=%1,1\n"
+ : "=r" (ret), "+m" (_q_value)
+ :
+ : "memory");
+ return ret != -1;
+}
-# if defined(Q_CC_GNU)
+template<> template<typename T> inline
+bool QBasicAtomicOps<4>::deref(T &_q_value)
+{
+ T ret;
+ asm volatile("fetchadd4.rel %0=%1,-1\n"
+ : "=r" (ret), "+m" (_q_value)
+ :
+ : "memory");
+ return ret != 1;
+}
-inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
+template<> template<typename T> inline
+bool QBasicAtomicOps<8>::ref(T &_q_value)
{
- int ret;
- asm volatile("xchg4 %0=%1,%2\n"
+ T ret;
+ asm volatile("fetchadd8.acq %0=%1,1\n"
: "=r" (ret), "+m" (_q_value)
- : "r" (newValue)
+ :
: "memory");
- return ret;
+ return ret != -1;
}
-inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
+template<> template<typename T> inline
+bool QBasicAtomicOps<8>::deref(T &_q_value)
{
- int ret;
- asm volatile("mf\n"
- "xchg4 %0=%1,%2\n"
+ T ret;
+ asm volatile("fetchadd8.rel %0=%1,-1\n"
: "=r" (ret), "+m" (_q_value)
- : "r" (newValue)
+ :
: "memory");
- return ret;
+ return ret != 1;
}
-inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
+template<> template <typename T> inline
+bool QBasicAtomicOps<1>::testAndSetAcquire(T &_q_value, T expectedValue, T newValue)
+{
+ T ret;
+ asm volatile("mov ar.ccv=%2\n"
+ ";;\n"
+ "cmpxchg1.acq %0=%1,%3,ar.ccv\n"
+ : "=r" (ret), "+m" (_q_value)
+ : "r" (expectedValue), "r" (newValue)
+ : "memory");
+ return ret == expectedValue;
+}
+
+template<> template <typename T> inline
+bool QBasicAtomicOps<1>::testAndSetRelease(T &_q_value, T expectedValue, T newValue)
+{
+ T ret;
+ asm volatile("mov ar.ccv=%2\n"
+ ";;\n"
+ "cmpxchg1.rel %0=%1,%3,ar.ccv\n"
+ : "=r" (ret), "+m" (_q_value)
+ : "r" (expectedValue), "r" (newValue)
+ : "memory");
+ return ret == expectedValue;
+}
+
+template<> template <typename T> inline
+bool QBasicAtomicOps<2>::testAndSetAcquire(T &_q_value, T expectedValue, T newValue)
+{
+ T ret;
+ asm volatile("mov ar.ccv=%2\n"
+ ";;\n"
+ "cmpxchg2.acq %0=%1,%3,ar.ccv\n"
+ : "=r" (ret), "+m" (_q_value)
+ : "r" (expectedValue), "r" (newValue)
+ : "memory");
+ return ret == expectedValue;
+}
+
+template<> template <typename T> inline
+bool QBasicAtomicOps<2>::testAndSetRelease(T &_q_value, T expectedValue, T newValue)
{
- int ret;
+ T ret;
+ asm volatile("mov ar.ccv=%2\n"
+ ";;\n"
+ "cmpxchg2.rel %0=%1,%3,ar.ccv\n"
+ : "=r" (ret), "+m" (_q_value)
+ : "r" (expectedValue), "r" (newValue)
+ : "memory");
+ return ret == expectedValue;
+}
+
+template<> template <typename T> inline
+bool QBasicAtomicOps<4>::testAndSetAcquire(T &_q_value, T expectedValue, T newValue)
+{
+ T ret;
asm volatile("mov ar.ccv=%2\n"
";;\n"
"cmpxchg4.acq %0=%1,%3,ar.ccv\n"
@@ -317,9 +443,10 @@ inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
return ret == expectedValue;
}
-inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
+template<> template <typename T> inline
+bool QBasicAtomicOps<4>::testAndSetRelease(T &_q_value, T expectedValue, T newValue)
{
- int ret;
+ T ret;
asm volatile("mov ar.ccv=%2\n"
";;\n"
"cmpxchg4.rel %0=%1,%3,ar.ccv\n"
@@ -329,9 +456,173 @@ inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
return ret == expectedValue;
}
-inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
+template<> template <typename T> inline
+bool QBasicAtomicOps<8>::testAndSetAcquire(T &_q_value, T expectedValue, T newValue)
+{
+ T ret;
+ asm volatile("mov ar.ccv=%2\n"
+ ";;\n"
+ "cmpxchg8.acq %0=%1,%3,ar.ccv\n"
+ : "=r" (ret), "+m" (_q_value)
+ : "r" (expectedValue), "r" (newValue)
+ : "memory");
+ return ret == expectedValue;
+}
+
+template<> template <typename T> inline
+bool QBasicAtomicOps<8>::testAndSetRelease(T &_q_value, T expectedValue, T newValue)
+{
+ T ret;
+ asm volatile("mov ar.ccv=%2\n"
+ ";;\n"
+ "cmpxchg8.rel %0=%1,%3,ar.ccv\n"
+ : "=r" (ret), "+m" (_q_value)
+ : "r" (expectedValue), "r" (newValue)
+ : "memory");
+ return ret == expectedValue;
+}
+
+template<> template <typename T> inline
+T QBasicAtomicOps<1>::fetchAndStoreAcquire(T &_q_value, T newValue)
+{
+ T ret;
+ asm volatile("xchg1 %0=%1,%2\n"
+ : "=r" (ret), "+m" (_q_value)
+ : "r" (newValue)
+ : "memory");
+ return ret;
+}
+
+template<> template <typename T> inline
+T QBasicAtomicOps<2>::fetchAndStoreAcquire(T &_q_value, T newValue)
+{
+ T ret;
+ asm volatile("xchg2 %0=%1,%2\n"
+ : "=r" (ret), "+m" (_q_value)
+ : "r" (newValue)
+ : "memory");
+ return ret;
+}
+
+template<> template <typename T> inline
+T QBasicAtomicOps<4>::fetchAndStoreAcquire(T &_q_value, T newValue)
+{
+ T ret;
+ asm volatile("xchg4 %0=%1,%2\n"
+ : "=r" (ret), "+m" (_q_value)
+ : "r" (newValue)
+ : "memory");
+ return ret;
+}
+
+template<> template <typename T> inline
+T QBasicAtomicOps<8>::fetchAndStoreAcquire(T &_q_value, T newValue)
+{
+ T ret;
+ asm volatile("xchg8 %0=%1,%2\n"
+ : "=r" (ret), "+m" (_q_value)
+ : "r" (newValue)
+ : "memory");
+ return ret;
+}
+
+template<> template <typename T> inline
+T QBasicAtomicOps<1>::fetchAndAddAcquire(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
+{
+ T ret;
+ valueToAdd *= QAtomicAdditiveType<T>::AddScale;
+
+ ret = _q_value;
+ asm volatile("0:\n"
+ " mov r9=%0\n"
+ " mov ar.ccv=%0\n"
+ " add %0=%0, %2\n"
+ " ;;\n"
+ " cmpxchg1.acq %0=%1,%0,ar.ccv\n"
+ " ;;\n"
+ " cmp.ne p6,p0 = %0, r9\n"
+ "(p6) br.dptk 0b\n"
+ "1:\n"
+ : "+r" (ret), "+m" (_q_value)
+ : "r" (valueToAdd)
+ : "r9", "p6", "memory");
+ return ret;
+}
+
+template<> template <typename T> inline
+T QBasicAtomicOps<1>::fetchAndAddRelease(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
+{
+ T ret;
+ valueToAdd *= QAtomicAdditiveType<T>::AddScale;
+
+ ret = _q_value;
+ asm volatile("0:\n"
+ " mov r9=%0\n"
+ " mov ar.ccv=%0\n"
+ " add %0=%0, %2\n"
+ " ;;\n"
+ " cmpxchg1.rel %0=%1,%0,ar.ccv\n"
+ " ;;\n"
+ " cmp.ne p6,p0 = %0, r9\n"
+ "(p6) br.dptk 0b\n"
+ "1:\n"
+ : "+r" (ret), "+m" (_q_value)
+ : "r" (valueToAdd)
+ : "r9", "p6", "memory");
+ return ret;
+}
+
+template<> template <typename T> inline
+T QBasicAtomicOps<2>::fetchAndAddAcquire(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
+{
+ T ret;
+ valueToAdd *= QAtomicAdditiveType<T>::AddScale;
+
+ ret = _q_value;
+ asm volatile("0:\n"
+ " mov r9=%0\n"
+ " mov ar.ccv=%0\n"
+ " add %0=%0, %2\n"
+ " ;;\n"
+ " cmpxchg2.acq %0=%1,%0,ar.ccv\n"
+ " ;;\n"
+ " cmp.ne p6,p0 = %0, r9\n"
+ "(p6) br.dptk 0b\n"
+ "1:\n"
+ : "+r" (ret), "+m" (_q_value)
+ : "r" (valueToAdd)
+ : "r9", "p6", "memory");
+ return ret;
+}
+
+template<> template <typename T> inline
+T QBasicAtomicOps<2>::fetchAndAddRelease(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
+{
+ T ret;
+ valueToAdd *= QAtomicAdditiveType<T>::AddScale;
+
+ ret = _q_value;
+ asm volatile("0:\n"
+ " mov r9=%0\n"
+ " mov ar.ccv=%0\n"
+ " add %0=%0, %2\n"
+ " ;;\n"
+ " cmpxchg2.rel %0=%1,%0,ar.ccv\n"
+ " ;;\n"
+ " cmp.ne p6,p0 = %0, r9\n"
+ "(p6) br.dptk 0b\n"
+ "1:\n"
+ : "+r" (ret), "+m" (_q_value)
+ : "r" (valueToAdd)
+ : "r9", "p6", "memory");
+ return ret;
+}
+
+template<> template <typename T> inline
+T QBasicAtomicOps<4>::fetchAndAddAcquire(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
- int ret;
+ T ret;
+ valueToAdd *= QAtomicAdditiveType<T>::AddScale;
#if (__GNUC__ >= 4)
// We implement a fast fetch-and-add when we can
@@ -362,9 +653,11 @@ inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
return ret;
}
-inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
+template<> template <typename T> inline
+T QBasicAtomicOps<4>::fetchAndAddRelease(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
- int ret;
+ T ret;
+ valueToAdd *= QAtomicAdditiveType<T>::AddScale;
#if (__GNUC__ >= 4)
// We implement a fast fetch-and-add when we can
@@ -395,92 +688,18 @@ inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
return ret;
}
-inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
-{
- asm volatile("mf" ::: "memory");
- return fetchAndAddRelease(valueToAdd);
-}
-
-inline bool QBasicAtomicInt::ref()
-{
- int ret;
- asm volatile("fetchadd4.acq %0=%1,1\n"
- : "=r" (ret), "+m" (_q_value)
- :
- : "memory");
- return ret != -1;
-}
-
-inline bool QBasicAtomicInt::deref()
-{
- int ret;
- asm volatile("fetchadd4.rel %0=%1,-1\n"
- : "=r" (ret), "+m" (_q_value)
- :
- : "memory");
- return ret != 1;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
-{
- T *ret;
- asm volatile("xchg8 %0=%1,%2\n"
- : "=r" (ret), "+m" (_q_value)
- : "r" (newValue)
- : "memory");
- return ret;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
+template<> template <typename T> inline
+T QBasicAtomicOps<8>::fetchAndAddAcquire(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
- T *ret;
- asm volatile("mf\n"
- "xchg8 %0=%1,%2\n"
- : "=r" (ret), "+m" (_q_value)
- : "r" (newValue)
- : "memory");
- return ret;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue)
-{
- T *ret;
- asm volatile("mov ar.ccv=%2\n"
- ";;\n"
- "cmpxchg8.acq %0=%1,%3,ar.ccv\n"
- : "=r" (ret), "+m" (_q_value)
- : "r" (expectedValue), "r" (newValue)
- : "memory");
- return ret == expectedValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue)
-{
- T *ret;
- asm volatile("mov ar.ccv=%2\n"
- ";;\n"
- "cmpxchg8.rel %0=%1,%3,ar.ccv\n"
- : "=r" (ret), "+m" (_q_value)
- : "r" (expectedValue), "r" (newValue)
- : "memory");
- return ret == expectedValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
-{
- T *ret;
+ T ret;
+ valueToAdd *= QAtomicAdditiveType<T>::AddScale;
#if (__GNUC__ >= 4)
// We implement a fast fetch-and-add when we can
- if (__builtin_constant_p(valueToAdd) && _q_ia64_fetchadd_immediate(valueToAdd * sizeof(T))) {
+ if (__builtin_constant_p(valueToAdd) && _q_ia64_fetchadd_immediate(valueToAdd)) {
asm volatile("fetchadd8.acq %0=%1,%2\n"
: "=r" (ret), "+m" (_q_value)
- : "i" (valueToAdd * sizeof(T))
+ : "i" (valueToAdd)
: "memory");
return ret;
}
@@ -499,22 +718,23 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueTo
"(p6) br.dptk 0b\n"
"1:\n"
: "+r" (ret), "+m" (_q_value)
- : "r" (valueToAdd * sizeof(T))
+ : "r" (valueToAdd)
: "r9", "p6", "memory");
return ret;
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd)
+template<> template <typename T> inline
+T QBasicAtomicOps<8>::fetchAndAddRelease(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
- T *ret;
+ T ret;
+ valueToAdd *= QAtomicAdditiveType<T>::AddScale;
#if (__GNUC__ >= 4)
// We implement a fast fetch-and-add when we can
- if (__builtin_constant_p(valueToAdd) && _q_ia64_fetchadd_immediate(valueToAdd * sizeof(T))) {
+ if (__builtin_constant_p(valueToAdd) && _q_ia64_fetchadd_immediate(valueToAdd)) {
asm volatile("fetchadd8.rel %0=%1,%2\n"
: "=r" (ret), "+m" (_q_value)
- : "i" (valueToAdd * sizeof(T))
+ : "i" (valueToAdd)
: "memory");
return ret;
}
@@ -533,18 +753,11 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueTo
"(p6) br.dptk 0b\n"
"1:\n"
: "+r" (ret), "+m" (_q_value)
- : "r" (valueToAdd * sizeof(T))
+ : "r" (valueToAdd)
: "r9", "p6", "memory");
return ret;
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
-{
- asm volatile("mf" ::: "memory");
- return fetchAndAddRelease(valueToAdd);
-}
-
#elif defined Q_CC_HPACC
QT_BEGIN_INCLUDE_NAMESPACE
@@ -553,257 +766,315 @@ QT_END_INCLUDE_NAMESPACE
#define FENCE (_Asm_fence)(_UP_CALL_FENCE | _UP_SYS_FENCE | _DOWN_CALL_FENCE | _DOWN_SYS_FENCE)
-inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
+template <int size> inline
+void QBasicAtomicOps<size>::orderedMemoryFence()
{
- return _Asm_xchg((_Asm_sz)_SZ_W, &_q_value, (unsigned)newValue,
- (_Asm_ldhint)_LDHINT_NONE, FENCE);
+ _Asm_mf(FENCE);
}
-inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
+template<> template<typename T> inline
+bool QBasicAtomicOps<4>::ref(T &_q_value)
{
- _Asm_mf(FENCE);
- return _Asm_xchg((_Asm_sz)_SZ_W, &_q_value, (unsigned)newValue,
- (_Asm_ldhint)_LDHINT_NONE, FENCE);
+ return (T)_Asm_fetchadd((_Asm_fasz)_FASZ_W, (_Asm_sem)_SEM_ACQ,
+ &_q_value, 1, (_Asm_ldhint)_LDHINT_NONE, FENCE) != -1;
}
-inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
+template<> template<typename T> inline
+bool QBasicAtomicOps<4>::deref(T &_q_value)
{
- _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (unsigned)expectedValue, FENCE);
- int ret = _Asm_cmpxchg((_Asm_sz)_SZ_W, (_Asm_sem)_SEM_ACQ,
- &_q_value, (unsigned)newValue, (_Asm_ldhint)_LDHINT_NONE);
- return ret == expectedValue;
+ return (T)_Asm_fetchadd((_Asm_fasz)_FASZ_W, (_Asm_sem)_SEM_REL,
+ &_q_value, -1, (_Asm_ldhint)_LDHINT_NONE, FENCE) != 1;
}
-inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
+template<> template<typename T> inline
+bool QBasicAtomicOps<8>::ref(T &_q_value)
{
- _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (unsigned)expectedValue, FENCE);
- int ret = _Asm_cmpxchg((_Asm_sz)_SZ_W, (_Asm_sem)_SEM_REL,
- &_q_value, newValue, (_Asm_ldhint)_LDHINT_NONE);
- return ret == expectedValue;
+ return (T)_Asm_fetchadd((_Asm_fasz)_FASZ_D, (_Asm_sem)_SEM_ACQ,
+ &_q_value, 1, (_Asm_ldhint)_LDHINT_NONE, FENCE) != -1;
}
-inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
+template<> template<typename T> inline
+bool QBasicAtomicOps<8>::deref(T &_q_value)
{
- if (valueToAdd == 1)
- return _Asm_fetchadd((_Asm_fasz)_FASZ_W, (_Asm_sem)_SEM_ACQ,
- &_q_value, 1, (_Asm_ldhint)_LDHINT_NONE, FENCE);
- else if (valueToAdd == -1)
- return _Asm_fetchadd((_Asm_fasz)_FASZ_W, (_Asm_sem)_SEM_ACQ,
- &_q_value, -1, (_Asm_ldhint)_LDHINT_NONE, FENCE);
-
- // implement the test-and-set loop
- register int old, ret;
- do {
- old = _q_value;
- _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (unsigned)old, FENCE);
- ret = _Asm_cmpxchg((_Asm_sz)_SZ_W, (_Asm_sem)_SEM_ACQ,
- &_q_value, old + valueToAdd, (_Asm_ldhint)_LDHINT_NONE);
- } while (ret != old);
- return old;
+ return (T)_Asm_fetchadd((_Asm_fasz)_FASZ_D, (_Asm_sem)_SEM_REL,
+ &_q_value, -1, (_Asm_ldhint)_LDHINT_NONE, FENCE) != 1;
}
-inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
+template<> template <typename T> inline
+bool QBasicAtomicOps<1>::testAndSetAcquire(T &_q_value, T expectedValue, T newValue)
{
- if (valueToAdd == 1)
- return _Asm_fetchadd((_Asm_fasz)_FASZ_W, (_Asm_sem)_SEM_REL,
- &_q_value, 1, (_Asm_ldhint)_LDHINT_NONE, FENCE);
- else if (valueToAdd == -1)
- return _Asm_fetchadd((_Asm_fasz)_FASZ_W, (_Asm_sem)_SEM_REL,
- &_q_value, -1, (_Asm_ldhint)_LDHINT_NONE, FENCE);
-
- // implement the test-and-set loop
- register int old, ret;
- do {
- old = _q_value;
- _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (unsigned)old, FENCE);
- ret = _Asm_cmpxchg((_Asm_sz)_SZ_W, (_Asm_sem)_SEM_REL,
- &_q_value, old + valueToAdd, (_Asm_ldhint)_LDHINT_NONE);
- } while (ret != old);
- return old;
+ _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (quint8)expectedValue, FENCE);
+ T ret = (T)_Asm_cmpxchg((_Asm_sz)_SZ_B, (_Asm_sem)_SEM_ACQ,
+ &_q_value, (quint8)newValue, (_Asm_ldhint)_LDHINT_NONE);
+ return ret == expectedValue;
}
-inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
+template<> template <typename T> inline
+bool QBasicAtomicOps<1>::testAndSetRelease(T &_q_value, T expectedValue, T newValue)
{
- _Asm_mf(FENCE);
- return fetchAndAddAcquire(valueToAdd);
+ _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (quint8)expectedValue, FENCE);
+ T ret = (T)_Asm_cmpxchg((_Asm_sz)_SZ_B, (_Asm_sem)_SEM_REL,
+ &_q_value, (quint8)newValue, (_Asm_ldhint)_LDHINT_NONE);
+ return ret == expectedValue;
}
-inline bool QBasicAtomicInt::ref()
+template<> template <typename T> inline
+bool QBasicAtomicOps<2>::testAndSetAcquire(T &_q_value, T expectedValue, T newValue)
{
- return (int)_Asm_fetchadd((_Asm_fasz)_FASZ_W, (_Asm_sem)_SEM_ACQ,
- &_q_value, 1, (_Asm_ldhint)_LDHINT_NONE, FENCE) != -1;
+ _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (quint16)expectedValue, FENCE);
+ T ret = (T)_Asm_cmpxchg((_Asm_sz)_SZ_H, (_Asm_sem)_SEM_ACQ,
+ &_q_value, (quint16)newValue, (_Asm_ldhint)_LDHINT_NONE);
+ return ret == expectedValue;
}
-inline bool QBasicAtomicInt::deref()
+template<> template <typename T> inline
+bool QBasicAtomicOps<2>::testAndSetRelease(T &_q_value, T expectedValue, T newValue)
{
- return (int)_Asm_fetchadd((_Asm_fasz)_FASZ_W, (_Asm_sem)_SEM_REL,
- &_q_value, -1, (_Asm_ldhint)_LDHINT_NONE, FENCE) != 1;
+ _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (quint16)expectedValue, FENCE);
+ T ret = (T)_Asm_cmpxchg((_Asm_sz)_SZ_H, (_Asm_sem)_SEM_REL,
+ &_q_value, (quint16)newValue, (_Asm_ldhint)_LDHINT_NONE);
+ return ret == expectedValue;
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
+template<> template <typename T> inline
+bool QBasicAtomicOps<4>::testAndSetAcquire(T &_q_value, T expectedValue, T newValue)
{
-#ifdef __LP64__
- return (T *)_Asm_xchg((_Asm_sz)_SZ_D, &_q_value, (quint64)newValue,
- (_Asm_ldhint)_LDHINT_NONE, FENCE);
-#else
- return (T *)_Asm_xchg((_Asm_sz)_SZ_W, &_q_value, (quint32)newValue,
- (_Asm_ldhint)_LDHINT_NONE, FENCE);
-#endif
+ _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (unsigned)expectedValue, FENCE);
+ T ret = (T)_Asm_cmpxchg((_Asm_sz)_SZ_W, (_Asm_sem)_SEM_ACQ,
+ &_q_value, (unsigned)newValue, (_Asm_ldhint)_LDHINT_NONE);
+ return ret == expectedValue;
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
+template<> template <typename T> inline
+bool QBasicAtomicOps<4>::testAndSetRelease(T &_q_value, T expectedValue, T newValue)
{
- _Asm_mf(FENCE);
- return fetchAndStoreAcquire(newValue);
+ _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (unsigned)expectedValue, FENCE);
+ T ret = (T)_Asm_cmpxchg((_Asm_sz)_SZ_W, (_Asm_sem)_SEM_REL,
+ &_q_value, newValue, (_Asm_ldhint)_LDHINT_NONE);
+ return ret == expectedValue;
}
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue)
+template<> template <typename T> inline
+bool QBasicAtomicOps<8>::testAndSetAcquire(T &_q_value, T expectedValue, T newValue)
{
-#ifdef __LP64__
_Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (quint64)expectedValue, FENCE);
- T *ret = (T *)_Asm_cmpxchg((_Asm_sz)_SZ_D, (_Asm_sem)_SEM_ACQ,
- &_q_value, (quint64)newValue, (_Asm_ldhint)_LDHINT_NONE);
-#else
- _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (quint32)expectedValue, FENCE);
- T *ret = (T *)_Asm_cmpxchg((_Asm_sz)_SZ_W, (_Asm_sem)_SEM_ACQ,
- &_q_value, (quint32)newValue, (_Asm_ldhint)_LDHINT_NONE);
-#endif
+ T ret = (T)_Asm_cmpxchg((_Asm_sz)_SZ_D, (_Asm_sem)_SEM_ACQ,
+ &_q_value, (quint64)newValue, (_Asm_ldhint)_LDHINT_NONE);
return ret == expectedValue;
}
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue)
+template<> template <typename T> inline
+bool QBasicAtomicOps<8>::testAndSetRelease(T &_q_value, T expectedValue, T newValue)
{
-#ifdef __LP64__
_Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (quint64)expectedValue, FENCE);
- T *ret = (T *)_Asm_cmpxchg((_Asm_sz)_SZ_D, (_Asm_sem)_SEM_REL,
- &_q_value, (quint64)newValue, (_Asm_ldhint)_LDHINT_NONE);
-#else
- _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (quint32)expectedValue, FENCE);
- T *ret = (T *)_Asm_cmpxchg((_Asm_sz)_SZ_W, (_Asm_sem)_SEM_REL,
- &_q_value, (quint32)newValue, (_Asm_ldhint)_LDHINT_NONE);
-#endif
+ T ret = (T)_Asm_cmpxchg((_Asm_sz)_SZ_D, (_Asm_sem)_SEM_REL,
+ &_q_value, (quint64)newValue, (_Asm_ldhint)_LDHINT_NONE);
return ret == expectedValue;
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
+template<> template <typename T> inline
+T QBasicAtomicOps<1>::fetchAndStoreAcquire(T &_q_value, T newValue)
+{
+ return (T)_Asm_xchg((_Asm_sz)_SZ_B, &_q_value, (quint8)newValue,
+ (_Asm_ldhint)_LDHINT_NONE, FENCE);
+}
+
+template<> template <typename T> inline
+T QBasicAtomicOps<2>::fetchAndStoreAcquire(T &_q_value, T newValue)
+{
+ return (T)_Asm_xchg((_Asm_sz)_SZ_H, &_q_value, (quint16)newValue,
+ (_Asm_ldhint)_LDHINT_NONE, FENCE);
+}
+
+template<> template <typename T> inline
+T QBasicAtomicOps<4>::fetchAndStoreAcquire(T &_q_value, T newValue)
+{
+ return (T)_Asm_xchg((_Asm_sz)_SZ_W, &_q_value, (unsigned)newValue,
+ (_Asm_ldhint)_LDHINT_NONE, FENCE);
+}
+
+template<> template <typename T> inline
+T QBasicAtomicOps<8>::fetchAndStoreAcquire(T &_q_value, T newValue)
+{
+ return (T)_Asm_xchg((_Asm_sz)_SZ_D, &_q_value, (quint64)newValue,
+ (_Asm_ldhint)_LDHINT_NONE, FENCE);
+}
+
+template<> template <typename T> inline
+T QBasicAtomicOps<1>::fetchAndAddAcquire(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
+ valueToAdd *= QAtomicAdditiveType<T>::AddScale;
// implement the test-and-set loop
- register T *old, *ret;
+ register T old, ret;
do {
old = _q_value;
-#ifdef __LP64__
- _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (quint64)old, FENCE);
- ret = (T *)_Asm_cmpxchg((_Asm_sz)_SZ_D, (_Asm_sem)_SEM_ACQ,
- &_q_value, (quint64)(old + valueToAdd),
- (_Asm_ldhint)_LDHINT_NONE);
-#else
- _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (quint32)old, FENCE);
- ret = (T *)_Asm_cmpxchg((_Asm_sz)_SZ_W, (_Asm_sem)_SEM_ACQ,
- &_q_value, (quint32)(old + valueToAdd),
- (_Asm_ldhint)_LDHINT_NONE);
-#endif
- } while (old != ret);
+ _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (quint8)old, FENCE);
+ ret = _Asm_cmpxchg((_Asm_sz)_SZ_B, (_Asm_sem)_SEM_ACQ,
+ &_q_value, old + valueToAdd, (_Asm_ldhint)_LDHINT_NONE);
+ } while (ret != old);
return old;
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd)
+template<> template <typename T> inline
+T QBasicAtomicOps<1>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
// implement the test-and-set loop
- register T *old, *ret;
+ register T old, ret;
do {
old = _q_value;
-#ifdef __LP64__
- _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (quint64)old, FENCE);
- ret = (T *)_Asm_cmpxchg((_Asm_sz)_SZ_D, (_Asm_sem)_SEM_REL,
- &_q_value, (quint64)(old + valueToAdd),
- (_Asm_ldhint)_LDHINT_NONE);
-#else
- _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (quint32)old, FENCE);
- ret = (T *)_Asm_cmpxchg((_Asm_sz)_SZ_W, (_Asm_sem)_SEM_REL,
- &_q_value, (quint32)(old + valueToAdd),
- (_Asm_ldhint)_LDHINT_NONE);
-#endif
- } while (old != ret);
+ _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (quint8)old, FENCE);
+ ret = _Asm_cmpxchg((_Asm_sz)_SZ_B, (_Asm_sem)_SEM_REL,
+ &_q_value, old + valueToAdd, (_Asm_ldhint)_LDHINT_NONE);
+ } while (ret != old);
return old;
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
+template<> template <typename T> inline
+T QBasicAtomicOps<2>::fetchAndAddAcquire(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
- _Asm_mf(FENCE);
- return fetchAndAddAcquire(valueToAdd);
+ valueToAdd *= QAtomicAdditiveType<T>::AddScale;
+ // implement the test-and-set loop
+ register T old, ret;
+ do {
+ old = _q_value;
+ _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (quint16)old, FENCE);
+ ret = _Asm_cmpxchg((_Asm_sz)_SZ_H, (_Asm_sem)_SEM_ACQ,
+ &_q_value, old + valueToAdd, (_Asm_ldhint)_LDHINT_NONE);
+ } while (ret != old);
+ return old;
}
-#else
+template<> template <typename T> inline
+T QBasicAtomicOps<2>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
+{
+ // implement the test-and-set loop
+ register T old, ret;
+ do {
+ old = _q_value;
+ _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (quint16)old, FENCE);
+ ret = _Asm_cmpxchg((_Asm_sz)_SZ_H, (_Asm_sem)_SEM_REL,
+ &_q_value, old + valueToAdd, (_Asm_ldhint)_LDHINT_NONE);
+ } while (ret != old);
+ return old;
+}
-extern "C" {
- Q_CORE_EXPORT int q_atomic_test_and_set_int(volatile int *ptr, int expected, int newval);
- Q_CORE_EXPORT int q_atomic_test_and_set_ptr(volatile void *ptr, void *expected, void *newval);
-} // extern "C"
+template<> template <typename T> inline
+T QBasicAtomicOps<4>::fetchAndAddAcquire(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
+{
+ valueToAdd *= QAtomicAdditiveType<T>::AddScale;
+ // implement the test-and-set loop
+ register T old, ret;
+ do {
+ old = _q_value;
+ _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (unsigned)old, FENCE);
+ ret = _Asm_cmpxchg((_Asm_sz)_SZ_W, (_Asm_sem)_SEM_ACQ,
+ &_q_value, old + valueToAdd, (_Asm_ldhint)_LDHINT_NONE);
+ } while (ret != old);
+ return old;
+}
-#endif
+template<> template <typename T> inline
+T QBasicAtomicOps<4>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
+{
+ // implement the test-and-set loop
+ register T old, ret;
+ do {
+ old = _q_value;
+ _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (unsigned)old, FENCE);
+ ret = _Asm_cmpxchg((_Asm_sz)_SZ_W, (_Asm_sem)_SEM_REL,
+ &_q_value, old + valueToAdd, (_Asm_ldhint)_LDHINT_NONE);
+ } while (ret != old);
+ return old;
+}
-inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
+template<> template <typename T> inline
+T QBasicAtomicOps<8>::fetchAndAddAcquire(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
- return testAndSetAcquire(expectedValue, newValue);
+ valueToAdd *= QAtomicAdditiveType<T>::AddScale;
+ // implement the test-and-set loop
+ register T old, ret;
+ do {
+ old = _q_value;
+ _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (quint64)old, FENCE);
+ ret = _Asm_cmpxchg((_Asm_sz)_SZ_D, (_Asm_sem)_SEM_ACQ,
+ &_q_value, old + valueToAdd, (_Asm_ldhint)_LDHINT_NONE);
+ } while (ret != old);
+ return old;
}
-inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
+template<> template <typename T> inline
+T QBasicAtomicOps<8>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
- return testAndSetAcquire(expectedValue, newValue);
+ // implement the test-and-set loop
+ register T old, ret;
+ do {
+ old = _q_value;
+ _Asm_mov_to_ar((_Asm_app_reg)_AREG_CCV, (quint64)old, FENCE);
+ ret = _Asm_cmpxchg((_Asm_sz)_SZ_D, (_Asm_sem)_SEM_REL,
+ &_q_value, old + valueToAdd, (_Asm_ldhint)_LDHINT_NONE);
+ } while (ret != old);
+ return old;
}
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue)
+#endif
+
+template<int size> template<typename T> inline
+bool QBasicAtomicOps<size>::ref(T &_q_value)
{
- return testAndSetAcquire(expectedValue, newValue);
+ // no fetchadd for 1 or 2 bytes
+ return fetchAndAddRelaxed(_q_value, 1) == -1;
}
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
+template<int size> template<typename T> inline
+bool QBasicAtomicOps<size>::deref(T &_q_value)
{
- return testAndSetAcquire(expectedValue, newValue);
+ // no fetchadd for 1 or 2 bytes
+ return fetchAndAddRelaxed(_q_value, -1) == 1;
}
-#endif // Q_CC_INTEL
+template<int size> template <typename T> inline
+bool QBasicAtomicOps<size>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue)
+{
+ return testAndSetAcquire(_q_value, expectedValue, newValue);
+}
-inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue)
+template<int size> template <typename T> inline
+bool QBasicAtomicOps<size>::testAndSetOrdered(T &_q_value, T expectedValue, T newValue)
{
- return fetchAndStoreAcquire(newValue);
+ orderedMemoryFence();
+ return testAndSetAcquire(_q_value, expectedValue, newValue);
}
-inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue)
+template<int size> template <typename T> inline
+T QBasicAtomicOps<size>::fetchAndStoreRelaxed(T &_q_value, T newValue)
{
- return fetchAndStoreRelease(newValue);
+ return fetchAndStoreAcquire(_q_value, newValue);
}
-inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
+template<int size> template <typename T> inline
+T QBasicAtomicOps<size>::fetchAndStoreRelease(T &_q_value, T newValue)
{
- return fetchAndAddAcquire(valueToAdd);
+ orderedMemoryFence();
+ return fetchAndStoreAcquire(_q_value, newValue);
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
+template<int size> template <typename T> inline
+T QBasicAtomicOps<size>::fetchAndStoreOrdered(T &_q_value, T newValue)
{
- return fetchAndStoreAcquire(newValue);
+ return fetchAndStoreRelease(_q_value, newValue);
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
+template<int size> template <typename T> inline
+T QBasicAtomicOps<size>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
- return fetchAndStoreRelaxed(newValue);
+ return fetchAndAddAcquire(_q_value, valueToAdd);
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
+template<int size> template <typename T> inline
+T QBasicAtomicOps<size>::fetchAndAddOrdered(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
- return fetchAndAddAcquire(valueToAdd);
+ orderedMemoryFence();
+ return fetchAndAddRelease(_q_value, valueToAdd);
}
QT_END_NAMESPACE
diff --git a/src/corelib/arch/qatomic_integrity.h b/src/corelib/arch/qatomic_integrity.h
index e83124bf4e..e5d226ad7f 100644
--- a/src/corelib/arch/qatomic_integrity.h
+++ b/src/corelib/arch/qatomic_integrity.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/arch/qatomic_macosx.h b/src/corelib/arch/qatomic_macosx.h
deleted file mode 100644
index a973fe1b57..0000000000
--- a/src/corelib/arch/qatomic_macosx.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QATOMIC_MACOSX_H
-#define QATOMIC_MACOSX_H
-
-QT_BEGIN_HEADER
-
-#if defined(__x86_64__)
-# include <QtCore/qatomic_x86_64.h>
-#elif defined(__i386__)
-# include <QtCore/qatomic_i386.h>
-#else // !__x86_64 && !__i386__
-# include <QtCore/qatomic_powerpc.h>
-#endif // !__x86_64__ && !__i386__
-
-QT_END_HEADER
-
-#endif // QATOMIC_MACOSX_H
diff --git a/src/corelib/arch/qatomic_mips.h b/src/corelib/arch/qatomic_mips.h
index 97cef3c457..04015c9d19 100644
--- a/src/corelib/arch/qatomic_mips.h
+++ b/src/corelib/arch/qatomic_mips.h
@@ -1,8 +1,8 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Copyright (C) 2011 Thiago Macieira <thiago@kde.org>
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,107 +43,116 @@
#ifndef QATOMIC_MIPS_H
#define QATOMIC_MIPS_H
+#include <QtCore/qgenericatomic.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
-
-inline bool QBasicAtomicInt::isReferenceCountingNative()
-{ return true; }
-inline bool QBasicAtomicInt::isReferenceCountingWaitFree()
-{ return false; }
+#if 0
+#pragma qt_sync_stop_processing
+#endif
+#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
#define Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE
-
-inline bool QBasicAtomicInt::isTestAndSetNative()
-{ return true; }
-inline bool QBasicAtomicInt::isTestAndSetWaitFree()
-{ return false; }
-
#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE
-
-inline bool QBasicAtomicInt::isFetchAndStoreNative()
-{ return true; }
-inline bool QBasicAtomicInt::isFetchAndStoreWaitFree()
-{ return false; }
-
#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE
-inline bool QBasicAtomicInt::isFetchAndAddNative()
-{ return true; }
-inline bool QBasicAtomicInt::isFetchAndAddWaitFree()
-{ return false; }
+#define Q_ATOMIC_INT32_IS_SUPPORTED
+#define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_ALWAYS_NATIVE
#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetWaitFree()
-{ return false; }
+template<> struct QAtomicIntegerTraits<int> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned int> { enum { IsInteger = 1 }; };
-#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+template <int size> struct QBasicAtomicOps: QGenericAtomicOps<QBasicAtomicOps<size> >
+{
+ static void acquireMemoryFence();
+ static void releaseMemoryFence();
+ static void orderedMemoryFence();
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreWaitFree()
-{ return false; }
+ static inline bool isReferenceCountingNative() { return true; }
+ template <typename T> static bool ref(T &_q_value);
+ template <typename T> static bool deref(T &_q_value);
-#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+ static inline bool isTestAndSetNative() { return true; }
+ static inline bool isTestAndSetWaitFree() { return false; }
+ template <typename T> static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue);
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddWaitFree()
-{ return false; }
+ static inline bool isFetchAndStoreNative() { return true; }
+ template <typename T> static T fetchAndStoreRelaxed(T &_q_value, T newValue);
-#if defined(Q_CC_GNU) && !defined(Q_OS_IRIX)
+ static inline bool isFetchAndAddNative() { return true; }
+ template <typename T> static
+ T fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd);
+};
-#if _MIPS_SIM == _ABIO32
-#define SET_MIPS2 ".set mips2\n\t"
-#else
-#define SET_MIPS2
+template <typename T> struct QAtomicOps : QBasicAtomicOps<sizeof(T)>
+{
+ typedef T Type;
+};
+
+#if defined(Q_CC_GNU)
+
+#if defined(_MIPS_ARCH_MIPS1) || (defined(__mips) && __mips - 0 == 1)
+# error "Sorry, the MIPS1 architecture is not supported"
+# error "please set '-march=' to your architecture (e.g., -march=mips32)"
#endif
-inline bool QBasicAtomicInt::ref()
+template <int size> inline
+void QBasicAtomicOps<size>::acquireMemoryFence()
{
- register int originalValue;
- register int newValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "0:\n"
+ asm volatile ("sync 0x11" ::: "memory");
+}
+
+template <int size> inline
+void QBasicAtomicOps<size>::releaseMemoryFence()
+{
+ asm volatile ("sync 0x12" ::: "memory");
+}
+
+template <int size> inline
+void QBasicAtomicOps<size>::orderedMemoryFence()
+{
+ asm volatile ("sync 0" ::: "memory");
+}
+
+template<> template<typename T> inline
+bool QBasicAtomicOps<4>::ref(T &_q_value)
+{
+ register T originalValue;
+ register T newValue;
+ asm volatile("0:\n"
"ll %[originalValue], %[_q_value]\n"
"addiu %[newValue], %[originalValue], %[one]\n"
"sc %[newValue], %[_q_value]\n"
"beqz %[newValue], 0b\n"
"nop\n"
- ".set pop\n"
: [originalValue] "=&r" (originalValue),
[_q_value] "+m" (_q_value),
[newValue] "=&r" (newValue)
: [one] "i" (1)
: "cc", "memory");
- return originalValue != -1;
+ return originalValue != T(-1);
}
-inline bool QBasicAtomicInt::deref()
+template<> template<typename T> inline
+bool QBasicAtomicOps<4>::deref(T &_q_value)
{
- register int originalValue;
- register int newValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "0:\n"
+ register T originalValue;
+ register T newValue;
+ asm volatile("0:\n"
"ll %[originalValue], %[_q_value]\n"
"addiu %[newValue], %[originalValue], %[minusOne]\n"
"sc %[newValue], %[_q_value]\n"
"beqz %[newValue], 0b\n"
"nop\n"
- ".set pop\n"
: [originalValue] "=&r" (originalValue),
[_q_value] "+m" (_q_value),
[newValue] "=&r" (newValue)
@@ -151,39 +161,12 @@ inline bool QBasicAtomicInt::deref()
return originalValue != 1;
}
-inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
-{
- register int result;
- register int tempValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "0:\n"
- "ll %[result], %[_q_value]\n"
- "xor %[result], %[result], %[expectedValue]\n"
- "bnez %[result], 0f\n"
- "nop\n"
- "move %[tempValue], %[newValue]\n"
- "sc %[tempValue], %[_q_value]\n"
- "beqz %[tempValue], 0b\n"
- "nop\n"
- "0:\n"
- ".set pop\n"
- : [result] "=&r" (result),
- [tempValue] "=&r" (tempValue),
- [_q_value] "+m" (_q_value)
- : [expectedValue] "r" (expectedValue),
- [newValue] "r" (newValue)
- : "cc", "memory");
- return result == 0;
-}
-
-inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
+template<> template <typename T> inline
+bool QBasicAtomicOps<4>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue)
{
- register int result;
- register int tempValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "0:\n"
+ register T result;
+ register T tempValue;
+ asm volatile("0:\n"
"ll %[result], %[_q_value]\n"
"xor %[result], %[result], %[expectedValue]\n"
"bnez %[result], 0f\n"
@@ -192,9 +175,7 @@ inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
"sc %[tempValue], %[_q_value]\n"
"beqz %[tempValue], 0b\n"
"nop\n"
- "sync\n"
"0:\n"
- ".set pop\n"
: [result] "=&r" (result),
[tempValue] "=&r" (tempValue),
[_q_value] "+m" (_q_value)
@@ -204,73 +185,17 @@ inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
return result == 0;
}
-inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
-{
- register int result;
- register int tempValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "sync\n"
- "0:\n"
- "ll %[result], %[_q_value]\n"
- "xor %[result], %[result], %[expectedValue]\n"
- "bnez %[result], 0f\n"
- "nop\n"
- "move %[tempValue], %[newValue]\n"
- "sc %[tempValue], %[_q_value]\n"
- "beqz %[tempValue], 0b\n"
- "nop\n"
- "0:\n"
- ".set pop\n"
- : [result] "=&r" (result),
- [tempValue] "=&r" (tempValue),
- [_q_value] "+m" (_q_value)
- : [expectedValue] "r" (expectedValue),
- [newValue] "r" (newValue)
- : "cc", "memory");
- return result == 0;
-}
-
-inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
-{
- return testAndSetAcquire(expectedValue, newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue)
-{
- register int originalValue;
- register int tempValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "0:\n"
- "ll %[originalValue], %[_q_value]\n"
- "move %[tempValue], %[newValue]\n"
- "sc %[tempValue], %[_q_value]\n"
- "beqz %[tempValue], 0b\n"
- "nop\n"
- ".set pop\n"
- : [originalValue] "=&r" (originalValue),
- [tempValue] "=&r" (tempValue),
- [_q_value] "+m" (_q_value)
- : [newValue] "r" (newValue)
- : "cc", "memory");
- return originalValue;
-}
-
-inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
+template<> template <typename T> inline
+T QBasicAtomicOps<4>::fetchAndStoreRelaxed(T &_q_value, T newValue)
{
- register int originalValue;
- register int tempValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "0:\n"
+ register T originalValue;
+ register T tempValue;
+ asm volatile("0:\n"
"ll %[originalValue], %[_q_value]\n"
"move %[tempValue], %[newValue]\n"
"sc %[tempValue], %[_q_value]\n"
"beqz %[tempValue], 0b\n"
"nop\n"
- "sync\n"
- ".set pop\n"
: [originalValue] "=&r" (originalValue),
[tempValue] "=&r" (tempValue),
[_q_value] "+m" (_q_value)
@@ -279,185 +204,89 @@ inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
return originalValue;
}
-inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
+template<> template <typename T> inline
+T QBasicAtomicOps<4>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
- register int originalValue;
- register int tempValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "sync\n"
- "0:\n"
- "ll %[originalValue], %[_q_value]\n"
- "move %[tempValue], %[newValue]\n"
- "sc %[tempValue], %[_q_value]\n"
- "beqz %[tempValue], 0b\n"
- "nop\n"
- ".set pop\n"
- : [originalValue] "=&r" (originalValue),
- [tempValue] "=&r" (tempValue),
- [_q_value] "+m" (_q_value)
- : [newValue] "r" (newValue)
- : "cc", "memory");
- return originalValue;
-}
-
-inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue)
-{
- return fetchAndStoreAcquire(newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
-{
- register int originalValue;
- register int newValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "0:\n"
+ register T originalValue;
+ register T newValue;
+ asm volatile("0:\n"
"ll %[originalValue], %[_q_value]\n"
"addu %[newValue], %[originalValue], %[valueToAdd]\n"
"sc %[newValue], %[_q_value]\n"
"beqz %[newValue], 0b\n"
"nop\n"
- ".set pop\n"
: [originalValue] "=&r" (originalValue),
[_q_value] "+m" (_q_value),
[newValue] "=&r" (newValue)
- : [valueToAdd] "r" (valueToAdd)
+ : [valueToAdd] "r" (valueToAdd * QAtomicAdditiveType<T>::AddScale)
: "cc", "memory");
return originalValue;
}
-inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
+#if defined(_MIPS_ARCH_MIPS64) || defined(__mips64)
+
+#define Q_ATOMIC_INT64_IS_SUPPORTED
+#define Q_ATOMIC_INT64_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT64_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT64_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT64_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+
+template<> struct QAtomicIntegerTraits<long long> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned long long > { enum { IsInteger = 1 }; };
+
+template<> template<typename T> inline
+bool QBasicAtomicOps<8>::ref(T &_q_value)
{
- register int originalValue;
- register int newValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "0:\n"
- "ll %[originalValue], %[_q_value]\n"
- "addu %[newValue], %[originalValue], %[valueToAdd]\n"
- "sc %[newValue], %[_q_value]\n"
+ register T originalValue;
+ register T newValue;
+ asm volatile("0:\n"
+ "lld %[originalValue], %[_q_value]\n"
+ "addiu %[newValue], %[originalValue], %[one]\n"
+ "scd %[newValue], %[_q_value]\n"
"beqz %[newValue], 0b\n"
"nop\n"
- "sync\n"
- ".set pop\n"
: [originalValue] "=&r" (originalValue),
[_q_value] "+m" (_q_value),
[newValue] "=&r" (newValue)
- : [valueToAdd] "r" (valueToAdd)
+ : [one] "i" (1)
: "cc", "memory");
- return originalValue;
+ return originalValue != T(-1);
}
-inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
+template<> template<typename T> inline
+bool QBasicAtomicOps<8>::deref(T &_q_value)
{
- register int originalValue;
- register int newValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "sync\n"
- "0:\n"
- "ll %[originalValue], %[_q_value]\n"
- "addu %[newValue], %[originalValue], %[valueToAdd]\n"
- "sc %[newValue], %[_q_value]\n"
+ register T originalValue;
+ register T newValue;
+ asm volatile("0:\n"
+ "lld %[originalValue], %[_q_value]\n"
+ "addiu %[newValue], %[originalValue], %[minusOne]\n"
+ "scd %[newValue], %[_q_value]\n"
"beqz %[newValue], 0b\n"
"nop\n"
- ".set pop\n"
: [originalValue] "=&r" (originalValue),
[_q_value] "+m" (_q_value),
[newValue] "=&r" (newValue)
- : [valueToAdd] "r" (valueToAdd)
- : "cc", "memory");
- return originalValue;
-}
-
-inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
-{
- return fetchAndAddAcquire(valueToAdd);
-}
-
-#if defined(__LP64__)
-# define LLP "lld"
-# define SCP "scd"
-#else
-# define LLP "ll"
-# define SCP "sc"
-#endif
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue)
-{
- register T *result;
- register T *tempValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "0:\n"
- LLP" %[result], %[_q_value]\n"
- "xor %[result], %[result], %[expectedValue]\n"
- "bnez %[result], 0f\n"
- "nop\n"
- "move %[tempValue], %[newValue]\n"
- SCP" %[tempValue], %[_q_value]\n"
- "beqz %[tempValue], 0b\n"
- "nop\n"
- "0:\n"
- ".set pop\n"
- : [result] "=&r" (result),
- [tempValue] "=&r" (tempValue),
- [_q_value] "+m" (_q_value)
- : [expectedValue] "r" (expectedValue),
- [newValue] "r" (newValue)
- : "cc", "memory");
- return result == 0;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue)
-{
- register T *result;
- register T *tempValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "0:\n"
- LLP" %[result], %[_q_value]\n"
- "xor %[result], %[result], %[expectedValue]\n"
- "bnez %[result], 0f\n"
- "nop\n"
- "move %[tempValue], %[newValue]\n"
- SCP" %[tempValue], %[_q_value]\n"
- "beqz %[tempValue], 0b\n"
- "nop\n"
- "sync\n"
- "0:\n"
- ".set pop\n"
- : [result] "=&r" (result),
- [tempValue] "=&r" (tempValue),
- [_q_value] "+m" (_q_value)
- : [expectedValue] "r" (expectedValue),
- [newValue] "r" (newValue)
+ : [minusOne] "i" (-1)
: "cc", "memory");
- return result == 0;
+ return originalValue != 1;
}
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue)
+template<> template <typename T> inline
+bool QBasicAtomicOps<8>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue)
{
- register T *result;
- register T *tempValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "sync\n"
- "0:\n"
- LLP" %[result], %[_q_value]\n"
+ register T result;
+ register T tempValue;
+ asm volatile("0:\n"
+ "lld %[result], %[_q_value]\n"
"xor %[result], %[result], %[expectedValue]\n"
"bnez %[result], 0f\n"
"nop\n"
"move %[tempValue], %[newValue]\n"
- SCP" %[tempValue], %[_q_value]\n"
+ "scd %[tempValue], %[_q_value]\n"
"beqz %[tempValue], 0b\n"
"nop\n"
"0:\n"
- ".set pop\n"
: [result] "=&r" (result),
[tempValue] "=&r" (tempValue),
[_q_value] "+m" (_q_value)
@@ -467,72 +296,17 @@ Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValu
return result == 0;
}
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
-{
- return testAndSetAcquire(expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
-{
- register T *originalValue;
- register T *tempValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "0:\n"
- LLP" %[originalValue], %[_q_value]\n"
- "move %[tempValue], %[newValue]\n"
- SCP" %[tempValue], %[_q_value]\n"
- "beqz %[tempValue], 0b\n"
- "nop\n"
- ".set pop\n"
- : [originalValue] "=&r" (originalValue),
- [tempValue] "=&r" (tempValue),
- [_q_value] "+m" (_q_value)
- : [newValue] "r" (newValue)
- : "cc", "memory");
- return originalValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
-{
- register T *originalValue;
- register T *tempValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "0:\n"
- LLP" %[originalValue], %[_q_value]\n"
- "move %[tempValue], %[newValue]\n"
- SCP" %[tempValue], %[_q_value]\n"
- "beqz %[tempValue], 0b\n"
- "nop\n"
- "sync\n"
- ".set pop\n"
- : [originalValue] "=&r" (originalValue),
- [tempValue] "=&r" (tempValue),
- [_q_value] "+m" (_q_value)
- : [newValue] "r" (newValue)
- : "cc", "memory");
- return originalValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
+template<> template <typename T> inline
+T QBasicAtomicOps<8>::fetchAndStoreRelaxed(T &_q_value, T newValue)
{
- register T *originalValue;
- register T *tempValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "sync\n"
- "0:\n"
- LLP" %[originalValue], %[_q_value]\n"
+ register T originalValue;
+ register T tempValue;
+ asm volatile("0:\n"
+ "lld %[originalValue], %[_q_value]\n"
"move %[tempValue], %[newValue]\n"
- SCP" %[tempValue], %[_q_value]\n"
+ "scd %[tempValue], %[_q_value]\n"
"beqz %[tempValue], 0b\n"
"nop\n"
- ".set pop\n"
: [originalValue] "=&r" (originalValue),
[tempValue] "=&r" (tempValue),
[_q_value] "+m" (_q_value)
@@ -541,348 +315,29 @@ Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
return originalValue;
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
+template<> template <typename T> inline
+T QBasicAtomicOps<8>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
- return fetchAndStoreAcquire(newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
-{
- register T *originalValue;
- register T *newValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "0:\n"
- LLP" %[originalValue], %[_q_value]\n"
+ register T originalValue;
+ register T newValue;
+ asm volatile("0:\n"
+ "lld %[originalValue], %[_q_value]\n"
"addu %[newValue], %[originalValue], %[valueToAdd]\n"
- SCP" %[newValue], %[_q_value]\n"
+ "scd %[newValue], %[_q_value]\n"
"beqz %[newValue], 0b\n"
"nop\n"
- ".set pop\n"
: [originalValue] "=&r" (originalValue),
[_q_value] "+m" (_q_value),
[newValue] "=&r" (newValue)
- : [valueToAdd] "r" (valueToAdd * sizeof(T))
+ : [valueToAdd] "r" (valueToAdd * QAtomicAdditiveType<T>::AddScale)
: "cc", "memory");
return originalValue;
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
-{
- register T *originalValue;
- register T *newValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "0:\n"
- LLP" %[originalValue], %[_q_value]\n"
- "addu %[newValue], %[originalValue], %[valueToAdd]\n"
- SCP" %[newValue], %[_q_value]\n"
- "beqz %[newValue], 0b\n"
- "nop\n"
- "sync\n"
- ".set pop\n"
- : [originalValue] "=&r" (originalValue),
- [_q_value] "+m" (_q_value),
- [newValue] "=&r" (newValue)
- : [valueToAdd] "r" (valueToAdd * sizeof(T))
- : "cc", "memory");
- return originalValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd)
-{
- register T *originalValue;
- register T *newValue;
- asm volatile(".set push\n"
- SET_MIPS2
- "sync\n"
- "0:\n"
- LLP" %[originalValue], %[_q_value]\n"
- "addu %[newValue], %[originalValue], %[valueToAdd]\n"
- SCP" %[newValue], %[_q_value]\n"
- "beqz %[newValue], 0b\n"
- "nop\n"
- ".set pop\n"
- : [originalValue] "=&r" (originalValue),
- [_q_value] "+m" (_q_value),
- [newValue] "=&r" (newValue)
- : [valueToAdd] "r" (valueToAdd * sizeof(T))
- : "cc", "memory");
- return originalValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
-{
- return fetchAndAddAcquire(valueToAdd);
-}
-
-#else // !Q_CC_GNU
-
-extern "C" {
- Q_CORE_EXPORT int q_atomic_test_and_set_int(volatile int *ptr, int expected, int newval);
- Q_CORE_EXPORT int q_atomic_test_and_set_acquire_int(volatile int *ptr, int expected, int newval);
- Q_CORE_EXPORT int q_atomic_test_and_set_release_int(volatile int *ptr, int expected, int newval);
- Q_CORE_EXPORT int q_atomic_test_and_set_ptr(volatile void *ptr, void *expected, void *newval);
- Q_CORE_EXPORT int q_atomic_test_and_set_acquire_ptr(volatile void *ptr, void *expected, void *newval);
- Q_CORE_EXPORT int q_atomic_test_and_set_release_ptr(volatile void *ptr, void *expected, void *newval);
-} // extern "C"
-
-inline bool QBasicAtomicInt::ref()
-{
- register int expected;
- for (;;) {
- expected = _q_value;
- if (q_atomic_test_and_set_int(&_q_value, expected, expected + 1))
- break;
- }
- return expected != -1;
-}
-
-inline bool QBasicAtomicInt::deref()
-{
- register int expected;
- for (;;) {
- expected = _q_value;
- if (q_atomic_test_and_set_int(&_q_value, expected, expected - 1))
- break;
- }
- return expected != 1;
-}
-
-inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
-{
- return q_atomic_test_and_set_int(&_q_value, expectedValue, newValue) != 0;
-}
-
-inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
-{
- return q_atomic_test_and_set_acquire_int(&_q_value, expectedValue, newValue) != 0;
-}
-
-inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
-{
- return q_atomic_test_and_set_release_int(&_q_value, expectedValue, newValue) != 0;
-}
-
-inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
-{
- return q_atomic_test_and_set_acquire_int(&_q_value, expectedValue, newValue) != 0;
-}
-
-inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue)
-{
- int returnValue;
- for (;;) {
- returnValue = _q_value;
- if (testAndSetRelaxed(returnValue, newValue))
- break;
- }
- return returnValue;
-}
-
-inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
-{
- int returnValue;
- for (;;) {
- returnValue = _q_value;
- if (testAndSetAcquire(returnValue, newValue))
- break;
- }
- return returnValue;
-}
-
-inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
-{
- int returnValue;
- for (;;) {
- returnValue = _q_value;
- if (testAndSetRelease(returnValue, newValue))
- break;
- }
- return returnValue;
-}
-
-inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue)
-{
- int returnValue;
- for (;;) {
- returnValue = _q_value;
- if (testAndSetOrdered(returnValue, newValue))
- break;
- }
- return returnValue;
-}
-
-inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
-{
- int returnValue;
- for (;;) {
- returnValue = _q_value;
- if (testAndSetRelaxed(returnValue, returnValue + valueToAdd))
- break;
- }
- return returnValue;
-}
-
-inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
-{
- int returnValue;
- for (;;) {
- returnValue = _q_value;
- if (testAndSetAcquire(returnValue, returnValue + valueToAdd))
- break;
- }
- return returnValue;
-}
-
-inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
-{
- int returnValue;
- for (;;) {
- returnValue = _q_value;
- if (testAndSetRelease(returnValue, returnValue + valueToAdd))
- break;
- }
- return returnValue;
-}
-
-inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
-{
- int returnValue;
- for (;;) {
- returnValue = _q_value;
- if (testAndSetOrdered(returnValue, returnValue + valueToAdd))
- break;
- }
- return returnValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue)
-{
- return q_atomic_test_and_set_ptr(&_q_value, expectedValue, newValue) != 0;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue)
-{
- return q_atomic_test_and_set_acquire_ptr(&_q_value, expectedValue, newValue) != 0;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue)
-{
- return q_atomic_test_and_set_release_ptr(&_q_value, expectedValue, newValue) != 0;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
-{
- return q_atomic_test_and_set_acquire_ptr(&_q_value, expectedValue, newValue) != 0;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
-{
- T *returnValue;
- for (;;) {
- returnValue = (_q_value);
- if (testAndSetRelaxed(returnValue, newValue))
- break;
- }
- return returnValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
-{
- T *returnValue;
- for (;;) {
- returnValue = (_q_value);
- if (testAndSetAcquire(returnValue, newValue))
- break;
- }
- return returnValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
-{
- T *returnValue;
- for (;;) {
- returnValue = (_q_value);
- if (testAndSetRelease(returnValue, newValue))
- break;
- }
- return returnValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
-{
- T *returnValue;
- for (;;) {
- returnValue = (_q_value);
- if (testAndSetOrdered(returnValue, newValue))
- break;
- }
- return returnValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
-{
- T *returnValue;
- for (;;) {
- returnValue = (_q_value);
- if (testAndSetRelaxed(returnValue, returnValue + valueToAdd))
- break;
- }
- return returnValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE
-T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
-{
- T *returnValue;
- for (;;) {
- returnValue = (_q_value);
- if (testAndSetAcquire(returnValue, returnValue + valueToAdd))
- break;
- }
- return returnValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd)
-{
- T *returnValue;
- for (;;) {
- returnValue = (_q_value);
- if (testAndSetRelease(returnValue, returnValue + valueToAdd))
- break;
- }
- return returnValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
-{
- T *returnValue;
- for (;;) {
- returnValue = (_q_value);
- if (testAndSetOrdered(returnValue, returnValue + valueToAdd))
- break;
- }
- return returnValue;
-}
+#endif // MIPS64
+#else
+# error "This compiler for MIPS is not supported"
#endif // Q_CC_GNU
QT_END_NAMESPACE
diff --git a/src/corelib/arch/qatomic_msvc.h b/src/corelib/arch/qatomic_msvc.h
new file mode 100644
index 0000000000..eeb37dba89
--- /dev/null
+++ b/src/corelib/arch/qatomic_msvc.h
@@ -0,0 +1,381 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QATOMIC_MSVC_H
+#define QATOMIC_MSVC_H
+
+#include <QtCore/qgenericatomic.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+#if 0
+#pragma qt_sync_stop_processing
+#endif
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#ifndef Q_OS_WINCE
+
+// use compiler intrinsics for all atomic functions
+# define QT_INTERLOCKED_PREFIX _
+# define QT_INTERLOCKED_PROTOTYPE __cdecl
+# define QT_INTERLOCKED_DECLARE_PROTOTYPES
+# define QT_INTERLOCKED_INTRINSIC
+
+#else // Q_OS_WINCE
+
+# if _WIN32_WCE < 0x600 && defined(_X86_)
+// For X86 Windows CE, include winbase.h to catch inline functions which
+// override the regular definitions inside of coredll.dll.
+// Though one could use the original version of Increment/Decrement, others are
+// not exported at all.
+# include <winbase.h>
+
+// It's safer to remove the volatile and let the compiler add it as needed.
+# define QT_INTERLOCKED_VOLATILE
+
+# else // _WIN32_WCE >= 0x600 || !_X86_
+
+# define QT_INTERLOCKED_PROTOTYPE __cdecl
+# define QT_INTERLOCKED_DECLARE_PROTOTYPES
+
+# if _WIN32_WCE >= 0x600
+# if defined(_X86_)
+# define QT_INTERLOCKED_PREFIX _
+# define QT_INTERLOCKED_INTRINSIC
+# endif
+# else
+# define QT_INTERLOCKED_VOLATILE
+# endif
+
+# endif // _WIN32_WCE >= 0x600 || !_X86_
+
+#endif // Q_OS_WINCE
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Prototype declaration
+
+#define QT_INTERLOCKED_CONCAT_I(prefix, suffix) \
+ prefix ## suffix
+#define QT_INTERLOCKED_CONCAT(prefix, suffix) \
+ QT_INTERLOCKED_CONCAT_I(prefix, suffix)
+
+// MSVC intrinsics prefix function names with an underscore. Also, if platform
+// SDK headers have been included, the Interlocked names may be defined as
+// macros.
+// To avoid double underscores, we paste the prefix with Interlocked first and
+// then the remainder of the function name.
+#define QT_INTERLOCKED_FUNCTION(name) \
+ QT_INTERLOCKED_CONCAT( \
+ QT_INTERLOCKED_CONCAT(QT_INTERLOCKED_PREFIX, Interlocked), name)
+
+#ifndef QT_INTERLOCKED_VOLATILE
+# define QT_INTERLOCKED_VOLATILE volatile
+#endif
+
+#ifndef QT_INTERLOCKED_PREFIX
+#define QT_INTERLOCKED_PREFIX
+#endif
+
+#ifndef QT_INTERLOCKED_PROTOTYPE
+#define QT_INTERLOCKED_PROTOTYPE
+#endif
+
+#ifdef QT_INTERLOCKED_DECLARE_PROTOTYPES
+#undef QT_INTERLOCKED_DECLARE_PROTOTYPES
+
+extern "C" {
+
+ long QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( Increment )(long QT_INTERLOCKED_VOLATILE *);
+ long QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( Decrement )(long QT_INTERLOCKED_VOLATILE *);
+ long QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( CompareExchange )(long QT_INTERLOCKED_VOLATILE *, long, long);
+ long QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( Exchange )(long QT_INTERLOCKED_VOLATILE *, long);
+ long QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( ExchangeAdd )(long QT_INTERLOCKED_VOLATILE *, long);
+
+# if !defined(Q_OS_WINCE) && !defined(__i386__) && !defined(_M_IX86)
+ void * QT_INTERLOCKED_FUNCTION( CompareExchangePointer )(void * QT_INTERLOCKED_VOLATILE *, void *, void *);
+ void * QT_INTERLOCKED_FUNCTION( ExchangePointer )(void * QT_INTERLOCKED_VOLATILE *, void *);
+ __int64 QT_INTERLOCKED_FUNCTION( ExchangeAdd64 )(__int64 QT_INTERLOCKED_VOLATILE *, __int64);
+# endif
+
+}
+
+#endif // QT_INTERLOCKED_DECLARE_PROTOTYPES
+
+#undef QT_INTERLOCKED_PROTOTYPE
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#ifdef QT_INTERLOCKED_INTRINSIC
+#undef QT_INTERLOCKED_INTRINSIC
+
+# pragma intrinsic (_InterlockedIncrement)
+# pragma intrinsic (_InterlockedDecrement)
+# pragma intrinsic (_InterlockedExchange)
+# pragma intrinsic (_InterlockedCompareExchange)
+# pragma intrinsic (_InterlockedExchangeAdd)
+
+# if !defined(Q_OS_WINCE) && !defined(_M_IX86)
+# pragma intrinsic (_InterlockedCompareExchangePointer)
+# pragma intrinsic (_InterlockedExchangePointer)
+# pragma intrinsic (_InterlockedExchangeAdd64)
+# endif
+
+#endif // QT_INTERLOCKED_INTRINSIC
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Interlocked* replacement macros
+
+#define QT_INTERLOCKED_INCREMENT(value) \
+ QT_INTERLOCKED_FUNCTION(Increment)(value)
+
+#define QT_INTERLOCKED_DECREMENT(value) \
+ QT_INTERLOCKED_FUNCTION(Decrement)(value)
+
+#define QT_INTERLOCKED_COMPARE_EXCHANGE(value, newValue, expectedValue) \
+ QT_INTERLOCKED_FUNCTION(CompareExchange)((value), (newValue), (expectedValue))
+
+#define QT_INTERLOCKED_EXCHANGE(value, newValue) \
+ QT_INTERLOCKED_FUNCTION(Exchange)((value), (newValue))
+
+#define QT_INTERLOCKED_EXCHANGE_ADD(value, valueToAdd) \
+ QT_INTERLOCKED_FUNCTION(ExchangeAdd)((value), (valueToAdd))
+
+#if defined(Q_OS_WINCE) || defined(__i386__) || defined(_M_IX86)
+
+# define QT_INTERLOCKED_COMPARE_EXCHANGE_POINTER(value, newValue, expectedValue) \
+ reinterpret_cast<void *>( \
+ QT_INTERLOCKED_FUNCTION(CompareExchange)( \
+ reinterpret_cast<long QT_INTERLOCKED_VOLATILE *>(value), \
+ long(newValue), \
+ long(expectedValue)))
+
+# define QT_INTERLOCKED_EXCHANGE_POINTER(value, newValue) \
+ QT_INTERLOCKED_FUNCTION(Exchange)( \
+ reinterpret_cast<long QT_INTERLOCKED_VOLATILE *>(value), \
+ long(newValue))
+
+# define QT_INTERLOCKED_EXCHANGE_ADD_POINTER(value, valueToAdd) \
+ QT_INTERLOCKED_FUNCTION(ExchangeAdd)( \
+ reinterpret_cast<long QT_INTERLOCKED_VOLATILE *>(value), \
+ (valueToAdd))
+
+#else // !defined(Q_OS_WINCE) && !defined(__i386__) && !defined(_M_IX86)
+
+# define QT_INTERLOCKED_COMPARE_EXCHANGE_POINTER(value, newValue, expectedValue) \
+ QT_INTERLOCKED_FUNCTION(CompareExchangePointer)( \
+ (void * QT_INTERLOCKED_VOLATILE *)(value), \
+ (void *) (newValue), \
+ (void *) (expectedValue))
+
+# define QT_INTERLOCKED_EXCHANGE_POINTER(value, newValue) \
+ QT_INTERLOCKED_FUNCTION(ExchangePointer)( \
+ (void * QT_INTERLOCKED_VOLATILE *)(value), \
+ (void *) (newValue))
+
+# define QT_INTERLOCKED_EXCHANGE_ADD_POINTER(value, valueToAdd) \
+ QT_INTERLOCKED_FUNCTION(ExchangeAdd64)( \
+ reinterpret_cast<qint64 QT_INTERLOCKED_VOLATILE *>(value), \
+ (valueToAdd))
+
+#endif // !defined(Q_OS_WINCE) && !defined(__i386__) && !defined(_M_IX86)
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT_TEST_AND_SET_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT32_IS_SUPPORTED
+
+#define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT32_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_TEST_AND_SET_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_WAIT_FREE
+
+#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_WAIT_FREE
+
+#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_WAIT_FREE
+
+#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_WAIT_FREE
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+
+template<> struct QAtomicIntegerTraits<int> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned int> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<long> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned long> { enum { IsInteger = 1 }; };
+
+// No definition, needs specialization
+template <int N> struct QAtomicOpsBySize;
+
+template <>
+struct QAtomicOpsBySize<4> : QGenericAtomicOps<QAtomicOpsBySize<4> >
+{
+ // The 32-bit Interlocked*() API takes paramters as longs.
+ typedef long Type;
+
+ static inline bool isReferenceCountingNative() { return true; }
+ static inline bool isReferenceCountingWaitFree() { return true; }
+ static bool ref(long &_q_value);
+ static bool deref(long &_q_value);
+
+ static inline bool isTestAndSetNative() { return true; }
+ static inline bool isTestAndSetWaitFree() { return true; }
+ static bool testAndSetRelaxed(long &_q_value, long expectedValue, long newValue);
+
+ static inline bool isFetchAndStoreNative() { return true; }
+ static inline bool isFetchAndStoreWaitFree() { return true; }
+ static long fetchAndStoreRelaxed(long &_q_value, long newValue);
+
+ static inline bool isFetchAndAddNative() { return true; }
+ static inline bool isFetchAndAddWaitFree() { return true; }
+ static long fetchAndAddRelaxed(long &_q_value, QAtomicAdditiveType<long>::AdditiveT valueToAdd);
+};
+
+template <typename T>
+struct QAtomicOps : QAtomicOpsBySize<sizeof(T)>
+{ };
+
+inline bool QAtomicOpsBySize<4>::ref(long &_q_value)
+{
+ return QT_INTERLOCKED_INCREMENT(&_q_value) != 0;
+}
+
+inline bool QAtomicOpsBySize<4>::deref(long &_q_value)
+{
+ return QT_INTERLOCKED_DECREMENT(&_q_value) != 0;
+}
+
+inline bool QAtomicOpsBySize<4>::testAndSetRelaxed(long &_q_value, long expectedValue, long newValue)
+{
+ return QT_INTERLOCKED_COMPARE_EXCHANGE(&_q_value, newValue, expectedValue) == expectedValue;
+}
+
+inline long QAtomicOpsBySize<4>::fetchAndStoreRelaxed(long &_q_value, long newValue)
+{
+ return QT_INTERLOCKED_EXCHANGE(&_q_value, newValue);
+}
+
+inline long QAtomicOpsBySize<4>::fetchAndAddRelaxed(long &_q_value, QAtomicAdditiveType<long>::AdditiveT valueToAdd)
+{
+ return QT_INTERLOCKED_EXCHANGE_ADD(&_q_value, valueToAdd * QAtomicAdditiveType<long>::AddScale);
+}
+
+// Specialization for pointer types, since we have Interlocked*Pointer() variants in some configurations
+template <typename T>
+struct QAtomicOps<T *> : QGenericAtomicOps<QAtomicOps<T *> >
+{
+ typedef T *Type;
+
+ static inline bool isTestAndSetNative() { return true; }
+ static inline bool isTestAndSetWaitFree() { return true; }
+ static bool testAndSetRelaxed(T *&_q_value, T *expectedValue, T *newValue);
+
+ static inline bool isFetchAndStoreNative() { return true; }
+ static inline bool isFetchAndStoreWaitFree() { return true; }
+ static T *fetchAndStoreRelaxed(T *&_q_value, T *newValue);
+
+ static inline bool isFetchAndAddNative() { return true; }
+ static inline bool isFetchAndAddWaitFree() { return true; }
+ static T *fetchAndAddRelaxed(T *&_q_value, qptrdiff valueToAdd);
+};
+
+template <typename T>
+inline bool QAtomicOps<T *>::testAndSetRelaxed(T *&_q_value, T *expectedValue, T *newValue)
+{
+ return QT_INTERLOCKED_COMPARE_EXCHANGE_POINTER(&_q_value, newValue, expectedValue) == expectedValue;
+}
+
+template <typename T>
+inline T *QAtomicOps<T *>::fetchAndStoreRelaxed(T *&_q_value, T *newValue)
+{
+ return reinterpret_cast<T *>(QT_INTERLOCKED_EXCHANGE_POINTER(&_q_value, newValue));
+}
+
+template <typename T>
+inline T *QAtomicOps<T *>::fetchAndAddRelaxed(T *&_q_value, qptrdiff valueToAdd)
+{
+ return reinterpret_cast<T *>(QT_INTERLOCKED_EXCHANGE_ADD_POINTER(&_q_value, valueToAdd * sizeof(T)));
+}
+
+////////////////////////////////////////////////////////////////////////////////////////////////////
+// Cleanup
+
+#undef QT_INTERLOCKED_CONCAT_I
+#undef QT_INTERLOCKED_CONCAT
+#undef QT_INTERLOCKED_FUNCTION
+#undef QT_INTERLOCKED_PREFIX
+
+#undef QT_INTERLOCKED_VOLATILE
+
+#undef QT_INTERLOCKED_INCREMENT
+#undef QT_INTERLOCKED_DECREMENT
+#undef QT_INTERLOCKED_COMPARE_EXCHANGE
+#undef QT_INTERLOCKED_EXCHANGE
+#undef QT_INTERLOCKED_EXCHANGE_ADD
+#undef QT_INTERLOCKED_COMPARE_EXCHANGE_POINTER
+#undef QT_INTERLOCKED_EXCHANGE_POINTER
+#undef QT_INTERLOCKED_EXCHANGE_ADD_POINTER
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QATOMIC_MSVC_H
diff --git a/src/corelib/arch/qatomic_parisc.h b/src/corelib/arch/qatomic_parisc.h
index 200ca14aee..221d0e36ff 100644
--- a/src/corelib/arch/qatomic_parisc.h
+++ b/src/corelib/arch/qatomic_parisc.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/arch/qatomic_powerpc.h b/src/corelib/arch/qatomic_powerpc.h
index bb9afe38d7..949102748a 100644
--- a/src/corelib/arch/qatomic_powerpc.h
+++ b/src/corelib/arch/qatomic_powerpc.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/arch/qatomic_s390.h b/src/corelib/arch/qatomic_s390.h
index e167c7c6e3..b6246e817f 100644
--- a/src/corelib/arch/qatomic_s390.h
+++ b/src/corelib/arch/qatomic_s390.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/arch/qatomic_sh.h b/src/corelib/arch/qatomic_sh.h
index ca50eb1bf0..d16aaf26b1 100644
--- a/src/corelib/arch/qatomic_sh.h
+++ b/src/corelib/arch/qatomic_sh.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/arch/qatomic_sh4a.h b/src/corelib/arch/qatomic_sh4a.h
index 14238a6f10..042a602c77 100644
--- a/src/corelib/arch/qatomic_sh4a.h
+++ b/src/corelib/arch/qatomic_sh4a.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/arch/qatomic_sparc.h b/src/corelib/arch/qatomic_sparc.h
index feb172e68d..5fc640e01b 100644
--- a/src/corelib/arch/qatomic_sparc.h
+++ b/src/corelib/arch/qatomic_sparc.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/arch/qatomic_symbian.h b/src/corelib/arch/qatomic_symbian.h
deleted file mode 100644
index 6cb91f0788..0000000000
--- a/src/corelib/arch/qatomic_symbian.h
+++ /dev/null
@@ -1,313 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QATOMIC_SYMBIAN_H
-#define QATOMIC_SYMBIAN_H
-
-#include <QtCore/qglobal.h>
-#include <e32std.h>
-
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_SOMETIMES_NATIVE
-
-inline bool QBasicAtomicInt::isReferenceCountingWaitFree()
-{ return false; }
-
-#define Q_ATOMIC_INT_TEST_AND_SET_IS_SOMETIMES_NATIVE
-
-inline bool QBasicAtomicInt::isTestAndSetWaitFree()
-{ return false; }
-
-#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_SOMETIMES_NATIVE
-
-inline bool QBasicAtomicInt::isFetchAndStoreWaitFree()
-{ return false; }
-
-#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_SOMETIMES_NATIVE
-
-inline bool QBasicAtomicInt::isFetchAndAddWaitFree()
-{ return false; }
-
-#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_SOMETIMES_NATIVE
-
-Q_CORE_EXPORT bool QBasicAtomicPointer_isTestAndSetNative();
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetNative()
-{ return QBasicAtomicPointer_isTestAndSetNative(); }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetWaitFree()
-{ return false; }
-
-#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_SOMETIMES_NATIVE
-
-Q_CORE_EXPORT bool QBasicAtomicPointer_isFetchAndStoreNative();
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreNative()
-{ return QBasicAtomicPointer_isFetchAndStoreNative(); }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreWaitFree()
-{ return false; }
-
-#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_SOMETIMES_NATIVE
-
-Q_CORE_EXPORT bool QBasicAtomicPointer_isFetchAndAddNative();
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddNative()
-{ return QBasicAtomicPointer_isFetchAndAddNative(); }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddWaitFree()
-{ return false; }
-
-Q_CORE_EXPORT bool QBasicAtomicInt_testAndSetOrdered(volatile int *, int, int);
-Q_CORE_EXPORT int QBasicAtomicInt_fetchAndStoreOrdered(volatile int *, int);
-Q_CORE_EXPORT int QBasicAtomicInt_fetchAndAddOrdered(volatile int *, int);
-Q_CORE_EXPORT bool QBasicAtomicInt_testAndSetRelaxed(volatile int *, int, int);
-Q_CORE_EXPORT int QBasicAtomicInt_fetchAndStoreRelaxed(volatile int *, int);
-Q_CORE_EXPORT int QBasicAtomicInt_fetchAndAddRelaxed(volatile int *, int);
-Q_CORE_EXPORT bool QBasicAtomicInt_testAndSetAcquire(volatile int *, int, int);
-Q_CORE_EXPORT int QBasicAtomicInt_fetchAndStoreAcquire(volatile int *, int);
-Q_CORE_EXPORT int QBasicAtomicInt_fetchAndAddAcquire(volatile int *, int);
-Q_CORE_EXPORT bool QBasicAtomicInt_testAndSetRelease(volatile int *, int, int);
-Q_CORE_EXPORT int QBasicAtomicInt_fetchAndStoreRelease(volatile int *, int);
-Q_CORE_EXPORT int QBasicAtomicInt_fetchAndAddRelease(volatile int *, int);
-
-Q_CORE_EXPORT bool QBasicAtomicPointer_testAndSetOrdered(void * volatile *, void *, void *);
-Q_CORE_EXPORT void *QBasicAtomicPointer_fetchAndStoreOrdered(void * volatile *, void *);
-Q_CORE_EXPORT void *QBasicAtomicPointer_fetchAndAddOrdered(void * volatile *, qptrdiff);
-Q_CORE_EXPORT bool QBasicAtomicPointer_testAndSetRelaxed(void * volatile *, void *, void *);
-Q_CORE_EXPORT void *QBasicAtomicPointer_fetchAndStoreRelaxed(void * volatile *, void *);
-Q_CORE_EXPORT void *QBasicAtomicPointer_fetchAndAddRelaxed(void * volatile *, qptrdiff);
-Q_CORE_EXPORT bool QBasicAtomicPointer_testAndSetAcquire(void * volatile *, void *, void *);
-Q_CORE_EXPORT void *QBasicAtomicPointer_fetchAndStoreAcquire(void * volatile *, void *);
-Q_CORE_EXPORT void *QBasicAtomicPointer_fetchAndAddAcquire(void * volatile *, qptrdiff);
-Q_CORE_EXPORT bool QBasicAtomicPointer_testAndSetRelease(void * volatile *, void *, void *);
-Q_CORE_EXPORT void *QBasicAtomicPointer_fetchAndStoreRelease(void * volatile *, void *);
-Q_CORE_EXPORT void *QBasicAtomicPointer_fetchAndAddRelease(void * volatile *, qptrdiff);
-
-// Reference counting
-
-//LockedInc and LockedDec are machine coded for ARMv6 (and future proof)
-inline bool QBasicAtomicInt::ref()
-{
- int original = User::LockedInc((TInt&)_q_value);
- return original != -1;
-}
-
-inline bool QBasicAtomicInt::deref()
-{
- int original = User::LockedDec((TInt&)_q_value);
- return original != 1;
-}
-
-// Test and set for integers
-
-inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
-{
- return QBasicAtomicInt_testAndSetOrdered(&_q_value, expectedValue, newValue);
-}
-
-inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
-{
- return QBasicAtomicInt_testAndSetRelaxed(&_q_value, expectedValue, newValue);
-}
-
-inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
-{
- return QBasicAtomicInt_testAndSetAcquire(&_q_value, expectedValue, newValue);
-}
-
-inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
-{
- return QBasicAtomicInt_testAndSetRelease(&_q_value, expectedValue, newValue);
-}
-
-// Fetch and store for integers
-
-inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue)
-{
- return QBasicAtomicInt_fetchAndStoreOrdered(&_q_value, newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue)
-{
- return QBasicAtomicInt_fetchAndStoreRelaxed(&_q_value, newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
-{
- return QBasicAtomicInt_fetchAndStoreAcquire(&_q_value, newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
-{
- return QBasicAtomicInt_fetchAndStoreRelease(&_q_value, newValue);
-}
-
-// Fetch and add for integers
-
-inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
-{
- return QBasicAtomicInt_fetchAndAddOrdered(&_q_value, valueToAdd);
-}
-
-inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
-{
- return QBasicAtomicInt_fetchAndAddRelaxed(&_q_value, valueToAdd);
-}
-
-inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
-{
- return QBasicAtomicInt_fetchAndAddAcquire(&_q_value, valueToAdd);
-}
-
-inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
-{
- return QBasicAtomicInt_fetchAndAddRelease(&_q_value, valueToAdd);
-}
-
-// Test and set for pointers
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
-{
- return QBasicAtomicPointer_testAndSetOrdered(reinterpret_cast<void * volatile *>(&_q_value),
- expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue)
-{
- return QBasicAtomicPointer_testAndSetRelaxed(reinterpret_cast<void * volatile *>(&_q_value),
- expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue)
-{
- return QBasicAtomicPointer_testAndSetAcquire(reinterpret_cast<void * volatile *>(&_q_value),
- expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue)
-{
- return QBasicAtomicPointer_testAndSetRelease(reinterpret_cast<void * volatile *>(&_q_value),
- expectedValue, newValue);
-}
-
-// Fetch and store for pointers
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
-{
- return static_cast<T*>(QBasicAtomicPointer_fetchAndStoreOrdered(
- reinterpret_cast<void * volatile *>(&_q_value)
- , newValue));
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
-{
- return static_cast<T*>(QBasicAtomicPointer_fetchAndStoreRelaxed(
- reinterpret_cast<void * volatile *>(&_q_value)
- , newValue));
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
-{
- return static_cast<T*>(QBasicAtomicPointer_fetchAndStoreAcquire(
- reinterpret_cast<void * volatile *>(&_q_value)
- , newValue));
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
-{
- return static_cast<T*>(QBasicAtomicPointer_fetchAndStoreRelease(
- reinterpret_cast<void * volatile *>(&_q_value)
- , newValue));
-}
-
-// Fetch and add for pointers
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
-{
- return static_cast<T*>(QBasicAtomicPointer_fetchAndAddOrdered(
- reinterpret_cast<void * volatile *>(&_q_value),
- valueToAdd * sizeof(T)));
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
-{
- return static_cast<T*>(QBasicAtomicPointer_fetchAndAddRelaxed(
- reinterpret_cast<void * volatile *>(&_q_value),
- valueToAdd * sizeof(T)));
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
-{
- return static_cast<T*>(QBasicAtomicPointer_fetchAndAddAcquire(
- reinterpret_cast<void * volatile *>(&_q_value),
- valueToAdd * sizeof(T)));
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd)
-{
- return static_cast<T*>(QBasicAtomicPointer_fetchAndAddRelease(
- reinterpret_cast<void * volatile *>(&_q_value),
- valueToAdd * sizeof(T)));
-}
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif // QATOMIC_SYMBIAN_H
diff --git a/src/corelib/arch/qatomic_vxworks.h b/src/corelib/arch/qatomic_vxworks.h
index 13d6764d36..c18563ef3c 100644
--- a/src/corelib/arch/qatomic_vxworks.h
+++ b/src/corelib/arch/qatomic_vxworks.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake spec of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/arch/qatomic_windows.h b/src/corelib/arch/qatomic_windows.h
deleted file mode 100644
index 667e58124e..0000000000
--- a/src/corelib/arch/qatomic_windows.h
+++ /dev/null
@@ -1,496 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QATOMIC_WINDOWS_H
-#define QATOMIC_WINDOWS_H
-
-#ifndef Q_CC_MSVC
-
-// Mingw and other GCC platforms get inline assembly
-
-# ifdef __i386__
-# include "QtCore/qatomic_i386.h"
-# else
-# include "QtCore/qatomic_x86_64.h"
-# endif
-
-#else // Q_CC_MSVC
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-#ifndef Q_OS_WINCE
-
-// use compiler intrinsics for all atomic functions
-# define QT_INTERLOCKED_PREFIX _
-# define QT_INTERLOCKED_PROTOTYPE __cdecl
-# define QT_INTERLOCKED_DECLARE_PROTOTYPES
-# define QT_INTERLOCKED_INTRINSIC
-
-#else // Q_OS_WINCE
-
-# if _WIN32_WCE < 0x600 && defined(_X86_)
-// For X86 Windows CE, include winbase.h to catch inline functions which
-// override the regular definitions inside of coredll.dll.
-// Though one could use the original version of Increment/Decrement, others are
-// not exported at all.
-# include <winbase.h>
-
-// It's safer to remove the volatile and let the compiler add it as needed.
-# define QT_INTERLOCKED_NO_VOLATILE
-
-# else // _WIN32_WCE >= 0x600 || !_X86_
-
-# define QT_INTERLOCKED_PROTOTYPE __cdecl
-# define QT_INTERLOCKED_DECLARE_PROTOTYPES
-
-# if _WIN32_WCE >= 0x600
-# if defined(_X86_)
-# define QT_INTERLOCKED_PREFIX _
-# define QT_INTERLOCKED_INTRINSIC
-# endif
-# else
-# define QT_INTERLOCKED_NO_VOLATILE
-# endif
-
-# endif // _WIN32_WCE >= 0x600 || !_X86_
-
-#endif // Q_OS_WINCE
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Prototype declaration
-
-#define QT_INTERLOCKED_CONCAT_I(prefix, suffix) \
- prefix ## suffix
-#define QT_INTERLOCKED_CONCAT(prefix, suffix) \
- QT_INTERLOCKED_CONCAT_I(prefix, suffix)
-
-// MSVC intrinsics prefix function names with an underscore. Also, if platform
-// SDK headers have been included, the Interlocked names may be defined as
-// macros.
-// To avoid double underscores, we paste the prefix with Interlocked first and
-// then the remainder of the function name.
-#define QT_INTERLOCKED_FUNCTION(name) \
- QT_INTERLOCKED_CONCAT( \
- QT_INTERLOCKED_CONCAT(QT_INTERLOCKED_PREFIX, Interlocked), name)
-
-#ifdef QT_INTERLOCKED_NO_VOLATILE
-# define QT_INTERLOCKED_VOLATILE
-# define QT_INTERLOCKED_REMOVE_VOLATILE(a) qt_interlocked_remove_volatile(a)
-#else
-# define QT_INTERLOCKED_VOLATILE volatile
-# define QT_INTERLOCKED_REMOVE_VOLATILE(a) a
-#endif
-
-#ifndef QT_INTERLOCKED_PREFIX
-#define QT_INTERLOCKED_PREFIX
-#endif
-
-#ifndef QT_INTERLOCKED_PROTOTYPE
-#define QT_INTERLOCKED_PROTOTYPE
-#endif
-
-#ifdef QT_INTERLOCKED_DECLARE_PROTOTYPES
-#undef QT_INTERLOCKED_DECLARE_PROTOTYPES
-
-extern "C" {
-
- long QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( Increment )(long QT_INTERLOCKED_VOLATILE *);
- long QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( Decrement )(long QT_INTERLOCKED_VOLATILE *);
- long QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( CompareExchange )(long QT_INTERLOCKED_VOLATILE *, long, long);
- long QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( Exchange )(long QT_INTERLOCKED_VOLATILE *, long);
- long QT_INTERLOCKED_PROTOTYPE QT_INTERLOCKED_FUNCTION( ExchangeAdd )(long QT_INTERLOCKED_VOLATILE *, long);
-
-# if !defined(Q_OS_WINCE) && !defined(__i386__) && !defined(_M_IX86)
- void * QT_INTERLOCKED_FUNCTION( CompareExchangePointer )(void * QT_INTERLOCKED_VOLATILE *, void *, void *);
- void * QT_INTERLOCKED_FUNCTION( ExchangePointer )(void * QT_INTERLOCKED_VOLATILE *, void *);
- __int64 QT_INTERLOCKED_FUNCTION( ExchangeAdd64 )(__int64 QT_INTERLOCKED_VOLATILE *, __int64);
-# endif
-
-}
-
-#endif // QT_INTERLOCKED_DECLARE_PROTOTYPES
-
-#undef QT_INTERLOCKED_PROTOTYPE
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-#ifdef QT_INTERLOCKED_INTRINSIC
-#undef QT_INTERLOCKED_INTRINSIC
-
-# pragma intrinsic (_InterlockedIncrement)
-# pragma intrinsic (_InterlockedDecrement)
-# pragma intrinsic (_InterlockedExchange)
-# pragma intrinsic (_InterlockedCompareExchange)
-# pragma intrinsic (_InterlockedExchangeAdd)
-
-# if !defined(Q_OS_WINCE) && !defined(_M_IX86)
-# pragma intrinsic (_InterlockedCompareExchangePointer)
-# pragma intrinsic (_InterlockedExchangePointer)
-# pragma intrinsic (_InterlockedExchangeAdd64)
-# endif
-
-#endif // QT_INTERLOCKED_INTRINSIC
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Interlocked* replacement macros
-
-#define QT_INTERLOCKED_INCREMENT(value) \
- QT_INTERLOCKED_FUNCTION( Increment )( \
- QT_INTERLOCKED_REMOVE_VOLATILE( value ) )
-
-#define QT_INTERLOCKED_DECREMENT(value) \
- QT_INTERLOCKED_FUNCTION( Decrement )( \
- QT_INTERLOCKED_REMOVE_VOLATILE( value ) )
-
-#define QT_INTERLOCKED_COMPARE_EXCHANGE(value, newValue, expectedValue) \
- QT_INTERLOCKED_FUNCTION( CompareExchange )( \
- QT_INTERLOCKED_REMOVE_VOLATILE( value ), \
- newValue, \
- expectedValue )
-
-#define QT_INTERLOCKED_EXCHANGE(value, newValue) \
- QT_INTERLOCKED_FUNCTION( Exchange )( \
- QT_INTERLOCKED_REMOVE_VOLATILE( value ), \
- newValue )
-
-#define QT_INTERLOCKED_EXCHANGE_ADD(value, valueToAdd) \
- QT_INTERLOCKED_FUNCTION( ExchangeAdd )( \
- QT_INTERLOCKED_REMOVE_VOLATILE( value ), \
- valueToAdd )
-
-#if defined(Q_OS_WINCE) || defined(__i386__) || defined(_M_IX86)
-
-# define QT_INTERLOCKED_COMPARE_EXCHANGE_POINTER(value, newValue, expectedValue) \
- reinterpret_cast<void *>( \
- QT_INTERLOCKED_FUNCTION( CompareExchange )( \
- QT_INTERLOCKED_REMOVE_VOLATILE( value ## _integral ), \
- (long)( newValue ), \
- (long)( expectedValue ) ))
-
-# define QT_INTERLOCKED_EXCHANGE_POINTER(value, newValue) \
- QT_INTERLOCKED_FUNCTION( Exchange )( \
- QT_INTERLOCKED_REMOVE_VOLATILE( value ## _integral ), \
- (quintptr)( newValue ) )
-
-# define QT_INTERLOCKED_EXCHANGE_ADD_POINTER(value, valueToAdd) \
- QT_INTERLOCKED_FUNCTION( ExchangeAdd )( \
- QT_INTERLOCKED_REMOVE_VOLATILE( value ## _integral ), \
- valueToAdd )
-
-#else // !defined(Q_OS_WINCE) && !defined(__i386__) && !defined(_M_IX86)
-
-# define QT_INTERLOCKED_COMPARE_EXCHANGE_POINTER(value, newValue, expectedValue) \
- QT_INTERLOCKED_FUNCTION( CompareExchangePointer )( \
- (void * QT_INTERLOCKED_VOLATILE *)( QT_INTERLOCKED_REMOVE_VOLATILE(value) ), \
- newValue, \
- expectedValue )
-
-# define QT_INTERLOCKED_EXCHANGE_POINTER(value, newValue) \
- QT_INTERLOCKED_FUNCTION( ExchangePointer )( \
- (void * QT_INTERLOCKED_VOLATILE *)( QT_INTERLOCKED_REMOVE_VOLATILE(value) ), \
- newValue )
-
-# define QT_INTERLOCKED_EXCHANGE_ADD_POINTER(value, valueToAdd) \
- QT_INTERLOCKED_FUNCTION( ExchangeAdd64 )( \
- QT_INTERLOCKED_REMOVE_VOLATILE( value ## _integral ), \
- valueToAdd )
-
-#endif // !defined(Q_OS_WINCE) && !defined(__i386__) && !defined(_M_IX86)
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
-#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_WAIT_FREE
-
-inline bool QBasicAtomicInt::isReferenceCountingNative()
-{ return true; }
-inline bool QBasicAtomicInt::isReferenceCountingWaitFree()
-{ return true; }
-
-#define Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE
-#define Q_ATOMIC_INT_TEST_AND_SET_IS_WAIT_FREE
-
-inline bool QBasicAtomicInt::isTestAndSetNative()
-{ return true; }
-inline bool QBasicAtomicInt::isTestAndSetWaitFree()
-{ return true; }
-
-#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE
-#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_WAIT_FREE
-
-inline bool QBasicAtomicInt::isFetchAndStoreNative()
-{ return true; }
-inline bool QBasicAtomicInt::isFetchAndStoreWaitFree()
-{ return true; }
-
-#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE
-#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_WAIT_FREE
-
-inline bool QBasicAtomicInt::isFetchAndAddNative()
-{ return true; }
-inline bool QBasicAtomicInt::isFetchAndAddWaitFree()
-{ return true; }
-
-#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE
-#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_WAIT_FREE
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetWaitFree()
-{ return true; }
-
-#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE
-#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_WAIT_FREE
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreWaitFree()
-{ return true; }
-
-#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE
-#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddWaitFree()
-{ return true; }
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-#ifdef QT_INTERLOCKED_NO_VOLATILE
-template <class T>
-Q_INLINE_TEMPLATE T *qt_interlocked_remove_volatile(T volatile *t)
-{
- return const_cast<T *>(t);
-}
-#endif // !QT_INTERLOCKED_NO_VOLATILE
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-inline bool QBasicAtomicInt::ref()
-{
- return QT_INTERLOCKED_INCREMENT(&_q_value) != 0;
-}
-
-inline bool QBasicAtomicInt::deref()
-{
- return QT_INTERLOCKED_DECREMENT(&_q_value) != 0;
-}
-
-inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
-{
- return QT_INTERLOCKED_COMPARE_EXCHANGE(&_q_value, newValue, expectedValue)
- == expectedValue;
-}
-
-inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue)
-{
- return QT_INTERLOCKED_EXCHANGE(&_q_value, newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
-{
- return QT_INTERLOCKED_EXCHANGE_ADD(&_q_value, valueToAdd);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
-{
- return QT_INTERLOCKED_COMPARE_EXCHANGE_POINTER(&_q_value, (void*)newValue, (void*)expectedValue)
- == expectedValue;
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T* newValue)
-{
- return reinterpret_cast<T *>(
- QT_INTERLOCKED_EXCHANGE_POINTER(&_q_value, (void*)newValue));
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
-{
- return reinterpret_cast<T *>(
- QT_INTERLOCKED_EXCHANGE_ADD_POINTER(&_q_value, valueToAdd * sizeof(T)));
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Cleanup
-
-#undef QT_INTERLOCKED_CONCAT_I
-#undef QT_INTERLOCKED_CONCAT
-#undef QT_INTERLOCKED_FUNCTION
-#undef QT_INTERLOCKED_PREFIX
-
-#undef QT_INTERLOCKED_NO_VOLATILE
-#undef QT_INTERLOCKED_VOLATILE
-#undef QT_INTERLOCKED_REMOVE_VOLATILE
-
-#undef QT_INTERLOCKED_INCREMENT
-#undef QT_INTERLOCKED_DECREMENT
-#undef QT_INTERLOCKED_COMPARE_EXCHANGE
-#undef QT_INTERLOCKED_EXCHANGE
-#undef QT_INTERLOCKED_EXCHANGE_ADD
-#undef QT_INTERLOCKED_COMPARE_EXCHANGE_POINTER
-#undef QT_INTERLOCKED_EXCHANGE_POINTER
-#undef QT_INTERLOCKED_EXCHANGE_ADD_POINTER
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif // Q_CC_MSVC
-
-#endif // QATOMIC_WINDOWS_H
diff --git a/src/corelib/arch/qatomic_windowsce.h b/src/corelib/arch/qatomic_windowsce.h
deleted file mode 100644
index 3681655285..0000000000
--- a/src/corelib/arch/qatomic_windowsce.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef WINDOWSCE_QATOMIC_H
-#define WINDOWSCE_QATOMIC_H
-
-#include <QtCore/qglobal.h>
-QT_BEGIN_HEADER
-
-#if defined(QT_ARCH_WINDOWSCE)
-#include "QtCore/qatomic_windows.h"
-#endif
-
-QT_END_HEADER
-
-#endif // QATOMIC_ARCH_H
-
-
diff --git a/src/corelib/arch/qatomic_x86_64.h b/src/corelib/arch/qatomic_x86_64.h
index c2627c825f..f2fa8ce5f4 100644
--- a/src/corelib/arch/qatomic_x86_64.h
+++ b/src/corelib/arch/qatomic_x86_64.h
@@ -1,8 +1,8 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Copyright (C) 2011 Thiago Macieira <thiago@kde.org>
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,79 +43,98 @@
#ifndef QATOMIC_X86_64_H
#define QATOMIC_X86_64_H
+#include <QtCore/qgenericatomic.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
+#if 0
+#pragma qt_sync_stop_processing
+#endif
+
#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
#define Q_ATOMIC_INT_REFERENCE_COUNTING_IS_WAIT_FREE
-inline bool QBasicAtomicInt::isReferenceCountingNative()
-{ return true; }
-inline bool QBasicAtomicInt::isReferenceCountingWaitFree()
-{ return true; }
-
#define Q_ATOMIC_INT_TEST_AND_SET_IS_ALWAYS_NATIVE
#define Q_ATOMIC_INT_TEST_AND_SET_IS_WAIT_FREE
-inline bool QBasicAtomicInt::isTestAndSetNative()
-{ return true; }
-inline bool QBasicAtomicInt::isTestAndSetWaitFree()
-{ return true; }
-
#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_ALWAYS_NATIVE
#define Q_ATOMIC_INT_FETCH_AND_STORE_IS_WAIT_FREE
-inline bool QBasicAtomicInt::isFetchAndStoreNative()
-{ return true; }
-inline bool QBasicAtomicInt::isFetchAndStoreWaitFree()
-{ return true; }
-
#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_ALWAYS_NATIVE
#define Q_ATOMIC_INT_FETCH_AND_ADD_IS_WAIT_FREE
-inline bool QBasicAtomicInt::isFetchAndAddNative()
-{ return true; }
-inline bool QBasicAtomicInt::isFetchAndAddWaitFree()
-{ return true; }
+#define Q_ATOMIC_INT32_IS_SUPPORTED
+
+#define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_REFERENCE_COUNTING_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT32_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_TEST_AND_SET_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_FETCH_AND_STORE_IS_WAIT_FREE
+
+#define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT32_FETCH_AND_ADD_IS_WAIT_FREE
#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_ALWAYS_NATIVE
#define Q_ATOMIC_POINTER_TEST_AND_SET_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isTestAndSetWaitFree()
-{ return true; }
-
#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_ALWAYS_NATIVE
#define Q_ATOMIC_POINTER_FETCH_AND_STORE_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndStoreWaitFree()
-{ return true; }
-
#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_ALWAYS_NATIVE
#define Q_ATOMIC_POINTER_FETCH_AND_ADD_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddNative()
-{ return true; }
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::isFetchAndAddWaitFree()
-{ return true; }
+template<> struct QAtomicIntegerTraits<int> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned int> { enum { IsInteger = 1 }; };
+
+template <int size> struct QBasicAtomicOps: QGenericAtomicOps<QBasicAtomicOps<size> >
+{
+ static inline bool isReferenceCountingNative() { return true; }
+ static inline bool isReferenceCountingWaitFree() { return true; }
+ template <typename T> static bool ref(T &_q_value);
+ template <typename T> static bool deref(T &_q_value);
+
+ static inline bool isTestAndSetNative() { return true; }
+ static inline bool isTestAndSetWaitFree() { return true; }
+ template <typename T> static bool testAndSetRelaxed(T &_q_value, T expectedValue, T newValue);
+
+ static inline bool isFetchAndStoreNative() { return true; }
+ static inline bool isFetchAndStoreWaitFree() { return true; }
+ template <typename T> static T fetchAndStoreRelaxed(T &_q_value, T newValue);
+
+ static inline bool isFetchAndAddNative() { return true; }
+ static inline bool isFetchAndAddWaitFree() { return true; }
+ template <typename T> static
+ T fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd);
+};
+
+template <typename T> struct QAtomicOps : QBasicAtomicOps<sizeof(T)>
+{
+ typedef T Type;
+};
#if defined(Q_CC_GNU) || defined(Q_CC_INTEL)
-inline bool QBasicAtomicInt::ref()
+template<> struct QAtomicIntegerTraits<char> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<signed char> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned char> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<short> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned short> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<long> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned long> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<long long> { enum { IsInteger = 1 }; };
+template<> struct QAtomicIntegerTraits<unsigned long long> { enum { IsInteger = 1 }; };
+
+template<> template<typename T> inline
+bool QBasicAtomicOps<1>::ref(T &_q_value)
{
unsigned char ret;
asm volatile("lock\n"
- "incl %0\n"
+ "incb %0\n"
"setne %1"
: "=m" (_q_value), "=qm" (ret)
: "m" (_q_value)
@@ -122,11 +142,12 @@ inline bool QBasicAtomicInt::ref()
return ret != 0;
}
-inline bool QBasicAtomicInt::deref()
+template<> template<typename T> inline
+bool QBasicAtomicOps<2>::ref(T &_q_value)
{
unsigned char ret;
asm volatile("lock\n"
- "decl %0\n"
+ "incw %0\n"
"setne %1"
: "=m" (_q_value), "=qm" (ret)
: "m" (_q_value)
@@ -134,227 +155,198 @@ inline bool QBasicAtomicInt::deref()
return ret != 0;
}
-inline bool QBasicAtomicInt::testAndSetOrdered(int expectedValue, int newValue)
+template<> template<typename T> inline
+bool QBasicAtomicOps<4>::ref(T &_q_value)
{
unsigned char ret;
asm volatile("lock\n"
- "cmpxchgl %3,%2\n"
- "sete %1\n"
- : "=a" (newValue), "=qm" (ret), "+m" (_q_value)
- : "r" (newValue), "0" (expectedValue)
+ "incl %0\n"
+ "setne %1"
+ : "=m" (_q_value), "=qm" (ret)
+ : "m" (_q_value)
: "memory");
return ret != 0;
}
-inline int QBasicAtomicInt::fetchAndStoreOrdered(int newValue)
+template<> template<typename T> inline
+bool QBasicAtomicOps<8>::ref(T &_q_value)
{
- asm volatile("xchgl %0,%1"
- : "=r" (newValue), "+m" (_q_value)
- : "0" (newValue)
+ unsigned char ret;
+ asm volatile("lock\n"
+ "incq %0\n"
+ "setne %1"
+ : "=m" (_q_value), "=qm" (ret)
+ : "m" (_q_value)
: "memory");
- return newValue;
+ return ret != 0;
}
-inline int QBasicAtomicInt::fetchAndAddOrdered(int valueToAdd)
+template<> template <typename T> inline
+bool QBasicAtomicOps<1>::deref(T &_q_value)
{
+ unsigned char ret;
asm volatile("lock\n"
- "xaddl %0,%1"
- : "=r" (valueToAdd), "+m" (_q_value)
- : "0" (valueToAdd)
+ "decb %0\n"
+ "setne %1"
+ : "=m" (_q_value), "=qm" (ret)
+ : "m" (_q_value)
: "memory");
- return valueToAdd;
+ return ret != 0;
}
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
+template<> template <typename T> inline
+bool QBasicAtomicOps<2>::deref(T &_q_value)
{
unsigned char ret;
asm volatile("lock\n"
- "cmpxchgq %3,%2\n"
- "sete %1\n"
- : "=a" (newValue), "=qm" (ret), "+m" (_q_value)
- : "r" (newValue), "0" (expectedValue)
+ "decw %0\n"
+ "setne %1"
+ : "=m" (_q_value), "=qm" (ret)
+ : "m" (_q_value)
: "memory");
return ret != 0;
}
-
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
+template<> template <typename T> inline
+bool QBasicAtomicOps<4>::deref(T &_q_value)
{
- asm volatile("xchgq %0,%1"
- : "=r" (newValue), "+m" (_q_value)
- : "0" (newValue)
+ unsigned char ret;
+ asm volatile("lock\n"
+ "decl %0\n"
+ "setne %1"
+ : "=m" (_q_value), "=qm" (ret)
+ : "m" (_q_value)
: "memory");
- return newValue;
+ return ret != 0;
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
+template<> template <typename T> inline
+bool QBasicAtomicOps<8>::deref(T &_q_value)
{
+ unsigned char ret;
asm volatile("lock\n"
- "xaddq %0,%1"
- : "=r" (valueToAdd), "+m" (_q_value)
- : "0" (valueToAdd * sizeof(T))
+ "decq %0\n"
+ "setne %1"
+ : "=m" (_q_value), "=qm" (ret)
+ : "m" (_q_value)
: "memory");
- return reinterpret_cast<T *>(valueToAdd);
-}
-
-#else // !Q_CC_INTEL && !Q_CC_GNU
-
-extern "C" {
- Q_CORE_EXPORT int q_atomic_test_and_set_int(volatile int *ptr, int expected, int newval);
- Q_CORE_EXPORT int q_atomic_test_and_set_ptr(volatile void *ptr, void *expected, void *newval);
- Q_CORE_EXPORT int q_atomic_increment(volatile int *ptr);
- Q_CORE_EXPORT int q_atomic_decrement(volatile int *ptr);
- Q_CORE_EXPORT int q_atomic_set_int(volatile int *ptr, int newval);
- Q_CORE_EXPORT void *q_atomic_set_ptr(volatile void *ptr, void *newval);
- Q_CORE_EXPORT int q_atomic_fetch_and_add_int(volatile int *ptr, int value);
- Q_CORE_EXPORT void *q_atomic_fetch_and_add_ptr(volatile void *ptr, qptrdiff value);
-} // extern "C"
-
-inline bool QBasicAtomicInt::ref()
-{
- return q_atomic_increment(&_q_value) != 0;
-}
-
-inline bool QBasicAtomicInt::deref()
-{
- return q_atomic_decrement(&_q_value) != 0;
+ return ret != 0;
}
-inline bool QBasicAtomicInt::testAndSetOrdered(int expected, int newval)
+template<int size> template <typename T> inline
+bool QBasicAtomicOps<size>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue)
{
- return q_atomic_test_and_set_int(&_q_value, expected, newval) != 0;
+ unsigned char ret;
+ asm volatile("lock\n"
+ "cmpxchg %3,%2\n"
+ "sete %1\n"
+ : "=a" (newValue), "=qm" (ret), "+m" (_q_value)
+ : "r" (newValue), "0" (expectedValue)
+ : "memory");
+ return ret != 0;
}
-inline int QBasicAtomicInt::fetchAndStoreOrdered(int newval)
+template<> template <typename T> inline
+bool QBasicAtomicOps<1>::testAndSetRelaxed(T &_q_value, T expectedValue, T newValue)
{
- return q_atomic_set_int(&_q_value, newval);
+ unsigned char ret;
+ asm volatile("lock\n"
+ "cmpxchg %3,%2\n"
+ "sete %1\n"
+ : "=a" (newValue), "=qm" (ret), "+m" (_q_value)
+ : "q" (newValue), "0" (expectedValue)
+ : "memory");
+ return ret != 0;
}
-inline int QBasicAtomicInt::fetchAndAddOrdered(int aValue)
+template<int size> template <typename T> inline
+T QBasicAtomicOps<size>::fetchAndStoreRelaxed(T &_q_value, T newValue)
{
- return q_atomic_fetch_and_add_int(&_q_value, aValue);
+ asm volatile("xchg %0,%1"
+ : "=r" (newValue), "+m" (_q_value)
+ : "0" (newValue)
+ : "memory");
+ return newValue;
}
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetOrdered(T *expectedValue, T *newValue)
+template<> template <typename T> inline
+T QBasicAtomicOps<1>::fetchAndStoreRelaxed(T &_q_value, T newValue)
{
- return q_atomic_test_and_set_ptr(&_q_value, expectedValue, newValue);
+ asm volatile("xchg %0,%1"
+ : "=q" (newValue), "+m" (_q_value)
+ : "0" (newValue)
+ : "memory");
+ return newValue;
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreOrdered(T *newValue)
+template<int size> template <typename T> inline
+T QBasicAtomicOps<size>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
- return reinterpret_cast<T *>(q_atomic_set_ptr(&_q_value, newValue));
+ T result;
+ asm volatile("lock\n"
+ "xadd %0,%1"
+ : "=r" (result), "+m" (_q_value)
+ : "0" (T(valueToAdd * QAtomicAdditiveType<T>::AddScale))
+ : "memory");
+ return result;
}
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddOrdered(qptrdiff valueToAdd)
+template<> template <typename T> inline
+T QBasicAtomicOps<1>::fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
{
- return reinterpret_cast<T *>(q_atomic_fetch_and_add_ptr(&_q_value, valueToAdd * sizeof(T)));
+ T result;
+ asm volatile("lock\n"
+ "xadd %0,%1"
+ : "=q" (result), "+m" (_q_value)
+ : "0" (T(valueToAdd * QAtomicAdditiveType<T>::AddScale))
+ : "memory");
+ return result;
}
-#endif // Q_CC_GNU || Q_CC_INTEL
+#define Q_ATOMIC_INT8_IS_SUPPORTED
-inline bool QBasicAtomicInt::testAndSetRelaxed(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
+#define Q_ATOMIC_INT8_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT8_REFERENCE_COUNTING_IS_WAIT_FREE
-inline bool QBasicAtomicInt::testAndSetAcquire(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
+#define Q_ATOMIC_INT8_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT8_TEST_AND_SET_IS_WAIT_FREE
-inline bool QBasicAtomicInt::testAndSetRelease(int expectedValue, int newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
+#define Q_ATOMIC_INT8_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT8_FETCH_AND_STORE_IS_WAIT_FREE
-inline int QBasicAtomicInt::fetchAndStoreRelaxed(int newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
+#define Q_ATOMIC_INT8_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT8_FETCH_AND_ADD_IS_WAIT_FREE
-inline int QBasicAtomicInt::fetchAndStoreAcquire(int newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
+#define Q_ATOMIC_INT16_IS_SUPPORTED
-inline int QBasicAtomicInt::fetchAndStoreRelease(int newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
+#define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT16_REFERENCE_COUNTING_IS_WAIT_FREE
-inline int QBasicAtomicInt::fetchAndAddRelaxed(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
+#define Q_ATOMIC_INT16_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT16_TEST_AND_SET_IS_WAIT_FREE
-inline int QBasicAtomicInt::fetchAndAddAcquire(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-inline int QBasicAtomicInt::fetchAndAddRelease(int valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelaxed(T *expectedValue, T *newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
-
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetAcquire(T *expectedValue, T *newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
+#define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT16_FETCH_AND_STORE_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE bool QBasicAtomicPointer<T>::testAndSetRelease(T *expectedValue, T *newValue)
-{
- return testAndSetOrdered(expectedValue, newValue);
-}
+#define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT16_FETCH_AND_ADD_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelaxed(T *newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
+#define Q_ATOMIC_INT64_IS_SUPPORTED
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreAcquire(T *newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
+#define Q_ATOMIC_INT64_REFERENCE_COUNTING_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT64_REFERENCE_COUNTING_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndStoreRelease(T *newValue)
-{
- return fetchAndStoreOrdered(newValue);
-}
+#define Q_ATOMIC_INT64_TEST_AND_SET_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT64_TEST_AND_SET_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelaxed(qptrdiff valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
+#define Q_ATOMIC_INT64_FETCH_AND_STORE_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT64_FETCH_AND_STORE_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddAcquire(qptrdiff valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
+#define Q_ATOMIC_INT64_FETCH_AND_ADD_IS_ALWAYS_NATIVE
+#define Q_ATOMIC_INT64_FETCH_AND_ADD_IS_WAIT_FREE
-template <typename T>
-Q_INLINE_TEMPLATE T *QBasicAtomicPointer<T>::fetchAndAddRelease(qptrdiff valueToAdd)
-{
- return fetchAndAddOrdered(valueToAdd);
-}
+#else // !Q_CC_INTEL && !Q_CC_GNU
+# error "This compiler for x86_64 is not supported"
+#endif // Q_CC_GNU || Q_CC_INTEL
QT_END_NAMESPACE
diff --git a/src/corelib/arch/s390/arch.pri b/src/corelib/arch/s390/arch.pri
deleted file mode 100644
index 45cc57824b..0000000000
--- a/src/corelib/arch/s390/arch.pri
+++ /dev/null
@@ -1,3 +0,0 @@
-#
-# S390 architecture
-#
diff --git a/src/corelib/arch/sh/qatomic_sh.cpp b/src/corelib/arch/sh/qatomic_sh.cpp
index b552392b64..5cd1b593d8 100644
--- a/src/corelib/arch/sh/qatomic_sh.cpp
+++ b/src/corelib/arch/sh/qatomic_sh.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/arch/sh4a/arch.pri b/src/corelib/arch/sh4a/arch.pri
deleted file mode 100644
index 19d5e040a9..0000000000
--- a/src/corelib/arch/sh4a/arch.pri
+++ /dev/null
@@ -1,3 +0,0 @@
-#
-# SH-4A (Renesas SuperH) architecture
-#
diff --git a/src/corelib/arch/sparc/qatomic32.s b/src/corelib/arch/sparc/qatomic32.s
index 5f695a9093..e4ea13262f 100644
--- a/src/corelib/arch/sparc/qatomic32.s
+++ b/src/corelib/arch/sparc/qatomic32.s
@@ -1,8 +1,7 @@
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!
!! Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-!! All rights reserved.
-!! Contact: Nokia Corporation (qt-info@nokia.com)
+!! Contact: http://www.qt-project.org/
!!
!! This file is part of the QtGui module of the Qt Toolkit.
!!
@@ -35,6 +34,7 @@
!!
!!
!!
+!!
!! $QT_END_LICENSE$
!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
diff --git a/src/corelib/arch/sparc/qatomic64.s b/src/corelib/arch/sparc/qatomic64.s
index 448afbd34e..13c4fe3def 100644
--- a/src/corelib/arch/sparc/qatomic64.s
+++ b/src/corelib/arch/sparc/qatomic64.s
@@ -1,8 +1,7 @@
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!
!! Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-!! All rights reserved.
-!! Contact: Nokia Corporation (qt-info@nokia.com)
+!! Contact: http://www.qt-project.org/
!!
!! This file is part of the QtGui module of the Qt Toolkit.
!!
@@ -35,6 +34,7 @@
!!
!!
!!
+!!
!! $QT_END_LICENSE$
!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
diff --git a/src/corelib/arch/sparc/qatomic_sparc.cpp b/src/corelib/arch/sparc/qatomic_sparc.cpp
index 85848d04a0..638bc4a417 100644
--- a/src/corelib/arch/sparc/qatomic_sparc.cpp
+++ b/src/corelib/arch/sparc/qatomic_sparc.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/arch/windows/arch.pri b/src/corelib/arch/windows/arch.pri
deleted file mode 100644
index d42374b98f..0000000000
--- a/src/corelib/arch/windows/arch.pri
+++ /dev/null
@@ -1,3 +0,0 @@
-#
-# Windows architecture
-#
diff --git a/src/corelib/arch/x86_64/arch.pri b/src/corelib/arch/x86_64/arch.pri
deleted file mode 100644
index 4145b7b133..0000000000
--- a/src/corelib/arch/x86_64/arch.pri
+++ /dev/null
@@ -1,4 +0,0 @@
-#
-# AMD64 architecture
-#
-solaris-cc*:SOURCES += $$QT_ARCH_CPP/qatomic_sun.s
diff --git a/src/corelib/arch/x86_64/qatomic_sun.s b/src/corelib/arch/x86_64/qatomic_sun.s
deleted file mode 100644
index 37969e61cb..0000000000
--- a/src/corelib/arch/x86_64/qatomic_sun.s
+++ /dev/null
@@ -1,91 +0,0 @@
- .code64
-
- .globl q_atomic_increment
- .type q_atomic_increment,@function
- .section .text, "ax"
- .align 16
-q_atomic_increment:
- lock
- incl (%rdi)
- setne %al
- ret
- .size q_atomic_increment,.-q_atomic_increment
-
- .globl q_atomic_decrement
- .type q_atomic_decrement,@function
- .section .text, "ax"
- .align 16
-q_atomic_decrement:
- lock
- decl (%rdi)
- setne %al
- ret
- .size q_atomic_decrement,.-q_atomic_decrement
-
- .globl q_atomic_test_and_set_int
- .type q_atomic_test_and_set_int, @function
- .section .text, "ax"
- .align 16
-q_atomic_test_and_set_int:
- movl %esi,%eax
- lock
- cmpxchgl %edx,(%rdi)
- movl $0,%eax
- sete %al
- ret
- .size q_atomic_test_and_set_int, . - q_atomic_test_and_set_int
-
- .globl q_atomic_set_int
- .type q_atomic_set_int,@function
- .section .text, "ax"
- .align 16
-q_atomic_set_int:
- xchgl %esi,(%rdi)
- movl %esi,%eax
- ret
- .size q_atomic_set_int,.-q_atomic_set_int
-
- .globl q_atomic_fetch_and_add_int
- .type q_atomic_fetch_and_add_int,@function
- .section .text, "ax"
- .align 16
-q_atomic_fetch_and_add_int:
- lock
- xaddl %esi,(%rdi)
- movl %esi, %eax
- ret
- .size q_atomic_fetch_and_add_int,.-q_atomic_fetch_and_add_int
-
- .globl q_atomic_test_and_set_ptr
- .type q_atomic_test_and_set_ptr, @function
- .section .text, "ax"
- .align 16
-q_atomic_test_and_set_ptr:
- movq %rsi,%rax
- lock
- cmpxchgq %rdx,(%rdi)
- movq $0, %rax
- sete %al
- ret
- .size q_atomic_test_and_set_ptr, . - q_atomic_test_and_set_ptr
-
- .globl q_atomic_set_ptr
- .type q_atomic_set_ptr,@function
- .section .text, "ax"
- .align 16
-q_atomic_set_ptr:
- xchgq %rsi,(%rdi)
- movq %rsi,%rax
- ret
- .size q_atomic_set_ptr,.-q_atomic_set_ptr
-
- .globl q_atomic_fetch_and_add_ptr
- .type q_atomic_fetch_and_add_ptr,@function
- .section .text, "ax"
- .align 16
-q_atomic_fetch_and_add_ptr:
- lock
- xaddq %rsi,(%rdi)
- movq %rsi,%rax
- ret
- .size q_atomic_fetch_and_add_ptr,.-q_atomic_fetch_and_add_ptr
diff --git a/src/corelib/codecs/codecs.pri b/src/corelib/codecs/codecs.pri
index 96f4d7f111..c3a15ab4f9 100644
--- a/src/corelib/codecs/codecs.pri
+++ b/src/corelib/codecs/codecs.pri
@@ -1,23 +1,36 @@
# Qt core library codecs module
HEADERS += \
- codecs/qisciicodec_p.h \
- codecs/qlatincodec_p.h \
- codecs/qsimplecodec_p.h \
- codecs/qtextcodec_p.h \
- codecs/qtextcodec.h \
- codecs/qtsciicodec_p.h \
- codecs/qutfcodec_p.h \
- codecs/qtextcodecplugin.h
+ codecs/qisciicodec_p.h \
+ codecs/qlatincodec_p.h \
+ codecs/qsimplecodec_p.h \
+ codecs/qtextcodec_p.h \
+ codecs/qtextcodec.h \
+ codecs/qtsciicodec_p.h \
+ codecs/qutfcodec_p.h \
+ codecs/qgb18030codec_p.h \
+ codecs/qeucjpcodec_p.h \
+ codecs/qjiscodec_p.h \
+ codecs/qsjiscodec_p.h \
+ codecs/qeuckrcodec_p.h \
+ codecs/qbig5codec_p.h \
+ codecs/qfontjpcodec_p.h
SOURCES += \
- codecs/qisciicodec.cpp \
- codecs/qlatincodec.cpp \
- codecs/qsimplecodec.cpp \
- codecs/qtextcodec.cpp \
- codecs/qtsciicodec.cpp \
- codecs/qutfcodec.cpp \
- codecs/qtextcodecplugin.cpp
+ codecs/qisciicodec.cpp \
+ codecs/qlatincodec.cpp \
+ codecs/qsimplecodec.cpp \
+ codecs/qtextcodec.cpp \
+ codecs/qtsciicodec.cpp \
+ codecs/qutfcodec.cpp \
+ codecs/qgb18030codec.cpp \
+ codecs/qjpunicode.cpp \
+ codecs/qeucjpcodec.cpp \
+ codecs/qjiscodec.cpp \
+ codecs/qsjiscodec.cpp \
+ codecs/qeuckrcodec.cpp \
+ codecs/qbig5codec.cpp \
+ codecs/qfontjpcodec.cpp
unix {
SOURCES += codecs/qfontlaocodec.cpp
@@ -25,34 +38,15 @@ unix {
contains(QT_CONFIG,iconv) {
HEADERS += codecs/qiconvcodec_p.h
SOURCES += codecs/qiconvcodec.cpp
+ blackberry-*-qcc:LIBS_PRIVATE *= -liconv
} else:contains(QT_CONFIG,gnu-libiconv) {
HEADERS += codecs/qiconvcodec_p.h
SOURCES += codecs/qiconvcodec.cpp
-
DEFINES += GNU_LIBICONV
!mac:LIBS_PRIVATE *= -liconv
} else:contains(QT_CONFIG,sun-libiconv) {
HEADERS += codecs/qiconvcodec_p.h
SOURCES += codecs/qiconvcodec.cpp
DEFINES += GNU_LIBICONV
- } else {
- # no iconv, so we put all plugins in the library
- HEADERS += \
- ../plugins/codecs/cn/qgb18030codec.h \
- ../plugins/codecs/jp/qeucjpcodec.h \
- ../plugins/codecs/jp/qjiscodec.h \
- ../plugins/codecs/jp/qsjiscodec.h \
- ../plugins/codecs/kr/qeuckrcodec.h \
- ../plugins/codecs/tw/qbig5codec.h \
- ../plugins/codecs/jp/qfontjpcodec.h
- SOURCES += \
- ../plugins/codecs/cn/qgb18030codec.cpp \
- ../plugins/codecs/jp/qjpunicode.cpp \
- ../plugins/codecs/jp/qeucjpcodec.cpp \
- ../plugins/codecs/jp/qjiscodec.cpp \
- ../plugins/codecs/jp/qsjiscodec.cpp \
- ../plugins/codecs/kr/qeuckrcodec.cpp \
- ../plugins/codecs/tw/qbig5codec.cpp \
- ../plugins/codecs/jp/qfontjpcodec.cpp
}
}
diff --git a/src/corelib/codecs/codecs.qdoc b/src/corelib/codecs/codecs.qdoc
index 76c3f98b42..2127a0a4cf 100644
--- a/src/corelib/codecs/codecs.qdoc
+++ b/src/corelib/codecs/codecs.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/codecs/cp949codetbl_p.h b/src/corelib/codecs/cp949codetbl_p.h
new file mode 100644
index 0000000000..228c5ad032
--- /dev/null
+++ b/src/corelib/codecs/cp949codetbl_p.h
@@ -0,0 +1,648 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef CP949CODETBL_P_H
+#define CP494CODETBL_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+static const unsigned short cp949_icode_to_unicode[] = {
+0xac02, 0xac03, 0xac05, 0xac06, 0xac0b, 0xac0c, 0xac0d, 0xac0e, 0xac0f, 0xac18, 0xac1e, 0xac1f, 0xac21, 0xac22, 0xac23,
+0xac25, 0xac26, 0xac27, 0xac28, 0xac29, 0xac2a, 0xac2b, 0xac2e, 0xac32, 0xac33, 0xac34, 0xac35, 0xac36, 0xac37, 0xac3a,
+0xac3b, 0xac3d, 0xac3e, 0xac3f, 0xac41, 0xac42, 0xac43, 0xac44, 0xac45, 0xac46, 0xac47, 0xac48, 0xac49, 0xac4a, 0xac4c,
+0xac4e, 0xac4f, 0xac50, 0xac51, 0xac52, 0xac53, 0xac55, 0xac56, 0xac57, 0xac59, 0xac5a, 0xac5b, 0xac5d, 0xac5e, 0xac5f,
+0xac60, 0xac61, 0xac62, 0xac63, 0xac64, 0xac65, 0xac66, 0xac67, 0xac68, 0xac69, 0xac6a, 0xac6b, 0xac6c, 0xac6d, 0xac6e,
+0xac6f, 0xac72, 0xac73, 0xac75, 0xac76, 0xac79, 0xac7b, 0xac7c, 0xac7d, 0xac7e, 0xac7f, 0xac82, 0xac87, 0xac88, 0xac8d,
+0xac8e, 0xac8f, 0xac91, 0xac92, 0xac93, 0xac95, 0xac96, 0xac97, 0xac98, 0xac99, 0xac9a, 0xac9b, 0xac9e, 0xaca2, 0xaca3,
+0xaca4, 0xaca5, 0xaca6, 0xaca7, 0xacab, 0xacad, 0xacae, 0xacb1, 0xacb2, 0xacb3, 0xacb4, 0xacb5, 0xacb6, 0xacb7, 0xacba,
+0xacbe, 0xacbf, 0xacc0, 0xacc2, 0xacc3, 0xacc5, 0xacc6, 0xacc7, 0xacc9, 0xacca, 0xaccb, 0xaccd, 0xacce, 0xaccf, 0xacd0,
+0xacd1, 0xacd2, 0xacd3, 0xacd4, 0xacd6, 0xacd8, 0xacd9, 0xacda, 0xacdb, 0xacdc, 0xacdd, 0xacde, 0xacdf, 0xace2, 0xace3,
+0xace5, 0xace6, 0xace9, 0xaceb, 0xaced, 0xacee, 0xacf2, 0xacf4, 0xacf7, 0xacf8, 0xacf9, 0xacfa, 0xacfb, 0xacfe, 0xacff,
+0xad01, 0xad02, 0xad03, 0xad05, 0xad07, 0xad08, 0xad09, 0xad0a, 0xad0b, 0xad0e, 0xad10, 0xad12, 0xad13, 0xad14, 0xad15,
+0xad16, 0xad17, 0xad19, 0xad1a, 0xad1b, 0xad1d, 0xad1e, 0xad1f, 0xad21, 0xad22, 0xad23, 0xad24, 0xad25, 0xad26, 0xad27,
+0xad28, 0xad2a, 0xad2b, 0xad2e, 0xad2f, 0xad30, 0xad31, 0xad32, 0xad33, 0xad36, 0xad37, 0xad39, 0xad3a, 0xad3b, 0xad3d,
+0xad3e, 0xad3f, 0xad40, 0xad41, 0xad42, 0xad43, 0xad46, 0xad48, 0xad4a, 0xad4b, 0xad4c, 0xad4d, 0xad4e, 0xad4f, 0xad51,
+0xad52, 0xad53, 0xad55, 0xad56, 0xad57, 0xad59, 0xad5a, 0xad5b, 0xad5c, 0xad5d, 0xad5e, 0xad5f, 0xad60, 0xad62, 0xad64,
+0xad65, 0xad66, 0xad67, 0xad68, 0xad69, 0xad6a, 0xad6b, 0xad6e, 0xad6f, 0xad71, 0xad72, 0xad77, 0xad78, 0xad79, 0xad7a,
+0xad7e, 0xad80, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87, 0xad8a, 0xad8b, 0xad8d, 0xad8e, 0xad8f, 0xad91, 0xad92, 0xad93,
+0xad94, 0xad95, 0xad96, 0xad97, 0xad98, 0xad99, 0xad9a, 0xad9b, 0xad9e, 0xad9f, 0xada0, 0xada1, 0xada2, 0xada3, 0xada5,
+0xada6, 0xada7, 0xada8, 0xada9, 0xadaa, 0xadab, 0xadac, 0xadad, 0xadae, 0xadaf, 0xadb0, 0xadb1, 0xadb2, 0xadb3, 0xadb4,
+0xadb5, 0xadb6, 0xadb8, 0xadb9, 0xadba, 0xadbb, 0xadbc, 0xadbd, 0xadbe, 0xadbf, 0xadc2, 0xadc3, 0xadc5, 0xadc6, 0xadc7,
+0xadc9, 0xadca, 0xadcb, 0xadcc, 0xadcd, 0xadce, 0xadcf, 0xadd2, 0xadd4, 0xadd5, 0xadd6, 0xadd7, 0xadd8, 0xadd9, 0xadda,
+0xaddb, 0xaddd, 0xadde, 0xaddf, 0xade1, 0xade2, 0xade3, 0xade5, 0xade6, 0xade7, 0xade8, 0xade9, 0xadea, 0xadeb, 0xadec,
+0xaded, 0xadee, 0xadef, 0xadf0, 0xadf1, 0xadf2, 0xadf3, 0xadf4, 0xadf5, 0xadf6, 0xadf7, 0xadfa, 0xadfb, 0xadfd, 0xadfe,
+0xae02, 0xae03, 0xae04, 0xae05, 0xae06, 0xae07, 0xae0a, 0xae0c, 0xae0e, 0xae0f, 0xae10, 0xae11, 0xae12, 0xae13, 0xae15,
+0xae16, 0xae17, 0xae18, 0xae19, 0xae1a, 0xae1b, 0xae1c, 0xae1d, 0xae1e, 0xae1f, 0xae20, 0xae21, 0xae22, 0xae23, 0xae24,
+0xae25, 0xae26, 0xae27, 0xae28, 0xae29, 0xae2a, 0xae2b, 0xae2c, 0xae2d, 0xae2e, 0xae2f, 0xae32, 0xae33, 0xae35, 0xae36,
+0xae39, 0xae3b, 0xae3c, 0xae3d, 0xae3e, 0xae3f, 0xae42, 0xae44, 0xae47, 0xae48, 0xae49, 0xae4b, 0xae4f, 0xae51, 0xae52,
+0xae53, 0xae55, 0xae57, 0xae58, 0xae59, 0xae5a, 0xae5b, 0xae5e, 0xae62, 0xae63, 0xae64, 0xae66, 0xae67, 0xae6a, 0xae6b,
+0xae6d, 0xae6e, 0xae6f, 0xae71, 0xae72, 0xae73, 0xae74, 0xae75, 0xae76, 0xae77, 0xae7a, 0xae7e, 0xae7f, 0xae80, 0xae81,
+0xae82, 0xae83, 0xae86, 0xae87, 0xae88, 0xae89, 0xae8a, 0xae8b, 0xae8d, 0xae8e, 0xae8f, 0xae90, 0xae91, 0xae92, 0xae93,
+0xae94, 0xae95, 0xae96, 0xae97, 0xae98, 0xae99, 0xae9a, 0xae9b, 0xae9c, 0xae9d, 0xae9e, 0xae9f, 0xaea0, 0xaea1, 0xaea2,
+0xaea3, 0xaea4, 0xaea5, 0xaea6, 0xaea7, 0xaea8, 0xaea9, 0xaeaa, 0xaeab, 0xaeac, 0xaead, 0xaeae, 0xaeaf, 0xaeb0, 0xaeb1,
+0xaeb2, 0xaeb3, 0xaeb4, 0xaeb5, 0xaeb6, 0xaeb7, 0xaeb8, 0xaeb9, 0xaeba, 0xaebb, 0xaebf, 0xaec1, 0xaec2, 0xaec3, 0xaec5,
+0xaec6, 0xaec7, 0xaec8, 0xaec9, 0xaeca, 0xaecb, 0xaece, 0xaed2, 0xaed3, 0xaed4, 0xaed5, 0xaed6, 0xaed7, 0xaeda, 0xaedb,
+0xaedd, 0xaede, 0xaedf, 0xaee0, 0xaee1, 0xaee2, 0xaee3, 0xaee4, 0xaee5, 0xaee6, 0xaee7, 0xaee9, 0xaeea, 0xaeec, 0xaeee,
+0xaeef, 0xaef0, 0xaef1, 0xaef2, 0xaef3, 0xaef5, 0xaef6, 0xaef7, 0xaef9, 0xaefa, 0xaefb, 0xaefd, 0xaefe, 0xaeff, 0xaf00,
+0xaf01, 0xaf02, 0xaf03, 0xaf04, 0xaf05, 0xaf06, 0xaf09, 0xaf0a, 0xaf0b, 0xaf0c, 0xaf0e, 0xaf0f, 0xaf11, 0xaf12, 0xaf13,
+0xaf14, 0xaf15, 0xaf16, 0xaf17, 0xaf18, 0xaf19, 0xaf1a, 0xaf1b, 0xaf1c, 0xaf1d, 0xaf1e, 0xaf1f, 0xaf20, 0xaf21, 0xaf22,
+0xaf23, 0xaf24, 0xaf25, 0xaf26, 0xaf27, 0xaf28, 0xaf29, 0xaf2a, 0xaf2b, 0xaf2e, 0xaf2f, 0xaf31, 0xaf33, 0xaf35, 0xaf36,
+0xaf37, 0xaf38, 0xaf39, 0xaf3a, 0xaf3b, 0xaf3e, 0xaf40, 0xaf44, 0xaf45, 0xaf46, 0xaf47, 0xaf4a, 0xaf4b, 0xaf4c, 0xaf4d,
+0xaf4e, 0xaf4f, 0xaf51, 0xaf52, 0xaf53, 0xaf54, 0xaf55, 0xaf56, 0xaf57, 0xaf58, 0xaf59, 0xaf5a, 0xaf5b, 0xaf5e, 0xaf5f,
+0xaf60, 0xaf61, 0xaf62, 0xaf63, 0xaf66, 0xaf67, 0xaf68, 0xaf69, 0xaf6a, 0xaf6b, 0xaf6c, 0xaf6d, 0xaf6e, 0xaf6f, 0xaf70,
+0xaf71, 0xaf72, 0xaf73, 0xaf74, 0xaf75, 0xaf76, 0xaf77, 0xaf78, 0xaf7a, 0xaf7b, 0xaf7c, 0xaf7d, 0xaf7e, 0xaf7f, 0xaf81,
+0xaf82, 0xaf83, 0xaf85, 0xaf86, 0xaf87, 0xaf89, 0xaf8a, 0xaf8b, 0xaf8c, 0xaf8d, 0xaf8e, 0xaf8f, 0xaf92, 0xaf93, 0xaf94,
+0xaf96, 0xaf97, 0xaf98, 0xaf99, 0xaf9a, 0xaf9b, 0xaf9d, 0xaf9e, 0xaf9f, 0xafa0, 0xafa1, 0xafa2, 0xafa3, 0xafa4, 0xafa5,
+0xafa6, 0xafa7, 0xafa8, 0xafa9, 0xafaa, 0xafab, 0xafac, 0xafad, 0xafae, 0xafaf, 0xafb0, 0xafb1, 0xafb2, 0xafb3, 0xafb4,
+0xafb5, 0xafb6, 0xafb7, 0xafba, 0xafbb, 0xafbd, 0xafbe, 0xafbf, 0xafc1, 0xafc2, 0xafc3, 0xafc4, 0xafc5, 0xafc6, 0xafca,
+0xafcc, 0xafcf, 0xafd0, 0xafd1, 0xafd2, 0xafd3, 0xafd5, 0xafd6, 0xafd7, 0xafd8, 0xafd9, 0xafda, 0xafdb, 0xafdd, 0xafde,
+0xafdf, 0xafe0, 0xafe1, 0xafe2, 0xafe3, 0xafe4, 0xafe5, 0xafe6, 0xafe7, 0xafea, 0xafeb, 0xafec, 0xafed, 0xafee, 0xafef,
+0xaff2, 0xaff3, 0xaff5, 0xaff6, 0xaff7, 0xaff9, 0xaffa, 0xaffb, 0xaffc, 0xaffd, 0xaffe, 0xafff, 0xb002, 0xb003, 0xb005,
+0xb006, 0xb007, 0xb008, 0xb009, 0xb00a, 0xb00b, 0xb00d, 0xb00e, 0xb00f, 0xb011, 0xb012, 0xb013, 0xb015, 0xb016, 0xb017,
+0xb018, 0xb019, 0xb01a, 0xb01b, 0xb01e, 0xb01f, 0xb020, 0xb021, 0xb022, 0xb023, 0xb024, 0xb025, 0xb026, 0xb027, 0xb029,
+0xb02a, 0xb02b, 0xb02c, 0xb02d, 0xb02e, 0xb02f, 0xb030, 0xb031, 0xb032, 0xb033, 0xb034, 0xb035, 0xb036, 0xb037, 0xb038,
+0xb039, 0xb03a, 0xb03b, 0xb03c, 0xb03d, 0xb03e, 0xb03f, 0xb040, 0xb041, 0xb042, 0xb043, 0xb046, 0xb047, 0xb049, 0xb04b,
+0xb04d, 0xb04f, 0xb050, 0xb051, 0xb052, 0xb056, 0xb058, 0xb05a, 0xb05b, 0xb05c, 0xb05e, 0xb05f, 0xb060, 0xb061, 0xb062,
+0xb063, 0xb064, 0xb065, 0xb066, 0xb067, 0xb068, 0xb069, 0xb06a, 0xb06b, 0xb06c, 0xb06d, 0xb06e, 0xb06f, 0xb070, 0xb071,
+0xb072, 0xb073, 0xb074, 0xb075, 0xb076, 0xb077, 0xb078, 0xb079, 0xb07a, 0xb07b, 0xb07e, 0xb07f, 0xb081, 0xb082, 0xb083,
+0xb085, 0xb086, 0xb087, 0xb088, 0xb089, 0xb08a, 0xb08b, 0xb08e, 0xb090, 0xb092, 0xb093, 0xb094, 0xb095, 0xb096, 0xb097,
+0xb09b, 0xb09d, 0xb09e, 0xb0a3, 0xb0a4, 0xb0a5, 0xb0a6, 0xb0a7, 0xb0aa, 0xb0b0, 0xb0b2, 0xb0b6, 0xb0b7, 0xb0b9, 0xb0ba,
+0xb0bb, 0xb0bd, 0xb0be, 0xb0bf, 0xb0c0, 0xb0c1, 0xb0c2, 0xb0c3, 0xb0c6, 0xb0ca, 0xb0cb, 0xb0cc, 0xb0cd, 0xb0ce, 0xb0cf,
+0xb0d2, 0xb0d3, 0xb0d5, 0xb0d6, 0xb0d7, 0xb0d9, 0xb0da, 0xb0db, 0xb0dc, 0xb0dd, 0xb0de, 0xb0df, 0xb0e1, 0xb0e2, 0xb0e3,
+0xb0e4, 0xb0e6, 0xb0e7, 0xb0e8, 0xb0e9, 0xb0ea, 0xb0eb, 0xb0ec, 0xb0ed, 0xb0ee, 0xb0ef, 0xb0f0, 0xb0f1, 0xb0f2, 0xb0f3,
+0xb0f4, 0xb0f5, 0xb0f6, 0xb0f7, 0xb0f8, 0xb0f9, 0xb0fa, 0xb0fb, 0xb0fc, 0xb0fd, 0xb0fe, 0xb0ff, 0xb100, 0xb101, 0xb102,
+0xb103, 0xb104, 0xb105, 0xb106, 0xb107, 0xb10a, 0xb10d, 0xb10e, 0xb10f, 0xb111, 0xb114, 0xb115, 0xb116, 0xb117, 0xb11a,
+0xb11e, 0xb11f, 0xb120, 0xb121, 0xb122, 0xb126, 0xb127, 0xb129, 0xb12a, 0xb12b, 0xb12d, 0xb12e, 0xb12f, 0xb130, 0xb131,
+0xb132, 0xb133, 0xb136, 0xb13a, 0xb13b, 0xb13c, 0xb13d, 0xb13e, 0xb13f, 0xb142, 0xb143, 0xb145, 0xb146, 0xb147, 0xb149,
+0xb14a, 0xb14b, 0xb14c, 0xb14d, 0xb14e, 0xb14f, 0xb152, 0xb153, 0xb156, 0xb157, 0xb159, 0xb15a, 0xb15b, 0xb15d, 0xb15e,
+0xb15f, 0xb161, 0xb162, 0xb163, 0xb164, 0xb165, 0xb166, 0xb167, 0xb168, 0xb169, 0xb16a, 0xb16b, 0xb16c, 0xb16d, 0xb16e,
+0xb16f, 0xb170, 0xb171, 0xb172, 0xb173, 0xb174, 0xb175, 0xb176, 0xb177, 0xb17a, 0xb17b, 0xb17d, 0xb17e, 0xb17f, 0xb181,
+0xb183, 0xb184, 0xb185, 0xb186, 0xb187, 0xb18a, 0xb18c, 0xb18e, 0xb18f, 0xb190, 0xb191, 0xb195, 0xb196, 0xb197, 0xb199,
+0xb19a, 0xb19b, 0xb19d, 0xb19e, 0xb19f, 0xb1a0, 0xb1a1, 0xb1a2, 0xb1a3, 0xb1a4, 0xb1a5, 0xb1a6, 0xb1a7, 0xb1a9, 0xb1aa,
+0xb1ab, 0xb1ac, 0xb1ad, 0xb1ae, 0xb1af, 0xb1b0, 0xb1b1, 0xb1b2, 0xb1b3, 0xb1b4, 0xb1b5, 0xb1b6, 0xb1b7, 0xb1b8, 0xb1b9,
+0xb1ba, 0xb1bb, 0xb1bc, 0xb1bd, 0xb1be, 0xb1bf, 0xb1c0, 0xb1c1, 0xb1c2, 0xb1c3, 0xb1c4, 0xb1c5, 0xb1c6, 0xb1c7, 0xb1c8,
+0xb1c9, 0xb1ca, 0xb1cb, 0xb1cd, 0xb1ce, 0xb1cf, 0xb1d1, 0xb1d2, 0xb1d3, 0xb1d5, 0xb1d6, 0xb1d7, 0xb1d8, 0xb1d9, 0xb1da,
+0xb1db, 0xb1de, 0xb1e0, 0xb1e1, 0xb1e2, 0xb1e3, 0xb1e4, 0xb1e5, 0xb1e6, 0xb1e7, 0xb1ea, 0xb1eb, 0xb1ed, 0xb1ee, 0xb1ef,
+0xb1f1, 0xb1f2, 0xb1f3, 0xb1f4, 0xb1f5, 0xb1f6, 0xb1f7, 0xb1f8, 0xb1fa, 0xb1fc, 0xb1fe, 0xb1ff, 0xb200, 0xb201, 0xb202,
+0xb203, 0xb206, 0xb207, 0xb209, 0xb20a, 0xb20d, 0xb20e, 0xb20f, 0xb210, 0xb211, 0xb212, 0xb213, 0xb216, 0xb218, 0xb21a,
+0xb21b, 0xb21c, 0xb21d, 0xb21e, 0xb21f, 0xb221, 0xb222, 0xb223, 0xb224, 0xb225, 0xb226, 0xb227, 0xb228, 0xb229, 0xb22a,
+0xb22b, 0xb22c, 0xb22d, 0xb22e, 0xb22f, 0xb230, 0xb231, 0xb232, 0xb233, 0xb235, 0xb236, 0xb237, 0xb238, 0xb239, 0xb23a,
+0xb23b, 0xb23d, 0xb23e, 0xb23f, 0xb240, 0xb241, 0xb242, 0xb243, 0xb244, 0xb245, 0xb246, 0xb247, 0xb248, 0xb249, 0xb24a,
+0xb24b, 0xb24c, 0xb24d, 0xb24e, 0xb24f, 0xb250, 0xb251, 0xb252, 0xb253, 0xb254, 0xb255, 0xb256, 0xb257, 0xb259, 0xb25a,
+0xb25b, 0xb25d, 0xb25e, 0xb25f, 0xb261, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266, 0xb267, 0xb26a, 0xb26b, 0xb26c, 0xb26d,
+0xb26e, 0xb26f, 0xb270, 0xb271, 0xb272, 0xb273, 0xb276, 0xb277, 0xb278, 0xb279, 0xb27a, 0xb27b, 0xb27d, 0xb27e, 0xb27f,
+0xb280, 0xb281, 0xb282, 0xb283, 0xb286, 0xb287, 0xb288, 0xb28a, 0xb28b, 0xb28c, 0xb28d, 0xb28e, 0xb28f, 0xb292, 0xb293,
+0xb295, 0xb296, 0xb297, 0xb29b, 0xb29c, 0xb29d, 0xb29e, 0xb29f, 0xb2a2, 0xb2a4, 0xb2a7, 0xb2a8, 0xb2a9, 0xb2ab, 0xb2ad,
+0xb2ae, 0xb2af, 0xb2b1, 0xb2b2, 0xb2b3, 0xb2b5, 0xb2b6, 0xb2b7, 0xb2b8, 0xb2b9, 0xb2ba, 0xb2bb, 0xb2bc, 0xb2bd, 0xb2be,
+0xb2bf, 0xb2c0, 0xb2c1, 0xb2c2, 0xb2c3, 0xb2c4, 0xb2c5, 0xb2c6, 0xb2c7, 0xb2ca, 0xb2cb, 0xb2cd, 0xb2ce, 0xb2cf, 0xb2d1,
+0xb2d3, 0xb2d4, 0xb2d5, 0xb2d6, 0xb2d7, 0xb2da, 0xb2dc, 0xb2de, 0xb2df, 0xb2e0, 0xb2e1, 0xb2e3, 0xb2e7, 0xb2e9, 0xb2ea,
+0xb2f0, 0xb2f1, 0xb2f2, 0xb2f6, 0xb2fc, 0xb2fd, 0xb2fe, 0xb302, 0xb303, 0xb305, 0xb306, 0xb307, 0xb309, 0xb30a, 0xb30b,
+0xb30c, 0xb30d, 0xb30e, 0xb30f, 0xb312, 0xb316, 0xb317, 0xb318, 0xb319, 0xb31a, 0xb31b, 0xb31d, 0xb31e, 0xb31f, 0xb320,
+0xb321, 0xb322, 0xb323, 0xb324, 0xb325, 0xb326, 0xb327, 0xb328, 0xb329, 0xb32a, 0xb32b, 0xb32c, 0xb32d, 0xb32e, 0xb32f,
+0xb330, 0xb331, 0xb332, 0xb333, 0xb334, 0xb335, 0xb336, 0xb337, 0xb338, 0xb339, 0xb33a, 0xb33b, 0xb33c, 0xb33d, 0xb33e,
+0xb33f, 0xb340, 0xb341, 0xb342, 0xb343, 0xb344, 0xb345, 0xb346, 0xb347, 0xb348, 0xb349, 0xb34a, 0xb34b, 0xb34c, 0xb34d,
+0xb34e, 0xb34f, 0xb350, 0xb351, 0xb352, 0xb353, 0xb357, 0xb359, 0xb35a, 0xb35d, 0xb360, 0xb361, 0xb362, 0xb363, 0xb366,
+0xb368, 0xb36a, 0xb36c, 0xb36d, 0xb36f, 0xb372, 0xb373, 0xb375, 0xb376, 0xb377, 0xb379, 0xb37a, 0xb37b, 0xb37c, 0xb37d,
+0xb37e, 0xb37f, 0xb382, 0xb386, 0xb387, 0xb388, 0xb389, 0xb38a, 0xb38b, 0xb38d, 0xb38e, 0xb38f, 0xb391, 0xb392, 0xb393,
+0xb395, 0xb396, 0xb397, 0xb398, 0xb399, 0xb39a, 0xb39b, 0xb39c, 0xb39d, 0xb39e, 0xb39f, 0xb3a2, 0xb3a3, 0xb3a4, 0xb3a5,
+0xb3a6, 0xb3a7, 0xb3a9, 0xb3aa, 0xb3ab, 0xb3ad, 0xb3ae, 0xb3af, 0xb3b0, 0xb3b1, 0xb3b2, 0xb3b3, 0xb3b4, 0xb3b5, 0xb3b6,
+0xb3b7, 0xb3b8, 0xb3b9, 0xb3ba, 0xb3bb, 0xb3bc, 0xb3bd, 0xb3be, 0xb3bf, 0xb3c0, 0xb3c1, 0xb3c2, 0xb3c3, 0xb3c6, 0xb3c7,
+0xb3c9, 0xb3ca, 0xb3cd, 0xb3cf, 0xb3d1, 0xb3d2, 0xb3d3, 0xb3d6, 0xb3d8, 0xb3da, 0xb3dc, 0xb3de, 0xb3df, 0xb3e1, 0xb3e2,
+0xb3e3, 0xb3e5, 0xb3e6, 0xb3e7, 0xb3e9, 0xb3ea, 0xb3eb, 0xb3ec, 0xb3ed, 0xb3ee, 0xb3ef, 0xb3f0, 0xb3f1, 0xb3f2, 0xb3f3,
+0xb3f4, 0xb3f5, 0xb3f6, 0xb3f7, 0xb3f8, 0xb3f9, 0xb3fa, 0xb3fb, 0xb3fd, 0xb3fe, 0xb3ff, 0xb400, 0xb401, 0xb402, 0xb403,
+0xb404, 0xb405, 0xb406, 0xb407, 0xb408, 0xb409, 0xb40a, 0xb40b, 0xb40c, 0xb40d, 0xb40e, 0xb40f, 0xb411, 0xb412, 0xb413,
+0xb414, 0xb415, 0xb416, 0xb417, 0xb419, 0xb41a, 0xb41b, 0xb41d, 0xb41e, 0xb41f, 0xb421, 0xb422, 0xb423, 0xb424, 0xb425,
+0xb426, 0xb427, 0xb42a, 0xb42c, 0xb42d, 0xb42e, 0xb42f, 0xb430, 0xb431, 0xb432, 0xb433, 0xb435, 0xb436, 0xb437, 0xb438,
+0xb439, 0xb43a, 0xb43b, 0xb43c, 0xb43d, 0xb43e, 0xb43f, 0xb440, 0xb441, 0xb442, 0xb443, 0xb444, 0xb445, 0xb446, 0xb447,
+0xb448, 0xb449, 0xb44a, 0xb44b, 0xb44c, 0xb44d, 0xb44e, 0xb44f, 0xb452, 0xb453, 0xb455, 0xb456, 0xb457, 0xb459, 0xb45a,
+0xb45b, 0xb45c, 0xb45d, 0xb45e, 0xb45f, 0xb462, 0xb464, 0xb466, 0xb467, 0xb468, 0xb469, 0xb46a, 0xb46b, 0xb46d, 0xb46e,
+0xb46f, 0xb470, 0xb471, 0xb472, 0xb473, 0xb474, 0xb475, 0xb476, 0xb477, 0xb478, 0xb479, 0xb47a, 0xb47b, 0xb47c, 0xb47d,
+0xb47e, 0xb47f, 0xb481, 0xb482, 0xb483, 0xb484, 0xb485, 0xb486, 0xb487, 0xb489, 0xb48a, 0xb48b, 0xb48c, 0xb48d, 0xb48e,
+0xb48f, 0xb490, 0xb491, 0xb492, 0xb493, 0xb494, 0xb495, 0xb496, 0xb497, 0xb498, 0xb499, 0xb49a, 0xb49b, 0xb49c, 0xb49e,
+0xb49f, 0xb4a0, 0xb4a1, 0xb4a2, 0xb4a3, 0xb4a5, 0xb4a6, 0xb4a7, 0xb4a9, 0xb4aa, 0xb4ab, 0xb4ad, 0xb4ae, 0xb4af, 0xb4b0,
+0xb4b1, 0xb4b2, 0xb4b3, 0xb4b4, 0xb4b6, 0xb4b8, 0xb4ba, 0xb4bb, 0xb4bc, 0xb4bd, 0xb4be, 0xb4bf, 0xb4c1, 0xb4c2, 0xb4c3,
+0xb4c5, 0xb4c6, 0xb4c7, 0xb4c9, 0xb4ca, 0xb4cb, 0xb4cc, 0xb4cd, 0xb4ce, 0xb4cf, 0xb4d1, 0xb4d2, 0xb4d3, 0xb4d4, 0xb4d6,
+0xb4d7, 0xb4d8, 0xb4d9, 0xb4da, 0xb4db, 0xb4de, 0xb4df, 0xb4e1, 0xb4e2, 0xb4e5, 0xb4e7, 0xb4e8, 0xb4e9, 0xb4ea, 0xb4eb,
+0xb4ee, 0xb4f0, 0xb4f2, 0xb4f3, 0xb4f4, 0xb4f5, 0xb4f6, 0xb4f7, 0xb4f9, 0xb4fa, 0xb4fb, 0xb4fc, 0xb4fd, 0xb4fe, 0xb4ff,
+0xb500, 0xb501, 0xb502, 0xb503, 0xb504, 0xb505, 0xb506, 0xb507, 0xb508, 0xb509, 0xb50a, 0xb50b, 0xb50c, 0xb50d, 0xb50e,
+0xb50f, 0xb510, 0xb511, 0xb512, 0xb513, 0xb516, 0xb517, 0xb519, 0xb51a, 0xb51d, 0xb51e, 0xb51f, 0xb520, 0xb521, 0xb522,
+0xb523, 0xb526, 0xb52b, 0xb52c, 0xb52d, 0xb52e, 0xb52f, 0xb532, 0xb533, 0xb535, 0xb536, 0xb537, 0xb539, 0xb53a, 0xb53b,
+0xb53c, 0xb53d, 0xb53e, 0xb53f, 0xb542, 0xb546, 0xb547, 0xb548, 0xb549, 0xb54a, 0xb54e, 0xb54f, 0xb551, 0xb552, 0xb553,
+0xb555, 0xb556, 0xb557, 0xb558, 0xb559, 0xb55a, 0xb55b, 0xb55e, 0xb562, 0xb563, 0xb564, 0xb565, 0xb566, 0xb567, 0xb568,
+0xb569, 0xb56a, 0xb56b, 0xb56c, 0xb56d, 0xb56e, 0xb56f, 0xb570, 0xb571, 0xb572, 0xb573, 0xb574, 0xb575, 0xb576, 0xb577,
+0xb578, 0xb579, 0xb57a, 0xb57b, 0xb57c, 0xb57d, 0xb57e, 0xb57f, 0xb580, 0xb581, 0xb582, 0xb583, 0xb584, 0xb585, 0xb586,
+0xb587, 0xb588, 0xb589, 0xb58a, 0xb58b, 0xb58c, 0xb58d, 0xb58e, 0xb58f, 0xb590, 0xb591, 0xb592, 0xb593, 0xb594, 0xb595,
+0xb596, 0xb597, 0xb598, 0xb599, 0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb59e, 0xb59f, 0xb5a2, 0xb5a3, 0xb5a5, 0xb5a6, 0xb5a7,
+0xb5a9, 0xb5ac, 0xb5ad, 0xb5ae, 0xb5af, 0xb5b2, 0xb5b6, 0xb5b7, 0xb5b8, 0xb5b9, 0xb5ba, 0xb5be, 0xb5bf, 0xb5c1, 0xb5c2,
+0xb5c3, 0xb5c5, 0xb5c6, 0xb5c7, 0xb5c8, 0xb5c9, 0xb5ca, 0xb5cb, 0xb5ce, 0xb5d2, 0xb5d3, 0xb5d4, 0xb5d5, 0xb5d6, 0xb5d7,
+0xb5d9, 0xb5da, 0xb5db, 0xb5dc, 0xb5dd, 0xb5de, 0xb5df, 0xb5e0, 0xb5e1, 0xb5e2, 0xb5e3, 0xb5e4, 0xb5e5, 0xb5e6, 0xb5e7,
+0xb5e8, 0xb5e9, 0xb5ea, 0xb5eb, 0xb5ed, 0xb5ee, 0xb5ef, 0xb5f0, 0xb5f1, 0xb5f2, 0xb5f3, 0xb5f4, 0xb5f5, 0xb5f6, 0xb5f7,
+0xb5f8, 0xb5f9, 0xb5fa, 0xb5fb, 0xb5fc, 0xb5fd, 0xb5fe, 0xb5ff, 0xb600, 0xb601, 0xb602, 0xb603, 0xb604, 0xb605, 0xb606,
+0xb607, 0xb608, 0xb609, 0xb60a, 0xb60b, 0xb60c, 0xb60d, 0xb60e, 0xb60f, 0xb612, 0xb613, 0xb615, 0xb616, 0xb617, 0xb619,
+0xb61a, 0xb61b, 0xb61c, 0xb61d, 0xb61e, 0xb61f, 0xb620, 0xb621, 0xb622, 0xb623, 0xb624, 0xb626, 0xb627, 0xb628, 0xb629,
+0xb62a, 0xb62b, 0xb62d, 0xb62e, 0xb62f, 0xb630, 0xb631, 0xb632, 0xb633, 0xb635, 0xb636, 0xb637, 0xb638, 0xb639, 0xb63a,
+0xb63b, 0xb63c, 0xb63d, 0xb63e, 0xb63f, 0xb640, 0xb641, 0xb642, 0xb643, 0xb644, 0xb645, 0xb646, 0xb647, 0xb649, 0xb64a,
+0xb64b, 0xb64c, 0xb64d, 0xb64e, 0xb64f, 0xb650, 0xb651, 0xb652, 0xb653, 0xb654, 0xb655, 0xb656, 0xb657, 0xb658, 0xb659,
+0xb65a, 0xb65b, 0xb65c, 0xb65d, 0xb65e, 0xb65f, 0xb660, 0xb661, 0xb662, 0xb663, 0xb665, 0xb666, 0xb667, 0xb669, 0xb66a,
+0xb66b, 0xb66c, 0xb66d, 0xb66e, 0xb66f, 0xb670, 0xb671, 0xb672, 0xb673, 0xb674, 0xb675, 0xb676, 0xb677, 0xb678, 0xb679,
+0xb67a, 0xb67b, 0xb67c, 0xb67d, 0xb67e, 0xb67f, 0xb680, 0xb681, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686, 0xb687, 0xb688,
+0xb689, 0xb68a, 0xb68b, 0xb68c, 0xb68d, 0xb68e, 0xb68f, 0xb690, 0xb691, 0xb692, 0xb693, 0xb694, 0xb695, 0xb696, 0xb697,
+0xb698, 0xb699, 0xb69a, 0xb69b, 0xb69e, 0xb69f, 0xb6a1, 0xb6a2, 0xb6a3, 0xb6a5, 0xb6a6, 0xb6a7, 0xb6a8, 0xb6a9, 0xb6aa,
+0xb6ad, 0xb6ae, 0xb6af, 0xb6b0, 0xb6b2, 0xb6b3, 0xb6b4, 0xb6b5, 0xb6b6, 0xb6b7, 0xb6b8, 0xb6b9, 0xb6ba, 0xb6bb, 0xb6bc,
+0xb6bd, 0xb6be, 0xb6bf, 0xb6c0, 0xb6c1, 0xb6c2, 0xb6c3, 0xb6c4, 0xb6c5, 0xb6c6, 0xb6c7, 0xb6c8, 0xb6c9, 0xb6ca, 0xb6cb,
+0xb6cc, 0xb6cd, 0xb6ce, 0xb6cf, 0xb6d0, 0xb6d1, 0xb6d2, 0xb6d3, 0xb6d5, 0xb6d6, 0xb6d7, 0xb6d8, 0xb6d9, 0xb6da, 0xb6db,
+0xb6dc, 0xb6dd, 0xb6de, 0xb6df, 0xb6e0, 0xb6e1, 0xb6e2, 0xb6e3, 0xb6e4, 0xb6e5, 0xb6e6, 0xb6e7, 0xb6e8, 0xb6e9, 0xb6ea,
+0xb6eb, 0xb6ec, 0xb6ed, 0xb6ee, 0xb6ef, 0xb6f1, 0xb6f2, 0xb6f3, 0xb6f5, 0xb6f6, 0xb6f7, 0xb6f9, 0xb6fa, 0xb6fb, 0xb6fc,
+0xb6fd, 0xb6fe, 0xb6ff, 0xb702, 0xb703, 0xb704, 0xb706, 0xb707, 0xb708, 0xb709, 0xb70a, 0xb70b, 0xb70c, 0xb70d, 0xb70e,
+0xb70f, 0xb710, 0xb711, 0xb712, 0xb713, 0xb714, 0xb715, 0xb716, 0xb717, 0xb718, 0xb719, 0xb71a, 0xb71b, 0xb71c, 0xb71d,
+0xb71e, 0xb71f, 0xb720, 0xb721, 0xb722, 0xb723, 0xb724, 0xb725, 0xb726, 0xb727, 0xb72a, 0xb72b, 0xb72d, 0xb72e, 0xb731,
+0xb732, 0xb733, 0xb734, 0xb735, 0xb736, 0xb737, 0xb73a, 0xb73c, 0xb73d, 0xb73e, 0xb73f, 0xb740, 0xb741, 0xb742, 0xb743,
+0xb745, 0xb746, 0xb747, 0xb749, 0xb74a, 0xb74b, 0xb74d, 0xb74e, 0xb74f, 0xb750, 0xb751, 0xb752, 0xb753, 0xb756, 0xb757,
+0xb758, 0xb759, 0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb75e, 0xb75f, 0xb761, 0xb762, 0xb763, 0xb765, 0xb766, 0xb767, 0xb769,
+0xb76a, 0xb76b, 0xb76c, 0xb76d, 0xb76e, 0xb76f, 0xb772, 0xb774, 0xb776, 0xb777, 0xb778, 0xb779, 0xb77a, 0xb77b, 0xb77e,
+0xb77f, 0xb781, 0xb782, 0xb783, 0xb785, 0xb786, 0xb787, 0xb788, 0xb789, 0xb78a, 0xb78b, 0xb78e, 0xb793, 0xb794, 0xb795,
+0xb79a, 0xb79b, 0xb79d, 0xb79e, 0xb79f, 0xb7a1, 0xb7a2, 0xb7a3, 0xb7a4, 0xb7a5, 0xb7a6, 0xb7a7, 0xb7aa, 0xb7ae, 0xb7af,
+0xb7b0, 0xb7b1, 0xb7b2, 0xb7b3, 0xb7b6, 0xb7b7, 0xb7b9, 0xb7ba, 0xb7bb, 0xb7bc, 0xb7bd, 0xb7be, 0xb7bf, 0xb7c0, 0xb7c1,
+0xb7c2, 0xb7c3, 0xb7c4, 0xb7c5, 0xb7c6, 0xb7c8, 0xb7ca, 0xb7cb, 0xb7cc, 0xb7cd, 0xb7ce, 0xb7cf, 0xb7d0, 0xb7d1, 0xb7d2,
+0xb7d3, 0xb7d4, 0xb7d5, 0xb7d6, 0xb7d7, 0xb7d8, 0xb7d9, 0xb7da, 0xb7db, 0xb7dc, 0xb7dd, 0xb7de, 0xb7df, 0xb7e0, 0xb7e1,
+0xb7e2, 0xb7e3, 0xb7e4, 0xb7e5, 0xb7e6, 0xb7e7, 0xb7e8, 0xb7e9, 0xb7ea, 0xb7eb, 0xb7ee, 0xb7ef, 0xb7f1, 0xb7f2, 0xb7f3,
+0xb7f5, 0xb7f6, 0xb7f7, 0xb7f8, 0xb7f9, 0xb7fa, 0xb7fb, 0xb7fe, 0xb802, 0xb803, 0xb804, 0xb805, 0xb806, 0xb80a, 0xb80b,
+0xb80d, 0xb80e, 0xb80f, 0xb811, 0xb812, 0xb813, 0xb814, 0xb815, 0xb816, 0xb817, 0xb81a, 0xb81c, 0xb81e, 0xb81f, 0xb820,
+0xb821, 0xb822, 0xb823, 0xb826, 0xb827, 0xb829, 0xb82a, 0xb82b, 0xb82d, 0xb82e, 0xb82f, 0xb830, 0xb831, 0xb832, 0xb833,
+0xb836, 0xb83a, 0xb83b, 0xb83c, 0xb83d, 0xb83e, 0xb83f, 0xb841, 0xb842, 0xb843, 0xb845, 0xb846, 0xb847, 0xb848, 0xb849,
+0xb84a, 0xb84b, 0xb84c, 0xb84d, 0xb84e, 0xb84f, 0xb850, 0xb852, 0xb854, 0xb855, 0xb856, 0xb857, 0xb858, 0xb859, 0xb85a,
+0xb85b, 0xb85e, 0xb85f, 0xb861, 0xb862, 0xb863, 0xb865, 0xb866, 0xb867, 0xb868, 0xb869, 0xb86a, 0xb86b, 0xb86e, 0xb870,
+0xb872, 0xb873, 0xb874, 0xb875, 0xb876, 0xb877, 0xb879, 0xb87a, 0xb87b, 0xb87d, 0xb87e, 0xb87f, 0xb880, 0xb881, 0xb882,
+0xb883, 0xb884, 0xb885, 0xb886, 0xb887, 0xb888, 0xb889, 0xb88a, 0xb88b, 0xb88c, 0xb88e, 0xb88f, 0xb890, 0xb891, 0xb892,
+0xb893, 0xb894, 0xb895, 0xb896, 0xb897, 0xb898, 0xb899, 0xb89a, 0xb89b, 0xb89c, 0xb89d, 0xb89e, 0xb89f, 0xb8a0, 0xb8a1,
+0xb8a2, 0xb8a3, 0xb8a4, 0xb8a5, 0xb8a6, 0xb8a7, 0xb8a9, 0xb8aa, 0xb8ab, 0xb8ac, 0xb8ad, 0xb8ae, 0xb8af, 0xb8b1, 0xb8b2,
+0xb8b3, 0xb8b5, 0xb8b6, 0xb8b7, 0xb8b9, 0xb8ba, 0xb8bb, 0xb8bc, 0xb8bd, 0xb8be, 0xb8bf, 0xb8c2, 0xb8c4, 0xb8c6, 0xb8c7,
+0xb8c8, 0xb8c9, 0xb8ca, 0xb8cb, 0xb8cd, 0xb8ce, 0xb8cf, 0xb8d1, 0xb8d2, 0xb8d3, 0xb8d5, 0xb8d6, 0xb8d7, 0xb8d8, 0xb8d9,
+0xb8da, 0xb8db, 0xb8dc, 0xb8de, 0xb8e0, 0xb8e2, 0xb8e3, 0xb8e4, 0xb8e5, 0xb8e6, 0xb8e7, 0xb8ea, 0xb8eb, 0xb8ed, 0xb8ee,
+0xb8ef, 0xb8f1, 0xb8f2, 0xb8f3, 0xb8f4, 0xb8f5, 0xb8f6, 0xb8f7, 0xb8fa, 0xb8fc, 0xb8fe, 0xb8ff, 0xb900, 0xb901, 0xb902,
+0xb903, 0xb905, 0xb906, 0xb907, 0xb908, 0xb909, 0xb90a, 0xb90b, 0xb90c, 0xb90d, 0xb90e, 0xb90f, 0xb910, 0xb911, 0xb912,
+0xb913, 0xb914, 0xb915, 0xb916, 0xb917, 0xb919, 0xb91a, 0xb91b, 0xb91c, 0xb91d, 0xb91e, 0xb91f, 0xb921, 0xb922, 0xb923,
+0xb924, 0xb925, 0xb926, 0xb927, 0xb928, 0xb929, 0xb92a, 0xb92b, 0xb92c, 0xb92d, 0xb92e, 0xb92f, 0xb930, 0xb931, 0xb932,
+0xb933, 0xb934, 0xb935, 0xb936, 0xb937, 0xb938, 0xb939, 0xb93a, 0xb93b, 0xb93e, 0xb93f, 0xb941, 0xb942, 0xb943, 0xb945,
+0xb946, 0xb947, 0xb948, 0xb949, 0xb94a, 0xb94b, 0xb94d, 0xb94e, 0xb950, 0xb952, 0xb953, 0xb954, 0xb955, 0xb956, 0xb957,
+0xb95a, 0xb95b, 0xb95d, 0xb95e, 0xb95f, 0xb961, 0xb962, 0xb963, 0xb964, 0xb965, 0xb966, 0xb967, 0xb96a, 0xb96c, 0xb96e,
+0xb96f, 0xb970, 0xb971, 0xb972, 0xb973, 0xb976, 0xb977, 0xb979, 0xb97a, 0xb97b, 0xb97d, 0xb97e, 0xb97f, 0xb980, 0xb981,
+0xb982, 0xb983, 0xb986, 0xb988, 0xb98b, 0xb98c, 0xb98f, 0xb990, 0xb991, 0xb992, 0xb993, 0xb994, 0xb995, 0xb996, 0xb997,
+0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c, 0xb99d, 0xb99e, 0xb99f, 0xb9a0, 0xb9a1, 0xb9a2, 0xb9a3, 0xb9a4, 0xb9a5, 0xb9a6,
+0xb9a7, 0xb9a8, 0xb9a9, 0xb9aa, 0xb9ab, 0xb9ae, 0xb9af, 0xb9b1, 0xb9b2, 0xb9b3, 0xb9b5, 0xb9b6, 0xb9b7, 0xb9b8, 0xb9b9,
+0xb9ba, 0xb9bb, 0xb9be, 0xb9c0, 0xb9c2, 0xb9c3, 0xb9c4, 0xb9c5, 0xb9c6, 0xb9c7, 0xb9ca, 0xb9cb, 0xb9cd, 0xb9d3, 0xb9d4,
+0xb9d5, 0xb9d6, 0xb9d7, 0xb9da, 0xb9dc, 0xb9df, 0xb9e0, 0xb9e2, 0xb9e6, 0xb9e7, 0xb9e9, 0xb9ea, 0xb9eb, 0xb9ed, 0xb9ee,
+0xb9ef, 0xb9f0, 0xb9f1, 0xb9f2, 0xb9f3, 0xb9f6, 0xb9fb, 0xb9fc, 0xb9fd, 0xb9fe, 0xb9ff, 0xba02, 0xba03, 0xba04, 0xba05,
+0xba06, 0xba07, 0xba09, 0xba0a, 0xba0b, 0xba0c, 0xba0d, 0xba0e, 0xba0f, 0xba10, 0xba11, 0xba12, 0xba13, 0xba14, 0xba16,
+0xba17, 0xba18, 0xba19, 0xba1a, 0xba1b, 0xba1c, 0xba1d, 0xba1e, 0xba1f, 0xba20, 0xba21, 0xba22, 0xba23, 0xba24, 0xba25,
+0xba26, 0xba27, 0xba28, 0xba29, 0xba2a, 0xba2b, 0xba2c, 0xba2d, 0xba2e, 0xba2f, 0xba30, 0xba31, 0xba32, 0xba33, 0xba34,
+0xba35, 0xba36, 0xba37, 0xba3a, 0xba3b, 0xba3d, 0xba3e, 0xba3f, 0xba41, 0xba43, 0xba44, 0xba45, 0xba46, 0xba47, 0xba4a,
+0xba4c, 0xba4f, 0xba50, 0xba51, 0xba52, 0xba56, 0xba57, 0xba59, 0xba5a, 0xba5b, 0xba5d, 0xba5e, 0xba5f, 0xba60, 0xba61,
+0xba62, 0xba63, 0xba66, 0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, 0xba72, 0xba73, 0xba75, 0xba76, 0xba77, 0xba79,
+0xba7a, 0xba7b, 0xba7c, 0xba7d, 0xba7e, 0xba7f, 0xba80, 0xba81, 0xba82, 0xba86, 0xba88, 0xba89, 0xba8a, 0xba8b, 0xba8d,
+0xba8e, 0xba8f, 0xba90, 0xba91, 0xba92, 0xba93, 0xba94, 0xba95, 0xba96, 0xba97, 0xba98, 0xba99, 0xba9a, 0xba9b, 0xba9c,
+0xba9d, 0xba9e, 0xba9f, 0xbaa0, 0xbaa1, 0xbaa2, 0xbaa3, 0xbaa4, 0xbaa5, 0xbaa6, 0xbaa7, 0xbaaa, 0xbaad, 0xbaae, 0xbaaf,
+0xbab1, 0xbab3, 0xbab4, 0xbab5, 0xbab6, 0xbab7, 0xbaba, 0xbabc, 0xbabe, 0xbabf, 0xbac0, 0xbac1, 0xbac2, 0xbac3, 0xbac5,
+0xbac6, 0xbac7, 0xbac9, 0xbaca, 0xbacb, 0xbacc, 0xbacd, 0xbace, 0xbacf, 0xbad0, 0xbad1, 0xbad2, 0xbad3, 0xbad4, 0xbad5,
+0xbad6, 0xbad7, 0xbada, 0xbadb, 0xbadc, 0xbadd, 0xbade, 0xbadf, 0xbae0, 0xbae1, 0xbae2, 0xbae3, 0xbae4, 0xbae5, 0xbae6,
+0xbae7, 0xbae8, 0xbae9, 0xbaea, 0xbaeb, 0xbaec, 0xbaed, 0xbaee, 0xbaef, 0xbaf0, 0xbaf1, 0xbaf2, 0xbaf3, 0xbaf4, 0xbaf5,
+0xbaf6, 0xbaf7, 0xbaf8, 0xbaf9, 0xbafa, 0xbafb, 0xbafd, 0xbafe, 0xbaff, 0xbb01, 0xbb02, 0xbb03, 0xbb05, 0xbb06, 0xbb07,
+0xbb08, 0xbb09, 0xbb0a, 0xbb0b, 0xbb0c, 0xbb0e, 0xbb10, 0xbb12, 0xbb13, 0xbb14, 0xbb15, 0xbb16, 0xbb17, 0xbb19, 0xbb1a,
+0xbb1b, 0xbb1d, 0xbb1e, 0xbb1f, 0xbb21, 0xbb22, 0xbb23, 0xbb24, 0xbb25, 0xbb26, 0xbb27, 0xbb28, 0xbb2a, 0xbb2c, 0xbb2d,
+0xbb2e, 0xbb2f, 0xbb30, 0xbb31, 0xbb32, 0xbb33, 0xbb37, 0xbb39, 0xbb3a, 0xbb3f, 0xbb40, 0xbb41, 0xbb42, 0xbb43, 0xbb46,
+0xbb48, 0xbb4a, 0xbb4b, 0xbb4c, 0xbb4e, 0xbb51, 0xbb52, 0xbb53, 0xbb55, 0xbb56, 0xbb57, 0xbb59, 0xbb5a, 0xbb5b, 0xbb5c,
+0xbb5d, 0xbb5e, 0xbb5f, 0xbb60, 0xbb62, 0xbb64, 0xbb65, 0xbb66, 0xbb67, 0xbb68, 0xbb69, 0xbb6a, 0xbb6b, 0xbb6d, 0xbb6e,
+0xbb6f, 0xbb70, 0xbb71, 0xbb72, 0xbb73, 0xbb74, 0xbb75, 0xbb76, 0xbb77, 0xbb78, 0xbb79, 0xbb7a, 0xbb7b, 0xbb7c, 0xbb7d,
+0xbb7e, 0xbb7f, 0xbb80, 0xbb81, 0xbb82, 0xbb83, 0xbb84, 0xbb85, 0xbb86, 0xbb87, 0xbb89, 0xbb8a, 0xbb8b, 0xbb8d, 0xbb8e,
+0xbb8f, 0xbb91, 0xbb92, 0xbb93, 0xbb94, 0xbb95, 0xbb96, 0xbb97, 0xbb98, 0xbb99, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d, 0xbb9e,
+0xbb9f, 0xbba0, 0xbba1, 0xbba2, 0xbba3, 0xbba5, 0xbba6, 0xbba7, 0xbba9, 0xbbaa, 0xbbab, 0xbbad, 0xbbae, 0xbbaf, 0xbbb0,
+0xbbb1, 0xbbb2, 0xbbb3, 0xbbb5, 0xbbb6, 0xbbb8, 0xbbb9, 0xbbba, 0xbbbb, 0xbbbc, 0xbbbd, 0xbbbe, 0xbbbf, 0xbbc1, 0xbbc2,
+0xbbc3, 0xbbc5, 0xbbc6, 0xbbc7, 0xbbc9, 0xbbca, 0xbbcb, 0xbbcc, 0xbbcd, 0xbbce, 0xbbcf, 0xbbd1, 0xbbd2, 0xbbd4, 0xbbd5,
+0xbbd6, 0xbbd7, 0xbbd8, 0xbbd9, 0xbbda, 0xbbdb, 0xbbdc, 0xbbdd, 0xbbde, 0xbbdf, 0xbbe0, 0xbbe1, 0xbbe2, 0xbbe3, 0xbbe4,
+0xbbe5, 0xbbe6, 0xbbe7, 0xbbe8, 0xbbe9, 0xbbea, 0xbbeb, 0xbbec, 0xbbed, 0xbbee, 0xbbef, 0xbbf0, 0xbbf1, 0xbbf2, 0xbbf3,
+0xbbf4, 0xbbf5, 0xbbf6, 0xbbf7, 0xbbfa, 0xbbfb, 0xbbfd, 0xbbfe, 0xbc01, 0xbc03, 0xbc04, 0xbc05, 0xbc06, 0xbc07, 0xbc0a,
+0xbc0e, 0xbc10, 0xbc12, 0xbc13, 0xbc19, 0xbc1a, 0xbc20, 0xbc21, 0xbc22, 0xbc23, 0xbc26, 0xbc28, 0xbc2a, 0xbc2b, 0xbc2c,
+0xbc2e, 0xbc2f, 0xbc32, 0xbc33, 0xbc35, 0xbc36, 0xbc37, 0xbc39, 0xbc3a, 0xbc3b, 0xbc3c, 0xbc3d, 0xbc3e, 0xbc3f, 0xbc42,
+0xbc46, 0xbc47, 0xbc48, 0xbc4a, 0xbc4b, 0xbc4e, 0xbc4f, 0xbc51, 0xbc52, 0xbc53, 0xbc54, 0xbc55, 0xbc56, 0xbc57, 0xbc58,
+0xbc59, 0xbc5a, 0xbc5b, 0xbc5c, 0xbc5e, 0xbc5f, 0xbc60, 0xbc61, 0xbc62, 0xbc63, 0xbc64, 0xbc65, 0xbc66, 0xbc67, 0xbc68,
+0xbc69, 0xbc6a, 0xbc6b, 0xbc6c, 0xbc6d, 0xbc6e, 0xbc6f, 0xbc70, 0xbc71, 0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76, 0xbc77,
+0xbc78, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d, 0xbc7e, 0xbc7f, 0xbc80, 0xbc81, 0xbc82, 0xbc83, 0xbc86, 0xbc87, 0xbc89,
+0xbc8a, 0xbc8d, 0xbc8f, 0xbc90, 0xbc91, 0xbc92, 0xbc93, 0xbc96, 0xbc98, 0xbc9b, 0xbc9c, 0xbc9d, 0xbc9e, 0xbc9f, 0xbca2,
+0xbca3, 0xbca5, 0xbca6, 0xbca9, 0xbcaa, 0xbcab, 0xbcac, 0xbcad, 0xbcae, 0xbcaf, 0xbcb2, 0xbcb6, 0xbcb7, 0xbcb8, 0xbcb9,
+0xbcba, 0xbcbb, 0xbcbe, 0xbcbf, 0xbcc1, 0xbcc2, 0xbcc3, 0xbcc5, 0xbcc6, 0xbcc7, 0xbcc8, 0xbcc9, 0xbcca, 0xbccb, 0xbccc,
+0xbcce, 0xbcd2, 0xbcd3, 0xbcd4, 0xbcd6, 0xbcd7, 0xbcd9, 0xbcda, 0xbcdb, 0xbcdd, 0xbcde, 0xbcdf, 0xbce0, 0xbce1, 0xbce2,
+0xbce3, 0xbce4, 0xbce5, 0xbce6, 0xbce7, 0xbce8, 0xbce9, 0xbcea, 0xbceb, 0xbcec, 0xbced, 0xbcee, 0xbcef, 0xbcf0, 0xbcf1,
+0xbcf2, 0xbcf3, 0xbcf7, 0xbcf9, 0xbcfa, 0xbcfb, 0xbcfd, 0xbcfe, 0xbcff, 0xbd00, 0xbd01, 0xbd02, 0xbd03, 0xbd06, 0xbd08,
+0xbd0a, 0xbd0b, 0xbd0c, 0xbd0d, 0xbd0e, 0xbd0f, 0xbd11, 0xbd12, 0xbd13, 0xbd15, 0xbd16, 0xbd17, 0xbd18, 0xbd19, 0xbd1a,
+0xbd1b, 0xbd1c, 0xbd1d, 0xbd1e, 0xbd1f, 0xbd20, 0xbd21, 0xbd22, 0xbd23, 0xbd25, 0xbd26, 0xbd27, 0xbd28, 0xbd29, 0xbd2a,
+0xbd2b, 0xbd2d, 0xbd2e, 0xbd2f, 0xbd30, 0xbd31, 0xbd32, 0xbd33, 0xbd34, 0xbd35, 0xbd36, 0xbd37, 0xbd38, 0xbd39, 0xbd3a,
+0xbd3b, 0xbd3c, 0xbd3d, 0xbd3e, 0xbd3f, 0xbd41, 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, 0xbd4a, 0xbd4b, 0xbd4d,
+0xbd4e, 0xbd4f, 0xbd51, 0xbd52, 0xbd53, 0xbd54, 0xbd55, 0xbd56, 0xbd57, 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, 0xbd5e, 0xbd5f,
+0xbd60, 0xbd61, 0xbd62, 0xbd63, 0xbd65, 0xbd66, 0xbd67, 0xbd69, 0xbd6a, 0xbd6b, 0xbd6c, 0xbd6d, 0xbd6e, 0xbd6f, 0xbd70,
+0xbd71, 0xbd72, 0xbd73, 0xbd74, 0xbd75, 0xbd76, 0xbd77, 0xbd78, 0xbd79, 0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, 0xbd7e, 0xbd7f,
+0xbd82, 0xbd83, 0xbd85, 0xbd86, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f, 0xbd92, 0xbd94, 0xbd96, 0xbd97, 0xbd98, 0xbd9b,
+0xbd9d, 0xbd9e, 0xbd9f, 0xbda0, 0xbda1, 0xbda2, 0xbda3, 0xbda5, 0xbda6, 0xbda7, 0xbda8, 0xbda9, 0xbdaa, 0xbdab, 0xbdac,
+0xbdad, 0xbdae, 0xbdaf, 0xbdb1, 0xbdb2, 0xbdb3, 0xbdb4, 0xbdb5, 0xbdb6, 0xbdb7, 0xbdb9, 0xbdba, 0xbdbb, 0xbdbc, 0xbdbd,
+0xbdbe, 0xbdbf, 0xbdc0, 0xbdc1, 0xbdc2, 0xbdc3, 0xbdc4, 0xbdc5, 0xbdc6, 0xbdc7, 0xbdc8, 0xbdc9, 0xbdca, 0xbdcb, 0xbdcc,
+0xbdcd, 0xbdce, 0xbdcf, 0xbdd0, 0xbdd1, 0xbdd2, 0xbdd3, 0xbdd6, 0xbdd7, 0xbdd9, 0xbdda, 0xbddb, 0xbddd, 0xbdde, 0xbddf,
+0xbde0, 0xbde1, 0xbde2, 0xbde3, 0xbde4, 0xbde5, 0xbde6, 0xbde7, 0xbde8, 0xbdea, 0xbdeb, 0xbdec, 0xbded, 0xbdee, 0xbdef,
+0xbdf1, 0xbdf2, 0xbdf3, 0xbdf5, 0xbdf6, 0xbdf7, 0xbdf9, 0xbdfa, 0xbdfb, 0xbdfc, 0xbdfd, 0xbdfe, 0xbdff, 0xbe01, 0xbe02,
+0xbe04, 0xbe06, 0xbe07, 0xbe08, 0xbe09, 0xbe0a, 0xbe0b, 0xbe0e, 0xbe0f, 0xbe11, 0xbe12, 0xbe13, 0xbe15, 0xbe16, 0xbe17,
+0xbe18, 0xbe19, 0xbe1a, 0xbe1b, 0xbe1e, 0xbe20, 0xbe21, 0xbe22, 0xbe23, 0xbe24, 0xbe25, 0xbe26, 0xbe27, 0xbe28, 0xbe29,
+0xbe2a, 0xbe2b, 0xbe2c, 0xbe2d, 0xbe2e, 0xbe2f, 0xbe30, 0xbe31, 0xbe32, 0xbe33, 0xbe34, 0xbe35, 0xbe36, 0xbe37, 0xbe38,
+0xbe39, 0xbe3a, 0xbe3b, 0xbe3c, 0xbe3d, 0xbe3e, 0xbe3f, 0xbe40, 0xbe41, 0xbe42, 0xbe43, 0xbe46, 0xbe47, 0xbe49, 0xbe4a,
+0xbe4b, 0xbe4d, 0xbe4f, 0xbe50, 0xbe51, 0xbe52, 0xbe53, 0xbe56, 0xbe58, 0xbe5c, 0xbe5d, 0xbe5e, 0xbe5f, 0xbe62, 0xbe63,
+0xbe65, 0xbe66, 0xbe67, 0xbe69, 0xbe6b, 0xbe6c, 0xbe6d, 0xbe6e, 0xbe6f, 0xbe72, 0xbe76, 0xbe77, 0xbe78, 0xbe79, 0xbe7a,
+0xbe7e, 0xbe7f, 0xbe81, 0xbe82, 0xbe83, 0xbe85, 0xbe86, 0xbe87, 0xbe88, 0xbe89, 0xbe8a, 0xbe8b, 0xbe8e, 0xbe92, 0xbe93,
+0xbe94, 0xbe95, 0xbe96, 0xbe97, 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, 0xbe9e, 0xbe9f, 0xbea0, 0xbea1, 0xbea2, 0xbea3, 0xbea4,
+0xbea5, 0xbea6, 0xbea7, 0xbea9, 0xbeaa, 0xbeab, 0xbeac, 0xbead, 0xbeae, 0xbeaf, 0xbeb0, 0xbeb1, 0xbeb2, 0xbeb3, 0xbeb4,
+0xbeb5, 0xbeb6, 0xbeb7, 0xbeb8, 0xbeb9, 0xbeba, 0xbebb, 0xbebc, 0xbebd, 0xbebe, 0xbebf, 0xbec0, 0xbec1, 0xbec2, 0xbec3,
+0xbec4, 0xbec5, 0xbec6, 0xbec7, 0xbec8, 0xbec9, 0xbeca, 0xbecb, 0xbecc, 0xbecd, 0xbece, 0xbecf, 0xbed2, 0xbed3, 0xbed5,
+0xbed6, 0xbed9, 0xbeda, 0xbedb, 0xbedc, 0xbedd, 0xbede, 0xbedf, 0xbee1, 0xbee2, 0xbee6, 0xbee7, 0xbee8, 0xbee9, 0xbeea,
+0xbeeb, 0xbeed, 0xbeee, 0xbeef, 0xbef0, 0xbef1, 0xbef2, 0xbef3, 0xbef4, 0xbef5, 0xbef6, 0xbef7, 0xbef8, 0xbef9, 0xbefa,
+0xbefb, 0xbefc, 0xbefd, 0xbefe, 0xbeff, 0xbf00, 0xbf02, 0xbf03, 0xbf04, 0xbf05, 0xbf06, 0xbf07, 0xbf0a, 0xbf0b, 0xbf0c,
+0xbf0d, 0xbf0e, 0xbf0f, 0xbf10, 0xbf11, 0xbf12, 0xbf13, 0xbf14, 0xbf15, 0xbf16, 0xbf17, 0xbf1a, 0xbf1e, 0xbf1f, 0xbf20,
+0xbf21, 0xbf22, 0xbf23, 0xbf24, 0xbf25, 0xbf26, 0xbf27, 0xbf28, 0xbf29, 0xbf2a, 0xbf2b, 0xbf2c, 0xbf2d, 0xbf2e, 0xbf2f,
+0xbf30, 0xbf31, 0xbf32, 0xbf33, 0xbf34, 0xbf35, 0xbf36, 0xbf37, 0xbf38, 0xbf39, 0xbf3a, 0xbf3b, 0xbf3c, 0xbf3d, 0xbf3e,
+0xbf3f, 0xbf42, 0xbf43, 0xbf45, 0xbf46, 0xbf47, 0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, 0xbf4d, 0xbf4e, 0xbf4f, 0xbf52, 0xbf53,
+0xbf54, 0xbf56, 0xbf57, 0xbf58, 0xbf59, 0xbf5a, 0xbf5b, 0xbf5c, 0xbf5d, 0xbf5e, 0xbf5f, 0xbf60, 0xbf61, 0xbf62, 0xbf63,
+0xbf64, 0xbf65, 0xbf66, 0xbf67, 0xbf68, 0xbf69, 0xbf6a, 0xbf6b, 0xbf6c, 0xbf6d, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71, 0xbf72,
+0xbf73, 0xbf74, 0xbf75, 0xbf76, 0xbf77, 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c, 0xbf7d, 0xbf7e, 0xbf7f, 0xbf80, 0xbf81,
+0xbf82, 0xbf83, 0xbf84, 0xbf85, 0xbf86, 0xbf87, 0xbf88, 0xbf89, 0xbf8a, 0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f, 0xbf90,
+0xbf91, 0xbf92, 0xbf93, 0xbf95, 0xbf96, 0xbf97, 0xbf98, 0xbf99, 0xbf9a, 0xbf9b, 0xbf9c, 0xbf9d, 0xbf9e, 0xbf9f, 0xbfa0,
+0xbfa1, 0xbfa2, 0xbfa3, 0xbfa4, 0xbfa5, 0xbfa6, 0xbfa7, 0xbfa8, 0xbfa9, 0xbfaa, 0xbfab, 0xbfac, 0xbfad, 0xbfae, 0xbfaf,
+0xbfb1, 0xbfb2, 0xbfb3, 0xbfb4, 0xbfb5, 0xbfb6, 0xbfb7, 0xbfb8, 0xbfb9, 0xbfba, 0xbfbb, 0xbfbc, 0xbfbd, 0xbfbe, 0xbfbf,
+0xbfc0, 0xbfc1, 0xbfc2, 0xbfc3, 0xbfc4, 0xbfc6, 0xbfc7, 0xbfc8, 0xbfc9, 0xbfca, 0xbfcb, 0xbfce, 0xbfcf, 0xbfd1, 0xbfd2,
+0xbfd3, 0xbfd5, 0xbfd6, 0xbfd7, 0xbfd8, 0xbfd9, 0xbfda, 0xbfdb, 0xbfdd, 0xbfde, 0xbfe0, 0xbfe2, 0xbfe3, 0xbfe4, 0xbfe5,
+0xbfe6, 0xbfe7, 0xbfe8, 0xbfe9, 0xbfea, 0xbfeb, 0xbfec, 0xbfed, 0xbfee, 0xbfef, 0xbff0, 0xbff1, 0xbff2, 0xbff3, 0xbff4,
+0xbff5, 0xbff6, 0xbff7, 0xbff8, 0xbff9, 0xbffa, 0xbffb, 0xbffc, 0xbffd, 0xbffe, 0xbfff, 0xc000, 0xc001, 0xc002, 0xc003,
+0xc004, 0xc005, 0xc006, 0xc007, 0xc008, 0xc009, 0xc00a, 0xc00b, 0xc00c, 0xc00d, 0xc00e, 0xc00f, 0xc010, 0xc011, 0xc012,
+0xc013, 0xc014, 0xc015, 0xc016, 0xc017, 0xc018, 0xc019, 0xc01a, 0xc01b, 0xc01c, 0xc01d, 0xc01e, 0xc01f, 0xc020, 0xc021,
+0xc022, 0xc023, 0xc024, 0xc025, 0xc026, 0xc027, 0xc028, 0xc029, 0xc02a, 0xc02b, 0xc02c, 0xc02d, 0xc02e, 0xc02f, 0xc030,
+0xc031, 0xc032, 0xc033, 0xc034, 0xc035, 0xc036, 0xc037, 0xc038, 0xc039, 0xc03a, 0xc03b, 0xc03d, 0xc03e, 0xc03f, 0xc040,
+0xc041, 0xc042, 0xc043, 0xc044, 0xc045, 0xc046, 0xc047, 0xc048, 0xc049, 0xc04a, 0xc04b, 0xc04c, 0xc04d, 0xc04e, 0xc04f,
+0xc050, 0xc052, 0xc053, 0xc054, 0xc055, 0xc056, 0xc057, 0xc059, 0xc05a, 0xc05b, 0xc05d, 0xc05e, 0xc05f, 0xc061, 0xc062,
+0xc063, 0xc064, 0xc065, 0xc066, 0xc067, 0xc06a, 0xc06b, 0xc06c, 0xc06d, 0xc06e, 0xc06f, 0xc070, 0xc071, 0xc072, 0xc073,
+0xc074, 0xc075, 0xc076, 0xc077, 0xc078, 0xc079, 0xc07a, 0xc07b, 0xc07c, 0xc07d, 0xc07e, 0xc07f, 0xc080, 0xc081, 0xc082,
+0xc083, 0xc084, 0xc085, 0xc086, 0xc087, 0xc088, 0xc089, 0xc08a, 0xc08b, 0xc08c, 0xc08d, 0xc08e, 0xc08f, 0xc092, 0xc093,
+0xc095, 0xc096, 0xc097, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d, 0xc09e, 0xc09f, 0xc0a2, 0xc0a4, 0xc0a6, 0xc0a7, 0xc0a8,
+0xc0a9, 0xc0aa, 0xc0ab, 0xc0ae, 0xc0b1, 0xc0b2, 0xc0b7, 0xc0b8, 0xc0b9, 0xc0ba, 0xc0bb, 0xc0be, 0xc0c2, 0xc0c3, 0xc0c4,
+0xc0c6, 0xc0c7, 0xc0ca, 0xc0cb, 0xc0cd, 0xc0ce, 0xc0cf, 0xc0d1, 0xc0d2, 0xc0d3, 0xc0d4, 0xc0d5, 0xc0d6, 0xc0d7, 0xc0da,
+0xc0de, 0xc0df, 0xc0e0, 0xc0e1, 0xc0e2, 0xc0e3, 0xc0e6, 0xc0e7, 0xc0e9, 0xc0ea, 0xc0eb, 0xc0ed, 0xc0ee, 0xc0ef, 0xc0f0,
+0xc0f1, 0xc0f2, 0xc0f3, 0xc0f6, 0xc0f8, 0xc0fa, 0xc0fb, 0xc0fc, 0xc0fd, 0xc0fe, 0xc0ff, 0xc101, 0xc102, 0xc103, 0xc105,
+0xc106, 0xc107, 0xc109, 0xc10a, 0xc10b, 0xc10c, 0xc10d, 0xc10e, 0xc10f, 0xc111, 0xc112, 0xc113, 0xc114, 0xc116, 0xc117,
+0xc118, 0xc119, 0xc11a, 0xc11b, 0xc121, 0xc122, 0xc125, 0xc128, 0xc129, 0xc12a, 0xc12b, 0xc12e, 0xc132, 0xc133, 0xc134,
+0xc135, 0xc137, 0xc13a, 0xc13b, 0xc13d, 0xc13e, 0xc13f, 0xc141, 0xc142, 0xc143, 0xc144, 0xc145, 0xc146, 0xc147, 0xc14a,
+0xc14e, 0xc14f, 0xc150, 0xc151, 0xc152, 0xc153, 0xc156, 0xc157, 0xc159, 0xc15a, 0xc15b, 0xc15d, 0xc15e, 0xc15f, 0xc160,
+0xc161, 0xc162, 0xc163, 0xc166, 0xc16a, 0xc16b, 0xc16c, 0xc16d, 0xc16e, 0xc16f, 0xc171, 0xc172, 0xc173, 0xc175, 0xc176,
+0xc177, 0xc179, 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xc17e, 0xc17f, 0xc180, 0xc181, 0xc182, 0xc183, 0xc184, 0xc186, 0xc187,
+0xc188, 0xc189, 0xc18a, 0xc18b, 0xc18f, 0xc191, 0xc192, 0xc193, 0xc195, 0xc197, 0xc198, 0xc199, 0xc19a, 0xc19b, 0xc19e,
+0xc1a0, 0xc1a2, 0xc1a3, 0xc1a4, 0xc1a6, 0xc1a7, 0xc1aa, 0xc1ab, 0xc1ad, 0xc1ae, 0xc1af, 0xc1b1, 0xc1b2, 0xc1b3, 0xc1b4,
+0xc1b5, 0xc1b6, 0xc1b7, 0xc1b8, 0xc1b9, 0xc1ba, 0xc1bb, 0xc1bc, 0xc1be, 0xc1bf, 0xc1c0, 0xc1c1, 0xc1c2, 0xc1c3, 0xc1c5,
+0xc1c6, 0xc1c7, 0xc1c9, 0xc1ca, 0xc1cb, 0xc1cd, 0xc1ce, 0xc1cf, 0xc1d0, 0xc1d1, 0xc1d2, 0xc1d3, 0xc1d5, 0xc1d6, 0xc1d9,
+0xc1da, 0xc1db, 0xc1dc, 0xc1dd, 0xc1de, 0xc1df, 0xc1e1, 0xc1e2, 0xc1e3, 0xc1e5, 0xc1e6, 0xc1e7, 0xc1e9, 0xc1ea, 0xc1eb,
+0xc1ec, 0xc1ed, 0xc1ee, 0xc1ef, 0xc1f2, 0xc1f4, 0xc1f5, 0xc1f6, 0xc1f7, 0xc1f8, 0xc1f9, 0xc1fa, 0xc1fb, 0xc1fe, 0xc1ff,
+0xc201, 0xc202, 0xc203, 0xc205, 0xc206, 0xc207, 0xc208, 0xc209, 0xc20a, 0xc20b, 0xc20e, 0xc210, 0xc212, 0xc213, 0xc214,
+0xc215, 0xc216, 0xc217, 0xc21a, 0xc21b, 0xc21d, 0xc21e, 0xc221, 0xc222, 0xc223, 0xc224, 0xc225, 0xc226, 0xc227, 0xc22a,
+0xc22c, 0xc22e, 0xc230, 0xc233, 0xc235, 0xc236, 0xc237, 0xc238, 0xc239, 0xc23a, 0xc23b, 0xc23c, 0xc23d, 0xc23e, 0xc23f,
+0xc240, 0xc241, 0xc242, 0xc243, 0xc244, 0xc245, 0xc246, 0xc247, 0xc249, 0xc24a, 0xc24b, 0xc24c, 0xc24d, 0xc24e, 0xc24f,
+0xc252, 0xc253, 0xc255, 0xc256, 0xc257, 0xc259, 0xc25a, 0xc25b, 0xc25c, 0xc25d, 0xc25e, 0xc25f, 0xc261, 0xc262, 0xc263,
+0xc264, 0xc266, 0xc267, 0xc268, 0xc269, 0xc26a, 0xc26b, 0xc26e, 0xc26f, 0xc271, 0xc272, 0xc273, 0xc275, 0xc276, 0xc277,
+0xc278, 0xc279, 0xc27a, 0xc27b, 0xc27e, 0xc280, 0xc282, 0xc283, 0xc284, 0xc285, 0xc286, 0xc287, 0xc28a, 0xc28b, 0xc28c,
+0xc28d, 0xc28e, 0xc28f, 0xc291, 0xc292, 0xc293, 0xc294, 0xc295, 0xc296, 0xc297, 0xc299, 0xc29a, 0xc29c, 0xc29e, 0xc29f,
+0xc2a0, 0xc2a1, 0xc2a2, 0xc2a3, 0xc2a6, 0xc2a7, 0xc2a9, 0xc2aa, 0xc2ab, 0xc2ae, 0xc2af, 0xc2b0, 0xc2b1, 0xc2b2, 0xc2b3,
+0xc2b6, 0xc2b8, 0xc2ba, 0xc2bb, 0xc2bc, 0xc2bd, 0xc2be, 0xc2bf, 0xc2c0, 0xc2c1, 0xc2c2, 0xc2c3, 0xc2c4, 0xc2c5, 0xc2c6,
+0xc2c7, 0xc2c8, 0xc2c9, 0xc2ca, 0xc2cb, 0xc2cc, 0xc2cd, 0xc2ce, 0xc2cf, 0xc2d0, 0xc2d1, 0xc2d2, 0xc2d3, 0xc2d4, 0xc2d5,
+0xc2d6, 0xc2d7, 0xc2d8, 0xc2d9, 0xc2da, 0xc2db, 0xc2de, 0xc2df, 0xc2e1, 0xc2e2, 0xc2e5, 0xc2e6, 0xc2e7, 0xc2e8, 0xc2e9,
+0xc2ea, 0xc2ee, 0xc2f0, 0xc2f2, 0xc2f3, 0xc2f4, 0xc2f5, 0xc2f7, 0xc2fa, 0xc2fd, 0xc2fe, 0xc2ff, 0xc301, 0xc302, 0xc303,
+0xc304, 0xc305, 0xc306, 0xc307, 0xc30a, 0xc30b, 0xc30e, 0xc30f, 0xc310, 0xc311, 0xc312, 0xc316, 0xc317, 0xc319, 0xc31a,
+0xc31b, 0xc31d, 0xc31e, 0xc31f, 0xc320, 0xc321, 0xc322, 0xc323, 0xc326, 0xc327, 0xc32a, 0xc32b, 0xc32c, 0xc32d, 0xc32e,
+0xc32f, 0xc330, 0xc331, 0xc332, 0xc333, 0xc334, 0xc335, 0xc336, 0xc337, 0xc338, 0xc339, 0xc33a, 0xc33b, 0xc33c, 0xc33d,
+0xc33e, 0xc33f, 0xc340, 0xc341, 0xc342, 0xc343, 0xc344, 0xc346, 0xc347, 0xc348, 0xc349, 0xc34a, 0xc34b, 0xc34c, 0xc34d,
+0xc34e, 0xc34f, 0xc350, 0xc351, 0xc352, 0xc353, 0xc354, 0xc355, 0xc356, 0xc357, 0xc358, 0xc359, 0xc35a, 0xc35b, 0xc35c,
+0xc35d, 0xc35e, 0xc35f, 0xc360, 0xc361, 0xc362, 0xc363, 0xc364, 0xc365, 0xc366, 0xc367, 0xc36a, 0xc36b, 0xc36d, 0xc36e,
+0xc36f, 0xc371, 0xc373, 0xc374, 0xc375, 0xc376, 0xc377, 0xc37a, 0xc37b, 0xc37e, 0xc37f, 0xc380, 0xc381, 0xc382, 0xc383,
+0xc385, 0xc386, 0xc387, 0xc389, 0xc38a, 0xc38b, 0xc38d, 0xc38e, 0xc38f, 0xc390, 0xc391, 0xc392, 0xc393, 0xc394, 0xc395,
+0xc396, 0xc397, 0xc398, 0xc399, 0xc39a, 0xc39b, 0xc39c, 0xc39d, 0xc39e, 0xc39f, 0xc3a0, 0xc3a1, 0xc3a2, 0xc3a3, 0xc3a4,
+0xc3a5, 0xc3a6, 0xc3a7, 0xc3a8, 0xc3a9, 0xc3aa, 0xc3ab, 0xc3ac, 0xc3ad, 0xc3ae, 0xc3af, 0xc3b0, 0xc3b1, 0xc3b2, 0xc3b3,
+0xc3b4, 0xc3b5, 0xc3b6, 0xc3b7, 0xc3b8, 0xc3b9, 0xc3ba, 0xc3bb, 0xc3bc, 0xc3bd, 0xc3be, 0xc3bf, 0xc3c1, 0xc3c2, 0xc3c3,
+0xc3c4, 0xc3c5, 0xc3c6, 0xc3c7, 0xc3c8, 0xc3c9, 0xc3ca, 0xc3cb, 0xc3cc, 0xc3cd, 0xc3ce, 0xc3cf, 0xc3d0, 0xc3d1, 0xc3d2,
+0xc3d3, 0xc3d4, 0xc3d5, 0xc3d6, 0xc3d7, 0xc3da, 0xc3db, 0xc3dd, 0xc3de, 0xc3e1, 0xc3e3, 0xc3e4, 0xc3e5, 0xc3e6, 0xc3e7,
+0xc3ea, 0xc3eb, 0xc3ec, 0xc3ee, 0xc3ef, 0xc3f0, 0xc3f1, 0xc3f2, 0xc3f3, 0xc3f6, 0xc3f7, 0xc3f9, 0xc3fa, 0xc3fb, 0xc3fc,
+0xc3fd, 0xc3fe, 0xc3ff, 0xc400, 0xc401, 0xc402, 0xc403, 0xc404, 0xc405, 0xc406, 0xc407, 0xc409, 0xc40a, 0xc40b, 0xc40c,
+0xc40d, 0xc40e, 0xc40f, 0xc411, 0xc412, 0xc413, 0xc414, 0xc415, 0xc416, 0xc417, 0xc418, 0xc419, 0xc41a, 0xc41b, 0xc41c,
+0xc41d, 0xc41e, 0xc41f, 0xc420, 0xc421, 0xc422, 0xc423, 0xc425, 0xc426, 0xc427, 0xc428, 0xc429, 0xc42a, 0xc42b, 0xc42d,
+0xc42e, 0xc42f, 0xc431, 0xc432, 0xc433, 0xc435, 0xc436, 0xc437, 0xc438, 0xc439, 0xc43a, 0xc43b, 0xc43e, 0xc43f, 0xc440,
+0xc441, 0xc442, 0xc443, 0xc444, 0xc445, 0xc446, 0xc447, 0xc449, 0xc44a, 0xc44b, 0xc44c, 0xc44d, 0xc44e, 0xc44f, 0xc450,
+0xc451, 0xc452, 0xc453, 0xc454, 0xc455, 0xc456, 0xc457, 0xc458, 0xc459, 0xc45a, 0xc45b, 0xc45c, 0xc45d, 0xc45e, 0xc45f,
+0xc460, 0xc461, 0xc462, 0xc463, 0xc466, 0xc467, 0xc469, 0xc46a, 0xc46b, 0xc46d, 0xc46e, 0xc46f, 0xc470, 0xc471, 0xc472,
+0xc473, 0xc476, 0xc477, 0xc478, 0xc47a, 0xc47b, 0xc47c, 0xc47d, 0xc47e, 0xc47f, 0xc481, 0xc482, 0xc483, 0xc484, 0xc485,
+0xc486, 0xc487, 0xc488, 0xc489, 0xc48a, 0xc48b, 0xc48c, 0xc48d, 0xc48e, 0xc48f, 0xc490, 0xc491, 0xc492, 0xc493, 0xc495,
+0xc496, 0xc497, 0xc498, 0xc499, 0xc49a, 0xc49b, 0xc49d, 0xc49e, 0xc49f, 0xc4a0, 0xc4a1, 0xc4a2, 0xc4a3, 0xc4a4, 0xc4a5,
+0xc4a6, 0xc4a7, 0xc4a8, 0xc4a9, 0xc4aa, 0xc4ab, 0xc4ac, 0xc4ad, 0xc4ae, 0xc4af, 0xc4b0, 0xc4b1, 0xc4b2, 0xc4b3, 0xc4b4,
+0xc4b5, 0xc4b6, 0xc4b7, 0xc4b9, 0xc4ba, 0xc4bb, 0xc4bd, 0xc4be, 0xc4bf, 0xc4c0, 0xc4c1, 0xc4c2, 0xc4c3, 0xc4c4, 0xc4c5,
+0xc4c6, 0xc4c7, 0xc4c8, 0xc4c9, 0xc4ca, 0xc4cb, 0xc4cc, 0xc4cd, 0xc4ce, 0xc4cf, 0xc4d0, 0xc4d1, 0xc4d2, 0xc4d3, 0xc4d4,
+0xc4d5, 0xc4d6, 0xc4d7, 0xc4d8, 0xc4d9, 0xc4da, 0xc4db, 0xc4dc, 0xc4dd, 0xc4de, 0xc4df, 0xc4e0, 0xc4e1, 0xc4e2, 0xc4e3,
+0xc4e4, 0xc4e5, 0xc4e6, 0xc4e7, 0xc4e8, 0xc4ea, 0xc4eb, 0xc4ec, 0xc4ed, 0xc4ee, 0xc4ef, 0xc4f2, 0xc4f3, 0xc4f5, 0xc4f6,
+0xc4f7, 0xc4f9, 0xc4fb, 0xc4fc, 0xc4fd, 0xc4fe, 0xc502, 0xc503, 0xc504, 0xc505, 0xc506, 0xc507, 0xc508, 0xc509, 0xc50a,
+0xc50b, 0xc50d, 0xc50e, 0xc50f, 0xc511, 0xc512, 0xc513, 0xc515, 0xc516, 0xc517, 0xc518, 0xc519, 0xc51a, 0xc51b, 0xc51d,
+0xc51e, 0xc51f, 0xc520, 0xc521, 0xc522, 0xc523, 0xc524, 0xc525, 0xc526, 0xc527, 0xc52a, 0xc52b, 0xc52d, 0xc52e, 0xc52f,
+0xc531, 0xc532, 0xc533, 0xc534, 0xc535, 0xc536, 0xc537, 0xc53a, 0xc53c, 0xc53e, 0xc53f, 0xc540, 0xc541, 0xc542, 0xc543,
+0xc546, 0xc547, 0xc54b, 0xc54f, 0xc550, 0xc551, 0xc552, 0xc556, 0xc55a, 0xc55b, 0xc55c, 0xc55f, 0xc562, 0xc563, 0xc565,
+0xc566, 0xc567, 0xc569, 0xc56a, 0xc56b, 0xc56c, 0xc56d, 0xc56e, 0xc56f, 0xc572, 0xc576, 0xc577, 0xc578, 0xc579, 0xc57a,
+0xc57b, 0xc57e, 0xc57f, 0xc581, 0xc582, 0xc583, 0xc585, 0xc586, 0xc588, 0xc589, 0xc58a, 0xc58b, 0xc58e, 0xc590, 0xc592,
+0xc593, 0xc594, 0xc596, 0xc599, 0xc59a, 0xc59b, 0xc59d, 0xc59e, 0xc59f, 0xc5a1, 0xc5a2, 0xc5a3, 0xc5a4, 0xc5a5, 0xc5a6,
+0xc5a7, 0xc5a8, 0xc5aa, 0xc5ab, 0xc5ac, 0xc5ad, 0xc5ae, 0xc5af, 0xc5b0, 0xc5b1, 0xc5b2, 0xc5b3, 0xc5b6, 0xc5b7, 0xc5ba,
+0xc5bf, 0xc5c0, 0xc5c1, 0xc5c2, 0xc5c3, 0xc5cb, 0xc5cd, 0xc5cf, 0xc5d2, 0xc5d3, 0xc5d5, 0xc5d6, 0xc5d7, 0xc5d9, 0xc5da,
+0xc5db, 0xc5dc, 0xc5dd, 0xc5de, 0xc5df, 0xc5e2, 0xc5e4, 0xc5e6, 0xc5e7, 0xc5e8, 0xc5e9, 0xc5ea, 0xc5eb, 0xc5ef, 0xc5f1,
+0xc5f2, 0xc5f3, 0xc5f5, 0xc5f8, 0xc5f9, 0xc5fa, 0xc5fb, 0xc602, 0xc603, 0xc604, 0xc609, 0xc60a, 0xc60b, 0xc60d, 0xc60e,
+0xc60f, 0xc611, 0xc612, 0xc613, 0xc614, 0xc615, 0xc616, 0xc617, 0xc61a, 0xc61d, 0xc61e, 0xc61f, 0xc620, 0xc621, 0xc622,
+0xc623, 0xc626, 0xc627, 0xc629, 0xc62a, 0xc62b, 0xc62f, 0xc631, 0xc632, 0xc636, 0xc638, 0xc63a, 0xc63c, 0xc63d, 0xc63e,
+0xc63f, 0xc642, 0xc643, 0xc645, 0xc646, 0xc647, 0xc649, 0xc64a, 0xc64b, 0xc64c, 0xc64d, 0xc64e, 0xc64f, 0xc652, 0xc656,
+0xc657, 0xc658, 0xc659, 0xc65a, 0xc65b, 0xc65e, 0xc65f, 0xc661, 0xc662, 0xc663, 0xc664, 0xc665, 0xc666, 0xc667, 0xc668,
+0xc669, 0xc66a, 0xc66b, 0xc66d, 0xc66e, 0xc670, 0xc672, 0xc673, 0xc674, 0xc675, 0xc676, 0xc677, 0xc67a, 0xc67b, 0xc67d,
+0xc67e, 0xc67f, 0xc681, 0xc682, 0xc683, 0xc684, 0xc685, 0xc686, 0xc687, 0xc68a, 0xc68c, 0xc68e, 0xc68f, 0xc690, 0xc691,
+0xc692, 0xc693, 0xc696, 0xc697, 0xc699, 0xc69a, 0xc69b, 0xc69d, 0xc69e, 0xc69f, 0xc6a0, 0xc6a1, 0xc6a2, 0xc6a3, 0xc6a6,
+0xc6a8, 0xc6aa, 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b2, 0xc6b3, 0xc6b5, 0xc6b6, 0xc6b7, 0xc6bb, 0xc6bc, 0xc6bd,
+0xc6be, 0xc6bf, 0xc6c2, 0xc6c4, 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb, 0xc6ce, 0xc6cf, 0xc6d1, 0xc6d2, 0xc6d3,
+0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da, 0xc6db, 0xc6de, 0xc6df, 0xc6e2, 0xc6e3, 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7,
+0xc6ea, 0xc6eb, 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f1, 0xc6f2, 0xc6f3, 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6fa, 0xc6fb, 0xc6fc,
+0xc6fe, 0xc6ff, 0xc700, 0xc701, 0xc702, 0xc703, 0xc706, 0xc707, 0xc709, 0xc70a, 0xc70b, 0xc70d, 0xc70e, 0xc70f, 0xc710,
+0xc711, 0xc712, 0xc713, 0xc716, 0xc718, 0xc71a, 0xc71b, 0xc71c, 0xc71d, 0xc71e, 0xc71f, 0xc722, 0xc723, 0xc725, 0xc726,
+0xc727, 0xc729, 0xc72a, 0xc72b, 0xc72c, 0xc72d, 0xc72e, 0xc72f, 0xc732, 0xc734, 0xc736, 0xc738, 0xc739, 0xc73a, 0xc73b,
+0xc73e, 0xc73f, 0xc741, 0xc742, 0xc743, 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74b, 0xc74e, 0xc750, 0xc759, 0xc75a,
+0xc75b, 0xc75d, 0xc75e, 0xc75f, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766, 0xc767, 0xc769, 0xc76a, 0xc76c, 0xc76d,
+0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0xc776, 0xc777, 0xc779, 0xc77a, 0xc77b, 0xc77f, 0xc780, 0xc781, 0xc782,
+0xc786, 0xc78b, 0xc78c, 0xc78d, 0xc78f, 0xc792, 0xc793, 0xc795, 0xc799, 0xc79b, 0xc79c, 0xc79d, 0xc79e, 0xc79f, 0xc7a2,
+0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ae, 0xc7af, 0xc7b1, 0xc7b2, 0xc7b3, 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9,
+0xc7ba, 0xc7bb, 0xc7be, 0xc7c2, 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, 0xc7ca, 0xc7cb, 0xc7cd, 0xc7cf, 0xc7d1, 0xc7d2,
+0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3,
+0xc7e5, 0xc7e6, 0xc7e7, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4, 0xc7f5,
+0xc7f6, 0xc7f7, 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe, 0xc7ff, 0xc802, 0xc803, 0xc805, 0xc806, 0xc807,
+0xc809, 0xc80b, 0xc80c, 0xc80d, 0xc80e, 0xc80f, 0xc812, 0xc814, 0xc817, 0xc818, 0xc819, 0xc81a, 0xc81b, 0xc81e, 0xc81f,
+0xc821, 0xc822, 0xc823, 0xc825, 0xc826, 0xc827, 0xc828, 0xc829, 0xc82a, 0xc82b, 0xc82e, 0xc830, 0xc832, 0xc833, 0xc834,
+0xc835, 0xc836, 0xc837, 0xc839, 0xc83a, 0xc83b, 0xc83d, 0xc83e, 0xc83f, 0xc841, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846,
+0xc847, 0xc84a, 0xc84b, 0xc84e, 0xc84f, 0xc850, 0xc851, 0xc852, 0xc853, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, 0xc85a,
+0xc85b, 0xc85c, 0xc85d, 0xc85e, 0xc85f, 0xc860, 0xc861, 0xc862, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869,
+0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc872, 0xc873, 0xc875, 0xc876, 0xc877, 0xc879, 0xc87b, 0xc87c, 0xc87d,
+0xc87e, 0xc87f, 0xc882, 0xc884, 0xc888, 0xc889, 0xc88a, 0xc88e, 0xc88f, 0xc890, 0xc891, 0xc892, 0xc893, 0xc895, 0xc896,
+0xc897, 0xc898, 0xc899, 0xc89a, 0xc89b, 0xc89c, 0xc89e, 0xc8a0, 0xc8a2, 0xc8a3, 0xc8a4, 0xc8a5, 0xc8a6, 0xc8a7, 0xc8a9,
+0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae, 0xc8af, 0xc8b0, 0xc8b1, 0xc8b2, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6, 0xc8b7, 0xc8b8,
+0xc8b9, 0xc8ba, 0xc8bb, 0xc8be, 0xc8bf, 0xc8c0, 0xc8c1, 0xc8c2, 0xc8c3, 0xc8c5, 0xc8c6, 0xc8c7, 0xc8c9, 0xc8ca, 0xc8cb,
+0xc8cd, 0xc8ce, 0xc8cf, 0xc8d0, 0xc8d1, 0xc8d2, 0xc8d3, 0xc8d6, 0xc8d8, 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df,
+0xc8e2, 0xc8e3, 0xc8e5, 0xc8e6, 0xc8e7, 0xc8e8, 0xc8e9, 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0, 0xc8f1,
+0xc8f2, 0xc8f3, 0xc8f4, 0xc8f6, 0xc8f7, 0xc8f8, 0xc8f9, 0xc8fa, 0xc8fb, 0xc8fe, 0xc8ff, 0xc901, 0xc902, 0xc903, 0xc907,
+0xc908, 0xc909, 0xc90a, 0xc90b, 0xc90e, 0xc910, 0xc912, 0xc913, 0xc914, 0xc915, 0xc916, 0xc917, 0xc919, 0xc91a, 0xc91b,
+0xc91c, 0xc91d, 0xc91e, 0xc91f, 0xc920, 0xc921, 0xc922, 0xc923, 0xc924, 0xc925, 0xc926, 0xc927, 0xc928, 0xc929, 0xc92a,
+0xc92b, 0xc92d, 0xc92e, 0xc92f, 0xc930, 0xc931, 0xc932, 0xc933, 0xc935, 0xc936, 0xc937, 0xc938, 0xc939, 0xc93a, 0xc93b,
+0xc93c, 0xc93d, 0xc93e, 0xc93f, 0xc940, 0xc941, 0xc942, 0xc943, 0xc944, 0xc945, 0xc946, 0xc947, 0xc948, 0xc949, 0xc94a,
+0xc94b, 0xc94c, 0xc94d, 0xc94e, 0xc94f, 0xc952, 0xc953, 0xc955, 0xc956, 0xc957, 0xc959, 0xc95a, 0xc95b, 0xc95c, 0xc95d,
+0xc95e, 0xc95f, 0xc962, 0xc964, 0xc965, 0xc966, 0xc967, 0xc968, 0xc969, 0xc96a, 0xc96b, 0xc96d, 0xc96e, 0xc96f, 0xc971,
+0xc972, 0xc973, 0xc975, 0xc976, 0xc977, 0xc978, 0xc979, 0xc97a, 0xc97b, 0xc97d, 0xc97e, 0xc97f, 0xc980, 0xc981, 0xc982,
+0xc983, 0xc984, 0xc985, 0xc986, 0xc987, 0xc98a, 0xc98b, 0xc98d, 0xc98e, 0xc98f, 0xc991, 0xc992, 0xc993, 0xc994, 0xc995,
+0xc996, 0xc997, 0xc99a, 0xc99c, 0xc99e, 0xc99f, 0xc9a0, 0xc9a1, 0xc9a2, 0xc9a3, 0xc9a4, 0xc9a5, 0xc9a6, 0xc9a7, 0xc9a8,
+0xc9a9, 0xc9aa, 0xc9ab, 0xc9ac, 0xc9ad, 0xc9ae, 0xc9af, 0xc9b0, 0xc9b1, 0xc9b2, 0xc9b3, 0xc9b4, 0xc9b5, 0xc9b6, 0xc9b7,
+0xc9b8, 0xc9b9, 0xc9ba, 0xc9bb, 0xc9bc, 0xc9bd, 0xc9be, 0xc9bf, 0xc9c2, 0xc9c3, 0xc9c5, 0xc9c6, 0xc9c9, 0xc9cb, 0xc9cc,
+0xc9cd, 0xc9ce, 0xc9cf, 0xc9d2, 0xc9d4, 0xc9d7, 0xc9d8, 0xc9db, 0xc9de, 0xc9df, 0xc9e1, 0xc9e3, 0xc9e5, 0xc9e6, 0xc9e8,
+0xc9e9, 0xc9ea, 0xc9eb, 0xc9ee, 0xc9f2, 0xc9f3, 0xc9f4, 0xc9f5, 0xc9f6, 0xc9f7, 0xc9fa, 0xc9fb, 0xc9fd, 0xc9fe, 0xc9ff,
+0xca01, 0xca02, 0xca03, 0xca04, 0xca05, 0xca06, 0xca07, 0xca0a, 0xca0e, 0xca0f, 0xca10, 0xca11, 0xca12, 0xca13, 0xca15,
+0xca16, 0xca17, 0xca19, 0xca1a, 0xca1b, 0xca1c, 0xca1d, 0xca1e, 0xca1f, 0xca20, 0xca21, 0xca22, 0xca23, 0xca24, 0xca25,
+0xca26, 0xca27, 0xca28, 0xca2a, 0xca2b, 0xca2c, 0xca2d, 0xca2e, 0xca2f, 0xca30, 0xca31, 0xca32, 0xca33, 0xca34, 0xca35,
+0xca36, 0xca37, 0xca38, 0xca39, 0xca3a, 0xca3b, 0xca3c, 0xca3d, 0xca3e, 0xca3f, 0xca40, 0xca41, 0xca42, 0xca43, 0xca44,
+0xca45, 0xca46, 0xca47, 0xca48, 0xca49, 0xca4a, 0xca4b, 0xca4e, 0xca4f, 0xca51, 0xca52, 0xca53, 0xca55, 0xca56, 0xca57,
+0xca58, 0xca59, 0xca5a, 0xca5b, 0xca5e, 0xca62, 0xca63, 0xca64, 0xca65, 0xca66, 0xca67, 0xca69, 0xca6a, 0xca6b, 0xca6c,
+0xca6d, 0xca6e, 0xca6f, 0xca70, 0xca71, 0xca72, 0xca73, 0xca74, 0xca75, 0xca76, 0xca77, 0xca78, 0xca79, 0xca7a, 0xca7b,
+0xca7c, 0xca7e, 0xca7f, 0xca80, 0xca81, 0xca82, 0xca83, 0xca85, 0xca86, 0xca87, 0xca88, 0xca89, 0xca8a, 0xca8b, 0xca8c,
+0xca8d, 0xca8e, 0xca8f, 0xca90, 0xca91, 0xca92, 0xca93, 0xca94, 0xca95, 0xca96, 0xca97, 0xca99, 0xca9a, 0xca9b, 0xca9c,
+0xca9d, 0xca9e, 0xca9f, 0xcaa0, 0xcaa1, 0xcaa2, 0xcaa3, 0xcaa4, 0xcaa5, 0xcaa6, 0xcaa7, 0xcaa8, 0xcaa9, 0xcaaa, 0xcaab,
+0xcaac, 0xcaad, 0xcaae, 0xcaaf, 0xcab0, 0xcab1, 0xcab2, 0xcab3, 0xcab4, 0xcab5, 0xcab6, 0xcab7, 0xcab8, 0xcab9, 0xcaba,
+0xcabb, 0xcabe, 0xcabf, 0xcac1, 0xcac2, 0xcac3, 0xcac5, 0xcac6, 0xcac7, 0xcac8, 0xcac9, 0xcaca, 0xcacb, 0xcace, 0xcad0,
+0xcad2, 0xcad4, 0xcad5, 0xcad6, 0xcad7, 0xcada, 0xcadb, 0xcadc, 0xcadd, 0xcade, 0xcadf, 0xcae1, 0xcae2, 0xcae3, 0xcae4,
+0xcae5, 0xcae6, 0xcae7, 0xcae8, 0xcae9, 0xcaea, 0xcaeb, 0xcaed, 0xcaee, 0xcaef, 0xcaf0, 0xcaf1, 0xcaf2, 0xcaf3, 0xcaf5,
+0xcaf6, 0xcaf7, 0xcaf8, 0xcaf9, 0xcafa, 0xcafb, 0xcafc, 0xcafd, 0xcafe, 0xcaff, 0xcb00, 0xcb01, 0xcb02, 0xcb03, 0xcb04,
+0xcb05, 0xcb06, 0xcb07, 0xcb09, 0xcb0a, 0xcb0b, 0xcb0c, 0xcb0d, 0xcb0e, 0xcb0f, 0xcb11, 0xcb12, 0xcb13, 0xcb15, 0xcb16,
+0xcb17, 0xcb19, 0xcb1a, 0xcb1b, 0xcb1c, 0xcb1d, 0xcb1e, 0xcb1f, 0xcb22, 0xcb23, 0xcb24, 0xcb25, 0xcb26, 0xcb27, 0xcb28,
+0xcb29, 0xcb2a, 0xcb2b, 0xcb2c, 0xcb2d, 0xcb2e, 0xcb2f, 0xcb30, 0xcb31, 0xcb32, 0xcb33, 0xcb34, 0xcb35, 0xcb36, 0xcb37,
+0xcb38, 0xcb39, 0xcb3a, 0xcb3b, 0xcb3c, 0xcb3d, 0xcb3e, 0xcb3f, 0xcb40, 0xcb42, 0xcb43, 0xcb44, 0xcb45, 0xcb46, 0xcb47,
+0xcb4a, 0xcb4b, 0xcb4d, 0xcb4e, 0xcb4f, 0xcb51, 0xcb52, 0xcb53, 0xcb54, 0xcb55, 0xcb56, 0xcb57, 0xcb5a, 0xcb5b, 0xcb5c,
+0xcb5e, 0xcb5f, 0xcb60, 0xcb61, 0xcb62, 0xcb63, 0xcb65, 0xcb66, 0xcb67, 0xcb68, 0xcb69, 0xcb6a, 0xcb6b, 0xcb6c, 0xcb6d,
+0xcb6e, 0xcb6f, 0xcb70, 0xcb71, 0xcb72, 0xcb73, 0xcb74, 0xcb75, 0xcb76, 0xcb77, 0xcb7a, 0xcb7b, 0xcb7c, 0xcb7d, 0xcb7e,
+0xcb7f, 0xcb80, 0xcb81, 0xcb82, 0xcb83, 0xcb84, 0xcb85, 0xcb86, 0xcb87, 0xcb88, 0xcb89, 0xcb8a, 0xcb8b, 0xcb8c, 0xcb8d,
+0xcb8e, 0xcb8f, 0xcb90, 0xcb91, 0xcb92, 0xcb93, 0xcb94, 0xcb95, 0xcb96, 0xcb97, 0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0xcb9d,
+0xcb9e, 0xcb9f, 0xcba0, 0xcba1, 0xcba2, 0xcba3, 0xcba4, 0xcba5, 0xcba6, 0xcba7, 0xcba8, 0xcba9, 0xcbaa, 0xcbab, 0xcbac,
+0xcbad, 0xcbae, 0xcbaf, 0xcbb0, 0xcbb1, 0xcbb2, 0xcbb3, 0xcbb4, 0xcbb5, 0xcbb6, 0xcbb7, 0xcbb9, 0xcbba, 0xcbbb, 0xcbbc,
+0xcbbd, 0xcbbe, 0xcbbf, 0xcbc0, 0xcbc1, 0xcbc2, 0xcbc3, 0xcbc4, 0xcbc5, 0xcbc6, 0xcbc7, 0xcbc8, 0xcbc9, 0xcbca, 0xcbcb,
+0xcbcc, 0xcbcd, 0xcbce, 0xcbcf, 0xcbd0, 0xcbd1, 0xcbd2, 0xcbd3, 0xcbd5, 0xcbd6, 0xcbd7, 0xcbd8, 0xcbd9, 0xcbda, 0xcbdb,
+0xcbdc, 0xcbdd, 0xcbde, 0xcbdf, 0xcbe0, 0xcbe1, 0xcbe2, 0xcbe3, 0xcbe5, 0xcbe6, 0xcbe8, 0xcbea, 0xcbeb, 0xcbec, 0xcbed,
+0xcbee, 0xcbef, 0xcbf0, 0xcbf1, 0xcbf2, 0xcbf3, 0xcbf4, 0xcbf5, 0xcbf6, 0xcbf7, 0xcbf8, 0xcbf9, 0xcbfa, 0xcbfb, 0xcbfc,
+0xcbfd, 0xcbfe, 0xcbff, 0xcc00, 0xcc01, 0xcc02, 0xcc03, 0xcc04, 0xcc05, 0xcc06, 0xcc07, 0xcc08, 0xcc09, 0xcc0a, 0xcc0b,
+0xcc0e, 0xcc0f, 0xcc11, 0xcc12, 0xcc13, 0xcc15, 0xcc16, 0xcc17, 0xcc18, 0xcc19, 0xcc1a, 0xcc1b, 0xcc1e, 0xcc1f, 0xcc20,
+0xcc23, 0xcc24, 0xcc25, 0xcc26, 0xcc2a, 0xcc2b, 0xcc2d, 0xcc2f, 0xcc31, 0xcc32, 0xcc33, 0xcc34, 0xcc35, 0xcc36, 0xcc37,
+0xcc3a, 0xcc3f, 0xcc40, 0xcc41, 0xcc42, 0xcc43, 0xcc46, 0xcc47, 0xcc49, 0xcc4a, 0xcc4b, 0xcc4d, 0xcc4e, 0xcc4f, 0xcc50,
+0xcc51, 0xcc52, 0xcc53, 0xcc56, 0xcc5a, 0xcc5b, 0xcc5c, 0xcc5d, 0xcc5e, 0xcc5f, 0xcc61, 0xcc62, 0xcc63, 0xcc65, 0xcc67,
+0xcc69, 0xcc6a, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e, 0xcc6f, 0xcc71, 0xcc72, 0xcc73, 0xcc74, 0xcc76, 0xcc77, 0xcc78, 0xcc79,
+0xcc7a, 0xcc7b, 0xcc7c, 0xcc7d, 0xcc7e, 0xcc7f, 0xcc80, 0xcc81, 0xcc82, 0xcc83, 0xcc84, 0xcc85, 0xcc86, 0xcc87, 0xcc88,
+0xcc89, 0xcc8a, 0xcc8b, 0xcc8c, 0xcc8d, 0xcc8e, 0xcc8f, 0xcc90, 0xcc91, 0xcc92, 0xcc93, 0xcc94, 0xcc95, 0xcc96, 0xcc97,
+0xcc9a, 0xcc9b, 0xcc9d, 0xcc9e, 0xcc9f, 0xcca1, 0xcca2, 0xcca3, 0xcca4, 0xcca5, 0xcca6, 0xcca7, 0xccaa, 0xccae, 0xccaf,
+0xccb0, 0xccb1, 0xccb2, 0xccb3, 0xccb6, 0xccb7, 0xccb9, 0xccba, 0xccbb, 0xccbd, 0xccbe, 0xccbf, 0xccc0, 0xccc1, 0xccc2,
+0xccc3, 0xccc6, 0xccc8, 0xccca, 0xcccb, 0xcccc, 0xcccd, 0xccce, 0xcccf, 0xccd1, 0xccd2, 0xccd3, 0xccd5, 0xccd6, 0xccd7,
+0xccd8, 0xccd9, 0xccda, 0xccdb, 0xccdc, 0xccdd, 0xccde, 0xccdf, 0xcce0, 0xcce1, 0xcce2, 0xcce3, 0xcce5, 0xcce6, 0xcce7,
+0xcce8, 0xcce9, 0xccea, 0xcceb, 0xcced, 0xccee, 0xccef, 0xccf1, 0xccf2, 0xccf3, 0xccf4, 0xccf5, 0xccf6, 0xccf7, 0xccf8,
+0xccf9, 0xccfa, 0xccfb, 0xccfc, 0xccfd, 0xccfe, 0xccff, 0xcd00, 0xcd02, 0xcd03, 0xcd04, 0xcd05, 0xcd06, 0xcd07, 0xcd0a,
+0xcd0b, 0xcd0d, 0xcd0e, 0xcd0f, 0xcd11, 0xcd12, 0xcd13, 0xcd14, 0xcd15, 0xcd16, 0xcd17, 0xcd1a, 0xcd1c, 0xcd1e, 0xcd1f,
+0xcd20, 0xcd21, 0xcd22, 0xcd23, 0xcd25, 0xcd26, 0xcd27, 0xcd29, 0xcd2a, 0xcd2b, 0xcd2d, 0xcd2e, 0xcd2f, 0xcd30, 0xcd31,
+0xcd32, 0xcd33, 0xcd34, 0xcd35, 0xcd36, 0xcd37, 0xcd38, 0xcd3a, 0xcd3b, 0xcd3c, 0xcd3d, 0xcd3e, 0xcd3f, 0xcd40, 0xcd41,
+0xcd42, 0xcd43, 0xcd44, 0xcd45, 0xcd46, 0xcd47, 0xcd48, 0xcd49, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e, 0xcd4f, 0xcd50,
+0xcd51, 0xcd52, 0xcd53, 0xcd54, 0xcd55, 0xcd56, 0xcd57, 0xcd58, 0xcd59, 0xcd5a, 0xcd5b, 0xcd5d, 0xcd5e, 0xcd5f, 0xcd61,
+0xcd62, 0xcd63, 0xcd65, 0xcd66, 0xcd67, 0xcd68, 0xcd69, 0xcd6a, 0xcd6b, 0xcd6e, 0xcd70, 0xcd72, 0xcd73, 0xcd74, 0xcd75,
+0xcd76, 0xcd77, 0xcd79, 0xcd7a, 0xcd7b, 0xcd7c, 0xcd7d, 0xcd7e, 0xcd7f, 0xcd80, 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xcd85,
+0xcd86, 0xcd87, 0xcd89, 0xcd8a, 0xcd8b, 0xcd8c, 0xcd8d, 0xcd8e, 0xcd8f, 0xcd90, 0xcd91, 0xcd92, 0xcd93, 0xcd96, 0xcd97,
+0xcd99, 0xcd9a, 0xcd9b, 0xcd9d, 0xcd9e, 0xcd9f, 0xcda0, 0xcda1, 0xcda2, 0xcda3, 0xcda6, 0xcda8, 0xcdaa, 0xcdab, 0xcdac,
+0xcdad, 0xcdae, 0xcdaf, 0xcdb1, 0xcdb2, 0xcdb3, 0xcdb4, 0xcdb5, 0xcdb6, 0xcdb7, 0xcdb8, 0xcdb9, 0xcdba, 0xcdbb, 0xcdbc,
+0xcdbd, 0xcdbe, 0xcdbf, 0xcdc0, 0xcdc1, 0xcdc2, 0xcdc3, 0xcdc5, 0xcdc6, 0xcdc7, 0xcdc8, 0xcdc9, 0xcdca, 0xcdcb, 0xcdcd,
+0xcdce, 0xcdcf, 0xcdd1, 0xcdd2, 0xcdd3, 0xcdd4, 0xcdd5, 0xcdd6, 0xcdd7, 0xcdd8, 0xcdd9, 0xcdda, 0xcddb, 0xcddc, 0xcddd,
+0xcdde, 0xcddf, 0xcde0, 0xcde1, 0xcde2, 0xcde3, 0xcde4, 0xcde5, 0xcde6, 0xcde7, 0xcde9, 0xcdea, 0xcdeb, 0xcded, 0xcdee,
+0xcdef, 0xcdf1, 0xcdf2, 0xcdf3, 0xcdf4, 0xcdf5, 0xcdf6, 0xcdf7, 0xcdfa, 0xcdfc, 0xcdfe, 0xcdff, 0xce00, 0xce01, 0xce02,
+0xce03, 0xce05, 0xce06, 0xce07, 0xce09, 0xce0a, 0xce0b, 0xce0d, 0xce0e, 0xce0f, 0xce10, 0xce11, 0xce12, 0xce13, 0xce15,
+0xce16, 0xce17, 0xce18, 0xce1a, 0xce1b, 0xce1c, 0xce1d, 0xce1e, 0xce1f, 0xce22, 0xce23, 0xce25, 0xce26, 0xce27, 0xce29,
+0xce2a, 0xce2b, 0xce2c, 0xce2d, 0xce2e, 0xce2f, 0xce32, 0xce34, 0xce36, 0xce37, 0xce38, 0xce39, 0xce3a, 0xce3b, 0xce3c,
+0xce3d, 0xce3e, 0xce3f, 0xce40, 0xce41, 0xce42, 0xce43, 0xce44, 0xce45, 0xce46, 0xce47, 0xce48, 0xce49, 0xce4a, 0xce4b,
+0xce4c, 0xce4d, 0xce4e, 0xce4f, 0xce50, 0xce51, 0xce52, 0xce53, 0xce54, 0xce55, 0xce56, 0xce57, 0xce5a, 0xce5b, 0xce5d,
+0xce5e, 0xce62, 0xce63, 0xce64, 0xce65, 0xce66, 0xce67, 0xce6a, 0xce6c, 0xce6e, 0xce6f, 0xce70, 0xce71, 0xce72, 0xce73,
+0xce76, 0xce77, 0xce79, 0xce7a, 0xce7b, 0xce7d, 0xce7e, 0xce7f, 0xce80, 0xce81, 0xce82, 0xce83, 0xce86, 0xce88, 0xce8a,
+0xce8b, 0xce8c, 0xce8d, 0xce8e, 0xce8f, 0xce92, 0xce93, 0xce95, 0xce96, 0xce97, 0xce99, 0xce9a, 0xce9b, 0xce9c, 0xce9d,
+0xce9e, 0xce9f, 0xcea2, 0xcea6, 0xcea7, 0xcea8, 0xcea9, 0xceaa, 0xceab, 0xceae, 0xceaf, 0xceb0, 0xceb1, 0xceb2, 0xceb3,
+0xceb4, 0xceb5, 0xceb6, 0xceb7, 0xceb8, 0xceb9, 0xceba, 0xcebb, 0xcebc, 0xcebd, 0xcebe, 0xcebf, 0xcec0, 0xcec2, 0xcec3,
+0xcec4, 0xcec5, 0xcec6, 0xcec7, 0xcec8, 0xcec9, 0xceca, 0xcecb, 0xcecc, 0xcecd, 0xcece, 0xcecf, 0xced0, 0xced1, 0xced2,
+0xced3, 0xced4, 0xced5, 0xced6, 0xced7, 0xced8, 0xced9, 0xceda, 0xcedb, 0xcedc, 0xcedd, 0xcede, 0xcedf, 0xcee0, 0xcee1,
+0xcee2, 0xcee3, 0xcee6, 0xcee7, 0xcee9, 0xceea, 0xceed, 0xceee, 0xceef, 0xcef0, 0xcef1, 0xcef2, 0xcef3, 0xcef6, 0xcefa,
+0xcefb, 0xcefc, 0xcefd, 0xcefe, 0xceff, 0xcf02, 0xcf03, 0xcf05, 0xcf06, 0xcf07, 0xcf09, 0xcf0a, 0xcf0b, 0xcf0c, 0xcf0d,
+0xcf0e, 0xcf0f, 0xcf12, 0xcf14, 0xcf16, 0xcf17, 0xcf18, 0xcf19, 0xcf1a, 0xcf1b, 0xcf1d, 0xcf1e, 0xcf1f, 0xcf21, 0xcf22,
+0xcf23, 0xcf25, 0xcf26, 0xcf27, 0xcf28, 0xcf29, 0xcf2a, 0xcf2b, 0xcf2e, 0xcf32, 0xcf33, 0xcf34, 0xcf35, 0xcf36, 0xcf37,
+0xcf39, 0xcf3a, 0xcf3b, 0xcf3c, 0xcf3d, 0xcf3e, 0xcf3f, 0xcf40, 0xcf41, 0xcf42, 0xcf43, 0xcf44, 0xcf45, 0xcf46, 0xcf47,
+0xcf48, 0xcf49, 0xcf4a, 0xcf4b, 0xcf4c, 0xcf4d, 0xcf4e, 0xcf4f, 0xcf50, 0xcf51, 0xcf52, 0xcf53, 0xcf56, 0xcf57, 0xcf59,
+0xcf5a, 0xcf5b, 0xcf5d, 0xcf5e, 0xcf5f, 0xcf60, 0xcf61, 0xcf62, 0xcf63, 0xcf66, 0xcf68, 0xcf6a, 0xcf6b, 0xcf6c, 0xcf6d,
+0xcf6e, 0xcf6f, 0xcf72, 0xcf73, 0xcf75, 0xcf76, 0xcf77, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, 0xcf7e, 0xcf7f, 0xcf81,
+0xcf82, 0xcf83, 0xcf84, 0xcf86, 0xcf87, 0xcf88, 0xcf89, 0xcf8a, 0xcf8b, 0xcf8d, 0xcf8e, 0xcf8f, 0xcf90, 0xcf91, 0xcf92,
+0xcf93, 0xcf94, 0xcf95, 0xcf96, 0xcf97, 0xcf98, 0xcf99, 0xcf9a, 0xcf9b, 0xcf9c, 0xcf9d, 0xcf9e, 0xcf9f, 0xcfa0, 0xcfa2,
+0xcfa3, 0xcfa4, 0xcfa5, 0xcfa6, 0xcfa7, 0xcfa9, 0xcfaa, 0xcfab, 0xcfac, 0xcfad, 0xcfae, 0xcfaf, 0xcfb1, 0xcfb2, 0xcfb3,
+0xcfb4, 0xcfb5, 0xcfb6, 0xcfb7, 0xcfb8, 0xcfb9, 0xcfba, 0xcfbb, 0xcfbc, 0xcfbd, 0xcfbe, 0xcfbf, 0xcfc0, 0xcfc1, 0xcfc2,
+0xcfc3, 0xcfc5, 0xcfc6, 0xcfc7, 0xcfc8, 0xcfc9, 0xcfca, 0xcfcb, 0xcfcc, 0xcfcd, 0xcfce, 0xcfcf, 0xcfd0, 0xcfd1, 0xcfd2,
+0xcfd3, 0xcfd4, 0xcfd5, 0xcfd6, 0xcfd7, 0xcfd8, 0xcfd9, 0xcfda, 0xcfdb, 0xcfdc, 0xcfdd, 0xcfde, 0xcfdf, 0xcfe2, 0xcfe3,
+0xcfe5, 0xcfe6, 0xcfe7, 0xcfe9, 0xcfea, 0xcfeb, 0xcfec, 0xcfed, 0xcfee, 0xcfef, 0xcff2, 0xcff4, 0xcff6, 0xcff7, 0xcff8,
+0xcff9, 0xcffa, 0xcffb, 0xcffd, 0xcffe, 0xcfff, 0xd001, 0xd002, 0xd003, 0xd005, 0xd006, 0xd007, 0xd008, 0xd009, 0xd00a,
+0xd00b, 0xd00c, 0xd00d, 0xd00e, 0xd00f, 0xd010, 0xd012, 0xd013, 0xd014, 0xd015, 0xd016, 0xd017, 0xd019, 0xd01a, 0xd01b,
+0xd01c, 0xd01d, 0xd01e, 0xd01f, 0xd020, 0xd021, 0xd022, 0xd023, 0xd024, 0xd025, 0xd026, 0xd027, 0xd028, 0xd029, 0xd02a,
+0xd02b, 0xd02c, 0xd02e, 0xd02f, 0xd030, 0xd031, 0xd032, 0xd033, 0xd036, 0xd037, 0xd039, 0xd03a, 0xd03b, 0xd03d, 0xd03e,
+0xd03f, 0xd040, 0xd041, 0xd042, 0xd043, 0xd046, 0xd048, 0xd04a, 0xd04b, 0xd04c, 0xd04d, 0xd04e, 0xd04f, 0xd051, 0xd052,
+0xd053, 0xd055, 0xd056, 0xd057, 0xd059, 0xd05a, 0xd05b, 0xd05c, 0xd05d, 0xd05e, 0xd05f, 0xd061, 0xd062, 0xd063, 0xd064,
+0xd065, 0xd066, 0xd067, 0xd068, 0xd069, 0xd06a, 0xd06b, 0xd06e, 0xd06f, 0xd071, 0xd072, 0xd073, 0xd075, 0xd076, 0xd077,
+0xd078, 0xd079, 0xd07a, 0xd07b, 0xd07e, 0xd07f, 0xd080, 0xd082, 0xd083, 0xd084, 0xd085, 0xd086, 0xd087, 0xd088, 0xd089,
+0xd08a, 0xd08b, 0xd08c, 0xd08d, 0xd08e, 0xd08f, 0xd090, 0xd091, 0xd092, 0xd093, 0xd094, 0xd095, 0xd096, 0xd097, 0xd098,
+0xd099, 0xd09a, 0xd09b, 0xd09c, 0xd09d, 0xd09e, 0xd09f, 0xd0a0, 0xd0a1, 0xd0a2, 0xd0a3, 0xd0a6, 0xd0a7, 0xd0a9, 0xd0aa,
+0xd0ab, 0xd0ad, 0xd0ae, 0xd0af, 0xd0b0, 0xd0b1, 0xd0b2, 0xd0b3, 0xd0b6, 0xd0b8, 0xd0ba, 0xd0bb, 0xd0bc, 0xd0bd, 0xd0be,
+0xd0bf, 0xd0c2, 0xd0c3, 0xd0c5, 0xd0c6, 0xd0c7, 0xd0ca, 0xd0cb, 0xd0cc, 0xd0cd, 0xd0ce, 0xd0cf, 0xd0d2, 0xd0d6, 0xd0d7,
+0xd0d8, 0xd0d9, 0xd0da, 0xd0db, 0xd0de, 0xd0df, 0xd0e1, 0xd0e2, 0xd0e3, 0xd0e5, 0xd0e6, 0xd0e7, 0xd0e8, 0xd0e9, 0xd0ea,
+0xd0eb, 0xd0ee, 0xd0f2, 0xd0f3, 0xd0f4, 0xd0f5, 0xd0f6, 0xd0f7, 0xd0f9, 0xd0fa, 0xd0fb, 0xd0fc, 0xd0fd, 0xd0fe, 0xd0ff,
+0xd100, 0xd101, 0xd102, 0xd103, 0xd104, 0xd105, 0xd106, 0xd107, 0xd108, 0xd109, 0xd10a, 0xd10b, 0xd10c, 0xd10e, 0xd10f,
+0xd110, 0xd111, 0xd112, 0xd113, 0xd114, 0xd115, 0xd116, 0xd117, 0xd118, 0xd119, 0xd11a, 0xd11b, 0xd11c, 0xd11d, 0xd11e,
+0xd11f, 0xd120, 0xd121, 0xd122, 0xd123, 0xd124, 0xd125, 0xd126, 0xd127, 0xd128, 0xd129, 0xd12a, 0xd12b, 0xd12c, 0xd12d,
+0xd12e, 0xd12f, 0xd132, 0xd133, 0xd135, 0xd136, 0xd137, 0xd139, 0xd13b, 0xd13c, 0xd13d, 0xd13e, 0xd13f, 0xd142, 0xd146,
+0xd147, 0xd148, 0xd149, 0xd14a, 0xd14b, 0xd14e, 0xd14f, 0xd151, 0xd152, 0xd153, 0xd155, 0xd156, 0xd157, 0xd158, 0xd159,
+0xd15a, 0xd15b, 0xd15e, 0xd160, 0xd162, 0xd163, 0xd164, 0xd165, 0xd166, 0xd167, 0xd169, 0xd16a, 0xd16b, 0xd16d, 0xd16e,
+0xd16f, 0xd170, 0xd171, 0xd172, 0xd173, 0xd174, 0xd175, 0xd176, 0xd177, 0xd178, 0xd179, 0xd17a, 0xd17b, 0xd17d, 0xd17e,
+0xd17f, 0xd180, 0xd181, 0xd182, 0xd183, 0xd185, 0xd186, 0xd187, 0xd189, 0xd18a, 0xd18b, 0xd18c, 0xd18d, 0xd18e, 0xd18f,
+0xd190, 0xd191, 0xd192, 0xd193, 0xd194, 0xd195, 0xd196, 0xd197, 0xd198, 0xd199, 0xd19a, 0xd19b, 0xd19c, 0xd19d, 0xd19e,
+0xd19f, 0xd1a2, 0xd1a3, 0xd1a5, 0xd1a6, 0xd1a7, 0xd1a9, 0xd1aa, 0xd1ab, 0xd1ac, 0xd1ad, 0xd1ae, 0xd1af, 0xd1b2, 0xd1b4,
+0xd1b6, 0xd1b7, 0xd1b8, 0xd1b9, 0xd1bb, 0xd1bd, 0xd1be, 0xd1bf, 0xd1c1, 0xd1c2, 0xd1c3, 0xd1c4, 0xd1c5, 0xd1c6, 0xd1c7,
+0xd1c8, 0xd1c9, 0xd1ca, 0xd1cb, 0xd1cc, 0xd1cd, 0xd1ce, 0xd1cf, 0xd1d0, 0xd1d1, 0xd1d2, 0xd1d3, 0xd1d4, 0xd1d5, 0xd1d6,
+0xd1d7, 0xd1d9, 0xd1da, 0xd1db, 0xd1dc, 0xd1dd, 0xd1de, 0xd1df, 0xd1e0, 0xd1e1, 0xd1e2, 0xd1e3, 0xd1e4, 0xd1e5, 0xd1e6,
+0xd1e7, 0xd1e8, 0xd1e9, 0xd1ea, 0xd1eb, 0xd1ec, 0xd1ed, 0xd1ee, 0xd1ef, 0xd1f0, 0xd1f1, 0xd1f2, 0xd1f3, 0xd1f5, 0xd1f6,
+0xd1f7, 0xd1f9, 0xd1fa, 0xd1fb, 0xd1fc, 0xd1fd, 0xd1fe, 0xd1ff, 0xd200, 0xd201, 0xd202, 0xd203, 0xd204, 0xd205, 0xd206,
+0xd208, 0xd20a, 0xd20b, 0xd20c, 0xd20d, 0xd20e, 0xd20f, 0xd211, 0xd212, 0xd213, 0xd214, 0xd215, 0xd216, 0xd217, 0xd218,
+0xd219, 0xd21a, 0xd21b, 0xd21c, 0xd21d, 0xd21e, 0xd21f, 0xd220, 0xd221, 0xd222, 0xd223, 0xd224, 0xd225, 0xd226, 0xd227,
+0xd228, 0xd229, 0xd22a, 0xd22b, 0xd22e, 0xd22f, 0xd231, 0xd232, 0xd233, 0xd235, 0xd236, 0xd237, 0xd238, 0xd239, 0xd23a,
+0xd23b, 0xd23e, 0xd240, 0xd242, 0xd243, 0xd244, 0xd245, 0xd246, 0xd247, 0xd249, 0xd24a, 0xd24b, 0xd24c, 0xd24d, 0xd24e,
+0xd24f, 0xd250, 0xd251, 0xd252, 0xd253, 0xd254, 0xd255, 0xd256, 0xd257, 0xd258, 0xd259, 0xd25a, 0xd25b, 0xd25d, 0xd25e,
+0xd25f, 0xd260, 0xd261, 0xd262, 0xd263, 0xd265, 0xd266, 0xd267, 0xd268, 0xd269, 0xd26a, 0xd26b, 0xd26c, 0xd26d, 0xd26e,
+0xd26f, 0xd270, 0xd271, 0xd272, 0xd273, 0xd274, 0xd275, 0xd276, 0xd277, 0xd278, 0xd279, 0xd27a, 0xd27b, 0xd27c, 0xd27d,
+0xd27e, 0xd27f, 0xd282, 0xd283, 0xd285, 0xd286, 0xd287, 0xd289, 0xd28a, 0xd28b, 0xd28c, 0xd28d, 0xd28e, 0xd28f, 0xd292,
+0xd293, 0xd294, 0xd296, 0xd297, 0xd298, 0xd299, 0xd29a, 0xd29b, 0xd29d, 0xd29e, 0xd29f, 0xd2a1, 0xd2a2, 0xd2a3, 0xd2a5,
+0xd2a6, 0xd2a7, 0xd2a8, 0xd2a9, 0xd2aa, 0xd2ab, 0xd2ad, 0xd2ae, 0xd2af, 0xd2b0, 0xd2b2, 0xd2b3, 0xd2b4, 0xd2b5, 0xd2b6,
+0xd2b7, 0xd2ba, 0xd2bb, 0xd2bd, 0xd2be, 0xd2c1, 0xd2c3, 0xd2c4, 0xd2c5, 0xd2c6, 0xd2c7, 0xd2ca, 0xd2cc, 0xd2cd, 0xd2ce,
+0xd2cf, 0xd2d0, 0xd2d1, 0xd2d2, 0xd2d3, 0xd2d5, 0xd2d6, 0xd2d7, 0xd2d9, 0xd2da, 0xd2db, 0xd2dd, 0xd2de, 0xd2df, 0xd2e0,
+0xd2e1, 0xd2e2, 0xd2e3, 0xd2e6, 0xd2e7, 0xd2e8, 0xd2e9, 0xd2ea, 0xd2eb, 0xd2ec, 0xd2ed, 0xd2ee, 0xd2ef, 0xd2f2, 0xd2f3,
+0xd2f5, 0xd2f6, 0xd2f7, 0xd2f9, 0xd2fa, 0xd2fb, 0xd2fc, 0xd2fd, 0xd2fe, 0xd2ff, 0xd302, 0xd304, 0xd306, 0xd307, 0xd308,
+0xd309, 0xd30a, 0xd30b, 0xd30f, 0xd311, 0xd312, 0xd313, 0xd315, 0xd317, 0xd318, 0xd319, 0xd31a, 0xd31b, 0xd31e, 0xd322,
+0xd323, 0xd324, 0xd326, 0xd327, 0xd32a, 0xd32b, 0xd32d, 0xd32e, 0xd32f, 0xd331, 0xd332, 0xd333, 0xd334, 0xd335, 0xd336,
+0xd337, 0xd33a, 0xd33e, 0xd33f, 0xd340, 0xd341, 0xd342, 0xd343, 0xd346, 0xd347, 0xd348, 0xd349, 0xd34a, 0xd34b, 0xd34c,
+0xd34d, 0xd34e, 0xd34f, 0xd350, 0xd351, 0xd352, 0xd353, 0xd354, 0xd355, 0xd356, 0xd357, 0xd358, 0xd359, 0xd35a, 0xd35b,
+0xd35c, 0xd35d, 0xd35e, 0xd35f, 0xd360, 0xd361, 0xd362, 0xd363, 0xd364, 0xd365, 0xd366, 0xd367, 0xd368, 0xd369, 0xd36a,
+0xd36b, 0xd36c, 0xd36d, 0xd36e, 0xd36f, 0xd370, 0xd371, 0xd372, 0xd373, 0xd374, 0xd375, 0xd376, 0xd377, 0xd378, 0xd379,
+0xd37a, 0xd37b, 0xd37e, 0xd37f, 0xd381, 0xd382, 0xd383, 0xd385, 0xd386, 0xd387, 0xd388, 0xd389, 0xd38a, 0xd38b, 0xd38e,
+0xd392, 0xd393, 0xd394, 0xd395, 0xd396, 0xd397, 0xd39a, 0xd39b, 0xd39d, 0xd39e, 0xd39f, 0xd3a1, 0xd3a2, 0xd3a3, 0xd3a4,
+0xd3a5, 0xd3a6, 0xd3a7, 0xd3aa, 0xd3ac, 0xd3ae, 0xd3af, 0xd3b0, 0xd3b1, 0xd3b2, 0xd3b3, 0xd3b5, 0xd3b6, 0xd3b7, 0xd3b9,
+0xd3ba, 0xd3bb, 0xd3bd, 0xd3be, 0xd3bf, 0xd3c0, 0xd3c1, 0xd3c2, 0xd3c3, 0xd3c6, 0xd3c7, 0xd3ca, 0xd3cb, 0xd3cc, 0xd3cd,
+0xd3ce, 0xd3cf, 0xd3d1, 0xd3d2, 0xd3d3, 0xd3d4, 0xd3d5, 0xd3d6, 0xd3d7, 0xd3d9, 0xd3da, 0xd3db, 0xd3dc, 0xd3dd, 0xd3de,
+0xd3df, 0xd3e0, 0xd3e2, 0xd3e4, 0xd3e5, 0xd3e6, 0xd3e7, 0xd3e8, 0xd3e9, 0xd3ea, 0xd3eb, 0xd3ee, 0xd3ef, 0xd3f1, 0xd3f2,
+0xd3f3, 0xd3f5, 0xd3f6, 0xd3f7, 0xd3f8, 0xd3f9, 0xd3fa, 0xd3fb, 0xd3fe, 0xd400, 0xd402, 0xd403, 0xd404, 0xd405, 0xd406,
+0xd407, 0xd409, 0xd40a, 0xd40b, 0xd40c, 0xd40d, 0xd40e, 0xd40f, 0xd410, 0xd411, 0xd412, 0xd413, 0xd414, 0xd415, 0xd416,
+0xd417, 0xd418, 0xd419, 0xd41a, 0xd41b, 0xd41c, 0xd41e, 0xd41f, 0xd420, 0xd421, 0xd422, 0xd423, 0xd424, 0xd425, 0xd426,
+0xd427, 0xd428, 0xd429, 0xd42a, 0xd42b, 0xd42c, 0xd42d, 0xd42e, 0xd42f, 0xd430, 0xd431, 0xd432, 0xd433, 0xd434, 0xd435,
+0xd436, 0xd437, 0xd438, 0xd439, 0xd43a, 0xd43b, 0xd43c, 0xd43d, 0xd43e, 0xd43f, 0xd441, 0xd442, 0xd443, 0xd445, 0xd446,
+0xd447, 0xd448, 0xd449, 0xd44a, 0xd44b, 0xd44c, 0xd44d, 0xd44e, 0xd44f, 0xd450, 0xd451, 0xd452, 0xd453, 0xd454, 0xd455,
+0xd456, 0xd457, 0xd458, 0xd459, 0xd45a, 0xd45b, 0xd45d, 0xd45e, 0xd45f, 0xd461, 0xd462, 0xd463, 0xd465, 0xd466, 0xd467,
+0xd468, 0xd469, 0xd46a, 0xd46b, 0xd46c, 0xd46e, 0xd470, 0xd471, 0xd472, 0xd473, 0xd474, 0xd475, 0xd476, 0xd477, 0xd47a,
+0xd47b, 0xd47d, 0xd47e, 0xd481, 0xd483, 0xd484, 0xd485, 0xd486, 0xd487, 0xd48a, 0xd48c, 0xd48e, 0xd48f, 0xd490, 0xd491,
+0xd492, 0xd493, 0xd495, 0xd496, 0xd497, 0xd498, 0xd499, 0xd49a, 0xd49b, 0xd49c, 0xd49d, 0xd49e, 0xd49f, 0xd4a0, 0xd4a1,
+0xd4a2, 0xd4a3, 0xd4a4, 0xd4a5, 0xd4a6, 0xd4a7, 0xd4a8, 0xd4aa, 0xd4ab, 0xd4ac, 0xd4ad, 0xd4ae, 0xd4af, 0xd4b0, 0xd4b1,
+0xd4b2, 0xd4b3, 0xd4b4, 0xd4b5, 0xd4b6, 0xd4b7, 0xd4b8, 0xd4b9, 0xd4ba, 0xd4bb, 0xd4bc, 0xd4bd, 0xd4be, 0xd4bf, 0xd4c0,
+0xd4c1, 0xd4c2, 0xd4c3, 0xd4c4, 0xd4c5, 0xd4c6, 0xd4c7, 0xd4c8, 0xd4c9, 0xd4ca, 0xd4cb, 0xd4cd, 0xd4ce, 0xd4cf, 0xd4d1,
+0xd4d2, 0xd4d3, 0xd4d5, 0xd4d6, 0xd4d7, 0xd4d8, 0xd4d9, 0xd4da, 0xd4db, 0xd4dd, 0xd4de, 0xd4e0, 0xd4e1, 0xd4e2, 0xd4e3,
+0xd4e4, 0xd4e5, 0xd4e6, 0xd4e7, 0xd4e9, 0xd4ea, 0xd4eb, 0xd4ed, 0xd4ee, 0xd4ef, 0xd4f1, 0xd4f2, 0xd4f3, 0xd4f4, 0xd4f5,
+0xd4f6, 0xd4f7, 0xd4f9, 0xd4fa, 0xd4fc, 0xd4fe, 0xd4ff, 0xd500, 0xd501, 0xd502, 0xd503, 0xd505, 0xd506, 0xd507, 0xd509,
+0xd50a, 0xd50b, 0xd50d, 0xd50e, 0xd50f, 0xd510, 0xd511, 0xd512, 0xd513, 0xd516, 0xd518, 0xd519, 0xd51a, 0xd51b, 0xd51c,
+0xd51d, 0xd51e, 0xd51f, 0xd520, 0xd521, 0xd522, 0xd523, 0xd524, 0xd525, 0xd526, 0xd527, 0xd528, 0xd529, 0xd52a, 0xd52b,
+0xd52c, 0xd52d, 0xd52e, 0xd52f, 0xd530, 0xd531, 0xd532, 0xd533, 0xd534, 0xd535, 0xd536, 0xd537, 0xd538, 0xd539, 0xd53a,
+0xd53b, 0xd53e, 0xd53f, 0xd541, 0xd542, 0xd543, 0xd545, 0xd546, 0xd547, 0xd548, 0xd549, 0xd54a, 0xd54b, 0xd54e, 0xd550,
+0xd552, 0xd553, 0xd554, 0xd555, 0xd556, 0xd557, 0xd55a, 0xd55b, 0xd55d, 0xd55e, 0xd55f, 0xd561, 0xd562, 0xd563, 0xd564,
+0xd566, 0xd567, 0xd56a, 0xd56c, 0xd56e, 0xd56f, 0xd570, 0xd571, 0xd572, 0xd573, 0xd576, 0xd577, 0xd579, 0xd57a, 0xd57b,
+0xd57d, 0xd57e, 0xd57f, 0xd580, 0xd581, 0xd582, 0xd583, 0xd586, 0xd58a, 0xd58b, 0xd58c, 0xd58d, 0xd58e, 0xd58f, 0xd591,
+0xd592, 0xd593, 0xd594, 0xd595, 0xd596, 0xd597, 0xd598, 0xd599, 0xd59a, 0xd59b, 0xd59c, 0xd59d, 0xd59e, 0xd59f, 0xd5a0,
+0xd5a1, 0xd5a2, 0xd5a3, 0xd5a4, 0xd5a6, 0xd5a7, 0xd5a8, 0xd5a9, 0xd5aa, 0xd5ab, 0xd5ac, 0xd5ad, 0xd5ae, 0xd5af, 0xd5b0,
+0xd5b1, 0xd5b2, 0xd5b3, 0xd5b4, 0xd5b5, 0xd5b6, 0xd5b7, 0xd5b8, 0xd5b9, 0xd5ba, 0xd5bb, 0xd5bc, 0xd5bd, 0xd5be, 0xd5bf,
+0xd5c0, 0xd5c1, 0xd5c2, 0xd5c3, 0xd5c4, 0xd5c5, 0xd5c6, 0xd5c7, 0xd5ca, 0xd5cb, 0xd5cd, 0xd5ce, 0xd5cf, 0xd5d1, 0xd5d3,
+0xd5d4, 0xd5d5, 0xd5d6, 0xd5d7, 0xd5da, 0xd5dc, 0xd5de, 0xd5df, 0xd5e0, 0xd5e1, 0xd5e2, 0xd5e3, 0xd5e6, 0xd5e7, 0xd5e9,
+0xd5ea, 0xd5eb, 0xd5ed, 0xd5ee, 0xd5ef, 0xd5f0, 0xd5f1, 0xd5f2, 0xd5f3, 0xd5f6, 0xd5f8, 0xd5fa, 0xd5fb, 0xd5fc, 0xd5fd,
+0xd5fe, 0xd5ff, 0xd602, 0xd603, 0xd605, 0xd606, 0xd607, 0xd609, 0xd60a, 0xd60b, 0xd60c, 0xd60d, 0xd60e, 0xd60f, 0xd612,
+0xd616, 0xd617, 0xd618, 0xd619, 0xd61a, 0xd61b, 0xd61d, 0xd61e, 0xd61f, 0xd621, 0xd622, 0xd623, 0xd625, 0xd626, 0xd627,
+0xd628, 0xd629, 0xd62a, 0xd62b, 0xd62c, 0xd62e, 0xd62f, 0xd630, 0xd631, 0xd632, 0xd633, 0xd634, 0xd635, 0xd636, 0xd637,
+0xd63a, 0xd63b, 0xd63d, 0xd63e, 0xd63f, 0xd641, 0xd642, 0xd643, 0xd644, 0xd646, 0xd647, 0xd64a, 0xd64c, 0xd64e, 0xd64f,
+0xd650, 0xd652, 0xd653, 0xd656, 0xd657, 0xd659, 0xd65a, 0xd65b, 0xd65d, 0xd65e, 0xd65f, 0xd660, 0xd661, 0xd662, 0xd663,
+0xd664, 0xd665, 0xd666, 0xd668, 0xd66a, 0xd66b, 0xd66c, 0xd66d, 0xd66e, 0xd66f, 0xd672, 0xd673, 0xd675, 0xd676, 0xd677,
+0xd678, 0xd679, 0xd67a, 0xd67b, 0xd67c, 0xd67d, 0xd67e, 0xd67f, 0xd680, 0xd681, 0xd682, 0xd684, 0xd686, 0xd687, 0xd688,
+0xd689, 0xd68a, 0xd68b, 0xd68e, 0xd68f, 0xd691, 0xd692, 0xd693, 0xd695, 0xd696, 0xd697, 0xd698, 0xd699, 0xd69a, 0xd69b,
+0xd69c, 0xd69e, 0xd6a0, 0xd6a2, 0xd6a3, 0xd6a4, 0xd6a5, 0xd6a6, 0xd6a7, 0xd6a9, 0xd6aa, 0xd6ab, 0xd6ad, 0xd6ae, 0xd6af,
+0xd6b1, 0xd6b2, 0xd6b3, 0xd6b4, 0xd6b5, 0xd6b6, 0xd6b7, 0xd6b8, 0xd6ba, 0xd6bc, 0xd6bd, 0xd6be, 0xd6bf, 0xd6c0, 0xd6c1,
+0xd6c2, 0xd6c3, 0xd6c6, 0xd6c7, 0xd6c9, 0xd6ca, 0xd6cb, 0xd6cd, 0xd6ce, 0xd6cf, 0xd6d0, 0xd6d2, 0xd6d3, 0xd6d5, 0xd6d6,
+0xd6d8, 0xd6da, 0xd6db, 0xd6dc, 0xd6dd, 0xd6de, 0xd6df, 0xd6e1, 0xd6e2, 0xd6e3, 0xd6e5, 0xd6e6, 0xd6e7, 0xd6e9, 0xd6ea,
+0xd6eb, 0xd6ec, 0xd6ed, 0xd6ee, 0xd6ef, 0xd6f1, 0xd6f2, 0xd6f3, 0xd6f4, 0xd6f6, 0xd6f7, 0xd6f8, 0xd6f9, 0xd6fa, 0xd6fb,
+0xd6fe, 0xd6ff, 0xd701, 0xd702, 0xd703, 0xd705, 0xd706, 0xd707, 0xd708, 0xd709, 0xd70a, 0xd70b, 0xd70c, 0xd70d, 0xd70e,
+0xd70f, 0xd710, 0xd712, 0xd713, 0xd714, 0xd715, 0xd716, 0xd717, 0xd71a, 0xd71b, 0xd71d, 0xd71e, 0xd71f, 0xd721, 0xd722,
+0xd723, 0xd724, 0xd725, 0xd726, 0xd727, 0xd72a, 0xd72c, 0xd72e, 0xd72f, 0xd730, 0xd731, 0xd732, 0xd733, 0xd736, 0xd737,
+0xd739, 0xd73a, 0xd73b, 0xd73d, 0xd73e, 0xd73f, 0xd740, 0xd741, 0xd742, 0xd743, 0xd745, 0xd746, 0xd748, 0xd74a, 0xd74b,
+0xd74c, 0xd74d, 0xd74e, 0xd74f, 0xd752, 0xd753, 0xd755, 0xd75a, 0xd75b, 0xd75c, 0xd75d, 0xd75e, 0xd75f, 0xd762, 0xd764,
+0xd766, 0xd767, 0xd768, 0xd76a, 0xd76b, 0xd76d, 0xd76e, 0xd76f, 0xd771, 0xd772, 0xd773, 0xd775, 0xd776, 0xd777, 0xd778,
+0xd779, 0xd77a, 0xd77b, 0xd77e, 0xd77f, 0xd780, 0xd782, 0xd783, 0xd784, 0xd785, 0xd786, 0xd787, 0xd78a, 0xd78b, 0xd78d,
+0xd78e, 0xd78f, 0xd791, 0xd792, 0xd793, 0xd794, 0xd795, 0xd796, 0xd797, 0xd79a, 0xd79c, 0xd79e, 0xd79f, 0xd7a0, 0xd7a1,
+0xd7a2, 0xd7a3
+};
+
+#endif // CP494CODETBL_P_H
diff --git a/src/corelib/codecs/qbig5codec.cpp b/src/corelib/codecs/qbig5codec.cpp
new file mode 100644
index 0000000000..4c37357d35
--- /dev/null
+++ b/src/corelib/codecs/qbig5codec.cpp
@@ -0,0 +1,12788 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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 "qbig5codec_p.h"
+
+QT_BEGIN_NAMESPACE
+
+#ifndef QT_NO_TEXTCODEC
+static int qt_Big5hkscsToUnicode(const uchar *s, uint *pwc);
+static int qt_UnicodeToBig5hkscs(uint wc, uchar *r);
+
+#define InRange(c, lower, upper) (((c) >= (lower)) && ((c) <= (upper)))
+#define IsLatin(c) ((c) < 0x80)
+#define IsFirstByte(c) (InRange((c), 0x81, 0xFE))
+#define IsSecondByteRange1(c) (InRange((c), 0x40, 0x7E))
+#define IsSecondByteRange2(c) (InRange((c), 0xA1, 0xFE))
+#define IsSecondByte(c) (IsSecondByteRange1(c) || IsSecondByteRange2(c))
+
+#define QValidChar(u) ((u) ? QChar((ushort)(u)) : QChar(QChar::ReplacementCharacter))
+
+
+int QBig5Codec::_mibEnum()
+{
+ return 2026;
+}
+
+QByteArray QBig5Codec::_name()
+{
+ return "Big5";
+}
+
+struct B5Map {
+ ushort x;
+ ushort y;
+};
+
+struct B5Index {
+ const B5Map * table;
+ ushort tableSize;
+};
+
+// Big 5 to Unicode maping tables.
+// Tables are in sorted order on X(all table together) & Y(individually)
+static const B5Map b5_8140_to_uc_map[] = {
+ /* 0x8140 - 0x8DFE */
+ {0x8140,0xeeb8}, {0x8141,0xeeb9}, {0x8142,0xeeba}, {0x8143,0xeebb},
+ {0x8144,0xeebc}, {0x8145,0xeebd}, {0x8146,0xeebe}, {0x8147,0xeebf},
+ {0x8148,0xeec0}, {0x8149,0xeec1}, {0x814a,0xeec2}, {0x814b,0xeec3},
+ {0x814c,0xeec4}, {0x814d,0xeec5}, {0x814e,0xeec6}, {0x814f,0xeec7},
+ {0x8150,0xeec8}, {0x8151,0xeec9}, {0x8152,0xeeca}, {0x8153,0xeecb},
+ {0x8154,0xeecc}, {0x8155,0xeecd}, {0x8156,0xeece}, {0x8157,0xeecf},
+ {0x8158,0xeed0}, {0x8159,0xeed1}, {0x815a,0xeed2}, {0x815b,0xeed3},
+ {0x815c,0xeed4}, {0x815d,0xeed5}, {0x815e,0xeed6}, {0x815f,0xeed7},
+ {0x8160,0xeed8}, {0x8161,0xeed9}, {0x8162,0xeeda}, {0x8163,0xeedb},
+ {0x8164,0xeedc}, {0x8165,0xeedd}, {0x8166,0xeede}, {0x8167,0xeedf},
+ {0x8168,0xeee0}, {0x8169,0xeee1}, {0x816a,0xeee2}, {0x816b,0xeee3},
+ {0x816c,0xeee4}, {0x816d,0xeee5}, {0x816e,0xeee6}, {0x816f,0xeee7},
+ {0x8170,0xeee8}, {0x8171,0xeee9}, {0x8172,0xeeea}, {0x8173,0xeeeb},
+ {0x8174,0xeeec}, {0x8175,0xeeed}, {0x8176,0xeeee}, {0x8177,0xeeef},
+ {0x8178,0xeef0}, {0x8179,0xeef1}, {0x817a,0xeef2}, {0x817b,0xeef3},
+ {0x817c,0xeef4}, {0x817d,0xeef5}, {0x817e,0xeef6}, {0x81a1,0xeef7},
+ {0x81a2,0xeef8}, {0x81a3,0xeef9}, {0x81a4,0xeefa}, {0x81a5,0xeefb},
+ {0x81a6,0xeefc}, {0x81a7,0xeefd}, {0x81a8,0xeefe}, {0x81a9,0xeeff},
+ {0x81aa,0xef00}, {0x81ab,0xef01}, {0x81ac,0xef02}, {0x81ad,0xef03},
+ {0x81ae,0xef04}, {0x81af,0xef05}, {0x81b0,0xef06}, {0x81b1,0xef07},
+ {0x81b2,0xef08}, {0x81b3,0xef09}, {0x81b4,0xef0a}, {0x81b5,0xef0b},
+ {0x81b6,0xef0c}, {0x81b7,0xef0d}, {0x81b8,0xef0e}, {0x81b9,0xef0f},
+ {0x81ba,0xef10}, {0x81bb,0xef11}, {0x81bc,0xef12}, {0x81bd,0xef13},
+ {0x81be,0xef14}, {0x81bf,0xef15}, {0x81c0,0xef16}, {0x81c1,0xef17},
+ {0x81c2,0xef18}, {0x81c3,0xef19}, {0x81c4,0xef1a}, {0x81c5,0xef1b},
+ {0x81c6,0xef1c}, {0x81c7,0xef1d}, {0x81c8,0xef1e}, {0x81c9,0xef1f},
+ {0x81ca,0xef20}, {0x81cb,0xef21}, {0x81cc,0xef22}, {0x81cd,0xef23},
+ {0x81ce,0xef24}, {0x81cf,0xef25}, {0x81d0,0xef26}, {0x81d1,0xef27},
+ {0x81d2,0xef28}, {0x81d3,0xef29}, {0x81d4,0xef2a}, {0x81d5,0xef2b},
+ {0x81d6,0xef2c}, {0x81d7,0xef2d}, {0x81d8,0xef2e}, {0x81d9,0xef2f},
+ {0x81da,0xef30}, {0x81db,0xef31}, {0x81dc,0xef32}, {0x81dd,0xef33},
+ {0x81de,0xef34}, {0x81df,0xef35}, {0x81e0,0xef36}, {0x81e1,0xef37},
+ {0x81e2,0xef38}, {0x81e3,0xef39}, {0x81e4,0xef3a}, {0x81e5,0xef3b},
+ {0x81e6,0xef3c}, {0x81e7,0xef3d}, {0x81e8,0xef3e}, {0x81e9,0xef3f},
+ {0x81ea,0xef40}, {0x81eb,0xef41}, {0x81ec,0xef42}, {0x81ed,0xef43},
+ {0x81ee,0xef44}, {0x81ef,0xef45}, {0x81f0,0xef46}, {0x81f1,0xef47},
+ {0x81f2,0xef48}, {0x81f3,0xef49}, {0x81f4,0xef4a}, {0x81f5,0xef4b},
+ {0x81f6,0xef4c}, {0x81f7,0xef4d}, {0x81f8,0xef4e}, {0x81f9,0xef4f},
+ {0x81fa,0xef50}, {0x81fb,0xef51}, {0x81fc,0xef52}, {0x81fd,0xef53},
+ {0x81fe,0xef54}, {0x8240,0xef55}, {0x8241,0xef56}, {0x8242,0xef57},
+ {0x8243,0xef58}, {0x8244,0xef59}, {0x8245,0xef5a}, {0x8246,0xef5b},
+ {0x8247,0xef5c}, {0x8248,0xef5d}, {0x8249,0xef5e}, {0x824a,0xef5f},
+ {0x824b,0xef60}, {0x824c,0xef61}, {0x824d,0xef62}, {0x824e,0xef63},
+ {0x824f,0xef64}, {0x8250,0xef65}, {0x8251,0xef66}, {0x8252,0xef67},
+ {0x8253,0xef68}, {0x8254,0xef69}, {0x8255,0xef6a}, {0x8256,0xef6b},
+ {0x8257,0xef6c}, {0x8258,0xef6d}, {0x8259,0xef6e}, {0x825a,0xef6f},
+ {0x825b,0xef70}, {0x825c,0xef71}, {0x825d,0xef72}, {0x825e,0xef73},
+ {0x825f,0xef74}, {0x8260,0xef75}, {0x8261,0xef76}, {0x8262,0xef77},
+ {0x8263,0xef78}, {0x8264,0xef79}, {0x8265,0xef7a}, {0x8266,0xef7b},
+ {0x8267,0xef7c}, {0x8268,0xef7d}, {0x8269,0xef7e}, {0x826a,0xef7f},
+ {0x826b,0xef80}, {0x826c,0xef81}, {0x826d,0xef82}, {0x826e,0xef83},
+ {0x826f,0xef84}, {0x8270,0xef85}, {0x8271,0xef86}, {0x8272,0xef87},
+ {0x8273,0xef88}, {0x8274,0xef89}, {0x8275,0xef8a}, {0x8276,0xef8b},
+ {0x8277,0xef8c}, {0x8278,0xef8d}, {0x8279,0xef8e}, {0x827a,0xef8f},
+ {0x827b,0xef90}, {0x827c,0xef91}, {0x827d,0xef92}, {0x827e,0xef93},
+ {0x82a1,0xef94}, {0x82a2,0xef95}, {0x82a3,0xef96}, {0x82a4,0xef97},
+ {0x82a5,0xef98}, {0x82a6,0xef99}, {0x82a7,0xef9a}, {0x82a8,0xef9b},
+ {0x82a9,0xef9c}, {0x82aa,0xef9d}, {0x82ab,0xef9e}, {0x82ac,0xef9f},
+ {0x82ad,0xefa0}, {0x82ae,0xefa1}, {0x82af,0xefa2}, {0x82b0,0xefa3},
+ {0x82b1,0xefa4}, {0x82b2,0xefa5}, {0x82b3,0xefa6}, {0x82b4,0xefa7},
+ {0x82b5,0xefa8}, {0x82b6,0xefa9}, {0x82b7,0xefaa}, {0x82b8,0xefab},
+ {0x82b9,0xefac}, {0x82ba,0xefad}, {0x82bb,0xefae}, {0x82bc,0xefaf},
+ {0x82bd,0xefb0}, {0x82be,0xefb1}, {0x82bf,0xefb2}, {0x82c0,0xefb3},
+ {0x82c1,0xefb4}, {0x82c2,0xefb5}, {0x82c3,0xefb6}, {0x82c4,0xefb7},
+ {0x82c5,0xefb8}, {0x82c6,0xefb9}, {0x82c7,0xefba}, {0x82c8,0xefbb},
+ {0x82c9,0xefbc}, {0x82ca,0xefbd}, {0x82cb,0xefbe}, {0x82cc,0xefbf},
+ {0x82cd,0xefc0}, {0x82ce,0xefc1}, {0x82cf,0xefc2}, {0x82d0,0xefc3},
+ {0x82d1,0xefc4}, {0x82d2,0xefc5}, {0x82d3,0xefc6}, {0x82d4,0xefc7},
+ {0x82d5,0xefc8}, {0x82d6,0xefc9}, {0x82d7,0xefca}, {0x82d8,0xefcb},
+ {0x82d9,0xefcc}, {0x82da,0xefcd}, {0x82db,0xefce}, {0x82dc,0xefcf},
+ {0x82dd,0xefd0}, {0x82de,0xefd1}, {0x82df,0xefd2}, {0x82e0,0xefd3},
+ {0x82e1,0xefd4}, {0x82e2,0xefd5}, {0x82e3,0xefd6}, {0x82e4,0xefd7},
+ {0x82e5,0xefd8}, {0x82e6,0xefd9}, {0x82e7,0xefda}, {0x82e8,0xefdb},
+ {0x82e9,0xefdc}, {0x82ea,0xefdd}, {0x82eb,0xefde}, {0x82ec,0xefdf},
+ {0x82ed,0xefe0}, {0x82ee,0xefe1}, {0x82ef,0xefe2}, {0x82f0,0xefe3},
+ {0x82f1,0xefe4}, {0x82f2,0xefe5}, {0x82f3,0xefe6}, {0x82f4,0xefe7},
+ {0x82f5,0xefe8}, {0x82f6,0xefe9}, {0x82f7,0xefea}, {0x82f8,0xefeb},
+ {0x82f9,0xefec}, {0x82fa,0xefed}, {0x82fb,0xefee}, {0x82fc,0xefef},
+ {0x82fd,0xeff0}, {0x82fe,0xeff1}, {0x8340,0xeff2}, {0x8341,0xeff3},
+ {0x8342,0xeff4}, {0x8343,0xeff5}, {0x8344,0xeff6}, {0x8345,0xeff7},
+ {0x8346,0xeff8}, {0x8347,0xeff9}, {0x8348,0xeffa}, {0x8349,0xeffb},
+ {0x834a,0xeffc}, {0x834b,0xeffd}, {0x834c,0xeffe}, {0x834d,0xefff},
+ {0x834e,0xf000}, {0x834f,0xf001}, {0x8350,0xf002}, {0x8351,0xf003},
+ {0x8352,0xf004}, {0x8353,0xf005}, {0x8354,0xf006}, {0x8355,0xf007},
+ {0x8356,0xf008}, {0x8357,0xf009}, {0x8358,0xf00a}, {0x8359,0xf00b},
+ {0x835a,0xf00c}, {0x835b,0xf00d}, {0x835c,0xf00e}, {0x835d,0xf00f},
+ {0x835e,0xf010}, {0x835f,0xf011}, {0x8360,0xf012}, {0x8361,0xf013},
+ {0x8362,0xf014}, {0x8363,0xf015}, {0x8364,0xf016}, {0x8365,0xf017},
+ {0x8366,0xf018}, {0x8367,0xf019}, {0x8368,0xf01a}, {0x8369,0xf01b},
+ {0x836a,0xf01c}, {0x836b,0xf01d}, {0x836c,0xf01e}, {0x836d,0xf01f},
+ {0x836e,0xf020}, {0x836f,0xf021}, {0x8370,0xf022}, {0x8371,0xf023},
+ {0x8372,0xf024}, {0x8373,0xf025}, {0x8374,0xf026}, {0x8375,0xf027},
+ {0x8376,0xf028}, {0x8377,0xf029}, {0x8378,0xf02a}, {0x8379,0xf02b},
+ {0x837a,0xf02c}, {0x837b,0xf02d}, {0x837c,0xf02e}, {0x837d,0xf02f},
+ {0x837e,0xf030}, {0x83a1,0xf031}, {0x83a2,0xf032}, {0x83a3,0xf033},
+ {0x83a4,0xf034}, {0x83a5,0xf035}, {0x83a6,0xf036}, {0x83a7,0xf037},
+ {0x83a8,0xf038}, {0x83a9,0xf039}, {0x83aa,0xf03a}, {0x83ab,0xf03b},
+ {0x83ac,0xf03c}, {0x83ad,0xf03d}, {0x83ae,0xf03e}, {0x83af,0xf03f},
+ {0x83b0,0xf040}, {0x83b1,0xf041}, {0x83b2,0xf042}, {0x83b3,0xf043},
+ {0x83b4,0xf044}, {0x83b5,0xf045}, {0x83b6,0xf046}, {0x83b7,0xf047},
+ {0x83b8,0xf048}, {0x83b9,0xf049}, {0x83ba,0xf04a}, {0x83bb,0xf04b},
+ {0x83bc,0xf04c}, {0x83bd,0xf04d}, {0x83be,0xf04e}, {0x83bf,0xf04f},
+ {0x83c0,0xf050}, {0x83c1,0xf051}, {0x83c2,0xf052}, {0x83c3,0xf053},
+ {0x83c4,0xf054}, {0x83c5,0xf055}, {0x83c6,0xf056}, {0x83c7,0xf057},
+ {0x83c8,0xf058}, {0x83c9,0xf059}, {0x83ca,0xf05a}, {0x83cb,0xf05b},
+ {0x83cc,0xf05c}, {0x83cd,0xf05d}, {0x83ce,0xf05e}, {0x83cf,0xf05f},
+ {0x83d0,0xf060}, {0x83d1,0xf061}, {0x83d2,0xf062}, {0x83d3,0xf063},
+ {0x83d4,0xf064}, {0x83d5,0xf065}, {0x83d6,0xf066}, {0x83d7,0xf067},
+ {0x83d8,0xf068}, {0x83d9,0xf069}, {0x83da,0xf06a}, {0x83db,0xf06b},
+ {0x83dc,0xf06c}, {0x83dd,0xf06d}, {0x83de,0xf06e}, {0x83df,0xf06f},
+ {0x83e0,0xf070}, {0x83e1,0xf071}, {0x83e2,0xf072}, {0x83e3,0xf073},
+ {0x83e4,0xf074}, {0x83e5,0xf075}, {0x83e6,0xf076}, {0x83e7,0xf077},
+ {0x83e8,0xf078}, {0x83e9,0xf079}, {0x83ea,0xf07a}, {0x83eb,0xf07b},
+ {0x83ec,0xf07c}, {0x83ed,0xf07d}, {0x83ee,0xf07e}, {0x83ef,0xf07f},
+ {0x83f0,0xf080}, {0x83f1,0xf081}, {0x83f2,0xf082}, {0x83f3,0xf083},
+ {0x83f4,0xf084}, {0x83f5,0xf085}, {0x83f6,0xf086}, {0x83f7,0xf087},
+ {0x83f8,0xf088}, {0x83f9,0xf089}, {0x83fa,0xf08a}, {0x83fb,0xf08b},
+ {0x83fc,0xf08c}, {0x83fd,0xf08d}, {0x83fe,0xf08e}, {0x8440,0xf08f},
+ {0x8441,0xf090}, {0x8442,0xf091}, {0x8443,0xf092}, {0x8444,0xf093},
+ {0x8445,0xf094}, {0x8446,0xf095}, {0x8447,0xf096}, {0x8448,0xf097},
+ {0x8449,0xf098}, {0x844a,0xf099}, {0x844b,0xf09a}, {0x844c,0xf09b},
+ {0x844d,0xf09c}, {0x844e,0xf09d}, {0x844f,0xf09e}, {0x8450,0xf09f},
+ {0x8451,0xf0a0}, {0x8452,0xf0a1}, {0x8453,0xf0a2}, {0x8454,0xf0a3},
+ {0x8455,0xf0a4}, {0x8456,0xf0a5}, {0x8457,0xf0a6}, {0x8458,0xf0a7},
+ {0x8459,0xf0a8}, {0x845a,0xf0a9}, {0x845b,0xf0aa}, {0x845c,0xf0ab},
+ {0x845d,0xf0ac}, {0x845e,0xf0ad}, {0x845f,0xf0ae}, {0x8460,0xf0af},
+ {0x8461,0xf0b0}, {0x8462,0xf0b1}, {0x8463,0xf0b2}, {0x8464,0xf0b3},
+ {0x8465,0xf0b4}, {0x8466,0xf0b5}, {0x8467,0xf0b6}, {0x8468,0xf0b7},
+ {0x8469,0xf0b8}, {0x846a,0xf0b9}, {0x846b,0xf0ba}, {0x846c,0xf0bb},
+ {0x846d,0xf0bc}, {0x846e,0xf0bd}, {0x846f,0xf0be}, {0x8470,0xf0bf},
+ {0x8471,0xf0c0}, {0x8472,0xf0c1}, {0x8473,0xf0c2}, {0x8474,0xf0c3},
+ {0x8475,0xf0c4}, {0x8476,0xf0c5}, {0x8477,0xf0c6}, {0x8478,0xf0c7},
+ {0x8479,0xf0c8}, {0x847a,0xf0c9}, {0x847b,0xf0ca}, {0x847c,0xf0cb},
+ {0x847d,0xf0cc}, {0x847e,0xf0cd}, {0x84a1,0xf0ce}, {0x84a2,0xf0cf},
+ {0x84a3,0xf0d0}, {0x84a4,0xf0d1}, {0x84a5,0xf0d2}, {0x84a6,0xf0d3},
+ {0x84a7,0xf0d4}, {0x84a8,0xf0d5}, {0x84a9,0xf0d6}, {0x84aa,0xf0d7},
+ {0x84ab,0xf0d8}, {0x84ac,0xf0d9}, {0x84ad,0xf0da}, {0x84ae,0xf0db},
+ {0x84af,0xf0dc}, {0x84b0,0xf0dd}, {0x84b1,0xf0de}, {0x84b2,0xf0df},
+ {0x84b3,0xf0e0}, {0x84b4,0xf0e1}, {0x84b5,0xf0e2}, {0x84b6,0xf0e3},
+ {0x84b7,0xf0e4}, {0x84b8,0xf0e5}, {0x84b9,0xf0e6}, {0x84ba,0xf0e7},
+ {0x84bb,0xf0e8}, {0x84bc,0xf0e9}, {0x84bd,0xf0ea}, {0x84be,0xf0eb},
+ {0x84bf,0xf0ec}, {0x84c0,0xf0ed}, {0x84c1,0xf0ee}, {0x84c2,0xf0ef},
+ {0x84c3,0xf0f0}, {0x84c4,0xf0f1}, {0x84c5,0xf0f2}, {0x84c6,0xf0f3},
+ {0x84c7,0xf0f4}, {0x84c8,0xf0f5}, {0x84c9,0xf0f6}, {0x84ca,0xf0f7},
+ {0x84cb,0xf0f8}, {0x84cc,0xf0f9}, {0x84cd,0xf0fa}, {0x84ce,0xf0fb},
+ {0x84cf,0xf0fc}, {0x84d0,0xf0fd}, {0x84d1,0xf0fe}, {0x84d2,0xf0ff},
+ {0x84d3,0xf100}, {0x84d4,0xf101}, {0x84d5,0xf102}, {0x84d6,0xf103},
+ {0x84d7,0xf104}, {0x84d8,0xf105}, {0x84d9,0xf106}, {0x84da,0xf107},
+ {0x84db,0xf108}, {0x84dc,0xf109}, {0x84dd,0xf10a}, {0x84de,0xf10b},
+ {0x84df,0xf10c}, {0x84e0,0xf10d}, {0x84e1,0xf10e}, {0x84e2,0xf10f},
+ {0x84e3,0xf110}, {0x84e4,0xf111}, {0x84e5,0xf112}, {0x84e6,0xf113},
+ {0x84e7,0xf114}, {0x84e8,0xf115}, {0x84e9,0xf116}, {0x84ea,0xf117},
+ {0x84eb,0xf118}, {0x84ec,0xf119}, {0x84ed,0xf11a}, {0x84ee,0xf11b},
+ {0x84ef,0xf11c}, {0x84f0,0xf11d}, {0x84f1,0xf11e}, {0x84f2,0xf11f},
+ {0x84f3,0xf120}, {0x84f4,0xf121}, {0x84f5,0xf122}, {0x84f6,0xf123},
+ {0x84f7,0xf124}, {0x84f8,0xf125}, {0x84f9,0xf126}, {0x84fa,0xf127},
+ {0x84fb,0xf128}, {0x84fc,0xf129}, {0x84fd,0xf12a}, {0x84fe,0xf12b},
+ {0x8540,0xf12c}, {0x8541,0xf12d}, {0x8542,0xf12e}, {0x8543,0xf12f},
+ {0x8544,0xf130}, {0x8545,0xf131}, {0x8546,0xf132}, {0x8547,0xf133},
+ {0x8548,0xf134}, {0x8549,0xf135}, {0x854a,0xf136}, {0x854b,0xf137},
+ {0x854c,0xf138}, {0x854d,0xf139}, {0x854e,0xf13a}, {0x854f,0xf13b},
+ {0x8550,0xf13c}, {0x8551,0xf13d}, {0x8552,0xf13e}, {0x8553,0xf13f},
+ {0x8554,0xf140}, {0x8555,0xf141}, {0x8556,0xf142}, {0x8557,0xf143},
+ {0x8558,0xf144}, {0x8559,0xf145}, {0x855a,0xf146}, {0x855b,0xf147},
+ {0x855c,0xf148}, {0x855d,0xf149}, {0x855e,0xf14a}, {0x855f,0xf14b},
+ {0x8560,0xf14c}, {0x8561,0xf14d}, {0x8562,0xf14e}, {0x8563,0xf14f},
+ {0x8564,0xf150}, {0x8565,0xf151}, {0x8566,0xf152}, {0x8567,0xf153},
+ {0x8568,0xf154}, {0x8569,0xf155}, {0x856a,0xf156}, {0x856b,0xf157},
+ {0x856c,0xf158}, {0x856d,0xf159}, {0x856e,0xf15a}, {0x856f,0xf15b},
+ {0x8570,0xf15c}, {0x8571,0xf15d}, {0x8572,0xf15e}, {0x8573,0xf15f},
+ {0x8574,0xf160}, {0x8575,0xf161}, {0x8576,0xf162}, {0x8577,0xf163},
+ {0x8578,0xf164}, {0x8579,0xf165}, {0x857a,0xf166}, {0x857b,0xf167},
+ {0x857c,0xf168}, {0x857d,0xf169}, {0x857e,0xf16a}, {0x85a1,0xf16b},
+ {0x85a2,0xf16c}, {0x85a3,0xf16d}, {0x85a4,0xf16e}, {0x85a5,0xf16f},
+ {0x85a6,0xf170}, {0x85a7,0xf171}, {0x85a8,0xf172}, {0x85a9,0xf173},
+ {0x85aa,0xf174}, {0x85ab,0xf175}, {0x85ac,0xf176}, {0x85ad,0xf177},
+ {0x85ae,0xf178}, {0x85af,0xf179}, {0x85b0,0xf17a}, {0x85b1,0xf17b},
+ {0x85b2,0xf17c}, {0x85b3,0xf17d}, {0x85b4,0xf17e}, {0x85b5,0xf17f},
+ {0x85b6,0xf180}, {0x85b7,0xf181}, {0x85b8,0xf182}, {0x85b9,0xf183},
+ {0x85ba,0xf184}, {0x85bb,0xf185}, {0x85bc,0xf186}, {0x85bd,0xf187},
+ {0x85be,0xf188}, {0x85bf,0xf189}, {0x85c0,0xf18a}, {0x85c1,0xf18b},
+ {0x85c2,0xf18c}, {0x85c3,0xf18d}, {0x85c4,0xf18e}, {0x85c5,0xf18f},
+ {0x85c6,0xf190}, {0x85c7,0xf191}, {0x85c8,0xf192}, {0x85c9,0xf193},
+ {0x85ca,0xf194}, {0x85cb,0xf195}, {0x85cc,0xf196}, {0x85cd,0xf197},
+ {0x85ce,0xf198}, {0x85cf,0xf199}, {0x85d0,0xf19a}, {0x85d1,0xf19b},
+ {0x85d2,0xf19c}, {0x85d3,0xf19d}, {0x85d4,0xf19e}, {0x85d5,0xf19f},
+ {0x85d6,0xf1a0}, {0x85d7,0xf1a1}, {0x85d8,0xf1a2}, {0x85d9,0xf1a3},
+ {0x85da,0xf1a4}, {0x85db,0xf1a5}, {0x85dc,0xf1a6}, {0x85dd,0xf1a7},
+ {0x85de,0xf1a8}, {0x85df,0xf1a9}, {0x85e0,0xf1aa}, {0x85e1,0xf1ab},
+ {0x85e2,0xf1ac}, {0x85e3,0xf1ad}, {0x85e4,0xf1ae}, {0x85e5,0xf1af},
+ {0x85e6,0xf1b0}, {0x85e7,0xf1b1}, {0x85e8,0xf1b2}, {0x85e9,0xf1b3},
+ {0x85ea,0xf1b4}, {0x85eb,0xf1b5}, {0x85ec,0xf1b6}, {0x85ed,0xf1b7},
+ {0x85ee,0xf1b8}, {0x85ef,0xf1b9}, {0x85f0,0xf1ba}, {0x85f1,0xf1bb},
+ {0x85f2,0xf1bc}, {0x85f3,0xf1bd}, {0x85f4,0xf1be}, {0x85f5,0xf1bf},
+ {0x85f6,0xf1c0}, {0x85f7,0xf1c1}, {0x85f8,0xf1c2}, {0x85f9,0xf1c3},
+ {0x85fa,0xf1c4}, {0x85fb,0xf1c5}, {0x85fc,0xf1c6}, {0x85fd,0xf1c7},
+ {0x85fe,0xf1c8}, {0x8640,0xf1c9}, {0x8641,0xf1ca}, {0x8642,0xf1cb},
+ {0x8643,0xf1cc}, {0x8644,0xf1cd}, {0x8645,0xf1ce}, {0x8646,0xf1cf},
+ {0x8647,0xf1d0}, {0x8648,0xf1d1}, {0x8649,0xf1d2}, {0x864a,0xf1d3},
+ {0x864b,0xf1d4}, {0x864c,0xf1d5}, {0x864d,0xf1d6}, {0x864e,0xf1d7},
+ {0x864f,0xf1d8}, {0x8650,0xf1d9}, {0x8651,0xf1da}, {0x8652,0xf1db},
+ {0x8653,0xf1dc}, {0x8654,0xf1dd}, {0x8655,0xf1de}, {0x8656,0xf1df},
+ {0x8657,0xf1e0}, {0x8658,0xf1e1}, {0x8659,0xf1e2}, {0x865a,0xf1e3},
+ {0x865b,0xf1e4}, {0x865c,0xf1e5}, {0x865d,0xf1e6}, {0x865e,0xf1e7},
+ {0x865f,0xf1e8}, {0x8660,0xf1e9}, {0x8661,0xf1ea}, {0x8662,0xf1eb},
+ {0x8663,0xf1ec}, {0x8664,0xf1ed}, {0x8665,0xf1ee}, {0x8666,0xf1ef},
+ {0x8667,0xf1f0}, {0x8668,0xf1f1}, {0x8669,0xf1f2}, {0x866a,0xf1f3},
+ {0x866b,0xf1f4}, {0x866c,0xf1f5}, {0x866d,0xf1f6}, {0x866e,0xf1f7},
+ {0x866f,0xf1f8}, {0x8670,0xf1f9}, {0x8671,0xf1fa}, {0x8672,0xf1fb},
+ {0x8673,0xf1fc}, {0x8674,0xf1fd}, {0x8675,0xf1fe}, {0x8676,0xf1ff},
+ {0x8677,0xf200}, {0x8678,0xf201}, {0x8679,0xf202}, {0x867a,0xf203},
+ {0x867b,0xf204}, {0x867c,0xf205}, {0x867d,0xf206}, {0x867e,0xf207},
+ {0x86a1,0xf208}, {0x86a2,0xf209}, {0x86a3,0xf20a}, {0x86a4,0xf20b},
+ {0x86a5,0xf20c}, {0x86a6,0xf20d}, {0x86a7,0xf20e}, {0x86a8,0xf20f},
+ {0x86a9,0xf210}, {0x86aa,0xf211}, {0x86ab,0xf212}, {0x86ac,0xf213},
+ {0x86ad,0xf214}, {0x86ae,0xf215}, {0x86af,0xf216}, {0x86b0,0xf217},
+ {0x86b1,0xf218}, {0x86b2,0xf219}, {0x86b3,0xf21a}, {0x86b4,0xf21b},
+ {0x86b5,0xf21c}, {0x86b6,0xf21d}, {0x86b7,0xf21e}, {0x86b8,0xf21f},
+ {0x86b9,0xf220}, {0x86ba,0xf221}, {0x86bb,0xf222}, {0x86bc,0xf223},
+ {0x86bd,0xf224}, {0x86be,0xf225}, {0x86bf,0xf226}, {0x86c0,0xf227},
+ {0x86c1,0xf228}, {0x86c2,0xf229}, {0x86c3,0xf22a}, {0x86c4,0xf22b},
+ {0x86c5,0xf22c}, {0x86c6,0xf22d}, {0x86c7,0xf22e}, {0x86c8,0xf22f},
+ {0x86c9,0xf230}, {0x86ca,0xf231}, {0x86cb,0xf232}, {0x86cc,0xf233},
+ {0x86cd,0xf234}, {0x86ce,0xf235}, {0x86cf,0xf236}, {0x86d0,0xf237},
+ {0x86d1,0xf238}, {0x86d2,0xf239}, {0x86d3,0xf23a}, {0x86d4,0xf23b},
+ {0x86d5,0xf23c}, {0x86d6,0xf23d}, {0x86d7,0xf23e}, {0x86d8,0xf23f},
+ {0x86d9,0xf240}, {0x86da,0xf241}, {0x86db,0xf242}, {0x86dc,0xf243},
+ {0x86dd,0xf244}, {0x86de,0xf245}, {0x86df,0xf246}, {0x86e0,0xf247},
+ {0x86e1,0xf248}, {0x86e2,0xf249}, {0x86e3,0xf24a}, {0x86e4,0xf24b},
+ {0x86e5,0xf24c}, {0x86e6,0xf24d}, {0x86e7,0xf24e}, {0x86e8,0xf24f},
+ {0x86e9,0xf250}, {0x86ea,0xf251}, {0x86eb,0xf252}, {0x86ec,0xf253},
+ {0x86ed,0xf254}, {0x86ee,0xf255}, {0x86ef,0xf256}, {0x86f0,0xf257},
+ {0x86f1,0xf258}, {0x86f2,0xf259}, {0x86f3,0xf25a}, {0x86f4,0xf25b},
+ {0x86f5,0xf25c}, {0x86f6,0xf25d}, {0x86f7,0xf25e}, {0x86f8,0xf25f},
+ {0x86f9,0xf260}, {0x86fa,0xf261}, {0x86fb,0xf262}, {0x86fc,0xf263},
+ {0x86fd,0xf264}, {0x86fe,0xf265}, {0x8740,0xf266}, {0x8741,0xf267},
+ {0x8742,0xf268}, {0x8743,0xf269}, {0x8744,0xf26a}, {0x8745,0xf26b},
+ {0x8746,0xf26c}, {0x8747,0xf26d}, {0x8748,0xf26e}, {0x8749,0xf26f},
+ {0x874a,0xf270}, {0x874b,0xf271}, {0x874c,0xf272}, {0x874d,0xf273},
+ {0x874e,0xf274}, {0x874f,0xf275}, {0x8750,0xf276}, {0x8751,0xf277},
+ {0x8752,0xf278}, {0x8753,0xf279}, {0x8754,0xf27a}, {0x8755,0xf27b},
+ {0x8756,0xf27c}, {0x8757,0xf27d}, {0x8758,0xf27e}, {0x8759,0xf27f},
+ {0x875a,0xf280}, {0x875b,0xf281}, {0x875c,0xf282}, {0x875d,0xf283},
+ {0x875e,0xf284}, {0x875f,0xf285}, {0x8760,0xf286}, {0x8761,0xf287},
+ {0x8762,0xf288}, {0x8763,0xf289}, {0x8764,0xf28a}, {0x8765,0xf28b},
+ {0x8766,0xf28c}, {0x8767,0xf28d}, {0x8768,0xf28e}, {0x8769,0xf28f},
+ {0x876a,0xf290}, {0x876b,0xf291}, {0x876c,0xf292}, {0x876d,0xf293},
+ {0x876e,0xf294}, {0x876f,0xf295}, {0x8770,0xf296}, {0x8771,0xf297},
+ {0x8772,0xf298}, {0x8773,0xf299}, {0x8774,0xf29a}, {0x8775,0xf29b},
+ {0x8776,0xf29c}, {0x8777,0xf29d}, {0x8778,0xf29e}, {0x8779,0xf29f},
+ {0x877a,0xf2a0}, {0x877b,0xf2a1}, {0x877c,0xf2a2}, {0x877d,0xf2a3},
+ {0x877e,0xf2a4}, {0x87a1,0xf2a5}, {0x87a2,0xf2a6}, {0x87a3,0xf2a7},
+ {0x87a4,0xf2a8}, {0x87a5,0xf2a9}, {0x87a6,0xf2aa}, {0x87a7,0xf2ab},
+ {0x87a8,0xf2ac}, {0x87a9,0xf2ad}, {0x87aa,0xf2ae}, {0x87ab,0xf2af},
+ {0x87ac,0xf2b0}, {0x87ad,0xf2b1}, {0x87ae,0xf2b2}, {0x87af,0xf2b3},
+ {0x87b0,0xf2b4}, {0x87b1,0xf2b5}, {0x87b2,0xf2b6}, {0x87b3,0xf2b7},
+ {0x87b4,0xf2b8}, {0x87b5,0xf2b9}, {0x87b6,0xf2ba}, {0x87b7,0xf2bb},
+ {0x87b8,0xf2bc}, {0x87b9,0xf2bd}, {0x87ba,0xf2be}, {0x87bb,0xf2bf},
+ {0x87bc,0xf2c0}, {0x87bd,0xf2c1}, {0x87be,0xf2c2}, {0x87bf,0xf2c3},
+ {0x87c0,0xf2c4}, {0x87c1,0xf2c5}, {0x87c2,0xf2c6}, {0x87c3,0xf2c7},
+ {0x87c4,0xf2c8}, {0x87c5,0xf2c9}, {0x87c6,0xf2ca}, {0x87c7,0xf2cb},
+ {0x87c8,0xf2cc}, {0x87c9,0xf2cd}, {0x87ca,0xf2ce}, {0x87cb,0xf2cf},
+ {0x87cc,0xf2d0}, {0x87cd,0xf2d1}, {0x87ce,0xf2d2}, {0x87cf,0xf2d3},
+ {0x87d0,0xf2d4}, {0x87d1,0xf2d5}, {0x87d2,0xf2d6}, {0x87d3,0xf2d7},
+ {0x87d4,0xf2d8}, {0x87d5,0xf2d9}, {0x87d6,0xf2da}, {0x87d7,0xf2db},
+ {0x87d8,0xf2dc}, {0x87d9,0xf2dd}, {0x87da,0xf2de}, {0x87db,0xf2df},
+ {0x87dc,0xf2e0}, {0x87dd,0xf2e1}, {0x87de,0xf2e2}, {0x87df,0xf2e3},
+ {0x87e0,0xf2e4}, {0x87e1,0xf2e5}, {0x87e2,0xf2e6}, {0x87e3,0xf2e7},
+ {0x87e4,0xf2e8}, {0x87e5,0xf2e9}, {0x87e6,0xf2ea}, {0x87e7,0xf2eb},
+ {0x87e8,0xf2ec}, {0x87e9,0xf2ed}, {0x87ea,0xf2ee}, {0x87eb,0xf2ef},
+ {0x87ec,0xf2f0}, {0x87ed,0xf2f1}, {0x87ee,0xf2f2}, {0x87ef,0xf2f3},
+ {0x87f0,0xf2f4}, {0x87f1,0xf2f5}, {0x87f2,0xf2f6}, {0x87f3,0xf2f7},
+ {0x87f4,0xf2f8}, {0x87f5,0xf2f9}, {0x87f6,0xf2fa}, {0x87f7,0xf2fb},
+ {0x87f8,0xf2fc}, {0x87f9,0xf2fd}, {0x87fa,0xf2fe}, {0x87fb,0xf2ff},
+ {0x87fc,0xf300}, {0x87fd,0xf301}, {0x87fe,0xf302}, {0x8840,0xf303},
+ {0x8841,0xf304}, {0x8842,0xf305}, {0x8843,0xf306}, {0x8844,0xf307},
+ {0x8845,0xf308}, {0x8846,0xf309}, {0x8847,0xf30a}, {0x8848,0xf30b},
+ {0x8849,0xf30c}, {0x884a,0xf30d}, {0x884b,0xf30e}, {0x884c,0xf30f},
+ {0x884d,0xf310}, {0x884e,0xf311}, {0x884f,0xf312}, {0x8850,0xf313},
+ {0x8851,0xf314}, {0x8852,0xf315}, {0x8853,0xf316}, {0x8854,0xf317},
+ {0x8855,0xf318}, {0x8856,0xf319}, {0x8857,0xf31a}, {0x8858,0xf31b},
+ {0x8859,0xf31c}, {0x885a,0xf31d}, {0x885b,0xf31e}, {0x885c,0xf31f},
+ {0x885d,0xf320}, {0x885e,0xf321}, {0x885f,0xf322}, {0x8860,0xf323},
+ {0x8861,0xf324}, {0x8862,0xf325}, {0x8863,0xf326}, {0x8864,0xf327},
+ {0x8865,0xf328}, {0x8866,0xf329}, {0x8867,0xf32a}, {0x8868,0xf32b},
+ {0x8869,0xf32c}, {0x886a,0xf32d}, {0x886b,0xf32e}, {0x886c,0xf32f},
+ {0x886d,0xf330}, {0x886e,0xf331}, {0x886f,0xf332}, {0x8870,0xf333},
+ {0x8871,0xf334}, {0x8872,0xf335}, {0x8873,0xf336}, {0x8874,0xf337},
+ {0x8875,0xf338}, {0x8876,0xf339}, {0x8877,0xf33a}, {0x8878,0xf33b},
+ {0x8879,0xf33c}, {0x887a,0xf33d}, {0x887b,0xf33e}, {0x887c,0xf33f},
+ {0x887d,0xf340}, {0x887e,0xf341}, {0x88a1,0xf342}, {0x88a2,0xf343},
+ {0x88a3,0xf344}, {0x88a4,0xf345}, {0x88a5,0xf346}, {0x88a6,0xf347},
+ {0x88a7,0xf348}, {0x88a8,0xf349}, {0x88a9,0xf34a}, {0x88aa,0xf34b},
+ {0x88ab,0xf34c}, {0x88ac,0xf34d}, {0x88ad,0xf34e}, {0x88ae,0xf34f},
+ {0x88af,0xf350}, {0x88b0,0xf351}, {0x88b1,0xf352}, {0x88b2,0xf353},
+ {0x88b3,0xf354}, {0x88b4,0xf355}, {0x88b5,0xf356}, {0x88b6,0xf357},
+ {0x88b7,0xf358}, {0x88b8,0xf359}, {0x88b9,0xf35a}, {0x88ba,0xf35b},
+ {0x88bb,0xf35c}, {0x88bc,0xf35d}, {0x88bd,0xf35e}, {0x88be,0xf35f},
+ {0x88bf,0xf360}, {0x88c0,0xf361}, {0x88c1,0xf362}, {0x88c2,0xf363},
+ {0x88c3,0xf364}, {0x88c4,0xf365}, {0x88c5,0xf366}, {0x88c6,0xf367},
+ {0x88c7,0xf368}, {0x88c8,0xf369}, {0x88c9,0xf36a}, {0x88ca,0xf36b},
+ {0x88cb,0xf36c}, {0x88cc,0xf36d}, {0x88cd,0xf36e}, {0x88ce,0xf36f},
+ {0x88cf,0xf370}, {0x88d0,0xf371}, {0x88d1,0xf372}, {0x88d2,0xf373},
+ {0x88d3,0xf374}, {0x88d4,0xf375}, {0x88d5,0xf376}, {0x88d6,0xf377},
+ {0x88d7,0xf378}, {0x88d8,0xf379}, {0x88d9,0xf37a}, {0x88da,0xf37b},
+ {0x88db,0xf37c}, {0x88dc,0xf37d}, {0x88dd,0xf37e}, {0x88de,0xf37f},
+ {0x88df,0xf380}, {0x88e0,0xf381}, {0x88e1,0xf382}, {0x88e2,0xf383},
+ {0x88e3,0xf384}, {0x88e4,0xf385}, {0x88e5,0xf386}, {0x88e6,0xf387},
+ {0x88e7,0xf388}, {0x88e8,0xf389}, {0x88e9,0xf38a}, {0x88ea,0xf38b},
+ {0x88eb,0xf38c}, {0x88ec,0xf38d}, {0x88ed,0xf38e}, {0x88ee,0xf38f},
+ {0x88ef,0xf390}, {0x88f0,0xf391}, {0x88f1,0xf392}, {0x88f2,0xf393},
+ {0x88f3,0xf394}, {0x88f4,0xf395}, {0x88f5,0xf396}, {0x88f6,0xf397},
+ {0x88f7,0xf398}, {0x88f8,0xf399}, {0x88f9,0xf39a}, {0x88fa,0xf39b},
+ {0x88fb,0xf39c}, {0x88fc,0xf39d}, {0x88fd,0xf39e}, {0x88fe,0xf39f},
+ {0x8940,0xf3a0}, {0x8941,0xf3a1}, {0x8942,0xf3a2}, {0x8943,0xf3a3},
+ {0x8944,0xf3a4}, {0x8945,0xf3a5}, {0x8946,0xf3a6}, {0x8947,0xf3a7},
+ {0x8948,0xf3a8}, {0x8949,0xf3a9}, {0x894a,0xf3aa}, {0x894b,0xf3ab},
+ {0x894c,0xf3ac}, {0x894d,0xf3ad}, {0x894e,0xf3ae}, {0x894f,0xf3af},
+ {0x8950,0xf3b0}, {0x8951,0xf3b1}, {0x8952,0xf3b2}, {0x8953,0xf3b3},
+ {0x8954,0xf3b4}, {0x8955,0xf3b5}, {0x8956,0xf3b6}, {0x8957,0xf3b7},
+ {0x8958,0xf3b8}, {0x8959,0xf3b9}, {0x895a,0xf3ba}, {0x895b,0xf3bb},
+ {0x895c,0xf3bc}, {0x895d,0xf3bd}, {0x895e,0xf3be}, {0x895f,0xf3bf},
+ {0x8960,0xf3c0}, {0x8961,0xf3c1}, {0x8962,0xf3c2}, {0x8963,0xf3c3},
+ {0x8964,0xf3c4}, {0x8965,0xf3c5}, {0x8966,0xf3c6}, {0x8967,0xf3c7},
+ {0x8968,0xf3c8}, {0x8969,0xf3c9}, {0x896a,0xf3ca}, {0x896b,0xf3cb},
+ {0x896c,0xf3cc}, {0x896d,0xf3cd}, {0x896e,0xf3ce}, {0x896f,0xf3cf},
+ {0x8970,0xf3d0}, {0x8971,0xf3d1}, {0x8972,0xf3d2}, {0x8973,0xf3d3},
+ {0x8974,0xf3d4}, {0x8975,0xf3d5}, {0x8976,0xf3d6}, {0x8977,0xf3d7},
+ {0x8978,0xf3d8}, {0x8979,0xf3d9}, {0x897a,0xf3da}, {0x897b,0xf3db},
+ {0x897c,0xf3dc}, {0x897d,0xf3dd}, {0x897e,0xf3de}, {0x89a1,0xf3df},
+ {0x89a2,0xf3e0}, {0x89a3,0xf3e1}, {0x89a4,0xf3e2}, {0x89a5,0xf3e3},
+ {0x89a6,0xf3e4}, {0x89a7,0xf3e5}, {0x89a8,0xf3e6}, {0x89a9,0xf3e7},
+ {0x89aa,0xf3e8}, {0x89ab,0xf3e9}, {0x89ac,0xf3ea}, {0x89ad,0xf3eb},
+ {0x89ae,0xf3ec}, {0x89af,0xf3ed}, {0x89b0,0xf3ee}, {0x89b1,0xf3ef},
+ {0x89b2,0xf3f0}, {0x89b3,0xf3f1}, {0x89b4,0xf3f2}, {0x89b5,0xf3f3},
+ {0x89b6,0xf3f4}, {0x89b7,0xf3f5}, {0x89b8,0xf3f6}, {0x89b9,0xf3f7},
+ {0x89ba,0xf3f8}, {0x89bb,0xf3f9}, {0x89bc,0xf3fa}, {0x89bd,0xf3fb},
+ {0x89be,0xf3fc}, {0x89bf,0xf3fd}, {0x89c0,0xf3fe}, {0x89c1,0xf3ff},
+ {0x89c2,0xf400}, {0x89c3,0xf401}, {0x89c4,0xf402}, {0x89c5,0xf403},
+ {0x89c6,0xf404}, {0x89c7,0xf405}, {0x89c8,0xf406}, {0x89c9,0xf407},
+ {0x89ca,0xf408}, {0x89cb,0xf409}, {0x89cc,0xf40a}, {0x89cd,0xf40b},
+ {0x89ce,0xf40c}, {0x89cf,0xf40d}, {0x89d0,0xf40e}, {0x89d1,0xf40f},
+ {0x89d2,0xf410}, {0x89d3,0xf411}, {0x89d4,0xf412}, {0x89d5,0xf413},
+ {0x89d6,0xf414}, {0x89d7,0xf415}, {0x89d8,0xf416}, {0x89d9,0xf417},
+ {0x89da,0xf418}, {0x89db,0xf419}, {0x89dc,0xf41a}, {0x89dd,0xf41b},
+ {0x89de,0xf41c}, {0x89df,0xf41d}, {0x89e0,0xf41e}, {0x89e1,0xf41f},
+ {0x89e2,0xf420}, {0x89e3,0xf421}, {0x89e4,0xf422}, {0x89e5,0xf423},
+ {0x89e6,0xf424}, {0x89e7,0xf425}, {0x89e8,0xf426}, {0x89e9,0xf427},
+ {0x89ea,0xf428}, {0x89eb,0xf429}, {0x89ec,0xf42a}, {0x89ed,0xf42b},
+ {0x89ee,0xf42c}, {0x89ef,0xf42d}, {0x89f0,0xf42e}, {0x89f1,0xf42f},
+ {0x89f2,0xf430}, {0x89f3,0xf431}, {0x89f4,0xf432}, {0x89f5,0xf433},
+ {0x89f6,0xf434}, {0x89f7,0xf435}, {0x89f8,0xf436}, {0x89f9,0xf437},
+ {0x89fa,0xf438}, {0x89fb,0xf439}, {0x89fc,0xf43a}, {0x89fd,0xf43b},
+ {0x89fe,0xf43c}, {0x8a40,0xf43d}, {0x8a41,0xf43e}, {0x8a42,0xf43f},
+ {0x8a43,0xf440}, {0x8a44,0xf441}, {0x8a45,0xf442}, {0x8a46,0xf443},
+ {0x8a47,0xf444}, {0x8a48,0xf445}, {0x8a49,0xf446}, {0x8a4a,0xf447},
+ {0x8a4b,0xf448}, {0x8a4c,0xf449}, {0x8a4d,0xf44a}, {0x8a4e,0xf44b},
+ {0x8a4f,0xf44c}, {0x8a50,0xf44d}, {0x8a51,0xf44e}, {0x8a52,0xf44f},
+ {0x8a53,0xf450}, {0x8a54,0xf451}, {0x8a55,0xf452}, {0x8a56,0xf453},
+ {0x8a57,0xf454}, {0x8a58,0xf455}, {0x8a59,0xf456}, {0x8a5a,0xf457},
+ {0x8a5b,0xf458}, {0x8a5c,0xf459}, {0x8a5d,0xf45a}, {0x8a5e,0xf45b},
+ {0x8a5f,0xf45c}, {0x8a60,0xf45d}, {0x8a61,0xf45e}, {0x8a62,0xf45f},
+ {0x8a63,0xf460}, {0x8a64,0xf461}, {0x8a65,0xf462}, {0x8a66,0xf463},
+ {0x8a67,0xf464}, {0x8a68,0xf465}, {0x8a69,0xf466}, {0x8a6a,0xf467},
+ {0x8a6b,0xf468}, {0x8a6c,0xf469}, {0x8a6d,0xf46a}, {0x8a6e,0xf46b},
+ {0x8a6f,0xf46c}, {0x8a70,0xf46d}, {0x8a71,0xf46e}, {0x8a72,0xf46f},
+ {0x8a73,0xf470}, {0x8a74,0xf471}, {0x8a75,0xf472}, {0x8a76,0xf473},
+ {0x8a77,0xf474}, {0x8a78,0xf475}, {0x8a79,0xf476}, {0x8a7a,0xf477},
+ {0x8a7b,0xf478}, {0x8a7c,0xf479}, {0x8a7d,0xf47a}, {0x8a7e,0xf47b},
+ {0x8aa1,0xf47c}, {0x8aa2,0xf47d}, {0x8aa3,0xf47e}, {0x8aa4,0xf47f},
+ {0x8aa5,0xf480}, {0x8aa6,0xf481}, {0x8aa7,0xf482}, {0x8aa8,0xf483},
+ {0x8aa9,0xf484}, {0x8aaa,0xf485}, {0x8aab,0xf486}, {0x8aac,0xf487},
+ {0x8aad,0xf488}, {0x8aae,0xf489}, {0x8aaf,0xf48a}, {0x8ab0,0xf48b},
+ {0x8ab1,0xf48c}, {0x8ab2,0xf48d}, {0x8ab3,0xf48e}, {0x8ab4,0xf48f},
+ {0x8ab5,0xf490}, {0x8ab6,0xf491}, {0x8ab7,0xf492}, {0x8ab8,0xf493},
+ {0x8ab9,0xf494}, {0x8aba,0xf495}, {0x8abb,0xf496}, {0x8abc,0xf497},
+ {0x8abd,0xf498}, {0x8abe,0xf499}, {0x8abf,0xf49a}, {0x8ac0,0xf49b},
+ {0x8ac1,0xf49c}, {0x8ac2,0xf49d}, {0x8ac3,0xf49e}, {0x8ac4,0xf49f},
+ {0x8ac5,0xf4a0}, {0x8ac6,0xf4a1}, {0x8ac7,0xf4a2}, {0x8ac8,0xf4a3},
+ {0x8ac9,0xf4a4}, {0x8aca,0xf4a5}, {0x8acb,0xf4a6}, {0x8acc,0xf4a7},
+ {0x8acd,0xf4a8}, {0x8ace,0xf4a9}, {0x8acf,0xf4aa}, {0x8ad0,0xf4ab},
+ {0x8ad1,0xf4ac}, {0x8ad2,0xf4ad}, {0x8ad3,0xf4ae}, {0x8ad4,0xf4af},
+ {0x8ad5,0xf4b0}, {0x8ad6,0xf4b1}, {0x8ad7,0xf4b2}, {0x8ad8,0xf4b3},
+ {0x8ad9,0xf4b4}, {0x8ada,0xf4b5}, {0x8adb,0xf4b6}, {0x8adc,0xf4b7},
+ {0x8add,0xf4b8}, {0x8ade,0xf4b9}, {0x8adf,0xf4ba}, {0x8ae0,0xf4bb},
+ {0x8ae1,0xf4bc}, {0x8ae2,0xf4bd}, {0x8ae3,0xf4be}, {0x8ae4,0xf4bf},
+ {0x8ae5,0xf4c0}, {0x8ae6,0xf4c1}, {0x8ae7,0xf4c2}, {0x8ae8,0xf4c3},
+ {0x8ae9,0xf4c4}, {0x8aea,0xf4c5}, {0x8aeb,0xf4c6}, {0x8aec,0xf4c7},
+ {0x8aed,0xf4c8}, {0x8aee,0xf4c9}, {0x8aef,0xf4ca}, {0x8af0,0xf4cb},
+ {0x8af1,0xf4cc}, {0x8af2,0xf4cd}, {0x8af3,0xf4ce}, {0x8af4,0xf4cf},
+ {0x8af5,0xf4d0}, {0x8af6,0xf4d1}, {0x8af7,0xf4d2}, {0x8af8,0xf4d3},
+ {0x8af9,0xf4d4}, {0x8afa,0xf4d5}, {0x8afb,0xf4d6}, {0x8afc,0xf4d7},
+ {0x8afd,0xf4d8}, {0x8afe,0xf4d9}, {0x8b40,0xf4da}, {0x8b41,0xf4db},
+ {0x8b42,0xf4dc}, {0x8b43,0xf4dd}, {0x8b44,0xf4de}, {0x8b45,0xf4df},
+ {0x8b46,0xf4e0}, {0x8b47,0xf4e1}, {0x8b48,0xf4e2}, {0x8b49,0xf4e3},
+ {0x8b4a,0xf4e4}, {0x8b4b,0xf4e5}, {0x8b4c,0xf4e6}, {0x8b4d,0xf4e7},
+ {0x8b4e,0xf4e8}, {0x8b4f,0xf4e9}, {0x8b50,0xf4ea}, {0x8b51,0xf4eb},
+ {0x8b52,0xf4ec}, {0x8b53,0xf4ed}, {0x8b54,0xf4ee}, {0x8b55,0xf4ef},
+ {0x8b56,0xf4f0}, {0x8b57,0xf4f1}, {0x8b58,0xf4f2}, {0x8b59,0xf4f3},
+ {0x8b5a,0xf4f4}, {0x8b5b,0xf4f5}, {0x8b5c,0xf4f6}, {0x8b5d,0xf4f7},
+ {0x8b5e,0xf4f8}, {0x8b5f,0xf4f9}, {0x8b60,0xf4fa}, {0x8b61,0xf4fb},
+ {0x8b62,0xf4fc}, {0x8b63,0xf4fd}, {0x8b64,0xf4fe}, {0x8b65,0xf4ff},
+ {0x8b66,0xf500}, {0x8b67,0xf501}, {0x8b68,0xf502}, {0x8b69,0xf503},
+ {0x8b6a,0xf504}, {0x8b6b,0xf505}, {0x8b6c,0xf506}, {0x8b6d,0xf507},
+ {0x8b6e,0xf508}, {0x8b6f,0xf509}, {0x8b70,0xf50a}, {0x8b71,0xf50b},
+ {0x8b72,0xf50c}, {0x8b73,0xf50d}, {0x8b74,0xf50e}, {0x8b75,0xf50f},
+ {0x8b76,0xf510}, {0x8b77,0xf511}, {0x8b78,0xf512}, {0x8b79,0xf513},
+ {0x8b7a,0xf514}, {0x8b7b,0xf515}, {0x8b7c,0xf516}, {0x8b7d,0xf517},
+ {0x8b7e,0xf518}, {0x8ba1,0xf519}, {0x8ba2,0xf51a}, {0x8ba3,0xf51b},
+ {0x8ba4,0xf51c}, {0x8ba5,0xf51d}, {0x8ba6,0xf51e}, {0x8ba7,0xf51f},
+ {0x8ba8,0xf520}, {0x8ba9,0xf521}, {0x8baa,0xf522}, {0x8bab,0xf523},
+ {0x8bac,0xf524}, {0x8bad,0xf525}, {0x8bae,0xf526}, {0x8baf,0xf527},
+ {0x8bb0,0xf528}, {0x8bb1,0xf529}, {0x8bb2,0xf52a}, {0x8bb3,0xf52b},
+ {0x8bb4,0xf52c}, {0x8bb5,0xf52d}, {0x8bb6,0xf52e}, {0x8bb7,0xf52f},
+ {0x8bb8,0xf530}, {0x8bb9,0xf531}, {0x8bba,0xf532}, {0x8bbb,0xf533},
+ {0x8bbc,0xf534}, {0x8bbd,0xf535}, {0x8bbe,0xf536}, {0x8bbf,0xf537},
+ {0x8bc0,0xf538}, {0x8bc1,0xf539}, {0x8bc2,0xf53a}, {0x8bc3,0xf53b},
+ {0x8bc4,0xf53c}, {0x8bc5,0xf53d}, {0x8bc6,0xf53e}, {0x8bc7,0xf53f},
+ {0x8bc8,0xf540}, {0x8bc9,0xf541}, {0x8bca,0xf542}, {0x8bcb,0xf543},
+ {0x8bcc,0xf544}, {0x8bcd,0xf545}, {0x8bce,0xf546}, {0x8bcf,0xf547},
+ {0x8bd0,0xf548}, {0x8bd1,0xf549}, {0x8bd2,0xf54a}, {0x8bd3,0xf54b},
+ {0x8bd4,0xf54c}, {0x8bd5,0xf54d}, {0x8bd6,0xf54e}, {0x8bd7,0xf54f},
+ {0x8bd8,0xf550}, {0x8bd9,0xf551}, {0x8bda,0xf552}, {0x8bdb,0xf553},
+ {0x8bdc,0xf554}, {0x8bdd,0xf555}, {0x8bde,0xf556}, {0x8bdf,0xf557},
+ {0x8be0,0xf558}, {0x8be1,0xf559}, {0x8be2,0xf55a}, {0x8be3,0xf55b},
+ {0x8be4,0xf55c}, {0x8be5,0xf55d}, {0x8be6,0xf55e}, {0x8be7,0xf55f},
+ {0x8be8,0xf560}, {0x8be9,0xf561}, {0x8bea,0xf562}, {0x8beb,0xf563},
+ {0x8bec,0xf564}, {0x8bed,0xf565}, {0x8bee,0xf566}, {0x8bef,0xf567},
+ {0x8bf0,0xf568}, {0x8bf1,0xf569}, {0x8bf2,0xf56a}, {0x8bf3,0xf56b},
+ {0x8bf4,0xf56c}, {0x8bf5,0xf56d}, {0x8bf6,0xf56e}, {0x8bf7,0xf56f},
+ {0x8bf8,0xf570}, {0x8bf9,0xf571}, {0x8bfa,0xf572}, {0x8bfb,0xf573},
+ {0x8bfc,0xf574}, {0x8bfd,0xf575}, {0x8bfe,0xf576}, {0x8c40,0xf577},
+ {0x8c41,0xf578}, {0x8c42,0xf579}, {0x8c43,0xf57a}, {0x8c44,0xf57b},
+ {0x8c45,0xf57c}, {0x8c46,0xf57d}, {0x8c47,0xf57e}, {0x8c48,0xf57f},
+ {0x8c49,0xf580}, {0x8c4a,0xf581}, {0x8c4b,0xf582}, {0x8c4c,0xf583},
+ {0x8c4d,0xf584}, {0x8c4e,0xf585}, {0x8c4f,0xf586}, {0x8c50,0xf587},
+ {0x8c51,0xf588}, {0x8c52,0xf589}, {0x8c53,0xf58a}, {0x8c54,0xf58b},
+ {0x8c55,0xf58c}, {0x8c56,0xf58d}, {0x8c57,0xf58e}, {0x8c58,0xf58f},
+ {0x8c59,0xf590}, {0x8c5a,0xf591}, {0x8c5b,0xf592}, {0x8c5c,0xf593},
+ {0x8c5d,0xf594}, {0x8c5e,0xf595}, {0x8c5f,0xf596}, {0x8c60,0xf597},
+ {0x8c61,0xf598}, {0x8c62,0xf599}, {0x8c63,0xf59a}, {0x8c64,0xf59b},
+ {0x8c65,0xf59c}, {0x8c66,0xf59d}, {0x8c67,0xf59e}, {0x8c68,0xf59f},
+ {0x8c69,0xf5a0}, {0x8c6a,0xf5a1}, {0x8c6b,0xf5a2}, {0x8c6c,0xf5a3},
+ {0x8c6d,0xf5a4}, {0x8c6e,0xf5a5}, {0x8c6f,0xf5a6}, {0x8c70,0xf5a7},
+ {0x8c71,0xf5a8}, {0x8c72,0xf5a9}, {0x8c73,0xf5aa}, {0x8c74,0xf5ab},
+ {0x8c75,0xf5ac}, {0x8c76,0xf5ad}, {0x8c77,0xf5ae}, {0x8c78,0xf5af},
+ {0x8c79,0xf5b0}, {0x8c7a,0xf5b1}, {0x8c7b,0xf5b2}, {0x8c7c,0xf5b3},
+ {0x8c7d,0xf5b4}, {0x8c7e,0xf5b5}, {0x8ca1,0xf5b6}, {0x8ca2,0xf5b7},
+ {0x8ca3,0xf5b8}, {0x8ca4,0xf5b9}, {0x8ca5,0xf5ba}, {0x8ca6,0xf5bb},
+ {0x8ca7,0xf5bc}, {0x8ca8,0xf5bd}, {0x8ca9,0xf5be}, {0x8caa,0xf5bf},
+ {0x8cab,0xf5c0}, {0x8cac,0xf5c1}, {0x8cad,0xf5c2}, {0x8cae,0xf5c3},
+ {0x8caf,0xf5c4}, {0x8cb0,0xf5c5}, {0x8cb1,0xf5c6}, {0x8cb2,0xf5c7},
+ {0x8cb3,0xf5c8}, {0x8cb4,0xf5c9}, {0x8cb5,0xf5ca}, {0x8cb6,0xf5cb},
+ {0x8cb7,0xf5cc}, {0x8cb8,0xf5cd}, {0x8cb9,0xf5ce}, {0x8cba,0xf5cf},
+ {0x8cbb,0xf5d0}, {0x8cbc,0xf5d1}, {0x8cbd,0xf5d2}, {0x8cbe,0xf5d3},
+ {0x8cbf,0xf5d4}, {0x8cc0,0xf5d5}, {0x8cc1,0xf5d6}, {0x8cc2,0xf5d7},
+ {0x8cc3,0xf5d8}, {0x8cc4,0xf5d9}, {0x8cc5,0xf5da}, {0x8cc6,0xf5db},
+ {0x8cc7,0xf5dc}, {0x8cc8,0xf5dd}, {0x8cc9,0xf5de}, {0x8cca,0xf5df},
+ {0x8ccb,0xf5e0}, {0x8ccc,0xf5e1}, {0x8ccd,0xf5e2}, {0x8cce,0xf5e3},
+ {0x8ccf,0xf5e4}, {0x8cd0,0xf5e5}, {0x8cd1,0xf5e6}, {0x8cd2,0xf5e7},
+ {0x8cd3,0xf5e8}, {0x8cd4,0xf5e9}, {0x8cd5,0xf5ea}, {0x8cd6,0xf5eb},
+ {0x8cd7,0xf5ec}, {0x8cd8,0xf5ed}, {0x8cd9,0xf5ee}, {0x8cda,0xf5ef},
+ {0x8cdb,0xf5f0}, {0x8cdc,0xf5f1}, {0x8cdd,0xf5f2}, {0x8cde,0xf5f3},
+ {0x8cdf,0xf5f4}, {0x8ce0,0xf5f5}, {0x8ce1,0xf5f6}, {0x8ce2,0xf5f7},
+ {0x8ce3,0xf5f8}, {0x8ce4,0xf5f9}, {0x8ce5,0xf5fa}, {0x8ce6,0xf5fb},
+ {0x8ce7,0xf5fc}, {0x8ce8,0xf5fd}, {0x8ce9,0xf5fe}, {0x8cea,0xf5ff},
+ {0x8ceb,0xf600}, {0x8cec,0xf601}, {0x8ced,0xf602}, {0x8cee,0xf603},
+ {0x8cef,0xf604}, {0x8cf0,0xf605}, {0x8cf1,0xf606}, {0x8cf2,0xf607},
+ {0x8cf3,0xf608}, {0x8cf4,0xf609}, {0x8cf5,0xf60a}, {0x8cf6,0xf60b},
+ {0x8cf7,0xf60c}, {0x8cf8,0xf60d}, {0x8cf9,0xf60e}, {0x8cfa,0xf60f},
+ {0x8cfb,0xf610}, {0x8cfc,0xf611}, {0x8cfd,0xf612}, {0x8cfe,0xf613},
+ {0x8d40,0xf614}, {0x8d41,0xf615}, {0x8d42,0xf616}, {0x8d43,0xf617},
+ {0x8d44,0xf618}, {0x8d45,0xf619}, {0x8d46,0xf61a}, {0x8d47,0xf61b},
+ {0x8d48,0xf61c}, {0x8d49,0xf61d}, {0x8d4a,0xf61e}, {0x8d4b,0xf61f},
+ {0x8d4c,0xf620}, {0x8d4d,0xf621}, {0x8d4e,0xf622}, {0x8d4f,0xf623},
+ {0x8d50,0xf624}, {0x8d51,0xf625}, {0x8d52,0xf626}, {0x8d53,0xf627},
+ {0x8d54,0xf628}, {0x8d55,0xf629}, {0x8d56,0xf62a}, {0x8d57,0xf62b},
+ {0x8d58,0xf62c}, {0x8d59,0xf62d}, {0x8d5a,0xf62e}, {0x8d5b,0xf62f},
+ {0x8d5c,0xf630}, {0x8d5d,0xf631}, {0x8d5e,0xf632}, {0x8d5f,0xf633},
+ {0x8d60,0xf634}, {0x8d61,0xf635}, {0x8d62,0xf636}, {0x8d63,0xf637},
+ {0x8d64,0xf638}, {0x8d65,0xf639}, {0x8d66,0xf63a}, {0x8d67,0xf63b},
+ {0x8d68,0xf63c}, {0x8d69,0xf63d}, {0x8d6a,0xf63e}, {0x8d6b,0xf63f},
+ {0x8d6c,0xf640}, {0x8d6d,0xf641}, {0x8d6e,0xf642}, {0x8d6f,0xf643},
+ {0x8d70,0xf644}, {0x8d71,0xf645}, {0x8d72,0xf646}, {0x8d73,0xf647},
+ {0x8d74,0xf648}, {0x8d75,0xf649}, {0x8d76,0xf64a}, {0x8d77,0xf64b},
+ {0x8d78,0xf64c}, {0x8d79,0xf64d}, {0x8d7a,0xf64e}, {0x8d7b,0xf64f},
+ {0x8d7c,0xf650}, {0x8d7d,0xf651}, {0x8d7e,0xf652}, {0x8da1,0xf653},
+ {0x8da2,0xf654}, {0x8da3,0xf655}, {0x8da4,0xf656}, {0x8da5,0xf657},
+ {0x8da6,0xf658}, {0x8da7,0xf659}, {0x8da8,0xf65a}, {0x8da9,0xf65b},
+ {0x8daa,0xf65c}, {0x8dab,0xf65d}, {0x8dac,0xf65e}, {0x8dad,0xf65f},
+ {0x8dae,0xf660}, {0x8daf,0xf661}, {0x8db0,0xf662}, {0x8db1,0xf663},
+ {0x8db2,0xf664}, {0x8db3,0xf665}, {0x8db4,0xf666}, {0x8db5,0xf667},
+ {0x8db6,0xf668}, {0x8db7,0xf669}, {0x8db8,0xf66a}, {0x8db9,0xf66b},
+ {0x8dba,0xf66c}, {0x8dbb,0xf66d}, {0x8dbc,0xf66e}, {0x8dbd,0xf66f},
+ {0x8dbe,0xf670}, {0x8dbf,0xf671}, {0x8dc0,0xf672}, {0x8dc1,0xf673},
+ {0x8dc2,0xf674}, {0x8dc3,0xf675}, {0x8dc4,0xf676}, {0x8dc5,0xf677},
+ {0x8dc6,0xf678}, {0x8dc7,0xf679}, {0x8dc8,0xf67a}, {0x8dc9,0xf67b},
+ {0x8dca,0xf67c}, {0x8dcb,0xf67d}, {0x8dcc,0xf67e}, {0x8dcd,0xf67f},
+ {0x8dce,0xf680}, {0x8dcf,0xf681}, {0x8dd0,0xf682}, {0x8dd1,0xf683},
+ {0x8dd2,0xf684}, {0x8dd3,0xf685}, {0x8dd4,0xf686}, {0x8dd5,0xf687},
+ {0x8dd6,0xf688}, {0x8dd7,0xf689}, {0x8dd8,0xf68a}, {0x8dd9,0xf68b},
+ {0x8dda,0xf68c}, {0x8ddb,0xf68d}, {0x8ddc,0xf68e}, {0x8ddd,0xf68f},
+ {0x8dde,0xf690}, {0x8ddf,0xf691}, {0x8de0,0xf692}, {0x8de1,0xf693},
+ {0x8de2,0xf694}, {0x8de3,0xf695}, {0x8de4,0xf696}, {0x8de5,0xf697},
+ {0x8de6,0xf698}, {0x8de7,0xf699}, {0x8de8,0xf69a}, {0x8de9,0xf69b},
+ {0x8dea,0xf69c}, {0x8deb,0xf69d}, {0x8dec,0xf69e}, {0x8ded,0xf69f},
+ {0x8dee,0xf6a0}, {0x8def,0xf6a1}, {0x8df0,0xf6a2}, {0x8df1,0xf6a3},
+ {0x8df2,0xf6a4}, {0x8df3,0xf6a5}, {0x8df4,0xf6a6}, {0x8df5,0xf6a7},
+ {0x8df6,0xf6a8}, {0x8df7,0xf6a9}, {0x8df8,0xf6aa}, {0x8df9,0xf6ab},
+ {0x8dfa,0xf6ac}, {0x8dfb,0xf6ad}, {0x8dfc,0xf6ae}, {0x8dfd,0xf6af},
+ {0x8dfe,0xf6b0}
+};
+static const B5Map b5_8E40_to_uc_map[] = {
+ /* 0x8E40 - 0xA0FE */
+ {0x8e40,0xe311}, {0x8e41,0xe312}, {0x8e42,0xe313}, {0x8e43,0xe314},
+ {0x8e44,0xe315}, {0x8e45,0xe316}, {0x8e46,0xe317}, {0x8e47,0xe318},
+ {0x8e48,0xe319}, {0x8e49,0xe31a}, {0x8e4a,0xe31b}, {0x8e4b,0xe31c},
+ {0x8e4c,0xe31d}, {0x8e4d,0xe31e}, {0x8e4e,0xe31f}, {0x8e4f,0xe320},
+ {0x8e50,0xe321}, {0x8e51,0xe322}, {0x8e52,0xe323}, {0x8e53,0xe324},
+ {0x8e54,0xe325}, {0x8e55,0xe326}, {0x8e56,0xe327}, {0x8e57,0xe328},
+ {0x8e58,0xe329}, {0x8e59,0xe32a}, {0x8e5a,0xe32b}, {0x8e5b,0xe32c},
+ {0x8e5c,0xe32d}, {0x8e5d,0xe32e}, {0x8e5e,0xe32f}, {0x8e5f,0xe330},
+ {0x8e60,0xe331}, {0x8e61,0xe332}, {0x8e62,0xe333}, {0x8e63,0xe334},
+ {0x8e64,0xe335}, {0x8e65,0xe336}, {0x8e66,0xe337}, {0x8e67,0xe338},
+ {0x8e68,0xe339}, {0x8e69,0xe33a}, {0x8e6a,0xe33b}, {0x8e6b,0xe33c},
+ {0x8e6c,0xe33d}, {0x8e6d,0xe33e}, {0x8e6e,0xe33f}, {0x8e6f,0xe340},
+ {0x8e70,0xe341}, {0x8e71,0xe342}, {0x8e72,0xe343}, {0x8e73,0xe344},
+ {0x8e74,0xe345}, {0x8e75,0xe346}, {0x8e76,0xe347}, {0x8e77,0xe348},
+ {0x8e78,0xe349}, {0x8e79,0xe34a}, {0x8e7a,0xe34b}, {0x8e7b,0xe34c},
+ {0x8e7c,0xe34d}, {0x8e7d,0xe34e}, {0x8e7e,0xe34f}, {0x8ea1,0xe350},
+ {0x8ea2,0xe351}, {0x8ea3,0xe352}, {0x8ea4,0xe353}, {0x8ea5,0xe354},
+ {0x8ea6,0xe355}, {0x8ea7,0xe356}, {0x8ea8,0xe357}, {0x8ea9,0xe358},
+ {0x8eaa,0xe359}, {0x8eab,0xe35a}, {0x8eac,0xe35b}, {0x8ead,0xe35c},
+ {0x8eae,0xe35d}, {0x8eaf,0xe35e}, {0x8eb0,0xe35f}, {0x8eb1,0xe360},
+ {0x8eb2,0xe361}, {0x8eb3,0xe362}, {0x8eb4,0xe363}, {0x8eb5,0xe364},
+ {0x8eb6,0xe365}, {0x8eb7,0xe366}, {0x8eb8,0xe367}, {0x8eb9,0xe368},
+ {0x8eba,0xe369}, {0x8ebb,0xe36a}, {0x8ebc,0xe36b}, {0x8ebd,0xe36c},
+ {0x8ebe,0xe36d}, {0x8ebf,0xe36e}, {0x8ec0,0xe36f}, {0x8ec1,0xe370},
+ {0x8ec2,0xe371}, {0x8ec3,0xe372}, {0x8ec4,0xe373}, {0x8ec5,0xe374},
+ {0x8ec6,0xe375}, {0x8ec7,0xe376}, {0x8ec8,0xe377}, {0x8ec9,0xe378},
+ {0x8eca,0xe379}, {0x8ecb,0xe37a}, {0x8ecc,0xe37b}, {0x8ecd,0xe37c},
+ {0x8ece,0xe37d}, {0x8ecf,0xe37e}, {0x8ed0,0xe37f}, {0x8ed1,0xe380},
+ {0x8ed2,0xe381}, {0x8ed3,0xe382}, {0x8ed4,0xe383}, {0x8ed5,0xe384},
+ {0x8ed6,0xe385}, {0x8ed7,0xe386}, {0x8ed8,0xe387}, {0x8ed9,0xe388},
+ {0x8eda,0xe389}, {0x8edb,0xe38a}, {0x8edc,0xe38b}, {0x8edd,0xe38c},
+ {0x8ede,0xe38d}, {0x8edf,0xe38e}, {0x8ee0,0xe38f}, {0x8ee1,0xe390},
+ {0x8ee2,0xe391}, {0x8ee3,0xe392}, {0x8ee4,0xe393}, {0x8ee5,0xe394},
+ {0x8ee6,0xe395}, {0x8ee7,0xe396}, {0x8ee8,0xe397}, {0x8ee9,0xe398},
+ {0x8eea,0xe399}, {0x8eeb,0xe39a}, {0x8eec,0xe39b}, {0x8eed,0xe39c},
+ {0x8eee,0xe39d}, {0x8eef,0xe39e}, {0x8ef0,0xe39f}, {0x8ef1,0xe3a0},
+ {0x8ef2,0xe3a1}, {0x8ef3,0xe3a2}, {0x8ef4,0xe3a3}, {0x8ef5,0xe3a4},
+ {0x8ef6,0xe3a5}, {0x8ef7,0xe3a6}, {0x8ef8,0xe3a7}, {0x8ef9,0xe3a8},
+ {0x8efa,0xe3a9}, {0x8efb,0xe3aa}, {0x8efc,0xe3ab}, {0x8efd,0xe3ac},
+ {0x8efe,0xe3ad}, {0x8f40,0xe3ae}, {0x8f41,0xe3af}, {0x8f42,0xe3b0},
+ {0x8f43,0xe3b1}, {0x8f44,0xe3b2}, {0x8f45,0xe3b3}, {0x8f46,0xe3b4},
+ {0x8f47,0xe3b5}, {0x8f48,0xe3b6}, {0x8f49,0xe3b7}, {0x8f4a,0xe3b8},
+ {0x8f4b,0xe3b9}, {0x8f4c,0xe3ba}, {0x8f4d,0xe3bb}, {0x8f4e,0xe3bc},
+ {0x8f4f,0xe3bd}, {0x8f50,0xe3be}, {0x8f51,0xe3bf}, {0x8f52,0xe3c0},
+ {0x8f53,0xe3c1}, {0x8f54,0xe3c2}, {0x8f55,0xe3c3}, {0x8f56,0xe3c4},
+ {0x8f57,0xe3c5}, {0x8f58,0xe3c6}, {0x8f59,0xe3c7}, {0x8f5a,0xe3c8},
+ {0x8f5b,0xe3c9}, {0x8f5c,0xe3ca}, {0x8f5d,0xe3cb}, {0x8f5e,0xe3cc},
+ {0x8f5f,0xe3cd}, {0x8f60,0xe3ce}, {0x8f61,0xe3cf}, {0x8f62,0xe3d0},
+ {0x8f63,0xe3d1}, {0x8f64,0xe3d2}, {0x8f65,0xe3d3}, {0x8f66,0xe3d4},
+ {0x8f67,0xe3d5}, {0x8f68,0xe3d6}, {0x8f69,0xe3d7}, {0x8f6a,0xe3d8},
+ {0x8f6b,0xe3d9}, {0x8f6c,0xe3da}, {0x8f6d,0xe3db}, {0x8f6e,0xe3dc},
+ {0x8f6f,0xe3dd}, {0x8f70,0xe3de}, {0x8f71,0xe3df}, {0x8f72,0xe3e0},
+ {0x8f73,0xe3e1}, {0x8f74,0xe3e2}, {0x8f75,0xe3e3}, {0x8f76,0xe3e4},
+ {0x8f77,0xe3e5}, {0x8f78,0xe3e6}, {0x8f79,0xe3e7}, {0x8f7a,0xe3e8},
+ {0x8f7b,0xe3e9}, {0x8f7c,0xe3ea}, {0x8f7d,0xe3eb}, {0x8f7e,0xe3ec},
+ {0x8fa1,0xe3ed}, {0x8fa2,0xe3ee}, {0x8fa3,0xe3ef}, {0x8fa4,0xe3f0},
+ {0x8fa5,0xe3f1}, {0x8fa6,0xe3f2}, {0x8fa7,0xe3f3}, {0x8fa8,0xe3f4},
+ {0x8fa9,0xe3f5}, {0x8faa,0xe3f6}, {0x8fab,0xe3f7}, {0x8fac,0xe3f8},
+ {0x8fad,0xe3f9}, {0x8fae,0xe3fa}, {0x8faf,0xe3fb}, {0x8fb0,0xe3fc},
+ {0x8fb1,0xe3fd}, {0x8fb2,0xe3fe}, {0x8fb3,0xe3ff}, {0x8fb4,0xe400},
+ {0x8fb5,0xe401}, {0x8fb6,0xe402}, {0x8fb7,0xe403}, {0x8fb8,0xe404},
+ {0x8fb9,0xe405}, {0x8fba,0xe406}, {0x8fbb,0xe407}, {0x8fbc,0xe408},
+ {0x8fbd,0xe409}, {0x8fbe,0xe40a}, {0x8fbf,0xe40b}, {0x8fc0,0xe40c},
+ {0x8fc1,0xe40d}, {0x8fc2,0xe40e}, {0x8fc3,0xe40f}, {0x8fc4,0xe410},
+ {0x8fc5,0xe411}, {0x8fc6,0xe412}, {0x8fc7,0xe413}, {0x8fc8,0xe414},
+ {0x8fc9,0xe415}, {0x8fca,0xe416}, {0x8fcb,0xe417}, {0x8fcc,0xe418},
+ {0x8fcd,0xe419}, {0x8fce,0xe41a}, {0x8fcf,0xe41b}, {0x8fd0,0xe41c},
+ {0x8fd1,0xe41d}, {0x8fd2,0xe41e}, {0x8fd3,0xe41f}, {0x8fd4,0xe420},
+ {0x8fd5,0xe421}, {0x8fd6,0xe422}, {0x8fd7,0xe423}, {0x8fd8,0xe424},
+ {0x8fd9,0xe425}, {0x8fda,0xe426}, {0x8fdb,0xe427}, {0x8fdc,0xe428},
+ {0x8fdd,0xe429}, {0x8fde,0xe42a}, {0x8fdf,0xe42b}, {0x8fe0,0xe42c},
+ {0x8fe1,0xe42d}, {0x8fe2,0xe42e}, {0x8fe3,0xe42f}, {0x8fe4,0xe430},
+ {0x8fe5,0xe431}, {0x8fe6,0xe432}, {0x8fe7,0xe433}, {0x8fe8,0xe434},
+ {0x8fe9,0xe435}, {0x8fea,0xe436}, {0x8feb,0xe437}, {0x8fec,0xe438},
+ {0x8fed,0xe439}, {0x8fee,0xe43a}, {0x8fef,0xe43b}, {0x8ff0,0xe43c},
+ {0x8ff1,0xe43d}, {0x8ff2,0xe43e}, {0x8ff3,0xe43f}, {0x8ff4,0xe440},
+ {0x8ff5,0xe441}, {0x8ff6,0xe442}, {0x8ff7,0xe443}, {0x8ff8,0xe444},
+ {0x8ff9,0xe445}, {0x8ffa,0xe446}, {0x8ffb,0xe447}, {0x8ffc,0xe448},
+ {0x8ffd,0xe449}, {0x8ffe,0xe44a}, {0x9040,0xe44b}, {0x9041,0xe44c},
+ {0x9042,0xe44d}, {0x9043,0xe44e}, {0x9044,0xe44f}, {0x9045,0xe450},
+ {0x9046,0xe451}, {0x9047,0xe452}, {0x9048,0xe453}, {0x9049,0xe454},
+ {0x904a,0xe455}, {0x904b,0xe456}, {0x904c,0xe457}, {0x904d,0xe458},
+ {0x904e,0xe459}, {0x904f,0xe45a}, {0x9050,0xe45b}, {0x9051,0xe45c},
+ {0x9052,0xe45d}, {0x9053,0xe45e}, {0x9054,0xe45f}, {0x9055,0xe460},
+ {0x9056,0xe461}, {0x9057,0xe462}, {0x9058,0xe463}, {0x9059,0xe464},
+ {0x905a,0xe465}, {0x905b,0xe466}, {0x905c,0xe467}, {0x905d,0xe468},
+ {0x905e,0xe469}, {0x905f,0xe46a}, {0x9060,0xe46b}, {0x9061,0xe46c},
+ {0x9062,0xe46d}, {0x9063,0xe46e}, {0x9064,0xe46f}, {0x9065,0xe470},
+ {0x9066,0xe471}, {0x9067,0xe472}, {0x9068,0xe473}, {0x9069,0xe474},
+ {0x906a,0xe475}, {0x906b,0xe476}, {0x906c,0xe477}, {0x906d,0xe478},
+ {0x906e,0xe479}, {0x906f,0xe47a}, {0x9070,0xe47b}, {0x9071,0xe47c},
+ {0x9072,0xe47d}, {0x9073,0xe47e}, {0x9074,0xe47f}, {0x9075,0xe480},
+ {0x9076,0xe481}, {0x9077,0xe482}, {0x9078,0xe483}, {0x9079,0xe484},
+ {0x907a,0xe485}, {0x907b,0xe486}, {0x907c,0xe487}, {0x907d,0xe488},
+ {0x907e,0xe489}, {0x90a1,0xe48a}, {0x90a2,0xe48b}, {0x90a3,0xe48c},
+ {0x90a4,0xe48d}, {0x90a5,0xe48e}, {0x90a6,0xe48f}, {0x90a7,0xe490},
+ {0x90a8,0xe491}, {0x90a9,0xe492}, {0x90aa,0xe493}, {0x90ab,0xe494},
+ {0x90ac,0xe495}, {0x90ad,0xe496}, {0x90ae,0xe497}, {0x90af,0xe498},
+ {0x90b0,0xe499}, {0x90b1,0xe49a}, {0x90b2,0xe49b}, {0x90b3,0xe49c},
+ {0x90b4,0xe49d}, {0x90b5,0xe49e}, {0x90b6,0xe49f}, {0x90b7,0xe4a0},
+ {0x90b8,0xe4a1}, {0x90b9,0xe4a2}, {0x90ba,0xe4a3}, {0x90bb,0xe4a4},
+ {0x90bc,0xe4a5}, {0x90bd,0xe4a6}, {0x90be,0xe4a7}, {0x90bf,0xe4a8},
+ {0x90c0,0xe4a9}, {0x90c1,0xe4aa}, {0x90c2,0xe4ab}, {0x90c3,0xe4ac},
+ {0x90c4,0xe4ad}, {0x90c5,0xe4ae}, {0x90c6,0xe4af}, {0x90c7,0xe4b0},
+ {0x90c8,0xe4b1}, {0x90c9,0xe4b2}, {0x90ca,0xe4b3}, {0x90cb,0xe4b4},
+ {0x90cc,0xe4b5}, {0x90cd,0xe4b6}, {0x90ce,0xe4b7}, {0x90cf,0xe4b8},
+ {0x90d0,0xe4b9}, {0x90d1,0xe4ba}, {0x90d2,0xe4bb}, {0x90d3,0xe4bc},
+ {0x90d4,0xe4bd}, {0x90d5,0xe4be}, {0x90d6,0xe4bf}, {0x90d7,0xe4c0},
+ {0x90d8,0xe4c1}, {0x90d9,0xe4c2}, {0x90da,0xe4c3}, {0x90db,0xe4c4},
+ {0x90dc,0xe4c5}, {0x90dd,0xe4c6}, {0x90de,0xe4c7}, {0x90df,0xe4c8},
+ {0x90e0,0xe4c9}, {0x90e1,0xe4ca}, {0x90e2,0xe4cb}, {0x90e3,0xe4cc},
+ {0x90e4,0xe4cd}, {0x90e5,0xe4ce}, {0x90e6,0xe4cf}, {0x90e7,0xe4d0},
+ {0x90e8,0xe4d1}, {0x90e9,0xe4d2}, {0x90ea,0xe4d3}, {0x90eb,0xe4d4},
+ {0x90ec,0xe4d5}, {0x90ed,0xe4d6}, {0x90ee,0xe4d7}, {0x90ef,0xe4d8},
+ {0x90f0,0xe4d9}, {0x90f1,0xe4da}, {0x90f2,0xe4db}, {0x90f3,0xe4dc},
+ {0x90f4,0xe4dd}, {0x90f5,0xe4de}, {0x90f6,0xe4df}, {0x90f7,0xe4e0},
+ {0x90f8,0xe4e1}, {0x90f9,0xe4e2}, {0x90fa,0xe4e3}, {0x90fb,0xe4e4},
+ {0x90fc,0xe4e5}, {0x90fd,0xe4e6}, {0x90fe,0xe4e7}, {0x9140,0xe4e8},
+ {0x9141,0xe4e9}, {0x9142,0xe4ea}, {0x9143,0xe4eb}, {0x9144,0xe4ec},
+ {0x9145,0xe4ed}, {0x9146,0xe4ee}, {0x9147,0xe4ef}, {0x9148,0xe4f0},
+ {0x9149,0xe4f1}, {0x914a,0xe4f2}, {0x914b,0xe4f3}, {0x914c,0xe4f4},
+ {0x914d,0xe4f5}, {0x914e,0xe4f6}, {0x914f,0xe4f7}, {0x9150,0xe4f8},
+ {0x9151,0xe4f9}, {0x9152,0xe4fa}, {0x9153,0xe4fb}, {0x9154,0xe4fc},
+ {0x9155,0xe4fd}, {0x9156,0xe4fe}, {0x9157,0xe4ff}, {0x9158,0xe500},
+ {0x9159,0xe501}, {0x915a,0xe502}, {0x915b,0xe503}, {0x915c,0xe504},
+ {0x915d,0xe505}, {0x915e,0xe506}, {0x915f,0xe507}, {0x9160,0xe508},
+ {0x9161,0xe509}, {0x9162,0xe50a}, {0x9163,0xe50b}, {0x9164,0xe50c},
+ {0x9165,0xe50d}, {0x9166,0xe50e}, {0x9167,0xe50f}, {0x9168,0xe510},
+ {0x9169,0xe511}, {0x916a,0xe512}, {0x916b,0xe513}, {0x916c,0xe514},
+ {0x916d,0xe515}, {0x916e,0xe516}, {0x916f,0xe517}, {0x9170,0xe518},
+ {0x9171,0xe519}, {0x9172,0xe51a}, {0x9173,0xe51b}, {0x9174,0xe51c},
+ {0x9175,0xe51d}, {0x9176,0xe51e}, {0x9177,0xe51f}, {0x9178,0xe520},
+ {0x9179,0xe521}, {0x917a,0xe522}, {0x917b,0xe523}, {0x917c,0xe524},
+ {0x917d,0xe525}, {0x917e,0xe526}, {0x91a1,0xe527}, {0x91a2,0xe528},
+ {0x91a3,0xe529}, {0x91a4,0xe52a}, {0x91a5,0xe52b}, {0x91a6,0xe52c},
+ {0x91a7,0xe52d}, {0x91a8,0xe52e}, {0x91a9,0xe52f}, {0x91aa,0xe530},
+ {0x91ab,0xe531}, {0x91ac,0xe532}, {0x91ad,0xe533}, {0x91ae,0xe534},
+ {0x91af,0xe535}, {0x91b0,0xe536}, {0x91b1,0xe537}, {0x91b2,0xe538},
+ {0x91b3,0xe539}, {0x91b4,0xe53a}, {0x91b5,0xe53b}, {0x91b6,0xe53c},
+ {0x91b7,0xe53d}, {0x91b8,0xe53e}, {0x91b9,0xe53f}, {0x91ba,0xe540},
+ {0x91bb,0xe541}, {0x91bc,0xe542}, {0x91bd,0xe543}, {0x91be,0xe544},
+ {0x91bf,0xe545}, {0x91c0,0xe546}, {0x91c1,0xe547}, {0x91c2,0xe548},
+ {0x91c3,0xe549}, {0x91c4,0xe54a}, {0x91c5,0xe54b}, {0x91c6,0xe54c},
+ {0x91c7,0xe54d}, {0x91c8,0xe54e}, {0x91c9,0xe54f}, {0x91ca,0xe550},
+ {0x91cb,0xe551}, {0x91cc,0xe552}, {0x91cd,0xe553}, {0x91ce,0xe554},
+ {0x91cf,0xe555}, {0x91d0,0xe556}, {0x91d1,0xe557}, {0x91d2,0xe558},
+ {0x91d3,0xe559}, {0x91d4,0xe55a}, {0x91d5,0xe55b}, {0x91d6,0xe55c},
+ {0x91d7,0xe55d}, {0x91d8,0xe55e}, {0x91d9,0xe55f}, {0x91da,0xe560},
+ {0x91db,0xe561}, {0x91dc,0xe562}, {0x91dd,0xe563}, {0x91de,0xe564},
+ {0x91df,0xe565}, {0x91e0,0xe566}, {0x91e1,0xe567}, {0x91e2,0xe568},
+ {0x91e3,0xe569}, {0x91e4,0xe56a}, {0x91e5,0xe56b}, {0x91e6,0xe56c},
+ {0x91e7,0xe56d}, {0x91e8,0xe56e}, {0x91e9,0xe56f}, {0x91ea,0xe570},
+ {0x91eb,0xe571}, {0x91ec,0xe572}, {0x91ed,0xe573}, {0x91ee,0xe574},
+ {0x91ef,0xe575}, {0x91f0,0xe576}, {0x91f1,0xe577}, {0x91f2,0xe578},
+ {0x91f3,0xe579}, {0x91f4,0xe57a}, {0x91f5,0xe57b}, {0x91f6,0xe57c},
+ {0x91f7,0xe57d}, {0x91f8,0xe57e}, {0x91f9,0xe57f}, {0x91fa,0xe580},
+ {0x91fb,0xe581}, {0x91fc,0xe582}, {0x91fd,0xe583}, {0x91fe,0xe584},
+ {0x9240,0xe585}, {0x9241,0xe586}, {0x9242,0xe587}, {0x9243,0xe588},
+ {0x9244,0xe589}, {0x9245,0xe58a}, {0x9246,0xe58b}, {0x9247,0xe58c},
+ {0x9248,0xe58d}, {0x9249,0xe58e}, {0x924a,0xe58f}, {0x924b,0xe590},
+ {0x924c,0xe591}, {0x924d,0xe592}, {0x924e,0xe593}, {0x924f,0xe594},
+ {0x9250,0xe595}, {0x9251,0xe596}, {0x9252,0xe597}, {0x9253,0xe598},
+ {0x9254,0xe599}, {0x9255,0xe59a}, {0x9256,0xe59b}, {0x9257,0xe59c},
+ {0x9258,0xe59d}, {0x9259,0xe59e}, {0x925a,0xe59f}, {0x925b,0xe5a0},
+ {0x925c,0xe5a1}, {0x925d,0xe5a2}, {0x925e,0xe5a3}, {0x925f,0xe5a4},
+ {0x9260,0xe5a5}, {0x9261,0xe5a6}, {0x9262,0xe5a7}, {0x9263,0xe5a8},
+ {0x9264,0xe5a9}, {0x9265,0xe5aa}, {0x9266,0xe5ab}, {0x9267,0xe5ac},
+ {0x9268,0xe5ad}, {0x9269,0xe5ae}, {0x926a,0xe5af}, {0x926b,0xe5b0},
+ {0x926c,0xe5b1}, {0x926d,0xe5b2}, {0x926e,0xe5b3}, {0x926f,0xe5b4},
+ {0x9270,0xe5b5}, {0x9271,0xe5b6}, {0x9272,0xe5b7}, {0x9273,0xe5b8},
+ {0x9274,0xe5b9}, {0x9275,0xe5ba}, {0x9276,0xe5bb}, {0x9277,0xe5bc},
+ {0x9278,0xe5bd}, {0x9279,0xe5be}, {0x927a,0xe5bf}, {0x927b,0xe5c0},
+ {0x927c,0xe5c1}, {0x927d,0xe5c2}, {0x927e,0xe5c3}, {0x92a1,0xe5c4},
+ {0x92a2,0xe5c5}, {0x92a3,0xe5c6}, {0x92a4,0xe5c7}, {0x92a5,0xe5c8},
+ {0x92a6,0xe5c9}, {0x92a7,0xe5ca}, {0x92a8,0xe5cb}, {0x92a9,0xe5cc},
+ {0x92aa,0xe5cd}, {0x92ab,0xe5ce}, {0x92ac,0xe5cf}, {0x92ad,0xe5d0},
+ {0x92ae,0xe5d1}, {0x92af,0xe5d2}, {0x92b0,0xe5d3}, {0x92b1,0xe5d4},
+ {0x92b2,0xe5d5}, {0x92b3,0xe5d6}, {0x92b4,0xe5d7}, {0x92b5,0xe5d8},
+ {0x92b6,0xe5d9}, {0x92b7,0xe5da}, {0x92b8,0xe5db}, {0x92b9,0xe5dc},
+ {0x92ba,0xe5dd}, {0x92bb,0xe5de}, {0x92bc,0xe5df}, {0x92bd,0xe5e0},
+ {0x92be,0xe5e1}, {0x92bf,0xe5e2}, {0x92c0,0xe5e3}, {0x92c1,0xe5e4},
+ {0x92c2,0xe5e5}, {0x92c3,0xe5e6}, {0x92c4,0xe5e7}, {0x92c5,0xe5e8},
+ {0x92c6,0xe5e9}, {0x92c7,0xe5ea}, {0x92c8,0xe5eb}, {0x92c9,0xe5ec},
+ {0x92ca,0xe5ed}, {0x92cb,0xe5ee}, {0x92cc,0xe5ef}, {0x92cd,0xe5f0},
+ {0x92ce,0xe5f1}, {0x92cf,0xe5f2}, {0x92d0,0xe5f3}, {0x92d1,0xe5f4},
+ {0x92d2,0xe5f5}, {0x92d3,0xe5f6}, {0x92d4,0xe5f7}, {0x92d5,0xe5f8},
+ {0x92d6,0xe5f9}, {0x92d7,0xe5fa}, {0x92d8,0xe5fb}, {0x92d9,0xe5fc},
+ {0x92da,0xe5fd}, {0x92db,0xe5fe}, {0x92dc,0xe5ff}, {0x92dd,0xe600},
+ {0x92de,0xe601}, {0x92df,0xe602}, {0x92e0,0xe603}, {0x92e1,0xe604},
+ {0x92e2,0xe605}, {0x92e3,0xe606}, {0x92e4,0xe607}, {0x92e5,0xe608},
+ {0x92e6,0xe609}, {0x92e7,0xe60a}, {0x92e8,0xe60b}, {0x92e9,0xe60c},
+ {0x92ea,0xe60d}, {0x92eb,0xe60e}, {0x92ec,0xe60f}, {0x92ed,0xe610},
+ {0x92ee,0xe611}, {0x92ef,0xe612}, {0x92f0,0xe613}, {0x92f1,0xe614},
+ {0x92f2,0xe615}, {0x92f3,0xe616}, {0x92f4,0xe617}, {0x92f5,0xe618},
+ {0x92f6,0xe619}, {0x92f7,0xe61a}, {0x92f8,0xe61b}, {0x92f9,0xe61c},
+ {0x92fa,0xe61d}, {0x92fb,0xe61e}, {0x92fc,0xe61f}, {0x92fd,0xe620},
+ {0x92fe,0xe621}, {0x9340,0xe622}, {0x9341,0xe623}, {0x9342,0xe624},
+ {0x9343,0xe625}, {0x9344,0xe626}, {0x9345,0xe627}, {0x9346,0xe628},
+ {0x9347,0xe629}, {0x9348,0xe62a}, {0x9349,0xe62b}, {0x934a,0xe62c},
+ {0x934b,0xe62d}, {0x934c,0xe62e}, {0x934d,0xe62f}, {0x934e,0xe630},
+ {0x934f,0xe631}, {0x9350,0xe632}, {0x9351,0xe633}, {0x9352,0xe634},
+ {0x9353,0xe635}, {0x9354,0xe636}, {0x9355,0xe637}, {0x9356,0xe638},
+ {0x9357,0xe639}, {0x9358,0xe63a}, {0x9359,0xe63b}, {0x935a,0xe63c},
+ {0x935b,0xe63d}, {0x935c,0xe63e}, {0x935d,0xe63f}, {0x935e,0xe640},
+ {0x935f,0xe641}, {0x9360,0xe642}, {0x9361,0xe643}, {0x9362,0xe644},
+ {0x9363,0xe645}, {0x9364,0xe646}, {0x9365,0xe647}, {0x9366,0xe648},
+ {0x9367,0xe649}, {0x9368,0xe64a}, {0x9369,0xe64b}, {0x936a,0xe64c},
+ {0x936b,0xe64d}, {0x936c,0xe64e}, {0x936d,0xe64f}, {0x936e,0xe650},
+ {0x936f,0xe651}, {0x9370,0xe652}, {0x9371,0xe653}, {0x9372,0xe654},
+ {0x9373,0xe655}, {0x9374,0xe656}, {0x9375,0xe657}, {0x9376,0xe658},
+ {0x9377,0xe659}, {0x9378,0xe65a}, {0x9379,0xe65b}, {0x937a,0xe65c},
+ {0x937b,0xe65d}, {0x937c,0xe65e}, {0x937d,0xe65f}, {0x937e,0xe660},
+ {0x93a1,0xe661}, {0x93a2,0xe662}, {0x93a3,0xe663}, {0x93a4,0xe664},
+ {0x93a5,0xe665}, {0x93a6,0xe666}, {0x93a7,0xe667}, {0x93a8,0xe668},
+ {0x93a9,0xe669}, {0x93aa,0xe66a}, {0x93ab,0xe66b}, {0x93ac,0xe66c},
+ {0x93ad,0xe66d}, {0x93ae,0xe66e}, {0x93af,0xe66f}, {0x93b0,0xe670},
+ {0x93b1,0xe671}, {0x93b2,0xe672}, {0x93b3,0xe673}, {0x93b4,0xe674},
+ {0x93b5,0xe675}, {0x93b6,0xe676}, {0x93b7,0xe677}, {0x93b8,0xe678},
+ {0x93b9,0xe679}, {0x93ba,0xe67a}, {0x93bb,0xe67b}, {0x93bc,0xe67c},
+ {0x93bd,0xe67d}, {0x93be,0xe67e}, {0x93bf,0xe67f}, {0x93c0,0xe680},
+ {0x93c1,0xe681}, {0x93c2,0xe682}, {0x93c3,0xe683}, {0x93c4,0xe684},
+ {0x93c5,0xe685}, {0x93c6,0xe686}, {0x93c7,0xe687}, {0x93c8,0xe688},
+ {0x93c9,0xe689}, {0x93ca,0xe68a}, {0x93cb,0xe68b}, {0x93cc,0xe68c},
+ {0x93cd,0xe68d}, {0x93ce,0xe68e}, {0x93cf,0xe68f}, {0x93d0,0xe690},
+ {0x93d1,0xe691}, {0x93d2,0xe692}, {0x93d3,0xe693}, {0x93d4,0xe694},
+ {0x93d5,0xe695}, {0x93d6,0xe696}, {0x93d7,0xe697}, {0x93d8,0xe698},
+ {0x93d9,0xe699}, {0x93da,0xe69a}, {0x93db,0xe69b}, {0x93dc,0xe69c},
+ {0x93dd,0xe69d}, {0x93de,0xe69e}, {0x93df,0xe69f}, {0x93e0,0xe6a0},
+ {0x93e1,0xe6a1}, {0x93e2,0xe6a2}, {0x93e3,0xe6a3}, {0x93e4,0xe6a4},
+ {0x93e5,0xe6a5}, {0x93e6,0xe6a6}, {0x93e7,0xe6a7}, {0x93e8,0xe6a8},
+ {0x93e9,0xe6a9}, {0x93ea,0xe6aa}, {0x93eb,0xe6ab}, {0x93ec,0xe6ac},
+ {0x93ed,0xe6ad}, {0x93ee,0xe6ae}, {0x93ef,0xe6af}, {0x93f0,0xe6b0},
+ {0x93f1,0xe6b1}, {0x93f2,0xe6b2}, {0x93f3,0xe6b3}, {0x93f4,0xe6b4},
+ {0x93f5,0xe6b5}, {0x93f6,0xe6b6}, {0x93f7,0xe6b7}, {0x93f8,0xe6b8},
+ {0x93f9,0xe6b9}, {0x93fa,0xe6ba}, {0x93fb,0xe6bb}, {0x93fc,0xe6bc},
+ {0x93fd,0xe6bd}, {0x93fe,0xe6be}, {0x9440,0xe6bf}, {0x9441,0xe6c0},
+ {0x9442,0xe6c1}, {0x9443,0xe6c2}, {0x9444,0xe6c3}, {0x9445,0xe6c4},
+ {0x9446,0xe6c5}, {0x9447,0xe6c6}, {0x9448,0xe6c7}, {0x9449,0xe6c8},
+ {0x944a,0xe6c9}, {0x944b,0xe6ca}, {0x944c,0xe6cb}, {0x944d,0xe6cc},
+ {0x944e,0xe6cd}, {0x944f,0xe6ce}, {0x9450,0xe6cf}, {0x9451,0xe6d0},
+ {0x9452,0xe6d1}, {0x9453,0xe6d2}, {0x9454,0xe6d3}, {0x9455,0xe6d4},
+ {0x9456,0xe6d5}, {0x9457,0xe6d6}, {0x9458,0xe6d7}, {0x9459,0xe6d8},
+ {0x945a,0xe6d9}, {0x945b,0xe6da}, {0x945c,0xe6db}, {0x945d,0xe6dc},
+ {0x945e,0xe6dd}, {0x945f,0xe6de}, {0x9460,0xe6df}, {0x9461,0xe6e0},
+ {0x9462,0xe6e1}, {0x9463,0xe6e2}, {0x9464,0xe6e3}, {0x9465,0xe6e4},
+ {0x9466,0xe6e5}, {0x9467,0xe6e6}, {0x9468,0xe6e7}, {0x9469,0xe6e8},
+ {0x946a,0xe6e9}, {0x946b,0xe6ea}, {0x946c,0xe6eb}, {0x946d,0xe6ec},
+ {0x946e,0xe6ed}, {0x946f,0xe6ee}, {0x9470,0xe6ef}, {0x9471,0xe6f0},
+ {0x9472,0xe6f1}, {0x9473,0xe6f2}, {0x9474,0xe6f3}, {0x9475,0xe6f4},
+ {0x9476,0xe6f5}, {0x9477,0xe6f6}, {0x9478,0xe6f7}, {0x9479,0xe6f8},
+ {0x947a,0xe6f9}, {0x947b,0xe6fa}, {0x947c,0xe6fb}, {0x947d,0xe6fc},
+ {0x947e,0xe6fd}, {0x94a1,0xe6fe}, {0x94a2,0xe6ff}, {0x94a3,0xe700},
+ {0x94a4,0xe701}, {0x94a5,0xe702}, {0x94a6,0xe703}, {0x94a7,0xe704},
+ {0x94a8,0xe705}, {0x94a9,0xe706}, {0x94aa,0xe707}, {0x94ab,0xe708},
+ {0x94ac,0xe709}, {0x94ad,0xe70a}, {0x94ae,0xe70b}, {0x94af,0xe70c},
+ {0x94b0,0xe70d}, {0x94b1,0xe70e}, {0x94b2,0xe70f}, {0x94b3,0xe710},
+ {0x94b4,0xe711}, {0x94b5,0xe712}, {0x94b6,0xe713}, {0x94b7,0xe714},
+ {0x94b8,0xe715}, {0x94b9,0xe716}, {0x94ba,0xe717}, {0x94bb,0xe718},
+ {0x94bc,0xe719}, {0x94bd,0xe71a}, {0x94be,0xe71b}, {0x94bf,0xe71c},
+ {0x94c0,0xe71d}, {0x94c1,0xe71e}, {0x94c2,0xe71f}, {0x94c3,0xe720},
+ {0x94c4,0xe721}, {0x94c5,0xe722}, {0x94c6,0xe723}, {0x94c7,0xe724},
+ {0x94c8,0xe725}, {0x94c9,0xe726}, {0x94ca,0xe727}, {0x94cb,0xe728},
+ {0x94cc,0xe729}, {0x94cd,0xe72a}, {0x94ce,0xe72b}, {0x94cf,0xe72c},
+ {0x94d0,0xe72d}, {0x94d1,0xe72e}, {0x94d2,0xe72f}, {0x94d3,0xe730},
+ {0x94d4,0xe731}, {0x94d5,0xe732}, {0x94d6,0xe733}, {0x94d7,0xe734},
+ {0x94d8,0xe735}, {0x94d9,0xe736}, {0x94da,0xe737}, {0x94db,0xe738},
+ {0x94dc,0xe739}, {0x94dd,0xe73a}, {0x94de,0xe73b}, {0x94df,0xe73c},
+ {0x94e0,0xe73d}, {0x94e1,0xe73e}, {0x94e2,0xe73f}, {0x94e3,0xe740},
+ {0x94e4,0xe741}, {0x94e5,0xe742}, {0x94e6,0xe743}, {0x94e7,0xe744},
+ {0x94e8,0xe745}, {0x94e9,0xe746}, {0x94ea,0xe747}, {0x94eb,0xe748},
+ {0x94ec,0xe749}, {0x94ed,0xe74a}, {0x94ee,0xe74b}, {0x94ef,0xe74c},
+ {0x94f0,0xe74d}, {0x94f1,0xe74e}, {0x94f2,0xe74f}, {0x94f3,0xe750},
+ {0x94f4,0xe751}, {0x94f5,0xe752}, {0x94f6,0xe753}, {0x94f7,0xe754},
+ {0x94f8,0xe755}, {0x94f9,0xe756}, {0x94fa,0xe757}, {0x94fb,0xe758},
+ {0x94fc,0xe759}, {0x94fd,0xe75a}, {0x94fe,0xe75b}, {0x9540,0xe75c},
+ {0x9541,0xe75d}, {0x9542,0xe75e}, {0x9543,0xe75f}, {0x9544,0xe760},
+ {0x9545,0xe761}, {0x9546,0xe762}, {0x9547,0xe763}, {0x9548,0xe764},
+ {0x9549,0xe765}, {0x954a,0xe766}, {0x954b,0xe767}, {0x954c,0xe768},
+ {0x954d,0xe769}, {0x954e,0xe76a}, {0x954f,0xe76b}, {0x9550,0xe76c},
+ {0x9551,0xe76d}, {0x9552,0xe76e}, {0x9553,0xe76f}, {0x9554,0xe770},
+ {0x9555,0xe771}, {0x9556,0xe772}, {0x9557,0xe773}, {0x9558,0xe774},
+ {0x9559,0xe775}, {0x955a,0xe776}, {0x955b,0xe777}, {0x955c,0xe778},
+ {0x955d,0xe779}, {0x955e,0xe77a}, {0x955f,0xe77b}, {0x9560,0xe77c},
+ {0x9561,0xe77d}, {0x9562,0xe77e}, {0x9563,0xe77f}, {0x9564,0xe780},
+ {0x9565,0xe781}, {0x9566,0xe782}, {0x9567,0xe783}, {0x9568,0xe784},
+ {0x9569,0xe785}, {0x956a,0xe786}, {0x956b,0xe787}, {0x956c,0xe788},
+ {0x956d,0xe789}, {0x956e,0xe78a}, {0x956f,0xe78b}, {0x9570,0xe78c},
+ {0x9571,0xe78d}, {0x9572,0xe78e}, {0x9573,0xe78f}, {0x9574,0xe790},
+ {0x9575,0xe791}, {0x9576,0xe792}, {0x9577,0xe793}, {0x9578,0xe794},
+ {0x9579,0xe795}, {0x957a,0xe796}, {0x957b,0xe797}, {0x957c,0xe798},
+ {0x957d,0xe799}, {0x957e,0xe79a}, {0x95a1,0xe79b}, {0x95a2,0xe79c},
+ {0x95a3,0xe79d}, {0x95a4,0xe79e}, {0x95a5,0xe79f}, {0x95a6,0xe7a0},
+ {0x95a7,0xe7a1}, {0x95a8,0xe7a2}, {0x95a9,0xe7a3}, {0x95aa,0xe7a4},
+ {0x95ab,0xe7a5}, {0x95ac,0xe7a6}, {0x95ad,0xe7a7}, {0x95ae,0xe7a8},
+ {0x95af,0xe7a9}, {0x95b0,0xe7aa}, {0x95b1,0xe7ab}, {0x95b2,0xe7ac},
+ {0x95b3,0xe7ad}, {0x95b4,0xe7ae}, {0x95b5,0xe7af}, {0x95b6,0xe7b0},
+ {0x95b7,0xe7b1}, {0x95b8,0xe7b2}, {0x95b9,0xe7b3}, {0x95ba,0xe7b4},
+ {0x95bb,0xe7b5}, {0x95bc,0xe7b6}, {0x95bd,0xe7b7}, {0x95be,0xe7b8},
+ {0x95bf,0xe7b9}, {0x95c0,0xe7ba}, {0x95c1,0xe7bb}, {0x95c2,0xe7bc},
+ {0x95c3,0xe7bd}, {0x95c4,0xe7be}, {0x95c5,0xe7bf}, {0x95c6,0xe7c0},
+ {0x95c7,0xe7c1}, {0x95c8,0xe7c2}, {0x95c9,0xe7c3}, {0x95ca,0xe7c4},
+ {0x95cb,0xe7c5}, {0x95cc,0xe7c6}, {0x95cd,0xe7c7}, {0x95ce,0xe7c8},
+ {0x95cf,0xe7c9}, {0x95d0,0xe7ca}, {0x95d1,0xe7cb}, {0x95d2,0xe7cc},
+ {0x95d3,0xe7cd}, {0x95d4,0xe7ce}, {0x95d5,0xe7cf}, {0x95d6,0xe7d0},
+ {0x95d7,0xe7d1}, {0x95d8,0xe7d2}, {0x95d9,0xe7d3}, {0x95da,0xe7d4},
+ {0x95db,0xe7d5}, {0x95dc,0xe7d6}, {0x95dd,0xe7d7}, {0x95de,0xe7d8},
+ {0x95df,0xe7d9}, {0x95e0,0xe7da}, {0x95e1,0xe7db}, {0x95e2,0xe7dc},
+ {0x95e3,0xe7dd}, {0x95e4,0xe7de}, {0x95e5,0xe7df}, {0x95e6,0xe7e0},
+ {0x95e7,0xe7e1}, {0x95e8,0xe7e2}, {0x95e9,0xe7e3}, {0x95ea,0xe7e4},
+ {0x95eb,0xe7e5}, {0x95ec,0xe7e6}, {0x95ed,0xe7e7}, {0x95ee,0xe7e8},
+ {0x95ef,0xe7e9}, {0x95f0,0xe7ea}, {0x95f1,0xe7eb}, {0x95f2,0xe7ec},
+ {0x95f3,0xe7ed}, {0x95f4,0xe7ee}, {0x95f5,0xe7ef}, {0x95f6,0xe7f0},
+ {0x95f7,0xe7f1}, {0x95f8,0xe7f2}, {0x95f9,0xe7f3}, {0x95fa,0xe7f4},
+ {0x95fb,0xe7f5}, {0x95fc,0xe7f6}, {0x95fd,0xe7f7}, {0x95fe,0xe7f8},
+ {0x9640,0xe7f9}, {0x9641,0xe7fa}, {0x9642,0xe7fb}, {0x9643,0xe7fc},
+ {0x9644,0xe7fd}, {0x9645,0xe7fe}, {0x9646,0xe7ff}, {0x9647,0xe800},
+ {0x9648,0xe801}, {0x9649,0xe802}, {0x964a,0xe803}, {0x964b,0xe804},
+ {0x964c,0xe805}, {0x964d,0xe806}, {0x964e,0xe807}, {0x964f,0xe808},
+ {0x9650,0xe809}, {0x9651,0xe80a}, {0x9652,0xe80b}, {0x9653,0xe80c},
+ {0x9654,0xe80d}, {0x9655,0xe80e}, {0x9656,0xe80f}, {0x9657,0xe810},
+ {0x9658,0xe811}, {0x9659,0xe812}, {0x965a,0xe813}, {0x965b,0xe814},
+ {0x965c,0xe815}, {0x965d,0xe816}, {0x965e,0xe817}, {0x965f,0xe818},
+ {0x9660,0xe819}, {0x9661,0xe81a}, {0x9662,0xe81b}, {0x9663,0xe81c},
+ {0x9664,0xe81d}, {0x9665,0xe81e}, {0x9666,0xe81f}, {0x9667,0xe820},
+ {0x9668,0xe821}, {0x9669,0xe822}, {0x966a,0xe823}, {0x966b,0xe824},
+ {0x966c,0xe825}, {0x966d,0xe826}, {0x966e,0xe827}, {0x966f,0xe828},
+ {0x9670,0xe829}, {0x9671,0xe82a}, {0x9672,0xe82b}, {0x9673,0xe82c},
+ {0x9674,0xe82d}, {0x9675,0xe82e}, {0x9676,0xe82f}, {0x9677,0xe830},
+ {0x9678,0xe831}, {0x9679,0xe832}, {0x967a,0xe833}, {0x967b,0xe834},
+ {0x967c,0xe835}, {0x967d,0xe836}, {0x967e,0xe837}, {0x96a1,0xe838},
+ {0x96a2,0xe839}, {0x96a3,0xe83a}, {0x96a4,0xe83b}, {0x96a5,0xe83c},
+ {0x96a6,0xe83d}, {0x96a7,0xe83e}, {0x96a8,0xe83f}, {0x96a9,0xe840},
+ {0x96aa,0xe841}, {0x96ab,0xe842}, {0x96ac,0xe843}, {0x96ad,0xe844},
+ {0x96ae,0xe845}, {0x96af,0xe846}, {0x96b0,0xe847}, {0x96b1,0xe848},
+ {0x96b2,0xe849}, {0x96b3,0xe84a}, {0x96b4,0xe84b}, {0x96b5,0xe84c},
+ {0x96b6,0xe84d}, {0x96b7,0xe84e}, {0x96b8,0xe84f}, {0x96b9,0xe850},
+ {0x96ba,0xe851}, {0x96bb,0xe852}, {0x96bc,0xe853}, {0x96bd,0xe854},
+ {0x96be,0xe855}, {0x96bf,0xe856}, {0x96c0,0xe857}, {0x96c1,0xe858},
+ {0x96c2,0xe859}, {0x96c3,0xe85a}, {0x96c4,0xe85b}, {0x96c5,0xe85c},
+ {0x96c6,0xe85d}, {0x96c7,0xe85e}, {0x96c8,0xe85f}, {0x96c9,0xe860},
+ {0x96ca,0xe861}, {0x96cb,0xe862}, {0x96cc,0xe863}, {0x96cd,0xe864},
+ {0x96ce,0xe865}, {0x96cf,0xe866}, {0x96d0,0xe867}, {0x96d1,0xe868},
+ {0x96d2,0xe869}, {0x96d3,0xe86a}, {0x96d4,0xe86b}, {0x96d5,0xe86c},
+ {0x96d6,0xe86d}, {0x96d7,0xe86e}, {0x96d8,0xe86f}, {0x96d9,0xe870},
+ {0x96da,0xe871}, {0x96db,0xe872}, {0x96dc,0xe873}, {0x96dd,0xe874},
+ {0x96de,0xe875}, {0x96df,0xe876}, {0x96e0,0xe877}, {0x96e1,0xe878},
+ {0x96e2,0xe879}, {0x96e3,0xe87a}, {0x96e4,0xe87b}, {0x96e5,0xe87c},
+ {0x96e6,0xe87d}, {0x96e7,0xe87e}, {0x96e8,0xe87f}, {0x96e9,0xe880},
+ {0x96ea,0xe881}, {0x96eb,0xe882}, {0x96ec,0xe883}, {0x96ed,0xe884},
+ {0x96ee,0xe885}, {0x96ef,0xe886}, {0x96f0,0xe887}, {0x96f1,0xe888},
+ {0x96f2,0xe889}, {0x96f3,0xe88a}, {0x96f4,0xe88b}, {0x96f5,0xe88c},
+ {0x96f6,0xe88d}, {0x96f7,0xe88e}, {0x96f8,0xe88f}, {0x96f9,0xe890},
+ {0x96fa,0xe891}, {0x96fb,0xe892}, {0x96fc,0xe893}, {0x96fd,0xe894},
+ {0x96fe,0xe895}, {0x9740,0xe896}, {0x9741,0xe897}, {0x9742,0xe898},
+ {0x9743,0xe899}, {0x9744,0xe89a}, {0x9745,0xe89b}, {0x9746,0xe89c},
+ {0x9747,0xe89d}, {0x9748,0xe89e}, {0x9749,0xe89f}, {0x974a,0xe8a0},
+ {0x974b,0xe8a1}, {0x974c,0xe8a2}, {0x974d,0xe8a3}, {0x974e,0xe8a4},
+ {0x974f,0xe8a5}, {0x9750,0xe8a6}, {0x9751,0xe8a7}, {0x9752,0xe8a8},
+ {0x9753,0xe8a9}, {0x9754,0xe8aa}, {0x9755,0xe8ab}, {0x9756,0xe8ac},
+ {0x9757,0xe8ad}, {0x9758,0xe8ae}, {0x9759,0xe8af}, {0x975a,0xe8b0},
+ {0x975b,0xe8b1}, {0x975c,0xe8b2}, {0x975d,0xe8b3}, {0x975e,0xe8b4},
+ {0x975f,0xe8b5}, {0x9760,0xe8b6}, {0x9761,0xe8b7}, {0x9762,0xe8b8},
+ {0x9763,0xe8b9}, {0x9764,0xe8ba}, {0x9765,0xe8bb}, {0x9766,0xe8bc},
+ {0x9767,0xe8bd}, {0x9768,0xe8be}, {0x9769,0xe8bf}, {0x976a,0xe8c0},
+ {0x976b,0xe8c1}, {0x976c,0xe8c2}, {0x976d,0xe8c3}, {0x976e,0xe8c4},
+ {0x976f,0xe8c5}, {0x9770,0xe8c6}, {0x9771,0xe8c7}, {0x9772,0xe8c8},
+ {0x9773,0xe8c9}, {0x9774,0xe8ca}, {0x9775,0xe8cb}, {0x9776,0xe8cc},
+ {0x9777,0xe8cd}, {0x9778,0xe8ce}, {0x9779,0xe8cf}, {0x977a,0xe8d0},
+ {0x977b,0xe8d1}, {0x977c,0xe8d2}, {0x977d,0xe8d3}, {0x977e,0xe8d4},
+ {0x97a1,0xe8d5}, {0x97a2,0xe8d6}, {0x97a3,0xe8d7}, {0x97a4,0xe8d8},
+ {0x97a5,0xe8d9}, {0x97a6,0xe8da}, {0x97a7,0xe8db}, {0x97a8,0xe8dc},
+ {0x97a9,0xe8dd}, {0x97aa,0xe8de}, {0x97ab,0xe8df}, {0x97ac,0xe8e0},
+ {0x97ad,0xe8e1}, {0x97ae,0xe8e2}, {0x97af,0xe8e3}, {0x97b0,0xe8e4},
+ {0x97b1,0xe8e5}, {0x97b2,0xe8e6}, {0x97b3,0xe8e7}, {0x97b4,0xe8e8},
+ {0x97b5,0xe8e9}, {0x97b6,0xe8ea}, {0x97b7,0xe8eb}, {0x97b8,0xe8ec},
+ {0x97b9,0xe8ed}, {0x97ba,0xe8ee}, {0x97bb,0xe8ef}, {0x97bc,0xe8f0},
+ {0x97bd,0xe8f1}, {0x97be,0xe8f2}, {0x97bf,0xe8f3}, {0x97c0,0xe8f4},
+ {0x97c1,0xe8f5}, {0x97c2,0xe8f6}, {0x97c3,0xe8f7}, {0x97c4,0xe8f8},
+ {0x97c5,0xe8f9}, {0x97c6,0xe8fa}, {0x97c7,0xe8fb}, {0x97c8,0xe8fc},
+ {0x97c9,0xe8fd}, {0x97ca,0xe8fe}, {0x97cb,0xe8ff}, {0x97cc,0xe900},
+ {0x97cd,0xe901}, {0x97ce,0xe902}, {0x97cf,0xe903}, {0x97d0,0xe904},
+ {0x97d1,0xe905}, {0x97d2,0xe906}, {0x97d3,0xe907}, {0x97d4,0xe908},
+ {0x97d5,0xe909}, {0x97d6,0xe90a}, {0x97d7,0xe90b}, {0x97d8,0xe90c},
+ {0x97d9,0xe90d}, {0x97da,0xe90e}, {0x97db,0xe90f}, {0x97dc,0xe910},
+ {0x97dd,0xe911}, {0x97de,0xe912}, {0x97df,0xe913}, {0x97e0,0xe914},
+ {0x97e1,0xe915}, {0x97e2,0xe916}, {0x97e3,0xe917}, {0x97e4,0xe918},
+ {0x97e5,0xe919}, {0x97e6,0xe91a}, {0x97e7,0xe91b}, {0x97e8,0xe91c},
+ {0x97e9,0xe91d}, {0x97ea,0xe91e}, {0x97eb,0xe91f}, {0x97ec,0xe920},
+ {0x97ed,0xe921}, {0x97ee,0xe922}, {0x97ef,0xe923}, {0x97f0,0xe924},
+ {0x97f1,0xe925}, {0x97f2,0xe926}, {0x97f3,0xe927}, {0x97f4,0xe928},
+ {0x97f5,0xe929}, {0x97f6,0xe92a}, {0x97f7,0xe92b}, {0x97f8,0xe92c},
+ {0x97f9,0xe92d}, {0x97fa,0xe92e}, {0x97fb,0xe92f}, {0x97fc,0xe930},
+ {0x97fd,0xe931}, {0x97fe,0xe932}, {0x9840,0xe933}, {0x9841,0xe934},
+ {0x9842,0xe935}, {0x9843,0xe936}, {0x9844,0xe937}, {0x9845,0xe938},
+ {0x9846,0xe939}, {0x9847,0xe93a}, {0x9848,0xe93b}, {0x9849,0xe93c},
+ {0x984a,0xe93d}, {0x984b,0xe93e}, {0x984c,0xe93f}, {0x984d,0xe940},
+ {0x984e,0xe941}, {0x984f,0xe942}, {0x9850,0xe943}, {0x9851,0xe944},
+ {0x9852,0xe945}, {0x9853,0xe946}, {0x9854,0xe947}, {0x9855,0xe948},
+ {0x9856,0xe949}, {0x9857,0xe94a}, {0x9858,0xe94b}, {0x9859,0xe94c},
+ {0x985a,0xe94d}, {0x985b,0xe94e}, {0x985c,0xe94f}, {0x985d,0xe950},
+ {0x985e,0xe951}, {0x985f,0xe952}, {0x9860,0xe953}, {0x9861,0xe954},
+ {0x9862,0xe955}, {0x9863,0xe956}, {0x9864,0xe957}, {0x9865,0xe958},
+ {0x9866,0xe959}, {0x9867,0xe95a}, {0x9868,0xe95b}, {0x9869,0xe95c},
+ {0x986a,0xe95d}, {0x986b,0xe95e}, {0x986c,0xe95f}, {0x986d,0xe960},
+ {0x986e,0xe961}, {0x986f,0xe962}, {0x9870,0xe963}, {0x9871,0xe964},
+ {0x9872,0xe965}, {0x9873,0xe966}, {0x9874,0xe967}, {0x9875,0xe968},
+ {0x9876,0xe969}, {0x9877,0xe96a}, {0x9878,0xe96b}, {0x9879,0xe96c},
+ {0x987a,0xe96d}, {0x987b,0xe96e}, {0x987c,0xe96f}, {0x987d,0xe970},
+ {0x987e,0xe971}, {0x98a1,0xe972}, {0x98a2,0xe973}, {0x98a3,0xe974},
+ {0x98a4,0xe975}, {0x98a5,0xe976}, {0x98a6,0xe977}, {0x98a7,0xe978},
+ {0x98a8,0xe979}, {0x98a9,0xe97a}, {0x98aa,0xe97b}, {0x98ab,0xe97c},
+ {0x98ac,0xe97d}, {0x98ad,0xe97e}, {0x98ae,0xe97f}, {0x98af,0xe980},
+ {0x98b0,0xe981}, {0x98b1,0xe982}, {0x98b2,0xe983}, {0x98b3,0xe984},
+ {0x98b4,0xe985}, {0x98b5,0xe986}, {0x98b6,0xe987}, {0x98b7,0xe988},
+ {0x98b8,0xe989}, {0x98b9,0xe98a}, {0x98ba,0xe98b}, {0x98bb,0xe98c},
+ {0x98bc,0xe98d}, {0x98bd,0xe98e}, {0x98be,0xe98f}, {0x98bf,0xe990},
+ {0x98c0,0xe991}, {0x98c1,0xe992}, {0x98c2,0xe993}, {0x98c3,0xe994},
+ {0x98c4,0xe995}, {0x98c5,0xe996}, {0x98c6,0xe997}, {0x98c7,0xe998},
+ {0x98c8,0xe999}, {0x98c9,0xe99a}, {0x98ca,0xe99b}, {0x98cb,0xe99c},
+ {0x98cc,0xe99d}, {0x98cd,0xe99e}, {0x98ce,0xe99f}, {0x98cf,0xe9a0},
+ {0x98d0,0xe9a1}, {0x98d1,0xe9a2}, {0x98d2,0xe9a3}, {0x98d3,0xe9a4},
+ {0x98d4,0xe9a5}, {0x98d5,0xe9a6}, {0x98d6,0xe9a7}, {0x98d7,0xe9a8},
+ {0x98d8,0xe9a9}, {0x98d9,0xe9aa}, {0x98da,0xe9ab}, {0x98db,0xe9ac},
+ {0x98dc,0xe9ad}, {0x98dd,0xe9ae}, {0x98de,0xe9af}, {0x98df,0xe9b0},
+ {0x98e0,0xe9b1}, {0x98e1,0xe9b2}, {0x98e2,0xe9b3}, {0x98e3,0xe9b4},
+ {0x98e4,0xe9b5}, {0x98e5,0xe9b6}, {0x98e6,0xe9b7}, {0x98e7,0xe9b8},
+ {0x98e8,0xe9b9}, {0x98e9,0xe9ba}, {0x98ea,0xe9bb}, {0x98eb,0xe9bc},
+ {0x98ec,0xe9bd}, {0x98ed,0xe9be}, {0x98ee,0xe9bf}, {0x98ef,0xe9c0},
+ {0x98f0,0xe9c1}, {0x98f1,0xe9c2}, {0x98f2,0xe9c3}, {0x98f3,0xe9c4},
+ {0x98f4,0xe9c5}, {0x98f5,0xe9c6}, {0x98f6,0xe9c7}, {0x98f7,0xe9c8},
+ {0x98f8,0xe9c9}, {0x98f9,0xe9ca}, {0x98fa,0xe9cb}, {0x98fb,0xe9cc},
+ {0x98fc,0xe9cd}, {0x98fd,0xe9ce}, {0x98fe,0xe9cf}, {0x9940,0xe9d0},
+ {0x9941,0xe9d1}, {0x9942,0xe9d2}, {0x9943,0xe9d3}, {0x9944,0xe9d4},
+ {0x9945,0xe9d5}, {0x9946,0xe9d6}, {0x9947,0xe9d7}, {0x9948,0xe9d8},
+ {0x9949,0xe9d9}, {0x994a,0xe9da}, {0x994b,0xe9db}, {0x994c,0xe9dc},
+ {0x994d,0xe9dd}, {0x994e,0xe9de}, {0x994f,0xe9df}, {0x9950,0xe9e0},
+ {0x9951,0xe9e1}, {0x9952,0xe9e2}, {0x9953,0xe9e3}, {0x9954,0xe9e4},
+ {0x9955,0xe9e5}, {0x9956,0xe9e6}, {0x9957,0xe9e7}, {0x9958,0xe9e8},
+ {0x9959,0xe9e9}, {0x995a,0xe9ea}, {0x995b,0xe9eb}, {0x995c,0xe9ec},
+ {0x995d,0xe9ed}, {0x995e,0xe9ee}, {0x995f,0xe9ef}, {0x9960,0xe9f0},
+ {0x9961,0xe9f1}, {0x9962,0xe9f2}, {0x9963,0xe9f3}, {0x9964,0xe9f4},
+ {0x9965,0xe9f5}, {0x9966,0xe9f6}, {0x9967,0xe9f7}, {0x9968,0xe9f8},
+ {0x9969,0xe9f9}, {0x996a,0xe9fa}, {0x996b,0xe9fb}, {0x996c,0xe9fc},
+ {0x996d,0xe9fd}, {0x996e,0xe9fe}, {0x996f,0xe9ff}, {0x9970,0xea00},
+ {0x9971,0xea01}, {0x9972,0xea02}, {0x9973,0xea03}, {0x9974,0xea04},
+ {0x9975,0xea05}, {0x9976,0xea06}, {0x9977,0xea07}, {0x9978,0xea08},
+ {0x9979,0xea09}, {0x997a,0xea0a}, {0x997b,0xea0b}, {0x997c,0xea0c},
+ {0x997d,0xea0d}, {0x997e,0xea0e}, {0x99a1,0xea0f}, {0x99a2,0xea10},
+ {0x99a3,0xea11}, {0x99a4,0xea12}, {0x99a5,0xea13}, {0x99a6,0xea14},
+ {0x99a7,0xea15}, {0x99a8,0xea16}, {0x99a9,0xea17}, {0x99aa,0xea18},
+ {0x99ab,0xea19}, {0x99ac,0xea1a}, {0x99ad,0xea1b}, {0x99ae,0xea1c},
+ {0x99af,0xea1d}, {0x99b0,0xea1e}, {0x99b1,0xea1f}, {0x99b2,0xea20},
+ {0x99b3,0xea21}, {0x99b4,0xea22}, {0x99b5,0xea23}, {0x99b6,0xea24},
+ {0x99b7,0xea25}, {0x99b8,0xea26}, {0x99b9,0xea27}, {0x99ba,0xea28},
+ {0x99bb,0xea29}, {0x99bc,0xea2a}, {0x99bd,0xea2b}, {0x99be,0xea2c},
+ {0x99bf,0xea2d}, {0x99c0,0xea2e}, {0x99c1,0xea2f}, {0x99c2,0xea30},
+ {0x99c3,0xea31}, {0x99c4,0xea32}, {0x99c5,0xea33}, {0x99c6,0xea34},
+ {0x99c7,0xea35}, {0x99c8,0xea36}, {0x99c9,0xea37}, {0x99ca,0xea38},
+ {0x99cb,0xea39}, {0x99cc,0xea3a}, {0x99cd,0xea3b}, {0x99ce,0xea3c},
+ {0x99cf,0xea3d}, {0x99d0,0xea3e}, {0x99d1,0xea3f}, {0x99d2,0xea40},
+ {0x99d3,0xea41}, {0x99d4,0xea42}, {0x99d5,0xea43}, {0x99d6,0xea44},
+ {0x99d7,0xea45}, {0x99d8,0xea46}, {0x99d9,0xea47}, {0x99da,0xea48},
+ {0x99db,0xea49}, {0x99dc,0xea4a}, {0x99dd,0xea4b}, {0x99de,0xea4c},
+ {0x99df,0xea4d}, {0x99e0,0xea4e}, {0x99e1,0xea4f}, {0x99e2,0xea50},
+ {0x99e3,0xea51}, {0x99e4,0xea52}, {0x99e5,0xea53}, {0x99e6,0xea54},
+ {0x99e7,0xea55}, {0x99e8,0xea56}, {0x99e9,0xea57}, {0x99ea,0xea58},
+ {0x99eb,0xea59}, {0x99ec,0xea5a}, {0x99ed,0xea5b}, {0x99ee,0xea5c},
+ {0x99ef,0xea5d}, {0x99f0,0xea5e}, {0x99f1,0xea5f}, {0x99f2,0xea60},
+ {0x99f3,0xea61}, {0x99f4,0xea62}, {0x99f5,0xea63}, {0x99f6,0xea64},
+ {0x99f7,0xea65}, {0x99f8,0xea66}, {0x99f9,0xea67}, {0x99fa,0xea68},
+ {0x99fb,0xea69}, {0x99fc,0xea6a}, {0x99fd,0xea6b}, {0x99fe,0xea6c},
+ {0x9a40,0xea6d}, {0x9a41,0xea6e}, {0x9a42,0xea6f}, {0x9a43,0xea70},
+ {0x9a44,0xea71}, {0x9a45,0xea72}, {0x9a46,0xea73}, {0x9a47,0xea74},
+ {0x9a48,0xea75}, {0x9a49,0xea76}, {0x9a4a,0xea77}, {0x9a4b,0xea78},
+ {0x9a4c,0xea79}, {0x9a4d,0xea7a}, {0x9a4e,0xea7b}, {0x9a4f,0xea7c},
+ {0x9a50,0xea7d}, {0x9a51,0xea7e}, {0x9a52,0xea7f}, {0x9a53,0xea80},
+ {0x9a54,0xea81}, {0x9a55,0xea82}, {0x9a56,0xea83}, {0x9a57,0xea84},
+ {0x9a58,0xea85}, {0x9a59,0xea86}, {0x9a5a,0xea87}, {0x9a5b,0xea88},
+ {0x9a5c,0xea89}, {0x9a5d,0xea8a}, {0x9a5e,0xea8b}, {0x9a5f,0xea8c},
+ {0x9a60,0xea8d}, {0x9a61,0xea8e}, {0x9a62,0xea8f}, {0x9a63,0xea90},
+ {0x9a64,0xea91}, {0x9a65,0xea92}, {0x9a66,0xea93}, {0x9a67,0xea94},
+ {0x9a68,0xea95}, {0x9a69,0xea96}, {0x9a6a,0xea97}, {0x9a6b,0xea98},
+ {0x9a6c,0xea99}, {0x9a6d,0xea9a}, {0x9a6e,0xea9b}, {0x9a6f,0xea9c},
+ {0x9a70,0xea9d}, {0x9a71,0xea9e}, {0x9a72,0xea9f}, {0x9a73,0xeaa0},
+ {0x9a74,0xeaa1}, {0x9a75,0xeaa2}, {0x9a76,0xeaa3}, {0x9a77,0xeaa4},
+ {0x9a78,0xeaa5}, {0x9a79,0xeaa6}, {0x9a7a,0xeaa7}, {0x9a7b,0xeaa8},
+ {0x9a7c,0xeaa9}, {0x9a7d,0xeaaa}, {0x9a7e,0xeaab}, {0x9aa1,0xeaac},
+ {0x9aa2,0xeaad}, {0x9aa3,0xeaae}, {0x9aa4,0xeaaf}, {0x9aa5,0xeab0},
+ {0x9aa6,0xeab1}, {0x9aa7,0xeab2}, {0x9aa8,0xeab3}, {0x9aa9,0xeab4},
+ {0x9aaa,0xeab5}, {0x9aab,0xeab6}, {0x9aac,0xeab7}, {0x9aad,0xeab8},
+ {0x9aae,0xeab9}, {0x9aaf,0xeaba}, {0x9ab0,0xeabb}, {0x9ab1,0xeabc},
+ {0x9ab2,0xeabd}, {0x9ab3,0xeabe}, {0x9ab4,0xeabf}, {0x9ab5,0xeac0},
+ {0x9ab6,0xeac1}, {0x9ab7,0xeac2}, {0x9ab8,0xeac3}, {0x9ab9,0xeac4},
+ {0x9aba,0xeac5}, {0x9abb,0xeac6}, {0x9abc,0xeac7}, {0x9abd,0xeac8},
+ {0x9abe,0xeac9}, {0x9abf,0xeaca}, {0x9ac0,0xeacb}, {0x9ac1,0xeacc},
+ {0x9ac2,0xeacd}, {0x9ac3,0xeace}, {0x9ac4,0xeacf}, {0x9ac5,0xead0},
+ {0x9ac6,0xead1}, {0x9ac7,0xead2}, {0x9ac8,0xead3}, {0x9ac9,0xead4},
+ {0x9aca,0xead5}, {0x9acb,0xead6}, {0x9acc,0xead7}, {0x9acd,0xead8},
+ {0x9ace,0xead9}, {0x9acf,0xeada}, {0x9ad0,0xeadb}, {0x9ad1,0xeadc},
+ {0x9ad2,0xeadd}, {0x9ad3,0xeade}, {0x9ad4,0xeadf}, {0x9ad5,0xeae0},
+ {0x9ad6,0xeae1}, {0x9ad7,0xeae2}, {0x9ad8,0xeae3}, {0x9ad9,0xeae4},
+ {0x9ada,0xeae5}, {0x9adb,0xeae6}, {0x9adc,0xeae7}, {0x9add,0xeae8},
+ {0x9ade,0xeae9}, {0x9adf,0xeaea}, {0x9ae0,0xeaeb}, {0x9ae1,0xeaec},
+ {0x9ae2,0xeaed}, {0x9ae3,0xeaee}, {0x9ae4,0xeaef}, {0x9ae5,0xeaf0},
+ {0x9ae6,0xeaf1}, {0x9ae7,0xeaf2}, {0x9ae8,0xeaf3}, {0x9ae9,0xeaf4},
+ {0x9aea,0xeaf5}, {0x9aeb,0xeaf6}, {0x9aec,0xeaf7}, {0x9aed,0xeaf8},
+ {0x9aee,0xeaf9}, {0x9aef,0xeafa}, {0x9af0,0xeafb}, {0x9af1,0xeafc},
+ {0x9af2,0xeafd}, {0x9af3,0xeafe}, {0x9af4,0xeaff}, {0x9af5,0xeb00},
+ {0x9af6,0xeb01}, {0x9af7,0xeb02}, {0x9af8,0xeb03}, {0x9af9,0xeb04},
+ {0x9afa,0xeb05}, {0x9afb,0xeb06}, {0x9afc,0xeb07}, {0x9afd,0xeb08},
+ {0x9afe,0xeb09}, {0x9b40,0xeb0a}, {0x9b41,0xeb0b}, {0x9b42,0xeb0c},
+ {0x9b43,0xeb0d}, {0x9b44,0xeb0e}, {0x9b45,0xeb0f}, {0x9b46,0xeb10},
+ {0x9b47,0xeb11}, {0x9b48,0xeb12}, {0x9b49,0xeb13}, {0x9b4a,0xeb14},
+ {0x9b4b,0xeb15}, {0x9b4c,0xeb16}, {0x9b4d,0xeb17}, {0x9b4e,0xeb18},
+ {0x9b4f,0xeb19}, {0x9b50,0xeb1a}, {0x9b51,0xeb1b}, {0x9b52,0xeb1c},
+ {0x9b53,0xeb1d}, {0x9b54,0xeb1e}, {0x9b55,0xeb1f}, {0x9b56,0xeb20},
+ {0x9b57,0xeb21}, {0x9b58,0xeb22}, {0x9b59,0xeb23}, {0x9b5a,0xeb24},
+ {0x9b5b,0xeb25}, {0x9b5c,0xeb26}, {0x9b5d,0xeb27}, {0x9b5e,0xeb28},
+ {0x9b5f,0xeb29}, {0x9b60,0xeb2a}, {0x9b61,0xeb2b}, {0x9b62,0xeb2c},
+ {0x9b63,0xeb2d}, {0x9b64,0xeb2e}, {0x9b65,0xeb2f}, {0x9b66,0xeb30},
+ {0x9b67,0xeb31}, {0x9b68,0xeb32}, {0x9b69,0xeb33}, {0x9b6a,0xeb34},
+ {0x9b6b,0xeb35}, {0x9b6c,0xeb36}, {0x9b6d,0xeb37}, {0x9b6e,0xeb38},
+ {0x9b6f,0xeb39}, {0x9b70,0xeb3a}, {0x9b71,0xeb3b}, {0x9b72,0xeb3c},
+ {0x9b73,0xeb3d}, {0x9b74,0xeb3e}, {0x9b75,0xeb3f}, {0x9b76,0xeb40},
+ {0x9b77,0xeb41}, {0x9b78,0xeb42}, {0x9b79,0xeb43}, {0x9b7a,0xeb44},
+ {0x9b7b,0xeb45}, {0x9b7c,0xeb46}, {0x9b7d,0xeb47}, {0x9b7e,0xeb48},
+ {0x9ba1,0xeb49}, {0x9ba2,0xeb4a}, {0x9ba3,0xeb4b}, {0x9ba4,0xeb4c},
+ {0x9ba5,0xeb4d}, {0x9ba6,0xeb4e}, {0x9ba7,0xeb4f}, {0x9ba8,0xeb50},
+ {0x9ba9,0xeb51}, {0x9baa,0xeb52}, {0x9bab,0xeb53}, {0x9bac,0xeb54},
+ {0x9bad,0xeb55}, {0x9bae,0xeb56}, {0x9baf,0xeb57}, {0x9bb0,0xeb58},
+ {0x9bb1,0xeb59}, {0x9bb2,0xeb5a}, {0x9bb3,0xeb5b}, {0x9bb4,0xeb5c},
+ {0x9bb5,0xeb5d}, {0x9bb6,0xeb5e}, {0x9bb7,0xeb5f}, {0x9bb8,0xeb60},
+ {0x9bb9,0xeb61}, {0x9bba,0xeb62}, {0x9bbb,0xeb63}, {0x9bbc,0xeb64},
+ {0x9bbd,0xeb65}, {0x9bbe,0xeb66}, {0x9bbf,0xeb67}, {0x9bc0,0xeb68},
+ {0x9bc1,0xeb69}, {0x9bc2,0xeb6a}, {0x9bc3,0xeb6b}, {0x9bc4,0xeb6c},
+ {0x9bc5,0xeb6d}, {0x9bc6,0xeb6e}, {0x9bc7,0xeb6f}, {0x9bc8,0xeb70},
+ {0x9bc9,0xeb71}, {0x9bca,0xeb72}, {0x9bcb,0xeb73}, {0x9bcc,0xeb74},
+ {0x9bcd,0xeb75}, {0x9bce,0xeb76}, {0x9bcf,0xeb77}, {0x9bd0,0xeb78},
+ {0x9bd1,0xeb79}, {0x9bd2,0xeb7a}, {0x9bd3,0xeb7b}, {0x9bd4,0xeb7c},
+ {0x9bd5,0xeb7d}, {0x9bd6,0xeb7e}, {0x9bd7,0xeb7f}, {0x9bd8,0xeb80},
+ {0x9bd9,0xeb81}, {0x9bda,0xeb82}, {0x9bdb,0xeb83}, {0x9bdc,0xeb84},
+ {0x9bdd,0xeb85}, {0x9bde,0xeb86}, {0x9bdf,0xeb87}, {0x9be0,0xeb88},
+ {0x9be1,0xeb89}, {0x9be2,0xeb8a}, {0x9be3,0xeb8b}, {0x9be4,0xeb8c},
+ {0x9be5,0xeb8d}, {0x9be6,0xeb8e}, {0x9be7,0xeb8f}, {0x9be8,0xeb90},
+ {0x9be9,0xeb91}, {0x9bea,0xeb92}, {0x9beb,0xeb93}, {0x9bec,0xeb94},
+ {0x9bed,0xeb95}, {0x9bee,0xeb96}, {0x9bef,0xeb97}, {0x9bf0,0xeb98},
+ {0x9bf1,0xeb99}, {0x9bf2,0xeb9a}, {0x9bf3,0xeb9b}, {0x9bf4,0xeb9c},
+ {0x9bf5,0xeb9d}, {0x9bf6,0xeb9e}, {0x9bf7,0xeb9f}, {0x9bf8,0xeba0},
+ {0x9bf9,0xeba1}, {0x9bfa,0xeba2}, {0x9bfb,0xeba3}, {0x9bfc,0xeba4},
+ {0x9bfd,0xeba5}, {0x9bfe,0xeba6}, {0x9c40,0xeba7}, {0x9c41,0xeba8},
+ {0x9c42,0xeba9}, {0x9c43,0xebaa}, {0x9c44,0xebab}, {0x9c45,0xebac},
+ {0x9c46,0xebad}, {0x9c47,0xebae}, {0x9c48,0xebaf}, {0x9c49,0xebb0},
+ {0x9c4a,0xebb1}, {0x9c4b,0xebb2}, {0x9c4c,0xebb3}, {0x9c4d,0xebb4},
+ {0x9c4e,0xebb5}, {0x9c4f,0xebb6}, {0x9c50,0xebb7}, {0x9c51,0xebb8},
+ {0x9c52,0xebb9}, {0x9c53,0xebba}, {0x9c54,0xebbb}, {0x9c55,0xebbc},
+ {0x9c56,0xebbd}, {0x9c57,0xebbe}, {0x9c58,0xebbf}, {0x9c59,0xebc0},
+ {0x9c5a,0xebc1}, {0x9c5b,0xebc2}, {0x9c5c,0xebc3}, {0x9c5d,0xebc4},
+ {0x9c5e,0xebc5}, {0x9c5f,0xebc6}, {0x9c60,0xebc7}, {0x9c61,0xebc8},
+ {0x9c62,0xebc9}, {0x9c63,0xebca}, {0x9c64,0xebcb}, {0x9c65,0xebcc},
+ {0x9c66,0xebcd}, {0x9c67,0xebce}, {0x9c68,0xebcf}, {0x9c69,0xebd0},
+ {0x9c6a,0xebd1}, {0x9c6b,0xebd2}, {0x9c6c,0xebd3}, {0x9c6d,0xebd4},
+ {0x9c6e,0xebd5}, {0x9c6f,0xebd6}, {0x9c70,0xebd7}, {0x9c71,0xebd8},
+ {0x9c72,0xebd9}, {0x9c73,0xebda}, {0x9c74,0xebdb}, {0x9c75,0xebdc},
+ {0x9c76,0xebdd}, {0x9c77,0xebde}, {0x9c78,0xebdf}, {0x9c79,0xebe0},
+ {0x9c7a,0xebe1}, {0x9c7b,0xebe2}, {0x9c7c,0xebe3}, {0x9c7d,0xebe4},
+ {0x9c7e,0xebe5}, {0x9ca1,0xebe6}, {0x9ca2,0xebe7}, {0x9ca3,0xebe8},
+ {0x9ca4,0xebe9}, {0x9ca5,0xebea}, {0x9ca6,0xebeb}, {0x9ca7,0xebec},
+ {0x9ca8,0xebed}, {0x9ca9,0xebee}, {0x9caa,0xebef}, {0x9cab,0xebf0},
+ {0x9cac,0xebf1}, {0x9cad,0xebf2}, {0x9cae,0xebf3}, {0x9caf,0xebf4},
+ {0x9cb0,0xebf5}, {0x9cb1,0xebf6}, {0x9cb2,0xebf7}, {0x9cb3,0xebf8},
+ {0x9cb4,0xebf9}, {0x9cb5,0xebfa}, {0x9cb6,0xebfb}, {0x9cb7,0xebfc},
+ {0x9cb8,0xebfd}, {0x9cb9,0xebfe}, {0x9cba,0xebff}, {0x9cbb,0xec00},
+ {0x9cbc,0xec01}, {0x9cbd,0xec02}, {0x9cbe,0xec03}, {0x9cbf,0xec04},
+ {0x9cc0,0xec05}, {0x9cc1,0xec06}, {0x9cc2,0xec07}, {0x9cc3,0xec08},
+ {0x9cc4,0xec09}, {0x9cc5,0xec0a}, {0x9cc6,0xec0b}, {0x9cc7,0xec0c},
+ {0x9cc8,0xec0d}, {0x9cc9,0xec0e}, {0x9cca,0xec0f}, {0x9ccb,0xec10},
+ {0x9ccc,0xec11}, {0x9ccd,0xec12}, {0x9cce,0xec13}, {0x9ccf,0xec14},
+ {0x9cd0,0xec15}, {0x9cd1,0xec16}, {0x9cd2,0xec17}, {0x9cd3,0xec18},
+ {0x9cd4,0xec19}, {0x9cd5,0xec1a}, {0x9cd6,0xec1b}, {0x9cd7,0xec1c},
+ {0x9cd8,0xec1d}, {0x9cd9,0xec1e}, {0x9cda,0xec1f}, {0x9cdb,0xec20},
+ {0x9cdc,0xec21}, {0x9cdd,0xec22}, {0x9cde,0xec23}, {0x9cdf,0xec24},
+ {0x9ce0,0xec25}, {0x9ce1,0xec26}, {0x9ce2,0xec27}, {0x9ce3,0xec28},
+ {0x9ce4,0xec29}, {0x9ce5,0xec2a}, {0x9ce6,0xec2b}, {0x9ce7,0xec2c},
+ {0x9ce8,0xec2d}, {0x9ce9,0xec2e}, {0x9cea,0xec2f}, {0x9ceb,0xec30},
+ {0x9cec,0xec31}, {0x9ced,0xec32}, {0x9cee,0xec33}, {0x9cef,0xec34},
+ {0x9cf0,0xec35}, {0x9cf1,0xec36}, {0x9cf2,0xec37}, {0x9cf3,0xec38},
+ {0x9cf4,0xec39}, {0x9cf5,0xec3a}, {0x9cf6,0xec3b}, {0x9cf7,0xec3c},
+ {0x9cf8,0xec3d}, {0x9cf9,0xec3e}, {0x9cfa,0xec3f}, {0x9cfb,0xec40},
+ {0x9cfc,0xec41}, {0x9cfd,0xec42}, {0x9cfe,0xec43}, {0x9d40,0xec44},
+ {0x9d41,0xec45}, {0x9d42,0xec46}, {0x9d43,0xec47}, {0x9d44,0xec48},
+ {0x9d45,0xec49}, {0x9d46,0xec4a}, {0x9d47,0xec4b}, {0x9d48,0xec4c},
+ {0x9d49,0xec4d}, {0x9d4a,0xec4e}, {0x9d4b,0xec4f}, {0x9d4c,0xec50},
+ {0x9d4d,0xec51}, {0x9d4e,0xec52}, {0x9d4f,0xec53}, {0x9d50,0xec54},
+ {0x9d51,0xec55}, {0x9d52,0xec56}, {0x9d53,0xec57}, {0x9d54,0xec58},
+ {0x9d55,0xec59}, {0x9d56,0xec5a}, {0x9d57,0xec5b}, {0x9d58,0xec5c},
+ {0x9d59,0xec5d}, {0x9d5a,0xec5e}, {0x9d5b,0xec5f}, {0x9d5c,0xec60},
+ {0x9d5d,0xec61}, {0x9d5e,0xec62}, {0x9d5f,0xec63}, {0x9d60,0xec64},
+ {0x9d61,0xec65}, {0x9d62,0xec66}, {0x9d63,0xec67}, {0x9d64,0xec68},
+ {0x9d65,0xec69}, {0x9d66,0xec6a}, {0x9d67,0xec6b}, {0x9d68,0xec6c},
+ {0x9d69,0xec6d}, {0x9d6a,0xec6e}, {0x9d6b,0xec6f}, {0x9d6c,0xec70},
+ {0x9d6d,0xec71}, {0x9d6e,0xec72}, {0x9d6f,0xec73}, {0x9d70,0xec74},
+ {0x9d71,0xec75}, {0x9d72,0xec76}, {0x9d73,0xec77}, {0x9d74,0xec78},
+ {0x9d75,0xec79}, {0x9d76,0xec7a}, {0x9d77,0xec7b}, {0x9d78,0xec7c},
+ {0x9d79,0xec7d}, {0x9d7a,0xec7e}, {0x9d7b,0xec7f}, {0x9d7c,0xec80},
+ {0x9d7d,0xec81}, {0x9d7e,0xec82}, {0x9da1,0xec83}, {0x9da2,0xec84},
+ {0x9da3,0xec85}, {0x9da4,0xec86}, {0x9da5,0xec87}, {0x9da6,0xec88},
+ {0x9da7,0xec89}, {0x9da8,0xec8a}, {0x9da9,0xec8b}, {0x9daa,0xec8c},
+ {0x9dab,0xec8d}, {0x9dac,0xec8e}, {0x9dad,0xec8f}, {0x9dae,0xec90},
+ {0x9daf,0xec91}, {0x9db0,0xec92}, {0x9db1,0xec93}, {0x9db2,0xec94},
+ {0x9db3,0xec95}, {0x9db4,0xec96}, {0x9db5,0xec97}, {0x9db6,0xec98},
+ {0x9db7,0xec99}, {0x9db8,0xec9a}, {0x9db9,0xec9b}, {0x9dba,0xec9c},
+ {0x9dbb,0xec9d}, {0x9dbc,0xec9e}, {0x9dbd,0xec9f}, {0x9dbe,0xeca0},
+ {0x9dbf,0xeca1}, {0x9dc0,0xeca2}, {0x9dc1,0xeca3}, {0x9dc2,0xeca4},
+ {0x9dc3,0xeca5}, {0x9dc4,0xeca6}, {0x9dc5,0xeca7}, {0x9dc6,0xeca8},
+ {0x9dc7,0xeca9}, {0x9dc8,0xecaa}, {0x9dc9,0xecab}, {0x9dca,0xecac},
+ {0x9dcb,0xecad}, {0x9dcc,0xecae}, {0x9dcd,0xecaf}, {0x9dce,0xecb0},
+ {0x9dcf,0xecb1}, {0x9dd0,0xecb2}, {0x9dd1,0xecb3}, {0x9dd2,0xecb4},
+ {0x9dd3,0xecb5}, {0x9dd4,0xecb6}, {0x9dd5,0xecb7}, {0x9dd6,0xecb8},
+ {0x9dd7,0xecb9}, {0x9dd8,0xecba}, {0x9dd9,0xecbb}, {0x9dda,0xecbc},
+ {0x9ddb,0xecbd}, {0x9ddc,0xecbe}, {0x9ddd,0xecbf}, {0x9dde,0xecc0},
+ {0x9ddf,0xecc1}, {0x9de0,0xecc2}, {0x9de1,0xecc3}, {0x9de2,0xecc4},
+ {0x9de3,0xecc5}, {0x9de4,0xecc6}, {0x9de5,0xecc7}, {0x9de6,0xecc8},
+ {0x9de7,0xecc9}, {0x9de8,0xecca}, {0x9de9,0xeccb}, {0x9dea,0xeccc},
+ {0x9deb,0xeccd}, {0x9dec,0xecce}, {0x9ded,0xeccf}, {0x9dee,0xecd0},
+ {0x9def,0xecd1}, {0x9df0,0xecd2}, {0x9df1,0xecd3}, {0x9df2,0xecd4},
+ {0x9df3,0xecd5}, {0x9df4,0xecd6}, {0x9df5,0xecd7}, {0x9df6,0xecd8},
+ {0x9df7,0xecd9}, {0x9df8,0xecda}, {0x9df9,0xecdb}, {0x9dfa,0xecdc},
+ {0x9dfb,0xecdd}, {0x9dfc,0xecde}, {0x9dfd,0xecdf}, {0x9dfe,0xece0},
+ {0x9e40,0xece1}, {0x9e41,0xece2}, {0x9e42,0xece3}, {0x9e43,0xece4},
+ {0x9e44,0xece5}, {0x9e45,0xece6}, {0x9e46,0xece7}, {0x9e47,0xece8},
+ {0x9e48,0xece9}, {0x9e49,0xecea}, {0x9e4a,0xeceb}, {0x9e4b,0xecec},
+ {0x9e4c,0xeced}, {0x9e4d,0xecee}, {0x9e4e,0xecef}, {0x9e4f,0xecf0},
+ {0x9e50,0xecf1}, {0x9e51,0xecf2}, {0x9e52,0xecf3}, {0x9e53,0xecf4},
+ {0x9e54,0xecf5}, {0x9e55,0xecf6}, {0x9e56,0xecf7}, {0x9e57,0xecf8},
+ {0x9e58,0xecf9}, {0x9e59,0xecfa}, {0x9e5a,0xecfb}, {0x9e5b,0xecfc},
+ {0x9e5c,0xecfd}, {0x9e5d,0xecfe}, {0x9e5e,0xecff}, {0x9e5f,0xed00},
+ {0x9e60,0xed01}, {0x9e61,0xed02}, {0x9e62,0xed03}, {0x9e63,0xed04},
+ {0x9e64,0xed05}, {0x9e65,0xed06}, {0x9e66,0xed07}, {0x9e67,0xed08},
+ {0x9e68,0xed09}, {0x9e69,0xed0a}, {0x9e6a,0xed0b}, {0x9e6b,0xed0c},
+ {0x9e6c,0xed0d}, {0x9e6d,0xed0e}, {0x9e6e,0xed0f}, {0x9e6f,0xed10},
+ {0x9e70,0xed11}, {0x9e71,0xed12}, {0x9e72,0xed13}, {0x9e73,0xed14},
+ {0x9e74,0xed15}, {0x9e75,0xed16}, {0x9e76,0xed17}, {0x9e77,0xed18},
+ {0x9e78,0xed19}, {0x9e79,0xed1a}, {0x9e7a,0xed1b}, {0x9e7b,0xed1c},
+ {0x9e7c,0xed1d}, {0x9e7d,0xed1e}, {0x9e7e,0xed1f}, {0x9ea1,0xed20},
+ {0x9ea2,0xed21}, {0x9ea3,0xed22}, {0x9ea4,0xed23}, {0x9ea5,0xed24},
+ {0x9ea6,0xed25}, {0x9ea7,0xed26}, {0x9ea8,0xed27}, {0x9ea9,0xed28},
+ {0x9eaa,0xed29}, {0x9eab,0xed2a}, {0x9eac,0xed2b}, {0x9ead,0xed2c},
+ {0x9eae,0xed2d}, {0x9eaf,0xed2e}, {0x9eb0,0xed2f}, {0x9eb1,0xed30},
+ {0x9eb2,0xed31}, {0x9eb3,0xed32}, {0x9eb4,0xed33}, {0x9eb5,0xed34},
+ {0x9eb6,0xed35}, {0x9eb7,0xed36}, {0x9eb8,0xed37}, {0x9eb9,0xed38},
+ {0x9eba,0xed39}, {0x9ebb,0xed3a}, {0x9ebc,0xed3b}, {0x9ebd,0xed3c},
+ {0x9ebe,0xed3d}, {0x9ebf,0xed3e}, {0x9ec0,0xed3f}, {0x9ec1,0xed40},
+ {0x9ec2,0xed41}, {0x9ec3,0xed42}, {0x9ec4,0xed43}, {0x9ec5,0xed44},
+ {0x9ec6,0xed45}, {0x9ec7,0xed46}, {0x9ec8,0xed47}, {0x9ec9,0xed48},
+ {0x9eca,0xed49}, {0x9ecb,0xed4a}, {0x9ecc,0xed4b}, {0x9ecd,0xed4c},
+ {0x9ece,0xed4d}, {0x9ecf,0xed4e}, {0x9ed0,0xed4f}, {0x9ed1,0xed50},
+ {0x9ed2,0xed51}, {0x9ed3,0xed52}, {0x9ed4,0xed53}, {0x9ed5,0xed54},
+ {0x9ed6,0xed55}, {0x9ed7,0xed56}, {0x9ed8,0xed57}, {0x9ed9,0xed58},
+ {0x9eda,0xed59}, {0x9edb,0xed5a}, {0x9edc,0xed5b}, {0x9edd,0xed5c},
+ {0x9ede,0xed5d}, {0x9edf,0xed5e}, {0x9ee0,0xed5f}, {0x9ee1,0xed60},
+ {0x9ee2,0xed61}, {0x9ee3,0xed62}, {0x9ee4,0xed63}, {0x9ee5,0xed64},
+ {0x9ee6,0xed65}, {0x9ee7,0xed66}, {0x9ee8,0xed67}, {0x9ee9,0xed68},
+ {0x9eea,0xed69}, {0x9eeb,0xed6a}, {0x9eec,0xed6b}, {0x9eed,0xed6c},
+ {0x9eee,0xed6d}, {0x9eef,0xed6e}, {0x9ef0,0xed6f}, {0x9ef1,0xed70},
+ {0x9ef2,0xed71}, {0x9ef3,0xed72}, {0x9ef4,0xed73}, {0x9ef5,0xed74},
+ {0x9ef6,0xed75}, {0x9ef7,0xed76}, {0x9ef8,0xed77}, {0x9ef9,0xed78},
+ {0x9efa,0xed79}, {0x9efb,0xed7a}, {0x9efc,0xed7b}, {0x9efd,0xed7c},
+ {0x9efe,0xed7d}, {0x9f40,0xed7e}, {0x9f41,0xed7f}, {0x9f42,0xed80},
+ {0x9f43,0xed81}, {0x9f44,0xed82}, {0x9f45,0xed83}, {0x9f46,0xed84},
+ {0x9f47,0xed85}, {0x9f48,0xed86}, {0x9f49,0xed87}, {0x9f4a,0xed88},
+ {0x9f4b,0xed89}, {0x9f4c,0xed8a}, {0x9f4d,0xed8b}, {0x9f4e,0xed8c},
+ {0x9f4f,0xed8d}, {0x9f50,0xed8e}, {0x9f51,0xed8f}, {0x9f52,0xed90},
+ {0x9f53,0xed91}, {0x9f54,0xed92}, {0x9f55,0xed93}, {0x9f56,0xed94},
+ {0x9f57,0xed95}, {0x9f58,0xed96}, {0x9f59,0xed97}, {0x9f5a,0xed98},
+ {0x9f5b,0xed99}, {0x9f5c,0xed9a}, {0x9f5d,0xed9b}, {0x9f5e,0xed9c},
+ {0x9f5f,0xed9d}, {0x9f60,0xed9e}, {0x9f61,0xed9f}, {0x9f62,0xeda0},
+ {0x9f63,0xeda1}, {0x9f64,0xeda2}, {0x9f65,0xeda3}, {0x9f66,0xeda4},
+ {0x9f67,0xeda5}, {0x9f68,0xeda6}, {0x9f69,0xeda7}, {0x9f6a,0xeda8},
+ {0x9f6b,0xeda9}, {0x9f6c,0xedaa}, {0x9f6d,0xedab}, {0x9f6e,0xedac},
+ {0x9f6f,0xedad}, {0x9f70,0xedae}, {0x9f71,0xedaf}, {0x9f72,0xedb0},
+ {0x9f73,0xedb1}, {0x9f74,0xedb2}, {0x9f75,0xedb3}, {0x9f76,0xedb4},
+ {0x9f77,0xedb5}, {0x9f78,0xedb6}, {0x9f79,0xedb7}, {0x9f7a,0xedb8},
+ {0x9f7b,0xedb9}, {0x9f7c,0xedba}, {0x9f7d,0xedbb}, {0x9f7e,0xedbc},
+ {0x9fa1,0xedbd}, {0x9fa2,0xedbe}, {0x9fa3,0xedbf}, {0x9fa4,0xedc0},
+ {0x9fa5,0xedc1}, {0x9fa6,0xedc2}, {0x9fa7,0xedc3}, {0x9fa8,0xedc4},
+ {0x9fa9,0xedc5}, {0x9faa,0xedc6}, {0x9fab,0xedc7}, {0x9fac,0xedc8},
+ {0x9fad,0xedc9}, {0x9fae,0xedca}, {0x9faf,0xedcb}, {0x9fb0,0xedcc},
+ {0x9fb1,0xedcd}, {0x9fb2,0xedce}, {0x9fb3,0xedcf}, {0x9fb4,0xedd0},
+ {0x9fb5,0xedd1}, {0x9fb6,0xedd2}, {0x9fb7,0xedd3}, {0x9fb8,0xedd4},
+ {0x9fb9,0xedd5}, {0x9fba,0xedd6}, {0x9fbb,0xedd7}, {0x9fbc,0xedd8},
+ {0x9fbd,0xedd9}, {0x9fbe,0xedda}, {0x9fbf,0xeddb}, {0x9fc0,0xeddc},
+ {0x9fc1,0xeddd}, {0x9fc2,0xedde}, {0x9fc3,0xeddf}, {0x9fc4,0xede0},
+ {0x9fc5,0xede1}, {0x9fc6,0xede2}, {0x9fc7,0xede3}, {0x9fc8,0xede4},
+ {0x9fc9,0xede5}, {0x9fca,0xede6}, {0x9fcb,0xede7}, {0x9fcc,0xede8},
+ {0x9fcd,0xede9}, {0x9fce,0xedea}, {0x9fcf,0xedeb}, {0x9fd0,0xedec},
+ {0x9fd1,0xeded}, {0x9fd2,0xedee}, {0x9fd3,0xedef}, {0x9fd4,0xedf0},
+ {0x9fd5,0xedf1}, {0x9fd6,0xedf2}, {0x9fd7,0xedf3}, {0x9fd8,0xedf4},
+ {0x9fd9,0xedf5}, {0x9fda,0xedf6}, {0x9fdb,0xedf7}, {0x9fdc,0xedf8},
+ {0x9fdd,0xedf9}, {0x9fde,0xedfa}, {0x9fdf,0xedfb}, {0x9fe0,0xedfc},
+ {0x9fe1,0xedfd}, {0x9fe2,0xedfe}, {0x9fe3,0xedff}, {0x9fe4,0xee00},
+ {0x9fe5,0xee01}, {0x9fe6,0xee02}, {0x9fe7,0xee03}, {0x9fe8,0xee04},
+ {0x9fe9,0xee05}, {0x9fea,0xee06}, {0x9feb,0xee07}, {0x9fec,0xee08},
+ {0x9fed,0xee09}, {0x9fee,0xee0a}, {0x9fef,0xee0b}, {0x9ff0,0xee0c},
+ {0x9ff1,0xee0d}, {0x9ff2,0xee0e}, {0x9ff3,0xee0f}, {0x9ff4,0xee10},
+ {0x9ff5,0xee11}, {0x9ff6,0xee12}, {0x9ff7,0xee13}, {0x9ff8,0xee14},
+ {0x9ff9,0xee15}, {0x9ffa,0xee16}, {0x9ffb,0xee17}, {0x9ffc,0xee18},
+ {0x9ffd,0xee19}, {0x9ffe,0xee1a}, {0xa040,0xee1b}, {0xa041,0xee1c},
+ {0xa042,0xee1d}, {0xa043,0xee1e}, {0xa044,0xee1f}, {0xa045,0xee20},
+ {0xa046,0xee21}, {0xa047,0xee22}, {0xa048,0xee23}, {0xa049,0xee24},
+ {0xa04a,0xee25}, {0xa04b,0xee26}, {0xa04c,0xee27}, {0xa04d,0xee28},
+ {0xa04e,0xee29}, {0xa04f,0xee2a}, {0xa050,0xee2b}, {0xa051,0xee2c},
+ {0xa052,0xee2d}, {0xa053,0xee2e}, {0xa054,0xee2f}, {0xa055,0xee30},
+ {0xa056,0xee31}, {0xa057,0xee32}, {0xa058,0xee33}, {0xa059,0xee34},
+ {0xa05a,0xee35}, {0xa05b,0xee36}, {0xa05c,0xee37}, {0xa05d,0xee38},
+ {0xa05e,0xee39}, {0xa05f,0xee3a}, {0xa060,0xee3b}, {0xa061,0xee3c},
+ {0xa062,0xee3d}, {0xa063,0xee3e}, {0xa064,0xee3f}, {0xa065,0xee40},
+ {0xa066,0xee41}, {0xa067,0xee42}, {0xa068,0xee43}, {0xa069,0xee44},
+ {0xa06a,0xee45}, {0xa06b,0xee46}, {0xa06c,0xee47}, {0xa06d,0xee48},
+ {0xa06e,0xee49}, {0xa06f,0xee4a}, {0xa070,0xee4b}, {0xa071,0xee4c},
+ {0xa072,0xee4d}, {0xa073,0xee4e}, {0xa074,0xee4f}, {0xa075,0xee50},
+ {0xa076,0xee51}, {0xa077,0xee52}, {0xa078,0xee53}, {0xa079,0xee54},
+ {0xa07a,0xee55}, {0xa07b,0xee56}, {0xa07c,0xee57}, {0xa07d,0xee58},
+ {0xa07e,0xee59}, {0xa0a1,0xee5a}, {0xa0a2,0xee5b}, {0xa0a3,0xee5c},
+ {0xa0a4,0xee5d}, {0xa0a5,0xee5e}, {0xa0a6,0xee5f}, {0xa0a7,0xee60},
+ {0xa0a8,0xee61}, {0xa0a9,0xee62}, {0xa0aa,0xee63}, {0xa0ab,0xee64},
+ {0xa0ac,0xee65}, {0xa0ad,0xee66}, {0xa0ae,0xee67}, {0xa0af,0xee68},
+ {0xa0b0,0xee69}, {0xa0b1,0xee6a}, {0xa0b2,0xee6b}, {0xa0b3,0xee6c},
+ {0xa0b4,0xee6d}, {0xa0b5,0xee6e}, {0xa0b6,0xee6f}, {0xa0b7,0xee70},
+ {0xa0b8,0xee71}, {0xa0b9,0xee72}, {0xa0ba,0xee73}, {0xa0bb,0xee74},
+ {0xa0bc,0xee75}, {0xa0bd,0xee76}, {0xa0be,0xee77}, {0xa0bf,0xee78},
+ {0xa0c0,0xee79}, {0xa0c1,0xee7a}, {0xa0c2,0xee7b}, {0xa0c3,0xee7c},
+ {0xa0c4,0xee7d}, {0xa0c5,0xee7e}, {0xa0c6,0xee7f}, {0xa0c7,0xee80},
+ {0xa0c8,0xee81}, {0xa0c9,0xee82}, {0xa0ca,0xee83}, {0xa0cb,0xee84},
+ {0xa0cc,0xee85}, {0xa0cd,0xee86}, {0xa0ce,0xee87}, {0xa0cf,0xee88},
+ {0xa0d0,0xee89}, {0xa0d1,0xee8a}, {0xa0d2,0xee8b}, {0xa0d3,0xee8c},
+ {0xa0d4,0xee8d}, {0xa0d5,0xee8e}, {0xa0d6,0xee8f}, {0xa0d7,0xee90},
+ {0xa0d8,0xee91}, {0xa0d9,0xee92}, {0xa0da,0xee93}, {0xa0db,0xee94},
+ {0xa0dc,0xee95}, {0xa0dd,0xee96}, {0xa0de,0xee97}, {0xa0df,0xee98},
+ {0xa0e0,0xee99}, {0xa0e1,0xee9a}, {0xa0e2,0xee9b}, {0xa0e3,0xee9c},
+ {0xa0e4,0xee9d}, {0xa0e5,0xee9e}, {0xa0e6,0xee9f}, {0xa0e7,0xeea0},
+ {0xa0e8,0xeea1}, {0xa0e9,0xeea2}, {0xa0ea,0xeea3}, {0xa0eb,0xeea4},
+ {0xa0ec,0xeea5}, {0xa0ed,0xeea6}, {0xa0ee,0xeea7}, {0xa0ef,0xeea8},
+ {0xa0f0,0xeea9}, {0xa0f1,0xeeaa}, {0xa0f2,0xeeab}, {0xa0f3,0xeeac},
+ {0xa0f4,0xeead}, {0xa0f5,0xeeae}, {0xa0f6,0xeeaf}, {0xa0f7,0xeeb0},
+ {0xa0f8,0xeeb1}, {0xa0f9,0xeeb2}, {0xa0fa,0xeeb3}, {0xa0fb,0xeeb4},
+ {0xa0fc,0xeeb5}, {0xa0fd,0xeeb6}, {0xa0fe,0xeeb7}
+};
+static const B5Map b5_C6A1_to_uc_map[] = {
+ /* 0xC6A1 - 0xC8FE */
+ {0xc6a1,0xf6b1}, {0xc6a2,0xf6b2}, {0xc6a3,0xf6b3}, {0xc6a4,0xf6b4},
+ {0xc6a5,0xf6b5}, {0xc6a6,0xf6b6}, {0xc6a7,0xf6b7}, {0xc6a8,0xf6b8},
+ {0xc6a9,0xf6b9}, {0xc6aa,0xf6ba}, {0xc6ab,0xf6bb}, {0xc6ac,0xf6bc},
+ {0xc6ad,0xf6bd}, {0xc6ae,0xf6be}, {0xc6af,0xf6bf}, {0xc6b0,0xf6c0},
+ {0xc6b1,0xf6c1}, {0xc6b2,0xf6c2}, {0xc6b3,0xf6c3}, {0xc6b4,0xf6c4},
+ {0xc6b5,0xf6c5}, {0xc6b6,0xf6c6}, {0xc6b7,0xf6c7}, {0xc6b8,0xf6c8},
+ {0xc6b9,0xf6c9}, {0xc6ba,0xf6ca}, {0xc6bb,0xf6cb}, {0xc6bc,0xf6cc},
+ {0xc6bd,0xf6cd}, {0xc6be,0xf6ce}, {0xc6bf,0xf6cf}, {0xc6c0,0xf6d0},
+ {0xc6c1,0xf6d1}, {0xc6c2,0xf6d2}, {0xc6c3,0xf6d3}, {0xc6c4,0xf6d4},
+ {0xc6c5,0xf6d5}, {0xc6c6,0xf6d6}, {0xc6c7,0xf6d7}, {0xc6c8,0xf6d8},
+ {0xc6c9,0xf6d9}, {0xc6ca,0xf6da}, {0xc6cb,0xf6db}, {0xc6cc,0xf6dc},
+ {0xc6cd,0xf6dd}, {0xc6ce,0xf6de}, {0xc6cf,0xf6df}, {0xc6d0,0xf6e0},
+ {0xc6d1,0xf6e1}, {0xc6d2,0xf6e2}, {0xc6d3,0xf6e3}, {0xc6d4,0xf6e4},
+ {0xc6d5,0xf6e5}, {0xc6d6,0xf6e6}, {0xc6d7,0xf6e7}, {0xc6d8,0xf6e8},
+ {0xc6d9,0xf6e9}, {0xc6da,0xf6ea}, {0xc6db,0xf6eb}, {0xc6dc,0xf6ec},
+ {0xc6dd,0xf6ed}, {0xc6de,0xf6ee}, {0xc6df,0xf6ef}, {0xc6e0,0xf6f0},
+ {0xc6e1,0xf6f1}, {0xc6e2,0xf6f2}, {0xc6e3,0xf6f3}, {0xc6e4,0xf6f4},
+ {0xc6e5,0xf6f5}, {0xc6e6,0xf6f6}, {0xc6e7,0xf6f7}, {0xc6e8,0xf6f8},
+ {0xc6e9,0xf6f9}, {0xc6ea,0xf6fa}, {0xc6eb,0xf6fb}, {0xc6ec,0xf6fc},
+ {0xc6ed,0xf6fd}, {0xc6ee,0xf6fe}, {0xc6ef,0xf6ff}, {0xc6f0,0xf700},
+ {0xc6f1,0xf701}, {0xc6f2,0xf702}, {0xc6f3,0xf703}, {0xc6f4,0xf704},
+ {0xc6f5,0xf705}, {0xc6f6,0xf706}, {0xc6f7,0xf707}, {0xc6f8,0xf708},
+ {0xc6f9,0xf709}, {0xc6fa,0xf70a}, {0xc6fb,0xf70b}, {0xc6fc,0xf70c},
+ {0xc6fd,0xf70d}, {0xc6fe,0xf70e}, {0xc740,0xf70f}, {0xc741,0xf710},
+ {0xc742,0xf711}, {0xc743,0xf712}, {0xc744,0xf713}, {0xc745,0xf714},
+ {0xc746,0xf715}, {0xc747,0xf716}, {0xc748,0xf717}, {0xc749,0xf718},
+ {0xc74a,0xf719}, {0xc74b,0xf71a}, {0xc74c,0xf71b}, {0xc74d,0xf71c},
+ {0xc74e,0xf71d}, {0xc74f,0xf71e}, {0xc750,0xf71f}, {0xc751,0xf720},
+ {0xc752,0xf721}, {0xc753,0xf722}, {0xc754,0xf723}, {0xc755,0xf724},
+ {0xc756,0xf725}, {0xc757,0xf726}, {0xc758,0xf727}, {0xc759,0xf728},
+ {0xc75a,0xf729}, {0xc75b,0xf72a}, {0xc75c,0xf72b}, {0xc75d,0xf72c},
+ {0xc75e,0xf72d}, {0xc75f,0xf72e}, {0xc760,0xf72f}, {0xc761,0xf730},
+ {0xc762,0xf731}, {0xc763,0xf732}, {0xc764,0xf733}, {0xc765,0xf734},
+ {0xc766,0xf735}, {0xc767,0xf736}, {0xc768,0xf737}, {0xc769,0xf738},
+ {0xc76a,0xf739}, {0xc76b,0xf73a}, {0xc76c,0xf73b}, {0xc76d,0xf73c},
+ {0xc76e,0xf73d}, {0xc76f,0xf73e}, {0xc770,0xf73f}, {0xc771,0xf740},
+ {0xc772,0xf741}, {0xc773,0xf742}, {0xc774,0xf743}, {0xc775,0xf744},
+ {0xc776,0xf745}, {0xc777,0xf746}, {0xc778,0xf747}, {0xc779,0xf748},
+ {0xc77a,0xf749}, {0xc77b,0xf74a}, {0xc77c,0xf74b}, {0xc77d,0xf74c},
+ {0xc77e,0xf74d}, {0xc7a1,0xf74e}, {0xc7a2,0xf74f}, {0xc7a3,0xf750},
+ {0xc7a4,0xf751}, {0xc7a5,0xf752}, {0xc7a6,0xf753}, {0xc7a7,0xf754},
+ {0xc7a8,0xf755}, {0xc7a9,0xf756}, {0xc7aa,0xf757}, {0xc7ab,0xf758},
+ {0xc7ac,0xf759}, {0xc7ad,0xf75a}, {0xc7ae,0xf75b}, {0xc7af,0xf75c},
+ {0xc7b0,0xf75d}, {0xc7b1,0xf75e}, {0xc7b2,0xf75f}, {0xc7b3,0xf760},
+ {0xc7b4,0xf761}, {0xc7b5,0xf762}, {0xc7b6,0xf763}, {0xc7b7,0xf764},
+ {0xc7b8,0xf765}, {0xc7b9,0xf766}, {0xc7ba,0xf767}, {0xc7bb,0xf768},
+ {0xc7bc,0xf769}, {0xc7bd,0xf76a}, {0xc7be,0xf76b}, {0xc7bf,0xf76c},
+ {0xc7c0,0xf76d}, {0xc7c1,0xf76e}, {0xc7c2,0xf76f}, {0xc7c3,0xf770},
+ {0xc7c4,0xf771}, {0xc7c5,0xf772}, {0xc7c6,0xf773}, {0xc7c7,0xf774},
+ {0xc7c8,0xf775}, {0xc7c9,0xf776}, {0xc7ca,0xf777}, {0xc7cb,0xf778},
+ {0xc7cc,0xf779}, {0xc7cd,0xf77a}, {0xc7ce,0xf77b}, {0xc7cf,0xf77c},
+ {0xc7d0,0xf77d}, {0xc7d1,0xf77e}, {0xc7d2,0xf77f}, {0xc7d3,0xf780},
+ {0xc7d4,0xf781}, {0xc7d5,0xf782}, {0xc7d6,0xf783}, {0xc7d7,0xf784},
+ {0xc7d8,0xf785}, {0xc7d9,0xf786}, {0xc7da,0xf787}, {0xc7db,0xf788},
+ {0xc7dc,0xf789}, {0xc7dd,0xf78a}, {0xc7de,0xf78b}, {0xc7df,0xf78c},
+ {0xc7e0,0xf78d}, {0xc7e1,0xf78e}, {0xc7e2,0xf78f}, {0xc7e3,0xf790},
+ {0xc7e4,0xf791}, {0xc7e5,0xf792}, {0xc7e6,0xf793}, {0xc7e7,0xf794},
+ {0xc7e8,0xf795}, {0xc7e9,0xf796}, {0xc7ea,0xf797}, {0xc7eb,0xf798},
+ {0xc7ec,0xf799}, {0xc7ed,0xf79a}, {0xc7ee,0xf79b}, {0xc7ef,0xf79c},
+ {0xc7f0,0xf79d}, {0xc7f1,0xf79e}, {0xc7f2,0xf79f}, {0xc7f3,0xf7a0},
+ {0xc7f4,0xf7a1}, {0xc7f5,0xf7a2}, {0xc7f6,0xf7a3}, {0xc7f7,0xf7a4},
+ {0xc7f8,0xf7a5}, {0xc7f9,0xf7a6}, {0xc7fa,0xf7a7}, {0xc7fb,0xf7a8},
+ {0xc7fc,0xf7a9}, {0xc7fd,0xf7aa}, {0xc7fe,0xf7ab}, {0xc840,0xf7ac},
+ {0xc841,0xf7ad}, {0xc842,0xf7ae}, {0xc843,0xf7af}, {0xc844,0xf7b0},
+ {0xc845,0xf7b1}, {0xc846,0xf7b2}, {0xc847,0xf7b3}, {0xc848,0xf7b4},
+ {0xc849,0xf7b5}, {0xc84a,0xf7b6}, {0xc84b,0xf7b7}, {0xc84c,0xf7b8},
+ {0xc84d,0xf7b9}, {0xc84e,0xf7ba}, {0xc84f,0xf7bb}, {0xc850,0xf7bc},
+ {0xc851,0xf7bd}, {0xc852,0xf7be}, {0xc853,0xf7bf}, {0xc854,0xf7c0},
+ {0xc855,0xf7c1}, {0xc856,0xf7c2}, {0xc857,0xf7c3}, {0xc858,0xf7c4},
+ {0xc859,0xf7c5}, {0xc85a,0xf7c6}, {0xc85b,0xf7c7}, {0xc85c,0xf7c8},
+ {0xc85d,0xf7c9}, {0xc85e,0xf7ca}, {0xc85f,0xf7cb}, {0xc860,0xf7cc},
+ {0xc861,0xf7cd}, {0xc862,0xf7ce}, {0xc863,0xf7cf}, {0xc864,0xf7d0},
+ {0xc865,0xf7d1}, {0xc866,0xf7d2}, {0xc867,0xf7d3}, {0xc868,0xf7d4},
+ {0xc869,0xf7d5}, {0xc86a,0xf7d6}, {0xc86b,0xf7d7}, {0xc86c,0xf7d8},
+ {0xc86d,0xf7d9}, {0xc86e,0xf7da}, {0xc86f,0xf7db}, {0xc870,0xf7dc},
+ {0xc871,0xf7dd}, {0xc872,0xf7de}, {0xc873,0xf7df}, {0xc874,0xf7e0},
+ {0xc875,0xf7e1}, {0xc876,0xf7e2}, {0xc877,0xf7e3}, {0xc878,0xf7e4},
+ {0xc879,0xf7e5}, {0xc87a,0xf7e6}, {0xc87b,0xf7e7}, {0xc87c,0xf7e8},
+ {0xc87d,0xf7e9}, {0xc87e,0xf7ea}, {0xc8a1,0xf7eb}, {0xc8a2,0xf7ec},
+ {0xc8a3,0xf7ed}, {0xc8a4,0xf7ee}, {0xc8a5,0xf7ef}, {0xc8a6,0xf7f0},
+ {0xc8a7,0xf7f1}, {0xc8a8,0xf7f2}, {0xc8a9,0xf7f3}, {0xc8aa,0xf7f4},
+ {0xc8ab,0xf7f5}, {0xc8ac,0xf7f6}, {0xc8ad,0xf7f7}, {0xc8ae,0xf7f8},
+ {0xc8af,0xf7f9}, {0xc8b0,0xf7fa}, {0xc8b1,0xf7fb}, {0xc8b2,0xf7fc},
+ {0xc8b3,0xf7fd}, {0xc8b4,0xf7fe}, {0xc8b5,0xf7ff}, {0xc8b6,0xf800},
+ {0xc8b7,0xf801}, {0xc8b8,0xf802}, {0xc8b9,0xf803}, {0xc8ba,0xf804},
+ {0xc8bb,0xf805}, {0xc8bc,0xf806}, {0xc8bd,0xf807}, {0xc8be,0xf808},
+ {0xc8bf,0xf809}, {0xc8c0,0xf80a}, {0xc8c1,0xf80b}, {0xc8c2,0xf80c},
+ {0xc8c3,0xf80d}, {0xc8c4,0xf80e}, {0xc8c5,0xf80f}, {0xc8c6,0xf810},
+ {0xc8c7,0xf811}, {0xc8c8,0xf812}, {0xc8c9,0xf813}, {0xc8ca,0xf814},
+ {0xc8cb,0xf815}, {0xc8cc,0xf816}, {0xc8cd,0xf817}, {0xc8ce,0xf818},
+ {0xc8cf,0xf819}, {0xc8d0,0xf81a}, {0xc8d1,0xf81b}, {0xc8d2,0xf81c},
+ {0xc8d3,0xf81d}, {0xc8d4,0xf81e}, {0xc8d5,0xf81f}, {0xc8d6,0xf820},
+ {0xc8d7,0xf821}, {0xc8d8,0xf822}, {0xc8d9,0xf823}, {0xc8da,0xf824},
+ {0xc8db,0xf825}, {0xc8dc,0xf826}, {0xc8dd,0xf827}, {0xc8de,0xf828},
+ {0xc8df,0xf829}, {0xc8e0,0xf82a}, {0xc8e1,0xf82b}, {0xc8e2,0xf82c},
+ {0xc8e3,0xf82d}, {0xc8e4,0xf82e}, {0xc8e5,0xf82f}, {0xc8e6,0xf830},
+ {0xc8e7,0xf831}, {0xc8e8,0xf832}, {0xc8e9,0xf833}, {0xc8ea,0xf834},
+ {0xc8eb,0xf835}, {0xc8ec,0xf836}, {0xc8ed,0xf837}, {0xc8ee,0xf838},
+ {0xc8ef,0xf839}, {0xc8f0,0xf83a}, {0xc8f1,0xf83b}, {0xc8f2,0xf83c},
+ {0xc8f3,0xf83d}, {0xc8f4,0xf83e}, {0xc8f5,0xf83f}, {0xc8f6,0xf840},
+ {0xc8f7,0xf841}, {0xc8f8,0xf842}, {0xc8f9,0xf843}, {0xc8fa,0xf844},
+ {0xc8fb,0xf845}, {0xc8fc,0xf846}, {0xc8fd,0xf847}, {0xc8fe,0xf848}
+};
+//This table is for values 0xFA40 - 0xFEFE also includes 0xf9fe
+static const B5Map b5_FA40_to_uc_map[] = {
+ {0xf9fe,0x2593},
+ /* 0xFA40 - 0xFEFE */
+ {0xfa40,0xe000}, {0xfa41,0xe001}, {0xfa42,0xe002}, {0xfa43,0xe003},
+ {0xfa44,0xe004}, {0xfa45,0xe005}, {0xfa46,0xe006}, {0xfa47,0xe007},
+ {0xfa48,0xe008}, {0xfa49,0xe009}, {0xfa4a,0xe00a}, {0xfa4b,0xe00b},
+ {0xfa4c,0xe00c}, {0xfa4d,0xe00d}, {0xfa4e,0xe00e}, {0xfa4f,0xe00f},
+ {0xfa50,0xe010}, {0xfa51,0xe011}, {0xfa52,0xe012}, {0xfa53,0xe013},
+ {0xfa54,0xe014}, {0xfa55,0xe015}, {0xfa56,0xe016}, {0xfa57,0xe017},
+ {0xfa58,0xe018}, {0xfa59,0xe019}, {0xfa5a,0xe01a}, {0xfa5b,0xe01b},
+ {0xfa5c,0xe01c}, {0xfa5d,0xe01d}, {0xfa5e,0xe01e}, {0xfa5f,0xe01f},
+ {0xfa60,0xe020}, {0xfa61,0xe021}, {0xfa62,0xe022}, {0xfa63,0xe023},
+ {0xfa64,0xe024}, {0xfa65,0xe025}, {0xfa66,0xe026}, {0xfa67,0xe027},
+ {0xfa68,0xe028}, {0xfa69,0xe029}, {0xfa6a,0xe02a}, {0xfa6b,0xe02b},
+ {0xfa6c,0xe02c}, {0xfa6d,0xe02d}, {0xfa6e,0xe02e}, {0xfa6f,0xe02f},
+ {0xfa70,0xe030}, {0xfa71,0xe031}, {0xfa72,0xe032}, {0xfa73,0xe033},
+ {0xfa74,0xe034}, {0xfa75,0xe035}, {0xfa76,0xe036}, {0xfa77,0xe037},
+ {0xfa78,0xe038}, {0xfa79,0xe039}, {0xfa7a,0xe03a}, {0xfa7b,0xe03b},
+ {0xfa7c,0xe03c}, {0xfa7d,0xe03d}, {0xfa7e,0xe03e}, {0xfaa1,0xe03f},
+ {0xfaa2,0xe040}, {0xfaa3,0xe041}, {0xfaa4,0xe042}, {0xfaa5,0xe043},
+ {0xfaa6,0xe044}, {0xfaa7,0xe045}, {0xfaa8,0xe046}, {0xfaa9,0xe047},
+ {0xfaaa,0xe048}, {0xfaab,0xe049}, {0xfaac,0xe04a}, {0xfaad,0xe04b},
+ {0xfaae,0xe04c}, {0xfaaf,0xe04d}, {0xfab0,0xe04e}, {0xfab1,0xe04f},
+ {0xfab2,0xe050}, {0xfab3,0xe051}, {0xfab4,0xe052}, {0xfab5,0xe053},
+ {0xfab6,0xe054}, {0xfab7,0xe055}, {0xfab8,0xe056}, {0xfab9,0xe057},
+ {0xfaba,0xe058}, {0xfabb,0xe059}, {0xfabc,0xe05a}, {0xfabd,0xe05b},
+ {0xfabe,0xe05c}, {0xfabf,0xe05d}, {0xfac0,0xe05e}, {0xfac1,0xe05f},
+ {0xfac2,0xe060}, {0xfac3,0xe061}, {0xfac4,0xe062}, {0xfac5,0xe063},
+ {0xfac6,0xe064}, {0xfac7,0xe065}, {0xfac8,0xe066}, {0xfac9,0xe067},
+ {0xfaca,0xe068}, {0xfacb,0xe069}, {0xfacc,0xe06a}, {0xfacd,0xe06b},
+ {0xface,0xe06c}, {0xfacf,0xe06d}, {0xfad0,0xe06e}, {0xfad1,0xe06f},
+ {0xfad2,0xe070}, {0xfad3,0xe071}, {0xfad4,0xe072}, {0xfad5,0xe073},
+ {0xfad6,0xe074}, {0xfad7,0xe075}, {0xfad8,0xe076}, {0xfad9,0xe077},
+ {0xfada,0xe078}, {0xfadb,0xe079}, {0xfadc,0xe07a}, {0xfadd,0xe07b},
+ {0xfade,0xe07c}, {0xfadf,0xe07d}, {0xfae0,0xe07e}, {0xfae1,0xe07f},
+ {0xfae2,0xe080}, {0xfae3,0xe081}, {0xfae4,0xe082}, {0xfae5,0xe083},
+ {0xfae6,0xe084}, {0xfae7,0xe085}, {0xfae8,0xe086}, {0xfae9,0xe087},
+ {0xfaea,0xe088}, {0xfaeb,0xe089}, {0xfaec,0xe08a}, {0xfaed,0xe08b},
+ {0xfaee,0xe08c}, {0xfaef,0xe08d}, {0xfaf0,0xe08e}, {0xfaf1,0xe08f},
+ {0xfaf2,0xe090}, {0xfaf3,0xe091}, {0xfaf4,0xe092}, {0xfaf5,0xe093},
+ {0xfaf6,0xe094}, {0xfaf7,0xe095}, {0xfaf8,0xe096}, {0xfaf9,0xe097},
+ {0xfafa,0xe098}, {0xfafb,0xe099}, {0xfafc,0xe09a}, {0xfafd,0xe09b},
+ {0xfafe,0xe09c}, {0xfb40,0xe09d}, {0xfb41,0xe09e}, {0xfb42,0xe09f},
+ {0xfb43,0xe0a0}, {0xfb44,0xe0a1}, {0xfb45,0xe0a2}, {0xfb46,0xe0a3},
+ {0xfb47,0xe0a4}, {0xfb48,0xe0a5}, {0xfb49,0xe0a6}, {0xfb4a,0xe0a7},
+ {0xfb4b,0xe0a8}, {0xfb4c,0xe0a9}, {0xfb4d,0xe0aa}, {0xfb4e,0xe0ab},
+ {0xfb4f,0xe0ac}, {0xfb50,0xe0ad}, {0xfb51,0xe0ae}, {0xfb52,0xe0af},
+ {0xfb53,0xe0b0}, {0xfb54,0xe0b1}, {0xfb55,0xe0b2}, {0xfb56,0xe0b3},
+ {0xfb57,0xe0b4}, {0xfb58,0xe0b5}, {0xfb59,0xe0b6}, {0xfb5a,0xe0b7},
+ {0xfb5b,0xe0b8}, {0xfb5c,0xe0b9}, {0xfb5d,0xe0ba}, {0xfb5e,0xe0bb},
+ {0xfb5f,0xe0bc}, {0xfb60,0xe0bd}, {0xfb61,0xe0be}, {0xfb62,0xe0bf},
+ {0xfb63,0xe0c0}, {0xfb64,0xe0c1}, {0xfb65,0xe0c2}, {0xfb66,0xe0c3},
+ {0xfb67,0xe0c4}, {0xfb68,0xe0c5}, {0xfb69,0xe0c6}, {0xfb6a,0xe0c7},
+ {0xfb6b,0xe0c8}, {0xfb6c,0xe0c9}, {0xfb6d,0xe0ca}, {0xfb6e,0xe0cb},
+ {0xfb6f,0xe0cc}, {0xfb70,0xe0cd}, {0xfb71,0xe0ce}, {0xfb72,0xe0cf},
+ {0xfb73,0xe0d0}, {0xfb74,0xe0d1}, {0xfb75,0xe0d2}, {0xfb76,0xe0d3},
+ {0xfb77,0xe0d4}, {0xfb78,0xe0d5}, {0xfb79,0xe0d6}, {0xfb7a,0xe0d7},
+ {0xfb7b,0xe0d8}, {0xfb7c,0xe0d9}, {0xfb7d,0xe0da}, {0xfb7e,0xe0db},
+ {0xfba1,0xe0dc}, {0xfba2,0xe0dd}, {0xfba3,0xe0de}, {0xfba4,0xe0df},
+ {0xfba5,0xe0e0}, {0xfba6,0xe0e1}, {0xfba7,0xe0e2}, {0xfba8,0xe0e3},
+ {0xfba9,0xe0e4}, {0xfbaa,0xe0e5}, {0xfbab,0xe0e6}, {0xfbac,0xe0e7},
+ {0xfbad,0xe0e8}, {0xfbae,0xe0e9}, {0xfbaf,0xe0ea}, {0xfbb0,0xe0eb},
+ {0xfbb1,0xe0ec}, {0xfbb2,0xe0ed}, {0xfbb3,0xe0ee}, {0xfbb4,0xe0ef},
+ {0xfbb5,0xe0f0}, {0xfbb6,0xe0f1}, {0xfbb7,0xe0f2}, {0xfbb8,0xe0f3},
+ {0xfbb9,0xe0f4}, {0xfbba,0xe0f5}, {0xfbbb,0xe0f6}, {0xfbbc,0xe0f7},
+ {0xfbbd,0xe0f8}, {0xfbbe,0xe0f9}, {0xfbbf,0xe0fa}, {0xfbc0,0xe0fb},
+ {0xfbc1,0xe0fc}, {0xfbc2,0xe0fd}, {0xfbc3,0xe0fe}, {0xfbc4,0xe0ff},
+ {0xfbc5,0xe100}, {0xfbc6,0xe101}, {0xfbc7,0xe102}, {0xfbc8,0xe103},
+ {0xfbc9,0xe104}, {0xfbca,0xe105}, {0xfbcb,0xe106}, {0xfbcc,0xe107},
+ {0xfbcd,0xe108}, {0xfbce,0xe109}, {0xfbcf,0xe10a}, {0xfbd0,0xe10b},
+ {0xfbd1,0xe10c}, {0xfbd2,0xe10d}, {0xfbd3,0xe10e}, {0xfbd4,0xe10f},
+ {0xfbd5,0xe110}, {0xfbd6,0xe111}, {0xfbd7,0xe112}, {0xfbd8,0xe113},
+ {0xfbd9,0xe114}, {0xfbda,0xe115}, {0xfbdb,0xe116}, {0xfbdc,0xe117},
+ {0xfbdd,0xe118}, {0xfbde,0xe119}, {0xfbdf,0xe11a}, {0xfbe0,0xe11b},
+ {0xfbe1,0xe11c}, {0xfbe2,0xe11d}, {0xfbe3,0xe11e}, {0xfbe4,0xe11f},
+ {0xfbe5,0xe120}, {0xfbe6,0xe121}, {0xfbe7,0xe122}, {0xfbe8,0xe123},
+ {0xfbe9,0xe124}, {0xfbea,0xe125}, {0xfbeb,0xe126}, {0xfbec,0xe127},
+ {0xfbed,0xe128}, {0xfbee,0xe129}, {0xfbef,0xe12a}, {0xfbf0,0xe12b},
+ {0xfbf1,0xe12c}, {0xfbf2,0xe12d}, {0xfbf3,0xe12e}, {0xfbf4,0xe12f},
+ {0xfbf5,0xe130}, {0xfbf6,0xe131}, {0xfbf7,0xe132}, {0xfbf8,0xe133},
+ {0xfbf9,0xe134}, {0xfbfa,0xe135}, {0xfbfb,0xe136}, {0xfbfc,0xe137},
+ {0xfbfd,0xe138}, {0xfbfe,0xe139}, {0xfc40,0xe13a}, {0xfc41,0xe13b},
+ {0xfc42,0xe13c}, {0xfc43,0xe13d}, {0xfc44,0xe13e}, {0xfc45,0xe13f},
+ {0xfc46,0xe140}, {0xfc47,0xe141}, {0xfc48,0xe142}, {0xfc49,0xe143},
+ {0xfc4a,0xe144}, {0xfc4b,0xe145}, {0xfc4c,0xe146}, {0xfc4d,0xe147},
+ {0xfc4e,0xe148}, {0xfc4f,0xe149}, {0xfc50,0xe14a}, {0xfc51,0xe14b},
+ {0xfc52,0xe14c}, {0xfc53,0xe14d}, {0xfc54,0xe14e}, {0xfc55,0xe14f},
+ {0xfc56,0xe150}, {0xfc57,0xe151}, {0xfc58,0xe152}, {0xfc59,0xe153},
+ {0xfc5a,0xe154}, {0xfc5b,0xe155}, {0xfc5c,0xe156}, {0xfc5d,0xe157},
+ {0xfc5e,0xe158}, {0xfc5f,0xe159}, {0xfc60,0xe15a}, {0xfc61,0xe15b},
+ {0xfc62,0xe15c}, {0xfc63,0xe15d}, {0xfc64,0xe15e}, {0xfc65,0xe15f},
+ {0xfc66,0xe160}, {0xfc67,0xe161}, {0xfc68,0xe162}, {0xfc69,0xe163},
+ {0xfc6a,0xe164}, {0xfc6b,0xe165}, {0xfc6c,0xe166}, {0xfc6d,0xe167},
+ {0xfc6e,0xe168}, {0xfc6f,0xe169}, {0xfc70,0xe16a}, {0xfc71,0xe16b},
+ {0xfc72,0xe16c}, {0xfc73,0xe16d}, {0xfc74,0xe16e}, {0xfc75,0xe16f},
+ {0xfc76,0xe170}, {0xfc77,0xe171}, {0xfc78,0xe172}, {0xfc79,0xe173},
+ {0xfc7a,0xe174}, {0xfc7b,0xe175}, {0xfc7c,0xe176}, {0xfc7d,0xe177},
+ {0xfc7e,0xe178}, {0xfca1,0xe179}, {0xfca2,0xe17a}, {0xfca3,0xe17b},
+ {0xfca4,0xe17c}, {0xfca5,0xe17d}, {0xfca6,0xe17e}, {0xfca7,0xe17f},
+ {0xfca8,0xe180}, {0xfca9,0xe181}, {0xfcaa,0xe182}, {0xfcab,0xe183},
+ {0xfcac,0xe184}, {0xfcad,0xe185}, {0xfcae,0xe186}, {0xfcaf,0xe187},
+ {0xfcb0,0xe188}, {0xfcb1,0xe189}, {0xfcb2,0xe18a}, {0xfcb3,0xe18b},
+ {0xfcb4,0xe18c}, {0xfcb5,0xe18d}, {0xfcb6,0xe18e}, {0xfcb7,0xe18f},
+ {0xfcb8,0xe190}, {0xfcb9,0xe191}, {0xfcba,0xe192}, {0xfcbb,0xe193},
+ {0xfcbc,0xe194}, {0xfcbd,0xe195}, {0xfcbe,0xe196}, {0xfcbf,0xe197},
+ {0xfcc0,0xe198}, {0xfcc1,0xe199}, {0xfcc2,0xe19a}, {0xfcc3,0xe19b},
+ {0xfcc4,0xe19c}, {0xfcc5,0xe19d}, {0xfcc6,0xe19e}, {0xfcc7,0xe19f},
+ {0xfcc8,0xe1a0}, {0xfcc9,0xe1a1}, {0xfcca,0xe1a2}, {0xfccb,0xe1a3},
+ {0xfccc,0xe1a4}, {0xfccd,0xe1a5}, {0xfcce,0xe1a6}, {0xfccf,0xe1a7},
+ {0xfcd0,0xe1a8}, {0xfcd1,0xe1a9}, {0xfcd2,0xe1aa}, {0xfcd3,0xe1ab},
+ {0xfcd4,0xe1ac}, {0xfcd5,0xe1ad}, {0xfcd6,0xe1ae}, {0xfcd7,0xe1af},
+ {0xfcd8,0xe1b0}, {0xfcd9,0xe1b1}, {0xfcda,0xe1b2}, {0xfcdb,0xe1b3},
+ {0xfcdc,0xe1b4}, {0xfcdd,0xe1b5}, {0xfcde,0xe1b6}, {0xfcdf,0xe1b7},
+ {0xfce0,0xe1b8}, {0xfce1,0xe1b9}, {0xfce2,0xe1ba}, {0xfce3,0xe1bb},
+ {0xfce4,0xe1bc}, {0xfce5,0xe1bd}, {0xfce6,0xe1be}, {0xfce7,0xe1bf},
+ {0xfce8,0xe1c0}, {0xfce9,0xe1c1}, {0xfcea,0xe1c2}, {0xfceb,0xe1c3},
+ {0xfcec,0xe1c4}, {0xfced,0xe1c5}, {0xfcee,0xe1c6}, {0xfcef,0xe1c7},
+ {0xfcf0,0xe1c8}, {0xfcf1,0xe1c9}, {0xfcf2,0xe1ca}, {0xfcf3,0xe1cb},
+ {0xfcf4,0xe1cc}, {0xfcf5,0xe1cd}, {0xfcf6,0xe1ce}, {0xfcf7,0xe1cf},
+ {0xfcf8,0xe1d0}, {0xfcf9,0xe1d1}, {0xfcfa,0xe1d2}, {0xfcfb,0xe1d3},
+ {0xfcfc,0xe1d4}, {0xfcfd,0xe1d5}, {0xfcfe,0xe1d6}, {0xfd40,0xe1d7},
+ {0xfd41,0xe1d8}, {0xfd42,0xe1d9}, {0xfd43,0xe1da}, {0xfd44,0xe1db},
+ {0xfd45,0xe1dc}, {0xfd46,0xe1dd}, {0xfd47,0xe1de}, {0xfd48,0xe1df},
+ {0xfd49,0xe1e0}, {0xfd4a,0xe1e1}, {0xfd4b,0xe1e2}, {0xfd4c,0xe1e3},
+ {0xfd4d,0xe1e4}, {0xfd4e,0xe1e5}, {0xfd4f,0xe1e6}, {0xfd50,0xe1e7},
+ {0xfd51,0xe1e8}, {0xfd52,0xe1e9}, {0xfd53,0xe1ea}, {0xfd54,0xe1eb},
+ {0xfd55,0xe1ec}, {0xfd56,0xe1ed}, {0xfd57,0xe1ee}, {0xfd58,0xe1ef},
+ {0xfd59,0xe1f0}, {0xfd5a,0xe1f1}, {0xfd5b,0xe1f2}, {0xfd5c,0xe1f3},
+ {0xfd5d,0xe1f4}, {0xfd5e,0xe1f5}, {0xfd5f,0xe1f6}, {0xfd60,0xe1f7},
+ {0xfd61,0xe1f8}, {0xfd62,0xe1f9}, {0xfd63,0xe1fa}, {0xfd64,0xe1fb},
+ {0xfd65,0xe1fc}, {0xfd66,0xe1fd}, {0xfd67,0xe1fe}, {0xfd68,0xe1ff},
+ {0xfd69,0xe200}, {0xfd6a,0xe201}, {0xfd6b,0xe202}, {0xfd6c,0xe203},
+ {0xfd6d,0xe204}, {0xfd6e,0xe205}, {0xfd6f,0xe206}, {0xfd70,0xe207},
+ {0xfd71,0xe208}, {0xfd72,0xe209}, {0xfd73,0xe20a}, {0xfd74,0xe20b},
+ {0xfd75,0xe20c}, {0xfd76,0xe20d}, {0xfd77,0xe20e}, {0xfd78,0xe20f},
+ {0xfd79,0xe210}, {0xfd7a,0xe211}, {0xfd7b,0xe212}, {0xfd7c,0xe213},
+ {0xfd7d,0xe214}, {0xfd7e,0xe215}, {0xfda1,0xe216}, {0xfda2,0xe217},
+ {0xfda3,0xe218}, {0xfda4,0xe219}, {0xfda5,0xe21a}, {0xfda6,0xe21b},
+ {0xfda7,0xe21c}, {0xfda8,0xe21d}, {0xfda9,0xe21e}, {0xfdaa,0xe21f},
+ {0xfdab,0xe220}, {0xfdac,0xe221}, {0xfdad,0xe222}, {0xfdae,0xe223},
+ {0xfdaf,0xe224}, {0xfdb0,0xe225}, {0xfdb1,0xe226}, {0xfdb2,0xe227},
+ {0xfdb3,0xe228}, {0xfdb4,0xe229}, {0xfdb5,0xe22a}, {0xfdb6,0xe22b},
+ {0xfdb7,0xe22c}, {0xfdb8,0xe22d}, {0xfdb9,0xe22e}, {0xfdba,0xe22f},
+ {0xfdbb,0xe230}, {0xfdbc,0xe231}, {0xfdbd,0xe232}, {0xfdbe,0xe233},
+ {0xfdbf,0xe234}, {0xfdc0,0xe235}, {0xfdc1,0xe236}, {0xfdc2,0xe237},
+ {0xfdc3,0xe238}, {0xfdc4,0xe239}, {0xfdc5,0xe23a}, {0xfdc6,0xe23b},
+ {0xfdc7,0xe23c}, {0xfdc8,0xe23d}, {0xfdc9,0xe23e}, {0xfdca,0xe23f},
+ {0xfdcb,0xe240}, {0xfdcc,0xe241}, {0xfdcd,0xe242}, {0xfdce,0xe243},
+ {0xfdcf,0xe244}, {0xfdd0,0xe245}, {0xfdd1,0xe246}, {0xfdd2,0xe247},
+ {0xfdd3,0xe248}, {0xfdd4,0xe249}, {0xfdd5,0xe24a}, {0xfdd6,0xe24b},
+ {0xfdd7,0xe24c}, {0xfdd8,0xe24d}, {0xfdd9,0xe24e}, {0xfdda,0xe24f},
+ {0xfddb,0xe250}, {0xfddc,0xe251}, {0xfddd,0xe252}, {0xfdde,0xe253},
+ {0xfddf,0xe254}, {0xfde0,0xe255}, {0xfde1,0xe256}, {0xfde2,0xe257},
+ {0xfde3,0xe258}, {0xfde4,0xe259}, {0xfde5,0xe25a}, {0xfde6,0xe25b},
+ {0xfde7,0xe25c}, {0xfde8,0xe25d}, {0xfde9,0xe25e}, {0xfdea,0xe25f},
+ {0xfdeb,0xe260}, {0xfdec,0xe261}, {0xfded,0xe262}, {0xfdee,0xe263},
+ {0xfdef,0xe264}, {0xfdf0,0xe265}, {0xfdf1,0xe266}, {0xfdf2,0xe267},
+ {0xfdf3,0xe268}, {0xfdf4,0xe269}, {0xfdf5,0xe26a}, {0xfdf6,0xe26b},
+ {0xfdf7,0xe26c}, {0xfdf8,0xe26d}, {0xfdf9,0xe26e}, {0xfdfa,0xe26f},
+ {0xfdfb,0xe270}, {0xfdfc,0xe271}, {0xfdfd,0xe272}, {0xfdfe,0xe273},
+ {0xfe40,0xe274}, {0xfe41,0xe275}, {0xfe42,0xe276}, {0xfe43,0xe277},
+ {0xfe44,0xe278}, {0xfe45,0xe279}, {0xfe46,0xe27a}, {0xfe47,0xe27b},
+ {0xfe48,0xe27c}, {0xfe49,0xe27d}, {0xfe4a,0xe27e}, {0xfe4b,0xe27f},
+ {0xfe4c,0xe280}, {0xfe4d,0xe281}, {0xfe4e,0xe282}, {0xfe4f,0xe283},
+ {0xfe50,0xe284}, {0xfe51,0xe285}, {0xfe52,0xe286}, {0xfe53,0xe287},
+ {0xfe54,0xe288}, {0xfe55,0xe289}, {0xfe56,0xe28a}, {0xfe57,0xe28b},
+ {0xfe58,0xe28c}, {0xfe59,0xe28d}, {0xfe5a,0xe28e}, {0xfe5b,0xe28f},
+ {0xfe5c,0xe290}, {0xfe5d,0xe291}, {0xfe5e,0xe292}, {0xfe5f,0xe293},
+ {0xfe60,0xe294}, {0xfe61,0xe295}, {0xfe62,0xe296}, {0xfe63,0xe297},
+ {0xfe64,0xe298}, {0xfe65,0xe299}, {0xfe66,0xe29a}, {0xfe67,0xe29b},
+ {0xfe68,0xe29c}, {0xfe69,0xe29d}, {0xfe6a,0xe29e}, {0xfe6b,0xe29f},
+ {0xfe6c,0xe2a0}, {0xfe6d,0xe2a1}, {0xfe6e,0xe2a2}, {0xfe6f,0xe2a3},
+ {0xfe70,0xe2a4}, {0xfe71,0xe2a5}, {0xfe72,0xe2a6}, {0xfe73,0xe2a7},
+ {0xfe74,0xe2a8}, {0xfe75,0xe2a9}, {0xfe76,0xe2aa}, {0xfe77,0xe2ab},
+ {0xfe78,0xe2ac}, {0xfe79,0xe2ad}, {0xfe7a,0xe2ae}, {0xfe7b,0xe2af},
+ {0xfe7c,0xe2b0}, {0xfe7d,0xe2b1}, {0xfe7e,0xe2b2}, {0xfea1,0xe2b3},
+ {0xfea2,0xe2b4}, {0xfea3,0xe2b5}, {0xfea4,0xe2b6}, {0xfea5,0xe2b7},
+ {0xfea6,0xe2b8}, {0xfea7,0xe2b9}, {0xfea8,0xe2ba}, {0xfea9,0xe2bb},
+ {0xfeaa,0xe2bc}, {0xfeab,0xe2bd}, {0xfeac,0xe2be}, {0xfead,0xe2bf},
+ {0xfeae,0xe2c0}, {0xfeaf,0xe2c1}, {0xfeb0,0xe2c2}, {0xfeb1,0xe2c3},
+ {0xfeb2,0xe2c4}, {0xfeb3,0xe2c5}, {0xfeb4,0xe2c6}, {0xfeb5,0xe2c7},
+ {0xfeb6,0xe2c8}, {0xfeb7,0xe2c9}, {0xfeb8,0xe2ca}, {0xfeb9,0xe2cb},
+ {0xfeba,0xe2cc}, {0xfebb,0xe2cd}, {0xfebc,0xe2ce}, {0xfebd,0xe2cf},
+ {0xfebe,0xe2d0}, {0xfebf,0xe2d1}, {0xfec0,0xe2d2}, {0xfec1,0xe2d3},
+ {0xfec2,0xe2d4}, {0xfec3,0xe2d5}, {0xfec4,0xe2d6}, {0xfec5,0xe2d7},
+ {0xfec6,0xe2d8}, {0xfec7,0xe2d9}, {0xfec8,0xe2da}, {0xfec9,0xe2db},
+ {0xfeca,0xe2dc}, {0xfecb,0xe2dd}, {0xfecc,0xe2de}, {0xfecd,0xe2df},
+ {0xfece,0xe2e0}, {0xfecf,0xe2e1}, {0xfed0,0xe2e2}, {0xfed1,0xe2e3},
+ {0xfed2,0xe2e4}, {0xfed3,0xe2e5}, {0xfed4,0xe2e6}, {0xfed5,0xe2e7},
+ {0xfed6,0xe2e8}, {0xfed7,0xe2e9}, {0xfed8,0xe2ea}, {0xfed9,0xe2eb},
+ {0xfeda,0xe2ec}, {0xfedb,0xe2ed}, {0xfedc,0xe2ee}, {0xfedd,0xe2ef},
+ {0xfede,0xe2f0}, {0xfedf,0xe2f1}, {0xfee0,0xe2f2}, {0xfee1,0xe2f3},
+ {0xfee2,0xe2f4}, {0xfee3,0xe2f5}, {0xfee4,0xe2f6}, {0xfee5,0xe2f7},
+ {0xfee6,0xe2f8}, {0xfee7,0xe2f9}, {0xfee8,0xe2fa}, {0xfee9,0xe2fb},
+ {0xfeea,0xe2fc}, {0xfeeb,0xe2fd}, {0xfeec,0xe2fe}, {0xfeed,0xe2ff},
+ {0xfeee,0xe300}, {0xfeef,0xe301}, {0xfef0,0xe302}, {0xfef1,0xe303},
+ {0xfef2,0xe304}, {0xfef3,0xe305}, {0xfef4,0xe306}, {0xfef5,0xe307},
+ {0xfef6,0xe308}, {0xfef7,0xe309}, {0xfef8,0xe30a}, {0xfef9,0xe30b},
+ {0xfefa,0xe30c}, {0xfefb,0xe30d}, {0xfefc,0xe30e}, {0xfefd,0xe30f},
+ {0xfefe,0xe310}
+};
+
+static const B5Map uc_to_b5_map[] = {
+ {0xa2a4,0x2550}, {0xa2a5,0x255e}, {0xa2a7,0x2561}, {0xa2a6,0x256a},
+ {0xa27e,0x256d}, {0xa2a1,0x256e}, {0xa2a3,0x256f}, {0xa2a2,0x2570}
+};
+
+//All the tables are sorted on both x and y, so can be used for binary search
+static B5Index b5_map_table[5] = {
+ {b5_8140_to_uc_map , sizeof(b5_8140_to_uc_map)/sizeof(B5Map)},
+ {b5_8E40_to_uc_map , sizeof(b5_8E40_to_uc_map)/sizeof(B5Map)},
+ {b5_C6A1_to_uc_map , sizeof(b5_C6A1_to_uc_map)/sizeof(B5Map)},
+ {b5_FA40_to_uc_map , sizeof(b5_FA40_to_uc_map)/sizeof(B5Map)},
+ {uc_to_b5_map , sizeof(uc_to_b5_map)/sizeof(B5Map)}
+};
+
+static int qt_Big5ToUnicode(const uchar *buf, uint *u)
+{
+ //for this conversion only first 4 tables are used.
+ for(int i = 0; i < 4; i++) {
+ int start = 0;
+ int end = b5_map_table[i].tableSize - 1;
+
+ uint b5 = (buf[0] << 8) + buf[1];
+ while (start <= end) {
+ int middle = (end + start + 1)/2;
+ if (b5_map_table[i].table[middle].x == b5) {
+ *u = b5_map_table[i].table[middle].y;
+ return 2;
+ } else if (b5_map_table[i].table[middle].x > b5) {
+ end = middle - 1;
+ } else {
+ start = middle + 1;
+ }
+ }
+ }
+ return qt_Big5hkscsToUnicode(buf, u);
+}
+
+static int qt_UnicodeToBig5(ushort ch, uchar *buf)
+{
+ //all the tables are individually sorted on Y
+ for(int i = 0; i < 5; i++) {
+ int start = 0;
+ int end = b5_map_table[i].tableSize - 1;
+
+ while (start <= end) {
+ int middle = (end + start + 1)/2;
+ if (b5_map_table[i].table[middle].y == ch) {
+ buf[0] = b5_map_table[i].table[middle].x >> 8;
+ buf[1] = b5_map_table[i].table[middle].x & 0xff;
+ return 2;
+ } else if (b5_map_table[i].table[middle].y > ch) {
+ end = middle - 1;
+ } else {
+ start = middle + 1;
+ }
+ }
+ }
+ return qt_UnicodeToBig5hkscs(ch, buf);
+}
+
+QString QBig5Codec::convertToUnicode(const char* chars, int len, ConverterState *state) const
+{
+ QChar replacement = QChar::ReplacementCharacter;
+ uchar buf[2] = {0};
+ int nbuf = 0;
+ if (state) {
+ if (state->flags & ConvertInvalidToNull)
+ replacement = QChar::Null;
+ nbuf = state->remainingChars;
+ buf[0] = state->state_data[0];
+ buf[1] = state->state_data[1];
+ }
+ int invalid = 0;
+
+ //qDebug("QBig5Codec::toUnicode(const char* chars = \"%s\", int len = %d)", chars, len);
+ QString result;
+ for (int i=0; i<len; i++) {
+ uchar ch = chars[i];
+ switch (nbuf) {
+ case 0:
+ if (IsLatin(ch)) {
+ // ASCII
+ result += QLatin1Char(ch);
+ } else if (IsFirstByte(ch)) {
+ // Big5-ETen
+ buf[0] = ch;
+ nbuf = 1;
+ } else {
+ // Invalid
+ result += replacement;
+ ++invalid;
+ }
+ break;
+ case 1:
+ if (IsSecondByte(ch)) {
+ // Big5-ETen
+ uint u;
+ buf[1] = ch;
+ if (qt_Big5ToUnicode(buf, &u) == 2)
+ result += QValidChar(u);
+ else {
+ // Error
+ result += replacement;
+ ++invalid;
+ }
+ } else {
+ // Error
+ result += replacement;
+ ++invalid;
+ }
+ nbuf = 0;
+ break;
+ }
+ }
+ if (state) {
+ state->remainingChars = nbuf;
+ state->state_data[0] = buf[0];
+ state->state_data[1] = buf[1];
+ state->invalidChars += invalid;
+ }
+ return result;
+}
+
+QByteArray QBig5Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
+{
+ char replacement = '?';
+ if (state) {
+ if (state->flags & ConvertInvalidToNull)
+ replacement = 0;
+ }
+
+ int invalid = 0;
+
+ int rlen = 2*len + 1;
+ QByteArray rstr;
+ rstr.resize(rlen);
+
+ uchar* cursor = (uchar*)rstr.data();
+ for (int i=0; i<len; i++) {
+ ushort ch = uc[i].unicode();
+ uchar c[2];
+ if (ch < 0x80) {
+ // ASCII
+ *cursor++ = ch;
+ } else if (qt_UnicodeToBig5(ch, c) == 2 && c[0] >= 0xa1 && c[0] <= 0xf9) {
+ *cursor++ = c[0];
+ *cursor++ = c[1];
+ } else {
+ *cursor++ = replacement;
+ ++invalid;
+ }
+ }
+ rstr.resize(cursor - (uchar*)rstr.constData());
+
+ if (state) {
+ state->invalidChars += invalid;
+ }
+ return rstr;
+}
+
+QList<QByteArray> QBig5Codec::_aliases()
+{
+ QList<QByteArray> aliases;
+ aliases += "Big5-ETen";
+ aliases += "CP950";
+ return aliases;
+}
+
+int QBig5hkscsCodec::_mibEnum()
+{
+ return 2101;
+}
+
+
+QByteArray QBig5hkscsCodec::_name()
+{
+ return "Big5-HKSCS";
+}
+
+
+QString QBig5hkscsCodec::convertToUnicode(const char* chars, int len, ConverterState *state) const
+{
+ uchar buf[2] = {0};
+ int nbuf = 0;
+ QChar replacement = QChar::ReplacementCharacter;
+ if (state) {
+ if (state->flags & ConvertInvalidToNull)
+ replacement = QChar::Null;
+ nbuf = state->remainingChars;
+ buf[0] = state->state_data[0];
+ buf[1] = state->state_data[1];
+ }
+ int invalid = 0;
+
+ //qDebug("QBig5hkscsCodec::toUnicode(const char* chars = \"%s\", int len = %d)", chars, len);
+ QString result;
+ for (int i=0; i<len; i++) {
+ uchar ch = chars[i];
+ switch (nbuf) {
+ case 0:
+ if (IsLatin(ch)) {
+ // ASCII
+ result += QLatin1Char(ch);
+ } else if (IsFirstByte(ch)) {
+ // Big5-HKSCS
+ buf[0] = ch;
+ nbuf = 1;
+ } else {
+ // Invalid
+ result += replacement;
+ ++invalid;
+ }
+ break;
+ case 1:
+ if (IsSecondByte(ch)) {
+ // Big5-HKSCS
+ uint u;
+ buf[1] = ch;
+ if (qt_Big5hkscsToUnicode(buf, &u) == 2)
+ result += QValidChar(u);
+ else {
+ // Error
+ result += replacement;
+ ++invalid;
+ }
+ } else {
+ // Error
+ result += replacement;
+ ++invalid;
+ }
+ nbuf = 0;
+ break;
+ }
+ }
+ if (state) {
+ state->remainingChars = nbuf;
+ state->state_data[0] = buf[0];
+ state->state_data[1] = buf[1];
+ state->invalidChars += invalid;
+ }
+ return result;
+}
+
+
+QByteArray QBig5hkscsCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
+{
+ char replacement = '?';
+ if (state) {
+ if (state->flags & ConvertInvalidToNull)
+ replacement = 0;
+ }
+
+ int invalid = 0;
+
+ int rlen = 2*len + 1;
+ QByteArray rstr;
+ rstr.resize(rlen);
+ uchar* cursor = (uchar*)rstr.data();
+ for (int i = 0; i < len; i++) {
+ unsigned short ch = uc[i].unicode();
+ uchar c[2];
+ if (ch < 0x80) {
+ // ASCII
+ *cursor++ = ch;
+ } else if (qt_UnicodeToBig5hkscs(ch, c) == 2) {
+ // Big5-HKSCS
+ *cursor++ = c[0];
+ *cursor++ = c[1];
+ } else {
+ // Error
+ *cursor++ = replacement;
+ }
+ }
+ rstr.resize(cursor - (uchar*)rstr.constData());
+
+ if (state) {
+ state->invalidChars += invalid;
+ }
+ return rstr;
+}
+
+
+
+#ifdef Q_OS_UNIX
+QFontBig5Codec::QFontBig5Codec()
+{
+ //qDebug("QFontBig5Codec::QFontBig5Codec()");
+}
+
+
+QByteArray QFontBig5Codec::_name()
+{
+ //qDebug("QFontBig5Codec::name() = \"big5-0\"");
+ return "big5-0";
+}
+
+
+int QFontBig5Codec::_mibEnum()
+{
+ //qDebug("QFontBig5Codec::mibEnum() = -2026");
+ return -2026;
+}
+
+
+QString QFontBig5Codec::convertToUnicode(const char* /*chars*/, int /*len*/, ConverterState *) const
+{
+ return QString();
+}
+
+QByteArray QFontBig5Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *) const
+{
+ //qDebug("QFontBig5Codec::fromUnicode(const QString& uc, int& lenInOut = %d)", lenInOut);
+ QByteArray result;
+ result.resize(len * 2);
+ uchar *rdata = (uchar *) result.data();
+ const QChar *ucp = uc;
+
+ for (int i = 0; i < len; i++) {
+ QChar ch(*ucp++);
+ uchar c[2];
+
+#if 0
+ if (ch.row() == 0) {
+ if (ch.cell() == ' ')
+ ch = QChar(0x3000);
+ else if (ch.cell() > ' ' && ch.cell() < 127)
+ ch = QChar(ch.cell()-' ', 255);
+ }
+#endif
+ if (qt_UnicodeToBig5hkscs(ch.unicode(), c) == 2 &&
+ c[0] >= 0xa1 && c[0] <= 0xf9) {
+ *rdata++ = c[0];
+ *rdata++ = c[1];
+ } else {
+ *rdata++ = 0;
+ *rdata++ = 0;
+ }
+ }
+ return result;
+}
+
+
+
+QFontBig5hkscsCodec::QFontBig5hkscsCodec()
+{
+ //qDebug("QFontBig5hkscsCodec::QFontBig5hkscsCodec()");
+}
+
+
+QByteArray QFontBig5hkscsCodec::_name()
+{
+ //qDebug("QFontBig5hkscsCodec::name() = \"big5hkscs-0\"");
+ return "big5hkscs-0";
+}
+
+
+int QFontBig5hkscsCodec::_mibEnum()
+{
+ //qDebug("QFontBig5hkscsCodec::mibEnum() = -2101");
+ return -2101;
+}
+
+
+QString QFontBig5hkscsCodec::convertToUnicode(const char* /*chars*/, int /*len*/, ConverterState *) const
+{
+ return QString();
+}
+
+QByteArray QFontBig5hkscsCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *) const
+{
+ //qDebug("QFontBig5hkscsCodec::fromUnicode(const QString& uc, int& lenInOut = %d)", lenInOut);
+ QByteArray result;
+ result.resize(len * 2);
+ uchar *rdata = (uchar *) result.data();
+ const QChar *ucp = uc;
+
+ for (int i = 0; i < len; i++) {
+ QChar ch(*ucp++);
+ uchar c[2];
+
+#if 0
+ if (ch.row() == 0) {
+ if (ch.cell() == ' ')
+ ch = QChar(0x3000);
+ else if (ch.cell() > ' ' && ch.cell() < 127)
+ ch = QChar(ch.cell()-' ', 255);
+ }
+#endif
+ if (qt_UnicodeToBig5hkscs(ch.unicode(), c) == 2) {
+ *rdata++ = c[0];
+ *rdata++ = c[1];
+ } else {
+ //white square
+ *rdata++ = 0;
+ *rdata++ = 0;
+ }
+ }
+ return result;
+}
+
+
+#endif // Q_OS_UNIX
+
+/* ====================================================================== */
+
+/*
+ * big5hkscs to ucs4 convert routing
+ */
+
+static ushort const big5hkscs_to_ucs[] = {
+ /* Big5-HKSCS 0x8140 .. 0x817E */
+ 0xEEB8, 0xEEB9, 0xEEBA, 0xEEBB, 0xEEBC, 0xEEBD, 0xEEBE, 0xEEBF,
+ 0xEEC0, 0xEEC1, 0xEEC2, 0xEEC3, 0xEEC4, 0xEEC5, 0xEEC6, 0xEEC7,
+ 0xEEC8, 0xEEC9, 0xEECA, 0xEECB, 0xEECC, 0xEECD, 0xEECE, 0xEECF,
+ 0xEED0, 0xEED1, 0xEED2, 0xEED3, 0xEED4, 0xEED5, 0xEED6, 0xEED7,
+ 0xEED8, 0xEED9, 0xEEDA, 0xEEDB, 0xEEDC, 0xEEDD, 0xEEDE, 0xEEDF,
+ 0xEEE0, 0xEEE1, 0xEEE2, 0xEEE3, 0xEEE4, 0xEEE5, 0xEEE6, 0xEEE7,
+ 0xEEE8, 0xEEE9, 0xEEEA, 0xEEEB, 0xEEEC, 0xEEED, 0xEEEE, 0xEEEF,
+ 0xEEF0, 0xEEF1, 0xEEF2, 0xEEF3, 0xEEF4, 0xEEF5, 0xEEF6,
+ /* Big5-HKSCS 0x81A1 .. 0x81FE */
+ 0xEEF7, 0xEEF8, 0xEEF9, 0xEEFA, 0xEEFB, 0xEEFC, 0xEEFD,
+ 0xEEFE, 0xEEFF, 0xEF00, 0xEF01, 0xEF02, 0xEF03, 0xEF04, 0xEF05,
+ 0xEF06, 0xEF07, 0xEF08, 0xEF09, 0xEF0A, 0xEF0B, 0xEF0C, 0xEF0D,
+ 0xEF0E, 0xEF0F, 0xEF10, 0xEF11, 0xEF12, 0xEF13, 0xEF14, 0xEF15,
+ 0xEF16, 0xEF17, 0xEF18, 0xEF19, 0xEF1A, 0xEF1B, 0xEF1C, 0xEF1D,
+ 0xEF1E, 0xEF1F, 0xEF20, 0xEF21, 0xEF22, 0xEF23, 0xEF24, 0xEF25,
+ 0xEF26, 0xEF27, 0xEF28, 0xEF29, 0xEF2A, 0xEF2B, 0xEF2C, 0xEF2D,
+ 0xEF2E, 0xEF2F, 0xEF30, 0xEF31, 0xEF32, 0xEF33, 0xEF34, 0xEF35,
+ 0xEF36, 0xEF37, 0xEF38, 0xEF39, 0xEF3A, 0xEF3B, 0xEF3C, 0xEF3D,
+ 0xEF3E, 0xEF3F, 0xEF40, 0xEF41, 0xEF42, 0xEF43, 0xEF44, 0xEF45,
+ 0xEF46, 0xEF47, 0xEF48, 0xEF49, 0xEF4A, 0xEF4B, 0xEF4C, 0xEF4D,
+ 0xEF4E, 0xEF4F, 0xEF50, 0xEF51, 0xEF52, 0xEF53, 0xEF54,
+ /* Big5-HKSCS 0x8240 .. 0x827E */
+ 0xEF55, 0xEF56, 0xEF57, 0xEF58, 0xEF59, 0xEF5A, 0xEF5B, 0xEF5C,
+ 0xEF5D, 0xEF5E, 0xEF5F, 0xEF60, 0xEF61, 0xEF62, 0xEF63, 0xEF64,
+ 0xEF65, 0xEF66, 0xEF67, 0xEF68, 0xEF69, 0xEF6A, 0xEF6B, 0xEF6C,
+ 0xEF6D, 0xEF6E, 0xEF6F, 0xEF70, 0xEF71, 0xEF72, 0xEF73, 0xEF74,
+ 0xEF75, 0xEF76, 0xEF77, 0xEF78, 0xEF79, 0xEF7A, 0xEF7B, 0xEF7C,
+ 0xEF7D, 0xEF7E, 0xEF7F, 0xEF80, 0xEF81, 0xEF82, 0xEF83, 0xEF84,
+ 0xEF85, 0xEF86, 0xEF87, 0xEF88, 0xEF89, 0xEF8A, 0xEF8B, 0xEF8C,
+ 0xEF8D, 0xEF8E, 0xEF8F, 0xEF90, 0xEF91, 0xEF92, 0xEF93,
+ /* Big5-HKSCS 0x82A1 .. 0x82FE */
+ 0xEF94, 0xEF95, 0xEF96, 0xEF97, 0xEF98, 0xEF99, 0xEF9A,
+ 0xEF9B, 0xEF9C, 0xEF9D, 0xEF9E, 0xEF9F, 0xEFA0, 0xEFA1, 0xEFA2,
+ 0xEFA3, 0xEFA4, 0xEFA5, 0xEFA6, 0xEFA7, 0xEFA8, 0xEFA9, 0xEFAA,
+ 0xEFAB, 0xEFAC, 0xEFAD, 0xEFAE, 0xEFAF, 0xEFB0, 0xEFB1, 0xEFB2,
+ 0xEFB3, 0xEFB4, 0xEFB5, 0xEFB6, 0xEFB7, 0xEFB8, 0xEFB9, 0xEFBA,
+ 0xEFBB, 0xEFBC, 0xEFBD, 0xEFBE, 0xEFBF, 0xEFC0, 0xEFC1, 0xEFC2,
+ 0xEFC3, 0xEFC4, 0xEFC5, 0xEFC6, 0xEFC7, 0xEFC8, 0xEFC9, 0xEFCA,
+ 0xEFCB, 0xEFCC, 0xEFCD, 0xEFCE, 0xEFCF, 0xEFD0, 0xEFD1, 0xEFD2,
+ 0xEFD3, 0xEFD4, 0xEFD5, 0xEFD6, 0xEFD7, 0xEFD8, 0xEFD9, 0xEFDA,
+ 0xEFDB, 0xEFDC, 0xEFDD, 0xEFDE, 0xEFDF, 0xEFE0, 0xEFE1, 0xEFE2,
+ 0xEFE3, 0xEFE4, 0xEFE5, 0xEFE6, 0xEFE7, 0xEFE8, 0xEFE9, 0xEFEA,
+ 0xEFEB, 0xEFEC, 0xEFED, 0xEFEE, 0xEFEF, 0xEFF0, 0xEFF1,
+ /* Big5-HKSCS 0x8340 .. 0x837E */
+ 0xEFF2, 0xEFF3, 0xEFF4, 0xEFF5, 0xEFF6, 0xEFF7, 0xEFF8, 0xEFF9,
+ 0xEFFA, 0xEFFB, 0xEFFC, 0xEFFD, 0xEFFE, 0xEFFF, 0xF000, 0xF001,
+ 0xF002, 0xF003, 0xF004, 0xF005, 0xF006, 0xF007, 0xF008, 0xF009,
+ 0xF00A, 0xF00B, 0xF00C, 0xF00D, 0xF00E, 0xF00F, 0xF010, 0xF011,
+ 0xF012, 0xF013, 0xF014, 0xF015, 0xF016, 0xF017, 0xF018, 0xF019,
+ 0xF01A, 0xF01B, 0xF01C, 0xF01D, 0xF01E, 0xF01F, 0xF020, 0xF021,
+ 0xF022, 0xF023, 0xF024, 0xF025, 0xF026, 0xF027, 0xF028, 0xF029,
+ 0xF02A, 0xF02B, 0xF02C, 0xF02D, 0xF02E, 0xF02F, 0xF030,
+ /* Big5-HKSCS 0x83A1 .. 0x83FE */
+ 0xF031, 0xF032, 0xF033, 0xF034, 0xF035, 0xF036, 0xF037,
+ 0xF038, 0xF039, 0xF03A, 0xF03B, 0xF03C, 0xF03D, 0xF03E, 0xF03F,
+ 0xF040, 0xF041, 0xF042, 0xF043, 0xF044, 0xF045, 0xF046, 0xF047,
+ 0xF048, 0xF049, 0xF04A, 0xF04B, 0xF04C, 0xF04D, 0xF04E, 0xF04F,
+ 0xF050, 0xF051, 0xF052, 0xF053, 0xF054, 0xF055, 0xF056, 0xF057,
+ 0xF058, 0xF059, 0xF05A, 0xF05B, 0xF05C, 0xF05D, 0xF05E, 0xF05F,
+ 0xF060, 0xF061, 0xF062, 0xF063, 0xF064, 0xF065, 0xF066, 0xF067,
+ 0xF068, 0xF069, 0xF06A, 0xF06B, 0xF06C, 0xF06D, 0xF06E, 0xF06F,
+ 0xF070, 0xF071, 0xF072, 0xF073, 0xF074, 0xF075, 0xF076, 0xF077,
+ 0xF078, 0xF079, 0xF07A, 0xF07B, 0xF07C, 0xF07D, 0xF07E, 0xF07F,
+ 0xF080, 0xF081, 0xF082, 0xF083, 0xF084, 0xF085, 0xF086, 0xF087,
+ 0xF088, 0xF089, 0xF08A, 0xF08B, 0xF08C, 0xF08D, 0xF08E,
+ /* Big5-HKSCS 0x8440 .. 0x847E */
+ 0xF08F, 0xF090, 0xF091, 0xF092, 0xF093, 0xF094, 0xF095, 0xF096,
+ 0xF097, 0xF098, 0xF099, 0xF09A, 0xF09B, 0xF09C, 0xF09D, 0xF09E,
+ 0xF09F, 0xF0A0, 0xF0A1, 0xF0A2, 0xF0A3, 0xF0A4, 0xF0A5, 0xF0A6,
+ 0xF0A7, 0xF0A8, 0xF0A9, 0xF0AA, 0xF0AB, 0xF0AC, 0xF0AD, 0xF0AE,
+ 0xF0AF, 0xF0B0, 0xF0B1, 0xF0B2, 0xF0B3, 0xF0B4, 0xF0B5, 0xF0B6,
+ 0xF0B7, 0xF0B8, 0xF0B9, 0xF0BA, 0xF0BB, 0xF0BC, 0xF0BD, 0xF0BE,
+ 0xF0BF, 0xF0C0, 0xF0C1, 0xF0C2, 0xF0C3, 0xF0C4, 0xF0C5, 0xF0C6,
+ 0xF0C7, 0xF0C8, 0xF0C9, 0xF0CA, 0xF0CB, 0xF0CC, 0xF0CD,
+ /* Big5-HKSCS 0x84A1 .. 0x84FE */
+ 0xF0CE, 0xF0CF, 0xF0D0, 0xF0D1, 0xF0D2, 0xF0D3, 0xF0D4,
+ 0xF0D5, 0xF0D6, 0xF0D7, 0xF0D8, 0xF0D9, 0xF0DA, 0xF0DB, 0xF0DC,
+ 0xF0DD, 0xF0DE, 0xF0DF, 0xF0E0, 0xF0E1, 0xF0E2, 0xF0E3, 0xF0E4,
+ 0xF0E5, 0xF0E6, 0xF0E7, 0xF0E8, 0xF0E9, 0xF0EA, 0xF0EB, 0xF0EC,
+ 0xF0ED, 0xF0EE, 0xF0EF, 0xF0F0, 0xF0F1, 0xF0F2, 0xF0F3, 0xF0F4,
+ 0xF0F5, 0xF0F6, 0xF0F7, 0xF0F8, 0xF0F9, 0xF0FA, 0xF0FB, 0xF0FC,
+ 0xF0FD, 0xF0FE, 0xF0FF, 0xF100, 0xF101, 0xF102, 0xF103, 0xF104,
+ 0xF105, 0xF106, 0xF107, 0xF108, 0xF109, 0xF10A, 0xF10B, 0xF10C,
+ 0xF10D, 0xF10E, 0xF10F, 0xF110, 0xF111, 0xF112, 0xF113, 0xF114,
+ 0xF115, 0xF116, 0xF117, 0xF118, 0xF119, 0xF11A, 0xF11B, 0xF11C,
+ 0xF11D, 0xF11E, 0xF11F, 0xF120, 0xF121, 0xF122, 0xF123, 0xF124,
+ 0xF125, 0xF126, 0xF127, 0xF128, 0xF129, 0xF12A, 0xF12B,
+ /* Big5-HKSCS 0x8540 .. 0x857E */
+ 0xF12C, 0xF12D, 0xF12E, 0xF12F, 0xF130, 0xF131, 0xF132, 0xF133,
+ 0xF134, 0xF135, 0xF136, 0xF137, 0xF138, 0xF139, 0xF13A, 0xF13B,
+ 0xF13C, 0xF13D, 0xF13E, 0xF13F, 0xF140, 0xF141, 0xF142, 0xF143,
+ 0xF144, 0xF145, 0xF146, 0xF147, 0xF148, 0xF149, 0xF14A, 0xF14B,
+ 0xF14C, 0xF14D, 0xF14E, 0xF14F, 0xF150, 0xF151, 0xF152, 0xF153,
+ 0xF154, 0xF155, 0xF156, 0xF157, 0xF158, 0xF159, 0xF15A, 0xF15B,
+ 0xF15C, 0xF15D, 0xF15E, 0xF15F, 0xF160, 0xF161, 0xF162, 0xF163,
+ 0xF164, 0xF165, 0xF166, 0xF167, 0xF168, 0xF169, 0xF16A,
+ /* Big5-HKSCS 0x85A1 .. 0x85FE */
+ 0xF16B, 0xF16C, 0xF16D, 0xF16E, 0xF16F, 0xF170, 0xF171,
+ 0xF172, 0xF173, 0xF174, 0xF175, 0xF176, 0xF177, 0xF178, 0xF179,
+ 0xF17A, 0xF17B, 0xF17C, 0xF17D, 0xF17E, 0xF17F, 0xF180, 0xF181,
+ 0xF182, 0xF183, 0xF184, 0xF185, 0xF186, 0xF187, 0xF188, 0xF189,
+ 0xF18A, 0xF18B, 0xF18C, 0xF18D, 0xF18E, 0xF18F, 0xF190, 0xF191,
+ 0xF192, 0xF193, 0xF194, 0xF195, 0xF196, 0xF197, 0xF198, 0xF199,
+ 0xF19A, 0xF19B, 0xF19C, 0xF19D, 0xF19E, 0xF19F, 0xF1A0, 0xF1A1,
+ 0xF1A2, 0xF1A3, 0xF1A4, 0xF1A5, 0xF1A6, 0xF1A7, 0xF1A8, 0xF1A9,
+ 0xF1AA, 0xF1AB, 0xF1AC, 0xF1AD, 0xF1AE, 0xF1AF, 0xF1B0, 0xF1B1,
+ 0xF1B2, 0xF1B3, 0xF1B4, 0xF1B5, 0xF1B6, 0xF1B7, 0xF1B8, 0xF1B9,
+ 0xF1BA, 0xF1BB, 0xF1BC, 0xF1BD, 0xF1BE, 0xF1BF, 0xF1C0, 0xF1C1,
+ 0xF1C2, 0xF1C3, 0xF1C4, 0xF1C5, 0xF1C6, 0xF1C7, 0xF1C8,
+ /* Big5-HKSCS 0x8640 .. 0x867E */
+ 0xF1C9, 0xF1CA, 0xF1CB, 0xF1CC, 0xF1CD, 0xF1CE, 0xF1CF, 0xF1D0,
+ 0xF1D1, 0xF1D2, 0xF1D3, 0xF1D4, 0xF1D5, 0xF1D6, 0xF1D7, 0xF1D8,
+ 0xF1D9, 0xF1DA, 0xF1DB, 0xF1DC, 0xF1DD, 0xF1DE, 0xF1DF, 0xF1E0,
+ 0xF1E1, 0xF1E2, 0xF1E3, 0xF1E4, 0xF1E5, 0xF1E6, 0xF1E7, 0xF1E8,
+ 0xF1E9, 0xF1EA, 0xF1EB, 0xF1EC, 0xF1ED, 0xF1EE, 0xF1EF, 0xF1F0,
+ 0xF1F1, 0xF1F2, 0xF1F3, 0xF1F4, 0xF1F5, 0xF1F6, 0xF1F7, 0xF1F8,
+ 0xF1F9, 0xF1FA, 0xF1FB, 0xF1FC, 0xF1FD, 0xF1FE, 0xF1FF, 0xF200,
+ 0xF201, 0xF202, 0xF203, 0xF204, 0xF205, 0xF206, 0xF207,
+ /* Big5-HKSCS 0x86A1 .. 0x86FE */
+ 0xF208, 0xF209, 0xF20A, 0xF20B, 0xF20C, 0xF20D, 0xF20E,
+ 0xF20F, 0xF210, 0xF211, 0xF212, 0xF213, 0xF214, 0xF215, 0xF216,
+ 0xF217, 0xF218, 0xF219, 0xF21A, 0xF21B, 0xF21C, 0xF21D, 0xF21E,
+ 0xF21F, 0xF220, 0xF221, 0xF222, 0xF223, 0xF224, 0xF225, 0xF226,
+ 0xF227, 0xF228, 0xF229, 0xF22A, 0xF22B, 0xF22C, 0xF22D, 0xF22E,
+ 0xF22F, 0xF230, 0xF231, 0xF232, 0xF233, 0xF234, 0xF235, 0xF236,
+ 0xF237, 0xF238, 0xF239, 0xF23A, 0xF23B, 0xF23C, 0xF23D, 0xF23E,
+ 0xF23F, 0xF240, 0xF241, 0xF242, 0xF243, 0xF244, 0xF245, 0xF246,
+ 0xF247, 0xF248, 0xF249, 0xF24A, 0xF24B, 0xF24C, 0xF24D, 0xF24E,
+ 0xF24F, 0xF250, 0xF251, 0xF252, 0xF253, 0xF254, 0xF255, 0xF256,
+ 0xF257, 0xF258, 0xF259, 0xF25A, 0xF25B, 0xF25C, 0xF25D, 0xF25E,
+ 0xF25F, 0xF260, 0xF261, 0xF262, 0xF263, 0xF264, 0xF265,
+ /* Big5-HKSCS 0x8740 .. 0x877E */
+ 0xF266, 0xF267, 0xF268, 0xF269, 0xF26A, 0xF26B, 0xF26C, 0xF26D,
+ 0xF26E, 0xF26F, 0xF270, 0xF271, 0xF272, 0xF273, 0xF274, 0xF275,
+ 0xF276, 0xF277, 0xF278, 0xF279, 0xF27A, 0xF27B, 0xF27C, 0xF27D,
+ 0xF27E, 0xF27F, 0xF280, 0xF281, 0xF282, 0xF283, 0xF284, 0xF285,
+ 0xF286, 0xF287, 0xF288, 0xF289, 0xF28A, 0xF28B, 0xF28C, 0xF28D,
+ 0xF28E, 0xF28F, 0xF290, 0xF291, 0xF292, 0xF293, 0xF294, 0xF295,
+ 0xF296, 0xF297, 0xF298, 0xF299, 0xF29A, 0xF29B, 0xF29C, 0xF29D,
+ 0xF29E, 0xF29F, 0xF2A0, 0xF2A1, 0xF2A2, 0xF2A3, 0xF2A4,
+ /* Big5-HKSCS 0x87A1 .. 0x87FE */
+ 0xF2A5, 0xF2A6, 0xF2A7, 0xF2A8, 0xF2A9, 0xF2AA, 0xF2AB,
+ 0xF2AC, 0xF2AD, 0xF2AE, 0xF2AF, 0xF2B0, 0xF2B1, 0xF2B2, 0xF2B3,
+ 0xF2B4, 0xF2B5, 0xF2B6, 0xF2B7, 0xF2B8, 0xF2B9, 0xF2BA, 0xF2BB,
+ 0xF2BC, 0xF2BD, 0xF2BE, 0xF2BF, 0xF2C0, 0xF2C1, 0xF2C2, 0xF2C3,
+ 0xF2C4, 0xF2C5, 0xF2C6, 0xF2C7, 0xF2C8, 0xF2C9, 0xF2CA, 0xF2CB,
+ 0xF2CC, 0xF2CD, 0xF2CE, 0xF2CF, 0xF2D0, 0xF2D1, 0xF2D2, 0xF2D3,
+ 0xF2D4, 0xF2D5, 0xF2D6, 0xF2D7, 0xF2D8, 0xF2D9, 0xF2DA, 0xF2DB,
+ 0xF2DC, 0xF2DD, 0xF2DE, 0xF2DF, 0xF2E0, 0xF2E1, 0xF2E2, 0xF2E3,
+ 0xF2E4, 0xF2E5, 0xF2E6, 0xF2E7, 0xF2E8, 0xF2E9, 0xF2EA, 0xF2EB,
+ 0xF2EC, 0xF2ED, 0xF2EE, 0xF2EF, 0xF2F0, 0xF2F1, 0xF2F2, 0xF2F3,
+ 0xF2F4, 0xF2F5, 0xF2F6, 0xF2F7, 0xF2F8, 0xF2F9, 0xF2FA, 0xF2FB,
+ 0xF2FC, 0xF2FD, 0xF2FE, 0xF2FF, 0xF300, 0xF301, 0xF302,
+ /* Big5-HKSCS 0x8840 .. 0x887E */
+ 0xF303, 0xF304, 0xF305, 0xF306, 0xF307, 0xF308, 0xF309, 0xF30A,
+ 0xF30B, 0xF30C, 0xF30D, 0xF30E, 0xF30F, 0xF310, 0xF311, 0xF312,
+ 0xF313, 0xF314, 0xF315, 0xF316, 0xF317, 0xF318, 0x0100, 0x00C1,
+ 0x01CD, 0x00C0, 0x0112, 0x00C9, 0x011A, 0x00C8, 0x014C, 0x00D3,
+ 0x01D1, 0x00D2, 0xF325, 0x1EBE, 0xF327, 0x1EC0, 0x00CA, 0x0101,
+ 0x00E1, 0x01CE, 0x00E0, 0x0251, 0x0113, 0x00E9, 0x011B, 0x00E8,
+ 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 0x00F2,
+ 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA,
+ /* Big5-HKSCS 0x88A1 .. 0x88FE */
+ 0x01DC, 0x00FC, 0xF344, 0x1EBF, 0xF346, 0x1EC1, 0x00EA,
+ 0x0261, 0xF34A, 0xF34B, 0xF34C, 0xF34D, 0xF34E, 0xF34F, 0xF350,
+ 0xF351, 0xF352, 0xF353, 0xF354, 0xF355, 0xF356, 0xF357, 0xF358,
+ 0xF359, 0xF35A, 0xF35B, 0xF35C, 0xF35D, 0xF35E, 0xF35F, 0xF360,
+ 0xF361, 0xF362, 0xF363, 0xF364, 0xF365, 0xF366, 0xF367, 0xF368,
+ 0xF369, 0xF36A, 0xF36B, 0xF36C, 0xF36D, 0xF36E, 0xF36F, 0xF370,
+ 0xF371, 0xF372, 0xF373, 0xF374, 0xF375, 0xF376, 0xF377, 0xF378,
+ 0xF379, 0xF37A, 0xF37B, 0xF37C, 0xF37D, 0xF37E, 0xF37F, 0xF380,
+ 0xF381, 0xF382, 0xF383, 0xF384, 0xF385, 0xF386, 0xF387, 0xF388,
+ 0xF389, 0xF38A, 0xF38B, 0xF38C, 0xF38D, 0xF38E, 0xF38F, 0xF390,
+ 0xF391, 0xF392, 0xF393, 0xF394, 0xF395, 0xF396, 0xF397, 0xF398,
+ 0xF399, 0xF39A, 0xF39B, 0xF39C, 0xF39D, 0xF39E, 0xF39F,
+ /* Big5-HKSCS 0x8940 .. 0x897E */
+ 0xF3A0, 0xF3A1, 0xF3A2, 0x650A, 0xF3A4, 0xF3A5, 0x4E3D, 0x6EDD,
+ 0x9D4E, 0x91DF, 0xF3AA, 0xF3AB, 0xF3AC, 0x6491, 0x4F1A, 0x4F28,
+ 0x4FA8, 0x5156, 0x5174, 0x519C, 0x51E4, 0x52A1, 0x52A8, 0x533B,
+ 0x534E, 0x53D1, 0x53D8, 0x56E2, 0x58F0, 0x5904, 0x5907, 0x5932,
+ 0x5934, 0x5B66, 0x5B9E, 0x5B9F, 0x5C9A, 0x5E86, 0x603B, 0x6589,
+ 0x67FE, 0x6804, 0x6865, 0x6D4E, 0x70BC, 0x7535, 0x7EA4, 0x7EAC,
+ 0x7EBA, 0x7EC7, 0x7ECF, 0x7EDF, 0x7F06, 0x7F37, 0x827A, 0x82CF,
+ 0x836F, 0x89C6, 0x8BBE, 0x8BE2, 0x8F66, 0x8F67, 0x8F6E,
+ /* Big5-HKSCS 0x89A1 .. 0x89FE */
+ 0x7411, 0x7CFC, 0x7DCD, 0x6946, 0x7AC9, 0x5227, 0xF3E5,
+ 0xF3E6, 0xF3E7, 0xF3E8, 0x918C, 0x78B8, 0x915E, 0x80BC, 0xF3ED,
+ 0x8D0B, 0x80F6, 0xF3F0, 0xF3F1, 0xF3F2, 0x809F, 0x9EC7, 0x4CCD,
+ 0x9DC9, 0x9E0C, 0x4C3E, 0xF3F9, 0xF3FA, 0x9E0A, 0xF3FC, 0x35C1,
+ 0xF3FE, 0x6E9A, 0x823E, 0x7519, 0xF402, 0x4911, 0x9A6C, 0x9A8F,
+ 0x9F99, 0x7987, 0xF408, 0xF409, 0xF40A, 0xF40B, 0x4E24, 0x4E81,
+ 0x4E80, 0x4E87, 0x4EBF, 0x4EEB, 0x4F37, 0x344C, 0x4FBD, 0x3E48,
+ 0x5003, 0x5088, 0x347D, 0x3493, 0x34A5, 0x5186, 0x5905, 0x51DB,
+ 0x51FC, 0x5205, 0x4E89, 0x5279, 0x5290, 0x5327, 0x35C7, 0x53A9,
+ 0x3551, 0x53B0, 0x3553, 0x53C2, 0x5423, 0x356D, 0x3572, 0x3681,
+ 0x5493, 0x54A3, 0x54B4, 0x54B9, 0x54D0, 0x54EF, 0x5518, 0x5523,
+ 0x5528, 0x3598, 0x553F, 0x35A5, 0x35BF, 0x55D7, 0x35C5,
+ /* Big5-HKSCS 0x8A40 .. 0x8A7E */
+ 0xF43D, 0x5525, 0xF43F, 0xF440, 0xF441, 0xF442, 0x5590, 0xF444,
+ 0x39EC, 0xF446, 0x8E46, 0xF448, 0xF449, 0x4053, 0xF44B, 0x777A,
+ 0xF44D, 0x3A34, 0x47D5, 0xF450, 0xF451, 0xF452, 0x64DD, 0xF454,
+ 0xF455, 0xF456, 0xF457, 0x648D, 0x8E7E, 0xF45A, 0xF45B, 0xF45C,
+ 0xF45D, 0xF45E, 0xF45F, 0xF460, 0xF461, 0xF462, 0xF463, 0x47F4,
+ 0xF465, 0xF466, 0x9AB2, 0x3A67, 0xF469, 0x3FED, 0x3506, 0xF46C,
+ 0xF46D, 0xF46E, 0xF46F, 0x9D6E, 0x9815, 0xF472, 0x43D9, 0xF474,
+ 0x64B4, 0x54E3, 0xF477, 0xF478, 0xF479, 0x39FB, 0xF47B,
+ /* Big5-HKSCS 0x8AA1 .. 0x8AFE */
+ 0xF47C, 0xF47D, 0xF47E, 0x64EA, 0xF480, 0xF481, 0x8E68,
+ 0xF483, 0xF484, 0xF485, 0xF486, 0x480B, 0xF488, 0x3FFA, 0x5873,
+ 0xF48B, 0xF48C, 0xF48D, 0xF48E, 0xF48F, 0xF490, 0xF491, 0x5579,
+ 0x40BB, 0x43BA, 0xF495, 0x4AB4, 0xF497, 0xF498, 0x81AA, 0x98F5,
+ 0xF49B, 0x6379, 0x39FE, 0xF49E, 0x8DC0, 0x56A1, 0x647C, 0x3E43,
+ 0xF4A3, 0xF4A4, 0xF4A5, 0xF4A6, 0xF4A7, 0xF4A8, 0xF4A9, 0xF4AA,
+ 0x3992, 0x3A06, 0xF4AD, 0x3578, 0xF4AF, 0xF4B0, 0x5652, 0xF4B2,
+ 0xF4B3, 0xF4B4, 0x34BC, 0x6C3D, 0xF4B7, 0xF4B8, 0xF4B9, 0xF4BA,
+ 0xF4BB, 0xF4BC, 0xF4BD, 0xF4BE, 0xF4BF, 0xF4C0, 0xF4C1, 0x7F93,
+ 0xF4C3, 0xF4C4, 0xF4C5, 0x35FB, 0xF4C7, 0xF4C8, 0xF4C9, 0xF4CA,
+ 0x3F93, 0xF4CC, 0xF4CD, 0xF4CE, 0xF4CF, 0xF4D0, 0xF4D1, 0xF4D2,
+ 0xF4D3, 0xF4D4, 0xF4D5, 0x3FF9, 0xF4D7, 0x6432, 0xF4D9,
+ /* Big5-HKSCS 0x8B40 .. 0x8B7E */
+ 0xF4DA, 0xF4DB, 0xF4DC, 0xF4DD, 0xF4DE, 0xF4DF, 0xF4E0, 0x3A18,
+ 0xF4E2, 0xF4E3, 0xF4E4, 0xF4E5, 0xF4E6, 0xF4E7, 0xF4E8, 0xF4E9,
+ 0x95AA, 0x54CC, 0x82C4, 0x55B9, 0xF4EE, 0xF4EF, 0x9C26, 0x9AB6,
+ 0xF4F2, 0xF4F3, 0x7140, 0x816D, 0x80EC, 0x5C1C, 0xF4F8, 0x8134,
+ 0x3797, 0x535F, 0xF4FC, 0x91B6, 0xF4FE, 0xF4FF, 0xF500, 0xF501,
+ 0x35DD, 0xF503, 0x3609, 0xF505, 0x56AF, 0xF507, 0xF508, 0xF509,
+ 0xF50A, 0xF50B, 0xF50C, 0xF50D, 0xF50E, 0xF50F, 0xF510, 0xF511,
+ 0x5A54, 0xF513, 0xF514, 0xF515, 0xF516, 0x579C, 0xF518,
+ /* Big5-HKSCS 0x8BA1 .. 0x8BFE */
+ 0xF519, 0xF51A, 0xF51B, 0xF51C, 0xF51D, 0x3703, 0xF51F,
+ 0xF520, 0xF521, 0xF522, 0xF523, 0xF524, 0xF525, 0xF526, 0x5899,
+ 0x5268, 0x361A, 0xF52A, 0x7BB2, 0x5B68, 0x4800, 0x4B2C, 0x9F27,
+ 0x49E7, 0x9C1F, 0x9B8D, 0xF533, 0xF534, 0x55FB, 0x35F2, 0x5689,
+ 0x4E28, 0x5902, 0xF53A, 0xF53B, 0x9751, 0xF53D, 0x4E5B, 0x4EBB,
+ 0x353E, 0x5C23, 0x5F51, 0x5FC4, 0x38FA, 0x624C, 0x6535, 0x6B7A,
+ 0x6C35, 0x6C3A, 0x706C, 0x722B, 0x4E2C, 0x72AD, 0xF54E, 0x7F52,
+ 0x793B, 0x7CF9, 0x7F53, 0xF553, 0x34C1, 0xF555, 0xF556, 0x8002,
+ 0x8080, 0xF559, 0xF55A, 0x535D, 0x8864, 0x89C1, 0xF55E, 0x8BA0,
+ 0x8D1D, 0x9485, 0x9578, 0x957F, 0x95E8, 0xF565, 0x97E6, 0x9875,
+ 0x98CE, 0x98DE, 0x9963, 0xF56B, 0x9C7C, 0x9E1F, 0x9EC4, 0x6B6F,
+ 0xF907, 0x4E37, 0xF572, 0x961D, 0x6237, 0x94A2, 0xF576,
+ /* Big5-HKSCS 0x8C40 .. 0x8C7E */
+ 0x503B, 0x6DFE, 0xF579, 0xF57A, 0x3DC9, 0x888F, 0xF57D, 0x7077,
+ 0x5CF5, 0x4B20, 0xF581, 0x3559, 0xF583, 0x6122, 0xF585, 0x8FA7,
+ 0x91F6, 0x7191, 0x6719, 0x73BA, 0xF58B, 0xF58C, 0x3C8B, 0xF58E,
+ 0x4B10, 0x78E4, 0x7402, 0x51AE, 0xF593, 0x4009, 0x6A63, 0xF596,
+ 0x4223, 0x860F, 0xF599, 0x7A2A, 0xF59B, 0xF59C, 0x9755, 0x704D,
+ 0x5324, 0xF5A0, 0x93F4, 0x76D9, 0xF5A3, 0xF5A4, 0x77DD, 0x4EA3,
+ 0x4FF0, 0x50BC, 0x4E2F, 0x4F17, 0xF5AB, 0x5434, 0x7D8B, 0x5892,
+ 0x58D0, 0xF5B0, 0x5E92, 0x5E99, 0x5FC2, 0xF5B4, 0x658B,
+ /* Big5-HKSCS 0x8CA1 .. 0x8CFE */
+ 0xF5B6, 0x6919, 0x6A43, 0xF5B9, 0x6CFF, 0xF5BB, 0x7200,
+ 0xF5BD, 0x738C, 0x3EDB, 0xF5C0, 0x5B15, 0x74B9, 0x8B83, 0xF5C4,
+ 0xF5C5, 0x7A93, 0x7BEC, 0x7CC3, 0x7E6C, 0x82F8, 0x8597, 0xF5CC,
+ 0x8890, 0xF5CE, 0x8EB9, 0xF5D0, 0x8FCF, 0x855F, 0x99E0, 0x9221,
+ 0xF5D5, 0xF5D6, 0xF5D7, 0x4071, 0x42A2, 0x5A1A, 0xF5DB, 0xF5DC,
+ 0xF5DD, 0x9868, 0x676B, 0x4276, 0x573D, 0xF5E2, 0x85D6, 0xF5E4,
+ 0x82BF, 0xF5E6, 0x4C81, 0xF5E8, 0x5D7B, 0xF5EA, 0xF5EB, 0xF5EC,
+ 0xF5ED, 0x5B96, 0xF5EF, 0xF5F0, 0x7E5B, 0xF5F2, 0xF5F3, 0xF5F4,
+ 0xF5F5, 0xF5F6, 0xF5F7, 0xF5F8, 0xF5F9, 0xF5FA, 0xF5FB, 0xF5FC,
+ 0xF5FD, 0xF5FE, 0xF5FF, 0xF600, 0xF601, 0xF602, 0xF603, 0xF604,
+ 0xF605, 0xF606, 0xF607, 0xF608, 0xF609, 0xF60A, 0xF60B, 0xF60C,
+ 0xF60D, 0xF60E, 0xF60F, 0xF610, 0xF611, 0xF612, 0xF613,
+ /* Big5-HKSCS 0x8D40 .. 0x8D7E */
+ 0xF614, 0xF615, 0xF616, 0xF617, 0xF618, 0xF619, 0xF61A, 0xF61B,
+ 0xF61C, 0xF61D, 0xF61E, 0xF61F, 0xF620, 0xF621, 0xF622, 0xF623,
+ 0xF624, 0xF625, 0xF626, 0xF627, 0xF628, 0xF629, 0xF62A, 0xF62B,
+ 0xF62C, 0xF62D, 0xF62E, 0xF62F, 0xF630, 0xF631, 0xF632, 0xF633,
+ 0x5D3E, 0x5D48, 0x5D56, 0x3DFC, 0x380F, 0x5DA4, 0x5DB9, 0x3820,
+ 0x3838, 0x5E42, 0x5EBD, 0x5F25, 0x5F83, 0x3908, 0x3914, 0x393F,
+ 0x394D, 0x60D7, 0x613D, 0x5CE5, 0x3989, 0x61B7, 0x61B9, 0x61CF,
+ 0x39B8, 0x622C, 0x6290, 0x62E5, 0x6318, 0x39F8, 0x56B1,
+ /* Big5-HKSCS 0x8DA1 .. 0x8DFE */
+ 0x3A03, 0x63E2, 0x63FB, 0x6407, 0x645A, 0x3A4B, 0x64C0,
+ 0x5D15, 0x5621, 0x9F9F, 0x3A97, 0x6586, 0x3ABD, 0x65FF, 0x6653,
+ 0x3AF2, 0x6692, 0x3B22, 0x6716, 0x3B42, 0x67A4, 0x6800, 0x3B58,
+ 0x684A, 0x6884, 0x3B72, 0x3B71, 0x3B7B, 0x6909, 0x6943, 0x725C,
+ 0x6964, 0x699F, 0x6985, 0x3BBC, 0x69D6, 0x3BDD, 0x6A65, 0x6A74,
+ 0x6A71, 0x6A82, 0x3BEC, 0x6A99, 0x3BF2, 0x6AAB, 0x6AB5, 0x6AD4,
+ 0x6AF6, 0x6B81, 0x6BC1, 0x6BEA, 0x6C75, 0x6CAA, 0x3CCB, 0x6D02,
+ 0x6D06, 0x6D26, 0x6D81, 0x3CEF, 0x6DA4, 0x6DB1, 0x6E15, 0x6E18,
+ 0x6E29, 0x6E86, 0xF694, 0x6EBB, 0x6EE2, 0x6EDA, 0x9F7F, 0x6EE8,
+ 0x6EE9, 0x6F24, 0x6F34, 0x3D46, 0xF69E, 0x6F81, 0x6FBE, 0x3D6A,
+ 0x3D75, 0x71B7, 0x5C99, 0x3D8A, 0x702C, 0x3D91, 0x7050, 0x7054,
+ 0x706F, 0x707F, 0x7089, 0xF6AD, 0x43C1, 0x35F1, 0xF6B0,
+ /* Big5-HKSCS 0x8E40 .. 0x8E7E */
+ 0xE311, 0x57BE, 0xE313, 0x713E, 0xE315, 0x364E, 0x69A2, 0xE318,
+ 0x5B74, 0x7A49, 0xE31B, 0xE31C, 0x7A65, 0x7A7D, 0xE31F, 0x7ABB,
+ 0x7AB0, 0x7AC2, 0x7AC3, 0x71D1, 0xE325, 0x41CA, 0x7ADA, 0x7ADD,
+ 0x7AEA, 0x41EF, 0x54B2, 0xE32C, 0x7B0B, 0x7B55, 0x7B29, 0xE330,
+ 0xE331, 0x7BA2, 0x7B6F, 0x839C, 0xE335, 0xE336, 0x7BD0, 0x8421,
+ 0x7B92, 0x7BB8, 0xE33B, 0x3DAD, 0xE33D, 0x8492, 0x7BFA, 0x7C06,
+ 0x7C35, 0xE342, 0x7C44, 0x7C83, 0xE345, 0x7CA6, 0x667D, 0xE348,
+ 0x7CC9, 0x7CC7, 0x7CE6, 0x7C74, 0x7CF3, 0x7CF5, 0x7CCE,
+ /* Big5-HKSCS 0x8EA1 .. 0x8EFE */
+ 0x7E67, 0x451D, 0xE352, 0x7D5D, 0xE354, 0x748D, 0x7D89,
+ 0x7DAB, 0x7135, 0x7DB3, 0x7DD2, 0xE35B, 0xE35C, 0x7DE4, 0x3D13,
+ 0x7DF5, 0xE360, 0x7DE5, 0xE362, 0x7E1D, 0xE364, 0xE365, 0x7E6E,
+ 0x7E92, 0x432B, 0x946C, 0x7E27, 0x7F40, 0x7F41, 0x7F47, 0x7936,
+ 0xE36F, 0x99E1, 0x7F97, 0xE372, 0x7FA3, 0xE374, 0xE375, 0x455C,
+ 0xE377, 0x4503, 0xE379, 0x7FFA, 0xE37B, 0x8005, 0x8008, 0x801D,
+ 0x8028, 0x802F, 0xE381, 0xE382, 0x803B, 0x803C, 0x8061, 0xE386,
+ 0x4989, 0xE388, 0xE389, 0xE38A, 0x6725, 0x80A7, 0xE38D, 0x8107,
+ 0x811A, 0x58B0, 0xE391, 0x6C7F, 0xE393, 0xE394, 0x64E7, 0xE396,
+ 0x8218, 0xE398, 0x6A53, 0xE39A, 0xE39B, 0x447A, 0x8229, 0xE39E,
+ 0xE39F, 0xE3A0, 0x4FF9, 0xE3A2, 0x84E2, 0x8362, 0xE3A5, 0xE3A6,
+ 0xE3A7, 0xE3A8, 0xE3A9, 0x82AA, 0x691B, 0xE3AC, 0x41DB,
+ /* Big5-HKSCS 0x8F40 .. 0x8F7E */
+ 0x854B, 0x82D0, 0x831A, 0xE3B1, 0xE3B2, 0x36C1, 0xE3B4, 0xE3B5,
+ 0x827B, 0x82E2, 0x8318, 0xE3B9, 0xE3BA, 0xE3BB, 0xE3BC, 0xE3BD,
+ 0x3DBF, 0x831D, 0x55EC, 0x8385, 0x450B, 0xE3C3, 0x83AC, 0x83C1,
+ 0x83D3, 0x347E, 0xE3C8, 0x6A57, 0x855A, 0x3496, 0xE3CC, 0xE3CD,
+ 0x8458, 0xE3CF, 0x8471, 0x3DD3, 0x44E4, 0x6AA7, 0x844A, 0xE3D5,
+ 0x7958, 0x84A8, 0xE3D8, 0xE3D9, 0xE3DA, 0x84DE, 0x840F, 0x8391,
+ 0x44A0, 0x8493, 0x84E4, 0xE3E1, 0x4240, 0xE3E3, 0x4543, 0x8534,
+ 0x5AF2, 0xE3E7, 0x4527, 0x8573, 0x4516, 0x67BF, 0x8616,
+ /* Big5-HKSCS 0x8FA1 .. 0x8FFE */
+ 0xE3ED, 0xE3EE, 0x85C1, 0xE3F0, 0x8602, 0xE3F2, 0xE3F3,
+ 0xE3F4, 0x456A, 0x8628, 0x3648, 0xE3F8, 0x53F7, 0xE3FA, 0x867E,
+ 0x8771, 0xE3FD, 0x87EE, 0xE3FF, 0x87B1, 0x87DA, 0x880F, 0x5661,
+ 0x866C, 0x6856, 0x460F, 0x8845, 0x8846, 0xE409, 0xE40A, 0xE40B,
+ 0x885E, 0x889C, 0x465B, 0x88B4, 0x88B5, 0x63C1, 0x88C5, 0x7777,
+ 0xE414, 0x8987, 0x898A, 0x89A6, 0x89A9, 0x89A7, 0x89BC, 0xE41B,
+ 0x89E7, 0xE41D, 0xE41E, 0x8A9C, 0x7793, 0x91FE, 0x8A90, 0xE423,
+ 0x7AE9, 0xE425, 0xE426, 0x4713, 0xE428, 0x717C, 0x8B0C, 0x8B1F,
+ 0xE42C, 0xE42D, 0x8B3F, 0x8B4C, 0x8B4D, 0x8AA9, 0xE432, 0x8B90,
+ 0x8B9B, 0x8AAF, 0xE436, 0x4615, 0x884F, 0x8C9B, 0xE43A, 0xE43B,
+ 0xE43C, 0x3725, 0xE43E, 0x8CD6, 0xE440, 0xE441, 0x8D12, 0x8D03,
+ 0xE444, 0x8CDB, 0x705C, 0x8D11, 0xE448, 0x3ED0, 0x8D77,
+ /* Big5-HKSCS 0x9040 .. 0x907E */
+ 0x8DA9, 0xE44C, 0xE44D, 0xE44E, 0x3B7C, 0xE450, 0xE451, 0x7AE7,
+ 0x8EAD, 0x8EB6, 0x8EC3, 0x92D4, 0x8F19, 0x8F2D, 0xE459, 0xE45A,
+ 0x8FA5, 0x9303, 0xE45D, 0xE45E, 0x8FB3, 0x492A, 0xE461, 0xE462,
+ 0xE463, 0x5EF8, 0xE465, 0x8FF9, 0xE467, 0xE468, 0xE469, 0xE46A,
+ 0x3980, 0xE46C, 0x9037, 0xE46E, 0xE46F, 0x9061, 0xE471, 0xE472,
+ 0x90A8, 0xE474, 0x90C4, 0xE476, 0x90AE, 0x90FD, 0x9167, 0x3AF0,
+ 0x91A9, 0x91C4, 0x7CAC, 0xE47E, 0xE47F, 0x920E, 0x6C9F, 0x9241,
+ 0x9262, 0xE484, 0x92B9, 0xE486, 0xE487, 0xE488, 0xE489,
+ /* Big5-HKSCS 0x90A1 .. 0x90FE */
+ 0xE48A, 0x932C, 0x936B, 0xE48D, 0xE48E, 0x708F, 0x5AC3,
+ 0xE491, 0xE492, 0x4965, 0x9244, 0xE495, 0xE496, 0xE497, 0x9373,
+ 0x945B, 0x8EBC, 0x9585, 0x95A6, 0x9426, 0x95A0, 0x6FF6, 0x42B9,
+ 0xE4A1, 0xE4A2, 0xE4A3, 0xE4A4, 0x49DF, 0x6C1C, 0x967B, 0x9696,
+ 0x416C, 0x96A3, 0xE4AB, 0x61DA, 0x96B6, 0x78F5, 0xE4AF, 0x96BD,
+ 0x53CC, 0x49A1, 0xE4B3, 0xE4B4, 0xE4B5, 0xE4B6, 0xE4B7, 0xE4B8,
+ 0xE4B9, 0xE4BA, 0x9731, 0x8642, 0x9736, 0x4A0F, 0x453D, 0x4585,
+ 0xE4C1, 0x7075, 0x5B41, 0x971B, 0x975C, 0xE4C6, 0x9757, 0x5B4A,
+ 0xE4C9, 0x975F, 0x9425, 0x50D0, 0xE4CD, 0xE4CE, 0x9789, 0x979F,
+ 0x97B1, 0x97BE, 0x97C0, 0x97D2, 0x97E0, 0xE4D6, 0x97EE, 0x741C,
+ 0xE4D9, 0x97FF, 0x97F5, 0xE4DC, 0xE4DD, 0x4AD1, 0x9834, 0x9833,
+ 0x984B, 0x9866, 0x3B0E, 0xE4E4, 0x3D51, 0xE4E6, 0xE4E7,
+ /* Big5-HKSCS 0x9140 .. 0x917E */
+ 0xE4E8, 0x98CA, 0x98B7, 0x98C8, 0x98C7, 0x4AFF, 0xE4EE, 0xE4EF,
+ 0x55B0, 0x98E1, 0x98E6, 0x98EC, 0x9378, 0x9939, 0xE4F6, 0x4B72,
+ 0xE4F8, 0xE4F9, 0x99F5, 0x9A0C, 0x9A3B, 0x9A10, 0x9A58, 0xE4FF,
+ 0x36C4, 0xE501, 0xE502, 0x9AE0, 0x9AE2, 0xE505, 0x9AF4, 0x4C0E,
+ 0x9B14, 0x9B2D, 0xE50A, 0x5034, 0x9B34, 0xE50D, 0x38C3, 0xE50F,
+ 0x9B50, 0x9B40, 0xE512, 0x5A45, 0xE514, 0x9B8E, 0xE516, 0x9C02,
+ 0x9BFF, 0x9C0C, 0xE51A, 0x9DD4, 0xE51C, 0xE51D, 0xE51E, 0xE51F,
+ 0xE520, 0xE521, 0x9D7E, 0x9D83, 0xE524, 0x9E0E, 0x6888,
+ /* Big5-HKSCS 0x91A1 .. 0x91FE */
+ 0x9DC4, 0xE528, 0xE529, 0xE52A, 0xE52B, 0xE52C, 0x9D39,
+ 0xE52E, 0xE52F, 0x9E90, 0x9E95, 0x9E9E, 0x9EA2, 0x4D34, 0x9EAA,
+ 0x9EAF, 0xE537, 0x9EC1, 0x3B60, 0x39E5, 0x3D1D, 0x4F32, 0x37BE,
+ 0xE53E, 0x9F02, 0x9F08, 0x4B96, 0x9424, 0xE543, 0x9F17, 0x9F16,
+ 0x9F39, 0x569F, 0x568A, 0x9F45, 0x99B8, 0xE54B, 0x97F2, 0x847F,
+ 0x9F62, 0x9F69, 0x7ADC, 0x9F8E, 0x7216, 0x4BBE, 0xE554, 0xE555,
+ 0x7177, 0xE557, 0xE558, 0xE559, 0x739E, 0xE55B, 0xE55C, 0x799F,
+ 0xE55E, 0xE55F, 0x9369, 0x93F3, 0xE562, 0x92EC, 0x9381, 0x93CB,
+ 0xE566, 0xE567, 0x7217, 0x3EEB, 0x7772, 0x7A43, 0x70D0, 0xE56D,
+ 0xE56E, 0x717E, 0xE570, 0x70A3, 0xE572, 0xE573, 0x3EC7, 0xE575,
+ 0xE576, 0xE577, 0x3722, 0xE579, 0xE57A, 0x36E1, 0xE57C, 0xE57D,
+ 0xE57E, 0x3723, 0xE580, 0x575B, 0xE582, 0xE583, 0xE584,
+ /* Big5-HKSCS 0x9240 .. 0x927E */
+ 0xE585, 0xE586, 0x8503, 0xE588, 0x8503, 0x8455, 0xE58B, 0xE58C,
+ 0xE58D, 0xE58E, 0xE58F, 0xE590, 0x44F4, 0xE592, 0xE593, 0xE594,
+ 0x67F9, 0x3733, 0x3C15, 0x3DE7, 0x586C, 0xE59A, 0x6810, 0x4057,
+ 0xE59D, 0xE59E, 0xE59F, 0xE5A0, 0xE5A1, 0x54CB, 0x569E, 0xE5A4,
+ 0x5692, 0xE5A6, 0xE5A7, 0xE5A8, 0x93C6, 0xE5AA, 0x939C, 0x4EF8,
+ 0x512B, 0x3819, 0xE5AF, 0x4EBC, 0xE5B1, 0xE5B2, 0x4F4B, 0x4F8A,
+ 0xE5B5, 0x5A68, 0xE5B7, 0xE5B8, 0x3999, 0xE5BA, 0xE5BB, 0x3435,
+ 0x4F29, 0xE5BE, 0xE5BF, 0xE5C0, 0x8ADA, 0xE5C2, 0x4E98,
+ /* Big5-HKSCS 0x92A1 .. 0x92FE */
+ 0x50CD, 0x510D, 0x4FA2, 0x4F03, 0xE5C8, 0xE5C9, 0x4F42,
+ 0x502E, 0x506C, 0x5081, 0x4FCC, 0x4FE5, 0x5058, 0x50FC, 0x5159,
+ 0x515B, 0x515D, 0x515E, 0x6E76, 0xE5D7, 0xE5D8, 0xE5D9, 0x6D72,
+ 0xE5DB, 0xE5DC, 0x51A8, 0x51C3, 0xE5DF, 0x44DD, 0xE5E1, 0xE5E2,
+ 0xE5E3, 0x8D7A, 0xE5E5, 0xE5E6, 0x5259, 0x52A4, 0xE5E9, 0x52E1,
+ 0x936E, 0x467A, 0x718C, 0xE5EE, 0xE5EF, 0xE5F0, 0xE5F1, 0x69D1,
+ 0xE5F3, 0x7479, 0x3EDE, 0x7499, 0x7414, 0x7456, 0x7398, 0x4B8E,
+ 0xE5FB, 0xE5FC, 0x53D0, 0x3584, 0x720F, 0xE600, 0x55B4, 0xE602,
+ 0x54CD, 0xE604, 0x571D, 0x925D, 0x96F4, 0x9366, 0x57DD, 0x578D,
+ 0x577F, 0x363E, 0x58CB, 0x5A99, 0xE60F, 0xE610, 0xE611, 0xE612,
+ 0x5A2C, 0x59B8, 0x928F, 0x5A7E, 0x5ACF, 0x5A12, 0xE619, 0xE61A,
+ 0xE61B, 0xE61C, 0x36F5, 0x6D05, 0x7443, 0x5A21, 0xE621,
+ /* Big5-HKSCS 0x9340 .. 0x937E */
+ 0x5A81, 0xE623, 0xE624, 0x93E0, 0x748C, 0xE627, 0x7105, 0x4972,
+ 0x9408, 0xE62B, 0x93BD, 0x37A0, 0x5C1E, 0x5C9E, 0x5E5E, 0x5E48,
+ 0xE632, 0xE633, 0xE634, 0x5ECD, 0x5B4F, 0xE637, 0xE638, 0x3701,
+ 0xE63A, 0x36DD, 0xE63C, 0x36D3, 0x812A, 0xE63F, 0xE640, 0xE641,
+ 0xE642, 0x5F0C, 0x5F0E, 0xE645, 0xE646, 0x5A6B, 0xE648, 0x5B44,
+ 0x8614, 0xE64B, 0x8860, 0x607E, 0xE64E, 0xE64F, 0x5FDB, 0x3EB8,
+ 0xE652, 0xE653, 0xE654, 0xE655, 0x61C0, 0xE657, 0xE658, 0xE659,
+ 0x6199, 0x6198, 0x6075, 0xE65D, 0xE65E, 0xE65F, 0xE660,
+ /* Big5-HKSCS 0x93A1 .. 0x93FE */
+ 0x6471, 0xE662, 0xE663, 0x3A29, 0xE665, 0xE666, 0xE667,
+ 0xE668, 0x6337, 0xE66A, 0x64B6, 0x6331, 0x63D1, 0xE66E, 0xE66F,
+ 0x62A4, 0xE671, 0x643B, 0x656B, 0x6972, 0x3BF4, 0xE676, 0xE677,
+ 0xE678, 0xE679, 0x550D, 0xE67B, 0xE67C, 0xE67D, 0x66CE, 0xE67F,
+ 0xE680, 0x3AE0, 0x4190, 0xE683, 0xE684, 0xE685, 0xE686, 0xE687,
+ 0xE688, 0x78EE, 0xE68A, 0xE68B, 0xE68C, 0x3464, 0xE68E, 0xE68F,
+ 0xE690, 0x668E, 0xE692, 0x666B, 0x4B93, 0x6630, 0xE696, 0xE697,
+ 0x6663, 0xE699, 0xE69A, 0x661E, 0xE69C, 0x38D1, 0xE69E, 0xE69F,
+ 0x3B99, 0xE6A1, 0xE6A2, 0x74D0, 0x3B96, 0x678F, 0xE6A6, 0x68B6,
+ 0x681E, 0x3BC4, 0x6ABE, 0x3863, 0xE6AC, 0xE6AD, 0x6A33, 0x6A52,
+ 0x6AC9, 0x6B05, 0xE6B2, 0x6511, 0x6898, 0x6A4C, 0x3BD7, 0x6A7A,
+ 0x6B57, 0xE6B9, 0xE6BA, 0x93A0, 0x92F2, 0xE6BD, 0xE6BE,
+ /* Big5-HKSCS 0x9440 .. 0x947E */
+ 0x9289, 0xE6C0, 0xE6C1, 0x9467, 0x6DA5, 0x6F0B, 0xE6C5, 0x6D67,
+ 0xE6C7, 0x3D8F, 0x6E04, 0xE6CA, 0x5A3D, 0x6E0A, 0x5847, 0x6D24,
+ 0x7842, 0x713B, 0xE6D1, 0xE6D2, 0x70F1, 0x7250, 0x7287, 0x7294,
+ 0xE6D7, 0xE6D8, 0x5179, 0xE6DA, 0xE6DB, 0x747A, 0xE6DD, 0xE6DE,
+ 0xE6DF, 0xE6E0, 0xE6E1, 0x3F06, 0x3EB1, 0xE6E4, 0xE6E5, 0xE6E6,
+ 0x60A7, 0x3EF3, 0x74CC, 0x743C, 0x9387, 0x7437, 0x449F, 0xE6EE,
+ 0x4551, 0x7583, 0x3F63, 0xE6F2, 0xE6F3, 0x3F58, 0x7555, 0x7673,
+ 0xE6F7, 0x3B19, 0x7468, 0xE6FA, 0xE6FB, 0xE6FC, 0x3AFB,
+ /* Big5-HKSCS 0x94A1 .. 0x94FE */
+ 0x3DCD, 0xE6FF, 0x3EFF, 0xE701, 0xE702, 0x91FA, 0x5732,
+ 0x9342, 0xE706, 0xE707, 0x50DF, 0xE709, 0xE70A, 0x7778, 0xE70C,
+ 0x770E, 0x770F, 0x777B, 0xE710, 0xE711, 0x3A5E, 0xE713, 0x7438,
+ 0x749B, 0x3EBF, 0xE717, 0xE718, 0x40C8, 0xE71A, 0xE71B, 0x9307,
+ 0xE71D, 0x781E, 0x788D, 0x7888, 0x78D2, 0x73D0, 0x7959, 0xE724,
+ 0xE725, 0x410E, 0x799B, 0x8496, 0x79A5, 0x6A2D, 0xE72B, 0x7A3A,
+ 0x79F4, 0x416E, 0xE72F, 0x4132, 0x9235, 0x79F1, 0xE733, 0xE734,
+ 0xE735, 0xE736, 0xE737, 0x3597, 0x556B, 0x3570, 0x36AA, 0xE73C,
+ 0xE73D, 0x7AE2, 0x5A59, 0xE740, 0xE741, 0xE742, 0x5A0D, 0xE744,
+ 0x78F0, 0x5A2A, 0xE747, 0x7AFE, 0x41F9, 0x7C5D, 0x7C6D, 0x4211,
+ 0xE74D, 0xE74E, 0xE74F, 0x7CCD, 0xE751, 0xE752, 0x7C8E, 0x7C7C,
+ 0x7CAE, 0x6AB2, 0x7DDC, 0x7E07, 0x7DD3, 0x7F4E, 0xE75B,
+ /* Big5-HKSCS 0x9540 .. 0x957E */
+ 0xE75C, 0xE75D, 0x7D97, 0xE75F, 0x426A, 0xE761, 0xE762, 0x67D6,
+ 0xE764, 0xE765, 0x57C4, 0xE767, 0xE768, 0xE769, 0x7FDD, 0x7B27,
+ 0xE76C, 0xE76D, 0xE76E, 0x7B0C, 0xE770, 0x99E6, 0x8645, 0x9A63,
+ 0x6A1C, 0xE775, 0x39E2, 0xE777, 0xE778, 0x9A1F, 0xE77A, 0x8480,
+ 0xE77C, 0xE77D, 0x44EA, 0x8137, 0x4402, 0x80C6, 0x8109, 0x8142,
+ 0xE784, 0x98C3, 0xE786, 0x8262, 0x8265, 0xE789, 0x8453, 0xE78B,
+ 0x8610, 0xE78D, 0x5A86, 0x417F, 0xE790, 0x5B2B, 0xE792, 0x5AE4,
+ 0xE794, 0x86A0, 0xE796, 0xE797, 0x882D, 0xE799, 0x5A02,
+ /* Big5-HKSCS 0x95A1 .. 0x95FE */
+ 0x886E, 0x4F45, 0x8887, 0x88BF, 0x88E6, 0x8965, 0x894D,
+ 0xE7A2, 0x8954, 0xE7A4, 0xE7A5, 0xE7A6, 0xE7A7, 0xE7A8, 0xE7A9,
+ 0x3EAD, 0x84A3, 0x46F5, 0x46CF, 0x37F2, 0x8A3D, 0x8A1C, 0xE7B1,
+ 0x5F4D, 0x922B, 0xE7B4, 0x65D4, 0x7129, 0x70C4, 0xE7B8, 0x9D6D,
+ 0x8C9F, 0x8CE9, 0xE7BC, 0x599A, 0x77C3, 0x59F0, 0x436E, 0x36D4,
+ 0x8E2A, 0x8EA7, 0xE7C4, 0x8F30, 0x8F4A, 0x42F4, 0x6C58, 0x6FBB,
+ 0xE7CA, 0x489B, 0x6F79, 0x6E8B, 0xE7CE, 0x9BE9, 0x36B5, 0xE7D1,
+ 0x90BB, 0x9097, 0x5571, 0x4906, 0x91BB, 0x9404, 0xE7D8, 0x4062,
+ 0xE7DA, 0x9427, 0xE7DC, 0xE7DD, 0x84E5, 0x8A2B, 0x9599, 0x95A7,
+ 0x9597, 0x9596, 0xE7E4, 0x7445, 0x3EC2, 0xE7E7, 0xE7E8, 0xE7E9,
+ 0x3EE7, 0xE7EB, 0x968F, 0xE7ED, 0xE7EE, 0xE7EF, 0x3ECC, 0xE7F1,
+ 0xE7F2, 0xE7F3, 0x7412, 0x746B, 0x3EFC, 0x9741, 0xE7F8,
+ /* Big5-HKSCS 0x9640 .. 0x967E */
+ 0x6847, 0x4A1D, 0xE7FB, 0xE7FC, 0x975D, 0x9368, 0xE7FF, 0xE800,
+ 0xE801, 0xE802, 0x92BA, 0x5B11, 0x8B69, 0x493C, 0x73F9, 0xE808,
+ 0x979B, 0x9771, 0x9938, 0xE80C, 0x5DC1, 0xE80E, 0xE80F, 0x981F,
+ 0xE811, 0x92F6, 0xE813, 0x91E5, 0x44C0, 0xE816, 0xE817, 0xE818,
+ 0x98DC, 0xE81A, 0x3F00, 0x922A, 0x4925, 0x8414, 0x993B, 0x994D,
+ 0xE821, 0x3DFD, 0x999B, 0x4B6F, 0x99AA, 0x9A5C, 0xE827, 0xE828,
+ 0x6A8F, 0x9A21, 0x5AFE, 0x9A2F, 0xE82D, 0x4B90, 0xE82F, 0x99BC,
+ 0x4BBD, 0x4B97, 0x937D, 0x5872, 0xE835, 0x5822, 0xE837,
+ /* Big5-HKSCS 0x96A1 .. 0x96FE */
+ 0xE838, 0x7844, 0xE83A, 0xE83B, 0x68C5, 0x3D7D, 0x9458,
+ 0x3927, 0x6150, 0xE841, 0xE842, 0x6107, 0x9C4F, 0x9C53, 0x9C7B,
+ 0x9C35, 0x9C10, 0x9B7F, 0x9BCF, 0xE84B, 0x9B9F, 0xE84D, 0xE84E,
+ 0x9D21, 0x4CAE, 0xE851, 0x9E18, 0x4CB0, 0x9D0C, 0xE855, 0xE856,
+ 0xE857, 0xE858, 0x9DA5, 0x84BD, 0xE85B, 0xE85C, 0xE85D, 0x85FC,
+ 0x4533, 0xE860, 0xE861, 0xE862, 0x8420, 0x85EE, 0xE865, 0xE866,
+ 0xE867, 0x79E2, 0xE869, 0xE86A, 0x492D, 0xE86C, 0x3D62, 0x93DB,
+ 0x92BE, 0x9348, 0xE871, 0x78B9, 0x9277, 0x944D, 0x4FE4, 0x3440,
+ 0x9064, 0xE878, 0x783D, 0x7854, 0x78B6, 0x784B, 0xE87D, 0xE87E,
+ 0xE87F, 0x369A, 0x4F72, 0x6FDA, 0x6FD9, 0x701E, 0x701E, 0x5414,
+ 0xE887, 0x57BB, 0x58F3, 0x578A, 0x9D16, 0x57D7, 0x7134, 0x34AF,
+ 0xE88F, 0x71EB, 0xE891, 0xE892, 0x5B28, 0xE894, 0xE895,
+ /* Big5-HKSCS 0x9740 .. 0x977E */
+ 0x610C, 0x5ACE, 0x5A0B, 0x42BC, 0xE89A, 0x372C, 0x4B7B, 0xE89D,
+ 0x93BB, 0x93B8, 0xE8A0, 0xE8A1, 0x8472, 0xE8A3, 0xE8A4, 0xE8A5,
+ 0xE8A6, 0xE8A7, 0x5994, 0xE8A9, 0xE8AA, 0x7DA8, 0xE8AC, 0xE8AD,
+ 0xE8AE, 0xE8AF, 0xE8B0, 0x92E5, 0x73E2, 0x3EE9, 0x74B4, 0xE8B5,
+ 0xE8B6, 0x3EE1, 0xE8B8, 0x6AD8, 0x73F3, 0x73FB, 0x3ED6, 0xE8BD,
+ 0xE8BE, 0xE8BF, 0xE8C0, 0xE8C1, 0xE8C2, 0xE8C3, 0x7448, 0xE8C5,
+ 0x70A5, 0xE8C7, 0x9284, 0x73E6, 0x935F, 0xE8CB, 0x9331, 0xE8CD,
+ 0xE8CE, 0x9386, 0xE8D0, 0xE8D1, 0x4935, 0xE8D3, 0x716B,
+ /* Big5-HKSCS 0x97A1 .. 0x97FE */
+ 0xE8D5, 0xE8D6, 0x56A4, 0xE8D8, 0xE8D9, 0xE8DA, 0x5502,
+ 0x79C4, 0xE8DD, 0x7DFE, 0xE8DF, 0xE8E0, 0xE8E1, 0x452E, 0x9401,
+ 0x370A, 0xE8E5, 0xE8E6, 0x59B0, 0xE8E8, 0xE8E9, 0xE8EA, 0x5AA1,
+ 0x36E2, 0xE8ED, 0x36B0, 0x925F, 0x5A79, 0xE8F1, 0xE8F2, 0x9374,
+ 0x3CCD, 0xE8F5, 0x4A96, 0x398A, 0x50F4, 0x3D69, 0x3D4C, 0xE8FB,
+ 0x7175, 0x42FB, 0xE8FE, 0x6E0F, 0xE900, 0x44EB, 0x6D57, 0xE903,
+ 0x7067, 0x6CAF, 0x3CD6, 0xE907, 0xE908, 0x6E02, 0x6F0C, 0x3D6F,
+ 0xE90C, 0x7551, 0x36BC, 0x34C8, 0x4680, 0x3EDA, 0x4871, 0x59C4,
+ 0x926E, 0x493E, 0x8F41, 0xE917, 0xE918, 0x5812, 0x57C8, 0x36D6,
+ 0xE91C, 0x70FE, 0xE91E, 0xE91F, 0xE920, 0xE921, 0xE922, 0x68B9,
+ 0x6967, 0xE925, 0xE926, 0xE927, 0xE928, 0xE929, 0xE92A, 0xE92B,
+ 0xE92C, 0x6A1A, 0xE92E, 0xE92F, 0x843E, 0x44DF, 0x44CE,
+ /* Big5-HKSCS 0x9840 .. 0x987E */
+ 0xE933, 0xE934, 0xE935, 0xE936, 0x6F17, 0xE938, 0x833D, 0xE93A,
+ 0x83ED, 0xE93C, 0xE93D, 0xE93E, 0x5989, 0x5A82, 0xE941, 0x5A61,
+ 0x5A71, 0xE944, 0xE945, 0x372D, 0x59EF, 0xE948, 0x36C7, 0x718E,
+ 0x9390, 0x669A, 0xE94D, 0x5A6E, 0x5A2B, 0xE950, 0x6A2B, 0xE952,
+ 0xE953, 0xE954, 0xE955, 0x711D, 0xE957, 0xE958, 0x4FB0, 0xE95A,
+ 0x5CC2, 0xE95C, 0xE95D, 0xE95E, 0x6A0C, 0xE960, 0xE961, 0x70A6,
+ 0x7133, 0xE964, 0x3DA5, 0x6CDF, 0xE967, 0xE968, 0x7E65, 0x59EB,
+ 0x5D2F, 0x3DF3, 0x5F5C, 0xE96E, 0xE96F, 0x7DA4, 0x8426,
+ /* Big5-HKSCS 0x98A1 .. 0x98FE */
+ 0x5485, 0xE973, 0xE974, 0xE975, 0x577E, 0xE977, 0xE978,
+ 0x3FE5, 0xE97A, 0xE97B, 0x7003, 0xE97D, 0x5D70, 0x738F, 0x7CD3,
+ 0xE981, 0xE982, 0x4FC8, 0x7FE7, 0x72CD, 0x7310, 0xE987, 0x7338,
+ 0x7339, 0xE98A, 0x7341, 0x7348, 0x3EA9, 0xE98E, 0x906C, 0x71F5,
+ 0xE991, 0x73E1, 0x81F6, 0x3ECA, 0x770C, 0x3ED1, 0x6CA2, 0x56FD,
+ 0x7419, 0x741E, 0x741F, 0x3EE2, 0x3EF0, 0x3EF4, 0x3EFA, 0x74D3,
+ 0x3F0E, 0x3F53, 0x7542, 0x756D, 0x7572, 0x758D, 0x3F7C, 0x75C8,
+ 0x75DC, 0x3FC0, 0x764D, 0x3FD7, 0x7674, 0x3FDC, 0x767A, 0xE9B0,
+ 0x7188, 0x5623, 0x8980, 0x5869, 0x401D, 0x7743, 0x4039, 0x6761,
+ 0x4045, 0x35DB, 0x7798, 0x406A, 0x406F, 0x5C5E, 0x77BE, 0x77CB,
+ 0x58F2, 0x7818, 0x70B9, 0x781C, 0x40A8, 0x7839, 0x7847, 0x7851,
+ 0x7866, 0x8448, 0xE9CB, 0x7933, 0x6803, 0x7932, 0x4103,
+ /* Big5-HKSCS 0x9940 .. 0x997E */
+ 0x4109, 0x7991, 0x7999, 0x8FBB, 0x7A06, 0x8FBC, 0x4167, 0x7A91,
+ 0x41B2, 0x7ABC, 0x8279, 0x41C4, 0x7ACF, 0x7ADB, 0x41CF, 0x4E21,
+ 0x7B62, 0x7B6C, 0x7B7B, 0x7C12, 0x7C1B, 0x4260, 0x427A, 0x7C7B,
+ 0x7C9C, 0x428C, 0x7CB8, 0x4294, 0x7CED, 0x8F93, 0x70C0, 0xE9EF,
+ 0x7DCF, 0x7DD4, 0x7DD0, 0x7DFD, 0x7FAE, 0x7FB4, 0x729F, 0x4397,
+ 0x8020, 0x8025, 0x7B39, 0x802E, 0x8031, 0x8054, 0x3DCC, 0x57B4,
+ 0x70A0, 0x80B7, 0x80E9, 0x43ED, 0x810C, 0x732A, 0x810E, 0x8112,
+ 0x7560, 0x8114, 0x4401, 0x3B39, 0x8156, 0x8159, 0x815A,
+ /* Big5-HKSCS 0x99A1 .. 0x99FE */
+ 0x4413, 0x583A, 0x817C, 0x8184, 0x4425, 0x8193, 0x442D,
+ 0x81A5, 0x57EF, 0x81C1, 0x81E4, 0x8254, 0x448F, 0x82A6, 0x8276,
+ 0x82CA, 0x82D8, 0x82FF, 0x44B0, 0x8357, 0x9669, 0x698A, 0x8405,
+ 0x70F5, 0x8464, 0x60E3, 0x8488, 0x4504, 0x84BE, 0x84E1, 0x84F8,
+ 0x8510, 0x8538, 0x8552, 0x453B, 0x856F, 0x8570, 0x85E0, 0x4577,
+ 0x8672, 0x8692, 0x86B2, 0x86EF, 0x9645, 0x878B, 0x4606, 0x4617,
+ 0x88AE, 0x88FF, 0x8924, 0x8947, 0x8991, 0xEA43, 0x8A29, 0x8A38,
+ 0x8A94, 0x8AB4, 0x8C51, 0x8CD4, 0x8CF2, 0x8D1C, 0x4798, 0x585F,
+ 0x8DC3, 0x47ED, 0x4EEE, 0x8E3A, 0x55D8, 0x5754, 0x8E71, 0x55F5,
+ 0x8EB0, 0x4837, 0x8ECE, 0x8EE2, 0x8EE4, 0x8EED, 0x8EF2, 0x8FB7,
+ 0x8FC1, 0x8FCA, 0x8FCC, 0x9033, 0x99C4, 0x48AD, 0x98E0, 0x9213,
+ 0x491E, 0x9228, 0x9258, 0x926B, 0x92B1, 0x92AE, 0x92BF,
+ /* Big5-HKSCS 0x9A40 .. 0x9A7E */
+ 0x92E3, 0x92EB, 0x92F3, 0x92F4, 0x92FD, 0x9343, 0x9384, 0x93AD,
+ 0x4945, 0x4951, 0x9EBF, 0x9417, 0x5301, 0x941D, 0x942D, 0x943E,
+ 0x496A, 0x9454, 0x9479, 0x952D, 0x95A2, 0x49A7, 0x95F4, 0x9633,
+ 0x49E5, 0x67A0, 0x4A24, 0x9740, 0x4A35, 0x97B2, 0x97C2, 0x5654,
+ 0x4AE4, 0x60E8, 0x98B9, 0x4B19, 0x98F1, 0x5844, 0x990E, 0x9919,
+ 0x51B4, 0x991C, 0x9937, 0x9942, 0x995D, 0x9962, 0x4B70, 0x99C5,
+ 0x4B9D, 0x9A3C, 0x9B0F, 0x7A83, 0x9B69, 0x9B81, 0x9BDD, 0x9BF1,
+ 0x9BF4, 0x4C6D, 0x9C20, 0x376F, 0xEAA9, 0x9D49, 0x9C3A,
+ /* Big5-HKSCS 0x9AA1 .. 0x9AFE */
+ 0x9EFE, 0x5650, 0x9D93, 0x9DBD, 0x9DC0, 0x9DFC, 0x94F6,
+ 0x8FB6, 0x9E7B, 0x9EAC, 0x9EB1, 0x9EBD, 0x9EC6, 0x94DC, 0x9EE2,
+ 0x9EF1, 0x9EF8, 0x7AC8, 0x9F44, 0xEABF, 0xEAC0, 0xEAC1, 0x691A,
+ 0x94C3, 0x59AC, 0xEAC5, 0x5840, 0x94C1, 0x37B9, 0xEAC9, 0xEACA,
+ 0xEACB, 0xEACC, 0x5757, 0x7173, 0xEACF, 0xEAD0, 0xEAD1, 0x546A,
+ 0xEAD3, 0xEAD4, 0x549E, 0xEAD6, 0xEAD7, 0xEAD8, 0xEAD9, 0xEADA,
+ 0x60E7, 0xEADC, 0x567A, 0xEADE, 0xEADF, 0xEAE0, 0xEAE1, 0xEAE2,
+ 0xEAE3, 0x6955, 0x9C2F, 0x87A5, 0xEAE7, 0xEAE8, 0xEAE9, 0xEAEA,
+ 0xEAEB, 0xEAEC, 0x5C20, 0xEAEE, 0x5E0B, 0xEAF0, 0xEAF1, 0xEAF2,
+ 0x671E, 0xEAF4, 0xEAF5, 0xEAF6, 0x3647, 0xEAF8, 0xEAF9, 0xEAFA,
+ 0xEAFB, 0x5364, 0x84AD, 0xEAFE, 0xEAFF, 0xEB00, 0x8B81, 0xEB02,
+ 0xEB03, 0xEB04, 0xEB05, 0x4E78, 0x70BB, 0xEB08, 0xEB09,
+ /* Big5-HKSCS 0x9B40 .. 0x9B7E */
+ 0xEB0A, 0xEB0B, 0xEB0C, 0xEB0D, 0xEB0E, 0xEB0F, 0x62C3, 0xEB11,
+ 0xEB12, 0x7198, 0x6855, 0xEB15, 0x69E9, 0x36C8, 0xEB18, 0xEB19,
+ 0xEB1A, 0xEB1B, 0xEB1C, 0xEB1D, 0x82FD, 0xEB1F, 0xEB20, 0xEB21,
+ 0x89A5, 0xEB23, 0x8FA0, 0xEB25, 0x97B8, 0xEB27, 0x9847, 0x9ABD,
+ 0xEB2A, 0xEB2B, 0xEB2C, 0xEB2D, 0xEB2E, 0xEB2F, 0xEB30, 0xEB31,
+ 0xEB32, 0xEB33, 0xEB34, 0xEB35, 0xEB36, 0xEB37, 0xEB38, 0xEB39,
+ 0x5FB1, 0x6648, 0x66BF, 0xEB3D, 0xEB3E, 0xEB3F, 0x7201, 0xEB41,
+ 0x77D7, 0xEB43, 0xEB44, 0x7E87, 0xEB46, 0x58B5, 0x670E,
+ /* Big5-HKSCS 0x9BA1 .. 0x9BFE */
+ 0x6918, 0xEB4A, 0xEB4B, 0xEB4C, 0xEB4D, 0xEB4E, 0xEB4F,
+ 0xEB50, 0x48D0, 0x4AB8, 0xEB53, 0xEB54, 0xEB55, 0xEB56, 0xEB57,
+ 0xEB58, 0xEB59, 0xEB5A, 0xEB5B, 0x51D2, 0xEB5D, 0x599F, 0xEB5F,
+ 0x3BBE, 0xEB61, 0xEB62, 0xEB63, 0x5788, 0xEB65, 0x399B, 0xEB67,
+ 0xEB68, 0xEB69, 0x3762, 0xEB6B, 0x8B5E, 0xEB6D, 0x99D6, 0xEB6F,
+ 0xEB70, 0xEB71, 0x7209, 0xEB73, 0xEB74, 0x5965, 0xEB76, 0xEB77,
+ 0xEB78, 0x8EDA, 0xEB7A, 0x528F, 0x573F, 0x7171, 0xEB7E, 0xEB7F,
+ 0xEB80, 0xEB81, 0x55BC, 0xEB83, 0xEB84, 0xEB85, 0x91D4, 0x3473,
+ 0xEB88, 0xEB89, 0xEB8A, 0x4718, 0xEB8C, 0xEB8D, 0xEB8E, 0xEB8F,
+ 0xEB90, 0x5066, 0x34FB, 0xEB93, 0x60DE, 0xEB95, 0x477C, 0xEB97,
+ 0xEB98, 0xEB99, 0xEB9A, 0xEB9B, 0x57A1, 0x7151, 0x6FB6, 0xEB9F,
+ 0xEBA0, 0x9056, 0xEBA2, 0xEBA3, 0x8B62, 0xEBA5, 0xEBA6,
+ /* Big5-HKSCS 0x9C40 .. 0x9C7E */
+ 0x5D5B, 0xEBA8, 0x8F36, 0xEBAA, 0xEBAB, 0x8AEA, 0xEBAD, 0xEBAE,
+ 0xEBAF, 0xEBB0, 0x4BC0, 0xEBB2, 0xEBB3, 0xEBB4, 0x9465, 0xEBB6,
+ 0x6195, 0x5A27, 0xEBB9, 0x4FBB, 0x56B9, 0xEBBC, 0xEBBD, 0x4E6A,
+ 0xEBBF, 0x9656, 0x6D8F, 0xEBC2, 0x3618, 0x8977, 0xEBC5, 0xEBC6,
+ 0xEBC7, 0xEBC8, 0x71DF, 0xEBCA, 0x7B42, 0xEBCC, 0xEBCD, 0xEBCE,
+ 0x9104, 0xEBD0, 0x7A45, 0x9DF0, 0xEBD3, 0x9A26, 0xEBD5, 0x365F,
+ 0xEBD7, 0xEBD8, 0x7983, 0xEBDA, 0xEBDB, 0x5D2C, 0xEBDD, 0x83CF,
+ 0xEBDF, 0x46D0, 0xEBE1, 0x753B, 0x8865, 0xEBE4, 0x58B6,
+ /* Big5-HKSCS 0x9CA1 .. 0x9CFE */
+ 0x371C, 0xEBE7, 0xEBE8, 0xEBE9, 0x3C54, 0xEBEB, 0xEBEC,
+ 0x9281, 0xEBEE, 0xEBEF, 0x9330, 0xEBF1, 0xEBF2, 0x6C39, 0x949F,
+ 0xEBF5, 0xEBF6, 0x8827, 0x88F5, 0xEBF9, 0xEBFA, 0xEBFB, 0x6EB8,
+ 0xEBFD, 0xEBFE, 0x39A4, 0x36B9, 0x5C10, 0x79E3, 0x453F, 0x66B6,
+ 0xEC05, 0xEC06, 0x8943, 0xEC08, 0xEC09, 0x56D6, 0x40DF, 0xEC0C,
+ 0x39A1, 0xEC0E, 0xEC0F, 0xEC10, 0x71AD, 0x8366, 0xEC13, 0xEC14,
+ 0x5A67, 0x4CB7, 0xEC17, 0xEC18, 0xEC19, 0xEC1A, 0xEC1B, 0xEC1C,
+ 0xEC1D, 0x7B43, 0x797E, 0xEC20, 0x6FB5, 0xEC22, 0x6A03, 0xEC24,
+ 0x53A2, 0xEC26, 0x93BF, 0x6836, 0x975D, 0xEC2A, 0xEC2B, 0xEC2C,
+ 0xEC2D, 0xEC2E, 0xEC2F, 0x5D85, 0xEC31, 0xEC32, 0x5715, 0x9823,
+ 0xEC35, 0x5DAB, 0xEC37, 0x65BE, 0x69D5, 0x53D2, 0xEC3B, 0xEC3C,
+ 0x3C11, 0x6736, 0xEC3F, 0xEC40, 0xEC41, 0xEC42, 0xEC43,
+ /* Big5-HKSCS 0x9D40 .. 0x9D7E */
+ 0xEC44, 0xEC45, 0xEC46, 0xEC47, 0xEC48, 0xEC49, 0x35CA, 0xEC4B,
+ 0xEC4C, 0x48FA, 0x63E6, 0xEC4F, 0x7808, 0x9255, 0xEC52, 0x43F2,
+ 0xEC54, 0x43DF, 0xEC56, 0xEC57, 0xEC58, 0x59F8, 0xEC5A, 0x8F0B,
+ 0xEC5C, 0xEC5D, 0x7B51, 0xEC5F, 0xEC60, 0x3DF7, 0xEC62, 0xEC63,
+ 0x8FD0, 0x728F, 0x568B, 0xEC67, 0xEC68, 0xEC69, 0xEC6A, 0xEC6B,
+ 0xEC6C, 0xEC6D, 0xEC6E, 0xEC6F, 0xEC70, 0xEC71, 0xEC72, 0xEC73,
+ 0x7E9F, 0xEC75, 0xEC76, 0x4CA4, 0x9547, 0xEC79, 0x71A2, 0xEC7B,
+ 0x4D91, 0x9012, 0xEC7E, 0x4D9C, 0xEC80, 0x8FBE, 0x55C1,
+ /* Big5-HKSCS 0x9DA1 .. 0x9DFE */
+ 0x8FBA, 0xEC84, 0x8FB9, 0xEC86, 0x4509, 0x7E7F, 0x6F56,
+ 0x6AB1, 0x4EEA, 0x34E4, 0xEC8D, 0xEC8E, 0x373A, 0x8E80, 0xEC91,
+ 0xEC92, 0xEC93, 0xEC94, 0xEC95, 0xEC96, 0x3DEB, 0xEC98, 0xEC99,
+ 0xEC9A, 0xEC9B, 0x4E9A, 0xEC9D, 0xEC9E, 0x56BF, 0xECA0, 0x8E0E,
+ 0x5B6D, 0xECA3, 0xECA4, 0x63DE, 0x62D0, 0xECA7, 0xECA8, 0x6530,
+ 0x562D, 0xECAB, 0x541A, 0xECAD, 0x3DC6, 0xECAF, 0x4C7D, 0x5622,
+ 0x561E, 0x7F49, 0xECB4, 0x5975, 0xECB6, 0x8770, 0x4E1C, 0xECB9,
+ 0xECBA, 0xECBB, 0x8117, 0x9D5E, 0x8D18, 0x763B, 0x9C45, 0x764E,
+ 0x77B9, 0x9345, 0x5432, 0x8148, 0x82F7, 0x5625, 0x8132, 0x8418,
+ 0x80BD, 0x55EA, 0x7962, 0x5643, 0x5416, 0xECCF, 0x35CE, 0x5605,
+ 0x55F1, 0x66F1, 0xECD4, 0x362D, 0x7534, 0x55F0, 0x55BA, 0x5497,
+ 0x5572, 0xECDB, 0xECDC, 0x5ED0, 0xECDE, 0xECDF, 0xECE0,
+ /* Big5-HKSCS 0x9E40 .. 0x9E7E */
+ 0xECE1, 0x9EAB, 0x7D5A, 0x55DE, 0xECE5, 0x629D, 0x976D, 0x5494,
+ 0x8CCD, 0x71F6, 0x9176, 0x63FC, 0x63B9, 0x63FE, 0x5569, 0xECF0,
+ 0x9C72, 0xECF2, 0x519A, 0x34DF, 0xECF5, 0x51A7, 0x544D, 0x551E,
+ 0x5513, 0x7666, 0x8E2D, 0xECFC, 0x75B1, 0x80B6, 0x8804, 0x8786,
+ 0x88C7, 0x81B6, 0x841C, 0xED04, 0x44EC, 0x7304, 0xED07, 0x5B90,
+ 0x830B, 0xED0A, 0x567B, 0xED0C, 0xED0D, 0xED0E, 0xED0F, 0xED10,
+ 0xED11, 0x9170, 0xED13, 0x9208, 0xED15, 0xED16, 0xED17, 0xED18,
+ 0x7266, 0xED1A, 0x474E, 0xED1C, 0xED1D, 0xED1E, 0x40FA,
+ /* Big5-HKSCS 0x9EA1 .. 0x9EFE */
+ 0x9C5D, 0x651F, 0xED22, 0x48F3, 0xED24, 0xED25, 0xED26,
+ 0xED27, 0x6062, 0xED29, 0xED2A, 0xED2B, 0xED2C, 0xED2D, 0x71A3,
+ 0x7E8E, 0x9D50, 0x4E1A, 0x4E04, 0x3577, 0x5B0D, 0x6CB2, 0x5367,
+ 0x36AC, 0x39DC, 0x537D, 0x36A5, 0xED3B, 0x589A, 0xED3D, 0x822D,
+ 0x544B, 0x57AA, 0xED41, 0xED42, 0xED43, 0x3A52, 0xED45, 0x7374,
+ 0xED47, 0x4D09, 0x9BED, 0xED4A, 0xED4B, 0x4C5B, 0xED4D, 0xED4E,
+ 0xED4F, 0x845C, 0xED51, 0xED52, 0xED53, 0xED54, 0x632E, 0x7D25,
+ 0xED57, 0xED58, 0x3A2A, 0x9008, 0x52CC, 0x3E74, 0x367A, 0x45E9,
+ 0xED5F, 0x7640, 0x5AF0, 0xED62, 0x787A, 0x47B6, 0x58A7, 0x40BF,
+ 0x567C, 0x9B8B, 0x5D74, 0x7654, 0xED6B, 0x9E85, 0x4CE1, 0x75F9,
+ 0x37FB, 0x6119, 0xED71, 0xED72, 0xED73, 0x565D, 0xED75, 0x57A7,
+ 0xED77, 0xED78, 0x5234, 0xED7A, 0x35AD, 0x6C4A, 0x9D7C,
+ /* Big5-HKSCS 0x9F40 .. 0x9F7E */
+ 0x7C56, 0x9B39, 0x57DE, 0xED81, 0x5C53, 0x64D3, 0xED84, 0xED85,
+ 0xED86, 0x86AD, 0xED88, 0xED89, 0xED8A, 0xED8B, 0xED8C, 0x51FE,
+ 0xED8E, 0x5D8E, 0x9703, 0xED91, 0x9E81, 0x904C, 0x7B1F, 0x9B02,
+ 0x5CD1, 0x7BA3, 0x6268, 0x6335, 0x9AFF, 0x7BCF, 0x9B2A, 0x7C7E,
+ 0x9B2E, 0x7C42, 0x7C86, 0x9C15, 0x7BFC, 0x9B09, 0x9F17, 0x9C1B,
+ 0xEDA6, 0x9F5A, 0x5573, 0x5BC3, 0x4FFD, 0x9E98, 0x4FF2, 0x5260,
+ 0x3E06, 0x52D1, 0x5767, 0x5056, 0x59B7, 0x5E12, 0x97C8, 0x9DAB,
+ 0x8F5C, 0x5469, 0x97B4, 0x9940, 0x97BA, 0x532C, 0x6130,
+ /* Big5-HKSCS 0x9FA1 .. 0x9FFE */
+ 0x692C, 0x53DA, 0x9C0A, 0x9D02, 0x4C3B, 0x9641, 0x6980,
+ 0x50A6, 0x7546, 0xEDC6, 0x99DA, 0x5273, 0xEDC9, 0x9159, 0x9681,
+ 0x915C, 0xEDCD, 0x9151, 0xEDCF, 0x637F, 0xEDD1, 0x6ACA, 0x5611,
+ 0x918E, 0x757A, 0x6285, 0xEDD7, 0x734F, 0x7C70, 0xEDDA, 0xEDDB,
+ 0xEDDC, 0xEDDD, 0x76D6, 0x9B9D, 0x4E2A, 0xEDE1, 0x83BE, 0x8842,
+ 0xEDE4, 0x5C4A, 0x69C0, 0x50ED, 0x577A, 0x521F, 0x5DF5, 0x4ECE,
+ 0x6C31, 0xEDED, 0x4F39, 0x549C, 0x54DA, 0x529A, 0x8D82, 0x35FE,
+ 0x5F0C, 0x35F3, 0xEDF6, 0x6B52, 0x917C, 0x9FA5, 0x9B97, 0x982E,
+ 0x98B4, 0x9ABA, 0x9EA8, 0x9E84, 0x717A, 0x7B14, 0xEE02, 0x6BFA,
+ 0x8818, 0x7F78, 0xEE06, 0x5620, 0xEE08, 0x8E77, 0x9F53, 0xEE0B,
+ 0x8DD4, 0x8E4F, 0x9E1C, 0x8E01, 0x6282, 0xEE11, 0x8E28, 0x8E75,
+ 0x7AD3, 0xEE15, 0x7A3E, 0x78D8, 0x6CEA, 0x8A67, 0x7607,
+ /* Big5-HKSCS 0xA040 .. 0xA07E */
+ 0xEE1B, 0x9F26, 0x6CCE, 0x87D6, 0x75C3, 0xEE20, 0x7853, 0xEE22,
+ 0x8D0C, 0x72E2, 0x7371, 0x8B2D, 0x7302, 0x74F1, 0x8CEB, 0xEE2A,
+ 0x862F, 0x5FBA, 0x88A0, 0x44B7, 0xEE2F, 0xEE30, 0xEE31, 0xEE32,
+ 0x8A7E, 0xEE34, 0xEE35, 0x60FD, 0x7667, 0x9AD7, 0x9D44, 0x936E,
+ 0x9B8F, 0x87F5, 0xEE3D, 0x880F, 0x8CF7, 0x732C, 0x9721, 0x9BB0,
+ 0x35D6, 0x72B2, 0x4C07, 0x7C51, 0x994A, 0xEE48, 0x6159, 0x4C04,
+ 0x9E96, 0x617D, 0xEE4D, 0x575F, 0x616F, 0x62A6, 0x6239, 0x62CE,
+ 0x3A5C, 0x61E2, 0x53AA, 0xEE56, 0x6364, 0x6802, 0x35D2,
+ /* Big5-HKSCS 0xA0A1 .. 0xA0FE */
+ 0x5D57, 0xEE5B, 0x8FDA, 0xEE5D, 0xEE5E, 0x50D9, 0xEE60,
+ 0x7906, 0x5332, 0x9638, 0xEE64, 0x4065, 0xEE66, 0x77FE, 0xEE68,
+ 0x7CC2, 0xEE6A, 0x7CDA, 0x7A2D, 0x8066, 0x8063, 0x7D4D, 0x7505,
+ 0x74F2, 0x8994, 0x821A, 0x670C, 0x8062, 0xEE76, 0x805B, 0x74F0,
+ 0x8103, 0x7724, 0x8989, 0xEE7C, 0x7553, 0xEE7E, 0x87A9, 0x87CE,
+ 0x81C8, 0x878C, 0x8A49, 0x8CAD, 0x8B43, 0x772B, 0x74F8, 0x84DA,
+ 0x3635, 0x69B2, 0x8DA6, 0xEE8C, 0x89A9, 0x7468, 0x6DB9, 0x87C1,
+ 0xEE91, 0x74E7, 0x3DDB, 0x7176, 0x60A4, 0x619C, 0x3CD1, 0x7162,
+ 0x6077, 0xEE9A, 0x7F71, 0xEE9C, 0x7250, 0x60E9, 0x4B7E, 0x5220,
+ 0x3C18, 0xEEA2, 0xEEA3, 0xEEA4, 0xEEA5, 0xEEA6, 0xEEA7, 0xEEA8,
+ 0xEEA9, 0xEEAA, 0x5CC1, 0xEEAC, 0xEEAD, 0xEEAE, 0xEEAF, 0xEEB0,
+ 0xEEB1, 0x4562, 0x5B1F, 0xEEB4, 0x9F50, 0x9EA6, 0xEEB7,
+ /* Big5-HKSCS 0xA140 .. 0xA17E */
+ 0x3000, 0xFF0C, 0x3001, 0x3002, 0xFF0E, 0x2027, 0xFF1B, 0xFF1A,
+ 0xFF1F, 0xFF01, 0xFE30, 0x2026, 0x2025, 0xFE50, 0xFE51, 0xFE52,
+ 0x00B7, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFF5C, 0x2013, 0xFE31,
+ 0x2014, 0xFE33, 0x2574, 0xFE34, 0xFE4F, 0xFF08, 0xFF09, 0xFE35,
+ 0xFE36, 0xFF5B, 0xFF5D, 0xFE37, 0xFE38, 0x3014, 0x3015, 0xFE39,
+ 0xFE3A, 0x3010, 0x3011, 0xFE3B, 0xFE3C, 0x300A, 0x300B, 0xFE3D,
+ 0xFE3E, 0x3008, 0x3009, 0xFE3F, 0xFE40, 0x300C, 0x300D, 0xFE41,
+ 0xFE42, 0x300E, 0x300F, 0xFE43, 0xFE44, 0xFE59, 0xFE5A,
+ /* Big5-HKSCS 0xA1A1 .. 0xA1FE */
+ 0xFE5B, 0xFE5C, 0xFE5D, 0xFE5E, 0x2018, 0x2019, 0x201C,
+ 0x201D, 0x301D, 0x301E, 0x2035, 0x2032, 0xFF03, 0xFF06, 0xFF0A,
+ 0x203B, 0x00A7, 0x3003, 0x25CB, 0x25CF, 0x25B3, 0x25B2, 0x25CE,
+ 0x2606, 0x2605, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25BD, 0x25BC,
+ 0x32A3, 0x2105, 0x00AF, 0xFFE3, 0xFF3F, 0x02CD, 0xFE49, 0xFE4A,
+ 0xFE4D, 0xFE4E, 0xFE4B, 0xFE4C, 0xFE5F, 0xFE60, 0xFE61, 0xFF0B,
+ 0xFF0D, 0x00D7, 0x00F7, 0x00B1, 0x221A, 0xFF1C, 0xFF1E, 0xFF1D,
+ 0x2266, 0x2267, 0x2260, 0x221E, 0x2252, 0x2261, 0xFE62, 0xFE63,
+ 0xFE64, 0xFE65, 0xFE66, 0xFF5E, 0x2229, 0x222A, 0x22A5, 0x2220,
+ 0x221F, 0x22BF, 0x33D2, 0x33D1, 0x222B, 0x222E, 0x2235, 0x2234,
+ 0x2640, 0x2642, 0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192,
+ 0x2196, 0x2197, 0x2199, 0x2198, 0x2225, 0x2223, 0xFF0F,
+ /* Big5-HKSCS 0xA240 .. 0xA27E */
+ 0xFF3C, 0x2215, 0xFE68, 0xFF04, 0xFFE5, 0x3012, 0xFFE0, 0xFFE1,
+ 0xFF05, 0xFF20, 0x2103, 0x2109, 0xFE69, 0xFE6A, 0xFE6B, 0x33D5,
+ 0x339C, 0x339D, 0x339E, 0x33CE, 0x33A1, 0x338E, 0x338F, 0x33C4,
+ 0x00B0, 0x5159, 0x515B, 0x515E, 0x515D, 0x5161, 0x5163, 0x55E7,
+ 0x74E9, 0x7CCE, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586,
+ 0x2587, 0x2588, 0x258F, 0x258E, 0x258D, 0x258C, 0x258B, 0x258A,
+ 0x2589, 0x253C, 0x2534, 0x252C, 0x2524, 0x251C, 0x2594, 0x2500,
+ 0x2502, 0x2595, 0x250C, 0x2510, 0x2514, 0x2518, 0x256D,
+ /* Big5-HKSCS 0xA2A1 .. 0xA2FE */
+ 0x256E, 0x2570, 0x256F, 0x2550, 0x255E, 0x256A, 0x2561,
+ 0x25E2, 0x25E3, 0x25E5, 0x25E4, 0x2571, 0x2572, 0x2573, 0xFF10,
+ 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18,
+ 0xFF19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166,
+ 0x2167, 0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025,
+ 0x3026, 0x3027, 0x3028, 0x3029, 0x5341, 0x5344, 0x5345, 0xFF21,
+ 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29,
+ 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31,
+ 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39,
+ 0xFF3A, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47,
+ 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F,
+ 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56,
+ /* Big5-HKSCS 0xA340 .. 0xA37E */
+ 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0x0391, 0x0392, 0x0393, 0x0394,
+ 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C,
+ 0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5,
+ 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03B1, 0x03B2, 0x03B3, 0x03B4,
+ 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC,
+ 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5,
+ 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x3105, 0x3106, 0x3107, 0x3108,
+ 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, 0x310F,
+ /* Big5-HKSCS 0xA3A1 .. 0xA3FE */
+ 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116,
+ 0x3117, 0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E,
+ 0x311F, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126,
+ 0x3127, 0x3128, 0x3129, 0x02D9, 0x02C9, 0x02CA, 0x02C7, 0x02CB,
+ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
+ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
+ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
+ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
+ 0xFFFD, 0x20AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
+ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
+ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
+ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
+ /* Big5-HKSCS 0xA440 .. 0xA47E */
+ 0x4E00, 0x4E59, 0x4E01, 0x4E03, 0x4E43, 0x4E5D, 0x4E86, 0x4E8C,
+ 0x4EBA, 0x513F, 0x5165, 0x516B, 0x51E0, 0x5200, 0x5201, 0x529B,
+ 0x5315, 0x5341, 0x535C, 0x53C8, 0x4E09, 0x4E0B, 0x4E08, 0x4E0A,
+ 0x4E2B, 0x4E38, 0x51E1, 0x4E45, 0x4E48, 0x4E5F, 0x4E5E, 0x4E8E,
+ 0x4EA1, 0x5140, 0x5203, 0x52FA, 0x5343, 0x53C9, 0x53E3, 0x571F,
+ 0x58EB, 0x5915, 0x5927, 0x5973, 0x5B50, 0x5B51, 0x5B53, 0x5BF8,
+ 0x5C0F, 0x5C22, 0x5C38, 0x5C71, 0x5DDD, 0x5DE5, 0x5DF1, 0x5DF2,
+ 0x5DF3, 0x5DFE, 0x5E72, 0x5EFE, 0x5F0B, 0x5F13, 0x624D,
+ /* Big5-HKSCS 0xA4A1 .. 0xA4FE */
+ 0x4E11, 0x4E10, 0x4E0D, 0x4E2D, 0x4E30, 0x4E39, 0x4E4B,
+ 0x5C39, 0x4E88, 0x4E91, 0x4E95, 0x4E92, 0x4E94, 0x4EA2, 0x4EC1,
+ 0x4EC0, 0x4EC3, 0x4EC6, 0x4EC7, 0x4ECD, 0x4ECA, 0x4ECB, 0x4EC4,
+ 0x5143, 0x5141, 0x5167, 0x516D, 0x516E, 0x516C, 0x5197, 0x51F6,
+ 0x5206, 0x5207, 0x5208, 0x52FB, 0x52FE, 0x52FF, 0x5316, 0x5339,
+ 0x5348, 0x5347, 0x5345, 0x535E, 0x5384, 0x53CB, 0x53CA, 0x53CD,
+ 0x58EC, 0x5929, 0x592B, 0x592A, 0x592D, 0x5B54, 0x5C11, 0x5C24,
+ 0x5C3A, 0x5C6F, 0x5DF4, 0x5E7B, 0x5EFF, 0x5F14, 0x5F15, 0x5FC3,
+ 0x6208, 0x6236, 0x624B, 0x624E, 0x652F, 0x6587, 0x6597, 0x65A4,
+ 0x65B9, 0x65E5, 0x66F0, 0x6708, 0x6728, 0x6B20, 0x6B62, 0x6B79,
+ 0x6BCB, 0x6BD4, 0x6BDB, 0x6C0F, 0x6C34, 0x706B, 0x722A, 0x7236,
+ 0x723B, 0x7247, 0x7259, 0x725B, 0x72AC, 0x738B, 0x4E19,
+ /* Big5-HKSCS 0xA540 .. 0xA57E */
+ 0x4E16, 0x4E15, 0x4E14, 0x4E18, 0x4E3B, 0x4E4D, 0x4E4F, 0x4E4E,
+ 0x4EE5, 0x4ED8, 0x4ED4, 0x4ED5, 0x4ED6, 0x4ED7, 0x4EE3, 0x4EE4,
+ 0x4ED9, 0x4EDE, 0x5145, 0x5144, 0x5189, 0x518A, 0x51AC, 0x51F9,
+ 0x51FA, 0x51F8, 0x520A, 0x52A0, 0x529F, 0x5305, 0x5306, 0x5317,
+ 0x531D, 0x4EDF, 0x534A, 0x5349, 0x5361, 0x5360, 0x536F, 0x536E,
+ 0x53BB, 0x53EF, 0x53E4, 0x53F3, 0x53EC, 0x53EE, 0x53E9, 0x53E8,
+ 0x53FC, 0x53F8, 0x53F5, 0x53EB, 0x53E6, 0x53EA, 0x53F2, 0x53F1,
+ 0x53F0, 0x53E5, 0x53ED, 0x53FB, 0x56DB, 0x56DA, 0x5916,
+ /* Big5-HKSCS 0xA5A1 .. 0xA5FE */
+ 0x592E, 0x5931, 0x5974, 0x5976, 0x5B55, 0x5B83, 0x5C3C,
+ 0x5DE8, 0x5DE7, 0x5DE6, 0x5E02, 0x5E03, 0x5E73, 0x5E7C, 0x5F01,
+ 0x5F18, 0x5F17, 0x5FC5, 0x620A, 0x6253, 0x6254, 0x6252, 0x6251,
+ 0x65A5, 0x65E6, 0x672E, 0x672C, 0x672A, 0x672B, 0x672D, 0x6B63,
+ 0x6BCD, 0x6C11, 0x6C10, 0x6C38, 0x6C41, 0x6C40, 0x6C3E, 0x72AF,
+ 0x7384, 0x7389, 0x74DC, 0x74E6, 0x7518, 0x751F, 0x7528, 0x7529,
+ 0x7530, 0x7531, 0x7532, 0x7533, 0x758B, 0x767D, 0x76AE, 0x76BF,
+ 0x76EE, 0x77DB, 0x77E2, 0x77F3, 0x793A, 0x79BE, 0x7A74, 0x7ACB,
+ 0x4E1E, 0x4E1F, 0x4E52, 0x4E53, 0x4E69, 0x4E99, 0x4EA4, 0x4EA6,
+ 0x4EA5, 0x4EFF, 0x4F09, 0x4F19, 0x4F0A, 0x4F15, 0x4F0D, 0x4F10,
+ 0x4F11, 0x4F0F, 0x4EF2, 0x4EF6, 0x4EFB, 0x4EF0, 0x4EF3, 0x4EFD,
+ 0x4F01, 0x4F0B, 0x5149, 0x5147, 0x5146, 0x5148, 0x5168,
+ /* Big5-HKSCS 0xA640 .. 0xA67E */
+ 0x5171, 0x518D, 0x51B0, 0x5217, 0x5211, 0x5212, 0x520E, 0x5216,
+ 0x52A3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540F,
+ 0x540C, 0x540A, 0x5410, 0x5401, 0x540B, 0x5404, 0x5411, 0x540D,
+ 0x5408, 0x5403, 0x540E, 0x5406, 0x5412, 0x56E0, 0x56DE, 0x56DD,
+ 0x5733, 0x5730, 0x5728, 0x572D, 0x572C, 0x572F, 0x5729, 0x5919,
+ 0x591A, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597D, 0x5979,
+ 0x5982, 0x5981, 0x5B57, 0x5B58, 0x5B87, 0x5B88, 0x5B85, 0x5B89,
+ 0x5BFA, 0x5C16, 0x5C79, 0x5DDE, 0x5E06, 0x5E76, 0x5E74,
+ /* Big5-HKSCS 0xA6A1 .. 0xA6FE */
+ 0x5F0F, 0x5F1B, 0x5FD9, 0x5FD6, 0x620E, 0x620C, 0x620D,
+ 0x6210, 0x6263, 0x625B, 0x6258, 0x6536, 0x65E9, 0x65E8, 0x65EC,
+ 0x65ED, 0x66F2, 0x66F3, 0x6709, 0x673D, 0x6734, 0x6731, 0x6735,
+ 0x6B21, 0x6B64, 0x6B7B, 0x6C16, 0x6C5D, 0x6C57, 0x6C59, 0x6C5F,
+ 0x6C60, 0x6C50, 0x6C55, 0x6C61, 0x6C5B, 0x6C4D, 0x6C4E, 0x7070,
+ 0x725F, 0x725D, 0x767E, 0x7AF9, 0x7C73, 0x7CF8, 0x7F36, 0x7F8A,
+ 0x7FBD, 0x8001, 0x8003, 0x800C, 0x8012, 0x8033, 0x807F, 0x8089,
+ 0x808B, 0x808C, 0x81E3, 0x81EA, 0x81F3, 0x81FC, 0x820C, 0x821B,
+ 0x821F, 0x826E, 0x8272, 0x827E, 0x866B, 0x8840, 0x884C, 0x8863,
+ 0x897F, 0x9621, 0x4E32, 0x4EA8, 0x4F4D, 0x4F4F, 0x4F47, 0x4F57,
+ 0x4F5E, 0x4F34, 0x4F5B, 0x4F55, 0x4F30, 0x4F50, 0x4F51, 0x4F3D,
+ 0x4F3A, 0x4F38, 0x4F43, 0x4F54, 0x4F3C, 0x4F46, 0x4F63,
+ /* Big5-HKSCS 0xA740 .. 0xA77E */
+ 0x4F5C, 0x4F60, 0x4F2F, 0x4F4E, 0x4F36, 0x4F59, 0x4F5D, 0x4F48,
+ 0x4F5A, 0x514C, 0x514B, 0x514D, 0x5175, 0x51B6, 0x51B7, 0x5225,
+ 0x5224, 0x5229, 0x522A, 0x5228, 0x52AB, 0x52A9, 0x52AA, 0x52AC,
+ 0x5323, 0x5373, 0x5375, 0x541D, 0x542D, 0x541E, 0x543E, 0x5426,
+ 0x544E, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541B,
+ 0x5429, 0x544A, 0x5439, 0x543B, 0x5438, 0x542E, 0x5435, 0x5436,
+ 0x5420, 0x543C, 0x5440, 0x5431, 0x542B, 0x541F, 0x542C, 0x56EA,
+ 0x56F0, 0x56E4, 0x56EB, 0x574A, 0x5751, 0x5740, 0x574D,
+ /* Big5-HKSCS 0xA7A1 .. 0xA7FE */
+ 0x5747, 0x574E, 0x573E, 0x5750, 0x574F, 0x573B, 0x58EF,
+ 0x593E, 0x599D, 0x5992, 0x59A8, 0x599E, 0x59A3, 0x5999, 0x5996,
+ 0x598D, 0x59A4, 0x5993, 0x598A, 0x59A5, 0x5B5D, 0x5B5C, 0x5B5A,
+ 0x5B5B, 0x5B8C, 0x5B8B, 0x5B8F, 0x5C2C, 0x5C40, 0x5C41, 0x5C3F,
+ 0x5C3E, 0x5C90, 0x5C91, 0x5C94, 0x5C8C, 0x5DEB, 0x5E0C, 0x5E8F,
+ 0x5E87, 0x5E8A, 0x5EF7, 0x5F04, 0x5F1F, 0x5F64, 0x5F62, 0x5F77,
+ 0x5F79, 0x5FD8, 0x5FCC, 0x5FD7, 0x5FCD, 0x5FF1, 0x5FEB, 0x5FF8,
+ 0x5FEA, 0x6212, 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276,
+ 0x6289, 0x626D, 0x628A, 0x627C, 0x627E, 0x6279, 0x6273, 0x6292,
+ 0x626F, 0x6298, 0x626E, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539,
+ 0x653B, 0x6538, 0x65F1, 0x66F4, 0x675F, 0x674E, 0x674F, 0x6750,
+ 0x6751, 0x675C, 0x6756, 0x675E, 0x6749, 0x6746, 0x6760,
+ /* Big5-HKSCS 0xA840 .. 0xA87E */
+ 0x6753, 0x6757, 0x6B65, 0x6BCF, 0x6C42, 0x6C5E, 0x6C99, 0x6C81,
+ 0x6C88, 0x6C89, 0x6C85, 0x6C9B, 0x6C6A, 0x6C7A, 0x6C90, 0x6C70,
+ 0x6C8C, 0x6C68, 0x6C96, 0x6C92, 0x6C7D, 0x6C83, 0x6C72, 0x6C7E,
+ 0x6C74, 0x6C86, 0x6C76, 0x6C8D, 0x6C94, 0x6C98, 0x6C82, 0x7076,
+ 0x707C, 0x707D, 0x7078, 0x7262, 0x7261, 0x7260, 0x72C4, 0x72C2,
+ 0x7396, 0x752C, 0x752B, 0x7537, 0x7538, 0x7682, 0x76EF, 0x77E3,
+ 0x79C1, 0x79C0, 0x79BF, 0x7A76, 0x7CFB, 0x7F55, 0x8096, 0x8093,
+ 0x809D, 0x8098, 0x809B, 0x809A, 0x80B2, 0x826F, 0x8292,
+ /* Big5-HKSCS 0xA8A1 .. 0xA8FE */
+ 0x828B, 0x828D, 0x898B, 0x89D2, 0x8A00, 0x8C37, 0x8C46,
+ 0x8C55, 0x8C9D, 0x8D64, 0x8D70, 0x8DB3, 0x8EAB, 0x8ECA, 0x8F9B,
+ 0x8FB0, 0x8FC2, 0x8FC6, 0x8FC5, 0x8FC4, 0x5DE1, 0x9091, 0x90A2,
+ 0x90AA, 0x90A6, 0x90A3, 0x9149, 0x91C6, 0x91CC, 0x9632, 0x962E,
+ 0x9631, 0x962A, 0x962C, 0x4E26, 0x4E56, 0x4E73, 0x4E8B, 0x4E9B,
+ 0x4E9E, 0x4EAB, 0x4EAC, 0x4F6F, 0x4F9D, 0x4F8D, 0x4F73, 0x4F7F,
+ 0x4F6C, 0x4F9B, 0x4F8B, 0x4F86, 0x4F83, 0x4F70, 0x4F75, 0x4F88,
+ 0x4F69, 0x4F7B, 0x4F96, 0x4F7E, 0x4F8F, 0x4F91, 0x4F7A, 0x5154,
+ 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51BD, 0x51FD,
+ 0x523B, 0x5238, 0x5237, 0x523A, 0x5230, 0x522E, 0x5236, 0x5241,
+ 0x52BE, 0x52BB, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377,
+ 0x5378, 0x5379, 0x53D6, 0x53D4, 0x53D7, 0x5473, 0x5475,
+ /* Big5-HKSCS 0xA940 .. 0xA97E */
+ 0x5496, 0x5478, 0x5495, 0x5480, 0x547B, 0x5477, 0x5484, 0x5492,
+ 0x5486, 0x547C, 0x5490, 0x5471, 0x5476, 0x548C, 0x549A, 0x5462,
+ 0x5468, 0x548B, 0x547D, 0x548E, 0x56FA, 0x5783, 0x5777, 0x576A,
+ 0x5769, 0x5761, 0x5766, 0x5764, 0x577C, 0x591C, 0x5949, 0x5947,
+ 0x5948, 0x5944, 0x5954, 0x59BE, 0x59BB, 0x59D4, 0x59B9, 0x59AE,
+ 0x59D1, 0x59C6, 0x59D0, 0x59CD, 0x59CB, 0x59D3, 0x59CA, 0x59AF,
+ 0x59B3, 0x59D2, 0x59C5, 0x5B5F, 0x5B64, 0x5B63, 0x5B97, 0x5B9A,
+ 0x5B98, 0x5B9C, 0x5B99, 0x5B9B, 0x5C1A, 0x5C48, 0x5C45,
+ /* Big5-HKSCS 0xA9A1 .. 0xA9FE */
+ 0x5C46, 0x5CB7, 0x5CA1, 0x5CB8, 0x5CA9, 0x5CAB, 0x5CB1,
+ 0x5CB3, 0x5E18, 0x5E1A, 0x5E16, 0x5E15, 0x5E1B, 0x5E11, 0x5E78,
+ 0x5E9A, 0x5E97, 0x5E9C, 0x5E95, 0x5E96, 0x5EF6, 0x5F26, 0x5F27,
+ 0x5F29, 0x5F80, 0x5F81, 0x5F7F, 0x5F7C, 0x5FDD, 0x5FE0, 0x5FFD,
+ 0x5FF5, 0x5FFF, 0x600F, 0x6014, 0x602F, 0x6035, 0x6016, 0x602A,
+ 0x6015, 0x6021, 0x6027, 0x6029, 0x602B, 0x601B, 0x6216, 0x6215,
+ 0x623F, 0x623E, 0x6240, 0x627F, 0x62C9, 0x62CC, 0x62C4, 0x62BF,
+ 0x62C2, 0x62B9, 0x62D2, 0x62DB, 0x62AB, 0x62D3, 0x62D4, 0x62CB,
+ 0x62C8, 0x62A8, 0x62BD, 0x62BC, 0x62D0, 0x62D9, 0x62C7, 0x62CD,
+ 0x62B5, 0x62DA, 0x62B1, 0x62D8, 0x62D6, 0x62D7, 0x62C6, 0x62AC,
+ 0x62CE, 0x653E, 0x65A7, 0x65BC, 0x65FA, 0x6614, 0x6613, 0x660C,
+ 0x6606, 0x6602, 0x660E, 0x6600, 0x660F, 0x6615, 0x660A,
+ /* Big5-HKSCS 0xAA40 .. 0xAA7E */
+ 0x6607, 0x670D, 0x670B, 0x676D, 0x678B, 0x6795, 0x6771, 0x679C,
+ 0x6773, 0x6777, 0x6787, 0x679D, 0x6797, 0x676F, 0x6770, 0x677F,
+ 0x6789, 0x677E, 0x6790, 0x6775, 0x679A, 0x6793, 0x677C, 0x676A,
+ 0x6772, 0x6B23, 0x6B66, 0x6B67, 0x6B7F, 0x6C13, 0x6C1B, 0x6CE3,
+ 0x6CE8, 0x6CF3, 0x6CB1, 0x6CCC, 0x6CE5, 0x6CB3, 0x6CBD, 0x6CBE,
+ 0x6CBC, 0x6CE2, 0x6CAB, 0x6CD5, 0x6CD3, 0x6CB8, 0x6CC4, 0x6CB9,
+ 0x6CC1, 0x6CAE, 0x6CD7, 0x6CC5, 0x6CF1, 0x6CBF, 0x6CBB, 0x6CE1,
+ 0x6CDB, 0x6CCA, 0x6CAC, 0x6CEF, 0x6CDC, 0x6CD6, 0x6CE0,
+ /* Big5-HKSCS 0xAAA1 .. 0xAAFE */
+ 0x7095, 0x708E, 0x7092, 0x708A, 0x7099, 0x722C, 0x722D,
+ 0x7238, 0x7248, 0x7267, 0x7269, 0x72C0, 0x72CE, 0x72D9, 0x72D7,
+ 0x72D0, 0x73A9, 0x73A8, 0x739F, 0x73AB, 0x73A5, 0x753D, 0x759D,
+ 0x7599, 0x759A, 0x7684, 0x76C2, 0x76F2, 0x76F4, 0x77E5, 0x77FD,
+ 0x793E, 0x7940, 0x7941, 0x79C9, 0x79C8, 0x7A7A, 0x7A79, 0x7AFA,
+ 0x7CFE, 0x7F54, 0x7F8C, 0x7F8B, 0x8005, 0x80BA, 0x80A5, 0x80A2,
+ 0x80B1, 0x80A1, 0x80AB, 0x80A9, 0x80B4, 0x80AA, 0x80AF, 0x81E5,
+ 0x81FE, 0x820D, 0x82B3, 0x829D, 0x8299, 0x82AD, 0x82BD, 0x829F,
+ 0x82B9, 0x82B1, 0x82AC, 0x82A5, 0x82AF, 0x82B8, 0x82A3, 0x82B0,
+ 0x82BE, 0x82B7, 0x864E, 0x8671, 0x521D, 0x8868, 0x8ECB, 0x8FCE,
+ 0x8FD4, 0x8FD1, 0x90B5, 0x90B8, 0x90B1, 0x90B6, 0x91C7, 0x91D1,
+ 0x9577, 0x9580, 0x961C, 0x9640, 0x963F, 0x963B, 0x9644,
+ /* Big5-HKSCS 0xAB40 .. 0xAB7E */
+ 0x9642, 0x96B9, 0x96E8, 0x9752, 0x975E, 0x4E9F, 0x4EAD, 0x4EAE,
+ 0x4FE1, 0x4FB5, 0x4FAF, 0x4FBF, 0x4FE0, 0x4FD1, 0x4FCF, 0x4FDD,
+ 0x4FC3, 0x4FB6, 0x4FD8, 0x4FDF, 0x4FCA, 0x4FD7, 0x4FAE, 0x4FD0,
+ 0x4FC4, 0x4FC2, 0x4FDA, 0x4FCE, 0x4FDE, 0x4FB7, 0x5157, 0x5192,
+ 0x5191, 0x51A0, 0x524E, 0x5243, 0x524A, 0x524D, 0x524C, 0x524B,
+ 0x5247, 0x52C7, 0x52C9, 0x52C3, 0x52C1, 0x530D, 0x5357, 0x537B,
+ 0x539A, 0x53DB, 0x54AC, 0x54C0, 0x54A8, 0x54CE, 0x54C9, 0x54B8,
+ 0x54A6, 0x54B3, 0x54C7, 0x54C2, 0x54BD, 0x54AA, 0x54C1,
+ /* Big5-HKSCS 0xABA1 .. 0xABFE */
+ 0x54C4, 0x54C8, 0x54AF, 0x54AB, 0x54B1, 0x54BB, 0x54A9,
+ 0x54A7, 0x54BF, 0x56FF, 0x5782, 0x578B, 0x57A0, 0x57A3, 0x57A2,
+ 0x57CE, 0x57AE, 0x5793, 0x5955, 0x5951, 0x594F, 0x594E, 0x5950,
+ 0x59DC, 0x59D8, 0x59FF, 0x59E3, 0x59E8, 0x5A03, 0x59E5, 0x59EA,
+ 0x59DA, 0x59E6, 0x5A01, 0x59FB, 0x5B69, 0x5BA3, 0x5BA6, 0x5BA4,
+ 0x5BA2, 0x5BA5, 0x5C01, 0x5C4E, 0x5C4F, 0x5C4D, 0x5C4B, 0x5CD9,
+ 0x5CD2, 0x5DF7, 0x5E1D, 0x5E25, 0x5E1F, 0x5E7D, 0x5EA0, 0x5EA6,
+ 0x5EFA, 0x5F08, 0x5F2D, 0x5F65, 0x5F88, 0x5F85, 0x5F8A, 0x5F8B,
+ 0x5F87, 0x5F8C, 0x5F89, 0x6012, 0x601D, 0x6020, 0x6025, 0x600E,
+ 0x6028, 0x604D, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606C,
+ 0x606B, 0x606A, 0x6064, 0x6241, 0x62DC, 0x6316, 0x6309, 0x62FC,
+ 0x62ED, 0x6301, 0x62EE, 0x62FD, 0x6307, 0x62F1, 0x62F7,
+ /* Big5-HKSCS 0xAC40 .. 0xAC7E */
+ 0x62EF, 0x62EC, 0x62FE, 0x62F4, 0x6311, 0x6302, 0x653F, 0x6545,
+ 0x65AB, 0x65BD, 0x65E2, 0x6625, 0x662D, 0x6620, 0x6627, 0x662F,
+ 0x661F, 0x6628, 0x6631, 0x6624, 0x66F7, 0x67FF, 0x67D3, 0x67F1,
+ 0x67D4, 0x67D0, 0x67EC, 0x67B6, 0x67AF, 0x67F5, 0x67E9, 0x67EF,
+ 0x67C4, 0x67D1, 0x67B4, 0x67DA, 0x67E5, 0x67B8, 0x67CF, 0x67DE,
+ 0x67F3, 0x67B0, 0x67D9, 0x67E2, 0x67DD, 0x67D2, 0x6B6A, 0x6B83,
+ 0x6B86, 0x6BB5, 0x6BD2, 0x6BD7, 0x6C1F, 0x6CC9, 0x6D0B, 0x6D32,
+ 0x6D2A, 0x6D41, 0x6D25, 0x6D0C, 0x6D31, 0x6D1E, 0x6D17,
+ /* Big5-HKSCS 0xACA1 .. 0xACFE */
+ 0x6D3B, 0x6D3D, 0x6D3E, 0x6D36, 0x6D1B, 0x6CF5, 0x6D39,
+ 0x6D27, 0x6D38, 0x6D29, 0x6D2E, 0x6D35, 0x6D0E, 0x6D2B, 0x70AB,
+ 0x70BA, 0x70B3, 0x70AC, 0x70AF, 0x70AD, 0x70B8, 0x70AE, 0x70A4,
+ 0x7230, 0x7272, 0x726F, 0x7274, 0x72E9, 0x72E0, 0x72E1, 0x73B7,
+ 0x73CA, 0x73BB, 0x73B2, 0x73CD, 0x73C0, 0x73B3, 0x751A, 0x752D,
+ 0x754F, 0x754C, 0x754E, 0x754B, 0x75AB, 0x75A4, 0x75A5, 0x75A2,
+ 0x75A3, 0x7678, 0x7686, 0x7687, 0x7688, 0x76C8, 0x76C6, 0x76C3,
+ 0x76C5, 0x7701, 0x76F9, 0x76F8, 0x7709, 0x770B, 0x76FE, 0x76FC,
+ 0x7707, 0x77DC, 0x7802, 0x7814, 0x780C, 0x780D, 0x7946, 0x7949,
+ 0x7948, 0x7947, 0x79B9, 0x79BA, 0x79D1, 0x79D2, 0x79CB, 0x7A7F,
+ 0x7A81, 0x7AFF, 0x7AFD, 0x7C7D, 0x7D02, 0x7D05, 0x7D00, 0x7D09,
+ 0x7D07, 0x7D04, 0x7D06, 0x7F38, 0x7F8E, 0x7FBF, 0x8004,
+ /* Big5-HKSCS 0xAD40 .. 0xAD7E */
+ 0x8010, 0x800D, 0x8011, 0x8036, 0x80D6, 0x80E5, 0x80DA, 0x80C3,
+ 0x80C4, 0x80CC, 0x80E1, 0x80DB, 0x80CE, 0x80DE, 0x80E4, 0x80DD,
+ 0x81F4, 0x8222, 0x82E7, 0x8303, 0x8305, 0x82E3, 0x82DB, 0x82E6,
+ 0x8304, 0x82E5, 0x8302, 0x8309, 0x82D2, 0x82D7, 0x82F1, 0x8301,
+ 0x82DC, 0x82D4, 0x82D1, 0x82DE, 0x82D3, 0x82DF, 0x82EF, 0x8306,
+ 0x8650, 0x8679, 0x867B, 0x867A, 0x884D, 0x886B, 0x8981, 0x89D4,
+ 0x8A08, 0x8A02, 0x8A03, 0x8C9E, 0x8CA0, 0x8D74, 0x8D73, 0x8DB4,
+ 0x8ECD, 0x8ECC, 0x8FF0, 0x8FE6, 0x8FE2, 0x8FEA, 0x8FE5,
+ /* Big5-HKSCS 0xADA1 .. 0xADFE */
+ 0x8FED, 0x8FEB, 0x8FE4, 0x8FE8, 0x90CA, 0x90CE, 0x90C1,
+ 0x90C3, 0x914B, 0x914A, 0x91CD, 0x9582, 0x9650, 0x964B, 0x964C,
+ 0x964D, 0x9762, 0x9769, 0x97CB, 0x97ED, 0x97F3, 0x9801, 0x98A8,
+ 0x98DB, 0x98DF, 0x9996, 0x9999, 0x4E58, 0x4EB3, 0x500C, 0x500D,
+ 0x5023, 0x4FEF, 0x5026, 0x5025, 0x4FF8, 0x5029, 0x5016, 0x5006,
+ 0x503C, 0x501F, 0x501A, 0x5012, 0x5011, 0x4FFA, 0x5000, 0x5014,
+ 0x5028, 0x4FF1, 0x5021, 0x500B, 0x5019, 0x5018, 0x4FF3, 0x4FEE,
+ 0x502D, 0x502A, 0x4FFE, 0x502B, 0x5009, 0x517C, 0x51A4, 0x51A5,
+ 0x51A2, 0x51CD, 0x51CC, 0x51C6, 0x51CB, 0x5256, 0x525C, 0x5254,
+ 0x525B, 0x525D, 0x532A, 0x537F, 0x539F, 0x539D, 0x53DF, 0x54E8,
+ 0x5510, 0x5501, 0x5537, 0x54FC, 0x54E5, 0x54F2, 0x5506, 0x54FA,
+ 0x5514, 0x54E9, 0x54ED, 0x54E1, 0x5509, 0x54EE, 0x54EA,
+ /* Big5-HKSCS 0xAE40 .. 0xAE7E */
+ 0x54E6, 0x5527, 0x5507, 0x54FD, 0x550F, 0x5703, 0x5704, 0x57C2,
+ 0x57D4, 0x57CB, 0x57C3, 0x5809, 0x590F, 0x5957, 0x5958, 0x595A,
+ 0x5A11, 0x5A18, 0x5A1C, 0x5A1F, 0x5A1B, 0x5A13, 0x59EC, 0x5A20,
+ 0x5A23, 0x5A29, 0x5A25, 0x5A0C, 0x5A09, 0x5B6B, 0x5C58, 0x5BB0,
+ 0x5BB3, 0x5BB6, 0x5BB4, 0x5BAE, 0x5BB5, 0x5BB9, 0x5BB8, 0x5C04,
+ 0x5C51, 0x5C55, 0x5C50, 0x5CED, 0x5CFD, 0x5CFB, 0x5CEA, 0x5CE8,
+ 0x5CF0, 0x5CF6, 0x5D01, 0x5CF4, 0x5DEE, 0x5E2D, 0x5E2B, 0x5EAB,
+ 0x5EAD, 0x5EA7, 0x5F31, 0x5F92, 0x5F91, 0x5F90, 0x6059,
+ /* Big5-HKSCS 0xAEA1 .. 0xAEFE */
+ 0x6063, 0x6065, 0x6050, 0x6055, 0x606D, 0x6069, 0x606F,
+ 0x6084, 0x609F, 0x609A, 0x608D, 0x6094, 0x608C, 0x6085, 0x6096,
+ 0x6247, 0x62F3, 0x6308, 0x62FF, 0x634E, 0x633E, 0x632F, 0x6355,
+ 0x6342, 0x6346, 0x634F, 0x6349, 0x633A, 0x6350, 0x633D, 0x632A,
+ 0x632B, 0x6328, 0x634D, 0x634C, 0x6548, 0x6549, 0x6599, 0x65C1,
+ 0x65C5, 0x6642, 0x6649, 0x664F, 0x6643, 0x6652, 0x664C, 0x6645,
+ 0x6641, 0x66F8, 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848,
+ 0x6846, 0x6853, 0x6839, 0x6842, 0x6854, 0x6829, 0x68B3, 0x6817,
+ 0x684C, 0x6851, 0x683D, 0x67F4, 0x6850, 0x6840, 0x683C, 0x6843,
+ 0x682A, 0x6845, 0x6813, 0x6818, 0x6841, 0x6B8A, 0x6B89, 0x6BB7,
+ 0x6C23, 0x6C27, 0x6C28, 0x6C26, 0x6C24, 0x6CF0, 0x6D6A, 0x6D95,
+ 0x6D88, 0x6D87, 0x6D66, 0x6D78, 0x6D77, 0x6D59, 0x6D93,
+ /* Big5-HKSCS 0xAF40 .. 0xAF7E */
+ 0x6D6C, 0x6D89, 0x6D6E, 0x6D5A, 0x6D74, 0x6D69, 0x6D8C, 0x6D8A,
+ 0x6D79, 0x6D85, 0x6D65, 0x6D94, 0x70CA, 0x70D8, 0x70E4, 0x70D9,
+ 0x70C8, 0x70CF, 0x7239, 0x7279, 0x72FC, 0x72F9, 0x72FD, 0x72F8,
+ 0x72F7, 0x7386, 0x73ED, 0x7409, 0x73EE, 0x73E0, 0x73EA, 0x73DE,
+ 0x7554, 0x755D, 0x755C, 0x755A, 0x7559, 0x75BE, 0x75C5, 0x75C7,
+ 0x75B2, 0x75B3, 0x75BD, 0x75BC, 0x75B9, 0x75C2, 0x75B8, 0x768B,
+ 0x76B0, 0x76CA, 0x76CD, 0x76CE, 0x7729, 0x771F, 0x7720, 0x7728,
+ 0x77E9, 0x7830, 0x7827, 0x7838, 0x781D, 0x7834, 0x7837,
+ /* Big5-HKSCS 0xAFA1 .. 0xAFFE */
+ 0x7825, 0x782D, 0x7820, 0x781F, 0x7832, 0x7955, 0x7950,
+ 0x7960, 0x795F, 0x7956, 0x795E, 0x795D, 0x7957, 0x795A, 0x79E4,
+ 0x79E3, 0x79E7, 0x79DF, 0x79E6, 0x79E9, 0x79D8, 0x7A84, 0x7A88,
+ 0x7AD9, 0x7B06, 0x7B11, 0x7C89, 0x7D21, 0x7D17, 0x7D0B, 0x7D0A,
+ 0x7D20, 0x7D22, 0x7D14, 0x7D10, 0x7D15, 0x7D1A, 0x7D1C, 0x7D0D,
+ 0x7D19, 0x7D1B, 0x7F3A, 0x7F5F, 0x7F94, 0x7FC5, 0x7FC1, 0x8006,
+ 0x8018, 0x8015, 0x8019, 0x8017, 0x803D, 0x803F, 0x80F1, 0x8102,
+ 0x80F0, 0x8105, 0x80ED, 0x80F4, 0x8106, 0x80F8, 0x80F3, 0x8108,
+ 0x80FD, 0x810A, 0x80FC, 0x80EF, 0x81ED, 0x81EC, 0x8200, 0x8210,
+ 0x822A, 0x822B, 0x8228, 0x822C, 0x82BB, 0x832B, 0x8352, 0x8354,
+ 0x834A, 0x8338, 0x8350, 0x8349, 0x8335, 0x8334, 0x834F, 0x8332,
+ 0x8339, 0x8336, 0x8317, 0x8340, 0x8331, 0x8328, 0x8343,
+ /* Big5-HKSCS 0xB040 .. 0xB07E */
+ 0x8654, 0x868A, 0x86AA, 0x8693, 0x86A4, 0x86A9, 0x868C, 0x86A3,
+ 0x869C, 0x8870, 0x8877, 0x8881, 0x8882, 0x887D, 0x8879, 0x8A18,
+ 0x8A10, 0x8A0E, 0x8A0C, 0x8A15, 0x8A0A, 0x8A17, 0x8A13, 0x8A16,
+ 0x8A0F, 0x8A11, 0x8C48, 0x8C7A, 0x8C79, 0x8CA1, 0x8CA2, 0x8D77,
+ 0x8EAC, 0x8ED2, 0x8ED4, 0x8ECF, 0x8FB1, 0x9001, 0x9006, 0x8FF7,
+ 0x9000, 0x8FFA, 0x8FF4, 0x9003, 0x8FFD, 0x9005, 0x8FF8, 0x9095,
+ 0x90E1, 0x90DD, 0x90E2, 0x9152, 0x914D, 0x914C, 0x91D8, 0x91DD,
+ 0x91D7, 0x91DC, 0x91D9, 0x9583, 0x9662, 0x9663, 0x9661,
+ /* Big5-HKSCS 0xB0A1 .. 0xB0FE */
+ 0x965B, 0x965D, 0x9664, 0x9658, 0x965E, 0x96BB, 0x98E2,
+ 0x99AC, 0x9AA8, 0x9AD8, 0x9B25, 0x9B32, 0x9B3C, 0x4E7E, 0x507A,
+ 0x507D, 0x505C, 0x5047, 0x5043, 0x504C, 0x505A, 0x5049, 0x5065,
+ 0x5076, 0x504E, 0x5055, 0x5075, 0x5074, 0x5077, 0x504F, 0x500F,
+ 0x506F, 0x506D, 0x515C, 0x5195, 0x51F0, 0x526A, 0x526F, 0x52D2,
+ 0x52D9, 0x52D8, 0x52D5, 0x5310, 0x530F, 0x5319, 0x533F, 0x5340,
+ 0x533E, 0x53C3, 0x66FC, 0x5546, 0x556A, 0x5566, 0x5544, 0x555E,
+ 0x5561, 0x5543, 0x554A, 0x5531, 0x5556, 0x554F, 0x5555, 0x552F,
+ 0x5564, 0x5538, 0x552E, 0x555C, 0x552C, 0x5563, 0x5533, 0x5541,
+ 0x5557, 0x5708, 0x570B, 0x5709, 0x57DF, 0x5805, 0x580A, 0x5806,
+ 0x57E0, 0x57E4, 0x57FA, 0x5802, 0x5835, 0x57F7, 0x57F9, 0x5920,
+ 0x5962, 0x5A36, 0x5A41, 0x5A49, 0x5A66, 0x5A6A, 0x5A40,
+ /* Big5-HKSCS 0xB140 .. 0xB17E */
+ 0x5A3C, 0x5A62, 0x5A5A, 0x5A46, 0x5A4A, 0x5B70, 0x5BC7, 0x5BC5,
+ 0x5BC4, 0x5BC2, 0x5BBF, 0x5BC6, 0x5C09, 0x5C08, 0x5C07, 0x5C60,
+ 0x5C5C, 0x5C5D, 0x5D07, 0x5D06, 0x5D0E, 0x5D1B, 0x5D16, 0x5D22,
+ 0x5D11, 0x5D29, 0x5D14, 0x5D19, 0x5D24, 0x5D27, 0x5D17, 0x5DE2,
+ 0x5E38, 0x5E36, 0x5E33, 0x5E37, 0x5EB7, 0x5EB8, 0x5EB6, 0x5EB5,
+ 0x5EBE, 0x5F35, 0x5F37, 0x5F57, 0x5F6C, 0x5F69, 0x5F6B, 0x5F97,
+ 0x5F99, 0x5F9E, 0x5F98, 0x5FA1, 0x5FA0, 0x5F9C, 0x607F, 0x60A3,
+ 0x6089, 0x60A0, 0x60A8, 0x60CB, 0x60B4, 0x60E6, 0x60BD,
+ /* Big5-HKSCS 0xB1A1 .. 0xB1FE */
+ 0x60C5, 0x60BB, 0x60B5, 0x60DC, 0x60BC, 0x60D8, 0x60D5,
+ 0x60C6, 0x60DF, 0x60B8, 0x60DA, 0x60C7, 0x621A, 0x621B, 0x6248,
+ 0x63A0, 0x63A7, 0x6372, 0x6396, 0x63A2, 0x63A5, 0x6377, 0x6367,
+ 0x6398, 0x63AA, 0x6371, 0x63A9, 0x6389, 0x6383, 0x639B, 0x636B,
+ 0x63A8, 0x6384, 0x6388, 0x6399, 0x63A1, 0x63AC, 0x6392, 0x638F,
+ 0x6380, 0x637B, 0x6369, 0x6368, 0x637A, 0x655D, 0x6556, 0x6551,
+ 0x6559, 0x6557, 0x555F, 0x654F, 0x6558, 0x6555, 0x6554, 0x659C,
+ 0x659B, 0x65AC, 0x65CF, 0x65CB, 0x65CC, 0x65CE, 0x665D, 0x665A,
+ 0x6664, 0x6668, 0x6666, 0x665E, 0x66F9, 0x52D7, 0x671B, 0x6881,
+ 0x68AF, 0x68A2, 0x6893, 0x68B5, 0x687F, 0x6876, 0x68B1, 0x68A7,
+ 0x6897, 0x68B0, 0x6883, 0x68C4, 0x68AD, 0x6886, 0x6885, 0x6894,
+ 0x689D, 0x68A8, 0x689F, 0x68A1, 0x6882, 0x6B32, 0x6BBA,
+ /* Big5-HKSCS 0xB240 .. 0xB27E */
+ 0x6BEB, 0x6BEC, 0x6C2B, 0x6D8E, 0x6DBC, 0x6DF3, 0x6DD9, 0x6DB2,
+ 0x6DE1, 0x6DCC, 0x6DE4, 0x6DFB, 0x6DFA, 0x6E05, 0x6DC7, 0x6DCB,
+ 0x6DAF, 0x6DD1, 0x6DAE, 0x6DDE, 0x6DF9, 0x6DB8, 0x6DF7, 0x6DF5,
+ 0x6DC5, 0x6DD2, 0x6E1A, 0x6DB5, 0x6DDA, 0x6DEB, 0x6DD8, 0x6DEA,
+ 0x6DF1, 0x6DEE, 0x6DE8, 0x6DC6, 0x6DC4, 0x6DAA, 0x6DEC, 0x6DBF,
+ 0x6DE6, 0x70F9, 0x7109, 0x710A, 0x70FD, 0x70EF, 0x723D, 0x727D,
+ 0x7281, 0x731C, 0x731B, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405,
+ 0x740A, 0x7403, 0x7406, 0x73FE, 0x740D, 0x74E0, 0x74F6,
+ /* Big5-HKSCS 0xB2A1 .. 0xB2FE */
+ 0x74F7, 0x751C, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570,
+ 0x758F, 0x75D4, 0x75D5, 0x75B5, 0x75CA, 0x75CD, 0x768E, 0x76D4,
+ 0x76D2, 0x76DB, 0x7737, 0x773E, 0x773C, 0x7736, 0x7738, 0x773A,
+ 0x786B, 0x7843, 0x784E, 0x7965, 0x7968, 0x796D, 0x79FB, 0x7A92,
+ 0x7A95, 0x7B20, 0x7B28, 0x7B1B, 0x7B2C, 0x7B26, 0x7B19, 0x7B1E,
+ 0x7B2E, 0x7C92, 0x7C97, 0x7C95, 0x7D46, 0x7D43, 0x7D71, 0x7D2E,
+ 0x7D39, 0x7D3C, 0x7D40, 0x7D30, 0x7D33, 0x7D44, 0x7D2F, 0x7D42,
+ 0x7D32, 0x7D31, 0x7F3D, 0x7F9E, 0x7F9A, 0x7FCC, 0x7FCE, 0x7FD2,
+ 0x801C, 0x804A, 0x8046, 0x812F, 0x8116, 0x8123, 0x812B, 0x8129,
+ 0x8130, 0x8124, 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838E,
+ 0x839E, 0x8398, 0x8378, 0x83A2, 0x8396, 0x83BD, 0x83AB, 0x8392,
+ 0x838A, 0x8393, 0x8389, 0x83A0, 0x8377, 0x837B, 0x837C,
+ /* Big5-HKSCS 0xB340 .. 0xB37E */
+ 0x8386, 0x83A7, 0x8655, 0x5F6A, 0x86C7, 0x86C0, 0x86B6, 0x86C4,
+ 0x86B5, 0x86C6, 0x86CB, 0x86B1, 0x86AF, 0x86C9, 0x8853, 0x889E,
+ 0x8888, 0x88AB, 0x8892, 0x8896, 0x888D, 0x888B, 0x8993, 0x898F,
+ 0x8A2A, 0x8A1D, 0x8A23, 0x8A25, 0x8A31, 0x8A2D, 0x8A1F, 0x8A1B,
+ 0x8A22, 0x8C49, 0x8C5A, 0x8CA9, 0x8CAC, 0x8CAB, 0x8CA8, 0x8CAA,
+ 0x8CA7, 0x8D67, 0x8D66, 0x8DBE, 0x8DBA, 0x8EDB, 0x8EDF, 0x9019,
+ 0x900D, 0x901A, 0x9017, 0x9023, 0x901F, 0x901D, 0x9010, 0x9015,
+ 0x901E, 0x9020, 0x900F, 0x9022, 0x9016, 0x901B, 0x9014,
+ /* Big5-HKSCS 0xB3A1 .. 0xB3FE */
+ 0x90E8, 0x90ED, 0x90FD, 0x9157, 0x91CE, 0x91F5, 0x91E6,
+ 0x91E3, 0x91E7, 0x91ED, 0x91E9, 0x9589, 0x966A, 0x9675, 0x9673,
+ 0x9678, 0x9670, 0x9674, 0x9676, 0x9677, 0x966C, 0x96C0, 0x96EA,
+ 0x96E9, 0x7AE0, 0x7ADF, 0x9802, 0x9803, 0x9B5A, 0x9CE5, 0x9E75,
+ 0x9E7F, 0x9EA5, 0x9EBB, 0x50A2, 0x508D, 0x5085, 0x5099, 0x5091,
+ 0x5080, 0x5096, 0x5098, 0x509A, 0x6700, 0x51F1, 0x5272, 0x5274,
+ 0x5275, 0x5269, 0x52DE, 0x52DD, 0x52DB, 0x535A, 0x53A5, 0x557B,
+ 0x5580, 0x55A7, 0x557C, 0x558A, 0x559D, 0x5598, 0x5582, 0x559C,
+ 0x55AA, 0x5594, 0x5587, 0x558B, 0x5583, 0x55B3, 0x55AE, 0x559F,
+ 0x553E, 0x55B2, 0x559A, 0x55BB, 0x55AC, 0x55B1, 0x557E, 0x5589,
+ 0x55AB, 0x5599, 0x570D, 0x582F, 0x582A, 0x5834, 0x5824, 0x5830,
+ 0x5831, 0x5821, 0x581D, 0x5820, 0x58F9, 0x58FA, 0x5960,
+ /* Big5-HKSCS 0xB440 .. 0xB47E */
+ 0x5A77, 0x5A9A, 0x5A7F, 0x5A92, 0x5A9B, 0x5AA7, 0x5B73, 0x5B71,
+ 0x5BD2, 0x5BCC, 0x5BD3, 0x5BD0, 0x5C0A, 0x5C0B, 0x5C31, 0x5D4C,
+ 0x5D50, 0x5D34, 0x5D47, 0x5DFD, 0x5E45, 0x5E3D, 0x5E40, 0x5E43,
+ 0x5E7E, 0x5ECA, 0x5EC1, 0x5EC2, 0x5EC4, 0x5F3C, 0x5F6D, 0x5FA9,
+ 0x5FAA, 0x5FA8, 0x60D1, 0x60E1, 0x60B2, 0x60B6, 0x60E0, 0x611C,
+ 0x6123, 0x60FA, 0x6115, 0x60F0, 0x60FB, 0x60F4, 0x6168, 0x60F1,
+ 0x610E, 0x60F6, 0x6109, 0x6100, 0x6112, 0x621F, 0x6249, 0x63A3,
+ 0x638C, 0x63CF, 0x63C0, 0x63E9, 0x63C9, 0x63C6, 0x63CD,
+ /* Big5-HKSCS 0xB4A1 .. 0xB4FE */
+ 0x63D2, 0x63E3, 0x63D0, 0x63E1, 0x63D6, 0x63ED, 0x63EE,
+ 0x6376, 0x63F4, 0x63EA, 0x63DB, 0x6452, 0x63DA, 0x63F9, 0x655E,
+ 0x6566, 0x6562, 0x6563, 0x6591, 0x6590, 0x65AF, 0x666E, 0x6670,
+ 0x6674, 0x6676, 0x666F, 0x6691, 0x667A, 0x667E, 0x6677, 0x66FE,
+ 0x66FF, 0x671F, 0x671D, 0x68FA, 0x68D5, 0x68E0, 0x68D8, 0x68D7,
+ 0x6905, 0x68DF, 0x68F5, 0x68EE, 0x68E7, 0x68F9, 0x68D2, 0x68F2,
+ 0x68E3, 0x68CB, 0x68CD, 0x690D, 0x6912, 0x690E, 0x68C9, 0x68DA,
+ 0x696E, 0x68FB, 0x6B3E, 0x6B3A, 0x6B3D, 0x6B98, 0x6B96, 0x6BBC,
+ 0x6BEF, 0x6C2E, 0x6C2F, 0x6C2C, 0x6E2F, 0x6E38, 0x6E54, 0x6E21,
+ 0x6E32, 0x6E67, 0x6E4A, 0x6E20, 0x6E25, 0x6E23, 0x6E1B, 0x6E5B,
+ 0x6E58, 0x6E24, 0x6E56, 0x6E6E, 0x6E2D, 0x6E26, 0x6E6F, 0x6E34,
+ 0x6E4D, 0x6E3A, 0x6E2C, 0x6E43, 0x6E1D, 0x6E3E, 0x6ECB,
+ /* Big5-HKSCS 0xB540 .. 0xB57E */
+ 0x6E89, 0x6E19, 0x6E4E, 0x6E63, 0x6E44, 0x6E72, 0x6E69, 0x6E5F,
+ 0x7119, 0x711A, 0x7126, 0x7130, 0x7121, 0x7136, 0x716E, 0x711C,
+ 0x724C, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743A,
+ 0x742A, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742F,
+ 0x741B, 0x7426, 0x7428, 0x7525, 0x7526, 0x756B, 0x756A, 0x75E2,
+ 0x75DB, 0x75E3, 0x75D9, 0x75D8, 0x75DE, 0x75E0, 0x767B, 0x767C,
+ 0x7696, 0x7693, 0x76B4, 0x76DC, 0x774F, 0x77ED, 0x785D, 0x786C,
+ 0x786F, 0x7A0D, 0x7A08, 0x7A0B, 0x7A05, 0x7A00, 0x7A98,
+ /* Big5-HKSCS 0xB5A1 .. 0xB5FE */
+ 0x7A97, 0x7A96, 0x7AE5, 0x7AE3, 0x7B49, 0x7B56, 0x7B46,
+ 0x7B50, 0x7B52, 0x7B54, 0x7B4D, 0x7B4B, 0x7B4F, 0x7B51, 0x7C9F,
+ 0x7CA5, 0x7D5E, 0x7D50, 0x7D68, 0x7D55, 0x7D2B, 0x7D6E, 0x7D72,
+ 0x7D61, 0x7D66, 0x7D62, 0x7D70, 0x7D73, 0x5584, 0x7FD4, 0x7FD5,
+ 0x800B, 0x8052, 0x8085, 0x8155, 0x8154, 0x814B, 0x8151, 0x814E,
+ 0x8139, 0x8146, 0x813E, 0x814C, 0x8153, 0x8174, 0x8212, 0x821C,
+ 0x83E9, 0x8403, 0x83F8, 0x840D, 0x83E0, 0x83C5, 0x840B, 0x83C1,
+ 0x83EF, 0x83F1, 0x83F4, 0x8457, 0x840A, 0x83F0, 0x840C, 0x83CC,
+ 0x83FD, 0x83F2, 0x83CA, 0x8438, 0x840E, 0x8404, 0x83DC, 0x8407,
+ 0x83D4, 0x83DF, 0x865B, 0x86DF, 0x86D9, 0x86ED, 0x86D4, 0x86DB,
+ 0x86E4, 0x86D0, 0x86DE, 0x8857, 0x88C1, 0x88C2, 0x88B1, 0x8983,
+ 0x8996, 0x8A3B, 0x8A60, 0x8A55, 0x8A5E, 0x8A3C, 0x8A41,
+ /* Big5-HKSCS 0xB640 .. 0xB67E */
+ 0x8A54, 0x8A5B, 0x8A50, 0x8A46, 0x8A34, 0x8A3A, 0x8A36, 0x8A56,
+ 0x8C61, 0x8C82, 0x8CAF, 0x8CBC, 0x8CB3, 0x8CBD, 0x8CC1, 0x8CBB,
+ 0x8CC0, 0x8CB4, 0x8CB7, 0x8CB6, 0x8CBF, 0x8CB8, 0x8D8A, 0x8D85,
+ 0x8D81, 0x8DCE, 0x8DDD, 0x8DCB, 0x8DDA, 0x8DD1, 0x8DCC, 0x8DDB,
+ 0x8DC6, 0x8EFB, 0x8EF8, 0x8EFC, 0x8F9C, 0x902E, 0x9035, 0x9031,
+ 0x9038, 0x9032, 0x9036, 0x9102, 0x90F5, 0x9109, 0x90FE, 0x9163,
+ 0x9165, 0x91CF, 0x9214, 0x9215, 0x9223, 0x9209, 0x921E, 0x920D,
+ 0x9210, 0x9207, 0x9211, 0x9594, 0x958F, 0x958B, 0x9591,
+ /* Big5-HKSCS 0xB6A1 .. 0xB6FE */
+ 0x9593, 0x9592, 0x958E, 0x968A, 0x968E, 0x968B, 0x967D,
+ 0x9685, 0x9686, 0x968D, 0x9672, 0x9684, 0x96C1, 0x96C5, 0x96C4,
+ 0x96C6, 0x96C7, 0x96EF, 0x96F2, 0x97CC, 0x9805, 0x9806, 0x9808,
+ 0x98E7, 0x98EA, 0x98EF, 0x98E9, 0x98F2, 0x98ED, 0x99AE, 0x99AD,
+ 0x9EC3, 0x9ECD, 0x9ED1, 0x4E82, 0x50AD, 0x50B5, 0x50B2, 0x50B3,
+ 0x50C5, 0x50BE, 0x50AC, 0x50B7, 0x50BB, 0x50AF, 0x50C7, 0x527F,
+ 0x5277, 0x527D, 0x52DF, 0x52E6, 0x52E4, 0x52E2, 0x52E3, 0x532F,
+ 0x55DF, 0x55E8, 0x55D3, 0x55E6, 0x55CE, 0x55DC, 0x55C7, 0x55D1,
+ 0x55E3, 0x55E4, 0x55EF, 0x55DA, 0x55E1, 0x55C5, 0x55C6, 0x55E5,
+ 0x55C9, 0x5712, 0x5713, 0x585E, 0x5851, 0x5858, 0x5857, 0x585A,
+ 0x5854, 0x586B, 0x584C, 0x586D, 0x584A, 0x5862, 0x5852, 0x584B,
+ 0x5967, 0x5AC1, 0x5AC9, 0x5ACC, 0x5ABE, 0x5ABD, 0x5ABC,
+ /* Big5-HKSCS 0xB740 .. 0xB77E */
+ 0x5AB3, 0x5AC2, 0x5AB2, 0x5D69, 0x5D6F, 0x5E4C, 0x5E79, 0x5EC9,
+ 0x5EC8, 0x5F12, 0x5F59, 0x5FAC, 0x5FAE, 0x611A, 0x610F, 0x6148,
+ 0x611F, 0x60F3, 0x611B, 0x60F9, 0x6101, 0x6108, 0x614E, 0x614C,
+ 0x6144, 0x614D, 0x613E, 0x6134, 0x6127, 0x610D, 0x6106, 0x6137,
+ 0x6221, 0x6222, 0x6413, 0x643E, 0x641E, 0x642A, 0x642D, 0x643D,
+ 0x642C, 0x640F, 0x641C, 0x6414, 0x640D, 0x6436, 0x6416, 0x6417,
+ 0x6406, 0x656C, 0x659F, 0x65B0, 0x6697, 0x6689, 0x6687, 0x6688,
+ 0x6696, 0x6684, 0x6698, 0x668D, 0x6703, 0x6994, 0x696D,
+ /* Big5-HKSCS 0xB7A1 .. 0xB7FE */
+ 0x695A, 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982,
+ 0x694A, 0x6968, 0x696B, 0x695E, 0x6953, 0x6979, 0x6986, 0x695D,
+ 0x6963, 0x695B, 0x6B47, 0x6B72, 0x6BC0, 0x6BBF, 0x6BD3, 0x6BFD,
+ 0x6EA2, 0x6EAF, 0x6ED3, 0x6EB6, 0x6EC2, 0x6E90, 0x6E9D, 0x6EC7,
+ 0x6EC5, 0x6EA5, 0x6E98, 0x6EBC, 0x6EBA, 0x6EAB, 0x6ED1, 0x6E96,
+ 0x6E9C, 0x6EC4, 0x6ED4, 0x6EAA, 0x6EA7, 0x6EB4, 0x714E, 0x7159,
+ 0x7169, 0x7164, 0x7149, 0x7167, 0x715C, 0x716C, 0x7166, 0x714C,
+ 0x7165, 0x715E, 0x7146, 0x7168, 0x7156, 0x723A, 0x7252, 0x7337,
+ 0x7345, 0x733F, 0x733E, 0x746F, 0x745A, 0x7455, 0x745F, 0x745E,
+ 0x7441, 0x743F, 0x7459, 0x745B, 0x745C, 0x7576, 0x7578, 0x7600,
+ 0x75F0, 0x7601, 0x75F2, 0x75F1, 0x75FA, 0x75FF, 0x75F4, 0x75F3,
+ 0x76DE, 0x76DF, 0x775B, 0x776B, 0x7766, 0x775E, 0x7763,
+ /* Big5-HKSCS 0xB840 .. 0xB87E */
+ 0x7779, 0x776A, 0x776C, 0x775C, 0x7765, 0x7768, 0x7762, 0x77EE,
+ 0x788E, 0x78B0, 0x7897, 0x7898, 0x788C, 0x7889, 0x787C, 0x7891,
+ 0x7893, 0x787F, 0x797A, 0x797F, 0x7981, 0x842C, 0x79BD, 0x7A1C,
+ 0x7A1A, 0x7A20, 0x7A14, 0x7A1F, 0x7A1E, 0x7A9F, 0x7AA0, 0x7B77,
+ 0x7BC0, 0x7B60, 0x7B6E, 0x7B67, 0x7CB1, 0x7CB3, 0x7CB5, 0x7D93,
+ 0x7D79, 0x7D91, 0x7D81, 0x7D8F, 0x7D5B, 0x7F6E, 0x7F69, 0x7F6A,
+ 0x7F72, 0x7FA9, 0x7FA8, 0x7FA4, 0x8056, 0x8058, 0x8086, 0x8084,
+ 0x8171, 0x8170, 0x8178, 0x8165, 0x816E, 0x8173, 0x816B,
+ /* Big5-HKSCS 0xB8A1 .. 0xB8FE */
+ 0x8179, 0x817A, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477,
+ 0x843D, 0x8431, 0x8475, 0x8466, 0x846B, 0x8449, 0x846C, 0x845B,
+ 0x843C, 0x8435, 0x8461, 0x8463, 0x8469, 0x846D, 0x8446, 0x865E,
+ 0x865C, 0x865F, 0x86F9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86FE,
+ 0x86FB, 0x8702, 0x8703, 0x8706, 0x870A, 0x8859, 0x88DF, 0x88D4,
+ 0x88D9, 0x88DC, 0x88D8, 0x88DD, 0x88E1, 0x88CA, 0x88D5, 0x88D2,
+ 0x899C, 0x89E3, 0x8A6B, 0x8A72, 0x8A73, 0x8A66, 0x8A69, 0x8A70,
+ 0x8A87, 0x8A7C, 0x8A63, 0x8AA0, 0x8A71, 0x8A85, 0x8A6D, 0x8A62,
+ 0x8A6E, 0x8A6C, 0x8A79, 0x8A7B, 0x8A3E, 0x8A68, 0x8C62, 0x8C8A,
+ 0x8C89, 0x8CCA, 0x8CC7, 0x8CC8, 0x8CC4, 0x8CB2, 0x8CC3, 0x8CC2,
+ 0x8CC5, 0x8DE1, 0x8DDF, 0x8DE8, 0x8DEF, 0x8DF3, 0x8DFA, 0x8DEA,
+ 0x8DE4, 0x8DE6, 0x8EB2, 0x8F03, 0x8F09, 0x8EFE, 0x8F0A,
+ /* Big5-HKSCS 0xB940 .. 0xB97E */
+ 0x8F9F, 0x8FB2, 0x904B, 0x904A, 0x9053, 0x9042, 0x9054, 0x903C,
+ 0x9055, 0x9050, 0x9047, 0x904F, 0x904E, 0x904D, 0x9051, 0x903E,
+ 0x9041, 0x9112, 0x9117, 0x916C, 0x916A, 0x9169, 0x91C9, 0x9237,
+ 0x9257, 0x9238, 0x923D, 0x9240, 0x923E, 0x925B, 0x924B, 0x9264,
+ 0x9251, 0x9234, 0x9249, 0x924D, 0x9245, 0x9239, 0x923F, 0x925A,
+ 0x9598, 0x9698, 0x9694, 0x9695, 0x96CD, 0x96CB, 0x96C9, 0x96CA,
+ 0x96F7, 0x96FB, 0x96F9, 0x96F6, 0x9756, 0x9774, 0x9776, 0x9810,
+ 0x9811, 0x9813, 0x980A, 0x9812, 0x980C, 0x98FC, 0x98F4,
+ /* Big5-HKSCS 0xB9A1 .. 0xB9FE */
+ 0x98FD, 0x98FE, 0x99B3, 0x99B1, 0x99B4, 0x9AE1, 0x9CE9,
+ 0x9E82, 0x9F0E, 0x9F13, 0x9F20, 0x50E7, 0x50EE, 0x50E5, 0x50D6,
+ 0x50ED, 0x50DA, 0x50D5, 0x50CF, 0x50D1, 0x50F1, 0x50CE, 0x50E9,
+ 0x5162, 0x51F3, 0x5283, 0x5282, 0x5331, 0x53AD, 0x55FE, 0x5600,
+ 0x561B, 0x5617, 0x55FD, 0x5614, 0x5606, 0x5609, 0x560D, 0x560E,
+ 0x55F7, 0x5616, 0x561F, 0x5608, 0x5610, 0x55F6, 0x5718, 0x5716,
+ 0x5875, 0x587E, 0x5883, 0x5893, 0x588A, 0x5879, 0x5885, 0x587D,
+ 0x58FD, 0x5925, 0x5922, 0x5924, 0x596A, 0x5969, 0x5AE1, 0x5AE6,
+ 0x5AE9, 0x5AD7, 0x5AD6, 0x5AD8, 0x5AE3, 0x5B75, 0x5BDE, 0x5BE7,
+ 0x5BE1, 0x5BE5, 0x5BE6, 0x5BE8, 0x5BE2, 0x5BE4, 0x5BDF, 0x5C0D,
+ 0x5C62, 0x5D84, 0x5D87, 0x5E5B, 0x5E63, 0x5E55, 0x5E57, 0x5E54,
+ 0x5ED3, 0x5ED6, 0x5F0A, 0x5F46, 0x5F70, 0x5FB9, 0x6147,
+ /* Big5-HKSCS 0xBA40 .. 0xBA7E */
+ 0x613F, 0x614B, 0x6177, 0x6162, 0x6163, 0x615F, 0x615A, 0x6158,
+ 0x6175, 0x622A, 0x6487, 0x6458, 0x6454, 0x64A4, 0x6478, 0x645F,
+ 0x647A, 0x6451, 0x6467, 0x6434, 0x646D, 0x647B, 0x6572, 0x65A1,
+ 0x65D7, 0x65D6, 0x66A2, 0x66A8, 0x669D, 0x699C, 0x69A8, 0x6995,
+ 0x69C1, 0x69AE, 0x69D3, 0x69CB, 0x699B, 0x69B7, 0x69BB, 0x69AB,
+ 0x69B4, 0x69D0, 0x69CD, 0x69AD, 0x69CC, 0x69A6, 0x69C3, 0x69A3,
+ 0x6B49, 0x6B4C, 0x6C33, 0x6F33, 0x6F14, 0x6EFE, 0x6F13, 0x6EF4,
+ 0x6F29, 0x6F3E, 0x6F20, 0x6F2C, 0x6F0F, 0x6F02, 0x6F22,
+ /* Big5-HKSCS 0xBAA1 .. 0xBAFE */
+ 0x6EFF, 0x6EEF, 0x6F06, 0x6F31, 0x6F38, 0x6F32, 0x6F23,
+ 0x6F15, 0x6F2B, 0x6F2F, 0x6F88, 0x6F2A, 0x6EEC, 0x6F01, 0x6EF2,
+ 0x6ECC, 0x6EF7, 0x7194, 0x7199, 0x717D, 0x718A, 0x7184, 0x7192,
+ 0x723E, 0x7292, 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746A,
+ 0x7470, 0x746D, 0x7504, 0x7591, 0x7627, 0x760D, 0x760B, 0x7609,
+ 0x7613, 0x76E1, 0x76E3, 0x7784, 0x777D, 0x777F, 0x7761, 0x78C1,
+ 0x789F, 0x78A7, 0x78B3, 0x78A9, 0x78A3, 0x798E, 0x798F, 0x798D,
+ 0x7A2E, 0x7A31, 0x7AAA, 0x7AA9, 0x7AED, 0x7AEF, 0x7BA1, 0x7B95,
+ 0x7B8B, 0x7B75, 0x7B97, 0x7B9D, 0x7B94, 0x7B8F, 0x7BB8, 0x7B87,
+ 0x7B84, 0x7CB9, 0x7CBD, 0x7CBE, 0x7DBB, 0x7DB0, 0x7D9C, 0x7DBD,
+ 0x7DBE, 0x7DA0, 0x7DCA, 0x7DB4, 0x7DB2, 0x7DB1, 0x7DBA, 0x7DA2,
+ 0x7DBF, 0x7DB5, 0x7DB8, 0x7DAD, 0x7DD2, 0x7DC7, 0x7DAC,
+ /* Big5-HKSCS 0xBB40 .. 0xBB7E */
+ 0x7F70, 0x7FE0, 0x7FE1, 0x7FDF, 0x805E, 0x805A, 0x8087, 0x8150,
+ 0x8180, 0x818F, 0x8188, 0x818A, 0x817F, 0x8182, 0x81E7, 0x81FA,
+ 0x8207, 0x8214, 0x821E, 0x824B, 0x84C9, 0x84BF, 0x84C6, 0x84C4,
+ 0x8499, 0x849E, 0x84B2, 0x849C, 0x84CB, 0x84B8, 0x84C0, 0x84D3,
+ 0x8490, 0x84BC, 0x84D1, 0x84CA, 0x873F, 0x871C, 0x873B, 0x8722,
+ 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88F3, 0x8902,
+ 0x88F4, 0x88F9, 0x88F8, 0x88FD, 0x88E8, 0x891A, 0x88EF, 0x8AA6,
+ 0x8A8C, 0x8A9E, 0x8AA3, 0x8A8D, 0x8AA1, 0x8A93, 0x8AA4,
+ /* Big5-HKSCS 0xBBA1 .. 0xBBFE */
+ 0x8AAA, 0x8AA5, 0x8AA8, 0x8A98, 0x8A91, 0x8A9A, 0x8AA7,
+ 0x8C6A, 0x8C8D, 0x8C8C, 0x8CD3, 0x8CD1, 0x8CD2, 0x8D6B, 0x8D99,
+ 0x8D95, 0x8DFC, 0x8F14, 0x8F12, 0x8F15, 0x8F13, 0x8FA3, 0x9060,
+ 0x9058, 0x905C, 0x9063, 0x9059, 0x905E, 0x9062, 0x905D, 0x905B,
+ 0x9119, 0x9118, 0x911E, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278,
+ 0x9280, 0x9285, 0x9298, 0x9296, 0x927B, 0x9293, 0x929C, 0x92A8,
+ 0x927C, 0x9291, 0x95A1, 0x95A8, 0x95A9, 0x95A3, 0x95A5, 0x95A4,
+ 0x9699, 0x969C, 0x969B, 0x96CC, 0x96D2, 0x9700, 0x977C, 0x9785,
+ 0x97F6, 0x9817, 0x9818, 0x98AF, 0x98B1, 0x9903, 0x9905, 0x990C,
+ 0x9909, 0x99C1, 0x9AAF, 0x9AB0, 0x9AE6, 0x9B41, 0x9B42, 0x9CF4,
+ 0x9CF6, 0x9CF3, 0x9EBC, 0x9F3B, 0x9F4A, 0x5104, 0x5100, 0x50FB,
+ 0x50F5, 0x50F9, 0x5102, 0x5108, 0x5109, 0x5105, 0x51DC,
+ /* Big5-HKSCS 0xBC40 .. 0xBC7E */
+ 0x5287, 0x5288, 0x5289, 0x528D, 0x528A, 0x52F0, 0x53B2, 0x562E,
+ 0x563B, 0x5639, 0x5632, 0x563F, 0x5634, 0x5629, 0x5653, 0x564E,
+ 0x5657, 0x5674, 0x5636, 0x562F, 0x5630, 0x5880, 0x589F, 0x589E,
+ 0x58B3, 0x589C, 0x58AE, 0x58A9, 0x58A6, 0x596D, 0x5B09, 0x5AFB,
+ 0x5B0B, 0x5AF5, 0x5B0C, 0x5B08, 0x5BEE, 0x5BEC, 0x5BE9, 0x5BEB,
+ 0x5C64, 0x5C65, 0x5D9D, 0x5D94, 0x5E62, 0x5E5F, 0x5E61, 0x5EE2,
+ 0x5EDA, 0x5EDF, 0x5EDD, 0x5EE3, 0x5EE0, 0x5F48, 0x5F71, 0x5FB7,
+ 0x5FB5, 0x6176, 0x6167, 0x616E, 0x615D, 0x6155, 0x6182,
+ /* Big5-HKSCS 0xBCA1 .. 0xBCFE */
+ 0x617C, 0x6170, 0x616B, 0x617E, 0x61A7, 0x6190, 0x61AB,
+ 0x618E, 0x61AC, 0x619A, 0x61A4, 0x6194, 0x61AE, 0x622E, 0x6469,
+ 0x646F, 0x6479, 0x649E, 0x64B2, 0x6488, 0x6490, 0x64B0, 0x64A5,
+ 0x6493, 0x6495, 0x64A9, 0x6492, 0x64AE, 0x64AD, 0x64AB, 0x649A,
+ 0x64AC, 0x6499, 0x64A2, 0x64B3, 0x6575, 0x6577, 0x6578, 0x66AE,
+ 0x66AB, 0x66B4, 0x66B1, 0x6A23, 0x6A1F, 0x69E8, 0x6A01, 0x6A1E,
+ 0x6A19, 0x69FD, 0x6A21, 0x6A13, 0x6A0A, 0x69F3, 0x6A02, 0x6A05,
+ 0x69ED, 0x6A11, 0x6B50, 0x6B4E, 0x6BA4, 0x6BC5, 0x6BC6, 0x6F3F,
+ 0x6F7C, 0x6F84, 0x6F51, 0x6F66, 0x6F54, 0x6F86, 0x6F6D, 0x6F5B,
+ 0x6F78, 0x6F6E, 0x6F8E, 0x6F7A, 0x6F70, 0x6F64, 0x6F97, 0x6F58,
+ 0x6ED5, 0x6F6F, 0x6F60, 0x6F5F, 0x719F, 0x71AC, 0x71B1, 0x71A8,
+ 0x7256, 0x729B, 0x734E, 0x7357, 0x7469, 0x748B, 0x7483,
+ /* Big5-HKSCS 0xBD40 .. 0xBD7E */
+ 0x747E, 0x7480, 0x757F, 0x7620, 0x7629, 0x761F, 0x7624, 0x7626,
+ 0x7621, 0x7622, 0x769A, 0x76BA, 0x76E4, 0x778E, 0x7787, 0x778C,
+ 0x7791, 0x778B, 0x78CB, 0x78C5, 0x78BA, 0x78CA, 0x78BE, 0x78D5,
+ 0x78BC, 0x78D0, 0x7A3F, 0x7A3C, 0x7A40, 0x7A3D, 0x7A37, 0x7A3B,
+ 0x7AAF, 0x7AAE, 0x7BAD, 0x7BB1, 0x7BC4, 0x7BB4, 0x7BC6, 0x7BC7,
+ 0x7BC1, 0x7BA0, 0x7BCC, 0x7CCA, 0x7DE0, 0x7DF4, 0x7DEF, 0x7DFB,
+ 0x7DD8, 0x7DEC, 0x7DDD, 0x7DE8, 0x7DE3, 0x7DDA, 0x7DDE, 0x7DE9,
+ 0x7D9E, 0x7DD9, 0x7DF2, 0x7DF9, 0x7F75, 0x7F77, 0x7FAF,
+ /* Big5-HKSCS 0xBDA1 .. 0xBDFE */
+ 0x7FE9, 0x8026, 0x819B, 0x819C, 0x819D, 0x81A0, 0x819A,
+ 0x8198, 0x8517, 0x853D, 0x851A, 0x84EE, 0x852C, 0x852D, 0x8513,
+ 0x8511, 0x8523, 0x8521, 0x8514, 0x84EC, 0x8525, 0x84FF, 0x8506,
+ 0x8782, 0x8774, 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759,
+ 0x8757, 0x874C, 0x8753, 0x885B, 0x885D, 0x8910, 0x8907, 0x8912,
+ 0x8913, 0x8915, 0x890A, 0x8ABC, 0x8AD2, 0x8AC7, 0x8AC4, 0x8A95,
+ 0x8ACB, 0x8AF8, 0x8AB2, 0x8AC9, 0x8AC2, 0x8ABF, 0x8AB0, 0x8AD6,
+ 0x8ACD, 0x8AB6, 0x8AB9, 0x8ADB, 0x8C4C, 0x8C4E, 0x8C6C, 0x8CE0,
+ 0x8CDE, 0x8CE6, 0x8CE4, 0x8CEC, 0x8CED, 0x8CE2, 0x8CE3, 0x8CDC,
+ 0x8CEA, 0x8CE1, 0x8D6D, 0x8D9F, 0x8DA3, 0x8E2B, 0x8E10, 0x8E1D,
+ 0x8E22, 0x8E0F, 0x8E29, 0x8E1F, 0x8E21, 0x8E1E, 0x8EBA, 0x8F1D,
+ 0x8F1B, 0x8F1F, 0x8F29, 0x8F26, 0x8F2A, 0x8F1C, 0x8F1E,
+ /* Big5-HKSCS 0xBE40 .. 0xBE7E */
+ 0x8F25, 0x9069, 0x906E, 0x9068, 0x906D, 0x9077, 0x9130, 0x912D,
+ 0x9127, 0x9131, 0x9187, 0x9189, 0x918B, 0x9183, 0x92C5, 0x92BB,
+ 0x92B7, 0x92EA, 0x92AC, 0x92E4, 0x92C1, 0x92B3, 0x92BC, 0x92D2,
+ 0x92C7, 0x92F0, 0x92B2, 0x95AD, 0x95B1, 0x9704, 0x9706, 0x9707,
+ 0x9709, 0x9760, 0x978D, 0x978B, 0x978F, 0x9821, 0x982B, 0x981C,
+ 0x98B3, 0x990A, 0x9913, 0x9912, 0x9918, 0x99DD, 0x99D0, 0x99DF,
+ 0x99DB, 0x99D1, 0x99D5, 0x99D2, 0x99D9, 0x9AB7, 0x9AEE, 0x9AEF,
+ 0x9B27, 0x9B45, 0x9B44, 0x9B77, 0x9B6F, 0x9D06, 0x9D09,
+ /* Big5-HKSCS 0xBEA1 .. 0xBEFE */
+ 0x9D03, 0x9EA9, 0x9EBE, 0x9ECE, 0x58A8, 0x9F52, 0x5112,
+ 0x5118, 0x5114, 0x5110, 0x5115, 0x5180, 0x51AA, 0x51DD, 0x5291,
+ 0x5293, 0x52F3, 0x5659, 0x566B, 0x5679, 0x5669, 0x5664, 0x5678,
+ 0x566A, 0x5668, 0x5665, 0x5671, 0x566F, 0x566C, 0x5662, 0x5676,
+ 0x58C1, 0x58BE, 0x58C7, 0x58C5, 0x596E, 0x5B1D, 0x5B34, 0x5B78,
+ 0x5BF0, 0x5C0E, 0x5F4A, 0x61B2, 0x6191, 0x61A9, 0x618A, 0x61CD,
+ 0x61B6, 0x61BE, 0x61CA, 0x61C8, 0x6230, 0x64C5, 0x64C1, 0x64CB,
+ 0x64BB, 0x64BC, 0x64DA, 0x64C4, 0x64C7, 0x64C2, 0x64CD, 0x64BF,
+ 0x64D2, 0x64D4, 0x64BE, 0x6574, 0x66C6, 0x66C9, 0x66B9, 0x66C4,
+ 0x66C7, 0x66B8, 0x6A3D, 0x6A38, 0x6A3A, 0x6A59, 0x6A6B, 0x6A58,
+ 0x6A39, 0x6A44, 0x6A62, 0x6A61, 0x6A4B, 0x6A47, 0x6A35, 0x6A5F,
+ 0x6A48, 0x6B59, 0x6B77, 0x6C05, 0x6FC2, 0x6FB1, 0x6FA1,
+ /* Big5-HKSCS 0xBF40 .. 0xBF7E */
+ 0x6FC3, 0x6FA4, 0x6FC1, 0x6FA7, 0x6FB3, 0x6FC0, 0x6FB9, 0x6FB6,
+ 0x6FA6, 0x6FA0, 0x6FB4, 0x71BE, 0x71C9, 0x71D0, 0x71D2, 0x71C8,
+ 0x71D5, 0x71B9, 0x71CE, 0x71D9, 0x71DC, 0x71C3, 0x71C4, 0x7368,
+ 0x749C, 0x74A3, 0x7498, 0x749F, 0x749E, 0x74E2, 0x750C, 0x750D,
+ 0x7634, 0x7638, 0x763A, 0x76E7, 0x76E5, 0x77A0, 0x779E, 0x779F,
+ 0x77A5, 0x78E8, 0x78DA, 0x78EC, 0x78E7, 0x79A6, 0x7A4D, 0x7A4E,
+ 0x7A46, 0x7A4C, 0x7A4B, 0x7ABA, 0x7BD9, 0x7C11, 0x7BC9, 0x7BE4,
+ 0x7BDB, 0x7BE1, 0x7BE9, 0x7BE6, 0x7CD5, 0x7CD6, 0x7E0A,
+ /* Big5-HKSCS 0xBFA1 .. 0xBFFE */
+ 0x7E11, 0x7E08, 0x7E1B, 0x7E23, 0x7E1E, 0x7E1D, 0x7E09,
+ 0x7E10, 0x7F79, 0x7FB2, 0x7FF0, 0x7FF1, 0x7FEE, 0x8028, 0x81B3,
+ 0x81A9, 0x81A8, 0x81FB, 0x8208, 0x8258, 0x8259, 0x854A, 0x8559,
+ 0x8548, 0x8568, 0x8569, 0x8543, 0x8549, 0x856D, 0x856A, 0x855E,
+ 0x8783, 0x879F, 0x879E, 0x87A2, 0x878D, 0x8861, 0x892A, 0x8932,
+ 0x8925, 0x892B, 0x8921, 0x89AA, 0x89A6, 0x8AE6, 0x8AFA, 0x8AEB,
+ 0x8AF1, 0x8B00, 0x8ADC, 0x8AE7, 0x8AEE, 0x8AFE, 0x8B01, 0x8B02,
+ 0x8AF7, 0x8AED, 0x8AF3, 0x8AF6, 0x8AFC, 0x8C6B, 0x8C6D, 0x8C93,
+ 0x8CF4, 0x8E44, 0x8E31, 0x8E34, 0x8E42, 0x8E39, 0x8E35, 0x8F3B,
+ 0x8F2F, 0x8F38, 0x8F33, 0x8FA8, 0x8FA6, 0x9075, 0x9074, 0x9078,
+ 0x9072, 0x907C, 0x907A, 0x9134, 0x9192, 0x9320, 0x9336, 0x92F8,
+ 0x9333, 0x932F, 0x9322, 0x92FC, 0x932B, 0x9304, 0x931A,
+ /* Big5-HKSCS 0xC040 .. 0xC07E */
+ 0x9310, 0x9326, 0x9321, 0x9315, 0x932E, 0x9319, 0x95BB, 0x96A7,
+ 0x96A8, 0x96AA, 0x96D5, 0x970E, 0x9711, 0x9716, 0x970D, 0x9713,
+ 0x970F, 0x975B, 0x975C, 0x9766, 0x9798, 0x9830, 0x9838, 0x983B,
+ 0x9837, 0x982D, 0x9839, 0x9824, 0x9910, 0x9928, 0x991E, 0x991B,
+ 0x9921, 0x991A, 0x99ED, 0x99E2, 0x99F1, 0x9AB8, 0x9ABC, 0x9AFB,
+ 0x9AED, 0x9B28, 0x9B91, 0x9D15, 0x9D23, 0x9D26, 0x9D28, 0x9D12,
+ 0x9D1B, 0x9ED8, 0x9ED4, 0x9F8D, 0x9F9C, 0x512A, 0x511F, 0x5121,
+ 0x5132, 0x52F5, 0x568E, 0x5680, 0x5690, 0x5685, 0x5687,
+ /* Big5-HKSCS 0xC0A1 .. 0xC0FE */
+ 0x568F, 0x58D5, 0x58D3, 0x58D1, 0x58CE, 0x5B30, 0x5B2A,
+ 0x5B24, 0x5B7A, 0x5C37, 0x5C68, 0x5DBC, 0x5DBA, 0x5DBD, 0x5DB8,
+ 0x5E6B, 0x5F4C, 0x5FBD, 0x61C9, 0x61C2, 0x61C7, 0x61E6, 0x61CB,
+ 0x6232, 0x6234, 0x64CE, 0x64CA, 0x64D8, 0x64E0, 0x64F0, 0x64E6,
+ 0x64EC, 0x64F1, 0x64E2, 0x64ED, 0x6582, 0x6583, 0x66D9, 0x66D6,
+ 0x6A80, 0x6A94, 0x6A84, 0x6AA2, 0x6A9C, 0x6ADB, 0x6AA3, 0x6A7E,
+ 0x6A97, 0x6A90, 0x6AA0, 0x6B5C, 0x6BAE, 0x6BDA, 0x6C08, 0x6FD8,
+ 0x6FF1, 0x6FDF, 0x6FE0, 0x6FDB, 0x6FE4, 0x6FEB, 0x6FEF, 0x6F80,
+ 0x6FEC, 0x6FE1, 0x6FE9, 0x6FD5, 0x6FEE, 0x6FF0, 0x71E7, 0x71DF,
+ 0x71EE, 0x71E6, 0x71E5, 0x71ED, 0x71EC, 0x71F4, 0x71E0, 0x7235,
+ 0x7246, 0x7370, 0x7372, 0x74A9, 0x74B0, 0x74A6, 0x74A8, 0x7646,
+ 0x7642, 0x764C, 0x76EA, 0x77B3, 0x77AA, 0x77B0, 0x77AC,
+ /* Big5-HKSCS 0xC140 .. 0xC17E */
+ 0x77A7, 0x77AD, 0x77EF, 0x78F7, 0x78FA, 0x78F4, 0x78EF, 0x7901,
+ 0x79A7, 0x79AA, 0x7A57, 0x7ABF, 0x7C07, 0x7C0D, 0x7BFE, 0x7BF7,
+ 0x7C0C, 0x7BE0, 0x7CE0, 0x7CDC, 0x7CDE, 0x7CE2, 0x7CDF, 0x7CD9,
+ 0x7CDD, 0x7E2E, 0x7E3E, 0x7E46, 0x7E37, 0x7E32, 0x7E43, 0x7E2B,
+ 0x7E3D, 0x7E31, 0x7E45, 0x7E41, 0x7E34, 0x7E39, 0x7E48, 0x7E35,
+ 0x7E3F, 0x7E2F, 0x7F44, 0x7FF3, 0x7FFC, 0x8071, 0x8072, 0x8070,
+ 0x806F, 0x8073, 0x81C6, 0x81C3, 0x81BA, 0x81C2, 0x81C0, 0x81BF,
+ 0x81BD, 0x81C9, 0x81BE, 0x81E8, 0x8209, 0x8271, 0x85AA,
+ /* Big5-HKSCS 0xC1A1 .. 0xC1FE */
+ 0x8584, 0x857E, 0x859C, 0x8591, 0x8594, 0x85AF, 0x859B,
+ 0x8587, 0x85A8, 0x858A, 0x8667, 0x87C0, 0x87D1, 0x87B3, 0x87D2,
+ 0x87C6, 0x87AB, 0x87BB, 0x87BA, 0x87C8, 0x87CB, 0x893B, 0x8936,
+ 0x8944, 0x8938, 0x893D, 0x89AC, 0x8B0E, 0x8B17, 0x8B19, 0x8B1B,
+ 0x8B0A, 0x8B20, 0x8B1D, 0x8B04, 0x8B10, 0x8C41, 0x8C3F, 0x8C73,
+ 0x8CFA, 0x8CFD, 0x8CFC, 0x8CF8, 0x8CFB, 0x8DA8, 0x8E49, 0x8E4B,
+ 0x8E48, 0x8E4A, 0x8F44, 0x8F3E, 0x8F42, 0x8F45, 0x8F3F, 0x907F,
+ 0x907D, 0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91A3, 0x919E,
+ 0x919C, 0x934D, 0x9382, 0x9328, 0x9375, 0x934A, 0x9365, 0x934B,
+ 0x9318, 0x937E, 0x936C, 0x935B, 0x9370, 0x935A, 0x9354, 0x95CA,
+ 0x95CB, 0x95CC, 0x95C8, 0x95C6, 0x96B1, 0x96B8, 0x96D6, 0x971C,
+ 0x971E, 0x97A0, 0x97D3, 0x9846, 0x98B6, 0x9935, 0x9A01,
+ /* Big5-HKSCS 0xC240 .. 0xC27E */
+ 0x99FF, 0x9BAE, 0x9BAB, 0x9BAA, 0x9BAD, 0x9D3B, 0x9D3F, 0x9E8B,
+ 0x9ECF, 0x9EDE, 0x9EDC, 0x9EDD, 0x9EDB, 0x9F3E, 0x9F4B, 0x53E2,
+ 0x5695, 0x56AE, 0x58D9, 0x58D8, 0x5B38, 0x5F5D, 0x61E3, 0x6233,
+ 0x64F4, 0x64F2, 0x64FE, 0x6506, 0x64FA, 0x64FB, 0x64F7, 0x65B7,
+ 0x66DC, 0x6726, 0x6AB3, 0x6AAC, 0x6AC3, 0x6ABB, 0x6AB8, 0x6AC2,
+ 0x6AAE, 0x6AAF, 0x6B5F, 0x6B78, 0x6BAF, 0x7009, 0x700B, 0x6FFE,
+ 0x7006, 0x6FFA, 0x7011, 0x700F, 0x71FB, 0x71FC, 0x71FE, 0x71F8,
+ 0x7377, 0x7375, 0x74A7, 0x74BF, 0x7515, 0x7656, 0x7658,
+ /* Big5-HKSCS 0xC2A1 .. 0xC2FE */
+ 0x7652, 0x77BD, 0x77BF, 0x77BB, 0x77BC, 0x790E, 0x79AE,
+ 0x7A61, 0x7A62, 0x7A60, 0x7AC4, 0x7AC5, 0x7C2B, 0x7C27, 0x7C2A,
+ 0x7C1E, 0x7C23, 0x7C21, 0x7CE7, 0x7E54, 0x7E55, 0x7E5E, 0x7E5A,
+ 0x7E61, 0x7E52, 0x7E59, 0x7F48, 0x7FF9, 0x7FFB, 0x8077, 0x8076,
+ 0x81CD, 0x81CF, 0x820A, 0x85CF, 0x85A9, 0x85CD, 0x85D0, 0x85C9,
+ 0x85B0, 0x85BA, 0x85B9, 0x85A6, 0x87EF, 0x87EC, 0x87F2, 0x87E0,
+ 0x8986, 0x89B2, 0x89F4, 0x8B28, 0x8B39, 0x8B2C, 0x8B2B, 0x8C50,
+ 0x8D05, 0x8E59, 0x8E63, 0x8E66, 0x8E64, 0x8E5F, 0x8E55, 0x8EC0,
+ 0x8F49, 0x8F4D, 0x9087, 0x9083, 0x9088, 0x91AB, 0x91AC, 0x91D0,
+ 0x9394, 0x938A, 0x9396, 0x93A2, 0x93B3, 0x93AE, 0x93AC, 0x93B0,
+ 0x9398, 0x939A, 0x9397, 0x95D4, 0x95D6, 0x95D0, 0x95D5, 0x96E2,
+ 0x96DC, 0x96D9, 0x96DB, 0x96DE, 0x9724, 0x97A3, 0x97A6,
+ /* Big5-HKSCS 0xC340 .. 0xC37E */
+ 0x97AD, 0x97F9, 0x984D, 0x984F, 0x984C, 0x984E, 0x9853, 0x98BA,
+ 0x993E, 0x993F, 0x993D, 0x992E, 0x99A5, 0x9A0E, 0x9AC1, 0x9B03,
+ 0x9B06, 0x9B4F, 0x9B4E, 0x9B4D, 0x9BCA, 0x9BC9, 0x9BFD, 0x9BC8,
+ 0x9BC0, 0x9D51, 0x9D5D, 0x9D60, 0x9EE0, 0x9F15, 0x9F2C, 0x5133,
+ 0x56A5, 0x58DE, 0x58DF, 0x58E2, 0x5BF5, 0x9F90, 0x5EEC, 0x61F2,
+ 0x61F7, 0x61F6, 0x61F5, 0x6500, 0x650F, 0x66E0, 0x66DD, 0x6AE5,
+ 0x6ADD, 0x6ADA, 0x6AD3, 0x701B, 0x701F, 0x7028, 0x701A, 0x701D,
+ 0x7015, 0x7018, 0x7206, 0x720D, 0x7258, 0x72A2, 0x7378,
+ /* Big5-HKSCS 0xC3A1 .. 0xC3FE */
+ 0x737A, 0x74BD, 0x74CA, 0x74E3, 0x7587, 0x7586, 0x765F,
+ 0x7661, 0x77C7, 0x7919, 0x79B1, 0x7A6B, 0x7A69, 0x7C3E, 0x7C3F,
+ 0x7C38, 0x7C3D, 0x7C37, 0x7C40, 0x7E6B, 0x7E6D, 0x7E79, 0x7E69,
+ 0x7E6A, 0x7F85, 0x7E73, 0x7FB6, 0x7FB9, 0x7FB8, 0x81D8, 0x85E9,
+ 0x85DD, 0x85EA, 0x85D5, 0x85E4, 0x85E5, 0x85F7, 0x87FB, 0x8805,
+ 0x880D, 0x87F9, 0x87FE, 0x8960, 0x895F, 0x8956, 0x895E, 0x8B41,
+ 0x8B5C, 0x8B58, 0x8B49, 0x8B5A, 0x8B4E, 0x8B4F, 0x8B46, 0x8B59,
+ 0x8D08, 0x8D0A, 0x8E7C, 0x8E72, 0x8E87, 0x8E76, 0x8E6C, 0x8E7A,
+ 0x8E74, 0x8F54, 0x8F4E, 0x8FAD, 0x908A, 0x908B, 0x91B1, 0x91AE,
+ 0x93E1, 0x93D1, 0x93DF, 0x93C3, 0x93C8, 0x93DC, 0x93DD, 0x93D6,
+ 0x93E2, 0x93CD, 0x93D8, 0x93E4, 0x93D7, 0x93E8, 0x95DC, 0x96B4,
+ 0x96E3, 0x972A, 0x9727, 0x9761, 0x97DC, 0x97FB, 0x985E,
+ /* Big5-HKSCS 0xC440 .. 0xC47E */
+ 0x9858, 0x985B, 0x98BC, 0x9945, 0x9949, 0x9A16, 0x9A19, 0x9B0D,
+ 0x9BE8, 0x9BE7, 0x9BD6, 0x9BDB, 0x9D89, 0x9D61, 0x9D72, 0x9D6A,
+ 0x9D6C, 0x9E92, 0x9E97, 0x9E93, 0x9EB4, 0x52F8, 0x56A8, 0x56B7,
+ 0x56B6, 0x56B4, 0x56BC, 0x58E4, 0x5B40, 0x5B43, 0x5B7D, 0x5BF6,
+ 0x5DC9, 0x61F8, 0x61FA, 0x6518, 0x6514, 0x6519, 0x66E6, 0x6727,
+ 0x6AEC, 0x703E, 0x7030, 0x7032, 0x7210, 0x737B, 0x74CF, 0x7662,
+ 0x7665, 0x7926, 0x792A, 0x792C, 0x792B, 0x7AC7, 0x7AF6, 0x7C4C,
+ 0x7C43, 0x7C4D, 0x7CEF, 0x7CF0, 0x8FAE, 0x7E7D, 0x7E7C,
+ /* Big5-HKSCS 0xC4A1 .. 0xC4FE */
+ 0x7E82, 0x7F4C, 0x8000, 0x81DA, 0x8266, 0x85FB, 0x85F9,
+ 0x8611, 0x85FA, 0x8606, 0x860B, 0x8607, 0x860A, 0x8814, 0x8815,
+ 0x8964, 0x89BA, 0x89F8, 0x8B70, 0x8B6C, 0x8B66, 0x8B6F, 0x8B5F,
+ 0x8B6B, 0x8D0F, 0x8D0D, 0x8E89, 0x8E81, 0x8E85, 0x8E82, 0x91B4,
+ 0x91CB, 0x9418, 0x9403, 0x93FD, 0x95E1, 0x9730, 0x98C4, 0x9952,
+ 0x9951, 0x99A8, 0x9A2B, 0x9A30, 0x9A37, 0x9A35, 0x9C13, 0x9C0D,
+ 0x9E79, 0x9EB5, 0x9EE8, 0x9F2F, 0x9F5F, 0x9F63, 0x9F61, 0x5137,
+ 0x5138, 0x56C1, 0x56C0, 0x56C2, 0x5914, 0x5C6C, 0x5DCD, 0x61FC,
+ 0x61FE, 0x651D, 0x651C, 0x6595, 0x66E9, 0x6AFB, 0x6B04, 0x6AFA,
+ 0x6BB2, 0x704C, 0x721B, 0x72A7, 0x74D6, 0x74D4, 0x7669, 0x77D3,
+ 0x7C50, 0x7E8F, 0x7E8C, 0x7FBC, 0x8617, 0x862D, 0x861A, 0x8823,
+ 0x8822, 0x8821, 0x881F, 0x896A, 0x896C, 0x89BD, 0x8B74,
+ /* Big5-HKSCS 0xC540 .. 0xC57E */
+ 0x8B77, 0x8B7D, 0x8D13, 0x8E8A, 0x8E8D, 0x8E8B, 0x8F5F, 0x8FAF,
+ 0x91BA, 0x942E, 0x9433, 0x9435, 0x943A, 0x9438, 0x9432, 0x942B,
+ 0x95E2, 0x9738, 0x9739, 0x9732, 0x97FF, 0x9867, 0x9865, 0x9957,
+ 0x9A45, 0x9A43, 0x9A40, 0x9A3E, 0x9ACF, 0x9B54, 0x9B51, 0x9C2D,
+ 0x9C25, 0x9DAF, 0x9DB4, 0x9DC2, 0x9DB8, 0x9E9D, 0x9EEF, 0x9F19,
+ 0x9F5C, 0x9F66, 0x9F67, 0x513C, 0x513B, 0x56C8, 0x56CA, 0x56C9,
+ 0x5B7F, 0x5DD4, 0x5DD2, 0x5F4E, 0x61FF, 0x6524, 0x6B0A, 0x6B61,
+ 0x7051, 0x7058, 0x7380, 0x74E4, 0x758A, 0x766E, 0x766C,
+ /* Big5-HKSCS 0xC5A1 .. 0xC5FE */
+ 0x79B3, 0x7C60, 0x7C5F, 0x807E, 0x807D, 0x81DF, 0x8972,
+ 0x896F, 0x89FC, 0x8B80, 0x8D16, 0x8D17, 0x8E91, 0x8E93, 0x8F61,
+ 0x9148, 0x9444, 0x9451, 0x9452, 0x973D, 0x973E, 0x97C3, 0x97C1,
+ 0x986B, 0x9955, 0x9A55, 0x9A4D, 0x9AD2, 0x9B1A, 0x9C49, 0x9C31,
+ 0x9C3E, 0x9C3B, 0x9DD3, 0x9DD7, 0x9F34, 0x9F6C, 0x9F6A, 0x9F94,
+ 0x56CC, 0x5DD6, 0x6200, 0x6523, 0x652B, 0x652A, 0x66EC, 0x6B10,
+ 0x74DA, 0x7ACA, 0x7C64, 0x7C63, 0x7C65, 0x7E93, 0x7E96, 0x7E94,
+ 0x81E2, 0x8638, 0x863F, 0x8831, 0x8B8A, 0x9090, 0x908F, 0x9463,
+ 0x9460, 0x9464, 0x9768, 0x986F, 0x995C, 0x9A5A, 0x9A5B, 0x9A57,
+ 0x9AD3, 0x9AD4, 0x9AD1, 0x9C54, 0x9C57, 0x9C56, 0x9DE5, 0x9E9F,
+ 0x9EF4, 0x56D1, 0x58E9, 0x652C, 0x705E, 0x7671, 0x7672, 0x77D7,
+ 0x7F50, 0x7F88, 0x8836, 0x8839, 0x8862, 0x8B93, 0x8B92,
+ /* Big5-HKSCS 0xC640 .. 0xC67E */
+ 0x8B96, 0x8277, 0x8D1B, 0x91C0, 0x946A, 0x9742, 0x9748, 0x9744,
+ 0x97C6, 0x9870, 0x9A5F, 0x9B22, 0x9B58, 0x9C5F, 0x9DF9, 0x9DFA,
+ 0x9E7C, 0x9E7D, 0x9F07, 0x9F77, 0x9F72, 0x5EF3, 0x6B16, 0x7063,
+ 0x7C6C, 0x7C6E, 0x883B, 0x89C0, 0x8EA1, 0x91C1, 0x9472, 0x9470,
+ 0x9871, 0x995E, 0x9AD6, 0x9B23, 0x9ECC, 0x7064, 0x77DA, 0x8B9A,
+ 0x9477, 0x97C9, 0x9A62, 0x9A65, 0x7E9C, 0x8B9C, 0x8EAA, 0x91C5,
+ 0x947D, 0x947E, 0x947C, 0x9C77, 0x9C78, 0x9EF7, 0x8C54, 0x947F,
+ 0x9E1A, 0x7228, 0x9A6A, 0x9B31, 0x9E1B, 0x9E1E, 0x7C72,
+ /* Big5-HKSCS 0xC6A1 .. 0xC6FE */
+ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466,
+ 0x2467, 0x2468, 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478,
+ 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, 0x2170, 0x2171, 0x2172,
+ 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x4E36,
+ 0x4E3F, 0x4E85, 0x4EA0, 0x5182, 0x5196, 0x51AB, 0x52F9, 0x5338,
+ 0x5369, 0x53B6, 0x590A, 0x5B80, 0x5DDB, 0x2F33, 0x5E7F, 0xF6DF,
+ 0x5F50, 0x5F61, 0x6534, 0xF6E3, 0x7592, 0xF6E5, 0x8FB5, 0xF6E7,
+ 0x00A8, 0x02C6, 0x30FD, 0x30FE, 0x309D, 0x309E, 0xF6EE, 0xF6EF,
+ 0x3005, 0x3006, 0x3007, 0x30FC, 0xFF3B, 0xFF3D, 0x273D, 0x3041,
+ 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049,
+ 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051,
+ 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
+ /* Big5-HKSCS 0xC740 .. 0xC77E */
+ 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, 0x3060,
+ 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
+ 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070,
+ 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
+ 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080,
+ 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
+ 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 0x3090,
+ 0x3091, 0x3092, 0x3093, 0x30A1, 0x30A2, 0x30A3, 0x30A4,
+ /* Big5-HKSCS 0xC7A1 .. 0xC7FE */
+ 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB,
+ 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30B2, 0x30B3,
+ 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB,
+ 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3,
+ 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB,
+ 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0, 0x30D1, 0x30D2, 0x30D3,
+ 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9, 0x30DA, 0x30DB,
+ 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E3,
+ 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA, 0x30EB,
+ 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3,
+ 0x30F4, 0x30F5, 0x30F6, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414,
+ 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A,
+ /* Big5-HKSCS 0xC840 .. 0xC87E */
+ 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422,
+ 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A,
+ 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x0430, 0x0431, 0x0432,
+ 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439,
+ 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441,
+ 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449,
+ 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, 0x21E7, 0x21B8,
+ 0x21B9, 0xF7E5, 0xF7E6, 0x4E5A, 0xF7E8, 0x5202, 0xF7EA,
+ /* Big5-HKSCS 0xC8A1 .. 0xC8FE */
+ 0xF7EB, 0x5188, 0xF7ED, 0xF7EE, 0xF7EF, 0xF7F0, 0xF7F1,
+ 0xF7F2, 0xF7F3, 0xF7F4, 0xF7F5, 0xF7F6, 0xF7F7, 0xF7F8, 0xF7F9,
+ 0xF7FA, 0xF7FB, 0xF7FC, 0xF7FD, 0xF7FE, 0xF7FF, 0xF800, 0xF801,
+ 0xF802, 0xF803, 0xF804, 0xF805, 0xF806, 0xF807, 0xF808, 0xF809,
+ 0xF80A, 0xF80B, 0xF80C, 0xF80D, 0xF80E, 0xF80F, 0xF810, 0xF811,
+ 0xF812, 0xF813, 0xF814, 0xF815, 0xF816, 0xFFE2, 0xFFE4, 0xFF07,
+ 0xFF02, 0x3231, 0x2116, 0x2121, 0x309B, 0x309C, 0x2E80, 0x2E84,
+ 0x2E86, 0x2E87, 0x2E88, 0x2E8A, 0x2E8C, 0x2E8D, 0x2E95, 0x2E9C,
+ 0x2E9D, 0x2EA5, 0x2EA7, 0x2EAA, 0x2EAC, 0x2EAE, 0x2EB6, 0x2EBC,
+ 0x2EBE, 0x2EC6, 0x2ECA, 0x2ECC, 0x2ECD, 0x2ECF, 0x2ED6, 0x2ED7,
+ 0x2EDE, 0x2EE3, 0xF83C, 0xF83D, 0xF83E, 0x0283, 0x0250, 0x025B,
+ 0x0254, 0x0275, 0x0153, 0x00F8, 0x014B, 0x028A, 0x026A,
+ /* Big5-HKSCS 0xC940 .. 0xC97E */
+ 0x4E42, 0x4E5C, 0x51F5, 0x531A, 0x5382, 0x4E07, 0x4E0C, 0x4E47,
+ 0x4E8D, 0x56D7, 0xFA0C, 0x5C6E, 0x5F73, 0x4E0F, 0x5187, 0x4E0E,
+ 0x4E2E, 0x4E93, 0x4EC2, 0x4EC9, 0x4EC8, 0x5198, 0x52FC, 0x536C,
+ 0x53B9, 0x5720, 0x5903, 0x592C, 0x5C10, 0x5DFF, 0x65E1, 0x6BB3,
+ 0x6BCC, 0x6C14, 0x723F, 0x4E31, 0x4E3C, 0x4EE8, 0x4EDC, 0x4EE9,
+ 0x4EE1, 0x4EDD, 0x4EDA, 0x520C, 0x531C, 0x534C, 0x5722, 0x5723,
+ 0x5917, 0x592F, 0x5B81, 0x5B84, 0x5C12, 0x5C3B, 0x5C74, 0x5C73,
+ 0x5E04, 0x5E80, 0x5E82, 0x5FC9, 0x6209, 0x6250, 0x6C15,
+ /* Big5-HKSCS 0xC9A1 .. 0xC9FE */
+ 0x6C36, 0x6C43, 0x6C3F, 0x6C3B, 0x72AE, 0x72B0, 0x738A,
+ 0x79B8, 0x808A, 0x961E, 0x4F0E, 0x4F18, 0x4F2C, 0x4EF5, 0x4F14,
+ 0x4EF1, 0x4F00, 0x4EF7, 0x4F08, 0x4F1D, 0x4F02, 0x4F05, 0x4F22,
+ 0x4F13, 0x4F04, 0x4EF4, 0x4F12, 0x51B1, 0x5213, 0x5209, 0x5210,
+ 0x52A6, 0x5322, 0x531F, 0x534D, 0x538A, 0x5407, 0x56E1, 0x56DF,
+ 0x572E, 0x572A, 0x5734, 0x593C, 0x5980, 0x597C, 0x5985, 0x597B,
+ 0x597E, 0x5977, 0x597F, 0x5B56, 0x5C15, 0x5C25, 0x5C7C, 0x5C7A,
+ 0x5C7B, 0x5C7E, 0x5DDF, 0x5E75, 0x5E84, 0x5F02, 0x5F1A, 0x5F74,
+ 0x5FD5, 0x5FD4, 0x5FCF, 0x625C, 0x625E, 0x6264, 0x6261, 0x6266,
+ 0x6262, 0x6259, 0x6260, 0x625A, 0x6265, 0x65EF, 0x65EE, 0x673E,
+ 0x6739, 0x6738, 0x673B, 0x673A, 0x673F, 0x673C, 0x6733, 0x6C18,
+ 0x6C46, 0x6C52, 0x6C5C, 0x6C4F, 0x6C4A, 0x6C54, 0x6C4B,
+ /* Big5-HKSCS 0xCA40 .. 0xCA7E */
+ 0x6C4C, 0x7071, 0x725E, 0x72B4, 0x72B5, 0x738E, 0x752A, 0x767F,
+ 0x7A75, 0x7F51, 0x8278, 0x827C, 0x8280, 0x827D, 0x827F, 0x864D,
+ 0x897E, 0x9099, 0x9097, 0x9098, 0x909B, 0x9094, 0x9622, 0x9624,
+ 0x9620, 0x9623, 0x4F56, 0x4F3B, 0x4F62, 0x4F49, 0x4F53, 0x4F64,
+ 0x4F3E, 0x4F67, 0x4F52, 0x4F5F, 0x4F41, 0x4F58, 0x4F2D, 0x4F33,
+ 0x4F3F, 0x4F61, 0x518F, 0x51B9, 0x521C, 0x521E, 0x5221, 0x52AD,
+ 0x52AE, 0x5309, 0x5363, 0x5372, 0x538E, 0x538F, 0x5430, 0x5437,
+ 0x542A, 0x5454, 0x5445, 0x5419, 0x541C, 0x5425, 0x5418,
+ /* Big5-HKSCS 0xCAA1 .. 0xCAFE */
+ 0x543D, 0x544F, 0x5441, 0x5428, 0x5424, 0x5447, 0x56EE,
+ 0x56E7, 0x56E5, 0x5741, 0x5745, 0x574C, 0x5749, 0x574B, 0x5752,
+ 0x5906, 0x5940, 0x59A6, 0x5998, 0x59A0, 0x5997, 0x598E, 0x59A2,
+ 0x5990, 0x598F, 0x59A7, 0x59A1, 0x5B8E, 0x5B92, 0x5C28, 0x5C2A,
+ 0x5C8D, 0x5C8F, 0x5C88, 0x5C8B, 0x5C89, 0x5C92, 0x5C8A, 0x5C86,
+ 0x5C93, 0x5C95, 0x5DE0, 0x5E0A, 0x5E0E, 0x5E8B, 0x5E89, 0x5E8C,
+ 0x5E88, 0x5E8D, 0x5F05, 0x5F1D, 0x5F78, 0x5F76, 0x5FD2, 0x5FD1,
+ 0x5FD0, 0x5FED, 0x5FE8, 0x5FEE, 0x5FF3, 0x5FE1, 0x5FE4, 0x5FE3,
+ 0x5FFA, 0x5FEF, 0x5FF7, 0x5FFB, 0x6000, 0x5FF4, 0x623A, 0x6283,
+ 0x628C, 0x628E, 0x628F, 0x6294, 0x6287, 0x6271, 0x627B, 0x627A,
+ 0x6270, 0x6281, 0x6288, 0x6277, 0x627D, 0x6272, 0x6274, 0x6537,
+ 0x65F0, 0x65F4, 0x65F3, 0x65F2, 0x65F5, 0x6745, 0x6747,
+ /* Big5-HKSCS 0xCB40 .. 0xCB7E */
+ 0x6759, 0x6755, 0x674C, 0x6748, 0x675D, 0x674D, 0x675A, 0x674B,
+ 0x6BD0, 0x6C19, 0x6C1A, 0x6C78, 0x6C67, 0x6C6B, 0x6C84, 0x6C8B,
+ 0x6C8F, 0x6C71, 0x6C6F, 0x6C69, 0x6C9A, 0x6C6D, 0x6C87, 0x6C95,
+ 0x6C9C, 0x6C66, 0x6C73, 0x6C65, 0x6C7B, 0x6C8E, 0x7074, 0x707A,
+ 0x7263, 0x72BF, 0x72BD, 0x72C3, 0x72C6, 0x72C1, 0x72BA, 0x72C5,
+ 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753A, 0x7539, 0x7594,
+ 0x7595, 0x7681, 0x793D, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092,
+ 0x809C, 0x8290, 0x828F, 0x8285, 0x828E, 0x8291, 0x8293,
+ /* Big5-HKSCS 0xCBA1 .. 0xCBFE */
+ 0x828A, 0x8283, 0x8284, 0x8C78, 0x8FC9, 0x8FBF, 0x909F,
+ 0x90A1, 0x90A5, 0x909E, 0x90A7, 0x90A0, 0x9630, 0x9628, 0x962F,
+ 0x962D, 0x4E33, 0x4F98, 0x4F7C, 0x4F85, 0x4F7D, 0x4F80, 0x4F87,
+ 0x4F76, 0x4F74, 0x4F89, 0x4F84, 0x4F77, 0x4F4C, 0x4F97, 0x4F6A,
+ 0x4F9A, 0x4F79, 0x4F81, 0x4F78, 0x4F90, 0x4F9C, 0x4F94, 0x4F9E,
+ 0x4F92, 0x4F82, 0x4F95, 0x4F6B, 0x4F6E, 0x519E, 0x51BC, 0x51BE,
+ 0x5235, 0x5232, 0x5233, 0x5246, 0x5231, 0x52BC, 0x530A, 0x530B,
+ 0x533C, 0x5392, 0x5394, 0x5487, 0x547F, 0x5481, 0x5491, 0x5482,
+ 0x5488, 0x546B, 0x547A, 0x547E, 0x5465, 0x546C, 0x5474, 0x5466,
+ 0x548D, 0x546F, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464,
+ 0x56F7, 0x56F9, 0x576F, 0x5772, 0x576D, 0x576B, 0x5771, 0x5770,
+ 0x5776, 0x5780, 0x5775, 0x577B, 0x5773, 0x5774, 0x5762,
+ /* Big5-HKSCS 0xCC40 .. 0xCC7E */
+ 0x5768, 0x577D, 0x590C, 0x5945, 0x59B5, 0x59BA, 0x59CF, 0x59CE,
+ 0x59B2, 0x59CC, 0x59C1, 0x59B6, 0x59BC, 0x59C3, 0x59D6, 0x59B1,
+ 0x59BD, 0x59C0, 0x59C8, 0x59B4, 0x59C7, 0x5B62, 0x5B65, 0x5B93,
+ 0x5B95, 0x5C44, 0x5C47, 0x5CAE, 0x5CA4, 0x5CA0, 0x5CB5, 0x5CAF,
+ 0x5CA8, 0x5CAC, 0x5C9F, 0x5CA3, 0x5CAD, 0x5CA2, 0x5CAA, 0x5CA7,
+ 0x5C9D, 0x5CA5, 0x5CB6, 0x5CB0, 0x5CA6, 0x5E17, 0x5E14, 0x5E19,
+ 0x5F28, 0x5F22, 0x5F23, 0x5F24, 0x5F54, 0x5F82, 0x5F7E, 0x5F7D,
+ 0x5FDE, 0x5FE5, 0x602D, 0x6026, 0x6019, 0x6032, 0x600B,
+ /* Big5-HKSCS 0xCCA1 .. 0xCCFE */
+ 0x6034, 0x600A, 0x6017, 0x6033, 0x601A, 0x601E, 0x602C,
+ 0x6022, 0x600D, 0x6010, 0x602E, 0x6013, 0x6011, 0x600C, 0x6009,
+ 0x601C, 0x6214, 0x623D, 0x62AD, 0x62B4, 0x62D1, 0x62BE, 0x62AA,
+ 0x62B6, 0x62CA, 0x62AE, 0x62B3, 0x62AF, 0x62BB, 0x62A9, 0x62B0,
+ 0x62B8, 0x653D, 0x65A8, 0x65BB, 0x6609, 0x65FC, 0x6604, 0x6612,
+ 0x6608, 0x65FB, 0x6603, 0x660B, 0x660D, 0x6605, 0x65FD, 0x6611,
+ 0x6610, 0x66F6, 0x670A, 0x6785, 0x676C, 0x678E, 0x6792, 0x6776,
+ 0x677B, 0x6798, 0x6786, 0x6784, 0x6774, 0x678D, 0x678C, 0x677A,
+ 0x679F, 0x6791, 0x6799, 0x6783, 0x677D, 0x6781, 0x6778, 0x6779,
+ 0x6794, 0x6B25, 0x6B80, 0x6B7E, 0x6BDE, 0x6C1D, 0x6C93, 0x6CEC,
+ 0x6CEB, 0x6CEE, 0x6CD9, 0x6CB6, 0x6CD4, 0x6CAD, 0x6CE7, 0x6CB7,
+ 0x6CD0, 0x6CC2, 0x6CBA, 0x6CC3, 0x6CC6, 0x6CED, 0x6CF2,
+ /* Big5-HKSCS 0xCD40 .. 0xCD7E */
+ 0x6CD2, 0x6CDD, 0x6CB4, 0x6C8A, 0x6C9D, 0x6C80, 0x6CDE, 0x6CC0,
+ 0x6D30, 0x6CCD, 0x6CC7, 0x6CB0, 0x6CF9, 0x6CCF, 0x6CE9, 0x6CD1,
+ 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096,
+ 0x7082, 0x709A, 0x7083, 0x726A, 0x72D6, 0x72CB, 0x72D8, 0x72C9,
+ 0x72DC, 0x72D2, 0x72D4, 0x72DA, 0x72CC, 0x72D1, 0x73A4, 0x73A1,
+ 0x73AD, 0x73A6, 0x73A2, 0x73A0, 0x73AC, 0x739D, 0x74DD, 0x74E8,
+ 0x753F, 0x7540, 0x753E, 0x758C, 0x7598, 0x76AF, 0x76F3, 0x76F1,
+ 0x76F0, 0x76F5, 0x77F8, 0x77FC, 0x77F9, 0x77FB, 0x77FA,
+ /* Big5-HKSCS 0xCDA1 .. 0xCDFE */
+ 0x77F7, 0x7942, 0x793F, 0x79C5, 0x7A78, 0x7A7B, 0x7AFB,
+ 0x7C75, 0x7CFD, 0x8035, 0x808F, 0x80AE, 0x80A3, 0x80B8, 0x80B5,
+ 0x80AD, 0x8220, 0x82A0, 0x82C0, 0x82AB, 0x829A, 0x8298, 0x829B,
+ 0x82B5, 0x82A7, 0x82AE, 0x82BC, 0x829E, 0x82BA, 0x82B4, 0x82A8,
+ 0x82A1, 0x82A9, 0x82C2, 0x82A4, 0x82C3, 0x82B6, 0x82A2, 0x8670,
+ 0x866F, 0x866D, 0x866E, 0x8C56, 0x8FD2, 0x8FCB, 0x8FD3, 0x8FCD,
+ 0x8FD6, 0x8FD5, 0x8FD7, 0x90B2, 0x90B4, 0x90AF, 0x90B3, 0x90B0,
+ 0x9639, 0x963D, 0x963C, 0x963A, 0x9643, 0x4FCD, 0x4FC5, 0x4FD3,
+ 0x4FB2, 0x4FC9, 0x4FCB, 0x4FC1, 0x4FD4, 0x4FDC, 0x4FD9, 0x4FBB,
+ 0x4FB3, 0x4FDB, 0x4FC7, 0x4FD6, 0x4FBA, 0x4FC0, 0x4FB9, 0x4FEC,
+ 0x5244, 0x5249, 0x52C0, 0x52C2, 0x533D, 0x537C, 0x5397, 0x5396,
+ 0x5399, 0x5398, 0x54BA, 0x54A1, 0x54AD, 0x54A5, 0x54CF,
+ /* Big5-HKSCS 0xCE40 .. 0xCE7E */
+ 0x54C3, 0x830D, 0x54B7, 0x54AE, 0x54D6, 0x54B6, 0x54C5, 0x54C6,
+ 0x54A0, 0x5470, 0x54BC, 0x54A2, 0x54BE, 0x5472, 0x54DE, 0x54B0,
+ 0x57B5, 0x579E, 0x579F, 0x57A4, 0x578C, 0x5797, 0x579D, 0x579B,
+ 0x5794, 0x5798, 0x578F, 0x5799, 0x57A5, 0x579A, 0x5795, 0x58F4,
+ 0x590D, 0x5953, 0x59E1, 0x59DE, 0x59EE, 0x5A00, 0x59F1, 0x59DD,
+ 0x59FA, 0x59FD, 0x59FC, 0x59F6, 0x59E4, 0x59F2, 0x59F7, 0x59DB,
+ 0x59E9, 0x59F3, 0x59F5, 0x59E0, 0x59FE, 0x59F4, 0x59ED, 0x5BA8,
+ 0x5C4C, 0x5CD0, 0x5CD8, 0x5CCC, 0x5CD7, 0x5CCB, 0x5CDB,
+ /* Big5-HKSCS 0xCEA1 .. 0xCEFE */
+ 0x5CDE, 0x5CDA, 0x5CC9, 0x5CC7, 0x5CCA, 0x5CD6, 0x5CD3,
+ 0x5CD4, 0x5CCF, 0x5CC8, 0x5CC6, 0x5CCE, 0x5CDF, 0x5CF8, 0x5DF9,
+ 0x5E21, 0x5E22, 0x5E23, 0x5E20, 0x5E24, 0x5EB0, 0x5EA4, 0x5EA2,
+ 0x5E9B, 0x5EA3, 0x5EA5, 0x5F07, 0x5F2E, 0x5F56, 0x5F86, 0x6037,
+ 0x6039, 0x6054, 0x6072, 0x605E, 0x6045, 0x6053, 0x6047, 0x6049,
+ 0x605B, 0x604C, 0x6040, 0x6042, 0x605F, 0x6024, 0x6044, 0x6058,
+ 0x6066, 0x606E, 0x6242, 0x6243, 0x62CF, 0x630D, 0x630B, 0x62F5,
+ 0x630E, 0x6303, 0x62EB, 0x62F9, 0x630F, 0x630C, 0x62F8, 0x62F6,
+ 0x6300, 0x6313, 0x6314, 0x62FA, 0x6315, 0x62FB, 0x62F0, 0x6541,
+ 0x6543, 0x65AA, 0x65BF, 0x6636, 0x6621, 0x6632, 0x6635, 0x661C,
+ 0x6626, 0x6622, 0x6633, 0x662B, 0x663A, 0x661D, 0x6634, 0x6639,
+ 0x662E, 0x670F, 0x6710, 0x67C1, 0x67F2, 0x67C8, 0x67BA,
+ /* Big5-HKSCS 0xCF40 .. 0xCF7E */
+ 0x67DC, 0x67BB, 0x67F8, 0x67D8, 0x67C0, 0x67B7, 0x67C5, 0x67EB,
+ 0x67E4, 0x67DF, 0x67B5, 0x67CD, 0x67B3, 0x67F7, 0x67F6, 0x67EE,
+ 0x67E3, 0x67C2, 0x67B9, 0x67CE, 0x67E7, 0x67F0, 0x67B2, 0x67FC,
+ 0x67C6, 0x67ED, 0x67CC, 0x67AE, 0x67E6, 0x67DB, 0x67FA, 0x67C9,
+ 0x67CA, 0x67C3, 0x67EA, 0x67CB, 0x6B28, 0x6B82, 0x6B84, 0x6BB6,
+ 0x6BD6, 0x6BD8, 0x6BE0, 0x6C20, 0x6C21, 0x6D28, 0x6D34, 0x6D2D,
+ 0x6D1F, 0x6D3C, 0x6D3F, 0x6D12, 0x6D0A, 0x6CDA, 0x6D33, 0x6D04,
+ 0x6D19, 0x6D3A, 0x6D1A, 0x6D11, 0x6D00, 0x6D1D, 0x6D42,
+ /* Big5-HKSCS 0xCFA1 .. 0xCFFE */
+ 0x6D01, 0x6D18, 0x6D37, 0x6D03, 0x6D0F, 0x6D40, 0x6D07,
+ 0x6D20, 0x6D2C, 0x6D08, 0x6D22, 0x6D09, 0x6D10, 0x70B7, 0x709F,
+ 0x70BE, 0x70B1, 0x70B0, 0x70A1, 0x70B4, 0x70B5, 0x70A9, 0x7241,
+ 0x7249, 0x724A, 0x726C, 0x7270, 0x7273, 0x726E, 0x72CA, 0x72E4,
+ 0x72E8, 0x72EB, 0x72DF, 0x72EA, 0x72E6, 0x72E3, 0x7385, 0x73CC,
+ 0x73C2, 0x73C8, 0x73C5, 0x73B9, 0x73B6, 0x73B5, 0x73B4, 0x73EB,
+ 0x73BF, 0x73C7, 0x73BE, 0x73C3, 0x73C6, 0x73B8, 0x73CB, 0x74EC,
+ 0x74EE, 0x752E, 0x7547, 0x7548, 0x75A7, 0x75AA, 0x7679, 0x76C4,
+ 0x7708, 0x7703, 0x7704, 0x7705, 0x770A, 0x76F7, 0x76FB, 0x76FA,
+ 0x77E7, 0x77E8, 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780F,
+ 0x780E, 0x7809, 0x7803, 0x7813, 0x794A, 0x794C, 0x794B, 0x7945,
+ 0x7944, 0x79D5, 0x79CD, 0x79CF, 0x79D6, 0x79CE, 0x7A80,
+ /* Big5-HKSCS 0xD040 .. 0xD07E */
+ 0x7A7E, 0x7AD1, 0x7B00, 0x7B01, 0x7C7A, 0x7C78, 0x7C79, 0x7C7F,
+ 0x7C80, 0x7C81, 0x7D03, 0x7D08, 0x7D01, 0x7F58, 0x7F91, 0x7F8D,
+ 0x7FBE, 0x8007, 0x800E, 0x800F, 0x8014, 0x8037, 0x80D8, 0x80C7,
+ 0x80E0, 0x80D1, 0x80C8, 0x80C2, 0x80D0, 0x80C5, 0x80E3, 0x80D9,
+ 0x80DC, 0x80CA, 0x80D5, 0x80C9, 0x80CF, 0x80D7, 0x80E6, 0x80CD,
+ 0x81FF, 0x8221, 0x8294, 0x82D9, 0x82FE, 0x82F9, 0x8307, 0x82E8,
+ 0x8300, 0x82D5, 0x833A, 0x82EB, 0x82D6, 0x82F4, 0x82EC, 0x82E1,
+ 0x82F2, 0x82F5, 0x830C, 0x82FB, 0x82F6, 0x82F0, 0x82EA,
+ /* Big5-HKSCS 0xD0A1 .. 0xD0FE */
+ 0x82E4, 0x82E0, 0x82FA, 0x82F3, 0x82ED, 0x8677, 0x8674,
+ 0x867C, 0x8673, 0x8841, 0x884E, 0x8867, 0x886A, 0x8869, 0x89D3,
+ 0x8A04, 0x8A07, 0x8D72, 0x8FE3, 0x8FE1, 0x8FEE, 0x8FE0, 0x90F1,
+ 0x90BD, 0x90BF, 0x90D5, 0x90C5, 0x90BE, 0x90C7, 0x90CB, 0x90C8,
+ 0x91D4, 0x91D3, 0x9654, 0x964F, 0x9651, 0x9653, 0x964A, 0x964E,
+ 0x501E, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501B, 0x4FF5,
+ 0x4FF4, 0x5033, 0x5037, 0x502C, 0x4FF6, 0x4FF7, 0x5017, 0x501C,
+ 0x5020, 0x5027, 0x5035, 0x502F, 0x5031, 0x500E, 0x515A, 0x5194,
+ 0x5193, 0x51CA, 0x51C4, 0x51C5, 0x51C8, 0x51CE, 0x5261, 0x525A,
+ 0x5252, 0x525E, 0x525F, 0x5255, 0x5262, 0x52CD, 0x530E, 0x539E,
+ 0x5526, 0x54E2, 0x5517, 0x5512, 0x54E7, 0x54F3, 0x54E4, 0x551A,
+ 0x54FF, 0x5504, 0x5508, 0x54EB, 0x5511, 0x5505, 0x54F1,
+ /* Big5-HKSCS 0xD140 .. 0xD17E */
+ 0x550A, 0x54FB, 0x54F7, 0x54F8, 0x54E0, 0x550E, 0x5503, 0x550B,
+ 0x5701, 0x5702, 0x57CC, 0x5832, 0x57D5, 0x57D2, 0x57BA, 0x57C6,
+ 0x57BD, 0x57BC, 0x57B8, 0x57B6, 0x57BF, 0x57C7, 0x57D0, 0x57B9,
+ 0x57C1, 0x590E, 0x594A, 0x5A19, 0x5A16, 0x5A2D, 0x5A2E, 0x5A15,
+ 0x5A0F, 0x5A17, 0x5A0A, 0x5A1E, 0x5A33, 0x5B6C, 0x5BA7, 0x5BAD,
+ 0x5BAC, 0x5C03, 0x5C56, 0x5C54, 0x5CEC, 0x5CFF, 0x5CEE, 0x5CF1,
+ 0x5CF7, 0x5D00, 0x5CF9, 0x5E29, 0x5E28, 0x5EA8, 0x5EAE, 0x5EAA,
+ 0x5EAC, 0x5F33, 0x5F30, 0x5F67, 0x605D, 0x605A, 0x6067,
+ /* Big5-HKSCS 0xD1A1 .. 0xD1FE */
+ 0x6041, 0x60A2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609D,
+ 0x6083, 0x6095, 0x609B, 0x6097, 0x6087, 0x609C, 0x608E, 0x6219,
+ 0x6246, 0x62F2, 0x6310, 0x6356, 0x632C, 0x6344, 0x6345, 0x6336,
+ 0x6343, 0x63E4, 0x6339, 0x634B, 0x634A, 0x633C, 0x6329, 0x6341,
+ 0x6334, 0x6358, 0x6354, 0x6359, 0x632D, 0x6347, 0x6333, 0x635A,
+ 0x6351, 0x6338, 0x6357, 0x6340, 0x6348, 0x654A, 0x6546, 0x65C6,
+ 0x65C3, 0x65C4, 0x65C2, 0x664A, 0x665F, 0x6647, 0x6651, 0x6712,
+ 0x6713, 0x681F, 0x681A, 0x6849, 0x6832, 0x6833, 0x683B, 0x684B,
+ 0x684F, 0x6816, 0x6831, 0x681C, 0x6835, 0x682B, 0x682D, 0x682F,
+ 0x684E, 0x6844, 0x6834, 0x681D, 0x6812, 0x6814, 0x6826, 0x6828,
+ 0x682E, 0x684D, 0x683A, 0x6825, 0x6820, 0x6B2C, 0x6B2F, 0x6B2D,
+ 0x6B31, 0x6B34, 0x6B6D, 0x8082, 0x6B88, 0x6BE6, 0x6BE4,
+ /* Big5-HKSCS 0xD240 .. 0xD27E */
+ 0x6BE8, 0x6BE3, 0x6BE2, 0x6BE7, 0x6C25, 0x6D7A, 0x6D63, 0x6D64,
+ 0x6D76, 0x6D0D, 0x6D61, 0x6D92, 0x6D58, 0x6D62, 0x6D6D, 0x6D6F,
+ 0x6D91, 0x6D8D, 0x6DEF, 0x6D7F, 0x6D86, 0x6D5E, 0x6D67, 0x6D60,
+ 0x6D97, 0x6D70, 0x6D7C, 0x6D5F, 0x6D82, 0x6D98, 0x6D2F, 0x6D68,
+ 0x6D8B, 0x6D7E, 0x6D80, 0x6D84, 0x6D16, 0x6D83, 0x6D7B, 0x6D7D,
+ 0x6D75, 0x6D90, 0x70DC, 0x70D3, 0x70D1, 0x70DD, 0x70CB, 0x7F39,
+ 0x70E2, 0x70D7, 0x70D2, 0x70DE, 0x70E0, 0x70D4, 0x70CD, 0x70C5,
+ 0x70C6, 0x70C7, 0x70DA, 0x70CE, 0x70E1, 0x7242, 0x7278,
+ /* Big5-HKSCS 0xD2A1 .. 0xD2FE */
+ 0x7277, 0x7276, 0x7300, 0x72FA, 0x72F4, 0x72FE, 0x72F6,
+ 0x72F3, 0x72FB, 0x7301, 0x73D3, 0x73D9, 0x73E5, 0x73D6, 0x73BC,
+ 0x73E7, 0x73E3, 0x73E9, 0x73DC, 0x73D2, 0x73DB, 0x73D4, 0x73DD,
+ 0x73DA, 0x73D7, 0x73D8, 0x73E8, 0x74DE, 0x74DF, 0x74F4, 0x74F5,
+ 0x7521, 0x755B, 0x755F, 0x75B0, 0x75C1, 0x75BB, 0x75C4, 0x75C0,
+ 0x75BF, 0x75B6, 0x75BA, 0x768A, 0x76C9, 0x771D, 0x771B, 0x7710,
+ 0x7713, 0x7712, 0x7723, 0x7711, 0x7715, 0x7719, 0x771A, 0x7722,
+ 0x7727, 0x7823, 0x782C, 0x7822, 0x7835, 0x782F, 0x7828, 0x782E,
+ 0x782B, 0x7821, 0x7829, 0x7833, 0x782A, 0x7831, 0x7954, 0x795B,
+ 0x794F, 0x795C, 0x7953, 0x7952, 0x7951, 0x79EB, 0x79EC, 0x79E0,
+ 0x79EE, 0x79ED, 0x79EA, 0x79DC, 0x79DE, 0x79DD, 0x7A86, 0x7A89,
+ 0x7A85, 0x7A8B, 0x7A8C, 0x7A8A, 0x7A87, 0x7AD8, 0x7B10,
+ /* Big5-HKSCS 0xD340 .. 0xD37E */
+ 0x7B04, 0x7B13, 0x7B05, 0x7B0F, 0x7B08, 0x7B0A, 0x7B0E, 0x7B09,
+ 0x7B12, 0x7C84, 0x7C91, 0x7C8A, 0x7C8C, 0x7C88, 0x7C8D, 0x7C85,
+ 0x7D1E, 0x7D1D, 0x7D11, 0x7D0E, 0x7D18, 0x7D16, 0x7D13, 0x7D1F,
+ 0x7D12, 0x7D0F, 0x7D0C, 0x7F5C, 0x7F61, 0x7F5E, 0x7F60, 0x7F5D,
+ 0x7F5B, 0x7F96, 0x7F92, 0x7FC3, 0x7FC2, 0x7FC0, 0x8016, 0x803E,
+ 0x8039, 0x80FA, 0x80F2, 0x80F9, 0x80F5, 0x8101, 0x80FB, 0x8100,
+ 0x8201, 0x822F, 0x8225, 0x8333, 0x832D, 0x8344, 0x8319, 0x8351,
+ 0x8325, 0x8356, 0x833F, 0x8341, 0x8326, 0x831C, 0x8322,
+ /* Big5-HKSCS 0xD3A1 .. 0xD3FE */
+ 0x8342, 0x834E, 0x831B, 0x832A, 0x8308, 0x833C, 0x834D,
+ 0x8316, 0x8324, 0x8320, 0x8337, 0x832F, 0x8329, 0x8347, 0x8345,
+ 0x834C, 0x8353, 0x831E, 0x832C, 0x834B, 0x8327, 0x8348, 0x8653,
+ 0x8652, 0x86A2, 0x86A8, 0x8696, 0x868D, 0x8691, 0x869E, 0x8687,
+ 0x8697, 0x8686, 0x868B, 0x869A, 0x8685, 0x86A5, 0x8699, 0x86A1,
+ 0x86A7, 0x8695, 0x8698, 0x868E, 0x869D, 0x8690, 0x8694, 0x8843,
+ 0x8844, 0x886D, 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887F,
+ 0x886F, 0x8883, 0x887E, 0x8874, 0x887C, 0x8A12, 0x8C47, 0x8C57,
+ 0x8C7B, 0x8CA4, 0x8CA3, 0x8D76, 0x8D78, 0x8DB5, 0x8DB7, 0x8DB6,
+ 0x8ED1, 0x8ED3, 0x8FFE, 0x8FF5, 0x9002, 0x8FFF, 0x8FFB, 0x9004,
+ 0x8FFC, 0x8FF6, 0x90D6, 0x90E0, 0x90D9, 0x90DA, 0x90E3, 0x90DF,
+ 0x90E5, 0x90D8, 0x90DB, 0x90D7, 0x90DC, 0x90E4, 0x9150,
+ /* Big5-HKSCS 0xD440 .. 0xD47E */
+ 0x914E, 0x914F, 0x91D5, 0x91E2, 0x91DA, 0x965C, 0x965F, 0x96BC,
+ 0x98E3, 0x9ADF, 0x9B2F, 0x4E7F, 0x5070, 0x506A, 0x5061, 0x505E,
+ 0x5060, 0x5053, 0x504B, 0x505D, 0x5072, 0x5048, 0x504D, 0x5041,
+ 0x505B, 0x504A, 0x5062, 0x5015, 0x5045, 0x505F, 0x5069, 0x506B,
+ 0x5063, 0x5064, 0x5046, 0x5040, 0x506E, 0x5073, 0x5057, 0x5051,
+ 0x51D0, 0x526B, 0x526D, 0x526C, 0x526E, 0x52D6, 0x52D3, 0x532D,
+ 0x539C, 0x5575, 0x5576, 0x553C, 0x554D, 0x5550, 0x5534, 0x552A,
+ 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545,
+ /* Big5-HKSCS 0xD4A1 .. 0xD4FE */
+ 0x550C, 0x5532, 0x5565, 0x554E, 0x5539, 0x5548, 0x552D,
+ 0x553B, 0x5540, 0x554B, 0x570A, 0x5707, 0x57FB, 0x5814, 0x57E2,
+ 0x57F6, 0x57DC, 0x57F4, 0x5800, 0x57ED, 0x57FD, 0x5808, 0x57F8,
+ 0x580B, 0x57F3, 0x57CF, 0x5807, 0x57EE, 0x57E3, 0x57F2, 0x57E5,
+ 0x57EC, 0x57E1, 0x580E, 0x57FC, 0x5810, 0x57E7, 0x5801, 0x580C,
+ 0x57F1, 0x57E9, 0x57F0, 0x580D, 0x5804, 0x595C, 0x5A60, 0x5A58,
+ 0x5A55, 0x5A67, 0x5A5E, 0x5A38, 0x5A35, 0x5A6D, 0x5A50, 0x5A5F,
+ 0x5A65, 0x5A6C, 0x5A53, 0x5A64, 0x5A57, 0x5A43, 0x5A5D, 0x5A52,
+ 0x5A44, 0x5A5B, 0x5A48, 0x5A8E, 0x5A3E, 0x5A4D, 0x5A39, 0x5A4C,
+ 0x5A70, 0x5A69, 0x5A47, 0x5A51, 0x5A56, 0x5A42, 0x5A5C, 0x5B72,
+ 0x5B6E, 0x5BC1, 0x5BC0, 0x5C59, 0x5D1E, 0x5D0B, 0x5D1D, 0x5D1A,
+ 0x5D20, 0x5D0C, 0x5D28, 0x5D0D, 0x5D26, 0x5D25, 0x5D0F,
+ /* Big5-HKSCS 0xD540 .. 0xD57E */
+ 0x5D30, 0x5D12, 0x5D23, 0x5D1F, 0x5D2E, 0x5E3E, 0x5E34, 0x5EB1,
+ 0x5EB4, 0x5EB9, 0x5EB2, 0x5EB3, 0x5F36, 0x5F38, 0x5F9B, 0x5F96,
+ 0x5F9F, 0x608A, 0x6090, 0x6086, 0x60BE, 0x60B0, 0x60BA, 0x60D3,
+ 0x60D4, 0x60CF, 0x60E4, 0x60D9, 0x60DD, 0x60C8, 0x60B1, 0x60DB,
+ 0x60B7, 0x60CA, 0x60BF, 0x60C3, 0x60CD, 0x60C0, 0x6332, 0x6365,
+ 0x638A, 0x6382, 0x637D, 0x63BD, 0x639E, 0x63AD, 0x639D, 0x6397,
+ 0x63AB, 0x638E, 0x636F, 0x6387, 0x6390, 0x636E, 0x63AF, 0x6375,
+ 0x639C, 0x636D, 0x63AE, 0x637C, 0x63A4, 0x633B, 0x639F,
+ /* Big5-HKSCS 0xD5A1 .. 0xD5FE */
+ 0x6378, 0x6385, 0x6381, 0x6391, 0x638D, 0x6370, 0x6553,
+ 0x65CD, 0x6665, 0x6661, 0x665B, 0x6659, 0x665C, 0x6662, 0x6718,
+ 0x6879, 0x6887, 0x6890, 0x689C, 0x686D, 0x686E, 0x68AE, 0x68AB,
+ 0x6956, 0x686F, 0x68A3, 0x68AC, 0x68A9, 0x6875, 0x6874, 0x68B2,
+ 0x688F, 0x6877, 0x6892, 0x687C, 0x686B, 0x6872, 0x68AA, 0x6880,
+ 0x6871, 0x687E, 0x689B, 0x6896, 0x688B, 0x68A0, 0x6889, 0x68A4,
+ 0x6878, 0x687B, 0x6891, 0x688C, 0x688A, 0x687D, 0x6B36, 0x6B33,
+ 0x6B37, 0x6B38, 0x6B91, 0x6B8F, 0x6B8D, 0x6B8E, 0x6B8C, 0x6C2A,
+ 0x6DC0, 0x6DAB, 0x6DB4, 0x6DB3, 0x6E74, 0x6DAC, 0x6DE9, 0x6DE2,
+ 0x6DB7, 0x6DF6, 0x6DD4, 0x6E00, 0x6DC8, 0x6DE0, 0x6DDF, 0x6DD6,
+ 0x6DBE, 0x6DE5, 0x6DDC, 0x6DDD, 0x6DDB, 0x6DF4, 0x6DCA, 0x6DBD,
+ 0x6DED, 0x6DF0, 0x6DBA, 0x6DD5, 0x6DC2, 0x6DCF, 0x6DC9,
+ /* Big5-HKSCS 0xD640 .. 0xD67E */
+ 0x6DD0, 0x6DF2, 0x6DD3, 0x6DFD, 0x6DD7, 0x6DCD, 0x6DE3, 0x6DBB,
+ 0x70FA, 0x710D, 0x70F7, 0x7117, 0x70F4, 0x710C, 0x70F0, 0x7104,
+ 0x70F3, 0x7110, 0x70FC, 0x70FF, 0x7106, 0x7113, 0x7100, 0x70F8,
+ 0x70F6, 0x710B, 0x7102, 0x710E, 0x727E, 0x727B, 0x727C, 0x727F,
+ 0x731D, 0x7317, 0x7307, 0x7311, 0x7318, 0x730A, 0x7308, 0x72FF,
+ 0x730F, 0x731E, 0x7388, 0x73F6, 0x73F8, 0x73F5, 0x7404, 0x7401,
+ 0x73FD, 0x7407, 0x7400, 0x73FA, 0x73FC, 0x73FF, 0x740C, 0x740B,
+ 0x73F4, 0x7408, 0x7564, 0x7563, 0x75CE, 0x75D2, 0x75CF,
+ /* Big5-HKSCS 0xD6A1 .. 0xD6FE */
+ 0x75CB, 0x75CC, 0x75D1, 0x75D0, 0x768F, 0x7689, 0x76D3,
+ 0x7739, 0x772F, 0x772D, 0x7731, 0x7732, 0x7734, 0x7733, 0x773D,
+ 0x7725, 0x773B, 0x7735, 0x7848, 0x7852, 0x7849, 0x784D, 0x784A,
+ 0x784C, 0x7826, 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796A,
+ 0x7963, 0x796B, 0x7961, 0x79BB, 0x79FA, 0x79F8, 0x79F6, 0x79F7,
+ 0x7A8F, 0x7A94, 0x7A90, 0x7B35, 0x7B47, 0x7B34, 0x7B25, 0x7B30,
+ 0x7B22, 0x7B24, 0x7B33, 0x7B18, 0x7B2A, 0x7B1D, 0x7B31, 0x7B2B,
+ 0x7B2D, 0x7B2F, 0x7B32, 0x7B38, 0x7B1A, 0x7B23, 0x7C94, 0x7C98,
+ 0x7C96, 0x7CA3, 0x7D35, 0x7D3D, 0x7D38, 0x7D36, 0x7D3A, 0x7D45,
+ 0x7D2C, 0x7D29, 0x7D41, 0x7D47, 0x7D3E, 0x7D3F, 0x7D4A, 0x7D3B,
+ 0x7D28, 0x7F63, 0x7F95, 0x7F9C, 0x7F9D, 0x7F9B, 0x7FCA, 0x7FCB,
+ 0x7FCD, 0x7FD0, 0x7FD1, 0x7FC7, 0x7FCF, 0x7FC9, 0x801F,
+ /* Big5-HKSCS 0xD740 .. 0xD77E */
+ 0x801E, 0x801B, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119,
+ 0x811B, 0x812D, 0x811F, 0x812C, 0x811E, 0x8121, 0x8115, 0x8127,
+ 0x811D, 0x8122, 0x8211, 0x8238, 0x8233, 0x823A, 0x8234, 0x8232,
+ 0x8274, 0x8390, 0x83A3, 0x83A8, 0x838D, 0x837A, 0x8373, 0x83A4,
+ 0x8374, 0x838F, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83A9,
+ 0x837D, 0x8383, 0x838C, 0x839D, 0x839B, 0x83AA, 0x838B, 0x837E,
+ 0x83A5, 0x83AF, 0x8388, 0x8397, 0x83B0, 0x837F, 0x83A6, 0x8387,
+ 0x83AE, 0x8376, 0x839A, 0x8659, 0x8656, 0x86BF, 0x86B7,
+ /* Big5-HKSCS 0xD7A1 .. 0xD7FE */
+ 0x86C2, 0x86C1, 0x86C5, 0x86BA, 0x86B0, 0x86C8, 0x86B9,
+ 0x86B3, 0x86B8, 0x86CC, 0x86B4, 0x86BB, 0x86BC, 0x86C3, 0x86BD,
+ 0x86BE, 0x8852, 0x8889, 0x8895, 0x88A8, 0x88A2, 0x88AA, 0x889A,
+ 0x8891, 0x88A1, 0x889F, 0x8898, 0x88A7, 0x8899, 0x889B, 0x8897,
+ 0x88A4, 0x88AC, 0x888C, 0x8893, 0x888E, 0x8982, 0x89D6, 0x89D9,
+ 0x89D5, 0x8A30, 0x8A27, 0x8A2C, 0x8A1E, 0x8C39, 0x8C3B, 0x8C5C,
+ 0x8C5D, 0x8C7D, 0x8CA5, 0x8D7D, 0x8D7B, 0x8D79, 0x8DBC, 0x8DC2,
+ 0x8DB9, 0x8DBF, 0x8DC1, 0x8ED8, 0x8EDE, 0x8EDD, 0x8EDC, 0x8ED7,
+ 0x8EE0, 0x8EE1, 0x9024, 0x900B, 0x9011, 0x901C, 0x900C, 0x9021,
+ 0x90EF, 0x90EA, 0x90F0, 0x90F4, 0x90F2, 0x90F3, 0x90D4, 0x90EB,
+ 0x90EC, 0x90E9, 0x9156, 0x9158, 0x915A, 0x9153, 0x9155, 0x91EC,
+ 0x91F4, 0x91F1, 0x91F3, 0x91F8, 0x91E4, 0x91F9, 0x91EA,
+ /* Big5-HKSCS 0xD840 .. 0xD87E */
+ 0x91EB, 0x91F7, 0x91E8, 0x91EE, 0x957A, 0x9586, 0x9588, 0x967C,
+ 0x966D, 0x966B, 0x9671, 0x966F, 0x96BF, 0x976A, 0x9804, 0x98E5,
+ 0x9997, 0x509B, 0x5095, 0x5094, 0x509E, 0x508B, 0x50A3, 0x5083,
+ 0x508C, 0x508E, 0x509D, 0x5068, 0x509C, 0x5092, 0x5082, 0x5087,
+ 0x515F, 0x51D4, 0x5312, 0x5311, 0x53A4, 0x53A7, 0x5591, 0x55A8,
+ 0x55A5, 0x55AD, 0x5577, 0x5645, 0x55A2, 0x5593, 0x5588, 0x558F,
+ 0x55B5, 0x5581, 0x55A3, 0x5592, 0x55A4, 0x557D, 0x558C, 0x55A6,
+ 0x557F, 0x5595, 0x55A1, 0x558E, 0x570C, 0x5829, 0x5837,
+ /* Big5-HKSCS 0xD8A1 .. 0xD8FE */
+ 0x5819, 0x581E, 0x5827, 0x5823, 0x5828, 0x57F5, 0x5848,
+ 0x5825, 0x581C, 0x581B, 0x5833, 0x583F, 0x5836, 0x582E, 0x5839,
+ 0x5838, 0x582D, 0x582C, 0x583B, 0x5961, 0x5AAF, 0x5A94, 0x5A9F,
+ 0x5A7A, 0x5AA2, 0x5A9E, 0x5A78, 0x5AA6, 0x5A7C, 0x5AA5, 0x5AAC,
+ 0x5A95, 0x5AAE, 0x5A37, 0x5A84, 0x5A8A, 0x5A97, 0x5A83, 0x5A8B,
+ 0x5AA9, 0x5A7B, 0x5A7D, 0x5A8C, 0x5A9C, 0x5A8F, 0x5A93, 0x5A9D,
+ 0x5BEA, 0x5BCD, 0x5BCB, 0x5BD4, 0x5BD1, 0x5BCA, 0x5BCE, 0x5C0C,
+ 0x5C30, 0x5D37, 0x5D43, 0x5D6B, 0x5D41, 0x5D4B, 0x5D3F, 0x5D35,
+ 0x5D51, 0x5D4E, 0x5D55, 0x5D33, 0x5D3A, 0x5D52, 0x5D3D, 0x5D31,
+ 0x5D59, 0x5D42, 0x5D39, 0x5D49, 0x5D38, 0x5D3C, 0x5D32, 0x5D36,
+ 0x5D40, 0x5D45, 0x5E44, 0x5E41, 0x5F58, 0x5FA6, 0x5FA5, 0x5FAB,
+ 0x60C9, 0x60B9, 0x60CC, 0x60E2, 0x60CE, 0x60C4, 0x6114,
+ /* Big5-HKSCS 0xD940 .. 0xD97E */
+ 0x60F2, 0x610A, 0x6116, 0x6105, 0x60F5, 0x6113, 0x60F8, 0x60FC,
+ 0x60FE, 0x60C1, 0x6103, 0x6118, 0x611D, 0x6110, 0x60FF, 0x6104,
+ 0x610B, 0x624A, 0x6394, 0x63B1, 0x63B0, 0x63CE, 0x63E5, 0x63E8,
+ 0x63EF, 0x63C3, 0x649D, 0x63F3, 0x63CA, 0x63E0, 0x63F6, 0x63D5,
+ 0x63F2, 0x63F5, 0x6461, 0x63DF, 0x63BE, 0x63DD, 0x63DC, 0x63C4,
+ 0x63D8, 0x63D3, 0x63C2, 0x63C7, 0x63CC, 0x63CB, 0x63C8, 0x63F0,
+ 0x63D7, 0x63D9, 0x6532, 0x6567, 0x656A, 0x6564, 0x655C, 0x6568,
+ 0x6565, 0x658C, 0x659D, 0x659E, 0x65AE, 0x65D0, 0x65D2,
+ /* Big5-HKSCS 0xD9A1 .. 0xD9FE */
+ 0x667C, 0x666C, 0x667B, 0x6680, 0x6671, 0x6679, 0x666A,
+ 0x6672, 0x6701, 0x690C, 0x68D3, 0x6904, 0x68DC, 0x692A, 0x68EC,
+ 0x68EA, 0x68F1, 0x690F, 0x68D6, 0x68F7, 0x68EB, 0x68E4, 0x68F6,
+ 0x6913, 0x6910, 0x68F3, 0x68E1, 0x6907, 0x68CC, 0x6908, 0x6970,
+ 0x68B4, 0x6911, 0x68EF, 0x68C6, 0x6914, 0x68F8, 0x68D0, 0x68FD,
+ 0x68FC, 0x68E8, 0x690B, 0x690A, 0x6917, 0x68CE, 0x68C8, 0x68DD,
+ 0x68DE, 0x68E6, 0x68F4, 0x68D1, 0x6906, 0x68D4, 0x68E9, 0x6915,
+ 0x6925, 0x68C7, 0x6B39, 0x6B3B, 0x6B3F, 0x6B3C, 0x6B94, 0x6B97,
+ 0x6B99, 0x6B95, 0x6BBD, 0x6BF0, 0x6BF2, 0x6BF3, 0x6C30, 0x6DFC,
+ 0x6E46, 0x6E47, 0x6E1F, 0x6E49, 0x6E88, 0x6E3C, 0x6E3D, 0x6E45,
+ 0x6E62, 0x6E2B, 0x6E3F, 0x6E41, 0x6E5D, 0x6E73, 0x6E1C, 0x6E33,
+ 0x6E4B, 0x6E40, 0x6E51, 0x6E3B, 0x6E03, 0x6E2E, 0x6E5E,
+ /* Big5-HKSCS 0xDA40 .. 0xDA7E */
+ 0x6E68, 0x6E5C, 0x6E61, 0x6E31, 0x6E28, 0x6E60, 0x6E71, 0x6E6B,
+ 0x6E39, 0x6E22, 0x6E30, 0x6E53, 0x6E65, 0x6E27, 0x6E78, 0x6E64,
+ 0x6E77, 0x6E55, 0x6E79, 0x6E52, 0x6E66, 0x6E35, 0x6E36, 0x6E5A,
+ 0x7120, 0x711E, 0x712F, 0x70FB, 0x712E, 0x7131, 0x7123, 0x7125,
+ 0x7122, 0x7132, 0x711F, 0x7128, 0x713A, 0x711B, 0x724B, 0x725A,
+ 0x7288, 0x7289, 0x7286, 0x7285, 0x728B, 0x7312, 0x730B, 0x7330,
+ 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732D, 0x7326, 0x7323,
+ 0x7335, 0x730C, 0x742E, 0x742C, 0x7430, 0x742B, 0x7416,
+ /* Big5-HKSCS 0xDAA1 .. 0xDAFE */
+ 0x741A, 0x7421, 0x742D, 0x7431, 0x7424, 0x7423, 0x741D,
+ 0x7429, 0x7420, 0x7432, 0x74FB, 0x752F, 0x756F, 0x756C, 0x75E7,
+ 0x75DA, 0x75E1, 0x75E6, 0x75DD, 0x75DF, 0x75E4, 0x75D7, 0x7695,
+ 0x7692, 0x76DA, 0x7746, 0x7747, 0x7744, 0x774D, 0x7745, 0x774A,
+ 0x774E, 0x774B, 0x774C, 0x77DE, 0x77EC, 0x7860, 0x7864, 0x7865,
+ 0x785C, 0x786D, 0x7871, 0x786A, 0x786E, 0x7870, 0x7869, 0x7868,
+ 0x785E, 0x7862, 0x7974, 0x7973, 0x7972, 0x7970, 0x7A02, 0x7A0A,
+ 0x7A03, 0x7A0C, 0x7A04, 0x7A99, 0x7AE6, 0x7AE4, 0x7B4A, 0x7B3B,
+ 0x7B44, 0x7B48, 0x7B4C, 0x7B4E, 0x7B40, 0x7B58, 0x7B45, 0x7CA2,
+ 0x7C9E, 0x7CA8, 0x7CA1, 0x7D58, 0x7D6F, 0x7D63, 0x7D53, 0x7D56,
+ 0x7D67, 0x7D6A, 0x7D4F, 0x7D6D, 0x7D5C, 0x7D6B, 0x7D52, 0x7D54,
+ 0x7D69, 0x7D51, 0x7D5F, 0x7D4E, 0x7F3E, 0x7F3F, 0x7F65,
+ /* Big5-HKSCS 0xDB40 .. 0xDB7E */
+ 0x7F66, 0x7FA2, 0x7FA0, 0x7FA1, 0x7FD7, 0x8051, 0x804F, 0x8050,
+ 0x80FE, 0x80D4, 0x8143, 0x814A, 0x8152, 0x814F, 0x8147, 0x813D,
+ 0x814D, 0x813A, 0x81E6, 0x81EE, 0x81F7, 0x81F8, 0x81F9, 0x8204,
+ 0x823C, 0x823D, 0x823F, 0x8275, 0x833B, 0x83CF, 0x83F9, 0x8423,
+ 0x83C0, 0x83E8, 0x8412, 0x83E7, 0x83E4, 0x83FC, 0x83F6, 0x8410,
+ 0x83C6, 0x83C8, 0x83EB, 0x83E3, 0x83BF, 0x8401, 0x83DD, 0x83E5,
+ 0x83D8, 0x83FF, 0x83E1, 0x83CB, 0x83CE, 0x83D6, 0x83F5, 0x83C9,
+ 0x8409, 0x840F, 0x83DE, 0x8411, 0x8406, 0x83C2, 0x83F3,
+ /* Big5-HKSCS 0xDBA1 .. 0xDBFE */
+ 0x83D5, 0x83FA, 0x83C7, 0x83D1, 0x83EA, 0x8413, 0x83C3,
+ 0x83EC, 0x83EE, 0x83C4, 0x83FB, 0x83D7, 0x83E2, 0x841B, 0x83DB,
+ 0x83FE, 0x86D8, 0x86E2, 0x86E6, 0x86D3, 0x86E3, 0x86DA, 0x86EA,
+ 0x86DD, 0x86EB, 0x86DC, 0x86EC, 0x86E9, 0x86D7, 0x86E8, 0x86D1,
+ 0x8848, 0x8856, 0x8855, 0x88BA, 0x88D7, 0x88B9, 0x88B8, 0x88C0,
+ 0x88BE, 0x88B6, 0x88BC, 0x88B7, 0x88BD, 0x88B2, 0x8901, 0x88C9,
+ 0x8995, 0x8998, 0x8997, 0x89DD, 0x89DA, 0x89DB, 0x8A4E, 0x8A4D,
+ 0x8A39, 0x8A59, 0x8A40, 0x8A57, 0x8A58, 0x8A44, 0x8A45, 0x8A52,
+ 0x8A48, 0x8A51, 0x8A4A, 0x8A4C, 0x8A4F, 0x8C5F, 0x8C81, 0x8C80,
+ 0x8CBA, 0x8CBE, 0x8CB0, 0x8CB9, 0x8CB5, 0x8D84, 0x8D80, 0x8D89,
+ 0x8DD8, 0x8DD3, 0x8DCD, 0x8DC7, 0x8DD6, 0x8DDC, 0x8DCF, 0x8DD5,
+ 0x8DD9, 0x8DC8, 0x8DD7, 0x8DC5, 0x8EEF, 0x8EF7, 0x8EFA,
+ /* Big5-HKSCS 0xDC40 .. 0xDC7E */
+ 0x8EF9, 0x8EE6, 0x8EEE, 0x8EE5, 0x8EF5, 0x8EE7, 0x8EE8, 0x8EF6,
+ 0x8EEB, 0x8EF1, 0x8EEC, 0x8EF4, 0x8EE9, 0x902D, 0x9034, 0x902F,
+ 0x9106, 0x912C, 0x9104, 0x90FF, 0x90FC, 0x9108, 0x90F9, 0x90FB,
+ 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915F,
+ 0x9162, 0x9160, 0x9201, 0x920A, 0x9225, 0x9203, 0x921A, 0x9226,
+ 0x920F, 0x920C, 0x9200, 0x9212, 0x91FF, 0x91FD, 0x9206, 0x9204,
+ 0x9227, 0x9202, 0x921C, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216,
+ 0x957B, 0x958D, 0x958C, 0x9590, 0x9687, 0x967E, 0x9688,
+ /* Big5-HKSCS 0xDCA1 .. 0xDCFE */
+ 0x9689, 0x9683, 0x9680, 0x96C2, 0x96C8, 0x96C3, 0x96F1,
+ 0x96F0, 0x976C, 0x9770, 0x976E, 0x9807, 0x98A9, 0x98EB, 0x9CE6,
+ 0x9EF9, 0x4E83, 0x4E84, 0x4EB6, 0x50BD, 0x50BF, 0x50C6, 0x50AE,
+ 0x50C4, 0x50CA, 0x50B4, 0x50C8, 0x50C2, 0x50B0, 0x50C1, 0x50BA,
+ 0x50B1, 0x50CB, 0x50C9, 0x50B6, 0x50B8, 0x51D7, 0x527A, 0x5278,
+ 0x527B, 0x527C, 0x55C3, 0x55DB, 0x55CC, 0x55D0, 0x55CB, 0x55CA,
+ 0x55DD, 0x55C0, 0x55D4, 0x55C4, 0x55E9, 0x55BF, 0x55D2, 0x558D,
+ 0x55CF, 0x55D5, 0x55E2, 0x55D6, 0x55C8, 0x55F2, 0x55CD, 0x55D9,
+ 0x55C2, 0x5714, 0x5853, 0x5868, 0x5864, 0x584F, 0x584D, 0x5849,
+ 0x586F, 0x5855, 0x584E, 0x585D, 0x5859, 0x5865, 0x585B, 0x583D,
+ 0x5863, 0x5871, 0x58FC, 0x5AC7, 0x5AC4, 0x5ACB, 0x5ABA, 0x5AB8,
+ 0x5AB1, 0x5AB5, 0x5AB0, 0x5ABF, 0x5AC8, 0x5ABB, 0x5AC6,
+ /* Big5-HKSCS 0xDD40 .. 0xDD7E */
+ 0x5AB7, 0x5AC0, 0x5ACA, 0x5AB4, 0x5AB6, 0x5ACD, 0x5AB9, 0x5A90,
+ 0x5BD6, 0x5BD8, 0x5BD9, 0x5C1F, 0x5C33, 0x5D71, 0x5D63, 0x5D4A,
+ 0x5D65, 0x5D72, 0x5D6C, 0x5D5E, 0x5D68, 0x5D67, 0x5D62, 0x5DF0,
+ 0x5E4F, 0x5E4E, 0x5E4A, 0x5E4D, 0x5E4B, 0x5EC5, 0x5ECC, 0x5EC6,
+ 0x5ECB, 0x5EC7, 0x5F40, 0x5FAF, 0x5FAD, 0x60F7, 0x6149, 0x614A,
+ 0x612B, 0x6145, 0x6136, 0x6132, 0x612E, 0x6146, 0x612F, 0x614F,
+ 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63C5,
+ 0x63F1, 0x63EB, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424,
+ /* Big5-HKSCS 0xDDA1 .. 0xDDFE */
+ 0x6433, 0x6443, 0x641F, 0x6415, 0x6418, 0x6439, 0x6437,
+ 0x6422, 0x6423, 0x640C, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435,
+ 0x642F, 0x640A, 0x641A, 0x6440, 0x6425, 0x6427, 0x640B, 0x63E7,
+ 0x641B, 0x642E, 0x6421, 0x640E, 0x656F, 0x6592, 0x65D3, 0x6686,
+ 0x668C, 0x6695, 0x6690, 0x668B, 0x668A, 0x6699, 0x6694, 0x6678,
+ 0x6720, 0x6966, 0x695F, 0x6938, 0x694E, 0x6962, 0x6971, 0x693F,
+ 0x6945, 0x696A, 0x6939, 0x6942, 0x6957, 0x6959, 0x697A, 0x6948,
+ 0x6949, 0x6935, 0x696C, 0x6933, 0x693D, 0x6965, 0x68F0, 0x6978,
+ 0x6934, 0x6969, 0x6940, 0x696F, 0x6944, 0x6976, 0x6958, 0x6941,
+ 0x6974, 0x694C, 0x693B, 0x694B, 0x6937, 0x695C, 0x694F, 0x6951,
+ 0x6932, 0x6952, 0x692F, 0x697B, 0x693C, 0x6B46, 0x6B45, 0x6B43,
+ 0x6B42, 0x6B48, 0x6B41, 0x6B9B, 0xFA0D, 0x6BFB, 0x6BFC,
+ /* Big5-HKSCS 0xDE40 .. 0xDE7E */
+ 0x6BF9, 0x6BF7, 0x6BF8, 0x6E9B, 0x6ED6, 0x6EC8, 0x6E8F, 0x6EC0,
+ 0x6E9F, 0x6E93, 0x6E94, 0x6EA0, 0x6EB1, 0x6EB9, 0x6EC6, 0x6ED2,
+ 0x6EBD, 0x6EC1, 0x6E9E, 0x6EC9, 0x6EB7, 0x6EB0, 0x6ECD, 0x6EA6,
+ 0x6ECF, 0x6EB2, 0x6EBE, 0x6EC3, 0x6EDC, 0x6ED8, 0x6E99, 0x6E92,
+ 0x6E8E, 0x6E8D, 0x6EA4, 0x6EA1, 0x6EBF, 0x6EB3, 0x6ED0, 0x6ECA,
+ 0x6E97, 0x6EAE, 0x6EA3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160,
+ 0x7141, 0x715D, 0x7162, 0x7172, 0x7178, 0x716A, 0x7161, 0x7142,
+ 0x7158, 0x7143, 0x714B, 0x7170, 0x715F, 0x7150, 0x7153,
+ /* Big5-HKSCS 0xDEA1 .. 0xDEFE */
+ 0x7144, 0x714D, 0x715A, 0x724F, 0x728D, 0x728C, 0x7291,
+ 0x7290, 0x728E, 0x733C, 0x7342, 0x733B, 0x733A, 0x7340, 0x734A,
+ 0x7349, 0x7444, 0x744A, 0x744B, 0x7452, 0x7451, 0x7457, 0x7440,
+ 0x744F, 0x7450, 0x744E, 0x7442, 0x7446, 0x744D, 0x7454, 0x74E1,
+ 0x74FF, 0x74FE, 0x74FD, 0x751D, 0x7579, 0x7577, 0x6983, 0x75EF,
+ 0x760F, 0x7603, 0x75F7, 0x75FE, 0x75FC, 0x75F9, 0x75F8, 0x7610,
+ 0x75FB, 0x75F6, 0x75ED, 0x75F5, 0x75FD, 0x7699, 0x76B5, 0x76DD,
+ 0x7755, 0x775F, 0x7760, 0x7752, 0x7756, 0x775A, 0x7769, 0x7767,
+ 0x7754, 0x7759, 0x776D, 0x77E0, 0x7887, 0x789A, 0x7894, 0x788F,
+ 0x7884, 0x7895, 0x7885, 0x7886, 0x78A1, 0x7883, 0x7879, 0x7899,
+ 0x7880, 0x7896, 0x787B, 0x797C, 0x7982, 0x797D, 0x7979, 0x7A11,
+ 0x7A18, 0x7A19, 0x7A12, 0x7A17, 0x7A15, 0x7A22, 0x7A13,
+ /* Big5-HKSCS 0xDF40 .. 0xDF7E */
+ 0x7A1B, 0x7A10, 0x7AA3, 0x7AA2, 0x7A9E, 0x7AEB, 0x7B66, 0x7B64,
+ 0x7B6D, 0x7B74, 0x7B69, 0x7B72, 0x7B65, 0x7B73, 0x7B71, 0x7B70,
+ 0x7B61, 0x7B78, 0x7B76, 0x7B63, 0x7CB2, 0x7CB4, 0x7CAF, 0x7D88,
+ 0x7D86, 0x7D80, 0x7D8D, 0x7D7F, 0x7D85, 0x7D7A, 0x7D8E, 0x7D7B,
+ 0x7D83, 0x7D7C, 0x7D8C, 0x7D94, 0x7D84, 0x7D7D, 0x7D92, 0x7F6D,
+ 0x7F6B, 0x7F67, 0x7F68, 0x7F6C, 0x7FA6, 0x7FA5, 0x7FA7, 0x7FDB,
+ 0x7FDC, 0x8021, 0x8164, 0x8160, 0x8177, 0x815C, 0x8169, 0x815B,
+ 0x8162, 0x8172, 0x6721, 0x815E, 0x8176, 0x8167, 0x816F,
+ /* Big5-HKSCS 0xDFA1 .. 0xDFFE */
+ 0x8144, 0x8161, 0x821D, 0x8249, 0x8244, 0x8240, 0x8242,
+ 0x8245, 0x84F1, 0x843F, 0x8456, 0x8476, 0x8479, 0x848F, 0x848D,
+ 0x8465, 0x8451, 0x8440, 0x8486, 0x8467, 0x8430, 0x844D, 0x847D,
+ 0x845A, 0x8459, 0x8474, 0x8473, 0x845D, 0x8507, 0x845E, 0x8437,
+ 0x843A, 0x8434, 0x847A, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429,
+ 0x83D9, 0x844B, 0x842F, 0x8442, 0x842D, 0x845F, 0x8470, 0x8439,
+ 0x844E, 0x844C, 0x8452, 0x846F, 0x84C5, 0x848E, 0x843B, 0x8447,
+ 0x8436, 0x8433, 0x8468, 0x847E, 0x8444, 0x842B, 0x8460, 0x8454,
+ 0x846E, 0x8450, 0x870B, 0x8704, 0x86F7, 0x870C, 0x86FA, 0x86D6,
+ 0x86F5, 0x874D, 0x86F8, 0x870E, 0x8709, 0x8701, 0x86F6, 0x870D,
+ 0x8705, 0x88D6, 0x88CB, 0x88CD, 0x88CE, 0x88DE, 0x88DB, 0x88DA,
+ 0x88CC, 0x88D0, 0x8985, 0x899B, 0x89DF, 0x89E5, 0x89E4,
+ /* Big5-HKSCS 0xE040 .. 0xE07E */
+ 0x89E1, 0x89E0, 0x89E2, 0x89DC, 0x89E6, 0x8A76, 0x8A86, 0x8A7F,
+ 0x8A61, 0x8A3F, 0x8A77, 0x8A82, 0x8A84, 0x8A75, 0x8A83, 0x8A81,
+ 0x8A74, 0x8A7A, 0x8C3C, 0x8C4B, 0x8C4A, 0x8C65, 0x8C64, 0x8C66,
+ 0x8C86, 0x8C84, 0x8C85, 0x8CCC, 0x8D68, 0x8D69, 0x8D91, 0x8D8C,
+ 0x8D8E, 0x8D8F, 0x8D8D, 0x8D93, 0x8D94, 0x8D90, 0x8D92, 0x8DF0,
+ 0x8DE0, 0x8DEC, 0x8DF1, 0x8DEE, 0x8DD0, 0x8DE9, 0x8DE3, 0x8DE2,
+ 0x8DE7, 0x8DF2, 0x8DEB, 0x8DF4, 0x8F06, 0x8EFF, 0x8F01, 0x8F00,
+ 0x8F05, 0x8F07, 0x8F08, 0x8F02, 0x8F0B, 0x9052, 0x903F,
+ /* Big5-HKSCS 0xE0A1 .. 0xE0FE */
+ 0x9044, 0x9049, 0x903D, 0x9110, 0x910D, 0x910F, 0x9111,
+ 0x9116, 0x9114, 0x910B, 0x910E, 0x916E, 0x916F, 0x9248, 0x9252,
+ 0x9230, 0x923A, 0x9266, 0x9233, 0x9265, 0x925E, 0x9283, 0x922E,
+ 0x924A, 0x9246, 0x926D, 0x926C, 0x924F, 0x9260, 0x9267, 0x926F,
+ 0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272,
+ 0x924E, 0x9253, 0x924C, 0x9256, 0x9232, 0x959F, 0x959C, 0x959E,
+ 0x959B, 0x9692, 0x9693, 0x9691, 0x9697, 0x96CE, 0x96FA, 0x96FD,
+ 0x96F8, 0x96F5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980F, 0x980D,
+ 0x980E, 0x98AC, 0x98F6, 0x98F9, 0x99AF, 0x99B2, 0x99B0, 0x99B5,
+ 0x9AAD, 0x9AAB, 0x9B5B, 0x9CEA, 0x9CED, 0x9CE7, 0x9E80, 0x9EFD,
+ 0x50E6, 0x50D4, 0x50D7, 0x50E8, 0x50F3, 0x50DB, 0x50EA, 0x50DD,
+ 0x50E4, 0x50D3, 0x50EC, 0x50F0, 0x50EF, 0x50E3, 0x50E0,
+ /* Big5-HKSCS 0xE140 .. 0xE17E */
+ 0x51D8, 0x5280, 0x5281, 0x52E9, 0x52EB, 0x5330, 0x53AC, 0x5627,
+ 0x5615, 0x560C, 0x5612, 0x55FC, 0x560F, 0x561C, 0x5601, 0x5613,
+ 0x5602, 0x55FA, 0x561D, 0x5604, 0x55FF, 0x55F9, 0x5889, 0x587C,
+ 0x5890, 0x5898, 0x5886, 0x5881, 0x587F, 0x5874, 0x588B, 0x587A,
+ 0x5887, 0x5891, 0x588E, 0x5876, 0x5882, 0x5888, 0x587B, 0x5894,
+ 0x588F, 0x58FE, 0x596B, 0x5ADC, 0x5AEE, 0x5AE5, 0x5AD5, 0x5AEA,
+ 0x5ADA, 0x5AED, 0x5AEB, 0x5AF3, 0x5AE2, 0x5AE0, 0x5ADB, 0x5AEC,
+ 0x5ADE, 0x5ADD, 0x5AD9, 0x5AE8, 0x5ADF, 0x5B77, 0x5BE0,
+ /* Big5-HKSCS 0xE1A1 .. 0xE1FE */
+ 0x5BE3, 0x5C63, 0x5D82, 0x5D80, 0x5D7D, 0x5D86, 0x5D7A,
+ 0x5D81, 0x5D77, 0x5D8A, 0x5D89, 0x5D88, 0x5D7E, 0x5D7C, 0x5D8D,
+ 0x5D79, 0x5D7F, 0x5E58, 0x5E59, 0x5E53, 0x5ED8, 0x5ED1, 0x5ED7,
+ 0x5ECE, 0x5EDC, 0x5ED5, 0x5ED9, 0x5ED2, 0x5ED4, 0x5F44, 0x5F43,
+ 0x5F6F, 0x5FB6, 0x612C, 0x6128, 0x6141, 0x615E, 0x6171, 0x6173,
+ 0x6152, 0x6153, 0x6172, 0x616C, 0x6180, 0x6174, 0x6154, 0x617A,
+ 0x615B, 0x6165, 0x613B, 0x616A, 0x6161, 0x6156, 0x6229, 0x6227,
+ 0x622B, 0x642B, 0x644D, 0x645B, 0x645D, 0x6474, 0x6476, 0x6472,
+ 0x6473, 0x647D, 0x6475, 0x6466, 0x64A6, 0x644E, 0x6482, 0x645E,
+ 0x645C, 0x644B, 0x6453, 0x6460, 0x6450, 0x647F, 0x643F, 0x646C,
+ 0x646B, 0x6459, 0x6465, 0x6477, 0x6573, 0x65A0, 0x66A1, 0x66A0,
+ 0x669F, 0x6705, 0x6704, 0x6722, 0x69B1, 0x69B6, 0x69C9,
+ /* Big5-HKSCS 0xE240 .. 0xE27E */
+ 0x69A0, 0x69CE, 0x6996, 0x69B0, 0x69AC, 0x69BC, 0x6991, 0x6999,
+ 0x698E, 0x69A7, 0x698D, 0x69A9, 0x69BE, 0x69AF, 0x69BF, 0x69C4,
+ 0x69BD, 0x69A4, 0x69D4, 0x69B9, 0x69CA, 0x699A, 0x69CF, 0x69B3,
+ 0x6993, 0x69AA, 0x69A1, 0x699E, 0x69D9, 0x6997, 0x6990, 0x69C2,
+ 0x69B5, 0x69A5, 0x69C6, 0x6B4A, 0x6B4D, 0x6B4B, 0x6B9E, 0x6B9F,
+ 0x6BA0, 0x6BC3, 0x6BC4, 0x6BFE, 0x6ECE, 0x6EF5, 0x6EF1, 0x6F03,
+ 0x6F25, 0x6EF8, 0x6F37, 0x6EFB, 0x6F2E, 0x6F09, 0x6F4E, 0x6F19,
+ 0x6F1A, 0x6F27, 0x6F18, 0x6F3B, 0x6F12, 0x6EED, 0x6F0A,
+ /* Big5-HKSCS 0xE2A1 .. 0xE2FE */
+ 0x6F36, 0x6F73, 0x6EF9, 0x6EEE, 0x6F2D, 0x6F40, 0x6F30,
+ 0x6F3C, 0x6F35, 0x6EEB, 0x6F07, 0x6F0E, 0x6F43, 0x6F05, 0x6EFD,
+ 0x6EF6, 0x6F39, 0x6F1C, 0x6EFC, 0x6F3A, 0x6F1F, 0x6F0D, 0x6F1E,
+ 0x6F08, 0x6F21, 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182,
+ 0x718F, 0x717B, 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297,
+ 0x7295, 0x7293, 0x7343, 0x734D, 0x7351, 0x734C, 0x7462, 0x7473,
+ 0x7471, 0x7475, 0x7472, 0x7467, 0x746E, 0x7500, 0x7502, 0x7503,
+ 0x757D, 0x7590, 0x7616, 0x7608, 0x760C, 0x7615, 0x7611, 0x760A,
+ 0x7614, 0x76B8, 0x7781, 0x777C, 0x7785, 0x7782, 0x776E, 0x7780,
+ 0x776F, 0x777E, 0x7783, 0x78B2, 0x78AA, 0x78B4, 0x78AD, 0x78A8,
+ 0x787E, 0x78AB, 0x789E, 0x78A5, 0x78A0, 0x78AC, 0x78A2, 0x78A4,
+ 0x7998, 0x798A, 0x798B, 0x7996, 0x7995, 0x7994, 0x7993,
+ /* Big5-HKSCS 0xE340 .. 0xE37E */
+ 0x7997, 0x7988, 0x7992, 0x7990, 0x7A2B, 0x7A4A, 0x7A30, 0x7A2F,
+ 0x7A28, 0x7A26, 0x7AA8, 0x7AAB, 0x7AAC, 0x7AEE, 0x7B88, 0x7B9C,
+ 0x7B8A, 0x7B91, 0x7B90, 0x7B96, 0x7B8D, 0x7B8C, 0x7B9B, 0x7B8E,
+ 0x7B85, 0x7B98, 0x5284, 0x7B99, 0x7BA4, 0x7B82, 0x7CBB, 0x7CBF,
+ 0x7CBC, 0x7CBA, 0x7DA7, 0x7DB7, 0x7DC2, 0x7DA3, 0x7DAA, 0x7DC1,
+ 0x7DC0, 0x7DC5, 0x7D9D, 0x7DCE, 0x7DC4, 0x7DC6, 0x7DCB, 0x7DCC,
+ 0x7DAF, 0x7DB9, 0x7D96, 0x7DBC, 0x7D9F, 0x7DA6, 0x7DAE, 0x7DA9,
+ 0x7DA1, 0x7DC9, 0x7F73, 0x7FE2, 0x7FE3, 0x7FE5, 0x7FDE,
+ /* Big5-HKSCS 0xE3A1 .. 0xE3FE */
+ 0x8024, 0x805D, 0x805C, 0x8189, 0x8186, 0x8183, 0x8187,
+ 0x818D, 0x818C, 0x818B, 0x8215, 0x8497, 0x84A4, 0x84A1, 0x849F,
+ 0x84BA, 0x84CE, 0x84C2, 0x84AC, 0x84AE, 0x84AB, 0x84B9, 0x84B4,
+ 0x84C1, 0x84CD, 0x84AA, 0x849A, 0x84B1, 0x84D0, 0x849D, 0x84A7,
+ 0x84BB, 0x84A2, 0x8494, 0x84C7, 0x84CC, 0x849B, 0x84A9, 0x84AF,
+ 0x84A8, 0x84D6, 0x8498, 0x84B6, 0x84CF, 0x84A0, 0x84D7, 0x84D4,
+ 0x84D2, 0x84DB, 0x84B0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728,
+ 0x876B, 0x8740, 0x872E, 0x871E, 0x8721, 0x8719, 0x871B, 0x8743,
+ 0x872C, 0x8741, 0x873E, 0x8746, 0x8720, 0x8732, 0x872A, 0x872D,
+ 0x873C, 0x8712, 0x873A, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727,
+ 0x8738, 0x8724, 0x871A, 0x8730, 0x8711, 0x88F7, 0x88E7, 0x88F1,
+ 0x88F2, 0x88FA, 0x88FE, 0x88EE, 0x88FC, 0x88F6, 0x88FB,
+ /* Big5-HKSCS 0xE440 .. 0xE47E */
+ 0x88F0, 0x88EC, 0x88EB, 0x899D, 0x89A1, 0x899F, 0x899E, 0x89E9,
+ 0x89EB, 0x89E8, 0x8AAB, 0x8A99, 0x8A8B, 0x8A92, 0x8A8F, 0x8A96,
+ 0x8C3D, 0x8C68, 0x8C69, 0x8CD5, 0x8CCF, 0x8CD7, 0x8D96, 0x8E09,
+ 0x8E02, 0x8DFF, 0x8E0D, 0x8DFD, 0x8E0A, 0x8E03, 0x8E07, 0x8E06,
+ 0x8E05, 0x8DFE, 0x8E00, 0x8E04, 0x8F10, 0x8F11, 0x8F0E, 0x8F0D,
+ 0x9123, 0x911C, 0x9120, 0x9122, 0x911F, 0x911D, 0x911A, 0x9124,
+ 0x9121, 0x911B, 0x917A, 0x9172, 0x9179, 0x9173, 0x92A5, 0x92A4,
+ 0x9276, 0x929B, 0x927A, 0x92A0, 0x9294, 0x92AA, 0x928D,
+ /* Big5-HKSCS 0xE4A1 .. 0xE4FE */
+ 0x92A6, 0x929A, 0x92AB, 0x9279, 0x9297, 0x927F, 0x92A3,
+ 0x92EE, 0x928E, 0x9282, 0x9295, 0x92A2, 0x927D, 0x9288, 0x92A1,
+ 0x928A, 0x9286, 0x928C, 0x9299, 0x92A7, 0x927E, 0x9287, 0x92A9,
+ 0x929D, 0x928B, 0x922D, 0x969E, 0x96A1, 0x96FF, 0x9758, 0x977D,
+ 0x977A, 0x977E, 0x9783, 0x9780, 0x9782, 0x977B, 0x9784, 0x9781,
+ 0x977F, 0x97CE, 0x97CD, 0x9816, 0x98AD, 0x98AE, 0x9902, 0x9900,
+ 0x9907, 0x999D, 0x999C, 0x99C3, 0x99B9, 0x99BB, 0x99BA, 0x99C2,
+ 0x99BD, 0x99C7, 0x9AB1, 0x9AE3, 0x9AE7, 0x9B3E, 0x9B3F, 0x9B60,
+ 0x9B61, 0x9B5F, 0x9CF1, 0x9CF2, 0x9CF5, 0x9EA7, 0x50FF, 0x5103,
+ 0x5130, 0x50F8, 0x5106, 0x5107, 0x50F6, 0x50FE, 0x510B, 0x510C,
+ 0x50FD, 0x510A, 0x528B, 0x528C, 0x52F1, 0x52EF, 0x5648, 0x5642,
+ 0x564C, 0x5635, 0x5641, 0x564A, 0x5649, 0x5646, 0x5658,
+ /* Big5-HKSCS 0xE540 .. 0xE57E */
+ 0x565A, 0x5640, 0x5633, 0x563D, 0x562C, 0x563E, 0x5638, 0x562A,
+ 0x563A, 0x571A, 0x58AB, 0x589D, 0x58B1, 0x58A0, 0x58A3, 0x58AF,
+ 0x58AC, 0x58A5, 0x58A1, 0x58FF, 0x5AFF, 0x5AF4, 0x5AFD, 0x5AF7,
+ 0x5AF6, 0x5B03, 0x5AF8, 0x5B02, 0x5AF9, 0x5B01, 0x5B07, 0x5B05,
+ 0x5B0F, 0x5C67, 0x5D99, 0x5D97, 0x5D9F, 0x5D92, 0x5DA2, 0x5D93,
+ 0x5D95, 0x5DA0, 0x5D9C, 0x5DA1, 0x5D9A, 0x5D9E, 0x5E69, 0x5E5D,
+ 0x5E60, 0x5E5C, 0x7DF3, 0x5EDB, 0x5EDE, 0x5EE1, 0x5F49, 0x5FB2,
+ 0x618B, 0x6183, 0x6179, 0x61B1, 0x61B0, 0x61A2, 0x6189,
+ /* Big5-HKSCS 0xE5A1 .. 0xE5FE */
+ 0x619B, 0x6193, 0x61AF, 0x61AD, 0x619F, 0x6192, 0x61AA,
+ 0x61A1, 0x618D, 0x6166, 0x61B3, 0x622D, 0x646E, 0x6470, 0x6496,
+ 0x64A0, 0x6485, 0x6497, 0x649C, 0x648F, 0x648B, 0x648A, 0x648C,
+ 0x64A3, 0x649F, 0x6468, 0x64B1, 0x6498, 0x6576, 0x657A, 0x6579,
+ 0x657B, 0x65B2, 0x65B3, 0x66B5, 0x66B0, 0x66A9, 0x66B2, 0x66B7,
+ 0x66AA, 0x66AF, 0x6A00, 0x6A06, 0x6A17, 0x69E5, 0x69F8, 0x6A15,
+ 0x69F1, 0x69E4, 0x6A20, 0x69FF, 0x69EC, 0x69E2, 0x6A1B, 0x6A1D,
+ 0x69FE, 0x6A27, 0x69F2, 0x69EE, 0x6A14, 0x69F7, 0x69E7, 0x6A40,
+ 0x6A08, 0x69E6, 0x69FB, 0x6A0D, 0x69FC, 0x69EB, 0x6A09, 0x6A04,
+ 0x6A18, 0x6A25, 0x6A0F, 0x69F6, 0x6A26, 0x6A07, 0x69F4, 0x6A16,
+ 0x6B51, 0x6BA5, 0x6BA3, 0x6BA2, 0x6BA6, 0x6C01, 0x6C00, 0x6BFF,
+ 0x6C02, 0x6F41, 0x6F26, 0x6F7E, 0x6F87, 0x6FC6, 0x6F92,
+ /* Big5-HKSCS 0xE640 .. 0xE67E */
+ 0x6F8D, 0x6F89, 0x6F8C, 0x6F62, 0x6F4F, 0x6F85, 0x6F5A, 0x6F96,
+ 0x6F76, 0x6F6C, 0x6F82, 0x6F55, 0x6F72, 0x6F52, 0x6F50, 0x6F57,
+ 0x6F94, 0x6F93, 0x6F5D, 0x6F00, 0x6F61, 0x6F6B, 0x6F7D, 0x6F67,
+ 0x6F90, 0x6F53, 0x6F8B, 0x6F69, 0x6F7F, 0x6F95, 0x6F63, 0x6F77,
+ 0x6F6A, 0x6F7B, 0x71B2, 0x71AF, 0x719B, 0x71B0, 0x71A0, 0x719A,
+ 0x71A9, 0x71B5, 0x719D, 0x71A5, 0x719E, 0x71A4, 0x71A1, 0x71AA,
+ 0x719C, 0x71A7, 0x71B3, 0x7298, 0x729A, 0x7358, 0x7352, 0x735E,
+ 0x735F, 0x7360, 0x735D, 0x735B, 0x7361, 0x735A, 0x7359,
+ /* Big5-HKSCS 0xE6A1 .. 0xE6FE */
+ 0x7362, 0x7487, 0x7489, 0x748A, 0x7486, 0x7481, 0x747D,
+ 0x7485, 0x7488, 0x747C, 0x7479, 0x7508, 0x7507, 0x757E, 0x7625,
+ 0x761E, 0x7619, 0x761D, 0x761C, 0x7623, 0x761A, 0x7628, 0x761B,
+ 0x769C, 0x769D, 0x769E, 0x769B, 0x778D, 0x778F, 0x7789, 0x7788,
+ 0x78CD, 0x78BB, 0x78CF, 0x78CC, 0x78D1, 0x78CE, 0x78D4, 0x78C8,
+ 0x78C3, 0x78C4, 0x78C9, 0x799A, 0x79A1, 0x79A0, 0x799C, 0x79A2,
+ 0x799B, 0x6B76, 0x7A39, 0x7AB2, 0x7AB4, 0x7AB3, 0x7BB7, 0x7BCB,
+ 0x7BBE, 0x7BAC, 0x7BCE, 0x7BAF, 0x7BB9, 0x7BCA, 0x7BB5, 0x7CC5,
+ 0x7CC8, 0x7CCC, 0x7CCB, 0x7DF7, 0x7DDB, 0x7DEA, 0x7DE7, 0x7DD7,
+ 0x7DE1, 0x7E03, 0x7DFA, 0x7DE6, 0x7DF6, 0x7DF1, 0x7DF0, 0x7DEE,
+ 0x7DDF, 0x7F76, 0x7FAC, 0x7FB0, 0x7FAD, 0x7FED, 0x7FEB, 0x7FEA,
+ 0x7FEC, 0x7FE6, 0x7FE8, 0x8064, 0x8067, 0x81A3, 0x819F,
+ /* Big5-HKSCS 0xE740 .. 0xE77E */
+ 0x819E, 0x8195, 0x81A2, 0x8199, 0x8197, 0x8216, 0x824F, 0x8253,
+ 0x8252, 0x8250, 0x824E, 0x8251, 0x8524, 0x853B, 0x850F, 0x8500,
+ 0x8529, 0x850E, 0x8509, 0x850D, 0x851F, 0x850A, 0x8527, 0x851C,
+ 0x84FB, 0x852B, 0x84FA, 0x8508, 0x850C, 0x84F4, 0x852A, 0x84F2,
+ 0x8515, 0x84F7, 0x84EB, 0x84F3, 0x84FC, 0x8512, 0x84EA, 0x84E9,
+ 0x8516, 0x84FE, 0x8528, 0x851D, 0x852E, 0x8502, 0x84FD, 0x851E,
+ 0x84F6, 0x8531, 0x8526, 0x84E7, 0x84E8, 0x84F0, 0x84EF, 0x84F9,
+ 0x8518, 0x8520, 0x8530, 0x850B, 0x8519, 0x852F, 0x8662,
+ /* Big5-HKSCS 0xE7A1 .. 0xE7FE */
+ 0x8756, 0x8763, 0x8764, 0x8777, 0x87E1, 0x8773, 0x8758,
+ 0x8754, 0x875B, 0x8752, 0x8761, 0x875A, 0x8751, 0x875E, 0x876D,
+ 0x876A, 0x8750, 0x874E, 0x875F, 0x875D, 0x876F, 0x876C, 0x877A,
+ 0x876E, 0x875C, 0x8765, 0x874F, 0x877B, 0x8775, 0x8762, 0x8767,
+ 0x8769, 0x885A, 0x8905, 0x890C, 0x8914, 0x890B, 0x8917, 0x8918,
+ 0x8919, 0x8906, 0x8916, 0x8911, 0x890E, 0x8909, 0x89A2, 0x89A4,
+ 0x89A3, 0x89ED, 0x89F0, 0x89EC, 0x8ACF, 0x8AC6, 0x8AB8, 0x8AD3,
+ 0x8AD1, 0x8AD4, 0x8AD5, 0x8ABB, 0x8AD7, 0x8ABE, 0x8AC0, 0x8AC5,
+ 0x8AD8, 0x8AC3, 0x8ABA, 0x8ABD, 0x8AD9, 0x8C3E, 0x8C4D, 0x8C8F,
+ 0x8CE5, 0x8CDF, 0x8CD9, 0x8CE8, 0x8CDA, 0x8CDD, 0x8CE7, 0x8DA0,
+ 0x8D9C, 0x8DA1, 0x8D9B, 0x8E20, 0x8E23, 0x8E25, 0x8E24, 0x8E2E,
+ 0x8E15, 0x8E1B, 0x8E16, 0x8E11, 0x8E19, 0x8E26, 0x8E27,
+ /* Big5-HKSCS 0xE840 .. 0xE87E */
+ 0x8E14, 0x8E12, 0x8E18, 0x8E13, 0x8E1C, 0x8E17, 0x8E1A, 0x8F2C,
+ 0x8F24, 0x8F18, 0x8F1A, 0x8F20, 0x8F23, 0x8F16, 0x8F17, 0x9073,
+ 0x9070, 0x906F, 0x9067, 0x906B, 0x912F, 0x912B, 0x9129, 0x912A,
+ 0x9132, 0x9126, 0x912E, 0x9185, 0x9186, 0x918A, 0x9181, 0x9182,
+ 0x9184, 0x9180, 0x92D0, 0x92C3, 0x92C4, 0x92C0, 0x92D9, 0x92B6,
+ 0x92CF, 0x92F1, 0x92DF, 0x92D8, 0x92E9, 0x92D7, 0x92DD, 0x92CC,
+ 0x92EF, 0x92C2, 0x92E8, 0x92CA, 0x92C8, 0x92CE, 0x92E6, 0x92CD,
+ 0x92D5, 0x92C9, 0x92E0, 0x92DE, 0x92E7, 0x92D1, 0x92D3,
+ /* Big5-HKSCS 0xE8A1 .. 0xE8FE */
+ 0x92B5, 0x92E1, 0x92C6, 0x92B4, 0x957C, 0x95AC, 0x95AB,
+ 0x95AE, 0x95B0, 0x96A4, 0x96A2, 0x96D3, 0x9705, 0x9708, 0x9702,
+ 0x975A, 0x978A, 0x978E, 0x9788, 0x97D0, 0x97CF, 0x981E, 0x981D,
+ 0x9826, 0x9829, 0x9828, 0x9820, 0x981B, 0x9827, 0x98B2, 0x9908,
+ 0x98FA, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99DC, 0x99CD,
+ 0x99CF, 0x99D3, 0x99D4, 0x99CE, 0x99C9, 0x99D6, 0x99D8, 0x99CB,
+ 0x99D7, 0x99CC, 0x9AB3, 0x9AEC, 0x9AEB, 0x9AF3, 0x9AF2, 0x9AF1,
+ 0x9B46, 0x9B43, 0x9B67, 0x9B74, 0x9B71, 0x9B66, 0x9B76, 0x9B75,
+ 0x9B70, 0x9B68, 0x9B64, 0x9B6C, 0x9CFC, 0x9CFA, 0x9CFD, 0x9CFF,
+ 0x9CF7, 0x9D07, 0x9D00, 0x9CF9, 0x9CFB, 0x9D08, 0x9D05, 0x9D04,
+ 0x9E83, 0x9ED3, 0x9F0F, 0x9F10, 0x511C, 0x5113, 0x5117, 0x511A,
+ 0x5111, 0x51DE, 0x5334, 0x53E1, 0x5670, 0x5660, 0x566E,
+ /* Big5-HKSCS 0xE940 .. 0xE97E */
+ 0x5673, 0x5666, 0x5663, 0x566D, 0x5672, 0x565E, 0x5677, 0x571C,
+ 0x571B, 0x58C8, 0x58BD, 0x58C9, 0x58BF, 0x58BA, 0x58C2, 0x58BC,
+ 0x58C6, 0x5B17, 0x5B19, 0x5B1B, 0x5B21, 0x5B14, 0x5B13, 0x5B10,
+ 0x5B16, 0x5B28, 0x5B1A, 0x5B20, 0x5B1E, 0x5BEF, 0x5DAC, 0x5DB1,
+ 0x5DA9, 0x5DA7, 0x5DB5, 0x5DB0, 0x5DAE, 0x5DAA, 0x5DA8, 0x5DB2,
+ 0x5DAD, 0x5DAF, 0x5DB4, 0x5E67, 0x5E68, 0x5E66, 0x5E6F, 0x5EE9,
+ 0x5EE7, 0x5EE6, 0x5EE8, 0x5EE5, 0x5F4B, 0x5FBC, 0x619D, 0x61A8,
+ 0x6196, 0x61C5, 0x61B4, 0x61C6, 0x61C1, 0x61CC, 0x61BA,
+ /* Big5-HKSCS 0xE9A1 .. 0xE9FE */
+ 0x61BF, 0x61B8, 0x618C, 0x64D7, 0x64D6, 0x64D0, 0x64CF,
+ 0x64C9, 0x64BD, 0x6489, 0x64C3, 0x64DB, 0x64F3, 0x64D9, 0x6533,
+ 0x657F, 0x657C, 0x65A2, 0x66C8, 0x66BE, 0x66C0, 0x66CA, 0x66CB,
+ 0x66CF, 0x66BD, 0x66BB, 0x66BA, 0x66CC, 0x6723, 0x6A34, 0x6A66,
+ 0x6A49, 0x6A67, 0x6A32, 0x6A68, 0x6A3E, 0x6A5D, 0x6A6D, 0x6A76,
+ 0x6A5B, 0x6A51, 0x6A28, 0x6A5A, 0x6A3B, 0x6A3F, 0x6A41, 0x6A6A,
+ 0x6A64, 0x6A50, 0x6A4F, 0x6A54, 0x6A6F, 0x6A69, 0x6A60, 0x6A3C,
+ 0x6A5E, 0x6A56, 0x6A55, 0x6A4D, 0x6A4E, 0x6A46, 0x6B55, 0x6B54,
+ 0x6B56, 0x6BA7, 0x6BAA, 0x6BAB, 0x6BC8, 0x6BC7, 0x6C04, 0x6C03,
+ 0x6C06, 0x6FAD, 0x6FCB, 0x6FA3, 0x6FC7, 0x6FBC, 0x6FCE, 0x6FC8,
+ 0x6F5E, 0x6FC4, 0x6FBD, 0x6F9E, 0x6FCA, 0x6FA8, 0x7004, 0x6FA5,
+ 0x6FAE, 0x6FBA, 0x6FAC, 0x6FAA, 0x6FCF, 0x6FBF, 0x6FB8,
+ /* Big5-HKSCS 0xEA40 .. 0xEA7E */
+ 0x6FA2, 0x6FC9, 0x6FAB, 0x6FCD, 0x6FAF, 0x6FB2, 0x6FB0, 0x71C5,
+ 0x71C2, 0x71BF, 0x71B8, 0x71D6, 0x71C0, 0x71C1, 0x71CB, 0x71D4,
+ 0x71CA, 0x71C7, 0x71CF, 0x71BD, 0x71D8, 0x71BC, 0x71C6, 0x71DA,
+ 0x71DB, 0x729D, 0x729E, 0x7369, 0x7366, 0x7367, 0x736C, 0x7365,
+ 0x736B, 0x736A, 0x747F, 0x749A, 0x74A0, 0x7494, 0x7492, 0x7495,
+ 0x74A1, 0x750B, 0x7580, 0x762F, 0x762D, 0x7631, 0x763D, 0x7633,
+ 0x763C, 0x7635, 0x7632, 0x7630, 0x76BB, 0x76E6, 0x779A, 0x779D,
+ 0x77A1, 0x779C, 0x779B, 0x77A2, 0x77A3, 0x7795, 0x7799,
+ /* Big5-HKSCS 0xEAA1 .. 0xEAFE */
+ 0x7797, 0x78DD, 0x78E9, 0x78E5, 0x78EA, 0x78DE, 0x78E3,
+ 0x78DB, 0x78E1, 0x78E2, 0x78ED, 0x78DF, 0x78E0, 0x79A4, 0x7A44,
+ 0x7A48, 0x7A47, 0x7AB6, 0x7AB8, 0x7AB5, 0x7AB1, 0x7AB7, 0x7BDE,
+ 0x7BE3, 0x7BE7, 0x7BDD, 0x7BD5, 0x7BE5, 0x7BDA, 0x7BE8, 0x7BF9,
+ 0x7BD4, 0x7BEA, 0x7BE2, 0x7BDC, 0x7BEB, 0x7BD8, 0x7BDF, 0x7CD2,
+ 0x7CD4, 0x7CD7, 0x7CD0, 0x7CD1, 0x7E12, 0x7E21, 0x7E17, 0x7E0C,
+ 0x7E1F, 0x7E20, 0x7E13, 0x7E0E, 0x7E1C, 0x7E15, 0x7E1A, 0x7E22,
+ 0x7E0B, 0x7E0F, 0x7E16, 0x7E0D, 0x7E14, 0x7E25, 0x7E24, 0x7F43,
+ 0x7F7B, 0x7F7C, 0x7F7A, 0x7FB1, 0x7FEF, 0x802A, 0x8029, 0x806C,
+ 0x81B1, 0x81A6, 0x81AE, 0x81B9, 0x81B5, 0x81AB, 0x81B0, 0x81AC,
+ 0x81B4, 0x81B2, 0x81B7, 0x81A7, 0x81F2, 0x8255, 0x8256, 0x8257,
+ 0x8556, 0x8545, 0x856B, 0x854D, 0x8553, 0x8561, 0x8558,
+ /* Big5-HKSCS 0xEB40 .. 0xEB7E */
+ 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547,
+ 0x8563, 0x853E, 0x855B, 0x8571, 0x854E, 0x856E, 0x8575, 0x8555,
+ 0x8567, 0x8560, 0x858C, 0x8566, 0x855D, 0x8554, 0x8565, 0x856C,
+ 0x8663, 0x8665, 0x8664, 0x879B, 0x878F, 0x8797, 0x8793, 0x8792,
+ 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87A3, 0x8785,
+ 0x8790, 0x8791, 0x879D, 0x8784, 0x8794, 0x879C, 0x879A, 0x8789,
+ 0x891E, 0x8926, 0x8930, 0x892D, 0x892E, 0x8927, 0x8931, 0x8922,
+ 0x8929, 0x8923, 0x892F, 0x892C, 0x891F, 0x89F1, 0x8AE0,
+ /* Big5-HKSCS 0xEBA1 .. 0xEBFE */
+ 0x8AE2, 0x8AF2, 0x8AF4, 0x8AF5, 0x8ADD, 0x8B14, 0x8AE4,
+ 0x8ADF, 0x8AF0, 0x8AC8, 0x8ADE, 0x8AE1, 0x8AE8, 0x8AFF, 0x8AEF,
+ 0x8AFB, 0x8C91, 0x8C92, 0x8C90, 0x8CF5, 0x8CEE, 0x8CF1, 0x8CF0,
+ 0x8CF3, 0x8D6C, 0x8D6E, 0x8DA5, 0x8DA7, 0x8E33, 0x8E3E, 0x8E38,
+ 0x8E40, 0x8E45, 0x8E36, 0x8E3C, 0x8E3D, 0x8E41, 0x8E30, 0x8E3F,
+ 0x8EBD, 0x8F36, 0x8F2E, 0x8F35, 0x8F32, 0x8F39, 0x8F37, 0x8F34,
+ 0x9076, 0x9079, 0x907B, 0x9086, 0x90FA, 0x9133, 0x9135, 0x9136,
+ 0x9193, 0x9190, 0x9191, 0x918D, 0x918F, 0x9327, 0x931E, 0x9308,
+ 0x931F, 0x9306, 0x930F, 0x937A, 0x9338, 0x933C, 0x931B, 0x9323,
+ 0x9312, 0x9301, 0x9346, 0x932D, 0x930E, 0x930D, 0x92CB, 0x931D,
+ 0x92FA, 0x9325, 0x9313, 0x92F9, 0x92F7, 0x9334, 0x9302, 0x9324,
+ 0x92FF, 0x9329, 0x9339, 0x9335, 0x932A, 0x9314, 0x930C,
+ /* Big5-HKSCS 0xEC40 .. 0xEC7E */
+ 0x930B, 0x92FE, 0x9309, 0x9300, 0x92FB, 0x9316, 0x95BC, 0x95CD,
+ 0x95BE, 0x95B9, 0x95BA, 0x95B6, 0x95BF, 0x95B5, 0x95BD, 0x96A9,
+ 0x96D4, 0x970B, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97F0,
+ 0x97F8, 0x9835, 0x982F, 0x9832, 0x9924, 0x991F, 0x9927, 0x9929,
+ 0x999E, 0x99EE, 0x99EC, 0x99E5, 0x99E4, 0x99F0, 0x99E3, 0x99EA,
+ 0x99E9, 0x99E7, 0x9AB9, 0x9ABF, 0x9AB4, 0x9ABB, 0x9AF6, 0x9AFA,
+ 0x9AF9, 0x9AF7, 0x9B33, 0x9B80, 0x9B85, 0x9B87, 0x9B7C, 0x9B7E,
+ 0x9B7B, 0x9B82, 0x9B93, 0x9B92, 0x9B90, 0x9B7A, 0x9B95,
+ /* Big5-HKSCS 0xECA1 .. 0xECFE */
+ 0x9B7D, 0x9B88, 0x9D25, 0x9D17, 0x9D20, 0x9D1E, 0x9D14,
+ 0x9D29, 0x9D1D, 0x9D18, 0x9D22, 0x9D10, 0x9D19, 0x9D1F, 0x9E88,
+ 0x9E86, 0x9E87, 0x9EAE, 0x9EAD, 0x9ED5, 0x9ED6, 0x9EFA, 0x9F12,
+ 0x9F3D, 0x5126, 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52F4,
+ 0x5693, 0x568C, 0x568D, 0x5686, 0x5684, 0x5683, 0x567E, 0x5682,
+ 0x567F, 0x5681, 0x58D6, 0x58D4, 0x58CF, 0x58D2, 0x5B2D, 0x5B25,
+ 0x5B32, 0x5B23, 0x5B2C, 0x5B27, 0x5B26, 0x5B2F, 0x5B2E, 0x5B7B,
+ 0x5BF1, 0x5BF2, 0x5DB7, 0x5E6C, 0x5E6A, 0x5FBE, 0x5FBB, 0x61C3,
+ 0x61B5, 0x61BC, 0x61E7, 0x61E0, 0x61E5, 0x61E4, 0x61E8, 0x61DE,
+ 0x64EF, 0x64E9, 0x64E3, 0x64EB, 0x64E4, 0x64E8, 0x6581, 0x6580,
+ 0x65B6, 0x65DA, 0x66D2, 0x6A8D, 0x6A96, 0x6A81, 0x6AA5, 0x6A89,
+ 0x6A9F, 0x6A9B, 0x6AA1, 0x6A9E, 0x6A87, 0x6A93, 0x6A8E,
+ /* Big5-HKSCS 0xED40 .. 0xED7E */
+ 0x6A95, 0x6A83, 0x6AA8, 0x6AA4, 0x6A91, 0x6A7F, 0x6AA6, 0x6A9A,
+ 0x6A85, 0x6A8C, 0x6A92, 0x6B5B, 0x6BAD, 0x6C09, 0x6FCC, 0x6FA9,
+ 0x6FF4, 0x6FD4, 0x6FE3, 0x6FDC, 0x6FED, 0x6FE7, 0x6FE6, 0x6FDE,
+ 0x6FF2, 0x6FDD, 0x6FE2, 0x6FE8, 0x71E1, 0x71F1, 0x71E8, 0x71F2,
+ 0x71E4, 0x71F0, 0x71E2, 0x7373, 0x736E, 0x736F, 0x7497, 0x74B2,
+ 0x74AB, 0x7490, 0x74AA, 0x74AD, 0x74B1, 0x74A5, 0x74AF, 0x7510,
+ 0x7511, 0x7512, 0x750F, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647,
+ 0x76A4, 0x76E9, 0x77B5, 0x77AB, 0x77B2, 0x77B7, 0x77B6,
+ /* Big5-HKSCS 0xEDA1 .. 0xEDFE */
+ 0x77B4, 0x77B1, 0x77A8, 0x77F0, 0x78F3, 0x78FD, 0x7902,
+ 0x78FB, 0x78FC, 0x78F2, 0x7905, 0x78F9, 0x78FE, 0x7904, 0x79AB,
+ 0x79A8, 0x7A5C, 0x7A5B, 0x7A56, 0x7A58, 0x7A54, 0x7A5A, 0x7ABE,
+ 0x7AC0, 0x7AC1, 0x7C05, 0x7C0F, 0x7BF2, 0x7C00, 0x7BFF, 0x7BFB,
+ 0x7C0E, 0x7BF4, 0x7C0B, 0x7BF3, 0x7C02, 0x7C09, 0x7C03, 0x7C01,
+ 0x7BF8, 0x7BFD, 0x7C06, 0x7BF0, 0x7BF1, 0x7C10, 0x7C0A, 0x7CE8,
+ 0x7E2D, 0x7E3C, 0x7E42, 0x7E33, 0x9848, 0x7E38, 0x7E2A, 0x7E49,
+ 0x7E40, 0x7E47, 0x7E29, 0x7E4C, 0x7E30, 0x7E3B, 0x7E36, 0x7E44,
+ 0x7E3A, 0x7F45, 0x7F7F, 0x7F7E, 0x7F7D, 0x7FF4, 0x7FF2, 0x802C,
+ 0x81BB, 0x81C4, 0x81CC, 0x81CA, 0x81C5, 0x81C7, 0x81BC, 0x81E9,
+ 0x825B, 0x825A, 0x825C, 0x8583, 0x8580, 0x858F, 0x85A7, 0x8595,
+ 0x85A0, 0x858B, 0x85A3, 0x857B, 0x85A4, 0x859A, 0x859E,
+ /* Big5-HKSCS 0xEE40 .. 0xEE7E */
+ 0x8577, 0x857C, 0x8589, 0x85A1, 0x857A, 0x8578, 0x8557, 0x858E,
+ 0x8596, 0x8586, 0x858D, 0x8599, 0x859D, 0x8581, 0x85A2, 0x8582,
+ 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859F, 0x8668,
+ 0x87BE, 0x87AA, 0x87AD, 0x87C5, 0x87B0, 0x87AC, 0x87B9, 0x87B5,
+ 0x87BC, 0x87AE, 0x87C9, 0x87C3, 0x87C2, 0x87CC, 0x87B7, 0x87AF,
+ 0x87C4, 0x87CA, 0x87B4, 0x87B6, 0x87BF, 0x87B8, 0x87BD, 0x87DE,
+ 0x87B2, 0x8935, 0x8933, 0x893C, 0x893E, 0x8941, 0x8952, 0x8937,
+ 0x8942, 0x89AD, 0x89AF, 0x89AE, 0x89F2, 0x89F3, 0x8B1E,
+ /* Big5-HKSCS 0xEEA1 .. 0xEEFE */
+ 0x8B18, 0x8B16, 0x8B11, 0x8B05, 0x8B0B, 0x8B22, 0x8B0F,
+ 0x8B12, 0x8B15, 0x8B07, 0x8B0D, 0x8B08, 0x8B06, 0x8B1C, 0x8B13,
+ 0x8B1A, 0x8C4F, 0x8C70, 0x8C72, 0x8C71, 0x8C6F, 0x8C95, 0x8C94,
+ 0x8CF9, 0x8D6F, 0x8E4E, 0x8E4D, 0x8E53, 0x8E50, 0x8E4C, 0x8E47,
+ 0x8F43, 0x8F40, 0x9085, 0x907E, 0x9138, 0x919A, 0x91A2, 0x919B,
+ 0x9199, 0x919F, 0x91A1, 0x919D, 0x91A0, 0x93A1, 0x9383, 0x93AF,
+ 0x9364, 0x9356, 0x9347, 0x937C, 0x9358, 0x935C, 0x9376, 0x9349,
+ 0x9350, 0x9351, 0x9360, 0x936D, 0x938F, 0x934C, 0x936A, 0x9379,
+ 0x9357, 0x9355, 0x9352, 0x934F, 0x9371, 0x9377, 0x937B, 0x9361,
+ 0x935E, 0x9363, 0x9367, 0x9380, 0x934E, 0x9359, 0x95C7, 0x95C0,
+ 0x95C9, 0x95C3, 0x95C5, 0x95B7, 0x96AE, 0x96B0, 0x96AC, 0x9720,
+ 0x971F, 0x9718, 0x971D, 0x9719, 0x979A, 0x97A1, 0x979C,
+ /* Big5-HKSCS 0xEF40 .. 0xEF7E */
+ 0x979E, 0x979D, 0x97D5, 0x97D4, 0x97F1, 0x9841, 0x9844, 0x984A,
+ 0x9849, 0x9845, 0x9843, 0x9925, 0x992B, 0x992C, 0x992A, 0x9933,
+ 0x9932, 0x992F, 0x992D, 0x9931, 0x9930, 0x9998, 0x99A3, 0x99A1,
+ 0x9A02, 0x99FA, 0x99F4, 0x99F7, 0x99F9, 0x99F8, 0x99F6, 0x99FB,
+ 0x99FD, 0x99FE, 0x99FC, 0x9A03, 0x9ABE, 0x9AFE, 0x9AFD, 0x9B01,
+ 0x9AFC, 0x9B48, 0x9B9A, 0x9BA8, 0x9B9E, 0x9B9B, 0x9BA6, 0x9BA1,
+ 0x9BA5, 0x9BA4, 0x9B86, 0x9BA2, 0x9BA0, 0x9BAF, 0x9D33, 0x9D41,
+ 0x9D67, 0x9D36, 0x9D2E, 0x9D2F, 0x9D31, 0x9D38, 0x9D30,
+ /* Big5-HKSCS 0xEFA1 .. 0xEFFE */
+ 0x9D45, 0x9D42, 0x9D43, 0x9D3E, 0x9D37, 0x9D40, 0x9D3D,
+ 0x7FF5, 0x9D2D, 0x9E8A, 0x9E89, 0x9E8D, 0x9EB0, 0x9EC8, 0x9EDA,
+ 0x9EFB, 0x9EFF, 0x9F24, 0x9F23, 0x9F22, 0x9F54, 0x9FA0, 0x5131,
+ 0x512D, 0x512E, 0x5698, 0x569C, 0x5697, 0x569A, 0x569D, 0x5699,
+ 0x5970, 0x5B3C, 0x5C69, 0x5C6A, 0x5DC0, 0x5E6D, 0x5E6E, 0x61D8,
+ 0x61DF, 0x61ED, 0x61EE, 0x61F1, 0x61EA, 0x61F0, 0x61EB, 0x61D6,
+ 0x61E9, 0x64FF, 0x6504, 0x64FD, 0x64F8, 0x6501, 0x6503, 0x64FC,
+ 0x6594, 0x65DB, 0x66DA, 0x66DB, 0x66D8, 0x6AC5, 0x6AB9, 0x6ABD,
+ 0x6AE1, 0x6AC6, 0x6ABA, 0x6AB6, 0x6AB7, 0x6AC7, 0x6AB4, 0x6AAD,
+ 0x6B5E, 0x6BC9, 0x6C0B, 0x7007, 0x700C, 0x700D, 0x7001, 0x7005,
+ 0x7014, 0x700E, 0x6FFF, 0x7000, 0x6FFB, 0x7026, 0x6FFC, 0x6FF7,
+ 0x700A, 0x7201, 0x71FF, 0x71F9, 0x7203, 0x71FD, 0x7376,
+ /* Big5-HKSCS 0xF040 .. 0xF07E */
+ 0x74B8, 0x74C0, 0x74B5, 0x74C1, 0x74BE, 0x74B6, 0x74BB, 0x74C2,
+ 0x7514, 0x7513, 0x765C, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657,
+ 0x765A, 0x76A6, 0x76BD, 0x76EC, 0x77C2, 0x77BA, 0x78FF, 0x790C,
+ 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79AD, 0x79AC,
+ 0x7A5F, 0x7C1C, 0x7C29, 0x7C19, 0x7C20, 0x7C1F, 0x7C2D, 0x7C1D,
+ 0x7C26, 0x7C28, 0x7C22, 0x7C25, 0x7C30, 0x7E5C, 0x7E50, 0x7E56,
+ 0x7E63, 0x7E58, 0x7E62, 0x7E5F, 0x7E51, 0x7E60, 0x7E57, 0x7E53,
+ 0x7FB5, 0x7FB3, 0x7FF7, 0x7FF8, 0x8075, 0x81D1, 0x81D2,
+ /* Big5-HKSCS 0xF0A1 .. 0xF0FE */
+ 0x81D0, 0x825F, 0x825E, 0x85B4, 0x85C6, 0x85C0, 0x85C3,
+ 0x85C2, 0x85B3, 0x85B5, 0x85BD, 0x85C7, 0x85C4, 0x85BF, 0x85CB,
+ 0x85CE, 0x85C8, 0x85C5, 0x85B1, 0x85B6, 0x85D2, 0x8624, 0x85B8,
+ 0x85B7, 0x85BE, 0x8669, 0x87E7, 0x87E6, 0x87E2, 0x87DB, 0x87EB,
+ 0x87EA, 0x87E5, 0x87DF, 0x87F3, 0x87E4, 0x87D4, 0x87DC, 0x87D3,
+ 0x87ED, 0x87D8, 0x87E3, 0x87A4, 0x87D7, 0x87D9, 0x8801, 0x87F4,
+ 0x87E8, 0x87DD, 0x8953, 0x894B, 0x894F, 0x894C, 0x8946, 0x8950,
+ 0x8951, 0x8949, 0x8B2A, 0x8B27, 0x8B23, 0x8B33, 0x8B30, 0x8B35,
+ 0x8B47, 0x8B2F, 0x8B3C, 0x8B3E, 0x8B31, 0x8B25, 0x8B37, 0x8B26,
+ 0x8B36, 0x8B2E, 0x8B24, 0x8B3B, 0x8B3D, 0x8B3A, 0x8C42, 0x8C75,
+ 0x8C99, 0x8C98, 0x8C97, 0x8CFE, 0x8D04, 0x8D02, 0x8D00, 0x8E5C,
+ 0x8E62, 0x8E60, 0x8E57, 0x8E56, 0x8E5E, 0x8E65, 0x8E67,
+ /* Big5-HKSCS 0xF140 .. 0xF17E */
+ 0x8E5B, 0x8E5A, 0x8E61, 0x8E5D, 0x8E69, 0x8E54, 0x8F46, 0x8F47,
+ 0x8F48, 0x8F4B, 0x9128, 0x913A, 0x913B, 0x913E, 0x91A8, 0x91A5,
+ 0x91A7, 0x91AF, 0x91AA, 0x93B5, 0x938C, 0x9392, 0x93B7, 0x939B,
+ 0x939D, 0x9389, 0x93A7, 0x938E, 0x93AA, 0x939E, 0x93A6, 0x9395,
+ 0x9388, 0x9399, 0x939F, 0x938D, 0x93B1, 0x9391, 0x93B2, 0x93A4,
+ 0x93A8, 0x93B4, 0x93A3, 0x93A5, 0x95D2, 0x95D3, 0x95D1, 0x96B3,
+ 0x96D7, 0x96DA, 0x5DC2, 0x96DF, 0x96D8, 0x96DD, 0x9723, 0x9722,
+ 0x9725, 0x97AC, 0x97AE, 0x97A8, 0x97AB, 0x97A4, 0x97AA,
+ /* Big5-HKSCS 0xF1A1 .. 0xF1FE */
+ 0x97A2, 0x97A5, 0x97D7, 0x97D9, 0x97D6, 0x97D8, 0x97FA,
+ 0x9850, 0x9851, 0x9852, 0x98B8, 0x9941, 0x993C, 0x993A, 0x9A0F,
+ 0x9A0B, 0x9A09, 0x9A0D, 0x9A04, 0x9A11, 0x9A0A, 0x9A05, 0x9A07,
+ 0x9A06, 0x9AC0, 0x9ADC, 0x9B08, 0x9B04, 0x9B05, 0x9B29, 0x9B35,
+ 0x9B4A, 0x9B4C, 0x9B4B, 0x9BC7, 0x9BC6, 0x9BC3, 0x9BBF, 0x9BC1,
+ 0x9BB5, 0x9BB8, 0x9BD3, 0x9BB6, 0x9BC4, 0x9BB9, 0x9BBD, 0x9D5C,
+ 0x9D53, 0x9D4F, 0x9D4A, 0x9D5B, 0x9D4B, 0x9D59, 0x9D56, 0x9D4C,
+ 0x9D57, 0x9D52, 0x9D54, 0x9D5F, 0x9D58, 0x9D5A, 0x9E8E, 0x9E8C,
+ 0x9EDF, 0x9F01, 0x9F00, 0x9F16, 0x9F25, 0x9F2B, 0x9F2A, 0x9F29,
+ 0x9F28, 0x9F4C, 0x9F55, 0x5134, 0x5135, 0x5296, 0x52F7, 0x53B4,
+ 0x56AB, 0x56AD, 0x56A6, 0x56A7, 0x56AA, 0x56AC, 0x58DA, 0x58DD,
+ 0x58DB, 0x5912, 0x5B3D, 0x5B3E, 0x5B3F, 0x5DC3, 0x5E70,
+ /* Big5-HKSCS 0xF240 .. 0xF27E */
+ 0x5FBF, 0x61FB, 0x6507, 0x6510, 0x650D, 0x6509, 0x650C, 0x650E,
+ 0x6584, 0x65DE, 0x65DD, 0x66DE, 0x6AE7, 0x6AE0, 0x6ACC, 0x6AD1,
+ 0x6AD9, 0x6ACB, 0x6ADF, 0x6ADC, 0x6AD0, 0x6AEB, 0x6ACF, 0x6ACD,
+ 0x6ADE, 0x6B60, 0x6BB0, 0x6C0C, 0x7019, 0x7027, 0x7020, 0x7016,
+ 0x702B, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701C,
+ 0x702A, 0x720C, 0x720A, 0x7207, 0x7202, 0x7205, 0x72A5, 0x72A6,
+ 0x72A4, 0x72A3, 0x72A1, 0x74CB, 0x74C5, 0x74B7, 0x74C3, 0x7516,
+ 0x7660, 0x77C9, 0x77CA, 0x77C4, 0x77F1, 0x791D, 0x791B,
+ /* Big5-HKSCS 0xF2A1 .. 0xF2FE */
+ 0x7921, 0x791C, 0x7917, 0x791E, 0x79B0, 0x7A67, 0x7A68,
+ 0x7C33, 0x7C3C, 0x7C39, 0x7C2C, 0x7C3B, 0x7CEC, 0x7CEA, 0x7E76,
+ 0x7E75, 0x7E78, 0x7E70, 0x7E77, 0x7E6F, 0x7E7A, 0x7E72, 0x7E74,
+ 0x7E68, 0x7F4B, 0x7F4A, 0x7F83, 0x7F86, 0x7FB7, 0x7FFD, 0x7FFE,
+ 0x8078, 0x81D7, 0x81D5, 0x8264, 0x8261, 0x8263, 0x85EB, 0x85F1,
+ 0x85ED, 0x85D9, 0x85E1, 0x85E8, 0x85DA, 0x85D7, 0x85EC, 0x85F2,
+ 0x85F8, 0x85D8, 0x85DF, 0x85E3, 0x85DC, 0x85D1, 0x85F0, 0x85E6,
+ 0x85EF, 0x85DE, 0x85E2, 0x8800, 0x87FA, 0x8803, 0x87F6, 0x87F7,
+ 0x8809, 0x880C, 0x880B, 0x8806, 0x87FC, 0x8808, 0x87FF, 0x880A,
+ 0x8802, 0x8962, 0x895A, 0x895B, 0x8957, 0x8961, 0x895C, 0x8958,
+ 0x895D, 0x8959, 0x8988, 0x89B7, 0x89B6, 0x89F6, 0x8B50, 0x8B48,
+ 0x8B4A, 0x8B40, 0x8B53, 0x8B56, 0x8B54, 0x8B4B, 0x8B55,
+ /* Big5-HKSCS 0xF340 .. 0xF37E */
+ 0x8B51, 0x8B42, 0x8B52, 0x8B57, 0x8C43, 0x8C77, 0x8C76, 0x8C9A,
+ 0x8D06, 0x8D07, 0x8D09, 0x8DAC, 0x8DAA, 0x8DAD, 0x8DAB, 0x8E6D,
+ 0x8E78, 0x8E73, 0x8E6A, 0x8E6F, 0x8E7B, 0x8EC2, 0x8F52, 0x8F51,
+ 0x8F4F, 0x8F50, 0x8F53, 0x8FB4, 0x9140, 0x913F, 0x91B0, 0x91AD,
+ 0x93DE, 0x93C7, 0x93CF, 0x93C2, 0x93DA, 0x93D0, 0x93F9, 0x93EC,
+ 0x93CC, 0x93D9, 0x93A9, 0x93E6, 0x93CA, 0x93D4, 0x93EE, 0x93E3,
+ 0x93D5, 0x93C4, 0x93CE, 0x93C0, 0x93D2, 0x93E7, 0x957D, 0x95DA,
+ 0x95DB, 0x96E1, 0x9729, 0x972B, 0x972C, 0x9728, 0x9726,
+ /* Big5-HKSCS 0xF3A1 .. 0xF3FE */
+ 0x97B3, 0x97B7, 0x97B6, 0x97DD, 0x97DE, 0x97DF, 0x985C,
+ 0x9859, 0x985D, 0x9857, 0x98BF, 0x98BD, 0x98BB, 0x98BE, 0x9948,
+ 0x9947, 0x9943, 0x99A6, 0x99A7, 0x9A1A, 0x9A15, 0x9A25, 0x9A1D,
+ 0x9A24, 0x9A1B, 0x9A22, 0x9A20, 0x9A27, 0x9A23, 0x9A1E, 0x9A1C,
+ 0x9A14, 0x9AC2, 0x9B0B, 0x9B0A, 0x9B0E, 0x9B0C, 0x9B37, 0x9BEA,
+ 0x9BEB, 0x9BE0, 0x9BDE, 0x9BE4, 0x9BE6, 0x9BE2, 0x9BF0, 0x9BD4,
+ 0x9BD7, 0x9BEC, 0x9BDC, 0x9BD9, 0x9BE5, 0x9BD5, 0x9BE1, 0x9BDA,
+ 0x9D77, 0x9D81, 0x9D8A, 0x9D84, 0x9D88, 0x9D71, 0x9D80, 0x9D78,
+ 0x9D86, 0x9D8B, 0x9D8C, 0x9D7D, 0x9D6B, 0x9D74, 0x9D75, 0x9D70,
+ 0x9D69, 0x9D85, 0x9D73, 0x9D7B, 0x9D82, 0x9D6F, 0x9D79, 0x9D7F,
+ 0x9D87, 0x9D68, 0x9E94, 0x9E91, 0x9EC0, 0x9EFC, 0x9F2D, 0x9F40,
+ 0x9F41, 0x9F4D, 0x9F56, 0x9F57, 0x9F58, 0x5337, 0x56B2,
+ /* Big5-HKSCS 0xF440 .. 0xF47E */
+ 0x56B5, 0x56B3, 0x58E3, 0x5B45, 0x5DC6, 0x5DC7, 0x5EEE, 0x5EEF,
+ 0x5FC0, 0x5FC1, 0x61F9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65DF,
+ 0x66E8, 0x66E3, 0x66E4, 0x6AF3, 0x6AF0, 0x6AEA, 0x6AE8, 0x6AF9,
+ 0x6AF1, 0x6AEE, 0x6AEF, 0x703C, 0x7035, 0x702F, 0x7037, 0x7034,
+ 0x7031, 0x7042, 0x7038, 0x703F, 0x703A, 0x7039, 0x7040, 0x703B,
+ 0x7033, 0x7041, 0x7213, 0x7214, 0x72A8, 0x737D, 0x737C, 0x74BA,
+ 0x76AB, 0x76AA, 0x76BE, 0x76ED, 0x77CC, 0x77CE, 0x77CF, 0x77CD,
+ 0x77F2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929,
+ /* Big5-HKSCS 0xF4A1 .. 0xF4FE */
+ 0x79B2, 0x7A6E, 0x7A6C, 0x7A6D, 0x7AF7, 0x7C49, 0x7C48,
+ 0x7C4A, 0x7C47, 0x7C45, 0x7CEE, 0x7E7B, 0x7E7E, 0x7E81, 0x7E80,
+ 0x7FBA, 0x7FFF, 0x8079, 0x81DB, 0x81D9, 0x820B, 0x8268, 0x8269,
+ 0x8622, 0x85FF, 0x8601, 0x85FE, 0x861B, 0x8600, 0x85F6, 0x8604,
+ 0x8609, 0x8605, 0x860C, 0x85FD, 0x8819, 0x8810, 0x8811, 0x8817,
+ 0x8813, 0x8816, 0x8963, 0x8966, 0x89B9, 0x89F7, 0x8B60, 0x8B6A,
+ 0x8B5D, 0x8B68, 0x8B63, 0x8B65, 0x8B67, 0x8B6D, 0x8DAE, 0x8E86,
+ 0x8E88, 0x8E84, 0x8F59, 0x8F56, 0x8F57, 0x8F55, 0x8F58, 0x8F5A,
+ 0x908D, 0x9143, 0x9141, 0x91B7, 0x91B5, 0x91B2, 0x91B3, 0x940B,
+ 0x9413, 0x93FB, 0x9420, 0x940F, 0x9414, 0x93FE, 0x9415, 0x9410,
+ 0x9428, 0x9419, 0x940D, 0x93F5, 0x9400, 0x93F7, 0x9407, 0x940E,
+ 0x9416, 0x9412, 0x93FA, 0x9409, 0x93F8, 0x940A, 0x93FF,
+ /* Big5-HKSCS 0xF540 .. 0xF57E */
+ 0x93FC, 0x940C, 0x93F6, 0x9411, 0x9406, 0x95DE, 0x95E0, 0x95DF,
+ 0x972E, 0x972F, 0x97B9, 0x97BB, 0x97FD, 0x97FE, 0x9860, 0x9862,
+ 0x9863, 0x985F, 0x98C1, 0x98C2, 0x9950, 0x994E, 0x9959, 0x994C,
+ 0x994B, 0x9953, 0x9A32, 0x9A34, 0x9A31, 0x9A2C, 0x9A2A, 0x9A36,
+ 0x9A29, 0x9A2E, 0x9A38, 0x9A2D, 0x9AC7, 0x9ACA, 0x9AC6, 0x9B10,
+ 0x9B12, 0x9B11, 0x9C0B, 0x9C08, 0x9BF7, 0x9C05, 0x9C12, 0x9BF8,
+ 0x9C40, 0x9C07, 0x9C0E, 0x9C06, 0x9C17, 0x9C14, 0x9C09, 0x9D9F,
+ 0x9D99, 0x9DA4, 0x9D9D, 0x9D92, 0x9D98, 0x9D90, 0x9D9B,
+ /* Big5-HKSCS 0xF5A1 .. 0xF5FE */
+ 0x9DA0, 0x9D94, 0x9D9C, 0x9DAA, 0x9D97, 0x9DA1, 0x9D9A,
+ 0x9DA2, 0x9DA8, 0x9D9E, 0x9DA3, 0x9DBF, 0x9DA9, 0x9D96, 0x9DA6,
+ 0x9DA7, 0x9E99, 0x9E9B, 0x9E9A, 0x9EE5, 0x9EE4, 0x9EE7, 0x9EE6,
+ 0x9F30, 0x9F2E, 0x9F5B, 0x9F60, 0x9F5E, 0x9F5D, 0x9F59, 0x9F91,
+ 0x513A, 0x5139, 0x5298, 0x5297, 0x56C3, 0x56BD, 0x56BE, 0x5B48,
+ 0x5B47, 0x5DCB, 0x5DCF, 0x5EF1, 0x61FD, 0x651B, 0x6B02, 0x6AFC,
+ 0x6B03, 0x6AF8, 0x6B00, 0x7043, 0x7044, 0x704A, 0x7048, 0x7049,
+ 0x7045, 0x7046, 0x721D, 0x721A, 0x7219, 0x737E, 0x7517, 0x766A,
+ 0x77D0, 0x792D, 0x7931, 0x792F, 0x7C54, 0x7C53, 0x7CF2, 0x7E8A,
+ 0x7E87, 0x7E88, 0x7E8B, 0x7E86, 0x7E8D, 0x7F4D, 0x7FBB, 0x8030,
+ 0x81DD, 0x8618, 0x862A, 0x8626, 0x861F, 0x8623, 0x861C, 0x8619,
+ 0x8627, 0x862E, 0x8621, 0x8620, 0x8629, 0x861E, 0x8625,
+ /* Big5-HKSCS 0xF640 .. 0xF67E */
+ 0x8829, 0x881D, 0x881B, 0x8820, 0x8824, 0x881C, 0x882B, 0x884A,
+ 0x896D, 0x8969, 0x896E, 0x896B, 0x89FA, 0x8B79, 0x8B78, 0x8B45,
+ 0x8B7A, 0x8B7B, 0x8D10, 0x8D14, 0x8DAF, 0x8E8E, 0x8E8C, 0x8F5E,
+ 0x8F5B, 0x8F5D, 0x9146, 0x9144, 0x9145, 0x91B9, 0x943F, 0x943B,
+ 0x9436, 0x9429, 0x943D, 0x943C, 0x9430, 0x9439, 0x942A, 0x9437,
+ 0x942C, 0x9440, 0x9431, 0x95E5, 0x95E4, 0x95E3, 0x9735, 0x973A,
+ 0x97BF, 0x97E1, 0x9864, 0x98C9, 0x98C6, 0x98C0, 0x9958, 0x9956,
+ 0x9A39, 0x9A3D, 0x9A46, 0x9A44, 0x9A42, 0x9A41, 0x9A3A,
+ /* Big5-HKSCS 0xF6A1 .. 0xF6FE */
+ 0x9A3F, 0x9ACD, 0x9B15, 0x9B17, 0x9B18, 0x9B16, 0x9B3A,
+ 0x9B52, 0x9C2B, 0x9C1D, 0x9C1C, 0x9C2C, 0x9C23, 0x9C28, 0x9C29,
+ 0x9C24, 0x9C21, 0x9DB7, 0x9DB6, 0x9DBC, 0x9DC1, 0x9DC7, 0x9DCA,
+ 0x9DCF, 0x9DBE, 0x9DC5, 0x9DC3, 0x9DBB, 0x9DB5, 0x9DCE, 0x9DB9,
+ 0x9DBA, 0x9DAC, 0x9DC8, 0x9DB1, 0x9DAD, 0x9DCC, 0x9DB3, 0x9DCD,
+ 0x9DB2, 0x9E7A, 0x9E9C, 0x9EEB, 0x9EEE, 0x9EED, 0x9F1B, 0x9F18,
+ 0x9F1A, 0x9F31, 0x9F4E, 0x9F65, 0x9F64, 0x9F92, 0x4EB9, 0x56C6,
+ 0x56C5, 0x56CB, 0x5971, 0x5B4B, 0x5B4C, 0x5DD5, 0x5DD1, 0x5EF2,
+ 0x6521, 0x6520, 0x6526, 0x6522, 0x6B0B, 0x6B08, 0x6B09, 0x6C0D,
+ 0x7055, 0x7056, 0x7057, 0x7052, 0x721E, 0x721F, 0x72A9, 0x737F,
+ 0x74D8, 0x74D5, 0x74D9, 0x74D7, 0x766D, 0x76AD, 0x7935, 0x79B4,
+ 0x7A70, 0x7A71, 0x7C57, 0x7C5C, 0x7C59, 0x7C5B, 0x7C5A,
+ /* Big5-HKSCS 0xF740 .. 0xF77E */
+ 0x7CF4, 0x7CF1, 0x7E91, 0x7F4F, 0x7F87, 0x81DE, 0x826B, 0x8634,
+ 0x8635, 0x8633, 0x862C, 0x8632, 0x8636, 0x882C, 0x8828, 0x8826,
+ 0x882A, 0x8825, 0x8971, 0x89BF, 0x89BE, 0x89FB, 0x8B7E, 0x8B84,
+ 0x8B82, 0x8B86, 0x8B85, 0x8B7F, 0x8D15, 0x8E95, 0x8E94, 0x8E9A,
+ 0x8E92, 0x8E90, 0x8E96, 0x8E97, 0x8F60, 0x8F62, 0x9147, 0x944C,
+ 0x9450, 0x944A, 0x944B, 0x944F, 0x9447, 0x9445, 0x9448, 0x9449,
+ 0x9446, 0x973F, 0x97E3, 0x986A, 0x9869, 0x98CB, 0x9954, 0x995B,
+ 0x9A4E, 0x9A53, 0x9A54, 0x9A4C, 0x9A4F, 0x9A48, 0x9A4A,
+ /* Big5-HKSCS 0xF7A1 .. 0xF7FE */
+ 0x9A49, 0x9A52, 0x9A50, 0x9AD0, 0x9B19, 0x9B2B, 0x9B3B,
+ 0x9B56, 0x9B55, 0x9C46, 0x9C48, 0x9C3F, 0x9C44, 0x9C39, 0x9C33,
+ 0x9C41, 0x9C3C, 0x9C37, 0x9C34, 0x9C32, 0x9C3D, 0x9C36, 0x9DDB,
+ 0x9DD2, 0x9DDE, 0x9DDA, 0x9DCB, 0x9DD0, 0x9DDC, 0x9DD1, 0x9DDF,
+ 0x9DE9, 0x9DD9, 0x9DD8, 0x9DD6, 0x9DF5, 0x9DD5, 0x9DDD, 0x9EB6,
+ 0x9EF0, 0x9F35, 0x9F33, 0x9F32, 0x9F42, 0x9F6B, 0x9F95, 0x9FA2,
+ 0x513D, 0x5299, 0x58E8, 0x58E7, 0x5972, 0x5B4D, 0x5DD8, 0x882F,
+ 0x5F4F, 0x6201, 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66EB,
+ 0x6B11, 0x6B12, 0x6B0F, 0x6BCA, 0x705B, 0x705A, 0x7222, 0x7382,
+ 0x7381, 0x7383, 0x7670, 0x77D4, 0x7C67, 0x7C66, 0x7E95, 0x826C,
+ 0x863A, 0x8640, 0x8639, 0x863C, 0x8631, 0x863B, 0x863E, 0x8830,
+ 0x8832, 0x882E, 0x8833, 0x8976, 0x8974, 0x8973, 0x89FE,
+ /* Big5-HKSCS 0xF840 .. 0xF87E */
+ 0x8B8C, 0x8B8E, 0x8B8B, 0x8B88, 0x8C45, 0x8D19, 0x8E98, 0x8F64,
+ 0x8F63, 0x91BC, 0x9462, 0x9455, 0x945D, 0x9457, 0x945E, 0x97C4,
+ 0x97C5, 0x9800, 0x9A56, 0x9A59, 0x9B1E, 0x9B1F, 0x9B20, 0x9C52,
+ 0x9C58, 0x9C50, 0x9C4A, 0x9C4D, 0x9C4B, 0x9C55, 0x9C59, 0x9C4C,
+ 0x9C4E, 0x9DFB, 0x9DF7, 0x9DEF, 0x9DE3, 0x9DEB, 0x9DF8, 0x9DE4,
+ 0x9DF6, 0x9DE1, 0x9DEE, 0x9DE6, 0x9DF2, 0x9DF0, 0x9DE2, 0x9DEC,
+ 0x9DF4, 0x9DF3, 0x9DE8, 0x9DED, 0x9EC2, 0x9ED0, 0x9EF2, 0x9EF3,
+ 0x9F06, 0x9F1C, 0x9F38, 0x9F37, 0x9F36, 0x9F43, 0x9F4F,
+ /* Big5-HKSCS 0xF8A1 .. 0xF8FE */
+ 0x9F71, 0x9F70, 0x9F6E, 0x9F6F, 0x56D3, 0x56CD, 0x5B4E,
+ 0x5C6D, 0x652D, 0x66ED, 0x66EE, 0x6B13, 0x705F, 0x7061, 0x705D,
+ 0x7060, 0x7223, 0x74DB, 0x74E5, 0x77D5, 0x7938, 0x79B7, 0x79B6,
+ 0x7C6A, 0x7E97, 0x7F89, 0x826D, 0x8643, 0x8838, 0x8837, 0x8835,
+ 0x884B, 0x8B94, 0x8B95, 0x8E9E, 0x8E9F, 0x8EA0, 0x8E9D, 0x91BE,
+ 0x91BD, 0x91C2, 0x946B, 0x9468, 0x9469, 0x96E5, 0x9746, 0x9743,
+ 0x9747, 0x97C7, 0x97E5, 0x9A5E, 0x9AD5, 0x9B59, 0x9C63, 0x9C67,
+ 0x9C66, 0x9C62, 0x9C5E, 0x9C60, 0x9E02, 0x9DFE, 0x9E07, 0x9E03,
+ 0x9E06, 0x9E05, 0x9E00, 0x9E01, 0x9E09, 0x9DFF, 0x9DFD, 0x9E04,
+ 0x9EA0, 0x9F1E, 0x9F46, 0x9F74, 0x9F75, 0x9F76, 0x56D4, 0x652E,
+ 0x65B8, 0x6B18, 0x6B19, 0x6B17, 0x6B1A, 0x7062, 0x7226, 0x72AA,
+ 0x77D8, 0x77D9, 0x7939, 0x7C69, 0x7C6B, 0x7CF6, 0x7E9A,
+ /* Big5-HKSCS 0xF940 .. 0xF97E */
+ 0x7E98, 0x7E9B, 0x7E99, 0x81E0, 0x81E1, 0x8646, 0x8647, 0x8648,
+ 0x8979, 0x897A, 0x897C, 0x897B, 0x89FF, 0x8B98, 0x8B99, 0x8EA5,
+ 0x8EA4, 0x8EA3, 0x946E, 0x946D, 0x946F, 0x9471, 0x9473, 0x9749,
+ 0x9872, 0x995F, 0x9C68, 0x9C6E, 0x9C6D, 0x9E0B, 0x9E0D, 0x9E10,
+ 0x9E0F, 0x9E12, 0x9E11, 0x9EA1, 0x9EF5, 0x9F09, 0x9F47, 0x9F78,
+ 0x9F7B, 0x9F7A, 0x9F79, 0x571E, 0x7066, 0x7C6F, 0x883C, 0x8DB2,
+ 0x8EA6, 0x91C3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9A60, 0x9C74,
+ 0x9C73, 0x9C71, 0x9C75, 0x9E14, 0x9E13, 0x9EF6, 0x9F0A,
+ /* Big5-HKSCS 0xF9A1 .. 0xF9FE */
+ 0x9FA4, 0x7068, 0x7065, 0x7CF7, 0x866A, 0x883E, 0x883D,
+ 0x883F, 0x8B9E, 0x8C9C, 0x8EA9, 0x8EC9, 0x974B, 0x9873, 0x9874,
+ 0x98CC, 0x9961, 0x99AB, 0x9A64, 0x9A66, 0x9A67, 0x9B24, 0x9E15,
+ 0x9E17, 0x9F48, 0x6207, 0x6B1E, 0x7227, 0x864C, 0x8EA8, 0x9482,
+ 0x9480, 0x9481, 0x9A69, 0x9A68, 0x9B2E, 0x9E19, 0x7229, 0x864B,
+ 0x8B9F, 0x9483, 0x9C79, 0x9EB7, 0x7675, 0x9A6B, 0x9C7A, 0x9E1D,
+ 0x7069, 0x706A, 0x9EA4, 0x9F7E, 0x9F49, 0x9F98, 0x7881, 0x92B9,
+ 0x88CF, 0x58BB, 0x6052, 0x7CA7, 0x5AFA, 0x2554, 0x2566, 0x2557,
+ 0x2560, 0x256C, 0x2563, 0x255A, 0x2569, 0x255D, 0x2552, 0x2564,
+ 0x2555, 0x255E, 0x256A, 0x2561, 0x2558, 0x2567, 0x255B, 0x2553,
+ 0x2565, 0x2556, 0x255F, 0x256B, 0x2562, 0x2559, 0x2568, 0x255C,
+ 0x2551, 0x2550, 0x256D, 0x256E, 0x2570, 0x256F, 0xFFED,
+ /* Big5-HKSCS 0xFA40 .. 0xFA7E */
+ 0xE000, 0x92DB, 0xE002, 0xE003, 0x854C, 0x42B5, 0x73EF, 0x51B5,
+ 0x3649, 0xE009, 0xE00A, 0x9344, 0xE00C, 0x82EE, 0xE00E, 0x783C,
+ 0x6744, 0x62DF, 0xE012, 0xE013, 0xE014, 0xE015, 0xE016, 0x4FAB,
+ 0xE018, 0x5008, 0xE01A, 0xE01B, 0xE01C, 0xE01D, 0xE01E, 0x5029,
+ 0xE020, 0x5FA4, 0xE022, 0xE023, 0x6EDB, 0xE025, 0x507D, 0x5101,
+ 0x347A, 0x510E, 0x986C, 0x3743, 0x8416, 0xE02D, 0xE02E, 0x5160,
+ 0xE030, 0x516A, 0xE032, 0xE033, 0xE034, 0xE035, 0xE036, 0xE037,
+ 0xE038, 0x5B82, 0x877D, 0xE03B, 0xE03C, 0x51B2, 0x51B8,
+ /* Big5-HKSCS 0xFAA1 .. 0xFAFE */
+ 0x9D34, 0x51C9, 0x51CF, 0x51D1, 0x3CDC, 0x51D3, 0xE045,
+ 0x51B3, 0x51E2, 0x5342, 0x51ED, 0x83CD, 0x693E, 0xE04C, 0x5F7B,
+ 0x520B, 0x5226, 0x523C, 0x52B5, 0x5257, 0x5294, 0x52B9, 0x52C5,
+ 0x7C15, 0x8542, 0x52E0, 0x860D, 0xE05A, 0x5305, 0xE05C, 0x5549,
+ 0x6ED9, 0xE05F, 0xE060, 0xE061, 0x5333, 0x5344, 0xE064, 0x6CCB,
+ 0xE066, 0x681B, 0x73D5, 0x604A, 0x3EAA, 0x38CC, 0xE06C, 0x71DD,
+ 0x44A2, 0x536D, 0x5374, 0xE071, 0x537E, 0x537F, 0xE074, 0xE075,
+ 0x77E6, 0x5393, 0xE078, 0x53A0, 0x53AB, 0x53AE, 0x73A7, 0xE07D,
+ 0x3F59, 0x739C, 0x53C1, 0x53C5, 0x6C49, 0x4E49, 0x57FE, 0x53D9,
+ 0x3AAB, 0xE087, 0x53E0, 0xE089, 0xE08A, 0x53F6, 0xE08C, 0x5413,
+ 0x7079, 0x552B, 0x6657, 0x6D5B, 0x546D, 0xE093, 0xE094, 0x555D,
+ 0x548F, 0x54A4, 0x47A6, 0xE099, 0xE09A, 0x3DB4, 0xE09C,
+ /* Big5-HKSCS 0xFB40 .. 0xFB7E */
+ 0xE09D, 0xE09E, 0x5547, 0x4CED, 0x542F, 0x7417, 0x5586, 0x55A9,
+ 0x5605, 0xE0A6, 0xE0A7, 0x4552, 0xE0A9, 0x66B3, 0xE0AB, 0x5637,
+ 0x66CD, 0xE0AE, 0x66A4, 0x66AD, 0x564D, 0x564F, 0x78F1, 0x56F1,
+ 0x9787, 0x53FE, 0x5700, 0x56EF, 0x56ED, 0xE0BA, 0x3623, 0xE0BC,
+ 0x5746, 0xE0BE, 0x6C6E, 0x708B, 0x5742, 0x36B1, 0xE0C3, 0x57E6,
+ 0xE0C5, 0x5803, 0xE0C7, 0xE0C8, 0x5826, 0xE0CA, 0x585C, 0x58AA,
+ 0x3561, 0x58E0, 0x58DC, 0xE0D0, 0x58FB, 0x5BFF, 0x5743, 0xE0D4,
+ 0xE0D5, 0x93D3, 0x35A1, 0x591F, 0x68A6, 0x36C3, 0x6E59,
+ /* Big5-HKSCS 0xFBA1 .. 0xFBFE */
+ 0xE0DC, 0x5A24, 0x5553, 0xE0DF, 0x8505, 0x59C9, 0xE0E2,
+ 0xE0E3, 0xE0E4, 0xE0E5, 0x59D9, 0xE0E7, 0xE0E8, 0xE0E9, 0x6D71,
+ 0xE0EB, 0xE0EC, 0x59F9, 0xE0EE, 0x5AAB, 0x5A63, 0x36E6, 0xE0F2,
+ 0x5A77, 0x3708, 0x5A96, 0x7465, 0x5AD3, 0xE0F8, 0xE0F9, 0x3D85,
+ 0xE0FB, 0x3732, 0xE0FD, 0x5E83, 0x52D0, 0x5B76, 0x6588, 0x5B7C,
+ 0xE103, 0x4004, 0x485D, 0xE106, 0x5BD5, 0x6160, 0xE109, 0xE10A,
+ 0xE10B, 0x5BF3, 0x5B9D, 0x4D10, 0x5C05, 0xE110, 0x5C13, 0x73CE,
+ 0x5C14, 0xE114, 0xE115, 0x5C49, 0x48DD, 0x5C85, 0x5CE9, 0x5CEF,
+ 0x5D8B, 0xE11C, 0xE11D, 0x5D10, 0x5D18, 0x5D46, 0xE121, 0x5CBA,
+ 0x5DD7, 0x82FC, 0x382D, 0xE126, 0xE127, 0xE128, 0x8287, 0x3836,
+ 0x3BC2, 0x5E2E, 0x6A8A, 0x5E75, 0x5E7A, 0xE130, 0xE131, 0x53A6,
+ 0x4EB7, 0x5ED0, 0x53A8, 0xE136, 0x5E09, 0x5EF4, 0xE139,
+ /* Big5-HKSCS 0xFC40 .. 0xFC7E */
+ 0x5EF9, 0x5EFB, 0x38A0, 0x5EFC, 0x683E, 0x941B, 0x5F0D, 0xE141,
+ 0xE142, 0x3ADE, 0x48AE, 0xE145, 0x5F3A, 0xE147, 0xE148, 0x5F58,
+ 0xE14A, 0x5F63, 0x97BD, 0xE14D, 0x5F72, 0x9340, 0xE150, 0x5FA7,
+ 0x5DB6, 0x3D5F, 0xE154, 0xE155, 0xE156, 0xE157, 0x91D6, 0xE159,
+ 0xE15A, 0x6031, 0x6685, 0xE15D, 0x3963, 0x3DC7, 0x3639, 0x5790,
+ 0xE162, 0x7971, 0x3E40, 0x609E, 0x60A4, 0x60B3, 0xE168, 0xE169,
+ 0xE16A, 0x74A4, 0x50E1, 0x5AA0, 0x6164, 0x8424, 0x6142, 0xE171,
+ 0xE172, 0x6181, 0x51F4, 0xE175, 0x6187, 0x5BAA, 0xE178,
+ /* Big5-HKSCS 0xFCA1 .. 0xFCFE */
+ 0xE179, 0x61D3, 0xE17B, 0xE17C, 0x61D0, 0x3932, 0xE17F,
+ 0xE180, 0x6023, 0x615C, 0x651E, 0x638B, 0xE185, 0x62C5, 0xE187,
+ 0x62D5, 0xE189, 0x636C, 0xE18B, 0x3A17, 0x6438, 0x63F8, 0xE18F,
+ 0xE190, 0x6490, 0x6F8A, 0xE193, 0x9814, 0xE195, 0xE196, 0x64E1,
+ 0x64E5, 0x947B, 0x3A66, 0x643A, 0x3A57, 0x654D, 0x6F16, 0xE19F,
+ 0xE1A0, 0x6585, 0x656D, 0x655F, 0xE1A4, 0x65B5, 0xE1A6, 0x4B37,
+ 0x65D1, 0x40D8, 0xE1AA, 0x65E0, 0x65E3, 0x5FDF, 0xE1AE, 0x6618,
+ 0xE1B0, 0xE1B1, 0x6644, 0xE1B3, 0xE1B4, 0x664B, 0xE1B6, 0x6667,
+ 0xE1B8, 0x6673, 0x6674, 0xE1BB, 0xE1BC, 0xE1BD, 0xE1BE, 0xE1BF,
+ 0x77C5, 0xE1C1, 0x99A4, 0x6702, 0xE1C4, 0xE1C5, 0x3B2B, 0x69FA,
+ 0xE1C8, 0x675E, 0x6767, 0x6762, 0xE1CC, 0xE1CD, 0x67D7, 0x44E9,
+ 0x6822, 0x6E50, 0x923C, 0x6801, 0xE1D4, 0xE1D5, 0x685D,
+ /* Big5-HKSCS 0xFD40 .. 0xFD7E */
+ 0xE1D7, 0x69E1, 0x6A0B, 0xE1DA, 0x6973, 0x68C3, 0xE1DD, 0x6901,
+ 0x6900, 0x3D32, 0x3A01, 0xE1E2, 0x3B80, 0x67AC, 0x6961, 0xE1E6,
+ 0x42FC, 0x6936, 0x6998, 0x3BA1, 0xE1EB, 0x8363, 0x5090, 0x69F9,
+ 0xE1EF, 0xE1F0, 0x6A45, 0xE1F2, 0x6A9D, 0x3BF3, 0x67B1, 0x6AC8,
+ 0xE1F7, 0x3C0D, 0x6B1D, 0xE1FA, 0x60DE, 0x6B35, 0x6B74, 0xE1FE,
+ 0x6EB5, 0xE200, 0xE201, 0xE202, 0x3740, 0x5421, 0xE205, 0x6BE1,
+ 0xE207, 0x6BDC, 0x6C37, 0xE20A, 0xE20B, 0xE20C, 0x6C5A, 0x8226,
+ 0x6C79, 0xE210, 0x44C5, 0xE212, 0xE213, 0xE214, 0xE215,
+ /* Big5-HKSCS 0xFDA1 .. 0xFDFE */
+ 0xE216, 0x36E5, 0x3CEB, 0xE219, 0x9B83, 0xE21B, 0xE21C,
+ 0x7F8F, 0x6837, 0xE21F, 0xE220, 0xE221, 0x6D96, 0x6D5C, 0x6E7C,
+ 0x6F04, 0xE226, 0xE227, 0xE228, 0x8533, 0xE22A, 0x51C7, 0x6C9C,
+ 0x6E1D, 0x842E, 0xE22F, 0x6E2F, 0xE231, 0x7453, 0xE233, 0x79CC,
+ 0x6E4F, 0x5A91, 0xE237, 0x6FF8, 0x370D, 0x6F9D, 0xE23B, 0x6EFA,
+ 0xE23D, 0xE23E, 0x4555, 0x93F0, 0x6F44, 0x6F5C, 0x3D4E, 0x6F74,
+ 0xE245, 0x3D3B, 0x6F9F, 0xE248, 0x6FD3, 0xE24A, 0xE24B, 0xE24C,
+ 0xE24D, 0xE24E, 0xE24F, 0x51DF, 0xE251, 0xE252, 0xE253, 0xE254,
+ 0x704B, 0x707E, 0x70A7, 0x7081, 0x70CC, 0x70D5, 0x70D6, 0x70DF,
+ 0x4104, 0x3DE8, 0x71B4, 0x7196, 0xE261, 0x712B, 0x7145, 0x5A88,
+ 0x714A, 0x716E, 0x5C9C, 0xE268, 0x714F, 0x9362, 0xE26B, 0x712C,
+ 0xE26D, 0xE26E, 0xE26F, 0x71BA, 0xE271, 0x70BD, 0x720E,
+ /* Big5-HKSCS 0xFE40 .. 0xFE7E */
+ 0x9442, 0x7215, 0x5911, 0x9443, 0x7224, 0x9341, 0xE27A, 0x722E,
+ 0x7240, 0xE27D, 0x68BD, 0x7255, 0x7257, 0x3E55, 0xE282, 0x680D,
+ 0x6F3D, 0x7282, 0x732A, 0x732B, 0xE288, 0xE289, 0x48ED, 0xE28B,
+ 0x7328, 0x732E, 0x73CF, 0x73AA, 0xE290, 0xE291, 0x73C9, 0x7449,
+ 0xE294, 0xE295, 0xE296, 0x6623, 0x36C5, 0xE299, 0xE29A, 0xE29B,
+ 0x73F7, 0x7415, 0x6903, 0xE29F, 0x7439, 0xE2A1, 0x3ED7, 0x745C,
+ 0xE2A4, 0x7460, 0xE2A6, 0x7447, 0x73E4, 0x7476, 0x83B9, 0x746C,
+ 0x3730, 0x7474, 0x93F1, 0x6A2C, 0x7482, 0x4953, 0xE2B2,
+ /* Big5-HKSCS 0xFEA1 .. 0xFEFE */
+ 0xE2B3, 0xE2B4, 0xE2B5, 0x5B46, 0xE2B7, 0xE2B8, 0x74C8,
+ 0xE2BA, 0x750E, 0x74E9, 0x751E, 0xE2BE, 0xE2BF, 0x5BD7, 0xE2C1,
+ 0x9385, 0x754D, 0x754A, 0x7567, 0x756E, 0xE2C7, 0x3F04, 0xE2C9,
+ 0x758E, 0x745D, 0x759E, 0x75B4, 0x7602, 0x762C, 0x7651, 0x764F,
+ 0x766F, 0x7676, 0xE2D4, 0x7690, 0x81EF, 0x37F8, 0xE2D8, 0xE2D9,
+ 0x76A1, 0x76A5, 0x76B7, 0x76CC, 0xE2DE, 0x8462, 0xE2E0, 0xE2E1,
+ 0xE2E2, 0x771E, 0x7726, 0x7740, 0x64AF, 0xE2E7, 0x7758, 0xE2E9,
+ 0x77AF, 0xE2EB, 0xE2EC, 0xE2ED, 0x77F4, 0x7809, 0xE2F0, 0xE2F1,
+ 0x68CA, 0x78AF, 0x78C7, 0x78D3, 0x96A5, 0x792E, 0xE2F8, 0x78D7,
+ 0x7934, 0x78B1, 0xE2FC, 0x8FB8, 0x8884, 0xE2FF, 0xE300, 0xE301,
+ 0x7986, 0x8900, 0x6902, 0x7980, 0xE306, 0x799D, 0xE308, 0x793C,
+ 0x79A9, 0x6E2A, 0xE30C, 0x3EA8, 0x79C6, 0xE30F, 0x79D4,
+};
+
+
+/* Returns the number of bytes of Bytes consumed. */
+static int qt_Big5hkscsToUnicode(const uchar *s, uint *pwc)
+{
+ uchar c1 = s[0];
+ if ((c1 >= 0x81 && c1 <= 0xfe)) {
+ uchar c2 = s[1];
+ if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) {
+ uint i = 157 * (c1 - 0x81) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40));
+ ushort wc = 0xfffd;
+ if (i < 19782)
+ wc = big5hkscs_to_ucs[i];
+ if (wc != 0xfffd) {
+ *pwc = (uint) wc;
+ return 2;
+ }
+ }
+ return 0;
+ } else if (c1 < 0x80) {
+ *pwc = (uint) c1;
+ return 1;
+ }
+ return 0;
+}
+
+//---------------------------------------------------------------------------
+
+/*
+ * ucs4 to big5hkscs convert routing
+ */
+
+typedef struct {
+ ushort index; /* index into big table */
+ ushort used; /* bitmask of used entries */
+} Summary16;
+
+/* ISO-10646-UCS-4 to big5hkscs convert table */
+static const uchar big5hkscs_to_charset[24908][2] = {
+ {0x21,0x00}, {0xA2,0x46}, {0xA2,0x47}, {0xA2,0x44},
+ {0x7C,0x00}, {0xA1,0xB1}, {0xC6,0xD8}, {0x63,0x00},
+ {0x61,0x00}, {0x2D,0x00}, {0x52,0x00}, {0xA1,0xC2},
+ {0xA2,0x58}, {0xA1,0xD3}, {0x32,0x00}, {0x33,0x00},
+ {0xA1,0xA6}, {0xA3,0x67}, {0xA1,0x50}, {0xA1,0x4D},
+ {0x31,0x00}, {0x6F,0x00}, {0x3F,0x00}, {0x88,0x59},
+ {0x88,0x57}, {0x41,0x00}, {0x41,0x00}, {0x41,0x00},
+ {0x41,0x00}, {0x41,0x00}, {0x43,0x00}, {0x88,0x5D},
+ {0x88,0x5B}, {0x88,0x66}, {0x45,0x00}, {0x49,0x00},
+ {0x49,0x00}, {0x49,0x00}, {0x49,0x00}, {0x44,0x00},
+ {0x4E,0x00}, {0x88,0x61}, {0x88,0x5F}, {0x4F,0x00},
+ {0x4F,0x00}, {0x4F,0x00}, {0xA1,0xD1}, {0x4F,0x00},
+ {0x55,0x00}, {0x55,0x00}, {0x55,0x00}, {0x55,0x00},
+ {0x59,0x00}, {0x54,0x00}, {0x73,0x00}, {0x88,0x6A},
+ {0x88,0x68}, {0x61,0x00}, {0x61,0x00}, {0x61,0x00},
+ {0x61,0x00}, {0x61,0x00}, {0x63,0x00}, {0x88,0x6F},
+ {0x88,0x6D}, {0x88,0xA7}, {0x65,0x00}, {0x88,0x73},
+ {0x88,0x71}, {0x69,0x00}, {0x69,0x00}, {0x65,0x00},
+ {0x6E,0x00}, {0x88,0x77}, {0x88,0x75}, {0x6F,0x00},
+ {0x6F,0x00}, {0x6F,0x00}, {0xA1,0xD2}, {0xC8,0xFB},
+ {0x88,0x7B}, {0x88,0x79}, {0x75,0x00}, {0x88,0xA2},
+ {0x79,0x00}, {0x74,0x00}, {0x79,0x00}, {0x88,0x56},
+ {0x88,0x67}, {0x88,0x5A}, {0x88,0x6C}, {0x88,0x5C},
+ {0x88,0x6E}, {0x88,0x70}, {0xC8,0xFC}, {0x88,0x5E},
+ {0x88,0x74}, {0xC8,0xFA}, {0x88,0x78}, {0x88,0x58},
+ {0x88,0x69}, {0x88,0x72}, {0x88,0x60}, {0x88,0x76},
+ {0x88,0x7A}, {0x88,0x7C}, {0x88,0x7D}, {0x88,0x7E},
+ {0x88,0xA1}, {0xC8,0xF6}, {0x88,0x6B}, {0xC8,0xF8},
+ {0xC8,0xF7}, {0x88,0xA8}, {0xC8,0xFE}, {0xC8,0xF9},
+ {0xC8,0xF5}, {0xC8,0xFD}, {0xC6,0xD9}, {0xA3,0xBE},
+ {0xA3,0xBC}, {0xA3,0xBD}, {0xA3,0xBF}, {0xA1,0xC5},
+ {0xA3,0xBB}, {0xA1,0xC2}, {0xA3,0x44}, {0xA3,0x45},
+ {0xA3,0x46}, {0xA3,0x47}, {0xA3,0x48}, {0xA3,0x49},
+ {0xA3,0x4A}, {0xA3,0x4B}, {0xA3,0x4C}, {0xA3,0x4D},
+ {0xA3,0x4E}, {0xA3,0x4F}, {0xA3,0x50}, {0xA3,0x51},
+ {0xA3,0x52}, {0xA3,0x53}, {0xA3,0x54}, {0xA3,0x55},
+ {0xA3,0x56}, {0xA3,0x57}, {0xA3,0x58}, {0xA3,0x59},
+ {0xA3,0x5A}, {0xA3,0x5B}, {0xA3,0x5C}, {0xA3,0x5D},
+ {0xA3,0x5E}, {0xA3,0x5F}, {0xA3,0x60}, {0xA3,0x61},
+ {0xA3,0x62}, {0xA3,0x63}, {0xA3,0x64}, {0xA3,0x65},
+ {0xA3,0x66}, {0xA3,0x67}, {0xA3,0x68}, {0xA3,0x69},
+ {0xA3,0x6A}, {0xA3,0x6B}, {0xA3,0x6C}, {0xA3,0x6D},
+ {0xA3,0x6E}, {0xA3,0x6F}, {0xA3,0x70}, {0xA3,0x71},
+ {0xA3,0x72}, {0xA3,0x73}, {0xC7,0xF9}, {0xC7,0xF3},
+ {0xC7,0xF4}, {0xC7,0xF5}, {0xC7,0xF6}, {0xC7,0xF7},
+ {0xC7,0xF8}, {0xC7,0xFA}, {0xC7,0xFB}, {0xC7,0xFC},
+ {0xC7,0xFD}, {0xC7,0xFE}, {0xC8,0x40}, {0xC8,0x41},
+ {0xC8,0x42}, {0xC8,0x43}, {0xC8,0x44}, {0xC8,0x45},
+ {0xC8,0x46}, {0xC8,0x47}, {0xC8,0x48}, {0xC8,0x49},
+ {0xC8,0x4A}, {0xC8,0x4B}, {0xC8,0x4C}, {0xC8,0x4D},
+ {0xC8,0x4E}, {0xC8,0x4F}, {0xC8,0x50}, {0xC8,0x51},
+ {0xC8,0x52}, {0xC8,0x53}, {0xC8,0x54}, {0xC8,0x55},
+ {0xC8,0x56}, {0xC8,0x57}, {0xC8,0x58}, {0xC8,0x59},
+ {0xC8,0x5A}, {0xC8,0x5C}, {0xC8,0x5D}, {0xC8,0x5E},
+ {0xC8,0x5F}, {0xC8,0x60}, {0xC8,0x61}, {0xC8,0x62},
+ {0xC8,0x63}, {0xC8,0x64}, {0xC8,0x65}, {0xC8,0x66},
+ {0xC8,0x67}, {0xC8,0x68}, {0xC8,0x69}, {0xC8,0x6A},
+ {0xC8,0x6B}, {0xC8,0x6C}, {0xC8,0x6D}, {0xC8,0x6E},
+ {0xC8,0x6F}, {0xC8,0x70}, {0xC8,0x71}, {0xC8,0x72},
+ {0xC8,0x73}, {0xC8,0x74}, {0xC8,0x75}, {0xC8,0x5B},
+ {0x88,0x63}, {0x88,0xA4}, {0x88,0x65}, {0x88,0xA6},
+ {0xA1,0x56}, {0xA1,0x58}, {0xA2,0x77}, {0xA1,0xFC},
+ {0xA1,0xA5}, {0xA1,0xA6}, {0xA1,0xA7}, {0xA1,0xA8},
+ {0xA1,0x45}, {0xA3,0xBB}, {0xA1,0x4C}, {0xA1,0x4B},
+ {0xA1,0x45}, {0xA1,0xAC}, {0xA1,0xB2}, {0xA1,0xAB},
+ {0xA1,0xB0}, {0xA1,0xC3}, {0xA3,0xE1}, {0xA2,0x4A},
+ {0xA1,0xC1}, {0xA2,0x4B}, {0xC8,0xD2}, {0xC8,0xD3},
+ {0xA2,0xB9}, {0xA2,0xBA}, {0xA2,0xBB}, {0xA2,0xBC},
+ {0xA2,0xBD}, {0xA2,0xBE}, {0xA2,0xBF}, {0xA2,0xC0},
+ {0xA2,0xC1}, {0xA2,0xC2}, {0xC6,0xB5}, {0xC6,0xB6},
+ {0xC6,0xB7}, {0xC6,0xB8}, {0xC6,0xB9}, {0xC6,0xBA},
+ {0xC6,0xBB}, {0xC6,0xBC}, {0xC6,0xBD}, {0xC6,0xBE},
+ {0xA1,0xF6}, {0xA1,0xF4}, {0xA1,0xF7}, {0xA1,0xF5},
+ {0xA1,0xF8}, {0xA1,0xF9}, {0xA1,0xFB}, {0xA1,0xFA},
+ {0xC8,0x77}, {0xC8,0x78}, {0xC8,0x76}, {0xA2,0x41},
+ {0xA2,0x42}, {0xA2,0x58}, {0xA1,0xD4}, {0xA1,0xDB},
+ {0xA1,0xE8}, {0xA1,0xE7}, {0xA1,0xFD}, {0xA1,0xFC},
+ {0xA1,0xE4}, {0xA1,0xE5}, {0xA1,0xEC}, {0xA1,0xED},
+ {0xA1,0xEF}, {0xA1,0xEE}, {0xA1,0xDC}, {0xA1,0xDA},
+ {0xA1,0xDD}, {0xA1,0xDD}, {0xA1,0xD8}, {0xA1,0xD9},
+ {0xA1,0xF2}, {0xA1,0xF3}, {0xA1,0xE6}, {0xA1,0xE9},
+ {0xA1,0x5B}, {0xC6,0xA1}, {0xC6,0xA2}, {0xC6,0xA3},
+ {0xC6,0xA4}, {0xC6,0xA5}, {0xC6,0xA6}, {0xC6,0xA7},
+ {0xC6,0xA8}, {0xC6,0xA9}, {0xC6,0xAA}, {0xC6,0xAB},
+ {0xC6,0xAC}, {0xC6,0xAD}, {0xC6,0xAE}, {0xC6,0xAF},
+ {0xC6,0xB0}, {0xC6,0xB1}, {0xC6,0xB2}, {0xC6,0xB3},
+ {0xC6,0xB4}, {0xA2,0x77}, {0xA2,0x78}, {0xA2,0x7A},
+ {0xA2,0x7B}, {0xA2,0x7C}, {0xA2,0x7D}, {0xA2,0x75},
+ {0xA2,0x74}, {0xA2,0x73}, {0xA2,0x72}, {0xA2,0x71},
+ {0xF9,0xF9}, {0xF9,0xF8}, {0xF9,0xE6}, {0xF9,0xEF},
+ {0xF9,0xDD}, {0xF9,0xE8}, {0xF9,0xF1}, {0xF9,0xDF},
+ {0xF9,0xEC}, {0xF9,0xF5}, {0xF9,0xE3}, {0xF9,0xEE},
+ {0xF9,0xF7}, {0xF9,0xE5}, {0xF9,0xE9}, {0xF9,0xF2},
+ {0xF9,0xE0}, {0xF9,0xEB}, {0xF9,0xF4}, {0xF9,0xE2},
+ {0xF9,0xE7}, {0xF9,0xF0}, {0xF9,0xDE}, {0xF9,0xED},
+ {0xF9,0xF6}, {0xF9,0xE4}, {0xF9,0xEA}, {0xF9,0xF3},
+ {0xF9,0xE1}, {0xF9,0xFA}, {0xF9,0xFB}, {0xF9,0xFD},
+ {0xF9,0xFC}, {0xA2,0xAC}, {0xA2,0xAD}, {0xA2,0xAE},
+ {0xA1,0x5A}, {0xA2,0x62}, {0xA2,0x63}, {0xA2,0x64},
+ {0xA2,0x65}, {0xA2,0x66}, {0xA2,0x67}, {0xA2,0x68},
+ {0xA2,0x69}, {0xA2,0x70}, {0xA2,0x6F}, {0xA2,0x6E},
+ {0xA2,0x6D}, {0xA2,0x6C}, {0xA2,0x6B}, {0xA2,0x6A},
+ {0xF9,0xFE}, {0xA2,0x76}, {0xA2,0x79}, {0xA1,0xBD},
+ {0xA1,0xBC}, {0xA1,0xB6}, {0xA1,0xB5}, {0xA1,0xBF},
+ {0xA1,0xBE}, {0xA1,0xBB}, {0xA1,0xBA}, {0xA1,0xB3},
+ {0xA1,0xB7}, {0xA1,0xB4}, {0xA2,0xA8}, {0xA2,0xA9},
+ {0xA2,0xAB}, {0xA2,0xAA}, {0xA1,0xB9}, {0xA1,0xB8},
+ {0xA1,0xF3}, {0xA1,0xF0}, {0xA1,0xF2}, {0xA1,0xF1},
+ {0xC6,0xE6}, {0xC8,0xD6}, {0xC8,0xD7}, {0xC8,0xD8},
+ {0xC8,0xD9}, {0xC8,0xDA}, {0xC8,0xDB}, {0xC8,0xDC},
+ {0xC8,0xDD}, {0xC8,0xDE}, {0xC8,0xDF}, {0xC8,0xE0},
+ {0xC8,0xE1}, {0xC8,0xE2}, {0xC8,0xE3}, {0xC8,0xE4},
+ {0xC8,0xE5}, {0xC8,0xE6}, {0xC8,0xE7}, {0xC8,0xE8},
+ {0xC8,0xE9}, {0xC8,0xEA}, {0xC8,0xEB}, {0xC8,0xEC},
+ {0xC8,0xED}, {0xC8,0xEE}, {0xC8,0xEF}, {0xC8,0xF0},
+ {0xC8,0xF1}, {0xC6,0xCD}, {0xA1,0x40}, {0xA1,0x42},
+ {0xA1,0x43}, {0xA1,0xB2}, {0xC6,0xE0}, {0xC6,0xE1},
+ {0xC6,0xE2}, {0xA1,0x71}, {0xA1,0x72}, {0xA1,0x6D},
+ {0xA1,0x6E}, {0xA1,0x75}, {0xA1,0x76}, {0xA1,0x79},
+ {0xA1,0x7A}, {0xA1,0x69}, {0xA1,0x6A}, {0xA2,0x45},
+ {0xA1,0x65}, {0xA1,0x66}, {0xA1,0xE3}, {0xA1,0xA9},
+ {0xA1,0xAA}, {0xA2,0xC3}, {0xA2,0xC4}, {0xA2,0xC5},
+ {0xA2,0xC6}, {0xA2,0xC7}, {0xA2,0xC8}, {0xA2,0xC9},
+ {0xA2,0xCA}, {0xA2,0xCB}, {0xA1,0xCA}, {0xC6,0xE7},
+ {0xC6,0xE8}, {0xC6,0xE9}, {0xC6,0xEA}, {0xC6,0xEB},
+ {0xC6,0xEC}, {0xC6,0xED}, {0xC6,0xEE}, {0xC6,0xEF},
+ {0xC6,0xF0}, {0xC6,0xF1}, {0xC6,0xF2}, {0xC6,0xF3},
+ {0xC6,0xF4}, {0xC6,0xF5}, {0xC6,0xF6}, {0xC6,0xF7},
+ {0xC6,0xF8}, {0xC6,0xF9}, {0xC6,0xFA}, {0xC6,0xFB},
+ {0xC6,0xFC}, {0xC6,0xFD}, {0xC6,0xFE}, {0xC7,0x40},
+ {0xC7,0x41}, {0xC7,0x42}, {0xC7,0x43}, {0xC7,0x44},
+ {0xC7,0x45}, {0xC7,0x46}, {0xC7,0x47}, {0xC7,0x48},
+ {0xC7,0x49}, {0xC7,0x4A}, {0xC7,0x4B}, {0xC7,0x4C},
+ {0xC7,0x4D}, {0xC7,0x4E}, {0xC7,0x4F}, {0xC7,0x50},
+ {0xC7,0x51}, {0xC7,0x52}, {0xC7,0x53}, {0xC7,0x54},
+ {0xC7,0x55}, {0xC7,0x56}, {0xC7,0x57}, {0xC7,0x58},
+ {0xC7,0x59}, {0xC7,0x5A}, {0xC7,0x5B}, {0xC7,0x5C},
+ {0xC7,0x5D}, {0xC7,0x5E}, {0xC7,0x5F}, {0xC7,0x60},
+ {0xC7,0x61}, {0xC7,0x62}, {0xC7,0x63}, {0xC7,0x64},
+ {0xC7,0x65}, {0xC7,0x66}, {0xC7,0x67}, {0xC7,0x68},
+ {0xC7,0x69}, {0xC7,0x6A}, {0xC7,0x6B}, {0xC7,0x6C},
+ {0xC7,0x6D}, {0xC7,0x6E}, {0xC7,0x6F}, {0xC7,0x70},
+ {0xC7,0x71}, {0xC7,0x72}, {0xC7,0x73}, {0xC7,0x74},
+ {0xC7,0x75}, {0xC7,0x76}, {0xC7,0x77}, {0xC7,0x78},
+ {0xC7,0x79}, {0xC7,0x7A}, {0xC8,0xD4}, {0xC8,0xD5},
+ {0xC6,0xDC}, {0xC6,0xDD}, {0xC7,0x7B}, {0xC7,0x7C},
+ {0xC7,0x7D}, {0xC7,0x7E}, {0xC7,0xA1}, {0xC7,0xA2},
+ {0xC7,0xA3}, {0xC7,0xA4}, {0xC7,0xA5}, {0xC7,0xA6},
+ {0xC7,0xA7}, {0xC7,0xA8}, {0xC7,0xA9}, {0xC7,0xAA},
+ {0xC7,0xAB}, {0xC7,0xAC}, {0xC7,0xAD}, {0xC7,0xAE},
+ {0xC7,0xAF}, {0xC7,0xB0}, {0xC7,0xB1}, {0xC7,0xB2},
+ {0xC7,0xB3}, {0xC7,0xB4}, {0xC7,0xB5}, {0xC7,0xB6},
+ {0xC7,0xB7}, {0xC7,0xB8}, {0xC7,0xB9}, {0xC7,0xBA},
+ {0xC7,0xBB}, {0xC7,0xBC}, {0xC7,0xBD}, {0xC7,0xBE},
+ {0xC7,0xBF}, {0xC7,0xC0}, {0xC7,0xC1}, {0xC7,0xC2},
+ {0xC7,0xC3}, {0xC7,0xC4}, {0xC7,0xC5}, {0xC7,0xC6},
+ {0xC7,0xC7}, {0xC7,0xC8}, {0xC7,0xC9}, {0xC7,0xCA},
+ {0xC7,0xCB}, {0xC7,0xCC}, {0xC7,0xCD}, {0xC7,0xCE},
+ {0xC7,0xCF}, {0xC7,0xD0}, {0xC7,0xD1}, {0xC7,0xD2},
+ {0xC7,0xD3}, {0xC7,0xD4}, {0xC7,0xD5}, {0xC7,0xD6},
+ {0xC7,0xD7}, {0xC7,0xD8}, {0xC7,0xD9}, {0xC7,0xDA},
+ {0xC7,0xDB}, {0xC7,0xDC}, {0xC7,0xDD}, {0xC7,0xDE},
+ {0xC7,0xDF}, {0xC7,0xE0}, {0xC7,0xE1}, {0xC7,0xE2},
+ {0xC7,0xE3}, {0xC7,0xE4}, {0xC7,0xE5}, {0xC7,0xE6},
+ {0xC7,0xE7}, {0xC7,0xE8}, {0xC7,0xE9}, {0xC7,0xEA},
+ {0xC7,0xEB}, {0xC7,0xEC}, {0xC7,0xED}, {0xC7,0xEE},
+ {0xC7,0xEF}, {0xC7,0xF0}, {0xC7,0xF1}, {0xC7,0xF2},
+ {0xC6,0xE3}, {0xC6,0xDA}, {0xC6,0xDB}, {0xA3,0x74},
+ {0xA3,0x75}, {0xA3,0x76}, {0xA3,0x77}, {0xA3,0x78},
+ {0xA3,0x79}, {0xA3,0x7A}, {0xA3,0x7B}, {0xA3,0x7C},
+ {0xA3,0x7D}, {0xA3,0x7E}, {0xA3,0xA1}, {0xA3,0xA2},
+ {0xA3,0xA3}, {0xA3,0xA4}, {0xA3,0xA5}, {0xA3,0xA6},
+ {0xA3,0xA7}, {0xA3,0xA8}, {0xA3,0xA9}, {0xA3,0xAA},
+ {0xA3,0xAB}, {0xA3,0xAC}, {0xA3,0xAD}, {0xA3,0xAE},
+ {0xA3,0xAF}, {0xA3,0xB0}, {0xA3,0xB1}, {0xA3,0xB2},
+ {0xA3,0xB3}, {0xA3,0xB4}, {0xA3,0xB5}, {0xA3,0xB6},
+ {0xA3,0xB7}, {0xA3,0xB8}, {0xA3,0xB9}, {0xA3,0xBA},
+ {0xA4,0x40}, {0xA4,0x47}, {0xA4,0x54}, {0xA5,0x7C},
+ {0xA4,0x57}, {0xA4,0xA4}, {0xA4,0x55}, {0xA5,0xD2},
+ {0xA4,0x41}, {0xA4,0xFE}, {0xA4,0x42}, {0xA4,0xD1},
+ {0xA6,0x61}, {0xA4,0x48}, {0xA4,0x40}, {0xA4,0x47},
+ {0xA4,0x54}, {0xA5,0x7C}, {0xA4,0xAD}, {0xA4,0xBB},
+ {0xA4,0x43}, {0xA4,0x4B}, {0xA4,0x45}, {0xA4,0x51},
+ {0xA4,0xEB}, {0xA4,0xF5}, {0xA4,0xF4}, {0xA4,0xEC},
+ {0xAA,0xF7}, {0xA4,0x67}, {0xA4,0xE9}, {0xC8,0xD1},
+ {0xA6,0xB3}, {0xAA,0xC0}, {0xA6,0x57}, {0xAF,0x53},
+ {0xB0,0x5D}, {0xAF,0xAC}, {0xB3,0xD2}, {0xA5,0x4E},
+ {0xA9,0x49}, {0xBE,0xC7}, {0xBA,0xCA}, {0xA5,0xF8},
+ {0xB8,0xEA}, {0xA8,0xF3}, {0xB2,0xBD}, {0xA5,0xF0},
+ {0xA6,0xDB}, {0xA6,0xDC}, {0xA4,0x40}, {0xA4,0x47},
+ {0xA4,0x54}, {0xA5,0x7C}, {0xA4,0xAD}, {0xA4,0xBB},
+ {0xA4,0x43}, {0xA4,0x4B}, {0xA4,0x45}, {0xA4,0x51},
+ {0xA4,0xEB}, {0xA4,0xF5}, {0xA4,0xF4}, {0xA4,0xEC},
+ {0xAA,0xF7}, {0xA4,0x67}, {0xA4,0xE9}, {0xAE,0xE8},
+ {0xA6,0xB3}, {0xAA,0xC0}, {0xA6,0x57}, {0xAF,0x53},
+ {0xB0,0x5D}, {0xAF,0xAC}, {0xB3,0xD2}, {0xAF,0xB5},
+ {0xA8,0x6B}, {0xA4,0x6B}, {0xBE,0x41}, {0xC0,0x75},
+ {0xA6,0x4C}, {0xAA,0x60}, {0xB6,0xB5}, {0xA5,0xF0},
+ {0xBC,0x67}, {0xA1,0xC0}, {0xA4,0x57}, {0xA4,0xA4},
+ {0xA4,0x55}, {0xA5,0xAA}, {0xA5,0x6B}, {0xC2,0xE5},
+ {0xA9,0x76}, {0xBE,0xC7}, {0xBA,0xCA}, {0xA5,0xF8},
+ {0xB8,0xEA}, {0xA8,0xF3}, {0xA9,0x5D}, {0xA2,0x55},
+ {0xA2,0x56}, {0xA2,0x50}, {0xA2,0x51}, {0xA2,0x52},
+ {0xA2,0x54}, {0xA2,0x57}, {0xA2,0x53}, {0xA1,0xEB},
+ {0xA1,0xEA}, {0xA2,0x4F}, {0x92,0x77}, {0x96,0xDF},
+ {0x89,0xD5}, {0x93,0xCD}, {0x9B,0xDF}, {0xFA,0x68},
+ {0x89,0xDA}, {0x8F,0x59}, {0x89,0xDB}, {0x8F,0x5D},
+ {0x89,0xDC}, {0x96,0xF7}, {0x8A,0xDA}, {0x8B,0xDC},
+ {0x97,0xDB}, {0x9E,0x53}, {0x9D,0xAA}, {0x9B,0xEA},
+ {0x8A,0x6E}, {0x8B,0xC8}, {0x89,0xE8}, {0x89,0xEA},
+ {0x8C,0x4B}, {0xFB,0x70}, {0x89,0xED}, {0x94,0xDD},
+ {0x89,0xEE}, {0x9E,0xB4}, {0x8A,0xD3}, {0x92,0xDB},
+ {0x94,0xDB}, {0x89,0xF9}, {0xFB,0x7A}, {0x89,0xFB},
+ {0x9E,0xFC}, {0x89,0xFC}, {0x89,0xBF}, {0x89,0xFE},
+ {0x89,0xE6}, {0x9D,0x46}, {0x9D,0xEE}, {0xA0,0x7E},
+ {0xA0,0x68}, {0x98,0xE9}, {0x8B,0x68}, {0x8D,0xFD},
+ {0x8B,0xBE}, {0x9F,0xD9}, {0x8A,0xEB}, {0x9F,0xD7},
+ {0x8B,0x6A}, {0x9C,0x5C}, {0x8B,0xB1}, {0xFB,0x5E},
+ {0x9D,0xF3}, {0xA0,0xD0}, {0xFC,0x66}, {0x92,0xE9},
+ {0x9A,0xEC}, {0x8F,0xAB}, {0xFA,0x48}, {0x8E,0x45},
+ {0x9C,0x6F}, {0x9E,0xDE}, {0x89,0xEF}, {0x96,0xE9},
+ {0x9E,0xBB}, {0x94,0xDE}, {0x9E,0xB8}, {0x97,0xBA},
+ {0xFB,0x65}, {0x95,0xD6}, {0x9C,0xBB}, {0x97,0xDA},
+ {0x8F,0x45}, {0xFB,0x7D}, {0x91,0x58}, {0xFE,0x64},
+ {0x98,0x56}, {0x9B,0x4D}, {0x93,0x5B}, {0x95,0xC7},
+ {0x97,0xE7}, {0x93,0x59}, {0x91,0xF5}, {0x97,0xB8},
+ {0xFD,0xA2}, {0xFB,0xB6}, {0x92,0xFA}, {0x93,0x57},
+ {0x8B,0xA6}, {0xFB,0xB9}, {0x97,0xB0}, {0xFD,0xC4},
+ {0x9C,0xA1}, {0x91,0xF2}, {0x91,0xF9}, {0x8F,0xF1},
+ {0x97,0x45}, {0x98,0x53}, {0xFE,0x78}, {0xFB,0xC1},
+ {0x92,0x51}, {0x9D,0xAD}, {0xFD,0x6C}, {0xFA,0x6B},
+ {0x9B,0xC2}, {0x9A,0x7B}, {0x8B,0x60}, {0x93,0x4B},
+ {0x9A,0xBD}, {0x91,0xB7}, {0x95,0xB4}, {0xFE,0xC5},
+ {0x9E,0xF0}, {0x8D,0x64}, {0x92,0x69}, {0x8D,0x67},
+ {0xFB,0xEA}, {0xFB,0xEF}, {0x8D,0x68}, {0x93,0xEB},
+ {0xFC,0x42}, {0x91,0x66}, {0xFA,0xCD}, {0x93,0xDD},
+ {0x8B,0xCC}, {0x8D,0x6D}, {0x8D,0x6E}, {0x96,0xA8},
+ {0xFC,0xA6}, {0x8D,0x6F}, {0x8D,0x70}, {0xFC,0x64},
+ {0x90,0x60}, {0x8D,0x74}, {0x97,0xC3}, {0x8A,0xD0},
+ {0x92,0x74}, {0x9B,0xBE}, {0x9C,0xC8}, {0x9C,0xBA},
+ {0x8D,0x78}, {0x9E,0xB9}, {0x95,0x5A}, {0x91,0xB4},
+ {0x8A,0x48}, {0x8D,0x7D}, {0x8A,0x7D}, {0x8A,0xC2},
+ {0xFD,0x4A}, {0x8D,0xA1}, {0x8A,0xD1}, {0xFC,0xB4},
+ {0x8B,0x47}, {0x93,0xA4}, {0x9E,0xDA}, {0x8A,0x51},
+ {0x8D,0xA6}, {0x9E,0xC5}, {0xFC,0xC4}, {0xA0,0x78},
+ {0x94,0xB5}, {0xFC,0xC2}, {0x8A,0x6B}, {0x8D,0xAB},
+ {0xFA,0xE8}, {0x8D,0xAD}, {0xFC,0x49}, {0x93,0xC1},
+ {0x90,0x6F}, {0x8D,0xB0}, {0x94,0x7E}, {0x90,0xFA},
+ {0x94,0x79}, {0x8D,0xB2}, {0xFC,0xEE}, {0x99,0x7B},
+ {0x8D,0xB4}, {0x8D,0xB7}, {0x91,0xB3}, {0x8D,0xBB},
+ {0x8D,0xBA}, {0x8D,0xBC}, {0x90,0x44}, {0xFD,0x4C},
+ {0x93,0xE4}, {0x93,0xE0}, {0xFD,0x53}, {0x8D,0xC3},
+ {0x9B,0xB8}, {0xFB,0xF0}, {0x93,0xE9}, {0x93,0xF6},
+ {0x8D,0xC5}, {0x8D,0xCA}, {0x8D,0xCC}, {0xFD,0x5D},
+ {0x93,0xB5}, {0xFD,0x61}, {0x9C,0xF8}, {0x92,0x52},
+ {0xA0,0xE8}, {0x9C,0xA5}, {0x8C,0x56}, {0x8D,0xD6},
+ {0x97,0xC0}, {0xA0,0xDE}, {0x97,0xD2}, {0xFA,0xA5},
+ {0xFD,0xA3}, {0x8D,0xDB}, {0x8E,0xAF}, {0x91,0xB5},
+ {0xFD,0x49}, {0xFD,0xD1}, {0x8D,0xEB}, {0x97,0xC6},
+ {0xFD,0xCE}, {0x90,0xFC}, {0xFC,0x59}, {0x96,0xD6},
+ {0x97,0xC5}, {0x8D,0xEF}, {0x97,0xD7}, {0x8D,0xF0},
+ {0x96,0xA6}, {0xFB,0xBF}, {0x8D,0xF3}, {0x94,0x49},
+ {0x8D,0xF5}, {0x98,0x72}, {0x8E,0x6B}, {0xFA,0xFD},
+ {0x8F,0x50}, {0x9D,0xCC}, {0xFC,0x65}, {0x8C,0x44},
+ {0x99,0x6E}, {0x94,0xA1}, {0x8F,0x63}, {0xA0,0xDA},
+ {0x92,0x53}, {0xFD,0xE9}, {0x9D,0xB5}, {0x98,0x79},
+ {0x9D,0x5D}, {0x8D,0x63}, {0x96,0x69}, {0x9F,0x70},
+ {0xFC,0x6A}, {0x8A,0xC7}, {0x89,0xD7}, {0xFE,0x4D},
+ {0x9E,0xDD}, {0xFE,0xFB}, {0x98,0xBC}, {0xFA,0xCC},
+ {0x95,0xB0}, {0x94,0x64}, {0x93,0x6F}, {0x94,0xB9},
+ {0x95,0xEC}, {0x91,0xEE}, {0x98,0xC3}, {0x95,0xF6},
+ {0x8F,0xFD}, {0x98,0xC5}, {0x97,0x66}, {0xFE,0x6E},
+ {0x97,0xDD}, {0x8C,0xAA}, {0x92,0xD2}, {0x97,0x61},
+ {0x98,0xCB}, {0x95,0xF0}, {0x97,0x5D}, {0x91,0xE3},
+ {0x98,0xCC}, {0x94,0x69}, {0x98,0xCD}, {0x98,0xCE},
+ {0x95,0xFC}, {0x94,0xA3}, {0x96,0x62}, {0xFE,0xB6},
+ {0x94,0x63}, {0x98,0xD0}, {0x98,0xD1}, {0x94,0x75},
+ {0xFA,0xE0}, {0x94,0x72}, {0x98,0xD6}, {0x8A,0xF0},
+ {0x98,0xD9}, {0x98,0xDB}, {0x98,0xDD}, {0x98,0xA8},
+ {0x8A,0x6D}, {0x8A,0xFB}, {0x8A,0xAE}, {0xFB,0xC9},
+ {0x8C,0x5D}, {0x98,0xE4}, {0x98,0xE6}, {0x98,0xE8},
+ {0x8A,0x4D}, {0x92,0x57}, {0x95,0xDF}, {0xA0,0xAC},
+ {0x98,0xEB}, {0x98,0xEC}, {0x8C,0xC3}, {0x98,0xF4},
+ {0x8A,0xB8}, {0x9E,0xE7}, {0x94,0xBC}, {0xFC,0xD1},
+ {0x9C,0xC6}, {0x9E,0x7E}, {0x98,0xFE}, {0xFD,0xE8},
+ {0x99,0x40}, {0x94,0xC9}, {0x94,0xD3}, {0x99,0x46},
+ {0x90,0xC0}, {0x94,0xD1}, {0x95,0x73}, {0x93,0xC2},
+ {0x99,0x48}, {0x99,0x4B}, {0x8E,0x55}, {0x99,0x4E},
+ {0x8E,0xFE}, {0x8E,0x59}, {0x94,0xEC}, {0x94,0xEF},
+ {0x8C,0x60}, {0x8F,0x74}, {0x99,0x55}, {0x95,0x44},
+ {0x8C,0xCB}, {0x99,0x56}, {0x99,0x59}, {0x99,0x5B},
+ {0x8C,0xC4}, {0xFA,0x45}, {0x90,0xB7}, {0x97,0x43},
+ {0x95,0xCD}, {0x97,0xC9}, {0xFD,0x50}, {0x8E,0xB9},
+ {0x95,0xC6}, {0x99,0x67}, {0x8A,0xB9}, {0x8D,0xFC},
+ {0x8A,0x76}, {0x9D,0x51}, {0x99,0x73}, {0x9D,0x4F},
+ {0x99,0x7A}, {0x95,0x64}, {0x99,0xA1}, {0x99,0xA5},
+ {0x99,0xA7}, {0x8E,0xED}, {0x99,0xAD}, {0x94,0x6E},
+ {0x8F,0x70}, {0xFA,0xD0}, {0x99,0xB3}, {0xA0,0x53},
+ {0x96,0x5C}, {0xFD,0x7A}, {0x97,0xFE}, {0x92,0xBD},
+ {0x97,0xFD}, {0x8F,0x64}, {0xFC,0xF7}, {0x95,0x62},
+ {0x97,0xCD}, {0x9E,0x64}, {0x92,0x4C}, {0x8E,0xC9},
+ {0x99,0xBC}, {0x9D,0xA5}, {0x8F,0x54}, {0x8F,0x7C},
+ {0x8E,0xA2}, {0x8F,0x7A}, {0x97,0xAE}, {0x96,0xC8},
+ {0x99,0xC3}, {0x90,0xD6}, {0x9C,0xBE}, {0x8F,0x76},
+ {0x94,0x70}, {0xFB,0x4B}, {0xFD,0xCA}, {0x8E,0xC7},
+ {0xA0,0xF9}, {0x8F,0xA9}, {0x99,0xC7}, {0x90,0xD7},
+ {0x9E,0xDF}, {0x99,0xCE}, {0x8F,0xBA}, {0x8F,0xEB},
+ {0x99,0xCF}, {0x8F,0xC2}, {0x92,0xC9}, {0x97,0xDC},
+ {0x95,0xB3}, {0x9C,0x79}, {0x95,0xB2}, {0x8F,0xDB},
+ {0x9B,0xE3}, {0x9E,0x7A}, {0x9B,0xEE}, {0x99,0xDE},
+ {0xFA,0xFA}, {0x9E,0xE5}, {0x8A,0x52}, {0x99,0xE1},
+ {0x8A,0x67}, {0x8B,0xB5}, {0x8A,0xAC}, {0x99,0xE9},
+ {0xFB,0xCA}, {0x97,0xDE}, {0x95,0xD1}, {0x99,0xF5},
+ {0xFC,0x4A}, {0x9B,0xA9}, {0xFB,0xDC}, {0xFE,0x56},
+ {0x9E,0xA4}, {0x9D,0x49}, {0x95,0xDB}, {0x89,0xC5},
+ {0x99,0xF8}, {0x96,0x64}, {0x90,0x55}, {0x96,0xD4},
+ {0x97,0x7C}, {0x96,0x4D}, {0x97,0xE1}, {0x9A,0x48},
+ {0x9A,0x49}, {0xFE,0x7D}, {0x90,0xAA}, {0x9A,0x50},
+ {0x93,0x47}, {0x8E,0xD8}, {0x90,0xC9}, {0x9A,0x55},
+ {0x90,0xBC}, {0x9A,0x58}, {0x8B,0xB8}, {0x90,0xD5},
+ {0x96,0x41}, {0x9A,0x5A}, {0x9A,0x5C}, {0x97,0xC2},
+ {0x8A,0xBB}, {0x9B,0xAA}, {0x90,0xF5}, {0x9A,0x60},
+ {0x91,0x45}, {0x8C,0x58}, {0x9A,0x63}, {0x8C,0x49},
+ {0x8B,0xB6}, {0xFC,0xCF}, {0x96,0x6B}, {0x9A,0x6E},
+ {0x91,0x4F}, {0x97,0x46}, {0xA0,0xE6}, {0x92,0xD7},
+ {0x96,0x75}, {0x93,0xD4}, {0x91,0xBB}, {0x96,0x79},
+ {0x9A,0x70}, {0x96,0x78}, {0x91,0xCD}, {0x9C,0x4A},
+ {0xA0,0x6F}, {0xA0,0x6A}, {0x91,0x5F}, {0x9F,0xA5},
+ {0x89,0xBA}, {0x9E,0xCD}, {0x9A,0x79}, {0x9D,0xCE},
+ {0x8C,0xD2}, {0x9D,0x73}, {0x96,0xB9}, {0x96,0xBC},
+ {0x9C,0xD1}, {0x89,0xB7}, {0x9E,0xEE}, {0xFB,0x43},
+ {0x9E,0xC9}, {0xFB,0xD3}, {0x91,0xAE}, {0x9D,0x78},
+ {0x9D,0x7B}, {0xA4,0x40}, {0xA4,0x42}, {0xA4,0x43},
+ {0x9E,0xB3}, {0xC9,0x45}, {0xA4,0x56}, {0xA4,0x54},
+ {0xA4,0x57}, {0xA4,0x55}, {0xC9,0x46}, {0xA4,0xA3},
+ {0xC9,0x4F}, {0xC9,0x4D}, {0xA4,0xA2}, {0xA4,0xA1},
+ {0xA5,0x42}, {0xA5,0x41}, {0xA5,0x40}, {0xA5,0x43},
+ {0xA4,0xFE}, {0x9E,0xB2}, {0x9D,0xD6}, {0xA5,0xE0},
+ {0xA5,0xE1}, {0x99,0x4F}, {0x89,0xCE}, {0xA8,0xC3},
+ {0x8B,0xC0}, {0x9F,0xC4}, {0xA4,0x58}, {0x8B,0xD4},
+ {0xA4,0xA4}, {0xC9,0x50}, {0x8C,0x72}, {0xA4,0xA5},
+ {0xC9,0x63}, {0xA6,0xEA}, {0xCB,0xB1}, {0xC6,0xBF},
+ {0x8B,0xF9}, {0xA4,0x59}, {0xA4,0xA6}, {0xA5,0x44},
+ {0xC9,0x64}, {0x89,0x46}, {0xC6,0xC0}, {0xC9,0x40},
+ {0xA4,0x44}, {0xA4,0x5B}, {0xC9,0x47}, {0xA4,0x5C},
+ {0xFA,0xE5}, {0xA4,0xA7}, {0xA5,0x45}, {0xA5,0x47},
+ {0xA5,0x46}, {0xA5,0xE2}, {0xA5,0xE3}, {0xA8,0xC4},
+ {0xAD,0xBC}, {0xA4,0x41}, {0xC8,0x7B}, {0x8B,0xC6},
+ {0xC9,0x41}, {0xA4,0x45}, {0xA4,0x5E}, {0xA4,0x5D},
+ {0xA5,0xE4}, {0x9C,0x57}, {0xA8,0xC5}, {0x9A,0xFB},
+ {0xB0,0xAE}, {0xD4,0x4B}, {0x89,0xD0}, {0x89,0xCF},
+ {0xB6,0xC3}, {0xDC,0xB1}, {0xDC,0xB2}, {0xC6,0xC1},
+ {0xA4,0x46}, {0x89,0xD1}, {0xA4,0xA9}, {0x89,0xE2},
+ {0xA8,0xC6}, {0xA4,0x47}, {0xC9,0x48}, {0xA4,0x5F},
+ {0xA4,0xAA}, {0xA4,0xAC}, {0xC9,0x51}, {0xA4,0xAD},
+ {0xA4,0xAB}, {0x92,0x7E}, {0xA5,0xE5}, {0x9D,0xBA},
+ {0xA8,0xC7}, {0xA8,0xC8}, {0xAB,0x45}, {0xC6,0xC2},
+ {0xA4,0x60}, {0xA4,0xAE}, {0x8C,0x6F}, {0xA5,0xE6},
+ {0xA5,0xE8}, {0xA5,0xE7}, {0xA6,0xEB}, {0xA8,0xC9},
+ {0xA8,0xCA}, {0xAB,0x46}, {0xAB,0x47}, {0xAD,0xBD},
+ {0xDC,0xB3}, {0xFB,0xF8}, {0xF6,0xD6}, {0xA4,0x48},
+ {0x8B,0xC7}, {0x92,0x6B}, {0x89,0xD2}, {0xA4,0xB0},
+ {0xA4,0xAF}, {0xC9,0x52}, {0xA4,0xB1}, {0xA4,0xB7},
+ {0xA4,0xB2}, {0xA4,0xB3}, {0xC9,0x54}, {0xC9,0x53},
+ {0xA4,0xB5}, {0xA4,0xB6}, {0xA4,0xB4}, {0x9F,0xCF},
+ {0xA5,0x4A}, {0xA5,0x4B}, {0xA5,0x4C}, {0xA5,0x4D},
+ {0xA5,0x49}, {0xA5,0x50}, {0xC9,0x6A}, {0xC9,0x66},
+ {0xC9,0x69}, {0xA5,0x51}, {0xA5,0x61}, {0xC9,0x68},
+ {0xA5,0x4E}, {0xA5,0x4F}, {0xA5,0x48}, {0xC9,0x65},
+ {0xC9,0x67}, {0x9D,0xA9}, {0x89,0xD3}, {0x99,0xE2},
+ {0xA5,0xF5}, {0xC9,0xB0}, {0xA5,0xF2}, {0xA5,0xF6},
+ {0xC9,0xBA}, {0xC9,0xAE}, {0xA5,0xF3}, {0xC9,0xB2},
+ {0x92,0x67}, {0xA5,0xF4}, {0xA5,0xF7}, {0xA5,0xE9},
+ {0xC9,0xB1}, {0xA5,0xF8}, {0xC9,0xB5}, {0x92,0xA4},
+ {0xC9,0xB9}, {0xC9,0xB6}, {0xC9,0xB3}, {0xA5,0xEA},
+ {0xA5,0xEC}, {0xA5,0xF9}, {0xA5,0xEE}, {0xC9,0xAB},
+ {0xA5,0xF1}, {0xA5,0xEF}, {0xA5,0xF0}, {0xC9,0xBB},
+ {0xC9,0xB8}, {0xC9,0xAF}, {0xA5,0xED}, {0x8C,0x73},
+ {0xC9,0xAC}, {0xA5,0xEB}, {0x89,0x4E}, {0xC9,0xB4},
+ {0xC9,0xB7}, {0x89,0x4F}, {0x92,0x78}, {0xC9,0xAD},
+ {0xCA,0x66}, {0xA7,0x42}, {0xA6,0xF4}, {0x91,0xB6},
+ {0xCA,0x67}, {0xA6,0xF1}, {0xA7,0x44}, {0x89,0xD4},
+ {0xA6,0xF9}, {0x9F,0xD2}, {0xA6,0xF8}, {0xCA,0x5B},
+ {0xA6,0xFC}, {0xA6,0xF7}, {0xCA,0x60}, {0xCA,0x68},
+ {0xCA,0x64}, {0x92,0xA7}, {0xA6,0xFA}, {0x95,0xA2},
+ {0xA6,0xFD}, {0xA6,0xEE}, {0xA7,0x47}, {0xCA,0x5D},
+ {0x92,0x6E}, {0xCB,0xBD}, {0xA6,0xEC}, {0xA7,0x43},
+ {0xA6,0xED}, {0xA6,0xF5}, {0xA6,0xF6}, {0xCA,0x62},
+ {0xCA,0x5E}, {0xA6,0xFB}, {0xA6,0xF3}, {0xCA,0x5A},
+ {0xA6,0xEF}, {0xCA,0x65}, {0xA7,0x45}, {0xA7,0x48},
+ {0xA6,0xF2}, {0xA7,0x40}, {0xA7,0x46}, {0xA6,0xF0},
+ {0xCA,0x63}, {0xA7,0x41}, {0xCA,0x69}, {0xCA,0x5C},
+ {0xA6,0xFE}, {0xCA,0x5F}, {0xCA,0x61}, {0xA8,0xD8},
+ {0xCB,0xBF}, {0xCB,0xCB}, {0xA8,0xD0}, {0xCB,0xCC},
+ {0xA8,0xCB}, {0xA8,0xD5}, {0x96,0xEA}, {0xA8,0xCE},
+ {0xCB,0xB9}, {0xA8,0xD6}, {0xCB,0xB8}, {0xCB,0xBC},
+ {0xCB,0xC3}, {0xCB,0xC1}, {0xA8,0xDE}, {0xA8,0xD9},
+ {0xCB,0xB3}, {0xCB,0xB5}, {0xA8,0xDB}, {0xA8,0xCF},
+ {0xCB,0xB6}, {0xCB,0xC2}, {0xCB,0xC9}, {0xA8,0xD4},
+ {0xCB,0xBB}, {0xCB,0xB4}, {0xA8,0xD3}, {0xCB,0xB7},
+ {0xA8,0xD7}, {0xCB,0xBA}, {0x92,0x6F}, {0xA8,0xD2},
+ {0xA8,0xCD}, {0xA8,0xDC}, {0xCB,0xC4}, {0xA8,0xDD},
+ {0xCB,0xC8}, {0xCB,0xC6}, {0xCB,0xCA}, {0xA8,0xDA},
+ {0xCB,0xBE}, {0xCB,0xB2}, {0xCB,0xC0}, {0xA8,0xD1},
+ {0xCB,0xC5}, {0xA8,0xCC}, {0xCB,0xC7}, {0x92,0xA3},
+ {0x89,0x50}, {0xFA,0x57}, {0xAB,0x56}, {0xAB,0x4A},
+ {0x98,0x66}, {0xCD,0xE0}, {0xCD,0xE8}, {0xAB,0x49},
+ {0xAB,0x51}, {0xAB,0x5D}, {0xCD,0xEE}, {0xCD,0xEC},
+ {0xCD,0xE7}, {0x89,0xD6}, {0xAB,0x4B}, {0xCD,0xED},
+ {0xCD,0xE3}, {0xAB,0x59}, {0xAB,0x50}, {0xAB,0x58},
+ {0xCD,0xDE}, {0xCD,0xEA}, {0x98,0xB2}, {0xCD,0xE1},
+ {0xAB,0x54}, {0xCD,0xE2}, {0x92,0xAB}, {0xCD,0xDD},
+ {0xAB,0x5B}, {0xAB,0x4E}, {0xAB,0x57}, {0xAB,0x4D},
+ {0xCD,0xDF}, {0xCD,0xE4}, {0xCD,0xEB}, {0xAB,0x55},
+ {0xAB,0x52}, {0xCD,0xE6}, {0xAB,0x5A}, {0xCD,0xE9},
+ {0xCD,0xE5}, {0xAB,0x4F}, {0xAB,0x5C}, {0xAB,0x53},
+ {0xAB,0x4C}, {0xAB,0x48}, {0x96,0xDE}, {0x92,0xAC},
+ {0xCD,0xEF}, {0xAD,0xD7}, {0xAD,0xC1}, {0x8C,0x70},
+ {0xAD,0xD1}, {0x9F,0x6E}, {0xAD,0xD6}, {0xD0,0xD0},
+ {0xD0,0xCF}, {0xD0,0xD4}, {0xD0,0xD5}, {0xAD,0xC4},
+ {0x8E,0xF2}, {0xAD,0xCD}, {0x9F,0x6C}, {0xAD,0xDA},
+ {0xAD,0xCE}, {0x89,0xD8}, {0xD0,0xC9}, {0xAD,0xC7},
+ {0xD0,0xCA}, {0xFA,0x59}, {0xAD,0xDC}, {0xAD,0xD3},
+ {0xAD,0xBE}, {0xAD,0xBF}, {0xD0,0xDD}, {0xB0,0xBF},
+ {0xAD,0xCC}, {0xAD,0xCB}, {0xD0,0xCB}, {0xAD,0xCF},
+ {0xD4,0x5B}, {0xAD,0xC6}, {0xD0,0xD6}, {0xAD,0xD5},
+ {0xAD,0xD4}, {0xAD,0xCA}, {0xD0,0xCE}, {0xD0,0xD7},
+ {0xD0,0xC8}, {0xAD,0xC9}, {0xD0,0xD8}, {0xAD,0xD2},
+ {0xD0,0xCC}, {0xAD,0xC0}, {0xAD,0xC3}, {0xAD,0xC2},
+ {0xD0,0xD9}, {0xAD,0xD0}, {0xAD,0xC5}, {0xAD,0xD9},
+ {0xAD,0xDB}, {0xD0,0xD3}, {0xAD,0xD8}, {0x92,0xA8},
+ {0xD0,0xDB}, {0xD0,0xCD}, {0xD0,0xDC}, {0xD0,0xD1},
+ {0x91,0x63}, {0xD0,0xDA}, {0xD0,0xD2}, {0x8C,0x40},
+ {0xAD,0xC8}, {0xD4,0x63}, {0xD4,0x57}, {0xB0,0xB3},
+ {0xD4,0x5C}, {0xD4,0x62}, {0xB0,0xB2}, {0xD4,0x55},
+ {0xB0,0xB6}, {0xD4,0x59}, {0xD4,0x52}, {0xB0,0xB4},
+ {0xD4,0x56}, {0xB0,0xB9}, {0xB0,0xBE}, {0xD4,0x67},
+ {0xD4,0x51}, {0xB0,0xBA}, {0x9F,0x73}, {0xD4,0x66},
+ {0x92,0xAD}, {0xB0,0xB5}, {0xD4,0x58}, {0xB0,0xB1},
+ {0xD4,0x53}, {0xD4,0x4F}, {0xD4,0x5D}, {0xD4,0x50},
+ {0xD4,0x4E}, {0xD4,0x5A}, {0xD4,0x60}, {0xD4,0x61},
+ {0xB0,0xB7}, {0x9B,0xE9}, {0xD8,0x5B}, {0xD4,0x5E},
+ {0xD4,0x4D}, {0xD4,0x5F}, {0x92,0xA9}, {0xB0,0xC1},
+ {0xD4,0x64}, {0xB0,0xC0}, {0xD4,0x4C}, {0xD4,0x54},
+ {0xD4,0x65}, {0xB0,0xBC}, {0xB0,0xBB}, {0xB0,0xB8},
+ {0xB0,0xBD}, {0xB0,0xAF}, {0xB0,0xB0}, {0xB3,0xC8},
+ {0x92,0xAA}, {0xD8,0x5E}, {0xD8,0x57}, {0xB3,0xC5},
+ {0xD8,0x5F}, {0x89,0xD9}, {0xD8,0x55}, {0xD8,0x58},
+ {0xB3,0xC4}, {0xD8,0x59}, {0xFD,0x56}, {0xB3,0xC7},
+ {0xD8,0x5D}, {0xD8,0x53}, {0xD8,0x52}, {0xB3,0xC9},
+ {0xB3,0xCA}, {0xB3,0xC6}, {0xB3,0xCB}, {0xD8,0x51},
+ {0xD8,0x5C}, {0xD8,0x5A}, {0xD8,0x54}, {0xB3,0xC3},
+ {0xD8,0x56}, {0x9F,0xA8}, {0xB6,0xCA}, {0xB6,0xC4},
+ {0xDC,0xB7}, {0xB6,0xCD}, {0xDC,0xBD}, {0xDC,0xC0},
+ {0xB6,0xC6}, {0xB6,0xC7}, {0xDC,0xBA}, {0xB6,0xC5},
+ {0xDC,0xC3}, {0xB6,0xCB}, {0xDC,0xC4}, {0xDC,0xBF},
+ {0xB6,0xCC}, {0x8C,0x71}, {0xDC,0xB4}, {0xB6,0xC9},
+ {0xDC,0xB5}, {0xDC,0xBE}, {0xDC,0xBC}, {0xDC,0xB8},
+ {0xB6,0xC8}, {0xDC,0xB6}, {0xB6,0xCE}, {0xDC,0xBB},
+ {0xDC,0xC2}, {0xDC,0xB9}, {0xDC,0xC1}, {0x92,0xA1},
+ {0xB9,0xB6}, {0xB9,0xB3}, {0x90,0xE3}, {0xB9,0xB4},
+ {0xE0,0xF9}, {0xE0,0xF1}, {0xB9,0xB2}, {0xB9,0xAF},
+ {0xE0,0xF2}, {0xA0,0xA6}, {0xB9,0xB1}, {0xE0,0xF5},
+ {0xE0,0xF7}, {0x94,0xAB}, {0xE0,0xFE}, {0xFC,0x72},
+ {0xE0,0xFD}, {0xE0,0xF8}, {0xB9,0xAE}, {0xE0,0xF0},
+ {0xB9,0xAC}, {0xE0,0xF3}, {0xB9,0xB7}, {0xE0,0xF6},
+ {0xE0,0xFA}, {0xB9,0xB0}, {0xB9,0xAD}, {0xE0,0xFC},
+ {0xE0,0xFB}, {0xB9,0xB5}, {0xE0,0xF4}, {0x97,0xC4},
+ {0xBB,0xF8}, {0xE4,0xEC}, {0xE4,0xE9}, {0xBB,0xF9},
+ {0xBB,0xF7}, {0x92,0xAE}, {0xE4,0xF0}, {0xE4,0xED},
+ {0xE4,0xE6}, {0xBB,0xF6}, {0xFA,0x67}, {0xBB,0xFA},
+ {0xE4,0xE7}, {0xBB,0xF5}, {0xBB,0xFD}, {0xE4,0xEA},
+ {0xE4,0xEB}, {0xBB,0xFB}, {0xBB,0xFC}, {0xE4,0xF1},
+ {0xE4,0xEE}, {0xE4,0xEF}, {0x92,0xA2}, {0xFA,0x69},
+ {0xBE,0xAA}, {0xE8,0xF8}, {0xBE,0xA7}, {0xE8,0xF5},
+ {0xBE,0xA9}, {0xBE,0xAB}, {0xE8,0xF6}, {0xBE,0xA8},
+ {0xE8,0xF7}, {0xE8,0xF4}, {0xC0,0x76}, {0xEC,0xBD},
+ {0xC0,0x77}, {0xEC,0xBB}, {0xEC,0xBC}, {0xEC,0xBA},
+ {0xEC,0xB9}, {0xEC,0xBE}, {0xC0,0x75}, {0x92,0x68},
+ {0xEF,0xB8}, {0xEF,0xB9}, {0xE4,0xE8}, {0xEF,0xB7},
+ {0xC0,0x78}, {0xC3,0x5F}, {0xF1,0xEB}, {0xF1,0xEC},
+ {0xC4,0xD7}, {0xC4,0xD8}, {0xF5,0xC1}, {0xF5,0xC0},
+ {0xC5,0x6C}, {0xC5,0x6B}, {0xF7,0xD0}, {0xA4,0x49},
+ {0xA4,0x61}, {0xA4,0xB9}, {0xA4,0xB8}, {0xA5,0x53},
+ {0xA5,0x52}, {0xA5,0xFC}, {0xA5,0xFB}, {0xA5,0xFD},
+ {0xA5,0xFA}, {0xA7,0x4A}, {0xA7,0x49}, {0xA7,0x4B},
+ {0xA8,0xE0}, {0xA8,0xDF}, {0xA8,0xE1}, {0x89,0x51},
+ {0xAB,0x5E}, {0xA2,0x59}, {0xD0,0xDE}, {0xA2,0x5A},
+ {0xB0,0xC2}, {0xA2,0x5C}, {0xA2,0x5B}, {0xD8,0x60},
+ {0xFA,0x6F}, {0xA2,0x5D}, {0xB9,0xB8}, {0xA2,0x5E},
+ {0xA4,0x4A}, {0xA4,0xBA}, {0xA5,0xFE}, {0xA8,0xE2},
+ {0xFA,0x71}, {0xA4,0x4B}, {0xA4,0xBD}, {0xA4,0xBB},
+ {0xA4,0xBC}, {0xA6,0x40}, {0x89,0x52}, {0xA7,0x4C},
+ {0xA8,0xE4}, {0xA8,0xE3}, {0xA8,0xE5}, {0x94,0x5A},
+ {0xAD,0xDD}, {0xBE,0xAC}, {0xC6,0xC3}, {0x89,0xDD},
+ {0xC9,0x4E}, {0xC8,0xA2}, {0xA5,0x54}, {0xA5,0x55},
+ {0xA6,0x41}, {0xCA,0x6A}, {0xAB,0x60}, {0xAB,0x5F},
+ {0xD0,0xE0}, {0xD0,0xDF}, {0xB0,0xC3}, {0xC6,0xC4},
+ {0xA4,0xBE}, {0xC9,0x55}, {0x9E,0x52}, {0x89,0x53},
+ {0xCB,0xCD}, {0xAB,0x61}, {0xAD,0xE0}, {0xAD,0xDE},
+ {0xAD,0xDF}, {0x9E,0x55}, {0x92,0xBA}, {0xBE,0xAD},
+ {0xC6,0xC5}, {0xA5,0x56}, {0x8C,0x5B}, {0xA6,0x42},
+ {0xC9,0xBC}, {0xFA,0x7D}, {0xFA,0xA8}, {0x9A,0x68},
+ {0xFA,0x47}, {0xA7,0x4D}, {0xA7,0x4E}, {0xFA,0x7E},
+ {0xCA,0x6B}, {0xCB,0xCE}, {0xA8,0xE6}, {0xCB,0xCF},
+ {0x92,0xBB}, {0xD0,0xE2}, {0xD0,0xE3}, {0xAD,0xE3},
+ {0xFD,0xB6}, {0xD0,0xE4}, {0xFA,0xA2}, {0xD0,0xE1},
+ {0xAD,0xE4}, {0xAD,0xE2}, {0xAD,0xE1}, {0xD0,0xE5},
+ {0xFA,0xA3}, {0xD4,0x68}, {0xFA,0xA4}, {0x9B,0xB4},
+ {0xFA,0xA6}, {0xD8,0x61}, {0xDC,0xC5}, {0xE1,0x40},
+ {0x89,0xDF}, {0xBB,0xFE}, {0xBE,0xAE}, {0xE8,0xF9},
+ {0xFD,0xDB}, {0xA4,0x4C}, {0xA4,0x5A}, {0xFA,0xA9},
+ {0x89,0x54}, {0xFA,0xAB}, {0xB0,0xC4}, {0xB3,0xCD},
+ {0xB9,0xB9}, {0xFC,0x7A}, {0xC9,0x42}, {0xA4,0xBF},
+ {0xA5,0x59}, {0xA5,0x57}, {0xA5,0x58}, {0x89,0xE0},
+ {0xA8,0xE7}, {0x9F,0x4F}, {0xA4,0x4D}, {0xA4,0x4E},
+ {0xC8,0x7D}, {0xA4,0x62}, {0x89,0xE1}, {0xA4,0xC0},
+ {0xA4,0xC1}, {0xA4,0xC2}, {0xC9,0xBE}, {0xA5,0x5A},
+ {0xFA,0xB0}, {0xC9,0x6B}, {0xA6,0x46}, {0xC9,0xBF},
+ {0xA6,0x44}, {0xA6,0x45}, {0xC9,0xBD}, {0xA6,0x47},
+ {0xA6,0x43}, {0xCA,0x6C}, {0xAA,0xEC}, {0xCA,0x6D},
+ {0x9F,0xCD}, {0xA0,0xE7}, {0xCA,0x6E}, {0xA7,0x50},
+ {0xA7,0x4F}, {0xFA,0xB1}, {0x89,0xA6}, {0xA7,0x53},
+ {0xA7,0x51}, {0xA7,0x52}, {0xA8,0xED}, {0xA8,0xEC},
+ {0xCB,0xD4}, {0xCB,0xD1}, {0xCB,0xD2}, {0x9E,0xFA},
+ {0xCB,0xD0}, {0xA8,0xEE}, {0xA8,0xEA}, {0xA8,0xE9},
+ {0xA8,0xEB}, {0xA8,0xE8}, {0xFA,0xB2}, {0xA8,0xEF},
+ {0xAB,0x63}, {0xCD,0xF0}, {0xCB,0xD3}, {0xAB,0x68},
+ {0xCD,0xF1}, {0xAB,0x64}, {0xAB,0x67}, {0xAB,0x66},
+ {0xAB,0x65}, {0xAB,0x62}, {0xD0,0xE8}, {0xAD,0xE7},
+ {0xD0,0xEB}, {0xAD,0xE5}, {0xFA,0xB4}, {0x92,0xC4},
+ {0xD0,0xE7}, {0xAD,0xE8}, {0xAD,0xE6}, {0xAD,0xE9},
+ {0xD0,0xE9}, {0xD0,0xEA}, {0x9F,0x6F}, {0xD0,0xE6},
+ {0xD0,0xEC}, {0x8B,0xB0}, {0xB3,0xD1}, {0xB0,0xC5},
+ {0xD4,0x69}, {0xD4,0x6B}, {0xD4,0x6A}, {0xD4,0x6C},
+ {0xB0,0xC6}, {0xB3,0xCE}, {0x9F,0xAC}, {0xB3,0xCF},
+ {0xB3,0xD0}, {0xB6,0xD0}, {0xDC,0xC7}, {0x89,0xE3},
+ {0xDC,0xC6}, {0xDC,0xC8}, {0xDC,0xC9}, {0xB6,0xD1},
+ {0xB6,0xCF}, {0xE1,0x41}, {0xE1,0x42}, {0xB9,0xBB},
+ {0xB9,0xBA}, {0xE3,0x5A}, {0xBC,0x40}, {0xBC,0x41},
+ {0xBC,0x42}, {0xBC,0x44}, {0xE4,0xF2}, {0xE4,0xF3},
+ {0xBC,0x43}, {0x9B,0xD3}, {0x89,0xE4}, {0xBE,0xAF},
+ {0xBE,0xB0}, {0xFA,0xB5}, {0xF1,0xED}, {0xF5,0xC3},
+ {0xF5,0xC2}, {0xF7,0xD1}, {0x9F,0xD5}, {0xA4,0x4F},
+ {0xA5,0x5C}, {0xA5,0x5B}, {0x89,0x55}, {0xA6,0x48},
+ {0x92,0xC5}, {0xC9,0xC0}, {0x89,0x56}, {0xA7,0x55},
+ {0xA7,0x56}, {0xA7,0x54}, {0xA7,0x57}, {0xCA,0x6F},
+ {0xCA,0x70}, {0xFA,0xB3}, {0xFA,0xB6}, {0xA8,0xF1},
+ {0xCB,0xD5}, {0xA8,0xF0}, {0xCD,0xF2}, {0xAB,0x6C},
+ {0xCD,0xF3}, {0xAB,0x6B}, {0xFA,0xB7}, {0xAB,0x69},
+ {0xAB,0x6A}, {0x9E,0xDC}, {0xD0,0xED}, {0xFB,0xC4},
+ {0x9F,0x71}, {0xB0,0xC7}, {0xD4,0x6E}, {0xB0,0xCA},
+ {0xD4,0x6D}, {0xB1,0xE5}, {0xB0,0xC9}, {0xB0,0xC8},
+ {0xB3,0xD4}, {0xB3,0xD3}, {0xB3,0xD2}, {0xB6,0xD2},
+ {0xFA,0xBA}, {0x92,0xC7}, {0xB6,0xD5}, {0xB6,0xD6},
+ {0xB6,0xD4}, {0xB6,0xD3}, {0xE1,0x43}, {0xE1,0x44},
+ {0xE4,0xF5}, {0xBC,0x45}, {0xE4,0xF4}, {0xBE,0xB1},
+ {0xEC,0xBF}, {0xC0,0x79}, {0xF1,0xEE}, {0xC4,0x55},
+ {0xC6,0xC6}, {0xA4,0x63}, {0xA4,0xC3}, {0xC9,0x56},
+ {0xA4,0xC4}, {0xA4,0xC5}, {0x9A,0x4C}, {0xA5,0x5D},
+ {0xA5,0x5E}, {0xA6,0x49}, {0xCA,0x71}, {0xCB,0xD6},
+ {0xCB,0xD7}, {0xAB,0x6D}, {0xD0,0xEE}, {0xB0,0xCC},
+ {0xB0,0xCB}, {0xD8,0x63}, {0xD8,0x62}, {0xA4,0x50},
+ {0xA4,0xC6}, {0xA5,0x5F}, {0xB0,0xCD}, {0xC9,0x43},
+ {0xC9,0x6C}, {0xA5,0x60}, {0xC9,0xC2}, {0xA6,0x4B},
+ {0xA6,0x4A}, {0xC9,0xC1}, {0xA7,0x58}, {0x8C,0x68},
+ {0x89,0xE5}, {0xAD,0xEA}, {0x9F,0x7D}, {0xD4,0x6F},
+ {0xB6,0xD7}, {0xE1,0x45}, {0xB9,0xBC}, {0xA0,0xA9},
+ {0xFA,0xC4}, {0xE8,0xFA}, {0xF3,0xFD}, {0xC6,0xC7},
+ {0xA4,0xC7}, {0x89,0x57}, {0xCB,0xD8}, {0xCD,0xF4},
+ {0xB0,0xD0}, {0xB0,0xCE}, {0xB0,0xCF}, {0xA4,0x51},
+ {0xFA,0xAA}, {0xA4,0x64}, {0xA2,0xCD}, {0xA4,0xCA},
+ {0xA4,0xC9}, {0xA4,0xC8}, {0xA5,0x63}, {0xA5,0x62},
+ {0xC9,0x6D}, {0xC9,0xC3}, {0x89,0x58}, {0xA8,0xF5},
+ {0xA8,0xF2}, {0xA8,0xF4}, {0xA8,0xF3}, {0xAB,0x6E},
+ {0xB3,0xD5}, {0xA4,0x52}, {0x8B,0xE3}, {0xA4,0xCB},
+ {0x8B,0x61}, {0xA5,0x65}, {0xA5,0x64}, {0xCA,0x72},
+ {0x9A,0xF1}, {0xA8,0xF6}, {0x9E,0xB7}, {0xC6,0xC8},
+ {0xC9,0x57}, {0xFA,0xD1}, {0xA5,0x67}, {0xA5,0x66},
+ {0xA6,0x4C}, {0xA6,0x4D}, {0xCA,0x73}, {0xA7,0x59},
+ {0xFA,0xD2}, {0xA7,0x5A}, {0xA8,0xF7}, {0xA8,0xF8},
+ {0xA8,0xF9}, {0xAB,0x6F}, {0xCD,0xF5}, {0x9E,0xBA},
+ {0xFA,0xD4}, {0xAD,0xEB}, {0xC9,0x44}, {0xA4,0xCC},
+ {0xC9,0xC4}, {0xCA,0x74}, {0xCA,0x75}, {0xCB,0xD9},
+ {0xFA,0xD9}, {0xCB,0xDA}, {0xCD,0xF7}, {0xCD,0xF6},
+ {0xCD,0xF9}, {0xCD,0xF8}, {0xAB,0x70}, {0xD4,0x70},
+ {0xAD,0xED}, {0xD0,0xEF}, {0xAD,0xEC}, {0xFA,0xDB},
+ {0x9C,0xE0}, {0xD8,0x64}, {0xB3,0xD6}, {0xFB,0xF7},
+ {0xD8,0x65}, {0xFB,0xFA}, {0x89,0xE7}, {0xA0,0x7A},
+ {0xFA,0xDC}, {0xE1,0x46}, {0xB9,0xBD}, {0xFA,0xDD},
+ {0x89,0xE9}, {0xBC,0x46}, {0xF1,0xEF}, {0xC6,0xC9},
+ {0xC9,0x58}, {0xA5,0x68}, {0xFA,0xE2}, {0x89,0xEB},
+ {0xB0,0xD1}, {0xFA,0xE3}, {0xA4,0x53}, {0xA4,0x65},
+ {0xA4,0xCE}, {0xA4,0xCD}, {0x90,0xC8}, {0xA4,0xCF},
+ {0x92,0xDA}, {0x89,0x59}, {0x9C,0xF5}, {0xA8,0xFB},
+ {0xA8,0xFA}, {0xA8,0xFC}, {0x89,0x5A}, {0xFA,0xE7},
+ {0x9F,0xA2}, {0xAB,0x71}, {0xAD,0xEE}, {0xFA,0xEA},
+ {0xE8,0xFB}, {0xC2,0x4F}, {0xA4,0x66}, {0xA5,0x6A},
+ {0xA5,0x79}, {0xA5,0x74}, {0xA5,0x6F}, {0xA5,0x6E},
+ {0xA5,0x75}, {0xA5,0x73}, {0xA5,0x6C}, {0xA5,0x7A},
+ {0xA5,0x6D}, {0xA5,0x69}, {0xA5,0x78}, {0xA5,0x77},
+ {0xA5,0x76}, {0xA5,0x6B}, {0xA5,0x72}, {0xFA,0xED},
+ {0x8F,0xAD}, {0xA5,0x71}, {0xA5,0x7B}, {0xA5,0x70},
+ {0xFB,0x59}, {0xA6,0x53}, {0xA6,0x59}, {0xA6,0x55},
+ {0xA6,0x5B}, {0xC9,0xC5}, {0xA6,0x58}, {0xA6,0x4E},
+ {0xA6,0x51}, {0xA6,0x54}, {0xA6,0x50}, {0xA6,0x57},
+ {0xA6,0x5A}, {0xA6,0x4F}, {0xA6,0x52}, {0xA6,0x56},
+ {0xA6,0x5C}, {0xFA,0xEF}, {0x96,0xEF}, {0x9D,0xEC},
+ {0xCA,0x7E}, {0xCA,0x7B}, {0x9D,0xCA}, {0xA7,0x67},
+ {0xCA,0x7C}, {0xA7,0x5B}, {0xA7,0x5D}, {0xA7,0x75},
+ {0xA7,0x70}, {0xFD,0x6D}, {0x89,0xEC}, {0xCA,0xA5},
+ {0xCA,0x7D}, {0xA7,0x5F}, {0xA7,0x61}, {0xCA,0xA4},
+ {0xA7,0x68}, {0xCA,0x78}, {0xA7,0x74}, {0xA7,0x76},
+ {0xA7,0x5C}, {0xA7,0x6D}, {0xFB,0x44}, {0xCA,0x76},
+ {0xA7,0x73}, {0x9D,0xE2}, {0xA7,0x64}, {0x8C,0x75},
+ {0xA7,0x6E}, {0xA7,0x6F}, {0xCA,0x77}, {0xA7,0x6C},
+ {0xA7,0x6A}, {0xA7,0x6B}, {0xA7,0x71}, {0xCA,0xA1},
+ {0xA7,0x5E}, {0xA7,0x72}, {0xCA,0xA3}, {0xA7,0x66},
+ {0xA7,0x63}, {0xCA,0x7A}, {0xA7,0x62}, {0xCA,0xA6},
+ {0xA7,0x65}, {0xA7,0x69}, {0x9E,0xC0}, {0x9E,0x56},
+ {0xA7,0x60}, {0xCA,0xA2}, {0xCA,0x79}, {0xCB,0xEB},
+ {0xCB,0xEA}, {0xA9,0x4F}, {0xCB,0xED}, {0xCB,0xEF},
+ {0xCB,0xE4}, {0xCB,0xE7}, {0xCB,0xEE}, {0xA9,0x50},
+ {0x9F,0x79}, {0x9A,0xC7}, {0xCB,0xE1}, {0xCB,0xE5},
+ {0xFA,0xF4}, {0xCB,0xE9}, {0xCE,0x49}, {0xA9,0x4B},
+ {0xCE,0x4D}, {0xA8,0xFD}, {0xCB,0xE6}, {0xA8,0xFE},
+ {0xA9,0x4C}, {0xA9,0x45}, {0xA9,0x41}, {0xCB,0xE2},
+ {0xA9,0x44}, {0xA9,0x49}, {0xA9,0x52}, {0xCB,0xE3},
+ {0xCB,0xDC}, {0xA9,0x43}, {0xCB,0xDD}, {0xCB,0xDF},
+ {0xA9,0x46}, {0x98,0xA1}, {0xA9,0x48}, {0xCB,0xDB},
+ {0xCB,0xE0}, {0xA9,0x51}, {0xA9,0x4D}, {0xCB,0xE8},
+ {0xA9,0x53}, {0xFA,0xF8}, {0xA9,0x4A}, {0xCB,0xDE},
+ {0xA9,0x47}, {0x89,0xF0}, {0x9E,0x47}, {0xA9,0x42},
+ {0xA9,0x40}, {0x9D,0xF7}, {0xCB,0xEC}, {0xA9,0x4E},
+ {0x9F,0xD3}, {0x9A,0xCA}, {0xCE,0x48}, {0xCD,0xFB},
+ {0xCE,0x4B}, {0x89,0xF1}, {0xFA,0xF9}, {0xCD,0xFD},
+ {0xAB,0x78}, {0xAB,0xA8}, {0xAB,0x74}, {0xAB,0xA7},
+ {0xAB,0x7D}, {0xAB,0xA4}, {0xAB,0x72}, {0xCD,0xFC},
+ {0xCE,0x43}, {0xAB,0xA3}, {0xCE,0x4F}, {0xAB,0xA5},
+ {0x8E,0x5A}, {0xAB,0x79}, {0x89,0xF2}, {0xCE,0x45},
+ {0xCE,0x42}, {0xAB,0x77}, {0x89,0xF3}, {0xCD,0xFA},
+ {0xAB,0xA6}, {0xCE,0x4A}, {0xAB,0x7C}, {0xCE,0x4C},
+ {0xAB,0xA9}, {0xAB,0x73}, {0xAB,0x7E}, {0xAB,0x7B},
+ {0xCE,0x40}, {0xAB,0xA1}, {0xCE,0x46}, {0xCE,0x47},
+ {0xAB,0x7A}, {0xAB,0xA2}, {0xAB,0x76}, {0x92,0x5D},
+ {0x8B,0x51}, {0x92,0xE0}, {0xAB,0x75}, {0xCD,0xFE},
+ {0x89,0xF4}, {0xCE,0x44}, {0x9F,0xD4}, {0xCE,0x4E},
+ {0xD1,0x44}, {0xAD,0xFB}, {0xD0,0xF1}, {0x8A,0x79},
+ {0xD0,0xF6}, {0xAD,0xF4}, {0xAE,0x40}, {0xD0,0xF4},
+ {0xAD,0xEF}, {0xAD,0xF9}, {0xAD,0xFE}, {0xD0,0xFB},
+ {0xAD,0xFA}, {0xAD,0xFD}, {0x89,0xF5}, {0xD0,0xFE},
+ {0xAD,0xF5}, {0xD0,0xF5}, {0xD1,0x42}, {0xD1,0x43},
+ {0xAD,0xF7}, {0xD1,0x41}, {0xAD,0xF3}, {0xAE,0x43},
+ {0xD0,0xF8}, {0xAD,0xF1}, {0x97,0xA7}, {0xD1,0x46},
+ {0xD0,0xF9}, {0xD0,0xFD}, {0xAD,0xF6}, {0xAE,0x42},
+ {0xD0,0xFA}, {0xAD,0xFC}, {0xD1,0x40}, {0xD1,0x47},
+ {0xD4,0xA1}, {0x93,0xBA}, {0xD1,0x45}, {0xAE,0x44},
+ {0xAD,0xF0}, {0xD0,0xFC}, {0xD0,0xF3}, {0x9E,0x58},
+ {0xAD,0xF8}, {0xD0,0xF2}, {0x89,0xF6}, {0xD0,0xF7},
+ {0x9E,0x57}, {0x89,0xF7}, {0x8A,0x41}, {0xD0,0xF0},
+ {0xAE,0x41}, {0x89,0xF8}, {0xD4,0x77}, {0xFA,0xF1},
+ {0xB0,0xE4}, {0xD4,0xA7}, {0xB0,0xE2}, {0xB0,0xDF},
+ {0xD4,0x7C}, {0xB0,0xDB}, {0xD4,0xA2}, {0xB0,0xE6},
+ {0xD4,0x76}, {0xD4,0x7B}, {0xD4,0x7A}, {0xAD,0xF2},
+ {0xB0,0xE1}, {0xD4,0xA5}, {0xD4,0xA8}, {0xD4,0x73},
+ {0xB3,0xE8}, {0x89,0xFA}, {0xD4,0xA9}, {0xB0,0xE7},
+ {0xB0,0xD9}, {0xB0,0xD6}, {0xD4,0x7E}, {0xB0,0xD3},
+ {0xFB,0x42}, {0xD4,0xA6}, {0xFA,0xBF}, {0xB0,0xDA},
+ {0xD4,0xAA}, {0xD4,0x74}, {0xD4,0xA4}, {0xB0,0xDD},
+ {0xD4,0x75}, {0xD4,0x78}, {0xD4,0x7D}, {0xFB,0xA3},
+ {0xB0,0xDE}, {0xB0,0xDC}, {0xB0,0xE8}, {0xB0,0xE3},
+ {0xFA,0xF7}, {0xB0,0xD7}, {0xB1,0xD2}, {0xB0,0xD8},
+ {0xD4,0x79}, {0xB0,0xE5}, {0xB0,0xE0}, {0xD4,0xA3},
+ {0xB0,0xD5}, {0x9E,0x4E}, {0xB0,0xD4}, {0x94,0xDC},
+ {0x95,0xDA}, {0x9D,0xF8}, {0x9F,0x6A}, {0xD4,0x71},
+ {0xD4,0x72}, {0xD8,0x6A}, {0x8A,0xB7}, {0xB3,0xD7},
+ {0xB3,0xDA}, {0xD8,0x75}, {0xB3,0xEE}, {0xD8,0x78},
+ {0xB3,0xD8}, {0xD8,0x71}, {0xB3,0xDE}, {0xB3,0xE4},
+ {0xB5,0xBD}, {0xFB,0x46}, {0xB3,0xE2}, {0xD8,0x6E},
+ {0xB3,0xEF}, {0xB3,0xDB}, {0xB3,0xE3}, {0xD8,0x76},
+ {0xDC,0xD7}, {0xD8,0x7B}, {0xD8,0x6F}, {0x8A,0x46},
+ {0xD8,0x66}, {0xD8,0x73}, {0xD8,0x6D}, {0xB3,0xE1},
+ {0xD8,0x79}, {0xB3,0xDD}, {0xB3,0xF1}, {0xB3,0xEA},
+ {0xB3,0xDF}, {0xB3,0xDC}, {0xB3,0xE7}, {0xD8,0x7A},
+ {0xD8,0x6C}, {0xD8,0x72}, {0xD8,0x74}, {0xD8,0x68},
+ {0xD8,0x77}, {0xB3,0xD9}, {0xD8,0x67}, {0xFB,0x47},
+ {0xB3,0xE0}, {0xB3,0xF0}, {0xB3,0xEC}, {0xD8,0x69},
+ {0xB3,0xE6}, {0x91,0x48}, {0xB3,0xED}, {0xB3,0xE9},
+ {0xB3,0xE5}, {0x92,0xDE}, {0xD8,0x70}, {0x8B,0x53},
+ {0x9D,0xF6}, {0xB3,0xEB}, {0x9B,0xDA}, {0xDC,0xD5},
+ {0xDC,0xD1}, {0x9D,0x7E}, {0xDC,0xE0}, {0xDC,0xCA},
+ {0xDC,0xD3}, {0xB6,0xE5}, {0xB6,0xE6}, {0xB6,0xDE},
+ {0xDC,0xDC}, {0xB6,0xE8}, {0xDC,0xCF}, {0xDC,0xCE},
+ {0xDC,0xCC}, {0xDC,0xDE}, {0xB6,0xDC}, {0xDC,0xD8},
+ {0xDC,0xCD}, {0xB6,0xDF}, {0xDC,0xD6}, {0xB6,0xDA},
+ {0xDC,0xD2}, {0xDC,0xD9}, {0xDC,0xDB}, {0x89,0xFD},
+ {0x99,0xE4}, {0xDC,0xDF}, {0xB6,0xE3}, {0xDC,0xCB},
+ {0xB6,0xDD}, {0xDC,0xD0}, {0x9E,0x43}, {0xB6,0xD8},
+ {0xB6,0xE4}, {0xDC,0xDA}, {0xB6,0xE0}, {0xB6,0xE1},
+ {0xB6,0xE7}, {0xB6,0xDB}, {0xA2,0x5F}, {0xB6,0xD9},
+ {0xDC,0xD4}, {0x9D,0xE9}, {0x8F,0x52}, {0xB6,0xE2},
+ {0x9D,0xF5}, {0x9D,0xF0}, {0xDC,0xDD}, {0x99,0xE7},
+ {0xB9,0xCD}, {0xB9,0xC8}, {0xE1,0x55}, {0xE1,0x51},
+ {0x8B,0xBD}, {0xE1,0x4B}, {0xB9,0xC2}, {0xB9,0xBE},
+ {0xE1,0x54}, {0xB9,0xBF}, {0xE1,0x4E}, {0xE1,0x50},
+ {0xE1,0x53}, {0x9D,0xEF}, {0xB9,0xC4}, {0xB9,0xCB},
+ {0xB9,0xC5}, {0xE1,0x49}, {0xB9,0xC6}, {0xB9,0xC7},
+ {0xE1,0x4C}, {0xB9,0xCC}, {0x9F,0xB7}, {0xE1,0x4A},
+ {0xE1,0x4F}, {0xB9,0xC3}, {0xE1,0x48}, {0xB9,0xC9},
+ {0xB9,0xC1}, {0xB9,0xC0}, {0xE1,0x4D}, {0xE1,0x52},
+ {0x9D,0xD0}, {0xB9,0xCA}, {0x9F,0xEB}, {0x8D,0xA9},
+ {0x9D,0xCF}, {0x98,0xE1}, {0x9D,0xE5}, {0xE1,0x47},
+ {0xBC,0x4D}, {0xE5,0x47}, {0xE5,0x44}, {0x9D,0xC8},
+ {0xBC,0x47}, {0xBC,0x53}, {0xBC,0x54}, {0xBC,0x4A},
+ {0xE5,0x42}, {0xBC,0x4C}, {0xE4,0xF9}, {0xBC,0x52},
+ {0xFB,0x4F}, {0xE5,0x46}, {0xBC,0x49}, {0xE5,0x48},
+ {0xBC,0x48}, {0xE5,0x43}, {0xE5,0x45}, {0xBC,0x4B},
+ {0xE5,0x41}, {0xE4,0xFA}, {0xE4,0xF7}, {0x9D,0xEB},
+ {0xD8,0x6B}, {0xE4,0xFD}, {0xE4,0xF6}, {0xE4,0xFC},
+ {0xE4,0xFB}, {0xE4,0xF8}, {0xFB,0x54}, {0xBC,0x4F},
+ {0xFB,0x55}, {0x9A,0xA2}, {0x8A,0xD6}, {0xBC,0x4E},
+ {0x9A,0x5F}, {0xBC,0x50}, {0xE4,0xFE}, {0xBE,0xB2},
+ {0xE5,0x40}, {0x9E,0xF5}, {0xE9,0x45}, {0xE8,0xFD},
+ {0x8F,0xB7}, {0xBE,0xBE}, {0xE9,0x42}, {0xBE,0xB6},
+ {0xBE,0xBA}, {0xE9,0x41}, {0xBE,0xB9}, {0xBE,0xB5},
+ {0xBE,0xB8}, {0xBE,0xB3}, {0xBE,0xBD}, {0xE9,0x43},
+ {0xE8,0xFE}, {0xBE,0xBC}, {0xE8,0xFC}, {0xBE,0xBB},
+ {0xE9,0x44}, {0xE9,0x40}, {0xBC,0x51}, {0xBE,0xBF},
+ {0xE9,0x46}, {0xBE,0xB7}, {0xBE,0xB4}, {0x9A,0xD2},
+ {0x9E,0x6A}, {0x9E,0xE8}, {0xEC,0xC6}, {0xEC,0xC8},
+ {0xC0,0x7B}, {0xEC,0xC9}, {0xEC,0xC7}, {0xEC,0xC5},
+ {0xEC,0xC4}, {0xC0,0x7D}, {0xEC,0xC3}, {0xC0,0x7E},
+ {0x8B,0xBF}, {0x91,0xC2}, {0x9D,0x62}, {0xEC,0xC1},
+ {0xEC,0xC2}, {0xC0,0x7A}, {0xC0,0xA1}, {0xC0,0x7C},
+ {0x92,0x60}, {0xEC,0xC0}, {0xC2,0x50}, {0xEF,0xBC},
+ {0xEF,0xBA}, {0xEF,0xBF}, {0xEF,0xBD}, {0xEF,0xBB},
+ {0xEF,0xBE}, {0x92,0x5E}, {0x91,0xC1}, {0x8A,0xC5},
+ {0x97,0xA3}, {0xC3,0x60}, {0xF1,0xF2}, {0xF1,0xF3},
+ {0xC4,0x56}, {0xF1,0xF4}, {0xF1,0xF0}, {0xF1,0xF5},
+ {0xF1,0xF1}, {0xC2,0x51}, {0x8B,0x6C}, {0x8D,0x7E},
+ {0xF3,0xFE}, {0xF4,0x41}, {0xC4,0x59}, {0xF4,0x40},
+ {0xC4,0x58}, {0xC4,0x57}, {0x9C,0x54}, {0xC4,0x5A},
+ {0xF5,0xC5}, {0xF5,0xC6}, {0x9D,0xBD}, {0xC4,0xDA},
+ {0xC4,0xD9}, {0xC4,0xDB}, {0xF5,0xC4}, {0xF6,0xD8},
+ {0xF6,0xD7}, {0xC5,0x6D}, {0xC5,0x6F}, {0xC5,0x6E},
+ {0xF6,0xD9}, {0xC5,0xC8}, {0xF8,0xA6}, {0xC5,0xF1},
+ {0xF8,0xA5}, {0xF8,0xEE}, {0x9C,0xC5}, {0xC9,0x49},
+ {0xA5,0x7D}, {0xA5,0x7C}, {0xA6,0x5F}, {0xA6,0x5E},
+ {0xC9,0xC7}, {0xA6,0x5D}, {0xC9,0xC6}, {0x89,0x5B},
+ {0xA7,0x79}, {0xCA,0xA9}, {0xCA,0xA8}, {0xA7,0x77},
+ {0xA7,0x7A}, {0xFB,0x5C}, {0xCA,0xA7}, {0xFB,0x5B},
+ {0xA7,0x78}, {0xFB,0x57}, {0xCB,0xF0}, {0xCB,0xF1},
+ {0xA9,0x54}, {0x98,0xC7}, {0xAB,0xAA}, {0xFB,0x5A},
+ {0xD1,0x48}, {0xD1,0x49}, {0xAE,0x45}, {0xAE,0x46},
+ {0xD4,0xAC}, {0xB0,0xE9}, {0xB0,0xEB}, {0xD4,0xAB},
+ {0xB0,0xEA}, {0xD8,0x7C}, {0xB3,0xF2}, {0xB6,0xE9},
+ {0xB6,0xEA}, {0xDC,0xE1}, {0x9C,0xEE}, {0xB9,0xCF},
+ {0xB9,0xCE}, {0xE5,0x49}, {0xE9,0x48}, {0xE9,0x47},
+ {0x92,0xE2}, {0xF9,0x6B}, {0xA4,0x67}, {0xC9,0x59},
+ {0xC9,0x6E}, {0xC9,0x6F}, {0xA6,0x62}, {0xA6,0x66},
+ {0xC9,0xC9}, {0xA6,0x64}, {0xA6,0x63}, {0xC9,0xC8},
+ {0xA6,0x65}, {0xA6,0x61}, {0x94,0xA7}, {0xA6,0x60},
+ {0xC9,0xCA}, {0xA7,0xA6}, {0x8C,0xCC}, {0xA7,0xA3},
+ {0x9B,0xD4}, {0xA7,0x7D}, {0xCA,0xAA}, {0xFB,0x64},
+ {0xFB,0x76}, {0xCA,0xAB}, {0xFB,0x60}, {0xA7,0xA1},
+ {0xCA,0xAD}, {0xA7,0x7B}, {0xCA,0xAE}, {0xCA,0xAC},
+ {0xA7,0x7E}, {0xA7,0xA2}, {0xA7,0xA5}, {0xA7,0xA4},
+ {0xA7,0x7C}, {0xCA,0xAF}, {0x99,0xE5}, {0x9A,0xC2},
+ {0x91,0xFB}, {0xA0,0x73}, {0xA9,0x59}, {0xCB,0xFE},
+ {0xA9,0x5B}, {0xA9,0x5A}, {0x9F,0x72}, {0xCC,0x40},
+ {0xA9,0x58}, {0xA9,0x57}, {0xCB,0xF5}, {0xCB,0xF4},
+ {0xCB,0xF2}, {0xCB,0xF7}, {0xCB,0xF6}, {0xCB,0xF3},
+ {0xCB,0xFC}, {0xCB,0xFD}, {0xCB,0xFA}, {0xCB,0xF8},
+ {0xA9,0x56}, {0x9F,0xCC}, {0xCB,0xFB}, {0xA9,0x5C},
+ {0xCC,0x41}, {0x98,0xA5}, {0x92,0xE8}, {0xCB,0xF9},
+ {0xAB,0xAB}, {0xA9,0x55}, {0x9B,0xBC}, {0x96,0xF3},
+ {0xAB,0xAC}, {0xCE,0x54}, {0x92,0xE7}, {0xCE,0x5A},
+ {0xFC,0x67}, {0xAB,0xB2}, {0xCE,0x58}, {0xCE,0x5E},
+ {0xCE,0x55}, {0xCE,0x59}, {0xCE,0x5B}, {0xCE,0x5D},
+ {0xCE,0x57}, {0x8B,0x7D}, {0xCE,0x56}, {0xCE,0x51},
+ {0xCE,0x52}, {0xAB,0xAD}, {0x9B,0xF4}, {0xAB,0xAF},
+ {0xAB,0xAE}, {0xCE,0x53}, {0xCE,0x5C}, {0x9E,0xF7},
+ {0x9E,0xC1}, {0xAB,0xB1}, {0x99,0x6F}, {0xCE,0x50},
+ {0xD1,0x53}, {0xD1,0x52}, {0xD1,0x57}, {0xD1,0x4E},
+ {0x96,0xF1}, {0xD1,0x51}, {0xD1,0x50}, {0x8E,0x41},
+ {0xD1,0x54}, {0xD1,0x58}, {0xAE,0x47}, {0xAE,0x4A},
+ {0x95,0x4A}, {0xD1,0x4F}, {0xD1,0x55}, {0x97,0xE6},
+ {0xAE,0x49}, {0xD1,0x4A}, {0xAB,0xB0}, {0xD4,0xBA},
+ {0xD1,0x56}, {0xD1,0x4D}, {0xAE,0x48}, {0xD1,0x4C},
+ {0x96,0xF5}, {0xD4,0xB1}, {0x92,0xE6}, {0x9F,0x42},
+ {0xB0,0xEC}, {0xB0,0xF0}, {0xD4,0xC1}, {0xD4,0xAF},
+ {0xD4,0xBD}, {0xB0,0xF1}, {0xD4,0xBF}, {0xFB,0x67},
+ {0xD4,0xC5}, {0xD4,0xC9}, {0xD4,0xC0}, {0xD4,0xB4},
+ {0xD4,0xBC}, {0x99,0xA9}, {0xD4,0xCA}, {0xD4,0xC8},
+ {0xD4,0xBE}, {0xD4,0xB9}, {0xD4,0xB2}, {0xD8,0xA6},
+ {0xD4,0xB0}, {0xB0,0xF5}, {0xD4,0xB7}, {0xB0,0xF6},
+ {0xB0,0xF2}, {0xD4,0xAD}, {0xD4,0xC3}, {0xD4,0xB5},
+ {0xFA,0xE6}, {0xD4,0xB3}, {0xD4,0xC6}, {0xB0,0xF3},
+ {0xFB,0x69}, {0xD4,0xCC}, {0xB0,0xED}, {0xB0,0xEF},
+ {0xD4,0xBB}, {0xD4,0xB6}, {0xAE,0x4B}, {0xB0,0xEE},
+ {0xD4,0xB8}, {0xD4,0xC7}, {0xD4,0xCB}, {0xD4,0xC2},
+ {0xD4,0xC4}, {0x97,0xE5}, {0xD4,0xAE}, {0xD8,0xA1},
+ {0xD8,0xAA}, {0xD8,0xA9}, {0xB3,0xFA}, {0xD8,0xA2},
+ {0xB3,0xFB}, {0xB3,0xF9}, {0x96,0x7D}, {0xD8,0xA4},
+ {0xB3,0xF6}, {0xD8,0xA8}, {0xFB,0x6C}, {0xD8,0xA3},
+ {0xD8,0xA5}, {0xD8,0x7D}, {0xB3,0xF4}, {0xD8,0xB2},
+ {0xD8,0xB1}, {0xD8,0xAE}, {0xB3,0xF3}, {0xB3,0xF7},
+ {0xB3,0xF8}, {0xD1,0x4B}, {0xD8,0xAB}, {0xB3,0xF5},
+ {0xB0,0xF4}, {0xD8,0xAD}, {0xD8,0x7E}, {0xD8,0xB0},
+ {0xD8,0xAF}, {0x99,0xA2}, {0xD8,0xB3}, {0xDC,0xEF},
+ {0xD8,0xAC}, {0x9A,0xBB}, {0x9A,0x65}, {0x94,0x4E},
+ {0xD8,0xA7}, {0xDC,0xE7}, {0xB6,0xF4}, {0xB6,0xF7},
+ {0xB6,0xF2}, {0xDC,0xE6}, {0xDC,0xEA}, {0xDC,0xE5},
+ {0xB6,0xEC}, {0xB6,0xF6}, {0xDC,0xE2}, {0xB6,0xF0},
+ {0xDC,0xE9}, {0xB6,0xEE}, {0xB6,0xED}, {0xDC,0xEC},
+ {0xB6,0xEF}, {0xDC,0xEE}, {0xFB,0x6E}, {0xDC,0xEB},
+ {0xB6,0xEB}, {0x99,0xDF}, {0xB6,0xF5}, {0xDC,0xF0},
+ {0xDC,0xE4}, {0xDC,0xED}, {0xDC,0xE3}, {0x98,0xE3},
+ {0xB6,0xF1}, {0x92,0x54}, {0xB6,0xF3}, {0xDC,0xE8},
+ {0xDC,0xF1}, {0x96,0x7B}, {0x8A,0xAF}, {0xE1,0x5D},
+ {0xB9,0xD0}, {0xE1,0x63}, {0xB9,0xD5}, {0xE1,0x5F},
+ {0xE1,0x66}, {0xE1,0x57}, {0xB9,0xD7}, {0xB9,0xD1},
+ {0xE1,0x5C}, {0xBC,0x55}, {0xE1,0x5B}, {0xE1,0x64},
+ {0xB9,0xD2}, {0xB9,0xD6}, {0xE1,0x5A}, {0xE1,0x60},
+ {0xE1,0x65}, {0xE1,0x56}, {0xB9,0xD4}, {0xE1,0x5E},
+ {0xE1,0x62}, {0xE1,0x68}, {0xE1,0x58}, {0xE1,0x61},
+ {0x8C,0x77}, {0xB9,0xD3}, {0xE1,0x67}, {0xE1,0x59},
+ {0x8B,0xAF}, {0x9E,0xBD}, {0xBC,0x59}, {0xE5,0x4B},
+ {0xBC,0x57}, {0xBC,0x56}, {0xE5,0x4D}, {0xE5,0x52},
+ {0xE5,0x4E}, {0xE5,0x51}, {0xBC,0x5C}, {0x9E,0xE6},
+ {0xBE,0xA5}, {0xBC,0x5B}, {0xFB,0x6F}, {0xE5,0x4A},
+ {0xE5,0x50}, {0xBC,0x5A}, {0xE5,0x4F}, {0x8E,0xE1},
+ {0xE5,0x4C}, {0xBC,0x58}, {0x9B,0x7D}, {0x9C,0x7E},
+ {0xE9,0x4D}, {0xF9,0xD9}, {0xE9,0x4F}, {0xE9,0x4A},
+ {0xBE,0xC1}, {0xE9,0x4C}, {0xBE,0xC0}, {0xE9,0x4E},
+ {0xBE,0xC3}, {0xE9,0x50}, {0xBE,0xC2}, {0xE9,0x49},
+ {0xE9,0x4B}, {0x92,0xEA}, {0xC0,0xA5}, {0xEC,0xCC},
+ {0x8C,0x78}, {0xC0,0xA4}, {0xEC,0xCD}, {0xC0,0xA3},
+ {0xEC,0xCB}, {0xC0,0xA2}, {0xEC,0xCA}, {0xC2,0x53},
+ {0xC2,0x52}, {0xF1,0xF6}, {0xF1,0xF8}, {0xFB,0x72},
+ {0xF1,0xF7}, {0xC3,0x61}, {0xC3,0x62}, {0xFB,0x71},
+ {0xC3,0x63}, {0xF4,0x42}, {0xC4,0x5B}, {0xF7,0xD3},
+ {0xF7,0xD2}, {0xC5,0xF2}, {0xA4,0x68}, {0xA4,0xD0},
+ {0xA7,0xA7}, {0x89,0x5C}, {0x98,0xF0}, {0x96,0xF2},
+ {0xCE,0x5F}, {0xB3,0xFC}, {0xB3,0xFD}, {0xFB,0x74},
+ {0xDC,0xF2}, {0xB9,0xD8}, {0xE1,0x69}, {0xE5,0x53},
+ {0x8B,0xC1}, {0xC9,0x5A}, {0x89,0x5D}, {0x89,0xDE},
+ {0xCA,0xB0}, {0x89,0x5E}, {0xC6,0xCA}, {0xCC,0x42},
+ {0xCE,0x60}, {0xD1,0x59}, {0xAE,0x4C}, {0xFE,0x42},
+ {0xF1,0xF9}, {0xC4,0xDC}, {0xA4,0x69}, {0xA5,0x7E},
+ {0xC9,0x70}, {0xA6,0x67}, {0xA6,0x68}, {0xA9,0x5D},
+ {0xFB,0x7B}, {0xB0,0xF7}, {0xB9,0xDA}, {0xB9,0xDB},
+ {0xB9,0xD9}, {0xA4,0x6A}, {0xA4,0xD1}, {0xA4,0xD3},
+ {0xA4,0xD2}, {0xC9,0x5B}, {0xA4,0xD4}, {0xA5,0xA1},
+ {0xC9,0x71}, {0xA5,0xA2}, {0x89,0x5F}, {0x89,0x60},
+ {0xA6,0x69}, {0xA6,0x6A}, {0xC9,0xCB}, {0xA7,0xA8},
+ {0xCA,0xB1}, {0xA9,0x61}, {0xCC,0x43}, {0xA9,0x5F},
+ {0xA9,0x60}, {0xA9,0x5E}, {0xD1,0x5A}, {0xAB,0xB6},
+ {0xAB,0xB5}, {0xAB,0xB7}, {0xAB,0xB4}, {0xCE,0x61},
+ {0xA9,0x62}, {0xAB,0xB3}, {0xAE,0x4D}, {0xAE,0x4E},
+ {0xAE,0x4F}, {0xD4,0xCD}, {0xB3,0xFE}, {0xD8,0xB4},
+ {0xB0,0xF8}, {0x9B,0xCD}, {0xB6,0xF8}, {0xB9,0xDD},
+ {0xB9,0xDC}, {0xE1,0x6A}, {0xBC,0x5D}, {0xBE,0xC4},
+ {0xEF,0xC0}, {0xF6,0xDA}, {0xF7,0xD4}, {0xA4,0x6B},
+ {0xA5,0xA3}, {0x9D,0xD3}, {0xA5,0xA4}, {0xC9,0xD1},
+ {0xA6,0x6C}, {0xA6,0x6F}, {0xC9,0xCF}, {0xC9,0xCD},
+ {0xA6,0x6E}, {0xC9,0xD0}, {0xC9,0xD2}, {0xC9,0xCC},
+ {0xA6,0x71}, {0xA6,0x70}, {0xA6,0x6D}, {0xA6,0x6B},
+ {0xC9,0xCE}, {0x98,0x4C}, {0xA7,0xB3}, {0xA7,0xB0},
+ {0xCA,0xB6}, {0xCA,0xB9}, {0xCA,0xB8}, {0xA7,0xAA},
+ {0xA7,0xB2}, {0x97,0x52}, {0xA7,0xAF}, {0xCA,0xB5},
+ {0xCA,0xB3}, {0xA7,0xAE}, {0x95,0xC3}, {0xA7,0xA9},
+ {0xA7,0xAC}, {0x9B,0xB6}, {0xCA,0xB4}, {0xCA,0xBB},
+ {0xCA,0xB7}, {0xA7,0xAD}, {0xA7,0xB1}, {0xA7,0xB4},
+ {0xCA,0xB2}, {0xCA,0xBA}, {0xA7,0xAB}, {0x9A,0xB9},
+ {0xA9,0x67}, {0xA9,0x6F}, {0x97,0xB3}, {0xCC,0x4F},
+ {0xCC,0x48}, {0xA9,0x70}, {0xCC,0x53}, {0xCC,0x44},
+ {0xCC,0x4B}, {0x9F,0x74}, {0x92,0xF1}, {0xA9,0x66},
+ {0xCC,0x45}, {0xA9,0x64}, {0xCC,0x4C}, {0xCC,0x50},
+ {0xA9,0x63}, {0xCC,0x51}, {0xCC,0x4A}, {0xCC,0x4D},
+ {0x97,0xDF}, {0xA9,0x72}, {0xA9,0x69}, {0xCC,0x54},
+ {0xCC,0x52}, {0xFB,0xA6}, {0xA9,0x6E}, {0xA9,0x6C},
+ {0xCC,0x49}, {0xA9,0x6B}, {0xCC,0x47}, {0xCC,0x46},
+ {0xA9,0x6A}, {0xA9,0x68}, {0xA9,0x71}, {0xA9,0x6D},
+ {0xA9,0x65}, {0xCC,0x4E}, {0xAB,0xB9}, {0xFB,0xAB},
+ {0xAB,0xC0}, {0xCE,0x6F}, {0xAB,0xB8}, {0xCE,0x67},
+ {0xCE,0x63}, {0xCE,0x73}, {0xCE,0x62}, {0xAB,0xBB},
+ {0xCE,0x6C}, {0xAB,0xBE}, {0xAB,0xC1}, {0xAB,0xBC},
+ {0xCE,0x70}, {0xAB,0xBF}, {0x98,0x77}, {0xAE,0x56},
+ {0xCE,0x76}, {0xCE,0x64}, {0x98,0x54}, {0x95,0xC5},
+ {0xCE,0x66}, {0xCE,0x6D}, {0xCE,0x71}, {0xCE,0x75},
+ {0xCE,0x72}, {0xCE,0x6B}, {0xCE,0x6E}, {0x9D,0x55},
+ {0xFB,0xB2}, {0xCE,0x68}, {0xAB,0xC3}, {0xCE,0x6A},
+ {0xCE,0x69}, {0xCE,0x74}, {0xAB,0xBA}, {0xCE,0x65},
+ {0xAB,0xC2}, {0x95,0x7E}, {0xAB,0xBD}, {0xAE,0x5C},
+ {0xD1,0x62}, {0x97,0x42}, {0xAE,0x5B}, {0x94,0xE6},
+ {0xD1,0x60}, {0xAE,0x50}, {0x92,0xF5}, {0xAE,0x55},
+ {0xD1,0x5F}, {0xD1,0x5C}, {0xD1,0x61}, {0xAE,0x51},
+ {0xD1,0x5B}, {0x8C,0xC5}, {0xAE,0x54}, {0xAE,0x52},
+ {0xD1,0x63}, {0xAE,0x53}, {0xAE,0x57}, {0x92,0xFD},
+ {0xAE,0x58}, {0xFB,0xA2}, {0xAE,0x5A}, {0x9C,0x51},
+ {0xAE,0x59}, {0x94,0xE9}, {0x98,0x5C}, {0x92,0xF0},
+ {0xD1,0x5D}, {0xD1,0x5E}, {0xD1,0x64}, {0xD4,0xD4},
+ {0xB0,0xF9}, {0xD8,0xC2}, {0xD4,0xD3}, {0xD4,0xE6},
+ {0xB1,0x40}, {0x94,0x4C}, {0xD4,0xE4}, {0xB0,0xFE},
+ {0xB0,0xFA}, {0xD4,0xED}, {0xD4,0xDD}, {0xD4,0xE0},
+ {0x91,0x6B}, {0xB1,0x43}, {0xD4,0xEA}, {0xD4,0xE2},
+ {0xB0,0xFB}, {0xB1,0x44}, {0xD4,0xE7}, {0xD4,0xE5},
+ {0xD4,0xD6}, {0xD4,0xEB}, {0xD4,0xDF}, {0xD4,0xDA},
+ {0x8B,0x78}, {0xD4,0xD0}, {0xD4,0xEC}, {0xD4,0xDC},
+ {0xD4,0xCF}, {0x94,0xE2}, {0xB1,0x42}, {0xD4,0xE1},
+ {0xD4,0xEE}, {0xD4,0xDE}, {0xD4,0xD2}, {0xD4,0xD7},
+ {0xD4,0xCE}, {0x98,0x4F}, {0xB1,0x41}, {0xFB,0xB5},
+ {0xD4,0xDB}, {0xD4,0xD8}, {0xB0,0xFC}, {0xD4,0xD1},
+ {0x92,0x71}, {0xD4,0xE9}, {0xB0,0xFD}, {0x93,0x65},
+ {0xD4,0xD9}, {0xD4,0xD5}, {0x98,0x5B}, {0xD4,0xE8},
+ {0x98,0x50}, {0xB4,0x40}, {0xD8,0xBB}, {0x97,0xBC},
+ {0xD8,0xB8}, {0xD8,0xC9}, {0xD8,0xBD}, {0xD8,0xCA},
+ {0x92,0xF3}, {0xB4,0x42}, {0x93,0x40}, {0x98,0x4D},
+ {0xD8,0xC6}, {0xD8,0xC3}, {0x95,0x72}, {0xFD,0xEF},
+ {0xD8,0xC4}, {0xD8,0xC7}, {0xD8,0xCB}, {0xD4,0xE3},
+ {0xD8,0xCD}, {0xDD,0x47}, {0xFD,0xC1}, {0xB4,0x43},
+ {0xD8,0xCE}, {0xD8,0xB6}, {0xD8,0xC0}, {0xFB,0xBA},
+ {0xD8,0xC5}, {0x92,0xEB}, {0xB4,0x41}, {0xB4,0x44},
+ {0xD8,0xCC}, {0xD8,0xCF}, {0xD8,0xBA}, {0xD8,0xB7},
+ {0xFC,0x73}, {0x97,0xB7}, {0xD8,0xB9}, {0xD8,0xBE},
+ {0xD8,0xBC}, {0xB4,0x45}, {0xD8,0xC8}, {0xFB,0xB4},
+ {0xD8,0xBF}, {0xD8,0xC1}, {0xD8,0xB5}, {0xDC,0xFA},
+ {0xDC,0xF8}, {0xB7,0x42}, {0xB7,0x40}, {0xDD,0x43},
+ {0xDC,0xF9}, {0xDD,0x44}, {0xDD,0x40}, {0xDC,0xF7},
+ {0xDD,0x46}, {0xDC,0xF6}, {0xDC,0xFD}, {0xB6,0xFE},
+ {0xB6,0xFD}, {0xB6,0xFC}, {0xDC,0xFB}, {0xDD,0x41},
+ {0xB6,0xF9}, {0xB7,0x41}, {0x90,0xA7}, {0xDC,0xF4},
+ {0xDC,0xFE}, {0xDC,0xF3}, {0xDC,0xFC}, {0xB6,0xFA},
+ {0xDD,0x42}, {0xDC,0xF5}, {0xB6,0xFB}, {0xDD,0x45},
+ {0x97,0x41}, {0x92,0xF4}, {0xFB,0xBC}, {0xE1,0x6E},
+ {0xB9,0xE2}, {0xB9,0xE1}, {0xB9,0xE3}, {0xE1,0x7A},
+ {0xE1,0x70}, {0xE1,0x76}, {0xE1,0x6B}, {0xE1,0x79},
+ {0xE1,0x78}, {0xE1,0x7C}, {0xE1,0x75}, {0xB9,0xDE},
+ {0xE1,0x74}, {0xB9,0xE4}, {0x95,0x77}, {0xE1,0x6D},
+ {0xB9,0xDF}, {0xE1,0x7B}, {0xB9,0xE0}, {0xE1,0x6F},
+ {0xE1,0x72}, {0xE1,0x77}, {0xE1,0x71}, {0xE1,0x6C},
+ {0x9E,0xE2}, {0x8F,0x78}, {0xE1,0x73}, {0xE5,0x55},
+ {0xBC,0x61}, {0xE5,0x58}, {0xE5,0x57}, {0xE5,0x5A},
+ {0xE5,0x5C}, {0xF9,0xDC}, {0xBC,0x5F}, {0xE5,0x56},
+ {0x96,0x72}, {0xE5,0x54}, {0xE5,0x5D}, {0xE5,0x5B},
+ {0xE5,0x59}, {0xE5,0x5F}, {0xE5,0x5E}, {0xBC,0x63},
+ {0xBC,0x5E}, {0xBC,0x60}, {0xBC,0x62}, {0x9E,0xB5},
+ {0xE5,0x60}, {0xE9,0x57}, {0x96,0x4B}, {0xE9,0x56},
+ {0xE9,0x55}, {0x8C,0xAC}, {0xE9,0x58}, {0xE9,0x51},
+ {0xE9,0x52}, {0xE9,0x5A}, {0xE9,0x53}, {0xBE,0xC5},
+ {0xE9,0x5C}, {0xA0,0xFA}, {0xE9,0x5B}, {0xE9,0x54},
+ {0xEC,0xD1}, {0xC0,0xA8}, {0xEC,0xCF}, {0xEC,0xD4},
+ {0xEC,0xD3}, {0xE9,0x59}, {0xC0,0xA7}, {0x95,0x75},
+ {0xEC,0xD2}, {0xEC,0xCE}, {0xEC,0xD6}, {0xEC,0xD5},
+ {0xC0,0xA6}, {0xEC,0xD0}, {0xBE,0xC6}, {0xC2,0x54},
+ {0xEF,0xC1}, {0xF1,0xFA}, {0xF1,0xFB}, {0xF1,0xFC},
+ {0xC4,0x5C}, {0x90,0xDA}, {0xC4,0x5D}, {0x93,0x67},
+ {0xF4,0x43}, {0xFE,0xA4}, {0xF5,0xC8}, {0xF5,0xC7},
+ {0x90,0xDF}, {0xF6,0xDB}, {0xF6,0xDC}, {0xF7,0xD5},
+ {0xF8,0xA7}, {0x93,0x54}, {0xA4,0x6C}, {0xA4,0x6D},
+ {0xA4,0x6E}, {0xA4,0xD5}, {0xA5,0xA5}, {0xC9,0xD3},
+ {0xA6,0x72}, {0xA6,0x73}, {0xA7,0xB7}, {0xA7,0xB8},
+ {0xA7,0xB6}, {0xA7,0xB5}, {0xA9,0x73}, {0xCC,0x55},
+ {0xA9,0x75}, {0xA9,0x74}, {0xCC,0x56}, {0x89,0x61},
+ {0x8B,0xB4}, {0xAB,0xC4}, {0xAE,0x5D}, {0xD1,0x65},
+ {0x9D,0xC0}, {0xD4,0xF0}, {0xB1,0x45}, {0xB4,0x47},
+ {0xD4,0xEF}, {0xB4,0x46}, {0x8E,0x48}, {0xB9,0xE5},
+ {0xFB,0xC5}, {0xE1,0x7D}, {0xBE,0xC7}, {0xC0,0xA9},
+ {0xEC,0xD7}, {0xFB,0xC7}, {0xC4,0x5E}, {0xC5,0x70},
+ {0xC6,0xCB}, {0xC9,0x72}, {0xFA,0x79}, {0xA5,0xA6},
+ {0xC9,0x73}, {0xA6,0x76}, {0xA6,0x74}, {0xA6,0x75},
+ {0xA6,0x77}, {0xA7,0xBA}, {0xA7,0xB9}, {0xCA,0xBC},
+ {0xA7,0xBB}, {0x9E,0x67}, {0xCA,0xBD}, {0xCC,0x57},
+ {0xCC,0x58}, {0x8C,0xD9}, {0xA9,0x76}, {0xA9,0x78},
+ {0xA9,0x7A}, {0xA9,0x77}, {0xA9,0x7B}, {0xA9,0x79},
+ {0xFB,0xD2}, {0x89,0x62}, {0x89,0x63}, {0xAB,0xC8},
+ {0xAB,0xC5}, {0xAB,0xC7}, {0xAB,0xC9}, {0xAB,0xC6},
+ {0xD1,0x66}, {0xCE,0x77}, {0xFC,0x7D}, {0xD1,0x68},
+ {0xD1,0x67}, {0xAE,0x63}, {0xAE,0x5F}, {0xAE,0x60},
+ {0xAE,0x62}, {0xAE,0x64}, {0xAE,0x61}, {0xAE,0x66},
+ {0xAE,0x65}, {0xB1,0x4A}, {0xD4,0xF2}, {0xD4,0xF1},
+ {0xB1,0x49}, {0x9F,0x6B}, {0xB1,0x48}, {0xB1,0x47},
+ {0xB1,0x4B}, {0xB1,0x46}, {0xD8,0xD5}, {0xD8,0xD2},
+ {0xB4,0x49}, {0xD8,0xD1}, {0xD8,0xD6}, {0xB4,0x4B},
+ {0xD8,0xD4}, {0xB4,0x48}, {0xB4,0x4A}, {0xD8,0xD3},
+ {0xFB,0xCC}, {0xDD,0x48}, {0xFE,0xAE}, {0xDD,0x49},
+ {0xDD,0x4A}, {0xB9,0xE6}, {0xB9,0xEE}, {0xE1,0x7E},
+ {0xB9,0xE8}, {0xB9,0xEC}, {0xE1,0xA1}, {0xB9,0xED},
+ {0xB9,0xE9}, {0xB9,0xEA}, {0xB9,0xE7}, {0xB9,0xEB},
+ {0xBC,0x66}, {0xD8,0xD0}, {0xBC,0x67}, {0xBC,0x65},
+ {0xBC,0x64}, {0xE9,0x5D}, {0xBE,0xC8}, {0xEC,0xD8},
+ {0xEC,0xD9}, {0xFB,0xD1}, {0xC3,0x64}, {0xC4,0x5F},
+ {0xA4,0x6F}, {0xA6,0x78}, {0xFB,0x75}, {0xAB,0xCA},
+ {0xD1,0x69}, {0xAE,0x67}, {0xFB,0xD4}, {0xB1,0x4E},
+ {0xB1,0x4D}, {0xB1,0x4C}, {0xB4,0x4C}, {0xB4,0x4D},
+ {0xD8,0xD7}, {0xB9,0xEF}, {0xBE,0xC9}, {0xA4,0x70},
+ {0xC9,0x5C}, {0xA4,0xD6}, {0xC9,0x74}, {0xFB,0xD6},
+ {0xFB,0xD8}, {0xC9,0xD4}, {0xA6,0x79}, {0xA9,0x7C},
+ {0x8B,0x5D}, {0x93,0x4C}, {0xDD,0x4B}, {0x9A,0xE2},
+ {0xA4,0x71}, {0x8B,0xC9}, {0xA4,0xD7}, {0xC9,0xD5},
+ {0xCA,0xBE}, {0xCA,0xBF}, {0xA7,0xBC}, {0xD8,0xD8},
+ {0xB4,0x4E}, {0xDD,0x4C}, {0xC0,0xAA}, {0xA4,0x72},
+ {0xA4,0xA8}, {0xA4,0xD8}, {0xC9,0x75}, {0xA5,0xA7},
+ {0xA7,0xC0}, {0xA7,0xBF}, {0xA7,0xBD}, {0xA7,0xBE},
+ {0xCC,0x59}, {0xA9,0x7E}, {0xA9,0xA1}, {0xCC,0x5A},
+ {0xA9,0x7D}, {0xFB,0xDB}, {0x9F,0xC9}, {0xAB,0xCE},
+ {0xCE,0x78}, {0xAB,0xCD}, {0xAB,0xCB}, {0xAB,0xCC},
+ {0xAE,0x6A}, {0xAE,0x68}, {0x9F,0x44}, {0xD1,0x6B},
+ {0xAE,0x69}, {0xD1,0x6A}, {0xAE,0x5E}, {0xD4,0xF3},
+ {0xB1,0x50}, {0xB1,0x51}, {0x98,0xED}, {0xB1,0x4F},
+ {0xB9,0xF0}, {0xE1,0xA2}, {0xBC,0x68}, {0xBC,0x69},
+ {0xE5,0x61}, {0xC0,0xAB}, {0xEF,0xC2}, {0xEF,0xC3},
+ {0xC4,0xDD}, {0xF8,0xA8}, {0xC9,0x4B}, {0xA4,0xD9},
+ {0xA4,0x73}, {0xC9,0x77}, {0xC9,0x76}, {0xA6,0x7A},
+ {0xC9,0xD7}, {0xC9,0xD8}, {0xC9,0xD6}, {0xC9,0xD9},
+ {0xFB,0xDD}, {0xCA,0xC7}, {0xCA,0xC2}, {0xCA,0xC4},
+ {0xCA,0xC6}, {0xCA,0xC3}, {0xA7,0xC4}, {0xCA,0xC0},
+ {0xCA,0xC1}, {0xA7,0xC1}, {0xA7,0xC2}, {0xCA,0xC5},
+ {0xCA,0xC8}, {0xA7,0xC3}, {0xCA,0xC9}, {0x8D,0xF2},
+ {0x89,0x64}, {0xFD,0xF2}, {0xCC,0x68}, {0x93,0x4D},
+ {0xCC,0x62}, {0xCC,0x5D}, {0xA9,0xA3}, {0xCC,0x65},
+ {0xCC,0x63}, {0xCC,0x5C}, {0xCC,0x69}, {0xCC,0x6C},
+ {0xCC,0x67}, {0xCC,0x60}, {0xA9,0xA5}, {0xCC,0x66},
+ {0xA9,0xA6}, {0xCC,0x61}, {0xCC,0x64}, {0xCC,0x5B},
+ {0xCC,0x5F}, {0xCC,0x6B}, {0xA9,0xA7}, {0xA9,0xA8},
+ {0xCC,0x5E}, {0xCC,0x6A}, {0xA9,0xA2}, {0xA9,0xA4},
+ {0xFB,0xE7}, {0xA0,0xF2}, {0x98,0x68}, {0xCE,0xAB},
+ {0xCE,0xA4}, {0xCE,0xAA}, {0xCE,0xA3}, {0xCE,0xA5},
+ {0xCE,0x7D}, {0xCE,0x7B}, {0xCE,0xAC}, {0xCE,0xA9},
+ {0xCE,0x79}, {0x9F,0x58}, {0xAB,0xD0}, {0xCE,0xA7},
+ {0xCE,0xA8}, {0xCE,0xA6}, {0xCE,0x7C}, {0xCE,0x7A},
+ {0xAB,0xCF}, {0xCE,0xA2}, {0xCE,0x7E}, {0xCE,0xA1},
+ {0xCE,0xAD}, {0x8D,0x73}, {0xAE,0x6F}, {0xFB,0xDE},
+ {0xAE,0x6E}, {0xD1,0x6C}, {0xAE,0x6B}, {0xD1,0x6E},
+ {0xFB,0xDF}, {0xAE,0x70}, {0xD1,0x6F}, {0xAE,0x73},
+ {0x8C,0x48}, {0xAE,0x71}, {0xD1,0x70}, {0xCE,0xAE},
+ {0xD1,0x72}, {0xAE,0x6D}, {0xAE,0x6C}, {0xD1,0x6D},
+ {0xD1,0x71}, {0xAE,0x72}, {0xB1,0x53}, {0xB1,0x52},
+ {0xD4,0xF5}, {0xD4,0xF9}, {0xD4,0xFB}, {0xB1,0x54},
+ {0xD4,0xFE}, {0xFB,0xE3}, {0xB1,0x58}, {0xD5,0x41},
+ {0xB1,0x5A}, {0x8D,0xA8}, {0xB1,0x56}, {0xB1,0x5E},
+ {0xFB,0xE4}, {0xB1,0x5B}, {0xD4,0xF7}, {0xB1,0x55},
+ {0xD4,0xF6}, {0xD4,0xF4}, {0xD5,0x43}, {0xD4,0xF8},
+ {0xB1,0x57}, {0xD5,0x42}, {0xB1,0x5C}, {0xD4,0xFD},
+ {0xD4,0xFC}, {0xB1,0x5D}, {0xD4,0xFA}, {0xB1,0x59},
+ {0x9C,0x75}, {0xD5,0x44}, {0x98,0x78}, {0xD5,0x40},
+ {0xD8,0xE7}, {0xD8,0xEE}, {0xD8,0xE3}, {0xB4,0x51},
+ {0xD8,0xDF}, {0xD8,0xEF}, {0xD8,0xD9}, {0xD8,0xEC},
+ {0xD8,0xEA}, {0xD8,0xE4}, {0xD8,0xED}, {0xD8,0xE6},
+ {0x8D,0x60}, {0xD8,0xDE}, {0xD8,0xF0}, {0xD8,0xDC},
+ {0xD8,0xE9}, {0xD8,0xDA}, {0xD8,0xF1}, {0xFB,0xE5},
+ {0xB4,0x52}, {0x8D,0x61}, {0xD8,0xEB}, {0xDD,0x4F},
+ {0xD8,0xDD}, {0xB4,0x4F}, {0xD8,0xE1}, {0xB4,0x50},
+ {0xD8,0xE0}, {0xD8,0xE5}, {0xD8,0xE2}, {0x8D,0x62},
+ {0xA0,0xA1}, {0xD8,0xE8}, {0x9C,0x40}, {0xDD,0x53},
+ {0xDD,0x56}, {0xDD,0x4E}, {0xDD,0x50}, {0xDD,0x55},
+ {0xDD,0x54}, {0xB7,0x43}, {0xD8,0xDB}, {0xDD,0x52},
+ {0xB7,0x44}, {0x98,0xAD}, {0xDD,0x4D}, {0xDD,0x51},
+ {0x9E,0xEA}, {0xE1,0xA9}, {0xE1,0xB0}, {0xE1,0xA7},
+ {0x8C,0xD4}, {0xE1,0xAE}, {0xE1,0xA5}, {0xE1,0xAD},
+ {0xE1,0xB1}, {0xE1,0xA4}, {0xE1,0xA8}, {0xE1,0xA3},
+ {0xB9,0xF1}, {0x9C,0xEB}, {0xE1,0xA6}, {0xB9,0xF2},
+ {0xE1,0xAC}, {0xE1,0xAB}, {0xE1,0xAA}, {0xFB,0xE0},
+ {0xE1,0xAF}, {0x9F,0x51}, {0xE5,0x65}, {0xE5,0x67},
+ {0xBC,0x6B}, {0xE5,0x68}, {0xE5,0x63}, {0xE5,0x62},
+ {0xE5,0x6C}, {0xE5,0x6A}, {0xBC,0x6A}, {0xE5,0x6D},
+ {0xE5,0x64}, {0xE5,0x69}, {0xE5,0x6B}, {0xE5,0x66},
+ {0x8D,0x65}, {0xE9,0x61}, {0xE9,0x66}, {0xE9,0x60},
+ {0xE9,0x65}, {0x9C,0xF1}, {0xE9,0x5E}, {0xE9,0x68},
+ {0xE9,0x64}, {0xE9,0x69}, {0xE9,0x63}, {0xE9,0x5F},
+ {0xE9,0x67}, {0xE9,0x6A}, {0xE9,0x62}, {0xFC,0x58},
+ {0xEC,0xDA}, {0xC0,0xAF}, {0x8D,0x66}, {0xC0,0xAD},
+ {0xC0,0xAC}, {0xC0,0xAE}, {0xEF,0xC4}, {0x96,0x54},
+ {0xF1,0x72}, {0xF1,0xFD}, {0xF4,0x44}, {0xF4,0x45},
+ {0xC4,0x60}, {0xF5,0xC9}, {0xC4,0xDE}, {0xF5,0xCA},
+ {0xF6,0xDE}, {0xC5,0x72}, {0xC5,0x71}, {0xF6,0xDD},
+ {0xC5,0xC9}, {0xFB,0xE8}, {0xF7,0xD6}, {0xC6,0xCC},
+ {0xA4,0x74}, {0xA6,0x7B}, {0xC9,0xDA}, {0xCA,0xCA},
+ {0xA8,0xB5}, {0xB1,0x5F}, {0xA4,0x75}, {0xA5,0xAA},
+ {0xA5,0xA9}, {0xA5,0xA8}, {0xA7,0xC5}, {0xAE,0x74},
+ {0xDD,0x57}, {0xA4,0x76}, {0xA4,0x77}, {0xA4,0x78},
+ {0xA4,0xDA}, {0x9F,0xCE}, {0xAB,0xD1}, {0xCE,0xAF},
+ {0xB4,0x53}, {0xA4,0x79}, {0xC9,0x5D}, {0xA5,0xAB},
+ {0xA5,0xAC}, {0xC9,0x78}, {0xA6,0x7C}, {0xFB,0xFC},
+ {0xCA,0xCB}, {0x9A,0xE4}, {0xA7,0xC6}, {0xCA,0xCC},
+ {0xA9,0xAE}, {0x9F,0x75}, {0xCC,0x6E}, {0xA9,0xAC},
+ {0xA9,0xAB}, {0xCC,0x6D}, {0xA9,0xA9}, {0xCC,0x6F},
+ {0xA9,0xAA}, {0xA9,0xAD}, {0xAB,0xD2}, {0xAB,0xD4},
+ {0xCE,0xB3}, {0xCE,0xB0}, {0xCE,0xB1}, {0xCE,0xB2},
+ {0xCE,0xB4}, {0xAB,0xD3}, {0xD1,0x74}, {0xD1,0x73},
+ {0xAE,0x76}, {0xAE,0x75}, {0xFB,0xF1}, {0xB1,0x62},
+ {0xD5,0x46}, {0xB1,0x61}, {0xB1,0x63}, {0xB1,0x60},
+ {0xB4,0x55}, {0xD5,0x45}, {0xB4,0x56}, {0xD8,0xF3},
+ {0x8D,0x69}, {0xB4,0x57}, {0xD8,0xF2}, {0xB4,0x54},
+ {0x93,0x4F}, {0xDD,0x5A}, {0xDD,0x5C}, {0xB7,0x45},
+ {0xDD,0x5B}, {0xDD,0x59}, {0xDD,0x58}, {0xE1,0xB4},
+ {0xB9,0xF7}, {0xB9,0xF5}, {0xB9,0xF6}, {0xE1,0xB2},
+ {0xE1,0xB3}, {0xB9,0xF3}, {0xE5,0x71}, {0xE5,0x6F},
+ {0x93,0x4E}, {0xBC,0x6D}, {0xE5,0x70}, {0xBC,0x6E},
+ {0xBC,0x6C}, {0xB9,0xF4}, {0xE9,0x6D}, {0xE9,0x6B},
+ {0xE9,0x6C}, {0xE5,0x6E}, {0xEC,0xDC}, {0xC0,0xB0},
+ {0xEC,0xDB}, {0xEF,0xC5}, {0xEF,0xC6}, {0xE9,0x6E},
+ {0xF1,0xFE}, {0xA4,0x7A}, {0xA5,0xAD}, {0xA6,0x7E},
+ {0xC9,0xDB}, {0xA6,0x7D}, {0xA9,0xAF}, {0xB7,0x46},
+ {0xFB,0xF4}, {0xA4,0xDB}, {0xA5,0xAE}, {0xAB,0xD5},
+ {0xB4,0x58}, {0xC6,0xCE}, {0xC9,0x79}, {0xC9,0x7A},
+ {0xFB,0xC3}, {0xC9,0xDC}, {0x89,0x65}, {0xA7,0xC8},
+ {0xCA,0xD0}, {0xCA,0xCE}, {0xA7,0xC9}, {0xCA,0xCD},
+ {0xCA,0xCF}, {0xCA,0xD1}, {0xA7,0xC7}, {0x8C,0x7A},
+ {0xA9,0xB3}, {0xA9,0xB4}, {0xA9,0xB1}, {0x8C,0x7B},
+ {0xA9,0xB0}, {0xCE,0xB8}, {0xA9,0xB2}, {0xAB,0xD6},
+ {0xCE,0xB7}, {0xCE,0xB9}, {0xCE,0xB6}, {0xCE,0xBA},
+ {0xAB,0xD7}, {0xAE,0x79}, {0xD1,0x75}, {0xD1,0x77},
+ {0xAE,0x77}, {0xD1,0x78}, {0xAE,0x78}, {0xD1,0x76},
+ {0xCE,0xB5}, {0xD5,0x47}, {0xD5,0x4A}, {0xD5,0x4B},
+ {0xD5,0x48}, {0xB1,0x67}, {0xB1,0x66}, {0xB1,0x64},
+ {0xB1,0x65}, {0xD5,0x49}, {0x8D,0x6A}, {0xB1,0x68},
+ {0xB4,0x5A}, {0xB4,0x5B}, {0xB4,0x5C}, {0xDD,0x5D},
+ {0xDD,0x5F}, {0xDD,0x61}, {0xB7,0x48}, {0xB7,0x47},
+ {0xB4,0x59}, {0xDD,0x60}, {0xDD,0x5E}, {0x93,0x53},
+ {0xE1,0xB8}, {0x9D,0xFB}, {0xE1,0xB6}, {0xE1,0xBC},
+ {0xB9,0xF8}, {0xE1,0xBD}, {0xE1,0xBA}, {0xB9,0xF9},
+ {0xE1,0xB7}, {0xE1,0xB5}, {0xE1,0xBB}, {0xBC,0x70},
+ {0xE5,0x73}, {0xE1,0xB9}, {0xBC,0x72}, {0xE5,0x74},
+ {0xBC,0x71}, {0xBC,0x74}, {0xE5,0x75}, {0xBC,0x6F},
+ {0xBC,0x73}, {0xE9,0x73}, {0xE9,0x71}, {0xE9,0x70},
+ {0xE9,0x72}, {0xE9,0x6F}, {0xC3,0x66}, {0xF4,0x46},
+ {0xF4,0x47}, {0xF5,0xCB}, {0xF6,0xDF}, {0xC6,0x55},
+ {0xFB,0xFD}, {0xA9,0xB5}, {0xA7,0xCA}, {0x90,0x59},
+ {0xFC,0x40}, {0xAB,0xD8}, {0xFC,0x41}, {0xFC,0x43},
+ {0xA4,0x7B}, {0xA4,0xDC}, {0xA5,0xAF}, {0xC9,0xDD},
+ {0xA7,0xCB}, {0xCA,0xD2}, {0xCE,0xBB}, {0xAB,0xD9},
+ {0xB9,0xFA}, {0xA4,0x7C}, {0x93,0x61}, {0xFC,0x46},
+ {0x93,0x62}, {0xA6,0xA1}, {0xB7,0x49}, {0xA4,0x7D},
+ {0xA4,0xDD}, {0xA4,0xDE}, {0xA5,0xB1}, {0xA5,0xB0},
+ {0xC9,0xDE}, {0xA6,0xA2}, {0xCA,0xD3}, {0xA7,0xCC},
+ {0xCC,0x71}, {0xCC,0x72}, {0xCC,0x73}, {0x8D,0x6B},
+ {0xA9,0xB6}, {0xA9,0xB7}, {0xCC,0x70}, {0xA9,0xB8},
+ {0xAB,0xDA}, {0xCE,0xBC}, {0xD1,0x7A}, {0xAE,0x7A},
+ {0xD1,0x79}, {0xB1,0x69}, {0xD5,0x4C}, {0xB1,0x6A},
+ {0xD5,0x4D}, {0xFC,0x4C}, {0xB4,0x5D}, {0xDD,0x62},
+ {0xE1,0xBF}, {0xE1,0xBE}, {0xB9,0xFB}, {0xBC,0x75},
+ {0xE5,0x76}, {0xBE,0xCA}, {0xE9,0x74}, {0xC0,0xB1},
+ {0x95,0xB8}, {0xC5,0x73}, {0xF7,0xD8}, {0xC6,0xD0},
+ {0x8B,0xCA}, {0xCC,0x74}, {0xCE,0xBD}, {0xB1,0x6B},
+ {0xD8,0xF4}, {0xB7,0x4A}, {0x98,0x7A}, {0xC2,0x55},
+ {0xC6,0xD1}, {0xA7,0xCE}, {0xFC,0x51}, {0xA7,0xCD},
+ {0xAB,0xDB}, {0xD1,0x7B}, {0xB1,0x6D}, {0xB3,0x43},
+ {0xB1,0x6E}, {0xB1,0x6C}, {0xB4,0x5E}, {0xE1,0xC0},
+ {0xB9,0xFC}, {0xBC,0x76}, {0xFC,0x54}, {0xC9,0x4C},
+ {0xC9,0xDF}, {0xCA,0xD5}, {0xA7,0xCF}, {0xCA,0xD4},
+ {0xA7,0xD0}, {0xFA,0xAF}, {0xA9,0xBC}, {0xCC,0x77},
+ {0xCC,0x76}, {0xA9,0xBB}, {0xA9,0xB9}, {0xA9,0xBA},
+ {0xCC,0x75}, {0x8D,0x6C}, {0xAB,0xDD}, {0xCE,0xBE},
+ {0xAB,0xE0}, {0xAB,0xDC}, {0xAB,0xE2}, {0xAB,0xDE},
+ {0xAB,0xDF}, {0xAB,0xE1}, {0xAE,0x7D}, {0xAE,0x7C},
+ {0xAE,0x7B}, {0xD5,0x4F}, {0xB1,0x6F}, {0xB1,0x72},
+ {0xB1,0x70}, {0xD5,0x4E}, {0xB1,0x75}, {0xB1,0x71},
+ {0xD5,0x50}, {0xB1,0x74}, {0xB1,0x73}, {0xFA,0x61},
+ {0xD8,0xF6}, {0xD8,0xF5}, {0xFC,0x57}, {0xB4,0x61},
+ {0xB4,0x5F}, {0xB4,0x60}, {0xD8,0xF7}, {0xB7,0x4B},
+ {0xDD,0x64}, {0xB7,0x4C}, {0xDD,0x63}, {0x9B,0x70},
+ {0xE5,0x77}, {0xBC,0x78}, {0xE1,0xC1}, {0xBC,0x77},
+ {0xB9,0xFD}, {0xA0,0x51}, {0xEC,0xDE}, {0xE9,0x75},
+ {0xC0,0xB2}, {0xEC,0xDD}, {0xF2,0x40}, {0xF4,0x48},
+ {0xF4,0x49}, {0x8C,0x7C}, {0xA4,0xDF}, {0x8B,0xCB},
+ {0xA5,0xB2}, {0xC9,0x7B}, {0xA7,0xD2}, {0xA7,0xD4},
+ {0xC9,0xE2}, {0xCA,0xD8}, {0xCA,0xD7}, {0xCA,0xD6},
+ {0xC9,0xE1}, {0xC9,0xE0}, {0xA6,0xA4}, {0xA7,0xD3},
+ {0xA7,0xD1}, {0xA6,0xA3}, {0x93,0x6E}, {0xA9,0xBD},
+ {0xCC,0x78}, {0xFC,0xD5}, {0xA9,0xBE}, {0xCA,0xDD},
+ {0xCA,0xDF}, {0xCA,0xDE}, {0xCC,0x79}, {0xCA,0xDA},
+ {0xA7,0xD8}, {0xA7,0xD6}, {0xCA,0xD9}, {0xCA,0xDB},
+ {0xCA,0xE1}, {0xA7,0xD5}, {0xCA,0xDC}, {0xCA,0xE5},
+ {0xA9,0xC0}, {0xCA,0xE2}, {0xA7,0xD7}, {0xCA,0xE0},
+ {0xCA,0xE3}, {0xA9,0xBF}, {0xA9,0xC1}, {0xCA,0xE4},
+ {0xCC,0xAF}, {0xCC,0xA2}, {0xCC,0x7E}, {0xCC,0xAE},
+ {0xCC,0xA9}, {0xAB,0xE7}, {0xA9,0xC2}, {0xCC,0xAA},
+ {0xCC,0xAD}, {0xAB,0xE3}, {0xCC,0xAC}, {0xA9,0xC3},
+ {0xA9,0xC8}, {0xA9,0xC6}, {0xCC,0xA3}, {0xCC,0x7C},
+ {0xCC,0xA5}, {0xA9,0xCD}, {0xCC,0xB0}, {0xAB,0xE4},
+ {0xCC,0xA6}, {0xAB,0xE5}, {0xA9,0xC9}, {0xCC,0xA8},
+ {0xFC,0xA9}, {0xCE,0xCD}, {0xAB,0xE6}, {0xCC,0x7B},
+ {0xA9,0xCA}, {0xAB,0xE8}, {0xA9,0xCB}, {0xA9,0xC7},
+ {0xA9,0xCC}, {0xCC,0xA7}, {0xCC,0x7A}, {0xCC,0xAB},
+ {0xA9,0xC4}, {0xFC,0x61}, {0xCC,0x7D}, {0xCC,0xA4},
+ {0xCC,0xA1}, {0xA9,0xC5}, {0xCE,0xBF}, {0xCE,0xC0},
+ {0x89,0x66}, {0xCE,0xCA}, {0xD1,0xA1}, {0xCE,0xCB},
+ {0xAB,0xEE}, {0xCE,0xCE}, {0xCE,0xC4}, {0xAB,0xED},
+ {0xCE,0xC6}, {0xCE,0xC7}, {0xFA,0xCB}, {0xCE,0xC9},
+ {0xAB,0xE9}, {0xAE,0xA3}, {0xF9,0xDA}, {0xCE,0xC5},
+ {0xCE,0xC1}, {0xAE,0xA4}, {0xCE,0xCF}, {0xAE,0x7E},
+ {0xD1,0x7D}, {0xCE,0xC8}, {0xD1,0x7C}, {0xCE,0xC3},
+ {0xCE,0xCC}, {0xAB,0xEC}, {0xAE,0xA1}, {0xAB,0xF2},
+ {0xAE,0xA2}, {0xCE,0xD0}, {0xD1,0x7E}, {0xAB,0xEB},
+ {0xAE,0xA6}, {0xAB,0xF1}, {0xAB,0xF0}, {0xAB,0xEF},
+ {0xAE,0xA5}, {0xCE,0xD1}, {0xAE,0xA7}, {0xAB,0xEA},
+ {0xCE,0xC2}, {0x93,0x7A}, {0xA0,0xE0}, {0x93,0x6B},
+ {0xB1,0x76}, {0xD1,0xA4}, {0xD1,0xA6}, {0xD1,0xA8},
+ {0xAE,0xA8}, {0xAE,0xAE}, {0xD5,0x53}, {0xD1,0xAC},
+ {0xD1,0xA3}, {0xB1,0x78}, {0xD5,0x51}, {0xAE,0xAD},
+ {0xAE,0xAB}, {0xD1,0xAE}, {0xD5,0x52}, {0xD1,0xA5},
+ {0xAE,0xAC}, {0xD1,0xA9}, {0xAE,0xAF}, {0xD1,0xAB},
+ {0xAE,0xAA}, {0xD1,0xAA}, {0xD1,0xAD}, {0xD1,0xA7},
+ {0xFC,0x6B}, {0xAE,0xA9}, {0xB1,0x79}, {0xD1,0xA2},
+ {0xB1,0x77}, {0xA0,0xDC}, {0x94,0x68}, {0xB1,0x7A},
+ {0xD5,0x55}, {0xD5,0x5E}, {0xB4,0x64}, {0xFC,0x6D},
+ {0xB1,0x7C}, {0xB1,0xA3}, {0xB4,0x65}, {0xD5,0x60},
+ {0xB1,0xAA}, {0xD8,0xF9}, {0xD5,0x56}, {0xB1,0xA2},
+ {0xB1,0xA5}, {0xB1,0x7E}, {0xD5,0x54}, {0xD5,0x62},
+ {0xD5,0x65}, {0xD9,0x49}, {0xD5,0x63}, {0xD8,0xFD},
+ {0xB1,0xA1}, {0xB1,0xA8}, {0xB1,0xAC}, {0xD5,0x5D},
+ {0xD8,0xF8}, {0xD5,0x61}, {0xB1,0x7B}, {0xD8,0xFA},
+ {0xD5,0x64}, {0xD8,0xFC}, {0xD5,0x59}, {0xB4,0x62},
+ {0xD5,0x57}, {0xD5,0x58}, {0xB1,0xA7}, {0x8D,0x71},
+ {0xB1,0xA6}, {0xD5,0x5B}, {0xB1,0xAB}, {0xD5,0x5F},
+ {0xB1,0xA4}, {0xD5,0x5C}, {0xFD,0x64}, {0xB1,0xA9},
+ {0xB4,0x66}, {0xB4,0x63}, {0xD8,0xFB}, {0x99,0xBA},
+ {0xD5,0x5A}, {0xB1,0x7D}, {0x9A,0xD0}, {0x9A,0x61},
+ {0xA0,0xE5}, {0xB4,0x6B}, {0xB4,0x6F}, {0xD9,0x40},
+ {0xB7,0x51}, {0xB4,0x6D}, {0xD9,0x44}, {0xB4,0x71},
+ {0xDD,0x65}, {0xD9,0x46}, {0xB7,0x53}, {0xB4,0x69},
+ {0xB4,0x6C}, {0xD9,0x47}, {0xA0,0x5B}, {0xD9,0x48},
+ {0xD9,0x4E}, {0xB4,0x73}, {0xB7,0x54}, {0xD9,0x4A},
+ {0xD9,0x4F}, {0xD9,0x43}, {0xB7,0x5E}, {0x96,0xAC},
+ {0xB7,0x55}, {0xB4,0x72}, {0xD9,0x41}, {0xD9,0x50},
+ {0x97,0x40}, {0xB7,0x5D}, {0xB4,0x70}, {0xB7,0x4E},
+ {0xD9,0x4D}, {0xB4,0x74}, {0xD9,0x45}, {0xD8,0xFE},
+ {0xB4,0x6A}, {0xD9,0x42}, {0xD9,0x4B}, {0x9E,0xF1},
+ {0xB7,0x4D}, {0xB7,0x52}, {0xB4,0x67}, {0xD9,0x4C},
+ {0xB7,0x50}, {0x8C,0x4D}, {0xB4,0x68}, {0xB7,0x5C},
+ {0xE1,0xC3}, {0xDD,0x70}, {0xDD,0x68}, {0xE1,0xC2},
+ {0xDD,0x6C}, {0xDD,0x6E}, {0x9F,0x7E}, {0xDD,0x6B},
+ {0xB7,0x5B}, {0xDD,0x6A}, {0xB7,0x5F}, {0xE1,0xD2},
+ {0x8D,0x72}, {0xB7,0x5A}, {0xBA,0x40}, {0xDD,0x71},
+ {0xE1,0xC4}, {0xFC,0x76}, {0xB7,0x58}, {0xDD,0x69},
+ {0xDD,0x6D}, {0xB9,0xFE}, {0xB7,0x4F}, {0xDD,0x66},
+ {0xDD,0x67}, {0xBA,0x41}, {0xB7,0x57}, {0xB7,0x59},
+ {0xB7,0x56}, {0xDD,0x6F}, {0x96,0xA9}, {0xE1,0xC8},
+ {0xE1,0xC9}, {0xE1,0xCE}, {0xBC,0x7D}, {0xE1,0xD5},
+ {0xBA,0x47}, {0xA0,0x6E}, {0xBA,0x46}, {0xE1,0xD0},
+ {0xFC,0xAA}, {0xBC,0x7C}, {0xE1,0xC5}, {0xBA,0x45},
+ {0xFB,0xCD}, {0xE1,0xD4}, {0xBA,0x43}, {0xBA,0x44},
+ {0xFC,0x74}, {0xE1,0xD1}, {0xE5,0xAA}, {0xBC,0x7A},
+ {0xB4,0x6E}, {0xE1,0xD3}, {0xBC,0xA3}, {0xE1,0xCB},
+ {0xBC,0x7B}, {0xA0,0x74}, {0xBC,0xA2}, {0xE1,0xC6},
+ {0xE1,0xCA}, {0xE1,0xC7}, {0xE1,0xCD}, {0xBA,0x48},
+ {0xBC,0x79}, {0xBA,0x42}, {0xE5,0x7A}, {0xE1,0xCF},
+ {0xBC,0xA1}, {0xA0,0x71}, {0xBC,0xA4}, {0xE1,0xCC},
+ {0xFC,0x79}, {0xBC,0x7E}, {0xE5,0x79}, {0xFC,0x7C},
+ {0xE5,0x7E}, {0xBE,0xCE}, {0xE5,0x78}, {0xE9,0xA3},
+ {0xE5,0xA9}, {0xBC,0xA8}, {0xBC,0xA6}, {0xBE,0xCC},
+ {0xE5,0xA6}, {0xE5,0xA2}, {0xBC,0xAC}, {0x9C,0x50},
+ {0xE9,0x78}, {0x93,0x79}, {0x93,0x78}, {0xBC,0xAA},
+ {0xE5,0xA1}, {0xA0,0xDD}, {0xE9,0x76}, {0xE5,0xA5},
+ {0xE5,0xA8}, {0xE5,0x7D}, {0xBC,0xAB}, {0xBC,0xA5},
+ {0xE9,0x77}, {0xBE,0xCD}, {0xE5,0xA7}, {0xBC,0xA7},
+ {0xBC,0xA9}, {0xE5,0xA4}, {0xBC,0xAD}, {0xE5,0xA3},
+ {0xE5,0x7C}, {0xE5,0x7B}, {0xBE,0xCB}, {0xE5,0xAB},
+ {0xE9,0x7A}, {0xEC,0xE0}, {0xBE,0xD0}, {0x8D,0x75},
+ {0xE9,0xA2}, {0x8D,0x76}, {0xE9,0x7E}, {0xEC,0xE1},
+ {0xBE,0xD1}, {0xE9,0xA1}, {0x93,0x74}, {0xE9,0x7C},
+ {0xC0,0xB4}, {0xEC,0xDF}, {0xE9,0x79}, {0xE9,0x7B},
+ {0xC0,0xB5}, {0xBE,0xD3}, {0xC0,0xB3}, {0xBE,0xD2},
+ {0xC0,0xB7}, {0xE9,0x7D}, {0xBE,0xCF}, {0x8D,0x77},
+ {0xFC,0xA5}, {0xFC,0xA2}, {0xEF,0xCF}, {0xEF,0xC7},
+ {0x90,0xC3}, {0xEC,0xE7}, {0xEF,0xC8}, {0xEC,0xE3},
+ {0xA0,0x79}, {0xC2,0x56}, {0xEC,0xE5}, {0xEC,0xE4},
+ {0xC0,0xB6}, {0xEC,0xE2}, {0xEC,0xE6}, {0xEF,0xD0},
+ {0xEF,0xCC}, {0xEF,0xCE}, {0xEF,0xC9}, {0xEF,0xCA},
+ {0xEF,0xCD}, {0xEF,0xCB}, {0xC3,0x67}, {0xC3,0x6A},
+ {0xC3,0x69}, {0xC3,0x68}, {0xC4,0x61}, {0xF4,0x4A},
+ {0xC4,0x62}, {0xF2,0x41}, {0xC4,0xDF}, {0xF5,0xCC},
+ {0xC4,0xE0}, {0xC5,0x74}, {0xC5,0xCA}, {0xF7,0xD9},
+ {0xF7,0xDA}, {0xF7,0xDB}, {0xF9,0xBA}, {0xA4,0xE0},
+ {0xC9,0x7C}, {0xA5,0xB3}, {0xA6,0xA6}, {0xA6,0xA7},
+ {0xA6,0xA5}, {0xA6,0xA8}, {0xA7,0xDA}, {0xA7,0xD9},
+ {0xCC,0xB1}, {0xA9,0xCF}, {0xA9,0xCE}, {0xD1,0xAF},
+ {0xB1,0xAD}, {0xB1,0xAE}, {0xB4,0x75}, {0xDD,0x72},
+ {0xB7,0x60}, {0xB7,0x61}, {0xDD,0x74}, {0xDD,0x76},
+ {0xDD,0x75}, {0xE1,0xD7}, {0xE1,0xD6}, {0xBA,0x49},
+ {0xE1,0xD8}, {0x8D,0x79}, {0xE5,0xAC}, {0xBC,0xAE},
+ {0xBE,0xD4}, {0xC0,0xB8}, {0xC2,0x57}, {0xC0,0xB9},
+ {0xA4,0xE1}, {0x8B,0xFC}, {0xA0,0x76}, {0xCA,0xE6},
+ {0xCC,0xB2}, {0xA9,0xD1}, {0xA9,0xD0}, {0xA9,0xD2},
+ {0xAB,0xF3}, {0xCE,0xD2}, {0xCE,0xD3}, {0xD1,0xB0},
+ {0xAE,0xB0}, {0xB1,0xAF}, {0xB4,0x76}, {0xD9,0x51},
+ {0xA4,0xE2}, {0x8B,0xCD}, {0xA4,0x7E}, {0xA4,0xE3},
+ {0xC9,0x7D}, {0xA5,0xB7}, {0xA5,0xB6}, {0xA5,0xB4},
+ {0xA5,0xB5}, {0xA6,0xAB}, {0xC9,0xE9}, {0xC9,0xEB},
+ {0xA6,0xAA}, {0xC9,0xE3}, {0xC9,0xE4}, {0xC9,0xEA},
+ {0xC9,0xE6}, {0xC9,0xE8}, {0xA6,0xA9}, {0xC9,0xE5},
+ {0xC9,0xEC}, {0xC9,0xE7}, {0x9F,0x5A}, {0xA7,0xE1},
+ {0xA7,0xEA}, {0xA7,0xE8}, {0xCA,0xF0}, {0xCA,0xED},
+ {0xCA,0xF5}, {0xA7,0xE6}, {0xCA,0xF6}, {0xA7,0xDF},
+ {0xCA,0xF3}, {0xA7,0xE5}, {0xCA,0xEF}, {0xCA,0xEE},
+ {0xA7,0xE3}, {0xCA,0xF4}, {0xA7,0xE4}, {0xA9,0xD3},
+ {0xA7,0xDE}, {0xCA,0xF1}, {0x9F,0xF4}, {0xCA,0xE7},
+ {0xA7,0xDB}, {0x9F,0xBA}, {0xA7,0xEE}, {0xCA,0xEC},
+ {0xCA,0xF2}, {0xA7,0xE0}, {0xA7,0xE2}, {0xCA,0xE8},
+ {0xCA,0xE9}, {0xCA,0xEA}, {0x8D,0x7A}, {0xA7,0xED},
+ {0xA7,0xE7}, {0xA7,0xEC}, {0xCA,0xEB}, {0xA7,0xEB},
+ {0xA7,0xDD}, {0xA7,0xDC}, {0xA7,0xE9}, {0x9E,0x45},
+ {0x93,0xB0}, {0xA0,0x75}, {0xA9,0xE1}, {0xCC,0xBE},
+ {0xCC,0xB7}, {0xA9,0xDC}, {0xA9,0xEF}, {0xCC,0xB3},
+ {0xCC,0xBA}, {0xCC,0xBC}, {0xCC,0xBF}, {0xA9,0xEA},
+ {0xCC,0xBB}, {0xCC,0xB4}, {0xA9,0xE8}, {0xCC,0xB8},
+ {0xCC,0xC0}, {0xA9,0xD9}, {0xCC,0xBD}, {0xA9,0xE3},
+ {0xA9,0xE2}, {0xCC,0xB6}, {0xA9,0xD7}, {0xA9,0xD8},
+ {0x9B,0x46}, {0xA9,0xD6}, {0xFC,0xAE}, {0xA9,0xEE},
+ {0xA9,0xE6}, {0xA9,0xE0}, {0xA9,0xD4}, {0xCC,0xB9},
+ {0xA9,0xDF}, {0xA9,0xD5}, {0xA9,0xE7}, {0xA9,0xF0},
+ {0xCE,0xD4}, {0xA9,0xE4}, {0xCC,0xB5}, {0xA9,0xDA},
+ {0xA9,0xDD}, {0xA9,0xDE}, {0xFC,0xB0}, {0xA9,0xEC},
+ {0xA9,0xED}, {0xA9,0xEB}, {0xA9,0xE5}, {0xA9,0xE9},
+ {0xA9,0xDB}, {0xAB,0xF4}, {0xFA,0x51}, {0x8D,0x7B},
+ {0xCE,0xDA}, {0xAC,0x41}, {0xAB,0xF8}, {0xAB,0xFA},
+ {0xAC,0x40}, {0xCE,0xE6}, {0xAB,0xFD}, {0xD1,0xB1},
+ {0xAE,0xB1}, {0xAC,0x43}, {0xCE,0xD7}, {0xCE,0xDF},
+ {0xAB,0xFE}, {0xCE,0xDE}, {0xCE,0xDB}, {0xCE,0xE3},
+ {0xCE,0xE5}, {0xAB,0xF7}, {0xAB,0xFB}, {0xAC,0x42},
+ {0xAE,0xB3}, {0xCE,0xE0}, {0xAB,0xF9}, {0xAC,0x45},
+ {0xCE,0xD9}, {0xAB,0xFC}, {0xAE,0xB2}, {0xAB,0xF6},
+ {0xCE,0xD6}, {0xCE,0xDD}, {0xCE,0xD5}, {0xCE,0xD8},
+ {0xCE,0xDC}, {0xD1,0xB2}, {0xAC,0x44}, {0xCE,0xE1},
+ {0xCE,0xE2}, {0xCE,0xE4}, {0xAB,0xF5}, {0x8D,0x7C},
+ {0xAE,0xC1}, {0xD1,0xBE}, {0xAE,0xBF}, {0xAE,0xC0},
+ {0xD1,0xB4}, {0xD1,0xC4}, {0x9E,0xD6}, {0xAE,0xB6},
+ {0x93,0xAC}, {0xD5,0x66}, {0xD1,0xC6}, {0xD1,0xC0},
+ {0x9F,0x5B}, {0xD1,0xB7}, {0x93,0xA9}, {0xD1,0xC9},
+ {0xD1,0xBA}, {0xAE,0xBC}, {0xD5,0x7D}, {0xD1,0xBD},
+ {0xAE,0xBE}, {0xAE,0xB5}, {0xD1,0xCB}, {0xD1,0xBF},
+ {0xAE,0xB8}, {0xD1,0xB8}, {0xD1,0xB5}, {0xD1,0xB6},
+ {0xAE,0xB9}, {0xD1,0xC5}, {0xD1,0xCC}, {0xAE,0xBB},
+ {0xD1,0xBC}, {0xD1,0xBB}, {0xAE,0xC3}, {0xAE,0xC2},
+ {0xAE,0xB4}, {0xAE,0xBA}, {0xAE,0xBD}, {0xD1,0xC8},
+ {0xD1,0xC2}, {0xAE,0xB7}, {0xD1,0xB3}, {0xD1,0xCA},
+ {0xD1,0xC1}, {0xD1,0xC3}, {0xD1,0xC7}, {0xA0,0x7C},
+ {0xD5,0x67}, {0xB1,0xB7}, {0xB1,0xCB}, {0xB1,0xCA},
+ {0xB1,0xBF}, {0xFC,0xB2}, {0xD5,0x79}, {0xD5,0x75},
+ {0xD5,0x72}, {0xD5,0xA6}, {0xB1,0xBA}, {0xB1,0xB2},
+ {0xD5,0x77}, {0xB4,0xA8}, {0xB1,0xB6}, {0xD5,0xA1},
+ {0x8A,0xC1}, {0xB1,0xCC}, {0xB1,0xC9}, {0xD5,0x7B},
+ {0xD5,0x6A}, {0x9F,0xB4}, {0xB1,0xC8}, {0xD5,0xA3},
+ {0xD5,0x69}, {0xB1,0xBD}, {0xB1,0xC1}, {0xD5,0xA2},
+ {0xD5,0x73}, {0xB1,0xC2}, {0xB1,0xBC}, {0xD5,0x68},
+ {0xFC,0xAC}, {0xB4,0x78}, {0xD5,0xA5}, {0xD5,0x71},
+ {0xB1,0xC7}, {0xD5,0x74}, {0xD5,0xA4}, {0xB1,0xC6},
+ {0xD9,0x52}, {0xB1,0xB3}, {0xD5,0x6F}, {0xB1,0xB8},
+ {0xB1,0xC3}, {0xB1,0xBE}, {0xD5,0x78}, {0xD5,0x6E},
+ {0xD5,0x6C}, {0xD5,0x7E}, {0xB1,0xB0}, {0xB1,0xC4},
+ {0xB1,0xB4}, {0xB4,0x77}, {0xD5,0x7C}, {0xB1,0xB5},
+ {0xB1,0xB1}, {0xB1,0xC0}, {0xB1,0xBB}, {0xB1,0xB9},
+ {0xD5,0x70}, {0xB1,0xC5}, {0xD5,0x6D}, {0xD5,0x7A},
+ {0xD5,0x76}, {0xD9,0x54}, {0xD9,0x53}, {0x9E,0x4C},
+ {0xD5,0x6B}, {0xD9,0x64}, {0xB4,0x7A}, {0x8F,0xC5},
+ {0xD9,0x6A}, {0xD9,0x59}, {0xD9,0x67}, {0xDD,0x77},
+ {0xB4,0x7D}, {0xD9,0x6B}, {0xD9,0x6E}, {0xB4,0x7C},
+ {0xD9,0x5C}, {0xD9,0x6D}, {0xD9,0x6C}, {0xB4,0x7E},
+ {0xD9,0x55}, {0xB4,0x79}, {0xB4,0xA3}, {0x93,0xAD},
+ {0xB4,0xA1}, {0xD9,0x69}, {0xD9,0x5F}, {0xB4,0xA5},
+ {0xD9,0x70}, {0xD9,0x68}, {0xD9,0x71}, {0xB4,0xAD},
+ {0xB4,0xAB}, {0xD9,0x66}, {0xD9,0x65}, {0x9D,0xC3},
+ {0xD9,0x63}, {0xD9,0x5D}, {0xB4,0xA4}, {0x8D,0xA2},
+ {0xB4,0xA2}, {0xD1,0xB9}, {0xD9,0x56}, {0x9D,0x4A},
+ {0xDD,0xB7}, {0xD9,0x57}, {0xB4,0x7B}, {0xB4,0xAA},
+ {0xDD,0x79}, {0xB4,0xA6}, {0xB4,0xA7}, {0xD9,0x58},
+ {0xD9,0x6F}, {0xDD,0x78}, {0xD9,0x60}, {0xD9,0x5B},
+ {0xB4,0xA9}, {0xD9,0x61}, {0xD9,0x5E}, {0xFC,0xB6},
+ {0xB4,0xAE}, {0x8D,0xA3}, {0x9E,0x4B}, {0x9E,0x4D},
+ {0xB7,0x70}, {0x8D,0xA4}, {0xDD,0x7C}, {0xDD,0xB1},
+ {0xDD,0xB6}, {0xDD,0xAA}, {0xB7,0x6C}, {0xDD,0xBB},
+ {0xB7,0x69}, {0xDD,0x7A}, {0xDD,0x7B}, {0xB7,0x62},
+ {0xB7,0x6B}, {0xDD,0xA4}, {0xB7,0x6E}, {0xB7,0x6F},
+ {0xDD,0xA5}, {0xDD,0xB2}, {0xDD,0xB8}, {0xB7,0x6A},
+ {0xB7,0x64}, {0xDD,0xA3}, {0xDD,0x7D}, {0xDD,0xBA},
+ {0xDD,0xA8}, {0xDD,0xA9}, {0xDD,0x7E}, {0xDD,0xB4},
+ {0xDD,0xAB}, {0xDD,0xB5}, {0xDD,0xAD}, {0xB7,0x65},
+ {0xE1,0xD9}, {0xB7,0x68}, {0xB7,0x66}, {0xDD,0xB9},
+ {0xDD,0xB0}, {0xDD,0xAC}, {0x8A,0xFD}, {0xDD,0xA1},
+ {0xBA,0x53}, {0xDD,0xAF}, {0xB7,0x6D}, {0xDD,0xA7},
+ {0xFC,0xB5}, {0xDD,0xA6}, {0xFC,0xC3}, {0x93,0xB2},
+ {0xB7,0x67}, {0xB7,0x63}, {0xE1,0xEE}, {0xDD,0xB3},
+ {0xDD,0xAE}, {0xDD,0xA2}, {0xE1,0xE9}, {0xE1,0xDA},
+ {0xE1,0xE5}, {0xE1,0xEC}, {0xBA,0x51}, {0xB4,0xAC},
+ {0xE1,0xEA}, {0xBA,0x4C}, {0xBA,0x4B}, {0xE1,0xF1},
+ {0x8D,0xA5}, {0xE1,0xDB}, {0xE1,0xE8}, {0xE1,0xDC},
+ {0xE1,0xE7}, {0xBA,0x4F}, {0xE1,0xEB}, {0xD9,0x62},
+ {0xE1,0xF2}, {0xE1,0xE3}, {0xBA,0x52}, {0xE5,0xBA},
+ {0xBC,0xAF}, {0xE1,0xF0}, {0xE1,0xEF}, {0xBA,0x54},
+ {0xE5,0xAD}, {0xBC,0xB0}, {0xE5,0xAE}, {0x93,0xA1},
+ {0xE1,0xDF}, {0xE1,0xE0}, {0xE1,0xDD}, {0xE1,0xE2},
+ {0xE1,0xDE}, {0xE1,0xF3}, {0xBA,0x4E}, {0xBC,0xB1},
+ {0xBA,0x50}, {0xBA,0x55}, {0x8A,0xC6}, {0xE1,0xE1},
+ {0xE1,0xED}, {0xE1,0xE6}, {0xE5,0xB1}, {0xBA,0x4A},
+ {0xBC,0xB4}, {0xE9,0xAA}, {0xE5,0xB6}, {0xE5,0xB5},
+ {0xE5,0xB7}, {0x8A,0x5B}, {0xE5,0xB4}, {0xBC,0xB5},
+ {0x89,0x4D}, {0xBC,0xBB}, {0xBC,0xB8}, {0xBC,0xB9},
+ {0xE5,0xAF}, {0xE5,0xB2}, {0xE5,0xBC}, {0xBC,0xC1},
+ {0xBC,0xBF}, {0xE5,0xB3}, {0xD9,0x5A}, {0xBC,0xB2},
+ {0xE5,0xB9}, {0xE5,0xB0}, {0xBC,0xC2}, {0xE5,0xB8},
+ {0xBA,0x4D}, {0xBC,0xB7}, {0xE1,0xE4}, {0xBC,0xBA},
+ {0xBC,0xBE}, {0xBC,0xC0}, {0xBC,0xBD}, {0xBC,0xBC},
+ {0xFE,0xD4}, {0xBC,0xB6}, {0xE5,0xBB}, {0xBC,0xB3},
+ {0xBC,0xC3}, {0x8A,0x78}, {0x93,0xAB}, {0xBE,0xD8},
+ {0xBE,0xD9}, {0xE9,0xA9}, {0xBE,0xE2}, {0xBE,0xDF},
+ {0x8D,0xA7}, {0xBE,0xD6}, {0xBE,0xDD}, {0xE9,0xAB},
+ {0xBE,0xDB}, {0xBE,0xD5}, {0xBE,0xDC}, {0xE9,0xA8},
+ {0xC0,0xBB}, {0xBE,0xD7}, {0xBE,0xDE}, {0xC0,0xBA},
+ {0xE9,0xA7}, {0xE9,0xA6}, {0xBE,0xE0}, {0x9F,0x45},
+ {0xBE,0xE1}, {0xE9,0xA5}, {0xE9,0xA4}, {0xC0,0xBC},
+ {0xE9,0xAE}, {0xBE,0xDA}, {0xE9,0xAC}, {0x8A,0x56},
+ {0xC0,0xBD}, {0xFC,0xBF}, {0xC0,0xC2}, {0xEC,0xEA},
+ {0xEC,0xEC}, {0xFC,0xC0}, {0xC0,0xBF}, {0x8E,0xE6},
+ {0xEC,0xED}, {0xEC,0xE9}, {0x8A,0xA4}, {0xEC,0xEB},
+ {0xC0,0xC0}, {0xC0,0xC3}, {0xEC,0xE8}, {0xC0,0xBE},
+ {0xC0,0xC1}, {0xC2,0x59}, {0xE9,0xAD}, {0xC2,0x58},
+ {0xC2,0x5E}, {0xEF,0xD4}, {0xC2,0x5C}, {0xC2,0x5D},
+ {0xEF,0xD7}, {0xEF,0xD3}, {0xC2,0x5A}, {0xEF,0xD1},
+ {0xC3,0x6B}, {0xEF,0xD5}, {0xEF,0xD6}, {0xEF,0xD2},
+ {0xC2,0x5B}, {0xF2,0x42}, {0xF2,0x45}, {0x89,0x43},
+ {0xF2,0x46}, {0xF2,0x44}, {0xF2,0x47}, {0xC3,0x6C},
+ {0xF2,0x43}, {0x93,0xF3}, {0xF4,0x4E}, {0xC4,0x64},
+ {0xF4,0x4D}, {0xF4,0x4C}, {0xF4,0x4B}, {0xC4,0x63},
+ {0xC4,0x65}, {0xF5,0xCD}, {0xC4,0xE2}, {0xC4,0xE1},
+ {0xFC,0xAB}, {0x9E,0xA2}, {0xF6,0xE1}, {0xF6,0xE0},
+ {0xF6,0xE3}, {0xC5,0xCB}, {0xC5,0x75}, {0xF7,0xDD},
+ {0xF6,0xE2}, {0xF7,0xDC}, {0xC5,0xCD}, {0xC5,0xCC},
+ {0xC5,0xF3}, {0xF8,0xA9}, {0xF8,0xEF}, {0xA4,0xE4},
+ {0x9D,0xC7}, {0xD9,0x72}, {0xE9,0xAF}, {0xC6,0xD2},
+ {0x8B,0xCE}, {0xA6,0xAC}, {0xCA,0xF7}, {0xA7,0xF1},
+ {0xA7,0xEF}, {0xA7,0xF0}, {0xCC,0xC1}, {0xA9,0xF1},
+ {0xAC,0x46}, {0xCE,0xE7}, {0xCE,0xE8}, {0xAC,0x47},
+ {0xD1,0xCE}, {0xAE,0xC4}, {0xAE,0xC5}, {0xD1,0xCD},
+ {0xFC,0xC5}, {0xB1,0xD3}, {0xB1,0xCF}, {0xD5,0xA7},
+ {0xB1,0xD6}, {0xB1,0xD5}, {0xB1,0xCE}, {0xB1,0xD1},
+ {0xB1,0xD4}, {0xB1,0xD0}, {0xD9,0x76}, {0xB1,0xCD},
+ {0xB4,0xAF}, {0xFC,0xCB}, {0xB4,0xB1}, {0xB4,0xB2},
+ {0xD9,0x75}, {0xD9,0x78}, {0xB4,0xB0}, {0xD9,0x73},
+ {0xD9,0x77}, {0xD9,0x74}, {0x93,0xB3}, {0xB7,0x71},
+ {0xFC,0xCA}, {0xDD,0xBC}, {0xBA,0x56}, {0xE1,0xF4},
+ {0xBE,0xE3}, {0xBC,0xC4}, {0xE5,0xBD}, {0xBC,0xC5},
+ {0xBC,0xC6}, {0xE5,0xBF}, {0xE5,0xBE}, {0xE5,0xC0},
+ {0xE9,0xB1}, {0xE9,0xB0}, {0xEC,0xEF}, {0xEC,0xEE},
+ {0xC0,0xC4}, {0xC0,0xC5}, {0xF2,0x48}, {0xFC,0xC9},
+ {0x8D,0xAC}, {0xA4,0xE5}, {0xFB,0xC6}, {0x89,0x67},
+ {0x8C,0x7E}, {0xD9,0x79}, {0xB4,0xB4}, {0xB4,0xB3},
+ {0xDD,0xBD}, {0xEF,0xD8}, {0xC4,0xE3}, {0xF7,0xDE},
+ {0xA4,0xE6}, {0xAE,0xC6}, {0xB1,0xD8}, {0xB1,0xD7},
+ {0xD9,0x7A}, {0xD9,0x7B}, {0xB7,0x72}, {0xE1,0xF5},
+ {0xBA,0x57}, {0xE9,0xB2}, {0xA4,0xE7}, {0xA5,0xB8},
+ {0xA9,0xF2}, {0xCC,0xC2}, {0xCE,0xE9}, {0xAC,0x48},
+ {0xB1,0xD9}, {0xD9,0x7C}, {0xB4,0xB5}, {0xB7,0x73},
+ {0xE5,0xC1}, {0xE5,0xC2}, {0xFC,0xCD}, {0xEC,0xF0},
+ {0xC2,0x5F}, {0xF8,0xF0}, {0xA4,0xE8}, {0xCC,0xC3},
+ {0xA9,0xF3}, {0xAC,0x49}, {0x9C,0xF3}, {0xCE,0xEA},
+ {0xAE,0xC7}, {0xD1,0xD2}, {0xD1,0xD0}, {0xD1,0xD1},
+ {0xAE,0xC8}, {0xD1,0xCF}, {0xB1,0xDB}, {0xB1,0xDC},
+ {0xD5,0xA8}, {0xB1,0xDD}, {0xB1,0xDA}, {0xD9,0x7D},
+ {0xFC,0xD0}, {0xD9,0x7E}, {0xDD,0xBE}, {0x95,0xBB},
+ {0xBA,0x59}, {0xBA,0x58}, {0xEC,0xF1}, {0xEF,0xD9},
+ {0xF2,0x4A}, {0xF2,0x49}, {0xF4,0x4F}, {0xFC,0xD3},
+ {0xC9,0x5E}, {0xAC,0x4A}, {0xFC,0xD4}, {0xA4,0xE9},
+ {0xA5,0xB9}, {0xA6,0xAE}, {0xA6,0xAD}, {0xA6,0xAF},
+ {0xA6,0xB0}, {0xC9,0xEE}, {0xC9,0xED}, {0xCA,0xF8},
+ {0xA7,0xF2}, {0xCA,0xFB}, {0xCA,0xFA}, {0xCA,0xF9},
+ {0xCA,0xFC}, {0xA9,0xF4}, {0xCC,0xC9}, {0xCC,0xC5},
+ {0xCC,0xCE}, {0x8D,0xAE}, {0xA9,0xFB}, {0xA9,0xF9},
+ {0xCC,0xCA}, {0xCC,0xC6}, {0xCC,0xCD}, {0xA9,0xF8},
+ {0xAA,0x40}, {0xCC,0xC8}, {0xCC,0xC4}, {0xA9,0xFE},
+ {0xCC,0xCB}, {0xA9,0xF7}, {0xCC,0xCC}, {0xA9,0xFA},
+ {0xA9,0xFC}, {0xCC,0xD0}, {0xCC,0xCF}, {0xCC,0xC7},
+ {0xA9,0xF6}, {0xA9,0xF5}, {0xA9,0xFD}, {0xFC,0xD7},
+ {0xCE,0xEF}, {0xCE,0xF5}, {0x93,0xDB}, {0xAC,0x50},
+ {0xAC,0x4D}, {0xCE,0xEC}, {0xCE,0xF1}, {0xFE,0x63},
+ {0xAC,0x53}, {0xAC,0x4B}, {0xCE,0xF0}, {0xAC,0x4E},
+ {0xAC,0x51}, {0xCE,0xF3}, {0xAC,0x4C}, {0xCE,0xF8},
+ {0xAC,0x4F}, {0x93,0xD5}, {0xAC,0x52}, {0xCE,0xED},
+ {0xCE,0xF2}, {0xCE,0xF6}, {0xCE,0xEE}, {0xCE,0xEB},
+ {0xCE,0xF7}, {0xCE,0xF4}, {0xAE,0xD0}, {0xAE,0xC9},
+ {0xAE,0xCC}, {0xFC,0xDA}, {0xAE,0xCF}, {0xD1,0xD5},
+ {0x9B,0x71}, {0xAE,0xCA}, {0xD1,0xD3}, {0xFC,0xDD},
+ {0xAE,0xCE}, {0xAE,0xCB}, {0xD1,0xD6}, {0xAE,0xCD},
+ {0x8D,0xAF}, {0xFA,0xF2}, {0xD5,0xAC}, {0xB1,0xDF},
+ {0xD5,0xAB}, {0xD5,0xAD}, {0xB1,0xDE}, {0xB1,0xE3},
+ {0xD1,0xD4}, {0xD5,0xAA}, {0xD5,0xAE}, {0x93,0xD8},
+ {0xB1,0xE0}, {0xD5,0xA9}, {0xB1,0xE2}, {0xFC,0xDF},
+ {0xB1,0xE1}, {0xD9,0xA7}, {0x93,0xD3}, {0xD9,0xA2},
+ {0xB4,0xB6}, {0xB4,0xBA}, {0xB4,0xB7}, {0xD9,0xA5},
+ {0xD9,0xA8}, {0xFC,0xE1}, {0xB4,0xB8}, {0xB4,0xB9},
+ {0xB4,0xBE}, {0xDD,0xC7}, {0xD9,0xA6}, {0xB4,0xBC},
+ {0xD9,0xA3}, {0xD9,0xA1}, {0x8E,0x76}, {0xB4,0xBD},
+ {0xD9,0xA4}, {0xB7,0x79}, {0xFC,0x62}, {0xDD,0xBF},
+ {0xB7,0x76}, {0xB7,0x77}, {0xB7,0x75}, {0xDD,0xC4},
+ {0xDD,0xC3}, {0xDD,0xC0}, {0xB7,0x7B}, {0x93,0xD1},
+ {0xDD,0xC2}, {0xB4,0xBB}, {0x8D,0xB1}, {0xDD,0xC6},
+ {0xDD,0xC1}, {0xB7,0x78}, {0xB7,0x74}, {0xB7,0x7A},
+ {0xDD,0xC5}, {0x98,0x59}, {0xBA,0x5C}, {0xE1,0xF8},
+ {0xE1,0xF7}, {0xE1,0xF6}, {0xBA,0x5A}, {0xFB,0x52},
+ {0xBA,0x5B}, {0xE5,0xC5}, {0xE5,0xC8}, {0xBC,0xC8},
+ {0xFB,0x53}, {0xBC,0xC7}, {0xE5,0xC9}, {0xE5,0xC4},
+ {0xBC,0xCA}, {0xE5,0xC6}, {0xFB,0x4D}, {0xBC,0xC9},
+ {0xE5,0xC3}, {0x9C,0xBF}, {0xE5,0xC7}, {0xBE,0xE9},
+ {0xBE,0xE6}, {0xE9,0xBB}, {0xE9,0xBA}, {0xE9,0xB9},
+ {0xE9,0xB4}, {0x9B,0x72}, {0xE9,0xB5}, {0xBE,0xE7},
+ {0xBE,0xE4}, {0xBE,0xE8}, {0xE9,0xB3}, {0xBE,0xE5},
+ {0xE9,0xB6}, {0xE9,0xB7}, {0xE9,0xBC}, {0xFB,0x50},
+ {0x93,0xBE}, {0xE9,0xB8}, {0xEC,0xF2}, {0xC0,0xC7},
+ {0xEF,0xDC}, {0xC0,0xC6}, {0xEF,0xDA}, {0xEF,0xDB},
+ {0xC2,0x60}, {0xC3,0x6E}, {0xF2,0x4B}, {0xC3,0x6D},
+ {0xF4,0x51}, {0xF4,0x52}, {0xC4,0x66}, {0xF4,0x50},
+ {0xC4,0xE4}, {0xF7,0xDF}, {0xC5,0xCE}, {0xF8,0xAA},
+ {0xF8,0xAB}, {0xA4,0xEA}, {0x9D,0xF1}, {0xA6,0xB1},
+ {0xA6,0xB2}, {0xA7,0xF3}, {0xCC,0xD1}, {0xAC,0x54},
+ {0xAE,0xD1}, {0xB1,0xE4}, {0xB0,0xD2}, {0xB4,0xBF},
+ {0xB4,0xC0}, {0xB3,0xCC}, {0xD9,0xA9}, {0xFC,0xEB},
+ {0xB7,0x7C}, {0xE1,0xFA}, {0xE1,0xF9}, {0xA4,0xEB},
+ {0xA6,0xB3}, {0xCC,0xD2}, {0xAA,0x42}, {0xA0,0xBB},
+ {0xAA,0x41}, {0x9B,0x7E}, {0xCE,0xF9}, {0xCE,0xFA},
+ {0xD1,0xD7}, {0xD1,0xD8}, {0xAE,0xD2}, {0xAE,0xD3},
+ {0x8D,0xB3}, {0xAE,0xD4}, {0xD5,0xAF}, {0x8C,0x52},
+ {0xB1,0xE6}, {0xB4,0xC2}, {0x9A,0xE8}, {0xB4,0xC1},
+ {0xDD,0xC8}, {0xDF,0x7A}, {0xE1,0xFB}, {0xE9,0xBD},
+ {0x8E,0xDC}, {0xC2,0x61}, {0xC4,0x67}, {0xA4,0xEC},
+ {0xA5,0xBC}, {0xA5,0xBD}, {0xA5,0xBB}, {0xA5,0xBE},
+ {0xA5,0xBA}, {0xA6,0xB6}, {0xC9,0xF6}, {0xA6,0xB5},
+ {0xA6,0xB7}, {0x9C,0xF9}, {0xC9,0xF1}, {0xC9,0xF0},
+ {0xC9,0xF3}, {0xC9,0xF2}, {0xC9,0xF5}, {0xA6,0xB4},
+ {0xC9,0xEF}, {0xC9,0xF4}, {0xFA,0x50}, {0xCA,0xFD},
+ {0xA7,0xFD}, {0xCA,0xFE}, {0xCB,0x43}, {0xA7,0xFC},
+ {0xCB,0x47}, {0xCB,0x42}, {0xCB,0x45}, {0xA7,0xF5},
+ {0xA7,0xF6}, {0xA7,0xF7}, {0xA7,0xF8}, {0xA8,0x40},
+ {0xCB,0x41}, {0xA7,0xFA}, {0xA8,0x41}, {0xCB,0x40},
+ {0xCB,0x46}, {0xA7,0xF9}, {0xCB,0x44}, {0xA7,0xFB},
+ {0xA7,0xF4}, {0xA7,0xFE}, {0x98,0xE7}, {0xFC,0xF3},
+ {0xFC,0xF2}, {0xAA,0x57}, {0x8C,0xCA}, {0xCC,0xD4},
+ {0xAA,0x43}, {0xAA,0x4D}, {0xAA,0x4E}, {0xAA,0x46},
+ {0xAA,0x58}, {0xAA,0x48}, {0xCC,0xDC}, {0xAA,0x53},
+ {0xCC,0xD7}, {0xAA,0x49}, {0xCC,0xE6}, {0xCC,0xE7},
+ {0xCC,0xDF}, {0xCC,0xD8}, {0xAA,0x56}, {0xCC,0xE4},
+ {0xAA,0x51}, {0xAA,0x4F}, {0xCC,0xE5}, {0xCC,0xE3},
+ {0xCC,0xDB}, {0xCC,0xD3}, {0xCC,0xDA}, {0xAA,0x4A},
+ {0xAA,0x50}, {0xAA,0x44}, {0xCC,0xDE}, {0xCC,0xDD},
+ {0xCC,0xD5}, {0x93,0xE5}, {0xAA,0x52}, {0xCC,0xE1},
+ {0xCC,0xD6}, {0xAA,0x55}, {0xCC,0xE8}, {0xAA,0x45},
+ {0xAA,0x4C}, {0xCC,0xD9}, {0xCC,0xE2}, {0xAA,0x54},
+ {0xAA,0x47}, {0xAA,0x4B}, {0xCC,0xE0}, {0x9A,0x59},
+ {0x8D,0xB5}, {0xFD,0x4D}, {0xCF,0x5B}, {0xAC,0x5C},
+ {0xAC,0x69}, {0xFD,0x5E}, {0xCF,0x56}, {0xCF,0x4C},
+ {0xAC,0x62}, {0xCF,0x4A}, {0xAC,0x5B}, {0xCF,0x45},
+ {0xAC,0x65}, {0xCF,0x52}, {0xCE,0xFE}, {0xCF,0x41},
+ {0x8F,0x7D}, {0xCF,0x44}, {0xCE,0xFB}, {0xCF,0x51},
+ {0xCF,0x61}, {0xAC,0x60}, {0xCF,0x46}, {0xCF,0x58},
+ {0xCE,0xFD}, {0xCF,0x5F}, {0xCF,0x60}, {0xCF,0x63},
+ {0xCF,0x5A}, {0xCF,0x4B}, {0xCF,0x53}, {0xAC,0x66},
+ {0xAC,0x59}, {0xAC,0x61}, {0xAC,0x6D}, {0xAC,0x56},
+ {0xAC,0x58}, {0x95,0x47}, {0xFC,0xF6}, {0xCF,0x43},
+ {0xAC,0x6A}, {0xAC,0x63}, {0xCF,0x5D}, {0xCF,0x40},
+ {0xAC,0x6C}, {0xAC,0x67}, {0xCF,0x49}, {0xAC,0x6B},
+ {0xCF,0x50}, {0xCF,0x48}, {0xAC,0x64}, {0xCF,0x5C},
+ {0xCF,0x54}, {0xAC,0x5E}, {0xCF,0x62}, {0xCF,0x47},
+ {0xAC,0x5A}, {0xCF,0x59}, {0xCF,0x4F}, {0xAC,0x5F},
+ {0xCF,0x55}, {0xAC,0x57}, {0xCE,0xFC}, {0xAC,0x68},
+ {0xAE,0xE3}, {0xAC,0x5D}, {0xCF,0x4E}, {0xCF,0x4D},
+ {0xCF,0x42}, {0x92,0x50}, {0xCF,0x5E}, {0xCF,0x57},
+ {0x89,0x68}, {0xAC,0x55}, {0x8D,0xB6}, {0xFC,0xFB},
+ {0xA0,0x7D}, {0x98,0xFC}, {0x89,0x69}, {0xFE,0x4F},
+ {0x92,0x56}, {0xD1,0xEC}, {0xAE,0xEA}, {0xD1,0xED},
+ {0xD1,0xE1}, {0xAE,0xDF}, {0xAE,0xEB}, {0xD1,0xDA},
+ {0xFA,0xC9}, {0xD1,0xE3}, {0xD1,0xEB}, {0x93,0xE8},
+ {0xD1,0xD9}, {0xD1,0xF4}, {0xAE,0xD5}, {0xFC,0xF8},
+ {0xD1,0xF3}, {0xD1,0xEE}, {0xD1,0xEF}, {0xAE,0xDD},
+ {0xAE,0xE8}, {0xD1,0xE5}, {0xD1,0xE6}, {0xD1,0xF0},
+ {0xD1,0xE7}, {0xD1,0xE2}, {0xD1,0xDC}, {0xD1,0xDD},
+ {0xD1,0xEA}, {0xD1,0xE4}, {0x9C,0xE3}, {0xFD,0xA9},
+ {0xAE,0xD6}, {0xAE,0xDA}, {0xD1,0xF2}, {0xD1,0xDE},
+ {0xAE,0xE6}, {0xAE,0xE2}, {0xFC,0x44}, {0xAE,0xE5},
+ {0xAE,0xEC}, {0xAE,0xDB}, {0xAE,0xE7}, {0xD1,0xE9},
+ {0xAE,0xE9}, {0xAE,0xD8}, {0x96,0x40}, {0xAE,0xD7},
+ {0xD1,0xDB}, {0x8D,0xB8}, {0xD1,0xDF}, {0xAE,0xE0},
+ {0xD1,0xF1}, {0xD1,0xE8}, {0xD1,0xE0}, {0xAE,0xE4},
+ {0xAE,0xE1}, {0xAE,0xD9}, {0xAE,0xDC}, {0x9B,0x4A},
+ {0x8F,0xB9}, {0xFC,0xFE}, {0x89,0x6A}, {0xD5,0xC4},
+ {0xD5,0xB4}, {0xD5,0xB5}, {0xD5,0xB9}, {0xD5,0xC8},
+ {0xD5,0xC5}, {0xD5,0xBE}, {0xD5,0xBD}, {0xB1,0xED},
+ {0xD5,0xC1}, {0xD5,0xD0}, {0xD5,0xB0}, {0xD5,0xD1},
+ {0xD5,0xC3}, {0xD5,0xD5}, {0xD5,0xC9}, {0xB1,0xEC},
+ {0xD5,0xC7}, {0xB1,0xE7}, {0xB1,0xFC}, {0xB1,0xF2},
+ {0x8D,0xB9}, {0xB1,0xF6}, {0xB1,0xF5}, {0xD5,0xB1},
+ {0x91,0x7E}, {0xD5,0xCE}, {0xD5,0xD4}, {0xD5,0xCC},
+ {0xD5,0xD3}, {0xD5,0xC0}, {0xD5,0xB2}, {0xD5,0xD2},
+ {0xD5,0xC2}, {0xB1,0xEA}, {0xB1,0xF7}, {0xD5,0xCB},
+ {0xB1,0xF0}, {0x93,0xF4}, {0xD5,0xCA}, {0xD5,0xB3},
+ {0xB1,0xF8}, {0xB1,0xFA}, {0xD5,0xCD}, {0xB1,0xFB},
+ {0xB1,0xE9}, {0xD5,0xBA}, {0xD5,0xCF}, {0xFB,0x7C},
+ {0xB1,0xEF}, {0xB1,0xF9}, {0xD5,0xBC}, {0xD5,0xC6},
+ {0xD5,0xB7}, {0xD5,0xBB}, {0xB1,0xF4}, {0xD5,0xB6},
+ {0xB1,0xE8}, {0xB1,0xF1}, {0xB1,0xEE}, {0xD5,0xBF},
+ {0xAE,0xDE}, {0xD9,0xC0}, {0xB1,0xEB}, {0x93,0xE7},
+ {0x97,0xEF}, {0xFE,0x4A}, {0xFD,0x45}, {0xB1,0xF3},
+ {0x96,0xA5}, {0xD9,0xC3}, {0xD9,0xD9}, {0xD9,0xCE},
+ {0xB4,0xD6}, {0xFE,0xE0}, {0xB4,0xD1}, {0xD9,0xBD},
+ {0xB4,0xD2}, {0xD9,0xCD}, {0xD9,0xC6}, {0xD9,0xD3},
+ {0xB4,0xCE}, {0xD9,0xAB}, {0xD9,0xD5}, {0xB4,0xC4},
+ {0xD9,0xB3}, {0xB4,0xC7}, {0xB4,0xC6}, {0xB4,0xD7},
+ {0xD9,0xAD}, {0xD9,0xCF}, {0xD9,0xD0}, {0xB4,0xC9},
+ {0xB4,0xC5}, {0xD9,0xBB}, {0xB4,0xD0}, {0xD9,0xB6},
+ {0xD9,0xD1}, {0xB4,0xCC}, {0xD9,0xC9}, {0xD9,0xD6},
+ {0xD9,0xB0}, {0xD9,0xB5}, {0xD9,0xAF}, {0xB4,0xCB},
+ {0xD9,0xC2}, {0xDD,0xDE}, {0xD9,0xB1}, {0xB4,0xCF},
+ {0xD9,0xBA}, {0xD9,0xD2}, {0xB4,0xCA}, {0xD9,0xB7},
+ {0xD9,0xB4}, {0xD9,0xC5}, {0xB4,0xCD}, {0xB4,0xC3},
+ {0xB4,0xD9}, {0xD9,0xC8}, {0xD9,0xC7}, {0xFD,0x48},
+ {0xFD,0x47}, {0xFE,0xF2}, {0xFE,0x6A}, {0xD9,0xAC},
+ {0xB4,0xC8}, {0xD9,0xD4}, {0xD9,0xBC}, {0xD9,0xBE},
+ {0x8D,0xBD}, {0xD9,0xCB}, {0xD9,0xCA}, {0xD9,0xAA},
+ {0xB4,0xD3}, {0xB4,0xD5}, {0xD9,0xB2}, {0xD9,0xB9},
+ {0xD9,0xC1}, {0xB4,0xD4}, {0xD9,0xB8}, {0xD9,0xC4},
+ {0xD9,0xD7}, {0xD9,0xCC}, {0x9B,0xA1}, {0x8C,0xA2},
+ {0x9A,0xB7}, {0x8E,0xFC}, {0xD9,0xD8}, {0xD9,0xAE},
+ {0x9F,0xA1}, {0xDD,0xF2}, {0xB7,0xA6}, {0xDD,0xF0},
+ {0xDD,0xDB}, {0xDD,0xE0}, {0xDD,0xD9}, {0xFD,0x51},
+ {0xDD,0xEC}, {0xDD,0xCB}, {0xDD,0xD2}, {0xDD,0xEA},
+ {0xDD,0xF4}, {0xDD,0xDC}, {0xFA,0xAD}, {0xDD,0xCF},
+ {0xDD,0xE2}, {0xDD,0xE7}, {0xDD,0xD3}, {0x8D,0xBE},
+ {0xDD,0xE4}, {0xDD,0xD0}, {0x89,0xA4}, {0xDD,0xD7},
+ {0xDD,0xD8}, {0xB7,0xA8}, {0xDD,0xEB}, {0xDD,0xE9},
+ {0xDD,0xCC}, {0xDD,0xEE}, {0xDD,0xEF}, {0xDD,0xF1},
+ {0xB7,0xAC}, {0xB7,0xA4}, {0x9A,0xD9}, {0xD5,0xB8},
+ {0xDD,0xD4}, {0xDD,0xE6}, {0xDD,0xD5}, {0xB7,0xA1},
+ {0xB7,0xB1}, {0xDD,0xED}, {0xB7,0xAF}, {0xB7,0xAB},
+ {0xDD,0xCA}, {0xB7,0xA3}, {0xFD,0x4E}, {0xDD,0xCD},
+ {0xB7,0xB0}, {0x8D,0xC0}, {0xDD,0xDD}, {0xDD,0xC9},
+ {0x97,0xF0}, {0xB7,0xA9}, {0xDD,0xE1}, {0xDD,0xD1},
+ {0xB7,0xAA}, {0xDD,0xDA}, {0xB7,0x7E}, {0xB4,0xD8},
+ {0xDD,0xE3}, {0xD9,0xBF}, {0xDD,0xCE}, {0x93,0xB4},
+ {0xFD,0x44}, {0xDD,0xE8}, {0xB7,0xA5}, {0xDD,0xE5},
+ {0xB7,0xA2}, {0xDD,0xDF}, {0xB7,0xAD}, {0xDD,0xD6},
+ {0xDD,0xF3}, {0x9F,0xA7}, {0xB7,0xA7}, {0xDE,0xC6},
+ {0x8D,0xC2}, {0xB7,0xAE}, {0x99,0xB6}, {0xE2,0x4A},
+ {0xE2,0x48}, {0xE2,0x5E}, {0xE2,0x46}, {0xE2,0x58},
+ {0xB7,0x7D}, {0xBA,0x5F}, {0xE2,0x42}, {0xE2,0x5D},
+ {0xFD,0x52}, {0xE2,0x47}, {0xE2,0x55}, {0xBA,0x64},
+ {0xBA,0x5D}, {0xE2,0x5B}, {0x8D,0xC1}, {0xE2,0x40},
+ {0xE2,0x5A}, {0x8E,0x46}, {0xBA,0x6F}, {0xE2,0x51},
+ {0xE2,0x61}, {0xBA,0x6D}, {0xE2,0x49}, {0xBA,0x5E},
+ {0xE2,0x4B}, {0xE2,0x59}, {0xBA,0x67}, {0xE2,0x44},
+ {0xBA,0x6B}, {0xBA,0x61}, {0xE2,0x4D}, {0xE2,0x43},
+ {0xE1,0xFC}, {0xA0,0xD1}, {0xE2,0x57}, {0xBA,0x68},
+ {0xE2,0x60}, {0xE1,0xFD}, {0xBA,0x65}, {0xE2,0x53},
+ {0xBA,0x66}, {0xE2,0x45}, {0xE2,0x50}, {0xE2,0x4C},
+ {0xE2,0x4E}, {0x9F,0xCA}, {0xBA,0x60}, {0xE2,0x5F},
+ {0xBA,0x6E}, {0xE2,0x4F}, {0xE2,0x62}, {0xE1,0xFE},
+ {0xE2,0x54}, {0xBA,0x63}, {0xBA,0x6C}, {0xBA,0x6A},
+ {0xE2,0x41}, {0xE2,0x56}, {0xBA,0x69}, {0x92,0xCF},
+ {0xBA,0x62}, {0xE2,0x52}, {0x9C,0xF4}, {0x8D,0xC4},
+ {0xE2,0x5C}, {0xFD,0x41}, {0xE5,0xD5}, {0xE5,0xD1},
+ {0xE5,0xCD}, {0xE5,0xE1}, {0xE5,0xDE}, {0xBC,0xCD},
+ {0x9B,0x4C}, {0xE5,0xE5}, {0xE5,0xD4}, {0xBC,0xD8},
+ {0xE5,0xDB}, {0xE5,0xD0}, {0xE5,0xDA}, {0xBC,0xD5},
+ {0xE5,0xEE}, {0xE5,0xEB}, {0xE5,0xDD}, {0xE5,0xCE},
+ {0xFD,0x57}, {0xFC,0xEF}, {0xE5,0xE2}, {0xE5,0xE4},
+ {0xBC,0xD1}, {0xE5,0xD8}, {0xE5,0xD3}, {0xE5,0xCA},
+ {0xBC,0xCE}, {0xBC,0xD6}, {0x9C,0xDE}, {0xE5,0xE7},
+ {0xBC,0xD7}, {0xE5,0xCB}, {0xE5,0xED}, {0xE5,0xE0},
+ {0xE5,0xE6}, {0xBC,0xD4}, {0xFD,0x42}, {0x98,0x6C},
+ {0xE5,0xE3}, {0xE5,0xEA}, {0xBC,0xD9}, {0xBC,0xD3},
+ {0xE5,0xDC}, {0xE5,0xCF}, {0xE5,0xEF}, {0xE5,0xCC},
+ {0xE5,0xE8}, {0xBC,0xD0}, {0x97,0xF9}, {0xE5,0xD6},
+ {0x95,0x58}, {0xE5,0xD7}, {0xBC,0xCF}, {0xBC,0xCC},
+ {0xE5,0xD2}, {0xBC,0xD2}, {0xBC,0xCB}, {0xE5,0xE9},
+ {0xE5,0xEC}, {0xE5,0xD9}, {0xE9,0xCA}, {0x98,0x5E},
+ {0xFE,0x7B}, {0x94,0xCD}, {0xE9,0xC2}, {0x93,0xEE},
+ {0xE9,0xBE}, {0xBE,0xF6}, {0xBE,0xEB}, {0xBE,0xF0},
+ {0xBE,0xEC}, {0xE9,0xCC}, {0xE9,0xD7}, {0xBE,0xEA},
+ {0xE9,0xC4}, {0xE9,0xCD}, {0xE5,0xDF}, {0xE9,0xCE},
+ {0x8C,0xA3}, {0xBE,0xF1}, {0xFD,0x5A}, {0xE9,0xDD},
+ {0xBE,0xF5}, {0xBE,0xF8}, {0xE9,0xC0}, {0xBE,0xF4},
+ {0x93,0xF5}, {0xE9,0xDB}, {0xE9,0xDC}, {0xE9,0xD2},
+ {0xE9,0xD1}, {0xE9,0xC9}, {0x93,0xEF}, {0x8E,0xEA},
+ {0xE9,0xD3}, {0xE9,0xDA}, {0xE9,0xD9}, {0x8F,0x5B},
+ {0xBE,0xEF}, {0xBE,0xED}, {0xE9,0xCB}, {0xE9,0xC8},
+ {0xE9,0xC5}, {0xE9,0xD8}, {0xBE,0xF7}, {0xE9,0xD6},
+ {0xBE,0xF3}, {0xBE,0xF2}, {0x8C,0x5E}, {0xE9,0xD0},
+ {0x8D,0xC6}, {0xE9,0xBF}, {0xE9,0xC1}, {0xE9,0xC3},
+ {0xE9,0xD5}, {0xE9,0xCF}, {0xBE,0xEE}, {0xE9,0xC6},
+ {0xE9,0xD4}, {0x8D,0xC8}, {0x8D,0xC7}, {0xE9,0xC7},
+ {0x93,0xF7}, {0xC0,0xCF}, {0xED,0x45}, {0xC0,0xC8},
+ {0xEC,0xF5}, {0x8D,0xC9}, {0xED,0x41}, {0xC0,0xCA},
+ {0xED,0x48}, {0xEC,0xFC}, {0xEC,0xF7}, {0xFB,0xF2},
+ {0xED,0x49}, {0xEC,0xF3}, {0xEC,0xFE}, {0x96,0x70},
+ {0xC0,0xD1}, {0xED,0x44}, {0xED,0x4A}, {0xEC,0xFD},
+ {0xC0,0xC9}, {0xED,0x40}, {0xEC,0xF4}, {0xC0,0xD0},
+ {0x8D,0xCB}, {0xED,0x47}, {0xEC,0xF9}, {0xC0,0xCC},
+ {0xFD,0x5C}, {0xEC,0xFB}, {0xEC,0xF8}, {0xC0,0xD2},
+ {0xEC,0xFA}, {0xC0,0xCB}, {0xC0,0xCE}, {0xED,0x43},
+ {0xEC,0xF6}, {0xED,0x46}, {0x8F,0x65}, {0xED,0x42},
+ {0x8D,0xCD}, {0xC2,0x63}, {0xEF,0xE7}, {0xC2,0x68},
+ {0xC2,0x69}, {0x9D,0xA8}, {0x94,0xF9}, {0xC2,0x62},
+ {0xEF,0xE6}, {0x8D,0xCE}, {0xEF,0xE3}, {0xEF,0xE4},
+ {0xC2,0x66}, {0xEF,0xDE}, {0xEF,0xE2}, {0xC2,0x65},
+ {0xEF,0xDF}, {0x93,0xEA}, {0xC2,0x67}, {0xC2,0x64},
+ {0xEF,0xDD}, {0xEF,0xE1}, {0xEF,0xE5}, {0xFD,0x5F},
+ {0x93,0xF0}, {0x9F,0xB6}, {0xF2,0x51}, {0xF2,0x4E},
+ {0xF2,0x57}, {0xF2,0x56}, {0xF2,0x54}, {0xF2,0x4F},
+ {0xC3,0x72}, {0x8D,0xCF}, {0x97,0x63}, {0xF2,0x50},
+ {0xC3,0x71}, {0xC0,0xCD}, {0xF2,0x53}, {0xC3,0x70},
+ {0xF2,0x58}, {0xF2,0x52}, {0xF2,0x4D}, {0xEF,0xE0},
+ {0xC3,0x6F}, {0xF2,0x4C}, {0xF4,0x56}, {0xF4,0x55},
+ {0xF2,0x55}, {0xC4,0x68}, {0xF4,0x59}, {0xF4,0x5A},
+ {0xF4,0x54}, {0xF4,0x58}, {0xF4,0x53}, {0x8D,0xD0},
+ {0xF5,0xD1}, {0xF4,0x57}, {0xC4,0xE7}, {0xC4,0xE5},
+ {0xF5,0xCF}, {0xF5,0xD2}, {0xF5,0xCE}, {0xF5,0xD0},
+ {0xC4,0xE6}, {0x93,0xF1}, {0xF6,0xE5}, {0xF6,0xE6},
+ {0xC5,0x76}, {0xF6,0xE4}, {0xF7,0xE2}, {0xC5,0xCF},
+ {0xF7,0xE0}, {0xF7,0xE1}, {0xF8,0xAC}, {0xC6,0x56},
+ {0xF8,0xF3}, {0xF8,0xF1}, {0xF8,0xF2}, {0xF8,0xF4},
+ {0xFD,0x62}, {0xF9,0xBB}, {0xA4,0xED}, {0xA6,0xB8},
+ {0xAA,0x59}, {0xCC,0xE9}, {0xCF,0x64}, {0xD1,0xF5},
+ {0xD1,0xF7}, {0xD1,0xF6}, {0xD1,0xF8}, {0xB1,0xFD},
+ {0xD5,0xD7}, {0xD1,0xF9}, {0xFD,0x65}, {0xD5,0xD6},
+ {0xD5,0xD8}, {0xD5,0xD9}, {0xD9,0xDA}, {0xB4,0xDB},
+ {0xD9,0xDB}, {0xD9,0xDD}, {0xB4,0xDC}, {0xB4,0xDA},
+ {0xD9,0xDC}, {0xDD,0xFA}, {0xDD,0xF8}, {0xDD,0xF7},
+ {0xDD,0xF6}, {0xDD,0xF5}, {0xB7,0xB2}, {0xDD,0xF9},
+ {0xBA,0x70}, {0xE2,0x63}, {0xE2,0x65}, {0xBA,0x71},
+ {0xE2,0x64}, {0xBC,0xDB}, {0xBC,0xDA}, {0xE5,0xF0},
+ {0x9F,0xDB}, {0xE9,0xDF}, {0xE9,0xDE}, {0xE9,0xE0},
+ {0x93,0xF8}, {0xBE,0xF9}, {0xED,0x4B}, {0xC0,0xD3},
+ {0xEF,0xE8}, {0xC2,0x6A}, {0xF2,0x59}, {0xC5,0x77},
+ {0xA4,0xEE}, {0xA5,0xBF}, {0xA6,0xB9}, {0xA8,0x42},
+ {0xAA,0x5A}, {0xAA,0x5B}, {0xAC,0x6E}, {0xD1,0xFA},
+ {0x8B,0xF7}, {0xB7,0xB3}, {0xFD,0x66}, {0xE6,0xD1},
+ {0xBE,0xFA}, {0xC2,0x6B}, {0xA4,0xEF}, {0x8B,0xCF},
+ {0xA6,0xBA}, {0xCC,0xEB}, {0xAA,0x5C}, {0xCC,0xEA},
+ {0x8D,0xD1}, {0xCF,0x65}, {0xAC,0x6F}, {0xCF,0x66},
+ {0xAC,0x70}, {0xD1,0xFC}, {0xAE,0xEE}, {0xAE,0xED},
+ {0xD5,0xDE}, {0xD5,0xDC}, {0xD5,0xDD}, {0xD5,0xDB},
+ {0xD5,0xDA}, {0xD9,0xDE}, {0xD9,0xE1}, {0xB4,0xDE},
+ {0xD9,0xDF}, {0xB4,0xDD}, {0xD9,0xE0}, {0xDD,0xFB},
+ {0xE2,0x66}, {0xE2,0x67}, {0xE2,0x68}, {0xE5,0xF3},
+ {0xE5,0xF2}, {0xBC,0xDC}, {0xE5,0xF1}, {0xE5,0xF4},
+ {0xE9,0xE1}, {0xE9,0xE2}, {0xE9,0xE3}, {0xED,0x4C},
+ {0xC0,0xD4}, {0xC2,0x6C}, {0xF2,0x5A}, {0xC4,0xE8},
+ {0xC9,0x5F}, {0xAC,0x71}, {0xCF,0x67}, {0xAE,0xEF},
+ {0xB1,0xFE}, {0xB4,0xDF}, {0xD9,0xE2}, {0xB7,0xB5},
+ {0xB7,0xB4}, {0x8D,0xD2}, {0xE2,0x69}, {0xE2,0x6A},
+ {0xBC,0xDD}, {0xBC,0xDE}, {0xE9,0xE5}, {0xE9,0xE4},
+ {0xEF,0xE9}, {0xF7,0xE3}, {0xA4,0xF0}, {0xC9,0x60},
+ {0xA5,0xC0}, {0xA8,0x43}, {0xCB,0x48}, {0xAC,0x72},
+ {0xB7,0xB6}, {0xA4,0xF1}, {0xCF,0x68}, {0xAC,0x73},
+ {0xCF,0x69}, {0xC0,0xD5}, {0xA4,0xF2}, {0xFD,0x71},
+ {0xCC,0xEC}, {0xCF,0x6A}, {0xFD,0x6F}, {0xD2,0x42},
+ {0xD2,0x41}, {0xD1,0xFE}, {0xD1,0xFD}, {0xD2,0x43},
+ {0xD2,0x40}, {0x8D,0xD3}, {0xB2,0x40}, {0xB2,0x41},
+ {0xB4,0xE0}, {0xD9,0xE3}, {0xD9,0xE4}, {0xD9,0xE5},
+ {0xDE,0x41}, {0xDE,0x42}, {0xDE,0x40}, {0x9F,0xE7},
+ {0xDD,0xFD}, {0xDD,0xFE}, {0xB7,0xB7}, {0xE2,0x6B},
+ {0xE5,0xF7}, {0xE5,0xF6}, {0xE5,0xF5}, {0xE5,0xF8},
+ {0xE9,0xE7}, {0xE9,0xE6}, {0xBE,0xFB}, {0xE9,0xE8},
+ {0xC0,0xD6}, {0xED,0x4D}, {0xEF,0xEA}, {0xF2,0x5B},
+ {0xF6,0xE7}, {0xA4,0xF3}, {0xA5,0xC2}, {0xA5,0xC1},
+ {0xAA,0x5D}, {0xC9,0x61}, {0xC9,0x7E}, {0xA6,0xBB},
+ {0xC9,0xF7}, {0xCB,0x49}, {0xCB,0x4A}, {0xAA,0x5E},
+ {0x90,0xBD}, {0xCC,0xED}, {0xAC,0x74}, {0xCF,0x6B},
+ {0xCF,0x6C}, {0xAE,0xF0}, {0xAE,0xF4}, {0xD2,0x44},
+ {0xAE,0xF3}, {0xAE,0xF1}, {0xAE,0xF2}, {0xD5,0xDF},
+ {0xB2,0x42}, {0xB4,0xE3}, {0xB4,0xE1}, {0xB4,0xE2},
+ {0xD9,0xE6}, {0x9F,0xD0}, {0xBA,0x72}, {0xA4,0xF4},
+ {0x8B,0xD0}, {0xC9,0xA1}, {0xFD,0x72}, {0xA5,0xC3},
+ {0x9C,0xAE}, {0x8B,0xD1}, {0xC9,0xA4}, {0x8A,0xDB},
+ {0xA5,0xC6}, {0xC9,0xA3}, {0xA5,0xC5}, {0xA5,0xC4},
+ {0xA8,0x44}, {0xC9,0xA2}, {0xC9,0xF8}, {0xFA,0xE4},
+ {0xC9,0xFC}, {0xC9,0xFE}, {0xCA,0x40}, {0xA6,0xC5},
+ {0xA6,0xC6}, {0xC9,0xFB}, {0xA6,0xC1}, {0xC9,0xF9},
+ {0xC9,0xFD}, {0xA6,0xC2}, {0xA6,0xBD}, {0x95,0xCE},
+ {0xA6,0xBE}, {0xFD,0x76}, {0xA6,0xC4}, {0xC9,0xFA},
+ {0xA6,0xBC}, {0xA8,0x45}, {0xA6,0xBF}, {0xA6,0xC0},
+ {0xA6,0xC3}, {0xCB,0x5B}, {0xCB,0x59}, {0xCB,0x4C},
+ {0xA8,0x51}, {0xCB,0x53}, {0xA8,0x4C}, {0xCB,0x4D},
+ {0xCB,0x55}, {0xFB,0x62}, {0xCB,0x52}, {0xA8,0x4F},
+ {0xCB,0x51}, {0xA8,0x56}, {0xCB,0x5A}, {0xA8,0x58},
+ {0x8D,0xD4}, {0xA8,0x5A}, {0xCB,0x4B}, {0xFD,0x78},
+ {0xA8,0x4D}, {0xCB,0x5C}, {0xA8,0x54}, {0xA8,0x57},
+ {0x8E,0xE3}, {0xCD,0x45}, {0xA8,0x47}, {0xA8,0x5E},
+ {0xA8,0x55}, {0xCB,0x4E}, {0xA8,0x4A}, {0xA8,0x59},
+ {0xCB,0x56}, {0xA8,0x48}, {0xA8,0x49}, {0xCD,0x43},
+ {0xCB,0x4F}, {0xA8,0x50}, {0xA8,0x5B}, {0xCB,0x5D},
+ {0xCB,0x50}, {0xA8,0x4E}, {0xA8,0x53}, {0xCC,0xEE},
+ {0xA8,0x5C}, {0xCB,0x57}, {0xA8,0x52}, {0xA8,0x5D},
+ {0xA8,0x46}, {0xCB,0x54}, {0xA8,0x4B}, {0xCB,0x58},
+ {0xCD,0x44}, {0x90,0x76}, {0x98,0xC6}, {0x8D,0xD5},
+ {0xAA,0x6A}, {0xAA,0x7A}, {0xCC,0xF5}, {0xAA,0x71},
+ {0x97,0xD1}, {0xCD,0x4B}, {0xAA,0x62}, {0x9E,0xB6},
+ {0xAA,0x65}, {0xCD,0x42}, {0xCC,0xF3}, {0xCC,0xF7},
+ {0xAA,0x6D}, {0xAA,0x6F}, {0xCC,0xFA}, {0xAA,0x76},
+ {0xAA,0x68}, {0xAA,0x66}, {0xAA,0x67}, {0xAA,0x75},
+ {0xCD,0x47}, {0xAA,0x70}, {0xCC,0xF9}, {0xCC,0xFB},
+ {0xAA,0x6E}, {0xAA,0x73}, {0xCC,0xFC}, {0xCD,0x4A},
+ {0xAC,0x75}, {0xAA,0x79}, {0xFA,0xC7}, {0xAA,0x63},
+ {0xCD,0x49}, {0xA0,0x42}, {0xCD,0x4D}, {0xCC,0xF8},
+ {0xCD,0x4F}, {0xCD,0x40}, {0xAA,0x6C}, {0xCC,0xF4},
+ {0xAA,0x6B}, {0xAA,0x7D}, {0xAA,0x72}, {0xCC,0xF2},
+ {0xCF,0x75}, {0xAA,0x78}, {0xAA,0x7C}, {0xCD,0x41},
+ {0xCD,0x46}, {0x98,0x73}, {0xAA,0x7E}, {0xAA,0x77},
+ {0xAA,0x69}, {0xAA,0x5F}, {0xAA,0x64}, {0xCC,0xF6},
+ {0xAA,0x60}, {0xCD,0x4E}, {0x9F,0xFC}, {0xCC,0xF0},
+ {0xCC,0xEF}, {0xCC,0xFD}, {0xCC,0xF1}, {0xAA,0x7B},
+ {0xAE,0xF5}, {0xAA,0x74}, {0xCC,0xFE}, {0xAA,0x61},
+ {0xAC,0xA6}, {0xCD,0x4C}, {0x8C,0xA5}, {0xCF,0x7C},
+ {0xCF,0xA1}, {0x8D,0xD7}, {0xCF,0xA4}, {0xCF,0x77},
+ {0x92,0xFB}, {0x8D,0xD8}, {0xCF,0xA7}, {0xCF,0xAA},
+ {0xCF,0xAC}, {0xCF,0x74}, {0xAC,0x76}, {0xAC,0x7B},
+ {0xD2,0x49}, {0xAC,0xAD}, {0xCF,0xA5}, {0xCF,0xAD},
+ {0xCF,0x7B}, {0xCF,0x73}, {0xD2,0x64}, {0xAC,0x7E},
+ {0xCF,0xA2}, {0xCF,0x78}, {0xCF,0x7A}, {0xAC,0xA5},
+ {0xCF,0x7D}, {0xAC,0x7D}, {0xCF,0x70}, {0xCF,0xA8},
+ {0xCF,0xAB}, {0x94,0x4F}, {0xAC,0x7A}, {0x8D,0xD9},
+ {0xAC,0xA8}, {0xCF,0x6D}, {0xAC,0xAA}, {0xAC,0x78},
+ {0xAC,0xAE}, {0xCF,0xA9}, {0xCF,0x6F}, {0xAC,0xAB},
+ {0xD2,0x5E}, {0xCD,0x48}, {0xAC,0x7C}, {0xAC,0x77},
+ {0xCF,0x76}, {0xCF,0x6E}, {0xAC,0xAC}, {0xAC,0xA4},
+ {0xCF,0xA3}, {0xAC,0xA9}, {0xAC,0xA7}, {0xCF,0x79},
+ {0xAC,0xA1}, {0xCF,0x71}, {0xAC,0xA2}, {0xAC,0xA3},
+ {0xCF,0x72}, {0xCF,0xA6}, {0xAC,0x79}, {0xCF,0x7E},
+ {0x89,0x6B}, {0x97,0xCE}, {0xD2,0x4C}, {0xAE,0xFD},
+ {0xAF,0x43}, {0xFA,0xF3}, {0xFD,0xAE}, {0xD2,0x55},
+ {0xD2,0x5B}, {0xD2,0x57}, {0xD2,0x4A}, {0xD2,0x4D},
+ {0xD2,0x46}, {0xD2,0x47}, {0xAF,0x4A}, {0xAE,0xFA},
+ {0xD2,0x56}, {0xD2,0x5F}, {0xAF,0x45}, {0xAE,0xF6},
+ {0xAF,0x40}, {0xD2,0x4E}, {0xAF,0x42}, {0xD2,0x4F},
+ {0xD2,0x59}, {0xFB,0xAF}, {0x92,0xB7}, {0xAF,0x44},
+ {0xD2,0x68}, {0xD2,0x48}, {0xAE,0xFC}, {0xAE,0xFB},
+ {0xAF,0x48}, {0xD2,0x45}, {0xD2,0x66}, {0xD2,0x5A},
+ {0xD2,0x67}, {0xD2,0x61}, {0xD2,0x53}, {0xD2,0x62},
+ {0x8D,0xDA}, {0xD2,0x5C}, {0xD2,0x65}, {0xD2,0x63},
+ {0xAF,0x49}, {0xD2,0x54}, {0xAE,0xF9}, {0xAE,0xF8},
+ {0xAF,0x41}, {0xAF,0x47}, {0xD2,0x60}, {0xAF,0x46},
+ {0xD2,0x51}, {0xB2,0x43}, {0x9C,0x5A}, {0xD2,0x69},
+ {0xD2,0x50}, {0xD2,0x4B}, {0xAE,0xFE}, {0xAF,0x4B},
+ {0xAE,0xF7}, {0xFD,0xAD}, {0xD2,0x58}, {0xD2,0x5D},
+ {0x8D,0xDC}, {0x94,0x44}, {0xB2,0x65}, {0xD5,0xE1},
+ {0xD5,0xE5}, {0xB2,0x52}, {0xB2,0x50}, {0x8D,0xDD},
+ {0xB2,0x47}, {0xD5,0xE3}, {0xD5,0xE2}, {0xB2,0x5B},
+ {0xD5,0xE8}, {0xB2,0x55}, {0xA0,0xD6}, {0xD5,0xFA},
+ {0xD6,0x47}, {0xB2,0x44}, {0xD5,0xF7}, {0xD5,0xF0},
+ {0xB2,0x67}, {0xD5,0xE0}, {0xD5,0xFC}, {0xB2,0x64},
+ {0xB2,0x58}, {0xB2,0x63}, {0xB2,0x4E}, {0xD5,0xEC},
+ {0xD5,0xFE}, {0xD5,0xF6}, {0xB2,0x4F}, {0xB2,0x49},
+ {0xD6,0x45}, {0xD5,0xFD}, {0xD6,0x40}, {0xB2,0x51},
+ {0xB2,0x59}, {0xD6,0x42}, {0xD5,0xEA}, {0xD5,0xFB},
+ {0xD5,0xEF}, {0xD6,0x44}, {0xB2,0x5E}, {0xB2,0x46},
+ {0xB2,0x5C}, {0xD5,0xF4}, {0xD5,0xF2}, {0xD5,0xF3},
+ {0xB2,0x53}, {0xD5,0xEE}, {0xD5,0xED}, {0xB2,0x48},
+ {0xD5,0xE7}, {0xD6,0x46}, {0xB2,0x4A}, {0xD5,0xF1},
+ {0xB2,0x68}, {0xB2,0x62}, {0xD5,0xE6}, {0xB2,0x5F},
+ {0xB2,0x5D}, {0xB2,0x66}, {0xD5,0xF8}, {0xB2,0x61},
+ {0xD2,0x52}, {0xD5,0xF9}, {0xB2,0x60}, {0xD6,0x41},
+ {0xB2,0x45}, {0xD5,0xF5}, {0xB2,0x57}, {0xD5,0xE9},
+ {0xB2,0x56}, {0xB2,0x54}, {0xB2,0x4C}, {0xB2,0x4B},
+ {0xD9,0xE7}, {0xD6,0x43}, {0x8C,0x41}, {0xD5,0xEB},
+ {0x97,0xD5}, {0xD9,0xFC}, {0x94,0x4A}, {0xB2,0x4D},
+ {0x94,0x4D}, {0x97,0xCB}, {0x8D,0xDE}, {0x8D,0xDF},
+ {0xB5,0x41}, {0xB2,0x5A}, {0xB4,0xEE}, {0xD9,0xF6},
+ {0xB4,0xFC}, {0xD9,0xEA}, {0xB4,0xEB}, {0xB4,0xE7},
+ {0xDA,0x49}, {0xB4,0xED}, {0xB4,0xF1}, {0xB4,0xEC},
+ {0xB4,0xF5}, {0xDA,0x4D}, {0xDA,0x44}, {0x8D,0xE0},
+ {0xFE,0xF9}, {0xD9,0xF1}, {0xB4,0xFA}, {0xB4,0xF4},
+ {0xD9,0xFD}, {0xB4,0xE4}, {0xDA,0x4A}, {0xDA,0x43},
+ {0xB4,0xE8}, {0xD9,0xF7}, {0xB4,0xF7}, {0xDA,0x55},
+ {0xDA,0x56}, {0xB4,0xE5}, {0xDA,0x48}, {0xB4,0xF9},
+ {0xD9,0xFB}, {0xD9,0xED}, {0xD9,0xEE}, {0xB4,0xFD},
+ {0xD9,0xF2}, {0xD9,0xF9}, {0xD9,0xF3}, {0xB4,0xFB},
+ {0xB5,0x44}, {0xD9,0xEF}, {0xD9,0xE8}, {0xD9,0xE9},
+ {0xD9,0xEB}, {0xB4,0xEA}, {0xD9,0xF8}, {0xB4,0xF8},
+ {0xB5,0x42}, {0xFD,0xC0}, {0xFC,0xF9}, {0xD9,0xFA},
+ {0xDA,0x53}, {0xDA,0x4B}, {0xB4,0xE6}, {0xDA,0x51},
+ {0xB4,0xF2}, {0xB4,0xF0}, {0xFB,0x7E}, {0xDA,0x57},
+ {0xB4,0xEF}, {0xDA,0x41}, {0xD9,0xF4}, {0xD9,0xFE},
+ {0xB5,0x47}, {0xDA,0x45}, {0xDA,0x42}, {0xD9,0xF0},
+ {0xB5,0x43}, {0xDA,0x4F}, {0xDA,0x4C}, {0xDA,0x54},
+ {0xB4,0xE9}, {0xDA,0x40}, {0xB5,0x46}, {0xDA,0x47},
+ {0xB4,0xF3}, {0xB4,0xF6}, {0xDA,0x46}, {0xB5,0x45},
+ {0xD9,0xF5}, {0xD5,0xE4}, {0x92,0xB3}, {0xDA,0x50},
+ {0xDA,0x4E}, {0xDA,0x52}, {0xFD,0xAF}, {0x8D,0xE1},
+ {0xD9,0xEC}, {0xB5,0x40}, {0x95,0xD3}, {0xDE,0x61},
+ {0xDE,0x60}, {0xDE,0x46}, {0xB7,0xBD}, {0xDE,0x5F},
+ {0xDE,0x49}, {0xDE,0x4A}, {0xB7,0xC7}, {0xDE,0x68},
+ {0xB7,0xC2}, {0xDE,0x5E}, {0x89,0xC1}, {0xDE,0x43},
+ {0xB7,0xC8}, {0xB7,0xBE}, {0xDE,0x52}, {0xDE,0x48},
+ {0xDE,0x4B}, {0xDE,0x63}, {0xB7,0xB8}, {0xDE,0x6A},
+ {0xDE,0x62}, {0xB7,0xC1}, {0xDE,0x57}, {0xB7,0xCC},
+ {0xB7,0xCB}, {0xB7,0xC5}, {0xDE,0x69}, {0xB7,0xB9},
+ {0xDE,0x55}, {0xDE,0x4C}, {0xDE,0x59}, {0xDE,0x65},
+ {0xB7,0xCD}, {0xFD,0x68}, {0xB7,0xBB}, {0xDE,0x54},
+ {0x9C,0xB7}, {0xDE,0x4D}, {0xB7,0xC4}, {0x8D,0xE3},
+ {0xB7,0xC3}, {0xDE,0x50}, {0xDE,0x5A}, {0xDE,0x64},
+ {0xDE,0x47}, {0xDE,0x51}, {0xB7,0xBC}, {0xDE,0x5B},
+ {0xB7,0xC9}, {0xB7,0xC0}, {0xDE,0x4E}, {0xB7,0xBF},
+ {0xDE,0x45}, {0xDE,0x53}, {0xDE,0x67}, {0xB4,0xFE},
+ {0xBA,0xB0}, {0xDE,0x56}, {0xE2,0x6C}, {0xDE,0x58},
+ {0xDE,0x66}, {0xB7,0xC6}, {0xDE,0x4F}, {0xB7,0xBA},
+ {0xB7,0xCA}, {0xBC,0xF0}, {0xDE,0x44}, {0xDE,0x5D},
+ {0xFA,0xC0}, {0x8D,0xE5}, {0xFA,0x64}, {0xDE,0x5C},
+ {0x89,0x47}, {0x8D,0xE4}, {0x8D,0xE7}, {0x8D,0xE8},
+ {0xE2,0xAA}, {0xBA,0xAD}, {0xE2,0x7D}, {0xE2,0xA4},
+ {0xBA,0xA2}, {0xE2,0x6E}, {0xBA,0xAF}, {0xBA,0x77},
+ {0xE2,0x6D}, {0xE2,0xB0}, {0xBA,0xB1}, {0xE2,0x71},
+ {0xE2,0xA3}, {0xFD,0xC7}, {0xE2,0x73}, {0xE2,0xB3},
+ {0xE2,0xAF}, {0xBA,0x75}, {0xBA,0xA1}, {0xE6,0x53},
+ {0xBA,0xAE}, {0xBA,0x7D}, {0xE2,0x6F}, {0xFD,0xB0},
+ {0xE2,0xAE}, {0xBA,0xA3}, {0xE2,0xAB}, {0xE2,0xB8},
+ {0xE2,0x75}, {0xE2,0x7E}, {0x94,0x45}, {0x97,0xD6},
+ {0xE2,0xB6}, {0xE2,0xAC}, {0xBA,0x7C}, {0xE2,0x7C},
+ {0xBA,0x76}, {0xBA,0x74}, {0xBA,0xA8}, {0xFC,0xC6},
+ {0x98,0x44}, {0xE2,0x7A}, {0xE2,0x77}, {0xE2,0x78},
+ {0xE2,0xB2}, {0xE2,0xB7}, {0xE2,0xB5}, {0xBA,0x7A},
+ {0xE2,0xB9}, {0xBA,0x7E}, {0xBA,0xA7}, {0x8D,0xE9},
+ {0xE2,0x70}, {0xE5,0xFA}, {0xE2,0x79}, {0xBA,0x78},
+ {0xBA,0xAC}, {0xBA,0xA9}, {0xBA,0x7B}, {0xE2,0xA5},
+ {0xE2,0x74}, {0xBA,0xAA}, {0xE2,0xA7}, {0xBA,0xA4},
+ {0xBA,0xA6}, {0xBA,0x73}, {0x8D,0xEA}, {0xE2,0xA9},
+ {0xE2,0xA1}, {0xE2,0x72}, {0xBA,0xA5}, {0xE2,0xB1},
+ {0xE2,0xB4}, {0xE2,0x7B}, {0xE2,0xA8}, {0xFE,0x50},
+ {0xBA,0x79}, {0xBC,0xDF}, {0xE2,0xA6}, {0xE5,0xF9},
+ {0xE2,0xAD}, {0xFD,0xCC}, {0xE2,0x76}, {0xE6,0x44},
+ {0xE6,0x4E}, {0xBC,0xE2}, {0xE6,0x4D}, {0xE6,0x59},
+ {0xBC,0xE4}, {0xE6,0x4B}, {0x9D,0xA7}, {0xE6,0x4F},
+ {0xBC,0xEF}, {0xE6,0x46}, {0xBC,0xE7}, {0xFD,0xCD},
+ {0xE6,0x52}, {0xE9,0xF0}, {0xBC,0xF3}, {0xBC,0xF2},
+ {0xE6,0x54}, {0xE6,0x43}, {0xE6,0x5E}, {0xBC,0xED},
+ {0xBC,0xE3}, {0xE6,0x57}, {0xE6,0x5B}, {0xE6,0x60},
+ {0xE6,0x55}, {0xE6,0x49}, {0xBC,0xE6}, {0xBC,0xE9},
+ {0xBC,0xF1}, {0xBC,0xEC}, {0xE6,0x4C}, {0xE2,0xA2},
+ {0xFD,0xCF}, {0xE6,0x48}, {0xE6,0x5F}, {0xBC,0xE8},
+ {0x95,0xD2}, {0xBC,0xEB}, {0xE6,0x61}, {0xBC,0xE0},
+ {0xE6,0x56}, {0xE5,0xFB}, {0xE6,0x5C}, {0xC0,0xDF},
+ {0x8D,0xED}, {0xE6,0x4A}, {0xBC,0xE1}, {0xE6,0x45},
+ {0xBC,0xE5}, {0xE5,0xFC}, {0xBA,0xAB}, {0xE6,0x41},
+ {0xFC,0xBA}, {0xE6,0x5A}, {0xE6,0x42}, {0xE6,0x40},
+ {0xBC,0xEA}, {0xE6,0x58}, {0xE5,0xFE}, {0xE6,0x51},
+ {0xE6,0x50}, {0xE6,0x5D}, {0xE6,0x47}, {0xBC,0xEE},
+ {0xFD,0xC5}, {0xE9,0xF3}, {0xFD,0xD2}, {0xBF,0x49},
+ {0xBE,0xFE}, {0xEA,0x40}, {0xE9,0xEB}, {0xBF,0x41},
+ {0xE9,0xF7}, {0xBF,0x48}, {0xBF,0x43}, {0xE9,0xF5},
+ {0xED,0x4F}, {0xE9,0xFB}, {0xEA,0x42}, {0xE9,0xFA},
+ {0xE9,0xE9}, {0xE9,0xF8}, {0xEA,0x44}, {0xEA,0x46},
+ {0xBE,0xFD}, {0xEA,0x45}, {0xBF,0x44}, {0xBF,0x4A},
+ {0x9C,0xDC}, {0xBF,0x47}, {0xE9,0xFE}, {0xBF,0x46},
+ {0xE9,0xF9}, {0x95,0xCF}, {0xE9,0xED}, {0xE9,0xF2},
+ {0x8D,0xEE}, {0xE9,0xFD}, {0xBF,0x45}, {0xBF,0x42},
+ {0xBE,0xFC}, {0xBF,0x40}, {0xE9,0xF1}, {0xE5,0xFD},
+ {0xE9,0xEC}, {0xE9,0xEF}, {0xEA,0x41}, {0xE9,0xF4},
+ {0xE9,0xEA}, {0xED,0x4E}, {0xEA,0x43}, {0xE9,0xEE},
+ {0xE9,0xFC}, {0xFD,0xD4}, {0xED,0x51}, {0xC0,0xE3},
+ {0xC0,0xD7}, {0x96,0xEC}, {0x96,0xEB}, {0xC0,0xDB},
+ {0xED,0x53}, {0xED,0x59}, {0xED,0x57}, {0xC0,0xD9},
+ {0xC0,0xDA}, {0xC0,0xE1}, {0xED,0x5A}, {0xED,0x52},
+ {0xC0,0xDC}, {0xED,0x56}, {0xED,0x55}, {0xED,0x5B},
+ {0xC0,0xE2}, {0xC0,0xDD}, {0xC0,0xE0}, {0xED,0x54},
+ {0xC0,0xE4}, {0xC0,0xDE}, {0xC0,0xE5}, {0xC0,0xD8},
+ {0xED,0x58}, {0xED,0x50}, {0x90,0xB6}, {0xEF,0xF7},
+ {0xFD,0xC3}, {0xC2,0x71}, {0xEF,0xF4}, {0xEF,0xF6},
+ {0xC2,0x6F}, {0xEF,0xF2}, {0xEF,0xF3}, {0xEF,0xEE},
+ {0x98,0xAB}, {0xE9,0xF6}, {0xEF,0xEF}, {0xC2,0x70},
+ {0xEF,0xEB}, {0xC2,0x6D}, {0xEF,0xF8}, {0xC2,0x6E},
+ {0xEF,0xEC}, {0xEF,0xED}, {0xEF,0xF1}, {0xC2,0x73},
+ {0xC2,0x72}, {0xEF,0xF0}, {0xC3,0x78}, {0xF2,0x5F},
+ {0xF2,0x65}, {0xC3,0x79}, {0xF2,0x5C}, {0xC3,0x76},
+ {0xC3,0x73}, {0xF2,0x67}, {0xC3,0x77}, {0x96,0xEE},
+ {0xC3,0x74}, {0xF2,0x5E}, {0xF2,0x61}, {0xF2,0x62},
+ {0xF2,0x63}, {0xF2,0x66}, {0xEF,0xF5}, {0xF2,0x5D},
+ {0xC3,0x75}, {0xF2,0x64}, {0xF2,0x68}, {0xF2,0x60},
+ {0x8D,0xF4}, {0xF4,0x5D}, {0xC4,0x6A}, {0xF4,0x60},
+ {0xC4,0x6B}, {0xF4,0x68}, {0xF4,0x5F}, {0xF4,0x5C},
+ {0xF4,0x5E}, {0xF4,0x62}, {0xF4,0x65}, {0xF4,0x64},
+ {0xF4,0x67}, {0xF4,0x5B}, {0xC4,0x69}, {0xF4,0x63},
+ {0xF4,0x66}, {0xF4,0x69}, {0xF4,0x61}, {0xF5,0xD3},
+ {0xF5,0xD4}, {0xF5,0xD8}, {0xF5,0xD9}, {0xF5,0xD6},
+ {0xF5,0xD7}, {0xF5,0xD5}, {0xFD,0xE0}, {0xC4,0xE9},
+ {0x8C,0x67}, {0x8D,0xF6}, {0xC5,0x78}, {0xF6,0xEB},
+ {0x8D,0xF7}, {0xF6,0xE8}, {0xF6,0xE9}, {0xF6,0xEA},
+ {0xC5,0x79}, {0xF7,0xE5}, {0xF7,0xE4}, {0x8F,0xFA},
+ {0xF8,0xAF}, {0xC5,0xF4}, {0xF8,0xAD}, {0xF8,0xB0},
+ {0xF8,0xAE}, {0xF8,0xF5}, {0xC6,0x57}, {0xC6,0x65},
+ {0xF9,0xA3}, {0xF9,0x6C}, {0x97,0xD0}, {0xF9,0xA2},
+ {0xF9,0xD0}, {0xF9,0xD1}, {0xA4,0xF5}, {0x8B,0xD2},
+ {0x8D,0xF8}, {0xA6,0xC7}, {0xCA,0x41}, {0xCB,0x5E},
+ {0x90,0xD9}, {0xA8,0x5F}, {0x8C,0x47}, {0xA8,0x62},
+ {0xFA,0xF0}, {0xCB,0x5F}, {0xA8,0x60}, {0xA8,0x61},
+ {0xFD,0xE1}, {0x8D,0xF9}, {0xFD,0xE3}, {0xCD,0x58},
+ {0xCD,0x5A}, {0xCD,0x55}, {0xCD,0x52}, {0xCD,0x54},
+ {0x8D,0xFA}, {0xAA,0xA4}, {0xFB,0x63}, {0xAA,0xA2},
+ {0x90,0xA6}, {0xCD,0x56}, {0xAA,0xA3}, {0xCD,0x53},
+ {0xCD,0x50}, {0xAA,0xA1}, {0xCD,0x57}, {0xCD,0x51},
+ {0xAA,0xA5}, {0xCD,0x59}, {0xCF,0xAF}, {0x99,0x70},
+ {0xCF,0xB3}, {0x91,0xEB}, {0xAC,0xB7}, {0x97,0x70},
+ {0x98,0x6F}, {0xFD,0xE2}, {0xCF,0xB6}, {0xAC,0xAF},
+ {0xAC,0xB2}, {0xAC,0xB4}, {0xAC,0xB6}, {0xAC,0xB3},
+ {0xCF,0xB2}, {0xCF,0xB1}, {0xAC,0xB1}, {0xCF,0xB4},
+ {0xCF,0xB5}, {0xCF,0xAE}, {0xAC,0xB5}, {0x98,0xF2},
+ {0xAC,0xB0}, {0x9A,0xFC}, {0x89,0x6C}, {0xFD,0xFD},
+ {0xCF,0xB0}, {0x99,0x5E}, {0x95,0xBD}, {0xD2,0x77},
+ {0xD2,0x78}, {0xD2,0x79}, {0xAF,0x50}, {0xAF,0x4C},
+ {0xD2,0x6E}, {0xFD,0xE4}, {0xD2,0x76}, {0xD2,0x7B},
+ {0xAF,0x51}, {0x91,0xE6}, {0xD2,0x6C}, {0xD2,0x72},
+ {0xD2,0x6B}, {0xD2,0x75}, {0xFD,0xE5}, {0xFD,0xE6},
+ {0xD2,0x71}, {0xAF,0x4D}, {0xAF,0x4F}, {0xD2,0x7A},
+ {0xD2,0x6A}, {0xD2,0x6D}, {0xD2,0x73}, {0xFD,0xE7},
+ {0xD2,0x74}, {0xD2,0x7C}, {0xD2,0x70}, {0xAF,0x4E},
+ {0xB2,0x6D}, {0xD6,0x4E}, {0x94,0x54}, {0xD6,0x50},
+ {0xD6,0x4C}, {0x99,0xB8}, {0xD6,0x58}, {0xD6,0x4A},
+ {0xD6,0x57}, {0xB2,0x69}, {0xD6,0x48}, {0xDA,0x5B},
+ {0xD6,0x52}, {0xB2,0x6C}, {0x97,0xE9}, {0xD6,0x53},
+ {0xD6,0x56}, {0xD6,0x5A}, {0xD6,0x4F}, {0x93,0x46},
+ {0xD6,0x54}, {0xB2,0x6A}, {0xB2,0x6B}, {0xD6,0x59},
+ {0xD6,0x4D}, {0xD6,0x49}, {0xD6,0x5B}, {0xD6,0x51},
+ {0xD6,0x55}, {0xD6,0x4B}, {0xB5,0x48}, {0xB5,0x49},
+ {0xDA,0x65}, {0xB5,0x4F}, {0x98,0x63}, {0xDA,0x59},
+ {0xDA,0x62}, {0xDA,0x58}, {0xB5,0x4C}, {0xDA,0x60},
+ {0xDA,0x5E}, {0xDA,0x5F}, {0xB5,0x4A}, {0xDA,0x63},
+ {0x95,0xBC}, {0xFD,0xED}, {0xFD,0xF7}, {0xDA,0x5C},
+ {0xDA,0x5A}, {0xB5,0x4B}, {0xDA,0x5D}, {0xDA,0x61},
+ {0x98,0x70}, {0x96,0xF6}, {0x8E,0xA9}, {0xB5,0x4D},
+ {0xDA,0x64}, {0x94,0x51}, {0x8E,0x43}, {0x8B,0x5A},
+ {0xDE,0x70}, {0xDE,0x77}, {0xDE,0x79}, {0xDE,0xA1},
+ {0xFD,0xEE}, {0xB7,0xDA}, {0xDE,0x6B}, {0xB7,0xD2},
+ {0xFD,0xF0}, {0xDE,0x7A}, {0xB7,0xD7}, {0xDE,0xA2},
+ {0xB7,0xCE}, {0xFD,0xF4}, {0xDE,0x7D}, {0x9B,0xF5},
+ {0xDE,0x6D}, {0xDE,0x7E}, {0xDE,0x6C}, {0xB7,0xDC},
+ {0xDE,0x78}, {0xB7,0xCF}, {0xDE,0xA3}, {0xB7,0xD4},
+ {0xDE,0x71}, {0xB7,0xD9}, {0xDE,0x7C}, {0xDE,0x6F},
+ {0xDE,0x76}, {0xDE,0x72}, {0xDE,0x6E}, {0xB7,0xD1},
+ {0xB7,0xD8}, {0xB7,0xD6}, {0xB7,0xD3}, {0xB7,0xDB},
+ {0xB7,0xD0}, {0xDE,0x75}, {0x97,0x7E}, {0xB7,0xD5},
+ {0xB5,0x4E}, {0xDE,0x7B}, {0x9B,0xD5}, {0xDE,0x73},
+ {0x9A,0xC3}, {0x97,0xC8}, {0xA0,0xDB}, {0x91,0xD0},
+ {0xDE,0x74}, {0x9F,0xE4}, {0xE2,0xC1}, {0x8F,0xDD},
+ {0xBA,0xB4}, {0x91,0xE9}, {0xE2,0xBD}, {0xE2,0xC3},
+ {0xE2,0xBF}, {0xBA,0xB6}, {0xE2,0xBE}, {0xE2,0xC2},
+ {0xE2,0xBA}, {0x98,0xE0}, {0xE2,0xBC}, {0xBA,0xB5},
+ {0x92,0xCA}, {0x98,0x57}, {0xE2,0xC0}, {0xE2,0xBB},
+ {0x8C,0x51}, {0xBA,0xB7}, {0xBA,0xB2}, {0xFD,0xEB},
+ {0xE2,0xC4}, {0x9B,0x49}, {0xBA,0xB3}, {0xE6,0x67},
+ {0xE6,0x64}, {0xE6,0x70}, {0xE6,0x6A}, {0xE6,0x6C},
+ {0xBC,0xF4}, {0xE6,0x66}, {0xE6,0x6E}, {0x9D,0x76},
+ {0x9E,0xAF}, {0xE6,0x6D}, {0xE6,0x6B}, {0xE6,0x71},
+ {0xBC,0xF7}, {0xE6,0x68}, {0xE6,0x6F}, {0xBC,0xF5},
+ {0x9C,0xCC}, {0xE6,0x63}, {0xE6,0x65}, {0xBC,0xF6},
+ {0xE6,0x62}, {0xE6,0x72}, {0xFD,0xEA}, {0xE6,0x69},
+ {0x8D,0xF1}, {0xEA,0x4A}, {0xBF,0x51}, {0xFD,0xFB},
+ {0xEA,0x55}, {0xEA,0x53}, {0xBF,0x4B}, {0xEA,0x49},
+ {0xEA,0x4C}, {0xEA,0x4D}, {0xEA,0x48}, {0xBF,0x55},
+ {0xBF,0x56}, {0xEA,0x47}, {0xEA,0x56}, {0xEA,0x51},
+ {0xBF,0x4F}, {0xBF,0x4C}, {0xEA,0x50}, {0xEA,0x4E},
+ {0xBF,0x52}, {0xEA,0x52}, {0xBF,0x4D}, {0x8E,0x53},
+ {0xBF,0x4E}, {0xEA,0x4F}, {0xBF,0x50}, {0xEA,0x4B},
+ {0xEA,0x54}, {0xBF,0x53}, {0xEA,0x57}, {0xEA,0x58},
+ {0xBF,0x54}, {0xFA,0xCF}, {0xC0,0xE7}, {0xC0,0xEE},
+ {0xED,0x5C}, {0xED,0x62}, {0xED,0x60}, {0xC0,0xEA},
+ {0xC0,0xE9}, {0xC0,0xE6}, {0xED,0x5E}, {0x96,0xF9},
+ {0xC0,0xEC}, {0xC0,0xEB}, {0xC0,0xE8}, {0xED,0x61},
+ {0xED,0x5D}, {0xED,0x5F}, {0xC0,0xED}, {0x98,0xBF},
+ {0x9E,0x49}, {0xC2,0x77}, {0xEF,0xFB}, {0xC2,0x74},
+ {0xC2,0x75}, {0xEF,0xFD}, {0xC2,0x76}, {0xEF,0xFA},
+ {0x8C,0xA7}, {0xEF,0xF9}, {0xF2,0x6C}, {0xEF,0xFC},
+ {0xF2,0x6D}, {0xC3,0x7A}, {0xF2,0x6B}, {0x9B,0xCA},
+ {0xF2,0x6A}, {0xF2,0x69}, {0xC3,0x7B}, {0xFD,0xFE},
+ {0x92,0xDC}, {0xC4,0x6C}, {0xF4,0x6A}, {0xF4,0x6B},
+ {0xFE,0x41}, {0x91,0xCC}, {0x91,0xE2}, {0xF5,0xDC},
+ {0xF5,0xDB}, {0xC4,0xEA}, {0xF5,0xDA}, {0xF6,0xEC},
+ {0xF6,0xED}, {0xF7,0xE6}, {0xF8,0xB1}, {0xFE,0x44},
+ {0xF8,0xF6}, {0xF9,0xBC}, {0xC6,0x79}, {0xF9,0xC6},
+ {0xA4,0xF6}, {0x8B,0xD3}, {0xAA,0xA6}, {0xAA,0xA7},
+ {0xFE,0x47}, {0xAC,0xB8}, {0xC0,0xEF}, {0xA4,0xF7},
+ {0xAA,0xA8}, {0xAF,0x52}, {0xB7,0xDD}, {0xA4,0xF8},
+ {0xB2,0x6E}, {0xBA,0xB8}, {0xC9,0x62}, {0xFE,0x48},
+ {0xCF,0xB7}, {0xD2,0x7D}, {0xE2,0xC5}, {0xC0,0xF0},
+ {0xA4,0xF9}, {0xAA,0xA9}, {0xCF,0xB8}, {0xCF,0xB9},
+ {0xDA,0x66}, {0xB5,0x50}, {0xDE,0xA4}, {0x94,0x55},
+ {0xB7,0xDE}, {0xE2,0xC6}, {0xFE,0x4B}, {0xBC,0xF8},
+ {0xFE,0x4C}, {0xC3,0x7C}, {0xA4,0xFA}, {0xDA,0x67},
+ {0xA4,0xFB}, {0x8D,0xBF}, {0xA6,0xC9}, {0xCA,0x42},
+ {0xA6,0xC8}, {0xA8,0x65}, {0xA8,0x64}, {0xA8,0x63},
+ {0xCB,0x60}, {0x9E,0x78}, {0xAA,0xAA}, {0xAA,0xAB},
+ {0xCD,0x5B}, {0xCF,0xBA}, {0xCF,0xBD}, {0xAC,0xBA},
+ {0xCF,0xBB}, {0xAC,0xB9}, {0xCF,0xBC}, {0xAC,0xBB},
+ {0xD2,0xA2}, {0xD2,0xA1}, {0xD2,0x7E}, {0xAF,0x53},
+ {0xD6,0x5D}, {0xD6,0x5E}, {0xB2,0x6F}, {0xD6,0x5C},
+ {0xD6,0x5F}, {0xB5,0x52}, {0xB2,0x70}, {0xFE,0x51},
+ {0xB5,0x51}, {0xDA,0x6B}, {0xDA,0x6A}, {0x94,0x56},
+ {0xDA,0x68}, {0xDA,0x69}, {0xDA,0x6C}, {0xDE,0xA6},
+ {0xDE,0xA5}, {0xDE,0xA9}, {0x9D,0x61}, {0xDE,0xA8},
+ {0xDE,0xA7}, {0xBA,0xB9}, {0xE2,0xC9}, {0x94,0x57},
+ {0xE2,0xC8}, {0xBA,0xBA}, {0xE2,0xC7}, {0xE6,0x73},
+ {0xE6,0x74}, {0xBC,0xF9}, {0xEA,0x59}, {0xEA,0x5A},
+ {0x99,0x66}, {0xF2,0x72}, {0xC3,0x7D}, {0xF2,0x71},
+ {0xF2,0x70}, {0xF2,0x6E}, {0xF2,0x6F}, {0xC4,0xEB},
+ {0xF4,0x6C}, {0xF6,0xEE}, {0xF8,0xF7}, {0xA4,0xFC},
+ {0x8B,0xD5}, {0xC9,0xA5}, {0xA5,0xC7}, {0xC9,0xA6},
+ {0xA0,0x69}, {0xCA,0x43}, {0xCA,0x44}, {0xCB,0x66},
+ {0xCB,0x62}, {0xCB,0x61}, {0xAA,0xAC}, {0xCB,0x65},
+ {0xA8,0x67}, {0xCB,0x63}, {0xA8,0x66}, {0xCB,0x67},
+ {0xCB,0x64}, {0xCD,0x5F}, {0xCF,0xBE}, {0xCD,0x5D},
+ {0xCD,0x64}, {0x98,0xB4}, {0xAA,0xAD}, {0xAA,0xB0},
+ {0xCD,0x65}, {0xCD,0x61}, {0xCD,0x62}, {0xCD,0x5C},
+ {0xAA,0xAF}, {0xCD,0x5E}, {0xAA,0xAE}, {0xCD,0x63},
+ {0xCD,0x60}, {0xCF,0xC2}, {0xAC,0xBD}, {0xAC,0xBE},
+ {0xA0,0x49}, {0xCF,0xC5}, {0xCF,0xBF}, {0xCF,0xC4},
+ {0xCF,0xC0}, {0xAC,0xBC}, {0xCF,0xC3}, {0xCF,0xC1},
+ {0xD2,0xA8}, {0xD2,0xA5}, {0xD2,0xA7}, {0xAF,0x58},
+ {0xAF,0x57}, {0xAF,0x55}, {0xD2,0xA4}, {0xD2,0xA9},
+ {0xAF,0x54}, {0xAF,0x56}, {0xD2,0xA6}, {0xD6,0x67},
+ {0xD2,0xA3}, {0xD2,0xAA}, {0xA0,0x4C}, {0x9E,0x65},
+ {0xD6,0x62}, {0xD6,0x66}, {0xD6,0x65}, {0xDA,0x6E},
+ {0xDA,0x79}, {0xD6,0x68}, {0x98,0xB5}, {0xD6,0x63},
+ {0xDA,0x6D}, {0xB2,0x74}, {0xB2,0x73}, {0xD6,0x61},
+ {0xD6,0x64}, {0xB2,0x75}, {0xB2,0x72}, {0xB2,0x71},
+ {0xD6,0x60}, {0xD6,0x69}, {0xDA,0x70}, {0xDA,0x77},
+ {0xB5,0x54}, {0xDA,0x76}, {0xDA,0x73}, {0xFE,0x58},
+ {0xB5,0x56}, {0x99,0x75}, {0xFE,0x53}, {0xA0,0x65},
+ {0xDA,0x75}, {0xFE,0x59}, {0xDA,0x6F}, {0xDA,0x71},
+ {0xDA,0x74}, {0xDA,0x72}, {0xB5,0x55}, {0xDA,0x78},
+ {0xB5,0x53}, {0xB7,0xDF}, {0x98,0xB7}, {0x98,0xB8},
+ {0xDE,0xAD}, {0xDE,0xAC}, {0xDE,0xAA}, {0xB7,0xE2},
+ {0xB7,0xE1}, {0xDE,0xAE}, {0x98,0xBA}, {0xDE,0xAB},
+ {0xE2,0xCA}, {0xBA,0xBB}, {0xB7,0xE0}, {0x98,0xBB},
+ {0xDE,0xB0}, {0xDE,0xAF}, {0xE2,0xCD}, {0xE2,0xCB},
+ {0xBC,0xFA}, {0x9F,0xBC}, {0xBA,0xBC}, {0xE2,0xCC},
+ {0xE6,0x76}, {0xBC,0xFB}, {0xE6,0x75}, {0xE6,0x7E},
+ {0xE6,0x7D}, {0xE6,0x7B}, {0xE6,0x7A}, {0xE6,0x77},
+ {0xE6,0x78}, {0xE6,0x79}, {0xE6,0x7C}, {0xE6,0xA1},
+ {0xEA,0x5F}, {0xEA,0x5C}, {0xEA,0x5D}, {0xBF,0x57},
+ {0xEA,0x5B}, {0xEA,0x61}, {0xEA,0x60}, {0xEA,0x5E},
+ {0xED,0x64}, {0xED,0x65}, {0xC0,0xF1}, {0xA0,0x4A},
+ {0xC0,0xF2}, {0xED,0x63}, {0x9E,0xC7}, {0xC2,0x79},
+ {0xEF,0xFE}, {0xC2,0x78}, {0xC3,0x7E}, {0xC3,0xA1},
+ {0xC4,0x6D}, {0xF4,0x6E}, {0xF4,0x6D}, {0xF5,0xDD},
+ {0xF6,0xEF}, {0xC5,0x7A}, {0xF7,0xE8}, {0xF7,0xE7},
+ {0xF7,0xE9}, {0xA5,0xC8}, {0xCF,0xC6}, {0xAF,0x59},
+ {0xB2,0x76}, {0xD6,0x6A}, {0xA5,0xC9}, {0xC9,0xA7},
+ {0xA4,0xFD}, {0x8C,0xA9}, {0xCA,0x45}, {0x98,0xAE},
+ {0xCB,0x6C}, {0xCB,0x6A}, {0xCB,0x6B}, {0xCB,0x68},
+ {0xA8,0x68}, {0xCB,0x69}, {0x92,0xD6}, {0xFA,0xE1},
+ {0xCD,0x6D}, {0x91,0xD4}, {0xAA,0xB3}, {0xCD,0x6B},
+ {0xCD,0x67}, {0xCD,0x6A}, {0xCD,0x66}, {0xAA,0xB5},
+ {0xCD,0x69}, {0xFA,0xDE}, {0xAA,0xB2}, {0xAA,0xB1},
+ {0xFE,0x5B}, {0xAA,0xB4}, {0xCD,0x6C}, {0xCD,0x68},
+ {0xAC,0xC2}, {0xAC,0xC5}, {0xCF,0xCE}, {0xCF,0xCD},
+ {0xCF,0xCC}, {0xAC,0xBF}, {0xCF,0xD5}, {0xCF,0xCB},
+ {0x8C,0x53}, {0xAC,0xC1}, {0xD2,0xAF}, {0xCF,0xD2},
+ {0xCF,0xD0}, {0xAC,0xC4}, {0xCF,0xC8}, {0xCF,0xD3},
+ {0xCF,0xCA}, {0xCF,0xD4}, {0xCF,0xD1}, {0xCF,0xC9},
+ {0xFE,0x5E}, {0xAC,0xC0}, {0xCF,0xD6}, {0xCF,0xC7},
+ {0xAC,0xC3}, {0xFB,0xD7}, {0xFE,0x5A}, {0x94,0xC5},
+ {0xD2,0xB4}, {0xD2,0xAB}, {0xD2,0xB6}, {0xFA,0xCA},
+ {0xD2,0xAE}, {0xD2,0xB9}, {0xD2,0xBA}, {0xD2,0xAC},
+ {0xD2,0xB8}, {0xD2,0xB5}, {0xD2,0xB3}, {0xD2,0xB7},
+ {0xAF,0x5F}, {0xAF,0x5D}, {0x98,0xC1}, {0x97,0x5C},
+ {0xD2,0xB1}, {0xFE,0x74}, {0xD2,0xAD}, {0x97,0x73},
+ {0xD2,0xB0}, {0xD2,0xBB}, {0xD2,0xB2}, {0xAF,0x5E},
+ {0xCF,0xCF}, {0xAF,0x5A}, {0xAF,0x5C}, {0xFA,0x46},
+ {0x97,0x64}, {0xD6,0x78}, {0xD6,0x6D}, {0xD6,0x6B},
+ {0xFE,0x68}, {0xD6,0x6C}, {0x96,0x4E}, {0xD6,0x73},
+ {0x97,0x65}, {0xD6,0x74}, {0xD6,0x70}, {0xB2,0x7B},
+ {0xD6,0x75}, {0xD6,0x72}, {0xD6,0x6F}, {0x8C,0x5A},
+ {0xB2,0x79}, {0xD6,0x6E}, {0xB2,0x77}, {0xB2,0x7A},
+ {0xD6,0x71}, {0xD6,0x79}, {0xAF,0x5B}, {0xB2,0x78},
+ {0xD6,0x77}, {0xD6,0x76}, {0xB2,0x7C}, {0x89,0xA1},
+ {0x95,0xFA}, {0x92,0xD4}, {0xFE,0x69}, {0xDA,0x7E},
+ {0xFB,0x45}, {0x98,0xC8}, {0xDA,0xA1}, {0xB5,0x60},
+ {0x90,0xEF}, {0xDA,0xA7}, {0x98,0xC9}, {0x98,0xCA},
+ {0xDA,0xA9}, {0xDA,0xA2}, {0xB5,0x5A}, {0xDA,0xA6},
+ {0xDA,0xA5}, {0xB5,0x5B}, {0xB5,0x61}, {0xB5,0x62},
+ {0xDA,0xA8}, {0xB5,0x58}, {0xDA,0x7D}, {0xDA,0x7B},
+ {0xDA,0xA3}, {0xDA,0x7A}, {0xB5,0x5F}, {0xDA,0x7C},
+ {0xDA,0xA4}, {0xDA,0xAA}, {0xB5,0x59}, {0xB5,0x5E},
+ {0xB5,0x5C}, {0xB5,0x5D}, {0x94,0x6D}, {0x94,0xB7},
+ {0xFE,0x6C}, {0xB5,0x57}, {0x94,0x6B}, {0xB7,0xE9},
+ {0xDE,0xB7}, {0xB7,0xE8}, {0xDE,0xBB}, {0x92,0xFC},
+ {0xDE,0xB1}, {0x95,0xEB}, {0xDE,0xBC}, {0xFE,0x73},
+ {0x97,0x6E}, {0xFE,0x5F}, {0xDE,0xB2}, {0xDE,0xB3},
+ {0xDE,0xBD}, {0xDE,0xBA}, {0xDE,0xB8}, {0xDE,0xB9},
+ {0xDE,0xB5}, {0xDE,0xB4}, {0xFD,0xBD}, {0xDE,0xBE},
+ {0xB7,0xE5}, {0x92,0xD5}, {0xDE,0xB6}, {0xB7,0xEA},
+ {0xB7,0xE4}, {0xB7,0xEB}, {0xB7,0xEC}, {0xFE,0xB9},
+ {0xB7,0xE7}, {0xB7,0xE6}, {0xFE,0x71}, {0xE2,0xCE},
+ {0xBA,0xBE}, {0xBA,0xBD}, {0xFB,0xBB}, {0xE2,0xD3},
+ {0x94,0x7A}, {0xBC,0xFC}, {0xBA,0xBF}, {0x95,0xFB},
+ {0xFE,0x77}, {0xBA,0xC1}, {0xE2,0xD4}, {0xB7,0xE3},
+ {0xBA,0xC0}, {0xE2,0xD0}, {0xE2,0xD2}, {0xE2,0xCF},
+ {0xFE,0x79}, {0xE2,0xD1}, {0xFE,0x75}, {0xE6,0xAB},
+ {0x94,0x5D}, {0xE6,0xAA}, {0xE6,0xA7}, {0xBD,0x40},
+ {0xEA,0x62}, {0xBD,0x41}, {0xE6,0xA6}, {0xFE,0x7C},
+ {0xBC,0xFE}, {0xE6,0xA8}, {0xE6,0xA5}, {0xE6,0xA2},
+ {0xE6,0xA9}, {0xE6,0xA3}, {0xE6,0xA4}, {0xBC,0xFD},
+ {0x93,0x44}, {0x8E,0xA6}, {0xED,0x69}, {0xEA,0x66},
+ {0xEA,0x65}, {0xEA,0x67}, {0xED,0x66}, {0xBF,0x5A},
+ {0x92,0xD3}, {0xEA,0x63}, {0x94,0xB8}, {0xBF,0x58},
+ {0xBF,0x5C}, {0xBF,0x5B}, {0xEA,0x64}, {0xEA,0x68},
+ {0xBF,0x59}, {0xFC,0x71}, {0xED,0x6D}, {0xC0,0xF5},
+ {0xC2,0x7A}, {0xC0,0xF6}, {0xC0,0xF3}, {0xED,0x6A},
+ {0xED,0x68}, {0xED,0x6B}, {0xED,0x6E}, {0xC0,0xF4},
+ {0xED,0x6C}, {0xED,0x67}, {0x97,0x5E}, {0xF0,0x42},
+ {0xF0,0x45}, {0xF2,0x75}, {0xF0,0x40}, {0x8C,0xAD},
+ {0xF4,0x6F}, {0xF0,0x46}, {0xC3,0xA2}, {0xF0,0x44},
+ {0xC2,0x7B}, {0xF0,0x41}, {0xF0,0x43}, {0xF0,0x47},
+ {0xF2,0x76}, {0xF2,0x74}, {0xFE,0xA7}, {0xC3,0xA3},
+ {0xF2,0x73}, {0x94,0x6A}, {0xC4,0x6E}, {0x93,0xE3},
+ {0x98,0xCF}, {0xC4,0xED}, {0xF6,0xF1}, {0xC4,0xEC},
+ {0xF6,0xF3}, {0xF6,0xF0}, {0xF6,0xF2}, {0xC5,0xD0},
+ {0xF8,0xB2}, {0xA5,0xCA}, {0xCD,0x6E}, {0xD2,0xBC},
+ {0xD2,0xBD}, {0xB2,0x7D}, {0xDE,0xBF}, {0xBF,0x5D},
+ {0xC3,0xA4}, {0xC5,0x7B}, {0xF8,0xB3}, {0xA5,0xCB},
+ {0xA0,0xD9}, {0xCD,0x6F}, {0xA2,0x60}, {0xCF,0xD7},
+ {0xCF,0xD8}, {0xA0,0xBF}, {0xA0,0x4D}, {0xA0,0xB8},
+ {0xD2,0xBE}, {0xD2,0xBF}, {0xB2,0x7E}, {0xB2,0xA1},
+ {0xA0,0xCE}, {0xDA,0xAB}, {0xDE,0xC2}, {0xDE,0xC1},
+ {0xDE,0xC0}, {0xE2,0xD5}, {0xE2,0xD6}, {0xE2,0xD7},
+ {0xBA,0xC2}, {0xA0,0xB7}, {0xE6,0xAD}, {0xE6,0xAC},
+ {0xEA,0x69}, {0xBF,0x5E}, {0xBF,0x5F}, {0xFE,0xA9},
+ {0xED,0x72}, {0xED,0x6F}, {0xED,0x70}, {0xED,0x71},
+ {0xF0,0x49}, {0xF0,0x48}, {0xC2,0x7C}, {0xF2,0x77},
+ {0xF5,0xDE}, {0xA5,0xCC}, {0x89,0xC3}, {0xAC,0xC6},
+ {0xB2,0xA2}, {0xDE,0xC3}, {0xFE,0xAB}, {0xA5,0xCD},
+ {0xD2,0xC0}, {0xB2,0xA3}, {0xB5,0x63}, {0xB5,0x64},
+ {0xA5,0xCE}, {0xA5,0xCF}, {0xCA,0x46}, {0xA8,0x6A},
+ {0xA8,0x69}, {0xAC,0xC7}, {0xCF,0xD9}, {0xDA,0xAC},
+ {0xA5,0xD0}, {0xA5,0xD1}, {0xA5,0xD2}, {0xA5,0xD3},
+ {0x9D,0xF4}, {0x89,0x6D}, {0xA8,0x6B}, {0xA8,0x6C},
+ {0xCB,0x6E}, {0xCB,0x6D}, {0x9C,0x7B}, {0xAA,0xB6},
+ {0xCD,0x72}, {0xCD,0x70}, {0xCD,0x71}, {0x98,0xD2},
+ {0x9F,0xA9}, {0xCF,0xDA}, {0xCF,0xDB}, {0xFE,0xB2},
+ {0xAC,0xCB}, {0xAC,0xC9}, {0xFE,0xB1}, {0xAC,0xCA},
+ {0xAC,0xC8}, {0x97,0xD9}, {0xA0,0xC4}, {0xAF,0x60},
+ {0x94,0x76}, {0xAF,0x64}, {0xAF,0x63}, {0xD2,0xC1},
+ {0xAF,0x62}, {0xAF,0x61}, {0xD2,0xC2}, {0x99,0x78},
+ {0xB2,0xA6}, {0xD6,0x7B}, {0xD6,0x7A}, {0xB2,0xA4},
+ {0xB2,0xA5}, {0xFE,0xB3}, {0xB5,0x66}, {0xB5,0x65},
+ {0xDA,0xAE}, {0x98,0xD3}, {0xFE,0xB4}, {0xDA,0xAD},
+ {0xB2,0xA7}, {0x98,0xD4}, {0xB7,0xED}, {0xDE,0xC5},
+ {0xB7,0xEE}, {0xDE,0xC4}, {0x9F,0xB9}, {0xE2,0xD8},
+ {0xE6,0xAE}, {0xBD,0x42}, {0xEA,0x6A}, {0x94,0x71},
+ {0xED,0x73}, {0xC3,0xA6}, {0xC3,0xA5}, {0xC5,0x7C},
+ {0xA5,0xD4}, {0xCD,0x73}, {0x98,0xD5}, {0xFE,0xB8},
+ {0xB2,0xA8}, {0xE2,0xD9}, {0xBA,0xC3}, {0xC6,0xD4},
+ {0xCB,0x6F}, {0xCB,0x70}, {0xCD,0x74}, {0xAA,0xB8},
+ {0xAA,0xB9}, {0xAA,0xB7}, {0xFE,0xBA}, {0xAC,0xCF},
+ {0xAC,0xD0}, {0xAC,0xCD}, {0xAC,0xCE}, {0xCF,0xDC},
+ {0xCF,0xDD}, {0xAC,0xCC}, {0xD2,0xC3}, {0x9E,0x5C},
+ {0xAF,0x68}, {0xAF,0x69}, {0xFE,0xBB}, {0xB2,0xAB},
+ {0xD2,0xC9}, {0xAF,0x6E}, {0xAF,0x6C}, {0xD2,0xCA},
+ {0xD2,0xC5}, {0xAF,0x6B}, {0xAF,0x6A}, {0xAF,0x65},
+ {0xD2,0xC8}, {0xD2,0xC7}, {0xD2,0xC4}, {0xAF,0x6D},
+ {0xA0,0x44}, {0xD2,0xC6}, {0xAF,0x66}, {0xAF,0x67},
+ {0x98,0xD7}, {0xB2,0xAC}, {0xD6,0xA1}, {0xD6,0xA2},
+ {0xB2,0xAD}, {0xD6,0x7C}, {0xD6,0x7E}, {0xD6,0xA4},
+ {0xD6,0xA3}, {0xD6,0x7D}, {0xB2,0xA9}, {0xB2,0xAA},
+ {0xDA,0xB6}, {0xB5,0x6B}, {0xB5,0x6A}, {0xDA,0xB0},
+ {0xB5,0x68}, {0x98,0xD8}, {0xDA,0xB3}, {0xB5,0x6C},
+ {0xDA,0xB4}, {0xB5,0x6D}, {0xDA,0xB1}, {0xB5,0x67},
+ {0xB5,0x69}, {0xDA,0xB5}, {0xDA,0xB2}, {0xDA,0xAF},
+ {0xDE,0xD2}, {0xDE,0xC7}, {0xB7,0xF0}, {0xB7,0xF3},
+ {0xB7,0xF2}, {0xB7,0xF7}, {0xB7,0xF6}, {0xDE,0xD3},
+ {0xDE,0xD1}, {0xDE,0xCA}, {0xDE,0xCE}, {0xDE,0xCD},
+ {0xB7,0xF4}, {0xDE,0xD0}, {0xDE,0xCC}, {0xDE,0xD4},
+ {0xDE,0xCB}, {0xB7,0xF5}, {0xB7,0xEF}, {0xB7,0xF1},
+ {0xFE,0xBC}, {0xDE,0xC9}, {0x9F,0xFE}, {0xE2,0xDB},
+ {0xBA,0xC7}, {0xE2,0xDF}, {0xBA,0xC6}, {0xE2,0xDC},
+ {0xBA,0xC5}, {0xDE,0xC8}, {0xDE,0xCF}, {0xE2,0xDE},
+ {0xBA,0xC8}, {0xE2,0xE0}, {0xE2,0xDD}, {0xE2,0xDA},
+ {0xE6,0xB1}, {0xE6,0xB5}, {0xE6,0xB7}, {0xE6,0xB3},
+ {0xE6,0xB2}, {0xE6,0xB0}, {0xBD,0x45}, {0xBD,0x43},
+ {0xBD,0x48}, {0xBD,0x49}, {0xE6,0xB4}, {0xBD,0x46},
+ {0xE6,0xAF}, {0xBD,0x47}, {0xBA,0xC4}, {0xE6,0xB6},
+ {0xBD,0x44}, {0xFE,0xBD}, {0xEA,0x6C}, {0xEA,0x6B},
+ {0xEA,0x73}, {0xEA,0x6D}, {0xEA,0x72}, {0xEA,0x6F},
+ {0xBF,0x60}, {0xEA,0x71}, {0xBF,0x61}, {0xBF,0x62},
+ {0x9D,0xDD}, {0xEA,0x70}, {0xEA,0x6E}, {0x9E,0xE1},
+ {0xC0,0xF8}, {0xED,0x74}, {0xC0,0xF7}, {0xED,0x77},
+ {0xED,0x75}, {0xED,0x76}, {0xC0,0xF9}, {0x98,0xDA},
+ {0x9D,0xDF}, {0xFE,0xBF}, {0xF0,0x4D}, {0xFE,0xBE},
+ {0xC2,0xA1}, {0xF0,0x4E}, {0x9E,0xEB}, {0xC2,0x7D},
+ {0xF0,0x4F}, {0xC2,0x7E}, {0xF0,0x4C}, {0xF0,0x50},
+ {0xF0,0x4A}, {0xC3,0xA7}, {0xF2,0x78}, {0xC3,0xA8},
+ {0xC4,0x6F}, {0xF0,0x4B}, {0xC4,0x70}, {0x9E,0x59},
+ {0xA0,0x5C}, {0xC4,0xEE}, {0xF5,0xDF}, {0xC5,0x7E},
+ {0xF6,0xF4}, {0xC5,0x7D}, {0xFE,0xC0}, {0xF7,0xEA},
+ {0xC5,0xF5}, {0xC5,0xF6}, {0x94,0x77}, {0x98,0xDC},
+ {0xF9,0xCC}, {0xFE,0xC1}, {0xAC,0xD1}, {0xCF,0xDE},
+ {0x98,0xDE}, {0xB5,0x6E}, {0xB5,0x6F}, {0xA5,0xD5},
+ {0xA6,0xCA}, {0xCA,0x47}, {0xCB,0x71}, {0xA8,0x6D},
+ {0xAA,0xBA}, {0xAC,0xD2}, {0xAC,0xD3}, {0xAC,0xD4},
+ {0xD6,0xA6}, {0xD2,0xCB}, {0xAF,0x6F}, {0xB2,0xAE},
+ {0xD6,0xA5}, {0xFE,0xC3}, {0xDA,0xB8}, {0xB5,0x71},
+ {0xDA,0xB7}, {0xB5,0x70}, {0xDE,0xD5}, {0xBD,0x4A},
+ {0xE6,0xBB}, {0xE6,0xB8}, {0xE6,0xB9}, {0xE6,0xBA},
+ {0xFE,0xC8}, {0xED,0x78}, {0xFE,0xC9}, {0xF0,0x51},
+ {0xF4,0x71}, {0xF4,0x70}, {0xF6,0xF5}, {0xA5,0xD6},
+ {0xCD,0x75}, {0xAF,0x70}, {0xB5,0x72}, {0xDE,0xD6},
+ {0xFE,0xCA}, {0xE2,0xE1}, {0xBD,0x4B}, {0xEA,0x74},
+ {0xF0,0x52}, {0xF4,0x72}, {0xA5,0xD7}, {0xAA,0xBB},
+ {0xAC,0xD7}, {0xCF,0xDF}, {0xAC,0xD8}, {0xAC,0xD6},
+ {0xAC,0xD5}, {0xD2,0xCC}, {0xAF,0x71}, {0xFE,0xCB},
+ {0xAF,0x72}, {0xAF,0x73}, {0xB2,0xB0}, {0xD6,0xA7},
+ {0xB2,0xAF}, {0x9F,0xC2}, {0x8C,0x6B}, {0xDA,0xB9},
+ {0xB2,0xB1}, {0xB5,0x73}, {0xDE,0xD7}, {0xB7,0xF8},
+ {0xB7,0xF9}, {0xBA,0xC9}, {0xBA,0xCA}, {0xBD,0x4C},
+ {0xBF,0x64}, {0xEA,0x75}, {0xBF,0x63}, {0xED,0x79},
+ {0xC0,0xFA}, {0xF0,0x53}, {0xF4,0x73}, {0xA5,0xD8},
+ {0xA8,0x6E}, {0xCD,0x78}, {0xCD,0x77}, {0xAA,0xBC},
+ {0xCD,0x76}, {0xAA,0xBD}, {0xCD,0x79}, {0xCF,0xE5},
+ {0xAC,0xDB}, {0xAC,0xDA}, {0xCF,0xE7}, {0xCF,0xE6},
+ {0xAC,0xDF}, {0xAC,0xDE}, {0xAC,0xD9}, {0xCF,0xE1},
+ {0xCF,0xE2}, {0xCF,0xE3}, {0xAC,0xE0}, {0xCF,0xE0},
+ {0xAC,0xDC}, {0xCF,0xE4}, {0xAC,0xDD}, {0x98,0xC4},
+ {0x94,0xB0}, {0x94,0xB1}, {0xD2,0xCF}, {0xD2,0xD3},
+ {0xD2,0xD1}, {0xD2,0xD0}, {0xD2,0xD4}, {0xD2,0xD5},
+ {0xD2,0xD6}, {0xD2,0xCE}, {0xD2,0xCD}, {0xFE,0xD1},
+ {0xAF,0x75}, {0xAF,0x76}, {0xD2,0xD7}, {0xD2,0xD2},
+ {0xA0,0xC1}, {0xD6,0xB0}, {0xFE,0xD2}, {0xD2,0xD8},
+ {0xAF,0x77}, {0xAF,0x74}, {0xA0,0xCD}, {0xD6,0xAA},
+ {0xD6,0xA9}, {0xD6,0xAB}, {0xD6,0xAC}, {0xD6,0xAE},
+ {0xD6,0xAD}, {0xD6,0xB2}, {0xB2,0xB5}, {0xB2,0xB2},
+ {0xB2,0xB6}, {0xD6,0xA8}, {0xB2,0xB7}, {0xD6,0xB1},
+ {0xB2,0xB4}, {0xD6,0xAF}, {0xB2,0xB3}, {0xFE,0xD3},
+ {0x98,0xE5}, {0xDA,0xBC}, {0xDA,0xBE}, {0xDA,0xBA},
+ {0xDA,0xBB}, {0xDA,0xBF}, {0xDA,0xC1}, {0xDA,0xC2},
+ {0xDA,0xBD}, {0xDA,0xC0}, {0xB5,0x74}, {0xDE,0xDB},
+ {0xDE,0xE0}, {0xDE,0xD8}, {0xDE,0xDC}, {0xFE,0xD6},
+ {0xDE,0xE1}, {0xDE,0xDD}, {0xB7,0xFA}, {0xB8,0x43},
+ {0xB7,0xFD}, {0xDE,0xD9}, {0xDE,0xDA}, {0xBA,0xCE},
+ {0xB8,0x46}, {0xB7,0xFE}, {0xB8,0x44}, {0xB7,0xFC},
+ {0xDE,0xDF}, {0xB8,0x45}, {0xDE,0xDE}, {0xB8,0x41},
+ {0xB7,0xFB}, {0xB8,0x42}, {0xDE,0xE2}, {0xE2,0xE6},
+ {0xE2,0xE8}, {0x91,0xE4}, {0x8F,0xC7}, {0x94,0xAE},
+ {0xB8,0x40}, {0x8A,0x4F}, {0x94,0xB2}, {0xE2,0xE3},
+ {0xBA,0xCC}, {0xE2,0xE9}, {0xBA,0xCD}, {0xE2,0xE7},
+ {0xE2,0xE2}, {0xE2,0xE5}, {0xE2,0xEA}, {0xBA,0xCB},
+ {0xE2,0xE4}, {0xBD,0x4E}, {0xE6,0xBF}, {0xE6,0xBE},
+ {0xBD,0x51}, {0xBD,0x4F}, {0xE6,0xBC}, {0xBD,0x4D},
+ {0xE6,0xBD}, {0xBD,0x50}, {0x8F,0xD4}, {0xEA,0x7D},
+ {0xEA,0xA1}, {0x98,0xEA}, {0xEA,0x7E}, {0xEA,0x76},
+ {0xEA,0x7A}, {0xEA,0x79}, {0xEA,0x77}, {0xBF,0x66},
+ {0xBF,0x67}, {0xBF,0x65}, {0xEA,0x78}, {0xEA,0x7B},
+ {0xEA,0x7C}, {0xBF,0x68}, {0xC1,0x40}, {0xED,0xA3},
+ {0xC0,0xFC}, {0xED,0x7B}, {0xC0,0xFE}, {0xC1,0x41},
+ {0xFE,0xD8}, {0xC0,0xFD}, {0xED,0xA2}, {0xED,0x7C},
+ {0xC0,0xFB}, {0xED,0xA1}, {0xED,0x7A}, {0xED,0x7E},
+ {0xED,0x7D}, {0x9D,0xE0}, {0xF0,0x55}, {0xC2,0xA4},
+ {0xC2,0xA5}, {0xC2,0xA2}, {0x98,0xEE}, {0xC2,0xA3},
+ {0xF0,0x54}, {0x95,0xC4}, {0xF2,0x7B}, {0xFC,0xE8},
+ {0xC3,0xA9}, {0xF2,0x79}, {0xF2,0x7A}, {0x98,0xEF},
+ {0xF4,0x74}, {0xF4,0x77}, {0xF4,0x75}, {0xF4,0x76},
+ {0xF5,0xE0}, {0xC4,0xEF}, {0xF7,0xEB}, {0xF8,0xB4},
+ {0xC5,0xF7}, {0xF8,0xF8}, {0xF8,0xF9}, {0xC6,0x66},
+ {0xA5,0xD9}, {0xAC,0xE1}, {0x8C,0x6E}, {0xDA,0xC3},
+ {0xDE,0xE3}, {0xA5,0xDA}, {0xA8,0x6F}, {0xAA,0xBE},
+ {0xFA,0xD8}, {0xCF,0xE8}, {0xCF,0xE9}, {0xAF,0x78},
+ {0xDA,0xC4}, {0xB5,0x75}, {0xB8,0x47}, {0xC1,0x42},
+ {0xED,0xA4}, {0xF2,0x7C}, {0xF4,0x78}, {0xA5,0xDB},
+ {0xFE,0xDC}, {0xCD,0xA1}, {0xCD,0x7A}, {0xCD,0x7C},
+ {0xCD,0x7E}, {0xCD,0x7D}, {0xCD,0x7B}, {0xAA,0xBF},
+ {0xA0,0xAE}, {0xAC,0xE2}, {0xCF,0xF2}, {0xCF,0xED},
+ {0xCF,0xEA}, {0x9D,0x4C}, {0xCF,0xF1}, {0xAC,0xE4},
+ {0xAC,0xE5}, {0xCF,0xF0}, {0xCF,0xEF}, {0xCF,0xEE},
+ {0xCF,0xEB}, {0xCF,0xEC}, {0xCF,0xF3}, {0xAC,0xE3},
+ {0x98,0xF1}, {0x98,0xF3}, {0xAF,0x7C}, {0x94,0xC1},
+ {0xAF,0xA4}, {0xAF,0xA3}, {0xD2,0xE1}, {0xD2,0xDB},
+ {0xD2,0xD9}, {0xAF,0xA1}, {0xD6,0xB9}, {0xAF,0x7A},
+ {0xD2,0xDE}, {0xD2,0xE2}, {0xD2,0xE4}, {0xD2,0xE0},
+ {0xD2,0xDA}, {0xAF,0xA2}, {0xD2,0xDF}, {0xD2,0xDD},
+ {0xAF,0x79}, {0xD2,0xE5}, {0xAF,0xA5}, {0xD2,0xE3},
+ {0xAF,0x7D}, {0xD2,0xDC}, {0xAF,0x7E}, {0xAF,0x7B},
+ {0x98,0xF5}, {0xFA,0x4F}, {0x96,0xE2}, {0x94,0x50},
+ {0xB2,0xB9}, {0x96,0xA2}, {0xD6,0xBA}, {0x98,0xF6},
+ {0xD6,0xB3}, {0xD6,0xB5}, {0xD6,0xB7}, {0x96,0xE5},
+ {0xD6,0xB8}, {0xD6,0xB6}, {0xB2,0xBA}, {0xD6,0xBB},
+ {0x98,0xF7}, {0xD6,0xB4}, {0xA0,0x46}, {0x96,0xE3},
+ {0xDA,0xC8}, {0xB5,0x76}, {0xDA,0xD0}, {0xDA,0xC5},
+ {0xDA,0xD1}, {0xDA,0xC6}, {0xDA,0xC7}, {0x98,0xF8},
+ {0xDA,0xCF}, {0xDA,0xCE}, {0xDA,0xCB}, {0xB2,0xB8},
+ {0xB5,0x77}, {0xDA,0xC9}, {0xDA,0xCC}, {0xB5,0x78},
+ {0xDA,0xCD}, {0xDA,0xCA}, {0xDE,0xEE}, {0x9E,0xE4},
+ {0xDE,0xF2}, {0xB8,0x4E}, {0xE2,0xF0}, {0xB8,0x51},
+ {0xDE,0xF0}, {0xF9,0xD6}, {0xDE,0xED}, {0xDE,0xE8},
+ {0xDE,0xEA}, {0xDE,0xEB}, {0xDE,0xE4}, {0x94,0xC3},
+ {0xB8,0x4D}, {0xB8,0x4C}, {0x94,0xC2}, {0xB8,0x48},
+ {0xDE,0xE7}, {0xB8,0x4F}, {0xB8,0x50}, {0xDE,0xE6},
+ {0xDE,0xE9}, {0xDE,0xF1}, {0xB8,0x4A}, {0xB8,0x4B},
+ {0xDE,0xEF}, {0xDE,0xE5}, {0xE2,0xF2}, {0xBA,0xD0},
+ {0xE2,0xF4}, {0xDE,0xEC}, {0xE2,0xF6}, {0xBA,0xD4},
+ {0xE2,0xF7}, {0xE2,0xF3}, {0xBA,0xD1}, {0xE2,0xEF},
+ {0xBA,0xD3}, {0xE2,0xEC}, {0xE2,0xF1}, {0xE2,0xF5},
+ {0xE2,0xEE}, {0xFE,0xE1}, {0xB8,0x49}, {0xFE,0xE9},
+ {0xE2,0xEB}, {0xBA,0xD2}, {0xE2,0xED}, {0x96,0xE4},
+ {0x89,0xAC}, {0x96,0xDB}, {0xBD,0x54}, {0xE6,0xC1},
+ {0xBD,0x58}, {0xBD,0x56}, {0xBA,0xCF}, {0xE6,0xC8},
+ {0xE6,0xC9}, {0xBD,0x53}, {0xFE,0xE2}, {0xE6,0xC7},
+ {0xE6,0xCA}, {0xBD,0x55}, {0xBD,0x52}, {0xE6,0xC3},
+ {0xE6,0xC0}, {0xE6,0xC5}, {0xE6,0xC2}, {0xBD,0x59},
+ {0xE6,0xC4}, {0x94,0xC4}, {0xFE,0xE3}, {0xE6,0xC6},
+ {0xBD,0x57}, {0xFE,0xE7}, {0x9F,0xFB}, {0xBF,0x6A},
+ {0xEA,0xA8}, {0xEA,0xA2}, {0xEA,0xA6}, {0xEA,0xAC},
+ {0xEA,0xAD}, {0xEA,0xA9}, {0xEA,0xAA}, {0xEA,0xA7},
+ {0x8C,0x59}, {0xEA,0xA4}, {0xBF,0x6C}, {0xBF,0x69},
+ {0xEA,0xA3}, {0xEA,0xA5}, {0xBF,0x6B}, {0xEA,0xAB},
+ {0x93,0xC9}, {0xC1,0x46}, {0x94,0xE8}, {0xFB,0x56},
+ {0xED,0xAA}, {0xED,0xA5}, {0xC1,0x45}, {0x90,0xC5},
+ {0xC1,0x43}, {0xED,0xAC}, {0xC1,0x44}, {0xED,0xA8},
+ {0xED,0xA9}, {0xED,0xA6}, {0xED,0xAD}, {0xF0,0x56},
+ {0xC1,0x47}, {0xED,0xA7}, {0xED,0xAE}, {0xED,0xAB},
+ {0xA0,0xA8}, {0xF0,0x5A}, {0xF0,0x57}, {0xC2,0xA6},
+ {0xF0,0x5B}, {0xF0,0x5D}, {0xF0,0x5C}, {0xF0,0x58},
+ {0xF0,0x59}, {0xF2,0xA3}, {0xC3,0xAA}, {0xF2,0x7E},
+ {0xF2,0xA2}, {0xF2,0x7D}, {0xF2,0xA4}, {0xF2,0xA1},
+ {0xF4,0x7A}, {0xF4,0x7D}, {0xF4,0x79}, {0xC4,0x71},
+ {0xF4,0x7B}, {0xF4,0x7C}, {0xF4,0x7E}, {0xC4,0x72},
+ {0xC4,0x74}, {0xC4,0x73}, {0xF5,0xE1}, {0xFE,0xE5},
+ {0xF5,0xE3}, {0xF5,0xE2}, {0x98,0xFD}, {0x98,0xFB},
+ {0xFE,0xE8}, {0xF6,0xF6}, {0x8E,0xBF}, {0xF8,0xB5},
+ {0xF8,0xFA}, {0xA5,0xDC}, {0x8B,0xD8}, {0xFE,0xF7},
+ {0xCB,0x72}, {0xAA,0xC0}, {0xCD,0xA3}, {0xAA,0xC1},
+ {0xAA,0xC2}, {0xCD,0xA2}, {0xCF,0xF8}, {0xCF,0xF7},
+ {0xAC,0xE6}, {0xAC,0xE9}, {0xAC,0xE8}, {0xAC,0xE7},
+ {0xCF,0xF4}, {0xCF,0xF6}, {0xCF,0xF5}, {0xD2,0xE8},
+ {0xAF,0xA7}, {0xD2,0xEC}, {0xD2,0xEB}, {0xD2,0xEA},
+ {0xD2,0xE6}, {0xAF,0xA6}, {0xAF,0xAA}, {0xAF,0xAD},
+ {0x8F,0x68}, {0x94,0xC6}, {0xAF,0xAE}, {0xD2,0xE7},
+ {0xD2,0xE9}, {0xAF,0xAC}, {0xAF,0xAB}, {0xAF,0xA9},
+ {0xAF,0xA8}, {0xD6,0xC2}, {0x9D,0xEA}, {0xD6,0xC0},
+ {0xD6,0xBC}, {0xB2,0xBB}, {0xD6,0xBD}, {0xB2,0xBC},
+ {0xD6,0xBE}, {0xD6,0xBF}, {0xD6,0xC1}, {0xB2,0xBD},
+ {0xDA,0xD5}, {0xFC,0x69}, {0xDA,0xD4}, {0xDA,0xD3},
+ {0xDA,0xD2}, {0xDE,0xF6}, {0xB8,0x52}, {0xDE,0xF3},
+ {0xDE,0xF5}, {0x9C,0xDA}, {0xB8,0x53}, {0xFE,0xF3},
+ {0xB8,0x54}, {0xDE,0xF4}, {0x9C,0x72}, {0xFE,0xF0},
+ {0x89,0xC9}, {0xE3,0x41}, {0xE2,0xF9}, {0xE2,0xFA},
+ {0xBA,0xD7}, {0xBA,0xD5}, {0xBA,0xD6}, {0xE3,0x43},
+ {0x99,0x41}, {0xE3,0x42}, {0xE2,0xFE}, {0xE2,0xFD},
+ {0xE2,0xFC}, {0xE2,0xFB}, {0xE3,0x40}, {0xE2,0xF8},
+ {0x99,0x42}, {0xE6,0xCB}, {0xE6,0xD0}, {0xE6,0xCE},
+ {0xFE,0xF5}, {0x91,0xD7}, {0xE6,0xCD}, {0xE6,0xCC},
+ {0xE6,0xCF}, {0xEA,0xAE}, {0x94,0xCC}, {0xBF,0x6D},
+ {0xC1,0x48}, {0xED,0xB0}, {0xFE,0xF8}, {0xC1,0x49},
+ {0xED,0xAF}, {0xF0,0x5F}, {0xF0,0x5E}, {0xC2,0xA7},
+ {0xF2,0xA5}, {0xC3,0xAB}, {0xF4,0xA1}, {0xC5,0xA1},
+ {0xF6,0xF7}, {0xF8,0xB7}, {0xF8,0xB6}, {0xC9,0xA8},
+ {0xAC,0xEA}, {0xAC,0xEB}, {0xD6,0xC3}, {0xB8,0x56},
+ {0xA5,0xDD}, {0xA8,0x72}, {0xA8,0x71}, {0xA8,0x70},
+ {0x97,0xA8}, {0xCD,0xA4}, {0xFE,0xFC}, {0xAA,0xC4},
+ {0xAA,0xC3}, {0xAC,0xEE}, {0xFD,0xBF}, {0xCF,0xFA},
+ {0xCF,0xFD}, {0xCF,0xFB}, {0xAC,0xEC}, {0xAC,0xED},
+ {0xFE,0xFE}, {0xCF,0xF9}, {0xCF,0xFC}, {0xAF,0xB5},
+ {0xD2,0xF3}, {0xD2,0xF5}, {0xD2,0xF4}, {0xAF,0xB2},
+ {0xD2,0xEF}, {0x96,0xD1}, {0xAF,0xB0}, {0xAF,0xAF},
+ {0xAF,0xB3}, {0xAF,0xB1}, {0xAF,0xB4}, {0xD2,0xF2},
+ {0xD2,0xED}, {0xD2,0xEE}, {0xD2,0xF1}, {0xD2,0xF0},
+ {0x94,0xD5}, {0x94,0xD0}, {0xD6,0xC6}, {0xD6,0xC7},
+ {0xD6,0xC5}, {0xD6,0xC4}, {0xB2,0xBE}, {0xB5,0x7D},
+ {0xDA,0xD6}, {0xDA,0xD8}, {0xDA,0xDA}, {0xB5,0x7C},
+ {0x99,0x44}, {0xB5,0x7A}, {0xDA,0xD7}, {0xB5,0x7B},
+ {0xDA,0xD9}, {0xB5,0x79}, {0xDF,0x41}, {0xDE,0xF7},
+ {0xDE,0xFA}, {0xDE,0xFE}, {0xB8,0x5A}, {0xDE,0xFC},
+ {0xDE,0xFB}, {0xDE,0xF8}, {0xDE,0xF9}, {0xB8,0x58},
+ {0xDF,0x40}, {0xB8,0x57}, {0xB8,0x5C}, {0xB8,0x5B},
+ {0xB8,0x59}, {0xDE,0xFD}, {0xE3,0x49}, {0xE3,0x48},
+ {0x8C,0x63}, {0xE3,0x44}, {0xA0,0xB3}, {0xBA,0xD8},
+ {0xE3,0x47}, {0xE3,0x46}, {0xBA,0xD9}, {0xBD,0x5E},
+ {0xE6,0xD2}, {0x94,0xCF}, {0xBD,0x5F}, {0xBD,0x5B},
+ {0xBD,0x5D}, {0x9F,0xFA}, {0xBD,0x5A}, {0xBD,0x5C},
+ {0x91,0xE5}, {0xEA,0xAF}, {0x9C,0x6A}, {0xBF,0x70},
+ {0xEA,0xB1}, {0xEA,0xB0}, {0x8E,0x49}, {0xE3,0x45},
+ {0xBF,0x72}, {0xBF,0x71}, {0xBF,0x6E}, {0xBF,0x6F},
+ {0xED,0xB5}, {0xED,0xB3}, {0xC1,0x4A}, {0xED,0xB4},
+ {0xED,0xB6}, {0xED,0xB2}, {0xED,0xB1}, {0xF0,0x60},
+ {0xC2,0xAA}, {0xC2,0xA8}, {0xC2,0xA9}, {0x8E,0x4C},
+ {0xF2,0xA6}, {0xF2,0xA7}, {0xC3,0xAD}, {0xC3,0xAC},
+ {0xF4,0xA3}, {0xF4,0xA4}, {0xF4,0xA2}, {0xF6,0xF8},
+ {0xF6,0xF9}, {0xA5,0xDE}, {0xCA,0x48}, {0xA8,0x73},
+ {0xCD,0xA5}, {0xAA,0xC6}, {0xAA,0xC5}, {0xCD,0xA6},
+ {0x8E,0x4D}, {0xD0,0x40}, {0xAC,0xEF}, {0xCF,0xFE},
+ {0xAC,0xF0}, {0x9A,0x73}, {0xAF,0xB6}, {0xD2,0xF8},
+ {0xD2,0xF6}, {0xD2,0xFC}, {0xAF,0xB7}, {0xD2,0xF7},
+ {0xD2,0xFB}, {0xD2,0xF9}, {0xD2,0xFA}, {0xD6,0xC8},
+ {0xD6,0xCA}, {0x99,0x47}, {0xB2,0xBF}, {0x8C,0xB1},
+ {0xD6,0xC9}, {0xB2,0xC0}, {0xB5,0xA2}, {0xB5,0xA1},
+ {0xB5,0x7E}, {0xDA,0xDB}, {0xDF,0x44}, {0xB8,0x5D},
+ {0xB8,0x5E}, {0xDF,0x43}, {0xDF,0x42}, {0xE3,0x4A},
+ {0xBA,0xDB}, {0xBA,0xDA}, {0xE3,0x4B}, {0xE3,0x4C},
+ {0xBD,0x61}, {0xBD,0x60}, {0x8E,0x50}, {0xEA,0xB5},
+ {0xE6,0xD3}, {0xE6,0xD5}, {0xE6,0xD4}, {0xEA,0xB4},
+ {0xEA,0xB2}, {0xEA,0xB6}, {0xEA,0xB3}, {0xBF,0x73},
+ {0x8E,0x4F}, {0x99,0x49}, {0xED,0xB7}, {0xC1,0x4B},
+ {0xED,0xB8}, {0xED,0xB9}, {0x8E,0x51}, {0x8E,0x52},
+ {0xC2,0xAB}, {0xC2,0xAC}, {0xC4,0x75}, {0x9A,0xB2},
+ {0x89,0xA5}, {0xC5,0xD1}, {0xA5,0xDF}, {0x99,0x4C},
+ {0xD0,0x41}, {0x9F,0xF8}, {0xD2,0xFD}, {0xAF,0xB8},
+ {0x8E,0x56}, {0x99,0x4D}, {0x91,0xCA}, {0x8E,0x57},
+ {0xB3,0xBA}, {0xB3,0xB9}, {0x94,0xE1}, {0xB5,0xA4},
+ {0xDA,0xDD}, {0xB5,0xA3}, {0xDA,0xDC}, {0x90,0x47},
+ {0x8F,0xD8}, {0x8E,0x58}, {0xDF,0x45}, {0xBA,0xDC},
+ {0xE3,0x4D}, {0xBA,0xDD}, {0xC4,0x76}, {0xF4,0xA5},
+ {0xA6,0xCB}, {0xAA,0xC7}, {0xCD,0xA7}, {0xAC,0xF2},
+ {0x94,0xEB}, {0xAC,0xF1}, {0xD0,0x42}, {0xD0,0x43},
+ {0xD3,0x40}, {0xD3,0x42}, {0xAF,0xB9}, {0xD3,0x44},
+ {0xD3,0x47}, {0xD3,0x45}, {0x8E,0x5C}, {0x95,0x53},
+ {0xD3,0x46}, {0xD3,0x43}, {0xD2,0xFE}, {0xAF,0xBA},
+ {0xD3,0x48}, {0xD3,0x41}, {0x9F,0xE5}, {0xD6,0xD3},
+ {0xB2,0xC6}, {0xD6,0xDC}, {0xB2,0xC3}, {0xD6,0xD5},
+ {0xB2,0xC7}, {0x9F,0x56}, {0xB2,0xC1}, {0xD6,0xD0},
+ {0xD6,0xDD}, {0xD6,0xD1}, {0xD6,0xCE}, {0xB2,0xC5},
+ {0x95,0x4F}, {0xB2,0xC2}, {0x8E,0x5E}, {0xD6,0xD4},
+ {0xD6,0xD7}, {0xB2,0xC4}, {0xD6,0xD8}, {0xB2,0xC8},
+ {0xD6,0xD9}, {0xD6,0xCF}, {0xD6,0xD6}, {0xD6,0xDA},
+ {0xD6,0xD2}, {0xD6,0xCD}, {0xD6,0xCB}, {0xD6,0xDB},
+ {0x99,0x6A}, {0xDA,0xDF}, {0xDA,0xE4}, {0x9C,0x64},
+ {0x9C,0xD9}, {0xDA,0xE0}, {0xDA,0xE6}, {0xB5,0xA7},
+ {0xD6,0xCC}, {0xDA,0xE1}, {0xB5,0xA5}, {0xDA,0xDE},
+ {0xB5,0xAC}, {0xDA,0xE2}, {0xB5,0xAB}, {0xDA,0xE3},
+ {0xB5,0xAD}, {0xB5,0xA8}, {0xB5,0xAE}, {0xB5,0xA9},
+ {0xB5,0xAA}, {0x8E,0x5D}, {0xB5,0xA6}, {0xDA,0xE5},
+ {0xB8,0x61}, {0xDF,0x50}, {0x99,0x50}, {0xDF,0x53},
+ {0xDF,0x47}, {0xDF,0x4C}, {0xDF,0x46}, {0xB8,0x63},
+ {0xDF,0x4A}, {0x99,0x51}, {0xDF,0x48}, {0xB8,0x62},
+ {0x8E,0x62}, {0xDF,0x4F}, {0xDF,0x4E}, {0xDF,0x4B},
+ {0xDF,0x4D}, {0xDF,0x49}, {0xBA,0xE1}, {0xDF,0x52},
+ {0xB8,0x5F}, {0xDF,0x51}, {0x99,0x52}, {0xE3,0x5D},
+ {0xBA,0xE8}, {0xE3,0x58}, {0xBA,0xE7}, {0xE3,0x4E},
+ {0xE3,0x50}, {0xBA,0xE0}, {0xE3,0x55}, {0xE3,0x54},
+ {0xE3,0x57}, {0xBA,0xE5}, {0xE3,0x52}, {0xE3,0x51},
+ {0x8E,0x68}, {0xBA,0xE4}, {0xBA,0xDF}, {0xE3,0x53},
+ {0xBA,0xE2}, {0xE3,0x59}, {0xE3,0x5B}, {0xE3,0x56},
+ {0xE3,0x4F}, {0xBA,0xE3}, {0xBD,0x69}, {0xBA,0xDE},
+ {0x8E,0x61}, {0x9F,0x59}, {0xE3,0x5C}, {0xE6,0xD9},
+ {0xBD,0x62}, {0xE6,0xDB}, {0xBD,0x63}, {0x8B,0xB3},
+ {0xBD,0x65}, {0xE6,0xDE}, {0xE6,0xD6}, {0xBA,0xE6},
+ {0xE6,0xDC}, {0xE6,0xD8}, {0xB8,0x60}, {0xBD,0x68},
+ {0xBD,0x64}, {0xBD,0x66}, {0xBD,0x67}, {0xBF,0x76},
+ {0xE6,0xDD}, {0xE6,0xD7}, {0xBD,0x6A}, {0xE6,0xDA},
+ {0x9F,0x5D}, {0x8E,0x66}, {0xEA,0xC0}, {0xEA,0xBB},
+ {0xEA,0xC5}, {0xBF,0x74}, {0xEA,0xBD}, {0xBF,0x78},
+ {0xEA,0xC3}, {0xEA,0xBA}, {0xEA,0xB7}, {0xEA,0xC6},
+ {0xC1,0x51}, {0xBF,0x79}, {0xEA,0xC2}, {0xEA,0xB8},
+ {0xBF,0x77}, {0xEA,0xBC}, {0xBF,0x7B}, {0xEA,0xB9},
+ {0xEA,0xBE}, {0xBF,0x7A}, {0xEA,0xC1}, {0xEA,0xC4},
+ {0x8C,0xB2}, {0xED,0xCB}, {0xED,0xCC}, {0xED,0xBC},
+ {0xED,0xC3}, {0xED,0xC1}, {0xC1,0x4F}, {0xED,0xC8},
+ {0xEA,0xBF}, {0x8E,0x6E}, {0xED,0xBF}, {0x9F,0x64},
+ {0xED,0xC9}, {0xC1,0x4E}, {0xED,0xBE}, {0xED,0xBD},
+ {0xED,0xC7}, {0xED,0xC4}, {0xED,0xC6}, {0xED,0xBA},
+ {0xED,0xCA}, {0xC1,0x4C}, {0xED,0xC5}, {0xED,0xCE},
+ {0xED,0xC2}, {0xC1,0x50}, {0xC1,0x4D}, {0xED,0xC0},
+ {0xED,0xBB}, {0xED,0xCD}, {0xBF,0x75}, {0x99,0x53},
+ {0xFA,0xB8}, {0xF0,0x63}, {0x99,0x54}, {0xF0,0x61},
+ {0xF0,0x67}, {0xC2,0xB0}, {0xF0,0x65}, {0xF0,0x64},
+ {0xC2,0xB2}, {0xF0,0x6A}, {0xC2,0xB1}, {0xF0,0x6B},
+ {0xF0,0x68}, {0xC2,0xAE}, {0xF0,0x69}, {0xF0,0x62},
+ {0xC2,0xAF}, {0xC2,0xAD}, {0xF2,0xAB}, {0xF0,0x66},
+ {0xF0,0x6C}, {0xF2,0xA8}, {0x8E,0x70}, {0xC3,0xB2},
+ {0xC3,0xB0}, {0xF2,0xAA}, {0xF2,0xAC}, {0xF2,0xA9},
+ {0xC3,0xB1}, {0xC3,0xAE}, {0xC3,0xAF}, {0xC3,0xB3},
+ {0x9F,0x61}, {0xC4,0x78}, {0x8E,0x72}, {0xF4,0xAA},
+ {0xF4,0xA9}, {0xF4,0xA7}, {0xF4,0xA6}, {0xF4,0xA8},
+ {0xC4,0x77}, {0xC4,0x79}, {0xC4,0xF0}, {0xA0,0x6B},
+ {0xF5,0xE5}, {0xF5,0xE4}, {0x9F,0x40}, {0xF6,0xFA},
+ {0xF6,0xFC}, {0xF6,0xFE}, {0xF6,0xFD}, {0xF6,0xFB},
+ {0x94,0xED}, {0xC5,0xA3}, {0xC5,0xA2}, {0xC5,0xD3},
+ {0xC5,0xD2}, {0xC5,0xD4}, {0xF7,0xED}, {0xF7,0xEC},
+ {0xF8,0xFB}, {0xF8,0xB8}, {0xF8,0xFC}, {0xC6,0x58},
+ {0x94,0xEE}, {0xC6,0x59}, {0xF9,0x6D}, {0x9F,0xBD},
+ {0xC6,0x7E}, {0xA6,0xCC}, {0x8E,0x7B}, {0xCD,0xA8},
+ {0xD0,0x45}, {0xD0,0x46}, {0xD0,0x44}, {0x99,0x57},
+ {0x94,0xF7}, {0xAC,0xF3}, {0x9F,0x5F}, {0xD0,0x47},
+ {0xD0,0x48}, {0xD0,0x49}, {0x8E,0x73}, {0xD3,0x49},
+ {0xD3,0x4F}, {0x9F,0x62}, {0xD3,0x4D}, {0xAF,0xBB},
+ {0xD3,0x4B}, {0xD3,0x4C}, {0xD3,0x4E}, {0x94,0xF6},
+ {0xD3,0x4A}, {0xB2,0xC9}, {0xD6,0xDE}, {0xB2,0xCB},
+ {0xD6,0xE0}, {0xB2,0xCA}, {0xD6,0xDF}, {0x99,0x58},
+ {0xDA,0xE8}, {0xB5,0xAF}, {0xDA,0xEA}, {0xDA,0xE7},
+ {0xD6,0xE1}, {0xB5,0xB0}, {0x8E,0x75}, {0xF9,0xDB},
+ {0xDA,0xE9}, {0x90,0x72}, {0x94,0xF8}, {0xDF,0x56},
+ {0xB8,0x64}, {0xDF,0x54}, {0xB8,0x65}, {0xDF,0x55},
+ {0xB8,0x66}, {0x99,0x5A}, {0xBA,0xE9}, {0xE3,0x61},
+ {0xE3,0x5E}, {0xE3,0x60}, {0xBA,0xEA}, {0xBA,0xEB},
+ {0xE3,0x5F}, {0xA0,0xB0}, {0x8C,0xB3}, {0xE6,0xDF},
+ {0x8E,0x79}, {0xE6,0xE0}, {0x8E,0x78}, {0xBD,0x6B},
+ {0xE6,0xE2}, {0xE6,0xE1}, {0x94,0xF3}, {0xA2,0x61},
+ {0xEA,0xCA}, {0xEA,0xCB}, {0xEA,0xC7}, {0x98,0xAF},
+ {0xEA,0xC8}, {0xBF,0x7C}, {0xBF,0x7D}, {0xEA,0xC9},
+ {0xC1,0x57}, {0xA0,0xB2}, {0xC1,0x53}, {0xC1,0x58},
+ {0xC1,0x54}, {0xC1,0x56}, {0xC1,0x52}, {0xC1,0x55},
+ {0x8E,0x7A}, {0xC2,0xB3}, {0xED,0xCF}, {0xF2,0xAE},
+ {0xF2,0xAD}, {0x99,0x5C}, {0xF4,0xAB}, {0xC4,0x7A},
+ {0xC4,0x7B}, {0xF7,0x41}, {0xF5,0xE6}, {0x8E,0x7C},
+ {0xF7,0x40}, {0x8E,0x7D}, {0xF8,0xFD}, {0xF9,0xA4},
+ {0xA6,0xCD}, {0x8B,0xD9}, {0xA8,0x74}, {0x89,0xA2},
+ {0xCD,0xA9}, {0xAA,0xC8}, {0xAC,0xF6}, {0xD0,0x4C},
+ {0xAC,0xF4}, {0xD0,0x4A}, {0xAC,0xF9}, {0xAC,0xF5},
+ {0xAC,0xFA}, {0xAC,0xF8}, {0xD0,0x4B}, {0xAC,0xF7},
+ {0xAF,0xBF}, {0xAF,0xBE}, {0xD3,0x5A}, {0xAF,0xC7},
+ {0xD3,0x53}, {0xD3,0x59}, {0xAF,0xC3}, {0xD3,0x52},
+ {0xD3,0x58}, {0xD3,0x56}, {0xAF,0xC2}, {0xAF,0xC4},
+ {0xD3,0x55}, {0xAF,0xBD}, {0xD3,0x54}, {0xAF,0xC8},
+ {0xAF,0xC5}, {0xAF,0xC9}, {0xAF,0xC6}, {0xD3,0x51},
+ {0xD3,0x50}, {0xD3,0x57}, {0xAF,0xC0}, {0xAF,0xBC},
+ {0xAF,0xC1}, {0x9E,0xD7}, {0xD6,0xF0}, {0xD6,0xE9},
+ {0xB5,0xB5}, {0xD6,0xE8}, {0xB2,0xCF}, {0xB2,0xD6},
+ {0xB2,0xD3}, {0xB2,0xD9}, {0xB2,0xD8}, {0xB2,0xD4},
+ {0xD6,0xE2}, {0xD6,0xE5}, {0xD6,0xE4}, {0xB2,0xD0},
+ {0xD6,0xE6}, {0xD6,0xEF}, {0xB2,0xD1}, {0xD6,0xE3},
+ {0xD6,0xEC}, {0xD6,0xED}, {0xB2,0xD2}, {0xD6,0xEA},
+ {0xB2,0xD7}, {0xB2,0xCD}, {0xB2,0xD5}, {0xD6,0xE7},
+ {0xB2,0xCC}, {0xD6,0xEB}, {0xD6,0xEE}, {0xA0,0xB6},
+ {0xDA,0xFB}, {0xDA,0xF2}, {0xB5,0xB2}, {0xDA,0xF9},
+ {0xDA,0xF6}, {0xDA,0xEE}, {0xDA,0xF7}, {0xB5,0xB4},
+ {0xDA,0xEF}, {0xDA,0xEB}, {0x9E,0x42}, {0xB8,0x6C},
+ {0xDA,0xF4}, {0x8E,0xA4}, {0xB5,0xB1}, {0xDA,0xFA},
+ {0xB5,0xB8}, {0xB5,0xBA}, {0xDA,0xED}, {0xB5,0xB9},
+ {0xDA,0xF0}, {0xB5,0xB3}, {0xDA,0xF8}, {0xDA,0xF1},
+ {0xDA,0xF5}, {0xDA,0xF3}, {0xB5,0xB6}, {0xDA,0xEC},
+ {0xB5,0xBB}, {0xB2,0xCE}, {0xB5,0xB7}, {0xB5,0xBC},
+ {0xB8,0x68}, {0xDF,0x5D}, {0xDF,0x5F}, {0xDF,0x61},
+ {0xDF,0x65}, {0xDF,0x5B}, {0xDF,0x59}, {0xB8,0x6A},
+ {0xDF,0x60}, {0xDF,0x64}, {0xDF,0x5C}, {0xDF,0x58},
+ {0xDF,0x57}, {0x8E,0xA7}, {0x8C,0x76}, {0xDF,0x62},
+ {0xDF,0x5A}, {0xDF,0x5E}, {0xB8,0x6B}, {0xB8,0x69},
+ {0xDF,0x66}, {0xB8,0x67}, {0xDF,0x63}, {0xE3,0x72},
+ {0x95,0x42}, {0xBA,0xEE}, {0xE3,0x6A}, {0xBD,0x78},
+ {0xE3,0x74}, {0xBA,0xF1}, {0xE3,0x78}, {0xBA,0xF7},
+ {0xE3,0x65}, {0x98,0x7D}, {0xE3,0x75}, {0xE3,0x62},
+ {0x97,0x55}, {0xE3,0x77}, {0xE3,0x66}, {0x8E,0xA8},
+ {0xBA,0xFE}, {0xBA,0xFB}, {0xE3,0x76}, {0xE3,0x70},
+ {0xBA,0xED}, {0xBA,0xF5}, {0xBA,0xF4}, {0x8E,0xAA},
+ {0xBA,0xF3}, {0xBA,0xF9}, {0xE3,0x63}, {0xBA,0xFA},
+ {0xE3,0x71}, {0xBA,0xF6}, {0xBA,0xEC}, {0xE3,0x73},
+ {0xBA,0xEF}, {0xBA,0xF0}, {0xBA,0xF8}, {0xE3,0x68},
+ {0xE3,0x67}, {0xE3,0x64}, {0xE3,0x6C}, {0xE3,0x69},
+ {0xE3,0x6D}, {0xBA,0xFD}, {0xE3,0x79}, {0xBA,0xF2},
+ {0xE3,0x6E}, {0xE3,0x6F}, {0x89,0xA3}, {0xE3,0x6B},
+ {0x99,0x60}, {0x99,0x62}, {0xBA,0xFC}, {0x94,0xFC},
+ {0x99,0x61}, {0xE6,0xE7}, {0xBD,0x70}, {0xBD,0x79},
+ {0xBD,0x75}, {0xE6,0xE4}, {0x94,0xFA}, {0xBD,0x72},
+ {0xBD,0x76}, {0xE6,0xF0}, {0xBD,0x6C}, {0xE6,0xE8},
+ {0xBD,0x74}, {0x8E,0xAE}, {0x8E,0xB2}, {0xE6,0xEB},
+ {0xE6,0xE6}, {0xBD,0x73}, {0xBD,0x77}, {0xE6,0xE5},
+ {0xBD,0x71}, {0xE6,0xEF}, {0xBD,0x6E}, {0xE6,0xEE},
+ {0xE6,0xED}, {0xBD,0x7A}, {0xE5,0x72}, {0xBD,0x6D},
+ {0x8E,0xB0}, {0xE6,0xEC}, {0xE6,0xE3}, {0xBD,0x7B},
+ {0xE6,0xEA}, {0xBD,0x6F}, {0x99,0x63}, {0x97,0xAA},
+ {0xE6,0xE9}, {0x94,0xFB}, {0xBF,0xA2}, {0xBF,0xA7},
+ {0xBF,0x7E}, {0xEA,0xD8}, {0xEA,0xCF}, {0xEA,0xDB},
+ {0xEA,0xD3}, {0xEA,0xD9}, {0xBF,0xA8}, {0xBF,0xA1},
+ {0xEA,0xCC}, {0xEA,0xD2}, {0xEA,0xDC}, {0xEA,0xD5},
+ {0xEA,0xDA}, {0xEA,0xCE}, {0xEA,0xD6}, {0xBF,0xA3},
+ {0xEA,0xD4}, {0xBF,0xA6}, {0xBF,0xA5}, {0xEA,0xD0},
+ {0xEA,0xD1}, {0xEA,0xCD}, {0xEA,0xD7}, {0xBF,0xA4},
+ {0xEA,0xDE}, {0xEA,0xDD}, {0x8E,0xBB}, {0xED,0xDA},
+ {0xED,0xD6}, {0xC1,0x5F}, {0xED,0xD0}, {0xC1,0x59},
+ {0xC1,0x69}, {0xED,0xDC}, {0xC1,0x61}, {0xC1,0x5D},
+ {0xED,0xD3}, {0xC1,0x64}, {0xC1,0x67}, {0xED,0xDE},
+ {0xC1,0x5C}, {0xED,0xD5}, {0xC1,0x65}, {0xED,0xE0},
+ {0xED,0xDD}, {0xED,0xD1}, {0xC1,0x60}, {0xC1,0x5A},
+ {0xC1,0x68}, {0xED,0xD8}, {0xC1,0x63}, {0xED,0xD2},
+ {0xC1,0x5E}, {0xED,0xDF}, {0xC1,0x62}, {0xC1,0x5B},
+ {0xED,0xD9}, {0xC1,0x66}, {0xED,0xD7}, {0xED,0xDB},
+ {0xF0,0x6E}, {0xF0,0x74}, {0xC2,0xB9}, {0xF0,0x77},
+ {0xC2,0xB4}, {0xC2,0xB5}, {0xF0,0x6F}, {0xF0,0x76},
+ {0xF0,0x71}, {0xC2,0xBA}, {0xC2,0xB7}, {0x8C,0xDC},
+ {0xF0,0x6D}, {0xC2,0xB6}, {0xF0,0x73}, {0xF0,0x75},
+ {0xC2,0xB8}, {0xF0,0x72}, {0xF0,0x70}, {0x98,0x76},
+ {0x8E,0xA1}, {0xF2,0xB8}, {0xC3,0xB7}, {0xC3,0xB8},
+ {0xC3,0xB4}, {0x8C,0xB4}, {0xC3,0xB5}, {0x8E,0xB7},
+ {0xF2,0xB4}, {0xF2,0xB2}, {0xF2,0xB6}, {0xC3,0xBA},
+ {0xF2,0xB7}, {0xF2,0xB0}, {0xF2,0xAF}, {0xF2,0xB3},
+ {0xF2,0xB1}, {0xC3,0xB6}, {0xF2,0xB5}, {0xF4,0xAC},
+ {0xC4,0x7E}, {0xC4,0x7D}, {0xF4,0xAD}, {0x9D,0xA6},
+ {0xF4,0xAF}, {0xF4,0xAE}, {0xC4,0xA1}, {0xF5,0xEB},
+ {0xF5,0xE8}, {0xF5,0xE9}, {0xF5,0xE7}, {0xF5,0xEA},
+ {0xC4,0xF2}, {0xF5,0xEC}, {0x9E,0xB0}, {0xC4,0xF1},
+ {0xF7,0x42}, {0x8E,0xB8}, {0xC5,0xD5}, {0xC5,0xD7},
+ {0xF7,0xEE}, {0xC5,0xD6}, {0xF8,0xB9}, {0xF9,0x40},
+ {0xF9,0x42}, {0xF8,0xFE}, {0xF9,0x41}, {0xC6,0x6C},
+ {0x9D,0x70}, {0x89,0x6E}, {0x89,0x6F}, {0x89,0x70},
+ {0x89,0x71}, {0x89,0x72}, {0x89,0x73}, {0x89,0x74},
+ {0xA6,0xCE}, {0x89,0x75}, {0xAC,0xFB}, {0xD2,0x6F},
+ {0xAF,0xCA}, {0xB2,0xDA}, {0xDA,0xFC}, {0xDA,0xFD},
+ {0x8E,0xBC}, {0x8E,0xBD}, {0xEA,0xDF}, {0xC1,0x6A},
+ {0xED,0xE1}, {0x8E,0xBE}, {0xC2,0xBB}, {0x9D,0xD1},
+ {0xF2,0xBA}, {0xF2,0xB9}, {0xC4,0xA2}, {0xF5,0xED},
+ {0x94,0xFD}, {0xF7,0x43}, {0xC5,0xF8}, {0xCA,0x49},
+ {0x8B,0xD7}, {0x8B,0xDA}, {0xAA,0xC9}, {0xA8,0x75},
+ {0xD0,0x4D}, {0xD3,0x60}, {0xD3,0x5B}, {0xD3,0x5F},
+ {0xD3,0x5D}, {0xAF,0xCB}, {0xD3,0x5E}, {0xD3,0x5C},
+ {0xD6,0xF1}, {0xDA,0xFE}, {0xDB,0x40}, {0xDF,0x69},
+ {0xDF,0x6A}, {0xB8,0x6E}, {0xB8,0x6F}, {0xDF,0x68},
+ {0xDF,0x6B}, {0xDF,0x67}, {0xB8,0x6D}, {0xBB,0x40},
+ {0xA0,0xE2}, {0xB8,0x70}, {0xE3,0x7A}, {0xBD,0x7C},
+ {0xE6,0xF1}, {0xBD,0x7D}, {0x9F,0xE9}, {0xBF,0xA9},
+ {0xEA,0xE2}, {0xEA,0xE0}, {0xEA,0xE1}, {0xED,0xE4},
+ {0xED,0xE3}, {0xED,0xE2}, {0xF2,0xBB}, {0xC3,0xB9},
+ {0xF2,0xBC}, {0xF7,0x44}, {0xC5,0xF9}, {0xF8,0xBA},
+ {0xA6,0xCF}, {0xAA,0xCB}, {0xAA,0xCA}, {0xD0,0x4F},
+ {0xAC,0xFC}, {0xFD,0xA8}, {0xD0,0x4E}, {0xD3,0x62},
+ {0x8A,0xE7}, {0xAF,0xCC}, {0xD6,0xF2}, {0xD3,0x61},
+ {0x8E,0xC2}, {0xB2,0xDC}, {0xD6,0xF5}, {0xD6,0xF3},
+ {0xD6,0xF4}, {0xB2,0xDB}, {0xDB,0x42}, {0xDB,0x43},
+ {0xDB,0x41}, {0x8E,0xC4}, {0xB8,0x73}, {0xDF,0x6D},
+ {0xDF,0x6C}, {0xDF,0x6E}, {0xB8,0x72}, {0xB8,0x71},
+ {0xE6,0xF2}, {0xE6,0xF4}, {0x99,0x64}, {0xBD,0x7E},
+ {0xE6,0xF3}, {0xEA,0xE3}, {0xBF,0xAA}, {0xF0,0x79},
+ {0x99,0x65}, {0xF0,0x78}, {0xC3,0xBB}, {0xF2,0xBD},
+ {0xC3,0xBD}, {0xC3,0xBC}, {0xF4,0xB0}, {0xF5,0xEE},
+ {0xC4,0xF3}, {0xA6,0xD0}, {0xD0,0x50}, {0xAC,0xFD},
+ {0xD3,0x65}, {0xAF,0xCE}, {0xD3,0x64}, {0xD3,0x63},
+ {0xAF,0xCD}, {0xD6,0xFB}, {0xD6,0xFD}, {0xD6,0xF6},
+ {0xD6,0xF7}, {0xB2,0xDD}, {0xD6,0xF8}, {0xB2,0xDE},
+ {0xD6,0xFC}, {0xD6,0xF9}, {0xD6,0xFA}, {0xB2,0xDF},
+ {0xB5,0xBE}, {0xB5,0xBF}, {0xDB,0x44}, {0xDF,0x6F},
+ {0xDF,0x70}, {0x95,0x4E}, {0xE3,0x7E}, {0xBB,0x43},
+ {0xBB,0x41}, {0xBB,0x42}, {0xE3,0x7B}, {0xE3,0x7C},
+ {0xE3,0x7D}, {0xE6,0xF9}, {0x98,0xB3}, {0xE6,0xFA},
+ {0xBD,0xA1}, {0xE6,0xF7}, {0xE6,0xF6}, {0xE6,0xF8},
+ {0xE6,0xF5}, {0xBF,0xAD}, {0xEA,0xE4}, {0xBF,0xAB},
+ {0xBF,0xAC}, {0xED,0xE6}, {0xC1,0x6B}, {0xED,0xE5},
+ {0xEF,0xA8}, {0xF0,0x7A}, {0xF0,0x7B}, {0xC2,0xBC},
+ {0x8E,0xCB}, {0xC2,0xBD}, {0xC1,0x6C}, {0xF2,0xBE},
+ {0xF2,0xBF}, {0xF4,0xB1}, {0xC4,0xA3}, {0xA6,0xD1},
+ {0x8B,0xDF}, {0xA6,0xD2}, {0xAC,0xFE}, {0xAA,0xCC},
+ {0xAF,0xCF}, {0xD0,0x51}, {0x8E,0xCE}, {0xB5,0xC0},
+ {0xA6,0xD3}, {0xAD,0x41}, {0xD0,0x52}, {0xD0,0x53},
+ {0xAD,0x40}, {0xAD,0x42}, {0xA6,0xD4}, {0xD0,0x54},
+ {0xAF,0xD1}, {0xD3,0x66}, {0xAF,0xD3}, {0xAF,0xD0},
+ {0xAF,0xD2}, {0xD7,0x41}, {0xB2,0xE0}, {0x8E,0xCF},
+ {0xD7,0x40}, {0xD6,0xFE}, {0x99,0x68}, {0xDF,0x71},
+ {0xE3,0xA1}, {0x99,0x69}, {0xBD,0xA2}, {0xBF,0xAE},
+ {0xEA,0xE6}, {0xEA,0xE5}, {0xED,0xE7}, {0x99,0x6B},
+ {0x8E,0xD1}, {0xF5,0xEF}, {0x99,0x6C}, {0xA6,0xD5},
+ {0xCB,0x73}, {0xCD,0xAA}, {0xAD,0x43}, {0xD0,0x55},
+ {0xD3,0x68}, {0x8E,0xD4}, {0x8E,0xD5}, {0xAF,0xD4},
+ {0xD3,0x67}, {0xAF,0xD5}, {0xD7,0x43}, {0xB2,0xE2},
+ {0xD7,0x42}, {0xD7,0x44}, {0xB2,0xE1}, {0xDB,0x46},
+ {0xDB,0x47}, {0xDB,0x45}, {0xB5,0xC1}, {0x99,0x6D},
+ {0xB8,0x74}, {0xB8,0x75}, {0xBB,0x45}, {0xA0,0xBE},
+ {0xE3,0xA3}, {0xE3,0xA2}, {0xBB,0x44}, {0x8E,0xD6},
+ {0xA0,0xBC}, {0xA0,0xB5}, {0xE6,0xFB}, {0xA0,0xB4},
+ {0xE6,0xFC}, {0xEA,0xE7}, {0xC1,0x70}, {0xC1,0x6F},
+ {0xC1,0x6D}, {0xC1,0x6E}, {0xC1,0x71}, {0xF0,0x7C},
+ {0xC2,0xBF}, {0xC2,0xBE}, {0xF2,0xC0}, {0xF4,0xB2},
+ {0xC5,0xA5}, {0xC5,0xA4}, {0xA6,0xD6}, {0x8B,0xE0},
+ {0xD1,0xFB}, {0xB8,0x77}, {0xB5,0xC2}, {0xB8,0x76},
+ {0xBB,0x46}, {0xA6,0xD7}, {0xC9,0xA9}, {0xA6,0xD8},
+ {0xA6,0xD9}, {0xCD,0xAB}, {0xCB,0x76}, {0xCB,0x77},
+ {0xA8,0x77}, {0xCB,0x74}, {0xA8,0x76}, {0xA8,0x79},
+ {0xCB,0x75}, {0xA8,0x7B}, {0xA8,0x7A}, {0xCB,0x78},
+ {0xA8,0x78}, {0x89,0xB5}, {0xAA,0xD1}, {0xAA,0xCF},
+ {0xCD,0xAD}, {0xAA,0xCE}, {0x8E,0xDD}, {0xAA,0xD3},
+ {0xAA,0xD5}, {0xAA,0xD2}, {0xCD,0xB0}, {0xCD,0xAC},
+ {0xAA,0xD6}, {0xAA,0xD0}, {0xA8,0x7C}, {0xAA,0xD4},
+ {0xCD,0xAF}, {0x9E,0x5D}, {0x99,0x71}, {0xCD,0xAE},
+ {0xAA,0xCD}, {0x89,0xAE}, {0x9D,0xE8}, {0xD0,0x5B},
+ {0xAD,0x47}, {0xAD,0x48}, {0xD0,0x5D}, {0x95,0x65},
+ {0xD0,0x57}, {0xD0,0x5A}, {0xD0,0x63}, {0xD0,0x61},
+ {0xAD,0x49}, {0xD0,0x67}, {0xAD,0x4C}, {0xD0,0x64},
+ {0xD0,0x5C}, {0xD0,0x59}, {0xDB,0x49}, {0xD0,0x62},
+ {0xAD,0x44}, {0xD0,0x65}, {0xD0,0x56}, {0xD0,0x5F},
+ {0xAD,0x46}, {0xAD,0x4B}, {0xD0,0x60}, {0xAD,0x4F},
+ {0xAD,0x4D}, {0xD0,0x58}, {0xAD,0x4A}, {0xD0,0x5E},
+ {0xAD,0x4E}, {0xAD,0x45}, {0xD0,0x66}, {0x99,0x72},
+ {0x8B,0x5C}, {0xAF,0xDA}, {0xAF,0xE3}, {0xAF,0xD8},
+ {0xAF,0xD6}, {0xD3,0x6A}, {0xAF,0xDE}, {0xAF,0xDB},
+ {0xD3,0x6C}, {0x89,0xB1}, {0xAF,0xDD}, {0xD3,0x6B},
+ {0xD3,0x69}, {0xD3,0x6E}, {0xAF,0xE2}, {0xAF,0xE0},
+ {0xDB,0x48}, {0xD3,0x6F}, {0xD3,0x6D}, {0xAF,0xD7},
+ {0xA0,0xC0}, {0xAF,0xD9}, {0xAF,0xDC}, {0x8E,0xDF},
+ {0xAF,0xDF}, {0x95,0x66}, {0xAF,0xE1}, {0x99,0x74},
+ {0x99,0x76}, {0x99,0x77}, {0x99,0x79}, {0xD7,0x4E},
+ {0xB2,0xE4}, {0x9D,0xDA}, {0xD7,0x45}, {0xD7,0x47},
+ {0x8E,0xE0}, {0xD7,0x48}, {0xD7,0x50}, {0xD7,0x4C},
+ {0xD7,0x4A}, {0xD7,0x4D}, {0xD7,0x51}, {0xB2,0xE5},
+ {0xB2,0xE9}, {0xD7,0x46}, {0xD7,0x4F}, {0xB2,0xE7},
+ {0x93,0x5C}, {0xB2,0xE6}, {0xD7,0x4B}, {0xD7,0x49},
+ {0xB2,0xE3}, {0xB2,0xE8}, {0x9D,0xE6}, {0x8B,0x5F},
+ {0x95,0x63}, {0xB5,0xC8}, {0xDB,0x51}, {0xDB,0x4F},
+ {0xB5,0xCA}, {0x95,0x67}, {0xDB,0x4A}, {0xDF,0xA1},
+ {0xB5,0xC9}, {0xDB,0x4E}, {0x9D,0xE3}, {0xDB,0x4B},
+ {0xB5,0xC5}, {0xB5,0xCB}, {0xDB,0x50}, {0xB5,0xC7},
+ {0xDB,0x4D}, {0xBB,0x47}, {0xB5,0xC6}, {0xDB,0x4C},
+ {0xB5,0xCC}, {0xB5,0xC4}, {0xB5,0xC3}, {0x99,0x7C},
+ {0x99,0x7D}, {0x99,0x7E}, {0xDF,0x77}, {0xDF,0x75},
+ {0xDF,0x7B}, {0xDF,0x73}, {0xDF,0xA2}, {0xDF,0x78},
+ {0xDF,0x72}, {0xB8,0x7B}, {0xB8,0xA3}, {0xDF,0x7D},
+ {0xDF,0x76}, {0xB8,0x7E}, {0x8B,0x5B}, {0xB8,0x7C},
+ {0xDF,0x7E}, {0xB8,0x79}, {0xB8,0x78}, {0xDF,0x79},
+ {0xB8,0x7D}, {0xB5,0xCD}, {0xDF,0x7C}, {0xDF,0x74},
+ {0xB8,0x7A}, {0xB8,0xA1}, {0xB8,0xA2}, {0x99,0xA3},
+ {0xBB,0x4C}, {0xBB,0x48}, {0xBB,0x4D}, {0xE3,0xA6},
+ {0x99,0xA4}, {0xE3,0xA5}, {0xE3,0xA7}, {0xBB,0x4A},
+ {0xE3,0xA4}, {0xBB,0x4B}, {0xE3,0xAA}, {0xE3,0xA9},
+ {0xE3,0xA8}, {0xBB,0x49}, {0x99,0xA6}, {0xE7,0x41},
+ {0xE7,0x44}, {0xBD,0xA8}, {0xE7,0x43}, {0xBD,0xA7},
+ {0xBD,0xA3}, {0xBD,0xA4}, {0xBD,0xA5}, {0xE7,0x40},
+ {0xE6,0xFE}, {0xBD,0xA6}, {0xE7,0x42}, {0xE6,0xFD},
+ {0x99,0xA8}, {0xEA,0xE9}, {0xEA,0xF3}, {0xBF,0xB1},
+ {0xBF,0xB0}, {0x8A,0xBE}, {0xEA,0xED}, {0xEA,0xEF},
+ {0xEA,0xEA}, {0xEA,0xEE}, {0xEA,0xE8}, {0xEA,0xF1},
+ {0xBF,0xAF}, {0xEA,0xF0}, {0xEA,0xEC}, {0x9E,0x61},
+ {0xEA,0xF2}, {0xEA,0xEB}, {0xC1,0x74}, {0xED,0xE8},
+ {0xED,0xEE}, {0xC1,0x78}, {0xC1,0x7A}, {0xC1,0x77},
+ {0xC1,0x76}, {0x99,0xAA}, {0xC1,0x75}, {0xC1,0x73},
+ {0xED,0xE9}, {0xED,0xEC}, {0xC1,0x72}, {0xED,0xED},
+ {0xA0,0xC8}, {0xC1,0x79}, {0xED,0xEB}, {0xED,0xEA},
+ {0xC2,0xC0}, {0xC2,0xC1}, {0xF0,0xA1}, {0xF0,0x7D},
+ {0xF0,0x7E}, {0xF2,0xC2}, {0xF2,0xC1}, {0xC3,0xBE},
+ {0xF4,0xB4}, {0xC4,0xA4}, {0xF4,0xB3}, {0xF5,0xF0},
+ {0xF7,0x45}, {0xC5,0xA6}, {0xF9,0x43}, {0xF9,0x44},
+ {0xC5,0xD8}, {0xA6,0xDA}, {0x99,0xAB}, {0xAA,0xD7},
+ {0xDB,0x52}, {0xBB,0x4E}, {0xC1,0x7B}, {0xED,0xEF},
+ {0xA6,0xDB}, {0xAF,0xE5}, {0xAF,0xE4}, {0xDB,0x53},
+ {0xFE,0xC4}, {0xEA,0xF4}, {0xA6,0xDC}, {0xAD,0x50},
+ {0x98,0xC2}, {0xDB,0x54}, {0xDB,0x55}, {0xDB,0x56},
+ {0xBB,0x4F}, {0xBF,0xB2}, {0xA6,0xDD}, {0xAA,0xD8},
+ {0xD0,0x68}, {0xAF,0xE6}, {0xD3,0x70}, {0xB2,0xEA},
+ {0xDB,0x57}, {0xB8,0xA4}, {0xBB,0x50}, {0xBF,0xB3},
+ {0xC1,0x7C}, {0xC2,0xC2}, {0xF4,0xB5}, {0xA6,0xDE},
+ {0xAA,0xD9}, {0xAF,0xE7}, {0xD7,0x52}, {0xB5,0xCE},
+ {0xBB,0x51}, {0xE3,0xAB}, {0xE7,0x45}, {0x8E,0xE8},
+ {0xA0,0xBA}, {0xA6,0xDF}, {0xB5,0xCF}, {0xDF,0xA3},
+ {0xBB,0x52}, {0xA6,0xE0}, {0xCD,0xB1}, {0xD0,0x69},
+ {0xAD,0x51}, {0xD3,0x72}, {0xFD,0x77}, {0xAF,0xEA},
+ {0x8E,0xEE}, {0xAF,0xE8}, {0xAF,0xE9}, {0xAF,0xEB},
+ {0x9E,0xBF}, {0xD3,0x71}, {0xD7,0x57}, {0xD7,0x54},
+ {0xD7,0x56}, {0xB2,0xEB}, {0xB2,0xED}, {0xB2,0xEC},
+ {0xD7,0x53}, {0xB2,0xEE}, {0xD7,0x55}, {0xDB,0x58},
+ {0xDB,0x59}, {0x89,0xC2}, {0xDB,0x5A}, {0xDF,0xA6},
+ {0xDF,0xA7}, {0xDF,0xA5}, {0xDF,0xA8}, {0xB8,0xA5},
+ {0xDF,0xA4}, {0xBB,0x53}, {0xE7,0x4A}, {0xE7,0x46},
+ {0xE7,0x49}, {0xE7,0x4B}, {0xE7,0x48}, {0xE7,0x47},
+ {0x99,0xAC}, {0xEA,0xF5}, {0xEA,0xF6}, {0xEA,0xF7},
+ {0xBF,0xB4}, {0xBF,0xB5}, {0xED,0xF1}, {0xED,0xF0},
+ {0xED,0xF2}, {0xF0,0xA3}, {0xF0,0xA2}, {0xF2,0xC4},
+ {0x95,0x6B}, {0xF2,0xC5}, {0xF2,0xC3}, {0x95,0x6C},
+ {0xC4,0xA5}, {0xF4,0xB6}, {0xF4,0xB7}, {0xF7,0x46},
+ {0xF7,0xEF}, {0xF8,0xBB}, {0xA6,0xE1}, {0xA8,0x7D},
+ {0xC1,0x7D}, {0xA6,0xE2}, {0xD7,0x58}, {0xDB,0x5B},
+ {0x99,0xAF}, {0xC6,0x41}, {0xCA,0x4A}, {0x99,0x4A},
+ {0x89,0x76}, {0x8F,0x48}, {0xCA,0x4B}, {0xCA,0x4D},
+ {0xA6,0xE3}, {0xCA,0x4E}, {0xCA,0x4C}, {0xCB,0xA2},
+ {0xCB,0xA3}, {0xCB,0x7B}, {0xFB,0xEE}, {0xCB,0xA1},
+ {0xA8,0xA1}, {0xA8,0xA2}, {0xCB,0x7C}, {0xCB,0x7A},
+ {0xCB,0x79}, {0xCB,0x7D}, {0xA8,0x7E}, {0xCB,0x7E},
+ {0xD0,0x6A}, {0xCD,0xB6}, {0xAA,0xDC}, {0xCD,0xB5},
+ {0xCD,0xB7}, {0xAA,0xDB}, {0xCD,0xBC}, {0xAA,0xDF},
+ {0xCD,0xB2}, {0xCD,0xC0}, {0xCD,0xC6}, {0xAA,0xE6},
+ {0xCD,0xC3}, {0xAA,0xE3}, {0x99,0xAE}, {0xCD,0xB9},
+ {0xCD,0xBF}, {0xCD,0xC1}, {0x8E,0xFB}, {0xCD,0xB4},
+ {0xAA,0xE2}, {0xAA,0xDD}, {0xCD,0xBA}, {0xAA,0xE4},
+ {0xAA,0xE7}, {0xAA,0xE1}, {0xAA,0xDA}, {0xCD,0xBE},
+ {0xCD,0xB8}, {0xCD,0xC5}, {0xAA,0xE9}, {0xAA,0xE5},
+ {0xAA,0xE0}, {0xCD,0xBD}, {0xAF,0xEC}, {0xCD,0xBB},
+ {0xAA,0xDE}, {0xAA,0xE8}, {0x8C,0xD0}, {0xCD,0xB3},
+ {0xCD,0xC2}, {0xCD,0xC4}, {0x8B,0x52}, {0x99,0xB0},
+ {0x89,0x77}, {0x8F,0x41}, {0xAD,0x62}, {0xAD,0x5C},
+ {0xAD,0x64}, {0xAD,0x61}, {0xD0,0x71}, {0xD0,0x74},
+ {0xAD,0x5D}, {0x99,0xB1}, {0xD0,0x6B}, {0xAD,0x56},
+ {0xAD,0x60}, {0xAD,0x63}, {0xAD,0x65}, {0xD0,0xA2},
+ {0xD0,0x77}, {0x8F,0x49}, {0xAD,0x55}, {0xD0,0xA1},
+ {0xAD,0x59}, {0xAD,0x57}, {0xAD,0x52}, {0xD0,0x6F},
+ {0xD0,0x7E}, {0xD0,0x73}, {0xD0,0x76}, {0xD0,0xA5},
+ {0xFA,0x4D}, {0xAD,0x66}, {0xD0,0x7D}, {0xAD,0x5E},
+ {0xD0,0x78}, {0xD0,0xA4}, {0xD0,0x75}, {0xD0,0x79},
+ {0xD0,0x7C}, {0x9D,0xE4}, {0x8C,0xB5}, {0xD0,0x6D},
+ {0xD0,0xA3}, {0xD0,0x7B}, {0xFB,0xE9}, {0x9B,0x54},
+ {0xD0,0x6C}, {0x99,0xB2}, {0xD0,0x70}, {0xAD,0x5F},
+ {0xAD,0x5A}, {0xAD,0x53}, {0xAD,0x58}, {0xAD,0x54},
+ {0xAD,0x67}, {0xD0,0x6E}, {0xD3,0xA5}, {0xAD,0x5B},
+ {0x9E,0x68}, {0xD0,0x7A}, {0xCE,0x41}, {0xD3,0xA8},
+ {0xAF,0xFA}, {0x8F,0x4A}, {0xD3,0x76}, {0x8F,0x42},
+ {0xD3,0xA3}, {0xD3,0x7D}, {0x8F,0x51}, {0xD3,0xB2},
+ {0xD3,0xAA}, {0xD3,0x7E}, {0xD3,0xA9}, {0xD3,0x78},
+ {0xD3,0x7C}, {0xD3,0xB5}, {0xAF,0xFD}, {0xD3,0xAD},
+ {0xD3,0xA4}, {0xAF,0xED}, {0xD3,0xB3}, {0xD3,0x74},
+ {0xD3,0xAC}, {0xAF,0xFC}, {0xAF,0xF7}, {0xD3,0x73},
+ {0xAF,0xF5}, {0xAF,0xF4}, {0xAF,0xF9}, {0xD3,0xAB},
+ {0xAF,0xF1}, {0xAF,0xF8}, {0xD0,0x72}, {0xDB,0x5C},
+ {0xD3,0xA6}, {0x98,0x46}, {0xD3,0x7A}, {0xAF,0xFB},
+ {0xD3,0x7B}, {0xD3,0xA1}, {0xAF,0xFE}, {0xD3,0x75},
+ {0xD3,0xAF}, {0xD3,0xAE}, {0xD3,0xB6}, {0xAF,0xF3},
+ {0xAF,0xF0}, {0xD3,0xB4}, {0xD3,0xB0}, {0xD3,0xA7},
+ {0xD3,0xA2}, {0xAF,0xF6}, {0xAF,0xF2}, {0xD3,0x77},
+ {0xAF,0xEE}, {0xD3,0xB1}, {0xAF,0xEF}, {0xD3,0x79},
+ {0x99,0xB4}, {0x8E,0xF5}, {0xFD,0x55}, {0x9C,0xCD},
+ {0x89,0x78}, {0xD7,0x5E}, {0xD7,0x60}, {0xD7,0x65},
+ {0xD7,0x79}, {0xB2,0xFC}, {0xB2,0xF2}, {0xD7,0x5D},
+ {0xB2,0xFD}, {0xB2,0xFE}, {0xD7,0x68}, {0xD7,0x6F},
+ {0xD7,0x75}, {0xD7,0x62}, {0xD7,0x69}, {0x8F,0x53},
+ {0xB3,0x40}, {0xD7,0x77}, {0xD7,0x72}, {0xB2,0xFA},
+ {0xB2,0xF8}, {0xD7,0x6E}, {0xD7,0x6A}, {0xD7,0x5C},
+ {0xB2,0xEF}, {0xD7,0x61}, {0xD7,0x59}, {0x8F,0x6F},
+ {0xB2,0xF7}, {0xB2,0xF9}, {0xD7,0x66}, {0xD7,0x63},
+ {0xB2,0xF4}, {0xD7,0x73}, {0xB2,0xF1}, {0xD7,0x64},
+ {0xD7,0x7A}, {0xD7,0x6C}, {0x8E,0x63}, {0xD7,0x6B},
+ {0xB2,0xF0}, {0xB2,0xFB}, {0xB2,0xF3}, {0xD7,0x5A},
+ {0xD7,0x5F}, {0xD7,0x70}, {0xD7,0x76}, {0xB3,0x41},
+ {0xD7,0x5B}, {0xD7,0x67}, {0xD7,0x6D}, {0xB2,0xF6},
+ {0x8F,0x56}, {0xD7,0x78}, {0xD7,0x71}, {0xD7,0x74},
+ {0xFE,0x76}, {0xB2,0xF5}, {0x9F,0xC6}, {0xDB,0x6C},
+ {0xDB,0x60}, {0xB5,0xD7}, {0xDB,0x7D}, {0xDB,0xA7},
+ {0xDB,0xAA}, {0xB5,0xD5}, {0xDB,0x68}, {0xDB,0xA3},
+ {0xDB,0x69}, {0xDB,0x77}, {0xB5,0xE2}, {0xDB,0x73},
+ {0xB5,0xDF}, {0xFA,0xAC}, {0xDB,0x74}, {0xDB,0x5D},
+ {0xDB,0xA4}, {0x8F,0x58}, {0xB5,0xE8}, {0xDB,0xA1},
+ {0xDB,0x75}, {0xDB,0xAC}, {0xDB,0x70}, {0xDF,0xC8},
+ {0xDB,0xAF}, {0xB5,0xE6}, {0xDB,0x6E}, {0xDB,0x7A},
+ {0xB5,0xE9}, {0xB5,0xD4}, {0xDB,0x72}, {0xDB,0xAD},
+ {0xDB,0x6B}, {0xDB,0x64}, {0xDB,0x6F}, {0xDB,0x63},
+ {0xDB,0x61}, {0xB5,0xD0}, {0xDB,0xA5}, {0xDB,0x6A},
+ {0xDB,0xA8}, {0x98,0x48}, {0xDB,0xA9}, {0xB5,0xD8},
+ {0xB5,0xDD}, {0xB5,0xD9}, {0xB5,0xE1}, {0xDB,0x7E},
+ {0xB5,0xDA}, {0xDB,0x76}, {0xDB,0x66}, {0xB5,0xD2},
+ {0xDB,0x5E}, {0xDB,0xA2}, {0xDB,0xAB}, {0xDB,0x65},
+ {0xB5,0xE0}, {0xDB,0xB0}, {0xDB,0x71}, {0xDB,0x6D},
+ {0xB5,0xD1}, {0xB5,0xE5}, {0x99,0xB7}, {0xDB,0x7C},
+ {0xB5,0xE7}, {0xDB,0x78}, {0xB5,0xDC}, {0xB5,0xD6},
+ {0xB5,0xDE}, {0xB5,0xD3}, {0xB5,0xE4}, {0xDB,0x79},
+ {0xDB,0x67}, {0xDB,0x7B}, {0xDB,0x62}, {0xDB,0xA6},
+ {0x96,0x65}, {0xFA,0x6C}, {0x9D,0xE7}, {0xDB,0xAE},
+ {0x9E,0x62}, {0x96,0xCC}, {0x8E,0x67}, {0xDB,0x5F},
+ {0xFC,0x75}, {0x98,0x7E}, {0xDF,0xC7}, {0xDF,0xDD},
+ {0xB8,0x55}, {0xDF,0xCC}, {0xFD,0xB9}, {0xDF,0xCA},
+ {0xDF,0xB5}, {0xB8,0xA9}, {0xDF,0xC5}, {0xDF,0xD9},
+ {0xDF,0xC1}, {0xB8,0xB1}, {0xDF,0xD8}, {0xDF,0xBF},
+ {0xB5,0xE3}, {0xDF,0xCF}, {0xDF,0xC0}, {0xDF,0xD6},
+ {0xB8,0xB0}, {0xB8,0xA8}, {0x97,0xFC}, {0xDF,0xAA},
+ {0xDF,0xB2}, {0xDF,0xCB}, {0xDF,0xC3}, {0xDF,0xDC},
+ {0xDF,0xC6}, {0xB8,0xB6}, {0xDF,0xD7}, {0x98,0xF9},
+ {0xB8,0xAD}, {0x8F,0x66}, {0xDF,0xC9}, {0xDF,0xD1},
+ {0xDF,0xB6}, {0xDF,0xD0}, {0xDF,0xE1}, {0xDF,0xB1},
+ {0xDF,0xD2}, {0x95,0x6E}, {0xDF,0xDF}, {0x92,0x45},
+ {0xDF,0xAB}, {0xB5,0xDB}, {0x8F,0x60}, {0xDF,0xB9},
+ {0xDF,0xB8}, {0xB8,0xAF}, {0x9E,0xD1}, {0xDF,0xBC},
+ {0xDF,0xBE}, {0xDF,0xCD}, {0xDF,0xDE}, {0xB8,0xB2},
+ {0xFE,0xCD}, {0xB8,0xB3}, {0x99,0xB9}, {0xDF,0xB0},
+ {0xB8,0xAB}, {0xDF,0xB4}, {0xDF,0xDA}, {0xB8,0xB4},
+ {0xB8,0xAC}, {0xB8,0xAE}, {0xB8,0xB5}, {0xDF,0xE0},
+ {0xDF,0xD3}, {0xDF,0xCE}, {0x8F,0x62}, {0x97,0x4C},
+ {0xDF,0xBB}, {0xDF,0xBA}, {0xB8,0xAA}, {0xDF,0xAC},
+ {0xB8,0xA7}, {0xDF,0xC4}, {0xDF,0xAD}, {0xDF,0xC2},
+ {0xDF,0xB7}, {0xDF,0xDB}, {0x91,0xC7}, {0x95,0x5F},
+ {0xB8,0xA6}, {0xDF,0xB3}, {0x99,0xBB}, {0xDF,0xAF},
+ {0xDF,0xD5}, {0xDF,0xAE}, {0xBB,0x60}, {0xE3,0xD3},
+ {0x8E,0x6D}, {0x8F,0x71}, {0xE3,0xC2}, {0x94,0xCB},
+ {0xE3,0xAC}, {0xE3,0xCA}, {0xBB,0x58}, {0xE3,0xBB},
+ {0xE3,0xC5}, {0xBB,0x5B}, {0xE3,0xBE}, {0xBB,0x59},
+ {0xE3,0xAF}, {0xE3,0xCD}, {0xE3,0xAE}, {0xE3,0xC1},
+ {0x95,0xB1}, {0xE3,0xAD}, {0xE3,0xBF}, {0xE3,0xC8},
+ {0xE3,0xC6}, {0xE3,0xBA}, {0xE3,0xB5}, {0xE3,0xB3},
+ {0x9A,0xF2}, {0xE3,0xB4}, {0xE3,0xC7}, {0xE3,0xD2},
+ {0xE3,0xBC}, {0xBB,0x5A}, {0xE3,0xB7}, {0xE3,0xCB},
+ {0xBB,0x5D}, {0xE3,0xB6}, {0xE3,0xB0}, {0xE3,0xC0},
+ {0xBB,0x61}, {0x96,0xC3}, {0x99,0xBD}, {0xBB,0x55},
+ {0xBB,0x5E}, {0xE3,0xB8}, {0xE3,0xB2}, {0xBB,0x57},
+ {0xDF,0xD4}, {0xBB,0x56}, {0xE3,0xC3}, {0xBB,0x54},
+ {0xBB,0x63}, {0xBB,0x5C}, {0xE3,0xC4}, {0xE3,0xB9},
+ {0xE3,0xB1}, {0xE3,0xCC}, {0xE3,0xBD}, {0xBB,0x62},
+ {0xE3,0xD0}, {0xBB,0x5F}, {0xE3,0xCF}, {0xE3,0xC9},
+ {0xE3,0xCE}, {0xA0,0xCF}, {0xE3,0xD1}, {0x8F,0x6D},
+ {0x99,0xBE}, {0x8E,0xF4}, {0x8F,0x72}, {0x95,0xE4},
+ {0xE7,0x73}, {0xE7,0x74}, {0xE7,0x67}, {0xE7,0x66},
+ {0xE7,0x62}, {0xBD,0xB4}, {0xBD,0xAC}, {0xE7,0x76},
+ {0xE7,0x75}, {0xDF,0xA9}, {0xE7,0x5F}, {0xE7,0x63},
+ {0xE7,0x5D}, {0xE7,0x70}, {0xE7,0x61}, {0x99,0xBF},
+ {0xE7,0x77}, {0xE7,0x5A}, {0xE7,0x58}, {0xE7,0x64},
+ {0xE7,0x6E}, {0xE7,0x69}, {0xBD,0xB6}, {0xE7,0x4F},
+ {0xE7,0x6D}, {0x92,0x42}, {0xFB,0xA5}, {0xBD,0xB7},
+ {0xDF,0xBD}, {0xE7,0x5B}, {0xE7,0x52}, {0xE7,0x55},
+ {0xE7,0x7B}, {0xE7,0x5C}, {0xE7,0x53}, {0xE7,0x51},
+ {0xE7,0x4E}, {0x99,0xC0}, {0xBD,0xB0}, {0xE7,0x65},
+ {0xBD,0xAF}, {0xBD,0xB3}, {0xE7,0x60}, {0xE7,0x68},
+ {0xBD,0xA9}, {0xE7,0x78}, {0xE7,0x7C}, {0xBD,0xAB},
+ {0xE7,0x57}, {0xE7,0x6B}, {0xE7,0x6F}, {0xE7,0x54},
+ {0xE7,0x79}, {0xBD,0xB2}, {0xBD,0xB1}, {0xE7,0x4C},
+ {0xBD,0xB5}, {0xE7,0x72}, {0xE7,0x56}, {0xE7,0x6A},
+ {0xE7,0x50}, {0xE7,0x5E}, {0xE7,0x59}, {0xBD,0xAD},
+ {0xBD,0xAE}, {0xE7,0x6C}, {0xE7,0x7D}, {0xE7,0x7A},
+ {0xE7,0x71}, {0xFD,0xB4}, {0x8F,0x77}, {0x99,0xC1},
+ {0xE7,0x4D}, {0xBD,0xAA}, {0xEB,0x49}, {0xEB,0x40},
+ {0xEB,0x43}, {0xFA,0xB9}, {0xBF,0xBB}, {0xEB,0x45},
+ {0xEA,0xF9}, {0xEB,0x41}, {0xEB,0x47}, {0xBF,0xB8},
+ {0xBF,0xBC}, {0xBF,0xB6}, {0x8F,0x40}, {0xFA,0x44},
+ {0xEA,0xFB}, {0xEB,0x4C}, {0xEB,0x46}, {0x99,0xC2},
+ {0xEA,0xFC}, {0xEB,0x55}, {0xEB,0x4F}, {0xEA,0xF8},
+ {0xEE,0x46}, {0xEA,0xFE}, {0xBF,0xB7}, {0x8F,0x5C},
+ {0xEB,0x4A}, {0xEB,0x54}, {0xBF,0xBF}, {0x8C,0xBD},
+ {0xEB,0x51}, {0xEA,0xFD}, {0xEB,0x44}, {0xEB,0x48},
+ {0xEB,0x42}, {0xEB,0x56}, {0xEB,0x53}, {0xEB,0x50},
+ {0xBF,0xB9}, {0xBF,0xBA}, {0xBF,0xBE}, {0xEA,0xFA},
+ {0xEB,0x57}, {0xBF,0xBD}, {0xEB,0x4D}, {0x99,0xC4},
+ {0x99,0xC5}, {0xEB,0x4B}, {0x8F,0x7B}, {0xEB,0x4E},
+ {0xEE,0x53}, {0xEE,0x40}, {0xEE,0x45}, {0xEE,0x52},
+ {0xEE,0x44}, {0xED,0xFB}, {0xEE,0x41}, {0xC1,0xA2},
+ {0xED,0xF4}, {0xEE,0x4D}, {0xEE,0x4F}, {0xED,0xF3},
+ {0xC1,0xA1}, {0xEE,0x51}, {0xEE,0x49}, {0xC1,0xA8},
+ {0xEE,0x50}, {0xEE,0x42}, {0xC1,0xAA}, {0xED,0xF9},
+ {0xEB,0x52}, {0xEE,0x4A}, {0xEE,0x47}, {0xED,0xF5},
+ {0xEE,0x55}, {0xC1,0xA4}, {0xC1,0xA5}, {0xED,0xF7},
+ {0xEE,0x48}, {0x8C,0xB6}, {0xEE,0x54}, {0xEE,0x4B},
+ {0xED,0xFD}, {0xC1,0xA7}, {0xC1,0xA3}, {0xEE,0x4C},
+ {0xED,0xFE}, {0xEE,0x56}, {0xED,0xF8}, {0xEE,0x43},
+ {0xEE,0x4E}, {0xED,0xFA}, {0xED,0xFC}, {0xC2,0xCB},
+ {0xED,0xF6}, {0xC1,0xA9}, {0xC2,0xC4}, {0xC1,0x7E},
+ {0xC1,0xA6}, {0xC2,0xC8}, {0xF0,0xB3}, {0xF0,0xA9},
+ {0xF0,0xA4}, {0xF0,0xAA}, {0xF0,0xB4}, {0xF0,0xB8},
+ {0xF0,0xB7}, {0xC2,0xCA}, {0xC2,0xC9}, {0xF0,0xAB},
+ {0xF0,0xB9}, {0xF0,0xAE}, {0xF0,0xA6}, {0x8F,0xA3},
+ {0xF0,0xA8}, {0xF0,0xA7}, {0xF0,0xAD}, {0xF0,0xB2},
+ {0xF0,0xA5}, {0xF0,0xAC}, {0xF0,0xB1}, {0xC2,0xC7},
+ {0xF0,0xAF}, {0xC2,0xC5}, {0xF0,0xB0}, {0xC2,0xC3},
+ {0xC2,0xC6}, {0xF2,0xD5}, {0xF0,0xB5}, {0xC3,0xC2},
+ {0x8C,0xCE}, {0xF2,0xCD}, {0xF2,0xD1}, {0xF2,0xC9},
+ {0xF2,0xCC}, {0xF2,0xD4}, {0xC3,0xC0}, {0xF2,0xD9},
+ {0xF2,0xD2}, {0x99,0xC6}, {0xF2,0xCA}, {0xF2,0xDA},
+ {0xF2,0xD3}, {0xC3,0xC3}, {0xC3,0xC4}, {0xF2,0xD7},
+ {0xF2,0xCB}, {0xC3,0xBF}, {0xC3,0xC1}, {0xF2,0xC6},
+ {0xF2,0xCE}, {0xF2,0xC8}, {0x96,0xCD}, {0xF2,0xD8},
+ {0xF2,0xD6}, {0xF2,0xC7}, {0xF2,0xCF}, {0xF4,0xBE},
+ {0xC3,0xC5}, {0xF2,0xD0}, {0xC4,0xA7}, {0xC4,0xA9},
+ {0xC4,0xA6}, {0x96,0xC7}, {0xF4,0xC3}, {0xF4,0xBB},
+ {0xF4,0xB9}, {0xF4,0xBD}, {0xF4,0xBA}, {0x8F,0xA5},
+ {0xF4,0xBF}, {0xF4,0xC1}, {0xC4,0xAA}, {0xC4,0xAC},
+ {0xF4,0xC0}, {0xC4,0xAD}, {0xC4,0xAB}, {0xF4,0xC2},
+ {0xFA,0xBB}, {0x8C,0x61}, {0x95,0x70}, {0xC4,0xA8},
+ {0x93,0x68}, {0x8F,0x7E}, {0xC4,0xF4}, {0xF5,0xF1},
+ {0xF5,0xF7}, {0xC4,0xF6}, {0xF4,0xBC}, {0xF5,0xF6},
+ {0xF5,0xFD}, {0xF5,0xF4}, {0xF5,0xFB}, {0xF5,0xFA},
+ {0xF4,0xB8}, {0xF5,0xF5}, {0xF0,0xB6}, {0xF5,0xFE},
+ {0xF5,0xF3}, {0xF5,0xF8}, {0x8F,0xAA}, {0xF5,0xFC},
+ {0xF5,0xF2}, {0xF7,0x4A}, {0xC4,0xF5}, {0xF5,0xF9},
+ {0xA0,0x50}, {0xF7,0xF4}, {0xF7,0x4B}, {0xF7,0x49},
+ {0xF7,0x47}, {0xF7,0x48}, {0xF7,0x4C}, {0xC5,0xD9},
+ {0xF7,0xF2}, {0xF7,0xF0}, {0xF7,0xF5}, {0xF7,0xF3},
+ {0xF7,0xF6}, {0xC5,0xDA}, {0xF7,0xF1}, {0x90,0xD3},
+ {0xF8,0xBC}, {0x95,0x56}, {0xF9,0x45}, {0xF9,0x46},
+ {0xF9,0x47}, {0xF9,0xC7}, {0xF9,0xBD}, {0xCA,0x4F},
+ {0xAA,0xEA}, {0xAD,0x68}, {0xD3,0xB8}, {0xD3,0xB7},
+ {0xB0,0x40}, {0xB3,0x42}, {0xD7,0x7C}, {0xD7,0x7B},
+ {0xB5,0xEA}, {0xB8,0xB8}, {0xB8,0xB7}, {0xB8,0xB9},
+ {0xE3,0xD4}, {0xE7,0x7E}, {0xEB,0x58}, {0xEB,0x5A},
+ {0xEB,0x59}, {0xC1,0xAB}, {0xEE,0x57}, {0xF0,0xBA},
+ {0xF9,0xA5}, {0xA6,0xE4}, {0x8F,0xB8}, {0xCD,0xC9},
+ {0xCD,0xCA}, {0xCD,0xC8}, {0xCD,0xC7}, {0xAA,0xEB},
+ {0x99,0xC8}, {0xD0,0xA9}, {0xD0,0xA7}, {0xD0,0xA6},
+ {0xAD,0x69}, {0xAD,0x6B}, {0xAD,0x6A}, {0xD0,0xA8},
+ {0x8F,0xAF}, {0xD3,0xC4}, {0xD3,0xC1}, {0xD3,0xBF},
+ {0xB0,0x41}, {0xD3,0xC2}, {0xB0,0x46}, {0xD3,0xBC},
+ {0xD3,0xCB}, {0xD3,0xCD}, {0xD3,0xBD}, {0x99,0xC9},
+ {0xB0,0x43}, {0xD3,0xCE}, {0xD3,0xC9}, {0xD3,0xBB},
+ {0xD3,0xC0}, {0xD3,0xCA}, {0xD3,0xC6}, {0xD3,0xC3},
+ {0xB0,0x48}, {0xD3,0xCC}, {0xD3,0xBE}, {0x95,0x79},
+ {0xD3,0xC7}, {0xD3,0xB9}, {0xB0,0x47}, {0xB0,0x44},
+ {0xD3,0xC5}, {0xD3,0xC8}, {0xD3,0xBA}, {0xB0,0x45},
+ {0xB0,0x42}, {0x9F,0x49}, {0xB3,0x4C}, {0xD7,0xA5},
+ {0xB3,0x4B}, {0x99,0xCA}, {0xD7,0xA8}, {0xD7,0xAB},
+ {0xB3,0x48}, {0xB3,0x46}, {0xD7,0x7E}, {0xD7,0xA9},
+ {0xD7,0xA7}, {0xD7,0xA4}, {0xD7,0xAC}, {0xD7,0xAD},
+ {0xD7,0xAF}, {0xD7,0xB0}, {0xD7,0x7D}, {0xB3,0x45},
+ {0xD7,0xA2}, {0xD7,0xA1}, {0xD7,0xAE}, {0xB3,0x47},
+ {0xD7,0xA3}, {0xB3,0x49}, {0xB3,0x44}, {0xD7,0xA6},
+ {0xB3,0x4D}, {0xB3,0x4A}, {0xD7,0xAA}, {0xB5,0xF1},
+ {0xDB,0xBF}, {0xDB,0xB4}, {0xB5,0xEE}, {0xDF,0xE7},
+ {0xDB,0xBD}, {0xDB,0xB1}, {0xB5,0xEC}, {0xDB,0xB6},
+ {0xB5,0xEF}, {0xDB,0xBA}, {0xDB,0xB8}, {0xB5,0xF2},
+ {0xB5,0xEB}, {0xDB,0xB2}, {0xDB,0xB5}, {0xB5,0xF0},
+ {0xDB,0xB3}, {0xDB,0xBE}, {0xDB,0xBC}, {0xDB,0xB7},
+ {0xDB,0xB9}, {0xDB,0xBB}, {0xB5,0xED}, {0x99,0xCB},
+ {0xDF,0xE8}, {0xDF,0xEE}, {0xDF,0xE4}, {0xDF,0xEA},
+ {0xB8,0xBA}, {0xDF,0xE6}, {0xB8,0xC0}, {0xB8,0xBF},
+ {0xB8,0xBE}, {0xDF,0xED}, {0xB8,0xC1}, {0xB8,0xC2},
+ {0xDF,0xE3}, {0xDF,0xF0}, {0xB8,0xC3}, {0xB8,0xBD},
+ {0xB8,0xBC}, {0xDF,0xEC}, {0xB8,0xC4}, {0xDF,0xE2},
+ {0xDF,0xE5}, {0xDF,0xEF}, {0xDF,0xEB}, {0xE3,0xF4},
+ {0xE3,0xE9}, {0xB8,0xBB}, {0xBB,0x6A}, {0xE3,0xDD},
+ {0xE3,0xF2}, {0xE3,0xDE}, {0xBB,0x65}, {0xE3,0xDB},
+ {0xE3,0xE4}, {0xE3,0xDC}, {0xBB,0x67}, {0xE3,0xD6},
+ {0xE3,0xF1}, {0xBB,0x68}, {0xE3,0xEE}, {0xE3,0xEF},
+ {0xE3,0xD7}, {0xBB,0x6D}, {0xE3,0xE6}, {0xE3,0xE0},
+ {0xE3,0xE7}, {0xE3,0xDA}, {0xE3,0xF3}, {0xE3,0xEB},
+ {0xE3,0xE5}, {0xE3,0xD5}, {0xBB,0x69}, {0xE3,0xEC},
+ {0xBB,0x6C}, {0xE3,0xF0}, {0xE3,0xEA}, {0xBB,0x66},
+ {0xE3,0xE8}, {0xE3,0xE2}, {0xBB,0x64}, {0xE3,0xD9},
+ {0xE3,0xE1}, {0xE3,0xED}, {0xE3,0xDF}, {0xE3,0xE3},
+ {0xBD,0xC1}, {0xDF,0xE9}, {0xE7,0xB2}, {0xE7,0xBB},
+ {0xE7,0xB1}, {0xE7,0xAD}, {0xE7,0xAA}, {0xBD,0xC2},
+ {0xE7,0xA8}, {0xBB,0x6B}, {0xE7,0xA1}, {0xBD,0xC0},
+ {0xE7,0xA7}, {0xBD,0xBF}, {0xE7,0xAC}, {0xE7,0xA9},
+ {0xE7,0xB9}, {0xE7,0xB4}, {0xE7,0xAE}, {0xE7,0xB3},
+ {0xBD,0xBB}, {0xE7,0xAB}, {0xE7,0xBE}, {0xE7,0xA2},
+ {0xE7,0xA3}, {0xE7,0xBA}, {0xBD,0xBC}, {0xE7,0xBF},
+ {0xBD,0xBE}, {0xE7,0xC0}, {0xE7,0xB0}, {0xE3,0xD8},
+ {0xE7,0xB6}, {0xE7,0xAF}, {0xE7,0xB8}, {0xE7,0xB5},
+ {0x9D,0xD5}, {0x8F,0xB0}, {0xE7,0xA6}, {0xBD,0xB9},
+ {0xE7,0xBD}, {0xBD,0xBA}, {0xE7,0xA4}, {0xBD,0xBD},
+ {0xEB,0x64}, {0xE7,0xB7}, {0xE7,0xBC}, {0xFA,0x7A},
+ {0xEB,0x61}, {0xBD,0xB8}, {0xBF,0xC0}, {0xEB,0x6B},
+ {0xEB,0x67}, {0x9E,0x5F}, {0xEB,0x65}, {0xEB,0x60},
+ {0xEB,0x6F}, {0x99,0xCD}, {0xA0,0xC9}, {0xBF,0xC4},
+ {0xEB,0x5C}, {0xEB,0x68}, {0xEB,0x69}, {0xEB,0x5F},
+ {0xEB,0x5E}, {0xEB,0x6C}, {0xEB,0x62}, {0xEB,0x5D},
+ {0xEB,0x63}, {0xEB,0x6E}, {0xEB,0x5B}, {0xEB,0x6D},
+ {0xEB,0x6A}, {0xBF,0xC2}, {0xBF,0xC1}, {0xBF,0xC3},
+ {0xEB,0x66}, {0xF0,0xCB}, {0x9A,0xDB}, {0xA0,0xC6},
+ {0xEE,0x59}, {0xC1,0xB1}, {0xEE,0x5D}, {0xEE,0x5A},
+ {0xEE,0x61}, {0xEE,0x67}, {0xEE,0x5C}, {0x8F,0xB4},
+ {0xEE,0x70}, {0xC1,0xAE}, {0xEE,0x6A}, {0xEE,0x5F},
+ {0xEE,0x6B}, {0xEE,0x66}, {0xEE,0x6D}, {0xEE,0x5E},
+ {0xC1,0xB3}, {0xC1,0xB2}, {0xEE,0x60}, {0xEE,0x6E},
+ {0xEE,0x58}, {0xEE,0x6C}, {0xC1,0xAC}, {0xA0,0xD7},
+ {0xEE,0x64}, {0xEE,0x63}, {0xEE,0x68}, {0xEE,0x5B},
+ {0xC1,0xB0}, {0xC1,0xB4}, {0xEE,0x62}, {0xEE,0x69},
+ {0xC1,0xB5}, {0xEE,0x65}, {0xA0,0xC7}, {0xC1,0xAD},
+ {0xC1,0xAF}, {0xF0,0xC7}, {0xF0,0xC5}, {0xA0,0x43},
+ {0xF0,0xCC}, {0xF0,0xC9}, {0xF0,0xCD}, {0x8F,0xB5},
+ {0xF0,0xBE}, {0xF0,0xC6}, {0xF0,0xD1}, {0xEE,0x6F},
+ {0xF0,0xC2}, {0xC2,0xCF}, {0xE7,0xA5}, {0xF0,0xBD},
+ {0xF0,0xCA}, {0xF0,0xC4}, {0xF0,0xC1}, {0xF0,0xBC},
+ {0xF0,0xBB}, {0xF0,0xD0}, {0xF0,0xC0}, {0xF0,0xBF},
+ {0xC2,0xCD}, {0xF0,0xC8}, {0x8F,0xB2}, {0xC2,0xCC},
+ {0xC2,0xCE}, {0xF0,0xC3}, {0xF0,0xCF}, {0xA0,0x61},
+ {0xF2,0xDE}, {0xF2,0xDF}, {0xC3,0xC9}, {0xF2,0xDC},
+ {0xC3,0xC6}, {0xF2,0xE4}, {0xC3,0xCA}, {0xF2,0xE6},
+ {0xF2,0xDB}, {0xF0,0xCE}, {0xF2,0xE8}, {0xF2,0xDD},
+ {0x9E,0x5E}, {0xC3,0xC7}, {0xF2,0xE3}, {0xF2,0xE5},
+ {0xF2,0xE0}, {0xF2,0xE7}, {0xF2,0xE2}, {0xF2,0xE1},
+ {0xC3,0xC8}, {0x8F,0xB6}, {0xF4,0xC5}, {0xF4,0xC6},
+ {0xF4,0xC8}, {0xC4,0xAE}, {0xC4,0xAF}, {0xF4,0xC9},
+ {0xF4,0xC7}, {0x9F,0xE8}, {0xF4,0xC4}, {0xF6,0x42},
+ {0xF6,0x45}, {0xF6,0x41}, {0xC4,0xFA}, {0xF6,0x43},
+ {0xC4,0xF9}, {0xC4,0xF8}, {0xC4,0xF7}, {0xF6,0x44},
+ {0xF7,0x51}, {0xF7,0x4F}, {0x9C,0xB2}, {0xF7,0x4E},
+ {0xF6,0x40}, {0xF7,0x50}, {0xF6,0x46}, {0xF7,0x4D},
+ {0x95,0x7C}, {0xF7,0xF9}, {0xF7,0xD7}, {0xF7,0xF7},
+ {0xC5,0xDB}, {0xF7,0xF8}, {0xF7,0xFA}, {0xF8,0xBF},
+ {0xC5,0xFA}, {0xF8,0xBE}, {0xF8,0xBD}, {0xC5,0xFB},
+ {0xC6,0x5A}, {0xF9,0x6E}, {0xF9,0xA7}, {0xF9,0xA6},
+ {0xF9,0xA8}, {0xA6,0xE5}, {0xD0,0xAA}, {0x9F,0xC7},
+ {0xD3,0xCF}, {0xD3,0xD0}, {0x8F,0xBB}, {0x8F,0xBC},
+ {0xDB,0xC0}, {0xF6,0x47}, {0xF8,0xC0}, {0xA6,0xE6},
+ {0xAD,0x6C}, {0xD0,0xAB}, {0x8F,0xEC}, {0xD7,0xB1},
+ {0xB3,0x4E}, {0xDB,0xC2}, {0xDB,0xC1}, {0xB5,0xF3},
+ {0xB8,0xC5}, {0xE7,0xC1}, {0xBD,0xC3}, {0xBD,0xC4},
+ {0x8F,0xC0}, {0x93,0x6A}, {0xBF,0xC5}, {0xC5,0xFC},
+ {0xA6,0xE7}, {0x8B,0xE4}, {0x9C,0x7C}, {0xD0,0xAC},
+ {0xAA,0xED}, {0xD0,0xAE}, {0xD0,0xAD}, {0xAD,0x6D},
+ {0xD3,0xD1}, {0x95,0xA1}, {0xD3,0xD8}, {0xB0,0x49},
+ {0xD3,0xD6}, {0xD3,0xD4}, {0xD3,0xDB}, {0xD3,0xD2},
+ {0xD3,0xD3}, {0xB0,0x4A}, {0xB0,0x4E}, {0xD3,0xDC},
+ {0xB0,0x4D}, {0xD3,0xDA}, {0xD3,0xD7}, {0xD3,0xD5},
+ {0xB0,0x4B}, {0xB0,0x4C}, {0xD3,0xD9}, {0xFE,0xEC},
+ {0x95,0xA3}, {0xB3,0x50}, {0xD7,0xB2}, {0xB3,0x55},
+ {0xD7,0xC2}, {0xB3,0x54}, {0xD7,0xC4}, {0x8C,0x45},
+ {0x8C,0xB8}, {0xD7,0xB8}, {0xB3,0x52}, {0xD7,0xC3},
+ {0xD7,0xB3}, {0xB3,0x53}, {0xD7,0xBF}, {0xD7,0xBB},
+ {0xD7,0xBD}, {0xD7,0xB7}, {0xD7,0xBE}, {0x8F,0xC1},
+ {0xB3,0x4F}, {0xD7,0xBA}, {0xA0,0x52}, {0xD7,0xB9},
+ {0xD7,0xB5}, {0xD7,0xC0}, {0xD7,0xBC}, {0xD7,0xB4},
+ {0xD7,0xB6}, {0xB3,0x51}, {0xD7,0xC1}, {0x99,0xD0},
+ {0xB5,0xF6}, {0xDB,0xCD}, {0x8F,0xC3}, {0x8F,0xC4},
+ {0xDB,0xC9}, {0xDB,0xCB}, {0xDB,0xC6}, {0xDB,0xC5},
+ {0xDB,0xC3}, {0xDB,0xCA}, {0xDB,0xCC}, {0xDB,0xC8},
+ {0x95,0xA4}, {0xDB,0xC7}, {0xB5,0xF4}, {0xB5,0xF5},
+ {0x8F,0xC6}, {0x9E,0x60}, {0xDB,0xCF}, {0xB8,0xCD},
+ {0xDF,0xF2}, {0xDF,0xF8}, {0xDF,0xF3}, {0xDF,0xF4},
+ {0xF9,0xD8}, {0xDF,0xF9}, {0xB8,0xCF}, {0xB8,0xC7},
+ {0xB8,0xCE}, {0xDF,0xF1}, {0xDB,0xC4}, {0xB8,0xCA},
+ {0xB8,0xC8}, {0xDF,0xF7}, {0xDF,0xF6}, {0xB8,0xC9},
+ {0xB8,0xCB}, {0xDF,0xF5}, {0xB8,0xC6}, {0xB8,0xCC},
+ {0x95,0xA5}, {0xE3,0xF6}, {0xBB,0x74}, {0xE4,0x42},
+ {0xE4,0x41}, {0xE3,0xFB}, {0xBB,0x76}, {0xE4,0x40},
+ {0xE3,0xF7}, {0xE3,0xF8}, {0xBB,0x6E}, {0xBB,0x70},
+ {0x9C,0xB3}, {0xE3,0xFD}, {0xE3,0xF5}, {0xBB,0x72},
+ {0xBB,0x71}, {0xE3,0xF9}, {0xE3,0xFE}, {0xE3,0xFC},
+ {0xBB,0x73}, {0xE3,0xFA}, {0x99,0xD1}, {0xFE,0xF1},
+ {0xDB,0xCE}, {0xBB,0x6F}, {0xE7,0xC2}, {0xE7,0xC9},
+ {0xBD,0xC6}, {0xE7,0xCD}, {0xBD,0xCA}, {0xE7,0xC5},
+ {0xE7,0xC3}, {0xE7,0xCC}, {0xBD,0xC5}, {0xE7,0xCB},
+ {0xBD,0xC7}, {0xBD,0xC8}, {0xE7,0xC4}, {0xBD,0xC9},
+ {0xE7,0xCA}, {0xE7,0xC6}, {0xE7,0xC7}, {0xE7,0xC8},
+ {0xBB,0x75}, {0xEB,0x70}, {0xEB,0x7C}, {0xBF,0xCA},
+ {0xEB,0x77}, {0xEB,0x79}, {0x99,0xD2}, {0xBF,0xC8},
+ {0xEB,0x71}, {0xEB,0x75}, {0xEB,0x78}, {0xBF,0xC6},
+ {0xBF,0xC9}, {0xEB,0x7B}, {0xEB,0x73}, {0xEB,0x74},
+ {0xEB,0x7A}, {0xEB,0x72}, {0xEB,0x76}, {0xBF,0xC7},
+ {0xEE,0x72}, {0xEE,0x71}, {0xC1,0xB7}, {0xEE,0x77},
+ {0xC1,0xB9}, {0xC1,0xB6}, {0xEE,0x73}, {0xC1,0xBA},
+ {0xEE,0x74}, {0xEE,0x75}, {0xEE,0x78}, {0x9C,0xC2},
+ {0xC1,0xB8}, {0xF0,0xD6}, {0x99,0xD3}, {0xF0,0xD9},
+ {0xF0,0xD3}, {0xF0,0xD5}, {0x95,0xA7}, {0xF0,0xD4},
+ {0xF0,0xD7}, {0xF0,0xD8}, {0xEE,0x76}, {0xF0,0xD2},
+ {0x95,0xA9}, {0xC3,0xCD}, {0xF2,0xEC}, {0xF2,0xEF},
+ {0xF2,0xF1}, {0xF2,0xEA}, {0xF2,0xEB}, {0xF2,0xEE},
+ {0xF2,0xF0}, {0xC3,0xCE}, {0xC3,0xCC}, {0xC3,0xCB},
+ {0xF2,0xED}, {0xF2,0xE9}, {0xF4,0xCA}, {0xC4,0xB0},
+ {0x95,0xA6}, {0xF4,0xCB}, {0xF6,0x49}, {0xC4,0xFB},
+ {0xF6,0x4B}, {0xC4,0xFC}, {0xF6,0x48}, {0xF6,0x4A},
+ {0xC5,0xA8}, {0xF7,0x52}, {0xC5,0xA7}, {0xF7,0xFD},
+ {0xF7,0xFC}, {0xF7,0xFB}, {0x9C,0x5D}, {0xF9,0x48},
+ {0xF9,0x49}, {0xF9,0x4B}, {0xF9,0x4A}, {0xCA,0x50},
+ {0xA6,0xE8}, {0x98,0xE2}, {0xAD,0x6E}, {0xD7,0xC5},
+ {0xB5,0xF7}, {0xDF,0xFA}, {0xC2,0xD0}, {0x8F,0xC9},
+ {0xF2,0xF2}, {0xA0,0xC2}, {0x8F,0xCA}, {0xA8,0xA3},
+ {0xB3,0x57}, {0x99,0xD4}, {0xB3,0x56}, {0xA0,0xB9},
+ {0xDB,0xD0}, {0xB5,0xF8}, {0xDB,0xD2}, {0xDB,0xD1},
+ {0xDF,0xFB}, {0xB8,0xD0}, {0xE4,0x43}, {0xE4,0x46},
+ {0xE4,0x45}, {0xE4,0x44}, {0xE7,0xCE}, {0xE7,0xD0},
+ {0xE7,0xCF}, {0x9B,0x58}, {0xBF,0xCC}, {0x8F,0xCD},
+ {0xA0,0xD4}, {0xBF,0xCB}, {0xC1,0xBB}, {0xEE,0x79},
+ {0xEE,0x7B}, {0xEE,0x7A}, {0xC2,0xD1}, {0xF2,0xF4},
+ {0xF2,0xF3}, {0xF4,0xCC}, {0xC4,0xB1}, {0x8F,0xCE},
+ {0xC4,0xFD}, {0xF7,0x54}, {0xF7,0x53}, {0xC6,0x5B},
+ {0x8B,0xE5}, {0x89,0x79}, {0xA8,0xA4}, {0xD0,0xAF},
+ {0xAD,0x6F}, {0xD7,0xC8}, {0xD7,0xC6}, {0xD7,0xC7},
+ {0xDB,0xD4}, {0xDB,0xD5}, {0xE0,0x43}, {0xDB,0xD3},
+ {0xDF,0xFC}, {0xE0,0x41}, {0xE0,0x40}, {0xE0,0x42},
+ {0xB8,0xD1}, {0xDF,0xFE}, {0xDF,0xFD}, {0xE0,0x44},
+ {0x8F,0xD0}, {0xE4,0x49}, {0xE4,0x47}, {0xE4,0x48},
+ {0xE7,0xD3}, {0xE7,0xD1}, {0xE7,0xD2}, {0xEB,0x7D},
+ {0xEE,0x7C}, {0xEE,0x7D}, {0xC2,0xD2}, {0xF2,0xF5},
+ {0xF4,0xCD}, {0xC4,0xB2}, {0xF6,0x4C}, {0xF7,0x55},
+ {0xC5,0xA9}, {0xF7,0xFE}, {0xF9,0x4C}, {0xA8,0xA5},
+ {0xAD,0x71}, {0xAD,0x72}, {0xD0,0xB0}, {0xD0,0xB1},
+ {0xAD,0x70}, {0xB0,0x54}, {0xB0,0x52}, {0xB0,0x51},
+ {0xB0,0x58}, {0xB0,0x50}, {0xB0,0x59}, {0xD3,0xDD},
+ {0xB0,0x56}, {0xB0,0x53}, {0xB0,0x57}, {0xB0,0x55},
+ {0xB0,0x4F}, {0xB3,0x5F}, {0x95,0xB6}, {0xB3,0x59},
+ {0xD7,0xCC}, {0xB3,0x5E}, {0xB3,0x60}, {0xB3,0x5A},
+ {0xB3,0x5B}, {0xD7,0xCA}, {0x99,0xD6}, {0xB3,0x58},
+ {0x95,0xE5}, {0xD7,0xCB}, {0xB3,0x5D}, {0xD7,0xC9},
+ {0xB3,0x5C}, {0xB6,0x44}, {0xB6,0x46}, {0x99,0xD7},
+ {0xDB,0xD8}, {0xB6,0x45}, {0xB5,0xF9}, {0xB5,0xFD},
+ {0x95,0xB5}, {0xB8,0xE4}, {0xE0,0x49}, {0xDB,0xDA},
+ {0xB5,0xFE}, {0xDB,0xDD}, {0xDB,0xDE}, {0xB6,0x43},
+ {0xDB,0xE0}, {0xA0,0xCA}, {0xDB,0xE2}, {0xDB,0xE3},
+ {0xDB,0xD7}, {0xDB,0xD6}, {0xDB,0xE4}, {0xB6,0x42},
+ {0xDB,0xE1}, {0xDB,0xDF}, {0xB6,0x40}, {0xB5,0xFB},
+ {0xB6,0x47}, {0xDB,0xDB}, {0xDB,0xDC}, {0xDB,0xD9},
+ {0xB6,0x41}, {0xB5,0xFC}, {0xB5,0xFA}, {0xE0,0x48},
+ {0xB8,0xDF}, {0xB8,0xDA}, {0xB8,0xD5}, {0x9F,0xFD},
+ {0xB8,0xE5}, {0xB8,0xD6}, {0xB8,0xD2}, {0xB8,0xE1},
+ {0xB8,0xDE}, {0xB8,0xE0}, {0xB8,0xD7}, {0xB8,0xDC},
+ {0xB8,0xD3}, {0xB8,0xD4}, {0xE0,0x50}, {0xE0,0x4D},
+ {0xE0,0x45}, {0xE0,0x4A}, {0xB8,0xE2}, {0xE0,0x51},
+ {0xB8,0xE3}, {0xB8,0xD9}, {0xA0,0x58}, {0xE0,0x47},
+ {0xE0,0x4F}, {0xE0,0x4B}, {0xE0,0x4E}, {0xE0,0x4C},
+ {0xB8,0xDD}, {0xE0,0x46}, {0xB8,0xD8}, {0xE4,0x4C},
+ {0xBB,0x78}, {0xBB,0x7B}, {0xE4,0x4E}, {0x8F,0xD6},
+ {0xBB,0xA5}, {0xE4,0x4D}, {0xBB,0x7D}, {0x99,0xD8},
+ {0xBD,0xCF}, {0xE4,0x4F}, {0xBB,0xA4}, {0xE4,0x4B},
+ {0xBB,0xA6}, {0x8F,0xD3}, {0xBB,0x79}, {0xB8,0xDB},
+ {0xBB,0x7C}, {0xBB,0x7A}, {0xBB,0x7E}, {0xBB,0xA2},
+ {0xBB,0x77}, {0xBB,0xA7}, {0xBB,0xA3}, {0x8F,0xE5},
+ {0xBB,0xA1}, {0xE4,0x4A}, {0x8F,0xE9}, {0xBD,0xD6},
+ {0xBD,0xD2}, {0x99,0xD9}, {0xBD,0xD9}, {0xE7,0xD6},
+ {0xBD,0xDA}, {0xE7,0xE2}, {0xE7,0xDB}, {0xBD,0xCB},
+ {0xE7,0xE3}, {0xE7,0xDD}, {0xBD,0xD5}, {0xE7,0xDE},
+ {0xBD,0xD4}, {0xE7,0xE1}, {0xBD,0xCE}, {0xE7,0xDF},
+ {0xE7,0xD5}, {0xBD,0xCD}, {0xEB,0xAA}, {0xBD,0xD3},
+ {0xBD,0xD0}, {0xBD,0xD8}, {0xE7,0xD4}, {0xE7,0xD8},
+ {0xBD,0xCC}, {0xE7,0xD7}, {0xE7,0xD9}, {0xE7,0xDA},
+ {0xBD,0xD7}, {0xE7,0xDC}, {0xE7,0xE0}, {0xE7,0xE4},
+ {0x92,0x7C}, {0xBD,0xDB}, {0xBF,0xD2}, {0xEB,0xA5},
+ {0xEB,0xAB}, {0xEB,0xA8}, {0xEB,0x7E}, {0xEB,0xAC},
+ {0xEB,0xA1}, {0xEB,0xA7}, {0xBF,0xCD}, {0xBF,0xD3},
+ {0xEB,0xAD}, {0x9C,0x45}, {0xBF,0xCF}, {0xBF,0xD9},
+ {0xBF,0xD4}, {0xEB,0xAF}, {0xEB,0xA9}, {0xBF,0xD0},
+ {0xEB,0xA2}, {0xBF,0xDA}, {0xEB,0xA3}, {0xEB,0xA4},
+ {0xBF,0xDB}, {0xBF,0xD8}, {0xBD,0xD1}, {0xBF,0xCE},
+ {0xEB,0xB0}, {0xBF,0xDC}, {0xBF,0xD5}, {0xEB,0xAE},
+ {0xBF,0xD1}, {0xBF,0xD6}, {0xBF,0xD7}, {0xC1,0xC3},
+ {0xEE,0xA4}, {0xEE,0xAD}, {0xEE,0xAA}, {0xEE,0xAC},
+ {0xC1,0xC0}, {0xEE,0xA5}, {0x8F,0xDE}, {0xEE,0xAB},
+ {0xC1,0xBC}, {0xEE,0xA7}, {0xC1,0xC4}, {0xEE,0xA3},
+ {0xEE,0xA8}, {0xEE,0xAF}, {0xEB,0xA6}, {0xEE,0xA9},
+ {0xEE,0xA2}, {0xC1,0xBD}, {0xEE,0xA1}, {0xC1,0xBE},
+ {0xEE,0xB0}, {0xC1,0xBF}, {0xEE,0xAE}, {0xC1,0xC2},
+ {0xEE,0x7E}, {0x8F,0xDF}, {0xC1,0xC1}, {0xEE,0xA6},
+ {0xF0,0xDC}, {0xF0,0xEA}, {0xF0,0xE5}, {0xF0,0xE7},
+ {0xF0,0xDB}, {0xC2,0xD3}, {0xF0,0xDA}, {0xC2,0xD6},
+ {0xC2,0xD5}, {0xA0,0x4B}, {0xF0,0xE9}, {0xF0,0xE1},
+ {0xF0,0xDE}, {0xF0,0xE4}, {0xF0,0xDD}, {0xF0,0xDF},
+ {0xF0,0xE8}, {0xF0,0xE6}, {0xC2,0xD4}, {0xF0,0xED},
+ {0xF0,0xEB}, {0xF0,0xE2}, {0xF0,0xEC}, {0xF0,0xE3},
+ {0x8F,0xE2}, {0xF2,0xF9}, {0xC3,0xCF}, {0xF3,0x41},
+ {0xA0,0xCC}, {0xF6,0x4F}, {0xC3,0xD6}, {0xF0,0xE0},
+ {0xF2,0xF7}, {0xC3,0xD2}, {0xF2,0xF8}, {0xF2,0xFD},
+ {0x8F,0xE3}, {0x8F,0xE4}, {0xC3,0xD4}, {0xC3,0xD5},
+ {0xF2,0xF6}, {0xF3,0x40}, {0xF3,0x42}, {0xF2,0xFA},
+ {0xF2,0xFC}, {0xF2,0xFE}, {0xF2,0xFB}, {0xF3,0x43},
+ {0xC3,0xD1}, {0xC3,0xD7}, {0xC3,0xD3}, {0xC3,0xD0},
+ {0xF4,0xD0}, {0x9B,0xC4}, {0xC4,0xB7}, {0xF4,0xCE},
+ {0x9B,0xFC}, {0xF4,0xD2}, {0xF4,0xD3}, {0xC4,0xB5},
+ {0xF4,0xD4}, {0xF4,0xD1}, {0x96,0x4C}, {0xF4,0xCF},
+ {0xC4,0xB8}, {0xC4,0xB4}, {0xF4,0xD5}, {0xC4,0xB6},
+ {0xC4,0xB3}, {0xC4,0xFE}, {0xC5,0x40}, {0xF6,0x4E},
+ {0xF6,0x4D}, {0xF6,0x50}, {0xF6,0x51}, {0xC5,0x41},
+ {0xF7,0x56}, {0xF7,0x5B}, {0xC5,0xAA}, {0x9A,0xF6},
+ {0xF7,0x58}, {0x8C,0xAE}, {0xF7,0x57}, {0xF7,0x5A},
+ {0xF7,0x59}, {0xF8,0x43}, {0xC5,0xDC}, {0xF8,0x42},
+ {0xF8,0x40}, {0xF8,0x41}, {0x8F,0xE7}, {0xC5,0xFE},
+ {0xC5,0xFD}, {0xF8,0xC1}, {0xF8,0xC2}, {0xC6,0x40},
+ {0xF9,0x4D}, {0xF9,0x4E}, {0xC6,0x67}, {0x8F,0xE8},
+ {0xC6,0x6D}, {0xF9,0xA9}, {0xF9,0xC8}, {0x8B,0xE7},
+ {0x89,0x7A}, {0x89,0x7B}, {0xA8,0xA6}, {0xD7,0xCD},
+ {0xD7,0xCE}, {0xE0,0x52}, {0xE4,0x50}, {0xE7,0xE5},
+ {0xC1,0xC6}, {0xC1,0xC5}, {0xF0,0xEE}, {0xF3,0x44},
+ {0xF8,0x44}, {0xA8,0xA7}, {0xD3,0xDE}, {0xB0,0x5A},
+ {0xB3,0x61}, {0xE0,0x54}, {0xE0,0x53}, {0xBD,0xDC},
+ {0xE7,0xE6}, {0xBD,0xDD}, {0xEE,0xB1}, {0xC2,0xD7},
+ {0x99,0xDA}, {0xC6,0x76}, {0xA8,0xA8}, {0xCD,0xCB},
+ {0xD3,0xDF}, {0xB3,0x62}, {0xD7,0xCF}, {0xD7,0xD0},
+ {0xDB,0xE5}, {0xB6,0x48}, {0xB8,0xE6}, {0xE0,0x56},
+ {0xE0,0x55}, {0xE0,0x57}, {0xE4,0x51}, {0xE4,0x52},
+ {0xBB,0xA8}, {0xBF,0xDD}, {0xBD,0xDE}, {0xBF,0xDE},
+ {0xEE,0xB5}, {0xEE,0xB2}, {0xEE,0xB4}, {0xEE,0xB3},
+ {0xC1,0xC7}, {0xF0,0xEF}, {0xF3,0x46}, {0xF3,0x45},
+ {0xCB,0xA4}, {0xB0,0x5C}, {0xB0,0x5B}, {0xD3,0xE0},
+ {0xD7,0xD1}, {0xDB,0xE7}, {0xDB,0xE6}, {0xB6,0x49},
+ {0xE0,0x59}, {0xE0,0x5A}, {0xE0,0x58}, {0xB8,0xE8},
+ {0xB8,0xE7}, {0xBB,0xAA}, {0xBB,0xA9}, {0xE7,0xE7},
+ {0xEB,0xB3}, {0xEB,0xB1}, {0xEB,0xB2}, {0xBF,0xDF},
+ {0xEE,0xB7}, {0xEE,0xB6}, {0xF0,0xF2}, {0xF0,0xF1},
+ {0xF0,0xF0}, {0xF3,0x47}, {0x8F,0xED}, {0xF9,0xAA},
+ {0xA8,0xA9}, {0xAD,0x73}, {0x95,0xC0}, {0xAD,0x74},
+ {0xB0,0x5D}, {0xB0,0x5E}, {0xD3,0xE2}, {0xD3,0xE1},
+ {0xD7,0xD2}, {0xB3,0x68}, {0xB3,0x66}, {0xB3,0x63},
+ {0xB3,0x67}, {0xB3,0x65}, {0xB3,0x64}, {0xA0,0xCB},
+ {0xB6,0x4A}, {0xDB,0xEA}, {0xB8,0xED}, {0xB6,0x4C},
+ {0xB6,0x51}, {0xDB,0xEC}, {0xB6,0x53}, {0xB6,0x52},
+ {0xB6,0x55}, {0xDB,0xEB}, {0xDB,0xE8}, {0xB6,0x4F},
+ {0xB6,0x4B}, {0xB6,0x4D}, {0xDB,0xE9}, {0xB6,0x54},
+ {0xB6,0x50}, {0xB6,0x4E}, {0xB8,0xEF}, {0xB8,0xEE},
+ {0xB8,0xEC}, {0xB8,0xF0}, {0xB8,0xEA}, {0xB8,0xEB},
+ {0xB8,0xE9}, {0xE0,0x5B}, {0x9E,0x48}, {0xE4,0x54},
+ {0xBB,0xAC}, {0xBB,0xAD}, {0xBB,0xAB}, {0x99,0xDB},
+ {0xE4,0x53}, {0x8F,0xF3}, {0xE4,0x55}, {0xE7,0xEA},
+ {0xE7,0xEC}, {0x8F,0xF9}, {0xBD,0xE7}, {0xE7,0xED},
+ {0xBD,0xE0}, {0xE7,0xE9}, {0xBD,0xDF}, {0xBD,0xE9},
+ {0xBD,0xE5}, {0xBD,0xE6}, {0xBD,0xE2}, {0xE7,0xE8},
+ {0xBD,0xE1}, {0xE7,0xEE}, {0xE7,0xEB}, {0x95,0xC1},
+ {0xBD,0xE8}, {0xA0,0x4E}, {0xBD,0xE3}, {0xBD,0xE4},
+ {0xEB,0xB5}, {0xEB,0xB7}, {0xEB,0xB6}, {0x99,0xDC},
+ {0xEB,0xB8}, {0xBF,0xE0}, {0xEB,0xB4}, {0xA0,0x64},
+ {0xC1,0xCB}, {0xEE,0xB8}, {0xC1,0xC8}, {0xC1,0xCC},
+ {0xC1,0xCA}, {0xC1,0xC9}, {0xF0,0xF3}, {0xF0,0xF6},
+ {0xF0,0xF5}, {0x8F,0xF7}, {0xF0,0xF4}, {0xC2,0xD8},
+ {0xF3,0x48}, {0xF3,0x49}, {0xC3,0xD8}, {0xF3,0x4A},
+ {0xC3,0xD9}, {0x89,0xB0}, {0xA0,0x48}, {0xC4,0xBA},
+ {0xC4,0xB9}, {0xF6,0x52}, {0x8F,0xFB}, {0x8F,0xF6},
+ {0xC5,0x42}, {0xF6,0x53}, {0xF7,0x5C}, {0xC5,0xAB},
+ {0xC5,0xAC}, {0x9D,0xDC}, {0xF8,0x45}, {0xC6,0x42},
+ {0x99,0xDD}, {0x8B,0xE8}, {0xA8,0xAA}, {0xB3,0x6A},
+ {0xB3,0x69}, {0xE0,0x5C}, {0xE0,0x5D}, {0xBB,0xAE},
+ {0xEB,0xB9}, {0xBD,0xEA}, {0xEB,0xBA}, {0xEE,0xB9},
+ {0xA8,0xAB}, {0xD0,0xB2}, {0xAD,0x76}, {0xAD,0x75},
+ {0xD3,0xE3}, {0xB0,0x5F}, {0xD3,0xE4}, {0xD7,0xD5},
+ {0x92,0xC1}, {0xD7,0xD4}, {0xD7,0xD3}, {0xDB,0xEE},
+ {0xB6,0x58}, {0x9F,0xD6}, {0xDB,0xED}, {0xB6,0x57},
+ {0xDB,0xEF}, {0xB6,0x56}, {0xE0,0x5F}, {0xE0,0x62},
+ {0xE0,0x60}, {0xE0,0x61}, {0xE0,0x65}, {0xE0,0x5E},
+ {0xE0,0x66}, {0xE0,0x63}, {0xE0,0x64}, {0xBB,0xB0},
+ {0xE4,0x56}, {0xBB,0xAF}, {0xE7,0xF2}, {0xE7,0xF0},
+ {0xBD,0xEB}, {0xE7,0xEF}, {0xE7,0xF1}, {0xBD,0xEC},
+ {0xEB,0xBB}, {0xA0,0xD2}, {0xEB,0xBC}, {0xC1,0xCD},
+ {0x90,0x40}, {0xF3,0x4C}, {0xF3,0x4E}, {0xF3,0x4B},
+ {0xF3,0x4D}, {0xF4,0xD6}, {0xF6,0x54}, {0xF9,0x6F},
+ {0xA8,0xAC}, {0xAD,0x77}, {0xD3,0xE5}, {0xD3,0xE7},
+ {0xD3,0xE6}, {0xD7,0xD8}, {0xB3,0x6C}, {0xD7,0xD6},
+ {0xB3,0x6B}, {0xD7,0xD9}, {0x8A,0xC4}, {0xD7,0xDA},
+ {0xD7,0xD7}, {0x99,0xE0}, {0xDB,0xFB}, {0xB6,0x60},
+ {0xDB,0xF3}, {0xDB,0xF9}, {0xB6,0x5B}, {0xB6,0x5E},
+ {0xDB,0xF2}, {0xB6,0x59}, {0xDB,0xF6}, {0xE0,0x6C},
+ {0xB6,0x5D}, {0xDB,0xF1}, {0x9F,0xF0}, {0xDB,0xF7},
+ {0xDB,0xF4}, {0xDB,0xFA}, {0xDB,0xF0}, {0xDB,0xF8},
+ {0xB6,0x5C}, {0xB6,0x5F}, {0xDB,0xF5}, {0xB6,0x5A},
+ {0xB8,0xF2}, {0xE0,0x68}, {0xB8,0xF1}, {0xE0,0x6F},
+ {0xE0,0x6E}, {0xB8,0xF8}, {0xB8,0xF9}, {0xE0,0x70},
+ {0xB8,0xF3}, {0xE0,0x6D}, {0xB8,0xF7}, {0xE0,0x72},
+ {0xE0,0x69}, {0xE0,0x6B}, {0xB8,0xF4}, {0xE0,0x67},
+ {0xE0,0x6A}, {0xE0,0x71}, {0xB8,0xF5}, {0xE0,0x73},
+ {0xB8,0xF6}, {0xBB,0xB1}, {0xE4,0x5B}, {0xE4,0x61},
+ {0xE4,0x59}, {0xE4,0x62}, {0x9F,0xF3}, {0xE4,0x58},
+ {0xE4,0x5D}, {0xE4,0x63}, {0xE4,0x60}, {0xE4,0x5F},
+ {0xE4,0x5E}, {0xE4,0x57}, {0xE4,0x5C}, {0xE4,0x5A},
+ {0x9D,0xBF}, {0xBD,0xF1}, {0xBD,0xEE}, {0xE7,0xFB},
+ {0xE8,0x41}, {0xE8,0x43}, {0xE8,0x40}, {0xE7,0xF8},
+ {0xE7,0xFA}, {0xE8,0x45}, {0xE8,0x42}, {0xE7,0xFC},
+ {0xE8,0x46}, {0xE7,0xF9}, {0xE8,0x44}, {0xBD,0xEF},
+ {0xBD,0xF5}, {0xBD,0xF3}, {0xE7,0xF3}, {0xBD,0xF4},
+ {0xBD,0xF0}, {0xE7,0xF4}, {0xE7,0xF6}, {0xE7,0xF5},
+ {0xE7,0xFD}, {0xE7,0xFE}, {0x9F,0xF6}, {0xBD,0xF2},
+ {0x95,0xC8}, {0xBD,0xED}, {0x9E,0x5A}, {0xE7,0xF7},
+ {0xEB,0xC6}, {0xBF,0xE2}, {0xEB,0xBD}, {0xBF,0xE3},
+ {0xBF,0xE6}, {0xEB,0xC2}, {0xEB,0xBF}, {0xBF,0xE5},
+ {0x99,0xE3}, {0xEB,0xC3}, {0xEB,0xC4}, {0xEB,0xBE},
+ {0xEB,0xC7}, {0xEB,0xC0}, {0xEB,0xC5}, {0xBF,0xE4},
+ {0xBF,0xE1}, {0xEB,0xC1}, {0x8A,0x4A}, {0xEE,0xBF},
+ {0xC1,0xD0}, {0xC1,0xCE}, {0xC1,0xD1}, {0xC1,0xCF},
+ {0xEE,0xBE}, {0xEE,0xBB}, {0xEE,0xBA}, {0x9F,0xF1},
+ {0xEE,0xBD}, {0xEE,0xBC}, {0xF1,0x45}, {0xC2,0xDE},
+ {0xF0,0xFB}, {0xF0,0xFA}, {0xC2,0xD9}, {0xF1,0x41},
+ {0xF1,0x40}, {0xF0,0xF7}, {0xF1,0x43}, {0xF0,0xFC},
+ {0xC2,0xDD}, {0xF0,0xF9}, {0xF1,0x42}, {0xF0,0xF8},
+ {0xC2,0xDA}, {0xC2,0xDC}, {0xF0,0xFD}, {0xC2,0xDB},
+ {0xF0,0xFE}, {0x8A,0xA7}, {0xF1,0x44}, {0xF3,0x52},
+ {0xC3,0xDE}, {0xF3,0x4F}, {0xF3,0x53}, {0x99,0xE6},
+ {0xC3,0xDB}, {0xF3,0x51}, {0xC3,0xE0}, {0x9F,0xF7},
+ {0xC3,0xDD}, {0x9F,0xED}, {0xF3,0x50}, {0xC3,0xDF},
+ {0xF3,0x54}, {0xC3,0xDA}, {0x8A,0x5C}, {0x9D,0xAE},
+ {0xC4,0xBC}, {0xC4,0xBE}, {0xF4,0xD9}, {0xC4,0xBD},
+ {0xF4,0xD7}, {0xC3,0xDC}, {0xF4,0xD8}, {0xC4,0xBB},
+ {0xC5,0x43}, {0xC5,0x45}, {0xF6,0x56}, {0xC5,0x44},
+ {0xF6,0x55}, {0xF7,0x61}, {0xC5,0xAD}, {0xF7,0x60},
+ {0xC5,0xAE}, {0xF7,0x5E}, {0xF7,0x5D}, {0xF7,0x62},
+ {0xF7,0x63}, {0xF8,0x46}, {0xF7,0x5F}, {0xF8,0xC6},
+ {0xF8,0xC3}, {0xF8,0xC4}, {0xF8,0xC5}, {0xC6,0x5C},
+ {0xF9,0x51}, {0xF9,0x50}, {0xF9,0x4F}, {0xF9,0x70},
+ {0x95,0xC9}, {0xF9,0xBE}, {0xF9,0xAB}, {0xC6,0x6E},
+ {0xA8,0xAD}, {0xB0,0x60}, {0x90,0x48}, {0x99,0xE8},
+ {0xB8,0xFA}, {0x90,0x49}, {0x8C,0xBA}, {0xBD,0xF6},
+ {0x90,0xB1}, {0xEB,0xC8}, {0xC2,0xDF}, {0xF3,0x55},
+ {0x90,0x4A}, {0xF9,0xAC}, {0xA8,0xAE}, {0xAA,0xEE},
+ {0xAD,0x79}, {0xAD,0x78}, {0x99,0xEA}, {0xB0,0x63},
+ {0xD3,0xE8}, {0xB0,0x61}, {0xD3,0xE9}, {0xB0,0x62},
+ {0xD7,0xDF}, {0xD7,0xDB}, {0x9B,0xD1}, {0xB3,0x6D},
+ {0xD7,0xDE}, {0xD7,0xDD}, {0xD7,0xDC}, {0xB3,0x6E},
+ {0xD7,0xE0}, {0xD7,0xE1}, {0x99,0xEB}, {0x99,0xEC},
+ {0xDC,0x43}, {0xDC,0x41}, {0xDC,0x45}, {0xDC,0x46},
+ {0xDC,0x4C}, {0xDC,0x48}, {0xDC,0x4A}, {0x99,0xED},
+ {0xDC,0x42}, {0xDB,0xFC}, {0xDC,0x49}, {0x99,0xEE},
+ {0xDC,0x4B}, {0xDC,0x44}, {0xDC,0x47}, {0xDB,0xFD},
+ {0xB6,0x62}, {0xDC,0x40}, {0xDB,0xFE}, {0xB6,0x61},
+ {0xB6,0x63}, {0xB8,0xFD}, {0xE0,0x75}, {0xE0,0x77},
+ {0xE0,0x76}, {0xE0,0x7B}, {0xB8,0xFB}, {0xE0,0x78},
+ {0xE0,0x74}, {0xE0,0x79}, {0xE0,0x7A}, {0xB8,0xFC},
+ {0xB8,0xFE}, {0xE0,0x7C}, {0xE4,0x67}, {0xE4,0x66},
+ {0xE4,0x64}, {0xE4,0x65}, {0xBB,0xB3}, {0xBB,0xB5},
+ {0xBB,0xB2}, {0xBB,0xB4}, {0xE8,0x4D}, {0xE8,0x4E},
+ {0xE8,0x49}, {0x90,0x4C}, {0xE8,0x4A}, {0xBD,0xF8},
+ {0xBD,0xFD}, {0xBD,0xF7}, {0xBD,0xFE}, {0xBD,0xF9},
+ {0xE8,0x4B}, {0xE8,0x4C}, {0xE8,0x48}, {0xBE,0x40},
+ {0xBD,0xFB}, {0xBD,0xFA}, {0xBD,0xFC}, {0xE8,0x47},
+ {0x90,0x4D}, {0xEB,0xCA}, {0xBF,0xE8}, {0x95,0xCB},
+ {0xEB,0xCC}, {0xBF,0xEA}, {0xEB,0xCF}, {0xEB,0xCB},
+ {0xEB,0xC9}, {0xEB,0xCE}, {0xBF,0xE9}, {0xEB,0xCD},
+ {0xBF,0xE7}, {0xC1,0xD3}, {0xC1,0xD6}, {0xEE,0xC1},
+ {0x97,0xE2}, {0xC1,0xD4}, {0xEE,0xC0}, {0xC1,0xD2},
+ {0xC1,0xD5}, {0xF1,0x46}, {0xF1,0x47}, {0xF1,0x48},
+ {0xC2,0xE0}, {0x95,0xCC}, {0xF1,0x49}, {0xC2,0xE1},
+ {0xC3,0xE2}, {0xF3,0x58}, {0xF3,0x59}, {0xF3,0x57},
+ {0xF3,0x56}, {0xF3,0x5A}, {0xC3,0xE1}, {0xF4,0xDD},
+ {0xF4,0xDB}, {0xF4,0xDC}, {0xF4,0xDE}, {0xF4,0xDA},
+ {0xF4,0xDF}, {0xF6,0x58}, {0x9F,0x78}, {0xF6,0x59},
+ {0xF6,0x57}, {0xC5,0x46}, {0xF7,0x64}, {0xC5,0xAF},
+ {0xF7,0x65}, {0xF8,0x48}, {0xF8,0x47}, {0x89,0x7C},
+ {0x89,0x7D}, {0x89,0x7E}, {0x99,0x5D}, {0xA8,0xAF},
+ {0xB6,0x64}, {0xB9,0x40}, {0x9B,0x5A}, {0xBB,0xB6},
+ {0x90,0x50}, {0xBF,0xEC}, {0x8C,0x4F}, {0xBF,0xEB},
+ {0xC3,0xE3}, {0xC4,0x7C}, {0xC5,0x47}, {0xA8,0xB0},
+ {0xB0,0x64}, {0xB9,0x41}, {0x90,0x54}, {0xF3,0x5B},
+ {0xC6,0xD6}, {0x9A,0xA8}, {0x99,0xEF}, {0xFE,0xEB},
+ {0x9D,0xA3}, {0x9D,0xA1}, {0x99,0x43}, {0x99,0x45},
+ {0x9D,0x7D}, {0xCB,0xA6}, {0x99,0xF0}, {0xA8,0xB1},
+ {0xA8,0xB4}, {0xA8,0xB3}, {0xA8,0xB2}, {0xCB,0xA5},
+ {0x99,0xF1}, {0xCD,0xCD}, {0x99,0xF2}, {0xCD,0xCF},
+ {0xAA,0xEF}, {0x8C,0xBC}, {0x9D,0x60}, {0xAA,0xF1},
+ {0xCD,0xCC}, {0xCD,0xCE}, {0xAA,0xF0}, {0xCD,0xD1},
+ {0xCD,0xD0}, {0xCD,0xD2}, {0xA0,0xA3}, {0xD0,0xB6},
+ {0xD0,0xB4}, {0xAD,0x7C}, {0xD0,0xB3}, {0xAD,0xA3},
+ {0xAD,0x7E}, {0xAD,0x7B}, {0xAD,0xA4}, {0xAD,0x7D},
+ {0xAD,0xA2}, {0xAD,0xA1}, {0xD0,0xB5}, {0xAD,0x7A},
+ {0xB0,0x6A}, {0xD3,0xEB}, {0xD3,0xF1}, {0xB0,0x67},
+ {0xB0,0x6E}, {0x90,0x5B}, {0xB0,0x69}, {0xD3,0xEE},
+ {0xD3,0xF0}, {0xB0,0x6C}, {0xD3,0xEA}, {0xD3,0xED},
+ {0xB0,0x68}, {0xB0,0x65}, {0xD3,0xEC}, {0xB0,0x6B},
+ {0xD3,0xEF}, {0xB0,0x6D}, {0xB0,0x66}, {0x9E,0xDB},
+ {0xD7,0xE3}, {0xD7,0xE6}, {0xB3,0x70}, {0xB3,0x7A},
+ {0xB3,0x76}, {0xD7,0xE4}, {0x9D,0x79}, {0xB3,0x7E},
+ {0xB3,0x77}, {0xB3,0x7C}, {0xB3,0x72}, {0xB3,0x6F},
+ {0xB3,0x71}, {0xB3,0x7D}, {0xD7,0xE5}, {0xB3,0x75},
+ {0xB3,0x78}, {0xB3,0x74}, {0xB3,0x79}, {0xD7,0xE7},
+ {0xB3,0x7B}, {0xB3,0x73}, {0xD7,0xE2}, {0xDC,0x4D},
+ {0xB6,0x65}, {0xDC,0x4F}, {0xB6,0x67}, {0xB6,0x69},
+ {0x99,0xF3}, {0xDC,0x4E}, {0xB6,0x66}, {0xB6,0x6A},
+ {0x90,0x62}, {0xB6,0x68}, {0xB9,0x47}, {0xE0,0xA3},
+ {0xB9,0x4F}, {0xE0,0x7E}, {0xB9,0x50}, {0xB9,0x45},
+ {0xE0,0xA1}, {0xB9,0x4A}, {0xE0,0xA2}, {0xB9,0x43},
+ {0xB9,0x42}, {0x9F,0x55}, {0xB9,0x4D}, {0xB9,0x4C},
+ {0xB9,0x4B}, {0xB9,0x49}, {0xB9,0x4E}, {0xE0,0x7D},
+ {0xB9,0x44}, {0xB9,0x46}, {0xB9,0x48}, {0x9B,0xF9},
+ {0xBB,0xB8}, {0xBB,0xBB}, {0xBB,0xBF}, {0xBB,0xB9},
+ {0xBB,0xBE}, {0xBB,0xBC}, {0xBB,0xB7}, {0x90,0x65},
+ {0xBB,0xBD}, {0xBB,0xBA}, {0x96,0xE0}, {0xE8,0x52},
+ {0xBE,0x43}, {0xBE,0x41}, {0xE8,0x53}, {0x98,0xBE},
+ {0xBE,0x44}, {0xBE,0x42}, {0xE8,0x51}, {0xE8,0x50},
+ {0xBF,0xF0}, {0xE8,0x4F}, {0xBF,0xEE}, {0xBF,0xED},
+ {0xEB,0xD0}, {0xBE,0x45}, {0xBF,0xEF}, {0xEB,0xD1},
+ {0xBF,0xF2}, {0xEB,0xD2}, {0xBF,0xF1}, {0xC1,0xD8},
+ {0xEE,0xC3}, {0xC1,0xD7}, {0xC1,0xDC}, {0xC1,0xDA},
+ {0xC1,0xDB}, {0xC2,0xE3}, {0xC1,0xD9}, {0xEE,0xC2},
+ {0xEB,0xD3}, {0xC2,0xE2}, {0xC2,0xE4}, {0xC3,0xE4},
+ {0xC3,0xE5}, {0xF4,0xE0}, {0xC5,0xDE}, {0xC5,0xDD},
+ {0xA8,0xB6}, {0xCA,0x55}, {0xB0,0x6F}, {0xCA,0x52},
+ {0xCA,0x53}, {0xCA,0x51}, {0xCA,0x54}, {0xCB,0xAA},
+ {0xCB,0xA7}, {0xCB,0xAC}, {0xCB,0xA8}, {0xA8,0xB7},
+ {0xA8,0xBA}, {0xCB,0xA9}, {0xA8,0xB9}, {0xCB,0xAB},
+ {0x90,0x68}, {0xA8,0xB8}, {0x90,0x6C}, {0xCD,0xD5},
+ {0xCD,0xD7}, {0xAA,0xF4}, {0xCD,0xD3}, {0xCD,0xD6},
+ {0xCD,0xD4}, {0xAA,0xF2}, {0xAA,0xF5}, {0xAA,0xF3},
+ {0x95,0xD8}, {0xD0,0xB8}, {0xD0,0xBC}, {0xD0,0xB9},
+ {0xAD,0xA7}, {0xAD,0xA8}, {0x90,0x6A}, {0xD0,0xBB},
+ {0xD0,0xBD}, {0xD0,0xBF}, {0xAD,0xA5}, {0xD0,0xBE},
+ {0xAD,0xA6}, {0xD7,0xEE}, {0xD0,0xBA}, {0xD3,0xF2},
+ {0xD3,0xFB}, {0xD3,0xF9}, {0xD3,0xF4}, {0xD3,0xF5},
+ {0xD3,0xFA}, {0xD3,0xFC}, {0xB0,0x71}, {0xD3,0xF7},
+ {0xD3,0xF3}, {0xB0,0x70}, {0xB0,0x72}, {0xD3,0xF6},
+ {0xD3,0xFD}, {0xD3,0xF8}, {0xB3,0xA1}, {0xD7,0xF1},
+ {0xD7,0xE9}, {0xD7,0xEF}, {0xD7,0xF0}, {0xB3,0xA2},
+ {0xD7,0xE8}, {0xD7,0xEA}, {0xD0,0xB7}, {0xD7,0xEC},
+ {0xD7,0xED}, {0xD7,0xEB}, {0xB6,0x6C}, {0xDC,0x56},
+ {0xEB,0xD4}, {0xDC,0x57}, {0xDC,0x54}, {0xB3,0xA3},
+ {0xB6,0x6E}, {0xDC,0x53}, {0xDC,0x59}, {0xDC,0x58},
+ {0xB6,0x6B}, {0xDC,0x5C}, {0xDC,0x52}, {0xDC,0x5B},
+ {0xDC,0x50}, {0xDC,0x5A}, {0xDC,0x55}, {0xB6,0x6D},
+ {0xE0,0xAA}, {0xE0,0xA5}, {0xE0,0xAB}, {0xE0,0xA6},
+ {0xE0,0xA4}, {0xE0,0xA7}, {0xB9,0x51}, {0xE0,0xA9},
+ {0xE0,0xA8}, {0xB9,0x52}, {0xBB,0xC1}, {0xBB,0xC0},
+ {0xE4,0x6E}, {0xE4,0x71}, {0xE4,0x69}, {0xE4,0x6D},
+ {0xBB,0xC2}, {0xE4,0x6C}, {0xE4,0x6A}, {0xE4,0x70},
+ {0xE4,0x6B}, {0xE4,0x68}, {0xE4,0x6F}, {0xE8,0x59},
+ {0xBE,0x48}, {0xF1,0x4A}, {0xE8,0x56}, {0xE8,0x57},
+ {0xE8,0x55}, {0xDC,0x51}, {0xBE,0x47}, {0xE8,0x5A},
+ {0xE8,0x54}, {0xBE,0x46}, {0xBE,0x49}, {0xE8,0x58},
+ {0xEB,0xD5}, {0xBF,0xF3}, {0xEB,0xD6}, {0xEB,0xD7},
+ {0xEE,0xC4}, {0xC1,0xDD}, {0xF1,0x4B}, {0xF1,0x4C},
+ {0xF1,0x4D}, {0xF3,0x5D}, {0xF3,0x5C}, {0xF4,0xE2},
+ {0xF4,0xE1}, {0xF6,0x5B}, {0xF6,0x5C}, {0xF6,0x5A},
+ {0xF7,0x66}, {0xC5,0xB0}, {0xA8,0xBB}, {0xAD,0xAA},
+ {0xAD,0xA9}, {0xB0,0x75}, {0xB0,0x74}, {0xD4,0x40},
+ {0xD4,0x41}, {0xD3,0xFE}, {0x9F,0xB2}, {0xB0,0x73},
+ {0xD7,0xF5}, {0xD7,0xF6}, {0xD7,0xF2}, {0xB3,0xA4},
+ {0xD7,0xF3}, {0x9F,0xAE}, {0xD7,0xF4}, {0x9F,0xB0},
+ {0x89,0xAD}, {0xDC,0x5F}, {0xDC,0x61}, {0xDC,0x5D},
+ {0xDC,0x60}, {0xB6,0x6F}, {0xDC,0x5E}, {0xB6,0x70},
+ {0x90,0x6E}, {0xDD,0x73}, {0xB9,0x55}, {0xB9,0x54},
+ {0xB9,0x53}, {0xE0,0xAC}, {0xE0,0xAD}, {0x9E,0x71},
+ {0xE4,0x73}, {0xE4,0x75}, {0xBB,0xC6}, {0xBB,0xC3},
+ {0x9E,0x4A}, {0xBB,0xC5}, {0xBB,0xC4}, {0xE4,0x74},
+ {0xE4,0x72}, {0x9F,0xDC}, {0xE8,0x61}, {0xE8,0x5E},
+ {0xE8,0x5F}, {0xBE,0x4D}, {0xE8,0x60}, {0xE8,0x5B},
+ {0xE8,0x5C}, {0xBE,0x4A}, {0xBE,0x4B}, {0xE8,0x5D},
+ {0xBE,0x4C}, {0x89,0xAB}, {0xEB,0xDB}, {0x9F,0xB8},
+ {0xEB,0xDC}, {0xEB,0xD9}, {0xEB,0xDA}, {0xBF,0xF4},
+ {0xEB,0xD8}, {0xEE,0xC8}, {0xEE,0xC5}, {0xEE,0xC7},
+ {0xC1,0xE0}, {0xEE,0xCB}, {0xC1,0xDF}, {0xEE,0xC9},
+ {0xEE,0xCC}, {0xEE,0xCA}, {0xEE,0xC6}, {0xC1,0xDE},
+ {0xF1,0x4F}, {0xF1,0x50}, {0xF1,0x4E}, {0x90,0x70},
+ {0xF1,0x52}, {0xC2,0xE5}, {0xC2,0xE6}, {0xF3,0x5F},
+ {0xC3,0xE7}, {0xF1,0x51}, {0xF3,0x5E}, {0xC3,0xE6},
+ {0xF4,0xE5}, {0xF4,0xE6}, {0xC4,0xBF}, {0xF4,0xE4},
+ {0x8B,0x63}, {0xF4,0xE3}, {0xF6,0x5D}, {0xC5,0x48},
+ {0x95,0xDC}, {0xF8,0x49}, {0xF8,0xC8}, {0xF8,0xC7},
+ {0xC6,0x43}, {0xC6,0x5D}, {0xF8,0xC9}, {0xF9,0x71},
+ {0x90,0x71}, {0xC6,0x6F}, {0xA8,0xBC}, {0xAA,0xF6},
+ {0xB9,0x56}, {0xC4,0xC0}, {0xA8,0xBD}, {0xAD,0xAB},
+ {0xB3,0xA5}, {0xB6,0x71}, {0xC2,0xE7}, {0xAA,0xF7},
+ {0xD0,0xC1}, {0xD0,0xC0}, {0xD4,0x42}, {0xFC,0x5E},
+ {0xB0,0x78}, {0xB0,0x76}, {0xB0,0x7A}, {0xD4,0x44},
+ {0xB0,0x79}, {0xB0,0x77}, {0x89,0x49}, {0xD4,0x43},
+ {0xB3,0xA8}, {0xD7,0xFC}, {0x96,0x5B}, {0xB3,0xA7},
+ {0xB3,0xA9}, {0xD8,0x42}, {0xB3,0xAB}, {0xD7,0xFE},
+ {0xD8,0x40}, {0xD7,0xF7}, {0xB3,0xAA}, {0xD8,0x43},
+ {0xD7,0xF9}, {0xD7,0xFA}, {0xD7,0xF8}, {0xB3,0xA6},
+ {0x8C,0x50}, {0xD8,0x41}, {0xD7,0xFB}, {0xD7,0xFD},
+ {0x94,0xA6}, {0xDC,0x6D}, {0x8F,0xD5}, {0xDC,0x6C},
+ {0xDC,0x6A}, {0xDC,0x62}, {0xDC,0x71}, {0xDC,0x65},
+ {0xDC,0x6F}, {0xDC,0x76}, {0xDC,0x6E}, {0xB6,0x79},
+ {0x9E,0x73}, {0xB6,0x75}, {0xDC,0x63}, {0xDC,0x69},
+ {0xB6,0x77}, {0x90,0x75}, {0xDC,0x68}, {0xB6,0x78},
+ {0xB6,0x7A}, {0xDC,0x6B}, {0x99,0xF7}, {0xB6,0x72},
+ {0xB6,0x73}, {0xDC,0x77}, {0xDC,0x75}, {0xDC,0x74},
+ {0xDC,0x66}, {0xDC,0x72}, {0xB6,0x76}, {0x8C,0xBF},
+ {0xB6,0x74}, {0xDC,0x73}, {0xDC,0x64}, {0xDC,0x67},
+ {0xDC,0x70}, {0x99,0xF9}, {0x96,0x63}, {0x95,0xB9},
+ {0xE4,0xBA}, {0xE0,0xB7}, {0xE0,0xB0}, {0xE0,0xC3},
+ {0xE0,0xCC}, {0xE0,0xB3}, {0xB9,0x61}, {0x94,0xD4},
+ {0xE0,0xC0}, {0xB9,0x57}, {0xB9,0x59}, {0xB9,0x65},
+ {0xE0,0xB1}, {0xFC,0xFA}, {0xB9,0x5A}, {0xB9,0x5C},
+ {0xB9,0x66}, {0xB9,0x5B}, {0x90,0x77}, {0x90,0xAB},
+ {0xB9,0x64}, {0xE0,0xB9}, {0xE0,0xAE}, {0xB9,0x62},
+ {0xE0,0xB8}, {0xB9,0x5E}, {0xE0,0xCA}, {0xB9,0x63},
+ {0xE0,0xC8}, {0xE0,0xBC}, {0xE0,0xC6}, {0xB9,0x60},
+ {0xE0,0xAF}, {0xE0,0xC9}, {0xE0,0xC4}, {0x9D,0x4D},
+ {0xE0,0xCB}, {0xB9,0x58}, {0x99,0xFA}, {0xB9,0x67},
+ {0xB9,0x5D}, {0x92,0xE3}, {0xE0,0xB5}, {0x97,0xBB},
+ {0xE0,0xBD}, {0xE0,0xC1}, {0x90,0x78}, {0xE0,0xC5},
+ {0xB9,0x5F}, {0xE0,0xB4}, {0xE0,0xB2}, {0xE0,0xBE},
+ {0x99,0xFB}, {0xE0,0xBB}, {0xE0,0xBA}, {0x97,0xE0},
+ {0xE0,0xBF}, {0xE0,0xC2}, {0xE0,0xC7}, {0xE4,0x78},
+ {0x96,0xDC}, {0xBB,0xC7}, {0xE4,0xA4}, {0xE4,0x7A},
+ {0xBB,0xCC}, {0xBB,0xD0}, {0xE4,0xAD}, {0xE4,0xB5},
+ {0xE4,0xA6}, {0xBB,0xC8}, {0x9C,0xA8}, {0xE4,0xAA},
+ {0xE0,0xB6}, {0x97,0x72}, {0xBB,0xC9}, {0xE4,0xB1},
+ {0xE4,0xB6}, {0xE4,0xAE}, {0x94,0x40}, {0xE4,0xB0},
+ {0xE4,0xB9}, {0xE4,0xB2}, {0xE4,0x7E}, {0xE4,0xA9},
+ {0x92,0xF2}, {0xBB,0xD1}, {0xBB,0xCD}, {0xE4,0x7C},
+ {0xE4,0xAB}, {0xBB,0xCB}, {0xE4,0xA5}, {0xBB,0xCA},
+ {0xE4,0xB3}, {0xE4,0xA2}, {0xE4,0x79}, {0xBB,0xCE},
+ {0xE4,0xB8}, {0xE4,0x7B}, {0xE4,0xAF}, {0xE4,0xAC},
+ {0xE4,0xA7}, {0xE4,0x77}, {0xE4,0x76}, {0xE4,0xA1},
+ {0xE4,0xB4}, {0xBB,0xCF}, {0xE4,0xB7}, {0xE4,0x7D},
+ {0xE4,0xA3}, {0xBE,0x52}, {0x99,0xFD}, {0x99,0xFC},
+ {0xBE,0x5A}, {0xBE,0x55}, {0xE8,0xA4}, {0xE8,0xA1},
+ {0xE8,0x67}, {0xBE,0x50}, {0xF9,0xD7}, {0x96,0x4A},
+ {0xBE,0x4F}, {0xBE,0x56}, {0x96,0xD8}, {0x99,0xFE},
+ {0xE8,0x65}, {0xBE,0x54}, {0xE8,0x71}, {0xE8,0x63},
+ {0xE8,0x64}, {0xBE,0x4E}, {0xE8,0xA3}, {0xBE,0x58},
+ {0xE8,0x74}, {0xE8,0x79}, {0xE8,0x73}, {0xEB,0xEE},
+ {0xE8,0x6F}, {0xE8,0x77}, {0xE8,0x75}, {0xE8,0x68},
+ {0xE8,0x62}, {0xE8,0x7D}, {0xBE,0x57}, {0xE8,0x7E},
+ {0x90,0x4B}, {0xE8,0x78}, {0xE8,0x6D}, {0xE8,0x6B},
+ {0xE8,0x66}, {0xFA,0x41}, {0xE8,0x6E}, {0xE8,0x7B},
+ {0xE8,0x6A}, {0xE8,0x7A}, {0xE8,0xA2}, {0x9A,0x40},
+ {0xBE,0x53}, {0x97,0x5B}, {0xE8,0x76}, {0xE8,0x7C},
+ {0xE8,0x72}, {0xE8,0x6C}, {0xBE,0x51}, {0x9A,0x41},
+ {0x91,0xDD}, {0xE4,0xA8}, {0xE8,0x70}, {0xBE,0x59},
+ {0xE8,0x69}, {0x93,0xFC}, {0x9A,0x42}, {0x9A,0x43},
+ {0x96,0x59}, {0xEB,0xF4}, {0xBF,0xF7}, {0xEB,0xF3},
+ {0xEB,0xF0}, {0xEC,0x44}, {0xBF,0xFB}, {0x9A,0x44},
+ {0xEC,0x41}, {0xEB,0xF8}, {0xEC,0x43}, {0xEB,0xE9},
+ {0xEB,0xF6}, {0x90,0x51}, {0xBF,0xFD}, {0xEB,0xE1},
+ {0x94,0xBF}, {0xEB,0xDF}, {0xEC,0x42}, {0xEC,0x40},
+ {0xEB,0xFE}, {0xEB,0xED}, {0xEB,0xEC}, {0xEB,0xE2},
+ {0xC0,0x40}, {0xEB,0xE8}, {0xEB,0xF2}, {0xEB,0xFD},
+ {0xC0,0x43}, {0xEC,0x45}, {0xC1,0xE8}, {0xC0,0x45},
+ {0xBF,0xFE}, {0xEB,0xE6}, {0xEB,0xEF}, {0xEB,0xDE},
+ {0xEB,0xE0}, {0xBF,0xF5}, {0xC0,0x42}, {0xBF,0xFA},
+ {0xEB,0xE7}, {0xEB,0xF7}, {0xEB,0xF1}, {0xC0,0x41},
+ {0xEB,0xDD}, {0xC1,0xE3}, {0xEB,0xF9}, {0xEB,0xFC},
+ {0xBF,0xFC}, {0x90,0xA2}, {0xEB,0xEB}, {0xC0,0x44},
+ {0xBF,0xF9}, {0x9C,0xAB}, {0x97,0x76}, {0xBF,0xF8},
+ {0xEB,0xF5}, {0xEB,0xFB}, {0xBF,0xF6}, {0xEB,0xE4},
+ {0xEB,0xFA}, {0xEB,0xE5}, {0xFC,0x55}, {0xFE,0x45},
+ {0x94,0xA8}, {0x9A,0x45}, {0xFA,0x4B}, {0x9D,0xE1},
+ {0xEB,0xEA}, {0xEE,0xD2}, {0x96,0xD9}, {0xEE,0xD7},
+ {0xC1,0xE5}, {0xC1,0xE7}, {0xEE,0xDD}, {0xC1,0xE1},
+ {0xEE,0xEC}, {0xEE,0xE3}, {0xEE,0xD8}, {0xEE,0xD9},
+ {0xEE,0xE2}, {0xC1,0xEE}, {0xEE,0xE1}, {0xEE,0xD1},
+ {0xEE,0xE0}, {0xEE,0xD4}, {0xEE,0xED}, {0xC1,0xED},
+ {0xC1,0xEB}, {0xEE,0xD5}, {0xEE,0xE8}, {0x97,0x74},
+ {0xEE,0xDA}, {0xEE,0xE7}, {0xFD,0xF5}, {0xEE,0xE9},
+ {0xEE,0xD0}, {0xC1,0xE6}, {0x92,0xE5}, {0xEE,0xEA},
+ {0x96,0x45}, {0x91,0xDA}, {0xEE,0xDE}, {0x90,0xA3},
+ {0xC1,0xEA}, {0xEE,0xDB}, {0xA0,0x5F}, {0xC1,0xEC},
+ {0xEE,0xE4}, {0x90,0xAF}, {0x97,0xBF}, {0xC1,0xE4},
+ {0xEE,0xD6}, {0xEE,0xE5}, {0x91,0x4C}, {0xEE,0xDF},
+ {0xEB,0xE3}, {0xEE,0xE6}, {0xEE,0xD3}, {0x96,0x7A},
+ {0xC1,0xE9}, {0xEE,0xEB}, {0x91,0xDE}, {0xC1,0xE2},
+ {0xEE,0xCE}, {0x9A,0x46}, {0xFE,0xB0}, {0x97,0x79},
+ {0x94,0x6C}, {0xF1,0x60}, {0xF1,0x59}, {0xC2,0xE9},
+ {0xF1,0x54}, {0xF1,0x63}, {0xF1,0x5B}, {0xEE,0xDC},
+ {0x98,0x58}, {0xF1,0x65}, {0xF1,0x55}, {0xC2,0xE8},
+ {0xF1,0x5F}, {0xC2,0xEA}, {0xC2,0xF2}, {0xC2,0xF0},
+ {0xF1,0x61}, {0xC2,0xF1}, {0xF1,0x57}, {0x92,0x66},
+ {0xF1,0x58}, {0xF1,0x5D}, {0xF1,0x62}, {0x93,0xFB},
+ {0xEE,0xCD}, {0xC2,0xEB}, {0xF1,0x6A}, {0xF1,0x67},
+ {0xF1,0x6B}, {0xF1,0x5E}, {0xF1,0x5A}, {0xF1,0x68},
+ {0xF3,0x6A}, {0xF1,0x5C}, {0xC2,0xEE}, {0x9A,0x47},
+ {0xC2,0xED}, {0xEE,0xCF}, {0xC2,0xEF}, {0xF1,0x64},
+ {0xF1,0x66}, {0xC2,0xEC}, {0xF1,0x69}, {0xF1,0x53},
+ {0xF1,0x56}, {0x97,0x49}, {0x97,0x48}, {0x93,0x4A},
+ {0x9C,0xE2}, {0xF3,0x73}, {0xF3,0x63}, {0xC3,0xEB},
+ {0xF3,0x71}, {0x92,0x64}, {0xF3,0x61}, {0xC3,0xEC},
+ {0xF3,0x6C}, {0x91,0xDF}, {0xF3,0x68}, {0xC3,0xF1},
+ {0xF3,0x72}, {0xF3,0x62}, {0xF3,0x65}, {0xC3,0xE9},
+ {0xF3,0x74}, {0xFB,0x79}, {0xF3,0x6D}, {0xF3,0x70},
+ {0xC3,0xEF}, {0xC3,0xF4}, {0xC3,0xF2}, {0xF3,0x69},
+ {0xF3,0x64}, {0x96,0xD7}, {0xC3,0xED}, {0xC3,0xEE},
+ {0xF3,0x60}, {0xC3,0xEA}, {0x93,0x43}, {0xC3,0xE8},
+ {0xC3,0xF0}, {0xF3,0x6F}, {0xC3,0xF3}, {0xF3,0x6B},
+ {0xF3,0x75}, {0xC3,0xF5}, {0xF3,0x67}, {0xF3,0x6E},
+ {0xFD,0xCB}, {0xFE,0x7A}, {0x91,0xDB}, {0x8C,0x6A},
+ {0xF4,0xF3}, {0xF5,0x42}, {0xF4,0xF5}, {0xF4,0xFC},
+ {0xF3,0x66}, {0xF4,0xFA}, {0xF4,0xE9}, {0xF5,0x40},
+ {0xC4,0xC3}, {0xF4,0xED}, {0xF4,0xFE}, {0xF4,0xF4},
+ {0x97,0xAF}, {0xC4,0xC2}, {0x95,0xDD}, {0xF5,0x44},
+ {0xF4,0xF6}, {0x93,0x48}, {0xF4,0xFB}, {0xF4,0xFD},
+ {0xF4,0xE7}, {0xF5,0x41}, {0xF4,0xF2}, {0xF4,0xF7},
+ {0xF4,0xEB}, {0xF4,0xEF}, {0xF5,0x43}, {0xF4,0xF9},
+ {0xF4,0xE8}, {0xF4,0xEC}, {0xF4,0xEE}, {0xF4,0xF8},
+ {0x9A,0x4B}, {0xC4,0xC1}, {0xF4,0xF1}, {0xFC,0x45},
+ {0x9A,0x4D}, {0xF4,0xEA}, {0x91,0xBC}, {0x90,0xE2},
+ {0x90,0xB4}, {0x95,0xE1}, {0xF4,0xF0}, {0xF6,0x61},
+ {0xF6,0x66}, {0xC5,0x4F}, {0xF6,0x68}, {0x9A,0x4E},
+ {0xC5,0x49}, {0xF6,0x64}, {0xF6,0x6A}, {0xC5,0x4E},
+ {0xC5,0x4A}, {0xC5,0x4B}, {0xF6,0x60}, {0xF6,0x67},
+ {0xC5,0x4D}, {0xF6,0x65}, {0xC5,0x4C}, {0xF6,0x5F},
+ {0xF6,0x63}, {0xF6,0x62}, {0x9A,0x4F}, {0xF6,0x5E},
+ {0xF6,0x69}, {0xFE,0x40}, {0xFE,0x43}, {0xC5,0xB1},
+ {0xF7,0x6D}, {0xF7,0x70}, {0xF7,0x6C}, {0xF7,0x6E},
+ {0xF7,0x6F}, {0xF7,0x69}, {0xF7,0x6A}, {0xF7,0x67},
+ {0x96,0xDD}, {0xF7,0x6B}, {0xF7,0x68}, {0xC5,0xB2},
+ {0xC5,0xB3}, {0x9A,0x51}, {0xF8,0x4B}, {0xF8,0x4D},
+ {0x96,0xA7}, {0x90,0xB0}, {0xF8,0x4C}, {0xF8,0x4E},
+ {0xC5,0xE0}, {0xF8,0x4A}, {0xC5,0xDF}, {0xC5,0xE1},
+ {0x9C,0x4E}, {0x94,0x43}, {0xF8,0xCB}, {0xF8,0xCC},
+ {0xC6,0x44}, {0xF8,0xCA}, {0x8E,0xBA}, {0xF9,0x53},
+ {0xF9,0x52}, {0xF9,0x54}, {0xC6,0x5F}, {0xF9,0x55},
+ {0xC6,0x5E}, {0xF9,0x56}, {0xF9,0x72}, {0xF9,0x75},
+ {0xF9,0x74}, {0xC6,0x68}, {0xF9,0x73}, {0x9A,0x52},
+ {0xFC,0xC1}, {0xC6,0x72}, {0xC6,0x70}, {0xC6,0x71},
+ {0xC6,0x77}, {0xF9,0xC0}, {0xF9,0xC1}, {0xF9,0xBF},
+ {0xF9,0xC9}, {0x8B,0xE9}, {0x9C,0xAF}, {0x8B,0xFD},
+ {0x9A,0xBC}, {0x9A,0xB8}, {0x9A,0xAE}, {0x9A,0xA7},
+ {0x9A,0x53}, {0x9D,0x74}, {0xAA,0xF8}, {0x8B,0xEA},
+ {0xD8,0x44}, {0xDC,0x78}, {0xE8,0xA5}, {0xF3,0x76},
+ {0x8B,0xEB}, {0xAA,0xF9}, {0xAD,0xAC}, {0xB0,0x7B},
+ {0x90,0xB2}, {0xD8,0x45}, {0xD8,0x46}, {0xB3,0xAC},
+ {0xB6,0x7D}, {0xDC,0x7A}, {0xDC,0x79}, {0xB6,0xA3},
+ {0xB6,0x7C}, {0xDC,0x7B}, {0xB6,0x7E}, {0xB6,0xA2},
+ {0xB6,0xA1}, {0xB6,0x7B}, {0x95,0xE9}, {0x95,0xE8},
+ {0xB9,0x68}, {0x95,0xE6}, {0xE0,0xD0}, {0xE0,0xCE},
+ {0xE0,0xCF}, {0xE0,0xCD}, {0x90,0xB5}, {0xBB,0xD2},
+ {0x9A,0x54}, {0xBB,0xD5}, {0xBB,0xD7}, {0xBB,0xD6},
+ {0x90,0xB3}, {0x95,0xE7}, {0xBB,0xD3}, {0xBB,0xD4},
+ {0x8B,0x50}, {0xE8,0xA7}, {0xE8,0xA6}, {0xBE,0x5B},
+ {0xE8,0xA8}, {0xE8,0xA9}, {0xBE,0x5C}, {0xEC,0x4D},
+ {0xEC,0x4B}, {0xEE,0xF3}, {0xEC,0x49}, {0xEC,0x4A},
+ {0xC0,0x46}, {0xEC,0x46}, {0xEC,0x4E}, {0xEC,0x48},
+ {0xEC,0x4C}, {0xEE,0xEF}, {0xEE,0xF1}, {0xEE,0xF2},
+ {0xC1,0xF3}, {0xEE,0xEE}, {0xC1,0xF2}, {0xEE,0xF0},
+ {0xC1,0xEF}, {0xC1,0xF0}, {0xC1,0xF1}, {0xEC,0x47},
+ {0xC2,0xF5}, {0xF1,0x6E}, {0xF1,0x6C}, {0xF1,0x6D},
+ {0xC2,0xF3}, {0xC2,0xF6}, {0xC2,0xF4}, {0xF3,0x77},
+ {0xF3,0x78}, {0xC3,0xF6}, {0xF5,0x45}, {0xF5,0x47},
+ {0xF5,0x46}, {0xC4,0xC4}, {0xC5,0x50}, {0xF6,0x6D},
+ {0xF6,0x6C}, {0xF6,0x6B}, {0x8B,0xEC}, {0x9A,0x56},
+ {0xAA,0xFA}, {0x8B,0xFB}, {0xC9,0xAA}, {0xCA,0x58},
+ {0xA6,0xE9}, {0xCA,0x56}, {0xCA,0x59}, {0xCA,0x57},
+ {0xCB,0xAE}, {0xA8,0xC1}, {0xA8,0xC2}, {0xCB,0xB0},
+ {0xA8,0xBF}, {0xCB,0xAF}, {0xCB,0xAD}, {0xA8,0xC0},
+ {0xA8,0xBE}, {0x9A,0x57}, {0xA0,0xAA}, {0xCD,0xD8},
+ {0xCD,0xDB}, {0xAA,0xFD}, {0xCD,0xDA}, {0xCD,0xD9},
+ {0xAA,0xFC}, {0xAA,0xFB}, {0x9F,0xA6}, {0xAB,0x40},
+ {0xCD,0xDC}, {0xAA,0xFE}, {0x99,0xCC}, {0xD0,0xC6},
+ {0xAD,0xAE}, {0xAD,0xAF}, {0xAD,0xB0}, {0xD0,0xC7},
+ {0xD0,0xC3}, {0xAD,0xAD}, {0xD0,0xC4}, {0xD0,0xC5},
+ {0xD0,0xC2}, {0x9C,0x59}, {0xB0,0xA4}, {0xB0,0xA1},
+ {0xD4,0x45}, {0xB0,0xA2}, {0xB0,0xA5}, {0xD4,0x46},
+ {0xB0,0x7E}, {0xB0,0x7C}, {0xB0,0x7D}, {0xB0,0xA3},
+ {0x99,0xB5}, {0xB3,0xAD}, {0xD8,0x49}, {0xB3,0xB5},
+ {0xD8,0x48}, {0xD8,0x4B}, {0xB3,0xB1}, {0xD8,0x4A},
+ {0xB6,0xAB}, {0xB3,0xAF}, {0xB3,0xB2}, {0xB3,0xAE},
+ {0xB3,0xB3}, {0xB3,0xB4}, {0xB3,0xB0}, {0x90,0xBE},
+ {0xD8,0x47}, {0xB6,0xA7}, {0xDC,0x7D}, {0xDC,0xA3},
+ {0x9F,0xAF}, {0xDC,0xA2}, {0xB6,0xAC}, {0xB6,0xA8},
+ {0xB6,0xA9}, {0xDC,0x7C}, {0xDC,0x7E}, {0xDC,0xA1},
+ {0xB6,0xA4}, {0xB6,0xA6}, {0xB6,0xAA}, {0xB6,0xA5},
+ {0x95,0xF2}, {0xE0,0xD3}, {0xE0,0xD1}, {0xE0,0xD2},
+ {0xB9,0x6A}, {0xB9,0x6B}, {0x90,0xBF}, {0xE0,0xD4},
+ {0xB9,0x69}, {0xBB,0xD8}, {0xBB,0xDA}, {0xBB,0xD9},
+ {0xE4,0xBB}, {0xE4,0xBC}, {0xE8,0xAB}, {0x90,0xC1},
+ {0xE8,0xAA}, {0xFE,0xE4}, {0xC0,0x47}, {0xC0,0x48},
+ {0xEC,0x4F}, {0xC0,0x49}, {0xEE,0xF6}, {0xEE,0xF4},
+ {0xEE,0xF5}, {0xC1,0xF4}, {0xF1,0x6F}, {0xC3,0xF7},
+ {0x90,0xC4}, {0xC1,0xF5}, {0xAB,0x41}, {0xB0,0xA6},
+ {0xD4,0x47}, {0x90,0xC7}, {0xD8,0x4C}, {0xB3,0xB6},
+ {0xB6,0xAD}, {0xDC,0xA4}, {0xDC,0xA6}, {0xB6,0xAF},
+ {0xB6,0xAE}, {0xB6,0xB0}, {0xB6,0xB1}, {0xDC,0xA5},
+ {0xB9,0x6E}, {0xB9,0x6F}, {0xB9,0x6D}, {0xBB,0xDB},
+ {0xB9,0x6C}, {0xE0,0xD5}, {0xBB,0xDC}, {0xE8,0xAC},
+ {0xEC,0x50}, {0xC0,0x4A}, {0xC1,0xF6}, {0xF1,0x70},
+ {0xF1,0x74}, {0xC2,0xF9}, {0xF1,0x71}, {0xC2,0xFA},
+ {0xC2,0xF8}, {0xF1,0x75}, {0xC2,0xFB}, {0xF1,0x73},
+ {0xF3,0x79}, {0xC2,0xF7}, {0xC3,0xF8}, {0xF8,0xCD},
+ {0xAB,0x42}, {0xB3,0xB8}, {0xB3,0xB7}, {0xB6,0xB2},
+ {0xDC,0xA8}, {0xDC,0xA7}, {0xB6,0xB3}, {0x92,0xE4},
+ {0xE0,0xD9}, {0xB9,0x73}, {0xB9,0x70}, {0xE0,0xD8},
+ {0xB9,0x72}, {0xE0,0xD6}, {0xB9,0x71}, {0xE0,0xD7},
+ {0xE4,0xBD}, {0xBB,0xDD}, {0xE8,0xAF}, {0x9F,0x52},
+ {0xBE,0x5D}, {0xE8,0xAD}, {0xBE,0x5E}, {0xBE,0x5F},
+ {0xE8,0xAE}, {0xBE,0x60}, {0xEC,0x51}, {0xC0,0x4E},
+ {0xC0,0x4B}, {0xC0,0x50}, {0xEC,0x53}, {0xC0,0x4C},
+ {0xEC,0x52}, {0xC0,0x4F}, {0xC0,0x4D}, {0xEE,0xF9},
+ {0xEE,0xFB}, {0x90,0xDB}, {0xC1,0xF7}, {0xEE,0xFA},
+ {0xC1,0xF8}, {0xEE,0xF8}, {0xEE,0xF7}, {0xA0,0x66},
+ {0xF1,0x77}, {0xF1,0x76}, {0xC2,0xFC}, {0xF1,0x78},
+ {0xF3,0x7E}, {0xC3,0xFA}, {0xF3,0x7D}, {0xF3,0x7A},
+ {0xC3,0xF9}, {0xF3,0x7B}, {0xF3,0x7C}, {0xF5,0x48},
+ {0xF5,0x49}, {0xC4,0xC5}, {0x90,0xD2}, {0xC5,0x53},
+ {0xF6,0x6E}, {0x90,0xD4}, {0xC5,0x51}, {0xC5,0x52},
+ {0xF6,0x6F}, {0xC5,0xB4}, {0xC5,0xB5}, {0xF7,0x71},
+ {0x9A,0x5B}, {0x95,0xFD}, {0xC6,0x45}, {0xF8,0xCF},
+ {0xC6,0x47}, {0xF8,0xCE}, {0xF8,0xD0}, {0xC6,0x46},
+ {0xF9,0x57}, {0xF9,0xAD}, {0x8B,0xC4}, {0xAB,0x43},
+ {0x8C,0x66}, {0xB9,0x74}, {0x90,0xDE}, {0xE4,0xBE},
+ {0xE8,0xB0}, {0xC0,0x51}, {0xC0,0x52}, {0x9C,0xE4},
+ {0xAB,0x44}, {0x90,0xE1}, {0xBE,0x61}, {0xC3,0xFB},
+ {0xAD,0xB1}, {0xC0,0x53}, {0xC5,0xE2}, {0xAD,0xB2},
+ {0xD8,0x4D}, {0xDC,0xA9}, {0x9E,0x46}, {0xDC,0xAB},
+ {0xDC,0xAA}, {0x96,0x51}, {0xE0,0xDD}, {0xE0,0xDA},
+ {0xB9,0x75}, {0xB9,0x76}, {0xE0,0xDB}, {0xE0,0xDC},
+ {0xE4,0xC0}, {0xE4,0xC5}, {0xBB,0xDE}, {0xE4,0xBF},
+ {0xE4,0xC1}, {0xE4,0xC8}, {0xE4,0xC3}, {0xE4,0xC7},
+ {0xE4,0xC4}, {0xE4,0xC2}, {0xE4,0xC6}, {0xBB,0xDF},
+ {0xFB,0x58}, {0xE8,0xB3}, {0x90,0xE6}, {0xE8,0xB1},
+ {0xBE,0x63}, {0xBE,0x62}, {0xE8,0xB2}, {0xBE,0x64},
+ {0xEC,0x56}, {0xEC,0x55}, {0xC0,0x54}, {0xEC,0x54},
+ {0xEE,0xFC}, {0x96,0x50}, {0xEE,0xFE}, {0xEF,0x41},
+ {0xEF,0x40}, {0x90,0xE7}, {0xC1,0xF9}, {0xEE,0xFD},
+ {0xF1,0xA1}, {0xC2,0xFD}, {0xF1,0x7D}, {0xF1,0xA2},
+ {0xC2,0xFE}, {0xF1,0x7B}, {0xF1,0x7E}, {0xF1,0x7C},
+ {0xF1,0x79}, {0xC3,0x40}, {0xF1,0x7A}, {0x90,0xE8},
+ {0x9A,0x5D}, {0xF3,0xA1}, {0x9F,0x7A}, {0xF3,0xA3},
+ {0xF3,0xA2}, {0x9B,0x5C}, {0xF5,0x4A}, {0x9F,0x7C},
+ {0xF5,0x4B}, {0xFC,0x52}, {0x90,0xE9}, {0xF6,0x70},
+ {0x90,0xEA}, {0xC5,0xB7}, {0x9A,0x5E}, {0xC5,0xB6},
+ {0xF8,0x4F}, {0xF8,0x50}, {0xC6,0x48}, {0xF8,0xD1},
+ {0x9F,0x76}, {0xC6,0x69}, {0xAD,0xB3}, {0xB6,0xB4},
+ {0xE4,0xCA}, {0xE4,0xC9}, {0xE8,0xB5}, {0xE8,0xB4},
+ {0x90,0xEB}, {0xC1,0xFA}, {0xEF,0x43}, {0xEF,0x42},
+ {0xF1,0xA5}, {0xF1,0xA3}, {0xF1,0xA6}, {0xF1,0xA4},
+ {0xC3,0xFC}, {0xF3,0xA4}, {0xF3,0xA5}, {0xF3,0xA6},
+ {0x90,0xEC}, {0xF6,0x71}, {0xF7,0x72}, {0xF8,0xD2},
+ {0x8B,0xEE}, {0xAD,0xB4}, {0x90,0xEE}, {0xEC,0x57},
+ {0xEF,0x44}, {0x91,0xC6}, {0xAD,0xB5}, {0x90,0xF2},
+ {0xBB,0xE0}, {0xEC,0x58}, {0xC3,0x41}, {0xF1,0xA7},
+ {0xC3,0xFD}, {0xF5,0x4C}, {0xF5,0x4D}, {0xC5,0x54},
+ {0xF8,0x51}, {0xAD,0xB6}, {0xB3,0xBB}, {0xB3,0xBC},
+ {0xD8,0x4E}, {0xB6,0xB5}, {0xB6,0xB6}, {0xDC,0xAC},
+ {0xB6,0xB7}, {0xB9,0x7A}, {0xB9,0x7C}, {0xE0,0xDF},
+ {0xE0,0xE0}, {0xE0,0xDE}, {0xB9,0x77}, {0xB9,0x78},
+ {0xB9,0x7B}, {0xB9,0x79}, {0xFC,0xBC}, {0x8A,0x74},
+ {0xE4,0xCB}, {0xBB,0xE1}, {0xBB,0xE2}, {0xE8,0xBC},
+ {0xBE,0x67}, {0xE8,0xB7}, {0xE8,0xB6}, {0x96,0x57},
+ {0xE8,0xBB}, {0xBE,0x65}, {0x9C,0xEF}, {0xC0,0x5B},
+ {0xE8,0xB8}, {0xE8,0xBD}, {0xE8,0xBA}, {0xE8,0xB9},
+ {0xBE,0x66}, {0xC0,0x59}, {0x9F,0xDF}, {0xEC,0x5A},
+ {0xC0,0x55}, {0xEC,0x5B}, {0x90,0xF7}, {0x90,0xF6},
+ {0xEC,0x59}, {0xC0,0x58}, {0xC0,0x56}, {0xC0,0x5A},
+ {0xC0,0x57}, {0xEF,0x45}, {0xEF,0x4A}, {0xEF,0x46},
+ {0xEF,0x49}, {0xC1,0xFB}, {0x9B,0x5E}, {0xED,0xD4},
+ {0xEF,0x48}, {0xEF,0x47}, {0x90,0xF8}, {0xC3,0x44},
+ {0xC3,0x42}, {0xC3,0x45}, {0xC3,0x43}, {0xF1,0xA8},
+ {0xF1,0xA9}, {0xF1,0xAA}, {0xC3,0x46}, {0xF3,0xAA},
+ {0xC4,0x40}, {0xF3,0xA8}, {0xC4,0x41}, {0xF3,0xA7},
+ {0xF3,0xA9}, {0xC3,0xFE}, {0xF5,0x51}, {0xF5,0x4E},
+ {0xF5,0x4F}, {0xF5,0x50}, {0xF6,0x72}, {0xC5,0x56},
+ {0x90,0xF9}, {0xC5,0x55}, {0x8C,0xC9}, {0xF7,0x74},
+ {0xF7,0x73}, {0xC5,0xB8}, {0xFA,0x6A}, {0xC5,0xE3},
+ {0xC6,0x49}, {0xC6,0x60}, {0xF9,0x58}, {0xF9,0xAE},
+ {0xF9,0xAF}, {0x8B,0xEF}, {0xAD,0xB7}, {0xDC,0xAD},
+ {0xE0,0xE1}, {0xE4,0xCC}, {0xE4,0xCD}, {0xBB,0xE3},
+ {0xBB,0xE4}, {0xE8,0xBE}, {0xBE,0x68}, {0x9F,0xE0},
+ {0xC1,0xFC}, {0x91,0x42}, {0xF1,0xAB}, {0x9A,0x62},
+ {0xC3,0x47}, {0xF3,0xAD}, {0xC4,0x42}, {0xF3,0xAC},
+ {0xF3,0xAE}, {0xF3,0xAB}, {0xF6,0x75}, {0xF5,0x52},
+ {0xF5,0x53}, {0x95,0x69}, {0xC4,0xC6}, {0xF6,0x74},
+ {0x91,0x44}, {0x91,0x43}, {0xF6,0x73}, {0x91,0x41},
+ {0xF7,0x75}, {0xF9,0xB0}, {0x8B,0xF0}, {0xAD,0xB8},
+ {0x96,0x60}, {0x8B,0xF1}, {0xAD,0xB9}, {0x99,0xF6},
+ {0x91,0x49}, {0xB0,0xA7}, {0xD4,0x48}, {0xD8,0x4F},
+ {0x91,0x4A}, {0xB6,0xB8}, {0xB6,0xBB}, {0xB6,0xB9},
+ {0xDC,0xAE}, {0x91,0x4B}, {0xB6,0xBD}, {0xB6,0xBA},
+ {0x9A,0x64}, {0xB6,0xBC}, {0xB9,0x7E}, {0x8A,0xBF},
+ {0xE0,0xE2}, {0xE0,0xE3}, {0xE8,0xC0}, {0xB9,0x7D},
+ {0xB9,0xA1}, {0xB9,0xA2}, {0xE4,0xCF}, {0xE4,0xCE},
+ {0xBB,0xE5}, {0xBB,0xE6}, {0xE4,0xD0}, {0xE8,0xBF},
+ {0xBB,0xE8}, {0xBE,0x69}, {0xBB,0xE7}, {0x9A,0x66},
+ {0xC0,0x5C}, {0xE8,0xC1}, {0xBE,0x6B}, {0xBE,0x6A},
+ {0xE8,0xC2}, {0xE8,0xC5}, {0xE8,0xC3}, {0xE8,0xC4},
+ {0xBE,0x6C}, {0x9A,0x67}, {0xC0,0x61}, {0xC0,0x5F},
+ {0x9A,0x69}, {0xC0,0x5E}, {0xEC,0x5D}, {0xC0,0x60},
+ {0xEC,0x5C}, {0xEF,0x4B}, {0xEC,0x5E}, {0xC0,0x5D},
+ {0xEC,0x5F}, {0xEF,0x4E}, {0xEF,0x4C}, {0xEF,0x4D},
+ {0xEF,0x52}, {0xC3,0x4B}, {0xEF,0x51}, {0xEF,0x54},
+ {0xEF,0x53}, {0xEF,0x50}, {0xEF,0x4F}, {0xC1,0xFD},
+ {0x9A,0x6A}, {0x96,0x52}, {0x91,0x4D}, {0xF1,0xAE},
+ {0x96,0x66}, {0xF1,0xAD}, {0xC3,0x4A}, {0xC3,0x48},
+ {0xC3,0x49}, {0x9F,0x7B}, {0xF1,0xAC}, {0x9A,0x6B},
+ {0xF3,0xB1}, {0xC4,0x43}, {0xF3,0xB0}, {0xF3,0xAF},
+ {0xC4,0x44}, {0xA0,0x6C}, {0xF5,0x58}, {0xF5,0x57},
+ {0x96,0x67}, {0xF5,0x55}, {0xF5,0x54}, {0xC4,0xC8},
+ {0xC4,0xC7}, {0xF5,0x59}, {0xF7,0x76}, {0xC5,0xB9},
+ {0xF6,0x77}, {0xC5,0x57}, {0xF6,0x76}, {0xF5,0x56},
+ {0xF7,0x77}, {0xC5,0xE4}, {0x9A,0x6C}, {0xC6,0x61},
+ {0xF9,0x59}, {0xF9,0xB1}, {0x9A,0x6D}, {0x8B,0xF2},
+ {0xAD,0xBA}, {0xD8,0x50}, {0xEF,0x55}, {0xAD,0xBB},
+ {0x96,0x6A}, {0xE4,0xD2}, {0xE4,0xD1}, {0xEC,0x60},
+ {0xEF,0x57}, {0xEF,0x56}, {0xFC,0xEA}, {0xC3,0x4C},
+ {0xF3,0xB2}, {0xF3,0xB3}, {0xC4,0xC9}, {0x96,0x6C},
+ {0xF9,0xB2}, {0xB0,0xA8}, {0xB6,0xBF}, {0xB6,0xBE},
+ {0xE0,0xE4}, {0xE0,0xE6}, {0xB9,0xA4}, {0xE0,0xE5},
+ {0xB9,0xA3}, {0xB9,0xA5}, {0xE0,0xE7}, {0x91,0xC4},
+ {0xE4,0xD4}, {0xE4,0xD6}, {0xE4,0xD5}, {0x96,0x77},
+ {0xE4,0xD8}, {0xBB,0xE9}, {0xE4,0xD7}, {0xE4,0xD3},
+ {0x99,0xF4}, {0x9A,0x6F}, {0xE4,0xD9}, {0xE8,0xCC},
+ {0xE8,0xCF}, {0xE8,0xD1}, {0xE8,0xC7}, {0xE8,0xCB},
+ {0xE8,0xC8}, {0xBE,0x6E}, {0xBE,0x71}, {0xBE,0x73},
+ {0xE8,0xC9}, {0xE8,0xCA}, {0xBE,0x72}, {0xE8,0xCD},
+ {0xE8,0xD0}, {0xE8,0xCE}, {0xBE,0x74}, {0x9F,0xAB},
+ {0xBE,0x70}, {0xE8,0xC6}, {0xBE,0x6D}, {0xBE,0x6F},
+ {0x8C,0xBE}, {0x8E,0xC1}, {0xC0,0x63}, {0xEC,0x66},
+ {0xEC,0x64}, {0xEC,0x63}, {0x95,0x55}, {0xEC,0x69},
+ {0xEC,0x68}, {0xEC,0x67}, {0xEC,0x62}, {0xC0,0x62},
+ {0xEC,0x61}, {0xEC,0x65}, {0xC0,0x64}, {0xEF,0x5A},
+ {0x91,0x52}, {0xEF,0x5E}, {0xEF,0x5B}, {0xEF,0x5D},
+ {0xEF,0x5C}, {0xEF,0x59}, {0xEF,0x5F}, {0xEF,0x62},
+ {0xEF,0x60}, {0xEF,0x61}, {0xC2,0x40}, {0xC1,0xFE},
+ {0xEF,0x58}, {0xEF,0x63}, {0xF1,0xB3}, {0xF1,0xB6},
+ {0xF1,0xB8}, {0xF1,0xB7}, {0xF1,0xB1}, {0xF1,0xB5},
+ {0xF1,0xB0}, {0x91,0x53}, {0xF1,0xB2}, {0xC3,0x4D},
+ {0xF1,0xAF}, {0x91,0x55}, {0xF1,0xB4}, {0xF3,0xC0},
+ {0xF3,0xB5}, {0xC4,0x45}, {0xC4,0x46}, {0xF3,0xB4},
+ {0xF3,0xB9}, {0xF3,0xBF}, {0xF3,0xB7}, {0xF3,0xBE},
+ {0x95,0x5D}, {0xF3,0xBB}, {0x96,0x71}, {0xF3,0xBA},
+ {0xF3,0xBD}, {0xF3,0xB8}, {0xF3,0xB6}, {0x9C,0x6D},
+ {0xF3,0xBC}, {0xF5,0x60}, {0xF5,0x5E}, {0xC4,0xCA},
+ {0xF5,0x5D}, {0xF5,0x63}, {0xF5,0x61}, {0x96,0x73},
+ {0xC4,0xCB}, {0xF5,0x5C}, {0xF5,0x5A}, {0xF5,0x5B},
+ {0xC4,0xCD}, {0xF5,0x5F}, {0xC4,0xCC}, {0xF5,0x62},
+ {0xF6,0x78}, {0xF6,0x7E}, {0x91,0x54}, {0x9A,0x71},
+ {0xF6,0x79}, {0xC5,0x5B}, {0xF6,0xA1}, {0xC5,0x5A},
+ {0xF6,0x7D}, {0xF6,0x7C}, {0xC5,0x59}, {0xF6,0x7B},
+ {0xC5,0x58}, {0xF6,0x7A}, {0xF7,0x7D}, {0xF7,0xA1},
+ {0xF7,0x7E}, {0xF7,0x7B}, {0xC5,0xBB}, {0xF7,0x78},
+ {0xF7,0x7C}, {0xF7,0xA3}, {0xF7,0xA2}, {0xF7,0x79},
+ {0xF7,0x7A}, {0xC5,0xBA}, {0xF8,0x52}, {0xC5,0xE7},
+ {0x91,0x56}, {0xF8,0x53}, {0xC5,0xE5}, {0xC5,0xE6},
+ {0x96,0x6D}, {0xF8,0xD3}, {0xC6,0x4A}, {0xF9,0x76},
+ {0xC6,0x6A}, {0x95,0x57}, {0xF9,0xB3}, {0xC6,0x6B},
+ {0xF9,0xB4}, {0xF9,0xB5}, {0xF9,0xC3}, {0xF9,0xC2},
+ {0xC6,0x7A}, {0xF9,0xCD}, {0x89,0xC6}, {0x89,0xC7},
+ {0xB0,0xA9}, {0xE0,0xE9}, {0xE0,0xE8}, {0xBB,0xEA},
+ {0xBB,0xEB}, {0xE4,0xDA}, {0x8A,0x6A}, {0xE8,0xD2},
+ {0xEC,0x6C}, {0x8B,0x57}, {0xBE,0x75}, {0xC0,0x65},
+ {0xEC,0x6A}, {0x9F,0xE1}, {0xEC,0x6D}, {0xC0,0x66},
+ {0x9B,0x5F}, {0xEF,0x64}, {0xEC,0x6B}, {0xF1,0xB9},
+ {0xC3,0x4E}, {0xF3,0xC1}, {0xF5,0x66}, {0xF5,0x64},
+ {0xF5,0x65}, {0xF6,0xA2}, {0xC5,0x5C}, {0xF7,0xA4},
+ {0xC5,0xEA}, {0xC5,0xBC}, {0xC5,0xE8}, {0xC5,0xE9},
+ {0xF8,0xD4}, {0xC6,0x62}, {0xA0,0x5D}, {0xB0,0xAA},
+ {0xF1,0xBA}, {0xD4,0x49}, {0x91,0x5B}, {0xB9,0xA6},
+ {0x91,0x5C}, {0xE4,0xDB}, {0xBB,0xEC}, {0xE4,0xDC},
+ {0xE8,0xD4}, {0xE8,0xD3}, {0xC0,0x68}, {0xBE,0x76},
+ {0xBE,0x77}, {0xE8,0xD7}, {0xE8,0xD6}, {0xE8,0xD5},
+ {0x91,0x5E}, {0xEC,0x6E}, {0xEC,0x71}, {0xEC,0x70},
+ {0xEC,0x6F}, {0xC0,0x67}, {0xEF,0x68}, {0xEF,0x66},
+ {0xEF,0x65}, {0x9F,0x5C}, {0xEF,0x67}, {0x9F,0x57},
+ {0xC3,0x4F}, {0xF1,0xBC}, {0xF1,0xBD}, {0xC3,0x50},
+ {0xF1,0xBB}, {0x9F,0x65}, {0xF3,0xC3}, {0xF3,0xC2},
+ {0xF3,0xC5}, {0xC4,0x47}, {0xF3,0xC4}, {0x9A,0x72},
+ {0xF5,0x67}, {0xF5,0x69}, {0xF5,0x68}, {0x91,0x60},
+ {0xF6,0xA3}, {0xF6,0xA6}, {0xF6,0xA4}, {0xF6,0xA5},
+ {0xF7,0xA5}, {0xC5,0xBD}, {0xF8,0x54}, {0xF8,0x55},
+ {0xF8,0x56}, {0xC6,0x4B}, {0xC6,0x63}, {0xF9,0xB6},
+ {0xB0,0xAB}, {0xBE,0x78}, {0xC0,0x69}, {0xF1,0xBE},
+ {0x9F,0x5E}, {0xF7,0xA6}, {0x91,0x61}, {0xF9,0xC4},
+ {0xD4,0x4A}, {0xC6,0x7B}, {0xB0,0xAC}, {0xEC,0x72},
+ {0x91,0x64}, {0xF1,0xBF}, {0xF3,0xC6}, {0x9F,0x41},
+ {0xF6,0xA7}, {0xF7,0xA7}, {0xB0,0xAD}, {0xE4,0xDD},
+ {0xE4,0xDE}, {0x91,0x69}, {0xBB,0xED}, {0xBB,0xEE},
+ {0xE8,0xD9}, {0xBE,0x7A}, {0xBE,0x79}, {0xE8,0xD8},
+ {0xEF,0x69}, {0xF1,0xC0}, {0xF1,0xC2}, {0xF1,0xC1},
+ {0xC3,0x53}, {0xC3,0x52}, {0xC3,0x51}, {0x91,0x68},
+ {0xC5,0x5E}, {0xF6,0xA8}, {0xC5,0x5D}, {0xF7,0xA9},
+ {0xF7,0xA8}, {0xC6,0x4C}, {0xF8,0xD5}, {0xB3,0xBD},
+ {0xE0,0xEA}, {0xE4,0xE1}, {0xE4,0xDF}, {0xE4,0xE0},
+ {0xE8,0xE2}, {0xE8,0xDD}, {0xE8,0xDA}, {0xE8,0xE1},
+ {0x9A,0x74}, {0xE8,0xE3}, {0xBE,0x7C}, {0xE8,0xE0},
+ {0xE8,0xDC}, {0xE8,0xDB}, {0xE8,0xDF}, {0xE8,0xDE},
+ {0xBE,0x7B}, {0xEC,0x7D}, {0xEC,0x78}, {0xEC,0x76},
+ {0xEC,0xA1}, {0xEC,0x77}, {0x96,0xB2}, {0xEC,0x73},
+ {0x9A,0x75}, {0xEC,0x79}, {0xFD,0xA5}, {0xEC,0x74},
+ {0xEF,0x72}, {0xEC,0x75}, {0xEC,0xA2}, {0x9E,0xE9},
+ {0x8B,0xBA}, {0x91,0x6D}, {0xA0,0x60}, {0xEC,0x7C},
+ {0xC0,0x6A}, {0xEC,0x7B}, {0xEC,0x7A}, {0xEC,0x7E},
+ {0x9F,0xDE}, {0xEF,0x6A}, {0xEF,0x6D}, {0x9F,0xC3},
+ {0xEF,0x6C}, {0x96,0xB5}, {0xEF,0x74}, {0xEF,0x6F},
+ {0xEF,0x73}, {0xEF,0x71}, {0xEF,0x70}, {0xEF,0x6E},
+ {0xEF,0x6B}, {0xC2,0x43}, {0xC2,0x42}, {0xC2,0x44},
+ {0xC2,0x41}, {0xEF,0x75}, {0xA0,0x67}, {0xF1,0xC8},
+ {0xF1,0xCB}, {0xF1,0xC9}, {0xF1,0xCD}, {0xF1,0xCE},
+ {0xF1,0xC6}, {0xC3,0x58}, {0xF1,0xC7}, {0xF1,0xC5},
+ {0xF1,0xCC}, {0xF1,0xC4}, {0xF1,0xC3}, {0xC3,0x57},
+ {0xC3,0x55}, {0xC3,0x54}, {0x96,0xB3}, {0xF1,0xCA},
+ {0xF3,0xCF}, {0xF3,0xD5}, {0xC4,0x4A}, {0xF3,0xD0},
+ {0xF3,0xD3}, {0xF3,0xD7}, {0xC4,0x4B}, {0xF3,0xD2},
+ {0x9A,0x76}, {0xF3,0xCA}, {0xF3,0xC9}, {0xF3,0xD6},
+ {0xF3,0xCD}, {0xF3,0xCB}, {0xF3,0xD4}, {0xF3,0xCC},
+ {0xC4,0x49}, {0xC4,0x48}, {0x95,0xD5}, {0xF3,0xC7},
+ {0xF3,0xC8}, {0xF3,0xD1}, {0x9E,0xCA}, {0xF3,0xCE},
+ {0x9A,0x77}, {0x9A,0x78}, {0xF5,0x6C}, {0xF5,0x6F},
+ {0xC3,0x56}, {0x91,0x70}, {0x91,0x6F}, {0xF5,0x6D},
+ {0xF5,0x73}, {0xF5,0x71}, {0xF5,0x6B}, {0xF5,0x76},
+ {0x9F,0xA3}, {0xF5,0x6A}, {0x91,0x71}, {0xC4,0xCF},
+ {0xF5,0x72}, {0x96,0xB1}, {0xF5,0x6E}, {0xC4,0xCE},
+ {0xF5,0x75}, {0x9F,0x63}, {0xF5,0x74}, {0x9F,0x67},
+ {0xF6,0xAB}, {0xF6,0xAA}, {0x8B,0xB9}, {0x9A,0x7A},
+ {0xF6,0xB1}, {0xF6,0xAD}, {0xF6,0xB0}, {0xC5,0x60},
+ {0x8B,0x56}, {0xF6,0xAE}, {0xF6,0xAF}, {0xF6,0xA9},
+ {0xF6,0xAC}, {0xC5,0x5F}, {0x9A,0xDA}, {0xC5,0xBF},
+ {0xF7,0xB4}, {0xF7,0xAF}, {0xF7,0xB3}, {0x96,0xB0},
+ {0xF7,0xB6}, {0xF7,0xB2}, {0xF7,0xAE}, {0x9A,0x7E},
+ {0xC5,0xC1}, {0xF7,0xB1}, {0xF7,0xB5}, {0xC5,0xC0},
+ {0xF7,0xAC}, {0xF5,0x70}, {0xF7,0xB0}, {0xF7,0xAD},
+ {0x9D,0xDE}, {0xF7,0xAA}, {0xF7,0xAB}, {0xC5,0xBE},
+ {0xF8,0x5A}, {0xF8,0x5C}, {0xF8,0x5F}, {0xF8,0x5B},
+ {0xF8,0x60}, {0x96,0xAD}, {0xF8,0x59}, {0xF8,0x57},
+ {0x96,0xAE}, {0xC5,0xEB}, {0xF8,0x5D}, {0xC5,0xED},
+ {0xC5,0xEC}, {0xF8,0x58}, {0xF8,0x5E}, {0x9E,0xA1},
+ {0xF8,0xDA}, {0xC6,0x4D}, {0xF8,0xDB}, {0xF8,0xD9},
+ {0xF8,0xD6}, {0xF8,0xD8}, {0xF8,0xD7}, {0xF9,0x5A},
+ {0xF9,0x5C}, {0xF9,0x5B}, {0xF9,0x79}, {0x9E,0x50},
+ {0xF9,0x78}, {0xF9,0x77}, {0xF9,0x7A}, {0xC6,0x73},
+ {0xC6,0x74}, {0xF9,0xCA}, {0xF9,0xCE}, {0x96,0xAF},
+ {0x8B,0xF4}, {0xB3,0xBE}, {0xDC,0xAF}, {0xE0,0xED},
+ {0xB9,0xA7}, {0xE0,0xEB}, {0xE0,0xEC}, {0xE4,0xE2},
+ {0xE4,0xE3}, {0xBB,0xF1}, {0xBB,0xEF}, {0xE4,0xE4},
+ {0xBB,0xF0}, {0xE8,0xE8}, {0xE8,0xEB}, {0xE8,0xE5},
+ {0xE8,0xEC}, {0xE8,0xE4}, {0xE8,0xE6}, {0xE8,0xE7},
+ {0xE8,0xEA}, {0x9F,0xA4}, {0xBE,0xA1}, {0xE8,0xEF},
+ {0xE8,0xEE}, {0xBE,0x7D}, {0xE8,0xE9}, {0xE8,0xED},
+ {0xBE,0x7E}, {0x96,0xBD}, {0xEC,0xAC}, {0xC0,0x6F},
+ {0xEC,0xA7}, {0xC0,0x6B}, {0x96,0xF4}, {0xEC,0xA4},
+ {0xEC,0xAA}, {0xEC,0xAD}, {0xC0,0x70}, {0xEC,0xA9},
+ {0xEC,0xA6}, {0xEC,0xAE}, {0xEC,0xA5}, {0x96,0xB8},
+ {0xEC,0xAB}, {0xC0,0x6C}, {0xEC,0xA3}, {0xC0,0x6D},
+ {0xC0,0x6E}, {0xEC,0xA8}, {0xEF,0xA9}, {0xEF,0x7A},
+ {0xEF,0x7B}, {0xEF,0x7E}, {0xEF,0x7C}, {0xEF,0x76},
+ {0xFA,0xA1}, {0xEF,0x79}, {0xEF,0xA5}, {0xEF,0x7D},
+ {0x91,0xA7}, {0xC2,0x45}, {0xEF,0xA7}, {0xEF,0xA4},
+ {0xC2,0x46}, {0xEF,0xA6}, {0xEF,0x77}, {0xEF,0xA2},
+ {0xEF,0xA3}, {0xA0,0x5E}, {0xEF,0xA1}, {0x9A,0x7D},
+ {0xF1,0xD2}, {0xF1,0xD4}, {0xF1,0xD7}, {0x89,0x48},
+ {0xF1,0xD1}, {0x9E,0xB1}, {0xC3,0x59}, {0xF1,0xD9},
+ {0xF1,0xD0}, {0xF1,0xDA}, {0xF1,0xD6}, {0xF1,0xD8},
+ {0xF1,0xDC}, {0xF1,0xD5}, {0xF1,0xDD}, {0xF1,0xD3},
+ {0xF1,0xCF}, {0xC3,0x5A}, {0x9D,0xDB}, {0xF1,0xDB},
+ {0xC3,0x5B}, {0xC4,0x4D}, {0xEF,0x78}, {0xF3,0xF1},
+ {0xF3,0xE8}, {0xC4,0x4F}, {0xF3,0xE4}, {0xC4,0x50},
+ {0x95,0xBF}, {0x8A,0x73}, {0xF3,0xED}, {0xF3,0xE7},
+ {0xF3,0xDD}, {0xC4,0x4E}, {0xF3,0xEA}, {0xF3,0xE5},
+ {0xF3,0xE6}, {0xF3,0xD8}, {0xF3,0xDF}, {0xF3,0xEE},
+ {0xF3,0xEB}, {0x9E,0xFE}, {0xF3,0xE3}, {0x91,0x7A},
+ {0xF3,0xEF}, {0xF3,0xDE}, {0xF3,0xD9}, {0xF3,0xEC},
+ {0x91,0x7B}, {0xF3,0xDB}, {0xF3,0xE9}, {0xF3,0xE0},
+ {0xF3,0xF0}, {0xF3,0xDC}, {0xC4,0x4C}, {0xF3,0xDA},
+ {0xF3,0xE1}, {0xF3,0xE2}, {0xF5,0x7D}, {0xF5,0x7B},
+ {0x9A,0xA3}, {0xF5,0xA2}, {0xF5,0xAE}, {0xF5,0xA5},
+ {0xF5,0x7C}, {0xF5,0x78}, {0xF5,0xA7}, {0xF5,0x7E},
+ {0xF5,0xA3}, {0xF5,0x7A}, {0xF5,0xAA}, {0xF5,0x77},
+ {0xF5,0xA1}, {0xF5,0xA6}, {0xF5,0xA8}, {0xF5,0xAB},
+ {0xF5,0x79}, {0x96,0xC2}, {0xF5,0xAF}, {0xF5,0xB0},
+ {0xF5,0xA9}, {0xF5,0xAD}, {0xF5,0xA4}, {0x9F,0x77},
+ {0xF6,0xC1}, {0xF6,0xC4}, {0xC5,0x61}, {0xF6,0xC3},
+ {0xF6,0xC8}, {0xF6,0xC6}, {0xC5,0x62}, {0xF6,0xBD},
+ {0xF6,0xB3}, {0xF6,0xB2}, {0xC5,0x64}, {0xF6,0xBF},
+ {0xF6,0xC0}, {0xF6,0xBC}, {0xF6,0xB4}, {0x9A,0xA4},
+ {0xF6,0xB9}, {0xF5,0xAC}, {0x9A,0xA5}, {0xF6,0xB5},
+ {0xC5,0x63}, {0xF6,0xBB}, {0x91,0xA1}, {0xF6,0xBA},
+ {0xF6,0xB6}, {0xF6,0xC2}, {0x89,0xB8}, {0xF6,0xB7},
+ {0xF7,0xBB}, {0xF6,0xC5}, {0xF6,0xC7}, {0xF6,0xBE},
+ {0xF6,0xB8}, {0xF7,0xBC}, {0xF7,0xBE}, {0xF7,0xB8},
+ {0xC5,0xC2}, {0x91,0x73}, {0xF7,0xC5}, {0xF7,0xC3},
+ {0xC5,0xC3}, {0xF7,0xC2}, {0xF7,0xC1}, {0xF7,0xBA},
+ {0xF7,0xB7}, {0xF7,0xBD}, {0xF7,0xC6}, {0xF7,0xB9},
+ {0xF7,0xBF}, {0xF8,0x69}, {0xF8,0x6E}, {0xF8,0x64},
+ {0xF8,0x67}, {0xC5,0xEE}, {0xF8,0x6B}, {0xF8,0x72},
+ {0xF7,0xC0}, {0xF8,0x65}, {0xF8,0x6F}, {0xF8,0x73},
+ {0xF8,0x6A}, {0xF8,0x63}, {0xF8,0x6D}, {0xF8,0x6C},
+ {0xF8,0x71}, {0xF8,0x70}, {0xF7,0xC4}, {0xF8,0x68},
+ {0xF8,0x62}, {0xF8,0x66}, {0xC6,0x4E}, {0xC6,0x4F},
+ {0xF8,0x61}, {0x9A,0xA6}, {0xF8,0xE6}, {0xF8,0xDD},
+ {0xF8,0xE5}, {0xF8,0xE2}, {0xF8,0xE3}, {0xF8,0xDC},
+ {0xF8,0xDF}, {0xF8,0xE7}, {0xF8,0xE1}, {0xF8,0xE0},
+ {0xF8,0xDE}, {0xF8,0xE4}, {0x89,0xBD}, {0xF9,0x5D},
+ {0x89,0xB9}, {0xF9,0x5E}, {0x91,0x7D}, {0xF9,0x60},
+ {0xF9,0x5F}, {0xF9,0x62}, {0xF9,0x61}, {0xF9,0x7C},
+ {0xF9,0x7B}, {0xF9,0xB7}, {0xF9,0xB8}, {0x96,0xBB},
+ {0xF9,0xC5}, {0xC6,0x78}, {0xC6,0x7C}, {0x9F,0xF2},
+ {0xF9,0xCF}, {0xC6,0x7D}, {0x8B,0xF5}, {0xB3,0xBF},
+ {0xC4,0xD0}, {0xF6,0xC9}, {0x9A,0xA9}, {0xC6,0x50},
+ {0xC6,0x51}, {0xB3,0xC0}, {0xE0,0xEE}, {0x9F,0x54},
+ {0xB9,0xA8}, {0xE8,0xF0}, {0x9F,0xE3}, {0x9E,0xED},
+ {0xEC,0xB0}, {0xEC,0xB1}, {0xEC,0xAF}, {0xEF,0xAB},
+ {0xEF,0xAA}, {0xC2,0x47}, {0xF1,0xDF}, {0xEF,0xAC},
+ {0xF1,0xDE}, {0x91,0xAA}, {0xF3,0xF3}, {0xC4,0x51},
+ {0xC4,0x53}, {0xF3,0xF2}, {0x91,0xAB}, {0xA0,0x70},
+ {0xC4,0x52}, {0x9F,0x6D}, {0xF5,0xB1}, {0xF5,0xB3},
+ {0xF5,0xB2}, {0xF6,0xCA}, {0xC5,0x65}, {0x91,0xAC},
+ {0xC5,0xEF}, {0xF8,0xE8}, {0xF9,0x63}, {0x91,0xAD},
+ {0xF9,0xD2}, {0xB3,0xC1}, {0xA0,0xFD}, {0xE4,0xE5},
+ {0x9F,0xE2}, {0xBE,0xA2}, {0x91,0xAF}, {0x9E,0x41},
+ {0x9A,0xAA}, {0xEC,0xB3}, {0xEC,0xB2}, {0x91,0xB0},
+ {0xEF,0xAD}, {0x9A,0xAB}, {0xC4,0x54}, {0xC4,0xD1},
+ {0xF7,0xC7}, {0xF9,0xCB}, {0xB3,0xC2}, {0xBB,0xF2},
+ {0x9A,0xAC}, {0xBE,0xA3}, {0x9A,0x4A}, {0xF3,0xF4},
+ {0x91,0xB2}, {0xF8,0x74}, {0xB6,0xC0}, {0x8B,0xF6},
+ {0x9A,0xAD}, {0x89,0xB6}, {0xEF,0xAE}, {0xC6,0x64},
+ {0xB6,0xC1}, {0xBE,0xA4}, {0xC2,0x48}, {0xF8,0x75},
+ {0xB6,0xC2}, {0xE8,0xF1}, {0xC0,0x72}, {0xEC,0xB4},
+ {0xEC,0xB5}, {0xC0,0x71}, {0xEF,0xAF}, {0xC2,0x4C},
+ {0xC2,0x4A}, {0xC2,0x4B}, {0xC2,0x49}, {0xF1,0xE0},
+ {0xC3,0x5C}, {0x9A,0xAF}, {0xF5,0xB5}, {0xF5,0xB4},
+ {0xF5,0xB7}, {0xF5,0xB6}, {0xC4,0xD2}, {0xF6,0xCB},
+ {0xF6,0xCD}, {0xF6,0xCC}, {0xC5,0x66}, {0xF7,0xC8},
+ {0x9A,0xB0}, {0xF8,0x76}, {0xF8,0x77}, {0xC5,0xF0},
+ {0xF9,0x64}, {0xF9,0x7D}, {0xC6,0x75}, {0x9A,0xB1},
+ {0xDC,0xB0}, {0xEC,0xB6}, {0xEF,0xB0}, {0xF3,0xF5},
+ {0xE0,0xEF}, {0x9A,0xA1}, {0xEF,0xB1}, {0xF1,0xE2},
+ {0xF1,0xE1}, {0x91,0xB9}, {0xF8,0x78}, {0xC6,0x52},
+ {0x91,0xBA}, {0xF9,0x65}, {0xF9,0x7E}, {0xB9,0xA9},
+ {0xE8,0xF2}, {0xE8,0xF3}, {0xEC,0xB7}, {0xB9,0xAA},
+ {0xC3,0x5D}, {0xF1,0xE3}, {0x91,0xBE}, {0xF6,0xCF},
+ {0xC5,0x67}, {0xF6,0xD0}, {0xF6,0xCE}, {0xF8,0x79},
+ {0xF8,0xE9}, {0xB9,0xAB}, {0xEF,0xB4}, {0xEF,0xB3},
+ {0xEF,0xB2}, {0xF1,0xE4}, {0xA0,0x41}, {0x8B,0xB7},
+ {0xF1,0xE8}, {0xF1,0xE7}, {0xF1,0xE6}, {0xF1,0xE5},
+ {0xC3,0x5E}, {0xF3,0xF6}, {0xF5,0xB9}, {0xC4,0xD3},
+ {0xF5,0xB8}, {0xF6,0xD1}, {0xF7,0xCB}, {0xF7,0xCA},
+ {0xC5,0xC4}, {0xF7,0xC9}, {0xF8,0x7C}, {0xF8,0x7B},
+ {0xF8,0x7A}, {0x91,0xC0}, {0xBB,0xF3}, {0xEC,0xB8},
+ {0xC2,0x4D}, {0xF3,0xF7}, {0xF3,0xF8}, {0xF7,0xCC},
+ {0xF8,0x7D}, {0x9A,0xB3}, {0x91,0xC3}, {0xF8,0xEA},
+ {0xF9,0x66}, {0xF9,0xB9}, {0xF9,0xD4}, {0xBB,0xF4},
+ {0xC2,0x4E}, {0xF1,0xE9}, {0xF3,0xF9}, {0xF6,0xD2},
+ {0xF8,0x7E}, {0xA0,0xFC}, {0xBE,0xA6}, {0x9F,0xEE},
+ {0xEF,0xB5}, {0xF1,0xEA}, {0xF3,0xFA}, {0xF3,0xFB},
+ {0xF3,0xFC}, {0xF5,0xBE}, {0x9F,0x69}, {0xF5,0xBA},
+ {0xC5,0x68}, {0xF5,0xBD}, {0xF5,0xBC}, {0xC4,0xD4},
+ {0xF5,0xBB}, {0xC4,0xD6}, {0x91,0xC8}, {0xC4,0xD5},
+ {0xF6,0xD4}, {0xF6,0xD3}, {0xC5,0x69}, {0xC5,0x6A},
+ {0x91,0xC9}, {0xC5,0xC6}, {0xF7,0xCD}, {0xC5,0xC5},
+ {0xF8,0xA3}, {0xF8,0xA4}, {0xF8,0xA2}, {0xF8,0xA1},
+ {0xC6,0x54}, {0xF8,0xEB}, {0xF8,0xEC}, {0xF8,0xED},
+ {0xC6,0x53}, {0xF9,0x67}, {0xF9,0x6A}, {0xF9,0x69},
+ {0xF9,0x68}, {0xF9,0xD3}, {0x8D,0xE6}, {0xC0,0x73},
+ {0x91,0xCB}, {0xC3,0x65}, {0xF5,0xBF}, {0xF6,0xD5},
+ {0xC5,0xC7}, {0xF7,0xCE}, {0xF9,0xD5}, {0x89,0xC8},
+ {0xC0,0x74}, {0x8D,0xAA}, {0xEF,0xB6}, {0xF7,0xCF},
+ {0xF9,0xA1}, {0x9F,0xDD}, {0xFA,0x40}, {0xFA,0x41},
+ {0xFA,0x42}, {0xFA,0x43}, {0xFA,0x44}, {0xFA,0x45},
+ {0xFA,0x46}, {0xFA,0x47}, {0xFA,0x48}, {0xFA,0x49},
+ {0xFA,0x4A}, {0xFA,0x4B}, {0xFA,0x4C}, {0xFA,0x4D},
+ {0xFA,0x4E}, {0xFA,0x4F}, {0xFA,0x50}, {0xFA,0x51},
+ {0xFA,0x52}, {0xFA,0x53}, {0xFA,0x54}, {0xFA,0x55},
+ {0xFA,0x56}, {0xFA,0x57}, {0xFA,0x58}, {0xFA,0x59},
+ {0xFA,0x5A}, {0xFA,0x5B}, {0xFA,0x5C}, {0xFA,0x5D},
+ {0xFA,0x5E}, {0xAD,0xC5}, {0xFA,0x60}, {0xFA,0x61},
+ {0xFA,0x62}, {0xFA,0x63}, {0xFA,0x64}, {0xFA,0x65},
+ {0xB0,0xB0}, {0xFA,0x67}, {0xFA,0x68}, {0xFA,0x69},
+ {0xFA,0x6A}, {0xFA,0x6B}, {0xFA,0x6C}, {0xFA,0x6D},
+ {0xFA,0x6E}, {0xFA,0x6F}, {0xFA,0x70}, {0xFA,0x71},
+ {0xFA,0x72}, {0xFA,0x73}, {0xFA,0x74}, {0xFA,0x75},
+ {0xFA,0x76}, {0xFA,0x77}, {0xFA,0x78}, {0xFA,0x79},
+ {0xFA,0x7A}, {0xFA,0x7B}, {0xFA,0x7C}, {0xFA,0x7D},
+ {0xFA,0x7E}, {0xFA,0xA1}, {0xFA,0xA2}, {0xFA,0xA3},
+ {0xFA,0xA4}, {0xFA,0xA5}, {0xFA,0xA6}, {0xFA,0xA7},
+ {0xFA,0xA8}, {0xFA,0xA9}, {0xFA,0xAA}, {0xFA,0xAB},
+ {0xFA,0xAC}, {0xFA,0xAD}, {0xFA,0xAE}, {0xFA,0xAF},
+ {0xFA,0xB0}, {0xFA,0xB1}, {0xFA,0xB2}, {0xFA,0xB3},
+ {0xFA,0xB4}, {0xFA,0xB5}, {0xFA,0xB6}, {0xFA,0xB7},
+ {0xFA,0xB8}, {0xFA,0xB9}, {0xFA,0xBA}, {0xFA,0xBB},
+ {0xFA,0xBC}, {0xA5,0x5D}, {0xFA,0xBE}, {0xFA,0xBF},
+ {0xFA,0xC0}, {0xFA,0xC1}, {0xFA,0xC2}, {0xFA,0xC3},
+ {0xFA,0xC4}, {0xA2,0xCD}, {0xFA,0xC6}, {0xFA,0xC7},
+ {0xFA,0xC8}, {0xFA,0xC9}, {0xFA,0xCA}, {0xFA,0xCB},
+ {0xFA,0xCC}, {0xFA,0xCD}, {0xFA,0xCE}, {0xFA,0xCF},
+ {0xFA,0xD0}, {0xFA,0xD1}, {0xFA,0xD2}, {0xFA,0xD3},
+ {0xFA,0xD4}, {0xAD,0xEB}, {0xFA,0xD6}, {0xFA,0xD7},
+ {0xFA,0xD8}, {0xFA,0xD9}, {0xFA,0xDA}, {0xFA,0xDB},
+ {0xFA,0xDC}, {0xFA,0xDD}, {0xFA,0xDE}, {0xFA,0xDF},
+ {0xFA,0xE0}, {0xFA,0xE1}, {0xFA,0xE2}, {0xFA,0xE3},
+ {0xFA,0xE4}, {0xFA,0xE5}, {0xFA,0xE6}, {0xFA,0xE7},
+ {0xFA,0xE8}, {0xFA,0xE9}, {0xFA,0xEA}, {0xFA,0xEB},
+ {0xFA,0xEC}, {0xFA,0xED}, {0xFA,0xEE}, {0xFA,0xEF},
+ {0xFA,0xF0}, {0xFA,0xF1}, {0xFA,0xF2}, {0xFA,0xF3},
+ {0xFA,0xF4}, {0xFA,0xF5}, {0xFA,0xF6}, {0xFA,0xF7},
+ {0xFA,0xF8}, {0xFA,0xF9}, {0xFA,0xFA}, {0xFA,0xFB},
+ {0xFA,0xFC}, {0xFA,0xFD}, {0xFA,0xFE}, {0xFB,0x40},
+ {0xFB,0x41}, {0xFB,0x42}, {0xFB,0x43}, {0xFB,0x44},
+ {0xFB,0x45}, {0xFB,0x46}, {0xFB,0x47}, {0x9D,0xEF},
+ {0xFB,0x49}, {0xFB,0x4A}, {0xFB,0x4B}, {0xFB,0x4C},
+ {0xFB,0x4D}, {0xFB,0x4E}, {0xFB,0x4F}, {0xFB,0x50},
+ {0xFB,0x51}, {0xFB,0x52}, {0xFB,0x53}, {0xFB,0x54},
+ {0xFB,0x55}, {0xFB,0x56}, {0xFB,0x57}, {0xFB,0x58},
+ {0xFB,0x59}, {0xFB,0x5A}, {0xFB,0x5B}, {0xFB,0x5C},
+ {0xFB,0x5D}, {0xFB,0x5E}, {0xFB,0x5F}, {0xFB,0x60},
+ {0xFB,0x61}, {0xFB,0x62}, {0xFB,0x63}, {0xFB,0x64},
+ {0xFB,0x65}, {0xFB,0x66}, {0xFB,0x67}, {0xFB,0x68},
+ {0xFB,0x69}, {0xFB,0x6A}, {0xFB,0x6B}, {0xFB,0x6C},
+ {0xFB,0x6D}, {0xFB,0x6E}, {0xFB,0x6F}, {0xFB,0x70},
+ {0xFB,0x71}, {0xFB,0x72}, {0xFB,0x73}, {0xFB,0x74},
+ {0xFB,0x75}, {0xFB,0x76}, {0xFB,0x77}, {0xFB,0x78},
+ {0xFB,0x79}, {0xFB,0x7A}, {0xFB,0x7B}, {0xFB,0x7C},
+ {0xFB,0x7D}, {0xFB,0x7E}, {0xFB,0xA1}, {0xFB,0xA2},
+ {0xFB,0xA3}, {0xFB,0xA4}, {0xFB,0xA5}, {0xFB,0xA6},
+ {0xFB,0xA7}, {0xFB,0xA8}, {0xFB,0xA9}, {0xFB,0xAA},
+ {0xFB,0xAB}, {0xFB,0xAC}, {0xFB,0xAD}, {0xFB,0xAE},
+ {0xFB,0xAF}, {0xFB,0xB0}, {0xFB,0xB1}, {0xFB,0xB2},
+ {0xFB,0xB3}, {0xFB,0xB4}, {0xFB,0xB5}, {0xFB,0xB6},
+ {0xFB,0xB7}, {0xB4,0x40}, {0xFB,0xB9}, {0xFB,0xBA},
+ {0xFB,0xBB}, {0xFB,0xBC}, {0xFB,0xBD}, {0xFB,0xBE},
+ {0xFB,0xBF}, {0xFB,0xC0}, {0xFB,0xC1}, {0xFB,0xC2},
+ {0xFB,0xC3}, {0xFB,0xC4}, {0xFB,0xC5}, {0xFB,0xC6},
+ {0xFB,0xC7}, {0xFB,0xC8}, {0xFB,0xC9}, {0xFB,0xCA},
+ {0xFB,0xCB}, {0xFB,0xCC}, {0xFB,0xCD}, {0xFB,0xCE},
+ {0xFB,0xCF}, {0xFB,0xD0}, {0xFB,0xD1}, {0xFB,0xD2},
+ {0xFB,0xD3}, {0xFB,0xD4}, {0xFB,0xD5}, {0xFB,0xD6},
+ {0xFB,0xD7}, {0xFB,0xD8}, {0xFB,0xD9}, {0xFB,0xDA},
+ {0xFB,0xDB}, {0xFB,0xDC}, {0xFB,0xDD}, {0xFB,0xDE},
+ {0xFB,0xDF}, {0xFB,0xE0}, {0xFB,0xE1}, {0xFB,0xE2},
+ {0xFB,0xE3}, {0xFB,0xE4}, {0xFB,0xE5}, {0xFB,0xE6},
+ {0xFB,0xE7}, {0xFB,0xE8}, {0xFB,0xE9}, {0xFB,0xEA},
+ {0xFB,0xEB}, {0xFB,0xEC}, {0xFB,0xED}, {0xFB,0xEE},
+ {0xFB,0xEF}, {0xFB,0xF0}, {0xFB,0xF1}, {0xFB,0xF2},
+ {0xC9,0xDB}, {0xFB,0xF4}, {0xFB,0xF5}, {0xFB,0xF6},
+ {0xFB,0xF7}, {0xFB,0xF8}, {0x9D,0xFB}, {0xFB,0xFA},
+ {0xFB,0xFB}, {0xFB,0xFC}, {0xFB,0xFD}, {0xFB,0xFE},
+ {0xFC,0x40}, {0xFC,0x41}, {0xFC,0x42}, {0xFC,0x43},
+ {0xFC,0x44}, {0xFC,0x45}, {0xFC,0x46}, {0xFC,0x47},
+ {0xFC,0x48}, {0xFC,0x49}, {0xFC,0x4A}, {0xFC,0x4B},
+ {0xFC,0x4C}, {0xFC,0x4D}, {0xFC,0x4E}, {0xD8,0xF4},
+ {0xFC,0x50}, {0xFC,0x51}, {0xFC,0x52}, {0xFC,0x53},
+ {0xFC,0x54}, {0xFC,0x55}, {0xFC,0x56}, {0xFC,0x57},
+ {0xFC,0x58}, {0xFC,0x59}, {0xFC,0x5A}, {0xFC,0x5B},
+ {0xFC,0x5C}, {0xFC,0x5D}, {0xFC,0x5E}, {0xFC,0x5F},
+ {0xFC,0x60}, {0xFC,0x61}, {0xFC,0x62}, {0xFC,0x63},
+ {0xFC,0x64}, {0xFC,0x65}, {0xFC,0x66}, {0xFC,0x67},
+ {0xFC,0x68}, {0xFC,0x69}, {0xFC,0x6A}, {0xFC,0x6B},
+ {0xA0,0xDC}, {0xFC,0x6D}, {0xFC,0x6E}, {0xFC,0x6F},
+ {0xFC,0x70}, {0xFC,0x71}, {0xFC,0x72}, {0xFC,0x73},
+ {0xFC,0x74}, {0xFC,0x75}, {0xFC,0x76}, {0xFC,0x77},
+ {0xFC,0x78}, {0xFC,0x79}, {0xFC,0x7A}, {0xFC,0x7B},
+ {0xFC,0x7C}, {0xFC,0x7D}, {0xFC,0x7E}, {0xFC,0xA1},
+ {0xFC,0xA2}, {0xFC,0xA3}, {0xFC,0xA4}, {0xFC,0xA5},
+ {0xFC,0xA6}, {0xFC,0xA7}, {0xFC,0xA8}, {0xFC,0xA9},
+ {0xFC,0xAA}, {0xFC,0xAB}, {0xFC,0xAC}, {0xFC,0xAD},
+ {0xFC,0xAE}, {0xFC,0xAF}, {0xFC,0xB0}, {0xFC,0xB1},
+ {0xFC,0xB2}, {0xFC,0xB3}, {0xFC,0xB4}, {0xFC,0xB5},
+ {0xFC,0xB6}, {0xFC,0xB7}, {0xFC,0xB8}, {0xBC,0xB5},
+ {0xFC,0xBA}, {0xFC,0xBB}, {0xFC,0xBC}, {0xFC,0xBD},
+ {0xFC,0xBE}, {0xFC,0xBF}, {0xFC,0xC0}, {0xFC,0xC1},
+ {0xFC,0xC2}, {0xFC,0xC3}, {0xFC,0xC4}, {0xFC,0xC5},
+ {0xFC,0xC6}, {0xFC,0xC7}, {0xFC,0xC8}, {0xFC,0xC9},
+ {0xFC,0xCA}, {0xFC,0xCB}, {0xFC,0xCC}, {0xFC,0xCD},
+ {0xFC,0xCE}, {0xFC,0xCF}, {0xFC,0xD0}, {0xFC,0xD1},
+ {0xFC,0xD2}, {0xFC,0xD3}, {0xFC,0xD4}, {0xFC,0xD5},
+ {0xFC,0xD6}, {0xFC,0xD7}, {0xFC,0xD8}, {0xFC,0xD9},
+ {0xFC,0xDA}, {0xFC,0xDB}, {0xFC,0xDC}, {0xFC,0xDD},
+ {0xFC,0xDE}, {0xFC,0xDF}, {0xFC,0xE0}, {0xFC,0xE1},
+ {0xB4,0xB8}, {0xFC,0xE3}, {0xFC,0xE4}, {0xFC,0xE5},
+ {0xFC,0xE6}, {0xFC,0xE7}, {0xFC,0xE8}, {0xFC,0xE9},
+ {0xFC,0xEA}, {0xFC,0xEB}, {0xFC,0xEC}, {0xFC,0xED},
+ {0xFC,0xEE}, {0xFC,0xEF}, {0xFC,0xF0}, {0xA7,0xFB},
+ {0xFC,0xF2}, {0xFC,0xF3}, {0xFC,0xF4}, {0xFC,0xF5},
+ {0xFC,0xF6}, {0xFC,0xF7}, {0xFC,0xF8}, {0xFC,0xF9},
+ {0xFC,0xFA}, {0xFC,0xFB}, {0xFC,0xFC}, {0xFC,0xFD},
+ {0xFC,0xFE}, {0xFD,0x40}, {0xFD,0x41}, {0xFD,0x42},
+ {0xFD,0x43}, {0xFD,0x44}, {0xFD,0x45}, {0xFD,0x46},
+ {0xFD,0x47}, {0xFD,0x48}, {0xFD,0x49}, {0xFD,0x4A},
+ {0xFD,0x4B}, {0xFD,0x4C}, {0xFD,0x4D}, {0xFD,0x4E},
+ {0xFD,0x4F}, {0xFD,0x50}, {0xFD,0x51}, {0xFD,0x52},
+ {0xFD,0x53}, {0xFD,0x54}, {0xFD,0x55}, {0xFD,0x56},
+ {0xFD,0x57}, {0xFD,0x58}, {0xFD,0x59}, {0xFD,0x5A},
+ {0xFD,0x5B}, {0xFD,0x5C}, {0xFD,0x5D}, {0xFD,0x5E},
+ {0xFD,0x5F}, {0xFD,0x60}, {0xFD,0x61}, {0xFD,0x62},
+ {0xFD,0x63}, {0xFD,0x64}, {0xFD,0x65}, {0xFD,0x66},
+ {0xFD,0x67}, {0xFD,0x68}, {0xFD,0x69}, {0xFD,0x6A},
+ {0xFD,0x6B}, {0xFD,0x6C}, {0xFD,0x6D}, {0xFD,0x6E},
+ {0xFD,0x6F}, {0xFD,0x70}, {0xFD,0x71}, {0xFD,0x72},
+ {0xFD,0x73}, {0xFD,0x74}, {0xFD,0x75}, {0xFD,0x76},
+ {0xFD,0x77}, {0xFD,0x78}, {0xFD,0x79}, {0xFD,0x7A},
+ {0xFD,0x7B}, {0xFD,0x7C}, {0xFD,0x7D}, {0xFD,0x7E},
+ {0xFD,0xA1}, {0xFD,0xA2}, {0xFD,0xA3}, {0xFD,0xA4},
+ {0xFD,0xA5}, {0xFD,0xA6}, {0xFD,0xA7}, {0xFD,0xA8},
+ {0xFD,0xA9}, {0xFD,0xAA}, {0xFD,0xAB}, {0xFD,0xAC},
+ {0xFD,0xAD}, {0xFD,0xAE}, {0xFD,0xAF}, {0xFD,0xB0},
+ {0xFD,0xB1}, {0xFD,0xB2}, {0xFD,0xB3}, {0xFD,0xB4},
+ {0xFD,0xB5}, {0xFD,0xB6}, {0xCB,0x58}, {0xB4,0xFC},
+ {0xFD,0xB9}, {0xFD,0xBA}, {0xB4,0xE4}, {0xFD,0xBC},
+ {0xFD,0xBD}, {0xFD,0xBE}, {0xFD,0xBF}, {0xFD,0xC0},
+ {0xFD,0xC1}, {0xFD,0xC2}, {0xFD,0xC3}, {0xFD,0xC4},
+ {0xFD,0xC5}, {0xFD,0xC6}, {0xFD,0xC7}, {0xFD,0xC8},
+ {0xFD,0xC9}, {0xFD,0xCA}, {0xFD,0xCB}, {0xFD,0xCC},
+ {0xFD,0xCD}, {0xFD,0xCE}, {0xFD,0xCF}, {0xFD,0xD0},
+ {0xFD,0xD1}, {0xFD,0xD2}, {0xFD,0xD3}, {0xFD,0xD4},
+ {0xFD,0xD5}, {0xFD,0xD6}, {0xFD,0xD7}, {0xFD,0xD8},
+ {0xFD,0xD9}, {0xFD,0xDA}, {0xFD,0xDB}, {0xFD,0xDC},
+ {0xFD,0xDD}, {0xFD,0xDE}, {0xFD,0xDF}, {0xFD,0xE0},
+ {0xFD,0xE1}, {0xFD,0xE2}, {0xFD,0xE3}, {0xFD,0xE4},
+ {0xFD,0xE5}, {0xFD,0xE6}, {0xFD,0xE7}, {0xFD,0xE8},
+ {0xFD,0xE9}, {0xFD,0xEA}, {0xFD,0xEB}, {0xFD,0xEC},
+ {0xFD,0xED}, {0xFD,0xEE}, {0xFD,0xEF}, {0xFD,0xF0},
+ {0xB5,0x4E}, {0xFD,0xF2}, {0xFD,0xF3}, {0xFD,0xF4},
+ {0xFD,0xF5}, {0xFD,0xF6}, {0xFD,0xF7}, {0xFD,0xF8},
+ {0xFD,0xF9}, {0xFD,0xFA}, {0xFD,0xFB}, {0xFD,0xFC},
+ {0xFD,0xFD}, {0xFD,0xFE}, {0xFE,0x40}, {0xFE,0x41},
+ {0xFE,0x42}, {0xFE,0x43}, {0xFE,0x44}, {0xFE,0x45},
+ {0xFE,0x46}, {0xFE,0x47}, {0xFE,0x48}, {0xFE,0x49},
+ {0xFE,0x4A}, {0xFE,0x4B}, {0xFE,0x4C}, {0xFE,0x4D},
+ {0xFE,0x4E}, {0xFE,0x4F}, {0xFE,0x50}, {0xFE,0x51},
+ {0x99,0x75}, {0xFE,0x53}, {0xFE,0x54}, {0xFE,0x55},
+ {0xFE,0x56}, {0xFE,0x57}, {0xFE,0x58}, {0xFE,0x59},
+ {0xFE,0x5A}, {0xFE,0x5B}, {0xFE,0x5C}, {0xFE,0x5D},
+ {0xFE,0x5E}, {0xFE,0x5F}, {0xFE,0x60}, {0xFE,0x61},
+ {0xFE,0x62}, {0xFE,0x63}, {0xFE,0x64}, {0xFE,0x65},
+ {0xFE,0x66}, {0xFE,0x67}, {0xFE,0x68}, {0xFE,0x69},
+ {0xFE,0x6A}, {0xFE,0x6B}, {0xFE,0x6C}, {0xFE,0x6D},
+ {0xFE,0x6E}, {0xB7,0xEC}, {0xFE,0x70}, {0xFE,0x71},
+ {0xFE,0x72}, {0xFE,0x73}, {0xFE,0x74}, {0xFE,0x75},
+ {0xFE,0x76}, {0xFE,0x77}, {0xFE,0x78}, {0xFE,0x79},
+ {0xFE,0x7A}, {0xFE,0x7B}, {0xFE,0x7C}, {0xFE,0x7D},
+ {0xFE,0x7E}, {0xFE,0xA1}, {0xFE,0xA2}, {0xFE,0xA3},
+ {0xFE,0xA4}, {0xFE,0xA5}, {0xFE,0xA6}, {0xFE,0xA7},
+ {0xFE,0xA8}, {0xFE,0xA9}, {0xA2,0x60}, {0xFE,0xAB},
+ {0xFE,0xAC}, {0xFE,0xAD}, {0xFE,0xAE}, {0xFE,0xAF},
+ {0xFE,0xB0}, {0xFE,0xB1}, {0xFE,0xB2}, {0xFE,0xB3},
+ {0xFE,0xB4}, {0xFE,0xB5}, {0xFE,0xB6}, {0xFE,0xB7},
+ {0xFE,0xB8}, {0xFE,0xB9}, {0xFE,0xBA}, {0xFE,0xBB},
+ {0xFE,0xBC}, {0xFE,0xBD}, {0xFE,0xBE}, {0xFE,0xBF},
+ {0xFE,0xC0}, {0xFE,0xC1}, {0xFE,0xC2}, {0xFE,0xC3},
+ {0xFE,0xC4}, {0xFE,0xC5}, {0xFE,0xC6}, {0xFE,0xC7},
+ {0xFE,0xC8}, {0xFE,0xC9}, {0xFE,0xCA}, {0xFE,0xCB},
+ {0xFE,0xCC}, {0xFE,0xCD}, {0xFE,0xCE}, {0xFE,0xCF},
+ {0xFE,0xD0}, {0xFE,0xD1}, {0xFE,0xD2}, {0xFE,0xD3},
+ {0xFE,0xD4}, {0xFE,0xD5}, {0xFE,0xD6}, {0xFE,0xD7},
+ {0xFE,0xD8}, {0xFE,0xD9}, {0xFE,0xDA}, {0xFE,0xDB},
+ {0xFE,0xDC}, {0xCF,0xF1}, {0xFE,0xDE}, {0xFE,0xDF},
+ {0xFE,0xE0}, {0xFE,0xE1}, {0xFE,0xE2}, {0xFE,0xE3},
+ {0xFE,0xE4}, {0xFE,0xE5}, {0xFE,0xE6}, {0xFE,0xE7},
+ {0xFE,0xE8}, {0xFE,0xE9}, {0xFE,0xEA}, {0xFE,0xEB},
+ {0xFE,0xEC}, {0xFE,0xED}, {0xFE,0xEE}, {0xFE,0xEF},
+ {0xFE,0xF0}, {0xFE,0xF1}, {0xFE,0xF2}, {0xFE,0xF3},
+ {0xFE,0xF4}, {0xFE,0xF5}, {0xFE,0xF6}, {0xFE,0xF7},
+ {0xFE,0xF8}, {0xFE,0xF9}, {0xFE,0xFA}, {0xFE,0xFB},
+ {0xFE,0xFC}, {0xFE,0xFD}, {0xFE,0xFE}, {0x8E,0x40},
+ {0x8E,0x41}, {0x8E,0x42}, {0x8E,0x43}, {0x8E,0x44},
+ {0x8E,0x45}, {0x8E,0x46}, {0x8E,0x47}, {0x8E,0x48},
+ {0x8E,0x49}, {0x8E,0x4A}, {0x8E,0x4B}, {0x8E,0x4C},
+ {0x8E,0x4D}, {0x8E,0x4E}, {0x8E,0x4F}, {0x8E,0x50},
+ {0x8E,0x51}, {0x8E,0x52}, {0x8E,0x53}, {0x8E,0x54},
+ {0x8E,0x55}, {0x8E,0x56}, {0x8E,0x57}, {0x8E,0x58},
+ {0x8E,0x59}, {0x8E,0x5A}, {0x8E,0x5B}, {0x8E,0x5C},
+ {0x8E,0x5D}, {0x8E,0x5E}, {0x8E,0x5F}, {0x8E,0x60},
+ {0x8E,0x61}, {0x8E,0x62}, {0x8E,0x63}, {0x8E,0x64},
+ {0x8E,0x65}, {0x8E,0x66}, {0x8E,0x67}, {0x8E,0x68},
+ {0xBA,0xE6}, {0x8E,0x6A}, {0x8E,0x6B}, {0x8E,0x6C},
+ {0x8E,0x6D}, {0x8E,0x6E}, {0xED,0xCA}, {0x8E,0x70},
+ {0x8E,0x71}, {0x8E,0x72}, {0x8E,0x73}, {0x8E,0x74},
+ {0x8E,0x75}, {0x8E,0x76}, {0x8E,0x77}, {0x8E,0x78},
+ {0x8E,0x79}, {0x8E,0x7A}, {0x8E,0x7B}, {0x8E,0x7C},
+ {0x8E,0x7D}, {0xA2,0x61}, {0x8E,0xA1}, {0x8E,0xA2},
+ {0x8E,0xA3}, {0x8E,0xA4}, {0x8E,0xA5}, {0x8E,0xA6},
+ {0x8E,0xA7}, {0x8E,0xA8}, {0x8E,0xA9}, {0x8E,0xAA},
+ {0xBA,0xFC}, {0x8E,0xAC}, {0x8E,0xAD}, {0x8E,0xAE},
+ {0x8E,0xAF}, {0x8E,0xB0}, {0x8E,0xB1}, {0x8E,0xB2},
+ {0x8E,0xB3}, {0xBF,0xA6}, {0x8E,0xB5}, {0x8E,0xB6},
+ {0x8E,0xB7}, {0x8E,0xB8}, {0x8E,0xB9}, {0x8E,0xBA},
+ {0x8E,0xBB}, {0x8E,0xBC}, {0x8E,0xBD}, {0x8E,0xBE},
+ {0x8E,0xBF}, {0x8E,0xC0}, {0x8E,0xC1}, {0x8E,0xC2},
+ {0x8E,0xC3}, {0x8E,0xC4}, {0x8E,0xC5}, {0x8E,0xC6},
+ {0x8E,0xC7}, {0x8E,0xC8}, {0x8E,0xC9}, {0x8E,0xCA},
+ {0x8E,0xCB}, {0x8E,0xCC}, {0xAA,0xCC}, {0x8E,0xCE},
+ {0x8E,0xCF}, {0xBF,0xAE}, {0x8E,0xD1}, {0x8E,0xD2},
+ {0x8E,0xD3}, {0x8E,0xD4}, {0x8E,0xD5}, {0x8E,0xD6},
+ {0x8E,0xD7}, {0x8E,0xD8}, {0x8E,0xD9}, {0x8E,0xDA},
+ {0x8E,0xDB}, {0x8E,0xDC}, {0x8E,0xDD}, {0x8E,0xDE},
+ {0x8E,0xDF}, {0x8E,0xE0}, {0x8E,0xE1}, {0x8E,0xE2},
+ {0x8E,0xE3}, {0x8E,0xE4}, {0x8E,0xE5}, {0x8E,0xE6},
+ {0x8E,0xE7}, {0x8E,0xE8}, {0x8E,0xE9}, {0x8E,0xEA},
+ {0x8E,0xEB}, {0x8E,0xEC}, {0x8E,0xED}, {0x8E,0xEE},
+ {0x8E,0xEF}, {0x8E,0xF0}, {0x8E,0xF1}, {0x8E,0xF2},
+ {0x8E,0xF3}, {0x8E,0xF4}, {0x8E,0xF5}, {0x8E,0xF6},
+ {0x8E,0xF7}, {0x8E,0xF8}, {0x8E,0xF9}, {0x8E,0xFA},
+ {0x8E,0xFB}, {0x8E,0xFC}, {0x8E,0xFD}, {0x8E,0xFE},
+ {0x8F,0x40}, {0x8F,0x41}, {0x8F,0x42}, {0x8F,0x43},
+ {0x8F,0x44}, {0x8F,0x45}, {0x8F,0x46}, {0x8F,0x47},
+ {0x8F,0x48}, {0x8F,0x49}, {0x8F,0x4A}, {0x8F,0x4B},
+ {0x8F,0x4C}, {0x8F,0x4D}, {0x8F,0x4E}, {0x8F,0x4F},
+ {0x8F,0x50}, {0x8F,0x51}, {0x8F,0x52}, {0x8F,0x53},
+ {0x8F,0x54}, {0x8F,0x55}, {0x8F,0x56}, {0xB5,0xD7},
+ {0x8F,0x58}, {0x8F,0x59}, {0x8F,0x5A}, {0x8F,0x5B},
+ {0x8F,0x5C}, {0x8F,0x5D}, {0x8F,0x5E}, {0x8F,0x5F},
+ {0x8F,0x60}, {0x8F,0x61}, {0x8F,0x62}, {0x8F,0x63},
+ {0x8F,0x64}, {0x8F,0x65}, {0x8F,0x66}, {0x8F,0x67},
+ {0x8F,0x68}, {0xE3,0xC8}, {0x8F,0x6A}, {0x8F,0x6B},
+ {0x8F,0x6C}, {0x8F,0x6D}, {0xDB,0x79}, {0x8F,0x6F},
+ {0x8F,0x70}, {0x8F,0x71}, {0x8F,0x72}, {0x8F,0x73},
+ {0x8F,0x74}, {0x8F,0x75}, {0x8F,0x76}, {0x8F,0x77},
+ {0x8F,0x78}, {0x8F,0x79}, {0x8F,0x7A}, {0x8F,0x7B},
+ {0x8F,0x7C}, {0x8F,0x7D}, {0x8F,0x7E}, {0x8F,0xA1},
+ {0x8F,0xA2}, {0x8F,0xA3}, {0x8F,0xA4}, {0x8F,0xA5},
+ {0x8F,0xA6}, {0x8F,0xA7}, {0x8F,0xA8}, {0x8F,0xA9},
+ {0x8F,0xAA}, {0x8F,0xAB}, {0x8F,0xAC}, {0x8F,0xAD},
+ {0x8F,0xAE}, {0x8F,0xAF}, {0x8F,0xB0}, {0x8F,0xB1},
+ {0x8F,0xB2}, {0x8F,0xB3}, {0x8F,0xB4}, {0x8F,0xB5},
+ {0x8F,0xB6}, {0x8F,0xB7}, {0x8F,0xB8}, {0x8F,0xB9},
+ {0x8F,0xBA}, {0x8F,0xBB}, {0x8F,0xBC}, {0x8F,0xBD},
+ {0x8F,0xBE}, {0x8F,0xBF}, {0x8F,0xC0}, {0x8F,0xC1},
+ {0x8F,0xC2}, {0x8F,0xC3}, {0x8F,0xC4}, {0x8F,0xC5},
+ {0x8F,0xC6}, {0x8F,0xC7}, {0x8F,0xC8}, {0x8F,0xC9},
+ {0x8F,0xCA}, {0xBF,0xCC}, {0xA0,0xD4}, {0x8F,0xCD},
+ {0x8F,0xCE}, {0x8F,0xCF}, {0x8F,0xD0}, {0x8F,0xD1},
+ {0x8F,0xD2}, {0x8F,0xD3}, {0x8F,0xD4}, {0x8F,0xD5},
+ {0x8F,0xD6}, {0x8F,0xD7}, {0x8F,0xD8}, {0x8F,0xD9},
+ {0x8F,0xDA}, {0x8F,0xDB}, {0x8F,0xDC}, {0x8F,0xDD},
+ {0x8F,0xDE}, {0x8F,0xDF}, {0x8F,0xE0}, {0x8F,0xE1},
+ {0x8F,0xE2}, {0x8F,0xE3}, {0x8F,0xE4}, {0x8F,0xE5},
+ {0x8F,0xE6}, {0x8F,0xE7}, {0x8F,0xE8}, {0x8F,0xE9},
+ {0x8F,0xEA}, {0x8F,0xEB}, {0x8F,0xEC}, {0x8F,0xED},
+ {0x8F,0xEE}, {0x8F,0xEF}, {0x8F,0xF0}, {0x8F,0xF1},
+ {0x8F,0xF2}, {0x8F,0xF3}, {0x8F,0xF4}, {0x8F,0xF5},
+ {0x8F,0xF6}, {0x8F,0xF7}, {0x8F,0xF8}, {0x8F,0xF9},
+ {0x8F,0xFA}, {0x8F,0xFB}, {0x8F,0xFC}, {0x8F,0xFD},
+ {0xB0,0x5F}, {0x90,0x40}, {0x90,0x41}, {0x90,0x42},
+ {0x90,0x43}, {0x90,0x44}, {0x90,0x45}, {0x90,0x46},
+ {0x90,0x47}, {0x90,0x48}, {0x90,0x49}, {0x90,0x4A},
+ {0x90,0x4B}, {0x90,0x4C}, {0x90,0x4D}, {0x90,0x4E},
+ {0x90,0x4F}, {0x90,0x50}, {0x90,0x51}, {0x90,0x52},
+ {0x90,0x53}, {0x90,0x54}, {0x90,0x55}, {0x90,0x56},
+ {0x90,0x57}, {0x90,0x58}, {0x90,0x59}, {0x90,0x5A},
+ {0x90,0x5B}, {0x90,0x5C}, {0x90,0x5D}, {0x90,0x5E},
+ {0x90,0x5F}, {0x90,0x60}, {0x90,0x61}, {0x90,0x62},
+ {0x90,0x63}, {0x90,0x64}, {0x90,0x65}, {0x90,0x66},
+ {0x90,0x67}, {0x90,0x68}, {0x90,0x69}, {0x90,0x6A},
+ {0x90,0x6B}, {0x90,0x6C}, {0xB3,0xA3}, {0x90,0x6E},
+ {0x90,0x6F}, {0x90,0x70}, {0x90,0x71}, {0x90,0x72},
+ {0x90,0x73}, {0x90,0x74}, {0x90,0x75}, {0x90,0x76},
+ {0x90,0x77}, {0x90,0x78}, {0x90,0x79}, {0xF9,0xD7},
+ {0x90,0x7B}, {0x90,0x7C}, {0x90,0x7D}, {0x90,0x7E},
+ {0x90,0xA1}, {0x90,0xA2}, {0x90,0xA3}, {0x90,0xA4},
+ {0x90,0xA5}, {0x90,0xA6}, {0x90,0xA7}, {0x90,0xA8},
+ {0x90,0xA9}, {0x90,0xAA}, {0x90,0xAB}, {0x90,0xAC},
+ {0x90,0xAD}, {0x90,0xAE}, {0x90,0xAF}, {0x90,0xB0},
+ {0x90,0xB1}, {0x90,0xB2}, {0x90,0xB3}, {0x90,0xB4},
+ {0x90,0xB5}, {0x90,0xB6}, {0x90,0xB7}, {0x90,0xB8},
+ {0x90,0xB9}, {0x90,0xBA}, {0x90,0xBB}, {0x90,0xBC},
+ {0x90,0xBD}, {0x90,0xBE}, {0x90,0xBF}, {0x90,0xC0},
+ {0x90,0xC1}, {0x90,0xC2}, {0x90,0xC3}, {0x90,0xC4},
+ {0x90,0xC5}, {0x90,0xC6}, {0x90,0xC7}, {0x90,0xC8},
+ {0x90,0xC9}, {0x90,0xCA}, {0x90,0xCB}, {0x90,0xCC},
+ {0x90,0xCD}, {0x90,0xCE}, {0x90,0xCF}, {0x90,0xD0},
+ {0x90,0xD1}, {0x90,0xD2}, {0x90,0xD3}, {0x90,0xD4},
+ {0x90,0xD5}, {0x90,0xD6}, {0x90,0xD7}, {0x90,0xD8},
+ {0x90,0xD9}, {0x90,0xDA}, {0x90,0xDB}, {0xC0,0x52},
+ {0x90,0xDD}, {0x90,0xDE}, {0x90,0xDF}, {0x90,0xE0},
+ {0x90,0xE1}, {0x90,0xE2}, {0x90,0xE3}, {0x90,0xE4},
+ {0x90,0xE5}, {0x90,0xE6}, {0x90,0xE7}, {0x90,0xE8},
+ {0x90,0xE9}, {0x90,0xEA}, {0x90,0xEB}, {0x90,0xEC},
+ {0x90,0xED}, {0x90,0xEE}, {0x90,0xEF}, {0x90,0xF0},
+ {0xC5,0x54}, {0x90,0xF2}, {0x90,0xF3}, {0x90,0xF4},
+ {0x90,0xF5}, {0x90,0xF6}, {0x90,0xF7}, {0x90,0xF8},
+ {0x90,0xF9}, {0x90,0xFA}, {0x90,0xFB}, {0x90,0xFC},
+ {0x90,0xFD}, {0x90,0xFE}, {0x91,0x40}, {0x91,0x41},
+ {0x91,0x42}, {0x91,0x43}, {0x91,0x44}, {0x91,0x45},
+ {0x91,0x46}, {0x91,0x47}, {0x91,0x48}, {0x91,0x49},
+ {0x91,0x4A}, {0x91,0x4B}, {0x91,0x4C}, {0x91,0x4D},
+ {0x91,0x4E}, {0x91,0x4F}, {0x91,0x50}, {0x91,0x51},
+ {0x91,0x52}, {0x91,0x53}, {0x91,0x54}, {0x91,0x55},
+ {0x91,0x56}, {0x91,0x57}, {0x91,0x58}, {0x91,0x59},
+ {0x91,0x5A}, {0x91,0x5B}, {0x91,0x5C}, {0x91,0x5D},
+ {0x91,0x5E}, {0x91,0x5F}, {0x91,0x60}, {0x91,0x61},
+ {0x91,0x62}, {0x91,0x63}, {0x91,0x64}, {0x91,0x65},
+ {0x91,0x66}, {0x91,0x67}, {0x91,0x68}, {0x91,0x69},
+ {0x91,0x6A}, {0x91,0x6B}, {0x91,0x6C}, {0x91,0x6D},
+ {0x91,0x6E}, {0x91,0x6F}, {0x91,0x70}, {0x91,0x71},
+ {0x91,0x72}, {0x91,0x73}, {0x91,0x74}, {0x91,0x75},
+ {0x91,0x76}, {0x91,0x77}, {0x91,0x78}, {0x91,0x79},
+ {0x91,0x7A}, {0x91,0x7B}, {0x91,0x7C}, {0x91,0x7D},
+ {0x91,0x7E}, {0x91,0xA1}, {0x91,0xA2}, {0x91,0xA3},
+ {0x91,0xA4}, {0x91,0xA5}, {0x91,0xA6}, {0x91,0xA7},
+ {0x91,0xA8}, {0x91,0xA9}, {0x91,0xAA}, {0x91,0xAB},
+ {0x91,0xAC}, {0x91,0xAD}, {0x91,0xAE}, {0x91,0xAF},
+ {0x91,0xB0}, {0x91,0xB1}, {0x91,0xB2}, {0x91,0xB3},
+ {0x91,0xB4}, {0x91,0xB5}, {0x91,0xB6}, {0x91,0xB7},
+ {0x91,0xB8}, {0x91,0xB9}, {0x91,0xBA}, {0x91,0xBB},
+ {0x91,0xBC}, {0x91,0xBD}, {0x91,0xBE}, {0xF1,0xE3},
+ {0x91,0xC0}, {0x91,0xC1}, {0x91,0xC2}, {0x91,0xC3},
+ {0x91,0xC4}, {0x91,0xC5}, {0x91,0xC6}, {0x91,0xC7},
+ {0x91,0xC8}, {0x91,0xC9}, {0x91,0xCA}, {0x91,0xCB},
+ {0x91,0xCC}, {0x91,0xCD}, {0x91,0xCE}, {0x91,0xCF},
+ {0x91,0xD0}, {0x91,0xD1}, {0x91,0xD2}, {0x91,0xD3},
+ {0x91,0xD4}, {0x91,0xD5}, {0x91,0xD6}, {0x91,0xD7},
+ {0x91,0xD8}, {0x91,0xD9}, {0x91,0xDA}, {0x91,0xDB},
+ {0x91,0xDC}, {0x91,0xDD}, {0x91,0xDE}, {0x91,0xDF},
+ {0x91,0xE0}, {0x91,0xE1}, {0x91,0xE2}, {0x91,0xE3},
+ {0x91,0xE4}, {0x91,0xE5}, {0x91,0xE6}, {0x91,0xE7},
+ {0x91,0xE8}, {0x91,0xE9}, {0x91,0xEA}, {0x91,0xEB},
+ {0x91,0xEC}, {0x91,0xED}, {0x91,0xEE}, {0x91,0xEF},
+ {0x91,0xF0}, {0x91,0xF1}, {0x91,0xF2}, {0x91,0xF3},
+ {0x91,0xF4}, {0x91,0xF5}, {0x91,0xF6}, {0x91,0xF7},
+ {0x91,0xF8}, {0x91,0xF9}, {0x91,0xFA}, {0x91,0xFB},
+ {0x91,0xFC}, {0x91,0xFD}, {0x91,0xFE}, {0x92,0x40},
+ {0x92,0x41}, {0x92,0x42}, {0x92,0x43}, {0x92,0x42},
+ {0x92,0x45}, {0x92,0x46}, {0x92,0x47}, {0x92,0x48},
+ {0x92,0x49}, {0x92,0x4A}, {0x92,0x4B}, {0x92,0x4C},
+ {0x92,0x4D}, {0x92,0x4E}, {0x92,0x4F}, {0x92,0x50},
+ {0x92,0x51}, {0x92,0x52}, {0x92,0x53}, {0x92,0x54},
+ {0x92,0x55}, {0x92,0x56}, {0x92,0x57}, {0x92,0x58},
+ {0x92,0x59}, {0x92,0x5A}, {0x92,0x5B}, {0x92,0x5C},
+ {0x92,0x5D}, {0x92,0x5E}, {0x92,0x5F}, {0x92,0x60},
+ {0x92,0x61}, {0x92,0x62}, {0x92,0x63}, {0x92,0x64},
+ {0x92,0x65}, {0x92,0x66}, {0x92,0x67}, {0x92,0x68},
+ {0x92,0x69}, {0x92,0x6A}, {0x92,0x6B}, {0x92,0x6C},
+ {0x92,0x6D}, {0x92,0x6E}, {0x92,0x6F}, {0x92,0x70},
+ {0x92,0x71}, {0x92,0x72}, {0x92,0x73}, {0x92,0x74},
+ {0x92,0x75}, {0x92,0x76}, {0x92,0x77}, {0x92,0x78},
+ {0x92,0x79}, {0x92,0x7A}, {0x92,0x7B}, {0x92,0x7C},
+ {0x92,0x7D}, {0x92,0x7E}, {0x92,0xA1}, {0x92,0xA2},
+ {0x92,0xA3}, {0x92,0xA4}, {0x92,0xA5}, {0x92,0xA6},
+ {0x92,0xA7}, {0x92,0xA8}, {0x92,0xA9}, {0x92,0xAA},
+ {0x92,0xAB}, {0x92,0xAC}, {0x92,0xAD}, {0x92,0xAE},
+ {0xA2,0x59}, {0xA2,0x5A}, {0xA2,0x5C}, {0xA2,0x5B},
+ {0x92,0xB3}, {0x92,0xB4}, {0x92,0xB5}, {0x92,0xB6},
+ {0x92,0xB7}, {0x92,0xB8}, {0x92,0xB9}, {0x92,0xBA},
+ {0x92,0xBB}, {0x92,0xBC}, {0x92,0xBD}, {0x92,0xBE},
+ {0x92,0xBF}, {0x92,0xC0}, {0x92,0xC1}, {0x92,0xC2},
+ {0x92,0xC3}, {0x92,0xC4}, {0x92,0xC5}, {0x92,0xC6},
+ {0x92,0xC7}, {0xA0,0x5F}, {0x92,0xC9}, {0x92,0xCA},
+ {0x92,0xCB}, {0x92,0xCC}, {0x92,0xCD}, {0x92,0xCE},
+ {0x92,0xCF}, {0x92,0xD0}, {0xE6,0xAB}, {0x92,0xD2},
+ {0x92,0xD3}, {0x92,0xD4}, {0x92,0xD5}, {0x92,0xD6},
+ {0x92,0xD7}, {0x92,0xD8}, {0x92,0xD9}, {0x92,0xDA},
+ {0x92,0xDB}, {0x92,0xDC}, {0x92,0xDD}, {0x92,0xDE},
+ {0x92,0xDF}, {0x92,0xE0}, {0x92,0xE1}, {0x92,0xE2},
+ {0x92,0xE3}, {0x92,0xE4}, {0x92,0xE5}, {0x92,0xE6},
+ {0x92,0xE7}, {0x92,0xE8}, {0x92,0xE9}, {0x92,0xEA},
+ {0x92,0xEB}, {0x92,0xEC}, {0x92,0xED}, {0x92,0xEE},
+ {0x92,0xEF}, {0x92,0xF0}, {0x92,0xF1}, {0x92,0xF2},
+ {0x92,0xF3}, {0x92,0xF4}, {0x92,0xF5}, {0x92,0xF6},
+ {0x92,0xF7}, {0x92,0xF8}, {0x92,0xF9}, {0x92,0xFA},
+ {0x92,0xFB}, {0x92,0xFC}, {0x92,0xFD}, {0x92,0xFE},
+ {0x93,0x40}, {0x93,0x41}, {0x93,0x42}, {0x93,0x43},
+ {0x93,0x44}, {0x93,0x45}, {0x93,0x46}, {0x93,0x47},
+ {0x93,0x48}, {0x93,0x49}, {0x93,0x4A}, {0x93,0x4B},
+ {0x93,0x4C}, {0x93,0x4D}, {0x93,0x4E}, {0x93,0x4F},
+ {0x93,0x50}, {0x93,0x51}, {0x93,0x52}, {0x93,0x53},
+ {0x93,0x54}, {0x93,0x55}, {0x93,0x56}, {0x93,0x57},
+ {0x93,0x58}, {0x93,0x59}, {0x93,0x5A}, {0x93,0x5B},
+ {0x93,0x5C}, {0x93,0x5D}, {0x93,0x5E}, {0x93,0x5F},
+ {0x93,0x60}, {0x93,0x61}, {0x93,0x62}, {0x93,0x63},
+ {0x93,0x64}, {0x93,0x65}, {0x93,0x66}, {0x93,0x67},
+ {0x93,0x68}, {0x93,0x69}, {0x93,0x6A}, {0x93,0x6B},
+ {0x93,0x6C}, {0x93,0x6D}, {0x93,0x6E}, {0x93,0x6F},
+ {0x93,0x70}, {0x93,0x71}, {0x93,0x72}, {0x93,0x73},
+ {0x93,0x74}, {0x93,0x75}, {0x93,0x76}, {0x93,0x77},
+ {0x93,0x78}, {0x93,0x79}, {0x93,0x7A}, {0x93,0x7B},
+ {0x93,0x7C}, {0x93,0x7D}, {0x93,0x7E}, {0x93,0xA1},
+ {0x93,0xA2}, {0x93,0xA3}, {0x93,0xA4}, {0x93,0xA5},
+ {0x93,0xA6}, {0x93,0xA7}, {0x93,0xA8}, {0x93,0xA9},
+ {0x93,0xAA}, {0x93,0xAB}, {0x93,0xAC}, {0x93,0xAD},
+ {0x93,0xAE}, {0x93,0xAF}, {0x93,0xB0}, {0x93,0xB1},
+ {0x93,0xB2}, {0x93,0xB3}, {0x93,0xB4}, {0x93,0xB5},
+ {0x93,0xB6}, {0x93,0xB7}, {0x93,0xB8}, {0x93,0xB9},
+ {0x93,0xBA}, {0x93,0xBB}, {0x93,0xBC}, {0x93,0xBD},
+ {0x93,0xBE}, {0x93,0xBF}, {0x93,0xC0}, {0x93,0xC1},
+ {0x93,0xC2}, {0x93,0xC3}, {0x93,0xC4}, {0x93,0xC5},
+ {0x93,0xC6}, {0x93,0xC7}, {0x93,0xC8}, {0x93,0xC9},
+ {0x93,0xCA}, {0x93,0xCB}, {0x93,0xCC}, {0x93,0xCD},
+ {0x93,0xCE}, {0x93,0xCF}, {0x93,0xD0}, {0x93,0xD1},
+ {0x93,0xD2}, {0x93,0xD3}, {0x93,0xD4}, {0x93,0xD5},
+ {0x93,0xD6}, {0x93,0xD7}, {0x93,0xD8}, {0x93,0xD9},
+ {0x93,0xDA}, {0x93,0xDB}, {0x93,0xDC}, {0x93,0xDD},
+ {0x93,0xDE}, {0x93,0xDF}, {0x93,0xE0}, {0x93,0xE1},
+ {0x93,0xE2}, {0x93,0xE3}, {0x93,0xE4}, {0x93,0xE5},
+ {0x93,0xE6}, {0x93,0xE7}, {0x93,0xE8}, {0x93,0xE9},
+ {0x93,0xEA}, {0x93,0xEB}, {0x93,0xEC}, {0x93,0xED},
+ {0x93,0xEE}, {0x93,0xEF}, {0x93,0xF0}, {0x93,0xF1},
+ {0x93,0xF2}, {0x93,0xF3}, {0x93,0xF4}, {0x93,0xF5},
+ {0x93,0xF6}, {0x93,0xF7}, {0x93,0xF8}, {0x93,0xF9},
+ {0x93,0xFA}, {0x93,0xFB}, {0x93,0xFC}, {0x93,0xFD},
+ {0x93,0xFE}, {0x94,0x40}, {0x94,0x41}, {0x94,0x42},
+ {0x94,0x43}, {0x94,0x44}, {0x94,0x45}, {0x94,0x46},
+ {0xD2,0x56}, {0x94,0x48}, {0x94,0x49}, {0x94,0x4A},
+ {0x94,0x4B}, {0x94,0x4C}, {0x94,0x4D}, {0x94,0x4E},
+ {0x94,0x4F}, {0x94,0x50}, {0x94,0x51}, {0x94,0x52},
+ {0x94,0x53}, {0x94,0x54}, {0x94,0x55}, {0x94,0x56},
+ {0x94,0x57}, {0x94,0x58}, {0x94,0x59}, {0x94,0x5A},
+ {0x94,0x5B}, {0x94,0x5C}, {0x94,0x5D}, {0x94,0x5E},
+ {0x94,0x5F}, {0x94,0x60}, {0x94,0x61}, {0x94,0x62},
+ {0x94,0x63}, {0x94,0x64}, {0x94,0x65}, {0x94,0x66},
+ {0x94,0x67}, {0x94,0x68}, {0x94,0x69}, {0x94,0x6A},
+ {0x94,0x6B}, {0x94,0x6C}, {0x94,0x6D}, {0x94,0x6E},
+ {0x94,0x6F}, {0x94,0x70}, {0x94,0x71}, {0x94,0x72},
+ {0x94,0x73}, {0x94,0x74}, {0x94,0x75}, {0x94,0x76},
+ {0x94,0x77}, {0x94,0x78}, {0x94,0x79}, {0x94,0x7A},
+ {0x94,0x7B}, {0x94,0x7C}, {0x94,0x7D}, {0x94,0x7E},
+ {0x94,0xA1}, {0x94,0xA2}, {0x94,0xA3}, {0x94,0xA4},
+ {0x94,0xA5}, {0x94,0xA6}, {0x94,0xA7}, {0x94,0xA8},
+ {0x94,0xA9}, {0x94,0xAA}, {0x94,0xAB}, {0x94,0xAC},
+ {0x94,0xAD}, {0x94,0xAE}, {0x94,0xAF}, {0x94,0xB0},
+ {0x94,0xB1}, {0x94,0xB2}, {0x94,0xB3}, {0x94,0xB4},
+ {0x94,0xB5}, {0x94,0xB6}, {0x94,0xB7}, {0x94,0xB8},
+ {0x94,0xB9}, {0x94,0xBA}, {0x94,0xBB}, {0x94,0xBC},
+ {0x94,0xBD}, {0x94,0xBE}, {0x94,0xBF}, {0x94,0xC0},
+ {0x94,0xC1}, {0x94,0xC2}, {0x94,0xC3}, {0x94,0xC4},
+ {0x94,0xC5}, {0x94,0xC6}, {0x94,0xC7}, {0x94,0xC8},
+ {0x94,0xC9}, {0xE6,0xD0}, {0x94,0xCB}, {0x94,0xCC},
+ {0x94,0xCD}, {0x94,0xCE}, {0x94,0xCF}, {0x94,0xD0},
+ {0x94,0xD1}, {0x94,0xD2}, {0x94,0xD3}, {0x94,0xD4},
+ {0x94,0xD5}, {0x94,0xD6}, {0x94,0xD7}, {0x94,0xD8},
+ {0x94,0xD9}, {0x94,0xDA}, {0x94,0xDB}, {0x94,0xDC},
+ {0x94,0xDD}, {0x94,0xDE}, {0x94,0xDF}, {0x94,0xE0},
+ {0x94,0xE1}, {0x94,0xE2}, {0x94,0xE3}, {0x94,0xE4},
+ {0x94,0xE5}, {0x94,0xE6}, {0x94,0xE7}, {0x94,0xE8},
+ {0x94,0xE9}, {0x94,0xEA}, {0x94,0xEB}, {0x94,0xEC},
+ {0x94,0xED}, {0x94,0xEE}, {0x94,0xEF}, {0x94,0xF0},
+ {0x94,0xF1}, {0x94,0xF2}, {0x94,0xF3}, {0x94,0xF4},
+ {0x94,0xF5}, {0x94,0xF6}, {0x94,0xF7}, {0x94,0xF8},
+ {0x94,0xF9}, {0x94,0xFA}, {0x94,0xFB}, {0x94,0xFC},
+ {0x94,0xFD}, {0x94,0xFE}, {0x95,0x40}, {0x95,0x41},
+ {0x95,0x42}, {0x95,0x43}, {0x95,0x44}, {0x95,0x45},
+ {0x95,0x46}, {0x95,0x47}, {0x95,0x48}, {0x95,0x49},
+ {0x95,0x4A}, {0x95,0x4B}, {0x95,0x4C}, {0x95,0x4D},
+ {0x95,0x4E}, {0x95,0x4F}, {0x95,0x50}, {0x95,0x51},
+ {0x95,0x52}, {0x95,0x53}, {0x95,0x54}, {0x95,0x55},
+ {0x95,0x56}, {0x95,0x57}, {0x95,0x58}, {0x95,0x59},
+ {0x95,0x5A}, {0x95,0x5B}, {0x95,0x5C}, {0x95,0x5D},
+ {0x95,0x5E}, {0x95,0x5F}, {0x95,0x60}, {0x95,0x61},
+ {0x95,0x62}, {0x95,0x63}, {0x95,0x64}, {0x95,0x65},
+ {0x95,0x66}, {0x95,0x67}, {0x95,0x68}, {0x95,0x69},
+ {0x95,0x6A}, {0x95,0x6B}, {0x95,0x6C}, {0x95,0x6D},
+ {0x95,0x6E}, {0x95,0x6F}, {0x95,0x70}, {0x95,0x71},
+ {0x95,0x72}, {0x95,0x73}, {0x95,0x74}, {0x95,0x75},
+ {0x95,0x76}, {0x95,0x77}, {0x95,0x78}, {0x95,0x79},
+ {0x95,0x7A}, {0x95,0x7B}, {0x95,0x7C}, {0x95,0x7D},
+ {0x95,0x7E}, {0x95,0xA1}, {0x95,0xA2}, {0x95,0xA3},
+ {0x95,0xA4}, {0x95,0xA5}, {0x95,0xA6}, {0x95,0xA7},
+ {0x95,0xA8}, {0x95,0xA9}, {0x95,0xAA}, {0x95,0xAB},
+ {0x95,0xAC}, {0x95,0xAD}, {0x95,0xAE}, {0x95,0xAF},
+ {0x95,0xB0}, {0x95,0xB1}, {0x95,0xB2}, {0x95,0xB3},
+ {0x95,0xB4}, {0x95,0xB5}, {0x95,0xB6}, {0x95,0xB7},
+ {0x95,0xB8}, {0x95,0xB9}, {0x95,0xBA}, {0x95,0xBB},
+ {0x95,0xBC}, {0x95,0xBD}, {0x95,0xBE}, {0x95,0xBF},
+ {0x95,0xC0}, {0x95,0xC1}, {0x95,0xC2}, {0x95,0xC3},
+ {0x95,0xC4}, {0x95,0xC5}, {0x95,0xC6}, {0x95,0xC7},
+ {0x95,0xC8}, {0x95,0xC9}, {0x95,0xCA}, {0x95,0xCB},
+ {0x95,0xCC}, {0x95,0xCD}, {0x95,0xCE}, {0x95,0xCF},
+ {0x95,0xD0}, {0x95,0xD1}, {0x95,0xD2}, {0x95,0xD3},
+ {0x95,0xD4}, {0x95,0xD5}, {0x95,0xD6}, {0x95,0xD7},
+ {0x95,0xD8}, {0xCA,0x52}, {0x95,0xDA}, {0x95,0xDB},
+ {0x95,0xDC}, {0x95,0xDD}, {0x95,0xDE}, {0x95,0xDF},
+ {0x95,0xE0}, {0x95,0xE1}, {0x95,0xE2}, {0x95,0xE3},
+ {0x95,0xE4}, {0x95,0xE5}, {0x95,0xE6}, {0x95,0xE7},
+ {0x95,0xE8}, {0x95,0xE9}, {0x95,0xEA}, {0x95,0xEB},
+ {0x95,0xEC}, {0x95,0xED}, {0x95,0xEE}, {0x95,0xEF},
+ {0x95,0xF0}, {0x95,0xF1}, {0x95,0xF2}, {0x95,0xF3},
+ {0x95,0xF4}, {0x95,0xF5}, {0x95,0xF6}, {0x95,0xF7},
+ {0x95,0xF8}, {0x95,0xF9}, {0x95,0xFA}, {0x95,0xFB},
+ {0x95,0xFC}, {0x95,0xFD}, {0x95,0xFE}, {0x96,0x40},
+ {0x96,0x41}, {0x96,0x42}, {0x96,0x43}, {0x9C,0xE4},
+ {0x96,0x45}, {0x96,0x46}, {0x96,0x47}, {0x96,0x48},
+ {0x96,0x49}, {0x96,0x4A}, {0x96,0x4B}, {0x96,0x4C},
+ {0x96,0x4D}, {0x96,0x4E}, {0x96,0x4F}, {0x96,0x50},
+ {0x96,0x51}, {0x96,0x52}, {0x96,0x53}, {0x96,0x54},
+ {0x96,0x55}, {0x96,0x56}, {0x96,0x57}, {0x96,0x58},
+ {0x96,0x59}, {0x96,0x5A}, {0x96,0x5B}, {0x96,0x5C},
+ {0x96,0x5D}, {0x96,0x5E}, {0x96,0x5F}, {0x96,0x60},
+ {0x96,0x61}, {0x96,0x62}, {0x96,0x63}, {0x96,0x64},
+ {0x96,0x65}, {0x96,0x66}, {0x96,0x67}, {0x96,0x68},
+ {0x96,0x69}, {0x96,0x6A}, {0x96,0x6B}, {0x96,0x6C},
+ {0x96,0x6D}, {0x96,0x6E}, {0x96,0x6F}, {0x96,0x70},
+ {0x96,0x71}, {0x96,0x72}, {0x96,0x73}, {0x96,0x74},
+ {0x96,0x75}, {0x96,0x76}, {0x96,0x77}, {0x96,0x78},
+ {0x96,0x79}, {0x96,0x7A}, {0x96,0x7B}, {0x96,0x7C},
+ {0x96,0x7D}, {0x96,0x7E}, {0x96,0xA1}, {0x96,0xA2},
+ {0x96,0xA3}, {0x96,0xA4}, {0x96,0xA5}, {0x96,0xA6},
+ {0x96,0xA7}, {0x96,0xA8}, {0x96,0xA9}, {0x96,0xAA},
+ {0x96,0xAB}, {0x96,0xAC}, {0x96,0xAD}, {0x96,0xAE},
+ {0x96,0xAF}, {0x96,0xB0}, {0x96,0xB1}, {0x96,0xB2},
+ {0x96,0xB3}, {0x96,0xB4}, {0x96,0xB5}, {0x96,0xB6},
+ {0x96,0xB7}, {0x96,0xB8}, {0x96,0xB9}, {0x96,0xBA},
+ {0x96,0xBB}, {0x96,0xBC}, {0x96,0xBD}, {0x96,0xBE},
+ {0x96,0xBF}, {0x96,0xC0}, {0x96,0xC1}, {0x96,0xC2},
+ {0x96,0xC3}, {0x96,0xC4}, {0x96,0xC5}, {0x96,0xC6},
+ {0x96,0xC7}, {0x96,0xC8}, {0x96,0xC9}, {0x96,0xCA},
+ {0x96,0xCB}, {0x96,0xCC}, {0x96,0xCD}, {0x96,0xCE},
+ {0x96,0xCF}, {0x96,0xD0}, {0x96,0xD1}, {0x96,0xD2},
+ {0x96,0xD3}, {0x96,0xD4}, {0x96,0xD5}, {0x96,0xD6},
+ {0x96,0xD7}, {0x96,0xD8}, {0x96,0xD9}, {0x96,0xDA},
+ {0x96,0xDB}, {0x96,0xDC}, {0x96,0xDD}, {0x96,0xDE},
+ {0x96,0xDF}, {0x96,0xE0}, {0x96,0xE1}, {0x96,0xE2},
+ {0x96,0xE3}, {0x96,0xE4}, {0x96,0xE5}, {0x96,0xE6},
+ {0x96,0xE7}, {0x96,0xE8}, {0x96,0xE9}, {0x96,0xEA},
+ {0x96,0xEB}, {0x96,0xEC}, {0x96,0xEE}, {0x96,0xEE},
+ {0x96,0xEF}, {0x96,0xF0}, {0x96,0xF1}, {0x96,0xF2},
+ {0x96,0xF3}, {0x96,0xF4}, {0x96,0xF5}, {0x96,0xF6},
+ {0x96,0xF7}, {0x96,0xF8}, {0x96,0xF9}, {0x96,0xFA},
+ {0x96,0xFB}, {0xE9,0x59}, {0x96,0xFD}, {0x96,0xFE},
+ {0x97,0x40}, {0x97,0x41}, {0x97,0x42}, {0x97,0x43},
+ {0x97,0x44}, {0x97,0x45}, {0x97,0x46}, {0x97,0x47},
+ {0x97,0x48}, {0x97,0x49}, {0x97,0x4A}, {0x97,0x4B},
+ {0x97,0x4C}, {0x97,0x4D}, {0x97,0x4E}, {0x97,0x4F},
+ {0x97,0x50}, {0x97,0x51}, {0x97,0x52}, {0x97,0x53},
+ {0x97,0x54}, {0x97,0x55}, {0x97,0x56}, {0x97,0x57},
+ {0x97,0x58}, {0x97,0x59}, {0x97,0x5A}, {0x97,0x5B},
+ {0x97,0x5C}, {0x97,0x5D}, {0x97,0x5E}, {0x97,0x5F},
+ {0x97,0x60}, {0x97,0x61}, {0x97,0x62}, {0x97,0x63},
+ {0x97,0x64}, {0x97,0x65}, {0x97,0x66}, {0x97,0x67},
+ {0x97,0x68}, {0x97,0x69}, {0x97,0x6A}, {0x97,0x6B},
+ {0x97,0x6C}, {0x97,0x6D}, {0x97,0x6E}, {0x97,0x6F},
+ {0x97,0x70}, {0x97,0x71}, {0x97,0x72}, {0x97,0x73},
+ {0x97,0x74}, {0x97,0x75}, {0x97,0x76}, {0x97,0x77},
+ {0x97,0x78}, {0x97,0x79}, {0x97,0x7A}, {0x97,0x7B},
+ {0x97,0x7C}, {0x97,0x7D}, {0x97,0x7E}, {0x97,0xA1},
+ {0x97,0xA2}, {0x97,0xA3}, {0x97,0xA4}, {0x97,0xA5},
+ {0x97,0xA6}, {0x97,0xA7}, {0x97,0xA8}, {0x97,0xA9},
+ {0x97,0xAA}, {0x97,0xAB}, {0x97,0xAC}, {0x97,0xAD},
+ {0x97,0xAE}, {0x97,0xAF}, {0x97,0xB0}, {0x97,0xB1},
+ {0x97,0xB2}, {0x97,0xB3}, {0x97,0xB4}, {0x97,0xB5},
+ {0x97,0xB6}, {0x97,0xB7}, {0x97,0xB8}, {0x97,0xB9},
+ {0x97,0xBA}, {0x97,0xBB}, {0x97,0xBC}, {0x97,0xBD},
+ {0x97,0xBE}, {0x97,0xBF}, {0x97,0xC0}, {0x97,0xC1},
+ {0x97,0xC2}, {0x97,0xC3}, {0x97,0xC4}, {0x97,0xC5},
+ {0x97,0xC6}, {0x97,0xC7}, {0x97,0xC8}, {0x97,0xC9},
+ {0x97,0xCA}, {0x97,0xCB}, {0x97,0xCC}, {0x97,0xCD},
+ {0x97,0xCE}, {0x97,0xCF}, {0x97,0xD0}, {0x97,0xD1},
+ {0x97,0xD2}, {0x97,0xD3}, {0x97,0xD4}, {0x97,0xD5},
+ {0x97,0xD6}, {0x97,0xD7}, {0x97,0xD8}, {0x97,0xD9},
+ {0x97,0xDA}, {0x97,0xDB}, {0x97,0xDC}, {0x97,0xDD},
+ {0x97,0xDE}, {0x97,0xDF}, {0x97,0xE0}, {0x97,0xE1},
+ {0x97,0xE2}, {0x97,0xE3}, {0x97,0xE4}, {0x97,0xE5},
+ {0x97,0xE6}, {0x97,0xE7}, {0x97,0xE8}, {0x97,0xE9},
+ {0x97,0xEA}, {0x97,0xEB}, {0x97,0xEC}, {0x97,0xED},
+ {0x97,0xEE}, {0x97,0xEF}, {0x97,0xF0}, {0x97,0xF1},
+ {0x97,0xF2}, {0x97,0xF3}, {0x97,0xF4}, {0x97,0xF5},
+ {0x97,0xF6}, {0x97,0xF7}, {0x97,0xF8}, {0x97,0xF9},
+ {0x97,0xFA}, {0x97,0xFB}, {0x97,0xFC}, {0x97,0xFD},
+ {0x97,0xFE}, {0x98,0x40}, {0x98,0x41}, {0x98,0x42},
+ {0x98,0x43}, {0x98,0x44}, {0x98,0x45}, {0x98,0x46},
+ {0x98,0x47}, {0x98,0x48}, {0x98,0x49}, {0x98,0x4A},
+ {0x98,0x4B}, {0x98,0x4C}, {0x98,0x4D}, {0x98,0x4E},
+ {0x98,0x4F}, {0x98,0x50}, {0x98,0x51}, {0x98,0x52},
+ {0x98,0x53}, {0x98,0x54}, {0x98,0x55}, {0x98,0x56},
+ {0x98,0x57}, {0x98,0x58}, {0x98,0x59}, {0x98,0x5A},
+ {0x98,0x5B}, {0x98,0x5C}, {0x98,0x5D}, {0x98,0x5E},
+ {0x98,0x5F}, {0x98,0x60}, {0x98,0x61}, {0x98,0x62},
+ {0x98,0x63}, {0x98,0x64}, {0x98,0x65}, {0x98,0x66},
+ {0x98,0x67}, {0x98,0x68}, {0x98,0x69}, {0x98,0x6A},
+ {0x98,0x6B}, {0x98,0x6C}, {0x98,0x6D}, {0x98,0x6E},
+ {0x98,0x6F}, {0x98,0x70}, {0x98,0x71}, {0x98,0x72},
+ {0x98,0x73}, {0x98,0x74}, {0x98,0x75}, {0x98,0x76},
+ {0x98,0x77}, {0x98,0x78}, {0x98,0x79}, {0x98,0x7A},
+ {0x98,0x7B}, {0x98,0x7C}, {0x98,0x7D}, {0x98,0x7E},
+ {0x98,0xA1}, {0x98,0xA2}, {0x98,0xA3}, {0x98,0xA4},
+ {0x98,0xA5}, {0x98,0xA6}, {0x98,0xA7}, {0x98,0xA8},
+ {0x98,0xA9}, {0x98,0xAA}, {0x98,0xAB}, {0x98,0xAC},
+ {0x98,0xAD}, {0x98,0xAE}, {0x98,0xAF}, {0x98,0xB0},
+ {0x98,0xB1}, {0x98,0xB2}, {0x98,0xB3}, {0x98,0xB4},
+ {0x98,0xB5}, {0x98,0xB6}, {0x98,0xB7}, {0x98,0xB8},
+ {0x98,0xB9}, {0x98,0xBA}, {0x98,0xBB}, {0x98,0xBC},
+ {0x98,0xBD}, {0x98,0xBE}, {0x98,0xBF}, {0x98,0xC0},
+ {0x98,0xC1}, {0x98,0xC2}, {0x98,0xC3}, {0x98,0xC4},
+ {0x98,0xC5}, {0x98,0xC6}, {0x98,0xC7}, {0x98,0xC8},
+ {0x98,0xC9}, {0x98,0xCA}, {0x98,0xCB}, {0x98,0xCC},
+ {0x98,0xCD}, {0x98,0xCE}, {0x98,0xCF}, {0x98,0xD0},
+ {0x98,0xD1}, {0x98,0xD2}, {0x98,0xD3}, {0x98,0xD4},
+ {0x98,0xD5}, {0x98,0xD6}, {0x98,0xD7}, {0x98,0xD8},
+ {0x98,0xD9}, {0x98,0xDA}, {0x98,0xDB}, {0x98,0xDC},
+ {0x98,0xDD}, {0x98,0xDE}, {0x98,0xDF}, {0x98,0xE0},
+ {0x98,0xE1}, {0x98,0xE2}, {0x98,0xE3}, {0x98,0xE4},
+ {0x98,0xE5}, {0x98,0xE6}, {0x98,0xE7}, {0x98,0xE8},
+ {0x98,0xE9}, {0x98,0xEA}, {0x98,0xEB}, {0x98,0xEC},
+ {0x98,0xED}, {0x98,0xEE}, {0x98,0xEF}, {0x98,0xF0},
+ {0x98,0xF1}, {0x98,0xF2}, {0x98,0xF3}, {0x98,0xF4},
+ {0x98,0xF5}, {0x98,0xF6}, {0x98,0xF7}, {0x98,0xF8},
+ {0x98,0xF9}, {0x98,0xFA}, {0x98,0xFB}, {0x98,0xFC},
+ {0x98,0xFD}, {0x98,0xFE}, {0x99,0x40}, {0x99,0x41},
+ {0x99,0x42}, {0x99,0x43}, {0x99,0x44}, {0x99,0x45},
+ {0x99,0x46}, {0x99,0x47}, {0x99,0x48}, {0x99,0x49},
+ {0x99,0x4A}, {0x99,0x4B}, {0x99,0x4C}, {0x99,0x4D},
+ {0x99,0x4E}, {0x99,0x4F}, {0x99,0x50}, {0x99,0x51},
+ {0x99,0x52}, {0x99,0x53}, {0x99,0x54}, {0x99,0x55},
+ {0x99,0x56}, {0x99,0x57}, {0x99,0x58}, {0x99,0x59},
+ {0x99,0x5A}, {0x99,0x5B}, {0x99,0x5C}, {0x99,0x5D},
+ {0x99,0x5E}, {0x99,0x5F}, {0x99,0x60}, {0x99,0x61},
+ {0x99,0x62}, {0x99,0x63}, {0x99,0x64}, {0x99,0x65},
+ {0x99,0x66}, {0x99,0x67}, {0x99,0x68}, {0x99,0x69},
+ {0x99,0x6A}, {0x99,0x6B}, {0x99,0x6C}, {0x99,0x6D},
+ {0x99,0x6E}, {0x99,0x6F}, {0x99,0x70}, {0x99,0x71},
+ {0x99,0x72}, {0x99,0x73}, {0x99,0x74}, {0x99,0x75},
+ {0x99,0x76}, {0x99,0x77}, {0x99,0x78}, {0x99,0x79},
+ {0x99,0x7A}, {0x99,0x7B}, {0x99,0x7C}, {0x99,0x7D},
+ {0x99,0x7E}, {0x99,0xA1}, {0x99,0xA2}, {0x99,0xA3},
+ {0x99,0xA4}, {0x99,0xA5}, {0x99,0xA6}, {0x99,0xA7},
+ {0x99,0xA8}, {0x99,0xA9}, {0x99,0xAA}, {0x99,0xAB},
+ {0x99,0xAC}, {0x99,0xAD}, {0x99,0xAE}, {0x99,0xAF},
+ {0x99,0xB0}, {0x99,0xB1}, {0x99,0xB2}, {0x99,0xB3},
+ {0x99,0xB4}, {0x99,0xB5}, {0x99,0xB6}, {0x99,0xB7},
+ {0x99,0xB8}, {0x99,0xB9}, {0x99,0xBA}, {0x99,0xBB},
+ {0x99,0xBC}, {0x99,0xBD}, {0x99,0xBE}, {0x99,0xBF},
+ {0x99,0xC0}, {0x99,0xC1}, {0x99,0xC2}, {0x99,0xC3},
+ {0x99,0xC4}, {0x99,0xC5}, {0x99,0xC6}, {0x99,0xC7},
+ {0x99,0xC8}, {0x99,0xC9}, {0x99,0xCA}, {0x99,0xCB},
+ {0x99,0xCC}, {0x99,0xCD}, {0x99,0xCE}, {0x99,0xCF},
+ {0x99,0xD0}, {0x99,0xD1}, {0x99,0xD2}, {0x99,0xD3},
+ {0x99,0xD4}, {0x99,0xD5}, {0x99,0xD6}, {0x99,0xD7},
+ {0x99,0xD8}, {0x99,0xD9}, {0x99,0xDA}, {0x99,0xDB},
+ {0x99,0xDC}, {0x99,0xDD}, {0x99,0xDE}, {0x99,0xDF},
+ {0x99,0xE0}, {0x99,0xE1}, {0x99,0xE2}, {0x99,0xE3},
+ {0x99,0xE4}, {0x99,0xE5}, {0x99,0xE6}, {0x99,0xE7},
+ {0x99,0xE8}, {0x99,0xE9}, {0x99,0xEA}, {0x99,0xEB},
+ {0x99,0xEC}, {0x99,0xED}, {0x99,0xEE}, {0x99,0xEF},
+ {0x99,0xF0}, {0x99,0xF1}, {0x99,0xF2}, {0x99,0xF3},
+ {0x99,0xF4}, {0x99,0xF5}, {0x99,0xF6}, {0x99,0xF7},
+ {0x99,0xF8}, {0x99,0xF9}, {0x99,0xFA}, {0x99,0xFB},
+ {0x99,0xFC}, {0x99,0xFD}, {0x99,0xFE}, {0x9A,0x40},
+ {0x9A,0x41}, {0x9A,0x42}, {0x9A,0x43}, {0x9A,0x44},
+ {0x9A,0x45}, {0x9A,0x46}, {0x9A,0x47}, {0x9A,0x48},
+ {0x9A,0x49}, {0x9A,0x4A}, {0x9A,0x4B}, {0x9A,0x4C},
+ {0x9A,0x4D}, {0x9A,0x4E}, {0x9A,0x4F}, {0x9A,0x50},
+ {0x9A,0x51}, {0x9A,0x52}, {0x9A,0x53}, {0x9A,0x54},
+ {0x9A,0x55}, {0x9A,0x56}, {0x9A,0x57}, {0x9A,0x58},
+ {0x9A,0x59}, {0x9A,0x5A}, {0x9A,0x5B}, {0x9A,0x5C},
+ {0x9A,0x5D}, {0x9A,0x5E}, {0x9A,0x5F}, {0x9A,0x60},
+ {0x9A,0x61}, {0x9A,0x62}, {0x9A,0x63}, {0x9A,0x64},
+ {0x9A,0x65}, {0x9A,0x66}, {0x9A,0x67}, {0x9A,0x68},
+ {0x9A,0x69}, {0x9A,0x6A}, {0x9A,0x6B}, {0x9A,0x6C},
+ {0x9A,0x6D}, {0x9A,0x6E}, {0x9A,0x6F}, {0x9A,0x70},
+ {0x9A,0x71}, {0x9A,0x72}, {0x9A,0x73}, {0x9A,0x74},
+ {0x9A,0x75}, {0x9A,0x76}, {0x9A,0x77}, {0x9A,0x78},
+ {0x9A,0x79}, {0x9A,0x7A}, {0x9A,0x7B}, {0x9A,0x7C},
+ {0x9A,0x7D}, {0x9A,0x7E}, {0x9A,0xA1}, {0x9A,0xA2},
+ {0x9A,0xA3}, {0x9A,0xA4}, {0x9A,0xA5}, {0x9A,0xA6},
+ {0x9A,0xA7}, {0x9A,0xA8}, {0x9A,0xA9}, {0x9A,0xAA},
+ {0x9A,0xAB}, {0x9A,0xAC}, {0x9A,0xAD}, {0x9A,0xAE},
+ {0x9A,0xAF}, {0x9A,0xB0}, {0x9A,0xB1}, {0x9A,0xB2},
+ {0x9A,0xB3}, {0x9A,0xB4}, {0x9A,0xB5}, {0x9A,0xB6},
+ {0x9A,0xB7}, {0x9A,0xB8}, {0x9A,0xB9}, {0x9A,0xBA},
+ {0x9A,0xBB}, {0x9A,0xBC}, {0x9A,0xBD}, {0x9A,0xBE},
+ {0x9A,0xBF}, {0x9A,0xC0}, {0x9A,0xC1}, {0x9A,0xC2},
+ {0x9A,0xC3}, {0x9A,0xC4}, {0x9A,0xC5}, {0x9A,0xC6},
+ {0x9A,0xC7}, {0x9A,0xC8}, {0x9A,0xC9}, {0x9A,0xCA},
+ {0x9A,0xCB}, {0x9A,0xCC}, {0x9A,0xCD}, {0x9A,0xCE},
+ {0x9A,0xCF}, {0x9A,0xD0}, {0x9A,0xD1}, {0x9A,0xD2},
+ {0x9A,0xD3}, {0x9A,0xD4}, {0x9A,0xD5}, {0x9A,0xD6},
+ {0x9A,0xD7}, {0x9A,0xD8}, {0x9A,0xD9}, {0x9A,0xDA},
+ {0x9A,0xDB}, {0x9A,0xDC}, {0x9A,0xDD}, {0x9A,0xDE},
+ {0x9A,0xDF}, {0x9A,0xE0}, {0x9A,0xE1}, {0x9A,0xE2},
+ {0x9A,0xE3}, {0x9A,0xE4}, {0x9A,0xE5}, {0x9A,0xE6},
+ {0x9A,0xE7}, {0x9A,0xE8}, {0x9A,0xE9}, {0x9A,0xEA},
+ {0x9A,0xEB}, {0x9A,0xEC}, {0x9A,0xED}, {0x9A,0xEE},
+ {0x9A,0xEF}, {0x9A,0xF0}, {0x9A,0xF1}, {0x9A,0xF2},
+ {0x9A,0xF3}, {0x9A,0xF4}, {0x9A,0xF5}, {0x9A,0xF6},
+ {0x9A,0xF7}, {0x9A,0xF8}, {0x9A,0xF9}, {0x9A,0xFA},
+ {0x9A,0xFB}, {0x9A,0xFC}, {0x9A,0xFD}, {0x9A,0xFE},
+ {0x9B,0x40}, {0x9B,0x41}, {0x9B,0x42}, {0x9B,0x43},
+ {0x9B,0x44}, {0x9B,0x45}, {0x9B,0x46}, {0x9B,0x47},
+ {0x9B,0x48}, {0x9B,0x49}, {0x9B,0x4A}, {0x9B,0x4B},
+ {0x9B,0x4C}, {0x9B,0x4D}, {0x9B,0x4E}, {0x9B,0x4F},
+ {0x9B,0x50}, {0x9B,0x51}, {0x9B,0x52}, {0x9B,0x53},
+ {0x9B,0x54}, {0x9B,0x55}, {0x9B,0x56}, {0x9B,0x57},
+ {0x9B,0x58}, {0x9B,0x59}, {0x9B,0x5A}, {0x9B,0x5B},
+ {0x9B,0x5C}, {0x9B,0x5D}, {0x9B,0x5E}, {0x9B,0x5F},
+ {0x9B,0x60}, {0x9B,0x61}, {0x9B,0x62}, {0x9B,0x63},
+ {0x9B,0x64}, {0x9B,0x65}, {0x9B,0x66}, {0x9B,0x67},
+ {0x9B,0x68}, {0x9B,0x69}, {0x9B,0x6A}, {0x9B,0x6B},
+ {0x9B,0x6C}, {0x9B,0x6D}, {0x9B,0x6E}, {0x9B,0x6F},
+ {0x9B,0x70}, {0x9B,0x71}, {0x9B,0x72}, {0x9B,0x73},
+ {0x9B,0x74}, {0x9B,0x75}, {0xEF,0xF9}, {0x9B,0x77},
+ {0xC5,0xF7}, {0x9B,0x79}, {0x9B,0x7A}, {0xF5,0xE8},
+ {0x9B,0x7C}, {0x9B,0x7D}, {0x9B,0x7E}, {0x9B,0xA1},
+ {0x9B,0xA2}, {0x9B,0xA3}, {0x9B,0xA4}, {0x9B,0xA5},
+ {0x9B,0xA6}, {0x9B,0xA7}, {0x9B,0xA8}, {0x9B,0xA9},
+ {0x9B,0xAA}, {0x9B,0xAB}, {0x9B,0xAC}, {0x9B,0xAD},
+ {0x9B,0xAE}, {0x9B,0xAF}, {0x9B,0xB0}, {0x9B,0xB1},
+ {0x9B,0xB2}, {0x9B,0xB3}, {0x9B,0xB4}, {0x9B,0xB5},
+ {0x9B,0xB6}, {0x9B,0xB7}, {0x9B,0xB8}, {0x9B,0xB9},
+ {0x9B,0xBA}, {0x9B,0xBB}, {0x9B,0xBC}, {0x9B,0xBD},
+ {0x9B,0xBE}, {0x9B,0xBF}, {0x9B,0xC0}, {0x9B,0xC1},
+ {0x9B,0xC2}, {0x9B,0xC3}, {0x9B,0xC4}, {0x9B,0xC5},
+ {0xE8,0xCD}, {0x9B,0xC7}, {0x9B,0xC8}, {0x9B,0xC9},
+ {0x9B,0xCA}, {0x9B,0xCB}, {0x9B,0xCC}, {0x9B,0xCD},
+ {0x9B,0xCE}, {0x9B,0xCF}, {0x9B,0xD0}, {0x9B,0xD1},
+ {0x9B,0xD2}, {0x9B,0xD3}, {0x9B,0xD4}, {0x9B,0xD5},
+ {0x9B,0xD6}, {0x9B,0xD7}, {0x9B,0xD8}, {0x9B,0xD9},
+ {0x9B,0xDA}, {0x9B,0xDB}, {0x9B,0xDC}, {0x9B,0xDD},
+ {0xD0,0xC0}, {0x9B,0xDF}, {0x9B,0xE0}, {0x9B,0xE1},
+ {0x9B,0xE2}, {0x9B,0xE3}, {0x9B,0xE4}, {0x9B,0xE5},
+ {0x9B,0xE6}, {0x9B,0xE7}, {0x9B,0xE8}, {0x9B,0xE9},
+ {0x9B,0xEA}, {0x9B,0xEB}, {0xFD,0x64}, {0x9B,0xED},
+ {0x9B,0xEE}, {0x9B,0xEF}, {0x9B,0xF0}, {0x9B,0xF1},
+ {0x9B,0xF2}, {0x9B,0xF3}, {0x9B,0xF4}, {0x9B,0xF5},
+ {0xBF,0x47}, {0x9B,0xF7}, {0x9B,0xF8}, {0x9B,0xF9},
+ {0x9B,0xFA}, {0x9B,0xFB}, {0x9B,0xFC}, {0x9B,0xFD},
+ {0x9B,0xFE}, {0x9C,0x40}, {0x9C,0x41}, {0xEB,0xC9},
+ {0x9C,0x43}, {0x9C,0x44}, {0x9C,0x45}, {0x9C,0x46},
+ {0x9C,0x47}, {0x9C,0x48}, {0x9C,0x49}, {0x9C,0x4A},
+ {0x9C,0x4B}, {0x9C,0x4C}, {0x9C,0x4D}, {0x9C,0x4E},
+ {0x9C,0x4F}, {0x9C,0x50}, {0x9C,0x51}, {0x9C,0x52},
+ {0xCD,0xE7}, {0x9C,0x54}, {0x9C,0x55}, {0x9C,0x56},
+ {0x9C,0x57}, {0x9C,0x58}, {0x9C,0x59}, {0x9C,0x5A},
+ {0x9C,0x5B}, {0x9C,0x5C}, {0x9C,0x5D}, {0x9C,0x5E},
+ {0x9C,0x5F}, {0x9C,0x60}, {0x9C,0x61}, {0xC0,0xE7},
+ {0x9C,0x63}, {0x9C,0x64}, {0x9C,0x65}, {0x9C,0x66},
+ {0x9C,0x67}, {0xDC,0x52}, {0x9C,0x69}, {0x9C,0x6A},
+ {0xF8,0x6D}, {0x9C,0x6C}, {0x9C,0x6D}, {0x9C,0x6E},
+ {0x9C,0x6F}, {0x9C,0x70}, {0x9C,0x71}, {0x9C,0x72},
+ {0x9C,0x73}, {0x9C,0x74}, {0x9C,0x75}, {0x9C,0x76},
+ {0xDB,0x5D}, {0x9C,0x78}, {0x9C,0x79}, {0x9C,0x7A},
+ {0x9C,0x7B}, {0x9C,0x7C}, {0x9C,0x7D}, {0x9C,0x7E},
+ {0x9C,0xA1}, {0x9C,0xA2}, {0x9C,0xA3}, {0x9C,0xA4},
+ {0x9C,0xA5}, {0x9C,0xA6}, {0x9C,0xA7}, {0x9C,0xA8},
+ {0x9C,0xA9}, {0x9C,0xAA}, {0x9C,0xAB}, {0x9C,0xAC},
+ {0x9C,0xAD}, {0x9C,0xAE}, {0x9C,0xAF}, {0x9C,0xB0},
+ {0x9C,0xB1}, {0x9C,0xB2}, {0x9C,0xB3}, {0x9C,0xB4},
+ {0x9C,0xB5}, {0x9C,0xB6}, {0x9C,0xB7}, {0x9C,0xB8},
+ {0x9C,0xB9}, {0x9C,0xBA}, {0x9C,0xBB}, {0xC9,0x5C},
+ {0xAF,0xB0}, {0x9C,0xBE}, {0x9C,0xBF}, {0x9C,0xC0},
+ {0x9C,0xC1}, {0x9C,0xC2}, {0x9C,0xC3}, {0x9C,0xC4},
+ {0x9C,0xC5}, {0x9C,0xC6}, {0x9C,0xC7}, {0x9C,0xC8},
+ {0x9C,0xC9}, {0x9C,0xCA}, {0x9C,0xCB}, {0x9C,0xCC},
+ {0x9C,0xCD}, {0x9C,0xCE}, {0x9C,0xCF}, {0xD4,0xD1},
+ {0x9C,0xD1}, {0x9C,0xD2}, {0x9C,0xD3}, {0x9C,0xD4},
+ {0x9C,0xD5}, {0x9C,0xD6}, {0x9C,0xD7}, {0x9C,0xD8},
+ {0x9C,0xD9}, {0x9C,0xDA}, {0x9C,0xDB}, {0x9C,0xDC},
+ {0x9C,0xDD}, {0x9C,0xDE}, {0x9C,0xDF}, {0x9C,0xE0},
+ {0x9C,0xE1}, {0x9C,0xE2}, {0x9C,0xE3}, {0x9C,0xE4},
+ {0x9C,0xE5}, {0x9C,0xE6}, {0x9C,0xE7}, {0x9C,0xE8},
+ {0x9C,0xE9}, {0x9C,0xEA}, {0x9C,0xEB}, {0x9C,0xEC},
+ {0x9C,0xED}, {0x9C,0xEE}, {0x9C,0xEF}, {0x9C,0xF0},
+ {0x9C,0xF1}, {0x9C,0xF2}, {0x9C,0xF3}, {0x9C,0xF4},
+ {0x9C,0xF5}, {0x9C,0xF6}, {0x9C,0xF7}, {0x9C,0xF8},
+ {0x9C,0xF9}, {0x9C,0xFA}, {0x9C,0xFB}, {0x9C,0xFC},
+ {0x9C,0xFD}, {0x9C,0xFE}, {0x9D,0x40}, {0x9D,0x41},
+ {0x9D,0x42}, {0x9D,0x43}, {0x9D,0x44}, {0x9D,0x45},
+ {0x9D,0x46}, {0x9D,0x47}, {0x9D,0x48}, {0x9D,0x49},
+ {0x9D,0x4A}, {0x9D,0x4B}, {0x9D,0x4C}, {0x9D,0x4D},
+ {0x9D,0x4E}, {0x9D,0x4F}, {0x9D,0x50}, {0x9D,0x51},
+ {0x9D,0x52}, {0x9D,0x53}, {0x9D,0x54}, {0x9D,0x55},
+ {0x9D,0x56}, {0xE0,0x7C}, {0x9D,0x58}, {0x9D,0x59},
+ {0xB5,0xAE}, {0x9D,0x5B}, {0x9D,0x5C}, {0x9D,0x5D},
+ {0x9D,0x5E}, {0x9D,0x5F}, {0x9D,0x60}, {0x9D,0x61},
+ {0x9D,0x62}, {0x9D,0x63}, {0x9D,0x64}, {0x9D,0x65},
+ {0x9D,0x66}, {0x9D,0x67}, {0x9D,0x68}, {0x9D,0x69},
+ {0x9D,0x6A}, {0x9D,0x6B}, {0x9D,0x6C}, {0x9D,0x6D},
+ {0x9D,0x6E}, {0x9D,0x6F}, {0x9D,0x70}, {0x9D,0x71},
+ {0x9D,0x72}, {0x9D,0x73}, {0x9D,0x74}, {0x9D,0x75},
+ {0x9D,0x76}, {0x9D,0x77}, {0x9D,0x78}, {0x9D,0x79},
+ {0x9D,0x7A}, {0x9D,0x7B}, {0x9D,0x7C}, {0x9D,0x7D},
+ {0x9D,0x7E}, {0x9D,0xA1}, {0x9D,0xA2}, {0x9D,0xA3},
+ {0x9D,0xA4}, {0x9D,0xA5}, {0x9D,0xA6}, {0x9D,0xA7},
+ {0x9D,0xA8}, {0x9D,0xA9}, {0x9D,0xAA}, {0x9D,0xAB},
+ {0x9D,0xAC}, {0x9D,0xAD}, {0x9D,0xAE}, {0x9D,0xAF},
+ {0x9D,0xB0}, {0x9D,0xB1}, {0x9D,0xB2}, {0x9D,0xB3},
+ {0x9D,0xB4}, {0x9D,0xB5}, {0x9D,0xB6}, {0x9D,0xB7},
+ {0x9D,0xB8}, {0x9D,0xB9}, {0x9D,0xBA}, {0x9D,0xBB},
+ {0x9D,0xBC}, {0x9D,0xBD}, {0x9D,0xBE}, {0x9D,0xBF},
+ {0x9D,0xC0}, {0x9D,0xC1}, {0x9D,0xC2}, {0x9D,0xC3},
+ {0xA9,0xE4}, {0x9D,0xC5}, {0x9D,0xC6}, {0x9D,0xC7},
+ {0x9D,0xC8}, {0x9D,0xC9}, {0x9D,0xCA}, {0x9D,0xCB},
+ {0x9D,0xCC}, {0x9D,0xCD}, {0x9D,0xCE}, {0x9D,0xCF},
+ {0x9D,0xD0}, {0x9D,0xD1}, {0x9D,0xD2}, {0x9D,0xD3},
+ {0x9D,0xD4}, {0x9D,0xD5}, {0x9D,0xD6}, {0x9D,0xD7},
+ {0x9D,0xD8}, {0x9D,0xD9}, {0x9D,0xDA}, {0x9D,0xDB},
+ {0x9D,0xDC}, {0x9D,0xDD}, {0x9D,0xDE}, {0x9D,0xDF},
+ {0x9D,0xE0}, {0x9D,0xE1}, {0x9D,0xE2}, {0x9D,0xE3},
+ {0x9D,0xE4}, {0x9D,0xE5}, {0x9D,0xE6}, {0x9D,0xE7},
+ {0x9D,0xE8}, {0x9D,0xE9}, {0x9D,0xEA}, {0x9D,0xEB},
+ {0x9D,0xEC}, {0x9D,0xED}, {0x9D,0xEE}, {0x9D,0xEF},
+ {0x9D,0xF0}, {0x9D,0xF1}, {0x9D,0xF2}, {0x9D,0xF3},
+ {0x9D,0xF4}, {0x9D,0xF5}, {0x9D,0xF6}, {0x9D,0xF7},
+ {0x9D,0xF8}, {0x9D,0xF9}, {0x9D,0xFA}, {0x9D,0xFB},
+ {0x9D,0xFC}, {0x9D,0xFD}, {0x9D,0xFE}, {0x9E,0x40},
+ {0x9E,0x41}, {0x9E,0x42}, {0x9E,0x43}, {0x9E,0x44},
+ {0x9E,0x45}, {0x9E,0x46}, {0x9E,0x47}, {0x9E,0x48},
+ {0x9E,0x49}, {0x9E,0x4A}, {0x9E,0x4B}, {0x9E,0x4C},
+ {0x9E,0x4D}, {0x9E,0x4E}, {0x9E,0x4F}, {0x9E,0x50},
+ {0x9E,0x51}, {0x9E,0x52}, {0x9E,0x53}, {0x9E,0x54},
+ {0x9E,0x55}, {0x9E,0x56}, {0x9E,0x57}, {0x9E,0x58},
+ {0x9E,0x59}, {0x9E,0x5A}, {0x9E,0x5B}, {0x9E,0x5C},
+ {0x9E,0x5D}, {0x9E,0x5E}, {0x9E,0x5F}, {0x9E,0x60},
+ {0x9E,0x61}, {0x9E,0x62}, {0x9E,0x63}, {0x9E,0x64},
+ {0x9E,0x65}, {0x9E,0x66}, {0x9E,0x67}, {0x9E,0x68},
+ {0x9E,0x69}, {0x9E,0x6A}, {0x9E,0x6B}, {0x9E,0x6C},
+ {0x9E,0x6D}, {0x9E,0x6E}, {0x9E,0x6F}, {0x9E,0x70},
+ {0x9E,0x71}, {0x9E,0x72}, {0x9E,0x73}, {0x9E,0x74},
+ {0x9E,0x75}, {0x9E,0x76}, {0x9E,0x77}, {0x9E,0x78},
+ {0x9E,0x79}, {0x9E,0x7A}, {0x9E,0x7B}, {0x9E,0x7C},
+ {0x9E,0x7D}, {0x9E,0x7E}, {0x9E,0xA1}, {0x9E,0xA2},
+ {0x9E,0xA3}, {0x9E,0xA4}, {0x9E,0xA5}, {0x9E,0xA6},
+ {0x9E,0xA7}, {0x9E,0xA8}, {0xAB,0xEC}, {0x9E,0xAA},
+ {0x9E,0xAB}, {0x9E,0xAC}, {0x9E,0xAD}, {0x9E,0xAE},
+ {0x9E,0xAF}, {0x9E,0xB0}, {0x9E,0xB1}, {0x9E,0xB2},
+ {0x9E,0xB3}, {0x9E,0xB4}, {0x9E,0xB5}, {0x9E,0xB6},
+ {0x9E,0xB7}, {0x9E,0xB8}, {0x9E,0xB9}, {0x9E,0xBA},
+ {0x9E,0xBB}, {0x9E,0xBC}, {0x9E,0xBD}, {0x9E,0xBE},
+ {0x9E,0xBF}, {0x9E,0xC0}, {0x9E,0xC1}, {0x9E,0xC2},
+ {0x9E,0xC3}, {0x9E,0xC4}, {0x9E,0xC5}, {0x9E,0xC6},
+ {0x9E,0xC7}, {0x9E,0xC8}, {0x9E,0xC9}, {0x9E,0xCA},
+ {0x9E,0xCB}, {0x9E,0xCC}, {0x9E,0xCD}, {0x9E,0xCE},
+ {0x9E,0xCF}, {0x9E,0xD0}, {0x9E,0xD1}, {0x9E,0xD2},
+ {0x9E,0xD3}, {0x9E,0xD4}, {0x9E,0xD5}, {0x9E,0xD6},
+ {0x9E,0xD7}, {0x9E,0xD8}, {0x9E,0xD9}, {0x9E,0xDA},
+ {0x9E,0xDB}, {0x9E,0xDC}, {0x9E,0xDD}, {0x9E,0xDE},
+ {0x9E,0xDF}, {0x9E,0xE0}, {0x9E,0xE1}, {0x9E,0xE2},
+ {0x9E,0xE3}, {0x9E,0xE4}, {0x9E,0xE5}, {0x9E,0xE6},
+ {0x9E,0xE7}, {0x9E,0xE8}, {0x9E,0xE9}, {0x9E,0xEA},
+ {0x9E,0xEB}, {0x9E,0xEC}, {0x9E,0xED}, {0x9E,0xEE},
+ {0xDE,0xCD}, {0x9E,0xF0}, {0x9E,0xF1}, {0x9E,0xF2},
+ {0x9E,0xF3}, {0x9E,0xF4}, {0x9E,0xF5}, {0x9E,0xF6},
+ {0x9E,0xF7}, {0x9E,0xF8}, {0x9E,0xF9}, {0x9E,0xFA},
+ {0x9E,0xFB}, {0x9E,0xFC}, {0xC9,0xFC}, {0x9E,0xFE},
+ {0x9F,0x40}, {0x9F,0x41}, {0x9F,0x42}, {0x9F,0x43},
+ {0x9F,0x44}, {0x9F,0x45}, {0x9F,0x46}, {0x9F,0x47},
+ {0x9F,0x48}, {0x9F,0x49}, {0x9F,0x4A}, {0x9F,0x4B},
+ {0x9F,0x4C}, {0x9F,0x4D}, {0x9F,0x4E}, {0x9F,0x4F},
+ {0x9F,0x50}, {0x9F,0x51}, {0x9F,0x52}, {0x9F,0x53},
+ {0x9F,0x54}, {0x9F,0x55}, {0x9F,0x56}, {0x9F,0x57},
+ {0x9F,0x58}, {0x9F,0x59}, {0x9F,0x5A}, {0x9F,0x5B},
+ {0x9F,0x5C}, {0x9F,0x5D}, {0x9F,0x5E}, {0x9F,0x5F},
+ {0xF9,0xC4}, {0x9F,0x61}, {0x9F,0x62}, {0x9F,0x63},
+ {0x9F,0x64}, {0x9F,0x65}, {0x91,0xBE}, {0x9F,0x67},
+ {0x9F,0x68}, {0x9F,0x69}, {0x9F,0x6A}, {0x9F,0x6B},
+ {0x9F,0x6C}, {0x9F,0x6D}, {0x9F,0x6E}, {0x9F,0x6F},
+ {0x9F,0x70}, {0x9F,0x71}, {0x9F,0x72}, {0x9F,0x73},
+ {0x9F,0x74}, {0x9F,0x75}, {0x9F,0x76}, {0x9F,0x77},
+ {0x9F,0x78}, {0x9F,0x79}, {0x9F,0x7A}, {0x9F,0x7B},
+ {0x9F,0x7C}, {0x9F,0x7D}, {0x9F,0x7E}, {0x9F,0xA1},
+ {0x9F,0xA2}, {0x9F,0xA3}, {0x9F,0xA4}, {0x9F,0xA5},
+ {0x9F,0xA6}, {0x9F,0xA7}, {0x9F,0xA8}, {0x9F,0xA9},
+ {0x9F,0xAA}, {0x9F,0xAB}, {0x9F,0xAC}, {0x9F,0xAD},
+ {0x9F,0xAE}, {0x9F,0xAF}, {0x9F,0xB0}, {0x9F,0xB1},
+ {0x9F,0xB2}, {0x9F,0xB3}, {0x9F,0xB4}, {0x9F,0xB5},
+ {0x9F,0xB6}, {0x9F,0xB7}, {0x9F,0xB8}, {0x9F,0xB9},
+ {0x9F,0xBA}, {0x9F,0xBB}, {0x9F,0xBC}, {0x9F,0xBD},
+ {0x9F,0xBE}, {0x9F,0xBF}, {0x9F,0xC0}, {0x9F,0xC1},
+ {0x9F,0xC2}, {0x9F,0xC3}, {0x9F,0xC4}, {0x9F,0xC5},
+ {0x9F,0xC6}, {0x9F,0xC7}, {0x9F,0xC8}, {0x9F,0xC9},
+ {0x9F,0xCA}, {0xB9,0xB0}, {0x9F,0xCC}, {0x9F,0xCD},
+ {0x9F,0xCE}, {0x9F,0xCF}, {0x9F,0xD0}, {0x9F,0xD1},
+ {0x9F,0xD2}, {0x9F,0xD3}, {0x9F,0xD4}, {0x9F,0xD5},
+ {0x9F,0xD6}, {0x9F,0xD7}, {0x93,0x61}, {0x9F,0xD9},
+ {0x9F,0xDA}, {0x9F,0xDB}, {0x9F,0xDC}, {0x9F,0xDD},
+ {0x9F,0xDE}, {0x9F,0xDF}, {0x9F,0xE0}, {0x9F,0xE1},
+ {0x9F,0xE2}, {0x9F,0xE3}, {0x9F,0xE4}, {0x9F,0xE5},
+ {0x9F,0xE6}, {0x9F,0xE7}, {0x9F,0xE8}, {0x9F,0xE9},
+ {0x9F,0xEA}, {0x9F,0xEB}, {0x9F,0xEC}, {0x9F,0xED},
+ {0x9F,0xEE}, {0x9F,0xEF}, {0x9F,0xF0}, {0x9F,0xF1},
+ {0x9F,0xF2}, {0x9F,0xF3}, {0x9F,0xF4}, {0x9F,0xF5},
+ {0x9F,0xF6}, {0x9F,0xF7}, {0x9F,0xF8}, {0x9F,0xF9},
+ {0x9F,0xFA}, {0x9F,0xFB}, {0x9F,0xFC}, {0x9F,0xFD},
+ {0x9F,0xFE}, {0xA0,0x40}, {0xA0,0x41}, {0xA0,0x42},
+ {0xA0,0x43}, {0xA0,0x44}, {0xA0,0x45}, {0xA0,0x46},
+ {0xA0,0x47}, {0xA0,0x48}, {0xA0,0x49}, {0xA0,0x4A},
+ {0xA0,0x4B}, {0xA0,0x4C}, {0xA0,0x4D}, {0xA0,0x4E},
+ {0xA0,0x4F}, {0xA0,0x50}, {0xA0,0x51}, {0xA0,0x52},
+ {0xA0,0x53}, {0xA0,0x54}, {0xA0,0x55}, {0xA0,0x56},
+ {0xA0,0x57}, {0xA0,0x58}, {0xA0,0x59}, {0xA0,0x5A},
+ {0xA0,0x5B}, {0xA0,0x5C}, {0xA0,0x5D}, {0xA0,0x5E},
+ {0xA0,0x5F}, {0xA0,0x60}, {0xA0,0x61}, {0xA0,0x62},
+ {0x8F,0xB6}, {0xA0,0x64}, {0xA0,0x65}, {0xA0,0x66},
+ {0xA0,0x67}, {0xA0,0x68}, {0xA0,0x69}, {0xA0,0x6A},
+ {0xA0,0x6B}, {0xA0,0x6C}, {0xA0,0x6D}, {0xA0,0x6E},
+ {0xA0,0x6F}, {0xA0,0x70}, {0xA0,0x71}, {0xA0,0x72},
+ {0xA0,0x73}, {0xA0,0x74}, {0xA0,0x75}, {0xA0,0x76},
+ {0xA9,0xF0}, {0xA0,0x78}, {0xA0,0x79}, {0xA0,0x7A},
+ {0xA0,0x7B}, {0xA0,0x7C}, {0xA0,0x7D}, {0xA0,0x7E},
+ {0xA0,0xA1}, {0xA0,0xA2}, {0xA0,0xA3}, {0xA0,0xA4},
+ {0xA0,0xA5}, {0xA0,0xA6}, {0xA0,0xA7}, {0xA0,0xA8},
+ {0xA0,0xA9}, {0xA0,0xAA}, {0xA0,0xAB}, {0xA0,0xAC},
+ {0xA0,0xAD}, {0xA0,0xAE}, {0xA0,0xAF}, {0xA0,0xB0},
+ {0xA0,0xB1}, {0xA0,0xB2}, {0xA0,0xB3}, {0xA0,0xB4},
+ {0xA0,0xB5}, {0xA0,0xB6}, {0xA0,0xB7}, {0xA0,0xB8},
+ {0xA0,0xB9}, {0xA0,0xBA}, {0xA0,0xBB}, {0xA0,0xBC},
+ {0xA0,0xBD}, {0xA0,0xBE}, {0xA0,0xBF}, {0xA0,0xC0},
+ {0xA0,0xC1}, {0xA0,0xC2}, {0xA0,0xC3}, {0xA0,0xC4},
+ {0xA0,0xC5}, {0xA0,0xC6}, {0xA0,0xC7}, {0xA0,0xC8},
+ {0xA0,0xC9}, {0xA0,0xCA}, {0xA0,0xCB}, {0xA0,0xCC},
+ {0xA0,0xCD}, {0xA0,0xCE}, {0xA0,0xCF}, {0xA0,0xD0},
+ {0xA0,0xD1}, {0xA0,0xD2}, {0xA0,0xD3}, {0xA0,0xD4},
+ {0x94,0x7A}, {0xA0,0xD6}, {0xA0,0xD7}, {0xA0,0xD8},
+ {0xA0,0xD9}, {0xA0,0xDA}, {0xA0,0xDB}, {0xA0,0xDC},
+ {0xA0,0xDD}, {0xA0,0xDE}, {0xDE,0x72}, {0xA0,0xE0},
+ {0xA0,0xE1}, {0xA0,0xE2}, {0xA0,0xE3}, {0x94,0x55},
+ {0xA0,0xE5}, {0xA0,0xE6}, {0xA0,0xE7}, {0xA0,0xE8},
+ {0xA0,0xE9}, {0xA0,0xEA}, {0xA0,0xEB}, {0xA0,0xEC},
+ {0xA0,0xED}, {0xA0,0xEE}, {0xA0,0xEF}, {0xA0,0xF0},
+ {0xA0,0xF1}, {0xA0,0xF2}, {0xA0,0xF3}, {0xA0,0xF4},
+ {0xA0,0xF5}, {0xA0,0xF6}, {0xA0,0xF7}, {0xA0,0xF8},
+ {0xA0,0xF9}, {0xA0,0xFA}, {0xA0,0xFB}, {0xA0,0xFC},
+ {0xA0,0xFD}, {0xA0,0xFE}, {0x81,0x40}, {0x81,0x41},
+ {0x81,0x42}, {0x81,0x43}, {0x81,0x44}, {0x81,0x45},
+ {0x81,0x46}, {0x81,0x47}, {0x81,0x48}, {0x81,0x49},
+ {0x81,0x4A}, {0x81,0x4B}, {0x81,0x4C}, {0x81,0x4D},
+ {0x81,0x4E}, {0x81,0x4F}, {0x81,0x50}, {0x81,0x51},
+ {0x81,0x52}, {0x81,0x53}, {0x81,0x54}, {0x81,0x55},
+ {0x81,0x56}, {0x81,0x57}, {0x81,0x58}, {0x81,0x59},
+ {0x81,0x5A}, {0x81,0x5B}, {0x81,0x5C}, {0x81,0x5D},
+ {0x81,0x5E}, {0x81,0x5F}, {0x81,0x60}, {0x81,0x61},
+ {0x81,0x62}, {0x81,0x63}, {0x81,0x64}, {0x81,0x65},
+ {0x81,0x66}, {0x81,0x67}, {0x81,0x68}, {0x81,0x69},
+ {0x81,0x6A}, {0x81,0x6B}, {0x81,0x6C}, {0x81,0x6D},
+ {0x81,0x6E}, {0x81,0x6F}, {0x81,0x70}, {0x81,0x71},
+ {0x81,0x72}, {0x81,0x73}, {0x81,0x74}, {0x81,0x75},
+ {0x81,0x76}, {0x81,0x77}, {0x81,0x78}, {0x81,0x79},
+ {0x81,0x7A}, {0x81,0x7B}, {0x81,0x7C}, {0x81,0x7D},
+ {0x81,0x7E}, {0x81,0xA1}, {0x81,0xA2}, {0x81,0xA3},
+ {0x81,0xA4}, {0x81,0xA5}, {0x81,0xA6}, {0x81,0xA7},
+ {0x81,0xA8}, {0x81,0xA9}, {0x81,0xAA}, {0x81,0xAB},
+ {0x81,0xAC}, {0x81,0xAD}, {0x81,0xAE}, {0x81,0xAF},
+ {0x81,0xB0}, {0x81,0xB1}, {0x81,0xB2}, {0x81,0xB3},
+ {0x81,0xB4}, {0x81,0xB5}, {0x81,0xB6}, {0x81,0xB7},
+ {0x81,0xB8}, {0x81,0xB9}, {0x81,0xBA}, {0x81,0xBB},
+ {0x81,0xBC}, {0x81,0xBD}, {0x81,0xBE}, {0x81,0xBF},
+ {0x81,0xC0}, {0x81,0xC1}, {0x81,0xC2}, {0x81,0xC3},
+ {0x81,0xC4}, {0x81,0xC5}, {0x81,0xC6}, {0x81,0xC7},
+ {0x81,0xC8}, {0x81,0xC9}, {0x81,0xCA}, {0x81,0xCB},
+ {0x81,0xCC}, {0x81,0xCD}, {0x81,0xCE}, {0x81,0xCF},
+ {0x81,0xD0}, {0x81,0xD1}, {0x81,0xD2}, {0x81,0xD3},
+ {0x81,0xD4}, {0x81,0xD5}, {0x81,0xD6}, {0x81,0xD7},
+ {0x81,0xD8}, {0x81,0xD9}, {0x81,0xDA}, {0x81,0xDB},
+ {0x81,0xDC}, {0x81,0xDD}, {0x81,0xDE}, {0x81,0xDF},
+ {0x81,0xE0}, {0x81,0xE1}, {0x81,0xE2}, {0x81,0xE3},
+ {0x81,0xE4}, {0x81,0xE5}, {0x81,0xE6}, {0x81,0xE7},
+ {0x81,0xE8}, {0x81,0xE9}, {0x81,0xEA}, {0x81,0xEB},
+ {0x81,0xEC}, {0x81,0xED}, {0x81,0xEE}, {0x81,0xEF},
+ {0x81,0xF0}, {0x81,0xF1}, {0x81,0xF2}, {0x81,0xF3},
+ {0x81,0xF4}, {0x81,0xF5}, {0x81,0xF6}, {0x81,0xF7},
+ {0x81,0xF8}, {0x81,0xF9}, {0x81,0xFA}, {0x81,0xFB},
+ {0x81,0xFC}, {0x81,0xFD}, {0x81,0xFE}, {0x82,0x40},
+ {0x82,0x41}, {0x82,0x42}, {0x82,0x43}, {0x82,0x44},
+ {0x82,0x45}, {0x82,0x46}, {0x82,0x47}, {0x82,0x48},
+ {0x82,0x49}, {0x82,0x4A}, {0x82,0x4B}, {0x82,0x4C},
+ {0x82,0x4D}, {0x82,0x4E}, {0x82,0x4F}, {0x82,0x50},
+ {0x82,0x51}, {0x82,0x52}, {0x82,0x53}, {0x82,0x54},
+ {0x82,0x55}, {0x82,0x56}, {0x82,0x57}, {0x82,0x58},
+ {0x82,0x59}, {0x82,0x5A}, {0x82,0x5B}, {0x82,0x5C},
+ {0x82,0x5D}, {0x82,0x5E}, {0x82,0x5F}, {0x82,0x60},
+ {0x82,0x61}, {0x82,0x62}, {0x82,0x63}, {0x82,0x64},
+ {0x82,0x65}, {0x82,0x66}, {0x82,0x67}, {0x82,0x68},
+ {0x82,0x69}, {0x82,0x6A}, {0x82,0x6B}, {0x82,0x6C},
+ {0x82,0x6D}, {0x82,0x6E}, {0x82,0x6F}, {0x82,0x70},
+ {0x82,0x71}, {0x82,0x72}, {0x82,0x73}, {0x82,0x74},
+ {0x82,0x75}, {0x82,0x76}, {0x82,0x77}, {0x82,0x78},
+ {0x82,0x79}, {0x82,0x7A}, {0x82,0x7B}, {0x82,0x7C},
+ {0x82,0x7D}, {0x82,0x7E}, {0x82,0xA1}, {0x82,0xA2},
+ {0x82,0xA3}, {0x82,0xA4}, {0x82,0xA5}, {0x82,0xA6},
+ {0x82,0xA7}, {0x82,0xA8}, {0x82,0xA9}, {0x82,0xAA},
+ {0x82,0xAB}, {0x82,0xAC}, {0x82,0xAD}, {0x82,0xAE},
+ {0x82,0xAF}, {0x82,0xB0}, {0x82,0xB1}, {0x82,0xB2},
+ {0x82,0xB3}, {0x82,0xB4}, {0x82,0xB5}, {0x82,0xB6},
+ {0x82,0xB7}, {0x82,0xB8}, {0x82,0xB9}, {0x82,0xBA},
+ {0x82,0xBB}, {0x82,0xBC}, {0x82,0xBD}, {0x82,0xBE},
+ {0x82,0xBF}, {0x82,0xC0}, {0x82,0xC1}, {0x82,0xC2},
+ {0x82,0xC3}, {0x82,0xC4}, {0x82,0xC5}, {0x82,0xC6},
+ {0x82,0xC7}, {0x82,0xC8}, {0x82,0xC9}, {0x82,0xCA},
+ {0x82,0xCB}, {0x82,0xCC}, {0x82,0xCD}, {0x82,0xCE},
+ {0x82,0xCF}, {0x82,0xD0}, {0x82,0xD1}, {0x82,0xD2},
+ {0x82,0xD3}, {0x82,0xD4}, {0x82,0xD5}, {0x82,0xD6},
+ {0x82,0xD7}, {0x82,0xD8}, {0x82,0xD9}, {0x82,0xDA},
+ {0x82,0xDB}, {0x82,0xDC}, {0x82,0xDD}, {0x82,0xDE},
+ {0x82,0xDF}, {0x82,0xE0}, {0x82,0xE1}, {0x82,0xE2},
+ {0x82,0xE3}, {0x82,0xE4}, {0x82,0xE5}, {0x82,0xE6},
+ {0x82,0xE7}, {0x82,0xE8}, {0x82,0xE9}, {0x82,0xEA},
+ {0x82,0xEB}, {0x82,0xEC}, {0x82,0xED}, {0x82,0xEE},
+ {0x82,0xEF}, {0x82,0xF0}, {0x82,0xF1}, {0x82,0xF2},
+ {0x82,0xF3}, {0x82,0xF4}, {0x82,0xF5}, {0x82,0xF6},
+ {0x82,0xF7}, {0x82,0xF8}, {0x82,0xF9}, {0x82,0xFA},
+ {0x82,0xFB}, {0x82,0xFC}, {0x82,0xFD}, {0x82,0xFE},
+ {0x83,0x40}, {0x83,0x41}, {0x83,0x42}, {0x83,0x43},
+ {0x83,0x44}, {0x83,0x45}, {0x83,0x46}, {0x83,0x47},
+ {0x83,0x48}, {0x83,0x49}, {0x83,0x4A}, {0x83,0x4B},
+ {0x83,0x4C}, {0x83,0x4D}, {0x83,0x4E}, {0x83,0x4F},
+ {0x83,0x50}, {0x83,0x51}, {0x83,0x52}, {0x83,0x53},
+ {0x83,0x54}, {0x83,0x55}, {0x83,0x56}, {0x83,0x57},
+ {0x83,0x58}, {0x83,0x59}, {0x83,0x5A}, {0x83,0x5B},
+ {0x83,0x5C}, {0x83,0x5D}, {0x83,0x5E}, {0x83,0x5F},
+ {0x83,0x60}, {0x83,0x61}, {0x83,0x62}, {0x83,0x63},
+ {0x83,0x64}, {0x83,0x65}, {0x83,0x66}, {0x83,0x67},
+ {0x83,0x68}, {0x83,0x69}, {0x83,0x6A}, {0x83,0x6B},
+ {0x83,0x6C}, {0x83,0x6D}, {0x83,0x6E}, {0x83,0x6F},
+ {0x83,0x70}, {0x83,0x71}, {0x83,0x72}, {0x83,0x73},
+ {0x83,0x74}, {0x83,0x75}, {0x83,0x76}, {0x83,0x77},
+ {0x83,0x78}, {0x83,0x79}, {0x83,0x7A}, {0x83,0x7B},
+ {0x83,0x7C}, {0x83,0x7D}, {0x83,0x7E}, {0x83,0xA1},
+ {0x83,0xA2}, {0x83,0xA3}, {0x83,0xA4}, {0x83,0xA5},
+ {0x83,0xA6}, {0x83,0xA7}, {0x83,0xA8}, {0x83,0xA9},
+ {0x83,0xAA}, {0x83,0xAB}, {0x83,0xAC}, {0x83,0xAD},
+ {0x83,0xAE}, {0x83,0xAF}, {0x83,0xB0}, {0x83,0xB1},
+ {0x83,0xB2}, {0x83,0xB3}, {0x83,0xB4}, {0x83,0xB5},
+ {0x83,0xB6}, {0x83,0xB7}, {0x83,0xB8}, {0x83,0xB9},
+ {0x83,0xBA}, {0x83,0xBB}, {0x83,0xBC}, {0x83,0xBD},
+ {0x83,0xBE}, {0x83,0xBF}, {0x83,0xC0}, {0x83,0xC1},
+ {0x83,0xC2}, {0x83,0xC3}, {0x83,0xC4}, {0x83,0xC5},
+ {0x83,0xC6}, {0x83,0xC7}, {0x83,0xC8}, {0x83,0xC9},
+ {0x83,0xCA}, {0x83,0xCB}, {0x83,0xCC}, {0x83,0xCD},
+ {0x83,0xCE}, {0x83,0xCF}, {0x83,0xD0}, {0x83,0xD1},
+ {0x83,0xD2}, {0x83,0xD3}, {0x83,0xD4}, {0x83,0xD5},
+ {0x83,0xD6}, {0x83,0xD7}, {0x83,0xD8}, {0x83,0xD9},
+ {0x83,0xDA}, {0x83,0xDB}, {0x83,0xDC}, {0x83,0xDD},
+ {0x83,0xDE}, {0x83,0xDF}, {0x83,0xE0}, {0x83,0xE1},
+ {0x83,0xE2}, {0x83,0xE3}, {0x83,0xE4}, {0x83,0xE5},
+ {0x83,0xE6}, {0x83,0xE7}, {0x83,0xE8}, {0x83,0xE9},
+ {0x83,0xEA}, {0x83,0xEB}, {0x83,0xEC}, {0x83,0xED},
+ {0x83,0xEE}, {0x83,0xEF}, {0x83,0xF0}, {0x83,0xF1},
+ {0x83,0xF2}, {0x83,0xF3}, {0x83,0xF4}, {0x83,0xF5},
+ {0x83,0xF6}, {0x83,0xF7}, {0x83,0xF8}, {0x83,0xF9},
+ {0x83,0xFA}, {0x83,0xFB}, {0x83,0xFC}, {0x83,0xFD},
+ {0x83,0xFE}, {0x84,0x40}, {0x84,0x41}, {0x84,0x42},
+ {0x84,0x43}, {0x84,0x44}, {0x84,0x45}, {0x84,0x46},
+ {0x84,0x47}, {0x84,0x48}, {0x84,0x49}, {0x84,0x4A},
+ {0x84,0x4B}, {0x84,0x4C}, {0x84,0x4D}, {0x84,0x4E},
+ {0x84,0x4F}, {0x84,0x50}, {0x84,0x51}, {0x84,0x52},
+ {0x84,0x53}, {0x84,0x54}, {0x84,0x55}, {0x84,0x56},
+ {0x84,0x57}, {0x84,0x58}, {0x84,0x59}, {0x84,0x5A},
+ {0x84,0x5B}, {0x84,0x5C}, {0x84,0x5D}, {0x84,0x5E},
+ {0x84,0x5F}, {0x84,0x60}, {0x84,0x61}, {0x84,0x62},
+ {0x84,0x63}, {0x84,0x64}, {0x84,0x65}, {0x84,0x66},
+ {0x84,0x67}, {0x84,0x68}, {0x84,0x69}, {0x84,0x6A},
+ {0x84,0x6B}, {0x84,0x6C}, {0x84,0x6D}, {0x84,0x6E},
+ {0x84,0x6F}, {0x84,0x70}, {0x84,0x71}, {0x84,0x72},
+ {0x84,0x73}, {0x84,0x74}, {0x84,0x75}, {0x84,0x76},
+ {0x84,0x77}, {0x84,0x78}, {0x84,0x79}, {0x84,0x7A},
+ {0x84,0x7B}, {0x84,0x7C}, {0x84,0x7D}, {0x84,0x7E},
+ {0x84,0xA1}, {0x84,0xA2}, {0x84,0xA3}, {0x84,0xA4},
+ {0x84,0xA5}, {0x84,0xA6}, {0x84,0xA7}, {0x84,0xA8},
+ {0x84,0xA9}, {0x84,0xAA}, {0x84,0xAB}, {0x84,0xAC},
+ {0x84,0xAD}, {0x84,0xAE}, {0x84,0xAF}, {0x84,0xB0},
+ {0x84,0xB1}, {0x84,0xB2}, {0x84,0xB3}, {0x84,0xB4},
+ {0x84,0xB5}, {0x84,0xB6}, {0x84,0xB7}, {0x84,0xB8},
+ {0x84,0xB9}, {0x84,0xBA}, {0x84,0xBB}, {0x84,0xBC},
+ {0x84,0xBD}, {0x84,0xBE}, {0x84,0xBF}, {0x84,0xC0},
+ {0x84,0xC1}, {0x84,0xC2}, {0x84,0xC3}, {0x84,0xC4},
+ {0x84,0xC5}, {0x84,0xC6}, {0x84,0xC7}, {0x84,0xC8},
+ {0x84,0xC9}, {0x84,0xCA}, {0x84,0xCB}, {0x84,0xCC},
+ {0x84,0xCD}, {0x84,0xCE}, {0x84,0xCF}, {0x84,0xD0},
+ {0x84,0xD1}, {0x84,0xD2}, {0x84,0xD3}, {0x84,0xD4},
+ {0x84,0xD5}, {0x84,0xD6}, {0x84,0xD7}, {0x84,0xD8},
+ {0x84,0xD9}, {0x84,0xDA}, {0x84,0xDB}, {0x84,0xDC},
+ {0x84,0xDD}, {0x84,0xDE}, {0x84,0xDF}, {0x84,0xE0},
+ {0x84,0xE1}, {0x84,0xE2}, {0x84,0xE3}, {0x84,0xE4},
+ {0x84,0xE5}, {0x84,0xE6}, {0x84,0xE7}, {0x84,0xE8},
+ {0x84,0xE9}, {0x84,0xEA}, {0x84,0xEB}, {0x84,0xEC},
+ {0x84,0xED}, {0x84,0xEE}, {0x84,0xEF}, {0x84,0xF0},
+ {0x84,0xF1}, {0x84,0xF2}, {0x84,0xF3}, {0x84,0xF4},
+ {0x84,0xF5}, {0x84,0xF6}, {0x84,0xF7}, {0x84,0xF8},
+ {0x84,0xF9}, {0x84,0xFA}, {0x84,0xFB}, {0x84,0xFC},
+ {0x84,0xFD}, {0x84,0xFE}, {0x85,0x40}, {0x85,0x41},
+ {0x85,0x42}, {0x85,0x43}, {0x85,0x44}, {0x85,0x45},
+ {0x85,0x46}, {0x85,0x47}, {0x85,0x48}, {0x85,0x49},
+ {0x85,0x4A}, {0x85,0x4B}, {0x85,0x4C}, {0x85,0x4D},
+ {0x85,0x4E}, {0x85,0x4F}, {0x85,0x50}, {0x85,0x51},
+ {0x85,0x52}, {0x85,0x53}, {0x85,0x54}, {0x85,0x55},
+ {0x85,0x56}, {0x85,0x57}, {0x85,0x58}, {0x85,0x59},
+ {0x85,0x5A}, {0x85,0x5B}, {0x85,0x5C}, {0x85,0x5D},
+ {0x85,0x5E}, {0x85,0x5F}, {0x85,0x60}, {0x85,0x61},
+ {0x85,0x62}, {0x85,0x63}, {0x85,0x64}, {0x85,0x65},
+ {0x85,0x66}, {0x85,0x67}, {0x85,0x68}, {0x85,0x69},
+ {0x85,0x6A}, {0x85,0x6B}, {0x85,0x6C}, {0x85,0x6D},
+ {0x85,0x6E}, {0x85,0x6F}, {0x85,0x70}, {0x85,0x71},
+ {0x85,0x72}, {0x85,0x73}, {0x85,0x74}, {0x85,0x75},
+ {0x85,0x76}, {0x85,0x77}, {0x85,0x78}, {0x85,0x79},
+ {0x85,0x7A}, {0x85,0x7B}, {0x85,0x7C}, {0x85,0x7D},
+ {0x85,0x7E}, {0x85,0xA1}, {0x85,0xA2}, {0x85,0xA3},
+ {0x85,0xA4}, {0x85,0xA5}, {0x85,0xA6}, {0x85,0xA7},
+ {0x85,0xA8}, {0x85,0xA9}, {0x85,0xAA}, {0x85,0xAB},
+ {0x85,0xAC}, {0x85,0xAD}, {0x85,0xAE}, {0x85,0xAF},
+ {0x85,0xB0}, {0x85,0xB1}, {0x85,0xB2}, {0x85,0xB3},
+ {0x85,0xB4}, {0x85,0xB5}, {0x85,0xB6}, {0x85,0xB7},
+ {0x85,0xB8}, {0x85,0xB9}, {0x85,0xBA}, {0x85,0xBB},
+ {0x85,0xBC}, {0x85,0xBD}, {0x85,0xBE}, {0x85,0xBF},
+ {0x85,0xC0}, {0x85,0xC1}, {0x85,0xC2}, {0x85,0xC3},
+ {0x85,0xC4}, {0x85,0xC5}, {0x85,0xC6}, {0x85,0xC7},
+ {0x85,0xC8}, {0x85,0xC9}, {0x85,0xCA}, {0x85,0xCB},
+ {0x85,0xCC}, {0x85,0xCD}, {0x85,0xCE}, {0x85,0xCF},
+ {0x85,0xD0}, {0x85,0xD1}, {0x85,0xD2}, {0x85,0xD3},
+ {0x85,0xD4}, {0x85,0xD5}, {0x85,0xD6}, {0x85,0xD7},
+ {0x85,0xD8}, {0x85,0xD9}, {0x85,0xDA}, {0x85,0xDB},
+ {0x85,0xDC}, {0x85,0xDD}, {0x85,0xDE}, {0x85,0xDF},
+ {0x85,0xE0}, {0x85,0xE1}, {0x85,0xE2}, {0x85,0xE3},
+ {0x85,0xE4}, {0x85,0xE5}, {0x85,0xE6}, {0x85,0xE7},
+ {0x85,0xE8}, {0x85,0xE9}, {0x85,0xEA}, {0x85,0xEB},
+ {0x85,0xEC}, {0x85,0xED}, {0x85,0xEE}, {0x85,0xEF},
+ {0x85,0xF0}, {0x85,0xF1}, {0x85,0xF2}, {0x85,0xF3},
+ {0x85,0xF4}, {0x85,0xF5}, {0x85,0xF6}, {0x85,0xF7},
+ {0x85,0xF8}, {0x85,0xF9}, {0x85,0xFA}, {0x85,0xFB},
+ {0x85,0xFC}, {0x85,0xFD}, {0x85,0xFE}, {0x86,0x40},
+ {0x86,0x41}, {0x86,0x42}, {0x86,0x43}, {0x86,0x44},
+ {0x86,0x45}, {0x86,0x46}, {0x86,0x47}, {0x86,0x48},
+ {0x86,0x49}, {0x86,0x4A}, {0x86,0x4B}, {0x86,0x4C},
+ {0x86,0x4D}, {0x86,0x4E}, {0x86,0x4F}, {0x86,0x50},
+ {0x86,0x51}, {0x86,0x52}, {0x86,0x53}, {0x86,0x54},
+ {0x86,0x55}, {0x86,0x56}, {0x86,0x57}, {0x86,0x58},
+ {0x86,0x59}, {0x86,0x5A}, {0x86,0x5B}, {0x86,0x5C},
+ {0x86,0x5D}, {0x86,0x5E}, {0x86,0x5F}, {0x86,0x60},
+ {0x86,0x61}, {0x86,0x62}, {0x86,0x63}, {0x86,0x64},
+ {0x86,0x65}, {0x86,0x66}, {0x86,0x67}, {0x86,0x68},
+ {0x86,0x69}, {0x86,0x6A}, {0x86,0x6B}, {0x86,0x6C},
+ {0x86,0x6D}, {0x86,0x6E}, {0x86,0x6F}, {0x86,0x70},
+ {0x86,0x71}, {0x86,0x72}, {0x86,0x73}, {0x86,0x74},
+ {0x86,0x75}, {0x86,0x76}, {0x86,0x77}, {0x86,0x78},
+ {0x86,0x79}, {0x86,0x7A}, {0x86,0x7B}, {0x86,0x7C},
+ {0x86,0x7D}, {0x86,0x7E}, {0x86,0xA1}, {0x86,0xA2},
+ {0x86,0xA3}, {0x86,0xA4}, {0x86,0xA5}, {0x86,0xA6},
+ {0x86,0xA7}, {0x86,0xA8}, {0x86,0xA9}, {0x86,0xAA},
+ {0x86,0xAB}, {0x86,0xAC}, {0x86,0xAD}, {0x86,0xAE},
+ {0x86,0xAF}, {0x86,0xB0}, {0x86,0xB1}, {0x86,0xB2},
+ {0x86,0xB3}, {0x86,0xB4}, {0x86,0xB5}, {0x86,0xB6},
+ {0x86,0xB7}, {0x86,0xB8}, {0x86,0xB9}, {0x86,0xBA},
+ {0x86,0xBB}, {0x86,0xBC}, {0x86,0xBD}, {0x86,0xBE},
+ {0x86,0xBF}, {0x86,0xC0}, {0x86,0xC1}, {0x86,0xC2},
+ {0x86,0xC3}, {0x86,0xC4}, {0x86,0xC5}, {0x86,0xC6},
+ {0x86,0xC7}, {0x86,0xC8}, {0x86,0xC9}, {0x86,0xCA},
+ {0x86,0xCB}, {0x86,0xCC}, {0x86,0xCD}, {0x86,0xCE},
+ {0x86,0xCF}, {0x86,0xD0}, {0x86,0xD1}, {0x86,0xD2},
+ {0x86,0xD3}, {0x86,0xD4}, {0x86,0xD5}, {0x86,0xD6},
+ {0x86,0xD7}, {0x86,0xD8}, {0x86,0xD9}, {0x86,0xDA},
+ {0x86,0xDB}, {0x86,0xDC}, {0x86,0xDD}, {0x86,0xDE},
+ {0x86,0xDF}, {0x86,0xE0}, {0x86,0xE1}, {0x86,0xE2},
+ {0x86,0xE3}, {0x86,0xE4}, {0x86,0xE5}, {0x86,0xE6},
+ {0x86,0xE7}, {0x86,0xE8}, {0x86,0xE9}, {0x86,0xEA},
+ {0x86,0xEB}, {0x86,0xEC}, {0x86,0xED}, {0x86,0xEE},
+ {0x86,0xEF}, {0x86,0xF0}, {0x86,0xF1}, {0x86,0xF2},
+ {0x86,0xF3}, {0x86,0xF4}, {0x86,0xF5}, {0x86,0xF6},
+ {0x86,0xF7}, {0x86,0xF8}, {0x86,0xF9}, {0x86,0xFA},
+ {0x86,0xFB}, {0x86,0xFC}, {0x86,0xFD}, {0x86,0xFE},
+ {0x87,0x40}, {0x87,0x41}, {0x87,0x42}, {0x87,0x43},
+ {0x87,0x44}, {0x87,0x45}, {0x87,0x46}, {0x87,0x47},
+ {0x87,0x48}, {0x87,0x49}, {0x87,0x4A}, {0x87,0x4B},
+ {0x87,0x4C}, {0x87,0x4D}, {0x87,0x4E}, {0x87,0x4F},
+ {0x87,0x50}, {0x87,0x51}, {0x87,0x52}, {0x87,0x53},
+ {0x87,0x54}, {0x87,0x55}, {0x87,0x56}, {0x87,0x57},
+ {0x87,0x58}, {0x87,0x59}, {0x87,0x5A}, {0x87,0x5B},
+ {0x87,0x5C}, {0x87,0x5D}, {0x87,0x5E}, {0x87,0x5F},
+ {0x87,0x60}, {0x87,0x61}, {0x87,0x62}, {0x87,0x63},
+ {0x87,0x64}, {0x87,0x65}, {0x87,0x66}, {0x87,0x67},
+ {0x87,0x68}, {0x87,0x69}, {0x87,0x6A}, {0x87,0x6B},
+ {0x87,0x6C}, {0x87,0x6D}, {0x87,0x6E}, {0x87,0x6F},
+ {0x87,0x70}, {0x87,0x71}, {0x87,0x72}, {0x87,0x73},
+ {0x87,0x74}, {0x87,0x75}, {0x87,0x76}, {0x87,0x77},
+ {0x87,0x78}, {0x87,0x79}, {0x87,0x7A}, {0x87,0x7B},
+ {0x87,0x7C}, {0x87,0x7D}, {0x87,0x7E}, {0x87,0xA1},
+ {0x87,0xA2}, {0x87,0xA3}, {0x87,0xA4}, {0x87,0xA5},
+ {0x87,0xA6}, {0x87,0xA7}, {0x87,0xA8}, {0x87,0xA9},
+ {0x87,0xAA}, {0x87,0xAB}, {0x87,0xAC}, {0x87,0xAD},
+ {0x87,0xAE}, {0x87,0xAF}, {0x87,0xB0}, {0x87,0xB1},
+ {0x87,0xB2}, {0x87,0xB3}, {0x87,0xB4}, {0x87,0xB5},
+ {0x87,0xB6}, {0x87,0xB7}, {0x87,0xB8}, {0x87,0xB9},
+ {0x87,0xBA}, {0x87,0xBB}, {0x87,0xBC}, {0x87,0xBD},
+ {0x87,0xBE}, {0x87,0xBF}, {0x87,0xC0}, {0x87,0xC1},
+ {0x87,0xC2}, {0x87,0xC3}, {0x87,0xC4}, {0x87,0xC5},
+ {0x87,0xC6}, {0x87,0xC7}, {0x87,0xC8}, {0x87,0xC9},
+ {0x87,0xCA}, {0x87,0xCB}, {0x87,0xCC}, {0x87,0xCD},
+ {0x87,0xCE}, {0x87,0xCF}, {0x87,0xD0}, {0x87,0xD1},
+ {0x87,0xD2}, {0x87,0xD3}, {0x87,0xD4}, {0x87,0xD5},
+ {0x87,0xD6}, {0x87,0xD7}, {0x87,0xD8}, {0x87,0xD9},
+ {0x87,0xDA}, {0x87,0xDB}, {0x87,0xDC}, {0x87,0xDD},
+ {0x87,0xDE}, {0x87,0xDF}, {0x87,0xE0}, {0x87,0xE1},
+ {0x87,0xE2}, {0x87,0xE3}, {0x87,0xE4}, {0x87,0xE5},
+ {0x87,0xE6}, {0x87,0xE7}, {0x87,0xE8}, {0x87,0xE9},
+ {0x87,0xEA}, {0x87,0xEB}, {0x87,0xEC}, {0x87,0xED},
+ {0x87,0xEE}, {0x87,0xEF}, {0x87,0xF0}, {0x87,0xF1},
+ {0x87,0xF2}, {0x87,0xF3}, {0x87,0xF4}, {0x87,0xF5},
+ {0x87,0xF6}, {0x87,0xF7}, {0x87,0xF8}, {0x87,0xF9},
+ {0x87,0xFA}, {0x87,0xFB}, {0x87,0xFC}, {0x87,0xFD},
+ {0x87,0xFE}, {0x88,0x40}, {0x88,0x41}, {0x88,0x42},
+ {0x88,0x43}, {0x88,0x44}, {0x88,0x45}, {0x88,0x46},
+ {0x88,0x47}, {0x88,0x48}, {0x88,0x49}, {0x88,0x4A},
+ {0x88,0x4B}, {0x88,0x4C}, {0x88,0x4D}, {0x88,0x4E},
+ {0x88,0x4F}, {0x88,0x50}, {0x88,0x51}, {0x88,0x52},
+ {0x88,0x53}, {0x88,0x54}, {0x88,0x55}, {0x88,0x56},
+ {0x88,0x57}, {0x88,0x58}, {0x88,0x59}, {0x88,0x5A},
+ {0x88,0x5B}, {0x88,0x5C}, {0x88,0x5D}, {0x88,0x5E},
+ {0x88,0x5F}, {0x88,0x60}, {0x88,0x61}, {0x88,0x62},
+ {0x88,0x63}, {0x88,0x64}, {0x88,0x65}, {0x88,0x66},
+ {0x88,0x67}, {0x88,0x68}, {0x88,0x69}, {0x88,0x6A},
+ {0x88,0x6B}, {0x88,0x6C}, {0x88,0x6D}, {0x88,0x6E},
+ {0x88,0x6F}, {0x88,0x70}, {0x88,0x71}, {0x88,0x72},
+ {0x88,0x73}, {0x88,0x74}, {0x88,0x75}, {0x88,0x76},
+ {0x88,0x77}, {0x88,0x78}, {0x88,0x79}, {0x88,0x7A},
+ {0x88,0x7B}, {0x88,0x7C}, {0x88,0x7D}, {0x88,0x7E},
+ {0x88,0xA1}, {0x88,0xA2}, {0x88,0xA3}, {0x88,0xA4},
+ {0x88,0xA5}, {0x88,0xA6}, {0x88,0xA7}, {0x88,0xA8},
+ {0x88,0xA9}, {0x88,0xAA}, {0x88,0xAB}, {0x88,0xAC},
+ {0x88,0xAD}, {0x88,0xAE}, {0x88,0xAF}, {0x88,0xB0},
+ {0x88,0xB1}, {0x88,0xB2}, {0x88,0xB3}, {0x88,0xB4},
+ {0x88,0xB5}, {0x88,0xB6}, {0x88,0xB7}, {0x88,0xB8},
+ {0x88,0xB9}, {0x88,0xBA}, {0x88,0xBB}, {0x88,0xBC},
+ {0x88,0xBD}, {0x88,0xBE}, {0x88,0xBF}, {0x88,0xC0},
+ {0x88,0xC1}, {0x88,0xC2}, {0x88,0xC3}, {0x88,0xC4},
+ {0x88,0xC5}, {0x88,0xC6}, {0x88,0xC7}, {0x88,0xC8},
+ {0x88,0xC9}, {0x88,0xCA}, {0x88,0xCB}, {0x88,0xCC},
+ {0x88,0xCD}, {0x88,0xCE}, {0x88,0xCF}, {0x88,0xD0},
+ {0x88,0xD1}, {0x88,0xD2}, {0x88,0xD3}, {0x88,0xD4},
+ {0x88,0xD5}, {0x88,0xD6}, {0x88,0xD7}, {0x88,0xD8},
+ {0x88,0xD9}, {0x88,0xDA}, {0x88,0xDB}, {0x88,0xDC},
+ {0x88,0xDD}, {0x88,0xDE}, {0x88,0xDF}, {0x88,0xE0},
+ {0x88,0xE1}, {0x88,0xE2}, {0x88,0xE3}, {0x88,0xE4},
+ {0x88,0xE5}, {0x88,0xE6}, {0x88,0xE7}, {0x88,0xE8},
+ {0x88,0xE9}, {0x88,0xEA}, {0x88,0xEB}, {0x88,0xEC},
+ {0x88,0xED}, {0x88,0xEE}, {0x88,0xEF}, {0x88,0xF0},
+ {0x88,0xF1}, {0x88,0xF2}, {0x88,0xF3}, {0x88,0xF4},
+ {0x88,0xF5}, {0x88,0xF6}, {0x88,0xF7}, {0x88,0xF8},
+ {0x88,0xF9}, {0x88,0xFA}, {0x88,0xFB}, {0x88,0xFC},
+ {0x88,0xFD}, {0x88,0xFE}, {0x89,0x40}, {0x89,0x41},
+ {0x89,0x42}, {0x89,0x43}, {0x89,0x44}, {0x89,0x45},
+ {0x89,0x46}, {0x89,0x47}, {0x89,0x48}, {0x89,0x49},
+ {0x89,0x4A}, {0x89,0x4B}, {0x89,0x4C}, {0x89,0x4D},
+ {0x89,0x4E}, {0x89,0x4F}, {0x89,0x50}, {0x89,0x51},
+ {0x89,0x52}, {0x89,0x53}, {0x89,0x54}, {0x89,0x55},
+ {0x89,0x56}, {0x89,0x57}, {0x89,0x58}, {0x89,0x59},
+ {0x89,0x5A}, {0x89,0x5B}, {0x89,0x5C}, {0x89,0x5D},
+ {0x89,0x5E}, {0x89,0x5F}, {0x89,0x60}, {0x89,0x61},
+ {0x89,0x62}, {0x89,0x63}, {0x89,0x64}, {0x89,0x65},
+ {0x89,0x66}, {0x89,0x67}, {0x89,0x68}, {0x89,0x69},
+ {0x89,0x6A}, {0x89,0x6B}, {0x89,0x6C}, {0x89,0x6D},
+ {0x89,0x6E}, {0x89,0x6F}, {0x89,0x70}, {0x89,0x71},
+ {0x89,0x72}, {0x89,0x73}, {0x89,0x74}, {0x89,0x75},
+ {0x89,0x76}, {0x89,0x77}, {0x89,0x78}, {0x89,0x79},
+ {0x89,0x7A}, {0x89,0x7B}, {0x89,0x7C}, {0x89,0x7D},
+ {0x89,0x7E}, {0x89,0xA1}, {0x89,0xA2}, {0x89,0xA3},
+ {0x89,0xA4}, {0x89,0xA5}, {0x89,0xA6}, {0x89,0xA7},
+ {0x89,0xA8}, {0x89,0xA9}, {0x89,0xAA}, {0x89,0xAB},
+ {0x89,0xAC}, {0x89,0xAD}, {0x89,0xAE}, {0x89,0xAF},
+ {0x89,0xB0}, {0x89,0xB1}, {0x89,0xB2}, {0x89,0xB3},
+ {0x89,0xB4}, {0x89,0xB5}, {0x89,0xB6}, {0x89,0xB7},
+ {0x89,0xB8}, {0x89,0xB9}, {0x89,0xBA}, {0x89,0xBB},
+ {0x89,0xBC}, {0x89,0xBD}, {0x89,0xBE}, {0x89,0xBF},
+ {0x89,0xC0}, {0x89,0xC1}, {0x89,0xC2}, {0x89,0xC3},
+ {0x89,0xC4}, {0x89,0xC5}, {0x89,0xC6}, {0x89,0xC7},
+ {0x89,0xC8}, {0x89,0xC9}, {0x89,0xCA}, {0x89,0xCB},
+ {0x89,0xCC}, {0x89,0xCD}, {0x89,0xCE}, {0x89,0xCF},
+ {0x89,0xD0}, {0x89,0xD1}, {0x89,0xD2}, {0x89,0xD3},
+ {0x89,0xD4}, {0x89,0xD5}, {0x89,0xD6}, {0x89,0xD7},
+ {0x89,0xD8}, {0x89,0xD9}, {0x89,0xDA}, {0x89,0xDB},
+ {0x89,0xDC}, {0x89,0xDD}, {0x89,0xDE}, {0x89,0xDF},
+ {0x89,0xE0}, {0x89,0xE1}, {0x89,0xE2}, {0x89,0xE3},
+ {0x89,0xE4}, {0x89,0xE5}, {0x89,0xE6}, {0x89,0xE7},
+ {0x89,0xE8}, {0x89,0xE9}, {0x89,0xEA}, {0x89,0xEB},
+ {0x89,0xEC}, {0x89,0xED}, {0x89,0xEE}, {0x89,0xEF},
+ {0x89,0xF0}, {0x89,0xF1}, {0x89,0xF2}, {0x89,0xF3},
+ {0x89,0xF4}, {0x89,0xF5}, {0x89,0xF6}, {0x89,0xF7},
+ {0x89,0xF8}, {0x89,0xF9}, {0x89,0xFA}, {0x89,0xFB},
+ {0x89,0xFC}, {0x89,0xFD}, {0x89,0xFE}, {0x8A,0x40},
+ {0x8A,0x41}, {0x8A,0x42}, {0x8A,0x43}, {0x8A,0x44},
+ {0x8A,0x45}, {0x8A,0x46}, {0x8A,0x47}, {0x8A,0x48},
+ {0x8A,0x49}, {0x8A,0x4A}, {0x8A,0x4B}, {0x8A,0x4C},
+ {0x8A,0x4D}, {0x8A,0x4E}, {0x8A,0x4F}, {0x8A,0x50},
+ {0x8A,0x51}, {0x8A,0x52}, {0x8A,0x53}, {0x8A,0x54},
+ {0x8A,0x55}, {0x8A,0x56}, {0x8A,0x57}, {0x8A,0x58},
+ {0x8A,0x59}, {0x8A,0x5A}, {0x8A,0x5B}, {0x8A,0x5C},
+ {0x8A,0x5D}, {0x8A,0x5E}, {0x8A,0x5F}, {0x8A,0x60},
+ {0x8A,0x61}, {0x8A,0x62}, {0x8A,0x63}, {0x8A,0x64},
+ {0x8A,0x65}, {0x8A,0x66}, {0x8A,0x67}, {0x8A,0x68},
+ {0x8A,0x69}, {0x8A,0x6A}, {0x8A,0x6B}, {0x8A,0x6C},
+ {0x8A,0x6D}, {0x8A,0x6E}, {0x8A,0x6F}, {0x8A,0x70},
+ {0x8A,0x71}, {0x8A,0x72}, {0x8A,0x73}, {0x8A,0x74},
+ {0x8A,0x75}, {0x8A,0x76}, {0x8A,0x77}, {0x8A,0x78},
+ {0x8A,0x79}, {0x8A,0x7A}, {0x8A,0x7B}, {0x8A,0x7C},
+ {0x8A,0x7D}, {0x8A,0x7E}, {0x8A,0xA1}, {0x8A,0xA2},
+ {0x8A,0xA3}, {0x8A,0xA4}, {0x8A,0xA5}, {0x8A,0xA6},
+ {0x8A,0xA7}, {0x8A,0xA8}, {0x8A,0xA9}, {0x8A,0xAA},
+ {0x8A,0xAB}, {0x8A,0xAC}, {0x8A,0xAD}, {0x8A,0xAE},
+ {0x8A,0xAF}, {0x8A,0xB0}, {0x8A,0xB1}, {0x8A,0xB2},
+ {0x8A,0xB3}, {0x8A,0xB4}, {0x8A,0xB5}, {0x8A,0xB6},
+ {0x8A,0xB7}, {0x8A,0xB8}, {0x8A,0xB9}, {0x8A,0xBA},
+ {0x8A,0xBB}, {0x8A,0xBC}, {0x8A,0xBD}, {0x8A,0xBE},
+ {0x8A,0xBF}, {0x8A,0xC0}, {0x8A,0xC1}, {0x8A,0xC2},
+ {0x8A,0xC3}, {0x8A,0xC4}, {0x8A,0xC5}, {0x8A,0xC6},
+ {0x8A,0xC7}, {0x8A,0xC8}, {0x8A,0xC9}, {0x8A,0xCA},
+ {0x8A,0xCB}, {0x8A,0xCC}, {0x8A,0xCD}, {0x8A,0xCE},
+ {0x8A,0xCF}, {0x8A,0xD0}, {0x8A,0xD1}, {0x8A,0xD2},
+ {0x8A,0xD3}, {0x8A,0xD4}, {0x8A,0xD5}, {0x8A,0xD6},
+ {0x8A,0xD7}, {0x8A,0xD8}, {0x8A,0xD9}, {0x8A,0xDA},
+ {0x8A,0xDB}, {0x8A,0xDC}, {0x8A,0xDD}, {0x8A,0xDE},
+ {0x8A,0xDF}, {0x8A,0xE0}, {0x8A,0xE1}, {0x8A,0xE2},
+ {0x8A,0xE3}, {0x8A,0xE4}, {0x8A,0xE5}, {0x8A,0xE6},
+ {0x8A,0xE7}, {0x8A,0xE8}, {0x8A,0xE9}, {0x8A,0xEA},
+ {0x8A,0xEB}, {0x8A,0xEC}, {0x8A,0xED}, {0x8A,0xEE},
+ {0x8A,0xEF}, {0x8A,0xF0}, {0x8A,0xF1}, {0x8A,0xF2},
+ {0x8A,0xF3}, {0x8A,0xF4}, {0x8A,0xF5}, {0x8A,0xF6},
+ {0x8A,0xF7}, {0x8A,0xF8}, {0x8A,0xF9}, {0x8A,0xFA},
+ {0x8A,0xFB}, {0x8A,0xFC}, {0x8A,0xFD}, {0x8A,0xFE},
+ {0x8B,0x40}, {0x8B,0x41}, {0x8B,0x42}, {0x8B,0x43},
+ {0x8B,0x44}, {0x8B,0x45}, {0x8B,0x46}, {0x8B,0x47},
+ {0x8B,0x48}, {0x8B,0x49}, {0x8B,0x4A}, {0x8B,0x4B},
+ {0x8B,0x4C}, {0x8B,0x4D}, {0x8B,0x4E}, {0x8B,0x4F},
+ {0x8B,0x50}, {0x8B,0x51}, {0x8B,0x52}, {0x8B,0x53},
+ {0x8B,0x54}, {0x8B,0x55}, {0x8B,0x56}, {0x8B,0x57},
+ {0x8B,0x58}, {0x8B,0x59}, {0x8B,0x5A}, {0x8B,0x5B},
+ {0x8B,0x5C}, {0x8B,0x5D}, {0x8B,0x5E}, {0x8B,0x5F},
+ {0x8B,0x60}, {0x8B,0x61}, {0x8B,0x62}, {0x8B,0x63},
+ {0x8B,0x64}, {0x8B,0x65}, {0x8B,0x66}, {0x8B,0x67},
+ {0x8B,0x68}, {0x8B,0x69}, {0x8B,0x6A}, {0x8B,0x6B},
+ {0x8B,0x6C}, {0x8B,0x6D}, {0x8B,0x6E}, {0x8B,0x6F},
+ {0x8B,0x70}, {0x8B,0x71}, {0x8B,0x72}, {0x8B,0x73},
+ {0x8B,0x74}, {0x8B,0x75}, {0x8B,0x76}, {0x8B,0x77},
+ {0x8B,0x78}, {0x8B,0x79}, {0x8B,0x7A}, {0x8B,0x7B},
+ {0x8B,0x7C}, {0x8B,0x7D}, {0x8B,0x7E}, {0x8B,0xA1},
+ {0x8B,0xA2}, {0x8B,0xA3}, {0x8B,0xA4}, {0x8B,0xA5},
+ {0x8B,0xA6}, {0x8B,0xA7}, {0x8B,0xA8}, {0x8B,0xA9},
+ {0x8B,0xAA}, {0x8B,0xAB}, {0x8B,0xAC}, {0x8B,0xAD},
+ {0x8B,0xAE}, {0x8B,0xAF}, {0x8B,0xB0}, {0x8B,0xB1},
+ {0x8B,0xB2}, {0x8B,0xB3}, {0x8B,0xB4}, {0x8B,0xB5},
+ {0x8B,0xB6}, {0x8B,0xB7}, {0x8B,0xB8}, {0x8B,0xB9},
+ {0x8B,0xBA}, {0x8B,0xBB}, {0x8B,0xBC}, {0x8B,0xBD},
+ {0x8B,0xBE}, {0x8B,0xBF}, {0x8B,0xC0}, {0x8B,0xC1},
+ {0x8B,0xC2}, {0x8B,0xC3}, {0x8B,0xC4}, {0x8B,0xC5},
+ {0x8B,0xC6}, {0x8B,0xC7}, {0x8B,0xC8}, {0x8B,0xC9},
+ {0x8B,0xCA}, {0x8B,0xCB}, {0x8B,0xCC}, {0x8B,0xCD},
+ {0x8B,0xCE}, {0x8B,0xCF}, {0x8B,0xD0}, {0x8B,0xD1},
+ {0x8B,0xD2}, {0x8B,0xD3}, {0x8B,0xD4}, {0x8B,0xD5},
+ {0x8B,0xD6}, {0x8B,0xD7}, {0x8B,0xD8}, {0x8B,0xD9},
+ {0x8B,0xDA}, {0x8B,0xDB}, {0x8B,0xDC}, {0x8B,0xDD},
+ {0x8B,0xDE}, {0x8B,0xDF}, {0x8B,0xE0}, {0x8B,0xE1},
+ {0x8B,0xE2}, {0x8B,0xE3}, {0x8B,0xE4}, {0x8B,0xE5},
+ {0x8B,0xE6}, {0x8B,0xE7}, {0x8B,0xE8}, {0x8B,0xE9},
+ {0x8B,0xEA}, {0x8B,0xEB}, {0x8B,0xEC}, {0x8B,0xED},
+ {0x8B,0xEE}, {0x8B,0xEF}, {0x8B,0xF0}, {0x8B,0xF1},
+ {0x8B,0xF2}, {0x8B,0xF3}, {0x8B,0xF4}, {0x8B,0xF5},
+ {0x8B,0xF6}, {0x8B,0xF7}, {0x8B,0xF8}, {0x8B,0xF9},
+ {0x8B,0xFA}, {0x8B,0xFB}, {0x8B,0xFC}, {0x8B,0xFD},
+ {0x8B,0xFE}, {0x8C,0x40}, {0x8C,0x41}, {0x8C,0x42},
+ {0x8C,0x43}, {0x8C,0x44}, {0x8C,0x45}, {0x8C,0x46},
+ {0x8C,0x47}, {0x8C,0x48}, {0x8C,0x49}, {0x8C,0x4A},
+ {0x8C,0x4B}, {0x8C,0x4C}, {0x8C,0x4D}, {0x8C,0x4E},
+ {0x8C,0x4F}, {0x8C,0x50}, {0x8C,0x51}, {0x8C,0x52},
+ {0x8C,0x53}, {0x8C,0x54}, {0x8C,0x55}, {0x8C,0x56},
+ {0x8C,0x57}, {0x8C,0x58}, {0x8C,0x59}, {0x8C,0x5A},
+ {0x8C,0x5B}, {0x8C,0x5C}, {0x8C,0x5D}, {0x8C,0x5E},
+ {0x8C,0x5F}, {0x8C,0x60}, {0x8C,0x61}, {0x8C,0x62},
+ {0x8C,0x63}, {0x8C,0x64}, {0x8C,0x65}, {0x8C,0x66},
+ {0x8C,0x67}, {0x8C,0x68}, {0x8C,0x69}, {0x8C,0x6A},
+ {0x8C,0x6B}, {0x8C,0x6C}, {0x8C,0x6D}, {0x8C,0x6E},
+ {0x8C,0x6F}, {0x8C,0x70}, {0x8C,0x71}, {0x8C,0x72},
+ {0x8C,0x73}, {0x8C,0x74}, {0x8C,0x75}, {0x8C,0x76},
+ {0x8C,0x77}, {0x8C,0x78}, {0x8C,0x79}, {0x8C,0x7A},
+ {0x8C,0x7B}, {0x8C,0x7C}, {0x8C,0x7D}, {0x8C,0x7E},
+ {0x8C,0xA1}, {0x8C,0xA2}, {0x8C,0xA3}, {0x8C,0xA4},
+ {0x8C,0xA5}, {0x8C,0xA6}, {0x8C,0xA7}, {0x8C,0xA8},
+ {0x8C,0xA9}, {0x8C,0xAA}, {0x8C,0xAB}, {0x8C,0xAC},
+ {0x8C,0xAD}, {0x8C,0xAE}, {0x8C,0xAF}, {0x8C,0xB0},
+ {0x8C,0xB1}, {0x8C,0xB2}, {0x8C,0xB3}, {0x8C,0xB4},
+ {0x8C,0xB5}, {0x8C,0xB6}, {0x8C,0xB7}, {0x8C,0xB8},
+ {0x8C,0xB9}, {0x8C,0xBA}, {0x8C,0xBB}, {0x8C,0xBC},
+ {0x8C,0xBD}, {0x8C,0xBE}, {0x8C,0xBF}, {0x8C,0xC0},
+ {0x8C,0xC1}, {0x8C,0xC2}, {0x8C,0xC3}, {0x8C,0xC4},
+ {0x8C,0xC5}, {0x8C,0xC6}, {0x8C,0xC7}, {0x8C,0xC8},
+ {0x8C,0xC9}, {0x8C,0xCA}, {0x8C,0xCB}, {0x8C,0xCC},
+ {0x8C,0xCD}, {0x8C,0xCE}, {0x8C,0xCF}, {0x8C,0xD0},
+ {0x8C,0xD1}, {0x8C,0xD2}, {0x8C,0xD3}, {0x8C,0xD4},
+ {0x8C,0xD5}, {0x8C,0xD6}, {0x8C,0xD7}, {0x8C,0xD8},
+ {0x8C,0xD9}, {0x8C,0xDA}, {0x8C,0xDB}, {0x8C,0xDC},
+ {0x8C,0xDD}, {0x8C,0xDE}, {0x8C,0xDF}, {0x8C,0xE0},
+ {0x8C,0xE1}, {0x8C,0xE2}, {0x8C,0xE3}, {0x8C,0xE4},
+ {0x8C,0xE5}, {0x8C,0xE6}, {0x8C,0xE7}, {0x8C,0xE8},
+ {0x8C,0xE9}, {0x8C,0xEA}, {0x8C,0xEB}, {0x8C,0xEC},
+ {0x8C,0xED}, {0x8C,0xEE}, {0x8C,0xEF}, {0x8C,0xF0},
+ {0x8C,0xF1}, {0x8C,0xF2}, {0x8C,0xF3}, {0x8C,0xF4},
+ {0x8C,0xF5}, {0x8C,0xF6}, {0x8C,0xF7}, {0x8C,0xF8},
+ {0x8C,0xF9}, {0x8C,0xFA}, {0x8C,0xFB}, {0x8C,0xFC},
+ {0x8C,0xFD}, {0x8C,0xFE}, {0x8D,0x40}, {0x8D,0x41},
+ {0x8D,0x42}, {0x8D,0x43}, {0x8D,0x44}, {0x8D,0x45},
+ {0x8D,0x46}, {0x8D,0x47}, {0x8D,0x48}, {0x8D,0x49},
+ {0x8D,0x4A}, {0x8D,0x4B}, {0x8D,0x4C}, {0x8D,0x4D},
+ {0x8D,0x4E}, {0x8D,0x4F}, {0x8D,0x50}, {0x8D,0x51},
+ {0x8D,0x52}, {0x8D,0x53}, {0x8D,0x54}, {0x8D,0x55},
+ {0x8D,0x56}, {0x8D,0x57}, {0x8D,0x58}, {0x8D,0x59},
+ {0x8D,0x5A}, {0x8D,0x5B}, {0x8D,0x5C}, {0x8D,0x5D},
+ {0x8D,0x5E}, {0x8D,0x5F}, {0x8D,0x60}, {0x8D,0x61},
+ {0x8D,0x62}, {0x8D,0x63}, {0x8D,0x64}, {0x8D,0x65},
+ {0x8D,0x66}, {0x8D,0x67}, {0x8D,0x68}, {0x8D,0x69},
+ {0x8D,0x6A}, {0x8D,0x6B}, {0x8D,0x6C}, {0x8D,0x6D},
+ {0x8D,0x6E}, {0x8D,0x6F}, {0x8D,0x70}, {0x8D,0x71},
+ {0x8D,0x72}, {0x8D,0x73}, {0x8D,0x74}, {0x8D,0x75},
+ {0x8D,0x76}, {0x8D,0x77}, {0x8D,0x78}, {0x8D,0x79},
+ {0x8D,0x7A}, {0x8D,0x7B}, {0x8D,0x7C}, {0x8D,0x7D},
+ {0x8D,0x7E}, {0x8D,0xA1}, {0x8D,0xA2}, {0x8D,0xA3},
+ {0x8D,0xA4}, {0x8D,0xA5}, {0x8D,0xA6}, {0x8D,0xA7},
+ {0x8D,0xA8}, {0x8D,0xA9}, {0x8D,0xAA}, {0x8D,0xAB},
+ {0x8D,0xAC}, {0x8D,0xAD}, {0x8D,0xAE}, {0x8D,0xAF},
+ {0x8D,0xB0}, {0x8D,0xB1}, {0x8D,0xB2}, {0x8D,0xB3},
+ {0x8D,0xB4}, {0x8D,0xB5}, {0x8D,0xB6}, {0x8D,0xB7},
+ {0x8D,0xB8}, {0x8D,0xB9}, {0x8D,0xBA}, {0x8D,0xBB},
+ {0x8D,0xBC}, {0x8D,0xBD}, {0x8D,0xBE}, {0x8D,0xBF},
+ {0x8D,0xC0}, {0x8D,0xC1}, {0x8D,0xC2}, {0x8D,0xC3},
+ {0x8D,0xC4}, {0x8D,0xC5}, {0x8D,0xC6}, {0x8D,0xC7},
+ {0x8D,0xC8}, {0x8D,0xC9}, {0x8D,0xCA}, {0x8D,0xCB},
+ {0x8D,0xCC}, {0x8D,0xCD}, {0x8D,0xCE}, {0x8D,0xCF},
+ {0x8D,0xD0}, {0x8D,0xD1}, {0x8D,0xD2}, {0x8D,0xD3},
+ {0x8D,0xD4}, {0x8D,0xD5}, {0x8D,0xD6}, {0x8D,0xD7},
+ {0x8D,0xD8}, {0x8D,0xD9}, {0x8D,0xDA}, {0x8D,0xDB},
+ {0x8D,0xDC}, {0x8D,0xDD}, {0x8D,0xDE}, {0x8D,0xDF},
+ {0x8D,0xE0}, {0x8D,0xE1}, {0x8D,0xE2}, {0x8D,0xE3},
+ {0x8D,0xE4}, {0x8D,0xE5}, {0x8D,0xE6}, {0x8D,0xE7},
+ {0x8D,0xE8}, {0x8D,0xE9}, {0x8D,0xEA}, {0x8D,0xEB},
+ {0x8D,0xEC}, {0x8D,0xED}, {0x8D,0xEE}, {0x8D,0xEF},
+ {0x8D,0xF0}, {0x8D,0xF1}, {0x8D,0xF2}, {0x8D,0xF3},
+ {0x8D,0xF4}, {0x8D,0xF5}, {0x8D,0xF6}, {0x8D,0xF7},
+ {0x8D,0xF8}, {0x8D,0xF9}, {0x8D,0xFA}, {0x8D,0xFB},
+ {0x8D,0xFC}, {0x8D,0xFD}, {0x8D,0xFE}, {0xC6,0xA1},
+ {0xC6,0xA2}, {0xC6,0xA3}, {0xC6,0xA4}, {0xC6,0xA5},
+ {0xC6,0xA6}, {0xC6,0xA7}, {0xC6,0xA8}, {0xC6,0xA9},
+ {0xC6,0xAA}, {0xC6,0xAB}, {0xC6,0xAC}, {0xC6,0xAD},
+ {0xC6,0xAE}, {0xC6,0xAF}, {0xC6,0xB0}, {0xC6,0xB1},
+ {0xC6,0xB2}, {0xC6,0xB3}, {0xC6,0xB4}, {0xC6,0xB5},
+ {0xC6,0xB6}, {0xC6,0xB7}, {0xC6,0xB8}, {0xC6,0xB9},
+ {0xC6,0xBA}, {0xC6,0xBB}, {0xC6,0xBC}, {0xC6,0xBD},
+ {0xC6,0xBE}, {0xC6,0xBF}, {0xC6,0xC0}, {0xC6,0xC1},
+ {0xC6,0xC2}, {0xC6,0xC3}, {0xC6,0xC4}, {0xC6,0xC5},
+ {0xC6,0xC6}, {0xC6,0xC7}, {0xC6,0xC8}, {0xC6,0xC9},
+ {0xC6,0xCA}, {0xC6,0xCB}, {0xC6,0xCC}, {0xC6,0xCD},
+ {0xC6,0xCE}, {0xC6,0xCF}, {0xC6,0xD0}, {0xC6,0xD1},
+ {0xC6,0xD2}, {0xC6,0xD3}, {0xC6,0xD4}, {0xC6,0xD5},
+ {0xC6,0xD6}, {0xC6,0xD7}, {0xC6,0xD8}, {0xC6,0xD9},
+ {0xC6,0xDA}, {0xC6,0xDB}, {0xC6,0xDC}, {0xC6,0xDD},
+ {0xC6,0xDE}, {0xC6,0xDF}, {0xC6,0xE0}, {0xC6,0xE1},
+ {0xC6,0xE2}, {0xC6,0xE3}, {0xC6,0xE4}, {0xC6,0xE5},
+ {0xC6,0xE6}, {0xC6,0xE7}, {0xC6,0xE8}, {0xC6,0xE9},
+ {0xC6,0xEA}, {0xC6,0xEB}, {0xC6,0xEC}, {0xC6,0xED},
+ {0xC6,0xEE}, {0xC6,0xEF}, {0xC6,0xF0}, {0xC6,0xF1},
+ {0xC6,0xF2}, {0xC6,0xF3}, {0xC6,0xF4}, {0xC6,0xF5},
+ {0xC6,0xF6}, {0xC6,0xF7}, {0xC6,0xF8}, {0xC6,0xF9},
+ {0xC6,0xFA}, {0xC6,0xFB}, {0xC6,0xFC}, {0xC6,0xFD},
+ {0xC6,0xFE}, {0xC7,0x40}, {0xC7,0x41}, {0xC7,0x42},
+ {0xC7,0x43}, {0xC7,0x44}, {0xC7,0x45}, {0xC7,0x46},
+ {0xC7,0x47}, {0xC7,0x48}, {0xC7,0x49}, {0xC7,0x4A},
+ {0xC7,0x4B}, {0xC7,0x4C}, {0xC7,0x4D}, {0xC7,0x4E},
+ {0xC7,0x4F}, {0xC7,0x50}, {0xC7,0x51}, {0xC7,0x52},
+ {0xC7,0x53}, {0xC7,0x54}, {0xC7,0x55}, {0xC7,0x56},
+ {0xC7,0x57}, {0xC7,0x58}, {0xC7,0x59}, {0xC7,0x5A},
+ {0xC7,0x5B}, {0xC7,0x5C}, {0xC7,0x5D}, {0xC7,0x5E},
+ {0xC7,0x5F}, {0xC7,0x60}, {0xC7,0x61}, {0xC7,0x62},
+ {0xC7,0x63}, {0xC7,0x64}, {0xC7,0x65}, {0xC7,0x66},
+ {0xC7,0x67}, {0xC7,0x68}, {0xC7,0x69}, {0xC7,0x6A},
+ {0xC7,0x6B}, {0xC7,0x6C}, {0xC7,0x6D}, {0xC7,0x6E},
+ {0xC7,0x6F}, {0xC7,0x70}, {0xC7,0x71}, {0xC7,0x72},
+ {0xC7,0x73}, {0xC7,0x74}, {0xC7,0x75}, {0xC7,0x76},
+ {0xC7,0x77}, {0xC7,0x78}, {0xC7,0x79}, {0xC7,0x7A},
+ {0xC7,0x7B}, {0xC7,0x7C}, {0xC7,0x7D}, {0xC7,0x7E},
+ {0xC7,0xA1}, {0xC7,0xA2}, {0xC7,0xA3}, {0xC7,0xA4},
+ {0xC7,0xA5}, {0xC7,0xA6}, {0xC7,0xA7}, {0xC7,0xA8},
+ {0xC7,0xA9}, {0xC7,0xAA}, {0xC7,0xAB}, {0xC7,0xAC},
+ {0xC7,0xAD}, {0xC7,0xAE}, {0xC7,0xAF}, {0xC7,0xB0},
+ {0xC7,0xB1}, {0xC7,0xB2}, {0xC7,0xB3}, {0xC7,0xB4},
+ {0xC7,0xB5}, {0xC7,0xB6}, {0xC7,0xB7}, {0xC7,0xB8},
+ {0xC7,0xB9}, {0xC7,0xBA}, {0xC7,0xBB}, {0xC7,0xBC},
+ {0xC7,0xBD}, {0xC7,0xBE}, {0xC7,0xBF}, {0xC7,0xC0},
+ {0xC7,0xC1}, {0xC7,0xC2}, {0xC7,0xC3}, {0xC7,0xC4},
+ {0xC7,0xC5}, {0xC7,0xC6}, {0xC7,0xC7}, {0xC7,0xC8},
+ {0xC7,0xC9}, {0xC7,0xCA}, {0xC7,0xCB}, {0xC7,0xCC},
+ {0xC7,0xCD}, {0xC7,0xCE}, {0xC7,0xCF}, {0xC7,0xD0},
+ {0xC7,0xD1}, {0xC7,0xD2}, {0xC7,0xD3}, {0xC7,0xD4},
+ {0xC7,0xD5}, {0xC7,0xD6}, {0xC7,0xD7}, {0xC7,0xD8},
+ {0xC7,0xD9}, {0xC7,0xDA}, {0xC7,0xDB}, {0xC7,0xDC},
+ {0xC7,0xDD}, {0xC7,0xDE}, {0xC7,0xDF}, {0xC7,0xE0},
+ {0xC7,0xE1}, {0xC7,0xE2}, {0xC7,0xE3}, {0xC7,0xE4},
+ {0xC7,0xE5}, {0xC7,0xE6}, {0xC7,0xE7}, {0xC7,0xE8},
+ {0xC7,0xE9}, {0xC7,0xEA}, {0xC7,0xEB}, {0xC7,0xEC},
+ {0xC7,0xED}, {0xC7,0xEE}, {0xC7,0xEF}, {0xC7,0xF0},
+ {0xC7,0xF1}, {0xC7,0xF2}, {0xC7,0xF3}, {0xC7,0xF4},
+ {0xC7,0xF5}, {0xC7,0xF6}, {0xC7,0xF7}, {0xC7,0xF8},
+ {0xC7,0xF9}, {0xC7,0xFA}, {0xC7,0xFB}, {0xC7,0xFC},
+ {0xC7,0xFD}, {0xC7,0xFE}, {0xC8,0x40}, {0xC8,0x41},
+ {0xC8,0x42}, {0xC8,0x43}, {0xC8,0x44}, {0xC8,0x45},
+ {0xC8,0x46}, {0xC8,0x47}, {0xC8,0x48}, {0xC8,0x49},
+ {0xC8,0x4A}, {0xC8,0x4B}, {0xC8,0x4C}, {0xC8,0x4D},
+ {0xC8,0x4E}, {0xC8,0x4F}, {0xC8,0x50}, {0xC8,0x51},
+ {0xC8,0x52}, {0xC8,0x53}, {0xC8,0x54}, {0xC8,0x55},
+ {0xC8,0x56}, {0xC8,0x57}, {0xC8,0x58}, {0xC8,0x59},
+ {0xC8,0x5A}, {0xC8,0x5B}, {0xC8,0x5C}, {0xC8,0x5D},
+ {0xC8,0x5E}, {0xC8,0x5F}, {0xC8,0x60}, {0xC8,0x61},
+ {0xC8,0x62}, {0xC8,0x63}, {0xC8,0x64}, {0xC8,0x65},
+ {0xC8,0x66}, {0xC8,0x67}, {0xC8,0x68}, {0xC8,0x69},
+ {0xC8,0x6A}, {0xC8,0x6B}, {0xC8,0x6C}, {0xC8,0x6D},
+ {0xC8,0x6E}, {0xC8,0x6F}, {0xC8,0x70}, {0xC8,0x71},
+ {0xC8,0x72}, {0xC8,0x73}, {0xC8,0x74}, {0xC8,0x75},
+ {0xC8,0x76}, {0xC8,0x77}, {0xC8,0x78}, {0xC8,0x79},
+ {0xC8,0x7A}, {0xC8,0x7B}, {0xC8,0x7C}, {0xC8,0x7D},
+ {0xC8,0x7E}, {0xC8,0xA1}, {0xC8,0xA2}, {0xC8,0xA3},
+ {0xC8,0xA4}, {0xC8,0xA5}, {0xC8,0xA6}, {0xC8,0xA7},
+ {0xC8,0xA8}, {0xC8,0xA9}, {0xC8,0xAA}, {0xC8,0xAB},
+ {0xC8,0xAC}, {0xC8,0xAD}, {0xC8,0xAE}, {0xC8,0xAF},
+ {0xC8,0xB0}, {0xC8,0xB1}, {0xC8,0xB2}, {0xC8,0xB3},
+ {0xC8,0xB4}, {0xC8,0xB5}, {0xC8,0xB6}, {0xC8,0xB7},
+ {0xC8,0xB8}, {0xC8,0xB9}, {0xC8,0xBA}, {0xC8,0xBB},
+ {0xC8,0xBC}, {0xC8,0xBD}, {0xC8,0xBE}, {0xC8,0xBF},
+ {0xC8,0xC0}, {0xC8,0xC1}, {0xC8,0xC2}, {0xC8,0xC3},
+ {0xC8,0xC4}, {0xC8,0xC5}, {0xC8,0xC6}, {0xC8,0xC7},
+ {0xC8,0xC8}, {0xC8,0xC9}, {0xC8,0xCA}, {0xC8,0xCB},
+ {0xC8,0xCC}, {0xC8,0xCD}, {0xC8,0xCE}, {0xC8,0xCF},
+ {0xC8,0xD0}, {0xC8,0xD1}, {0xC8,0xD2}, {0xC8,0xD3},
+ {0xC8,0xD4}, {0xC8,0xD5}, {0xC8,0xD6}, {0xC8,0xD7},
+ {0xC8,0xD8}, {0xC8,0xD9}, {0xC8,0xDA}, {0xC8,0xDB},
+ {0xC8,0xDC}, {0xC8,0xDD}, {0xC8,0xDE}, {0xC8,0xDF},
+ {0xC8,0xE0}, {0xC8,0xE1}, {0xC8,0xE2}, {0xC8,0xE3},
+ {0xC8,0xE4}, {0xC8,0xE5}, {0xC8,0xE6}, {0xC8,0xE7},
+ {0xC8,0xE8}, {0xC8,0xE9}, {0xC8,0xEA}, {0xC8,0xEB},
+ {0xC8,0xEC}, {0xC8,0xED}, {0xC8,0xEE}, {0xC8,0xEF},
+ {0xC8,0xF0}, {0xC8,0xF1}, {0xC8,0xF2}, {0xC8,0xF3},
+ {0xC8,0xF4}, {0xC8,0xF5}, {0xC8,0xF6}, {0xC8,0xF7},
+ {0xC8,0xF8}, {0xC8,0xF9}, {0xC8,0xFA}, {0xC8,0xFB},
+ {0xC8,0xFC}, {0xC8,0xFD}, {0xC8,0xFE}, {0xFF,0x00},
+ {0xB0,0x5A}, {0xA7,0xF3}, {0xA8,0xAE}, {0xB8,0xEB},
+ {0xB7,0xC6}, {0xA6,0xEA}, {0xA5,0x79}, {0x8B,0xF8},
+ {0xC0,0x74}, {0xAB,0xB4}, {0xAA,0xF7}, {0xB3,0xE2},
+ {0xA9,0x60}, {0xC3,0x69}, {0xC4,0xEE}, {0xC3,0xB9},
+ {0xC5,0xDA}, {0xC1,0xB3}, {0xBB,0x72}, {0xC5,0xDE},
+ {0xBC,0xD6}, {0xAC,0xA5}, {0xAF,0x4F}, {0xAF,0x5F},
+ {0xB8,0xA8}, {0xB9,0x54}, {0xC0,0x64}, {0xB6,0xC3},
+ {0xA7,0x5A}, {0xC4,0xE6}, {0xC4,0xEA}, {0xC4,0xF5},
+ {0xC6,0x7D}, {0xB4,0x50}, {0xC0,0xDD}, {0xC2,0xC5},
+ {0xC4,0xB0}, {0xA9,0xD4}, {0xC3,0xBE}, {0xC4,0xFA},
+ {0xB4,0x59}, {0xAE,0xD4}, {0xAE,0xF6}, {0xAF,0x54},
+ {0xA8,0xD3}, {0xA7,0x4E}, {0xB3,0xD2}, {0xBE,0xDB},
+ {0xC3,0x72}, {0xC4,0x6C}, {0xBF,0x63}, {0xA6,0xD1},
+ {0xC4,0xAA}, {0xB8,0xB8}, {0xB8,0xF4}, {0xC5,0x53},
+ {0xBE,0x7C}, {0xC6,0x4F}, {0xB8,0x4C}, {0xB8,0x53},
+ {0xBA,0xF1}, {0xDB,0x77}, {0xBF,0xFD}, {0xB3,0xC0},
+ {0xBD,0xD7}, {0xC3,0x62}, {0xA7,0xCB}, {0xC5,0xA2},
+ {0xC5,0xA4}, {0xA8,0x63}, {0xBD,0x55}, {0xB8,0xEF},
+ {0xB9,0x70}, {0xC2,0x53}, {0xB9,0xF0}, {0xBC,0xD3},
+ {0xB2,0x5C}, {0xBA,0x7C}, {0xB2,0xD6}, {0xC1,0x5C},
+ {0xAD,0xAE}, {0xB0,0xC7}, {0xA6,0xD8}, {0xBB,0xFE},
+ {0xAD,0xE2}, {0xB8,0x57}, {0xBA,0xF0}, {0xB5,0xD9},
+ {0xB3,0xAE}, {0xC5,0xAA}, {0xCE,0xD4}, {0xBC,0xD6},
+ {0xBF,0xD5}, {0xA4,0xA6}, {0xB9,0xE7}, {0xAB,0xE3},
+ {0xB2,0x76}, {0xB2,0xA7}, {0xA5,0x5F}, {0xED,0xA8},
+ {0xAB,0x4B}, {0xB4,0x5F}, {0xA4,0xA3}, {0xAA,0x63},
+ {0xBC,0xC6}, {0xAF,0xC1}, {0xB0,0xD1}, {0xB6,0xEB},
+ {0xAC,0xD9}, {0xB8,0xAD}, {0xBB,0xA1}, {0xB1,0xFE},
+ {0xA8,0xB0}, {0xA8,0x48}, {0xAC,0x42}, {0xAD,0x59},
+ {0xB1,0xB0}, {0xB2,0xA4}, {0xAB,0x47}, {0xA8,0xE2},
+ {0xB1,0xE7}, {0xC2,0xB3}, {0xA8,0x7D}, {0xBD,0xCC},
+ {0xB6,0x71}, {0xC0,0x79}, {0xA7,0x66}, {0xA4,0x6B},
+ {0xC3,0x66}, {0xAE,0xC8}, {0xC2,0x6F}, {0xC4,0x72},
+ {0xBE,0x5B}, {0xC6,0x7A}, {0xC4,0x52}, {0xBE,0xA4},
+ {0xA4,0x4F}, {0xBE,0xE4}, {0xBE,0xFA}, {0xF7,0x65},
+ {0xA6,0x7E}, {0xBC,0xA6}, {0xC5,0xCA}, {0xBC,0xBF},
+ {0xBA,0xA7}, {0xB7,0xD2}, {0xE6,0xA3}, {0xBD,0x6D},
+ {0xC1,0x70}, {0xBD,0xFB}, {0xBD,0xAC}, {0xB3,0x73},
+ {0xC1,0xE5}, {0xA6,0x43}, {0xA6,0x48}, {0xAB,0x7C},
+ {0xAF,0x50}, {0xB5,0xF5}, {0xBB,0xA1}, {0xB7,0x47},
+ {0xA9,0xC0}, {0xB1,0xC9}, {0xC0,0xD4}, {0xC3,0xAE},
+ {0xC2,0x79}, {0xA5,0x4F}, {0xCB,0xF1}, {0xB9,0xE7},
+ {0xC0,0xAD}, {0xCC,0xB0}, {0xAC,0xC2}, {0xBC,0xFC},
+ {0xB2,0xDC}, {0xB2,0xE2}, {0xB9,0x61}, {0xB9,0x73},
+ {0xC6,0x46}, {0xBB,0xE2}, {0xA8,0xD2}, {0xC2,0xA7},
+ {0xC4,0xBF}, {0xC1,0xF5}, {0xB4,0x63}, {0xA4,0x46},
+ {0xB9,0xB1}, {0xBC,0x64}, {0xA7,0xBF}, {0xAE,0xC6},
+ {0xBC,0xD6}, {0xBF,0x52}, {0xC0,0xF8}, {0xE7,0x64},
+ {0xBF,0xF1}, {0xC0,0x73}, {0xB7,0x77}, {0xA8,0xBF},
+ {0xBC,0x42}, {0xCC,0xD8}, {0xAC,0x68}, {0xAC,0x79},
+ {0xB7,0xC8}, {0xAF,0x5B}, {0xAF,0x64}, {0xB2,0xB8},
+ {0xAF,0xC3}, {0xC3,0xFE}, {0xA4,0xBB}, {0xBC,0xAE},
+ {0xB3,0xB0}, {0xAD,0xDB}, {0xB1,0x5B}, {0xB2,0x5F},
+ {0xBD,0xFC}, {0xAB,0xDF}, {0xB7,0x58}, {0xAE,0xDF},
+ {0xB2,0x76}, {0xB6,0xA9}, {0xA7,0x51}, {0xA6,0x4F},
+ {0xBC,0x69}, {0xA9,0xF6}, {0xA7,0xF5}, {0xB1,0xF9},
+ {0xAA,0x64}, {0xB2,0x7A}, {0xB5,0x67}, {0xBF,0xA9},
+ {0xB8,0xCC}, {0xA8,0xBD}, {0xC2,0xF7}, {0xB0,0xCE},
+ {0xB7,0xC4}, {0xA7,0x5B}, {0xBF,0x4D}, {0xBF,0x5A},
+ {0xC4,0xA9}, {0xC5,0xEC}, {0xC5,0xEF}, {0xAA,0x4C},
+ {0xB2,0x4F}, {0xC1,0x7B}, {0xA5,0xDF}, {0xB2,0xC1},
+ {0xB2,0xC9}, {0xAA,0xAC}, {0xAA,0xA5}, {0xC3,0xD1},
+ {0xA4,0xB0}, {0xAF,0xF9}, {0xA8,0xEB}, {0xA4,0xC1},
+ {0xAB,0xD7}, {0xA9,0xDD}, {0xBF,0x7D}, {0xA6,0x76},
+ {0xAC,0x7D}, {0xBC,0xC9}, {0xBF,0xE7}, {0xA6,0xE6},
+ {0xAD,0xB0}, {0xA8,0xA3}, {0xB9,0xF8}, {0xC9,0x4A},
+ {0xDD,0xFC}, {0xB6,0xEF}, {0xB4,0xB8}, {0xE8,0xF9},
+ {0xBD,0xDE}, {0xAF,0x71}, {0xAF,0xAB}, {0xB2,0xBB},
+ {0xBA,0xD6}, {0xB9,0x74}, {0xBA,0xEB}, {0xA6,0xD0},
+ {0xBD,0xD1}, {0xB6,0x68}, {0xB3,0xA3}, {0xB6,0xBA},
+ {0xB9,0x7D}, {0xC0,0x5D}, {0xC5,0x62}, {0xA1,0x4A},
+ {0xA1,0x57}, {0xA1,0x59}, {0xA1,0x5B}, {0xA1,0x5F},
+ {0xA1,0x60}, {0xA1,0x63}, {0xA1,0x64}, {0xA1,0x67},
+ {0xA1,0x68}, {0xA1,0x6B}, {0xA1,0x6C}, {0xA1,0x6F},
+ {0xA1,0x70}, {0xA1,0x73}, {0xA1,0x74}, {0xA1,0x77},
+ {0xA1,0x78}, {0xA1,0x7B}, {0xA1,0x7C}, {0xA1,0xC6},
+ {0xA1,0xC7}, {0xA1,0xCA}, {0xA1,0xCB}, {0xA1,0xC8},
+ {0xA1,0xC9}, {0xA1,0x5C}, {0xA1,0x4D}, {0xA1,0x4E},
+ {0xA1,0x4F}, {0xA1,0x51}, {0xA1,0x52}, {0xA1,0x53},
+ {0xA1,0x54}, {0xA1,0x7D}, {0xA1,0x7E}, {0xA1,0xA1},
+ {0xA1,0xA2}, {0xA1,0xA3}, {0xA1,0xA4}, {0xA1,0xCC},
+ {0xA1,0xCD}, {0xA1,0xCE}, {0xA1,0xDE}, {0xA1,0xDF},
+ {0xA1,0xE0}, {0xA1,0xE1}, {0xA1,0xE2}, {0xA2,0x42},
+ {0xA2,0x4C}, {0xA2,0x4D}, {0xA2,0x4E}, {0xA1,0x49},
+ {0xC8,0xD0}, {0xA1,0xAD}, {0xA2,0x43}, {0xA2,0x48},
+ {0xA1,0xAE}, {0xC8,0xCF}, {0xA1,0x5D}, {0xA1,0x5E},
+ {0xA1,0xAF}, {0xA1,0xCF}, {0xA1,0x41}, {0xA1,0xD0},
+ {0xA1,0x44}, {0xA1,0xFE}, {0xA2,0xAF}, {0xA2,0xB0},
+ {0xA2,0xB1}, {0xA2,0xB2}, {0xA2,0xB3}, {0xA2,0xB4},
+ {0xA2,0xB5}, {0xA2,0xB6}, {0xA2,0xB7}, {0xA2,0xB8},
+ {0xA1,0x47}, {0xA1,0x46}, {0xA1,0xD5}, {0xA1,0xD7},
+ {0xA1,0xD6}, {0xA1,0x48}, {0xA2,0x49}, {0xA2,0xCF},
+ {0xA2,0xD0}, {0xA2,0xD1}, {0xA2,0xD2}, {0xA2,0xD3},
+ {0xA2,0xD4}, {0xA2,0xD5}, {0xA2,0xD6}, {0xA2,0xD7},
+ {0xA2,0xD8}, {0xA2,0xD9}, {0xA2,0xDA}, {0xA2,0xDB},
+ {0xA2,0xDC}, {0xA2,0xDD}, {0xA2,0xDE}, {0xA2,0xDF},
+ {0xA2,0xE0}, {0xA2,0xE1}, {0xA2,0xE2}, {0xA2,0xE3},
+ {0xA2,0xE4}, {0xA2,0xE5}, {0xA2,0xE6}, {0xA2,0xE7},
+ {0xA2,0xE8}, {0xC6,0xE4}, {0xA2,0x40}, {0xC6,0xE5},
+ {0xA1,0x73}, {0xA1,0xC4}, {0xA1,0xA5}, {0xA2,0xE9},
+ {0xA2,0xEA}, {0xA2,0xEB}, {0xA2,0xEC}, {0xA2,0xED},
+ {0xA2,0xEE}, {0xA2,0xEF}, {0xA2,0xF0}, {0xA2,0xF1},
+ {0xA2,0xF2}, {0xA2,0xF3}, {0xA2,0xF4}, {0xA2,0xF5},
+ {0xA2,0xF6}, {0xA2,0xF7}, {0xA2,0xF8}, {0xA2,0xF9},
+ {0xA2,0xFA}, {0xA2,0xFB}, {0xA2,0xFC}, {0xA2,0xFD},
+ {0xA2,0xFE}, {0xA3,0x40}, {0xA3,0x41}, {0xA3,0x42},
+ {0xA3,0x43}, {0xA1,0x61}, {0xA1,0x55}, {0xA1,0x62},
+ {0xA1,0xE3}, {0xA1,0x4E}, {0xA2,0x46}, {0xA2,0x47},
+ {0xC8,0xCD}, {0xA1,0xC3}, {0xC8,0xCE}, {0xA2,0x44},
+ {0xF9,0xFE}, {0x9C,0x71}, {0x93,0x75}, {0x93,0x76},
+ {0x95,0x48}, {0x8E,0xC6}, {0x8B,0xC5}, {0x8B,0xFA},
+ {0xC8,0x7C}, {0x9A,0xB4}, {0x88,0x4E}, {0x88,0x4B},
+ {0xC8,0x7A}, {0x88,0x48}, {0x88,0x47}, {0xA0,0xF6},
+ {0x88,0x45}, {0x88,0x53}, {0xFC,0xAD}, {0x8A,0xAD},
+ {0x92,0x72}, {0xFC,0x47}, {0x94,0xDF}, {0x9F,0xD1},
+ {0xFB,0xCB}, {0x92,0x7D}, {0x98,0xA4}, {0x94,0xE7},
+ {0x90,0xCB}, {0x92,0x7B}, {0x94,0xD8}, {0xFC,0x5F},
+ {0xFA,0x54}, {0x9A,0xB5}, {0x96,0xDA}, {0x92,0x79},
+ {0xFA,0x74}, {0x92,0x75}, {0x8D,0xFB}, {0x8A,0x49},
+ {0x92,0xDF}, {0x9B,0x7C}, {0xFA,0x63}, {0xFA,0x60},
+ {0x92,0x6D}, {0xFA,0x62}, {0x9A,0xB6}, {0x97,0x6B},
+ {0xFD,0x6A}, {0xFD,0x54}, {0x92,0x73}, {0x97,0xD8},
+ {0x9F,0xBB}, {0x93,0x42}, {0x92,0x76}, {0xFA,0x65},
+ {0x92,0x6C}, {0xFA,0x6E}, {0x9E,0xE0}, {0x92,0xC0},
+ {0x92,0xBF}, {0x92,0xBE}, {0x9A,0xBA}, {0x8A,0xB3},
+ {0x97,0x75}, {0xFA,0x40}, {0xFA,0x76}, {0xFB,0xD0},
+ {0xFA,0x7B}, {0xFE,0x6D}, {0x9B,0xB3}, {0x89,0xCC},
+ {0x9A,0xBE}, {0xFA,0x42}, {0x92,0xBC}, {0x94,0x5C},
+ {0x9B,0xB5}, {0x9A,0xBF}, {0x98,0xA7}, {0x97,0xA4},
+ {0x90,0xFD}, {0xFC,0x7B}, {0x9A,0xC0}, {0x92,0xC3},
+ {0x8A,0xAA}, {0x9B,0xD0}, {0x95,0x50}, {0x92,0xC6},
+ {0x98,0xA6}, {0x95,0x46}, {0xFD,0x63}, {0xFA,0xC2},
+ {0x9E,0xC3}, {0x89,0xB2}, {0x9C,0x66}, {0x90,0x53},
+ {0x97,0xC1}, {0x9A,0xC4}, {0x9A,0xC5}, {0x8E,0xEF},
+ {0xFA,0xE9}, {0x92,0x62}, {0x8A,0xF7}, {0x9A,0xC6},
+ {0x92,0xE1}, {0x9A,0xC9}, {0xFA,0xC6}, {0x97,0xA5},
+ {0x9A,0xCB}, {0xFA,0x72}, {0x8A,0x5E}, {0x94,0xE0},
+ {0x92,0xCC}, {0x8A,0xE5}, {0xFE,0x5C}, {0x9A,0xCC},
+ {0x9D,0xF9}, {0x8A,0x43}, {0x8A,0xA6}, {0x9A,0xCD},
+ {0x9A,0xCE}, {0xFA,0xEE}, {0x9B,0xCC}, {0x9A,0xCF},
+ {0x9A,0xD1}, {0x9D,0xFA}, {0x9D,0x7C}, {0x9A,0xD3},
+ {0x97,0xA6}, {0x99,0x5F}, {0xFB,0xF6}, {0x9F,0xC5},
+ {0x8A,0x59}, {0x8B,0x6B}, {0x9A,0xD4}, {0x9A,0xD5},
+ {0x97,0xA2}, {0x8A,0x44}, {0x9F,0x4A}, {0x90,0xA1},
+ {0xFD,0xA4}, {0x8A,0x64}, {0x8A,0xF2}, {0x8A,0xF8},
+ {0x9D,0xD8}, {0x94,0xD6}, {0xFA,0xFE}, {0xFB,0xA7},
+ {0x9A,0xD6}, {0x9F,0x4D}, {0xFA,0xF6}, {0x8A,0x57},
+ {0x8B,0x43}, {0x8B,0x44}, {0x8A,0xB6}, {0x8A,0xC0},
+ {0x9E,0x54}, {0x9A,0xD7}, {0x9A,0xD8}, {0x9A,0xDC},
+ {0x8A,0xCA}, {0x9E,0xA8}, {0x92,0x63}, {0x9A,0xDD},
+ {0x8B,0x65}, {0x8B,0x6F}, {0x8B,0x7E}, {0x8F,0x43},
+ {0x92,0xD0}, {0x8A,0xF4}, {0x9D,0xBE}, {0x9A,0xE1},
+ {0xFC,0xDE}, {0x9D,0xFD}, {0x8B,0x66}, {0x8B,0x70},
+ {0x8B,0x75}, {0x8A,0xE4}, {0x8B,0xA4}, {0x8A,0xED},
+ {0x8A,0x5D}, {0x8B,0x48}, {0x9D,0xED}, {0x9E,0x40},
+ {0x8A,0xEF}, {0x8A,0xF6}, {0x9E,0x76}, {0x9E,0xE3},
+ {0x9A,0xDE}, {0x8D,0xFE}, {0xFA,0xFC}, {0x9C,0xB1},
+ {0x9E,0x77}, {0x8B,0x64}, {0x8B,0x67}, {0x97,0x4B},
+ {0x96,0x53}, {0x9A,0xE0}, {0x8B,0x4A}, {0x8A,0xF1},
+ {0x8A,0xD7}, {0xA0,0xAB}, {0x8A,0xB5}, {0x8A,0x5F},
+ {0x8A,0xEE}, {0x9A,0xDF}, {0x8A,0xFE}, {0x8A,0x58},
+ {0x8B,0xA3}, {0x8B,0xA7}, {0x9A,0xE3}, {0x92,0x61},
+ {0x9D,0xD7}, {0x9E,0x7D}, {0x9E,0xA7}, {0x9E,0xAB},
+ {0x90,0x42}, {0x8B,0x79}, {0x8B,0x7A}, {0x9A,0xE6},
+ {0x9A,0xE5}, {0x8A,0x7E}, {0x9E,0x44}, {0x9A,0xE7},
+ {0x8A,0x7C}, {0x8B,0x71}, {0x9A,0xE9}, {0x9A,0xEA},
+ {0x9A,0xEB}, {0x8A,0xBD}, {0xFB,0x4E}, {0x9A,0xED},
+ {0x8A,0xF9}, {0x9E,0x63}, {0x8B,0x49}, {0x8A,0xCE},
+ {0x8B,0x6E}, {0x8A,0xE8}, {0x9A,0xEE}, {0x92,0xCE},
+ {0x8A,0x5A}, {0x8B,0x7B}, {0x8B,0x7C}, {0x9A,0xEF},
+ {0x9A,0xF0}, {0x8A,0xFA}, {0x89,0x41}, {0x8B,0x72},
+ {0x8A,0xF3}, {0x8B,0xA8}, {0x9E,0xAE}, {0x9E,0x72},
+ {0xFB,0x73}, {0xFB,0x5F}, {0x90,0xBA}, {0x91,0xFE},
+ {0x9E,0xF6}, {0x97,0xED}, {0x9A,0xF3}, {0xA0,0xEE},
+ {0x96,0x7C}, {0x93,0x45}, {0x98,0x6E}, {0xFA,0x56},
+ {0x9A,0xF5}, {0xFC,0x4B}, {0x9A,0xF4}, {0xFE,0xDE},
+ {0xFC,0xB7}, {0x97,0xF1}, {0x97,0xC7}, {0x9C,0xCB},
+ {0x92,0x40}, {0x9C,0xE8}, {0x91,0xFD}, {0x97,0x4E},
+ {0xFB,0x68}, {0x97,0x6C}, {0x8C,0xC2}, {0x97,0xE8},
+ {0xFB,0x6A}, {0x8B,0x74}, {0x8E,0xE7}, {0xFD,0xC8},
+ {0x92,0x41}, {0x96,0xA1}, {0x8E,0xF3}, {0x9A,0xF7},
+ {0x8F,0xA6}, {0xFA,0xD6}, {0x9C,0xC7}, {0xFA,0xD7},
+ {0x9A,0xF8}, {0xFB,0xA1}, {0x8E,0xC5}, {0xFB,0xA4},
+ {0xFB,0xC2}, {0x9A,0xC1}, {0x91,0xFA}, {0xFE,0xDB},
+ {0x97,0xAB}, {0x91,0x47}, {0xFB,0xB1}, {0x8F,0xEA},
+ {0x94,0xD2}, {0xFE,0x61}, {0xFA,0xCE}, {0x92,0xED},
+ {0x91,0xF3}, {0x93,0xC6}, {0x93,0x5A}, {0xFA,0xFB},
+ {0x92,0xEF}, {0xFA,0xC8}, {0x98,0x47}, {0x93,0x66},
+ {0x98,0x55}, {0x96,0xE6}, {0x9F,0x43}, {0x9F,0xAA},
+ {0x94,0xDA}, {0x92,0xEE}, {0xFC,0xAF}, {0xFB,0xFB},
+ {0x8E,0xF9}, {0x91,0xF6}, {0x93,0x64}, {0x94,0xF5},
+ {0x9C,0xB6}, {0xFB,0xAD}, {0x98,0x4E}, {0x8F,0x44},
+ {0x96,0xFD}, {0x9A,0xF9}, {0x9A,0xFA}, {0x97,0x69},
+ {0x95,0xD4}, {0x98,0x4B}, {0xFB,0xAA}, {0x98,0x7C},
+ {0x91,0xEA}, {0x9D,0xAF}, {0x9D,0xC5}, {0x91,0xF1},
+ {0x8E,0xB1}, {0x97,0xA9}, {0xFB,0xAC}, {0xFC,0xB8},
+ {0x9C,0xB9}, {0xFB,0xB0}, {0xFC,0xD2}, {0x93,0xCB},
+ {0x9A,0xFD}, {0x91,0xF4}, {0x8B,0xAC}, {0xA0,0x55},
+ {0x95,0x74}, {0x95,0xBE}, {0x97,0xAD}, {0x8E,0xE9},
+ {0x92,0xF8}, {0x97,0xBE}, {0x91,0x6C}, {0x94,0xAA},
+ {0xFC,0x63}, {0x9D,0xC6}, {0x97,0xB5}, {0x92,0xB8},
+ {0x91,0xEF}, {0xFE,0xA6}, {0x97,0x60}, {0x93,0x58},
+ {0x95,0x76}, {0x8F,0xAC}, {0x91,0xEC}, {0x97,0xB4},
+ {0x91,0xF7}, {0x97,0x4A}, {0xFB,0x49}, {0x95,0x78},
+ {0x93,0xBC}, {0x91,0xD6}, {0x93,0x55}, {0x93,0x56},
+ {0x98,0x51}, {0x8F,0xF8}, {0xFB,0xC0}, {0x93,0xF2},
+ {0x90,0xD0}, {0x9C,0x44}, {0x92,0x55}, {0x93,0x63},
+ {0x91,0xA5}, {0xA0,0xED}, {0xFD,0x6B}, {0x9A,0xFE},
+ {0x93,0x51}, {0x8C,0x57}, {0xFA,0x78}, {0xFE,0xA8},
+ {0x93,0x50}, {0xFA,0x4C}, {0x92,0xF7}, {0x9B,0x40},
+ {0xFB,0xCE}, {0x9B,0x41}, {0xFE,0xAD}, {0xFB,0xD5},
+ {0x8B,0xC2}, {0x9A,0x7C}, {0x9B,0x42}, {0x9B,0x43},
+ {0x9E,0x79}, {0xFB,0xD9}, {0x9B,0x44}, {0xA0,0xA7},
+ {0x9B,0xF3}, {0x8C,0x79}, {0x93,0x5E}, {0x89,0xCB},
+ {0x9F,0x53}, {0x93,0xD7}, {0xFB,0xE1}, {0xFE,0xD0},
+ {0xFB,0xE2}, {0xFC,0xE3}, {0x90,0x74}, {0xFB,0xE6},
+ {0x9B,0xB7}, {0x9B,0x45}, {0x9B,0x47}, {0x9F,0x50},
+ {0x9B,0x48}, {0xFC,0x5B}, {0x98,0xA9}, {0x9C,0xFD},
+ {0x88,0x4C}, {0x9B,0x4B}, {0xFB,0xEC}, {0x8C,0x69},
+ {0x9B,0xA8}, {0x8A,0xD5}, {0xFA,0x73}, {0xFD,0x59},
+ {0x91,0xA2}, {0xFB,0xED}, {0x9C,0xA9}, {0x8A,0xA8},
+ {0x9B,0xC3}, {0x8A,0xE1}, {0x9B,0x4E}, {0x95,0xD0},
+ {0x90,0x5F}, {0x97,0xEE}, {0xFC,0x4E}, {0x9B,0x4F},
+ {0x9B,0x50}, {0x9E,0xC6}, {0xFC,0x50}, {0xFD,0x73},
+ {0xFD,0xA7}, {0x9D,0xA2}, {0xFA,0x58}, {0xFA,0x5E},
+ {0xA0,0x59}, {0xFA,0x75}, {0xFB,0xBE}, {0x9C,0xA2},
+ {0x93,0x70}, {0x93,0x71}, {0x93,0x77}, {0xFE,0xEF},
+ {0x93,0x6D}, {0xFC,0x5D}, {0x90,0xB8}, {0x8A,0xFC},
+ {0xFB,0x41}, {0x9E,0x6B}, {0x94,0xE3}, {0x8E,0xE2},
+ {0x8C,0x7D}, {0x8E,0xD7}, {0x9C,0x4D}, {0x96,0xA3},
+ {0x9B,0x51}, {0x8A,0xC3}, {0x96,0xAA}, {0xFC,0x68},
+ {0x8B,0x6D}, {0xFD,0x67}, {0x8A,0xE9}, {0xFC,0xA1},
+ {0x93,0x6C}, {0x9B,0x52}, {0xFE,0x70}, {0xFC,0xA8},
+ {0xFC,0xE9}, {0x9C,0xB4}, {0x8A,0xEA}, {0x9B,0x53},
+ {0x9B,0x55}, {0x96,0xAB}, {0xFC,0xA7}, {0x9B,0x56},
+ {0x8A,0xBC}, {0x8A,0xCB}, {0x9B,0x57}, {0x89,0xCD},
+ {0x9B,0x59}, {0x9B,0x5B}, {0x93,0xA5}, {0x9B,0x5D},
+ {0x9E,0x4F}, {0x93,0xA3}, {0x8A,0x7B}, {0x8B,0x42},
+ {0x97,0x50}, {0x8F,0xB3}, {0x8A,0x50}, {0x9B,0x60},
+ {0x8B,0x45}, {0x8B,0x46}, {0x9D,0xFE}, {0x9B,0x62},
+ {0x93,0x7B}, {0x93,0xB1}, {0x8A,0x60}, {0x8A,0xD8},
+ {0x9B,0x63}, {0x8A,0x69}, {0x8A,0x47}, {0x8A,0xCC},
+ {0x93,0x7C}, {0x9B,0x65}, {0x9B,0x66}, {0x8A,0x72},
+ {0x8A,0x7A}, {0x93,0xAF}, {0x8A,0xB0}, {0x9B,0x68},
+ {0x9E,0xA3}, {0xFA,0xEC}, {0x8B,0x77}, {0x9B,0x67},
+ {0x8B,0x59}, {0xFC,0xB1}, {0xFC,0xBB}, {0x9B,0x69},
+ {0x93,0xA8}, {0x8A,0xE0}, {0x9E,0x51}, {0x8F,0x5F},
+ {0x9B,0x6A}, {0x9B,0x6B}, {0x97,0xEC}, {0x9B,0x6C},
+ {0xFE,0x4E}, {0xFD,0xC2}, {0x9B,0x6D}, {0x91,0x67},
+ {0xFC,0xCC}, {0x93,0xB6}, {0x90,0xE4}, {0x90,0xE5},
+ {0x9E,0xF2}, {0x93,0xCA}, {0x8B,0xBC}, {0x8F,0x46},
+ {0x93,0xCF}, {0xFC,0xDB}, {0xFC,0xDC}, {0x93,0xC0},
+ {0xFC,0xE6}, {0x96,0xE7}, {0xFC,0xD8}, {0xFC,0xD9},
+ {0xFD,0xA6}, {0x93,0xCE}, {0x95,0xF1}, {0x9C,0xE9},
+ {0xFC,0xE4}, {0x94,0xAF}, {0xFA,0x77}, {0x93,0xCC},
+ {0x90,0x5A}, {0x8C,0x54}, {0x93,0xBF}, {0xFB,0x51},
+ {0x93,0xB9}, {0xFE,0xD7}, {0x93,0xB7}, {0x93,0xD9},
+ {0x93,0xBB}, {0x93,0xDA}, {0x98,0xA3}, {0x90,0xD1},
+ {0x9B,0x6E}, {0xFA,0x70}, {0x9B,0xEB}, {0x9B,0x6F},
+ {0xFC,0xFC}, {0x8B,0x40}, {0xA0,0x7B}, {0x8C,0xA1},
+ {0x97,0xF7}, {0x93,0xE2}, {0xFC,0xD6}, {0x95,0x59},
+ {0x93,0xA6}, {0xFD,0x40}, {0x93,0x5F}, {0x97,0xF2},
+ {0x9C,0x76}, {0x8E,0xF8}, {0x8F,0x47}, {0x9B,0x74},
+ {0x92,0xB4}, {0x91,0xED}, {0x96,0xD2}, {0xFD,0x46},
+ {0x8F,0x4F}, {0x95,0x49}, {0x9B,0x75}, {0xFA,0x5C},
+ {0x9B,0x79}, {0xFD,0x4B}, {0x96,0xD3}, {0xFD,0x58},
+ {0x94,0x5F}, {0xA0,0xF5}, {0x92,0x43}, {0x97,0xFA},
+ {0x9D,0xD9}, {0x97,0xF4}, {0x92,0x4D}, {0xFD,0x5B},
+ {0x9B,0x7A}, {0x9E,0xD5}, {0xFA,0xAE}, {0x9C,0xC9},
+ {0x92,0x58}, {0x8E,0xC8}, {0x94,0xB4}, {0x93,0xE1},
+ {0x93,0xDF}, {0xFC,0xF0}, {0x93,0xEC}, {0x97,0xF6},
+ {0x96,0xCF}, {0x93,0xDE}, {0x8A,0xCF}, {0x9B,0xA2},
+ {0xFD,0x69}, {0x93,0x52}, {0x98,0xA2}, {0xFD,0x6E},
+ {0x8C,0xA4}, {0xFA,0x7C}, {0x93,0xFA}, {0x90,0x7C},
+ {0x8F,0x67}, {0x9D,0xB7}, {0xA0,0xE9}, {0xFA,0x4E},
+ {0xFD,0xA1}, {0x9E,0x74}, {0x9F,0xBF}, {0x9E,0xCB},
+ {0x9B,0xB9}, {0x9D,0xD4}, {0x97,0xB9}, {0x8E,0xF1},
+ {0x95,0x7B}, {0x9E,0xD2}, {0x97,0x53}, {0x96,0xA4},
+ {0x8F,0xBE}, {0x94,0xD9}, {0x90,0x58}, {0xFD,0x79},
+ {0xFD,0x7B}, {0x8E,0xDA}, {0x8E,0xFA}, {0x9B,0xA5},
+ {0x9E,0xD9}, {0x97,0xD4}, {0x90,0xBB}, {0xFD,0xBC},
+ {0xFD,0xC6}, {0x92,0x48}, {0x92,0xB5}, {0x9D,0xC1},
+ {0x92,0xB9}, {0x92,0xA6}, {0x8F,0x4B}, {0x9B,0xA6},
+ {0x92,0xB6}, {0x8E,0x40}, {0x9E,0xD8}, {0x94,0x5E},
+ {0x98,0x5F}, {0x94,0xCE}, {0x92,0x4A}, {0xFD,0x70},
+ {0x94,0x67}, {0x8D,0xEC}, {0x9B,0xD8}, {0x94,0x48},
+ {0xFA,0xC1}, {0x9C,0xF7}, {0xFD,0xBE}, {0x8F,0xDA},
+ {0xFD,0xD9}, {0xFC,0x7E}, {0x93,0xF9}, {0xFA,0x43},
+ {0xFA,0xEB}, {0xFA,0xC3}, {0x97,0xD3}, {0x95,0xF9},
+ {0x9C,0x48}, {0xFD,0xD8}, {0xA0,0xD8}, {0xFD,0xD7},
+ {0xFB,0x4A}, {0x9B,0xAF}, {0x94,0x4B}, {0xFD,0xC9},
+ {0x8E,0xAC}, {0xFD,0xB2}, {0x92,0x5A}, {0xFC,0xBD},
+ {0x92,0xD9}, {0xFD,0xD5}, {0x92,0xDD}, {0x92,0x59},
+ {0x96,0xBA}, {0x92,0x5B}, {0x9B,0xAB}, {0xFD,0xDA},
+ {0xFD,0xDE}, {0xFD,0xD3}, {0x8C,0x46}, {0xFD,0xD6},
+ {0xFD,0xDC}, {0xFD,0xDD}, {0x90,0xFE}, {0xFE,0xA1},
+ {0x8B,0xAD}, {0x9C,0xD8}, {0x9E,0x6D}, {0xFD,0x7C},
+ {0xFB,0x61}, {0x96,0xF8}, {0x96,0xF0}, {0xFC,0xF4},
+ {0xFE,0x60}, {0x98,0x52}, {0x96,0x4F}, {0x91,0x6E},
+ {0x98,0x6D}, {0x98,0x64}, {0x94,0x53}, {0xFD,0xEC},
+ {0xFB,0x78}, {0x95,0xBA}, {0x98,0x5D}, {0x92,0xF9},
+ {0x98,0x5A}, {0xFD,0xF6}, {0x93,0xD0}, {0x98,0x62},
+ {0x9B,0xAD}, {0x97,0x4F}, {0x9B,0xAE}, {0x94,0x52},
+ {0x9B,0xB0}, {0x91,0xD2}, {0x97,0xEA}, {0xFB,0x6B},
+ {0x91,0xB1}, {0xFD,0xF3}, {0x92,0xCB}, {0x9B,0xB1},
+ {0xFC,0xEC}, {0x98,0x6B}, {0x97,0x51}, {0x98,0x71},
+ {0x95,0xEF}, {0x9E,0xF3}, {0x91,0xE8}, {0x9B,0xBA},
+ {0xFB,0x4C}, {0x92,0x6A}, {0xFD,0xF8}, {0x98,0x61},
+ {0x91,0xE7}, {0x93,0xED}, {0x97,0x44}, {0x91,0xE1},
+ {0xFB,0xF5}, {0x98,0x69}, {0x8A,0x62}, {0x9B,0xBB},
+ {0x8C,0xA8}, {0x9C,0x55}, {0x8E,0x77}, {0x8A,0xB2},
+ {0x9E,0xBC}, {0x93,0xE6}, {0x93,0xA2}, {0x9B,0xBD},
+ {0x94,0xB3}, {0x93,0x7D}, {0x9E,0x66}, {0x94,0x59},
+ {0x9B,0xBF}, {0x94,0x58}, {0x9E,0xA5}, {0x9B,0xC7},
+ {0xFE,0x54}, {0x8E,0x74}, {0x8B,0xD6}, {0x94,0xB6},
+ {0xFD,0x74}, {0x98,0xC0}, {0x94,0xA5}, {0x9B,0xC8},
+ {0x95,0xED}, {0xFD,0x7E}, {0xFB,0xEB}, {0xFD,0x7D},
+ {0x97,0x6F}, {0x94,0x61}, {0x9F,0xC1}, {0x95,0xD7},
+ {0xFA,0x52}, {0x9C,0x58}, {0x9F,0x68}, {0x9B,0xE7},
+ {0xFC,0xCE}, {0x96,0xE8}, {0xFA,0x49}, {0x97,0xA1},
+ {0x95,0x4D}, {0x9E,0xF8}, {0xFE,0x49}, {0x91,0xCE},
+ {0x97,0x71}, {0x8C,0xCF}, {0xFD,0xB1}, {0xFC,0x6E},
+ {0x9C,0xF2}, {0x93,0xB8}, {0x90,0x43}, {0x97,0x59},
+ {0x94,0xD7}, {0xFE,0x66}, {0x94,0x7D}, {0xFC,0x6F},
+ {0x92,0x46}, {0xFA,0x6D}, {0x8E,0xF7}, {0xFB,0xB7},
+ {0x94,0x7C}, {0x92,0xCD}, {0x97,0xB2}, {0xFE,0x65},
+ {0x96,0x7E}, {0x97,0x58}, {0x9B,0x77}, {0x91,0xCF},
+ {0x94,0xA4}, {0x9C,0xAD}, {0x8B,0xAB}, {0x96,0xD5},
+ {0xFC,0xB3}, {0x93,0xAE}, {0x97,0x6D}, {0x94,0x46},
+ {0x95,0xF7}, {0x9C,0x46}, {0x95,0x5B}, {0x91,0xD1},
+ {0x94,0xF4}, {0xFE,0x67}, {0x92,0xA5}, {0xFE,0xDF},
+ {0x8C,0xAB}, {0x9B,0xC9}, {0xFC,0xED}, {0xFD,0xFA},
+ {0xFC,0xC8}, {0xFE,0x62}, {0x91,0xFC}, {0xFE,0x6B},
+ {0xFD,0xF9}, {0xFC,0xC7}, {0x91,0x4E}, {0x9C,0xB8},
+ {0x97,0x67}, {0x95,0xEE}, {0x9B,0xB2}, {0x94,0x60},
+ {0x94,0xA2}, {0x98,0x75}, {0x97,0xAC}, {0x91,0xD3},
+ {0x98,0x7B}, {0x8E,0xEB}, {0x97,0x6A}, {0x96,0x5E},
+ {0x97,0xEB}, {0x9F,0xF9}, {0x95,0xF8}, {0xFE,0xA2},
+ {0x8F,0xE6}, {0xFE,0x7E}, {0x9D,0xA4}, {0x97,0x68},
+ {0x8E,0xEC}, {0x94,0xBD}, {0x94,0x5B}, {0x9C,0xF6},
+ {0xFA,0xA7}, {0x9B,0xD9}, {0xFA,0x5D}, {0x96,0x56},
+ {0x97,0x62}, {0x94,0xBA}, {0xA0,0x4F}, {0x92,0xD8},
+ {0x9B,0xCB}, {0x94,0xBB}, {0x9D,0x5F}, {0x90,0xCF},
+ {0x94,0x65}, {0x9F,0x4C}, {0x90,0xD8}, {0x9E,0xBE},
+ {0xFB,0x6D}, {0x95,0xCA}, {0x9D,0xC2}, {0x97,0xF8},
+ {0x8F,0xFC}, {0x94,0x73}, {0x94,0x74}, {0xFE,0xB7},
+ {0x8A,0x4B}, {0x8A,0x55}, {0x8B,0x69}, {0x8A,0xDC},
+ {0x8B,0x76}, {0x9B,0xCE}, {0x8A,0x68}, {0xA0,0xF8},
+ {0x98,0xDF}, {0xFE,0xB5}, {0x9B,0xCF}, {0x96,0xFB},
+ {0x9B,0xFB}, {0x9E,0xCE}, {0x8E,0xE5}, {0x9E,0x7B},
+ {0x9B,0xD2}, {0x8A,0xA5}, {0xFE,0xCE}, {0x8A,0x45},
+ {0x9D,0xFC}, {0xFE,0xCF}, {0x8B,0xA5}, {0x8C,0x4A},
+ {0x8A,0xEC}, {0xFC,0xE0}, {0x94,0xAD}, {0xFE,0xD5},
+ {0x94,0xAC}, {0xFC,0x5A}, {0x9B,0xD6}, {0x8A,0x6F},
+ {0x8B,0xA9}, {0x8E,0x5F}, {0x9D,0xCB}, {0xFC,0xE7},
+ {0x9B,0xD7}, {0x93,0xC8}, {0x91,0xF0}, {0x8F,0xE0},
+ {0x9B,0xDB}, {0x90,0xED}, {0x9B,0xDC}, {0xA0,0xEC},
+ {0x98,0xFA}, {0x9B,0xE0}, {0x93,0xC7}, {0x92,0x49},
+ {0x96,0xE1}, {0x9B,0xE2}, {0x9B,0xE4}, {0x8F,0xE1},
+ {0x9B,0xE5}, {0x94,0xC0}, {0x93,0xC3}, {0x93,0xC5},
+ {0x90,0x79}, {0x97,0x7B}, {0x90,0x7E}, {0xFE,0xE6},
+ {0xFE,0x46}, {0x9D,0xB8}, {0x92,0x70}, {0x95,0xA8},
+ {0x8C,0xB0}, {0x94,0xC8}, {0x98,0xB9}, {0x91,0x40},
+ {0xFC,0xBE}, {0x91,0x57}, {0x8B,0xB2}, {0xFA,0xDF},
+ {0x9B,0xE6}, {0x96,0x43}, {0x8E,0x44}, {0x9C,0x4F},
+ {0xFE,0xF4}, {0x9B,0xE8}, {0x93,0xDC}, {0x96,0x6F},
+ {0x8E,0x4A}, {0x9B,0xED}, {0x92,0xF6}, {0x9D,0xB9},
+ {0x8E,0x4E}, {0xFB,0xCF}, {0x9E,0xC2}, {0x94,0xE5},
+ {0x9B,0xF0}, {0x94,0xE4}, {0x95,0x51}, {0x8B,0xBB},
+ {0x9B,0xF1}, {0x94,0xF0}, {0x8E,0x64}, {0x94,0xEA},
+ {0x8F,0x61}, {0x9B,0x64}, {0x8E,0x5B}, {0x9B,0xF2},
+ {0x9F,0xBE}, {0x9D,0xC9}, {0x8E,0x6C}, {0x8F,0x73},
+ {0x8C,0xAF}, {0x8F,0x75}, {0x8E,0x71}, {0x8E,0x60},
+ {0x8E,0x6A}, {0x8C,0x4C}, {0x95,0x52}, {0x95,0x54},
+ {0x8A,0xD4}, {0x9D,0xBB}, {0x95,0x43}, {0x92,0xFE},
+ {0x94,0xF2}, {0x94,0xF1}, {0xA0,0xEA}, {0x9D,0xD2},
+ {0xA0,0xB1}, {0x91,0xF8}, {0x94,0x62}, {0x9B,0xA4},
+ {0x8E,0xAD}, {0x9E,0xAD}, {0x96,0xD0}, {0xFE,0xEE},
+ {0x8A,0xB4}, {0x97,0x57}, {0x8A,0x77}, {0x9B,0xF7},
+ {0x8E,0xB5}, {0xA0,0x6D}, {0x8E,0xB6}, {0x97,0x56},
+ {0x95,0x40}, {0xA0,0xF3}, {0x94,0xBE}, {0x9B,0xFA},
+ {0xFD,0xDF}, {0x9D,0xBC}, {0x94,0xFE}, {0x8B,0xDB},
+ {0xA0,0xFE}, {0x8E,0xC0}, {0x9F,0x47}, {0x8B,0xDE},
+ {0xA0,0xFB}, {0x8E,0xC3}, {0x96,0x49}, {0xFE,0xC2},
+ {0x95,0x4C}, {0x9B,0xFD}, {0x90,0xCC}, {0x9C,0x60},
+ {0x95,0x4B}, {0x9B,0xFE}, {0x9C,0x70}, {0x9C,0x43},
+ {0x9C,0x47}, {0x8E,0xCC}, {0x8E,0x54}, {0x8E,0xE4},
+ {0x9C,0x49}, {0x8B,0x5E}, {0x95,0x5E}, {0x95,0x5C},
+ {0x9C,0x4B}, {0x8B,0xE1}, {0x8E,0xD9}, {0x9D,0xB4},
+ {0x92,0x5F}, {0x9C,0x4C}, {0x8A,0xA1}, {0x8E,0xDB},
+ {0x9C,0x56}, {0x8A,0xA2}, {0x97,0x54}, {0x9C,0x5E},
+ {0x9E,0xD4}, {0x95,0x68}, {0xA0,0xC3}, {0x8A,0xE6},
+ {0xA0,0xF7}, {0x9C,0x61}, {0x9C,0x5F}, {0xFC,0x4D},
+ {0x9E,0x5B}, {0x9E,0x69}, {0x9C,0x63}, {0xFE,0xC7},
+ {0xFE,0xC6}, {0x9C,0x67}, {0x9C,0x69}, {0x8B,0xE2},
+ {0x91,0x65}, {0x9C,0xE7}, {0x8A,0x54}, {0x9C,0x6C},
+ {0x9C,0x6E}, {0xFE,0x5D}, {0x9C,0x73}, {0x95,0x6A},
+ {0x95,0x6D}, {0x8E,0xF0}, {0x8F,0x4D}, {0x8E,0xF6},
+ {0xFA,0xBC}, {0x8C,0xD5}, {0xFB,0xDA}, {0x8B,0x4C},
+ {0xFD,0x75}, {0x9B,0xDD}, {0xFA,0xF5}, {0x9C,0x74},
+ {0x95,0x45}, {0x96,0xC6}, {0x8F,0x6A}, {0x8F,0x4E},
+ {0x9C,0x78}, {0xFA,0x55}, {0x97,0xE4}, {0x9C,0x41},
+ {0x92,0x5C}, {0x96,0xFA}, {0xFB,0x66}, {0x8E,0x65},
+ {0x98,0x49}, {0xFB,0xA8}, {0x98,0x42}, {0x9C,0x7A},
+ {0x97,0xFB}, {0x90,0xCA}, {0x9C,0x5B}, {0x97,0x4D},
+ {0x8E,0xD3}, {0x95,0x61}, {0x9F,0x4B}, {0x9F,0xB5},
+ {0x93,0xD2}, {0xFD,0xAA}, {0x98,0x40}, {0x91,0x46},
+ {0x98,0x67}, {0xFA,0x5A}, {0xFB,0xA9}, {0x98,0x41},
+ {0x8C,0xD3}, {0xFC,0xFD}, {0xFD,0xAB}, {0x91,0xBD},
+ {0x8F,0x4C}, {0x96,0xC9}, {0x8F,0x55}, {0xFB,0xAE},
+ {0x95,0x6F}, {0x9C,0x7D}, {0xA0,0xF0}, {0x94,0x6F},
+ {0xFD,0xAC}, {0x96,0xCB}, {0x96,0xCE}, {0xA0,0x56},
+ {0x9C,0xE1}, {0x96,0xC4}, {0x8F,0x5E}, {0x8F,0x6C},
+ {0x8E,0xA3}, {0xFB,0xB3}, {0xFC,0x53}, {0xFD,0xB3},
+ {0x8F,0x6B}, {0x96,0xCA}, {0x8F,0x79}, {0x9E,0x6F},
+ {0xA0,0xC5}, {0xFC,0x78}, {0x8E,0x42}, {0x8F,0x5A},
+ {0x90,0xC2}, {0x8E,0xA5}, {0x90,0x61}, {0x92,0x4F},
+ {0x93,0x73}, {0xFD,0xB5}, {0xFE,0xCC}, {0xFB,0xBD},
+ {0x8C,0xD6}, {0x98,0x43}, {0x96,0xC5}, {0x89,0xBC},
+ {0x9C,0xA3}, {0x92,0x4B}, {0x98,0x4A}, {0x8F,0xA4},
+ {0xA0,0xF1}, {0x9E,0xFB}, {0x9C,0xD2}, {0x8F,0xA7},
+ {0xFC,0x5C}, {0x98,0x45}, {0x90,0x46}, {0x8C,0xD1},
+ {0xFE,0xFA}, {0x95,0x60}, {0x9F,0x48}, {0x92,0x47},
+ {0x90,0xFB}, {0x9C,0xA4}, {0x95,0x71}, {0x9C,0xA6},
+ {0x9C,0xA7}, {0x9C,0xAA}, {0x9E,0xD3}, {0x9E,0x70},
+ {0x9C,0xAC}, {0x8F,0xAE}, {0x95,0x7D}, {0x9C,0xB0},
+ {0x97,0xB6}, {0xA0,0xBD}, {0x8A,0xDF}, {0x9E,0xAA},
+ {0x8F,0xBD}, {0x8F,0xBF}, {0x93,0x69}, {0x9B,0xA7},
+ {0xC8,0xA4}, {0xFE,0xEA}, {0x9B,0xE1}, {0x8B,0x41},
+ {0x9D,0xB6}, {0xA0,0xEB}, {0x9B,0xA3}, {0x8B,0xA1},
+ {0x8F,0xC8}, {0x89,0x4C}, {0x98,0x60}, {0x94,0xC7},
+ {0x8B,0x58}, {0x95,0xAB}, {0x95,0xAA}, {0x9C,0xC3},
+ {0x9C,0xC4}, {0x93,0xD6}, {0x9D,0xAC}, {0x8B,0xE6},
+ {0x8A,0x71}, {0x8F,0xD1}, {0x99,0xD5}, {0x90,0xF4},
+ {0x8A,0xA3}, {0x9C,0xCE}, {0x9C,0xD4}, {0x9C,0xD5},
+ {0xFB,0xC8}, {0x9D,0xB3}, {0xFC,0x70}, {0x8F,0xD7},
+ {0x9B,0x73}, {0xFA,0x5B}, {0x8F,0xD2}, {0x90,0x64},
+ {0x98,0xB6}, {0x96,0x68}, {0x9C,0xD6}, {0x98,0xBD},
+ {0x8F,0xDC}, {0xFE,0xF6}, {0x8F,0xD9}, {0x95,0x41},
+ {0x97,0xF3}, {0x9B,0xF8}, {0x9E,0x6C}, {0x8F,0xF2},
+ {0x8F,0xEE}, {0x9C,0xD7}, {0x9E,0x6E}, {0x8A,0x40},
+ {0x8F,0xEF}, {0x8F,0xF4}, {0x8F,0xF5}, {0x95,0xC2},
+ {0x98,0x6A}, {0x97,0xCF}, {0x9E,0x7C}, {0x90,0x41},
+ {0x9C,0xDB}, {0x94,0x41}, {0x9C,0xE6}, {0x9D,0xB0},
+ {0x9C,0xEA}, {0x9C,0xED}, {0x9C,0xFA}, {0x8B,0x62},
+ {0x8A,0x4E}, {0x9C,0xCA}, {0x8A,0x66}, {0x9C,0xFB},
+ {0x9C,0xFC}, {0x9C,0xFE}, {0x8A,0x53}, {0x9C,0xE5},
+ {0x9D,0x40}, {0x9D,0x41}, {0x90,0x45}, {0x8B,0x73},
+ {0x97,0xCA}, {0x9D,0x42}, {0x8A,0x61}, {0x8B,0xAE},
+ {0x8A,0xD2}, {0x8B,0xA2}, {0x9D,0xF2}, {0x9D,0x43},
+ {0x9C,0xDF}, {0x9D,0x44}, {0x8E,0xCA}, {0x90,0x4E},
+ {0x8E,0xB3}, {0x9F,0xF5}, {0x9D,0x45}, {0x90,0x4F},
+ {0x9D,0x47}, {0x89,0xCA}, {0x9C,0xB5}, {0xFB,0xFE},
+ {0x90,0x5E}, {0x90,0x63}, {0x90,0x57}, {0x90,0x66},
+ {0x9B,0xC0}, {0xFC,0xE5}, {0x91,0x62}, {0x90,0x67},
+ {0x8F,0xA1}, {0x8F,0xA2}, {0x9D,0x48}, {0xFA,0xD3},
+ {0x90,0x5D}, {0x90,0xB9}, {0x90,0x6B}, {0x8C,0x5C},
+ {0x90,0x69}, {0xFE,0x57}, {0xFE,0x55}, {0x90,0x73},
+ {0x9B,0xEF}, {0x9C,0xF0}, {0x9D,0x4B}, {0xFE,0xD9},
+ {0xFE,0xDA}, {0x91,0xE0}, {0x91,0xD8}, {0x96,0x46},
+ {0x93,0x60}, {0xFA,0x53}, {0x9C,0xD3}, {0x9D,0x4E},
+ {0xFB,0x40}, {0x8D,0xE2}, {0x94,0x42}, {0x90,0x56},
+ {0x98,0x65}, {0x8C,0x6C}, {0xFA,0x4A}, {0x9D,0x50},
+ {0x9D,0x52}, {0x95,0xAF}, {0x97,0x5A}, {0x93,0x49},
+ {0x97,0x47}, {0xA0,0xF4}, {0x97,0x78}, {0x8F,0xCF},
+ {0xFC,0x60}, {0x8C,0x4E}, {0xFC,0x56}, {0x91,0xDC},
+ {0x96,0x61}, {0x92,0xEC}, {0x93,0x5D}, {0x8E,0xDE},
+ {0x96,0xFE}, {0xFD,0x4F}, {0x95,0xDE}, {0x98,0xB0},
+ {0xA0,0x40}, {0x97,0xBD}, {0x97,0x7D}, {0x97,0xF5},
+ {0x9B,0xAC}, {0xFA,0xDA}, {0x92,0xC2}, {0x97,0xB1},
+ {0x90,0x7B}, {0x93,0xFE}, {0x94,0x7B}, {0x97,0x77},
+ {0xFA,0xBE}, {0xFD,0x43}, {0x90,0xC6}, {0x90,0xA4},
+ {0x90,0xA8}, {0x94,0xA9}, {0x90,0xA9}, {0x8C,0x65},
+ {0x95,0xE0}, {0x90,0x7D}, {0x92,0x65}, {0xFD,0xBA},
+ {0x93,0xC4}, {0xFE,0xED}, {0x9D,0xAB}, {0xA0,0xE3},
+ {0x96,0x48}, {0x9D,0x53}, {0x8A,0xA9}, {0x9B,0xC5},
+ {0x96,0x5D}, {0x97,0x5F}, {0x96,0x5F}, {0x96,0x6E},
+ {0xFB,0x5D}, {0x9D,0xB1}, {0xFE,0xA3}, {0x9D,0xB2},
+ {0x95,0xAE}, {0xFC,0xA3}, {0xA0,0xA2}, {0x96,0x55},
+ {0x9D,0x54}, {0x93,0x41}, {0x95,0xAD}, {0x91,0xD5},
+ {0x97,0x7A}, {0xFD,0xFC}, {0x8E,0x47}, {0x93,0xFD},
+ {0x90,0xA5}, {0x90,0xAC}, {0x95,0xAC}, {0x90,0xAE},
+ {0xFE,0xA5}, {0x9D,0x56}, {0x97,0xE3}, {0x95,0xE2},
+ {0x94,0x66}, {0x96,0x47}, {0x91,0xB8}, {0x9C,0xEC},
+ {0x90,0xAD}, {0x95,0xE3}, {0x8B,0x4F}, {0x8A,0xE3},
+ {0x8B,0x4D}, {0x95,0xEA}, {0x8B,0x4E}, {0x8C,0xC1},
+ {0x8B,0xED}, {0x91,0xD9}, {0xA0,0xA4}, {0x95,0xF5},
+ {0x95,0xF4}, {0x9F,0xB3}, {0xFE,0xAF}, {0xFE,0x72},
+ {0x92,0x7A}, {0xFE,0xAC}, {0x95,0xF3}, {0x9D,0x58},
+ {0x93,0x72}, {0x91,0xC5}, {0x96,0x42}, {0x90,0xCD},
+ {0x95,0xFE}, {0x91,0x59}, {0x9C,0x65}, {0x97,0xCC},
+ {0x90,0xCE}, {0x9D,0x59}, {0xFC,0xF5}, {0xFE,0xFD},
+ {0x9D,0x5B}, {0x9D,0x5C}, {0x93,0x7E}, {0x98,0xAC},
+ {0x9D,0x5E}, {0xFD,0xD0}, {0xFD,0x60}, {0x9C,0xCF},
+ {0x90,0xDD}, {0x90,0xE0}, {0x90,0xF3}, {0x98,0xB1},
+ {0x90,0xF0}, {0x93,0xBD}, {0x95,0xB7}, {0x9F,0x46},
+ {0x8E,0x4B}, {0x96,0x58}, {0x8A,0x4C}, {0x9D,0x63},
+ {0x9E,0xCF}, {0x9D,0x65}, {0x9D,0x66}, {0x96,0x5A},
+ {0x9D,0x64}, {0x8A,0x6C}, {0x8A,0xD9}, {0x9D,0x67},
+ {0x8A,0x70}, {0x8B,0xF3}, {0x91,0x50}, {0x9C,0xC1},
+ {0x9D,0x68}, {0x93,0xA7}, {0x96,0x74}, {0xA0,0xEF},
+ {0x91,0x51}, {0x96,0xC1}, {0x8C,0x64}, {0x96,0x76},
+ {0x9D,0x69}, {0xFC,0xA4}, {0x9D,0x6A}, {0x92,0x4E},
+ {0x9D,0x6B}, {0x9B,0xC1}, {0x9D,0x6C}, {0x8A,0x65},
+ {0x91,0x5D}, {0x9D,0x6D}, {0x91,0x5A}, {0x8C,0x42},
+ {0x9C,0xC0}, {0x91,0x6A}, {0x9D,0x6E}, {0x9E,0xA6},
+ {0x9D,0xCD}, {0x9D,0x6F}, {0x89,0xBB}, {0x9E,0xF9},
+ {0x96,0xB4}, {0x91,0x72}, {0x9E,0xC8}, {0x8B,0x55},
+ {0x9D,0x71}, {0x9D,0x72}, {0x9E,0xCC}, {0x91,0x74},
+ {0x9E,0xD0}, {0x90,0x5C}, {0x8E,0xD2}, {0x91,0xA8},
+ {0x91,0x77}, {0x96,0xBF}, {0x96,0xC0}, {0x8F,0xB1},
+ {0x96,0xB7}, {0x8C,0x55}, {0x91,0x78}, {0x89,0xBE},
+ {0x91,0x7C}, {0xFB,0x77}, {0x91,0x75}, {0x91,0xA3},
+ {0x91,0x76}, {0x96,0xBE}, {0x91,0x79}, {0x96,0xB6},
+ {0x91,0xA4}, {0x91,0xA6}, {0x9D,0x75}, {0x90,0x52},
+ {0xA0,0x45}, {0x91,0xA9}, {0x98,0xAA}, {0x8C,0x5F},
+ {0x8B,0xAA}, {0x9C,0xDD}, {0x9D,0x77}, {0x89,0x40},
+ {0x9E,0xEC}, {0x93,0xAA}, {0x94,0x78}, {0x9D,0x7A},
+ {0x8A,0xC9}, {0x8B,0x4B}, {0x9F,0xEC}, {0x8A,0xE2},
+ {0x9E,0x75}, {0x98,0x74}, {0x9A,0xC8}, {0xA0,0x47},
+ {0x8B,0xC3}, {0xFC,0x48}, {0xFC,0x77}, {0x9C,0x52},
+ {0x8E,0xFD}, {0x8F,0xA8}, {0x95,0x7A}, {0x8F,0xF0},
+};
+
+/* Index of the convert table */
+static const Summary16 big5hkscs_uni2index_page00[70] = {
+ /* 0x0000 */
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
+ { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0xE7EE }, { 12, 0x87BF },
+ { 23, 0xFFFF }, { 39, 0xFFFF }, { 55, 0xFFFF }, { 71, 0xFFFF },
+ /* 0x0100 */
+ { 87, 0x0003 }, { 89, 0x0C0C }, { 93, 0x0800 }, { 94, 0x0000 },
+ { 94, 0x3800 }, { 97, 0x0008 }, { 98, 0x0800 }, { 99, 0x0000 },
+ { 99, 0x0000 }, { 99, 0x0000 }, { 99, 0x0000 }, { 99, 0x0000 },
+ { 99, 0x6000 }, { 101, 0x1557 }, { 109, 0x0000 }, { 109, 0x0000 },
+ /* 0x0200 */
+ { 109, 0x0000 }, { 109, 0x0000 }, { 109, 0x0000 }, { 109, 0x0000 },
+ { 109, 0x0000 }, { 109, 0x0813 }, { 113, 0x0402 }, { 115, 0x0020 },
+ { 116, 0x0408 }, { 118, 0x0000 }, { 118, 0x0000 }, { 118, 0x0000 },
+ { 118, 0x2EC0 }, { 124, 0x0200 }, { 125, 0x0000 }, { 125, 0x0000 },
+ /* 0x0300 */
+ { 125, 0x0020 }, { 126, 0x0000 }, { 126, 0x0000 }, { 126, 0x0000 },
+ { 126, 0x0000 }, { 126, 0x0000 }, { 126, 0x0000 }, { 126, 0x0000 },
+ { 126, 0x0000 }, { 126, 0xFFFE }, { 141, 0x03FB }, { 150, 0xFFFE },
+ { 165, 0x03FB }, { 174, 0x0000 }, { 174, 0x0000 }, { 174, 0x0000 },
+ /* 0x0400 */
+ { 174, 0x0002 }, { 175, 0xFFFF }, { 191, 0xFFFF }, { 207, 0xFFFF },
+ { 223, 0xFFFF }, { 239, 0x0002 },
+};
+static const Summary16 big5hkscs_uni2index_page1e[13] = {
+ /* 0x1E00 */
+ { 240, 0x0000 }, { 240, 0x0000 }, { 240, 0x0000 }, { 240, 0x0000 },
+ { 240, 0x0000 }, { 240, 0x0000 }, { 240, 0x0000 }, { 240, 0x0000 },
+ { 240, 0x0000 }, { 240, 0x0000 }, { 240, 0x0000 }, { 240, 0xC000 },
+ { 242, 0x0003 },
+};
+static const Summary16 big5hkscs_uni2index_page20[116] = {
+ /* 0x2000 */
+ { 244, 0x0000 }, { 244, 0x3378 }, { 252, 0x00F4 }, { 257, 0x482C },
+ { 262, 0x0000 }, { 262, 0x0000 }, { 262, 0x0000 }, { 262, 0x0000 },
+ { 262, 0x0000 }, { 262, 0x0000 }, { 262, 0x1000 }, { 263, 0x0000 },
+ { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 },
+ /* 0x2100 */
+ { 263, 0x0228 }, { 266, 0x0040 }, { 267, 0x0002 }, { 268, 0x0000 },
+ { 268, 0x0000 }, { 268, 0x0000 }, { 268, 0x03FF }, { 278, 0x03FF },
+ { 288, 0x0000 }, { 288, 0x03CF }, { 296, 0x0000 }, { 296, 0x0300 },
+ { 298, 0x0000 }, { 298, 0x0000 }, { 298, 0x0080 }, { 299, 0x0000 },
+ /* 0x2200 */
+ { 299, 0x0000 }, { 299, 0xC560 }, { 305, 0x4E29 }, { 312, 0x0030 },
+ { 314, 0x0000 }, { 314, 0x0004 }, { 315, 0x00CB }, { 320, 0x0000 },
+ { 320, 0x0000 }, { 320, 0x0220 }, { 322, 0x0020 }, { 323, 0x8000 },
+ { 324, 0x0000 }, { 324, 0x0000 }, { 324, 0x0000 }, { 324, 0x0000 },
+ /* 0x2300 */
+ { 324, 0x0080 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 },
+ { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 },
+ { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 },
+ { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 },
+ /* 0x2400 */
+ { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 },
+ { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x03FF }, { 335, 0x3FF0 },
+ { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 },
+ { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 },
+ /* 0x2500 */
+ { 345, 0x1005 }, { 348, 0x1111 }, { 352, 0x1010 }, { 354, 0x1010 },
+ { 356, 0x0000 }, { 356, 0xFFFF }, { 372, 0xFFFF }, { 388, 0x001F },
+ { 393, 0xFFFE }, { 408, 0x0038 }, { 411, 0x0003 }, { 413, 0x300C },
+ { 417, 0xC8C0 }, { 422, 0x0000 }, { 422, 0x003C }, { 426, 0x0000 },
+ /* 0x2600 */
+ { 426, 0x0260 }, { 429, 0x0000 }, { 429, 0x0000 }, { 429, 0x0000 },
+ { 429, 0x0007 }, { 432, 0x0000 }, { 432, 0x0000 }, { 432, 0x0000 },
+ { 432, 0x0000 }, { 432, 0x0000 }, { 432, 0x0000 }, { 432, 0x0000 },
+ { 432, 0x0000 }, { 432, 0x0000 }, { 432, 0x0000 }, { 432, 0x0000 },
+ /* 0x2700 */
+ { 432, 0x0000 }, { 432, 0x0000 }, { 432, 0x0000 }, { 432, 0x2000 },
+};
+static const Summary16 big5hkscs_uni2index_page2e[1819] = {
+ /* 0x2E00 */
+ { 433, 0x0000 }, { 433, 0x0000 }, { 433, 0x0000 }, { 433, 0x0000 },
+ { 433, 0x0000 }, { 433, 0x0000 }, { 433, 0x0000 }, { 433, 0x0000 },
+ { 433, 0x35D1 }, { 441, 0x3020 }, { 444, 0x54A0 }, { 449, 0x5040 },
+ { 452, 0xB440 }, { 457, 0x40C0 }, { 460, 0x0008 }, { 461, 0x0000 },
+ /* 0x2F00 */
+ { 461, 0x0000 }, { 461, 0x0000 }, { 461, 0x0000 }, { 461, 0x0008 },
+ { 462, 0x0000 }, { 462, 0x0000 }, { 462, 0x0000 }, { 462, 0x0000 },
+ { 462, 0x0000 }, { 462, 0x0000 }, { 462, 0x0000 }, { 462, 0x0000 },
+ { 462, 0x0000 }, { 462, 0x0000 }, { 462, 0x0000 }, { 462, 0x0000 },
+ /* 0x3000 */
+ { 462, 0xFFEF }, { 477, 0x7037 }, { 485, 0x03FE }, { 494, 0x0001 },
+ { 495, 0xFFFE }, { 510, 0xFFFF }, { 526, 0xFFFF }, { 542, 0xFFFF },
+ { 558, 0xFFFF }, { 574, 0x780F }, { 582, 0xFFFE }, { 597, 0xFFFF },
+ { 613, 0xFFFF }, { 629, 0xFFFF }, { 645, 0xFFFF }, { 661, 0x707F },
+ /* 0x3100 */
+ { 671, 0xFFE0 }, { 682, 0xFFFF }, { 698, 0x03FF }, { 708, 0x0000 },
+ { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 },
+ { 708, 0x0000 }, { 708, 0xFFFC }, { 722, 0x0000 }, { 722, 0x0000 },
+ { 722, 0x0000 }, { 722, 0x0000 }, { 722, 0x0000 }, { 722, 0x0000 },
+ /* 0x3200 */
+ { 722, 0x0000 }, { 722, 0x0000 }, { 722, 0xFFFF }, { 738, 0xFFFF },
+ { 754, 0x000F }, { 758, 0x0000 }, { 758, 0x0000 }, { 758, 0x0000 },
+ { 758, 0xFFFF }, { 774, 0xFFFF }, { 790, 0xFFFF }, { 806, 0x0001 },
+ { 807, 0x0000 }, { 807, 0x0000 }, { 807, 0x0000 }, { 807, 0x0000 },
+ /* 0x3300 */
+ { 807, 0x0000 }, { 807, 0x0000 }, { 807, 0x0000 }, { 807, 0x0000 },
+ { 807, 0x0000 }, { 807, 0x0000 }, { 807, 0x0000 }, { 807, 0x0000 },
+ { 807, 0xC000 }, { 809, 0x7000 }, { 812, 0x0002 }, { 813, 0x0000 },
+ { 813, 0x4010 }, { 815, 0x0026 }, { 818, 0x0000 }, { 818, 0x0000 },
+ /* 0x3400 */
+ { 818, 0x0000 }, { 818, 0x0000 }, { 818, 0x0000 }, { 818, 0x0020 },
+ { 819, 0x1001 }, { 821, 0x0000 }, { 821, 0x0010 }, { 822, 0x6408 },
+ { 826, 0x0000 }, { 826, 0x0048 }, { 828, 0x8020 }, { 830, 0x1000 },
+ { 831, 0x0102 }, { 833, 0x8000 }, { 834, 0x0010 }, { 835, 0x0800 },
+ /* 0x3500 */
+ { 836, 0x0040 }, { 837, 0x0000 }, { 837, 0x0000 }, { 837, 0x4000 },
+ { 838, 0x0000 }, { 838, 0x020A }, { 841, 0x2002 }, { 843, 0x0185 },
+ { 847, 0x0010 }, { 848, 0x0180 }, { 850, 0x2022 }, { 853, 0x8000 },
+ { 854, 0x44A2 }, { 859, 0x2844 }, { 863, 0x0000 }, { 863, 0x480E },
+ /* 0x3600 */
+ { 868, 0x0200 }, { 869, 0x0500 }, { 871, 0x2008 }, { 873, 0x4220 },
+ { 876, 0x4380 }, { 880, 0x8000 }, { 881, 0x0000 }, { 881, 0x0400 },
+ { 882, 0x0002 }, { 883, 0x0400 }, { 884, 0x1420 }, { 887, 0x1223 },
+ { 892, 0x01BA }, { 898, 0x2058 }, { 902, 0x0066 }, { 906, 0x0020 },
+ /* 0x3700 */
+ { 907, 0x250A }, { 912, 0x1000 }, { 913, 0x302C }, { 918, 0x040D },
+ { 922, 0x0009 }, { 924, 0x0000 }, { 924, 0x8004 }, { 926, 0x0000 },
+ { 926, 0x0000 }, { 926, 0x0080 }, { 927, 0x0001 }, { 928, 0x4200 },
+ { 930, 0x0000 }, { 930, 0x0000 }, { 930, 0x0000 }, { 930, 0x0904 },
+ /* 0x3800 */
+ { 933, 0x8000 }, { 934, 0x0200 }, { 935, 0x2001 }, { 937, 0x0140 },
+ { 939, 0x0000 }, { 939, 0x0000 }, { 939, 0x0008 }, { 940, 0x0000 },
+ { 940, 0x0000 }, { 940, 0x0000 }, { 940, 0x0001 }, { 941, 0x0000 },
+ { 941, 0x1008 }, { 943, 0x0002 }, { 944, 0x0000 }, { 944, 0x0400 },
+ /* 0x3900 */
+ { 945, 0x0100 }, { 946, 0x0010 }, { 947, 0x0080 }, { 948, 0x8004 },
+ { 950, 0x2000 }, { 951, 0x0000 }, { 951, 0x0008 }, { 952, 0x0000 },
+ { 952, 0x0601 }, { 955, 0x0A04 }, { 958, 0x0012 }, { 960, 0x0100 },
+ { 961, 0x0000 }, { 961, 0x1000 }, { 962, 0x1024 }, { 965, 0x4900 },
+ /* 0x3A00 */
+ { 968, 0x004A }, { 971, 0x0180 }, { 973, 0x0600 }, { 975, 0x0010 },
+ { 976, 0x0800 }, { 977, 0x5084 }, { 981, 0x00C0 }, { 983, 0x0000 },
+ { 983, 0x0000 }, { 983, 0x0080 }, { 984, 0x0800 }, { 985, 0x2000 },
+ { 986, 0x0000 }, { 986, 0x4000 }, { 987, 0x0001 }, { 988, 0x0805 },
+ /* 0x3B00 */
+ { 991, 0x4000 }, { 992, 0x0200 }, { 993, 0x0804 }, { 995, 0x0200 },
+ { 996, 0x0004 }, { 997, 0x0100 }, { 998, 0x0001 }, { 999, 0x1806 },
+ { 1003, 0x0001 }, { 1004, 0x0240 }, { 1006, 0x0002 }, { 1007, 0x5000 },
+ { 1009, 0x0014 }, { 1011, 0x2080 }, { 1013, 0x1000 }, { 1014, 0x001C },
+ /* 0x3C00 */
+ { 1017, 0x2000 }, { 1018, 0x0122 }, { 1021, 0x0000 }, { 1021, 0x0000 },
+ { 1021, 0x0000 }, { 1021, 0x0010 }, { 1022, 0x0000 }, { 1022, 0x0000 },
+ { 1022, 0x0800 }, { 1023, 0x0000 }, { 1023, 0x0000 }, { 1023, 0x0000 },
+ { 1023, 0x2800 }, { 1025, 0x1042 }, { 1028, 0x8800 }, { 1030, 0x0000 },
+ /* 0x3D00 */
+ { 1030, 0x0000 }, { 1030, 0x2008 }, { 1032, 0x0000 }, { 1032, 0x0804 },
+ { 1034, 0x5040 }, { 1037, 0x8002 }, { 1039, 0x8604 }, { 1043, 0x2020 },
+ { 1045, 0x8420 }, { 1048, 0x0002 }, { 1049, 0x2020 }, { 1051, 0x8010 },
+ { 1053, 0x32C0 }, { 1058, 0x0808 }, { 1060, 0x0980 }, { 1063, 0x3088 },
+ /* 0x3E00 */
+ { 1067, 0x0040 }, { 1068, 0x0000 }, { 1068, 0x0000 }, { 1068, 0x0000 },
+ { 1068, 0x0109 }, { 1071, 0x0020 }, { 1072, 0x0000 }, { 1072, 0x0010 },
+ { 1073, 0x0000 }, { 1073, 0x0000 }, { 1073, 0x2700 }, { 1077, 0x8102 },
+ { 1080, 0x1484 }, { 1084, 0x4CC3 }, { 1091, 0x0A86 }, { 1096, 0x9419 },
+ /* 0x3F00 */
+ { 1102, 0x4051 }, { 1106, 0x0000 }, { 1106, 0x0000 }, { 1106, 0x0000 },
+ { 1106, 0x0000 }, { 1106, 0x0308 }, { 1109, 0x0008 }, { 1110, 0x1000 },
+ { 1111, 0x0000 }, { 1111, 0x0008 }, { 1112, 0x0000 }, { 1112, 0x0000 },
+ { 1112, 0x0001 }, { 1113, 0x1080 }, { 1115, 0x2020 }, { 1117, 0x0600 },
+ /* 0x4000 */
+ { 1119, 0x0210 }, { 1121, 0x2000 }, { 1122, 0x0000 }, { 1122, 0x0200 },
+ { 1123, 0x0020 }, { 1124, 0x0088 }, { 1126, 0x8424 }, { 1130, 0x0002 },
+ { 1131, 0x0000 }, { 1131, 0x0000 }, { 1131, 0x0100 }, { 1132, 0x8800 },
+ { 1134, 0x0100 }, { 1135, 0x8100 }, { 1137, 0x0000 }, { 1137, 0x0400 },
+ /* 0x4100 */
+ { 1138, 0x4218 }, { 1142, 0x0000 }, { 1142, 0x0000 }, { 1142, 0x0004 },
+ { 1143, 0x0000 }, { 1143, 0x0000 }, { 1143, 0x5080 }, { 1146, 0x8000 },
+ { 1147, 0x0000 }, { 1147, 0x0001 }, { 1148, 0x0000 }, { 1148, 0x0004 },
+ { 1149, 0x8410 }, { 1152, 0x0800 }, { 1153, 0x8000 }, { 1154, 0x0200 },
+ /* 0x4200 */
+ { 1155, 0x0000 }, { 1155, 0x0002 }, { 1156, 0x0008 }, { 1157, 0x0000 },
+ { 1157, 0x0001 }, { 1158, 0x0000 }, { 1158, 0x0401 }, { 1160, 0x0440 },
+ { 1162, 0x1000 }, { 1163, 0x0010 }, { 1164, 0x0004 }, { 1165, 0x1220 },
+ { 1168, 0x0000 }, { 1168, 0x0000 }, { 1168, 0x0000 }, { 1168, 0x1810 },
+ /* 0x4300 */
+ { 1171, 0x0000 }, { 1171, 0x0000 }, { 1171, 0x0800 }, { 1172, 0x0000 },
+ { 1172, 0x0000 }, { 1172, 0x0000 }, { 1172, 0x4000 }, { 1173, 0x0000 },
+ { 1173, 0x0000 }, { 1173, 0x0080 }, { 1174, 0x0000 }, { 1174, 0x0400 },
+ { 1175, 0x0002 }, { 1176, 0x8200 }, { 1178, 0x2000 }, { 1179, 0x0004 },
+ /* 0x4400 */
+ { 1180, 0x0006 }, { 1182, 0x0008 }, { 1183, 0x2020 }, { 1185, 0x0000 },
+ { 1185, 0x0000 }, { 1185, 0x0000 }, { 1185, 0x0000 }, { 1185, 0x0400 },
+ { 1186, 0x8000 }, { 1187, 0x8000 }, { 1188, 0x0005 }, { 1190, 0x0081 },
+ { 1192, 0x4021 }, { 1195, 0xA000 }, { 1197, 0x1E10 }, { 1202, 0x0010 },
+ /* 0x4500 */
+ { 1203, 0x0A18 }, { 1207, 0x2040 }, { 1209, 0x4080 }, { 1211, 0xA808 },
+ { 1215, 0x0008 }, { 1216, 0x1026 }, { 1220, 0x0404 }, { 1222, 0x0080 },
+ { 1223, 0x0020 }, { 1224, 0x0000 }, { 1224, 0x0000 }, { 1224, 0x0000 },
+ { 1224, 0x0000 }, { 1224, 0x0000 }, { 1224, 0x0200 }, { 1225, 0x0000 },
+ /* 0x4600 */
+ { 1225, 0x8040 }, { 1227, 0x00A0 }, { 1229, 0x0000 }, { 1229, 0x0000 },
+ { 1229, 0x0000 }, { 1229, 0x0800 }, { 1230, 0x0000 }, { 1230, 0x0400 },
+ { 1231, 0x0001 }, { 1232, 0x0000 }, { 1232, 0x0000 }, { 1232, 0x0000 },
+ { 1232, 0x8000 }, { 1233, 0x0001 }, { 1234, 0x0000 }, { 1234, 0x0020 },
+ /* 0x4700 */
+ { 1235, 0x0000 }, { 1235, 0x0108 }, { 1237, 0x0000 }, { 1237, 0x0000 },
+ { 1237, 0x4000 }, { 1238, 0x0000 }, { 1238, 0x0000 }, { 1238, 0x1000 },
+ { 1239, 0x0000 }, { 1239, 0x0100 }, { 1240, 0x0040 }, { 1241, 0x0040 },
+ { 1242, 0x0000 }, { 1242, 0x0020 }, { 1243, 0x2000 }, { 1244, 0x0010 },
+ /* 0x4800 */
+ { 1245, 0x0801 }, { 1247, 0x0000 }, { 1247, 0x0000 }, { 1247, 0x0080 },
+ { 1248, 0x0000 }, { 1248, 0x2000 }, { 1249, 0x0000 }, { 1249, 0x0002 },
+ { 1250, 0x0000 }, { 1250, 0x0800 }, { 1251, 0x6000 }, { 1253, 0x0000 },
+ { 1253, 0x0000 }, { 1253, 0x2001 }, { 1255, 0x2000 }, { 1256, 0x0408 },
+ /* 0x4900 */
+ { 1258, 0x0040 }, { 1259, 0x4002 }, { 1261, 0x2420 }, { 1264, 0x5020 },
+ { 1267, 0x0020 }, { 1268, 0x000A }, { 1270, 0x0420 }, { 1272, 0x0004 },
+ { 1273, 0x0200 }, { 1274, 0x0000 }, { 1274, 0x0082 }, { 1276, 0x0000 },
+ { 1276, 0x0000 }, { 1276, 0x8000 }, { 1277, 0x00A0 }, { 1279, 0x0000 },
+ /* 0x4A00 */
+ { 1279, 0x8000 }, { 1280, 0x2000 }, { 1281, 0x0010 }, { 1282, 0x0020 },
+ { 1283, 0x0000 }, { 1283, 0x0000 }, { 1283, 0x0000 }, { 1283, 0x0000 },
+ { 1283, 0x0000 }, { 1283, 0x0040 }, { 1284, 0x0000 }, { 1284, 0x0110 },
+ { 1286, 0x0000 }, { 1286, 0x0002 }, { 1287, 0x0010 }, { 1288, 0x8000 },
+ /* 0x4B00 */
+ { 1289, 0x0000 }, { 1289, 0x0201 }, { 1291, 0x1001 }, { 1293, 0x0080 },
+ { 1294, 0x0000 }, { 1294, 0x0000 }, { 1294, 0x8000 }, { 1295, 0x4805 },
+ { 1299, 0x4000 }, { 1300, 0x20C9 }, { 1305, 0x0000 }, { 1305, 0x6000 },
+ { 1307, 0x0001 }, { 1308, 0x0000 }, { 1308, 0x0000 }, { 1308, 0x0000 },
+ /* 0x4C00 */
+ { 1308, 0x4090 }, { 1311, 0x0000 }, { 1311, 0x0000 }, { 1311, 0x4800 },
+ { 1313, 0x0000 }, { 1313, 0x0800 }, { 1314, 0x2000 }, { 1315, 0x2000 },
+ { 1316, 0x0002 }, { 1317, 0x0000 }, { 1317, 0x4010 }, { 1319, 0x0081 },
+ { 1321, 0x2000 }, { 1322, 0x0000 }, { 1322, 0x2002 }, { 1324, 0x0000 },
+ /* 0x4D00 */
+ { 1324, 0x0200 }, { 1325, 0x0001 }, { 1326, 0x0000 }, { 1326, 0x0010 },
+ { 1327, 0x0000 }, { 1327, 0x0000 }, { 1327, 0x0000 }, { 1327, 0x0000 },
+ { 1327, 0x0000 }, { 1327, 0x1002 }, { 1329, 0x0000 }, { 1329, 0x0000 },
+ { 1329, 0x0000 }, { 1329, 0x0000 }, { 1329, 0x0000 }, { 1329, 0x0000 },
+ /* 0x4E00 */
+ { 1329, 0xFF9B }, { 1342, 0xD773 }, { 1353, 0xFD52 }, { 1363, 0xBBCF },
+ { 1375, 0xEBAC }, { 1385, 0xFF4C }, { 1396, 0x0600 }, { 1398, 0xC108 },
+ { 1402, 0x7BFF }, { 1416, 0xCF3E }, { 1427, 0x797F }, { 1439, 0x9EC8 },
+ { 1447, 0x6FDF }, { 1460, 0xF7F0 }, { 1471, 0x4F3A }, { 1480, 0xA9FF },
+ /* 0x4F00 */
+ { 1492, 0xEF3F }, { 1505, 0x27BF }, { 1516, 0xB304 }, { 1522, 0xFFDD },
+ { 1536, 0xFBEE }, { 1549, 0xFFFF }, { 1565, 0xDE9F }, { 1577, 0xFFFD },
+ { 1592, 0xAFFF }, { 1606, 0x7DF7 }, { 1619, 0xC904 }, { 1624, 0xAEED },
+ { 1635, 0xFFBF }, { 1650, 0xFFDB }, { 1664, 0xD033 }, { 1671, 0x67FF },
+ /* 0x5000 */
+ { 1684, 0xFBE9 }, { 1696, 0xDFFE }, { 1710, 0xFFEF }, { 1725, 0x18BB },
+ { 1733, 0xFFEB }, { 1747, 0xFDEA }, { 1759, 0xFF7F }, { 1774, 0x24FD },
+ { 1783, 0x79AF }, { 1794, 0x7F77 }, { 1807, 0xF04C }, { 1814, 0xFDFF },
+ { 1829, 0xEFF6 }, { 1842, 0xAEFB }, { 1854, 0xF7FB }, { 1868, 0xFB7B },
+ /* 0x5100 */
+ { 1881, 0x7FFF }, { 1896, 0x95BF }, { 1907, 0x6E77 }, { 1918, 0xBFBF },
+ { 1932, 0x3BFB }, { 1944, 0xFEF4 }, { 1956, 0x7FAF }, { 1969, 0x13F2 },
+ { 1977, 0xA7C5 }, { 1986, 0x55FE }, { 1997, 0x5DB5 }, { 2007, 0x73FF },
+ { 2020, 0xFFF8 }, { 2033, 0xF99F }, { 2045, 0x2017 }, { 2050, 0x777B },
+ /* 0x5200 */
+ { 2062, 0x5FEF }, { 2075, 0xF0CF }, { 2085, 0x47F3 }, { 2095, 0x1DFF },
+ { 2107, 0x7EDA }, { 2118, 0xFEF4 }, { 2130, 0xFF07 }, { 2141, 0xBFBC },
+ { 2153, 0xBF9F }, { 2166, 0x8FDB }, { 2177, 0x7F5B }, { 2189, 0x5A20 },
+ { 2194, 0x32AF }, { 2203, 0xEBEF }, { 2216, 0x8A5F }, { 2225, 0xDFBB },
+ /* 0x5300 */
+ { 2238, 0xEF62 }, { 2248, 0xB6E7 }, { 2259, 0xB49F }, { 2269, 0xFB9F },
+ { 2282, 0x77BF }, { 2295, 0xF49E }, { 2305, 0xF2DB }, { 2316, 0xFBBF },
+ { 2330, 0xC414 }, { 2335, 0xF7DC }, { 2347, 0x7FF5 }, { 2360, 0x0A55 },
+ { 2366, 0x3F2E }, { 2376, 0x8FD7 }, { 2387, 0xFF7F }, { 2402, 0x59EF },
+ /* 0x5400 */
+ { 2413, 0xFFDA }, { 2426, 0xFF5F }, { 2440, 0xFFFB }, { 2455, 0x7BFF },
+ { 2469, 0xEDEF }, { 2482, 0x0010 }, { 2483, 0xBFFF }, { 2498, 0xFDFF },
+ { 2513, 0xF9F7 }, { 2526, 0x55FF }, { 2538, 0xFFFF }, { 2554, 0xFFDF },
+ { 2569, 0xFBFF }, { 2584, 0x4441 }, { 2588, 0xEFFF }, { 2603, 0xBD8E },
+ /* 0x5500 */
+ { 2613, 0xFFFE }, { 2628, 0x459F }, { 2637, 0xFDE8 }, { 2648, 0xDBFF },
+ { 2662, 0xEFFB }, { 2676, 0xF0EF }, { 2687, 0x0E7E }, { 2696, 0xFAEE },
+ { 2708, 0xFFDF }, { 2723, 0xB73F }, { 2735, 0x7FFE }, { 2749, 0x9E3F },
+ { 2760, 0xFFFF }, { 2776, 0xFFFF }, { 2792, 0x97FE }, { 2804, 0xFEE7 },
+ /* 0x5600 */
+ { 2817, 0xF377 }, { 2829, 0xF8FF }, { 2842, 0xF6AF }, { 2854, 0xEFFD },
+ { 2868, 0xF76F }, { 2881, 0x679D }, { 2891, 0xFF7F }, { 2906, 0xDFDF },
+ { 2920, 0xFEFF }, { 2935, 0xF7AD }, { 2947, 0xFDF2 }, { 2959, 0xF2FE },
+ { 2971, 0x3F6F }, { 2983, 0xECDA }, { 2993, 0xECB7 }, { 3004, 0xA683 },
+ /* 0x5700 */
+ { 3011, 0x3F9F }, { 3023, 0xFD7C }, { 3035, 0xF70D }, { 3045, 0xE81D },
+ { 3053, 0xFEEF }, { 3067, 0x8897 }, { 3074, 0xAFD6 }, { 3085, 0xFCFF },
+ { 3099, 0xBD0D }, { 3108, 0xFFB9 }, { 3121, 0x44BF }, { 3130, 0xFF70 },
+ { 3141, 0xD9DE }, { 3152, 0xF0B5 }, { 3161, 0xF2FF }, { 3174, 0x7FFF },
+ /* 0x5800 */
+ { 3189, 0x7FFF }, { 3204, 0x7A15 }, { 3212, 0xF7FF }, { 3227, 0xAFFF },
+ { 3241, 0xFF91 }, { 3252, 0xFFBE }, { 3266, 0xBB3C }, { 3276, 0xFE7E },
+ { 3289, 0xCFEF }, { 3302, 0xF71F }, { 3314, 0xDFEB }, { 3327, 0xFC6B },
+ { 3338, 0xCBE6 }, { 3348, 0xFF7F }, { 3363, 0x9B9D }, { 3373, 0xFE1D },
+ /* 0x5900 */
+ { 3384, 0xF4FC }, { 3395, 0x96F6 }, { 3405, 0xFEB5 }, { 3417, 0x5196 },
+ { 3424, 0xC7B1 }, { 3433, 0x15BB }, { 3442, 0x6EA7 }, { 3452, 0xFBFF },
+ { 3467, 0xE63F }, { 3478, 0xE7DD }, { 3490, 0xD1FF }, { 3502, 0x7FFF },
+ { 3517, 0xFFFB }, { 3532, 0x7F5F }, { 3545, 0xFF7B }, { 3559, 0xFFFF },
+ /* 0x5A00 */
+ { 3575, 0xBE0F }, { 3585, 0xDFEE }, { 3598, 0x7EBB }, { 3610, 0x73E8 },
+ { 3619, 0x37FF }, { 3632, 0xFFFF }, { 3648, 0x7FFF }, { 3663, 0xFF83 },
+ { 3674, 0xDD5E }, { 3685, 0xFEFF }, { 3700, 0xDAE7 }, { 3711, 0xFFFF },
+ { 3727, 0xFFDF }, { 3742, 0xFFE8 }, { 3754, 0x7F7F }, { 3768, 0xEFFD },
+ /* 0x5B00 */
+ { 3782, 0xBBAE }, { 3793, 0xEEFB }, { 3806, 0xFDFB }, { 3820, 0xF115 },
+ { 3828, 0xFDFB }, { 3842, 0xBDFB }, { 3855, 0x7B7C }, { 3866, 0xBDFF },
+ { 3880, 0xDBBF }, { 3893, 0xFFED }, { 3907, 0x75FC }, { 3918, 0x8379 },
+ { 3926, 0x7CFF }, { 3939, 0xC3FF }, { 3951, 0xDFFF }, { 3966, 0x856F },
+ /* 0x5C00 */
+ { 3975, 0xFFBA }, { 3988, 0xD47F }, { 3999, 0x153D }, { 4007, 0xDF8B },
+ { 4018, 0xFFF3 }, { 4032, 0x737B }, { 4043, 0xF7BD }, { 4056, 0x5E1A },
+ { 4064, 0xBF60 }, { 4073, 0xF63F }, { 4085, 0xFFFF }, { 4101, 0x05EB },
+ { 4109, 0xDFC6 }, { 4120, 0xCFDF }, { 4133, 0xF720 }, { 4141, 0xABF3 },
+ /* 0x5D00 */
+ { 4152, 0xF8C3 }, { 4161, 0xEFF7 }, { 4175, 0xD3FD }, { 4187, 0xF7FF },
+ { 4202, 0x5FEF }, { 4215, 0x4AE7 }, { 4224, 0x9BAC }, { 4233, 0xFE97 },
+ { 4245, 0x6FF7 }, { 4258, 0xF6BC }, { 4269, 0xFF97 }, { 4282, 0x37F7 },
+ { 4294, 0xAACF }, { 4304, 0xE9F6 }, { 4315, 0x49E7 }, { 4324, 0xE2BF },
+ /* 0x5E00 */
+ { 4335, 0x5E5C }, { 4344, 0xAFF6 }, { 4356, 0x6B3F }, { 4367, 0x61D8 },
+ { 4374, 0xFD3F }, { 4387, 0xFBB8 }, { 4398, 0xFFCF }, { 4412, 0xFF7D },
+ { 4426, 0xBFDD }, { 4439, 0x1EE4 }, { 4447, 0x7DFD }, { 4460, 0x63FF },
+ { 4472, 0x7FF6 }, { 4485, 0xFFFF }, { 4501, 0xD3EF }, { 4513, 0xDFDE },
+ /* 0x5F00 */
+ { 4526, 0xFDB6 }, { 4538, 0xADBC }, { 4548, 0x63FC }, { 4558, 0x15EB },
+ { 4567, 0xFF59 }, { 4579, 0x33D3 }, { 4588, 0xBEBE }, { 4600, 0xFBDF },
+ { 4614, 0x1FEF }, { 4626, 0xDBC7 }, { 4637, 0xFFF3 }, { 4651, 0xFEE6 },
+ { 4663, 0xB23F }, { 4673, 0xEBF7 }, { 4686, 0xED3B }, { 4697, 0xADBA },
+ /* 0x6000 */
+ { 4707, 0xFE01 }, { 4715, 0x7EFF }, { 4729, 0xFFFF }, { 4745, 0x0ABE },
+ { 4753, 0x36FF }, { 4765, 0xEF3D }, { 4777, 0xFFFC }, { 4791, 0xC0A5 },
+ { 4797, 0x77FB }, { 4810, 0xFCF5 }, { 4822, 0x019D }, { 4828, 0xFFFF },
+ { 4844, 0xFFFB }, { 4859, 0xFFBA }, { 4872, 0x03DF }, { 4881, 0xFFFF },
+ /* 0x6100 */
+ { 4897, 0xFFFB }, { 4912, 0xBF7D }, { 4925, 0xDB8C }, { 4934, 0xE8D5 },
+ { 4943, 0xFFF7 }, { 4958, 0xFF7D }, { 4972, 0xDDFF }, { 4986, 0x76FF },
+ { 4999, 0x7E8F }, { 5010, 0xBF7F }, { 5024, 0xFF96 }, { 5036, 0xD7FF },
+ { 5050, 0xBFEF }, { 5064, 0xC549 }, { 5071, 0x6FFD }, { 5084, 0xFFE7 },
+ /* 0x6200 */
+ { 5098, 0x779B }, { 5109, 0x8E77 }, { 5119, 0x7EBF }, { 5132, 0xE6DD },
+ { 5143, 0x7FCF }, { 5156, 0x5F1F }, { 5167, 0xE17F }, { 5178, 0xFEDF },
+ { 5192, 0xD7FF }, { 5206, 0x21FF }, { 5216, 0xFF50 }, { 5226, 0xFB7B },
+ { 5239, 0xFFFC }, { 5253, 0x9FFF }, { 5267, 0xF820 }, { 5273, 0xFFFF },
+ /* 0x6300 */
+ { 5289, 0xFB8F }, { 5301, 0x017B }, { 5308, 0xFF00 }, { 5316, 0x7FFE },
+ { 5330, 0xFFFF }, { 5346, 0x07F3 }, { 5355, 0xFBB0 }, { 5365, 0xBFE7 },
+ { 5378, 0xFFBF }, { 5393, 0xFBD7 }, { 5406, 0xFFBF }, { 5421, 0x6203 },
+ { 5426, 0xFFFF }, { 5442, 0xFFEF }, { 5457, 0xEFFF }, { 5472, 0x5B7F },
+ /* 0x6400 */
+ { 5484, 0xFEC0 }, { 5493, 0xDDFD }, { 5506, 0xFDFF }, { 5521, 0xEFFD },
+ { 5535, 0x680B }, { 5541, 0xFF1F }, { 5554, 0xFBE3 }, { 5566, 0xBFFF },
+ { 5581, 0xBFA4 }, { 5591, 0xF7EF }, { 5605, 0xFA7D }, { 5617, 0xF85F },
+ { 5628, 0xEEBF }, { 5641, 0x2FDD }, { 5652, 0xBFFF }, { 5667, 0xFD9F },
+ /* 0x6500 */
+ { 5680, 0xF6DB }, { 5692, 0xFBFB }, { 5706, 0xFE7F }, { 5720, 0xEBFD },
+ { 5733, 0xA76A }, { 5742, 0xF3FA }, { 5754, 0xBDFC }, { 5766, 0x9FFC },
+ { 5778, 0x1BFF }, { 5790, 0xFAF7 }, { 5803, 0xDDB7 }, { 5815, 0xFBED },
+ { 5828, 0xF87E }, { 5839, 0xECDF }, { 5851, 0xF36F }, { 5863, 0xBC3F },
+ /* 0x6600 */
+ { 5874, 0xFFFD }, { 5889, 0xF13F }, { 5900, 0xE9FF }, { 5913, 0x067F },
+ { 5922, 0x9FBE }, { 5934, 0xFE8E }, { 5945, 0xDDFE }, { 5958, 0x7FDF },
+ { 5972, 0x7FF1 }, { 5984, 0xA7F7 }, { 5996, 0xEF17 }, { 6007, 0xEFFF },
+ { 6022, 0xFFD1 }, { 6034, 0x7F44 }, { 6043, 0x7B59 }, { 6053, 0xD3DF },
+ /* 0x6700 */
+ { 6065, 0xFF3F }, { 6079, 0xEBFD }, { 6092, 0x7DEF }, { 6105, 0xFF7A },
+ { 6118, 0xFBF0 }, { 6129, 0xF6EB }, { 6141, 0xBC87 }, { 6150, 0xFFFF },
+ { 6166, 0xFAFA }, { 6178, 0xB7BF }, { 6191, 0xD011 }, { 6196, 0x8FFF },
+ { 6209, 0xFF7F }, { 6224, 0xFFDF }, { 6239, 0xFEFC }, { 6252, 0xD7FF },
+ /* 0x6800 */
+ { 6266, 0x201F }, { 6272, 0xFDDD }, { 6285, 0xEF67 }, { 6297, 0x7FFE },
+ { 6311, 0xFFFF }, { 6327, 0x207B }, { 6334, 0xE820 }, { 6339, 0xFBF6 },
+ { 6352, 0x9FFF }, { 6366, 0xB9DF }, { 6378, 0xFFDF }, { 6393, 0x227F },
+ { 6402, 0x7FF8 }, { 6414, 0xF5FF }, { 6428, 0xDFDB }, { 6441, 0x3FFF },
+ /* 0x6900 */
+ { 6455, 0xFFFF }, { 6471, 0x0FBF }, { 6482, 0x9420 }, { 6486, 0xFBFD },
+ { 6500, 0xDF7F }, { 6514, 0xFFFE }, { 6529, 0xFFFF }, { 6545, 0x0FFF },
+ { 6557, 0x646D }, { 6565, 0xDFFB }, { 6579, 0xFFFF }, { 6595, 0xFAFF },
+ { 6609, 0xFE5F }, { 6622, 0x027B }, { 6629, 0x7BF6 }, { 6641, 0xFFDE },
+ /* 0x6A00 */
+ { 6655, 0xBFFF }, { 6670, 0xFFFA }, { 6684, 0x39EB }, { 6694, 0xFF3C },
+ { 6706, 0xFBFB }, { 6720, 0xEFFF }, { 6735, 0xAFFF }, { 6749, 0xC452 },
+ { 6755, 0xF6BF }, { 6768, 0xFEFF }, { 6783, 0xF9FF }, { 6797, 0x6FFE },
+ { 6810, 0xBFEC }, { 6822, 0xFF1B }, { 6834, 0xDDA3 }, { 6844, 0x1F4B },
+ /* 0x6B00 */
+ { 6853, 0x8F3D }, { 6863, 0x67CF }, { 6874, 0xB12B }, { 6882, 0xFFFE },
+ { 6897, 0x7FEE }, { 6910, 0xDAF7 }, { 6922, 0xA4FF }, { 6933, 0xCFD4 },
+ { 6943, 0xF75F }, { 6956, 0xCBF2 }, { 6966, 0xECFD }, { 6978, 0xB4ED },
+ { 6988, 0xBFFB }, { 7002, 0x5DDD }, { 7013, 0x9DDF }, { 7025, 0xFF8D },
+ /* 0x6C00 */
+ { 7037, 0xBB7F }, { 7050, 0xBF7B }, { 7063, 0xDDFB }, { 7076, 0xEFFB },
+ { 7090, 0xFE4F }, { 7102, 0xFFB5 }, { 7115, 0xEFE3 }, { 7127, 0xEF7F },
+ { 7141, 0xFFFF }, { 7157, 0xBF7D }, { 7170, 0xFC04 }, { 7177, 0xFFDF },
+ { 7192, 0xFEFF }, { 7207, 0xFEFF }, { 7222, 0xFFAF }, { 7236, 0x822F },
+ /* 0x6D00 */
+ { 7243, 0xFFFF }, { 7259, 0xEFC7 }, { 7271, 0xFFF5 }, { 7285, 0xFFFF },
+ { 7301, 0x4007 }, { 7305, 0xDF80 }, { 7313, 0xF7FF }, { 7328, 0xFFF7 },
+ { 7343, 0xFFFF }, { 7359, 0x01FF }, { 7368, 0xDC30 }, { 7375, 0xFFBE },
+ { 7389, 0xBFF5 }, { 7402, 0xFFFF }, { 7418, 0xFF7F }, { 7433, 0x7EFF },
+ /* 0x6E00 */
+ { 7447, 0x843D }, { 7454, 0xBF20 }, { 7462, 0xFFFF }, { 7478, 0xFF7F },
+ { 7493, 0xEEFB }, { 7506, 0xFF7F }, { 7521, 0xCBFF }, { 7534, 0x13DE },
+ { 7543, 0xEB40 }, { 7550, 0xFFDD }, { 7564, 0xCCFF }, { 7576, 0xFFFF },
+ { 7592, 0xFFFF }, { 7608, 0x3F7F }, { 7621, 0xFB04 }, { 7629, 0xFFF6 },
+ /* 0x6F00 */
+ { 7643, 0xFFFF }, { 7659, 0xD7FC }, { 7671, 0xFEFF }, { 7686, 0xFFFF },
+ { 7702, 0xC01B }, { 7708, 0xFDFF }, { 7723, 0xFEDF }, { 7737, 0xFFDD },
+ { 7751, 0x7FF7 }, { 7765, 0xE0FD }, { 7775, 0xFFFF }, { 7791, 0xFF7F },
+ { 7806, 0xFFDF }, { 7821, 0xFF38 }, { 7832, 0xFBDF }, { 7846, 0xDDD7 },
+ /* 0x7000 */
+ { 7858, 0xFEFB }, { 7872, 0xFFF2 }, { 7885, 0x9FDF }, { 7898, 0xDFBF },
+ { 7912, 0x3F7F }, { 7925, 0xFDF7 }, { 7939, 0x9FFF }, { 7953, 0xF7F3 },
+ { 7966, 0xCE7E }, { 7977, 0x877E }, { 7987, 0xFAFB }, { 8000, 0x7FBB },
+ { 8013, 0xFDF1 }, { 8025, 0xF7FF }, { 8040, 0x8017 }, { 8045, 0xFFFB },
+ /* 0x7100 */
+ { 8060, 0x7E75 }, { 8071, 0xFE89 }, { 8081, 0xDB6F }, { 8093, 0x4C7F },
+ { 8103, 0xFEFF }, { 8118, 0xF75F }, { 8131, 0x5FFF }, { 8145, 0x7DEF },
+ { 8158, 0xD7F7 }, { 8171, 0xFFD7 }, { 8185, 0xB7BF }, { 8198, 0xF7BF },
+ { 8212, 0xCFFF }, { 8226, 0xBF77 }, { 8239, 0x79F7 }, { 8251, 0xFB77 },
+ /* 0x7200 */
+ { 8264, 0xF6EF }, { 8277, 0xEEF9 }, { 8289, 0x7FDC }, { 8301, 0xEF61 },
+ { 8311, 0x9FD7 }, { 8323, 0xFFED }, { 8337, 0xD6CF }, { 8348, 0xFBDD },
+ { 8361, 0xFBF7 }, { 8375, 0xEDFF }, { 8389, 0xF7FE }, { 8403, 0xA435 },
+ { 8410, 0x7E7F }, { 8423, 0x97D7 }, { 8434, 0x0F5F }, { 8444, 0xFFD8 },
+ /* 0x7300 */
+ { 8456, 0x9D97 }, { 8466, 0x7BCF }, { 8478, 0x7FEC }, { 8490, 0xDFFF },
+ { 8505, 0xF73F }, { 8518, 0xEF87 }, { 8529, 0xDFE7 }, { 8542, 0xFDFF },
+ { 8557, 0xDFFF }, { 8572, 0xF1FC }, { 8583, 0x3FF7 }, { 8596, 0xDFFC },
+ { 8609, 0xFFED }, { 8623, 0x7FFD }, { 8637, 0xEFFF }, { 8652, 0xFFF8 },
+ /* 0x7400 */
+ { 8665, 0x3FFF }, { 8679, 0xFEF6 }, { 8692, 0xFF7F }, { 8707, 0x97FF },
+ { 8720, 0xEFFF }, { 8735, 0xFEFF }, { 8750, 0xFFBD }, { 8764, 0xF67F },
+ { 8777, 0x3FEF }, { 8790, 0xDFB5 }, { 8802, 0xAFFB }, { 8815, 0xEFF7 },
+ { 8829, 0x9D2F }, { 8839, 0xFFF9 }, { 8853, 0x53FF }, { 8865, 0xE9F7 },
+ /* 0x7500 */
+ { 8877, 0xF9BD }, { 8889, 0xF7FF }, { 8904, 0xFF66 }, { 8916, 0xEFBF },
+ { 8930, 0xFDC5 }, { 8941, 0xBE3A }, { 8951, 0xFCFD }, { 8964, 0xE7C5 },
+ { 8974, 0xFCD9 }, { 8985, 0x6737 }, { 8995, 0x0CBC }, { 9002, 0xFF7F },
+ { 9017, 0xFDBF }, { 9031, 0xFFB7 }, { 9045, 0xA0DF }, { 9054, 0xFFFF },
+ /* 0x7600 */
+ { 9070, 0xBF8F }, { 9082, 0xFE7B }, { 9095, 0xB3FF }, { 9108, 0x3D3F },
+ { 9119, 0xF3CD }, { 9130, 0x97DF }, { 9142, 0xF6F7 }, { 9155, 0xFF7F },
+ { 9170, 0xCFD6 }, { 9181, 0x7E6D }, { 9192, 0xEC72 }, { 9201, 0xEDB1 },
+ { 9211, 0x777C }, { 9222, 0xFE5C }, { 9233, 0xF6FA }, { 9245, 0x5FBF },
+ /* 0x7700 */
+ { 9258, 0xDFBA }, { 9270, 0xEE2F }, { 9281, 0xABFD }, { 9293, 0x7FFE },
+ { 9307, 0xFCF9 }, { 9319, 0xDF74 }, { 9330, 0xFFEF }, { 9345, 0xFF84 },
+ { 9355, 0xFBBF }, { 9369, 0xFFAA }, { 9381, 0xBDAF }, { 9393, 0xFEFF },
+ { 9408, 0xFEBC }, { 9420, 0x7FB9 }, { 9432, 0xF3ED }, { 9444, 0x7F9F },
+ /* 0x7800 */
+ { 9457, 0xF36C }, { 9467, 0xF11F }, { 9477, 0xFFEF }, { 9492, 0x33BF },
+ { 9503, 0x7FBC }, { 9515, 0x701F }, { 9523, 0xFF75 }, { 9536, 0xDE03 },
+ { 9544, 0xF3FB }, { 9557, 0xC7FA }, { 9568, 0xBFBF }, { 9582, 0x5F5F },
+ { 9594, 0xFFBA }, { 9607, 0xEDBF }, { 9620, 0xF7BF }, { 9634, 0xFEBF },
+ /* 0x7900 */
+ { 9648, 0x5276 }, { 9656, 0x7A9F }, { 9667, 0xFFFA }, { 9681, 0xFF7E },
+ { 9695, 0x9FF7 }, { 9708, 0xFFFF }, { 9724, 0x2FBF }, { 9736, 0xF61F },
+ { 9747, 0xEDCF }, { 9759, 0xBFFF }, { 9774, 0x7FF7 }, { 9788, 0xEFDF },
+ { 9802, 0xFB73 }, { 9814, 0xF176 }, { 9824, 0x7EDD }, { 9836, 0x0DD2 },
+ /* 0x7A00 */
+ { 9843, 0x3D7D }, { 9854, 0xDFBF }, { 9868, 0xED45 }, { 9877, 0xFE83 },
+ { 9887, 0x7FF9 }, { 9900, 0x9DD0 }, { 9908, 0x7BA7 }, { 9919, 0xEF73 },
+ { 9931, 0x9FFB }, { 9944, 0xC3FF }, { 9956, 0xDF0D }, { 9966, 0xDDFF },
+ { 9980, 0x8FBF }, { 9992, 0xBF0A }, { 10001, 0xEEFD }, { 10014, 0xEEC0 },
+ /* 0x7B00 */
+ { 10022, 0xDF73 }, { 10034, 0xEF1F }, { 10046, 0xFFFD }, { 10061, 0x0B3F },
+ { 10070, 0xFFFD }, { 10085, 0x0177 }, { 10092, 0xF2FF }, { 10105, 0x09FF },
+ { 10115, 0xFDB4 }, { 10126, 0x3BF7 }, { 10138, 0xB01F }, { 10146, 0x43B6 },
+ { 10154, 0xDED3 }, { 10165, 0xFF31 }, { 10176, 0x1FFF }, { 10189, 0xFF9F },
+ /* 0x7C00 */
+ { 10203, 0xFEEF }, { 10217, 0xFA27 }, { 10227, 0x3FEF }, { 10240, 0xFBA9 },
+ { 10251, 0x37BD }, { 10262, 0xBEDB }, { 10274, 0xFEF9 }, { 10287, 0xFF3D },
+ { 10300, 0x777B }, { 10312, 0xD1F6 }, { 10322, 0xD1EE }, { 10332, 0xFF3E },
+ { 10345, 0x7FAC }, { 10356, 0xF6FF }, { 10370, 0xF5C5 }, { 10380, 0x7BFF },
+ /* 0x7D00 */
+ { 10394, 0xFFFF }, { 10410, 0xFFFF }, { 10426, 0xDB27 }, { 10436, 0xFF6F },
+ { 10450, 0xE4FF }, { 10462, 0xFD7F }, { 10476, 0xEFCE }, { 10488, 0xBE0F },
+ { 10498, 0xFB7B }, { 10511, 0xF0DE }, { 10521, 0xFFDF }, { 10536, 0xFFBF },
+ { 10551, 0xFEF7 }, { 10565, 0xFF9D }, { 10578, 0xD7FB }, { 10591, 0x6EFF },
+ /* 0x7E00 */
+ { 10604, 0xFF88 }, { 10614, 0xFCFF }, { 10628, 0xEEBF }, { 10641, 0xFFFF },
+ { 10657, 0x13FF }, { 10668, 0xDFFF }, { 10683, 0xFFAF }, { 10697, 0xFFFD },
+ { 10712, 0xFDC7 }, { 10724, 0x9FFE }, { 10737, 0x1010 }, { 10739, 0x0400 },
+ { 10740, 0x8080 }, { 10742, 0x8000 }, { 10743, 0x0000 }, { 10743, 0x0000 },
+ /* 0x7F00 */
+ { 10743, 0x0040 }, { 10744, 0x0000 }, { 10744, 0x0000 }, { 10744, 0xE7C0 },
+ { 10752, 0xFFBB }, { 10766, 0xF93F }, { 10778, 0x7FEB }, { 10791, 0xFFEF },
+ { 10806, 0xFFE8 }, { 10818, 0x7CFE }, { 10830, 0xF3FF }, { 10844, 0xFFFF },
+ { 10860, 0xFEAF }, { 10873, 0xF8B7 }, { 10884, 0xFFEF }, { 10899, 0xFFBF },
+ /* 0x8000 */
+ { 10914, 0xF9FF }, { 10928, 0xFBF7 }, { 10942, 0xD773 }, { 10953, 0xFAFB },
+ { 10966, 0x85C8 }, { 10972, 0x7D57 }, { 10983, 0x90DE }, { 10991, 0xE3EF },
+ { 11003, 0x9EF5 }, { 11014, 0xBF6D }, { 11026, 0xEEAE }, { 11037, 0x35F6 },
+ { 11047, 0xF7FC }, { 11060, 0x7FF3 }, { 11073, 0xB27B }, { 11083, 0x7F7F },
+ /* 0x8100 */
+ { 11097, 0x57EF }, { 11109, 0xEFF4 }, { 11121, 0xBEBE }, { 11133, 0x6695 },
+ { 11141, 0xFDDC }, { 11153, 0x5E7F }, { 11165, 0xEAF7 }, { 11177, 0x97DF },
+ { 11189, 0xBFDD }, { 11202, 0xFFA8 }, { 11213, 0x5FED }, { 11225, 0xFEFF },
+ { 11240, 0xB7FF }, { 11254, 0xEFA7 }, { 11266, 0xF7FF }, { 11281, 0xDFDC },
+ /* 0x8200 */
+ { 11293, 0x3FB7 }, { 11305, 0xFD77 }, { 11318, 0xBF67 }, { 11330, 0xF7FC },
+ { 11343, 0xCAB5 }, { 11352, 0xDFFF }, { 11367, 0xFB7E }, { 11380, 0xFFF6 },
+ { 11394, 0xECB9 }, { 11404, 0xEF1F }, { 11416, 0xFFFF }, { 11432, 0xFFFB },
+ { 11447, 0x841D }, { 11453, 0xDBFF }, { 11467, 0xFDFF }, { 11482, 0xFFFF },
+ /* 0x8300 */
+ { 11498, 0x3BFF }, { 11511, 0x7FC0 }, { 11520, 0xBFF5 }, { 11533, 0xBFFE },
+ { 11547, 0xFFBF }, { 11562, 0x00DF }, { 11569, 0x804C }, { 11573, 0xFDF8 },
+ { 11585, 0xFFEA }, { 11598, 0x7FFF }, { 11613, 0xDFFD }, { 11627, 0xE201 },
+ { 11632, 0xFFFF }, { 11648, 0xFBFA }, { 11661, 0xFFBF }, { 11676, 0xFF7F },
+ /* 0x8400 */
+ { 11691, 0xFEFA }, { 11704, 0x195F }, { 11713, 0xFA5B }, { 11724, 0xFFFF },
+ { 11740, 0x7FFD }, { 11754, 0xFFFF }, { 11770, 0xFBFF }, { 11785, 0xE7FF },
+ { 11799, 0xE145 }, { 11806, 0xFFDF }, { 11821, 0xFF9F }, { 11835, 0xFF57 },
+ { 11848, 0xFEF7 }, { 11862, 0x4CDF }, { 11872, 0xDFB6 }, { 11884, 0xFFDF },
+ /* 0x8500 */
+ { 11899, 0xFFED }, { 11913, 0xF7FF }, { 11928, 0xFFFB }, { 11943, 0x691B },
+ { 11951, 0x7FFF }, { 11966, 0xEFFE }, { 11980, 0xFFFF }, { 11996, 0x5FEB },
+ { 12008, 0xFFFF }, { 12024, 0xFFF3 }, { 12038, 0x87DF }, { 12049, 0xE7FB },
+ { 12062, 0xEBFF }, { 12076, 0xF7E7 }, { 12089, 0xFF7F }, { 12104, 0xFFC7 },
+ /* 0x8600 */
+ { 12117, 0xBEF7 }, { 12130, 0xDFD3 }, { 12142, 0xF7FF }, { 12157, 0xDF7E },
+ { 12170, 0x79ED }, { 12181, 0xDA7D }, { 12192, 0xFFBE }, { 12206, 0x5E9F },
+ { 12217, 0x7CE0 }, { 12225, 0x77FF }, { 12239, 0xA7BF }, { 12251, 0xFFFF },
+ { 12267, 0x1BFF }, { 12279, 0xFFDB }, { 12293, 0xBF5C }, { 12304, 0x4FE0 },
+ /* 0x8700 */
+ { 12312, 0x7FFF }, { 12327, 0x5F0E }, { 12336, 0x77FF }, { 12350, 0xDDBF },
+ { 12363, 0xF04F }, { 12372, 0xFFFF }, { 12388, 0xFFFF }, { 12404, 0x2FFB },
+ { 12416, 0xBBFE }, { 12429, 0xFDDF }, { 12443, 0xFE3C }, { 12454, 0xFFFF },
+ { 12470, 0x5F7F }, { 12483, 0xFFDE }, { 12497, 0xFDFF }, { 12512, 0xDEFC },
+ /* 0x8800 */
+ { 12524, 0xBF7F }, { 12538, 0xBBFB }, { 12551, 0xFFFF }, { 12567, 0xFBEF },
+ { 12581, 0xFD7F }, { 12595, 0x6EEC }, { 12605, 0xEFBF }, { 12619, 0xF2F7 },
+ { 12631, 0xFB9F }, { 12644, 0xDFEF }, { 12658, 0x5D97 }, { 12668, 0xF7F6 },
+ { 12681, 0xFEA7 }, { 12693, 0xFFF5 }, { 12707, 0xD9C2 }, { 12715, 0xFFFF },
+ /* 0x8900 */
+ { 12731, 0x5EE7 }, { 12742, 0xC7FF }, { 12755, 0xFEFE }, { 12769, 0x79EF },
+ { 12781, 0xBADE }, { 12792, 0xFFDF }, { 12807, 0xFE7F }, { 12821, 0xDEDE },
+ { 12833, 0x8FEF }, { 12845, 0xF9FA }, { 12857, 0xF6FE }, { 12870, 0xF6C4 },
+ { 12879, 0x0043 }, { 12882, 0xBE7C }, { 12893, 0x3BFF }, { 12906, 0xDDDF },
+ /* 0x8A00 */
+ { 12919, 0xD59D }, { 12929, 0xF9EF }, { 12942, 0x3EAC }, { 12951, 0xFF53 },
+ { 12963, 0xF773 }, { 12975, 0x4BF7 }, { 12986, 0x7BCF }, { 12998, 0xDEFF },
+ { 13012, 0xB8FE }, { 13023, 0x577F }, { 13035, 0x8FFB }, { 13047, 0xFF55 },
+ { 13059, 0xABFD }, { 13071, 0xFFFE }, { 13086, 0xEDD7 }, { 13098, 0xDDFF },
+ /* 0x8B00 */
+ { 13112, 0xFDF7 }, { 13126, 0xFFFF }, { 13142, 0xFDFD }, { 13156, 0xFEEB },
+ { 13169, 0xFFEF }, { 13184, 0xF7FF }, { 13199, 0xBFED }, { 13212, 0xEF91 },
+ { 13222, 0x5D7F }, { 13234, 0xDF7D }, { 13247, 0x0001 }, { 13248, 0x4000 },
+ { 13249, 0x0000 }, { 13249, 0x0000 }, { 13249, 0x0004 }, { 13250, 0x0000 },
+ /* 0x8C00 */
+ { 13250, 0x0000 }, { 13250, 0x0000 }, { 13250, 0x0000 }, { 13250, 0xFA80 },
+ { 13257, 0xFFEE }, { 13271, 0xB4F3 }, { 13281, 0xBF76 }, { 13293, 0x2FEF },
+ { 13305, 0xB677 }, { 13316, 0xFFBF }, { 13331, 0xBFBF }, { 13345, 0xFFFD },
+ { 13360, 0xB5BF }, { 13372, 0xFEFE }, { 13386, 0x7FFF }, { 13401, 0x7FBF },
+ /* 0x8D00 */
+ { 13415, 0xBFFD }, { 13429, 0x3BFF }, { 13442, 0x0000 }, { 13442, 0x0000 },
+ { 13442, 0x0000 }, { 13442, 0x0000 }, { 13442, 0xFBD0 }, { 13452, 0x2FDD },
+ { 13463, 0xF637 }, { 13474, 0x9A7F }, { 13485, 0xFFEB }, { 13499, 0xD6FC },
+ { 13510, 0xF9EF }, { 13523, 0xBFFB }, { 13537, 0xDFDF }, { 13551, 0xF41F },
+ /* 0x8E00 */
+ { 13561, 0xE6FF }, { 13574, 0xFFFF }, { 13590, 0x6FFF }, { 13604, 0xF77B },
+ { 13617, 0xFFF7 }, { 13632, 0xFEF9 }, { 13645, 0xB7FF }, { 13659, 0x5DFE },
+ { 13671, 0x7FF7 }, { 13685, 0xE5FF }, { 13698, 0x3FFB }, { 13711, 0x3645 },
+ { 13718, 0xFE0D }, { 13728, 0xFD9E }, { 13740, 0xFBF7 }, { 13754, 0xDFF6 },
+ /* 0x8F00 */
+ { 13767, 0x6FEF }, { 13780, 0xFFFF }, { 13796, 0xF679 }, { 13807, 0xCBFD },
+ { 13819, 0xEFFF }, { 13834, 0xFFFF }, { 13850, 0x40DF }, { 13858, 0x0000 },
+ { 13858, 0x0000 }, { 13858, 0x9808 }, { 13862, 0xE1E9 }, { 13871, 0xDFFF },
+ { 13886, 0xFE76 }, { 13898, 0x04FF }, { 13907, 0x6D7F }, { 13919, 0xFFF1 },
+ /* 0x9000 */
+ { 13932, 0xB97F }, { 13944, 0xFEF7 }, { 13958, 0xE01F }, { 13966, 0xF1FE },
+ { 13978, 0xFE96 }, { 13989, 0x7B7F }, { 14002, 0xFB9F }, { 14015, 0xFFFD },
+ { 14030, 0xADFF }, { 14043, 0xCBB3 }, { 14053, 0xC5EF }, { 14064, 0xE97F },
+ { 14076, 0x4DBA }, { 14085, 0xBFF0 }, { 14096, 0xBF3F }, { 14109, 0xFE3F },
+ /* 0x9100 */
+ { 14122, 0xEBFF }, { 14136, 0xFFD7 }, { 14150, 0xFFDF }, { 14165, 0xCF7F },
+ { 14178, 0xFFFB }, { 14193, 0xD7EF }, { 14206, 0xD7BF }, { 14219, 0x17FD },
+ { 14230, 0xFEFF }, { 14245, 0xFE0F }, { 14256, 0xFFAF }, { 14270, 0x7EFF },
+ { 14284, 0xFAFF }, { 14298, 0xB7FB }, { 14311, 0x7FFC }, { 14324, 0xE7FA },
+ /* 0x9200 */
+ { 14336, 0xF7FF }, { 14351, 0x56FF }, { 14363, 0x6DFA }, { 14374, 0xF7FF },
+ { 14389, 0xFF73 }, { 14402, 0xEDFF }, { 14416, 0xF8FF }, { 14429, 0xFFC5 },
+ { 14441, 0xFFFF }, { 14457, 0x3FFA }, { 14469, 0x5FFF }, { 14483, 0xDEFE },
+ { 14496, 0xFFFF }, { 14512, 0xEBBF }, { 14525, 0xDFFB }, { 14539, 0xFFDF },
+ /* 0x9300 */
+ { 14554, 0xFBDF }, { 14568, 0xEF7D }, { 14581, 0xFFFF }, { 14597, 0x137B },
+ { 14606, 0xFFFF }, { 14622, 0xDFF7 }, { 14636, 0x7FFF }, { 14651, 0x7FFB },
+ { 14665, 0xF7FF }, { 14680, 0xFFF7 }, { 14695, 0xF7FF }, { 14710, 0xA9BF },
+ { 14721, 0xFDDD }, { 14734, 0xFFFF }, { 14750, 0x51DF }, { 14760, 0xFFFB },
+ /* 0x9400 */
+ { 14775, 0xFFDB }, { 14789, 0x2BFF }, { 14801, 0x7FF1 }, { 14813, 0xFFEF },
+ { 14828, 0xBFFD }, { 14842, 0x69B7 }, { 14852, 0xFFBD }, { 14866, 0xFBFF },
+ { 14881, 0x002F }, { 14886, 0x8000 }, { 14887, 0x0004 }, { 14888, 0x0000 },
+ { 14888, 0x000A }, { 14890, 0x1000 }, { 14891, 0x0000 }, { 14891, 0x0040 },
+ /* 0x9500 */
+ { 14892, 0x0000 }, { 14892, 0x0000 }, { 14892, 0x2000 }, { 14893, 0x0000 },
+ { 14893, 0x0080 }, { 14894, 0x0000 }, { 14894, 0x0000 }, { 14894, 0xBD80 },
+ { 14901, 0xFB6D }, { 14913, 0xDBDF }, { 14926, 0x7FFF }, { 14941, 0xFEE3 },
+ { 14953, 0x3FE9 }, { 14964, 0xDC7F }, { 14976, 0x013F }, { 14983, 0x0010 },
+ /* 0x9600 */
+ { 14984, 0x0000 }, { 14984, 0x7000 }, { 14987, 0xF51F }, { 14998, 0xBF0F },
+ { 15009, 0xFC3F }, { 15021, 0xF95B }, { 15032, 0xBE1E }, { 15042, 0x79FF },
+ { 15055, 0xEFFB }, { 15069, 0x5BFE }, { 15081, 0x57BE }, { 15092, 0xBB5B },
+ { 15103, 0x7FFF }, { 15118, 0xFFFC }, { 15132, 0x872E }, { 15140, 0xAFF7 },
+ /* 0x9700 */
+ { 15153, 0xEBFD }, { 15166, 0xFB4F }, { 15178, 0xDFFF }, { 15193, 0xE767 },
+ { 15204, 0x0BDF }, { 15214, 0xFDE6 }, { 15226, 0x7747 }, { 15236, 0xFDDF },
+ { 15250, 0xEFBF }, { 15264, 0xFF90 }, { 15274, 0x7D7F }, { 15287, 0xEFDE },
+ { 15300, 0xFBFF }, { 15315, 0xF3FD }, { 15328, 0x606B }, { 15335, 0xEF6F },
+ /* 0x9800 */
+ { 15348, 0xF5FF }, { 15362, 0xF9FF }, { 15376, 0xEBDB }, { 15388, 0x0BBD },
+ { 15397, 0xFFFA }, { 15411, 0xFB8F }, { 15423, 0x9FFD }, { 15436, 0x003F },
+ { 15442, 0x0000 }, { 15442, 0x0000 }, { 15442, 0xF300 }, { 15448, 0xFFDE },
+ { 15462, 0x5FDF }, { 15475, 0xD800 }, { 15479, 0xBEEF }, { 15492, 0x7676 },
+ /* 0x9900 */
+ { 15502, 0x57AD }, { 15512, 0xDFFF }, { 15527, 0xFFB2 }, { 15539, 0xFFAF },
+ { 15553, 0x7FAF }, { 15566, 0xFBFF }, { 15581, 0x000E }, { 15584, 0x0000 },
+ { 15584, 0x0000 }, { 15584, 0x7BC0 }, { 15592, 0xFDFA }, { 15605, 0x3F3F },
+ { 15617, 0xFABE }, { 15629, 0xBFFF }, { 15644, 0x76FF }, { 15657, 0xFFF3 },
+ /* 0x9A00 */
+ { 15671, 0xFEFE }, { 15685, 0xFE73 }, { 15697, 0xFEFF }, { 15712, 0xFFF7 },
+ { 15727, 0xF77F }, { 15741, 0xDFFD }, { 15755, 0x1FFD }, { 15767, 0x0000 },
+ { 15767, 0x8000 }, { 15768, 0x0000 }, { 15768, 0xA900 }, { 15772, 0xFFDF },
+ { 15787, 0xA4C7 }, { 15795, 0x91FF }, { 15806, 0xF8CF }, { 15817, 0xFEDE },
+ /* 0x9B00 */
+ { 15830, 0xFF7E }, { 15844, 0xC7F7 }, { 15856, 0xEFBD }, { 15869, 0xDEBE },
+ { 15881, 0xFD7F }, { 15895, 0x8F77 }, { 15906, 0x93D3 }, { 15915, 0xFCF3 },
+ { 15927, 0xE9EF }, { 15939, 0xECAF }, { 15950, 0xED77 }, { 15962, 0xA361 },
+ { 15969, 0x87DB }, { 15979, 0x7EF8 }, { 15990, 0x3FF7 }, { 16003, 0xA193 },
+ /* 0x9C00 */
+ { 16010, 0x7FE4 }, { 16021, 0xB8BD }, { 16031, 0xBB7B }, { 16043, 0xFEFE },
+ { 16057, 0xFF73 }, { 16070, 0xE3FD }, { 16082, 0x61CD }, { 16090, 0x1FBE },
+ { 16101, 0x0000 }, { 16101, 0x0000 }, { 16101, 0x0000 }, { 16101, 0x0000 },
+ { 16101, 0x0000 }, { 16101, 0x0000 }, { 16101, 0x26E0 }, { 16107, 0xBEFE },
+ /* 0x9D00 */
+ { 16120, 0x13FD }, { 16130, 0xEBF5 }, { 16142, 0xE36F }, { 16153, 0xEBDB },
+ { 16165, 0xDE3F }, { 16177, 0xFFDF }, { 16192, 0xFF83 }, { 16203, 0xFBBF },
+ { 16217, 0x1FFF }, { 16230, 0xFFDD }, { 16244, 0xBFFF }, { 16259, 0xFFFE },
+ { 16274, 0xFFBF }, { 16289, 0xFFFF }, { 16305, 0xFB7E }, { 16318, 0xFFFD },
+ /* 0x9E00 */
+ { 16333, 0xFEFF }, { 16348, 0xFFBF }, { 16363, 0x0000 }, { 16363, 0x0000 },
+ { 16363, 0x0000 }, { 16363, 0x0000 }, { 16363, 0x0000 }, { 16363, 0xBE20 },
+ { 16370, 0x7FFF }, { 16385, 0xFFFF }, { 16401, 0xFFF7 }, { 16416, 0xF8F3 },
+ { 16427, 0xF1DF }, { 16439, 0xFD7B }, { 16452, 0xE9F5 }, { 16463, 0xFFFF },
+ /* 0x9F00 */
+ { 16479, 0xC7C7 }, { 16489, 0x5FED }, { 16501, 0xFFFD }, { 16516, 0x6BFF },
+ { 16529, 0xFFFF }, { 16545, 0xFFFD }, { 16560, 0xDEFF }, { 16574, 0xCFF7 },
+ { 16587, 0x6000 }, { 16589, 0x9337 }, { 16598, 0x0035 },
+};
+static const Summary16 big5hkscs_uni2index_pagee0[419] = {
+ /* 0xE000 */
+ { 16602, 0xFFFF }, { 16618, 0xFFFF }, { 16634, 0xFFFF }, { 16650, 0xFFFF },
+ { 16666, 0xFFFF }, { 16682, 0xFFFF }, { 16698, 0xFFFF }, { 16714, 0xFFFF },
+ { 16730, 0xFFFF }, { 16746, 0xFFFF }, { 16762, 0xFFFF }, { 16778, 0xFFFF },
+ { 16794, 0xFFFF }, { 16810, 0xFFFF }, { 16826, 0xFFFF }, { 16842, 0xFFFF },
+ /* 0xE100 */
+ { 16858, 0xFFFF }, { 16874, 0xFFFF }, { 16890, 0xFFFF }, { 16906, 0xFFFF },
+ { 16922, 0xFFFF }, { 16938, 0xFFFF }, { 16954, 0xFFFF }, { 16970, 0xFFFF },
+ { 16986, 0xFFFF }, { 17002, 0xFFFF }, { 17018, 0xFFFF }, { 17034, 0xFFFF },
+ { 17050, 0xFFFF }, { 17066, 0xFFFF }, { 17082, 0xFFFF }, { 17098, 0xFFFF },
+ /* 0xE200 */
+ { 17114, 0xFFFF }, { 17130, 0xFFFF }, { 17146, 0xFFFF }, { 17162, 0xFFFF },
+ { 17178, 0xFFFF }, { 17194, 0xFFFF }, { 17210, 0xFFFF }, { 17226, 0xFFFF },
+ { 17242, 0xFFFF }, { 17258, 0xFFFF }, { 17274, 0xFFFF }, { 17290, 0xFFFF },
+ { 17306, 0xFFFF }, { 17322, 0xFFFF }, { 17338, 0xFFFF }, { 17354, 0xFFFF },
+ /* 0xE300 */
+ { 17370, 0xFFFF }, { 17386, 0xFFFF }, { 17402, 0xFFFF }, { 17418, 0xFFFF },
+ { 17434, 0xFFFF }, { 17450, 0xFFFF }, { 17466, 0xFFFF }, { 17482, 0xFFFF },
+ { 17498, 0xFFFF }, { 17514, 0xFFFF }, { 17530, 0xFFFF }, { 17546, 0xFFFF },
+ { 17562, 0xFFFF }, { 17578, 0xFFFF }, { 17594, 0xFFFF }, { 17610, 0xFFFF },
+ /* 0xE400 */
+ { 17626, 0xFFFF }, { 17642, 0xFFFF }, { 17658, 0xFFFF }, { 17674, 0xFFFF },
+ { 17690, 0xFFFF }, { 17706, 0xFFFF }, { 17722, 0xFFFF }, { 17738, 0xFFFF },
+ { 17754, 0xFFFF }, { 17770, 0xFFFF }, { 17786, 0xFFFF }, { 17802, 0xFFFF },
+ { 17818, 0xFFFF }, { 17834, 0xFFFF }, { 17850, 0xFFFF }, { 17866, 0xFFFF },
+ /* 0xE500 */
+ { 17882, 0xFFFF }, { 17898, 0xFFFF }, { 17914, 0xFFFF }, { 17930, 0xFFFF },
+ { 17946, 0xFFFF }, { 17962, 0xFFFF }, { 17978, 0xFFFF }, { 17994, 0xFFFF },
+ { 18010, 0xFFFF }, { 18026, 0xFFFF }, { 18042, 0xFFFF }, { 18058, 0xFFFF },
+ { 18074, 0xFFFF }, { 18090, 0xFFFF }, { 18106, 0xFFFF }, { 18122, 0xFFFF },
+ /* 0xE600 */
+ { 18138, 0xFFFF }, { 18154, 0xFFFF }, { 18170, 0xFFFF }, { 18186, 0xFFFF },
+ { 18202, 0xFFFF }, { 18218, 0xFFFF }, { 18234, 0xFFFF }, { 18250, 0xFFFF },
+ { 18266, 0xFFFF }, { 18282, 0xFFFF }, { 18298, 0xFFFF }, { 18314, 0xFFFF },
+ { 18330, 0xFFFF }, { 18346, 0xFFFF }, { 18362, 0xFFFF }, { 18378, 0xFFFF },
+ /* 0xE700 */
+ { 18394, 0xFFFF }, { 18410, 0xFFFF }, { 18426, 0xFFFF }, { 18442, 0xFFFF },
+ { 18458, 0xFFFF }, { 18474, 0xFFFF }, { 18490, 0xFFFF }, { 18506, 0xFFFF },
+ { 18522, 0xFFFF }, { 18538, 0xFFFF }, { 18554, 0xFFFF }, { 18570, 0xFFFF },
+ { 18586, 0xFFFF }, { 18602, 0xFFFF }, { 18618, 0xFFFF }, { 18634, 0xFFFF },
+ /* 0xE800 */
+ { 18650, 0xFFFF }, { 18666, 0xFFFF }, { 18682, 0xFFFF }, { 18698, 0xFFFF },
+ { 18714, 0xFFFF }, { 18730, 0xFFFF }, { 18746, 0xFFFF }, { 18762, 0xFFFF },
+ { 18778, 0xFFFF }, { 18794, 0xFFFF }, { 18810, 0xFFFF }, { 18826, 0xFFFF },
+ { 18842, 0xFFFF }, { 18858, 0xFFFF }, { 18874, 0xFFFF }, { 18890, 0xFFFF },
+ /* 0xE900 */
+ { 18906, 0xFFFF }, { 18922, 0xFFFF }, { 18938, 0xFFFF }, { 18954, 0xFFFF },
+ { 18970, 0xFFFF }, { 18986, 0xFFFF }, { 19002, 0xFFFF }, { 19018, 0xFFFF },
+ { 19034, 0xFFFF }, { 19050, 0xFFFF }, { 19066, 0xFFFF }, { 19082, 0xFFFF },
+ { 19098, 0xFFFF }, { 19114, 0xFFFF }, { 19130, 0xFFFF }, { 19146, 0xFFFF },
+ /* 0xEA00 */
+ { 19162, 0xFFFF }, { 19178, 0xFFFF }, { 19194, 0xFFFF }, { 19210, 0xFFFF },
+ { 19226, 0xFFFF }, { 19242, 0xFFFF }, { 19258, 0xFFFF }, { 19274, 0xFFFF },
+ { 19290, 0xFFFF }, { 19306, 0xFFFF }, { 19322, 0xFFFF }, { 19338, 0xFFFF },
+ { 19354, 0xFFFF }, { 19370, 0xFFFF }, { 19386, 0xFFFF }, { 19402, 0xFFFF },
+ /* 0xEB00 */
+ { 19418, 0xFFFF }, { 19434, 0xFFFF }, { 19450, 0xFFFF }, { 19466, 0xFFFF },
+ { 19482, 0xFFFF }, { 19498, 0xFFFF }, { 19514, 0xFFFF }, { 19530, 0xFFFF },
+ { 19546, 0xFFFF }, { 19562, 0xFFFF }, { 19578, 0xFFFF }, { 19594, 0xFFFF },
+ { 19610, 0xFFFF }, { 19626, 0xFFFF }, { 19642, 0xFFFF }, { 19658, 0xFFFF },
+ /* 0xEC00 */
+ { 19674, 0xFFFF }, { 19690, 0xFFFF }, { 19706, 0xFFFF }, { 19722, 0xFFFF },
+ { 19738, 0xFFFF }, { 19754, 0xFFFF }, { 19770, 0xFFFF }, { 19786, 0xFFFF },
+ { 19802, 0xFFFF }, { 19818, 0xFFFF }, { 19834, 0xFFFF }, { 19850, 0xFFFF },
+ { 19866, 0xFFFF }, { 19882, 0xFFFF }, { 19898, 0xFFFF }, { 19914, 0xFFFF },
+ /* 0xED00 */
+ { 19930, 0xFFFF }, { 19946, 0xFFFF }, { 19962, 0xFFFF }, { 19978, 0xFFFF },
+ { 19994, 0xFFFF }, { 20010, 0xFFFF }, { 20026, 0xFFFF }, { 20042, 0xFFFF },
+ { 20058, 0xFFFF }, { 20074, 0xFFFF }, { 20090, 0xFFFF }, { 20106, 0xFFFF },
+ { 20122, 0xFFFF }, { 20138, 0xFFFF }, { 20154, 0xFFFF }, { 20170, 0xFFFF },
+ /* 0xEE00 */
+ { 20186, 0xFFFF }, { 20202, 0xFFFF }, { 20218, 0xFFFF }, { 20234, 0xFFFF },
+ { 20250, 0xFFFF }, { 20266, 0xFFFF }, { 20282, 0xFFFF }, { 20298, 0xFFFF },
+ { 20314, 0xFFFF }, { 20330, 0xFFFF }, { 20346, 0xFFFF }, { 20362, 0xFFFF },
+ { 20378, 0xFFFF }, { 20394, 0xFFFF }, { 20410, 0xFFFF }, { 20426, 0xFFFF },
+ /* 0xEF00 */
+ { 20442, 0xFFFF }, { 20458, 0xFFFF }, { 20474, 0xFFFF }, { 20490, 0xFFFF },
+ { 20506, 0xFFFF }, { 20522, 0xFFFF }, { 20538, 0xFFFF }, { 20554, 0xFFFF },
+ { 20570, 0xFFFF }, { 20586, 0xFFFF }, { 20602, 0xFFFF }, { 20618, 0xFFFF },
+ { 20634, 0xFFFF }, { 20650, 0xFFFF }, { 20666, 0xFFFF }, { 20682, 0xFFFF },
+ /* 0xF000 */
+ { 20698, 0xFFFF }, { 20714, 0xFFFF }, { 20730, 0xFFFF }, { 20746, 0xFFFF },
+ { 20762, 0xFFFF }, { 20778, 0xFFFF }, { 20794, 0xFFFF }, { 20810, 0xFFFF },
+ { 20826, 0xFFFF }, { 20842, 0xFFFF }, { 20858, 0xFFFF }, { 20874, 0xFFFF },
+ { 20890, 0xFFFF }, { 20906, 0xFFFF }, { 20922, 0xFFFF }, { 20938, 0xFFFF },
+ /* 0xF100 */
+ { 20954, 0xFFFF }, { 20970, 0xFFFF }, { 20986, 0xFFFF }, { 21002, 0xFFFF },
+ { 21018, 0xFFFF }, { 21034, 0xFFFF }, { 21050, 0xFFFF }, { 21066, 0xFFFF },
+ { 21082, 0xFFFF }, { 21098, 0xFFFF }, { 21114, 0xFFFF }, { 21130, 0xFFFF },
+ { 21146, 0xFFFF }, { 21162, 0xFFFF }, { 21178, 0xFFFF }, { 21194, 0xFFFF },
+ /* 0xF200 */
+ { 21210, 0xFFFF }, { 21226, 0xFFFF }, { 21242, 0xFFFF }, { 21258, 0xFFFF },
+ { 21274, 0xFFFF }, { 21290, 0xFFFF }, { 21306, 0xFFFF }, { 21322, 0xFFFF },
+ { 21338, 0xFFFF }, { 21354, 0xFFFF }, { 21370, 0xFFFF }, { 21386, 0xFFFF },
+ { 21402, 0xFFFF }, { 21418, 0xFFFF }, { 21434, 0xFFFF }, { 21450, 0xFFFF },
+ /* 0xF300 */
+ { 21466, 0xFFFF }, { 21482, 0xFFFF }, { 21498, 0xFFFF }, { 21514, 0xFFFF },
+ { 21530, 0xFFFF }, { 21546, 0xFFFF }, { 21562, 0xFFFF }, { 21578, 0xFFFF },
+ { 21594, 0xFFFF }, { 21610, 0xFFFF }, { 21626, 0xFFFF }, { 21642, 0xFFFF },
+ { 21658, 0xFFFF }, { 21674, 0xFFFF }, { 21690, 0xFFFF }, { 21706, 0xFFFF },
+ /* 0xF400 */
+ { 21722, 0xFFFF }, { 21738, 0xFFFF }, { 21754, 0xFFFF }, { 21770, 0xFFFF },
+ { 21786, 0xFFFF }, { 21802, 0xFFFF }, { 21818, 0xFFFF }, { 21834, 0xFFFF },
+ { 21850, 0xFFFF }, { 21866, 0xFFFF }, { 21882, 0xFFFF }, { 21898, 0xFFFF },
+ { 21914, 0xFFFF }, { 21930, 0xFFFF }, { 21946, 0xFFFF }, { 21962, 0xFFFF },
+ /* 0xF500 */
+ { 21978, 0xFFFF }, { 21994, 0xFFFF }, { 22010, 0xFFFF }, { 22026, 0xFFFF },
+ { 22042, 0xFFFF }, { 22058, 0xFFFF }, { 22074, 0xFFFF }, { 22090, 0xFFFF },
+ { 22106, 0xFFFF }, { 22122, 0xFFFF }, { 22138, 0xFFFF }, { 22154, 0xFFFF },
+ { 22170, 0xFFFF }, { 22186, 0xFFFF }, { 22202, 0xFFFF }, { 22218, 0xFFFF },
+ /* 0xF600 */
+ { 22234, 0xFFFF }, { 22250, 0xFFFF }, { 22266, 0xFFFF }, { 22282, 0xFFFF },
+ { 22298, 0xFFFF }, { 22314, 0xFFFF }, { 22330, 0xFFFF }, { 22346, 0xFFFF },
+ { 22362, 0xFFFF }, { 22378, 0xFFFF }, { 22394, 0xFFFF }, { 22410, 0xFFFF },
+ { 22426, 0xFFFF }, { 22442, 0xFFFF }, { 22458, 0xFFFF }, { 22474, 0xFFFF },
+ /* 0xF700 */
+ { 22490, 0xFFFF }, { 22506, 0xFFFF }, { 22522, 0xFFFF }, { 22538, 0xFFFF },
+ { 22554, 0xFFFF }, { 22570, 0xFFFF }, { 22586, 0xFFFF }, { 22602, 0xFFFF },
+ { 22618, 0xFFFF }, { 22634, 0xFFFF }, { 22650, 0xFFFF }, { 22666, 0xFFFF },
+ { 22682, 0xFFFF }, { 22698, 0xFFFF }, { 22714, 0xFFFF }, { 22730, 0xFFFF },
+ /* 0xF800 */
+ { 22746, 0xFFFF }, { 22762, 0xFFFF }, { 22778, 0xFFFF }, { 22794, 0xFFFF },
+ { 22810, 0x01FF }, { 22819, 0x0000 }, { 22819, 0x0000 }, { 22819, 0x0000 },
+ { 22819, 0x0000 }, { 22819, 0x0000 }, { 22819, 0x0000 }, { 22819, 0x0000 },
+ { 22819, 0x0000 }, { 22819, 0x0000 }, { 22819, 0x0000 }, { 22819, 0x0100 },
+ /* 0xF900 */
+ { 22820, 0xFFFF }, { 22836, 0xFFFF }, { 22852, 0xEFFF }, { 22867, 0xFFFF },
+ { 22883, 0xFFFF }, { 22899, 0xFFFF }, { 22915, 0xFFFF }, { 22931, 0xFDFF },
+ { 22946, 0xFFFF }, { 22962, 0xFFDF }, { 22977, 0xFFFF }, { 22993, 0xFFFF },
+ { 23009, 0xFFFF }, { 23025, 0xFFFF }, { 23041, 0xFF7F }, { 23056, 0xFFFD },
+ /* 0xFA00 */
+ { 23071, 0x3FFF }, { 23085, 0x7EE5 }, { 23096, 0x3C64 },
+};
+static const Summary16 big5hkscs_uni2index_pagefe[31] = {
+ /* 0xFE00 */
+ { 23103, 0x0000 }, { 23103, 0x0000 }, { 23103, 0x0000 }, { 23103, 0xFFFB },
+ { 23118, 0xFE1F }, { 23130, 0xFEF7 }, { 23144, 0x0F7F }, { 23155, 0x0000 },
+ { 23155, 0x0000 }, { 23155, 0x0000 }, { 23155, 0x0000 }, { 23155, 0x0000 },
+ { 23155, 0x0000 }, { 23155, 0x0000 }, { 23155, 0x0000 }, { 23155, 0x0000 },
+ /* 0xFF00 */
+ { 23155, 0xFFFE }, { 23170, 0xFFFF }, { 23186, 0xFFFF }, { 23202, 0xFFFF },
+ { 23218, 0xFFFF }, { 23234, 0x7FFF }, { 23249, 0x0010 }, { 23250, 0x0000 },
+ { 23250, 0x0000 }, { 23250, 0x0000 }, { 23250, 0x0000 }, { 23250, 0x0000 },
+ { 23250, 0x0000 }, { 23250, 0x0000 }, { 23250, 0x203F },
+};
+static const Summary16 big5hkscs_uni2index_page200[2335] = {
+ /* 0x20000 */
+ { 23257, 0x0000 }, { 23257, 0x0000 }, { 23257, 0x0002 }, { 23258, 0x4000 },
+ { 23259, 0x4040 }, { 23261, 0x0000 }, { 23261, 0x0100 }, { 23262, 0x0000 },
+ { 23262, 0x04C0 }, { 23265, 0x0010 }, { 23266, 0x0000 }, { 23266, 0x0000 },
+ { 23266, 0x3C00 }, { 23270, 0x0002 }, { 23271, 0x4000 }, { 23272, 0x0000 },
+ /* 0x20100 */
+ { 23272, 0x5000 }, { 23274, 0x0100 }, { 23275, 0x0000 }, { 23275, 0x0000 },
+ { 23275, 0x0000 }, { 23275, 0x0000 }, { 23275, 0x0000 }, { 23275, 0x0000 },
+ { 23275, 0x0000 }, { 23275, 0x0000 }, { 23275, 0x0A00 }, { 23277, 0x0000 },
+ { 23277, 0x0002 }, { 23278, 0x0010 }, { 23279, 0x0000 }, { 23279, 0x0004 },
+ /* 0x20200 */
+ { 23280, 0x1010 }, { 23282, 0x0010 }, { 23283, 0x0000 }, { 23283, 0x0000 },
+ { 23283, 0x0000 }, { 23283, 0x0800 }, { 23284, 0x0000 }, { 23284, 0x0030 },
+ { 23286, 0x0000 }, { 23286, 0x4200 }, { 23288, 0x0001 }, { 23289, 0x8080 },
+ { 23291, 0x0001 }, { 23292, 0x0000 }, { 23292, 0x0020 }, { 23293, 0x0000 },
+ /* 0x20300 */
+ { 23293, 0x0400 }, { 23294, 0x0000 }, { 23294, 0x0020 }, { 23295, 0x0000 },
+ { 23295, 0x00E2 }, { 23299, 0x0000 }, { 23299, 0x0000 }, { 23299, 0xC000 },
+ { 23301, 0x0001 }, { 23302, 0x0000 }, { 23302, 0x0081 }, { 23304, 0x0020 },
+ { 23305, 0x0A00 }, { 23307, 0x0000 }, { 23307, 0x0000 }, { 23307, 0x1020 },
+ /* 0x20400 */
+ { 23309, 0x0000 }, { 23309, 0x8018 }, { 23312, 0x0000 }, { 23312, 0x0000 },
+ { 23312, 0x0000 }, { 23312, 0x0000 }, { 23312, 0x0020 }, { 23313, 0x0000 },
+ { 23313, 0x4080 }, { 23315, 0x0006 }, { 23317, 0x0008 }, { 23318, 0x0000 },
+ { 23318, 0x0000 }, { 23318, 0x0080 }, { 23319, 0x0000 }, { 23319, 0x5000 },
+ /* 0x20500 */
+ { 23321, 0x0000 }, { 23321, 0x0000 }, { 23321, 0x0000 }, { 23321, 0x0000 },
+ { 23321, 0x0080 }, { 23322, 0x0000 }, { 23322, 0x0000 }, { 23322, 0x0000 },
+ { 23322, 0x4000 }, { 23323, 0x0000 }, { 23323, 0x0020 }, { 23324, 0x0008 },
+ { 23325, 0x0408 }, { 23327, 0x8021 }, { 23330, 0x0801 }, { 23332, 0x0000 },
+ /* 0x20600 */
+ { 23332, 0x0000 }, { 23332, 0x0622 }, { 23336, 0x0000 }, { 23336, 0x0001 },
+ { 23337, 0x0000 }, { 23337, 0x0040 }, { 23338, 0x0000 }, { 23338, 0x0040 },
+ { 23339, 0x0000 }, { 23339, 0x0000 }, { 23339, 0x0000 }, { 23339, 0x0000 },
+ { 23339, 0x0000 }, { 23339, 0x0000 }, { 23339, 0x0000 }, { 23339, 0x0000 },
+ /* 0x20700 */
+ { 23339, 0x4000 }, { 23340, 0x0000 }, { 23340, 0x0000 }, { 23340, 0x0002 },
+ { 23341, 0x0000 }, { 23341, 0x0000 }, { 23341, 0x0000 }, { 23341, 0x0200 },
+ { 23342, 0x0000 }, { 23342, 0x0000 }, { 23342, 0x0000 }, { 23342, 0x0000 },
+ { 23342, 0x0000 }, { 23342, 0x0000 }, { 23342, 0x0000 }, { 23342, 0x0000 },
+ /* 0x20800 */
+ { 23342, 0x0000 }, { 23342, 0x0000 }, { 23342, 0x1000 }, { 23343, 0x0000 },
+ { 23343, 0x0000 }, { 23343, 0x0000 }, { 23343, 0x0000 }, { 23343, 0x0008 },
+ { 23344, 0x0000 }, { 23344, 0x0000 }, { 23344, 0x0000 }, { 23344, 0x0000 },
+ { 23344, 0x0000 }, { 23344, 0x0020 }, { 23345, 0x0000 }, { 23345, 0x0000 },
+ /* 0x20900 */
+ { 23345, 0x0000 }, { 23345, 0x0040 }, { 23346, 0x0008 }, { 23347, 0x0000 },
+ { 23347, 0x0000 }, { 23347, 0x0010 }, { 23348, 0x0000 }, { 23348, 0x0200 },
+ { 23349, 0x0000 }, { 23349, 0x0000 }, { 23349, 0x0000 }, { 23349, 0x0000 },
+ { 23349, 0x0000 }, { 23349, 0x0000 }, { 23349, 0x0080 }, { 23350, 0x0000 },
+ /* 0x20A00 */
+ { 23350, 0x0000 }, { 23350, 0x0002 }, { 23351, 0x0000 }, { 23351, 0x0000 },
+ { 23351, 0x0000 }, { 23351, 0x0001 }, { 23352, 0x0000 }, { 23352, 0x0000 },
+ { 23352, 0x0000 }, { 23352, 0x0000 }, { 23352, 0x0000 }, { 23352, 0x0010 },
+ { 23353, 0x2004 }, { 23355, 0x0000 }, { 23355, 0x0000 }, { 23355, 0x0000 },
+ /* 0x20B00 */
+ { 23355, 0x2000 }, { 23356, 0x0000 }, { 23356, 0x0000 }, { 23356, 0x0000 },
+ { 23356, 0x0000 }, { 23356, 0x0000 }, { 23356, 0x0000 }, { 23356, 0x0000 },
+ { 23356, 0x8000 }, { 23357, 0x0000 }, { 23357, 0x0300 }, { 23359, 0x8000 },
+ { 23360, 0x0840 }, { 23362, 0x0000 }, { 23362, 0x0804 }, { 23364, 0x8800 },
+ /* 0x20C00 */
+ { 23366, 0x2800 }, { 23368, 0x0000 }, { 23368, 0x0001 }, { 23369, 0x0C10 },
+ { 23372, 0x000E }, { 23375, 0x0008 }, { 23376, 0x0020 }, { 23377, 0x1180 },
+ { 23380, 0x2000 }, { 23381, 0x1040 }, { 23383, 0x0000 }, { 23383, 0x0120 },
+ { 23385, 0x8000 }, { 23386, 0x2078 }, { 23391, 0x2000 }, { 23392, 0x8000 },
+ /* 0x20D00 */
+ { 23393, 0x0000 }, { 23393, 0x0020 }, { 23394, 0x0100 }, { 23395, 0x0006 },
+ { 23397, 0x73C0 }, { 23404, 0x0000 }, { 23404, 0x8000 }, { 23405, 0xD012 },
+ { 23410, 0x0000 }, { 23410, 0x1040 }, { 23412, 0x0080 }, { 23413, 0x0004 },
+ { 23414, 0x0100 }, { 23415, 0x0000 }, { 23415, 0x0000 }, { 23415, 0x0000 },
+ /* 0x20E00 */
+ { 23415, 0xE610 }, { 23421, 0x2043 }, { 23425, 0x0000 }, { 23425, 0x0000 },
+ { 23425, 0x1000 }, { 23426, 0x0000 }, { 23426, 0x2000 }, { 23427, 0x0FE8 },
+ { 23435, 0x1000 }, { 23436, 0x2140 }, { 23439, 0x1C04 }, { 23443, 0x0040 },
+ { 23444, 0x0000 }, { 23444, 0x2180 }, { 23447, 0x0000 }, { 23447, 0x0F00 },
+ /* 0x20F00 */
+ { 23451, 0x0000 }, { 23451, 0x2000 }, { 23452, 0x6040 }, { 23455, 0x0803 },
+ { 23458, 0x1000 }, { 23459, 0x0000 }, { 23459, 0x0010 }, { 23460, 0x0000 },
+ { 23460, 0x2000 }, { 23461, 0x0001 }, { 23462, 0x2000 }, { 23463, 0x1070 },
+ { 23467, 0x0000 }, { 23467, 0x8000 }, { 23468, 0x3C00 }, { 23472, 0x0000 },
+ /* 0x21000 */
+ { 23472, 0x0000 }, { 23472, 0x6010 }, { 23475, 0x0000 }, { 23475, 0x0000 },
+ { 23475, 0x8000 }, { 23476, 0x1000 }, { 23477, 0x8000 }, { 23478, 0x09E0 },
+ { 23483, 0x0100 }, { 23484, 0x2040 }, { 23486, 0x0000 }, { 23486, 0x8010 },
+ { 23488, 0x8383 }, { 23494, 0x0008 }, { 23495, 0x0010 }, { 23496, 0x0070 },
+ /* 0x21100 */
+ { 23499, 0x0000 }, { 23499, 0x0000 }, { 23499, 0x8000 }, { 23500, 0x2800 },
+ { 23502, 0x8120 }, { 23505, 0x0000 }, { 23505, 0x0000 }, { 23505, 0x0000 },
+ { 23505, 0x0081 }, { 23507, 0x0000 }, { 23507, 0x0000 }, { 23507, 0x0000 },
+ { 23507, 0x0000 }, { 23507, 0x0200 }, { 23508, 0x0000 }, { 23508, 0x0000 },
+ /* 0x21200 */
+ { 23508, 0x0000 }, { 23508, 0x0000 }, { 23508, 0x0000 }, { 23508, 0x1000 },
+ { 23509, 0x8000 }, { 23510, 0x0000 }, { 23510, 0x0000 }, { 23510, 0x1000 },
+ { 23511, 0x0000 }, { 23511, 0x0000 }, { 23511, 0x0300 }, { 23513, 0x0001 },
+ { 23514, 0x0000 }, { 23514, 0x0000 }, { 23514, 0x0008 }, { 23515, 0x4000 },
+ /* 0x21300 */
+ { 23516, 0x003C }, { 23520, 0x0000 }, { 23520, 0x0000 }, { 23520, 0x0440 },
+ { 23522, 0x0000 }, { 23522, 0x0000 }, { 23522, 0x0000 }, { 23522, 0x0060 },
+ { 23524, 0x4000 }, { 23525, 0x1100 }, { 23527, 0x0000 }, { 23527, 0x0000 },
+ { 23527, 0x0060 }, { 23529, 0x0000 }, { 23529, 0x2000 }, { 23530, 0x4000 },
+ /* 0x21400 */
+ { 23531, 0x0000 }, { 23531, 0x0048 }, { 23533, 0x0010 }, { 23534, 0x8000 },
+ { 23535, 0x0000 }, { 23535, 0x0034 }, { 23538, 0x0000 }, { 23538, 0x0000 },
+ { 23538, 0x0400 }, { 23539, 0x0080 }, { 23540, 0x0000 }, { 23540, 0x0040 },
+ { 23541, 0x0000 }, { 23541, 0x0000 }, { 23541, 0x0100 }, { 23542, 0x2000 },
+ /* 0x21500 */
+ { 23543, 0x0000 }, { 23543, 0x0000 }, { 23543, 0x0000 }, { 23543, 0x0000 },
+ { 23543, 0x0000 }, { 23543, 0x0000 }, { 23543, 0x0000 }, { 23543, 0x0080 },
+ { 23544, 0x0004 }, { 23545, 0x0040 }, { 23546, 0x0000 }, { 23546, 0x0000 },
+ { 23546, 0x0000 }, { 23546, 0x0000 }, { 23546, 0x0000 }, { 23546, 0x0000 },
+ /* 0x21600 */
+ { 23546, 0x0400 }, { 23547, 0x0208 }, { 23549, 0x0000 }, { 23549, 0x4000 },
+ { 23550, 0x0000 }, { 23550, 0x0000 }, { 23550, 0x0002 }, { 23551, 0x0000 },
+ { 23551, 0x0000 }, { 23551, 0x0004 }, { 23552, 0x0000 }, { 23552, 0x0500 },
+ { 23554, 0x0007 }, { 23557, 0x8028 }, { 23560, 0x01C0 }, { 23563, 0x5C00 },
+ /* 0x21700 */
+ { 23567, 0x2000 }, { 23568, 0x0001 }, { 23569, 0x0040 }, { 23570, 0x1C00 },
+ { 23573, 0x0000 }, { 23573, 0x0080 }, { 23574, 0xF000 }, { 23578, 0x001B },
+ { 23582, 0x0000 }, { 23582, 0x0000 }, { 23582, 0x0800 }, { 23583, 0x003F },
+ { 23589, 0x0088 }, { 23591, 0x9E00 }, { 23596, 0x8000 }, { 23597, 0x1F60 },
+ /* 0x21800 */
+ { 23604, 0x0000 }, { 23604, 0x0000 }, { 23604, 0x2701 }, { 23609, 0x0E00 },
+ { 23612, 0x0021 }, { 23614, 0x4004 }, { 23616, 0x001E }, { 23620, 0x0880 },
+ { 23622, 0x0038 }, { 23625, 0xC000 }, { 23627, 0x0007 }, { 23630, 0xC000 },
+ { 23632, 0x0000 }, { 23632, 0x03C2 }, { 23637, 0x0000 }, { 23637, 0x0400 },
+ /* 0x21900 */
+ { 23638, 0x0038 }, { 23641, 0x1027 }, { 23646, 0x0084 }, { 23648, 0x0800 },
+ { 23649, 0x0010 }, { 23650, 0x0100 }, { 23651, 0x0400 }, { 23652, 0x1000 },
+ { 23653, 0x0109 }, { 23656, 0x0040 }, { 23657, 0x0000 }, { 23657, 0x0000 },
+ { 23657, 0x0000 }, { 23657, 0x0800 }, { 23658, 0x0000 }, { 23658, 0x0008 },
+ /* 0x21A00 */
+ { 23659, 0x0000 }, { 23659, 0x0000 }, { 23659, 0x2000 }, { 23660, 0x0010 },
+ { 23661, 0x0820 }, { 23663, 0x0000 }, { 23663, 0x0000 }, { 23663, 0x0000 },
+ { 23663, 0x0000 }, { 23663, 0x0000 }, { 23663, 0x0000 }, { 23663, 0x0000 },
+ { 23663, 0x0000 }, { 23663, 0x0000 }, { 23663, 0x0000 }, { 23663, 0x0000 },
+ /* 0x21B00 */
+ { 23663, 0x0000 }, { 23663, 0x0000 }, { 23663, 0x0000 }, { 23663, 0x0000 },
+ { 23663, 0x0010 }, { 23664, 0x0000 }, { 23664, 0x0000 }, { 23664, 0x0000 },
+ { 23664, 0x0000 }, { 23664, 0x0000 }, { 23664, 0x0000 }, { 23664, 0x0000 },
+ { 23664, 0x0006 }, { 23666, 0x0000 }, { 23666, 0x0000 }, { 23666, 0x0000 },
+ /* 0x21C00 */
+ { 23666, 0x0000 }, { 23666, 0x0000 }, { 23666, 0x0400 }, { 23667, 0x0000 },
+ { 23667, 0x0000 }, { 23667, 0x0000 }, { 23667, 0x0000 }, { 23667, 0x0001 },
+ { 23668, 0x0000 }, { 23668, 0x0000 }, { 23668, 0x1024 }, { 23671, 0x0000 },
+ { 23671, 0x0000 }, { 23671, 0x0000 }, { 23671, 0x0000 }, { 23671, 0x0000 },
+ /* 0x21D00 */
+ { 23671, 0x0000 }, { 23671, 0x0000 }, { 23671, 0x0000 }, { 23671, 0x0000 },
+ { 23671, 0x0040 }, { 23672, 0x0000 }, { 23672, 0x0000 }, { 23672, 0x0000 },
+ { 23672, 0x0000 }, { 23672, 0x0001 }, { 23673, 0x0000 }, { 23673, 0x0440 },
+ { 23675, 0x0400 }, { 23676, 0x0002 }, { 23677, 0x0800 }, { 23678, 0x0200 },
+ /* 0x21E00 */
+ { 23679, 0x0000 }, { 23679, 0x1000 }, { 23680, 0x0000 }, { 23680, 0x2080 },
+ { 23682, 0x0000 }, { 23682, 0x0000 }, { 23682, 0x0000 }, { 23682, 0x0000 },
+ { 23682, 0x0200 }, { 23683, 0x0000 }, { 23683, 0x0110 }, { 23685, 0x0000 },
+ { 23685, 0x0100 }, { 23686, 0x0020 }, { 23687, 0x0000 }, { 23687, 0x0000 },
+ /* 0x21F00 */
+ { 23687, 0x8000 }, { 23688, 0x0020 }, { 23689, 0x0000 }, { 23689, 0x0000 },
+ { 23689, 0x0000 }, { 23689, 0x0000 }, { 23689, 0x0400 }, { 23690, 0x0000 },
+ { 23690, 0x0000 }, { 23690, 0x4000 }, { 23691, 0x0002 }, { 23692, 0x0000 },
+ { 23692, 0x0000 }, { 23692, 0x0000 }, { 23692, 0x0100 }, { 23693, 0x0000 },
+ /* 0x22000 */
+ { 23693, 0x0000 }, { 23693, 0x0000 }, { 23693, 0x0000 }, { 23693, 0x0000 },
+ { 23693, 0x0220 }, { 23695, 0x0000 }, { 23695, 0x0000 }, { 23695, 0x4000 },
+ { 23696, 0x0000 }, { 23696, 0x0400 }, { 23697, 0x0000 }, { 23697, 0x0000 },
+ { 23697, 0x0080 }, { 23698, 0x0000 }, { 23698, 0x0000 }, { 23698, 0x1000 },
+ /* 0x22100 */
+ { 23699, 0x0000 }, { 23699, 0x0000 }, { 23699, 0x0400 }, { 23700, 0x0000 },
+ { 23700, 0x0000 }, { 23700, 0x0800 }, { 23701, 0x0000 }, { 23701, 0x0408 },
+ { 23703, 0x0000 }, { 23703, 0x0000 }, { 23703, 0x0002 }, { 23704, 0x0000 },
+ { 23704, 0x0008 }, { 23705, 0x0000 }, { 23705, 0x0000 }, { 23705, 0x0000 },
+ /* 0x22200 */
+ { 23705, 0x0100 }, { 23706, 0x0000 }, { 23706, 0x0000 }, { 23706, 0x0000 },
+ { 23706, 0x0000 }, { 23706, 0x0000 }, { 23706, 0x0000 }, { 23706, 0x1000 },
+ { 23707, 0x0000 }, { 23707, 0x0000 }, { 23707, 0x0000 }, { 23707, 0x0000 },
+ { 23707, 0x0000 }, { 23707, 0x0000 }, { 23707, 0x0000 }, { 23707, 0x0000 },
+ /* 0x22300 */
+ { 23707, 0x0000 }, { 23707, 0x0000 }, { 23707, 0x0022 }, { 23709, 0x0000 },
+ { 23709, 0x0000 }, { 23709, 0x0000 }, { 23709, 0x0000 }, { 23709, 0x0000 },
+ { 23709, 0x0000 }, { 23709, 0x0000 }, { 23709, 0x0000 }, { 23709, 0x2000 },
+ { 23710, 0x0000 }, { 23710, 0x0081 }, { 23712, 0x0000 }, { 23712, 0x0400 },
+ /* 0x22400 */
+ { 23713, 0x0000 }, { 23713, 0x0000 }, { 23713, 0x0000 }, { 23713, 0x0000 },
+ { 23713, 0x0000 }, { 23713, 0x0000 }, { 23713, 0x0020 }, { 23714, 0x0002 },
+ { 23715, 0x0800 }, { 23716, 0x0002 }, { 23717, 0x0000 }, { 23717, 0x0001 },
+ { 23718, 0x0000 }, { 23718, 0x0000 }, { 23718, 0x2000 }, { 23719, 0x0000 },
+ /* 0x22500 */
+ { 23719, 0x0000 }, { 23719, 0x0808 }, { 23721, 0x0000 }, { 23721, 0x0001 },
+ { 23722, 0x0000 }, { 23722, 0x0010 }, { 23723, 0x0000 }, { 23723, 0x0000 },
+ { 23723, 0x2000 }, { 23724, 0x0000 }, { 23724, 0x8000 }, { 23725, 0x4000 },
+ { 23726, 0x0000 }, { 23726, 0x0000 }, { 23726, 0x0000 }, { 23726, 0x0000 },
+ /* 0x22600 */
+ { 23726, 0x0000 }, { 23726, 0x1800 }, { 23728, 0x0800 }, { 23729, 0x0000 },
+ { 23729, 0x0000 }, { 23729, 0x0000 }, { 23729, 0x0100 }, { 23730, 0x0400 },
+ { 23731, 0x0000 }, { 23731, 0x0140 }, { 23733, 0x0000 }, { 23733, 0x0000 },
+ { 23733, 0x0000 }, { 23733, 0x0000 }, { 23733, 0x0000 }, { 23733, 0x0070 },
+ /* 0x22700 */
+ { 23736, 0x0000 }, { 23736, 0x8814 }, { 23740, 0x0400 }, { 23741, 0x0000 },
+ { 23741, 0x0000 }, { 23741, 0x0000 }, { 23741, 0x0000 }, { 23741, 0x0020 },
+ { 23742, 0x0002 }, { 23743, 0x0000 }, { 23743, 0x0000 }, { 23743, 0x0030 },
+ { 23745, 0x2000 }, { 23746, 0x0000 }, { 23746, 0x0000 }, { 23746, 0x0000 },
+ /* 0x22800 */
+ { 23746, 0x0008 }, { 23747, 0x0000 }, { 23747, 0x0000 }, { 23747, 0x0000 },
+ { 23747, 0x0000 }, { 23747, 0x8000 }, { 23748, 0x0001 }, { 23749, 0x0002 },
+ { 23750, 0x0000 }, { 23750, 0x0000 }, { 23750, 0x2000 }, { 23751, 0x0000 },
+ { 23751, 0x0002 }, { 23752, 0x0000 }, { 23752, 0x0000 }, { 23752, 0x0080 },
+ /* 0x22900 */
+ { 23753, 0x0000 }, { 23753, 0x0000 }, { 23753, 0x0040 }, { 23754, 0x0200 },
+ { 23755, 0x8000 }, { 23756, 0x0000 }, { 23756, 0x0880 }, { 23758, 0x0000 },
+ { 23758, 0x0001 }, { 23759, 0x0008 }, { 23760, 0x0000 }, { 23760, 0x0000 },
+ { 23760, 0x0000 }, { 23760, 0x0000 }, { 23760, 0x0000 }, { 23760, 0x0000 },
+ /* 0x22A00 */
+ { 23760, 0x0000 }, { 23760, 0x0000 }, { 23760, 0x0000 }, { 23760, 0x0000 },
+ { 23760, 0x0000 }, { 23760, 0x0000 }, { 23760, 0x0040 }, { 23761, 0x0000 },
+ { 23761, 0x0000 }, { 23761, 0x0000 }, { 23761, 0x0000 }, { 23761, 0x0000 },
+ { 23761, 0x8000 }, { 23762, 0x0020 }, { 23763, 0x0140 }, { 23765, 0x0000 },
+ /* 0x22B00 */
+ { 23765, 0x4000 }, { 23766, 0x0000 }, { 23766, 0x0004 }, { 23767, 0x8000 },
+ { 23768, 0x0008 }, { 23769, 0x0000 }, { 23769, 0x0400 }, { 23770, 0x0000 },
+ { 23770, 0x0000 }, { 23770, 0x0000 }, { 23770, 0x0000 }, { 23770, 0x0000 },
+ { 23770, 0x4400 }, { 23772, 0x0000 }, { 23772, 0x0000 }, { 23772, 0x0000 },
+ /* 0x22C00 */
+ { 23772, 0x0000 }, { 23772, 0x0000 }, { 23772, 0x00C0 }, { 23774, 0x0100 },
+ { 23775, 0x1000 }, { 23776, 0x0022 }, { 23778, 0x0004 }, { 23779, 0x0000 },
+ { 23779, 0x0100 }, { 23780, 0x0800 }, { 23781, 0x0202 }, { 23783, 0x0084 },
+ { 23785, 0x0244 }, { 23788, 0x0000 }, { 23788, 0x0000 }, { 23788, 0x0000 },
+ /* 0x22D00 */
+ { 23788, 0x0180 }, { 23790, 0x0004 }, { 23791, 0x0000 }, { 23791, 0x0000 },
+ { 23791, 0x1010 }, { 23793, 0x0000 }, { 23793, 0x0080 }, { 23794, 0x0000 },
+ { 23794, 0x2000 }, { 23795, 0x0020 }, { 23796, 0x0019 }, { 23799, 0x0080 },
+ { 23800, 0x0000 }, { 23800, 0x0000 }, { 23800, 0x4000 }, { 23801, 0x0000 },
+ /* 0x22E00 */
+ { 23801, 0x2000 }, { 23802, 0x0000 }, { 23802, 0x0000 }, { 23802, 0x0040 },
+ { 23803, 0x0004 }, { 23804, 0x0000 }, { 23804, 0x0000 }, { 23804, 0x0100 },
+ { 23805, 0x0800 }, { 23806, 0x0000 }, { 23806, 0x0000 }, { 23806, 0x0008 },
+ { 23807, 0x0000 }, { 23807, 0x0000 }, { 23807, 0x8000 }, { 23808, 0x0000 },
+ /* 0x22F00 */
+ { 23808, 0x0000 }, { 23808, 0x0000 }, { 23808, 0x0000 }, { 23808, 0x0000 },
+ { 23808, 0x0000 }, { 23808, 0x0000 }, { 23808, 0x0000 }, { 23808, 0x0010 },
+ { 23809, 0x0000 }, { 23809, 0x0000 }, { 23809, 0x0000 }, { 23809, 0x0000 },
+ { 23809, 0x1000 }, { 23810, 0x0000 }, { 23810, 0x0008 }, { 23811, 0x0000 },
+ /* 0x23000 */
+ { 23811, 0x0000 }, { 23811, 0x0000 }, { 23811, 0x0000 }, { 23811, 0x0008 },
+ { 23812, 0x0810 }, { 23814, 0x0000 }, { 23814, 0x0040 }, { 23815, 0x6000 },
+ { 23817, 0x4000 }, { 23818, 0x0000 }, { 23818, 0x0000 }, { 23818, 0x1080 },
+ { 23820, 0x0000 }, { 23820, 0x0400 }, { 23821, 0x0000 }, { 23821, 0x0000 },
+ /* 0x23100 */
+ { 23821, 0x0008 }, { 23822, 0x0000 }, { 23822, 0x0000 }, { 23822, 0x2000 },
+ { 23823, 0x0000 }, { 23823, 0x0000 }, { 23823, 0x0000 }, { 23823, 0x2000 },
+ { 23824, 0x0004 }, { 23825, 0x0000 }, { 23825, 0x0030 }, { 23827, 0x0008 },
+ { 23828, 0x0300 }, { 23830, 0x0000 }, { 23830, 0x0000 }, { 23830, 0x0380 },
+ /* 0x23200 */
+ { 23833, 0x8000 }, { 23834, 0x0000 }, { 23834, 0x8020 }, { 23836, 0x001E },
+ { 23840, 0x0000 }, { 23840, 0x0000 }, { 23840, 0x0004 }, { 23841, 0x0000 },
+ { 23841, 0x0602 }, { 23844, 0x0000 }, { 23844, 0x3800 }, { 23847, 0x0000 },
+ { 23847, 0x0000 }, { 23847, 0x0004 }, { 23848, 0x0003 }, { 23850, 0x0000 },
+ /* 0x23300 */
+ { 23850, 0x0401 }, { 23852, 0x8000 }, { 23853, 0x0000 }, { 23853, 0x0000 },
+ { 23853, 0x0000 }, { 23853, 0x0000 }, { 23853, 0x0000 }, { 23853, 0x0000 },
+ { 23853, 0x0000 }, { 23853, 0x0000 }, { 23853, 0x0000 }, { 23853, 0x0010 },
+ { 23854, 0x1000 }, { 23855, 0x4000 }, { 23856, 0x0040 }, { 23857, 0x4630 },
+ /* 0x23400 */
+ { 23862, 0x0001 }, { 23863, 0x0000 }, { 23863, 0x0000 }, { 23863, 0x8000 },
+ { 23864, 0x0000 }, { 23864, 0x0001 }, { 23865, 0x8000 }, { 23866, 0x0004 },
+ { 23867, 0x0000 }, { 23867, 0x0000 }, { 23867, 0x0000 }, { 23867, 0x0000 },
+ { 23867, 0x0000 }, { 23867, 0x0000 }, { 23867, 0x0020 }, { 23868, 0x0000 },
+ /* 0x23500 */
+ { 23868, 0x0000 }, { 23868, 0x0200 }, { 23869, 0x0000 }, { 23869, 0x0001 },
+ { 23870, 0x0000 }, { 23870, 0x0400 }, { 23871, 0x0080 }, { 23872, 0x0000 },
+ { 23872, 0x0000 }, { 23872, 0x1220 }, { 23875, 0x0000 }, { 23875, 0x0000 },
+ { 23875, 0xE000 }, { 23878, 0x0000 }, { 23878, 0x0000 }, { 23878, 0x0008 },
+ /* 0x23600 */
+ { 23879, 0x0001 }, { 23880, 0x0400 }, { 23881, 0x0000 }, { 23881, 0x1000 },
+ { 23882, 0x0001 }, { 23883, 0x8200 }, { 23885, 0x0000 }, { 23885, 0x0080 },
+ { 23886, 0x0000 }, { 23886, 0x0000 }, { 23886, 0x2040 }, { 23888, 0x0400 },
+ { 23889, 0x0000 }, { 23889, 0x8000 }, { 23890, 0x4000 }, { 23891, 0x0000 },
+ /* 0x23700 */
+ { 23891, 0x0008 }, { 23892, 0x0040 }, { 23893, 0xA001 }, { 23896, 0x8000 },
+ { 23897, 0x0000 }, { 23897, 0x0000 }, { 23897, 0x0040 }, { 23898, 0x0000 },
+ { 23898, 0x0002 }, { 23899, 0x0000 }, { 23899, 0x0004 }, { 23900, 0x1000 },
+ { 23901, 0x0004 }, { 23902, 0x00E0 }, { 23905, 0x0000 }, { 23905, 0x0000 },
+ /* 0x23800 */
+ { 23905, 0x0000 }, { 23905, 0x0000 }, { 23905, 0x0000 }, { 23905, 0x0400 },
+ { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 },
+ { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 },
+ { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 },
+ /* 0x23900 */
+ { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 },
+ { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 },
+ { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 },
+ { 23906, 0x0004 }, { 23907, 0x0000 }, { 23907, 0x0000 }, { 23907, 0x0000 },
+ /* 0x23A00 */
+ { 23907, 0x0000 }, { 23907, 0x0000 }, { 23907, 0x0000 }, { 23907, 0x0000 },
+ { 23907, 0x0000 }, { 23907, 0x0000 }, { 23907, 0x0000 }, { 23907, 0x0000 },
+ { 23907, 0x0000 }, { 23907, 0x0000 }, { 23907, 0x0080 }, { 23908, 0x0000 },
+ { 23908, 0x0000 }, { 23908, 0x0800 }, { 23909, 0x4000 }, { 23910, 0x0400 },
+ /* 0x23B00 */
+ { 23911, 0x0000 }, { 23911, 0x0000 }, { 23911, 0x0000 }, { 23911, 0x0000 },
+ { 23911, 0x0000 }, { 23911, 0x0400 }, { 23912, 0x0000 }, { 23912, 0x0000 },
+ { 23912, 0x0000 }, { 23912, 0x0000 }, { 23912, 0x0000 }, { 23912, 0x0000 },
+ { 23912, 0x0000 }, { 23912, 0x0000 }, { 23912, 0x0000 }, { 23912, 0x0000 },
+ /* 0x23C00 */
+ { 23912, 0x0000 }, { 23912, 0x0000 }, { 23912, 0x0000 }, { 23912, 0x0000 },
+ { 23912, 0x0000 }, { 23912, 0x0000 }, { 23912, 0x0008 }, { 23913, 0x0000 },
+ { 23913, 0x0000 }, { 23913, 0x0E00 }, { 23916, 0x0000 }, { 23916, 0x00A0 },
+ { 23918, 0x0380 }, { 23921, 0x0000 }, { 23921, 0x0000 }, { 23921, 0xF000 },
+ /* 0x23D00 */
+ { 23925, 0x0000 }, { 23925, 0x0000 }, { 23925, 0x0000 }, { 23925, 0x0000 },
+ { 23925, 0x0001 }, { 23926, 0x0800 }, { 23927, 0x0000 }, { 23927, 0x4000 },
+ { 23928, 0x8000 }, { 23929, 0x0000 }, { 23929, 0x0000 }, { 23929, 0x3FC0 },
+ { 23937, 0x0000 }, { 23937, 0x0000 }, { 23937, 0x0008 }, { 23938, 0x0100 },
+ /* 0x23E00 */
+ { 23939, 0x0000 }, { 23939, 0x0002 }, { 23940, 0xF000 }, { 23944, 0x0203 },
+ { 23947, 0x0000 }, { 23947, 0x0000 }, { 23947, 0x0000 }, { 23947, 0x0000 },
+ { 23947, 0x0F00 }, { 23951, 0x0000 }, { 23951, 0x0000 }, { 23951, 0x8200 },
+ { 23953, 0x0000 }, { 23953, 0x0080 }, { 23954, 0x0000 }, { 23954, 0x1F80 },
+ /* 0x23F00 */
+ { 23960, 0x0000 }, { 23960, 0x0000 }, { 23960, 0x0000 }, { 23960, 0x0020 },
+ { 23961, 0x0402 }, { 23963, 0x0000 }, { 23963, 0x0000 }, { 23963, 0x8000 },
+ { 23964, 0x8007 }, { 23968, 0x0000 }, { 23968, 0x0000 }, { 23968, 0x0090 },
+ { 23970, 0x0021 }, { 23972, 0x0000 }, { 23972, 0xF800 }, { 23977, 0x0001 },
+ /* 0x24000 */
+ { 23978, 0x0000 }, { 23978, 0x0002 }, { 23979, 0x0000 }, { 23979, 0x3E00 },
+ { 23984, 0x0000 }, { 23984, 0x0080 }, { 23985, 0x0000 }, { 23985, 0x0000 },
+ { 23985, 0x3820 }, { 23989, 0x0002 }, { 23990, 0x0000 }, { 23990, 0x0000 },
+ { 23990, 0x0200 }, { 23991, 0x0000 }, { 23991, 0x0002 }, { 23992, 0x0000 },
+ /* 0x24100 */
+ { 23992, 0x8010 }, { 23994, 0x0200 }, { 23995, 0x0000 }, { 23995, 0x8000 },
+ { 23996, 0x4011 }, { 23999, 0x90E0 }, { 24004, 0x0000 }, { 24004, 0x0480 },
+ { 24006, 0x0000 }, { 24006, 0x0000 }, { 24006, 0x1038 }, { 24010, 0x0020 },
+ { 24011, 0x2000 }, { 24012, 0x0000 }, { 24012, 0x0004 }, { 24013, 0x1000 },
+ /* 0x24200 */
+ { 24014, 0x0000 }, { 24014, 0x0800 }, { 24015, 0x0000 }, { 24015, 0x0000 },
+ { 24015, 0x0800 }, { 24016, 0x0240 }, { 24018, 0x0000 }, { 24018, 0x01C0 },
+ { 24021, 0x0010 }, { 24022, 0x0028 }, { 24024, 0x0020 }, { 24025, 0x0000 },
+ { 24025, 0x0602 }, { 24028, 0x0000 }, { 24028, 0x4000 }, { 24029, 0x0400 },
+ /* 0x24300 */
+ { 24030, 0x2000 }, { 24031, 0x0400 }, { 24032, 0x0000 }, { 24032, 0x0010 },
+ { 24033, 0x0100 }, { 24034, 0x0000 }, { 24034, 0x003C }, { 24038, 0x0000 },
+ { 24038, 0x1000 }, { 24039, 0x1040 }, { 24041, 0x0000 }, { 24041, 0x2000 },
+ { 24042, 0x0002 }, { 24043, 0x0000 }, { 24043, 0x0600 }, { 24045, 0x0104 },
+ /* 0x24400 */
+ { 24047, 0x0010 }, { 24048, 0x0000 }, { 24048, 0x0000 }, { 24048, 0x0060 },
+ { 24050, 0x0000 }, { 24050, 0x0C00 }, { 24052, 0x0000 }, { 24052, 0x0008 },
+ { 24053, 0x0180 }, { 24055, 0x0000 }, { 24055, 0x0000 }, { 24055, 0x1200 },
+ { 24057, 0x4000 }, { 24058, 0x0048 }, { 24060, 0x0000 }, { 24060, 0x0000 },
+ /* 0x24500 */
+ { 24060, 0x0020 }, { 24061, 0x0000 }, { 24061, 0x0002 }, { 24062, 0x0000 },
+ { 24062, 0x0000 }, { 24062, 0x0000 }, { 24062, 0x0000 }, { 24062, 0x0100 },
+ { 24063, 0x0000 }, { 24063, 0x0000 }, { 24063, 0x0000 }, { 24063, 0x0000 },
+ { 24063, 0x0100 }, { 24064, 0x0000 }, { 24064, 0x0000 }, { 24064, 0x0000 },
+ /* 0x24600 */
+ { 24064, 0x0000 }, { 24064, 0x0100 }, { 24065, 0x0400 }, { 24066, 0x0000 },
+ { 24066, 0x0000 }, { 24066, 0x0000 }, { 24066, 0x0020 }, { 24067, 0x0010 },
+ { 24068, 0x0000 }, { 24068, 0x0080 }, { 24069, 0x0000 }, { 24069, 0x0000 },
+ { 24069, 0x0000 }, { 24069, 0x0010 }, { 24070, 0x0000 }, { 24070, 0x0000 },
+ /* 0x24700 */
+ { 24070, 0x0040 }, { 24071, 0x0000 }, { 24071, 0x8020 }, { 24073, 0x0000 },
+ { 24073, 0x0000 }, { 24073, 0x0000 }, { 24073, 0x0000 }, { 24073, 0x0000 },
+ { 24073, 0x8000 }, { 24074, 0x0000 }, { 24074, 0x0000 }, { 24074, 0x0000 },
+ { 24074, 0x0000 }, { 24074, 0x0000 }, { 24074, 0x0001 }, { 24075, 0x0000 },
+ /* 0x24800 */
+ { 24075, 0x0000 }, { 24075, 0x0004 }, { 24076, 0x0008 }, { 24077, 0x0000 },
+ { 24077, 0x0000 }, { 24077, 0x0000 }, { 24077, 0x0000 }, { 24077, 0x0000 },
+ { 24077, 0x0004 }, { 24078, 0x0000 }, { 24078, 0x0000 }, { 24078, 0x0000 },
+ { 24078, 0x0000 }, { 24078, 0x0000 }, { 24078, 0x0200 }, { 24079, 0x880F },
+ /* 0x24900 */
+ { 24085, 0x1003 }, { 24088, 0x02C0 }, { 24091, 0x8000 }, { 24092, 0xC018 },
+ { 24096, 0x000F }, { 24100, 0x0000 }, { 24100, 0x000C }, { 24102, 0x8870 },
+ { 24107, 0xFF04 }, { 24116, 0x0010 }, { 24117, 0x3A90 }, { 24123, 0x0F80 },
+ { 24128, 0x0020 }, { 24129, 0xC401 }, { 24133, 0x3028 }, { 24137, 0x0BC0 },
+ /* 0x24A00 */
+ { 24142, 0x4000 }, { 24143, 0x002C }, { 24146, 0x07FE }, { 24156, 0x4000 },
+ { 24157, 0xC424 }, { 24162, 0x2003 }, { 24165, 0x00E0 }, { 24168, 0x0782 },
+ { 24173, 0x1000 }, { 24174, 0x0078 }, { 24178, 0x00F0 }, { 24182, 0x1C0E },
+ { 24188, 0x0481 }, { 24191, 0x8002 }, { 24193, 0x0204 }, { 24195, 0x0000 },
+ /* 0x24B00 */
+ { 24195, 0x0000 }, { 24195, 0x0000 }, { 24195, 0x0000 }, { 24195, 0x0000 },
+ { 24195, 0x0000 }, { 24195, 0x0000 }, { 24195, 0x4000 }, { 24196, 0x0000 },
+ { 24196, 0x0000 }, { 24196, 0x0000 }, { 24196, 0x0000 }, { 24196, 0x0000 },
+ { 24196, 0x0000 }, { 24196, 0x0000 }, { 24196, 0x0000 }, { 24196, 0x0020 },
+ /* 0x24C00 */
+ { 24197, 0x0200 }, { 24198, 0x0000 }, { 24198, 0x0000 }, { 24198, 0x0000 },
+ { 24198, 0x0000 }, { 24198, 0x0000 }, { 24198, 0x0000 }, { 24198, 0x0000 },
+ { 24198, 0x0000 }, { 24198, 0xC000 }, { 24200, 0x0000 }, { 24200, 0x0000 },
+ { 24200, 0x0200 }, { 24201, 0x0200 }, { 24202, 0x0000 }, { 24202, 0x0000 },
+ /* 0x24D00 */
+ { 24202, 0x0040 }, { 24203, 0x0008 }, { 24204, 0x0000 }, { 24204, 0x0000 },
+ { 24204, 0x0000 }, { 24204, 0x0000 }, { 24204, 0x0000 }, { 24204, 0x0000 },
+ { 24204, 0x0000 }, { 24204, 0x0000 }, { 24204, 0x0000 }, { 24204, 0x0100 },
+ { 24205, 0x0000 }, { 24205, 0x0000 }, { 24205, 0x0C00 }, { 24207, 0x0000 },
+ /* 0x24E00 */
+ { 24207, 0x0000 }, { 24207, 0x0000 }, { 24207, 0x0000 }, { 24207, 0x0800 },
+ { 24208, 0x0000 }, { 24208, 0x0001 }, { 24209, 0x0000 }, { 24209, 0x0000 },
+ { 24209, 0x0000 }, { 24209, 0x0000 }, { 24209, 0x00A0 }, { 24211, 0x0000 },
+ { 24211, 0x0000 }, { 24211, 0x0000 }, { 24211, 0x0000 }, { 24211, 0x0000 },
+ /* 0x24F00 */
+ { 24211, 0x4000 }, { 24212, 0x0000 }, { 24212, 0x0000 }, { 24212, 0x0000 },
+ { 24212, 0x0000 }, { 24212, 0x1000 }, { 24213, 0x0000 }, { 24213, 0x0000 },
+ { 24213, 0x0044 }, { 24215, 0x0480 }, { 24217, 0x0200 }, { 24218, 0x0100 },
+ { 24219, 0x0004 }, { 24220, 0x0000 }, { 24220, 0x0000 }, { 24220, 0x0000 },
+ /* 0x25000 */
+ { 24220, 0x0000 }, { 24220, 0x0000 }, { 24220, 0x1000 }, { 24221, 0x0000 },
+ { 24221, 0x0000 }, { 24221, 0x0004 }, { 24222, 0x0000 }, { 24222, 0x0000 },
+ { 24222, 0x0000 }, { 24222, 0x2000 }, { 24223, 0x0000 }, { 24223, 0x0000 },
+ { 24223, 0x0000 }, { 24223, 0x0000 }, { 24223, 0x0000 }, { 24223, 0x0000 },
+ /* 0x25100 */
+ { 24223, 0x0000 }, { 24223, 0x0000 }, { 24223, 0x0800 }, { 24224, 0x0000 },
+ { 24224, 0x0100 }, { 24225, 0x0000 }, { 24225, 0x0000 }, { 24225, 0x6000 },
+ { 24227, 0x0000 }, { 24227, 0x0000 }, { 24227, 0x0000 }, { 24227, 0x0000 },
+ { 24227, 0x2000 }, { 24228, 0x0000 }, { 24228, 0x00C8 }, { 24231, 0x0000 },
+ /* 0x25200 */
+ { 24231, 0x0000 }, { 24231, 0x0000 }, { 24231, 0x0003 }, { 24233, 0x0000 },
+ { 24233, 0x0000 }, { 24233, 0x0001 }, { 24234, 0x0000 }, { 24234, 0x0000 },
+ { 24234, 0x0000 }, { 24234, 0x0200 }, { 24235, 0x0000 }, { 24235, 0x0000 },
+ { 24235, 0x0080 }, { 24236, 0x0100 }, { 24237, 0x0000 }, { 24237, 0x0000 },
+ /* 0x25300 */
+ { 24237, 0x4000 }, { 24238, 0x000A }, { 24240, 0x0000 }, { 24240, 0x0000 },
+ { 24240, 0x0000 }, { 24240, 0x0000 }, { 24240, 0x0000 }, { 24240, 0x0000 },
+ { 24240, 0x0000 }, { 24240, 0x0000 }, { 24240, 0x0000 }, { 24240, 0x0000 },
+ { 24240, 0x0000 }, { 24240, 0x0000 }, { 24240, 0x0000 }, { 24240, 0x0000 },
+ /* 0x25400 */
+ { 24240, 0x0000 }, { 24240, 0x0200 }, { 24241, 0x8020 }, { 24243, 0x0001 },
+ { 24244, 0x0040 }, { 24245, 0x0000 }, { 24245, 0x5000 }, { 24247, 0x0000 },
+ { 24247, 0x0000 }, { 24247, 0x0000 }, { 24247, 0x0000 }, { 24247, 0x0000 },
+ { 24247, 0x0000 }, { 24247, 0x0000 }, { 24247, 0x0000 }, { 24247, 0x0000 },
+ /* 0x25500 */
+ { 24247, 0x0000 }, { 24247, 0x0000 }, { 24247, 0x0000 }, { 24247, 0x8022 },
+ { 24250, 0x0000 }, { 24250, 0x7800 }, { 24254, 0x0064 }, { 24257, 0x0000 },
+ { 24257, 0x8012 }, { 24260, 0x0000 }, { 24260, 0x0000 }, { 24260, 0x0200 },
+ { 24261, 0x0000 }, { 24261, 0x0820 }, { 24263, 0x0001 }, { 24264, 0x0000 },
+ /* 0x25600 */
+ { 24264, 0x0020 }, { 24265, 0x0000 }, { 24265, 0x0000 }, { 24265, 0x0020 },
+ { 24266, 0x0000 }, { 24266, 0x0002 }, { 24267, 0x0000 }, { 24267, 0x0000 },
+ { 24267, 0x0008 }, { 24268, 0x0020 }, { 24269, 0x0000 }, { 24269, 0x0000 },
+ { 24269, 0x0000 }, { 24269, 0x0000 }, { 24269, 0x0008 }, { 24270, 0x0040 },
+ /* 0x25700 */
+ { 24271, 0x0040 }, { 24272, 0x2000 }, { 24273, 0x0020 }, { 24274, 0x2000 },
+ { 24275, 0x0000 }, { 24275, 0x0000 }, { 24275, 0x0000 }, { 24275, 0x0004 },
+ { 24276, 0x0000 }, { 24276, 0x0000 }, { 24276, 0x0000 }, { 24276, 0x0000 },
+ { 24276, 0x0080 }, { 24277, 0x8000 }, { 24278, 0x0003 }, { 24280, 0x0000 },
+ /* 0x25800 */
+ { 24280, 0x0000 }, { 24280, 0x0000 }, { 24280, 0x0000 }, { 24280, 0x0000 },
+ { 24280, 0x0000 }, { 24280, 0x2080 }, { 24282, 0x0000 }, { 24282, 0x0004 },
+ { 24283, 0x0000 }, { 24283, 0x0000 }, { 24283, 0x0000 }, { 24283, 0x0000 },
+ { 24283, 0x0100 }, { 24284, 0x0000 }, { 24284, 0x0002 }, { 24285, 0x0000 },
+ /* 0x25900 */
+ { 24285, 0x0008 }, { 24286, 0x0000 }, { 24286, 0x0000 }, { 24286, 0x0000 },
+ { 24286, 0x0040 }, { 24287, 0x0040 }, { 24288, 0x0000 }, { 24288, 0x0000 },
+ { 24288, 0x0000 }, { 24288, 0x0000 }, { 24288, 0x1000 }, { 24289, 0x0000 },
+ { 24289, 0x1000 }, { 24290, 0x0000 }, { 24290, 0x0000 }, { 24290, 0x0000 },
+ /* 0x25A00 */
+ { 24290, 0x0000 }, { 24290, 0x0000 }, { 24290, 0x0000 }, { 24290, 0x0000 },
+ { 24290, 0x0000 }, { 24290, 0x0000 }, { 24290, 0x0000 }, { 24290, 0x0000 },
+ { 24290, 0x0000 }, { 24290, 0x1020 }, { 24292, 0xC000 }, { 24294, 0x0000 },
+ { 24294, 0x0000 }, { 24294, 0x0000 }, { 24294, 0x0200 }, { 24295, 0x0000 },
+ /* 0x25B00 */
+ { 24295, 0x0000 }, { 24295, 0x0000 }, { 24295, 0x0000 }, { 24295, 0x0000 },
+ { 24295, 0x0000 }, { 24295, 0x0000 }, { 24295, 0x0000 }, { 24295, 0x0010 },
+ { 24296, 0x0200 }, { 24297, 0x0000 }, { 24297, 0x0000 }, { 24297, 0x0018 },
+ { 24299, 0x0040 }, { 24300, 0x0000 }, { 24300, 0x0110 }, { 24302, 0x0000 },
+ /* 0x25C00 */
+ { 24302, 0x0042 }, { 24304, 0x0000 }, { 24304, 0x0002 }, { 24305, 0x0000 },
+ { 24305, 0x0400 }, { 24306, 0x0000 }, { 24306, 0x0020 }, { 24307, 0x0000 },
+ { 24307, 0x0000 }, { 24307, 0x0002 }, { 24308, 0x0010 }, { 24309, 0x0000 },
+ { 24309, 0x0003 }, { 24311, 0x0000 }, { 24311, 0x0000 }, { 24311, 0x4000 },
+ /* 0x25D00 */
+ { 24312, 0x0000 }, { 24312, 0x0000 }, { 24312, 0x0001 }, { 24313, 0x0001 },
+ { 24314, 0x0008 }, { 24315, 0x0000 }, { 24315, 0x0000 }, { 24315, 0x0000 },
+ { 24315, 0x0000 }, { 24315, 0x0000 }, { 24315, 0x0000 }, { 24315, 0x0000 },
+ { 24315, 0x0000 }, { 24315, 0x0000 }, { 24315, 0x0000 }, { 24315, 0x0000 },
+ /* 0x25E00 */
+ { 24315, 0x4000 }, { 24316, 0x0000 }, { 24316, 0x0000 }, { 24316, 0x0000 },
+ { 24316, 0x0200 }, { 24317, 0x0000 }, { 24317, 0x0000 }, { 24317, 0x0000 },
+ { 24317, 0x000E }, { 24320, 0x0000 }, { 24320, 0x0040 }, { 24321, 0x1000 },
+ { 24322, 0x0000 }, { 24322, 0x0180 }, { 24324, 0x0000 }, { 24324, 0x0000 },
+ /* 0x25F00 */
+ { 24324, 0x0000 }, { 24324, 0x0400 }, { 24325, 0x0000 }, { 24325, 0x0000 },
+ { 24325, 0x0800 }, { 24326, 0x0000 }, { 24326, 0x0000 }, { 24326, 0x0000 },
+ { 24326, 0x0000 }, { 24326, 0x0000 }, { 24326, 0x0000 }, { 24326, 0x0000 },
+ { 24326, 0x0000 }, { 24326, 0x0000 }, { 24326, 0x0006 }, { 24328, 0x0000 },
+ /* 0x26000 */
+ { 24328, 0x0000 }, { 24328, 0x0000 }, { 24328, 0x0200 }, { 24329, 0x0000 },
+ { 24329, 0x0100 }, { 24330, 0x0000 }, { 24330, 0x0010 }, { 24331, 0x0000 },
+ { 24331, 0x0008 }, { 24332, 0x0080 }, { 24333, 0x0030 }, { 24335, 0x0000 },
+ { 24335, 0x0000 }, { 24335, 0x0000 }, { 24335, 0x0000 }, { 24335, 0x0000 },
+ /* 0x26100 */
+ { 24335, 0x0004 }, { 24336, 0x0000 }, { 24336, 0x0002 }, { 24337, 0x0000 },
+ { 24337, 0x0000 }, { 24337, 0x1E00 }, { 24341, 0x0000 }, { 24341, 0x0000 },
+ { 24341, 0x0000 }, { 24341, 0x0000 }, { 24341, 0x6000 }, { 24343, 0x0004 },
+ { 24344, 0x0000 }, { 24344, 0x2000 }, { 24345, 0x0000 }, { 24345, 0x0000 },
+ /* 0x26200 */
+ { 24345, 0x0000 }, { 24345, 0x0000 }, { 24345, 0x0000 }, { 24345, 0x0000 },
+ { 24345, 0x0000 }, { 24345, 0x0100 }, { 24346, 0x0C02 }, { 24349, 0x0000 },
+ { 24349, 0x0000 }, { 24349, 0x0000 }, { 24349, 0x0000 }, { 24349, 0x0000 },
+ { 24349, 0x0000 }, { 24349, 0x0001 }, { 24350, 0x0000 }, { 24350, 0x0000 },
+ /* 0x26300 */
+ { 24350, 0x0000 }, { 24350, 0x0000 }, { 24350, 0x0000 }, { 24350, 0x0020 },
+ { 24351, 0x1800 }, { 24353, 0x0002 }, { 24354, 0x0000 }, { 24354, 0x0000 },
+ { 24354, 0x0000 }, { 24354, 0x0000 }, { 24354, 0x0000 }, { 24354, 0x4000 },
+ { 24355, 0x0000 }, { 24355, 0x0000 }, { 24355, 0x0000 }, { 24355, 0x0120 },
+ /* 0x26400 */
+ { 24357, 0x0004 }, { 24358, 0x0007 }, { 24361, 0x0000 }, { 24361, 0x0000 },
+ { 24361, 0x0400 }, { 24362, 0x0000 }, { 24362, 0x0200 }, { 24363, 0x0000 },
+ { 24363, 0x2310 }, { 24367, 0x0100 }, { 24368, 0x0000 }, { 24368, 0x0000 },
+ { 24368, 0x0000 }, { 24368, 0x0000 }, { 24368, 0x0000 }, { 24368, 0x0000 },
+ /* 0x26500 */
+ { 24368, 0x0000 }, { 24368, 0x0004 }, { 24369, 0x0000 }, { 24369, 0x0000 },
+ { 24369, 0x0000 }, { 24369, 0x0000 }, { 24369, 0x0000 }, { 24369, 0x0004 },
+ { 24370, 0x0000 }, { 24370, 0x0000 }, { 24370, 0x2001 }, { 24372, 0x8000 },
+ { 24373, 0x0000 }, { 24373, 0x0000 }, { 24373, 0x0000 }, { 24373, 0x0000 },
+ /* 0x26600 */
+ { 24373, 0x0000 }, { 24373, 0x0004 }, { 24374, 0x0040 }, { 24375, 0x0000 },
+ { 24375, 0x0000 }, { 24375, 0x0000 }, { 24375, 0x0000 }, { 24375, 0x0000 },
+ { 24375, 0x0000 }, { 24375, 0x0000 }, { 24375, 0x8000 }, { 24376, 0x0022 },
+ { 24378, 0x0000 }, { 24378, 0x0400 }, { 24379, 0x0100 }, { 24380, 0x1000 },
+ /* 0x26700 */
+ { 24381, 0x0000 }, { 24381, 0x0040 }, { 24382, 0x0000 }, { 24382, 0x0000 },
+ { 24382, 0x0002 }, { 24383, 0x0000 }, { 24383, 0x0000 }, { 24383, 0x0000 },
+ { 24383, 0x0000 }, { 24383, 0x0200 }, { 24384, 0x0000 }, { 24384, 0x0018 },
+ { 24386, 0x1000 }, { 24387, 0x0000 }, { 24387, 0x0000 }, { 24387, 0x0000 },
+ /* 0x26800 */
+ { 24387, 0x0000 }, { 24387, 0x1000 }, { 24388, 0x0000 }, { 24388, 0x0000 },
+ { 24388, 0x0040 }, { 24389, 0x4000 }, { 24390, 0x4000 }, { 24391, 0x0000 },
+ { 24391, 0x0500 }, { 24393, 0x0008 }, { 24394, 0x0000 }, { 24394, 0x0000 },
+ { 24394, 0x0080 }, { 24395, 0x0000 }, { 24395, 0x0000 }, { 24395, 0x0000 },
+ /* 0x26900 */
+ { 24395, 0x4000 }, { 24396, 0x0002 }, { 24397, 0x0040 }, { 24398, 0x0200 },
+ { 24399, 0x0000 }, { 24399, 0x0002 }, { 24400, 0x0000 }, { 24400, 0x0000 },
+ { 24400, 0x0000 }, { 24400, 0x0000 }, { 24400, 0x0100 }, { 24401, 0x0020 },
+ { 24402, 0x0000 }, { 24402, 0x0000 }, { 24402, 0x0000 }, { 24402, 0x0404 },
+ /* 0x26A00 */
+ { 24404, 0x0000 }, { 24404, 0x0000 }, { 24404, 0x6000 }, { 24406, 0x0010 },
+ { 24407, 0x0004 }, { 24408, 0x0006 }, { 24410, 0x0000 }, { 24410, 0x0000 },
+ { 24410, 0x0000 }, { 24410, 0x0000 }, { 24410, 0x0000 }, { 24410, 0x0000 },
+ { 24410, 0x0000 }, { 24410, 0x0000 }, { 24410, 0x0000 }, { 24410, 0x0000 },
+ /* 0x26B00 */
+ { 24410, 0x0420 }, { 24412, 0x0028 }, { 24414, 0x0100 }, { 24415, 0x0000 },
+ { 24415, 0x0000 }, { 24415, 0x080F }, { 24420, 0x0000 }, { 24420, 0x0020 },
+ { 24421, 0x0004 }, { 24422, 0x20C0 }, { 24425, 0x0000 }, { 24425, 0x0008 },
+ { 24426, 0x0001 }, { 24427, 0x0000 }, { 24427, 0x0000 }, { 24427, 0x0080 },
+ /* 0x26C00 */
+ { 24428, 0x0000 }, { 24428, 0x0000 }, { 24428, 0x0002 }, { 24429, 0x0000 },
+ { 24429, 0x0001 }, { 24430, 0x0000 }, { 24430, 0x0000 }, { 24430, 0xC000 },
+ { 24432, 0x0007 }, { 24435, 0x0000 }, { 24435, 0x0010 }, { 24436, 0x2180 },
+ { 24439, 0x0009 }, { 24441, 0x0002 }, { 24442, 0x0000 }, { 24442, 0x0000 },
+ /* 0x26D00 */
+ { 24442, 0x0000 }, { 24442, 0x0000 }, { 24442, 0x07FC }, { 24451, 0x0000 },
+ { 24451, 0x0000 }, { 24451, 0x0002 }, { 24452, 0x0000 }, { 24452, 0x0010 },
+ { 24453, 0x0000 }, { 24453, 0x0000 }, { 24453, 0x40FF }, { 24462, 0x0000 },
+ { 24462, 0x0000 }, { 24462, 0x1000 }, { 24463, 0x0C00 }, { 24465, 0x0001 },
+ /* 0x26E00 */
+ { 24466, 0x00A1 }, { 24469, 0x0004 }, { 24470, 0x0000 }, { 24470, 0x0000 },
+ { 24470, 0x003C }, { 24474, 0x0000 }, { 24474, 0x4000 }, { 24475, 0x0084 },
+ { 24477, 0x0010 }, { 24478, 0x0200 }, { 24479, 0x0000 }, { 24479, 0x0000 },
+ { 24479, 0x0000 }, { 24479, 0x00FF }, { 24487, 0x0000 }, { 24487, 0x0000 },
+ /* 0x26F00 */
+ { 24487, 0x0000 }, { 24487, 0x0000 }, { 24487, 0x0040 }, { 24488, 0x0000 },
+ { 24488, 0x0000 }, { 24488, 0x0000 }, { 24488, 0x0000 }, { 24488, 0x0018 },
+ { 24490, 0x0000 }, { 24490, 0x8000 }, { 24491, 0x0002 }, { 24492, 0x4000 },
+ { 24493, 0x0000 }, { 24493, 0xC000 }, { 24495, 0x0000 }, { 24495, 0x0000 },
+ /* 0x27000 */
+ { 24495, 0x4000 }, { 24496, 0x0000 }, { 24496, 0x0000 }, { 24496, 0x0000 },
+ { 24496, 0x0800 }, { 24497, 0x000C }, { 24499, 0x0000 }, { 24499, 0x0000 },
+ { 24499, 0x0100 }, { 24500, 0x0000 }, { 24500, 0xE000 }, { 24503, 0x0000 },
+ { 24503, 0x2000 }, { 24504, 0x0000 }, { 24504, 0x0000 }, { 24504, 0x0100 },
+ /* 0x27100 */
+ { 24505, 0x3200 }, { 24508, 0x0000 }, { 24508, 0x00C0 }, { 24510, 0x0000 },
+ { 24510, 0x0000 }, { 24510, 0x0000 }, { 24510, 0x0030 }, { 24512, 0x0020 },
+ { 24513, 0x0000 }, { 24513, 0x0000 }, { 24513, 0x0000 }, { 24513, 0x0000 },
+ { 24513, 0x2000 }, { 24514, 0x0000 }, { 24514, 0x0000 }, { 24514, 0x0000 },
+ /* 0x27200 */
+ { 24514, 0x0000 }, { 24514, 0x0800 }, { 24515, 0x0000 }, { 24515, 0x0000 },
+ { 24515, 0x0000 }, { 24515, 0x0000 }, { 24515, 0x0000 }, { 24515, 0x0000 },
+ { 24515, 0x0821 }, { 24518, 0x0000 }, { 24518, 0x0000 }, { 24518, 0x0044 },
+ { 24520, 0x0000 }, { 24520, 0x0000 }, { 24520, 0x0040 }, { 24521, 0x0000 },
+ /* 0x27300 */
+ { 24521, 0x0000 }, { 24521, 0x0000 }, { 24521, 0x0000 }, { 24521, 0x0000 },
+ { 24521, 0x0000 }, { 24521, 0x0000 }, { 24521, 0x0000 }, { 24521, 0x0000 },
+ { 24521, 0x0000 }, { 24521, 0x0400 }, { 24522, 0x0000 }, { 24522, 0x0000 },
+ { 24522, 0x0000 }, { 24522, 0x0000 }, { 24522, 0x0000 }, { 24522, 0x0000 },
+ /* 0x27400 */
+ { 24522, 0x0000 }, { 24522, 0x0000 }, { 24522, 0x0004 }, { 24523, 0x0000 },
+ { 24523, 0x0000 }, { 24523, 0x0001 }, { 24524, 0x0000 }, { 24524, 0x0000 },
+ { 24524, 0x0050 }, { 24526, 0x0000 }, { 24526, 0x0000 }, { 24526, 0x0000 },
+ { 24526, 0x0000 }, { 24526, 0x0000 }, { 24526, 0x0000 }, { 24526, 0x0000 },
+ /* 0x27500 */
+ { 24526, 0x0000 }, { 24526, 0x0000 }, { 24526, 0x0000 }, { 24526, 0x0000 },
+ { 24526, 0x0000 }, { 24526, 0x0000 }, { 24526, 0x0000 }, { 24526, 0x0010 },
+ { 24527, 0x0000 }, { 24527, 0x0000 }, { 24527, 0x0008 }, { 24528, 0x0000 },
+ { 24528, 0x0000 }, { 24528, 0x0000 }, { 24528, 0x0011 }, { 24530, 0x6000 },
+ /* 0x27600 */
+ { 24532, 0x1080 }, { 24534, 0x0000 }, { 24534, 0x0000 }, { 24534, 0x0204 },
+ { 24536, 0x0000 }, { 24536, 0x00E0 }, { 24539, 0x0000 }, { 24539, 0x0000 },
+ { 24539, 0x0000 }, { 24539, 0x0010 }, { 24540, 0x0000 }, { 24540, 0x0000 },
+ { 24540, 0x0000 }, { 24540, 0x0000 }, { 24540, 0x0000 }, { 24540, 0x0000 },
+ /* 0x27700 */
+ { 24540, 0x8000 }, { 24541, 0x0000 }, { 24541, 0x0000 }, { 24541, 0x0060 },
+ { 24543, 0x0002 }, { 24544, 0x4000 }, { 24545, 0x0000 }, { 24545, 0x0000 },
+ { 24545, 0x0030 }, { 24547, 0x0000 }, { 24547, 0x0000 }, { 24547, 0x0000 },
+ { 24547, 0x1000 }, { 24548, 0x0000 }, { 24548, 0x0000 }, { 24548, 0x0000 },
+ /* 0x27800 */
+ { 24548, 0x0000 }, { 24548, 0x0000 }, { 24548, 0x0000 }, { 24548, 0x0000 },
+ { 24548, 0x0000 }, { 24548, 0x0100 }, { 24549, 0x0000 }, { 24549, 0x0001 },
+ { 24550, 0x0000 }, { 24550, 0x2000 }, { 24551, 0x0000 }, { 24551, 0x0004 },
+ { 24552, 0x0100 }, { 24553, 0x0000 }, { 24553, 0x0000 }, { 24553, 0x0000 },
+ /* 0x27900 */
+ { 24553, 0x0000 }, { 24553, 0x0000 }, { 24553, 0x0010 }, { 24554, 0x0000 },
+ { 24554, 0x0000 }, { 24554, 0x0000 }, { 24554, 0x0080 }, { 24555, 0x0400 },
+ { 24556, 0x0000 }, { 24556, 0x0000 }, { 24556, 0x0001 }, { 24557, 0x0000 },
+ { 24557, 0x0000 }, { 24557, 0x2000 }, { 24558, 0x0000 }, { 24558, 0x2000 },
+ /* 0x27A00 */
+ { 24559, 0x4400 }, { 24561, 0x0000 }, { 24561, 0x0000 }, { 24561, 0x4000 },
+ { 24562, 0x0000 }, { 24562, 0x0208 }, { 24564, 0x0000 }, { 24564, 0x0200 },
+ { 24565, 0x0010 }, { 24566, 0x0000 }, { 24566, 0x0000 }, { 24566, 0x6000 },
+ { 24568, 0x0000 }, { 24568, 0x0000 }, { 24568, 0x0000 }, { 24568, 0x0010 },
+ /* 0x27B00 */
+ { 24569, 0x0840 }, { 24571, 0x0100 }, { 24572, 0x0000 }, { 24572, 0x0700 },
+ { 24575, 0x0100 }, { 24576, 0x0000 }, { 24576, 0x0000 }, { 24576, 0x0000 },
+ { 24576, 0x0000 }, { 24576, 0x0000 }, { 24576, 0x0000 }, { 24576, 0x0000 },
+ { 24576, 0x0000 }, { 24576, 0x0000 }, { 24576, 0x0000 }, { 24576, 0x0010 },
+ /* 0x27C00 */
+ { 24577, 0x0000 }, { 24577, 0x0004 }, { 24578, 0x0000 }, { 24578, 0x0000 },
+ { 24578, 0x0000 }, { 24578, 0x0000 }, { 24578, 0x0000 }, { 24578, 0x0000 },
+ { 24578, 0x0000 }, { 24578, 0x0000 }, { 24578, 0x0000 }, { 24578, 0x0000 },
+ { 24578, 0x0000 }, { 24578, 0x0000 }, { 24578, 0x0000 }, { 24578, 0x0000 },
+ /* 0x27D00 */
+ { 24578, 0x0000 }, { 24578, 0x0000 }, { 24578, 0x8000 }, { 24579, 0x0000 },
+ { 24579, 0x0000 }, { 24579, 0x0018 }, { 24581, 0x0040 }, { 24582, 0x0008 },
+ { 24583, 0x8010 }, { 24585, 0x0100 }, { 24586, 0x0000 }, { 24586, 0x2000 },
+ { 24587, 0x0000 }, { 24587, 0x1000 }, { 24588, 0x0000 }, { 24588, 0x0000 },
+ /* 0x27E00 */
+ { 24588, 0x0000 }, { 24588, 0x0000 }, { 24588, 0x0000 }, { 24588, 0x0000 },
+ { 24588, 0xA000 }, { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 },
+ { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 },
+ { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 },
+ /* 0x27F00 */
+ { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 },
+ { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 },
+ { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 },
+ { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0200 },
+ /* 0x28000 */
+ { 24591, 0x0204 }, { 24593, 0x4000 }, { 24594, 0x0018 }, { 24596, 0x0000 },
+ { 24596, 0x0100 }, { 24597, 0x0000 }, { 24597, 0x0000 }, { 24597, 0x0000 },
+ { 24597, 0x0008 }, { 24598, 0x0001 }, { 24599, 0x0000 }, { 24599, 0x6000 },
+ { 24601, 0x0000 }, { 24601, 0x0000 }, { 24601, 0x0300 }, { 24603, 0x0010 },
+ /* 0x28100 */
+ { 24604, 0x0000 }, { 24604, 0x0000 }, { 24604, 0x4000 }, { 24605, 0x0000 },
+ { 24605, 0x8000 }, { 24606, 0x2000 }, { 24607, 0x8000 }, { 24608, 0x0000 },
+ { 24608, 0x0200 }, { 24609, 0x0000 }, { 24609, 0x8000 }, { 24610, 0x1000 },
+ { 24611, 0x0000 }, { 24611, 0x0000 }, { 24611, 0x0000 }, { 24611, 0x0000 },
+ /* 0x28200 */
+ { 24611, 0x0080 }, { 24612, 0x0500 }, { 24614, 0x0000 }, { 24614, 0x0000 },
+ { 24614, 0x0000 }, { 24614, 0x0040 }, { 24615, 0x0000 }, { 24615, 0x1000 },
+ { 24616, 0x0000 }, { 24616, 0x0800 }, { 24617, 0x0000 }, { 24617, 0x0000 },
+ { 24617, 0x2000 }, { 24618, 0x0000 }, { 24618, 0x0004 }, { 24619, 0x0000 },
+ /* 0x28300 */
+ { 24619, 0x0040 }, { 24620, 0x0100 }, { 24621, 0x8000 }, { 24622, 0x0400 },
+ { 24623, 0x0000 }, { 24623, 0x0000 }, { 24623, 0x2020 }, { 24625, 0x2000 },
+ { 24626, 0x0400 }, { 24627, 0x0000 }, { 24627, 0x0000 }, { 24627, 0x0000 },
+ { 24627, 0x0000 }, { 24627, 0x0000 }, { 24627, 0x0000 }, { 24627, 0x0000 },
+ /* 0x28400 */
+ { 24627, 0x0000 }, { 24627, 0x0004 }, { 24628, 0x0000 }, { 24628, 0x0000 },
+ { 24628, 0x0000 }, { 24628, 0x0000 }, { 24628, 0x1100 }, { 24630, 0x0008 },
+ { 24631, 0x0004 }, { 24632, 0x0000 }, { 24632, 0x0000 }, { 24632, 0x0000 },
+ { 24632, 0x0000 }, { 24632, 0x0000 }, { 24632, 0x0000 }, { 24632, 0x0000 },
+ /* 0x28500 */
+ { 24632, 0x0002 }, { 24633, 0x0000 }, { 24633, 0x0000 }, { 24633, 0x3000 },
+ { 24635, 0x0000 }, { 24635, 0x0000 }, { 24635, 0x1000 }, { 24636, 0x0000 },
+ { 24636, 0x0000 }, { 24636, 0x0000 }, { 24636, 0x0000 }, { 24636, 0x0000 },
+ { 24636, 0x0000 }, { 24636, 0x0000 }, { 24636, 0x0100 }, { 24637, 0x0010 },
+ /* 0x28600 */
+ { 24638, 0x0801 }, { 24640, 0x0000 }, { 24640, 0x0020 }, { 24641, 0x0800 },
+ { 24642, 0x0000 }, { 24642, 0x0000 }, { 24642, 0x0000 }, { 24642, 0x0000 },
+ { 24642, 0x0000 }, { 24642, 0x0000 }, { 24642, 0x0C00 }, { 24644, 0x1000 },
+ { 24645, 0x0000 }, { 24645, 0x0100 }, { 24646, 0x0040 }, { 24647, 0x0000 },
+ /* 0x28700 */
+ { 24647, 0x8000 }, { 24648, 0x0008 }, { 24649, 0x0000 }, { 24649, 0x0000 },
+ { 24649, 0x0000 }, { 24649, 0x0000 }, { 24649, 0x0000 }, { 24649, 0x0000 },
+ { 24649, 0x0000 }, { 24649, 0x0000 }, { 24649, 0x0000 }, { 24649, 0x0000 },
+ { 24649, 0x0000 }, { 24649, 0x0000 }, { 24649, 0x0000 }, { 24649, 0x0000 },
+ /* 0x28800 */
+ { 24649, 0x0010 }, { 24650, 0x0000 }, { 24650, 0x0800 }, { 24651, 0x0000 },
+ { 24651, 0x0000 }, { 24651, 0x0000 }, { 24651, 0x0000 }, { 24651, 0x0000 },
+ { 24651, 0x0000 }, { 24651, 0x0000 }, { 24651, 0x0000 }, { 24651, 0x0000 },
+ { 24651, 0x0000 }, { 24651, 0x0000 }, { 24651, 0x0000 }, { 24651, 0x0000 },
+ /* 0x28900 */
+ { 24651, 0x0000 }, { 24651, 0x0000 }, { 24651, 0x0000 }, { 24651, 0x0008 },
+ { 24652, 0x0300 }, { 24654, 0x0040 }, { 24655, 0x1110 }, { 24658, 0x4000 },
+ { 24659, 0x0200 }, { 24660, 0x0000 }, { 24660, 0x0D00 }, { 24663, 0x1100 },
+ { 24665, 0x0001 }, { 24666, 0x5000 }, { 24668, 0x019A }, { 24673, 0x1E00 },
+ /* 0x28A00 */
+ { 24677, 0x8000 }, { 24678, 0x0040 }, { 24679, 0x0220 }, { 24681, 0x0044 },
+ { 24683, 0x0FF0 }, { 24691, 0x0600 }, { 24693, 0x0000 }, { 24693, 0x0000 },
+ { 24693, 0x000E }, { 24696, 0x1C00 }, { 24699, 0x0000 }, { 24699, 0x0000 },
+ { 24699, 0x5841 }, { 24704, 0xC000 }, { 24706, 0x042F }, { 24712, 0x1000 },
+ /* 0x28B00 */
+ { 24713, 0x1000 }, { 24714, 0x0008 }, { 24715, 0xB806 }, { 24721, 0x0000 },
+ { 24721, 0x5040 }, { 24724, 0x0001 }, { 24725, 0x1078 }, { 24730, 0x0000 },
+ { 24730, 0x8000 }, { 24731, 0x3200 }, { 24734, 0x0000 }, { 24734, 0x0000 },
+ { 24734, 0x0024 }, { 24736, 0x0690 }, { 24740, 0x1F80 }, { 24746, 0x8020 },
+ /* 0x28C00 */
+ { 24748, 0x0208 }, { 24750, 0x3000 }, { 24752, 0x0848 }, { 24755, 0x0A01 },
+ { 24758, 0x0000 }, { 24758, 0x0000 }, { 24758, 0x0000 }, { 24758, 0x0000 },
+ { 24758, 0x0000 }, { 24758, 0x0000 }, { 24758, 0x0000 }, { 24758, 0x0000 },
+ { 24758, 0x2400 }, { 24760, 0x0004 }, { 24761, 0x0000 }, { 24761, 0x0000 },
+ /* 0x28D00 */
+ { 24761, 0x0000 }, { 24761, 0x0000 }, { 24761, 0x0000 }, { 24761, 0x0010 },
+ { 24762, 0x0000 }, { 24762, 0x0000 }, { 24762, 0x0000 }, { 24762, 0x0000 },
+ { 24762, 0x0000 }, { 24762, 0x0200 }, { 24763, 0x0000 }, { 24763, 0x0200 },
+ { 24764, 0x0000 }, { 24764, 0x0000 }, { 24764, 0x0000 }, { 24764, 0x0000 },
+ /* 0x28E00 */
+ { 24764, 0x8000 }, { 24765, 0x0000 }, { 24765, 0x0000 }, { 24765, 0x0240 },
+ { 24767, 0x0000 }, { 24767, 0x0000 }, { 24767, 0x0060 }, { 24769, 0x0000 },
+ { 24769, 0x0000 }, { 24769, 0x0080 }, { 24770, 0x1000 }, { 24771, 0x000C },
+ { 24773, 0x0000 }, { 24773, 0x0200 }, { 24774, 0x0080 }, { 24775, 0x0000 },
+ /* 0x28F00 */
+ { 24775, 0x0000 }, { 24775, 0x0000 }, { 24775, 0x0000 }, { 24775, 0x0000 },
+ { 24775, 0x0000 }, { 24775, 0x0000 }, { 24775, 0x0000 }, { 24775, 0x0000 },
+ { 24775, 0x0000 }, { 24775, 0x0000 }, { 24775, 0x0000 }, { 24775, 0x0000 },
+ { 24775, 0x0020 }, { 24776, 0x0000 }, { 24776, 0x0000 }, { 24776, 0x0000 },
+ /* 0x29000 */
+ { 24776, 0x0000 }, { 24776, 0x0000 }, { 24776, 0x0000 }, { 24776, 0x0000 },
+ { 24776, 0x0000 }, { 24776, 0x0000 }, { 24776, 0x0000 }, { 24776, 0x0000 },
+ { 24776, 0x0900 }, { 24778, 0x0008 }, { 24779, 0x8000 }, { 24780, 0x0003 },
+ { 24782, 0x0001 }, { 24783, 0x0000 }, { 24783, 0x3030 }, { 24787, 0x0000 },
+ /* 0x29100 */
+ { 24787, 0x2000 }, { 24788, 0x0001 }, { 24789, 0x0000 }, { 24789, 0x1000 },
+ { 24790, 0x2000 }, { 24791, 0x4800 }, { 24793, 0x0000 }, { 24793, 0x0001 },
+ { 24794, 0x0000 }, { 24794, 0x1000 }, { 24795, 0x0100 }, { 24796, 0x0000 },
+ { 24796, 0x0000 }, { 24796, 0x0020 }, { 24797, 0x0800 },
+};
+static const Summary16 big5hkscs_uni2index_page294[32] = {
+ /* 0x29400 */
+ { 24798, 0x0000 }, { 24798, 0x2000 }, { 24799, 0x0001 }, { 24800, 0x8008 },
+ { 24802, 0x0100 }, { 24803, 0x0000 }, { 24803, 0x0000 }, { 24803, 0x0000 },
+ { 24803, 0x0000 }, { 24803, 0x0000 }, { 24803, 0x0000 }, { 24803, 0x0000 },
+ { 24803, 0x0000 }, { 24803, 0x0601 }, { 24806, 0x00A0 }, { 24808, 0x0000 },
+ /* 0x29500 */
+ { 24808, 0x0000 }, { 24808, 0x0000 }, { 24808, 0x0000 }, { 24808, 0x0000 },
+ { 24808, 0x0000 }, { 24808, 0x0000 }, { 24808, 0x0000 }, { 24808, 0x0000 },
+ { 24808, 0x0000 }, { 24808, 0x4000 }, { 24809, 0x0000 }, { 24809, 0x0101 },
+ { 24811, 0x0000 }, { 24811, 0x0080 }, { 24812, 0x0200 }, { 24813, 0x0010 },
+};
+static const Summary16 big5hkscs_uni2index_page297[251] = {
+ /* 0x29700 */
+ { 24814, 0x0000 }, { 24814, 0x0000 }, { 24814, 0x0001 }, { 24815, 0x0004 },
+ { 24816, 0x0000 }, { 24816, 0x0000 }, { 24816, 0x0000 }, { 24816, 0x0000 },
+ { 24816, 0x0000 }, { 24816, 0x0000 }, { 24816, 0x0000 }, { 24816, 0x0000 },
+ { 24816, 0x0000 }, { 24816, 0x0010 }, { 24817, 0x0000 }, { 24817, 0x0000 },
+ /* 0x29800 */
+ { 24817, 0x0000 }, { 24817, 0x0001 }, { 24818, 0x0000 }, { 24818, 0x0000 },
+ { 24818, 0x0000 }, { 24818, 0x0080 }, { 24819, 0x0000 }, { 24819, 0x0000 },
+ { 24819, 0x0000 }, { 24819, 0x0000 }, { 24819, 0x0010 }, { 24820, 0x0000 },
+ { 24820, 0x0000 }, { 24820, 0x0002 }, { 24821, 0x0400 }, { 24822, 0x0002 },
+ /* 0x29900 */
+ { 24823, 0x0028 }, { 24825, 0x0000 }, { 24825, 0x8000 }, { 24826, 0x0000 },
+ { 24826, 0x0380 }, { 24829, 0x2000 }, { 24830, 0x0400 }, { 24831, 0x0000 },
+ { 24831, 0x0000 }, { 24831, 0x2000 }, { 24832, 0x0000 }, { 24832, 0x0000 },
+ { 24832, 0x0208 }, { 24834, 0x0000 }, { 24834, 0x0000 }, { 24834, 0x0000 },
+ /* 0x29A00 */
+ { 24834, 0x0000 }, { 24834, 0x0000 }, { 24834, 0x0100 }, { 24835, 0x0000 },
+ { 24835, 0x2000 }, { 24836, 0x0000 }, { 24836, 0x0000 }, { 24836, 0x0000 },
+ { 24836, 0x0000 }, { 24836, 0x0000 }, { 24836, 0x0000 }, { 24836, 0x0000 },
+ { 24836, 0x0000 }, { 24836, 0x0000 }, { 24836, 0x0000 }, { 24836, 0x0000 },
+ /* 0x29B00 */
+ { 24836, 0x4020 }, { 24838, 0x0000 }, { 24838, 0x0000 }, { 24838, 0x0000 },
+ { 24838, 0x0000 }, { 24838, 0x0000 }, { 24838, 0x0000 }, { 24838, 0x0000 },
+ { 24838, 0x0000 }, { 24838, 0x0000 }, { 24838, 0x0000 }, { 24838, 0x0000 },
+ { 24838, 0x0000 }, { 24838, 0x0020 }, { 24839, 0x0000 }, { 24839, 0x0000 },
+ /* 0x29C00 */
+ { 24839, 0x0000 }, { 24839, 0x0000 }, { 24839, 0x0000 }, { 24839, 0x0000 },
+ { 24839, 0x0000 }, { 24839, 0x0000 }, { 24839, 0x0000 }, { 24839, 0x0008 },
+ { 24840, 0x0000 }, { 24840, 0x0000 }, { 24840, 0x2000 }, { 24841, 0x0000 },
+ { 24841, 0x0000 }, { 24841, 0x0000 }, { 24841, 0x0000 }, { 24841, 0x0000 },
+ /* 0x29D00 */
+ { 24841, 0x0000 }, { 24841, 0x0000 }, { 24841, 0x0000 }, { 24841, 0x4000 },
+ { 24842, 0x0000 }, { 24842, 0x0400 }, { 24843, 0x0000 }, { 24843, 0x1000 },
+ { 24844, 0x0000 }, { 24844, 0x0900 }, { 24846, 0x0000 }, { 24846, 0x0000 },
+ { 24846, 0x0000 }, { 24846, 0x0000 }, { 24846, 0x0000 }, { 24846, 0x0040 },
+ /* 0x29E00 */
+ { 24847, 0x0040 }, { 24848, 0x0000 }, { 24848, 0x2000 }, { 24849, 0x0000 },
+ { 24849, 0x0000 }, { 24849, 0x0000 }, { 24849, 0x0100 }, { 24850, 0x0000 },
+ { 24850, 0x0000 }, { 24850, 0x0000 }, { 24850, 0x1000 }, { 24851, 0x0000 },
+ { 24851, 0x0008 }, { 24852, 0x0000 }, { 24852, 0x0000 }, { 24852, 0x0100 },
+ /* 0x29F00 */
+ { 24853, 0x0000 }, { 24853, 0x0000 }, { 24853, 0x0008 }, { 24854, 0x0001 },
+ { 24855, 0x0000 }, { 24855, 0x0000 }, { 24855, 0x0000 }, { 24855, 0x0000 },
+ { 24855, 0x0000 }, { 24855, 0x0000 }, { 24855, 0x0000 }, { 24855, 0x0080 },
+ { 24856, 0x0000 }, { 24856, 0x4000 }, { 24857, 0x0000 }, { 24857, 0x0000 },
+ /* 0x2A000 */
+ { 24857, 0x0000 }, { 24857, 0x0010 }, { 24858, 0x0000 }, { 24858, 0x0000 },
+ { 24858, 0x0000 }, { 24858, 0x0000 }, { 24858, 0x0000 }, { 24858, 0x0000 },
+ { 24858, 0x0080 }, { 24859, 0x0000 }, { 24859, 0x0000 }, { 24859, 0x0200 },
+ { 24860, 0x0000 }, { 24860, 0x0000 }, { 24860, 0x2002 }, { 24862, 0x4108 },
+ /* 0x2A100 */
+ { 24865, 0x0080 }, { 24866, 0x0000 }, { 24866, 0x0008 }, { 24867, 0x0018 },
+ { 24869, 0x0000 }, { 24869, 0x0001 }, { 24870, 0x0000 }, { 24870, 0x0000 },
+ { 24870, 0x0000 }, { 24870, 0x000C }, { 24872, 0x0800 }, { 24873, 0x0010 },
+ { 24874, 0x0000 }, { 24874, 0x8000 }, { 24875, 0x0000 }, { 24875, 0x0020 },
+ /* 0x2A200 */
+ { 24876, 0x0000 }, { 24876, 0x0000 }, { 24876, 0x0001 }, { 24877, 0x0008 },
+ { 24878, 0x0000 }, { 24878, 0x0000 }, { 24878, 0x0000 }, { 24878, 0x0000 },
+ { 24878, 0x0000 }, { 24878, 0x8008 }, { 24880, 0x0000 }, { 24880, 0x2454 },
+ { 24885, 0x0000 }, { 24885, 0x8000 }, { 24886, 0x0000 }, { 24886, 0x8000 },
+ /* 0x2A300 */
+ { 24887, 0x0000 }, { 24887, 0x0000 }, { 24887, 0x0000 }, { 24887, 0x0000 },
+ { 24887, 0x0000 }, { 24887, 0x0000 }, { 24887, 0x0000 }, { 24887, 0x0000 },
+ { 24887, 0x0000 }, { 24887, 0x0000 }, { 24887, 0x0200 }, { 24888, 0x0000 },
+ { 24888, 0x0000 }, { 24888, 0x0000 }, { 24888, 0x0000 }, { 24888, 0x0000 },
+ /* 0x2A400 */
+ { 24888, 0x0000 }, { 24888, 0x0000 }, { 24888, 0x0000 }, { 24888, 0x0010 },
+ { 24889, 0x0000 }, { 24889, 0x0800 }, { 24890, 0x0000 }, { 24890, 0x0000 },
+ { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 },
+ { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 },
+ /* 0x2A500 */
+ { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 },
+ { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 },
+ { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 },
+ { 24890, 0x0840 }, { 24892, 0x0000 }, { 24892, 0x0000 }, { 24892, 0x0000 },
+ /* 0x2A600 */
+ { 24892, 0x0002 }, { 24893, 0x0000 }, { 24893, 0x0000 }, { 24893, 0x0004 },
+ { 24894, 0x0400 }, { 24895, 0x0800 }, { 24896, 0x0000 }, { 24896, 0x0000 },
+ { 24896, 0x0000 }, { 24896, 0x0000 }, { 24896, 0x0200 },
+};
+static const Summary16 big5hkscs_uni2index_page2f8[30] = {
+ /* 0x2F800 */
+ { 24897, 0x0000 }, { 24897, 0x0000 }, { 24897, 0x0020 }, { 24898, 0x0800 },
+ { 24899, 0x0001 }, { 24900, 0x0000 }, { 24900, 0x0000 }, { 24900, 0x0100 },
+ { 24901, 0x0000 }, { 24901, 0x0010 }, { 24902, 0x0040 }, { 24903, 0x0000 },
+ { 24903, 0x2000 }, { 24904, 0x0000 }, { 24904, 0x0000 }, { 24904, 0x0000 },
+ /* 0x2F900 */
+ { 24904, 0x0000 }, { 24904, 0x0000 }, { 24904, 0x0000 }, { 24904, 0x0000 },
+ { 24904, 0x0000 }, { 24904, 0x0000 }, { 24904, 0x0000 }, { 24904, 0x0000 },
+ { 24904, 0x0000 }, { 24904, 0x0010 }, { 24905, 0x0000 }, { 24905, 0x1004 },
+ { 24907, 0x0000 }, { 24907, 0x0010 },
+};
+
+int qt_UnicodeToBig5hkscs (uint wc, uchar *r)
+{
+ const Summary16 *summary = NULL;
+ if (wc < 0x80) {
+ r[0] = (uchar) wc;
+ return 1;
+ }
+ if (wc < 0x0460)
+ summary = &big5hkscs_uni2index_page00[(wc>>4)];
+ else if (wc >= 0x1e00 && wc < 0x1ed0)
+ summary = &big5hkscs_uni2index_page1e[(wc>>4)-0x1e0];
+ else if (wc >= 0x2000 && wc < 0x2740)
+ summary = &big5hkscs_uni2index_page20[(wc>>4)-0x200];
+ else if (wc >= 0x2e00 && wc < 0x9fb0)
+ summary = &big5hkscs_uni2index_page2e[(wc>>4)-0x2e0];
+ else if (wc >= 0xe000 && wc < 0xfa30)
+ summary = &big5hkscs_uni2index_pagee0[(wc>>4)-0xe00];
+ else if (wc >= 0xfe00 && wc < 0xfff0)
+ summary = &big5hkscs_uni2index_pagefe[(wc>>4)-0xfe0];
+ else if (wc >= 0x20000 && wc < 0x291f0)
+ summary = &big5hkscs_uni2index_page200[(wc>>4)-0x2000];
+ else if (wc >= 0x29400 && wc < 0x29600)
+ summary = &big5hkscs_uni2index_page294[(wc>>4)-0x2940];
+ else if (wc >= 0x29700 && wc < 0x2a6b0)
+ summary = &big5hkscs_uni2index_page297[(wc>>4)-0x2970];
+ else if (wc >= 0x2f800 && wc < 0x2f9e0)
+ summary = &big5hkscs_uni2index_page2f8[(wc>>4)-0x2f80];
+ if (summary) {
+ ushort used = summary->used;
+ uint i = wc & 0x0f;
+ if (used & ((ushort) 1 << i)) {
+ const uchar *c;
+ /* Keep in `used' only the bits 0..i-1. */
+ used &= ((ushort) 1 << i) - 1;
+ /* Add `summary->index' and the number of bits set in `used'. */
+ used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
+ used = (used & 0x3333) + ((used & 0xcccc) >> 2);
+ used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
+ used = (used & 0x00ff) + (used >> 8);
+ c = big5hkscs_to_charset[summary->index + used];
+ if (c [1] != 0) {
+ r[0] = c[0];
+ r[1] = c[1];
+ return 2;
+ } else { // (c [1] == 0)
+ r[0] = c[0];
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+
+/* ====================================================================== */
+#endif // QT_NO_TEXTCODEC
+
+QT_END_NAMESPACE
diff --git a/src/corelib/codecs/qbig5codec_p.h b/src/corelib/codecs/qbig5codec_p.h
new file mode 100644
index 0000000000..f90c1d8e83
--- /dev/null
+++ b/src/corelib/codecs/qbig5codec_p.h
@@ -0,0 +1,135 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+// Most of the code here was originally written by Ming-Che Chuang and
+// is included in Qt with the author's permission, and the grateful
+// thanks of the Qt team.
+
+#ifndef QBIG5CODEC_P_H
+#define QBIG5CODEC_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtCore/qtextcodec.h>
+#include <QtCore/qlist.h>
+
+QT_BEGIN_NAMESPACE
+
+#ifndef QT_NO_TEXTCODEC
+
+class QBig5Codec : public QTextCodec {
+public:
+ static QByteArray _name();
+ static QList<QByteArray> _aliases();
+ static int _mibEnum();
+
+ QByteArray name() const { return _name(); }
+ QList<QByteArray> aliases() const { return _aliases(); }
+ int mibEnum() const { return _mibEnum(); }
+
+ QString convertToUnicode(const char *, int, ConverterState *) const;
+ QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
+};
+
+class QBig5hkscsCodec : public QTextCodec {
+public:
+ static QByteArray _name();
+ static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
+ static int _mibEnum();
+
+ QByteArray name() const { return _name(); }
+ QList<QByteArray> aliases() const { return _aliases(); }
+ int mibEnum() const { return _mibEnum(); }
+
+ QString convertToUnicode(const char *, int, ConverterState *) const;
+ QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
+};
+
+#ifdef Q_OS_UNIX
+class Q_CORE_EXPORT QFontBig5Codec : public QTextCodec
+{
+public:
+ QFontBig5Codec();
+
+ static QByteArray _name();
+ static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
+ static int _mibEnum();
+
+ QByteArray name() const { return _name(); }
+ QList<QByteArray> aliases() const { return _aliases(); }
+ int mibEnum() const { return _mibEnum(); }
+
+ QString convertToUnicode(const char *, int, ConverterState *) const;
+ QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
+};
+
+class Q_CORE_EXPORT QFontBig5hkscsCodec : public QTextCodec
+{
+public:
+ QFontBig5hkscsCodec();
+
+ static QByteArray _name();
+ static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
+ static int _mibEnum();
+
+ QByteArray name() const { return _name(); }
+ QList<QByteArray> aliases() const { return _aliases(); }
+ int mibEnum() const { return _mibEnum(); }
+
+ QString convertToUnicode(const char *, int, ConverterState *) const;
+ QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
+};
+#endif // Q_OS_UNIX
+
+#endif // QT_NO_TEXTCODEC
+
+QT_END_NAMESPACE
+
+#endif // QBIG5CODEC_P_H
diff --git a/src/corelib/codecs/qeucjpcodec.cpp b/src/corelib/codecs/qeucjpcodec.cpp
new file mode 100644
index 0000000000..773c473a11
--- /dev/null
+++ b/src/corelib/codecs/qeucjpcodec.cpp
@@ -0,0 +1,261 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+// Most of the code here was originally written by Serika Kurusugawa
+// a.k.a. Junji Takagi, and is included in Qt with the author's permission,
+// and the grateful thanks of the Qt team.
+
+/*! \class QEucJpCodec
+ \reentrant
+ \internal
+*/
+
+/*
+ * Copyright (C) 1999 Serika Kurusugawa, All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#include "qeucjpcodec_p.h"
+
+QT_BEGIN_NAMESPACE
+
+#ifndef QT_NO_TEXTCODEC
+
+static const uchar Ss2 = 0x8e; // Single Shift 2
+static const uchar Ss3 = 0x8f; // Single Shift 3
+
+#define IsKana(c) (((c) >= 0xa1) && ((c) <= 0xdf))
+#define IsEucChar(c) (((c) >= 0xa1) && ((c) <= 0xfe))
+
+#define QValidChar(u) ((u) ? QChar((ushort)(u)) : QChar(QChar::ReplacementCharacter))
+
+/*!
+ Constructs a QEucJpCodec.
+*/
+QEucJpCodec::QEucJpCodec() : conv(QJpUnicodeConv::newConverter(QJpUnicodeConv::Default))
+{
+}
+
+/*!
+ Destroys the codec.
+*/
+QEucJpCodec::~QEucJpCodec()
+{
+ delete (QJpUnicodeConv*)conv;
+ conv = 0;
+}
+
+QByteArray QEucJpCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
+{
+ char replacement = '?';
+ if (state) {
+ if (state->flags & ConvertInvalidToNull)
+ replacement = 0;
+ }
+ int invalid = 0;
+
+ int rlen = 3*len + 1;
+ QByteArray rstr;
+ rstr.resize(rlen);
+ uchar* cursor = (uchar*)rstr.data();
+ for (int i = 0; i < len; i++) {
+ QChar ch = uc[i];
+ uint j;
+ if (ch.unicode() < 0x80) {
+ // ASCII
+ *cursor++ = ch.cell();
+ } else if ((j = conv->unicodeToJisx0201(ch.row(), ch.cell())) != 0) {
+ if (j < 0x80) {
+ // JIS X 0201 Latin ?
+ *cursor++ = j;
+ } else {
+ // JIS X 0201 Kana
+ *cursor++ = Ss2;
+ *cursor++ = j;
+ }
+ } else if ((j = conv->unicodeToJisx0208(ch.row(), ch.cell())) != 0) {
+ // JIS X 0208
+ *cursor++ = (j >> 8) | 0x80;
+ *cursor++ = (j & 0xff) | 0x80;
+ } else if ((j = conv->unicodeToJisx0212(ch.row(), ch.cell())) != 0) {
+ // JIS X 0212
+ *cursor++ = Ss3;
+ *cursor++ = (j >> 8) | 0x80;
+ *cursor++ = (j & 0xff) | 0x80;
+ } else {
+ // Error
+ *cursor++ = replacement;
+ ++invalid;
+ }
+ }
+ rstr.resize(cursor - (uchar*)rstr.constData());
+
+ if (state) {
+ state->invalidChars += invalid;
+ }
+ return rstr;
+}
+
+
+QString QEucJpCodec::convertToUnicode(const char* chars, int len, ConverterState *state) const
+{
+ uchar buf[2] = {0, 0};
+ int nbuf = 0;
+ QChar replacement = QChar::ReplacementCharacter;
+ if (state) {
+ if (state->flags & ConvertInvalidToNull)
+ replacement = QChar::Null;
+ nbuf = state->remainingChars;
+ buf[0] = state->state_data[0];
+ buf[1] = state->state_data[1];
+ }
+ int invalid = 0;
+
+ QString result;
+ for (int i=0; i<len; i++) {
+ uchar ch = chars[i];
+ switch (nbuf) {
+ case 0:
+ if (ch < 0x80) {
+ // ASCII
+ result += QLatin1Char(ch);
+ } else if (ch == Ss2 || ch == Ss3) {
+ // JIS X 0201 Kana or JIS X 0212
+ buf[0] = ch;
+ nbuf = 1;
+ } else if (IsEucChar(ch)) {
+ // JIS X 0208
+ buf[0] = ch;
+ nbuf = 1;
+ } else {
+ // Invalid
+ result += replacement;
+ ++invalid;
+ }
+ break;
+ case 1:
+ if (buf[0] == Ss2) {
+ // JIS X 0201 Kana
+ if (IsKana(ch)) {
+ uint u = conv->jisx0201ToUnicode(ch);
+ result += QValidChar(u);
+ } else {
+ result += replacement;
+ ++invalid;
+ }
+ nbuf = 0;
+ } else if (buf[0] == Ss3) {
+ // JIS X 0212-1990
+ if (IsEucChar(ch)) {
+ buf[1] = ch;
+ nbuf = 2;
+ } else {
+ // Error
+ result += replacement;
+ ++invalid;
+ nbuf = 0;
+ }
+ } else {
+ // JIS X 0208-1990
+ if (IsEucChar(ch)) {
+ uint u = conv->jisx0208ToUnicode(buf[0] & 0x7f, ch & 0x7f);
+ result += QValidChar(u);
+ } else {
+ // Error
+ result += replacement;
+ ++invalid;
+ }
+ nbuf = 0;
+ }
+ break;
+ case 2:
+ // JIS X 0212
+ if (IsEucChar(ch)) {
+ uint u = conv->jisx0212ToUnicode(buf[1] & 0x7f, ch & 0x7f);
+ result += QValidChar(u);
+ } else {
+ result += replacement;
+ ++invalid;
+ }
+ nbuf = 0;
+ }
+ }
+ if (state) {
+ state->remainingChars = nbuf;
+ state->state_data[0] = buf[0];
+ state->state_data[1] = buf[1];
+ state->invalidChars += invalid;
+ }
+ return result;
+}
+
+int QEucJpCodec::_mibEnum()
+{
+ return 18;
+}
+
+QByteArray QEucJpCodec::_name()
+{
+ return "EUC-JP";
+}
+#endif // QT_NO_TEXTCODEC
+
+QT_END_NAMESPACE
diff --git a/src/corelib/codecs/qeucjpcodec_p.h b/src/corelib/codecs/qeucjpcodec_p.h
new file mode 100644
index 0000000000..97d8523a34
--- /dev/null
+++ b/src/corelib/codecs/qeucjpcodec_p.h
@@ -0,0 +1,117 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+// Most of the code here was originally written by Serika Kurusugawa
+// a.k.a. Junji Takagi, and is included in Qt with the author's permission,
+// and the grateful thanks of the Qt team.
+
+/*
+ * Copyright (C) 1999 Serika Kurusugawa, All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef QEUCJPCODEC_P_H
+#define QEUCJPCODEC_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "qjpunicode_p.h"
+#include <QtCore/qtextcodec.h>
+#include <QtCore/qlist.h>
+
+QT_BEGIN_NAMESPACE
+
+#ifndef QT_NO_TEXTCODEC
+
+class QEucJpCodec : public QTextCodec {
+public:
+ static QByteArray _name();
+ static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
+ static int _mibEnum();
+
+ QByteArray name() const { return _name(); }
+ QList<QByteArray> aliases() const { return _aliases(); }
+ int mibEnum() const { return _mibEnum(); }
+
+ QString convertToUnicode(const char *, int, ConverterState *) const;
+ QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
+
+ QEucJpCodec();
+ ~QEucJpCodec();
+
+protected:
+ const QJpUnicodeConv *conv;
+};
+
+#endif // QT_NO_TEXTCODEC
+
+QT_END_NAMESPACE
+
+#endif // QEUCJPCODEC_P_H
diff --git a/src/corelib/codecs/qeuckrcodec.cpp b/src/corelib/codecs/qeuckrcodec.cpp
new file mode 100644
index 0000000000..93a31d8d5b
--- /dev/null
+++ b/src/corelib/codecs/qeuckrcodec.cpp
@@ -0,0 +1,3571 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+// Most of the cp949 code was originally written by Joon-Kyu Park, and is included
+// in Qt with the author's permission and the grateful thanks of the Qt team.
+
+/*! \class QEucKrCodec
+ \reentrant
+ \internal
+*/
+
+/*!
+ \class QCP949Codec
+ \internal
+ \brief The QCP949Codec class handles encoding and decoding of text in CP949 encoding.
+
+ CP949 stands for code page 949, default code page for Korean text on Windows.
+*/
+
+/* these must be made \internal
+ virtual int mibEnum() const;
+ const char* name() const;
+
+ QTextDecoder* makeDecoder() const;
+
+ QByteArray fromUnicode(const QString& uc, int& lenInOut) const;
+ QString toUnicode(const char* chars, int len) const;
+*/
+
+#include "qeuckrcodec_p.h"
+#include "cp949codetbl_p.h"
+
+QT_BEGIN_NAMESPACE
+
+#ifndef QT_NO_TEXTCODEC
+unsigned int qt_Ksc5601ToUnicode(unsigned int code);
+
+unsigned int qt_UnicodeToKsc5601(unsigned int unicode);
+
+#define IsEucChar(c) (((c) >= 0xa1) && ((c) <= 0xfe))
+#define IsCP949Char(c) (((c) >= 0x81) && ((c) <= 0xa0))
+#define QValidChar(u) ((u) ? QChar((ushort)(u)) : QChar(QChar::ReplacementCharacter))
+
+/*!
+ \reimp
+*/
+
+QByteArray QEucKrCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
+{
+ char replacement = '?';
+ if (state) {
+ if (state->flags & ConvertInvalidToNull)
+ replacement = 0;
+ }
+ int invalid = 0;
+
+ int rlen = 2*len + 1;
+ QByteArray rstr;
+ rstr.resize(rlen);
+ uchar* cursor = (uchar*)rstr.data();
+ for (int i = 0; i < len; i++) {
+ unsigned short ch = uc[i].unicode();
+ uint j;
+ if (ch < 0x80) {
+ // ASCII
+ *cursor++ = ch;
+ } else if ((j = qt_UnicodeToKsc5601(ch))) {
+ // KSC 5601
+ *cursor++ = (j >> 8) | 0x80;
+ *cursor++ = (j & 0xff) | 0x80;
+ } else {
+ // Error
+ *cursor++ = replacement;
+ ++invalid;
+ }
+ }
+ rstr.resize(cursor - (uchar*)rstr.constData());
+
+ if (state) {
+ state->invalidChars += invalid;
+ }
+ return rstr;
+}
+
+QString QEucKrCodec::convertToUnicode(const char* chars, int len, ConverterState *state) const
+{
+ uchar buf[2] = {0, 0};
+ int nbuf = 0;
+ QChar replacement = QChar::ReplacementCharacter;
+ if (state) {
+ if (state->flags & ConvertInvalidToNull)
+ replacement = QChar::Null;
+ nbuf = state->remainingChars;
+ buf[0] = state->state_data[0];
+ buf[1] = state->state_data[1];
+ }
+ int invalid = 0;
+
+ QString result;
+ for (int i=0; i<len; i++) {
+ uchar ch = chars[i];
+ if (ch == 0)
+ break;
+ switch (nbuf) {
+ case 0:
+ if (ch < 0x80) {
+ // ASCII
+ result += QLatin1Char(ch);
+ } else if (IsEucChar(ch)) {
+ // KSC 5601
+ buf[0] = ch;
+ nbuf = 1;
+ } else {
+ // Invalid
+ result += replacement;
+ ++invalid;
+ }
+ break;
+ case 1:
+ // KSC 5601
+ if (IsEucChar(ch)) {
+ uint u = qt_Ksc5601ToUnicode((buf[0] << 8) | ch);
+ result += QValidChar(u);
+ } else {
+ // Error
+ result += replacement;
+ ++invalid;
+ }
+ nbuf = 0;
+ break;
+ }
+ }
+
+ if (state) {
+ state->remainingChars = nbuf;
+ state->state_data[0] = buf[0];
+ state->state_data[1] = buf[1];
+ state->invalidChars += invalid;
+ }
+ return result;
+}
+
+int QEucKrCodec::_mibEnum()
+{
+ return 38;
+}
+
+QByteArray QEucKrCodec::_name()
+{
+ return "EUC-KR";
+}
+
+
+#ifdef Q_OS_UNIX
+QFontKsc5601Codec::QFontKsc5601Codec()
+{
+}
+
+
+QByteArray QFontKsc5601Codec::_name()
+{
+ return "ksc5601.1987-0";
+}
+
+
+int QFontKsc5601Codec::_mibEnum()
+{
+ return 36;
+}
+
+
+QString QFontKsc5601Codec::convertToUnicode(const char*, int, ConverterState *) const
+{
+ return QString();
+}
+
+QByteArray QFontKsc5601Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *) const
+{
+ QByteArray result;
+ result.resize(len * 2);
+ uchar *rdata = (uchar *) result.data();
+ const QChar *ucp = uc;
+
+ for (int i = 0; i < len; i++) {
+ QChar ch(*ucp++);
+ ch = qt_UnicodeToKsc5601(ch.unicode());
+
+ if (! ch.isNull()) {
+ *rdata++ = ch.row() & 0x7f ;
+ *rdata++ = ch.cell() & 0x7f;
+ } else {
+ //white square
+ *rdata++ = 0x21;
+ *rdata++ = 0x60;
+ }
+ }
+
+ return result;
+}
+#endif // Q_OS_UNIX
+
+// code converter wrapper
+
+static unsigned short ksc2unicode (unsigned short code);
+
+static unsigned short unicode2ksc (unsigned short code);
+
+unsigned int qt_Ksc5601ToUnicode(unsigned int code)
+{
+#if 0
+ printf("qt_Ksc5601ToUnicode : code = %x, unicode = %x\n",
+ code, ksc2unicode((unsigned short)code));
+#endif
+ return ksc2unicode((unsigned short)code);
+}
+
+unsigned int qt_UnicodeToKsc5601(unsigned int unicode)
+{
+#if 0
+ printf("qt_UnicodeToKsc5601 : unicode = %x, %x\n",
+ unicode, unicode2ksc((unsigned short)unicode));
+#endif
+ return unicode2ksc((unsigned short)unicode);
+}
+
+/* Table including ksc5601 hangul to unicode */
+static const unsigned short ksc5601_hangul_to_unicode[2350]=
+{
+ 0xac00, 0xac01, 0xac04, 0xac07, 0xac08, 0xac09, 0xac0a, 0xac10,
+ 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, 0xac16, 0xac17, 0xac19,
+ 0xac1a, 0xac1b, 0xac1c, 0xac1d, 0xac20, 0xac24, 0xac2c, 0xac2d,
+ 0xac2f, 0xac30, 0xac31, 0xac38, 0xac39, 0xac3c, 0xac40, 0xac4b,
+ 0xac4d, 0xac54, 0xac58, 0xac5c, 0xac70, 0xac71, 0xac74, 0xac77,
+ 0xac78, 0xac7a, 0xac80, 0xac81, 0xac83, 0xac84, 0xac85, 0xac86,
+ 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac90, 0xac94, 0xac9c, 0xac9d,
+ 0xac9f, 0xaca0, 0xaca1, 0xaca8, 0xaca9, 0xacaa, 0xacac, 0xacaf,
+ 0xacb0, 0xacb8, 0xacb9, 0xacbb, 0xacbc, 0xacbd, 0xacc1, 0xacc4,
+ 0xacc8, 0xaccc, 0xacd5, 0xacd7, 0xace0, 0xace1, 0xace4, 0xace7,
+ 0xace8, 0xacea, 0xacec, 0xacef, 0xacf0, 0xacf1, 0xacf3, 0xacf5,
+ 0xacf6, 0xacfc, 0xacfd, 0xad00, 0xad04, 0xad06, 0xad0c, 0xad0d,
+ 0xad0f, 0xad11, 0xad18, 0xad1c, 0xad20, 0xad29, 0xad2c, 0xad2d,
+ 0xad34, 0xad35, 0xad38, 0xad3c, 0xad44, 0xad45, 0xad47, 0xad49,
+ 0xad50, 0xad54, 0xad58, 0xad61, 0xad63, 0xad6c, 0xad6d, 0xad70,
+ 0xad73, 0xad74, 0xad75, 0xad76, 0xad7b, 0xad7c, 0xad7d, 0xad7f,
+ 0xad81, 0xad82, 0xad88, 0xad89, 0xad8c, 0xad90, 0xad9c, 0xad9d,
+ 0xada4, 0xadb7, 0xadc0, 0xadc1, 0xadc4, 0xadc8, 0xadd0, 0xadd1,
+ 0xadd3, 0xaddc, 0xade0, 0xade4, 0xadf8, 0xadf9, 0xadfc, 0xadff,
+ 0xae00, 0xae01, 0xae08, 0xae09, 0xae0b, 0xae0d, 0xae14, 0xae30,
+ 0xae31, 0xae34, 0xae37, 0xae38, 0xae3a, 0xae40, 0xae41, 0xae43,
+ 0xae45, 0xae46, 0xae4a, 0xae4c, 0xae4d, 0xae4e, 0xae50, 0xae54,
+ 0xae56, 0xae5c, 0xae5d, 0xae5f, 0xae60, 0xae61, 0xae65, 0xae68,
+ 0xae69, 0xae6c, 0xae70, 0xae78, 0xae79, 0xae7b, 0xae7c, 0xae7d,
+ 0xae84, 0xae85, 0xae8c, 0xaebc, 0xaebd, 0xaebe, 0xaec0, 0xaec4,
+ 0xaecc, 0xaecd, 0xaecf, 0xaed0, 0xaed1, 0xaed8, 0xaed9, 0xaedc,
+ 0xaee8, 0xaeeb, 0xaeed, 0xaef4, 0xaef8, 0xaefc, 0xaf07, 0xaf08,
+ 0xaf0d, 0xaf10, 0xaf2c, 0xaf2d, 0xaf30, 0xaf32, 0xaf34, 0xaf3c,
+ 0xaf3d, 0xaf3f, 0xaf41, 0xaf42, 0xaf43, 0xaf48, 0xaf49, 0xaf50,
+ 0xaf5c, 0xaf5d, 0xaf64, 0xaf65, 0xaf79, 0xaf80, 0xaf84, 0xaf88,
+ 0xaf90, 0xaf91, 0xaf95, 0xaf9c, 0xafb8, 0xafb9, 0xafbc, 0xafc0,
+ 0xafc7, 0xafc8, 0xafc9, 0xafcb, 0xafcd, 0xafce, 0xafd4, 0xafdc,
+ 0xafe8, 0xafe9, 0xaff0, 0xaff1, 0xaff4, 0xaff8, 0xb000, 0xb001,
+ 0xb004, 0xb00c, 0xb010, 0xb014, 0xb01c, 0xb01d, 0xb028, 0xb044,
+ 0xb045, 0xb048, 0xb04a, 0xb04c, 0xb04e, 0xb053, 0xb054, 0xb055,
+ 0xb057, 0xb059, 0xb05d, 0xb07c, 0xb07d, 0xb080, 0xb084, 0xb08c,
+ 0xb08d, 0xb08f, 0xb091, 0xb098, 0xb099, 0xb09a, 0xb09c, 0xb09f,
+ 0xb0a0, 0xb0a1, 0xb0a2, 0xb0a8, 0xb0a9, 0xb0ab, 0xb0ac, 0xb0ad,
+ 0xb0ae, 0xb0af, 0xb0b1, 0xb0b3, 0xb0b4, 0xb0b5, 0xb0b8, 0xb0bc,
+ 0xb0c4, 0xb0c5, 0xb0c7, 0xb0c8, 0xb0c9, 0xb0d0, 0xb0d1, 0xb0d4,
+ 0xb0d8, 0xb0e0, 0xb0e5, 0xb108, 0xb109, 0xb10b, 0xb10c, 0xb110,
+ 0xb112, 0xb113, 0xb118, 0xb119, 0xb11b, 0xb11c, 0xb11d, 0xb123,
+ 0xb124, 0xb125, 0xb128, 0xb12c, 0xb134, 0xb135, 0xb137, 0xb138,
+ 0xb139, 0xb140, 0xb141, 0xb144, 0xb148, 0xb150, 0xb151, 0xb154,
+ 0xb155, 0xb158, 0xb15c, 0xb160, 0xb178, 0xb179, 0xb17c, 0xb180,
+ 0xb182, 0xb188, 0xb189, 0xb18b, 0xb18d, 0xb192, 0xb193, 0xb194,
+ 0xb198, 0xb19c, 0xb1a8, 0xb1cc, 0xb1d0, 0xb1d4, 0xb1dc, 0xb1dd,
+ 0xb1df, 0xb1e8, 0xb1e9, 0xb1ec, 0xb1f0, 0xb1f9, 0xb1fb, 0xb1fd,
+ 0xb204, 0xb205, 0xb208, 0xb20b, 0xb20c, 0xb214, 0xb215, 0xb217,
+ 0xb219, 0xb220, 0xb234, 0xb23c, 0xb258, 0xb25c, 0xb260, 0xb268,
+ 0xb269, 0xb274, 0xb275, 0xb27c, 0xb284, 0xb285, 0xb289, 0xb290,
+ 0xb291, 0xb294, 0xb298, 0xb299, 0xb29a, 0xb2a0, 0xb2a1, 0xb2a3,
+ 0xb2a5, 0xb2a6, 0xb2aa, 0xb2ac, 0xb2b0, 0xb2b4, 0xb2c8, 0xb2c9,
+ 0xb2cc, 0xb2d0, 0xb2d2, 0xb2d8, 0xb2d9, 0xb2db, 0xb2dd, 0xb2e2,
+ 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e8, 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee,
+ 0xb2ef, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f7, 0xb2f8, 0xb2f9, 0xb2fa,
+ 0xb2fb, 0xb2ff, 0xb300, 0xb301, 0xb304, 0xb308, 0xb310, 0xb311,
+ 0xb313, 0xb314, 0xb315, 0xb31c, 0xb354, 0xb355, 0xb356, 0xb358,
+ 0xb35b, 0xb35c, 0xb35e, 0xb35f, 0xb364, 0xb365, 0xb367, 0xb369,
+ 0xb36b, 0xb36e, 0xb370, 0xb371, 0xb374, 0xb378, 0xb380, 0xb381,
+ 0xb383, 0xb384, 0xb385, 0xb38c, 0xb390, 0xb394, 0xb3a0, 0xb3a1,
+ 0xb3a8, 0xb3ac, 0xb3c4, 0xb3c5, 0xb3c8, 0xb3cb, 0xb3cc, 0xb3ce,
+ 0xb3d0, 0xb3d4, 0xb3d5, 0xb3d7, 0xb3d9, 0xb3db, 0xb3dd, 0xb3e0,
+ 0xb3e4, 0xb3e8, 0xb3fc, 0xb410, 0xb418, 0xb41c, 0xb420, 0xb428,
+ 0xb429, 0xb42b, 0xb434, 0xb450, 0xb451, 0xb454, 0xb458, 0xb460,
+ 0xb461, 0xb463, 0xb465, 0xb46c, 0xb480, 0xb488, 0xb49d, 0xb4a4,
+ 0xb4a8, 0xb4ac, 0xb4b5, 0xb4b7, 0xb4b9, 0xb4c0, 0xb4c4, 0xb4c8,
+ 0xb4d0, 0xb4d5, 0xb4dc, 0xb4dd, 0xb4e0, 0xb4e3, 0xb4e4, 0xb4e6,
+ 0xb4ec, 0xb4ed, 0xb4ef, 0xb4f1, 0xb4f8, 0xb514, 0xb515, 0xb518,
+ 0xb51b, 0xb51c, 0xb524, 0xb525, 0xb527, 0xb528, 0xb529, 0xb52a,
+ 0xb530, 0xb531, 0xb534, 0xb538, 0xb540, 0xb541, 0xb543, 0xb544,
+ 0xb545, 0xb54b, 0xb54c, 0xb54d, 0xb550, 0xb554, 0xb55c, 0xb55d,
+ 0xb55f, 0xb560, 0xb561, 0xb5a0, 0xb5a1, 0xb5a4, 0xb5a8, 0xb5aa,
+ 0xb5ab, 0xb5b0, 0xb5b1, 0xb5b3, 0xb5b4, 0xb5b5, 0xb5bb, 0xb5bc,
+ 0xb5bd, 0xb5c0, 0xb5c4, 0xb5cc, 0xb5cd, 0xb5cf, 0xb5d0, 0xb5d1,
+ 0xb5d8, 0xb5ec, 0xb610, 0xb611, 0xb614, 0xb618, 0xb625, 0xb62c,
+ 0xb634, 0xb648, 0xb664, 0xb668, 0xb69c, 0xb69d, 0xb6a0, 0xb6a4,
+ 0xb6ab, 0xb6ac, 0xb6b1, 0xb6d4, 0xb6f0, 0xb6f4, 0xb6f8, 0xb700,
+ 0xb701, 0xb705, 0xb728, 0xb729, 0xb72c, 0xb72f, 0xb730, 0xb738,
+ 0xb739, 0xb73b, 0xb744, 0xb748, 0xb74c, 0xb754, 0xb755, 0xb760,
+ 0xb764, 0xb768, 0xb770, 0xb771, 0xb773, 0xb775, 0xb77c, 0xb77d,
+ 0xb780, 0xb784, 0xb78c, 0xb78d, 0xb78f, 0xb790, 0xb791, 0xb792,
+ 0xb796, 0xb797, 0xb798, 0xb799, 0xb79c, 0xb7a0, 0xb7a8, 0xb7a9,
+ 0xb7ab, 0xb7ac, 0xb7ad, 0xb7b4, 0xb7b5, 0xb7b8, 0xb7c7, 0xb7c9,
+ 0xb7ec, 0xb7ed, 0xb7f0, 0xb7f4, 0xb7fc, 0xb7fd, 0xb7ff, 0xb800,
+ 0xb801, 0xb807, 0xb808, 0xb809, 0xb80c, 0xb810, 0xb818, 0xb819,
+ 0xb81b, 0xb81d, 0xb824, 0xb825, 0xb828, 0xb82c, 0xb834, 0xb835,
+ 0xb837, 0xb838, 0xb839, 0xb840, 0xb844, 0xb851, 0xb853, 0xb85c,
+ 0xb85d, 0xb860, 0xb864, 0xb86c, 0xb86d, 0xb86f, 0xb871, 0xb878,
+ 0xb87c, 0xb88d, 0xb8a8, 0xb8b0, 0xb8b4, 0xb8b8, 0xb8c0, 0xb8c1,
+ 0xb8c3, 0xb8c5, 0xb8cc, 0xb8d0, 0xb8d4, 0xb8dd, 0xb8df, 0xb8e1,
+ 0xb8e8, 0xb8e9, 0xb8ec, 0xb8f0, 0xb8f8, 0xb8f9, 0xb8fb, 0xb8fd,
+ 0xb904, 0xb918, 0xb920, 0xb93c, 0xb93d, 0xb940, 0xb944, 0xb94c,
+ 0xb94f, 0xb951, 0xb958, 0xb959, 0xb95c, 0xb960, 0xb968, 0xb969,
+ 0xb96b, 0xb96d, 0xb974, 0xb975, 0xb978, 0xb97c, 0xb984, 0xb985,
+ 0xb987, 0xb989, 0xb98a, 0xb98d, 0xb98e, 0xb9ac, 0xb9ad, 0xb9b0,
+ 0xb9b4, 0xb9bc, 0xb9bd, 0xb9bf, 0xb9c1, 0xb9c8, 0xb9c9, 0xb9cc,
+ 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d8, 0xb9d9, 0xb9db,
+ 0xb9dd, 0xb9de, 0xb9e1, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e8, 0xb9ec,
+ 0xb9f4, 0xb9f5, 0xb9f7, 0xb9f8, 0xb9f9, 0xb9fa, 0xba00, 0xba01,
+ 0xba08, 0xba15, 0xba38, 0xba39, 0xba3c, 0xba40, 0xba42, 0xba48,
+ 0xba49, 0xba4b, 0xba4d, 0xba4e, 0xba53, 0xba54, 0xba55, 0xba58,
+ 0xba5c, 0xba64, 0xba65, 0xba67, 0xba68, 0xba69, 0xba70, 0xba71,
+ 0xba74, 0xba78, 0xba83, 0xba84, 0xba85, 0xba87, 0xba8c, 0xbaa8,
+ 0xbaa9, 0xbaab, 0xbaac, 0xbab0, 0xbab2, 0xbab8, 0xbab9, 0xbabb,
+ 0xbabd, 0xbac4, 0xbac8, 0xbad8, 0xbad9, 0xbafc, 0xbb00, 0xbb04,
+ 0xbb0d, 0xbb0f, 0xbb11, 0xbb18, 0xbb1c, 0xbb20, 0xbb29, 0xbb2b,
+ 0xbb34, 0xbb35, 0xbb36, 0xbb38, 0xbb3b, 0xbb3c, 0xbb3d, 0xbb3e,
+ 0xbb44, 0xbb45, 0xbb47, 0xbb49, 0xbb4d, 0xbb4f, 0xbb50, 0xbb54,
+ 0xbb58, 0xbb61, 0xbb63, 0xbb6c, 0xbb88, 0xbb8c, 0xbb90, 0xbba4,
+ 0xbba8, 0xbbac, 0xbbb4, 0xbbb7, 0xbbc0, 0xbbc4, 0xbbc8, 0xbbd0,
+ 0xbbd3, 0xbbf8, 0xbbf9, 0xbbfc, 0xbbff, 0xbc00, 0xbc02, 0xbc08,
+ 0xbc09, 0xbc0b, 0xbc0c, 0xbc0d, 0xbc0f, 0xbc11, 0xbc14, 0xbc15,
+ 0xbc16, 0xbc17, 0xbc18, 0xbc1b, 0xbc1c, 0xbc1d, 0xbc1e, 0xbc1f,
+ 0xbc24, 0xbc25, 0xbc27, 0xbc29, 0xbc2d, 0xbc30, 0xbc31, 0xbc34,
+ 0xbc38, 0xbc40, 0xbc41, 0xbc43, 0xbc44, 0xbc45, 0xbc49, 0xbc4c,
+ 0xbc4d, 0xbc50, 0xbc5d, 0xbc84, 0xbc85, 0xbc88, 0xbc8b, 0xbc8c,
+ 0xbc8e, 0xbc94, 0xbc95, 0xbc97, 0xbc99, 0xbc9a, 0xbca0, 0xbca1,
+ 0xbca4, 0xbca7, 0xbca8, 0xbcb0, 0xbcb1, 0xbcb3, 0xbcb4, 0xbcb5,
+ 0xbcbc, 0xbcbd, 0xbcc0, 0xbcc4, 0xbccd, 0xbccf, 0xbcd0, 0xbcd1,
+ 0xbcd5, 0xbcd8, 0xbcdc, 0xbcf4, 0xbcf5, 0xbcf6, 0xbcf8, 0xbcfc,
+ 0xbd04, 0xbd05, 0xbd07, 0xbd09, 0xbd10, 0xbd14, 0xbd24, 0xbd2c,
+ 0xbd40, 0xbd48, 0xbd49, 0xbd4c, 0xbd50, 0xbd58, 0xbd59, 0xbd64,
+ 0xbd68, 0xbd80, 0xbd81, 0xbd84, 0xbd87, 0xbd88, 0xbd89, 0xbd8a,
+ 0xbd90, 0xbd91, 0xbd93, 0xbd95, 0xbd99, 0xbd9a, 0xbd9c, 0xbda4,
+ 0xbdb0, 0xbdb8, 0xbdd4, 0xbdd5, 0xbdd8, 0xbddc, 0xbde9, 0xbdf0,
+ 0xbdf4, 0xbdf8, 0xbe00, 0xbe03, 0xbe05, 0xbe0c, 0xbe0d, 0xbe10,
+ 0xbe14, 0xbe1c, 0xbe1d, 0xbe1f, 0xbe44, 0xbe45, 0xbe48, 0xbe4c,
+ 0xbe4e, 0xbe54, 0xbe55, 0xbe57, 0xbe59, 0xbe5a, 0xbe5b, 0xbe60,
+ 0xbe61, 0xbe64, 0xbe68, 0xbe6a, 0xbe70, 0xbe71, 0xbe73, 0xbe74,
+ 0xbe75, 0xbe7b, 0xbe7c, 0xbe7d, 0xbe80, 0xbe84, 0xbe8c, 0xbe8d,
+ 0xbe8f, 0xbe90, 0xbe91, 0xbe98, 0xbe99, 0xbea8, 0xbed0, 0xbed1,
+ 0xbed4, 0xbed7, 0xbed8, 0xbee0, 0xbee3, 0xbee4, 0xbee5, 0xbeec,
+ 0xbf01, 0xbf08, 0xbf09, 0xbf18, 0xbf19, 0xbf1b, 0xbf1c, 0xbf1d,
+ 0xbf40, 0xbf41, 0xbf44, 0xbf48, 0xbf50, 0xbf51, 0xbf55, 0xbf94,
+ 0xbfb0, 0xbfc5, 0xbfcc, 0xbfcd, 0xbfd0, 0xbfd4, 0xbfdc, 0xbfdf,
+ 0xbfe1, 0xc03c, 0xc051, 0xc058, 0xc05c, 0xc060, 0xc068, 0xc069,
+ 0xc090, 0xc091, 0xc094, 0xc098, 0xc0a0, 0xc0a1, 0xc0a3, 0xc0a5,
+ 0xc0ac, 0xc0ad, 0xc0af, 0xc0b0, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6,
+ 0xc0bc, 0xc0bd, 0xc0bf, 0xc0c0, 0xc0c1, 0xc0c5, 0xc0c8, 0xc0c9,
+ 0xc0cc, 0xc0d0, 0xc0d8, 0xc0d9, 0xc0db, 0xc0dc, 0xc0dd, 0xc0e4,
+ 0xc0e5, 0xc0e8, 0xc0ec, 0xc0f4, 0xc0f5, 0xc0f7, 0xc0f9, 0xc100,
+ 0xc104, 0xc108, 0xc110, 0xc115, 0xc11c, 0xc11d, 0xc11e, 0xc11f,
+ 0xc120, 0xc123, 0xc124, 0xc126, 0xc127, 0xc12c, 0xc12d, 0xc12f,
+ 0xc130, 0xc131, 0xc136, 0xc138, 0xc139, 0xc13c, 0xc140, 0xc148,
+ 0xc149, 0xc14b, 0xc14c, 0xc14d, 0xc154, 0xc155, 0xc158, 0xc15c,
+ 0xc164, 0xc165, 0xc167, 0xc168, 0xc169, 0xc170, 0xc174, 0xc178,
+ 0xc185, 0xc18c, 0xc18d, 0xc18e, 0xc190, 0xc194, 0xc196, 0xc19c,
+ 0xc19d, 0xc19f, 0xc1a1, 0xc1a5, 0xc1a8, 0xc1a9, 0xc1ac, 0xc1b0,
+ 0xc1bd, 0xc1c4, 0xc1c8, 0xc1cc, 0xc1d4, 0xc1d7, 0xc1d8, 0xc1e0,
+ 0xc1e4, 0xc1e8, 0xc1f0, 0xc1f1, 0xc1f3, 0xc1fc, 0xc1fd, 0xc200,
+ 0xc204, 0xc20c, 0xc20d, 0xc20f, 0xc211, 0xc218, 0xc219, 0xc21c,
+ 0xc21f, 0xc220, 0xc228, 0xc229, 0xc22b, 0xc22d, 0xc22f, 0xc231,
+ 0xc232, 0xc234, 0xc248, 0xc250, 0xc251, 0xc254, 0xc258, 0xc260,
+ 0xc265, 0xc26c, 0xc26d, 0xc270, 0xc274, 0xc27c, 0xc27d, 0xc27f,
+ 0xc281, 0xc288, 0xc289, 0xc290, 0xc298, 0xc29b, 0xc29d, 0xc2a4,
+ 0xc2a5, 0xc2a8, 0xc2ac, 0xc2ad, 0xc2b4, 0xc2b5, 0xc2b7, 0xc2b9,
+ 0xc2dc, 0xc2dd, 0xc2e0, 0xc2e3, 0xc2e4, 0xc2eb, 0xc2ec, 0xc2ed,
+ 0xc2ef, 0xc2f1, 0xc2f6, 0xc2f8, 0xc2f9, 0xc2fb, 0xc2fc, 0xc300,
+ 0xc308, 0xc309, 0xc30c, 0xc30d, 0xc313, 0xc314, 0xc315, 0xc318,
+ 0xc31c, 0xc324, 0xc325, 0xc328, 0xc329, 0xc345, 0xc368, 0xc369,
+ 0xc36c, 0xc370, 0xc372, 0xc378, 0xc379, 0xc37c, 0xc37d, 0xc384,
+ 0xc388, 0xc38c, 0xc3c0, 0xc3d8, 0xc3d9, 0xc3dc, 0xc3df, 0xc3e0,
+ 0xc3e2, 0xc3e8, 0xc3e9, 0xc3ed, 0xc3f4, 0xc3f5, 0xc3f8, 0xc408,
+ 0xc410, 0xc424, 0xc42c, 0xc430, 0xc434, 0xc43c, 0xc43d, 0xc448,
+ 0xc464, 0xc465, 0xc468, 0xc46c, 0xc474, 0xc475, 0xc479, 0xc480,
+ 0xc494, 0xc49c, 0xc4b8, 0xc4bc, 0xc4e9, 0xc4f0, 0xc4f1, 0xc4f4,
+ 0xc4f8, 0xc4fa, 0xc4ff, 0xc500, 0xc501, 0xc50c, 0xc510, 0xc514,
+ 0xc51c, 0xc528, 0xc529, 0xc52c, 0xc530, 0xc538, 0xc539, 0xc53b,
+ 0xc53d, 0xc544, 0xc545, 0xc548, 0xc549, 0xc54a, 0xc54c, 0xc54d,
+ 0xc54e, 0xc553, 0xc554, 0xc555, 0xc557, 0xc558, 0xc559, 0xc55d,
+ 0xc55e, 0xc560, 0xc561, 0xc564, 0xc568, 0xc570, 0xc571, 0xc573,
+ 0xc574, 0xc575, 0xc57c, 0xc57d, 0xc580, 0xc584, 0xc587, 0xc58c,
+ 0xc58d, 0xc58f, 0xc591, 0xc595, 0xc597, 0xc598, 0xc59c, 0xc5a0,
+ 0xc5a9, 0xc5b4, 0xc5b5, 0xc5b8, 0xc5b9, 0xc5bb, 0xc5bc, 0xc5bd,
+ 0xc5be, 0xc5c4, 0xc5c5, 0xc5c6, 0xc5c7, 0xc5c8, 0xc5c9, 0xc5ca,
+ 0xc5cc, 0xc5ce, 0xc5d0, 0xc5d1, 0xc5d4, 0xc5d8, 0xc5e0, 0xc5e1,
+ 0xc5e3, 0xc5e5, 0xc5ec, 0xc5ed, 0xc5ee, 0xc5f0, 0xc5f4, 0xc5f6,
+ 0xc5f7, 0xc5fc, 0xc5fd, 0xc5fe, 0xc5ff, 0xc600, 0xc601, 0xc605,
+ 0xc606, 0xc607, 0xc608, 0xc60c, 0xc610, 0xc618, 0xc619, 0xc61b,
+ 0xc61c, 0xc624, 0xc625, 0xc628, 0xc62c, 0xc62d, 0xc62e, 0xc630,
+ 0xc633, 0xc634, 0xc635, 0xc637, 0xc639, 0xc63b, 0xc640, 0xc641,
+ 0xc644, 0xc648, 0xc650, 0xc651, 0xc653, 0xc654, 0xc655, 0xc65c,
+ 0xc65d, 0xc660, 0xc66c, 0xc66f, 0xc671, 0xc678, 0xc679, 0xc67c,
+ 0xc680, 0xc688, 0xc689, 0xc68b, 0xc68d, 0xc694, 0xc695, 0xc698,
+ 0xc69c, 0xc6a4, 0xc6a5, 0xc6a7, 0xc6a9, 0xc6b0, 0xc6b1, 0xc6b4,
+ 0xc6b8, 0xc6b9, 0xc6ba, 0xc6c0, 0xc6c1, 0xc6c3, 0xc6c5, 0xc6cc,
+ 0xc6cd, 0xc6d0, 0xc6d4, 0xc6dc, 0xc6dd, 0xc6e0, 0xc6e1, 0xc6e8,
+ 0xc6e9, 0xc6ec, 0xc6f0, 0xc6f8, 0xc6f9, 0xc6fd, 0xc704, 0xc705,
+ 0xc708, 0xc70c, 0xc714, 0xc715, 0xc717, 0xc719, 0xc720, 0xc721,
+ 0xc724, 0xc728, 0xc730, 0xc731, 0xc733, 0xc735, 0xc737, 0xc73c,
+ 0xc73d, 0xc740, 0xc744, 0xc74a, 0xc74c, 0xc74d, 0xc74f, 0xc751,
+ 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc75c,
+ 0xc760, 0xc768, 0xc76b, 0xc774, 0xc775, 0xc778, 0xc77c, 0xc77d,
+ 0xc77e, 0xc783, 0xc784, 0xc785, 0xc787, 0xc788, 0xc789, 0xc78a,
+ 0xc78e, 0xc790, 0xc791, 0xc794, 0xc796, 0xc797, 0xc798, 0xc79a,
+ 0xc7a0, 0xc7a1, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, 0xc7ac, 0xc7ad,
+ 0xc7b0, 0xc7b4, 0xc7bc, 0xc7bd, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c8,
+ 0xc7c9, 0xc7cc, 0xc7ce, 0xc7d0, 0xc7d8, 0xc7dd, 0xc7e4, 0xc7e8,
+ 0xc7ec, 0xc800, 0xc801, 0xc804, 0xc808, 0xc80a, 0xc810, 0xc811,
+ 0xc813, 0xc815, 0xc816, 0xc81c, 0xc81d, 0xc820, 0xc824, 0xc82c,
+ 0xc82d, 0xc82f, 0xc831, 0xc838, 0xc83c, 0xc840, 0xc848, 0xc849,
+ 0xc84c, 0xc84d, 0xc854, 0xc870, 0xc871, 0xc874, 0xc878, 0xc87a,
+ 0xc880, 0xc881, 0xc883, 0xc885, 0xc886, 0xc887, 0xc88b, 0xc88c,
+ 0xc88d, 0xc894, 0xc89d, 0xc89f, 0xc8a1, 0xc8a8, 0xc8bc, 0xc8bd,
+ 0xc8c4, 0xc8c8, 0xc8cc, 0xc8d4, 0xc8d5, 0xc8d7, 0xc8d9, 0xc8e0,
+ 0xc8e1, 0xc8e4, 0xc8f5, 0xc8fc, 0xc8fd, 0xc900, 0xc904, 0xc905,
+ 0xc906, 0xc90c, 0xc90d, 0xc90f, 0xc911, 0xc918, 0xc92c, 0xc934,
+ 0xc950, 0xc951, 0xc954, 0xc958, 0xc960, 0xc961, 0xc963, 0xc96c,
+ 0xc970, 0xc974, 0xc97c, 0xc988, 0xc989, 0xc98c, 0xc990, 0xc998,
+ 0xc999, 0xc99b, 0xc99d, 0xc9c0, 0xc9c1, 0xc9c4, 0xc9c7, 0xc9c8,
+ 0xc9ca, 0xc9d0, 0xc9d1, 0xc9d3, 0xc9d5, 0xc9d6, 0xc9d9, 0xc9da,
+ 0xc9dc, 0xc9dd, 0xc9e0, 0xc9e2, 0xc9e4, 0xc9e7, 0xc9ec, 0xc9ed,
+ 0xc9ef, 0xc9f0, 0xc9f1, 0xc9f8, 0xc9f9, 0xc9fc, 0xca00, 0xca08,
+ 0xca09, 0xca0b, 0xca0c, 0xca0d, 0xca14, 0xca18, 0xca29, 0xca4c,
+ 0xca4d, 0xca50, 0xca54, 0xca5c, 0xca5d, 0xca5f, 0xca60, 0xca61,
+ 0xca68, 0xca7d, 0xca84, 0xca98, 0xcabc, 0xcabd, 0xcac0, 0xcac4,
+ 0xcacc, 0xcacd, 0xcacf, 0xcad1, 0xcad3, 0xcad8, 0xcad9, 0xcae0,
+ 0xcaec, 0xcaf4, 0xcb08, 0xcb10, 0xcb14, 0xcb18, 0xcb20, 0xcb21,
+ 0xcb41, 0xcb48, 0xcb49, 0xcb4c, 0xcb50, 0xcb58, 0xcb59, 0xcb5d,
+ 0xcb64, 0xcb78, 0xcb79, 0xcb9c, 0xcbb8, 0xcbd4, 0xcbe4, 0xcbe7,
+ 0xcbe9, 0xcc0c, 0xcc0d, 0xcc10, 0xcc14, 0xcc1c, 0xcc1d, 0xcc21,
+ 0xcc22, 0xcc27, 0xcc28, 0xcc29, 0xcc2c, 0xcc2e, 0xcc30, 0xcc38,
+ 0xcc39, 0xcc3b, 0xcc3c, 0xcc3d, 0xcc3e, 0xcc44, 0xcc45, 0xcc48,
+ 0xcc4c, 0xcc54, 0xcc55, 0xcc57, 0xcc58, 0xcc59, 0xcc60, 0xcc64,
+ 0xcc66, 0xcc68, 0xcc70, 0xcc75, 0xcc98, 0xcc99, 0xcc9c, 0xcca0,
+ 0xcca8, 0xcca9, 0xccab, 0xccac, 0xccad, 0xccb4, 0xccb5, 0xccb8,
+ 0xccbc, 0xccc4, 0xccc5, 0xccc7, 0xccc9, 0xccd0, 0xccd4, 0xcce4,
+ 0xccec, 0xccf0, 0xcd01, 0xcd08, 0xcd09, 0xcd0c, 0xcd10, 0xcd18,
+ 0xcd19, 0xcd1b, 0xcd1d, 0xcd24, 0xcd28, 0xcd2c, 0xcd39, 0xcd5c,
+ 0xcd60, 0xcd64, 0xcd6c, 0xcd6d, 0xcd6f, 0xcd71, 0xcd78, 0xcd88,
+ 0xcd94, 0xcd95, 0xcd98, 0xcd9c, 0xcda4, 0xcda5, 0xcda7, 0xcda9,
+ 0xcdb0, 0xcdc4, 0xcdcc, 0xcdd0, 0xcde8, 0xcdec, 0xcdf0, 0xcdf8,
+ 0xcdf9, 0xcdfb, 0xcdfd, 0xce04, 0xce08, 0xce0c, 0xce14, 0xce19,
+ 0xce20, 0xce21, 0xce24, 0xce28, 0xce30, 0xce31, 0xce33, 0xce35,
+ 0xce58, 0xce59, 0xce5c, 0xce5f, 0xce60, 0xce61, 0xce68, 0xce69,
+ 0xce6b, 0xce6d, 0xce74, 0xce75, 0xce78, 0xce7c, 0xce84, 0xce85,
+ 0xce87, 0xce89, 0xce90, 0xce91, 0xce94, 0xce98, 0xcea0, 0xcea1,
+ 0xcea3, 0xcea4, 0xcea5, 0xceac, 0xcead, 0xcec1, 0xcee4, 0xcee5,
+ 0xcee8, 0xceeb, 0xceec, 0xcef4, 0xcef5, 0xcef7, 0xcef8, 0xcef9,
+ 0xcf00, 0xcf01, 0xcf04, 0xcf08, 0xcf10, 0xcf11, 0xcf13, 0xcf15,
+ 0xcf1c, 0xcf20, 0xcf24, 0xcf2c, 0xcf2d, 0xcf2f, 0xcf30, 0xcf31,
+ 0xcf38, 0xcf54, 0xcf55, 0xcf58, 0xcf5c, 0xcf64, 0xcf65, 0xcf67,
+ 0xcf69, 0xcf70, 0xcf71, 0xcf74, 0xcf78, 0xcf80, 0xcf85, 0xcf8c,
+ 0xcfa1, 0xcfa8, 0xcfb0, 0xcfc4, 0xcfe0, 0xcfe1, 0xcfe4, 0xcfe8,
+ 0xcff0, 0xcff1, 0xcff3, 0xcff5, 0xcffc, 0xd000, 0xd004, 0xd011,
+ 0xd018, 0xd02d, 0xd034, 0xd035, 0xd038, 0xd03c, 0xd044, 0xd045,
+ 0xd047, 0xd049, 0xd050, 0xd054, 0xd058, 0xd060, 0xd06c, 0xd06d,
+ 0xd070, 0xd074, 0xd07c, 0xd07d, 0xd081, 0xd0a4, 0xd0a5, 0xd0a8,
+ 0xd0ac, 0xd0b4, 0xd0b5, 0xd0b7, 0xd0b9, 0xd0c0, 0xd0c1, 0xd0c4,
+ 0xd0c8, 0xd0c9, 0xd0d0, 0xd0d1, 0xd0d3, 0xd0d4, 0xd0d5, 0xd0dc,
+ 0xd0dd, 0xd0e0, 0xd0e4, 0xd0ec, 0xd0ed, 0xd0ef, 0xd0f0, 0xd0f1,
+ 0xd0f8, 0xd10d, 0xd130, 0xd131, 0xd134, 0xd138, 0xd13a, 0xd140,
+ 0xd141, 0xd143, 0xd144, 0xd145, 0xd14c, 0xd14d, 0xd150, 0xd154,
+ 0xd15c, 0xd15d, 0xd15f, 0xd161, 0xd168, 0xd16c, 0xd17c, 0xd184,
+ 0xd188, 0xd1a0, 0xd1a1, 0xd1a4, 0xd1a8, 0xd1b0, 0xd1b1, 0xd1b3,
+ 0xd1b5, 0xd1ba, 0xd1bc, 0xd1c0, 0xd1d8, 0xd1f4, 0xd1f8, 0xd207,
+ 0xd209, 0xd210, 0xd22c, 0xd22d, 0xd230, 0xd234, 0xd23c, 0xd23d,
+ 0xd23f, 0xd241, 0xd248, 0xd25c, 0xd264, 0xd280, 0xd281, 0xd284,
+ 0xd288, 0xd290, 0xd291, 0xd295, 0xd29c, 0xd2a0, 0xd2a4, 0xd2ac,
+ 0xd2b1, 0xd2b8, 0xd2b9, 0xd2bc, 0xd2bf, 0xd2c0, 0xd2c2, 0xd2c8,
+ 0xd2c9, 0xd2cb, 0xd2d4, 0xd2d8, 0xd2dc, 0xd2e4, 0xd2e5, 0xd2f0,
+ 0xd2f1, 0xd2f4, 0xd2f8, 0xd300, 0xd301, 0xd303, 0xd305, 0xd30c,
+ 0xd30d, 0xd30e, 0xd310, 0xd314, 0xd316, 0xd31c, 0xd31d, 0xd31f,
+ 0xd320, 0xd321, 0xd325, 0xd328, 0xd329, 0xd32c, 0xd330, 0xd338,
+ 0xd339, 0xd33b, 0xd33c, 0xd33d, 0xd344, 0xd345, 0xd37c, 0xd37d,
+ 0xd380, 0xd384, 0xd38c, 0xd38d, 0xd38f, 0xd390, 0xd391, 0xd398,
+ 0xd399, 0xd39c, 0xd3a0, 0xd3a8, 0xd3a9, 0xd3ab, 0xd3ad, 0xd3b4,
+ 0xd3b8, 0xd3bc, 0xd3c4, 0xd3c5, 0xd3c8, 0xd3c9, 0xd3d0, 0xd3d8,
+ 0xd3e1, 0xd3e3, 0xd3ec, 0xd3ed, 0xd3f0, 0xd3f4, 0xd3fc, 0xd3fd,
+ 0xd3ff, 0xd401, 0xd408, 0xd41d, 0xd440, 0xd444, 0xd45c, 0xd460,
+ 0xd464, 0xd46d, 0xd46f, 0xd478, 0xd479, 0xd47c, 0xd47f, 0xd480,
+ 0xd482, 0xd488, 0xd489, 0xd48b, 0xd48d, 0xd494, 0xd4a9, 0xd4cc,
+ 0xd4d0, 0xd4d4, 0xd4dc, 0xd4df, 0xd4e8, 0xd4ec, 0xd4f0, 0xd4f8,
+ 0xd4fb, 0xd4fd, 0xd504, 0xd508, 0xd50c, 0xd514, 0xd515, 0xd517,
+ 0xd53c, 0xd53d, 0xd540, 0xd544, 0xd54c, 0xd54d, 0xd54f, 0xd551,
+ 0xd558, 0xd559, 0xd55c, 0xd560, 0xd565, 0xd568, 0xd569, 0xd56b,
+ 0xd56d, 0xd574, 0xd575, 0xd578, 0xd57c, 0xd584, 0xd585, 0xd587,
+ 0xd588, 0xd589, 0xd590, 0xd5a5, 0xd5c8, 0xd5c9, 0xd5cc, 0xd5d0,
+ 0xd5d2, 0xd5d8, 0xd5d9, 0xd5db, 0xd5dd, 0xd5e4, 0xd5e5, 0xd5e8,
+ 0xd5ec, 0xd5f4, 0xd5f5, 0xd5f7, 0xd5f9, 0xd600, 0xd601, 0xd604,
+ 0xd608, 0xd610, 0xd611, 0xd613, 0xd614, 0xd615, 0xd61c, 0xd620,
+ 0xd624, 0xd62d, 0xd638, 0xd639, 0xd63c, 0xd640, 0xd645, 0xd648,
+ 0xd649, 0xd64b, 0xd64d, 0xd651, 0xd654, 0xd655, 0xd658, 0xd65c,
+ 0xd667, 0xd669, 0xd670, 0xd671, 0xd674, 0xd683, 0xd685, 0xd68c,
+ 0xd68d, 0xd690, 0xd694, 0xd69d, 0xd69f, 0xd6a1, 0xd6a8, 0xd6ac,
+ 0xd6b0, 0xd6b9, 0xd6bb, 0xd6c4, 0xd6c5, 0xd6c8, 0xd6cc, 0xd6d1,
+ 0xd6d4, 0xd6d7, 0xd6d9, 0xd6e0, 0xd6e4, 0xd6e8, 0xd6f0, 0xd6f5,
+ 0xd6fc, 0xd6fd, 0xd700, 0xd704, 0xd711, 0xd718, 0xd719, 0xd71c,
+ 0xd720, 0xd728, 0xd729, 0xd72b, 0xd72d, 0xd734, 0xd735, 0xd738,
+ 0xd73c, 0xd744, 0xd747, 0xd749, 0xd750, 0xd751, 0xd754, 0xd756,
+ 0xd757, 0xd758, 0xd759, 0xd760, 0xd761, 0xd763, 0xd765, 0xd769,
+ 0xd76c, 0xd770, 0xd774, 0xd77c, 0xd77d, 0xd781, 0xd788, 0xd789,
+ 0xd78c, 0xd790, 0xd798, 0xd799, 0xd79b, 0xd79d
+};
+
+/* Table including ksc5601 symbol to unicode */
+static const unsigned short ksc5601_symbol_to_unicode[1115]=
+{
+ 0x3000, 0x3001, 0x3002, 0x00b7, 0x2025, 0x2026, 0x00a8, 0x3003,
+ 0x00ad, 0x2015, 0x2225, 0xff3c, 0x223c, 0x2018, 0x2019, 0x201c,
+ 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
+ 0x300d, 0x300e, 0x300f, 0x3010, 0x3011, 0x00b1, 0x00d7, 0x00f7,
+ 0x2260, 0x2264, 0x2265, 0x221e, 0x2234, 0x00b0, 0x2032, 0x2033,
+ 0x2103, 0x212b, 0xffe0, 0xffe1, 0xffe5, 0x2642, 0x2640, 0x2220,
+ 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x00a7, 0x203b,
+ 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1,
+ 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x2192, 0x2190, 0x2191,
+ 0x2193, 0x2194, 0x3013, 0x226a, 0x226b, 0x221a, 0x223d, 0x221d,
+ 0x2235, 0x222b, 0x222c, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282,
+ 0x2283, 0x222a, 0x2229, 0x2227, 0x2228, 0xffe2, 0x21d2, 0x21d4,
+ 0x2200, 0x2203, 0x00b4, 0xff5e, 0x02c7, 0x02d8, 0x02dd, 0x02da,
+ 0x02d9, 0x00b8, 0x02db, 0x00a1, 0x00bf, 0x02d0, 0x222e, 0x2211,
+ 0x220f, 0x00a4, 0x2109, 0x2030, 0x25c1, 0x25c0, 0x25b7, 0x25b6,
+ 0x2664, 0x2660, 0x2661, 0x2665, 0x2667, 0x2663, 0x2299, 0x25c8,
+ 0x25a3, 0x25d0, 0x25d1, 0x2592, 0x25a4, 0x25a5, 0x25a8, 0x25a7,
+ 0x25a6, 0x25a9, 0x2668, 0x260f, 0x260e, 0x261c, 0x261e, 0x00b6,
+ 0x2020, 0x2021, 0x2195, 0x2197, 0x2199, 0x2196, 0x2198, 0x266d,
+ 0x2669, 0x266a, 0x266c, 0x327f, 0x321c, 0x2116, 0x33c7, 0x2122,
+ 0x33c2, 0x33d8, 0x2121, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0xff01, 0xff02, 0xff03, 0xff04,
+ 0xff05, 0xff06, 0xff07, 0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c,
+ 0xff0d, 0xff0e, 0xff0f, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14,
+ 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1c,
+ 0xff1d, 0xff1e, 0xff1f, 0xff20, 0xff21, 0xff22, 0xff23, 0xff24,
+ 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c,
+ 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34,
+ 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff3b, 0xffe6,
+ 0xff3d, 0xff3e, 0xff3f, 0xff40, 0xff41, 0xff42, 0xff43, 0xff44,
+ 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c,
+ 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54,
+ 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0xff5b, 0xff5c,
+ 0xff5d, 0xffe3, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136,
+ 0x3137, 0x3138, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e,
+ 0x313f, 0x3140, 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146,
+ 0x3147, 0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e,
+ 0x314f, 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156,
+ 0x3157, 0x3158, 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e,
+ 0x315f, 0x3160, 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166,
+ 0x3167, 0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e,
+ 0x316f, 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176,
+ 0x3177, 0x3178, 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e,
+ 0x317f, 0x3180, 0x3181, 0x3182, 0x3183, 0x3184, 0x3185, 0x3186,
+ 0x3187, 0x3188, 0x3189, 0x318a, 0x318b, 0x318c, 0x318d, 0x318e,
+ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
+ 0x2178, 0x2179, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2160,
+ 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
+ 0x2169, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
+ 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
+ 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
+ 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
+ 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2500, 0x2502,
+ 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, 0x252c, 0x2524, 0x2534,
+ 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, 0x251b, 0x2517, 0x2523,
+ 0x2533, 0x252b, 0x253b, 0x254b, 0x2520, 0x252f, 0x2528, 0x2537,
+ 0x253f, 0x251d, 0x2530, 0x2525, 0x2538, 0x2542, 0x2512, 0x2511,
+ 0x251a, 0x2519, 0x2516, 0x2515, 0x250e, 0x250d, 0x251e, 0x251f,
+ 0x2521, 0x2522, 0x2526, 0x2527, 0x2529, 0x252a, 0x252d, 0x252e,
+ 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, 0x253a, 0x253d, 0x253e,
+ 0x2540, 0x2541, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548,
+ 0x2549, 0x254a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3395, 0x3396, 0x3397, 0x2113,
+ 0x3398, 0x33c4, 0x33a3, 0x33a4, 0x33a5, 0x33a6, 0x3399, 0x339a,
+ 0x339b, 0x339c, 0x339d, 0x339e, 0x339f, 0x33a0, 0x33a1, 0x33a2,
+ 0x33ca, 0x338d, 0x338e, 0x338f, 0x33cf, 0x3388, 0x3389, 0x33c8,
+ 0x33a7, 0x33a8, 0x33b0, 0x33b1, 0x33b2, 0x33b3, 0x33b4, 0x33b5,
+ 0x33b6, 0x33b7, 0x33b8, 0x33b9, 0x3380, 0x3381, 0x3382, 0x3383,
+ 0x3384, 0x33ba, 0x33bb, 0x33bc, 0x33bd, 0x33be, 0x33bf, 0x3390,
+ 0x3391, 0x3392, 0x3393, 0x3394, 0x2126, 0x33c0, 0x33c1, 0x338a,
+ 0x338b, 0x338c, 0x33d6, 0x33c5, 0x33ad, 0x33ae, 0x33af, 0x33db,
+ 0x33a9, 0x33aa, 0x33ab, 0x33ac, 0x33dd, 0x33d0, 0x33d3, 0x33c3,
+ 0x33c9, 0x33dc, 0x33c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x00c6, 0x00d0, 0x00aa, 0x0126, 0x0000, 0x0132,
+ 0x0000, 0x013f, 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166,
+ 0x014a, 0x0000, 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265,
+ 0x3266, 0x3267, 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d,
+ 0x326e, 0x326f, 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275,
+ 0x3276, 0x3277, 0x3278, 0x3279, 0x327a, 0x327b, 0x24d0, 0x24d1,
+ 0x24d2, 0x24d3, 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9,
+ 0x24da, 0x24db, 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1,
+ 0x24e2, 0x24e3, 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9,
+ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
+ 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x00bd,
+ 0x2153, 0x2154, 0x00bc, 0x00be, 0x215b, 0x215c, 0x215d, 0x215e,
+ 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0140,
+ 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x0167, 0x014b, 0x0149,
+ 0x3200, 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206, 0x3207,
+ 0x3208, 0x3209, 0x320a, 0x320b, 0x320c, 0x320d, 0x320e, 0x320f,
+ 0x3210, 0x3211, 0x3212, 0x3213, 0x3214, 0x3215, 0x3216, 0x3217,
+ 0x3218, 0x3219, 0x321a, 0x321b, 0x249c, 0x249d, 0x249e, 0x249f,
+ 0x24a0, 0x24a1, 0x24a2, 0x24a3, 0x24a4, 0x24a5, 0x24a6, 0x24a7,
+ 0x24a8, 0x24a9, 0x24aa, 0x24ab, 0x24ac, 0x24ad, 0x24ae, 0x24af,
+ 0x24b0, 0x24b1, 0x24b2, 0x24b3, 0x24b4, 0x24b5, 0x2474, 0x2475,
+ 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d,
+ 0x247e, 0x247f, 0x2480, 0x2481, 0x2482, 0x00b9, 0x00b2, 0x00b3,
+ 0x2074, 0x207f, 0x2081, 0x2082, 0x2083, 0x2084, 0x3041, 0x3042,
+ 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304a,
+ 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051, 0x3052,
+ 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305a,
+ 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060, 0x3061, 0x3062,
+ 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306a,
+ 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070, 0x3071, 0x3072,
+ 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307a,
+ 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080, 0x3081, 0x3082,
+ 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308a,
+ 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090, 0x3091, 0x3092,
+ 0x3093, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x30a1, 0x30a2, 0x30a3, 0x30a4,
+ 0x30a5, 0x30a6, 0x30a7, 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac,
+ 0x30ad, 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4,
+ 0x30b5, 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc,
+ 0x30bd, 0x30be, 0x30bf, 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4,
+ 0x30c5, 0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc,
+ 0x30cd, 0x30ce, 0x30cf, 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4,
+ 0x30d5, 0x30d6, 0x30d7, 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc,
+ 0x30dd, 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4,
+ 0x30e5, 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec,
+ 0x30ed, 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4,
+ 0x30f5, 0x30f6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415,
+ 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c,
+ 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424,
+ 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c,
+ 0x042d, 0x042e, 0x042f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435,
+ 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c,
+ 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444,
+ 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c,
+ 0x044d, 0x044e, 0x044f
+};
+
+struct map
+{
+ unsigned short unicode;
+ unsigned short kscode;
+};
+
+/* Map Table including unicode to ksc5601 symbol */
+static const struct map unicode_to_ksc5601_symbol[986]=
+{
+ {0x00a1, 0x222e}, {0x00a4, 0x2234}, {0x00a7, 0x2157},
+ {0x00a8, 0x2127}, {0x00aa, 0x2823}, {0x00ad, 0x2129},
+ {0x00b0, 0x2146}, {0x00b1, 0x213e}, {0x00b2, 0x2977},
+ {0x00b3, 0x2978}, {0x00b4, 0x2225}, {0x00b6, 0x2252},
+ {0x00b7, 0x2124}, {0x00b8, 0x222c}, {0x00b9, 0x2976},
+ {0x00ba, 0x282c}, {0x00bc, 0x2879}, {0x00bd, 0x2876},
+ {0x00be, 0x287a}, {0x00bf, 0x222f}, {0x00c6, 0x2821},
+ {0x00d0, 0x2822}, {0x00d7, 0x213f}, {0x00d8, 0x282a},
+ {0x00de, 0x282d}, {0x00df, 0x292c}, {0x00e6, 0x2921},
+ {0x00f0, 0x2923}, {0x00f7, 0x2140}, {0x00f8, 0x292a},
+ {0x00fe, 0x292d}, {0x0111, 0x2922}, {0x0126, 0x2824},
+ {0x0127, 0x2924}, {0x0131, 0x2925}, {0x0132, 0x2826},
+ {0x0133, 0x2926}, {0x0138, 0x2927}, {0x013f, 0x2828},
+ {0x0140, 0x2928}, {0x0141, 0x2829}, {0x0142, 0x2929},
+ {0x0149, 0x2930}, {0x014a, 0x282f}, {0x014b, 0x292f},
+ {0x0152, 0x282b}, {0x0153, 0x292b}, {0x0166, 0x282e},
+ {0x0167, 0x292e}, {0x02c7, 0x2227}, {0x02d0, 0x2230},
+ {0x02d8, 0x2228}, {0x02d9, 0x222b}, {0x02da, 0x222a},
+ {0x02db, 0x222d}, {0x02dd, 0x2229}, {0x0391, 0x2541},
+ {0x0392, 0x2542}, {0x0393, 0x2543}, {0x0394, 0x2544},
+ {0x0395, 0x2545}, {0x0396, 0x2546}, {0x0397, 0x2547},
+ {0x0398, 0x2548}, {0x0399, 0x2549}, {0x039a, 0x254a},
+ {0x039b, 0x254b}, {0x039c, 0x254c}, {0x039d, 0x254d},
+ {0x039e, 0x254e}, {0x039f, 0x254f}, {0x03a0, 0x2550},
+ {0x03a1, 0x2551}, {0x03a3, 0x2552}, {0x03a4, 0x2553},
+ {0x03a5, 0x2554}, {0x03a6, 0x2555}, {0x03a7, 0x2556},
+ {0x03a8, 0x2557}, {0x03a9, 0x2558}, {0x03b1, 0x2561},
+ {0x03b2, 0x2562}, {0x03b3, 0x2563}, {0x03b4, 0x2564},
+ {0x03b5, 0x2565}, {0x03b6, 0x2566}, {0x03b7, 0x2567},
+ {0x03b8, 0x2568}, {0x03b9, 0x2569}, {0x03ba, 0x256a},
+ {0x03bb, 0x256b}, {0x03bc, 0x256c}, {0x03bd, 0x256d},
+ {0x03be, 0x256e}, {0x03bf, 0x256f}, {0x03c0, 0x2570},
+ {0x03c1, 0x2571}, {0x03c3, 0x2572}, {0x03c4, 0x2573},
+ {0x03c5, 0x2574}, {0x03c6, 0x2575}, {0x03c7, 0x2576},
+ {0x03c8, 0x2577}, {0x03c9, 0x2578}, {0x0401, 0x2c27},
+ {0x0410, 0x2c21}, {0x0411, 0x2c22}, {0x0412, 0x2c23},
+ {0x0413, 0x2c24}, {0x0414, 0x2c25}, {0x0415, 0x2c26},
+ {0x0416, 0x2c28}, {0x0417, 0x2c29}, {0x0418, 0x2c2a},
+ {0x0419, 0x2c2b}, {0x041a, 0x2c2c}, {0x041b, 0x2c2d},
+ {0x041c, 0x2c2e}, {0x041d, 0x2c2f}, {0x041e, 0x2c30},
+ {0x041f, 0x2c31}, {0x0420, 0x2c32}, {0x0421, 0x2c33},
+ {0x0422, 0x2c34}, {0x0423, 0x2c35}, {0x0424, 0x2c36},
+ {0x0425, 0x2c37}, {0x0426, 0x2c38}, {0x0427, 0x2c39},
+ {0x0428, 0x2c3a}, {0x0429, 0x2c3b}, {0x042a, 0x2c3c},
+ {0x042b, 0x2c3d}, {0x042c, 0x2c3e}, {0x042d, 0x2c3f},
+ {0x042e, 0x2c40}, {0x042f, 0x2c41}, {0x0430, 0x2c51},
+ {0x0431, 0x2c52}, {0x0432, 0x2c53}, {0x0433, 0x2c54},
+ {0x0434, 0x2c55}, {0x0435, 0x2c56}, {0x0436, 0x2c58},
+ {0x0437, 0x2c59}, {0x0438, 0x2c5a}, {0x0439, 0x2c5b},
+ {0x043a, 0x2c5c}, {0x043b, 0x2c5d}, {0x043c, 0x2c5e},
+ {0x043d, 0x2c5f}, {0x043e, 0x2c60}, {0x043f, 0x2c61},
+ {0x0440, 0x2c62}, {0x0441, 0x2c63}, {0x0442, 0x2c64},
+ {0x0443, 0x2c65}, {0x0444, 0x2c66}, {0x0445, 0x2c67},
+ {0x0446, 0x2c68}, {0x0447, 0x2c69}, {0x0448, 0x2c6a},
+ {0x0449, 0x2c6b}, {0x044a, 0x2c6c}, {0x044b, 0x2c6d},
+ {0x044c, 0x2c6e}, {0x044d, 0x2c6f}, {0x044e, 0x2c70},
+ {0x044f, 0x2c71}, {0x0451, 0x2c57}, {0x2015, 0x212a},
+ {0x2018, 0x212e}, {0x2019, 0x212f}, {0x201c, 0x2130},
+ {0x201d, 0x2131}, {0x2020, 0x2253}, {0x2021, 0x2254},
+ {0x2025, 0x2125}, {0x2026, 0x2126}, {0x2030, 0x2236},
+ {0x2032, 0x2147}, {0x2033, 0x2148}, {0x203b, 0x2158},
+ {0x2074, 0x2979}, {0x207f, 0x297a}, {0x2081, 0x297b},
+ {0x2082, 0x297c}, {0x2083, 0x297d}, {0x2084, 0x297e},
+ {0x2103, 0x2149}, {0x2109, 0x2235}, {0x2113, 0x2724},
+ {0x2116, 0x2260}, {0x2121, 0x2265}, {0x2122, 0x2262},
+ {0x2126, 0x2759}, {0x212b, 0x214a}, {0x2153, 0x2877},
+ {0x2154, 0x2878}, {0x215b, 0x287b}, {0x215c, 0x287c},
+ {0x215d, 0x287d}, {0x215e, 0x287e}, {0x2160, 0x2530},
+ {0x2161, 0x2531}, {0x2162, 0x2532}, {0x2163, 0x2533},
+ {0x2164, 0x2534}, {0x2165, 0x2535}, {0x2166, 0x2536},
+ {0x2167, 0x2537}, {0x2168, 0x2538}, {0x2169, 0x2539},
+ {0x2170, 0x2521}, {0x2171, 0x2522}, {0x2172, 0x2523},
+ {0x2173, 0x2524}, {0x2174, 0x2525}, {0x2175, 0x2526},
+ {0x2176, 0x2527}, {0x2177, 0x2528}, {0x2178, 0x2529},
+ {0x2179, 0x252a}, {0x2190, 0x2167}, {0x2191, 0x2168},
+ {0x2192, 0x2166}, {0x2193, 0x2169}, {0x2194, 0x216a},
+ {0x2195, 0x2255}, {0x2196, 0x2258}, {0x2197, 0x2256},
+ {0x2198, 0x2259}, {0x2199, 0x2257}, {0x21d2, 0x2221},
+ {0x21d4, 0x2222}, {0x2200, 0x2223}, {0x2202, 0x2153},
+ {0x2203, 0x2224}, {0x2207, 0x2154}, {0x2208, 0x2174},
+ {0x220b, 0x2175}, {0x220f, 0x2233}, {0x2211, 0x2232},
+ {0x221a, 0x216e}, {0x221d, 0x2170}, {0x221e, 0x2144},
+ {0x2220, 0x2150}, {0x2225, 0x212b}, {0x2227, 0x217c},
+ {0x2228, 0x217d}, {0x2229, 0x217b}, {0x222a, 0x217a},
+ {0x222b, 0x2172}, {0x222c, 0x2173}, {0x222e, 0x2231},
+ {0x2234, 0x2145}, {0x2235, 0x2171}, {0x223c, 0x212d},
+ {0x223d, 0x216f}, {0x2252, 0x2156}, {0x2260, 0x2141},
+ {0x2261, 0x2155}, {0x2264, 0x2142}, {0x2265, 0x2143},
+ {0x226a, 0x216c}, {0x226b, 0x216d}, {0x2282, 0x2178},
+ {0x2283, 0x2179}, {0x2286, 0x2176}, {0x2287, 0x2177},
+ {0x2299, 0x2241}, {0x22a5, 0x2151}, {0x2312, 0x2152},
+ {0x2460, 0x2867}, {0x2461, 0x2868}, {0x2462, 0x2869},
+ {0x2463, 0x286a}, {0x2464, 0x286b}, {0x2465, 0x286c},
+ {0x2466, 0x286d}, {0x2467, 0x286e}, {0x2468, 0x286f},
+ {0x2469, 0x2870}, {0x246a, 0x2871}, {0x246b, 0x2872},
+ {0x246c, 0x2873}, {0x246d, 0x2874}, {0x246e, 0x2875},
+ {0x2474, 0x2967}, {0x2475, 0x2968}, {0x2476, 0x2969},
+ {0x2477, 0x296a}, {0x2478, 0x296b}, {0x2479, 0x296c},
+ {0x247a, 0x296d}, {0x247b, 0x296e}, {0x247c, 0x296f},
+ {0x247d, 0x2970}, {0x247e, 0x2971}, {0x247f, 0x2972},
+ {0x2480, 0x2973}, {0x2481, 0x2974}, {0x2482, 0x2975},
+ {0x249c, 0x294d}, {0x249d, 0x294e}, {0x249e, 0x294f},
+ {0x249f, 0x2950}, {0x24a0, 0x2951}, {0x24a1, 0x2952},
+ {0x24a2, 0x2953}, {0x24a3, 0x2954}, {0x24a4, 0x2955},
+ {0x24a5, 0x2956}, {0x24a6, 0x2957}, {0x24a7, 0x2958},
+ {0x24a8, 0x2959}, {0x24a9, 0x295a}, {0x24aa, 0x295b},
+ {0x24ab, 0x295c}, {0x24ac, 0x295d}, {0x24ad, 0x295e},
+ {0x24ae, 0x295f}, {0x24af, 0x2960}, {0x24b0, 0x2961},
+ {0x24b1, 0x2962}, {0x24b2, 0x2963}, {0x24b3, 0x2964},
+ {0x24b4, 0x2965}, {0x24b5, 0x2966}, {0x24d0, 0x284d},
+ {0x24d1, 0x284e}, {0x24d2, 0x284f}, {0x24d3, 0x2850},
+ {0x24d4, 0x2851}, {0x24d5, 0x2852}, {0x24d6, 0x2853},
+ {0x24d7, 0x2854}, {0x24d8, 0x2855}, {0x24d9, 0x2856},
+ {0x24da, 0x2857}, {0x24db, 0x2858}, {0x24dc, 0x2859},
+ {0x24dd, 0x285a}, {0x24de, 0x285b}, {0x24df, 0x285c},
+ {0x24e0, 0x285d}, {0x24e1, 0x285e}, {0x24e2, 0x285f},
+ {0x24e3, 0x2860}, {0x24e4, 0x2861}, {0x24e5, 0x2862},
+ {0x24e6, 0x2863}, {0x24e7, 0x2864}, {0x24e8, 0x2865},
+ {0x24e9, 0x2866}, {0x2500, 0x2621}, {0x2501, 0x262c},
+ {0x2502, 0x2622}, {0x2503, 0x262d}, {0x250c, 0x2623},
+ {0x250d, 0x2648}, {0x250e, 0x2647}, {0x250f, 0x262e},
+ {0x2510, 0x2624}, {0x2511, 0x2642}, {0x2512, 0x2641},
+ {0x2513, 0x262f}, {0x2514, 0x2626}, {0x2515, 0x2646},
+ {0x2516, 0x2645}, {0x2517, 0x2631}, {0x2518, 0x2625},
+ {0x2519, 0x2644}, {0x251a, 0x2643}, {0x251b, 0x2630},
+ {0x251c, 0x2627}, {0x251d, 0x263c}, {0x251e, 0x2649},
+ {0x251f, 0x264a}, {0x2520, 0x2637}, {0x2521, 0x264b},
+ {0x2522, 0x264c}, {0x2523, 0x2632}, {0x2524, 0x2629},
+ {0x2525, 0x263e}, {0x2526, 0x264d}, {0x2527, 0x264e},
+ {0x2528, 0x2639}, {0x2529, 0x264f}, {0x252a, 0x2650},
+ {0x252b, 0x2634}, {0x252c, 0x2628}, {0x252d, 0x2651},
+ {0x252e, 0x2652}, {0x252f, 0x2638}, {0x2530, 0x263d},
+ {0x2531, 0x2653}, {0x2532, 0x2654}, {0x2533, 0x2633},
+ {0x2534, 0x262a}, {0x2535, 0x2655}, {0x2536, 0x2656},
+ {0x2537, 0x263a}, {0x2538, 0x263f}, {0x2539, 0x2657},
+ {0x253a, 0x2658}, {0x253b, 0x2635}, {0x253c, 0x262b},
+ {0x253d, 0x2659}, {0x253e, 0x265a}, {0x253f, 0x263b},
+ {0x2540, 0x265b}, {0x2541, 0x265c}, {0x2542, 0x2640},
+ {0x2543, 0x265d}, {0x2544, 0x265e}, {0x2545, 0x265f},
+ {0x2546, 0x2660}, {0x2547, 0x2661}, {0x2548, 0x2662},
+ {0x2549, 0x2663}, {0x254a, 0x2664}, {0x254b, 0x2636},
+ {0x2592, 0x2246}, {0x25a0, 0x2161}, {0x25a1, 0x2160},
+ {0x25a3, 0x2243}, {0x25a4, 0x2247}, {0x25a5, 0x2248},
+ {0x25a6, 0x224b}, {0x25a7, 0x224a}, {0x25a8, 0x2249},
+ {0x25a9, 0x224c}, {0x25b2, 0x2163}, {0x25b3, 0x2162},
+ {0x25b6, 0x223a}, {0x25b7, 0x2239}, {0x25bc, 0x2165},
+ {0x25bd, 0x2164}, {0x25c0, 0x2238}, {0x25c1, 0x2237},
+ {0x25c6, 0x215f}, {0x25c7, 0x215e}, {0x25c8, 0x2242},
+ {0x25cb, 0x215b}, {0x25ce, 0x215d}, {0x25cf, 0x215c},
+ {0x25d0, 0x2244}, {0x25d1, 0x2245}, {0x2605, 0x215a},
+ {0x2606, 0x2159}, {0x260e, 0x224f}, {0x260f, 0x224e},
+ {0x261c, 0x2250}, {0x261e, 0x2251}, {0x2640, 0x214f},
+ {0x2642, 0x214e}, {0x2660, 0x223c}, {0x2661, 0x223d},
+ {0x2663, 0x2240}, {0x2664, 0x223b}, {0x2665, 0x223e},
+ {0x2667, 0x223f}, {0x2668, 0x224d}, {0x2669, 0x225b},
+ {0x266a, 0x225c}, {0x266c, 0x225d}, {0x266d, 0x225a},
+ {0x3000, 0x2121}, {0x3001, 0x2122}, {0x3002, 0x2123},
+ {0x3003, 0x2128}, {0x3008, 0x2134}, {0x3009, 0x2135},
+ {0x300a, 0x2136}, {0x300b, 0x2137}, {0x300c, 0x2138},
+ {0x300d, 0x2139}, {0x300e, 0x213a}, {0x300f, 0x213b},
+ {0x3010, 0x213c}, {0x3011, 0x213d}, {0x3013, 0x216b},
+ {0x3014, 0x2132}, {0x3015, 0x2133}, {0x3041, 0x2a21},
+ {0x3042, 0x2a22}, {0x3043, 0x2a23}, {0x3044, 0x2a24},
+ {0x3045, 0x2a25}, {0x3046, 0x2a26}, {0x3047, 0x2a27},
+ {0x3048, 0x2a28}, {0x3049, 0x2a29}, {0x304a, 0x2a2a},
+ {0x304b, 0x2a2b}, {0x304c, 0x2a2c}, {0x304d, 0x2a2d},
+ {0x304e, 0x2a2e}, {0x304f, 0x2a2f}, {0x3050, 0x2a30},
+ {0x3051, 0x2a31}, {0x3052, 0x2a32}, {0x3053, 0x2a33},
+ {0x3054, 0x2a34}, {0x3055, 0x2a35}, {0x3056, 0x2a36},
+ {0x3057, 0x2a37}, {0x3058, 0x2a38}, {0x3059, 0x2a39},
+ {0x305a, 0x2a3a}, {0x305b, 0x2a3b}, {0x305c, 0x2a3c},
+ {0x305d, 0x2a3d}, {0x305e, 0x2a3e}, {0x305f, 0x2a3f},
+ {0x3060, 0x2a40}, {0x3061, 0x2a41}, {0x3062, 0x2a42},
+ {0x3063, 0x2a43}, {0x3064, 0x2a44}, {0x3065, 0x2a45},
+ {0x3066, 0x2a46}, {0x3067, 0x2a47}, {0x3068, 0x2a48},
+ {0x3069, 0x2a49}, {0x306a, 0x2a4a}, {0x306b, 0x2a4b},
+ {0x306c, 0x2a4c}, {0x306d, 0x2a4d}, {0x306e, 0x2a4e},
+ {0x306f, 0x2a4f}, {0x3070, 0x2a50}, {0x3071, 0x2a51},
+ {0x3072, 0x2a52}, {0x3073, 0x2a53}, {0x3074, 0x2a54},
+ {0x3075, 0x2a55}, {0x3076, 0x2a56}, {0x3077, 0x2a57},
+ {0x3078, 0x2a58}, {0x3079, 0x2a59}, {0x307a, 0x2a5a},
+ {0x307b, 0x2a5b}, {0x307c, 0x2a5c}, {0x307d, 0x2a5d},
+ {0x307e, 0x2a5e}, {0x307f, 0x2a5f}, {0x3080, 0x2a60},
+ {0x3081, 0x2a61}, {0x3082, 0x2a62}, {0x3083, 0x2a63},
+ {0x3084, 0x2a64}, {0x3085, 0x2a65}, {0x3086, 0x2a66},
+ {0x3087, 0x2a67}, {0x3088, 0x2a68}, {0x3089, 0x2a69},
+ {0x308a, 0x2a6a}, {0x308b, 0x2a6b}, {0x308c, 0x2a6c},
+ {0x308d, 0x2a6d}, {0x308e, 0x2a6e}, {0x308f, 0x2a6f},
+ {0x3090, 0x2a70}, {0x3091, 0x2a71}, {0x3092, 0x2a72},
+ {0x3093, 0x2a73}, {0x30a1, 0x2b21}, {0x30a2, 0x2b22},
+ {0x30a3, 0x2b23}, {0x30a4, 0x2b24}, {0x30a5, 0x2b25},
+ {0x30a6, 0x2b26}, {0x30a7, 0x2b27}, {0x30a8, 0x2b28},
+ {0x30a9, 0x2b29}, {0x30aa, 0x2b2a}, {0x30ab, 0x2b2b},
+ {0x30ac, 0x2b2c}, {0x30ad, 0x2b2d}, {0x30ae, 0x2b2e},
+ {0x30af, 0x2b2f}, {0x30b0, 0x2b30}, {0x30b1, 0x2b31},
+ {0x30b2, 0x2b32}, {0x30b3, 0x2b33}, {0x30b4, 0x2b34},
+ {0x30b5, 0x2b35}, {0x30b6, 0x2b36}, {0x30b7, 0x2b37},
+ {0x30b8, 0x2b38}, {0x30b9, 0x2b39}, {0x30ba, 0x2b3a},
+ {0x30bb, 0x2b3b}, {0x30bc, 0x2b3c}, {0x30bd, 0x2b3d},
+ {0x30be, 0x2b3e}, {0x30bf, 0x2b3f}, {0x30c0, 0x2b40},
+ {0x30c1, 0x2b41}, {0x30c2, 0x2b42}, {0x30c3, 0x2b43},
+ {0x30c4, 0x2b44}, {0x30c5, 0x2b45}, {0x30c6, 0x2b46},
+ {0x30c7, 0x2b47}, {0x30c8, 0x2b48}, {0x30c9, 0x2b49},
+ {0x30ca, 0x2b4a}, {0x30cb, 0x2b4b}, {0x30cc, 0x2b4c},
+ {0x30cd, 0x2b4d}, {0x30ce, 0x2b4e}, {0x30cf, 0x2b4f},
+ {0x30d0, 0x2b50}, {0x30d1, 0x2b51}, {0x30d2, 0x2b52},
+ {0x30d3, 0x2b53}, {0x30d4, 0x2b54}, {0x30d5, 0x2b55},
+ {0x30d6, 0x2b56}, {0x30d7, 0x2b57}, {0x30d8, 0x2b58},
+ {0x30d9, 0x2b59}, {0x30da, 0x2b5a}, {0x30db, 0x2b5b},
+ {0x30dc, 0x2b5c}, {0x30dd, 0x2b5d}, {0x30de, 0x2b5e},
+ {0x30df, 0x2b5f}, {0x30e0, 0x2b60}, {0x30e1, 0x2b61},
+ {0x30e2, 0x2b62}, {0x30e3, 0x2b63}, {0x30e4, 0x2b64},
+ {0x30e5, 0x2b65}, {0x30e6, 0x2b66}, {0x30e7, 0x2b67},
+ {0x30e8, 0x2b68}, {0x30e9, 0x2b69}, {0x30ea, 0x2b6a},
+ {0x30eb, 0x2b6b}, {0x30ec, 0x2b6c}, {0x30ed, 0x2b6d},
+ {0x30ee, 0x2b6e}, {0x30ef, 0x2b6f}, {0x30f0, 0x2b70},
+ {0x30f1, 0x2b71}, {0x30f2, 0x2b72}, {0x30f3, 0x2b73},
+ {0x30f4, 0x2b74}, {0x30f5, 0x2b75}, {0x30f6, 0x2b76},
+ {0x3131, 0x2421}, {0x3132, 0x2422}, {0x3133, 0x2423},
+ {0x3134, 0x2424}, {0x3135, 0x2425}, {0x3136, 0x2426},
+ {0x3137, 0x2427}, {0x3138, 0x2428}, {0x3139, 0x2429},
+ {0x313a, 0x242a}, {0x313b, 0x242b}, {0x313c, 0x242c},
+ {0x313d, 0x242d}, {0x313e, 0x242e}, {0x313f, 0x242f},
+ {0x3140, 0x2430}, {0x3141, 0x2431}, {0x3142, 0x2432},
+ {0x3143, 0x2433}, {0x3144, 0x2434}, {0x3145, 0x2435},
+ {0x3146, 0x2436}, {0x3147, 0x2437}, {0x3148, 0x2438},
+ {0x3149, 0x2439}, {0x314a, 0x243a}, {0x314b, 0x243b},
+ {0x314c, 0x243c}, {0x314d, 0x243d}, {0x314e, 0x243e},
+ {0x314f, 0x243f}, {0x3150, 0x2440}, {0x3151, 0x2441},
+ {0x3152, 0x2442}, {0x3153, 0x2443}, {0x3154, 0x2444},
+ {0x3155, 0x2445}, {0x3156, 0x2446}, {0x3157, 0x2447},
+ {0x3158, 0x2448}, {0x3159, 0x2449}, {0x315a, 0x244a},
+ {0x315b, 0x244b}, {0x315c, 0x244c}, {0x315d, 0x244d},
+ {0x315e, 0x244e}, {0x315f, 0x244f}, {0x3160, 0x2450},
+ {0x3161, 0x2451}, {0x3162, 0x2452}, {0x3163, 0x2453},
+ {0x3164, 0x2454}, {0x3165, 0x2455}, {0x3166, 0x2456},
+ {0x3167, 0x2457}, {0x3168, 0x2458}, {0x3169, 0x2459},
+ {0x316a, 0x245a}, {0x316b, 0x245b}, {0x316c, 0x245c},
+ {0x316d, 0x245d}, {0x316e, 0x245e}, {0x316f, 0x245f},
+ {0x3170, 0x2460}, {0x3171, 0x2461}, {0x3172, 0x2462},
+ {0x3173, 0x2463}, {0x3174, 0x2464}, {0x3175, 0x2465},
+ {0x3176, 0x2466}, {0x3177, 0x2467}, {0x3178, 0x2468},
+ {0x3179, 0x2469}, {0x317a, 0x246a}, {0x317b, 0x246b},
+ {0x317c, 0x246c}, {0x317d, 0x246d}, {0x317e, 0x246e},
+ {0x317f, 0x246f}, {0x3180, 0x2470}, {0x3181, 0x2471},
+ {0x3182, 0x2472}, {0x3183, 0x2473}, {0x3184, 0x2474},
+ {0x3185, 0x2475}, {0x3186, 0x2476}, {0x3187, 0x2477},
+ {0x3188, 0x2478}, {0x3189, 0x2479}, {0x318a, 0x247a},
+ {0x318b, 0x247b}, {0x318c, 0x247c}, {0x318d, 0x247d},
+ {0x318e, 0x247e}, {0x3200, 0x2931}, {0x3201, 0x2932},
+ {0x3202, 0x2933}, {0x3203, 0x2934}, {0x3204, 0x2935},
+ {0x3205, 0x2936}, {0x3206, 0x2937}, {0x3207, 0x2938},
+ {0x3208, 0x2939}, {0x3209, 0x293a}, {0x320a, 0x293b},
+ {0x320b, 0x293c}, {0x320c, 0x293d}, {0x320d, 0x293e},
+ {0x320e, 0x293f}, {0x320f, 0x2940}, {0x3210, 0x2941},
+ {0x3211, 0x2942}, {0x3212, 0x2943}, {0x3213, 0x2944},
+ {0x3214, 0x2945}, {0x3215, 0x2946}, {0x3216, 0x2947},
+ {0x3217, 0x2948}, {0x3218, 0x2949}, {0x3219, 0x294a},
+ {0x321a, 0x294b}, {0x321b, 0x294c}, {0x321c, 0x225f},
+ {0x3260, 0x2831}, {0x3261, 0x2832}, {0x3262, 0x2833},
+ {0x3263, 0x2834}, {0x3264, 0x2835}, {0x3265, 0x2836},
+ {0x3266, 0x2837}, {0x3267, 0x2838}, {0x3268, 0x2839},
+ {0x3269, 0x283a}, {0x326a, 0x283b}, {0x326b, 0x283c},
+ {0x326c, 0x283d}, {0x326d, 0x283e}, {0x326e, 0x283f},
+ {0x326f, 0x2840}, {0x3270, 0x2841}, {0x3271, 0x2842},
+ {0x3272, 0x2843}, {0x3273, 0x2844}, {0x3274, 0x2845},
+ {0x3275, 0x2846}, {0x3276, 0x2847}, {0x3277, 0x2848},
+ {0x3278, 0x2849}, {0x3279, 0x284a}, {0x327a, 0x284b},
+ {0x327b, 0x284c}, {0x327f, 0x225e}, {0x3380, 0x2749},
+ {0x3381, 0x274a}, {0x3382, 0x274b}, {0x3383, 0x274c},
+ {0x3384, 0x274d}, {0x3388, 0x273a}, {0x3389, 0x273b},
+ {0x338a, 0x275c}, {0x338b, 0x275d}, {0x338c, 0x275e},
+ {0x338d, 0x2736}, {0x338e, 0x2737}, {0x338f, 0x2738},
+ {0x3390, 0x2754}, {0x3391, 0x2755}, {0x3392, 0x2756},
+ {0x3393, 0x2757}, {0x3394, 0x2758}, {0x3395, 0x2721},
+ {0x3396, 0x2722}, {0x3397, 0x2723}, {0x3398, 0x2725},
+ {0x3399, 0x272b}, {0x339a, 0x272c}, {0x339b, 0x272d},
+ {0x339c, 0x272e}, {0x339d, 0x272f}, {0x339e, 0x2730},
+ {0x339f, 0x2731}, {0x33a0, 0x2732}, {0x33a1, 0x2733},
+ {0x33a2, 0x2734}, {0x33a3, 0x2727}, {0x33a4, 0x2728},
+ {0x33a5, 0x2729}, {0x33a6, 0x272a}, {0x33a7, 0x273d},
+ {0x33a8, 0x273e}, {0x33a9, 0x2765}, {0x33aa, 0x2766},
+ {0x33ab, 0x2767}, {0x33ac, 0x2768}, {0x33ad, 0x2761},
+ {0x33ae, 0x2762}, {0x33af, 0x2763}, {0x33b0, 0x273f},
+ {0x33b1, 0x2740}, {0x33b2, 0x2741}, {0x33b3, 0x2742},
+ {0x33b4, 0x2743}, {0x33b5, 0x2744}, {0x33b6, 0x2745},
+ {0x33b7, 0x2746}, {0x33b8, 0x2747}, {0x33b9, 0x2748},
+ {0x33ba, 0x274e}, {0x33bb, 0x274f}, {0x33bc, 0x2750},
+ {0x33bd, 0x2751}, {0x33be, 0x2752}, {0x33bf, 0x2753},
+ {0x33c0, 0x275a}, {0x33c1, 0x275b}, {0x33c2, 0x2263},
+ {0x33c3, 0x276c}, {0x33c4, 0x2726}, {0x33c5, 0x2760},
+ {0x33c6, 0x276f}, {0x33c7, 0x2261}, {0x33c8, 0x273c},
+ {0x33c9, 0x276d}, {0x33ca, 0x2735}, {0x33cf, 0x2739},
+ {0x33d0, 0x276a}, {0x33d3, 0x276b}, {0x33d6, 0x275f},
+ {0x33d8, 0x2264}, {0x33db, 0x2764}, {0x33dc, 0x276e},
+ {0x33dd, 0x2769}, {0xff01, 0x2321}, {0xff02, 0x2322},
+ {0xff03, 0x2323}, {0xff04, 0x2324}, {0xff05, 0x2325},
+ {0xff06, 0x2326}, {0xff07, 0x2327}, {0xff08, 0x2328},
+ {0xff09, 0x2329}, {0xff0a, 0x232a}, {0xff0b, 0x232b},
+ {0xff0c, 0x232c}, {0xff0d, 0x232d}, {0xff0e, 0x232e},
+ {0xff0f, 0x232f}, {0xff10, 0x2330}, {0xff11, 0x2331},
+ {0xff12, 0x2332}, {0xff13, 0x2333}, {0xff14, 0x2334},
+ {0xff15, 0x2335}, {0xff16, 0x2336}, {0xff17, 0x2337},
+ {0xff18, 0x2338}, {0xff19, 0x2339}, {0xff1a, 0x233a},
+ {0xff1b, 0x233b}, {0xff1c, 0x233c}, {0xff1d, 0x233d},
+ {0xff1e, 0x233e}, {0xff1f, 0x233f}, {0xff20, 0x2340},
+ {0xff21, 0x2341}, {0xff22, 0x2342}, {0xff23, 0x2343},
+ {0xff24, 0x2344}, {0xff25, 0x2345}, {0xff26, 0x2346},
+ {0xff27, 0x2347}, {0xff28, 0x2348}, {0xff29, 0x2349},
+ {0xff2a, 0x234a}, {0xff2b, 0x234b}, {0xff2c, 0x234c},
+ {0xff2d, 0x234d}, {0xff2e, 0x234e}, {0xff2f, 0x234f},
+ {0xff30, 0x2350}, {0xff31, 0x2351}, {0xff32, 0x2352},
+ {0xff33, 0x2353}, {0xff34, 0x2354}, {0xff35, 0x2355},
+ {0xff36, 0x2356}, {0xff37, 0x2357}, {0xff38, 0x2358},
+ {0xff39, 0x2359}, {0xff3a, 0x235a}, {0xff3b, 0x235b},
+ {0xff3c, 0x212c}, {0xff3d, 0x235d}, {0xff3e, 0x235e},
+ {0xff3f, 0x235f}, {0xff40, 0x2360}, {0xff41, 0x2361},
+ {0xff42, 0x2362}, {0xff43, 0x2363}, {0xff44, 0x2364},
+ {0xff45, 0x2365}, {0xff46, 0x2366}, {0xff47, 0x2367},
+ {0xff48, 0x2368}, {0xff49, 0x2369}, {0xff4a, 0x236a},
+ {0xff4b, 0x236b}, {0xff4c, 0x236c}, {0xff4d, 0x236d},
+ {0xff4e, 0x236e}, {0xff4f, 0x236f}, {0xff50, 0x2370},
+ {0xff51, 0x2371}, {0xff52, 0x2372}, {0xff53, 0x2373},
+ {0xff54, 0x2374}, {0xff55, 0x2375}, {0xff56, 0x2376},
+ {0xff57, 0x2377}, {0xff58, 0x2378}, {0xff59, 0x2379},
+ {0xff5a, 0x237a}, {0xff5b, 0x237b}, {0xff5c, 0x237c},
+ {0xff5d, 0x237d}, {0xff5e, 0x2226}, {0xffe0, 0x214b},
+ {0xffe1, 0x214c}, {0xffe2, 0x217e}, {0xffe3, 0x237e},
+ {0xffe5, 0x214d}, {0xffe6, 0x235c}
+};
+
+/* Table including ksc5601 hanja to unicode */
+static const unsigned short ksc5601_hanja_to_unicode[4888]=
+{
+ 0x4f3d, 0x4f73, 0x5047, 0x50f9, 0x52a0, 0x53ef, 0x5475, 0x54e5,
+ 0x5609, 0x5ac1, 0x5bb6, 0x6687, 0x67b6, 0x67b7, 0x67ef, 0x6b4c,
+ 0x73c2, 0x75c2, 0x7a3c, 0x82db, 0x8304, 0x8857, 0x8888, 0x8a36,
+ 0x8cc8, 0x8dcf, 0x8efb, 0x8fe6, 0x99d5, 0x523b, 0x5374, 0x5404,
+ 0x606a, 0x6164, 0x6bbc, 0x73cf, 0x811a, 0x89ba, 0x89d2, 0x95a3,
+ 0x4f83, 0x520a, 0x58be, 0x5978, 0x59e6, 0x5e72, 0x5e79, 0x61c7,
+ 0x63c0, 0x6746, 0x67ec, 0x687f, 0x6f97, 0x764e, 0x770b, 0x78f5,
+ 0x7a08, 0x7aff, 0x7c21, 0x809d, 0x826e, 0x8271, 0x8aeb, 0x9593,
+ 0x4e6b, 0x559d, 0x66f7, 0x6e34, 0x78a3, 0x7aed, 0x845b, 0x8910,
+ 0x874e, 0x97a8, 0x52d8, 0x574e, 0x582a, 0x5d4c, 0x611f, 0x61be,
+ 0x6221, 0x6562, 0x67d1, 0x6a44, 0x6e1b, 0x7518, 0x75b3, 0x76e3,
+ 0x77b0, 0x7d3a, 0x90af, 0x9451, 0x9452, 0x9f95, 0x5323, 0x5cac,
+ 0x7532, 0x80db, 0x9240, 0x9598, 0x525b, 0x5808, 0x59dc, 0x5ca1,
+ 0x5d17, 0x5eb7, 0x5f3a, 0x5f4a, 0x6177, 0x6c5f, 0x757a, 0x7586,
+ 0x7ce0, 0x7d73, 0x7db1, 0x7f8c, 0x8154, 0x8221, 0x8591, 0x8941,
+ 0x8b1b, 0x92fc, 0x964d, 0x9c47, 0x4ecb, 0x4ef7, 0x500b, 0x51f1,
+ 0x584f, 0x6137, 0x613e, 0x6168, 0x6539, 0x69ea, 0x6f11, 0x75a5,
+ 0x7686, 0x76d6, 0x7b87, 0x82a5, 0x84cb, 0xf900, 0x93a7, 0x958b,
+ 0x5580, 0x5ba2, 0x5751, 0xf901, 0x7cb3, 0x7fb9, 0x91b5, 0x5028,
+ 0x53bb, 0x5c45, 0x5de8, 0x62d2, 0x636e, 0x64da, 0x64e7, 0x6e20,
+ 0x70ac, 0x795b, 0x8ddd, 0x8e1e, 0xf902, 0x907d, 0x9245, 0x92f8,
+ 0x4e7e, 0x4ef6, 0x5065, 0x5dfe, 0x5efa, 0x6106, 0x6957, 0x8171,
+ 0x8654, 0x8e47, 0x9375, 0x9a2b, 0x4e5e, 0x5091, 0x6770, 0x6840,
+ 0x5109, 0x528d, 0x5292, 0x6aa2, 0x77bc, 0x9210, 0x9ed4, 0x52ab,
+ 0x602f, 0x8ff2, 0x5048, 0x61a9, 0x63ed, 0x64ca, 0x683c, 0x6a84,
+ 0x6fc0, 0x8188, 0x89a1, 0x9694, 0x5805, 0x727d, 0x72ac, 0x7504,
+ 0x7d79, 0x7e6d, 0x80a9, 0x898b, 0x8b74, 0x9063, 0x9d51, 0x6289,
+ 0x6c7a, 0x6f54, 0x7d50, 0x7f3a, 0x8a23, 0x517c, 0x614a, 0x7b9d,
+ 0x8b19, 0x9257, 0x938c, 0x4eac, 0x4fd3, 0x501e, 0x50be, 0x5106,
+ 0x52c1, 0x52cd, 0x537f, 0x5770, 0x5883, 0x5e9a, 0x5f91, 0x6176,
+ 0x61ac, 0x64ce, 0x656c, 0x666f, 0x66bb, 0x66f4, 0x6897, 0x6d87,
+ 0x7085, 0x70f1, 0x749f, 0x74a5, 0x74ca, 0x75d9, 0x786c, 0x78ec,
+ 0x7adf, 0x7af6, 0x7d45, 0x7d93, 0x8015, 0x803f, 0x811b, 0x8396,
+ 0x8b66, 0x8f15, 0x9015, 0x93e1, 0x9803, 0x9838, 0x9a5a, 0x9be8,
+ 0x4fc2, 0x5553, 0x583a, 0x5951, 0x5b63, 0x5c46, 0x60b8, 0x6212,
+ 0x6842, 0x68b0, 0x68e8, 0x6eaa, 0x754c, 0x7678, 0x78ce, 0x7a3d,
+ 0x7cfb, 0x7e6b, 0x7e7c, 0x8a08, 0x8aa1, 0x8c3f, 0x968e, 0x9dc4,
+ 0x53e4, 0x53e9, 0x544a, 0x5471, 0x56fa, 0x59d1, 0x5b64, 0x5c3b,
+ 0x5eab, 0x62f7, 0x6537, 0x6545, 0x6572, 0x66a0, 0x67af, 0x69c1,
+ 0x6cbd, 0x75fc, 0x7690, 0x777e, 0x7a3f, 0x7f94, 0x8003, 0x80a1,
+ 0x818f, 0x82e6, 0x82fd, 0x83f0, 0x85c1, 0x8831, 0x88b4, 0x8aa5,
+ 0xf903, 0x8f9c, 0x932e, 0x96c7, 0x9867, 0x9ad8, 0x9f13, 0x54ed,
+ 0x659b, 0x66f2, 0x688f, 0x7a40, 0x8c37, 0x9d60, 0x56f0, 0x5764,
+ 0x5d11, 0x6606, 0x68b1, 0x68cd, 0x6efe, 0x7428, 0x889e, 0x9be4,
+ 0x6c68, 0xf904, 0x9aa8, 0x4f9b, 0x516c, 0x5171, 0x529f, 0x5b54,
+ 0x5de5, 0x6050, 0x606d, 0x62f1, 0x63a7, 0x653b, 0x73d9, 0x7a7a,
+ 0x86a3, 0x8ca2, 0x978f, 0x4e32, 0x5be1, 0x6208, 0x679c, 0x74dc,
+ 0x79d1, 0x83d3, 0x8a87, 0x8ab2, 0x8de8, 0x904e, 0x934b, 0x9846,
+ 0x5ed3, 0x69e8, 0x85ff, 0x90ed, 0xf905, 0x51a0, 0x5b98, 0x5bec,
+ 0x6163, 0x68fa, 0x6b3e, 0x704c, 0x742f, 0x74d8, 0x7ba1, 0x7f50,
+ 0x83c5, 0x89c0, 0x8cab, 0x95dc, 0x9928, 0x522e, 0x605d, 0x62ec,
+ 0x9002, 0x4f8a, 0x5149, 0x5321, 0x58d9, 0x5ee3, 0x66e0, 0x6d38,
+ 0x709a, 0x72c2, 0x73d6, 0x7b50, 0x80f1, 0x945b, 0x5366, 0x639b,
+ 0x7f6b, 0x4e56, 0x5080, 0x584a, 0x58de, 0x602a, 0x6127, 0x62d0,
+ 0x69d0, 0x9b41, 0x5b8f, 0x7d18, 0x80b1, 0x8f5f, 0x4ea4, 0x50d1,
+ 0x54ac, 0x55ac, 0x5b0c, 0x5da0, 0x5de7, 0x652a, 0x654e, 0x6821,
+ 0x6a4b, 0x72e1, 0x768e, 0x77ef, 0x7d5e, 0x7ff9, 0x81a0, 0x854e,
+ 0x86df, 0x8f03, 0x8f4e, 0x90ca, 0x9903, 0x9a55, 0x9bab, 0x4e18,
+ 0x4e45, 0x4e5d, 0x4ec7, 0x4ff1, 0x5177, 0x52fe, 0x5340, 0x53e3,
+ 0x53e5, 0x548e, 0x5614, 0x5775, 0x57a2, 0x5bc7, 0x5d87, 0x5ed0,
+ 0x61fc, 0x62d8, 0x6551, 0x67b8, 0x67e9, 0x69cb, 0x6b50, 0x6bc6,
+ 0x6bec, 0x6c42, 0x6e9d, 0x7078, 0x72d7, 0x7396, 0x7403, 0x77bf,
+ 0x77e9, 0x7a76, 0x7d7f, 0x8009, 0x81fc, 0x8205, 0x820a, 0x82df,
+ 0x8862, 0x8b33, 0x8cfc, 0x8ec0, 0x9011, 0x90b1, 0x9264, 0x92b6,
+ 0x99d2, 0x9a45, 0x9ce9, 0x9dd7, 0x9f9c, 0x570b, 0x5c40, 0x83ca,
+ 0x97a0, 0x97ab, 0x9eb4, 0x541b, 0x7a98, 0x7fa4, 0x88d9, 0x8ecd,
+ 0x90e1, 0x5800, 0x5c48, 0x6398, 0x7a9f, 0x5bae, 0x5f13, 0x7a79,
+ 0x7aae, 0x828e, 0x8eac, 0x5026, 0x5238, 0x52f8, 0x5377, 0x5708,
+ 0x62f3, 0x6372, 0x6b0a, 0x6dc3, 0x7737, 0x53a5, 0x7357, 0x8568,
+ 0x8e76, 0x95d5, 0x673a, 0x6ac3, 0x6f70, 0x8a6d, 0x8ecc, 0x994b,
+ 0xf906, 0x6677, 0x6b78, 0x8cb4, 0x9b3c, 0xf907, 0x53eb, 0x572d,
+ 0x594e, 0x63c6, 0x69fb, 0x73ea, 0x7845, 0x7aba, 0x7ac5, 0x7cfe,
+ 0x8475, 0x898f, 0x8d73, 0x9035, 0x95a8, 0x52fb, 0x5747, 0x7547,
+ 0x7b60, 0x83cc, 0x921e, 0xf908, 0x6a58, 0x514b, 0x524b, 0x5287,
+ 0x621f, 0x68d8, 0x6975, 0x9699, 0x50c5, 0x52a4, 0x52e4, 0x61c3,
+ 0x65a4, 0x6839, 0x69ff, 0x747e, 0x7b4b, 0x82b9, 0x83eb, 0x89b2,
+ 0x8b39, 0x8fd1, 0x9949, 0xf909, 0x4eca, 0x5997, 0x64d2, 0x6611,
+ 0x6a8e, 0x7434, 0x7981, 0x79bd, 0x82a9, 0x887e, 0x887f, 0x895f,
+ 0xf90a, 0x9326, 0x4f0b, 0x53ca, 0x6025, 0x6271, 0x6c72, 0x7d1a,
+ 0x7d66, 0x4e98, 0x5162, 0x77dc, 0x80af, 0x4f01, 0x4f0e, 0x5176,
+ 0x5180, 0x55dc, 0x5668, 0x573b, 0x57fa, 0x57fc, 0x5914, 0x5947,
+ 0x5993, 0x5bc4, 0x5c90, 0x5d0e, 0x5df1, 0x5e7e, 0x5fcc, 0x6280,
+ 0x65d7, 0x65e3, 0x671e, 0x671f, 0x675e, 0x68cb, 0x68c4, 0x6a5f,
+ 0x6b3a, 0x6c23, 0x6c7d, 0x6c82, 0x6dc7, 0x7398, 0x7426, 0x742a,
+ 0x7482, 0x74a3, 0x7578, 0x757f, 0x7881, 0x78ef, 0x7941, 0x7947,
+ 0x7948, 0x797a, 0x7b95, 0x7d00, 0x7dba, 0x7f88, 0x8006, 0x802d,
+ 0x808c, 0x8a18, 0x8b4f, 0x8c48, 0x8d77, 0x9321, 0x9324, 0x98e2,
+ 0x9951, 0x9a0e, 0x9a0f, 0x9a65, 0x9e92, 0x7dca, 0x4f76, 0x5409,
+ 0x62ee, 0x6854, 0x91d1, 0x55ab, 0x513a, 0xf90b, 0xf90c, 0x5a1c,
+ 0x61e6, 0xf90d, 0x62cf, 0x62ff, 0xf90e, 0xf90f, 0xf910, 0xf911,
+ 0xf912, 0xf913, 0x90a3, 0xf914, 0xf915, 0xf916, 0xf917, 0xf918,
+ 0x8afe, 0xf919, 0xf91a, 0xf91b, 0xf91c, 0x6696, 0xf91d, 0x7156,
+ 0xf91e, 0xf91f, 0x96e3, 0xf920, 0x634f, 0x637a, 0x5357, 0xf921,
+ 0x678f, 0x6960, 0x6e73, 0xf922, 0x7537, 0xf923, 0xf924, 0xf925,
+ 0x7d0d, 0xf926, 0xf927, 0x8872, 0x56ca, 0x5a18, 0xf928, 0xf929,
+ 0xf92a, 0xf92b, 0xf92c, 0x4e43, 0xf92d, 0x5167, 0x5948, 0x67f0,
+ 0x8010, 0xf92e, 0x5973, 0x5e74, 0x649a, 0x79ca, 0x5ff5, 0x606c,
+ 0x62c8, 0x637b, 0x5be7, 0x5bd7, 0x52aa, 0xf92f, 0x5974, 0x5f29,
+ 0x6012, 0xf930, 0xf931, 0xf932, 0x7459, 0xf933, 0xf934, 0xf935,
+ 0xf936, 0xf937, 0xf938, 0x99d1, 0xf939, 0xf93a, 0xf93b, 0xf93c,
+ 0xf93d, 0xf93e, 0xf93f, 0xf940, 0xf941, 0xf942, 0xf943, 0x6fc3,
+ 0xf944, 0xf945, 0x81bf, 0x8fb2, 0x60f1, 0xf946, 0xf947, 0x8166,
+ 0xf948, 0xf949, 0x5c3f, 0xf94a, 0xf94b, 0xf94c, 0xf94d, 0xf94e,
+ 0xf94f, 0xf950, 0xf951, 0x5ae9, 0x8a25, 0x677b, 0x7d10, 0xf952,
+ 0xf953, 0xf954, 0xf955, 0xf956, 0xf957, 0x80fd, 0xf958, 0xf959,
+ 0x5c3c, 0x6ce5, 0x533f, 0x6eba, 0x591a, 0x8336, 0x4e39, 0x4eb6,
+ 0x4f46, 0x55ae, 0x5718, 0x58c7, 0x5f56, 0x65b7, 0x65e6, 0x6a80,
+ 0x6bb5, 0x6e4d, 0x77ed, 0x7aef, 0x7c1e, 0x7dde, 0x86cb, 0x8892,
+ 0x9132, 0x935b, 0x64bb, 0x6fbe, 0x737a, 0x75b8, 0x9054, 0x5556,
+ 0x574d, 0x61ba, 0x64d4, 0x66c7, 0x6de1, 0x6e5b, 0x6f6d, 0x6fb9,
+ 0x75f0, 0x8043, 0x81bd, 0x8541, 0x8983, 0x8ac7, 0x8b5a, 0x931f,
+ 0x6c93, 0x7553, 0x7b54, 0x8e0f, 0x905d, 0x5510, 0x5802, 0x5858,
+ 0x5e62, 0x6207, 0x649e, 0x68e0, 0x7576, 0x7cd6, 0x87b3, 0x9ee8,
+ 0x4ee3, 0x5788, 0x576e, 0x5927, 0x5c0d, 0x5cb1, 0x5e36, 0x5f85,
+ 0x6234, 0x64e1, 0x73b3, 0x81fa, 0x888b, 0x8cb8, 0x968a, 0x9edb,
+ 0x5b85, 0x5fb7, 0x60b3, 0x5012, 0x5200, 0x5230, 0x5716, 0x5835,
+ 0x5857, 0x5c0e, 0x5c60, 0x5cf6, 0x5d8b, 0x5ea6, 0x5f92, 0x60bc,
+ 0x6311, 0x6389, 0x6417, 0x6843, 0x68f9, 0x6ac2, 0x6dd8, 0x6e21,
+ 0x6ed4, 0x6fe4, 0x71fe, 0x76dc, 0x7779, 0x79b1, 0x7a3b, 0x8404,
+ 0x89a9, 0x8ced, 0x8df3, 0x8e48, 0x9003, 0x9014, 0x9053, 0x90fd,
+ 0x934d, 0x9676, 0x97dc, 0x6bd2, 0x7006, 0x7258, 0x72a2, 0x7368,
+ 0x7763, 0x79bf, 0x7be4, 0x7e9b, 0x8b80, 0x58a9, 0x60c7, 0x6566,
+ 0x65fd, 0x66be, 0x6c8c, 0x711e, 0x71c9, 0x8c5a, 0x9813, 0x4e6d,
+ 0x7a81, 0x4edd, 0x51ac, 0x51cd, 0x52d5, 0x540c, 0x61a7, 0x6771,
+ 0x6850, 0x68df, 0x6d1e, 0x6f7c, 0x75bc, 0x77b3, 0x7ae5, 0x80f4,
+ 0x8463, 0x9285, 0x515c, 0x6597, 0x675c, 0x6793, 0x75d8, 0x7ac7,
+ 0x8373, 0xf95a, 0x8c46, 0x9017, 0x982d, 0x5c6f, 0x81c0, 0x829a,
+ 0x9041, 0x906f, 0x920d, 0x5f97, 0x5d9d, 0x6a59, 0x71c8, 0x767b,
+ 0x7b49, 0x85e4, 0x8b04, 0x9127, 0x9a30, 0x5587, 0x61f6, 0xf95b,
+ 0x7669, 0x7f85, 0x863f, 0x87ba, 0x88f8, 0x908f, 0xf95c, 0x6d1b,
+ 0x70d9, 0x73de, 0x7d61, 0x843d, 0xf95d, 0x916a, 0x99f1, 0xf95e,
+ 0x4e82, 0x5375, 0x6b04, 0x6b12, 0x703e, 0x721b, 0x862d, 0x9e1e,
+ 0x524c, 0x8fa3, 0x5d50, 0x64e5, 0x652c, 0x6b16, 0x6feb, 0x7c43,
+ 0x7e9c, 0x85cd, 0x8964, 0x89bd, 0x62c9, 0x81d8, 0x881f, 0x5eca,
+ 0x6717, 0x6d6a, 0x72fc, 0x7405, 0x746f, 0x8782, 0x90de, 0x4f86,
+ 0x5d0d, 0x5fa0, 0x840a, 0x51b7, 0x63a0, 0x7565, 0x4eae, 0x5006,
+ 0x5169, 0x51c9, 0x6881, 0x6a11, 0x7cae, 0x7cb1, 0x7ce7, 0x826f,
+ 0x8ad2, 0x8f1b, 0x91cf, 0x4fb6, 0x5137, 0x52f5, 0x5442, 0x5eec,
+ 0x616e, 0x623e, 0x65c5, 0x6ada, 0x6ffe, 0x792a, 0x85dc, 0x8823,
+ 0x95ad, 0x9a62, 0x9a6a, 0x9e97, 0x9ece, 0x529b, 0x66c6, 0x6b77,
+ 0x701d, 0x792b, 0x8f62, 0x9742, 0x6190, 0x6200, 0x6523, 0x6f23,
+ 0x7149, 0x7489, 0x7df4, 0x806f, 0x84ee, 0x8f26, 0x9023, 0x934a,
+ 0x51bd, 0x5217, 0x52a3, 0x6d0c, 0x70c8, 0x88c2, 0x5ec9, 0x6582,
+ 0x6bae, 0x6fc2, 0x7c3e, 0x7375, 0x4ee4, 0x4f36, 0x56f9, 0xf95f,
+ 0x5cba, 0x5dba, 0x601c, 0x73b2, 0x7b2d, 0x7f9a, 0x7fce, 0x8046,
+ 0x901e, 0x9234, 0x96f6, 0x9748, 0x9818, 0x9f61, 0x4f8b, 0x6fa7,
+ 0x79ae, 0x91b4, 0x96b7, 0x52de, 0xf960, 0x6488, 0x64c4, 0x6ad3,
+ 0x6f5e, 0x7018, 0x7210, 0x76e7, 0x8001, 0x8606, 0x865c, 0x8def,
+ 0x8f05, 0x9732, 0x9b6f, 0x9dfa, 0x9e75, 0x788c, 0x797f, 0x7da0,
+ 0x83c9, 0x9304, 0x9e7f, 0x9e93, 0x8ad6, 0x58df, 0x5f04, 0x6727,
+ 0x7027, 0x74cf, 0x7c60, 0x807e, 0x5121, 0x7028, 0x7262, 0x78ca,
+ 0x8cc2, 0x8cda, 0x8cf4, 0x96f7, 0x4e86, 0x50da, 0x5bee, 0x5ed6,
+ 0x6599, 0x71ce, 0x7642, 0x77ad, 0x804a, 0x84fc, 0x907c, 0x9b27,
+ 0x9f8d, 0x58d8, 0x5a41, 0x5c62, 0x6a13, 0x6dda, 0x6f0f, 0x763b,
+ 0x7d2f, 0x7e37, 0x851e, 0x8938, 0x93e4, 0x964b, 0x5289, 0x65d2,
+ 0x67f3, 0x69b4, 0x6d41, 0x6e9c, 0x700f, 0x7409, 0x7460, 0x7559,
+ 0x7624, 0x786b, 0x8b2c, 0x985e, 0x516d, 0x622e, 0x9678, 0x4f96,
+ 0x502b, 0x5d19, 0x6dea, 0x7db8, 0x8f2a, 0x5f8b, 0x6144, 0x6817,
+ 0xf961, 0x9686, 0x52d2, 0x808b, 0x51dc, 0x51cc, 0x695e, 0x7a1c,
+ 0x7dbe, 0x83f1, 0x9675, 0x4fda, 0x5229, 0x5398, 0x540f, 0x550e,
+ 0x5c65, 0x60a7, 0x674e, 0x68a8, 0x6d6c, 0x7281, 0x72f8, 0x7406,
+ 0x7483, 0xf962, 0x75e2, 0x7c6c, 0x7f79, 0x7fb8, 0x8389, 0x88cf,
+ 0x88e1, 0x91cc, 0x91d0, 0x96e2, 0x9bc9, 0x541d, 0x6f7e, 0x71d0,
+ 0x7498, 0x85fa, 0x8eaa, 0x96a3, 0x9c57, 0x9e9f, 0x6797, 0x6dcb,
+ 0x7433, 0x81e8, 0x9716, 0x782c, 0x7acb, 0x7b20, 0x7c92, 0x6469,
+ 0x746a, 0x75f2, 0x78bc, 0x78e8, 0x99ac, 0x9b54, 0x9ebb, 0x5bde,
+ 0x5e55, 0x6f20, 0x819c, 0x83ab, 0x9088, 0x4e07, 0x534d, 0x5a29,
+ 0x5dd2, 0x5f4e, 0x6162, 0x633d, 0x6669, 0x66fc, 0x6eff, 0x6f2b,
+ 0x7063, 0x779e, 0x842c, 0x8513, 0x883b, 0x8f13, 0x9945, 0x9c3b,
+ 0x551c, 0x62b9, 0x672b, 0x6cab, 0x8309, 0x896a, 0x977a, 0x4ea1,
+ 0x5984, 0x5fd8, 0x5fd9, 0x671b, 0x7db2, 0x7f54, 0x8292, 0x832b,
+ 0x83bd, 0x8f1e, 0x9099, 0x57cb, 0x59b9, 0x5a92, 0x5bd0, 0x6627,
+ 0x679a, 0x6885, 0x6bcf, 0x7164, 0x7f75, 0x8cb7, 0x8ce3, 0x9081,
+ 0x9b45, 0x8108, 0x8c8a, 0x964c, 0x9a40, 0x9ea5, 0x5b5f, 0x6c13,
+ 0x731b, 0x76f2, 0x76df, 0x840c, 0x51aa, 0x8993, 0x514d, 0x5195,
+ 0x52c9, 0x68c9, 0x6c94, 0x7704, 0x7720, 0x7dbf, 0x7dec, 0x9762,
+ 0x9eb5, 0x6ec5, 0x8511, 0x51a5, 0x540d, 0x547d, 0x660e, 0x669d,
+ 0x6927, 0x6e9f, 0x76bf, 0x7791, 0x8317, 0x84c2, 0x879f, 0x9169,
+ 0x9298, 0x9cf4, 0x8882, 0x4fae, 0x5192, 0x52df, 0x59c6, 0x5e3d,
+ 0x6155, 0x6478, 0x6479, 0x66ae, 0x67d0, 0x6a21, 0x6bcd, 0x6bdb,
+ 0x725f, 0x7261, 0x7441, 0x7738, 0x77db, 0x8017, 0x82bc, 0x8305,
+ 0x8b00, 0x8b28, 0x8c8c, 0x6728, 0x6c90, 0x7267, 0x76ee, 0x7766,
+ 0x7a46, 0x9da9, 0x6b7f, 0x6c92, 0x5922, 0x6726, 0x8499, 0x536f,
+ 0x5893, 0x5999, 0x5edf, 0x63cf, 0x6634, 0x6773, 0x6e3a, 0x732b,
+ 0x7ad7, 0x82d7, 0x9328, 0x52d9, 0x5deb, 0x61ae, 0x61cb, 0x620a,
+ 0x62c7, 0x64ab, 0x65e0, 0x6959, 0x6b66, 0x6bcb, 0x7121, 0x73f7,
+ 0x755d, 0x7e46, 0x821e, 0x8302, 0x856a, 0x8aa3, 0x8cbf, 0x9727,
+ 0x9d61, 0x58a8, 0x9ed8, 0x5011, 0x520e, 0x543b, 0x554f, 0x6587,
+ 0x6c76, 0x7d0a, 0x7d0b, 0x805e, 0x868a, 0x9580, 0x96ef, 0x52ff,
+ 0x6c95, 0x7269, 0x5473, 0x5a9a, 0x5c3e, 0x5d4b, 0x5f4c, 0x5fae,
+ 0x672a, 0x68b6, 0x6963, 0x6e3c, 0x6e44, 0x7709, 0x7c73, 0x7f8e,
+ 0x8587, 0x8b0e, 0x8ff7, 0x9761, 0x9ef4, 0x5cb7, 0x60b6, 0x610d,
+ 0x61ab, 0x654f, 0x65fb, 0x65fc, 0x6c11, 0x6cef, 0x739f, 0x73c9,
+ 0x7de1, 0x9594, 0x5bc6, 0x871c, 0x8b10, 0x525d, 0x535a, 0x62cd,
+ 0x640f, 0x64b2, 0x6734, 0x6a38, 0x6cca, 0x73c0, 0x749e, 0x7b94,
+ 0x7c95, 0x7e1b, 0x818a, 0x8236, 0x8584, 0x8feb, 0x96f9, 0x99c1,
+ 0x4f34, 0x534a, 0x53cd, 0x53db, 0x62cc, 0x642c, 0x6500, 0x6591,
+ 0x69c3, 0x6cee, 0x6f58, 0x73ed, 0x7554, 0x7622, 0x76e4, 0x76fc,
+ 0x78d0, 0x78fb, 0x792c, 0x7d46, 0x822c, 0x87e0, 0x8fd4, 0x9812,
+ 0x98ef, 0x52c3, 0x62d4, 0x64a5, 0x6e24, 0x6f51, 0x767c, 0x8dcb,
+ 0x91b1, 0x9262, 0x9aee, 0x9b43, 0x5023, 0x508d, 0x574a, 0x59a8,
+ 0x5c28, 0x5e47, 0x5f77, 0x623f, 0x653e, 0x65b9, 0x65c1, 0x6609,
+ 0x678b, 0x699c, 0x6ec2, 0x78c5, 0x7d21, 0x80aa, 0x8180, 0x822b,
+ 0x82b3, 0x84a1, 0x868c, 0x8a2a, 0x8b17, 0x90a6, 0x9632, 0x9f90,
+ 0x500d, 0x4ff3, 0xf963, 0x57f9, 0x5f98, 0x62dc, 0x6392, 0x676f,
+ 0x6e43, 0x7119, 0x76c3, 0x80cc, 0x80da, 0x88f4, 0x88f5, 0x8919,
+ 0x8ce0, 0x8f29, 0x914d, 0x966a, 0x4f2f, 0x4f70, 0x5e1b, 0x67cf,
+ 0x6822, 0x767d, 0x767e, 0x9b44, 0x5e61, 0x6a0a, 0x7169, 0x71d4,
+ 0x756a, 0xf964, 0x7e41, 0x8543, 0x85e9, 0x98dc, 0x4f10, 0x7b4f,
+ 0x7f70, 0x95a5, 0x51e1, 0x5e06, 0x68b5, 0x6c3e, 0x6c4e, 0x6cdb,
+ 0x72af, 0x7bc4, 0x8303, 0x6cd5, 0x743a, 0x50fb, 0x5288, 0x58c1,
+ 0x64d8, 0x6a97, 0x74a7, 0x7656, 0x78a7, 0x8617, 0x95e2, 0x9739,
+ 0xf965, 0x535e, 0x5f01, 0x8b8a, 0x8fa8, 0x8faf, 0x908a, 0x5225,
+ 0x77a5, 0x9c49, 0x9f08, 0x4e19, 0x5002, 0x5175, 0x5c5b, 0x5e77,
+ 0x661e, 0x663a, 0x67c4, 0x68c5, 0x70b3, 0x7501, 0x75c5, 0x79c9,
+ 0x7add, 0x8f27, 0x9920, 0x9a08, 0x4fdd, 0x5821, 0x5831, 0x5bf6,
+ 0x666e, 0x6b65, 0x6d11, 0x6e7a, 0x6f7d, 0x73e4, 0x752b, 0x83e9,
+ 0x88dc, 0x8913, 0x8b5c, 0x8f14, 0x4f0f, 0x50d5, 0x5310, 0x535c,
+ 0x5b93, 0x5fa9, 0x670d, 0x798f, 0x8179, 0x832f, 0x8514, 0x8907,
+ 0x8986, 0x8f39, 0x8f3b, 0x99a5, 0x9c12, 0x672c, 0x4e76, 0x4ff8,
+ 0x5949, 0x5c01, 0x5cef, 0x5cf0, 0x6367, 0x68d2, 0x70fd, 0x71a2,
+ 0x742b, 0x7e2b, 0x84ec, 0x8702, 0x9022, 0x92d2, 0x9cf3, 0x4e0d,
+ 0x4ed8, 0x4fef, 0x5085, 0x5256, 0x526f, 0x5426, 0x5490, 0x57e0,
+ 0x592b, 0x5a66, 0x5b5a, 0x5b75, 0x5bcc, 0x5e9c, 0xf966, 0x6276,
+ 0x6577, 0x65a7, 0x6d6e, 0x6ea5, 0x7236, 0x7b26, 0x7c3f, 0x7f36,
+ 0x8150, 0x8151, 0x819a, 0x8240, 0x8299, 0x83a9, 0x8a03, 0x8ca0,
+ 0x8ce6, 0x8cfb, 0x8d74, 0x8dba, 0x90e8, 0x91dc, 0x961c, 0x9644,
+ 0x99d9, 0x9ce7, 0x5317, 0x5206, 0x5429, 0x5674, 0x58b3, 0x5954,
+ 0x596e, 0x5fff, 0x61a4, 0x626e, 0x6610, 0x6c7e, 0x711a, 0x76c6,
+ 0x7c89, 0x7cde, 0x7d1b, 0x82ac, 0x8cc1, 0x96f0, 0xf967, 0x4f5b,
+ 0x5f17, 0x5f7f, 0x62c2, 0x5d29, 0x670b, 0x68da, 0x787c, 0x7e43,
+ 0x9d6c, 0x4e15, 0x5099, 0x5315, 0x532a, 0x5351, 0x5983, 0x5a62,
+ 0x5e87, 0x60b2, 0x618a, 0x6249, 0x6279, 0x6590, 0x6787, 0x69a7,
+ 0x6bd4, 0x6bd6, 0x6bd7, 0x6bd8, 0x6cb8, 0xf968, 0x7435, 0x75fa,
+ 0x7812, 0x7891, 0x79d5, 0x79d8, 0x7c83, 0x7dcb, 0x7fe1, 0x80a5,
+ 0x813e, 0x81c2, 0x83f2, 0x871a, 0x88e8, 0x8ab9, 0x8b6c, 0x8cbb,
+ 0x9119, 0x975e, 0x98db, 0x9f3b, 0x56ac, 0x5b2a, 0x5f6c, 0x658c,
+ 0x6ab3, 0x6baf, 0x6d5c, 0x6ff1, 0x7015, 0x725d, 0x73ad, 0x8ca7,
+ 0x8cd3, 0x983b, 0x6191, 0x6c37, 0x8058, 0x9a01, 0x4e4d, 0x4e8b,
+ 0x4e9b, 0x4ed5, 0x4f3a, 0x4f3c, 0x4f7f, 0x4fdf, 0x50ff, 0x53f2,
+ 0x53f8, 0x5506, 0x55e3, 0x56db, 0x58eb, 0x5962, 0x5a11, 0x5beb,
+ 0x5bfa, 0x5c04, 0x5df3, 0x5e2b, 0x5f99, 0x601d, 0x6368, 0x659c,
+ 0x65af, 0x67f6, 0x67fb, 0x68ad, 0x6b7b, 0x6c99, 0x6cd7, 0x6e23,
+ 0x7009, 0x7345, 0x7802, 0x793e, 0x7940, 0x7960, 0x79c1, 0x7be9,
+ 0x7d17, 0x7d72, 0x8086, 0x820d, 0x838e, 0x84d1, 0x86c7, 0x88df,
+ 0x8a50, 0x8a5e, 0x8b1d, 0x8cdc, 0x8d66, 0x8fad, 0x90aa, 0x98fc,
+ 0x99df, 0x9e9d, 0x524a, 0xf969, 0x6714, 0xf96a, 0x5098, 0x522a,
+ 0x5c71, 0x6563, 0x6c55, 0x73ca, 0x7523, 0x759d, 0x7b97, 0x849c,
+ 0x9178, 0x9730, 0x4e77, 0x6492, 0x6bba, 0x715e, 0x85a9, 0x4e09,
+ 0xf96b, 0x6749, 0x68ee, 0x6e17, 0x829f, 0x8518, 0x886b, 0x63f7,
+ 0x6f81, 0x9212, 0x98af, 0x4e0a, 0x50b7, 0x50cf, 0x511f, 0x5546,
+ 0x55aa, 0x5617, 0x5b40, 0x5c19, 0x5ce0, 0x5e38, 0x5e8a, 0x5ea0,
+ 0x5ec2, 0x60f3, 0x6851, 0x6a61, 0x6e58, 0x723d, 0x7240, 0x72c0,
+ 0x76f8, 0x7965, 0x7bb1, 0x7fd4, 0x88f3, 0x89f4, 0x8a73, 0x8c61,
+ 0x8cde, 0x971c, 0x585e, 0x74bd, 0x8cfd, 0x55c7, 0xf96c, 0x7a61,
+ 0x7d22, 0x8272, 0x7272, 0x751f, 0x7525, 0xf96d, 0x7b19, 0x5885,
+ 0x58fb, 0x5dbc, 0x5e8f, 0x5eb6, 0x5f90, 0x6055, 0x6292, 0x637f,
+ 0x654d, 0x6691, 0x66d9, 0x66f8, 0x6816, 0x68f2, 0x7280, 0x745e,
+ 0x7b6e, 0x7d6e, 0x7dd6, 0x7f72, 0x80e5, 0x8212, 0x85af, 0x897f,
+ 0x8a93, 0x901d, 0x92e4, 0x9ecd, 0x9f20, 0x5915, 0x596d, 0x5e2d,
+ 0x60dc, 0x6614, 0x6673, 0x6790, 0x6c50, 0x6dc5, 0x6f5f, 0x77f3,
+ 0x78a9, 0x84c6, 0x91cb, 0x932b, 0x4ed9, 0x50ca, 0x5148, 0x5584,
+ 0x5b0b, 0x5ba3, 0x6247, 0x657e, 0x65cb, 0x6e32, 0x717d, 0x7401,
+ 0x7444, 0x7487, 0x74bf, 0x766c, 0x79aa, 0x7dda, 0x7e55, 0x7fa8,
+ 0x817a, 0x81b3, 0x8239, 0x861a, 0x87ec, 0x8a75, 0x8de3, 0x9078,
+ 0x9291, 0x9425, 0x994d, 0x9bae, 0x5368, 0x5c51, 0x6954, 0x6cc4,
+ 0x6d29, 0x6e2b, 0x820c, 0x859b, 0x893b, 0x8a2d, 0x8aaa, 0x96ea,
+ 0x9f67, 0x5261, 0x66b9, 0x6bb2, 0x7e96, 0x87fe, 0x8d0d, 0x9583,
+ 0x965d, 0x651d, 0x6d89, 0x71ee, 0xf96e, 0x57ce, 0x59d3, 0x5bac,
+ 0x6027, 0x60fa, 0x6210, 0x661f, 0x665f, 0x7329, 0x73f9, 0x76db,
+ 0x7701, 0x7b6c, 0x8056, 0x8072, 0x8165, 0x8aa0, 0x9192, 0x4e16,
+ 0x52e2, 0x6b72, 0x6d17, 0x7a05, 0x7b39, 0x7d30, 0xf96f, 0x8cb0,
+ 0x53ec, 0x562f, 0x5851, 0x5bb5, 0x5c0f, 0x5c11, 0x5de2, 0x6240,
+ 0x6383, 0x6414, 0x662d, 0x68b3, 0x6cbc, 0x6d88, 0x6eaf, 0x701f,
+ 0x70a4, 0x71d2, 0x7526, 0x758f, 0x758e, 0x7619, 0x7b11, 0x7be0,
+ 0x7c2b, 0x7d20, 0x7d39, 0x852c, 0x856d, 0x8607, 0x8a34, 0x900d,
+ 0x9061, 0x90b5, 0x92b7, 0x97f6, 0x9a37, 0x4fd7, 0x5c6c, 0x675f,
+ 0x6d91, 0x7c9f, 0x7e8c, 0x8b16, 0x8d16, 0x901f, 0x5b6b, 0x5dfd,
+ 0x640d, 0x84c0, 0x905c, 0x98e1, 0x7387, 0x5b8b, 0x609a, 0x677e,
+ 0x6dde, 0x8a1f, 0x8aa6, 0x9001, 0x980c, 0x5237, 0xf970, 0x7051,
+ 0x788e, 0x9396, 0x8870, 0x91d7, 0x4fee, 0x53d7, 0x55fd, 0x56da,
+ 0x5782, 0x58fd, 0x5ac2, 0x5b88, 0x5cab, 0x5cc0, 0x5e25, 0x6101,
+ 0x620d, 0x624b, 0x6388, 0x641c, 0x6536, 0x6578, 0x6a39, 0x6b8a,
+ 0x6c34, 0x6d19, 0x6f31, 0x71e7, 0x72e9, 0x7378, 0x7407, 0x74b2,
+ 0x7626, 0x7761, 0x79c0, 0x7a57, 0x7aea, 0x7cb9, 0x7d8f, 0x7dac,
+ 0x7e61, 0x7f9e, 0x8129, 0x8331, 0x8490, 0x84da, 0x85ea, 0x8896,
+ 0x8ab0, 0x8b90, 0x8f38, 0x9042, 0x9083, 0x916c, 0x9296, 0x92b9,
+ 0x968b, 0x96a7, 0x96a8, 0x96d6, 0x9700, 0x9808, 0x9996, 0x9ad3,
+ 0x9b1a, 0x53d4, 0x587e, 0x5919, 0x5b70, 0x5bbf, 0x6dd1, 0x6f5a,
+ 0x719f, 0x7421, 0x74b9, 0x8085, 0x83fd, 0x5de1, 0x5f87, 0x5faa,
+ 0x6042, 0x65ec, 0x6812, 0x696f, 0x6a53, 0x6b89, 0x6d35, 0x6df3,
+ 0x73e3, 0x76fe, 0x77ac, 0x7b4d, 0x7d14, 0x8123, 0x821c, 0x8340,
+ 0x84f4, 0x8563, 0x8a62, 0x8ac4, 0x9187, 0x931e, 0x9806, 0x99b4,
+ 0x620c, 0x8853, 0x8ff0, 0x9265, 0x5d07, 0x5d27, 0x5d69, 0x745f,
+ 0x819d, 0x8768, 0x6fd5, 0x62fe, 0x7fd2, 0x8936, 0x8972, 0x4e1e,
+ 0x4e58, 0x50e7, 0x52dd, 0x5347, 0x627f, 0x6607, 0x7e69, 0x8805,
+ 0x965e, 0x4f8d, 0x5319, 0x5636, 0x59cb, 0x5aa4, 0x5c38, 0x5c4e,
+ 0x5c4d, 0x5e02, 0x5f11, 0x6043, 0x65bd, 0x662f, 0x6642, 0x67be,
+ 0x67f4, 0x731c, 0x77e2, 0x793a, 0x7fc5, 0x8494, 0x84cd, 0x8996,
+ 0x8a66, 0x8a69, 0x8ae1, 0x8c55, 0x8c7a, 0x57f4, 0x5bd4, 0x5f0f,
+ 0x606f, 0x62ed, 0x690d, 0x6b96, 0x6e5c, 0x7184, 0x7bd2, 0x8755,
+ 0x8b58, 0x8efe, 0x98df, 0x98fe, 0x4f38, 0x4f81, 0x4fe1, 0x547b,
+ 0x5a20, 0x5bb8, 0x613c, 0x65b0, 0x6668, 0x71fc, 0x7533, 0x795e,
+ 0x7d33, 0x814e, 0x81e3, 0x8398, 0x85aa, 0x85ce, 0x8703, 0x8a0a,
+ 0x8eab, 0x8f9b, 0xf971, 0x8fc5, 0x5931, 0x5ba4, 0x5be6, 0x6089,
+ 0x5be9, 0x5c0b, 0x5fc3, 0x6c81, 0xf972, 0x6df1, 0x700b, 0x751a,
+ 0x82af, 0x8af6, 0x4ec0, 0x5341, 0xf973, 0x96d9, 0x6c0f, 0x4e9e,
+ 0x4fc4, 0x5152, 0x555e, 0x5a25, 0x5ce8, 0x6211, 0x7259, 0x82bd,
+ 0x83aa, 0x86fe, 0x8859, 0x8a1d, 0x963f, 0x96c5, 0x9913, 0x9d09,
+ 0x9d5d, 0x580a, 0x5cb3, 0x5dbd, 0x5e44, 0x60e1, 0x6115, 0x63e1,
+ 0x6a02, 0x6e25, 0x9102, 0x9354, 0x984e, 0x9c10, 0x9f77, 0x5b89,
+ 0x5cb8, 0x6309, 0x664f, 0x6848, 0x773c, 0x96c1, 0x978d, 0x9854,
+ 0x9b9f, 0x65a1, 0x8b01, 0x8ecb, 0x95bc, 0x5535, 0x5ca9, 0x5dd6,
+ 0x5eb5, 0x6697, 0x764c, 0x83f4, 0x95c7, 0x58d3, 0x62bc, 0x72ce,
+ 0x9d28, 0x4ef0, 0x592e, 0x600f, 0x663b, 0x6b83, 0x79e7, 0x9d26,
+ 0x5393, 0x54c0, 0x57c3, 0x5d16, 0x611b, 0x66d6, 0x6daf, 0x788d,
+ 0x827e, 0x9698, 0x9744, 0x5384, 0x627c, 0x6396, 0x6db2, 0x7e0a,
+ 0x814b, 0x984d, 0x6afb, 0x7f4c, 0x9daf, 0x9e1a, 0x4e5f, 0x503b,
+ 0x51b6, 0x591c, 0x60f9, 0x63f6, 0x6930, 0x723a, 0x8036, 0xf974,
+ 0x91ce, 0x5f31, 0xf975, 0xf976, 0x7d04, 0x82e5, 0x846f, 0x84bb,
+ 0x85e5, 0x8e8d, 0xf977, 0x4f6f, 0xf978, 0xf979, 0x58e4, 0x5b43,
+ 0x6059, 0x63da, 0x6518, 0x656d, 0x6698, 0xf97a, 0x694a, 0x6a23,
+ 0x6d0b, 0x7001, 0x716c, 0x75d2, 0x760d, 0x79b3, 0x7a70, 0xf97b,
+ 0x7f8a, 0xf97c, 0x8944, 0xf97d, 0x8b93, 0x91c0, 0x967d, 0xf97e,
+ 0x990a, 0x5704, 0x5fa1, 0x65bc, 0x6f01, 0x7600, 0x79a6, 0x8a9e,
+ 0x99ad, 0x9b5a, 0x9f6c, 0x5104, 0x61b6, 0x6291, 0x6a8d, 0x81c6,
+ 0x5043, 0x5830, 0x5f66, 0x7109, 0x8a00, 0x8afa, 0x5b7c, 0x8616,
+ 0x4ffa, 0x513c, 0x56b4, 0x5944, 0x63a9, 0x6df9, 0x5daa, 0x696d,
+ 0x5186, 0x4e88, 0x4f59, 0xf97f, 0xf980, 0xf981, 0x5982, 0xf982,
+ 0xf983, 0x6b5f, 0x6c5d, 0xf984, 0x74b5, 0x7916, 0xf985, 0x8207,
+ 0x8245, 0x8339, 0x8f3f, 0x8f5d, 0xf986, 0x9918, 0xf987, 0xf988,
+ 0xf989, 0x4ea6, 0xf98a, 0x57df, 0x5f79, 0x6613, 0xf98b, 0xf98c,
+ 0x75ab, 0x7e79, 0x8b6f, 0xf98d, 0x9006, 0x9a5b, 0x56a5, 0x5827,
+ 0x59f8, 0x5a1f, 0x5bb4, 0xf98e, 0x5ef6, 0xf98f, 0xf990, 0x6350,
+ 0x633b, 0xf991, 0x693d, 0x6c87, 0x6cbf, 0x6d8e, 0x6d93, 0x6df5,
+ 0x6f14, 0xf992, 0x70df, 0x7136, 0x7159, 0xf993, 0x71c3, 0x71d5,
+ 0xf994, 0x784f, 0x786f, 0xf995, 0x7b75, 0x7de3, 0xf996, 0x7e2f,
+ 0xf997, 0x884d, 0x8edf, 0xf998, 0xf999, 0xf99a, 0x925b, 0xf99b,
+ 0x9cf6, 0xf99c, 0xf99d, 0xf99e, 0x6085, 0x6d85, 0xf99f, 0x71b1,
+ 0xf9a0, 0xf9a1, 0x95b1, 0x53ad, 0xf9a2, 0xf9a3, 0xf9a4, 0x67d3,
+ 0xf9a5, 0x708e, 0x7130, 0x7430, 0x8276, 0x82d2, 0xf9a6, 0x95bb,
+ 0x9ae5, 0x9e7d, 0x66c4, 0xf9a7, 0x71c1, 0x8449, 0xf9a8, 0xf9a9,
+ 0x584b, 0xf9aa, 0xf9ab, 0x5db8, 0x5f71, 0xf9ac, 0x6620, 0x668e,
+ 0x6979, 0x69ae, 0x6c38, 0x6cf3, 0x6e36, 0x6f41, 0x6fda, 0x701b,
+ 0x702f, 0x7150, 0x71df, 0x7370, 0xf9ad, 0x745b, 0xf9ae, 0x74d4,
+ 0x76c8, 0x7a4e, 0x7e93, 0xf9af, 0xf9b0, 0x82f1, 0x8a60, 0x8fce,
+ 0xf9b1, 0x9348, 0xf9b2, 0x9719, 0xf9b3, 0xf9b4, 0x4e42, 0x502a,
+ 0xf9b5, 0x5208, 0x53e1, 0x66f3, 0x6c6d, 0x6fca, 0x730a, 0x777f,
+ 0x7a62, 0x82ae, 0x85dd, 0x8602, 0xf9b6, 0x88d4, 0x8a63, 0x8b7d,
+ 0x8c6b, 0xf9b7, 0x92b3, 0xf9b8, 0x9713, 0x9810, 0x4e94, 0x4f0d,
+ 0x4fc9, 0x50b2, 0x5348, 0x543e, 0x5433, 0x55da, 0x5862, 0x58ba,
+ 0x5967, 0x5a1b, 0x5be4, 0x609f, 0xf9b9, 0x61ca, 0x6556, 0x65ff,
+ 0x6664, 0x68a7, 0x6c5a, 0x6fb3, 0x70cf, 0x71ac, 0x7352, 0x7b7d,
+ 0x8708, 0x8aa4, 0x9c32, 0x9f07, 0x5c4b, 0x6c83, 0x7344, 0x7389,
+ 0x923a, 0x6eab, 0x7465, 0x761f, 0x7a69, 0x7e15, 0x860a, 0x5140,
+ 0x58c5, 0x64c1, 0x74ee, 0x7515, 0x7670, 0x7fc1, 0x9095, 0x96cd,
+ 0x9954, 0x6e26, 0x74e6, 0x7aa9, 0x7aaa, 0x81e5, 0x86d9, 0x8778,
+ 0x8a1b, 0x5a49, 0x5b8c, 0x5b9b, 0x68a1, 0x6900, 0x6d63, 0x73a9,
+ 0x7413, 0x742c, 0x7897, 0x7de9, 0x7feb, 0x8118, 0x8155, 0x839e,
+ 0x8c4c, 0x962e, 0x9811, 0x66f0, 0x5f80, 0x65fa, 0x6789, 0x6c6a,
+ 0x738b, 0x502d, 0x5a03, 0x6b6a, 0x77ee, 0x5916, 0x5d6c, 0x5dcd,
+ 0x7325, 0x754f, 0xf9ba, 0xf9bb, 0x50e5, 0x51f9, 0x582f, 0x592d,
+ 0x5996, 0x59da, 0x5be5, 0xf9bc, 0xf9bd, 0x5da2, 0x62d7, 0x6416,
+ 0x6493, 0x64fe, 0xf9be, 0x66dc, 0xf9bf, 0x6a48, 0xf9c0, 0x71ff,
+ 0x7464, 0xf9c1, 0x7a88, 0x7aaf, 0x7e47, 0x7e5e, 0x8000, 0x8170,
+ 0xf9c2, 0x87ef, 0x8981, 0x8b20, 0x9059, 0xf9c3, 0x9080, 0x9952,
+ 0x617e, 0x6b32, 0x6d74, 0x7e1f, 0x8925, 0x8fb1, 0x4fd1, 0x50ad,
+ 0x5197, 0x52c7, 0x57c7, 0x5889, 0x5bb9, 0x5eb8, 0x6142, 0x6995,
+ 0x6d8c, 0x6e67, 0x6eb6, 0x7194, 0x7462, 0x7528, 0x752c, 0x8073,
+ 0x8338, 0x84c9, 0x8e0a, 0x9394, 0x93de, 0xf9c4, 0x4e8e, 0x4f51,
+ 0x5076, 0x512a, 0x53c8, 0x53cb, 0x53f3, 0x5b87, 0x5bd3, 0x5c24,
+ 0x611a, 0x6182, 0x65f4, 0x725b, 0x7397, 0x7440, 0x76c2, 0x7950,
+ 0x7991, 0x79b9, 0x7d06, 0x7fbd, 0x828b, 0x85d5, 0x865e, 0x8fc2,
+ 0x9047, 0x90f5, 0x91ea, 0x9685, 0x96e8, 0x96e9, 0x52d6, 0x5f67,
+ 0x65ed, 0x6631, 0x682f, 0x715c, 0x7a36, 0x90c1, 0x980a, 0x4e91,
+ 0xf9c5, 0x6a52, 0x6b9e, 0x6f90, 0x7189, 0x8018, 0x82b8, 0x8553,
+ 0x904b, 0x9695, 0x96f2, 0x97fb, 0x851a, 0x9b31, 0x4e90, 0x718a,
+ 0x96c4, 0x5143, 0x539f, 0x54e1, 0x5713, 0x5712, 0x57a3, 0x5a9b,
+ 0x5ac4, 0x5bc3, 0x6028, 0x613f, 0x63f4, 0x6c85, 0x6d39, 0x6e72,
+ 0x6e90, 0x7230, 0x733f, 0x7457, 0x82d1, 0x8881, 0x8f45, 0x9060,
+ 0xf9c6, 0x9662, 0x9858, 0x9d1b, 0x6708, 0x8d8a, 0x925e, 0x4f4d,
+ 0x5049, 0x50de, 0x5371, 0x570d, 0x59d4, 0x5a01, 0x5c09, 0x6170,
+ 0x6690, 0x6e2d, 0x7232, 0x744b, 0x7def, 0x80c3, 0x840e, 0x8466,
+ 0x853f, 0x875f, 0x885b, 0x8918, 0x8b02, 0x9055, 0x97cb, 0x9b4f,
+ 0x4e73, 0x4f91, 0x5112, 0x516a, 0xf9c7, 0x552f, 0x55a9, 0x5b7a,
+ 0x5ba5, 0x5e7c, 0x5e7d, 0x5ebe, 0x60a0, 0x60df, 0x6108, 0x6109,
+ 0x63c4, 0x6538, 0x6709, 0xf9c8, 0x67d4, 0x67da, 0xf9c9, 0x6961,
+ 0x6962, 0x6cb9, 0x6d27, 0xf9ca, 0x6e38, 0xf9cb, 0x6fe1, 0x7336,
+ 0x7337, 0xf9cc, 0x745c, 0x7531, 0xf9cd, 0x7652, 0xf9ce, 0xf9cf,
+ 0x7dad, 0x81fe, 0x8438, 0x88d5, 0x8a98, 0x8adb, 0x8aed, 0x8e30,
+ 0x8e42, 0x904a, 0x903e, 0x907a, 0x9149, 0x91c9, 0x936e, 0xf9d0,
+ 0xf9d1, 0x5809, 0xf9d2, 0x6bd3, 0x8089, 0x80b2, 0xf9d3, 0xf9d4,
+ 0x5141, 0x596b, 0x5c39, 0xf9d5, 0xf9d6, 0x6f64, 0x73a7, 0x80e4,
+ 0x8d07, 0xf9d7, 0x9217, 0x958f, 0xf9d8, 0xf9d9, 0xf9da, 0xf9db,
+ 0x807f, 0x620e, 0x701c, 0x7d68, 0x878d, 0xf9dc, 0x57a0, 0x6069,
+ 0x6147, 0x6bb7, 0x8abe, 0x9280, 0x96b1, 0x4e59, 0x541f, 0x6deb,
+ 0x852d, 0x9670, 0x97f3, 0x98ee, 0x63d6, 0x6ce3, 0x9091, 0x51dd,
+ 0x61c9, 0x81ba, 0x9df9, 0x4f9d, 0x501a, 0x5100, 0x5b9c, 0x610f,
+ 0x61ff, 0x64ec, 0x6905, 0x6bc5, 0x7591, 0x77e3, 0x7fa9, 0x8264,
+ 0x858f, 0x87fb, 0x8863, 0x8abc, 0x8b70, 0x91ab, 0x4e8c, 0x4ee5,
+ 0x4f0a, 0xf9dd, 0xf9de, 0x5937, 0x59e8, 0xf9df, 0x5df2, 0x5f1b,
+ 0x5f5b, 0x6021, 0xf9e0, 0xf9e1, 0xf9e2, 0xf9e3, 0x723e, 0x73e5,
+ 0xf9e4, 0x7570, 0x75cd, 0xf9e5, 0x79fb, 0xf9e6, 0x800c, 0x8033,
+ 0x8084, 0x82e1, 0x8351, 0xf9e7, 0xf9e8, 0x8cbd, 0x8cb3, 0x9087,
+ 0xf9e9, 0xf9ea, 0x98f4, 0x990c, 0xf9eb, 0xf9ec, 0x7037, 0x76ca,
+ 0x7fca, 0x7fcc, 0x7ffc, 0x8b1a, 0x4eba, 0x4ec1, 0x5203, 0x5370,
+ 0xf9ed, 0x54bd, 0x56e0, 0x59fb, 0x5bc5, 0x5f15, 0x5fcd, 0x6e6e,
+ 0xf9ee, 0xf9ef, 0x7d6a, 0x8335, 0xf9f0, 0x8693, 0x8a8d, 0xf9f1,
+ 0x976d, 0x9777, 0xf9f2, 0xf9f3, 0x4e00, 0x4f5a, 0x4f7e, 0x58f9,
+ 0x65e5, 0x6ea2, 0x9038, 0x93b0, 0x99b9, 0x4efb, 0x58ec, 0x598a,
+ 0x59d9, 0x6041, 0xf9f4, 0xf9f5, 0x7a14, 0xf9f6, 0x834f, 0x8cc3,
+ 0x5165, 0x5344, 0xf9f7, 0xf9f8, 0xf9f9, 0x4ecd, 0x5269, 0x5b55,
+ 0x82bf, 0x4ed4, 0x523a, 0x54a8, 0x59c9, 0x59ff, 0x5b50, 0x5b57,
+ 0x5b5c, 0x6063, 0x6148, 0x6ecb, 0x7099, 0x716e, 0x7386, 0x74f7,
+ 0x75b5, 0x78c1, 0x7d2b, 0x8005, 0x81ea, 0x8328, 0x8517, 0x85c9,
+ 0x8aee, 0x8cc7, 0x96cc, 0x4f5c, 0x52fa, 0x56bc, 0x65ab, 0x6628,
+ 0x707c, 0x70b8, 0x7235, 0x7dbd, 0x828d, 0x914c, 0x96c0, 0x9d72,
+ 0x5b71, 0x68e7, 0x6b98, 0x6f7a, 0x76de, 0x5c91, 0x66ab, 0x6f5b,
+ 0x7bb4, 0x7c2a, 0x8836, 0x96dc, 0x4e08, 0x4ed7, 0x5320, 0x5834,
+ 0x58bb, 0x58ef, 0x596c, 0x5c07, 0x5e33, 0x5e84, 0x5f35, 0x638c,
+ 0x66b2, 0x6756, 0x6a1f, 0x6aa3, 0x6b0c, 0x6f3f, 0x7246, 0xf9fa,
+ 0x7350, 0x748b, 0x7ae0, 0x7ca7, 0x8178, 0x81df, 0x81e7, 0x838a,
+ 0x846c, 0x8523, 0x8594, 0x85cf, 0x88dd, 0x8d13, 0x91ac, 0x9577,
+ 0x969c, 0x518d, 0x54c9, 0x5728, 0x5bb0, 0x624d, 0x6750, 0x683d,
+ 0x6893, 0x6e3d, 0x6ed3, 0x707d, 0x7e21, 0x88c1, 0x8ca1, 0x8f09,
+ 0x9f4b, 0x9f4e, 0x722d, 0x7b8f, 0x8acd, 0x931a, 0x4f47, 0x4f4e,
+ 0x5132, 0x5480, 0x59d0, 0x5e95, 0x62b5, 0x6775, 0x696e, 0x6a17,
+ 0x6cae, 0x6e1a, 0x72d9, 0x732a, 0x75bd, 0x7bb8, 0x7d35, 0x82e7,
+ 0x83f9, 0x8457, 0x85f7, 0x8a5b, 0x8caf, 0x8e87, 0x9019, 0x90b8,
+ 0x96ce, 0x9f5f, 0x52e3, 0x540a, 0x5ae1, 0x5bc2, 0x6458, 0x6575,
+ 0x6ef4, 0x72c4, 0xf9fb, 0x7684, 0x7a4d, 0x7b1b, 0x7c4d, 0x7e3e,
+ 0x7fdf, 0x837b, 0x8b2b, 0x8cca, 0x8d64, 0x8de1, 0x8e5f, 0x8fea,
+ 0x8ff9, 0x9069, 0x93d1, 0x4f43, 0x4f7a, 0x50b3, 0x5168, 0x5178,
+ 0x524d, 0x526a, 0x5861, 0x587c, 0x5960, 0x5c08, 0x5c55, 0x5edb,
+ 0x609b, 0x6230, 0x6813, 0x6bbf, 0x6c08, 0x6fb1, 0x714e, 0x7420,
+ 0x7530, 0x7538, 0x7551, 0x7672, 0x7b4c, 0x7b8b, 0x7bad, 0x7bc6,
+ 0x7e8f, 0x8a6e, 0x8f3e, 0x8f49, 0x923f, 0x9293, 0x9322, 0x942b,
+ 0x96fb, 0x985a, 0x986b, 0x991e, 0x5207, 0x622a, 0x6298, 0x6d59,
+ 0x7664, 0x7aca, 0x7bc0, 0x7d76, 0x5360, 0x5cbe, 0x5e97, 0x6f38,
+ 0x70b9, 0x7c98, 0x9711, 0x9b8e, 0x9ede, 0x63a5, 0x647a, 0x8776,
+ 0x4e01, 0x4e95, 0x4ead, 0x505c, 0x5075, 0x5448, 0x59c3, 0x5b9a,
+ 0x5e40, 0x5ead, 0x5ef7, 0x5f81, 0x60c5, 0x633a, 0x653f, 0x6574,
+ 0x65cc, 0x6676, 0x6678, 0x67fe, 0x6968, 0x6a89, 0x6b63, 0x6c40,
+ 0x6dc0, 0x6de8, 0x6e1f, 0x6e5e, 0x701e, 0x70a1, 0x738e, 0x73fd,
+ 0x753a, 0x775b, 0x7887, 0x798e, 0x7a0b, 0x7a7d, 0x7cbe, 0x7d8e,
+ 0x8247, 0x8a02, 0x8aea, 0x8c9e, 0x912d, 0x914a, 0x91d8, 0x9266,
+ 0x92cc, 0x9320, 0x9706, 0x9756, 0x975c, 0x9802, 0x9f0e, 0x5236,
+ 0x5291, 0x557c, 0x5824, 0x5e1d, 0x5f1f, 0x608c, 0x63d0, 0x68af,
+ 0x6fdf, 0x796d, 0x7b2c, 0x81cd, 0x85ba, 0x88fd, 0x8af8, 0x8e44,
+ 0x918d, 0x9664, 0x969b, 0x973d, 0x984c, 0x9f4a, 0x4fce, 0x5146,
+ 0x51cb, 0x52a9, 0x5632, 0x5f14, 0x5f6b, 0x63aa, 0x64cd, 0x65e9,
+ 0x6641, 0x66fa, 0x66f9, 0x671d, 0x689d, 0x68d7, 0x69fd, 0x6f15,
+ 0x6f6e, 0x7167, 0x71e5, 0x722a, 0x74aa, 0x773a, 0x7956, 0x795a,
+ 0x79df, 0x7a20, 0x7a95, 0x7c97, 0x7cdf, 0x7d44, 0x7e70, 0x8087,
+ 0x85fb, 0x86a4, 0x8a54, 0x8abf, 0x8d99, 0x8e81, 0x9020, 0x906d,
+ 0x91e3, 0x963b, 0x96d5, 0x9ce5, 0x65cf, 0x7c07, 0x8db3, 0x93c3,
+ 0x5b58, 0x5c0a, 0x5352, 0x62d9, 0x731d, 0x5027, 0x5b97, 0x5f9e,
+ 0x60b0, 0x616b, 0x68d5, 0x6dd9, 0x742e, 0x7a2e, 0x7d42, 0x7d9c,
+ 0x7e31, 0x816b, 0x8e2a, 0x8e35, 0x937e, 0x9418, 0x4f50, 0x5750,
+ 0x5de6, 0x5ea7, 0x632b, 0x7f6a, 0x4e3b, 0x4f4f, 0x4f8f, 0x505a,
+ 0x59dd, 0x80c4, 0x546a, 0x5468, 0x55fe, 0x594f, 0x5b99, 0x5dde,
+ 0x5eda, 0x665d, 0x6731, 0x67f1, 0x682a, 0x6ce8, 0x6d32, 0x6e4a,
+ 0x6f8d, 0x70b7, 0x73e0, 0x7587, 0x7c4c, 0x7d02, 0x7d2c, 0x7da2,
+ 0x821f, 0x86db, 0x8a3b, 0x8a85, 0x8d70, 0x8e8a, 0x8f33, 0x9031,
+ 0x914e, 0x9152, 0x9444, 0x99d0, 0x7af9, 0x7ca5, 0x4fca, 0x5101,
+ 0x51c6, 0x57c8, 0x5bef, 0x5cfb, 0x6659, 0x6a3d, 0x6d5a, 0x6e96,
+ 0x6fec, 0x710c, 0x756f, 0x7ae3, 0x8822, 0x9021, 0x9075, 0x96cb,
+ 0x99ff, 0x8301, 0x4e2d, 0x4ef2, 0x8846, 0x91cd, 0x537d, 0x6adb,
+ 0x696b, 0x6c41, 0x847a, 0x589e, 0x618e, 0x66fe, 0x62ef, 0x70dd,
+ 0x7511, 0x75c7, 0x7e52, 0x84b8, 0x8b49, 0x8d08, 0x4e4b, 0x53ea,
+ 0x54ab, 0x5730, 0x5740, 0x5fd7, 0x6301, 0x6307, 0x646f, 0x652f,
+ 0x65e8, 0x667a, 0x679d, 0x67b3, 0x6b62, 0x6c60, 0x6c9a, 0x6f2c,
+ 0x77e5, 0x7825, 0x7949, 0x7957, 0x7d19, 0x80a2, 0x8102, 0x81f3,
+ 0x829d, 0x82b7, 0x8718, 0x8a8c, 0xf9fc, 0x8d04, 0x8dbe, 0x9072,
+ 0x76f4, 0x7a19, 0x7a37, 0x7e54, 0x8077, 0x5507, 0x55d4, 0x5875,
+ 0x632f, 0x6422, 0x6649, 0x664b, 0x686d, 0x699b, 0x6b84, 0x6d25,
+ 0x6eb1, 0x73cd, 0x7468, 0x74a1, 0x755b, 0x75b9, 0x76e1, 0x771e,
+ 0x778b, 0x79e6, 0x7e09, 0x7e1d, 0x81fb, 0x852f, 0x8897, 0x8a3a,
+ 0x8cd1, 0x8eeb, 0x8fb0, 0x9032, 0x93ad, 0x9663, 0x9673, 0x9707,
+ 0x4f84, 0x53f1, 0x59ea, 0x5ac9, 0x5e19, 0x684e, 0x74c6, 0x75be,
+ 0x79e9, 0x7a92, 0x81a3, 0x86ed, 0x8cea, 0x8dcc, 0x8fed, 0x659f,
+ 0x6715, 0xf9fd, 0x57f7, 0x6f57, 0x7ddd, 0x8f2f, 0x93f6, 0x96c6,
+ 0x5fb5, 0x61f2, 0x6f84, 0x4e14, 0x4f98, 0x501f, 0x53c9, 0x55df,
+ 0x5d6f, 0x5dee, 0x6b21, 0x6b64, 0x78cb, 0x7b9a, 0xf9fe, 0x8e49,
+ 0x8eca, 0x906e, 0x6349, 0x643e, 0x7740, 0x7a84, 0x932f, 0x947f,
+ 0x9f6a, 0x64b0, 0x6faf, 0x71e6, 0x74a8, 0x74da, 0x7ac4, 0x7c12,
+ 0x7e82, 0x7cb2, 0x7e98, 0x8b9a, 0x8d0a, 0x947d, 0x9910, 0x994c,
+ 0x5239, 0x5bdf, 0x64e6, 0x672d, 0x7d2e, 0x50ed, 0x53c3, 0x5879,
+ 0x6158, 0x6159, 0x61fa, 0x65ac, 0x7ad9, 0x8b92, 0x8b96, 0x5009,
+ 0x5021, 0x5275, 0x5531, 0x5a3c, 0x5ee0, 0x5f70, 0x6134, 0x655e,
+ 0x660c, 0x6636, 0x66a2, 0x69cd, 0x6ec4, 0x6f32, 0x7316, 0x7621,
+ 0x7a93, 0x8139, 0x8259, 0x83d6, 0x84bc, 0x50b5, 0x57f0, 0x5bc0,
+ 0x5be8, 0x5f69, 0x63a1, 0x7826, 0x7db5, 0x83dc, 0x8521, 0x91c7,
+ 0x91f5, 0x518a, 0x67f5, 0x7b56, 0x8cac, 0x51c4, 0x59bb, 0x60bd,
+ 0x8655, 0x501c, 0xf9ff, 0x5254, 0x5c3a, 0x617d, 0x621a, 0x62d3,
+ 0x64f2, 0x65a5, 0x6ecc, 0x7620, 0x810a, 0x8e60, 0x965f, 0x96bb,
+ 0x4edf, 0x5343, 0x5598, 0x5929, 0x5ddd, 0x64c5, 0x6cc9, 0x6dfa,
+ 0x7394, 0x7a7f, 0x821b, 0x85a6, 0x8ce4, 0x8e10, 0x9077, 0x91e7,
+ 0x95e1, 0x9621, 0x97c6, 0x51f8, 0x54f2, 0x5586, 0x5fb9, 0x64a4,
+ 0x6f88, 0x7db4, 0x8f1f, 0x8f4d, 0x9435, 0x50c9, 0x5c16, 0x6cbe,
+ 0x6dfb, 0x751b, 0x77bb, 0x7c3d, 0x7c64, 0x8a79, 0x8ac2, 0x581e,
+ 0x59be, 0x5e16, 0x6377, 0x7252, 0x758a, 0x776b, 0x8adc, 0x8cbc,
+ 0x8f12, 0x5ef3, 0x6674, 0x6df8, 0x807d, 0x83c1, 0x8acb, 0x9751,
+ 0x9bd6, 0xfa00, 0x5243, 0x66ff, 0x6d95, 0x6eef, 0x7de0, 0x8ae6,
+ 0x902e, 0x905e, 0x9ad4, 0x521d, 0x527f, 0x54e8, 0x6194, 0x6284,
+ 0x62db, 0x68a2, 0x6912, 0x695a, 0x6a35, 0x7092, 0x7126, 0x785d,
+ 0x7901, 0x790e, 0x79d2, 0x7a0d, 0x8096, 0x8278, 0x82d5, 0x8349,
+ 0x8549, 0x8c82, 0x8d85, 0x9162, 0x918b, 0x91ae, 0x4fc3, 0x56d1,
+ 0x71ed, 0x77d7, 0x8700, 0x89f8, 0x5bf8, 0x5fd6, 0x6751, 0x90a8,
+ 0x53e2, 0x585a, 0x5bf5, 0x60a4, 0x6181, 0x6460, 0x7e3d, 0x8070,
+ 0x8525, 0x9283, 0x64ae, 0x50ac, 0x5d14, 0x6700, 0x589c, 0x62bd,
+ 0x63a8, 0x690e, 0x6978, 0x6a1e, 0x6e6b, 0x76ba, 0x79cb, 0x82bb,
+ 0x8429, 0x8acf, 0x8da8, 0x8ffd, 0x9112, 0x914b, 0x919c, 0x9310,
+ 0x9318, 0x939a, 0x96db, 0x9a36, 0x9c0d, 0x4e11, 0x755c, 0x795d,
+ 0x7afa, 0x7b51, 0x7bc9, 0x7e2e, 0x84c4, 0x8e59, 0x8e74, 0x8ef8,
+ 0x9010, 0x6625, 0x693f, 0x7443, 0x51fa, 0x672e, 0x9edc, 0x5145,
+ 0x5fe0, 0x6c96, 0x87f2, 0x885d, 0x8877, 0x60b4, 0x81b5, 0x8403,
+ 0x8d05, 0x53d6, 0x5439, 0x5634, 0x5a36, 0x5c31, 0x708a, 0x7fe0,
+ 0x805a, 0x8106, 0x81ed, 0x8da3, 0x9189, 0x9a5f, 0x9df2, 0x5074,
+ 0x4ec4, 0x53a0, 0x60fb, 0x6e2c, 0x5c64, 0x4f88, 0x5024, 0x55e4,
+ 0x5cd9, 0x5e5f, 0x6065, 0x6894, 0x6cbb, 0x6dc4, 0x71be, 0x75d4,
+ 0x75f4, 0x7661, 0x7a1a, 0x7a49, 0x7dc7, 0x7dfb, 0x7f6e, 0x81f4,
+ 0x86a9, 0x8f1c, 0x96c9, 0x99b3, 0x9f52, 0x5247, 0x52c5, 0x98ed,
+ 0x89aa, 0x4e03, 0x67d2, 0x6f06, 0x4fb5, 0x5be2, 0x6795, 0x6c88,
+ 0x6d78, 0x741b, 0x7827, 0x91dd, 0x937c, 0x87c4, 0x79e4, 0x7a31,
+ 0x5feb, 0x4ed6, 0x54a4, 0x553e, 0x58ae, 0x59a5, 0x60f0, 0x6253,
+ 0x62d6, 0x6736, 0x6955, 0x8235, 0x9640, 0x99b1, 0x99dd, 0x502c,
+ 0x5353, 0x5544, 0x577c, 0xfa01, 0x6258, 0xfa02, 0x64e2, 0x666b,
+ 0x67dd, 0x6fc1, 0x6fef, 0x7422, 0x7438, 0x8a17, 0x9438, 0x5451,
+ 0x5606, 0x5766, 0x5f48, 0x619a, 0x6b4e, 0x7058, 0x70ad, 0x7dbb,
+ 0x8a95, 0x596a, 0x812b, 0x63a2, 0x7708, 0x803d, 0x8caa, 0x5854,
+ 0x642d, 0x69bb, 0x5b95, 0x5e11, 0x6e6f, 0xfa03, 0x8569, 0x514c,
+ 0x53f0, 0x592a, 0x6020, 0x614b, 0x6b86, 0x6c70, 0x6cf0, 0x7b1e,
+ 0x80ce, 0x82d4, 0x8dc6, 0x90b0, 0x98b1, 0xfa04, 0x64c7, 0x6fa4,
+ 0x6491, 0x6504, 0x514e, 0x5410, 0x571f, 0x8a0e, 0x615f, 0x6876,
+ 0xfa05, 0x75db, 0x7b52, 0x7d71, 0x901a, 0x5806, 0x69cc, 0x817f,
+ 0x892a, 0x9000, 0x9839, 0x5078, 0x5957, 0x59ac, 0x6295, 0x900f,
+ 0x9b2a, 0x615d, 0x7279, 0x95d6, 0x5761, 0x5a46, 0x5df4, 0x628a,
+ 0x64ad, 0x64fa, 0x6777, 0x6ce2, 0x6d3e, 0x722c, 0x7436, 0x7834,
+ 0x7f77, 0x82ad, 0x8ddb, 0x9817, 0x5224, 0x5742, 0x677f, 0x7248,
+ 0x74e3, 0x8ca9, 0x8fa6, 0x9211, 0x962a, 0x516b, 0x53ed, 0x634c,
+ 0x4f69, 0x5504, 0x6096, 0x6557, 0x6c9b, 0x6d7f, 0x724c, 0x72fd,
+ 0x7a17, 0x8987, 0x8c9d, 0x5f6d, 0x6f8e, 0x70f9, 0x81a8, 0x610e,
+ 0x4fbf, 0x504f, 0x6241, 0x7247, 0x7bc7, 0x7de8, 0x7fe9, 0x904d,
+ 0x97ad, 0x9a19, 0x8cb6, 0x576a, 0x5e73, 0x67b0, 0x840d, 0x8a55,
+ 0x5420, 0x5b16, 0x5e63, 0x5ee2, 0x5f0a, 0x6583, 0x80ba, 0x853d,
+ 0x9589, 0x965b, 0x4f48, 0x5305, 0x530d, 0x530f, 0x5486, 0x54fa,
+ 0x5703, 0x5e03, 0x6016, 0x629b, 0x62b1, 0x6355, 0xfa06, 0x6ce1,
+ 0x6d66, 0x75b1, 0x7832, 0x80de, 0x812f, 0x82de, 0x8461, 0x84b2,
+ 0x888d, 0x8912, 0x900b, 0x92ea, 0x98fd, 0x9b91, 0x5e45, 0x66b4,
+ 0x66dd, 0x7011, 0x7206, 0xfa07, 0x4ff5, 0x527d, 0x5f6a, 0x6153,
+ 0x6753, 0x6a19, 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8c79, 0x98c7,
+ 0x98c4, 0x9a43, 0x54c1, 0x7a1f, 0x6953, 0x8af7, 0x8c4a, 0x98a8,
+ 0x99ae, 0x5f7c, 0x62ab, 0x75b2, 0x76ae, 0x88ab, 0x907f, 0x9642,
+ 0x5339, 0x5f3c, 0x5fc5, 0x6ccc, 0x73cc, 0x7562, 0x758b, 0x7b46,
+ 0x82fe, 0x999d, 0x4e4f, 0x903c, 0x4e0b, 0x4f55, 0x53a6, 0x590f,
+ 0x5ec8, 0x6630, 0x6cb3, 0x7455, 0x8377, 0x8766, 0x8cc0, 0x9050,
+ 0x971e, 0x9c15, 0x58d1, 0x5b78, 0x8650, 0x8b14, 0x9db4, 0x5bd2,
+ 0x6068, 0x608d, 0x65f1, 0x6c57, 0x6f22, 0x6fa3, 0x701a, 0x7f55,
+ 0x7ff0, 0x9591, 0x9592, 0x9650, 0x97d3, 0x5272, 0x8f44, 0x51fd,
+ 0x542b, 0x54b8, 0x5563, 0x558a, 0x6abb, 0x6db5, 0x7dd8, 0x8266,
+ 0x929c, 0x9677, 0x9e79, 0x5408, 0x54c8, 0x76d2, 0x86e4, 0x95a4,
+ 0x95d4, 0x965c, 0x4ea2, 0x4f09, 0x59ee, 0x5ae6, 0x5df7, 0x6052,
+ 0x6297, 0x676d, 0x6841, 0x6c86, 0x6e2f, 0x7f38, 0x809b, 0x822a,
+ 0xfa08, 0xfa09, 0x9805, 0x4ea5, 0x5055, 0x54b3, 0x5793, 0x595a,
+ 0x5b69, 0x5bb3, 0x61c8, 0x6977, 0x6d77, 0x7023, 0x87f9, 0x89e3,
+ 0x8a72, 0x8ae7, 0x9082, 0x99ed, 0x9ab8, 0x52be, 0x6838, 0x5016,
+ 0x5e78, 0x674f, 0x8347, 0x884c, 0x4eab, 0x5411, 0x56ae, 0x73e6,
+ 0x9115, 0x97ff, 0x9909, 0x9957, 0x9999, 0x5653, 0x589f, 0x865b,
+ 0x8a31, 0x61b2, 0x6af6, 0x737b, 0x8ed2, 0x6b47, 0x96aa, 0x9a57,
+ 0x5955, 0x7200, 0x8d6b, 0x9769, 0x4fd4, 0x5cf4, 0x5f26, 0x61f8,
+ 0x665b, 0x6ceb, 0x70ab, 0x7384, 0x73b9, 0x73fe, 0x7729, 0x774d,
+ 0x7d43, 0x7d62, 0x7e23, 0x8237, 0x8852, 0xfa0a, 0x8ce2, 0x9249,
+ 0x986f, 0x5b51, 0x7a74, 0x8840, 0x9801, 0x5acc, 0x4fe0, 0x5354,
+ 0x593e, 0x5cfd, 0x633e, 0x6d79, 0x72f9, 0x8105, 0x8107, 0x83a2,
+ 0x92cf, 0x9830, 0x4ea8, 0x5144, 0x5211, 0x578b, 0x5f62, 0x6cc2,
+ 0x6ece, 0x7005, 0x7050, 0x70af, 0x7192, 0x73e9, 0x7469, 0x834a,
+ 0x87a2, 0x8861, 0x9008, 0x90a2, 0x93a3, 0x99a8, 0x516e, 0x5f57,
+ 0x60e0, 0x6167, 0x66b3, 0x8559, 0x8e4a, 0x91af, 0x978b, 0x4e4e,
+ 0x4e92, 0x547c, 0x58d5, 0x58fa, 0x597d, 0x5cb5, 0x5f27, 0x6236,
+ 0x6248, 0x660a, 0x6667, 0x6beb, 0x6d69, 0x6dcf, 0x6e56, 0x6ef8,
+ 0x6f94, 0x6fe0, 0x6fe9, 0x705d, 0x72d0, 0x7425, 0x745a, 0x74e0,
+ 0x7693, 0x795c, 0x7cca, 0x7e1e, 0x80e1, 0x82a6, 0x846b, 0x84bf,
+ 0x864e, 0x865f, 0x8774, 0x8b77, 0x8c6a, 0x93ac, 0x9800, 0x9865,
+ 0x60d1, 0x6216, 0x9177, 0x5a5a, 0x660f, 0x6df7, 0x6e3e, 0x743f,
+ 0x9b42, 0x5ffd, 0x60da, 0x7b0f, 0x54c4, 0x5f18, 0x6c5e, 0x6cd3,
+ 0x6d2a, 0x70d8, 0x7d05, 0x8679, 0x8a0c, 0x9d3b, 0x5316, 0x548c,
+ 0x5b05, 0x6a3a, 0x706b, 0x7575, 0x798d, 0x79be, 0x82b1, 0x83ef,
+ 0x8a71, 0x8b41, 0x8ca8, 0x9774, 0xfa0b, 0x64f4, 0x652b, 0x78ba,
+ 0x78bb, 0x7a6b, 0x4e38, 0x559a, 0x5950, 0x5ba6, 0x5e7b, 0x60a3,
+ 0x63db, 0x6b61, 0x6665, 0x6853, 0x6e19, 0x7165, 0x74b0, 0x7d08,
+ 0x9084, 0x9a69, 0x9c25, 0x6d3b, 0x6ed1, 0x733e, 0x8c41, 0x95ca,
+ 0x51f0, 0x5e4c, 0x5fa8, 0x604d, 0x60f6, 0x6130, 0x614c, 0x6643,
+ 0x6644, 0x69a5, 0x6cc1, 0x6e5f, 0x6ec9, 0x6f62, 0x714c, 0x749c,
+ 0x7687, 0x7bc1, 0x7c27, 0x8352, 0x8757, 0x9051, 0x968d, 0x9ec3,
+ 0x532f, 0x56de, 0x5efb, 0x5f8a, 0x6062, 0x6094, 0x61f7, 0x6666,
+ 0x6703, 0x6a9c, 0x6dee, 0x6fae, 0x7070, 0x736a, 0x7e6a, 0x81be,
+ 0x8334, 0x86d4, 0x8aa8, 0x8cc4, 0x5283, 0x7372, 0x5b96, 0x6a6b,
+ 0x9404, 0x54ee, 0x5686, 0x5b5d, 0x6548, 0x6585, 0x66c9, 0x689f,
+ 0x6d8d, 0x6dc6, 0x723b, 0x80b4, 0x9175, 0x9a4d, 0x4faf, 0x5019,
+ 0x539a, 0x540e, 0x543c, 0x5589, 0x55c5, 0x5e3f, 0x5f8c, 0x673d,
+ 0x7166, 0x73dd, 0x9005, 0x52db, 0x52f3, 0x5864, 0x58ce, 0x7104,
+ 0x718f, 0x71fb, 0x85b0, 0x8a13, 0x6688, 0x85a8, 0x55a7, 0x6684,
+ 0x714a, 0x8431, 0x5349, 0x5599, 0x6bc1, 0x5f59, 0x5fbd, 0x63ee,
+ 0x6689, 0x7147, 0x8af1, 0x8f1d, 0x9ebe, 0x4f11, 0x643a, 0x70cb,
+ 0x7566, 0x8667, 0x6064, 0x8b4e, 0x9df8, 0x5147, 0x51f6, 0x5308,
+ 0x6d36, 0x80f8, 0x9ed1, 0x6615, 0x6b23, 0x7098, 0x75d5, 0x5403,
+ 0x5c79, 0x7d07, 0x8a16, 0x6b20, 0x6b3d, 0x6b46, 0x5438, 0x6070,
+ 0x6d3d, 0x7fd5, 0x8208, 0x50d6, 0x51de, 0x559c, 0x566b, 0x56cd,
+ 0x59ec, 0x5b09, 0x5e0c, 0x6199, 0x6198, 0x6231, 0x665e, 0x66e6,
+ 0x7199, 0x71b9, 0x71ba, 0x72a7, 0x79a7, 0x7a00, 0x7fb2, 0x8a70
+};
+
+/* Map Table including unicode to ksc5601 hanja */
+static const struct map unicode_to_ksc5601_hanja[4888]=
+{
+ {0x4e00, 0x6c69}, {0x4e01, 0x6f4b}, {0x4e03, 0x7652},
+ {0x4e07, 0x5832}, {0x4e08, 0x6d5b}, {0x4e09, 0x5f32},
+ {0x4e0a, 0x5f3e}, {0x4e0b, 0x793b}, {0x4e0d, 0x5c74},
+ {0x4e11, 0x7564}, {0x4e14, 0x7326}, {0x4e15, 0x5d60},
+ {0x4e16, 0x6126}, {0x4e18, 0x4e78}, {0x4e19, 0x5c30},
+ {0x4e1e, 0x632a}, {0x4e2d, 0x7169}, {0x4e32, 0x4d7a},
+ {0x4e38, 0x7c2f}, {0x4e39, 0x5321}, {0x4e3b, 0x712b},
+ {0x4e42, 0x6751}, {0x4e43, 0x522c}, {0x4e45, 0x4e79},
+ {0x4e4b, 0x717d}, {0x4e4d, 0x5e3f}, {0x4e4e, 0x7b3a},
+ {0x4e4f, 0x7939}, {0x4e56, 0x4e52}, {0x4e58, 0x632b},
+ {0x4e59, 0x6b60}, {0x4e5d, 0x4e7a}, {0x4e5e, 0x4b77},
+ {0x4e5f, 0x6525}, {0x4e6b, 0x4a61}, {0x4e6d, 0x544c},
+ {0x4e73, 0x6a61}, {0x4e76, 0x5c63}, {0x4e77, 0x5f2d},
+ {0x4e7e, 0x4b6b}, {0x4e82, 0x552f}, {0x4e86, 0x5675},
+ {0x4e88, 0x6578}, {0x4e8b, 0x5e40}, {0x4e8c, 0x6c23},
+ {0x4e8e, 0x694d}, {0x4e90, 0x6a27}, {0x4e91, 0x6976},
+ {0x4e92, 0x7b3b}, {0x4e94, 0x6769}, {0x4e95, 0x6f4c},
+ {0x4e98, 0x5066}, {0x4e9b, 0x5e41}, {0x4e9e, 0x642c},
+ {0x4ea1, 0x584c}, {0x4ea2, 0x7971}, {0x4ea4, 0x4e5f},
+ {0x4ea5, 0x7a24}, {0x4ea6, 0x6632}, {0x4ea8, 0x7a7b},
+ {0x4eab, 0x7a3d}, {0x4eac, 0x4c48}, {0x4ead, 0x6f4d},
+ {0x4eae, 0x5555}, {0x4eb6, 0x5322}, {0x4eba, 0x6c51},
+ {0x4ec0, 0x6427}, {0x4ec1, 0x6c52}, {0x4ec4, 0x7631},
+ {0x4ec7, 0x4e7b}, {0x4eca, 0x5051}, {0x4ecb, 0x4b3f},
+ {0x4ecd, 0x6d24}, {0x4ed4, 0x6d28}, {0x4ed5, 0x5e42},
+ {0x4ed6, 0x7662}, {0x4ed7, 0x6d5c}, {0x4ed8, 0x5c75},
+ {0x4ed9, 0x6039}, {0x4edd, 0x544e}, {0x4edf, 0x7435},
+ {0x4ee3, 0x535b}, {0x4ee4, 0x5635}, {0x4ee5, 0x6c24},
+ {0x4ef0, 0x6466}, {0x4ef2, 0x716a}, {0x4ef6, 0x4b6c},
+ {0x4ef7, 0x4b40}, {0x4efb, 0x6c72}, {0x4f01, 0x506a},
+ {0x4f09, 0x7972}, {0x4f0a, 0x6c25}, {0x4f0b, 0x505f},
+ {0x4f0d, 0x676a}, {0x4f0e, 0x506b}, {0x4f0f, 0x5c51},
+ {0x4f10, 0x5b69}, {0x4f11, 0x7d4c}, {0x4f2f, 0x5b57},
+ {0x4f34, 0x5a61}, {0x4f36, 0x5636}, {0x4f38, 0x635f},
+ {0x4f3a, 0x5e43}, {0x4f3c, 0x5e44}, {0x4f3d, 0x4a21},
+ {0x4f43, 0x6e6c}, {0x4f46, 0x5323}, {0x4f47, 0x6e37},
+ {0x4f48, 0x784f}, {0x4f4d, 0x6a48}, {0x4f4e, 0x6e38},
+ {0x4f4f, 0x712c}, {0x4f50, 0x7125}, {0x4f51, 0x694e},
+ {0x4f55, 0x793c}, {0x4f59, 0x6579}, {0x4f5a, 0x6c6a},
+ {0x4f5b, 0x5d56}, {0x4f5c, 0x6d42}, {0x4f69, 0x7825},
+ {0x4f6f, 0x653a}, {0x4f70, 0x5b58}, {0x4f73, 0x4a22},
+ {0x4f76, 0x514d}, {0x4f7a, 0x6e6d}, {0x4f7e, 0x6c6b},
+ {0x4f7f, 0x5e45}, {0x4f81, 0x6360}, {0x4f83, 0x4a49},
+ {0x4f84, 0x7269}, {0x4f86, 0x554e}, {0x4f88, 0x7636},
+ {0x4f8a, 0x4e42}, {0x4f8b, 0x5647}, {0x4f8d, 0x6334},
+ {0x4f8f, 0x712d}, {0x4f91, 0x6a62}, {0x4f96, 0x5742},
+ {0x4f98, 0x7327}, {0x4f9b, 0x4d6a}, {0x4f9d, 0x6b6e},
+ {0x4fae, 0x5932}, {0x4faf, 0x7d25}, {0x4fb5, 0x7655},
+ {0x4fb6, 0x5562}, {0x4fbf, 0x7835}, {0x4fc2, 0x4c75},
+ {0x4fc3, 0x7535}, {0x4fc4, 0x642d}, {0x4fc9, 0x676b},
+ {0x4fca, 0x7155}, {0x4fce, 0x703b}, {0x4fd1, 0x6935},
+ {0x4fd3, 0x4c49}, {0x4fd4, 0x7a55}, {0x4fd7, 0x6154},
+ {0x4fda, 0x5756}, {0x4fdd, 0x5c41}, {0x4fdf, 0x5e46},
+ {0x4fe0, 0x7a6f}, {0x4fe1, 0x6361}, {0x4fee, 0x6173},
+ {0x4fef, 0x5c76}, {0x4ff1, 0x4e7c}, {0x4ff3, 0x5b44},
+ {0x4ff5, 0x7871}, {0x4ff8, 0x5c64}, {0x4ffa, 0x656f},
+ {0x5002, 0x5c31}, {0x5006, 0x5556}, {0x5009, 0x735a},
+ {0x500b, 0x4b41}, {0x500d, 0x5b43}, {0x5011, 0x597a},
+ {0x5012, 0x536e}, {0x5016, 0x7a38}, {0x5019, 0x7d26},
+ {0x501a, 0x6b6f}, {0x501c, 0x7426}, {0x501e, 0x4c4a},
+ {0x501f, 0x7328}, {0x5021, 0x735b}, {0x5023, 0x5b27},
+ {0x5024, 0x7637}, {0x5026, 0x4f66}, {0x5027, 0x7072},
+ {0x5028, 0x4b5a}, {0x502a, 0x6752}, {0x502b, 0x5743},
+ {0x502c, 0x7670}, {0x502d, 0x685e}, {0x503b, 0x6526},
+ {0x5043, 0x6567}, {0x5047, 0x4a23}, {0x5048, 0x4c27},
+ {0x5049, 0x6a49}, {0x504f, 0x7836}, {0x5055, 0x7a25},
+ {0x505a, 0x712e}, {0x505c, 0x6f4e}, {0x5065, 0x4b6d},
+ {0x5074, 0x7630}, {0x5075, 0x6f4f}, {0x5076, 0x694f},
+ {0x5078, 0x775e}, {0x5080, 0x4e53}, {0x5085, 0x5c77},
+ {0x508d, 0x5b28}, {0x5091, 0x4b78}, {0x5098, 0x5f21},
+ {0x5099, 0x5d61}, {0x50ac, 0x754a}, {0x50ad, 0x6936},
+ {0x50b2, 0x676c}, {0x50b3, 0x6e6e}, {0x50b5, 0x7370},
+ {0x50b7, 0x5f3f}, {0x50be, 0x4c4b}, {0x50c5, 0x5041},
+ {0x50c9, 0x7452}, {0x50ca, 0x603a}, {0x50cf, 0x5f40},
+ {0x50d1, 0x4e60}, {0x50d5, 0x5c52}, {0x50d6, 0x7d6a},
+ {0x50da, 0x5676}, {0x50de, 0x6a4a}, {0x50e5, 0x6869},
+ {0x50e7, 0x632c}, {0x50ed, 0x7350}, {0x50f9, 0x4a24},
+ {0x50fb, 0x5b78}, {0x50ff, 0x5e47}, {0x5100, 0x6b70},
+ {0x5101, 0x7156}, {0x5104, 0x6562}, {0x5106, 0x4c4c},
+ {0x5109, 0x4b7b}, {0x5112, 0x6a63}, {0x511f, 0x5f41},
+ {0x5121, 0x566d}, {0x512a, 0x6950}, {0x5132, 0x6e39},
+ {0x5137, 0x5563}, {0x513a, 0x5153}, {0x513c, 0x6570},
+ {0x5140, 0x6834}, {0x5141, 0x6b43}, {0x5143, 0x6a2a},
+ {0x5144, 0x7a7c}, {0x5145, 0x7576}, {0x5146, 0x703c},
+ {0x5147, 0x7d54}, {0x5148, 0x603b}, {0x5149, 0x4e43},
+ {0x514b, 0x503a}, {0x514c, 0x773a}, {0x514d, 0x5873},
+ {0x514e, 0x774d}, {0x5152, 0x642e}, {0x515c, 0x545f},
+ {0x5162, 0x5067}, {0x5165, 0x6c7d}, {0x5167, 0x522e},
+ {0x5168, 0x6e6f}, {0x5169, 0x5557}, {0x516a, 0x6a64},
+ {0x516b, 0x7822}, {0x516c, 0x4d6b}, {0x516d, 0x573f},
+ {0x516e, 0x7b31}, {0x5171, 0x4d6c}, {0x5175, 0x5c32},
+ {0x5176, 0x506c}, {0x5177, 0x4e7d}, {0x5178, 0x6e70},
+ {0x517c, 0x4c42}, {0x5180, 0x506d}, {0x5186, 0x6577},
+ {0x518a, 0x737c}, {0x518d, 0x6e22}, {0x5192, 0x5933},
+ {0x5195, 0x5874}, {0x5197, 0x6937}, {0x51a0, 0x4e2e},
+ {0x51a5, 0x5922}, {0x51aa, 0x5871}, {0x51ac, 0x544f},
+ {0x51b6, 0x6527}, {0x51b7, 0x5552}, {0x51bd, 0x5629},
+ {0x51c4, 0x7422}, {0x51c6, 0x7157}, {0x51c9, 0x5558},
+ {0x51cb, 0x703d}, {0x51cc, 0x5750}, {0x51cd, 0x5450},
+ {0x51dc, 0x574f}, {0x51dd, 0x6b6a}, {0x51de, 0x7d6b},
+ {0x51e1, 0x5b6d}, {0x51f0, 0x7c45}, {0x51f1, 0x4b42},
+ {0x51f6, 0x7d55}, {0x51f8, 0x7448}, {0x51f9, 0x686a},
+ {0x51fa, 0x7573}, {0x51fd, 0x795e}, {0x5200, 0x536f},
+ {0x5203, 0x6c53}, {0x5206, 0x5d42}, {0x5207, 0x6f37},
+ {0x5208, 0x6754}, {0x520a, 0x4a4a}, {0x520e, 0x597b},
+ {0x5211, 0x7a7d}, {0x5217, 0x562a}, {0x521d, 0x7478},
+ {0x5224, 0x7777}, {0x5225, 0x5c2c}, {0x5229, 0x5757},
+ {0x522a, 0x5f22}, {0x522e, 0x4e3e}, {0x5230, 0x5370},
+ {0x5236, 0x7024}, {0x5237, 0x616c}, {0x5238, 0x4f67},
+ {0x5239, 0x734b}, {0x523a, 0x6d29}, {0x523b, 0x4a3e},
+ {0x5243, 0x746f}, {0x5247, 0x764e}, {0x524a, 0x5e7b},
+ {0x524b, 0x503b}, {0x524c, 0x5537}, {0x524d, 0x6e71},
+ {0x5254, 0x7428}, {0x5256, 0x5c78}, {0x525b, 0x4b27},
+ {0x525d, 0x5a4e}, {0x5261, 0x6066}, {0x5269, 0x6d25},
+ {0x526a, 0x6e72}, {0x526f, 0x5c79}, {0x5272, 0x795c},
+ {0x5275, 0x735c}, {0x527d, 0x7872}, {0x527f, 0x7479},
+ {0x5283, 0x7c71}, {0x5287, 0x503c}, {0x5288, 0x5b79},
+ {0x5289, 0x5731}, {0x528d, 0x4b7c}, {0x5291, 0x7025},
+ {0x5292, 0x4b7d}, {0x529b, 0x5574}, {0x529f, 0x4d6d},
+ {0x52a0, 0x4a25}, {0x52a3, 0x562b}, {0x52a4, 0x5042},
+ {0x52a9, 0x703e}, {0x52aa, 0x523d}, {0x52ab, 0x4c24},
+ {0x52be, 0x7a36}, {0x52c1, 0x4c4d}, {0x52c3, 0x5a7a},
+ {0x52c5, 0x764f}, {0x52c7, 0x6938}, {0x52c9, 0x5875},
+ {0x52cd, 0x4c4e}, {0x52d2, 0x574d}, {0x52d5, 0x5451},
+ {0x52d6, 0x696d}, {0x52d8, 0x4a6b}, {0x52d9, 0x5962},
+ {0x52db, 0x7d32}, {0x52dd, 0x632d}, {0x52de, 0x564c},
+ {0x52df, 0x5934}, {0x52e2, 0x6127}, {0x52e3, 0x6e53},
+ {0x52e4, 0x5043}, {0x52f3, 0x7d33}, {0x52f5, 0x5564},
+ {0x52f8, 0x4f68}, {0x52fa, 0x6d43}, {0x52fb, 0x5032},
+ {0x52fe, 0x4e7e}, {0x52ff, 0x5a28}, {0x5305, 0x7850},
+ {0x5308, 0x7d56}, {0x530d, 0x7851}, {0x530f, 0x7852},
+ {0x5310, 0x5c53}, {0x5315, 0x5d62}, {0x5316, 0x7b79},
+ {0x5317, 0x5d41}, {0x5319, 0x6335}, {0x5320, 0x6d5d},
+ {0x5321, 0x4e44}, {0x5323, 0x4b21}, {0x532a, 0x5d63},
+ {0x532f, 0x7c5d}, {0x5339, 0x792f}, {0x533f, 0x527b},
+ {0x5340, 0x4f21}, {0x5341, 0x6428}, {0x5343, 0x7436},
+ {0x5344, 0x6c7e}, {0x5347, 0x632e}, {0x5348, 0x676d},
+ {0x5349, 0x7d41}, {0x534a, 0x5a62}, {0x534d, 0x5833},
+ {0x5351, 0x5d64}, {0x5352, 0x706f}, {0x5353, 0x7671},
+ {0x5354, 0x7a70}, {0x5357, 0x5175}, {0x535a, 0x5a4f},
+ {0x535c, 0x5c54}, {0x535e, 0x5c26}, {0x5360, 0x6f3f},
+ {0x5366, 0x4e4f}, {0x5368, 0x6059}, {0x536f, 0x5956},
+ {0x5370, 0x6c54}, {0x5371, 0x6a4b}, {0x5374, 0x4a3f},
+ {0x5375, 0x5530}, {0x5377, 0x4f69}, {0x537d, 0x716d},
+ {0x537f, 0x4c4f}, {0x5384, 0x6478}, {0x5393, 0x646d},
+ {0x5398, 0x5758}, {0x539a, 0x7d27}, {0x539f, 0x6a2b},
+ {0x53a0, 0x7632}, {0x53a5, 0x4f70}, {0x53a6, 0x793d},
+ {0x53ad, 0x6674}, {0x53bb, 0x4b5b}, {0x53c3, 0x7351},
+ {0x53c8, 0x6951}, {0x53c9, 0x7329}, {0x53ca, 0x5060},
+ {0x53cb, 0x6952}, {0x53cd, 0x5a63}, {0x53d4, 0x6252},
+ {0x53d6, 0x7622}, {0x53d7, 0x6174}, {0x53db, 0x5a64},
+ {0x53e1, 0x6755}, {0x53e2, 0x753f}, {0x53e3, 0x4f22},
+ {0x53e4, 0x4d2f}, {0x53e5, 0x4f23}, {0x53e9, 0x4d30},
+ {0x53ea, 0x717e}, {0x53eb, 0x5023}, {0x53ec, 0x612f},
+ {0x53ed, 0x7823}, {0x53ef, 0x4a26}, {0x53f0, 0x773b},
+ {0x53f1, 0x726a}, {0x53f2, 0x5e48}, {0x53f3, 0x6953},
+ {0x53f8, 0x5e49}, {0x5403, 0x7d5e}, {0x5404, 0x4a40},
+ {0x5408, 0x796a}, {0x5409, 0x514e}, {0x540a, 0x6e54},
+ {0x540c, 0x5452}, {0x540d, 0x5923}, {0x540e, 0x7d28},
+ {0x540f, 0x5759}, {0x5410, 0x774e}, {0x5411, 0x7a3e},
+ {0x541b, 0x4f56}, {0x541d, 0x5770}, {0x541f, 0x6b61},
+ {0x5420, 0x7845}, {0x5426, 0x5c7a}, {0x5429, 0x5d43},
+ {0x542b, 0x795f}, {0x5433, 0x676f}, {0x5438, 0x7d65},
+ {0x5439, 0x7623}, {0x543b, 0x597c}, {0x543c, 0x7d29},
+ {0x543e, 0x676e}, {0x5442, 0x5565}, {0x5448, 0x6f50},
+ {0x544a, 0x4d31}, {0x5451, 0x7722}, {0x5468, 0x7132},
+ {0x546a, 0x7131}, {0x5471, 0x4d32}, {0x5473, 0x5a2b},
+ {0x5475, 0x4a27}, {0x547b, 0x6362}, {0x547c, 0x7b3c},
+ {0x547d, 0x5924}, {0x5480, 0x6e3a}, {0x5486, 0x7853},
+ {0x548c, 0x7b7a}, {0x548e, 0x4f24}, {0x5490, 0x5c7b},
+ {0x54a4, 0x7663}, {0x54a8, 0x6d2a}, {0x54ab, 0x7221},
+ {0x54ac, 0x4e61}, {0x54b3, 0x7a26}, {0x54b8, 0x7960},
+ {0x54bd, 0x6c56}, {0x54c0, 0x646e}, {0x54c1, 0x7921},
+ {0x54c4, 0x7b6f}, {0x54c8, 0x796b}, {0x54c9, 0x6e23},
+ {0x54e1, 0x6a2c}, {0x54e5, 0x4a28}, {0x54e8, 0x747a},
+ {0x54ed, 0x4d56}, {0x54ee, 0x7c76}, {0x54f2, 0x7449},
+ {0x54fa, 0x7854}, {0x5504, 0x7826}, {0x5506, 0x5e4a},
+ {0x5507, 0x7246}, {0x550e, 0x575a}, {0x5510, 0x5350},
+ {0x551c, 0x5845}, {0x552f, 0x6a66}, {0x5531, 0x735d},
+ {0x5535, 0x645a}, {0x553e, 0x7664}, {0x5544, 0x7672},
+ {0x5546, 0x5f42}, {0x554f, 0x597d}, {0x5553, 0x4c76},
+ {0x5556, 0x533a}, {0x555e, 0x642f}, {0x5563, 0x7961},
+ {0x557c, 0x7026}, {0x5580, 0x4b53}, {0x5584, 0x603c},
+ {0x5586, 0x744a}, {0x5587, 0x547a}, {0x5589, 0x7d2a},
+ {0x558a, 0x7962}, {0x5598, 0x7437}, {0x5599, 0x7d42},
+ {0x559a, 0x7c30}, {0x559c, 0x7d6c}, {0x559d, 0x4a62},
+ {0x55a7, 0x7d3d}, {0x55a9, 0x6a67}, {0x55aa, 0x5f43},
+ {0x55ab, 0x5152}, {0x55ac, 0x4e62}, {0x55ae, 0x5324},
+ {0x55c5, 0x7d2b}, {0x55c7, 0x5f60}, {0x55d4, 0x7247},
+ {0x55da, 0x6770}, {0x55dc, 0x506e}, {0x55df, 0x732a},
+ {0x55e3, 0x5e4b}, {0x55e4, 0x7638}, {0x55fd, 0x6175},
+ {0x55fe, 0x7133}, {0x5606, 0x7723}, {0x5609, 0x4a29},
+ {0x5614, 0x4f25}, {0x5617, 0x5f44}, {0x562f, 0x6130},
+ {0x5632, 0x703f}, {0x5634, 0x7624}, {0x5636, 0x6336},
+ {0x5653, 0x7a46}, {0x5668, 0x506f}, {0x566b, 0x7d6d},
+ {0x5674, 0x5d44}, {0x5686, 0x7c77}, {0x56a5, 0x663f},
+ {0x56ac, 0x5e2d}, {0x56ae, 0x7a3f}, {0x56b4, 0x6571},
+ {0x56bc, 0x6d44}, {0x56ca, 0x5225}, {0x56cd, 0x7d6e},
+ {0x56d1, 0x7536}, {0x56da, 0x6176}, {0x56db, 0x5e4c},
+ {0x56de, 0x7c5e}, {0x56e0, 0x6c57}, {0x56f0, 0x4d5d},
+ {0x56f9, 0x5637}, {0x56fa, 0x4d33}, {0x5703, 0x7855},
+ {0x5704, 0x6558}, {0x5708, 0x4f6a}, {0x570b, 0x4f50},
+ {0x570d, 0x6a4c}, {0x5712, 0x6a2e}, {0x5713, 0x6a2d},
+ {0x5716, 0x5371}, {0x5718, 0x5325}, {0x571f, 0x774f},
+ {0x5728, 0x6e24}, {0x572d, 0x5024}, {0x5730, 0x7222},
+ {0x573b, 0x5070}, {0x5740, 0x7223}, {0x5742, 0x7778},
+ {0x5747, 0x5033}, {0x574a, 0x5b29}, {0x574d, 0x533b},
+ {0x574e, 0x4a6c}, {0x5750, 0x7126}, {0x5751, 0x4b55},
+ {0x5761, 0x7767}, {0x5764, 0x4d5e}, {0x5766, 0x7724},
+ {0x576a, 0x7840}, {0x576e, 0x535d}, {0x5770, 0x4c50},
+ {0x5775, 0x4f26}, {0x577c, 0x7673}, {0x5782, 0x6177},
+ {0x5788, 0x535c}, {0x578b, 0x7a7e}, {0x5793, 0x7a27},
+ {0x57a0, 0x6b59}, {0x57a2, 0x4f27}, {0x57a3, 0x6a2f},
+ {0x57c3, 0x646f}, {0x57c7, 0x6939}, {0x57c8, 0x7158},
+ {0x57cb, 0x5858}, {0x57ce, 0x6072}, {0x57df, 0x6634},
+ {0x57e0, 0x5c7c}, {0x57f0, 0x7371}, {0x57f4, 0x6350},
+ {0x57f7, 0x727b}, {0x57f9, 0x5b46}, {0x57fa, 0x5071},
+ {0x57fc, 0x5072}, {0x5800, 0x4f5c}, {0x5802, 0x5351},
+ {0x5805, 0x4c31}, {0x5806, 0x7758}, {0x5808, 0x4b28},
+ {0x5809, 0x6b3c}, {0x580a, 0x643e}, {0x581e, 0x745c},
+ {0x5821, 0x5c42}, {0x5824, 0x7027}, {0x5827, 0x6640},
+ {0x582a, 0x4a6d}, {0x582f, 0x686b}, {0x5830, 0x6568},
+ {0x5831, 0x5c43}, {0x5834, 0x6d5e}, {0x5835, 0x5372},
+ {0x583a, 0x4c77}, {0x584a, 0x4e54}, {0x584b, 0x672b},
+ {0x584f, 0x4b43}, {0x5851, 0x6131}, {0x5854, 0x7732},
+ {0x5857, 0x5373}, {0x5858, 0x5352}, {0x585a, 0x7540},
+ {0x585e, 0x5f5d}, {0x5861, 0x6e73}, {0x5862, 0x6771},
+ {0x5864, 0x7d34}, {0x5875, 0x7248}, {0x5879, 0x7352},
+ {0x587c, 0x6e74}, {0x587e, 0x6253}, {0x5883, 0x4c51},
+ {0x5885, 0x5f6a}, {0x5889, 0x693a}, {0x5893, 0x5957},
+ {0x589c, 0x754d}, {0x589e, 0x7172}, {0x589f, 0x7a47},
+ {0x58a8, 0x5978}, {0x58a9, 0x5442}, {0x58ae, 0x7665},
+ {0x58b3, 0x5d45}, {0x58ba, 0x6772}, {0x58bb, 0x6d5f},
+ {0x58be, 0x4a4b}, {0x58c1, 0x5b7a}, {0x58c5, 0x6835},
+ {0x58c7, 0x5326}, {0x58ce, 0x7d35}, {0x58d1, 0x7949},
+ {0x58d3, 0x6462}, {0x58d5, 0x7b3d}, {0x58d8, 0x5724},
+ {0x58d9, 0x4e45}, {0x58de, 0x4e55}, {0x58df, 0x5666},
+ {0x58e4, 0x653d}, {0x58eb, 0x5e4d}, {0x58ec, 0x6c73},
+ {0x58ef, 0x6d60}, {0x58f9, 0x6c6c}, {0x58fa, 0x7b3e},
+ {0x58fb, 0x5f6b}, {0x58fd, 0x6178}, {0x590f, 0x793e},
+ {0x5914, 0x5073}, {0x5915, 0x602a}, {0x5916, 0x6862},
+ {0x5919, 0x6254}, {0x591a, 0x527d}, {0x591c, 0x6528},
+ {0x5922, 0x5953}, {0x5927, 0x535e}, {0x5929, 0x7438},
+ {0x592a, 0x773c}, {0x592b, 0x5c7d}, {0x592d, 0x686c},
+ {0x592e, 0x6467}, {0x5931, 0x6377}, {0x5937, 0x6c28},
+ {0x593e, 0x7a71}, {0x5944, 0x6572}, {0x5947, 0x5074},
+ {0x5948, 0x522f}, {0x5949, 0x5c65}, {0x594e, 0x5025},
+ {0x594f, 0x7134}, {0x5950, 0x7c31}, {0x5951, 0x4c78},
+ {0x5954, 0x5d46}, {0x5955, 0x7a51}, {0x5957, 0x775f},
+ {0x595a, 0x7a28}, {0x5960, 0x6e75}, {0x5962, 0x5e4e},
+ {0x5967, 0x6773}, {0x596a, 0x772c}, {0x596b, 0x6b44},
+ {0x596c, 0x6d61}, {0x596d, 0x602b}, {0x596e, 0x5d47},
+ {0x5973, 0x5233}, {0x5974, 0x523f}, {0x5978, 0x4a4c},
+ {0x597d, 0x7b3f}, {0x5982, 0x657d}, {0x5983, 0x5d65},
+ {0x5984, 0x584d}, {0x598a, 0x6c74}, {0x5993, 0x5075},
+ {0x5996, 0x686d}, {0x5997, 0x5052}, {0x5999, 0x5958},
+ {0x59a5, 0x7666}, {0x59a8, 0x5b2a}, {0x59ac, 0x7760},
+ {0x59b9, 0x5859}, {0x59bb, 0x7423}, {0x59be, 0x745d},
+ {0x59c3, 0x6f51}, {0x59c6, 0x5935}, {0x59c9, 0x6d2b},
+ {0x59cb, 0x6337}, {0x59d0, 0x6e3b}, {0x59d1, 0x4d34},
+ {0x59d3, 0x6073}, {0x59d4, 0x6a4d}, {0x59d9, 0x6c75},
+ {0x59da, 0x686e}, {0x59dc, 0x4b29}, {0x59dd, 0x712f},
+ {0x59e6, 0x4a4d}, {0x59e8, 0x6c29}, {0x59ea, 0x726b},
+ {0x59ec, 0x7d6f}, {0x59ee, 0x7973}, {0x59f8, 0x6641},
+ {0x59fb, 0x6c58}, {0x59ff, 0x6d2c}, {0x5a01, 0x6a4e},
+ {0x5a03, 0x685f}, {0x5a11, 0x5e4f}, {0x5a18, 0x5226},
+ {0x5a1b, 0x6774}, {0x5a1c, 0x5156}, {0x5a1f, 0x6642},
+ {0x5a20, 0x6363}, {0x5a25, 0x6430}, {0x5a29, 0x5834},
+ {0x5a36, 0x7625}, {0x5a3c, 0x735e}, {0x5a41, 0x5725},
+ {0x5a46, 0x7768}, {0x5a49, 0x6846}, {0x5a5a, 0x7b66},
+ {0x5a62, 0x5d66}, {0x5a66, 0x5c7e}, {0x5a92, 0x585a},
+ {0x5a9a, 0x5a2c}, {0x5a9b, 0x6a30}, {0x5aa4, 0x6338},
+ {0x5ac1, 0x4a2a}, {0x5ac2, 0x6179}, {0x5ac4, 0x6a31},
+ {0x5ac9, 0x726c}, {0x5acc, 0x7a6e}, {0x5ae1, 0x6e55},
+ {0x5ae6, 0x7974}, {0x5ae9, 0x526c}, {0x5b05, 0x7b7b},
+ {0x5b09, 0x7d70}, {0x5b0b, 0x603d}, {0x5b0c, 0x4e63},
+ {0x5b16, 0x7846}, {0x5b2a, 0x5e2e}, {0x5b40, 0x5f45},
+ {0x5b43, 0x653e}, {0x5b50, 0x6d2d}, {0x5b51, 0x7a6a},
+ {0x5b54, 0x4d6e}, {0x5b55, 0x6d26}, {0x5b57, 0x6d2e},
+ {0x5b58, 0x706d}, {0x5b5a, 0x5d21}, {0x5b5c, 0x6d2f},
+ {0x5b5d, 0x7c78}, {0x5b5f, 0x586b}, {0x5b63, 0x4c79},
+ {0x5b64, 0x4d35}, {0x5b69, 0x7a29}, {0x5b6b, 0x615d},
+ {0x5b70, 0x6255}, {0x5b71, 0x6d4f}, {0x5b75, 0x5d22},
+ {0x5b78, 0x794a}, {0x5b7a, 0x6a68}, {0x5b7c, 0x656d},
+ {0x5b85, 0x536b}, {0x5b87, 0x6954}, {0x5b88, 0x617a},
+ {0x5b89, 0x644c}, {0x5b8b, 0x6164}, {0x5b8c, 0x6847},
+ {0x5b8f, 0x4e5b}, {0x5b93, 0x5c55}, {0x5b95, 0x7735},
+ {0x5b96, 0x7c73}, {0x5b97, 0x7073}, {0x5b98, 0x4e2f},
+ {0x5b99, 0x7135}, {0x5b9a, 0x6f52}, {0x5b9b, 0x6848},
+ {0x5b9c, 0x6b71}, {0x5ba2, 0x4b54}, {0x5ba3, 0x603e},
+ {0x5ba4, 0x6378}, {0x5ba5, 0x6a69}, {0x5ba6, 0x7c32},
+ {0x5bac, 0x6074}, {0x5bae, 0x4f60}, {0x5bb0, 0x6e25},
+ {0x5bb3, 0x7a2a}, {0x5bb4, 0x6643}, {0x5bb5, 0x6132},
+ {0x5bb6, 0x4a2b}, {0x5bb8, 0x6364}, {0x5bb9, 0x693b},
+ {0x5bbf, 0x6256}, {0x5bc0, 0x7372}, {0x5bc2, 0x6e56},
+ {0x5bc3, 0x6a32}, {0x5bc4, 0x5076}, {0x5bc5, 0x6c59},
+ {0x5bc6, 0x5a4b}, {0x5bc7, 0x4f28}, {0x5bcc, 0x5d23},
+ {0x5bd0, 0x585b}, {0x5bd2, 0x794e}, {0x5bd3, 0x6955},
+ {0x5bd4, 0x6351}, {0x5bd7, 0x523c}, {0x5bde, 0x582c},
+ {0x5bdf, 0x734c}, {0x5be1, 0x4d7b}, {0x5be2, 0x7656},
+ {0x5be4, 0x6775}, {0x5be5, 0x686f}, {0x5be6, 0x6379},
+ {0x5be7, 0x523b}, {0x5be8, 0x7373}, {0x5be9, 0x637b},
+ {0x5beb, 0x5e50}, {0x5bec, 0x4e30}, {0x5bee, 0x5677},
+ {0x5bef, 0x7159}, {0x5bf5, 0x7541}, {0x5bf6, 0x5c44},
+ {0x5bf8, 0x753b}, {0x5bfa, 0x5e51}, {0x5c01, 0x5c66},
+ {0x5c04, 0x5e52}, {0x5c07, 0x6d62}, {0x5c08, 0x6e76},
+ {0x5c09, 0x6a4f}, {0x5c0a, 0x706e}, {0x5c0b, 0x637c},
+ {0x5c0d, 0x535f}, {0x5c0e, 0x5374}, {0x5c0f, 0x6133},
+ {0x5c11, 0x6134}, {0x5c16, 0x7453}, {0x5c19, 0x5f46},
+ {0x5c24, 0x6956}, {0x5c28, 0x5b2b}, {0x5c31, 0x7626},
+ {0x5c38, 0x6339}, {0x5c39, 0x6b45}, {0x5c3a, 0x7429},
+ {0x5c3b, 0x4d36}, {0x5c3c, 0x5279}, {0x5c3e, 0x5a2d},
+ {0x5c3f, 0x5263}, {0x5c40, 0x4f51}, {0x5c45, 0x4b5c},
+ {0x5c46, 0x4c7a}, {0x5c48, 0x4f5d}, {0x5c4b, 0x6829},
+ {0x5c4d, 0x633b}, {0x5c4e, 0x633a}, {0x5c51, 0x605a},
+ {0x5c55, 0x6e77}, {0x5c5b, 0x5c33}, {0x5c60, 0x5375},
+ {0x5c62, 0x5726}, {0x5c64, 0x7635}, {0x5c65, 0x575b},
+ {0x5c6c, 0x6155}, {0x5c6f, 0x546a}, {0x5c71, 0x5f23},
+ {0x5c79, 0x7d5f}, {0x5c90, 0x5077}, {0x5c91, 0x6d54},
+ {0x5ca1, 0x4b2a}, {0x5ca9, 0x645b}, {0x5cab, 0x617b},
+ {0x5cac, 0x4b22}, {0x5cb1, 0x5360}, {0x5cb3, 0x643f},
+ {0x5cb5, 0x7b40}, {0x5cb7, 0x5a3e}, {0x5cb8, 0x644d},
+ {0x5cba, 0x5639}, {0x5cbe, 0x6f40}, {0x5cc0, 0x617c},
+ {0x5cd9, 0x7639}, {0x5ce0, 0x5f47}, {0x5ce8, 0x6431},
+ {0x5cef, 0x5c67}, {0x5cf0, 0x5c68}, {0x5cf4, 0x7a56},
+ {0x5cf6, 0x5376}, {0x5cfb, 0x715a}, {0x5cfd, 0x7a72},
+ {0x5d07, 0x627d}, {0x5d0d, 0x554f}, {0x5d0e, 0x5078},
+ {0x5d11, 0x4d5f}, {0x5d14, 0x754b}, {0x5d16, 0x6470},
+ {0x5d17, 0x4b2b}, {0x5d19, 0x5744}, {0x5d27, 0x627e},
+ {0x5d29, 0x5d5a}, {0x5d4b, 0x5a2e}, {0x5d4c, 0x4a6e},
+ {0x5d50, 0x5539}, {0x5d69, 0x6321}, {0x5d6c, 0x6863},
+ {0x5d6f, 0x732b}, {0x5d87, 0x4f29}, {0x5d8b, 0x5377},
+ {0x5d9d, 0x5471}, {0x5da0, 0x4e64}, {0x5da2, 0x6872},
+ {0x5daa, 0x6575}, {0x5db8, 0x672e}, {0x5dba, 0x563a},
+ {0x5dbc, 0x5f6c}, {0x5dbd, 0x6440}, {0x5dcd, 0x6864},
+ {0x5dd2, 0x5835}, {0x5dd6, 0x645c}, {0x5ddd, 0x7439},
+ {0x5dde, 0x7136}, {0x5de1, 0x625e}, {0x5de2, 0x6135},
+ {0x5de5, 0x4d6f}, {0x5de6, 0x7127}, {0x5de7, 0x4e65},
+ {0x5de8, 0x4b5d}, {0x5deb, 0x5963}, {0x5dee, 0x732c},
+ {0x5df1, 0x5079}, {0x5df2, 0x6c2b}, {0x5df3, 0x5e53},
+ {0x5df4, 0x7769}, {0x5df7, 0x7975}, {0x5dfd, 0x615e},
+ {0x5dfe, 0x4b6e}, {0x5e02, 0x633c}, {0x5e03, 0x7856},
+ {0x5e06, 0x5b6e}, {0x5e0c, 0x7d71}, {0x5e11, 0x7736},
+ {0x5e16, 0x745e}, {0x5e19, 0x726d}, {0x5e1b, 0x5b59},
+ {0x5e1d, 0x7028}, {0x5e25, 0x617d}, {0x5e2b, 0x5e54},
+ {0x5e2d, 0x602c}, {0x5e33, 0x6d63}, {0x5e36, 0x5361},
+ {0x5e38, 0x5f48}, {0x5e3d, 0x5936}, {0x5e3f, 0x7d2c},
+ {0x5e40, 0x6f53}, {0x5e44, 0x6441}, {0x5e45, 0x786b},
+ {0x5e47, 0x5b2c}, {0x5e4c, 0x7c46}, {0x5e55, 0x582d},
+ {0x5e5f, 0x763a}, {0x5e61, 0x5b5f}, {0x5e62, 0x5353},
+ {0x5e63, 0x7847}, {0x5e72, 0x4a4e}, {0x5e73, 0x7841},
+ {0x5e74, 0x5234}, {0x5e77, 0x5c34}, {0x5e78, 0x7a39},
+ {0x5e79, 0x4a4f}, {0x5e7b, 0x7c33}, {0x5e7c, 0x6a6a},
+ {0x5e7d, 0x6a6b}, {0x5e7e, 0x507a}, {0x5e84, 0x6d64},
+ {0x5e87, 0x5d67}, {0x5e8a, 0x5f49}, {0x5e8f, 0x5f6d},
+ {0x5e95, 0x6e3c}, {0x5e97, 0x6f41}, {0x5e9a, 0x4c52},
+ {0x5e9c, 0x5d24}, {0x5ea0, 0x5f4a}, {0x5ea6, 0x5378},
+ {0x5ea7, 0x7128}, {0x5eab, 0x4d37}, {0x5ead, 0x6f54},
+ {0x5eb5, 0x645d}, {0x5eb6, 0x5f6e}, {0x5eb7, 0x4b2c},
+ {0x5eb8, 0x693c}, {0x5ebe, 0x6a6c}, {0x5ec2, 0x5f4b},
+ {0x5ec8, 0x793f}, {0x5ec9, 0x562f}, {0x5eca, 0x5546},
+ {0x5ed0, 0x4f2a}, {0x5ed3, 0x4e29}, {0x5ed6, 0x5678},
+ {0x5eda, 0x7137}, {0x5edb, 0x6e78}, {0x5edf, 0x5959},
+ {0x5ee0, 0x735f}, {0x5ee2, 0x7848}, {0x5ee3, 0x4e46},
+ {0x5eec, 0x5566}, {0x5ef3, 0x7466}, {0x5ef6, 0x6645},
+ {0x5ef7, 0x6f55}, {0x5efa, 0x4b6f}, {0x5efb, 0x7c5f},
+ {0x5f01, 0x5c27}, {0x5f04, 0x5667}, {0x5f0a, 0x7849},
+ {0x5f0f, 0x6352}, {0x5f11, 0x633d}, {0x5f13, 0x4f61},
+ {0x5f14, 0x7040}, {0x5f15, 0x6c5a}, {0x5f17, 0x5d57},
+ {0x5f18, 0x7b70}, {0x5f1b, 0x6c2c}, {0x5f1f, 0x7029},
+ {0x5f26, 0x7a57}, {0x5f27, 0x7b41}, {0x5f29, 0x5240},
+ {0x5f31, 0x6530}, {0x5f35, 0x6d65}, {0x5f3a, 0x4b2d},
+ {0x5f3c, 0x7930}, {0x5f48, 0x7725}, {0x5f4a, 0x4b2e},
+ {0x5f4c, 0x5a2f}, {0x5f4e, 0x5836}, {0x5f56, 0x5327},
+ {0x5f57, 0x7b32}, {0x5f59, 0x7d44}, {0x5f5b, 0x6c2d},
+ {0x5f62, 0x7b21}, {0x5f66, 0x6569}, {0x5f67, 0x696e},
+ {0x5f69, 0x7374}, {0x5f6a, 0x7873}, {0x5f6b, 0x7041},
+ {0x5f6c, 0x5e2f}, {0x5f6d, 0x7830}, {0x5f70, 0x7360},
+ {0x5f71, 0x672f}, {0x5f77, 0x5b2d}, {0x5f79, 0x6635},
+ {0x5f7c, 0x7928}, {0x5f7f, 0x5d58}, {0x5f80, 0x6859},
+ {0x5f81, 0x6f56}, {0x5f85, 0x5362}, {0x5f87, 0x625f},
+ {0x5f8a, 0x7c60}, {0x5f8b, 0x5748}, {0x5f8c, 0x7d2d},
+ {0x5f90, 0x5f6f}, {0x5f91, 0x4c53}, {0x5f92, 0x5379},
+ {0x5f97, 0x5470}, {0x5f98, 0x5b47}, {0x5f99, 0x5e55},
+ {0x5f9e, 0x7074}, {0x5fa0, 0x5550}, {0x5fa1, 0x6559},
+ {0x5fa8, 0x7c47}, {0x5fa9, 0x5c56}, {0x5faa, 0x6260},
+ {0x5fae, 0x5a30}, {0x5fb5, 0x7323}, {0x5fb7, 0x536c},
+ {0x5fb9, 0x744b}, {0x5fbd, 0x7d45}, {0x5fc3, 0x637d},
+ {0x5fc5, 0x7931}, {0x5fcc, 0x507b}, {0x5fcd, 0x6c5b},
+ {0x5fd6, 0x753c}, {0x5fd7, 0x7224}, {0x5fd8, 0x584e},
+ {0x5fd9, 0x584f}, {0x5fe0, 0x7577}, {0x5feb, 0x7661},
+ {0x5ff5, 0x5237}, {0x5ffd, 0x7b6c}, {0x5fff, 0x5d48},
+ {0x600f, 0x6468}, {0x6012, 0x5241}, {0x6016, 0x7857},
+ {0x601c, 0x563b}, {0x601d, 0x5e56}, {0x6020, 0x773d},
+ {0x6021, 0x6c2e}, {0x6025, 0x5061}, {0x6027, 0x6075},
+ {0x6028, 0x6a33}, {0x602a, 0x4e56}, {0x602f, 0x4c25},
+ {0x6041, 0x6c76}, {0x6042, 0x6261}, {0x6043, 0x633e},
+ {0x604d, 0x7c48}, {0x6050, 0x4d70}, {0x6052, 0x7976},
+ {0x6055, 0x5f70}, {0x6059, 0x653f}, {0x605d, 0x4e3f},
+ {0x6062, 0x7c61}, {0x6063, 0x6d30}, {0x6064, 0x7d51},
+ {0x6065, 0x763b}, {0x6068, 0x794f}, {0x6069, 0x6b5a},
+ {0x606a, 0x4a41}, {0x606c, 0x5238}, {0x606d, 0x4d71},
+ {0x606f, 0x6353}, {0x6070, 0x7d66}, {0x6085, 0x666d},
+ {0x6089, 0x637a}, {0x608c, 0x702a}, {0x608d, 0x7950},
+ {0x6094, 0x7c62}, {0x6096, 0x7827}, {0x609a, 0x6165},
+ {0x609b, 0x6e79}, {0x609f, 0x6776}, {0x60a0, 0x6a6d},
+ {0x60a3, 0x7c34}, {0x60a4, 0x7542}, {0x60a7, 0x575c},
+ {0x60b0, 0x7075}, {0x60b2, 0x5d68}, {0x60b3, 0x536d},
+ {0x60b4, 0x757c}, {0x60b6, 0x5a3f}, {0x60b8, 0x4c7b},
+ {0x60bc, 0x537a}, {0x60bd, 0x7424}, {0x60c5, 0x6f57},
+ {0x60c7, 0x5443}, {0x60d1, 0x7b63}, {0x60da, 0x7b6d},
+ {0x60dc, 0x602d}, {0x60df, 0x6a6e}, {0x60e0, 0x7b33},
+ {0x60e1, 0x6442}, {0x60f0, 0x7667}, {0x60f1, 0x525d},
+ {0x60f3, 0x5f4c}, {0x60f6, 0x7c49}, {0x60f9, 0x6529},
+ {0x60fa, 0x6076}, {0x60fb, 0x7633}, {0x6101, 0x617e},
+ {0x6106, 0x4b70}, {0x6108, 0x6a6f}, {0x6109, 0x6a70},
+ {0x610d, 0x5a40}, {0x610e, 0x7834}, {0x610f, 0x6b72},
+ {0x6115, 0x6443}, {0x611a, 0x6957}, {0x611b, 0x6471},
+ {0x611f, 0x4a6f}, {0x6127, 0x4e57}, {0x6130, 0x7c4a},
+ {0x6134, 0x7361}, {0x6137, 0x4b44}, {0x613c, 0x6365},
+ {0x613e, 0x4b45}, {0x613f, 0x6a34}, {0x6142, 0x693d},
+ {0x6144, 0x5749}, {0x6147, 0x6b5b}, {0x6148, 0x6d31},
+ {0x614a, 0x4c43}, {0x614b, 0x773e}, {0x614c, 0x7c4b},
+ {0x6153, 0x7874}, {0x6155, 0x5937}, {0x6158, 0x7353},
+ {0x6159, 0x7354}, {0x615d, 0x7764}, {0x615f, 0x7751},
+ {0x6162, 0x5837}, {0x6163, 0x4e31}, {0x6164, 0x4a42},
+ {0x6167, 0x7b34}, {0x6168, 0x4b46}, {0x616b, 0x7076},
+ {0x616e, 0x5567}, {0x6170, 0x6a50}, {0x6176, 0x4c54},
+ {0x6177, 0x4b2f}, {0x617d, 0x742a}, {0x617e, 0x692f},
+ {0x6181, 0x7543}, {0x6182, 0x6958}, {0x618a, 0x5d69},
+ {0x618e, 0x7173}, {0x6190, 0x557b}, {0x6191, 0x5e3b},
+ {0x6194, 0x747b}, {0x6198, 0x7d73}, {0x6199, 0x7d72},
+ {0x619a, 0x7726}, {0x61a4, 0x5d49}, {0x61a7, 0x5453},
+ {0x61a9, 0x4c28}, {0x61ab, 0x5a41}, {0x61ac, 0x4c55},
+ {0x61ae, 0x5964}, {0x61b2, 0x7a4a}, {0x61b6, 0x6563},
+ {0x61ba, 0x533c}, {0x61be, 0x4a70}, {0x61c3, 0x5044},
+ {0x61c7, 0x4a50}, {0x61c8, 0x7a2b}, {0x61c9, 0x6b6b},
+ {0x61ca, 0x6778}, {0x61cb, 0x5965}, {0x61e6, 0x5157},
+ {0x61f2, 0x7324}, {0x61f6, 0x547b}, {0x61f7, 0x7c63},
+ {0x61f8, 0x7a58}, {0x61fa, 0x7355}, {0x61fc, 0x4f2b},
+ {0x61ff, 0x6b73}, {0x6200, 0x557c}, {0x6207, 0x5354},
+ {0x6208, 0x4d7c}, {0x620a, 0x5966}, {0x620c, 0x6279},
+ {0x620d, 0x6221}, {0x620e, 0x6b54}, {0x6210, 0x6077},
+ {0x6211, 0x6432}, {0x6212, 0x4c7c}, {0x6216, 0x7b64},
+ {0x621a, 0x742b}, {0x621f, 0x503d}, {0x6221, 0x4a71},
+ {0x622a, 0x6f38}, {0x622e, 0x5740}, {0x6230, 0x6e7a},
+ {0x6231, 0x7d74}, {0x6234, 0x5363}, {0x6236, 0x7b42},
+ {0x623e, 0x5568}, {0x623f, 0x5b2e}, {0x6240, 0x6136},
+ {0x6241, 0x7837}, {0x6247, 0x603f}, {0x6248, 0x7b43},
+ {0x6249, 0x5d6a}, {0x624b, 0x6222}, {0x624d, 0x6e26},
+ {0x6253, 0x7668}, {0x6258, 0x7675}, {0x626e, 0x5d4a},
+ {0x6271, 0x5062}, {0x6276, 0x5d26}, {0x6279, 0x5d6b},
+ {0x627c, 0x6479}, {0x627f, 0x632f}, {0x6280, 0x507c},
+ {0x6284, 0x747c}, {0x6289, 0x4c3c}, {0x628a, 0x776a},
+ {0x6291, 0x6564}, {0x6292, 0x5f71}, {0x6295, 0x7761},
+ {0x6297, 0x7977}, {0x6298, 0x6f39}, {0x629b, 0x7858},
+ {0x62ab, 0x7929}, {0x62b1, 0x7859}, {0x62b5, 0x6e3d},
+ {0x62b9, 0x5846}, {0x62bc, 0x6463}, {0x62bd, 0x754e},
+ {0x62c2, 0x5d59}, {0x62c7, 0x5967}, {0x62c8, 0x5239},
+ {0x62c9, 0x5543}, {0x62cc, 0x5a65}, {0x62cd, 0x5a50},
+ {0x62cf, 0x5159}, {0x62d0, 0x4e58}, {0x62d2, 0x4b5e},
+ {0x62d3, 0x742c}, {0x62d4, 0x5a7b}, {0x62d6, 0x7669},
+ {0x62d7, 0x6873}, {0x62d8, 0x4f2c}, {0x62d9, 0x7070},
+ {0x62db, 0x747d}, {0x62dc, 0x5b48}, {0x62ec, 0x4e40},
+ {0x62ed, 0x6354}, {0x62ee, 0x514f}, {0x62ef, 0x7175},
+ {0x62f1, 0x4d72}, {0x62f3, 0x4f6b}, {0x62f7, 0x4d38},
+ {0x62fe, 0x6326}, {0x62ff, 0x515a}, {0x6301, 0x7225},
+ {0x6307, 0x7226}, {0x6309, 0x644e}, {0x6311, 0x537b},
+ {0x632b, 0x7129}, {0x632f, 0x7249}, {0x633a, 0x6f58},
+ {0x633b, 0x6649}, {0x633d, 0x5838}, {0x633e, 0x7a73},
+ {0x6349, 0x7335}, {0x634c, 0x7824}, {0x634f, 0x5173},
+ {0x6350, 0x6648}, {0x6355, 0x785a}, {0x6367, 0x5c69},
+ {0x6368, 0x5e57}, {0x636e, 0x4b5f}, {0x6372, 0x4f6c},
+ {0x6377, 0x745f}, {0x637a, 0x5174}, {0x637b, 0x523a},
+ {0x637f, 0x5f72}, {0x6383, 0x6137}, {0x6388, 0x6223},
+ {0x6389, 0x537c}, {0x638c, 0x6d66}, {0x6392, 0x5b49},
+ {0x6396, 0x647a}, {0x6398, 0x4f5e}, {0x639b, 0x4e50},
+ {0x63a0, 0x5553}, {0x63a1, 0x7375}, {0x63a2, 0x772e},
+ {0x63a5, 0x6f48}, {0x63a7, 0x4d73}, {0x63a8, 0x754f},
+ {0x63a9, 0x6573}, {0x63aa, 0x7042}, {0x63c0, 0x4a51},
+ {0x63c4, 0x6a71}, {0x63c6, 0x5026}, {0x63cf, 0x595a},
+ {0x63d0, 0x702b}, {0x63d6, 0x6b67}, {0x63da, 0x6540},
+ {0x63db, 0x7c35}, {0x63e1, 0x6444}, {0x63ed, 0x4c29},
+ {0x63ee, 0x7d46}, {0x63f4, 0x6a35}, {0x63f6, 0x652a},
+ {0x63f7, 0x5f3a}, {0x640d, 0x615f}, {0x640f, 0x5a51},
+ {0x6414, 0x6138}, {0x6416, 0x6874}, {0x6417, 0x537d},
+ {0x641c, 0x6224}, {0x6422, 0x724a}, {0x642c, 0x5a66},
+ {0x642d, 0x7733}, {0x643a, 0x7d4d}, {0x643e, 0x7336},
+ {0x6458, 0x6e57}, {0x6460, 0x7544}, {0x6469, 0x5824},
+ {0x646f, 0x7227}, {0x6478, 0x5938}, {0x6479, 0x5939},
+ {0x647a, 0x6f49}, {0x6488, 0x564e}, {0x6491, 0x774b},
+ {0x6492, 0x5f2e}, {0x6493, 0x6875}, {0x649a, 0x5235},
+ {0x649e, 0x5355}, {0x64a4, 0x744c}, {0x64a5, 0x5a7c},
+ {0x64ab, 0x5968}, {0x64ad, 0x776b}, {0x64ae, 0x7549},
+ {0x64b0, 0x733c}, {0x64b2, 0x5a52}, {0x64bb, 0x5335},
+ {0x64c1, 0x6836}, {0x64c4, 0x564f}, {0x64c5, 0x743a},
+ {0x64c7, 0x7749}, {0x64ca, 0x4c2a}, {0x64cd, 0x7043},
+ {0x64ce, 0x4c56}, {0x64d2, 0x5053}, {0x64d4, 0x533d},
+ {0x64d8, 0x5b7b}, {0x64da, 0x4b60}, {0x64e1, 0x5364},
+ {0x64e2, 0x7677}, {0x64e5, 0x553a}, {0x64e6, 0x734d},
+ {0x64e7, 0x4b61}, {0x64ec, 0x6b74}, {0x64f2, 0x742d},
+ {0x64f4, 0x7c2a}, {0x64fa, 0x776c}, {0x64fe, 0x6876},
+ {0x6500, 0x5a67}, {0x6504, 0x774c}, {0x6518, 0x6541},
+ {0x651d, 0x606e}, {0x6523, 0x557d}, {0x652a, 0x4e66},
+ {0x652b, 0x7c2b}, {0x652c, 0x553b}, {0x652f, 0x7228},
+ {0x6536, 0x6225}, {0x6537, 0x4d39}, {0x6538, 0x6a72},
+ {0x6539, 0x4b47}, {0x653b, 0x4d74}, {0x653e, 0x5b2f},
+ {0x653f, 0x6f59}, {0x6545, 0x4d3a}, {0x6548, 0x7c79},
+ {0x654d, 0x5f73}, {0x654e, 0x4e67}, {0x654f, 0x5a42},
+ {0x6551, 0x4f2d}, {0x6556, 0x6779}, {0x6557, 0x7828},
+ {0x655e, 0x7362}, {0x6562, 0x4a72}, {0x6563, 0x5f24},
+ {0x6566, 0x5444}, {0x656c, 0x4c57}, {0x656d, 0x6542},
+ {0x6572, 0x4d3b}, {0x6574, 0x6f5a}, {0x6575, 0x6e58},
+ {0x6577, 0x5d27}, {0x6578, 0x6226}, {0x657e, 0x6040},
+ {0x6582, 0x5630}, {0x6583, 0x784a}, {0x6585, 0x7c7a},
+ {0x6587, 0x597e}, {0x658c, 0x5e30}, {0x6590, 0x5d6c},
+ {0x6591, 0x5a68}, {0x6597, 0x5460}, {0x6599, 0x5679},
+ {0x659b, 0x4d57}, {0x659c, 0x5e58}, {0x659f, 0x7278},
+ {0x65a1, 0x6456}, {0x65a4, 0x5045}, {0x65a5, 0x742e},
+ {0x65a7, 0x5d28}, {0x65ab, 0x6d45}, {0x65ac, 0x7356},
+ {0x65af, 0x5e59}, {0x65b0, 0x6366}, {0x65b7, 0x5328},
+ {0x65b9, 0x5b30}, {0x65bc, 0x655a}, {0x65bd, 0x633f},
+ {0x65c1, 0x5b31}, {0x65c5, 0x5569}, {0x65cb, 0x6041},
+ {0x65cc, 0x6f5b}, {0x65cf, 0x7069}, {0x65d2, 0x5732},
+ {0x65d7, 0x507d}, {0x65e0, 0x5969}, {0x65e3, 0x507e},
+ {0x65e5, 0x6c6d}, {0x65e6, 0x5329}, {0x65e8, 0x7229},
+ {0x65e9, 0x7044}, {0x65ec, 0x6262}, {0x65ed, 0x696f},
+ {0x65f1, 0x7951}, {0x65f4, 0x6959}, {0x65fa, 0x685a},
+ {0x65fb, 0x5a43}, {0x65fc, 0x5a44}, {0x65fd, 0x5445},
+ {0x65ff, 0x677a}, {0x6606, 0x4d60}, {0x6607, 0x6330},
+ {0x6609, 0x5b32}, {0x660a, 0x7b44}, {0x660c, 0x7363},
+ {0x660e, 0x5925}, {0x660f, 0x7b67}, {0x6610, 0x5d4b},
+ {0x6611, 0x5054}, {0x6613, 0x6636}, {0x6614, 0x602e},
+ {0x6615, 0x7d5a}, {0x661e, 0x5c35}, {0x661f, 0x6078},
+ {0x6620, 0x6731}, {0x6625, 0x7570}, {0x6627, 0x585c},
+ {0x6628, 0x6d46}, {0x662d, 0x6139}, {0x662f, 0x6340},
+ {0x6630, 0x7940}, {0x6631, 0x6970}, {0x6634, 0x595b},
+ {0x6636, 0x7364}, {0x663a, 0x5c36}, {0x663b, 0x6469},
+ {0x6641, 0x7045}, {0x6642, 0x6341}, {0x6643, 0x7c4c},
+ {0x6644, 0x7c4d}, {0x6649, 0x724b}, {0x664b, 0x724c},
+ {0x664f, 0x644f}, {0x6659, 0x715b}, {0x665b, 0x7a59},
+ {0x665d, 0x7138}, {0x665e, 0x7d75}, {0x665f, 0x6079},
+ {0x6664, 0x677b}, {0x6665, 0x7c37}, {0x6666, 0x7c64},
+ {0x6667, 0x7b45}, {0x6668, 0x6367}, {0x6669, 0x5839},
+ {0x666b, 0x7678}, {0x666e, 0x5c45}, {0x666f, 0x4c58},
+ {0x6673, 0x602f}, {0x6674, 0x7467}, {0x6676, 0x6f5c},
+ {0x6677, 0x4f7c}, {0x6678, 0x6f5d}, {0x667a, 0x722a},
+ {0x6684, 0x7d3e}, {0x6687, 0x4a2c}, {0x6688, 0x7d3b},
+ {0x6689, 0x7d47}, {0x668e, 0x6732}, {0x6690, 0x6a51},
+ {0x6691, 0x5f74}, {0x6696, 0x516c}, {0x6697, 0x645e},
+ {0x6698, 0x6543}, {0x669d, 0x5926}, {0x66a0, 0x4d3c},
+ {0x66a2, 0x7365}, {0x66ab, 0x6d55}, {0x66ae, 0x593a},
+ {0x66b2, 0x6d67}, {0x66b3, 0x7b35}, {0x66b4, 0x786c},
+ {0x66b9, 0x6067}, {0x66bb, 0x4c59}, {0x66be, 0x5446},
+ {0x66c4, 0x6725}, {0x66c6, 0x5575}, {0x66c7, 0x533e},
+ {0x66c9, 0x7c7b}, {0x66d6, 0x6472}, {0x66d9, 0x5f75},
+ {0x66dc, 0x6878}, {0x66dd, 0x786d}, {0x66e0, 0x4e47},
+ {0x66e6, 0x7d76}, {0x66f0, 0x6858}, {0x66f2, 0x4d58},
+ {0x66f3, 0x6756}, {0x66f4, 0x4c5a}, {0x66f7, 0x4a63},
+ {0x66f8, 0x5f76}, {0x66f9, 0x7047}, {0x66fa, 0x7046},
+ {0x66fc, 0x583a}, {0x66fe, 0x7174}, {0x66ff, 0x7470},
+ {0x6700, 0x754c}, {0x6703, 0x7c65}, {0x6708, 0x6a45},
+ {0x6709, 0x6a73}, {0x670b, 0x5d5b}, {0x670d, 0x5c57},
+ {0x6714, 0x5e7d}, {0x6715, 0x7279}, {0x6717, 0x5547},
+ {0x671b, 0x5850}, {0x671d, 0x7048}, {0x671e, 0x5121},
+ {0x671f, 0x5122}, {0x6726, 0x5954}, {0x6727, 0x5668},
+ {0x6728, 0x594a}, {0x672a, 0x5a31}, {0x672b, 0x5847},
+ {0x672c, 0x5c62}, {0x672d, 0x734e}, {0x672e, 0x7574},
+ {0x6731, 0x7139}, {0x6734, 0x5a53}, {0x6736, 0x766a},
+ {0x673a, 0x4f75}, {0x673d, 0x7d2e}, {0x6746, 0x4a52},
+ {0x6749, 0x5f34}, {0x674e, 0x575d}, {0x674f, 0x7a3a},
+ {0x6750, 0x6e27}, {0x6751, 0x753d}, {0x6753, 0x7875},
+ {0x6756, 0x6d68}, {0x675c, 0x5461}, {0x675e, 0x5123},
+ {0x675f, 0x6156}, {0x676d, 0x7978}, {0x676f, 0x5b4a},
+ {0x6770, 0x4b79}, {0x6771, 0x5454}, {0x6773, 0x595c},
+ {0x6775, 0x6e3e}, {0x6777, 0x776d}, {0x677b, 0x526e},
+ {0x677e, 0x6166}, {0x677f, 0x7779}, {0x6787, 0x5d6d},
+ {0x6789, 0x685b}, {0x678b, 0x5b33}, {0x678f, 0x5177},
+ {0x6790, 0x6030}, {0x6793, 0x5462}, {0x6795, 0x7657},
+ {0x6797, 0x5779}, {0x679a, 0x585d}, {0x679c, 0x4d7d},
+ {0x679d, 0x722b}, {0x67af, 0x4d3d}, {0x67b0, 0x7842},
+ {0x67b3, 0x722c}, {0x67b6, 0x4a2d}, {0x67b7, 0x4a2e},
+ {0x67b8, 0x4f2e}, {0x67be, 0x6342}, {0x67c4, 0x5c37},
+ {0x67cf, 0x5b5a}, {0x67d0, 0x593b}, {0x67d1, 0x4a73},
+ {0x67d2, 0x7653}, {0x67d3, 0x6678}, {0x67d4, 0x6a75},
+ {0x67da, 0x6a76}, {0x67dd, 0x7679}, {0x67e9, 0x4f2f},
+ {0x67ec, 0x4a53}, {0x67ef, 0x4a2f}, {0x67f0, 0x5230},
+ {0x67f1, 0x713a}, {0x67f3, 0x5733}, {0x67f4, 0x6343},
+ {0x67f5, 0x737d}, {0x67f6, 0x5e5a}, {0x67fb, 0x5e5b},
+ {0x67fe, 0x6f5e}, {0x6812, 0x6263}, {0x6813, 0x6e7b},
+ {0x6816, 0x5f77}, {0x6817, 0x574a}, {0x6821, 0x4e68},
+ {0x6822, 0x5b5b}, {0x682a, 0x713b}, {0x682f, 0x6971},
+ {0x6838, 0x7a37}, {0x6839, 0x5046}, {0x683c, 0x4c2b},
+ {0x683d, 0x6e28}, {0x6840, 0x4b7a}, {0x6841, 0x7979},
+ {0x6842, 0x4c7d}, {0x6843, 0x537e}, {0x6848, 0x6450},
+ {0x684e, 0x726e}, {0x6850, 0x5455}, {0x6851, 0x5f4d},
+ {0x6853, 0x7c38}, {0x6854, 0x5150}, {0x686d, 0x724d},
+ {0x6876, 0x7752}, {0x687f, 0x4a54}, {0x6881, 0x5559},
+ {0x6885, 0x585e}, {0x688f, 0x4d59}, {0x6893, 0x6e29},
+ {0x6894, 0x763c}, {0x6897, 0x4c5b}, {0x689d, 0x7049},
+ {0x689f, 0x7c7c}, {0x68a1, 0x6849}, {0x68a2, 0x747e},
+ {0x68a7, 0x677c}, {0x68a8, 0x575e}, {0x68ad, 0x5e5c},
+ {0x68af, 0x702c}, {0x68b0, 0x4c7e}, {0x68b1, 0x4d61},
+ {0x68b3, 0x613a}, {0x68b5, 0x5b6f}, {0x68b6, 0x5a32},
+ {0x68c4, 0x5125}, {0x68c5, 0x5c38}, {0x68c9, 0x5876},
+ {0x68cb, 0x5124}, {0x68cd, 0x4d62}, {0x68d2, 0x5c6a},
+ {0x68d5, 0x7077}, {0x68d7, 0x704a}, {0x68d8, 0x503e},
+ {0x68da, 0x5d5c}, {0x68df, 0x5456}, {0x68e0, 0x5356},
+ {0x68e7, 0x6d50}, {0x68e8, 0x4d21}, {0x68ee, 0x5f35},
+ {0x68f2, 0x5f78}, {0x68f9, 0x5421}, {0x68fa, 0x4e32},
+ {0x6900, 0x684a}, {0x6905, 0x6b75}, {0x690d, 0x6355},
+ {0x690e, 0x7550}, {0x6912, 0x7521}, {0x6927, 0x5927},
+ {0x6930, 0x652b}, {0x693d, 0x664b}, {0x693f, 0x7571},
+ {0x694a, 0x6545}, {0x6953, 0x7923}, {0x6954, 0x605b},
+ {0x6955, 0x766b}, {0x6957, 0x4b71}, {0x6959, 0x596a},
+ {0x695a, 0x7522}, {0x695e, 0x5751}, {0x6960, 0x5178},
+ {0x6961, 0x6a78}, {0x6962, 0x6a79}, {0x6963, 0x5a33},
+ {0x6968, 0x6f5f}, {0x696b, 0x716f}, {0x696d, 0x6576},
+ {0x696e, 0x6e3f}, {0x696f, 0x6264}, {0x6975, 0x503f},
+ {0x6977, 0x7a2c}, {0x6978, 0x7551}, {0x6979, 0x6733},
+ {0x6995, 0x693e}, {0x699b, 0x724e}, {0x699c, 0x5b34},
+ {0x69a5, 0x7c4e}, {0x69a7, 0x5d6e}, {0x69ae, 0x6734},
+ {0x69b4, 0x5734}, {0x69bb, 0x7734}, {0x69c1, 0x4d3e},
+ {0x69c3, 0x5a69}, {0x69cb, 0x4f30}, {0x69cc, 0x7759},
+ {0x69cd, 0x7366}, {0x69d0, 0x4e59}, {0x69e8, 0x4e2a},
+ {0x69ea, 0x4b48}, {0x69fb, 0x5027}, {0x69fd, 0x704b},
+ {0x69ff, 0x5047}, {0x6a02, 0x6445}, {0x6a0a, 0x5b60},
+ {0x6a11, 0x555a}, {0x6a13, 0x5727}, {0x6a17, 0x6e40},
+ {0x6a19, 0x7876}, {0x6a1e, 0x7552}, {0x6a1f, 0x6d69},
+ {0x6a21, 0x593c}, {0x6a23, 0x6546}, {0x6a35, 0x7523},
+ {0x6a38, 0x5a54}, {0x6a39, 0x6227}, {0x6a3a, 0x7b7c},
+ {0x6a3d, 0x715c}, {0x6a44, 0x4a74}, {0x6a48, 0x687a},
+ {0x6a4b, 0x4e69}, {0x6a52, 0x6978}, {0x6a53, 0x6265},
+ {0x6a58, 0x5039}, {0x6a59, 0x5472}, {0x6a5f, 0x5126},
+ {0x6a61, 0x5f4e}, {0x6a6b, 0x7c74}, {0x6a80, 0x532a},
+ {0x6a84, 0x4c2c}, {0x6a89, 0x6f60}, {0x6a8d, 0x6565},
+ {0x6a8e, 0x5055}, {0x6a97, 0x5b7c}, {0x6a9c, 0x7c66},
+ {0x6aa2, 0x4b7e}, {0x6aa3, 0x6d6a}, {0x6ab3, 0x5e31},
+ {0x6abb, 0x7963}, {0x6ac2, 0x5422}, {0x6ac3, 0x4f76},
+ {0x6ad3, 0x5650}, {0x6ada, 0x556a}, {0x6adb, 0x716e},
+ {0x6af6, 0x7a4b}, {0x6afb, 0x6521}, {0x6b04, 0x5531},
+ {0x6b0a, 0x4f6d}, {0x6b0c, 0x6d6b}, {0x6b12, 0x5532},
+ {0x6b16, 0x553c}, {0x6b20, 0x7d62}, {0x6b21, 0x732d},
+ {0x6b23, 0x7d5b}, {0x6b32, 0x6930}, {0x6b3a, 0x5127},
+ {0x6b3d, 0x7d63}, {0x6b3e, 0x4e33}, {0x6b46, 0x7d64},
+ {0x6b47, 0x7a4e}, {0x6b4c, 0x4a30}, {0x6b4e, 0x7727},
+ {0x6b50, 0x4f31}, {0x6b5f, 0x6622}, {0x6b61, 0x7c36},
+ {0x6b62, 0x722d}, {0x6b63, 0x6f61}, {0x6b64, 0x732e},
+ {0x6b65, 0x5c46}, {0x6b66, 0x596b}, {0x6b6a, 0x6860},
+ {0x6b72, 0x6128}, {0x6b77, 0x5576}, {0x6b78, 0x4f7d},
+ {0x6b7b, 0x5e5d}, {0x6b7f, 0x5951}, {0x6b83, 0x646a},
+ {0x6b84, 0x724f}, {0x6b86, 0x773f}, {0x6b89, 0x6266},
+ {0x6b8a, 0x6228}, {0x6b96, 0x6356}, {0x6b98, 0x6d51},
+ {0x6b9e, 0x6979}, {0x6bae, 0x5631}, {0x6baf, 0x5e32},
+ {0x6bb2, 0x6068}, {0x6bb5, 0x532b}, {0x6bb7, 0x6b5c},
+ {0x6bba, 0x5f2f}, {0x6bbc, 0x4a43}, {0x6bbf, 0x6e7c},
+ {0x6bc1, 0x7d43}, {0x6bc5, 0x6b76}, {0x6bc6, 0x4f32},
+ {0x6bcb, 0x596c}, {0x6bcd, 0x593d}, {0x6bcf, 0x585f},
+ {0x6bd2, 0x5438}, {0x6bd3, 0x6b3e}, {0x6bd4, 0x5d6f},
+ {0x6bd6, 0x5d70}, {0x6bd7, 0x5d71}, {0x6bd8, 0x5d72},
+ {0x6bdb, 0x593e}, {0x6beb, 0x7b46}, {0x6bec, 0x4f33},
+ {0x6c08, 0x6e7d}, {0x6c0f, 0x642b}, {0x6c11, 0x5a45},
+ {0x6c13, 0x586c}, {0x6c23, 0x5128}, {0x6c34, 0x6229},
+ {0x6c37, 0x5e3c}, {0x6c38, 0x6735}, {0x6c3e, 0x5b70},
+ {0x6c40, 0x6f62}, {0x6c41, 0x7170}, {0x6c42, 0x4f34},
+ {0x6c4e, 0x5b71}, {0x6c50, 0x6031}, {0x6c55, 0x5f25},
+ {0x6c57, 0x7952}, {0x6c5a, 0x677d}, {0x6c5d, 0x6623},
+ {0x6c5e, 0x7b71}, {0x6c5f, 0x4b30}, {0x6c60, 0x722e},
+ {0x6c68, 0x4d67}, {0x6c6a, 0x685c}, {0x6c6d, 0x6757},
+ {0x6c70, 0x7740}, {0x6c72, 0x5063}, {0x6c76, 0x5a21},
+ {0x6c7a, 0x4c3d}, {0x6c7d, 0x5129}, {0x6c7e, 0x5d4c},
+ {0x6c81, 0x637e}, {0x6c82, 0x512a}, {0x6c83, 0x682a},
+ {0x6c85, 0x6a36}, {0x6c86, 0x797a}, {0x6c87, 0x664c},
+ {0x6c88, 0x7658}, {0x6c8c, 0x5447}, {0x6c90, 0x594b},
+ {0x6c92, 0x5952}, {0x6c93, 0x534b}, {0x6c94, 0x5877},
+ {0x6c95, 0x5a29}, {0x6c96, 0x7578}, {0x6c99, 0x5e5e},
+ {0x6c9a, 0x722f}, {0x6c9b, 0x7829}, {0x6cab, 0x5848},
+ {0x6cae, 0x6e41}, {0x6cb3, 0x7941}, {0x6cb8, 0x5d73},
+ {0x6cb9, 0x6a7a}, {0x6cbb, 0x763d}, {0x6cbc, 0x613b},
+ {0x6cbd, 0x4d3f}, {0x6cbe, 0x7454}, {0x6cbf, 0x664d},
+ {0x6cc1, 0x7c4f}, {0x6cc2, 0x7b22}, {0x6cc4, 0x605c},
+ {0x6cc9, 0x743b}, {0x6cca, 0x5a55}, {0x6ccc, 0x7932},
+ {0x6cd3, 0x7b72}, {0x6cd5, 0x5b76}, {0x6cd7, 0x5e5f},
+ {0x6cdb, 0x5b72}, {0x6ce1, 0x785c}, {0x6ce2, 0x776e},
+ {0x6ce3, 0x6b68}, {0x6ce5, 0x527a}, {0x6ce8, 0x713c},
+ {0x6ceb, 0x7a5a}, {0x6cee, 0x5a6a}, {0x6cef, 0x5a46},
+ {0x6cf0, 0x7741}, {0x6cf3, 0x6736}, {0x6d0b, 0x6547},
+ {0x6d0c, 0x562c}, {0x6d11, 0x5c47}, {0x6d17, 0x6129},
+ {0x6d19, 0x622a}, {0x6d1b, 0x5526}, {0x6d1e, 0x5457},
+ {0x6d25, 0x7250}, {0x6d27, 0x6a7b}, {0x6d29, 0x605d},
+ {0x6d2a, 0x7b73}, {0x6d32, 0x713d}, {0x6d35, 0x6267},
+ {0x6d36, 0x7d57}, {0x6d38, 0x4e48}, {0x6d39, 0x6a37},
+ {0x6d3b, 0x7c40}, {0x6d3d, 0x7d67}, {0x6d3e, 0x776f},
+ {0x6d41, 0x5735}, {0x6d59, 0x6f3a}, {0x6d5a, 0x715d},
+ {0x6d5c, 0x5e33}, {0x6d63, 0x684b}, {0x6d66, 0x785d},
+ {0x6d69, 0x7b47}, {0x6d6a, 0x5548}, {0x6d6c, 0x575f},
+ {0x6d6e, 0x5d29}, {0x6d74, 0x6931}, {0x6d77, 0x7a2d},
+ {0x6d78, 0x7659}, {0x6d79, 0x7a74}, {0x6d7f, 0x782a},
+ {0x6d85, 0x666e}, {0x6d87, 0x4c5c}, {0x6d88, 0x613c},
+ {0x6d89, 0x606f}, {0x6d8c, 0x693f}, {0x6d8d, 0x7c7d},
+ {0x6d8e, 0x664e}, {0x6d91, 0x6157}, {0x6d93, 0x664f},
+ {0x6d95, 0x7471}, {0x6daf, 0x6473}, {0x6db2, 0x647b},
+ {0x6db5, 0x7964}, {0x6dc0, 0x6f63}, {0x6dc3, 0x4f6e},
+ {0x6dc4, 0x763e}, {0x6dc5, 0x6032}, {0x6dc6, 0x7c7e},
+ {0x6dc7, 0x512b}, {0x6dcb, 0x577a}, {0x6dcf, 0x7b48},
+ {0x6dd1, 0x6257}, {0x6dd8, 0x5423}, {0x6dd9, 0x7078},
+ {0x6dda, 0x5728}, {0x6dde, 0x6167}, {0x6de1, 0x533f},
+ {0x6de8, 0x6f64}, {0x6dea, 0x5745}, {0x6deb, 0x6b62},
+ {0x6dee, 0x7c67}, {0x6df1, 0x6422}, {0x6df3, 0x6268},
+ {0x6df5, 0x6650}, {0x6df7, 0x7b68}, {0x6df8, 0x7468},
+ {0x6df9, 0x6574}, {0x6dfa, 0x743c}, {0x6dfb, 0x7455},
+ {0x6e17, 0x5f36}, {0x6e19, 0x7c39}, {0x6e1a, 0x6e42},
+ {0x6e1b, 0x4a75}, {0x6e1f, 0x6f65}, {0x6e20, 0x4b62},
+ {0x6e21, 0x5424}, {0x6e23, 0x5e60}, {0x6e24, 0x5a7d},
+ {0x6e25, 0x6446}, {0x6e26, 0x683e}, {0x6e2b, 0x605e},
+ {0x6e2c, 0x7634}, {0x6e2d, 0x6a52}, {0x6e2f, 0x797b},
+ {0x6e32, 0x6042}, {0x6e34, 0x4a64}, {0x6e36, 0x6737},
+ {0x6e38, 0x6a7d}, {0x6e3a, 0x595d}, {0x6e3c, 0x5a34},
+ {0x6e3d, 0x6e2a}, {0x6e3e, 0x7b69}, {0x6e43, 0x5b4b},
+ {0x6e44, 0x5a35}, {0x6e4a, 0x713e}, {0x6e4d, 0x532c},
+ {0x6e56, 0x7b49}, {0x6e58, 0x5f4f}, {0x6e5b, 0x5340},
+ {0x6e5c, 0x6357}, {0x6e5e, 0x6f66}, {0x6e5f, 0x7c50},
+ {0x6e67, 0x6940}, {0x6e6b, 0x7553}, {0x6e6e, 0x6c5c},
+ {0x6e6f, 0x7737}, {0x6e72, 0x6a38}, {0x6e73, 0x5179},
+ {0x6e7a, 0x5c48}, {0x6e90, 0x6a39}, {0x6e96, 0x715e},
+ {0x6e9c, 0x5736}, {0x6e9d, 0x4f35}, {0x6e9f, 0x5928},
+ {0x6ea2, 0x6c6e}, {0x6ea5, 0x5d2a}, {0x6eaa, 0x4d22},
+ {0x6eab, 0x682e}, {0x6eaf, 0x613d}, {0x6eb1, 0x7251},
+ {0x6eb6, 0x6941}, {0x6eba, 0x527c}, {0x6ec2, 0x5b35},
+ {0x6ec4, 0x7367}, {0x6ec5, 0x587e}, {0x6ec9, 0x7c51},
+ {0x6ecb, 0x6d32}, {0x6ecc, 0x742f}, {0x6ece, 0x7b23},
+ {0x6ed1, 0x7c41}, {0x6ed3, 0x6e2b}, {0x6ed4, 0x5425},
+ {0x6eef, 0x7472}, {0x6ef4, 0x6e59}, {0x6ef8, 0x7b4a},
+ {0x6efe, 0x4d63}, {0x6eff, 0x583b}, {0x6f01, 0x655b},
+ {0x6f02, 0x7877}, {0x6f06, 0x7654}, {0x6f0f, 0x5729},
+ {0x6f11, 0x4b49}, {0x6f14, 0x6651}, {0x6f15, 0x704c},
+ {0x6f20, 0x582e}, {0x6f22, 0x7953}, {0x6f23, 0x557e},
+ {0x6f2b, 0x583c}, {0x6f2c, 0x7230}, {0x6f31, 0x622b},
+ {0x6f32, 0x7368}, {0x6f38, 0x6f42}, {0x6f3f, 0x6d6c},
+ {0x6f41, 0x6738}, {0x6f51, 0x5a7e}, {0x6f54, 0x4c3e},
+ {0x6f57, 0x727c}, {0x6f58, 0x5a6b}, {0x6f5a, 0x6258},
+ {0x6f5b, 0x6d56}, {0x6f5e, 0x5651}, {0x6f5f, 0x6033},
+ {0x6f62, 0x7c52}, {0x6f64, 0x6b48}, {0x6f6d, 0x5341},
+ {0x6f6e, 0x704d}, {0x6f70, 0x4f77}, {0x6f7a, 0x6d52},
+ {0x6f7c, 0x5458}, {0x6f7d, 0x5c49}, {0x6f7e, 0x5771},
+ {0x6f81, 0x5f3b}, {0x6f84, 0x7325}, {0x6f88, 0x744d},
+ {0x6f8d, 0x713f}, {0x6f8e, 0x7831}, {0x6f90, 0x697a},
+ {0x6f94, 0x7b4b}, {0x6f97, 0x4a55}, {0x6fa3, 0x7954},
+ {0x6fa4, 0x774a}, {0x6fa7, 0x5648}, {0x6fae, 0x7c68},
+ {0x6faf, 0x733d}, {0x6fb1, 0x6e7e}, {0x6fb3, 0x677e},
+ {0x6fb9, 0x5342}, {0x6fbe, 0x5336}, {0x6fc0, 0x4c2d},
+ {0x6fc1, 0x767a}, {0x6fc2, 0x5632}, {0x6fc3, 0x5258},
+ {0x6fca, 0x6758}, {0x6fd5, 0x6325}, {0x6fda, 0x6739},
+ {0x6fdf, 0x702d}, {0x6fe0, 0x7b4c}, {0x6fe1, 0x6b21},
+ {0x6fe4, 0x5426}, {0x6fe9, 0x7b4d}, {0x6feb, 0x553d},
+ {0x6fec, 0x715f}, {0x6fef, 0x767b}, {0x6ff1, 0x5e34},
+ {0x6ffe, 0x556b}, {0x7001, 0x6548}, {0x7005, 0x7b24},
+ {0x7006, 0x5439}, {0x7009, 0x5e61}, {0x700b, 0x6423},
+ {0x700f, 0x5737}, {0x7011, 0x786e}, {0x7015, 0x5e35},
+ {0x7018, 0x5652}, {0x701a, 0x7955}, {0x701b, 0x673a},
+ {0x701c, 0x6b55}, {0x701d, 0x5577}, {0x701e, 0x6f67},
+ {0x701f, 0x613e}, {0x7023, 0x7a2e}, {0x7027, 0x5669},
+ {0x7028, 0x566e}, {0x702f, 0x673b}, {0x7037, 0x6c4b},
+ {0x703e, 0x5533}, {0x704c, 0x4e34}, {0x7050, 0x7b25},
+ {0x7051, 0x616e}, {0x7058, 0x7728}, {0x705d, 0x7b4e},
+ {0x7063, 0x583d}, {0x706b, 0x7b7d}, {0x7070, 0x7c69},
+ {0x7078, 0x4f36}, {0x707c, 0x6d47}, {0x707d, 0x6e2c},
+ {0x7085, 0x4c5d}, {0x708a, 0x7627}, {0x708e, 0x667a},
+ {0x7092, 0x7524}, {0x7098, 0x7d5c}, {0x7099, 0x6d33},
+ {0x709a, 0x4e49}, {0x70a1, 0x6f68}, {0x70a4, 0x613f},
+ {0x70ab, 0x7a5b}, {0x70ac, 0x4b63}, {0x70ad, 0x7729},
+ {0x70af, 0x7b26}, {0x70b3, 0x5c39}, {0x70b7, 0x7140},
+ {0x70b8, 0x6d48}, {0x70b9, 0x6f43}, {0x70c8, 0x562d},
+ {0x70cb, 0x7d4e}, {0x70cf, 0x6821}, {0x70d8, 0x7b74},
+ {0x70d9, 0x5527}, {0x70dd, 0x7176}, {0x70df, 0x6653},
+ {0x70f1, 0x4c5e}, {0x70f9, 0x7832}, {0x70fd, 0x5c6b},
+ {0x7104, 0x7d36}, {0x7109, 0x656a}, {0x710c, 0x7160},
+ {0x7119, 0x5b4c}, {0x711a, 0x5d4d}, {0x711e, 0x5448},
+ {0x7121, 0x596d}, {0x7126, 0x7525}, {0x7130, 0x667b},
+ {0x7136, 0x6654}, {0x7147, 0x7d48}, {0x7149, 0x5621},
+ {0x714a, 0x7d3f}, {0x714c, 0x7c53}, {0x714e, 0x6f21},
+ {0x7150, 0x673c}, {0x7156, 0x516e}, {0x7159, 0x6655},
+ {0x715c, 0x6972}, {0x715e, 0x5f30}, {0x7164, 0x5860},
+ {0x7165, 0x7c3a}, {0x7166, 0x7d2f}, {0x7167, 0x704e},
+ {0x7169, 0x5b61}, {0x716c, 0x6549}, {0x716e, 0x6d34},
+ {0x717d, 0x6043}, {0x7184, 0x6358}, {0x7189, 0x697b},
+ {0x718a, 0x6a28}, {0x718f, 0x7d37}, {0x7192, 0x7b27},
+ {0x7194, 0x6942}, {0x7199, 0x7d77}, {0x719f, 0x6259},
+ {0x71a2, 0x5c6c}, {0x71ac, 0x6822}, {0x71b1, 0x6670},
+ {0x71b9, 0x7d78}, {0x71ba, 0x7d79}, {0x71be, 0x763f},
+ {0x71c1, 0x6727}, {0x71c3, 0x6657}, {0x71c8, 0x5473},
+ {0x71c9, 0x5449}, {0x71ce, 0x567a}, {0x71d0, 0x5772},
+ {0x71d2, 0x6140}, {0x71d4, 0x5b62}, {0x71d5, 0x6658},
+ {0x71df, 0x673d}, {0x71e5, 0x704f}, {0x71e6, 0x733e},
+ {0x71e7, 0x622c}, {0x71ed, 0x7537}, {0x71ee, 0x6070},
+ {0x71fb, 0x7d38}, {0x71fc, 0x6368}, {0x71fe, 0x5427},
+ {0x71ff, 0x687c}, {0x7200, 0x7a52}, {0x7206, 0x786f},
+ {0x7210, 0x5653}, {0x721b, 0x5534}, {0x722a, 0x7050},
+ {0x722c, 0x7770}, {0x722d, 0x6e33}, {0x7230, 0x6a3a},
+ {0x7232, 0x6a53}, {0x7235, 0x6d49}, {0x7236, 0x5d2b},
+ {0x723a, 0x652c}, {0x723b, 0x7d21}, {0x723d, 0x5f50},
+ {0x723e, 0x6c33}, {0x7240, 0x5f51}, {0x7246, 0x6d6d},
+ {0x7247, 0x7838}, {0x7248, 0x777a}, {0x724c, 0x782b},
+ {0x7252, 0x7460}, {0x7258, 0x543a}, {0x7259, 0x6433},
+ {0x725b, 0x695a}, {0x725d, 0x5e36}, {0x725f, 0x593f},
+ {0x7261, 0x5940}, {0x7262, 0x566f}, {0x7267, 0x594c},
+ {0x7269, 0x5a2a}, {0x7272, 0x5f65}, {0x7279, 0x7765},
+ {0x727d, 0x4c32}, {0x7280, 0x5f79}, {0x7281, 0x5760},
+ {0x72a2, 0x543b}, {0x72a7, 0x7d7a}, {0x72ac, 0x4c33},
+ {0x72af, 0x5b73}, {0x72c0, 0x5f52}, {0x72c2, 0x4e4a},
+ {0x72c4, 0x6e5a}, {0x72ce, 0x6464}, {0x72d0, 0x7b4f},
+ {0x72d7, 0x4f37}, {0x72d9, 0x6e43}, {0x72e1, 0x4e6a},
+ {0x72e9, 0x622d}, {0x72f8, 0x5761}, {0x72f9, 0x7a75},
+ {0x72fc, 0x5549}, {0x72fd, 0x782c}, {0x730a, 0x6759},
+ {0x7316, 0x7369}, {0x731b, 0x586d}, {0x731c, 0x6344},
+ {0x731d, 0x7071}, {0x7325, 0x6865}, {0x7329, 0x607a},
+ {0x732a, 0x6e44}, {0x732b, 0x595e}, {0x7336, 0x6b22},
+ {0x7337, 0x6b23}, {0x733e, 0x7c42}, {0x733f, 0x6a3b},
+ {0x7344, 0x682b}, {0x7345, 0x5e62}, {0x7350, 0x6d6f},
+ {0x7352, 0x6823}, {0x7357, 0x4f71}, {0x7368, 0x543c},
+ {0x736a, 0x7c6a}, {0x7370, 0x673e}, {0x7372, 0x7c72},
+ {0x7375, 0x5634}, {0x7378, 0x622e}, {0x737a, 0x5337},
+ {0x737b, 0x7a4c}, {0x7384, 0x7a5c}, {0x7386, 0x6d35},
+ {0x7387, 0x6163}, {0x7389, 0x682c}, {0x738b, 0x685d},
+ {0x738e, 0x6f69}, {0x7394, 0x743d}, {0x7396, 0x4f38},
+ {0x7397, 0x695b}, {0x7398, 0x512c}, {0x739f, 0x5a47},
+ {0x73a7, 0x6b49}, {0x73a9, 0x684c}, {0x73ad, 0x5e37},
+ {0x73b2, 0x563c}, {0x73b3, 0x5365}, {0x73b9, 0x7a5d},
+ {0x73c0, 0x5a56}, {0x73c2, 0x4a31}, {0x73c9, 0x5a48},
+ {0x73ca, 0x5f26}, {0x73cc, 0x7933}, {0x73cd, 0x7252},
+ {0x73cf, 0x4a44}, {0x73d6, 0x4e4b}, {0x73d9, 0x4d75},
+ {0x73dd, 0x7d30}, {0x73de, 0x5528}, {0x73e0, 0x7141},
+ {0x73e3, 0x6269}, {0x73e4, 0x5c4a}, {0x73e5, 0x6c34},
+ {0x73e6, 0x7a40}, {0x73e9, 0x7b28}, {0x73ea, 0x5028},
+ {0x73ed, 0x5a6c}, {0x73f7, 0x596e}, {0x73f9, 0x607b},
+ {0x73fd, 0x6f6a}, {0x73fe, 0x7a5e}, {0x7401, 0x6044},
+ {0x7403, 0x4f39}, {0x7405, 0x554a}, {0x7406, 0x5762},
+ {0x7407, 0x622f}, {0x7409, 0x5738}, {0x7413, 0x684d},
+ {0x741b, 0x765a}, {0x7420, 0x6f22}, {0x7421, 0x625a},
+ {0x7422, 0x767c}, {0x7425, 0x7b50}, {0x7426, 0x512d},
+ {0x7428, 0x4d64}, {0x742a, 0x512e}, {0x742b, 0x5c6d},
+ {0x742c, 0x684e}, {0x742e, 0x7079}, {0x742f, 0x4e35},
+ {0x7430, 0x667c}, {0x7433, 0x577b}, {0x7434, 0x5056},
+ {0x7435, 0x5d75}, {0x7436, 0x7771}, {0x7438, 0x767d},
+ {0x743a, 0x5b77}, {0x743f, 0x7b6a}, {0x7440, 0x695c},
+ {0x7441, 0x5941}, {0x7443, 0x7572}, {0x7444, 0x6045},
+ {0x744b, 0x6a54}, {0x7455, 0x7942}, {0x7457, 0x6a3c},
+ {0x7459, 0x5245}, {0x745a, 0x7b51}, {0x745b, 0x6740},
+ {0x745c, 0x6b25}, {0x745e, 0x5f7a}, {0x745f, 0x6322},
+ {0x7460, 0x5739}, {0x7462, 0x6943}, {0x7464, 0x687d},
+ {0x7465, 0x682f}, {0x7468, 0x7253}, {0x7469, 0x7b29},
+ {0x746a, 0x5825}, {0x746f, 0x554b}, {0x747e, 0x5048},
+ {0x7482, 0x512f}, {0x7483, 0x5763}, {0x7487, 0x6046},
+ {0x7489, 0x5622}, {0x748b, 0x6d70}, {0x7498, 0x5773},
+ {0x749c, 0x7c54}, {0x749e, 0x5a57}, {0x749f, 0x4c5f},
+ {0x74a1, 0x7254}, {0x74a3, 0x5130}, {0x74a5, 0x4c60},
+ {0x74a7, 0x5b7d}, {0x74a8, 0x733f}, {0x74aa, 0x7051},
+ {0x74b0, 0x7c3b}, {0x74b2, 0x6230}, {0x74b5, 0x6625},
+ {0x74b9, 0x625b}, {0x74bd, 0x5f5e}, {0x74bf, 0x6047},
+ {0x74c6, 0x726f}, {0x74ca, 0x4c61}, {0x74cf, 0x566a},
+ {0x74d4, 0x6742}, {0x74d8, 0x4e36}, {0x74da, 0x7340},
+ {0x74dc, 0x4d7e}, {0x74e0, 0x7b52}, {0x74e2, 0x7878},
+ {0x74e3, 0x777b}, {0x74e6, 0x683f}, {0x74ee, 0x6837},
+ {0x74f7, 0x6d36}, {0x7501, 0x5c3a}, {0x7504, 0x4c34},
+ {0x7511, 0x7177}, {0x7515, 0x6838}, {0x7518, 0x4a76},
+ {0x751a, 0x6424}, {0x751b, 0x7456}, {0x751f, 0x5f66},
+ {0x7523, 0x5f27}, {0x7525, 0x5f67}, {0x7526, 0x6141},
+ {0x7528, 0x6944}, {0x752b, 0x5c4b}, {0x752c, 0x6945},
+ {0x7530, 0x6f23}, {0x7531, 0x6b26}, {0x7532, 0x4b23},
+ {0x7533, 0x6369}, {0x7537, 0x517b}, {0x7538, 0x6f24},
+ {0x753a, 0x6f6b}, {0x7547, 0x5034}, {0x754c, 0x4d23},
+ {0x754f, 0x6866}, {0x7551, 0x6f25}, {0x7553, 0x534c},
+ {0x7554, 0x5a6d}, {0x7559, 0x573a}, {0x755b, 0x7255},
+ {0x755c, 0x7565}, {0x755d, 0x596f}, {0x7562, 0x7934},
+ {0x7565, 0x5554}, {0x7566, 0x7d4f}, {0x756a, 0x5b63},
+ {0x756f, 0x7161}, {0x7570, 0x6c36}, {0x7575, 0x7b7e},
+ {0x7576, 0x5357}, {0x7578, 0x5131}, {0x757a, 0x4b31},
+ {0x757f, 0x5132}, {0x7586, 0x4b32}, {0x7587, 0x7142},
+ {0x758a, 0x7461}, {0x758b, 0x7935}, {0x758e, 0x6143},
+ {0x758f, 0x6142}, {0x7591, 0x6b77}, {0x759d, 0x5f28},
+ {0x75a5, 0x4b4a}, {0x75ab, 0x6639}, {0x75b1, 0x785e},
+ {0x75b2, 0x792a}, {0x75b3, 0x4a77}, {0x75b5, 0x6d37},
+ {0x75b8, 0x5338}, {0x75b9, 0x7256}, {0x75bc, 0x5459},
+ {0x75bd, 0x6e45}, {0x75be, 0x7270}, {0x75c2, 0x4a32},
+ {0x75c5, 0x5c3b}, {0x75c7, 0x7178}, {0x75cd, 0x6c37},
+ {0x75d2, 0x654a}, {0x75d4, 0x7640}, {0x75d5, 0x7d5d},
+ {0x75d8, 0x5463}, {0x75d9, 0x4c62}, {0x75db, 0x7754},
+ {0x75e2, 0x5765}, {0x75f0, 0x5343}, {0x75f2, 0x5826},
+ {0x75f4, 0x7641}, {0x75fa, 0x5d76}, {0x75fc, 0x4d40},
+ {0x7600, 0x655c}, {0x760d, 0x654b}, {0x7619, 0x6144},
+ {0x761f, 0x6830}, {0x7620, 0x7430}, {0x7621, 0x736a},
+ {0x7622, 0x5a6e}, {0x7624, 0x573b}, {0x7626, 0x6231},
+ {0x763b, 0x572a}, {0x7642, 0x567b}, {0x764c, 0x645f},
+ {0x764e, 0x4a56}, {0x7652, 0x6b28}, {0x7656, 0x5b7e},
+ {0x7661, 0x7642}, {0x7664, 0x6f3b}, {0x7669, 0x547d},
+ {0x766c, 0x6048}, {0x7670, 0x6839}, {0x7672, 0x6f26},
+ {0x7678, 0x4d24}, {0x767b, 0x5474}, {0x767c, 0x5b21},
+ {0x767d, 0x5b5c}, {0x767e, 0x5b5d}, {0x7684, 0x6e5c},
+ {0x7686, 0x4b4b}, {0x7687, 0x7c55}, {0x768e, 0x4e6b},
+ {0x7690, 0x4d41}, {0x7693, 0x7b53}, {0x76ae, 0x792b},
+ {0x76ba, 0x7554}, {0x76bf, 0x5929}, {0x76c2, 0x695d},
+ {0x76c3, 0x5b4d}, {0x76c6, 0x5d4e}, {0x76c8, 0x6743},
+ {0x76ca, 0x6c4c}, {0x76d2, 0x796c}, {0x76d6, 0x4b4c},
+ {0x76db, 0x607c}, {0x76dc, 0x5428}, {0x76de, 0x6d53},
+ {0x76df, 0x586f}, {0x76e1, 0x7257}, {0x76e3, 0x4a78},
+ {0x76e4, 0x5a6f}, {0x76e7, 0x5654}, {0x76ee, 0x594d},
+ {0x76f2, 0x586e}, {0x76f4, 0x7241}, {0x76f8, 0x5f53},
+ {0x76fc, 0x5a70}, {0x76fe, 0x626a}, {0x7701, 0x607d},
+ {0x7704, 0x5878}, {0x7708, 0x772f}, {0x7709, 0x5a36},
+ {0x770b, 0x4a57}, {0x771e, 0x7258}, {0x7720, 0x5879},
+ {0x7729, 0x7a5f}, {0x7737, 0x4f6f}, {0x7738, 0x5942},
+ {0x773a, 0x7052}, {0x773c, 0x6451}, {0x7740, 0x7337},
+ {0x774d, 0x7a60}, {0x775b, 0x6f6c}, {0x7761, 0x6232},
+ {0x7763, 0x543d}, {0x7766, 0x594e}, {0x776b, 0x7462},
+ {0x7779, 0x5429}, {0x777e, 0x4d42}, {0x777f, 0x675a},
+ {0x778b, 0x7259}, {0x7791, 0x592a}, {0x779e, 0x583e},
+ {0x77a5, 0x5c2d}, {0x77ac, 0x626b}, {0x77ad, 0x567c},
+ {0x77b0, 0x4a79}, {0x77b3, 0x545a}, {0x77bb, 0x7457},
+ {0x77bc, 0x4c21}, {0x77bf, 0x4f3a}, {0x77d7, 0x7538},
+ {0x77db, 0x5943}, {0x77dc, 0x5068}, {0x77e2, 0x6345},
+ {0x77e3, 0x6b78}, {0x77e5, 0x7231}, {0x77e9, 0x4f3b},
+ {0x77ed, 0x532d}, {0x77ee, 0x6861}, {0x77ef, 0x4e6c},
+ {0x77f3, 0x6034}, {0x7802, 0x5e63}, {0x7812, 0x5d77},
+ {0x7825, 0x7232}, {0x7826, 0x7376}, {0x7827, 0x765b},
+ {0x782c, 0x577e}, {0x7832, 0x785f}, {0x7834, 0x7772},
+ {0x7845, 0x5029}, {0x784f, 0x665a}, {0x785d, 0x7526},
+ {0x786b, 0x573c}, {0x786c, 0x4c63}, {0x786f, 0x665b},
+ {0x787c, 0x5d5d}, {0x7881, 0x5133}, {0x7887, 0x6f6d},
+ {0x788c, 0x565e}, {0x788d, 0x6474}, {0x788e, 0x616f},
+ {0x7891, 0x5d78}, {0x7897, 0x684f}, {0x78a3, 0x4a65},
+ {0x78a7, 0x5c21}, {0x78a9, 0x6035}, {0x78ba, 0x7c2c},
+ {0x78bb, 0x7c2d}, {0x78bc, 0x5827}, {0x78c1, 0x6d38},
+ {0x78c5, 0x5b36}, {0x78ca, 0x5670}, {0x78cb, 0x732f},
+ {0x78ce, 0x4d25}, {0x78d0, 0x5a71}, {0x78e8, 0x5828},
+ {0x78ec, 0x4c64}, {0x78ef, 0x5134}, {0x78f5, 0x4a58},
+ {0x78fb, 0x5a72}, {0x7901, 0x7527}, {0x790e, 0x7528},
+ {0x7916, 0x6626}, {0x792a, 0x556c}, {0x792b, 0x5578},
+ {0x792c, 0x5a73}, {0x793a, 0x6346}, {0x793e, 0x5e64},
+ {0x7940, 0x5e65}, {0x7941, 0x5135}, {0x7947, 0x5136},
+ {0x7948, 0x5137}, {0x7949, 0x7233}, {0x7950, 0x695e},
+ {0x7956, 0x7053}, {0x7957, 0x7234}, {0x795a, 0x7054},
+ {0x795b, 0x4b64}, {0x795c, 0x7b54}, {0x795d, 0x7566},
+ {0x795e, 0x636a}, {0x7960, 0x5e66}, {0x7965, 0x5f54},
+ {0x7968, 0x7879}, {0x796d, 0x702e}, {0x797a, 0x5138},
+ {0x797f, 0x565f}, {0x7981, 0x5057}, {0x798d, 0x7c21},
+ {0x798e, 0x6f6e}, {0x798f, 0x5c58}, {0x7991, 0x695f},
+ {0x79a6, 0x655d}, {0x79a7, 0x7d7b}, {0x79aa, 0x6049},
+ {0x79ae, 0x5649}, {0x79b1, 0x542a}, {0x79b3, 0x654c},
+ {0x79b9, 0x6960}, {0x79bd, 0x5058}, {0x79be, 0x7c22},
+ {0x79bf, 0x543e}, {0x79c0, 0x6233}, {0x79c1, 0x5e67},
+ {0x79c9, 0x5c3c}, {0x79ca, 0x5236}, {0x79cb, 0x7555},
+ {0x79d1, 0x4e21}, {0x79d2, 0x7529}, {0x79d5, 0x5d79},
+ {0x79d8, 0x5d7a}, {0x79df, 0x7055}, {0x79e4, 0x765f},
+ {0x79e6, 0x725a}, {0x79e7, 0x646b}, {0x79e9, 0x7271},
+ {0x79fb, 0x6c39}, {0x7a00, 0x7d7c}, {0x7a05, 0x612a},
+ {0x7a08, 0x4a59}, {0x7a0b, 0x6f6f}, {0x7a0d, 0x752a},
+ {0x7a14, 0x6c79}, {0x7a17, 0x782d}, {0x7a19, 0x7242},
+ {0x7a1a, 0x7643}, {0x7a1c, 0x5752}, {0x7a1f, 0x7922},
+ {0x7a20, 0x7056}, {0x7a2e, 0x707a}, {0x7a31, 0x7660},
+ {0x7a36, 0x6973}, {0x7a37, 0x7243}, {0x7a3b, 0x542b},
+ {0x7a3c, 0x4a33}, {0x7a3d, 0x4d26}, {0x7a3f, 0x4d43},
+ {0x7a40, 0x4d5a}, {0x7a46, 0x594f}, {0x7a49, 0x7644},
+ {0x7a4d, 0x6e5d}, {0x7a4e, 0x6744}, {0x7a57, 0x6234},
+ {0x7a61, 0x5f62}, {0x7a62, 0x675b}, {0x7a69, 0x6831},
+ {0x7a6b, 0x7c2e}, {0x7a70, 0x654d}, {0x7a74, 0x7a6b},
+ {0x7a76, 0x4f3c}, {0x7a79, 0x4f62}, {0x7a7a, 0x4d76},
+ {0x7a7d, 0x6f70}, {0x7a7f, 0x743e}, {0x7a81, 0x544d},
+ {0x7a84, 0x7338}, {0x7a88, 0x6921}, {0x7a92, 0x7272},
+ {0x7a93, 0x736b}, {0x7a95, 0x7057}, {0x7a98, 0x4f57},
+ {0x7a9f, 0x4f5f}, {0x7aa9, 0x6840}, {0x7aaa, 0x6841},
+ {0x7aae, 0x4f63}, {0x7aaf, 0x6922}, {0x7aba, 0x502a},
+ {0x7ac4, 0x7341}, {0x7ac5, 0x502b}, {0x7ac7, 0x5464},
+ {0x7aca, 0x6f3c}, {0x7acb, 0x5821}, {0x7ad7, 0x595f},
+ {0x7ad9, 0x7357}, {0x7add, 0x5c3d}, {0x7adf, 0x4c65},
+ {0x7ae0, 0x6d71}, {0x7ae3, 0x7162}, {0x7ae5, 0x545b},
+ {0x7aea, 0x6235}, {0x7aed, 0x4a66}, {0x7aef, 0x532e},
+ {0x7af6, 0x4c66}, {0x7af9, 0x7153}, {0x7afa, 0x7567},
+ {0x7aff, 0x4a5a}, {0x7b0f, 0x7b6e}, {0x7b11, 0x6145},
+ {0x7b19, 0x5f69}, {0x7b1b, 0x6e5e}, {0x7b1e, 0x7742},
+ {0x7b20, 0x5822}, {0x7b26, 0x5d2c}, {0x7b2c, 0x702f},
+ {0x7b2d, 0x563d}, {0x7b39, 0x612b}, {0x7b46, 0x7936},
+ {0x7b49, 0x5475}, {0x7b4b, 0x5049}, {0x7b4c, 0x6f27},
+ {0x7b4d, 0x626c}, {0x7b4f, 0x5b6a}, {0x7b50, 0x4e4c},
+ {0x7b51, 0x7568}, {0x7b52, 0x7755}, {0x7b54, 0x534d},
+ {0x7b56, 0x737e}, {0x7b60, 0x5035}, {0x7b6c, 0x607e},
+ {0x7b6e, 0x5f7b}, {0x7b75, 0x665d}, {0x7b7d, 0x6824},
+ {0x7b87, 0x4b4d}, {0x7b8b, 0x6f28}, {0x7b8f, 0x6e34},
+ {0x7b94, 0x5a58}, {0x7b95, 0x5139}, {0x7b97, 0x5f29},
+ {0x7b9a, 0x7330}, {0x7b9d, 0x4c44}, {0x7ba1, 0x4e37},
+ {0x7bad, 0x6f29}, {0x7bb1, 0x5f55}, {0x7bb4, 0x6d57},
+ {0x7bb8, 0x6e46}, {0x7bc0, 0x6f3d}, {0x7bc1, 0x7c56},
+ {0x7bc4, 0x5b74}, {0x7bc6, 0x6f2a}, {0x7bc7, 0x7839},
+ {0x7bc9, 0x7569}, {0x7bd2, 0x6359}, {0x7be0, 0x6146},
+ {0x7be4, 0x543f}, {0x7be9, 0x5e68}, {0x7c07, 0x706a},
+ {0x7c12, 0x7342}, {0x7c1e, 0x532f}, {0x7c21, 0x4a5b},
+ {0x7c27, 0x7c57}, {0x7c2a, 0x6d58}, {0x7c2b, 0x6147},
+ {0x7c3d, 0x7458}, {0x7c3e, 0x5633}, {0x7c3f, 0x5d2d},
+ {0x7c43, 0x553e}, {0x7c4c, 0x7143}, {0x7c4d, 0x6e5f},
+ {0x7c60, 0x566b}, {0x7c64, 0x7459}, {0x7c6c, 0x5766},
+ {0x7c73, 0x5a37}, {0x7c83, 0x5d7b}, {0x7c89, 0x5d4f},
+ {0x7c92, 0x5823}, {0x7c95, 0x5a59}, {0x7c97, 0x7058},
+ {0x7c98, 0x6f44}, {0x7c9f, 0x6158}, {0x7ca5, 0x7154},
+ {0x7ca7, 0x6d72}, {0x7cae, 0x555b}, {0x7cb1, 0x555c},
+ {0x7cb2, 0x7344}, {0x7cb3, 0x4b57}, {0x7cb9, 0x6236},
+ {0x7cbe, 0x6f71}, {0x7cca, 0x7b55}, {0x7cd6, 0x5358},
+ {0x7cde, 0x5d50}, {0x7cdf, 0x7059}, {0x7ce0, 0x4b33},
+ {0x7ce7, 0x555d}, {0x7cfb, 0x4d27}, {0x7cfe, 0x502c},
+ {0x7d00, 0x513a}, {0x7d02, 0x7144}, {0x7d04, 0x6533},
+ {0x7d05, 0x7b75}, {0x7d06, 0x6961}, {0x7d07, 0x7d60},
+ {0x7d08, 0x7c3c}, {0x7d0a, 0x5a22}, {0x7d0b, 0x5a23},
+ {0x7d0d, 0x5221}, {0x7d10, 0x526f}, {0x7d14, 0x626d},
+ {0x7d17, 0x5e69}, {0x7d18, 0x4e5c}, {0x7d19, 0x7235},
+ {0x7d1a, 0x5064}, {0x7d1b, 0x5d51}, {0x7d20, 0x6148},
+ {0x7d21, 0x5b37}, {0x7d22, 0x5f63}, {0x7d2b, 0x6d39},
+ {0x7d2c, 0x7145}, {0x7d2e, 0x734f}, {0x7d2f, 0x572b},
+ {0x7d30, 0x612c}, {0x7d33, 0x636b}, {0x7d35, 0x6e47},
+ {0x7d39, 0x6149}, {0x7d3a, 0x4a7a}, {0x7d42, 0x707b},
+ {0x7d43, 0x7a61}, {0x7d44, 0x705a}, {0x7d45, 0x4c67},
+ {0x7d46, 0x5a74}, {0x7d50, 0x4c3f}, {0x7d5e, 0x4e6d},
+ {0x7d61, 0x5529}, {0x7d62, 0x7a62}, {0x7d66, 0x5065},
+ {0x7d68, 0x6b56}, {0x7d6a, 0x6c5f}, {0x7d6e, 0x5f7c},
+ {0x7d71, 0x7756}, {0x7d72, 0x5e6a}, {0x7d73, 0x4b34},
+ {0x7d76, 0x6f3e}, {0x7d79, 0x4c35}, {0x7d7f, 0x4f3d},
+ {0x7d8e, 0x6f72}, {0x7d8f, 0x6237}, {0x7d93, 0x4c68},
+ {0x7d9c, 0x707c}, {0x7da0, 0x5660}, {0x7da2, 0x7146},
+ {0x7dac, 0x6238}, {0x7dad, 0x6b2b}, {0x7db1, 0x4b35},
+ {0x7db2, 0x5851}, {0x7db4, 0x744e}, {0x7db5, 0x7377},
+ {0x7db8, 0x5746}, {0x7dba, 0x513b}, {0x7dbb, 0x772a},
+ {0x7dbd, 0x6d4a}, {0x7dbe, 0x5753}, {0x7dbf, 0x587a},
+ {0x7dc7, 0x7645}, {0x7dca, 0x514c}, {0x7dcb, 0x5d7c},
+ {0x7dd6, 0x5f7d}, {0x7dd8, 0x7965}, {0x7dda, 0x604a},
+ {0x7ddd, 0x727d}, {0x7dde, 0x5330}, {0x7de0, 0x7473},
+ {0x7de1, 0x5a49}, {0x7de3, 0x665e}, {0x7de8, 0x783a},
+ {0x7de9, 0x6850}, {0x7dec, 0x587b}, {0x7def, 0x6a55},
+ {0x7df4, 0x5623}, {0x7dfb, 0x7646}, {0x7e09, 0x725b},
+ {0x7e0a, 0x647c}, {0x7e15, 0x6832}, {0x7e1b, 0x5a5a},
+ {0x7e1d, 0x725c}, {0x7e1e, 0x7b56}, {0x7e1f, 0x6932},
+ {0x7e21, 0x6e2d}, {0x7e23, 0x7a63}, {0x7e2b, 0x5c6e},
+ {0x7e2e, 0x756a}, {0x7e2f, 0x6660}, {0x7e31, 0x707d},
+ {0x7e37, 0x572c}, {0x7e3d, 0x7545}, {0x7e3e, 0x6e60},
+ {0x7e41, 0x5b65}, {0x7e43, 0x5d5e}, {0x7e46, 0x5970},
+ {0x7e47, 0x6923}, {0x7e52, 0x7179}, {0x7e54, 0x7244},
+ {0x7e55, 0x604b}, {0x7e5e, 0x6924}, {0x7e61, 0x6239},
+ {0x7e69, 0x6331}, {0x7e6a, 0x7c6b}, {0x7e6b, 0x4d28},
+ {0x7e6d, 0x4c36}, {0x7e70, 0x705b}, {0x7e79, 0x663a},
+ {0x7e7c, 0x4d29}, {0x7e82, 0x7343}, {0x7e8c, 0x6159},
+ {0x7e8f, 0x6f2b}, {0x7e93, 0x6745}, {0x7e96, 0x6069},
+ {0x7e98, 0x7345}, {0x7e9b, 0x5440}, {0x7e9c, 0x553f},
+ {0x7f36, 0x5d2e}, {0x7f38, 0x797c}, {0x7f3a, 0x4c40},
+ {0x7f4c, 0x6522}, {0x7f50, 0x4e38}, {0x7f54, 0x5852},
+ {0x7f55, 0x7956}, {0x7f6a, 0x712a}, {0x7f6b, 0x4e51},
+ {0x7f6e, 0x7647}, {0x7f70, 0x5b6b}, {0x7f72, 0x5f7e},
+ {0x7f75, 0x5861}, {0x7f77, 0x7773}, {0x7f79, 0x5767},
+ {0x7f85, 0x547e}, {0x7f88, 0x513c}, {0x7f8a, 0x654f},
+ {0x7f8c, 0x4b36}, {0x7f8e, 0x5a38}, {0x7f94, 0x4d44},
+ {0x7f9a, 0x563e}, {0x7f9e, 0x623a}, {0x7fa4, 0x4f58},
+ {0x7fa8, 0x604c}, {0x7fa9, 0x6b79}, {0x7fb2, 0x7d7d},
+ {0x7fb8, 0x5768}, {0x7fb9, 0x4b58}, {0x7fbd, 0x6962},
+ {0x7fc1, 0x683a}, {0x7fc5, 0x6347}, {0x7fca, 0x6c4d},
+ {0x7fcc, 0x6c4e}, {0x7fce, 0x563f}, {0x7fd2, 0x6327},
+ {0x7fd4, 0x5f56}, {0x7fd5, 0x7d68}, {0x7fdf, 0x6e61},
+ {0x7fe0, 0x7628}, {0x7fe1, 0x5d7d}, {0x7fe9, 0x783b},
+ {0x7feb, 0x6851}, {0x7ff0, 0x7957}, {0x7ff9, 0x4e6e},
+ {0x7ffc, 0x6c4f}, {0x8000, 0x6925}, {0x8001, 0x5655},
+ {0x8003, 0x4d45}, {0x8005, 0x6d3a}, {0x8006, 0x513d},
+ {0x8009, 0x4f3e}, {0x800c, 0x6c3b}, {0x8010, 0x5231},
+ {0x8015, 0x4c69}, {0x8017, 0x5944}, {0x8018, 0x697c},
+ {0x802d, 0x513e}, {0x8033, 0x6c3c}, {0x8036, 0x652d},
+ {0x803d, 0x7730}, {0x803f, 0x4c6a}, {0x8043, 0x5344},
+ {0x8046, 0x5640}, {0x804a, 0x567d}, {0x8056, 0x6121},
+ {0x8058, 0x5e3d}, {0x805a, 0x7629}, {0x805e, 0x5a24},
+ {0x806f, 0x5624}, {0x8070, 0x7546}, {0x8072, 0x6122},
+ {0x8073, 0x6946}, {0x8077, 0x7245}, {0x807d, 0x7469},
+ {0x807e, 0x566c}, {0x807f, 0x6b53}, {0x8084, 0x6c3d},
+ {0x8085, 0x625c}, {0x8086, 0x5e6b}, {0x8087, 0x705c},
+ {0x8089, 0x6b3f}, {0x808b, 0x574e}, {0x808c, 0x513f},
+ {0x8096, 0x752b}, {0x809b, 0x797d}, {0x809d, 0x4a5c},
+ {0x80a1, 0x4d46}, {0x80a2, 0x7236}, {0x80a5, 0x5d7e},
+ {0x80a9, 0x4c37}, {0x80aa, 0x5b38}, {0x80af, 0x5069},
+ {0x80b1, 0x4e5d}, {0x80b2, 0x6b40}, {0x80b4, 0x7d22},
+ {0x80ba, 0x784b}, {0x80c3, 0x6a56}, {0x80c4, 0x7130},
+ {0x80cc, 0x5b4e}, {0x80ce, 0x7743}, {0x80da, 0x5b4f},
+ {0x80db, 0x4b24}, {0x80de, 0x7860}, {0x80e1, 0x7b57},
+ {0x80e4, 0x6b4a}, {0x80e5, 0x6021}, {0x80f1, 0x4e4d},
+ {0x80f4, 0x545c}, {0x80f8, 0x7d58}, {0x80fd, 0x5276},
+ {0x8102, 0x7237}, {0x8105, 0x7a76}, {0x8106, 0x762a},
+ {0x8107, 0x7a77}, {0x8108, 0x5866}, {0x810a, 0x7431},
+ {0x8118, 0x6852}, {0x811a, 0x4a45}, {0x811b, 0x4c6b},
+ {0x8123, 0x626e}, {0x8129, 0x623b}, {0x812b, 0x772d},
+ {0x812f, 0x7861}, {0x8139, 0x736c}, {0x813e, 0x5e21},
+ {0x814b, 0x647d}, {0x814e, 0x636c}, {0x8150, 0x5d2f},
+ {0x8151, 0x5d30}, {0x8154, 0x4b37}, {0x8155, 0x6853},
+ {0x8165, 0x6123}, {0x8166, 0x5260}, {0x816b, 0x707e},
+ {0x8170, 0x6926}, {0x8171, 0x4b72}, {0x8178, 0x6d73},
+ {0x8179, 0x5c59}, {0x817a, 0x604d}, {0x817f, 0x775a},
+ {0x8180, 0x5b39}, {0x8188, 0x4c2e}, {0x818a, 0x5a5b},
+ {0x818f, 0x4d47}, {0x819a, 0x5d31}, {0x819c, 0x582f},
+ {0x819d, 0x6323}, {0x81a0, 0x4e6f}, {0x81a3, 0x7273},
+ {0x81a8, 0x7833}, {0x81b3, 0x604e}, {0x81b5, 0x757d},
+ {0x81ba, 0x6b6c}, {0x81bd, 0x5345}, {0x81be, 0x7c6c},
+ {0x81bf, 0x525b}, {0x81c0, 0x546b}, {0x81c2, 0x5e22},
+ {0x81c6, 0x6566}, {0x81cd, 0x7030}, {0x81d8, 0x5544},
+ {0x81df, 0x6d74}, {0x81e3, 0x636d}, {0x81e5, 0x6842},
+ {0x81e7, 0x6d75}, {0x81e8, 0x577c}, {0x81ea, 0x6d3b},
+ {0x81ed, 0x762b}, {0x81f3, 0x7238}, {0x81f4, 0x7648},
+ {0x81fa, 0x5366}, {0x81fb, 0x725d}, {0x81fc, 0x4f3f},
+ {0x81fe, 0x6b2c}, {0x8205, 0x4f40}, {0x8207, 0x6628},
+ {0x8208, 0x7d69}, {0x820a, 0x4f41}, {0x820c, 0x605f},
+ {0x820d, 0x5e6c}, {0x8212, 0x6022}, {0x821b, 0x743f},
+ {0x821c, 0x626f}, {0x821e, 0x5971}, {0x821f, 0x7147},
+ {0x8221, 0x4b38}, {0x822a, 0x797e}, {0x822b, 0x5b3a},
+ {0x822c, 0x5a75}, {0x8235, 0x766c}, {0x8236, 0x5a5c},
+ {0x8237, 0x7a64}, {0x8239, 0x604f}, {0x8240, 0x5d32},
+ {0x8245, 0x6629}, {0x8247, 0x6f73}, {0x8259, 0x736d},
+ {0x8264, 0x6b7a}, {0x8266, 0x7966}, {0x826e, 0x4a5d},
+ {0x826f, 0x555e}, {0x8271, 0x4a5e}, {0x8272, 0x5f64},
+ {0x8276, 0x667d}, {0x8278, 0x752c}, {0x827e, 0x6475},
+ {0x828b, 0x6963}, {0x828d, 0x6d4b}, {0x828e, 0x4f64},
+ {0x8292, 0x5853}, {0x8299, 0x5d33}, {0x829a, 0x546c},
+ {0x829d, 0x7239}, {0x829f, 0x5f37}, {0x82a5, 0x4b4e},
+ {0x82a6, 0x7b58}, {0x82a9, 0x5059}, {0x82ac, 0x5d52},
+ {0x82ad, 0x7774}, {0x82ae, 0x675c}, {0x82af, 0x6425},
+ {0x82b1, 0x7c23}, {0x82b3, 0x5b3b}, {0x82b7, 0x723a},
+ {0x82b8, 0x697d}, {0x82b9, 0x504a}, {0x82bb, 0x7556},
+ {0x82bc, 0x5945}, {0x82bd, 0x6434}, {0x82bf, 0x6d27},
+ {0x82d1, 0x6a3d}, {0x82d2, 0x667e}, {0x82d4, 0x7744},
+ {0x82d5, 0x752d}, {0x82d7, 0x5960}, {0x82db, 0x4a34},
+ {0x82de, 0x7862}, {0x82df, 0x4f42}, {0x82e1, 0x6c3e},
+ {0x82e5, 0x6534}, {0x82e6, 0x4d48}, {0x82e7, 0x6e48},
+ {0x82f1, 0x6748}, {0x82fd, 0x4d49}, {0x82fe, 0x7937},
+ {0x8301, 0x7168}, {0x8302, 0x5972}, {0x8303, 0x5b75},
+ {0x8304, 0x4a35}, {0x8305, 0x5946}, {0x8309, 0x5849},
+ {0x8317, 0x592b}, {0x8328, 0x6d3c}, {0x832b, 0x5854},
+ {0x832f, 0x5c5a}, {0x8331, 0x623c}, {0x8334, 0x7c6d},
+ {0x8335, 0x6c60}, {0x8336, 0x527e}, {0x8338, 0x6947},
+ {0x8339, 0x662a}, {0x8340, 0x6270}, {0x8347, 0x7a3b},
+ {0x8349, 0x752e}, {0x834a, 0x7b2a}, {0x834f, 0x6c7b},
+ {0x8351, 0x6c3f}, {0x8352, 0x7c58}, {0x8373, 0x5465},
+ {0x8377, 0x7943}, {0x837b, 0x6e62}, {0x8389, 0x5769},
+ {0x838a, 0x6d76}, {0x838e, 0x5e6d}, {0x8396, 0x4c6c},
+ {0x8398, 0x636e}, {0x839e, 0x6854}, {0x83a2, 0x7a78},
+ {0x83a9, 0x5d34}, {0x83aa, 0x6435}, {0x83ab, 0x5830},
+ {0x83bd, 0x5855}, {0x83c1, 0x746a}, {0x83c5, 0x4e39},
+ {0x83c9, 0x5661}, {0x83ca, 0x4f52}, {0x83cc, 0x5036},
+ {0x83d3, 0x4e22}, {0x83d6, 0x736e}, {0x83dc, 0x7378},
+ {0x83e9, 0x5c4c}, {0x83eb, 0x504b}, {0x83ef, 0x7c24},
+ {0x83f0, 0x4d4a}, {0x83f1, 0x5754}, {0x83f2, 0x5e23},
+ {0x83f4, 0x6460}, {0x83f9, 0x6e49}, {0x83fd, 0x625d},
+ {0x8403, 0x757e}, {0x8404, 0x542c}, {0x840a, 0x5551},
+ {0x840c, 0x5870}, {0x840d, 0x7843}, {0x840e, 0x6a57},
+ {0x8429, 0x7557}, {0x842c, 0x583f}, {0x8431, 0x7d40},
+ {0x8438, 0x6b2d}, {0x843d, 0x552a}, {0x8449, 0x6728},
+ {0x8457, 0x6e4a}, {0x845b, 0x4a67}, {0x8461, 0x7863},
+ {0x8463, 0x545d}, {0x8466, 0x6a58}, {0x846b, 0x7b59},
+ {0x846c, 0x6d77}, {0x846f, 0x6535}, {0x8475, 0x502d},
+ {0x847a, 0x7171}, {0x8490, 0x623d}, {0x8494, 0x6348},
+ {0x8499, 0x5955}, {0x849c, 0x5f2a}, {0x84a1, 0x5b3c},
+ {0x84b2, 0x7864}, {0x84b8, 0x717a}, {0x84bb, 0x6536},
+ {0x84bc, 0x736f}, {0x84bf, 0x7b5a}, {0x84c0, 0x6160},
+ {0x84c2, 0x592c}, {0x84c4, 0x756b}, {0x84c6, 0x6036},
+ {0x84c9, 0x6948}, {0x84cb, 0x4b4f}, {0x84cd, 0x6349},
+ {0x84d1, 0x5e6e}, {0x84da, 0x623e}, {0x84ec, 0x5c6f},
+ {0x84ee, 0x5625}, {0x84f4, 0x6271}, {0x84fc, 0x567e},
+ {0x8511, 0x5921}, {0x8513, 0x5840}, {0x8514, 0x5c5b},
+ {0x8517, 0x6d3d}, {0x8518, 0x5f38}, {0x851a, 0x6a25},
+ {0x851e, 0x572d}, {0x8521, 0x7379}, {0x8523, 0x6d78},
+ {0x8525, 0x7547}, {0x852c, 0x614a}, {0x852d, 0x6b63},
+ {0x852f, 0x725e}, {0x853d, 0x784c}, {0x853f, 0x6a59},
+ {0x8541, 0x5346}, {0x8543, 0x5b66}, {0x8549, 0x752f},
+ {0x854e, 0x4e70}, {0x8553, 0x697e}, {0x8559, 0x7b36},
+ {0x8563, 0x6272}, {0x8568, 0x4f72}, {0x8569, 0x7739},
+ {0x856a, 0x5973}, {0x856d, 0x614b}, {0x8584, 0x5a5d},
+ {0x8587, 0x5a39}, {0x858f, 0x6b7b}, {0x8591, 0x4b39},
+ {0x8594, 0x6d79}, {0x859b, 0x6060}, {0x85a6, 0x7440},
+ {0x85a8, 0x7d3c}, {0x85a9, 0x5f31}, {0x85aa, 0x636f},
+ {0x85af, 0x6023}, {0x85b0, 0x7d39}, {0x85ba, 0x7031},
+ {0x85c1, 0x4d4b}, {0x85c9, 0x6d3e}, {0x85cd, 0x5540},
+ {0x85ce, 0x6370}, {0x85cf, 0x6d7a}, {0x85d5, 0x6964},
+ {0x85dc, 0x556d}, {0x85dd, 0x675d}, {0x85e4, 0x5476},
+ {0x85e5, 0x6537}, {0x85e9, 0x5b67}, {0x85ea, 0x623f},
+ {0x85f7, 0x6e4b}, {0x85fa, 0x5774}, {0x85fb, 0x705d},
+ {0x85ff, 0x4e2b}, {0x8602, 0x675e}, {0x8606, 0x5656},
+ {0x8607, 0x614c}, {0x860a, 0x6833}, {0x8616, 0x656e},
+ {0x8617, 0x5c22}, {0x861a, 0x6050}, {0x862d, 0x5535},
+ {0x863f, 0x5521}, {0x864e, 0x7b5b}, {0x8650, 0x794b},
+ {0x8654, 0x4b73}, {0x8655, 0x7425}, {0x865b, 0x7a48},
+ {0x865c, 0x5657}, {0x865e, 0x6965}, {0x865f, 0x7b5c},
+ {0x8667, 0x7d50}, {0x8679, 0x7b76}, {0x868a, 0x5a25},
+ {0x868c, 0x5b3d}, {0x8693, 0x6c62}, {0x86a3, 0x4d77},
+ {0x86a4, 0x705e}, {0x86a9, 0x7649}, {0x86c7, 0x5e6f},
+ {0x86cb, 0x5331}, {0x86d4, 0x7c6e}, {0x86d9, 0x6843},
+ {0x86db, 0x7148}, {0x86df, 0x4e71}, {0x86e4, 0x796d},
+ {0x86ed, 0x7274}, {0x86fe, 0x6436}, {0x8700, 0x7539},
+ {0x8702, 0x5c70}, {0x8703, 0x6371}, {0x8708, 0x6825},
+ {0x8718, 0x723b}, {0x871a, 0x5e24}, {0x871c, 0x5a4c},
+ {0x874e, 0x4a69}, {0x8755, 0x635a}, {0x8757, 0x7c59},
+ {0x875f, 0x6a5a}, {0x8766, 0x7944}, {0x8768, 0x6324},
+ {0x8774, 0x7b5d}, {0x8776, 0x6f4a}, {0x8778, 0x6844},
+ {0x8782, 0x554c}, {0x878d, 0x6b57}, {0x879f, 0x592d},
+ {0x87a2, 0x7b2b}, {0x87b3, 0x5359}, {0x87ba, 0x5522},
+ {0x87c4, 0x765e}, {0x87e0, 0x5a76}, {0x87ec, 0x6051},
+ {0x87ef, 0x6928}, {0x87f2, 0x7579}, {0x87f9, 0x7a2f},
+ {0x87fb, 0x6b7c}, {0x87fe, 0x606a}, {0x8805, 0x6332},
+ {0x881f, 0x5545}, {0x8822, 0x7163}, {0x8823, 0x556e},
+ {0x8831, 0x4d4c}, {0x8836, 0x6d59}, {0x883b, 0x5841},
+ {0x8840, 0x7a6c}, {0x8846, 0x716b}, {0x884c, 0x7a3c},
+ {0x884d, 0x6662}, {0x8852, 0x7a65}, {0x8853, 0x627a},
+ {0x8857, 0x4a36}, {0x8859, 0x6437}, {0x885b, 0x6a5b},
+ {0x885d, 0x757a}, {0x8861, 0x7b2c}, {0x8862, 0x4f43},
+ {0x8863, 0x6b7d}, {0x8868, 0x787a}, {0x886b, 0x5f39},
+ {0x8870, 0x6171}, {0x8872, 0x5224}, {0x8877, 0x757b},
+ {0x887e, 0x505a}, {0x887f, 0x505b}, {0x8881, 0x6a3e},
+ {0x8882, 0x5931}, {0x8888, 0x4a37}, {0x888b, 0x5367},
+ {0x888d, 0x7865}, {0x8892, 0x5332}, {0x8896, 0x6240},
+ {0x8897, 0x725f}, {0x889e, 0x4d65}, {0x88ab, 0x792c},
+ {0x88b4, 0x4d4d}, {0x88c1, 0x6e2e}, {0x88c2, 0x562e},
+ {0x88cf, 0x576a}, {0x88d4, 0x6760}, {0x88d5, 0x6b2e},
+ {0x88d9, 0x4f59}, {0x88dc, 0x5c4d}, {0x88dd, 0x6d7b},
+ {0x88df, 0x5e70}, {0x88e1, 0x576b}, {0x88e8, 0x5e25},
+ {0x88f3, 0x5f57}, {0x88f4, 0x5b50}, {0x88f5, 0x5b51},
+ {0x88f8, 0x5523}, {0x88fd, 0x7032}, {0x8907, 0x5c5c},
+ {0x8910, 0x4a68}, {0x8912, 0x7866}, {0x8913, 0x5c4e},
+ {0x8918, 0x6a5c}, {0x8919, 0x5b52}, {0x8925, 0x6933},
+ {0x892a, 0x775b}, {0x8936, 0x6328}, {0x8938, 0x572e},
+ {0x893b, 0x6061}, {0x8941, 0x4b3a}, {0x8944, 0x6551},
+ {0x895f, 0x505c}, {0x8964, 0x5541}, {0x896a, 0x584a},
+ {0x8972, 0x6329}, {0x897f, 0x6024}, {0x8981, 0x6929},
+ {0x8983, 0x5347}, {0x8986, 0x5c5d}, {0x8987, 0x782e},
+ {0x898b, 0x4c38}, {0x898f, 0x502e}, {0x8993, 0x5872},
+ {0x8996, 0x634a}, {0x89a1, 0x4c2f}, {0x89a9, 0x542d},
+ {0x89aa, 0x7651}, {0x89b2, 0x504c}, {0x89ba, 0x4a46},
+ {0x89bd, 0x5542}, {0x89c0, 0x4e3a}, {0x89d2, 0x4a47},
+ {0x89e3, 0x7a30}, {0x89f4, 0x5f58}, {0x89f8, 0x753a},
+ {0x8a00, 0x656b}, {0x8a02, 0x6f74}, {0x8a03, 0x5d35},
+ {0x8a08, 0x4d2a}, {0x8a0a, 0x6372}, {0x8a0c, 0x7b77},
+ {0x8a0e, 0x7750}, {0x8a13, 0x7d3a}, {0x8a16, 0x7d61},
+ {0x8a17, 0x767e}, {0x8a18, 0x5140}, {0x8a1b, 0x6845},
+ {0x8a1d, 0x6438}, {0x8a1f, 0x6168}, {0x8a23, 0x4c41},
+ {0x8a25, 0x526d}, {0x8a2a, 0x5b3e}, {0x8a2d, 0x6062},
+ {0x8a31, 0x7a49}, {0x8a34, 0x614d}, {0x8a36, 0x4a38},
+ {0x8a3a, 0x7260}, {0x8a3b, 0x7149}, {0x8a50, 0x5e71},
+ {0x8a54, 0x705f}, {0x8a55, 0x7844}, {0x8a5b, 0x6e4c},
+ {0x8a5e, 0x5e72}, {0x8a60, 0x6749}, {0x8a62, 0x6273},
+ {0x8a63, 0x6761}, {0x8a66, 0x634b}, {0x8a69, 0x634c},
+ {0x8a6d, 0x4f78}, {0x8a6e, 0x6f2c}, {0x8a70, 0x7d7e},
+ {0x8a71, 0x7c25}, {0x8a72, 0x7a31}, {0x8a73, 0x5f59},
+ {0x8a75, 0x6052}, {0x8a79, 0x745a}, {0x8a85, 0x714a},
+ {0x8a87, 0x4e23}, {0x8a8c, 0x723c}, {0x8a8d, 0x6c63},
+ {0x8a93, 0x6025}, {0x8a95, 0x772b}, {0x8a98, 0x6b2f},
+ {0x8a9e, 0x655e}, {0x8aa0, 0x6124}, {0x8aa1, 0x4d2b},
+ {0x8aa3, 0x5974}, {0x8aa4, 0x6826}, {0x8aa5, 0x4d4e},
+ {0x8aa6, 0x6169}, {0x8aa8, 0x7c6f}, {0x8aaa, 0x6063},
+ {0x8ab0, 0x6241}, {0x8ab2, 0x4e24}, {0x8ab9, 0x5e26},
+ {0x8abc, 0x6b7e}, {0x8abe, 0x6b5d}, {0x8abf, 0x7060},
+ {0x8ac2, 0x745b}, {0x8ac4, 0x6274}, {0x8ac7, 0x5348},
+ {0x8acb, 0x746b}, {0x8acd, 0x6e35}, {0x8acf, 0x7558},
+ {0x8ad2, 0x555f}, {0x8ad6, 0x5665}, {0x8adb, 0x6b30},
+ {0x8adc, 0x7463}, {0x8ae1, 0x634d}, {0x8ae6, 0x7474},
+ {0x8ae7, 0x7a32}, {0x8aea, 0x6f75}, {0x8aeb, 0x4a5f},
+ {0x8aed, 0x6b31}, {0x8aee, 0x6d3f}, {0x8af1, 0x7d49},
+ {0x8af6, 0x6426}, {0x8af7, 0x7924}, {0x8af8, 0x7033},
+ {0x8afa, 0x656c}, {0x8afe, 0x5167}, {0x8b00, 0x5947},
+ {0x8b01, 0x6457}, {0x8b02, 0x6a5d}, {0x8b04, 0x5477},
+ {0x8b0e, 0x5a3a}, {0x8b10, 0x5a4d}, {0x8b14, 0x794c},
+ {0x8b16, 0x615a}, {0x8b17, 0x5b3f}, {0x8b19, 0x4c45},
+ {0x8b1a, 0x6c50}, {0x8b1b, 0x4b3b}, {0x8b1d, 0x5e73},
+ {0x8b20, 0x692a}, {0x8b28, 0x5948}, {0x8b2b, 0x6e63},
+ {0x8b2c, 0x573d}, {0x8b33, 0x4f44}, {0x8b39, 0x504d},
+ {0x8b41, 0x7c26}, {0x8b49, 0x717b}, {0x8b4e, 0x7d52},
+ {0x8b4f, 0x5141}, {0x8b58, 0x635b}, {0x8b5a, 0x5349},
+ {0x8b5c, 0x5c4f}, {0x8b66, 0x4c6d}, {0x8b6c, 0x5e27},
+ {0x8b6f, 0x663b}, {0x8b70, 0x6c21}, {0x8b74, 0x4c39},
+ {0x8b77, 0x7b5e}, {0x8b7d, 0x6762}, {0x8b80, 0x5441},
+ {0x8b8a, 0x5c28}, {0x8b90, 0x6242}, {0x8b92, 0x7358},
+ {0x8b93, 0x6553}, {0x8b96, 0x7359}, {0x8b9a, 0x7346},
+ {0x8c37, 0x4d5b}, {0x8c3f, 0x4d2c}, {0x8c41, 0x7c43},
+ {0x8c46, 0x5467}, {0x8c48, 0x5142}, {0x8c4a, 0x7925},
+ {0x8c4c, 0x6855}, {0x8c55, 0x634e}, {0x8c5a, 0x544a},
+ {0x8c61, 0x5f5a}, {0x8c6a, 0x7b5f}, {0x8c6b, 0x6763},
+ {0x8c79, 0x787b}, {0x8c7a, 0x634f}, {0x8c82, 0x7530},
+ {0x8c8a, 0x5867}, {0x8c8c, 0x5949}, {0x8c9d, 0x782f},
+ {0x8c9e, 0x6f76}, {0x8ca0, 0x5d36}, {0x8ca1, 0x6e2f},
+ {0x8ca2, 0x4d78}, {0x8ca7, 0x5e38}, {0x8ca8, 0x7c27},
+ {0x8ca9, 0x777c}, {0x8caa, 0x7731}, {0x8cab, 0x4e3b},
+ {0x8cac, 0x7421}, {0x8caf, 0x6e4d}, {0x8cb0, 0x612e},
+ {0x8cb3, 0x6c43}, {0x8cb4, 0x4f7e}, {0x8cb6, 0x783f},
+ {0x8cb7, 0x5862}, {0x8cb8, 0x5368}, {0x8cbb, 0x5e28},
+ {0x8cbc, 0x7464}, {0x8cbd, 0x6c42}, {0x8cbf, 0x5975},
+ {0x8cc0, 0x7945}, {0x8cc1, 0x5d53}, {0x8cc2, 0x5671},
+ {0x8cc3, 0x6c7c}, {0x8cc4, 0x7c70}, {0x8cc7, 0x6d40},
+ {0x8cc8, 0x4a39}, {0x8cca, 0x6e64}, {0x8cd1, 0x7261},
+ {0x8cd3, 0x5e39}, {0x8cda, 0x5672}, {0x8cdc, 0x5e74},
+ {0x8cde, 0x5f5b}, {0x8ce0, 0x5b53}, {0x8ce2, 0x7a67},
+ {0x8ce3, 0x5863}, {0x8ce4, 0x7441}, {0x8ce6, 0x5d37},
+ {0x8cea, 0x7275}, {0x8ced, 0x542e}, {0x8cf4, 0x5673},
+ {0x8cfb, 0x5d38}, {0x8cfc, 0x4f45}, {0x8cfd, 0x5f5f},
+ {0x8d04, 0x723e}, {0x8d05, 0x7621}, {0x8d07, 0x6b4b},
+ {0x8d08, 0x717c}, {0x8d0a, 0x7347}, {0x8d0d, 0x606b},
+ {0x8d13, 0x6d7c}, {0x8d16, 0x615b}, {0x8d64, 0x6e65},
+ {0x8d66, 0x5e75}, {0x8d6b, 0x7a53}, {0x8d70, 0x714b},
+ {0x8d73, 0x502f}, {0x8d74, 0x5d39}, {0x8d77, 0x5143},
+ {0x8d85, 0x7531}, {0x8d8a, 0x6a46}, {0x8d99, 0x7061},
+ {0x8da3, 0x762c}, {0x8da8, 0x7559}, {0x8db3, 0x706b},
+ {0x8dba, 0x5d3a}, {0x8dbe, 0x723f}, {0x8dc6, 0x7745},
+ {0x8dcb, 0x5b22}, {0x8dcc, 0x7276}, {0x8dcf, 0x4a3a},
+ {0x8ddb, 0x7775}, {0x8ddd, 0x4b65}, {0x8de1, 0x6e66},
+ {0x8de3, 0x6053}, {0x8de8, 0x4e25}, {0x8def, 0x5658},
+ {0x8df3, 0x542f}, {0x8e0a, 0x6949}, {0x8e0f, 0x534e},
+ {0x8e10, 0x7442}, {0x8e1e, 0x4b66}, {0x8e2a, 0x7121},
+ {0x8e30, 0x6b32}, {0x8e35, 0x7122}, {0x8e42, 0x6b33},
+ {0x8e44, 0x7034}, {0x8e47, 0x4b74}, {0x8e48, 0x5430},
+ {0x8e49, 0x7332}, {0x8e4a, 0x7b37}, {0x8e59, 0x756c},
+ {0x8e5f, 0x6e67}, {0x8e60, 0x7432}, {0x8e74, 0x756d},
+ {0x8e76, 0x4f73}, {0x8e81, 0x7062}, {0x8e87, 0x6e4e},
+ {0x8e8a, 0x714c}, {0x8e8d, 0x6538}, {0x8eaa, 0x5775},
+ {0x8eab, 0x6373}, {0x8eac, 0x4f65}, {0x8ec0, 0x4f46},
+ {0x8eca, 0x7333}, {0x8ecb, 0x6458}, {0x8ecc, 0x4f79},
+ {0x8ecd, 0x4f5a}, {0x8ed2, 0x7a4d}, {0x8edf, 0x6663},
+ {0x8eeb, 0x7262}, {0x8ef8, 0x756e}, {0x8efb, 0x4a3b},
+ {0x8efe, 0x635c}, {0x8f03, 0x4e72}, {0x8f05, 0x5659},
+ {0x8f09, 0x6e30}, {0x8f12, 0x7465}, {0x8f13, 0x5842},
+ {0x8f14, 0x5c50}, {0x8f15, 0x4c6e}, {0x8f1b, 0x5560},
+ {0x8f1c, 0x764a}, {0x8f1d, 0x7d4a}, {0x8f1e, 0x5856},
+ {0x8f1f, 0x744f}, {0x8f26, 0x5626}, {0x8f27, 0x5c3e},
+ {0x8f29, 0x5b54}, {0x8f2a, 0x5747}, {0x8f2f, 0x727e},
+ {0x8f33, 0x714d}, {0x8f38, 0x6243}, {0x8f39, 0x5c5e},
+ {0x8f3b, 0x5c5f}, {0x8f3e, 0x6f2d}, {0x8f3f, 0x662b},
+ {0x8f44, 0x795d}, {0x8f45, 0x6a3f}, {0x8f49, 0x6f2e},
+ {0x8f4d, 0x7450}, {0x8f4e, 0x4e73}, {0x8f5d, 0x662c},
+ {0x8f5f, 0x4e5e}, {0x8f62, 0x5579}, {0x8f9b, 0x6374},
+ {0x8f9c, 0x4d50}, {0x8fa3, 0x5538}, {0x8fa6, 0x777d},
+ {0x8fa8, 0x5c29}, {0x8fad, 0x5e76}, {0x8faf, 0x5c2a},
+ {0x8fb0, 0x7263}, {0x8fb1, 0x6934}, {0x8fb2, 0x525c},
+ {0x8fc2, 0x6966}, {0x8fc5, 0x6376}, {0x8fce, 0x674a},
+ {0x8fd1, 0x504e}, {0x8fd4, 0x5a77}, {0x8fe6, 0x4a3c},
+ {0x8fea, 0x6e68}, {0x8feb, 0x5a5e}, {0x8fed, 0x7277},
+ {0x8ff0, 0x627b}, {0x8ff2, 0x4c26}, {0x8ff7, 0x5a3b},
+ {0x8ff9, 0x6e69}, {0x8ffd, 0x755a}, {0x9000, 0x775c},
+ {0x9001, 0x616a}, {0x9002, 0x4e41}, {0x9003, 0x5431},
+ {0x9005, 0x7d31}, {0x9006, 0x663d}, {0x9008, 0x7b2d},
+ {0x900b, 0x7867}, {0x900d, 0x614e}, {0x900f, 0x7762},
+ {0x9010, 0x756f}, {0x9011, 0x4f47}, {0x9014, 0x5432},
+ {0x9015, 0x4c6f}, {0x9017, 0x5468}, {0x9019, 0x6e4f},
+ {0x901a, 0x7757}, {0x901d, 0x6026}, {0x901e, 0x5641},
+ {0x901f, 0x615c}, {0x9020, 0x7063}, {0x9021, 0x7164},
+ {0x9022, 0x5c71}, {0x9023, 0x5627}, {0x902e, 0x7475},
+ {0x9031, 0x714e}, {0x9032, 0x7264}, {0x9035, 0x5030},
+ {0x9038, 0x6c6f}, {0x903c, 0x793a}, {0x903e, 0x6b35},
+ {0x9041, 0x546d}, {0x9042, 0x6244}, {0x9047, 0x6967},
+ {0x904a, 0x6b34}, {0x904b, 0x6a21}, {0x904d, 0x783c},
+ {0x904e, 0x4e26}, {0x9050, 0x7946}, {0x9051, 0x7c5a},
+ {0x9053, 0x5433}, {0x9054, 0x5339}, {0x9055, 0x6a5e},
+ {0x9059, 0x692b}, {0x905c, 0x6161}, {0x905d, 0x534f},
+ {0x905e, 0x7476}, {0x9060, 0x6a40}, {0x9061, 0x614f},
+ {0x9063, 0x4c3a}, {0x9069, 0x6e6a}, {0x906d, 0x7064},
+ {0x906e, 0x7334}, {0x906f, 0x546e}, {0x9072, 0x7240},
+ {0x9075, 0x7165}, {0x9077, 0x7443}, {0x9078, 0x6054},
+ {0x907a, 0x6b36}, {0x907c, 0x5721}, {0x907d, 0x4b68},
+ {0x907f, 0x792d}, {0x9080, 0x692d}, {0x9081, 0x5864},
+ {0x9082, 0x7a33}, {0x9083, 0x6245}, {0x9084, 0x7c3d},
+ {0x9087, 0x6c44}, {0x9088, 0x5831}, {0x908a, 0x5c2b},
+ {0x908f, 0x5524}, {0x9091, 0x6b69}, {0x9095, 0x683b},
+ {0x9099, 0x5857}, {0x90a2, 0x7b2e}, {0x90a3, 0x5161},
+ {0x90a6, 0x5b40}, {0x90a8, 0x753e}, {0x90aa, 0x5e77},
+ {0x90af, 0x4a7b}, {0x90b0, 0x7746}, {0x90b1, 0x4f48},
+ {0x90b5, 0x6150}, {0x90b8, 0x6e50}, {0x90c1, 0x6974},
+ {0x90ca, 0x4e74}, {0x90de, 0x554d}, {0x90e1, 0x4f5b},
+ {0x90e8, 0x5d3b}, {0x90ed, 0x4e2c}, {0x90f5, 0x6968},
+ {0x90fd, 0x5434}, {0x9102, 0x6447}, {0x9112, 0x755b},
+ {0x9115, 0x7a41}, {0x9119, 0x5e29}, {0x9127, 0x5478},
+ {0x912d, 0x6f77}, {0x9132, 0x5333}, {0x9149, 0x6b37},
+ {0x914a, 0x6f78}, {0x914b, 0x755c}, {0x914c, 0x6d4c},
+ {0x914d, 0x5b55}, {0x914e, 0x714f}, {0x9152, 0x7150},
+ {0x9162, 0x7532}, {0x9169, 0x592e}, {0x916a, 0x552c},
+ {0x916c, 0x6246}, {0x9175, 0x7d23}, {0x9177, 0x7b65},
+ {0x9178, 0x5f2b}, {0x9187, 0x6275}, {0x9189, 0x762d},
+ {0x918b, 0x7533}, {0x918d, 0x7035}, {0x9192, 0x6125},
+ {0x919c, 0x755d}, {0x91ab, 0x6c22}, {0x91ac, 0x6d7d},
+ {0x91ae, 0x7534}, {0x91af, 0x7b38}, {0x91b1, 0x5b23},
+ {0x91b4, 0x564a}, {0x91b5, 0x4b59}, {0x91c0, 0x6554},
+ {0x91c7, 0x737a}, {0x91c9, 0x6b38}, {0x91cb, 0x6037},
+ {0x91cc, 0x576c}, {0x91cd, 0x716c}, {0x91ce, 0x652f},
+ {0x91cf, 0x5561}, {0x91d0, 0x576d}, {0x91d1, 0x5151},
+ {0x91d7, 0x6172}, {0x91d8, 0x6f79}, {0x91dc, 0x5d3c},
+ {0x91dd, 0x765c}, {0x91e3, 0x7065}, {0x91e7, 0x7444},
+ {0x91ea, 0x6969}, {0x91f5, 0x737b}, {0x920d, 0x546f},
+ {0x9210, 0x4c22}, {0x9211, 0x777e}, {0x9212, 0x5f3c},
+ {0x9217, 0x6b4d}, {0x921e, 0x5037}, {0x9234, 0x5642},
+ {0x923a, 0x682d}, {0x923f, 0x6f2f}, {0x9240, 0x4b25},
+ {0x9245, 0x4b69}, {0x9249, 0x7a68}, {0x9257, 0x4c46},
+ {0x925b, 0x6667}, {0x925e, 0x6a47}, {0x9262, 0x5b24},
+ {0x9264, 0x4f49}, {0x9265, 0x627c}, {0x9266, 0x6f7a},
+ {0x9280, 0x6b5e}, {0x9283, 0x7548}, {0x9285, 0x545e},
+ {0x9291, 0x6055}, {0x9293, 0x6f30}, {0x9296, 0x6247},
+ {0x9298, 0x592f}, {0x929c, 0x7967}, {0x92b3, 0x6765},
+ {0x92b6, 0x4f4a}, {0x92b7, 0x6151}, {0x92b9, 0x6248},
+ {0x92cc, 0x6f7b}, {0x92cf, 0x7a79}, {0x92d2, 0x5c72},
+ {0x92e4, 0x6027}, {0x92ea, 0x7868}, {0x92f8, 0x4b6a},
+ {0x92fc, 0x4b3c}, {0x9304, 0x5662}, {0x9310, 0x755e},
+ {0x9318, 0x755f}, {0x931a, 0x6e36}, {0x931e, 0x6276},
+ {0x931f, 0x534a}, {0x9320, 0x6f7c}, {0x9321, 0x5144},
+ {0x9322, 0x6f31}, {0x9324, 0x5145}, {0x9326, 0x505e},
+ {0x9328, 0x5961}, {0x932b, 0x6038}, {0x932e, 0x4d51},
+ {0x932f, 0x7339}, {0x9348, 0x674c}, {0x934a, 0x5628},
+ {0x934b, 0x4e27}, {0x934d, 0x5435}, {0x9354, 0x6448},
+ {0x935b, 0x5334}, {0x936e, 0x6b39}, {0x9375, 0x4b75},
+ {0x937c, 0x765d}, {0x937e, 0x7123}, {0x938c, 0x4c47},
+ {0x9394, 0x694a}, {0x9396, 0x6170}, {0x939a, 0x7560},
+ {0x93a3, 0x7b2f}, {0x93a7, 0x4b51}, {0x93ac, 0x7b60},
+ {0x93ad, 0x7265}, {0x93b0, 0x6c70}, {0x93c3, 0x706c},
+ {0x93d1, 0x6e6b}, {0x93de, 0x694b}, {0x93e1, 0x4c70},
+ {0x93e4, 0x572f}, {0x93f6, 0x7321}, {0x9404, 0x7c75},
+ {0x9418, 0x7124}, {0x9425, 0x6056}, {0x942b, 0x6f32},
+ {0x9435, 0x7451}, {0x9438, 0x7721}, {0x9444, 0x7151},
+ {0x9451, 0x4a7c}, {0x9452, 0x4a7d}, {0x945b, 0x4e4e},
+ {0x947d, 0x7348}, {0x947f, 0x733a}, {0x9577, 0x6d7e},
+ {0x9580, 0x5a26}, {0x9583, 0x606c}, {0x9589, 0x784d},
+ {0x958b, 0x4b52}, {0x958f, 0x6b4e}, {0x9591, 0x7958},
+ {0x9592, 0x7959}, {0x9593, 0x4a60}, {0x9594, 0x5a4a},
+ {0x9598, 0x4b26}, {0x95a3, 0x4a48}, {0x95a4, 0x796e},
+ {0x95a5, 0x5b6c}, {0x95a8, 0x5031}, {0x95ad, 0x556f},
+ {0x95b1, 0x6673}, {0x95bb, 0x6722}, {0x95bc, 0x6459},
+ {0x95c7, 0x6461}, {0x95ca, 0x7c44}, {0x95d4, 0x796f},
+ {0x95d5, 0x4f74}, {0x95d6, 0x7766}, {0x95dc, 0x4e3c},
+ {0x95e1, 0x7445}, {0x95e2, 0x5c23}, {0x961c, 0x5d3d},
+ {0x9621, 0x7446}, {0x962a, 0x7821}, {0x962e, 0x6856},
+ {0x9632, 0x5b41}, {0x963b, 0x7066}, {0x963f, 0x6439},
+ {0x9640, 0x766d}, {0x9642, 0x792e}, {0x9644, 0x5d3e},
+ {0x964b, 0x5730}, {0x964c, 0x5868}, {0x964d, 0x4b3d},
+ {0x9650, 0x795a}, {0x965b, 0x784e}, {0x965c, 0x7970},
+ {0x965d, 0x606d}, {0x965e, 0x6333}, {0x965f, 0x7433},
+ {0x9662, 0x6a42}, {0x9663, 0x7266}, {0x9664, 0x7036},
+ {0x966a, 0x5b56}, {0x9670, 0x6b64}, {0x9673, 0x7267},
+ {0x9675, 0x5755}, {0x9676, 0x5436}, {0x9677, 0x7968},
+ {0x9678, 0x5741}, {0x967d, 0x6555}, {0x9685, 0x696a},
+ {0x9686, 0x574c}, {0x968a, 0x5369}, {0x968b, 0x6249},
+ {0x968d, 0x7c5b}, {0x968e, 0x4d2d}, {0x9694, 0x4c30},
+ {0x9695, 0x6a22}, {0x9698, 0x6476}, {0x9699, 0x5040},
+ {0x969b, 0x7037}, {0x969c, 0x6e21}, {0x96a3, 0x5776},
+ {0x96a7, 0x624a}, {0x96a8, 0x624b}, {0x96aa, 0x7a4f},
+ {0x96b1, 0x6b5f}, {0x96b7, 0x564b}, {0x96bb, 0x7434},
+ {0x96c0, 0x6d4d}, {0x96c1, 0x6452}, {0x96c4, 0x6a29},
+ {0x96c5, 0x643a}, {0x96c6, 0x7322}, {0x96c7, 0x4d52},
+ {0x96c9, 0x764b}, {0x96cb, 0x7166}, {0x96cc, 0x6d41},
+ {0x96cd, 0x683c}, {0x96ce, 0x6e51}, {0x96d5, 0x7067},
+ {0x96d6, 0x624c}, {0x96d9, 0x642a}, {0x96db, 0x7561},
+ {0x96dc, 0x6d5a}, {0x96e2, 0x576e}, {0x96e3, 0x5171},
+ {0x96e8, 0x696b}, {0x96e9, 0x696c}, {0x96ea, 0x6064},
+ {0x96ef, 0x5a27}, {0x96f0, 0x5d54}, {0x96f2, 0x6a23},
+ {0x96f6, 0x5643}, {0x96f7, 0x5674}, {0x96f9, 0x5a5f},
+ {0x96fb, 0x6f33}, {0x9700, 0x624d}, {0x9706, 0x6f7d},
+ {0x9707, 0x7268}, {0x9711, 0x6f45}, {0x9713, 0x6767},
+ {0x9716, 0x577d}, {0x9719, 0x674e}, {0x971c, 0x5f5c},
+ {0x971e, 0x7947}, {0x9727, 0x5976}, {0x9730, 0x5f2c},
+ {0x9732, 0x565a}, {0x9739, 0x5c24}, {0x973d, 0x7038},
+ {0x9742, 0x557a}, {0x9744, 0x6477}, {0x9748, 0x5644},
+ {0x9751, 0x746c}, {0x9756, 0x6f7e}, {0x975c, 0x7021},
+ {0x975e, 0x5e2a}, {0x9761, 0x5a3c}, {0x9762, 0x587c},
+ {0x9769, 0x7a54}, {0x976d, 0x6c65}, {0x9774, 0x7c28},
+ {0x9777, 0x6c66}, {0x977a, 0x584b}, {0x978b, 0x7b39},
+ {0x978d, 0x6453}, {0x978f, 0x4d79}, {0x97a0, 0x4f53},
+ {0x97a8, 0x4a6a}, {0x97ab, 0x4f54}, {0x97ad, 0x783d},
+ {0x97c6, 0x7447}, {0x97cb, 0x6a5f}, {0x97d3, 0x795b},
+ {0x97dc, 0x5437}, {0x97f3, 0x6b65}, {0x97f6, 0x6152},
+ {0x97fb, 0x6a24}, {0x97ff, 0x7a42}, {0x9800, 0x7b61},
+ {0x9801, 0x7a6d}, {0x9802, 0x7022}, {0x9803, 0x4c71},
+ {0x9805, 0x7a23}, {0x9806, 0x6277}, {0x9808, 0x624e},
+ {0x980a, 0x6975}, {0x980c, 0x616b}, {0x9810, 0x6768},
+ {0x9811, 0x6857}, {0x9812, 0x5a78}, {0x9813, 0x544b},
+ {0x9817, 0x7776}, {0x9818, 0x5645}, {0x982d, 0x5469},
+ {0x9830, 0x7a7a}, {0x9838, 0x4c72}, {0x9839, 0x775d},
+ {0x983b, 0x5e3a}, {0x9846, 0x4e28}, {0x984c, 0x7039},
+ {0x984d, 0x647e}, {0x984e, 0x6449}, {0x9854, 0x6454},
+ {0x9858, 0x6a43}, {0x985a, 0x6f34}, {0x985e, 0x573e},
+ {0x9865, 0x7b62}, {0x9867, 0x4d53}, {0x986b, 0x6f35},
+ {0x986f, 0x7a69}, {0x98a8, 0x7926}, {0x98af, 0x5f3d},
+ {0x98b1, 0x7747}, {0x98c4, 0x787d}, {0x98c7, 0x787c},
+ {0x98db, 0x5e2b}, {0x98dc, 0x5b68}, {0x98df, 0x635d},
+ {0x98e1, 0x6162}, {0x98e2, 0x5146}, {0x98ed, 0x7650},
+ {0x98ee, 0x6b66}, {0x98ef, 0x5a79}, {0x98f4, 0x6c47},
+ {0x98fc, 0x5e78}, {0x98fd, 0x7869}, {0x98fe, 0x635e},
+ {0x9903, 0x4e75}, {0x9909, 0x7a43}, {0x990a, 0x6557},
+ {0x990c, 0x6c48}, {0x9910, 0x7349}, {0x9913, 0x643b},
+ {0x9918, 0x662e}, {0x991e, 0x6f36}, {0x9920, 0x5c3f},
+ {0x9928, 0x4e3d}, {0x9945, 0x5843}, {0x9949, 0x504f},
+ {0x994b, 0x4f7a}, {0x994c, 0x734a}, {0x994d, 0x6057},
+ {0x9951, 0x5147}, {0x9952, 0x692e}, {0x9954, 0x683d},
+ {0x9957, 0x7a44}, {0x9996, 0x624f}, {0x9999, 0x7a45},
+ {0x999d, 0x7938}, {0x99a5, 0x5c60}, {0x99a8, 0x7b30},
+ {0x99ac, 0x5829}, {0x99ad, 0x655f}, {0x99ae, 0x7927},
+ {0x99b1, 0x766e}, {0x99b3, 0x764c}, {0x99b4, 0x6278},
+ {0x99b9, 0x6c71}, {0x99c1, 0x5a60}, {0x99d0, 0x7152},
+ {0x99d1, 0x524c}, {0x99d2, 0x4f4b}, {0x99d5, 0x4a3d},
+ {0x99d9, 0x5d3f}, {0x99dd, 0x766f}, {0x99df, 0x5e79},
+ {0x99ed, 0x7a34}, {0x99f1, 0x552d}, {0x99ff, 0x7167},
+ {0x9a01, 0x5e3e}, {0x9a08, 0x5c40}, {0x9a0e, 0x5148},
+ {0x9a0f, 0x5149}, {0x9a19, 0x783e}, {0x9a2b, 0x4b76},
+ {0x9a30, 0x5479}, {0x9a36, 0x7562}, {0x9a37, 0x6153},
+ {0x9a40, 0x5869}, {0x9a43, 0x787e}, {0x9a45, 0x4f4c},
+ {0x9a4d, 0x7d24}, {0x9a55, 0x4e76}, {0x9a57, 0x7a50},
+ {0x9a5a, 0x4c73}, {0x9a5b, 0x663e}, {0x9a5f, 0x762e},
+ {0x9a62, 0x5570}, {0x9a65, 0x514a}, {0x9a69, 0x7c3e},
+ {0x9a6a, 0x5571}, {0x9aa8, 0x4d69}, {0x9ab8, 0x7a35},
+ {0x9ad3, 0x6250}, {0x9ad4, 0x7477}, {0x9ad8, 0x4d54},
+ {0x9ae5, 0x6723}, {0x9aee, 0x5b25}, {0x9b1a, 0x6251},
+ {0x9b27, 0x5722}, {0x9b2a, 0x7763}, {0x9b31, 0x6a26},
+ {0x9b3c, 0x5021}, {0x9b41, 0x4e5a}, {0x9b42, 0x7b6b},
+ {0x9b43, 0x5b26}, {0x9b44, 0x5b5e}, {0x9b45, 0x5865},
+ {0x9b4f, 0x6a60}, {0x9b54, 0x582a}, {0x9b5a, 0x6560},
+ {0x9b6f, 0x565b}, {0x9b8e, 0x6f46}, {0x9b91, 0x786a},
+ {0x9b9f, 0x6455}, {0x9bab, 0x4e77}, {0x9bae, 0x6058},
+ {0x9bc9, 0x576f}, {0x9bd6, 0x746d}, {0x9be4, 0x4d66},
+ {0x9be8, 0x4c74}, {0x9c0d, 0x7563}, {0x9c10, 0x644a},
+ {0x9c12, 0x5c61}, {0x9c15, 0x7948}, {0x9c25, 0x7c3f},
+ {0x9c32, 0x6827}, {0x9c3b, 0x5844}, {0x9c47, 0x4b3e},
+ {0x9c49, 0x5c2e}, {0x9c57, 0x5777}, {0x9ce5, 0x7068},
+ {0x9ce7, 0x5d40}, {0x9ce9, 0x4f4d}, {0x9cf3, 0x5c73},
+ {0x9cf4, 0x5930}, {0x9cf6, 0x6669}, {0x9d09, 0x643c},
+ {0x9d1b, 0x6a44}, {0x9d26, 0x646c}, {0x9d28, 0x6465},
+ {0x9d3b, 0x7b78}, {0x9d51, 0x4c3b}, {0x9d5d, 0x643d},
+ {0x9d60, 0x4d5c}, {0x9d61, 0x5977}, {0x9d6c, 0x5d5f},
+ {0x9d72, 0x6d4e}, {0x9da9, 0x5950}, {0x9daf, 0x6523},
+ {0x9db4, 0x794d}, {0x9dc4, 0x4d2e}, {0x9dd7, 0x4f4e},
+ {0x9df2, 0x762f}, {0x9df8, 0x7d53}, {0x9df9, 0x6b6d},
+ {0x9dfa, 0x565c}, {0x9e1a, 0x6524}, {0x9e1e, 0x5536},
+ {0x9e75, 0x565d}, {0x9e79, 0x7969}, {0x9e7d, 0x6724},
+ {0x9e7f, 0x5663}, {0x9e92, 0x514b}, {0x9e93, 0x5664},
+ {0x9e97, 0x5572}, {0x9e9d, 0x5e7a}, {0x9e9f, 0x5778},
+ {0x9ea5, 0x586a}, {0x9eb4, 0x4f55}, {0x9eb5, 0x587d},
+ {0x9ebb, 0x582b}, {0x9ebe, 0x7d4b}, {0x9ec3, 0x7c5c},
+ {0x9ecd, 0x6028}, {0x9ece, 0x5573}, {0x9ed1, 0x7d59},
+ {0x9ed4, 0x4c23}, {0x9ed8, 0x5979}, {0x9edb, 0x536a},
+ {0x9edc, 0x7575}, {0x9ede, 0x6f47}, {0x9ee8, 0x535a},
+ {0x9ef4, 0x5a3d}, {0x9f07, 0x6828}, {0x9f08, 0x5c2f},
+ {0x9f0e, 0x7023}, {0x9f13, 0x4d55}, {0x9f20, 0x6029},
+ {0x9f3b, 0x5e2c}, {0x9f4a, 0x703a}, {0x9f4b, 0x6e31},
+ {0x9f4e, 0x6e32}, {0x9f52, 0x764d}, {0x9f5f, 0x6e52},
+ {0x9f61, 0x5646}, {0x9f67, 0x6065}, {0x9f6a, 0x733b},
+ {0x9f6c, 0x6561}, {0x9f77, 0x644b}, {0x9f8d, 0x5723},
+ {0x9f90, 0x5b42}, {0x9f95, 0x4a7e}, {0x9f9c, 0x4f4f},
+ {0xf900, 0x4b50}, {0xf901, 0x4b56}, {0xf902, 0x4b67},
+ {0xf903, 0x4d4f}, {0xf904, 0x4d68}, {0xf905, 0x4e2d},
+ {0xf906, 0x4f7b}, {0xf907, 0x5022}, {0xf908, 0x5038},
+ {0xf909, 0x5050}, {0xf90a, 0x505d}, {0xf90b, 0x5154},
+ {0xf90c, 0x5155}, {0xf90d, 0x5158}, {0xf90e, 0x515b},
+ {0xf90f, 0x515c}, {0xf910, 0x515d}, {0xf911, 0x515e},
+ {0xf912, 0x515f}, {0xf913, 0x5160}, {0xf914, 0x5162},
+ {0xf915, 0x5163}, {0xf916, 0x5164}, {0xf917, 0x5165},
+ {0xf918, 0x5166}, {0xf919, 0x5168}, {0xf91a, 0x5169},
+ {0xf91b, 0x516a}, {0xf91c, 0x516b}, {0xf91d, 0x516d},
+ {0xf91e, 0x516f}, {0xf91f, 0x5170}, {0xf920, 0x5172},
+ {0xf921, 0x5176}, {0xf922, 0x517a}, {0xf923, 0x517c},
+ {0xf924, 0x517d}, {0xf925, 0x517e}, {0xf926, 0x5222},
+ {0xf927, 0x5223}, {0xf928, 0x5227}, {0xf929, 0x5228},
+ {0xf92a, 0x5229}, {0xf92b, 0x522a}, {0xf92c, 0x522b},
+ {0xf92d, 0x522d}, {0xf92e, 0x5232}, {0xf92f, 0x523e},
+ {0xf930, 0x5242}, {0xf931, 0x5243}, {0xf932, 0x5244},
+ {0xf933, 0x5246}, {0xf934, 0x5247}, {0xf935, 0x5248},
+ {0xf936, 0x5249}, {0xf937, 0x524a}, {0xf938, 0x524b},
+ {0xf939, 0x524d}, {0xf93a, 0x524e}, {0xf93b, 0x524f},
+ {0xf93c, 0x5250}, {0xf93d, 0x5251}, {0xf93e, 0x5252},
+ {0xf93f, 0x5253}, {0xf940, 0x5254}, {0xf941, 0x5255},
+ {0xf942, 0x5256}, {0xf943, 0x5257}, {0xf944, 0x5259},
+ {0xf945, 0x525a}, {0xf946, 0x525e}, {0xf947, 0x525f},
+ {0xf948, 0x5261}, {0xf949, 0x5262}, {0xf94a, 0x5264},
+ {0xf94b, 0x5265}, {0xf94c, 0x5266}, {0xf94d, 0x5267},
+ {0xf94e, 0x5268}, {0xf94f, 0x5269}, {0xf950, 0x526a},
+ {0xf951, 0x526b}, {0xf952, 0x5270}, {0xf953, 0x5271},
+ {0xf954, 0x5272}, {0xf955, 0x5273}, {0xf956, 0x5274},
+ {0xf957, 0x5275}, {0xf958, 0x5277}, {0xf959, 0x5278},
+ {0xf95a, 0x5466}, {0xf95b, 0x547c}, {0xf95c, 0x5525},
+ {0xf95d, 0x552b}, {0xf95e, 0x552e}, {0xf95f, 0x5638},
+ {0xf960, 0x564d}, {0xf961, 0x574b}, {0xf962, 0x5764},
+ {0xf963, 0x5b45}, {0xf964, 0x5b64}, {0xf965, 0x5c25},
+ {0xf966, 0x5d25}, {0xf967, 0x5d55}, {0xf968, 0x5d74},
+ {0xf969, 0x5e7c}, {0xf96a, 0x5e7e}, {0xf96b, 0x5f33},
+ {0xf96c, 0x5f61}, {0xf96d, 0x5f68}, {0xf96e, 0x6071},
+ {0xf96f, 0x612d}, {0xf970, 0x616d}, {0xf971, 0x6375},
+ {0xf972, 0x6421}, {0xf973, 0x6429}, {0xf974, 0x652e},
+ {0xf975, 0x6531}, {0xf976, 0x6532}, {0xf977, 0x6539},
+ {0xf978, 0x653b}, {0xf979, 0x653c}, {0xf97a, 0x6544},
+ {0xf97b, 0x654e}, {0xf97c, 0x6550}, {0xf97d, 0x6552},
+ {0xf97e, 0x6556}, {0xf97f, 0x657a}, {0xf980, 0x657b},
+ {0xf981, 0x657c}, {0xf982, 0x657e}, {0xf983, 0x6621},
+ {0xf984, 0x6624}, {0xf985, 0x6627}, {0xf986, 0x662d},
+ {0xf987, 0x662f}, {0xf988, 0x6630}, {0xf989, 0x6631},
+ {0xf98a, 0x6633}, {0xf98b, 0x6637}, {0xf98c, 0x6638},
+ {0xf98d, 0x663c}, {0xf98e, 0x6644}, {0xf98f, 0x6646},
+ {0xf990, 0x6647}, {0xf991, 0x664a}, {0xf992, 0x6652},
+ {0xf993, 0x6656}, {0xf994, 0x6659}, {0xf995, 0x665c},
+ {0xf996, 0x665f}, {0xf997, 0x6661}, {0xf998, 0x6664},
+ {0xf999, 0x6665}, {0xf99a, 0x6666}, {0xf99b, 0x6668},
+ {0xf99c, 0x666a}, {0xf99d, 0x666b}, {0xf99e, 0x666c},
+ {0xf99f, 0x666f}, {0xf9a0, 0x6671}, {0xf9a1, 0x6672},
+ {0xf9a2, 0x6675}, {0xf9a3, 0x6676}, {0xf9a4, 0x6677},
+ {0xf9a5, 0x6679}, {0xf9a6, 0x6721}, {0xf9a7, 0x6726},
+ {0xf9a8, 0x6729}, {0xf9a9, 0x672a}, {0xf9aa, 0x672c},
+ {0xf9ab, 0x672d}, {0xf9ac, 0x6730}, {0xf9ad, 0x673f},
+ {0xf9ae, 0x6741}, {0xf9af, 0x6746}, {0xf9b0, 0x6747},
+ {0xf9b1, 0x674b}, {0xf9b2, 0x674d}, {0xf9b3, 0x674f},
+ {0xf9b4, 0x6750}, {0xf9b5, 0x6753}, {0xf9b6, 0x675f},
+ {0xf9b7, 0x6764}, {0xf9b8, 0x6766}, {0xf9b9, 0x6777},
+ {0xf9ba, 0x6867}, {0xf9bb, 0x6868}, {0xf9bc, 0x6870},
+ {0xf9bd, 0x6871}, {0xf9be, 0x6877}, {0xf9bf, 0x6879},
+ {0xf9c0, 0x687b}, {0xf9c1, 0x687e}, {0xf9c2, 0x6927},
+ {0xf9c3, 0x692c}, {0xf9c4, 0x694c}, {0xf9c5, 0x6977},
+ {0xf9c6, 0x6a41}, {0xf9c7, 0x6a65}, {0xf9c8, 0x6a74},
+ {0xf9c9, 0x6a77}, {0xf9ca, 0x6a7c}, {0xf9cb, 0x6a7e},
+ {0xf9cc, 0x6b24}, {0xf9cd, 0x6b27}, {0xf9ce, 0x6b29},
+ {0xf9cf, 0x6b2a}, {0xf9d0, 0x6b3a}, {0xf9d1, 0x6b3b},
+ {0xf9d2, 0x6b3d}, {0xf9d3, 0x6b41}, {0xf9d4, 0x6b42},
+ {0xf9d5, 0x6b46}, {0xf9d6, 0x6b47}, {0xf9d7, 0x6b4c},
+ {0xf9d8, 0x6b4f}, {0xf9d9, 0x6b50}, {0xf9da, 0x6b51},
+ {0xf9db, 0x6b52}, {0xf9dc, 0x6b58}, {0xf9dd, 0x6c26},
+ {0xf9de, 0x6c27}, {0xf9df, 0x6c2a}, {0xf9e0, 0x6c2f},
+ {0xf9e1, 0x6c30}, {0xf9e2, 0x6c31}, {0xf9e3, 0x6c32},
+ {0xf9e4, 0x6c35}, {0xf9e5, 0x6c38}, {0xf9e6, 0x6c3a},
+ {0xf9e7, 0x6c40}, {0xf9e8, 0x6c41}, {0xf9e9, 0x6c45},
+ {0xf9ea, 0x6c46}, {0xf9eb, 0x6c49}, {0xf9ec, 0x6c4a},
+ {0xf9ed, 0x6c55}, {0xf9ee, 0x6c5d}, {0xf9ef, 0x6c5e},
+ {0xf9f0, 0x6c61}, {0xf9f1, 0x6c64}, {0xf9f2, 0x6c67},
+ {0xf9f3, 0x6c68}, {0xf9f4, 0x6c77}, {0xf9f5, 0x6c78},
+ {0xf9f6, 0x6c7a}, {0xf9f7, 0x6d21}, {0xf9f8, 0x6d22},
+ {0xf9f9, 0x6d23}, {0xf9fa, 0x6d6e}, {0xf9fb, 0x6e5b},
+ {0xf9fc, 0x723d}, {0xf9fd, 0x727a}, {0xf9fe, 0x7331},
+ {0xf9ff, 0x7427}, {0xfa00, 0x746e}, {0xfa01, 0x7674},
+ {0xfa02, 0x7676}, {0xfa03, 0x7738}, {0xfa04, 0x7748},
+ {0xfa05, 0x7753}, {0xfa06, 0x785b}, {0xfa07, 0x7870},
+ {0xfa08, 0x7a21}, {0xfa09, 0x7a22}, {0xfa0a, 0x7a66},
+ {0xfa0b, 0x7c29}
+};
+
+
+static unsigned short ksc2unicode(unsigned short code)
+{
+ int ch1 = code >> 8;
+ int ch2 = code & 0x00ff;
+ int idx;
+
+ if (ch1 < 0x80 || (ch1 - 0x80) <= 0x20 || (ch1 - 0x80) >= 0x7e
+ || (ch1 - 0x80) == 0x49)
+ return 0;
+
+ if (ch2 < 0x80 || (ch2 - 0x80) <= 0x20 || (ch2 - 0x80) >= 0x7f)
+ return 0;
+
+ idx = (ch1 - 0x80 - 0x21) * 94 + (ch2 - 0x80 - 0x21);
+
+ /* Hangul : row 16 - row 40 : 1410 = 15 * 94 ,
+ 3760 = 40 * 94 */
+ if (idx >= 1410 && idx < 1410 + 2350)
+ return ksc5601_hangul_to_unicode[idx - 1410];
+
+ else if (idx >= 3854)
+ /* Hanja : row 42 - row 93 : 3854 = 94 * (42-1) */
+ return ksc5601_hanja_to_unicode[idx - 3854];
+
+ else if(idx <= 1114)
+ return ksc5601_symbol_to_unicode[idx];
+
+ return 0;
+}
+
+static unsigned short unicode2ksc(unsigned short unicode)
+{
+ int lo, hi, mid, c2;
+ unsigned char s[2];
+
+ lo = mid = c2 = 0;
+
+ if (unicode >= 0xac00 && unicode <= 0xd7a3) {
+ // Hangul
+ hi = 2349;
+
+ while (lo <= hi) { // binary search
+ mid = (lo + hi) / 2;
+ c2 = ksc5601_hangul_to_unicode[mid];
+ if(unicode < c2)
+ hi = mid - 1;
+ else if(unicode > c2)
+ lo = mid + 1;
+ else { // unicode == c2
+ s[0] = (mid / 94) + 0x30;
+ s[1] = (mid % 94) + 0x21;
+
+ return ((s[0] << 8) | s[1]);
+ }
+ }
+ } else if ((unicode >= 0x4e00 && unicode <= 0x9fff)
+ || (unicode >= 0xf900 && unicode <= 0xfa0b)) {
+ // Hanja
+ hi = 4887;
+
+ while (lo <= hi) { // binary search
+ mid = (lo + hi) / 2;
+ c2 = unicode_to_ksc5601_hanja[mid].unicode;
+ if(unicode < c2)
+ hi = mid - 1;
+ else if(unicode > c2)
+ lo = mid + 1;
+ else { // unicode == c2
+ return unicode_to_ksc5601_hanja[mid].kscode;
+ }
+ }
+ } else {
+ // Symbol
+ hi = 985;
+
+ while (lo <= hi) { // binary search
+ mid = (lo + hi) / 2;
+ c2 = unicode_to_ksc5601_symbol[mid].unicode;
+ if(unicode < c2)
+ hi = mid - 1;
+ else if(unicode > c2)
+ lo = mid + 1;
+ else { // unicode == c2
+ return unicode_to_ksc5601_symbol[mid].kscode;
+ }
+ }
+ }
+ return 0;
+}
+
+int QCP949Codec::_mibEnum()
+{
+ return -949; // CP949 has no MIBenum. So we have to use fake value.
+}
+
+QByteArray QCP949Codec::_name()
+{
+ return "cp949";
+}
+
+/*!
+ \reimp
+*/
+QByteArray QCP949Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
+{
+ char replacement = '?';
+ if (state) {
+ if (state->flags & ConvertInvalidToNull)
+ replacement = 0;
+ }
+ int invalid = 0;
+
+ int rlen = 2*len + 1;
+ QByteArray rstr;
+ rstr.resize(rlen);
+ uchar* cursor = (uchar*)rstr.data();
+ for (int i = 0; i < len; i++) {
+ unsigned short ch = uc[i].unicode();
+ uint j;
+ if (ch < 0x80) {
+ // ASCII
+ *cursor++ = ch;
+ } else if ((j = qt_UnicodeToKsc5601(ch))) {
+ // KSC 5601
+ *cursor++ = (j >> 8) | 0x80;
+ *cursor++ = (j & 0xff) | 0x80;
+ } else {
+ const unsigned short *ptr = qBinaryFind(cp949_icode_to_unicode, cp949_icode_to_unicode + 8822, ch);
+ if (ptr == cp949_icode_to_unicode + 8822) {
+ // Error
+ *cursor++ = replacement;
+ ++invalid;
+ }
+ else {
+ // The table 'cp949_icode_to_unicode' contains following
+ // 1. Elements of row 81-a0 (32 rows) consisting of 178 elements each.
+ // 2. Elements of row a1-fe not in EUC-KR consisting of 84 elements each.
+ // On each row the elements are distributed (41-5A), (61-7A), (81-FE) in order.
+ // http://www.microsoft.com/globaldev/reference/dbcs/949.mspx
+
+ // find the position of the current unicode in the table.
+ int internal_code = ptr - cp949_icode_to_unicode;
+
+ int row, column;
+ if(internal_code < 32 * 178) {
+ // code between row 81-a0
+ row = internal_code / 178;
+ column = internal_code % 178;
+ }
+ else {
+ // code between a1-fe
+ internal_code -= 3008;
+ row = internal_code / 84;
+ column = internal_code % 84;
+ }
+
+ unsigned char first, second;
+ first = row + 0x81;
+
+ if(column < 26)
+ second = column + 0x41; // between 41-5A
+ else if(column < 52)
+ second = column - 26 + 0x61; // between 61-7A
+ else
+ second = column - 52 + 0x81; // between 81-FE
+
+ *cursor++ = first;
+ *cursor++ = second;
+ }
+ }
+ }
+ rstr.resize(cursor - (uchar*)rstr.constData());
+
+ if (state) {
+ state->invalidChars += invalid;
+ }
+ return rstr;
+}
+
+/*!
+ \reimp
+*/
+QString QCP949Codec::convertToUnicode(const char* chars, int len, ConverterState *state) const
+{
+ uchar buf[2] = {0, 0};
+ int nbuf = 0;
+ QChar replacement = QChar::ReplacementCharacter;
+ if (state) {
+ if (state->flags & ConvertInvalidToNull)
+ replacement = QChar::Null;
+ nbuf = state->remainingChars;
+ buf[0] = state->state_data[0];
+ buf[1] = state->state_data[1];
+ }
+ int invalid = 0;
+
+ QString result;
+ for (int i=0; i<len; i++) {
+ uchar ch = chars[i];
+ if (ch == 0)
+ break;
+ switch (nbuf) {
+ case 0:
+ if (ch < 0x80) {
+ // ASCII
+ result += QLatin1Char(ch);
+ } else if (IsEucChar(ch)) {
+ // KSC 5601
+ buf[0] = ch;
+ nbuf = 1;
+ } else if (IsCP949Char(ch)){
+ buf[0] = ch;
+ nbuf = 1;
+ } else {
+ // Invalid
+ result += replacement;
+ ++invalid;
+ }
+ break;
+ case 1:
+ // KSC 5601
+ if (IsEucChar(ch) && !IsCP949Char(buf[0])) {
+ uint u = qt_Ksc5601ToUnicode((buf[0] << 8) | ch);
+ result += QValidChar(u);
+ } else {
+ // Rest of CP949
+ int row, column;
+ nbuf = 0;
+ row = buf[0] - 0x81;
+ if (0x41 <= ch && ch <= 0x5a)
+ column = ch - 0x41;
+ else if (0x61 <= ch && ch <= 0x7a)
+ column = ch - 0x61 + 26;
+ else if (0x81 <= ch && ch <= 0xfe)
+ column = ch - 0x81 + 52;
+ else {
+ result += replacement;
+ ++invalid;
+ break;
+ }
+
+ int internal_code;
+ if (row < 32)
+ internal_code = row * 178 + column;
+ else
+ internal_code = 3008 + row * 84 + column;
+ // check whether the conversion avialble in the table.
+ if (internal_code < 0 || internal_code >= 8822) {
+ result += replacement;
+ ++invalid;
+ break;
+ }
+ else
+ result += QValidChar(cp949_icode_to_unicode[internal_code]);
+ }
+ nbuf = 0;
+ break;
+ }
+ }
+
+ if (state) {
+ state->remainingChars = nbuf;
+ state->state_data[0] = buf[0];
+ state->state_data[1] = buf[1];
+ state->invalidChars += invalid;
+ }
+ return result;
+}
+
+#endif // QT_NO_TEXTCODEC
+
+QT_END_NAMESPACE
diff --git a/src/corelib/codecs/qeuckrcodec_p.h b/src/corelib/codecs/qeuckrcodec_p.h
new file mode 100644
index 0000000000..12ae2078be
--- /dev/null
+++ b/src/corelib/codecs/qeuckrcodec_p.h
@@ -0,0 +1,140 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+/*
+ * Copyright (C) 1999-2000 Mizi Research Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef QEUCKRCODEC_P_H
+#define QEUCKRCODEC_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtCore/qtextcodec.h>
+#include <QtCore/qlist.h>
+
+QT_BEGIN_NAMESPACE
+
+#ifndef QT_NO_TEXTCODEC
+
+class QEucKrCodec : public QTextCodec {
+public:
+ static QByteArray _name();
+ static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
+ static int _mibEnum();
+
+ QByteArray name() const { return _name(); }
+ QList<QByteArray> aliases() const { return _aliases(); }
+ int mibEnum() const { return _mibEnum(); }
+
+ QString convertToUnicode(const char *, int, ConverterState *) const;
+ QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
+};
+
+class QCP949Codec : public QTextCodec {
+public:
+ static QByteArray _name();
+ static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
+ static int _mibEnum();
+
+ QByteArray name() const { return _name(); }
+ QList<QByteArray> aliases() const { return _aliases(); }
+ int mibEnum() const { return _mibEnum(); }
+
+ QString convertToUnicode(const char *, int, ConverterState *) const;
+ QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
+};
+
+#ifdef Q_OS_UNIX
+class QFontKsc5601Codec : public QTextCodec
+{
+public:
+ QFontKsc5601Codec();
+
+ static QByteArray _name();
+ static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
+ static int _mibEnum();
+
+ QByteArray name() const { return _name(); }
+ QList<QByteArray> aliases() const { return _aliases(); }
+ int mibEnum() const { return _mibEnum(); }
+
+ QString convertToUnicode(const char *, int, ConverterState *) const;
+ QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
+
+};
+#endif
+
+#endif // QT_NO_TEXTCODEC
+
+QT_END_NAMESPACE
+
+#endif // QEUCKRCODEC_P_H
diff --git a/src/corelib/codecs/qfontjpcodec.cpp b/src/corelib/codecs/qfontjpcodec.cpp
new file mode 100644
index 0000000000..7d44be9006
--- /dev/null
+++ b/src/corelib/codecs/qfontjpcodec.cpp
@@ -0,0 +1,145 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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 "qfontjpcodec_p.h"
+
+#include "qjpunicode_p.h"
+
+QT_BEGIN_NAMESPACE
+
+#ifdef Q_OS_UNIX
+// JIS X 0201
+
+QFontJis0201Codec::QFontJis0201Codec()
+{
+}
+
+QByteArray QFontJis0201Codec::_name()
+{
+ return "jisx0201*-0";
+}
+
+int QFontJis0201Codec::_mibEnum()
+{
+ return 15;
+}
+
+QByteArray QFontJis0201Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *) const
+{
+ QByteArray rstring;
+ rstring.resize(len);
+ uchar *rdata = (uchar *) rstring.data();
+ const QChar *sdata = uc;
+ int i = 0;
+ for (; i < len; ++i, ++sdata, ++rdata) {
+ if (sdata->unicode() < 0x80) {
+ *rdata = (uchar) sdata->unicode();
+ } else if (sdata->unicode() >= 0xff61 && sdata->unicode() <= 0xff9f) {
+ *rdata = (uchar) (sdata->unicode() - 0xff61 + 0xa1);
+ } else {
+ *rdata = 0;
+ }
+ }
+ return rstring;
+}
+
+QString QFontJis0201Codec::convertToUnicode(const char *, int, ConverterState *) const
+{
+ return QString();
+}
+
+// JIS X 0208
+
+QFontJis0208Codec::QFontJis0208Codec()
+{
+ convJP = QJpUnicodeConv::newConverter(QJpUnicodeConv::Default);
+}
+
+
+QFontJis0208Codec::~QFontJis0208Codec()
+{
+ delete convJP;
+ convJP = 0;
+}
+
+
+QByteArray QFontJis0208Codec::_name()
+{
+ return "jisx0208*-0";
+}
+
+
+int QFontJis0208Codec::_mibEnum()
+{
+ return 63;
+}
+
+
+QString QFontJis0208Codec::convertToUnicode(const char* /*chars*/, int /*len*/, ConverterState *) const
+{
+ return QString();
+}
+
+QByteArray QFontJis0208Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *) const
+{
+ QByteArray result;
+ result.resize(len * 2);
+ uchar *rdata = (uchar *) result.data();
+ const QChar *ucp = uc;
+
+ for (int i = 0; i < len; i++) {
+ QChar ch(*ucp++);
+ ch = convJP->unicodeToJisx0208(ch.unicode());
+
+ if (!ch.isNull()) {
+ *rdata++ = ch.row();
+ *rdata++ = ch.cell();
+ } else {
+ *rdata++ = 0;
+ *rdata++ = 0;
+ }
+ }
+ return result;
+}
+
+#endif
+
+QT_END_NAMESPACE
diff --git a/src/corelib/codecs/qfontjpcodec_p.h b/src/corelib/codecs/qfontjpcodec_p.h
new file mode 100644
index 0000000000..99652dc455
--- /dev/null
+++ b/src/corelib/codecs/qfontjpcodec_p.h
@@ -0,0 +1,104 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QFONTJPCODEC_P_H
+#define QFONTJPCODEC_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtCore/qtextcodec.h>
+#include <QtCore/qlist.h>
+
+QT_BEGIN_NAMESPACE
+
+class QJpUnicodeConv;
+
+#ifdef Q_OS_UNIX
+class QFontJis0201Codec : public QTextCodec
+{
+public:
+ QFontJis0201Codec();
+
+ static QByteArray _name();
+ static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
+ static int _mibEnum();
+
+ QByteArray name() const { return _name(); }
+ QList<QByteArray> aliases() const { return _aliases(); }
+ int mibEnum() const { return _mibEnum(); }
+
+ QByteArray convertFromUnicode(const QChar *uc, int len, ConverterState *) const;
+ QString convertToUnicode(const char*, int, ConverterState *) const;
+};
+
+class QFontJis0208Codec : public QTextCodec
+{
+public:
+ QFontJis0208Codec();
+ ~QFontJis0208Codec();
+
+ static QByteArray _name();
+ static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
+ static int _mibEnum();
+
+ QByteArray name() const { return _name(); }
+ QList<QByteArray> aliases() const { return _aliases(); }
+ int mibEnum() const { return _mibEnum(); }
+
+ QString convertToUnicode(const char* /*chars*/, int /*len*/, ConverterState *) const;
+ QByteArray convertFromUnicode(const QChar *uc, int len, ConverterState *) const;
+private:
+ QJpUnicodeConv *convJP;
+};
+#endif
+
+QT_END_NAMESPACE
+
+#endif // QFONTJPCODEC_P_H
diff --git a/src/corelib/codecs/qfontlaocodec.cpp b/src/corelib/codecs/qfontlaocodec.cpp
index ea21fa2898..0bc08d7920 100644
--- a/src/corelib/codecs/qfontlaocodec.cpp
+++ b/src/corelib/codecs/qfontlaocodec.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/codecs/qfontlaocodec_p.h b/src/corelib/codecs/qfontlaocodec_p.h
index c61ac2181b..f2e2413fbf 100644
--- a/src/corelib/codecs/qfontlaocodec_p.h
+++ b/src/corelib/codecs/qfontlaocodec_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/codecs/qgb18030codec.cpp b/src/corelib/codecs/qgb18030codec.cpp
new file mode 100644
index 0000000000..af9d0189d1
--- /dev/null
+++ b/src/corelib/codecs/qgb18030codec.cpp
@@ -0,0 +1,9265 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+/*! \class QGb18030Codec
+ \reentrant
+ \internal
+*/
+
+#include "qgb18030codec_p.h"
+
+#ifndef QT_NO_TEXTCODEC
+
+QT_BEGIN_NAMESPACE
+
+#define InRange(c, lower, upper) (((c) >= (lower)) && ((c) <= (upper)))
+#define IsLatin(c) ((c) <= 0x7F)
+#define IsByteInGb2312(c) (InRange((c), 0xA1, 0xFE))
+#define Is1stByte(c) (InRange((c), 0x81, 0xFE))
+#define Is2ndByteIn2Bytes(c) (InRange((c), 0x40, 0xFE) && (c) != 0x7F)
+#define Is2ndByteIn4Bytes(c) (InRange((c), 0x30, 0x39))
+#define Is2ndByte(c) (Is2ndByteIn2Bytes(c) || Is2ndByteIn4Bytes(c))
+#define Is3rdByte(c) (InRange((c), 0x81, 0xFE))
+#define Is4thByte(c) (InRange((c), 0x30, 0x39))
+
+#define qValidChar(u) ((u) ? (u) : static_cast<ushort>(QChar::ReplacementCharacter))
+
+/* User-defined areas: UDA 1: 0xAAA1 - 0xAFFE (564/0)
+ UDA 2: 0xF8A1 - 0xFEFE (658/0)
+ UDA 3: 0xA140 - 0xA7A0 (672/0) */
+#define IsUDA1(a, b) (InRange((a), 0xAA, 0xAF) && InRange((b), 0xA1, 0xFE))
+#define IsUDA2(a, b) (InRange((a), 0xF8, 0xFE) && InRange((b), 0xA1, 0xFE))
+#define IsUDA3(a, b) (InRange((a), 0xA1, 0xA7) && InRange((b), 0x40, 0xA0) && ((b) != 0x7F))
+
+typedef struct {
+ quint8 tblBegin;
+ quint8 tblEnd;
+ quint16 tblOffset;
+ quint16 algOffset;
+} indexTbl_t;
+
+static uint qt_Gb18030ToUnicode(const uchar *gbstr, int& len);
+static int qt_UnicodeToGb18030(uint unicode, uchar *gbchar);
+int qt_UnicodeToGbk(uint unicode, uchar *gbchar);
+
+QGb18030Codec::QGb18030Codec()
+{
+}
+
+/*! \reimp */
+QByteArray QGb18030Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
+{
+ char replacement = '?';
+ int high = -1;
+ if (state) {
+ if (state->flags & ConvertInvalidToNull)
+ replacement = 0;
+ if (state->remainingChars)
+ high = state->state_data[0];
+ }
+ int invalid = 0;
+
+ int rlen = 4 *len + 1;
+ QByteArray rstr;
+ rstr.resize(rlen);
+ uchar* cursor = (uchar*)rstr.data();
+
+ //qDebug("QGb18030Codec::fromUnicode(const QString& uc, int& lenInOut = %d)", lenInOut);
+ for (int i = 0; i < len; i++) {
+ unsigned short ch = uc[i].unicode();
+ int len;
+ uchar buf[4];
+ if (high >= 0) {
+ if (uc[i].isLowSurrogate()) {
+ // valid surrogate pair
+ ++i;
+ uint u = QChar::surrogateToUcs4(high, uc[i].unicode());
+ len = qt_UnicodeToGb18030(u, buf);
+ if (len >= 2) {
+ for (int j=0; j<len; j++)
+ *cursor++ = buf[j];
+ } else {
+ *cursor++ = replacement;
+ ++invalid;
+ }
+ high = -1;
+ continue;
+ } else {
+ *cursor++ = replacement;
+ ++invalid;
+ high = -1;
+ }
+ }
+
+ if (IsLatin(ch)) {
+ // ASCII
+ *cursor++ = ch;
+ } else if (uc[i].isHighSurrogate()) {
+ // surrogates area. check for correct encoding
+ // we need at least one more character, first the high surrogate, then the low one
+ high = ch;
+ } else if ((len = qt_UnicodeToGb18030(ch, buf)) >= 2) {
+ for (int j=0; j<len; j++)
+ *cursor++ = buf[j];
+ } else {
+ // Error
+ *cursor++ = replacement;
+ ++invalid;
+ }
+ }
+ rstr.resize(cursor - (uchar*)rstr.constData());
+
+ if (state) {
+ state->invalidChars += invalid;
+ state->state_data[0] = high;
+ if (high)
+ state->remainingChars = 1;
+ }
+ return rstr;
+}
+
+QString QGb18030Codec::convertToUnicode(const char* chars, int len, ConverterState *state) const
+{
+ uchar buf[4];
+ int nbuf = 0;
+ ushort replacement = QChar::ReplacementCharacter;
+ if (state) {
+ if (state->flags & ConvertInvalidToNull)
+ replacement = QChar::Null;
+ nbuf = state->remainingChars;
+ buf[0] = (state->state_data[0] >> 24) & 0xff;
+ buf[1] = (state->state_data[0] >> 16) & 0xff;
+ buf[2] = (state->state_data[0] >> 8) & 0xff;
+ buf[3] = (state->state_data[0] >> 0) & 0xff;
+ }
+ int invalid = 0;
+
+ QString result;
+ result.resize(len);
+ int unicodeLen = 0;
+ ushort *const resultData = reinterpret_cast<ushort*>(result.data());
+ //qDebug("QGb18030Decoder::toUnicode(const char* chars, int len = %d)", len);
+ for (int i = 0; i < len; i++) {
+ uchar ch = chars[i];
+ switch (nbuf) {
+ case 0:
+ if (IsLatin(ch)) {
+ // ASCII
+ resultData[unicodeLen] = ch;
+ ++unicodeLen;
+ } else if (Is1stByte(ch)) {
+ // GB18030?
+ buf[0] = ch;
+ nbuf = 1;
+ } else {
+ // Invalid
+ resultData[unicodeLen] = replacement;
+ ++unicodeLen;
+ ++invalid;
+ }
+ break;
+ case 1:
+ // GB18030 2 bytes
+ if (Is2ndByteIn2Bytes(ch)) {
+ buf[1] = ch;
+ int clen = 2;
+ uint u = qt_Gb18030ToUnicode(buf, clen);
+ if (clen == 2) {
+ resultData[unicodeLen] = qValidChar(static_cast<ushort>(u));
+ ++unicodeLen;
+ } else {
+ resultData[unicodeLen] = replacement;
+ ++unicodeLen;
+ ++invalid;
+ }
+ nbuf = 0;
+ } else if (Is2ndByteIn4Bytes(ch)) {
+ buf[1] = ch;
+ nbuf = 2;
+ } else {
+ // Error
+ resultData[unicodeLen] = replacement;
+ ++unicodeLen;
+ ++invalid;
+ nbuf = 0;
+ }
+ break;
+ case 2:
+ // GB18030 3 bytes
+ if (Is3rdByte(ch)) {
+ buf[2] = ch;
+ nbuf = 3;
+ } else {
+ resultData[unicodeLen] = replacement;
+ ++unicodeLen;
+ ++invalid;
+ nbuf = 0;
+ }
+ break;
+ case 3:
+ // GB18030 4 bytes
+ if (Is4thByte(ch)) {
+ buf[3] = ch;
+ int clen = 4;
+ uint u = qt_Gb18030ToUnicode(buf, clen);
+ if (clen == 4) {
+ resultData[unicodeLen] = qValidChar(u);
+ ++unicodeLen;
+ } else {
+ resultData[unicodeLen] = replacement;
+ ++unicodeLen;
+ ++invalid;
+ }
+ } else {
+ resultData[unicodeLen] = replacement;
+ ++unicodeLen;
+ ++invalid;
+ }
+ nbuf = 0;
+ break;
+ }
+ }
+ result.resize(unicodeLen);
+
+ if (state) {
+ state->remainingChars = nbuf;
+ state->state_data[0] = (buf[0] << 24) + (buf[1] << 16) + (buf[2] << 8) + buf[3];
+ state->invalidChars += invalid;
+ }
+ return result;
+}
+
+
+/*! \class QGbkCodec
+ \reentrant
+ \internal
+
+ \brief The QGbkCodec class provides conversion to and from the Chinese
+ GBK encoding.
+
+ GBK, formally the Chinese Internal Code Specification, is a commonly
+ used extension of GB 2312-80. Microsoft Windows uses it under the
+ name code page 936.
+
+ The GBK encoding has been superseded by the GB18030 encoding and
+ GB18030 is backward compatible to GBK. For this reason the QGbkCodec class
+ is implemented in terms of the GB18030 codec and uses its 1-byte and
+ 2-byte portion for conversion from and to Unicode.
+
+ The QGbkCodec is kept mainly for compatibility reasons with older software.
+*/
+
+
+/*!
+ Constructs a QGbkCodec object.
+*/
+QGbkCodec::QGbkCodec()
+ : QGb18030Codec()
+{
+}
+
+int QGbkCodec::_mibEnum()
+{
+ return 113;
+}
+
+QByteArray QGbkCodec::_name()
+{
+ return "GBK";
+}
+
+QList<QByteArray> QGbkCodec::_aliases()
+{
+ QList<QByteArray> list;
+ list << "CP936"
+ << "MS936"
+ << "windows-936";
+ return list;
+}
+
+QString QGbkCodec::convertToUnicode(const char* chars, int len, ConverterState *state) const
+{
+ uchar buf[2];
+ int nbuf = 0;
+ ushort replacement = QChar::ReplacementCharacter;
+ if (state) {
+ if (state->flags & ConvertInvalidToNull)
+ replacement = QChar::Null;
+ nbuf = state->remainingChars;
+ buf[0] = state->state_data[0];
+ buf[1] = state->state_data[1];
+ }
+ int invalid = 0;
+
+ QString result;
+ result.resize(len);
+ int unicodeLen = 0;
+ ushort *const resultData = reinterpret_cast<ushort*>(result.data());
+
+ //qDebug("QGbkDecoder::toUnicode(const char* chars = \"%s\", int len = %d)", chars, len);
+ for (int i=0; i<len; i++) {
+ uchar ch = chars[i];
+ switch (nbuf) {
+ case 0:
+ if (IsLatin(ch)) {
+ // ASCII
+ resultData[unicodeLen] = ch;
+ ++unicodeLen;
+ } else if (Is1stByte(ch)) {
+ // GBK 1st byte?
+ buf[0] = ch;
+ nbuf = 1;
+ } else {
+ // Invalid
+ resultData[unicodeLen] = replacement;
+ ++unicodeLen;
+ ++invalid;
+ }
+ break;
+ case 1:
+ // GBK 2nd byte
+ if (Is2ndByteIn2Bytes(ch)) {
+ buf[1] = ch;
+ int clen = 2;
+ uint u = qt_Gb18030ToUnicode(buf, clen);
+ if (clen == 2) {
+ resultData[unicodeLen] = qValidChar(static_cast<ushort>(u));
+ ++unicodeLen;
+ } else {
+ resultData[unicodeLen] = replacement;
+ ++unicodeLen;
+ ++invalid;
+ }
+ nbuf = 0;
+ } else {
+ // Error
+ resultData[unicodeLen] = replacement;
+ ++unicodeLen;
+ ++invalid;
+ nbuf = 0;
+ }
+ break;
+ }
+ }
+ result.resize(unicodeLen);
+
+ if (state) {
+ state->remainingChars = nbuf;
+ state->state_data[0] = buf[0];
+ state->state_data[1] = buf[1];
+ state->invalidChars += invalid;
+ }
+ return result;
+}
+
+QByteArray QGbkCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
+{
+ char replacement = '?';
+ if (state) {
+ if (state->flags & ConvertInvalidToNull)
+ replacement = 0;
+ }
+ int invalid = 0;
+
+ int rlen = 2*len + 1;
+ QByteArray rstr;
+ rstr.resize(rlen);
+ uchar* cursor = (uchar*)rstr.data();
+
+ //qDebug("QGbkCodec::fromUnicode(const QString& uc, int& lenInOut = %d)", lenInOut);
+ for (int i = 0; i < len; i++) {
+ QChar ch = uc[i];
+ uchar buf[2];
+
+ if (ch.row() == 0x00 && ch.cell() < 0x80) {
+ // ASCII
+ *cursor++ = ch.cell();
+ } else if (qt_UnicodeToGbk(ch.unicode(), buf) == 2) {
+ *cursor++ = buf[0];
+ *cursor++ = buf[1];
+ } else {
+ // Error
+ *cursor += replacement;
+ ++invalid;
+ }
+ }
+ rstr.resize(cursor - (uchar*)rstr.constData());
+
+ if (state) {
+ state->invalidChars += invalid;
+ }
+ return rstr;
+}
+
+
+/*! \class QGb2312Codec
+ \internal
+
+ \brief The QGb2312Codec class provides conversion to and from the Chinese
+ GB2312 encoding.
+
+ The GB2312 encoding has been superseded by the GB18030 encoding and
+ GB18030 is backward compatible to GB2312. For this reason the QGb2312Codec
+ class is implemented in terms of the GB18030 codec and uses its
+ 0xA1A1-0xFEFE subset for conversion from and to Unicode.
+
+ The QGb2312Codec is kept mainly for compatibility reasons with older software.
+*/
+
+
+/*!
+ Constructs a QGb2312Codec object.
+*/
+QGb2312Codec::QGb2312Codec()
+ : QGb18030Codec()
+{
+}
+
+int QGb2312Codec::_mibEnum()
+{
+ return 2025;
+}
+
+QByteArray QGb2312Codec::_name()
+{
+ return "GB2312";
+}
+
+
+QString QGb2312Codec::convertToUnicode(const char* chars, int len, ConverterState *state) const
+{
+ uchar buf[2];
+ int nbuf = 0;
+ ushort replacement = QChar::ReplacementCharacter;
+ if (state) {
+ if (state->flags & ConvertInvalidToNull)
+ replacement = QChar::Null;
+ nbuf = state->remainingChars;
+ buf[0] = state->state_data[0];
+ buf[1] = state->state_data[1];
+ }
+ int invalid = 0;
+
+ QString result;
+ result.resize(len);
+ int unicodeLen = 0;
+ ushort *const resultData = reinterpret_cast<ushort*>(result.data());
+ //qDebug("QGb2312Decoder::toUnicode(const char* chars, int len = %d)", len);
+ for (int i=0; i<len; i++) {
+ uchar ch = chars[i];
+ switch (nbuf) {
+ case 0:
+ if (IsLatin(ch)) {
+ // ASCII
+ resultData[unicodeLen] = ch;
+ ++unicodeLen;
+ } else if (IsByteInGb2312(ch)) {
+ // GB2312 1st byte?
+ buf[0] = ch;
+ nbuf = 1;
+ } else {
+ // Invalid
+ resultData[unicodeLen] = replacement;
+ ++unicodeLen;
+ ++invalid;
+ }
+ break;
+ case 1:
+ // GB2312 2nd byte
+ if (IsByteInGb2312(ch)) {
+ buf[1] = ch;
+ int clen = 2;
+ uint u = qt_Gb18030ToUnicode(buf, clen);
+ if (clen == 2) {
+ resultData[unicodeLen] = qValidChar(static_cast<ushort>(u));
+ ++unicodeLen;
+ } else {
+ resultData[unicodeLen] = replacement;
+ ++unicodeLen;
+ ++invalid;
+ }
+ nbuf = 0;
+ } else {
+ // Error
+ resultData[unicodeLen] = replacement;
+ ++unicodeLen;
+ ++invalid;
+ nbuf = 0;
+ }
+ break;
+ }
+ }
+ result.resize(unicodeLen);
+
+ if (state) {
+ state->remainingChars = nbuf;
+ state->state_data[0] = buf[0];
+ state->state_data[1] = buf[1];
+ state->invalidChars += invalid;
+ }
+ return result;
+}
+
+
+QByteArray QGb2312Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
+{
+ char replacement = '?';
+ if (state) {
+ if (state->flags & ConvertInvalidToNull)
+ replacement = 0;
+ }
+ int invalid = 0;
+
+ int rlen = 2*len + 1;
+ QByteArray rstr;
+ rstr.resize(rlen);
+ uchar* cursor = (uchar*)rstr.data();
+
+ //qDebug("QGb2312Codec::fromUnicode(const QString& uc, int& lenInOut = %d) const", lenInOut);
+ for (int i = 0; i < len; i++) {
+ QChar ch = uc[i];
+ uchar buf[2];
+
+ if (ch.row() == 0x00 && ch.cell() < 0x80) {
+ // ASCII
+ *cursor++ = ch.cell();
+ } else if ((qt_UnicodeToGbk(ch.unicode(), buf) == 2) &&
+ (buf[0] >= 0xA1) && (buf[1] >= 0xA1)) {
+ *cursor++ = buf[0];
+ *cursor++ = buf[1];
+ } else {
+ // Error
+ *cursor++ = replacement;
+ ++invalid;
+ }
+ }
+ rstr.resize(cursor - (uchar*)rstr.constData());
+
+ if (state) {
+ state->invalidChars += invalid;
+ }
+ return rstr;
+}
+
+
+#ifdef Q_OS_UNIX
+
+QFontGb2312Codec::QFontGb2312Codec()
+{
+}
+
+
+QByteArray QFontGb2312Codec::_name()
+{
+ return "gb2312.1980-0";
+}
+
+
+int QFontGb2312Codec::_mibEnum()
+{
+ return 57;
+}
+
+
+QString QFontGb2312Codec::convertToUnicode(const char* /*chars*/, int /*len*/, ConverterState *) const
+{
+ return QString();
+}
+
+QByteArray QFontGb2312Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *) const
+{
+ QByteArray result;
+ result.resize(len * 2);
+ uchar *rdata = (uchar *) result.data();
+ const QChar *ucp = uc;
+
+ //qDebug("QFontGb2312Codec::fromUnicode(const QString& uc, int& lenInOut = %d)", lenInOut);
+ uchar buf[8];
+ for (int i = 0; i < len; i++) {
+ QChar ch(*ucp++);
+
+ int len = qt_UnicodeToGbk(ch.unicode(), buf);
+
+ if (len == 2 && buf[0] > 0xa0 && buf[1] > 0xa0) {
+ *rdata++ = buf[0] & 0x7f;
+ *rdata++ = buf[1] & 0x7f;
+ } else {
+ *rdata++ = 0;
+ *rdata++ = 0;
+ }
+ }
+ return result;
+}
+
+
+QFontGbkCodec::QFontGbkCodec()
+{
+}
+
+
+QByteArray QFontGbkCodec::_name()
+{
+ return "gbk-0";
+}
+
+
+int QFontGbkCodec::_mibEnum()
+{
+ return -113;
+}
+
+
+QString QFontGbkCodec::convertToUnicode(const char* /*chars*/, int /*len*/, ConverterState *) const
+{
+ return QString();
+}
+
+QByteArray QFontGbkCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *) const
+{
+ QByteArray result;
+ result.resize(len * 2);
+ uchar *rdata = (uchar *) result.data();
+ const QChar *ucp = uc;
+
+ //qDebug("QFontGbkCodec::fromUnicode(const QString& uc, int& lenInOut = %d)", lenInOut);
+ for (int i = 0; i < len; i++) {
+ QChar ch(*ucp++);
+ uchar buf[8];
+
+ int len = qt_UnicodeToGbk(ch.unicode(), buf);
+
+ if (len == 2) {
+ *rdata++ = buf[0];
+ *rdata++ = buf[1];
+ } else {
+ *rdata++ = 0;
+ *rdata++ = 0;
+ }
+ }
+ return result;
+}
+
+
+QFontGb18030_0Codec::QFontGb18030_0Codec()
+{
+ //qDebug("QFontGb18030_0Codec::QFontGb18030_0Codec()");
+}
+
+
+QByteArray QFontGb18030_0Codec::_name()
+{
+ //qDebug("QFontGb18030_0Codec::name() = \"gb18030-0\"");
+ return "gb18030-0";
+}
+
+
+int QFontGb18030_0Codec::_mibEnum()
+{
+ //qDebug("QFontGb18030_0Codec::mibEnum() = -114");
+ return -114;
+}
+
+
+QString QFontGb18030_0Codec::convertToUnicode(const char* /*chars*/, int /*len*/, ConverterState *) const
+{
+ return QString();
+}
+
+QByteArray QFontGb18030_0Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *) const
+{
+ QByteArray result;
+ result.resize(len * 2);
+ uchar *rdata = (uchar *) result.data();
+ const QChar *ucp = uc;
+
+ //qDebug("QFontGb18030_0Codec::fromUnicode(const QString& uc, int& lenInOut = %d)", lenInOut);
+ for (int i = 0; i < len; i++) {
+ QChar ch(*ucp++);
+ if (ch.row () > 0 && !(ch.row () >= 0xd8 && ch.row () < 0xe0)) {
+ *rdata++ = ch.row();
+ *rdata++ = ch.cell();
+ } else {
+ *rdata++ = 0x0;
+ *rdata++ = 0x0;
+ }
+ }
+ return result;
+}
+
+#endif // Q_OS_UNIX
+
+
+static const indexTbl_t gb18030_to_ucs_index[154] = {
+ /* U+00__ */ {0x00, 0xFF, 0x0000, 0x0000}, {0x00, 0xFF, 0x0000, 0x0000},
+ /* U+02__ */ {0x00, 0xFF, 0x0000, 0x0000}, {0x00, 0x33, 0x0000, 0x041E},
+ /* U+04__ */ {0xFF, 0x00, 0x1BBE, 0x051E}, {0xFF, 0x00, 0x1BBE, 0x061E},
+ /* U+06__ */ {0xFF, 0x00, 0x1BBE, 0x071E}, {0xFF, 0x00, 0x1BBE, 0x081E},
+ /* U+08__ */ {0xFF, 0x00, 0x1BBE, 0x091E}, {0xFF, 0x00, 0x1BBE, 0x0A1E},
+ /* U+0A__ */ {0xFF, 0x00, 0x1BBE, 0x0B1E}, {0xFF, 0x00, 0x1BBE, 0x0C1E},
+ /* U+0C__ */ {0xFF, 0x00, 0x1BBE, 0x0D1E}, {0xFF, 0x00, 0x1BBE, 0x0E1E},
+ /* U+0E__ */ {0xFF, 0x00, 0x1BBE, 0x0F1E}, {0xFF, 0x00, 0x1BBE, 0x101E},
+ /* U+10__ */ {0xFF, 0x00, 0x1BBE, 0x111E}, {0xFF, 0x00, 0x1BBE, 0x121E},
+ /* U+12__ */ {0xFF, 0x00, 0x1BBE, 0x131E}, {0xFF, 0x00, 0x1BBE, 0x141E},
+ /* U+14__ */ {0xFF, 0x00, 0x1BBE, 0x151E}, {0xFF, 0x00, 0x1BBE, 0x161E},
+ /* U+16__ */ {0xFF, 0x00, 0x1BBE, 0x171E}, {0xFF, 0x00, 0x1BBE, 0x181E},
+ /* U+18__ */ {0xFF, 0x00, 0x1BBE, 0x191E}, {0xFF, 0x00, 0x1BBE, 0x1A1E},
+ /* U+1A__ */ {0xFF, 0x00, 0x1BBE, 0x1B1E}, {0xFF, 0x00, 0x1BBE, 0x1C1E},
+ /* U+1C__ */ {0xFF, 0x00, 0x1BBE, 0x1D1E}, {0xFF, 0x00, 0x1BBE, 0x1E1E},
+ /* U+1E__ */ {0xF2, 0xFF, 0x1BBE, 0x1F1E}, {0x00, 0xFF, 0x1BBE, 0x0000},
+ /* U+20__ */ {0x00, 0xFF, 0x1BBE, 0x0000}, {0x00, 0xFF, 0x1BBE, 0x0000},
+ /* U+22__ */ {0x00, 0xFF, 0x1BBE, 0x0000}, {0x00, 0xFF, 0x1BBE, 0x0000},
+ /* U+24__ */ {0x00, 0x02, 0x1BBE, 0x2640}, {0xFF, 0x00, 0x23FC, 0x2740},
+ /* U+26__ */ {0xFF, 0x00, 0x23FC, 0x2840}, {0xFF, 0x00, 0x23FC, 0x2940},
+ /* U+28__ */ {0xFF, 0x00, 0x23FC, 0x2A40}, {0xFF, 0x00, 0x23FC, 0x2B40},
+ /* U+2A__ */ {0xFF, 0x00, 0x23FC, 0x2C40}, {0xFF, 0x00, 0x23FC, 0x2D40},
+ /* U+2C__ */ {0x41, 0xFF, 0x23FC, 0x2E40}, {0x00, 0xFF, 0x23FC, 0x0000},
+ /* U+2E__ */ {0x00, 0xFF, 0x23FC, 0x0000}, {0x00, 0xFF, 0x23FC, 0x0000},
+ /* U+30__ */ {0x00, 0xFF, 0x23FC, 0x0000}, {0x00, 0xFF, 0x23FC, 0x0000},
+ /* U+32__ */ {0x00, 0xAC, 0x23FC, 0x356E}, {0xFF, 0x00, 0x26F9, 0x366E},
+ /* U+34__ */ {0xFF, 0x00, 0x26F9, 0x376E}, {0xAA, 0xFF, 0x26F9, 0x386E},
+ /* U+36__ */ {0x00, 0xFF, 0x26F9, 0x0000}, {0x00, 0xFF, 0x26F9, 0x0000},
+ /* U+38__ */ {0x00, 0xFF, 0x26F9, 0x0000}, {0x00, 0x69, 0x26F9, 0x3C77},
+ /* U+3A__ */ {0xFF, 0x00, 0x2A6E, 0x3D77}, {0xFF, 0x00, 0x2A6E, 0x3E77},
+ /* U+3C__ */ {0xDF, 0xFF, 0x2A6E, 0x3F77}, {0x00, 0xE6, 0x2A6E, 0x4079},
+ /* U+3E__ */ {0xFF, 0x00, 0x2C45, 0x4179}, {0xBE, 0xFF, 0x2C45, 0x4279},
+ /* U+40__ */ {0x00, 0xFF, 0x2C45, 0x0000}, {0x00, 0x58, 0x2C45, 0x447E},
+ /* U+42__ */ {0xCE, 0xFF, 0x2DBA, 0x457E}, {0x00, 0xFF, 0x2DBA, 0x0000},
+ /* U+44__ */ {0x00, 0x09, 0x2DBA, 0x4784}, {0xC3, 0xFF, 0x2F73, 0x4884},
+ /* U+46__ */ {0x00, 0x28, 0x2F73, 0x498F}, {0xFF, 0x00, 0x3232, 0x4A8F},
+ /* U+48__ */ {0xE8, 0xFF, 0x3232, 0x4B8F}, {0x00, 0xFF, 0x3232, 0x0000},
+ /* U+4A__ */ {0x00, 0x62, 0x3232, 0x9F43}, {0xFF, 0x00, 0x6A8C, 0xA043},
+ /* U+4C__ */ {0xFF, 0x00, 0x6A8C, 0xA143}, {0xFF, 0x00, 0x6A8C, 0xA243},
+ /* U+4E__ */ {0xFF, 0x00, 0x6A8C, 0xA343}, {0xFF, 0x00, 0x6A8C, 0xA443},
+ /* U+50__ */ {0xFF, 0x00, 0x6A8C, 0xA543}, {0xFF, 0x00, 0x6A8C, 0xA643},
+ /* U+52__ */ {0xFF, 0x00, 0x6A8C, 0xA743}, {0xFF, 0x00, 0x6A8C, 0xA843},
+ /* U+54__ */ {0xFF, 0x00, 0x6A8C, 0xA943}, {0xFF, 0x00, 0x6A8C, 0xAA43},
+ /* U+56__ */ {0xFF, 0x00, 0x6A8C, 0xAB43}, {0xFF, 0x00, 0x6A8C, 0xAC43},
+ /* U+58__ */ {0xFF, 0x00, 0x6A8C, 0xAD43}, {0xFF, 0x00, 0x6A8C, 0xAE43},
+ /* U+5A__ */ {0xFF, 0x00, 0x6A8C, 0xAF43}, {0xFF, 0x00, 0x6A8C, 0xB043},
+ /* U+5C__ */ {0xFF, 0x00, 0x6A8C, 0xB143}, {0xFF, 0x00, 0x6A8C, 0xB243},
+ /* U+5E__ */ {0xFF, 0x00, 0x6A8C, 0xB343}, {0xFF, 0x00, 0x6A8C, 0xB443},
+ /* U+60__ */ {0xFF, 0x00, 0x6A8C, 0xB543}, {0xFF, 0x00, 0x6A8C, 0xB643},
+ /* U+62__ */ {0xFF, 0x00, 0x6A8C, 0xB743}, {0xFF, 0x00, 0x6A8C, 0xB843},
+ /* U+64__ */ {0xFF, 0x00, 0x6A8C, 0xB943}, {0xFF, 0x00, 0x6A8C, 0xBA43},
+ /* U+66__ */ {0xFF, 0x00, 0x6A8C, 0xBB43}, {0xFF, 0x00, 0x6A8C, 0xBC43},
+ /* U+68__ */ {0xFF, 0x00, 0x6A8C, 0xBD43}, {0xFF, 0x00, 0x6A8C, 0xBE43},
+ /* U+6A__ */ {0xFF, 0x00, 0x6A8C, 0xBF43}, {0xFF, 0x00, 0x6A8C, 0xC043},
+ /* U+6C__ */ {0xFF, 0x00, 0x6A8C, 0xC143}, {0xFF, 0x00, 0x6A8C, 0xC243},
+ /* U+6E__ */ {0xFF, 0x00, 0x6A8C, 0xC343}, {0xFF, 0x00, 0x6A8C, 0xC443},
+ /* U+70__ */ {0xFF, 0x00, 0x6A8C, 0xC543}, {0xFF, 0x00, 0x6A8C, 0xC643},
+ /* U+72__ */ {0xFF, 0x00, 0x6A8C, 0xC743}, {0xFF, 0x00, 0x6A8C, 0xC843},
+ /* U+74__ */ {0xFF, 0x00, 0x6A8C, 0xC943}, {0xFF, 0x00, 0x6A8C, 0xCA43},
+ /* U+76__ */ {0xFF, 0x00, 0x6A8C, 0xCB43}, {0xFF, 0x00, 0x6A8C, 0xCC43},
+ /* U+78__ */ {0xFF, 0x00, 0x6A8C, 0xCD43}, {0xFF, 0x00, 0x6A8C, 0xCE43},
+ /* U+7A__ */ {0xFF, 0x00, 0x6A8C, 0xCF43}, {0xFF, 0x00, 0x6A8C, 0xD043},
+ /* U+7C__ */ {0xFF, 0x00, 0x6A8C, 0xD143}, {0xFF, 0x00, 0x6A8C, 0xD243},
+ /* U+7E__ */ {0xFF, 0x00, 0x6A8C, 0xD343}, {0xFF, 0x00, 0x6A8C, 0xD443},
+ /* U+80__ */ {0xFF, 0x00, 0x6A8C, 0xD543}, {0xFF, 0x00, 0x6A8C, 0xD643},
+ /* U+82__ */ {0xBD, 0xFF, 0x6A8C, 0xD743}, {0x00, 0x0D, 0x6A8C, 0xE857},
+ /* U+84__ */ {0xFF, 0x00, 0x7B53, 0xE957}, {0xFF, 0x00, 0x7B53, 0xEA57},
+ /* U+86__ */ {0xFF, 0x00, 0x7B53, 0xEB57}, {0xFF, 0x00, 0x7B53, 0xEC57},
+ /* U+88__ */ {0xFF, 0x00, 0x7B53, 0xED57}, {0xFF, 0x00, 0x7B53, 0xEE57},
+ /* U+8A__ */ {0xFF, 0x00, 0x7B53, 0xEF57}, {0xFF, 0x00, 0x7B53, 0xF057},
+ /* U+8C__ */ {0xFF, 0x00, 0x7B53, 0xF157}, {0xFF, 0x00, 0x7B53, 0xF257},
+ /* U+8E__ */ {0xFF, 0x00, 0x7B53, 0xF357}, {0xFF, 0x00, 0x7B53, 0xF457},
+ /* U+90__ */ {0xFF, 0x00, 0x7B53, 0xF557}, {0xFF, 0x00, 0x7B53, 0xF657},
+ /* U+92__ */ {0xFF, 0x00, 0x7B53, 0xF757}, {0xD5, 0xFF, 0x7B53, 0xF857},
+ /* U+94__ */ {0x00, 0xBD, 0x7B53, 0xF96C}, {0xFF, 0x00, 0x7F59, 0xFA6C},
+ /* U+96__ */ {0xFF, 0x00, 0x7F59, 0xFB6C}, {0xFF, 0x00, 0x7F59, 0xFC6C},
+ /* U+98__ */ {0xC4, 0xFF, 0x7F59, 0xFD6C}, {0x00, 0xE1, 0x7F59, 0xFF04},
+};
+
+static const indexTbl_t ucs_to_gb18030_index[256] = {
+ /* 0x00__ */ {0x80, 0xFF, 0x0080, 0x0000}, {0x00, 0xFF, 0x0080, 0x0000},
+ /* 0x02__ */ {0x00, 0xFF, 0x0080, 0x0000}, {0x00, 0xFF, 0x0080, 0x0000},
+ /* 0x04__ */ {0x00, 0x51, 0x0080, 0x02E2}, {0xFF, 0x00, 0x1C3E, 0x03E2},
+ /* 0x06__ */ {0xFF, 0x00, 0x1C3E, 0x04E2}, {0xFF, 0x00, 0x1C3E, 0x05E2},
+ /* 0x08__ */ {0xFF, 0x00, 0x1C3E, 0x06E2}, {0xFF, 0x00, 0x1C3E, 0x07E2},
+ /* 0x0A__ */ {0xFF, 0x00, 0x1C3E, 0x08E2}, {0xFF, 0x00, 0x1C3E, 0x09E2},
+ /* 0x0C__ */ {0xFF, 0x00, 0x1C3E, 0x0AE2}, {0xFF, 0x00, 0x1C3E, 0x0BE2},
+ /* 0x0E__ */ {0xFF, 0x00, 0x1C3E, 0x0CE2}, {0xFF, 0x00, 0x1C3E, 0x0DE2},
+ /* 0x10__ */ {0xFF, 0x00, 0x1C3E, 0x0EE2}, {0xFF, 0x00, 0x1C3E, 0x0FE2},
+ /* 0x12__ */ {0xFF, 0x00, 0x1C3E, 0x10E2}, {0xFF, 0x00, 0x1C3E, 0x11E2},
+ /* 0x14__ */ {0xFF, 0x00, 0x1C3E, 0x12E2}, {0xFF, 0x00, 0x1C3E, 0x13E2},
+ /* 0x16__ */ {0xFF, 0x00, 0x1C3E, 0x14E2}, {0xFF, 0x00, 0x1C3E, 0x15E2},
+ /* 0x18__ */ {0xFF, 0x00, 0x1C3E, 0x16E2}, {0xFF, 0x00, 0x1C3E, 0x17E2},
+ /* 0x1A__ */ {0xFF, 0x00, 0x1C3E, 0x18E2}, {0xFF, 0x00, 0x1C3E, 0x19E2},
+ /* 0x1C__ */ {0xFF, 0x00, 0x1C3E, 0x1AE2}, {0xFF, 0x00, 0x1C3E, 0x1BE2},
+ /* 0x1E__ */ {0xFF, 0x00, 0x1C3E, 0x1CE2}, {0xFF, 0x00, 0x1C3E, 0x1DE2},
+ /* 0x20__ */ {0x10, 0xFF, 0x1C3E, 0x1EE2}, {0x00, 0xFF, 0x1C3E, 0x0000},
+ /* 0x22__ */ {0x00, 0xFF, 0x1C3E, 0x0000}, {0x00, 0xFF, 0x1C3E, 0x0000},
+ /* 0x24__ */ {0x00, 0xFF, 0x1C3E, 0x0000}, {0x00, 0xFF, 0x1C3E, 0x0000},
+ /* 0x26__ */ {0x00, 0x42, 0x1C3E, 0x23C0}, {0xFF, 0x00, 0x247C, 0x24C0},
+ /* 0x28__ */ {0xFF, 0x00, 0x247C, 0x25C0}, {0xFF, 0x00, 0x247C, 0x26C0},
+ /* 0x2A__ */ {0xFF, 0x00, 0x247C, 0x27C0}, {0xFF, 0x00, 0x247C, 0x28C0},
+ /* 0x2C__ */ {0xFF, 0x00, 0x247C, 0x29C0}, {0xFF, 0x00, 0x247C, 0x2AC0},
+ /* 0x2E__ */ {0x81, 0xFF, 0x247C, 0x2BC0}, {0x00, 0xFF, 0x247C, 0x0000},
+ /* 0x30__ */ {0x00, 0xFF, 0x247C, 0x0000}, {0x00, 0xFF, 0x247C, 0x0000},
+ /* 0x32__ */ {0x00, 0xFF, 0x247C, 0x0000}, {0x00, 0xFF, 0x247C, 0x0000},
+ /* 0x34__ */ {0x00, 0xFF, 0x247C, 0x0000}, {0x00, 0xFF, 0x247C, 0x0000},
+ /* 0x36__ */ {0x00, 0x1A, 0x247C, 0x3292}, {0xFF, 0x00, 0x2779, 0x3392},
+ /* 0x38__ */ {0xFF, 0x00, 0x2779, 0x3492}, {0x18, 0xFF, 0x2779, 0x3592},
+ /* 0x3A__ */ {0x00, 0xFF, 0x2779, 0x0000}, {0x00, 0xFF, 0x2779, 0x0000},
+ /* 0x3C__ */ {0x00, 0xE0, 0x2779, 0x3889}, {0xFF, 0x00, 0x2AEE, 0x3989},
+ /* 0x3E__ */ {0xFF, 0x00, 0x2AEE, 0x3A89}, {0xFF, 0x00, 0x2AEE, 0x3B89},
+ /* 0x40__ */ {0x56, 0xFF, 0x2AEE, 0x3C89}, {0x00, 0x5F, 0x2AEE, 0x3D87},
+ /* 0x42__ */ {0xFF, 0x00, 0x2CC5, 0x3E87}, {0x37, 0xFF, 0x2CC5, 0x3F87},
+ /* 0x44__ */ {0x00, 0xD6, 0x2CC5, 0x4082}, {0xFF, 0x00, 0x2E3A, 0x4182},
+ /* 0x46__ */ {0x4C, 0xFF, 0x2E3A, 0x4282}, {0x00, 0x8D, 0x2E3A, 0x437C},
+ /* 0x48__ */ {0xFF, 0x00, 0x2FF3, 0x447C}, {0x47, 0xB7, 0x2FF3, 0x457C},
+ /* 0x4A__ */ {0xFF, 0x00, 0x32B2, 0x4671}, {0xFF, 0x00, 0x32B2, 0x4771},
+ /* 0x4C__ */ {0x77, 0xFF, 0x32B2, 0x4871}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x4E__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x50__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x52__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x54__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x56__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x58__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x5A__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x5C__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x5E__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x60__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x62__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x64__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x66__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x68__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x6A__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x6C__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x6E__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x70__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x72__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x74__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x76__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x78__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x7A__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x7C__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x7E__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x80__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x82__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x84__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x86__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x88__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x8A__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x8C__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x8E__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x90__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x92__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x94__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x96__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x98__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x9A__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x9C__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
+ /* 0x9E__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xA5, 0x32B2, 0x49BD},
+ /* 0xA0__ */ {0xFF, 0x00, 0x6B0C, 0x4ABD}, {0xFF, 0x00, 0x6B0C, 0x4BBD},
+ /* 0xA2__ */ {0xFF, 0x00, 0x6B0C, 0x4CBD}, {0xFF, 0x00, 0x6B0C, 0x4DBD},
+ /* 0xA4__ */ {0xFF, 0x00, 0x6B0C, 0x4EBD}, {0xFF, 0x00, 0x6B0C, 0x4FBD},
+ /* 0xA6__ */ {0xFF, 0x00, 0x6B0C, 0x50BD}, {0xFF, 0x00, 0x6B0C, 0x51BD},
+ /* 0xA8__ */ {0xFF, 0x00, 0x6B0C, 0x52BD}, {0xFF, 0x00, 0x6B0C, 0x53BD},
+ /* 0xAA__ */ {0xFF, 0x00, 0x6B0C, 0x54BD}, {0xFF, 0x00, 0x6B0C, 0x55BD},
+ /* 0xAC__ */ {0xFF, 0x00, 0x6B0C, 0x56BD}, {0xFF, 0x00, 0x6B0C, 0x57BD},
+ /* 0xAE__ */ {0xFF, 0x00, 0x6B0C, 0x58BD}, {0xFF, 0x00, 0x6B0C, 0x59BD},
+ /* 0xB0__ */ {0xFF, 0x00, 0x6B0C, 0x5ABD}, {0xFF, 0x00, 0x6B0C, 0x5BBD},
+ /* 0xB2__ */ {0xFF, 0x00, 0x6B0C, 0x5CBD}, {0xFF, 0x00, 0x6B0C, 0x5DBD},
+ /* 0xB4__ */ {0xFF, 0x00, 0x6B0C, 0x5EBD}, {0xFF, 0x00, 0x6B0C, 0x5FBD},
+ /* 0xB6__ */ {0xFF, 0x00, 0x6B0C, 0x60BD}, {0xFF, 0x00, 0x6B0C, 0x61BD},
+ /* 0xB8__ */ {0xFF, 0x00, 0x6B0C, 0x62BD}, {0xFF, 0x00, 0x6B0C, 0x63BD},
+ /* 0xBA__ */ {0xFF, 0x00, 0x6B0C, 0x64BD}, {0xFF, 0x00, 0x6B0C, 0x65BD},
+ /* 0xBC__ */ {0xFF, 0x00, 0x6B0C, 0x66BD}, {0xFF, 0x00, 0x6B0C, 0x67BD},
+ /* 0xBE__ */ {0xFF, 0x00, 0x6B0C, 0x68BD}, {0xFF, 0x00, 0x6B0C, 0x69BD},
+ /* 0xC0__ */ {0xFF, 0x00, 0x6B0C, 0x6ABD}, {0xFF, 0x00, 0x6B0C, 0x6BBD},
+ /* 0xC2__ */ {0xFF, 0x00, 0x6B0C, 0x6CBD}, {0xFF, 0x00, 0x6B0C, 0x6DBD},
+ /* 0xC4__ */ {0xFF, 0x00, 0x6B0C, 0x6EBD}, {0xFF, 0x00, 0x6B0C, 0x6FBD},
+ /* 0xC6__ */ {0xFF, 0x00, 0x6B0C, 0x70BD}, {0xFF, 0x00, 0x6B0C, 0x71BD},
+ /* 0xC8__ */ {0xFF, 0x00, 0x6B0C, 0x72BD}, {0xFF, 0x00, 0x6B0C, 0x73BD},
+ /* 0xCA__ */ {0xFF, 0x00, 0x6B0C, 0x74BD}, {0xFF, 0x00, 0x6B0C, 0x75BD},
+ /* 0xCC__ */ {0xFF, 0x00, 0x6B0C, 0x76BD}, {0xFF, 0x00, 0x6B0C, 0x77BD},
+ /* 0xCE__ */ {0xFF, 0x00, 0x6B0C, 0x78BD}, {0xFF, 0x00, 0x6B0C, 0x79BD},
+ /* 0xD0__ */ {0xFF, 0x00, 0x6B0C, 0x7ABD}, {0xFF, 0x00, 0x6B0C, 0x7BBD},
+ /* 0xD2__ */ {0xFF, 0x00, 0x6B0C, 0x7CBD}, {0xFF, 0x00, 0x6B0C, 0x7DBD},
+ /* 0xD4__ */ {0xFF, 0x00, 0x6B0C, 0x7EBD}, {0xFF, 0x00, 0x6B0C, 0x7FBD},
+ /* 0xD6__ */ {0xFF, 0x00, 0x6B0C, 0x80BD}, {0xFF, 0x00, 0x6B0C, 0x81BD},
+ /* 0xD8__ */ {0xFF, 0x00, 0x6B0C, 0x0000}, {0xFF, 0x00, 0x6B0C, 0x0000},
+ /* 0xDA__ */ {0xFF, 0x00, 0x6B0C, 0x0000}, {0xFF, 0x00, 0x6B0C, 0x0000},
+ /* 0xDC__ */ {0xFF, 0x00, 0x6B0C, 0x0000}, {0xFF, 0x00, 0x6B0C, 0x0000},
+ /* 0xDE__ */ {0xFF, 0x00, 0x6B0C, 0x0000}, {0xFF, 0x00, 0x6B0C, 0x0000},
+ /* 0xE0__ */ {0xFF, 0x00, 0x7A72, 0x0000}, {0xFF, 0x00, 0x7A72, 0x0000},
+ /* 0xE2__ */ {0xFF, 0x00, 0x7A72, 0x0000}, {0xFF, 0x00, 0x7A72, 0x0000},
+ /* 0xE4__ */ {0xFF, 0x00, 0x7A72, 0x0000}, {0xFF, 0x00, 0x7A72, 0x0000},
+ /* 0xE6__ */ {0xFF, 0x00, 0x7A72, 0x0000}, {0x66, 0xFF, 0x7A72, 0x0000},
+ /* 0xE8__ */ {0x00, 0x64, 0x7A72, 0x82A9}, {0xFF, 0x00, 0x8B39, 0x83A9},
+ /* 0xEA__ */ {0xFF, 0x00, 0x8B39, 0x84A9}, {0xFF, 0x00, 0x8B39, 0x85A9},
+ /* 0xEC__ */ {0xFF, 0x00, 0x8B39, 0x86A9}, {0xFF, 0x00, 0x8B39, 0x87A9},
+ /* 0xEE__ */ {0xFF, 0x00, 0x8B39, 0x88A9}, {0xFF, 0x00, 0x8B39, 0x89A9},
+ /* 0xF0__ */ {0xFF, 0x00, 0x8B39, 0x8AA9}, {0xFF, 0x00, 0x8B39, 0x8BA9},
+ /* 0xF2__ */ {0xFF, 0x00, 0x8B39, 0x8CA9}, {0xFF, 0x00, 0x8B39, 0x8DA9},
+ /* 0xF4__ */ {0xFF, 0x00, 0x8B39, 0x8EA9}, {0xFF, 0x00, 0x8B39, 0x8FA9},
+ /* 0xF6__ */ {0xFF, 0x00, 0x8B39, 0x90A9}, {0xFF, 0x00, 0x8B39, 0x91A9},
+ /* 0xF8__ */ {0xFF, 0x00, 0x8B39, 0x92A9}, {0x2C, 0xFF, 0x8B39, 0x93A9},
+ /* 0xFA__ */ {0x00, 0x29, 0x8B39, 0x9494}, {0xFF, 0x00, 0x8F3F, 0x9594},
+ /* 0xFC__ */ {0xFF, 0x00, 0x8F3F, 0x9694}, {0xFF, 0x00, 0x8F3F, 0x9794},
+ /* 0xFE__ */ {0x30, 0xFF, 0x8F3F, 0x9894}, {0x00, 0xE5, 0x8F3F, 0x98FC},
+};
+
+static quint16 const ucs_to_gb18030[28839] = {
+ /* Contiguous area: U+0080 .. U+0451 */
+ /* U+0080 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
+ /* U+0088 */ 0x0008, 0x0009, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015,
+ /* U+0090 */ 0x0016, 0x0017, 0x0018, 0x0019, 0x0020, 0x0021, 0x0022, 0x0023,
+ /* U+0098 */ 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x0030, 0x0031,
+ /* U+00A0 */ 0x0032, 0x0033, 0x0034, 0x0035, 0xA1E8, 0x0036, 0x0037, 0xA1EC,
+ /* U+00A8 */ 0xA1A7, 0x0038, 0x0039, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044,
+ /* U+00B0 */ 0xA1E3, 0xA1C0, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xA1A4,
+ /* U+00B8 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
+ /* U+00C0 */ 0x0058, 0x0059, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065,
+ /* U+00C8 */ 0x0066, 0x0067, 0x0068, 0x0069, 0x0070, 0x0071, 0x0072, 0x0073,
+ /* U+00D0 */ 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x0080, 0xA1C1,
+ /* U+00D8 */ 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088,
+ /* U+00E0 */ 0xA8A4, 0xA8A2, 0x0089, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094,
+ /* U+00E8 */ 0xA8A8, 0xA8A6, 0xA8BA, 0x0095, 0xA8AC, 0xA8AA, 0x0096, 0x0097,
+ /* U+00F0 */ 0x0098, 0x0099, 0xA8B0, 0xA8AE, 0x00A0, 0x00A1, 0x00A2, 0xA1C2,
+ /* U+00F8 */ 0x00A3, 0xA8B4, 0xA8B2, 0x00A4, 0xA8B9, 0x00A5, 0x00A6, 0x00A7,
+ /* U+0100 */ 0x00A8, 0xA8A1, 0x00A9, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4,
+ /* U+0108 */ 0x00B5, 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00C0, 0x00C1, 0x00C2,
+ /* U+0110 */ 0x00C3, 0x00C4, 0x00C5, 0xA8A5, 0x00C6, 0x00C7, 0x00C8, 0x00C9,
+ /* U+0118 */ 0x00D0, 0x00D1, 0x00D2, 0xA8A7, 0x00D3, 0x00D4, 0x00D5, 0x00D6,
+ /* U+0120 */ 0x00D7, 0x00D8, 0x00D9, 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4,
+ /* U+0128 */ 0x00E5, 0x00E6, 0x00E7, 0xA8A9, 0x00E8, 0x00E9, 0x00F0, 0x00F1,
+ /* U+0130 */ 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F8, 0x00F9,
+ /* U+0138 */ 0x0100, 0x0101, 0x0102, 0x0103, 0x0104, 0x0105, 0x0106, 0x0107,
+ /* U+0140 */ 0x0108, 0x0109, 0x0110, 0x0111, 0xA8BD, 0x0112, 0x0113, 0x0114,
+ /* U+0148 */ 0xA8BE, 0x0115, 0x0116, 0x0117, 0x0118, 0xA8AD, 0x0119, 0x0120,
+ /* U+0150 */ 0x0121, 0x0122, 0x0123, 0x0124, 0x0125, 0x0126, 0x0127, 0x0128,
+ /* U+0158 */ 0x0129, 0x0130, 0x0131, 0x0132, 0x0133, 0x0134, 0x0135, 0x0136,
+ /* U+0160 */ 0x0137, 0x0138, 0x0139, 0x0140, 0x0141, 0x0142, 0x0143, 0x0144,
+ /* U+0168 */ 0x0145, 0x0146, 0x0147, 0xA8B1, 0x0148, 0x0149, 0x0150, 0x0151,
+ /* U+0170 */ 0x0152, 0x0153, 0x0154, 0x0155, 0x0156, 0x0157, 0x0158, 0x0159,
+ /* U+0178 */ 0x0160, 0x0161, 0x0162, 0x0163, 0x0164, 0x0165, 0x0166, 0x0167,
+ /* U+0180 */ 0x0168, 0x0169, 0x0170, 0x0171, 0x0172, 0x0173, 0x0174, 0x0175,
+ /* U+0188 */ 0x0176, 0x0177, 0x0178, 0x0179, 0x0180, 0x0181, 0x0182, 0x0183,
+ /* U+0190 */ 0x0184, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189, 0x0190, 0x0191,
+ /* U+0198 */ 0x0192, 0x0193, 0x0194, 0x0195, 0x0196, 0x0197, 0x0198, 0x0199,
+ /* U+01A0 */ 0x01A0, 0x01A1, 0x01A2, 0x01A3, 0x01A4, 0x01A5, 0x01A6, 0x01A7,
+ /* U+01A8 */ 0x01A8, 0x01A9, 0x01B0, 0x01B1, 0x01B2, 0x01B3, 0x01B4, 0x01B5,
+ /* U+01B0 */ 0x01B6, 0x01B7, 0x01B8, 0x01B9, 0x01C0, 0x01C1, 0x01C2, 0x01C3,
+ /* U+01B8 */ 0x01C4, 0x01C5, 0x01C6, 0x01C7, 0x01C8, 0x01C9, 0x01D0, 0x01D1,
+ /* U+01C0 */ 0x01D2, 0x01D3, 0x01D4, 0x01D5, 0x01D6, 0x01D7, 0x01D8, 0x01D9,
+ /* U+01C8 */ 0x01E0, 0x01E1, 0x01E2, 0x01E3, 0x01E4, 0x01E5, 0xA8A3, 0x01E6,
+ /* U+01D0 */ 0xA8AB, 0x01E7, 0xA8AF, 0x01E8, 0xA8B3, 0x01E9, 0xA8B5, 0x01F0,
+ /* U+01D8 */ 0xA8B6, 0x01F1, 0xA8B7, 0x01F2, 0xA8B8, 0x01F3, 0x01F4, 0x01F5,
+ /* U+01E0 */ 0x01F6, 0x01F7, 0x01F8, 0x01F9, 0x0200, 0x0201, 0x0202, 0x0203,
+ /* U+01E8 */ 0x0204, 0x0205, 0x0206, 0x0207, 0x0208, 0x0209, 0x0210, 0x0211,
+ /* U+01F0 */ 0x0212, 0x0213, 0x0214, 0x0215, 0x0216, 0x0217, 0x0218, 0x0219,
+ /* U+01F8 */ 0x0220, 0xA8BF, 0x0221, 0x0222, 0x0223, 0x0224, 0x0225, 0x0226,
+ /* U+0200 */ 0x0227, 0x0228, 0x0229, 0x0230, 0x0231, 0x0232, 0x0233, 0x0234,
+ /* U+0208 */ 0x0235, 0x0236, 0x0237, 0x0238, 0x0239, 0x0240, 0x0241, 0x0242,
+ /* U+0210 */ 0x0243, 0x0244, 0x0245, 0x0246, 0x0247, 0x0248, 0x0249, 0x0250,
+ /* U+0218 */ 0x0251, 0x0252, 0x0253, 0x0254, 0x0255, 0x0256, 0x0257, 0x0258,
+ /* U+0220 */ 0x0259, 0x0260, 0x0261, 0x0262, 0x0263, 0x0264, 0x0265, 0x0266,
+ /* U+0228 */ 0x0267, 0x0268, 0x0269, 0x0270, 0x0271, 0x0272, 0x0273, 0x0274,
+ /* U+0230 */ 0x0275, 0x0276, 0x0277, 0x0278, 0x0279, 0x0280, 0x0281, 0x0282,
+ /* U+0238 */ 0x0283, 0x0284, 0x0285, 0x0286, 0x0287, 0x0288, 0x0289, 0x0290,
+ /* U+0240 */ 0x0291, 0x0292, 0x0293, 0x0294, 0x0295, 0x0296, 0x0297, 0x0298,
+ /* U+0248 */ 0x0299, 0x02A0, 0x02A1, 0x02A2, 0x02A3, 0x02A4, 0x02A5, 0x02A6,
+ /* U+0250 */ 0x02A7, 0xA8BB, 0x02A8, 0x02A9, 0x02B0, 0x02B1, 0x02B2, 0x02B3,
+ /* U+0258 */ 0x02B4, 0x02B5, 0x02B6, 0x02B7, 0x02B8, 0x02B9, 0x02C0, 0x02C1,
+ /* U+0260 */ 0x02C2, 0xA8C0, 0x02C3, 0x02C4, 0x02C5, 0x02C6, 0x02C7, 0x02C8,
+ /* U+0268 */ 0x02C9, 0x02D0, 0x02D1, 0x02D2, 0x02D3, 0x02D4, 0x02D5, 0x02D6,
+ /* U+0270 */ 0x02D7, 0x02D8, 0x02D9, 0x02E0, 0x02E1, 0x02E2, 0x02E3, 0x02E4,
+ /* U+0278 */ 0x02E5, 0x02E6, 0x02E7, 0x02E8, 0x02E9, 0x02F0, 0x02F1, 0x02F2,
+ /* U+0280 */ 0x02F3, 0x02F4, 0x02F5, 0x02F6, 0x02F7, 0x02F8, 0x02F9, 0x0300,
+ /* U+0288 */ 0x0301, 0x0302, 0x0303, 0x0304, 0x0305, 0x0306, 0x0307, 0x0308,
+ /* U+0290 */ 0x0309, 0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316,
+ /* U+0298 */ 0x0317, 0x0318, 0x0319, 0x0320, 0x0321, 0x0322, 0x0323, 0x0324,
+ /* U+02A0 */ 0x0325, 0x0326, 0x0327, 0x0328, 0x0329, 0x0330, 0x0331, 0x0332,
+ /* U+02A8 */ 0x0333, 0x0334, 0x0335, 0x0336, 0x0337, 0x0338, 0x0339, 0x0340,
+ /* U+02B0 */ 0x0341, 0x0342, 0x0343, 0x0344, 0x0345, 0x0346, 0x0347, 0x0348,
+ /* U+02B8 */ 0x0349, 0x0350, 0x0351, 0x0352, 0x0353, 0x0354, 0x0355, 0x0356,
+ /* U+02C0 */ 0x0357, 0x0358, 0x0359, 0x0360, 0x0361, 0x0362, 0x0363, 0xA1A6,
+ /* U+02C8 */ 0x0364, 0xA1A5, 0xA840, 0xA841, 0x0365, 0x0366, 0x0367, 0x0368,
+ /* U+02D0 */ 0x0369, 0x0370, 0x0371, 0x0372, 0x0373, 0x0374, 0x0375, 0x0376,
+ /* U+02D8 */ 0x0377, 0xA842, 0x0378, 0x0379, 0x0380, 0x0381, 0x0382, 0x0383,
+ /* U+02E0 */ 0x0384, 0x0385, 0x0386, 0x0387, 0x0388, 0x0389, 0x0390, 0x0391,
+ /* U+02E8 */ 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399,
+ /* U+02F0 */ 0x03A0, 0x03A1, 0x03A2, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7,
+ /* U+02F8 */ 0x03A8, 0x03A9, 0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5,
+ /* U+0300 */ 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03C0, 0x03C1, 0x03C2, 0x03C3,
+ /* U+0308 */ 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x03D0, 0x03D1,
+ /* U+0310 */ 0x03D2, 0x03D3, 0x03D4, 0x03D5, 0x03D6, 0x03D7, 0x03D8, 0x03D9,
+ /* U+0318 */ 0x03E0, 0x03E1, 0x03E2, 0x03E3, 0x03E4, 0x03E5, 0x03E6, 0x03E7,
+ /* U+0320 */ 0x03E8, 0x03E9, 0x03F0, 0x03F1, 0x03F2, 0x03F3, 0x03F4, 0x03F5,
+ /* U+0328 */ 0x03F6, 0x03F7, 0x03F8, 0x03F9, 0x0400, 0x0401, 0x0402, 0x0403,
+ /* U+0330 */ 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x0410, 0x0411,
+ /* U+0338 */ 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419,
+ /* U+0340 */ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
+ /* U+0348 */ 0x0428, 0x0429, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435,
+ /* U+0350 */ 0x0436, 0x0437, 0x0438, 0x0439, 0x0440, 0x0441, 0x0442, 0x0443,
+ /* U+0358 */ 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x0450, 0x0451,
+ /* U+0360 */ 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458, 0x0459,
+ /* U+0368 */ 0x0460, 0x0461, 0x0462, 0x0463, 0x0464, 0x0465, 0x0466, 0x0467,
+ /* U+0370 */ 0x0468, 0x0469, 0x0470, 0x0471, 0x0472, 0x0473, 0x0474, 0x0475,
+ /* U+0378 */ 0x0476, 0x0477, 0x0478, 0x0479, 0x0480, 0x0481, 0x0482, 0x0483,
+ /* U+0380 */ 0x0484, 0x0485, 0x0486, 0x0487, 0x0488, 0x0489, 0x0490, 0x0491,
+ /* U+0388 */ 0x0492, 0x0493, 0x0494, 0x0495, 0x0496, 0x0497, 0x0498, 0x0499,
+ /* U+0390 */ 0x04A0, 0xA6A1, 0xA6A2, 0xA6A3, 0xA6A4, 0xA6A5, 0xA6A6, 0xA6A7,
+ /* U+0398 */ 0xA6A8, 0xA6A9, 0xA6AA, 0xA6AB, 0xA6AC, 0xA6AD, 0xA6AE, 0xA6AF,
+ /* U+03A0 */ 0xA6B0, 0xA6B1, 0x04A1, 0xA6B2, 0xA6B3, 0xA6B4, 0xA6B5, 0xA6B6,
+ /* U+03A8 */ 0xA6B7, 0xA6B8, 0x04A2, 0x04A3, 0x04A4, 0x04A5, 0x04A6, 0x04A7,
+ /* U+03B0 */ 0x04A8, 0xA6C1, 0xA6C2, 0xA6C3, 0xA6C4, 0xA6C5, 0xA6C6, 0xA6C7,
+ /* U+03B8 */ 0xA6C8, 0xA6C9, 0xA6CA, 0xA6CB, 0xA6CC, 0xA6CD, 0xA6CE, 0xA6CF,
+ /* U+03C0 */ 0xA6D0, 0xA6D1, 0x04A9, 0xA6D2, 0xA6D3, 0xA6D4, 0xA6D5, 0xA6D6,
+ /* U+03C8 */ 0xA6D7, 0xA6D8, 0x04B0, 0x04B1, 0x04B2, 0x04B3, 0x04B4, 0x04B5,
+ /* U+03D0 */ 0x04B6, 0x04B7, 0x04B8, 0x04B9, 0x04C0, 0x04C1, 0x04C2, 0x04C3,
+ /* U+03D8 */ 0x04C4, 0x04C5, 0x04C6, 0x04C7, 0x04C8, 0x04C9, 0x04D0, 0x04D1,
+ /* U+03E0 */ 0x04D2, 0x04D3, 0x04D4, 0x04D5, 0x04D6, 0x04D7, 0x04D8, 0x04D9,
+ /* U+03E8 */ 0x04E0, 0x04E1, 0x04E2, 0x04E3, 0x04E4, 0x04E5, 0x04E6, 0x04E7,
+ /* U+03F0 */ 0x04E8, 0x04E9, 0x04F0, 0x04F1, 0x04F2, 0x04F3, 0x04F4, 0x04F5,
+ /* U+03F8 */ 0x04F6, 0x04F7, 0x04F8, 0x04F9, 0x0500, 0x0501, 0x0502, 0x0503,
+ /* U+0400 */ 0x0504, 0xA7A7, 0x0505, 0x0506, 0x0507, 0x0508, 0x0509, 0x0510,
+ /* U+0408 */ 0x0511, 0x0512, 0x0513, 0x0514, 0x0515, 0x0516, 0x0517, 0x0518,
+ /* U+0410 */ 0xA7A1, 0xA7A2, 0xA7A3, 0xA7A4, 0xA7A5, 0xA7A6, 0xA7A8, 0xA7A9,
+ /* U+0418 */ 0xA7AA, 0xA7AB, 0xA7AC, 0xA7AD, 0xA7AE, 0xA7AF, 0xA7B0, 0xA7B1,
+ /* U+0420 */ 0xA7B2, 0xA7B3, 0xA7B4, 0xA7B5, 0xA7B6, 0xA7B7, 0xA7B8, 0xA7B9,
+ /* U+0428 */ 0xA7BA, 0xA7BB, 0xA7BC, 0xA7BD, 0xA7BE, 0xA7BF, 0xA7C0, 0xA7C1,
+ /* U+0430 */ 0xA7D1, 0xA7D2, 0xA7D3, 0xA7D4, 0xA7D5, 0xA7D6, 0xA7D8, 0xA7D9,
+ /* U+0438 */ 0xA7DA, 0xA7DB, 0xA7DC, 0xA7DD, 0xA7DE, 0xA7DF, 0xA7E0, 0xA7E1,
+ /* U+0440 */ 0xA7E2, 0xA7E3, 0xA7E4, 0xA7E5, 0xA7E6, 0xA7E7, 0xA7E8, 0xA7E9,
+ /* U+0448 */ 0xA7EA, 0xA7EB, 0xA7EC, 0xA7ED, 0xA7EE, 0xA7EF, 0xA7F0, 0xA7F1,
+ /* U+0450 */ 0x0519, 0xA7D7,
+ /* Contiguous area: U+2010 .. U+2642 */
+ /* U+2010 */ 0xA95C, 0x0A42, 0x0A43, 0xA843, 0xA1AA, 0xA844, 0xA1AC, 0x0A44,
+ /* U+2018 */ 0xA1AE, 0xA1AF, 0x0A45, 0x0A46, 0xA1B0, 0xA1B1, 0x0A47, 0x0A48,
+ /* U+2020 */ 0x0A49, 0x0A50, 0x0A51, 0x0A52, 0x0A53, 0xA845, 0xA1AD, 0x0A54,
+ /* U+2028 */ 0x0A55, 0x0A56, 0x0A57, 0x0A58, 0x0A59, 0x0A60, 0x0A61, 0x0A62,
+ /* U+2030 */ 0xA1EB, 0x0A63, 0xA1E4, 0xA1E5, 0x0A64, 0xA846, 0x0A65, 0x0A66,
+ /* U+2038 */ 0x0A67, 0x0A68, 0x0A69, 0xA1F9, 0x0A70, 0x0A71, 0x0A72, 0x0A73,
+ /* U+2040 */ 0x0A74, 0x0A75, 0x0A76, 0x0A77, 0x0A78, 0x0A79, 0x0A80, 0x0A81,
+ /* U+2048 */ 0x0A82, 0x0A83, 0x0A84, 0x0A85, 0x0A86, 0x0A87, 0x0A88, 0x0A89,
+ /* U+2050 */ 0x0A90, 0x0A91, 0x0A92, 0x0A93, 0x0A94, 0x0A95, 0x0A96, 0x0A97,
+ /* U+2058 */ 0x0A98, 0x0A99, 0x0AA0, 0x0AA1, 0x0AA2, 0x0AA3, 0x0AA4, 0x0AA5,
+ /* U+2060 */ 0x0AA6, 0x0AA7, 0x0AA8, 0x0AA9, 0x0AB0, 0x0AB1, 0x0AB2, 0x0AB3,
+ /* U+2068 */ 0x0AB4, 0x0AB5, 0x0AB6, 0x0AB7, 0x0AB8, 0x0AB9, 0x0AC0, 0x0AC1,
+ /* U+2070 */ 0x0AC2, 0x0AC3, 0x0AC4, 0x0AC5, 0x0AC6, 0x0AC7, 0x0AC8, 0x0AC9,
+ /* U+2078 */ 0x0AD0, 0x0AD1, 0x0AD2, 0x0AD3, 0x0AD4, 0x0AD5, 0x0AD6, 0x0AD7,
+ /* U+2080 */ 0x0AD8, 0x0AD9, 0x0AE0, 0x0AE1, 0x0AE2, 0x0AE3, 0x0AE4, 0x0AE5,
+ /* U+2088 */ 0x0AE6, 0x0AE7, 0x0AE8, 0x0AE9, 0x0AF0, 0x0AF1, 0x0AF2, 0x0AF3,
+ /* U+2090 */ 0x0AF4, 0x0AF5, 0x0AF6, 0x0AF7, 0x0AF8, 0x0AF9, 0x0B00, 0x0B01,
+ /* U+2098 */ 0x0B02, 0x0B03, 0x0B04, 0x0B05, 0x0B06, 0x0B07, 0x0B08, 0x0B09,
+ /* U+20A0 */ 0x0B10, 0x0B11, 0x0B12, 0x0B13, 0x0B14, 0x0B15, 0x0B16, 0x0B17,
+ /* U+20A8 */ 0x0B18, 0x0B19, 0x0B20, 0x0B21, 0xA2E3, 0x0B22, 0x0B23, 0x0B24,
+ /* U+20B0 */ 0x0B25, 0x0B26, 0x0B27, 0x0B28, 0x0B29, 0x0B30, 0x0B31, 0x0B32,
+ /* U+20B8 */ 0x0B33, 0x0B34, 0x0B35, 0x0B36, 0x0B37, 0x0B38, 0x0B39, 0x0B40,
+ /* U+20C0 */ 0x0B41, 0x0B42, 0x0B43, 0x0B44, 0x0B45, 0x0B46, 0x0B47, 0x0B48,
+ /* U+20C8 */ 0x0B49, 0x0B50, 0x0B51, 0x0B52, 0x0B53, 0x0B54, 0x0B55, 0x0B56,
+ /* U+20D0 */ 0x0B57, 0x0B58, 0x0B59, 0x0B60, 0x0B61, 0x0B62, 0x0B63, 0x0B64,
+ /* U+20D8 */ 0x0B65, 0x0B66, 0x0B67, 0x0B68, 0x0B69, 0x0B70, 0x0B71, 0x0B72,
+ /* U+20E0 */ 0x0B73, 0x0B74, 0x0B75, 0x0B76, 0x0B77, 0x0B78, 0x0B79, 0x0B80,
+ /* U+20E8 */ 0x0B81, 0x0B82, 0x0B83, 0x0B84, 0x0B85, 0x0B86, 0x0B87, 0x0B88,
+ /* U+20F0 */ 0x0B89, 0x0B90, 0x0B91, 0x0B92, 0x0B93, 0x0B94, 0x0B95, 0x0B96,
+ /* U+20F8 */ 0x0B97, 0x0B98, 0x0B99, 0x0BA0, 0x0BA1, 0x0BA2, 0x0BA3, 0x0BA4,
+ /* U+2100 */ 0x0BA5, 0x0BA6, 0x0BA7, 0xA1E6, 0x0BA8, 0xA847, 0x0BA9, 0x0BB0,
+ /* U+2108 */ 0x0BB1, 0xA848, 0x0BB2, 0x0BB3, 0x0BB4, 0x0BB5, 0x0BB6, 0x0BB7,
+ /* U+2110 */ 0x0BB8, 0x0BB9, 0x0BC0, 0x0BC1, 0x0BC2, 0x0BC3, 0xA1ED, 0x0BC4,
+ /* U+2118 */ 0x0BC5, 0x0BC6, 0x0BC7, 0x0BC8, 0x0BC9, 0x0BD0, 0x0BD1, 0x0BD2,
+ /* U+2120 */ 0x0BD3, 0xA959, 0x0BD4, 0x0BD5, 0x0BD6, 0x0BD7, 0x0BD8, 0x0BD9,
+ /* U+2128 */ 0x0BE0, 0x0BE1, 0x0BE2, 0x0BE3, 0x0BE4, 0x0BE5, 0x0BE6, 0x0BE7,
+ /* U+2130 */ 0x0BE8, 0x0BE9, 0x0BF0, 0x0BF1, 0x0BF2, 0x0BF3, 0x0BF4, 0x0BF5,
+ /* U+2138 */ 0x0BF6, 0x0BF7, 0x0BF8, 0x0BF9, 0x0C00, 0x0C01, 0x0C02, 0x0C03,
+ /* U+2140 */ 0x0C04, 0x0C05, 0x0C06, 0x0C07, 0x0C08, 0x0C09, 0x0C10, 0x0C11,
+ /* U+2148 */ 0x0C12, 0x0C13, 0x0C14, 0x0C15, 0x0C16, 0x0C17, 0x0C18, 0x0C19,
+ /* U+2150 */ 0x0C20, 0x0C21, 0x0C22, 0x0C23, 0x0C24, 0x0C25, 0x0C26, 0x0C27,
+ /* U+2158 */ 0x0C28, 0x0C29, 0x0C30, 0x0C31, 0x0C32, 0x0C33, 0x0C34, 0x0C35,
+ /* U+2160 */ 0xA2F1, 0xA2F2, 0xA2F3, 0xA2F4, 0xA2F5, 0xA2F6, 0xA2F7, 0xA2F8,
+ /* U+2168 */ 0xA2F9, 0xA2FA, 0xA2FB, 0xA2FC, 0x0C36, 0x0C37, 0x0C38, 0x0C39,
+ /* U+2170 */ 0xA2A1, 0xA2A2, 0xA2A3, 0xA2A4, 0xA2A5, 0xA2A6, 0xA2A7, 0xA2A8,
+ /* U+2178 */ 0xA2A9, 0xA2AA, 0x0C40, 0x0C41, 0x0C42, 0x0C43, 0x0C44, 0x0C45,
+ /* U+2180 */ 0x0C46, 0x0C47, 0x0C48, 0x0C49, 0x0C50, 0x0C51, 0x0C52, 0x0C53,
+ /* U+2188 */ 0x0C54, 0x0C55, 0x0C56, 0x0C57, 0x0C58, 0x0C59, 0x0C60, 0x0C61,
+ /* U+2190 */ 0xA1FB, 0xA1FC, 0xA1FA, 0xA1FD, 0x0C62, 0x0C63, 0xA849, 0xA84A,
+ /* U+2198 */ 0xA84B, 0xA84C, 0x0C64, 0x0C65, 0x0C66, 0x0C67, 0x0C68, 0x0C69,
+ /* U+21A0 */ 0x0C70, 0x0C71, 0x0C72, 0x0C73, 0x0C74, 0x0C75, 0x0C76, 0x0C77,
+ /* U+21A8 */ 0x0C78, 0x0C79, 0x0C80, 0x0C81, 0x0C82, 0x0C83, 0x0C84, 0x0C85,
+ /* U+21B0 */ 0x0C86, 0x0C87, 0x0C88, 0x0C89, 0x0C90, 0x0C91, 0x0C92, 0x0C93,
+ /* U+21B8 */ 0x0C94, 0x0C95, 0x0C96, 0x0C97, 0x0C98, 0x0C99, 0x0CA0, 0x0CA1,
+ /* U+21C0 */ 0x0CA2, 0x0CA3, 0x0CA4, 0x0CA5, 0x0CA6, 0x0CA7, 0x0CA8, 0x0CA9,
+ /* U+21C8 */ 0x0CB0, 0x0CB1, 0x0CB2, 0x0CB3, 0x0CB4, 0x0CB5, 0x0CB6, 0x0CB7,
+ /* U+21D0 */ 0x0CB8, 0x0CB9, 0x0CC0, 0x0CC1, 0x0CC2, 0x0CC3, 0x0CC4, 0x0CC5,
+ /* U+21D8 */ 0x0CC6, 0x0CC7, 0x0CC8, 0x0CC9, 0x0CD0, 0x0CD1, 0x0CD2, 0x0CD3,
+ /* U+21E0 */ 0x0CD4, 0x0CD5, 0x0CD6, 0x0CD7, 0x0CD8, 0x0CD9, 0x0CE0, 0x0CE1,
+ /* U+21E8 */ 0x0CE2, 0x0CE3, 0x0CE4, 0x0CE5, 0x0CE6, 0x0CE7, 0x0CE8, 0x0CE9,
+ /* U+21F0 */ 0x0CF0, 0x0CF1, 0x0CF2, 0x0CF3, 0x0CF4, 0x0CF5, 0x0CF6, 0x0CF7,
+ /* U+21F8 */ 0x0CF8, 0x0CF9, 0x0D00, 0x0D01, 0x0D02, 0x0D03, 0x0D04, 0x0D05,
+ /* U+2200 */ 0x0D06, 0x0D07, 0x0D08, 0x0D09, 0x0D10, 0x0D11, 0x0D12, 0x0D13,
+ /* U+2208 */ 0xA1CA, 0x0D14, 0x0D15, 0x0D16, 0x0D17, 0x0D18, 0x0D19, 0xA1C7,
+ /* U+2210 */ 0x0D20, 0xA1C6, 0x0D21, 0x0D22, 0x0D23, 0xA84D, 0x0D24, 0x0D25,
+ /* U+2218 */ 0x0D26, 0x0D27, 0xA1CC, 0x0D28, 0x0D29, 0xA1D8, 0xA1DE, 0xA84E,
+ /* U+2220 */ 0xA1CF, 0x0D30, 0x0D31, 0xA84F, 0x0D32, 0xA1CE, 0x0D33, 0xA1C4,
+ /* U+2228 */ 0xA1C5, 0xA1C9, 0xA1C8, 0xA1D2, 0x0D34, 0x0D35, 0xA1D3, 0x0D36,
+ /* U+2230 */ 0x0D37, 0x0D38, 0x0D39, 0x0D40, 0xA1E0, 0xA1DF, 0xA1C3, 0xA1CB,
+ /* U+2238 */ 0x0D41, 0x0D42, 0x0D43, 0x0D44, 0x0D45, 0xA1D7, 0x0D46, 0x0D47,
+ /* U+2240 */ 0x0D48, 0x0D49, 0x0D50, 0x0D51, 0x0D52, 0x0D53, 0x0D54, 0x0D55,
+ /* U+2248 */ 0xA1D6, 0x0D56, 0x0D57, 0x0D58, 0xA1D5, 0x0D59, 0x0D60, 0x0D61,
+ /* U+2250 */ 0x0D62, 0x0D63, 0xA850, 0x0D64, 0x0D65, 0x0D66, 0x0D67, 0x0D68,
+ /* U+2258 */ 0x0D69, 0x0D70, 0x0D71, 0x0D72, 0x0D73, 0x0D74, 0x0D75, 0x0D76,
+ /* U+2260 */ 0xA1D9, 0xA1D4, 0x0D77, 0x0D78, 0xA1DC, 0xA1DD, 0xA851, 0xA852,
+ /* U+2268 */ 0x0D79, 0x0D80, 0x0D81, 0x0D82, 0x0D83, 0x0D84, 0xA1DA, 0xA1DB,
+ /* U+2270 */ 0x0D85, 0x0D86, 0x0D87, 0x0D88, 0x0D89, 0x0D90, 0x0D91, 0x0D92,
+ /* U+2278 */ 0x0D93, 0x0D94, 0x0D95, 0x0D96, 0x0D97, 0x0D98, 0x0D99, 0x0DA0,
+ /* U+2280 */ 0x0DA1, 0x0DA2, 0x0DA3, 0x0DA4, 0x0DA5, 0x0DA6, 0x0DA7, 0x0DA8,
+ /* U+2288 */ 0x0DA9, 0x0DB0, 0x0DB1, 0x0DB2, 0x0DB3, 0x0DB4, 0x0DB5, 0x0DB6,
+ /* U+2290 */ 0x0DB7, 0x0DB8, 0x0DB9, 0x0DC0, 0x0DC1, 0xA892, 0x0DC2, 0x0DC3,
+ /* U+2298 */ 0x0DC4, 0xA1D1, 0x0DC5, 0x0DC6, 0x0DC7, 0x0DC8, 0x0DC9, 0x0DD0,
+ /* U+22A0 */ 0x0DD1, 0x0DD2, 0x0DD3, 0x0DD4, 0x0DD5, 0xA1CD, 0x0DD6, 0x0DD7,
+ /* U+22A8 */ 0x0DD8, 0x0DD9, 0x0DE0, 0x0DE1, 0x0DE2, 0x0DE3, 0x0DE4, 0x0DE5,
+ /* U+22B0 */ 0x0DE6, 0x0DE7, 0x0DE8, 0x0DE9, 0x0DF0, 0x0DF1, 0x0DF2, 0x0DF3,
+ /* U+22B8 */ 0x0DF4, 0x0DF5, 0x0DF6, 0x0DF7, 0x0DF8, 0x0DF9, 0x0E00, 0xA853,
+ /* U+22C0 */ 0x0E01, 0x0E02, 0x0E03, 0x0E04, 0x0E05, 0x0E06, 0x0E07, 0x0E08,
+ /* U+22C8 */ 0x0E09, 0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14, 0x0E15, 0x0E16,
+ /* U+22D0 */ 0x0E17, 0x0E18, 0x0E19, 0x0E20, 0x0E21, 0x0E22, 0x0E23, 0x0E24,
+ /* U+22D8 */ 0x0E25, 0x0E26, 0x0E27, 0x0E28, 0x0E29, 0x0E30, 0x0E31, 0x0E32,
+ /* U+22E0 */ 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37, 0x0E38, 0x0E39, 0x0E40,
+ /* U+22E8 */ 0x0E41, 0x0E42, 0x0E43, 0x0E44, 0x0E45, 0x0E46, 0x0E47, 0x0E48,
+ /* U+22F0 */ 0x0E49, 0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, 0x0E55, 0x0E56,
+ /* U+22F8 */ 0x0E57, 0x0E58, 0x0E59, 0x0E60, 0x0E61, 0x0E62, 0x0E63, 0x0E64,
+ /* U+2300 */ 0x0E65, 0x0E66, 0x0E67, 0x0E68, 0x0E69, 0x0E70, 0x0E71, 0x0E72,
+ /* U+2308 */ 0x0E73, 0x0E74, 0x0E75, 0x0E76, 0x0E77, 0x0E78, 0x0E79, 0x0E80,
+ /* U+2310 */ 0x0E81, 0x0E82, 0xA1D0, 0x0E83, 0x0E84, 0x0E85, 0x0E86, 0x0E87,
+ /* U+2318 */ 0x0E88, 0x0E89, 0x0E90, 0x0E91, 0x0E92, 0x0E93, 0x0E94, 0x0E95,
+ /* U+2320 */ 0x0E96, 0x0E97, 0x0E98, 0x0E99, 0x0EA0, 0x0EA1, 0x0EA2, 0x0EA3,
+ /* U+2328 */ 0x0EA4, 0x0EA5, 0x0EA6, 0x0EA7, 0x0EA8, 0x0EA9, 0x0EB0, 0x0EB1,
+ /* U+2330 */ 0x0EB2, 0x0EB3, 0x0EB4, 0x0EB5, 0x0EB6, 0x0EB7, 0x0EB8, 0x0EB9,
+ /* U+2338 */ 0x0EC0, 0x0EC1, 0x0EC2, 0x0EC3, 0x0EC4, 0x0EC5, 0x0EC6, 0x0EC7,
+ /* U+2340 */ 0x0EC8, 0x0EC9, 0x0ED0, 0x0ED1, 0x0ED2, 0x0ED3, 0x0ED4, 0x0ED5,
+ /* U+2348 */ 0x0ED6, 0x0ED7, 0x0ED8, 0x0ED9, 0x0EE0, 0x0EE1, 0x0EE2, 0x0EE3,
+ /* U+2350 */ 0x0EE4, 0x0EE5, 0x0EE6, 0x0EE7, 0x0EE8, 0x0EE9, 0x0EF0, 0x0EF1,
+ /* U+2358 */ 0x0EF2, 0x0EF3, 0x0EF4, 0x0EF5, 0x0EF6, 0x0EF7, 0x0EF8, 0x0EF9,
+ /* U+2360 */ 0x0F00, 0x0F01, 0x0F02, 0x0F03, 0x0F04, 0x0F05, 0x0F06, 0x0F07,
+ /* U+2368 */ 0x0F08, 0x0F09, 0x0F10, 0x0F11, 0x0F12, 0x0F13, 0x0F14, 0x0F15,
+ /* U+2370 */ 0x0F16, 0x0F17, 0x0F18, 0x0F19, 0x0F20, 0x0F21, 0x0F22, 0x0F23,
+ /* U+2378 */ 0x0F24, 0x0F25, 0x0F26, 0x0F27, 0x0F28, 0x0F29, 0x0F30, 0x0F31,
+ /* U+2380 */ 0x0F32, 0x0F33, 0x0F34, 0x0F35, 0x0F36, 0x0F37, 0x0F38, 0x0F39,
+ /* U+2388 */ 0x0F40, 0x0F41, 0x0F42, 0x0F43, 0x0F44, 0x0F45, 0x0F46, 0x0F47,
+ /* U+2390 */ 0x0F48, 0x0F49, 0x0F50, 0x0F51, 0x0F52, 0x0F53, 0x0F54, 0x0F55,
+ /* U+2398 */ 0x0F56, 0x0F57, 0x0F58, 0x0F59, 0x0F60, 0x0F61, 0x0F62, 0x0F63,
+ /* U+23A0 */ 0x0F64, 0x0F65, 0x0F66, 0x0F67, 0x0F68, 0x0F69, 0x0F70, 0x0F71,
+ /* U+23A8 */ 0x0F72, 0x0F73, 0x0F74, 0x0F75, 0x0F76, 0x0F77, 0x0F78, 0x0F79,
+ /* U+23B0 */ 0x0F80, 0x0F81, 0x0F82, 0x0F83, 0x0F84, 0x0F85, 0x0F86, 0x0F87,
+ /* U+23B8 */ 0x0F88, 0x0F89, 0x0F90, 0x0F91, 0x0F92, 0x0F93, 0x0F94, 0x0F95,
+ /* U+23C0 */ 0x0F96, 0x0F97, 0x0F98, 0x0F99, 0x0FA0, 0x0FA1, 0x0FA2, 0x0FA3,
+ /* U+23C8 */ 0x0FA4, 0x0FA5, 0x0FA6, 0x0FA7, 0x0FA8, 0x0FA9, 0x0FB0, 0x0FB1,
+ /* U+23D0 */ 0x0FB2, 0x0FB3, 0x0FB4, 0x0FB5, 0x0FB6, 0x0FB7, 0x0FB8, 0x0FB9,
+ /* U+23D8 */ 0x0FC0, 0x0FC1, 0x0FC2, 0x0FC3, 0x0FC4, 0x0FC5, 0x0FC6, 0x0FC7,
+ /* U+23E0 */ 0x0FC8, 0x0FC9, 0x0FD0, 0x0FD1, 0x0FD2, 0x0FD3, 0x0FD4, 0x0FD5,
+ /* U+23E8 */ 0x0FD6, 0x0FD7, 0x0FD8, 0x0FD9, 0x1000, 0x1001, 0x1002, 0x1003,
+ /* U+23F0 */ 0x1004, 0x1005, 0x1006, 0x1007, 0x1008, 0x1009, 0x1010, 0x1011,
+ /* U+23F8 */ 0x1012, 0x1013, 0x1014, 0x1015, 0x1016, 0x1017, 0x1018, 0x1019,
+ /* U+2400 */ 0x1020, 0x1021, 0x1022, 0x1023, 0x1024, 0x1025, 0x1026, 0x1027,
+ /* U+2408 */ 0x1028, 0x1029, 0x1030, 0x1031, 0x1032, 0x1033, 0x1034, 0x1035,
+ /* U+2410 */ 0x1036, 0x1037, 0x1038, 0x1039, 0x1040, 0x1041, 0x1042, 0x1043,
+ /* U+2418 */ 0x1044, 0x1045, 0x1046, 0x1047, 0x1048, 0x1049, 0x1050, 0x1051,
+ /* U+2420 */ 0x1052, 0x1053, 0x1054, 0x1055, 0x1056, 0x1057, 0x1058, 0x1059,
+ /* U+2428 */ 0x1060, 0x1061, 0x1062, 0x1063, 0x1064, 0x1065, 0x1066, 0x1067,
+ /* U+2430 */ 0x1068, 0x1069, 0x1070, 0x1071, 0x1072, 0x1073, 0x1074, 0x1075,
+ /* U+2438 */ 0x1076, 0x1077, 0x1078, 0x1079, 0x1080, 0x1081, 0x1082, 0x1083,
+ /* U+2440 */ 0x1084, 0x1085, 0x1086, 0x1087, 0x1088, 0x1089, 0x1090, 0x1091,
+ /* U+2448 */ 0x1092, 0x1093, 0x1094, 0x1095, 0x1096, 0x1097, 0x1098, 0x1099,
+ /* U+2450 */ 0x10A0, 0x10A1, 0x10A2, 0x10A3, 0x10A4, 0x10A5, 0x10A6, 0x10A7,
+ /* U+2458 */ 0x10A8, 0x10A9, 0x10B0, 0x10B1, 0x10B2, 0x10B3, 0x10B4, 0x10B5,
+ /* U+2460 */ 0xA2D9, 0xA2DA, 0xA2DB, 0xA2DC, 0xA2DD, 0xA2DE, 0xA2DF, 0xA2E0,
+ /* U+2468 */ 0xA2E1, 0xA2E2, 0x10B6, 0x10B7, 0x10B8, 0x10B9, 0x10C0, 0x10C1,
+ /* U+2470 */ 0x10C2, 0x10C3, 0x10C4, 0x10C5, 0xA2C5, 0xA2C6, 0xA2C7, 0xA2C8,
+ /* U+2478 */ 0xA2C9, 0xA2CA, 0xA2CB, 0xA2CC, 0xA2CD, 0xA2CE, 0xA2CF, 0xA2D0,
+ /* U+2480 */ 0xA2D1, 0xA2D2, 0xA2D3, 0xA2D4, 0xA2D5, 0xA2D6, 0xA2D7, 0xA2D8,
+ /* U+2488 */ 0xA2B1, 0xA2B2, 0xA2B3, 0xA2B4, 0xA2B5, 0xA2B6, 0xA2B7, 0xA2B8,
+ /* U+2490 */ 0xA2B9, 0xA2BA, 0xA2BB, 0xA2BC, 0xA2BD, 0xA2BE, 0xA2BF, 0xA2C0,
+ /* U+2498 */ 0xA2C1, 0xA2C2, 0xA2C3, 0xA2C4, 0x10C6, 0x10C7, 0x10C8, 0x10C9,
+ /* U+24A0 */ 0x10D0, 0x10D1, 0x10D2, 0x10D3, 0x10D4, 0x10D5, 0x10D6, 0x10D7,
+ /* U+24A8 */ 0x10D8, 0x10D9, 0x10E0, 0x10E1, 0x10E2, 0x10E3, 0x10E4, 0x10E5,
+ /* U+24B0 */ 0x10E6, 0x10E7, 0x10E8, 0x10E9, 0x10F0, 0x10F1, 0x10F2, 0x10F3,
+ /* U+24B8 */ 0x10F4, 0x10F5, 0x10F6, 0x10F7, 0x10F8, 0x10F9, 0x1100, 0x1101,
+ /* U+24C0 */ 0x1102, 0x1103, 0x1104, 0x1105, 0x1106, 0x1107, 0x1108, 0x1109,
+ /* U+24C8 */ 0x1110, 0x1111, 0x1112, 0x1113, 0x1114, 0x1115, 0x1116, 0x1117,
+ /* U+24D0 */ 0x1118, 0x1119, 0x1120, 0x1121, 0x1122, 0x1123, 0x1124, 0x1125,
+ /* U+24D8 */ 0x1126, 0x1127, 0x1128, 0x1129, 0x1130, 0x1131, 0x1132, 0x1133,
+ /* U+24E0 */ 0x1134, 0x1135, 0x1136, 0x1137, 0x1138, 0x1139, 0x1140, 0x1141,
+ /* U+24E8 */ 0x1142, 0x1143, 0x1144, 0x1145, 0x1146, 0x1147, 0x1148, 0x1149,
+ /* U+24F0 */ 0x1150, 0x1151, 0x1152, 0x1153, 0x1154, 0x1155, 0x1156, 0x1157,
+ /* U+24F8 */ 0x1158, 0x1159, 0x1160, 0x1161, 0x1162, 0x1163, 0x1164, 0x1165,
+ /* U+2500 */ 0xA9A4, 0xA9A5, 0xA9A6, 0xA9A7, 0xA9A8, 0xA9A9, 0xA9AA, 0xA9AB,
+ /* U+2508 */ 0xA9AC, 0xA9AD, 0xA9AE, 0xA9AF, 0xA9B0, 0xA9B1, 0xA9B2, 0xA9B3,
+ /* U+2510 */ 0xA9B4, 0xA9B5, 0xA9B6, 0xA9B7, 0xA9B8, 0xA9B9, 0xA9BA, 0xA9BB,
+ /* U+2518 */ 0xA9BC, 0xA9BD, 0xA9BE, 0xA9BF, 0xA9C0, 0xA9C1, 0xA9C2, 0xA9C3,
+ /* U+2520 */ 0xA9C4, 0xA9C5, 0xA9C6, 0xA9C7, 0xA9C8, 0xA9C9, 0xA9CA, 0xA9CB,
+ /* U+2528 */ 0xA9CC, 0xA9CD, 0xA9CE, 0xA9CF, 0xA9D0, 0xA9D1, 0xA9D2, 0xA9D3,
+ /* U+2530 */ 0xA9D4, 0xA9D5, 0xA9D6, 0xA9D7, 0xA9D8, 0xA9D9, 0xA9DA, 0xA9DB,
+ /* U+2538 */ 0xA9DC, 0xA9DD, 0xA9DE, 0xA9DF, 0xA9E0, 0xA9E1, 0xA9E2, 0xA9E3,
+ /* U+2540 */ 0xA9E4, 0xA9E5, 0xA9E6, 0xA9E7, 0xA9E8, 0xA9E9, 0xA9EA, 0xA9EB,
+ /* U+2548 */ 0xA9EC, 0xA9ED, 0xA9EE, 0xA9EF, 0x1166, 0x1167, 0x1168, 0x1169,
+ /* U+2550 */ 0xA854, 0xA855, 0xA856, 0xA857, 0xA858, 0xA859, 0xA85A, 0xA85B,
+ /* U+2558 */ 0xA85C, 0xA85D, 0xA85E, 0xA85F, 0xA860, 0xA861, 0xA862, 0xA863,
+ /* U+2560 */ 0xA864, 0xA865, 0xA866, 0xA867, 0xA868, 0xA869, 0xA86A, 0xA86B,
+ /* U+2568 */ 0xA86C, 0xA86D, 0xA86E, 0xA86F, 0xA870, 0xA871, 0xA872, 0xA873,
+ /* U+2570 */ 0xA874, 0xA875, 0xA876, 0xA877, 0x1170, 0x1171, 0x1172, 0x1173,
+ /* U+2578 */ 0x1174, 0x1175, 0x1176, 0x1177, 0x1178, 0x1179, 0x1180, 0x1181,
+ /* U+2580 */ 0x1182, 0xA878, 0xA879, 0xA87A, 0xA87B, 0xA87C, 0xA87D, 0xA87E,
+ /* U+2588 */ 0xA880, 0xA881, 0xA882, 0xA883, 0xA884, 0xA885, 0xA886, 0xA887,
+ /* U+2590 */ 0x1183, 0x1184, 0x1185, 0xA888, 0xA889, 0xA88A, 0x1186, 0x1187,
+ /* U+2598 */ 0x1188, 0x1189, 0x1190, 0x1191, 0x1192, 0x1193, 0x1194, 0x1195,
+ /* U+25A0 */ 0xA1F6, 0xA1F5, 0x1196, 0x1197, 0x1198, 0x1199, 0x11A0, 0x11A1,
+ /* U+25A8 */ 0x11A2, 0x11A3, 0x11A4, 0x11A5, 0x11A6, 0x11A7, 0x11A8, 0x11A9,
+ /* U+25B0 */ 0x11B0, 0x11B1, 0xA1F8, 0xA1F7, 0x11B2, 0x11B3, 0x11B4, 0x11B5,
+ /* U+25B8 */ 0x11B6, 0x11B7, 0x11B8, 0x11B9, 0xA88B, 0xA88C, 0x11C0, 0x11C1,
+ /* U+25C0 */ 0x11C2, 0x11C3, 0x11C4, 0x11C5, 0x11C6, 0x11C7, 0xA1F4, 0xA1F3,
+ /* U+25C8 */ 0x11C8, 0x11C9, 0x11D0, 0xA1F0, 0x11D1, 0x11D2, 0xA1F2, 0xA1F1,
+ /* U+25D0 */ 0x11D3, 0x11D4, 0x11D5, 0x11D6, 0x11D7, 0x11D8, 0x11D9, 0x11E0,
+ /* U+25D8 */ 0x11E1, 0x11E2, 0x11E3, 0x11E4, 0x11E5, 0x11E6, 0x11E7, 0x11E8,
+ /* U+25E0 */ 0x11E9, 0x11F0, 0xA88D, 0xA88E, 0xA88F, 0xA890, 0x11F1, 0x11F2,
+ /* U+25E8 */ 0x11F3, 0x11F4, 0x11F5, 0x11F6, 0x11F7, 0x11F8, 0x11F9, 0x1200,
+ /* U+25F0 */ 0x1201, 0x1202, 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1208,
+ /* U+25F8 */ 0x1209, 0x1210, 0x1211, 0x1212, 0x1213, 0x1214, 0x1215, 0x1216,
+ /* U+2600 */ 0x1217, 0x1218, 0x1219, 0x1220, 0x1221, 0xA1EF, 0xA1EE, 0x1222,
+ /* U+2608 */ 0x1223, 0xA891, 0x1224, 0x1225, 0x1226, 0x1227, 0x1228, 0x1229,
+ /* U+2610 */ 0x1230, 0x1231, 0x1232, 0x1233, 0x1234, 0x1235, 0x1236, 0x1237,
+ /* U+2618 */ 0x1238, 0x1239, 0x1240, 0x1241, 0x1242, 0x1243, 0x1244, 0x1245,
+ /* U+2620 */ 0x1246, 0x1247, 0x1248, 0x1249, 0x1250, 0x1251, 0x1252, 0x1253,
+ /* U+2628 */ 0x1254, 0x1255, 0x1256, 0x1257, 0x1258, 0x1259, 0x1260, 0x1261,
+ /* U+2630 */ 0x1262, 0x1263, 0x1264, 0x1265, 0x1266, 0x1267, 0x1268, 0x1269,
+ /* U+2638 */ 0x1270, 0x1271, 0x1272, 0x1273, 0x1274, 0x1275, 0x1276, 0x1277,
+ /* U+2640 */ 0xA1E2, 0x1278, 0xA1E1,
+ /* Contiguous area: U+2E81 .. U+361A */
+ /* U+2E81 */ 0xFE50, 0x1FC9, 0x1FD0, 0xFE54, 0x1FD1, 0x1FD2, 0x1FD3,
+ /* U+2E88 */ 0xFE57, 0x1FD4, 0x1FD5, 0xFE58, 0xFE5D, 0x1FD6, 0x1FD7, 0x1FD8,
+ /* U+2E90 */ 0x1FD9, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0xFE5E,
+ /* U+2E98 */ 0x2006, 0x2007, 0x2008, 0x2009, 0x2010, 0x2011, 0x2012, 0x2013,
+ /* U+2EA0 */ 0x2014, 0x2015, 0x2016, 0x2017, 0x2018, 0x2019, 0x2020, 0xFE6B,
+ /* U+2EA8 */ 0x2021, 0x2022, 0xFE6E, 0x2023, 0x2024, 0x2025, 0xFE71, 0x2026,
+ /* U+2EB0 */ 0x2027, 0x2028, 0x2029, 0xFE73, 0x2030, 0x2031, 0xFE74, 0xFE75,
+ /* U+2EB8 */ 0x2032, 0x2033, 0x2034, 0xFE79, 0x2035, 0x2036, 0x2037, 0x2038,
+ /* U+2EC0 */ 0x2039, 0x2040, 0x2041, 0x2042, 0x2043, 0x2044, 0x2045, 0x2046,
+ /* U+2EC8 */ 0x2047, 0x2048, 0xFE84, 0x2049, 0x2050, 0x2051, 0x2052, 0x2053,
+ /* U+2ED0 */ 0x2054, 0x2055, 0x2056, 0x2057, 0x2058, 0x2059, 0x2060, 0x2061,
+ /* U+2ED8 */ 0x2062, 0x2063, 0x2064, 0x2065, 0x2066, 0x2067, 0x2068, 0x2069,
+ /* U+2EE0 */ 0x2070, 0x2071, 0x2072, 0x2073, 0x2074, 0x2075, 0x2076, 0x2077,
+ /* U+2EE8 */ 0x2078, 0x2079, 0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085,
+ /* U+2EF0 */ 0x2086, 0x2087, 0x2088, 0x2089, 0x2090, 0x2091, 0x2092, 0x2093,
+ /* U+2EF8 */ 0x2094, 0x2095, 0x2096, 0x2097, 0x2098, 0x2099, 0x20A0, 0x20A1,
+ /* U+2F00 */ 0x20A2, 0x20A3, 0x20A4, 0x20A5, 0x20A6, 0x20A7, 0x20A8, 0x20A9,
+ /* U+2F08 */ 0x20B0, 0x20B1, 0x20B2, 0x20B3, 0x20B4, 0x20B5, 0x20B6, 0x20B7,
+ /* U+2F10 */ 0x20B8, 0x20B9, 0x20C0, 0x20C1, 0x20C2, 0x20C3, 0x20C4, 0x20C5,
+ /* U+2F18 */ 0x20C6, 0x20C7, 0x20C8, 0x20C9, 0x20D0, 0x20D1, 0x20D2, 0x20D3,
+ /* U+2F20 */ 0x20D4, 0x20D5, 0x20D6, 0x20D7, 0x20D8, 0x20D9, 0x20E0, 0x20E1,
+ /* U+2F28 */ 0x20E2, 0x20E3, 0x20E4, 0x20E5, 0x20E6, 0x20E7, 0x20E8, 0x20E9,
+ /* U+2F30 */ 0x20F0, 0x20F1, 0x20F2, 0x20F3, 0x20F4, 0x20F5, 0x20F6, 0x20F7,
+ /* U+2F38 */ 0x20F8, 0x20F9, 0x2100, 0x2101, 0x2102, 0x2103, 0x2104, 0x2105,
+ /* U+2F40 */ 0x2106, 0x2107, 0x2108, 0x2109, 0x2110, 0x2111, 0x2112, 0x2113,
+ /* U+2F48 */ 0x2114, 0x2115, 0x2116, 0x2117, 0x2118, 0x2119, 0x2120, 0x2121,
+ /* U+2F50 */ 0x2122, 0x2123, 0x2124, 0x2125, 0x2126, 0x2127, 0x2128, 0x2129,
+ /* U+2F58 */ 0x2130, 0x2131, 0x2132, 0x2133, 0x2134, 0x2135, 0x2136, 0x2137,
+ /* U+2F60 */ 0x2138, 0x2139, 0x2140, 0x2141, 0x2142, 0x2143, 0x2144, 0x2145,
+ /* U+2F68 */ 0x2146, 0x2147, 0x2148, 0x2149, 0x2150, 0x2151, 0x2152, 0x2153,
+ /* U+2F70 */ 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159, 0x2160, 0x2161,
+ /* U+2F78 */ 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169,
+ /* U+2F80 */ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
+ /* U+2F88 */ 0x2178, 0x2179, 0x2180, 0x2181, 0x2182, 0x2183, 0x2184, 0x2185,
+ /* U+2F90 */ 0x2186, 0x2187, 0x2188, 0x2189, 0x2190, 0x2191, 0x2192, 0x2193,
+ /* U+2F98 */ 0x2194, 0x2195, 0x2196, 0x2197, 0x2198, 0x2199, 0x21A0, 0x21A1,
+ /* U+2FA0 */ 0x21A2, 0x21A3, 0x21A4, 0x21A5, 0x21A6, 0x21A7, 0x21A8, 0x21A9,
+ /* U+2FA8 */ 0x21B0, 0x21B1, 0x21B2, 0x21B3, 0x21B4, 0x21B5, 0x21B6, 0x21B7,
+ /* U+2FB0 */ 0x21B8, 0x21B9, 0x21C0, 0x21C1, 0x21C2, 0x21C3, 0x21C4, 0x21C5,
+ /* U+2FB8 */ 0x21C6, 0x21C7, 0x21C8, 0x21C9, 0x21D0, 0x21D1, 0x21D2, 0x21D3,
+ /* U+2FC0 */ 0x21D4, 0x21D5, 0x21D6, 0x21D7, 0x21D8, 0x21D9, 0x21E0, 0x21E1,
+ /* U+2FC8 */ 0x21E2, 0x21E3, 0x21E4, 0x21E5, 0x21E6, 0x21E7, 0x21E8, 0x21E9,
+ /* U+2FD0 */ 0x21F0, 0x21F1, 0x21F2, 0x21F3, 0x21F4, 0x21F5, 0x21F6, 0x21F7,
+ /* U+2FD8 */ 0x21F8, 0x21F9, 0x2200, 0x2201, 0x2202, 0x2203, 0x2204, 0x2205,
+ /* U+2FE0 */ 0x2206, 0x2207, 0x2208, 0x2209, 0x2210, 0x2211, 0x2212, 0x2213,
+ /* U+2FE8 */ 0x2214, 0x2215, 0x2216, 0x2217, 0x2218, 0x2219, 0x2220, 0x2221,
+ /* U+2FF0 */ 0xA98A, 0xA98B, 0xA98C, 0xA98D, 0xA98E, 0xA98F, 0xA990, 0xA991,
+ /* U+2FF8 */ 0xA992, 0xA993, 0xA994, 0xA995, 0x2222, 0x2223, 0x2224, 0x2225,
+ /* U+3000 */ 0xA1A1, 0xA1A2, 0xA1A3, 0xA1A8, 0x2226, 0xA1A9, 0xA965, 0xA996,
+ /* U+3008 */ 0xA1B4, 0xA1B5, 0xA1B6, 0xA1B7, 0xA1B8, 0xA1B9, 0xA1BA, 0xA1BB,
+ /* U+3010 */ 0xA1BE, 0xA1BF, 0xA893, 0xA1FE, 0xA1B2, 0xA1B3, 0xA1BC, 0xA1BD,
+ /* U+3018 */ 0x2227, 0x2228, 0x2229, 0x2230, 0x2231, 0xA894, 0xA895, 0x2232,
+ /* U+3020 */ 0x2233, 0xA940, 0xA941, 0xA942, 0xA943, 0xA944, 0xA945, 0xA946,
+ /* U+3028 */ 0xA947, 0xA948, 0x2234, 0x2235, 0x2236, 0x2237, 0x2238, 0x2239,
+ /* U+3030 */ 0x2240, 0x2241, 0x2242, 0x2243, 0x2244, 0x2245, 0x2246, 0x2247,
+ /* U+3038 */ 0x2248, 0x2249, 0x2250, 0x2251, 0x2252, 0x2253, 0xA989, 0x2254,
+ /* U+3040 */ 0x2255, 0xA4A1, 0xA4A2, 0xA4A3, 0xA4A4, 0xA4A5, 0xA4A6, 0xA4A7,
+ /* U+3048 */ 0xA4A8, 0xA4A9, 0xA4AA, 0xA4AB, 0xA4AC, 0xA4AD, 0xA4AE, 0xA4AF,
+ /* U+3050 */ 0xA4B0, 0xA4B1, 0xA4B2, 0xA4B3, 0xA4B4, 0xA4B5, 0xA4B6, 0xA4B7,
+ /* U+3058 */ 0xA4B8, 0xA4B9, 0xA4BA, 0xA4BB, 0xA4BC, 0xA4BD, 0xA4BE, 0xA4BF,
+ /* U+3060 */ 0xA4C0, 0xA4C1, 0xA4C2, 0xA4C3, 0xA4C4, 0xA4C5, 0xA4C6, 0xA4C7,
+ /* U+3068 */ 0xA4C8, 0xA4C9, 0xA4CA, 0xA4CB, 0xA4CC, 0xA4CD, 0xA4CE, 0xA4CF,
+ /* U+3070 */ 0xA4D0, 0xA4D1, 0xA4D2, 0xA4D3, 0xA4D4, 0xA4D5, 0xA4D6, 0xA4D7,
+ /* U+3078 */ 0xA4D8, 0xA4D9, 0xA4DA, 0xA4DB, 0xA4DC, 0xA4DD, 0xA4DE, 0xA4DF,
+ /* U+3080 */ 0xA4E0, 0xA4E1, 0xA4E2, 0xA4E3, 0xA4E4, 0xA4E5, 0xA4E6, 0xA4E7,
+ /* U+3088 */ 0xA4E8, 0xA4E9, 0xA4EA, 0xA4EB, 0xA4EC, 0xA4ED, 0xA4EE, 0xA4EF,
+ /* U+3090 */ 0xA4F0, 0xA4F1, 0xA4F2, 0xA4F3, 0x2256, 0x2257, 0x2258, 0x2259,
+ /* U+3098 */ 0x2260, 0x2261, 0x2262, 0xA961, 0xA962, 0xA966, 0xA967, 0x2263,
+ /* U+30A0 */ 0x2264, 0xA5A1, 0xA5A2, 0xA5A3, 0xA5A4, 0xA5A5, 0xA5A6, 0xA5A7,
+ /* U+30A8 */ 0xA5A8, 0xA5A9, 0xA5AA, 0xA5AB, 0xA5AC, 0xA5AD, 0xA5AE, 0xA5AF,
+ /* U+30B0 */ 0xA5B0, 0xA5B1, 0xA5B2, 0xA5B3, 0xA5B4, 0xA5B5, 0xA5B6, 0xA5B7,
+ /* U+30B8 */ 0xA5B8, 0xA5B9, 0xA5BA, 0xA5BB, 0xA5BC, 0xA5BD, 0xA5BE, 0xA5BF,
+ /* U+30C0 */ 0xA5C0, 0xA5C1, 0xA5C2, 0xA5C3, 0xA5C4, 0xA5C5, 0xA5C6, 0xA5C7,
+ /* U+30C8 */ 0xA5C8, 0xA5C9, 0xA5CA, 0xA5CB, 0xA5CC, 0xA5CD, 0xA5CE, 0xA5CF,
+ /* U+30D0 */ 0xA5D0, 0xA5D1, 0xA5D2, 0xA5D3, 0xA5D4, 0xA5D5, 0xA5D6, 0xA5D7,
+ /* U+30D8 */ 0xA5D8, 0xA5D9, 0xA5DA, 0xA5DB, 0xA5DC, 0xA5DD, 0xA5DE, 0xA5DF,
+ /* U+30E0 */ 0xA5E0, 0xA5E1, 0xA5E2, 0xA5E3, 0xA5E4, 0xA5E5, 0xA5E6, 0xA5E7,
+ /* U+30E8 */ 0xA5E8, 0xA5E9, 0xA5EA, 0xA5EB, 0xA5EC, 0xA5ED, 0xA5EE, 0xA5EF,
+ /* U+30F0 */ 0xA5F0, 0xA5F1, 0xA5F2, 0xA5F3, 0xA5F4, 0xA5F5, 0xA5F6, 0x2265,
+ /* U+30F8 */ 0x2266, 0x2267, 0x2268, 0x2269, 0xA960, 0xA963, 0xA964, 0x2270,
+ /* U+3100 */ 0x2271, 0x2272, 0x2273, 0x2274, 0x2275, 0xA8C5, 0xA8C6, 0xA8C7,
+ /* U+3108 */ 0xA8C8, 0xA8C9, 0xA8CA, 0xA8CB, 0xA8CC, 0xA8CD, 0xA8CE, 0xA8CF,
+ /* U+3110 */ 0xA8D0, 0xA8D1, 0xA8D2, 0xA8D3, 0xA8D4, 0xA8D5, 0xA8D6, 0xA8D7,
+ /* U+3118 */ 0xA8D8, 0xA8D9, 0xA8DA, 0xA8DB, 0xA8DC, 0xA8DD, 0xA8DE, 0xA8DF,
+ /* U+3120 */ 0xA8E0, 0xA8E1, 0xA8E2, 0xA8E3, 0xA8E4, 0xA8E5, 0xA8E6, 0xA8E7,
+ /* U+3128 */ 0xA8E8, 0xA8E9, 0x2276, 0x2277, 0x2278, 0x2279, 0x2280, 0x2281,
+ /* U+3130 */ 0x2282, 0x2283, 0x2284, 0x2285, 0x2286, 0x2287, 0x2288, 0x2289,
+ /* U+3138 */ 0x2290, 0x2291, 0x2292, 0x2293, 0x2294, 0x2295, 0x2296, 0x2297,
+ /* U+3140 */ 0x2298, 0x2299, 0x22A0, 0x22A1, 0x22A2, 0x22A3, 0x22A4, 0x22A5,
+ /* U+3148 */ 0x22A6, 0x22A7, 0x22A8, 0x22A9, 0x22B0, 0x22B1, 0x22B2, 0x22B3,
+ /* U+3150 */ 0x22B4, 0x22B5, 0x22B6, 0x22B7, 0x22B8, 0x22B9, 0x22C0, 0x22C1,
+ /* U+3158 */ 0x22C2, 0x22C3, 0x22C4, 0x22C5, 0x22C6, 0x22C7, 0x22C8, 0x22C9,
+ /* U+3160 */ 0x22D0, 0x22D1, 0x22D2, 0x22D3, 0x22D4, 0x22D5, 0x22D6, 0x22D7,
+ /* U+3168 */ 0x22D8, 0x22D9, 0x22E0, 0x22E1, 0x22E2, 0x22E3, 0x22E4, 0x22E5,
+ /* U+3170 */ 0x22E6, 0x22E7, 0x22E8, 0x22E9, 0x22F0, 0x22F1, 0x22F2, 0x22F3,
+ /* U+3178 */ 0x22F4, 0x22F5, 0x22F6, 0x22F7, 0x22F8, 0x22F9, 0x2300, 0x2301,
+ /* U+3180 */ 0x2302, 0x2303, 0x2304, 0x2305, 0x2306, 0x2307, 0x2308, 0x2309,
+ /* U+3188 */ 0x2310, 0x2311, 0x2312, 0x2313, 0x2314, 0x2315, 0x2316, 0x2317,
+ /* U+3190 */ 0x2318, 0x2319, 0x2320, 0x2321, 0x2322, 0x2323, 0x2324, 0x2325,
+ /* U+3198 */ 0x2326, 0x2327, 0x2328, 0x2329, 0x2330, 0x2331, 0x2332, 0x2333,
+ /* U+31A0 */ 0x2334, 0x2335, 0x2336, 0x2337, 0x2338, 0x2339, 0x2340, 0x2341,
+ /* U+31A8 */ 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347, 0x2348, 0x2349,
+ /* U+31B0 */ 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357,
+ /* U+31B8 */ 0x2358, 0x2359, 0x2360, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365,
+ /* U+31C0 */ 0x2366, 0x2367, 0x2368, 0x2369, 0x2370, 0x2371, 0x2372, 0x2373,
+ /* U+31C8 */ 0x2374, 0x2375, 0x2376, 0x2377, 0x2378, 0x2379, 0x2380, 0x2381,
+ /* U+31D0 */ 0x2382, 0x2383, 0x2384, 0x2385, 0x2386, 0x2387, 0x2388, 0x2389,
+ /* U+31D8 */ 0x2390, 0x2391, 0x2392, 0x2393, 0x2394, 0x2395, 0x2396, 0x2397,
+ /* U+31E0 */ 0x2398, 0x2399, 0x23A0, 0x23A1, 0x23A2, 0x23A3, 0x23A4, 0x23A5,
+ /* U+31E8 */ 0x23A6, 0x23A7, 0x23A8, 0x23A9, 0x23B0, 0x23B1, 0x23B2, 0x23B3,
+ /* U+31F0 */ 0x23B4, 0x23B5, 0x23B6, 0x23B7, 0x23B8, 0x23B9, 0x23C0, 0x23C1,
+ /* U+31F8 */ 0x23C2, 0x23C3, 0x23C4, 0x23C5, 0x23C6, 0x23C7, 0x23C8, 0x23C9,
+ /* U+3200 */ 0x23D0, 0x23D1, 0x23D2, 0x23D3, 0x23D4, 0x23D5, 0x23D6, 0x23D7,
+ /* U+3208 */ 0x23D8, 0x23D9, 0x23E0, 0x23E1, 0x23E2, 0x23E3, 0x23E4, 0x23E5,
+ /* U+3210 */ 0x23E6, 0x23E7, 0x23E8, 0x23E9, 0x23F0, 0x23F1, 0x23F2, 0x23F3,
+ /* U+3218 */ 0x23F4, 0x23F5, 0x23F6, 0x23F7, 0x23F8, 0x23F9, 0x2400, 0x2401,
+ /* U+3220 */ 0xA2E5, 0xA2E6, 0xA2E7, 0xA2E8, 0xA2E9, 0xA2EA, 0xA2EB, 0xA2EC,
+ /* U+3228 */ 0xA2ED, 0xA2EE, 0x2402, 0x2403, 0x2404, 0x2405, 0x2406, 0x2407,
+ /* U+3230 */ 0x2408, 0xA95A, 0x2409, 0x2410, 0x2411, 0x2412, 0x2413, 0x2414,
+ /* U+3238 */ 0x2415, 0x2416, 0x2417, 0x2418, 0x2419, 0x2420, 0x2421, 0x2422,
+ /* U+3240 */ 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429, 0x2430,
+ /* U+3248 */ 0x2431, 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438,
+ /* U+3250 */ 0x2439, 0x2440, 0x2441, 0x2442, 0x2443, 0x2444, 0x2445, 0x2446,
+ /* U+3258 */ 0x2447, 0x2448, 0x2449, 0x2450, 0x2451, 0x2452, 0x2453, 0x2454,
+ /* U+3260 */ 0x2455, 0x2456, 0x2457, 0x2458, 0x2459, 0x2460, 0x2461, 0x2462,
+ /* U+3268 */ 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x2470,
+ /* U+3270 */ 0x2471, 0x2472, 0x2473, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478,
+ /* U+3278 */ 0x2479, 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486,
+ /* U+3280 */ 0x2487, 0x2488, 0x2489, 0x2490, 0x2491, 0x2492, 0x2493, 0x2494,
+ /* U+3288 */ 0x2495, 0x2496, 0x2497, 0x2498, 0x2499, 0x24A0, 0x24A1, 0x24A2,
+ /* U+3290 */ 0x24A3, 0x24A4, 0x24A5, 0x24A6, 0x24A7, 0x24A8, 0x24A9, 0x24B0,
+ /* U+3298 */ 0x24B1, 0x24B2, 0x24B3, 0x24B4, 0x24B5, 0x24B6, 0x24B7, 0x24B8,
+ /* U+32A0 */ 0x24B9, 0x24C0, 0x24C1, 0xA949, 0x24C2, 0x24C3, 0x24C4, 0x24C5,
+ /* U+32A8 */ 0x24C6, 0x24C7, 0x24C8, 0x24C9, 0x24D0, 0x24D1, 0x24D2, 0x24D3,
+ /* U+32B0 */ 0x24D4, 0x24D5, 0x24D6, 0x24D7, 0x24D8, 0x24D9, 0x24E0, 0x24E1,
+ /* U+32B8 */ 0x24E2, 0x24E3, 0x24E4, 0x24E5, 0x24E6, 0x24E7, 0x24E8, 0x24E9,
+ /* U+32C0 */ 0x24F0, 0x24F1, 0x24F2, 0x24F3, 0x24F4, 0x24F5, 0x24F6, 0x24F7,
+ /* U+32C8 */ 0x24F8, 0x24F9, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505,
+ /* U+32D0 */ 0x2506, 0x2507, 0x2508, 0x2509, 0x2510, 0x2511, 0x2512, 0x2513,
+ /* U+32D8 */ 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x2520, 0x2521,
+ /* U+32E0 */ 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529,
+ /* U+32E8 */ 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537,
+ /* U+32F0 */ 0x2538, 0x2539, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545,
+ /* U+32F8 */ 0x2546, 0x2547, 0x2548, 0x2549, 0x2550, 0x2551, 0x2552, 0x2553,
+ /* U+3300 */ 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x2560, 0x2561,
+ /* U+3308 */ 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569,
+ /* U+3310 */ 0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0x2577,
+ /* U+3318 */ 0x2578, 0x2579, 0x2580, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585,
+ /* U+3320 */ 0x2586, 0x2587, 0x2588, 0x2589, 0x2590, 0x2591, 0x2592, 0x2593,
+ /* U+3328 */ 0x2594, 0x2595, 0x2596, 0x2597, 0x2598, 0x2599, 0x25A0, 0x25A1,
+ /* U+3330 */ 0x25A2, 0x25A3, 0x25A4, 0x25A5, 0x25A6, 0x25A7, 0x25A8, 0x25A9,
+ /* U+3338 */ 0x25B0, 0x25B1, 0x25B2, 0x25B3, 0x25B4, 0x25B5, 0x25B6, 0x25B7,
+ /* U+3340 */ 0x25B8, 0x25B9, 0x25C0, 0x25C1, 0x25C2, 0x25C3, 0x25C4, 0x25C5,
+ /* U+3348 */ 0x25C6, 0x25C7, 0x25C8, 0x25C9, 0x25D0, 0x25D1, 0x25D2, 0x25D3,
+ /* U+3350 */ 0x25D4, 0x25D5, 0x25D6, 0x25D7, 0x25D8, 0x25D9, 0x25E0, 0x25E1,
+ /* U+3358 */ 0x25E2, 0x25E3, 0x25E4, 0x25E5, 0x25E6, 0x25E7, 0x25E8, 0x25E9,
+ /* U+3360 */ 0x25F0, 0x25F1, 0x25F2, 0x25F3, 0x25F4, 0x25F5, 0x25F6, 0x25F7,
+ /* U+3368 */ 0x25F8, 0x25F9, 0x2600, 0x2601, 0x2602, 0x2603, 0x2604, 0x2605,
+ /* U+3370 */ 0x2606, 0x2607, 0x2608, 0x2609, 0x2610, 0x2611, 0x2612, 0x2613,
+ /* U+3378 */ 0x2614, 0x2615, 0x2616, 0x2617, 0x2618, 0x2619, 0x2620, 0x2621,
+ /* U+3380 */ 0x2622, 0x2623, 0x2624, 0x2625, 0x2626, 0x2627, 0x2628, 0x2629,
+ /* U+3388 */ 0x2630, 0x2631, 0x2632, 0x2633, 0x2634, 0x2635, 0xA94A, 0xA94B,
+ /* U+3390 */ 0x2636, 0x2637, 0x2638, 0x2639, 0x2640, 0x2641, 0x2642, 0x2643,
+ /* U+3398 */ 0x2644, 0x2645, 0x2646, 0x2647, 0xA94C, 0xA94D, 0xA94E, 0x2648,
+ /* U+33A0 */ 0x2649, 0xA94F, 0x2650, 0x2651, 0x2652, 0x2653, 0x2654, 0x2655,
+ /* U+33A8 */ 0x2656, 0x2657, 0x2658, 0x2659, 0x2660, 0x2661, 0x2662, 0x2663,
+ /* U+33B0 */ 0x2664, 0x2665, 0x2666, 0x2667, 0x2668, 0x2669, 0x2670, 0x2671,
+ /* U+33B8 */ 0x2672, 0x2673, 0x2674, 0x2675, 0x2676, 0x2677, 0x2678, 0x2679,
+ /* U+33C0 */ 0x2680, 0x2681, 0x2682, 0x2683, 0xA950, 0x2684, 0x2685, 0x2686,
+ /* U+33C8 */ 0x2687, 0x2688, 0x2689, 0x2690, 0x2691, 0x2692, 0xA951, 0x2693,
+ /* U+33D0 */ 0x2694, 0xA952, 0xA953, 0x2695, 0x2696, 0xA954, 0x2697, 0x2698,
+ /* U+33D8 */ 0x2699, 0x26A0, 0x26A1, 0x26A2, 0x26A3, 0x26A4, 0x26A5, 0x26A6,
+ /* U+33E0 */ 0x26A7, 0x26A8, 0x26A9, 0x26B0, 0x26B1, 0x26B2, 0x26B3, 0x26B4,
+ /* U+33E8 */ 0x26B5, 0x26B6, 0x26B7, 0x26B8, 0x26B9, 0x26C0, 0x26C1, 0x26C2,
+ /* U+33F0 */ 0x26C3, 0x26C4, 0x26C5, 0x26C6, 0x26C7, 0x26C8, 0x26C9, 0x26D0,
+ /* U+33F8 */ 0x26D1, 0x26D2, 0x26D3, 0x26D4, 0x26D5, 0x26D6, 0x26D7, 0x26D8,
+ /* U+3400 */ 0x26D9, 0x26E0, 0x26E1, 0x26E2, 0x26E3, 0x26E4, 0x26E5, 0x26E6,
+ /* U+3408 */ 0x26E7, 0x26E8, 0x26E9, 0x26F0, 0x26F1, 0x26F2, 0x26F3, 0x26F4,
+ /* U+3410 */ 0x26F5, 0x26F6, 0x26F7, 0x26F8, 0x26F9, 0x2700, 0x2701, 0x2702,
+ /* U+3418 */ 0x2703, 0x2704, 0x2705, 0x2706, 0x2707, 0x2708, 0x2709, 0x2710,
+ /* U+3420 */ 0x2711, 0x2712, 0x2713, 0x2714, 0x2715, 0x2716, 0x2717, 0x2718,
+ /* U+3428 */ 0x2719, 0x2720, 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726,
+ /* U+3430 */ 0x2727, 0x2728, 0x2729, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734,
+ /* U+3438 */ 0x2735, 0x2736, 0x2737, 0x2738, 0x2739, 0x2740, 0x2741, 0x2742,
+ /* U+3440 */ 0x2743, 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x2749, 0xFE56,
+ /* U+3448 */ 0x2750, 0x2751, 0x2752, 0x2753, 0x2754, 0x2755, 0x2756, 0x2757,
+ /* U+3450 */ 0x2758, 0x2759, 0x2760, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765,
+ /* U+3458 */ 0x2766, 0x2767, 0x2768, 0x2769, 0x2770, 0x2771, 0x2772, 0x2773,
+ /* U+3460 */ 0x2774, 0x2775, 0x2776, 0x2777, 0x2778, 0x2779, 0x2780, 0x2781,
+ /* U+3468 */ 0x2782, 0x2783, 0x2784, 0x2785, 0x2786, 0x2787, 0x2788, 0x2789,
+ /* U+3470 */ 0x2790, 0x2791, 0x2792, 0xFE55, 0x2793, 0x2794, 0x2795, 0x2796,
+ /* U+3478 */ 0x2797, 0x2798, 0x2799, 0x27A0, 0x27A1, 0x27A2, 0x27A3, 0x27A4,
+ /* U+3480 */ 0x27A5, 0x27A6, 0x27A7, 0x27A8, 0x27A9, 0x27B0, 0x27B1, 0x27B2,
+ /* U+3488 */ 0x27B3, 0x27B4, 0x27B5, 0x27B6, 0x27B7, 0x27B8, 0x27B9, 0x27C0,
+ /* U+3490 */ 0x27C1, 0x27C2, 0x27C3, 0x27C4, 0x27C5, 0x27C6, 0x27C7, 0x27C8,
+ /* U+3498 */ 0x27C9, 0x27D0, 0x27D1, 0x27D2, 0x27D3, 0x27D4, 0x27D5, 0x27D6,
+ /* U+34A0 */ 0x27D7, 0x27D8, 0x27D9, 0x3000, 0x3001, 0x3002, 0x3003, 0x3004,
+ /* U+34A8 */ 0x3005, 0x3006, 0x3007, 0x3008, 0x3009, 0x3010, 0x3011, 0x3012,
+ /* U+34B0 */ 0x3013, 0x3014, 0x3015, 0x3016, 0x3017, 0x3018, 0x3019, 0x3020,
+ /* U+34B8 */ 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028,
+ /* U+34C0 */ 0x3029, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036,
+ /* U+34C8 */ 0x3037, 0x3038, 0x3039, 0x3040, 0x3041, 0x3042, 0x3043, 0x3044,
+ /* U+34D0 */ 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x3050, 0x3051, 0x3052,
+ /* U+34D8 */ 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x3060,
+ /* U+34E0 */ 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
+ /* U+34E8 */ 0x3069, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
+ /* U+34F0 */ 0x3077, 0x3078, 0x3079, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084,
+ /* U+34F8 */ 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x3090, 0x3091, 0x3092,
+ /* U+3500 */ 0x3093, 0x3094, 0x3095, 0x3096, 0x3097, 0x3098, 0x3099, 0x30A0,
+ /* U+3508 */ 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8,
+ /* U+3510 */ 0x30A9, 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6,
+ /* U+3518 */ 0x30B7, 0x30B8, 0x30B9, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4,
+ /* U+3520 */ 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30D0, 0x30D1, 0x30D2,
+ /* U+3528 */ 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9, 0x30E0,
+ /* U+3530 */ 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8,
+ /* U+3538 */ 0x30E9, 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6,
+ /* U+3540 */ 0x30F7, 0x30F8, 0x30F9, 0x3100, 0x3101, 0x3102, 0x3103, 0x3104,
+ /* U+3548 */ 0x3105, 0x3106, 0x3107, 0x3108, 0x3109, 0x3110, 0x3111, 0x3112,
+ /* U+3550 */ 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118, 0x3119, 0x3120,
+ /* U+3558 */ 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
+ /* U+3560 */ 0x3129, 0x3130, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136,
+ /* U+3568 */ 0x3137, 0x3138, 0x3139, 0x3140, 0x3141, 0x3142, 0x3143, 0x3144,
+ /* U+3570 */ 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x3150, 0x3151, 0x3152,
+ /* U+3578 */ 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158, 0x3159, 0x3160,
+ /* U+3580 */ 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167, 0x3168,
+ /* U+3588 */ 0x3169, 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176,
+ /* U+3590 */ 0x3177, 0x3178, 0x3179, 0x3180, 0x3181, 0x3182, 0x3183, 0x3184,
+ /* U+3598 */ 0x3185, 0x3186, 0x3187, 0x3188, 0x3189, 0x3190, 0xFE5A, 0x3191,
+ /* U+35A0 */ 0x3192, 0x3193, 0x3194, 0x3195, 0x3196, 0x3197, 0x3198, 0x3199,
+ /* U+35A8 */ 0x31A0, 0x31A1, 0x31A2, 0x31A3, 0x31A4, 0x31A5, 0x31A6, 0x31A7,
+ /* U+35B0 */ 0x31A8, 0x31A9, 0x31B0, 0x31B1, 0x31B2, 0x31B3, 0x31B4, 0x31B5,
+ /* U+35B8 */ 0x31B6, 0x31B7, 0x31B8, 0x31B9, 0x31C0, 0x31C1, 0x31C2, 0x31C3,
+ /* U+35C0 */ 0x31C4, 0x31C5, 0x31C6, 0x31C7, 0x31C8, 0x31C9, 0x31D0, 0x31D1,
+ /* U+35C8 */ 0x31D2, 0x31D3, 0x31D4, 0x31D5, 0x31D6, 0x31D7, 0x31D8, 0x31D9,
+ /* U+35D0 */ 0x31E0, 0x31E1, 0x31E2, 0x31E3, 0x31E4, 0x31E5, 0x31E6, 0x31E7,
+ /* U+35D8 */ 0x31E8, 0x31E9, 0x31F0, 0x31F1, 0x31F2, 0x31F3, 0x31F4, 0x31F5,
+ /* U+35E0 */ 0x31F6, 0x31F7, 0x31F8, 0x31F9, 0x3200, 0x3201, 0x3202, 0x3203,
+ /* U+35E8 */ 0x3204, 0x3205, 0x3206, 0x3207, 0x3208, 0x3209, 0x3210, 0x3211,
+ /* U+35F0 */ 0x3212, 0x3213, 0x3214, 0x3215, 0x3216, 0x3217, 0x3218, 0x3219,
+ /* U+35F8 */ 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226, 0x3227,
+ /* U+3600 */ 0x3228, 0x3229, 0x3230, 0x3231, 0x3232, 0x3233, 0x3234, 0x3235,
+ /* U+3608 */ 0x3236, 0x3237, 0x3238, 0x3239, 0x3240, 0x3241, 0xFE5C, 0x3242,
+ /* U+3610 */ 0x3243, 0x3244, 0x3245, 0x3246, 0x3247, 0x3248, 0x3249, 0x3250,
+ /* U+3618 */ 0x3251, 0x3252, 0xFE5B,
+ /* Contiguous area: U+3918 .. U+3CE0 */
+ /* U+3918 */ 0xFE60, 0x3718, 0x3719, 0x3720, 0x3721, 0x3722, 0x3723, 0x3724,
+ /* U+3920 */ 0x3725, 0x3726, 0x3727, 0x3728, 0x3729, 0x3730, 0x3731, 0x3732,
+ /* U+3928 */ 0x3733, 0x3734, 0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x3740,
+ /* U+3930 */ 0x3741, 0x3742, 0x3743, 0x3744, 0x3745, 0x3746, 0x3747, 0x3748,
+ /* U+3938 */ 0x3749, 0x3750, 0x3751, 0x3752, 0x3753, 0x3754, 0x3755, 0x3756,
+ /* U+3940 */ 0x3757, 0x3758, 0x3759, 0x3760, 0x3761, 0x3762, 0x3763, 0x3764,
+ /* U+3948 */ 0x3765, 0x3766, 0x3767, 0x3768, 0x3769, 0x3770, 0x3771, 0x3772,
+ /* U+3950 */ 0x3773, 0x3774, 0x3775, 0x3776, 0x3777, 0x3778, 0x3779, 0x3780,
+ /* U+3958 */ 0x3781, 0x3782, 0x3783, 0x3784, 0x3785, 0x3786, 0x3787, 0x3788,
+ /* U+3960 */ 0x3789, 0x3790, 0x3791, 0x3792, 0x3793, 0x3794, 0x3795, 0x3796,
+ /* U+3968 */ 0x3797, 0x3798, 0x3799, 0x37A0, 0x37A1, 0x37A2, 0xFE5F, 0x37A3,
+ /* U+3970 */ 0x37A4, 0x37A5, 0x37A6, 0x37A7, 0x37A8, 0x37A9, 0x37B0, 0x37B1,
+ /* U+3978 */ 0x37B2, 0x37B3, 0x37B4, 0x37B5, 0x37B6, 0x37B7, 0x37B8, 0x37B9,
+ /* U+3980 */ 0x37C0, 0x37C1, 0x37C2, 0x37C3, 0x37C4, 0x37C5, 0x37C6, 0x37C7,
+ /* U+3988 */ 0x37C8, 0x37C9, 0x37D0, 0x37D1, 0x37D2, 0x37D3, 0x37D4, 0x37D5,
+ /* U+3990 */ 0x37D6, 0x37D7, 0x37D8, 0x37D9, 0x3800, 0x3801, 0x3802, 0x3803,
+ /* U+3998 */ 0x3804, 0x3805, 0x3806, 0x3807, 0x3808, 0x3809, 0x3810, 0x3811,
+ /* U+39A0 */ 0x3812, 0x3813, 0x3814, 0x3815, 0x3816, 0x3817, 0x3818, 0x3819,
+ /* U+39A8 */ 0x3820, 0x3821, 0x3822, 0x3823, 0x3824, 0x3825, 0x3826, 0x3827,
+ /* U+39B0 */ 0x3828, 0x3829, 0x3830, 0x3831, 0x3832, 0x3833, 0x3834, 0x3835,
+ /* U+39B8 */ 0x3836, 0x3837, 0x3838, 0x3839, 0x3840, 0x3841, 0x3842, 0x3843,
+ /* U+39C0 */ 0x3844, 0x3845, 0x3846, 0x3847, 0x3848, 0x3849, 0x3850, 0x3851,
+ /* U+39C8 */ 0x3852, 0x3853, 0x3854, 0x3855, 0x3856, 0x3857, 0x3858, 0xFE62,
+ /* U+39D0 */ 0xFE65, 0x3859, 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865,
+ /* U+39D8 */ 0x3866, 0x3867, 0x3868, 0x3869, 0x3870, 0x3871, 0x3872, 0xFE63,
+ /* U+39E0 */ 0x3873, 0x3874, 0x3875, 0x3876, 0x3877, 0x3878, 0x3879, 0x3880,
+ /* U+39E8 */ 0x3881, 0x3882, 0x3883, 0x3884, 0x3885, 0x3886, 0x3887, 0x3888,
+ /* U+39F0 */ 0x3889, 0x3890, 0x3891, 0x3892, 0x3893, 0x3894, 0x3895, 0x3896,
+ /* U+39F8 */ 0x3897, 0x3898, 0x3899, 0x38A0, 0x38A1, 0x38A2, 0x38A3, 0x38A4,
+ /* U+3A00 */ 0x38A5, 0x38A6, 0x38A7, 0x38A8, 0x38A9, 0x38B0, 0x38B1, 0x38B2,
+ /* U+3A08 */ 0x38B3, 0x38B4, 0x38B5, 0x38B6, 0x38B7, 0x38B8, 0x38B9, 0x38C0,
+ /* U+3A10 */ 0x38C1, 0x38C2, 0x38C3, 0x38C4, 0x38C5, 0x38C6, 0x38C7, 0x38C8,
+ /* U+3A18 */ 0x38C9, 0x38D0, 0x38D1, 0x38D2, 0x38D3, 0x38D4, 0x38D5, 0x38D6,
+ /* U+3A20 */ 0x38D7, 0x38D8, 0x38D9, 0x38E0, 0x38E1, 0x38E2, 0x38E3, 0x38E4,
+ /* U+3A28 */ 0x38E5, 0x38E6, 0x38E7, 0x38E8, 0x38E9, 0x38F0, 0x38F1, 0x38F2,
+ /* U+3A30 */ 0x38F3, 0x38F4, 0x38F5, 0x38F6, 0x38F7, 0x38F8, 0x38F9, 0x3900,
+ /* U+3A38 */ 0x3901, 0x3902, 0x3903, 0x3904, 0x3905, 0x3906, 0x3907, 0x3908,
+ /* U+3A40 */ 0x3909, 0x3910, 0x3911, 0x3912, 0x3913, 0x3914, 0x3915, 0x3916,
+ /* U+3A48 */ 0x3917, 0x3918, 0x3919, 0x3920, 0x3921, 0x3922, 0x3923, 0x3924,
+ /* U+3A50 */ 0x3925, 0x3926, 0x3927, 0x3928, 0x3929, 0x3930, 0x3931, 0x3932,
+ /* U+3A58 */ 0x3933, 0x3934, 0x3935, 0x3936, 0x3937, 0x3938, 0x3939, 0x3940,
+ /* U+3A60 */ 0x3941, 0x3942, 0x3943, 0x3944, 0x3945, 0x3946, 0x3947, 0x3948,
+ /* U+3A68 */ 0x3949, 0x3950, 0x3951, 0x3952, 0x3953, 0x3954, 0x3955, 0x3956,
+ /* U+3A70 */ 0x3957, 0x3958, 0x3959, 0xFE64, 0x3960, 0x3961, 0x3962, 0x3963,
+ /* U+3A78 */ 0x3964, 0x3965, 0x3966, 0x3967, 0x3968, 0x3969, 0x3970, 0x3971,
+ /* U+3A80 */ 0x3972, 0x3973, 0x3974, 0x3975, 0x3976, 0x3977, 0x3978, 0x3979,
+ /* U+3A88 */ 0x3980, 0x3981, 0x3982, 0x3983, 0x3984, 0x3985, 0x3986, 0x3987,
+ /* U+3A90 */ 0x3988, 0x3989, 0x3990, 0x3991, 0x3992, 0x3993, 0x3994, 0x3995,
+ /* U+3A98 */ 0x3996, 0x3997, 0x3998, 0x3999, 0x39A0, 0x39A1, 0x39A2, 0x39A3,
+ /* U+3AA0 */ 0x39A4, 0x39A5, 0x39A6, 0x39A7, 0x39A8, 0x39A9, 0x39B0, 0x39B1,
+ /* U+3AA8 */ 0x39B2, 0x39B3, 0x39B4, 0x39B5, 0x39B6, 0x39B7, 0x39B8, 0x39B9,
+ /* U+3AB0 */ 0x39C0, 0x39C1, 0x39C2, 0x39C3, 0x39C4, 0x39C5, 0x39C6, 0x39C7,
+ /* U+3AB8 */ 0x39C8, 0x39C9, 0x39D0, 0x39D1, 0x39D2, 0x39D3, 0x39D4, 0x39D5,
+ /* U+3AC0 */ 0x39D6, 0x39D7, 0x39D8, 0x39D9, 0x39E0, 0x39E1, 0x39E2, 0x39E3,
+ /* U+3AC8 */ 0x39E4, 0x39E5, 0x39E6, 0x39E7, 0x39E8, 0x39E9, 0x39F0, 0x39F1,
+ /* U+3AD0 */ 0x39F2, 0x39F3, 0x39F4, 0x39F5, 0x39F6, 0x39F7, 0x39F8, 0x39F9,
+ /* U+3AD8 */ 0x3A00, 0x3A01, 0x3A02, 0x3A03, 0x3A04, 0x3A05, 0x3A06, 0x3A07,
+ /* U+3AE0 */ 0x3A08, 0x3A09, 0x3A10, 0x3A11, 0x3A12, 0x3A13, 0x3A14, 0x3A15,
+ /* U+3AE8 */ 0x3A16, 0x3A17, 0x3A18, 0x3A19, 0x3A20, 0x3A21, 0x3A22, 0x3A23,
+ /* U+3AF0 */ 0x3A24, 0x3A25, 0x3A26, 0x3A27, 0x3A28, 0x3A29, 0x3A30, 0x3A31,
+ /* U+3AF8 */ 0x3A32, 0x3A33, 0x3A34, 0x3A35, 0x3A36, 0x3A37, 0x3A38, 0x3A39,
+ /* U+3B00 */ 0x3A40, 0x3A41, 0x3A42, 0x3A43, 0x3A44, 0x3A45, 0x3A46, 0x3A47,
+ /* U+3B08 */ 0x3A48, 0x3A49, 0x3A50, 0x3A51, 0x3A52, 0x3A53, 0x3A54, 0x3A55,
+ /* U+3B10 */ 0x3A56, 0x3A57, 0x3A58, 0x3A59, 0x3A60, 0x3A61, 0x3A62, 0x3A63,
+ /* U+3B18 */ 0x3A64, 0x3A65, 0x3A66, 0x3A67, 0x3A68, 0x3A69, 0x3A70, 0x3A71,
+ /* U+3B20 */ 0x3A72, 0x3A73, 0x3A74, 0x3A75, 0x3A76, 0x3A77, 0x3A78, 0x3A79,
+ /* U+3B28 */ 0x3A80, 0x3A81, 0x3A82, 0x3A83, 0x3A84, 0x3A85, 0x3A86, 0x3A87,
+ /* U+3B30 */ 0x3A88, 0x3A89, 0x3A90, 0x3A91, 0x3A92, 0x3A93, 0x3A94, 0x3A95,
+ /* U+3B38 */ 0x3A96, 0x3A97, 0x3A98, 0x3A99, 0x3AA0, 0x3AA1, 0x3AA2, 0x3AA3,
+ /* U+3B40 */ 0x3AA4, 0x3AA5, 0x3AA6, 0x3AA7, 0x3AA8, 0x3AA9, 0x3AB0, 0x3AB1,
+ /* U+3B48 */ 0x3AB2, 0x3AB3, 0x3AB4, 0x3AB5, 0x3AB6, 0x3AB7, 0xFE68, 0x3AB8,
+ /* U+3B50 */ 0x3AB9, 0x3AC0, 0x3AC1, 0x3AC2, 0x3AC3, 0x3AC4, 0x3AC5, 0x3AC6,
+ /* U+3B58 */ 0x3AC7, 0x3AC8, 0x3AC9, 0x3AD0, 0x3AD1, 0x3AD2, 0x3AD3, 0x3AD4,
+ /* U+3B60 */ 0x3AD5, 0x3AD6, 0x3AD7, 0x3AD8, 0x3AD9, 0x3AE0, 0x3AE1, 0x3AE2,
+ /* U+3B68 */ 0x3AE3, 0x3AE4, 0x3AE5, 0x3AE6, 0x3AE7, 0x3AE8, 0x3AE9, 0x3AF0,
+ /* U+3B70 */ 0x3AF1, 0x3AF2, 0x3AF3, 0x3AF4, 0x3AF5, 0x3AF6, 0x3AF7, 0x3AF8,
+ /* U+3B78 */ 0x3AF9, 0x3B00, 0x3B01, 0x3B02, 0x3B03, 0x3B04, 0x3B05, 0x3B06,
+ /* U+3B80 */ 0x3B07, 0x3B08, 0x3B09, 0x3B10, 0x3B11, 0x3B12, 0x3B13, 0x3B14,
+ /* U+3B88 */ 0x3B15, 0x3B16, 0x3B17, 0x3B18, 0x3B19, 0x3B20, 0x3B21, 0x3B22,
+ /* U+3B90 */ 0x3B23, 0x3B24, 0x3B25, 0x3B26, 0x3B27, 0x3B28, 0x3B29, 0x3B30,
+ /* U+3B98 */ 0x3B31, 0x3B32, 0x3B33, 0x3B34, 0x3B35, 0x3B36, 0x3B37, 0x3B38,
+ /* U+3BA0 */ 0x3B39, 0x3B40, 0x3B41, 0x3B42, 0x3B43, 0x3B44, 0x3B45, 0x3B46,
+ /* U+3BA8 */ 0x3B47, 0x3B48, 0x3B49, 0x3B50, 0x3B51, 0x3B52, 0x3B53, 0x3B54,
+ /* U+3BB0 */ 0x3B55, 0x3B56, 0x3B57, 0x3B58, 0x3B59, 0x3B60, 0x3B61, 0x3B62,
+ /* U+3BB8 */ 0x3B63, 0x3B64, 0x3B65, 0x3B66, 0x3B67, 0x3B68, 0x3B69, 0x3B70,
+ /* U+3BC0 */ 0x3B71, 0x3B72, 0x3B73, 0x3B74, 0x3B75, 0x3B76, 0x3B77, 0x3B78,
+ /* U+3BC8 */ 0x3B79, 0x3B80, 0x3B81, 0x3B82, 0x3B83, 0x3B84, 0x3B85, 0x3B86,
+ /* U+3BD0 */ 0x3B87, 0x3B88, 0x3B89, 0x3B90, 0x3B91, 0x3B92, 0x3B93, 0x3B94,
+ /* U+3BD8 */ 0x3B95, 0x3B96, 0x3B97, 0x3B98, 0x3B99, 0x3BA0, 0x3BA1, 0x3BA2,
+ /* U+3BE0 */ 0x3BA3, 0x3BA4, 0x3BA5, 0x3BA6, 0x3BA7, 0x3BA8, 0x3BA9, 0x3BB0,
+ /* U+3BE8 */ 0x3BB1, 0x3BB2, 0x3BB3, 0x3BB4, 0x3BB5, 0x3BB6, 0x3BB7, 0x3BB8,
+ /* U+3BF0 */ 0x3BB9, 0x3BC0, 0x3BC1, 0x3BC2, 0x3BC3, 0x3BC4, 0x3BC5, 0x3BC6,
+ /* U+3BF8 */ 0x3BC7, 0x3BC8, 0x3BC9, 0x3BD0, 0x3BD1, 0x3BD2, 0x3BD3, 0x3BD4,
+ /* U+3C00 */ 0x3BD5, 0x3BD6, 0x3BD7, 0x3BD8, 0x3BD9, 0x3BE0, 0x3BE1, 0x3BE2,
+ /* U+3C08 */ 0x3BE3, 0x3BE4, 0x3BE5, 0x3BE6, 0x3BE7, 0x3BE8, 0x3BE9, 0x3BF0,
+ /* U+3C10 */ 0x3BF1, 0x3BF2, 0x3BF3, 0x3BF4, 0x3BF5, 0x3BF6, 0x3BF7, 0x3BF8,
+ /* U+3C18 */ 0x3BF9, 0x3C00, 0x3C01, 0x3C02, 0x3C03, 0x3C04, 0x3C05, 0x3C06,
+ /* U+3C20 */ 0x3C07, 0x3C08, 0x3C09, 0x3C10, 0x3C11, 0x3C12, 0x3C13, 0x3C14,
+ /* U+3C28 */ 0x3C15, 0x3C16, 0x3C17, 0x3C18, 0x3C19, 0x3C20, 0x3C21, 0x3C22,
+ /* U+3C30 */ 0x3C23, 0x3C24, 0x3C25, 0x3C26, 0x3C27, 0x3C28, 0x3C29, 0x3C30,
+ /* U+3C38 */ 0x3C31, 0x3C32, 0x3C33, 0x3C34, 0x3C35, 0x3C36, 0x3C37, 0x3C38,
+ /* U+3C40 */ 0x3C39, 0x3C40, 0x3C41, 0x3C42, 0x3C43, 0x3C44, 0x3C45, 0x3C46,
+ /* U+3C48 */ 0x3C47, 0x3C48, 0x3C49, 0x3C50, 0x3C51, 0x3C52, 0x3C53, 0x3C54,
+ /* U+3C50 */ 0x3C55, 0x3C56, 0x3C57, 0x3C58, 0x3C59, 0x3C60, 0x3C61, 0x3C62,
+ /* U+3C58 */ 0x3C63, 0x3C64, 0x3C65, 0x3C66, 0x3C67, 0x3C68, 0x3C69, 0x3C70,
+ /* U+3C60 */ 0x3C71, 0x3C72, 0x3C73, 0x3C74, 0x3C75, 0x3C76, 0x3C77, 0x3C78,
+ /* U+3C68 */ 0x3C79, 0x3C80, 0x3C81, 0x3C82, 0x3C83, 0x3C84, 0xFE69, 0x3C85,
+ /* U+3C70 */ 0x3C86, 0x3C87, 0x3C88, 0x3C89, 0x3C90, 0x3C91, 0x3C92, 0x3C93,
+ /* U+3C78 */ 0x3C94, 0x3C95, 0x3C96, 0x3C97, 0x3C98, 0x3C99, 0x3CA0, 0x3CA1,
+ /* U+3C80 */ 0x3CA2, 0x3CA3, 0x3CA4, 0x3CA5, 0x3CA6, 0x3CA7, 0x3CA8, 0x3CA9,
+ /* U+3C88 */ 0x3CB0, 0x3CB1, 0x3CB2, 0x3CB3, 0x3CB4, 0x3CB5, 0x3CB6, 0x3CB7,
+ /* U+3C90 */ 0x3CB8, 0x3CB9, 0x3CC0, 0x3CC1, 0x3CC2, 0x3CC3, 0x3CC4, 0x3CC5,
+ /* U+3C98 */ 0x3CC6, 0x3CC7, 0x3CC8, 0x3CC9, 0x3CD0, 0x3CD1, 0x3CD2, 0x3CD3,
+ /* U+3CA0 */ 0x3CD4, 0x3CD5, 0x3CD6, 0x3CD7, 0x3CD8, 0x3CD9, 0x3CE0, 0x3CE1,
+ /* U+3CA8 */ 0x3CE2, 0x3CE3, 0x3CE4, 0x3CE5, 0x3CE6, 0x3CE7, 0x3CE8, 0x3CE9,
+ /* U+3CB0 */ 0x3CF0, 0x3CF1, 0x3CF2, 0x3CF3, 0x3CF4, 0x3CF5, 0x3CF6, 0x3CF7,
+ /* U+3CB8 */ 0x3CF8, 0x3CF9, 0x3D00, 0x3D01, 0x3D02, 0x3D03, 0x3D04, 0x3D05,
+ /* U+3CC0 */ 0x3D06, 0x3D07, 0x3D08, 0x3D09, 0x3D10, 0x3D11, 0x3D12, 0x3D13,
+ /* U+3CC8 */ 0x3D14, 0x3D15, 0x3D16, 0x3D17, 0x3D18, 0x3D19, 0x3D20, 0x3D21,
+ /* U+3CD0 */ 0x3D22, 0x3D23, 0x3D24, 0x3D25, 0x3D26, 0x3D27, 0x3D28, 0x3D29,
+ /* U+3CD8 */ 0x3D30, 0x3D31, 0x3D32, 0x3D33, 0x3D34, 0x3D35, 0x3D36, 0x3D37,
+ /* U+3CE0 */ 0xFE6A,
+ /* Contiguous area: U+4056 .. U+415F */
+ /* U+4056 */ 0xFE6F, 0x42E3,
+ /* U+4058 */ 0x42E4, 0x42E5, 0x42E6, 0x42E7, 0x42E8, 0x42E9, 0x42F0, 0x42F1,
+ /* U+4060 */ 0x42F2, 0x42F3, 0x42F4, 0x42F5, 0x42F6, 0x42F7, 0x42F8, 0x42F9,
+ /* U+4068 */ 0x4300, 0x4301, 0x4302, 0x4303, 0x4304, 0x4305, 0x4306, 0x4307,
+ /* U+4070 */ 0x4308, 0x4309, 0x4310, 0x4311, 0x4312, 0x4313, 0x4314, 0x4315,
+ /* U+4078 */ 0x4316, 0x4317, 0x4318, 0x4319, 0x4320, 0x4321, 0x4322, 0x4323,
+ /* U+4080 */ 0x4324, 0x4325, 0x4326, 0x4327, 0x4328, 0x4329, 0x4330, 0x4331,
+ /* U+4088 */ 0x4332, 0x4333, 0x4334, 0x4335, 0x4336, 0x4337, 0x4338, 0x4339,
+ /* U+4090 */ 0x4340, 0x4341, 0x4342, 0x4343, 0x4344, 0x4345, 0x4346, 0x4347,
+ /* U+4098 */ 0x4348, 0x4349, 0x4350, 0x4351, 0x4352, 0x4353, 0x4354, 0x4355,
+ /* U+40A0 */ 0x4356, 0x4357, 0x4358, 0x4359, 0x4360, 0x4361, 0x4362, 0x4363,
+ /* U+40A8 */ 0x4364, 0x4365, 0x4366, 0x4367, 0x4368, 0x4369, 0x4370, 0x4371,
+ /* U+40B0 */ 0x4372, 0x4373, 0x4374, 0x4375, 0x4376, 0x4377, 0x4378, 0x4379,
+ /* U+40B8 */ 0x4380, 0x4381, 0x4382, 0x4383, 0x4384, 0x4385, 0x4386, 0x4387,
+ /* U+40C0 */ 0x4388, 0x4389, 0x4390, 0x4391, 0x4392, 0x4393, 0x4394, 0x4395,
+ /* U+40C8 */ 0x4396, 0x4397, 0x4398, 0x4399, 0x43A0, 0x43A1, 0x43A2, 0x43A3,
+ /* U+40D0 */ 0x43A4, 0x43A5, 0x43A6, 0x43A7, 0x43A8, 0x43A9, 0x43B0, 0x43B1,
+ /* U+40D8 */ 0x43B2, 0x43B3, 0x43B4, 0x43B5, 0x43B6, 0x43B7, 0x43B8, 0x43B9,
+ /* U+40E0 */ 0x43C0, 0x43C1, 0x43C2, 0x43C3, 0x43C4, 0x43C5, 0x43C6, 0x43C7,
+ /* U+40E8 */ 0x43C8, 0x43C9, 0x43D0, 0x43D1, 0x43D2, 0x43D3, 0x43D4, 0x43D5,
+ /* U+40F0 */ 0x43D6, 0x43D7, 0x43D8, 0x43D9, 0x43E0, 0x43E1, 0x43E2, 0x43E3,
+ /* U+40F8 */ 0x43E4, 0x43E5, 0x43E6, 0x43E7, 0x43E8, 0x43E9, 0x43F0, 0x43F1,
+ /* U+4100 */ 0x43F2, 0x43F3, 0x43F4, 0x43F5, 0x43F6, 0x43F7, 0x43F8, 0x43F9,
+ /* U+4108 */ 0x4400, 0x4401, 0x4402, 0x4403, 0x4404, 0x4405, 0x4406, 0x4407,
+ /* U+4110 */ 0x4408, 0x4409, 0x4410, 0x4411, 0x4412, 0x4413, 0x4414, 0x4415,
+ /* U+4118 */ 0x4416, 0x4417, 0x4418, 0x4419, 0x4420, 0x4421, 0x4422, 0x4423,
+ /* U+4120 */ 0x4424, 0x4425, 0x4426, 0x4427, 0x4428, 0x4429, 0x4430, 0x4431,
+ /* U+4128 */ 0x4432, 0x4433, 0x4434, 0x4435, 0x4436, 0x4437, 0x4438, 0x4439,
+ /* U+4130 */ 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446, 0x4447,
+ /* U+4138 */ 0x4448, 0x4449, 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455,
+ /* U+4140 */ 0x4456, 0x4457, 0x4458, 0x4459, 0x4460, 0x4461, 0x4462, 0x4463,
+ /* U+4148 */ 0x4464, 0x4465, 0x4466, 0x4467, 0x4468, 0x4469, 0x4470, 0x4471,
+ /* U+4150 */ 0x4472, 0x4473, 0x4474, 0x4475, 0x4476, 0x4477, 0x4478, 0x4479,
+ /* U+4158 */ 0x4480, 0x4481, 0x4482, 0x4483, 0x4484, 0x4485, 0x4486, 0xFE70,
+ /* Contiguous area: U+4337 .. U+44D6 */
+ /* U+4337 */ 0xFE72,
+ /* U+4338 */ 0x4778, 0x4779, 0x4780, 0x4781, 0x4782, 0x4783, 0x4784, 0x4785,
+ /* U+4340 */ 0x4786, 0x4787, 0x4788, 0x4789, 0x4790, 0x4791, 0x4792, 0x4793,
+ /* U+4348 */ 0x4794, 0x4795, 0x4796, 0x4797, 0x4798, 0x4799, 0x47A0, 0x47A1,
+ /* U+4350 */ 0x47A2, 0x47A3, 0x47A4, 0x47A5, 0x47A6, 0x47A7, 0x47A8, 0x47A9,
+ /* U+4358 */ 0x47B0, 0x47B1, 0x47B2, 0x47B3, 0x47B4, 0x47B5, 0x47B6, 0x47B7,
+ /* U+4360 */ 0x47B8, 0x47B9, 0x47C0, 0x47C1, 0x47C2, 0x47C3, 0x47C4, 0x47C5,
+ /* U+4368 */ 0x47C6, 0x47C7, 0x47C8, 0x47C9, 0x47D0, 0x47D1, 0x47D2, 0x47D3,
+ /* U+4370 */ 0x47D4, 0x47D5, 0x47D6, 0x47D7, 0x47D8, 0x47D9, 0x4800, 0x4801,
+ /* U+4378 */ 0x4802, 0x4803, 0x4804, 0x4805, 0x4806, 0x4807, 0x4808, 0x4809,
+ /* U+4380 */ 0x4810, 0x4811, 0x4812, 0x4813, 0x4814, 0x4815, 0x4816, 0x4817,
+ /* U+4388 */ 0x4818, 0x4819, 0x4820, 0x4821, 0x4822, 0x4823, 0x4824, 0x4825,
+ /* U+4390 */ 0x4826, 0x4827, 0x4828, 0x4829, 0x4830, 0x4831, 0x4832, 0x4833,
+ /* U+4398 */ 0x4834, 0x4835, 0x4836, 0x4837, 0x4838, 0x4839, 0x4840, 0x4841,
+ /* U+43A0 */ 0x4842, 0x4843, 0x4844, 0x4845, 0x4846, 0x4847, 0x4848, 0x4849,
+ /* U+43A8 */ 0x4850, 0x4851, 0x4852, 0x4853, 0xFE78, 0x4854, 0x4855, 0x4856,
+ /* U+43B0 */ 0x4857, 0xFE77, 0x4858, 0x4859, 0x4860, 0x4861, 0x4862, 0x4863,
+ /* U+43B8 */ 0x4864, 0x4865, 0x4866, 0x4867, 0x4868, 0x4869, 0x4870, 0x4871,
+ /* U+43C0 */ 0x4872, 0x4873, 0x4874, 0x4875, 0x4876, 0x4877, 0x4878, 0x4879,
+ /* U+43C8 */ 0x4880, 0x4881, 0x4882, 0x4883, 0x4884, 0x4885, 0x4886, 0x4887,
+ /* U+43D0 */ 0x4888, 0x4889, 0x4890, 0x4891, 0x4892, 0x4893, 0x4894, 0x4895,
+ /* U+43D8 */ 0x4896, 0x4897, 0x4898, 0x4899, 0x48A0, 0xFE7A, 0x48A1, 0x48A2,
+ /* U+43E0 */ 0x48A3, 0x48A4, 0x48A5, 0x48A6, 0x48A7, 0x48A8, 0x48A9, 0x48B0,
+ /* U+43E8 */ 0x48B1, 0x48B2, 0x48B3, 0x48B4, 0x48B5, 0x48B6, 0x48B7, 0x48B8,
+ /* U+43F0 */ 0x48B9, 0x48C0, 0x48C1, 0x48C2, 0x48C3, 0x48C4, 0x48C5, 0x48C6,
+ /* U+43F8 */ 0x48C7, 0x48C8, 0x48C9, 0x48D0, 0x48D1, 0x48D2, 0x48D3, 0x48D4,
+ /* U+4400 */ 0x48D5, 0x48D6, 0x48D7, 0x48D8, 0x48D9, 0x48E0, 0x48E1, 0x48E2,
+ /* U+4408 */ 0x48E3, 0x48E4, 0x48E5, 0x48E6, 0x48E7, 0x48E8, 0x48E9, 0x48F0,
+ /* U+4410 */ 0x48F1, 0x48F2, 0x48F3, 0x48F4, 0x48F5, 0x48F6, 0x48F7, 0x48F8,
+ /* U+4418 */ 0x48F9, 0x4900, 0x4901, 0x4902, 0x4903, 0x4904, 0x4905, 0x4906,
+ /* U+4420 */ 0x4907, 0x4908, 0x4909, 0x4910, 0x4911, 0x4912, 0x4913, 0x4914,
+ /* U+4428 */ 0x4915, 0x4916, 0x4917, 0x4918, 0x4919, 0x4920, 0x4921, 0x4922,
+ /* U+4430 */ 0x4923, 0x4924, 0x4925, 0x4926, 0x4927, 0x4928, 0x4929, 0x4930,
+ /* U+4438 */ 0x4931, 0x4932, 0x4933, 0x4934, 0x4935, 0x4936, 0x4937, 0x4938,
+ /* U+4440 */ 0x4939, 0x4940, 0x4941, 0x4942, 0x4943, 0x4944, 0x4945, 0x4946,
+ /* U+4448 */ 0x4947, 0x4948, 0x4949, 0x4950, 0x4951, 0x4952, 0x4953, 0x4954,
+ /* U+4450 */ 0x4955, 0x4956, 0x4957, 0x4958, 0x4959, 0x4960, 0x4961, 0x4962,
+ /* U+4458 */ 0x4963, 0x4964, 0x4965, 0x4966, 0x4967, 0x4968, 0x4969, 0x4970,
+ /* U+4460 */ 0x4971, 0x4972, 0x4973, 0x4974, 0x4975, 0x4976, 0x4977, 0x4978,
+ /* U+4468 */ 0x4979, 0x4980, 0x4981, 0x4982, 0x4983, 0x4984, 0x4985, 0x4986,
+ /* U+4470 */ 0x4987, 0x4988, 0x4989, 0x4990, 0x4991, 0x4992, 0x4993, 0x4994,
+ /* U+4478 */ 0x4995, 0x4996, 0x4997, 0x4998, 0x4999, 0x49A0, 0x49A1, 0x49A2,
+ /* U+4480 */ 0x49A3, 0x49A4, 0x49A5, 0x49A6, 0x49A7, 0x49A8, 0x49A9, 0x49B0,
+ /* U+4488 */ 0x49B1, 0x49B2, 0x49B3, 0x49B4, 0x49B5, 0x49B6, 0x49B7, 0x49B8,
+ /* U+4490 */ 0x49B9, 0x49C0, 0x49C1, 0x49C2, 0x49C3, 0x49C4, 0x49C5, 0x49C6,
+ /* U+4498 */ 0x49C7, 0x49C8, 0x49C9, 0x49D0, 0x49D1, 0x49D2, 0x49D3, 0x49D4,
+ /* U+44A0 */ 0x49D5, 0x49D6, 0x49D7, 0x49D8, 0x49D9, 0x49E0, 0x49E1, 0x49E2,
+ /* U+44A8 */ 0x49E3, 0x49E4, 0x49E5, 0x49E6, 0x49E7, 0x49E8, 0x49E9, 0x49F0,
+ /* U+44B0 */ 0x49F1, 0x49F2, 0x49F3, 0x49F4, 0x49F5, 0x49F6, 0x49F7, 0x49F8,
+ /* U+44B8 */ 0x49F9, 0x4A00, 0x4A01, 0x4A02, 0x4A03, 0x4A04, 0x4A05, 0x4A06,
+ /* U+44C0 */ 0x4A07, 0x4A08, 0x4A09, 0x4A10, 0x4A11, 0x4A12, 0x4A13, 0x4A14,
+ /* U+44C8 */ 0x4A15, 0x4A16, 0x4A17, 0x4A18, 0x4A19, 0x4A20, 0x4A21, 0x4A22,
+ /* U+44D0 */ 0x4A23, 0x4A24, 0x4A25, 0x4A26, 0x4A27, 0x4A28, 0xFE7B,
+ /* Contiguous area: U+464C .. U+478D */
+ /* U+464C */ 0xFE7D, 0x4C82, 0x4C83, 0x4C84,
+ /* U+4650 */ 0x4C85, 0x4C86, 0x4C87, 0x4C88, 0x4C89, 0x4C90, 0x4C91, 0x4C92,
+ /* U+4658 */ 0x4C93, 0x4C94, 0x4C95, 0x4C96, 0x4C97, 0x4C98, 0x4C99, 0x4CA0,
+ /* U+4660 */ 0x4CA1, 0xFE7C, 0x4CA2, 0x4CA3, 0x4CA4, 0x4CA5, 0x4CA6, 0x4CA7,
+ /* U+4668 */ 0x4CA8, 0x4CA9, 0x4CB0, 0x4CB1, 0x4CB2, 0x4CB3, 0x4CB4, 0x4CB5,
+ /* U+4670 */ 0x4CB6, 0x4CB7, 0x4CB8, 0x4CB9, 0x4CC0, 0x4CC1, 0x4CC2, 0x4CC3,
+ /* U+4678 */ 0x4CC4, 0x4CC5, 0x4CC6, 0x4CC7, 0x4CC8, 0x4CC9, 0x4CD0, 0x4CD1,
+ /* U+4680 */ 0x4CD2, 0x4CD3, 0x4CD4, 0x4CD5, 0x4CD6, 0x4CD7, 0x4CD8, 0x4CD9,
+ /* U+4688 */ 0x4CE0, 0x4CE1, 0x4CE2, 0x4CE3, 0x4CE4, 0x4CE5, 0x4CE6, 0x4CE7,
+ /* U+4690 */ 0x4CE8, 0x4CE9, 0x4CF0, 0x4CF1, 0x4CF2, 0x4CF3, 0x4CF4, 0x4CF5,
+ /* U+4698 */ 0x4CF6, 0x4CF7, 0x4CF8, 0x4CF9, 0x4D00, 0x4D01, 0x4D02, 0x4D03,
+ /* U+46A0 */ 0x4D04, 0x4D05, 0x4D06, 0x4D07, 0x4D08, 0x4D09, 0x4D10, 0x4D11,
+ /* U+46A8 */ 0x4D12, 0x4D13, 0x4D14, 0x4D15, 0x4D16, 0x4D17, 0x4D18, 0x4D19,
+ /* U+46B0 */ 0x4D20, 0x4D21, 0x4D22, 0x4D23, 0x4D24, 0x4D25, 0x4D26, 0x4D27,
+ /* U+46B8 */ 0x4D28, 0x4D29, 0x4D30, 0x4D31, 0x4D32, 0x4D33, 0x4D34, 0x4D35,
+ /* U+46C0 */ 0x4D36, 0x4D37, 0x4D38, 0x4D39, 0x4D40, 0x4D41, 0x4D42, 0x4D43,
+ /* U+46C8 */ 0x4D44, 0x4D45, 0x4D46, 0x4D47, 0x4D48, 0x4D49, 0x4D50, 0x4D51,
+ /* U+46D0 */ 0x4D52, 0x4D53, 0x4D54, 0x4D55, 0x4D56, 0x4D57, 0x4D58, 0x4D59,
+ /* U+46D8 */ 0x4D60, 0x4D61, 0x4D62, 0x4D63, 0x4D64, 0x4D65, 0x4D66, 0x4D67,
+ /* U+46E0 */ 0x4D68, 0x4D69, 0x4D70, 0x4D71, 0x4D72, 0x4D73, 0x4D74, 0x4D75,
+ /* U+46E8 */ 0x4D76, 0x4D77, 0x4D78, 0x4D79, 0x4D80, 0x4D81, 0x4D82, 0x4D83,
+ /* U+46F0 */ 0x4D84, 0x4D85, 0x4D86, 0x4D87, 0x4D88, 0x4D89, 0x4D90, 0x4D91,
+ /* U+46F8 */ 0x4D92, 0x4D93, 0x4D94, 0x4D95, 0x4D96, 0x4D97, 0x4D98, 0x4D99,
+ /* U+4700 */ 0x4DA0, 0x4DA1, 0x4DA2, 0x4DA3, 0x4DA4, 0x4DA5, 0x4DA6, 0x4DA7,
+ /* U+4708 */ 0x4DA8, 0x4DA9, 0x4DB0, 0x4DB1, 0x4DB2, 0x4DB3, 0x4DB4, 0x4DB5,
+ /* U+4710 */ 0x4DB6, 0x4DB7, 0x4DB8, 0x4DB9, 0x4DC0, 0x4DC1, 0x4DC2, 0x4DC3,
+ /* U+4718 */ 0x4DC4, 0x4DC5, 0x4DC6, 0x4DC7, 0x4DC8, 0x4DC9, 0x4DD0, 0x4DD1,
+ /* U+4720 */ 0x4DD2, 0x4DD3, 0x4DD4, 0xFE80, 0x4DD5, 0x4DD6, 0x4DD7, 0x4DD8,
+ /* U+4728 */ 0x4DD9, 0xFE81, 0x4DE0, 0x4DE1, 0x4DE2, 0x4DE3, 0x4DE4, 0x4DE5,
+ /* U+4730 */ 0x4DE6, 0x4DE7, 0x4DE8, 0x4DE9, 0x4DF0, 0x4DF1, 0x4DF2, 0x4DF3,
+ /* U+4738 */ 0x4DF4, 0x4DF5, 0x4DF6, 0x4DF7, 0x4DF8, 0x4DF9, 0x4E00, 0x4E01,
+ /* U+4740 */ 0x4E02, 0x4E03, 0x4E04, 0x4E05, 0x4E06, 0x4E07, 0x4E08, 0x4E09,
+ /* U+4748 */ 0x4E10, 0x4E11, 0x4E12, 0x4E13, 0x4E14, 0x4E15, 0x4E16, 0x4E17,
+ /* U+4750 */ 0x4E18, 0x4E19, 0x4E20, 0x4E21, 0x4E22, 0x4E23, 0x4E24, 0x4E25,
+ /* U+4758 */ 0x4E26, 0x4E27, 0x4E28, 0x4E29, 0x4E30, 0x4E31, 0x4E32, 0x4E33,
+ /* U+4760 */ 0x4E34, 0x4E35, 0x4E36, 0x4E37, 0x4E38, 0x4E39, 0x4E40, 0x4E41,
+ /* U+4768 */ 0x4E42, 0x4E43, 0x4E44, 0x4E45, 0x4E46, 0x4E47, 0x4E48, 0x4E49,
+ /* U+4770 */ 0x4E50, 0x4E51, 0x4E52, 0x4E53, 0x4E54, 0x4E55, 0x4E56, 0x4E57,
+ /* U+4778 */ 0x4E58, 0x4E59, 0x4E60, 0x4E61, 0xFE82, 0x4E62, 0x4E63, 0x4E64,
+ /* U+4780 */ 0x4E65, 0x4E66, 0x4E67, 0x4E68, 0x4E69, 0x4E70, 0x4E71, 0x4E72,
+ /* U+4788 */ 0x4E73, 0x4E74, 0x4E75, 0x4E76, 0x4E77, 0xFE83,
+ /* Contiguous area: U+4947 .. U+49B7 */
+ /* U+4947 */ 0xFE85,
+ /* U+4948 */ 0x5159, 0x5160, 0x5161, 0x5162, 0x5163, 0x5164, 0x5165, 0x5166,
+ /* U+4950 */ 0x5167, 0x5168, 0x5169, 0x5170, 0x5171, 0x5172, 0x5173, 0x5174,
+ /* U+4958 */ 0x5175, 0x5176, 0x5177, 0x5178, 0x5179, 0x5180, 0x5181, 0x5182,
+ /* U+4960 */ 0x5183, 0x5184, 0x5185, 0x5186, 0x5187, 0x5188, 0x5189, 0x5190,
+ /* U+4968 */ 0x5191, 0x5192, 0x5193, 0x5194, 0x5195, 0x5196, 0x5197, 0x5198,
+ /* U+4970 */ 0x5199, 0x51A0, 0x51A1, 0x51A2, 0x51A3, 0x51A4, 0x51A5, 0x51A6,
+ /* U+4978 */ 0x51A7, 0x51A8, 0xFE86, 0x51A9, 0x51B0, 0xFE87, 0x51B1, 0x51B2,
+ /* U+4980 */ 0x51B3, 0x51B4, 0xFE88, 0xFE89, 0x51B5, 0xFE8A, 0xFE8B, 0x51B6,
+ /* U+4988 */ 0x51B7, 0x51B8, 0x51B9, 0x51C0, 0x51C1, 0x51C2, 0x51C3, 0x51C4,
+ /* U+4990 */ 0x51C5, 0x51C6, 0x51C7, 0x51C8, 0x51C9, 0x51D0, 0x51D1, 0x51D2,
+ /* U+4998 */ 0x51D3, 0x51D4, 0x51D5, 0xFE8D, 0x51D6, 0x51D7, 0x51D8, 0xFE8C,
+ /* U+49A0 */ 0x51D9, 0x51E0, 0x51E1, 0x51E2, 0x51E3, 0x51E4, 0x51E5, 0x51E6,
+ /* U+49A8 */ 0x51E7, 0x51E8, 0x51E9, 0x51F0, 0x51F1, 0x51F2, 0x51F3, 0x51F4,
+ /* U+49B0 */ 0x51F5, 0x51F6, 0x51F7, 0x51F8, 0x51F9, 0x5200, 0xFE8F, 0xFE8E,
+ /* Contiguous area: U+4C77 .. U+9FA5 */
+ /* U+4C77 */ 0xFE96,
+ /* U+4C78 */ 0x5664, 0x5665, 0x5666, 0x5667, 0x5668, 0x5669, 0x5670, 0x5671,
+ /* U+4C80 */ 0x5672, 0x5673, 0x5674, 0x5675, 0x5676, 0x5677, 0x5678, 0x5679,
+ /* U+4C88 */ 0x5680, 0x5681, 0x5682, 0x5683, 0x5684, 0x5685, 0x5686, 0x5687,
+ /* U+4C90 */ 0x5688, 0x5689, 0x5690, 0x5691, 0x5692, 0x5693, 0x5694, 0x5695,
+ /* U+4C98 */ 0x5696, 0x5697, 0x5698, 0x5699, 0x56A0, 0x56A1, 0x56A2, 0xFE93,
+ /* U+4CA0 */ 0xFE94, 0xFE95, 0xFE97, 0xFE92, 0x56A3, 0x56A4, 0x56A5, 0x56A6,
+ /* U+4CA8 */ 0x56A7, 0x56A8, 0x56A9, 0x56B0, 0x56B1, 0x56B2, 0x56B3, 0x56B4,
+ /* U+4CB0 */ 0x56B5, 0x56B6, 0x56B7, 0x56B8, 0x56B9, 0x56C0, 0x56C1, 0x56C2,
+ /* U+4CB8 */ 0x56C3, 0x56C4, 0x56C5, 0x56C6, 0x56C7, 0x56C8, 0x56C9, 0x56D0,
+ /* U+4CC0 */ 0x56D1, 0x56D2, 0x56D3, 0x56D4, 0x56D5, 0x56D6, 0x56D7, 0x56D8,
+ /* U+4CC8 */ 0x56D9, 0x56E0, 0x56E1, 0x56E2, 0x56E3, 0x56E4, 0x56E5, 0x56E6,
+ /* U+4CD0 */ 0x56E7, 0x56E8, 0x56E9, 0x56F0, 0x56F1, 0x56F2, 0x56F3, 0x56F4,
+ /* U+4CD8 */ 0x56F5, 0x56F6, 0x56F7, 0x56F8, 0x56F9, 0x5700, 0x5701, 0x5702,
+ /* U+4CE0 */ 0x5703, 0x5704, 0x5705, 0x5706, 0x5707, 0x5708, 0x5709, 0x5710,
+ /* U+4CE8 */ 0x5711, 0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717, 0x5718,
+ /* U+4CF0 */ 0x5719, 0x5720, 0x5721, 0x5722, 0x5723, 0x5724, 0x5725, 0x5726,
+ /* U+4CF8 */ 0x5727, 0x5728, 0x5729, 0x5730, 0x5731, 0x5732, 0x5733, 0x5734,
+ /* U+4D00 */ 0x5735, 0x5736, 0x5737, 0x5738, 0x5739, 0x5740, 0x5741, 0x5742,
+ /* U+4D08 */ 0x5743, 0x5744, 0x5745, 0x5746, 0x5747, 0x5748, 0x5749, 0x5750,
+ /* U+4D10 */ 0x5751, 0x5752, 0x5753, 0xFE98, 0xFE99, 0xFE9A, 0xFE9B, 0xFE9C,
+ /* U+4D18 */ 0xFE9D, 0xFE9E, 0x5754, 0x5755, 0x5756, 0x5757, 0x5758, 0x5759,
+ /* U+4D20 */ 0x5760, 0x5761, 0x5762, 0x5763, 0x5764, 0x5765, 0x5766, 0x5767,
+ /* U+4D28 */ 0x5768, 0x5769, 0x5770, 0x5771, 0x5772, 0x5773, 0x5774, 0x5775,
+ /* U+4D30 */ 0x5776, 0x5777, 0x5778, 0x5779, 0x5780, 0x5781, 0x5782, 0x5783,
+ /* U+4D38 */ 0x5784, 0x5785, 0x5786, 0x5787, 0x5788, 0x5789, 0x5790, 0x5791,
+ /* U+4D40 */ 0x5792, 0x5793, 0x5794, 0x5795, 0x5796, 0x5797, 0x5798, 0x5799,
+ /* U+4D48 */ 0x57A0, 0x57A1, 0x57A2, 0x57A3, 0x57A4, 0x57A5, 0x57A6, 0x57A7,
+ /* U+4D50 */ 0x57A8, 0x57A9, 0x57B0, 0x57B1, 0x57B2, 0x57B3, 0x57B4, 0x57B5,
+ /* U+4D58 */ 0x57B6, 0x57B7, 0x57B8, 0x57B9, 0x57C0, 0x57C1, 0x57C2, 0x57C3,
+ /* U+4D60 */ 0x57C4, 0x57C5, 0x57C6, 0x57C7, 0x57C8, 0x57C9, 0x57D0, 0x57D1,
+ /* U+4D68 */ 0x57D2, 0x57D3, 0x57D4, 0x57D5, 0x57D6, 0x57D7, 0x57D8, 0x57D9,
+ /* U+4D70 */ 0x5800, 0x5801, 0x5802, 0x5803, 0x5804, 0x5805, 0x5806, 0x5807,
+ /* U+4D78 */ 0x5808, 0x5809, 0x5810, 0x5811, 0x5812, 0x5813, 0x5814, 0x5815,
+ /* U+4D80 */ 0x5816, 0x5817, 0x5818, 0x5819, 0x5820, 0x5821, 0x5822, 0x5823,
+ /* U+4D88 */ 0x5824, 0x5825, 0x5826, 0x5827, 0x5828, 0x5829, 0x5830, 0x5831,
+ /* U+4D90 */ 0x5832, 0x5833, 0x5834, 0x5835, 0x5836, 0x5837, 0x5838, 0x5839,
+ /* U+4D98 */ 0x5840, 0x5841, 0x5842, 0x5843, 0x5844, 0x5845, 0x5846, 0x5847,
+ /* U+4DA0 */ 0x5848, 0x5849, 0x5850, 0x5851, 0x5852, 0x5853, 0x5854, 0x5855,
+ /* U+4DA8 */ 0x5856, 0x5857, 0x5858, 0x5859, 0x5860, 0x5861, 0xFE9F, 0x5862,
+ /* U+4DB0 */ 0x5863, 0x5864, 0x5865, 0x5866, 0x5867, 0x5868, 0x5869, 0x5870,
+ /* U+4DB8 */ 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877, 0x5878,
+ /* U+4DC0 */ 0x5879, 0x5880, 0x5881, 0x5882, 0x5883, 0x5884, 0x5885, 0x5886,
+ /* U+4DC8 */ 0x5887, 0x5888, 0x5889, 0x5890, 0x5891, 0x5892, 0x5893, 0x5894,
+ /* U+4DD0 */ 0x5895, 0x5896, 0x5897, 0x5898, 0x5899, 0x58A0, 0x58A1, 0x58A2,
+ /* U+4DD8 */ 0x58A3, 0x58A4, 0x58A5, 0x58A6, 0x58A7, 0x58A8, 0x58A9, 0x58B0,
+ /* U+4DE0 */ 0x58B1, 0x58B2, 0x58B3, 0x58B4, 0x58B5, 0x58B6, 0x58B7, 0x58B8,
+ /* U+4DE8 */ 0x58B9, 0x58C0, 0x58C1, 0x58C2, 0x58C3, 0x58C4, 0x58C5, 0x58C6,
+ /* U+4DF0 */ 0x58C7, 0x58C8, 0x58C9, 0x58D0, 0x58D1, 0x58D2, 0x58D3, 0x58D4,
+ /* U+4DF8 */ 0x58D5, 0x58D6, 0x58D7, 0x58D8, 0x58D9, 0x58E0, 0x58E1, 0x58E2,
+ /* U+4E00 */ 0xD2BB, 0xB6A1, 0x8140, 0xC6DF, 0x8141, 0x8142, 0x8143, 0xCDF2,
+ /* U+4E08 */ 0xD5C9, 0xC8FD, 0xC9CF, 0xCFC2, 0xD8A2, 0xB2BB, 0xD3EB, 0x8144,
+ /* U+4E10 */ 0xD8A4, 0xB3F3, 0x8145, 0xD7A8, 0xC7D2, 0xD8A7, 0xCAC0, 0x8146,
+ /* U+4E18 */ 0xC7F0, 0xB1FB, 0xD2B5, 0xB4D4, 0xB6AB, 0xCBBF, 0xD8A9, 0x8147,
+ /* U+4E20 */ 0x8148, 0x8149, 0xB6AA, 0x814A, 0xC1BD, 0xD1CF, 0x814B, 0xC9A5,
+ /* U+4E28 */ 0xD8AD, 0x814C, 0xB8F6, 0xD1BE, 0xE3DC, 0xD6D0, 0x814D, 0x814E,
+ /* U+4E30 */ 0xB7E1, 0x814F, 0xB4AE, 0x8150, 0xC1D9, 0x8151, 0xD8BC, 0x8152,
+ /* U+4E38 */ 0xCDE8, 0xB5A4, 0xCEAA, 0xD6F7, 0x8153, 0xC0F6, 0xBED9, 0xD8AF,
+ /* U+4E40 */ 0x8154, 0x8155, 0x8156, 0xC4CB, 0x8157, 0xBEC3, 0x8158, 0xD8B1,
+ /* U+4E48 */ 0xC3B4, 0xD2E5, 0x8159, 0xD6AE, 0xCEDA, 0xD5A7, 0xBAF5, 0xB7A6,
+ /* U+4E50 */ 0xC0D6, 0x815A, 0xC6B9, 0xC5D2, 0xC7C7, 0x815B, 0xB9D4, 0x815C,
+ /* U+4E58 */ 0xB3CB, 0xD2D2, 0x815D, 0x815E, 0xD8BF, 0xBEC5, 0xC6F2, 0xD2B2,
+ /* U+4E60 */ 0xCFB0, 0xCFE7, 0x815F, 0x8160, 0x8161, 0x8162, 0xCAE9, 0x8163,
+ /* U+4E68 */ 0x8164, 0xD8C0, 0x8165, 0x8166, 0x8167, 0x8168, 0x8169, 0x816A,
+ /* U+4E70 */ 0xC2F2, 0xC2D2, 0x816B, 0xC8E9, 0x816C, 0x816D, 0x816E, 0x816F,
+ /* U+4E78 */ 0x8170, 0x8171, 0x8172, 0x8173, 0x8174, 0x8175, 0xC7AC, 0x8176,
+ /* U+4E80 */ 0x8177, 0x8178, 0x8179, 0x817A, 0x817B, 0x817C, 0xC1CB, 0x817D,
+ /* U+4E88 */ 0xD3E8, 0xD5F9, 0x817E, 0xCAC2, 0xB6FE, 0xD8A1, 0xD3DA, 0xBFF7,
+ /* U+4E90 */ 0x8180, 0xD4C6, 0xBBA5, 0xD8C1, 0xCEE5, 0xBEAE, 0x8181, 0x8182,
+ /* U+4E98 */ 0xD8A8, 0x8183, 0xD1C7, 0xD0A9, 0x8184, 0x8185, 0x8186, 0xD8BD,
+ /* U+4EA0 */ 0xD9EF, 0xCDF6, 0xBFBA, 0x8187, 0xBDBB, 0xBAA5, 0xD2E0, 0xB2FA,
+ /* U+4EA8 */ 0xBAE0, 0xC4B6, 0x8188, 0xCFED, 0xBEA9, 0xCDA4, 0xC1C1, 0x8189,
+ /* U+4EB0 */ 0x818A, 0x818B, 0xC7D7, 0xD9F1, 0x818C, 0xD9F4, 0x818D, 0x818E,
+ /* U+4EB8 */ 0x818F, 0x8190, 0xC8CB, 0xD8E9, 0x8191, 0x8192, 0x8193, 0xD2DA,
+ /* U+4EC0 */ 0xCAB2, 0xC8CA, 0xD8EC, 0xD8EA, 0xD8C6, 0xBDF6, 0xC6CD, 0xB3F0,
+ /* U+4EC8 */ 0x8194, 0xD8EB, 0xBDF1, 0xBDE9, 0x8195, 0xC8D4, 0xB4D3, 0x8196,
+ /* U+4ED0 */ 0x8197, 0xC2D8, 0x8198, 0xB2D6, 0xD7D0, 0xCACB, 0xCBFB, 0xD5CC,
+ /* U+4ED8 */ 0xB8B6, 0xCFC9, 0x8199, 0x819A, 0x819B, 0xD9DA, 0xD8F0, 0xC7AA,
+ /* U+4EE0 */ 0x819C, 0xD8EE, 0x819D, 0xB4FA, 0xC1EE, 0xD2D4, 0x819E, 0x819F,
+ /* U+4EE8 */ 0xD8ED, 0x81A0, 0xD2C7, 0xD8EF, 0xC3C7, 0x81A1, 0x81A2, 0x81A3,
+ /* U+4EF0 */ 0xD1F6, 0x81A4, 0xD6D9, 0xD8F2, 0x81A5, 0xD8F5, 0xBCFE, 0xBCDB,
+ /* U+4EF8 */ 0x81A6, 0x81A7, 0x81A8, 0xC8CE, 0x81A9, 0xB7DD, 0x81AA, 0xB7C2,
+ /* U+4F00 */ 0x81AB, 0xC6F3, 0x81AC, 0x81AD, 0x81AE, 0x81AF, 0x81B0, 0x81B1,
+ /* U+4F08 */ 0x81B2, 0xD8F8, 0xD2C1, 0x81B3, 0x81B4, 0xCEE9, 0xBCBF, 0xB7FC,
+ /* U+4F10 */ 0xB7A5, 0xD0DD, 0x81B5, 0x81B6, 0x81B7, 0x81B8, 0x81B9, 0xD6DA,
+ /* U+4F18 */ 0xD3C5, 0xBBEF, 0xBBE1, 0xD8F1, 0x81BA, 0x81BB, 0xC9A1, 0xCEB0,
+ /* U+4F20 */ 0xB4AB, 0x81BC, 0xD8F3, 0x81BD, 0xC9CB, 0xD8F6, 0xC2D7, 0xD8F7,
+ /* U+4F28 */ 0x81BE, 0x81BF, 0xCEB1, 0xD8F9, 0x81C0, 0x81C1, 0x81C2, 0xB2AE,
+ /* U+4F30 */ 0xB9C0, 0x81C3, 0xD9A3, 0x81C4, 0xB0E9, 0x81C5, 0xC1E6, 0x81C6,
+ /* U+4F38 */ 0xC9EC, 0x81C7, 0xCBC5, 0x81C8, 0xCBC6, 0xD9A4, 0x81C9, 0x81CA,
+ /* U+4F40 */ 0x81CB, 0x81CC, 0x81CD, 0xB5E8, 0x81CE, 0x81CF, 0xB5AB, 0x81D0,
+ /* U+4F48 */ 0x81D1, 0x81D2, 0x81D3, 0x81D4, 0x81D5, 0xCEBB, 0xB5CD, 0xD7A1,
+ /* U+4F50 */ 0xD7F4, 0xD3D3, 0x81D6, 0xCCE5, 0x81D7, 0xBACE, 0x81D8, 0xD9A2,
+ /* U+4F58 */ 0xD9DC, 0xD3E0, 0xD8FD, 0xB7F0, 0xD7F7, 0xD8FE, 0xD8FA, 0xD9A1,
+ /* U+4F60 */ 0xC4E3, 0x81D9, 0x81DA, 0xD3B6, 0xD8F4, 0xD9DD, 0x81DB, 0xD8FB,
+ /* U+4F68 */ 0x81DC, 0xC5E5, 0x81DD, 0x81DE, 0xC0D0, 0x81DF, 0x81E0, 0xD1F0,
+ /* U+4F70 */ 0xB0DB, 0x81E1, 0x81E2, 0xBCD1, 0xD9A6, 0x81E3, 0xD9A5, 0x81E4,
+ /* U+4F78 */ 0x81E5, 0x81E6, 0x81E7, 0xD9AC, 0xD9AE, 0x81E8, 0xD9AB, 0xCAB9,
+ /* U+4F80 */ 0x81E9, 0x81EA, 0x81EB, 0xD9A9, 0xD6B6, 0x81EC, 0x81ED, 0x81EE,
+ /* U+4F88 */ 0xB3DE, 0xD9A8, 0x81EF, 0xC0FD, 0x81F0, 0xCACC, 0x81F1, 0xD9AA,
+ /* U+4F90 */ 0x81F2, 0xD9A7, 0x81F3, 0x81F4, 0xD9B0, 0x81F5, 0x81F6, 0xB6B1,
+ /* U+4F98 */ 0x81F7, 0x81F8, 0x81F9, 0xB9A9, 0x81FA, 0xD2C0, 0x81FB, 0x81FC,
+ /* U+4FA0 */ 0xCFC0, 0x81FD, 0x81FE, 0xC2C2, 0x8240, 0xBDC4, 0xD5EC, 0xB2E0,
+ /* U+4FA8 */ 0xC7C8, 0xBFEB, 0xD9AD, 0x8241, 0xD9AF, 0x8242, 0xCEEA, 0xBAEE,
+ /* U+4FB0 */ 0x8243, 0x8244, 0x8245, 0x8246, 0x8247, 0xC7D6, 0x8248, 0x8249,
+ /* U+4FB8 */ 0x824A, 0x824B, 0x824C, 0x824D, 0x824E, 0x824F, 0x8250, 0xB1E3,
+ /* U+4FC0 */ 0x8251, 0x8252, 0x8253, 0xB4D9, 0xB6ED, 0xD9B4, 0x8254, 0x8255,
+ /* U+4FC8 */ 0x8256, 0x8257, 0xBFA1, 0x8258, 0x8259, 0x825A, 0xD9DE, 0xC7CE,
+ /* U+4FD0 */ 0xC0FE, 0xD9B8, 0x825B, 0x825C, 0x825D, 0x825E, 0x825F, 0xCBD7,
+ /* U+4FD8 */ 0xB7FD, 0x8260, 0xD9B5, 0x8261, 0xD9B7, 0xB1A3, 0xD3E1, 0xD9B9,
+ /* U+4FE0 */ 0x8262, 0xD0C5, 0x8263, 0xD9B6, 0x8264, 0x8265, 0xD9B1, 0x8266,
+ /* U+4FE8 */ 0xD9B2, 0xC1A9, 0xD9B3, 0x8267, 0x8268, 0xBCF3, 0xD0DE, 0xB8A9,
+ /* U+4FF0 */ 0x8269, 0xBEE3, 0x826A, 0xD9BD, 0x826B, 0x826C, 0x826D, 0x826E,
+ /* U+4FF8 */ 0xD9BA, 0x826F, 0xB0B3, 0x8270, 0x8271, 0x8272, 0xD9C2, 0x8273,
+ /* U+5000 */ 0x8274, 0x8275, 0x8276, 0x8277, 0x8278, 0x8279, 0x827A, 0x827B,
+ /* U+5008 */ 0x827C, 0x827D, 0x827E, 0x8280, 0xD9C4, 0xB1B6, 0x8281, 0xD9BF,
+ /* U+5010 */ 0x8282, 0x8283, 0xB5B9, 0x8284, 0xBEF3, 0x8285, 0x8286, 0x8287,
+ /* U+5018 */ 0xCCC8, 0xBAF2, 0xD2D0, 0x8288, 0xD9C3, 0x8289, 0x828A, 0xBDE8,
+ /* U+5020 */ 0x828B, 0xB3AB, 0x828C, 0x828D, 0x828E, 0xD9C5, 0xBEEB, 0x828F,
+ /* U+5028 */ 0xD9C6, 0xD9BB, 0xC4DF, 0x8290, 0xD9BE, 0xD9C1, 0xD9C0, 0x8291,
+ /* U+5030 */ 0x8292, 0x8293, 0x8294, 0x8295, 0x8296, 0x8297, 0x8298, 0x8299,
+ /* U+5038 */ 0x829A, 0x829B, 0xD5AE, 0x829C, 0xD6B5, 0x829D, 0xC7E3, 0x829E,
+ /* U+5040 */ 0x829F, 0x82A0, 0x82A1, 0xD9C8, 0x82A2, 0x82A3, 0x82A4, 0xBCD9,
+ /* U+5048 */ 0xD9CA, 0x82A5, 0x82A6, 0x82A7, 0xD9BC, 0x82A8, 0xD9CB, 0xC6AB,
+ /* U+5050 */ 0x82A9, 0x82AA, 0x82AB, 0x82AC, 0x82AD, 0xD9C9, 0x82AE, 0x82AF,
+ /* U+5058 */ 0x82B0, 0x82B1, 0xD7F6, 0x82B2, 0xCDA3, 0x82B3, 0x82B4, 0x82B5,
+ /* U+5060 */ 0x82B6, 0x82B7, 0x82B8, 0x82B9, 0x82BA, 0xBDA1, 0x82BB, 0x82BC,
+ /* U+5068 */ 0x82BD, 0x82BE, 0x82BF, 0x82C0, 0xD9CC, 0x82C1, 0x82C2, 0x82C3,
+ /* U+5070 */ 0x82C4, 0x82C5, 0x82C6, 0x82C7, 0x82C8, 0x82C9, 0xC5BC, 0xCDB5,
+ /* U+5078 */ 0x82CA, 0x82CB, 0x82CC, 0xD9CD, 0x82CD, 0x82CE, 0xD9C7, 0xB3A5,
+ /* U+5080 */ 0xBFFE, 0x82CF, 0x82D0, 0x82D1, 0x82D2, 0xB8B5, 0x82D3, 0x82D4,
+ /* U+5088 */ 0xC0FC, 0x82D5, 0x82D6, 0x82D7, 0x82D8, 0xB0F8, 0x82D9, 0x82DA,
+ /* U+5090 */ 0x82DB, 0x82DC, 0x82DD, 0x82DE, 0x82DF, 0x82E0, 0x82E1, 0x82E2,
+ /* U+5098 */ 0x82E3, 0x82E4, 0x82E5, 0x82E6, 0x82E7, 0x82E8, 0x82E9, 0x82EA,
+ /* U+50A0 */ 0x82EB, 0x82EC, 0x82ED, 0xB4F6, 0x82EE, 0xD9CE, 0x82EF, 0xD9CF,
+ /* U+50A8 */ 0xB4A2, 0xD9D0, 0x82F0, 0x82F1, 0xB4DF, 0x82F2, 0x82F3, 0x82F4,
+ /* U+50B0 */ 0x82F5, 0x82F6, 0xB0C1, 0x82F7, 0x82F8, 0x82F9, 0x82FA, 0x82FB,
+ /* U+50B8 */ 0x82FC, 0x82FD, 0xD9D1, 0xC9B5, 0x82FE, 0x8340, 0x8341, 0x8342,
+ /* U+50C0 */ 0x8343, 0x8344, 0x8345, 0x8346, 0x8347, 0x8348, 0x8349, 0x834A,
+ /* U+50C8 */ 0x834B, 0x834C, 0x834D, 0x834E, 0x834F, 0x8350, 0x8351, 0xCFF1,
+ /* U+50D0 */ 0x8352, 0x8353, 0x8354, 0x8355, 0x8356, 0x8357, 0xD9D2, 0x8358,
+ /* U+50D8 */ 0x8359, 0x835A, 0xC1C5, 0x835B, 0x835C, 0x835D, 0x835E, 0x835F,
+ /* U+50E0 */ 0x8360, 0x8361, 0x8362, 0x8363, 0x8364, 0x8365, 0xD9D6, 0xC9AE,
+ /* U+50E8 */ 0x8366, 0x8367, 0x8368, 0x8369, 0xD9D5, 0xD9D4, 0xD9D7, 0x836A,
+ /* U+50F0 */ 0x836B, 0x836C, 0x836D, 0xCBDB, 0x836E, 0xBDA9, 0x836F, 0x8370,
+ /* U+50F8 */ 0x8371, 0x8372, 0x8373, 0xC6A7, 0x8374, 0x8375, 0x8376, 0x8377,
+ /* U+5100 */ 0x8378, 0x8379, 0x837A, 0x837B, 0x837C, 0x837D, 0xD9D3, 0xD9D8,
+ /* U+5108 */ 0x837E, 0x8380, 0x8381, 0xD9D9, 0x8382, 0x8383, 0x8384, 0x8385,
+ /* U+5110 */ 0x8386, 0x8387, 0xC8E5, 0x8388, 0x8389, 0x838A, 0x838B, 0x838C,
+ /* U+5118 */ 0x838D, 0x838E, 0x838F, 0x8390, 0x8391, 0x8392, 0x8393, 0x8394,
+ /* U+5120 */ 0x8395, 0xC0DC, 0x8396, 0x8397, 0x8398, 0x8399, 0x839A, 0x839B,
+ /* U+5128 */ 0x839C, 0x839D, 0x839E, 0x839F, 0x83A0, 0x83A1, 0x83A2, 0x83A3,
+ /* U+5130 */ 0x83A4, 0x83A5, 0x83A6, 0x83A7, 0x83A8, 0x83A9, 0x83AA, 0x83AB,
+ /* U+5138 */ 0x83AC, 0x83AD, 0x83AE, 0x83AF, 0x83B0, 0x83B1, 0x83B2, 0xB6F9,
+ /* U+5140 */ 0xD8A3, 0xD4CA, 0x83B3, 0xD4AA, 0xD0D6, 0xB3E4, 0xD5D7, 0x83B4,
+ /* U+5148 */ 0xCFC8, 0xB9E2, 0x83B5, 0xBFCB, 0x83B6, 0xC3E2, 0x83B7, 0x83B8,
+ /* U+5150 */ 0x83B9, 0xB6D2, 0x83BA, 0x83BB, 0xCDC3, 0xD9EE, 0xD9F0, 0x83BC,
+ /* U+5158 */ 0x83BD, 0x83BE, 0xB5B3, 0x83BF, 0xB6B5, 0x83C0, 0x83C1, 0x83C2,
+ /* U+5160 */ 0x83C3, 0x83C4, 0xBEA4, 0x83C5, 0x83C6, 0xC8EB, 0x83C7, 0x83C8,
+ /* U+5168 */ 0xC8AB, 0x83C9, 0x83CA, 0xB0CB, 0xB9AB, 0xC1F9, 0xD9E2, 0x83CB,
+ /* U+5170 */ 0xC0BC, 0xB9B2, 0x83CC, 0xB9D8, 0xD0CB, 0xB1F8, 0xC6E4, 0xBEDF,
+ /* U+5178 */ 0xB5E4, 0xD7C8, 0x83CD, 0xD1F8, 0xBCE6, 0xCADE, 0x83CE, 0x83CF,
+ /* U+5180 */ 0xBCBD, 0xD9E6, 0xD8E7, 0x83D0, 0x83D1, 0xC4DA, 0x83D2, 0x83D3,
+ /* U+5188 */ 0xB8D4, 0xC8BD, 0x83D4, 0x83D5, 0xB2E1, 0xD4D9, 0x83D6, 0x83D7,
+ /* U+5190 */ 0x83D8, 0x83D9, 0xC3B0, 0x83DA, 0x83DB, 0xC3E1, 0xDAA2, 0xC8DF,
+ /* U+5198 */ 0x83DC, 0xD0B4, 0x83DD, 0xBEFC, 0xC5A9, 0x83DE, 0x83DF, 0x83E0,
+ /* U+51A0 */ 0xB9DA, 0x83E1, 0xDAA3, 0x83E2, 0xD4A9, 0xDAA4, 0x83E3, 0x83E4,
+ /* U+51A8 */ 0x83E5, 0x83E6, 0x83E7, 0xD9FB, 0xB6AC, 0x83E8, 0x83E9, 0xB7EB,
+ /* U+51B0 */ 0xB1F9, 0xD9FC, 0xB3E5, 0xBEF6, 0x83EA, 0xBFF6, 0xD2B1, 0xC0E4,
+ /* U+51B8 */ 0x83EB, 0x83EC, 0x83ED, 0xB6B3, 0xD9FE, 0xD9FD, 0x83EE, 0x83EF,
+ /* U+51C0 */ 0xBEBB, 0x83F0, 0x83F1, 0x83F2, 0xC6E0, 0x83F3, 0xD7BC, 0xDAA1,
+ /* U+51C8 */ 0x83F4, 0xC1B9, 0x83F5, 0xB5F2, 0xC1E8, 0x83F6, 0x83F7, 0xBCF5,
+ /* U+51D0 */ 0x83F8, 0xB4D5, 0x83F9, 0x83FA, 0x83FB, 0x83FC, 0x83FD, 0x83FE,
+ /* U+51D8 */ 0x8440, 0x8441, 0x8442, 0xC1DD, 0x8443, 0xC4FD, 0x8444, 0x8445,
+ /* U+51E0 */ 0xBCB8, 0xB7B2, 0x8446, 0x8447, 0xB7EF, 0x8448, 0x8449, 0x844A,
+ /* U+51E8 */ 0x844B, 0x844C, 0x844D, 0xD9EC, 0x844E, 0xC6BE, 0x844F, 0xBFAD,
+ /* U+51F0 */ 0xBBCB, 0x8450, 0x8451, 0xB5CA, 0x8452, 0xDBC9, 0xD0D7, 0x8453,
+ /* U+51F8 */ 0xCDB9, 0xB0BC, 0xB3F6, 0xBBF7, 0xDBCA, 0xBAAF, 0x8454, 0xD4E4,
+ /* U+5200 */ 0xB5B6, 0xB5F3, 0xD8D6, 0xC8D0, 0x8455, 0x8456, 0xB7D6, 0xC7D0,
+ /* U+5208 */ 0xD8D7, 0x8457, 0xBFAF, 0x8458, 0x8459, 0xDBBB, 0xD8D8, 0x845A,
+ /* U+5210 */ 0x845B, 0xD0CC, 0xBBAE, 0x845C, 0x845D, 0x845E, 0xEBBE, 0xC1D0,
+ /* U+5218 */ 0xC1F5, 0xD4F2, 0xB8D5, 0xB4B4, 0x845F, 0xB3F5, 0x8460, 0x8461,
+ /* U+5220 */ 0xC9BE, 0x8462, 0x8463, 0x8464, 0xC5D0, 0x8465, 0x8466, 0x8467,
+ /* U+5228 */ 0xC5D9, 0xC0FB, 0x8468, 0xB1F0, 0x8469, 0xD8D9, 0xB9CE, 0x846A,
+ /* U+5230 */ 0xB5BD, 0x846B, 0x846C, 0xD8DA, 0x846D, 0x846E, 0xD6C6, 0xCBA2,
+ /* U+5238 */ 0xC8AF, 0xC9B2, 0xB4CC, 0xBFCC, 0x846F, 0xB9F4, 0x8470, 0xD8DB,
+ /* U+5240 */ 0xD8DC, 0xB6E7, 0xBCC1, 0xCCEA, 0x8471, 0x8472, 0x8473, 0x8474,
+ /* U+5248 */ 0x8475, 0x8476, 0xCFF7, 0x8477, 0xD8DD, 0xC7B0, 0x8478, 0x8479,
+ /* U+5250 */ 0xB9D0, 0xBDA3, 0x847A, 0x847B, 0xCCDE, 0x847C, 0xC6CA, 0x847D,
+ /* U+5258 */ 0x847E, 0x8480, 0x8481, 0x8482, 0xD8E0, 0x8483, 0xD8DE, 0x8484,
+ /* U+5260 */ 0x8485, 0xD8DF, 0x8486, 0x8487, 0x8488, 0xB0FE, 0x8489, 0xBEE7,
+ /* U+5268 */ 0x848A, 0xCAA3, 0xBCF4, 0x848B, 0x848C, 0x848D, 0x848E, 0xB8B1,
+ /* U+5270 */ 0x848F, 0x8490, 0xB8EE, 0x8491, 0x8492, 0x8493, 0x8494, 0x8495,
+ /* U+5278 */ 0x8496, 0x8497, 0x8498, 0x8499, 0x849A, 0xD8E2, 0x849B, 0xBDCB,
+ /* U+5280 */ 0x849C, 0xD8E4, 0xD8E3, 0x849D, 0x849E, 0x849F, 0x84A0, 0x84A1,
+ /* U+5288 */ 0xC5FC, 0x84A2, 0x84A3, 0x84A4, 0x84A5, 0x84A6, 0x84A7, 0x84A8,
+ /* U+5290 */ 0xD8E5, 0x84A9, 0x84AA, 0xD8E6, 0x84AB, 0x84AC, 0x84AD, 0x84AE,
+ /* U+5298 */ 0x84AF, 0x84B0, 0x84B1, 0xC1A6, 0x84B2, 0xC8B0, 0xB0EC, 0xB9A6,
+ /* U+52A0 */ 0xBCD3, 0xCEF1, 0xDBBD, 0xC1D3, 0x84B3, 0x84B4, 0x84B5, 0x84B6,
+ /* U+52A8 */ 0xB6AF, 0xD6FA, 0xC5AC, 0xBDD9, 0xDBBE, 0xDBBF, 0x84B7, 0x84B8,
+ /* U+52B0 */ 0x84B9, 0xC0F8, 0xBEA2, 0xC0CD, 0x84BA, 0x84BB, 0x84BC, 0x84BD,
+ /* U+52B8 */ 0x84BE, 0x84BF, 0x84C0, 0x84C1, 0x84C2, 0x84C3, 0xDBC0, 0xCAC6,
+ /* U+52C0 */ 0x84C4, 0x84C5, 0x84C6, 0xB2AA, 0x84C7, 0x84C8, 0x84C9, 0xD3C2,
+ /* U+52C8 */ 0x84CA, 0xC3E3, 0x84CB, 0xD1AB, 0x84CC, 0x84CD, 0x84CE, 0x84CF,
+ /* U+52D0 */ 0xDBC2, 0x84D0, 0xC0D5, 0x84D1, 0x84D2, 0x84D3, 0xDBC3, 0x84D4,
+ /* U+52D8 */ 0xBFB1, 0x84D5, 0x84D6, 0x84D7, 0x84D8, 0x84D9, 0x84DA, 0xC4BC,
+ /* U+52E0 */ 0x84DB, 0x84DC, 0x84DD, 0x84DE, 0xC7DA, 0x84DF, 0x84E0, 0x84E1,
+ /* U+52E8 */ 0x84E2, 0x84E3, 0x84E4, 0x84E5, 0x84E6, 0x84E7, 0x84E8, 0x84E9,
+ /* U+52F0 */ 0xDBC4, 0x84EA, 0x84EB, 0x84EC, 0x84ED, 0x84EE, 0x84EF, 0x84F0,
+ /* U+52F8 */ 0x84F1, 0xD9E8, 0xC9D7, 0x84F2, 0x84F3, 0x84F4, 0xB9B4, 0xCEF0,
+ /* U+5300 */ 0xD4C8, 0x84F5, 0x84F6, 0x84F7, 0x84F8, 0xB0FC, 0xB4D2, 0x84F9,
+ /* U+5308 */ 0xD0D9, 0x84FA, 0x84FB, 0x84FC, 0x84FD, 0xD9E9, 0x84FE, 0xDECB,
+ /* U+5310 */ 0xD9EB, 0x8540, 0x8541, 0x8542, 0x8543, 0xD8B0, 0xBBAF, 0xB1B1,
+ /* U+5318 */ 0x8544, 0xB3D7, 0xD8CE, 0x8545, 0x8546, 0xD4D1, 0x8547, 0x8548,
+ /* U+5320 */ 0xBDB3, 0xBFEF, 0x8549, 0xCFBB, 0x854A, 0x854B, 0xD8D0, 0x854C,
+ /* U+5328 */ 0x854D, 0x854E, 0xB7CB, 0x854F, 0x8550, 0x8551, 0xD8D1, 0x8552,
+ /* U+5330 */ 0x8553, 0x8554, 0x8555, 0x8556, 0x8557, 0x8558, 0x8559, 0x855A,
+ /* U+5338 */ 0x855B, 0xC6A5, 0xC7F8, 0xD2BD, 0x855C, 0x855D, 0xD8D2, 0xC4E4,
+ /* U+5340 */ 0x855E, 0xCAAE, 0x855F, 0xC7A7, 0x8560, 0xD8A6, 0x8561, 0xC9FD,
+ /* U+5348 */ 0xCEE7, 0xBBDC, 0xB0EB, 0x8562, 0x8563, 0x8564, 0xBBAA, 0xD0AD,
+ /* U+5350 */ 0x8565, 0xB1B0, 0xD7E4, 0xD7BF, 0x8566, 0xB5A5, 0xC2F4, 0xC4CF,
+ /* U+5358 */ 0x8567, 0x8568, 0xB2A9, 0x8569, 0xB2B7, 0x856A, 0xB1E5, 0xDFB2,
+ /* U+5360 */ 0xD5BC, 0xBFA8, 0xC2AC, 0xD8D5, 0xC2B1, 0x856B, 0xD8D4, 0xCED4,
+ /* U+5368 */ 0x856C, 0xDAE0, 0x856D, 0xCEC0, 0x856E, 0x856F, 0xD8B4, 0xC3AE,
+ /* U+5370 */ 0xD3A1, 0xCEA3, 0x8570, 0xBCB4, 0xC8B4, 0xC2D1, 0x8571, 0xBEED,
+ /* U+5378 */ 0xD0B6, 0x8572, 0xDAE1, 0x8573, 0x8574, 0x8575, 0x8576, 0xC7E4,
+ /* U+5380 */ 0x8577, 0x8578, 0xB3A7, 0x8579, 0xB6F2, 0xCCFC, 0xC0FA, 0x857A,
+ /* U+5388 */ 0x857B, 0xC0F7, 0x857C, 0xD1B9, 0xD1E1, 0xD8C7, 0x857D, 0x857E,
+ /* U+5390 */ 0x8580, 0x8581, 0x8582, 0x8583, 0x8584, 0xB2DE, 0x8585, 0x8586,
+ /* U+5398 */ 0xC0E5, 0x8587, 0xBAF1, 0x8588, 0x8589, 0xD8C8, 0x858A, 0xD4AD,
+ /* U+53A0 */ 0x858B, 0x858C, 0xCFE1, 0xD8C9, 0x858D, 0xD8CA, 0xCFC3, 0x858E,
+ /* U+53A8 */ 0xB3F8, 0xBEC7, 0x858F, 0x8590, 0x8591, 0x8592, 0xD8CB, 0x8593,
+ /* U+53B0 */ 0x8594, 0x8595, 0x8596, 0x8597, 0x8598, 0x8599, 0xDBCC, 0x859A,
+ /* U+53B8 */ 0x859B, 0x859C, 0x859D, 0xC8A5, 0x859E, 0x859F, 0x85A0, 0xCFD8,
+ /* U+53C0 */ 0x85A1, 0xC8FE, 0xB2CE, 0x85A2, 0x85A3, 0x85A4, 0x85A5, 0x85A6,
+ /* U+53C8 */ 0xD3D6, 0xB2E6, 0xBCB0, 0xD3D1, 0xCBAB, 0xB7B4, 0x85A7, 0x85A8,
+ /* U+53D0 */ 0x85A9, 0xB7A2, 0x85AA, 0x85AB, 0xCAE5, 0x85AC, 0xC8A1, 0xCADC,
+ /* U+53D8 */ 0xB1E4, 0xD0F0, 0x85AD, 0xC5D1, 0x85AE, 0x85AF, 0x85B0, 0xDBC5,
+ /* U+53E0 */ 0xB5FE, 0x85B1, 0x85B2, 0xBFDA, 0xB9C5, 0xBEE4, 0xC1ED, 0x85B3,
+ /* U+53E8 */ 0xDFB6, 0xDFB5, 0xD6BB, 0xBDD0, 0xD5D9, 0xB0C8, 0xB6A3, 0xBFC9,
+ /* U+53F0 */ 0xCCA8, 0xDFB3, 0xCAB7, 0xD3D2, 0x85B4, 0xD8CF, 0xD2B6, 0xBAC5,
+ /* U+53F8 */ 0xCBBE, 0xCCBE, 0x85B5, 0xDFB7, 0xB5F0, 0xDFB4, 0x85B6, 0x85B7,
+ /* U+5400 */ 0x85B8, 0xD3F5, 0x85B9, 0xB3D4, 0xB8F7, 0x85BA, 0xDFBA, 0x85BB,
+ /* U+5408 */ 0xBACF, 0xBCAA, 0xB5F5, 0x85BC, 0xCDAC, 0xC3FB, 0xBAF3, 0xC0F4,
+ /* U+5410 */ 0xCDC2, 0xCFF2, 0xDFB8, 0xCFC5, 0x85BD, 0xC2C0, 0xDFB9, 0xC2F0,
+ /* U+5418 */ 0x85BE, 0x85BF, 0x85C0, 0xBEFD, 0x85C1, 0xC1DF, 0xCDCC, 0xD2F7,
+ /* U+5420 */ 0xB7CD, 0xDFC1, 0x85C2, 0xDFC4, 0x85C3, 0x85C4, 0xB7F1, 0xB0C9,
+ /* U+5428 */ 0xB6D6, 0xB7D4, 0x85C5, 0xBAAC, 0xCCFD, 0xBFD4, 0xCBB1, 0xC6F4,
+ /* U+5430 */ 0x85C6, 0xD6A8, 0xDFC5, 0x85C7, 0xCEE2, 0xB3B3, 0x85C8, 0x85C9,
+ /* U+5438 */ 0xCEFC, 0xB4B5, 0x85CA, 0xCEC7, 0xBAF0, 0x85CB, 0xCEE1, 0x85CC,
+ /* U+5440 */ 0xD1BD, 0x85CD, 0x85CE, 0xDFC0, 0x85CF, 0x85D0, 0xB4F4, 0x85D1,
+ /* U+5448 */ 0xB3CA, 0x85D2, 0xB8E6, 0xDFBB, 0x85D3, 0x85D4, 0x85D5, 0x85D6,
+ /* U+5450 */ 0xC4C5, 0x85D7, 0xDFBC, 0xDFBD, 0xDFBE, 0xC5BB, 0xDFBF, 0xDFC2,
+ /* U+5458 */ 0xD4B1, 0xDFC3, 0x85D8, 0xC7BA, 0xCED8, 0x85D9, 0x85DA, 0x85DB,
+ /* U+5460 */ 0x85DC, 0x85DD, 0xC4D8, 0x85DE, 0xDFCA, 0x85DF, 0xDFCF, 0x85E0,
+ /* U+5468 */ 0xD6DC, 0x85E1, 0x85E2, 0x85E3, 0x85E4, 0x85E5, 0x85E6, 0x85E7,
+ /* U+5470 */ 0x85E8, 0xDFC9, 0xDFDA, 0xCEB6, 0x85E9, 0xBAC7, 0xDFCE, 0xDFC8,
+ /* U+5478 */ 0xC5DE, 0x85EA, 0x85EB, 0xC9EB, 0xBAF4, 0xC3FC, 0x85EC, 0x85ED,
+ /* U+5480 */ 0xBED7, 0x85EE, 0xDFC6, 0x85EF, 0xDFCD, 0x85F0, 0xC5D8, 0x85F1,
+ /* U+5488 */ 0x85F2, 0x85F3, 0x85F4, 0xD5A6, 0xBACD, 0x85F5, 0xBECC, 0xD3BD,
+ /* U+5490 */ 0xB8C0, 0x85F6, 0xD6E4, 0x85F7, 0xDFC7, 0xB9BE, 0xBFA7, 0x85F8,
+ /* U+5498 */ 0x85F9, 0xC1FC, 0xDFCB, 0xDFCC, 0x85FA, 0xDFD0, 0x85FB, 0x85FC,
+ /* U+54A0 */ 0x85FD, 0x85FE, 0x8640, 0xDFDB, 0xDFE5, 0x8641, 0xDFD7, 0xDFD6,
+ /* U+54A8 */ 0xD7C9, 0xDFE3, 0xDFE4, 0xE5EB, 0xD2A7, 0xDFD2, 0x8642, 0xBFA9,
+ /* U+54B0 */ 0x8643, 0xD4DB, 0x8644, 0xBFC8, 0xDFD4, 0x8645, 0x8646, 0x8647,
+ /* U+54B8 */ 0xCFCC, 0x8648, 0x8649, 0xDFDD, 0x864A, 0xD1CA, 0x864B, 0xDFDE,
+ /* U+54C0 */ 0xB0A7, 0xC6B7, 0xDFD3, 0x864C, 0xBAE5, 0x864D, 0xB6DF, 0xCDDB,
+ /* U+54C8 */ 0xB9FE, 0xD4D5, 0x864E, 0x864F, 0xDFDF, 0xCFEC, 0xB0A5, 0xDFE7,
+ /* U+54D0 */ 0xDFD1, 0xD1C6, 0xDFD5, 0xDFD8, 0xDFD9, 0xDFDC, 0x8650, 0xBBA9,
+ /* U+54D8 */ 0x8651, 0xDFE0, 0xDFE1, 0x8652, 0xDFE2, 0xDFE6, 0xDFE8, 0xD3B4,
+ /* U+54E0 */ 0x8653, 0x8654, 0x8655, 0x8656, 0x8657, 0xB8E7, 0xC5B6, 0xDFEA,
+ /* U+54E8 */ 0xC9DA, 0xC1A8, 0xC4C4, 0x8658, 0x8659, 0xBFDE, 0xCFF8, 0x865A,
+ /* U+54F0 */ 0x865B, 0x865C, 0xD5DC, 0xDFEE, 0x865D, 0x865E, 0x865F, 0x8660,
+ /* U+54F8 */ 0x8661, 0x8662, 0xB2B8, 0x8663, 0xBADF, 0xDFEC, 0x8664, 0xDBC1,
+ /* U+5500 */ 0x8665, 0xD1E4, 0x8666, 0x8667, 0x8668, 0x8669, 0xCBF4, 0xB4BD,
+ /* U+5508 */ 0x866A, 0xB0A6, 0x866B, 0x866C, 0x866D, 0x866E, 0x866F, 0xDFF1,
+ /* U+5510 */ 0xCCC6, 0xDFF2, 0x8670, 0x8671, 0xDFED, 0x8672, 0x8673, 0x8674,
+ /* U+5518 */ 0x8675, 0x8676, 0x8677, 0xDFE9, 0x8678, 0x8679, 0x867A, 0x867B,
+ /* U+5520 */ 0xDFEB, 0x867C, 0xDFEF, 0xDFF0, 0xBBBD, 0x867D, 0x867E, 0xDFF3,
+ /* U+5528 */ 0x8680, 0x8681, 0xDFF4, 0x8682, 0xBBA3, 0x8683, 0xCADB, 0xCEA8,
+ /* U+5530 */ 0xE0A7, 0xB3AA, 0x8684, 0xE0A6, 0x8685, 0x8686, 0x8687, 0xE0A1,
+ /* U+5538 */ 0x8688, 0x8689, 0x868A, 0x868B, 0xDFFE, 0x868C, 0xCDD9, 0xDFFC,
+ /* U+5540 */ 0x868D, 0xDFFA, 0x868E, 0xBFD0, 0xD7C4, 0x868F, 0xC9CC, 0x8690,
+ /* U+5548 */ 0x8691, 0xDFF8, 0xB0A1, 0x8692, 0x8693, 0x8694, 0x8695, 0x8696,
+ /* U+5550 */ 0xDFFD, 0x8697, 0x8698, 0x8699, 0x869A, 0xDFFB, 0xE0A2, 0x869B,
+ /* U+5558 */ 0x869C, 0x869D, 0x869E, 0x869F, 0xE0A8, 0x86A0, 0x86A1, 0x86A2,
+ /* U+5560 */ 0x86A3, 0xB7C8, 0x86A4, 0x86A5, 0xC6A1, 0xC9B6, 0xC0B2, 0xDFF5,
+ /* U+5568 */ 0x86A6, 0x86A7, 0xC5BE, 0x86A8, 0xD8C4, 0xDFF9, 0xC4F6, 0x86A9,
+ /* U+5570 */ 0x86AA, 0x86AB, 0x86AC, 0x86AD, 0x86AE, 0xE0A3, 0xE0A4, 0xE0A5,
+ /* U+5578 */ 0xD0A5, 0x86AF, 0x86B0, 0xE0B4, 0xCCE4, 0x86B1, 0xE0B1, 0x86B2,
+ /* U+5580 */ 0xBFA6, 0xE0AF, 0xCEB9, 0xE0AB, 0xC9C6, 0x86B3, 0x86B4, 0xC0AE,
+ /* U+5588 */ 0xE0AE, 0xBAED, 0xBAB0, 0xE0A9, 0x86B5, 0x86B6, 0x86B7, 0xDFF6,
+ /* U+5590 */ 0x86B8, 0xE0B3, 0x86B9, 0x86BA, 0xE0B8, 0x86BB, 0x86BC, 0x86BD,
+ /* U+5598 */ 0xB4AD, 0xE0B9, 0x86BE, 0x86BF, 0xCFB2, 0xBAC8, 0x86C0, 0xE0B0,
+ /* U+55A0 */ 0x86C1, 0x86C2, 0x86C3, 0x86C4, 0x86C5, 0x86C6, 0x86C7, 0xD0FA,
+ /* U+55A8 */ 0x86C8, 0x86C9, 0x86CA, 0x86CB, 0x86CC, 0x86CD, 0x86CE, 0x86CF,
+ /* U+55B0 */ 0x86D0, 0xE0AC, 0x86D1, 0xD4FB, 0x86D2, 0xDFF7, 0x86D3, 0xC5E7,
+ /* U+55B8 */ 0x86D4, 0xE0AD, 0x86D5, 0xD3F7, 0x86D6, 0xE0B6, 0xE0B7, 0x86D7,
+ /* U+55C0 */ 0x86D8, 0x86D9, 0x86DA, 0x86DB, 0xE0C4, 0xD0E1, 0x86DC, 0x86DD,
+ /* U+55C8 */ 0x86DE, 0xE0BC, 0x86DF, 0x86E0, 0xE0C9, 0xE0CA, 0x86E1, 0x86E2,
+ /* U+55D0 */ 0x86E3, 0xE0BE, 0xE0AA, 0xC9A4, 0xE0C1, 0x86E4, 0xE0B2, 0x86E5,
+ /* U+55D8 */ 0x86E6, 0x86E7, 0x86E8, 0x86E9, 0xCAC8, 0xE0C3, 0x86EA, 0xE0B5,
+ /* U+55E0 */ 0x86EB, 0xCECB, 0x86EC, 0xCBC3, 0xE0CD, 0xE0C6, 0xE0C2, 0x86ED,
+ /* U+55E8 */ 0xE0CB, 0x86EE, 0xE0BA, 0xE0BF, 0xE0C0, 0x86EF, 0x86F0, 0xE0C5,
+ /* U+55F0 */ 0x86F1, 0x86F2, 0xE0C7, 0xE0C8, 0x86F3, 0xE0CC, 0x86F4, 0xE0BB,
+ /* U+55F8 */ 0x86F5, 0x86F6, 0x86F7, 0x86F8, 0x86F9, 0xCBD4, 0xE0D5, 0x86FA,
+ /* U+5600 */ 0xE0D6, 0xE0D2, 0x86FB, 0x86FC, 0x86FD, 0x86FE, 0x8740, 0x8741,
+ /* U+5608 */ 0xE0D0, 0xBCCE, 0x8742, 0x8743, 0xE0D1, 0x8744, 0xB8C2, 0xD8C5,
+ /* U+5610 */ 0x8745, 0x8746, 0x8747, 0x8748, 0x8749, 0x874A, 0x874B, 0x874C,
+ /* U+5618 */ 0xD0EA, 0x874D, 0x874E, 0xC2EF, 0x874F, 0x8750, 0xE0CF, 0xE0BD,
+ /* U+5620 */ 0x8751, 0x8752, 0x8753, 0xE0D4, 0xE0D3, 0x8754, 0x8755, 0xE0D7,
+ /* U+5628 */ 0x8756, 0x8757, 0x8758, 0x8759, 0xE0DC, 0xE0D8, 0x875A, 0x875B,
+ /* U+5630 */ 0x875C, 0xD6F6, 0xB3B0, 0x875D, 0xD7EC, 0x875E, 0xCBBB, 0x875F,
+ /* U+5638 */ 0x8760, 0xE0DA, 0x8761, 0xCEFB, 0x8762, 0x8763, 0x8764, 0xBAD9,
+ /* U+5640 */ 0x8765, 0x8766, 0x8767, 0x8768, 0x8769, 0x876A, 0x876B, 0x876C,
+ /* U+5648 */ 0x876D, 0x876E, 0x876F, 0x8770, 0xE0E1, 0xE0DD, 0xD2AD, 0x8771,
+ /* U+5650 */ 0x8772, 0x8773, 0x8774, 0x8775, 0xE0E2, 0x8776, 0x8777, 0xE0DB,
+ /* U+5658 */ 0xE0D9, 0xE0DF, 0x8778, 0x8779, 0xE0E0, 0x877A, 0x877B, 0x877C,
+ /* U+5660 */ 0x877D, 0x877E, 0xE0DE, 0x8780, 0xE0E4, 0x8781, 0x8782, 0x8783,
+ /* U+5668 */ 0xC6F7, 0xD8AC, 0xD4EB, 0xE0E6, 0xCAC9, 0x8784, 0x8785, 0x8786,
+ /* U+5670 */ 0x8787, 0xE0E5, 0x8788, 0x8789, 0x878A, 0x878B, 0xB8C1, 0x878C,
+ /* U+5678 */ 0x878D, 0x878E, 0x878F, 0xE0E7, 0xE0E8, 0x8790, 0x8791, 0x8792,
+ /* U+5680 */ 0x8793, 0x8794, 0x8795, 0x8796, 0x8797, 0xE0E9, 0xE0E3, 0x8798,
+ /* U+5688 */ 0x8799, 0x879A, 0x879B, 0x879C, 0x879D, 0x879E, 0xBABF, 0xCCE7,
+ /* U+5690 */ 0x879F, 0x87A0, 0x87A1, 0xE0EA, 0x87A2, 0x87A3, 0x87A4, 0x87A5,
+ /* U+5698 */ 0x87A6, 0x87A7, 0x87A8, 0x87A9, 0x87AA, 0x87AB, 0x87AC, 0x87AD,
+ /* U+56A0 */ 0x87AE, 0x87AF, 0x87B0, 0xCFF9, 0x87B1, 0x87B2, 0x87B3, 0x87B4,
+ /* U+56A8 */ 0x87B5, 0x87B6, 0x87B7, 0x87B8, 0x87B9, 0x87BA, 0x87BB, 0xE0EB,
+ /* U+56B0 */ 0x87BC, 0x87BD, 0x87BE, 0x87BF, 0x87C0, 0x87C1, 0x87C2, 0xC8C2,
+ /* U+56B8 */ 0x87C3, 0x87C4, 0x87C5, 0x87C6, 0xBDC0, 0x87C7, 0x87C8, 0x87C9,
+ /* U+56C0 */ 0x87CA, 0x87CB, 0x87CC, 0x87CD, 0x87CE, 0x87CF, 0x87D0, 0x87D1,
+ /* U+56C8 */ 0x87D2, 0x87D3, 0xC4D2, 0x87D4, 0x87D5, 0x87D6, 0x87D7, 0x87D8,
+ /* U+56D0 */ 0x87D9, 0x87DA, 0x87DB, 0x87DC, 0xE0EC, 0x87DD, 0x87DE, 0xE0ED,
+ /* U+56D8 */ 0x87DF, 0x87E0, 0xC7F4, 0xCBC4, 0x87E1, 0xE0EE, 0xBBD8, 0xD8B6,
+ /* U+56E0 */ 0xD2F2, 0xE0EF, 0xCDC5, 0x87E2, 0xB6DA, 0x87E3, 0x87E4, 0x87E5,
+ /* U+56E8 */ 0x87E6, 0x87E7, 0x87E8, 0xE0F1, 0x87E9, 0xD4B0, 0x87EA, 0x87EB,
+ /* U+56F0 */ 0xC0A7, 0xB4D1, 0x87EC, 0x87ED, 0xCEA7, 0xE0F0, 0x87EE, 0x87EF,
+ /* U+56F8 */ 0x87F0, 0xE0F2, 0xB9CC, 0x87F1, 0x87F2, 0xB9FA, 0xCDBC, 0xE0F3,
+ /* U+5700 */ 0x87F3, 0x87F4, 0x87F5, 0xC6D4, 0xE0F4, 0x87F6, 0xD4B2, 0x87F7,
+ /* U+5708 */ 0xC8A6, 0xE0F6, 0xE0F5, 0x87F8, 0x87F9, 0x87FA, 0x87FB, 0x87FC,
+ /* U+5710 */ 0x87FD, 0x87FE, 0x8840, 0x8841, 0x8842, 0x8843, 0x8844, 0x8845,
+ /* U+5718 */ 0x8846, 0x8847, 0x8848, 0x8849, 0xE0F7, 0x884A, 0x884B, 0xCDC1,
+ /* U+5720 */ 0x884C, 0x884D, 0x884E, 0xCAA5, 0x884F, 0x8850, 0x8851, 0x8852,
+ /* U+5728 */ 0xD4DA, 0xDBD7, 0xDBD9, 0x8853, 0xDBD8, 0xB9E7, 0xDBDC, 0xDBDD,
+ /* U+5730 */ 0xB5D8, 0x8854, 0x8855, 0xDBDA, 0x8856, 0x8857, 0x8858, 0x8859,
+ /* U+5738 */ 0x885A, 0xDBDB, 0xB3A1, 0xDBDF, 0x885B, 0x885C, 0xBBF8, 0x885D,
+ /* U+5740 */ 0xD6B7, 0x885E, 0xDBE0, 0x885F, 0x8860, 0x8861, 0x8862, 0xBEF9,
+ /* U+5748 */ 0x8863, 0x8864, 0xB7BB, 0x8865, 0xDBD0, 0xCCAE, 0xBFB2, 0xBBB5,
+ /* U+5750 */ 0xD7F8, 0xBFD3, 0x8866, 0x8867, 0x8868, 0x8869, 0x886A, 0xBFE9,
+ /* U+5758 */ 0x886B, 0x886C, 0xBCE1, 0xCCB3, 0xDBDE, 0xB0D3, 0xCEEB, 0xB7D8,
+ /* U+5760 */ 0xD7B9, 0xC6C2, 0x886D, 0x886E, 0xC0A4, 0x886F, 0xCCB9, 0x8870,
+ /* U+5768 */ 0xDBE7, 0xDBE1, 0xC6BA, 0xDBE3, 0x8871, 0xDBE8, 0x8872, 0xC5F7,
+ /* U+5770 */ 0x8873, 0x8874, 0x8875, 0xDBEA, 0x8876, 0x8877, 0xDBE9, 0xBFC0,
+ /* U+5778 */ 0x8878, 0x8879, 0x887A, 0xDBE6, 0xDBE5, 0x887B, 0x887C, 0x887D,
+ /* U+5780 */ 0x887E, 0x8880, 0xB4B9, 0xC0AC, 0xC2A2, 0xDBE2, 0xDBE4, 0x8881,
+ /* U+5788 */ 0x8882, 0x8883, 0x8884, 0xD0CD, 0xDBED, 0x8885, 0x8886, 0x8887,
+ /* U+5790 */ 0x8888, 0x8889, 0xC0DD, 0xDBF2, 0x888A, 0x888B, 0x888C, 0x888D,
+ /* U+5798 */ 0x888E, 0x888F, 0x8890, 0xB6E2, 0x8891, 0x8892, 0x8893, 0x8894,
+ /* U+57A0 */ 0xDBF3, 0xDBD2, 0xB9B8, 0xD4AB, 0xDBEC, 0x8895, 0xBFD1, 0xDBF0,
+ /* U+57A8 */ 0x8896, 0xDBD1, 0x8897, 0xB5E6, 0x8898, 0xDBEB, 0xBFE5, 0x8899,
+ /* U+57B0 */ 0x889A, 0x889B, 0xDBEE, 0x889C, 0xDBF1, 0x889D, 0x889E, 0x889F,
+ /* U+57B8 */ 0xDBF9, 0x88A0, 0x88A1, 0x88A2, 0x88A3, 0x88A4, 0x88A5, 0x88A6,
+ /* U+57C0 */ 0x88A7, 0x88A8, 0xB9A1, 0xB0A3, 0x88A9, 0x88AA, 0x88AB, 0x88AC,
+ /* U+57C8 */ 0x88AD, 0x88AE, 0x88AF, 0xC2F1, 0x88B0, 0x88B1, 0xB3C7, 0xDBEF,
+ /* U+57D0 */ 0x88B2, 0x88B3, 0xDBF8, 0x88B4, 0xC6D2, 0xDBF4, 0x88B5, 0x88B6,
+ /* U+57D8 */ 0xDBF5, 0xDBF7, 0xDBF6, 0x88B7, 0x88B8, 0xDBFE, 0x88B9, 0xD3F2,
+ /* U+57E0 */ 0xB2BA, 0x88BA, 0x88BB, 0x88BC, 0xDBFD, 0x88BD, 0x88BE, 0x88BF,
+ /* U+57E8 */ 0x88C0, 0x88C1, 0x88C2, 0x88C3, 0x88C4, 0xDCA4, 0x88C5, 0xDBFB,
+ /* U+57F0 */ 0x88C6, 0x88C7, 0x88C8, 0x88C9, 0xDBFA, 0x88CA, 0x88CB, 0x88CC,
+ /* U+57F8 */ 0xDBFC, 0xC5E0, 0xBBF9, 0x88CD, 0x88CE, 0xDCA3, 0x88CF, 0x88D0,
+ /* U+5800 */ 0xDCA5, 0x88D1, 0xCCC3, 0x88D2, 0x88D3, 0x88D4, 0xB6D1, 0xDDC0,
+ /* U+5808 */ 0x88D5, 0x88D6, 0x88D7, 0xDCA1, 0x88D8, 0xDCA2, 0x88D9, 0x88DA,
+ /* U+5810 */ 0x88DB, 0xC7B5, 0x88DC, 0x88DD, 0x88DE, 0xB6E9, 0x88DF, 0x88E0,
+ /* U+5818 */ 0x88E1, 0xDCA7, 0x88E2, 0x88E3, 0x88E4, 0x88E5, 0xDCA6, 0x88E6,
+ /* U+5820 */ 0xDCA9, 0xB1A4, 0x88E7, 0x88E8, 0xB5CC, 0x88E9, 0x88EA, 0x88EB,
+ /* U+5828 */ 0x88EC, 0x88ED, 0xBFB0, 0x88EE, 0x88EF, 0x88F0, 0x88F1, 0x88F2,
+ /* U+5830 */ 0xD1DF, 0x88F3, 0x88F4, 0x88F5, 0x88F6, 0xB6C2, 0x88F7, 0x88F8,
+ /* U+5838 */ 0x88F9, 0x88FA, 0x88FB, 0x88FC, 0x88FD, 0x88FE, 0x8940, 0x8941,
+ /* U+5840 */ 0x8942, 0x8943, 0x8944, 0x8945, 0xDCA8, 0x8946, 0x8947, 0x8948,
+ /* U+5848 */ 0x8949, 0x894A, 0x894B, 0x894C, 0xCBFA, 0xEBF3, 0x894D, 0x894E,
+ /* U+5850 */ 0x894F, 0xCBDC, 0x8950, 0x8951, 0xCBFE, 0x8952, 0x8953, 0x8954,
+ /* U+5858 */ 0xCCC1, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, 0xC8FB, 0x895A,
+ /* U+5860 */ 0x895B, 0x895C, 0x895D, 0x895E, 0x895F, 0xDCAA, 0x8960, 0x8961,
+ /* U+5868 */ 0x8962, 0x8963, 0x8964, 0xCCEE, 0xDCAB, 0x8965, 0x8966, 0x8967,
+ /* U+5870 */ 0x8968, 0x8969, 0x896A, 0x896B, 0x896C, 0x896D, 0x896E, 0x896F,
+ /* U+5878 */ 0x8970, 0x8971, 0x8972, 0x8973, 0x8974, 0x8975, 0xDBD3, 0x8976,
+ /* U+5880 */ 0xDCAF, 0xDCAC, 0x8977, 0xBEB3, 0x8978, 0xCAFB, 0x8979, 0x897A,
+ /* U+5888 */ 0x897B, 0xDCAD, 0x897C, 0x897D, 0x897E, 0x8980, 0x8981, 0x8982,
+ /* U+5890 */ 0x8983, 0x8984, 0xC9CA, 0xC4B9, 0x8985, 0x8986, 0x8987, 0x8988,
+ /* U+5898 */ 0x8989, 0xC7BD, 0xDCAE, 0x898A, 0x898B, 0x898C, 0xD4F6, 0xD0E6,
+ /* U+58A0 */ 0x898D, 0x898E, 0x898F, 0x8990, 0x8991, 0x8992, 0x8993, 0x8994,
+ /* U+58A8 */ 0xC4AB, 0xB6D5, 0x8995, 0x8996, 0x8997, 0x8998, 0x8999, 0x899A,
+ /* U+58B0 */ 0x899B, 0x899C, 0x899D, 0x899E, 0x899F, 0x89A0, 0x89A1, 0x89A2,
+ /* U+58B8 */ 0x89A3, 0x89A4, 0x89A5, 0x89A6, 0xDBD4, 0x89A7, 0x89A8, 0x89A9,
+ /* U+58C0 */ 0x89AA, 0xB1DA, 0x89AB, 0x89AC, 0x89AD, 0xDBD5, 0x89AE, 0x89AF,
+ /* U+58C8 */ 0x89B0, 0x89B1, 0x89B2, 0x89B3, 0x89B4, 0x89B5, 0x89B6, 0x89B7,
+ /* U+58D0 */ 0x89B8, 0xDBD6, 0x89B9, 0x89BA, 0x89BB, 0xBABE, 0x89BC, 0x89BD,
+ /* U+58D8 */ 0x89BE, 0x89BF, 0x89C0, 0x89C1, 0x89C2, 0x89C3, 0x89C4, 0x89C5,
+ /* U+58E0 */ 0x89C6, 0x89C7, 0x89C8, 0x89C9, 0xC8C0, 0x89CA, 0x89CB, 0x89CC,
+ /* U+58E8 */ 0x89CD, 0x89CE, 0x89CF, 0xCABF, 0xC8C9, 0x89D0, 0xD7B3, 0x89D1,
+ /* U+58F0 */ 0xC9F9, 0x89D2, 0x89D3, 0xBFC7, 0x89D4, 0x89D5, 0xBAF8, 0x89D6,
+ /* U+58F8 */ 0x89D7, 0xD2BC, 0x89D8, 0x89D9, 0x89DA, 0x89DB, 0x89DC, 0x89DD,
+ /* U+5900 */ 0x89DE, 0x89DF, 0xE2BA, 0x89E0, 0xB4A6, 0x89E1, 0x89E2, 0xB1B8,
+ /* U+5908 */ 0x89E3, 0x89E4, 0x89E5, 0x89E6, 0x89E7, 0xB8B4, 0x89E8, 0xCFC4,
+ /* U+5910 */ 0x89E9, 0x89EA, 0x89EB, 0x89EC, 0xD9E7, 0xCFA6, 0xCDE2, 0x89ED,
+ /* U+5918 */ 0x89EE, 0xD9ED, 0xB6E0, 0x89EF, 0xD2B9, 0x89F0, 0x89F1, 0xB9BB,
+ /* U+5920 */ 0x89F2, 0x89F3, 0x89F4, 0x89F5, 0xE2B9, 0xE2B7, 0x89F6, 0xB4F3,
+ /* U+5928 */ 0x89F7, 0xCCEC, 0xCCAB, 0xB7F2, 0x89F8, 0xD8B2, 0xD1EB, 0xBABB,
+ /* U+5930 */ 0x89F9, 0xCAA7, 0x89FA, 0x89FB, 0xCDB7, 0x89FC, 0x89FD, 0xD2C4,
+ /* U+5938 */ 0xBFE4, 0xBCD0, 0xB6E1, 0x89FE, 0xDEC5, 0x8A40, 0x8A41, 0x8A42,
+ /* U+5940 */ 0x8A43, 0xDEC6, 0xDBBC, 0x8A44, 0xD1D9, 0x8A45, 0x8A46, 0xC6E6,
+ /* U+5948 */ 0xC4CE, 0xB7EE, 0x8A47, 0xB7DC, 0x8A48, 0x8A49, 0xBFFC, 0xD7E0,
+ /* U+5950 */ 0x8A4A, 0xC6F5, 0x8A4B, 0x8A4C, 0xB1BC, 0xDEC8, 0xBDB1, 0xCCD7,
+ /* U+5958 */ 0xDECA, 0x8A4D, 0xDEC9, 0x8A4E, 0x8A4F, 0x8A50, 0x8A51, 0x8A52,
+ /* U+5960 */ 0xB5EC, 0x8A53, 0xC9DD, 0x8A54, 0x8A55, 0xB0C2, 0x8A56, 0x8A57,
+ /* U+5968 */ 0x8A58, 0x8A59, 0x8A5A, 0x8A5B, 0x8A5C, 0x8A5D, 0x8A5E, 0x8A5F,
+ /* U+5970 */ 0x8A60, 0x8A61, 0x8A62, 0xC5AE, 0xC5AB, 0x8A63, 0xC4CC, 0x8A64,
+ /* U+5978 */ 0xBCE9, 0xCBFD, 0x8A65, 0x8A66, 0x8A67, 0xBAC3, 0x8A68, 0x8A69,
+ /* U+5980 */ 0x8A6A, 0xE5F9, 0xC8E7, 0xE5FA, 0xCDFD, 0x8A6B, 0xD7B1, 0xB8BE,
+ /* U+5988 */ 0xC2E8, 0x8A6C, 0xC8D1, 0x8A6D, 0x8A6E, 0xE5FB, 0x8A6F, 0x8A70,
+ /* U+5990 */ 0x8A71, 0x8A72, 0xB6CA, 0xBCCB, 0x8A73, 0x8A74, 0xD1FD, 0xE6A1,
+ /* U+5998 */ 0x8A75, 0xC3EE, 0x8A76, 0x8A77, 0x8A78, 0x8A79, 0xE6A4, 0x8A7A,
+ /* U+59A0 */ 0x8A7B, 0x8A7C, 0x8A7D, 0xE5FE, 0xE6A5, 0xCDD7, 0x8A7E, 0x8A80,
+ /* U+59A8 */ 0xB7C1, 0xE5FC, 0xE5FD, 0xE6A3, 0x8A81, 0x8A82, 0xC4DD, 0xE6A8,
+ /* U+59B0 */ 0x8A83, 0x8A84, 0xE6A7, 0x8A85, 0x8A86, 0x8A87, 0x8A88, 0x8A89,
+ /* U+59B8 */ 0x8A8A, 0xC3C3, 0x8A8B, 0xC6DE, 0x8A8C, 0x8A8D, 0xE6AA, 0x8A8E,
+ /* U+59C0 */ 0x8A8F, 0x8A90, 0x8A91, 0x8A92, 0x8A93, 0x8A94, 0xC4B7, 0x8A95,
+ /* U+59C8 */ 0x8A96, 0x8A97, 0xE6A2, 0xCABC, 0x8A98, 0x8A99, 0x8A9A, 0x8A9B,
+ /* U+59D0 */ 0xBDE3, 0xB9C3, 0xE6A6, 0xD0D5, 0xCEAF, 0x8A9C, 0x8A9D, 0xE6A9,
+ /* U+59D8 */ 0xE6B0, 0x8A9E, 0xD2A6, 0x8A9F, 0xBDAA, 0xE6AD, 0x8AA0, 0x8AA1,
+ /* U+59E0 */ 0x8AA2, 0x8AA3, 0x8AA4, 0xE6AF, 0x8AA5, 0xC0D1, 0x8AA6, 0x8AA7,
+ /* U+59E8 */ 0xD2CC, 0x8AA8, 0x8AA9, 0x8AAA, 0xBCA7, 0x8AAB, 0x8AAC, 0x8AAD,
+ /* U+59F0 */ 0x8AAE, 0x8AAF, 0x8AB0, 0x8AB1, 0x8AB2, 0x8AB3, 0x8AB4, 0x8AB5,
+ /* U+59F8 */ 0x8AB6, 0xE6B1, 0x8AB7, 0xD2F6, 0x8AB8, 0x8AB9, 0x8ABA, 0xD7CB,
+ /* U+5A00 */ 0x8ABB, 0xCDFE, 0x8ABC, 0xCDDE, 0xC2A6, 0xE6AB, 0xE6AC, 0xBDBF,
+ /* U+5A08 */ 0xE6AE, 0xE6B3, 0x8ABD, 0x8ABE, 0xE6B2, 0x8ABF, 0x8AC0, 0x8AC1,
+ /* U+5A10 */ 0x8AC2, 0xE6B6, 0x8AC3, 0xE6B8, 0x8AC4, 0x8AC5, 0x8AC6, 0x8AC7,
+ /* U+5A18 */ 0xC4EF, 0x8AC8, 0x8AC9, 0x8ACA, 0xC4C8, 0x8ACB, 0x8ACC, 0xBEEA,
+ /* U+5A20 */ 0xC9EF, 0x8ACD, 0x8ACE, 0xE6B7, 0x8ACF, 0xB6F0, 0x8AD0, 0x8AD1,
+ /* U+5A28 */ 0x8AD2, 0xC3E4, 0x8AD3, 0x8AD4, 0x8AD5, 0x8AD6, 0x8AD7, 0x8AD8,
+ /* U+5A30 */ 0x8AD9, 0xD3E9, 0xE6B4, 0x8ADA, 0xE6B5, 0x8ADB, 0xC8A2, 0x8ADC,
+ /* U+5A38 */ 0x8ADD, 0x8ADE, 0x8ADF, 0x8AE0, 0xE6BD, 0x8AE1, 0x8AE2, 0x8AE3,
+ /* U+5A40 */ 0xE6B9, 0x8AE4, 0x8AE5, 0x8AE6, 0x8AE7, 0x8AE8, 0xC6C5, 0x8AE9,
+ /* U+5A48 */ 0x8AEA, 0xCDF1, 0xE6BB, 0x8AEB, 0x8AEC, 0x8AED, 0x8AEE, 0x8AEF,
+ /* U+5A50 */ 0x8AF0, 0x8AF1, 0x8AF2, 0x8AF3, 0x8AF4, 0xE6BC, 0x8AF5, 0x8AF6,
+ /* U+5A58 */ 0x8AF7, 0x8AF8, 0xBBE9, 0x8AF9, 0x8AFA, 0x8AFB, 0x8AFC, 0x8AFD,
+ /* U+5A60 */ 0x8AFE, 0x8B40, 0xE6BE, 0x8B41, 0x8B42, 0x8B43, 0x8B44, 0xE6BA,
+ /* U+5A68 */ 0x8B45, 0x8B46, 0xC0B7, 0x8B47, 0x8B48, 0x8B49, 0x8B4A, 0x8B4B,
+ /* U+5A70 */ 0x8B4C, 0x8B4D, 0x8B4E, 0x8B4F, 0xD3A4, 0xE6BF, 0xC9F4, 0xE6C3,
+ /* U+5A78 */ 0x8B50, 0x8B51, 0xE6C4, 0x8B52, 0x8B53, 0x8B54, 0x8B55, 0xD0F6,
+ /* U+5A80 */ 0x8B56, 0x8B57, 0x8B58, 0x8B59, 0x8B5A, 0x8B5B, 0x8B5C, 0x8B5D,
+ /* U+5A88 */ 0x8B5E, 0x8B5F, 0x8B60, 0x8B61, 0x8B62, 0x8B63, 0x8B64, 0x8B65,
+ /* U+5A90 */ 0x8B66, 0x8B67, 0xC3BD, 0x8B68, 0x8B69, 0x8B6A, 0x8B6B, 0x8B6C,
+ /* U+5A98 */ 0x8B6D, 0x8B6E, 0xC3C4, 0xE6C2, 0x8B6F, 0x8B70, 0x8B71, 0x8B72,
+ /* U+5AA0 */ 0x8B73, 0x8B74, 0x8B75, 0x8B76, 0x8B77, 0x8B78, 0x8B79, 0x8B7A,
+ /* U+5AA8 */ 0x8B7B, 0x8B7C, 0xE6C1, 0x8B7D, 0x8B7E, 0x8B80, 0x8B81, 0x8B82,
+ /* U+5AB0 */ 0x8B83, 0x8B84, 0xE6C7, 0xCFB1, 0x8B85, 0xEBF4, 0x8B86, 0x8B87,
+ /* U+5AB8 */ 0xE6CA, 0x8B88, 0x8B89, 0x8B8A, 0x8B8B, 0x8B8C, 0xE6C5, 0x8B8D,
+ /* U+5AC0 */ 0x8B8E, 0xBCDE, 0xC9A9, 0x8B8F, 0x8B90, 0x8B91, 0x8B92, 0x8B93,
+ /* U+5AC8 */ 0x8B94, 0xBCB5, 0x8B95, 0x8B96, 0xCFD3, 0x8B97, 0x8B98, 0x8B99,
+ /* U+5AD0 */ 0x8B9A, 0x8B9B, 0xE6C8, 0x8B9C, 0xE6C9, 0x8B9D, 0xE6CE, 0x8B9E,
+ /* U+5AD8 */ 0xE6D0, 0x8B9F, 0x8BA0, 0x8BA1, 0xE6D1, 0x8BA2, 0x8BA3, 0x8BA4,
+ /* U+5AE0 */ 0xE6CB, 0xB5D5, 0x8BA5, 0xE6CC, 0x8BA6, 0x8BA7, 0xE6CF, 0x8BA8,
+ /* U+5AE8 */ 0x8BA9, 0xC4DB, 0x8BAA, 0xE6C6, 0x8BAB, 0x8BAC, 0x8BAD, 0x8BAE,
+ /* U+5AF0 */ 0x8BAF, 0xE6CD, 0x8BB0, 0x8BB1, 0x8BB2, 0x8BB3, 0x8BB4, 0x8BB5,
+ /* U+5AF8 */ 0x8BB6, 0x8BB7, 0x8BB8, 0x8BB9, 0x8BBA, 0x8BBB, 0x8BBC, 0x8BBD,
+ /* U+5B00 */ 0x8BBE, 0x8BBF, 0x8BC0, 0x8BC1, 0x8BC2, 0x8BC3, 0x8BC4, 0x8BC5,
+ /* U+5B08 */ 0x8BC6, 0xE6D2, 0x8BC7, 0x8BC8, 0x8BC9, 0x8BCA, 0x8BCB, 0x8BCC,
+ /* U+5B10 */ 0x8BCD, 0x8BCE, 0x8BCF, 0x8BD0, 0x8BD1, 0x8BD2, 0xE6D4, 0xE6D3,
+ /* U+5B18 */ 0x8BD3, 0x8BD4, 0x8BD5, 0x8BD6, 0x8BD7, 0x8BD8, 0x8BD9, 0x8BDA,
+ /* U+5B20 */ 0x8BDB, 0x8BDC, 0x8BDD, 0x8BDE, 0x8BDF, 0x8BE0, 0x8BE1, 0x8BE2,
+ /* U+5B28 */ 0x8BE3, 0x8BE4, 0x8BE5, 0x8BE6, 0x8BE7, 0x8BE8, 0x8BE9, 0x8BEA,
+ /* U+5B30 */ 0x8BEB, 0x8BEC, 0xE6D5, 0x8BED, 0xD9F8, 0x8BEE, 0x8BEF, 0xE6D6,
+ /* U+5B38 */ 0x8BF0, 0x8BF1, 0x8BF2, 0x8BF3, 0x8BF4, 0x8BF5, 0x8BF6, 0x8BF7,
+ /* U+5B40 */ 0xE6D7, 0x8BF8, 0x8BF9, 0x8BFA, 0x8BFB, 0x8BFC, 0x8BFD, 0x8BFE,
+ /* U+5B48 */ 0x8C40, 0x8C41, 0x8C42, 0x8C43, 0x8C44, 0x8C45, 0x8C46, 0x8C47,
+ /* U+5B50 */ 0xD7D3, 0xE6DD, 0x8C48, 0xE6DE, 0xBFD7, 0xD4D0, 0x8C49, 0xD7D6,
+ /* U+5B58 */ 0xB4E6, 0xCBEF, 0xE6DA, 0xD8C3, 0xD7CE, 0xD0A2, 0x8C4A, 0xC3CF,
+ /* U+5B60 */ 0x8C4B, 0x8C4C, 0xE6DF, 0xBCBE, 0xB9C2, 0xE6DB, 0xD1A7, 0x8C4D,
+ /* U+5B68 */ 0x8C4E, 0xBAA2, 0xC2CF, 0x8C4F, 0xD8AB, 0x8C50, 0x8C51, 0x8C52,
+ /* U+5B70 */ 0xCAEB, 0xE5EE, 0x8C53, 0xE6DC, 0x8C54, 0xB7F5, 0x8C55, 0x8C56,
+ /* U+5B78 */ 0x8C57, 0x8C58, 0xC8E6, 0x8C59, 0x8C5A, 0xC4F5, 0x8C5B, 0x8C5C,
+ /* U+5B80 */ 0xE5B2, 0xC4FE, 0x8C5D, 0xCBFC, 0xE5B3, 0xD5AC, 0x8C5E, 0xD3EE,
+ /* U+5B88 */ 0xCAD8, 0xB0B2, 0x8C5F, 0xCBCE, 0xCDEA, 0x8C60, 0x8C61, 0xBAEA,
+ /* U+5B90 */ 0x8C62, 0x8C63, 0x8C64, 0xE5B5, 0x8C65, 0xE5B4, 0x8C66, 0xD7DA,
+ /* U+5B98 */ 0xB9D9, 0xD6E6, 0xB6A8, 0xCDF0, 0xD2CB, 0xB1A6, 0xCAB5, 0x8C67,
+ /* U+5BA0 */ 0xB3E8, 0xC9F3, 0xBFCD, 0xD0FB, 0xCAD2, 0xE5B6, 0xBBC2, 0x8C68,
+ /* U+5BA8 */ 0x8C69, 0x8C6A, 0xCFDC, 0xB9AC, 0x8C6B, 0x8C6C, 0x8C6D, 0x8C6E,
+ /* U+5BB0 */ 0xD4D7, 0x8C6F, 0x8C70, 0xBAA6, 0xD1E7, 0xCFFC, 0xBCD2, 0x8C71,
+ /* U+5BB8 */ 0xE5B7, 0xC8DD, 0x8C72, 0x8C73, 0x8C74, 0xBFED, 0xB1F6, 0xCBDE,
+ /* U+5BC0 */ 0x8C75, 0x8C76, 0xBCC5, 0x8C77, 0xBCC4, 0xD2FA, 0xC3DC, 0xBFDC,
+ /* U+5BC8 */ 0x8C78, 0x8C79, 0x8C7A, 0x8C7B, 0xB8BB, 0x8C7C, 0x8C7D, 0x8C7E,
+ /* U+5BD0 */ 0xC3C2, 0x8C80, 0xBAAE, 0xD4A2, 0x8C81, 0x8C82, 0x8C83, 0x8C84,
+ /* U+5BD8 */ 0x8C85, 0x8C86, 0x8C87, 0x8C88, 0x8C89, 0xC7DE, 0xC4AF, 0xB2EC,
+ /* U+5BE0 */ 0x8C8A, 0xB9D1, 0x8C8B, 0x8C8C, 0xE5BB, 0xC1C8, 0x8C8D, 0x8C8E,
+ /* U+5BE8 */ 0xD5AF, 0x8C8F, 0x8C90, 0x8C91, 0x8C92, 0x8C93, 0xE5BC, 0x8C94,
+ /* U+5BF0 */ 0xE5BE, 0x8C95, 0x8C96, 0x8C97, 0x8C98, 0x8C99, 0x8C9A, 0x8C9B,
+ /* U+5BF8 */ 0xB4E7, 0xB6D4, 0xCBC2, 0xD1B0, 0xB5BC, 0x8C9C, 0x8C9D, 0xCAD9,
+ /* U+5C00 */ 0x8C9E, 0xB7E2, 0x8C9F, 0x8CA0, 0xC9E4, 0x8CA1, 0xBDAB, 0x8CA2,
+ /* U+5C08 */ 0x8CA3, 0xCEBE, 0xD7F0, 0x8CA4, 0x8CA5, 0x8CA6, 0x8CA7, 0xD0A1,
+ /* U+5C10 */ 0x8CA8, 0xC9D9, 0x8CA9, 0x8CAA, 0xB6FB, 0xE6D8, 0xBCE2, 0x8CAB,
+ /* U+5C18 */ 0xB3BE, 0x8CAC, 0xC9D0, 0x8CAD, 0xE6D9, 0xB3A2, 0x8CAE, 0x8CAF,
+ /* U+5C20 */ 0x8CB0, 0x8CB1, 0xDECC, 0x8CB2, 0xD3C8, 0xDECD, 0x8CB3, 0xD2A2,
+ /* U+5C28 */ 0x8CB4, 0x8CB5, 0x8CB6, 0x8CB7, 0xDECE, 0x8CB8, 0x8CB9, 0x8CBA,
+ /* U+5C30 */ 0x8CBB, 0xBECD, 0x8CBC, 0x8CBD, 0xDECF, 0x8CBE, 0x8CBF, 0x8CC0,
+ /* U+5C38 */ 0xCAAC, 0xD2FC, 0xB3DF, 0xE5EA, 0xC4E1, 0xBEA1, 0xCEB2, 0xC4F2,
+ /* U+5C40 */ 0xBED6, 0xC6A8, 0xB2E3, 0x8CC1, 0x8CC2, 0xBED3, 0x8CC3, 0x8CC4,
+ /* U+5C48 */ 0xC7FC, 0xCCEB, 0xBDEC, 0xCEDD, 0x8CC5, 0x8CC6, 0xCABA, 0xC6C1,
+ /* U+5C50 */ 0xE5EC, 0xD0BC, 0x8CC7, 0x8CC8, 0x8CC9, 0xD5B9, 0x8CCA, 0x8CCB,
+ /* U+5C58 */ 0x8CCC, 0xE5ED, 0x8CCD, 0x8CCE, 0x8CCF, 0x8CD0, 0xCAF4, 0x8CD1,
+ /* U+5C60 */ 0xCDC0, 0xC2C5, 0x8CD2, 0xE5EF, 0x8CD3, 0xC2C4, 0xE5F0, 0x8CD4,
+ /* U+5C68 */ 0x8CD5, 0x8CD6, 0x8CD7, 0x8CD8, 0x8CD9, 0x8CDA, 0xE5F8, 0xCDCD,
+ /* U+5C70 */ 0x8CDB, 0xC9BD, 0x8CDC, 0x8CDD, 0x8CDE, 0x8CDF, 0x8CE0, 0x8CE1,
+ /* U+5C78 */ 0x8CE2, 0xD2D9, 0xE1A8, 0x8CE3, 0x8CE4, 0x8CE5, 0x8CE6, 0xD3EC,
+ /* U+5C80 */ 0x8CE7, 0xCBEA, 0xC6F1, 0x8CE8, 0x8CE9, 0x8CEA, 0x8CEB, 0x8CEC,
+ /* U+5C88 */ 0xE1AC, 0x8CED, 0x8CEE, 0x8CEF, 0xE1A7, 0xE1A9, 0x8CF0, 0x8CF1,
+ /* U+5C90 */ 0xE1AA, 0xE1AF, 0x8CF2, 0x8CF3, 0xB2ED, 0x8CF4, 0xE1AB, 0xB8DA,
+ /* U+5C98 */ 0xE1AD, 0xE1AE, 0xE1B0, 0xB5BA, 0xE1B1, 0x8CF5, 0x8CF6, 0x8CF7,
+ /* U+5CA0 */ 0x8CF8, 0x8CF9, 0xE1B3, 0xE1B8, 0x8CFA, 0x8CFB, 0x8CFC, 0x8CFD,
+ /* U+5CA8 */ 0x8CFE, 0xD1D2, 0x8D40, 0xE1B6, 0xE1B5, 0xC1EB, 0x8D41, 0x8D42,
+ /* U+5CB0 */ 0x8D43, 0xE1B7, 0x8D44, 0xD4C0, 0x8D45, 0xE1B2, 0x8D46, 0xE1BA,
+ /* U+5CB8 */ 0xB0B6, 0x8D47, 0x8D48, 0x8D49, 0x8D4A, 0xE1B4, 0x8D4B, 0xBFF9,
+ /* U+5CC0 */ 0x8D4C, 0xE1B9, 0x8D4D, 0x8D4E, 0xE1BB, 0x8D4F, 0x8D50, 0x8D51,
+ /* U+5CC8 */ 0x8D52, 0x8D53, 0x8D54, 0xE1BE, 0x8D55, 0x8D56, 0x8D57, 0x8D58,
+ /* U+5CD0 */ 0x8D59, 0x8D5A, 0xE1BC, 0x8D5B, 0x8D5C, 0x8D5D, 0x8D5E, 0x8D5F,
+ /* U+5CD8 */ 0x8D60, 0xD6C5, 0x8D61, 0x8D62, 0x8D63, 0x8D64, 0x8D65, 0x8D66,
+ /* U+5CE0 */ 0x8D67, 0xCFBF, 0x8D68, 0x8D69, 0xE1BD, 0xE1BF, 0xC2CD, 0x8D6A,
+ /* U+5CE8 */ 0xB6EB, 0x8D6B, 0xD3F8, 0x8D6C, 0x8D6D, 0xC7CD, 0x8D6E, 0x8D6F,
+ /* U+5CF0 */ 0xB7E5, 0x8D70, 0x8D71, 0x8D72, 0x8D73, 0x8D74, 0x8D75, 0x8D76,
+ /* U+5CF8 */ 0x8D77, 0x8D78, 0x8D79, 0xBEFE, 0x8D7A, 0x8D7B, 0x8D7C, 0x8D7D,
+ /* U+5D00 */ 0x8D7E, 0x8D80, 0xE1C0, 0xE1C1, 0x8D81, 0x8D82, 0xE1C7, 0xB3E7,
+ /* U+5D08 */ 0x8D83, 0x8D84, 0x8D85, 0x8D86, 0x8D87, 0x8D88, 0xC6E9, 0x8D89,
+ /* U+5D10 */ 0x8D8A, 0x8D8B, 0x8D8C, 0x8D8D, 0xB4DE, 0x8D8E, 0xD1C2, 0x8D8F,
+ /* U+5D18 */ 0x8D90, 0x8D91, 0x8D92, 0xE1C8, 0x8D93, 0x8D94, 0xE1C6, 0x8D95,
+ /* U+5D20 */ 0x8D96, 0x8D97, 0x8D98, 0x8D99, 0xE1C5, 0x8D9A, 0xE1C3, 0xE1C2,
+ /* U+5D28 */ 0x8D9B, 0xB1C0, 0x8D9C, 0x8D9D, 0x8D9E, 0xD5B8, 0xE1C4, 0x8D9F,
+ /* U+5D30 */ 0x8DA0, 0x8DA1, 0x8DA2, 0x8DA3, 0xE1CB, 0x8DA4, 0x8DA5, 0x8DA6,
+ /* U+5D38 */ 0x8DA7, 0x8DA8, 0x8DA9, 0x8DAA, 0x8DAB, 0xE1CC, 0xE1CA, 0x8DAC,
+ /* U+5D40 */ 0x8DAD, 0x8DAE, 0x8DAF, 0x8DB0, 0x8DB1, 0x8DB2, 0x8DB3, 0xEFFA,
+ /* U+5D48 */ 0x8DB4, 0x8DB5, 0xE1D3, 0xE1D2, 0xC7B6, 0x8DB6, 0x8DB7, 0x8DB8,
+ /* U+5D50 */ 0x8DB9, 0x8DBA, 0x8DBB, 0x8DBC, 0x8DBD, 0x8DBE, 0x8DBF, 0x8DC0,
+ /* U+5D58 */ 0xE1C9, 0x8DC1, 0x8DC2, 0xE1CE, 0x8DC3, 0xE1D0, 0x8DC4, 0x8DC5,
+ /* U+5D60 */ 0x8DC6, 0x8DC7, 0x8DC8, 0x8DC9, 0x8DCA, 0x8DCB, 0x8DCC, 0x8DCD,
+ /* U+5D68 */ 0x8DCE, 0xE1D4, 0x8DCF, 0xE1D1, 0xE1CD, 0x8DD0, 0x8DD1, 0xE1CF,
+ /* U+5D70 */ 0x8DD2, 0x8DD3, 0x8DD4, 0x8DD5, 0xE1D5, 0x8DD6, 0x8DD7, 0x8DD8,
+ /* U+5D78 */ 0x8DD9, 0x8DDA, 0x8DDB, 0x8DDC, 0x8DDD, 0x8DDE, 0x8DDF, 0x8DE0,
+ /* U+5D80 */ 0x8DE1, 0x8DE2, 0xE1D6, 0x8DE3, 0x8DE4, 0x8DE5, 0x8DE6, 0x8DE7,
+ /* U+5D88 */ 0x8DE8, 0x8DE9, 0x8DEA, 0x8DEB, 0x8DEC, 0x8DED, 0x8DEE, 0x8DEF,
+ /* U+5D90 */ 0x8DF0, 0x8DF1, 0x8DF2, 0x8DF3, 0x8DF4, 0x8DF5, 0x8DF6, 0x8DF7,
+ /* U+5D98 */ 0x8DF8, 0xE1D7, 0x8DF9, 0x8DFA, 0x8DFB, 0xE1D8, 0x8DFC, 0x8DFD,
+ /* U+5DA0 */ 0x8DFE, 0x8E40, 0x8E41, 0x8E42, 0x8E43, 0x8E44, 0x8E45, 0x8E46,
+ /* U+5DA8 */ 0x8E47, 0x8E48, 0x8E49, 0x8E4A, 0x8E4B, 0x8E4C, 0x8E4D, 0x8E4E,
+ /* U+5DB0 */ 0x8E4F, 0x8E50, 0x8E51, 0x8E52, 0x8E53, 0x8E54, 0x8E55, 0xE1DA,
+ /* U+5DB8 */ 0x8E56, 0x8E57, 0x8E58, 0x8E59, 0x8E5A, 0x8E5B, 0x8E5C, 0x8E5D,
+ /* U+5DC0 */ 0x8E5E, 0x8E5F, 0x8E60, 0x8E61, 0x8E62, 0xE1DB, 0x8E63, 0x8E64,
+ /* U+5DC8 */ 0x8E65, 0x8E66, 0x8E67, 0x8E68, 0x8E69, 0xCEA1, 0x8E6A, 0x8E6B,
+ /* U+5DD0 */ 0x8E6C, 0x8E6D, 0x8E6E, 0x8E6F, 0x8E70, 0x8E71, 0x8E72, 0x8E73,
+ /* U+5DD8 */ 0x8E74, 0x8E75, 0x8E76, 0xE7DD, 0x8E77, 0xB4A8, 0xD6DD, 0x8E78,
+ /* U+5DE0 */ 0x8E79, 0xD1B2, 0xB3B2, 0x8E7A, 0x8E7B, 0xB9A4, 0xD7F3, 0xC7C9,
+ /* U+5DE8 */ 0xBEDE, 0xB9AE, 0x8E7C, 0xCED7, 0x8E7D, 0x8E7E, 0xB2EE, 0xDBCF,
+ /* U+5DF0 */ 0x8E80, 0xBCBA, 0xD2D1, 0xCBC8, 0xB0CD, 0x8E81, 0x8E82, 0xCFEF,
+ /* U+5DF8 */ 0x8E83, 0x8E84, 0x8E85, 0x8E86, 0x8E87, 0xD9E3, 0xBDED, 0x8E88,
+ /* U+5E00 */ 0x8E89, 0xB1D2, 0xCAD0, 0xB2BC, 0x8E8A, 0xCBA7, 0xB7AB, 0x8E8B,
+ /* U+5E08 */ 0xCAA6, 0x8E8C, 0x8E8D, 0x8E8E, 0xCFA3, 0x8E8F, 0x8E90, 0xE0F8,
+ /* U+5E10 */ 0xD5CA, 0xE0FB, 0x8E91, 0x8E92, 0xE0FA, 0xC5C1, 0xCCFB, 0x8E93,
+ /* U+5E18 */ 0xC1B1, 0xE0F9, 0xD6E3, 0xB2AF, 0xD6C4, 0xB5DB, 0x8E94, 0x8E95,
+ /* U+5E20 */ 0x8E96, 0x8E97, 0x8E98, 0x8E99, 0x8E9A, 0x8E9B, 0xB4F8, 0xD6A1,
+ /* U+5E28 */ 0x8E9C, 0x8E9D, 0x8E9E, 0x8E9F, 0x8EA0, 0xCFAF, 0xB0EF, 0x8EA1,
+ /* U+5E30 */ 0x8EA2, 0xE0FC, 0x8EA3, 0x8EA4, 0x8EA5, 0x8EA6, 0x8EA7, 0xE1A1,
+ /* U+5E38 */ 0xB3A3, 0x8EA8, 0x8EA9, 0xE0FD, 0xE0FE, 0xC3B1, 0x8EAA, 0x8EAB,
+ /* U+5E40 */ 0x8EAC, 0x8EAD, 0xC3DD, 0x8EAE, 0xE1A2, 0xB7F9, 0x8EAF, 0x8EB0,
+ /* U+5E48 */ 0x8EB1, 0x8EB2, 0x8EB3, 0x8EB4, 0xBBCF, 0x8EB5, 0x8EB6, 0x8EB7,
+ /* U+5E50 */ 0x8EB8, 0x8EB9, 0x8EBA, 0x8EBB, 0xE1A3, 0xC4BB, 0x8EBC, 0x8EBD,
+ /* U+5E58 */ 0x8EBE, 0x8EBF, 0x8EC0, 0xE1A4, 0x8EC1, 0x8EC2, 0xE1A5, 0x8EC3,
+ /* U+5E60 */ 0x8EC4, 0xE1A6, 0xB4B1, 0x8EC5, 0x8EC6, 0x8EC7, 0x8EC8, 0x8EC9,
+ /* U+5E68 */ 0x8ECA, 0x8ECB, 0x8ECC, 0x8ECD, 0x8ECE, 0x8ECF, 0x8ED0, 0x8ED1,
+ /* U+5E70 */ 0x8ED2, 0x8ED3, 0xB8C9, 0xC6BD, 0xC4EA, 0x8ED4, 0xB2A2, 0x8ED5,
+ /* U+5E78 */ 0xD0D2, 0x8ED6, 0xE7DB, 0xBBC3, 0xD3D7, 0xD3C4, 0x8ED7, 0xB9E3,
+ /* U+5E80 */ 0xE2CF, 0x8ED8, 0x8ED9, 0x8EDA, 0xD7AF, 0x8EDB, 0xC7EC, 0xB1D3,
+ /* U+5E88 */ 0x8EDC, 0x8EDD, 0xB4B2, 0xE2D1, 0x8EDE, 0x8EDF, 0x8EE0, 0xD0F2,
+ /* U+5E90 */ 0xC2AE, 0xE2D0, 0x8EE1, 0xBFE2, 0xD3A6, 0xB5D7, 0xE2D2, 0xB5EA,
+ /* U+5E98 */ 0x8EE2, 0xC3ED, 0xB8FD, 0x8EE3, 0xB8AE, 0x8EE4, 0xC5D3, 0xB7CF,
+ /* U+5EA0 */ 0xE2D4, 0x8EE5, 0x8EE6, 0x8EE7, 0x8EE8, 0xE2D3, 0xB6C8, 0xD7F9,
+ /* U+5EA8 */ 0x8EE9, 0x8EEA, 0x8EEB, 0x8EEC, 0x8EED, 0xCDA5, 0x8EEE, 0x8EEF,
+ /* U+5EB0 */ 0x8EF0, 0x8EF1, 0x8EF2, 0xE2D8, 0x8EF3, 0xE2D6, 0xCAFC, 0xBFB5,
+ /* U+5EB8 */ 0xD3B9, 0xE2D5, 0x8EF4, 0x8EF5, 0x8EF6, 0x8EF7, 0xE2D7, 0x8EF8,
+ /* U+5EC0 */ 0x8EF9, 0x8EFA, 0x8EFB, 0x8EFC, 0x8EFD, 0x8EFE, 0x8F40, 0x8F41,
+ /* U+5EC8 */ 0x8F42, 0xC1AE, 0xC0C8, 0x8F43, 0x8F44, 0x8F45, 0x8F46, 0x8F47,
+ /* U+5ED0 */ 0x8F48, 0xE2DB, 0xE2DA, 0xC0AA, 0x8F49, 0x8F4A, 0xC1CE, 0x8F4B,
+ /* U+5ED8 */ 0x8F4C, 0x8F4D, 0x8F4E, 0xE2DC, 0x8F4F, 0x8F50, 0x8F51, 0x8F52,
+ /* U+5EE0 */ 0x8F53, 0x8F54, 0x8F55, 0x8F56, 0x8F57, 0x8F58, 0x8F59, 0x8F5A,
+ /* U+5EE8 */ 0xE2DD, 0x8F5B, 0xE2DE, 0x8F5C, 0x8F5D, 0x8F5E, 0x8F5F, 0x8F60,
+ /* U+5EF0 */ 0x8F61, 0x8F62, 0x8F63, 0x8F64, 0xDBC8, 0x8F65, 0xD1D3, 0xCDA2,
+ /* U+5EF8 */ 0x8F66, 0x8F67, 0xBDA8, 0x8F68, 0x8F69, 0x8F6A, 0xDEC3, 0xD8A5,
+ /* U+5F00 */ 0xBFAA, 0xDBCD, 0xD2EC, 0xC6FA, 0xC5AA, 0x8F6B, 0x8F6C, 0x8F6D,
+ /* U+5F08 */ 0xDEC4, 0x8F6E, 0xB1D7, 0xDFAE, 0x8F6F, 0x8F70, 0x8F71, 0xCABD,
+ /* U+5F10 */ 0x8F72, 0xDFB1, 0x8F73, 0xB9AD, 0x8F74, 0xD2FD, 0x8F75, 0xB8A5,
+ /* U+5F18 */ 0xBAEB, 0x8F76, 0x8F77, 0xB3DA, 0x8F78, 0x8F79, 0x8F7A, 0xB5DC,
+ /* U+5F20 */ 0xD5C5, 0x8F7B, 0x8F7C, 0x8F7D, 0x8F7E, 0xC3D6, 0xCFD2, 0xBBA1,
+ /* U+5F28 */ 0x8F80, 0xE5F3, 0xE5F2, 0x8F81, 0x8F82, 0xE5F4, 0x8F83, 0xCDE4,
+ /* U+5F30 */ 0x8F84, 0xC8F5, 0x8F85, 0x8F86, 0x8F87, 0x8F88, 0x8F89, 0x8F8A,
+ /* U+5F38 */ 0x8F8B, 0xB5AF, 0xC7BF, 0x8F8C, 0xE5F6, 0x8F8D, 0x8F8E, 0x8F8F,
+ /* U+5F40 */ 0xECB0, 0x8F90, 0x8F91, 0x8F92, 0x8F93, 0x8F94, 0x8F95, 0x8F96,
+ /* U+5F48 */ 0x8F97, 0x8F98, 0x8F99, 0x8F9A, 0x8F9B, 0x8F9C, 0x8F9D, 0x8F9E,
+ /* U+5F50 */ 0xE5E6, 0x8F9F, 0xB9E9, 0xB5B1, 0x8FA0, 0xC2BC, 0xE5E8, 0xE5E7,
+ /* U+5F58 */ 0xE5E9, 0x8FA1, 0x8FA2, 0x8FA3, 0x8FA4, 0xD2CD, 0x8FA5, 0x8FA6,
+ /* U+5F60 */ 0x8FA7, 0xE1EA, 0xD0CE, 0x8FA8, 0xCDAE, 0x8FA9, 0xD1E5, 0x8FAA,
+ /* U+5F68 */ 0x8FAB, 0xB2CA, 0xB1EB, 0x8FAC, 0xB1F2, 0xC5ED, 0x8FAD, 0x8FAE,
+ /* U+5F70 */ 0xD5C3, 0xD3B0, 0x8FAF, 0xE1DC, 0x8FB0, 0x8FB1, 0x8FB2, 0xE1DD,
+ /* U+5F78 */ 0x8FB3, 0xD2DB, 0x8FB4, 0xB3B9, 0xB1CB, 0x8FB5, 0x8FB6, 0x8FB7,
+ /* U+5F80 */ 0xCDF9, 0xD5F7, 0xE1DE, 0x8FB8, 0xBEB6, 0xB4FD, 0x8FB9, 0xE1DF,
+ /* U+5F88 */ 0xBADC, 0xE1E0, 0xBBB2, 0xC2C9, 0xE1E1, 0x8FBA, 0x8FBB, 0x8FBC,
+ /* U+5F90 */ 0xD0EC, 0x8FBD, 0xCDBD, 0x8FBE, 0x8FBF, 0xE1E2, 0x8FC0, 0xB5C3,
+ /* U+5F98 */ 0xC5C7, 0xE1E3, 0x8FC1, 0x8FC2, 0xE1E4, 0x8FC3, 0x8FC4, 0x8FC5,
+ /* U+5FA0 */ 0x8FC6, 0xD3F9, 0x8FC7, 0x8FC8, 0x8FC9, 0x8FCA, 0x8FCB, 0x8FCC,
+ /* U+5FA8 */ 0xE1E5, 0x8FCD, 0xD1AD, 0x8FCE, 0x8FCF, 0xE1E6, 0xCEA2, 0x8FD0,
+ /* U+5FB0 */ 0x8FD1, 0x8FD2, 0x8FD3, 0x8FD4, 0x8FD5, 0xE1E7, 0x8FD6, 0xB5C2,
+ /* U+5FB8 */ 0x8FD7, 0x8FD8, 0x8FD9, 0x8FDA, 0xE1E8, 0xBBD5, 0x8FDB, 0x8FDC,
+ /* U+5FC0 */ 0x8FDD, 0x8FDE, 0x8FDF, 0xD0C4, 0xE2E0, 0xB1D8, 0xD2E4, 0x8FE0,
+ /* U+5FC8 */ 0x8FE1, 0xE2E1, 0x8FE2, 0x8FE3, 0xBCC9, 0xC8CC, 0x8FE4, 0xE2E3,
+ /* U+5FD0 */ 0xECFE, 0xECFD, 0xDFAF, 0x8FE5, 0x8FE6, 0x8FE7, 0xE2E2, 0xD6BE,
+ /* U+5FD8 */ 0xCDFC, 0xC3A6, 0x8FE8, 0x8FE9, 0x8FEA, 0xE3C3, 0x8FEB, 0x8FEC,
+ /* U+5FE0 */ 0xD6D2, 0xE2E7, 0x8FED, 0x8FEE, 0xE2E8, 0x8FEF, 0x8FF0, 0xD3C7,
+ /* U+5FE8 */ 0x8FF1, 0x8FF2, 0xE2EC, 0xBFEC, 0x8FF3, 0xE2ED, 0xE2E5, 0x8FF4,
+ /* U+5FF0 */ 0x8FF5, 0xB3C0, 0x8FF6, 0x8FF7, 0x8FF8, 0xC4EE, 0x8FF9, 0x8FFA,
+ /* U+5FF8 */ 0xE2EE, 0x8FFB, 0x8FFC, 0xD0C3, 0x8FFD, 0xBAF6, 0xE2E9, 0xB7DE,
+ /* U+6000 */ 0xBBB3, 0xCCAC, 0xCBCB, 0xE2E4, 0xE2E6, 0xE2EA, 0xE2EB, 0x8FFE,
+ /* U+6008 */ 0x9040, 0x9041, 0xE2F7, 0x9042, 0x9043, 0xE2F4, 0xD4F5, 0xE2F3,
+ /* U+6010 */ 0x9044, 0x9045, 0xC5AD, 0x9046, 0xD5FA, 0xC5C2, 0xB2C0, 0x9047,
+ /* U+6018 */ 0x9048, 0xE2EF, 0x9049, 0xE2F2, 0xC1AF, 0xCBBC, 0x904A, 0x904B,
+ /* U+6020 */ 0xB5A1, 0xE2F9, 0x904C, 0x904D, 0x904E, 0xBCB1, 0xE2F1, 0xD0D4,
+ /* U+6028 */ 0xD4B9, 0xE2F5, 0xB9D6, 0xE2F6, 0x904F, 0x9050, 0x9051, 0xC7D3,
+ /* U+6030 */ 0x9052, 0x9053, 0x9054, 0x9055, 0x9056, 0xE2F0, 0x9057, 0x9058,
+ /* U+6038 */ 0x9059, 0x905A, 0x905B, 0xD7DC, 0xEDA1, 0x905C, 0x905D, 0xE2F8,
+ /* U+6040 */ 0x905E, 0xEDA5, 0xE2FE, 0xCAD1, 0x905F, 0x9060, 0x9061, 0x9062,
+ /* U+6048 */ 0x9063, 0x9064, 0x9065, 0xC1B5, 0x9066, 0xBBD0, 0x9067, 0x9068,
+ /* U+6050 */ 0xBFD6, 0x9069, 0xBAE3, 0x906A, 0x906B, 0xCBA1, 0x906C, 0x906D,
+ /* U+6058 */ 0x906E, 0xEDA6, 0xEDA3, 0x906F, 0x9070, 0xEDA2, 0x9071, 0x9072,
+ /* U+6060 */ 0x9073, 0x9074, 0xBBD6, 0xEDA7, 0xD0F4, 0x9075, 0x9076, 0xEDA4,
+ /* U+6068 */ 0xBADE, 0xB6F7, 0xE3A1, 0xB6B2, 0xCCF1, 0xB9A7, 0x9077, 0xCFA2,
+ /* U+6070 */ 0xC7A1, 0x9078, 0x9079, 0xBFD2, 0x907A, 0x907B, 0xB6F1, 0x907C,
+ /* U+6078 */ 0xE2FA, 0xE2FB, 0xE2FD, 0xE2FC, 0xC4D5, 0xE3A2, 0x907D, 0xD3C1,
+ /* U+6080 */ 0x907E, 0x9080, 0x9081, 0xE3A7, 0xC7C4, 0x9082, 0x9083, 0x9084,
+ /* U+6088 */ 0x9085, 0xCFA4, 0x9086, 0x9087, 0xE3A9, 0xBAB7, 0x9088, 0x9089,
+ /* U+6090 */ 0x908A, 0x908B, 0xE3A8, 0x908C, 0xBBDA, 0x908D, 0xE3A3, 0x908E,
+ /* U+6098 */ 0x908F, 0x9090, 0xE3A4, 0xE3AA, 0x9091, 0xE3A6, 0x9092, 0xCEF2,
+ /* U+60A0 */ 0xD3C6, 0x9093, 0x9094, 0xBBBC, 0x9095, 0x9096, 0xD4C3, 0x9097,
+ /* U+60A8 */ 0xC4FA, 0x9098, 0x9099, 0xEDA8, 0xD0FC, 0xE3A5, 0x909A, 0xC3F5,
+ /* U+60B0 */ 0x909B, 0xE3AD, 0xB1AF, 0x909C, 0xE3B2, 0x909D, 0x909E, 0x909F,
+ /* U+60B8 */ 0xBCC2, 0x90A0, 0x90A1, 0xE3AC, 0xB5BF, 0x90A2, 0x90A3, 0x90A4,
+ /* U+60C0 */ 0x90A5, 0x90A6, 0x90A7, 0x90A8, 0x90A9, 0xC7E9, 0xE3B0, 0x90AA,
+ /* U+60C8 */ 0x90AB, 0x90AC, 0xBEAA, 0xCDEF, 0x90AD, 0x90AE, 0x90AF, 0x90B0,
+ /* U+60D0 */ 0x90B1, 0xBBF3, 0x90B2, 0x90B3, 0x90B4, 0xCCE8, 0x90B5, 0x90B6,
+ /* U+60D8 */ 0xE3AF, 0x90B7, 0xE3B1, 0x90B8, 0xCFA7, 0xE3AE, 0x90B9, 0xCEA9,
+ /* U+60E0 */ 0xBBDD, 0x90BA, 0x90BB, 0x90BC, 0x90BD, 0x90BE, 0xB5EB, 0xBEE5,
+ /* U+60E8 */ 0xB2D2, 0xB3CD, 0x90BF, 0xB1B9, 0xE3AB, 0xB2D1, 0xB5AC, 0xB9DF,
+ /* U+60F0 */ 0xB6E8, 0x90C0, 0x90C1, 0xCFEB, 0xE3B7, 0x90C2, 0xBBCC, 0x90C3,
+ /* U+60F8 */ 0x90C4, 0xC8C7, 0xD0CA, 0x90C5, 0x90C6, 0x90C7, 0x90C8, 0x90C9,
+ /* U+6100 */ 0xE3B8, 0xB3EE, 0x90CA, 0x90CB, 0x90CC, 0x90CD, 0xEDA9, 0x90CE,
+ /* U+6108 */ 0xD3FA, 0xD3E4, 0x90CF, 0x90D0, 0x90D1, 0xEDAA, 0xE3B9, 0xD2E2,
+ /* U+6110 */ 0x90D2, 0x90D3, 0x90D4, 0x90D5, 0x90D6, 0xE3B5, 0x90D7, 0x90D8,
+ /* U+6118 */ 0x90D9, 0x90DA, 0xD3DE, 0x90DB, 0x90DC, 0x90DD, 0x90DE, 0xB8D0,
+ /* U+6120 */ 0xE3B3, 0x90DF, 0x90E0, 0xE3B6, 0xB7DF, 0x90E1, 0xE3B4, 0xC0A2,
+ /* U+6128 */ 0x90E2, 0x90E3, 0x90E4, 0xE3BA, 0x90E5, 0x90E6, 0x90E7, 0x90E8,
+ /* U+6130 */ 0x90E9, 0x90EA, 0x90EB, 0x90EC, 0x90ED, 0x90EE, 0x90EF, 0x90F0,
+ /* U+6138 */ 0x90F1, 0x90F2, 0x90F3, 0x90F4, 0x90F5, 0x90F6, 0x90F7, 0xD4B8,
+ /* U+6140 */ 0x90F8, 0x90F9, 0x90FA, 0x90FB, 0x90FC, 0x90FD, 0x90FE, 0x9140,
+ /* U+6148 */ 0xB4C8, 0x9141, 0xE3BB, 0x9142, 0xBBC5, 0x9143, 0xC9F7, 0x9144,
+ /* U+6150 */ 0x9145, 0xC9E5, 0x9146, 0x9147, 0x9148, 0xC4BD, 0x9149, 0x914A,
+ /* U+6158 */ 0x914B, 0x914C, 0x914D, 0x914E, 0x914F, 0xEDAB, 0x9150, 0x9151,
+ /* U+6160 */ 0x9152, 0x9153, 0xC2FD, 0x9154, 0x9155, 0x9156, 0x9157, 0xBBDB,
+ /* U+6168 */ 0xBFAE, 0x9158, 0x9159, 0x915A, 0x915B, 0x915C, 0x915D, 0x915E,
+ /* U+6170 */ 0xCEBF, 0x915F, 0x9160, 0x9161, 0x9162, 0xE3BC, 0x9163, 0xBFB6,
+ /* U+6178 */ 0x9164, 0x9165, 0x9166, 0x9167, 0x9168, 0x9169, 0x916A, 0x916B,
+ /* U+6180 */ 0x916C, 0x916D, 0x916E, 0x916F, 0x9170, 0x9171, 0x9172, 0x9173,
+ /* U+6188 */ 0x9174, 0x9175, 0x9176, 0xB1EF, 0x9177, 0x9178, 0xD4F7, 0x9179,
+ /* U+6190 */ 0x917A, 0x917B, 0x917C, 0x917D, 0xE3BE, 0x917E, 0x9180, 0x9181,
+ /* U+6198 */ 0x9182, 0x9183, 0x9184, 0x9185, 0x9186, 0xEDAD, 0x9187, 0x9188,
+ /* U+61A0 */ 0x9189, 0x918A, 0x918B, 0x918C, 0x918D, 0x918E, 0x918F, 0xE3BF,
+ /* U+61A8 */ 0xBAA9, 0xEDAC, 0x9190, 0x9191, 0xE3BD, 0x9192, 0x9193, 0x9194,
+ /* U+61B0 */ 0x9195, 0x9196, 0x9197, 0x9198, 0x9199, 0x919A, 0x919B, 0xE3C0,
+ /* U+61B8 */ 0x919C, 0x919D, 0x919E, 0x919F, 0x91A0, 0x91A1, 0xBAB6, 0x91A2,
+ /* U+61C0 */ 0x91A3, 0x91A4, 0xB6AE, 0x91A5, 0x91A6, 0x91A7, 0x91A8, 0x91A9,
+ /* U+61C8 */ 0xD0B8, 0x91AA, 0xB0C3, 0xEDAE, 0x91AB, 0x91AC, 0x91AD, 0x91AE,
+ /* U+61D0 */ 0x91AF, 0xEDAF, 0xC0C1, 0x91B0, 0xE3C1, 0x91B1, 0x91B2, 0x91B3,
+ /* U+61D8 */ 0x91B4, 0x91B5, 0x91B6, 0x91B7, 0x91B8, 0x91B9, 0x91BA, 0x91BB,
+ /* U+61E0 */ 0x91BC, 0x91BD, 0x91BE, 0x91BF, 0x91C0, 0x91C1, 0xC5B3, 0x91C2,
+ /* U+61E8 */ 0x91C3, 0x91C4, 0x91C5, 0x91C6, 0x91C7, 0x91C8, 0x91C9, 0x91CA,
+ /* U+61F0 */ 0x91CB, 0x91CC, 0x91CD, 0x91CE, 0x91CF, 0xE3C2, 0x91D0, 0x91D1,
+ /* U+61F8 */ 0x91D2, 0x91D3, 0x91D4, 0x91D5, 0x91D6, 0x91D7, 0x91D8, 0xDCB2,
+ /* U+6200 */ 0x91D9, 0x91DA, 0x91DB, 0x91DC, 0x91DD, 0x91DE, 0xEDB0, 0x91DF,
+ /* U+6208 */ 0xB8EA, 0x91E0, 0xCEEC, 0xEAA7, 0xD0E7, 0xCAF9, 0xC8D6, 0xCFB7,
+ /* U+6210 */ 0xB3C9, 0xCED2, 0xBDE4, 0x91E1, 0x91E2, 0xE3DE, 0xBBF2, 0xEAA8,
+ /* U+6218 */ 0xD5BD, 0x91E3, 0xC6DD, 0xEAA9, 0x91E4, 0x91E5, 0x91E6, 0xEAAA,
+ /* U+6220 */ 0x91E7, 0xEAAC, 0xEAAB, 0x91E8, 0xEAAE, 0xEAAD, 0x91E9, 0x91EA,
+ /* U+6228 */ 0x91EB, 0x91EC, 0xBDD8, 0x91ED, 0xEAAF, 0x91EE, 0xC2BE, 0x91EF,
+ /* U+6230 */ 0x91F0, 0x91F1, 0x91F2, 0xB4C1, 0xB4F7, 0x91F3, 0x91F4, 0xBBA7,
+ /* U+6238 */ 0x91F5, 0x91F6, 0x91F7, 0x91F8, 0x91F9, 0xECE6, 0xECE5, 0xB7BF,
+ /* U+6240 */ 0xCBF9, 0xB1E2, 0x91FA, 0xECE7, 0x91FB, 0x91FC, 0x91FD, 0xC9C8,
+ /* U+6248 */ 0xECE8, 0xECE9, 0x91FE, 0xCAD6, 0xDED0, 0xB2C5, 0xD4FA, 0x9240,
+ /* U+6250 */ 0x9241, 0xC6CB, 0xB0C7, 0xB4F2, 0xC8D3, 0x9242, 0x9243, 0x9244,
+ /* U+6258 */ 0xCDD0, 0x9245, 0x9246, 0xBFB8, 0x9247, 0x9248, 0x9249, 0x924A,
+ /* U+6260 */ 0x924B, 0x924C, 0x924D, 0xBFDB, 0x924E, 0x924F, 0xC7A4, 0xD6B4,
+ /* U+6268 */ 0x9250, 0xC0A9, 0xDED1, 0xC9A8, 0xD1EF, 0xC5A4, 0xB0E7, 0xB3B6,
+ /* U+6270 */ 0xC8C5, 0x9251, 0x9252, 0xB0E2, 0x9253, 0x9254, 0xB7F6, 0x9255,
+ /* U+6278 */ 0x9256, 0xC5FA, 0x9257, 0x9258, 0xB6F3, 0x9259, 0xD5D2, 0xB3D0,
+ /* U+6280 */ 0xBCBC, 0x925A, 0x925B, 0x925C, 0xB3AD, 0x925D, 0x925E, 0x925F,
+ /* U+6288 */ 0x9260, 0xBEF1, 0xB0D1, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265,
+ /* U+6290 */ 0x9266, 0xD2D6, 0xCAE3, 0xD7A5, 0x9267, 0xCDB6, 0xB6B6, 0xBFB9,
+ /* U+6298 */ 0xD5DB, 0x9268, 0xB8A7, 0xC5D7, 0x9269, 0x926A, 0x926B, 0xDED2,
+ /* U+62A0 */ 0xBFD9, 0xC2D5, 0xC7C0, 0x926C, 0xBBA4, 0xB1A8, 0x926D, 0x926E,
+ /* U+62A8 */ 0xC5EA, 0x926F, 0x9270, 0xC5FB, 0xCCA7, 0x9271, 0x9272, 0x9273,
+ /* U+62B0 */ 0x9274, 0xB1A7, 0x9275, 0x9276, 0x9277, 0xB5D6, 0x9278, 0x9279,
+ /* U+62B8 */ 0x927A, 0xC4A8, 0x927B, 0xDED3, 0xD1BA, 0xB3E9, 0x927C, 0xC3F2,
+ /* U+62C0 */ 0x927D, 0x927E, 0xB7F7, 0x9280, 0xD6F4, 0xB5A3, 0xB2F0, 0xC4B4,
+ /* U+62C8 */ 0xC4E9, 0xC0AD, 0xDED4, 0x9281, 0xB0E8, 0xC5C4, 0xC1E0, 0x9282,
+ /* U+62D0 */ 0xB9D5, 0x9283, 0xBEDC, 0xCDD8, 0xB0CE, 0x9284, 0xCDCF, 0xDED6,
+ /* U+62D8 */ 0xBED0, 0xD7BE, 0xDED5, 0xD5D0, 0xB0DD, 0x9285, 0x9286, 0xC4E2,
+ /* U+62E0 */ 0x9287, 0x9288, 0xC2A3, 0xBCF0, 0x9289, 0xD3B5, 0xC0B9, 0xC5A1,
+ /* U+62E8 */ 0xB2A6, 0xD4F1, 0x928A, 0x928B, 0xC0A8, 0xCAC3, 0xDED7, 0xD5FC,
+ /* U+62F0 */ 0x928C, 0xB9B0, 0x928D, 0xC8AD, 0xCBA9, 0x928E, 0xDED9, 0xBFBD,
+ /* U+62F8 */ 0x928F, 0x9290, 0x9291, 0x9292, 0xC6B4, 0xD7A7, 0xCAB0, 0xC4C3,
+ /* U+6300 */ 0x9293, 0xB3D6, 0xB9D2, 0x9294, 0x9295, 0x9296, 0x9297, 0xD6B8,
+ /* U+6308 */ 0xEAFC, 0xB0B4, 0x9298, 0x9299, 0x929A, 0x929B, 0xBFE6, 0x929C,
+ /* U+6310 */ 0x929D, 0xCCF4, 0x929E, 0x929F, 0x92A0, 0x92A1, 0xCDDA, 0x92A2,
+ /* U+6318 */ 0x92A3, 0x92A4, 0xD6BF, 0xC2CE, 0x92A5, 0xCECE, 0xCCA2, 0xD0AE,
+ /* U+6320 */ 0xC4D3, 0xB5B2, 0xDED8, 0xD5F5, 0xBCB7, 0xBBD3, 0x92A6, 0x92A7,
+ /* U+6328 */ 0xB0A4, 0x92A8, 0xC5B2, 0xB4EC, 0x92A9, 0x92AA, 0x92AB, 0xD5F1,
+ /* U+6330 */ 0x92AC, 0x92AD, 0xEAFD, 0x92AE, 0x92AF, 0x92B0, 0x92B1, 0x92B2,
+ /* U+6338 */ 0x92B3, 0xDEDA, 0xCDA6, 0x92B4, 0x92B5, 0xCDEC, 0x92B6, 0x92B7,
+ /* U+6340 */ 0x92B8, 0x92B9, 0xCEE6, 0xDEDC, 0x92BA, 0xCDB1, 0xC0A6, 0x92BB,
+ /* U+6348 */ 0x92BC, 0xD7BD, 0x92BD, 0xDEDB, 0xB0C6, 0xBAB4, 0xC9D3, 0xC4F3,
+ /* U+6350 */ 0xBEE8, 0x92BE, 0x92BF, 0x92C0, 0x92C1, 0xB2B6, 0x92C2, 0x92C3,
+ /* U+6358 */ 0x92C4, 0x92C5, 0x92C6, 0x92C7, 0x92C8, 0x92C9, 0xC0CC, 0xCBF0,
+ /* U+6360 */ 0x92CA, 0xBCF1, 0xBBBB, 0xB5B7, 0x92CB, 0x92CC, 0x92CD, 0xC5F5,
+ /* U+6368 */ 0x92CE, 0xDEE6, 0x92CF, 0x92D0, 0x92D1, 0xDEE3, 0xBEDD, 0x92D2,
+ /* U+6370 */ 0x92D3, 0xDEDF, 0x92D4, 0x92D5, 0x92D6, 0x92D7, 0xB4B7, 0xBDDD,
+ /* U+6378 */ 0x92D8, 0x92D9, 0xDEE0, 0xC4ED, 0x92DA, 0x92DB, 0x92DC, 0x92DD,
+ /* U+6380 */ 0xCFC6, 0x92DE, 0xB5E0, 0x92DF, 0x92E0, 0x92E1, 0x92E2, 0xB6DE,
+ /* U+6388 */ 0xCADA, 0xB5F4, 0xDEE5, 0x92E3, 0xD5C6, 0x92E4, 0xDEE1, 0xCCCD,
+ /* U+6390 */ 0xC6FE, 0x92E5, 0xC5C5, 0x92E6, 0x92E7, 0x92E8, 0xD2B4, 0x92E9,
+ /* U+6398 */ 0xBEF2, 0x92EA, 0x92EB, 0x92EC, 0x92ED, 0x92EE, 0x92EF, 0x92F0,
+ /* U+63A0 */ 0xC2D3, 0x92F1, 0xCCBD, 0xB3B8, 0x92F2, 0xBDD3, 0x92F3, 0xBFD8,
+ /* U+63A8 */ 0xCDC6, 0xD1DA, 0xB4EB, 0x92F4, 0xDEE4, 0xDEDD, 0xDEE7, 0x92F5,
+ /* U+63B0 */ 0xEAFE, 0x92F6, 0x92F7, 0xC2B0, 0xDEE2, 0x92F8, 0x92F9, 0xD6C0,
+ /* U+63B8 */ 0xB5A7, 0x92FA, 0xB2F4, 0x92FB, 0xDEE8, 0x92FC, 0xDEF2, 0x92FD,
+ /* U+63C0 */ 0x92FE, 0x9340, 0x9341, 0x9342, 0xDEED, 0x9343, 0xDEF1, 0x9344,
+ /* U+63C8 */ 0x9345, 0xC8E0, 0x9346, 0x9347, 0x9348, 0xD7E1, 0xDEEF, 0xC3E8,
+ /* U+63D0 */ 0xCCE1, 0x9349, 0xB2E5, 0x934A, 0x934B, 0x934C, 0xD2BE, 0x934D,
+ /* U+63D8 */ 0x934E, 0x934F, 0x9350, 0x9351, 0x9352, 0x9353, 0xDEEE, 0x9354,
+ /* U+63E0 */ 0xDEEB, 0xCED5, 0x9355, 0xB4A7, 0x9356, 0x9357, 0x9358, 0x9359,
+ /* U+63E8 */ 0x935A, 0xBFAB, 0xBEBE, 0x935B, 0x935C, 0xBDD2, 0x935D, 0x935E,
+ /* U+63F0 */ 0x935F, 0x9360, 0xDEE9, 0x9361, 0xD4AE, 0x9362, 0xDEDE, 0x9363,
+ /* U+63F8 */ 0xDEEA, 0x9364, 0x9365, 0x9366, 0x9367, 0xC0BF, 0x9368, 0xDEEC,
+ /* U+6400 */ 0xB2F3, 0xB8E9, 0xC2A7, 0x9369, 0x936A, 0xBDC1, 0x936B, 0x936C,
+ /* U+6408 */ 0x936D, 0x936E, 0x936F, 0xDEF5, 0xDEF8, 0x9370, 0x9371, 0xB2AB,
+ /* U+6410 */ 0xB4A4, 0x9372, 0x9373, 0xB4EA, 0xC9A6, 0x9374, 0x9375, 0x9376,
+ /* U+6418 */ 0x9377, 0x9378, 0x9379, 0xDEF6, 0xCBD1, 0x937A, 0xB8E3, 0x937B,
+ /* U+6420 */ 0xDEF7, 0xDEFA, 0x937C, 0x937D, 0x937E, 0x9380, 0xDEF9, 0x9381,
+ /* U+6428 */ 0x9382, 0x9383, 0xCCC2, 0x9384, 0xB0E1, 0xB4EE, 0x9385, 0x9386,
+ /* U+6430 */ 0x9387, 0x9388, 0x9389, 0x938A, 0xE5BA, 0x938B, 0x938C, 0x938D,
+ /* U+6438 */ 0x938E, 0x938F, 0xD0AF, 0x9390, 0x9391, 0xB2EB, 0x9392, 0xEBA1,
+ /* U+6440 */ 0x9393, 0xDEF4, 0x9394, 0x9395, 0xC9E3, 0xDEF3, 0xB0DA, 0xD2A1,
+ /* U+6448 */ 0xB1F7, 0x9396, 0xCCAF, 0x9397, 0x9398, 0x9399, 0x939A, 0x939B,
+ /* U+6450 */ 0x939C, 0x939D, 0xDEF0, 0x939E, 0xCBA4, 0x939F, 0x93A0, 0x93A1,
+ /* U+6458 */ 0xD5AA, 0x93A2, 0x93A3, 0x93A4, 0x93A5, 0x93A6, 0xDEFB, 0x93A7,
+ /* U+6460 */ 0x93A8, 0x93A9, 0x93AA, 0x93AB, 0x93AC, 0x93AD, 0x93AE, 0xB4DD,
+ /* U+6468 */ 0x93AF, 0xC4A6, 0x93B0, 0x93B1, 0x93B2, 0xDEFD, 0x93B3, 0x93B4,
+ /* U+6470 */ 0x93B5, 0x93B6, 0x93B7, 0x93B8, 0x93B9, 0x93BA, 0x93BB, 0x93BC,
+ /* U+6478 */ 0xC3FE, 0xC4A1, 0xDFA1, 0x93BD, 0x93BE, 0x93BF, 0x93C0, 0x93C1,
+ /* U+6480 */ 0x93C2, 0x93C3, 0xC1CC, 0x93C4, 0xDEFC, 0xBEEF, 0x93C5, 0xC6B2,
+ /* U+6488 */ 0x93C6, 0x93C7, 0x93C8, 0x93C9, 0x93CA, 0x93CB, 0x93CC, 0x93CD,
+ /* U+6490 */ 0x93CE, 0xB3C5, 0xC8F6, 0x93CF, 0x93D0, 0xCBBA, 0xDEFE, 0x93D1,
+ /* U+6498 */ 0x93D2, 0xDFA4, 0x93D3, 0x93D4, 0x93D5, 0x93D6, 0xD7B2, 0x93D7,
+ /* U+64A0 */ 0x93D8, 0x93D9, 0x93DA, 0x93DB, 0xB3B7, 0x93DC, 0x93DD, 0x93DE,
+ /* U+64A8 */ 0x93DF, 0xC1C3, 0x93E0, 0x93E1, 0xC7CB, 0xB2A5, 0xB4E9, 0x93E2,
+ /* U+64B0 */ 0xD7AB, 0x93E3, 0x93E4, 0x93E5, 0x93E6, 0xC4EC, 0x93E7, 0xDFA2,
+ /* U+64B8 */ 0xDFA3, 0x93E8, 0xDFA5, 0x93E9, 0xBAB3, 0x93EA, 0x93EB, 0x93EC,
+ /* U+64C0 */ 0xDFA6, 0x93ED, 0xC0DE, 0x93EE, 0x93EF, 0xC9C3, 0x93F0, 0x93F1,
+ /* U+64C8 */ 0x93F2, 0x93F3, 0x93F4, 0x93F5, 0x93F6, 0xB2D9, 0xC7E6, 0x93F7,
+ /* U+64D0 */ 0xDFA7, 0x93F8, 0xC7DC, 0x93F9, 0x93FA, 0x93FB, 0x93FC, 0xDFA8,
+ /* U+64D8 */ 0xEBA2, 0x93FD, 0x93FE, 0x9440, 0x9441, 0x9442, 0xCBD3, 0x9443,
+ /* U+64E0 */ 0x9444, 0x9445, 0xDFAA, 0x9446, 0xDFA9, 0x9447, 0xB2C1, 0x9448,
+ /* U+64E8 */ 0x9449, 0x944A, 0x944B, 0x944C, 0x944D, 0x944E, 0x944F, 0x9450,
+ /* U+64F0 */ 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457, 0x9458,
+ /* U+64F8 */ 0x9459, 0x945A, 0x945B, 0x945C, 0x945D, 0x945E, 0x945F, 0x9460,
+ /* U+6500 */ 0xC5CA, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467,
+ /* U+6508 */ 0x9468, 0xDFAB, 0x9469, 0x946A, 0x946B, 0x946C, 0x946D, 0x946E,
+ /* U+6510 */ 0x946F, 0x9470, 0xD4DC, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475,
+ /* U+6518 */ 0xC8C1, 0x9476, 0x9477, 0x9478, 0x9479, 0x947A, 0x947B, 0x947C,
+ /* U+6520 */ 0x947D, 0x947E, 0x9480, 0x9481, 0x9482, 0xDFAC, 0x9483, 0x9484,
+ /* U+6528 */ 0x9485, 0x9486, 0x9487, 0xBEF0, 0x9488, 0x9489, 0xDFAD, 0xD6A7,
+ /* U+6530 */ 0x948A, 0x948B, 0x948C, 0x948D, 0xEAB7, 0xEBB6, 0xCAD5, 0x948E,
+ /* U+6538 */ 0xD8FC, 0xB8C4, 0x948F, 0xB9A5, 0x9490, 0x9491, 0xB7C5, 0xD5FE,
+ /* U+6540 */ 0x9492, 0x9493, 0x9494, 0x9495, 0x9496, 0xB9CA, 0x9497, 0x9498,
+ /* U+6548 */ 0xD0A7, 0xF4CD, 0x9499, 0x949A, 0xB5D0, 0x949B, 0x949C, 0xC3F4,
+ /* U+6550 */ 0x949D, 0xBEC8, 0x949E, 0x949F, 0x94A0, 0xEBB7, 0xB0BD, 0x94A1,
+ /* U+6558 */ 0x94A2, 0xBDCC, 0x94A3, 0xC1B2, 0x94A4, 0xB1D6, 0xB3A8, 0x94A5,
+ /* U+6560 */ 0x94A6, 0x94A7, 0xB8D2, 0xC9A2, 0x94A8, 0x94A9, 0xB6D8, 0x94AA,
+ /* U+6568 */ 0x94AB, 0x94AC, 0x94AD, 0xEBB8, 0xBEB4, 0x94AE, 0x94AF, 0x94B0,
+ /* U+6570 */ 0xCAFD, 0x94B1, 0xC7C3, 0x94B2, 0xD5FB, 0x94B3, 0x94B4, 0xB7F3,
+ /* U+6578 */ 0x94B5, 0x94B6, 0x94B7, 0x94B8, 0x94B9, 0x94BA, 0x94BB, 0x94BC,
+ /* U+6580 */ 0x94BD, 0x94BE, 0x94BF, 0x94C0, 0x94C1, 0x94C2, 0x94C3, 0xCEC4,
+ /* U+6588 */ 0x94C4, 0x94C5, 0x94C6, 0xD5AB, 0xB1F3, 0x94C7, 0x94C8, 0x94C9,
+ /* U+6590 */ 0xECB3, 0xB0DF, 0x94CA, 0xECB5, 0x94CB, 0x94CC, 0x94CD, 0xB6B7,
+ /* U+6598 */ 0x94CE, 0xC1CF, 0x94CF, 0xF5FA, 0xD0B1, 0x94D0, 0x94D1, 0xD5E5,
+ /* U+65A0 */ 0x94D2, 0xCED3, 0x94D3, 0x94D4, 0xBDEF, 0xB3E2, 0x94D5, 0xB8AB,
+ /* U+65A8 */ 0x94D6, 0xD5B6, 0x94D7, 0xEDBD, 0x94D8, 0xB6CF, 0x94D9, 0xCBB9,
+ /* U+65B0 */ 0xD0C2, 0x94DA, 0x94DB, 0x94DC, 0x94DD, 0x94DE, 0x94DF, 0x94E0,
+ /* U+65B8 */ 0x94E1, 0xB7BD, 0x94E2, 0x94E3, 0xECB6, 0xCAA9, 0x94E4, 0x94E5,
+ /* U+65C0 */ 0x94E6, 0xC5D4, 0x94E7, 0xECB9, 0xECB8, 0xC2C3, 0xECB7, 0x94E8,
+ /* U+65C8 */ 0x94E9, 0x94EA, 0x94EB, 0xD0FD, 0xECBA, 0x94EC, 0xECBB, 0xD7E5,
+ /* U+65D0 */ 0x94ED, 0x94EE, 0xECBC, 0x94EF, 0x94F0, 0x94F1, 0xECBD, 0xC6EC,
+ /* U+65D8 */ 0x94F2, 0x94F3, 0x94F4, 0x94F5, 0x94F6, 0x94F7, 0x94F8, 0x94F9,
+ /* U+65E0 */ 0xCEDE, 0x94FA, 0xBCC8, 0x94FB, 0x94FC, 0xC8D5, 0xB5A9, 0xBEC9,
+ /* U+65E8 */ 0xD6BC, 0xD4E7, 0x94FD, 0x94FE, 0xD1AE, 0xD0F1, 0xEAB8, 0xEAB9,
+ /* U+65F0 */ 0xEABA, 0xBAB5, 0x9540, 0x9541, 0x9542, 0x9543, 0xCAB1, 0xBFF5,
+ /* U+65F8 */ 0x9544, 0x9545, 0xCDFA, 0x9546, 0x9547, 0x9548, 0x9549, 0x954A,
+ /* U+6600 */ 0xEAC0, 0x954B, 0xB0BA, 0xEABE, 0x954C, 0x954D, 0xC0A5, 0x954E,
+ /* U+6608 */ 0x954F, 0x9550, 0xEABB, 0x9551, 0xB2FD, 0x9552, 0xC3F7, 0xBBE8,
+ /* U+6610 */ 0x9553, 0x9554, 0x9555, 0xD2D7, 0xCEF4, 0xEABF, 0x9556, 0x9557,
+ /* U+6618 */ 0x9558, 0xEABC, 0x9559, 0x955A, 0x955B, 0xEAC3, 0x955C, 0xD0C7,
+ /* U+6620 */ 0xD3B3, 0x955D, 0x955E, 0x955F, 0x9560, 0xB4BA, 0x9561, 0xC3C1,
+ /* U+6628 */ 0xD7F2, 0x9562, 0x9563, 0x9564, 0x9565, 0xD5D1, 0x9566, 0xCAC7,
+ /* U+6630 */ 0x9567, 0xEAC5, 0x9568, 0x9569, 0xEAC4, 0xEAC7, 0xEAC6, 0x956A,
+ /* U+6638 */ 0x956B, 0x956C, 0x956D, 0x956E, 0xD6E7, 0x956F, 0xCFD4, 0x9570,
+ /* U+6640 */ 0x9571, 0xEACB, 0x9572, 0xBBCE, 0x9573, 0x9574, 0x9575, 0x9576,
+ /* U+6648 */ 0x9577, 0x9578, 0x9579, 0xBDFA, 0xC9CE, 0x957A, 0x957B, 0xEACC,
+ /* U+6650 */ 0x957C, 0x957D, 0xC9B9, 0xCFFE, 0xEACA, 0xD4CE, 0xEACD, 0xEACF,
+ /* U+6658 */ 0x957E, 0x9580, 0xCDED, 0x9581, 0x9582, 0x9583, 0x9584, 0xEAC9,
+ /* U+6660 */ 0x9585, 0xEACE, 0x9586, 0x9587, 0xCEEE, 0x9588, 0xBBDE, 0x9589,
+ /* U+6668 */ 0xB3BF, 0x958A, 0x958B, 0x958C, 0x958D, 0x958E, 0xC6D5, 0xBEB0,
+ /* U+6670 */ 0xCEFA, 0x958F, 0x9590, 0x9591, 0xC7E7, 0x9592, 0xBEA7, 0xEAD0,
+ /* U+6678 */ 0x9593, 0x9594, 0xD6C7, 0x9595, 0x9596, 0x9597, 0xC1C0, 0x9598,
+ /* U+6680 */ 0x9599, 0x959A, 0xD4DD, 0x959B, 0xEAD1, 0x959C, 0x959D, 0xCFBE,
+ /* U+6688 */ 0x959E, 0x959F, 0x95A0, 0x95A1, 0xEAD2, 0x95A2, 0x95A3, 0x95A4,
+ /* U+6690 */ 0x95A5, 0xCAEE, 0x95A6, 0x95A7, 0x95A8, 0x95A9, 0xC5AF, 0xB0B5,
+ /* U+6698 */ 0x95AA, 0x95AB, 0x95AC, 0x95AD, 0x95AE, 0xEAD4, 0x95AF, 0x95B0,
+ /* U+66A0 */ 0x95B1, 0x95B2, 0x95B3, 0x95B4, 0x95B5, 0x95B6, 0x95B7, 0xEAD3,
+ /* U+66A8 */ 0xF4DF, 0x95B8, 0x95B9, 0x95BA, 0x95BB, 0x95BC, 0xC4BA, 0x95BD,
+ /* U+66B0 */ 0x95BE, 0x95BF, 0x95C0, 0x95C1, 0xB1A9, 0x95C2, 0x95C3, 0x95C4,
+ /* U+66B8 */ 0x95C5, 0xE5DF, 0x95C6, 0x95C7, 0x95C8, 0x95C9, 0xEAD5, 0x95CA,
+ /* U+66C0 */ 0x95CB, 0x95CC, 0x95CD, 0x95CE, 0x95CF, 0x95D0, 0x95D1, 0x95D2,
+ /* U+66C8 */ 0x95D3, 0x95D4, 0x95D5, 0x95D6, 0x95D7, 0x95D8, 0x95D9, 0x95DA,
+ /* U+66D0 */ 0x95DB, 0x95DC, 0x95DD, 0x95DE, 0x95DF, 0x95E0, 0x95E1, 0x95E2,
+ /* U+66D8 */ 0x95E3, 0xCAEF, 0x95E4, 0xEAD6, 0xEAD7, 0xC6D8, 0x95E5, 0x95E6,
+ /* U+66E0 */ 0x95E7, 0x95E8, 0x95E9, 0x95EA, 0x95EB, 0x95EC, 0xEAD8, 0x95ED,
+ /* U+66E8 */ 0x95EE, 0xEAD9, 0x95EF, 0x95F0, 0x95F1, 0x95F2, 0x95F3, 0x95F4,
+ /* U+66F0 */ 0xD4BB, 0x95F5, 0xC7FA, 0xD2B7, 0xB8FC, 0x95F6, 0x95F7, 0xEAC2,
+ /* U+66F8 */ 0x95F8, 0xB2DC, 0x95F9, 0x95FA, 0xC2FC, 0x95FB, 0xD4F8, 0xCCE6,
+ /* U+6700 */ 0xD7EE, 0x95FC, 0x95FD, 0x95FE, 0x9640, 0x9641, 0x9642, 0x9643,
+ /* U+6708 */ 0xD4C2, 0xD3D0, 0xEBC3, 0xC5F3, 0x9644, 0xB7FE, 0x9645, 0x9646,
+ /* U+6710 */ 0xEBD4, 0x9647, 0x9648, 0x9649, 0xCBB7, 0xEBDE, 0x964A, 0xC0CA,
+ /* U+6718 */ 0x964B, 0x964C, 0x964D, 0xCDFB, 0x964E, 0xB3AF, 0x964F, 0xC6DA,
+ /* U+6720 */ 0x9650, 0x9651, 0x9652, 0x9653, 0x9654, 0x9655, 0xEBFC, 0x9656,
+ /* U+6728 */ 0xC4BE, 0x9657, 0xCEB4, 0xC4A9, 0xB1BE, 0xD4FD, 0x9658, 0xCAF5,
+ /* U+6730 */ 0x9659, 0xD6EC, 0x965A, 0x965B, 0xC6D3, 0xB6E4, 0x965C, 0x965D,
+ /* U+6738 */ 0x965E, 0x965F, 0xBBFA, 0x9660, 0x9661, 0xD0E0, 0x9662, 0x9663,
+ /* U+6740 */ 0xC9B1, 0x9664, 0xD4D3, 0xC8A8, 0x9665, 0x9666, 0xB8CB, 0x9667,
+ /* U+6748 */ 0xE8BE, 0xC9BC, 0x9668, 0x9669, 0xE8BB, 0x966A, 0xC0EE, 0xD0D3,
+ /* U+6750 */ 0xB2C4, 0xB4E5, 0x966B, 0xE8BC, 0x966C, 0x966D, 0xD5C8, 0x966E,
+ /* U+6758 */ 0x966F, 0x9670, 0x9671, 0x9672, 0xB6C5, 0x9673, 0xE8BD, 0xCAF8,
+ /* U+6760 */ 0xB8DC, 0xCCF5, 0x9674, 0x9675, 0x9676, 0xC0B4, 0x9677, 0x9678,
+ /* U+6768 */ 0xD1EE, 0xE8BF, 0xE8C2, 0x9679, 0x967A, 0xBABC, 0x967B, 0xB1AD,
+ /* U+6770 */ 0xBDDC, 0x967C, 0xEABD, 0xE8C3, 0x967D, 0xE8C6, 0x967E, 0xE8CB,
+ /* U+6778 */ 0x9680, 0x9681, 0x9682, 0x9683, 0xE8CC, 0x9684, 0xCBC9, 0xB0E5,
+ /* U+6780 */ 0x9685, 0xBCAB, 0x9686, 0x9687, 0xB9B9, 0x9688, 0x9689, 0xE8C1,
+ /* U+6788 */ 0x968A, 0xCDF7, 0x968B, 0xE8CA, 0x968C, 0x968D, 0x968E, 0x968F,
+ /* U+6790 */ 0xCEF6, 0x9690, 0x9691, 0x9692, 0x9693, 0xD5ED, 0x9694, 0xC1D6,
+ /* U+6798 */ 0xE8C4, 0x9695, 0xC3B6, 0x9696, 0xB9FB, 0xD6A6, 0xE8C8, 0x9697,
+ /* U+67A0 */ 0x9698, 0x9699, 0xCAE0, 0xD4E6, 0x969A, 0xE8C0, 0x969B, 0xE8C5,
+ /* U+67A8 */ 0xE8C7, 0x969C, 0xC7B9, 0xB7E3, 0x969D, 0xE8C9, 0x969E, 0xBFDD,
+ /* U+67B0 */ 0xE8D2, 0x969F, 0x96A0, 0xE8D7, 0x96A1, 0xE8D5, 0xBCDC, 0xBCCF,
+ /* U+67B8 */ 0xE8DB, 0x96A2, 0x96A3, 0x96A4, 0x96A5, 0x96A6, 0x96A7, 0x96A8,
+ /* U+67C0 */ 0x96A9, 0xE8DE, 0x96AA, 0xE8DA, 0xB1FA, 0x96AB, 0x96AC, 0x96AD,
+ /* U+67C8 */ 0x96AE, 0x96AF, 0x96B0, 0x96B1, 0x96B2, 0x96B3, 0x96B4, 0xB0D8,
+ /* U+67D0 */ 0xC4B3, 0xB8CC, 0xC6E2, 0xC8BE, 0xC8E1, 0x96B5, 0x96B6, 0x96B7,
+ /* U+67D8 */ 0xE8CF, 0xE8D4, 0xE8D6, 0x96B8, 0xB9F1, 0xE8D8, 0xD7F5, 0x96B9,
+ /* U+67E0 */ 0xC4FB, 0x96BA, 0xE8DC, 0x96BB, 0x96BC, 0xB2E9, 0x96BD, 0x96BE,
+ /* U+67E8 */ 0x96BF, 0xE8D1, 0x96C0, 0x96C1, 0xBCED, 0x96C2, 0x96C3, 0xBFC2,
+ /* U+67F0 */ 0xE8CD, 0xD6F9, 0x96C4, 0xC1F8, 0xB2F1, 0x96C5, 0x96C6, 0x96C7,
+ /* U+67F8 */ 0x96C8, 0x96C9, 0x96CA, 0x96CB, 0x96CC, 0xE8DF, 0x96CD, 0xCAC1,
+ /* U+6800 */ 0xE8D9, 0x96CE, 0x96CF, 0x96D0, 0x96D1, 0xD5A4, 0x96D2, 0xB1EA,
+ /* U+6808 */ 0xD5BB, 0xE8CE, 0xE8D0, 0xB6B0, 0xE8D3, 0x96D3, 0xE8DD, 0xC0B8,
+ /* U+6810 */ 0x96D4, 0xCAF7, 0x96D5, 0xCBA8, 0x96D6, 0x96D7, 0xC6DC, 0xC0F5,
+ /* U+6818 */ 0x96D8, 0x96D9, 0x96DA, 0x96DB, 0x96DC, 0xE8E9, 0x96DD, 0x96DE,
+ /* U+6820 */ 0x96DF, 0xD0A3, 0x96E0, 0x96E1, 0x96E2, 0x96E3, 0x96E4, 0x96E5,
+ /* U+6828 */ 0x96E6, 0xE8F2, 0xD6EA, 0x96E7, 0x96E8, 0x96E9, 0x96EA, 0x96EB,
+ /* U+6830 */ 0x96EC, 0x96ED, 0xE8E0, 0xE8E1, 0x96EE, 0x96EF, 0x96F0, 0xD1F9,
+ /* U+6838 */ 0xBACB, 0xB8F9, 0x96F1, 0x96F2, 0xB8F1, 0xD4D4, 0xE8EF, 0x96F3,
+ /* U+6840 */ 0xE8EE, 0xE8EC, 0xB9F0, 0xCCD2, 0xE8E6, 0xCEA6, 0xBFF2, 0x96F4,
+ /* U+6848 */ 0xB0B8, 0xE8F1, 0xE8F0, 0x96F5, 0xD7C0, 0x96F6, 0xE8E4, 0x96F7,
+ /* U+6850 */ 0xCDA9, 0xC9A3, 0x96F8, 0xBBB8, 0xBDDB, 0xE8EA, 0x96F9, 0x96FA,
+ /* U+6858 */ 0x96FB, 0x96FC, 0x96FD, 0x96FE, 0x9740, 0x9741, 0x9742, 0x9743,
+ /* U+6860 */ 0xE8E2, 0xE8E3, 0xE8E5, 0xB5B5, 0xE8E7, 0xC7C5, 0xE8EB, 0xE8ED,
+ /* U+6868 */ 0xBDB0, 0xD7AE, 0x9744, 0xE8F8, 0x9745, 0x9746, 0x9747, 0x9748,
+ /* U+6870 */ 0x9749, 0x974A, 0x974B, 0x974C, 0xE8F5, 0x974D, 0xCDB0, 0xE8F6,
+ /* U+6878 */ 0x974E, 0x974F, 0x9750, 0x9751, 0x9752, 0x9753, 0x9754, 0x9755,
+ /* U+6880 */ 0x9756, 0xC1BA, 0x9757, 0xE8E8, 0x9758, 0xC3B7, 0xB0F0, 0x9759,
+ /* U+6888 */ 0x975A, 0x975B, 0x975C, 0x975D, 0x975E, 0x975F, 0x9760, 0xE8F4,
+ /* U+6890 */ 0x9761, 0x9762, 0x9763, 0xE8F7, 0x9764, 0x9765, 0x9766, 0xB9A3,
+ /* U+6898 */ 0x9767, 0x9768, 0x9769, 0x976A, 0x976B, 0x976C, 0x976D, 0x976E,
+ /* U+68A0 */ 0x976F, 0x9770, 0xC9D2, 0x9771, 0x9772, 0x9773, 0xC3CE, 0xCEE0,
+ /* U+68A8 */ 0xC0E6, 0x9774, 0x9775, 0x9776, 0x9777, 0xCBF3, 0x9778, 0xCCDD,
+ /* U+68B0 */ 0xD0B5, 0x9779, 0x977A, 0xCAE1, 0x977B, 0xE8F3, 0x977C, 0x977D,
+ /* U+68B8 */ 0x977E, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9785, 0x9786,
+ /* U+68C0 */ 0xBCEC, 0x9787, 0xE8F9, 0x9788, 0x9789, 0x978A, 0x978B, 0x978C,
+ /* U+68C8 */ 0x978D, 0xC3DE, 0x978E, 0xC6E5, 0x978F, 0xB9F7, 0x9790, 0x9791,
+ /* U+68D0 */ 0x9792, 0x9793, 0xB0F4, 0x9794, 0x9795, 0xD7D8, 0x9796, 0x9797,
+ /* U+68D8 */ 0xBCAC, 0x9798, 0xC5EF, 0x9799, 0x979A, 0x979B, 0x979C, 0x979D,
+ /* U+68E0 */ 0xCCC4, 0x979E, 0x979F, 0xE9A6, 0x97A0, 0x97A1, 0x97A2, 0x97A3,
+ /* U+68E8 */ 0x97A4, 0x97A5, 0x97A6, 0x97A7, 0x97A8, 0x97A9, 0xC9AD, 0x97AA,
+ /* U+68F0 */ 0xE9A2, 0xC0E2, 0x97AB, 0x97AC, 0x97AD, 0xBFC3, 0x97AE, 0x97AF,
+ /* U+68F8 */ 0x97B0, 0xE8FE, 0xB9D7, 0x97B1, 0xE8FB, 0x97B2, 0x97B3, 0x97B4,
+ /* U+6900 */ 0x97B5, 0xE9A4, 0x97B6, 0x97B7, 0x97B8, 0xD2CE, 0x97B9, 0x97BA,
+ /* U+6908 */ 0x97BB, 0x97BC, 0x97BD, 0xE9A3, 0x97BE, 0xD6B2, 0xD7B5, 0x97BF,
+ /* U+6910 */ 0xE9A7, 0x97C0, 0xBDB7, 0x97C1, 0x97C2, 0x97C3, 0x97C4, 0x97C5,
+ /* U+6918 */ 0x97C6, 0x97C7, 0x97C8, 0x97C9, 0x97CA, 0x97CB, 0x97CC, 0xE8FC,
+ /* U+6920 */ 0xE8FD, 0x97CD, 0x97CE, 0x97CF, 0xE9A1, 0x97D0, 0x97D1, 0x97D2,
+ /* U+6928 */ 0x97D3, 0x97D4, 0x97D5, 0x97D6, 0x97D7, 0xCDD6, 0x97D8, 0x97D9,
+ /* U+6930 */ 0xD2AC, 0x97DA, 0x97DB, 0x97DC, 0xE9B2, 0x97DD, 0x97DE, 0x97DF,
+ /* U+6938 */ 0x97E0, 0xE9A9, 0x97E1, 0x97E2, 0x97E3, 0xB4AA, 0x97E4, 0xB4BB,
+ /* U+6940 */ 0x97E5, 0x97E6, 0xE9AB, 0x97E7, 0x97E8, 0x97E9, 0x97EA, 0x97EB,
+ /* U+6948 */ 0x97EC, 0x97ED, 0x97EE, 0x97EF, 0x97F0, 0x97F1, 0x97F2, 0x97F3,
+ /* U+6950 */ 0x97F4, 0x97F5, 0x97F6, 0x97F7, 0xD0A8, 0x97F8, 0x97F9, 0xE9A5,
+ /* U+6958 */ 0x97FA, 0x97FB, 0xB3FE, 0x97FC, 0x97FD, 0xE9AC, 0xC0E3, 0x97FE,
+ /* U+6960 */ 0xE9AA, 0x9840, 0x9841, 0xE9B9, 0x9842, 0x9843, 0xE9B8, 0x9844,
+ /* U+6968 */ 0x9845, 0x9846, 0x9847, 0xE9AE, 0x9848, 0x9849, 0xE8FA, 0x984A,
+ /* U+6970 */ 0x984B, 0xE9A8, 0x984C, 0x984D, 0x984E, 0x984F, 0x9850, 0xBFAC,
+ /* U+6978 */ 0xE9B1, 0xE9BA, 0x9851, 0x9852, 0xC2A5, 0x9853, 0x9854, 0x9855,
+ /* U+6980 */ 0xE9AF, 0x9856, 0xB8C5, 0x9857, 0xE9AD, 0x9858, 0xD3DC, 0xE9B4,
+ /* U+6988 */ 0xE9B5, 0xE9B7, 0x9859, 0x985A, 0x985B, 0xE9C7, 0x985C, 0x985D,
+ /* U+6990 */ 0x985E, 0x985F, 0x9860, 0x9861, 0xC0C6, 0xE9C5, 0x9862, 0x9863,
+ /* U+6998 */ 0xE9B0, 0x9864, 0x9865, 0xE9BB, 0xB0F1, 0x9866, 0x9867, 0x9868,
+ /* U+69A0 */ 0x9869, 0x986A, 0x986B, 0x986C, 0x986D, 0x986E, 0x986F, 0xE9BC,
+ /* U+69A8 */ 0xD5A5, 0x9870, 0x9871, 0xE9BE, 0x9872, 0xE9BF, 0x9873, 0x9874,
+ /* U+69B0 */ 0x9875, 0xE9C1, 0x9876, 0x9877, 0xC1F1, 0x9878, 0x9879, 0xC8B6,
+ /* U+69B8 */ 0x987A, 0x987B, 0x987C, 0xE9BD, 0x987D, 0x987E, 0x9880, 0x9881,
+ /* U+69C0 */ 0x9882, 0xE9C2, 0x9883, 0x9884, 0x9885, 0x9886, 0x9887, 0x9888,
+ /* U+69C8 */ 0x9889, 0x988A, 0xE9C3, 0x988B, 0xE9B3, 0x988C, 0xE9B6, 0x988D,
+ /* U+69D0 */ 0xBBB1, 0x988E, 0x988F, 0x9890, 0xE9C0, 0x9891, 0x9892, 0x9893,
+ /* U+69D8 */ 0x9894, 0x9895, 0x9896, 0xBCF7, 0x9897, 0x9898, 0x9899, 0xE9C4,
+ /* U+69E0 */ 0xE9C6, 0x989A, 0x989B, 0x989C, 0x989D, 0x989E, 0x989F, 0x98A0,
+ /* U+69E8 */ 0x98A1, 0x98A2, 0x98A3, 0x98A4, 0x98A5, 0xE9CA, 0x98A6, 0x98A7,
+ /* U+69F0 */ 0x98A8, 0x98A9, 0xE9CE, 0x98AA, 0x98AB, 0x98AC, 0x98AD, 0x98AE,
+ /* U+69F8 */ 0x98AF, 0x98B0, 0x98B1, 0x98B2, 0x98B3, 0xB2DB, 0x98B4, 0xE9C8,
+ /* U+6A00 */ 0x98B5, 0x98B6, 0x98B7, 0x98B8, 0x98B9, 0x98BA, 0x98BB, 0x98BC,
+ /* U+6A08 */ 0x98BD, 0x98BE, 0xB7AE, 0x98BF, 0x98C0, 0x98C1, 0x98C2, 0x98C3,
+ /* U+6A10 */ 0x98C4, 0x98C5, 0x98C6, 0x98C7, 0x98C8, 0x98C9, 0x98CA, 0xE9CB,
+ /* U+6A18 */ 0xE9CC, 0x98CB, 0x98CC, 0x98CD, 0x98CE, 0x98CF, 0x98D0, 0xD5C1,
+ /* U+6A20 */ 0x98D1, 0xC4A3, 0x98D2, 0x98D3, 0x98D4, 0x98D5, 0x98D6, 0x98D7,
+ /* U+6A28 */ 0xE9D8, 0x98D8, 0xBAE1, 0x98D9, 0x98DA, 0x98DB, 0x98DC, 0xE9C9,
+ /* U+6A30 */ 0x98DD, 0xD3A3, 0x98DE, 0x98DF, 0x98E0, 0xE9D4, 0x98E1, 0x98E2,
+ /* U+6A38 */ 0x98E3, 0x98E4, 0x98E5, 0x98E6, 0x98E7, 0xE9D7, 0xE9D0, 0x98E8,
+ /* U+6A40 */ 0x98E9, 0x98EA, 0x98EB, 0x98EC, 0xE9CF, 0x98ED, 0x98EE, 0xC7C1,
+ /* U+6A48 */ 0x98EF, 0x98F0, 0x98F1, 0x98F2, 0x98F3, 0x98F4, 0x98F5, 0x98F6,
+ /* U+6A50 */ 0xE9D2, 0x98F7, 0x98F8, 0x98F9, 0x98FA, 0x98FB, 0x98FC, 0x98FD,
+ /* U+6A58 */ 0xE9D9, 0xB3C8, 0x98FE, 0xE9D3, 0x9940, 0x9941, 0x9942, 0x9943,
+ /* U+6A60 */ 0x9944, 0xCFF0, 0x9945, 0x9946, 0x9947, 0xE9CD, 0x9948, 0x9949,
+ /* U+6A68 */ 0x994A, 0x994B, 0x994C, 0x994D, 0x994E, 0x994F, 0x9950, 0x9951,
+ /* U+6A70 */ 0x9952, 0xB3F7, 0x9953, 0x9954, 0x9955, 0x9956, 0x9957, 0x9958,
+ /* U+6A78 */ 0x9959, 0xE9D6, 0x995A, 0x995B, 0xE9DA, 0x995C, 0x995D, 0x995E,
+ /* U+6A80 */ 0xCCB4, 0x995F, 0x9960, 0x9961, 0xCFAD, 0x9962, 0x9963, 0x9964,
+ /* U+6A88 */ 0x9965, 0x9966, 0x9967, 0x9968, 0x9969, 0x996A, 0xE9D5, 0x996B,
+ /* U+6A90 */ 0xE9DC, 0xE9DB, 0x996C, 0x996D, 0x996E, 0x996F, 0x9970, 0xE9DE,
+ /* U+6A98 */ 0x9971, 0x9972, 0x9973, 0x9974, 0x9975, 0x9976, 0x9977, 0x9978,
+ /* U+6AA0 */ 0xE9D1, 0x9979, 0x997A, 0x997B, 0x997C, 0x997D, 0x997E, 0x9980,
+ /* U+6AA8 */ 0x9981, 0xE9DD, 0x9982, 0xE9DF, 0xC3CA, 0x9983, 0x9984, 0x9985,
+ /* U+6AB0 */ 0x9986, 0x9987, 0x9988, 0x9989, 0x998A, 0x998B, 0x998C, 0x998D,
+ /* U+6AB8 */ 0x998E, 0x998F, 0x9990, 0x9991, 0x9992, 0x9993, 0x9994, 0x9995,
+ /* U+6AC0 */ 0x9996, 0x9997, 0x9998, 0x9999, 0x999A, 0x999B, 0x999C, 0x999D,
+ /* U+6AC8 */ 0x999E, 0x999F, 0x99A0, 0x99A1, 0x99A2, 0x99A3, 0x99A4, 0x99A5,
+ /* U+6AD0 */ 0x99A6, 0x99A7, 0x99A8, 0x99A9, 0x99AA, 0x99AB, 0x99AC, 0x99AD,
+ /* U+6AD8 */ 0x99AE, 0x99AF, 0x99B0, 0x99B1, 0x99B2, 0x99B3, 0x99B4, 0x99B5,
+ /* U+6AE0 */ 0x99B6, 0x99B7, 0x99B8, 0x99B9, 0x99BA, 0x99BB, 0x99BC, 0x99BD,
+ /* U+6AE8 */ 0x99BE, 0x99BF, 0x99C0, 0x99C1, 0x99C2, 0x99C3, 0x99C4, 0x99C5,
+ /* U+6AF0 */ 0x99C6, 0x99C7, 0x99C8, 0x99C9, 0x99CA, 0x99CB, 0x99CC, 0x99CD,
+ /* U+6AF8 */ 0x99CE, 0x99CF, 0x99D0, 0x99D1, 0x99D2, 0x99D3, 0x99D4, 0x99D5,
+ /* U+6B00 */ 0x99D6, 0x99D7, 0x99D8, 0x99D9, 0x99DA, 0x99DB, 0x99DC, 0x99DD,
+ /* U+6B08 */ 0x99DE, 0x99DF, 0x99E0, 0x99E1, 0x99E2, 0x99E3, 0x99E4, 0x99E5,
+ /* U+6B10 */ 0x99E6, 0x99E7, 0x99E8, 0x99E9, 0x99EA, 0x99EB, 0x99EC, 0x99ED,
+ /* U+6B18 */ 0x99EE, 0x99EF, 0x99F0, 0x99F1, 0x99F2, 0x99F3, 0x99F4, 0x99F5,
+ /* U+6B20 */ 0xC7B7, 0xB4CE, 0xBBB6, 0xD0C0, 0xECA3, 0x99F6, 0x99F7, 0xC5B7,
+ /* U+6B28 */ 0x99F8, 0x99F9, 0x99FA, 0x99FB, 0x99FC, 0x99FD, 0x99FE, 0x9A40,
+ /* U+6B30 */ 0x9A41, 0x9A42, 0xD3FB, 0x9A43, 0x9A44, 0x9A45, 0x9A46, 0xECA4,
+ /* U+6B38 */ 0x9A47, 0xECA5, 0xC6DB, 0x9A48, 0x9A49, 0x9A4A, 0xBFEE, 0x9A4B,
+ /* U+6B40 */ 0x9A4C, 0x9A4D, 0x9A4E, 0xECA6, 0x9A4F, 0x9A50, 0xECA7, 0xD0AA,
+ /* U+6B48 */ 0x9A51, 0xC7B8, 0x9A52, 0x9A53, 0xB8E8, 0x9A54, 0x9A55, 0x9A56,
+ /* U+6B50 */ 0x9A57, 0x9A58, 0x9A59, 0x9A5A, 0x9A5B, 0x9A5C, 0x9A5D, 0x9A5E,
+ /* U+6B58 */ 0x9A5F, 0xECA8, 0x9A60, 0x9A61, 0x9A62, 0x9A63, 0x9A64, 0x9A65,
+ /* U+6B60 */ 0x9A66, 0x9A67, 0xD6B9, 0xD5FD, 0xB4CB, 0xB2BD, 0xCEE4, 0xC6E7,
+ /* U+6B68 */ 0x9A68, 0x9A69, 0xCDE1, 0x9A6A, 0x9A6B, 0x9A6C, 0x9A6D, 0x9A6E,
+ /* U+6B70 */ 0x9A6F, 0x9A70, 0x9A71, 0x9A72, 0x9A73, 0x9A74, 0x9A75, 0x9A76,
+ /* U+6B78 */ 0x9A77, 0xB4F5, 0x9A78, 0xCBC0, 0xBCDF, 0x9A79, 0x9A7A, 0x9A7B,
+ /* U+6B80 */ 0x9A7C, 0xE9E2, 0xE9E3, 0xD1EA, 0xE9E5, 0x9A7D, 0xB4F9, 0xE9E4,
+ /* U+6B88 */ 0x9A7E, 0xD1B3, 0xCAE2, 0xB2D0, 0x9A80, 0xE9E8, 0x9A81, 0x9A82,
+ /* U+6B90 */ 0x9A83, 0x9A84, 0xE9E6, 0xE9E7, 0x9A85, 0x9A86, 0xD6B3, 0x9A87,
+ /* U+6B98 */ 0x9A88, 0x9A89, 0xE9E9, 0xE9EA, 0x9A8A, 0x9A8B, 0x9A8C, 0x9A8D,
+ /* U+6BA0 */ 0x9A8E, 0xE9EB, 0x9A8F, 0x9A90, 0x9A91, 0x9A92, 0x9A93, 0x9A94,
+ /* U+6BA8 */ 0x9A95, 0x9A96, 0xE9EC, 0x9A97, 0x9A98, 0x9A99, 0x9A9A, 0x9A9B,
+ /* U+6BB0 */ 0x9A9C, 0x9A9D, 0x9A9E, 0xECAF, 0xC5B9, 0xB6CE, 0x9A9F, 0xD2F3,
+ /* U+6BB8 */ 0x9AA0, 0x9AA1, 0x9AA2, 0x9AA3, 0x9AA4, 0x9AA5, 0x9AA6, 0xB5EE,
+ /* U+6BC0 */ 0x9AA7, 0xBBD9, 0xECB1, 0x9AA8, 0x9AA9, 0xD2E3, 0x9AAA, 0x9AAB,
+ /* U+6BC8 */ 0x9AAC, 0x9AAD, 0x9AAE, 0xCEE3, 0x9AAF, 0xC4B8, 0x9AB0, 0xC3BF,
+ /* U+6BD0 */ 0x9AB1, 0x9AB2, 0xB6BE, 0xD8B9, 0xB1C8, 0xB1CF, 0xB1D1, 0xC5FE,
+ /* U+6BD8 */ 0x9AB3, 0xB1D0, 0x9AB4, 0xC3AB, 0x9AB5, 0x9AB6, 0x9AB7, 0x9AB8,
+ /* U+6BE0 */ 0x9AB9, 0xD5B1, 0x9ABA, 0x9ABB, 0x9ABC, 0x9ABD, 0x9ABE, 0x9ABF,
+ /* U+6BE8 */ 0x9AC0, 0x9AC1, 0xEBA4, 0xBAC1, 0x9AC2, 0x9AC3, 0x9AC4, 0xCCBA,
+ /* U+6BF0 */ 0x9AC5, 0x9AC6, 0x9AC7, 0xEBA5, 0x9AC8, 0xEBA7, 0x9AC9, 0x9ACA,
+ /* U+6BF8 */ 0x9ACB, 0xEBA8, 0x9ACC, 0x9ACD, 0x9ACE, 0xEBA6, 0x9ACF, 0x9AD0,
+ /* U+6C00 */ 0x9AD1, 0x9AD2, 0x9AD3, 0x9AD4, 0x9AD5, 0xEBA9, 0xEBAB, 0xEBAA,
+ /* U+6C08 */ 0x9AD6, 0x9AD7, 0x9AD8, 0x9AD9, 0x9ADA, 0xEBAC, 0x9ADB, 0xCACF,
+ /* U+6C10 */ 0xD8B5, 0xC3F1, 0x9ADC, 0xC3A5, 0xC6F8, 0xEBAD, 0xC4CA, 0x9ADD,
+ /* U+6C18 */ 0xEBAE, 0xEBAF, 0xEBB0, 0xB7D5, 0x9ADE, 0x9ADF, 0x9AE0, 0xB7FA,
+ /* U+6C20 */ 0x9AE1, 0xEBB1, 0xC7E2, 0x9AE2, 0xEBB3, 0x9AE3, 0xBAA4, 0xD1F5,
+ /* U+6C28 */ 0xB0B1, 0xEBB2, 0xEBB4, 0x9AE4, 0x9AE5, 0x9AE6, 0xB5AA, 0xC2C8,
+ /* U+6C30 */ 0xC7E8, 0x9AE7, 0xEBB5, 0x9AE8, 0xCBAE, 0xE3DF, 0x9AE9, 0x9AEA,
+ /* U+6C38 */ 0xD3C0, 0x9AEB, 0x9AEC, 0x9AED, 0x9AEE, 0xD9DB, 0x9AEF, 0x9AF0,
+ /* U+6C40 */ 0xCDA1, 0xD6AD, 0xC7F3, 0x9AF1, 0x9AF2, 0x9AF3, 0xD9E0, 0xBBE3,
+ /* U+6C48 */ 0x9AF4, 0xBABA, 0xE3E2, 0x9AF5, 0x9AF6, 0x9AF7, 0x9AF8, 0x9AF9,
+ /* U+6C50 */ 0xCFAB, 0x9AFA, 0x9AFB, 0x9AFC, 0xE3E0, 0xC9C7, 0x9AFD, 0xBAB9,
+ /* U+6C58 */ 0x9AFE, 0x9B40, 0x9B41, 0xD1B4, 0xE3E1, 0xC8EA, 0xB9AF, 0xBDAD,
+ /* U+6C60 */ 0xB3D8, 0xCEDB, 0x9B42, 0x9B43, 0xCCC0, 0x9B44, 0x9B45, 0x9B46,
+ /* U+6C68 */ 0xE3E8, 0xE3E9, 0xCDF4, 0x9B47, 0x9B48, 0x9B49, 0x9B4A, 0x9B4B,
+ /* U+6C70 */ 0xCCAD, 0x9B4C, 0xBCB3, 0x9B4D, 0xE3EA, 0x9B4E, 0xE3EB, 0x9B4F,
+ /* U+6C78 */ 0x9B50, 0xD0DA, 0x9B51, 0x9B52, 0x9B53, 0xC6FB, 0xB7DA, 0x9B54,
+ /* U+6C80 */ 0x9B55, 0xC7DF, 0xD2CA, 0xCED6, 0x9B56, 0xE3E4, 0xE3EC, 0x9B57,
+ /* U+6C88 */ 0xC9F2, 0xB3C1, 0x9B58, 0x9B59, 0xE3E7, 0x9B5A, 0x9B5B, 0xC6E3,
+ /* U+6C90 */ 0xE3E5, 0x9B5C, 0x9B5D, 0xEDB3, 0xE3E6, 0x9B5E, 0x9B5F, 0x9B60,
+ /* U+6C98 */ 0x9B61, 0xC9B3, 0x9B62, 0xC5E6, 0x9B63, 0x9B64, 0x9B65, 0xB9B5,
+ /* U+6CA0 */ 0x9B66, 0xC3BB, 0x9B67, 0xE3E3, 0xC5BD, 0xC1A4, 0xC2D9, 0xB2D7,
+ /* U+6CA8 */ 0x9B68, 0xE3ED, 0xBBA6, 0xC4AD, 0x9B69, 0xE3F0, 0xBEDA, 0x9B6A,
+ /* U+6CB0 */ 0x9B6B, 0xE3FB, 0xE3F5, 0xBAD3, 0x9B6C, 0x9B6D, 0x9B6E, 0x9B6F,
+ /* U+6CB8 */ 0xB7D0, 0xD3CD, 0x9B70, 0xD6CE, 0xD5D3, 0xB9C1, 0xD5B4, 0xD1D8,
+ /* U+6CC0 */ 0x9B71, 0x9B72, 0x9B73, 0x9B74, 0xD0B9, 0xC7F6, 0x9B75, 0x9B76,
+ /* U+6CC8 */ 0x9B77, 0xC8AA, 0xB2B4, 0x9B78, 0xC3DA, 0x9B79, 0x9B7A, 0x9B7B,
+ /* U+6CD0 */ 0xE3EE, 0x9B7C, 0x9B7D, 0xE3FC, 0xE3EF, 0xB7A8, 0xE3F7, 0xE3F4,
+ /* U+6CD8 */ 0x9B7E, 0x9B80, 0x9B81, 0xB7BA, 0x9B82, 0x9B83, 0xC5A2, 0x9B84,
+ /* U+6CE0 */ 0xE3F6, 0xC5DD, 0xB2A8, 0xC6FC, 0x9B85, 0xC4E0, 0x9B86, 0x9B87,
+ /* U+6CE8 */ 0xD7A2, 0x9B88, 0xC0E1, 0xE3F9, 0x9B89, 0x9B8A, 0xE3FA, 0xE3FD,
+ /* U+6CF0 */ 0xCCA9, 0xE3F3, 0x9B8B, 0xD3BE, 0x9B8C, 0xB1C3, 0xEDB4, 0xE3F1,
+ /* U+6CF8 */ 0xE3F2, 0x9B8D, 0xE3F8, 0xD0BA, 0xC6C3, 0xD4F3, 0xE3FE, 0x9B8E,
+ /* U+6D00 */ 0x9B8F, 0xBDE0, 0x9B90, 0x9B91, 0xE4A7, 0x9B92, 0x9B93, 0xE4A6,
+ /* U+6D08 */ 0x9B94, 0x9B95, 0x9B96, 0xD1F3, 0xE4A3, 0x9B97, 0xE4A9, 0x9B98,
+ /* U+6D10 */ 0x9B99, 0x9B9A, 0xC8F7, 0x9B9B, 0x9B9C, 0x9B9D, 0x9B9E, 0xCFB4,
+ /* U+6D18 */ 0x9B9F, 0xE4A8, 0xE4AE, 0xC2E5, 0x9BA0, 0x9BA1, 0xB6B4, 0x9BA2,
+ /* U+6D20 */ 0x9BA3, 0x9BA4, 0x9BA5, 0x9BA6, 0x9BA7, 0xBDF2, 0x9BA8, 0xE4A2,
+ /* U+6D28 */ 0x9BA9, 0x9BAA, 0xBAE9, 0xE4AA, 0x9BAB, 0x9BAC, 0xE4AC, 0x9BAD,
+ /* U+6D30 */ 0x9BAE, 0xB6FD, 0xD6DE, 0xE4B2, 0x9BAF, 0xE4AD, 0x9BB0, 0x9BB1,
+ /* U+6D38 */ 0x9BB2, 0xE4A1, 0x9BB3, 0xBBEE, 0xCDDD, 0xC7A2, 0xC5C9, 0x9BB4,
+ /* U+6D40 */ 0x9BB5, 0xC1F7, 0x9BB6, 0xE4A4, 0x9BB7, 0xC7B3, 0xBDAC, 0xBDBD,
+ /* U+6D48 */ 0xE4A5, 0x9BB8, 0xD7C7, 0xB2E2, 0x9BB9, 0xE4AB, 0xBCC3, 0xE4AF,
+ /* U+6D50 */ 0x9BBA, 0xBBEB, 0xE4B0, 0xC5A8, 0xE4B1, 0x9BBB, 0x9BBC, 0x9BBD,
+ /* U+6D58 */ 0x9BBE, 0xD5E3, 0xBFA3, 0x9BBF, 0xE4BA, 0x9BC0, 0xE4B7, 0x9BC1,
+ /* U+6D60 */ 0xE4BB, 0x9BC2, 0x9BC3, 0xE4BD, 0x9BC4, 0x9BC5, 0xC6D6, 0x9BC6,
+ /* U+6D68 */ 0x9BC7, 0xBAC6, 0xC0CB, 0x9BC8, 0x9BC9, 0x9BCA, 0xB8A1, 0xE4B4,
+ /* U+6D70 */ 0x9BCB, 0x9BCC, 0x9BCD, 0x9BCE, 0xD4A1, 0x9BCF, 0x9BD0, 0xBAA3,
+ /* U+6D78 */ 0xBDFE, 0x9BD1, 0x9BD2, 0x9BD3, 0xE4BC, 0x9BD4, 0x9BD5, 0x9BD6,
+ /* U+6D80 */ 0x9BD7, 0x9BD8, 0xCDBF, 0x9BD9, 0x9BDA, 0xC4F9, 0x9BDB, 0x9BDC,
+ /* U+6D88 */ 0xCFFB, 0xC9E6, 0x9BDD, 0x9BDE, 0xD3BF, 0x9BDF, 0xCFD1, 0x9BE0,
+ /* U+6D90 */ 0x9BE1, 0xE4B3, 0x9BE2, 0xE4B8, 0xE4B9, 0xCCE9, 0x9BE3, 0x9BE4,
+ /* U+6D98 */ 0x9BE5, 0x9BE6, 0x9BE7, 0xCCCE, 0x9BE8, 0xC0D4, 0xE4B5, 0xC1B0,
+ /* U+6DA0 */ 0xE4B6, 0xCED0, 0x9BE9, 0xBBC1, 0xB5D3, 0x9BEA, 0xC8F3, 0xBDA7,
+ /* U+6DA8 */ 0xD5C7, 0xC9AC, 0xB8A2, 0xE4CA, 0x9BEB, 0x9BEC, 0xE4CC, 0xD1C4,
+ /* U+6DB0 */ 0x9BED, 0x9BEE, 0xD2BA, 0x9BEF, 0x9BF0, 0xBAAD, 0x9BF1, 0x9BF2,
+ /* U+6DB8 */ 0xBAD4, 0x9BF3, 0x9BF4, 0x9BF5, 0x9BF6, 0x9BF7, 0x9BF8, 0xE4C3,
+ /* U+6DC0 */ 0xB5ED, 0x9BF9, 0x9BFA, 0x9BFB, 0xD7CD, 0xE4C0, 0xCFFD, 0xE4BF,
+ /* U+6DC8 */ 0x9BFC, 0x9BFD, 0x9BFE, 0xC1DC, 0xCCCA, 0x9C40, 0x9C41, 0x9C42,
+ /* U+6DD0 */ 0x9C43, 0xCAE7, 0x9C44, 0x9C45, 0x9C46, 0x9C47, 0xC4D7, 0x9C48,
+ /* U+6DD8 */ 0xCCD4, 0xE4C8, 0x9C49, 0x9C4A, 0x9C4B, 0xE4C7, 0xE4C1, 0x9C4C,
+ /* U+6DE0 */ 0xE4C4, 0xB5AD, 0x9C4D, 0x9C4E, 0xD3D9, 0x9C4F, 0xE4C6, 0x9C50,
+ /* U+6DE8 */ 0x9C51, 0x9C52, 0x9C53, 0xD2F9, 0xB4E3, 0x9C54, 0xBBB4, 0x9C55,
+ /* U+6DF0 */ 0x9C56, 0xC9EE, 0x9C57, 0xB4BE, 0x9C58, 0x9C59, 0x9C5A, 0xBBEC,
+ /* U+6DF8 */ 0x9C5B, 0xD1CD, 0x9C5C, 0xCCED, 0xEDB5, 0x9C5D, 0x9C5E, 0x9C5F,
+ /* U+6E00 */ 0x9C60, 0x9C61, 0x9C62, 0x9C63, 0x9C64, 0xC7E5, 0x9C65, 0x9C66,
+ /* U+6E08 */ 0x9C67, 0x9C68, 0xD4A8, 0x9C69, 0xE4CB, 0xD7D5, 0xE4C2, 0x9C6A,
+ /* U+6E10 */ 0xBDA5, 0xE4C5, 0x9C6B, 0x9C6C, 0xD3E6, 0x9C6D, 0xE4C9, 0xC9F8,
+ /* U+6E18 */ 0x9C6E, 0x9C6F, 0xE4BE, 0x9C70, 0x9C71, 0xD3E5, 0x9C72, 0x9C73,
+ /* U+6E20 */ 0xC7FE, 0xB6C9, 0x9C74, 0xD4FC, 0xB2B3, 0xE4D7, 0x9C75, 0x9C76,
+ /* U+6E28 */ 0x9C77, 0xCEC2, 0x9C78, 0xE4CD, 0x9C79, 0xCEBC, 0x9C7A, 0xB8DB,
+ /* U+6E30 */ 0x9C7B, 0x9C7C, 0xE4D6, 0x9C7D, 0xBFCA, 0x9C7E, 0x9C80, 0x9C81,
+ /* U+6E38 */ 0xD3CE, 0x9C82, 0xC3EC, 0x9C83, 0x9C84, 0x9C85, 0x9C86, 0x9C87,
+ /* U+6E40 */ 0x9C88, 0x9C89, 0x9C8A, 0xC5C8, 0xE4D8, 0x9C8B, 0x9C8C, 0x9C8D,
+ /* U+6E48 */ 0x9C8E, 0x9C8F, 0x9C90, 0x9C91, 0x9C92, 0xCDC4, 0xE4CF, 0x9C93,
+ /* U+6E50 */ 0x9C94, 0x9C95, 0x9C96, 0xE4D4, 0xE4D5, 0x9C97, 0xBAFE, 0x9C98,
+ /* U+6E58 */ 0xCFE6, 0x9C99, 0x9C9A, 0xD5BF, 0x9C9B, 0x9C9C, 0x9C9D, 0xE4D2,
+ /* U+6E60 */ 0x9C9E, 0x9C9F, 0x9CA0, 0x9CA1, 0x9CA2, 0x9CA3, 0x9CA4, 0x9CA5,
+ /* U+6E68 */ 0x9CA6, 0x9CA7, 0x9CA8, 0xE4D0, 0x9CA9, 0x9CAA, 0xE4CE, 0x9CAB,
+ /* U+6E70 */ 0x9CAC, 0x9CAD, 0x9CAE, 0x9CAF, 0x9CB0, 0x9CB1, 0x9CB2, 0x9CB3,
+ /* U+6E78 */ 0x9CB4, 0x9CB5, 0x9CB6, 0x9CB7, 0x9CB8, 0x9CB9, 0xCDE5, 0xCAAA,
+ /* U+6E80 */ 0x9CBA, 0x9CBB, 0x9CBC, 0xC0A3, 0x9CBD, 0xBDA6, 0xE4D3, 0x9CBE,
+ /* U+6E88 */ 0x9CBF, 0xB8C8, 0x9CC0, 0x9CC1, 0x9CC2, 0x9CC3, 0x9CC4, 0xE4E7,
+ /* U+6E90 */ 0xD4B4, 0x9CC5, 0x9CC6, 0x9CC7, 0x9CC8, 0x9CC9, 0x9CCA, 0x9CCB,
+ /* U+6E98 */ 0xE4DB, 0x9CCC, 0x9CCD, 0x9CCE, 0xC1EF, 0x9CCF, 0x9CD0, 0xE4E9,
+ /* U+6EA0 */ 0x9CD1, 0x9CD2, 0xD2E7, 0x9CD3, 0x9CD4, 0xE4DF, 0x9CD5, 0xE4E0,
+ /* U+6EA8 */ 0x9CD6, 0x9CD7, 0xCFAA, 0x9CD8, 0x9CD9, 0x9CDA, 0x9CDB, 0xCBDD,
+ /* U+6EB0 */ 0x9CDC, 0xE4DA, 0xE4D1, 0x9CDD, 0xE4E5, 0x9CDE, 0xC8DC, 0xE4E3,
+ /* U+6EB8 */ 0x9CDF, 0x9CE0, 0xC4E7, 0xE4E2, 0x9CE1, 0xE4E1, 0x9CE2, 0x9CE3,
+ /* U+6EC0 */ 0x9CE4, 0xB3FC, 0xE4E8, 0x9CE5, 0x9CE6, 0x9CE7, 0x9CE8, 0xB5E1,
+ /* U+6EC8 */ 0x9CE9, 0x9CEA, 0x9CEB, 0xD7CC, 0x9CEC, 0x9CED, 0x9CEE, 0xE4E6,
+ /* U+6ED0 */ 0x9CEF, 0xBBAC, 0x9CF0, 0xD7D2, 0xCCCF, 0xEBF8, 0x9CF1, 0xE4E4,
+ /* U+6ED8 */ 0x9CF2, 0x9CF3, 0xB9F6, 0x9CF4, 0x9CF5, 0x9CF6, 0xD6CD, 0xE4D9,
+ /* U+6EE0 */ 0xE4DC, 0xC2FA, 0xE4DE, 0x9CF7, 0xC2CB, 0xC0C4, 0xC2D0, 0x9CF8,
+ /* U+6EE8 */ 0xB1F5, 0xCCB2, 0x9CF9, 0x9CFA, 0x9CFB, 0x9CFC, 0x9CFD, 0x9CFE,
+ /* U+6EF0 */ 0x9D40, 0x9D41, 0x9D42, 0x9D43, 0xB5CE, 0x9D44, 0x9D45, 0x9D46,
+ /* U+6EF8 */ 0x9D47, 0xE4EF, 0x9D48, 0x9D49, 0x9D4A, 0x9D4B, 0x9D4C, 0x9D4D,
+ /* U+6F00 */ 0x9D4E, 0x9D4F, 0xC6AF, 0x9D50, 0x9D51, 0x9D52, 0xC6E1, 0x9D53,
+ /* U+6F08 */ 0x9D54, 0xE4F5, 0x9D55, 0x9D56, 0x9D57, 0x9D58, 0x9D59, 0xC2A9,
+ /* U+6F10 */ 0x9D5A, 0x9D5B, 0x9D5C, 0xC0EC, 0xD1DD, 0xE4EE, 0x9D5D, 0x9D5E,
+ /* U+6F18 */ 0x9D5F, 0x9D60, 0x9D61, 0x9D62, 0x9D63, 0x9D64, 0x9D65, 0x9D66,
+ /* U+6F20 */ 0xC4AE, 0x9D67, 0x9D68, 0x9D69, 0xE4ED, 0x9D6A, 0x9D6B, 0x9D6C,
+ /* U+6F28 */ 0x9D6D, 0xE4F6, 0xE4F4, 0xC2FE, 0x9D6E, 0xE4DD, 0x9D6F, 0xE4F0,
+ /* U+6F30 */ 0x9D70, 0xCAFE, 0x9D71, 0xD5C4, 0x9D72, 0x9D73, 0xE4F1, 0x9D74,
+ /* U+6F38 */ 0x9D75, 0x9D76, 0x9D77, 0x9D78, 0x9D79, 0x9D7A, 0xD1FA, 0x9D7B,
+ /* U+6F40 */ 0x9D7C, 0x9D7D, 0x9D7E, 0x9D80, 0x9D81, 0x9D82, 0xE4EB, 0xE4EC,
+ /* U+6F48 */ 0x9D83, 0x9D84, 0x9D85, 0xE4F2, 0x9D86, 0xCEAB, 0x9D87, 0x9D88,
+ /* U+6F50 */ 0x9D89, 0x9D8A, 0x9D8B, 0x9D8C, 0x9D8D, 0x9D8E, 0x9D8F, 0x9D90,
+ /* U+6F58 */ 0xC5CB, 0x9D91, 0x9D92, 0x9D93, 0xC7B1, 0x9D94, 0xC2BA, 0x9D95,
+ /* U+6F60 */ 0x9D96, 0x9D97, 0xE4EA, 0x9D98, 0x9D99, 0x9D9A, 0xC1CA, 0x9D9B,
+ /* U+6F68 */ 0x9D9C, 0x9D9D, 0x9D9E, 0x9D9F, 0x9DA0, 0xCCB6, 0xB3B1, 0x9DA1,
+ /* U+6F70 */ 0x9DA2, 0x9DA3, 0xE4FB, 0x9DA4, 0xE4F3, 0x9DA5, 0x9DA6, 0x9DA7,
+ /* U+6F78 */ 0xE4FA, 0x9DA8, 0xE4FD, 0x9DA9, 0xE4FC, 0x9DAA, 0x9DAB, 0x9DAC,
+ /* U+6F80 */ 0x9DAD, 0x9DAE, 0x9DAF, 0x9DB0, 0xB3CE, 0x9DB1, 0x9DB2, 0x9DB3,
+ /* U+6F88 */ 0xB3BA, 0xE4F7, 0x9DB4, 0x9DB5, 0xE4F9, 0xE4F8, 0xC5EC, 0x9DB6,
+ /* U+6F90 */ 0x9DB7, 0x9DB8, 0x9DB9, 0x9DBA, 0x9DBB, 0x9DBC, 0x9DBD, 0x9DBE,
+ /* U+6F98 */ 0x9DBF, 0x9DC0, 0x9DC1, 0x9DC2, 0xC0BD, 0x9DC3, 0x9DC4, 0x9DC5,
+ /* U+6FA0 */ 0x9DC6, 0xD4E8, 0x9DC7, 0x9DC8, 0x9DC9, 0x9DCA, 0x9DCB, 0xE5A2,
+ /* U+6FA8 */ 0x9DCC, 0x9DCD, 0x9DCE, 0x9DCF, 0x9DD0, 0x9DD1, 0x9DD2, 0x9DD3,
+ /* U+6FB0 */ 0x9DD4, 0x9DD5, 0x9DD6, 0xB0C4, 0x9DD7, 0x9DD8, 0xE5A4, 0x9DD9,
+ /* U+6FB8 */ 0x9DDA, 0xE5A3, 0x9DDB, 0x9DDC, 0x9DDD, 0x9DDE, 0x9DDF, 0x9DE0,
+ /* U+6FC0 */ 0xBCA4, 0x9DE1, 0xE5A5, 0x9DE2, 0x9DE3, 0x9DE4, 0x9DE5, 0x9DE6,
+ /* U+6FC8 */ 0x9DE7, 0xE5A1, 0x9DE8, 0x9DE9, 0x9DEA, 0x9DEB, 0x9DEC, 0x9DED,
+ /* U+6FD0 */ 0x9DEE, 0xE4FE, 0xB1F4, 0x9DEF, 0x9DF0, 0x9DF1, 0x9DF2, 0x9DF3,
+ /* U+6FD8 */ 0x9DF4, 0x9DF5, 0x9DF6, 0x9DF7, 0x9DF8, 0x9DF9, 0xE5A8, 0x9DFA,
+ /* U+6FE0 */ 0xE5A9, 0xE5A6, 0x9DFB, 0x9DFC, 0x9DFD, 0x9DFE, 0x9E40, 0x9E41,
+ /* U+6FE8 */ 0x9E42, 0x9E43, 0x9E44, 0x9E45, 0x9E46, 0x9E47, 0xE5A7, 0xE5AA,
+ /* U+6FF0 */ 0x9E48, 0x9E49, 0x9E4A, 0x9E4B, 0x9E4C, 0x9E4D, 0x9E4E, 0x9E4F,
+ /* U+6FF8 */ 0x9E50, 0x9E51, 0x9E52, 0x9E53, 0x9E54, 0x9E55, 0x9E56, 0x9E57,
+ /* U+7000 */ 0x9E58, 0x9E59, 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5D, 0x9E5E, 0x9E5F,
+ /* U+7008 */ 0x9E60, 0x9E61, 0x9E62, 0x9E63, 0x9E64, 0x9E65, 0x9E66, 0x9E67,
+ /* U+7010 */ 0x9E68, 0xC6D9, 0x9E69, 0x9E6A, 0x9E6B, 0x9E6C, 0x9E6D, 0x9E6E,
+ /* U+7018 */ 0x9E6F, 0x9E70, 0xE5AB, 0xE5AD, 0x9E71, 0x9E72, 0x9E73, 0x9E74,
+ /* U+7020 */ 0x9E75, 0x9E76, 0x9E77, 0xE5AC, 0x9E78, 0x9E79, 0x9E7A, 0x9E7B,
+ /* U+7028 */ 0x9E7C, 0x9E7D, 0x9E7E, 0x9E80, 0x9E81, 0x9E82, 0x9E83, 0x9E84,
+ /* U+7030 */ 0x9E85, 0x9E86, 0x9E87, 0x9E88, 0x9E89, 0xE5AF, 0x9E8A, 0x9E8B,
+ /* U+7038 */ 0x9E8C, 0xE5AE, 0x9E8D, 0x9E8E, 0x9E8F, 0x9E90, 0x9E91, 0x9E92,
+ /* U+7040 */ 0x9E93, 0x9E94, 0x9E95, 0x9E96, 0x9E97, 0x9E98, 0x9E99, 0x9E9A,
+ /* U+7048 */ 0x9E9B, 0x9E9C, 0x9E9D, 0x9E9E, 0xB9E0, 0x9E9F, 0x9EA0, 0xE5B0,
+ /* U+7050 */ 0x9EA1, 0x9EA2, 0x9EA3, 0x9EA4, 0x9EA5, 0x9EA6, 0x9EA7, 0x9EA8,
+ /* U+7058 */ 0x9EA9, 0x9EAA, 0x9EAB, 0x9EAC, 0x9EAD, 0x9EAE, 0xE5B1, 0x9EAF,
+ /* U+7060 */ 0x9EB0, 0x9EB1, 0x9EB2, 0x9EB3, 0x9EB4, 0x9EB5, 0x9EB6, 0x9EB7,
+ /* U+7068 */ 0x9EB8, 0x9EB9, 0x9EBA, 0xBBF0, 0xECE1, 0xC3F0, 0x9EBB, 0xB5C6,
+ /* U+7070 */ 0xBBD2, 0x9EBC, 0x9EBD, 0x9EBE, 0x9EBF, 0xC1E9, 0xD4EE, 0x9EC0,
+ /* U+7078 */ 0xBEC4, 0x9EC1, 0x9EC2, 0x9EC3, 0xD7C6, 0x9EC4, 0xD4D6, 0xB2D3,
+ /* U+7080 */ 0xECBE, 0x9EC5, 0x9EC6, 0x9EC7, 0x9EC8, 0xEAC1, 0x9EC9, 0x9ECA,
+ /* U+7088 */ 0x9ECB, 0xC2AF, 0xB4B6, 0x9ECC, 0x9ECD, 0x9ECE, 0xD1D7, 0x9ECF,
+ /* U+7090 */ 0x9ED0, 0x9ED1, 0xB3B4, 0x9ED2, 0xC8B2, 0xBFBB, 0xECC0, 0x9ED3,
+ /* U+7098 */ 0x9ED4, 0xD6CB, 0x9ED5, 0x9ED6, 0xECBF, 0xECC1, 0x9ED7, 0x9ED8,
+ /* U+70A0 */ 0x9ED9, 0x9EDA, 0x9EDB, 0x9EDC, 0x9EDD, 0x9EDE, 0x9EDF, 0x9EE0,
+ /* U+70A8 */ 0x9EE1, 0x9EE2, 0x9EE3, 0xECC5, 0xBEE6, 0xCCBF, 0xC5DA, 0xBEBC,
+ /* U+70B0 */ 0x9EE4, 0xECC6, 0x9EE5, 0xB1FE, 0x9EE6, 0x9EE7, 0x9EE8, 0xECC4,
+ /* U+70B8 */ 0xD5A8, 0xB5E3, 0x9EE9, 0xECC2, 0xC1B6, 0xB3E3, 0x9EEA, 0x9EEB,
+ /* U+70C0 */ 0xECC3, 0xCBB8, 0xC0C3, 0xCCFE, 0x9EEC, 0x9EED, 0x9EEE, 0x9EEF,
+ /* U+70C8 */ 0xC1D2, 0x9EF0, 0xECC8, 0x9EF1, 0x9EF2, 0x9EF3, 0x9EF4, 0x9EF5,
+ /* U+70D0 */ 0x9EF6, 0x9EF7, 0x9EF8, 0x9EF9, 0x9EFA, 0x9EFB, 0x9EFC, 0x9EFD,
+ /* U+70D8 */ 0xBAE6, 0xC0D3, 0x9EFE, 0xD6F2, 0x9F40, 0x9F41, 0x9F42, 0xD1CC,
+ /* U+70E0 */ 0x9F43, 0x9F44, 0x9F45, 0x9F46, 0xBFBE, 0x9F47, 0xB7B3, 0xC9D5,
+ /* U+70E8 */ 0xECC7, 0xBBE2, 0x9F48, 0xCCCC, 0xBDFD, 0xC8C8, 0x9F49, 0xCFA9,
+ /* U+70F0 */ 0x9F4A, 0x9F4B, 0x9F4C, 0x9F4D, 0x9F4E, 0x9F4F, 0x9F50, 0xCDE9,
+ /* U+70F8 */ 0x9F51, 0xC5EB, 0x9F52, 0x9F53, 0x9F54, 0xB7E9, 0x9F55, 0x9F56,
+ /* U+7100 */ 0x9F57, 0x9F58, 0x9F59, 0x9F5A, 0x9F5B, 0x9F5C, 0x9F5D, 0x9F5E,
+ /* U+7108 */ 0x9F5F, 0xD1C9, 0xBAB8, 0x9F60, 0x9F61, 0x9F62, 0x9F63, 0x9F64,
+ /* U+7110 */ 0xECC9, 0x9F65, 0x9F66, 0xECCA, 0x9F67, 0xBBC0, 0xECCB, 0x9F68,
+ /* U+7118 */ 0xECE2, 0xB1BA, 0xB7D9, 0x9F69, 0x9F6A, 0x9F6B, 0x9F6C, 0x9F6D,
+ /* U+7120 */ 0x9F6E, 0x9F6F, 0x9F70, 0x9F71, 0x9F72, 0x9F73, 0xBDB9, 0x9F74,
+ /* U+7128 */ 0x9F75, 0x9F76, 0x9F77, 0x9F78, 0x9F79, 0x9F7A, 0x9F7B, 0xECCC,
+ /* U+7130 */ 0xD1E6, 0xECCD, 0x9F7C, 0x9F7D, 0x9F7E, 0x9F80, 0xC8BB, 0x9F81,
+ /* U+7138 */ 0x9F82, 0x9F83, 0x9F84, 0x9F85, 0x9F86, 0x9F87, 0x9F88, 0x9F89,
+ /* U+7140 */ 0x9F8A, 0x9F8B, 0x9F8C, 0x9F8D, 0x9F8E, 0xECD1, 0x9F8F, 0x9F90,
+ /* U+7148 */ 0x9F91, 0x9F92, 0xECD3, 0x9F93, 0xBBCD, 0x9F94, 0xBCE5, 0x9F95,
+ /* U+7150 */ 0x9F96, 0x9F97, 0x9F98, 0x9F99, 0x9F9A, 0x9F9B, 0x9F9C, 0x9F9D,
+ /* U+7158 */ 0x9F9E, 0x9F9F, 0x9FA0, 0x9FA1, 0xECCF, 0x9FA2, 0xC9B7, 0x9FA3,
+ /* U+7160 */ 0x9FA4, 0x9FA5, 0x9FA6, 0x9FA7, 0xC3BA, 0x9FA8, 0xECE3, 0xD5D5,
+ /* U+7168 */ 0xECD0, 0x9FA9, 0x9FAA, 0x9FAB, 0x9FAC, 0x9FAD, 0xD6F3, 0x9FAE,
+ /* U+7170 */ 0x9FAF, 0x9FB0, 0xECD2, 0xECCE, 0x9FB1, 0x9FB2, 0x9FB3, 0x9FB4,
+ /* U+7178 */ 0xECD4, 0x9FB5, 0xECD5, 0x9FB6, 0x9FB7, 0xC9BF, 0x9FB8, 0x9FB9,
+ /* U+7180 */ 0x9FBA, 0x9FBB, 0x9FBC, 0x9FBD, 0xCFA8, 0x9FBE, 0x9FBF, 0x9FC0,
+ /* U+7188 */ 0x9FC1, 0x9FC2, 0xD0DC, 0x9FC3, 0x9FC4, 0x9FC5, 0x9FC6, 0xD1AC,
+ /* U+7190 */ 0x9FC7, 0x9FC8, 0x9FC9, 0x9FCA, 0xC8DB, 0x9FCB, 0x9FCC, 0x9FCD,
+ /* U+7198 */ 0xECD6, 0xCEF5, 0x9FCE, 0x9FCF, 0x9FD0, 0x9FD1, 0x9FD2, 0xCAEC,
+ /* U+71A0 */ 0xECDA, 0x9FD3, 0x9FD4, 0x9FD5, 0x9FD6, 0x9FD7, 0x9FD8, 0x9FD9,
+ /* U+71A8 */ 0xECD9, 0x9FDA, 0x9FDB, 0x9FDC, 0xB0BE, 0x9FDD, 0x9FDE, 0x9FDF,
+ /* U+71B0 */ 0x9FE0, 0x9FE1, 0x9FE2, 0xECD7, 0x9FE3, 0xECD8, 0x9FE4, 0x9FE5,
+ /* U+71B8 */ 0x9FE6, 0xECE4, 0x9FE7, 0x9FE8, 0x9FE9, 0x9FEA, 0x9FEB, 0x9FEC,
+ /* U+71C0 */ 0x9FED, 0x9FEE, 0x9FEF, 0xC8BC, 0x9FF0, 0x9FF1, 0x9FF2, 0x9FF3,
+ /* U+71C8 */ 0x9FF4, 0x9FF5, 0x9FF6, 0x9FF7, 0x9FF8, 0x9FF9, 0xC1C7, 0x9FFA,
+ /* U+71D0 */ 0x9FFB, 0x9FFC, 0x9FFD, 0x9FFE, 0xECDC, 0xD1E0, 0xA040, 0xA041,
+ /* U+71D8 */ 0xA042, 0xA043, 0xA044, 0xA045, 0xA046, 0xA047, 0xA048, 0xA049,
+ /* U+71E0 */ 0xECDB, 0xA04A, 0xA04B, 0xA04C, 0xA04D, 0xD4EF, 0xA04E, 0xECDD,
+ /* U+71E8 */ 0xA04F, 0xA050, 0xA051, 0xA052, 0xA053, 0xA054, 0xDBC6, 0xA055,
+ /* U+71F0 */ 0xA056, 0xA057, 0xA058, 0xA059, 0xA05A, 0xA05B, 0xA05C, 0xA05D,
+ /* U+71F8 */ 0xA05E, 0xECDE, 0xA05F, 0xA060, 0xA061, 0xA062, 0xA063, 0xA064,
+ /* U+7200 */ 0xA065, 0xA066, 0xA067, 0xA068, 0xA069, 0xA06A, 0xB1AC, 0xA06B,
+ /* U+7208 */ 0xA06C, 0xA06D, 0xA06E, 0xA06F, 0xA070, 0xA071, 0xA072, 0xA073,
+ /* U+7210 */ 0xA074, 0xA075, 0xA076, 0xA077, 0xA078, 0xA079, 0xA07A, 0xA07B,
+ /* U+7218 */ 0xA07C, 0xA07D, 0xA07E, 0xA080, 0xA081, 0xECDF, 0xA082, 0xA083,
+ /* U+7220 */ 0xA084, 0xA085, 0xA086, 0xA087, 0xA088, 0xA089, 0xA08A, 0xA08B,
+ /* U+7228 */ 0xECE0, 0xA08C, 0xD7A6, 0xA08D, 0xC5C0, 0xA08E, 0xA08F, 0xA090,
+ /* U+7230 */ 0xEBBC, 0xB0AE, 0xA091, 0xA092, 0xA093, 0xBEF4, 0xB8B8, 0xD2AF,
+ /* U+7238 */ 0xB0D6, 0xB5F9, 0xA094, 0xD8B3, 0xA095, 0xCBAC, 0xA096, 0xE3DD,
+ /* U+7240 */ 0xA097, 0xA098, 0xA099, 0xA09A, 0xA09B, 0xA09C, 0xA09D, 0xC6AC,
+ /* U+7248 */ 0xB0E6, 0xA09E, 0xA09F, 0xA0A0, 0xC5C6, 0xEBB9, 0xA0A1, 0xA0A2,
+ /* U+7250 */ 0xA0A3, 0xA0A4, 0xEBBA, 0xA0A5, 0xA0A6, 0xA0A7, 0xEBBB, 0xA0A8,
+ /* U+7258 */ 0xA0A9, 0xD1C0, 0xA0AA, 0xC5A3, 0xA0AB, 0xEAF2, 0xA0AC, 0xC4B2,
+ /* U+7260 */ 0xA0AD, 0xC4B5, 0xC0CE, 0xA0AE, 0xA0AF, 0xA0B0, 0xEAF3, 0xC4C1,
+ /* U+7268 */ 0xA0B1, 0xCEEF, 0xA0B2, 0xA0B3, 0xA0B4, 0xA0B5, 0xEAF0, 0xEAF4,
+ /* U+7270 */ 0xA0B6, 0xA0B7, 0xC9FC, 0xA0B8, 0xA0B9, 0xC7A3, 0xA0BA, 0xA0BB,
+ /* U+7278 */ 0xA0BC, 0xCCD8, 0xCEFE, 0xA0BD, 0xA0BE, 0xA0BF, 0xEAF5, 0xEAF6,
+ /* U+7280 */ 0xCFAC, 0xC0E7, 0xA0C0, 0xA0C1, 0xEAF7, 0xA0C2, 0xA0C3, 0xA0C4,
+ /* U+7288 */ 0xA0C5, 0xA0C6, 0xB6BF, 0xEAF8, 0xA0C7, 0xEAF9, 0xA0C8, 0xEAFA,
+ /* U+7290 */ 0xA0C9, 0xA0CA, 0xEAFB, 0xA0CB, 0xA0CC, 0xA0CD, 0xA0CE, 0xA0CF,
+ /* U+7298 */ 0xA0D0, 0xA0D1, 0xA0D2, 0xA0D3, 0xA0D4, 0xA0D5, 0xA0D6, 0xEAF1,
+ /* U+72A0 */ 0xA0D7, 0xA0D8, 0xA0D9, 0xA0DA, 0xA0DB, 0xA0DC, 0xA0DD, 0xA0DE,
+ /* U+72A8 */ 0xA0DF, 0xA0E0, 0xA0E1, 0xA0E2, 0xC8AE, 0xE1EB, 0xA0E3, 0xB7B8,
+ /* U+72B0 */ 0xE1EC, 0xA0E4, 0xA0E5, 0xA0E6, 0xE1ED, 0xA0E7, 0xD7B4, 0xE1EE,
+ /* U+72B8 */ 0xE1EF, 0xD3CC, 0xA0E8, 0xA0E9, 0xA0EA, 0xA0EB, 0xA0EC, 0xA0ED,
+ /* U+72C0 */ 0xA0EE, 0xE1F1, 0xBFF1, 0xE1F0, 0xB5D2, 0xA0EF, 0xA0F0, 0xA0F1,
+ /* U+72C8 */ 0xB1B7, 0xA0F2, 0xA0F3, 0xA0F4, 0xA0F5, 0xE1F3, 0xE1F2, 0xA0F6,
+ /* U+72D0 */ 0xBAFC, 0xA0F7, 0xE1F4, 0xA0F8, 0xA0F9, 0xA0FA, 0xA0FB, 0xB9B7,
+ /* U+72D8 */ 0xA0FC, 0xBED1, 0xA0FD, 0xA0FE, 0xAA40, 0xAA41, 0xC4FC, 0xAA42,
+ /* U+72E0 */ 0xBADD, 0xBDC6, 0xAA43, 0xAA44, 0xAA45, 0xAA46, 0xAA47, 0xAA48,
+ /* U+72E8 */ 0xE1F5, 0xE1F7, 0xAA49, 0xAA4A, 0xB6C0, 0xCFC1, 0xCAA8, 0xE1F6,
+ /* U+72F0 */ 0xD5F8, 0xD3FC, 0xE1F8, 0xE1FC, 0xE1F9, 0xAA4B, 0xAA4C, 0xE1FA,
+ /* U+72F8 */ 0xC0EA, 0xAA4D, 0xE1FE, 0xE2A1, 0xC0C7, 0xAA4E, 0xAA4F, 0xAA50,
+ /* U+7300 */ 0xAA51, 0xE1FB, 0xAA52, 0xE1FD, 0xAA53, 0xAA54, 0xAA55, 0xAA56,
+ /* U+7308 */ 0xAA57, 0xAA58, 0xE2A5, 0xAA59, 0xAA5A, 0xAA5B, 0xC1D4, 0xAA5C,
+ /* U+7310 */ 0xAA5D, 0xAA5E, 0xAA5F, 0xE2A3, 0xAA60, 0xE2A8, 0xB2FE, 0xE2A2,
+ /* U+7318 */ 0xAA61, 0xAA62, 0xAA63, 0xC3CD, 0xB2C2, 0xE2A7, 0xE2A6, 0xAA64,
+ /* U+7320 */ 0xAA65, 0xE2A4, 0xE2A9, 0xAA66, 0xAA67, 0xE2AB, 0xAA68, 0xAA69,
+ /* U+7328 */ 0xAA6A, 0xD0C9, 0xD6ED, 0xC3A8, 0xE2AC, 0xAA6B, 0xCFD7, 0xAA6C,
+ /* U+7330 */ 0xAA6D, 0xE2AE, 0xAA6E, 0xAA6F, 0xBAEF, 0xAA70, 0xAA71, 0xE9E0,
+ /* U+7338 */ 0xE2AD, 0xE2AA, 0xAA72, 0xAA73, 0xAA74, 0xAA75, 0xBBAB, 0xD4B3,
+ /* U+7340 */ 0xAA76, 0xAA77, 0xAA78, 0xAA79, 0xAA7A, 0xAA7B, 0xAA7C, 0xAA7D,
+ /* U+7348 */ 0xAA7E, 0xAA80, 0xAA81, 0xAA82, 0xAA83, 0xE2B0, 0xAA84, 0xAA85,
+ /* U+7350 */ 0xE2AF, 0xAA86, 0xE9E1, 0xAA87, 0xAA88, 0xAA89, 0xAA8A, 0xE2B1,
+ /* U+7358 */ 0xAA8B, 0xAA8C, 0xAA8D, 0xAA8E, 0xAA8F, 0xAA90, 0xAA91, 0xAA92,
+ /* U+7360 */ 0xE2B2, 0xAA93, 0xAA94, 0xAA95, 0xAA96, 0xAA97, 0xAA98, 0xAA99,
+ /* U+7368 */ 0xAA9A, 0xAA9B, 0xAA9C, 0xAA9D, 0xE2B3, 0xCCA1, 0xAA9E, 0xE2B4,
+ /* U+7370 */ 0xAA9F, 0xAAA0, 0xAB40, 0xAB41, 0xAB42, 0xAB43, 0xAB44, 0xAB45,
+ /* U+7378 */ 0xAB46, 0xAB47, 0xAB48, 0xAB49, 0xAB4A, 0xAB4B, 0xE2B5, 0xAB4C,
+ /* U+7380 */ 0xAB4D, 0xAB4E, 0xAB4F, 0xAB50, 0xD0FE, 0xAB51, 0xAB52, 0xC2CA,
+ /* U+7388 */ 0xAB53, 0xD3F1, 0xAB54, 0xCDF5, 0xAB55, 0xAB56, 0xE7E0, 0xAB57,
+ /* U+7390 */ 0xAB58, 0xE7E1, 0xAB59, 0xAB5A, 0xAB5B, 0xAB5C, 0xBEC1, 0xAB5D,
+ /* U+7398 */ 0xAB5E, 0xAB5F, 0xAB60, 0xC2EA, 0xAB61, 0xAB62, 0xAB63, 0xE7E4,
+ /* U+73A0 */ 0xAB64, 0xAB65, 0xE7E3, 0xAB66, 0xAB67, 0xAB68, 0xAB69, 0xAB6A,
+ /* U+73A8 */ 0xAB6B, 0xCDE6, 0xAB6C, 0xC3B5, 0xAB6D, 0xAB6E, 0xE7E2, 0xBBB7,
+ /* U+73B0 */ 0xCFD6, 0xAB6F, 0xC1E1, 0xE7E9, 0xAB70, 0xAB71, 0xAB72, 0xE7E8,
+ /* U+73B8 */ 0xAB73, 0xAB74, 0xE7F4, 0xB2A3, 0xAB75, 0xAB76, 0xAB77, 0xAB78,
+ /* U+73C0 */ 0xE7EA, 0xAB79, 0xE7E6, 0xAB7A, 0xAB7B, 0xAB7C, 0xAB7D, 0xAB7E,
+ /* U+73C8 */ 0xE7EC, 0xE7EB, 0xC9BA, 0xAB80, 0xAB81, 0xD5E4, 0xAB82, 0xE7E5,
+ /* U+73D0 */ 0xB7A9, 0xE7E7, 0xAB83, 0xAB84, 0xAB85, 0xAB86, 0xAB87, 0xAB88,
+ /* U+73D8 */ 0xAB89, 0xE7EE, 0xAB8A, 0xAB8B, 0xAB8C, 0xAB8D, 0xE7F3, 0xAB8E,
+ /* U+73E0 */ 0xD6E9, 0xAB8F, 0xAB90, 0xAB91, 0xAB92, 0xE7ED, 0xAB93, 0xE7F2,
+ /* U+73E8 */ 0xAB94, 0xE7F1, 0xAB95, 0xAB96, 0xAB97, 0xB0E0, 0xAB98, 0xAB99,
+ /* U+73F0 */ 0xAB9A, 0xAB9B, 0xE7F5, 0xAB9C, 0xAB9D, 0xAB9E, 0xAB9F, 0xABA0,
+ /* U+73F8 */ 0xAC40, 0xAC41, 0xAC42, 0xAC43, 0xAC44, 0xAC45, 0xAC46, 0xAC47,
+ /* U+7400 */ 0xAC48, 0xAC49, 0xAC4A, 0xC7F2, 0xAC4B, 0xC0C5, 0xC0ED, 0xAC4C,
+ /* U+7408 */ 0xAC4D, 0xC1F0, 0xE7F0, 0xAC4E, 0xAC4F, 0xAC50, 0xAC51, 0xE7F6,
+ /* U+7410 */ 0xCBF6, 0xAC52, 0xAC53, 0xAC54, 0xAC55, 0xAC56, 0xAC57, 0xAC58,
+ /* U+7418 */ 0xAC59, 0xAC5A, 0xE8A2, 0xE8A1, 0xAC5B, 0xAC5C, 0xAC5D, 0xAC5E,
+ /* U+7420 */ 0xAC5F, 0xAC60, 0xD7C1, 0xAC61, 0xAC62, 0xE7FA, 0xE7F9, 0xAC63,
+ /* U+7428 */ 0xE7FB, 0xAC64, 0xE7F7, 0xAC65, 0xE7FE, 0xAC66, 0xE7FD, 0xAC67,
+ /* U+7430 */ 0xE7FC, 0xAC68, 0xAC69, 0xC1D5, 0xC7D9, 0xC5FD, 0xC5C3, 0xAC6A,
+ /* U+7438 */ 0xAC6B, 0xAC6C, 0xAC6D, 0xAC6E, 0xC7ED, 0xAC6F, 0xAC70, 0xAC71,
+ /* U+7440 */ 0xAC72, 0xE8A3, 0xAC73, 0xAC74, 0xAC75, 0xAC76, 0xAC77, 0xAC78,
+ /* U+7448 */ 0xAC79, 0xAC7A, 0xAC7B, 0xAC7C, 0xAC7D, 0xAC7E, 0xAC80, 0xAC81,
+ /* U+7450 */ 0xAC82, 0xAC83, 0xAC84, 0xAC85, 0xAC86, 0xE8A6, 0xAC87, 0xE8A5,
+ /* U+7458 */ 0xAC88, 0xE8A7, 0xBAF7, 0xE7F8, 0xE8A4, 0xAC89, 0xC8F0, 0xC9AA,
+ /* U+7460 */ 0xAC8A, 0xAC8B, 0xAC8C, 0xAC8D, 0xAC8E, 0xAC8F, 0xAC90, 0xAC91,
+ /* U+7468 */ 0xAC92, 0xAC93, 0xAC94, 0xAC95, 0xAC96, 0xE8A9, 0xAC97, 0xAC98,
+ /* U+7470 */ 0xB9E5, 0xAC99, 0xAC9A, 0xAC9B, 0xAC9C, 0xAC9D, 0xD1FE, 0xE8A8,
+ /* U+7478 */ 0xAC9E, 0xAC9F, 0xACA0, 0xAD40, 0xAD41, 0xAD42, 0xE8AA, 0xAD43,
+ /* U+7480 */ 0xE8AD, 0xE8AE, 0xAD44, 0xC1A7, 0xAD45, 0xAD46, 0xAD47, 0xE8AF,
+ /* U+7488 */ 0xAD48, 0xAD49, 0xAD4A, 0xE8B0, 0xAD4B, 0xAD4C, 0xE8AC, 0xAD4D,
+ /* U+7490 */ 0xE8B4, 0xAD4E, 0xAD4F, 0xAD50, 0xAD51, 0xAD52, 0xAD53, 0xAD54,
+ /* U+7498 */ 0xAD55, 0xAD56, 0xAD57, 0xAD58, 0xE8AB, 0xAD59, 0xE8B1, 0xAD5A,
+ /* U+74A0 */ 0xAD5B, 0xAD5C, 0xAD5D, 0xAD5E, 0xAD5F, 0xAD60, 0xAD61, 0xE8B5,
+ /* U+74A8 */ 0xE8B2, 0xE8B3, 0xAD62, 0xAD63, 0xAD64, 0xAD65, 0xAD66, 0xAD67,
+ /* U+74B0 */ 0xAD68, 0xAD69, 0xAD6A, 0xAD6B, 0xAD6C, 0xAD6D, 0xAD6E, 0xAD6F,
+ /* U+74B8 */ 0xAD70, 0xAD71, 0xE8B7, 0xAD72, 0xAD73, 0xAD74, 0xAD75, 0xAD76,
+ /* U+74C0 */ 0xAD77, 0xAD78, 0xAD79, 0xAD7A, 0xAD7B, 0xAD7C, 0xAD7D, 0xAD7E,
+ /* U+74C8 */ 0xAD80, 0xAD81, 0xAD82, 0xAD83, 0xAD84, 0xAD85, 0xAD86, 0xAD87,
+ /* U+74D0 */ 0xAD88, 0xAD89, 0xE8B6, 0xAD8A, 0xAD8B, 0xAD8C, 0xAD8D, 0xAD8E,
+ /* U+74D8 */ 0xAD8F, 0xAD90, 0xAD91, 0xAD92, 0xB9CF, 0xAD93, 0xF0AC, 0xAD94,
+ /* U+74E0 */ 0xF0AD, 0xAD95, 0xC6B0, 0xB0EA, 0xC8BF, 0xAD96, 0xCDDF, 0xAD97,
+ /* U+74E8 */ 0xAD98, 0xAD99, 0xAD9A, 0xAD9B, 0xAD9C, 0xAD9D, 0xCECD, 0xEAB1,
+ /* U+74F0 */ 0xAD9E, 0xAD9F, 0xADA0, 0xAE40, 0xEAB2, 0xAE41, 0xC6BF, 0xB4C9,
+ /* U+74F8 */ 0xAE42, 0xAE43, 0xAE44, 0xAE45, 0xAE46, 0xAE47, 0xAE48, 0xEAB3,
+ /* U+7500 */ 0xAE49, 0xAE4A, 0xAE4B, 0xAE4C, 0xD5E7, 0xAE4D, 0xAE4E, 0xAE4F,
+ /* U+7508 */ 0xAE50, 0xAE51, 0xAE52, 0xAE53, 0xAE54, 0xDDF9, 0xAE55, 0xEAB4,
+ /* U+7510 */ 0xAE56, 0xEAB5, 0xAE57, 0xEAB6, 0xAE58, 0xAE59, 0xAE5A, 0xAE5B,
+ /* U+7518 */ 0xB8CA, 0xDFB0, 0xC9F5, 0xAE5C, 0xCCF0, 0xAE5D, 0xAE5E, 0xC9FA,
+ /* U+7520 */ 0xAE5F, 0xAE60, 0xAE61, 0xAE62, 0xAE63, 0xC9FB, 0xAE64, 0xAE65,
+ /* U+7528 */ 0xD3C3, 0xCBA6, 0xAE66, 0xB8A6, 0xF0AE, 0xB1C2, 0xAE67, 0xE5B8,
+ /* U+7530 */ 0xCCEF, 0xD3C9, 0xBCD7, 0xC9EA, 0xAE68, 0xB5E7, 0xAE69, 0xC4D0,
+ /* U+7538 */ 0xB5E9, 0xAE6A, 0xEEAE, 0xBBAD, 0xAE6B, 0xAE6C, 0xE7DE, 0xAE6D,
+ /* U+7540 */ 0xEEAF, 0xAE6E, 0xAE6F, 0xAE70, 0xAE71, 0xB3A9, 0xAE72, 0xAE73,
+ /* U+7548 */ 0xEEB2, 0xAE74, 0xAE75, 0xEEB1, 0xBDE7, 0xAE76, 0xEEB0, 0xCEB7,
+ /* U+7550 */ 0xAE77, 0xAE78, 0xAE79, 0xAE7A, 0xC5CF, 0xAE7B, 0xAE7C, 0xAE7D,
+ /* U+7558 */ 0xAE7E, 0xC1F4, 0xDBCE, 0xEEB3, 0xD0F3, 0xAE80, 0xAE81, 0xAE82,
+ /* U+7560 */ 0xAE83, 0xAE84, 0xAE85, 0xAE86, 0xAE87, 0xC2D4, 0xC6E8, 0xAE88,
+ /* U+7568 */ 0xAE89, 0xAE8A, 0xB7AC, 0xAE8B, 0xAE8C, 0xAE8D, 0xAE8E, 0xAE8F,
+ /* U+7570 */ 0xAE90, 0xAE91, 0xEEB4, 0xAE92, 0xB3EB, 0xAE93, 0xAE94, 0xAE95,
+ /* U+7578 */ 0xBBFB, 0xEEB5, 0xAE96, 0xAE97, 0xAE98, 0xAE99, 0xAE9A, 0xE7DC,
+ /* U+7580 */ 0xAE9B, 0xAE9C, 0xAE9D, 0xEEB6, 0xAE9E, 0xAE9F, 0xBDAE, 0xAEA0,
+ /* U+7588 */ 0xAF40, 0xAF41, 0xAF42, 0xF1E2, 0xAF43, 0xAF44, 0xAF45, 0xCAE8,
+ /* U+7590 */ 0xAF46, 0xD2C9, 0xF0DA, 0xAF47, 0xF0DB, 0xAF48, 0xF0DC, 0xC1C6,
+ /* U+7598 */ 0xAF49, 0xB8ED, 0xBECE, 0xAF4A, 0xAF4B, 0xF0DE, 0xAF4C, 0xC5B1,
+ /* U+75A0 */ 0xF0DD, 0xD1F1, 0xAF4D, 0xF0E0, 0xB0CC, 0xBDEA, 0xAF4E, 0xAF4F,
+ /* U+75A8 */ 0xAF50, 0xAF51, 0xAF52, 0xD2DF, 0xF0DF, 0xAF53, 0xB4AF, 0xB7E8,
+ /* U+75B0 */ 0xF0E6, 0xF0E5, 0xC6A3, 0xF0E1, 0xF0E2, 0xB4C3, 0xAF54, 0xAF55,
+ /* U+75B8 */ 0xF0E3, 0xD5EE, 0xAF56, 0xAF57, 0xCCDB, 0xBED2, 0xBCB2, 0xAF58,
+ /* U+75C0 */ 0xAF59, 0xAF5A, 0xF0E8, 0xF0E7, 0xF0E4, 0xB2A1, 0xAF5B, 0xD6A2,
+ /* U+75C8 */ 0xD3B8, 0xBEB7, 0xC8AC, 0xAF5C, 0xAF5D, 0xF0EA, 0xAF5E, 0xAF5F,
+ /* U+75D0 */ 0xAF60, 0xAF61, 0xD1F7, 0xAF62, 0xD6CC, 0xBADB, 0xF0E9, 0xAF63,
+ /* U+75D8 */ 0xB6BB, 0xAF64, 0xAF65, 0xCDB4, 0xAF66, 0xAF67, 0xC6A6, 0xAF68,
+ /* U+75E0 */ 0xAF69, 0xAF6A, 0xC1A1, 0xF0EB, 0xF0EE, 0xAF6B, 0xF0ED, 0xF0F0,
+ /* U+75E8 */ 0xF0EC, 0xAF6C, 0xBBBE, 0xF0EF, 0xAF6D, 0xAF6E, 0xAF6F, 0xAF70,
+ /* U+75F0 */ 0xCCB5, 0xF0F2, 0xAF71, 0xAF72, 0xB3D5, 0xAF73, 0xAF74, 0xAF75,
+ /* U+75F8 */ 0xAF76, 0xB1D4, 0xAF77, 0xAF78, 0xF0F3, 0xAF79, 0xAF7A, 0xF0F4,
+ /* U+7600 */ 0xF0F6, 0xB4E1, 0xAF7B, 0xF0F1, 0xAF7C, 0xF0F7, 0xAF7D, 0xAF7E,
+ /* U+7608 */ 0xAF80, 0xAF81, 0xF0FA, 0xAF82, 0xF0F8, 0xAF83, 0xAF84, 0xAF85,
+ /* U+7610 */ 0xF0F5, 0xAF86, 0xAF87, 0xAF88, 0xAF89, 0xF0FD, 0xAF8A, 0xF0F9,
+ /* U+7618 */ 0xF0FC, 0xF0FE, 0xAF8B, 0xF1A1, 0xAF8C, 0xAF8D, 0xAF8E, 0xCEC1,
+ /* U+7620 */ 0xF1A4, 0xAF8F, 0xF1A3, 0xAF90, 0xC1F6, 0xF0FB, 0xCADD, 0xAF91,
+ /* U+7628 */ 0xAF92, 0xB4F1, 0xB1F1, 0xCCB1, 0xAF93, 0xF1A6, 0xAF94, 0xAF95,
+ /* U+7630 */ 0xF1A7, 0xAF96, 0xAF97, 0xF1AC, 0xD5CE, 0xF1A9, 0xAF98, 0xAF99,
+ /* U+7638 */ 0xC8B3, 0xAF9A, 0xAF9B, 0xAF9C, 0xF1A2, 0xAF9D, 0xF1AB, 0xF1A8,
+ /* U+7640 */ 0xF1A5, 0xAF9E, 0xAF9F, 0xF1AA, 0xAFA0, 0xB040, 0xB041, 0xB042,
+ /* U+7648 */ 0xB043, 0xB044, 0xB045, 0xB046, 0xB0A9, 0xF1AD, 0xB047, 0xB048,
+ /* U+7650 */ 0xB049, 0xB04A, 0xB04B, 0xB04C, 0xF1AF, 0xB04D, 0xF1B1, 0xB04E,
+ /* U+7658 */ 0xB04F, 0xB050, 0xB051, 0xB052, 0xF1B0, 0xB053, 0xF1AE, 0xB054,
+ /* U+7660 */ 0xB055, 0xB056, 0xB057, 0xD1A2, 0xB058, 0xB059, 0xB05A, 0xB05B,
+ /* U+7668 */ 0xB05C, 0xB05D, 0xB05E, 0xF1B2, 0xB05F, 0xB060, 0xB061, 0xF1B3,
+ /* U+7670 */ 0xB062, 0xB063, 0xB064, 0xB065, 0xB066, 0xB067, 0xB068, 0xB069,
+ /* U+7678 */ 0xB9EF, 0xB06A, 0xB06B, 0xB5C7, 0xB06C, 0xB0D7, 0xB0D9, 0xB06D,
+ /* U+7680 */ 0xB06E, 0xB06F, 0xD4ED, 0xB070, 0xB5C4, 0xB071, 0xBDD4, 0xBBCA,
+ /* U+7688 */ 0xF0A7, 0xB072, 0xB073, 0xB8DE, 0xB074, 0xB075, 0xF0A8, 0xB076,
+ /* U+7690 */ 0xB077, 0xB0A8, 0xB078, 0xF0A9, 0xB079, 0xB07A, 0xCDEE, 0xB07B,
+ /* U+7698 */ 0xB07C, 0xF0AA, 0xB07D, 0xB07E, 0xB080, 0xB081, 0xB082, 0xB083,
+ /* U+76A0 */ 0xB084, 0xB085, 0xB086, 0xB087, 0xF0AB, 0xB088, 0xB089, 0xB08A,
+ /* U+76A8 */ 0xB08B, 0xB08C, 0xB08D, 0xB08E, 0xB08F, 0xB090, 0xC6A4, 0xB091,
+ /* U+76B0 */ 0xB092, 0xD6E5, 0xF1E4, 0xB093, 0xF1E5, 0xB094, 0xB095, 0xB096,
+ /* U+76B8 */ 0xB097, 0xB098, 0xB099, 0xB09A, 0xB09B, 0xB09C, 0xB09D, 0xC3F3,
+ /* U+76C0 */ 0xB09E, 0xB09F, 0xD3DB, 0xB0A0, 0xB140, 0xD6D1, 0xC5E8, 0xB141,
+ /* U+76C8 */ 0xD3AF, 0xB142, 0xD2E6, 0xB143, 0xB144, 0xEEC1, 0xB0BB, 0xD5B5,
+ /* U+76D0 */ 0xD1CE, 0xBCE0, 0xBAD0, 0xB145, 0xBFF8, 0xB146, 0xB8C7, 0xB5C1,
+ /* U+76D8 */ 0xC5CC, 0xB147, 0xB148, 0xCAA2, 0xB149, 0xB14A, 0xB14B, 0xC3CB,
+ /* U+76E0 */ 0xB14C, 0xB14D, 0xB14E, 0xB14F, 0xB150, 0xEEC2, 0xB151, 0xB152,
+ /* U+76E8 */ 0xB153, 0xB154, 0xB155, 0xB156, 0xB157, 0xB158, 0xC4BF, 0xB6A2,
+ /* U+76F0 */ 0xB159, 0xEDEC, 0xC3A4, 0xB15A, 0xD6B1, 0xB15B, 0xB15C, 0xB15D,
+ /* U+76F8 */ 0xCFE0, 0xEDEF, 0xB15E, 0xB15F, 0xC5CE, 0xB160, 0xB6DC, 0xB161,
+ /* U+7700 */ 0xB162, 0xCAA1, 0xB163, 0xB164, 0xEDED, 0xB165, 0xB166, 0xEDF0,
+ /* U+7708 */ 0xEDF1, 0xC3BC, 0xB167, 0xBFB4, 0xB168, 0xEDEE, 0xB169, 0xB16A,
+ /* U+7710 */ 0xB16B, 0xB16C, 0xB16D, 0xB16E, 0xB16F, 0xB170, 0xB171, 0xB172,
+ /* U+7718 */ 0xB173, 0xEDF4, 0xEDF2, 0xB174, 0xB175, 0xB176, 0xB177, 0xD5E6,
+ /* U+7720 */ 0xC3DF, 0xB178, 0xEDF3, 0xB179, 0xB17A, 0xB17B, 0xEDF6, 0xB17C,
+ /* U+7728 */ 0xD5A3, 0xD1A3, 0xB17D, 0xB17E, 0xB180, 0xEDF5, 0xB181, 0xC3D0,
+ /* U+7730 */ 0xB182, 0xB183, 0xB184, 0xB185, 0xB186, 0xEDF7, 0xBFF4, 0xBEEC,
+ /* U+7738 */ 0xEDF8, 0xB187, 0xCCF7, 0xB188, 0xD1DB, 0xB189, 0xB18A, 0xB18B,
+ /* U+7740 */ 0xD7C5, 0xD5F6, 0xB18C, 0xEDFC, 0xB18D, 0xB18E, 0xB18F, 0xEDFB,
+ /* U+7748 */ 0xB190, 0xB191, 0xB192, 0xB193, 0xB194, 0xB195, 0xB196, 0xB197,
+ /* U+7750 */ 0xEDF9, 0xEDFA, 0xB198, 0xB199, 0xB19A, 0xB19B, 0xB19C, 0xB19D,
+ /* U+7758 */ 0xB19E, 0xB19F, 0xEDFD, 0xBEA6, 0xB1A0, 0xB240, 0xB241, 0xB242,
+ /* U+7760 */ 0xB243, 0xCBAF, 0xEEA1, 0xB6BD, 0xB244, 0xEEA2, 0xC4C0, 0xB245,
+ /* U+7768 */ 0xEDFE, 0xB246, 0xB247, 0xBDDE, 0xB2C7, 0xB248, 0xB249, 0xB24A,
+ /* U+7770 */ 0xB24B, 0xB24C, 0xB24D, 0xB24E, 0xB24F, 0xB250, 0xB251, 0xB252,
+ /* U+7778 */ 0xB253, 0xB6C3, 0xB254, 0xB255, 0xB256, 0xEEA5, 0xD8BA, 0xEEA3,
+ /* U+7780 */ 0xEEA6, 0xB257, 0xB258, 0xB259, 0xC3E9, 0xB3F2, 0xB25A, 0xB25B,
+ /* U+7788 */ 0xB25C, 0xB25D, 0xB25E, 0xB25F, 0xEEA7, 0xEEA4, 0xCFB9, 0xB260,
+ /* U+7790 */ 0xB261, 0xEEA8, 0xC2F7, 0xB262, 0xB263, 0xB264, 0xB265, 0xB266,
+ /* U+7798 */ 0xB267, 0xB268, 0xB269, 0xB26A, 0xB26B, 0xB26C, 0xB26D, 0xEEA9,
+ /* U+77A0 */ 0xEEAA, 0xB26E, 0xDEAB, 0xB26F, 0xB270, 0xC6B3, 0xB271, 0xC7C6,
+ /* U+77A8 */ 0xB272, 0xD6F5, 0xB5C9, 0xB273, 0xCBB2, 0xB274, 0xB275, 0xB276,
+ /* U+77B0 */ 0xEEAB, 0xB277, 0xB278, 0xCDAB, 0xB279, 0xEEAC, 0xB27A, 0xB27B,
+ /* U+77B8 */ 0xB27C, 0xB27D, 0xB27E, 0xD5B0, 0xB280, 0xEEAD, 0xB281, 0xF6C4,
+ /* U+77C0 */ 0xB282, 0xB283, 0xB284, 0xB285, 0xB286, 0xB287, 0xB288, 0xB289,
+ /* U+77C8 */ 0xB28A, 0xB28B, 0xB28C, 0xB28D, 0xB28E, 0xDBC7, 0xB28F, 0xB290,
+ /* U+77D0 */ 0xB291, 0xB292, 0xB293, 0xB294, 0xB295, 0xB296, 0xB297, 0xB4A3,
+ /* U+77D8 */ 0xB298, 0xB299, 0xB29A, 0xC3AC, 0xF1E6, 0xB29B, 0xB29C, 0xB29D,
+ /* U+77E0 */ 0xB29E, 0xB29F, 0xCAB8, 0xD2D3, 0xB2A0, 0xD6AA, 0xB340, 0xEFF2,
+ /* U+77E8 */ 0xB341, 0xBED8, 0xB342, 0xBDC3, 0xEFF3, 0xB6CC, 0xB0AB, 0xB343,
+ /* U+77F0 */ 0xB344, 0xB345, 0xB346, 0xCAAF, 0xB347, 0xB348, 0xEDB6, 0xB349,
+ /* U+77F8 */ 0xEDB7, 0xB34A, 0xB34B, 0xB34C, 0xB34D, 0xCEF9, 0xB7AF, 0xBFF3,
+ /* U+7800 */ 0xEDB8, 0xC2EB, 0xC9B0, 0xB34E, 0xB34F, 0xB350, 0xB351, 0xB352,
+ /* U+7808 */ 0xB353, 0xEDB9, 0xB354, 0xB355, 0xC6F6, 0xBFB3, 0xB356, 0xB357,
+ /* U+7810 */ 0xB358, 0xEDBC, 0xC5F8, 0xB359, 0xD1D0, 0xB35A, 0xD7A9, 0xEDBA,
+ /* U+7818 */ 0xEDBB, 0xB35B, 0xD1E2, 0xB35C, 0xEDBF, 0xEDC0, 0xB35D, 0xEDC4,
+ /* U+7820 */ 0xB35E, 0xB35F, 0xB360, 0xEDC8, 0xB361, 0xEDC6, 0xEDCE, 0xD5E8,
+ /* U+7828 */ 0xB362, 0xEDC9, 0xB363, 0xB364, 0xEDC7, 0xEDBE, 0xB365, 0xB366,
+ /* U+7830 */ 0xC5E9, 0xB367, 0xB368, 0xB369, 0xC6C6, 0xB36A, 0xB36B, 0xC9E9,
+ /* U+7838 */ 0xD4D2, 0xEDC1, 0xEDC2, 0xEDC3, 0xEDC5, 0xB36C, 0xC0F9, 0xB36D,
+ /* U+7840 */ 0xB4A1, 0xB36E, 0xB36F, 0xB370, 0xB371, 0xB9E8, 0xB372, 0xEDD0,
+ /* U+7848 */ 0xB373, 0xB374, 0xB375, 0xB376, 0xEDD1, 0xB377, 0xEDCA, 0xB378,
+ /* U+7850 */ 0xEDCF, 0xB379, 0xCEF8, 0xB37A, 0xB37B, 0xCBB6, 0xEDCC, 0xEDCD,
+ /* U+7858 */ 0xB37C, 0xB37D, 0xB37E, 0xB380, 0xB381, 0xCFF5, 0xB382, 0xB383,
+ /* U+7860 */ 0xB384, 0xB385, 0xB386, 0xB387, 0xB388, 0xB389, 0xB38A, 0xB38B,
+ /* U+7868 */ 0xB38C, 0xB38D, 0xEDD2, 0xC1F2, 0xD3B2, 0xEDCB, 0xC8B7, 0xB38E,
+ /* U+7870 */ 0xB38F, 0xB390, 0xB391, 0xB392, 0xB393, 0xB394, 0xB395, 0xBCEF,
+ /* U+7878 */ 0xB396, 0xB397, 0xB398, 0xB399, 0xC5F0, 0xB39A, 0xB39B, 0xB39C,
+ /* U+7880 */ 0xB39D, 0xB39E, 0xB39F, 0xB3A0, 0xB440, 0xB441, 0xB442, 0xEDD6,
+ /* U+7888 */ 0xB443, 0xB5EF, 0xB444, 0xB445, 0xC2B5, 0xB0AD, 0xCBE9, 0xB446,
+ /* U+7890 */ 0xB447, 0xB1AE, 0xB448, 0xEDD4, 0xB449, 0xB44A, 0xB44B, 0xCDEB,
+ /* U+7898 */ 0xB5E2, 0xB44C, 0xEDD5, 0xEDD3, 0xEDD7, 0xB44D, 0xB44E, 0xB5FA,
+ /* U+78A0 */ 0xB44F, 0xEDD8, 0xB450, 0xEDD9, 0xB451, 0xEDDC, 0xB452, 0xB1CC,
+ /* U+78A8 */ 0xB453, 0xB454, 0xB455, 0xB456, 0xB457, 0xB458, 0xB459, 0xB45A,
+ /* U+78B0 */ 0xC5F6, 0xBCEE, 0xEDDA, 0xCCBC, 0xB2EA, 0xB45B, 0xB45C, 0xB45D,
+ /* U+78B8 */ 0xB45E, 0xEDDB, 0xB45F, 0xB460, 0xB461, 0xB462, 0xC4EB, 0xB463,
+ /* U+78C0 */ 0xB464, 0xB4C5, 0xB465, 0xB466, 0xB467, 0xB0F5, 0xB468, 0xB469,
+ /* U+78C8 */ 0xB46A, 0xEDDF, 0xC0DA, 0xB4E8, 0xB46B, 0xB46C, 0xB46D, 0xB46E,
+ /* U+78D0 */ 0xC5CD, 0xB46F, 0xB470, 0xB471, 0xEDDD, 0xBFC4, 0xB472, 0xB473,
+ /* U+78D8 */ 0xB474, 0xEDDE, 0xB475, 0xB476, 0xB477, 0xB478, 0xB479, 0xB47A,
+ /* U+78E0 */ 0xB47B, 0xB47C, 0xB47D, 0xB47E, 0xB480, 0xB481, 0xB482, 0xB483,
+ /* U+78E8 */ 0xC4A5, 0xB484, 0xB485, 0xB486, 0xEDE0, 0xB487, 0xB488, 0xB489,
+ /* U+78F0 */ 0xB48A, 0xB48B, 0xEDE1, 0xB48C, 0xEDE3, 0xB48D, 0xB48E, 0xC1D7,
+ /* U+78F8 */ 0xB48F, 0xB490, 0xBBC7, 0xB491, 0xB492, 0xB493, 0xB494, 0xB495,
+ /* U+7900 */ 0xB496, 0xBDB8, 0xB497, 0xB498, 0xB499, 0xEDE2, 0xB49A, 0xB49B,
+ /* U+7908 */ 0xB49C, 0xB49D, 0xB49E, 0xB49F, 0xB4A0, 0xB540, 0xB541, 0xB542,
+ /* U+7910 */ 0xB543, 0xB544, 0xB545, 0xEDE4, 0xB546, 0xB547, 0xB548, 0xB549,
+ /* U+7918 */ 0xB54A, 0xB54B, 0xB54C, 0xB54D, 0xB54E, 0xB54F, 0xEDE6, 0xB550,
+ /* U+7920 */ 0xB551, 0xB552, 0xB553, 0xB554, 0xEDE5, 0xB555, 0xB556, 0xB557,
+ /* U+7928 */ 0xB558, 0xB559, 0xB55A, 0xB55B, 0xB55C, 0xB55D, 0xB55E, 0xB55F,
+ /* U+7930 */ 0xB560, 0xB561, 0xB562, 0xB563, 0xEDE7, 0xB564, 0xB565, 0xB566,
+ /* U+7938 */ 0xB567, 0xB568, 0xCABE, 0xECEA, 0xC0F1, 0xB569, 0xC9E7, 0xB56A,
+ /* U+7940 */ 0xECEB, 0xC6EE, 0xB56B, 0xB56C, 0xB56D, 0xB56E, 0xECEC, 0xB56F,
+ /* U+7948 */ 0xC6ED, 0xECED, 0xB570, 0xB571, 0xB572, 0xB573, 0xB574, 0xB575,
+ /* U+7950 */ 0xB576, 0xB577, 0xB578, 0xECF0, 0xB579, 0xB57A, 0xD7E6, 0xECF3,
+ /* U+7958 */ 0xB57B, 0xB57C, 0xECF1, 0xECEE, 0xECEF, 0xD7A3, 0xC9F1, 0xCBEE,
+ /* U+7960 */ 0xECF4, 0xB57D, 0xECF2, 0xB57E, 0xB580, 0xCFE9, 0xB581, 0xECF6,
+ /* U+7968 */ 0xC6B1, 0xB582, 0xB583, 0xB584, 0xB585, 0xBCC0, 0xB586, 0xECF5,
+ /* U+7970 */ 0xB587, 0xB588, 0xB589, 0xB58A, 0xB58B, 0xB58C, 0xB58D, 0xB5BB,
+ /* U+7978 */ 0xBBF6, 0xB58E, 0xECF7, 0xB58F, 0xB590, 0xB591, 0xB592, 0xB593,
+ /* U+7980 */ 0xD9F7, 0xBDFB, 0xB594, 0xB595, 0xC2BB, 0xECF8, 0xB596, 0xB597,
+ /* U+7988 */ 0xB598, 0xB599, 0xECF9, 0xB59A, 0xB59B, 0xB59C, 0xB59D, 0xB8A3,
+ /* U+7990 */ 0xB59E, 0xB59F, 0xB5A0, 0xB640, 0xB641, 0xB642, 0xB643, 0xB644,
+ /* U+7998 */ 0xB645, 0xB646, 0xECFA, 0xB647, 0xB648, 0xB649, 0xB64A, 0xB64B,
+ /* U+79A0 */ 0xB64C, 0xB64D, 0xB64E, 0xB64F, 0xB650, 0xB651, 0xB652, 0xECFB,
+ /* U+79A8 */ 0xB653, 0xB654, 0xB655, 0xB656, 0xB657, 0xB658, 0xB659, 0xB65A,
+ /* U+79B0 */ 0xB65B, 0xB65C, 0xB65D, 0xECFC, 0xB65E, 0xB65F, 0xB660, 0xB661,
+ /* U+79B8 */ 0xB662, 0xD3ED, 0xD8AE, 0xC0EB, 0xB663, 0xC7DD, 0xBACC, 0xB664,
+ /* U+79C0 */ 0xD0E3, 0xCBBD, 0xB665, 0xCDBA, 0xB666, 0xB667, 0xB8D1, 0xB668,
+ /* U+79C8 */ 0xB669, 0xB1FC, 0xB66A, 0xC7EF, 0xB66B, 0xD6D6, 0xB66C, 0xB66D,
+ /* U+79D0 */ 0xB66E, 0xBFC6, 0xC3EB, 0xB66F, 0xB670, 0xEFF5, 0xB671, 0xB672,
+ /* U+79D8 */ 0xC3D8, 0xB673, 0xB674, 0xB675, 0xB676, 0xB677, 0xB678, 0xD7E2,
+ /* U+79E0 */ 0xB679, 0xB67A, 0xB67B, 0xEFF7, 0xB3D3, 0xB67C, 0xC7D8, 0xD1ED,
+ /* U+79E8 */ 0xB67D, 0xD6C8, 0xB67E, 0xEFF8, 0xB680, 0xEFF6, 0xB681, 0xBBFD,
+ /* U+79F0 */ 0xB3C6, 0xB682, 0xB683, 0xB684, 0xB685, 0xB686, 0xB687, 0xB688,
+ /* U+79F8 */ 0xBDD5, 0xB689, 0xB68A, 0xD2C6, 0xB68B, 0xBBE0, 0xB68C, 0xB68D,
+ /* U+7A00 */ 0xCFA1, 0xB68E, 0xEFFC, 0xEFFB, 0xB68F, 0xB690, 0xEFF9, 0xB691,
+ /* U+7A08 */ 0xB692, 0xB693, 0xB694, 0xB3CC, 0xB695, 0xC9D4, 0xCBB0, 0xB696,
+ /* U+7A10 */ 0xB697, 0xB698, 0xB699, 0xB69A, 0xEFFE, 0xB69B, 0xB69C, 0xB0DE,
+ /* U+7A18 */ 0xB69D, 0xB69E, 0xD6C9, 0xB69F, 0xB6A0, 0xB740, 0xEFFD, 0xB741,
+ /* U+7A20 */ 0xB3ED, 0xB742, 0xB743, 0xF6D5, 0xB744, 0xB745, 0xB746, 0xB747,
+ /* U+7A28 */ 0xB748, 0xB749, 0xB74A, 0xB74B, 0xB74C, 0xB74D, 0xB74E, 0xB74F,
+ /* U+7A30 */ 0xB750, 0xB751, 0xB752, 0xCEC8, 0xB753, 0xB754, 0xB755, 0xF0A2,
+ /* U+7A38 */ 0xB756, 0xF0A1, 0xB757, 0xB5BE, 0xBCDA, 0xBBFC, 0xB758, 0xB8E5,
+ /* U+7A40 */ 0xB759, 0xB75A, 0xB75B, 0xB75C, 0xB75D, 0xB75E, 0xC4C2, 0xB75F,
+ /* U+7A48 */ 0xB760, 0xB761, 0xB762, 0xB763, 0xB764, 0xB765, 0xB766, 0xB767,
+ /* U+7A50 */ 0xB768, 0xF0A3, 0xB769, 0xB76A, 0xB76B, 0xB76C, 0xB76D, 0xCBEB,
+ /* U+7A58 */ 0xB76E, 0xB76F, 0xB770, 0xB771, 0xB772, 0xB773, 0xB774, 0xB775,
+ /* U+7A60 */ 0xB776, 0xB777, 0xB778, 0xB779, 0xB77A, 0xB77B, 0xB77C, 0xB77D,
+ /* U+7A68 */ 0xB77E, 0xB780, 0xB781, 0xB782, 0xB783, 0xB784, 0xB785, 0xB786,
+ /* U+7A70 */ 0xF0A6, 0xB787, 0xB788, 0xB789, 0xD1A8, 0xB78A, 0xBEBF, 0xC7EE,
+ /* U+7A78 */ 0xF1B6, 0xF1B7, 0xBFD5, 0xB78B, 0xB78C, 0xB78D, 0xB78E, 0xB4A9,
+ /* U+7A80 */ 0xF1B8, 0xCDBB, 0xB78F, 0xC7D4, 0xD5AD, 0xB790, 0xF1B9, 0xB791,
+ /* U+7A88 */ 0xF1BA, 0xB792, 0xB793, 0xB794, 0xB795, 0xC7CF, 0xB796, 0xB797,
+ /* U+7A90 */ 0xB798, 0xD2A4, 0xD6CF, 0xB799, 0xB79A, 0xF1BB, 0xBDD1, 0xB4B0,
+ /* U+7A98 */ 0xBEBD, 0xB79B, 0xB79C, 0xB79D, 0xB4DC, 0xCED1, 0xB79E, 0xBFDF,
+ /* U+7AA0 */ 0xF1BD, 0xB79F, 0xB7A0, 0xB840, 0xB841, 0xBFFA, 0xF1BC, 0xB842,
+ /* U+7AA8 */ 0xF1BF, 0xB843, 0xB844, 0xB845, 0xF1BE, 0xF1C0, 0xB846, 0xB847,
+ /* U+7AB0 */ 0xB848, 0xB849, 0xB84A, 0xF1C1, 0xB84B, 0xB84C, 0xB84D, 0xB84E,
+ /* U+7AB8 */ 0xB84F, 0xB850, 0xB851, 0xB852, 0xB853, 0xB854, 0xB855, 0xC1FE,
+ /* U+7AC0 */ 0xB856, 0xB857, 0xB858, 0xB859, 0xB85A, 0xB85B, 0xB85C, 0xB85D,
+ /* U+7AC8 */ 0xB85E, 0xB85F, 0xB860, 0xC1A2, 0xB861, 0xB862, 0xB863, 0xB864,
+ /* U+7AD0 */ 0xB865, 0xB866, 0xB867, 0xB868, 0xB869, 0xB86A, 0xCAFA, 0xB86B,
+ /* U+7AD8 */ 0xB86C, 0xD5BE, 0xB86D, 0xB86E, 0xB86F, 0xB870, 0xBEBA, 0xBEB9,
+ /* U+7AE0 */ 0xD5C2, 0xB871, 0xB872, 0xBFA2, 0xB873, 0xCDAF, 0xF1B5, 0xB874,
+ /* U+7AE8 */ 0xB875, 0xB876, 0xB877, 0xB878, 0xB879, 0xBDDF, 0xB87A, 0xB6CB,
+ /* U+7AF0 */ 0xB87B, 0xB87C, 0xB87D, 0xB87E, 0xB880, 0xB881, 0xB882, 0xB883,
+ /* U+7AF8 */ 0xB884, 0xD6F1, 0xF3C3, 0xB885, 0xB886, 0xF3C4, 0xB887, 0xB8CD,
+ /* U+7B00 */ 0xB888, 0xB889, 0xB88A, 0xF3C6, 0xF3C7, 0xB88B, 0xB0CA, 0xB88C,
+ /* U+7B08 */ 0xF3C5, 0xB88D, 0xF3C9, 0xCBF1, 0xB88E, 0xB88F, 0xB890, 0xF3CB,
+ /* U+7B10 */ 0xB891, 0xD0A6, 0xB892, 0xB893, 0xB1CA, 0xF3C8, 0xB894, 0xB895,
+ /* U+7B18 */ 0xB896, 0xF3CF, 0xB897, 0xB5D1, 0xB898, 0xB899, 0xF3D7, 0xB89A,
+ /* U+7B20 */ 0xF3D2, 0xB89B, 0xB89C, 0xB89D, 0xF3D4, 0xF3D3, 0xB7FB, 0xB89E,
+ /* U+7B28 */ 0xB1BF, 0xB89F, 0xF3CE, 0xF3CA, 0xB5DA, 0xB8A0, 0xF3D0, 0xB940,
+ /* U+7B30 */ 0xB941, 0xF3D1, 0xB942, 0xF3D5, 0xB943, 0xB944, 0xB945, 0xB946,
+ /* U+7B38 */ 0xF3CD, 0xB947, 0xBCE3, 0xB948, 0xC1FD, 0xB949, 0xF3D6, 0xB94A,
+ /* U+7B40 */ 0xB94B, 0xB94C, 0xB94D, 0xB94E, 0xB94F, 0xF3DA, 0xB950, 0xF3CC,
+ /* U+7B48 */ 0xB951, 0xB5C8, 0xB952, 0xBDEE, 0xF3DC, 0xB953, 0xB954, 0xB7A4,
+ /* U+7B50 */ 0xBFF0, 0xD6FE, 0xCDB2, 0xB955, 0xB4F0, 0xB956, 0xB2DF, 0xB957,
+ /* U+7B58 */ 0xF3D8, 0xB958, 0xF3D9, 0xC9B8, 0xB959, 0xF3DD, 0xB95A, 0xB95B,
+ /* U+7B60 */ 0xF3DE, 0xB95C, 0xF3E1, 0xB95D, 0xB95E, 0xB95F, 0xB960, 0xB961,
+ /* U+7B68 */ 0xB962, 0xB963, 0xB964, 0xB965, 0xB966, 0xB967, 0xF3DF, 0xB968,
+ /* U+7B70 */ 0xB969, 0xF3E3, 0xF3E2, 0xB96A, 0xB96B, 0xF3DB, 0xB96C, 0xBFEA,
+ /* U+7B78 */ 0xB96D, 0xB3EF, 0xB96E, 0xF3E0, 0xB96F, 0xB970, 0xC7A9, 0xB971,
+ /* U+7B80 */ 0xBCF2, 0xB972, 0xB973, 0xB974, 0xB975, 0xF3EB, 0xB976, 0xB977,
+ /* U+7B88 */ 0xB978, 0xB979, 0xB97A, 0xB97B, 0xB97C, 0xB9BF, 0xB97D, 0xB97E,
+ /* U+7B90 */ 0xF3E4, 0xB980, 0xB981, 0xB982, 0xB2AD, 0xBBFE, 0xB983, 0xCBE3,
+ /* U+7B98 */ 0xB984, 0xB985, 0xB986, 0xB987, 0xF3ED, 0xF3E9, 0xB988, 0xB989,
+ /* U+7BA0 */ 0xB98A, 0xB9DC, 0xF3EE, 0xB98B, 0xB98C, 0xB98D, 0xF3E5, 0xF3E6,
+ /* U+7BA8 */ 0xF3EA, 0xC2E1, 0xF3EC, 0xF3EF, 0xF3E8, 0xBCFD, 0xB98E, 0xB98F,
+ /* U+7BB0 */ 0xB990, 0xCFE4, 0xB991, 0xB992, 0xF3F0, 0xB993, 0xB994, 0xB995,
+ /* U+7BB8 */ 0xF3E7, 0xB996, 0xB997, 0xB998, 0xB999, 0xB99A, 0xB99B, 0xB99C,
+ /* U+7BC0 */ 0xB99D, 0xF3F2, 0xB99E, 0xB99F, 0xB9A0, 0xBA40, 0xD7AD, 0xC6AA,
+ /* U+7BC8 */ 0xBA41, 0xBA42, 0xBA43, 0xBA44, 0xF3F3, 0xBA45, 0xBA46, 0xBA47,
+ /* U+7BD0 */ 0xBA48, 0xF3F1, 0xBA49, 0xC2A8, 0xBA4A, 0xBA4B, 0xBA4C, 0xBA4D,
+ /* U+7BD8 */ 0xBA4E, 0xB8DD, 0xF3F5, 0xBA4F, 0xBA50, 0xF3F4, 0xBA51, 0xBA52,
+ /* U+7BE0 */ 0xBA53, 0xB4DB, 0xBA54, 0xBA55, 0xBA56, 0xF3F6, 0xF3F7, 0xBA57,
+ /* U+7BE8 */ 0xBA58, 0xBA59, 0xF3F8, 0xBA5A, 0xBA5B, 0xBA5C, 0xC0BA, 0xBA5D,
+ /* U+7BF0 */ 0xBA5E, 0xC0E9, 0xBA5F, 0xBA60, 0xBA61, 0xBA62, 0xBA63, 0xC5F1,
+ /* U+7BF8 */ 0xBA64, 0xBA65, 0xBA66, 0xBA67, 0xF3FB, 0xBA68, 0xF3FA, 0xBA69,
+ /* U+7C00 */ 0xBA6A, 0xBA6B, 0xBA6C, 0xBA6D, 0xBA6E, 0xBA6F, 0xBA70, 0xB4D8,
+ /* U+7C08 */ 0xBA71, 0xBA72, 0xBA73, 0xF3FE, 0xF3F9, 0xBA74, 0xBA75, 0xF3FC,
+ /* U+7C10 */ 0xBA76, 0xBA77, 0xBA78, 0xBA79, 0xBA7A, 0xBA7B, 0xF3FD, 0xBA7C,
+ /* U+7C18 */ 0xBA7D, 0xBA7E, 0xBA80, 0xBA81, 0xBA82, 0xBA83, 0xBA84, 0xF4A1,
+ /* U+7C20 */ 0xBA85, 0xBA86, 0xBA87, 0xBA88, 0xBA89, 0xBA8A, 0xF4A3, 0xBBC9,
+ /* U+7C28 */ 0xBA8B, 0xBA8C, 0xF4A2, 0xBA8D, 0xBA8E, 0xBA8F, 0xBA90, 0xBA91,
+ /* U+7C30 */ 0xBA92, 0xBA93, 0xBA94, 0xBA95, 0xBA96, 0xBA97, 0xBA98, 0xBA99,
+ /* U+7C38 */ 0xF4A4, 0xBA9A, 0xBA9B, 0xBA9C, 0xBA9D, 0xBA9E, 0xBA9F, 0xB2BE,
+ /* U+7C40 */ 0xF4A6, 0xF4A5, 0xBAA0, 0xBB40, 0xBB41, 0xBB42, 0xBB43, 0xBB44,
+ /* U+7C48 */ 0xBB45, 0xBB46, 0xBB47, 0xBB48, 0xBB49, 0xBCAE, 0xBB4A, 0xBB4B,
+ /* U+7C50 */ 0xBB4C, 0xBB4D, 0xBB4E, 0xBB4F, 0xBB50, 0xBB51, 0xBB52, 0xBB53,
+ /* U+7C58 */ 0xBB54, 0xBB55, 0xBB56, 0xBB57, 0xBB58, 0xBB59, 0xBB5A, 0xBB5B,
+ /* U+7C60 */ 0xBB5C, 0xBB5D, 0xBB5E, 0xBB5F, 0xBB60, 0xBB61, 0xBB62, 0xBB63,
+ /* U+7C68 */ 0xBB64, 0xBB65, 0xBB66, 0xBB67, 0xBB68, 0xBB69, 0xBB6A, 0xBB6B,
+ /* U+7C70 */ 0xBB6C, 0xBB6D, 0xBB6E, 0xC3D7, 0xD9E1, 0xBB6F, 0xBB70, 0xBB71,
+ /* U+7C78 */ 0xBB72, 0xBB73, 0xBB74, 0xC0E0, 0xF4CC, 0xD7D1, 0xBB75, 0xBB76,
+ /* U+7C80 */ 0xBB77, 0xBB78, 0xBB79, 0xBB7A, 0xBB7B, 0xBB7C, 0xBB7D, 0xBB7E,
+ /* U+7C88 */ 0xBB80, 0xB7DB, 0xBB81, 0xBB82, 0xBB83, 0xBB84, 0xBB85, 0xBB86,
+ /* U+7C90 */ 0xBB87, 0xF4CE, 0xC1A3, 0xBB88, 0xBB89, 0xC6C9, 0xBB8A, 0xB4D6,
+ /* U+7C98 */ 0xD5B3, 0xBB8B, 0xBB8C, 0xBB8D, 0xF4D0, 0xF4CF, 0xF4D1, 0xCBDA,
+ /* U+7CA0 */ 0xBB8E, 0xBB8F, 0xF4D2, 0xBB90, 0xD4C1, 0xD6E0, 0xBB91, 0xBB92,
+ /* U+7CA8 */ 0xBB93, 0xBB94, 0xB7E0, 0xBB95, 0xBB96, 0xBB97, 0xC1B8, 0xBB98,
+ /* U+7CB0 */ 0xBB99, 0xC1BB, 0xF4D3, 0xBEAC, 0xBB9A, 0xBB9B, 0xBB9C, 0xBB9D,
+ /* U+7CB8 */ 0xBB9E, 0xB4E2, 0xBB9F, 0xBBA0, 0xF4D4, 0xF4D5, 0xBEAB, 0xBC40,
+ /* U+7CC0 */ 0xBC41, 0xF4D6, 0xBC42, 0xBC43, 0xBC44, 0xF4DB, 0xBC45, 0xF4D7,
+ /* U+7CC8 */ 0xF4DA, 0xBC46, 0xBAFD, 0xBC47, 0xF4D8, 0xF4D9, 0xBC48, 0xBC49,
+ /* U+7CD0 */ 0xBC4A, 0xBC4B, 0xBC4C, 0xBC4D, 0xBC4E, 0xB8E2, 0xCCC7, 0xF4DC,
+ /* U+7CD8 */ 0xBC4F, 0xB2DA, 0xBC50, 0xBC51, 0xC3D3, 0xBC52, 0xBC53, 0xD4E3,
+ /* U+7CE0 */ 0xBFB7, 0xBC54, 0xBC55, 0xBC56, 0xBC57, 0xBC58, 0xBC59, 0xBC5A,
+ /* U+7CE8 */ 0xF4DD, 0xBC5B, 0xBC5C, 0xBC5D, 0xBC5E, 0xBC5F, 0xBC60, 0xC5B4,
+ /* U+7CF0 */ 0xBC61, 0xBC62, 0xBC63, 0xBC64, 0xBC65, 0xBC66, 0xBC67, 0xBC68,
+ /* U+7CF8 */ 0xF4E9, 0xBC69, 0xBC6A, 0xCFB5, 0xBC6B, 0xBC6C, 0xBC6D, 0xBC6E,
+ /* U+7D00 */ 0xBC6F, 0xBC70, 0xBC71, 0xBC72, 0xBC73, 0xBC74, 0xBC75, 0xBC76,
+ /* U+7D08 */ 0xBC77, 0xBC78, 0xCEC9, 0xBC79, 0xBC7A, 0xBC7B, 0xBC7C, 0xBC7D,
+ /* U+7D10 */ 0xBC7E, 0xBC80, 0xBC81, 0xBC82, 0xBC83, 0xBC84, 0xBC85, 0xBC86,
+ /* U+7D18 */ 0xBC87, 0xBC88, 0xBC89, 0xBC8A, 0xBC8B, 0xBC8C, 0xBC8D, 0xBC8E,
+ /* U+7D20 */ 0xCBD8, 0xBC8F, 0xCBF7, 0xBC90, 0xBC91, 0xBC92, 0xBC93, 0xBDF4,
+ /* U+7D28 */ 0xBC94, 0xBC95, 0xBC96, 0xD7CF, 0xBC97, 0xBC98, 0xBC99, 0xC0DB,
+ /* U+7D30 */ 0xBC9A, 0xBC9B, 0xBC9C, 0xBC9D, 0xBC9E, 0xBC9F, 0xBCA0, 0xBD40,
+ /* U+7D38 */ 0xBD41, 0xBD42, 0xBD43, 0xBD44, 0xBD45, 0xBD46, 0xBD47, 0xBD48,
+ /* U+7D40 */ 0xBD49, 0xBD4A, 0xBD4B, 0xBD4C, 0xBD4D, 0xBD4E, 0xBD4F, 0xBD50,
+ /* U+7D48 */ 0xBD51, 0xBD52, 0xBD53, 0xBD54, 0xBD55, 0xBD56, 0xBD57, 0xBD58,
+ /* U+7D50 */ 0xBD59, 0xBD5A, 0xBD5B, 0xBD5C, 0xBD5D, 0xBD5E, 0xBD5F, 0xBD60,
+ /* U+7D58 */ 0xBD61, 0xBD62, 0xBD63, 0xBD64, 0xBD65, 0xBD66, 0xBD67, 0xBD68,
+ /* U+7D60 */ 0xBD69, 0xBD6A, 0xBD6B, 0xBD6C, 0xBD6D, 0xBD6E, 0xBD6F, 0xBD70,
+ /* U+7D68 */ 0xBD71, 0xBD72, 0xBD73, 0xBD74, 0xBD75, 0xBD76, 0xD0F5, 0xBD77,
+ /* U+7D70 */ 0xBD78, 0xBD79, 0xBD7A, 0xBD7B, 0xBD7C, 0xBD7D, 0xBD7E, 0xF4EA,
+ /* U+7D78 */ 0xBD80, 0xBD81, 0xBD82, 0xBD83, 0xBD84, 0xBD85, 0xBD86, 0xBD87,
+ /* U+7D80 */ 0xBD88, 0xBD89, 0xBD8A, 0xBD8B, 0xBD8C, 0xBD8D, 0xBD8E, 0xBD8F,
+ /* U+7D88 */ 0xBD90, 0xBD91, 0xBD92, 0xBD93, 0xBD94, 0xBD95, 0xBD96, 0xBD97,
+ /* U+7D90 */ 0xBD98, 0xBD99, 0xBD9A, 0xBD9B, 0xBD9C, 0xBD9D, 0xBD9E, 0xBD9F,
+ /* U+7D98 */ 0xBDA0, 0xBE40, 0xBE41, 0xBE42, 0xBE43, 0xBE44, 0xBE45, 0xBE46,
+ /* U+7DA0 */ 0xBE47, 0xBE48, 0xBE49, 0xBE4A, 0xBE4B, 0xBE4C, 0xF4EB, 0xBE4D,
+ /* U+7DA8 */ 0xBE4E, 0xBE4F, 0xBE50, 0xBE51, 0xBE52, 0xBE53, 0xF4EC, 0xBE54,
+ /* U+7DB0 */ 0xBE55, 0xBE56, 0xBE57, 0xBE58, 0xBE59, 0xBE5A, 0xBE5B, 0xBE5C,
+ /* U+7DB8 */ 0xBE5D, 0xBE5E, 0xBE5F, 0xBE60, 0xBE61, 0xBE62, 0xBE63, 0xBE64,
+ /* U+7DC0 */ 0xBE65, 0xBE66, 0xBE67, 0xBE68, 0xBE69, 0xBE6A, 0xBE6B, 0xBE6C,
+ /* U+7DC8 */ 0xBE6D, 0xBE6E, 0xBE6F, 0xBE70, 0xBE71, 0xBE72, 0xBE73, 0xBE74,
+ /* U+7DD0 */ 0xBE75, 0xBE76, 0xBE77, 0xBE78, 0xBE79, 0xBE7A, 0xBE7B, 0xBE7C,
+ /* U+7DD8 */ 0xBE7D, 0xBE7E, 0xBE80, 0xBE81, 0xBE82, 0xBE83, 0xBE84, 0xBE85,
+ /* U+7DE0 */ 0xBE86, 0xBE87, 0xBE88, 0xBE89, 0xBE8A, 0xBE8B, 0xBE8C, 0xBE8D,
+ /* U+7DE8 */ 0xBE8E, 0xBE8F, 0xBE90, 0xBE91, 0xBE92, 0xBE93, 0xBE94, 0xBE95,
+ /* U+7DF0 */ 0xBE96, 0xBE97, 0xBE98, 0xBE99, 0xBE9A, 0xBE9B, 0xBE9C, 0xBE9D,
+ /* U+7DF8 */ 0xBE9E, 0xBE9F, 0xBEA0, 0xBF40, 0xBF41, 0xBF42, 0xBF43, 0xBF44,
+ /* U+7E00 */ 0xBF45, 0xBF46, 0xBF47, 0xBF48, 0xBF49, 0xBF4A, 0xBF4B, 0xBF4C,
+ /* U+7E08 */ 0xBF4D, 0xBF4E, 0xBF4F, 0xBF50, 0xBF51, 0xBF52, 0xBF53, 0xBF54,
+ /* U+7E10 */ 0xBF55, 0xBF56, 0xBF57, 0xBF58, 0xBF59, 0xBF5A, 0xBF5B, 0xBF5C,
+ /* U+7E18 */ 0xBF5D, 0xBF5E, 0xBF5F, 0xBF60, 0xBF61, 0xBF62, 0xBF63, 0xBF64,
+ /* U+7E20 */ 0xBF65, 0xBF66, 0xBF67, 0xBF68, 0xBF69, 0xBF6A, 0xBF6B, 0xBF6C,
+ /* U+7E28 */ 0xBF6D, 0xBF6E, 0xBF6F, 0xBF70, 0xBF71, 0xBF72, 0xBF73, 0xBF74,
+ /* U+7E30 */ 0xBF75, 0xBF76, 0xBF77, 0xBF78, 0xBF79, 0xBF7A, 0xBF7B, 0xBF7C,
+ /* U+7E38 */ 0xBF7D, 0xBF7E, 0xBF80, 0xF7E3, 0xBF81, 0xBF82, 0xBF83, 0xBF84,
+ /* U+7E40 */ 0xBF85, 0xB7B1, 0xBF86, 0xBF87, 0xBF88, 0xBF89, 0xBF8A, 0xF4ED,
+ /* U+7E48 */ 0xBF8B, 0xBF8C, 0xBF8D, 0xBF8E, 0xBF8F, 0xBF90, 0xBF91, 0xBF92,
+ /* U+7E50 */ 0xBF93, 0xBF94, 0xBF95, 0xBF96, 0xBF97, 0xBF98, 0xBF99, 0xBF9A,
+ /* U+7E58 */ 0xBF9B, 0xBF9C, 0xBF9D, 0xBF9E, 0xBF9F, 0xBFA0, 0xC040, 0xC041,
+ /* U+7E60 */ 0xC042, 0xC043, 0xC044, 0xC045, 0xC046, 0xC047, 0xC048, 0xC049,
+ /* U+7E68 */ 0xC04A, 0xC04B, 0xC04C, 0xC04D, 0xC04E, 0xC04F, 0xC050, 0xC051,
+ /* U+7E70 */ 0xC052, 0xC053, 0xC054, 0xC055, 0xC056, 0xC057, 0xC058, 0xC059,
+ /* U+7E78 */ 0xC05A, 0xC05B, 0xC05C, 0xC05D, 0xC05E, 0xC05F, 0xC060, 0xC061,
+ /* U+7E80 */ 0xC062, 0xC063, 0xD7EB, 0xC064, 0xC065, 0xC066, 0xC067, 0xC068,
+ /* U+7E88 */ 0xC069, 0xC06A, 0xC06B, 0xC06C, 0xC06D, 0xC06E, 0xC06F, 0xC070,
+ /* U+7E90 */ 0xC071, 0xC072, 0xC073, 0xC074, 0xC075, 0xC076, 0xC077, 0xC078,
+ /* U+7E98 */ 0xC079, 0xC07A, 0xC07B, 0xF4EE, 0xC07C, 0xC07D, 0xC07E, 0xE6F9,
+ /* U+7EA0 */ 0xBEC0, 0xE6FA, 0xBAEC, 0xE6FB, 0xCFCB, 0xE6FC, 0xD4BC, 0xBCB6,
+ /* U+7EA8 */ 0xE6FD, 0xE6FE, 0xBCCD, 0xC8D2, 0xCEB3, 0xE7A1, 0xC080, 0xB4BF,
+ /* U+7EB0 */ 0xE7A2, 0xC9B4, 0xB8D9, 0xC4C9, 0xC081, 0xD7DD, 0xC2DA, 0xB7D7,
+ /* U+7EB8 */ 0xD6BD, 0xCEC6, 0xB7C4, 0xC082, 0xC083, 0xC5A6, 0xE7A3, 0xCFDF,
+ /* U+7EC0 */ 0xE7A4, 0xE7A5, 0xE7A6, 0xC1B7, 0xD7E9, 0xC9F0, 0xCFB8, 0xD6AF,
+ /* U+7EC8 */ 0xD6D5, 0xE7A7, 0xB0ED, 0xE7A8, 0xE7A9, 0xC9DC, 0xD2EF, 0xBEAD,
+ /* U+7ED0 */ 0xE7AA, 0xB0F3, 0xC8DE, 0xBDE1, 0xE7AB, 0xC8C6, 0xC084, 0xE7AC,
+ /* U+7ED8 */ 0xBBE6, 0xB8F8, 0xD1A4, 0xE7AD, 0xC2E7, 0xBEF8, 0xBDCA, 0xCDB3,
+ /* U+7EE0 */ 0xE7AE, 0xE7AF, 0xBEEE, 0xD0E5, 0xC085, 0xCBE7, 0xCCD0, 0xBCCC,
+ /* U+7EE8 */ 0xE7B0, 0xBCA8, 0xD0F7, 0xE7B1, 0xC086, 0xD0F8, 0xE7B2, 0xE7B3,
+ /* U+7EF0 */ 0xB4C2, 0xE7B4, 0xE7B5, 0xC9FE, 0xCEAC, 0xC3E0, 0xE7B7, 0xB1C1,
+ /* U+7EF8 */ 0xB3F1, 0xC087, 0xE7B8, 0xE7B9, 0xD7DB, 0xD5C0, 0xE7BA, 0xC2CC,
+ /* U+7F00 */ 0xD7BA, 0xE7BB, 0xE7BC, 0xE7BD, 0xBCEA, 0xC3E5, 0xC0C2, 0xE7BE,
+ /* U+7F08 */ 0xE7BF, 0xBCA9, 0xC088, 0xE7C0, 0xE7C1, 0xE7B6, 0xB6D0, 0xE7C2,
+ /* U+7F10 */ 0xC089, 0xE7C3, 0xE7C4, 0xBBBA, 0xB5DE, 0xC2C6, 0xB1E0, 0xE7C5,
+ /* U+7F18 */ 0xD4B5, 0xE7C6, 0xB8BF, 0xE7C8, 0xE7C7, 0xB7EC, 0xC08A, 0xE7C9,
+ /* U+7F20 */ 0xB2F8, 0xE7CA, 0xE7CB, 0xE7CC, 0xE7CD, 0xE7CE, 0xE7CF, 0xE7D0,
+ /* U+7F28 */ 0xD3A7, 0xCBF5, 0xE7D1, 0xE7D2, 0xE7D3, 0xE7D4, 0xC9C9, 0xE7D5,
+ /* U+7F30 */ 0xE7D6, 0xE7D7, 0xE7D8, 0xE7D9, 0xBDC9, 0xE7DA, 0xF3BE, 0xC08B,
+ /* U+7F38 */ 0xB8D7, 0xC08C, 0xC8B1, 0xC08D, 0xC08E, 0xC08F, 0xC090, 0xC091,
+ /* U+7F40 */ 0xC092, 0xC093, 0xF3BF, 0xC094, 0xF3C0, 0xF3C1, 0xC095, 0xC096,
+ /* U+7F48 */ 0xC097, 0xC098, 0xC099, 0xC09A, 0xC09B, 0xC09C, 0xC09D, 0xC09E,
+ /* U+7F50 */ 0xB9DE, 0xCDF8, 0xC09F, 0xC0A0, 0xD8E8, 0xBAB1, 0xC140, 0xC2DE,
+ /* U+7F58 */ 0xEEB7, 0xC141, 0xB7A3, 0xC142, 0xC143, 0xC144, 0xC145, 0xEEB9,
+ /* U+7F60 */ 0xC146, 0xEEB8, 0xB0D5, 0xC147, 0xC148, 0xC149, 0xC14A, 0xC14B,
+ /* U+7F68 */ 0xEEBB, 0xD5D6, 0xD7EF, 0xC14C, 0xC14D, 0xC14E, 0xD6C3, 0xC14F,
+ /* U+7F70 */ 0xC150, 0xEEBD, 0xCAF0, 0xC151, 0xEEBC, 0xC152, 0xC153, 0xC154,
+ /* U+7F78 */ 0xC155, 0xEEBE, 0xC156, 0xC157, 0xC158, 0xC159, 0xEEC0, 0xC15A,
+ /* U+7F80 */ 0xC15B, 0xEEBF, 0xC15C, 0xC15D, 0xC15E, 0xC15F, 0xC160, 0xC161,
+ /* U+7F88 */ 0xC162, 0xC163, 0xD1F2, 0xC164, 0xC7BC, 0xC165, 0xC3C0, 0xC166,
+ /* U+7F90 */ 0xC167, 0xC168, 0xC169, 0xC16A, 0xB8E1, 0xC16B, 0xC16C, 0xC16D,
+ /* U+7F98 */ 0xC16E, 0xC16F, 0xC1E7, 0xC170, 0xC171, 0xF4C6, 0xD0DF, 0xF4C7,
+ /* U+7FA0 */ 0xC172, 0xCFDB, 0xC173, 0xC174, 0xC8BA, 0xC175, 0xC176, 0xF4C8,
+ /* U+7FA8 */ 0xC177, 0xC178, 0xC179, 0xC17A, 0xC17B, 0xC17C, 0xC17D, 0xF4C9,
+ /* U+7FB0 */ 0xF4CA, 0xC17E, 0xF4CB, 0xC180, 0xC181, 0xC182, 0xC183, 0xC184,
+ /* U+7FB8 */ 0xD9FA, 0xB8FE, 0xC185, 0xC186, 0xE5F1, 0xD3F0, 0xC187, 0xF4E0,
+ /* U+7FC0 */ 0xC188, 0xCECC, 0xC189, 0xC18A, 0xC18B, 0xB3E1, 0xC18C, 0xC18D,
+ /* U+7FC8 */ 0xC18E, 0xC18F, 0xF1B4, 0xC190, 0xD2EE, 0xC191, 0xF4E1, 0xC192,
+ /* U+7FD0 */ 0xC193, 0xC194, 0xC195, 0xC196, 0xCFE8, 0xF4E2, 0xC197, 0xC198,
+ /* U+7FD8 */ 0xC7CC, 0xC199, 0xC19A, 0xC19B, 0xC19C, 0xC19D, 0xC19E, 0xB5D4,
+ /* U+7FE0 */ 0xB4E4, 0xF4E4, 0xC19F, 0xC1A0, 0xC240, 0xF4E3, 0xF4E5, 0xC241,
+ /* U+7FE8 */ 0xC242, 0xF4E6, 0xC243, 0xC244, 0xC245, 0xC246, 0xF4E7, 0xC247,
+ /* U+7FF0 */ 0xBAB2, 0xB0BF, 0xC248, 0xF4E8, 0xC249, 0xC24A, 0xC24B, 0xC24C,
+ /* U+7FF8 */ 0xC24D, 0xC24E, 0xC24F, 0xB7AD, 0xD2ED, 0xC250, 0xC251, 0xC252,
+ /* U+8000 */ 0xD2AB, 0xC0CF, 0xC253, 0xBFBC, 0xEBA3, 0xD5DF, 0xEAC8, 0xC254,
+ /* U+8008 */ 0xC255, 0xC256, 0xC257, 0xF1F3, 0xB6F8, 0xCBA3, 0xC258, 0xC259,
+ /* U+8010 */ 0xC4CD, 0xC25A, 0xF1E7, 0xC25B, 0xF1E8, 0xB8FB, 0xF1E9, 0xBAC4,
+ /* U+8018 */ 0xD4C5, 0xB0D2, 0xC25C, 0xC25D, 0xF1EA, 0xC25E, 0xC25F, 0xC260,
+ /* U+8020 */ 0xF1EB, 0xC261, 0xF1EC, 0xC262, 0xC263, 0xF1ED, 0xF1EE, 0xF1EF,
+ /* U+8028 */ 0xF1F1, 0xF1F0, 0xC5D5, 0xC264, 0xC265, 0xC266, 0xC267, 0xC268,
+ /* U+8030 */ 0xC269, 0xF1F2, 0xC26A, 0xB6FA, 0xC26B, 0xF1F4, 0xD2AE, 0xDEC7,
+ /* U+8038 */ 0xCBCA, 0xC26C, 0xC26D, 0xB3DC, 0xC26E, 0xB5A2, 0xC26F, 0xB9A2,
+ /* U+8040 */ 0xC270, 0xC271, 0xC4F4, 0xF1F5, 0xC272, 0xC273, 0xF1F6, 0xC274,
+ /* U+8048 */ 0xC275, 0xC276, 0xC1C4, 0xC1FB, 0xD6B0, 0xF1F7, 0xC277, 0xC278,
+ /* U+8050 */ 0xC279, 0xC27A, 0xF1F8, 0xC27B, 0xC1AA, 0xC27C, 0xC27D, 0xC27E,
+ /* U+8058 */ 0xC6B8, 0xC280, 0xBEDB, 0xC281, 0xC282, 0xC283, 0xC284, 0xC285,
+ /* U+8060 */ 0xC286, 0xC287, 0xC288, 0xC289, 0xC28A, 0xC28B, 0xC28C, 0xC28D,
+ /* U+8068 */ 0xC28E, 0xF1F9, 0xB4CF, 0xC28F, 0xC290, 0xC291, 0xC292, 0xC293,
+ /* U+8070 */ 0xC294, 0xF1FA, 0xC295, 0xC296, 0xC297, 0xC298, 0xC299, 0xC29A,
+ /* U+8078 */ 0xC29B, 0xC29C, 0xC29D, 0xC29E, 0xC29F, 0xC2A0, 0xC340, 0xEDB2,
+ /* U+8080 */ 0xEDB1, 0xC341, 0xC342, 0xCBE0, 0xD2DE, 0xC343, 0xCBC1, 0xD5D8,
+ /* U+8088 */ 0xC344, 0xC8E2, 0xC345, 0xC0DF, 0xBCA1, 0xC346, 0xC347, 0xC348,
+ /* U+8090 */ 0xC349, 0xC34A, 0xC34B, 0xEBC1, 0xC34C, 0xC34D, 0xD0A4, 0xC34E,
+ /* U+8098 */ 0xD6E2, 0xC34F, 0xB6C7, 0xB8D8, 0xEBC0, 0xB8CE, 0xC350, 0xEBBF,
+ /* U+80A0 */ 0xB3A6, 0xB9C9, 0xD6AB, 0xC351, 0xB7F4, 0xB7CA, 0xC352, 0xC353,
+ /* U+80A8 */ 0xC354, 0xBCE7, 0xB7BE, 0xEBC6, 0xC355, 0xEBC7, 0xB0B9, 0xBFCF,
+ /* U+80B0 */ 0xC356, 0xEBC5, 0xD3FD, 0xC357, 0xEBC8, 0xC358, 0xC359, 0xEBC9,
+ /* U+80B8 */ 0xC35A, 0xC35B, 0xB7CE, 0xC35C, 0xEBC2, 0xEBC4, 0xC9F6, 0xD6D7,
+ /* U+80C0 */ 0xD5CD, 0xD0B2, 0xEBCF, 0xCEB8, 0xEBD0, 0xC35D, 0xB5A8, 0xC35E,
+ /* U+80C8 */ 0xC35F, 0xC360, 0xC361, 0xC362, 0xB1B3, 0xEBD2, 0xCCA5, 0xC363,
+ /* U+80D0 */ 0xC364, 0xC365, 0xC366, 0xC367, 0xC368, 0xC369, 0xC5D6, 0xEBD3,
+ /* U+80D8 */ 0xC36A, 0xEBD1, 0xC5DF, 0xEBCE, 0xCAA4, 0xEBD5, 0xB0FB, 0xC36B,
+ /* U+80E0 */ 0xC36C, 0xBAFA, 0xC36D, 0xC36E, 0xD8B7, 0xF1E3, 0xC36F, 0xEBCA,
+ /* U+80E8 */ 0xEBCB, 0xEBCC, 0xEBCD, 0xEBD6, 0xE6C0, 0xEBD9, 0xC370, 0xBFE8,
+ /* U+80F0 */ 0xD2C8, 0xEBD7, 0xEBDC, 0xB8EC, 0xEBD8, 0xC371, 0xBDBA, 0xC372,
+ /* U+80F8 */ 0xD0D8, 0xC373, 0xB0B7, 0xC374, 0xEBDD, 0xC4DC, 0xC375, 0xC376,
+ /* U+8100 */ 0xC377, 0xC378, 0xD6AC, 0xC379, 0xC37A, 0xC37B, 0xB4E0, 0xC37C,
+ /* U+8108 */ 0xC37D, 0xC2F6, 0xBCB9, 0xC37E, 0xC380, 0xEBDA, 0xEBDB, 0xD4E0,
+ /* U+8110 */ 0xC6EA, 0xC4D4, 0xEBDF, 0xC5A7, 0xD9F5, 0xC381, 0xB2B1, 0xC382,
+ /* U+8118 */ 0xEBE4, 0xC383, 0xBDC5, 0xC384, 0xC385, 0xC386, 0xEBE2, 0xC387,
+ /* U+8120 */ 0xC388, 0xC389, 0xC38A, 0xC38B, 0xC38C, 0xC38D, 0xC38E, 0xC38F,
+ /* U+8128 */ 0xC390, 0xC391, 0xC392, 0xC393, 0xEBE3, 0xC394, 0xC395, 0xB8AC,
+ /* U+8130 */ 0xC396, 0xCDD1, 0xEBE5, 0xC397, 0xC398, 0xC399, 0xEBE1, 0xC39A,
+ /* U+8138 */ 0xC1B3, 0xC39B, 0xC39C, 0xC39D, 0xC39E, 0xC39F, 0xC6A2, 0xC3A0,
+ /* U+8140 */ 0xC440, 0xC441, 0xC442, 0xC443, 0xC444, 0xC445, 0xCCF3, 0xC446,
+ /* U+8148 */ 0xEBE6, 0xC447, 0xC0B0, 0xD2B8, 0xEBE7, 0xC448, 0xC449, 0xC44A,
+ /* U+8150 */ 0xB8AF, 0xB8AD, 0xC44B, 0xEBE8, 0xC7BB, 0xCDF3, 0xC44C, 0xC44D,
+ /* U+8158 */ 0xC44E, 0xEBEA, 0xEBEB, 0xC44F, 0xC450, 0xC451, 0xC452, 0xC453,
+ /* U+8160 */ 0xEBED, 0xC454, 0xC455, 0xC456, 0xC457, 0xD0C8, 0xC458, 0xEBF2,
+ /* U+8168 */ 0xC459, 0xEBEE, 0xC45A, 0xC45B, 0xC45C, 0xEBF1, 0xC8F9, 0xC45D,
+ /* U+8170 */ 0xD1FC, 0xEBEC, 0xC45E, 0xC45F, 0xEBE9, 0xC460, 0xC461, 0xC462,
+ /* U+8178 */ 0xC463, 0xB8B9, 0xCFD9, 0xC4E5, 0xEBEF, 0xEBF0, 0xCCDA, 0xCDC8,
+ /* U+8180 */ 0xB0F2, 0xC464, 0xEBF6, 0xC465, 0xC466, 0xC467, 0xC468, 0xC469,
+ /* U+8188 */ 0xEBF5, 0xC46A, 0xB2B2, 0xC46B, 0xC46C, 0xC46D, 0xC46E, 0xB8E0,
+ /* U+8190 */ 0xC46F, 0xEBF7, 0xC470, 0xC471, 0xC472, 0xC473, 0xC474, 0xC475,
+ /* U+8198 */ 0xB1EC, 0xC476, 0xC477, 0xCCC5, 0xC4A4, 0xCFA5, 0xC478, 0xC479,
+ /* U+81A0 */ 0xC47A, 0xC47B, 0xC47C, 0xEBF9, 0xC47D, 0xC47E, 0xECA2, 0xC480,
+ /* U+81A8 */ 0xC5F2, 0xC481, 0xEBFA, 0xC482, 0xC483, 0xC484, 0xC485, 0xC486,
+ /* U+81B0 */ 0xC487, 0xC488, 0xC489, 0xC9C5, 0xC48A, 0xC48B, 0xC48C, 0xC48D,
+ /* U+81B8 */ 0xC48E, 0xC48F, 0xE2DF, 0xEBFE, 0xC490, 0xC491, 0xC492, 0xC493,
+ /* U+81C0 */ 0xCDCE, 0xECA1, 0xB1DB, 0xD3B7, 0xC494, 0xC495, 0xD2DC, 0xC496,
+ /* U+81C8 */ 0xC497, 0xC498, 0xEBFD, 0xC499, 0xEBFB, 0xC49A, 0xC49B, 0xC49C,
+ /* U+81D0 */ 0xC49D, 0xC49E, 0xC49F, 0xC4A0, 0xC540, 0xC541, 0xC542, 0xC543,
+ /* U+81D8 */ 0xC544, 0xC545, 0xC546, 0xC547, 0xC548, 0xC549, 0xC54A, 0xC54B,
+ /* U+81E0 */ 0xC54C, 0xC54D, 0xC54E, 0xB3BC, 0xC54F, 0xC550, 0xC551, 0xEAB0,
+ /* U+81E8 */ 0xC552, 0xC553, 0xD7D4, 0xC554, 0xF4AB, 0xB3F4, 0xC555, 0xC556,
+ /* U+81F0 */ 0xC557, 0xC558, 0xC559, 0xD6C1, 0xD6C2, 0xC55A, 0xC55B, 0xC55C,
+ /* U+81F8 */ 0xC55D, 0xC55E, 0xC55F, 0xD5E9, 0xBECA, 0xC560, 0xF4A7, 0xC561,
+ /* U+8200 */ 0xD2A8, 0xF4A8, 0xF4A9, 0xC562, 0xF4AA, 0xBECB, 0xD3DF, 0xC563,
+ /* U+8208 */ 0xC564, 0xC565, 0xC566, 0xC567, 0xC9E0, 0xC9E1, 0xC568, 0xC569,
+ /* U+8210 */ 0xF3C2, 0xC56A, 0xCAE6, 0xC56B, 0xCCF2, 0xC56C, 0xC56D, 0xC56E,
+ /* U+8218 */ 0xC56F, 0xC570, 0xC571, 0xE2B6, 0xCBB4, 0xC572, 0xCEE8, 0xD6DB,
+ /* U+8220 */ 0xC573, 0xF4AD, 0xF4AE, 0xF4AF, 0xC574, 0xC575, 0xC576, 0xC577,
+ /* U+8228 */ 0xF4B2, 0xC578, 0xBABD, 0xF4B3, 0xB0E3, 0xF4B0, 0xC579, 0xF4B1,
+ /* U+8230 */ 0xBDA2, 0xB2D5, 0xC57A, 0xF4B6, 0xF4B7, 0xB6E6, 0xB2B0, 0xCFCF,
+ /* U+8238 */ 0xF4B4, 0xB4AC, 0xC57B, 0xF4B5, 0xC57C, 0xC57D, 0xF4B8, 0xC57E,
+ /* U+8240 */ 0xC580, 0xC581, 0xC582, 0xC583, 0xF4B9, 0xC584, 0xC585, 0xCDA7,
+ /* U+8248 */ 0xC586, 0xF4BA, 0xC587, 0xF4BB, 0xC588, 0xC589, 0xC58A, 0xF4BC,
+ /* U+8250 */ 0xC58B, 0xC58C, 0xC58D, 0xC58E, 0xC58F, 0xC590, 0xC591, 0xC592,
+ /* U+8258 */ 0xCBD2, 0xC593, 0xF4BD, 0xC594, 0xC595, 0xC596, 0xC597, 0xF4BE,
+ /* U+8260 */ 0xC598, 0xC599, 0xC59A, 0xC59B, 0xC59C, 0xC59D, 0xC59E, 0xC59F,
+ /* U+8268 */ 0xF4BF, 0xC5A0, 0xC640, 0xC641, 0xC642, 0xC643, 0xF4DE, 0xC1BC,
+ /* U+8270 */ 0xBCE8, 0xC644, 0xC9AB, 0xD1DE, 0xE5F5, 0xC645, 0xC646, 0xC647,
+ /* U+8278 */ 0xC648, 0xDCB3, 0xD2D5, 0xC649, 0xC64A, 0xDCB4, 0xB0AC, 0xDCB5,
+ /* U+8280 */ 0xC64B, 0xC64C, 0xBDDA, 0xC64D, 0xDCB9, 0xC64E, 0xC64F, 0xC650,
+ /* U+8288 */ 0xD8C2, 0xC651, 0xDCB7, 0xD3F3, 0xC652, 0xC9D6, 0xDCBA, 0xDCB6,
+ /* U+8290 */ 0xC653, 0xDCBB, 0xC3A2, 0xC654, 0xC655, 0xC656, 0xC657, 0xDCBC,
+ /* U+8298 */ 0xDCC5, 0xDCBD, 0xC658, 0xC659, 0xCEDF, 0xD6A5, 0xC65A, 0xDCCF,
+ /* U+82A0 */ 0xC65B, 0xDCCD, 0xC65C, 0xC65D, 0xDCD2, 0xBDE6, 0xC2AB, 0xC65E,
+ /* U+82A8 */ 0xDCB8, 0xDCCB, 0xDCCE, 0xDCBE, 0xB7D2, 0xB0C5, 0xDCC7, 0xD0BE,
+ /* U+82B0 */ 0xDCC1, 0xBBA8, 0xC65F, 0xB7BC, 0xDCCC, 0xC660, 0xC661, 0xDCC6,
+ /* U+82B8 */ 0xDCBF, 0xC7DB, 0xC662, 0xC663, 0xC664, 0xD1BF, 0xDCC0, 0xC665,
+ /* U+82C0 */ 0xC666, 0xDCCA, 0xC667, 0xC668, 0xDCD0, 0xC669, 0xC66A, 0xCEAD,
+ /* U+82C8 */ 0xDCC2, 0xC66B, 0xDCC3, 0xDCC8, 0xDCC9, 0xB2D4, 0xDCD1, 0xCBD5,
+ /* U+82D0 */ 0xC66C, 0xD4B7, 0xDCDB, 0xDCDF, 0xCCA6, 0xDCE6, 0xC66D, 0xC3E7,
+ /* U+82D8 */ 0xDCDC, 0xC66E, 0xC66F, 0xBFC1, 0xDCD9, 0xC670, 0xB0FA, 0xB9B6,
+ /* U+82E0 */ 0xDCE5, 0xDCD3, 0xC671, 0xDCC4, 0xDCD6, 0xC8F4, 0xBFE0, 0xC672,
+ /* U+82E8 */ 0xC673, 0xC674, 0xC675, 0xC9BB, 0xC676, 0xC677, 0xC678, 0xB1BD,
+ /* U+82F0 */ 0xC679, 0xD3A2, 0xC67A, 0xC67B, 0xDCDA, 0xC67C, 0xC67D, 0xDCD5,
+ /* U+82F8 */ 0xC67E, 0xC6BB, 0xC680, 0xDCDE, 0xC681, 0xC682, 0xC683, 0xC684,
+ /* U+8300 */ 0xC685, 0xD7C2, 0xC3AF, 0xB7B6, 0xC7D1, 0xC3A9, 0xDCE2, 0xDCD8,
+ /* U+8308 */ 0xDCEB, 0xDCD4, 0xC686, 0xC687, 0xDCDD, 0xC688, 0xBEA5, 0xDCD7,
+ /* U+8310 */ 0xC689, 0xDCE0, 0xC68A, 0xC68B, 0xDCE3, 0xDCE4, 0xC68C, 0xDCF8,
+ /* U+8318 */ 0xC68D, 0xC68E, 0xDCE1, 0xDDA2, 0xDCE7, 0xC68F, 0xC690, 0xC691,
+ /* U+8320 */ 0xC692, 0xC693, 0xC694, 0xC695, 0xC696, 0xC697, 0xC698, 0xBCEB,
+ /* U+8328 */ 0xB4C4, 0xC699, 0xC69A, 0xC3A3, 0xB2E7, 0xDCFA, 0xC69B, 0xDCF2,
+ /* U+8330 */ 0xC69C, 0xDCEF, 0xC69D, 0xDCFC, 0xDCEE, 0xD2F0, 0xB2E8, 0xC69E,
+ /* U+8338 */ 0xC8D7, 0xC8E3, 0xDCFB, 0xC69F, 0xDCED, 0xC6A0, 0xC740, 0xC741,
+ /* U+8340 */ 0xDCF7, 0xC742, 0xC743, 0xDCF5, 0xC744, 0xC745, 0xBEA3, 0xDCF4,
+ /* U+8348 */ 0xC746, 0xB2DD, 0xC747, 0xC748, 0xC749, 0xC74A, 0xC74B, 0xDCF3,
+ /* U+8350 */ 0xBCF6, 0xDCE8, 0xBBC4, 0xC74C, 0xC0F3, 0xC74D, 0xC74E, 0xC74F,
+ /* U+8358 */ 0xC750, 0xC751, 0xBCD4, 0xDCE9, 0xDCEA, 0xC752, 0xDCF1, 0xDCF6,
+ /* U+8360 */ 0xDCF9, 0xB5B4, 0xC753, 0xC8D9, 0xBBE7, 0xDCFE, 0xDCFD, 0xD3AB,
+ /* U+8368 */ 0xDDA1, 0xDDA3, 0xDDA5, 0xD2F1, 0xDDA4, 0xDDA6, 0xDDA7, 0xD2A9,
+ /* U+8370 */ 0xC754, 0xC755, 0xC756, 0xC757, 0xC758, 0xC759, 0xC75A, 0xBAC9,
+ /* U+8378 */ 0xDDA9, 0xC75B, 0xC75C, 0xDDB6, 0xDDB1, 0xDDB4, 0xC75D, 0xC75E,
+ /* U+8380 */ 0xC75F, 0xC760, 0xC761, 0xC762, 0xC763, 0xDDB0, 0xC6CE, 0xC764,
+ /* U+8388 */ 0xC765, 0xC0F2, 0xC766, 0xC767, 0xC768, 0xC769, 0xC9AF, 0xC76A,
+ /* U+8390 */ 0xC76B, 0xC76C, 0xDCEC, 0xDDAE, 0xC76D, 0xC76E, 0xC76F, 0xC770,
+ /* U+8398 */ 0xDDB7, 0xC771, 0xC772, 0xDCF0, 0xDDAF, 0xC773, 0xDDB8, 0xC774,
+ /* U+83A0 */ 0xDDAC, 0xC775, 0xC776, 0xC777, 0xC778, 0xC779, 0xC77A, 0xC77B,
+ /* U+83A8 */ 0xDDB9, 0xDDB3, 0xDDAD, 0xC4AA, 0xC77C, 0xC77D, 0xC77E, 0xC780,
+ /* U+83B0 */ 0xDDA8, 0xC0B3, 0xC1AB, 0xDDAA, 0xDDAB, 0xC781, 0xDDB2, 0xBBF1,
+ /* U+83B8 */ 0xDDB5, 0xD3A8, 0xDDBA, 0xC782, 0xDDBB, 0xC3A7, 0xC783, 0xC784,
+ /* U+83C0 */ 0xDDD2, 0xDDBC, 0xC785, 0xC786, 0xC787, 0xDDD1, 0xC788, 0xB9BD,
+ /* U+83C8 */ 0xC789, 0xC78A, 0xBED5, 0xC78B, 0xBEFA, 0xC78C, 0xC78D, 0xBACA,
+ /* U+83D0 */ 0xC78E, 0xC78F, 0xC790, 0xC791, 0xDDCA, 0xC792, 0xDDC5, 0xC793,
+ /* U+83D8 */ 0xDDBF, 0xC794, 0xC795, 0xC796, 0xB2CB, 0xDDC3, 0xC797, 0xDDCB,
+ /* U+83E0 */ 0xB2A4, 0xDDD5, 0xC798, 0xC799, 0xC79A, 0xDDBE, 0xC79B, 0xC79C,
+ /* U+83E8 */ 0xC79D, 0xC6D0, 0xDDD0, 0xC79E, 0xC79F, 0xC7A0, 0xC840, 0xC841,
+ /* U+83F0 */ 0xDDD4, 0xC1E2, 0xB7C6, 0xC842, 0xC843, 0xC844, 0xC845, 0xC846,
+ /* U+83F8 */ 0xDDCE, 0xDDCF, 0xC847, 0xC848, 0xC849, 0xDDC4, 0xC84A, 0xC84B,
+ /* U+8400 */ 0xC84C, 0xDDBD, 0xC84D, 0xDDCD, 0xCCD1, 0xC84E, 0xDDC9, 0xC84F,
+ /* U+8408 */ 0xC850, 0xC851, 0xC852, 0xDDC2, 0xC3C8, 0xC6BC, 0xCEAE, 0xDDCC,
+ /* U+8410 */ 0xC853, 0xDDC8, 0xC854, 0xC855, 0xC856, 0xC857, 0xC858, 0xC859,
+ /* U+8418 */ 0xDDC1, 0xC85A, 0xC85B, 0xC85C, 0xDDC6, 0xC2DC, 0xC85D, 0xC85E,
+ /* U+8420 */ 0xC85F, 0xC860, 0xC861, 0xC862, 0xD3A9, 0xD3AA, 0xDDD3, 0xCFF4,
+ /* U+8428 */ 0xC8F8, 0xC863, 0xC864, 0xC865, 0xC866, 0xC867, 0xC868, 0xC869,
+ /* U+8430 */ 0xC86A, 0xDDE6, 0xC86B, 0xC86C, 0xC86D, 0xC86E, 0xC86F, 0xC870,
+ /* U+8438 */ 0xDDC7, 0xC871, 0xC872, 0xC873, 0xDDE0, 0xC2E4, 0xC874, 0xC875,
+ /* U+8440 */ 0xC876, 0xC877, 0xC878, 0xC879, 0xC87A, 0xC87B, 0xDDE1, 0xC87C,
+ /* U+8448 */ 0xC87D, 0xC87E, 0xC880, 0xC881, 0xC882, 0xC883, 0xC884, 0xC885,
+ /* U+8450 */ 0xC886, 0xDDD7, 0xC887, 0xC888, 0xC889, 0xC88A, 0xC88B, 0xD6F8,
+ /* U+8458 */ 0xC88C, 0xDDD9, 0xDDD8, 0xB8F0, 0xDDD6, 0xC88D, 0xC88E, 0xC88F,
+ /* U+8460 */ 0xC890, 0xC6CF, 0xC891, 0xB6AD, 0xC892, 0xC893, 0xC894, 0xC895,
+ /* U+8468 */ 0xC896, 0xDDE2, 0xC897, 0xBAF9, 0xD4E1, 0xDDE7, 0xC898, 0xC899,
+ /* U+8470 */ 0xC89A, 0xB4D0, 0xC89B, 0xDDDA, 0xC89C, 0xBFFB, 0xDDE3, 0xC89D,
+ /* U+8478 */ 0xDDDF, 0xC89E, 0xDDDD, 0xC89F, 0xC8A0, 0xC940, 0xC941, 0xC942,
+ /* U+8480 */ 0xC943, 0xC944, 0xB5D9, 0xC945, 0xC946, 0xC947, 0xC948, 0xDDDB,
+ /* U+8488 */ 0xDDDC, 0xDDDE, 0xC949, 0xBDAF, 0xDDE4, 0xC94A, 0xDDE5, 0xC94B,
+ /* U+8490 */ 0xC94C, 0xC94D, 0xC94E, 0xC94F, 0xC950, 0xC951, 0xC952, 0xDDF5,
+ /* U+8498 */ 0xC953, 0xC3C9, 0xC954, 0xC955, 0xCBE2, 0xC956, 0xC957, 0xC958,
+ /* U+84A0 */ 0xC959, 0xDDF2, 0xC95A, 0xC95B, 0xC95C, 0xC95D, 0xC95E, 0xC95F,
+ /* U+84A8 */ 0xC960, 0xC961, 0xC962, 0xC963, 0xC964, 0xC965, 0xC966, 0xD8E1,
+ /* U+84B0 */ 0xC967, 0xC968, 0xC6D1, 0xC969, 0xDDF4, 0xC96A, 0xC96B, 0xC96C,
+ /* U+84B8 */ 0xD5F4, 0xDDF3, 0xDDF0, 0xC96D, 0xC96E, 0xDDEC, 0xC96F, 0xDDEF,
+ /* U+84C0 */ 0xC970, 0xDDE8, 0xC971, 0xC972, 0xD0EE, 0xC973, 0xC974, 0xC975,
+ /* U+84C8 */ 0xC976, 0xC8D8, 0xDDEE, 0xC977, 0xC978, 0xDDE9, 0xC979, 0xC97A,
+ /* U+84D0 */ 0xDDEA, 0xCBF2, 0xC97B, 0xDDED, 0xC97C, 0xC97D, 0xB1CD, 0xC97E,
+ /* U+84D8 */ 0xC980, 0xC981, 0xC982, 0xC983, 0xC984, 0xC0B6, 0xC985, 0xBCBB,
+ /* U+84E0 */ 0xDDF1, 0xC986, 0xC987, 0xDDF7, 0xC988, 0xDDF6, 0xDDEB, 0xC989,
+ /* U+84E8 */ 0xC98A, 0xC98B, 0xC98C, 0xC98D, 0xC5EE, 0xC98E, 0xC98F, 0xC990,
+ /* U+84F0 */ 0xDDFB, 0xC991, 0xC992, 0xC993, 0xC994, 0xC995, 0xC996, 0xC997,
+ /* U+84F8 */ 0xC998, 0xC999, 0xC99A, 0xC99B, 0xDEA4, 0xC99C, 0xC99D, 0xDEA3,
+ /* U+8500 */ 0xC99E, 0xC99F, 0xC9A0, 0xCA40, 0xCA41, 0xCA42, 0xCA43, 0xCA44,
+ /* U+8508 */ 0xCA45, 0xCA46, 0xCA47, 0xCA48, 0xDDF8, 0xCA49, 0xCA4A, 0xCA4B,
+ /* U+8510 */ 0xCA4C, 0xC3EF, 0xCA4D, 0xC2FB, 0xCA4E, 0xCA4F, 0xCA50, 0xD5E1,
+ /* U+8518 */ 0xCA51, 0xCA52, 0xCEB5, 0xCA53, 0xCA54, 0xCA55, 0xCA56, 0xDDFD,
+ /* U+8520 */ 0xCA57, 0xB2CC, 0xCA58, 0xCA59, 0xCA5A, 0xCA5B, 0xCA5C, 0xCA5D,
+ /* U+8528 */ 0xCA5E, 0xCA5F, 0xCA60, 0xC4E8, 0xCADF, 0xCA61, 0xCA62, 0xCA63,
+ /* U+8530 */ 0xCA64, 0xCA65, 0xCA66, 0xCA67, 0xCA68, 0xCA69, 0xCA6A, 0xC7BE,
+ /* U+8538 */ 0xDDFA, 0xDDFC, 0xDDFE, 0xDEA2, 0xB0AA, 0xB1CE, 0xCA6B, 0xCA6C,
+ /* U+8540 */ 0xCA6D, 0xCA6E, 0xCA6F, 0xDEAC, 0xCA70, 0xCA71, 0xCA72, 0xCA73,
+ /* U+8548 */ 0xDEA6, 0xBDB6, 0xC8EF, 0xCA74, 0xCA75, 0xCA76, 0xCA77, 0xCA78,
+ /* U+8550 */ 0xCA79, 0xCA7A, 0xCA7B, 0xCA7C, 0xCA7D, 0xCA7E, 0xDEA1, 0xCA80,
+ /* U+8558 */ 0xCA81, 0xDEA5, 0xCA82, 0xCA83, 0xCA84, 0xCA85, 0xDEA9, 0xCA86,
+ /* U+8560 */ 0xCA87, 0xCA88, 0xCA89, 0xCA8A, 0xDEA8, 0xCA8B, 0xCA8C, 0xCA8D,
+ /* U+8568 */ 0xDEA7, 0xCA8E, 0xCA8F, 0xCA90, 0xCA91, 0xCA92, 0xCA93, 0xCA94,
+ /* U+8570 */ 0xCA95, 0xCA96, 0xDEAD, 0xCA97, 0xD4CC, 0xCA98, 0xCA99, 0xCA9A,
+ /* U+8578 */ 0xCA9B, 0xDEB3, 0xDEAA, 0xDEAE, 0xCA9C, 0xCA9D, 0xC0D9, 0xCA9E,
+ /* U+8580 */ 0xCA9F, 0xCAA0, 0xCB40, 0xCB41, 0xB1A1, 0xDEB6, 0xCB42, 0xDEB1,
+ /* U+8588 */ 0xCB43, 0xCB44, 0xCB45, 0xCB46, 0xCB47, 0xCB48, 0xCB49, 0xDEB2,
+ /* U+8590 */ 0xCB4A, 0xCB4B, 0xCB4C, 0xCB4D, 0xCB4E, 0xCB4F, 0xCB50, 0xCB51,
+ /* U+8598 */ 0xCB52, 0xCB53, 0xCB54, 0xD1A6, 0xDEB5, 0xCB55, 0xCB56, 0xCB57,
+ /* U+85A0 */ 0xCB58, 0xCB59, 0xCB5A, 0xCB5B, 0xDEAF, 0xCB5C, 0xCB5D, 0xCB5E,
+ /* U+85A8 */ 0xDEB0, 0xCB5F, 0xD0BD, 0xCB60, 0xCB61, 0xCB62, 0xDEB4, 0xCAED,
+ /* U+85B0 */ 0xDEB9, 0xCB63, 0xCB64, 0xCB65, 0xCB66, 0xCB67, 0xCB68, 0xDEB8,
+ /* U+85B8 */ 0xCB69, 0xDEB7, 0xCB6A, 0xCB6B, 0xCB6C, 0xCB6D, 0xCB6E, 0xCB6F,
+ /* U+85C0 */ 0xCB70, 0xDEBB, 0xCB71, 0xCB72, 0xCB73, 0xCB74, 0xCB75, 0xCB76,
+ /* U+85C8 */ 0xCB77, 0xBDE5, 0xCB78, 0xCB79, 0xCB7A, 0xCB7B, 0xCB7C, 0xB2D8,
+ /* U+85D0 */ 0xC3EA, 0xCB7D, 0xCB7E, 0xDEBA, 0xCB80, 0xC5BA, 0xCB81, 0xCB82,
+ /* U+85D8 */ 0xCB83, 0xCB84, 0xCB85, 0xCB86, 0xDEBC, 0xCB87, 0xCB88, 0xCB89,
+ /* U+85E0 */ 0xCB8A, 0xCB8B, 0xCB8C, 0xCB8D, 0xCCD9, 0xCB8E, 0xCB8F, 0xCB90,
+ /* U+85E8 */ 0xCB91, 0xB7AA, 0xCB92, 0xCB93, 0xCB94, 0xCB95, 0xCB96, 0xCB97,
+ /* U+85F0 */ 0xCB98, 0xCB99, 0xCB9A, 0xCB9B, 0xCB9C, 0xCB9D, 0xCB9E, 0xCB9F,
+ /* U+85F8 */ 0xCBA0, 0xCC40, 0xCC41, 0xD4E5, 0xCC42, 0xCC43, 0xCC44, 0xDEBD,
+ /* U+8600 */ 0xCC45, 0xCC46, 0xCC47, 0xCC48, 0xCC49, 0xDEBF, 0xCC4A, 0xCC4B,
+ /* U+8608 */ 0xCC4C, 0xCC4D, 0xCC4E, 0xCC4F, 0xCC50, 0xCC51, 0xCC52, 0xCC53,
+ /* U+8610 */ 0xCC54, 0xC4A2, 0xCC55, 0xCC56, 0xCC57, 0xCC58, 0xDEC1, 0xCC59,
+ /* U+8618 */ 0xCC5A, 0xCC5B, 0xCC5C, 0xCC5D, 0xCC5E, 0xCC5F, 0xCC60, 0xCC61,
+ /* U+8620 */ 0xCC62, 0xCC63, 0xCC64, 0xCC65, 0xCC66, 0xCC67, 0xCC68, 0xDEBE,
+ /* U+8628 */ 0xCC69, 0xDEC0, 0xCC6A, 0xCC6B, 0xCC6C, 0xCC6D, 0xCC6E, 0xCC6F,
+ /* U+8630 */ 0xCC70, 0xCC71, 0xCC72, 0xCC73, 0xCC74, 0xCC75, 0xCC76, 0xCC77,
+ /* U+8638 */ 0xD5BA, 0xCC78, 0xCC79, 0xCC7A, 0xDEC2, 0xCC7B, 0xCC7C, 0xCC7D,
+ /* U+8640 */ 0xCC7E, 0xCC80, 0xCC81, 0xCC82, 0xCC83, 0xCC84, 0xCC85, 0xCC86,
+ /* U+8648 */ 0xCC87, 0xCC88, 0xCC89, 0xCC8A, 0xCC8B, 0xF2AE, 0xBBA2, 0xC2B2,
+ /* U+8650 */ 0xC5B0, 0xC2C7, 0xCC8C, 0xCC8D, 0xF2AF, 0xCC8E, 0xCC8F, 0xCC90,
+ /* U+8658 */ 0xCC91, 0xCC92, 0xD0E9, 0xCC93, 0xCC94, 0xCC95, 0xD3DD, 0xCC96,
+ /* U+8660 */ 0xCC97, 0xCC98, 0xEBBD, 0xCC99, 0xCC9A, 0xCC9B, 0xCC9C, 0xCC9D,
+ /* U+8668 */ 0xCC9E, 0xCC9F, 0xCCA0, 0xB3E6, 0xF2B0, 0xCD40, 0xF2B1, 0xCD41,
+ /* U+8670 */ 0xCD42, 0xCAAD, 0xCD43, 0xCD44, 0xCD45, 0xCD46, 0xCD47, 0xCD48,
+ /* U+8678 */ 0xCD49, 0xBAE7, 0xF2B3, 0xF2B5, 0xF2B4, 0xCBE4, 0xCFBA, 0xF2B2,
+ /* U+8680 */ 0xCAB4, 0xD2CF, 0xC2EC, 0xCD4A, 0xCD4B, 0xCD4C, 0xCD4D, 0xCD4E,
+ /* U+8688 */ 0xCD4F, 0xCD50, 0xCEC3, 0xF2B8, 0xB0F6, 0xF2B7, 0xCD51, 0xCD52,
+ /* U+8690 */ 0xCD53, 0xCD54, 0xCD55, 0xF2BE, 0xCD56, 0xB2CF, 0xCD57, 0xCD58,
+ /* U+8698 */ 0xCD59, 0xCD5A, 0xCD5B, 0xCD5C, 0xD1C1, 0xF2BA, 0xCD5D, 0xCD5E,
+ /* U+86A0 */ 0xCD5F, 0xCD60, 0xCD61, 0xF2BC, 0xD4E9, 0xCD62, 0xCD63, 0xF2BB,
+ /* U+86A8 */ 0xF2B6, 0xF2BF, 0xF2BD, 0xCD64, 0xF2B9, 0xCD65, 0xCD66, 0xF2C7,
+ /* U+86B0 */ 0xF2C4, 0xF2C6, 0xCD67, 0xCD68, 0xF2CA, 0xF2C2, 0xF2C0, 0xCD69,
+ /* U+86B8 */ 0xCD6A, 0xCD6B, 0xF2C5, 0xCD6C, 0xCD6D, 0xCD6E, 0xCD6F, 0xCD70,
+ /* U+86C0 */ 0xD6FB, 0xCD71, 0xCD72, 0xCD73, 0xF2C1, 0xCD74, 0xC7F9, 0xC9DF,
+ /* U+86C8 */ 0xCD75, 0xF2C8, 0xB9C6, 0xB5B0, 0xCD76, 0xCD77, 0xF2C3, 0xF2C9,
+ /* U+86D0 */ 0xF2D0, 0xF2D6, 0xCD78, 0xCD79, 0xBBD7, 0xCD7A, 0xCD7B, 0xCD7C,
+ /* U+86D8 */ 0xF2D5, 0xCDDC, 0xCD7D, 0xD6EB, 0xCD7E, 0xCD80, 0xF2D2, 0xF2D4,
+ /* U+86E0 */ 0xCD81, 0xCD82, 0xCD83, 0xCD84, 0xB8F2, 0xCD85, 0xCD86, 0xCD87,
+ /* U+86E8 */ 0xCD88, 0xF2CB, 0xCD89, 0xCD8A, 0xCD8B, 0xF2CE, 0xC2F9, 0xCD8C,
+ /* U+86F0 */ 0xD5DD, 0xF2CC, 0xF2CD, 0xF2CF, 0xF2D3, 0xCD8D, 0xCD8E, 0xCD8F,
+ /* U+86F8 */ 0xF2D9, 0xD3BC, 0xCD90, 0xCD91, 0xCD92, 0xCD93, 0xB6EA, 0xCD94,
+ /* U+8700 */ 0xCAF1, 0xCD95, 0xB7E4, 0xF2D7, 0xCD96, 0xCD97, 0xCD98, 0xF2D8,
+ /* U+8708 */ 0xF2DA, 0xF2DD, 0xF2DB, 0xCD99, 0xCD9A, 0xF2DC, 0xCD9B, 0xCD9C,
+ /* U+8710 */ 0xCD9D, 0xCD9E, 0xD1D1, 0xF2D1, 0xCD9F, 0xCDC9, 0xCDA0, 0xCECF,
+ /* U+8718 */ 0xD6A9, 0xCE40, 0xF2E3, 0xCE41, 0xC3DB, 0xCE42, 0xF2E0, 0xCE43,
+ /* U+8720 */ 0xCE44, 0xC0AF, 0xF2EC, 0xF2DE, 0xCE45, 0xF2E1, 0xCE46, 0xCE47,
+ /* U+8728 */ 0xCE48, 0xF2E8, 0xCE49, 0xCE4A, 0xCE4B, 0xCE4C, 0xF2E2, 0xCE4D,
+ /* U+8730 */ 0xCE4E, 0xF2E7, 0xCE4F, 0xCE50, 0xF2E6, 0xCE51, 0xCE52, 0xF2E9,
+ /* U+8738 */ 0xCE53, 0xCE54, 0xCE55, 0xF2DF, 0xCE56, 0xCE57, 0xF2E4, 0xF2EA,
+ /* U+8740 */ 0xCE58, 0xCE59, 0xCE5A, 0xCE5B, 0xCE5C, 0xCE5D, 0xCE5E, 0xD3AC,
+ /* U+8748 */ 0xF2E5, 0xB2F5, 0xCE5F, 0xCE60, 0xF2F2, 0xCE61, 0xD0AB, 0xCE62,
+ /* U+8750 */ 0xCE63, 0xCE64, 0xCE65, 0xF2F5, 0xCE66, 0xCE67, 0xCE68, 0xBBC8,
+ /* U+8758 */ 0xCE69, 0xF2F9, 0xCE6A, 0xCE6B, 0xCE6C, 0xCE6D, 0xCE6E, 0xCE6F,
+ /* U+8760 */ 0xF2F0, 0xCE70, 0xCE71, 0xF2F6, 0xF2F8, 0xF2FA, 0xCE72, 0xCE73,
+ /* U+8768 */ 0xCE74, 0xCE75, 0xCE76, 0xCE77, 0xCE78, 0xCE79, 0xF2F3, 0xCE7A,
+ /* U+8770 */ 0xF2F1, 0xCE7B, 0xCE7C, 0xCE7D, 0xBAFB, 0xCE7E, 0xB5FB, 0xCE80,
+ /* U+8778 */ 0xCE81, 0xCE82, 0xCE83, 0xF2EF, 0xF2F7, 0xF2ED, 0xF2EE, 0xCE84,
+ /* U+8780 */ 0xCE85, 0xCE86, 0xF2EB, 0xF3A6, 0xCE87, 0xF3A3, 0xCE88, 0xCE89,
+ /* U+8788 */ 0xF3A2, 0xCE8A, 0xCE8B, 0xF2F4, 0xCE8C, 0xC8DA, 0xCE8D, 0xCE8E,
+ /* U+8790 */ 0xCE8F, 0xCE90, 0xCE91, 0xF2FB, 0xCE92, 0xCE93, 0xCE94, 0xF3A5,
+ /* U+8798 */ 0xCE95, 0xCE96, 0xCE97, 0xCE98, 0xCE99, 0xCE9A, 0xCE9B, 0xC3F8,
+ /* U+87A0 */ 0xCE9C, 0xCE9D, 0xCE9E, 0xCE9F, 0xCEA0, 0xCF40, 0xCF41, 0xCF42,
+ /* U+87A8 */ 0xF2FD, 0xCF43, 0xCF44, 0xF3A7, 0xF3A9, 0xF3A4, 0xCF45, 0xF2FC,
+ /* U+87B0 */ 0xCF46, 0xCF47, 0xCF48, 0xF3AB, 0xCF49, 0xF3AA, 0xCF4A, 0xCF4B,
+ /* U+87B8 */ 0xCF4C, 0xCF4D, 0xC2DD, 0xCF4E, 0xCF4F, 0xF3AE, 0xCF50, 0xCF51,
+ /* U+87C0 */ 0xF3B0, 0xCF52, 0xCF53, 0xCF54, 0xCF55, 0xCF56, 0xF3A1, 0xCF57,
+ /* U+87C8 */ 0xCF58, 0xCF59, 0xF3B1, 0xF3AC, 0xCF5A, 0xCF5B, 0xCF5C, 0xCF5D,
+ /* U+87D0 */ 0xCF5E, 0xF3AF, 0xF2FE, 0xF3AD, 0xCF5F, 0xCF60, 0xCF61, 0xCF62,
+ /* U+87D8 */ 0xCF63, 0xCF64, 0xCF65, 0xF3B2, 0xCF66, 0xCF67, 0xCF68, 0xCF69,
+ /* U+87E0 */ 0xF3B4, 0xCF6A, 0xCF6B, 0xCF6C, 0xCF6D, 0xF3A8, 0xCF6E, 0xCF6F,
+ /* U+87E8 */ 0xCF70, 0xCF71, 0xF3B3, 0xCF72, 0xCF73, 0xCF74, 0xF3B5, 0xCF75,
+ /* U+87F0 */ 0xCF76, 0xCF77, 0xCF78, 0xCF79, 0xCF7A, 0xCF7B, 0xCF7C, 0xCF7D,
+ /* U+87F8 */ 0xCF7E, 0xD0B7, 0xCF80, 0xCF81, 0xCF82, 0xCF83, 0xF3B8, 0xCF84,
+ /* U+8800 */ 0xCF85, 0xCF86, 0xCF87, 0xD9F9, 0xCF88, 0xCF89, 0xCF8A, 0xCF8B,
+ /* U+8808 */ 0xCF8C, 0xCF8D, 0xF3B9, 0xCF8E, 0xCF8F, 0xCF90, 0xCF91, 0xCF92,
+ /* U+8810 */ 0xCF93, 0xCF94, 0xCF95, 0xF3B7, 0xCF96, 0xC8E4, 0xF3B6, 0xCF97,
+ /* U+8818 */ 0xCF98, 0xCF99, 0xCF9A, 0xF3BA, 0xCF9B, 0xCF9C, 0xCF9D, 0xCF9E,
+ /* U+8820 */ 0xCF9F, 0xF3BB, 0xB4C0, 0xCFA0, 0xD040, 0xD041, 0xD042, 0xD043,
+ /* U+8828 */ 0xD044, 0xD045, 0xD046, 0xD047, 0xD048, 0xD049, 0xD04A, 0xD04B,
+ /* U+8830 */ 0xD04C, 0xD04D, 0xEEC3, 0xD04E, 0xD04F, 0xD050, 0xD051, 0xD052,
+ /* U+8838 */ 0xD053, 0xF3BC, 0xD054, 0xD055, 0xF3BD, 0xD056, 0xD057, 0xD058,
+ /* U+8840 */ 0xD1AA, 0xD059, 0xD05A, 0xD05B, 0xF4AC, 0xD0C6, 0xD05C, 0xD05D,
+ /* U+8848 */ 0xD05E, 0xD05F, 0xD060, 0xD061, 0xD0D0, 0xD1DC, 0xD062, 0xD063,
+ /* U+8850 */ 0xD064, 0xD065, 0xD066, 0xD067, 0xCFCE, 0xD068, 0xD069, 0xBDD6,
+ /* U+8858 */ 0xD06A, 0xD1C3, 0xD06B, 0xD06C, 0xD06D, 0xD06E, 0xD06F, 0xD070,
+ /* U+8860 */ 0xD071, 0xBAE2, 0xE1E9, 0xD2C2, 0xF1C2, 0xB2B9, 0xD072, 0xD073,
+ /* U+8868 */ 0xB1ED, 0xF1C3, 0xD074, 0xC9C0, 0xB3C4, 0xD075, 0xD9F2, 0xD076,
+ /* U+8870 */ 0xCBA5, 0xD077, 0xF1C4, 0xD078, 0xD079, 0xD07A, 0xD07B, 0xD6D4,
+ /* U+8878 */ 0xD07C, 0xD07D, 0xD07E, 0xD080, 0xD081, 0xF1C5, 0xF4C0, 0xF1C6,
+ /* U+8880 */ 0xD082, 0xD4AC, 0xF1C7, 0xD083, 0xB0C0, 0xF4C1, 0xD084, 0xD085,
+ /* U+8888 */ 0xF4C2, 0xD086, 0xD087, 0xB4FC, 0xD088, 0xC5DB, 0xD089, 0xD08A,
+ /* U+8890 */ 0xD08B, 0xD08C, 0xCCBB, 0xD08D, 0xD08E, 0xD08F, 0xD0E4, 0xD090,
+ /* U+8898 */ 0xD091, 0xD092, 0xD093, 0xD094, 0xCDE0, 0xD095, 0xD096, 0xD097,
+ /* U+88A0 */ 0xD098, 0xD099, 0xF1C8, 0xD09A, 0xD9F3, 0xD09B, 0xD09C, 0xD09D,
+ /* U+88A8 */ 0xD09E, 0xD09F, 0xD0A0, 0xB1BB, 0xD140, 0xCFAE, 0xD141, 0xD142,
+ /* U+88B0 */ 0xD143, 0xB8A4, 0xD144, 0xD145, 0xD146, 0xD147, 0xD148, 0xF1CA,
+ /* U+88B8 */ 0xD149, 0xD14A, 0xD14B, 0xD14C, 0xF1CB, 0xD14D, 0xD14E, 0xD14F,
+ /* U+88C0 */ 0xD150, 0xB2C3, 0xC1D1, 0xD151, 0xD152, 0xD7B0, 0xF1C9, 0xD153,
+ /* U+88C8 */ 0xD154, 0xF1CC, 0xD155, 0xD156, 0xD157, 0xD158, 0xF1CE, 0xD159,
+ /* U+88D0 */ 0xD15A, 0xD15B, 0xD9F6, 0xD15C, 0xD2E1, 0xD4A3, 0xD15D, 0xD15E,
+ /* U+88D8 */ 0xF4C3, 0xC8B9, 0xD15F, 0xD160, 0xD161, 0xD162, 0xD163, 0xF4C4,
+ /* U+88E0 */ 0xD164, 0xD165, 0xF1CD, 0xF1CF, 0xBFE3, 0xF1D0, 0xD166, 0xD167,
+ /* U+88E8 */ 0xF1D4, 0xD168, 0xD169, 0xD16A, 0xD16B, 0xD16C, 0xD16D, 0xD16E,
+ /* U+88F0 */ 0xF1D6, 0xF1D1, 0xD16F, 0xC9D1, 0xC5E1, 0xD170, 0xD171, 0xD172,
+ /* U+88F8 */ 0xC2E3, 0xB9FC, 0xD173, 0xD174, 0xF1D3, 0xD175, 0xF1D5, 0xD176,
+ /* U+8900 */ 0xD177, 0xD178, 0xB9D3, 0xD179, 0xD17A, 0xD17B, 0xD17C, 0xD17D,
+ /* U+8908 */ 0xD17E, 0xD180, 0xF1DB, 0xD181, 0xD182, 0xD183, 0xD184, 0xD185,
+ /* U+8910 */ 0xBAD6, 0xD186, 0xB0FD, 0xF1D9, 0xD187, 0xD188, 0xD189, 0xD18A,
+ /* U+8918 */ 0xD18B, 0xF1D8, 0xF1D2, 0xF1DA, 0xD18C, 0xD18D, 0xD18E, 0xD18F,
+ /* U+8920 */ 0xD190, 0xF1D7, 0xD191, 0xD192, 0xD193, 0xC8EC, 0xD194, 0xD195,
+ /* U+8928 */ 0xD196, 0xD197, 0xCDCA, 0xF1DD, 0xD198, 0xD199, 0xD19A, 0xD19B,
+ /* U+8930 */ 0xE5BD, 0xD19C, 0xD19D, 0xD19E, 0xF1DC, 0xD19F, 0xF1DE, 0xD1A0,
+ /* U+8938 */ 0xD240, 0xD241, 0xD242, 0xD243, 0xD244, 0xD245, 0xD246, 0xD247,
+ /* U+8940 */ 0xD248, 0xF1DF, 0xD249, 0xD24A, 0xCFE5, 0xD24B, 0xD24C, 0xD24D,
+ /* U+8948 */ 0xD24E, 0xD24F, 0xD250, 0xD251, 0xD252, 0xD253, 0xD254, 0xD255,
+ /* U+8950 */ 0xD256, 0xD257, 0xD258, 0xD259, 0xD25A, 0xD25B, 0xD25C, 0xD25D,
+ /* U+8958 */ 0xD25E, 0xD25F, 0xD260, 0xD261, 0xD262, 0xD263, 0xF4C5, 0xBDF3,
+ /* U+8960 */ 0xD264, 0xD265, 0xD266, 0xD267, 0xD268, 0xD269, 0xF1E0, 0xD26A,
+ /* U+8968 */ 0xD26B, 0xD26C, 0xD26D, 0xD26E, 0xD26F, 0xD270, 0xD271, 0xD272,
+ /* U+8970 */ 0xD273, 0xD274, 0xD275, 0xD276, 0xD277, 0xD278, 0xD279, 0xD27A,
+ /* U+8978 */ 0xD27B, 0xD27C, 0xD27D, 0xF1E1, 0xD27E, 0xD280, 0xD281, 0xCEF7,
+ /* U+8980 */ 0xD282, 0xD2AA, 0xD283, 0xF1FB, 0xD284, 0xD285, 0xB8B2, 0xD286,
+ /* U+8988 */ 0xD287, 0xD288, 0xD289, 0xD28A, 0xD28B, 0xD28C, 0xD28D, 0xD28E,
+ /* U+8990 */ 0xD28F, 0xD290, 0xD291, 0xD292, 0xD293, 0xD294, 0xD295, 0xD296,
+ /* U+8998 */ 0xD297, 0xD298, 0xD299, 0xD29A, 0xD29B, 0xD29C, 0xD29D, 0xD29E,
+ /* U+89A0 */ 0xD29F, 0xD2A0, 0xD340, 0xD341, 0xD342, 0xD343, 0xD344, 0xD345,
+ /* U+89A8 */ 0xD346, 0xD347, 0xD348, 0xD349, 0xD34A, 0xD34B, 0xD34C, 0xD34D,
+ /* U+89B0 */ 0xD34E, 0xD34F, 0xD350, 0xD351, 0xD352, 0xD353, 0xD354, 0xD355,
+ /* U+89B8 */ 0xD356, 0xD357, 0xD358, 0xD359, 0xD35A, 0xD35B, 0xD35C, 0xD35D,
+ /* U+89C0 */ 0xD35E, 0xBCFB, 0xB9DB, 0xD35F, 0xB9E6, 0xC3D9, 0xCAD3, 0xEAE8,
+ /* U+89C8 */ 0xC0C0, 0xBEF5, 0xEAE9, 0xEAEA, 0xEAEB, 0xD360, 0xEAEC, 0xEAED,
+ /* U+89D0 */ 0xEAEE, 0xEAEF, 0xBDC7, 0xD361, 0xD362, 0xD363, 0xF5FB, 0xD364,
+ /* U+89D8 */ 0xD365, 0xD366, 0xF5FD, 0xD367, 0xF5FE, 0xD368, 0xF5FC, 0xD369,
+ /* U+89E0 */ 0xD36A, 0xD36B, 0xD36C, 0xBDE2, 0xD36D, 0xF6A1, 0xB4A5, 0xD36E,
+ /* U+89E8 */ 0xD36F, 0xD370, 0xD371, 0xF6A2, 0xD372, 0xD373, 0xD374, 0xF6A3,
+ /* U+89F0 */ 0xD375, 0xD376, 0xD377, 0xECB2, 0xD378, 0xD379, 0xD37A, 0xD37B,
+ /* U+89F8 */ 0xD37C, 0xD37D, 0xD37E, 0xD380, 0xD381, 0xD382, 0xD383, 0xD384,
+ /* U+8A00 */ 0xD1D4, 0xD385, 0xD386, 0xD387, 0xD388, 0xD389, 0xD38A, 0xD9EA,
+ /* U+8A08 */ 0xD38B, 0xD38C, 0xD38D, 0xD38E, 0xD38F, 0xD390, 0xD391, 0xD392,
+ /* U+8A10 */ 0xD393, 0xD394, 0xD395, 0xD396, 0xD397, 0xD398, 0xD399, 0xD39A,
+ /* U+8A18 */ 0xD39B, 0xD39C, 0xD39D, 0xD39E, 0xD39F, 0xD3A0, 0xD440, 0xD441,
+ /* U+8A20 */ 0xD442, 0xD443, 0xD444, 0xD445, 0xD446, 0xD447, 0xD448, 0xD449,
+ /* U+8A28 */ 0xD44A, 0xD44B, 0xD44C, 0xD44D, 0xD44E, 0xD44F, 0xD450, 0xD451,
+ /* U+8A30 */ 0xD452, 0xD453, 0xD454, 0xD455, 0xD456, 0xD457, 0xD458, 0xD459,
+ /* U+8A38 */ 0xD45A, 0xD45B, 0xD45C, 0xD45D, 0xD45E, 0xD45F, 0xF6A4, 0xD460,
+ /* U+8A40 */ 0xD461, 0xD462, 0xD463, 0xD464, 0xD465, 0xD466, 0xD467, 0xD468,
+ /* U+8A48 */ 0xEEBA, 0xD469, 0xD46A, 0xD46B, 0xD46C, 0xD46D, 0xD46E, 0xD46F,
+ /* U+8A50 */ 0xD470, 0xD471, 0xD472, 0xD473, 0xD474, 0xD475, 0xD476, 0xD477,
+ /* U+8A58 */ 0xD478, 0xD479, 0xD47A, 0xD47B, 0xD47C, 0xD47D, 0xD47E, 0xD480,
+ /* U+8A60 */ 0xD481, 0xD482, 0xD483, 0xD484, 0xD485, 0xD486, 0xD487, 0xD488,
+ /* U+8A68 */ 0xD489, 0xD48A, 0xD48B, 0xD48C, 0xD48D, 0xD48E, 0xD48F, 0xD490,
+ /* U+8A70 */ 0xD491, 0xD492, 0xD493, 0xD494, 0xD495, 0xD496, 0xD497, 0xD498,
+ /* U+8A78 */ 0xD499, 0xD5B2, 0xD49A, 0xD49B, 0xD49C, 0xD49D, 0xD49E, 0xD49F,
+ /* U+8A80 */ 0xD4A0, 0xD540, 0xD541, 0xD542, 0xD543, 0xD544, 0xD545, 0xD546,
+ /* U+8A88 */ 0xD547, 0xD3FE, 0xCCDC, 0xD548, 0xD549, 0xD54A, 0xD54B, 0xD54C,
+ /* U+8A90 */ 0xD54D, 0xD54E, 0xD54F, 0xCAC4, 0xD550, 0xD551, 0xD552, 0xD553,
+ /* U+8A98 */ 0xD554, 0xD555, 0xD556, 0xD557, 0xD558, 0xD559, 0xD55A, 0xD55B,
+ /* U+8AA0 */ 0xD55C, 0xD55D, 0xD55E, 0xD55F, 0xD560, 0xD561, 0xD562, 0xD563,
+ /* U+8AA8 */ 0xD564, 0xD565, 0xD566, 0xD567, 0xD568, 0xD569, 0xD56A, 0xD56B,
+ /* U+8AB0 */ 0xD56C, 0xD56D, 0xD56E, 0xD56F, 0xD570, 0xD571, 0xD572, 0xD573,
+ /* U+8AB8 */ 0xD574, 0xD575, 0xD576, 0xD577, 0xD578, 0xD579, 0xD57A, 0xD57B,
+ /* U+8AC0 */ 0xD57C, 0xD57D, 0xD57E, 0xD580, 0xD581, 0xD582, 0xD583, 0xD584,
+ /* U+8AC8 */ 0xD585, 0xD586, 0xD587, 0xD588, 0xD589, 0xD58A, 0xD58B, 0xD58C,
+ /* U+8AD0 */ 0xD58D, 0xD58E, 0xD58F, 0xD590, 0xD591, 0xD592, 0xD593, 0xD594,
+ /* U+8AD8 */ 0xD595, 0xD596, 0xD597, 0xD598, 0xD599, 0xD59A, 0xD59B, 0xD59C,
+ /* U+8AE0 */ 0xD59D, 0xD59E, 0xD59F, 0xD5A0, 0xD640, 0xD641, 0xD642, 0xD643,
+ /* U+8AE8 */ 0xD644, 0xD645, 0xD646, 0xD647, 0xD648, 0xD649, 0xD64A, 0xD64B,
+ /* U+8AF0 */ 0xD64C, 0xD64D, 0xD64E, 0xD64F, 0xD650, 0xD651, 0xD652, 0xD653,
+ /* U+8AF8 */ 0xD654, 0xD655, 0xD656, 0xD657, 0xD658, 0xD659, 0xD65A, 0xD65B,
+ /* U+8B00 */ 0xD65C, 0xD65D, 0xD65E, 0xD65F, 0xD660, 0xD661, 0xD662, 0xE5C0,
+ /* U+8B08 */ 0xD663, 0xD664, 0xD665, 0xD666, 0xD667, 0xD668, 0xD669, 0xD66A,
+ /* U+8B10 */ 0xD66B, 0xD66C, 0xD66D, 0xD66E, 0xD66F, 0xD670, 0xD671, 0xD672,
+ /* U+8B18 */ 0xD673, 0xD674, 0xD675, 0xD676, 0xD677, 0xD678, 0xD679, 0xD67A,
+ /* U+8B20 */ 0xD67B, 0xD67C, 0xD67D, 0xD67E, 0xD680, 0xD681, 0xF6A5, 0xD682,
+ /* U+8B28 */ 0xD683, 0xD684, 0xD685, 0xD686, 0xD687, 0xD688, 0xD689, 0xD68A,
+ /* U+8B30 */ 0xD68B, 0xD68C, 0xD68D, 0xD68E, 0xD68F, 0xD690, 0xD691, 0xD692,
+ /* U+8B38 */ 0xD693, 0xD694, 0xD695, 0xD696, 0xD697, 0xD698, 0xD699, 0xD69A,
+ /* U+8B40 */ 0xD69B, 0xD69C, 0xD69D, 0xD69E, 0xD69F, 0xD6A0, 0xD740, 0xD741,
+ /* U+8B48 */ 0xD742, 0xD743, 0xD744, 0xD745, 0xD746, 0xD747, 0xD748, 0xD749,
+ /* U+8B50 */ 0xD74A, 0xD74B, 0xD74C, 0xD74D, 0xD74E, 0xD74F, 0xD750, 0xD751,
+ /* U+8B58 */ 0xD752, 0xD753, 0xD754, 0xD755, 0xD756, 0xD757, 0xD758, 0xD759,
+ /* U+8B60 */ 0xD75A, 0xD75B, 0xD75C, 0xD75D, 0xD75E, 0xD75F, 0xBEAF, 0xD760,
+ /* U+8B68 */ 0xD761, 0xD762, 0xD763, 0xD764, 0xC6A9, 0xD765, 0xD766, 0xD767,
+ /* U+8B70 */ 0xD768, 0xD769, 0xD76A, 0xD76B, 0xD76C, 0xD76D, 0xD76E, 0xD76F,
+ /* U+8B78 */ 0xD770, 0xD771, 0xD772, 0xD773, 0xD774, 0xD775, 0xD776, 0xD777,
+ /* U+8B80 */ 0xD778, 0xD779, 0xD77A, 0xD77B, 0xD77C, 0xD77D, 0xD77E, 0xD780,
+ /* U+8B88 */ 0xD781, 0xD782, 0xD783, 0xD784, 0xD785, 0xD786, 0xD787, 0xD788,
+ /* U+8B90 */ 0xD789, 0xD78A, 0xD78B, 0xD78C, 0xD78D, 0xD78E, 0xD78F, 0xD790,
+ /* U+8B98 */ 0xD791, 0xD792, 0xD793, 0xD794, 0xD795, 0xD796, 0xD797, 0xD798,
+ /* U+8BA0 */ 0xDAA5, 0xBCC6, 0xB6A9, 0xB8BC, 0xC8CF, 0xBCA5, 0xDAA6, 0xDAA7,
+ /* U+8BA8 */ 0xCCD6, 0xC8C3, 0xDAA8, 0xC6FD, 0xD799, 0xD1B5, 0xD2E9, 0xD1B6,
+ /* U+8BB0 */ 0xBCC7, 0xD79A, 0xBDB2, 0xBBE4, 0xDAA9, 0xDAAA, 0xD1C8, 0xDAAB,
+ /* U+8BB8 */ 0xD0ED, 0xB6EF, 0xC2DB, 0xD79B, 0xCBCF, 0xB7ED, 0xC9E8, 0xB7C3,
+ /* U+8BC0 */ 0xBEF7, 0xD6A4, 0xDAAC, 0xDAAD, 0xC6C0, 0xD7E7, 0xCAB6, 0xD79C,
+ /* U+8BC8 */ 0xD5A9, 0xCBDF, 0xD5EF, 0xDAAE, 0xD6DF, 0xB4CA, 0xDAB0, 0xDAAF,
+ /* U+8BD0 */ 0xD79D, 0xD2EB, 0xDAB1, 0xDAB2, 0xDAB3, 0xCAD4, 0xDAB4, 0xCAAB,
+ /* U+8BD8 */ 0xDAB5, 0xDAB6, 0xB3CF, 0xD6EF, 0xDAB7, 0xBBB0, 0xB5AE, 0xDAB8,
+ /* U+8BE0 */ 0xDAB9, 0xB9EE, 0xD1AF, 0xD2E8, 0xDABA, 0xB8C3, 0xCFEA, 0xB2EF,
+ /* U+8BE8 */ 0xDABB, 0xDABC, 0xD79E, 0xBDEB, 0xCEDC, 0xD3EF, 0xDABD, 0xCEF3,
+ /* U+8BF0 */ 0xDABE, 0xD3D5, 0xBBE5, 0xDABF, 0xCBB5, 0xCBD0, 0xDAC0, 0xC7EB,
+ /* U+8BF8 */ 0xD6EE, 0xDAC1, 0xC5B5, 0xB6C1, 0xDAC2, 0xB7CC, 0xBFCE, 0xDAC3,
+ /* U+8C00 */ 0xDAC4, 0xCBAD, 0xDAC5, 0xB5F7, 0xDAC6, 0xC1C2, 0xD7BB, 0xDAC7,
+ /* U+8C08 */ 0xCCB8, 0xD79F, 0xD2EA, 0xC4B1, 0xDAC8, 0xB5FD, 0xBBD1, 0xDAC9,
+ /* U+8C10 */ 0xD0B3, 0xDACA, 0xDACB, 0xCEBD, 0xDACC, 0xDACD, 0xDACE, 0xB2F7,
+ /* U+8C18 */ 0xDAD1, 0xDACF, 0xD1E8, 0xDAD0, 0xC3D5, 0xDAD2, 0xD7A0, 0xDAD3,
+ /* U+8C20 */ 0xDAD4, 0xDAD5, 0xD0BB, 0xD2A5, 0xB0F9, 0xDAD6, 0xC7AB, 0xDAD7,
+ /* U+8C28 */ 0xBDF7, 0xC3A1, 0xDAD8, 0xDAD9, 0xC3FD, 0xCCB7, 0xDADA, 0xDADB,
+ /* U+8C30 */ 0xC0BE, 0xC6D7, 0xDADC, 0xDADD, 0xC7B4, 0xDADE, 0xDADF, 0xB9C8,
+ /* U+8C38 */ 0xD840, 0xD841, 0xD842, 0xD843, 0xD844, 0xD845, 0xD846, 0xD847,
+ /* U+8C40 */ 0xD848, 0xBBED, 0xD849, 0xD84A, 0xD84B, 0xD84C, 0xB6B9, 0xF4F8,
+ /* U+8C48 */ 0xD84D, 0xF4F9, 0xD84E, 0xD84F, 0xCDE3, 0xD850, 0xD851, 0xD852,
+ /* U+8C50 */ 0xD853, 0xD854, 0xD855, 0xD856, 0xD857, 0xF5B9, 0xD858, 0xD859,
+ /* U+8C58 */ 0xD85A, 0xD85B, 0xEBE0, 0xD85C, 0xD85D, 0xD85E, 0xD85F, 0xD860,
+ /* U+8C60 */ 0xD861, 0xCFF3, 0xBBBF, 0xD862, 0xD863, 0xD864, 0xD865, 0xD866,
+ /* U+8C68 */ 0xD867, 0xD868, 0xBAC0, 0xD4A5, 0xD869, 0xD86A, 0xD86B, 0xD86C,
+ /* U+8C70 */ 0xD86D, 0xD86E, 0xD86F, 0xE1D9, 0xD870, 0xD871, 0xD872, 0xD873,
+ /* U+8C78 */ 0xF5F4, 0xB1AA, 0xB2F2, 0xD874, 0xD875, 0xD876, 0xD877, 0xD878,
+ /* U+8C80 */ 0xD879, 0xD87A, 0xF5F5, 0xD87B, 0xD87C, 0xF5F7, 0xD87D, 0xD87E,
+ /* U+8C88 */ 0xD880, 0xBAD1, 0xF5F6, 0xD881, 0xC3B2, 0xD882, 0xD883, 0xD884,
+ /* U+8C90 */ 0xD885, 0xD886, 0xD887, 0xD888, 0xF5F9, 0xD889, 0xD88A, 0xD88B,
+ /* U+8C98 */ 0xF5F8, 0xD88C, 0xD88D, 0xD88E, 0xD88F, 0xD890, 0xD891, 0xD892,
+ /* U+8CA0 */ 0xD893, 0xD894, 0xD895, 0xD896, 0xD897, 0xD898, 0xD899, 0xD89A,
+ /* U+8CA8 */ 0xD89B, 0xD89C, 0xD89D, 0xD89E, 0xD89F, 0xD8A0, 0xD940, 0xD941,
+ /* U+8CB0 */ 0xD942, 0xD943, 0xD944, 0xD945, 0xD946, 0xD947, 0xD948, 0xD949,
+ /* U+8CB8 */ 0xD94A, 0xD94B, 0xD94C, 0xD94D, 0xD94E, 0xD94F, 0xD950, 0xD951,
+ /* U+8CC0 */ 0xD952, 0xD953, 0xD954, 0xD955, 0xD956, 0xD957, 0xD958, 0xD959,
+ /* U+8CC8 */ 0xD95A, 0xD95B, 0xD95C, 0xD95D, 0xD95E, 0xD95F, 0xD960, 0xD961,
+ /* U+8CD0 */ 0xD962, 0xD963, 0xD964, 0xD965, 0xD966, 0xD967, 0xD968, 0xD969,
+ /* U+8CD8 */ 0xD96A, 0xD96B, 0xD96C, 0xD96D, 0xD96E, 0xD96F, 0xD970, 0xD971,
+ /* U+8CE0 */ 0xD972, 0xD973, 0xD974, 0xD975, 0xD976, 0xD977, 0xD978, 0xD979,
+ /* U+8CE8 */ 0xD97A, 0xD97B, 0xD97C, 0xD97D, 0xD97E, 0xD980, 0xD981, 0xD982,
+ /* U+8CF0 */ 0xD983, 0xD984, 0xD985, 0xD986, 0xD987, 0xD988, 0xD989, 0xD98A,
+ /* U+8CF8 */ 0xD98B, 0xD98C, 0xD98D, 0xD98E, 0xD98F, 0xD990, 0xD991, 0xD992,
+ /* U+8D00 */ 0xD993, 0xD994, 0xD995, 0xD996, 0xD997, 0xD998, 0xD999, 0xD99A,
+ /* U+8D08 */ 0xD99B, 0xD99C, 0xD99D, 0xD99E, 0xD99F, 0xD9A0, 0xDA40, 0xDA41,
+ /* U+8D10 */ 0xDA42, 0xDA43, 0xDA44, 0xDA45, 0xDA46, 0xDA47, 0xDA48, 0xDA49,
+ /* U+8D18 */ 0xDA4A, 0xDA4B, 0xDA4C, 0xDA4D, 0xDA4E, 0xB1B4, 0xD5EA, 0xB8BA,
+ /* U+8D20 */ 0xDA4F, 0xB9B1, 0xB2C6, 0xD4F0, 0xCFCD, 0xB0DC, 0xD5CB, 0xBBF5,
+ /* U+8D28 */ 0xD6CA, 0xB7B7, 0xCCB0, 0xC6B6, 0xB1E1, 0xB9BA, 0xD6FC, 0xB9E1,
+ /* U+8D30 */ 0xB7A1, 0xBCFA, 0xEADA, 0xEADB, 0xCCF9, 0xB9F3, 0xEADC, 0xB4FB,
+ /* U+8D38 */ 0xC3B3, 0xB7D1, 0xBAD8, 0xEADD, 0xD4F4, 0xEADE, 0xBCD6, 0xBBDF,
+ /* U+8D40 */ 0xEADF, 0xC1DE, 0xC2B8, 0xD4DF, 0xD7CA, 0xEAE0, 0xEAE1, 0xEAE4,
+ /* U+8D48 */ 0xEAE2, 0xEAE3, 0xC9DE, 0xB8B3, 0xB6C4, 0xEAE5, 0xCAEA, 0xC9CD,
+ /* U+8D50 */ 0xB4CD, 0xDA50, 0xDA51, 0xE2D9, 0xC5E2, 0xEAE6, 0xC0B5, 0xDA52,
+ /* U+8D58 */ 0xD7B8, 0xEAE7, 0xD7AC, 0xC8FC, 0xD8D3, 0xD8CD, 0xD4DE, 0xDA53,
+ /* U+8D60 */ 0xD4F9, 0xC9C4, 0xD3AE, 0xB8D3, 0xB3E0, 0xDA54, 0xC9E2, 0xF4F6,
+ /* U+8D68 */ 0xDA55, 0xDA56, 0xDA57, 0xBAD5, 0xDA58, 0xF4F7, 0xDA59, 0xDA5A,
+ /* U+8D70 */ 0xD7DF, 0xDA5B, 0xDA5C, 0xF4F1, 0xB8B0, 0xD5D4, 0xB8CF, 0xC6F0,
+ /* U+8D78 */ 0xDA5D, 0xDA5E, 0xDA5F, 0xDA60, 0xDA61, 0xDA62, 0xDA63, 0xDA64,
+ /* U+8D80 */ 0xDA65, 0xB3C3, 0xDA66, 0xDA67, 0xF4F2, 0xB3AC, 0xDA68, 0xDA69,
+ /* U+8D88 */ 0xDA6A, 0xDA6B, 0xD4BD, 0xC7F7, 0xDA6C, 0xDA6D, 0xDA6E, 0xDA6F,
+ /* U+8D90 */ 0xDA70, 0xF4F4, 0xDA71, 0xDA72, 0xF4F3, 0xDA73, 0xDA74, 0xDA75,
+ /* U+8D98 */ 0xDA76, 0xDA77, 0xDA78, 0xDA79, 0xDA7A, 0xDA7B, 0xDA7C, 0xCCCB,
+ /* U+8DA0 */ 0xDA7D, 0xDA7E, 0xDA80, 0xC8A4, 0xDA81, 0xDA82, 0xDA83, 0xDA84,
+ /* U+8DA8 */ 0xDA85, 0xDA86, 0xDA87, 0xDA88, 0xDA89, 0xDA8A, 0xDA8B, 0xDA8C,
+ /* U+8DB0 */ 0xDA8D, 0xF4F5, 0xDA8E, 0xD7E3, 0xC5BF, 0xF5C0, 0xDA8F, 0xDA90,
+ /* U+8DB8 */ 0xF5BB, 0xDA91, 0xF5C3, 0xDA92, 0xF5C2, 0xDA93, 0xD6BA, 0xF5C1,
+ /* U+8DC0 */ 0xDA94, 0xDA95, 0xDA96, 0xD4BE, 0xF5C4, 0xDA97, 0xF5CC, 0xDA98,
+ /* U+8DC8 */ 0xDA99, 0xDA9A, 0xDA9B, 0xB0CF, 0xB5F8, 0xDA9C, 0xF5C9, 0xF5CA,
+ /* U+8DD0 */ 0xDA9D, 0xC5DC, 0xDA9E, 0xDA9F, 0xDAA0, 0xDB40, 0xF5C5, 0xF5C6,
+ /* U+8DD8 */ 0xDB41, 0xDB42, 0xF5C7, 0xF5CB, 0xDB43, 0xBEE0, 0xF5C8, 0xB8FA,
+ /* U+8DE0 */ 0xDB44, 0xDB45, 0xDB46, 0xF5D0, 0xF5D3, 0xDB47, 0xDB48, 0xDB49,
+ /* U+8DE8 */ 0xBFE7, 0xDB4A, 0xB9F2, 0xF5BC, 0xF5CD, 0xDB4B, 0xDB4C, 0xC2B7,
+ /* U+8DF0 */ 0xDB4D, 0xDB4E, 0xDB4F, 0xCCF8, 0xDB50, 0xBCF9, 0xDB51, 0xF5CE,
+ /* U+8DF8 */ 0xF5CF, 0xF5D1, 0xB6E5, 0xF5D2, 0xDB52, 0xF5D5, 0xDB53, 0xDB54,
+ /* U+8E00 */ 0xDB55, 0xDB56, 0xDB57, 0xDB58, 0xDB59, 0xF5BD, 0xDB5A, 0xDB5B,
+ /* U+8E08 */ 0xDB5C, 0xF5D4, 0xD3BB, 0xDB5D, 0xB3EC, 0xDB5E, 0xDB5F, 0xCCA4,
+ /* U+8E10 */ 0xDB60, 0xDB61, 0xDB62, 0xDB63, 0xF5D6, 0xDB64, 0xDB65, 0xDB66,
+ /* U+8E18 */ 0xDB67, 0xDB68, 0xDB69, 0xDB6A, 0xDB6B, 0xF5D7, 0xBEE1, 0xF5D8,
+ /* U+8E20 */ 0xDB6C, 0xDB6D, 0xCCDF, 0xF5DB, 0xDB6E, 0xDB6F, 0xDB70, 0xDB71,
+ /* U+8E28 */ 0xDB72, 0xB2C8, 0xD7D9, 0xDB73, 0xF5D9, 0xDB74, 0xF5DA, 0xF5DC,
+ /* U+8E30 */ 0xDB75, 0xF5E2, 0xDB76, 0xDB77, 0xDB78, 0xF5E0, 0xDB79, 0xDB7A,
+ /* U+8E38 */ 0xDB7B, 0xF5DF, 0xF5DD, 0xDB7C, 0xDB7D, 0xF5E1, 0xDB7E, 0xDB80,
+ /* U+8E40 */ 0xF5DE, 0xF5E4, 0xF5E5, 0xDB81, 0xCCE3, 0xDB82, 0xDB83, 0xE5BF,
+ /* U+8E48 */ 0xB5B8, 0xF5E3, 0xF5E8, 0xCCA3, 0xDB84, 0xDB85, 0xDB86, 0xDB87,
+ /* U+8E50 */ 0xDB88, 0xF5E6, 0xF5E7, 0xDB89, 0xDB8A, 0xDB8B, 0xDB8C, 0xDB8D,
+ /* U+8E58 */ 0xDB8E, 0xF5BE, 0xDB8F, 0xDB90, 0xDB91, 0xDB92, 0xDB93, 0xDB94,
+ /* U+8E60 */ 0xDB95, 0xDB96, 0xDB97, 0xDB98, 0xDB99, 0xDB9A, 0xB1C4, 0xDB9B,
+ /* U+8E68 */ 0xDB9C, 0xF5BF, 0xDB9D, 0xDB9E, 0xB5C5, 0xB2E4, 0xDB9F, 0xF5EC,
+ /* U+8E70 */ 0xF5E9, 0xDBA0, 0xB6D7, 0xDC40, 0xF5ED, 0xDC41, 0xF5EA, 0xDC42,
+ /* U+8E78 */ 0xDC43, 0xDC44, 0xDC45, 0xDC46, 0xF5EB, 0xDC47, 0xDC48, 0xB4DA,
+ /* U+8E80 */ 0xDC49, 0xD4EA, 0xDC4A, 0xDC4B, 0xDC4C, 0xF5EE, 0xDC4D, 0xB3F9,
+ /* U+8E88 */ 0xDC4E, 0xDC4F, 0xDC50, 0xDC51, 0xDC52, 0xDC53, 0xDC54, 0xF5EF,
+ /* U+8E90 */ 0xF5F1, 0xDC55, 0xDC56, 0xDC57, 0xF5F0, 0xDC58, 0xDC59, 0xDC5A,
+ /* U+8E98 */ 0xDC5B, 0xDC5C, 0xDC5D, 0xDC5E, 0xF5F2, 0xDC5F, 0xF5F3, 0xDC60,
+ /* U+8EA0 */ 0xDC61, 0xDC62, 0xDC63, 0xDC64, 0xDC65, 0xDC66, 0xDC67, 0xDC68,
+ /* U+8EA8 */ 0xDC69, 0xDC6A, 0xDC6B, 0xC9ED, 0xB9AA, 0xDC6C, 0xDC6D, 0xC7FB,
+ /* U+8EB0 */ 0xDC6E, 0xDC6F, 0xB6E3, 0xDC70, 0xDC71, 0xDC72, 0xDC73, 0xDC74,
+ /* U+8EB8 */ 0xDC75, 0xDC76, 0xCCC9, 0xDC77, 0xDC78, 0xDC79, 0xDC7A, 0xDC7B,
+ /* U+8EC0 */ 0xDC7C, 0xDC7D, 0xDC7E, 0xDC80, 0xDC81, 0xDC82, 0xDC83, 0xDC84,
+ /* U+8EC8 */ 0xDC85, 0xDC86, 0xDC87, 0xDC88, 0xDC89, 0xDC8A, 0xEAA6, 0xDC8B,
+ /* U+8ED0 */ 0xDC8C, 0xDC8D, 0xDC8E, 0xDC8F, 0xDC90, 0xDC91, 0xDC92, 0xDC93,
+ /* U+8ED8 */ 0xDC94, 0xDC95, 0xDC96, 0xDC97, 0xDC98, 0xDC99, 0xDC9A, 0xDC9B,
+ /* U+8EE0 */ 0xDC9C, 0xDC9D, 0xDC9E, 0xDC9F, 0xDCA0, 0xDD40, 0xDD41, 0xDD42,
+ /* U+8EE8 */ 0xDD43, 0xDD44, 0xDD45, 0xDD46, 0xDD47, 0xDD48, 0xDD49, 0xDD4A,
+ /* U+8EF0 */ 0xDD4B, 0xDD4C, 0xDD4D, 0xDD4E, 0xDD4F, 0xDD50, 0xDD51, 0xDD52,
+ /* U+8EF8 */ 0xDD53, 0xDD54, 0xDD55, 0xDD56, 0xDD57, 0xDD58, 0xDD59, 0xDD5A,
+ /* U+8F00 */ 0xDD5B, 0xDD5C, 0xDD5D, 0xDD5E, 0xDD5F, 0xDD60, 0xDD61, 0xDD62,
+ /* U+8F08 */ 0xDD63, 0xDD64, 0xDD65, 0xDD66, 0xDD67, 0xDD68, 0xDD69, 0xDD6A,
+ /* U+8F10 */ 0xDD6B, 0xDD6C, 0xDD6D, 0xDD6E, 0xDD6F, 0xDD70, 0xDD71, 0xDD72,
+ /* U+8F18 */ 0xDD73, 0xDD74, 0xDD75, 0xDD76, 0xDD77, 0xDD78, 0xDD79, 0xDD7A,
+ /* U+8F20 */ 0xDD7B, 0xDD7C, 0xDD7D, 0xDD7E, 0xDD80, 0xDD81, 0xDD82, 0xDD83,
+ /* U+8F28 */ 0xDD84, 0xDD85, 0xDD86, 0xDD87, 0xDD88, 0xDD89, 0xDD8A, 0xDD8B,
+ /* U+8F30 */ 0xDD8C, 0xDD8D, 0xDD8E, 0xDD8F, 0xDD90, 0xDD91, 0xDD92, 0xDD93,
+ /* U+8F38 */ 0xDD94, 0xDD95, 0xDD96, 0xDD97, 0xDD98, 0xDD99, 0xDD9A, 0xDD9B,
+ /* U+8F40 */ 0xDD9C, 0xDD9D, 0xDD9E, 0xDD9F, 0xDDA0, 0xDE40, 0xDE41, 0xDE42,
+ /* U+8F48 */ 0xDE43, 0xDE44, 0xDE45, 0xDE46, 0xDE47, 0xDE48, 0xDE49, 0xDE4A,
+ /* U+8F50 */ 0xDE4B, 0xDE4C, 0xDE4D, 0xDE4E, 0xDE4F, 0xDE50, 0xDE51, 0xDE52,
+ /* U+8F58 */ 0xDE53, 0xDE54, 0xDE55, 0xDE56, 0xDE57, 0xDE58, 0xDE59, 0xDE5A,
+ /* U+8F60 */ 0xDE5B, 0xDE5C, 0xDE5D, 0xDE5E, 0xDE5F, 0xDE60, 0xB3B5, 0xD4FE,
+ /* U+8F68 */ 0xB9EC, 0xD0F9, 0xDE61, 0xE9ED, 0xD7AA, 0xE9EE, 0xC2D6, 0xC8ED,
+ /* U+8F70 */ 0xBAE4, 0xE9EF, 0xE9F0, 0xE9F1, 0xD6E1, 0xE9F2, 0xE9F3, 0xE9F5,
+ /* U+8F78 */ 0xE9F4, 0xE9F6, 0xE9F7, 0xC7E1, 0xE9F8, 0xD4D8, 0xE9F9, 0xBDCE,
+ /* U+8F80 */ 0xDE62, 0xE9FA, 0xE9FB, 0xBDCF, 0xE9FC, 0xB8A8, 0xC1BE, 0xE9FD,
+ /* U+8F88 */ 0xB1B2, 0xBBD4, 0xB9F5, 0xE9FE, 0xDE63, 0xEAA1, 0xEAA2, 0xEAA3,
+ /* U+8F90 */ 0xB7F8, 0xBCAD, 0xDE64, 0xCAE4, 0xE0CE, 0xD4AF, 0xCFBD, 0xD5B7,
+ /* U+8F98 */ 0xEAA4, 0xD5DE, 0xEAA5, 0xD0C1, 0xB9BC, 0xDE65, 0xB4C7, 0xB1D9,
+ /* U+8FA0 */ 0xDE66, 0xDE67, 0xDE68, 0xC0B1, 0xDE69, 0xDE6A, 0xDE6B, 0xDE6C,
+ /* U+8FA8 */ 0xB1E6, 0xB1E7, 0xDE6D, 0xB1E8, 0xDE6E, 0xDE6F, 0xDE70, 0xDE71,
+ /* U+8FB0 */ 0xB3BD, 0xC8E8, 0xDE72, 0xDE73, 0xDE74, 0xDE75, 0xE5C1, 0xDE76,
+ /* U+8FB8 */ 0xDE77, 0xB1DF, 0xDE78, 0xDE79, 0xDE7A, 0xC1C9, 0xB4EF, 0xDE7B,
+ /* U+8FC0 */ 0xDE7C, 0xC7A8, 0xD3D8, 0xDE7D, 0xC6F9, 0xD1B8, 0xDE7E, 0xB9FD,
+ /* U+8FC8 */ 0xC2F5, 0xDE80, 0xDE81, 0xDE82, 0xDE83, 0xDE84, 0xD3AD, 0xDE85,
+ /* U+8FD0 */ 0xD4CB, 0xBDFC, 0xDE86, 0xE5C2, 0xB7B5, 0xE5C3, 0xDE87, 0xDE88,
+ /* U+8FD8 */ 0xBBB9, 0xD5E2, 0xDE89, 0xBDF8, 0xD4B6, 0xCEA5, 0xC1AC, 0xB3D9,
+ /* U+8FE0 */ 0xDE8A, 0xDE8B, 0xCCF6, 0xDE8C, 0xE5C6, 0xE5C4, 0xE5C8, 0xDE8D,
+ /* U+8FE8 */ 0xE5CA, 0xE5C7, 0xB5CF, 0xC6C8, 0xDE8E, 0xB5FC, 0xE5C5, 0xDE8F,
+ /* U+8FF0 */ 0xCAF6, 0xDE90, 0xDE91, 0xE5C9, 0xDE92, 0xDE93, 0xDE94, 0xC3D4,
+ /* U+8FF8 */ 0xB1C5, 0xBCA3, 0xDE95, 0xDE96, 0xDE97, 0xD7B7, 0xDE98, 0xDE99,
+ /* U+9000 */ 0xCDCB, 0xCBCD, 0xCACA, 0xCCD3, 0xE5CC, 0xE5CB, 0xC4E6, 0xDE9A,
+ /* U+9008 */ 0xDE9B, 0xD1A1, 0xD1B7, 0xE5CD, 0xDE9C, 0xE5D0, 0xDE9D, 0xCDB8,
+ /* U+9010 */ 0xD6F0, 0xE5CF, 0xB5DD, 0xDE9E, 0xCDBE, 0xDE9F, 0xE5D1, 0xB6BA,
+ /* U+9018 */ 0xDEA0, 0xDF40, 0xCDA8, 0xB9E4, 0xDF41, 0xCAC5, 0xB3D1, 0xCBD9,
+ /* U+9020 */ 0xD4EC, 0xE5D2, 0xB7EA, 0xDF42, 0xDF43, 0xDF44, 0xE5CE, 0xDF45,
+ /* U+9028 */ 0xDF46, 0xDF47, 0xDF48, 0xDF49, 0xDF4A, 0xE5D5, 0xB4FE, 0xE5D6,
+ /* U+9030 */ 0xDF4B, 0xDF4C, 0xDF4D, 0xDF4E, 0xDF4F, 0xE5D3, 0xE5D4, 0xDF50,
+ /* U+9038 */ 0xD2DD, 0xDF51, 0xDF52, 0xC2DF, 0xB1C6, 0xDF53, 0xD3E2, 0xDF54,
+ /* U+9040 */ 0xDF55, 0xB6DD, 0xCBEC, 0xDF56, 0xE5D7, 0xDF57, 0xDF58, 0xD3F6,
+ /* U+9048 */ 0xDF59, 0xDF5A, 0xDF5B, 0xDF5C, 0xDF5D, 0xB1E9, 0xDF5E, 0xB6F4,
+ /* U+9050 */ 0xE5DA, 0xE5D8, 0xE5D9, 0xB5C0, 0xDF5F, 0xDF60, 0xDF61, 0xD2C5,
+ /* U+9058 */ 0xE5DC, 0xDF62, 0xDF63, 0xE5DE, 0xDF64, 0xDF65, 0xDF66, 0xDF67,
+ /* U+9060 */ 0xDF68, 0xDF69, 0xE5DD, 0xC7B2, 0xDF6A, 0xD2A3, 0xDF6B, 0xDF6C,
+ /* U+9068 */ 0xE5DB, 0xDF6D, 0xDF6E, 0xDF6F, 0xDF70, 0xD4E2, 0xD5DA, 0xDF71,
+ /* U+9070 */ 0xDF72, 0xDF73, 0xDF74, 0xDF75, 0xE5E0, 0xD7F1, 0xDF76, 0xDF77,
+ /* U+9078 */ 0xDF78, 0xDF79, 0xDF7A, 0xDF7B, 0xDF7C, 0xE5E1, 0xDF7D, 0xB1DC,
+ /* U+9080 */ 0xD1FB, 0xDF7E, 0xE5E2, 0xE5E4, 0xDF80, 0xDF81, 0xDF82, 0xDF83,
+ /* U+9088 */ 0xE5E3, 0xDF84, 0xDF85, 0xE5E5, 0xDF86, 0xDF87, 0xDF88, 0xDF89,
+ /* U+9090 */ 0xDF8A, 0xD2D8, 0xDF8B, 0xB5CB, 0xDF8C, 0xE7DF, 0xDF8D, 0xDAF5,
+ /* U+9098 */ 0xDF8E, 0xDAF8, 0xDF8F, 0xDAF6, 0xDF90, 0xDAF7, 0xDF91, 0xDF92,
+ /* U+90A0 */ 0xDF93, 0xDAFA, 0xD0CF, 0xC4C7, 0xDF94, 0xDF95, 0xB0EE, 0xDF96,
+ /* U+90A8 */ 0xDF97, 0xDF98, 0xD0B0, 0xDF99, 0xDAF9, 0xDF9A, 0xD3CA, 0xBAAA,
+ /* U+90B0 */ 0xDBA2, 0xC7F1, 0xDF9B, 0xDAFC, 0xDAFB, 0xC9DB, 0xDAFD, 0xDF9C,
+ /* U+90B8 */ 0xDBA1, 0xD7DE, 0xDAFE, 0xC1DA, 0xDF9D, 0xDF9E, 0xDBA5, 0xDF9F,
+ /* U+90C0 */ 0xDFA0, 0xD3F4, 0xE040, 0xE041, 0xDBA7, 0xDBA4, 0xE042, 0xDBA8,
+ /* U+90C8 */ 0xE043, 0xE044, 0xBDBC, 0xE045, 0xE046, 0xE047, 0xC0C9, 0xDBA3,
+ /* U+90D0 */ 0xDBA6, 0xD6A3, 0xE048, 0xDBA9, 0xE049, 0xE04A, 0xE04B, 0xDBAD,
+ /* U+90D8 */ 0xE04C, 0xE04D, 0xE04E, 0xDBAE, 0xDBAC, 0xBAC2, 0xE04F, 0xE050,
+ /* U+90E0 */ 0xE051, 0xBFA4, 0xDBAB, 0xE052, 0xE053, 0xE054, 0xDBAA, 0xD4C7,
+ /* U+90E8 */ 0xB2BF, 0xE055, 0xE056, 0xDBAF, 0xE057, 0xB9F9, 0xE058, 0xDBB0,
+ /* U+90F0 */ 0xE059, 0xE05A, 0xE05B, 0xE05C, 0xB3BB, 0xE05D, 0xE05E, 0xE05F,
+ /* U+90F8 */ 0xB5A6, 0xE060, 0xE061, 0xE062, 0xE063, 0xB6BC, 0xDBB1, 0xE064,
+ /* U+9100 */ 0xE065, 0xE066, 0xB6F5, 0xE067, 0xDBB2, 0xE068, 0xE069, 0xE06A,
+ /* U+9108 */ 0xE06B, 0xE06C, 0xE06D, 0xE06E, 0xE06F, 0xE070, 0xE071, 0xE072,
+ /* U+9110 */ 0xE073, 0xE074, 0xE075, 0xE076, 0xE077, 0xE078, 0xE079, 0xE07A,
+ /* U+9118 */ 0xE07B, 0xB1C9, 0xE07C, 0xE07D, 0xE07E, 0xE080, 0xDBB4, 0xE081,
+ /* U+9120 */ 0xE082, 0xE083, 0xDBB3, 0xDBB5, 0xE084, 0xE085, 0xE086, 0xE087,
+ /* U+9128 */ 0xE088, 0xE089, 0xE08A, 0xE08B, 0xE08C, 0xE08D, 0xE08E, 0xDBB7,
+ /* U+9130 */ 0xE08F, 0xDBB6, 0xE090, 0xE091, 0xE092, 0xE093, 0xE094, 0xE095,
+ /* U+9138 */ 0xE096, 0xDBB8, 0xE097, 0xE098, 0xE099, 0xE09A, 0xE09B, 0xE09C,
+ /* U+9140 */ 0xE09D, 0xE09E, 0xE09F, 0xDBB9, 0xE0A0, 0xE140, 0xDBBA, 0xE141,
+ /* U+9148 */ 0xE142, 0xD3CF, 0xF4FA, 0xC7F5, 0xD7C3, 0xC5E4, 0xF4FC, 0xF4FD,
+ /* U+9150 */ 0xF4FB, 0xE143, 0xBEC6, 0xE144, 0xE145, 0xE146, 0xE147, 0xD0EF,
+ /* U+9158 */ 0xE148, 0xE149, 0xB7D3, 0xE14A, 0xE14B, 0xD4CD, 0xCCAA, 0xE14C,
+ /* U+9160 */ 0xE14D, 0xF5A2, 0xF5A1, 0xBAA8, 0xF4FE, 0xCBD6, 0xE14E, 0xE14F,
+ /* U+9168 */ 0xE150, 0xF5A4, 0xC0D2, 0xE151, 0xB3EA, 0xE152, 0xCDAA, 0xF5A5,
+ /* U+9170 */ 0xF5A3, 0xBDB4, 0xF5A8, 0xE153, 0xF5A9, 0xBDCD, 0xC3B8, 0xBFE1,
+ /* U+9178 */ 0xCBE1, 0xF5AA, 0xE154, 0xE155, 0xE156, 0xF5A6, 0xF5A7, 0xC4F0,
+ /* U+9180 */ 0xE157, 0xE158, 0xE159, 0xE15A, 0xE15B, 0xF5AC, 0xE15C, 0xB4BC,
+ /* U+9188 */ 0xE15D, 0xD7ED, 0xE15E, 0xB4D7, 0xF5AB, 0xF5AE, 0xE15F, 0xE160,
+ /* U+9190 */ 0xF5AD, 0xF5AF, 0xD0D1, 0xE161, 0xE162, 0xE163, 0xE164, 0xE165,
+ /* U+9198 */ 0xE166, 0xE167, 0xC3D1, 0xC8A9, 0xE168, 0xE169, 0xE16A, 0xE16B,
+ /* U+91A0 */ 0xE16C, 0xE16D, 0xF5B0, 0xF5B1, 0xE16E, 0xE16F, 0xE170, 0xE171,
+ /* U+91A8 */ 0xE172, 0xE173, 0xF5B2, 0xE174, 0xE175, 0xF5B3, 0xF5B4, 0xF5B5,
+ /* U+91B0 */ 0xE176, 0xE177, 0xE178, 0xE179, 0xF5B7, 0xF5B6, 0xE17A, 0xE17B,
+ /* U+91B8 */ 0xE17C, 0xE17D, 0xF5B8, 0xE17E, 0xE180, 0xE181, 0xE182, 0xE183,
+ /* U+91C0 */ 0xE184, 0xE185, 0xE186, 0xE187, 0xE188, 0xE189, 0xE18A, 0xB2C9,
+ /* U+91C8 */ 0xE18B, 0xD3D4, 0xCACD, 0xE18C, 0xC0EF, 0xD6D8, 0xD2B0, 0xC1BF,
+ /* U+91D0 */ 0xE18D, 0xBDF0, 0xE18E, 0xE18F, 0xE190, 0xE191, 0xE192, 0xE193,
+ /* U+91D8 */ 0xE194, 0xE195, 0xE196, 0xE197, 0xB8AA, 0xE198, 0xE199, 0xE19A,
+ /* U+91E0 */ 0xE19B, 0xE19C, 0xE19D, 0xE19E, 0xE19F, 0xE1A0, 0xE240, 0xE241,
+ /* U+91E8 */ 0xE242, 0xE243, 0xE244, 0xE245, 0xE246, 0xE247, 0xE248, 0xE249,
+ /* U+91F0 */ 0xE24A, 0xE24B, 0xE24C, 0xE24D, 0xE24E, 0xE24F, 0xE250, 0xE251,
+ /* U+91F8 */ 0xE252, 0xE253, 0xE254, 0xE255, 0xE256, 0xE257, 0xE258, 0xE259,
+ /* U+9200 */ 0xE25A, 0xE25B, 0xE25C, 0xE25D, 0xE25E, 0xE25F, 0xE260, 0xE261,
+ /* U+9208 */ 0xE262, 0xE263, 0xE264, 0xE265, 0xE266, 0xE267, 0xE268, 0xE269,
+ /* U+9210 */ 0xE26A, 0xE26B, 0xE26C, 0xE26D, 0xE26E, 0xE26F, 0xE270, 0xE271,
+ /* U+9218 */ 0xE272, 0xE273, 0xE274, 0xE275, 0xE276, 0xE277, 0xE278, 0xE279,
+ /* U+9220 */ 0xE27A, 0xE27B, 0xE27C, 0xE27D, 0xE27E, 0xE280, 0xE281, 0xE282,
+ /* U+9228 */ 0xE283, 0xE284, 0xE285, 0xE286, 0xE287, 0xE288, 0xE289, 0xE28A,
+ /* U+9230 */ 0xE28B, 0xE28C, 0xE28D, 0xE28E, 0xE28F, 0xE290, 0xE291, 0xE292,
+ /* U+9238 */ 0xE293, 0xE294, 0xE295, 0xE296, 0xE297, 0xE298, 0xE299, 0xE29A,
+ /* U+9240 */ 0xE29B, 0xE29C, 0xE29D, 0xE29E, 0xE29F, 0xE2A0, 0xE340, 0xE341,
+ /* U+9248 */ 0xE342, 0xE343, 0xE344, 0xE345, 0xE346, 0xE347, 0xE348, 0xE349,
+ /* U+9250 */ 0xE34A, 0xE34B, 0xE34C, 0xE34D, 0xE34E, 0xE34F, 0xE350, 0xE351,
+ /* U+9258 */ 0xE352, 0xE353, 0xE354, 0xE355, 0xE356, 0xE357, 0xE358, 0xE359,
+ /* U+9260 */ 0xE35A, 0xE35B, 0xE35C, 0xE35D, 0xE35E, 0xE35F, 0xE360, 0xE361,
+ /* U+9268 */ 0xE362, 0xE363, 0xE364, 0xE365, 0xE366, 0xE367, 0xE368, 0xE369,
+ /* U+9270 */ 0xE36A, 0xE36B, 0xE36C, 0xE36D, 0xBCF8, 0xE36E, 0xE36F, 0xE370,
+ /* U+9278 */ 0xE371, 0xE372, 0xE373, 0xE374, 0xE375, 0xE376, 0xE377, 0xE378,
+ /* U+9280 */ 0xE379, 0xE37A, 0xE37B, 0xE37C, 0xE37D, 0xE37E, 0xE380, 0xE381,
+ /* U+9288 */ 0xE382, 0xE383, 0xE384, 0xE385, 0xE386, 0xE387, 0xF6C6, 0xE388,
+ /* U+9290 */ 0xE389, 0xE38A, 0xE38B, 0xE38C, 0xE38D, 0xE38E, 0xE38F, 0xE390,
+ /* U+9298 */ 0xE391, 0xE392, 0xE393, 0xE394, 0xE395, 0xE396, 0xE397, 0xE398,
+ /* U+92A0 */ 0xE399, 0xE39A, 0xE39B, 0xE39C, 0xE39D, 0xE39E, 0xE39F, 0xE3A0,
+ /* U+92A8 */ 0xE440, 0xE441, 0xE442, 0xE443, 0xE444, 0xE445, 0xF6C7, 0xE446,
+ /* U+92B0 */ 0xE447, 0xE448, 0xE449, 0xE44A, 0xE44B, 0xE44C, 0xE44D, 0xE44E,
+ /* U+92B8 */ 0xE44F, 0xE450, 0xE451, 0xE452, 0xE453, 0xE454, 0xE455, 0xE456,
+ /* U+92C0 */ 0xE457, 0xE458, 0xE459, 0xE45A, 0xE45B, 0xE45C, 0xE45D, 0xE45E,
+ /* U+92C8 */ 0xF6C8, 0xE45F, 0xE460, 0xE461, 0xE462, 0xE463, 0xE464, 0xE465,
+ /* U+92D0 */ 0xE466, 0xE467, 0xE468, 0xE469, 0xE46A, 0xE46B, 0xE46C, 0xE46D,
+ /* U+92D8 */ 0xE46E, 0xE46F, 0xE470, 0xE471, 0xE472, 0xE473, 0xE474, 0xE475,
+ /* U+92E0 */ 0xE476, 0xE477, 0xE478, 0xE479, 0xE47A, 0xE47B, 0xE47C, 0xE47D,
+ /* U+92E8 */ 0xE47E, 0xE480, 0xE481, 0xE482, 0xE483, 0xE484, 0xE485, 0xE486,
+ /* U+92F0 */ 0xE487, 0xE488, 0xE489, 0xE48A, 0xE48B, 0xE48C, 0xE48D, 0xE48E,
+ /* U+92F8 */ 0xE48F, 0xE490, 0xE491, 0xE492, 0xE493, 0xE494, 0xE495, 0xE496,
+ /* U+9300 */ 0xE497, 0xE498, 0xE499, 0xE49A, 0xE49B, 0xE49C, 0xE49D, 0xE49E,
+ /* U+9308 */ 0xE49F, 0xE4A0, 0xE540, 0xE541, 0xE542, 0xE543, 0xE544, 0xE545,
+ /* U+9310 */ 0xE546, 0xE547, 0xE548, 0xE549, 0xE54A, 0xE54B, 0xE54C, 0xE54D,
+ /* U+9318 */ 0xE54E, 0xE54F, 0xE550, 0xE551, 0xE552, 0xE553, 0xE554, 0xE555,
+ /* U+9320 */ 0xE556, 0xE557, 0xE558, 0xE559, 0xE55A, 0xE55B, 0xE55C, 0xE55D,
+ /* U+9328 */ 0xE55E, 0xE55F, 0xE560, 0xE561, 0xE562, 0xE563, 0xE564, 0xE565,
+ /* U+9330 */ 0xE566, 0xE567, 0xE568, 0xE569, 0xE56A, 0xE56B, 0xE56C, 0xE56D,
+ /* U+9338 */ 0xE56E, 0xE56F, 0xE570, 0xE571, 0xE572, 0xE573, 0xF6C9, 0xE574,
+ /* U+9340 */ 0xE575, 0xE576, 0xE577, 0xE578, 0xE579, 0xE57A, 0xE57B, 0xE57C,
+ /* U+9348 */ 0xE57D, 0xE57E, 0xE580, 0xE581, 0xE582, 0xE583, 0xE584, 0xE585,
+ /* U+9350 */ 0xE586, 0xE587, 0xE588, 0xE589, 0xE58A, 0xE58B, 0xE58C, 0xE58D,
+ /* U+9358 */ 0xE58E, 0xE58F, 0xE590, 0xE591, 0xE592, 0xE593, 0xE594, 0xE595,
+ /* U+9360 */ 0xE596, 0xE597, 0xE598, 0xE599, 0xE59A, 0xE59B, 0xE59C, 0xE59D,
+ /* U+9368 */ 0xE59E, 0xE59F, 0xF6CA, 0xE5A0, 0xE640, 0xE641, 0xE642, 0xE643,
+ /* U+9370 */ 0xE644, 0xE645, 0xE646, 0xE647, 0xE648, 0xE649, 0xE64A, 0xE64B,
+ /* U+9378 */ 0xE64C, 0xE64D, 0xE64E, 0xE64F, 0xE650, 0xE651, 0xE652, 0xE653,
+ /* U+9380 */ 0xE654, 0xE655, 0xE656, 0xE657, 0xE658, 0xE659, 0xE65A, 0xE65B,
+ /* U+9388 */ 0xE65C, 0xE65D, 0xE65E, 0xE65F, 0xE660, 0xE661, 0xE662, 0xF6CC,
+ /* U+9390 */ 0xE663, 0xE664, 0xE665, 0xE666, 0xE667, 0xE668, 0xE669, 0xE66A,
+ /* U+9398 */ 0xE66B, 0xE66C, 0xE66D, 0xE66E, 0xE66F, 0xE670, 0xE671, 0xE672,
+ /* U+93A0 */ 0xE673, 0xE674, 0xE675, 0xE676, 0xE677, 0xE678, 0xE679, 0xE67A,
+ /* U+93A8 */ 0xE67B, 0xE67C, 0xE67D, 0xE67E, 0xE680, 0xE681, 0xE682, 0xE683,
+ /* U+93B0 */ 0xE684, 0xE685, 0xE686, 0xE687, 0xE688, 0xE689, 0xE68A, 0xE68B,
+ /* U+93B8 */ 0xE68C, 0xE68D, 0xE68E, 0xE68F, 0xE690, 0xE691, 0xE692, 0xE693,
+ /* U+93C0 */ 0xE694, 0xE695, 0xE696, 0xE697, 0xE698, 0xE699, 0xE69A, 0xE69B,
+ /* U+93C8 */ 0xE69C, 0xE69D, 0xF6CB, 0xE69E, 0xE69F, 0xE6A0, 0xE740, 0xE741,
+ /* U+93D0 */ 0xE742, 0xE743, 0xE744, 0xE745, 0xE746, 0xE747, 0xF7E9, 0xE748,
+ /* U+93D8 */ 0xE749, 0xE74A, 0xE74B, 0xE74C, 0xE74D, 0xE74E, 0xE74F, 0xE750,
+ /* U+93E0 */ 0xE751, 0xE752, 0xE753, 0xE754, 0xE755, 0xE756, 0xE757, 0xE758,
+ /* U+93E8 */ 0xE759, 0xE75A, 0xE75B, 0xE75C, 0xE75D, 0xE75E, 0xE75F, 0xE760,
+ /* U+93F0 */ 0xE761, 0xE762, 0xE763, 0xE764, 0xE765, 0xE766, 0xE767, 0xE768,
+ /* U+93F8 */ 0xE769, 0xE76A, 0xE76B, 0xE76C, 0xE76D, 0xE76E, 0xE76F, 0xE770,
+ /* U+9400 */ 0xE771, 0xE772, 0xE773, 0xE774, 0xE775, 0xE776, 0xE777, 0xE778,
+ /* U+9408 */ 0xE779, 0xE77A, 0xE77B, 0xE77C, 0xE77D, 0xE77E, 0xE780, 0xE781,
+ /* U+9410 */ 0xE782, 0xE783, 0xE784, 0xE785, 0xE786, 0xE787, 0xE788, 0xE789,
+ /* U+9418 */ 0xE78A, 0xE78B, 0xE78C, 0xE78D, 0xE78E, 0xE78F, 0xE790, 0xE791,
+ /* U+9420 */ 0xE792, 0xE793, 0xE794, 0xE795, 0xE796, 0xE797, 0xE798, 0xE799,
+ /* U+9428 */ 0xE79A, 0xE79B, 0xE79C, 0xE79D, 0xE79E, 0xE79F, 0xE7A0, 0xE840,
+ /* U+9430 */ 0xE841, 0xE842, 0xE843, 0xE844, 0xE845, 0xE846, 0xE847, 0xE848,
+ /* U+9438 */ 0xE849, 0xE84A, 0xE84B, 0xE84C, 0xE84D, 0xE84E, 0xF6CD, 0xE84F,
+ /* U+9440 */ 0xE850, 0xE851, 0xE852, 0xE853, 0xE854, 0xE855, 0xE856, 0xE857,
+ /* U+9448 */ 0xE858, 0xE859, 0xE85A, 0xE85B, 0xE85C, 0xE85D, 0xE85E, 0xE85F,
+ /* U+9450 */ 0xE860, 0xE861, 0xE862, 0xE863, 0xE864, 0xE865, 0xE866, 0xE867,
+ /* U+9458 */ 0xE868, 0xE869, 0xE86A, 0xE86B, 0xE86C, 0xE86D, 0xE86E, 0xE86F,
+ /* U+9460 */ 0xE870, 0xE871, 0xE872, 0xE873, 0xE874, 0xE875, 0xE876, 0xE877,
+ /* U+9468 */ 0xE878, 0xE879, 0xE87A, 0xF6CE, 0xE87B, 0xE87C, 0xE87D, 0xE87E,
+ /* U+9470 */ 0xE880, 0xE881, 0xE882, 0xE883, 0xE884, 0xE885, 0xE886, 0xE887,
+ /* U+9478 */ 0xE888, 0xE889, 0xE88A, 0xE88B, 0xE88C, 0xE88D, 0xE88E, 0xE88F,
+ /* U+9480 */ 0xE890, 0xE891, 0xE892, 0xE893, 0xE894, 0xEEC4, 0xEEC5, 0xEEC6,
+ /* U+9488 */ 0xD5EB, 0xB6A4, 0xEEC8, 0xEEC7, 0xEEC9, 0xEECA, 0xC7A5, 0xEECB,
+ /* U+9490 */ 0xEECC, 0xE895, 0xB7B0, 0xB5F6, 0xEECD, 0xEECF, 0xE896, 0xEECE,
+ /* U+9498 */ 0xE897, 0xB8C6, 0xEED0, 0xEED1, 0xEED2, 0xB6DB, 0xB3AE, 0xD6D3,
+ /* U+94A0 */ 0xC4C6, 0xB1B5, 0xB8D6, 0xEED3, 0xEED4, 0xD4BF, 0xC7D5, 0xBEFB,
+ /* U+94A8 */ 0xCED9, 0xB9B3, 0xEED6, 0xEED5, 0xEED8, 0xEED7, 0xC5A5, 0xEED9,
+ /* U+94B0 */ 0xEEDA, 0xC7AE, 0xEEDB, 0xC7AF, 0xEEDC, 0xB2A7, 0xEEDD, 0xEEDE,
+ /* U+94B8 */ 0xEEDF, 0xEEE0, 0xEEE1, 0xD7EA, 0xEEE2, 0xEEE3, 0xBCD8, 0xEEE4,
+ /* U+94C0 */ 0xD3CB, 0xCCFA, 0xB2AC, 0xC1E5, 0xEEE5, 0xC7A6, 0xC3AD, 0xE898,
+ /* U+94C8 */ 0xEEE6, 0xEEE7, 0xEEE8, 0xEEE9, 0xEEEA, 0xEEEB, 0xEEEC, 0xE899,
+ /* U+94D0 */ 0xEEED, 0xEEEE, 0xEEEF, 0xE89A, 0xE89B, 0xEEF0, 0xEEF1, 0xEEF2,
+ /* U+94D8 */ 0xEEF4, 0xEEF3, 0xE89C, 0xEEF5, 0xCDAD, 0xC2C1, 0xEEF6, 0xEEF7,
+ /* U+94E0 */ 0xEEF8, 0xD5A1, 0xEEF9, 0xCFB3, 0xEEFA, 0xEEFB, 0xE89D, 0xEEFC,
+ /* U+94E8 */ 0xEEFD, 0xEFA1, 0xEEFE, 0xEFA2, 0xB8F5, 0xC3FA, 0xEFA3, 0xEFA4,
+ /* U+94F0 */ 0xBDC2, 0xD2BF, 0xB2F9, 0xEFA5, 0xEFA6, 0xEFA7, 0xD2F8, 0xEFA8,
+ /* U+94F8 */ 0xD6FD, 0xEFA9, 0xC6CC, 0xE89E, 0xEFAA, 0xEFAB, 0xC1B4, 0xEFAC,
+ /* U+9500 */ 0xCFFA, 0xCBF8, 0xEFAE, 0xEFAD, 0xB3FA, 0xB9F8, 0xEFAF, 0xEFB0,
+ /* U+9508 */ 0xD0E2, 0xEFB1, 0xEFB2, 0xB7E6, 0xD0BF, 0xEFB3, 0xEFB4, 0xEFB5,
+ /* U+9510 */ 0xC8F1, 0xCCE0, 0xEFB6, 0xEFB7, 0xEFB8, 0xEFB9, 0xEFBA, 0xD5E0,
+ /* U+9518 */ 0xEFBB, 0xB4ED, 0xC3AA, 0xEFBC, 0xE89F, 0xEFBD, 0xEFBE, 0xEFBF,
+ /* U+9520 */ 0xE8A0, 0xCEFD, 0xEFC0, 0xC2E0, 0xB4B8, 0xD7B6, 0xBDF5, 0xE940,
+ /* U+9528 */ 0xCFC7, 0xEFC3, 0xEFC1, 0xEFC2, 0xEFC4, 0xB6A7, 0xBCFC, 0xBEE2,
+ /* U+9530 */ 0xC3CC, 0xEFC5, 0xEFC6, 0xE941, 0xEFC7, 0xEFCF, 0xEFC8, 0xEFC9,
+ /* U+9538 */ 0xEFCA, 0xC7C2, 0xEFF1, 0xB6CD, 0xEFCB, 0xE942, 0xEFCC, 0xEFCD,
+ /* U+9540 */ 0xB6C6, 0xC3BE, 0xEFCE, 0xE943, 0xEFD0, 0xEFD1, 0xEFD2, 0xD5F2,
+ /* U+9548 */ 0xE944, 0xEFD3, 0xC4F7, 0xE945, 0xEFD4, 0xC4F8, 0xEFD5, 0xEFD6,
+ /* U+9550 */ 0xB8E4, 0xB0F7, 0xEFD7, 0xEFD8, 0xEFD9, 0xE946, 0xEFDA, 0xEFDB,
+ /* U+9558 */ 0xEFDC, 0xEFDD, 0xE947, 0xEFDE, 0xBEB5, 0xEFE1, 0xEFDF, 0xEFE0,
+ /* U+9560 */ 0xE948, 0xEFE2, 0xEFE3, 0xC1CD, 0xEFE4, 0xEFE5, 0xEFE6, 0xEFE7,
+ /* U+9568 */ 0xEFE8, 0xEFE9, 0xEFEA, 0xEFEB, 0xEFEC, 0xC0D8, 0xE949, 0xEFED,
+ /* U+9570 */ 0xC1AD, 0xEFEE, 0xEFEF, 0xEFF0, 0xE94A, 0xE94B, 0xCFE2, 0xE94C,
+ /* U+9578 */ 0xE94D, 0xE94E, 0xE94F, 0xE950, 0xE951, 0xE952, 0xE953, 0xB3A4,
+ /* U+9580 */ 0xE954, 0xE955, 0xE956, 0xE957, 0xE958, 0xE959, 0xE95A, 0xE95B,
+ /* U+9588 */ 0xE95C, 0xE95D, 0xE95E, 0xE95F, 0xE960, 0xE961, 0xE962, 0xE963,
+ /* U+9590 */ 0xE964, 0xE965, 0xE966, 0xE967, 0xE968, 0xE969, 0xE96A, 0xE96B,
+ /* U+9598 */ 0xE96C, 0xE96D, 0xE96E, 0xE96F, 0xE970, 0xE971, 0xE972, 0xE973,
+ /* U+95A0 */ 0xE974, 0xE975, 0xE976, 0xE977, 0xE978, 0xE979, 0xE97A, 0xE97B,
+ /* U+95A8 */ 0xE97C, 0xE97D, 0xE97E, 0xE980, 0xE981, 0xE982, 0xE983, 0xE984,
+ /* U+95B0 */ 0xE985, 0xE986, 0xE987, 0xE988, 0xE989, 0xE98A, 0xE98B, 0xE98C,
+ /* U+95B8 */ 0xE98D, 0xE98E, 0xE98F, 0xE990, 0xE991, 0xE992, 0xE993, 0xE994,
+ /* U+95C0 */ 0xE995, 0xE996, 0xE997, 0xE998, 0xE999, 0xE99A, 0xE99B, 0xE99C,
+ /* U+95C8 */ 0xE99D, 0xE99E, 0xE99F, 0xE9A0, 0xEA40, 0xEA41, 0xEA42, 0xEA43,
+ /* U+95D0 */ 0xEA44, 0xEA45, 0xEA46, 0xEA47, 0xEA48, 0xEA49, 0xEA4A, 0xEA4B,
+ /* U+95D8 */ 0xEA4C, 0xEA4D, 0xEA4E, 0xEA4F, 0xEA50, 0xEA51, 0xEA52, 0xEA53,
+ /* U+95E0 */ 0xEA54, 0xEA55, 0xEA56, 0xEA57, 0xEA58, 0xEA59, 0xEA5A, 0xEA5B,
+ /* U+95E8 */ 0xC3C5, 0xE3C5, 0xC9C1, 0xE3C6, 0xEA5C, 0xB1D5, 0xCECA, 0xB4B3,
+ /* U+95F0 */ 0xC8F2, 0xE3C7, 0xCFD0, 0xE3C8, 0xBCE4, 0xE3C9, 0xE3CA, 0xC3C6,
+ /* U+95F8 */ 0xD5A2, 0xC4D6, 0xB9EB, 0xCEC5, 0xE3CB, 0xC3F6, 0xE3CC, 0xEA5D,
+ /* U+9600 */ 0xB7A7, 0xB8F3, 0xBAD2, 0xE3CD, 0xE3CE, 0xD4C4, 0xE3CF, 0xEA5E,
+ /* U+9608 */ 0xE3D0, 0xD1CB, 0xE3D1, 0xE3D2, 0xE3D3, 0xE3D4, 0xD1D6, 0xE3D5,
+ /* U+9610 */ 0xB2FB, 0xC0BB, 0xE3D6, 0xEA5F, 0xC0AB, 0xE3D7, 0xE3D8, 0xE3D9,
+ /* U+9618 */ 0xEA60, 0xE3DA, 0xE3DB, 0xEA61, 0xB8B7, 0xDAE2, 0xEA62, 0xB6D3,
+ /* U+9620 */ 0xEA63, 0xDAE4, 0xDAE3, 0xEA64, 0xEA65, 0xEA66, 0xEA67, 0xEA68,
+ /* U+9628 */ 0xEA69, 0xEA6A, 0xDAE6, 0xEA6B, 0xEA6C, 0xEA6D, 0xC8EE, 0xEA6E,
+ /* U+9630 */ 0xEA6F, 0xDAE5, 0xB7C0, 0xD1F4, 0xD2F5, 0xD5F3, 0xBDD7, 0xEA70,
+ /* U+9638 */ 0xEA71, 0xEA72, 0xEA73, 0xD7E8, 0xDAE8, 0xDAE7, 0xEA74, 0xB0A2,
+ /* U+9640 */ 0xCDD3, 0xEA75, 0xDAE9, 0xEA76, 0xB8BD, 0xBCCA, 0xC2BD, 0xC2A4,
+ /* U+9648 */ 0xB3C2, 0xDAEA, 0xEA77, 0xC2AA, 0xC4B0, 0xBDB5, 0xEA78, 0xEA79,
+ /* U+9650 */ 0xCFDE, 0xEA7A, 0xEA7B, 0xEA7C, 0xDAEB, 0xC9C2, 0xEA7D, 0xEA7E,
+ /* U+9658 */ 0xEA80, 0xEA81, 0xEA82, 0xB1DD, 0xEA83, 0xEA84, 0xEA85, 0xDAEC,
+ /* U+9660 */ 0xEA86, 0xB6B8, 0xD4BA, 0xEA87, 0xB3FD, 0xEA88, 0xEA89, 0xDAED,
+ /* U+9668 */ 0xD4C9, 0xCFD5, 0xC5E3, 0xEA8A, 0xDAEE, 0xEA8B, 0xEA8C, 0xEA8D,
+ /* U+9670 */ 0xEA8E, 0xEA8F, 0xDAEF, 0xEA90, 0xDAF0, 0xC1EA, 0xCCD5, 0xCFDD,
+ /* U+9678 */ 0xEA91, 0xEA92, 0xEA93, 0xEA94, 0xEA95, 0xEA96, 0xEA97, 0xEA98,
+ /* U+9680 */ 0xEA99, 0xEA9A, 0xEA9B, 0xEA9C, 0xEA9D, 0xD3E7, 0xC2A1, 0xEA9E,
+ /* U+9688 */ 0xDAF1, 0xEA9F, 0xEAA0, 0xCBE5, 0xEB40, 0xDAF2, 0xEB41, 0xCBE6,
+ /* U+9690 */ 0xD2FE, 0xEB42, 0xEB43, 0xEB44, 0xB8F4, 0xEB45, 0xEB46, 0xDAF3,
+ /* U+9698 */ 0xB0AF, 0xCFB6, 0xEB47, 0xEB48, 0xD5CF, 0xEB49, 0xEB4A, 0xEB4B,
+ /* U+96A0 */ 0xEB4C, 0xEB4D, 0xEB4E, 0xEB4F, 0xEB50, 0xEB51, 0xEB52, 0xCBED,
+ /* U+96A8 */ 0xEB53, 0xEB54, 0xEB55, 0xEB56, 0xEB57, 0xEB58, 0xEB59, 0xEB5A,
+ /* U+96B0 */ 0xDAF4, 0xEB5B, 0xEB5C, 0xE3C4, 0xEB5D, 0xEB5E, 0xC1A5, 0xEB5F,
+ /* U+96B8 */ 0xEB60, 0xF6BF, 0xEB61, 0xEB62, 0xF6C0, 0xF6C1, 0xC4D1, 0xEB63,
+ /* U+96C0 */ 0xC8B8, 0xD1E3, 0xEB64, 0xEB65, 0xD0DB, 0xD1C5, 0xBCAF, 0xB9CD,
+ /* U+96C8 */ 0xEB66, 0xEFF4, 0xEB67, 0xEB68, 0xB4C6, 0xD3BA, 0xF6C2, 0xB3FB,
+ /* U+96D0 */ 0xEB69, 0xEB6A, 0xF6C3, 0xEB6B, 0xEB6C, 0xB5F1, 0xEB6D, 0xEB6E,
+ /* U+96D8 */ 0xEB6F, 0xEB70, 0xEB71, 0xEB72, 0xEB73, 0xEB74, 0xEB75, 0xEB76,
+ /* U+96E0 */ 0xF6C5, 0xEB77, 0xEB78, 0xEB79, 0xEB7A, 0xEB7B, 0xEB7C, 0xEB7D,
+ /* U+96E8 */ 0xD3EA, 0xF6A7, 0xD1A9, 0xEB7E, 0xEB80, 0xEB81, 0xEB82, 0xF6A9,
+ /* U+96F0 */ 0xEB83, 0xEB84, 0xEB85, 0xF6A8, 0xEB86, 0xEB87, 0xC1E3, 0xC0D7,
+ /* U+96F8 */ 0xEB88, 0xB1A2, 0xEB89, 0xEB8A, 0xEB8B, 0xEB8C, 0xCEED, 0xEB8D,
+ /* U+9700 */ 0xD0E8, 0xF6AB, 0xEB8E, 0xEB8F, 0xCFF6, 0xEB90, 0xF6AA, 0xD5F0,
+ /* U+9708 */ 0xF6AC, 0xC3B9, 0xEB91, 0xEB92, 0xEB93, 0xBBF4, 0xF6AE, 0xF6AD,
+ /* U+9710 */ 0xEB94, 0xEB95, 0xEB96, 0xC4DE, 0xEB97, 0xEB98, 0xC1D8, 0xEB99,
+ /* U+9718 */ 0xEB9A, 0xEB9B, 0xEB9C, 0xEB9D, 0xCBAA, 0xEB9E, 0xCFBC, 0xEB9F,
+ /* U+9720 */ 0xEBA0, 0xEC40, 0xEC41, 0xEC42, 0xEC43, 0xEC44, 0xEC45, 0xEC46,
+ /* U+9728 */ 0xEC47, 0xEC48, 0xF6AF, 0xEC49, 0xEC4A, 0xF6B0, 0xEC4B, 0xEC4C,
+ /* U+9730 */ 0xF6B1, 0xEC4D, 0xC2B6, 0xEC4E, 0xEC4F, 0xEC50, 0xEC51, 0xEC52,
+ /* U+9738 */ 0xB0D4, 0xC5F9, 0xEC53, 0xEC54, 0xEC55, 0xEC56, 0xF6B2, 0xEC57,
+ /* U+9740 */ 0xEC58, 0xEC59, 0xEC5A, 0xEC5B, 0xEC5C, 0xEC5D, 0xEC5E, 0xEC5F,
+ /* U+9748 */ 0xEC60, 0xEC61, 0xEC62, 0xEC63, 0xEC64, 0xEC65, 0xEC66, 0xEC67,
+ /* U+9750 */ 0xEC68, 0xEC69, 0xC7E0, 0xF6A6, 0xEC6A, 0xEC6B, 0xBEB8, 0xEC6C,
+ /* U+9758 */ 0xEC6D, 0xBEB2, 0xEC6E, 0xB5E5, 0xEC6F, 0xEC70, 0xB7C7, 0xEC71,
+ /* U+9760 */ 0xBFBF, 0xC3D2, 0xC3E6, 0xEC72, 0xEC73, 0xD8CC, 0xEC74, 0xEC75,
+ /* U+9768 */ 0xEC76, 0xB8EF, 0xEC77, 0xEC78, 0xEC79, 0xEC7A, 0xEC7B, 0xEC7C,
+ /* U+9770 */ 0xEC7D, 0xEC7E, 0xEC80, 0xBDF9, 0xD1A5, 0xEC81, 0xB0D0, 0xEC82,
+ /* U+9778 */ 0xEC83, 0xEC84, 0xEC85, 0xEC86, 0xF7B0, 0xEC87, 0xEC88, 0xEC89,
+ /* U+9780 */ 0xEC8A, 0xEC8B, 0xEC8C, 0xEC8D, 0xEC8E, 0xF7B1, 0xEC8F, 0xEC90,
+ /* U+9788 */ 0xEC91, 0xEC92, 0xEC93, 0xD0AC, 0xEC94, 0xB0B0, 0xEC95, 0xEC96,
+ /* U+9790 */ 0xEC97, 0xF7B2, 0xF7B3, 0xEC98, 0xF7B4, 0xEC99, 0xEC9A, 0xEC9B,
+ /* U+9798 */ 0xC7CA, 0xEC9C, 0xEC9D, 0xEC9E, 0xEC9F, 0xECA0, 0xED40, 0xED41,
+ /* U+97A0 */ 0xBECF, 0xED42, 0xED43, 0xF7B7, 0xED44, 0xED45, 0xED46, 0xED47,
+ /* U+97A8 */ 0xED48, 0xED49, 0xED4A, 0xF7B6, 0xED4B, 0xB1DE, 0xED4C, 0xF7B5,
+ /* U+97B0 */ 0xED4D, 0xED4E, 0xF7B8, 0xED4F, 0xF7B9, 0xED50, 0xED51, 0xED52,
+ /* U+97B8 */ 0xED53, 0xED54, 0xED55, 0xED56, 0xED57, 0xED58, 0xED59, 0xED5A,
+ /* U+97C0 */ 0xED5B, 0xED5C, 0xED5D, 0xED5E, 0xED5F, 0xED60, 0xED61, 0xED62,
+ /* U+97C8 */ 0xED63, 0xED64, 0xED65, 0xED66, 0xED67, 0xED68, 0xED69, 0xED6A,
+ /* U+97D0 */ 0xED6B, 0xED6C, 0xED6D, 0xED6E, 0xED6F, 0xED70, 0xED71, 0xED72,
+ /* U+97D8 */ 0xED73, 0xED74, 0xED75, 0xED76, 0xED77, 0xED78, 0xED79, 0xED7A,
+ /* U+97E0 */ 0xED7B, 0xED7C, 0xED7D, 0xED7E, 0xED80, 0xED81, 0xCEA4, 0xC8CD,
+ /* U+97E8 */ 0xED82, 0xBAAB, 0xE8B8, 0xE8B9, 0xE8BA, 0xBEC2, 0xED83, 0xED84,
+ /* U+97F0 */ 0xED85, 0xED86, 0xED87, 0xD2F4, 0xED88, 0xD4CF, 0xC9D8, 0xED89,
+ /* U+97F8 */ 0xED8A, 0xED8B, 0xED8C, 0xED8D, 0xED8E, 0xED8F, 0xED90, 0xED91,
+ /* U+9800 */ 0xED92, 0xED93, 0xED94, 0xED95, 0xED96, 0xED97, 0xED98, 0xED99,
+ /* U+9808 */ 0xED9A, 0xED9B, 0xED9C, 0xED9D, 0xED9E, 0xED9F, 0xEDA0, 0xEE40,
+ /* U+9810 */ 0xEE41, 0xEE42, 0xEE43, 0xEE44, 0xEE45, 0xEE46, 0xEE47, 0xEE48,
+ /* U+9818 */ 0xEE49, 0xEE4A, 0xEE4B, 0xEE4C, 0xEE4D, 0xEE4E, 0xEE4F, 0xEE50,
+ /* U+9820 */ 0xEE51, 0xEE52, 0xEE53, 0xEE54, 0xEE55, 0xEE56, 0xEE57, 0xEE58,
+ /* U+9828 */ 0xEE59, 0xEE5A, 0xEE5B, 0xEE5C, 0xEE5D, 0xEE5E, 0xEE5F, 0xEE60,
+ /* U+9830 */ 0xEE61, 0xEE62, 0xEE63, 0xEE64, 0xEE65, 0xEE66, 0xEE67, 0xEE68,
+ /* U+9838 */ 0xEE69, 0xEE6A, 0xEE6B, 0xEE6C, 0xEE6D, 0xEE6E, 0xEE6F, 0xEE70,
+ /* U+9840 */ 0xEE71, 0xEE72, 0xEE73, 0xEE74, 0xEE75, 0xEE76, 0xEE77, 0xEE78,
+ /* U+9848 */ 0xEE79, 0xEE7A, 0xEE7B, 0xEE7C, 0xEE7D, 0xEE7E, 0xEE80, 0xEE81,
+ /* U+9850 */ 0xEE82, 0xEE83, 0xEE84, 0xEE85, 0xEE86, 0xEE87, 0xEE88, 0xEE89,
+ /* U+9858 */ 0xEE8A, 0xEE8B, 0xEE8C, 0xEE8D, 0xEE8E, 0xEE8F, 0xEE90, 0xEE91,
+ /* U+9860 */ 0xEE92, 0xEE93, 0xEE94, 0xEE95, 0xEE96, 0xEE97, 0xEE98, 0xEE99,
+ /* U+9868 */ 0xEE9A, 0xEE9B, 0xEE9C, 0xEE9D, 0xEE9E, 0xEE9F, 0xEEA0, 0xEF40,
+ /* U+9870 */ 0xEF41, 0xEF42, 0xEF43, 0xEF44, 0xEF45, 0xD2B3, 0xB6A5, 0xC7EA,
+ /* U+9878 */ 0xF1FC, 0xCFEE, 0xCBB3, 0xD0EB, 0xE7EF, 0xCDE7, 0xB9CB, 0xB6D9,
+ /* U+9880 */ 0xF1FD, 0xB0E4, 0xCBCC, 0xF1FE, 0xD4A4, 0xC2AD, 0xC1EC, 0xC6C4,
+ /* U+9888 */ 0xBEB1, 0xF2A1, 0xBCD5, 0xEF46, 0xF2A2, 0xF2A3, 0xEF47, 0xF2A4,
+ /* U+9890 */ 0xD2C3, 0xC6B5, 0xEF48, 0xCDC7, 0xF2A5, 0xEF49, 0xD3B1, 0xBFC5,
+ /* U+9898 */ 0xCCE2, 0xEF4A, 0xF2A6, 0xF2A7, 0xD1D5, 0xB6EE, 0xF2A8, 0xF2A9,
+ /* U+98A0 */ 0xB5DF, 0xF2AA, 0xF2AB, 0xEF4B, 0xB2FC, 0xF2AC, 0xF2AD, 0xC8A7,
+ /* U+98A8 */ 0xEF4C, 0xEF4D, 0xEF4E, 0xEF4F, 0xEF50, 0xEF51, 0xEF52, 0xEF53,
+ /* U+98B0 */ 0xEF54, 0xEF55, 0xEF56, 0xEF57, 0xEF58, 0xEF59, 0xEF5A, 0xEF5B,
+ /* U+98B8 */ 0xEF5C, 0xEF5D, 0xEF5E, 0xEF5F, 0xEF60, 0xEF61, 0xEF62, 0xEF63,
+ /* U+98C0 */ 0xEF64, 0xEF65, 0xEF66, 0xEF67, 0xEF68, 0xEF69, 0xEF6A, 0xEF6B,
+ /* U+98C8 */ 0xEF6C, 0xEF6D, 0xEF6E, 0xEF6F, 0xEF70, 0xEF71, 0xB7E7, 0xEF72,
+ /* U+98D0 */ 0xEF73, 0xECA9, 0xECAA, 0xECAB, 0xEF74, 0xECAC, 0xEF75, 0xEF76,
+ /* U+98D8 */ 0xC6AE, 0xECAD, 0xECAE, 0xEF77, 0xEF78, 0xEF79, 0xB7C9, 0xCAB3,
+ /* U+98E0 */ 0xEF7A, 0xEF7B, 0xEF7C, 0xEF7D, 0xEF7E, 0xEF80, 0xEF81, 0xE2B8,
+ /* U+98E8 */ 0xF7CF, 0xEF82, 0xEF83, 0xEF84, 0xEF85, 0xEF86, 0xEF87, 0xEF88,
+ /* U+98F0 */ 0xEF89, 0xEF8A, 0xEF8B, 0xEF8C, 0xEF8D, 0xEF8E, 0xEF8F, 0xEF90,
+ /* U+98F8 */ 0xEF91, 0xEF92, 0xEF93, 0xEF94, 0xEF95, 0xEF96, 0xEF97, 0xEF98,
+ /* U+9900 */ 0xEF99, 0xEF9A, 0xEF9B, 0xEF9C, 0xEF9D, 0xEF9E, 0xEF9F, 0xEFA0,
+ /* U+9908 */ 0xF040, 0xF041, 0xF042, 0xF043, 0xF044, 0xF7D0, 0xF045, 0xF046,
+ /* U+9910 */ 0xB2CD, 0xF047, 0xF048, 0xF049, 0xF04A, 0xF04B, 0xF04C, 0xF04D,
+ /* U+9918 */ 0xF04E, 0xF04F, 0xF050, 0xF051, 0xF052, 0xF053, 0xF054, 0xF055,
+ /* U+9920 */ 0xF056, 0xF057, 0xF058, 0xF059, 0xF05A, 0xF05B, 0xF05C, 0xF05D,
+ /* U+9928 */ 0xF05E, 0xF05F, 0xF060, 0xF061, 0xF062, 0xF063, 0xF7D1, 0xF064,
+ /* U+9930 */ 0xF065, 0xF066, 0xF067, 0xF068, 0xF069, 0xF06A, 0xF06B, 0xF06C,
+ /* U+9938 */ 0xF06D, 0xF06E, 0xF06F, 0xF070, 0xF071, 0xF072, 0xF073, 0xF074,
+ /* U+9940 */ 0xF075, 0xF076, 0xF077, 0xF078, 0xF079, 0xF07A, 0xF07B, 0xF07C,
+ /* U+9948 */ 0xF07D, 0xF07E, 0xF080, 0xF081, 0xF082, 0xF083, 0xF084, 0xF085,
+ /* U+9950 */ 0xF086, 0xF087, 0xF088, 0xF089, 0xF7D3, 0xF7D2, 0xF08A, 0xF08B,
+ /* U+9958 */ 0xF08C, 0xF08D, 0xF08E, 0xF08F, 0xF090, 0xF091, 0xF092, 0xF093,
+ /* U+9960 */ 0xF094, 0xF095, 0xF096, 0xE2BB, 0xF097, 0xBCA2, 0xF098, 0xE2BC,
+ /* U+9968 */ 0xE2BD, 0xE2BE, 0xE2BF, 0xE2C0, 0xE2C1, 0xB7B9, 0xD2FB, 0xBDA4,
+ /* U+9970 */ 0xCACE, 0xB1A5, 0xCBC7, 0xF099, 0xE2C2, 0xB6FC, 0xC8C4, 0xE2C3,
+ /* U+9978 */ 0xF09A, 0xF09B, 0xBDC8, 0xF09C, 0xB1FD, 0xE2C4, 0xF09D, 0xB6F6,
+ /* U+9980 */ 0xE2C5, 0xC4D9, 0xF09E, 0xF09F, 0xE2C6, 0xCFDA, 0xB9DD, 0xE2C7,
+ /* U+9988 */ 0xC0A1, 0xF0A0, 0xE2C8, 0xB2F6, 0xF140, 0xE2C9, 0xF141, 0xC1F3,
+ /* U+9990 */ 0xE2CA, 0xE2CB, 0xC2F8, 0xE2CC, 0xE2CD, 0xE2CE, 0xCAD7, 0xD8B8,
+ /* U+9998 */ 0xD9E5, 0xCFE3, 0xF142, 0xF143, 0xF144, 0xF145, 0xF146, 0xF147,
+ /* U+99A0 */ 0xF148, 0xF149, 0xF14A, 0xF14B, 0xF14C, 0xF0A5, 0xF14D, 0xF14E,
+ /* U+99A8 */ 0xDCB0, 0xF14F, 0xF150, 0xF151, 0xF152, 0xF153, 0xF154, 0xF155,
+ /* U+99B0 */ 0xF156, 0xF157, 0xF158, 0xF159, 0xF15A, 0xF15B, 0xF15C, 0xF15D,
+ /* U+99B8 */ 0xF15E, 0xF15F, 0xF160, 0xF161, 0xF162, 0xF163, 0xF164, 0xF165,
+ /* U+99C0 */ 0xF166, 0xF167, 0xF168, 0xF169, 0xF16A, 0xF16B, 0xF16C, 0xF16D,
+ /* U+99C8 */ 0xF16E, 0xF16F, 0xF170, 0xF171, 0xF172, 0xF173, 0xF174, 0xF175,
+ /* U+99D0 */ 0xF176, 0xF177, 0xF178, 0xF179, 0xF17A, 0xF17B, 0xF17C, 0xF17D,
+ /* U+99D8 */ 0xF17E, 0xF180, 0xF181, 0xF182, 0xF183, 0xF184, 0xF185, 0xF186,
+ /* U+99E0 */ 0xF187, 0xF188, 0xF189, 0xF18A, 0xF18B, 0xF18C, 0xF18D, 0xF18E,
+ /* U+99E8 */ 0xF18F, 0xF190, 0xF191, 0xF192, 0xF193, 0xF194, 0xF195, 0xF196,
+ /* U+99F0 */ 0xF197, 0xF198, 0xF199, 0xF19A, 0xF19B, 0xF19C, 0xF19D, 0xF19E,
+ /* U+99F8 */ 0xF19F, 0xF1A0, 0xF240, 0xF241, 0xF242, 0xF243, 0xF244, 0xF245,
+ /* U+9A00 */ 0xF246, 0xF247, 0xF248, 0xF249, 0xF24A, 0xF24B, 0xF24C, 0xF24D,
+ /* U+9A08 */ 0xF24E, 0xF24F, 0xF250, 0xF251, 0xF252, 0xF253, 0xF254, 0xF255,
+ /* U+9A10 */ 0xF256, 0xF257, 0xF258, 0xF259, 0xF25A, 0xF25B, 0xF25C, 0xF25D,
+ /* U+9A18 */ 0xF25E, 0xF25F, 0xF260, 0xF261, 0xF262, 0xF263, 0xF264, 0xF265,
+ /* U+9A20 */ 0xF266, 0xF267, 0xF268, 0xF269, 0xF26A, 0xF26B, 0xF26C, 0xF26D,
+ /* U+9A28 */ 0xF26E, 0xF26F, 0xF270, 0xF271, 0xF272, 0xF273, 0xF274, 0xF275,
+ /* U+9A30 */ 0xF276, 0xF277, 0xF278, 0xF279, 0xF27A, 0xF27B, 0xF27C, 0xF27D,
+ /* U+9A38 */ 0xF27E, 0xF280, 0xF281, 0xF282, 0xF283, 0xF284, 0xF285, 0xF286,
+ /* U+9A40 */ 0xF287, 0xF288, 0xF289, 0xF28A, 0xF28B, 0xF28C, 0xF28D, 0xF28E,
+ /* U+9A48 */ 0xF28F, 0xF290, 0xF291, 0xF292, 0xF293, 0xF294, 0xF295, 0xF296,
+ /* U+9A50 */ 0xF297, 0xF298, 0xF299, 0xF29A, 0xF29B, 0xF29C, 0xF29D, 0xF29E,
+ /* U+9A58 */ 0xF29F, 0xF2A0, 0xF340, 0xF341, 0xF342, 0xF343, 0xF344, 0xF345,
+ /* U+9A60 */ 0xF346, 0xF347, 0xF348, 0xF349, 0xF34A, 0xF34B, 0xF34C, 0xF34D,
+ /* U+9A68 */ 0xF34E, 0xF34F, 0xF350, 0xF351, 0xC2ED, 0xD4A6, 0xCDD4, 0xD1B1,
+ /* U+9A70 */ 0xB3DB, 0xC7FD, 0xF352, 0xB2B5, 0xC2BF, 0xE6E0, 0xCABB, 0xE6E1,
+ /* U+9A78 */ 0xE6E2, 0xBED4, 0xE6E3, 0xD7A4, 0xCDD5, 0xE6E5, 0xBCDD, 0xE6E4,
+ /* U+9A80 */ 0xE6E6, 0xE6E7, 0xC2EE, 0xF353, 0xBDBE, 0xE6E8, 0xC2E6, 0xBAA7,
+ /* U+9A88 */ 0xE6E9, 0xF354, 0xE6EA, 0xB3D2, 0xD1E9, 0xF355, 0xF356, 0xBFA5,
+ /* U+9A90 */ 0xE6EB, 0xC6EF, 0xE6EC, 0xE6ED, 0xF357, 0xF358, 0xE6EE, 0xC6AD,
+ /* U+9A98 */ 0xE6EF, 0xF359, 0xC9A7, 0xE6F0, 0xE6F1, 0xE6F2, 0xE5B9, 0xE6F3,
+ /* U+9AA0 */ 0xE6F4, 0xC2E2, 0xE6F5, 0xE6F6, 0xD6E8, 0xE6F7, 0xF35A, 0xE6F8,
+ /* U+9AA8 */ 0xB9C7, 0xF35B, 0xF35C, 0xF35D, 0xF35E, 0xF35F, 0xF360, 0xF361,
+ /* U+9AB0 */ 0xF7BB, 0xF7BA, 0xF362, 0xF363, 0xF364, 0xF365, 0xF7BE, 0xF7BC,
+ /* U+9AB8 */ 0xBAA1, 0xF366, 0xF7BF, 0xF367, 0xF7C0, 0xF368, 0xF369, 0xF36A,
+ /* U+9AC0 */ 0xF7C2, 0xF7C1, 0xF7C4, 0xF36B, 0xF36C, 0xF7C3, 0xF36D, 0xF36E,
+ /* U+9AC8 */ 0xF36F, 0xF370, 0xF371, 0xF7C5, 0xF7C6, 0xF372, 0xF373, 0xF374,
+ /* U+9AD0 */ 0xF375, 0xF7C7, 0xF376, 0xCBE8, 0xF377, 0xF378, 0xF379, 0xF37A,
+ /* U+9AD8 */ 0xB8DF, 0xF37B, 0xF37C, 0xF37D, 0xF37E, 0xF380, 0xF381, 0xF7D4,
+ /* U+9AE0 */ 0xF382, 0xF7D5, 0xF383, 0xF384, 0xF385, 0xF386, 0xF7D6, 0xF387,
+ /* U+9AE8 */ 0xF388, 0xF389, 0xF38A, 0xF7D8, 0xF38B, 0xF7DA, 0xF38C, 0xF7D7,
+ /* U+9AF0 */ 0xF38D, 0xF38E, 0xF38F, 0xF390, 0xF391, 0xF392, 0xF393, 0xF394,
+ /* U+9AF8 */ 0xF395, 0xF7DB, 0xF396, 0xF7D9, 0xF397, 0xF398, 0xF399, 0xF39A,
+ /* U+9B00 */ 0xF39B, 0xF39C, 0xF39D, 0xD7D7, 0xF39E, 0xF39F, 0xF3A0, 0xF440,
+ /* U+9B08 */ 0xF7DC, 0xF441, 0xF442, 0xF443, 0xF444, 0xF445, 0xF446, 0xF7DD,
+ /* U+9B10 */ 0xF447, 0xF448, 0xF449, 0xF7DE, 0xF44A, 0xF44B, 0xF44C, 0xF44D,
+ /* U+9B18 */ 0xF44E, 0xF44F, 0xF450, 0xF451, 0xF452, 0xF453, 0xF454, 0xF7DF,
+ /* U+9B20 */ 0xF455, 0xF456, 0xF457, 0xF7E0, 0xF458, 0xF459, 0xF45A, 0xF45B,
+ /* U+9B28 */ 0xF45C, 0xF45D, 0xF45E, 0xF45F, 0xF460, 0xF461, 0xF462, 0xDBCB,
+ /* U+9B30 */ 0xF463, 0xF464, 0xD8AA, 0xF465, 0xF466, 0xF467, 0xF468, 0xF469,
+ /* U+9B38 */ 0xF46A, 0xF46B, 0xF46C, 0xE5F7, 0xB9ED, 0xF46D, 0xF46E, 0xF46F,
+ /* U+9B40 */ 0xF470, 0xBFFD, 0xBBEA, 0xF7C9, 0xC6C7, 0xF7C8, 0xF471, 0xF7CA,
+ /* U+9B48 */ 0xF7CC, 0xF7CB, 0xF472, 0xF473, 0xF474, 0xF7CD, 0xF475, 0xCEBA,
+ /* U+9B50 */ 0xF476, 0xF7CE, 0xF477, 0xF478, 0xC4A7, 0xF479, 0xF47A, 0xF47B,
+ /* U+9B58 */ 0xF47C, 0xF47D, 0xF47E, 0xF480, 0xF481, 0xF482, 0xF483, 0xF484,
+ /* U+9B60 */ 0xF485, 0xF486, 0xF487, 0xF488, 0xF489, 0xF48A, 0xF48B, 0xF48C,
+ /* U+9B68 */ 0xF48D, 0xF48E, 0xF48F, 0xF490, 0xF491, 0xF492, 0xF493, 0xF494,
+ /* U+9B70 */ 0xF495, 0xF496, 0xF497, 0xF498, 0xF499, 0xF49A, 0xF49B, 0xF49C,
+ /* U+9B78 */ 0xF49D, 0xF49E, 0xF49F, 0xF4A0, 0xF540, 0xF541, 0xF542, 0xF543,
+ /* U+9B80 */ 0xF544, 0xF545, 0xF546, 0xF547, 0xF548, 0xF549, 0xF54A, 0xF54B,
+ /* U+9B88 */ 0xF54C, 0xF54D, 0xF54E, 0xF54F, 0xF550, 0xF551, 0xF552, 0xF553,
+ /* U+9B90 */ 0xF554, 0xF555, 0xF556, 0xF557, 0xF558, 0xF559, 0xF55A, 0xF55B,
+ /* U+9B98 */ 0xF55C, 0xF55D, 0xF55E, 0xF55F, 0xF560, 0xF561, 0xF562, 0xF563,
+ /* U+9BA0 */ 0xF564, 0xF565, 0xF566, 0xF567, 0xF568, 0xF569, 0xF56A, 0xF56B,
+ /* U+9BA8 */ 0xF56C, 0xF56D, 0xF56E, 0xF56F, 0xF570, 0xF571, 0xF572, 0xF573,
+ /* U+9BB0 */ 0xF574, 0xF575, 0xF576, 0xF577, 0xF578, 0xF579, 0xF57A, 0xF57B,
+ /* U+9BB8 */ 0xF57C, 0xF57D, 0xF57E, 0xF580, 0xF581, 0xF582, 0xF583, 0xF584,
+ /* U+9BC0 */ 0xF585, 0xF586, 0xF587, 0xF588, 0xF589, 0xF58A, 0xF58B, 0xF58C,
+ /* U+9BC8 */ 0xF58D, 0xF58E, 0xF58F, 0xF590, 0xF591, 0xF592, 0xF593, 0xF594,
+ /* U+9BD0 */ 0xF595, 0xF596, 0xF597, 0xF598, 0xF599, 0xF59A, 0xF59B, 0xF59C,
+ /* U+9BD8 */ 0xF59D, 0xF59E, 0xF59F, 0xF5A0, 0xF640, 0xF641, 0xF642, 0xF643,
+ /* U+9BE0 */ 0xF644, 0xF645, 0xF646, 0xF647, 0xF648, 0xF649, 0xF64A, 0xF64B,
+ /* U+9BE8 */ 0xF64C, 0xF64D, 0xF64E, 0xF64F, 0xF650, 0xF651, 0xF652, 0xF653,
+ /* U+9BF0 */ 0xF654, 0xF655, 0xF656, 0xF657, 0xF658, 0xF659, 0xF65A, 0xF65B,
+ /* U+9BF8 */ 0xF65C, 0xF65D, 0xF65E, 0xF65F, 0xF660, 0xF661, 0xF662, 0xF663,
+ /* U+9C00 */ 0xF664, 0xF665, 0xF666, 0xF667, 0xF668, 0xF669, 0xF66A, 0xF66B,
+ /* U+9C08 */ 0xF66C, 0xF66D, 0xF66E, 0xF66F, 0xF670, 0xF671, 0xF672, 0xF673,
+ /* U+9C10 */ 0xF674, 0xF675, 0xF676, 0xF677, 0xF678, 0xF679, 0xF67A, 0xF67B,
+ /* U+9C18 */ 0xF67C, 0xF67D, 0xF67E, 0xF680, 0xF681, 0xF682, 0xF683, 0xF684,
+ /* U+9C20 */ 0xF685, 0xF686, 0xF687, 0xF688, 0xF689, 0xF68A, 0xF68B, 0xF68C,
+ /* U+9C28 */ 0xF68D, 0xF68E, 0xF68F, 0xF690, 0xF691, 0xF692, 0xF693, 0xF694,
+ /* U+9C30 */ 0xF695, 0xF696, 0xF697, 0xF698, 0xF699, 0xF69A, 0xF69B, 0xF69C,
+ /* U+9C38 */ 0xF69D, 0xF69E, 0xF69F, 0xF6A0, 0xF740, 0xF741, 0xF742, 0xF743,
+ /* U+9C40 */ 0xF744, 0xF745, 0xF746, 0xF747, 0xF748, 0xF749, 0xF74A, 0xF74B,
+ /* U+9C48 */ 0xF74C, 0xF74D, 0xF74E, 0xF74F, 0xF750, 0xF751, 0xF752, 0xF753,
+ /* U+9C50 */ 0xF754, 0xF755, 0xF756, 0xF757, 0xF758, 0xF759, 0xF75A, 0xF75B,
+ /* U+9C58 */ 0xF75C, 0xF75D, 0xF75E, 0xF75F, 0xF760, 0xF761, 0xF762, 0xF763,
+ /* U+9C60 */ 0xF764, 0xF765, 0xF766, 0xF767, 0xF768, 0xF769, 0xF76A, 0xF76B,
+ /* U+9C68 */ 0xF76C, 0xF76D, 0xF76E, 0xF76F, 0xF770, 0xF771, 0xF772, 0xF773,
+ /* U+9C70 */ 0xF774, 0xF775, 0xF776, 0xF777, 0xF778, 0xF779, 0xF77A, 0xF77B,
+ /* U+9C78 */ 0xF77C, 0xF77D, 0xF77E, 0xF780, 0xD3E3, 0xF781, 0xF782, 0xF6CF,
+ /* U+9C80 */ 0xF783, 0xC2B3, 0xF6D0, 0xF784, 0xF785, 0xF6D1, 0xF6D2, 0xF6D3,
+ /* U+9C88 */ 0xF6D4, 0xF786, 0xF787, 0xF6D6, 0xF788, 0xB1AB, 0xF6D7, 0xF789,
+ /* U+9C90 */ 0xF6D8, 0xF6D9, 0xF6DA, 0xF78A, 0xF6DB, 0xF6DC, 0xF78B, 0xF78C,
+ /* U+9C98 */ 0xF78D, 0xF78E, 0xF6DD, 0xF6DE, 0xCFCA, 0xF78F, 0xF6DF, 0xF6E0,
+ /* U+9CA0 */ 0xF6E1, 0xF6E2, 0xF6E3, 0xF6E4, 0xC0F0, 0xF6E5, 0xF6E6, 0xF6E7,
+ /* U+9CA8 */ 0xF6E8, 0xF6E9, 0xF790, 0xF6EA, 0xF791, 0xF6EB, 0xF6EC, 0xF792,
+ /* U+9CB0 */ 0xF6ED, 0xF6EE, 0xF6EF, 0xF6F0, 0xF6F1, 0xF6F2, 0xF6F3, 0xF6F4,
+ /* U+9CB8 */ 0xBEA8, 0xF793, 0xF6F5, 0xF6F6, 0xF6F7, 0xF6F8, 0xF794, 0xF795,
+ /* U+9CC0 */ 0xF796, 0xF797, 0xF798, 0xC8FA, 0xF6F9, 0xF6FA, 0xF6FB, 0xF6FC,
+ /* U+9CC8 */ 0xF799, 0xF79A, 0xF6FD, 0xF6FE, 0xF7A1, 0xF7A2, 0xF7A3, 0xF7A4,
+ /* U+9CD0 */ 0xF7A5, 0xF79B, 0xF79C, 0xF7A6, 0xF7A7, 0xF7A8, 0xB1EE, 0xF7A9,
+ /* U+9CD8 */ 0xF7AA, 0xF7AB, 0xF79D, 0xF79E, 0xF7AC, 0xF7AD, 0xC1DB, 0xF7AE,
+ /* U+9CE0 */ 0xF79F, 0xF7A0, 0xF7AF, 0xF840, 0xF841, 0xF842, 0xF843, 0xF844,
+ /* U+9CE8 */ 0xF845, 0xF846, 0xF847, 0xF848, 0xF849, 0xF84A, 0xF84B, 0xF84C,
+ /* U+9CF0 */ 0xF84D, 0xF84E, 0xF84F, 0xF850, 0xF851, 0xF852, 0xF853, 0xF854,
+ /* U+9CF8 */ 0xF855, 0xF856, 0xF857, 0xF858, 0xF859, 0xF85A, 0xF85B, 0xF85C,
+ /* U+9D00 */ 0xF85D, 0xF85E, 0xF85F, 0xF860, 0xF861, 0xF862, 0xF863, 0xF864,
+ /* U+9D08 */ 0xF865, 0xF866, 0xF867, 0xF868, 0xF869, 0xF86A, 0xF86B, 0xF86C,
+ /* U+9D10 */ 0xF86D, 0xF86E, 0xF86F, 0xF870, 0xF871, 0xF872, 0xF873, 0xF874,
+ /* U+9D18 */ 0xF875, 0xF876, 0xF877, 0xF878, 0xF879, 0xF87A, 0xF87B, 0xF87C,
+ /* U+9D20 */ 0xF87D, 0xF87E, 0xF880, 0xF881, 0xF882, 0xF883, 0xF884, 0xF885,
+ /* U+9D28 */ 0xF886, 0xF887, 0xF888, 0xF889, 0xF88A, 0xF88B, 0xF88C, 0xF88D,
+ /* U+9D30 */ 0xF88E, 0xF88F, 0xF890, 0xF891, 0xF892, 0xF893, 0xF894, 0xF895,
+ /* U+9D38 */ 0xF896, 0xF897, 0xF898, 0xF899, 0xF89A, 0xF89B, 0xF89C, 0xF89D,
+ /* U+9D40 */ 0xF89E, 0xF89F, 0xF8A0, 0xF940, 0xF941, 0xF942, 0xF943, 0xF944,
+ /* U+9D48 */ 0xF945, 0xF946, 0xF947, 0xF948, 0xF949, 0xF94A, 0xF94B, 0xF94C,
+ /* U+9D50 */ 0xF94D, 0xF94E, 0xF94F, 0xF950, 0xF951, 0xF952, 0xF953, 0xF954,
+ /* U+9D58 */ 0xF955, 0xF956, 0xF957, 0xF958, 0xF959, 0xF95A, 0xF95B, 0xF95C,
+ /* U+9D60 */ 0xF95D, 0xF95E, 0xF95F, 0xF960, 0xF961, 0xF962, 0xF963, 0xF964,
+ /* U+9D68 */ 0xF965, 0xF966, 0xF967, 0xF968, 0xF969, 0xF96A, 0xF96B, 0xF96C,
+ /* U+9D70 */ 0xF96D, 0xF96E, 0xF96F, 0xF970, 0xF971, 0xF972, 0xF973, 0xF974,
+ /* U+9D78 */ 0xF975, 0xF976, 0xF977, 0xF978, 0xF979, 0xF97A, 0xF97B, 0xF97C,
+ /* U+9D80 */ 0xF97D, 0xF97E, 0xF980, 0xF981, 0xF982, 0xF983, 0xF984, 0xF985,
+ /* U+9D88 */ 0xF986, 0xF987, 0xF988, 0xF989, 0xF98A, 0xF98B, 0xF98C, 0xF98D,
+ /* U+9D90 */ 0xF98E, 0xF98F, 0xF990, 0xF991, 0xF992, 0xF993, 0xF994, 0xF995,
+ /* U+9D98 */ 0xF996, 0xF997, 0xF998, 0xF999, 0xF99A, 0xF99B, 0xF99C, 0xF99D,
+ /* U+9DA0 */ 0xF99E, 0xF99F, 0xF9A0, 0xFA40, 0xFA41, 0xFA42, 0xFA43, 0xFA44,
+ /* U+9DA8 */ 0xFA45, 0xFA46, 0xFA47, 0xFA48, 0xFA49, 0xFA4A, 0xFA4B, 0xFA4C,
+ /* U+9DB0 */ 0xFA4D, 0xFA4E, 0xFA4F, 0xFA50, 0xFA51, 0xFA52, 0xFA53, 0xFA54,
+ /* U+9DB8 */ 0xFA55, 0xFA56, 0xFA57, 0xFA58, 0xFA59, 0xFA5A, 0xFA5B, 0xFA5C,
+ /* U+9DC0 */ 0xFA5D, 0xFA5E, 0xFA5F, 0xFA60, 0xFA61, 0xFA62, 0xFA63, 0xFA64,
+ /* U+9DC8 */ 0xFA65, 0xFA66, 0xFA67, 0xFA68, 0xFA69, 0xFA6A, 0xFA6B, 0xFA6C,
+ /* U+9DD0 */ 0xFA6D, 0xFA6E, 0xFA6F, 0xFA70, 0xFA71, 0xFA72, 0xFA73, 0xFA74,
+ /* U+9DD8 */ 0xFA75, 0xFA76, 0xFA77, 0xFA78, 0xFA79, 0xFA7A, 0xFA7B, 0xFA7C,
+ /* U+9DE0 */ 0xFA7D, 0xFA7E, 0xFA80, 0xFA81, 0xFA82, 0xFA83, 0xFA84, 0xFA85,
+ /* U+9DE8 */ 0xFA86, 0xFA87, 0xFA88, 0xFA89, 0xFA8A, 0xFA8B, 0xFA8C, 0xFA8D,
+ /* U+9DF0 */ 0xFA8E, 0xFA8F, 0xFA90, 0xFA91, 0xFA92, 0xFA93, 0xFA94, 0xFA95,
+ /* U+9DF8 */ 0xFA96, 0xFA97, 0xFA98, 0xFA99, 0xFA9A, 0xFA9B, 0xFA9C, 0xFA9D,
+ /* U+9E00 */ 0xFA9E, 0xFA9F, 0xFAA0, 0xFB40, 0xFB41, 0xFB42, 0xFB43, 0xFB44,
+ /* U+9E08 */ 0xFB45, 0xFB46, 0xFB47, 0xFB48, 0xFB49, 0xFB4A, 0xFB4B, 0xFB4C,
+ /* U+9E10 */ 0xFB4D, 0xFB4E, 0xFB4F, 0xFB50, 0xFB51, 0xFB52, 0xFB53, 0xFB54,
+ /* U+9E18 */ 0xFB55, 0xFB56, 0xFB57, 0xFB58, 0xFB59, 0xFB5A, 0xFB5B, 0xC4F1,
+ /* U+9E20 */ 0xF0AF, 0xBCA6, 0xF0B0, 0xC3F9, 0xFB5C, 0xC5B8, 0xD1BB, 0xFB5D,
+ /* U+9E28 */ 0xF0B1, 0xF0B2, 0xF0B3, 0xF0B4, 0xF0B5, 0xD1BC, 0xFB5E, 0xD1EC,
+ /* U+9E30 */ 0xFB5F, 0xF0B7, 0xF0B6, 0xD4A7, 0xFB60, 0xCDD2, 0xF0B8, 0xF0BA,
+ /* U+9E38 */ 0xF0B9, 0xF0BB, 0xF0BC, 0xFB61, 0xFB62, 0xB8EB, 0xF0BD, 0xBAE8,
+ /* U+9E40 */ 0xFB63, 0xF0BE, 0xF0BF, 0xBEE9, 0xF0C0, 0xB6EC, 0xF0C1, 0xF0C2,
+ /* U+9E48 */ 0xF0C3, 0xF0C4, 0xC8B5, 0xF0C5, 0xF0C6, 0xFB64, 0xF0C7, 0xC5F4,
+ /* U+9E50 */ 0xFB65, 0xF0C8, 0xFB66, 0xFB67, 0xFB68, 0xF0C9, 0xFB69, 0xF0CA,
+ /* U+9E58 */ 0xF7BD, 0xFB6A, 0xF0CB, 0xF0CC, 0xF0CD, 0xFB6B, 0xF0CE, 0xFB6C,
+ /* U+9E60 */ 0xFB6D, 0xFB6E, 0xFB6F, 0xF0CF, 0xBAD7, 0xFB70, 0xF0D0, 0xF0D1,
+ /* U+9E68 */ 0xF0D2, 0xF0D3, 0xF0D4, 0xF0D5, 0xF0D6, 0xF0D8, 0xFB71, 0xFB72,
+ /* U+9E70 */ 0xD3A5, 0xF0D7, 0xFB73, 0xF0D9, 0xFB74, 0xFB75, 0xFB76, 0xFB77,
+ /* U+9E78 */ 0xFB78, 0xFB79, 0xFB7A, 0xFB7B, 0xFB7C, 0xFB7D, 0xF5BA, 0xC2B9,
+ /* U+9E80 */ 0xFB7E, 0xFB80, 0xF7E4, 0xFB81, 0xFB82, 0xFB83, 0xFB84, 0xF7E5,
+ /* U+9E88 */ 0xF7E6, 0xFB85, 0xFB86, 0xF7E7, 0xFB87, 0xFB88, 0xFB89, 0xFB8A,
+ /* U+9E90 */ 0xFB8B, 0xFB8C, 0xF7E8, 0xC2B4, 0xFB8D, 0xFB8E, 0xFB8F, 0xFB90,
+ /* U+9E98 */ 0xFB91, 0xFB92, 0xFB93, 0xFB94, 0xFB95, 0xF7EA, 0xFB96, 0xF7EB,
+ /* U+9EA0 */ 0xFB97, 0xFB98, 0xFB99, 0xFB9A, 0xFB9B, 0xFB9C, 0xC2F3, 0xFB9D,
+ /* U+9EA8 */ 0xFB9E, 0xFB9F, 0xFBA0, 0xFC40, 0xFC41, 0xFC42, 0xFC43, 0xFC44,
+ /* U+9EB0 */ 0xFC45, 0xFC46, 0xFC47, 0xFC48, 0xF4F0, 0xFC49, 0xFC4A, 0xFC4B,
+ /* U+9EB8 */ 0xF4EF, 0xFC4C, 0xFC4D, 0xC2E9, 0xFC4E, 0xF7E1, 0xF7E2, 0xFC4F,
+ /* U+9EC0 */ 0xFC50, 0xFC51, 0xFC52, 0xFC53, 0xBBC6, 0xFC54, 0xFC55, 0xFC56,
+ /* U+9EC8 */ 0xFC57, 0xD9E4, 0xFC58, 0xFC59, 0xFC5A, 0xCAF2, 0xC0E8, 0xF0A4,
+ /* U+9ED0 */ 0xFC5B, 0xBADA, 0xFC5C, 0xFC5D, 0xC7AD, 0xFC5E, 0xFC5F, 0xFC60,
+ /* U+9ED8 */ 0xC4AC, 0xFC61, 0xFC62, 0xF7EC, 0xF7ED, 0xF7EE, 0xFC63, 0xF7F0,
+ /* U+9EE0 */ 0xF7EF, 0xFC64, 0xF7F1, 0xFC65, 0xFC66, 0xF7F4, 0xFC67, 0xF7F3,
+ /* U+9EE8 */ 0xFC68, 0xF7F2, 0xF7F5, 0xFC69, 0xFC6A, 0xFC6B, 0xFC6C, 0xF7F6,
+ /* U+9EF0 */ 0xFC6D, 0xFC6E, 0xFC6F, 0xFC70, 0xFC71, 0xFC72, 0xFC73, 0xFC74,
+ /* U+9EF8 */ 0xFC75, 0xEDE9, 0xFC76, 0xEDEA, 0xEDEB, 0xFC77, 0xF6BC, 0xFC78,
+ /* U+9F00 */ 0xFC79, 0xFC7A, 0xFC7B, 0xFC7C, 0xFC7D, 0xFC7E, 0xFC80, 0xFC81,
+ /* U+9F08 */ 0xFC82, 0xFC83, 0xFC84, 0xF6BD, 0xFC85, 0xF6BE, 0xB6A6, 0xFC86,
+ /* U+9F10 */ 0xD8BE, 0xFC87, 0xFC88, 0xB9C4, 0xFC89, 0xFC8A, 0xFC8B, 0xD8BB,
+ /* U+9F18 */ 0xFC8C, 0xDCB1, 0xFC8D, 0xFC8E, 0xFC8F, 0xFC90, 0xFC91, 0xFC92,
+ /* U+9F20 */ 0xCAF3, 0xFC93, 0xF7F7, 0xFC94, 0xFC95, 0xFC96, 0xFC97, 0xFC98,
+ /* U+9F28 */ 0xFC99, 0xFC9A, 0xFC9B, 0xFC9C, 0xF7F8, 0xFC9D, 0xFC9E, 0xF7F9,
+ /* U+9F30 */ 0xFC9F, 0xFCA0, 0xFD40, 0xFD41, 0xFD42, 0xFD43, 0xFD44, 0xF7FB,
+ /* U+9F38 */ 0xFD45, 0xF7FA, 0xFD46, 0xB1C7, 0xFD47, 0xF7FC, 0xF7FD, 0xFD48,
+ /* U+9F40 */ 0xFD49, 0xFD4A, 0xFD4B, 0xFD4C, 0xF7FE, 0xFD4D, 0xFD4E, 0xFD4F,
+ /* U+9F48 */ 0xFD50, 0xFD51, 0xFD52, 0xFD53, 0xFD54, 0xFD55, 0xFD56, 0xFD57,
+ /* U+9F50 */ 0xC6EB, 0xECB4, 0xFD58, 0xFD59, 0xFD5A, 0xFD5B, 0xFD5C, 0xFD5D,
+ /* U+9F58 */ 0xFD5E, 0xFD5F, 0xFD60, 0xFD61, 0xFD62, 0xFD63, 0xFD64, 0xFD65,
+ /* U+9F60 */ 0xFD66, 0xFD67, 0xFD68, 0xFD69, 0xFD6A, 0xFD6B, 0xFD6C, 0xFD6D,
+ /* U+9F68 */ 0xFD6E, 0xFD6F, 0xFD70, 0xFD71, 0xFD72, 0xFD73, 0xFD74, 0xFD75,
+ /* U+9F70 */ 0xFD76, 0xFD77, 0xFD78, 0xFD79, 0xFD7A, 0xFD7B, 0xFD7C, 0xFD7D,
+ /* U+9F78 */ 0xFD7E, 0xFD80, 0xFD81, 0xFD82, 0xFD83, 0xFD84, 0xFD85, 0xB3DD,
+ /* U+9F80 */ 0xF6B3, 0xFD86, 0xFD87, 0xF6B4, 0xC1E4, 0xF6B5, 0xF6B6, 0xF6B7,
+ /* U+9F88 */ 0xF6B8, 0xF6B9, 0xF6BA, 0xC8A3, 0xF6BB, 0xFD88, 0xFD89, 0xFD8A,
+ /* U+9F90 */ 0xFD8B, 0xFD8C, 0xFD8D, 0xFD8E, 0xFD8F, 0xFD90, 0xFD91, 0xFD92,
+ /* U+9F98 */ 0xFD93, 0xC1FA, 0xB9A8, 0xEDE8, 0xFD94, 0xFD95, 0xFD96, 0xB9EA,
+ /* U+9FA0 */ 0xD9DF, 0xFD97, 0xFD98, 0xFD99, 0xFD9A, 0xFD9B,
+ /* Contiguous area: U+E766 .. U+E864 */
+ /* U+E766 */ 0xA2AB, 0xA2AC,
+ /* U+E768 */ 0xA2AD, 0xA2AE, 0xA2AF, 0xA2B0, 0x6469, 0xA2E4, 0xA2EF, 0xA2F0,
+ /* U+E770 */ 0xA2FD, 0xA2FE, 0xA4F4, 0xA4F5, 0xA4F6, 0xA4F7, 0xA4F8, 0xA4F9,
+ /* U+E778 */ 0xA4FA, 0xA4FB, 0xA4FC, 0xA4FD, 0xA4FE, 0xA5F7, 0xA5F8, 0xA5F9,
+ /* U+E780 */ 0xA5FA, 0xA5FB, 0xA5FC, 0xA5FD, 0xA5FE, 0xA6B9, 0xA6BA, 0xA6BB,
+ /* U+E788 */ 0xA6BC, 0xA6BD, 0xA6BE, 0xA6BF, 0xA6C0, 0xA6D9, 0xA6DA, 0xA6DB,
+ /* U+E790 */ 0xA6DC, 0xA6DD, 0xA6DE, 0xA6DF, 0xA6EC, 0xA6ED, 0xA6F3, 0xA6F6,
+ /* U+E798 */ 0xA6F7, 0xA6F8, 0xA6F9, 0xA6FA, 0xA6FB, 0xA6FC, 0xA6FD, 0xA6FE,
+ /* U+E7A0 */ 0xA7C2, 0xA7C3, 0xA7C4, 0xA7C5, 0xA7C6, 0xA7C7, 0xA7C8, 0xA7C9,
+ /* U+E7A8 */ 0xA7CA, 0xA7CB, 0xA7CC, 0xA7CD, 0xA7CE, 0xA7CF, 0xA7D0, 0xA7F2,
+ /* U+E7B0 */ 0xA7F3, 0xA7F4, 0xA7F5, 0xA7F6, 0xA7F7, 0xA7F8, 0xA7F9, 0xA7FA,
+ /* U+E7B8 */ 0xA7FB, 0xA7FC, 0xA7FD, 0xA7FE, 0xA896, 0xA897, 0xA898, 0xA899,
+ /* U+E7C0 */ 0xA89A, 0xA89B, 0xA89C, 0xA89D, 0xA89E, 0xA89F, 0xA8A0, 0xA8BC,
+ /* U+E7C8 */ 0x6470, 0xA8C1, 0xA8C2, 0xA8C3, 0xA8C4, 0xA8EA, 0xA8EB, 0xA8EC,
+ /* U+E7D0 */ 0xA8ED, 0xA8EE, 0xA8EF, 0xA8F0, 0xA8F1, 0xA8F2, 0xA8F3, 0xA8F4,
+ /* U+E7D8 */ 0xA8F5, 0xA8F6, 0xA8F7, 0xA8F8, 0xA8F9, 0xA8FA, 0xA8FB, 0xA8FC,
+ /* U+E7E0 */ 0xA8FD, 0xA8FE, 0xA958, 0xA95B, 0xA95D, 0xA95E, 0xA95F, 0x6471,
+ /* U+E7E8 */ 0x6472, 0x6473, 0x6474, 0x6475, 0x6476, 0x6477, 0x6478, 0x6479,
+ /* U+E7F0 */ 0x6480, 0x6481, 0x6482, 0x6483, 0xA997, 0xA998, 0xA999, 0xA99A,
+ /* U+E7F8 */ 0xA99B, 0xA99C, 0xA99D, 0xA99E, 0xA99F, 0xA9A0, 0xA9A1, 0xA9A2,
+ /* U+E800 */ 0xA9A3, 0xA9F0, 0xA9F1, 0xA9F2, 0xA9F3, 0xA9F4, 0xA9F5, 0xA9F6,
+ /* U+E808 */ 0xA9F7, 0xA9F8, 0xA9F9, 0xA9FA, 0xA9FB, 0xA9FC, 0xA9FD, 0xA9FE,
+ /* U+E810 */ 0xD7FA, 0xD7FB, 0xD7FC, 0xD7FD, 0xD7FE, 0x6484, 0xFE51, 0xFE52,
+ /* U+E818 */ 0xFE53, 0x6485, 0x6486, 0x6487, 0x6488, 0x6489, 0xFE59, 0x6490,
+ /* U+E820 */ 0x6491, 0x6492, 0x6493, 0x6494, 0x6495, 0x6496, 0xFE61, 0x6497,
+ /* U+E828 */ 0x6498, 0x6499, 0x64A0, 0xFE66, 0xFE67, 0x64A1, 0x64A2, 0x64A3,
+ /* U+E830 */ 0x64A4, 0xFE6C, 0xFE6D, 0x64A5, 0x64A6, 0x64A7, 0x64A8, 0x64A9,
+ /* U+E838 */ 0x64B0, 0x64B1, 0x64B2, 0xFE76, 0x64B3, 0x64B4, 0x64B5, 0x64B6,
+ /* U+E840 */ 0x64B7, 0x64B8, 0x64B9, 0xFE7E, 0x64C0, 0x64C1, 0x64C2, 0x64C3,
+ /* U+E848 */ 0x64C4, 0x64C5, 0x64C6, 0x64C7, 0x64C8, 0x64C9, 0x64D0, 0x64D1,
+ /* U+E850 */ 0x64D2, 0x64D3, 0x64D4, 0x64D5, 0xFE90, 0xFE91, 0x64D6, 0x64D7,
+ /* U+E858 */ 0x64D8, 0x64D9, 0x64E0, 0x64E1, 0x64E2, 0x64E3, 0x64E4, 0x64E5,
+ /* U+E860 */ 0x64E6, 0x64E7, 0x64E8, 0x64E9, 0xFEA0,
+ /* Contiguous area: U+F92C .. U+FA29 */
+ /* U+F92C */ 0xFD9C, 0x7045, 0x7046, 0x7047,
+ /* U+F930 */ 0x7048, 0x7049, 0x7050, 0x7051, 0x7052, 0x7053, 0x7054, 0x7055,
+ /* U+F938 */ 0x7056, 0x7057, 0x7058, 0x7059, 0x7060, 0x7061, 0x7062, 0x7063,
+ /* U+F940 */ 0x7064, 0x7065, 0x7066, 0x7067, 0x7068, 0x7069, 0x7070, 0x7071,
+ /* U+F948 */ 0x7072, 0x7073, 0x7074, 0x7075, 0x7076, 0x7077, 0x7078, 0x7079,
+ /* U+F950 */ 0x7080, 0x7081, 0x7082, 0x7083, 0x7084, 0x7085, 0x7086, 0x7087,
+ /* U+F958 */ 0x7088, 0x7089, 0x7090, 0x7091, 0x7092, 0x7093, 0x7094, 0x7095,
+ /* U+F960 */ 0x7096, 0x7097, 0x7098, 0x7099, 0x70A0, 0x70A1, 0x70A2, 0x70A3,
+ /* U+F968 */ 0x70A4, 0x70A5, 0x70A6, 0x70A7, 0x70A8, 0x70A9, 0x70B0, 0x70B1,
+ /* U+F970 */ 0x70B2, 0x70B3, 0x70B4, 0x70B5, 0x70B6, 0x70B7, 0x70B8, 0x70B9,
+ /* U+F978 */ 0x70C0, 0xFD9D, 0x70C1, 0x70C2, 0x70C3, 0x70C4, 0x70C5, 0x70C6,
+ /* U+F980 */ 0x70C7, 0x70C8, 0x70C9, 0x70D0, 0x70D1, 0x70D2, 0x70D3, 0x70D4,
+ /* U+F988 */ 0x70D5, 0x70D6, 0x70D7, 0x70D8, 0x70D9, 0x70E0, 0x70E1, 0x70E2,
+ /* U+F990 */ 0x70E3, 0x70E4, 0x70E5, 0x70E6, 0x70E7, 0xFD9E, 0x70E8, 0x70E9,
+ /* U+F998 */ 0x70F0, 0x70F1, 0x70F2, 0x70F3, 0x70F4, 0x70F5, 0x70F6, 0x70F7,
+ /* U+F9A0 */ 0x70F8, 0x70F9, 0x7100, 0x7101, 0x7102, 0x7103, 0x7104, 0x7105,
+ /* U+F9A8 */ 0x7106, 0x7107, 0x7108, 0x7109, 0x7110, 0x7111, 0x7112, 0x7113,
+ /* U+F9B0 */ 0x7114, 0x7115, 0x7116, 0x7117, 0x7118, 0x7119, 0x7120, 0x7121,
+ /* U+F9B8 */ 0x7122, 0x7123, 0x7124, 0x7125, 0x7126, 0x7127, 0x7128, 0x7129,
+ /* U+F9C0 */ 0x7130, 0x7131, 0x7132, 0x7133, 0x7134, 0x7135, 0x7136, 0x7137,
+ /* U+F9C8 */ 0x7138, 0x7139, 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7145,
+ /* U+F9D0 */ 0x7146, 0x7147, 0x7148, 0x7149, 0x7150, 0x7151, 0x7152, 0x7153,
+ /* U+F9D8 */ 0x7154, 0x7155, 0x7156, 0x7157, 0x7158, 0x7159, 0x7160, 0x7161,
+ /* U+F9E0 */ 0x7162, 0x7163, 0x7164, 0x7165, 0x7166, 0x7167, 0x7168, 0xFD9F,
+ /* U+F9E8 */ 0x7169, 0x7170, 0x7171, 0x7172, 0x7173, 0x7174, 0x7175, 0x7176,
+ /* U+F9F0 */ 0x7177, 0xFDA0, 0x7178, 0x7179, 0x7180, 0x7181, 0x7182, 0x7183,
+ /* U+F9F8 */ 0x7184, 0x7185, 0x7186, 0x7187, 0x7188, 0x7189, 0x7190, 0x7191,
+ /* U+FA00 */ 0x7192, 0x7193, 0x7194, 0x7195, 0x7196, 0x7197, 0x7198, 0x7199,
+ /* U+FA08 */ 0x71A0, 0x71A1, 0x71A2, 0x71A3, 0xFE40, 0xFE41, 0xFE42, 0xFE43,
+ /* U+FA10 */ 0x71A4, 0xFE44, 0x71A5, 0xFE45, 0xFE46, 0x71A6, 0x71A7, 0x71A8,
+ /* U+FA18 */ 0xFE47, 0x71A9, 0x71B0, 0x71B1, 0x71B2, 0x71B3, 0x71B4, 0xFE48,
+ /* U+FA20 */ 0xFE49, 0xFE4A, 0x71B5, 0xFE4B, 0xFE4C, 0x71B6, 0x71B7, 0xFE4D,
+ /* U+FA28 */ 0xFE4E, 0xFE4F,
+ /* Contiguous area: U+FE30 .. U+FFE5 */
+ /* U+FE30 */ 0xA955, 0xA6F2, 0x7848, 0xA6F4, 0xA6F5, 0xA6E0, 0xA6E1, 0xA6F0,
+ /* U+FE38 */ 0xA6F1, 0xA6E2, 0xA6E3, 0xA6EE, 0xA6EF, 0xA6E6, 0xA6E7, 0xA6E4,
+ /* U+FE40 */ 0xA6E5, 0xA6E8, 0xA6E9, 0xA6EA, 0xA6EB, 0x7849, 0x7850, 0x7851,
+ /* U+FE48 */ 0x7852, 0xA968, 0xA969, 0xA96A, 0xA96B, 0xA96C, 0xA96D, 0xA96E,
+ /* U+FE50 */ 0xA96F, 0xA970, 0xA971, 0x7853, 0xA972, 0xA973, 0xA974, 0xA975,
+ /* U+FE58 */ 0x7854, 0xA976, 0xA977, 0xA978, 0xA979, 0xA97A, 0xA97B, 0xA97C,
+ /* U+FE60 */ 0xA97D, 0xA97E, 0xA980, 0xA981, 0xA982, 0xA983, 0xA984, 0x7855,
+ /* U+FE68 */ 0xA985, 0xA986, 0xA987, 0xA988, 0x7856, 0x7857, 0x7858, 0x7859,
+ /* U+FE70 */ 0x7860, 0x7861, 0x7862, 0x7863, 0x7864, 0x7865, 0x7866, 0x7867,
+ /* U+FE78 */ 0x7868, 0x7869, 0x7870, 0x7871, 0x7872, 0x7873, 0x7874, 0x7875,
+ /* U+FE80 */ 0x7876, 0x7877, 0x7878, 0x7879, 0x7880, 0x7881, 0x7882, 0x7883,
+ /* U+FE88 */ 0x7884, 0x7885, 0x7886, 0x7887, 0x7888, 0x7889, 0x7890, 0x7891,
+ /* U+FE90 */ 0x7892, 0x7893, 0x7894, 0x7895, 0x7896, 0x7897, 0x7898, 0x7899,
+ /* U+FE98 */ 0x78A0, 0x78A1, 0x78A2, 0x78A3, 0x78A4, 0x78A5, 0x78A6, 0x78A7,
+ /* U+FEA0 */ 0x78A8, 0x78A9, 0x78B0, 0x78B1, 0x78B2, 0x78B3, 0x78B4, 0x78B5,
+ /* U+FEA8 */ 0x78B6, 0x78B7, 0x78B8, 0x78B9, 0x78C0, 0x78C1, 0x78C2, 0x78C3,
+ /* U+FEB0 */ 0x78C4, 0x78C5, 0x78C6, 0x78C7, 0x78C8, 0x78C9, 0x78D0, 0x78D1,
+ /* U+FEB8 */ 0x78D2, 0x78D3, 0x78D4, 0x78D5, 0x78D6, 0x78D7, 0x78D8, 0x78D9,
+ /* U+FEC0 */ 0x78E0, 0x78E1, 0x78E2, 0x78E3, 0x78E4, 0x78E5, 0x78E6, 0x78E7,
+ /* U+FEC8 */ 0x78E8, 0x78E9, 0x78F0, 0x78F1, 0x78F2, 0x78F3, 0x78F4, 0x78F5,
+ /* U+FED0 */ 0x78F6, 0x78F7, 0x78F8, 0x78F9, 0x7900, 0x7901, 0x7902, 0x7903,
+ /* U+FED8 */ 0x7904, 0x7905, 0x7906, 0x7907, 0x7908, 0x7909, 0x7910, 0x7911,
+ /* U+FEE0 */ 0x7912, 0x7913, 0x7914, 0x7915, 0x7916, 0x7917, 0x7918, 0x7919,
+ /* U+FEE8 */ 0x7920, 0x7921, 0x7922, 0x7923, 0x7924, 0x7925, 0x7926, 0x7927,
+ /* U+FEF0 */ 0x7928, 0x7929, 0x7930, 0x7931, 0x7932, 0x7933, 0x7934, 0x7935,
+ /* U+FEF8 */ 0x7936, 0x7937, 0x7938, 0x7939, 0x7940, 0x7941, 0x7942, 0x7943,
+ /* U+FF00 */ 0x7944, 0xA3A1, 0xA3A2, 0xA3A3, 0xA1E7, 0xA3A5, 0xA3A6, 0xA3A7,
+ /* U+FF08 */ 0xA3A8, 0xA3A9, 0xA3AA, 0xA3AB, 0xA3AC, 0xA3AD, 0xA3AE, 0xA3AF,
+ /* U+FF10 */ 0xA3B0, 0xA3B1, 0xA3B2, 0xA3B3, 0xA3B4, 0xA3B5, 0xA3B6, 0xA3B7,
+ /* U+FF18 */ 0xA3B8, 0xA3B9, 0xA3BA, 0xA3BB, 0xA3BC, 0xA3BD, 0xA3BE, 0xA3BF,
+ /* U+FF20 */ 0xA3C0, 0xA3C1, 0xA3C2, 0xA3C3, 0xA3C4, 0xA3C5, 0xA3C6, 0xA3C7,
+ /* U+FF28 */ 0xA3C8, 0xA3C9, 0xA3CA, 0xA3CB, 0xA3CC, 0xA3CD, 0xA3CE, 0xA3CF,
+ /* U+FF30 */ 0xA3D0, 0xA3D1, 0xA3D2, 0xA3D3, 0xA3D4, 0xA3D5, 0xA3D6, 0xA3D7,
+ /* U+FF38 */ 0xA3D8, 0xA3D9, 0xA3DA, 0xA3DB, 0xA3DC, 0xA3DD, 0xA3DE, 0xA3DF,
+ /* U+FF40 */ 0xA3E0, 0xA3E1, 0xA3E2, 0xA3E3, 0xA3E4, 0xA3E5, 0xA3E6, 0xA3E7,
+ /* U+FF48 */ 0xA3E8, 0xA3E9, 0xA3EA, 0xA3EB, 0xA3EC, 0xA3ED, 0xA3EE, 0xA3EF,
+ /* U+FF50 */ 0xA3F0, 0xA3F1, 0xA3F2, 0xA3F3, 0xA3F4, 0xA3F5, 0xA3F6, 0xA3F7,
+ /* U+FF58 */ 0xA3F8, 0xA3F9, 0xA3FA, 0xA3FB, 0xA3FC, 0xA3FD, 0xA1AB, 0x7945,
+ /* U+FF60 */ 0x7946, 0x7947, 0x7948, 0x7949, 0x7950, 0x7951, 0x7952, 0x7953,
+ /* U+FF68 */ 0x7954, 0x7955, 0x7956, 0x7957, 0x7958, 0x7959, 0x7960, 0x7961,
+ /* U+FF70 */ 0x7962, 0x7963, 0x7964, 0x7965, 0x7966, 0x7967, 0x7968, 0x7969,
+ /* U+FF78 */ 0x7970, 0x7971, 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7977,
+ /* U+FF80 */ 0x7978, 0x7979, 0x7980, 0x7981, 0x7982, 0x7983, 0x7984, 0x7985,
+ /* U+FF88 */ 0x7986, 0x7987, 0x7988, 0x7989, 0x7990, 0x7991, 0x7992, 0x7993,
+ /* U+FF90 */ 0x7994, 0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x79A0, 0x79A1,
+ /* U+FF98 */ 0x79A2, 0x79A3, 0x79A4, 0x79A5, 0x79A6, 0x79A7, 0x79A8, 0x79A9,
+ /* U+FFA0 */ 0x79B0, 0x79B1, 0x79B2, 0x79B3, 0x79B4, 0x79B5, 0x79B6, 0x79B7,
+ /* U+FFA8 */ 0x79B8, 0x79B9, 0x79C0, 0x79C1, 0x79C2, 0x79C3, 0x79C4, 0x79C5,
+ /* U+FFB0 */ 0x79C6, 0x79C7, 0x79C8, 0x79C9, 0x79D0, 0x79D1, 0x79D2, 0x79D3,
+ /* U+FFB8 */ 0x79D4, 0x79D5, 0x79D6, 0x79D7, 0x79D8, 0x79D9, 0x79E0, 0x79E1,
+ /* U+FFC0 */ 0x79E2, 0x79E3, 0x79E4, 0x79E5, 0x79E6, 0x79E7, 0x79E8, 0x79E9,
+ /* U+FFC8 */ 0x79F0, 0x79F1, 0x79F2, 0x79F3, 0x79F4, 0x79F5, 0x79F6, 0x79F7,
+ /* U+FFD0 */ 0x79F8, 0x79F9, 0x7A00, 0x7A01, 0x7A02, 0x7A03, 0x7A04, 0x7A05,
+ /* U+FFD8 */ 0x7A06, 0x7A07, 0x7A08, 0x7A09, 0x7A10, 0x7A11, 0x7A12, 0x7A13,
+ /* U+FFE0 */ 0xA1E9, 0xA1EA, 0xA956, 0xA3FE, 0xA957, 0xA3A4,
+};
+
+static quint16 const gb18030_2byte_to_ucs[22046] = {
+ /* GB 0x8140..0x817E */
+ 0x4E02, 0x4E04, 0x4E05, 0x4E06, 0x4E0F, 0x4E12, 0x4E17, 0x4E1F,
+ 0x4E20, 0x4E21, 0x4E23, 0x4E26, 0x4E29, 0x4E2E, 0x4E2F, 0x4E31,
+ 0x4E33, 0x4E35, 0x4E37, 0x4E3C, 0x4E40, 0x4E41, 0x4E42, 0x4E44,
+ 0x4E46, 0x4E4A, 0x4E51, 0x4E55, 0x4E57, 0x4E5A, 0x4E5B, 0x4E62,
+ 0x4E63, 0x4E64, 0x4E65, 0x4E67, 0x4E68, 0x4E6A, 0x4E6B, 0x4E6C,
+ 0x4E6D, 0x4E6E, 0x4E6F, 0x4E72, 0x4E74, 0x4E75, 0x4E76, 0x4E77,
+ 0x4E78, 0x4E79, 0x4E7A, 0x4E7B, 0x4E7C, 0x4E7D, 0x4E7F, 0x4E80,
+ 0x4E81, 0x4E82, 0x4E83, 0x4E84, 0x4E85, 0x4E87, 0x4E8A,
+ /* GB 0x8180..0x81FE */
+ 0x4E90, 0x4E96, 0x4E97, 0x4E99, 0x4E9C, 0x4E9D, 0x4E9E, 0x4EA3,
+ 0x4EAA, 0x4EAF, 0x4EB0, 0x4EB1, 0x4EB4, 0x4EB6, 0x4EB7, 0x4EB8,
+ 0x4EB9, 0x4EBC, 0x4EBD, 0x4EBE, 0x4EC8, 0x4ECC, 0x4ECF, 0x4ED0,
+ 0x4ED2, 0x4EDA, 0x4EDB, 0x4EDC, 0x4EE0, 0x4EE2, 0x4EE6, 0x4EE7,
+ 0x4EE9, 0x4EED, 0x4EEE, 0x4EEF, 0x4EF1, 0x4EF4, 0x4EF8, 0x4EF9,
+ 0x4EFA, 0x4EFC, 0x4EFE, 0x4F00, 0x4F02, 0x4F03, 0x4F04, 0x4F05,
+ 0x4F06, 0x4F07, 0x4F08, 0x4F0B, 0x4F0C, 0x4F12, 0x4F13, 0x4F14,
+ 0x4F15, 0x4F16, 0x4F1C, 0x4F1D, 0x4F21, 0x4F23, 0x4F28, 0x4F29,
+ 0x4F2C, 0x4F2D, 0x4F2E, 0x4F31, 0x4F33, 0x4F35, 0x4F37, 0x4F39,
+ 0x4F3B, 0x4F3E, 0x4F3F, 0x4F40, 0x4F41, 0x4F42, 0x4F44, 0x4F45,
+ 0x4F47, 0x4F48, 0x4F49, 0x4F4A, 0x4F4B, 0x4F4C, 0x4F52, 0x4F54,
+ 0x4F56, 0x4F61, 0x4F62, 0x4F66, 0x4F68, 0x4F6A, 0x4F6B, 0x4F6D,
+ 0x4F6E, 0x4F71, 0x4F72, 0x4F75, 0x4F77, 0x4F78, 0x4F79, 0x4F7A,
+ 0x4F7D, 0x4F80, 0x4F81, 0x4F82, 0x4F85, 0x4F86, 0x4F87, 0x4F8A,
+ 0x4F8C, 0x4F8E, 0x4F90, 0x4F92, 0x4F93, 0x4F95, 0x4F96, 0x4F98,
+ 0x4F99, 0x4F9A, 0x4F9C, 0x4F9E, 0x4F9F, 0x4FA1, 0x4FA2,
+ /* GB 0x8240..0x827E */
+ 0x4FA4, 0x4FAB, 0x4FAD, 0x4FB0, 0x4FB1, 0x4FB2, 0x4FB3, 0x4FB4,
+ 0x4FB6, 0x4FB7, 0x4FB8, 0x4FB9, 0x4FBA, 0x4FBB, 0x4FBC, 0x4FBD,
+ 0x4FBE, 0x4FC0, 0x4FC1, 0x4FC2, 0x4FC6, 0x4FC7, 0x4FC8, 0x4FC9,
+ 0x4FCB, 0x4FCC, 0x4FCD, 0x4FD2, 0x4FD3, 0x4FD4, 0x4FD5, 0x4FD6,
+ 0x4FD9, 0x4FDB, 0x4FE0, 0x4FE2, 0x4FE4, 0x4FE5, 0x4FE7, 0x4FEB,
+ 0x4FEC, 0x4FF0, 0x4FF2, 0x4FF4, 0x4FF5, 0x4FF6, 0x4FF7, 0x4FF9,
+ 0x4FFB, 0x4FFC, 0x4FFD, 0x4FFF, 0x5000, 0x5001, 0x5002, 0x5003,
+ 0x5004, 0x5005, 0x5006, 0x5007, 0x5008, 0x5009, 0x500A,
+ /* GB 0x8280..0x82FE */
+ 0x500B, 0x500E, 0x5010, 0x5011, 0x5013, 0x5015, 0x5016, 0x5017,
+ 0x501B, 0x501D, 0x501E, 0x5020, 0x5022, 0x5023, 0x5024, 0x5027,
+ 0x502B, 0x502F, 0x5030, 0x5031, 0x5032, 0x5033, 0x5034, 0x5035,
+ 0x5036, 0x5037, 0x5038, 0x5039, 0x503B, 0x503D, 0x503F, 0x5040,
+ 0x5041, 0x5042, 0x5044, 0x5045, 0x5046, 0x5049, 0x504A, 0x504B,
+ 0x504D, 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5056, 0x5057,
+ 0x5058, 0x5059, 0x505B, 0x505D, 0x505E, 0x505F, 0x5060, 0x5061,
+ 0x5062, 0x5063, 0x5064, 0x5066, 0x5067, 0x5068, 0x5069, 0x506A,
+ 0x506B, 0x506D, 0x506E, 0x506F, 0x5070, 0x5071, 0x5072, 0x5073,
+ 0x5074, 0x5075, 0x5078, 0x5079, 0x507A, 0x507C, 0x507D, 0x5081,
+ 0x5082, 0x5083, 0x5084, 0x5086, 0x5087, 0x5089, 0x508A, 0x508B,
+ 0x508C, 0x508E, 0x508F, 0x5090, 0x5091, 0x5092, 0x5093, 0x5094,
+ 0x5095, 0x5096, 0x5097, 0x5098, 0x5099, 0x509A, 0x509B, 0x509C,
+ 0x509D, 0x509E, 0x509F, 0x50A0, 0x50A1, 0x50A2, 0x50A4, 0x50A6,
+ 0x50AA, 0x50AB, 0x50AD, 0x50AE, 0x50AF, 0x50B0, 0x50B1, 0x50B3,
+ 0x50B4, 0x50B5, 0x50B6, 0x50B7, 0x50B8, 0x50B9, 0x50BC,
+ /* GB 0x8340..0x837E */
+ 0x50BD, 0x50BE, 0x50BF, 0x50C0, 0x50C1, 0x50C2, 0x50C3, 0x50C4,
+ 0x50C5, 0x50C6, 0x50C7, 0x50C8, 0x50C9, 0x50CA, 0x50CB, 0x50CC,
+ 0x50CD, 0x50CE, 0x50D0, 0x50D1, 0x50D2, 0x50D3, 0x50D4, 0x50D5,
+ 0x50D7, 0x50D8, 0x50D9, 0x50DB, 0x50DC, 0x50DD, 0x50DE, 0x50DF,
+ 0x50E0, 0x50E1, 0x50E2, 0x50E3, 0x50E4, 0x50E5, 0x50E8, 0x50E9,
+ 0x50EA, 0x50EB, 0x50EF, 0x50F0, 0x50F1, 0x50F2, 0x50F4, 0x50F6,
+ 0x50F7, 0x50F8, 0x50F9, 0x50FA, 0x50FC, 0x50FD, 0x50FE, 0x50FF,
+ 0x5100, 0x5101, 0x5102, 0x5103, 0x5104, 0x5105, 0x5108,
+ /* GB 0x8380..0x83FE */
+ 0x5109, 0x510A, 0x510C, 0x510D, 0x510E, 0x510F, 0x5110, 0x5111,
+ 0x5113, 0x5114, 0x5115, 0x5116, 0x5117, 0x5118, 0x5119, 0x511A,
+ 0x511B, 0x511C, 0x511D, 0x511E, 0x511F, 0x5120, 0x5122, 0x5123,
+ 0x5124, 0x5125, 0x5126, 0x5127, 0x5128, 0x5129, 0x512A, 0x512B,
+ 0x512C, 0x512D, 0x512E, 0x512F, 0x5130, 0x5131, 0x5132, 0x5133,
+ 0x5134, 0x5135, 0x5136, 0x5137, 0x5138, 0x5139, 0x513A, 0x513B,
+ 0x513C, 0x513D, 0x513E, 0x5142, 0x5147, 0x514A, 0x514C, 0x514E,
+ 0x514F, 0x5150, 0x5152, 0x5153, 0x5157, 0x5158, 0x5159, 0x515B,
+ 0x515D, 0x515E, 0x515F, 0x5160, 0x5161, 0x5163, 0x5164, 0x5166,
+ 0x5167, 0x5169, 0x516A, 0x516F, 0x5172, 0x517A, 0x517E, 0x517F,
+ 0x5183, 0x5184, 0x5186, 0x5187, 0x518A, 0x518B, 0x518E, 0x518F,
+ 0x5190, 0x5191, 0x5193, 0x5194, 0x5198, 0x519A, 0x519D, 0x519E,
+ 0x519F, 0x51A1, 0x51A3, 0x51A6, 0x51A7, 0x51A8, 0x51A9, 0x51AA,
+ 0x51AD, 0x51AE, 0x51B4, 0x51B8, 0x51B9, 0x51BA, 0x51BE, 0x51BF,
+ 0x51C1, 0x51C2, 0x51C3, 0x51C5, 0x51C8, 0x51CA, 0x51CD, 0x51CE,
+ 0x51D0, 0x51D2, 0x51D3, 0x51D4, 0x51D5, 0x51D6, 0x51D7,
+ /* GB 0x8440..0x847E */
+ 0x51D8, 0x51D9, 0x51DA, 0x51DC, 0x51DE, 0x51DF, 0x51E2, 0x51E3,
+ 0x51E5, 0x51E6, 0x51E7, 0x51E8, 0x51E9, 0x51EA, 0x51EC, 0x51EE,
+ 0x51F1, 0x51F2, 0x51F4, 0x51F7, 0x51FE, 0x5204, 0x5205, 0x5209,
+ 0x520B, 0x520C, 0x520F, 0x5210, 0x5213, 0x5214, 0x5215, 0x521C,
+ 0x521E, 0x521F, 0x5221, 0x5222, 0x5223, 0x5225, 0x5226, 0x5227,
+ 0x522A, 0x522C, 0x522F, 0x5231, 0x5232, 0x5234, 0x5235, 0x523C,
+ 0x523E, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248, 0x5249, 0x524B,
+ 0x524E, 0x524F, 0x5252, 0x5253, 0x5255, 0x5257, 0x5258,
+ /* GB 0x8480..0x84FE */
+ 0x5259, 0x525A, 0x525B, 0x525D, 0x525F, 0x5260, 0x5262, 0x5263,
+ 0x5264, 0x5266, 0x5268, 0x526B, 0x526C, 0x526D, 0x526E, 0x5270,
+ 0x5271, 0x5273, 0x5274, 0x5275, 0x5276, 0x5277, 0x5278, 0x5279,
+ 0x527A, 0x527B, 0x527C, 0x527E, 0x5280, 0x5283, 0x5284, 0x5285,
+ 0x5286, 0x5287, 0x5289, 0x528A, 0x528B, 0x528C, 0x528D, 0x528E,
+ 0x528F, 0x5291, 0x5292, 0x5294, 0x5295, 0x5296, 0x5297, 0x5298,
+ 0x5299, 0x529A, 0x529C, 0x52A4, 0x52A5, 0x52A6, 0x52A7, 0x52AE,
+ 0x52AF, 0x52B0, 0x52B4, 0x52B5, 0x52B6, 0x52B7, 0x52B8, 0x52B9,
+ 0x52BA, 0x52BB, 0x52BC, 0x52BD, 0x52C0, 0x52C1, 0x52C2, 0x52C4,
+ 0x52C5, 0x52C6, 0x52C8, 0x52CA, 0x52CC, 0x52CD, 0x52CE, 0x52CF,
+ 0x52D1, 0x52D3, 0x52D4, 0x52D5, 0x52D7, 0x52D9, 0x52DA, 0x52DB,
+ 0x52DC, 0x52DD, 0x52DE, 0x52E0, 0x52E1, 0x52E2, 0x52E3, 0x52E5,
+ 0x52E6, 0x52E7, 0x52E8, 0x52E9, 0x52EA, 0x52EB, 0x52EC, 0x52ED,
+ 0x52EE, 0x52EF, 0x52F1, 0x52F2, 0x52F3, 0x52F4, 0x52F5, 0x52F6,
+ 0x52F7, 0x52F8, 0x52FB, 0x52FC, 0x52FD, 0x5301, 0x5302, 0x5303,
+ 0x5304, 0x5307, 0x5309, 0x530A, 0x530B, 0x530C, 0x530E,
+ /* GB 0x8540..0x857E */
+ 0x5311, 0x5312, 0x5313, 0x5314, 0x5318, 0x531B, 0x531C, 0x531E,
+ 0x531F, 0x5322, 0x5324, 0x5325, 0x5327, 0x5328, 0x5329, 0x532B,
+ 0x532C, 0x532D, 0x532F, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334,
+ 0x5335, 0x5336, 0x5337, 0x5338, 0x533C, 0x533D, 0x5340, 0x5342,
+ 0x5344, 0x5346, 0x534B, 0x534C, 0x534D, 0x5350, 0x5354, 0x5358,
+ 0x5359, 0x535B, 0x535D, 0x5365, 0x5368, 0x536A, 0x536C, 0x536D,
+ 0x5372, 0x5376, 0x5379, 0x537B, 0x537C, 0x537D, 0x537E, 0x5380,
+ 0x5381, 0x5383, 0x5387, 0x5388, 0x538A, 0x538E, 0x538F,
+ /* GB 0x8580..0x85FE */
+ 0x5390, 0x5391, 0x5392, 0x5393, 0x5394, 0x5396, 0x5397, 0x5399,
+ 0x539B, 0x539C, 0x539E, 0x53A0, 0x53A1, 0x53A4, 0x53A7, 0x53AA,
+ 0x53AB, 0x53AC, 0x53AD, 0x53AF, 0x53B0, 0x53B1, 0x53B2, 0x53B3,
+ 0x53B4, 0x53B5, 0x53B7, 0x53B8, 0x53B9, 0x53BA, 0x53BC, 0x53BD,
+ 0x53BE, 0x53C0, 0x53C3, 0x53C4, 0x53C5, 0x53C6, 0x53C7, 0x53CE,
+ 0x53CF, 0x53D0, 0x53D2, 0x53D3, 0x53D5, 0x53DA, 0x53DC, 0x53DD,
+ 0x53DE, 0x53E1, 0x53E2, 0x53E7, 0x53F4, 0x53FA, 0x53FE, 0x53FF,
+ 0x5400, 0x5402, 0x5405, 0x5407, 0x540B, 0x5414, 0x5418, 0x5419,
+ 0x541A, 0x541C, 0x5422, 0x5424, 0x5425, 0x542A, 0x5430, 0x5433,
+ 0x5436, 0x5437, 0x543A, 0x543D, 0x543F, 0x5441, 0x5442, 0x5444,
+ 0x5445, 0x5447, 0x5449, 0x544C, 0x544D, 0x544E, 0x544F, 0x5451,
+ 0x545A, 0x545D, 0x545E, 0x545F, 0x5460, 0x5461, 0x5463, 0x5465,
+ 0x5467, 0x5469, 0x546A, 0x546B, 0x546C, 0x546D, 0x546E, 0x546F,
+ 0x5470, 0x5474, 0x5479, 0x547A, 0x547E, 0x547F, 0x5481, 0x5483,
+ 0x5485, 0x5487, 0x5488, 0x5489, 0x548A, 0x548D, 0x5491, 0x5493,
+ 0x5497, 0x5498, 0x549C, 0x549E, 0x549F, 0x54A0, 0x54A1,
+ /* GB 0x8640..0x867E */
+ 0x54A2, 0x54A5, 0x54AE, 0x54B0, 0x54B2, 0x54B5, 0x54B6, 0x54B7,
+ 0x54B9, 0x54BA, 0x54BC, 0x54BE, 0x54C3, 0x54C5, 0x54CA, 0x54CB,
+ 0x54D6, 0x54D8, 0x54DB, 0x54E0, 0x54E1, 0x54E2, 0x54E3, 0x54E4,
+ 0x54EB, 0x54EC, 0x54EF, 0x54F0, 0x54F1, 0x54F4, 0x54F5, 0x54F6,
+ 0x54F7, 0x54F8, 0x54F9, 0x54FB, 0x54FE, 0x5500, 0x5502, 0x5503,
+ 0x5504, 0x5505, 0x5508, 0x550A, 0x550B, 0x550C, 0x550D, 0x550E,
+ 0x5512, 0x5513, 0x5515, 0x5516, 0x5517, 0x5518, 0x5519, 0x551A,
+ 0x551C, 0x551D, 0x551E, 0x551F, 0x5521, 0x5525, 0x5526,
+ /* GB 0x8680..0x86FE */
+ 0x5528, 0x5529, 0x552B, 0x552D, 0x5532, 0x5534, 0x5535, 0x5536,
+ 0x5538, 0x5539, 0x553A, 0x553B, 0x553D, 0x5540, 0x5542, 0x5545,
+ 0x5547, 0x5548, 0x554B, 0x554C, 0x554D, 0x554E, 0x554F, 0x5551,
+ 0x5552, 0x5553, 0x5554, 0x5557, 0x5558, 0x5559, 0x555A, 0x555B,
+ 0x555D, 0x555E, 0x555F, 0x5560, 0x5562, 0x5563, 0x5568, 0x5569,
+ 0x556B, 0x556F, 0x5570, 0x5571, 0x5572, 0x5573, 0x5574, 0x5579,
+ 0x557A, 0x557D, 0x557F, 0x5585, 0x5586, 0x558C, 0x558D, 0x558E,
+ 0x5590, 0x5592, 0x5593, 0x5595, 0x5596, 0x5597, 0x559A, 0x559B,
+ 0x559E, 0x55A0, 0x55A1, 0x55A2, 0x55A3, 0x55A4, 0x55A5, 0x55A6,
+ 0x55A8, 0x55A9, 0x55AA, 0x55AB, 0x55AC, 0x55AD, 0x55AE, 0x55AF,
+ 0x55B0, 0x55B2, 0x55B4, 0x55B6, 0x55B8, 0x55BA, 0x55BC, 0x55BF,
+ 0x55C0, 0x55C1, 0x55C2, 0x55C3, 0x55C6, 0x55C7, 0x55C8, 0x55CA,
+ 0x55CB, 0x55CE, 0x55CF, 0x55D0, 0x55D5, 0x55D7, 0x55D8, 0x55D9,
+ 0x55DA, 0x55DB, 0x55DE, 0x55E0, 0x55E2, 0x55E7, 0x55E9, 0x55ED,
+ 0x55EE, 0x55F0, 0x55F1, 0x55F4, 0x55F6, 0x55F8, 0x55F9, 0x55FA,
+ 0x55FB, 0x55FC, 0x55FF, 0x5602, 0x5603, 0x5604, 0x5605,
+ /* GB 0x8740..0x877E */
+ 0x5606, 0x5607, 0x560A, 0x560B, 0x560D, 0x5610, 0x5611, 0x5612,
+ 0x5613, 0x5614, 0x5615, 0x5616, 0x5617, 0x5619, 0x561A, 0x561C,
+ 0x561D, 0x5620, 0x5621, 0x5622, 0x5625, 0x5626, 0x5628, 0x5629,
+ 0x562A, 0x562B, 0x562E, 0x562F, 0x5630, 0x5633, 0x5635, 0x5637,
+ 0x5638, 0x563A, 0x563C, 0x563D, 0x563E, 0x5640, 0x5641, 0x5642,
+ 0x5643, 0x5644, 0x5645, 0x5646, 0x5647, 0x5648, 0x5649, 0x564A,
+ 0x564B, 0x564F, 0x5650, 0x5651, 0x5652, 0x5653, 0x5655, 0x5656,
+ 0x565A, 0x565B, 0x565D, 0x565E, 0x565F, 0x5660, 0x5661,
+ /* GB 0x8780..0x87FE */
+ 0x5663, 0x5665, 0x5666, 0x5667, 0x566D, 0x566E, 0x566F, 0x5670,
+ 0x5672, 0x5673, 0x5674, 0x5675, 0x5677, 0x5678, 0x5679, 0x567A,
+ 0x567D, 0x567E, 0x567F, 0x5680, 0x5681, 0x5682, 0x5683, 0x5684,
+ 0x5687, 0x5688, 0x5689, 0x568A, 0x568B, 0x568C, 0x568D, 0x5690,
+ 0x5691, 0x5692, 0x5694, 0x5695, 0x5696, 0x5697, 0x5698, 0x5699,
+ 0x569A, 0x569B, 0x569C, 0x569D, 0x569E, 0x569F, 0x56A0, 0x56A1,
+ 0x56A2, 0x56A4, 0x56A5, 0x56A6, 0x56A7, 0x56A8, 0x56A9, 0x56AA,
+ 0x56AB, 0x56AC, 0x56AD, 0x56AE, 0x56B0, 0x56B1, 0x56B2, 0x56B3,
+ 0x56B4, 0x56B5, 0x56B6, 0x56B8, 0x56B9, 0x56BA, 0x56BB, 0x56BD,
+ 0x56BE, 0x56BF, 0x56C0, 0x56C1, 0x56C2, 0x56C3, 0x56C4, 0x56C5,
+ 0x56C6, 0x56C7, 0x56C8, 0x56C9, 0x56CB, 0x56CC, 0x56CD, 0x56CE,
+ 0x56CF, 0x56D0, 0x56D1, 0x56D2, 0x56D3, 0x56D5, 0x56D6, 0x56D8,
+ 0x56D9, 0x56DC, 0x56E3, 0x56E5, 0x56E6, 0x56E7, 0x56E8, 0x56E9,
+ 0x56EA, 0x56EC, 0x56EE, 0x56EF, 0x56F2, 0x56F3, 0x56F6, 0x56F7,
+ 0x56F8, 0x56FB, 0x56FC, 0x5700, 0x5701, 0x5702, 0x5705, 0x5707,
+ 0x570B, 0x570C, 0x570D, 0x570E, 0x570F, 0x5710, 0x5711,
+ /* GB 0x8840..0x887E */
+ 0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717, 0x5718, 0x5719,
+ 0x571A, 0x571B, 0x571D, 0x571E, 0x5720, 0x5721, 0x5722, 0x5724,
+ 0x5725, 0x5726, 0x5727, 0x572B, 0x5731, 0x5732, 0x5734, 0x5735,
+ 0x5736, 0x5737, 0x5738, 0x573C, 0x573D, 0x573F, 0x5741, 0x5743,
+ 0x5744, 0x5745, 0x5746, 0x5748, 0x5749, 0x574B, 0x5752, 0x5753,
+ 0x5754, 0x5755, 0x5756, 0x5758, 0x5759, 0x5762, 0x5763, 0x5765,
+ 0x5767, 0x576C, 0x576E, 0x5770, 0x5771, 0x5772, 0x5774, 0x5775,
+ 0x5778, 0x5779, 0x577A, 0x577D, 0x577E, 0x577F, 0x5780,
+ /* GB 0x8880..0x88FE */
+ 0x5781, 0x5787, 0x5788, 0x5789, 0x578A, 0x578D, 0x578E, 0x578F,
+ 0x5790, 0x5791, 0x5794, 0x5795, 0x5796, 0x5797, 0x5798, 0x5799,
+ 0x579A, 0x579C, 0x579D, 0x579E, 0x579F, 0x57A5, 0x57A8, 0x57AA,
+ 0x57AC, 0x57AF, 0x57B0, 0x57B1, 0x57B3, 0x57B5, 0x57B6, 0x57B7,
+ 0x57B9, 0x57BA, 0x57BB, 0x57BC, 0x57BD, 0x57BE, 0x57BF, 0x57C0,
+ 0x57C1, 0x57C4, 0x57C5, 0x57C6, 0x57C7, 0x57C8, 0x57C9, 0x57CA,
+ 0x57CC, 0x57CD, 0x57D0, 0x57D1, 0x57D3, 0x57D6, 0x57D7, 0x57DB,
+ 0x57DC, 0x57DE, 0x57E1, 0x57E2, 0x57E3, 0x57E5, 0x57E6, 0x57E7,
+ 0x57E8, 0x57E9, 0x57EA, 0x57EB, 0x57EC, 0x57EE, 0x57F0, 0x57F1,
+ 0x57F2, 0x57F3, 0x57F5, 0x57F6, 0x57F7, 0x57FB, 0x57FC, 0x57FE,
+ 0x57FF, 0x5801, 0x5803, 0x5804, 0x5805, 0x5808, 0x5809, 0x580A,
+ 0x580C, 0x580E, 0x580F, 0x5810, 0x5812, 0x5813, 0x5814, 0x5816,
+ 0x5817, 0x5818, 0x581A, 0x581B, 0x581C, 0x581D, 0x581F, 0x5822,
+ 0x5823, 0x5825, 0x5826, 0x5827, 0x5828, 0x5829, 0x582B, 0x582C,
+ 0x582D, 0x582E, 0x582F, 0x5831, 0x5832, 0x5833, 0x5834, 0x5836,
+ 0x5837, 0x5838, 0x5839, 0x583A, 0x583B, 0x583C, 0x583D,
+ /* GB 0x8940..0x897E */
+ 0x583E, 0x583F, 0x5840, 0x5841, 0x5842, 0x5843, 0x5845, 0x5846,
+ 0x5847, 0x5848, 0x5849, 0x584A, 0x584B, 0x584E, 0x584F, 0x5850,
+ 0x5852, 0x5853, 0x5855, 0x5856, 0x5857, 0x5859, 0x585A, 0x585B,
+ 0x585C, 0x585D, 0x585F, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864,
+ 0x5866, 0x5867, 0x5868, 0x5869, 0x586A, 0x586D, 0x586E, 0x586F,
+ 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877,
+ 0x5878, 0x5879, 0x587A, 0x587B, 0x587C, 0x587D, 0x587F, 0x5882,
+ 0x5884, 0x5886, 0x5887, 0x5888, 0x588A, 0x588B, 0x588C,
+ /* GB 0x8980..0x89FE */
+ 0x588D, 0x588E, 0x588F, 0x5890, 0x5891, 0x5894, 0x5895, 0x5896,
+ 0x5897, 0x5898, 0x589B, 0x589C, 0x589D, 0x58A0, 0x58A1, 0x58A2,
+ 0x58A3, 0x58A4, 0x58A5, 0x58A6, 0x58A7, 0x58AA, 0x58AB, 0x58AC,
+ 0x58AD, 0x58AE, 0x58AF, 0x58B0, 0x58B1, 0x58B2, 0x58B3, 0x58B4,
+ 0x58B5, 0x58B6, 0x58B7, 0x58B8, 0x58B9, 0x58BA, 0x58BB, 0x58BD,
+ 0x58BE, 0x58BF, 0x58C0, 0x58C2, 0x58C3, 0x58C4, 0x58C6, 0x58C7,
+ 0x58C8, 0x58C9, 0x58CA, 0x58CB, 0x58CC, 0x58CD, 0x58CE, 0x58CF,
+ 0x58D0, 0x58D2, 0x58D3, 0x58D4, 0x58D6, 0x58D7, 0x58D8, 0x58D9,
+ 0x58DA, 0x58DB, 0x58DC, 0x58DD, 0x58DE, 0x58DF, 0x58E0, 0x58E1,
+ 0x58E2, 0x58E3, 0x58E5, 0x58E6, 0x58E7, 0x58E8, 0x58E9, 0x58EA,
+ 0x58ED, 0x58EF, 0x58F1, 0x58F2, 0x58F4, 0x58F5, 0x58F7, 0x58F8,
+ 0x58FA, 0x58FB, 0x58FC, 0x58FD, 0x58FE, 0x58FF, 0x5900, 0x5901,
+ 0x5903, 0x5905, 0x5906, 0x5908, 0x5909, 0x590A, 0x590B, 0x590C,
+ 0x590E, 0x5910, 0x5911, 0x5912, 0x5913, 0x5917, 0x5918, 0x591B,
+ 0x591D, 0x591E, 0x5920, 0x5921, 0x5922, 0x5923, 0x5926, 0x5928,
+ 0x592C, 0x5930, 0x5932, 0x5933, 0x5935, 0x5936, 0x593B,
+ /* GB 0x8A40..0x8A7E */
+ 0x593D, 0x593E, 0x593F, 0x5940, 0x5943, 0x5945, 0x5946, 0x594A,
+ 0x594C, 0x594D, 0x5950, 0x5952, 0x5953, 0x5959, 0x595B, 0x595C,
+ 0x595D, 0x595E, 0x595F, 0x5961, 0x5963, 0x5964, 0x5966, 0x5967,
+ 0x5968, 0x5969, 0x596A, 0x596B, 0x596C, 0x596D, 0x596E, 0x596F,
+ 0x5970, 0x5971, 0x5972, 0x5975, 0x5977, 0x597A, 0x597B, 0x597C,
+ 0x597E, 0x597F, 0x5980, 0x5985, 0x5989, 0x598B, 0x598C, 0x598E,
+ 0x598F, 0x5990, 0x5991, 0x5994, 0x5995, 0x5998, 0x599A, 0x599B,
+ 0x599C, 0x599D, 0x599F, 0x59A0, 0x59A1, 0x59A2, 0x59A6,
+ /* GB 0x8A80..0x8AFE */
+ 0x59A7, 0x59AC, 0x59AD, 0x59B0, 0x59B1, 0x59B3, 0x59B4, 0x59B5,
+ 0x59B6, 0x59B7, 0x59B8, 0x59BA, 0x59BC, 0x59BD, 0x59BF, 0x59C0,
+ 0x59C1, 0x59C2, 0x59C3, 0x59C4, 0x59C5, 0x59C7, 0x59C8, 0x59C9,
+ 0x59CC, 0x59CD, 0x59CE, 0x59CF, 0x59D5, 0x59D6, 0x59D9, 0x59DB,
+ 0x59DE, 0x59DF, 0x59E0, 0x59E1, 0x59E2, 0x59E4, 0x59E6, 0x59E7,
+ 0x59E9, 0x59EA, 0x59EB, 0x59ED, 0x59EE, 0x59EF, 0x59F0, 0x59F1,
+ 0x59F2, 0x59F3, 0x59F4, 0x59F5, 0x59F6, 0x59F7, 0x59F8, 0x59FA,
+ 0x59FC, 0x59FD, 0x59FE, 0x5A00, 0x5A02, 0x5A0A, 0x5A0B, 0x5A0D,
+ 0x5A0E, 0x5A0F, 0x5A10, 0x5A12, 0x5A14, 0x5A15, 0x5A16, 0x5A17,
+ 0x5A19, 0x5A1A, 0x5A1B, 0x5A1D, 0x5A1E, 0x5A21, 0x5A22, 0x5A24,
+ 0x5A26, 0x5A27, 0x5A28, 0x5A2A, 0x5A2B, 0x5A2C, 0x5A2D, 0x5A2E,
+ 0x5A2F, 0x5A30, 0x5A33, 0x5A35, 0x5A37, 0x5A38, 0x5A39, 0x5A3A,
+ 0x5A3B, 0x5A3D, 0x5A3E, 0x5A3F, 0x5A41, 0x5A42, 0x5A43, 0x5A44,
+ 0x5A45, 0x5A47, 0x5A48, 0x5A4B, 0x5A4C, 0x5A4D, 0x5A4E, 0x5A4F,
+ 0x5A50, 0x5A51, 0x5A52, 0x5A53, 0x5A54, 0x5A56, 0x5A57, 0x5A58,
+ 0x5A59, 0x5A5B, 0x5A5C, 0x5A5D, 0x5A5E, 0x5A5F, 0x5A60,
+ /* GB 0x8B40..0x8B7E */
+ 0x5A61, 0x5A63, 0x5A64, 0x5A65, 0x5A66, 0x5A68, 0x5A69, 0x5A6B,
+ 0x5A6C, 0x5A6D, 0x5A6E, 0x5A6F, 0x5A70, 0x5A71, 0x5A72, 0x5A73,
+ 0x5A78, 0x5A79, 0x5A7B, 0x5A7C, 0x5A7D, 0x5A7E, 0x5A80, 0x5A81,
+ 0x5A82, 0x5A83, 0x5A84, 0x5A85, 0x5A86, 0x5A87, 0x5A88, 0x5A89,
+ 0x5A8A, 0x5A8B, 0x5A8C, 0x5A8D, 0x5A8E, 0x5A8F, 0x5A90, 0x5A91,
+ 0x5A93, 0x5A94, 0x5A95, 0x5A96, 0x5A97, 0x5A98, 0x5A99, 0x5A9C,
+ 0x5A9D, 0x5A9E, 0x5A9F, 0x5AA0, 0x5AA1, 0x5AA2, 0x5AA3, 0x5AA4,
+ 0x5AA5, 0x5AA6, 0x5AA7, 0x5AA8, 0x5AA9, 0x5AAB, 0x5AAC,
+ /* GB 0x8B80..0x8BFE */
+ 0x5AAD, 0x5AAE, 0x5AAF, 0x5AB0, 0x5AB1, 0x5AB4, 0x5AB6, 0x5AB7,
+ 0x5AB9, 0x5ABA, 0x5ABB, 0x5ABC, 0x5ABD, 0x5ABF, 0x5AC0, 0x5AC3,
+ 0x5AC4, 0x5AC5, 0x5AC6, 0x5AC7, 0x5AC8, 0x5ACA, 0x5ACB, 0x5ACD,
+ 0x5ACE, 0x5ACF, 0x5AD0, 0x5AD1, 0x5AD3, 0x5AD5, 0x5AD7, 0x5AD9,
+ 0x5ADA, 0x5ADB, 0x5ADD, 0x5ADE, 0x5ADF, 0x5AE2, 0x5AE4, 0x5AE5,
+ 0x5AE7, 0x5AE8, 0x5AEA, 0x5AEC, 0x5AED, 0x5AEE, 0x5AEF, 0x5AF0,
+ 0x5AF2, 0x5AF3, 0x5AF4, 0x5AF5, 0x5AF6, 0x5AF7, 0x5AF8, 0x5AF9,
+ 0x5AFA, 0x5AFB, 0x5AFC, 0x5AFD, 0x5AFE, 0x5AFF, 0x5B00, 0x5B01,
+ 0x5B02, 0x5B03, 0x5B04, 0x5B05, 0x5B06, 0x5B07, 0x5B08, 0x5B0A,
+ 0x5B0B, 0x5B0C, 0x5B0D, 0x5B0E, 0x5B0F, 0x5B10, 0x5B11, 0x5B12,
+ 0x5B13, 0x5B14, 0x5B15, 0x5B18, 0x5B19, 0x5B1A, 0x5B1B, 0x5B1C,
+ 0x5B1D, 0x5B1E, 0x5B1F, 0x5B20, 0x5B21, 0x5B22, 0x5B23, 0x5B24,
+ 0x5B25, 0x5B26, 0x5B27, 0x5B28, 0x5B29, 0x5B2A, 0x5B2B, 0x5B2C,
+ 0x5B2D, 0x5B2E, 0x5B2F, 0x5B30, 0x5B31, 0x5B33, 0x5B35, 0x5B36,
+ 0x5B38, 0x5B39, 0x5B3A, 0x5B3B, 0x5B3C, 0x5B3D, 0x5B3E, 0x5B3F,
+ 0x5B41, 0x5B42, 0x5B43, 0x5B44, 0x5B45, 0x5B46, 0x5B47,
+ /* GB 0x8C40..0x8C7E */
+ 0x5B48, 0x5B49, 0x5B4A, 0x5B4B, 0x5B4C, 0x5B4D, 0x5B4E, 0x5B4F,
+ 0x5B52, 0x5B56, 0x5B5E, 0x5B60, 0x5B61, 0x5B67, 0x5B68, 0x5B6B,
+ 0x5B6D, 0x5B6E, 0x5B6F, 0x5B72, 0x5B74, 0x5B76, 0x5B77, 0x5B78,
+ 0x5B79, 0x5B7B, 0x5B7C, 0x5B7E, 0x5B7F, 0x5B82, 0x5B86, 0x5B8A,
+ 0x5B8D, 0x5B8E, 0x5B90, 0x5B91, 0x5B92, 0x5B94, 0x5B96, 0x5B9F,
+ 0x5BA7, 0x5BA8, 0x5BA9, 0x5BAC, 0x5BAD, 0x5BAE, 0x5BAF, 0x5BB1,
+ 0x5BB2, 0x5BB7, 0x5BBA, 0x5BBB, 0x5BBC, 0x5BC0, 0x5BC1, 0x5BC3,
+ 0x5BC8, 0x5BC9, 0x5BCA, 0x5BCB, 0x5BCD, 0x5BCE, 0x5BCF,
+ /* GB 0x8C80..0x8CFE */
+ 0x5BD1, 0x5BD4, 0x5BD5, 0x5BD6, 0x5BD7, 0x5BD8, 0x5BD9, 0x5BDA,
+ 0x5BDB, 0x5BDC, 0x5BE0, 0x5BE2, 0x5BE3, 0x5BE6, 0x5BE7, 0x5BE9,
+ 0x5BEA, 0x5BEB, 0x5BEC, 0x5BED, 0x5BEF, 0x5BF1, 0x5BF2, 0x5BF3,
+ 0x5BF4, 0x5BF5, 0x5BF6, 0x5BF7, 0x5BFD, 0x5BFE, 0x5C00, 0x5C02,
+ 0x5C03, 0x5C05, 0x5C07, 0x5C08, 0x5C0B, 0x5C0C, 0x5C0D, 0x5C0E,
+ 0x5C10, 0x5C12, 0x5C13, 0x5C17, 0x5C19, 0x5C1B, 0x5C1E, 0x5C1F,
+ 0x5C20, 0x5C21, 0x5C23, 0x5C26, 0x5C28, 0x5C29, 0x5C2A, 0x5C2B,
+ 0x5C2D, 0x5C2E, 0x5C2F, 0x5C30, 0x5C32, 0x5C33, 0x5C35, 0x5C36,
+ 0x5C37, 0x5C43, 0x5C44, 0x5C46, 0x5C47, 0x5C4C, 0x5C4D, 0x5C52,
+ 0x5C53, 0x5C54, 0x5C56, 0x5C57, 0x5C58, 0x5C5A, 0x5C5B, 0x5C5C,
+ 0x5C5D, 0x5C5F, 0x5C62, 0x5C64, 0x5C67, 0x5C68, 0x5C69, 0x5C6A,
+ 0x5C6B, 0x5C6C, 0x5C6D, 0x5C70, 0x5C72, 0x5C73, 0x5C74, 0x5C75,
+ 0x5C76, 0x5C77, 0x5C78, 0x5C7B, 0x5C7C, 0x5C7D, 0x5C7E, 0x5C80,
+ 0x5C83, 0x5C84, 0x5C85, 0x5C86, 0x5C87, 0x5C89, 0x5C8A, 0x5C8B,
+ 0x5C8E, 0x5C8F, 0x5C92, 0x5C93, 0x5C95, 0x5C9D, 0x5C9E, 0x5C9F,
+ 0x5CA0, 0x5CA1, 0x5CA4, 0x5CA5, 0x5CA6, 0x5CA7, 0x5CA8,
+ /* GB 0x8D40..0x8D7E */
+ 0x5CAA, 0x5CAE, 0x5CAF, 0x5CB0, 0x5CB2, 0x5CB4, 0x5CB6, 0x5CB9,
+ 0x5CBA, 0x5CBB, 0x5CBC, 0x5CBE, 0x5CC0, 0x5CC2, 0x5CC3, 0x5CC5,
+ 0x5CC6, 0x5CC7, 0x5CC8, 0x5CC9, 0x5CCA, 0x5CCC, 0x5CCD, 0x5CCE,
+ 0x5CCF, 0x5CD0, 0x5CD1, 0x5CD3, 0x5CD4, 0x5CD5, 0x5CD6, 0x5CD7,
+ 0x5CD8, 0x5CDA, 0x5CDB, 0x5CDC, 0x5CDD, 0x5CDE, 0x5CDF, 0x5CE0,
+ 0x5CE2, 0x5CE3, 0x5CE7, 0x5CE9, 0x5CEB, 0x5CEC, 0x5CEE, 0x5CEF,
+ 0x5CF1, 0x5CF2, 0x5CF3, 0x5CF4, 0x5CF5, 0x5CF6, 0x5CF7, 0x5CF8,
+ 0x5CF9, 0x5CFA, 0x5CFC, 0x5CFD, 0x5CFE, 0x5CFF, 0x5D00,
+ /* GB 0x8D80..0x8DFE */
+ 0x5D01, 0x5D04, 0x5D05, 0x5D08, 0x5D09, 0x5D0A, 0x5D0B, 0x5D0C,
+ 0x5D0D, 0x5D0F, 0x5D10, 0x5D11, 0x5D12, 0x5D13, 0x5D15, 0x5D17,
+ 0x5D18, 0x5D19, 0x5D1A, 0x5D1C, 0x5D1D, 0x5D1F, 0x5D20, 0x5D21,
+ 0x5D22, 0x5D23, 0x5D25, 0x5D28, 0x5D2A, 0x5D2B, 0x5D2C, 0x5D2F,
+ 0x5D30, 0x5D31, 0x5D32, 0x5D33, 0x5D35, 0x5D36, 0x5D37, 0x5D38,
+ 0x5D39, 0x5D3A, 0x5D3B, 0x5D3C, 0x5D3F, 0x5D40, 0x5D41, 0x5D42,
+ 0x5D43, 0x5D44, 0x5D45, 0x5D46, 0x5D48, 0x5D49, 0x5D4D, 0x5D4E,
+ 0x5D4F, 0x5D50, 0x5D51, 0x5D52, 0x5D53, 0x5D54, 0x5D55, 0x5D56,
+ 0x5D57, 0x5D59, 0x5D5A, 0x5D5C, 0x5D5E, 0x5D5F, 0x5D60, 0x5D61,
+ 0x5D62, 0x5D63, 0x5D64, 0x5D65, 0x5D66, 0x5D67, 0x5D68, 0x5D6A,
+ 0x5D6D, 0x5D6E, 0x5D70, 0x5D71, 0x5D72, 0x5D73, 0x5D75, 0x5D76,
+ 0x5D77, 0x5D78, 0x5D79, 0x5D7A, 0x5D7B, 0x5D7C, 0x5D7D, 0x5D7E,
+ 0x5D7F, 0x5D80, 0x5D81, 0x5D83, 0x5D84, 0x5D85, 0x5D86, 0x5D87,
+ 0x5D88, 0x5D89, 0x5D8A, 0x5D8B, 0x5D8C, 0x5D8D, 0x5D8E, 0x5D8F,
+ 0x5D90, 0x5D91, 0x5D92, 0x5D93, 0x5D94, 0x5D95, 0x5D96, 0x5D97,
+ 0x5D98, 0x5D9A, 0x5D9B, 0x5D9C, 0x5D9E, 0x5D9F, 0x5DA0,
+ /* GB 0x8E40..0x8E7E */
+ 0x5DA1, 0x5DA2, 0x5DA3, 0x5DA4, 0x5DA5, 0x5DA6, 0x5DA7, 0x5DA8,
+ 0x5DA9, 0x5DAA, 0x5DAB, 0x5DAC, 0x5DAD, 0x5DAE, 0x5DAF, 0x5DB0,
+ 0x5DB1, 0x5DB2, 0x5DB3, 0x5DB4, 0x5DB5, 0x5DB6, 0x5DB8, 0x5DB9,
+ 0x5DBA, 0x5DBB, 0x5DBC, 0x5DBD, 0x5DBE, 0x5DBF, 0x5DC0, 0x5DC1,
+ 0x5DC2, 0x5DC3, 0x5DC4, 0x5DC6, 0x5DC7, 0x5DC8, 0x5DC9, 0x5DCA,
+ 0x5DCB, 0x5DCC, 0x5DCE, 0x5DCF, 0x5DD0, 0x5DD1, 0x5DD2, 0x5DD3,
+ 0x5DD4, 0x5DD5, 0x5DD6, 0x5DD7, 0x5DD8, 0x5DD9, 0x5DDA, 0x5DDC,
+ 0x5DDF, 0x5DE0, 0x5DE3, 0x5DE4, 0x5DEA, 0x5DEC, 0x5DED,
+ /* GB 0x8E80..0x8EFE */
+ 0x5DF0, 0x5DF5, 0x5DF6, 0x5DF8, 0x5DF9, 0x5DFA, 0x5DFB, 0x5DFC,
+ 0x5DFF, 0x5E00, 0x5E04, 0x5E07, 0x5E09, 0x5E0A, 0x5E0B, 0x5E0D,
+ 0x5E0E, 0x5E12, 0x5E13, 0x5E17, 0x5E1E, 0x5E1F, 0x5E20, 0x5E21,
+ 0x5E22, 0x5E23, 0x5E24, 0x5E25, 0x5E28, 0x5E29, 0x5E2A, 0x5E2B,
+ 0x5E2C, 0x5E2F, 0x5E30, 0x5E32, 0x5E33, 0x5E34, 0x5E35, 0x5E36,
+ 0x5E39, 0x5E3A, 0x5E3E, 0x5E3F, 0x5E40, 0x5E41, 0x5E43, 0x5E46,
+ 0x5E47, 0x5E48, 0x5E49, 0x5E4A, 0x5E4B, 0x5E4D, 0x5E4E, 0x5E4F,
+ 0x5E50, 0x5E51, 0x5E52, 0x5E53, 0x5E56, 0x5E57, 0x5E58, 0x5E59,
+ 0x5E5A, 0x5E5C, 0x5E5D, 0x5E5F, 0x5E60, 0x5E63, 0x5E64, 0x5E65,
+ 0x5E66, 0x5E67, 0x5E68, 0x5E69, 0x5E6A, 0x5E6B, 0x5E6C, 0x5E6D,
+ 0x5E6E, 0x5E6F, 0x5E70, 0x5E71, 0x5E75, 0x5E77, 0x5E79, 0x5E7E,
+ 0x5E81, 0x5E82, 0x5E83, 0x5E85, 0x5E88, 0x5E89, 0x5E8C, 0x5E8D,
+ 0x5E8E, 0x5E92, 0x5E98, 0x5E9B, 0x5E9D, 0x5EA1, 0x5EA2, 0x5EA3,
+ 0x5EA4, 0x5EA8, 0x5EA9, 0x5EAA, 0x5EAB, 0x5EAC, 0x5EAE, 0x5EAF,
+ 0x5EB0, 0x5EB1, 0x5EB2, 0x5EB4, 0x5EBA, 0x5EBB, 0x5EBC, 0x5EBD,
+ 0x5EBF, 0x5EC0, 0x5EC1, 0x5EC2, 0x5EC3, 0x5EC4, 0x5EC5,
+ /* GB 0x8F40..0x8F7E */
+ 0x5EC6, 0x5EC7, 0x5EC8, 0x5ECB, 0x5ECC, 0x5ECD, 0x5ECE, 0x5ECF,
+ 0x5ED0, 0x5ED4, 0x5ED5, 0x5ED7, 0x5ED8, 0x5ED9, 0x5EDA, 0x5EDC,
+ 0x5EDD, 0x5EDE, 0x5EDF, 0x5EE0, 0x5EE1, 0x5EE2, 0x5EE3, 0x5EE4,
+ 0x5EE5, 0x5EE6, 0x5EE7, 0x5EE9, 0x5EEB, 0x5EEC, 0x5EED, 0x5EEE,
+ 0x5EEF, 0x5EF0, 0x5EF1, 0x5EF2, 0x5EF3, 0x5EF5, 0x5EF8, 0x5EF9,
+ 0x5EFB, 0x5EFC, 0x5EFD, 0x5F05, 0x5F06, 0x5F07, 0x5F09, 0x5F0C,
+ 0x5F0D, 0x5F0E, 0x5F10, 0x5F12, 0x5F14, 0x5F16, 0x5F19, 0x5F1A,
+ 0x5F1C, 0x5F1D, 0x5F1E, 0x5F21, 0x5F22, 0x5F23, 0x5F24,
+ /* GB 0x8F80..0x8FFE */
+ 0x5F28, 0x5F2B, 0x5F2C, 0x5F2E, 0x5F30, 0x5F32, 0x5F33, 0x5F34,
+ 0x5F35, 0x5F36, 0x5F37, 0x5F38, 0x5F3B, 0x5F3D, 0x5F3E, 0x5F3F,
+ 0x5F41, 0x5F42, 0x5F43, 0x5F44, 0x5F45, 0x5F46, 0x5F47, 0x5F48,
+ 0x5F49, 0x5F4A, 0x5F4B, 0x5F4C, 0x5F4D, 0x5F4E, 0x5F4F, 0x5F51,
+ 0x5F54, 0x5F59, 0x5F5A, 0x5F5B, 0x5F5C, 0x5F5E, 0x5F5F, 0x5F60,
+ 0x5F63, 0x5F65, 0x5F67, 0x5F68, 0x5F6B, 0x5F6E, 0x5F6F, 0x5F72,
+ 0x5F74, 0x5F75, 0x5F76, 0x5F78, 0x5F7A, 0x5F7D, 0x5F7E, 0x5F7F,
+ 0x5F83, 0x5F86, 0x5F8D, 0x5F8E, 0x5F8F, 0x5F91, 0x5F93, 0x5F94,
+ 0x5F96, 0x5F9A, 0x5F9B, 0x5F9D, 0x5F9E, 0x5F9F, 0x5FA0, 0x5FA2,
+ 0x5FA3, 0x5FA4, 0x5FA5, 0x5FA6, 0x5FA7, 0x5FA9, 0x5FAB, 0x5FAC,
+ 0x5FAF, 0x5FB0, 0x5FB1, 0x5FB2, 0x5FB3, 0x5FB4, 0x5FB6, 0x5FB8,
+ 0x5FB9, 0x5FBA, 0x5FBB, 0x5FBE, 0x5FBF, 0x5FC0, 0x5FC1, 0x5FC2,
+ 0x5FC7, 0x5FC8, 0x5FCA, 0x5FCB, 0x5FCE, 0x5FD3, 0x5FD4, 0x5FD5,
+ 0x5FDA, 0x5FDB, 0x5FDC, 0x5FDE, 0x5FDF, 0x5FE2, 0x5FE3, 0x5FE5,
+ 0x5FE6, 0x5FE8, 0x5FE9, 0x5FEC, 0x5FEF, 0x5FF0, 0x5FF2, 0x5FF3,
+ 0x5FF4, 0x5FF6, 0x5FF7, 0x5FF9, 0x5FFA, 0x5FFC, 0x6007,
+ /* GB 0x9040..0x907E */
+ 0x6008, 0x6009, 0x600B, 0x600C, 0x6010, 0x6011, 0x6013, 0x6017,
+ 0x6018, 0x601A, 0x601E, 0x601F, 0x6022, 0x6023, 0x6024, 0x602C,
+ 0x602D, 0x602E, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6036,
+ 0x6037, 0x6038, 0x6039, 0x603A, 0x603D, 0x603E, 0x6040, 0x6044,
+ 0x6045, 0x6046, 0x6047, 0x6048, 0x6049, 0x604A, 0x604C, 0x604E,
+ 0x604F, 0x6051, 0x6053, 0x6054, 0x6056, 0x6057, 0x6058, 0x605B,
+ 0x605C, 0x605E, 0x605F, 0x6060, 0x6061, 0x6065, 0x6066, 0x606E,
+ 0x6071, 0x6072, 0x6074, 0x6075, 0x6077, 0x607E, 0x6080,
+ /* GB 0x9080..0x90FE */
+ 0x6081, 0x6082, 0x6085, 0x6086, 0x6087, 0x6088, 0x608A, 0x608B,
+ 0x608E, 0x608F, 0x6090, 0x6091, 0x6093, 0x6095, 0x6097, 0x6098,
+ 0x6099, 0x609C, 0x609E, 0x60A1, 0x60A2, 0x60A4, 0x60A5, 0x60A7,
+ 0x60A9, 0x60AA, 0x60AE, 0x60B0, 0x60B3, 0x60B5, 0x60B6, 0x60B7,
+ 0x60B9, 0x60BA, 0x60BD, 0x60BE, 0x60BF, 0x60C0, 0x60C1, 0x60C2,
+ 0x60C3, 0x60C4, 0x60C7, 0x60C8, 0x60C9, 0x60CC, 0x60CD, 0x60CE,
+ 0x60CF, 0x60D0, 0x60D2, 0x60D3, 0x60D4, 0x60D6, 0x60D7, 0x60D9,
+ 0x60DB, 0x60DE, 0x60E1, 0x60E2, 0x60E3, 0x60E4, 0x60E5, 0x60EA,
+ 0x60F1, 0x60F2, 0x60F5, 0x60F7, 0x60F8, 0x60FB, 0x60FC, 0x60FD,
+ 0x60FE, 0x60FF, 0x6102, 0x6103, 0x6104, 0x6105, 0x6107, 0x610A,
+ 0x610B, 0x610C, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6116,
+ 0x6117, 0x6118, 0x6119, 0x611B, 0x611C, 0x611D, 0x611E, 0x6121,
+ 0x6122, 0x6125, 0x6128, 0x6129, 0x612A, 0x612C, 0x612D, 0x612E,
+ 0x612F, 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136,
+ 0x6137, 0x6138, 0x6139, 0x613A, 0x613B, 0x613C, 0x613D, 0x613E,
+ 0x6140, 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146,
+ /* GB 0x9140..0x917E */
+ 0x6147, 0x6149, 0x614B, 0x614D, 0x614F, 0x6150, 0x6152, 0x6153,
+ 0x6154, 0x6156, 0x6157, 0x6158, 0x6159, 0x615A, 0x615B, 0x615C,
+ 0x615E, 0x615F, 0x6160, 0x6161, 0x6163, 0x6164, 0x6165, 0x6166,
+ 0x6169, 0x616A, 0x616B, 0x616C, 0x616D, 0x616E, 0x616F, 0x6171,
+ 0x6172, 0x6173, 0x6174, 0x6176, 0x6178, 0x6179, 0x617A, 0x617B,
+ 0x617C, 0x617D, 0x617E, 0x617F, 0x6180, 0x6181, 0x6182, 0x6183,
+ 0x6184, 0x6185, 0x6186, 0x6187, 0x6188, 0x6189, 0x618A, 0x618C,
+ 0x618D, 0x618F, 0x6190, 0x6191, 0x6192, 0x6193, 0x6195,
+ /* GB 0x9180..0x91FE */
+ 0x6196, 0x6197, 0x6198, 0x6199, 0x619A, 0x619B, 0x619C, 0x619E,
+ 0x619F, 0x61A0, 0x61A1, 0x61A2, 0x61A3, 0x61A4, 0x61A5, 0x61A6,
+ 0x61AA, 0x61AB, 0x61AD, 0x61AE, 0x61AF, 0x61B0, 0x61B1, 0x61B2,
+ 0x61B3, 0x61B4, 0x61B5, 0x61B6, 0x61B8, 0x61B9, 0x61BA, 0x61BB,
+ 0x61BC, 0x61BD, 0x61BF, 0x61C0, 0x61C1, 0x61C3, 0x61C4, 0x61C5,
+ 0x61C6, 0x61C7, 0x61C9, 0x61CC, 0x61CD, 0x61CE, 0x61CF, 0x61D0,
+ 0x61D3, 0x61D5, 0x61D6, 0x61D7, 0x61D8, 0x61D9, 0x61DA, 0x61DB,
+ 0x61DC, 0x61DD, 0x61DE, 0x61DF, 0x61E0, 0x61E1, 0x61E2, 0x61E3,
+ 0x61E4, 0x61E5, 0x61E7, 0x61E8, 0x61E9, 0x61EA, 0x61EB, 0x61EC,
+ 0x61ED, 0x61EE, 0x61EF, 0x61F0, 0x61F1, 0x61F2, 0x61F3, 0x61F4,
+ 0x61F6, 0x61F7, 0x61F8, 0x61F9, 0x61FA, 0x61FB, 0x61FC, 0x61FD,
+ 0x61FE, 0x6200, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6207,
+ 0x6209, 0x6213, 0x6214, 0x6219, 0x621C, 0x621D, 0x621E, 0x6220,
+ 0x6223, 0x6226, 0x6227, 0x6228, 0x6229, 0x622B, 0x622D, 0x622F,
+ 0x6230, 0x6231, 0x6232, 0x6235, 0x6236, 0x6238, 0x6239, 0x623A,
+ 0x623B, 0x623C, 0x6242, 0x6244, 0x6245, 0x6246, 0x624A,
+ /* GB 0x9240..0x927E */
+ 0x624F, 0x6250, 0x6255, 0x6256, 0x6257, 0x6259, 0x625A, 0x625C,
+ 0x625D, 0x625E, 0x625F, 0x6260, 0x6261, 0x6262, 0x6264, 0x6265,
+ 0x6268, 0x6271, 0x6272, 0x6274, 0x6275, 0x6277, 0x6278, 0x627A,
+ 0x627B, 0x627D, 0x6281, 0x6282, 0x6283, 0x6285, 0x6286, 0x6287,
+ 0x6288, 0x628B, 0x628C, 0x628D, 0x628E, 0x628F, 0x6290, 0x6294,
+ 0x6299, 0x629C, 0x629D, 0x629E, 0x62A3, 0x62A6, 0x62A7, 0x62A9,
+ 0x62AA, 0x62AD, 0x62AE, 0x62AF, 0x62B0, 0x62B2, 0x62B3, 0x62B4,
+ 0x62B6, 0x62B7, 0x62B8, 0x62BA, 0x62BE, 0x62C0, 0x62C1,
+ /* GB 0x9280..0x92FE */
+ 0x62C3, 0x62CB, 0x62CF, 0x62D1, 0x62D5, 0x62DD, 0x62DE, 0x62E0,
+ 0x62E1, 0x62E4, 0x62EA, 0x62EB, 0x62F0, 0x62F2, 0x62F5, 0x62F8,
+ 0x62F9, 0x62FA, 0x62FB, 0x6300, 0x6303, 0x6304, 0x6305, 0x6306,
+ 0x630A, 0x630B, 0x630C, 0x630D, 0x630F, 0x6310, 0x6312, 0x6313,
+ 0x6314, 0x6315, 0x6317, 0x6318, 0x6319, 0x631C, 0x6326, 0x6327,
+ 0x6329, 0x632C, 0x632D, 0x632E, 0x6330, 0x6331, 0x6333, 0x6334,
+ 0x6335, 0x6336, 0x6337, 0x6338, 0x633B, 0x633C, 0x633E, 0x633F,
+ 0x6340, 0x6341, 0x6344, 0x6347, 0x6348, 0x634A, 0x6351, 0x6352,
+ 0x6353, 0x6354, 0x6356, 0x6357, 0x6358, 0x6359, 0x635A, 0x635B,
+ 0x635C, 0x635D, 0x6360, 0x6364, 0x6365, 0x6366, 0x6368, 0x636A,
+ 0x636B, 0x636C, 0x636F, 0x6370, 0x6372, 0x6373, 0x6374, 0x6375,
+ 0x6378, 0x6379, 0x637C, 0x637D, 0x637E, 0x637F, 0x6381, 0x6383,
+ 0x6384, 0x6385, 0x6386, 0x638B, 0x638D, 0x6391, 0x6393, 0x6394,
+ 0x6395, 0x6397, 0x6399, 0x639A, 0x639B, 0x639C, 0x639D, 0x639E,
+ 0x639F, 0x63A1, 0x63A4, 0x63A6, 0x63AB, 0x63AF, 0x63B1, 0x63B2,
+ 0x63B5, 0x63B6, 0x63B9, 0x63BB, 0x63BD, 0x63BF, 0x63C0,
+ /* GB 0x9340..0x937E */
+ 0x63C1, 0x63C2, 0x63C3, 0x63C5, 0x63C7, 0x63C8, 0x63CA, 0x63CB,
+ 0x63CC, 0x63D1, 0x63D3, 0x63D4, 0x63D5, 0x63D7, 0x63D8, 0x63D9,
+ 0x63DA, 0x63DB, 0x63DC, 0x63DD, 0x63DF, 0x63E2, 0x63E4, 0x63E5,
+ 0x63E6, 0x63E7, 0x63E8, 0x63EB, 0x63EC, 0x63EE, 0x63EF, 0x63F0,
+ 0x63F1, 0x63F3, 0x63F5, 0x63F7, 0x63F9, 0x63FA, 0x63FB, 0x63FC,
+ 0x63FE, 0x6403, 0x6404, 0x6406, 0x6407, 0x6408, 0x6409, 0x640A,
+ 0x640D, 0x640E, 0x6411, 0x6412, 0x6415, 0x6416, 0x6417, 0x6418,
+ 0x6419, 0x641A, 0x641D, 0x641F, 0x6422, 0x6423, 0x6424,
+ /* GB 0x9380..0x93FE */
+ 0x6425, 0x6427, 0x6428, 0x6429, 0x642B, 0x642E, 0x642F, 0x6430,
+ 0x6431, 0x6432, 0x6433, 0x6435, 0x6436, 0x6437, 0x6438, 0x6439,
+ 0x643B, 0x643C, 0x643E, 0x6440, 0x6442, 0x6443, 0x6449, 0x644B,
+ 0x644C, 0x644D, 0x644E, 0x644F, 0x6450, 0x6451, 0x6453, 0x6455,
+ 0x6456, 0x6457, 0x6459, 0x645A, 0x645B, 0x645C, 0x645D, 0x645F,
+ 0x6460, 0x6461, 0x6462, 0x6463, 0x6464, 0x6465, 0x6466, 0x6468,
+ 0x646A, 0x646B, 0x646C, 0x646E, 0x646F, 0x6470, 0x6471, 0x6472,
+ 0x6473, 0x6474, 0x6475, 0x6476, 0x6477, 0x647B, 0x647C, 0x647D,
+ 0x647E, 0x647F, 0x6480, 0x6481, 0x6483, 0x6486, 0x6488, 0x6489,
+ 0x648A, 0x648B, 0x648C, 0x648D, 0x648E, 0x648F, 0x6490, 0x6493,
+ 0x6494, 0x6497, 0x6498, 0x649A, 0x649B, 0x649C, 0x649D, 0x649F,
+ 0x64A0, 0x64A1, 0x64A2, 0x64A3, 0x64A5, 0x64A6, 0x64A7, 0x64A8,
+ 0x64AA, 0x64AB, 0x64AF, 0x64B1, 0x64B2, 0x64B3, 0x64B4, 0x64B6,
+ 0x64B9, 0x64BB, 0x64BD, 0x64BE, 0x64BF, 0x64C1, 0x64C3, 0x64C4,
+ 0x64C6, 0x64C7, 0x64C8, 0x64C9, 0x64CA, 0x64CB, 0x64CC, 0x64CF,
+ 0x64D1, 0x64D3, 0x64D4, 0x64D5, 0x64D6, 0x64D9, 0x64DA,
+ /* GB 0x9440..0x947E */
+ 0x64DB, 0x64DC, 0x64DD, 0x64DF, 0x64E0, 0x64E1, 0x64E3, 0x64E5,
+ 0x64E7, 0x64E8, 0x64E9, 0x64EA, 0x64EB, 0x64EC, 0x64ED, 0x64EE,
+ 0x64EF, 0x64F0, 0x64F1, 0x64F2, 0x64F3, 0x64F4, 0x64F5, 0x64F6,
+ 0x64F7, 0x64F8, 0x64F9, 0x64FA, 0x64FB, 0x64FC, 0x64FD, 0x64FE,
+ 0x64FF, 0x6501, 0x6502, 0x6503, 0x6504, 0x6505, 0x6506, 0x6507,
+ 0x6508, 0x650A, 0x650B, 0x650C, 0x650D, 0x650E, 0x650F, 0x6510,
+ 0x6511, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517, 0x6519, 0x651A,
+ 0x651B, 0x651C, 0x651D, 0x651E, 0x651F, 0x6520, 0x6521,
+ /* GB 0x9480..0x94FE */
+ 0x6522, 0x6523, 0x6524, 0x6526, 0x6527, 0x6528, 0x6529, 0x652A,
+ 0x652C, 0x652D, 0x6530, 0x6531, 0x6532, 0x6533, 0x6537, 0x653A,
+ 0x653C, 0x653D, 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6546,
+ 0x6547, 0x654A, 0x654B, 0x654D, 0x654E, 0x6550, 0x6552, 0x6553,
+ 0x6554, 0x6557, 0x6558, 0x655A, 0x655C, 0x655F, 0x6560, 0x6561,
+ 0x6564, 0x6565, 0x6567, 0x6568, 0x6569, 0x656A, 0x656D, 0x656E,
+ 0x656F, 0x6571, 0x6573, 0x6575, 0x6576, 0x6578, 0x6579, 0x657A,
+ 0x657B, 0x657C, 0x657D, 0x657E, 0x657F, 0x6580, 0x6581, 0x6582,
+ 0x6583, 0x6584, 0x6585, 0x6586, 0x6588, 0x6589, 0x658A, 0x658D,
+ 0x658E, 0x658F, 0x6592, 0x6594, 0x6595, 0x6596, 0x6598, 0x659A,
+ 0x659D, 0x659E, 0x65A0, 0x65A2, 0x65A3, 0x65A6, 0x65A8, 0x65AA,
+ 0x65AC, 0x65AE, 0x65B1, 0x65B2, 0x65B3, 0x65B4, 0x65B5, 0x65B6,
+ 0x65B7, 0x65B8, 0x65BA, 0x65BB, 0x65BE, 0x65BF, 0x65C0, 0x65C2,
+ 0x65C7, 0x65C8, 0x65C9, 0x65CA, 0x65CD, 0x65D0, 0x65D1, 0x65D3,
+ 0x65D4, 0x65D5, 0x65D8, 0x65D9, 0x65DA, 0x65DB, 0x65DC, 0x65DD,
+ 0x65DE, 0x65DF, 0x65E1, 0x65E3, 0x65E4, 0x65EA, 0x65EB,
+ /* GB 0x9540..0x957E */
+ 0x65F2, 0x65F3, 0x65F4, 0x65F5, 0x65F8, 0x65F9, 0x65FB, 0x65FC,
+ 0x65FD, 0x65FE, 0x65FF, 0x6601, 0x6604, 0x6605, 0x6607, 0x6608,
+ 0x6609, 0x660B, 0x660D, 0x6610, 0x6611, 0x6612, 0x6616, 0x6617,
+ 0x6618, 0x661A, 0x661B, 0x661C, 0x661E, 0x6621, 0x6622, 0x6623,
+ 0x6624, 0x6626, 0x6629, 0x662A, 0x662B, 0x662C, 0x662E, 0x6630,
+ 0x6632, 0x6633, 0x6637, 0x6638, 0x6639, 0x663A, 0x663B, 0x663D,
+ 0x663F, 0x6640, 0x6642, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648,
+ 0x6649, 0x664A, 0x664D, 0x664E, 0x6650, 0x6651, 0x6658,
+ /* GB 0x9580..0x95FE */
+ 0x6659, 0x665B, 0x665C, 0x665D, 0x665E, 0x6660, 0x6662, 0x6663,
+ 0x6665, 0x6667, 0x6669, 0x666A, 0x666B, 0x666C, 0x666D, 0x6671,
+ 0x6672, 0x6673, 0x6675, 0x6678, 0x6679, 0x667B, 0x667C, 0x667D,
+ 0x667F, 0x6680, 0x6681, 0x6683, 0x6685, 0x6686, 0x6688, 0x6689,
+ 0x668A, 0x668B, 0x668D, 0x668E, 0x668F, 0x6690, 0x6692, 0x6693,
+ 0x6694, 0x6695, 0x6698, 0x6699, 0x669A, 0x669B, 0x669C, 0x669E,
+ 0x669F, 0x66A0, 0x66A1, 0x66A2, 0x66A3, 0x66A4, 0x66A5, 0x66A6,
+ 0x66A9, 0x66AA, 0x66AB, 0x66AC, 0x66AD, 0x66AF, 0x66B0, 0x66B1,
+ 0x66B2, 0x66B3, 0x66B5, 0x66B6, 0x66B7, 0x66B8, 0x66BA, 0x66BB,
+ 0x66BC, 0x66BD, 0x66BF, 0x66C0, 0x66C1, 0x66C2, 0x66C3, 0x66C4,
+ 0x66C5, 0x66C6, 0x66C7, 0x66C8, 0x66C9, 0x66CA, 0x66CB, 0x66CC,
+ 0x66CD, 0x66CE, 0x66CF, 0x66D0, 0x66D1, 0x66D2, 0x66D3, 0x66D4,
+ 0x66D5, 0x66D6, 0x66D7, 0x66D8, 0x66DA, 0x66DE, 0x66DF, 0x66E0,
+ 0x66E1, 0x66E2, 0x66E3, 0x66E4, 0x66E5, 0x66E7, 0x66E8, 0x66EA,
+ 0x66EB, 0x66EC, 0x66ED, 0x66EE, 0x66EF, 0x66F1, 0x66F5, 0x66F6,
+ 0x66F8, 0x66FA, 0x66FB, 0x66FD, 0x6701, 0x6702, 0x6703,
+ /* GB 0x9640..0x967E */
+ 0x6704, 0x6705, 0x6706, 0x6707, 0x670C, 0x670E, 0x670F, 0x6711,
+ 0x6712, 0x6713, 0x6716, 0x6718, 0x6719, 0x671A, 0x671C, 0x671E,
+ 0x6720, 0x6721, 0x6722, 0x6723, 0x6724, 0x6725, 0x6727, 0x6729,
+ 0x672E, 0x6730, 0x6732, 0x6733, 0x6736, 0x6737, 0x6738, 0x6739,
+ 0x673B, 0x673C, 0x673E, 0x673F, 0x6741, 0x6744, 0x6745, 0x6747,
+ 0x674A, 0x674B, 0x674D, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758,
+ 0x6759, 0x675A, 0x675B, 0x675D, 0x6762, 0x6763, 0x6764, 0x6766,
+ 0x6767, 0x676B, 0x676C, 0x676E, 0x6771, 0x6774, 0x6776,
+ /* GB 0x9680..0x96FE */
+ 0x6778, 0x6779, 0x677A, 0x677B, 0x677D, 0x6780, 0x6782, 0x6783,
+ 0x6785, 0x6786, 0x6788, 0x678A, 0x678C, 0x678D, 0x678E, 0x678F,
+ 0x6791, 0x6792, 0x6793, 0x6794, 0x6796, 0x6799, 0x679B, 0x679F,
+ 0x67A0, 0x67A1, 0x67A4, 0x67A6, 0x67A9, 0x67AC, 0x67AE, 0x67B1,
+ 0x67B2, 0x67B4, 0x67B9, 0x67BA, 0x67BB, 0x67BC, 0x67BD, 0x67BE,
+ 0x67BF, 0x67C0, 0x67C2, 0x67C5, 0x67C6, 0x67C7, 0x67C8, 0x67C9,
+ 0x67CA, 0x67CB, 0x67CC, 0x67CD, 0x67CE, 0x67D5, 0x67D6, 0x67D7,
+ 0x67DB, 0x67DF, 0x67E1, 0x67E3, 0x67E4, 0x67E6, 0x67E7, 0x67E8,
+ 0x67EA, 0x67EB, 0x67ED, 0x67EE, 0x67F2, 0x67F5, 0x67F6, 0x67F7,
+ 0x67F8, 0x67F9, 0x67FA, 0x67FB, 0x67FC, 0x67FE, 0x6801, 0x6802,
+ 0x6803, 0x6804, 0x6806, 0x680D, 0x6810, 0x6812, 0x6814, 0x6815,
+ 0x6818, 0x6819, 0x681A, 0x681B, 0x681C, 0x681E, 0x681F, 0x6820,
+ 0x6822, 0x6823, 0x6824, 0x6825, 0x6826, 0x6827, 0x6828, 0x682B,
+ 0x682C, 0x682D, 0x682E, 0x682F, 0x6830, 0x6831, 0x6834, 0x6835,
+ 0x6836, 0x683A, 0x683B, 0x683F, 0x6847, 0x684B, 0x684D, 0x684F,
+ 0x6852, 0x6856, 0x6857, 0x6858, 0x6859, 0x685A, 0x685B,
+ /* GB 0x9740..0x977E */
+ 0x685C, 0x685D, 0x685E, 0x685F, 0x686A, 0x686C, 0x686D, 0x686E,
+ 0x686F, 0x6870, 0x6871, 0x6872, 0x6873, 0x6875, 0x6878, 0x6879,
+ 0x687A, 0x687B, 0x687C, 0x687D, 0x687E, 0x687F, 0x6880, 0x6882,
+ 0x6884, 0x6887, 0x6888, 0x6889, 0x688A, 0x688B, 0x688C, 0x688D,
+ 0x688E, 0x6890, 0x6891, 0x6892, 0x6894, 0x6895, 0x6896, 0x6898,
+ 0x6899, 0x689A, 0x689B, 0x689C, 0x689D, 0x689E, 0x689F, 0x68A0,
+ 0x68A1, 0x68A3, 0x68A4, 0x68A5, 0x68A9, 0x68AA, 0x68AB, 0x68AC,
+ 0x68AE, 0x68B1, 0x68B2, 0x68B4, 0x68B6, 0x68B7, 0x68B8,
+ /* GB 0x9780..0x97FE */
+ 0x68B9, 0x68BA, 0x68BB, 0x68BC, 0x68BD, 0x68BE, 0x68BF, 0x68C1,
+ 0x68C3, 0x68C4, 0x68C5, 0x68C6, 0x68C7, 0x68C8, 0x68CA, 0x68CC,
+ 0x68CE, 0x68CF, 0x68D0, 0x68D1, 0x68D3, 0x68D4, 0x68D6, 0x68D7,
+ 0x68D9, 0x68DB, 0x68DC, 0x68DD, 0x68DE, 0x68DF, 0x68E1, 0x68E2,
+ 0x68E4, 0x68E5, 0x68E6, 0x68E7, 0x68E8, 0x68E9, 0x68EA, 0x68EB,
+ 0x68EC, 0x68ED, 0x68EF, 0x68F2, 0x68F3, 0x68F4, 0x68F6, 0x68F7,
+ 0x68F8, 0x68FB, 0x68FD, 0x68FE, 0x68FF, 0x6900, 0x6902, 0x6903,
+ 0x6904, 0x6906, 0x6907, 0x6908, 0x6909, 0x690A, 0x690C, 0x690F,
+ 0x6911, 0x6913, 0x6914, 0x6915, 0x6916, 0x6917, 0x6918, 0x6919,
+ 0x691A, 0x691B, 0x691C, 0x691D, 0x691E, 0x6921, 0x6922, 0x6923,
+ 0x6925, 0x6926, 0x6927, 0x6928, 0x6929, 0x692A, 0x692B, 0x692C,
+ 0x692E, 0x692F, 0x6931, 0x6932, 0x6933, 0x6935, 0x6936, 0x6937,
+ 0x6938, 0x693A, 0x693B, 0x693C, 0x693E, 0x6940, 0x6941, 0x6943,
+ 0x6944, 0x6945, 0x6946, 0x6947, 0x6948, 0x6949, 0x694A, 0x694B,
+ 0x694C, 0x694D, 0x694E, 0x694F, 0x6950, 0x6951, 0x6952, 0x6953,
+ 0x6955, 0x6956, 0x6958, 0x6959, 0x695B, 0x695C, 0x695F,
+ /* GB 0x9840..0x987E */
+ 0x6961, 0x6962, 0x6964, 0x6965, 0x6967, 0x6968, 0x6969, 0x696A,
+ 0x696C, 0x696D, 0x696F, 0x6970, 0x6972, 0x6973, 0x6974, 0x6975,
+ 0x6976, 0x697A, 0x697B, 0x697D, 0x697E, 0x697F, 0x6981, 0x6983,
+ 0x6985, 0x698A, 0x698B, 0x698C, 0x698E, 0x698F, 0x6990, 0x6991,
+ 0x6992, 0x6993, 0x6996, 0x6997, 0x6999, 0x699A, 0x699D, 0x699E,
+ 0x699F, 0x69A0, 0x69A1, 0x69A2, 0x69A3, 0x69A4, 0x69A5, 0x69A6,
+ 0x69A9, 0x69AA, 0x69AC, 0x69AE, 0x69AF, 0x69B0, 0x69B2, 0x69B3,
+ 0x69B5, 0x69B6, 0x69B8, 0x69B9, 0x69BA, 0x69BC, 0x69BD,
+ /* GB 0x9880..0x98FE */
+ 0x69BE, 0x69BF, 0x69C0, 0x69C2, 0x69C3, 0x69C4, 0x69C5, 0x69C6,
+ 0x69C7, 0x69C8, 0x69C9, 0x69CB, 0x69CD, 0x69CF, 0x69D1, 0x69D2,
+ 0x69D3, 0x69D5, 0x69D6, 0x69D7, 0x69D8, 0x69D9, 0x69DA, 0x69DC,
+ 0x69DD, 0x69DE, 0x69E1, 0x69E2, 0x69E3, 0x69E4, 0x69E5, 0x69E6,
+ 0x69E7, 0x69E8, 0x69E9, 0x69EA, 0x69EB, 0x69EC, 0x69EE, 0x69EF,
+ 0x69F0, 0x69F1, 0x69F3, 0x69F4, 0x69F5, 0x69F6, 0x69F7, 0x69F8,
+ 0x69F9, 0x69FA, 0x69FB, 0x69FC, 0x69FE, 0x6A00, 0x6A01, 0x6A02,
+ 0x6A03, 0x6A04, 0x6A05, 0x6A06, 0x6A07, 0x6A08, 0x6A09, 0x6A0B,
+ 0x6A0C, 0x6A0D, 0x6A0E, 0x6A0F, 0x6A10, 0x6A11, 0x6A12, 0x6A13,
+ 0x6A14, 0x6A15, 0x6A16, 0x6A19, 0x6A1A, 0x6A1B, 0x6A1C, 0x6A1D,
+ 0x6A1E, 0x6A20, 0x6A22, 0x6A23, 0x6A24, 0x6A25, 0x6A26, 0x6A27,
+ 0x6A29, 0x6A2B, 0x6A2C, 0x6A2D, 0x6A2E, 0x6A30, 0x6A32, 0x6A33,
+ 0x6A34, 0x6A36, 0x6A37, 0x6A38, 0x6A39, 0x6A3A, 0x6A3B, 0x6A3C,
+ 0x6A3F, 0x6A40, 0x6A41, 0x6A42, 0x6A43, 0x6A45, 0x6A46, 0x6A48,
+ 0x6A49, 0x6A4A, 0x6A4B, 0x6A4C, 0x6A4D, 0x6A4E, 0x6A4F, 0x6A51,
+ 0x6A52, 0x6A53, 0x6A54, 0x6A55, 0x6A56, 0x6A57, 0x6A5A,
+ /* GB 0x9940..0x997E */
+ 0x6A5C, 0x6A5D, 0x6A5E, 0x6A5F, 0x6A60, 0x6A62, 0x6A63, 0x6A64,
+ 0x6A66, 0x6A67, 0x6A68, 0x6A69, 0x6A6A, 0x6A6B, 0x6A6C, 0x6A6D,
+ 0x6A6E, 0x6A6F, 0x6A70, 0x6A72, 0x6A73, 0x6A74, 0x6A75, 0x6A76,
+ 0x6A77, 0x6A78, 0x6A7A, 0x6A7B, 0x6A7D, 0x6A7E, 0x6A7F, 0x6A81,
+ 0x6A82, 0x6A83, 0x6A85, 0x6A86, 0x6A87, 0x6A88, 0x6A89, 0x6A8A,
+ 0x6A8B, 0x6A8C, 0x6A8D, 0x6A8F, 0x6A92, 0x6A93, 0x6A94, 0x6A95,
+ 0x6A96, 0x6A98, 0x6A99, 0x6A9A, 0x6A9B, 0x6A9C, 0x6A9D, 0x6A9E,
+ 0x6A9F, 0x6AA1, 0x6AA2, 0x6AA3, 0x6AA4, 0x6AA5, 0x6AA6,
+ /* GB 0x9980..0x99FE */
+ 0x6AA7, 0x6AA8, 0x6AAA, 0x6AAD, 0x6AAE, 0x6AAF, 0x6AB0, 0x6AB1,
+ 0x6AB2, 0x6AB3, 0x6AB4, 0x6AB5, 0x6AB6, 0x6AB7, 0x6AB8, 0x6AB9,
+ 0x6ABA, 0x6ABB, 0x6ABC, 0x6ABD, 0x6ABE, 0x6ABF, 0x6AC0, 0x6AC1,
+ 0x6AC2, 0x6AC3, 0x6AC4, 0x6AC5, 0x6AC6, 0x6AC7, 0x6AC8, 0x6AC9,
+ 0x6ACA, 0x6ACB, 0x6ACC, 0x6ACD, 0x6ACE, 0x6ACF, 0x6AD0, 0x6AD1,
+ 0x6AD2, 0x6AD3, 0x6AD4, 0x6AD5, 0x6AD6, 0x6AD7, 0x6AD8, 0x6AD9,
+ 0x6ADA, 0x6ADB, 0x6ADC, 0x6ADD, 0x6ADE, 0x6ADF, 0x6AE0, 0x6AE1,
+ 0x6AE2, 0x6AE3, 0x6AE4, 0x6AE5, 0x6AE6, 0x6AE7, 0x6AE8, 0x6AE9,
+ 0x6AEA, 0x6AEB, 0x6AEC, 0x6AED, 0x6AEE, 0x6AEF, 0x6AF0, 0x6AF1,
+ 0x6AF2, 0x6AF3, 0x6AF4, 0x6AF5, 0x6AF6, 0x6AF7, 0x6AF8, 0x6AF9,
+ 0x6AFA, 0x6AFB, 0x6AFC, 0x6AFD, 0x6AFE, 0x6AFF, 0x6B00, 0x6B01,
+ 0x6B02, 0x6B03, 0x6B04, 0x6B05, 0x6B06, 0x6B07, 0x6B08, 0x6B09,
+ 0x6B0A, 0x6B0B, 0x6B0C, 0x6B0D, 0x6B0E, 0x6B0F, 0x6B10, 0x6B11,
+ 0x6B12, 0x6B13, 0x6B14, 0x6B15, 0x6B16, 0x6B17, 0x6B18, 0x6B19,
+ 0x6B1A, 0x6B1B, 0x6B1C, 0x6B1D, 0x6B1E, 0x6B1F, 0x6B25, 0x6B26,
+ 0x6B28, 0x6B29, 0x6B2A, 0x6B2B, 0x6B2C, 0x6B2D, 0x6B2E,
+ /* GB 0x9A40..0x9A7E */
+ 0x6B2F, 0x6B30, 0x6B31, 0x6B33, 0x6B34, 0x6B35, 0x6B36, 0x6B38,
+ 0x6B3B, 0x6B3C, 0x6B3D, 0x6B3F, 0x6B40, 0x6B41, 0x6B42, 0x6B44,
+ 0x6B45, 0x6B48, 0x6B4A, 0x6B4B, 0x6B4D, 0x6B4E, 0x6B4F, 0x6B50,
+ 0x6B51, 0x6B52, 0x6B53, 0x6B54, 0x6B55, 0x6B56, 0x6B57, 0x6B58,
+ 0x6B5A, 0x6B5B, 0x6B5C, 0x6B5D, 0x6B5E, 0x6B5F, 0x6B60, 0x6B61,
+ 0x6B68, 0x6B69, 0x6B6B, 0x6B6C, 0x6B6D, 0x6B6E, 0x6B6F, 0x6B70,
+ 0x6B71, 0x6B72, 0x6B73, 0x6B74, 0x6B75, 0x6B76, 0x6B77, 0x6B78,
+ 0x6B7A, 0x6B7D, 0x6B7E, 0x6B7F, 0x6B80, 0x6B85, 0x6B88,
+ /* GB 0x9A80..0x9AFE */
+ 0x6B8C, 0x6B8E, 0x6B8F, 0x6B90, 0x6B91, 0x6B94, 0x6B95, 0x6B97,
+ 0x6B98, 0x6B99, 0x6B9C, 0x6B9D, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BA2,
+ 0x6BA3, 0x6BA4, 0x6BA5, 0x6BA6, 0x6BA7, 0x6BA8, 0x6BA9, 0x6BAB,
+ 0x6BAC, 0x6BAD, 0x6BAE, 0x6BAF, 0x6BB0, 0x6BB1, 0x6BB2, 0x6BB6,
+ 0x6BB8, 0x6BB9, 0x6BBA, 0x6BBB, 0x6BBC, 0x6BBD, 0x6BBE, 0x6BC0,
+ 0x6BC3, 0x6BC4, 0x6BC6, 0x6BC7, 0x6BC8, 0x6BC9, 0x6BCA, 0x6BCC,
+ 0x6BCE, 0x6BD0, 0x6BD1, 0x6BD8, 0x6BDA, 0x6BDC, 0x6BDD, 0x6BDE,
+ 0x6BDF, 0x6BE0, 0x6BE2, 0x6BE3, 0x6BE4, 0x6BE5, 0x6BE6, 0x6BE7,
+ 0x6BE8, 0x6BE9, 0x6BEC, 0x6BED, 0x6BEE, 0x6BF0, 0x6BF1, 0x6BF2,
+ 0x6BF4, 0x6BF6, 0x6BF7, 0x6BF8, 0x6BFA, 0x6BFB, 0x6BFC, 0x6BFE,
+ 0x6BFF, 0x6C00, 0x6C01, 0x6C02, 0x6C03, 0x6C04, 0x6C08, 0x6C09,
+ 0x6C0A, 0x6C0B, 0x6C0C, 0x6C0E, 0x6C12, 0x6C17, 0x6C1C, 0x6C1D,
+ 0x6C1E, 0x6C20, 0x6C23, 0x6C25, 0x6C2B, 0x6C2C, 0x6C2D, 0x6C31,
+ 0x6C33, 0x6C36, 0x6C37, 0x6C39, 0x6C3A, 0x6C3B, 0x6C3C, 0x6C3E,
+ 0x6C3F, 0x6C43, 0x6C44, 0x6C45, 0x6C48, 0x6C4B, 0x6C4C, 0x6C4D,
+ 0x6C4E, 0x6C4F, 0x6C51, 0x6C52, 0x6C53, 0x6C56, 0x6C58,
+ /* GB 0x9B40..0x9B7E */
+ 0x6C59, 0x6C5A, 0x6C62, 0x6C63, 0x6C65, 0x6C66, 0x6C67, 0x6C6B,
+ 0x6C6C, 0x6C6D, 0x6C6E, 0x6C6F, 0x6C71, 0x6C73, 0x6C75, 0x6C77,
+ 0x6C78, 0x6C7A, 0x6C7B, 0x6C7C, 0x6C7F, 0x6C80, 0x6C84, 0x6C87,
+ 0x6C8A, 0x6C8B, 0x6C8D, 0x6C8E, 0x6C91, 0x6C92, 0x6C95, 0x6C96,
+ 0x6C97, 0x6C98, 0x6C9A, 0x6C9C, 0x6C9D, 0x6C9E, 0x6CA0, 0x6CA2,
+ 0x6CA8, 0x6CAC, 0x6CAF, 0x6CB0, 0x6CB4, 0x6CB5, 0x6CB6, 0x6CB7,
+ 0x6CBA, 0x6CC0, 0x6CC1, 0x6CC2, 0x6CC3, 0x6CC6, 0x6CC7, 0x6CC8,
+ 0x6CCB, 0x6CCD, 0x6CCE, 0x6CCF, 0x6CD1, 0x6CD2, 0x6CD8,
+ /* GB 0x9B80..0x9BFE */
+ 0x6CD9, 0x6CDA, 0x6CDC, 0x6CDD, 0x6CDF, 0x6CE4, 0x6CE6, 0x6CE7,
+ 0x6CE9, 0x6CEC, 0x6CED, 0x6CF2, 0x6CF4, 0x6CF9, 0x6CFF, 0x6D00,
+ 0x6D02, 0x6D03, 0x6D05, 0x6D06, 0x6D08, 0x6D09, 0x6D0A, 0x6D0D,
+ 0x6D0F, 0x6D10, 0x6D11, 0x6D13, 0x6D14, 0x6D15, 0x6D16, 0x6D18,
+ 0x6D1C, 0x6D1D, 0x6D1F, 0x6D20, 0x6D21, 0x6D22, 0x6D23, 0x6D24,
+ 0x6D26, 0x6D28, 0x6D29, 0x6D2C, 0x6D2D, 0x6D2F, 0x6D30, 0x6D34,
+ 0x6D36, 0x6D37, 0x6D38, 0x6D3A, 0x6D3F, 0x6D40, 0x6D42, 0x6D44,
+ 0x6D49, 0x6D4C, 0x6D50, 0x6D55, 0x6D56, 0x6D57, 0x6D58, 0x6D5B,
+ 0x6D5D, 0x6D5F, 0x6D61, 0x6D62, 0x6D64, 0x6D65, 0x6D67, 0x6D68,
+ 0x6D6B, 0x6D6C, 0x6D6D, 0x6D70, 0x6D71, 0x6D72, 0x6D73, 0x6D75,
+ 0x6D76, 0x6D79, 0x6D7A, 0x6D7B, 0x6D7D, 0x6D7E, 0x6D7F, 0x6D80,
+ 0x6D81, 0x6D83, 0x6D84, 0x6D86, 0x6D87, 0x6D8A, 0x6D8B, 0x6D8D,
+ 0x6D8F, 0x6D90, 0x6D92, 0x6D96, 0x6D97, 0x6D98, 0x6D99, 0x6D9A,
+ 0x6D9C, 0x6DA2, 0x6DA5, 0x6DAC, 0x6DAD, 0x6DB0, 0x6DB1, 0x6DB3,
+ 0x6DB4, 0x6DB6, 0x6DB7, 0x6DB9, 0x6DBA, 0x6DBB, 0x6DBC, 0x6DBD,
+ 0x6DBE, 0x6DC1, 0x6DC2, 0x6DC3, 0x6DC8, 0x6DC9, 0x6DCA,
+ /* GB 0x9C40..0x9C7E */
+ 0x6DCD, 0x6DCE, 0x6DCF, 0x6DD0, 0x6DD2, 0x6DD3, 0x6DD4, 0x6DD5,
+ 0x6DD7, 0x6DDA, 0x6DDB, 0x6DDC, 0x6DDF, 0x6DE2, 0x6DE3, 0x6DE5,
+ 0x6DE7, 0x6DE8, 0x6DE9, 0x6DEA, 0x6DED, 0x6DEF, 0x6DF0, 0x6DF2,
+ 0x6DF4, 0x6DF5, 0x6DF6, 0x6DF8, 0x6DFA, 0x6DFD, 0x6DFE, 0x6DFF,
+ 0x6E00, 0x6E01, 0x6E02, 0x6E03, 0x6E04, 0x6E06, 0x6E07, 0x6E08,
+ 0x6E09, 0x6E0B, 0x6E0F, 0x6E12, 0x6E13, 0x6E15, 0x6E18, 0x6E19,
+ 0x6E1B, 0x6E1C, 0x6E1E, 0x6E1F, 0x6E22, 0x6E26, 0x6E27, 0x6E28,
+ 0x6E2A, 0x6E2C, 0x6E2E, 0x6E30, 0x6E31, 0x6E33, 0x6E35,
+ /* GB 0x9C80..0x9CFE */
+ 0x6E36, 0x6E37, 0x6E39, 0x6E3B, 0x6E3C, 0x6E3D, 0x6E3E, 0x6E3F,
+ 0x6E40, 0x6E41, 0x6E42, 0x6E45, 0x6E46, 0x6E47, 0x6E48, 0x6E49,
+ 0x6E4A, 0x6E4B, 0x6E4C, 0x6E4F, 0x6E50, 0x6E51, 0x6E52, 0x6E55,
+ 0x6E57, 0x6E59, 0x6E5A, 0x6E5C, 0x6E5D, 0x6E5E, 0x6E60, 0x6E61,
+ 0x6E62, 0x6E63, 0x6E64, 0x6E65, 0x6E66, 0x6E67, 0x6E68, 0x6E69,
+ 0x6E6A, 0x6E6C, 0x6E6D, 0x6E6F, 0x6E70, 0x6E71, 0x6E72, 0x6E73,
+ 0x6E74, 0x6E75, 0x6E76, 0x6E77, 0x6E78, 0x6E79, 0x6E7A, 0x6E7B,
+ 0x6E7C, 0x6E7D, 0x6E80, 0x6E81, 0x6E82, 0x6E84, 0x6E87, 0x6E88,
+ 0x6E8A, 0x6E8B, 0x6E8C, 0x6E8D, 0x6E8E, 0x6E91, 0x6E92, 0x6E93,
+ 0x6E94, 0x6E95, 0x6E96, 0x6E97, 0x6E99, 0x6E9A, 0x6E9B, 0x6E9D,
+ 0x6E9E, 0x6EA0, 0x6EA1, 0x6EA3, 0x6EA4, 0x6EA6, 0x6EA8, 0x6EA9,
+ 0x6EAB, 0x6EAC, 0x6EAD, 0x6EAE, 0x6EB0, 0x6EB3, 0x6EB5, 0x6EB8,
+ 0x6EB9, 0x6EBC, 0x6EBE, 0x6EBF, 0x6EC0, 0x6EC3, 0x6EC4, 0x6EC5,
+ 0x6EC6, 0x6EC8, 0x6EC9, 0x6ECA, 0x6ECC, 0x6ECD, 0x6ECE, 0x6ED0,
+ 0x6ED2, 0x6ED6, 0x6ED8, 0x6ED9, 0x6EDB, 0x6EDC, 0x6EDD, 0x6EE3,
+ 0x6EE7, 0x6EEA, 0x6EEB, 0x6EEC, 0x6EED, 0x6EEE, 0x6EEF,
+ /* GB 0x9D40..0x9D7E */
+ 0x6EF0, 0x6EF1, 0x6EF2, 0x6EF3, 0x6EF5, 0x6EF6, 0x6EF7, 0x6EF8,
+ 0x6EFA, 0x6EFB, 0x6EFC, 0x6EFD, 0x6EFE, 0x6EFF, 0x6F00, 0x6F01,
+ 0x6F03, 0x6F04, 0x6F05, 0x6F07, 0x6F08, 0x6F0A, 0x6F0B, 0x6F0C,
+ 0x6F0D, 0x6F0E, 0x6F10, 0x6F11, 0x6F12, 0x6F16, 0x6F17, 0x6F18,
+ 0x6F19, 0x6F1A, 0x6F1B, 0x6F1C, 0x6F1D, 0x6F1E, 0x6F1F, 0x6F21,
+ 0x6F22, 0x6F23, 0x6F25, 0x6F26, 0x6F27, 0x6F28, 0x6F2C, 0x6F2E,
+ 0x6F30, 0x6F32, 0x6F34, 0x6F35, 0x6F37, 0x6F38, 0x6F39, 0x6F3A,
+ 0x6F3B, 0x6F3C, 0x6F3D, 0x6F3F, 0x6F40, 0x6F41, 0x6F42,
+ /* GB 0x9D80..0x9DFE */
+ 0x6F43, 0x6F44, 0x6F45, 0x6F48, 0x6F49, 0x6F4A, 0x6F4C, 0x6F4E,
+ 0x6F4F, 0x6F50, 0x6F51, 0x6F52, 0x6F53, 0x6F54, 0x6F55, 0x6F56,
+ 0x6F57, 0x6F59, 0x6F5A, 0x6F5B, 0x6F5D, 0x6F5F, 0x6F60, 0x6F61,
+ 0x6F63, 0x6F64, 0x6F65, 0x6F67, 0x6F68, 0x6F69, 0x6F6A, 0x6F6B,
+ 0x6F6C, 0x6F6F, 0x6F70, 0x6F71, 0x6F73, 0x6F75, 0x6F76, 0x6F77,
+ 0x6F79, 0x6F7B, 0x6F7D, 0x6F7E, 0x6F7F, 0x6F80, 0x6F81, 0x6F82,
+ 0x6F83, 0x6F85, 0x6F86, 0x6F87, 0x6F8A, 0x6F8B, 0x6F8F, 0x6F90,
+ 0x6F91, 0x6F92, 0x6F93, 0x6F94, 0x6F95, 0x6F96, 0x6F97, 0x6F98,
+ 0x6F99, 0x6F9A, 0x6F9B, 0x6F9D, 0x6F9E, 0x6F9F, 0x6FA0, 0x6FA2,
+ 0x6FA3, 0x6FA4, 0x6FA5, 0x6FA6, 0x6FA8, 0x6FA9, 0x6FAA, 0x6FAB,
+ 0x6FAC, 0x6FAD, 0x6FAE, 0x6FAF, 0x6FB0, 0x6FB1, 0x6FB2, 0x6FB4,
+ 0x6FB5, 0x6FB7, 0x6FB8, 0x6FBA, 0x6FBB, 0x6FBC, 0x6FBD, 0x6FBE,
+ 0x6FBF, 0x6FC1, 0x6FC3, 0x6FC4, 0x6FC5, 0x6FC6, 0x6FC7, 0x6FC8,
+ 0x6FCA, 0x6FCB, 0x6FCC, 0x6FCD, 0x6FCE, 0x6FCF, 0x6FD0, 0x6FD3,
+ 0x6FD4, 0x6FD5, 0x6FD6, 0x6FD7, 0x6FD8, 0x6FD9, 0x6FDA, 0x6FDB,
+ 0x6FDC, 0x6FDD, 0x6FDF, 0x6FE2, 0x6FE3, 0x6FE4, 0x6FE5,
+ /* GB 0x9E40..0x9E7E */
+ 0x6FE6, 0x6FE7, 0x6FE8, 0x6FE9, 0x6FEA, 0x6FEB, 0x6FEC, 0x6FED,
+ 0x6FF0, 0x6FF1, 0x6FF2, 0x6FF3, 0x6FF4, 0x6FF5, 0x6FF6, 0x6FF7,
+ 0x6FF8, 0x6FF9, 0x6FFA, 0x6FFB, 0x6FFC, 0x6FFD, 0x6FFE, 0x6FFF,
+ 0x7000, 0x7001, 0x7002, 0x7003, 0x7004, 0x7005, 0x7006, 0x7007,
+ 0x7008, 0x7009, 0x700A, 0x700B, 0x700C, 0x700D, 0x700E, 0x700F,
+ 0x7010, 0x7012, 0x7013, 0x7014, 0x7015, 0x7016, 0x7017, 0x7018,
+ 0x7019, 0x701C, 0x701D, 0x701E, 0x701F, 0x7020, 0x7021, 0x7022,
+ 0x7024, 0x7025, 0x7026, 0x7027, 0x7028, 0x7029, 0x702A,
+ /* GB 0x9E80..0x9EFE */
+ 0x702B, 0x702C, 0x702D, 0x702E, 0x702F, 0x7030, 0x7031, 0x7032,
+ 0x7033, 0x7034, 0x7036, 0x7037, 0x7038, 0x703A, 0x703B, 0x703C,
+ 0x703D, 0x703E, 0x703F, 0x7040, 0x7041, 0x7042, 0x7043, 0x7044,
+ 0x7045, 0x7046, 0x7047, 0x7048, 0x7049, 0x704A, 0x704B, 0x704D,
+ 0x704E, 0x7050, 0x7051, 0x7052, 0x7053, 0x7054, 0x7055, 0x7056,
+ 0x7057, 0x7058, 0x7059, 0x705A, 0x705B, 0x705C, 0x705D, 0x705F,
+ 0x7060, 0x7061, 0x7062, 0x7063, 0x7064, 0x7065, 0x7066, 0x7067,
+ 0x7068, 0x7069, 0x706A, 0x706E, 0x7071, 0x7072, 0x7073, 0x7074,
+ 0x7077, 0x7079, 0x707A, 0x707B, 0x707D, 0x7081, 0x7082, 0x7083,
+ 0x7084, 0x7086, 0x7087, 0x7088, 0x708B, 0x708C, 0x708D, 0x708F,
+ 0x7090, 0x7091, 0x7093, 0x7097, 0x7098, 0x709A, 0x709B, 0x709E,
+ 0x709F, 0x70A0, 0x70A1, 0x70A2, 0x70A3, 0x70A4, 0x70A5, 0x70A6,
+ 0x70A7, 0x70A8, 0x70A9, 0x70AA, 0x70B0, 0x70B2, 0x70B4, 0x70B5,
+ 0x70B6, 0x70BA, 0x70BE, 0x70BF, 0x70C4, 0x70C5, 0x70C6, 0x70C7,
+ 0x70C9, 0x70CB, 0x70CC, 0x70CD, 0x70CE, 0x70CF, 0x70D0, 0x70D1,
+ 0x70D2, 0x70D3, 0x70D4, 0x70D5, 0x70D6, 0x70D7, 0x70DA,
+ /* GB 0x9F40..0x9F7E */
+ 0x70DC, 0x70DD, 0x70DE, 0x70E0, 0x70E1, 0x70E2, 0x70E3, 0x70E5,
+ 0x70EA, 0x70EE, 0x70F0, 0x70F1, 0x70F2, 0x70F3, 0x70F4, 0x70F5,
+ 0x70F6, 0x70F8, 0x70FA, 0x70FB, 0x70FC, 0x70FE, 0x70FF, 0x7100,
+ 0x7101, 0x7102, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x7108,
+ 0x710B, 0x710C, 0x710D, 0x710E, 0x710F, 0x7111, 0x7112, 0x7114,
+ 0x7117, 0x711B, 0x711C, 0x711D, 0x711E, 0x711F, 0x7120, 0x7121,
+ 0x7122, 0x7123, 0x7124, 0x7125, 0x7127, 0x7128, 0x7129, 0x712A,
+ 0x712B, 0x712C, 0x712D, 0x712E, 0x7132, 0x7133, 0x7134,
+ /* GB 0x9F80..0x9FFE */
+ 0x7135, 0x7137, 0x7138, 0x7139, 0x713A, 0x713B, 0x713C, 0x713D,
+ 0x713E, 0x713F, 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7146,
+ 0x7147, 0x7148, 0x7149, 0x714B, 0x714D, 0x714F, 0x7150, 0x7151,
+ 0x7152, 0x7153, 0x7154, 0x7155, 0x7156, 0x7157, 0x7158, 0x7159,
+ 0x715A, 0x715B, 0x715D, 0x715F, 0x7160, 0x7161, 0x7162, 0x7163,
+ 0x7165, 0x7169, 0x716A, 0x716B, 0x716C, 0x716D, 0x716F, 0x7170,
+ 0x7171, 0x7174, 0x7175, 0x7176, 0x7177, 0x7179, 0x717B, 0x717C,
+ 0x717E, 0x717F, 0x7180, 0x7181, 0x7182, 0x7183, 0x7185, 0x7186,
+ 0x7187, 0x7188, 0x7189, 0x718B, 0x718C, 0x718D, 0x718E, 0x7190,
+ 0x7191, 0x7192, 0x7193, 0x7195, 0x7196, 0x7197, 0x719A, 0x719B,
+ 0x719C, 0x719D, 0x719E, 0x71A1, 0x71A2, 0x71A3, 0x71A4, 0x71A5,
+ 0x71A6, 0x71A7, 0x71A9, 0x71AA, 0x71AB, 0x71AD, 0x71AE, 0x71AF,
+ 0x71B0, 0x71B1, 0x71B2, 0x71B4, 0x71B6, 0x71B7, 0x71B8, 0x71BA,
+ 0x71BB, 0x71BC, 0x71BD, 0x71BE, 0x71BF, 0x71C0, 0x71C1, 0x71C2,
+ 0x71C4, 0x71C5, 0x71C6, 0x71C7, 0x71C8, 0x71C9, 0x71CA, 0x71CB,
+ 0x71CC, 0x71CD, 0x71CF, 0x71D0, 0x71D1, 0x71D2, 0x71D3,
+ /* GB 0xA040..0xA07E */
+ 0x71D6, 0x71D7, 0x71D8, 0x71D9, 0x71DA, 0x71DB, 0x71DC, 0x71DD,
+ 0x71DE, 0x71DF, 0x71E1, 0x71E2, 0x71E3, 0x71E4, 0x71E6, 0x71E8,
+ 0x71E9, 0x71EA, 0x71EB, 0x71EC, 0x71ED, 0x71EF, 0x71F0, 0x71F1,
+ 0x71F2, 0x71F3, 0x71F4, 0x71F5, 0x71F6, 0x71F7, 0x71F8, 0x71FA,
+ 0x71FB, 0x71FC, 0x71FD, 0x71FE, 0x71FF, 0x7200, 0x7201, 0x7202,
+ 0x7203, 0x7204, 0x7205, 0x7207, 0x7208, 0x7209, 0x720A, 0x720B,
+ 0x720C, 0x720D, 0x720E, 0x720F, 0x7210, 0x7211, 0x7212, 0x7213,
+ 0x7214, 0x7215, 0x7216, 0x7217, 0x7218, 0x7219, 0x721A,
+ /* GB 0xA080..0xA0FE */
+ 0x721B, 0x721C, 0x721E, 0x721F, 0x7220, 0x7221, 0x7222, 0x7223,
+ 0x7224, 0x7225, 0x7226, 0x7227, 0x7229, 0x722B, 0x722D, 0x722E,
+ 0x722F, 0x7232, 0x7233, 0x7234, 0x723A, 0x723C, 0x723E, 0x7240,
+ 0x7241, 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7249, 0x724A,
+ 0x724B, 0x724E, 0x724F, 0x7250, 0x7251, 0x7253, 0x7254, 0x7255,
+ 0x7257, 0x7258, 0x725A, 0x725C, 0x725E, 0x7260, 0x7263, 0x7264,
+ 0x7265, 0x7268, 0x726A, 0x726B, 0x726C, 0x726D, 0x7270, 0x7271,
+ 0x7273, 0x7274, 0x7276, 0x7277, 0x7278, 0x727B, 0x727C, 0x727D,
+ 0x7282, 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289, 0x728C,
+ 0x728E, 0x7290, 0x7291, 0x7293, 0x7294, 0x7295, 0x7296, 0x7297,
+ 0x7298, 0x7299, 0x729A, 0x729B, 0x729C, 0x729D, 0x729E, 0x72A0,
+ 0x72A1, 0x72A2, 0x72A3, 0x72A4, 0x72A5, 0x72A6, 0x72A7, 0x72A8,
+ 0x72A9, 0x72AA, 0x72AB, 0x72AE, 0x72B1, 0x72B2, 0x72B3, 0x72B5,
+ 0x72BA, 0x72BB, 0x72BC, 0x72BD, 0x72BE, 0x72BF, 0x72C0, 0x72C5,
+ 0x72C6, 0x72C7, 0x72C9, 0x72CA, 0x72CB, 0x72CC, 0x72CF, 0x72D1,
+ 0x72D3, 0x72D4, 0x72D5, 0x72D6, 0x72D8, 0x72DA, 0x72DB,
+ /* Skip: GB 0xA140..0xA17E, 0xA180..0xA1A0 (UDA 3) */
+ /* GB 0xA2A1..0xA2FE */
+ 0x3000, 0x3001, 0x3002, 0x00B7, 0x02C9, 0x02C7, 0x00A8,
+ 0x3003, 0x3005, 0x2014, 0xFF5E, 0x2016, 0x2026, 0x2018, 0x2019,
+ 0x201C, 0x201D, 0x3014, 0x3015, 0x3008, 0x3009, 0x300A, 0x300B,
+ 0x300C, 0x300D, 0x300E, 0x300F, 0x3016, 0x3017, 0x3010, 0x3011,
+ 0x00B1, 0x00D7, 0x00F7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220F,
+ 0x222A, 0x2229, 0x2208, 0x2237, 0x221A, 0x22A5, 0x2225, 0x2220,
+ 0x2312, 0x2299, 0x222B, 0x222E, 0x2261, 0x224C, 0x2248, 0x223D,
+ 0x221D, 0x2260, 0x226E, 0x226F, 0x2264, 0x2265, 0x221E, 0x2235,
+ 0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04,
+ 0x00A4, 0xFFE0, 0xFFE1, 0x2030, 0x00A7, 0x2116, 0x2606, 0x2605,
+ 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3,
+ 0x25B2, 0x203B, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013,
+ /* Skip: GB 0xA240..0xA27E, 0xA280..0xA2A0 (UDA 3) */
+ /* GB 0xA3A1..0xA3FE */
+ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176,
+ 0x2177, 0x2178, 0x2179, 0xE766, 0xE767, 0xE768, 0xE769, 0xE76A,
+ 0xE76B, 0x2488, 0x2489, 0x248A, 0x248B, 0x248C, 0x248D, 0x248E,
+ 0x248F, 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496,
+ 0x2497, 0x2498, 0x2499, 0x249A, 0x249B, 0x2474, 0x2475, 0x2476,
+ 0x2477, 0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, 0x247E,
+ 0x247F, 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486,
+ 0x2487, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466,
+ 0x2467, 0x2468, 0x2469, 0x20AC, 0xE76D, 0x3220, 0x3221, 0x3222,
+ 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0xE76E,
+ 0xE76F, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166,
+ 0x2167, 0x2168, 0x2169, 0x216A, 0x216B, 0xE770, 0xE771,
+ /* Skip: GB 0xA340..0xA37E, 0xA380..0xA3A0 (UDA 3) */
+ /* GB 0xA4A1..0xA4FE */
+ 0xFF01, 0xFF02, 0xFF03, 0xFFE5, 0xFF05, 0xFF06, 0xFF07,
+ 0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F,
+ 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17,
+ 0xFF18, 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F,
+ 0xFF20, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27,
+ 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F,
+ 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37,
+ 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3C, 0xFF3D, 0xFF3E, 0xFF3F,
+ 0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47,
+ 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F,
+ 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57,
+ 0xFF58, 0xFF59, 0xFF5A, 0xFF5B, 0xFF5C, 0xFF5D, 0xFFE3,
+ /* Skip: GB 0xA440..0xA47E, 0xA480..0xA4A0 (UDA 3) */
+ /* GB 0xA5A1..0xA5FE */
+ 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047,
+ 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F,
+ 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057,
+ 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F,
+ 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067,
+ 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F,
+ 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077,
+ 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F,
+ 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087,
+ 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F,
+ 0x3090, 0x3091, 0x3092, 0x3093, 0xE772, 0xE773, 0xE774, 0xE775,
+ 0xE776, 0xE777, 0xE778, 0xE779, 0xE77A, 0xE77B, 0xE77C,
+ /* Skip: GB 0xA540..0xA57E, 0xA580..0xA5A0 (UDA 3) */
+ /* GB 0xA6A1..0xA6FE */
+ 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7,
+ 0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF,
+ 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7,
+ 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF,
+ 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7,
+ 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF,
+ 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7,
+ 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF,
+ 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7,
+ 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF,
+ 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0xE77D,
+ 0xE77E, 0xE77F, 0xE780, 0xE781, 0xE782, 0xE783, 0xE784,
+ /* Skip: GB 0xA640..0xA67E, 0xA680..0xA6A0 (UDA 3) */
+ /* GB 0xA7A1..0xA7FE */
+ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+ 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
+ 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8,
+ 0x03A9, 0xE785, 0xE786, 0xE787, 0xE788, 0xE789, 0xE78A, 0xE78B,
+ 0xE78C, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7,
+ 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,
+ 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8,
+ 0x03C9, 0xE78D, 0xE78E, 0xE78F, 0xE790, 0xE791, 0xE792, 0xE793,
+ 0xFE35, 0xFE36, 0xFE39, 0xFE3A, 0xFE3F, 0xFE40, 0xFE3D, 0xFE3E,
+ 0xFE41, 0xFE42, 0xFE43, 0xFE44, 0xE794, 0xE795, 0xFE3B, 0xFE3C,
+ 0xFE37, 0xFE38, 0xFE31, 0xE796, 0xFE33, 0xFE34, 0xE797, 0xE798,
+ 0xE799, 0xE79A, 0xE79B, 0xE79C, 0xE79D, 0xE79E, 0xE79F,
+ /* Skip: GB 0xA740..0xA77E, 0xA780..0xA7A0 (UDA 3) */
+ /* GB 0xA8A1..0xA8FE */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401,
+ 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D,
+ 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425,
+ 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D,
+ 0x042E, 0x042F, 0xE7A0, 0xE7A1, 0xE7A2, 0xE7A3, 0xE7A4, 0xE7A5,
+ 0xE7A6, 0xE7A7, 0xE7A8, 0xE7A9, 0xE7AA, 0xE7AB, 0xE7AC, 0xE7AD,
+ 0xE7AE, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451,
+ 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D,
+ 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445,
+ 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D,
+ 0x044E, 0x044F, 0xE7AF, 0xE7B0, 0xE7B1, 0xE7B2, 0xE7B3, 0xE7B4,
+ 0xE7B5, 0xE7B6, 0xE7B7, 0xE7B8, 0xE7B9, 0xE7BA, 0xE7BB,
+ /* GB 0xA840..0xA87E */
+ 0x02CA, 0x02CB, 0x02D9, 0x2013, 0x2015, 0x2025, 0x2035, 0x2105,
+ 0x2109, 0x2196, 0x2197, 0x2198, 0x2199, 0x2215, 0x221F, 0x2223,
+ 0x2252, 0x2266, 0x2267, 0x22BF, 0x2550, 0x2551, 0x2552, 0x2553,
+ 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255A, 0x255B,
+ 0x255C, 0x255D, 0x255E, 0x255F, 0x2560, 0x2561, 0x2562, 0x2563,
+ 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B,
+ 0x256C, 0x256D, 0x256E, 0x256F, 0x2570, 0x2571, 0x2572, 0x2573,
+ 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587,
+ /* GB 0xA880..0xA8FE */
+ 0x2588, 0x2589, 0x258A, 0x258B, 0x258C, 0x258D, 0x258E, 0x258F,
+ 0x2593, 0x2594, 0x2595, 0x25BC, 0x25BD, 0x25E2, 0x25E3, 0x25E4,
+ 0x25E5, 0x2609, 0x2295, 0x3012, 0x301D, 0x301E, 0xE7BC, 0xE7BD,
+ 0xE7BE, 0xE7BF, 0xE7C0, 0xE7C1, 0xE7C2, 0xE7C3, 0xE7C4, 0xE7C5,
+ 0xE7C6, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B,
+ 0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2,
+ 0x00F2, 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA,
+ 0x01DC, 0x00FC, 0x00EA, 0x0251, 0xE7C7, 0x0144, 0x0148, 0x01F9,
+ 0x0261, 0xE7C9, 0xE7CA, 0xE7CB, 0xE7CC, 0x3105, 0x3106, 0x3107,
+ 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, 0x310F,
+ 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117,
+ 0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, 0x311F,
+ 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127,
+ 0x3128, 0x3129, 0xE7CD, 0xE7CE, 0xE7CF, 0xE7D0, 0xE7D1, 0xE7D2,
+ 0xE7D3, 0xE7D4, 0xE7D5, 0xE7D6, 0xE7D7, 0xE7D8, 0xE7D9, 0xE7DA,
+ 0xE7DB, 0xE7DC, 0xE7DD, 0xE7DE, 0xE7DF, 0xE7E0, 0xE7E1,
+ /* GB 0xA940..0xA97E */
+ 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028,
+ 0x3029, 0x32A3, 0x338E, 0x338F, 0x339C, 0x339D, 0x339E, 0x33A1,
+ 0x33C4, 0x33CE, 0x33D1, 0x33D2, 0x33D5, 0xFE30, 0xFFE2, 0xFFE4,
+ 0xE7E2, 0x2121, 0x3231, 0xE7E3, 0x2010, 0xE7E4, 0xE7E5, 0xE7E6,
+ 0x30FC, 0x309B, 0x309C, 0x30FD, 0x30FE, 0x3006, 0x309D, 0x309E,
+ 0xFE49, 0xFE4A, 0xFE4B, 0xFE4C, 0xFE4D, 0xFE4E, 0xFE4F, 0xFE50,
+ 0xFE51, 0xFE52, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFE59, 0xFE5A,
+ 0xFE5B, 0xFE5C, 0xFE5D, 0xFE5E, 0xFE5F, 0xFE60, 0xFE61,
+ /* GB 0xA980..0xA9FE */
+ 0xFE62, 0xFE63, 0xFE64, 0xFE65, 0xFE66, 0xFE68, 0xFE69, 0xFE6A,
+ 0xFE6B, 0x303E, 0x2FF0, 0x2FF1, 0x2FF2, 0x2FF3, 0x2FF4, 0x2FF5,
+ 0x2FF6, 0x2FF7, 0x2FF8, 0x2FF9, 0x2FFA, 0x2FFB, 0x3007, 0xE7F4,
+ 0xE7F5, 0xE7F6, 0xE7F7, 0xE7F8, 0xE7F9, 0xE7FA, 0xE7FB, 0xE7FC,
+ 0xE7FD, 0xE7FE, 0xE7FF, 0xE800, 0x2500, 0x2501, 0x2502, 0x2503,
+ 0x2504, 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250A, 0x250B,
+ 0x250C, 0x250D, 0x250E, 0x250F, 0x2510, 0x2511, 0x2512, 0x2513,
+ 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, 0x251B,
+ 0x251C, 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523,
+ 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B,
+ 0x252C, 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533,
+ 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B,
+ 0x253C, 0x253D, 0x253E, 0x253F, 0x2540, 0x2541, 0x2542, 0x2543,
+ 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254A, 0x254B,
+ 0xE801, 0xE802, 0xE803, 0xE804, 0xE805, 0xE806, 0xE807, 0xE808,
+ 0xE809, 0xE80A, 0xE80B, 0xE80C, 0xE80D, 0xE80E, 0xE80F,
+ /* GB 0xAA40..0xAA7E */
+ 0x72DC, 0x72DD, 0x72DF, 0x72E2, 0x72E3, 0x72E4, 0x72E5, 0x72E6,
+ 0x72E7, 0x72EA, 0x72EB, 0x72F5, 0x72F6, 0x72F9, 0x72FD, 0x72FE,
+ 0x72FF, 0x7300, 0x7302, 0x7304, 0x7305, 0x7306, 0x7307, 0x7308,
+ 0x7309, 0x730B, 0x730C, 0x730D, 0x730F, 0x7310, 0x7311, 0x7312,
+ 0x7314, 0x7318, 0x7319, 0x731A, 0x731F, 0x7320, 0x7323, 0x7324,
+ 0x7326, 0x7327, 0x7328, 0x732D, 0x732F, 0x7330, 0x7332, 0x7333,
+ 0x7335, 0x7336, 0x733A, 0x733B, 0x733C, 0x733D, 0x7340, 0x7341,
+ 0x7342, 0x7343, 0x7344, 0x7345, 0x7346, 0x7347, 0x7348,
+ /* GB 0xAA80..0xAAA0 */
+ 0x7349, 0x734A, 0x734B, 0x734C, 0x734E, 0x734F, 0x7351, 0x7353,
+ 0x7354, 0x7355, 0x7356, 0x7358, 0x7359, 0x735A, 0x735B, 0x735C,
+ 0x735D, 0x735E, 0x735F, 0x7361, 0x7362, 0x7363, 0x7364, 0x7365,
+ 0x7366, 0x7367, 0x7368, 0x7369, 0x736A, 0x736B, 0x736E, 0x7370,
+ 0x7371, /* Skip: GB 0xAAA1..0xAAFE (UDA 1) */
+ /* GB 0xAB40..0xAB7E */
+ 0x7372, 0x7373, 0x7374, 0x7375, 0x7376, 0x7377, 0x7378, 0x7379,
+ 0x737A, 0x737B, 0x737C, 0x737D, 0x737F, 0x7380, 0x7381, 0x7382,
+ 0x7383, 0x7385, 0x7386, 0x7388, 0x738A, 0x738C, 0x738D, 0x738F,
+ 0x7390, 0x7392, 0x7393, 0x7394, 0x7395, 0x7397, 0x7398, 0x7399,
+ 0x739A, 0x739C, 0x739D, 0x739E, 0x73A0, 0x73A1, 0x73A3, 0x73A4,
+ 0x73A5, 0x73A6, 0x73A7, 0x73A8, 0x73AA, 0x73AC, 0x73AD, 0x73B1,
+ 0x73B4, 0x73B5, 0x73B6, 0x73B8, 0x73B9, 0x73BC, 0x73BD, 0x73BE,
+ 0x73BF, 0x73C1, 0x73C3, 0x73C4, 0x73C5, 0x73C6, 0x73C7,
+ /* GB 0xAB80..0xABA0 */
+ 0x73CB, 0x73CC, 0x73CE, 0x73D2, 0x73D3, 0x73D4, 0x73D5, 0x73D6,
+ 0x73D7, 0x73D8, 0x73DA, 0x73DB, 0x73DC, 0x73DD, 0x73DF, 0x73E1,
+ 0x73E2, 0x73E3, 0x73E4, 0x73E6, 0x73E8, 0x73EA, 0x73EB, 0x73EC,
+ 0x73EE, 0x73EF, 0x73F0, 0x73F1, 0x73F3, 0x73F4, 0x73F5, 0x73F6,
+ 0x73F7, /* Skip: GB 0xABA1..0xABFE (UDA 1) */
+ /* GB 0xAC40..0xAC7E */
+ 0x73F8, 0x73F9, 0x73FA, 0x73FB, 0x73FC, 0x73FD, 0x73FE, 0x73FF,
+ 0x7400, 0x7401, 0x7402, 0x7404, 0x7407, 0x7408, 0x740B, 0x740C,
+ 0x740D, 0x740E, 0x7411, 0x7412, 0x7413, 0x7414, 0x7415, 0x7416,
+ 0x7417, 0x7418, 0x7419, 0x741C, 0x741D, 0x741E, 0x741F, 0x7420,
+ 0x7421, 0x7423, 0x7424, 0x7427, 0x7429, 0x742B, 0x742D, 0x742F,
+ 0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743A, 0x743B, 0x743D,
+ 0x743E, 0x743F, 0x7440, 0x7442, 0x7443, 0x7444, 0x7445, 0x7446,
+ 0x7447, 0x7448, 0x7449, 0x744A, 0x744B, 0x744C, 0x744D,
+ /* GB 0xAC80..0xACA0 */
+ 0x744E, 0x744F, 0x7450, 0x7451, 0x7452, 0x7453, 0x7454, 0x7456,
+ 0x7458, 0x745D, 0x7460, 0x7461, 0x7462, 0x7463, 0x7464, 0x7465,
+ 0x7466, 0x7467, 0x7468, 0x7469, 0x746A, 0x746B, 0x746C, 0x746E,
+ 0x746F, 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478, 0x7479,
+ 0x747A, /* Skip: GB 0xACA1..0xACFE (UDA 1) */
+ /* GB 0xAD40..0xAD7E */
+ 0x747B, 0x747C, 0x747D, 0x747F, 0x7482, 0x7484, 0x7485, 0x7486,
+ 0x7488, 0x7489, 0x748A, 0x748C, 0x748D, 0x748F, 0x7491, 0x7492,
+ 0x7493, 0x7494, 0x7495, 0x7496, 0x7497, 0x7498, 0x7499, 0x749A,
+ 0x749B, 0x749D, 0x749F, 0x74A0, 0x74A1, 0x74A2, 0x74A3, 0x74A4,
+ 0x74A5, 0x74A6, 0x74AA, 0x74AB, 0x74AC, 0x74AD, 0x74AE, 0x74AF,
+ 0x74B0, 0x74B1, 0x74B2, 0x74B3, 0x74B4, 0x74B5, 0x74B6, 0x74B7,
+ 0x74B8, 0x74B9, 0x74BB, 0x74BC, 0x74BD, 0x74BE, 0x74BF, 0x74C0,
+ 0x74C1, 0x74C2, 0x74C3, 0x74C4, 0x74C5, 0x74C6, 0x74C7,
+ /* GB 0xAD80..0xADA0 */
+ 0x74C8, 0x74C9, 0x74CA, 0x74CB, 0x74CC, 0x74CD, 0x74CE, 0x74CF,
+ 0x74D0, 0x74D1, 0x74D3, 0x74D4, 0x74D5, 0x74D6, 0x74D7, 0x74D8,
+ 0x74D9, 0x74DA, 0x74DB, 0x74DD, 0x74DF, 0x74E1, 0x74E5, 0x74E7,
+ 0x74E8, 0x74E9, 0x74EA, 0x74EB, 0x74EC, 0x74ED, 0x74F0, 0x74F1,
+ 0x74F2, /* Skip: GB 0xADA1..0xADFE (UDA 1) */
+ /* GB 0xAE40..0xAE7E */
+ 0x74F3, 0x74F5, 0x74F8, 0x74F9, 0x74FA, 0x74FB, 0x74FC, 0x74FD,
+ 0x74FE, 0x7500, 0x7501, 0x7502, 0x7503, 0x7505, 0x7506, 0x7507,
+ 0x7508, 0x7509, 0x750A, 0x750B, 0x750C, 0x750E, 0x7510, 0x7512,
+ 0x7514, 0x7515, 0x7516, 0x7517, 0x751B, 0x751D, 0x751E, 0x7520,
+ 0x7521, 0x7522, 0x7523, 0x7524, 0x7526, 0x7527, 0x752A, 0x752E,
+ 0x7534, 0x7536, 0x7539, 0x753C, 0x753D, 0x753F, 0x7541, 0x7542,
+ 0x7543, 0x7544, 0x7546, 0x7547, 0x7549, 0x754A, 0x754D, 0x7550,
+ 0x7551, 0x7552, 0x7553, 0x7555, 0x7556, 0x7557, 0x7558,
+ /* GB 0xAE80..0xAEA0 */
+ 0x755D, 0x755E, 0x755F, 0x7560, 0x7561, 0x7562, 0x7563, 0x7564,
+ 0x7567, 0x7568, 0x7569, 0x756B, 0x756C, 0x756D, 0x756E, 0x756F,
+ 0x7570, 0x7571, 0x7573, 0x7575, 0x7576, 0x7577, 0x757A, 0x757B,
+ 0x757C, 0x757D, 0x757E, 0x7580, 0x7581, 0x7582, 0x7584, 0x7585,
+ 0x7587, /* Skip: GB 0xAEA1..0xAEFE (UDA 1) */
+ /* GB 0xAF40..0xAF7E */
+ 0x7588, 0x7589, 0x758A, 0x758C, 0x758D, 0x758E, 0x7590, 0x7593,
+ 0x7595, 0x7598, 0x759B, 0x759C, 0x759E, 0x75A2, 0x75A6, 0x75A7,
+ 0x75A8, 0x75A9, 0x75AA, 0x75AD, 0x75B6, 0x75B7, 0x75BA, 0x75BB,
+ 0x75BF, 0x75C0, 0x75C1, 0x75C6, 0x75CB, 0x75CC, 0x75CE, 0x75CF,
+ 0x75D0, 0x75D1, 0x75D3, 0x75D7, 0x75D9, 0x75DA, 0x75DC, 0x75DD,
+ 0x75DF, 0x75E0, 0x75E1, 0x75E5, 0x75E9, 0x75EC, 0x75ED, 0x75EE,
+ 0x75EF, 0x75F2, 0x75F3, 0x75F5, 0x75F6, 0x75F7, 0x75F8, 0x75FA,
+ 0x75FB, 0x75FD, 0x75FE, 0x7602, 0x7604, 0x7606, 0x7607,
+ /* GB 0xAF80..0xAFA0 */
+ 0x7608, 0x7609, 0x760B, 0x760D, 0x760E, 0x760F, 0x7611, 0x7612,
+ 0x7613, 0x7614, 0x7616, 0x761A, 0x761C, 0x761D, 0x761E, 0x7621,
+ 0x7623, 0x7627, 0x7628, 0x762C, 0x762E, 0x762F, 0x7631, 0x7632,
+ 0x7636, 0x7637, 0x7639, 0x763A, 0x763B, 0x763D, 0x7641, 0x7642,
+ 0x7644, /* Skip: GB 0xAFA1..0xAFFE (UDA 1) */
+ /* GB 0xB040..0xB07E */
+ 0x7645, 0x7646, 0x7647, 0x7648, 0x7649, 0x764A, 0x764B, 0x764E,
+ 0x764F, 0x7650, 0x7651, 0x7652, 0x7653, 0x7655, 0x7657, 0x7658,
+ 0x7659, 0x765A, 0x765B, 0x765D, 0x765F, 0x7660, 0x7661, 0x7662,
+ 0x7664, 0x7665, 0x7666, 0x7667, 0x7668, 0x7669, 0x766A, 0x766C,
+ 0x766D, 0x766E, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x7675,
+ 0x7676, 0x7677, 0x7679, 0x767A, 0x767C, 0x767F, 0x7680, 0x7681,
+ 0x7683, 0x7685, 0x7689, 0x768A, 0x768C, 0x768D, 0x768F, 0x7690,
+ 0x7692, 0x7694, 0x7695, 0x7697, 0x7698, 0x769A, 0x769B,
+ /* GB 0xB080..0xB0FE */
+ 0x769C, 0x769D, 0x769E, 0x769F, 0x76A0, 0x76A1, 0x76A2, 0x76A3,
+ 0x76A5, 0x76A6, 0x76A7, 0x76A8, 0x76A9, 0x76AA, 0x76AB, 0x76AC,
+ 0x76AD, 0x76AF, 0x76B0, 0x76B3, 0x76B5, 0x76B6, 0x76B7, 0x76B8,
+ 0x76B9, 0x76BA, 0x76BB, 0x76BC, 0x76BD, 0x76BE, 0x76C0, 0x76C1,
+ 0x76C3, 0x554A, 0x963F, 0x57C3, 0x6328, 0x54CE, 0x5509, 0x54C0,
+ 0x7691, 0x764C, 0x853C, 0x77EE, 0x827E, 0x788D, 0x7231, 0x9698,
+ 0x978D, 0x6C28, 0x5B89, 0x4FFA, 0x6309, 0x6697, 0x5CB8, 0x80FA,
+ 0x6848, 0x80AE, 0x6602, 0x76CE, 0x51F9, 0x6556, 0x71AC, 0x7FF1,
+ 0x8884, 0x50B2, 0x5965, 0x61CA, 0x6FB3, 0x82AD, 0x634C, 0x6252,
+ 0x53ED, 0x5427, 0x7B06, 0x516B, 0x75A4, 0x5DF4, 0x62D4, 0x8DCB,
+ 0x9776, 0x628A, 0x8019, 0x575D, 0x9738, 0x7F62, 0x7238, 0x767D,
+ 0x67CF, 0x767E, 0x6446, 0x4F70, 0x8D25, 0x62DC, 0x7A17, 0x6591,
+ 0x73ED, 0x642C, 0x6273, 0x822C, 0x9881, 0x677F, 0x7248, 0x626E,
+ 0x62CC, 0x4F34, 0x74E3, 0x534A, 0x529E, 0x7ECA, 0x90A6, 0x5E2E,
+ 0x6886, 0x699C, 0x8180, 0x7ED1, 0x68D2, 0x78C5, 0x868C, 0x9551,
+ 0x508D, 0x8C24, 0x82DE, 0x80DE, 0x5305, 0x8912, 0x5265,
+ /* GB 0xB140..0xB17E */
+ 0x76C4, 0x76C7, 0x76C9, 0x76CB, 0x76CC, 0x76D3, 0x76D5, 0x76D9,
+ 0x76DA, 0x76DC, 0x76DD, 0x76DE, 0x76E0, 0x76E1, 0x76E2, 0x76E3,
+ 0x76E4, 0x76E6, 0x76E7, 0x76E8, 0x76E9, 0x76EA, 0x76EB, 0x76EC,
+ 0x76ED, 0x76F0, 0x76F3, 0x76F5, 0x76F6, 0x76F7, 0x76FA, 0x76FB,
+ 0x76FD, 0x76FF, 0x7700, 0x7702, 0x7703, 0x7705, 0x7706, 0x770A,
+ 0x770C, 0x770E, 0x770F, 0x7710, 0x7711, 0x7712, 0x7713, 0x7714,
+ 0x7715, 0x7716, 0x7717, 0x7718, 0x771B, 0x771C, 0x771D, 0x771E,
+ 0x7721, 0x7723, 0x7724, 0x7725, 0x7727, 0x772A, 0x772B,
+ /* GB 0xB180..0xB1FE */
+ 0x772C, 0x772E, 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7739,
+ 0x773B, 0x773D, 0x773E, 0x773F, 0x7742, 0x7744, 0x7745, 0x7746,
+ 0x7748, 0x7749, 0x774A, 0x774B, 0x774C, 0x774D, 0x774E, 0x774F,
+ 0x7752, 0x7753, 0x7754, 0x7755, 0x7756, 0x7757, 0x7758, 0x7759,
+ 0x775C, 0x8584, 0x96F9, 0x4FDD, 0x5821, 0x9971, 0x5B9D, 0x62B1,
+ 0x62A5, 0x66B4, 0x8C79, 0x9C8D, 0x7206, 0x676F, 0x7891, 0x60B2,
+ 0x5351, 0x5317, 0x8F88, 0x80CC, 0x8D1D, 0x94A1, 0x500D, 0x72C8,
+ 0x5907, 0x60EB, 0x7119, 0x88AB, 0x5954, 0x82EF, 0x672C, 0x7B28,
+ 0x5D29, 0x7EF7, 0x752D, 0x6CF5, 0x8E66, 0x8FF8, 0x903C, 0x9F3B,
+ 0x6BD4, 0x9119, 0x7B14, 0x5F7C, 0x78A7, 0x84D6, 0x853D, 0x6BD5,
+ 0x6BD9, 0x6BD6, 0x5E01, 0x5E87, 0x75F9, 0x95ED, 0x655D, 0x5F0A,
+ 0x5FC5, 0x8F9F, 0x58C1, 0x81C2, 0x907F, 0x965B, 0x97AD, 0x8FB9,
+ 0x7F16, 0x8D2C, 0x6241, 0x4FBF, 0x53D8, 0x535E, 0x8FA8, 0x8FA9,
+ 0x8FAB, 0x904D, 0x6807, 0x5F6A, 0x8198, 0x8868, 0x9CD6, 0x618B,
+ 0x522B, 0x762A, 0x5F6C, 0x658C, 0x6FD2, 0x6EE8, 0x5BBE, 0x6448,
+ 0x5175, 0x51B0, 0x67C4, 0x4E19, 0x79C9, 0x997C, 0x70B3,
+ /* GB 0xB240..0xB27E */
+ 0x775D, 0x775E, 0x775F, 0x7760, 0x7764, 0x7767, 0x7769, 0x776A,
+ 0x776D, 0x776E, 0x776F, 0x7770, 0x7771, 0x7772, 0x7773, 0x7774,
+ 0x7775, 0x7776, 0x7777, 0x7778, 0x777A, 0x777B, 0x777C, 0x7781,
+ 0x7782, 0x7783, 0x7786, 0x7787, 0x7788, 0x7789, 0x778A, 0x778B,
+ 0x778F, 0x7790, 0x7793, 0x7794, 0x7795, 0x7796, 0x7797, 0x7798,
+ 0x7799, 0x779A, 0x779B, 0x779C, 0x779D, 0x779E, 0x77A1, 0x77A3,
+ 0x77A4, 0x77A6, 0x77A8, 0x77AB, 0x77AD, 0x77AE, 0x77AF, 0x77B1,
+ 0x77B2, 0x77B4, 0x77B6, 0x77B7, 0x77B8, 0x77B9, 0x77BA,
+ /* GB 0xB280..0xB2FE */
+ 0x77BC, 0x77BE, 0x77C0, 0x77C1, 0x77C2, 0x77C3, 0x77C4, 0x77C5,
+ 0x77C6, 0x77C7, 0x77C8, 0x77C9, 0x77CA, 0x77CB, 0x77CC, 0x77CE,
+ 0x77CF, 0x77D0, 0x77D1, 0x77D2, 0x77D3, 0x77D4, 0x77D5, 0x77D6,
+ 0x77D8, 0x77D9, 0x77DA, 0x77DD, 0x77DE, 0x77DF, 0x77E0, 0x77E1,
+ 0x77E4, 0x75C5, 0x5E76, 0x73BB, 0x83E0, 0x64AD, 0x62E8, 0x94B5,
+ 0x6CE2, 0x535A, 0x52C3, 0x640F, 0x94C2, 0x7B94, 0x4F2F, 0x5E1B,
+ 0x8236, 0x8116, 0x818A, 0x6E24, 0x6CCA, 0x9A73, 0x6355, 0x535C,
+ 0x54FA, 0x8865, 0x57E0, 0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8,
+ 0x6016, 0x64E6, 0x731C, 0x88C1, 0x6750, 0x624D, 0x8D22, 0x776C,
+ 0x8E29, 0x91C7, 0x5F69, 0x83DC, 0x8521, 0x9910, 0x53C2, 0x8695,
+ 0x6B8B, 0x60ED, 0x60E8, 0x707F, 0x82CD, 0x8231, 0x4ED3, 0x6CA7,
+ 0x85CF, 0x64CD, 0x7CD9, 0x69FD, 0x66F9, 0x8349, 0x5395, 0x7B56,
+ 0x4FA7, 0x518C, 0x6D4B, 0x5C42, 0x8E6D, 0x63D2, 0x53C9, 0x832C,
+ 0x8336, 0x67E5, 0x78B4, 0x643D, 0x5BDF, 0x5C94, 0x5DEE, 0x8BE7,
+ 0x62C6, 0x67F4, 0x8C7A, 0x6400, 0x63BA, 0x8749, 0x998B, 0x8C17,
+ 0x7F20, 0x94F2, 0x4EA7, 0x9610, 0x98A4, 0x660C, 0x7316,
+ /* GB 0xB340..0xB37E */
+ 0x77E6, 0x77E8, 0x77EA, 0x77EF, 0x77F0, 0x77F1, 0x77F2, 0x77F4,
+ 0x77F5, 0x77F7, 0x77F9, 0x77FA, 0x77FB, 0x77FC, 0x7803, 0x7804,
+ 0x7805, 0x7806, 0x7807, 0x7808, 0x780A, 0x780B, 0x780E, 0x780F,
+ 0x7810, 0x7813, 0x7815, 0x7819, 0x781B, 0x781E, 0x7820, 0x7821,
+ 0x7822, 0x7824, 0x7828, 0x782A, 0x782B, 0x782E, 0x782F, 0x7831,
+ 0x7832, 0x7833, 0x7835, 0x7836, 0x783D, 0x783F, 0x7841, 0x7842,
+ 0x7843, 0x7844, 0x7846, 0x7848, 0x7849, 0x784A, 0x784B, 0x784D,
+ 0x784F, 0x7851, 0x7853, 0x7854, 0x7858, 0x7859, 0x785A,
+ /* GB 0xB380..0xB3FE */
+ 0x785B, 0x785C, 0x785E, 0x785F, 0x7860, 0x7861, 0x7862, 0x7863,
+ 0x7864, 0x7865, 0x7866, 0x7867, 0x7868, 0x7869, 0x786F, 0x7870,
+ 0x7871, 0x7872, 0x7873, 0x7874, 0x7875, 0x7876, 0x7878, 0x7879,
+ 0x787A, 0x787B, 0x787D, 0x787E, 0x787F, 0x7880, 0x7881, 0x7882,
+ 0x7883, 0x573A, 0x5C1D, 0x5E38, 0x957F, 0x507F, 0x80A0, 0x5382,
+ 0x655E, 0x7545, 0x5531, 0x5021, 0x8D85, 0x6284, 0x949E, 0x671D,
+ 0x5632, 0x6F6E, 0x5DE2, 0x5435, 0x7092, 0x8F66, 0x626F, 0x64A4,
+ 0x63A3, 0x5F7B, 0x6F88, 0x90F4, 0x81E3, 0x8FB0, 0x5C18, 0x6668,
+ 0x5FF1, 0x6C89, 0x9648, 0x8D81, 0x886C, 0x6491, 0x79F0, 0x57CE,
+ 0x6A59, 0x6210, 0x5448, 0x4E58, 0x7A0B, 0x60E9, 0x6F84, 0x8BDA,
+ 0x627F, 0x901E, 0x9A8B, 0x79E4, 0x5403, 0x75F4, 0x6301, 0x5319,
+ 0x6C60, 0x8FDF, 0x5F1B, 0x9A70, 0x803B, 0x9F7F, 0x4F88, 0x5C3A,
+ 0x8D64, 0x7FC5, 0x65A5, 0x70BD, 0x5145, 0x51B2, 0x866B, 0x5D07,
+ 0x5BA0, 0x62BD, 0x916C, 0x7574, 0x8E0C, 0x7A20, 0x6101, 0x7B79,
+ 0x4EC7, 0x7EF8, 0x7785, 0x4E11, 0x81ED, 0x521D, 0x51FA, 0x6A71,
+ 0x53A8, 0x8E87, 0x9504, 0x96CF, 0x6EC1, 0x9664, 0x695A,
+ /* GB 0xB440..0xB47E */
+ 0x7884, 0x7885, 0x7886, 0x7888, 0x788A, 0x788B, 0x788F, 0x7890,
+ 0x7892, 0x7894, 0x7895, 0x7896, 0x7899, 0x789D, 0x789E, 0x78A0,
+ 0x78A2, 0x78A4, 0x78A6, 0x78A8, 0x78A9, 0x78AA, 0x78AB, 0x78AC,
+ 0x78AD, 0x78AE, 0x78AF, 0x78B5, 0x78B6, 0x78B7, 0x78B8, 0x78BA,
+ 0x78BB, 0x78BC, 0x78BD, 0x78BF, 0x78C0, 0x78C2, 0x78C3, 0x78C4,
+ 0x78C6, 0x78C7, 0x78C8, 0x78CC, 0x78CD, 0x78CE, 0x78CF, 0x78D1,
+ 0x78D2, 0x78D3, 0x78D6, 0x78D7, 0x78D8, 0x78DA, 0x78DB, 0x78DC,
+ 0x78DD, 0x78DE, 0x78DF, 0x78E0, 0x78E1, 0x78E2, 0x78E3,
+ /* GB 0xB480..0xB4FE */
+ 0x78E4, 0x78E5, 0x78E6, 0x78E7, 0x78E9, 0x78EA, 0x78EB, 0x78ED,
+ 0x78EE, 0x78EF, 0x78F0, 0x78F1, 0x78F3, 0x78F5, 0x78F6, 0x78F8,
+ 0x78F9, 0x78FB, 0x78FC, 0x78FD, 0x78FE, 0x78FF, 0x7900, 0x7902,
+ 0x7903, 0x7904, 0x7906, 0x7907, 0x7908, 0x7909, 0x790A, 0x790B,
+ 0x790C, 0x7840, 0x50A8, 0x77D7, 0x6410, 0x89E6, 0x5904, 0x63E3,
+ 0x5DDD, 0x7A7F, 0x693D, 0x4F20, 0x8239, 0x5598, 0x4E32, 0x75AE,
+ 0x7A97, 0x5E62, 0x5E8A, 0x95EF, 0x521B, 0x5439, 0x708A, 0x6376,
+ 0x9524, 0x5782, 0x6625, 0x693F, 0x9187, 0x5507, 0x6DF3, 0x7EAF,
+ 0x8822, 0x6233, 0x7EF0, 0x75B5, 0x8328, 0x78C1, 0x96CC, 0x8F9E,
+ 0x6148, 0x74F7, 0x8BCD, 0x6B64, 0x523A, 0x8D50, 0x6B21, 0x806A,
+ 0x8471, 0x56F1, 0x5306, 0x4ECE, 0x4E1B, 0x51D1, 0x7C97, 0x918B,
+ 0x7C07, 0x4FC3, 0x8E7F, 0x7BE1, 0x7A9C, 0x6467, 0x5D14, 0x50AC,
+ 0x8106, 0x7601, 0x7CB9, 0x6DEC, 0x7FE0, 0x6751, 0x5B58, 0x5BF8,
+ 0x78CB, 0x64AE, 0x6413, 0x63AA, 0x632B, 0x9519, 0x642D, 0x8FBE,
+ 0x7B54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6B79, 0x50A3, 0x6234,
+ 0x5E26, 0x6B86, 0x4EE3, 0x8D37, 0x888B, 0x5F85, 0x902E,
+ /* GB 0xB540..0xB57E */
+ 0x790D, 0x790E, 0x790F, 0x7910, 0x7911, 0x7912, 0x7914, 0x7915,
+ 0x7916, 0x7917, 0x7918, 0x7919, 0x791A, 0x791B, 0x791C, 0x791D,
+ 0x791F, 0x7920, 0x7921, 0x7922, 0x7923, 0x7925, 0x7926, 0x7927,
+ 0x7928, 0x7929, 0x792A, 0x792B, 0x792C, 0x792D, 0x792E, 0x792F,
+ 0x7930, 0x7931, 0x7932, 0x7933, 0x7935, 0x7936, 0x7937, 0x7938,
+ 0x7939, 0x793D, 0x793F, 0x7942, 0x7943, 0x7944, 0x7945, 0x7947,
+ 0x794A, 0x794B, 0x794C, 0x794D, 0x794E, 0x794F, 0x7950, 0x7951,
+ 0x7952, 0x7954, 0x7955, 0x7958, 0x7959, 0x7961, 0x7963,
+ /* GB 0xB580..0xB5FE */
+ 0x7964, 0x7966, 0x7969, 0x796A, 0x796B, 0x796C, 0x796E, 0x7970,
+ 0x7971, 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7979, 0x797B,
+ 0x797C, 0x797D, 0x797E, 0x797F, 0x7982, 0x7983, 0x7986, 0x7987,
+ 0x7988, 0x7989, 0x798B, 0x798C, 0x798D, 0x798E, 0x7990, 0x7991,
+ 0x7992, 0x6020, 0x803D, 0x62C5, 0x4E39, 0x5355, 0x90F8, 0x63B8,
+ 0x80C6, 0x65E6, 0x6C2E, 0x4F46, 0x60EE, 0x6DE1, 0x8BDE, 0x5F39,
+ 0x86CB, 0x5F53, 0x6321, 0x515A, 0x8361, 0x6863, 0x5200, 0x6363,
+ 0x8E48, 0x5012, 0x5C9B, 0x7977, 0x5BFC, 0x5230, 0x7A3B, 0x60BC,
+ 0x9053, 0x76D7, 0x5FB7, 0x5F97, 0x7684, 0x8E6C, 0x706F, 0x767B,
+ 0x7B49, 0x77AA, 0x51F3, 0x9093, 0x5824, 0x4F4E, 0x6EF4, 0x8FEA,
+ 0x654C, 0x7B1B, 0x72C4, 0x6DA4, 0x7FDF, 0x5AE1, 0x62B5, 0x5E95,
+ 0x5730, 0x8482, 0x7B2C, 0x5E1D, 0x5F1F, 0x9012, 0x7F14, 0x98A0,
+ 0x6382, 0x6EC7, 0x7898, 0x70B9, 0x5178, 0x975B, 0x57AB, 0x7535,
+ 0x4F43, 0x7538, 0x5E97, 0x60E6, 0x5960, 0x6DC0, 0x6BBF, 0x7889,
+ 0x53FC, 0x96D5, 0x51CB, 0x5201, 0x6389, 0x540A, 0x9493, 0x8C03,
+ 0x8DCC, 0x7239, 0x789F, 0x8776, 0x8FED, 0x8C0D, 0x53E0,
+ /* GB 0xB640..0xB67E */
+ 0x7993, 0x7994, 0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x799B,
+ 0x799C, 0x799D, 0x799E, 0x799F, 0x79A0, 0x79A1, 0x79A2, 0x79A3,
+ 0x79A4, 0x79A5, 0x79A6, 0x79A8, 0x79A9, 0x79AA, 0x79AB, 0x79AC,
+ 0x79AD, 0x79AE, 0x79AF, 0x79B0, 0x79B1, 0x79B2, 0x79B4, 0x79B5,
+ 0x79B6, 0x79B7, 0x79B8, 0x79BC, 0x79BF, 0x79C2, 0x79C4, 0x79C5,
+ 0x79C7, 0x79C8, 0x79CA, 0x79CC, 0x79CE, 0x79CF, 0x79D0, 0x79D3,
+ 0x79D4, 0x79D6, 0x79D7, 0x79D9, 0x79DA, 0x79DB, 0x79DC, 0x79DD,
+ 0x79DE, 0x79E0, 0x79E1, 0x79E2, 0x79E5, 0x79E8, 0x79EA,
+ /* GB 0xB680..0xB6FE */
+ 0x79EC, 0x79EE, 0x79F1, 0x79F2, 0x79F3, 0x79F4, 0x79F5, 0x79F6,
+ 0x79F7, 0x79F9, 0x79FA, 0x79FC, 0x79FE, 0x79FF, 0x7A01, 0x7A04,
+ 0x7A05, 0x7A07, 0x7A08, 0x7A09, 0x7A0A, 0x7A0C, 0x7A0F, 0x7A10,
+ 0x7A11, 0x7A12, 0x7A13, 0x7A15, 0x7A16, 0x7A18, 0x7A19, 0x7A1B,
+ 0x7A1C, 0x4E01, 0x76EF, 0x53EE, 0x9489, 0x9876, 0x9F0E, 0x952D,
+ 0x5B9A, 0x8BA2, 0x4E22, 0x4E1C, 0x51AC, 0x8463, 0x61C2, 0x52A8,
+ 0x680B, 0x4F97, 0x606B, 0x51BB, 0x6D1E, 0x515C, 0x6296, 0x6597,
+ 0x9661, 0x8C46, 0x9017, 0x75D8, 0x90FD, 0x7763, 0x6BD2, 0x728A,
+ 0x72EC, 0x8BFB, 0x5835, 0x7779, 0x8D4C, 0x675C, 0x9540, 0x809A,
+ 0x5EA6, 0x6E21, 0x5992, 0x7AEF, 0x77ED, 0x953B, 0x6BB5, 0x65AD,
+ 0x7F0E, 0x5806, 0x5151, 0x961F, 0x5BF9, 0x58A9, 0x5428, 0x8E72,
+ 0x6566, 0x987F, 0x56E4, 0x949D, 0x76FE, 0x9041, 0x6387, 0x54C6,
+ 0x591A, 0x593A, 0x579B, 0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241,
+ 0x60F0, 0x5815, 0x86FE, 0x5CE8, 0x9E45, 0x4FC4, 0x989D, 0x8BB9,
+ 0x5A25, 0x6076, 0x5384, 0x627C, 0x904F, 0x9102, 0x997F, 0x6069,
+ 0x800C, 0x513F, 0x8033, 0x5C14, 0x9975, 0x6D31, 0x4E8C,
+ /* GB 0xB740..0xB77E */
+ 0x7A1D, 0x7A1F, 0x7A21, 0x7A22, 0x7A24, 0x7A25, 0x7A26, 0x7A27,
+ 0x7A28, 0x7A29, 0x7A2A, 0x7A2B, 0x7A2C, 0x7A2D, 0x7A2E, 0x7A2F,
+ 0x7A30, 0x7A31, 0x7A32, 0x7A34, 0x7A35, 0x7A36, 0x7A38, 0x7A3A,
+ 0x7A3E, 0x7A40, 0x7A41, 0x7A42, 0x7A43, 0x7A44, 0x7A45, 0x7A47,
+ 0x7A48, 0x7A49, 0x7A4A, 0x7A4B, 0x7A4C, 0x7A4D, 0x7A4E, 0x7A4F,
+ 0x7A50, 0x7A52, 0x7A53, 0x7A54, 0x7A55, 0x7A56, 0x7A58, 0x7A59,
+ 0x7A5A, 0x7A5B, 0x7A5C, 0x7A5D, 0x7A5E, 0x7A5F, 0x7A60, 0x7A61,
+ 0x7A62, 0x7A63, 0x7A64, 0x7A65, 0x7A66, 0x7A67, 0x7A68,
+ /* GB 0xB780..0xB7FE */
+ 0x7A69, 0x7A6A, 0x7A6B, 0x7A6C, 0x7A6D, 0x7A6E, 0x7A6F, 0x7A71,
+ 0x7A72, 0x7A73, 0x7A75, 0x7A7B, 0x7A7C, 0x7A7D, 0x7A7E, 0x7A82,
+ 0x7A85, 0x7A87, 0x7A89, 0x7A8A, 0x7A8B, 0x7A8C, 0x7A8E, 0x7A8F,
+ 0x7A90, 0x7A93, 0x7A94, 0x7A99, 0x7A9A, 0x7A9B, 0x7A9E, 0x7AA1,
+ 0x7AA2, 0x8D30, 0x53D1, 0x7F5A, 0x7B4F, 0x4F10, 0x4E4F, 0x9600,
+ 0x6CD5, 0x73D0, 0x85E9, 0x5E06, 0x756A, 0x7FFB, 0x6A0A, 0x77FE,
+ 0x9492, 0x7E41, 0x51E1, 0x70E6, 0x53CD, 0x8FD4, 0x8303, 0x8D29,
+ 0x72AF, 0x996D, 0x6CDB, 0x574A, 0x82B3, 0x65B9, 0x80AA, 0x623F,
+ 0x9632, 0x59A8, 0x4EFF, 0x8BBF, 0x7EBA, 0x653E, 0x83F2, 0x975E,
+ 0x5561, 0x98DE, 0x80A5, 0x532A, 0x8BFD, 0x5420, 0x80BA, 0x5E9F,
+ 0x6CB8, 0x8D39, 0x82AC, 0x915A, 0x5429, 0x6C1B, 0x5206, 0x7EB7,
+ 0x575F, 0x711A, 0x6C7E, 0x7C89, 0x594B, 0x4EFD, 0x5FFF, 0x6124,
+ 0x7CAA, 0x4E30, 0x5C01, 0x67AB, 0x8702, 0x5CF0, 0x950B, 0x98CE,
+ 0x75AF, 0x70FD, 0x9022, 0x51AF, 0x7F1D, 0x8BBD, 0x5949, 0x51E4,
+ 0x4F5B, 0x5426, 0x592B, 0x6577, 0x80A4, 0x5B75, 0x6276, 0x62C2,
+ 0x8F90, 0x5E45, 0x6C1F, 0x7B26, 0x4F0F, 0x4FD8, 0x670D,
+ /* GB 0xB840..0xB87E */
+ 0x7AA3, 0x7AA4, 0x7AA7, 0x7AA9, 0x7AAA, 0x7AAB, 0x7AAE, 0x7AAF,
+ 0x7AB0, 0x7AB1, 0x7AB2, 0x7AB4, 0x7AB5, 0x7AB6, 0x7AB7, 0x7AB8,
+ 0x7AB9, 0x7ABA, 0x7ABB, 0x7ABC, 0x7ABD, 0x7ABE, 0x7AC0, 0x7AC1,
+ 0x7AC2, 0x7AC3, 0x7AC4, 0x7AC5, 0x7AC6, 0x7AC7, 0x7AC8, 0x7AC9,
+ 0x7ACA, 0x7ACC, 0x7ACD, 0x7ACE, 0x7ACF, 0x7AD0, 0x7AD1, 0x7AD2,
+ 0x7AD3, 0x7AD4, 0x7AD5, 0x7AD7, 0x7AD8, 0x7ADA, 0x7ADB, 0x7ADC,
+ 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE4, 0x7AE7, 0x7AE8, 0x7AE9, 0x7AEA,
+ 0x7AEB, 0x7AEC, 0x7AEE, 0x7AF0, 0x7AF1, 0x7AF2, 0x7AF3,
+ /* GB 0xB880..0xB8FE */
+ 0x7AF4, 0x7AF5, 0x7AF6, 0x7AF7, 0x7AF8, 0x7AFB, 0x7AFC, 0x7AFE,
+ 0x7B00, 0x7B01, 0x7B02, 0x7B05, 0x7B07, 0x7B09, 0x7B0C, 0x7B0D,
+ 0x7B0E, 0x7B10, 0x7B12, 0x7B13, 0x7B16, 0x7B17, 0x7B18, 0x7B1A,
+ 0x7B1C, 0x7B1D, 0x7B1F, 0x7B21, 0x7B22, 0x7B23, 0x7B27, 0x7B29,
+ 0x7B2D, 0x6D6E, 0x6DAA, 0x798F, 0x88B1, 0x5F17, 0x752B, 0x629A,
+ 0x8F85, 0x4FEF, 0x91DC, 0x65A7, 0x812F, 0x8151, 0x5E9C, 0x8150,
+ 0x8D74, 0x526F, 0x8986, 0x8D4B, 0x590D, 0x5085, 0x4ED8, 0x961C,
+ 0x7236, 0x8179, 0x8D1F, 0x5BCC, 0x8BA3, 0x9644, 0x5987, 0x7F1A,
+ 0x5490, 0x5676, 0x560E, 0x8BE5, 0x6539, 0x6982, 0x9499, 0x76D6,
+ 0x6E89, 0x5E72, 0x7518, 0x6746, 0x67D1, 0x7AFF, 0x809D, 0x8D76,
+ 0x611F, 0x79C6, 0x6562, 0x8D63, 0x5188, 0x521A, 0x94A2, 0x7F38,
+ 0x809B, 0x7EB2, 0x5C97, 0x6E2F, 0x6760, 0x7BD9, 0x768B, 0x9AD8,
+ 0x818F, 0x7F94, 0x7CD5, 0x641E, 0x9550, 0x7A3F, 0x544A, 0x54E5,
+ 0x6B4C, 0x6401, 0x6208, 0x9E3D, 0x80F3, 0x7599, 0x5272, 0x9769,
+ 0x845B, 0x683C, 0x86E4, 0x9601, 0x9694, 0x94EC, 0x4E2A, 0x5404,
+ 0x7ED9, 0x6839, 0x8DDF, 0x8015, 0x66F4, 0x5E9A, 0x7FB9,
+ /* GB 0xB940..0xB97E */
+ 0x7B2F, 0x7B30, 0x7B32, 0x7B34, 0x7B35, 0x7B36, 0x7B37, 0x7B39,
+ 0x7B3B, 0x7B3D, 0x7B3F, 0x7B40, 0x7B41, 0x7B42, 0x7B43, 0x7B44,
+ 0x7B46, 0x7B48, 0x7B4A, 0x7B4D, 0x7B4E, 0x7B53, 0x7B55, 0x7B57,
+ 0x7B59, 0x7B5C, 0x7B5E, 0x7B5F, 0x7B61, 0x7B63, 0x7B64, 0x7B65,
+ 0x7B66, 0x7B67, 0x7B68, 0x7B69, 0x7B6A, 0x7B6B, 0x7B6C, 0x7B6D,
+ 0x7B6F, 0x7B70, 0x7B73, 0x7B74, 0x7B76, 0x7B78, 0x7B7A, 0x7B7C,
+ 0x7B7D, 0x7B7F, 0x7B81, 0x7B82, 0x7B83, 0x7B84, 0x7B86, 0x7B87,
+ 0x7B88, 0x7B89, 0x7B8A, 0x7B8B, 0x7B8C, 0x7B8E, 0x7B8F,
+ /* GB 0xB980..0xB9FE */
+ 0x7B91, 0x7B92, 0x7B93, 0x7B96, 0x7B98, 0x7B99, 0x7B9A, 0x7B9B,
+ 0x7B9E, 0x7B9F, 0x7BA0, 0x7BA3, 0x7BA4, 0x7BA5, 0x7BAE, 0x7BAF,
+ 0x7BB0, 0x7BB2, 0x7BB3, 0x7BB5, 0x7BB6, 0x7BB7, 0x7BB9, 0x7BBA,
+ 0x7BBB, 0x7BBC, 0x7BBD, 0x7BBE, 0x7BBF, 0x7BC0, 0x7BC2, 0x7BC3,
+ 0x7BC4, 0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B, 0x529F, 0x606D,
+ 0x9F9A, 0x4F9B, 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x5DE9, 0x6C5E,
+ 0x62F1, 0x8D21, 0x5171, 0x94A9, 0x52FE, 0x6C9F, 0x82DF, 0x72D7,
+ 0x57A2, 0x6784, 0x8D2D, 0x591F, 0x8F9C, 0x83C7, 0x5495, 0x7B8D,
+ 0x4F30, 0x6CBD, 0x5B64, 0x59D1, 0x9F13, 0x53E4, 0x86CA, 0x9AA8,
+ 0x8C37, 0x80A1, 0x6545, 0x987E, 0x56FA, 0x96C7, 0x522E, 0x74DC,
+ 0x5250, 0x5BE1, 0x6302, 0x8902, 0x4E56, 0x62D0, 0x602A, 0x68FA,
+ 0x5173, 0x5B98, 0x51A0, 0x89C2, 0x7BA1, 0x9986, 0x7F50, 0x60EF,
+ 0x704C, 0x8D2F, 0x5149, 0x5E7F, 0x901B, 0x7470, 0x89C4, 0x572D,
+ 0x7845, 0x5F52, 0x9F9F, 0x95FA, 0x8F68, 0x9B3C, 0x8BE1, 0x7678,
+ 0x6842, 0x67DC, 0x8DEA, 0x8D35, 0x523D, 0x8F8A, 0x6EDA, 0x68CD,
+ 0x9505, 0x90ED, 0x56FD, 0x679C, 0x88F9, 0x8FC7, 0x54C8,
+ /* GB 0xBA40..0xBA7E */
+ 0x7BC5, 0x7BC8, 0x7BC9, 0x7BCA, 0x7BCB, 0x7BCD, 0x7BCE, 0x7BCF,
+ 0x7BD0, 0x7BD2, 0x7BD4, 0x7BD5, 0x7BD6, 0x7BD7, 0x7BD8, 0x7BDB,
+ 0x7BDC, 0x7BDE, 0x7BDF, 0x7BE0, 0x7BE2, 0x7BE3, 0x7BE4, 0x7BE7,
+ 0x7BE8, 0x7BE9, 0x7BEB, 0x7BEC, 0x7BED, 0x7BEF, 0x7BF0, 0x7BF2,
+ 0x7BF3, 0x7BF4, 0x7BF5, 0x7BF6, 0x7BF8, 0x7BF9, 0x7BFA, 0x7BFB,
+ 0x7BFD, 0x7BFF, 0x7C00, 0x7C01, 0x7C02, 0x7C03, 0x7C04, 0x7C05,
+ 0x7C06, 0x7C08, 0x7C09, 0x7C0A, 0x7C0D, 0x7C0E, 0x7C10, 0x7C11,
+ 0x7C12, 0x7C13, 0x7C14, 0x7C15, 0x7C17, 0x7C18, 0x7C19,
+ /* GB 0xBA80..0xBAFE */
+ 0x7C1A, 0x7C1B, 0x7C1C, 0x7C1D, 0x7C1E, 0x7C20, 0x7C21, 0x7C22,
+ 0x7C23, 0x7C24, 0x7C25, 0x7C28, 0x7C29, 0x7C2B, 0x7C2C, 0x7C2D,
+ 0x7C2E, 0x7C2F, 0x7C30, 0x7C31, 0x7C32, 0x7C33, 0x7C34, 0x7C35,
+ 0x7C36, 0x7C37, 0x7C39, 0x7C3A, 0x7C3B, 0x7C3C, 0x7C3D, 0x7C3E,
+ 0x7C42, 0x9AB8, 0x5B69, 0x6D77, 0x6C26, 0x4EA5, 0x5BB3, 0x9A87,
+ 0x9163, 0x61A8, 0x90AF, 0x97E9, 0x542B, 0x6DB5, 0x5BD2, 0x51FD,
+ 0x558A, 0x7F55, 0x7FF0, 0x64BC, 0x634D, 0x65F1, 0x61BE, 0x608D,
+ 0x710A, 0x6C57, 0x6C49, 0x592F, 0x676D, 0x822A, 0x58D5, 0x568E,
+ 0x8C6A, 0x6BEB, 0x90DD, 0x597D, 0x8017, 0x53F7, 0x6D69, 0x5475,
+ 0x559D, 0x8377, 0x83CF, 0x6838, 0x79BE, 0x548C, 0x4F55, 0x5408,
+ 0x76D2, 0x8C89, 0x9602, 0x6CB3, 0x6DB8, 0x8D6B, 0x8910, 0x9E64,
+ 0x8D3A, 0x563F, 0x9ED1, 0x75D5, 0x5F88, 0x72E0, 0x6068, 0x54FC,
+ 0x4EA8, 0x6A2A, 0x8861, 0x6052, 0x8F70, 0x54C4, 0x70D8, 0x8679,
+ 0x9E3F, 0x6D2A, 0x5B8F, 0x5F18, 0x7EA2, 0x5589, 0x4FAF, 0x7334,
+ 0x543C, 0x539A, 0x5019, 0x540E, 0x547C, 0x4E4E, 0x5FFD, 0x745A,
+ 0x58F6, 0x846B, 0x80E1, 0x8774, 0x72D0, 0x7CCA, 0x6E56,
+ /* GB 0xBB40..0xBB7E */
+ 0x7C43, 0x7C44, 0x7C45, 0x7C46, 0x7C47, 0x7C48, 0x7C49, 0x7C4A,
+ 0x7C4B, 0x7C4C, 0x7C4E, 0x7C4F, 0x7C50, 0x7C51, 0x7C52, 0x7C53,
+ 0x7C54, 0x7C55, 0x7C56, 0x7C57, 0x7C58, 0x7C59, 0x7C5A, 0x7C5B,
+ 0x7C5C, 0x7C5D, 0x7C5E, 0x7C5F, 0x7C60, 0x7C61, 0x7C62, 0x7C63,
+ 0x7C64, 0x7C65, 0x7C66, 0x7C67, 0x7C68, 0x7C69, 0x7C6A, 0x7C6B,
+ 0x7C6C, 0x7C6D, 0x7C6E, 0x7C6F, 0x7C70, 0x7C71, 0x7C72, 0x7C75,
+ 0x7C76, 0x7C77, 0x7C78, 0x7C79, 0x7C7A, 0x7C7E, 0x7C7F, 0x7C80,
+ 0x7C81, 0x7C82, 0x7C83, 0x7C84, 0x7C85, 0x7C86, 0x7C87,
+ /* GB 0xBB80..0xBBFE */
+ 0x7C88, 0x7C8A, 0x7C8B, 0x7C8C, 0x7C8D, 0x7C8E, 0x7C8F, 0x7C90,
+ 0x7C93, 0x7C94, 0x7C96, 0x7C99, 0x7C9A, 0x7C9B, 0x7CA0, 0x7CA1,
+ 0x7CA3, 0x7CA6, 0x7CA7, 0x7CA8, 0x7CA9, 0x7CAB, 0x7CAC, 0x7CAD,
+ 0x7CAF, 0x7CB0, 0x7CB4, 0x7CB5, 0x7CB6, 0x7CB7, 0x7CB8, 0x7CBA,
+ 0x7CBB, 0x5F27, 0x864E, 0x552C, 0x62A4, 0x4E92, 0x6CAA, 0x6237,
+ 0x82B1, 0x54D7, 0x534E, 0x733E, 0x6ED1, 0x753B, 0x5212, 0x5316,
+ 0x8BDD, 0x69D0, 0x5F8A, 0x6000, 0x6DEE, 0x574F, 0x6B22, 0x73AF,
+ 0x6853, 0x8FD8, 0x7F13, 0x6362, 0x60A3, 0x5524, 0x75EA, 0x8C62,
+ 0x7115, 0x6DA3, 0x5BA6, 0x5E7B, 0x8352, 0x614C, 0x9EC4, 0x78FA,
+ 0x8757, 0x7C27, 0x7687, 0x51F0, 0x60F6, 0x714C, 0x6643, 0x5E4C,
+ 0x604D, 0x8C0E, 0x7070, 0x6325, 0x8F89, 0x5FBD, 0x6062, 0x86D4,
+ 0x56DE, 0x6BC1, 0x6094, 0x6167, 0x5349, 0x60E0, 0x6666, 0x8D3F,
+ 0x79FD, 0x4F1A, 0x70E9, 0x6C47, 0x8BB3, 0x8BF2, 0x7ED8, 0x8364,
+ 0x660F, 0x5A5A, 0x9B42, 0x6D51, 0x6DF7, 0x8C41, 0x6D3B, 0x4F19,
+ 0x706B, 0x83B7, 0x6216, 0x60D1, 0x970D, 0x8D27, 0x7978, 0x51FB,
+ 0x573E, 0x57FA, 0x673A, 0x7578, 0x7A3D, 0x79EF, 0x7B95,
+ /* GB 0xBC40..0xBC7E */
+ 0x7CBF, 0x7CC0, 0x7CC2, 0x7CC3, 0x7CC4, 0x7CC6, 0x7CC9, 0x7CCB,
+ 0x7CCE, 0x7CCF, 0x7CD0, 0x7CD1, 0x7CD2, 0x7CD3, 0x7CD4, 0x7CD8,
+ 0x7CDA, 0x7CDB, 0x7CDD, 0x7CDE, 0x7CE1, 0x7CE2, 0x7CE3, 0x7CE4,
+ 0x7CE5, 0x7CE6, 0x7CE7, 0x7CE9, 0x7CEA, 0x7CEB, 0x7CEC, 0x7CED,
+ 0x7CEE, 0x7CF0, 0x7CF1, 0x7CF2, 0x7CF3, 0x7CF4, 0x7CF5, 0x7CF6,
+ 0x7CF7, 0x7CF9, 0x7CFA, 0x7CFC, 0x7CFD, 0x7CFE, 0x7CFF, 0x7D00,
+ 0x7D01, 0x7D02, 0x7D03, 0x7D04, 0x7D05, 0x7D06, 0x7D07, 0x7D08,
+ 0x7D09, 0x7D0B, 0x7D0C, 0x7D0D, 0x7D0E, 0x7D0F, 0x7D10,
+ /* GB 0xBC80..0xBCFE */
+ 0x7D11, 0x7D12, 0x7D13, 0x7D14, 0x7D15, 0x7D16, 0x7D17, 0x7D18,
+ 0x7D19, 0x7D1A, 0x7D1B, 0x7D1C, 0x7D1D, 0x7D1E, 0x7D1F, 0x7D21,
+ 0x7D23, 0x7D24, 0x7D25, 0x7D26, 0x7D28, 0x7D29, 0x7D2A, 0x7D2C,
+ 0x7D2D, 0x7D2E, 0x7D30, 0x7D31, 0x7D32, 0x7D33, 0x7D34, 0x7D35,
+ 0x7D36, 0x808C, 0x9965, 0x8FF9, 0x6FC0, 0x8BA5, 0x9E21, 0x59EC,
+ 0x7EE9, 0x7F09, 0x5409, 0x6781, 0x68D8, 0x8F91, 0x7C4D, 0x96C6,
+ 0x53CA, 0x6025, 0x75BE, 0x6C72, 0x5373, 0x5AC9, 0x7EA7, 0x6324,
+ 0x51E0, 0x810A, 0x5DF1, 0x84DF, 0x6280, 0x5180, 0x5B63, 0x4F0E,
+ 0x796D, 0x5242, 0x60B8, 0x6D4E, 0x5BC4, 0x5BC2, 0x8BA1, 0x8BB0,
+ 0x65E2, 0x5FCC, 0x9645, 0x5993, 0x7EE7, 0x7EAA, 0x5609, 0x67B7,
+ 0x5939, 0x4F73, 0x5BB6, 0x52A0, 0x835A, 0x988A, 0x8D3E, 0x7532,
+ 0x94BE, 0x5047, 0x7A3C, 0x4EF7, 0x67B6, 0x9A7E, 0x5AC1, 0x6B7C,
+ 0x76D1, 0x575A, 0x5C16, 0x7B3A, 0x95F4, 0x714E, 0x517C, 0x80A9,
+ 0x8270, 0x5978, 0x7F04, 0x8327, 0x68C0, 0x67EC, 0x78B1, 0x7877,
+ 0x62E3, 0x6361, 0x7B80, 0x4FED, 0x526A, 0x51CF, 0x8350, 0x69DB,
+ 0x9274, 0x8DF5, 0x8D31, 0x89C1, 0x952E, 0x7BAD, 0x4EF6,
+ /* GB 0xBD40..0xBD7E */
+ 0x7D37, 0x7D38, 0x7D39, 0x7D3A, 0x7D3B, 0x7D3C, 0x7D3D, 0x7D3E,
+ 0x7D3F, 0x7D40, 0x7D41, 0x7D42, 0x7D43, 0x7D44, 0x7D45, 0x7D46,
+ 0x7D47, 0x7D48, 0x7D49, 0x7D4A, 0x7D4B, 0x7D4C, 0x7D4D, 0x7D4E,
+ 0x7D4F, 0x7D50, 0x7D51, 0x7D52, 0x7D53, 0x7D54, 0x7D55, 0x7D56,
+ 0x7D57, 0x7D58, 0x7D59, 0x7D5A, 0x7D5B, 0x7D5C, 0x7D5D, 0x7D5E,
+ 0x7D5F, 0x7D60, 0x7D61, 0x7D62, 0x7D63, 0x7D64, 0x7D65, 0x7D66,
+ 0x7D67, 0x7D68, 0x7D69, 0x7D6A, 0x7D6B, 0x7D6C, 0x7D6D, 0x7D6F,
+ 0x7D70, 0x7D71, 0x7D72, 0x7D73, 0x7D74, 0x7D75, 0x7D76,
+ /* GB 0xBD80..0xBDFE */
+ 0x7D78, 0x7D79, 0x7D7A, 0x7D7B, 0x7D7C, 0x7D7D, 0x7D7E, 0x7D7F,
+ 0x7D80, 0x7D81, 0x7D82, 0x7D83, 0x7D84, 0x7D85, 0x7D86, 0x7D87,
+ 0x7D88, 0x7D89, 0x7D8A, 0x7D8B, 0x7D8C, 0x7D8D, 0x7D8E, 0x7D8F,
+ 0x7D90, 0x7D91, 0x7D92, 0x7D93, 0x7D94, 0x7D95, 0x7D96, 0x7D97,
+ 0x7D98, 0x5065, 0x8230, 0x5251, 0x996F, 0x6E10, 0x6E85, 0x6DA7,
+ 0x5EFA, 0x50F5, 0x59DC, 0x5C06, 0x6D46, 0x6C5F, 0x7586, 0x848B,
+ 0x6868, 0x5956, 0x8BB2, 0x5320, 0x9171, 0x964D, 0x8549, 0x6912,
+ 0x7901, 0x7126, 0x80F6, 0x4EA4, 0x90CA, 0x6D47, 0x9A84, 0x5A07,
+ 0x56BC, 0x6405, 0x94F0, 0x77EB, 0x4FA5, 0x811A, 0x72E1, 0x89D2,
+ 0x997A, 0x7F34, 0x7EDE, 0x527F, 0x6559, 0x9175, 0x8F7F, 0x8F83,
+ 0x53EB, 0x7A96, 0x63ED, 0x63A5, 0x7686, 0x79F8, 0x8857, 0x9636,
+ 0x622A, 0x52AB, 0x8282, 0x6854, 0x6770, 0x6377, 0x776B, 0x7AED,
+ 0x6D01, 0x7ED3, 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5, 0x754C,
+ 0x501F, 0x4ECB, 0x75A5, 0x8BEB, 0x5C4A, 0x5DFE, 0x7B4B, 0x65A4,
+ 0x91D1, 0x4ECA, 0x6D25, 0x895F, 0x7D27, 0x9526, 0x4EC5, 0x8C28,
+ 0x8FDB, 0x9773, 0x664B, 0x7981, 0x8FD1, 0x70EC, 0x6D78,
+ /* GB 0xBE40..0xBE7E */
+ 0x7D99, 0x7D9A, 0x7D9B, 0x7D9C, 0x7D9D, 0x7D9E, 0x7D9F, 0x7DA0,
+ 0x7DA1, 0x7DA2, 0x7DA3, 0x7DA4, 0x7DA5, 0x7DA7, 0x7DA8, 0x7DA9,
+ 0x7DAA, 0x7DAB, 0x7DAC, 0x7DAD, 0x7DAF, 0x7DB0, 0x7DB1, 0x7DB2,
+ 0x7DB3, 0x7DB4, 0x7DB5, 0x7DB6, 0x7DB7, 0x7DB8, 0x7DB9, 0x7DBA,
+ 0x7DBB, 0x7DBC, 0x7DBD, 0x7DBE, 0x7DBF, 0x7DC0, 0x7DC1, 0x7DC2,
+ 0x7DC3, 0x7DC4, 0x7DC5, 0x7DC6, 0x7DC7, 0x7DC8, 0x7DC9, 0x7DCA,
+ 0x7DCB, 0x7DCC, 0x7DCD, 0x7DCE, 0x7DCF, 0x7DD0, 0x7DD1, 0x7DD2,
+ 0x7DD3, 0x7DD4, 0x7DD5, 0x7DD6, 0x7DD7, 0x7DD8, 0x7DD9,
+ /* GB 0xBE80..0xBEFE */
+ 0x7DDA, 0x7DDB, 0x7DDC, 0x7DDD, 0x7DDE, 0x7DDF, 0x7DE0, 0x7DE1,
+ 0x7DE2, 0x7DE3, 0x7DE4, 0x7DE5, 0x7DE6, 0x7DE7, 0x7DE8, 0x7DE9,
+ 0x7DEA, 0x7DEB, 0x7DEC, 0x7DED, 0x7DEE, 0x7DEF, 0x7DF0, 0x7DF1,
+ 0x7DF2, 0x7DF3, 0x7DF4, 0x7DF5, 0x7DF6, 0x7DF7, 0x7DF8, 0x7DF9,
+ 0x7DFA, 0x5C3D, 0x52B2, 0x8346, 0x5162, 0x830E, 0x775B, 0x6676,
+ 0x9CB8, 0x4EAC, 0x60CA, 0x7CBE, 0x7CB3, 0x7ECF, 0x4E95, 0x8B66,
+ 0x666F, 0x9888, 0x9759, 0x5883, 0x656C, 0x955C, 0x5F84, 0x75C9,
+ 0x9756, 0x7ADF, 0x7ADE, 0x51C0, 0x70AF, 0x7A98, 0x63EA, 0x7A76,
+ 0x7EA0, 0x7396, 0x97ED, 0x4E45, 0x7078, 0x4E5D, 0x9152, 0x53A9,
+ 0x6551, 0x65E7, 0x81FC, 0x8205, 0x548E, 0x5C31, 0x759A, 0x97A0,
+ 0x62D8, 0x72D9, 0x75BD, 0x5C45, 0x9A79, 0x83CA, 0x5C40, 0x5480,
+ 0x77E9, 0x4E3E, 0x6CAE, 0x805A, 0x62D2, 0x636E, 0x5DE8, 0x5177,
+ 0x8DDD, 0x8E1E, 0x952F, 0x4FF1, 0x53E5, 0x60E7, 0x70AC, 0x5267,
+ 0x6350, 0x9E43, 0x5A1F, 0x5026, 0x7737, 0x5377, 0x7EE2, 0x6485,
+ 0x652B, 0x6289, 0x6398, 0x5014, 0x7235, 0x89C9, 0x51B3, 0x8BC0,
+ 0x7EDD, 0x5747, 0x83CC, 0x94A7, 0x519B, 0x541B, 0x5CFB,
+ /* GB 0xBF40..0xBF7E */
+ 0x7DFB, 0x7DFC, 0x7DFD, 0x7DFE, 0x7DFF, 0x7E00, 0x7E01, 0x7E02,
+ 0x7E03, 0x7E04, 0x7E05, 0x7E06, 0x7E07, 0x7E08, 0x7E09, 0x7E0A,
+ 0x7E0B, 0x7E0C, 0x7E0D, 0x7E0E, 0x7E0F, 0x7E10, 0x7E11, 0x7E12,
+ 0x7E13, 0x7E14, 0x7E15, 0x7E16, 0x7E17, 0x7E18, 0x7E19, 0x7E1A,
+ 0x7E1B, 0x7E1C, 0x7E1D, 0x7E1E, 0x7E1F, 0x7E20, 0x7E21, 0x7E22,
+ 0x7E23, 0x7E24, 0x7E25, 0x7E26, 0x7E27, 0x7E28, 0x7E29, 0x7E2A,
+ 0x7E2B, 0x7E2C, 0x7E2D, 0x7E2E, 0x7E2F, 0x7E30, 0x7E31, 0x7E32,
+ 0x7E33, 0x7E34, 0x7E35, 0x7E36, 0x7E37, 0x7E38, 0x7E39,
+ /* GB 0xBF80..0xBFFE */
+ 0x7E3A, 0x7E3C, 0x7E3D, 0x7E3E, 0x7E3F, 0x7E40, 0x7E42, 0x7E43,
+ 0x7E44, 0x7E45, 0x7E46, 0x7E48, 0x7E49, 0x7E4A, 0x7E4B, 0x7E4C,
+ 0x7E4D, 0x7E4E, 0x7E4F, 0x7E50, 0x7E51, 0x7E52, 0x7E53, 0x7E54,
+ 0x7E55, 0x7E56, 0x7E57, 0x7E58, 0x7E59, 0x7E5A, 0x7E5B, 0x7E5C,
+ 0x7E5D, 0x4FCA, 0x7AE3, 0x6D5A, 0x90E1, 0x9A8F, 0x5580, 0x5496,
+ 0x5361, 0x54AF, 0x5F00, 0x63E9, 0x6977, 0x51EF, 0x6168, 0x520A,
+ 0x582A, 0x52D8, 0x574E, 0x780D, 0x770B, 0x5EB7, 0x6177, 0x7CE0,
+ 0x625B, 0x6297, 0x4EA2, 0x7095, 0x8003, 0x62F7, 0x70E4, 0x9760,
+ 0x5777, 0x82DB, 0x67EF, 0x68F5, 0x78D5, 0x9897, 0x79D1, 0x58F3,
+ 0x54B3, 0x53EF, 0x6E34, 0x514B, 0x523B, 0x5BA2, 0x8BFE, 0x80AF,
+ 0x5543, 0x57A6, 0x6073, 0x5751, 0x542D, 0x7A7A, 0x6050, 0x5B54,
+ 0x63A7, 0x62A0, 0x53E3, 0x6263, 0x5BC7, 0x67AF, 0x54ED, 0x7A9F,
+ 0x82E6, 0x9177, 0x5E93, 0x88E4, 0x5938, 0x57AE, 0x630E, 0x8DE8,
+ 0x80EF, 0x5757, 0x7B77, 0x4FA9, 0x5FEB, 0x5BBD, 0x6B3E, 0x5321,
+ 0x7B50, 0x72C2, 0x6846, 0x77FF, 0x7736, 0x65F7, 0x51B5, 0x4E8F,
+ 0x76D4, 0x5CBF, 0x7AA5, 0x8475, 0x594E, 0x9B41, 0x5080,
+ /* GB 0xC040..0xC07E */
+ 0x7E5E, 0x7E5F, 0x7E60, 0x7E61, 0x7E62, 0x7E63, 0x7E64, 0x7E65,
+ 0x7E66, 0x7E67, 0x7E68, 0x7E69, 0x7E6A, 0x7E6B, 0x7E6C, 0x7E6D,
+ 0x7E6E, 0x7E6F, 0x7E70, 0x7E71, 0x7E72, 0x7E73, 0x7E74, 0x7E75,
+ 0x7E76, 0x7E77, 0x7E78, 0x7E79, 0x7E7A, 0x7E7B, 0x7E7C, 0x7E7D,
+ 0x7E7E, 0x7E7F, 0x7E80, 0x7E81, 0x7E83, 0x7E84, 0x7E85, 0x7E86,
+ 0x7E87, 0x7E88, 0x7E89, 0x7E8A, 0x7E8B, 0x7E8C, 0x7E8D, 0x7E8E,
+ 0x7E8F, 0x7E90, 0x7E91, 0x7E92, 0x7E93, 0x7E94, 0x7E95, 0x7E96,
+ 0x7E97, 0x7E98, 0x7E99, 0x7E9A, 0x7E9C, 0x7E9D, 0x7E9E,
+ /* GB 0xC080..0xC0FE */
+ 0x7EAE, 0x7EB4, 0x7EBB, 0x7EBC, 0x7ED6, 0x7EE4, 0x7EEC, 0x7EF9,
+ 0x7F0A, 0x7F10, 0x7F1E, 0x7F37, 0x7F39, 0x7F3B, 0x7F3C, 0x7F3D,
+ 0x7F3E, 0x7F3F, 0x7F40, 0x7F41, 0x7F43, 0x7F46, 0x7F47, 0x7F48,
+ 0x7F49, 0x7F4A, 0x7F4B, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F4F, 0x7F52,
+ 0x7F53, 0x9988, 0x6127, 0x6E83, 0x5764, 0x6606, 0x6346, 0x56F0,
+ 0x62EC, 0x6269, 0x5ED3, 0x9614, 0x5783, 0x62C9, 0x5587, 0x8721,
+ 0x814A, 0x8FA3, 0x5566, 0x83B1, 0x6765, 0x8D56, 0x84DD, 0x5A6A,
+ 0x680F, 0x62E6, 0x7BEE, 0x9611, 0x5170, 0x6F9C, 0x8C30, 0x63FD,
+ 0x89C8, 0x61D2, 0x7F06, 0x70C2, 0x6EE5, 0x7405, 0x6994, 0x72FC,
+ 0x5ECA, 0x90CE, 0x6717, 0x6D6A, 0x635E, 0x52B3, 0x7262, 0x8001,
+ 0x4F6C, 0x59E5, 0x916A, 0x70D9, 0x6D9D, 0x52D2, 0x4E50, 0x96F7,
+ 0x956D, 0x857E, 0x78CA, 0x7D2F, 0x5121, 0x5792, 0x64C2, 0x808B,
+ 0x7C7B, 0x6CEA, 0x68F1, 0x695E, 0x51B7, 0x5398, 0x68A8, 0x7281,
+ 0x9ECE, 0x7BF1, 0x72F8, 0x79BB, 0x6F13, 0x7406, 0x674E, 0x91CC,
+ 0x9CA4, 0x793C, 0x8389, 0x8354, 0x540F, 0x6817, 0x4E3D, 0x5389,
+ 0x52B1, 0x783E, 0x5386, 0x5229, 0x5088, 0x4F8B, 0x4FD0,
+ /* GB 0xC140..0xC17E */
+ 0x7F56, 0x7F59, 0x7F5B, 0x7F5C, 0x7F5D, 0x7F5E, 0x7F60, 0x7F63,
+ 0x7F64, 0x7F65, 0x7F66, 0x7F67, 0x7F6B, 0x7F6C, 0x7F6D, 0x7F6F,
+ 0x7F70, 0x7F73, 0x7F75, 0x7F76, 0x7F77, 0x7F78, 0x7F7A, 0x7F7B,
+ 0x7F7C, 0x7F7D, 0x7F7F, 0x7F80, 0x7F82, 0x7F83, 0x7F84, 0x7F85,
+ 0x7F86, 0x7F87, 0x7F88, 0x7F89, 0x7F8B, 0x7F8D, 0x7F8F, 0x7F90,
+ 0x7F91, 0x7F92, 0x7F93, 0x7F95, 0x7F96, 0x7F97, 0x7F98, 0x7F99,
+ 0x7F9B, 0x7F9C, 0x7FA0, 0x7FA2, 0x7FA3, 0x7FA5, 0x7FA6, 0x7FA8,
+ 0x7FA9, 0x7FAA, 0x7FAB, 0x7FAC, 0x7FAD, 0x7FAE, 0x7FB1,
+ /* GB 0xC180..0xC1FE */
+ 0x7FB3, 0x7FB4, 0x7FB5, 0x7FB6, 0x7FB7, 0x7FBA, 0x7FBB, 0x7FBE,
+ 0x7FC0, 0x7FC2, 0x7FC3, 0x7FC4, 0x7FC6, 0x7FC7, 0x7FC8, 0x7FC9,
+ 0x7FCB, 0x7FCD, 0x7FCF, 0x7FD0, 0x7FD1, 0x7FD2, 0x7FD3, 0x7FD6,
+ 0x7FD7, 0x7FD9, 0x7FDA, 0x7FDB, 0x7FDC, 0x7FDD, 0x7FDE, 0x7FE2,
+ 0x7FE3, 0x75E2, 0x7ACB, 0x7C92, 0x6CA5, 0x96B6, 0x529B, 0x7483,
+ 0x54E9, 0x4FE9, 0x8054, 0x83B2, 0x8FDE, 0x9570, 0x5EC9, 0x601C,
+ 0x6D9F, 0x5E18, 0x655B, 0x8138, 0x94FE, 0x604B, 0x70BC, 0x7EC3,
+ 0x7CAE, 0x51C9, 0x6881, 0x7CB1, 0x826F, 0x4E24, 0x8F86, 0x91CF,
+ 0x667E, 0x4EAE, 0x8C05, 0x64A9, 0x804A, 0x50DA, 0x7597, 0x71CE,
+ 0x5BE5, 0x8FBD, 0x6F66, 0x4E86, 0x6482, 0x9563, 0x5ED6, 0x6599,
+ 0x5217, 0x88C2, 0x70C8, 0x52A3, 0x730E, 0x7433, 0x6797, 0x78F7,
+ 0x9716, 0x4E34, 0x90BB, 0x9CDE, 0x6DCB, 0x51DB, 0x8D41, 0x541D,
+ 0x62CE, 0x73B2, 0x83F1, 0x96F6, 0x9F84, 0x94C3, 0x4F36, 0x7F9A,
+ 0x51CC, 0x7075, 0x9675, 0x5CAD, 0x9886, 0x53E6, 0x4EE4, 0x6E9C,
+ 0x7409, 0x69B4, 0x786B, 0x998F, 0x7559, 0x5218, 0x7624, 0x6D41,
+ 0x67F3, 0x516D, 0x9F99, 0x804B, 0x5499, 0x7B3C, 0x7ABF,
+ /* GB 0xC240..0xC27E */
+ 0x7FE4, 0x7FE7, 0x7FE8, 0x7FEA, 0x7FEB, 0x7FEC, 0x7FED, 0x7FEF,
+ 0x7FF2, 0x7FF4, 0x7FF5, 0x7FF6, 0x7FF7, 0x7FF8, 0x7FF9, 0x7FFA,
+ 0x7FFD, 0x7FFE, 0x7FFF, 0x8002, 0x8007, 0x8008, 0x8009, 0x800A,
+ 0x800E, 0x800F, 0x8011, 0x8013, 0x801A, 0x801B, 0x801D, 0x801E,
+ 0x801F, 0x8021, 0x8023, 0x8024, 0x802B, 0x802C, 0x802D, 0x802E,
+ 0x802F, 0x8030, 0x8032, 0x8034, 0x8039, 0x803A, 0x803C, 0x803E,
+ 0x8040, 0x8041, 0x8044, 0x8045, 0x8047, 0x8048, 0x8049, 0x804E,
+ 0x804F, 0x8050, 0x8051, 0x8053, 0x8055, 0x8056, 0x8057,
+ /* GB 0xC280..0xC2FE */
+ 0x8059, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061,
+ 0x8062, 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, 0x8068, 0x806B,
+ 0x806C, 0x806D, 0x806E, 0x806F, 0x8070, 0x8072, 0x8073, 0x8074,
+ 0x8075, 0x8076, 0x8077, 0x8078, 0x8079, 0x807A, 0x807B, 0x807C,
+ 0x807D, 0x9686, 0x5784, 0x62E2, 0x9647, 0x697C, 0x5A04, 0x6402,
+ 0x7BD3, 0x6F0F, 0x964B, 0x82A6, 0x5362, 0x9885, 0x5E90, 0x7089,
+ 0x63B3, 0x5364, 0x864F, 0x9C81, 0x9E93, 0x788C, 0x9732, 0x8DEF,
+ 0x8D42, 0x9E7F, 0x6F5E, 0x7984, 0x5F55, 0x9646, 0x622E, 0x9A74,
+ 0x5415, 0x94DD, 0x4FA3, 0x65C5, 0x5C65, 0x5C61, 0x7F15, 0x8651,
+ 0x6C2F, 0x5F8B, 0x7387, 0x6EE4, 0x7EFF, 0x5CE6, 0x631B, 0x5B6A,
+ 0x6EE6, 0x5375, 0x4E71, 0x63A0, 0x7565, 0x62A1, 0x8F6E, 0x4F26,
+ 0x4ED1, 0x6CA6, 0x7EB6, 0x8BBA, 0x841D, 0x87BA, 0x7F57, 0x903B,
+ 0x9523, 0x7BA9, 0x9AA1, 0x88F8, 0x843D, 0x6D1B, 0x9A86, 0x7EDC,
+ 0x5988, 0x9EBB, 0x739B, 0x7801, 0x8682, 0x9A6C, 0x9A82, 0x561B,
+ 0x5417, 0x57CB, 0x4E70, 0x9EA6, 0x5356, 0x8FC8, 0x8109, 0x7792,
+ 0x9992, 0x86EE, 0x6EE1, 0x8513, 0x66FC, 0x6162, 0x6F2B,
+ /* GB 0xC340..0xC37E */
+ 0x807E, 0x8081, 0x8082, 0x8085, 0x8088, 0x808A, 0x808D, 0x808E,
+ 0x808F, 0x8090, 0x8091, 0x8092, 0x8094, 0x8095, 0x8097, 0x8099,
+ 0x809E, 0x80A3, 0x80A6, 0x80A7, 0x80A8, 0x80AC, 0x80B0, 0x80B3,
+ 0x80B5, 0x80B6, 0x80B8, 0x80B9, 0x80BB, 0x80C5, 0x80C7, 0x80C8,
+ 0x80C9, 0x80CA, 0x80CB, 0x80CF, 0x80D0, 0x80D1, 0x80D2, 0x80D3,
+ 0x80D4, 0x80D5, 0x80D8, 0x80DF, 0x80E0, 0x80E2, 0x80E3, 0x80E6,
+ 0x80EE, 0x80F5, 0x80F7, 0x80F9, 0x80FB, 0x80FE, 0x80FF, 0x8100,
+ 0x8101, 0x8103, 0x8104, 0x8105, 0x8107, 0x8108, 0x810B,
+ /* GB 0xC380..0xC3FE */
+ 0x810C, 0x8115, 0x8117, 0x8119, 0x811B, 0x811C, 0x811D, 0x811F,
+ 0x8120, 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, 0x8127,
+ 0x8128, 0x8129, 0x812A, 0x812B, 0x812D, 0x812E, 0x8130, 0x8133,
+ 0x8134, 0x8135, 0x8137, 0x8139, 0x813A, 0x813B, 0x813C, 0x813D,
+ 0x813F, 0x8C29, 0x8292, 0x832B, 0x76F2, 0x6C13, 0x5FD9, 0x83BD,
+ 0x732B, 0x8305, 0x951A, 0x6BDB, 0x77DB, 0x94C6, 0x536F, 0x8302,
+ 0x5192, 0x5E3D, 0x8C8C, 0x8D38, 0x4E48, 0x73AB, 0x679A, 0x6885,
+ 0x9176, 0x9709, 0x7164, 0x6CA1, 0x7709, 0x5A92, 0x9541, 0x6BCF,
+ 0x7F8E, 0x6627, 0x5BD0, 0x59B9, 0x5A9A, 0x95E8, 0x95F7, 0x4EEC,
+ 0x840C, 0x8499, 0x6AAC, 0x76DF, 0x9530, 0x731B, 0x68A6, 0x5B5F,
+ 0x772F, 0x919A, 0x9761, 0x7CDC, 0x8FF7, 0x8C1C, 0x5F25, 0x7C73,
+ 0x79D8, 0x89C5, 0x6CCC, 0x871C, 0x5BC6, 0x5E42, 0x68C9, 0x7720,
+ 0x7EF5, 0x5195, 0x514D, 0x52C9, 0x5A29, 0x7F05, 0x9762, 0x82D7,
+ 0x63CF, 0x7784, 0x85D0, 0x79D2, 0x6E3A, 0x5E99, 0x5999, 0x8511,
+ 0x706D, 0x6C11, 0x62BF, 0x76BF, 0x654F, 0x60AF, 0x95FD, 0x660E,
+ 0x879F, 0x9E23, 0x94ED, 0x540D, 0x547D, 0x8C2C, 0x6478,
+ /* GB 0xC440..0xC47E */
+ 0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8147, 0x8149,
+ 0x814D, 0x814E, 0x814F, 0x8152, 0x8156, 0x8157, 0x8158, 0x815B,
+ 0x815C, 0x815D, 0x815E, 0x815F, 0x8161, 0x8162, 0x8163, 0x8164,
+ 0x8166, 0x8168, 0x816A, 0x816B, 0x816C, 0x816F, 0x8172, 0x8173,
+ 0x8175, 0x8176, 0x8177, 0x8178, 0x8181, 0x8183, 0x8184, 0x8185,
+ 0x8186, 0x8187, 0x8189, 0x818B, 0x818C, 0x818D, 0x818E, 0x8190,
+ 0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197, 0x8199, 0x819A,
+ 0x819E, 0x819F, 0x81A0, 0x81A1, 0x81A2, 0x81A4, 0x81A5,
+ /* GB 0xC480..0xC4FE */
+ 0x81A7, 0x81A9, 0x81AB, 0x81AC, 0x81AD, 0x81AE, 0x81AF, 0x81B0,
+ 0x81B1, 0x81B2, 0x81B4, 0x81B5, 0x81B6, 0x81B7, 0x81B8, 0x81B9,
+ 0x81BC, 0x81BD, 0x81BE, 0x81BF, 0x81C4, 0x81C5, 0x81C7, 0x81C8,
+ 0x81C9, 0x81CB, 0x81CD, 0x81CE, 0x81CF, 0x81D0, 0x81D1, 0x81D2,
+ 0x81D3, 0x6479, 0x8611, 0x6A21, 0x819C, 0x78E8, 0x6469, 0x9B54,
+ 0x62B9, 0x672B, 0x83AB, 0x58A8, 0x9ED8, 0x6CAB, 0x6F20, 0x5BDE,
+ 0x964C, 0x8C0B, 0x725F, 0x67D0, 0x62C7, 0x7261, 0x4EA9, 0x59C6,
+ 0x6BCD, 0x5893, 0x66AE, 0x5E55, 0x52DF, 0x6155, 0x6728, 0x76EE,
+ 0x7766, 0x7267, 0x7A46, 0x62FF, 0x54EA, 0x5450, 0x94A0, 0x90A3,
+ 0x5A1C, 0x7EB3, 0x6C16, 0x4E43, 0x5976, 0x8010, 0x5948, 0x5357,
+ 0x7537, 0x96BE, 0x56CA, 0x6320, 0x8111, 0x607C, 0x95F9, 0x6DD6,
+ 0x5462, 0x9981, 0x5185, 0x5AE9, 0x80FD, 0x59AE, 0x9713, 0x502A,
+ 0x6CE5, 0x5C3C, 0x62DF, 0x4F60, 0x533F, 0x817B, 0x9006, 0x6EBA,
+ 0x852B, 0x62C8, 0x5E74, 0x78BE, 0x64B5, 0x637B, 0x5FF5, 0x5A18,
+ 0x917F, 0x9E1F, 0x5C3F, 0x634F, 0x8042, 0x5B7D, 0x556E, 0x954A,
+ 0x954D, 0x6D85, 0x60A8, 0x67E0, 0x72DE, 0x51DD, 0x5B81,
+ /* GB 0xC540..0xC57E */
+ 0x81D4, 0x81D5, 0x81D6, 0x81D7, 0x81D8, 0x81D9, 0x81DA, 0x81DB,
+ 0x81DC, 0x81DD, 0x81DE, 0x81DF, 0x81E0, 0x81E1, 0x81E2, 0x81E4,
+ 0x81E5, 0x81E6, 0x81E8, 0x81E9, 0x81EB, 0x81EE, 0x81EF, 0x81F0,
+ 0x81F1, 0x81F2, 0x81F5, 0x81F6, 0x81F7, 0x81F8, 0x81F9, 0x81FA,
+ 0x81FD, 0x81FF, 0x8203, 0x8207, 0x8208, 0x8209, 0x820A, 0x820B,
+ 0x820E, 0x820F, 0x8211, 0x8213, 0x8215, 0x8216, 0x8217, 0x8218,
+ 0x8219, 0x821A, 0x821D, 0x8220, 0x8224, 0x8225, 0x8226, 0x8227,
+ 0x8229, 0x822E, 0x8232, 0x823A, 0x823C, 0x823D, 0x823F,
+ /* GB 0xC580..0xC5FE */
+ 0x8240, 0x8241, 0x8242, 0x8243, 0x8245, 0x8246, 0x8248, 0x824A,
+ 0x824C, 0x824D, 0x824E, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254,
+ 0x8255, 0x8256, 0x8257, 0x8259, 0x825B, 0x825C, 0x825D, 0x825E,
+ 0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267,
+ 0x8269, 0x62E7, 0x6CDE, 0x725B, 0x626D, 0x94AE, 0x7EBD, 0x8113,
+ 0x6D53, 0x519C, 0x5F04, 0x5974, 0x52AA, 0x6012, 0x5973, 0x6696,
+ 0x8650, 0x759F, 0x632A, 0x61E6, 0x7CEF, 0x8BFA, 0x54E6, 0x6B27,
+ 0x9E25, 0x6BB4, 0x85D5, 0x5455, 0x5076, 0x6CA4, 0x556A, 0x8DB4,
+ 0x722C, 0x5E15, 0x6015, 0x7436, 0x62CD, 0x6392, 0x724C, 0x5F98,
+ 0x6E43, 0x6D3E, 0x6500, 0x6F58, 0x76D8, 0x78D0, 0x76FC, 0x7554,
+ 0x5224, 0x53DB, 0x4E53, 0x5E9E, 0x65C1, 0x802A, 0x80D6, 0x629B,
+ 0x5486, 0x5228, 0x70AE, 0x888D, 0x8DD1, 0x6CE1, 0x5478, 0x80DA,
+ 0x57F9, 0x88F4, 0x8D54, 0x966A, 0x914D, 0x4F69, 0x6C9B, 0x55B7,
+ 0x76C6, 0x7830, 0x62A8, 0x70F9, 0x6F8E, 0x5F6D, 0x84EC, 0x68DA,
+ 0x787C, 0x7BF7, 0x81A8, 0x670B, 0x9E4F, 0x6367, 0x78B0, 0x576F,
+ 0x7812, 0x9739, 0x6279, 0x62AB, 0x5288, 0x7435, 0x6BD7,
+ /* GB 0xC640..0xC67E */
+ 0x826A, 0x826B, 0x826C, 0x826D, 0x8271, 0x8275, 0x8276, 0x8277,
+ 0x8278, 0x827B, 0x827C, 0x8280, 0x8281, 0x8283, 0x8285, 0x8286,
+ 0x8287, 0x8289, 0x828C, 0x8290, 0x8293, 0x8294, 0x8295, 0x8296,
+ 0x829A, 0x829B, 0x829E, 0x82A0, 0x82A2, 0x82A3, 0x82A7, 0x82B2,
+ 0x82B5, 0x82B6, 0x82BA, 0x82BB, 0x82BC, 0x82BF, 0x82C0, 0x82C2,
+ 0x82C3, 0x82C5, 0x82C6, 0x82C9, 0x82D0, 0x82D6, 0x82D9, 0x82DA,
+ 0x82DD, 0x82E2, 0x82E7, 0x82E8, 0x82E9, 0x82EA, 0x82EC, 0x82ED,
+ 0x82EE, 0x82F0, 0x82F2, 0x82F3, 0x82F5, 0x82F6, 0x82F8,
+ /* GB 0xC680..0xC6FE */
+ 0x82FA, 0x82FC, 0x82FD, 0x82FE, 0x82FF, 0x8300, 0x830A, 0x830B,
+ 0x830D, 0x8310, 0x8312, 0x8313, 0x8316, 0x8318, 0x8319, 0x831D,
+ 0x831E, 0x831F, 0x8320, 0x8321, 0x8322, 0x8323, 0x8324, 0x8325,
+ 0x8326, 0x8329, 0x832A, 0x832E, 0x8330, 0x8332, 0x8337, 0x833B,
+ 0x833D, 0x5564, 0x813E, 0x75B2, 0x76AE, 0x5339, 0x75DE, 0x50FB,
+ 0x5C41, 0x8B6C, 0x7BC7, 0x504F, 0x7247, 0x9A97, 0x98D8, 0x6F02,
+ 0x74E2, 0x7968, 0x6487, 0x77A5, 0x62FC, 0x9891, 0x8D2B, 0x54C1,
+ 0x8058, 0x4E52, 0x576A, 0x82F9, 0x840D, 0x5E73, 0x51ED, 0x74F6,
+ 0x8BC4, 0x5C4F, 0x5761, 0x6CFC, 0x9887, 0x5A46, 0x7834, 0x9B44,
+ 0x8FEB, 0x7C95, 0x5256, 0x6251, 0x94FA, 0x4EC6, 0x8386, 0x8461,
+ 0x83E9, 0x84B2, 0x57D4, 0x6734, 0x5703, 0x666E, 0x6D66, 0x8C31,
+ 0x66DD, 0x7011, 0x671F, 0x6B3A, 0x6816, 0x621A, 0x59BB, 0x4E03,
+ 0x51C4, 0x6F06, 0x67D2, 0x6C8F, 0x5176, 0x68CB, 0x5947, 0x6B67,
+ 0x7566, 0x5D0E, 0x8110, 0x9F50, 0x65D7, 0x7948, 0x7941, 0x9A91,
+ 0x8D77, 0x5C82, 0x4E5E, 0x4F01, 0x542F, 0x5951, 0x780C, 0x5668,
+ 0x6C14, 0x8FC4, 0x5F03, 0x6C7D, 0x6CE3, 0x8BAB, 0x6390,
+ /* GB 0xC740..0xC77E */
+ 0x833E, 0x833F, 0x8341, 0x8342, 0x8344, 0x8345, 0x8348, 0x834A,
+ 0x834B, 0x834C, 0x834D, 0x834E, 0x8353, 0x8355, 0x8356, 0x8357,
+ 0x8358, 0x8359, 0x835D, 0x8362, 0x8370, 0x8371, 0x8372, 0x8373,
+ 0x8374, 0x8375, 0x8376, 0x8379, 0x837A, 0x837E, 0x837F, 0x8380,
+ 0x8381, 0x8382, 0x8383, 0x8384, 0x8387, 0x8388, 0x838A, 0x838B,
+ 0x838C, 0x838D, 0x838F, 0x8390, 0x8391, 0x8394, 0x8395, 0x8396,
+ 0x8397, 0x8399, 0x839A, 0x839D, 0x839F, 0x83A1, 0x83A2, 0x83A3,
+ 0x83A4, 0x83A5, 0x83A6, 0x83A7, 0x83AC, 0x83AD, 0x83AE,
+ /* GB 0xC780..0xC7FE */
+ 0x83AF, 0x83B5, 0x83BB, 0x83BE, 0x83BF, 0x83C2, 0x83C3, 0x83C4,
+ 0x83C6, 0x83C8, 0x83C9, 0x83CB, 0x83CD, 0x83CE, 0x83D0, 0x83D1,
+ 0x83D2, 0x83D3, 0x83D5, 0x83D7, 0x83D9, 0x83DA, 0x83DB, 0x83DE,
+ 0x83E2, 0x83E3, 0x83E4, 0x83E6, 0x83E7, 0x83E8, 0x83EB, 0x83EC,
+ 0x83ED, 0x6070, 0x6D3D, 0x7275, 0x6266, 0x948E, 0x94C5, 0x5343,
+ 0x8FC1, 0x7B7E, 0x4EDF, 0x8C26, 0x4E7E, 0x9ED4, 0x94B1, 0x94B3,
+ 0x524D, 0x6F5C, 0x9063, 0x6D45, 0x8C34, 0x5811, 0x5D4C, 0x6B20,
+ 0x6B49, 0x67AA, 0x545B, 0x8154, 0x7F8C, 0x5899, 0x8537, 0x5F3A,
+ 0x62A2, 0x6A47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77A7, 0x4E54,
+ 0x4FA8, 0x5DE7, 0x9798, 0x64AC, 0x7FD8, 0x5CED, 0x4FCF, 0x7A8D,
+ 0x5207, 0x8304, 0x4E14, 0x602F, 0x7A83, 0x94A6, 0x4FB5, 0x4EB2,
+ 0x79E6, 0x7434, 0x52E4, 0x82B9, 0x64D2, 0x79BD, 0x5BDD, 0x6C81,
+ 0x9752, 0x8F7B, 0x6C22, 0x503E, 0x537F, 0x6E05, 0x64CE, 0x6674,
+ 0x6C30, 0x60C5, 0x9877, 0x8BF7, 0x5E86, 0x743C, 0x7A77, 0x79CB,
+ 0x4E18, 0x90B1, 0x7403, 0x6C42, 0x56DA, 0x914B, 0x6CC5, 0x8D8B,
+ 0x533A, 0x86C6, 0x66F2, 0x8EAF, 0x5C48, 0x9A71, 0x6E20,
+ /* GB 0xC840..0xC87E */
+ 0x83EE, 0x83EF, 0x83F3, 0x83F4, 0x83F5, 0x83F6, 0x83F7, 0x83FA,
+ 0x83FB, 0x83FC, 0x83FE, 0x83FF, 0x8400, 0x8402, 0x8405, 0x8407,
+ 0x8408, 0x8409, 0x840A, 0x8410, 0x8412, 0x8413, 0x8414, 0x8415,
+ 0x8416, 0x8417, 0x8419, 0x841A, 0x841B, 0x841E, 0x841F, 0x8420,
+ 0x8421, 0x8422, 0x8423, 0x8429, 0x842A, 0x842B, 0x842C, 0x842D,
+ 0x842E, 0x842F, 0x8430, 0x8432, 0x8433, 0x8434, 0x8435, 0x8436,
+ 0x8437, 0x8439, 0x843A, 0x843B, 0x843E, 0x843F, 0x8440, 0x8441,
+ 0x8442, 0x8443, 0x8444, 0x8445, 0x8447, 0x8448, 0x8449,
+ /* GB 0xC880..0xC8FE */
+ 0x844A, 0x844B, 0x844C, 0x844D, 0x844E, 0x844F, 0x8450, 0x8452,
+ 0x8453, 0x8454, 0x8455, 0x8456, 0x8458, 0x845D, 0x845E, 0x845F,
+ 0x8460, 0x8462, 0x8464, 0x8465, 0x8466, 0x8467, 0x8468, 0x846A,
+ 0x846E, 0x846F, 0x8470, 0x8472, 0x8474, 0x8477, 0x8479, 0x847B,
+ 0x847C, 0x53D6, 0x5A36, 0x9F8B, 0x8DA3, 0x53BB, 0x5708, 0x98A7,
+ 0x6743, 0x919B, 0x6CC9, 0x5168, 0x75CA, 0x62F3, 0x72AC, 0x5238,
+ 0x529D, 0x7F3A, 0x7094, 0x7638, 0x5374, 0x9E4A, 0x69B7, 0x786E,
+ 0x96C0, 0x88D9, 0x7FA4, 0x7136, 0x71C3, 0x5189, 0x67D3, 0x74E4,
+ 0x58E4, 0x6518, 0x56B7, 0x8BA9, 0x9976, 0x6270, 0x7ED5, 0x60F9,
+ 0x70ED, 0x58EC, 0x4EC1, 0x4EBA, 0x5FCD, 0x97E7, 0x4EFB, 0x8BA4,
+ 0x5203, 0x598A, 0x7EAB, 0x6254, 0x4ECD, 0x65E5, 0x620E, 0x8338,
+ 0x84C9, 0x8363, 0x878D, 0x7194, 0x6EB6, 0x5BB9, 0x7ED2, 0x5197,
+ 0x63C9, 0x67D4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5B7A, 0x5982,
+ 0x8FB1, 0x4E73, 0x6C5D, 0x5165, 0x8925, 0x8F6F, 0x962E, 0x854A,
+ 0x745E, 0x9510, 0x95F0, 0x6DA6, 0x82E5, 0x5F31, 0x6492, 0x6D12,
+ 0x8428, 0x816E, 0x9CC3, 0x585E, 0x8D5B, 0x4E09, 0x53C1,
+ /* GB 0xC940..0xC97E */
+ 0x847D, 0x847E, 0x847F, 0x8480, 0x8481, 0x8483, 0x8484, 0x8485,
+ 0x8486, 0x848A, 0x848D, 0x848F, 0x8490, 0x8491, 0x8492, 0x8493,
+ 0x8494, 0x8495, 0x8496, 0x8498, 0x849A, 0x849B, 0x849D, 0x849E,
+ 0x849F, 0x84A0, 0x84A2, 0x84A3, 0x84A4, 0x84A5, 0x84A6, 0x84A7,
+ 0x84A8, 0x84A9, 0x84AA, 0x84AB, 0x84AC, 0x84AD, 0x84AE, 0x84B0,
+ 0x84B1, 0x84B3, 0x84B5, 0x84B6, 0x84B7, 0x84BB, 0x84BC, 0x84BE,
+ 0x84C0, 0x84C2, 0x84C3, 0x84C5, 0x84C6, 0x84C7, 0x84C8, 0x84CB,
+ 0x84CC, 0x84CE, 0x84CF, 0x84D2, 0x84D4, 0x84D5, 0x84D7,
+ /* GB 0xC980..0xC9FE */
+ 0x84D8, 0x84D9, 0x84DA, 0x84DB, 0x84DC, 0x84DE, 0x84E1, 0x84E2,
+ 0x84E4, 0x84E7, 0x84E8, 0x84E9, 0x84EA, 0x84EB, 0x84ED, 0x84EE,
+ 0x84EF, 0x84F1, 0x84F2, 0x84F3, 0x84F4, 0x84F5, 0x84F6, 0x84F7,
+ 0x84F8, 0x84F9, 0x84FA, 0x84FB, 0x84FD, 0x84FE, 0x8500, 0x8501,
+ 0x8502, 0x4F1E, 0x6563, 0x6851, 0x55D3, 0x4E27, 0x6414, 0x9A9A,
+ 0x626B, 0x5AC2, 0x745F, 0x8272, 0x6DA9, 0x68EE, 0x50E7, 0x838E,
+ 0x7802, 0x6740, 0x5239, 0x6C99, 0x7EB1, 0x50BB, 0x5565, 0x715E,
+ 0x7B5B, 0x6652, 0x73CA, 0x82EB, 0x6749, 0x5C71, 0x5220, 0x717D,
+ 0x886B, 0x95EA, 0x9655, 0x64C5, 0x8D61, 0x81B3, 0x5584, 0x6C55,
+ 0x6247, 0x7F2E, 0x5892, 0x4F24, 0x5546, 0x8D4F, 0x664C, 0x4E0A,
+ 0x5C1A, 0x88F3, 0x68A2, 0x634E, 0x7A0D, 0x70E7, 0x828D, 0x52FA,
+ 0x97F6, 0x5C11, 0x54E8, 0x90B5, 0x7ECD, 0x5962, 0x8D4A, 0x86C7,
+ 0x820C, 0x820D, 0x8D66, 0x6444, 0x5C04, 0x6151, 0x6D89, 0x793E,
+ 0x8BBE, 0x7837, 0x7533, 0x547B, 0x4F38, 0x8EAB, 0x6DF1, 0x5A20,
+ 0x7EC5, 0x795E, 0x6C88, 0x5BA1, 0x5A76, 0x751A, 0x80BE, 0x614E,
+ 0x6E17, 0x58F0, 0x751F, 0x7525, 0x7272, 0x5347, 0x7EF3,
+ /* GB 0xCA40..0xCA7E */
+ 0x8503, 0x8504, 0x8505, 0x8506, 0x8507, 0x8508, 0x8509, 0x850A,
+ 0x850B, 0x850D, 0x850E, 0x850F, 0x8510, 0x8512, 0x8514, 0x8515,
+ 0x8516, 0x8518, 0x8519, 0x851B, 0x851C, 0x851D, 0x851E, 0x8520,
+ 0x8522, 0x8523, 0x8524, 0x8525, 0x8526, 0x8527, 0x8528, 0x8529,
+ 0x852A, 0x852D, 0x852E, 0x852F, 0x8530, 0x8531, 0x8532, 0x8533,
+ 0x8534, 0x8535, 0x8536, 0x853E, 0x853F, 0x8540, 0x8541, 0x8542,
+ 0x8544, 0x8545, 0x8546, 0x8547, 0x854B, 0x854C, 0x854D, 0x854E,
+ 0x854F, 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555,
+ /* GB 0xCA80..0xCAFE */
+ 0x8557, 0x8558, 0x855A, 0x855B, 0x855C, 0x855D, 0x855F, 0x8560,
+ 0x8561, 0x8562, 0x8563, 0x8565, 0x8566, 0x8567, 0x8569, 0x856A,
+ 0x856B, 0x856C, 0x856D, 0x856E, 0x856F, 0x8570, 0x8571, 0x8573,
+ 0x8575, 0x8576, 0x8577, 0x8578, 0x857C, 0x857D, 0x857F, 0x8580,
+ 0x8581, 0x7701, 0x76DB, 0x5269, 0x80DC, 0x5723, 0x5E08, 0x5931,
+ 0x72EE, 0x65BD, 0x6E7F, 0x8BD7, 0x5C38, 0x8671, 0x5341, 0x77F3,
+ 0x62FE, 0x65F6, 0x4EC0, 0x98DF, 0x8680, 0x5B9E, 0x8BC6, 0x53F2,
+ 0x77E2, 0x4F7F, 0x5C4E, 0x9A76, 0x59CB, 0x5F0F, 0x793A, 0x58EB,
+ 0x4E16, 0x67FF, 0x4E8B, 0x62ED, 0x8A93, 0x901D, 0x52BF, 0x662F,
+ 0x55DC, 0x566C, 0x9002, 0x4ED5, 0x4F8D, 0x91CA, 0x9970, 0x6C0F,
+ 0x5E02, 0x6043, 0x5BA4, 0x89C6, 0x8BD5, 0x6536, 0x624B, 0x9996,
+ 0x5B88, 0x5BFF, 0x6388, 0x552E, 0x53D7, 0x7626, 0x517D, 0x852C,
+ 0x67A2, 0x68B3, 0x6B8A, 0x6292, 0x8F93, 0x53D4, 0x8212, 0x6DD1,
+ 0x758F, 0x4E66, 0x8D4E, 0x5B70, 0x719F, 0x85AF, 0x6691, 0x66D9,
+ 0x7F72, 0x8700, 0x9ECD, 0x9F20, 0x5C5E, 0x672F, 0x8FF0, 0x6811,
+ 0x675F, 0x620D, 0x7AD6, 0x5885, 0x5EB6, 0x6570, 0x6F31,
+ /* GB 0xCB40..0xCB7E */
+ 0x8582, 0x8583, 0x8586, 0x8588, 0x8589, 0x858A, 0x858B, 0x858C,
+ 0x858D, 0x858E, 0x8590, 0x8591, 0x8592, 0x8593, 0x8594, 0x8595,
+ 0x8596, 0x8597, 0x8598, 0x8599, 0x859A, 0x859D, 0x859E, 0x859F,
+ 0x85A0, 0x85A1, 0x85A2, 0x85A3, 0x85A5, 0x85A6, 0x85A7, 0x85A9,
+ 0x85AB, 0x85AC, 0x85AD, 0x85B1, 0x85B2, 0x85B3, 0x85B4, 0x85B5,
+ 0x85B6, 0x85B8, 0x85BA, 0x85BB, 0x85BC, 0x85BD, 0x85BE, 0x85BF,
+ 0x85C0, 0x85C2, 0x85C3, 0x85C4, 0x85C5, 0x85C6, 0x85C7, 0x85C8,
+ 0x85CA, 0x85CB, 0x85CC, 0x85CD, 0x85CE, 0x85D1, 0x85D2,
+ /* GB 0xCB80..0xCBFE */
+ 0x85D4, 0x85D6, 0x85D7, 0x85D8, 0x85D9, 0x85DA, 0x85DB, 0x85DD,
+ 0x85DE, 0x85DF, 0x85E0, 0x85E1, 0x85E2, 0x85E3, 0x85E5, 0x85E6,
+ 0x85E7, 0x85E8, 0x85EA, 0x85EB, 0x85EC, 0x85ED, 0x85EE, 0x85EF,
+ 0x85F0, 0x85F1, 0x85F2, 0x85F3, 0x85F4, 0x85F5, 0x85F6, 0x85F7,
+ 0x85F8, 0x6055, 0x5237, 0x800D, 0x6454, 0x8870, 0x7529, 0x5E05,
+ 0x6813, 0x62F4, 0x971C, 0x53CC, 0x723D, 0x8C01, 0x6C34, 0x7761,
+ 0x7A0E, 0x542E, 0x77AC, 0x987A, 0x821C, 0x8BF4, 0x7855, 0x6714,
+ 0x70C1, 0x65AF, 0x6495, 0x5636, 0x601D, 0x79C1, 0x53F8, 0x4E1D,
+ 0x6B7B, 0x8086, 0x5BFA, 0x55E3, 0x56DB, 0x4F3A, 0x4F3C, 0x9972,
+ 0x5DF3, 0x677E, 0x8038, 0x6002, 0x9882, 0x9001, 0x5B8B, 0x8BBC,
+ 0x8BF5, 0x641C, 0x8258, 0x64DE, 0x55FD, 0x82CF, 0x9165, 0x4FD7,
+ 0x7D20, 0x901F, 0x7C9F, 0x50F3, 0x5851, 0x6EAF, 0x5BBF, 0x8BC9,
+ 0x8083, 0x9178, 0x849C, 0x7B97, 0x867D, 0x968B, 0x968F, 0x7EE5,
+ 0x9AD3, 0x788E, 0x5C81, 0x7A57, 0x9042, 0x96A7, 0x795F, 0x5B59,
+ 0x635F, 0x7B0B, 0x84D1, 0x68AD, 0x5506, 0x7F29, 0x7410, 0x7D22,
+ 0x9501, 0x6240, 0x584C, 0x4ED6, 0x5B83, 0x5979, 0x5854,
+ /* GB 0xCC40..0xCC7E */
+ 0x85F9, 0x85FA, 0x85FC, 0x85FD, 0x85FE, 0x8600, 0x8601, 0x8602,
+ 0x8603, 0x8604, 0x8606, 0x8607, 0x8608, 0x8609, 0x860A, 0x860B,
+ 0x860C, 0x860D, 0x860E, 0x860F, 0x8610, 0x8612, 0x8613, 0x8614,
+ 0x8615, 0x8617, 0x8618, 0x8619, 0x861A, 0x861B, 0x861C, 0x861D,
+ 0x861E, 0x861F, 0x8620, 0x8621, 0x8622, 0x8623, 0x8624, 0x8625,
+ 0x8626, 0x8628, 0x862A, 0x862B, 0x862C, 0x862D, 0x862E, 0x862F,
+ 0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635, 0x8636, 0x8637,
+ 0x8639, 0x863A, 0x863B, 0x863D, 0x863E, 0x863F, 0x8640,
+ /* GB 0xCC80..0xCCFE */
+ 0x8641, 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648,
+ 0x8649, 0x864A, 0x864B, 0x864C, 0x8652, 0x8653, 0x8655, 0x8656,
+ 0x8657, 0x8658, 0x8659, 0x865B, 0x865C, 0x865D, 0x865F, 0x8660,
+ 0x8661, 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668, 0x8669,
+ 0x866A, 0x736D, 0x631E, 0x8E4B, 0x8E0F, 0x80CE, 0x82D4, 0x62AC,
+ 0x53F0, 0x6CF0, 0x915E, 0x592A, 0x6001, 0x6C70, 0x574D, 0x644A,
+ 0x8D2A, 0x762B, 0x6EE9, 0x575B, 0x6A80, 0x75F0, 0x6F6D, 0x8C2D,
+ 0x8C08, 0x5766, 0x6BEF, 0x8892, 0x78B3, 0x63A2, 0x53F9, 0x70AD,
+ 0x6C64, 0x5858, 0x642A, 0x5802, 0x68E0, 0x819B, 0x5510, 0x7CD6,
+ 0x5018, 0x8EBA, 0x6DCC, 0x8D9F, 0x70EB, 0x638F, 0x6D9B, 0x6ED4,
+ 0x7EE6, 0x8404, 0x6843, 0x9003, 0x6DD8, 0x9676, 0x8BA8, 0x5957,
+ 0x7279, 0x85E4, 0x817E, 0x75BC, 0x8A8A, 0x68AF, 0x5254, 0x8E22,
+ 0x9511, 0x63D0, 0x9898, 0x8E44, 0x557C, 0x4F53, 0x66FF, 0x568F,
+ 0x60D5, 0x6D95, 0x5243, 0x5C49, 0x5929, 0x6DFB, 0x586B, 0x7530,
+ 0x751C, 0x606C, 0x8214, 0x8146, 0x6311, 0x6761, 0x8FE2, 0x773A,
+ 0x8DF3, 0x8D34, 0x94C1, 0x5E16, 0x5385, 0x542C, 0x70C3,
+ /* GB 0xCD40..0xCD7E */
+ 0x866D, 0x866F, 0x8670, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676,
+ 0x8677, 0x8678, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688,
+ 0x8689, 0x868E, 0x868F, 0x8690, 0x8691, 0x8692, 0x8694, 0x8696,
+ 0x8697, 0x8698, 0x8699, 0x869A, 0x869B, 0x869E, 0x869F, 0x86A0,
+ 0x86A1, 0x86A2, 0x86A5, 0x86A6, 0x86AB, 0x86AD, 0x86AE, 0x86B2,
+ 0x86B3, 0x86B7, 0x86B8, 0x86B9, 0x86BB, 0x86BC, 0x86BD, 0x86BE,
+ 0x86BF, 0x86C1, 0x86C2, 0x86C3, 0x86C5, 0x86C8, 0x86CC, 0x86CD,
+ 0x86D2, 0x86D3, 0x86D5, 0x86D6, 0x86D7, 0x86DA, 0x86DC,
+ /* GB 0xCD80..0xCDFE */
+ 0x86DD, 0x86E0, 0x86E1, 0x86E2, 0x86E3, 0x86E5, 0x86E6, 0x86E7,
+ 0x86E8, 0x86EA, 0x86EB, 0x86EC, 0x86EF, 0x86F5, 0x86F6, 0x86F7,
+ 0x86FA, 0x86FB, 0x86FC, 0x86FD, 0x86FF, 0x8701, 0x8704, 0x8705,
+ 0x8706, 0x870B, 0x870C, 0x870E, 0x870F, 0x8710, 0x8711, 0x8714,
+ 0x8716, 0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A, 0x8247,
+ 0x901A, 0x6850, 0x916E, 0x77B3, 0x540C, 0x94DC, 0x5F64, 0x7AE5,
+ 0x6876, 0x6345, 0x7B52, 0x7EDF, 0x75DB, 0x5077, 0x6295, 0x5934,
+ 0x900F, 0x51F8, 0x79C3, 0x7A81, 0x56FE, 0x5F92, 0x9014, 0x6D82,
+ 0x5C60, 0x571F, 0x5410, 0x5154, 0x6E4D, 0x56E2, 0x63A8, 0x9893,
+ 0x817F, 0x8715, 0x892A, 0x9000, 0x541E, 0x5C6F, 0x81C0, 0x62D6,
+ 0x6258, 0x8131, 0x9E35, 0x9640, 0x9A6E, 0x9A7C, 0x692D, 0x59A5,
+ 0x62D3, 0x553E, 0x6316, 0x54C7, 0x86D9, 0x6D3C, 0x5A03, 0x74E6,
+ 0x889C, 0x6B6A, 0x5916, 0x8C4C, 0x5F2F, 0x6E7E, 0x73A9, 0x987D,
+ 0x4E38, 0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696, 0x60CB,
+ 0x5B9B, 0x5A49, 0x4E07, 0x8155, 0x6C6A, 0x738B, 0x4EA1, 0x6789,
+ 0x7F51, 0x5F80, 0x65FA, 0x671B, 0x5FD8, 0x5984, 0x5A01,
+ /* GB 0xCE40..0xCE7E */
+ 0x8719, 0x871B, 0x871D, 0x871F, 0x8720, 0x8724, 0x8726, 0x8727,
+ 0x8728, 0x872A, 0x872B, 0x872C, 0x872D, 0x872F, 0x8730, 0x8732,
+ 0x8733, 0x8735, 0x8736, 0x8738, 0x8739, 0x873A, 0x873C, 0x873D,
+ 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x874A,
+ 0x874B, 0x874D, 0x874F, 0x8750, 0x8751, 0x8752, 0x8754, 0x8755,
+ 0x8756, 0x8758, 0x875A, 0x875B, 0x875C, 0x875D, 0x875E, 0x875F,
+ 0x8761, 0x8762, 0x8766, 0x8767, 0x8768, 0x8769, 0x876A, 0x876B,
+ 0x876C, 0x876D, 0x876F, 0x8771, 0x8772, 0x8773, 0x8775,
+ /* GB 0xCE80..0xCEFE */
+ 0x8777, 0x8778, 0x8779, 0x877A, 0x877F, 0x8780, 0x8781, 0x8784,
+ 0x8786, 0x8787, 0x8789, 0x878A, 0x878C, 0x878E, 0x878F, 0x8790,
+ 0x8791, 0x8792, 0x8794, 0x8795, 0x8796, 0x8798, 0x8799, 0x879A,
+ 0x879B, 0x879C, 0x879D, 0x879E, 0x87A0, 0x87A1, 0x87A2, 0x87A3,
+ 0x87A4, 0x5DCD, 0x5FAE, 0x5371, 0x97E6, 0x8FDD, 0x6845, 0x56F4,
+ 0x552F, 0x60DF, 0x4E3A, 0x6F4D, 0x7EF4, 0x82C7, 0x840E, 0x59D4,
+ 0x4F1F, 0x4F2A, 0x5C3E, 0x7EAC, 0x672A, 0x851A, 0x5473, 0x754F,
+ 0x80C3, 0x5582, 0x9B4F, 0x4F4D, 0x6E2D, 0x8C13, 0x5C09, 0x6170,
+ 0x536B, 0x761F, 0x6E29, 0x868A, 0x6587, 0x95FB, 0x7EB9, 0x543B,
+ 0x7A33, 0x7D0A, 0x95EE, 0x55E1, 0x7FC1, 0x74EE, 0x631D, 0x8717,
+ 0x6DA1, 0x7A9D, 0x6211, 0x65A1, 0x5367, 0x63E1, 0x6C83, 0x5DEB,
+ 0x545C, 0x94A8, 0x4E4C, 0x6C61, 0x8BEC, 0x5C4B, 0x65E0, 0x829C,
+ 0x68A7, 0x543E, 0x5434, 0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348,
+ 0x821E, 0x4F0D, 0x4FAE, 0x575E, 0x620A, 0x96FE, 0x6664, 0x7269,
+ 0x52FF, 0x52A1, 0x609F, 0x8BEF, 0x6614, 0x7199, 0x6790, 0x897F,
+ 0x7852, 0x77FD, 0x6670, 0x563B, 0x5438, 0x9521, 0x727A,
+ /* GB 0xCF40..0xCF7E */
+ 0x87A5, 0x87A6, 0x87A7, 0x87A9, 0x87AA, 0x87AE, 0x87B0, 0x87B1,
+ 0x87B2, 0x87B4, 0x87B6, 0x87B7, 0x87B8, 0x87B9, 0x87BB, 0x87BC,
+ 0x87BE, 0x87BF, 0x87C1, 0x87C2, 0x87C3, 0x87C4, 0x87C5, 0x87C7,
+ 0x87C8, 0x87C9, 0x87CC, 0x87CD, 0x87CE, 0x87CF, 0x87D0, 0x87D4,
+ 0x87D5, 0x87D6, 0x87D7, 0x87D8, 0x87D9, 0x87DA, 0x87DC, 0x87DD,
+ 0x87DE, 0x87DF, 0x87E1, 0x87E2, 0x87E3, 0x87E4, 0x87E6, 0x87E7,
+ 0x87E8, 0x87E9, 0x87EB, 0x87EC, 0x87ED, 0x87EF, 0x87F0, 0x87F1,
+ 0x87F2, 0x87F3, 0x87F4, 0x87F5, 0x87F6, 0x87F7, 0x87F8,
+ /* GB 0xCF80..0xCFFE */
+ 0x87FA, 0x87FB, 0x87FC, 0x87FD, 0x87FF, 0x8800, 0x8801, 0x8802,
+ 0x8804, 0x8805, 0x8806, 0x8807, 0x8808, 0x8809, 0x880B, 0x880C,
+ 0x880D, 0x880E, 0x880F, 0x8810, 0x8811, 0x8812, 0x8814, 0x8817,
+ 0x8818, 0x8819, 0x881A, 0x881C, 0x881D, 0x881E, 0x881F, 0x8820,
+ 0x8823, 0x7A00, 0x606F, 0x5E0C, 0x6089, 0x819D, 0x5915, 0x60DC,
+ 0x7184, 0x70EF, 0x6EAA, 0x6C50, 0x7280, 0x6A84, 0x88AD, 0x5E2D,
+ 0x4E60, 0x5AB3, 0x559C, 0x94E3, 0x6D17, 0x7CFB, 0x9699, 0x620F,
+ 0x7EC6, 0x778E, 0x867E, 0x5323, 0x971E, 0x8F96, 0x6687, 0x5CE1,
+ 0x4FA0, 0x72ED, 0x4E0B, 0x53A6, 0x590F, 0x5413, 0x6380, 0x9528,
+ 0x5148, 0x4ED9, 0x9C9C, 0x7EA4, 0x54B8, 0x8D24, 0x8854, 0x8237,
+ 0x95F2, 0x6D8E, 0x5F26, 0x5ACC, 0x663E, 0x9669, 0x73B0, 0x732E,
+ 0x53BF, 0x817A, 0x9985, 0x7FA1, 0x5BAA, 0x9677, 0x9650, 0x7EBF,
+ 0x76F8, 0x53A2, 0x9576, 0x9999, 0x7BB1, 0x8944, 0x6E58, 0x4E61,
+ 0x7FD4, 0x7965, 0x8BE6, 0x60F3, 0x54CD, 0x4EAB, 0x9879, 0x5DF7,
+ 0x6A61, 0x50CF, 0x5411, 0x8C61, 0x8427, 0x785D, 0x9704, 0x524A,
+ 0x54EE, 0x56A3, 0x9500, 0x6D88, 0x5BB5, 0x6DC6, 0x6653,
+ /* GB 0xD040..0xD07E */
+ 0x8824, 0x8825, 0x8826, 0x8827, 0x8828, 0x8829, 0x882A, 0x882B,
+ 0x882C, 0x882D, 0x882E, 0x882F, 0x8830, 0x8831, 0x8833, 0x8834,
+ 0x8835, 0x8836, 0x8837, 0x8838, 0x883A, 0x883B, 0x883D, 0x883E,
+ 0x883F, 0x8841, 0x8842, 0x8843, 0x8846, 0x8847, 0x8848, 0x8849,
+ 0x884A, 0x884B, 0x884E, 0x884F, 0x8850, 0x8851, 0x8852, 0x8853,
+ 0x8855, 0x8856, 0x8858, 0x885A, 0x885B, 0x885C, 0x885D, 0x885E,
+ 0x885F, 0x8860, 0x8866, 0x8867, 0x886A, 0x886D, 0x886F, 0x8871,
+ 0x8873, 0x8874, 0x8875, 0x8876, 0x8878, 0x8879, 0x887A,
+ /* GB 0xD080..0xD0FE */
+ 0x887B, 0x887C, 0x8880, 0x8883, 0x8886, 0x8887, 0x8889, 0x888A,
+ 0x888C, 0x888E, 0x888F, 0x8890, 0x8891, 0x8893, 0x8894, 0x8895,
+ 0x8897, 0x8898, 0x8899, 0x889A, 0x889B, 0x889D, 0x889E, 0x889F,
+ 0x88A0, 0x88A1, 0x88A3, 0x88A5, 0x88A6, 0x88A7, 0x88A8, 0x88A9,
+ 0x88AA, 0x5C0F, 0x5B5D, 0x6821, 0x8096, 0x5578, 0x7B11, 0x6548,
+ 0x6954, 0x4E9B, 0x6B47, 0x874E, 0x978B, 0x534F, 0x631F, 0x643A,
+ 0x90AA, 0x659C, 0x80C1, 0x8C10, 0x5199, 0x68B0, 0x5378, 0x87F9,
+ 0x61C8, 0x6CC4, 0x6CFB, 0x8C22, 0x5C51, 0x85AA, 0x82AF, 0x950C,
+ 0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3, 0x4FE1, 0x8845, 0x661F,
+ 0x8165, 0x7329, 0x60FA, 0x5174, 0x5211, 0x578B, 0x5F62, 0x90A2,
+ 0x884C, 0x9192, 0x5E78, 0x674F, 0x6027, 0x59D3, 0x5144, 0x51F6,
+ 0x80F8, 0x5308, 0x6C79, 0x96C4, 0x718A, 0x4F11, 0x4FEE, 0x7F9E,
+ 0x673D, 0x55C5, 0x9508, 0x79C0, 0x8896, 0x7EE3, 0x589F, 0x620C,
+ 0x9700, 0x865A, 0x5618, 0x987B, 0x5F90, 0x8BB8, 0x84C4, 0x9157,
+ 0x53D9, 0x65ED, 0x5E8F, 0x755C, 0x6064, 0x7D6E, 0x5A7F, 0x7EEA,
+ 0x7EED, 0x8F69, 0x55A7, 0x5BA3, 0x60AC, 0x65CB, 0x7384,
+ /* GB 0xD140..0xD17E */
+ 0x88AC, 0x88AE, 0x88AF, 0x88B0, 0x88B2, 0x88B3, 0x88B4, 0x88B5,
+ 0x88B6, 0x88B8, 0x88B9, 0x88BA, 0x88BB, 0x88BD, 0x88BE, 0x88BF,
+ 0x88C0, 0x88C3, 0x88C4, 0x88C7, 0x88C8, 0x88CA, 0x88CB, 0x88CC,
+ 0x88CD, 0x88CF, 0x88D0, 0x88D1, 0x88D3, 0x88D6, 0x88D7, 0x88DA,
+ 0x88DB, 0x88DC, 0x88DD, 0x88DE, 0x88E0, 0x88E1, 0x88E6, 0x88E7,
+ 0x88E9, 0x88EA, 0x88EB, 0x88EC, 0x88ED, 0x88EE, 0x88EF, 0x88F2,
+ 0x88F5, 0x88F6, 0x88F7, 0x88FA, 0x88FB, 0x88FD, 0x88FF, 0x8900,
+ 0x8901, 0x8903, 0x8904, 0x8905, 0x8906, 0x8907, 0x8908,
+ /* GB 0xD180..0xD1FE */
+ 0x8909, 0x890B, 0x890C, 0x890D, 0x890E, 0x890F, 0x8911, 0x8914,
+ 0x8915, 0x8916, 0x8917, 0x8918, 0x891C, 0x891D, 0x891E, 0x891F,
+ 0x8920, 0x8922, 0x8923, 0x8924, 0x8926, 0x8927, 0x8928, 0x8929,
+ 0x892C, 0x892D, 0x892E, 0x892F, 0x8931, 0x8932, 0x8933, 0x8935,
+ 0x8937, 0x9009, 0x7663, 0x7729, 0x7EDA, 0x9774, 0x859B, 0x5B66,
+ 0x7A74, 0x96EA, 0x8840, 0x52CB, 0x718F, 0x5FAA, 0x65EC, 0x8BE2,
+ 0x5BFB, 0x9A6F, 0x5DE1, 0x6B89, 0x6C5B, 0x8BAD, 0x8BAF, 0x900A,
+ 0x8FC5, 0x538B, 0x62BC, 0x9E26, 0x9E2D, 0x5440, 0x4E2B, 0x82BD,
+ 0x7259, 0x869C, 0x5D16, 0x8859, 0x6DAF, 0x96C5, 0x54D1, 0x4E9A,
+ 0x8BB6, 0x7109, 0x54BD, 0x9609, 0x70DF, 0x6DF9, 0x76D0, 0x4E25,
+ 0x7814, 0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x989C, 0x960E, 0x708E,
+ 0x6CBF, 0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, 0x8273, 0x5830,
+ 0x71D5, 0x538C, 0x781A, 0x96C1, 0x5501, 0x5F66, 0x7130, 0x5BB4,
+ 0x8C1A, 0x9A8C, 0x6B83, 0x592E, 0x9E2F, 0x79E7, 0x6768, 0x626C,
+ 0x4F6F, 0x75A1, 0x7F8A, 0x6D0B, 0x9633, 0x6C27, 0x4EF0, 0x75D2,
+ 0x517B, 0x6837, 0x6F3E, 0x9080, 0x8170, 0x5996, 0x7476,
+ /* GB 0xD240..0xD27E */
+ 0x8938, 0x8939, 0x893A, 0x893B, 0x893C, 0x893D, 0x893E, 0x893F,
+ 0x8940, 0x8942, 0x8943, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949,
+ 0x894A, 0x894B, 0x894C, 0x894D, 0x894E, 0x894F, 0x8950, 0x8951,
+ 0x8952, 0x8953, 0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959,
+ 0x895A, 0x895B, 0x895C, 0x895D, 0x8960, 0x8961, 0x8962, 0x8963,
+ 0x8964, 0x8965, 0x8967, 0x8968, 0x8969, 0x896A, 0x896B, 0x896C,
+ 0x896D, 0x896E, 0x896F, 0x8970, 0x8971, 0x8972, 0x8973, 0x8974,
+ 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897A, 0x897C,
+ /* GB 0xD280..0xD2FE */
+ 0x897D, 0x897E, 0x8980, 0x8982, 0x8984, 0x8985, 0x8987, 0x8988,
+ 0x8989, 0x898A, 0x898B, 0x898C, 0x898D, 0x898E, 0x898F, 0x8990,
+ 0x8991, 0x8992, 0x8993, 0x8994, 0x8995, 0x8996, 0x8997, 0x8998,
+ 0x8999, 0x899A, 0x899B, 0x899C, 0x899D, 0x899E, 0x899F, 0x89A0,
+ 0x89A1, 0x6447, 0x5C27, 0x9065, 0x7A91, 0x8C23, 0x59DA, 0x54AC,
+ 0x8200, 0x836F, 0x8981, 0x8000, 0x6930, 0x564E, 0x8036, 0x7237,
+ 0x91CE, 0x51B6, 0x4E5F, 0x9875, 0x6396, 0x4E1A, 0x53F6, 0x66F3,
+ 0x814B, 0x591C, 0x6DB2, 0x4E00, 0x58F9, 0x533B, 0x63D6, 0x94F1,
+ 0x4F9D, 0x4F0A, 0x8863, 0x9890, 0x5937, 0x9057, 0x79FB, 0x4EEA,
+ 0x80F0, 0x7591, 0x6C82, 0x5B9C, 0x59E8, 0x5F5D, 0x6905, 0x8681,
+ 0x501A, 0x5DF2, 0x4E59, 0x77E3, 0x4EE5, 0x827A, 0x6291, 0x6613,
+ 0x9091, 0x5C79, 0x4EBF, 0x5F79, 0x81C6, 0x9038, 0x8084, 0x75AB,
+ 0x4EA6, 0x88D4, 0x610F, 0x6BC5, 0x5FC6, 0x4E49, 0x76CA, 0x6EA2,
+ 0x8BE3, 0x8BAE, 0x8C0A, 0x8BD1, 0x5F02, 0x7FFC, 0x7FCC, 0x7ECE,
+ 0x8335, 0x836B, 0x56E0, 0x6BB7, 0x97F3, 0x9634, 0x59FB, 0x541F,
+ 0x94F6, 0x6DEB, 0x5BC5, 0x996E, 0x5C39, 0x5F15, 0x9690,
+ /* GB 0xD340..0xD37E */
+ 0x89A2, 0x89A3, 0x89A4, 0x89A5, 0x89A6, 0x89A7, 0x89A8, 0x89A9,
+ 0x89AA, 0x89AB, 0x89AC, 0x89AD, 0x89AE, 0x89AF, 0x89B0, 0x89B1,
+ 0x89B2, 0x89B3, 0x89B4, 0x89B5, 0x89B6, 0x89B7, 0x89B8, 0x89B9,
+ 0x89BA, 0x89BB, 0x89BC, 0x89BD, 0x89BE, 0x89BF, 0x89C0, 0x89C3,
+ 0x89CD, 0x89D3, 0x89D4, 0x89D5, 0x89D7, 0x89D8, 0x89D9, 0x89DB,
+ 0x89DD, 0x89DF, 0x89E0, 0x89E1, 0x89E2, 0x89E4, 0x89E7, 0x89E8,
+ 0x89E9, 0x89EA, 0x89EC, 0x89ED, 0x89EE, 0x89F0, 0x89F1, 0x89F2,
+ 0x89F4, 0x89F5, 0x89F6, 0x89F7, 0x89F8, 0x89F9, 0x89FA,
+ /* GB 0xD380..0xD3FE */
+ 0x89FB, 0x89FC, 0x89FD, 0x89FE, 0x89FF, 0x8A01, 0x8A02, 0x8A03,
+ 0x8A04, 0x8A05, 0x8A06, 0x8A08, 0x8A09, 0x8A0A, 0x8A0B, 0x8A0C,
+ 0x8A0D, 0x8A0E, 0x8A0F, 0x8A10, 0x8A11, 0x8A12, 0x8A13, 0x8A14,
+ 0x8A15, 0x8A16, 0x8A17, 0x8A18, 0x8A19, 0x8A1A, 0x8A1B, 0x8A1C,
+ 0x8A1D, 0x5370, 0x82F1, 0x6A31, 0x5A74, 0x9E70, 0x5E94, 0x7F28,
+ 0x83B9, 0x8424, 0x8425, 0x8367, 0x8747, 0x8FCE, 0x8D62, 0x76C8,
+ 0x5F71, 0x9896, 0x786C, 0x6620, 0x54DF, 0x62E5, 0x4F63, 0x81C3,
+ 0x75C8, 0x5EB8, 0x96CD, 0x8E0A, 0x86F9, 0x548F, 0x6CF3, 0x6D8C,
+ 0x6C38, 0x607F, 0x52C7, 0x7528, 0x5E7D, 0x4F18, 0x60A0, 0x5FE7,
+ 0x5C24, 0x7531, 0x90AE, 0x94C0, 0x72B9, 0x6CB9, 0x6E38, 0x9149,
+ 0x6709, 0x53CB, 0x53F3, 0x4F51, 0x91C9, 0x8BF1, 0x53C8, 0x5E7C,
+ 0x8FC2, 0x6DE4, 0x4E8E, 0x76C2, 0x6986, 0x865E, 0x611A, 0x8206,
+ 0x4F59, 0x4FDE, 0x903E, 0x9C7C, 0x6109, 0x6E1D, 0x6E14, 0x9685,
+ 0x4E88, 0x5A31, 0x96E8, 0x4E0E, 0x5C7F, 0x79B9, 0x5B87, 0x8BED,
+ 0x7FBD, 0x7389, 0x57DF, 0x828B, 0x90C1, 0x5401, 0x9047, 0x55BB,
+ 0x5CEA, 0x5FA1, 0x6108, 0x6B32, 0x72F1, 0x80B2, 0x8A89,
+ /* GB 0xD440..0xD47E */
+ 0x8A1E, 0x8A1F, 0x8A20, 0x8A21, 0x8A22, 0x8A23, 0x8A24, 0x8A25,
+ 0x8A26, 0x8A27, 0x8A28, 0x8A29, 0x8A2A, 0x8A2B, 0x8A2C, 0x8A2D,
+ 0x8A2E, 0x8A2F, 0x8A30, 0x8A31, 0x8A32, 0x8A33, 0x8A34, 0x8A35,
+ 0x8A36, 0x8A37, 0x8A38, 0x8A39, 0x8A3A, 0x8A3B, 0x8A3C, 0x8A3D,
+ 0x8A3F, 0x8A40, 0x8A41, 0x8A42, 0x8A43, 0x8A44, 0x8A45, 0x8A46,
+ 0x8A47, 0x8A49, 0x8A4A, 0x8A4B, 0x8A4C, 0x8A4D, 0x8A4E, 0x8A4F,
+ 0x8A50, 0x8A51, 0x8A52, 0x8A53, 0x8A54, 0x8A55, 0x8A56, 0x8A57,
+ 0x8A58, 0x8A59, 0x8A5A, 0x8A5B, 0x8A5C, 0x8A5D, 0x8A5E,
+ /* GB 0xD480..0xD4FE */
+ 0x8A5F, 0x8A60, 0x8A61, 0x8A62, 0x8A63, 0x8A64, 0x8A65, 0x8A66,
+ 0x8A67, 0x8A68, 0x8A69, 0x8A6A, 0x8A6B, 0x8A6C, 0x8A6D, 0x8A6E,
+ 0x8A6F, 0x8A70, 0x8A71, 0x8A72, 0x8A73, 0x8A74, 0x8A75, 0x8A76,
+ 0x8A77, 0x8A78, 0x8A7A, 0x8A7B, 0x8A7C, 0x8A7D, 0x8A7E, 0x8A7F,
+ 0x8A80, 0x6D74, 0x5BD3, 0x88D5, 0x9884, 0x8C6B, 0x9A6D, 0x9E33,
+ 0x6E0A, 0x51A4, 0x5143, 0x57A3, 0x8881, 0x539F, 0x63F4, 0x8F95,
+ 0x56ED, 0x5458, 0x5706, 0x733F, 0x6E90, 0x7F18, 0x8FDC, 0x82D1,
+ 0x613F, 0x6028, 0x9662, 0x66F0, 0x7EA6, 0x8D8A, 0x8DC3, 0x94A5,
+ 0x5CB3, 0x7CA4, 0x6708, 0x60A6, 0x9605, 0x8018, 0x4E91, 0x90E7,
+ 0x5300, 0x9668, 0x5141, 0x8FD0, 0x8574, 0x915D, 0x6655, 0x97F5,
+ 0x5B55, 0x531D, 0x7838, 0x6742, 0x683D, 0x54C9, 0x707E, 0x5BB0,
+ 0x8F7D, 0x518D, 0x5728, 0x54B1, 0x6512, 0x6682, 0x8D5E, 0x8D43,
+ 0x810F, 0x846C, 0x906D, 0x7CDF, 0x51FF, 0x85FB, 0x67A3, 0x65E9,
+ 0x6FA1, 0x86A4, 0x8E81, 0x566A, 0x9020, 0x7682, 0x7076, 0x71E5,
+ 0x8D23, 0x62E9, 0x5219, 0x6CFD, 0x8D3C, 0x600E, 0x589E, 0x618E,
+ 0x66FE, 0x8D60, 0x624E, 0x55B3, 0x6E23, 0x672D, 0x8F67,
+ /* GB 0xD540..0xD57E */
+ 0x8A81, 0x8A82, 0x8A83, 0x8A84, 0x8A85, 0x8A86, 0x8A87, 0x8A88,
+ 0x8A8B, 0x8A8C, 0x8A8D, 0x8A8E, 0x8A8F, 0x8A90, 0x8A91, 0x8A92,
+ 0x8A94, 0x8A95, 0x8A96, 0x8A97, 0x8A98, 0x8A99, 0x8A9A, 0x8A9B,
+ 0x8A9C, 0x8A9D, 0x8A9E, 0x8A9F, 0x8AA0, 0x8AA1, 0x8AA2, 0x8AA3,
+ 0x8AA4, 0x8AA5, 0x8AA6, 0x8AA7, 0x8AA8, 0x8AA9, 0x8AAA, 0x8AAB,
+ 0x8AAC, 0x8AAD, 0x8AAE, 0x8AAF, 0x8AB0, 0x8AB1, 0x8AB2, 0x8AB3,
+ 0x8AB4, 0x8AB5, 0x8AB6, 0x8AB7, 0x8AB8, 0x8AB9, 0x8ABA, 0x8ABB,
+ 0x8ABC, 0x8ABD, 0x8ABE, 0x8ABF, 0x8AC0, 0x8AC1, 0x8AC2,
+ /* GB 0xD580..0xD5FE */
+ 0x8AC3, 0x8AC4, 0x8AC5, 0x8AC6, 0x8AC7, 0x8AC8, 0x8AC9, 0x8ACA,
+ 0x8ACB, 0x8ACC, 0x8ACD, 0x8ACE, 0x8ACF, 0x8AD0, 0x8AD1, 0x8AD2,
+ 0x8AD3, 0x8AD4, 0x8AD5, 0x8AD6, 0x8AD7, 0x8AD8, 0x8AD9, 0x8ADA,
+ 0x8ADB, 0x8ADC, 0x8ADD, 0x8ADE, 0x8ADF, 0x8AE0, 0x8AE1, 0x8AE2,
+ 0x8AE3, 0x94E1, 0x95F8, 0x7728, 0x6805, 0x69A8, 0x548B, 0x4E4D,
+ 0x70B8, 0x8BC8, 0x6458, 0x658B, 0x5B85, 0x7A84, 0x503A, 0x5BE8,
+ 0x77BB, 0x6BE1, 0x8A79, 0x7C98, 0x6CBE, 0x76CF, 0x65A9, 0x8F97,
+ 0x5D2D, 0x5C55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7AD9, 0x6E5B,
+ 0x7EFD, 0x6A1F, 0x7AE0, 0x5F70, 0x6F33, 0x5F20, 0x638C, 0x6DA8,
+ 0x6756, 0x4E08, 0x5E10, 0x8D26, 0x4ED7, 0x80C0, 0x7634, 0x969C,
+ 0x62DB, 0x662D, 0x627E, 0x6CBC, 0x8D75, 0x7167, 0x7F69, 0x5146,
+ 0x8087, 0x53EC, 0x906E, 0x6298, 0x54F2, 0x86F0, 0x8F99, 0x8005,
+ 0x9517, 0x8517, 0x8FD9, 0x6D59, 0x73CD, 0x659F, 0x771F, 0x7504,
+ 0x7827, 0x81FB, 0x8D1E, 0x9488, 0x4FA6, 0x6795, 0x75B9, 0x8BCA,
+ 0x9707, 0x632F, 0x9547, 0x9635, 0x84B8, 0x6323, 0x7741, 0x5F81,
+ 0x72F0, 0x4E89, 0x6014, 0x6574, 0x62EF, 0x6B63, 0x653F,
+ /* GB 0xD640..0xD67E */
+ 0x8AE4, 0x8AE5, 0x8AE6, 0x8AE7, 0x8AE8, 0x8AE9, 0x8AEA, 0x8AEB,
+ 0x8AEC, 0x8AED, 0x8AEE, 0x8AEF, 0x8AF0, 0x8AF1, 0x8AF2, 0x8AF3,
+ 0x8AF4, 0x8AF5, 0x8AF6, 0x8AF7, 0x8AF8, 0x8AF9, 0x8AFA, 0x8AFB,
+ 0x8AFC, 0x8AFD, 0x8AFE, 0x8AFF, 0x8B00, 0x8B01, 0x8B02, 0x8B03,
+ 0x8B04, 0x8B05, 0x8B06, 0x8B08, 0x8B09, 0x8B0A, 0x8B0B, 0x8B0C,
+ 0x8B0D, 0x8B0E, 0x8B0F, 0x8B10, 0x8B11, 0x8B12, 0x8B13, 0x8B14,
+ 0x8B15, 0x8B16, 0x8B17, 0x8B18, 0x8B19, 0x8B1A, 0x8B1B, 0x8B1C,
+ 0x8B1D, 0x8B1E, 0x8B1F, 0x8B20, 0x8B21, 0x8B22, 0x8B23,
+ /* GB 0xD680..0xD6FE */
+ 0x8B24, 0x8B25, 0x8B27, 0x8B28, 0x8B29, 0x8B2A, 0x8B2B, 0x8B2C,
+ 0x8B2D, 0x8B2E, 0x8B2F, 0x8B30, 0x8B31, 0x8B32, 0x8B33, 0x8B34,
+ 0x8B35, 0x8B36, 0x8B37, 0x8B38, 0x8B39, 0x8B3A, 0x8B3B, 0x8B3C,
+ 0x8B3D, 0x8B3E, 0x8B3F, 0x8B40, 0x8B41, 0x8B42, 0x8B43, 0x8B44,
+ 0x8B45, 0x5E27, 0x75C7, 0x90D1, 0x8BC1, 0x829D, 0x679D, 0x652F,
+ 0x5431, 0x8718, 0x77E5, 0x80A2, 0x8102, 0x6C41, 0x4E4B, 0x7EC7,
+ 0x804C, 0x76F4, 0x690D, 0x6B96, 0x6267, 0x503C, 0x4F84, 0x5740,
+ 0x6307, 0x6B62, 0x8DBE, 0x53EA, 0x65E8, 0x7EB8, 0x5FD7, 0x631A,
+ 0x63B7, 0x81F3, 0x81F4, 0x7F6E, 0x5E1C, 0x5CD9, 0x5236, 0x667A,
+ 0x79E9, 0x7A1A, 0x8D28, 0x7099, 0x75D4, 0x6EDE, 0x6CBB, 0x7A92,
+ 0x4E2D, 0x76C5, 0x5FE0, 0x949F, 0x8877, 0x7EC8, 0x79CD, 0x80BF,
+ 0x91CD, 0x4EF2, 0x4F17, 0x821F, 0x5468, 0x5DDE, 0x6D32, 0x8BCC,
+ 0x7CA5, 0x8F74, 0x8098, 0x5E1A, 0x5492, 0x76B1, 0x5B99, 0x663C,
+ 0x9AA4, 0x73E0, 0x682A, 0x86DB, 0x6731, 0x732A, 0x8BF8, 0x8BDB,
+ 0x9010, 0x7AF9, 0x70DB, 0x716E, 0x62C4, 0x77A9, 0x5631, 0x4E3B,
+ 0x8457, 0x67F1, 0x52A9, 0x86C0, 0x8D2E, 0x94F8, 0x7B51,
+ /* GB 0xD740..0xD77E */
+ 0x8B46, 0x8B47, 0x8B48, 0x8B49, 0x8B4A, 0x8B4B, 0x8B4C, 0x8B4D,
+ 0x8B4E, 0x8B4F, 0x8B50, 0x8B51, 0x8B52, 0x8B53, 0x8B54, 0x8B55,
+ 0x8B56, 0x8B57, 0x8B58, 0x8B59, 0x8B5A, 0x8B5B, 0x8B5C, 0x8B5D,
+ 0x8B5E, 0x8B5F, 0x8B60, 0x8B61, 0x8B62, 0x8B63, 0x8B64, 0x8B65,
+ 0x8B67, 0x8B68, 0x8B69, 0x8B6A, 0x8B6B, 0x8B6D, 0x8B6E, 0x8B6F,
+ 0x8B70, 0x8B71, 0x8B72, 0x8B73, 0x8B74, 0x8B75, 0x8B76, 0x8B77,
+ 0x8B78, 0x8B79, 0x8B7A, 0x8B7B, 0x8B7C, 0x8B7D, 0x8B7E, 0x8B7F,
+ 0x8B80, 0x8B81, 0x8B82, 0x8B83, 0x8B84, 0x8B85, 0x8B86,
+ /* GB 0xD780..0xD7FE */
+ 0x8B87, 0x8B88, 0x8B89, 0x8B8A, 0x8B8B, 0x8B8C, 0x8B8D, 0x8B8E,
+ 0x8B8F, 0x8B90, 0x8B91, 0x8B92, 0x8B93, 0x8B94, 0x8B95, 0x8B96,
+ 0x8B97, 0x8B98, 0x8B99, 0x8B9A, 0x8B9B, 0x8B9C, 0x8B9D, 0x8B9E,
+ 0x8B9F, 0x8BAC, 0x8BB1, 0x8BBB, 0x8BC7, 0x8BD0, 0x8BEA, 0x8C09,
+ 0x8C1E, 0x4F4F, 0x6CE8, 0x795D, 0x9A7B, 0x6293, 0x722A, 0x62FD,
+ 0x4E13, 0x7816, 0x8F6C, 0x64B0, 0x8D5A, 0x7BC6, 0x6869, 0x5E84,
+ 0x88C5, 0x5986, 0x649E, 0x58EE, 0x72B6, 0x690E, 0x9525, 0x8FFD,
+ 0x8D58, 0x5760, 0x7F00, 0x8C06, 0x51C6, 0x6349, 0x62D9, 0x5353,
+ 0x684C, 0x7422, 0x8301, 0x914C, 0x5544, 0x7740, 0x707C, 0x6D4A,
+ 0x5179, 0x54A8, 0x8D44, 0x59FF, 0x6ECB, 0x6DC4, 0x5B5C, 0x7D2B,
+ 0x4ED4, 0x7C7D, 0x6ED3, 0x5B50, 0x81EA, 0x6E0D, 0x5B57, 0x9B03,
+ 0x68D5, 0x8E2A, 0x5B97, 0x7EFC, 0x603B, 0x7EB5, 0x90B9, 0x8D70,
+ 0x594F, 0x63CD, 0x79DF, 0x8DB3, 0x5352, 0x65CF, 0x7956, 0x8BC5,
+ 0x963B, 0x7EC4, 0x94BB, 0x7E82, 0x5634, 0x9189, 0x6700, 0x7F6A,
+ 0x5C0A, 0x9075, 0x6628, 0x5DE6, 0x4F50, 0x67DE, 0x505A, 0x4F5C,
+ 0x5750, 0x5EA7, 0xE810, 0xE811, 0xE812, 0xE813, 0xE814,
+ /* GB 0xD840..0xD87E */
+ 0x8C38, 0x8C39, 0x8C3A, 0x8C3B, 0x8C3C, 0x8C3D, 0x8C3E, 0x8C3F,
+ 0x8C40, 0x8C42, 0x8C43, 0x8C44, 0x8C45, 0x8C48, 0x8C4A, 0x8C4B,
+ 0x8C4D, 0x8C4E, 0x8C4F, 0x8C50, 0x8C51, 0x8C52, 0x8C53, 0x8C54,
+ 0x8C56, 0x8C57, 0x8C58, 0x8C59, 0x8C5B, 0x8C5C, 0x8C5D, 0x8C5E,
+ 0x8C5F, 0x8C60, 0x8C63, 0x8C64, 0x8C65, 0x8C66, 0x8C67, 0x8C68,
+ 0x8C69, 0x8C6C, 0x8C6D, 0x8C6E, 0x8C6F, 0x8C70, 0x8C71, 0x8C72,
+ 0x8C74, 0x8C75, 0x8C76, 0x8C77, 0x8C7B, 0x8C7C, 0x8C7D, 0x8C7E,
+ 0x8C7F, 0x8C80, 0x8C81, 0x8C83, 0x8C84, 0x8C86, 0x8C87,
+ /* GB 0xD880..0xD8FE */
+ 0x8C88, 0x8C8B, 0x8C8D, 0x8C8E, 0x8C8F, 0x8C90, 0x8C91, 0x8C92,
+ 0x8C93, 0x8C95, 0x8C96, 0x8C97, 0x8C99, 0x8C9A, 0x8C9B, 0x8C9C,
+ 0x8C9D, 0x8C9E, 0x8C9F, 0x8CA0, 0x8CA1, 0x8CA2, 0x8CA3, 0x8CA4,
+ 0x8CA5, 0x8CA6, 0x8CA7, 0x8CA8, 0x8CA9, 0x8CAA, 0x8CAB, 0x8CAC,
+ 0x8CAD, 0x4E8D, 0x4E0C, 0x5140, 0x4E10, 0x5EFF, 0x5345, 0x4E15,
+ 0x4E98, 0x4E1E, 0x9B32, 0x5B6C, 0x5669, 0x4E28, 0x79BA, 0x4E3F,
+ 0x5315, 0x4E47, 0x592D, 0x723B, 0x536E, 0x6C10, 0x56DF, 0x80E4,
+ 0x9997, 0x6BD3, 0x777E, 0x9F17, 0x4E36, 0x4E9F, 0x9F10, 0x4E5C,
+ 0x4E69, 0x4E93, 0x8288, 0x5B5B, 0x556C, 0x560F, 0x4EC4, 0x538D,
+ 0x539D, 0x53A3, 0x53A5, 0x53AE, 0x9765, 0x8D5D, 0x531A, 0x53F5,
+ 0x5326, 0x532E, 0x533E, 0x8D5C, 0x5366, 0x5363, 0x5202, 0x5208,
+ 0x520E, 0x522D, 0x5233, 0x523F, 0x5240, 0x524C, 0x525E, 0x5261,
+ 0x525C, 0x84AF, 0x527D, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182,
+ 0x7F54, 0x4EBB, 0x4EC3, 0x4EC9, 0x4EC2, 0x4EE8, 0x4EE1, 0x4EEB,
+ 0x4EDE, 0x4F1B, 0x4EF3, 0x4F22, 0x4F64, 0x4EF5, 0x4F25, 0x4F27,
+ 0x4F09, 0x4F2B, 0x4F5E, 0x4F67, 0x6538, 0x4F5A, 0x4F5D,
+ /* GB 0xD940..0xD97E */
+ 0x8CAE, 0x8CAF, 0x8CB0, 0x8CB1, 0x8CB2, 0x8CB3, 0x8CB4, 0x8CB5,
+ 0x8CB6, 0x8CB7, 0x8CB8, 0x8CB9, 0x8CBA, 0x8CBB, 0x8CBC, 0x8CBD,
+ 0x8CBE, 0x8CBF, 0x8CC0, 0x8CC1, 0x8CC2, 0x8CC3, 0x8CC4, 0x8CC5,
+ 0x8CC6, 0x8CC7, 0x8CC8, 0x8CC9, 0x8CCA, 0x8CCB, 0x8CCC, 0x8CCD,
+ 0x8CCE, 0x8CCF, 0x8CD0, 0x8CD1, 0x8CD2, 0x8CD3, 0x8CD4, 0x8CD5,
+ 0x8CD6, 0x8CD7, 0x8CD8, 0x8CD9, 0x8CDA, 0x8CDB, 0x8CDC, 0x8CDD,
+ 0x8CDE, 0x8CDF, 0x8CE0, 0x8CE1, 0x8CE2, 0x8CE3, 0x8CE4, 0x8CE5,
+ 0x8CE6, 0x8CE7, 0x8CE8, 0x8CE9, 0x8CEA, 0x8CEB, 0x8CEC,
+ /* GB 0xD980..0xD9FE */
+ 0x8CED, 0x8CEE, 0x8CEF, 0x8CF0, 0x8CF1, 0x8CF2, 0x8CF3, 0x8CF4,
+ 0x8CF5, 0x8CF6, 0x8CF7, 0x8CF8, 0x8CF9, 0x8CFA, 0x8CFB, 0x8CFC,
+ 0x8CFD, 0x8CFE, 0x8CFF, 0x8D00, 0x8D01, 0x8D02, 0x8D03, 0x8D04,
+ 0x8D05, 0x8D06, 0x8D07, 0x8D08, 0x8D09, 0x8D0A, 0x8D0B, 0x8D0C,
+ 0x8D0D, 0x4F5F, 0x4F57, 0x4F32, 0x4F3D, 0x4F76, 0x4F74, 0x4F91,
+ 0x4F89, 0x4F83, 0x4F8F, 0x4F7E, 0x4F7B, 0x4FAA, 0x4F7C, 0x4FAC,
+ 0x4F94, 0x4FE6, 0x4FE8, 0x4FEA, 0x4FC5, 0x4FDA, 0x4FE3, 0x4FDC,
+ 0x4FD1, 0x4FDF, 0x4FF8, 0x5029, 0x504C, 0x4FF3, 0x502C, 0x500F,
+ 0x502E, 0x502D, 0x4FFE, 0x501C, 0x500C, 0x5025, 0x5028, 0x507E,
+ 0x5043, 0x5055, 0x5048, 0x504E, 0x506C, 0x507B, 0x50A5, 0x50A7,
+ 0x50A9, 0x50BA, 0x50D6, 0x5106, 0x50ED, 0x50EC, 0x50E6, 0x50EE,
+ 0x5107, 0x510B, 0x4EDD, 0x6C3D, 0x4F58, 0x4F65, 0x4FCE, 0x9FA0,
+ 0x6C46, 0x7C74, 0x516E, 0x5DFD, 0x9EC9, 0x9998, 0x5181, 0x5914,
+ 0x52F9, 0x530D, 0x8A07, 0x5310, 0x51EB, 0x5919, 0x5155, 0x4EA0,
+ 0x5156, 0x4EB3, 0x886E, 0x88A4, 0x4EB5, 0x8114, 0x88D2, 0x7980,
+ 0x5B34, 0x8803, 0x7FB8, 0x51AB, 0x51B1, 0x51BD, 0x51BC,
+ /* GB 0xDA40..0xDA7E */
+ 0x8D0E, 0x8D0F, 0x8D10, 0x8D11, 0x8D12, 0x8D13, 0x8D14, 0x8D15,
+ 0x8D16, 0x8D17, 0x8D18, 0x8D19, 0x8D1A, 0x8D1B, 0x8D1C, 0x8D20,
+ 0x8D51, 0x8D52, 0x8D57, 0x8D5F, 0x8D65, 0x8D68, 0x8D69, 0x8D6A,
+ 0x8D6C, 0x8D6E, 0x8D6F, 0x8D71, 0x8D72, 0x8D78, 0x8D79, 0x8D7A,
+ 0x8D7B, 0x8D7C, 0x8D7D, 0x8D7E, 0x8D7F, 0x8D80, 0x8D82, 0x8D83,
+ 0x8D86, 0x8D87, 0x8D88, 0x8D89, 0x8D8C, 0x8D8D, 0x8D8E, 0x8D8F,
+ 0x8D90, 0x8D92, 0x8D93, 0x8D95, 0x8D96, 0x8D97, 0x8D98, 0x8D99,
+ 0x8D9A, 0x8D9B, 0x8D9C, 0x8D9D, 0x8D9E, 0x8DA0, 0x8DA1,
+ /* GB 0xDA80..0xDAFE */
+ 0x8DA2, 0x8DA4, 0x8DA5, 0x8DA6, 0x8DA7, 0x8DA8, 0x8DA9, 0x8DAA,
+ 0x8DAB, 0x8DAC, 0x8DAD, 0x8DAE, 0x8DAF, 0x8DB0, 0x8DB2, 0x8DB6,
+ 0x8DB7, 0x8DB9, 0x8DBB, 0x8DBD, 0x8DC0, 0x8DC1, 0x8DC2, 0x8DC5,
+ 0x8DC7, 0x8DC8, 0x8DC9, 0x8DCA, 0x8DCD, 0x8DD0, 0x8DD2, 0x8DD3,
+ 0x8DD4, 0x51C7, 0x5196, 0x51A2, 0x51A5, 0x8BA0, 0x8BA6, 0x8BA7,
+ 0x8BAA, 0x8BB4, 0x8BB5, 0x8BB7, 0x8BC2, 0x8BC3, 0x8BCB, 0x8BCF,
+ 0x8BCE, 0x8BD2, 0x8BD3, 0x8BD4, 0x8BD6, 0x8BD8, 0x8BD9, 0x8BDC,
+ 0x8BDF, 0x8BE0, 0x8BE4, 0x8BE8, 0x8BE9, 0x8BEE, 0x8BF0, 0x8BF3,
+ 0x8BF6, 0x8BF9, 0x8BFC, 0x8BFF, 0x8C00, 0x8C02, 0x8C04, 0x8C07,
+ 0x8C0C, 0x8C0F, 0x8C11, 0x8C12, 0x8C14, 0x8C15, 0x8C16, 0x8C19,
+ 0x8C1B, 0x8C18, 0x8C1D, 0x8C1F, 0x8C20, 0x8C21, 0x8C25, 0x8C27,
+ 0x8C2A, 0x8C2B, 0x8C2E, 0x8C2F, 0x8C32, 0x8C33, 0x8C35, 0x8C36,
+ 0x5369, 0x537A, 0x961D, 0x9622, 0x9621, 0x9631, 0x962A, 0x963D,
+ 0x963C, 0x9642, 0x9649, 0x9654, 0x965F, 0x9667, 0x966C, 0x9672,
+ 0x9674, 0x9688, 0x968D, 0x9697, 0x96B0, 0x9097, 0x909B, 0x909D,
+ 0x9099, 0x90AC, 0x90A1, 0x90B4, 0x90B3, 0x90B6, 0x90BA,
+ /* GB 0xDB40..0xDB7E */
+ 0x8DD5, 0x8DD8, 0x8DD9, 0x8DDC, 0x8DE0, 0x8DE1, 0x8DE2, 0x8DE5,
+ 0x8DE6, 0x8DE7, 0x8DE9, 0x8DED, 0x8DEE, 0x8DF0, 0x8DF1, 0x8DF2,
+ 0x8DF4, 0x8DF6, 0x8DFC, 0x8DFE, 0x8DFF, 0x8E00, 0x8E01, 0x8E02,
+ 0x8E03, 0x8E04, 0x8E06, 0x8E07, 0x8E08, 0x8E0B, 0x8E0D, 0x8E0E,
+ 0x8E10, 0x8E11, 0x8E12, 0x8E13, 0x8E15, 0x8E16, 0x8E17, 0x8E18,
+ 0x8E19, 0x8E1A, 0x8E1B, 0x8E1C, 0x8E20, 0x8E21, 0x8E24, 0x8E25,
+ 0x8E26, 0x8E27, 0x8E28, 0x8E2B, 0x8E2D, 0x8E30, 0x8E32, 0x8E33,
+ 0x8E34, 0x8E36, 0x8E37, 0x8E38, 0x8E3B, 0x8E3C, 0x8E3E,
+ /* GB 0xDB80..0xDBFE */
+ 0x8E3F, 0x8E43, 0x8E45, 0x8E46, 0x8E4C, 0x8E4D, 0x8E4E, 0x8E4F,
+ 0x8E50, 0x8E53, 0x8E54, 0x8E55, 0x8E56, 0x8E57, 0x8E58, 0x8E5A,
+ 0x8E5B, 0x8E5C, 0x8E5D, 0x8E5E, 0x8E5F, 0x8E60, 0x8E61, 0x8E62,
+ 0x8E63, 0x8E64, 0x8E65, 0x8E67, 0x8E68, 0x8E6A, 0x8E6B, 0x8E6E,
+ 0x8E71, 0x90B8, 0x90B0, 0x90CF, 0x90C5, 0x90BE, 0x90D0, 0x90C4,
+ 0x90C7, 0x90D3, 0x90E6, 0x90E2, 0x90DC, 0x90D7, 0x90DB, 0x90EB,
+ 0x90EF, 0x90FE, 0x9104, 0x9122, 0x911E, 0x9123, 0x9131, 0x912F,
+ 0x9139, 0x9143, 0x9146, 0x520D, 0x5942, 0x52A2, 0x52AC, 0x52AD,
+ 0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0, 0x53DF, 0x71EE, 0x77CD,
+ 0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6, 0x5F01, 0x755A, 0x5DEF,
+ 0x574C, 0x57A9, 0x57A1, 0x587E, 0x58BC, 0x58C5, 0x58D1, 0x5729,
+ 0x572C, 0x572A, 0x5733, 0x5739, 0x572E, 0x572F, 0x575C, 0x573B,
+ 0x5742, 0x5769, 0x5785, 0x576B, 0x5786, 0x577C, 0x577B, 0x5768,
+ 0x576D, 0x5776, 0x5773, 0x57AD, 0x57A4, 0x578C, 0x57B2, 0x57CF,
+ 0x57A7, 0x57B4, 0x5793, 0x57A0, 0x57D5, 0x57D8, 0x57DA, 0x57D9,
+ 0x57D2, 0x57B8, 0x57F4, 0x57EF, 0x57F8, 0x57E4, 0x57DD,
+ /* GB 0xDC40..0xDC7E */
+ 0x8E73, 0x8E75, 0x8E77, 0x8E78, 0x8E79, 0x8E7A, 0x8E7B, 0x8E7D,
+ 0x8E7E, 0x8E80, 0x8E82, 0x8E83, 0x8E84, 0x8E86, 0x8E88, 0x8E89,
+ 0x8E8A, 0x8E8B, 0x8E8C, 0x8E8D, 0x8E8E, 0x8E91, 0x8E92, 0x8E93,
+ 0x8E95, 0x8E96, 0x8E97, 0x8E98, 0x8E99, 0x8E9A, 0x8E9B, 0x8E9D,
+ 0x8E9F, 0x8EA0, 0x8EA1, 0x8EA2, 0x8EA3, 0x8EA4, 0x8EA5, 0x8EA6,
+ 0x8EA7, 0x8EA8, 0x8EA9, 0x8EAA, 0x8EAD, 0x8EAE, 0x8EB0, 0x8EB1,
+ 0x8EB3, 0x8EB4, 0x8EB5, 0x8EB6, 0x8EB7, 0x8EB8, 0x8EB9, 0x8EBB,
+ 0x8EBC, 0x8EBD, 0x8EBE, 0x8EBF, 0x8EC0, 0x8EC1, 0x8EC2,
+ /* GB 0xDC80..0xDCFE */
+ 0x8EC3, 0x8EC4, 0x8EC5, 0x8EC6, 0x8EC7, 0x8EC8, 0x8EC9, 0x8ECA,
+ 0x8ECB, 0x8ECC, 0x8ECD, 0x8ECF, 0x8ED0, 0x8ED1, 0x8ED2, 0x8ED3,
+ 0x8ED4, 0x8ED5, 0x8ED6, 0x8ED7, 0x8ED8, 0x8ED9, 0x8EDA, 0x8EDB,
+ 0x8EDC, 0x8EDD, 0x8EDE, 0x8EDF, 0x8EE0, 0x8EE1, 0x8EE2, 0x8EE3,
+ 0x8EE4, 0x580B, 0x580D, 0x57FD, 0x57ED, 0x5800, 0x581E, 0x5819,
+ 0x5844, 0x5820, 0x5865, 0x586C, 0x5881, 0x5889, 0x589A, 0x5880,
+ 0x99A8, 0x9F19, 0x61FF, 0x8279, 0x827D, 0x827F, 0x828F, 0x828A,
+ 0x82A8, 0x8284, 0x828E, 0x8291, 0x8297, 0x8299, 0x82AB, 0x82B8,
+ 0x82BE, 0x82B0, 0x82C8, 0x82CA, 0x82E3, 0x8298, 0x82B7, 0x82AE,
+ 0x82CB, 0x82CC, 0x82C1, 0x82A9, 0x82B4, 0x82A1, 0x82AA, 0x829F,
+ 0x82C4, 0x82CE, 0x82A4, 0x82E1, 0x8309, 0x82F7, 0x82E4, 0x830F,
+ 0x8307, 0x82DC, 0x82F4, 0x82D2, 0x82D8, 0x830C, 0x82FB, 0x82D3,
+ 0x8311, 0x831A, 0x8306, 0x8314, 0x8315, 0x82E0, 0x82D5, 0x831C,
+ 0x8351, 0x835B, 0x835C, 0x8308, 0x8392, 0x833C, 0x8334, 0x8331,
+ 0x839B, 0x835E, 0x832F, 0x834F, 0x8347, 0x8343, 0x835F, 0x8340,
+ 0x8317, 0x8360, 0x832D, 0x833A, 0x8333, 0x8366, 0x8365,
+ /* GB 0xDD40..0xDD7E */
+ 0x8EE5, 0x8EE6, 0x8EE7, 0x8EE8, 0x8EE9, 0x8EEA, 0x8EEB, 0x8EEC,
+ 0x8EED, 0x8EEE, 0x8EEF, 0x8EF0, 0x8EF1, 0x8EF2, 0x8EF3, 0x8EF4,
+ 0x8EF5, 0x8EF6, 0x8EF7, 0x8EF8, 0x8EF9, 0x8EFA, 0x8EFB, 0x8EFC,
+ 0x8EFD, 0x8EFE, 0x8EFF, 0x8F00, 0x8F01, 0x8F02, 0x8F03, 0x8F04,
+ 0x8F05, 0x8F06, 0x8F07, 0x8F08, 0x8F09, 0x8F0A, 0x8F0B, 0x8F0C,
+ 0x8F0D, 0x8F0E, 0x8F0F, 0x8F10, 0x8F11, 0x8F12, 0x8F13, 0x8F14,
+ 0x8F15, 0x8F16, 0x8F17, 0x8F18, 0x8F19, 0x8F1A, 0x8F1B, 0x8F1C,
+ 0x8F1D, 0x8F1E, 0x8F1F, 0x8F20, 0x8F21, 0x8F22, 0x8F23,
+ /* GB 0xDD80..0xDDFE */
+ 0x8F24, 0x8F25, 0x8F26, 0x8F27, 0x8F28, 0x8F29, 0x8F2A, 0x8F2B,
+ 0x8F2C, 0x8F2D, 0x8F2E, 0x8F2F, 0x8F30, 0x8F31, 0x8F32, 0x8F33,
+ 0x8F34, 0x8F35, 0x8F36, 0x8F37, 0x8F38, 0x8F39, 0x8F3A, 0x8F3B,
+ 0x8F3C, 0x8F3D, 0x8F3E, 0x8F3F, 0x8F40, 0x8F41, 0x8F42, 0x8F43,
+ 0x8F44, 0x8368, 0x831B, 0x8369, 0x836C, 0x836A, 0x836D, 0x836E,
+ 0x83B0, 0x8378, 0x83B3, 0x83B4, 0x83A0, 0x83AA, 0x8393, 0x839C,
+ 0x8385, 0x837C, 0x83B6, 0x83A9, 0x837D, 0x83B8, 0x837B, 0x8398,
+ 0x839E, 0x83A8, 0x83BA, 0x83BC, 0x83C1, 0x8401, 0x83E5, 0x83D8,
+ 0x5807, 0x8418, 0x840B, 0x83DD, 0x83FD, 0x83D6, 0x841C, 0x8438,
+ 0x8411, 0x8406, 0x83D4, 0x83DF, 0x840F, 0x8403, 0x83F8, 0x83F9,
+ 0x83EA, 0x83C5, 0x83C0, 0x8426, 0x83F0, 0x83E1, 0x845C, 0x8451,
+ 0x845A, 0x8459, 0x8473, 0x8487, 0x8488, 0x847A, 0x8489, 0x8478,
+ 0x843C, 0x8446, 0x8469, 0x8476, 0x848C, 0x848E, 0x8431, 0x846D,
+ 0x84C1, 0x84CD, 0x84D0, 0x84E6, 0x84BD, 0x84D3, 0x84CA, 0x84BF,
+ 0x84BA, 0x84E0, 0x84A1, 0x84B9, 0x84B4, 0x8497, 0x84E5, 0x84E3,
+ 0x850C, 0x750D, 0x8538, 0x84F0, 0x8539, 0x851F, 0x853A,
+ /* GB 0xDE40..0xDE7E */
+ 0x8F45, 0x8F46, 0x8F47, 0x8F48, 0x8F49, 0x8F4A, 0x8F4B, 0x8F4C,
+ 0x8F4D, 0x8F4E, 0x8F4F, 0x8F50, 0x8F51, 0x8F52, 0x8F53, 0x8F54,
+ 0x8F55, 0x8F56, 0x8F57, 0x8F58, 0x8F59, 0x8F5A, 0x8F5B, 0x8F5C,
+ 0x8F5D, 0x8F5E, 0x8F5F, 0x8F60, 0x8F61, 0x8F62, 0x8F63, 0x8F64,
+ 0x8F65, 0x8F6A, 0x8F80, 0x8F8C, 0x8F92, 0x8F9D, 0x8FA0, 0x8FA1,
+ 0x8FA2, 0x8FA4, 0x8FA5, 0x8FA6, 0x8FA7, 0x8FAA, 0x8FAC, 0x8FAD,
+ 0x8FAE, 0x8FAF, 0x8FB2, 0x8FB3, 0x8FB4, 0x8FB5, 0x8FB7, 0x8FB8,
+ 0x8FBA, 0x8FBB, 0x8FBC, 0x8FBF, 0x8FC0, 0x8FC3, 0x8FC6,
+ /* GB 0xDE80..0xDEFE */
+ 0x8FC9, 0x8FCA, 0x8FCB, 0x8FCC, 0x8FCD, 0x8FCF, 0x8FD2, 0x8FD6,
+ 0x8FD7, 0x8FDA, 0x8FE0, 0x8FE1, 0x8FE3, 0x8FE7, 0x8FEC, 0x8FEF,
+ 0x8FF1, 0x8FF2, 0x8FF4, 0x8FF5, 0x8FF6, 0x8FFA, 0x8FFB, 0x8FFC,
+ 0x8FFE, 0x8FFF, 0x9007, 0x9008, 0x900C, 0x900E, 0x9013, 0x9015,
+ 0x9018, 0x8556, 0x853B, 0x84FF, 0x84FC, 0x8559, 0x8548, 0x8568,
+ 0x8564, 0x855E, 0x857A, 0x77A2, 0x8543, 0x8572, 0x857B, 0x85A4,
+ 0x85A8, 0x8587, 0x858F, 0x8579, 0x85AE, 0x859C, 0x8585, 0x85B9,
+ 0x85B7, 0x85B0, 0x85D3, 0x85C1, 0x85DC, 0x85FF, 0x8627, 0x8605,
+ 0x8629, 0x8616, 0x863C, 0x5EFE, 0x5F08, 0x593C, 0x5941, 0x8037,
+ 0x5955, 0x595A, 0x5958, 0x530F, 0x5C22, 0x5C25, 0x5C2C, 0x5C34,
+ 0x624C, 0x626A, 0x629F, 0x62BB, 0x62CA, 0x62DA, 0x62D7, 0x62EE,
+ 0x6322, 0x62F6, 0x6339, 0x634B, 0x6343, 0x63AD, 0x63F6, 0x6371,
+ 0x637A, 0x638E, 0x63B4, 0x636D, 0x63AC, 0x638A, 0x6369, 0x63AE,
+ 0x63BC, 0x63F2, 0x63F8, 0x63E0, 0x63FF, 0x63C4, 0x63DE, 0x63CE,
+ 0x6452, 0x63C6, 0x63BE, 0x6445, 0x6441, 0x640B, 0x641B, 0x6420,
+ 0x640C, 0x6426, 0x6421, 0x645E, 0x6484, 0x646D, 0x6496,
+ /* GB 0xDF40..0xDF7E */
+ 0x9019, 0x901C, 0x9023, 0x9024, 0x9025, 0x9027, 0x9028, 0x9029,
+ 0x902A, 0x902B, 0x902C, 0x9030, 0x9031, 0x9032, 0x9033, 0x9034,
+ 0x9037, 0x9039, 0x903A, 0x903D, 0x903F, 0x9040, 0x9043, 0x9045,
+ 0x9046, 0x9048, 0x9049, 0x904A, 0x904B, 0x904C, 0x904E, 0x9054,
+ 0x9055, 0x9056, 0x9059, 0x905A, 0x905C, 0x905D, 0x905E, 0x905F,
+ 0x9060, 0x9061, 0x9064, 0x9066, 0x9067, 0x9069, 0x906A, 0x906B,
+ 0x906C, 0x906F, 0x9070, 0x9071, 0x9072, 0x9073, 0x9076, 0x9077,
+ 0x9078, 0x9079, 0x907A, 0x907B, 0x907C, 0x907E, 0x9081,
+ /* GB 0xDF80..0xDFFE */
+ 0x9084, 0x9085, 0x9086, 0x9087, 0x9089, 0x908A, 0x908C, 0x908D,
+ 0x908E, 0x908F, 0x9090, 0x9092, 0x9094, 0x9096, 0x9098, 0x909A,
+ 0x909C, 0x909E, 0x909F, 0x90A0, 0x90A4, 0x90A5, 0x90A7, 0x90A8,
+ 0x90A9, 0x90AB, 0x90AD, 0x90B2, 0x90B7, 0x90BC, 0x90BD, 0x90BF,
+ 0x90C0, 0x647A, 0x64B7, 0x64B8, 0x6499, 0x64BA, 0x64C0, 0x64D0,
+ 0x64D7, 0x64E4, 0x64E2, 0x6509, 0x6525, 0x652E, 0x5F0B, 0x5FD2,
+ 0x7519, 0x5F11, 0x535F, 0x53F1, 0x53FD, 0x53E9, 0x53E8, 0x53FB,
+ 0x5412, 0x5416, 0x5406, 0x544B, 0x5452, 0x5453, 0x5454, 0x5456,
+ 0x5443, 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494,
+ 0x5477, 0x5471, 0x5464, 0x549A, 0x549B, 0x5484, 0x5476, 0x5466,
+ 0x549D, 0x54D0, 0x54AD, 0x54C2, 0x54B4, 0x54D2, 0x54A7, 0x54A6,
+ 0x54D3, 0x54D4, 0x5472, 0x54A3, 0x54D5, 0x54BB, 0x54BF, 0x54CC,
+ 0x54D9, 0x54DA, 0x54DC, 0x54A9, 0x54AA, 0x54A4, 0x54DD, 0x54CF,
+ 0x54DE, 0x551B, 0x54E7, 0x5520, 0x54FD, 0x5514, 0x54F3, 0x5522,
+ 0x5523, 0x550F, 0x5511, 0x5527, 0x552A, 0x5567, 0x558F, 0x55B5,
+ 0x5549, 0x556D, 0x5541, 0x5555, 0x553F, 0x5550, 0x553C,
+ /* GB 0xE040..0xE07E */
+ 0x90C2, 0x90C3, 0x90C6, 0x90C8, 0x90C9, 0x90CB, 0x90CC, 0x90CD,
+ 0x90D2, 0x90D4, 0x90D5, 0x90D6, 0x90D8, 0x90D9, 0x90DA, 0x90DE,
+ 0x90DF, 0x90E0, 0x90E3, 0x90E4, 0x90E5, 0x90E9, 0x90EA, 0x90EC,
+ 0x90EE, 0x90F0, 0x90F1, 0x90F2, 0x90F3, 0x90F5, 0x90F6, 0x90F7,
+ 0x90F9, 0x90FA, 0x90FB, 0x90FC, 0x90FF, 0x9100, 0x9101, 0x9103,
+ 0x9105, 0x9106, 0x9107, 0x9108, 0x9109, 0x910A, 0x910B, 0x910C,
+ 0x910D, 0x910E, 0x910F, 0x9110, 0x9111, 0x9112, 0x9113, 0x9114,
+ 0x9115, 0x9116, 0x9117, 0x9118, 0x911A, 0x911B, 0x911C,
+ /* GB 0xE080..0xE0FE */
+ 0x911D, 0x911F, 0x9120, 0x9121, 0x9124, 0x9125, 0x9126, 0x9127,
+ 0x9128, 0x9129, 0x912A, 0x912B, 0x912C, 0x912D, 0x912E, 0x9130,
+ 0x9132, 0x9133, 0x9134, 0x9135, 0x9136, 0x9137, 0x9138, 0x913A,
+ 0x913B, 0x913C, 0x913D, 0x913E, 0x913F, 0x9140, 0x9141, 0x9142,
+ 0x9144, 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530,
+ 0x555C, 0x558B, 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588, 0x5581,
+ 0x559F, 0x557E, 0x55D6, 0x5591, 0x557B, 0x55DF, 0x55BD, 0x55BE,
+ 0x5594, 0x5599, 0x55EA, 0x55F7, 0x55C9, 0x561F, 0x55D1, 0x55EB,
+ 0x55EC, 0x55D4, 0x55E6, 0x55DD, 0x55C4, 0x55EF, 0x55E5, 0x55F2,
+ 0x55F3, 0x55CC, 0x55CD, 0x55E8, 0x55F5, 0x55E4, 0x8F94, 0x561E,
+ 0x5608, 0x560C, 0x5601, 0x5624, 0x5623, 0x55FE, 0x5600, 0x5627,
+ 0x562D, 0x5658, 0x5639, 0x5657, 0x562C, 0x564D, 0x5662, 0x5659,
+ 0x565C, 0x564C, 0x5654, 0x5686, 0x5664, 0x5671, 0x566B, 0x567B,
+ 0x567C, 0x5685, 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD, 0x56E1,
+ 0x56F5, 0x56EB, 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709, 0x571C,
+ 0x5E0F, 0x5E19, 0x5E14, 0x5E11, 0x5E31, 0x5E3B, 0x5E3C,
+ /* GB 0xE140..0xE17E */
+ 0x9145, 0x9147, 0x9148, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156,
+ 0x9158, 0x9159, 0x915B, 0x915C, 0x915F, 0x9160, 0x9166, 0x9167,
+ 0x9168, 0x916B, 0x916D, 0x9173, 0x917A, 0x917B, 0x917C, 0x9180,
+ 0x9181, 0x9182, 0x9183, 0x9184, 0x9186, 0x9188, 0x918A, 0x918E,
+ 0x918F, 0x9193, 0x9194, 0x9195, 0x9196, 0x9197, 0x9198, 0x9199,
+ 0x919C, 0x919D, 0x919E, 0x919F, 0x91A0, 0x91A1, 0x91A4, 0x91A5,
+ 0x91A6, 0x91A7, 0x91A8, 0x91A9, 0x91AB, 0x91AC, 0x91B0, 0x91B1,
+ 0x91B2, 0x91B3, 0x91B6, 0x91B7, 0x91B8, 0x91B9, 0x91BB,
+ /* GB 0xE180..0xE1FE */
+ 0x91BC, 0x91BD, 0x91BE, 0x91BF, 0x91C0, 0x91C1, 0x91C2, 0x91C3,
+ 0x91C4, 0x91C5, 0x91C6, 0x91C8, 0x91CB, 0x91D0, 0x91D2, 0x91D3,
+ 0x91D4, 0x91D5, 0x91D6, 0x91D7, 0x91D8, 0x91D9, 0x91DA, 0x91DB,
+ 0x91DD, 0x91DE, 0x91DF, 0x91E0, 0x91E1, 0x91E2, 0x91E3, 0x91E4,
+ 0x91E5, 0x5E37, 0x5E44, 0x5E54, 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C,
+ 0x5C7A, 0x5C8D, 0x5C90, 0x5C96, 0x5C88, 0x5C98, 0x5C99, 0x5C91,
+ 0x5C9A, 0x5C9C, 0x5CB5, 0x5CA2, 0x5CBD, 0x5CAC, 0x5CAB, 0x5CB1,
+ 0x5CA3, 0x5CC1, 0x5CB7, 0x5CC4, 0x5CD2, 0x5CE4, 0x5CCB, 0x5CE5,
+ 0x5D02, 0x5D03, 0x5D27, 0x5D26, 0x5D2E, 0x5D24, 0x5D1E, 0x5D06,
+ 0x5D1B, 0x5D58, 0x5D3E, 0x5D34, 0x5D3D, 0x5D6C, 0x5D5B, 0x5D6F,
+ 0x5D5D, 0x5D6B, 0x5D4B, 0x5D4A, 0x5D69, 0x5D74, 0x5D82, 0x5D99,
+ 0x5D9D, 0x8C73, 0x5DB7, 0x5DC5, 0x5F73, 0x5F77, 0x5F82, 0x5F87,
+ 0x5F89, 0x5F8C, 0x5F95, 0x5F99, 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5,
+ 0x5FBC, 0x8862, 0x5F61, 0x72AD, 0x72B0, 0x72B4, 0x72B7, 0x72B8,
+ 0x72C3, 0x72C1, 0x72CE, 0x72CD, 0x72D2, 0x72E8, 0x72EF, 0x72E9,
+ 0x72F2, 0x72F4, 0x72F7, 0x7301, 0x72F3, 0x7303, 0x72FA,
+ /* GB 0xE240..0xE27E */
+ 0x91E6, 0x91E7, 0x91E8, 0x91E9, 0x91EA, 0x91EB, 0x91EC, 0x91ED,
+ 0x91EE, 0x91EF, 0x91F0, 0x91F1, 0x91F2, 0x91F3, 0x91F4, 0x91F5,
+ 0x91F6, 0x91F7, 0x91F8, 0x91F9, 0x91FA, 0x91FB, 0x91FC, 0x91FD,
+ 0x91FE, 0x91FF, 0x9200, 0x9201, 0x9202, 0x9203, 0x9204, 0x9205,
+ 0x9206, 0x9207, 0x9208, 0x9209, 0x920A, 0x920B, 0x920C, 0x920D,
+ 0x920E, 0x920F, 0x9210, 0x9211, 0x9212, 0x9213, 0x9214, 0x9215,
+ 0x9216, 0x9217, 0x9218, 0x9219, 0x921A, 0x921B, 0x921C, 0x921D,
+ 0x921E, 0x921F, 0x9220, 0x9221, 0x9222, 0x9223, 0x9224,
+ /* GB 0xE280..0xE2FE */
+ 0x9225, 0x9226, 0x9227, 0x9228, 0x9229, 0x922A, 0x922B, 0x922C,
+ 0x922D, 0x922E, 0x922F, 0x9230, 0x9231, 0x9232, 0x9233, 0x9234,
+ 0x9235, 0x9236, 0x9237, 0x9238, 0x9239, 0x923A, 0x923B, 0x923C,
+ 0x923D, 0x923E, 0x923F, 0x9240, 0x9241, 0x9242, 0x9243, 0x9244,
+ 0x9245, 0x72FB, 0x7317, 0x7313, 0x7321, 0x730A, 0x731E, 0x731D,
+ 0x7315, 0x7322, 0x7339, 0x7325, 0x732C, 0x7338, 0x7331, 0x7350,
+ 0x734D, 0x7357, 0x7360, 0x736C, 0x736F, 0x737E, 0x821B, 0x5925,
+ 0x98E7, 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996A,
+ 0x996B, 0x996C, 0x9974, 0x9977, 0x997D, 0x9980, 0x9984, 0x9987,
+ 0x998A, 0x998D, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5E80,
+ 0x5E91, 0x5E8B, 0x5E96, 0x5EA5, 0x5EA0, 0x5EB9, 0x5EB5, 0x5EBE,
+ 0x5EB3, 0x8D53, 0x5ED2, 0x5ED1, 0x5EDB, 0x5EE8, 0x5EEA, 0x81BA,
+ 0x5FC4, 0x5FC9, 0x5FD6, 0x5FCF, 0x6003, 0x5FEE, 0x6004, 0x5FE1,
+ 0x5FE4, 0x5FFE, 0x6005, 0x6006, 0x5FEA, 0x5FED, 0x5FF8, 0x6019,
+ 0x6035, 0x6026, 0x601B, 0x600F, 0x600D, 0x6029, 0x602B, 0x600A,
+ 0x603F, 0x6021, 0x6078, 0x6079, 0x607B, 0x607A, 0x6042,
+ /* GB 0xE340..0xE37E */
+ 0x9246, 0x9247, 0x9248, 0x9249, 0x924A, 0x924B, 0x924C, 0x924D,
+ 0x924E, 0x924F, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255,
+ 0x9256, 0x9257, 0x9258, 0x9259, 0x925A, 0x925B, 0x925C, 0x925D,
+ 0x925E, 0x925F, 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265,
+ 0x9266, 0x9267, 0x9268, 0x9269, 0x926A, 0x926B, 0x926C, 0x926D,
+ 0x926E, 0x926F, 0x9270, 0x9271, 0x9272, 0x9273, 0x9275, 0x9276,
+ 0x9277, 0x9278, 0x9279, 0x927A, 0x927B, 0x927C, 0x927D, 0x927E,
+ 0x927F, 0x9280, 0x9281, 0x9282, 0x9283, 0x9284, 0x9285,
+ /* GB 0xE380..0xE3FE */
+ 0x9286, 0x9287, 0x9288, 0x9289, 0x928A, 0x928B, 0x928C, 0x928D,
+ 0x928F, 0x9290, 0x9291, 0x9292, 0x9293, 0x9294, 0x9295, 0x9296,
+ 0x9297, 0x9298, 0x9299, 0x929A, 0x929B, 0x929C, 0x929D, 0x929E,
+ 0x929F, 0x92A0, 0x92A1, 0x92A2, 0x92A3, 0x92A4, 0x92A5, 0x92A6,
+ 0x92A7, 0x606A, 0x607D, 0x6096, 0x609A, 0x60AD, 0x609D, 0x6083,
+ 0x6092, 0x608C, 0x609B, 0x60EC, 0x60BB, 0x60B1, 0x60DD, 0x60D8,
+ 0x60C6, 0x60DA, 0x60B4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60F4,
+ 0x6100, 0x610E, 0x612B, 0x614A, 0x6175, 0x61AC, 0x6194, 0x61A7,
+ 0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3, 0x95E9, 0x95EB, 0x95F1,
+ 0x95F3, 0x95F5, 0x95F6, 0x95FC, 0x95FE, 0x9603, 0x9604, 0x9606,
+ 0x9608, 0x960A, 0x960B, 0x960C, 0x960D, 0x960F, 0x9612, 0x9615,
+ 0x9616, 0x9617, 0x9619, 0x961A, 0x4E2C, 0x723F, 0x6215, 0x6C35,
+ 0x6C54, 0x6C5C, 0x6C4A, 0x6CA3, 0x6C85, 0x6C90, 0x6C94, 0x6C8C,
+ 0x6C68, 0x6C69, 0x6C74, 0x6C76, 0x6C86, 0x6CA9, 0x6CD0, 0x6CD4,
+ 0x6CAD, 0x6CF7, 0x6CF8, 0x6CF1, 0x6CD7, 0x6CB2, 0x6CE0, 0x6CD6,
+ 0x6CFA, 0x6CEB, 0x6CEE, 0x6CB1, 0x6CD3, 0x6CEF, 0x6CFE,
+ /* GB 0xE440..0xE47E */
+ 0x92A8, 0x92A9, 0x92AA, 0x92AB, 0x92AC, 0x92AD, 0x92AF, 0x92B0,
+ 0x92B1, 0x92B2, 0x92B3, 0x92B4, 0x92B5, 0x92B6, 0x92B7, 0x92B8,
+ 0x92B9, 0x92BA, 0x92BB, 0x92BC, 0x92BD, 0x92BE, 0x92BF, 0x92C0,
+ 0x92C1, 0x92C2, 0x92C3, 0x92C4, 0x92C5, 0x92C6, 0x92C7, 0x92C9,
+ 0x92CA, 0x92CB, 0x92CC, 0x92CD, 0x92CE, 0x92CF, 0x92D0, 0x92D1,
+ 0x92D2, 0x92D3, 0x92D4, 0x92D5, 0x92D6, 0x92D7, 0x92D8, 0x92D9,
+ 0x92DA, 0x92DB, 0x92DC, 0x92DD, 0x92DE, 0x92DF, 0x92E0, 0x92E1,
+ 0x92E2, 0x92E3, 0x92E4, 0x92E5, 0x92E6, 0x92E7, 0x92E8,
+ /* GB 0xE480..0xE4FE */
+ 0x92E9, 0x92EA, 0x92EB, 0x92EC, 0x92ED, 0x92EE, 0x92EF, 0x92F0,
+ 0x92F1, 0x92F2, 0x92F3, 0x92F4, 0x92F5, 0x92F6, 0x92F7, 0x92F8,
+ 0x92F9, 0x92FA, 0x92FB, 0x92FC, 0x92FD, 0x92FE, 0x92FF, 0x9300,
+ 0x9301, 0x9302, 0x9303, 0x9304, 0x9305, 0x9306, 0x9307, 0x9308,
+ 0x9309, 0x6D39, 0x6D27, 0x6D0C, 0x6D43, 0x6D48, 0x6D07, 0x6D04,
+ 0x6D19, 0x6D0E, 0x6D2B, 0x6D4D, 0x6D2E, 0x6D35, 0x6D1A, 0x6D4F,
+ 0x6D52, 0x6D54, 0x6D33, 0x6D91, 0x6D6F, 0x6D9E, 0x6DA0, 0x6D5E,
+ 0x6D93, 0x6D94, 0x6D5C, 0x6D60, 0x6D7C, 0x6D63, 0x6E1A, 0x6DC7,
+ 0x6DC5, 0x6DDE, 0x6E0E, 0x6DBF, 0x6DE0, 0x6E11, 0x6DE6, 0x6DDD,
+ 0x6DD9, 0x6E16, 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B, 0x6E6E, 0x6E4E,
+ 0x6E6B, 0x6EB2, 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32, 0x6E25,
+ 0x6E44, 0x6EDF, 0x6EB1, 0x6E98, 0x6EE0, 0x6F2D, 0x6EE2, 0x6EA5,
+ 0x6EA7, 0x6EBD, 0x6EBB, 0x6EB7, 0x6ED7, 0x6EB4, 0x6ECF, 0x6E8F,
+ 0x6EC2, 0x6E9F, 0x6F62, 0x6F46, 0x6F47, 0x6F24, 0x6F15, 0x6EF9,
+ 0x6F2F, 0x6F36, 0x6F4B, 0x6F74, 0x6F2A, 0x6F09, 0x6F29, 0x6F89,
+ 0x6F8D, 0x6F8C, 0x6F78, 0x6F72, 0x6F7C, 0x6F7A, 0x6FD1,
+ /* GB 0xE540..0xE57E */
+ 0x930A, 0x930B, 0x930C, 0x930D, 0x930E, 0x930F, 0x9310, 0x9311,
+ 0x9312, 0x9313, 0x9314, 0x9315, 0x9316, 0x9317, 0x9318, 0x9319,
+ 0x931A, 0x931B, 0x931C, 0x931D, 0x931E, 0x931F, 0x9320, 0x9321,
+ 0x9322, 0x9323, 0x9324, 0x9325, 0x9326, 0x9327, 0x9328, 0x9329,
+ 0x932A, 0x932B, 0x932C, 0x932D, 0x932E, 0x932F, 0x9330, 0x9331,
+ 0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337, 0x9338, 0x9339,
+ 0x933A, 0x933B, 0x933C, 0x933D, 0x933F, 0x9340, 0x9341, 0x9342,
+ 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349,
+ /* GB 0xE580..0xE5FE */
+ 0x934A, 0x934B, 0x934C, 0x934D, 0x934E, 0x934F, 0x9350, 0x9351,
+ 0x9352, 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359,
+ 0x935A, 0x935B, 0x935C, 0x935D, 0x935E, 0x935F, 0x9360, 0x9361,
+ 0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369,
+ 0x936B, 0x6FC9, 0x6FA7, 0x6FB9, 0x6FB6, 0x6FC2, 0x6FE1, 0x6FEE,
+ 0x6FDE, 0x6FE0, 0x6FEF, 0x701A, 0x7023, 0x701B, 0x7039, 0x7035,
+ 0x704F, 0x705E, 0x5B80, 0x5B84, 0x5B95, 0x5B93, 0x5BA5, 0x5BB8,
+ 0x752F, 0x9A9E, 0x6434, 0x5BE4, 0x5BEE, 0x8930, 0x5BF0, 0x8E47,
+ 0x8B07, 0x8FB6, 0x8FD3, 0x8FD5, 0x8FE5, 0x8FEE, 0x8FE4, 0x8FE9,
+ 0x8FE6, 0x8FF3, 0x8FE8, 0x9005, 0x9004, 0x900B, 0x9026, 0x9011,
+ 0x900D, 0x9016, 0x9021, 0x9035, 0x9036, 0x902D, 0x902F, 0x9044,
+ 0x9051, 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905B, 0x66B9,
+ 0x9074, 0x907D, 0x9082, 0x9088, 0x9083, 0x908B, 0x5F50, 0x5F57,
+ 0x5F56, 0x5F58, 0x5C3B, 0x54AB, 0x5C50, 0x5C59, 0x5B71, 0x5C63,
+ 0x5C66, 0x7FBC, 0x5F2A, 0x5F29, 0x5F2D, 0x8274, 0x5F3C, 0x9B3B,
+ 0x5C6E, 0x5981, 0x5983, 0x598D, 0x59A9, 0x59AA, 0x59A3,
+ /* GB 0xE640..0xE67E */
+ 0x936C, 0x936D, 0x936E, 0x936F, 0x9370, 0x9371, 0x9372, 0x9373,
+ 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379, 0x937A, 0x937B,
+ 0x937C, 0x937D, 0x937E, 0x937F, 0x9380, 0x9381, 0x9382, 0x9383,
+ 0x9384, 0x9385, 0x9386, 0x9387, 0x9388, 0x9389, 0x938A, 0x938B,
+ 0x938C, 0x938D, 0x938E, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394,
+ 0x9395, 0x9396, 0x9397, 0x9398, 0x9399, 0x939A, 0x939B, 0x939C,
+ 0x939D, 0x939E, 0x939F, 0x93A0, 0x93A1, 0x93A2, 0x93A3, 0x93A4,
+ 0x93A5, 0x93A6, 0x93A7, 0x93A8, 0x93A9, 0x93AA, 0x93AB,
+ /* GB 0xE680..0xE6FE */
+ 0x93AC, 0x93AD, 0x93AE, 0x93AF, 0x93B0, 0x93B1, 0x93B2, 0x93B3,
+ 0x93B4, 0x93B5, 0x93B6, 0x93B7, 0x93B8, 0x93B9, 0x93BA, 0x93BB,
+ 0x93BC, 0x93BD, 0x93BE, 0x93BF, 0x93C0, 0x93C1, 0x93C2, 0x93C3,
+ 0x93C4, 0x93C5, 0x93C6, 0x93C7, 0x93C8, 0x93C9, 0x93CB, 0x93CC,
+ 0x93CD, 0x5997, 0x59CA, 0x59AB, 0x599E, 0x59A4, 0x59D2, 0x59B2,
+ 0x59AF, 0x59D7, 0x59BE, 0x5A05, 0x5A06, 0x59DD, 0x5A08, 0x59E3,
+ 0x59D8, 0x59F9, 0x5A0C, 0x5A09, 0x5A32, 0x5A34, 0x5A11, 0x5A23,
+ 0x5A13, 0x5A40, 0x5A67, 0x5A4A, 0x5A55, 0x5A3C, 0x5A62, 0x5A75,
+ 0x80EC, 0x5AAA, 0x5A9B, 0x5A77, 0x5A7A, 0x5ABE, 0x5AEB, 0x5AB2,
+ 0x5AD2, 0x5AD4, 0x5AB8, 0x5AE0, 0x5AE3, 0x5AF1, 0x5AD6, 0x5AE6,
+ 0x5AD8, 0x5ADC, 0x5B09, 0x5B17, 0x5B16, 0x5B32, 0x5B37, 0x5B40,
+ 0x5C15, 0x5C1C, 0x5B5A, 0x5B65, 0x5B73, 0x5B51, 0x5B53, 0x5B62,
+ 0x9A75, 0x9A77, 0x9A78, 0x9A7A, 0x9A7F, 0x9A7D, 0x9A80, 0x9A81,
+ 0x9A85, 0x9A88, 0x9A8A, 0x9A90, 0x9A92, 0x9A93, 0x9A96, 0x9A98,
+ 0x9A9B, 0x9A9C, 0x9A9D, 0x9A9F, 0x9AA0, 0x9AA2, 0x9AA3, 0x9AA5,
+ 0x9AA7, 0x7E9F, 0x7EA1, 0x7EA3, 0x7EA5, 0x7EA8, 0x7EA9,
+ /* GB 0xE740..0xE77E */
+ 0x93CE, 0x93CF, 0x93D0, 0x93D1, 0x93D2, 0x93D3, 0x93D4, 0x93D5,
+ 0x93D7, 0x93D8, 0x93D9, 0x93DA, 0x93DB, 0x93DC, 0x93DD, 0x93DE,
+ 0x93DF, 0x93E0, 0x93E1, 0x93E2, 0x93E3, 0x93E4, 0x93E5, 0x93E6,
+ 0x93E7, 0x93E8, 0x93E9, 0x93EA, 0x93EB, 0x93EC, 0x93ED, 0x93EE,
+ 0x93EF, 0x93F0, 0x93F1, 0x93F2, 0x93F3, 0x93F4, 0x93F5, 0x93F6,
+ 0x93F7, 0x93F8, 0x93F9, 0x93FA, 0x93FB, 0x93FC, 0x93FD, 0x93FE,
+ 0x93FF, 0x9400, 0x9401, 0x9402, 0x9403, 0x9404, 0x9405, 0x9406,
+ 0x9407, 0x9408, 0x9409, 0x940A, 0x940B, 0x940C, 0x940D,
+ /* GB 0xE780..0xE7FE */
+ 0x940E, 0x940F, 0x9410, 0x9411, 0x9412, 0x9413, 0x9414, 0x9415,
+ 0x9416, 0x9417, 0x9418, 0x9419, 0x941A, 0x941B, 0x941C, 0x941D,
+ 0x941E, 0x941F, 0x9420, 0x9421, 0x9422, 0x9423, 0x9424, 0x9425,
+ 0x9426, 0x9427, 0x9428, 0x9429, 0x942A, 0x942B, 0x942C, 0x942D,
+ 0x942E, 0x7EAD, 0x7EB0, 0x7EBE, 0x7EC0, 0x7EC1, 0x7EC2, 0x7EC9,
+ 0x7ECB, 0x7ECC, 0x7ED0, 0x7ED4, 0x7ED7, 0x7EDB, 0x7EE0, 0x7EE1,
+ 0x7EE8, 0x7EEB, 0x7EEE, 0x7EEF, 0x7EF1, 0x7EF2, 0x7F0D, 0x7EF6,
+ 0x7EFA, 0x7EFB, 0x7EFE, 0x7F01, 0x7F02, 0x7F03, 0x7F07, 0x7F08,
+ 0x7F0B, 0x7F0C, 0x7F0F, 0x7F11, 0x7F12, 0x7F17, 0x7F19, 0x7F1C,
+ 0x7F1B, 0x7F1F, 0x7F21, 0x7F22, 0x7F23, 0x7F24, 0x7F25, 0x7F26,
+ 0x7F27, 0x7F2A, 0x7F2B, 0x7F2C, 0x7F2D, 0x7F2F, 0x7F30, 0x7F31,
+ 0x7F32, 0x7F33, 0x7F35, 0x5E7A, 0x757F, 0x5DDB, 0x753E, 0x9095,
+ 0x738E, 0x7391, 0x73AE, 0x73A2, 0x739F, 0x73CF, 0x73C2, 0x73D1,
+ 0x73B7, 0x73B3, 0x73C0, 0x73C9, 0x73C8, 0x73E5, 0x73D9, 0x987C,
+ 0x740A, 0x73E9, 0x73E7, 0x73DE, 0x73BA, 0x73F2, 0x740F, 0x742A,
+ 0x745B, 0x7426, 0x7425, 0x7428, 0x7430, 0x742E, 0x742C,
+ /* GB 0xE840..0xE87E */
+ 0x942F, 0x9430, 0x9431, 0x9432, 0x9433, 0x9434, 0x9435, 0x9436,
+ 0x9437, 0x9438, 0x9439, 0x943A, 0x943B, 0x943C, 0x943D, 0x943F,
+ 0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, 0x9446, 0x9447,
+ 0x9448, 0x9449, 0x944A, 0x944B, 0x944C, 0x944D, 0x944E, 0x944F,
+ 0x9450, 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457,
+ 0x9458, 0x9459, 0x945A, 0x945B, 0x945C, 0x945D, 0x945E, 0x945F,
+ 0x9460, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467,
+ 0x9468, 0x9469, 0x946A, 0x946C, 0x946D, 0x946E, 0x946F,
+ /* GB 0xE880..0xE8FE */
+ 0x9470, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476, 0x9477,
+ 0x9478, 0x9479, 0x947A, 0x947B, 0x947C, 0x947D, 0x947E, 0x947F,
+ 0x9480, 0x9481, 0x9482, 0x9483, 0x9484, 0x9491, 0x9496, 0x9498,
+ 0x94C7, 0x94CF, 0x94D3, 0x94D4, 0x94DA, 0x94E6, 0x94FB, 0x951C,
+ 0x9520, 0x741B, 0x741A, 0x7441, 0x745C, 0x7457, 0x7455, 0x7459,
+ 0x7477, 0x746D, 0x747E, 0x749C, 0x748E, 0x7480, 0x7481, 0x7487,
+ 0x748B, 0x749E, 0x74A8, 0x74A9, 0x7490, 0x74A7, 0x74D2, 0x74BA,
+ 0x97EA, 0x97EB, 0x97EC, 0x674C, 0x6753, 0x675E, 0x6748, 0x6769,
+ 0x67A5, 0x6787, 0x676A, 0x6773, 0x6798, 0x67A7, 0x6775, 0x67A8,
+ 0x679E, 0x67AD, 0x678B, 0x6777, 0x677C, 0x67F0, 0x6809, 0x67D8,
+ 0x680A, 0x67E9, 0x67B0, 0x680C, 0x67D9, 0x67B5, 0x67DA, 0x67B3,
+ 0x67DD, 0x6800, 0x67C3, 0x67B8, 0x67E2, 0x680E, 0x67C1, 0x67FD,
+ 0x6832, 0x6833, 0x6860, 0x6861, 0x684E, 0x6862, 0x6844, 0x6864,
+ 0x6883, 0x681D, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683E,
+ 0x684A, 0x6849, 0x6829, 0x68B5, 0x688F, 0x6874, 0x6877, 0x6893,
+ 0x686B, 0x68C2, 0x696E, 0x68FC, 0x691F, 0x6920, 0x68F9,
+ /* GB 0xE940..0xE97E */
+ 0x9527, 0x9533, 0x953D, 0x9543, 0x9548, 0x954B, 0x9555, 0x955A,
+ 0x9560, 0x956E, 0x9574, 0x9575, 0x9577, 0x9578, 0x9579, 0x957A,
+ 0x957B, 0x957C, 0x957D, 0x957E, 0x9580, 0x9581, 0x9582, 0x9583,
+ 0x9584, 0x9585, 0x9586, 0x9587, 0x9588, 0x9589, 0x958A, 0x958B,
+ 0x958C, 0x958D, 0x958E, 0x958F, 0x9590, 0x9591, 0x9592, 0x9593,
+ 0x9594, 0x9595, 0x9596, 0x9597, 0x9598, 0x9599, 0x959A, 0x959B,
+ 0x959C, 0x959D, 0x959E, 0x959F, 0x95A0, 0x95A1, 0x95A2, 0x95A3,
+ 0x95A4, 0x95A5, 0x95A6, 0x95A7, 0x95A8, 0x95A9, 0x95AA,
+ /* GB 0xE980..0xE9FE */
+ 0x95AB, 0x95AC, 0x95AD, 0x95AE, 0x95AF, 0x95B0, 0x95B1, 0x95B2,
+ 0x95B3, 0x95B4, 0x95B5, 0x95B6, 0x95B7, 0x95B8, 0x95B9, 0x95BA,
+ 0x95BB, 0x95BC, 0x95BD, 0x95BE, 0x95BF, 0x95C0, 0x95C1, 0x95C2,
+ 0x95C3, 0x95C4, 0x95C5, 0x95C6, 0x95C7, 0x95C8, 0x95C9, 0x95CA,
+ 0x95CB, 0x6924, 0x68F0, 0x690B, 0x6901, 0x6957, 0x68E3, 0x6910,
+ 0x6971, 0x6939, 0x6960, 0x6942, 0x695D, 0x6984, 0x696B, 0x6980,
+ 0x6998, 0x6978, 0x6934, 0x69CC, 0x6987, 0x6988, 0x69CE, 0x6989,
+ 0x6966, 0x6963, 0x6979, 0x699B, 0x69A7, 0x69BB, 0x69AB, 0x69AD,
+ 0x69D4, 0x69B1, 0x69C1, 0x69CA, 0x69DF, 0x6995, 0x69E0, 0x698D,
+ 0x69FF, 0x6A2F, 0x69ED, 0x6A17, 0x6A18, 0x6A65, 0x69F2, 0x6A44,
+ 0x6A3E, 0x6AA0, 0x6A50, 0x6A5B, 0x6A35, 0x6A8E, 0x6A79, 0x6A3D,
+ 0x6A28, 0x6A58, 0x6A7C, 0x6A91, 0x6A90, 0x6AA9, 0x6A97, 0x6AAB,
+ 0x7337, 0x7352, 0x6B81, 0x6B82, 0x6B87, 0x6B84, 0x6B92, 0x6B93,
+ 0x6B8D, 0x6B9A, 0x6B9B, 0x6BA1, 0x6BAA, 0x8F6B, 0x8F6D, 0x8F71,
+ 0x8F72, 0x8F73, 0x8F75, 0x8F76, 0x8F78, 0x8F77, 0x8F79, 0x8F7A,
+ 0x8F7C, 0x8F7E, 0x8F81, 0x8F82, 0x8F84, 0x8F87, 0x8F8B,
+ /* GB 0xEA40..0xEA7E */
+ 0x95CC, 0x95CD, 0x95CE, 0x95CF, 0x95D0, 0x95D1, 0x95D2, 0x95D3,
+ 0x95D4, 0x95D5, 0x95D6, 0x95D7, 0x95D8, 0x95D9, 0x95DA, 0x95DB,
+ 0x95DC, 0x95DD, 0x95DE, 0x95DF, 0x95E0, 0x95E1, 0x95E2, 0x95E3,
+ 0x95E4, 0x95E5, 0x95E6, 0x95E7, 0x95EC, 0x95FF, 0x9607, 0x9613,
+ 0x9618, 0x961B, 0x961E, 0x9620, 0x9623, 0x9624, 0x9625, 0x9626,
+ 0x9627, 0x9628, 0x9629, 0x962B, 0x962C, 0x962D, 0x962F, 0x9630,
+ 0x9637, 0x9638, 0x9639, 0x963A, 0x963E, 0x9641, 0x9643, 0x964A,
+ 0x964E, 0x964F, 0x9651, 0x9652, 0x9653, 0x9656, 0x9657,
+ /* GB 0xEA80..0xEAFE */
+ 0x9658, 0x9659, 0x965A, 0x965C, 0x965D, 0x965E, 0x9660, 0x9663,
+ 0x9665, 0x9666, 0x966B, 0x966D, 0x966E, 0x966F, 0x9670, 0x9671,
+ 0x9673, 0x9678, 0x9679, 0x967A, 0x967B, 0x967C, 0x967D, 0x967E,
+ 0x967F, 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9687, 0x9689,
+ 0x968A, 0x8F8D, 0x8F8E, 0x8F8F, 0x8F98, 0x8F9A, 0x8ECE, 0x620B,
+ 0x6217, 0x621B, 0x621F, 0x6222, 0x6221, 0x6225, 0x6224, 0x622C,
+ 0x81E7, 0x74EF, 0x74F4, 0x74FF, 0x750F, 0x7511, 0x7513, 0x6534,
+ 0x65EE, 0x65EF, 0x65F0, 0x660A, 0x6619, 0x6772, 0x6603, 0x6615,
+ 0x6600, 0x7085, 0x66F7, 0x661D, 0x6634, 0x6631, 0x6636, 0x6635,
+ 0x8006, 0x665F, 0x6654, 0x6641, 0x664F, 0x6656, 0x6661, 0x6657,
+ 0x6677, 0x6684, 0x668C, 0x66A7, 0x669D, 0x66BE, 0x66DB, 0x66DC,
+ 0x66E6, 0x66E9, 0x8D32, 0x8D33, 0x8D36, 0x8D3B, 0x8D3D, 0x8D40,
+ 0x8D45, 0x8D46, 0x8D48, 0x8D49, 0x8D47, 0x8D4D, 0x8D55, 0x8D59,
+ 0x89C7, 0x89CA, 0x89CB, 0x89CC, 0x89CE, 0x89CF, 0x89D0, 0x89D1,
+ 0x726E, 0x729F, 0x725D, 0x7266, 0x726F, 0x727E, 0x727F, 0x7284,
+ 0x728B, 0x728D, 0x728F, 0x7292, 0x6308, 0x6332, 0x63B0,
+ /* GB 0xEB40..0xEB7E */
+ 0x968C, 0x968E, 0x9691, 0x9692, 0x9693, 0x9695, 0x9696, 0x969A,
+ 0x969B, 0x969D, 0x969E, 0x969F, 0x96A0, 0x96A1, 0x96A2, 0x96A3,
+ 0x96A4, 0x96A5, 0x96A6, 0x96A8, 0x96A9, 0x96AA, 0x96AB, 0x96AC,
+ 0x96AD, 0x96AE, 0x96AF, 0x96B1, 0x96B2, 0x96B4, 0x96B5, 0x96B7,
+ 0x96B8, 0x96BA, 0x96BB, 0x96BF, 0x96C2, 0x96C3, 0x96C8, 0x96CA,
+ 0x96CB, 0x96D0, 0x96D1, 0x96D3, 0x96D4, 0x96D6, 0x96D7, 0x96D8,
+ 0x96D9, 0x96DA, 0x96DB, 0x96DC, 0x96DD, 0x96DE, 0x96DF, 0x96E1,
+ 0x96E2, 0x96E3, 0x96E4, 0x96E5, 0x96E6, 0x96E7, 0x96EB,
+ /* GB 0xEB80..0xEBFE */
+ 0x96EC, 0x96ED, 0x96EE, 0x96F0, 0x96F1, 0x96F2, 0x96F4, 0x96F5,
+ 0x96F8, 0x96FA, 0x96FB, 0x96FC, 0x96FD, 0x96FF, 0x9702, 0x9703,
+ 0x9705, 0x970A, 0x970B, 0x970C, 0x9710, 0x9711, 0x9712, 0x9714,
+ 0x9715, 0x9717, 0x9718, 0x9719, 0x971A, 0x971B, 0x971D, 0x971F,
+ 0x9720, 0x643F, 0x64D8, 0x8004, 0x6BEA, 0x6BF3, 0x6BFD, 0x6BF5,
+ 0x6BF9, 0x6C05, 0x6C07, 0x6C06, 0x6C0D, 0x6C15, 0x6C18, 0x6C19,
+ 0x6C1A, 0x6C21, 0x6C29, 0x6C24, 0x6C2A, 0x6C32, 0x6535, 0x6555,
+ 0x656B, 0x724D, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809F,
+ 0x809C, 0x8093, 0x80BC, 0x670A, 0x80BD, 0x80B1, 0x80AB, 0x80AD,
+ 0x80B4, 0x80B7, 0x80E7, 0x80E8, 0x80E9, 0x80EA, 0x80DB, 0x80C2,
+ 0x80C4, 0x80D9, 0x80CD, 0x80D7, 0x6710, 0x80DD, 0x80EB, 0x80F1,
+ 0x80F4, 0x80ED, 0x810D, 0x810E, 0x80F2, 0x80FC, 0x6715, 0x8112,
+ 0x8C5A, 0x8136, 0x811E, 0x812C, 0x8118, 0x8132, 0x8148, 0x814C,
+ 0x8153, 0x8174, 0x8159, 0x815A, 0x8171, 0x8160, 0x8169, 0x817C,
+ 0x817D, 0x816D, 0x8167, 0x584D, 0x5AB5, 0x8188, 0x8182, 0x8191,
+ 0x6ED5, 0x81A3, 0x81AA, 0x81CC, 0x6726, 0x81CA, 0x81BB,
+ /* GB 0xEC40..0xEC7E */
+ 0x9721, 0x9722, 0x9723, 0x9724, 0x9725, 0x9726, 0x9727, 0x9728,
+ 0x9729, 0x972B, 0x972C, 0x972E, 0x972F, 0x9731, 0x9733, 0x9734,
+ 0x9735, 0x9736, 0x9737, 0x973A, 0x973B, 0x973C, 0x973D, 0x973F,
+ 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747,
+ 0x9748, 0x9749, 0x974A, 0x974B, 0x974C, 0x974D, 0x974E, 0x974F,
+ 0x9750, 0x9751, 0x9754, 0x9755, 0x9757, 0x9758, 0x975A, 0x975C,
+ 0x975D, 0x975F, 0x9763, 0x9764, 0x9766, 0x9767, 0x9768, 0x976A,
+ 0x976B, 0x976C, 0x976D, 0x976E, 0x976F, 0x9770, 0x9771,
+ /* GB 0xEC80..0xECFE */
+ 0x9772, 0x9775, 0x9777, 0x9778, 0x9779, 0x977A, 0x977B, 0x977D,
+ 0x977E, 0x977F, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9786,
+ 0x9787, 0x9788, 0x9789, 0x978A, 0x978C, 0x978E, 0x978F, 0x9790,
+ 0x9793, 0x9795, 0x9796, 0x9797, 0x9799, 0x979A, 0x979B, 0x979C,
+ 0x979D, 0x81C1, 0x81A6, 0x6B24, 0x6B37, 0x6B39, 0x6B43, 0x6B46,
+ 0x6B59, 0x98D1, 0x98D2, 0x98D3, 0x98D5, 0x98D9, 0x98DA, 0x6BB3,
+ 0x5F40, 0x6BC2, 0x89F3, 0x6590, 0x9F51, 0x6593, 0x65BC, 0x65C6,
+ 0x65C4, 0x65C3, 0x65CC, 0x65CE, 0x65D2, 0x65D6, 0x7080, 0x709C,
+ 0x7096, 0x709D, 0x70BB, 0x70C0, 0x70B7, 0x70AB, 0x70B1, 0x70E8,
+ 0x70CA, 0x7110, 0x7113, 0x7116, 0x712F, 0x7131, 0x7173, 0x715C,
+ 0x7168, 0x7145, 0x7172, 0x714A, 0x7178, 0x717A, 0x7198, 0x71B3,
+ 0x71B5, 0x71A8, 0x71A0, 0x71E0, 0x71D4, 0x71E7, 0x71F9, 0x721D,
+ 0x7228, 0x706C, 0x7118, 0x7166, 0x71B9, 0x623E, 0x623D, 0x6243,
+ 0x6248, 0x6249, 0x793B, 0x7940, 0x7946, 0x7949, 0x795B, 0x795C,
+ 0x7953, 0x795A, 0x7962, 0x7957, 0x7960, 0x796F, 0x7967, 0x797A,
+ 0x7985, 0x798A, 0x799A, 0x79A7, 0x79B3, 0x5FD1, 0x5FD0,
+ /* GB 0xED40..0xED7E */
+ 0x979E, 0x979F, 0x97A1, 0x97A2, 0x97A4, 0x97A5, 0x97A6, 0x97A7,
+ 0x97A8, 0x97A9, 0x97AA, 0x97AC, 0x97AE, 0x97B0, 0x97B1, 0x97B3,
+ 0x97B5, 0x97B6, 0x97B7, 0x97B8, 0x97B9, 0x97BA, 0x97BB, 0x97BC,
+ 0x97BD, 0x97BE, 0x97BF, 0x97C0, 0x97C1, 0x97C2, 0x97C3, 0x97C4,
+ 0x97C5, 0x97C6, 0x97C7, 0x97C8, 0x97C9, 0x97CA, 0x97CB, 0x97CC,
+ 0x97CD, 0x97CE, 0x97CF, 0x97D0, 0x97D1, 0x97D2, 0x97D3, 0x97D4,
+ 0x97D5, 0x97D6, 0x97D7, 0x97D8, 0x97D9, 0x97DA, 0x97DB, 0x97DC,
+ 0x97DD, 0x97DE, 0x97DF, 0x97E0, 0x97E1, 0x97E2, 0x97E3,
+ /* GB 0xED80..0xEDFE */
+ 0x97E4, 0x97E5, 0x97E8, 0x97EE, 0x97EF, 0x97F0, 0x97F1, 0x97F2,
+ 0x97F4, 0x97F7, 0x97F8, 0x97F9, 0x97FA, 0x97FB, 0x97FC, 0x97FD,
+ 0x97FE, 0x97FF, 0x9800, 0x9801, 0x9802, 0x9803, 0x9804, 0x9805,
+ 0x9806, 0x9807, 0x9808, 0x9809, 0x980A, 0x980B, 0x980C, 0x980D,
+ 0x980E, 0x603C, 0x605D, 0x605A, 0x6067, 0x6041, 0x6059, 0x6063,
+ 0x60AB, 0x6106, 0x610D, 0x615D, 0x61A9, 0x619D, 0x61CB, 0x61D1,
+ 0x6206, 0x8080, 0x807F, 0x6C93, 0x6CF6, 0x6DFC, 0x77F6, 0x77F8,
+ 0x7800, 0x7809, 0x7817, 0x7818, 0x7811, 0x65AB, 0x782D, 0x781C,
+ 0x781D, 0x7839, 0x783A, 0x783B, 0x781F, 0x783C, 0x7825, 0x782C,
+ 0x7823, 0x7829, 0x784E, 0x786D, 0x7856, 0x7857, 0x7826, 0x7850,
+ 0x7847, 0x784C, 0x786A, 0x789B, 0x7893, 0x789A, 0x7887, 0x789C,
+ 0x78A1, 0x78A3, 0x78B2, 0x78B9, 0x78A5, 0x78D4, 0x78D9, 0x78C9,
+ 0x78EC, 0x78F2, 0x7905, 0x78F4, 0x7913, 0x7924, 0x791E, 0x7934,
+ 0x9F9B, 0x9EF9, 0x9EFB, 0x9EFC, 0x76F1, 0x7704, 0x770D, 0x76F9,
+ 0x7707, 0x7708, 0x771A, 0x7722, 0x7719, 0x772D, 0x7726, 0x7735,
+ 0x7738, 0x7750, 0x7751, 0x7747, 0x7743, 0x775A, 0x7768,
+ /* GB 0xEE40..0xEE7E */
+ 0x980F, 0x9810, 0x9811, 0x9812, 0x9813, 0x9814, 0x9815, 0x9816,
+ 0x9817, 0x9818, 0x9819, 0x981A, 0x981B, 0x981C, 0x981D, 0x981E,
+ 0x981F, 0x9820, 0x9821, 0x9822, 0x9823, 0x9824, 0x9825, 0x9826,
+ 0x9827, 0x9828, 0x9829, 0x982A, 0x982B, 0x982C, 0x982D, 0x982E,
+ 0x982F, 0x9830, 0x9831, 0x9832, 0x9833, 0x9834, 0x9835, 0x9836,
+ 0x9837, 0x9838, 0x9839, 0x983A, 0x983B, 0x983C, 0x983D, 0x983E,
+ 0x983F, 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846,
+ 0x9847, 0x9848, 0x9849, 0x984A, 0x984B, 0x984C, 0x984D,
+ /* GB 0xEE80..0xEEFE */
+ 0x984E, 0x984F, 0x9850, 0x9851, 0x9852, 0x9853, 0x9854, 0x9855,
+ 0x9856, 0x9857, 0x9858, 0x9859, 0x985A, 0x985B, 0x985C, 0x985D,
+ 0x985E, 0x985F, 0x9860, 0x9861, 0x9862, 0x9863, 0x9864, 0x9865,
+ 0x9866, 0x9867, 0x9868, 0x9869, 0x986A, 0x986B, 0x986C, 0x986D,
+ 0x986E, 0x7762, 0x7765, 0x777F, 0x778D, 0x777D, 0x7780, 0x778C,
+ 0x7791, 0x779F, 0x77A0, 0x77B0, 0x77B5, 0x77BD, 0x753A, 0x7540,
+ 0x754E, 0x754B, 0x7548, 0x755B, 0x7572, 0x7579, 0x7583, 0x7F58,
+ 0x7F61, 0x7F5F, 0x8A48, 0x7F68, 0x7F74, 0x7F71, 0x7F79, 0x7F81,
+ 0x7F7E, 0x76CD, 0x76E5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948B,
+ 0x948A, 0x948C, 0x948D, 0x948F, 0x9490, 0x9494, 0x9497, 0x9495,
+ 0x949A, 0x949B, 0x949C, 0x94A3, 0x94A4, 0x94AB, 0x94AA, 0x94AD,
+ 0x94AC, 0x94AF, 0x94B0, 0x94B2, 0x94B4, 0x94B6, 0x94B7, 0x94B8,
+ 0x94B9, 0x94BA, 0x94BC, 0x94BD, 0x94BF, 0x94C4, 0x94C8, 0x94C9,
+ 0x94CA, 0x94CB, 0x94CC, 0x94CD, 0x94CE, 0x94D0, 0x94D1, 0x94D2,
+ 0x94D5, 0x94D6, 0x94D7, 0x94D9, 0x94D8, 0x94DB, 0x94DE, 0x94DF,
+ 0x94E0, 0x94E2, 0x94E4, 0x94E5, 0x94E7, 0x94E8, 0x94EA,
+ /* GB 0xEF40..0xEF7E */
+ 0x986F, 0x9870, 0x9871, 0x9872, 0x9873, 0x9874, 0x988B, 0x988E,
+ 0x9892, 0x9895, 0x9899, 0x98A3, 0x98A8, 0x98A9, 0x98AA, 0x98AB,
+ 0x98AC, 0x98AD, 0x98AE, 0x98AF, 0x98B0, 0x98B1, 0x98B2, 0x98B3,
+ 0x98B4, 0x98B5, 0x98B6, 0x98B7, 0x98B8, 0x98B9, 0x98BA, 0x98BB,
+ 0x98BC, 0x98BD, 0x98BE, 0x98BF, 0x98C0, 0x98C1, 0x98C2, 0x98C3,
+ 0x98C4, 0x98C5, 0x98C6, 0x98C7, 0x98C8, 0x98C9, 0x98CA, 0x98CB,
+ 0x98CC, 0x98CD, 0x98CF, 0x98D0, 0x98D4, 0x98D6, 0x98D7, 0x98DB,
+ 0x98DC, 0x98DD, 0x98E0, 0x98E1, 0x98E2, 0x98E3, 0x98E4,
+ /* GB 0xEF80..0xEFFE */
+ 0x98E5, 0x98E6, 0x98E9, 0x98EA, 0x98EB, 0x98EC, 0x98ED, 0x98EE,
+ 0x98EF, 0x98F0, 0x98F1, 0x98F2, 0x98F3, 0x98F4, 0x98F5, 0x98F6,
+ 0x98F7, 0x98F8, 0x98F9, 0x98FA, 0x98FB, 0x98FC, 0x98FD, 0x98FE,
+ 0x98FF, 0x9900, 0x9901, 0x9902, 0x9903, 0x9904, 0x9905, 0x9906,
+ 0x9907, 0x94E9, 0x94EB, 0x94EE, 0x94EF, 0x94F3, 0x94F4, 0x94F5,
+ 0x94F7, 0x94F9, 0x94FC, 0x94FD, 0x94FF, 0x9503, 0x9502, 0x9506,
+ 0x9507, 0x9509, 0x950A, 0x950D, 0x950E, 0x950F, 0x9512, 0x9513,
+ 0x9514, 0x9515, 0x9516, 0x9518, 0x951B, 0x951D, 0x951E, 0x951F,
+ 0x9522, 0x952A, 0x952B, 0x9529, 0x952C, 0x9531, 0x9532, 0x9534,
+ 0x9536, 0x9537, 0x9538, 0x953C, 0x953E, 0x953F, 0x9542, 0x9535,
+ 0x9544, 0x9545, 0x9546, 0x9549, 0x954C, 0x954E, 0x954F, 0x9552,
+ 0x9553, 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955B, 0x955E,
+ 0x955F, 0x955D, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567,
+ 0x9568, 0x9569, 0x956A, 0x956B, 0x956C, 0x956F, 0x9571, 0x9572,
+ 0x9573, 0x953A, 0x77E7, 0x77EC, 0x96C9, 0x79D5, 0x79ED, 0x79E3,
+ 0x79EB, 0x7A06, 0x5D47, 0x7A03, 0x7A02, 0x7A1E, 0x7A14,
+ /* GB 0xF040..0xF07E */
+ 0x9908, 0x9909, 0x990A, 0x990B, 0x990C, 0x990E, 0x990F, 0x9911,
+ 0x9912, 0x9913, 0x9914, 0x9915, 0x9916, 0x9917, 0x9918, 0x9919,
+ 0x991A, 0x991B, 0x991C, 0x991D, 0x991E, 0x991F, 0x9920, 0x9921,
+ 0x9922, 0x9923, 0x9924, 0x9925, 0x9926, 0x9927, 0x9928, 0x9929,
+ 0x992A, 0x992B, 0x992C, 0x992D, 0x992F, 0x9930, 0x9931, 0x9932,
+ 0x9933, 0x9934, 0x9935, 0x9936, 0x9937, 0x9938, 0x9939, 0x993A,
+ 0x993B, 0x993C, 0x993D, 0x993E, 0x993F, 0x9940, 0x9941, 0x9942,
+ 0x9943, 0x9944, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949,
+ /* GB 0xF080..0xF0FE */
+ 0x994A, 0x994B, 0x994C, 0x994D, 0x994E, 0x994F, 0x9950, 0x9951,
+ 0x9952, 0x9953, 0x9956, 0x9957, 0x9958, 0x9959, 0x995A, 0x995B,
+ 0x995C, 0x995D, 0x995E, 0x995F, 0x9960, 0x9961, 0x9962, 0x9964,
+ 0x9966, 0x9973, 0x9978, 0x9979, 0x997B, 0x997E, 0x9982, 0x9983,
+ 0x9989, 0x7A39, 0x7A37, 0x7A51, 0x9ECF, 0x99A5, 0x7A70, 0x7688,
+ 0x768E, 0x7693, 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C, 0x9E20,
+ 0x9E22, 0x9E28, 0x9E29, 0x9E2A, 0x9E2B, 0x9E2C, 0x9E32, 0x9E31,
+ 0x9E36, 0x9E38, 0x9E37, 0x9E39, 0x9E3A, 0x9E3E, 0x9E41, 0x9E42,
+ 0x9E44, 0x9E46, 0x9E47, 0x9E48, 0x9E49, 0x9E4B, 0x9E4C, 0x9E4E,
+ 0x9E51, 0x9E55, 0x9E57, 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5E, 0x9E63,
+ 0x9E66, 0x9E67, 0x9E68, 0x9E69, 0x9E6A, 0x9E6B, 0x9E6C, 0x9E71,
+ 0x9E6D, 0x9E73, 0x7592, 0x7594, 0x7596, 0x75A0, 0x759D, 0x75AC,
+ 0x75A3, 0x75B3, 0x75B4, 0x75B8, 0x75C4, 0x75B1, 0x75B0, 0x75C3,
+ 0x75C2, 0x75D6, 0x75CD, 0x75E3, 0x75E8, 0x75E6, 0x75E4, 0x75EB,
+ 0x75E7, 0x7603, 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600, 0x7605,
+ 0x760C, 0x7617, 0x760A, 0x7625, 0x7618, 0x7615, 0x7619,
+ /* GB 0xF140..0xF17E */
+ 0x998C, 0x998E, 0x999A, 0x999B, 0x999C, 0x999D, 0x999E, 0x999F,
+ 0x99A0, 0x99A1, 0x99A2, 0x99A3, 0x99A4, 0x99A6, 0x99A7, 0x99A9,
+ 0x99AA, 0x99AB, 0x99AC, 0x99AD, 0x99AE, 0x99AF, 0x99B0, 0x99B1,
+ 0x99B2, 0x99B3, 0x99B4, 0x99B5, 0x99B6, 0x99B7, 0x99B8, 0x99B9,
+ 0x99BA, 0x99BB, 0x99BC, 0x99BD, 0x99BE, 0x99BF, 0x99C0, 0x99C1,
+ 0x99C2, 0x99C3, 0x99C4, 0x99C5, 0x99C6, 0x99C7, 0x99C8, 0x99C9,
+ 0x99CA, 0x99CB, 0x99CC, 0x99CD, 0x99CE, 0x99CF, 0x99D0, 0x99D1,
+ 0x99D2, 0x99D3, 0x99D4, 0x99D5, 0x99D6, 0x99D7, 0x99D8,
+ /* GB 0xF180..0xF1FE */
+ 0x99D9, 0x99DA, 0x99DB, 0x99DC, 0x99DD, 0x99DE, 0x99DF, 0x99E0,
+ 0x99E1, 0x99E2, 0x99E3, 0x99E4, 0x99E5, 0x99E6, 0x99E7, 0x99E8,
+ 0x99E9, 0x99EA, 0x99EB, 0x99EC, 0x99ED, 0x99EE, 0x99EF, 0x99F0,
+ 0x99F1, 0x99F2, 0x99F3, 0x99F4, 0x99F5, 0x99F6, 0x99F7, 0x99F8,
+ 0x99F9, 0x761B, 0x763C, 0x7622, 0x7620, 0x7640, 0x762D, 0x7630,
+ 0x763F, 0x7635, 0x7643, 0x763E, 0x7633, 0x764D, 0x765E, 0x7654,
+ 0x765C, 0x7656, 0x766B, 0x766F, 0x7FCA, 0x7AE6, 0x7A78, 0x7A79,
+ 0x7A80, 0x7A86, 0x7A88, 0x7A95, 0x7AA6, 0x7AA0, 0x7AAC, 0x7AA8,
+ 0x7AAD, 0x7AB3, 0x8864, 0x8869, 0x8872, 0x887D, 0x887F, 0x8882,
+ 0x88A2, 0x88C6, 0x88B7, 0x88BC, 0x88C9, 0x88E2, 0x88CE, 0x88E3,
+ 0x88E5, 0x88F1, 0x891A, 0x88FC, 0x88E8, 0x88FE, 0x88F0, 0x8921,
+ 0x8919, 0x8913, 0x891B, 0x890A, 0x8934, 0x892B, 0x8936, 0x8941,
+ 0x8966, 0x897B, 0x758B, 0x80E5, 0x76B2, 0x76B4, 0x77DC, 0x8012,
+ 0x8014, 0x8016, 0x801C, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027,
+ 0x8029, 0x8028, 0x8031, 0x800B, 0x8035, 0x8043, 0x8046, 0x804D,
+ 0x8052, 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883,
+ /* GB 0xF240..0xF27E */
+ 0x99FA, 0x99FB, 0x99FC, 0x99FD, 0x99FE, 0x99FF, 0x9A00, 0x9A01,
+ 0x9A02, 0x9A03, 0x9A04, 0x9A05, 0x9A06, 0x9A07, 0x9A08, 0x9A09,
+ 0x9A0A, 0x9A0B, 0x9A0C, 0x9A0D, 0x9A0E, 0x9A0F, 0x9A10, 0x9A11,
+ 0x9A12, 0x9A13, 0x9A14, 0x9A15, 0x9A16, 0x9A17, 0x9A18, 0x9A19,
+ 0x9A1A, 0x9A1B, 0x9A1C, 0x9A1D, 0x9A1E, 0x9A1F, 0x9A20, 0x9A21,
+ 0x9A22, 0x9A23, 0x9A24, 0x9A25, 0x9A26, 0x9A27, 0x9A28, 0x9A29,
+ 0x9A2A, 0x9A2B, 0x9A2C, 0x9A2D, 0x9A2E, 0x9A2F, 0x9A30, 0x9A31,
+ 0x9A32, 0x9A33, 0x9A34, 0x9A35, 0x9A36, 0x9A37, 0x9A38,
+ /* GB 0xF280..0xF2FE */
+ 0x9A39, 0x9A3A, 0x9A3B, 0x9A3C, 0x9A3D, 0x9A3E, 0x9A3F, 0x9A40,
+ 0x9A41, 0x9A42, 0x9A43, 0x9A44, 0x9A45, 0x9A46, 0x9A47, 0x9A48,
+ 0x9A49, 0x9A4A, 0x9A4B, 0x9A4C, 0x9A4D, 0x9A4E, 0x9A4F, 0x9A50,
+ 0x9A51, 0x9A52, 0x9A53, 0x9A54, 0x9A55, 0x9A56, 0x9A57, 0x9A58,
+ 0x9A59, 0x9889, 0x988C, 0x988D, 0x988F, 0x9894, 0x989A, 0x989B,
+ 0x989E, 0x989F, 0x98A1, 0x98A2, 0x98A5, 0x98A6, 0x864D, 0x8654,
+ 0x866C, 0x866E, 0x867F, 0x867A, 0x867C, 0x867B, 0x86A8, 0x868D,
+ 0x868B, 0x86AC, 0x869D, 0x86A7, 0x86A3, 0x86AA, 0x8693, 0x86A9,
+ 0x86B6, 0x86C4, 0x86B5, 0x86CE, 0x86B0, 0x86BA, 0x86B1, 0x86AF,
+ 0x86C9, 0x86CF, 0x86B4, 0x86E9, 0x86F1, 0x86F2, 0x86ED, 0x86F3,
+ 0x86D0, 0x8713, 0x86DE, 0x86F4, 0x86DF, 0x86D8, 0x86D1, 0x8703,
+ 0x8707, 0x86F8, 0x8708, 0x870A, 0x870D, 0x8709, 0x8723, 0x873B,
+ 0x871E, 0x8725, 0x872E, 0x871A, 0x873E, 0x8748, 0x8734, 0x8731,
+ 0x8729, 0x8737, 0x873F, 0x8782, 0x8722, 0x877D, 0x877E, 0x877B,
+ 0x8760, 0x8770, 0x874C, 0x876E, 0x878B, 0x8753, 0x8763, 0x877C,
+ 0x8764, 0x8759, 0x8765, 0x8793, 0x87AF, 0x87A8, 0x87D2,
+ /* GB 0xF340..0xF37E */
+ 0x9A5A, 0x9A5B, 0x9A5C, 0x9A5D, 0x9A5E, 0x9A5F, 0x9A60, 0x9A61,
+ 0x9A62, 0x9A63, 0x9A64, 0x9A65, 0x9A66, 0x9A67, 0x9A68, 0x9A69,
+ 0x9A6A, 0x9A6B, 0x9A72, 0x9A83, 0x9A89, 0x9A8D, 0x9A8E, 0x9A94,
+ 0x9A95, 0x9A99, 0x9AA6, 0x9AA9, 0x9AAA, 0x9AAB, 0x9AAC, 0x9AAD,
+ 0x9AAE, 0x9AAF, 0x9AB2, 0x9AB3, 0x9AB4, 0x9AB5, 0x9AB9, 0x9ABB,
+ 0x9ABD, 0x9ABE, 0x9ABF, 0x9AC3, 0x9AC4, 0x9AC6, 0x9AC7, 0x9AC8,
+ 0x9AC9, 0x9ACA, 0x9ACD, 0x9ACE, 0x9ACF, 0x9AD0, 0x9AD2, 0x9AD4,
+ 0x9AD5, 0x9AD6, 0x9AD7, 0x9AD9, 0x9ADA, 0x9ADB, 0x9ADC,
+ /* GB 0xF380..0xF3FE */
+ 0x9ADD, 0x9ADE, 0x9AE0, 0x9AE2, 0x9AE3, 0x9AE4, 0x9AE5, 0x9AE7,
+ 0x9AE8, 0x9AE9, 0x9AEA, 0x9AEC, 0x9AEE, 0x9AF0, 0x9AF1, 0x9AF2,
+ 0x9AF3, 0x9AF4, 0x9AF5, 0x9AF6, 0x9AF7, 0x9AF8, 0x9AFA, 0x9AFC,
+ 0x9AFD, 0x9AFE, 0x9AFF, 0x9B00, 0x9B01, 0x9B02, 0x9B04, 0x9B05,
+ 0x9B06, 0x87C6, 0x8788, 0x8785, 0x87AD, 0x8797, 0x8783, 0x87AB,
+ 0x87E5, 0x87AC, 0x87B5, 0x87B3, 0x87CB, 0x87D3, 0x87BD, 0x87D1,
+ 0x87C0, 0x87CA, 0x87DB, 0x87EA, 0x87E0, 0x87EE, 0x8816, 0x8813,
+ 0x87FE, 0x880A, 0x881B, 0x8821, 0x8839, 0x883C, 0x7F36, 0x7F42,
+ 0x7F44, 0x7F45, 0x8210, 0x7AFA, 0x7AFD, 0x7B08, 0x7B03, 0x7B04,
+ 0x7B15, 0x7B0A, 0x7B2B, 0x7B0F, 0x7B47, 0x7B38, 0x7B2A, 0x7B19,
+ 0x7B2E, 0x7B31, 0x7B20, 0x7B25, 0x7B24, 0x7B33, 0x7B3E, 0x7B1E,
+ 0x7B58, 0x7B5A, 0x7B45, 0x7B75, 0x7B4C, 0x7B5D, 0x7B60, 0x7B6E,
+ 0x7B7B, 0x7B62, 0x7B72, 0x7B71, 0x7B90, 0x7BA6, 0x7BA7, 0x7BB8,
+ 0x7BAC, 0x7B9D, 0x7BA8, 0x7B85, 0x7BAA, 0x7B9C, 0x7BA2, 0x7BAB,
+ 0x7BB4, 0x7BD1, 0x7BC1, 0x7BCC, 0x7BDD, 0x7BDA, 0x7BE5, 0x7BE6,
+ 0x7BEA, 0x7C0C, 0x7BFE, 0x7BFC, 0x7C0F, 0x7C16, 0x7C0B,
+ /* GB 0xF440..0xF47E */
+ 0x9B07, 0x9B09, 0x9B0A, 0x9B0B, 0x9B0C, 0x9B0D, 0x9B0E, 0x9B10,
+ 0x9B11, 0x9B12, 0x9B14, 0x9B15, 0x9B16, 0x9B17, 0x9B18, 0x9B19,
+ 0x9B1A, 0x9B1B, 0x9B1C, 0x9B1D, 0x9B1E, 0x9B20, 0x9B21, 0x9B22,
+ 0x9B24, 0x9B25, 0x9B26, 0x9B27, 0x9B28, 0x9B29, 0x9B2A, 0x9B2B,
+ 0x9B2C, 0x9B2D, 0x9B2E, 0x9B30, 0x9B31, 0x9B33, 0x9B34, 0x9B35,
+ 0x9B36, 0x9B37, 0x9B38, 0x9B39, 0x9B3A, 0x9B3D, 0x9B3E, 0x9B3F,
+ 0x9B40, 0x9B46, 0x9B4A, 0x9B4B, 0x9B4C, 0x9B4E, 0x9B50, 0x9B52,
+ 0x9B53, 0x9B55, 0x9B56, 0x9B57, 0x9B58, 0x9B59, 0x9B5A,
+ /* GB 0xF480..0xF4FE */
+ 0x9B5B, 0x9B5C, 0x9B5D, 0x9B5E, 0x9B5F, 0x9B60, 0x9B61, 0x9B62,
+ 0x9B63, 0x9B64, 0x9B65, 0x9B66, 0x9B67, 0x9B68, 0x9B69, 0x9B6A,
+ 0x9B6B, 0x9B6C, 0x9B6D, 0x9B6E, 0x9B6F, 0x9B70, 0x9B71, 0x9B72,
+ 0x9B73, 0x9B74, 0x9B75, 0x9B76, 0x9B77, 0x9B78, 0x9B79, 0x9B7A,
+ 0x9B7B, 0x7C1F, 0x7C2A, 0x7C26, 0x7C38, 0x7C41, 0x7C40, 0x81FE,
+ 0x8201, 0x8202, 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222, 0x8223,
+ 0x822D, 0x822F, 0x8228, 0x822B, 0x8238, 0x823B, 0x8233, 0x8234,
+ 0x823E, 0x8244, 0x8249, 0x824B, 0x824F, 0x825A, 0x825F, 0x8268,
+ 0x887E, 0x8885, 0x8888, 0x88D8, 0x88DF, 0x895E, 0x7F9D, 0x7F9F,
+ 0x7FA7, 0x7FAF, 0x7FB0, 0x7FB2, 0x7C7C, 0x6549, 0x7C91, 0x7C9D,
+ 0x7C9C, 0x7C9E, 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD, 0x7CC1, 0x7CC7,
+ 0x7CCC, 0x7CCD, 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E, 0x66A8,
+ 0x7FBF, 0x7FCE, 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FEE,
+ 0x7FF3, 0x7CF8, 0x7D77, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B, 0x9EB8,
+ 0x9EB4, 0x8D73, 0x8D84, 0x8D94, 0x8D91, 0x8DB1, 0x8D67, 0x8D6D,
+ 0x8C47, 0x8C49, 0x914A, 0x9150, 0x914E, 0x914F, 0x9164,
+ /* GB 0xF540..0xF57E */
+ 0x9B7C, 0x9B7D, 0x9B7E, 0x9B7F, 0x9B80, 0x9B81, 0x9B82, 0x9B83,
+ 0x9B84, 0x9B85, 0x9B86, 0x9B87, 0x9B88, 0x9B89, 0x9B8A, 0x9B8B,
+ 0x9B8C, 0x9B8D, 0x9B8E, 0x9B8F, 0x9B90, 0x9B91, 0x9B92, 0x9B93,
+ 0x9B94, 0x9B95, 0x9B96, 0x9B97, 0x9B98, 0x9B99, 0x9B9A, 0x9B9B,
+ 0x9B9C, 0x9B9D, 0x9B9E, 0x9B9F, 0x9BA0, 0x9BA1, 0x9BA2, 0x9BA3,
+ 0x9BA4, 0x9BA5, 0x9BA6, 0x9BA7, 0x9BA8, 0x9BA9, 0x9BAA, 0x9BAB,
+ 0x9BAC, 0x9BAD, 0x9BAE, 0x9BAF, 0x9BB0, 0x9BB1, 0x9BB2, 0x9BB3,
+ 0x9BB4, 0x9BB5, 0x9BB6, 0x9BB7, 0x9BB8, 0x9BB9, 0x9BBA,
+ /* GB 0xF580..0xF5FE */
+ 0x9BBB, 0x9BBC, 0x9BBD, 0x9BBE, 0x9BBF, 0x9BC0, 0x9BC1, 0x9BC2,
+ 0x9BC3, 0x9BC4, 0x9BC5, 0x9BC6, 0x9BC7, 0x9BC8, 0x9BC9, 0x9BCA,
+ 0x9BCB, 0x9BCC, 0x9BCD, 0x9BCE, 0x9BCF, 0x9BD0, 0x9BD1, 0x9BD2,
+ 0x9BD3, 0x9BD4, 0x9BD5, 0x9BD6, 0x9BD7, 0x9BD8, 0x9BD9, 0x9BDA,
+ 0x9BDB, 0x9162, 0x9161, 0x9170, 0x9169, 0x916F, 0x917D, 0x917E,
+ 0x9172, 0x9174, 0x9179, 0x918C, 0x9185, 0x9190, 0x918D, 0x9191,
+ 0x91A2, 0x91A3, 0x91AA, 0x91AD, 0x91AE, 0x91AF, 0x91B5, 0x91B4,
+ 0x91BA, 0x8C55, 0x9E7E, 0x8DB8, 0x8DEB, 0x8E05, 0x8E59, 0x8E69,
+ 0x8DB5, 0x8DBF, 0x8DBC, 0x8DBA, 0x8DC4, 0x8DD6, 0x8DD7, 0x8DDA,
+ 0x8DDE, 0x8DCE, 0x8DCF, 0x8DDB, 0x8DC6, 0x8DEC, 0x8DF7, 0x8DF8,
+ 0x8DE3, 0x8DF9, 0x8DFB, 0x8DE4, 0x8E09, 0x8DFD, 0x8E14, 0x8E1D,
+ 0x8E1F, 0x8E2C, 0x8E2E, 0x8E23, 0x8E2F, 0x8E3A, 0x8E40, 0x8E39,
+ 0x8E35, 0x8E3D, 0x8E31, 0x8E49, 0x8E41, 0x8E42, 0x8E51, 0x8E52,
+ 0x8E4A, 0x8E70, 0x8E76, 0x8E7C, 0x8E6F, 0x8E74, 0x8E85, 0x8E8F,
+ 0x8E94, 0x8E90, 0x8E9C, 0x8E9E, 0x8C78, 0x8C82, 0x8C8A, 0x8C85,
+ 0x8C98, 0x8C94, 0x659B, 0x89D6, 0x89DE, 0x89DA, 0x89DC,
+ /* GB 0xF640..0xF67E */
+ 0x9BDC, 0x9BDD, 0x9BDE, 0x9BDF, 0x9BE0, 0x9BE1, 0x9BE2, 0x9BE3,
+ 0x9BE4, 0x9BE5, 0x9BE6, 0x9BE7, 0x9BE8, 0x9BE9, 0x9BEA, 0x9BEB,
+ 0x9BEC, 0x9BED, 0x9BEE, 0x9BEF, 0x9BF0, 0x9BF1, 0x9BF2, 0x9BF3,
+ 0x9BF4, 0x9BF5, 0x9BF6, 0x9BF7, 0x9BF8, 0x9BF9, 0x9BFA, 0x9BFB,
+ 0x9BFC, 0x9BFD, 0x9BFE, 0x9BFF, 0x9C00, 0x9C01, 0x9C02, 0x9C03,
+ 0x9C04, 0x9C05, 0x9C06, 0x9C07, 0x9C08, 0x9C09, 0x9C0A, 0x9C0B,
+ 0x9C0C, 0x9C0D, 0x9C0E, 0x9C0F, 0x9C10, 0x9C11, 0x9C12, 0x9C13,
+ 0x9C14, 0x9C15, 0x9C16, 0x9C17, 0x9C18, 0x9C19, 0x9C1A,
+ /* GB 0xF680..0xF6FE */
+ 0x9C1B, 0x9C1C, 0x9C1D, 0x9C1E, 0x9C1F, 0x9C20, 0x9C21, 0x9C22,
+ 0x9C23, 0x9C24, 0x9C25, 0x9C26, 0x9C27, 0x9C28, 0x9C29, 0x9C2A,
+ 0x9C2B, 0x9C2C, 0x9C2D, 0x9C2E, 0x9C2F, 0x9C30, 0x9C31, 0x9C32,
+ 0x9C33, 0x9C34, 0x9C35, 0x9C36, 0x9C37, 0x9C38, 0x9C39, 0x9C3A,
+ 0x9C3B, 0x89E5, 0x89EB, 0x89EF, 0x8A3E, 0x8B26, 0x9753, 0x96E9,
+ 0x96F3, 0x96EF, 0x9706, 0x9701, 0x9708, 0x970F, 0x970E, 0x972A,
+ 0x972D, 0x9730, 0x973E, 0x9F80, 0x9F83, 0x9F85, 0x9F86, 0x9F87,
+ 0x9F88, 0x9F89, 0x9F8A, 0x9F8C, 0x9EFE, 0x9F0B, 0x9F0D, 0x96B9,
+ 0x96BC, 0x96BD, 0x96CE, 0x96D2, 0x77BF, 0x96E0, 0x928E, 0x92AE,
+ 0x92C8, 0x933E, 0x936A, 0x93CA, 0x938F, 0x943E, 0x946B, 0x9C7F,
+ 0x9C82, 0x9C85, 0x9C86, 0x9C87, 0x9C88, 0x7A23, 0x9C8B, 0x9C8E,
+ 0x9C90, 0x9C91, 0x9C92, 0x9C94, 0x9C95, 0x9C9A, 0x9C9B, 0x9C9E,
+ 0x9C9F, 0x9CA0, 0x9CA1, 0x9CA2, 0x9CA3, 0x9CA5, 0x9CA6, 0x9CA7,
+ 0x9CA8, 0x9CA9, 0x9CAB, 0x9CAD, 0x9CAE, 0x9CB0, 0x9CB1, 0x9CB2,
+ 0x9CB3, 0x9CB4, 0x9CB5, 0x9CB6, 0x9CB7, 0x9CBA, 0x9CBB, 0x9CBC,
+ 0x9CBD, 0x9CC4, 0x9CC5, 0x9CC6, 0x9CC7, 0x9CCA, 0x9CCB,
+ /* GB 0xF740..0xF77E */
+ 0x9C3C, 0x9C3D, 0x9C3E, 0x9C3F, 0x9C40, 0x9C41, 0x9C42, 0x9C43,
+ 0x9C44, 0x9C45, 0x9C46, 0x9C47, 0x9C48, 0x9C49, 0x9C4A, 0x9C4B,
+ 0x9C4C, 0x9C4D, 0x9C4E, 0x9C4F, 0x9C50, 0x9C51, 0x9C52, 0x9C53,
+ 0x9C54, 0x9C55, 0x9C56, 0x9C57, 0x9C58, 0x9C59, 0x9C5A, 0x9C5B,
+ 0x9C5C, 0x9C5D, 0x9C5E, 0x9C5F, 0x9C60, 0x9C61, 0x9C62, 0x9C63,
+ 0x9C64, 0x9C65, 0x9C66, 0x9C67, 0x9C68, 0x9C69, 0x9C6A, 0x9C6B,
+ 0x9C6C, 0x9C6D, 0x9C6E, 0x9C6F, 0x9C70, 0x9C71, 0x9C72, 0x9C73,
+ 0x9C74, 0x9C75, 0x9C76, 0x9C77, 0x9C78, 0x9C79, 0x9C7A,
+ /* GB 0xF780..0xF7FE */
+ 0x9C7B, 0x9C7D, 0x9C7E, 0x9C80, 0x9C83, 0x9C84, 0x9C89, 0x9C8A,
+ 0x9C8C, 0x9C8F, 0x9C93, 0x9C96, 0x9C97, 0x9C98, 0x9C99, 0x9C9D,
+ 0x9CAA, 0x9CAC, 0x9CAF, 0x9CB9, 0x9CBE, 0x9CBF, 0x9CC0, 0x9CC1,
+ 0x9CC2, 0x9CC8, 0x9CC9, 0x9CD1, 0x9CD2, 0x9CDA, 0x9CDB, 0x9CE0,
+ 0x9CE1, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, 0x9CD0, 0x9CD3, 0x9CD4,
+ 0x9CD5, 0x9CD7, 0x9CD8, 0x9CD9, 0x9CDC, 0x9CDD, 0x9CDF, 0x9CE2,
+ 0x977C, 0x9785, 0x9791, 0x9792, 0x9794, 0x97AF, 0x97AB, 0x97A3,
+ 0x97B2, 0x97B4, 0x9AB1, 0x9AB0, 0x9AB7, 0x9E58, 0x9AB6, 0x9ABA,
+ 0x9ABC, 0x9AC1, 0x9AC0, 0x9AC5, 0x9AC2, 0x9ACB, 0x9ACC, 0x9AD1,
+ 0x9B45, 0x9B43, 0x9B47, 0x9B49, 0x9B48, 0x9B4D, 0x9B51, 0x98E8,
+ 0x990D, 0x992E, 0x9955, 0x9954, 0x9ADF, 0x9AE1, 0x9AE6, 0x9AEF,
+ 0x9AEB, 0x9AFB, 0x9AED, 0x9AF9, 0x9B08, 0x9B0F, 0x9B13, 0x9B1F,
+ 0x9B23, 0x9EBD, 0x9EBE, 0x7E3B, 0x9E82, 0x9E87, 0x9E88, 0x9E8B,
+ 0x9E92, 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB, 0x9EDC, 0x9EDD, 0x9EE0,
+ 0x9EDF, 0x9EE2, 0x9EE9, 0x9EE7, 0x9EE5, 0x9EEA, 0x9EEF, 0x9F22,
+ 0x9F2C, 0x9F2F, 0x9F39, 0x9F37, 0x9F3D, 0x9F3E, 0x9F44,
+ /* GB 0xF840..0xF87E */
+ 0x9CE3, 0x9CE4, 0x9CE5, 0x9CE6, 0x9CE7, 0x9CE8, 0x9CE9, 0x9CEA,
+ 0x9CEB, 0x9CEC, 0x9CED, 0x9CEE, 0x9CEF, 0x9CF0, 0x9CF1, 0x9CF2,
+ 0x9CF3, 0x9CF4, 0x9CF5, 0x9CF6, 0x9CF7, 0x9CF8, 0x9CF9, 0x9CFA,
+ 0x9CFB, 0x9CFC, 0x9CFD, 0x9CFE, 0x9CFF, 0x9D00, 0x9D01, 0x9D02,
+ 0x9D03, 0x9D04, 0x9D05, 0x9D06, 0x9D07, 0x9D08, 0x9D09, 0x9D0A,
+ 0x9D0B, 0x9D0C, 0x9D0D, 0x9D0E, 0x9D0F, 0x9D10, 0x9D11, 0x9D12,
+ 0x9D13, 0x9D14, 0x9D15, 0x9D16, 0x9D17, 0x9D18, 0x9D19, 0x9D1A,
+ 0x9D1B, 0x9D1C, 0x9D1D, 0x9D1E, 0x9D1F, 0x9D20, 0x9D21,
+ /* GB 0xF880..0xF8A0 */
+ 0x9D22, 0x9D23, 0x9D24, 0x9D25, 0x9D26, 0x9D27, 0x9D28, 0x9D29,
+ 0x9D2A, 0x9D2B, 0x9D2C, 0x9D2D, 0x9D2E, 0x9D2F, 0x9D30, 0x9D31,
+ 0x9D32, 0x9D33, 0x9D34, 0x9D35, 0x9D36, 0x9D37, 0x9D38, 0x9D39,
+ 0x9D3A, 0x9D3B, 0x9D3C, 0x9D3D, 0x9D3E, 0x9D3F, 0x9D40, 0x9D41,
+ 0x9D42, /* Skip: GB 0xF8A1..0xF8FE (UDA 2) */
+ /* GB 0xF940..0xF97E */
+ 0x9D43, 0x9D44, 0x9D45, 0x9D46, 0x9D47, 0x9D48, 0x9D49, 0x9D4A,
+ 0x9D4B, 0x9D4C, 0x9D4D, 0x9D4E, 0x9D4F, 0x9D50, 0x9D51, 0x9D52,
+ 0x9D53, 0x9D54, 0x9D55, 0x9D56, 0x9D57, 0x9D58, 0x9D59, 0x9D5A,
+ 0x9D5B, 0x9D5C, 0x9D5D, 0x9D5E, 0x9D5F, 0x9D60, 0x9D61, 0x9D62,
+ 0x9D63, 0x9D64, 0x9D65, 0x9D66, 0x9D67, 0x9D68, 0x9D69, 0x9D6A,
+ 0x9D6B, 0x9D6C, 0x9D6D, 0x9D6E, 0x9D6F, 0x9D70, 0x9D71, 0x9D72,
+ 0x9D73, 0x9D74, 0x9D75, 0x9D76, 0x9D77, 0x9D78, 0x9D79, 0x9D7A,
+ 0x9D7B, 0x9D7C, 0x9D7D, 0x9D7E, 0x9D7F, 0x9D80, 0x9D81,
+ /* GB 0xF980..0xF9A0 */
+ 0x9D82, 0x9D83, 0x9D84, 0x9D85, 0x9D86, 0x9D87, 0x9D88, 0x9D89,
+ 0x9D8A, 0x9D8B, 0x9D8C, 0x9D8D, 0x9D8E, 0x9D8F, 0x9D90, 0x9D91,
+ 0x9D92, 0x9D93, 0x9D94, 0x9D95, 0x9D96, 0x9D97, 0x9D98, 0x9D99,
+ 0x9D9A, 0x9D9B, 0x9D9C, 0x9D9D, 0x9D9E, 0x9D9F, 0x9DA0, 0x9DA1,
+ 0x9DA2, /* Skip: GB 0xF9A1..0xF9FE (UDA 2) */
+ /* GB 0xFA40..0xFA7E */
+ 0x9DA3, 0x9DA4, 0x9DA5, 0x9DA6, 0x9DA7, 0x9DA8, 0x9DA9, 0x9DAA,
+ 0x9DAB, 0x9DAC, 0x9DAD, 0x9DAE, 0x9DAF, 0x9DB0, 0x9DB1, 0x9DB2,
+ 0x9DB3, 0x9DB4, 0x9DB5, 0x9DB6, 0x9DB7, 0x9DB8, 0x9DB9, 0x9DBA,
+ 0x9DBB, 0x9DBC, 0x9DBD, 0x9DBE, 0x9DBF, 0x9DC0, 0x9DC1, 0x9DC2,
+ 0x9DC3, 0x9DC4, 0x9DC5, 0x9DC6, 0x9DC7, 0x9DC8, 0x9DC9, 0x9DCA,
+ 0x9DCB, 0x9DCC, 0x9DCD, 0x9DCE, 0x9DCF, 0x9DD0, 0x9DD1, 0x9DD2,
+ 0x9DD3, 0x9DD4, 0x9DD5, 0x9DD6, 0x9DD7, 0x9DD8, 0x9DD9, 0x9DDA,
+ 0x9DDB, 0x9DDC, 0x9DDD, 0x9DDE, 0x9DDF, 0x9DE0, 0x9DE1,
+ /* GB 0xFA80..0xFAA0 */
+ 0x9DE2, 0x9DE3, 0x9DE4, 0x9DE5, 0x9DE6, 0x9DE7, 0x9DE8, 0x9DE9,
+ 0x9DEA, 0x9DEB, 0x9DEC, 0x9DED, 0x9DEE, 0x9DEF, 0x9DF0, 0x9DF1,
+ 0x9DF2, 0x9DF3, 0x9DF4, 0x9DF5, 0x9DF6, 0x9DF7, 0x9DF8, 0x9DF9,
+ 0x9DFA, 0x9DFB, 0x9DFC, 0x9DFD, 0x9DFE, 0x9DFF, 0x9E00, 0x9E01,
+ 0x9E02, /* Skip: GB 0xFAA1..0xFAFE (UDA 2) */
+ /* GB 0xFB40..0xFB7E */
+ 0x9E03, 0x9E04, 0x9E05, 0x9E06, 0x9E07, 0x9E08, 0x9E09, 0x9E0A,
+ 0x9E0B, 0x9E0C, 0x9E0D, 0x9E0E, 0x9E0F, 0x9E10, 0x9E11, 0x9E12,
+ 0x9E13, 0x9E14, 0x9E15, 0x9E16, 0x9E17, 0x9E18, 0x9E19, 0x9E1A,
+ 0x9E1B, 0x9E1C, 0x9E1D, 0x9E1E, 0x9E24, 0x9E27, 0x9E2E, 0x9E30,
+ 0x9E34, 0x9E3B, 0x9E3C, 0x9E40, 0x9E4D, 0x9E50, 0x9E52, 0x9E53,
+ 0x9E54, 0x9E56, 0x9E59, 0x9E5D, 0x9E5F, 0x9E60, 0x9E61, 0x9E62,
+ 0x9E65, 0x9E6E, 0x9E6F, 0x9E72, 0x9E74, 0x9E75, 0x9E76, 0x9E77,
+ 0x9E78, 0x9E79, 0x9E7A, 0x9E7B, 0x9E7C, 0x9E7D, 0x9E80,
+ /* GB 0xFB80..0xFBA0 */
+ 0x9E81, 0x9E83, 0x9E84, 0x9E85, 0x9E86, 0x9E89, 0x9E8A, 0x9E8C,
+ 0x9E8D, 0x9E8E, 0x9E8F, 0x9E90, 0x9E91, 0x9E94, 0x9E95, 0x9E96,
+ 0x9E97, 0x9E98, 0x9E99, 0x9E9A, 0x9E9B, 0x9E9C, 0x9E9E, 0x9EA0,
+ 0x9EA1, 0x9EA2, 0x9EA3, 0x9EA4, 0x9EA5, 0x9EA7, 0x9EA8, 0x9EA9,
+ 0x9EAA, /* Skip: GB 0xFBA1..0xFBFE (UDA 2) */
+ /* GB 0xFC40..0xFC7E */
+ 0x9EAB, 0x9EAC, 0x9EAD, 0x9EAE, 0x9EAF, 0x9EB0, 0x9EB1, 0x9EB2,
+ 0x9EB3, 0x9EB5, 0x9EB6, 0x9EB7, 0x9EB9, 0x9EBA, 0x9EBC, 0x9EBF,
+ 0x9EC0, 0x9EC1, 0x9EC2, 0x9EC3, 0x9EC5, 0x9EC6, 0x9EC7, 0x9EC8,
+ 0x9ECA, 0x9ECB, 0x9ECC, 0x9ED0, 0x9ED2, 0x9ED3, 0x9ED5, 0x9ED6,
+ 0x9ED7, 0x9ED9, 0x9EDA, 0x9EDE, 0x9EE1, 0x9EE3, 0x9EE4, 0x9EE6,
+ 0x9EE8, 0x9EEB, 0x9EEC, 0x9EED, 0x9EEE, 0x9EF0, 0x9EF1, 0x9EF2,
+ 0x9EF3, 0x9EF4, 0x9EF5, 0x9EF6, 0x9EF7, 0x9EF8, 0x9EFA, 0x9EFD,
+ 0x9EFF, 0x9F00, 0x9F01, 0x9F02, 0x9F03, 0x9F04, 0x9F05,
+ /* GB 0xFC80..0xFCA0 */
+ 0x9F06, 0x9F07, 0x9F08, 0x9F09, 0x9F0A, 0x9F0C, 0x9F0F, 0x9F11,
+ 0x9F12, 0x9F14, 0x9F15, 0x9F16, 0x9F18, 0x9F1A, 0x9F1B, 0x9F1C,
+ 0x9F1D, 0x9F1E, 0x9F1F, 0x9F21, 0x9F23, 0x9F24, 0x9F25, 0x9F26,
+ 0x9F27, 0x9F28, 0x9F29, 0x9F2A, 0x9F2B, 0x9F2D, 0x9F2E, 0x9F30,
+ 0x9F31, /* Skip: GB 0xFCA1..0xFCFE (UDA 2) */
+ /* GB 0xFD40..0xFD7E */
+ 0x9F32, 0x9F33, 0x9F34, 0x9F35, 0x9F36, 0x9F38, 0x9F3A, 0x9F3C,
+ 0x9F3F, 0x9F40, 0x9F41, 0x9F42, 0x9F43, 0x9F45, 0x9F46, 0x9F47,
+ 0x9F48, 0x9F49, 0x9F4A, 0x9F4B, 0x9F4C, 0x9F4D, 0x9F4E, 0x9F4F,
+ 0x9F52, 0x9F53, 0x9F54, 0x9F55, 0x9F56, 0x9F57, 0x9F58, 0x9F59,
+ 0x9F5A, 0x9F5B, 0x9F5C, 0x9F5D, 0x9F5E, 0x9F5F, 0x9F60, 0x9F61,
+ 0x9F62, 0x9F63, 0x9F64, 0x9F65, 0x9F66, 0x9F67, 0x9F68, 0x9F69,
+ 0x9F6A, 0x9F6B, 0x9F6C, 0x9F6D, 0x9F6E, 0x9F6F, 0x9F70, 0x9F71,
+ 0x9F72, 0x9F73, 0x9F74, 0x9F75, 0x9F76, 0x9F77, 0x9F78,
+ /* GB 0xFD80..0xFDA0 */
+ 0x9F79, 0x9F7A, 0x9F7B, 0x9F7C, 0x9F7D, 0x9F7E, 0x9F81, 0x9F82,
+ 0x9F8D, 0x9F8E, 0x9F8F, 0x9F90, 0x9F91, 0x9F92, 0x9F93, 0x9F94,
+ 0x9F95, 0x9F96, 0x9F97, 0x9F98, 0x9F9C, 0x9F9D, 0x9F9E, 0x9FA1,
+ 0x9FA2, 0x9FA3, 0x9FA4, 0x9FA5, 0xF92C, 0xF979, 0xF995, 0xF9E7,
+ 0xF9F1, /* Skip: GB 0xFDA1..0xFDFE (UDA 2) */
+ /* GB 0xFE40..0xFE7E */
+ 0xFA0C, 0xFA0D, 0xFA0E, 0xFA0F, 0xFA11, 0xFA13, 0xFA14, 0xFA18,
+ 0xFA1F, 0xFA20, 0xFA21, 0xFA23, 0xFA24, 0xFA27, 0xFA28, 0xFA29,
+ 0x2E81, 0xE816, 0xE817, 0xE818, 0x2E84, 0x3473, 0x3447, 0x2E88,
+ 0x2E8B, 0xE81E, 0x359E, 0x361A, 0x360E, 0x2E8C, 0x2E97, 0x396E,
+ 0x3918, 0xE826, 0x39CF, 0x39DF, 0x3A73, 0x39D0, 0xE82B, 0xE82C,
+ 0x3B4E, 0x3C6E, 0x3CE0, 0x2EA7, 0xE831, 0xE832, 0x2EAA, 0x4056,
+ 0x415F, 0x2EAE, 0x4337, 0x2EB3, 0x2EB6, 0x2EB7, 0xE83B, 0x43B1,
+ 0x43AC, 0x2EBB, 0x43DD, 0x44D6, 0x4661, 0x464C, 0xE843,
+ /* GB 0xFE80..0xFEA0 */
+ 0x4723, 0x4729, 0x477C, 0x478D, 0x2ECA, 0x4947, 0x497A, 0x497D,
+ 0x4982, 0x4983, 0x4985, 0x4986, 0x499F, 0x499B, 0x49B7, 0x49B6,
+ 0xE854, 0xE855, 0x4CA3, 0x4C9F, 0x4CA0, 0x4CA1, 0x4C77, 0x4CA2,
+ 0x4D13, 0x4D14, 0x4D15, 0x4D16, 0x4D17, 0x4D18, 0x4D19, 0x4DAE,
+ 0xE864, /* Skip: GB 0xFEA1..0xFEFE (UDA 2) */
+};
+
+static quint16 const gb18030_4byte_to_ucs[6793] = {
+ /* Contiguous area: GB+81 30 81 30 .. GB+81 30 D2 39 */
+ /* GB+81 30 81 30 */ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084,
+ /* GB+81 30 81 35 */ 0x0085, 0x0086, 0x0087, 0x0088, 0x0089,
+ /* GB+81 30 82 30 */ 0x008A, 0x008B, 0x008C, 0x008D, 0x008E,
+ /* GB+81 30 82 35 */ 0x008F, 0x0090, 0x0091, 0x0092, 0x0093,
+ /* GB+81 30 83 30 */ 0x0094, 0x0095, 0x0096, 0x0097, 0x0098,
+ /* GB+81 30 83 35 */ 0x0099, 0x009A, 0x009B, 0x009C, 0x009D,
+ /* GB+81 30 84 30 */ 0x009E, 0x009F, 0x00A0, 0x00A1, 0x00A2,
+ /* GB+81 30 84 35 */ 0x00A3, 0x00A5, 0x00A6, 0x00A9, 0x00AA,
+ /* GB+81 30 85 30 */ 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
+ /* GB+81 30 85 35 */ 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6,
+ /* GB+81 30 86 30 */ 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC,
+ /* GB+81 30 86 35 */ 0x00BD, 0x00BE, 0x00BF, 0x00C0, 0x00C1,
+ /* GB+81 30 87 30 */ 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6,
+ /* GB+81 30 87 35 */ 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB,
+ /* GB+81 30 88 30 */ 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x00D0,
+ /* GB+81 30 88 35 */ 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5,
+ /* GB+81 30 89 30 */ 0x00D6, 0x00D8, 0x00D9, 0x00DA, 0x00DB,
+ /* GB+81 30 89 35 */ 0x00DC, 0x00DD, 0x00DE, 0x00DF, 0x00E2,
+ /* GB+81 30 8A 30 */ 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
+ /* GB+81 30 8A 35 */ 0x00EB, 0x00EE, 0x00EF, 0x00F0, 0x00F1,
+ /* GB+81 30 8B 30 */ 0x00F4, 0x00F5, 0x00F6, 0x00F8, 0x00FB,
+ /* GB+81 30 8B 35 */ 0x00FD, 0x00FE, 0x00FF, 0x0100, 0x0102,
+ /* GB+81 30 8C 30 */ 0x0103, 0x0104, 0x0105, 0x0106, 0x0107,
+ /* GB+81 30 8C 35 */ 0x0108, 0x0109, 0x010A, 0x010B, 0x010C,
+ /* GB+81 30 8D 30 */ 0x010D, 0x010E, 0x010F, 0x0110, 0x0111,
+ /* GB+81 30 8D 35 */ 0x0112, 0x0114, 0x0115, 0x0116, 0x0117,
+ /* GB+81 30 8E 30 */ 0x0118, 0x0119, 0x011A, 0x011C, 0x011D,
+ /* GB+81 30 8E 35 */ 0x011E, 0x011F, 0x0120, 0x0121, 0x0122,
+ /* GB+81 30 8F 30 */ 0x0123, 0x0124, 0x0125, 0x0126, 0x0127,
+ /* GB+81 30 8F 35 */ 0x0128, 0x0129, 0x012A, 0x012C, 0x012D,
+ /* GB+81 30 90 30 */ 0x012E, 0x012F, 0x0130, 0x0131, 0x0132,
+ /* GB+81 30 90 35 */ 0x0133, 0x0134, 0x0135, 0x0136, 0x0137,
+ /* GB+81 30 91 30 */ 0x0138, 0x0139, 0x013A, 0x013B, 0x013C,
+ /* GB+81 30 91 35 */ 0x013D, 0x013E, 0x013F, 0x0140, 0x0141,
+ /* GB+81 30 92 30 */ 0x0142, 0x0143, 0x0145, 0x0146, 0x0147,
+ /* GB+81 30 92 35 */ 0x0149, 0x014A, 0x014B, 0x014C, 0x014E,
+ /* GB+81 30 93 30 */ 0x014F, 0x0150, 0x0151, 0x0152, 0x0153,
+ /* GB+81 30 93 35 */ 0x0154, 0x0155, 0x0156, 0x0157, 0x0158,
+ /* GB+81 30 94 30 */ 0x0159, 0x015A, 0x015B, 0x015C, 0x015D,
+ /* GB+81 30 94 35 */ 0x015E, 0x015F, 0x0160, 0x0161, 0x0162,
+ /* GB+81 30 95 30 */ 0x0163, 0x0164, 0x0165, 0x0166, 0x0167,
+ /* GB+81 30 95 35 */ 0x0168, 0x0169, 0x016A, 0x016C, 0x016D,
+ /* GB+81 30 96 30 */ 0x016E, 0x016F, 0x0170, 0x0171, 0x0172,
+ /* GB+81 30 96 35 */ 0x0173, 0x0174, 0x0175, 0x0176, 0x0177,
+ /* GB+81 30 97 30 */ 0x0178, 0x0179, 0x017A, 0x017B, 0x017C,
+ /* GB+81 30 97 35 */ 0x017D, 0x017E, 0x017F, 0x0180, 0x0181,
+ /* GB+81 30 98 30 */ 0x0182, 0x0183, 0x0184, 0x0185, 0x0186,
+ /* GB+81 30 98 35 */ 0x0187, 0x0188, 0x0189, 0x018A, 0x018B,
+ /* GB+81 30 99 30 */ 0x018C, 0x018D, 0x018E, 0x018F, 0x0190,
+ /* GB+81 30 99 35 */ 0x0191, 0x0192, 0x0193, 0x0194, 0x0195,
+ /* GB+81 30 9A 30 */ 0x0196, 0x0197, 0x0198, 0x0199, 0x019A,
+ /* GB+81 30 9A 35 */ 0x019B, 0x019C, 0x019D, 0x019E, 0x019F,
+ /* GB+81 30 9B 30 */ 0x01A0, 0x01A1, 0x01A2, 0x01A3, 0x01A4,
+ /* GB+81 30 9B 35 */ 0x01A5, 0x01A6, 0x01A7, 0x01A8, 0x01A9,
+ /* GB+81 30 9C 30 */ 0x01AA, 0x01AB, 0x01AC, 0x01AD, 0x01AE,
+ /* GB+81 30 9C 35 */ 0x01AF, 0x01B0, 0x01B1, 0x01B2, 0x01B3,
+ /* GB+81 30 9D 30 */ 0x01B4, 0x01B5, 0x01B6, 0x01B7, 0x01B8,
+ /* GB+81 30 9D 35 */ 0x01B9, 0x01BA, 0x01BB, 0x01BC, 0x01BD,
+ /* GB+81 30 9E 30 */ 0x01BE, 0x01BF, 0x01C0, 0x01C1, 0x01C2,
+ /* GB+81 30 9E 35 */ 0x01C3, 0x01C4, 0x01C5, 0x01C6, 0x01C7,
+ /* GB+81 30 9F 30 */ 0x01C8, 0x01C9, 0x01CA, 0x01CB, 0x01CC,
+ /* GB+81 30 9F 35 */ 0x01CD, 0x01CF, 0x01D1, 0x01D3, 0x01D5,
+ /* GB+81 30 A0 30 */ 0x01D7, 0x01D9, 0x01DB, 0x01DD, 0x01DE,
+ /* GB+81 30 A0 35 */ 0x01DF, 0x01E0, 0x01E1, 0x01E2, 0x01E3,
+ /* GB+81 30 A1 30 */ 0x01E4, 0x01E5, 0x01E6, 0x01E7, 0x01E8,
+ /* GB+81 30 A1 35 */ 0x01E9, 0x01EA, 0x01EB, 0x01EC, 0x01ED,
+ /* GB+81 30 A2 30 */ 0x01EE, 0x01EF, 0x01F0, 0x01F1, 0x01F2,
+ /* GB+81 30 A2 35 */ 0x01F3, 0x01F4, 0x01F5, 0x01F6, 0x01F7,
+ /* GB+81 30 A3 30 */ 0x01F8, 0x01FA, 0x01FB, 0x01FC, 0x01FD,
+ /* GB+81 30 A3 35 */ 0x01FE, 0x01FF, 0x0200, 0x0201, 0x0202,
+ /* GB+81 30 A4 30 */ 0x0203, 0x0204, 0x0205, 0x0206, 0x0207,
+ /* GB+81 30 A4 35 */ 0x0208, 0x0209, 0x020A, 0x020B, 0x020C,
+ /* GB+81 30 A5 30 */ 0x020D, 0x020E, 0x020F, 0x0210, 0x0211,
+ /* GB+81 30 A5 35 */ 0x0212, 0x0213, 0x0214, 0x0215, 0x0216,
+ /* GB+81 30 A6 30 */ 0x0217, 0x0218, 0x0219, 0x021A, 0x021B,
+ /* GB+81 30 A6 35 */ 0x021C, 0x021D, 0x021E, 0x021F, 0x0220,
+ /* GB+81 30 A7 30 */ 0x0221, 0x0222, 0x0223, 0x0224, 0x0225,
+ /* GB+81 30 A7 35 */ 0x0226, 0x0227, 0x0228, 0x0229, 0x022A,
+ /* GB+81 30 A8 30 */ 0x022B, 0x022C, 0x022D, 0x022E, 0x022F,
+ /* GB+81 30 A8 35 */ 0x0230, 0x0231, 0x0232, 0x0233, 0x0234,
+ /* GB+81 30 A9 30 */ 0x0235, 0x0236, 0x0237, 0x0238, 0x0239,
+ /* GB+81 30 A9 35 */ 0x023A, 0x023B, 0x023C, 0x023D, 0x023E,
+ /* GB+81 30 AA 30 */ 0x023F, 0x0240, 0x0241, 0x0242, 0x0243,
+ /* GB+81 30 AA 35 */ 0x0244, 0x0245, 0x0246, 0x0247, 0x0248,
+ /* GB+81 30 AB 30 */ 0x0249, 0x024A, 0x024B, 0x024C, 0x024D,
+ /* GB+81 30 AB 35 */ 0x024E, 0x024F, 0x0250, 0x0252, 0x0253,
+ /* GB+81 30 AC 30 */ 0x0254, 0x0255, 0x0256, 0x0257, 0x0258,
+ /* GB+81 30 AC 35 */ 0x0259, 0x025A, 0x025B, 0x025C, 0x025D,
+ /* GB+81 30 AD 30 */ 0x025E, 0x025F, 0x0260, 0x0262, 0x0263,
+ /* GB+81 30 AD 35 */ 0x0264, 0x0265, 0x0266, 0x0267, 0x0268,
+ /* GB+81 30 AE 30 */ 0x0269, 0x026A, 0x026B, 0x026C, 0x026D,
+ /* GB+81 30 AE 35 */ 0x026E, 0x026F, 0x0270, 0x0271, 0x0272,
+ /* GB+81 30 AF 30 */ 0x0273, 0x0274, 0x0275, 0x0276, 0x0277,
+ /* GB+81 30 AF 35 */ 0x0278, 0x0279, 0x027A, 0x027B, 0x027C,
+ /* GB+81 30 B0 30 */ 0x027D, 0x027E, 0x027F, 0x0280, 0x0281,
+ /* GB+81 30 B0 35 */ 0x0282, 0x0283, 0x0284, 0x0285, 0x0286,
+ /* GB+81 30 B1 30 */ 0x0287, 0x0288, 0x0289, 0x028A, 0x028B,
+ /* GB+81 30 B1 35 */ 0x028C, 0x028D, 0x028E, 0x028F, 0x0290,
+ /* GB+81 30 B2 30 */ 0x0291, 0x0292, 0x0293, 0x0294, 0x0295,
+ /* GB+81 30 B2 35 */ 0x0296, 0x0297, 0x0298, 0x0299, 0x029A,
+ /* GB+81 30 B3 30 */ 0x029B, 0x029C, 0x029D, 0x029E, 0x029F,
+ /* GB+81 30 B3 35 */ 0x02A0, 0x02A1, 0x02A2, 0x02A3, 0x02A4,
+ /* GB+81 30 B4 30 */ 0x02A5, 0x02A6, 0x02A7, 0x02A8, 0x02A9,
+ /* GB+81 30 B4 35 */ 0x02AA, 0x02AB, 0x02AC, 0x02AD, 0x02AE,
+ /* GB+81 30 B5 30 */ 0x02AF, 0x02B0, 0x02B1, 0x02B2, 0x02B3,
+ /* GB+81 30 B5 35 */ 0x02B4, 0x02B5, 0x02B6, 0x02B7, 0x02B8,
+ /* GB+81 30 B6 30 */ 0x02B9, 0x02BA, 0x02BB, 0x02BC, 0x02BD,
+ /* GB+81 30 B6 35 */ 0x02BE, 0x02BF, 0x02C0, 0x02C1, 0x02C2,
+ /* GB+81 30 B7 30 */ 0x02C3, 0x02C4, 0x02C5, 0x02C6, 0x02C8,
+ /* GB+81 30 B7 35 */ 0x02CC, 0x02CD, 0x02CE, 0x02CF, 0x02D0,
+ /* GB+81 30 B8 30 */ 0x02D1, 0x02D2, 0x02D3, 0x02D4, 0x02D5,
+ /* GB+81 30 B8 35 */ 0x02D6, 0x02D7, 0x02D8, 0x02DA, 0x02DB,
+ /* GB+81 30 B9 30 */ 0x02DC, 0x02DD, 0x02DE, 0x02DF, 0x02E0,
+ /* GB+81 30 B9 35 */ 0x02E1, 0x02E2, 0x02E3, 0x02E4, 0x02E5,
+ /* GB+81 30 BA 30 */ 0x02E6, 0x02E7, 0x02E8, 0x02E9, 0x02EA,
+ /* GB+81 30 BA 35 */ 0x02EB, 0x02EC, 0x02ED, 0x02EE, 0x02EF,
+ /* GB+81 30 BB 30 */ 0x02F0, 0x02F1, 0x02F2, 0x02F3, 0x02F4,
+ /* GB+81 30 BB 35 */ 0x02F5, 0x02F6, 0x02F7, 0x02F8, 0x02F9,
+ /* GB+81 30 BC 30 */ 0x02FA, 0x02FB, 0x02FC, 0x02FD, 0x02FE,
+ /* GB+81 30 BC 35 */ 0x02FF, 0x0300, 0x0301, 0x0302, 0x0303,
+ /* GB+81 30 BD 30 */ 0x0304, 0x0305, 0x0306, 0x0307, 0x0308,
+ /* GB+81 30 BD 35 */ 0x0309, 0x030A, 0x030B, 0x030C, 0x030D,
+ /* GB+81 30 BE 30 */ 0x030E, 0x030F, 0x0310, 0x0311, 0x0312,
+ /* GB+81 30 BE 35 */ 0x0313, 0x0314, 0x0315, 0x0316, 0x0317,
+ /* GB+81 30 BF 30 */ 0x0318, 0x0319, 0x031A, 0x031B, 0x031C,
+ /* GB+81 30 BF 35 */ 0x031D, 0x031E, 0x031F, 0x0320, 0x0321,
+ /* GB+81 30 C0 30 */ 0x0322, 0x0323, 0x0324, 0x0325, 0x0326,
+ /* GB+81 30 C0 35 */ 0x0327, 0x0328, 0x0329, 0x032A, 0x032B,
+ /* GB+81 30 C1 30 */ 0x032C, 0x032D, 0x032E, 0x032F, 0x0330,
+ /* GB+81 30 C1 35 */ 0x0331, 0x0332, 0x0333, 0x0334, 0x0335,
+ /* GB+81 30 C2 30 */ 0x0336, 0x0337, 0x0338, 0x0339, 0x033A,
+ /* GB+81 30 C2 35 */ 0x033B, 0x033C, 0x033D, 0x033E, 0x033F,
+ /* GB+81 30 C3 30 */ 0x0340, 0x0341, 0x0342, 0x0343, 0x0344,
+ /* GB+81 30 C3 35 */ 0x0345, 0x0346, 0x0347, 0x0348, 0x0349,
+ /* GB+81 30 C4 30 */ 0x034A, 0x034B, 0x034C, 0x034D, 0x034E,
+ /* GB+81 30 C4 35 */ 0x034F, 0x0350, 0x0351, 0x0352, 0x0353,
+ /* GB+81 30 C5 30 */ 0x0354, 0x0355, 0x0356, 0x0357, 0x0358,
+ /* GB+81 30 C5 35 */ 0x0359, 0x035A, 0x035B, 0x035C, 0x035D,
+ /* GB+81 30 C6 30 */ 0x035E, 0x035F, 0x0360, 0x0361, 0x0362,
+ /* GB+81 30 C6 35 */ 0x0363, 0x0364, 0x0365, 0x0366, 0x0367,
+ /* GB+81 30 C7 30 */ 0x0368, 0x0369, 0x036A, 0x036B, 0x036C,
+ /* GB+81 30 C7 35 */ 0x036D, 0x036E, 0x036F, 0x0370, 0x0371,
+ /* GB+81 30 C8 30 */ 0x0372, 0x0373, 0x0374, 0x0375, 0x0376,
+ /* GB+81 30 C8 35 */ 0x0377, 0x0378, 0x0379, 0x037A, 0x037B,
+ /* GB+81 30 C9 30 */ 0x037C, 0x037D, 0x037E, 0x037F, 0x0380,
+ /* GB+81 30 C9 35 */ 0x0381, 0x0382, 0x0383, 0x0384, 0x0385,
+ /* GB+81 30 CA 30 */ 0x0386, 0x0387, 0x0388, 0x0389, 0x038A,
+ /* GB+81 30 CA 35 */ 0x038B, 0x038C, 0x038D, 0x038E, 0x038F,
+ /* GB+81 30 CB 30 */ 0x0390, 0x03A2, 0x03AA, 0x03AB, 0x03AC,
+ /* GB+81 30 CB 35 */ 0x03AD, 0x03AE, 0x03AF, 0x03B0, 0x03C2,
+ /* GB+81 30 CC 30 */ 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE,
+ /* GB+81 30 CC 35 */ 0x03CF, 0x03D0, 0x03D1, 0x03D2, 0x03D3,
+ /* GB+81 30 CD 30 */ 0x03D4, 0x03D5, 0x03D6, 0x03D7, 0x03D8,
+ /* GB+81 30 CD 35 */ 0x03D9, 0x03DA, 0x03DB, 0x03DC, 0x03DD,
+ /* GB+81 30 CE 30 */ 0x03DE, 0x03DF, 0x03E0, 0x03E1, 0x03E2,
+ /* GB+81 30 CE 35 */ 0x03E3, 0x03E4, 0x03E5, 0x03E6, 0x03E7,
+ /* GB+81 30 CF 30 */ 0x03E8, 0x03E9, 0x03EA, 0x03EB, 0x03EC,
+ /* GB+81 30 CF 35 */ 0x03ED, 0x03EE, 0x03EF, 0x03F0, 0x03F1,
+ /* GB+81 30 D0 30 */ 0x03F2, 0x03F3, 0x03F4, 0x03F5, 0x03F6,
+ /* GB+81 30 D0 35 */ 0x03F7, 0x03F8, 0x03F9, 0x03FA, 0x03FB,
+ /* GB+81 30 D1 30 */ 0x03FC, 0x03FD, 0x03FE, 0x03FF, 0x0400,
+ /* GB+81 30 D1 35 */ 0x0402, 0x0403, 0x0404, 0x0405, 0x0406,
+ /* GB+81 30 D2 30 */ 0x0407, 0x0408, 0x0409, 0x040A, 0x040B,
+ /* GB+81 30 D2 35 */ 0x040C, 0x040D, 0x040E, 0x040F, 0x0450,
+ /* Contiguous area: GB+81 36 A5 32 .. GB+81 37 A8 38 */
+ /* GB+81 36 A5 32 */ 0x2011, 0x2012, 0x2017,
+ /* GB+81 36 A5 35 */ 0x201A, 0x201B, 0x201E, 0x201F, 0x2020,
+ /* GB+81 36 A6 30 */ 0x2021, 0x2022, 0x2023, 0x2024, 0x2027,
+ /* GB+81 36 A6 35 */ 0x2028, 0x2029, 0x202A, 0x202B, 0x202C,
+ /* GB+81 36 A7 30 */ 0x202D, 0x202E, 0x202F, 0x2031, 0x2034,
+ /* GB+81 36 A7 35 */ 0x2036, 0x2037, 0x2038, 0x2039, 0x203A,
+ /* GB+81 36 A8 30 */ 0x203C, 0x203D, 0x203E, 0x203F, 0x2040,
+ /* GB+81 36 A8 35 */ 0x2041, 0x2042, 0x2043, 0x2044, 0x2045,
+ /* GB+81 36 A9 30 */ 0x2046, 0x2047, 0x2048, 0x2049, 0x204A,
+ /* GB+81 36 A9 35 */ 0x204B, 0x204C, 0x204D, 0x204E, 0x204F,
+ /* GB+81 36 AA 30 */ 0x2050, 0x2051, 0x2052, 0x2053, 0x2054,
+ /* GB+81 36 AA 35 */ 0x2055, 0x2056, 0x2057, 0x2058, 0x2059,
+ /* GB+81 36 AB 30 */ 0x205A, 0x205B, 0x205C, 0x205D, 0x205E,
+ /* GB+81 36 AB 35 */ 0x205F, 0x2060, 0x2061, 0x2062, 0x2063,
+ /* GB+81 36 AC 30 */ 0x2064, 0x2065, 0x2066, 0x2067, 0x2068,
+ /* GB+81 36 AC 35 */ 0x2069, 0x206A, 0x206B, 0x206C, 0x206D,
+ /* GB+81 36 AD 30 */ 0x206E, 0x206F, 0x2070, 0x2071, 0x2072,
+ /* GB+81 36 AD 35 */ 0x2073, 0x2074, 0x2075, 0x2076, 0x2077,
+ /* GB+81 36 AE 30 */ 0x2078, 0x2079, 0x207A, 0x207B, 0x207C,
+ /* GB+81 36 AE 35 */ 0x207D, 0x207E, 0x207F, 0x2080, 0x2081,
+ /* GB+81 36 AF 30 */ 0x2082, 0x2083, 0x2084, 0x2085, 0x2086,
+ /* GB+81 36 AF 35 */ 0x2087, 0x2088, 0x2089, 0x208A, 0x208B,
+ /* GB+81 36 B0 30 */ 0x208C, 0x208D, 0x208E, 0x208F, 0x2090,
+ /* GB+81 36 B0 35 */ 0x2091, 0x2092, 0x2093, 0x2094, 0x2095,
+ /* GB+81 36 B1 30 */ 0x2096, 0x2097, 0x2098, 0x2099, 0x209A,
+ /* GB+81 36 B1 35 */ 0x209B, 0x209C, 0x209D, 0x209E, 0x209F,
+ /* GB+81 36 B2 30 */ 0x20A0, 0x20A1, 0x20A2, 0x20A3, 0x20A4,
+ /* GB+81 36 B2 35 */ 0x20A5, 0x20A6, 0x20A7, 0x20A8, 0x20A9,
+ /* GB+81 36 B3 30 */ 0x20AA, 0x20AB, 0x20AD, 0x20AE, 0x20AF,
+ /* GB+81 36 B3 35 */ 0x20B0, 0x20B1, 0x20B2, 0x20B3, 0x20B4,
+ /* GB+81 36 B4 30 */ 0x20B5, 0x20B6, 0x20B7, 0x20B8, 0x20B9,
+ /* GB+81 36 B4 35 */ 0x20BA, 0x20BB, 0x20BC, 0x20BD, 0x20BE,
+ /* GB+81 36 B5 30 */ 0x20BF, 0x20C0, 0x20C1, 0x20C2, 0x20C3,
+ /* GB+81 36 B5 35 */ 0x20C4, 0x20C5, 0x20C6, 0x20C7, 0x20C8,
+ /* GB+81 36 B6 30 */ 0x20C9, 0x20CA, 0x20CB, 0x20CC, 0x20CD,
+ /* GB+81 36 B6 35 */ 0x20CE, 0x20CF, 0x20D0, 0x20D1, 0x20D2,
+ /* GB+81 36 B7 30 */ 0x20D3, 0x20D4, 0x20D5, 0x20D6, 0x20D7,
+ /* GB+81 36 B7 35 */ 0x20D8, 0x20D9, 0x20DA, 0x20DB, 0x20DC,
+ /* GB+81 36 B8 30 */ 0x20DD, 0x20DE, 0x20DF, 0x20E0, 0x20E1,
+ /* GB+81 36 B8 35 */ 0x20E2, 0x20E3, 0x20E4, 0x20E5, 0x20E6,
+ /* GB+81 36 B9 30 */ 0x20E7, 0x20E8, 0x20E9, 0x20EA, 0x20EB,
+ /* GB+81 36 B9 35 */ 0x20EC, 0x20ED, 0x20EE, 0x20EF, 0x20F0,
+ /* GB+81 36 BA 30 */ 0x20F1, 0x20F2, 0x20F3, 0x20F4, 0x20F5,
+ /* GB+81 36 BA 35 */ 0x20F6, 0x20F7, 0x20F8, 0x20F9, 0x20FA,
+ /* GB+81 36 BB 30 */ 0x20FB, 0x20FC, 0x20FD, 0x20FE, 0x20FF,
+ /* GB+81 36 BB 35 */ 0x2100, 0x2101, 0x2102, 0x2104, 0x2106,
+ /* GB+81 36 BC 30 */ 0x2107, 0x2108, 0x210A, 0x210B, 0x210C,
+ /* GB+81 36 BC 35 */ 0x210D, 0x210E, 0x210F, 0x2110, 0x2111,
+ /* GB+81 36 BD 30 */ 0x2112, 0x2113, 0x2114, 0x2115, 0x2117,
+ /* GB+81 36 BD 35 */ 0x2118, 0x2119, 0x211A, 0x211B, 0x211C,
+ /* GB+81 36 BE 30 */ 0x211D, 0x211E, 0x211F, 0x2120, 0x2122,
+ /* GB+81 36 BE 35 */ 0x2123, 0x2124, 0x2125, 0x2126, 0x2127,
+ /* GB+81 36 BF 30 */ 0x2128, 0x2129, 0x212A, 0x212B, 0x212C,
+ /* GB+81 36 BF 35 */ 0x212D, 0x212E, 0x212F, 0x2130, 0x2131,
+ /* GB+81 36 C0 30 */ 0x2132, 0x2133, 0x2134, 0x2135, 0x2136,
+ /* GB+81 36 C0 35 */ 0x2137, 0x2138, 0x2139, 0x213A, 0x213B,
+ /* GB+81 36 C1 30 */ 0x213C, 0x213D, 0x213E, 0x213F, 0x2140,
+ /* GB+81 36 C1 35 */ 0x2141, 0x2142, 0x2143, 0x2144, 0x2145,
+ /* GB+81 36 C2 30 */ 0x2146, 0x2147, 0x2148, 0x2149, 0x214A,
+ /* GB+81 36 C2 35 */ 0x214B, 0x214C, 0x214D, 0x214E, 0x214F,
+ /* GB+81 36 C3 30 */ 0x2150, 0x2151, 0x2152, 0x2153, 0x2154,
+ /* GB+81 36 C3 35 */ 0x2155, 0x2156, 0x2157, 0x2158, 0x2159,
+ /* GB+81 36 C4 30 */ 0x215A, 0x215B, 0x215C, 0x215D, 0x215E,
+ /* GB+81 36 C4 35 */ 0x215F, 0x216C, 0x216D, 0x216E, 0x216F,
+ /* GB+81 36 C5 30 */ 0x217A, 0x217B, 0x217C, 0x217D, 0x217E,
+ /* GB+81 36 C5 35 */ 0x217F, 0x2180, 0x2181, 0x2182, 0x2183,
+ /* GB+81 36 C6 30 */ 0x2184, 0x2185, 0x2186, 0x2187, 0x2188,
+ /* GB+81 36 C6 35 */ 0x2189, 0x218A, 0x218B, 0x218C, 0x218D,
+ /* GB+81 36 C7 30 */ 0x218E, 0x218F, 0x2194, 0x2195, 0x219A,
+ /* GB+81 36 C7 35 */ 0x219B, 0x219C, 0x219D, 0x219E, 0x219F,
+ /* GB+81 36 C8 30 */ 0x21A0, 0x21A1, 0x21A2, 0x21A3, 0x21A4,
+ /* GB+81 36 C8 35 */ 0x21A5, 0x21A6, 0x21A7, 0x21A8, 0x21A9,
+ /* GB+81 36 C9 30 */ 0x21AA, 0x21AB, 0x21AC, 0x21AD, 0x21AE,
+ /* GB+81 36 C9 35 */ 0x21AF, 0x21B0, 0x21B1, 0x21B2, 0x21B3,
+ /* GB+81 36 CA 30 */ 0x21B4, 0x21B5, 0x21B6, 0x21B7, 0x21B8,
+ /* GB+81 36 CA 35 */ 0x21B9, 0x21BA, 0x21BB, 0x21BC, 0x21BD,
+ /* GB+81 36 CB 30 */ 0x21BE, 0x21BF, 0x21C0, 0x21C1, 0x21C2,
+ /* GB+81 36 CB 35 */ 0x21C3, 0x21C4, 0x21C5, 0x21C6, 0x21C7,
+ /* GB+81 36 CC 30 */ 0x21C8, 0x21C9, 0x21CA, 0x21CB, 0x21CC,
+ /* GB+81 36 CC 35 */ 0x21CD, 0x21CE, 0x21CF, 0x21D0, 0x21D1,
+ /* GB+81 36 CD 30 */ 0x21D2, 0x21D3, 0x21D4, 0x21D5, 0x21D6,
+ /* GB+81 36 CD 35 */ 0x21D7, 0x21D8, 0x21D9, 0x21DA, 0x21DB,
+ /* GB+81 36 CE 30 */ 0x21DC, 0x21DD, 0x21DE, 0x21DF, 0x21E0,
+ /* GB+81 36 CE 35 */ 0x21E1, 0x21E2, 0x21E3, 0x21E4, 0x21E5,
+ /* GB+81 36 CF 30 */ 0x21E6, 0x21E7, 0x21E8, 0x21E9, 0x21EA,
+ /* GB+81 36 CF 35 */ 0x21EB, 0x21EC, 0x21ED, 0x21EE, 0x21EF,
+ /* GB+81 36 D0 30 */ 0x21F0, 0x21F1, 0x21F2, 0x21F3, 0x21F4,
+ /* GB+81 36 D0 35 */ 0x21F5, 0x21F6, 0x21F7, 0x21F8, 0x21F9,
+ /* GB+81 36 D1 30 */ 0x21FA, 0x21FB, 0x21FC, 0x21FD, 0x21FE,
+ /* GB+81 36 D1 35 */ 0x21FF, 0x2200, 0x2201, 0x2202, 0x2203,
+ /* GB+81 36 D2 30 */ 0x2204, 0x2205, 0x2206, 0x2207, 0x2209,
+ /* GB+81 36 D2 35 */ 0x220A, 0x220B, 0x220C, 0x220D, 0x220E,
+ /* GB+81 36 D3 30 */ 0x2210, 0x2212, 0x2213, 0x2214, 0x2216,
+ /* GB+81 36 D3 35 */ 0x2217, 0x2218, 0x2219, 0x221B, 0x221C,
+ /* GB+81 36 D4 30 */ 0x2221, 0x2222, 0x2224, 0x2226, 0x222C,
+ /* GB+81 36 D4 35 */ 0x222D, 0x222F, 0x2230, 0x2231, 0x2232,
+ /* GB+81 36 D5 30 */ 0x2233, 0x2238, 0x2239, 0x223A, 0x223B,
+ /* GB+81 36 D5 35 */ 0x223C, 0x223E, 0x223F, 0x2240, 0x2241,
+ /* GB+81 36 D6 30 */ 0x2242, 0x2243, 0x2244, 0x2245, 0x2246,
+ /* GB+81 36 D6 35 */ 0x2247, 0x2249, 0x224A, 0x224B, 0x224D,
+ /* GB+81 36 D7 30 */ 0x224E, 0x224F, 0x2250, 0x2251, 0x2253,
+ /* GB+81 36 D7 35 */ 0x2254, 0x2255, 0x2256, 0x2257, 0x2258,
+ /* GB+81 36 D8 30 */ 0x2259, 0x225A, 0x225B, 0x225C, 0x225D,
+ /* GB+81 36 D8 35 */ 0x225E, 0x225F, 0x2262, 0x2263, 0x2268,
+ /* GB+81 36 D9 30 */ 0x2269, 0x226A, 0x226B, 0x226C, 0x226D,
+ /* GB+81 36 D9 35 */ 0x2270, 0x2271, 0x2272, 0x2273, 0x2274,
+ /* GB+81 36 DA 30 */ 0x2275, 0x2276, 0x2277, 0x2278, 0x2279,
+ /* GB+81 36 DA 35 */ 0x227A, 0x227B, 0x227C, 0x227D, 0x227E,
+ /* GB+81 36 DB 30 */ 0x227F, 0x2280, 0x2281, 0x2282, 0x2283,
+ /* GB+81 36 DB 35 */ 0x2284, 0x2285, 0x2286, 0x2287, 0x2288,
+ /* GB+81 36 DC 30 */ 0x2289, 0x228A, 0x228B, 0x228C, 0x228D,
+ /* GB+81 36 DC 35 */ 0x228E, 0x228F, 0x2290, 0x2291, 0x2292,
+ /* GB+81 36 DD 30 */ 0x2293, 0x2294, 0x2296, 0x2297, 0x2298,
+ /* GB+81 36 DD 35 */ 0x229A, 0x229B, 0x229C, 0x229D, 0x229E,
+ /* GB+81 36 DE 30 */ 0x229F, 0x22A0, 0x22A1, 0x22A2, 0x22A3,
+ /* GB+81 36 DE 35 */ 0x22A4, 0x22A6, 0x22A7, 0x22A8, 0x22A9,
+ /* GB+81 36 DF 30 */ 0x22AA, 0x22AB, 0x22AC, 0x22AD, 0x22AE,
+ /* GB+81 36 DF 35 */ 0x22AF, 0x22B0, 0x22B1, 0x22B2, 0x22B3,
+ /* GB+81 36 E0 30 */ 0x22B4, 0x22B5, 0x22B6, 0x22B7, 0x22B8,
+ /* GB+81 36 E0 35 */ 0x22B9, 0x22BA, 0x22BB, 0x22BC, 0x22BD,
+ /* GB+81 36 E1 30 */ 0x22BE, 0x22C0, 0x22C1, 0x22C2, 0x22C3,
+ /* GB+81 36 E1 35 */ 0x22C4, 0x22C5, 0x22C6, 0x22C7, 0x22C8,
+ /* GB+81 36 E2 30 */ 0x22C9, 0x22CA, 0x22CB, 0x22CC, 0x22CD,
+ /* GB+81 36 E2 35 */ 0x22CE, 0x22CF, 0x22D0, 0x22D1, 0x22D2,
+ /* GB+81 36 E3 30 */ 0x22D3, 0x22D4, 0x22D5, 0x22D6, 0x22D7,
+ /* GB+81 36 E3 35 */ 0x22D8, 0x22D9, 0x22DA, 0x22DB, 0x22DC,
+ /* GB+81 36 E4 30 */ 0x22DD, 0x22DE, 0x22DF, 0x22E0, 0x22E1,
+ /* GB+81 36 E4 35 */ 0x22E2, 0x22E3, 0x22E4, 0x22E5, 0x22E6,
+ /* GB+81 36 E5 30 */ 0x22E7, 0x22E8, 0x22E9, 0x22EA, 0x22EB,
+ /* GB+81 36 E5 35 */ 0x22EC, 0x22ED, 0x22EE, 0x22EF, 0x22F0,
+ /* GB+81 36 E6 30 */ 0x22F1, 0x22F2, 0x22F3, 0x22F4, 0x22F5,
+ /* GB+81 36 E6 35 */ 0x22F6, 0x22F7, 0x22F8, 0x22F9, 0x22FA,
+ /* GB+81 36 E7 30 */ 0x22FB, 0x22FC, 0x22FD, 0x22FE, 0x22FF,
+ /* GB+81 36 E7 35 */ 0x2300, 0x2301, 0x2302, 0x2303, 0x2304,
+ /* GB+81 36 E8 30 */ 0x2305, 0x2306, 0x2307, 0x2308, 0x2309,
+ /* GB+81 36 E8 35 */ 0x230A, 0x230B, 0x230C, 0x230D, 0x230E,
+ /* GB+81 36 E9 30 */ 0x230F, 0x2310, 0x2311, 0x2313, 0x2314,
+ /* GB+81 36 E9 35 */ 0x2315, 0x2316, 0x2317, 0x2318, 0x2319,
+ /* GB+81 36 EA 30 */ 0x231A, 0x231B, 0x231C, 0x231D, 0x231E,
+ /* GB+81 36 EA 35 */ 0x231F, 0x2320, 0x2321, 0x2322, 0x2323,
+ /* GB+81 36 EB 30 */ 0x2324, 0x2325, 0x2326, 0x2327, 0x2328,
+ /* GB+81 36 EB 35 */ 0x2329, 0x232A, 0x232B, 0x232C, 0x232D,
+ /* GB+81 36 EC 30 */ 0x232E, 0x232F, 0x2330, 0x2331, 0x2332,
+ /* GB+81 36 EC 35 */ 0x2333, 0x2334, 0x2335, 0x2336, 0x2337,
+ /* GB+81 36 ED 30 */ 0x2338, 0x2339, 0x233A, 0x233B, 0x233C,
+ /* GB+81 36 ED 35 */ 0x233D, 0x233E, 0x233F, 0x2340, 0x2341,
+ /* GB+81 36 EE 30 */ 0x2342, 0x2343, 0x2344, 0x2345, 0x2346,
+ /* GB+81 36 EE 35 */ 0x2347, 0x2348, 0x2349, 0x234A, 0x234B,
+ /* GB+81 36 EF 30 */ 0x234C, 0x234D, 0x234E, 0x234F, 0x2350,
+ /* GB+81 36 EF 35 */ 0x2351, 0x2352, 0x2353, 0x2354, 0x2355,
+ /* GB+81 36 F0 30 */ 0x2356, 0x2357, 0x2358, 0x2359, 0x235A,
+ /* GB+81 36 F0 35 */ 0x235B, 0x235C, 0x235D, 0x235E, 0x235F,
+ /* GB+81 36 F1 30 */ 0x2360, 0x2361, 0x2362, 0x2363, 0x2364,
+ /* GB+81 36 F1 35 */ 0x2365, 0x2366, 0x2367, 0x2368, 0x2369,
+ /* GB+81 36 F2 30 */ 0x236A, 0x236B, 0x236C, 0x236D, 0x236E,
+ /* GB+81 36 F2 35 */ 0x236F, 0x2370, 0x2371, 0x2372, 0x2373,
+ /* GB+81 36 F3 30 */ 0x2374, 0x2375, 0x2376, 0x2377, 0x2378,
+ /* GB+81 36 F3 35 */ 0x2379, 0x237A, 0x237B, 0x237C, 0x237D,
+ /* GB+81 36 F4 30 */ 0x237E, 0x237F, 0x2380, 0x2381, 0x2382,
+ /* GB+81 36 F4 35 */ 0x2383, 0x2384, 0x2385, 0x2386, 0x2387,
+ /* GB+81 36 F5 30 */ 0x2388, 0x2389, 0x238A, 0x238B, 0x238C,
+ /* GB+81 36 F5 35 */ 0x238D, 0x238E, 0x238F, 0x2390, 0x2391,
+ /* GB+81 36 F6 30 */ 0x2392, 0x2393, 0x2394, 0x2395, 0x2396,
+ /* GB+81 36 F6 35 */ 0x2397, 0x2398, 0x2399, 0x239A, 0x239B,
+ /* GB+81 36 F7 30 */ 0x239C, 0x239D, 0x239E, 0x239F, 0x23A0,
+ /* GB+81 36 F7 35 */ 0x23A1, 0x23A2, 0x23A3, 0x23A4, 0x23A5,
+ /* GB+81 36 F8 30 */ 0x23A6, 0x23A7, 0x23A8, 0x23A9, 0x23AA,
+ /* GB+81 36 F8 35 */ 0x23AB, 0x23AC, 0x23AD, 0x23AE, 0x23AF,
+ /* GB+81 36 F9 30 */ 0x23B0, 0x23B1, 0x23B2, 0x23B3, 0x23B4,
+ /* GB+81 36 F9 35 */ 0x23B5, 0x23B6, 0x23B7, 0x23B8, 0x23B9,
+ /* GB+81 36 FA 30 */ 0x23BA, 0x23BB, 0x23BC, 0x23BD, 0x23BE,
+ /* GB+81 36 FA 35 */ 0x23BF, 0x23C0, 0x23C1, 0x23C2, 0x23C3,
+ /* GB+81 36 FB 30 */ 0x23C4, 0x23C5, 0x23C6, 0x23C7, 0x23C8,
+ /* GB+81 36 FB 35 */ 0x23C9, 0x23CA, 0x23CB, 0x23CC, 0x23CD,
+ /* GB+81 36 FC 30 */ 0x23CE, 0x23CF, 0x23D0, 0x23D1, 0x23D2,
+ /* GB+81 36 FC 35 */ 0x23D3, 0x23D4, 0x23D5, 0x23D6, 0x23D7,
+ /* GB+81 36 FD 30 */ 0x23D8, 0x23D9, 0x23DA, 0x23DB, 0x23DC,
+ /* GB+81 36 FD 35 */ 0x23DD, 0x23DE, 0x23DF, 0x23E0, 0x23E1,
+ /* GB+81 36 FE 30 */ 0x23E2, 0x23E3, 0x23E4, 0x23E5, 0x23E6,
+ /* GB+81 36 FE 35 */ 0x23E7, 0x23E8, 0x23E9, 0x23EA, 0x23EB,
+ /* GB+81 37 81 30 */ 0x23EC, 0x23ED, 0x23EE, 0x23EF, 0x23F0,
+ /* GB+81 37 81 35 */ 0x23F1, 0x23F2, 0x23F3, 0x23F4, 0x23F5,
+ /* GB+81 37 82 30 */ 0x23F6, 0x23F7, 0x23F8, 0x23F9, 0x23FA,
+ /* GB+81 37 82 35 */ 0x23FB, 0x23FC, 0x23FD, 0x23FE, 0x23FF,
+ /* GB+81 37 83 30 */ 0x2400, 0x2401, 0x2402, 0x2403, 0x2404,
+ /* GB+81 37 83 35 */ 0x2405, 0x2406, 0x2407, 0x2408, 0x2409,
+ /* GB+81 37 84 30 */ 0x240A, 0x240B, 0x240C, 0x240D, 0x240E,
+ /* GB+81 37 84 35 */ 0x240F, 0x2410, 0x2411, 0x2412, 0x2413,
+ /* GB+81 37 85 30 */ 0x2414, 0x2415, 0x2416, 0x2417, 0x2418,
+ /* GB+81 37 85 35 */ 0x2419, 0x241A, 0x241B, 0x241C, 0x241D,
+ /* GB+81 37 86 30 */ 0x241E, 0x241F, 0x2420, 0x2421, 0x2422,
+ /* GB+81 37 86 35 */ 0x2423, 0x2424, 0x2425, 0x2426, 0x2427,
+ /* GB+81 37 87 30 */ 0x2428, 0x2429, 0x242A, 0x242B, 0x242C,
+ /* GB+81 37 87 35 */ 0x242D, 0x242E, 0x242F, 0x2430, 0x2431,
+ /* GB+81 37 88 30 */ 0x2432, 0x2433, 0x2434, 0x2435, 0x2436,
+ /* GB+81 37 88 35 */ 0x2437, 0x2438, 0x2439, 0x243A, 0x243B,
+ /* GB+81 37 89 30 */ 0x243C, 0x243D, 0x243E, 0x243F, 0x2440,
+ /* GB+81 37 89 35 */ 0x2441, 0x2442, 0x2443, 0x2444, 0x2445,
+ /* GB+81 37 8A 30 */ 0x2446, 0x2447, 0x2448, 0x2449, 0x244A,
+ /* GB+81 37 8A 35 */ 0x244B, 0x244C, 0x244D, 0x244E, 0x244F,
+ /* GB+81 37 8B 30 */ 0x2450, 0x2451, 0x2452, 0x2453, 0x2454,
+ /* GB+81 37 8B 35 */ 0x2455, 0x2456, 0x2457, 0x2458, 0x2459,
+ /* GB+81 37 8C 30 */ 0x245A, 0x245B, 0x245C, 0x245D, 0x245E,
+ /* GB+81 37 8C 35 */ 0x245F, 0x246A, 0x246B, 0x246C, 0x246D,
+ /* GB+81 37 8D 30 */ 0x246E, 0x246F, 0x2470, 0x2471, 0x2472,
+ /* GB+81 37 8D 35 */ 0x2473, 0x249C, 0x249D, 0x249E, 0x249F,
+ /* GB+81 37 8E 30 */ 0x24A0, 0x24A1, 0x24A2, 0x24A3, 0x24A4,
+ /* GB+81 37 8E 35 */ 0x24A5, 0x24A6, 0x24A7, 0x24A8, 0x24A9,
+ /* GB+81 37 8F 30 */ 0x24AA, 0x24AB, 0x24AC, 0x24AD, 0x24AE,
+ /* GB+81 37 8F 35 */ 0x24AF, 0x24B0, 0x24B1, 0x24B2, 0x24B3,
+ /* GB+81 37 90 30 */ 0x24B4, 0x24B5, 0x24B6, 0x24B7, 0x24B8,
+ /* GB+81 37 90 35 */ 0x24B9, 0x24BA, 0x24BB, 0x24BC, 0x24BD,
+ /* GB+81 37 91 30 */ 0x24BE, 0x24BF, 0x24C0, 0x24C1, 0x24C2,
+ /* GB+81 37 91 35 */ 0x24C3, 0x24C4, 0x24C5, 0x24C6, 0x24C7,
+ /* GB+81 37 92 30 */ 0x24C8, 0x24C9, 0x24CA, 0x24CB, 0x24CC,
+ /* GB+81 37 92 35 */ 0x24CD, 0x24CE, 0x24CF, 0x24D0, 0x24D1,
+ /* GB+81 37 93 30 */ 0x24D2, 0x24D3, 0x24D4, 0x24D5, 0x24D6,
+ /* GB+81 37 93 35 */ 0x24D7, 0x24D8, 0x24D9, 0x24DA, 0x24DB,
+ /* GB+81 37 94 30 */ 0x24DC, 0x24DD, 0x24DE, 0x24DF, 0x24E0,
+ /* GB+81 37 94 35 */ 0x24E1, 0x24E2, 0x24E3, 0x24E4, 0x24E5,
+ /* GB+81 37 95 30 */ 0x24E6, 0x24E7, 0x24E8, 0x24E9, 0x24EA,
+ /* GB+81 37 95 35 */ 0x24EB, 0x24EC, 0x24ED, 0x24EE, 0x24EF,
+ /* GB+81 37 96 30 */ 0x24F0, 0x24F1, 0x24F2, 0x24F3, 0x24F4,
+ /* GB+81 37 96 35 */ 0x24F5, 0x24F6, 0x24F7, 0x24F8, 0x24F9,
+ /* GB+81 37 97 30 */ 0x24FA, 0x24FB, 0x24FC, 0x24FD, 0x24FE,
+ /* GB+81 37 97 35 */ 0x24FF, 0x254C, 0x254D, 0x254E, 0x254F,
+ /* GB+81 37 98 30 */ 0x2574, 0x2575, 0x2576, 0x2577, 0x2578,
+ /* GB+81 37 98 35 */ 0x2579, 0x257A, 0x257B, 0x257C, 0x257D,
+ /* GB+81 37 99 30 */ 0x257E, 0x257F, 0x2580, 0x2590, 0x2591,
+ /* GB+81 37 99 35 */ 0x2592, 0x2596, 0x2597, 0x2598, 0x2599,
+ /* GB+81 37 9A 30 */ 0x259A, 0x259B, 0x259C, 0x259D, 0x259E,
+ /* GB+81 37 9A 35 */ 0x259F, 0x25A2, 0x25A3, 0x25A4, 0x25A5,
+ /* GB+81 37 9B 30 */ 0x25A6, 0x25A7, 0x25A8, 0x25A9, 0x25AA,
+ /* GB+81 37 9B 35 */ 0x25AB, 0x25AC, 0x25AD, 0x25AE, 0x25AF,
+ /* GB+81 37 9C 30 */ 0x25B0, 0x25B1, 0x25B4, 0x25B5, 0x25B6,
+ /* GB+81 37 9C 35 */ 0x25B7, 0x25B8, 0x25B9, 0x25BA, 0x25BB,
+ /* GB+81 37 9D 30 */ 0x25BE, 0x25BF, 0x25C0, 0x25C1, 0x25C2,
+ /* GB+81 37 9D 35 */ 0x25C3, 0x25C4, 0x25C5, 0x25C8, 0x25C9,
+ /* GB+81 37 9E 30 */ 0x25CA, 0x25CC, 0x25CD, 0x25D0, 0x25D1,
+ /* GB+81 37 9E 35 */ 0x25D2, 0x25D3, 0x25D4, 0x25D5, 0x25D6,
+ /* GB+81 37 9F 30 */ 0x25D7, 0x25D8, 0x25D9, 0x25DA, 0x25DB,
+ /* GB+81 37 9F 35 */ 0x25DC, 0x25DD, 0x25DE, 0x25DF, 0x25E0,
+ /* GB+81 37 A0 30 */ 0x25E1, 0x25E6, 0x25E7, 0x25E8, 0x25E9,
+ /* GB+81 37 A0 35 */ 0x25EA, 0x25EB, 0x25EC, 0x25ED, 0x25EE,
+ /* GB+81 37 A1 30 */ 0x25EF, 0x25F0, 0x25F1, 0x25F2, 0x25F3,
+ /* GB+81 37 A1 35 */ 0x25F4, 0x25F5, 0x25F6, 0x25F7, 0x25F8,
+ /* GB+81 37 A2 30 */ 0x25F9, 0x25FA, 0x25FB, 0x25FC, 0x25FD,
+ /* GB+81 37 A2 35 */ 0x25FE, 0x25FF, 0x2600, 0x2601, 0x2602,
+ /* GB+81 37 A3 30 */ 0x2603, 0x2604, 0x2607, 0x2608, 0x260A,
+ /* GB+81 37 A3 35 */ 0x260B, 0x260C, 0x260D, 0x260E, 0x260F,
+ /* GB+81 37 A4 30 */ 0x2610, 0x2611, 0x2612, 0x2613, 0x2614,
+ /* GB+81 37 A4 35 */ 0x2615, 0x2616, 0x2617, 0x2618, 0x2619,
+ /* GB+81 37 A5 30 */ 0x261A, 0x261B, 0x261C, 0x261D, 0x261E,
+ /* GB+81 37 A5 35 */ 0x261F, 0x2620, 0x2621, 0x2622, 0x2623,
+ /* GB+81 37 A6 30 */ 0x2624, 0x2625, 0x2626, 0x2627, 0x2628,
+ /* GB+81 37 A6 35 */ 0x2629, 0x262A, 0x262B, 0x262C, 0x262D,
+ /* GB+81 37 A7 30 */ 0x262E, 0x262F, 0x2630, 0x2631, 0x2632,
+ /* GB+81 37 A7 35 */ 0x2633, 0x2634, 0x2635, 0x2636, 0x2637,
+ /* GB+81 37 A8 30 */ 0x2638, 0x2639, 0x263A, 0x263B, 0x263C,
+ /* GB+81 37 A8 35 */ 0x263D, 0x263E, 0x263F, 0x2641,
+ /* Contiguous area: GB+81 38 FD 39 .. GB+82 30 A6 32 */
+ /* GB+81 38 FD 39 */ 0x2E82,
+ /* GB+81 38 FE 30 */ 0x2E83, 0x2E85, 0x2E86, 0x2E87, 0x2E89,
+ /* GB+81 38 FE 35 */ 0x2E8A, 0x2E8D, 0x2E8E, 0x2E8F, 0x2E90,
+ /* GB+81 39 81 30 */ 0x2E91, 0x2E92, 0x2E93, 0x2E94, 0x2E95,
+ /* GB+81 39 81 35 */ 0x2E96, 0x2E98, 0x2E99, 0x2E9A, 0x2E9B,
+ /* GB+81 39 82 30 */ 0x2E9C, 0x2E9D, 0x2E9E, 0x2E9F, 0x2EA0,
+ /* GB+81 39 82 35 */ 0x2EA1, 0x2EA2, 0x2EA3, 0x2EA4, 0x2EA5,
+ /* GB+81 39 83 30 */ 0x2EA6, 0x2EA8, 0x2EA9, 0x2EAB, 0x2EAC,
+ /* GB+81 39 83 35 */ 0x2EAD, 0x2EAF, 0x2EB0, 0x2EB1, 0x2EB2,
+ /* GB+81 39 84 30 */ 0x2EB4, 0x2EB5, 0x2EB8, 0x2EB9, 0x2EBA,
+ /* GB+81 39 84 35 */ 0x2EBC, 0x2EBD, 0x2EBE, 0x2EBF, 0x2EC0,
+ /* GB+81 39 85 30 */ 0x2EC1, 0x2EC2, 0x2EC3, 0x2EC4, 0x2EC5,
+ /* GB+81 39 85 35 */ 0x2EC6, 0x2EC7, 0x2EC8, 0x2EC9, 0x2ECB,
+ /* GB+81 39 86 30 */ 0x2ECC, 0x2ECD, 0x2ECE, 0x2ECF, 0x2ED0,
+ /* GB+81 39 86 35 */ 0x2ED1, 0x2ED2, 0x2ED3, 0x2ED4, 0x2ED5,
+ /* GB+81 39 87 30 */ 0x2ED6, 0x2ED7, 0x2ED8, 0x2ED9, 0x2EDA,
+ /* GB+81 39 87 35 */ 0x2EDB, 0x2EDC, 0x2EDD, 0x2EDE, 0x2EDF,
+ /* GB+81 39 88 30 */ 0x2EE0, 0x2EE1, 0x2EE2, 0x2EE3, 0x2EE4,
+ /* GB+81 39 88 35 */ 0x2EE5, 0x2EE6, 0x2EE7, 0x2EE8, 0x2EE9,
+ /* GB+81 39 89 30 */ 0x2EEA, 0x2EEB, 0x2EEC, 0x2EED, 0x2EEE,
+ /* GB+81 39 89 35 */ 0x2EEF, 0x2EF0, 0x2EF1, 0x2EF2, 0x2EF3,
+ /* GB+81 39 8A 30 */ 0x2EF4, 0x2EF5, 0x2EF6, 0x2EF7, 0x2EF8,
+ /* GB+81 39 8A 35 */ 0x2EF9, 0x2EFA, 0x2EFB, 0x2EFC, 0x2EFD,
+ /* GB+81 39 8B 30 */ 0x2EFE, 0x2EFF, 0x2F00, 0x2F01, 0x2F02,
+ /* GB+81 39 8B 35 */ 0x2F03, 0x2F04, 0x2F05, 0x2F06, 0x2F07,
+ /* GB+81 39 8C 30 */ 0x2F08, 0x2F09, 0x2F0A, 0x2F0B, 0x2F0C,
+ /* GB+81 39 8C 35 */ 0x2F0D, 0x2F0E, 0x2F0F, 0x2F10, 0x2F11,
+ /* GB+81 39 8D 30 */ 0x2F12, 0x2F13, 0x2F14, 0x2F15, 0x2F16,
+ /* GB+81 39 8D 35 */ 0x2F17, 0x2F18, 0x2F19, 0x2F1A, 0x2F1B,
+ /* GB+81 39 8E 30 */ 0x2F1C, 0x2F1D, 0x2F1E, 0x2F1F, 0x2F20,
+ /* GB+81 39 8E 35 */ 0x2F21, 0x2F22, 0x2F23, 0x2F24, 0x2F25,
+ /* GB+81 39 8F 30 */ 0x2F26, 0x2F27, 0x2F28, 0x2F29, 0x2F2A,
+ /* GB+81 39 8F 35 */ 0x2F2B, 0x2F2C, 0x2F2D, 0x2F2E, 0x2F2F,
+ /* GB+81 39 90 30 */ 0x2F30, 0x2F31, 0x2F32, 0x2F33, 0x2F34,
+ /* GB+81 39 90 35 */ 0x2F35, 0x2F36, 0x2F37, 0x2F38, 0x2F39,
+ /* GB+81 39 91 30 */ 0x2F3A, 0x2F3B, 0x2F3C, 0x2F3D, 0x2F3E,
+ /* GB+81 39 91 35 */ 0x2F3F, 0x2F40, 0x2F41, 0x2F42, 0x2F43,
+ /* GB+81 39 92 30 */ 0x2F44, 0x2F45, 0x2F46, 0x2F47, 0x2F48,
+ /* GB+81 39 92 35 */ 0x2F49, 0x2F4A, 0x2F4B, 0x2F4C, 0x2F4D,
+ /* GB+81 39 93 30 */ 0x2F4E, 0x2F4F, 0x2F50, 0x2F51, 0x2F52,
+ /* GB+81 39 93 35 */ 0x2F53, 0x2F54, 0x2F55, 0x2F56, 0x2F57,
+ /* GB+81 39 94 30 */ 0x2F58, 0x2F59, 0x2F5A, 0x2F5B, 0x2F5C,
+ /* GB+81 39 94 35 */ 0x2F5D, 0x2F5E, 0x2F5F, 0x2F60, 0x2F61,
+ /* GB+81 39 95 30 */ 0x2F62, 0x2F63, 0x2F64, 0x2F65, 0x2F66,
+ /* GB+81 39 95 35 */ 0x2F67, 0x2F68, 0x2F69, 0x2F6A, 0x2F6B,
+ /* GB+81 39 96 30 */ 0x2F6C, 0x2F6D, 0x2F6E, 0x2F6F, 0x2F70,
+ /* GB+81 39 96 35 */ 0x2F71, 0x2F72, 0x2F73, 0x2F74, 0x2F75,
+ /* GB+81 39 97 30 */ 0x2F76, 0x2F77, 0x2F78, 0x2F79, 0x2F7A,
+ /* GB+81 39 97 35 */ 0x2F7B, 0x2F7C, 0x2F7D, 0x2F7E, 0x2F7F,
+ /* GB+81 39 98 30 */ 0x2F80, 0x2F81, 0x2F82, 0x2F83, 0x2F84,
+ /* GB+81 39 98 35 */ 0x2F85, 0x2F86, 0x2F87, 0x2F88, 0x2F89,
+ /* GB+81 39 99 30 */ 0x2F8A, 0x2F8B, 0x2F8C, 0x2F8D, 0x2F8E,
+ /* GB+81 39 99 35 */ 0x2F8F, 0x2F90, 0x2F91, 0x2F92, 0x2F93,
+ /* GB+81 39 9A 30 */ 0x2F94, 0x2F95, 0x2F96, 0x2F97, 0x2F98,
+ /* GB+81 39 9A 35 */ 0x2F99, 0x2F9A, 0x2F9B, 0x2F9C, 0x2F9D,
+ /* GB+81 39 9B 30 */ 0x2F9E, 0x2F9F, 0x2FA0, 0x2FA1, 0x2FA2,
+ /* GB+81 39 9B 35 */ 0x2FA3, 0x2FA4, 0x2FA5, 0x2FA6, 0x2FA7,
+ /* GB+81 39 9C 30 */ 0x2FA8, 0x2FA9, 0x2FAA, 0x2FAB, 0x2FAC,
+ /* GB+81 39 9C 35 */ 0x2FAD, 0x2FAE, 0x2FAF, 0x2FB0, 0x2FB1,
+ /* GB+81 39 9D 30 */ 0x2FB2, 0x2FB3, 0x2FB4, 0x2FB5, 0x2FB6,
+ /* GB+81 39 9D 35 */ 0x2FB7, 0x2FB8, 0x2FB9, 0x2FBA, 0x2FBB,
+ /* GB+81 39 9E 30 */ 0x2FBC, 0x2FBD, 0x2FBE, 0x2FBF, 0x2FC0,
+ /* GB+81 39 9E 35 */ 0x2FC1, 0x2FC2, 0x2FC3, 0x2FC4, 0x2FC5,
+ /* GB+81 39 9F 30 */ 0x2FC6, 0x2FC7, 0x2FC8, 0x2FC9, 0x2FCA,
+ /* GB+81 39 9F 35 */ 0x2FCB, 0x2FCC, 0x2FCD, 0x2FCE, 0x2FCF,
+ /* GB+81 39 A0 30 */ 0x2FD0, 0x2FD1, 0x2FD2, 0x2FD3, 0x2FD4,
+ /* GB+81 39 A0 35 */ 0x2FD5, 0x2FD6, 0x2FD7, 0x2FD8, 0x2FD9,
+ /* GB+81 39 A1 30 */ 0x2FDA, 0x2FDB, 0x2FDC, 0x2FDD, 0x2FDE,
+ /* GB+81 39 A1 35 */ 0x2FDF, 0x2FE0, 0x2FE1, 0x2FE2, 0x2FE3,
+ /* GB+81 39 A2 30 */ 0x2FE4, 0x2FE5, 0x2FE6, 0x2FE7, 0x2FE8,
+ /* GB+81 39 A2 35 */ 0x2FE9, 0x2FEA, 0x2FEB, 0x2FEC, 0x2FED,
+ /* GB+81 39 A3 30 */ 0x2FEE, 0x2FEF, 0x2FFC, 0x2FFD, 0x2FFE,
+ /* GB+81 39 A3 35 */ 0x2FFF, 0x3004, 0x3018, 0x3019, 0x301A,
+ /* GB+81 39 A4 30 */ 0x301B, 0x301C, 0x301F, 0x3020, 0x302A,
+ /* GB+81 39 A4 35 */ 0x302B, 0x302C, 0x302D, 0x302E, 0x302F,
+ /* GB+81 39 A5 30 */ 0x3030, 0x3031, 0x3032, 0x3033, 0x3034,
+ /* GB+81 39 A5 35 */ 0x3035, 0x3036, 0x3037, 0x3038, 0x3039,
+ /* GB+81 39 A6 30 */ 0x303A, 0x303B, 0x303C, 0x303D, 0x303F,
+ /* GB+81 39 A6 35 */ 0x3040, 0x3094, 0x3095, 0x3096, 0x3097,
+ /* GB+81 39 A7 30 */ 0x3098, 0x3099, 0x309A, 0x309F, 0x30A0,
+ /* GB+81 39 A7 35 */ 0x30F7, 0x30F8, 0x30F9, 0x30FA, 0x30FB,
+ /* GB+81 39 A8 30 */ 0x30FF, 0x3100, 0x3101, 0x3102, 0x3103,
+ /* GB+81 39 A8 35 */ 0x3104, 0x312A, 0x312B, 0x312C, 0x312D,
+ /* GB+81 39 A9 30 */ 0x312E, 0x312F, 0x3130, 0x3131, 0x3132,
+ /* GB+81 39 A9 35 */ 0x3133, 0x3134, 0x3135, 0x3136, 0x3137,
+ /* GB+81 39 AA 30 */ 0x3138, 0x3139, 0x313A, 0x313B, 0x313C,
+ /* GB+81 39 AA 35 */ 0x313D, 0x313E, 0x313F, 0x3140, 0x3141,
+ /* GB+81 39 AB 30 */ 0x3142, 0x3143, 0x3144, 0x3145, 0x3146,
+ /* GB+81 39 AB 35 */ 0x3147, 0x3148, 0x3149, 0x314A, 0x314B,
+ /* GB+81 39 AC 30 */ 0x314C, 0x314D, 0x314E, 0x314F, 0x3150,
+ /* GB+81 39 AC 35 */ 0x3151, 0x3152, 0x3153, 0x3154, 0x3155,
+ /* GB+81 39 AD 30 */ 0x3156, 0x3157, 0x3158, 0x3159, 0x315A,
+ /* GB+81 39 AD 35 */ 0x315B, 0x315C, 0x315D, 0x315E, 0x315F,
+ /* GB+81 39 AE 30 */ 0x3160, 0x3161, 0x3162, 0x3163, 0x3164,
+ /* GB+81 39 AE 35 */ 0x3165, 0x3166, 0x3167, 0x3168, 0x3169,
+ /* GB+81 39 AF 30 */ 0x316A, 0x316B, 0x316C, 0x316D, 0x316E,
+ /* GB+81 39 AF 35 */ 0x316F, 0x3170, 0x3171, 0x3172, 0x3173,
+ /* GB+81 39 B0 30 */ 0x3174, 0x3175, 0x3176, 0x3177, 0x3178,
+ /* GB+81 39 B0 35 */ 0x3179, 0x317A, 0x317B, 0x317C, 0x317D,
+ /* GB+81 39 B1 30 */ 0x317E, 0x317F, 0x3180, 0x3181, 0x3182,
+ /* GB+81 39 B1 35 */ 0x3183, 0x3184, 0x3185, 0x3186, 0x3187,
+ /* GB+81 39 B2 30 */ 0x3188, 0x3189, 0x318A, 0x318B, 0x318C,
+ /* GB+81 39 B2 35 */ 0x318D, 0x318E, 0x318F, 0x3190, 0x3191,
+ /* GB+81 39 B3 30 */ 0x3192, 0x3193, 0x3194, 0x3195, 0x3196,
+ /* GB+81 39 B3 35 */ 0x3197, 0x3198, 0x3199, 0x319A, 0x319B,
+ /* GB+81 39 B4 30 */ 0x319C, 0x319D, 0x319E, 0x319F, 0x31A0,
+ /* GB+81 39 B4 35 */ 0x31A1, 0x31A2, 0x31A3, 0x31A4, 0x31A5,
+ /* GB+81 39 B5 30 */ 0x31A6, 0x31A7, 0x31A8, 0x31A9, 0x31AA,
+ /* GB+81 39 B5 35 */ 0x31AB, 0x31AC, 0x31AD, 0x31AE, 0x31AF,
+ /* GB+81 39 B6 30 */ 0x31B0, 0x31B1, 0x31B2, 0x31B3, 0x31B4,
+ /* GB+81 39 B6 35 */ 0x31B5, 0x31B6, 0x31B7, 0x31B8, 0x31B9,
+ /* GB+81 39 B7 30 */ 0x31BA, 0x31BB, 0x31BC, 0x31BD, 0x31BE,
+ /* GB+81 39 B7 35 */ 0x31BF, 0x31C0, 0x31C1, 0x31C2, 0x31C3,
+ /* GB+81 39 B8 30 */ 0x31C4, 0x31C5, 0x31C6, 0x31C7, 0x31C8,
+ /* GB+81 39 B8 35 */ 0x31C9, 0x31CA, 0x31CB, 0x31CC, 0x31CD,
+ /* GB+81 39 B9 30 */ 0x31CE, 0x31CF, 0x31D0, 0x31D1, 0x31D2,
+ /* GB+81 39 B9 35 */ 0x31D3, 0x31D4, 0x31D5, 0x31D6, 0x31D7,
+ /* GB+81 39 BA 30 */ 0x31D8, 0x31D9, 0x31DA, 0x31DB, 0x31DC,
+ /* GB+81 39 BA 35 */ 0x31DD, 0x31DE, 0x31DF, 0x31E0, 0x31E1,
+ /* GB+81 39 BB 30 */ 0x31E2, 0x31E3, 0x31E4, 0x31E5, 0x31E6,
+ /* GB+81 39 BB 35 */ 0x31E7, 0x31E8, 0x31E9, 0x31EA, 0x31EB,
+ /* GB+81 39 BC 30 */ 0x31EC, 0x31ED, 0x31EE, 0x31EF, 0x31F0,
+ /* GB+81 39 BC 35 */ 0x31F1, 0x31F2, 0x31F3, 0x31F4, 0x31F5,
+ /* GB+81 39 BD 30 */ 0x31F6, 0x31F7, 0x31F8, 0x31F9, 0x31FA,
+ /* GB+81 39 BD 35 */ 0x31FB, 0x31FC, 0x31FD, 0x31FE, 0x31FF,
+ /* GB+81 39 BE 30 */ 0x3200, 0x3201, 0x3202, 0x3203, 0x3204,
+ /* GB+81 39 BE 35 */ 0x3205, 0x3206, 0x3207, 0x3208, 0x3209,
+ /* GB+81 39 BF 30 */ 0x320A, 0x320B, 0x320C, 0x320D, 0x320E,
+ /* GB+81 39 BF 35 */ 0x320F, 0x3210, 0x3211, 0x3212, 0x3213,
+ /* GB+81 39 C0 30 */ 0x3214, 0x3215, 0x3216, 0x3217, 0x3218,
+ /* GB+81 39 C0 35 */ 0x3219, 0x321A, 0x321B, 0x321C, 0x321D,
+ /* GB+81 39 C1 30 */ 0x321E, 0x321F, 0x322A, 0x322B, 0x322C,
+ /* GB+81 39 C1 35 */ 0x322D, 0x322E, 0x322F, 0x3230, 0x3232,
+ /* GB+81 39 C2 30 */ 0x3233, 0x3234, 0x3235, 0x3236, 0x3237,
+ /* GB+81 39 C2 35 */ 0x3238, 0x3239, 0x323A, 0x323B, 0x323C,
+ /* GB+81 39 C3 30 */ 0x323D, 0x323E, 0x323F, 0x3240, 0x3241,
+ /* GB+81 39 C3 35 */ 0x3242, 0x3243, 0x3244, 0x3245, 0x3246,
+ /* GB+81 39 C4 30 */ 0x3247, 0x3248, 0x3249, 0x324A, 0x324B,
+ /* GB+81 39 C4 35 */ 0x324C, 0x324D, 0x324E, 0x324F, 0x3250,
+ /* GB+81 39 C5 30 */ 0x3251, 0x3252, 0x3253, 0x3254, 0x3255,
+ /* GB+81 39 C5 35 */ 0x3256, 0x3257, 0x3258, 0x3259, 0x325A,
+ /* GB+81 39 C6 30 */ 0x325B, 0x325C, 0x325D, 0x325E, 0x325F,
+ /* GB+81 39 C6 35 */ 0x3260, 0x3261, 0x3262, 0x3263, 0x3264,
+ /* GB+81 39 C7 30 */ 0x3265, 0x3266, 0x3267, 0x3268, 0x3269,
+ /* GB+81 39 C7 35 */ 0x326A, 0x326B, 0x326C, 0x326D, 0x326E,
+ /* GB+81 39 C8 30 */ 0x326F, 0x3270, 0x3271, 0x3272, 0x3273,
+ /* GB+81 39 C8 35 */ 0x3274, 0x3275, 0x3276, 0x3277, 0x3278,
+ /* GB+81 39 C9 30 */ 0x3279, 0x327A, 0x327B, 0x327C, 0x327D,
+ /* GB+81 39 C9 35 */ 0x327E, 0x327F, 0x3280, 0x3281, 0x3282,
+ /* GB+81 39 CA 30 */ 0x3283, 0x3284, 0x3285, 0x3286, 0x3287,
+ /* GB+81 39 CA 35 */ 0x3288, 0x3289, 0x328A, 0x328B, 0x328C,
+ /* GB+81 39 CB 30 */ 0x328D, 0x328E, 0x328F, 0x3290, 0x3291,
+ /* GB+81 39 CB 35 */ 0x3292, 0x3293, 0x3294, 0x3295, 0x3296,
+ /* GB+81 39 CC 30 */ 0x3297, 0x3298, 0x3299, 0x329A, 0x329B,
+ /* GB+81 39 CC 35 */ 0x329C, 0x329D, 0x329E, 0x329F, 0x32A0,
+ /* GB+81 39 CD 30 */ 0x32A1, 0x32A2, 0x32A4, 0x32A5, 0x32A6,
+ /* GB+81 39 CD 35 */ 0x32A7, 0x32A8, 0x32A9, 0x32AA, 0x32AB,
+ /* GB+81 39 CE 30 */ 0x32AC, 0x32AD, 0x32AE, 0x32AF, 0x32B0,
+ /* GB+81 39 CE 35 */ 0x32B1, 0x32B2, 0x32B3, 0x32B4, 0x32B5,
+ /* GB+81 39 CF 30 */ 0x32B6, 0x32B7, 0x32B8, 0x32B9, 0x32BA,
+ /* GB+81 39 CF 35 */ 0x32BB, 0x32BC, 0x32BD, 0x32BE, 0x32BF,
+ /* GB+81 39 D0 30 */ 0x32C0, 0x32C1, 0x32C2, 0x32C3, 0x32C4,
+ /* GB+81 39 D0 35 */ 0x32C5, 0x32C6, 0x32C7, 0x32C8, 0x32C9,
+ /* GB+81 39 D1 30 */ 0x32CA, 0x32CB, 0x32CC, 0x32CD, 0x32CE,
+ /* GB+81 39 D1 35 */ 0x32CF, 0x32D0, 0x32D1, 0x32D2, 0x32D3,
+ /* GB+81 39 D2 30 */ 0x32D4, 0x32D5, 0x32D6, 0x32D7, 0x32D8,
+ /* GB+81 39 D2 35 */ 0x32D9, 0x32DA, 0x32DB, 0x32DC, 0x32DD,
+ /* GB+81 39 D3 30 */ 0x32DE, 0x32DF, 0x32E0, 0x32E1, 0x32E2,
+ /* GB+81 39 D3 35 */ 0x32E3, 0x32E4, 0x32E5, 0x32E6, 0x32E7,
+ /* GB+81 39 D4 30 */ 0x32E8, 0x32E9, 0x32EA, 0x32EB, 0x32EC,
+ /* GB+81 39 D4 35 */ 0x32ED, 0x32EE, 0x32EF, 0x32F0, 0x32F1,
+ /* GB+81 39 D5 30 */ 0x32F2, 0x32F3, 0x32F4, 0x32F5, 0x32F6,
+ /* GB+81 39 D5 35 */ 0x32F7, 0x32F8, 0x32F9, 0x32FA, 0x32FB,
+ /* GB+81 39 D6 30 */ 0x32FC, 0x32FD, 0x32FE, 0x32FF, 0x3300,
+ /* GB+81 39 D6 35 */ 0x3301, 0x3302, 0x3303, 0x3304, 0x3305,
+ /* GB+81 39 D7 30 */ 0x3306, 0x3307, 0x3308, 0x3309, 0x330A,
+ /* GB+81 39 D7 35 */ 0x330B, 0x330C, 0x330D, 0x330E, 0x330F,
+ /* GB+81 39 D8 30 */ 0x3310, 0x3311, 0x3312, 0x3313, 0x3314,
+ /* GB+81 39 D8 35 */ 0x3315, 0x3316, 0x3317, 0x3318, 0x3319,
+ /* GB+81 39 D9 30 */ 0x331A, 0x331B, 0x331C, 0x331D, 0x331E,
+ /* GB+81 39 D9 35 */ 0x331F, 0x3320, 0x3321, 0x3322, 0x3323,
+ /* GB+81 39 DA 30 */ 0x3324, 0x3325, 0x3326, 0x3327, 0x3328,
+ /* GB+81 39 DA 35 */ 0x3329, 0x332A, 0x332B, 0x332C, 0x332D,
+ /* GB+81 39 DB 30 */ 0x332E, 0x332F, 0x3330, 0x3331, 0x3332,
+ /* GB+81 39 DB 35 */ 0x3333, 0x3334, 0x3335, 0x3336, 0x3337,
+ /* GB+81 39 DC 30 */ 0x3338, 0x3339, 0x333A, 0x333B, 0x333C,
+ /* GB+81 39 DC 35 */ 0x333D, 0x333E, 0x333F, 0x3340, 0x3341,
+ /* GB+81 39 DD 30 */ 0x3342, 0x3343, 0x3344, 0x3345, 0x3346,
+ /* GB+81 39 DD 35 */ 0x3347, 0x3348, 0x3349, 0x334A, 0x334B,
+ /* GB+81 39 DE 30 */ 0x334C, 0x334D, 0x334E, 0x334F, 0x3350,
+ /* GB+81 39 DE 35 */ 0x3351, 0x3352, 0x3353, 0x3354, 0x3355,
+ /* GB+81 39 DF 30 */ 0x3356, 0x3357, 0x3358, 0x3359, 0x335A,
+ /* GB+81 39 DF 35 */ 0x335B, 0x335C, 0x335D, 0x335E, 0x335F,
+ /* GB+81 39 E0 30 */ 0x3360, 0x3361, 0x3362, 0x3363, 0x3364,
+ /* GB+81 39 E0 35 */ 0x3365, 0x3366, 0x3367, 0x3368, 0x3369,
+ /* GB+81 39 E1 30 */ 0x336A, 0x336B, 0x336C, 0x336D, 0x336E,
+ /* GB+81 39 E1 35 */ 0x336F, 0x3370, 0x3371, 0x3372, 0x3373,
+ /* GB+81 39 E2 30 */ 0x3374, 0x3375, 0x3376, 0x3377, 0x3378,
+ /* GB+81 39 E2 35 */ 0x3379, 0x337A, 0x337B, 0x337C, 0x337D,
+ /* GB+81 39 E3 30 */ 0x337E, 0x337F, 0x3380, 0x3381, 0x3382,
+ /* GB+81 39 E3 35 */ 0x3383, 0x3384, 0x3385, 0x3386, 0x3387,
+ /* GB+81 39 E4 30 */ 0x3388, 0x3389, 0x338A, 0x338B, 0x338C,
+ /* GB+81 39 E4 35 */ 0x338D, 0x3390, 0x3391, 0x3392, 0x3393,
+ /* GB+81 39 E5 30 */ 0x3394, 0x3395, 0x3396, 0x3397, 0x3398,
+ /* GB+81 39 E5 35 */ 0x3399, 0x339A, 0x339B, 0x339F, 0x33A0,
+ /* GB+81 39 E6 30 */ 0x33A2, 0x33A3, 0x33A4, 0x33A5, 0x33A6,
+ /* GB+81 39 E6 35 */ 0x33A7, 0x33A8, 0x33A9, 0x33AA, 0x33AB,
+ /* GB+81 39 E7 30 */ 0x33AC, 0x33AD, 0x33AE, 0x33AF, 0x33B0,
+ /* GB+81 39 E7 35 */ 0x33B1, 0x33B2, 0x33B3, 0x33B4, 0x33B5,
+ /* GB+81 39 E8 30 */ 0x33B6, 0x33B7, 0x33B8, 0x33B9, 0x33BA,
+ /* GB+81 39 E8 35 */ 0x33BB, 0x33BC, 0x33BD, 0x33BE, 0x33BF,
+ /* GB+81 39 E9 30 */ 0x33C0, 0x33C1, 0x33C2, 0x33C3, 0x33C5,
+ /* GB+81 39 E9 35 */ 0x33C6, 0x33C7, 0x33C8, 0x33C9, 0x33CA,
+ /* GB+81 39 EA 30 */ 0x33CB, 0x33CC, 0x33CD, 0x33CF, 0x33D0,
+ /* GB+81 39 EA 35 */ 0x33D3, 0x33D4, 0x33D6, 0x33D7, 0x33D8,
+ /* GB+81 39 EB 30 */ 0x33D9, 0x33DA, 0x33DB, 0x33DC, 0x33DD,
+ /* GB+81 39 EB 35 */ 0x33DE, 0x33DF, 0x33E0, 0x33E1, 0x33E2,
+ /* GB+81 39 EC 30 */ 0x33E3, 0x33E4, 0x33E5, 0x33E6, 0x33E7,
+ /* GB+81 39 EC 35 */ 0x33E8, 0x33E9, 0x33EA, 0x33EB, 0x33EC,
+ /* GB+81 39 ED 30 */ 0x33ED, 0x33EE, 0x33EF, 0x33F0, 0x33F1,
+ /* GB+81 39 ED 35 */ 0x33F2, 0x33F3, 0x33F4, 0x33F5, 0x33F6,
+ /* GB+81 39 EE 30 */ 0x33F7, 0x33F8, 0x33F9, 0x33FA, 0x33FB,
+ /* GB+81 39 EE 35 */ 0x33FC, 0x33FD, 0x33FE, 0x33FF, 0x3400,
+ /* GB+81 39 EF 30 */ 0x3401, 0x3402, 0x3403, 0x3404, 0x3405,
+ /* GB+81 39 EF 35 */ 0x3406, 0x3407, 0x3408, 0x3409, 0x340A,
+ /* GB+81 39 F0 30 */ 0x340B, 0x340C, 0x340D, 0x340E, 0x340F,
+ /* GB+81 39 F0 35 */ 0x3410, 0x3411, 0x3412, 0x3413, 0x3414,
+ /* GB+81 39 F1 30 */ 0x3415, 0x3416, 0x3417, 0x3418, 0x3419,
+ /* GB+81 39 F1 35 */ 0x341A, 0x341B, 0x341C, 0x341D, 0x341E,
+ /* GB+81 39 F2 30 */ 0x341F, 0x3420, 0x3421, 0x3422, 0x3423,
+ /* GB+81 39 F2 35 */ 0x3424, 0x3425, 0x3426, 0x3427, 0x3428,
+ /* GB+81 39 F3 30 */ 0x3429, 0x342A, 0x342B, 0x342C, 0x342D,
+ /* GB+81 39 F3 35 */ 0x342E, 0x342F, 0x3430, 0x3431, 0x3432,
+ /* GB+81 39 F4 30 */ 0x3433, 0x3434, 0x3435, 0x3436, 0x3437,
+ /* GB+81 39 F4 35 */ 0x3438, 0x3439, 0x343A, 0x343B, 0x343C,
+ /* GB+81 39 F5 30 */ 0x343D, 0x343E, 0x343F, 0x3440, 0x3441,
+ /* GB+81 39 F5 35 */ 0x3442, 0x3443, 0x3444, 0x3445, 0x3446,
+ /* GB+81 39 F6 30 */ 0x3448, 0x3449, 0x344A, 0x344B, 0x344C,
+ /* GB+81 39 F6 35 */ 0x344D, 0x344E, 0x344F, 0x3450, 0x3451,
+ /* GB+81 39 F7 30 */ 0x3452, 0x3453, 0x3454, 0x3455, 0x3456,
+ /* GB+81 39 F7 35 */ 0x3457, 0x3458, 0x3459, 0x345A, 0x345B,
+ /* GB+81 39 F8 30 */ 0x345C, 0x345D, 0x345E, 0x345F, 0x3460,
+ /* GB+81 39 F8 35 */ 0x3461, 0x3462, 0x3463, 0x3464, 0x3465,
+ /* GB+81 39 F9 30 */ 0x3466, 0x3467, 0x3468, 0x3469, 0x346A,
+ /* GB+81 39 F9 35 */ 0x346B, 0x346C, 0x346D, 0x346E, 0x346F,
+ /* GB+81 39 FA 30 */ 0x3470, 0x3471, 0x3472, 0x3474, 0x3475,
+ /* GB+81 39 FA 35 */ 0x3476, 0x3477, 0x3478, 0x3479, 0x347A,
+ /* GB+81 39 FB 30 */ 0x347B, 0x347C, 0x347D, 0x347E, 0x347F,
+ /* GB+81 39 FB 35 */ 0x3480, 0x3481, 0x3482, 0x3483, 0x3484,
+ /* GB+81 39 FC 30 */ 0x3485, 0x3486, 0x3487, 0x3488, 0x3489,
+ /* GB+81 39 FC 35 */ 0x348A, 0x348B, 0x348C, 0x348D, 0x348E,
+ /* GB+81 39 FD 30 */ 0x348F, 0x3490, 0x3491, 0x3492, 0x3493,
+ /* GB+81 39 FD 35 */ 0x3494, 0x3495, 0x3496, 0x3497, 0x3498,
+ /* GB+81 39 FE 30 */ 0x3499, 0x349A, 0x349B, 0x349C, 0x349D,
+ /* GB+81 39 FE 35 */ 0x349E, 0x349F, 0x34A0, 0x34A1, 0x34A2,
+ /* GB+82 30 81 30 */ 0x34A3, 0x34A4, 0x34A5, 0x34A6, 0x34A7,
+ /* GB+82 30 81 35 */ 0x34A8, 0x34A9, 0x34AA, 0x34AB, 0x34AC,
+ /* GB+82 30 82 30 */ 0x34AD, 0x34AE, 0x34AF, 0x34B0, 0x34B1,
+ /* GB+82 30 82 35 */ 0x34B2, 0x34B3, 0x34B4, 0x34B5, 0x34B6,
+ /* GB+82 30 83 30 */ 0x34B7, 0x34B8, 0x34B9, 0x34BA, 0x34BB,
+ /* GB+82 30 83 35 */ 0x34BC, 0x34BD, 0x34BE, 0x34BF, 0x34C0,
+ /* GB+82 30 84 30 */ 0x34C1, 0x34C2, 0x34C3, 0x34C4, 0x34C5,
+ /* GB+82 30 84 35 */ 0x34C6, 0x34C7, 0x34C8, 0x34C9, 0x34CA,
+ /* GB+82 30 85 30 */ 0x34CB, 0x34CC, 0x34CD, 0x34CE, 0x34CF,
+ /* GB+82 30 85 35 */ 0x34D0, 0x34D1, 0x34D2, 0x34D3, 0x34D4,
+ /* GB+82 30 86 30 */ 0x34D5, 0x34D6, 0x34D7, 0x34D8, 0x34D9,
+ /* GB+82 30 86 35 */ 0x34DA, 0x34DB, 0x34DC, 0x34DD, 0x34DE,
+ /* GB+82 30 87 30 */ 0x34DF, 0x34E0, 0x34E1, 0x34E2, 0x34E3,
+ /* GB+82 30 87 35 */ 0x34E4, 0x34E5, 0x34E6, 0x34E7, 0x34E8,
+ /* GB+82 30 88 30 */ 0x34E9, 0x34EA, 0x34EB, 0x34EC, 0x34ED,
+ /* GB+82 30 88 35 */ 0x34EE, 0x34EF, 0x34F0, 0x34F1, 0x34F2,
+ /* GB+82 30 89 30 */ 0x34F3, 0x34F4, 0x34F5, 0x34F6, 0x34F7,
+ /* GB+82 30 89 35 */ 0x34F8, 0x34F9, 0x34FA, 0x34FB, 0x34FC,
+ /* GB+82 30 8A 30 */ 0x34FD, 0x34FE, 0x34FF, 0x3500, 0x3501,
+ /* GB+82 30 8A 35 */ 0x3502, 0x3503, 0x3504, 0x3505, 0x3506,
+ /* GB+82 30 8B 30 */ 0x3507, 0x3508, 0x3509, 0x350A, 0x350B,
+ /* GB+82 30 8B 35 */ 0x350C, 0x350D, 0x350E, 0x350F, 0x3510,
+ /* GB+82 30 8C 30 */ 0x3511, 0x3512, 0x3513, 0x3514, 0x3515,
+ /* GB+82 30 8C 35 */ 0x3516, 0x3517, 0x3518, 0x3519, 0x351A,
+ /* GB+82 30 8D 30 */ 0x351B, 0x351C, 0x351D, 0x351E, 0x351F,
+ /* GB+82 30 8D 35 */ 0x3520, 0x3521, 0x3522, 0x3523, 0x3524,
+ /* GB+82 30 8E 30 */ 0x3525, 0x3526, 0x3527, 0x3528, 0x3529,
+ /* GB+82 30 8E 35 */ 0x352A, 0x352B, 0x352C, 0x352D, 0x352E,
+ /* GB+82 30 8F 30 */ 0x352F, 0x3530, 0x3531, 0x3532, 0x3533,
+ /* GB+82 30 8F 35 */ 0x3534, 0x3535, 0x3536, 0x3537, 0x3538,
+ /* GB+82 30 90 30 */ 0x3539, 0x353A, 0x353B, 0x353C, 0x353D,
+ /* GB+82 30 90 35 */ 0x353E, 0x353F, 0x3540, 0x3541, 0x3542,
+ /* GB+82 30 91 30 */ 0x3543, 0x3544, 0x3545, 0x3546, 0x3547,
+ /* GB+82 30 91 35 */ 0x3548, 0x3549, 0x354A, 0x354B, 0x354C,
+ /* GB+82 30 92 30 */ 0x354D, 0x354E, 0x354F, 0x3550, 0x3551,
+ /* GB+82 30 92 35 */ 0x3552, 0x3553, 0x3554, 0x3555, 0x3556,
+ /* GB+82 30 93 30 */ 0x3557, 0x3558, 0x3559, 0x355A, 0x355B,
+ /* GB+82 30 93 35 */ 0x355C, 0x355D, 0x355E, 0x355F, 0x3560,
+ /* GB+82 30 94 30 */ 0x3561, 0x3562, 0x3563, 0x3564, 0x3565,
+ /* GB+82 30 94 35 */ 0x3566, 0x3567, 0x3568, 0x3569, 0x356A,
+ /* GB+82 30 95 30 */ 0x356B, 0x356C, 0x356D, 0x356E, 0x356F,
+ /* GB+82 30 95 35 */ 0x3570, 0x3571, 0x3572, 0x3573, 0x3574,
+ /* GB+82 30 96 30 */ 0x3575, 0x3576, 0x3577, 0x3578, 0x3579,
+ /* GB+82 30 96 35 */ 0x357A, 0x357B, 0x357C, 0x357D, 0x357E,
+ /* GB+82 30 97 30 */ 0x357F, 0x3580, 0x3581, 0x3582, 0x3583,
+ /* GB+82 30 97 35 */ 0x3584, 0x3585, 0x3586, 0x3587, 0x3588,
+ /* GB+82 30 98 30 */ 0x3589, 0x358A, 0x358B, 0x358C, 0x358D,
+ /* GB+82 30 98 35 */ 0x358E, 0x358F, 0x3590, 0x3591, 0x3592,
+ /* GB+82 30 99 30 */ 0x3593, 0x3594, 0x3595, 0x3596, 0x3597,
+ /* GB+82 30 99 35 */ 0x3598, 0x3599, 0x359A, 0x359B, 0x359C,
+ /* GB+82 30 9A 30 */ 0x359D, 0x359F, 0x35A0, 0x35A1, 0x35A2,
+ /* GB+82 30 9A 35 */ 0x35A3, 0x35A4, 0x35A5, 0x35A6, 0x35A7,
+ /* GB+82 30 9B 30 */ 0x35A8, 0x35A9, 0x35AA, 0x35AB, 0x35AC,
+ /* GB+82 30 9B 35 */ 0x35AD, 0x35AE, 0x35AF, 0x35B0, 0x35B1,
+ /* GB+82 30 9C 30 */ 0x35B2, 0x35B3, 0x35B4, 0x35B5, 0x35B6,
+ /* GB+82 30 9C 35 */ 0x35B7, 0x35B8, 0x35B9, 0x35BA, 0x35BB,
+ /* GB+82 30 9D 30 */ 0x35BC, 0x35BD, 0x35BE, 0x35BF, 0x35C0,
+ /* GB+82 30 9D 35 */ 0x35C1, 0x35C2, 0x35C3, 0x35C4, 0x35C5,
+ /* GB+82 30 9E 30 */ 0x35C6, 0x35C7, 0x35C8, 0x35C9, 0x35CA,
+ /* GB+82 30 9E 35 */ 0x35CB, 0x35CC, 0x35CD, 0x35CE, 0x35CF,
+ /* GB+82 30 9F 30 */ 0x35D0, 0x35D1, 0x35D2, 0x35D3, 0x35D4,
+ /* GB+82 30 9F 35 */ 0x35D5, 0x35D6, 0x35D7, 0x35D8, 0x35D9,
+ /* GB+82 30 A0 30 */ 0x35DA, 0x35DB, 0x35DC, 0x35DD, 0x35DE,
+ /* GB+82 30 A0 35 */ 0x35DF, 0x35E0, 0x35E1, 0x35E2, 0x35E3,
+ /* GB+82 30 A1 30 */ 0x35E4, 0x35E5, 0x35E6, 0x35E7, 0x35E8,
+ /* GB+82 30 A1 35 */ 0x35E9, 0x35EA, 0x35EB, 0x35EC, 0x35ED,
+ /* GB+82 30 A2 30 */ 0x35EE, 0x35EF, 0x35F0, 0x35F1, 0x35F2,
+ /* GB+82 30 A2 35 */ 0x35F3, 0x35F4, 0x35F5, 0x35F6, 0x35F7,
+ /* GB+82 30 A3 30 */ 0x35F8, 0x35F9, 0x35FA, 0x35FB, 0x35FC,
+ /* GB+82 30 A3 35 */ 0x35FD, 0x35FE, 0x35FF, 0x3600, 0x3601,
+ /* GB+82 30 A4 30 */ 0x3602, 0x3603, 0x3604, 0x3605, 0x3606,
+ /* GB+82 30 A4 35 */ 0x3607, 0x3608, 0x3609, 0x360A, 0x360B,
+ /* GB+82 30 A5 30 */ 0x360C, 0x360D, 0x360F, 0x3610, 0x3611,
+ /* GB+82 30 A5 35 */ 0x3612, 0x3613, 0x3614, 0x3615, 0x3616,
+ /* GB+82 30 A6 30 */ 0x3617, 0x3618, 0x3619,
+ /* Contiguous area: GB+82 30 F2 38 .. GB+82 31 D4 37 */
+ /* GB+82 30 F2 38 */ 0x3919, 0x391A,
+ /* GB+82 30 F3 30 */ 0x391B, 0x391C, 0x391D, 0x391E, 0x391F,
+ /* GB+82 30 F3 35 */ 0x3920, 0x3921, 0x3922, 0x3923, 0x3924,
+ /* GB+82 30 F4 30 */ 0x3925, 0x3926, 0x3927, 0x3928, 0x3929,
+ /* GB+82 30 F4 35 */ 0x392A, 0x392B, 0x392C, 0x392D, 0x392E,
+ /* GB+82 30 F5 30 */ 0x392F, 0x3930, 0x3931, 0x3932, 0x3933,
+ /* GB+82 30 F5 35 */ 0x3934, 0x3935, 0x3936, 0x3937, 0x3938,
+ /* GB+82 30 F6 30 */ 0x3939, 0x393A, 0x393B, 0x393C, 0x393D,
+ /* GB+82 30 F6 35 */ 0x393E, 0x393F, 0x3940, 0x3941, 0x3942,
+ /* GB+82 30 F7 30 */ 0x3943, 0x3944, 0x3945, 0x3946, 0x3947,
+ /* GB+82 30 F7 35 */ 0x3948, 0x3949, 0x394A, 0x394B, 0x394C,
+ /* GB+82 30 F8 30 */ 0x394D, 0x394E, 0x394F, 0x3950, 0x3951,
+ /* GB+82 30 F8 35 */ 0x3952, 0x3953, 0x3954, 0x3955, 0x3956,
+ /* GB+82 30 F9 30 */ 0x3957, 0x3958, 0x3959, 0x395A, 0x395B,
+ /* GB+82 30 F9 35 */ 0x395C, 0x395D, 0x395E, 0x395F, 0x3960,
+ /* GB+82 30 FA 30 */ 0x3961, 0x3962, 0x3963, 0x3964, 0x3965,
+ /* GB+82 30 FA 35 */ 0x3966, 0x3967, 0x3968, 0x3969, 0x396A,
+ /* GB+82 30 FB 30 */ 0x396B, 0x396C, 0x396D, 0x396F, 0x3970,
+ /* GB+82 30 FB 35 */ 0x3971, 0x3972, 0x3973, 0x3974, 0x3975,
+ /* GB+82 30 FC 30 */ 0x3976, 0x3977, 0x3978, 0x3979, 0x397A,
+ /* GB+82 30 FC 35 */ 0x397B, 0x397C, 0x397D, 0x397E, 0x397F,
+ /* GB+82 30 FD 30 */ 0x3980, 0x3981, 0x3982, 0x3983, 0x3984,
+ /* GB+82 30 FD 35 */ 0x3985, 0x3986, 0x3987, 0x3988, 0x3989,
+ /* GB+82 30 FE 30 */ 0x398A, 0x398B, 0x398C, 0x398D, 0x398E,
+ /* GB+82 30 FE 35 */ 0x398F, 0x3990, 0x3991, 0x3992, 0x3993,
+ /* GB+82 31 81 30 */ 0x3994, 0x3995, 0x3996, 0x3997, 0x3998,
+ /* GB+82 31 81 35 */ 0x3999, 0x399A, 0x399B, 0x399C, 0x399D,
+ /* GB+82 31 82 30 */ 0x399E, 0x399F, 0x39A0, 0x39A1, 0x39A2,
+ /* GB+82 31 82 35 */ 0x39A3, 0x39A4, 0x39A5, 0x39A6, 0x39A7,
+ /* GB+82 31 83 30 */ 0x39A8, 0x39A9, 0x39AA, 0x39AB, 0x39AC,
+ /* GB+82 31 83 35 */ 0x39AD, 0x39AE, 0x39AF, 0x39B0, 0x39B1,
+ /* GB+82 31 84 30 */ 0x39B2, 0x39B3, 0x39B4, 0x39B5, 0x39B6,
+ /* GB+82 31 84 35 */ 0x39B7, 0x39B8, 0x39B9, 0x39BA, 0x39BB,
+ /* GB+82 31 85 30 */ 0x39BC, 0x39BD, 0x39BE, 0x39BF, 0x39C0,
+ /* GB+82 31 85 35 */ 0x39C1, 0x39C2, 0x39C3, 0x39C4, 0x39C5,
+ /* GB+82 31 86 30 */ 0x39C6, 0x39C7, 0x39C8, 0x39C9, 0x39CA,
+ /* GB+82 31 86 35 */ 0x39CB, 0x39CC, 0x39CD, 0x39CE, 0x39D1,
+ /* GB+82 31 87 30 */ 0x39D2, 0x39D3, 0x39D4, 0x39D5, 0x39D6,
+ /* GB+82 31 87 35 */ 0x39D7, 0x39D8, 0x39D9, 0x39DA, 0x39DB,
+ /* GB+82 31 88 30 */ 0x39DC, 0x39DD, 0x39DE, 0x39E0, 0x39E1,
+ /* GB+82 31 88 35 */ 0x39E2, 0x39E3, 0x39E4, 0x39E5, 0x39E6,
+ /* GB+82 31 89 30 */ 0x39E7, 0x39E8, 0x39E9, 0x39EA, 0x39EB,
+ /* GB+82 31 89 35 */ 0x39EC, 0x39ED, 0x39EE, 0x39EF, 0x39F0,
+ /* GB+82 31 8A 30 */ 0x39F1, 0x39F2, 0x39F3, 0x39F4, 0x39F5,
+ /* GB+82 31 8A 35 */ 0x39F6, 0x39F7, 0x39F8, 0x39F9, 0x39FA,
+ /* GB+82 31 8B 30 */ 0x39FB, 0x39FC, 0x39FD, 0x39FE, 0x39FF,
+ /* GB+82 31 8B 35 */ 0x3A00, 0x3A01, 0x3A02, 0x3A03, 0x3A04,
+ /* GB+82 31 8C 30 */ 0x3A05, 0x3A06, 0x3A07, 0x3A08, 0x3A09,
+ /* GB+82 31 8C 35 */ 0x3A0A, 0x3A0B, 0x3A0C, 0x3A0D, 0x3A0E,
+ /* GB+82 31 8D 30 */ 0x3A0F, 0x3A10, 0x3A11, 0x3A12, 0x3A13,
+ /* GB+82 31 8D 35 */ 0x3A14, 0x3A15, 0x3A16, 0x3A17, 0x3A18,
+ /* GB+82 31 8E 30 */ 0x3A19, 0x3A1A, 0x3A1B, 0x3A1C, 0x3A1D,
+ /* GB+82 31 8E 35 */ 0x3A1E, 0x3A1F, 0x3A20, 0x3A21, 0x3A22,
+ /* GB+82 31 8F 30 */ 0x3A23, 0x3A24, 0x3A25, 0x3A26, 0x3A27,
+ /* GB+82 31 8F 35 */ 0x3A28, 0x3A29, 0x3A2A, 0x3A2B, 0x3A2C,
+ /* GB+82 31 90 30 */ 0x3A2D, 0x3A2E, 0x3A2F, 0x3A30, 0x3A31,
+ /* GB+82 31 90 35 */ 0x3A32, 0x3A33, 0x3A34, 0x3A35, 0x3A36,
+ /* GB+82 31 91 30 */ 0x3A37, 0x3A38, 0x3A39, 0x3A3A, 0x3A3B,
+ /* GB+82 31 91 35 */ 0x3A3C, 0x3A3D, 0x3A3E, 0x3A3F, 0x3A40,
+ /* GB+82 31 92 30 */ 0x3A41, 0x3A42, 0x3A43, 0x3A44, 0x3A45,
+ /* GB+82 31 92 35 */ 0x3A46, 0x3A47, 0x3A48, 0x3A49, 0x3A4A,
+ /* GB+82 31 93 30 */ 0x3A4B, 0x3A4C, 0x3A4D, 0x3A4E, 0x3A4F,
+ /* GB+82 31 93 35 */ 0x3A50, 0x3A51, 0x3A52, 0x3A53, 0x3A54,
+ /* GB+82 31 94 30 */ 0x3A55, 0x3A56, 0x3A57, 0x3A58, 0x3A59,
+ /* GB+82 31 94 35 */ 0x3A5A, 0x3A5B, 0x3A5C, 0x3A5D, 0x3A5E,
+ /* GB+82 31 95 30 */ 0x3A5F, 0x3A60, 0x3A61, 0x3A62, 0x3A63,
+ /* GB+82 31 95 35 */ 0x3A64, 0x3A65, 0x3A66, 0x3A67, 0x3A68,
+ /* GB+82 31 96 30 */ 0x3A69, 0x3A6A, 0x3A6B, 0x3A6C, 0x3A6D,
+ /* GB+82 31 96 35 */ 0x3A6E, 0x3A6F, 0x3A70, 0x3A71, 0x3A72,
+ /* GB+82 31 97 30 */ 0x3A74, 0x3A75, 0x3A76, 0x3A77, 0x3A78,
+ /* GB+82 31 97 35 */ 0x3A79, 0x3A7A, 0x3A7B, 0x3A7C, 0x3A7D,
+ /* GB+82 31 98 30 */ 0x3A7E, 0x3A7F, 0x3A80, 0x3A81, 0x3A82,
+ /* GB+82 31 98 35 */ 0x3A83, 0x3A84, 0x3A85, 0x3A86, 0x3A87,
+ /* GB+82 31 99 30 */ 0x3A88, 0x3A89, 0x3A8A, 0x3A8B, 0x3A8C,
+ /* GB+82 31 99 35 */ 0x3A8D, 0x3A8E, 0x3A8F, 0x3A90, 0x3A91,
+ /* GB+82 31 9A 30 */ 0x3A92, 0x3A93, 0x3A94, 0x3A95, 0x3A96,
+ /* GB+82 31 9A 35 */ 0x3A97, 0x3A98, 0x3A99, 0x3A9A, 0x3A9B,
+ /* GB+82 31 9B 30 */ 0x3A9C, 0x3A9D, 0x3A9E, 0x3A9F, 0x3AA0,
+ /* GB+82 31 9B 35 */ 0x3AA1, 0x3AA2, 0x3AA3, 0x3AA4, 0x3AA5,
+ /* GB+82 31 9C 30 */ 0x3AA6, 0x3AA7, 0x3AA8, 0x3AA9, 0x3AAA,
+ /* GB+82 31 9C 35 */ 0x3AAB, 0x3AAC, 0x3AAD, 0x3AAE, 0x3AAF,
+ /* GB+82 31 9D 30 */ 0x3AB0, 0x3AB1, 0x3AB2, 0x3AB3, 0x3AB4,
+ /* GB+82 31 9D 35 */ 0x3AB5, 0x3AB6, 0x3AB7, 0x3AB8, 0x3AB9,
+ /* GB+82 31 9E 30 */ 0x3ABA, 0x3ABB, 0x3ABC, 0x3ABD, 0x3ABE,
+ /* GB+82 31 9E 35 */ 0x3ABF, 0x3AC0, 0x3AC1, 0x3AC2, 0x3AC3,
+ /* GB+82 31 9F 30 */ 0x3AC4, 0x3AC5, 0x3AC6, 0x3AC7, 0x3AC8,
+ /* GB+82 31 9F 35 */ 0x3AC9, 0x3ACA, 0x3ACB, 0x3ACC, 0x3ACD,
+ /* GB+82 31 A0 30 */ 0x3ACE, 0x3ACF, 0x3AD0, 0x3AD1, 0x3AD2,
+ /* GB+82 31 A0 35 */ 0x3AD3, 0x3AD4, 0x3AD5, 0x3AD6, 0x3AD7,
+ /* GB+82 31 A1 30 */ 0x3AD8, 0x3AD9, 0x3ADA, 0x3ADB, 0x3ADC,
+ /* GB+82 31 A1 35 */ 0x3ADD, 0x3ADE, 0x3ADF, 0x3AE0, 0x3AE1,
+ /* GB+82 31 A2 30 */ 0x3AE2, 0x3AE3, 0x3AE4, 0x3AE5, 0x3AE6,
+ /* GB+82 31 A2 35 */ 0x3AE7, 0x3AE8, 0x3AE9, 0x3AEA, 0x3AEB,
+ /* GB+82 31 A3 30 */ 0x3AEC, 0x3AED, 0x3AEE, 0x3AEF, 0x3AF0,
+ /* GB+82 31 A3 35 */ 0x3AF1, 0x3AF2, 0x3AF3, 0x3AF4, 0x3AF5,
+ /* GB+82 31 A4 30 */ 0x3AF6, 0x3AF7, 0x3AF8, 0x3AF9, 0x3AFA,
+ /* GB+82 31 A4 35 */ 0x3AFB, 0x3AFC, 0x3AFD, 0x3AFE, 0x3AFF,
+ /* GB+82 31 A5 30 */ 0x3B00, 0x3B01, 0x3B02, 0x3B03, 0x3B04,
+ /* GB+82 31 A5 35 */ 0x3B05, 0x3B06, 0x3B07, 0x3B08, 0x3B09,
+ /* GB+82 31 A6 30 */ 0x3B0A, 0x3B0B, 0x3B0C, 0x3B0D, 0x3B0E,
+ /* GB+82 31 A6 35 */ 0x3B0F, 0x3B10, 0x3B11, 0x3B12, 0x3B13,
+ /* GB+82 31 A7 30 */ 0x3B14, 0x3B15, 0x3B16, 0x3B17, 0x3B18,
+ /* GB+82 31 A7 35 */ 0x3B19, 0x3B1A, 0x3B1B, 0x3B1C, 0x3B1D,
+ /* GB+82 31 A8 30 */ 0x3B1E, 0x3B1F, 0x3B20, 0x3B21, 0x3B22,
+ /* GB+82 31 A8 35 */ 0x3B23, 0x3B24, 0x3B25, 0x3B26, 0x3B27,
+ /* GB+82 31 A9 30 */ 0x3B28, 0x3B29, 0x3B2A, 0x3B2B, 0x3B2C,
+ /* GB+82 31 A9 35 */ 0x3B2D, 0x3B2E, 0x3B2F, 0x3B30, 0x3B31,
+ /* GB+82 31 AA 30 */ 0x3B32, 0x3B33, 0x3B34, 0x3B35, 0x3B36,
+ /* GB+82 31 AA 35 */ 0x3B37, 0x3B38, 0x3B39, 0x3B3A, 0x3B3B,
+ /* GB+82 31 AB 30 */ 0x3B3C, 0x3B3D, 0x3B3E, 0x3B3F, 0x3B40,
+ /* GB+82 31 AB 35 */ 0x3B41, 0x3B42, 0x3B43, 0x3B44, 0x3B45,
+ /* GB+82 31 AC 30 */ 0x3B46, 0x3B47, 0x3B48, 0x3B49, 0x3B4A,
+ /* GB+82 31 AC 35 */ 0x3B4B, 0x3B4C, 0x3B4D, 0x3B4F, 0x3B50,
+ /* GB+82 31 AD 30 */ 0x3B51, 0x3B52, 0x3B53, 0x3B54, 0x3B55,
+ /* GB+82 31 AD 35 */ 0x3B56, 0x3B57, 0x3B58, 0x3B59, 0x3B5A,
+ /* GB+82 31 AE 30 */ 0x3B5B, 0x3B5C, 0x3B5D, 0x3B5E, 0x3B5F,
+ /* GB+82 31 AE 35 */ 0x3B60, 0x3B61, 0x3B62, 0x3B63, 0x3B64,
+ /* GB+82 31 AF 30 */ 0x3B65, 0x3B66, 0x3B67, 0x3B68, 0x3B69,
+ /* GB+82 31 AF 35 */ 0x3B6A, 0x3B6B, 0x3B6C, 0x3B6D, 0x3B6E,
+ /* GB+82 31 B0 30 */ 0x3B6F, 0x3B70, 0x3B71, 0x3B72, 0x3B73,
+ /* GB+82 31 B0 35 */ 0x3B74, 0x3B75, 0x3B76, 0x3B77, 0x3B78,
+ /* GB+82 31 B1 30 */ 0x3B79, 0x3B7A, 0x3B7B, 0x3B7C, 0x3B7D,
+ /* GB+82 31 B1 35 */ 0x3B7E, 0x3B7F, 0x3B80, 0x3B81, 0x3B82,
+ /* GB+82 31 B2 30 */ 0x3B83, 0x3B84, 0x3B85, 0x3B86, 0x3B87,
+ /* GB+82 31 B2 35 */ 0x3B88, 0x3B89, 0x3B8A, 0x3B8B, 0x3B8C,
+ /* GB+82 31 B3 30 */ 0x3B8D, 0x3B8E, 0x3B8F, 0x3B90, 0x3B91,
+ /* GB+82 31 B3 35 */ 0x3B92, 0x3B93, 0x3B94, 0x3B95, 0x3B96,
+ /* GB+82 31 B4 30 */ 0x3B97, 0x3B98, 0x3B99, 0x3B9A, 0x3B9B,
+ /* GB+82 31 B4 35 */ 0x3B9C, 0x3B9D, 0x3B9E, 0x3B9F, 0x3BA0,
+ /* GB+82 31 B5 30 */ 0x3BA1, 0x3BA2, 0x3BA3, 0x3BA4, 0x3BA5,
+ /* GB+82 31 B5 35 */ 0x3BA6, 0x3BA7, 0x3BA8, 0x3BA9, 0x3BAA,
+ /* GB+82 31 B6 30 */ 0x3BAB, 0x3BAC, 0x3BAD, 0x3BAE, 0x3BAF,
+ /* GB+82 31 B6 35 */ 0x3BB0, 0x3BB1, 0x3BB2, 0x3BB3, 0x3BB4,
+ /* GB+82 31 B7 30 */ 0x3BB5, 0x3BB6, 0x3BB7, 0x3BB8, 0x3BB9,
+ /* GB+82 31 B7 35 */ 0x3BBA, 0x3BBB, 0x3BBC, 0x3BBD, 0x3BBE,
+ /* GB+82 31 B8 30 */ 0x3BBF, 0x3BC0, 0x3BC1, 0x3BC2, 0x3BC3,
+ /* GB+82 31 B8 35 */ 0x3BC4, 0x3BC5, 0x3BC6, 0x3BC7, 0x3BC8,
+ /* GB+82 31 B9 30 */ 0x3BC9, 0x3BCA, 0x3BCB, 0x3BCC, 0x3BCD,
+ /* GB+82 31 B9 35 */ 0x3BCE, 0x3BCF, 0x3BD0, 0x3BD1, 0x3BD2,
+ /* GB+82 31 BA 30 */ 0x3BD3, 0x3BD4, 0x3BD5, 0x3BD6, 0x3BD7,
+ /* GB+82 31 BA 35 */ 0x3BD8, 0x3BD9, 0x3BDA, 0x3BDB, 0x3BDC,
+ /* GB+82 31 BB 30 */ 0x3BDD, 0x3BDE, 0x3BDF, 0x3BE0, 0x3BE1,
+ /* GB+82 31 BB 35 */ 0x3BE2, 0x3BE3, 0x3BE4, 0x3BE5, 0x3BE6,
+ /* GB+82 31 BC 30 */ 0x3BE7, 0x3BE8, 0x3BE9, 0x3BEA, 0x3BEB,
+ /* GB+82 31 BC 35 */ 0x3BEC, 0x3BED, 0x3BEE, 0x3BEF, 0x3BF0,
+ /* GB+82 31 BD 30 */ 0x3BF1, 0x3BF2, 0x3BF3, 0x3BF4, 0x3BF5,
+ /* GB+82 31 BD 35 */ 0x3BF6, 0x3BF7, 0x3BF8, 0x3BF9, 0x3BFA,
+ /* GB+82 31 BE 30 */ 0x3BFB, 0x3BFC, 0x3BFD, 0x3BFE, 0x3BFF,
+ /* GB+82 31 BE 35 */ 0x3C00, 0x3C01, 0x3C02, 0x3C03, 0x3C04,
+ /* GB+82 31 BF 30 */ 0x3C05, 0x3C06, 0x3C07, 0x3C08, 0x3C09,
+ /* GB+82 31 BF 35 */ 0x3C0A, 0x3C0B, 0x3C0C, 0x3C0D, 0x3C0E,
+ /* GB+82 31 C0 30 */ 0x3C0F, 0x3C10, 0x3C11, 0x3C12, 0x3C13,
+ /* GB+82 31 C0 35 */ 0x3C14, 0x3C15, 0x3C16, 0x3C17, 0x3C18,
+ /* GB+82 31 C1 30 */ 0x3C19, 0x3C1A, 0x3C1B, 0x3C1C, 0x3C1D,
+ /* GB+82 31 C1 35 */ 0x3C1E, 0x3C1F, 0x3C20, 0x3C21, 0x3C22,
+ /* GB+82 31 C2 30 */ 0x3C23, 0x3C24, 0x3C25, 0x3C26, 0x3C27,
+ /* GB+82 31 C2 35 */ 0x3C28, 0x3C29, 0x3C2A, 0x3C2B, 0x3C2C,
+ /* GB+82 31 C3 30 */ 0x3C2D, 0x3C2E, 0x3C2F, 0x3C30, 0x3C31,
+ /* GB+82 31 C3 35 */ 0x3C32, 0x3C33, 0x3C34, 0x3C35, 0x3C36,
+ /* GB+82 31 C4 30 */ 0x3C37, 0x3C38, 0x3C39, 0x3C3A, 0x3C3B,
+ /* GB+82 31 C4 35 */ 0x3C3C, 0x3C3D, 0x3C3E, 0x3C3F, 0x3C40,
+ /* GB+82 31 C5 30 */ 0x3C41, 0x3C42, 0x3C43, 0x3C44, 0x3C45,
+ /* GB+82 31 C5 35 */ 0x3C46, 0x3C47, 0x3C48, 0x3C49, 0x3C4A,
+ /* GB+82 31 C6 30 */ 0x3C4B, 0x3C4C, 0x3C4D, 0x3C4E, 0x3C4F,
+ /* GB+82 31 C6 35 */ 0x3C50, 0x3C51, 0x3C52, 0x3C53, 0x3C54,
+ /* GB+82 31 C7 30 */ 0x3C55, 0x3C56, 0x3C57, 0x3C58, 0x3C59,
+ /* GB+82 31 C7 35 */ 0x3C5A, 0x3C5B, 0x3C5C, 0x3C5D, 0x3C5E,
+ /* GB+82 31 C8 30 */ 0x3C5F, 0x3C60, 0x3C61, 0x3C62, 0x3C63,
+ /* GB+82 31 C8 35 */ 0x3C64, 0x3C65, 0x3C66, 0x3C67, 0x3C68,
+ /* GB+82 31 C9 30 */ 0x3C69, 0x3C6A, 0x3C6B, 0x3C6C, 0x3C6D,
+ /* GB+82 31 C9 35 */ 0x3C6F, 0x3C70, 0x3C71, 0x3C72, 0x3C73,
+ /* GB+82 31 CA 30 */ 0x3C74, 0x3C75, 0x3C76, 0x3C77, 0x3C78,
+ /* GB+82 31 CA 35 */ 0x3C79, 0x3C7A, 0x3C7B, 0x3C7C, 0x3C7D,
+ /* GB+82 31 CB 30 */ 0x3C7E, 0x3C7F, 0x3C80, 0x3C81, 0x3C82,
+ /* GB+82 31 CB 35 */ 0x3C83, 0x3C84, 0x3C85, 0x3C86, 0x3C87,
+ /* GB+82 31 CC 30 */ 0x3C88, 0x3C89, 0x3C8A, 0x3C8B, 0x3C8C,
+ /* GB+82 31 CC 35 */ 0x3C8D, 0x3C8E, 0x3C8F, 0x3C90, 0x3C91,
+ /* GB+82 31 CD 30 */ 0x3C92, 0x3C93, 0x3C94, 0x3C95, 0x3C96,
+ /* GB+82 31 CD 35 */ 0x3C97, 0x3C98, 0x3C99, 0x3C9A, 0x3C9B,
+ /* GB+82 31 CE 30 */ 0x3C9C, 0x3C9D, 0x3C9E, 0x3C9F, 0x3CA0,
+ /* GB+82 31 CE 35 */ 0x3CA1, 0x3CA2, 0x3CA3, 0x3CA4, 0x3CA5,
+ /* GB+82 31 CF 30 */ 0x3CA6, 0x3CA7, 0x3CA8, 0x3CA9, 0x3CAA,
+ /* GB+82 31 CF 35 */ 0x3CAB, 0x3CAC, 0x3CAD, 0x3CAE, 0x3CAF,
+ /* GB+82 31 D0 30 */ 0x3CB0, 0x3CB1, 0x3CB2, 0x3CB3, 0x3CB4,
+ /* GB+82 31 D0 35 */ 0x3CB5, 0x3CB6, 0x3CB7, 0x3CB8, 0x3CB9,
+ /* GB+82 31 D1 30 */ 0x3CBA, 0x3CBB, 0x3CBC, 0x3CBD, 0x3CBE,
+ /* GB+82 31 D1 35 */ 0x3CBF, 0x3CC0, 0x3CC1, 0x3CC2, 0x3CC3,
+ /* GB+82 31 D2 30 */ 0x3CC4, 0x3CC5, 0x3CC6, 0x3CC7, 0x3CC8,
+ /* GB+82 31 D2 35 */ 0x3CC9, 0x3CCA, 0x3CCB, 0x3CCC, 0x3CCD,
+ /* GB+82 31 D3 30 */ 0x3CCE, 0x3CCF, 0x3CD0, 0x3CD1, 0x3CD2,
+ /* GB+82 31 D3 35 */ 0x3CD3, 0x3CD4, 0x3CD5, 0x3CD6, 0x3CD7,
+ /* GB+82 31 D4 30 */ 0x3CD8, 0x3CD9, 0x3CDA, 0x3CDB, 0x3CDC,
+ /* GB+82 31 D4 35 */ 0x3CDD, 0x3CDE, 0x3CDF,
+ /* Contiguous area: GB+82 32 AF 33 .. GB+82 32 C9 36 */
+ /* GB+82 32 AF 33 */ 0x4057, 0x4058,
+ /* GB+82 32 AF 35 */ 0x4059, 0x405A, 0x405B, 0x405C, 0x405D,
+ /* GB+82 32 B0 30 */ 0x405E, 0x405F, 0x4060, 0x4061, 0x4062,
+ /* GB+82 32 B0 35 */ 0x4063, 0x4064, 0x4065, 0x4066, 0x4067,
+ /* GB+82 32 B1 30 */ 0x4068, 0x4069, 0x406A, 0x406B, 0x406C,
+ /* GB+82 32 B1 35 */ 0x406D, 0x406E, 0x406F, 0x4070, 0x4071,
+ /* GB+82 32 B2 30 */ 0x4072, 0x4073, 0x4074, 0x4075, 0x4076,
+ /* GB+82 32 B2 35 */ 0x4077, 0x4078, 0x4079, 0x407A, 0x407B,
+ /* GB+82 32 B3 30 */ 0x407C, 0x407D, 0x407E, 0x407F, 0x4080,
+ /* GB+82 32 B3 35 */ 0x4081, 0x4082, 0x4083, 0x4084, 0x4085,
+ /* GB+82 32 B4 30 */ 0x4086, 0x4087, 0x4088, 0x4089, 0x408A,
+ /* GB+82 32 B4 35 */ 0x408B, 0x408C, 0x408D, 0x408E, 0x408F,
+ /* GB+82 32 B5 30 */ 0x4090, 0x4091, 0x4092, 0x4093, 0x4094,
+ /* GB+82 32 B5 35 */ 0x4095, 0x4096, 0x4097, 0x4098, 0x4099,
+ /* GB+82 32 B6 30 */ 0x409A, 0x409B, 0x409C, 0x409D, 0x409E,
+ /* GB+82 32 B6 35 */ 0x409F, 0x40A0, 0x40A1, 0x40A2, 0x40A3,
+ /* GB+82 32 B7 30 */ 0x40A4, 0x40A5, 0x40A6, 0x40A7, 0x40A8,
+ /* GB+82 32 B7 35 */ 0x40A9, 0x40AA, 0x40AB, 0x40AC, 0x40AD,
+ /* GB+82 32 B8 30 */ 0x40AE, 0x40AF, 0x40B0, 0x40B1, 0x40B2,
+ /* GB+82 32 B8 35 */ 0x40B3, 0x40B4, 0x40B5, 0x40B6, 0x40B7,
+ /* GB+82 32 B9 30 */ 0x40B8, 0x40B9, 0x40BA, 0x40BB, 0x40BC,
+ /* GB+82 32 B9 35 */ 0x40BD, 0x40BE, 0x40BF, 0x40C0, 0x40C1,
+ /* GB+82 32 BA 30 */ 0x40C2, 0x40C3, 0x40C4, 0x40C5, 0x40C6,
+ /* GB+82 32 BA 35 */ 0x40C7, 0x40C8, 0x40C9, 0x40CA, 0x40CB,
+ /* GB+82 32 BB 30 */ 0x40CC, 0x40CD, 0x40CE, 0x40CF, 0x40D0,
+ /* GB+82 32 BB 35 */ 0x40D1, 0x40D2, 0x40D3, 0x40D4, 0x40D5,
+ /* GB+82 32 BC 30 */ 0x40D6, 0x40D7, 0x40D8, 0x40D9, 0x40DA,
+ /* GB+82 32 BC 35 */ 0x40DB, 0x40DC, 0x40DD, 0x40DE, 0x40DF,
+ /* GB+82 32 BD 30 */ 0x40E0, 0x40E1, 0x40E2, 0x40E3, 0x40E4,
+ /* GB+82 32 BD 35 */ 0x40E5, 0x40E6, 0x40E7, 0x40E8, 0x40E9,
+ /* GB+82 32 BE 30 */ 0x40EA, 0x40EB, 0x40EC, 0x40ED, 0x40EE,
+ /* GB+82 32 BE 35 */ 0x40EF, 0x40F0, 0x40F1, 0x40F2, 0x40F3,
+ /* GB+82 32 BF 30 */ 0x40F4, 0x40F5, 0x40F6, 0x40F7, 0x40F8,
+ /* GB+82 32 BF 35 */ 0x40F9, 0x40FA, 0x40FB, 0x40FC, 0x40FD,
+ /* GB+82 32 C0 30 */ 0x40FE, 0x40FF, 0x4100, 0x4101, 0x4102,
+ /* GB+82 32 C0 35 */ 0x4103, 0x4104, 0x4105, 0x4106, 0x4107,
+ /* GB+82 32 C1 30 */ 0x4108, 0x4109, 0x410A, 0x410B, 0x410C,
+ /* GB+82 32 C1 35 */ 0x410D, 0x410E, 0x410F, 0x4110, 0x4111,
+ /* GB+82 32 C2 30 */ 0x4112, 0x4113, 0x4114, 0x4115, 0x4116,
+ /* GB+82 32 C2 35 */ 0x4117, 0x4118, 0x4119, 0x411A, 0x411B,
+ /* GB+82 32 C3 30 */ 0x411C, 0x411D, 0x411E, 0x411F, 0x4120,
+ /* GB+82 32 C3 35 */ 0x4121, 0x4122, 0x4123, 0x4124, 0x4125,
+ /* GB+82 32 C4 30 */ 0x4126, 0x4127, 0x4128, 0x4129, 0x412A,
+ /* GB+82 32 C4 35 */ 0x412B, 0x412C, 0x412D, 0x412E, 0x412F,
+ /* GB+82 32 C5 30 */ 0x4130, 0x4131, 0x4132, 0x4133, 0x4134,
+ /* GB+82 32 C5 35 */ 0x4135, 0x4136, 0x4137, 0x4138, 0x4139,
+ /* GB+82 32 C6 30 */ 0x413A, 0x413B, 0x413C, 0x413D, 0x413E,
+ /* GB+82 32 C6 35 */ 0x413F, 0x4140, 0x4141, 0x4142, 0x4143,
+ /* GB+82 32 C7 30 */ 0x4144, 0x4145, 0x4146, 0x4147, 0x4148,
+ /* GB+82 32 C7 35 */ 0x4149, 0x414A, 0x414B, 0x414C, 0x414D,
+ /* GB+82 32 C8 30 */ 0x414E, 0x414F, 0x4150, 0x4151, 0x4152,
+ /* GB+82 32 C8 35 */ 0x4153, 0x4154, 0x4155, 0x4156, 0x4157,
+ /* GB+82 32 C9 30 */ 0x4158, 0x4159, 0x415A, 0x415B, 0x415C,
+ /* GB+82 32 C9 35 */ 0x415D, 0x415E,
+ /* Contiguous area: GB+82 32 F8 38 .. GB+82 33 A3 38 */
+ /* GB+82 32 F8 38 */ 0x4338, 0x4339,
+ /* GB+82 32 F9 30 */ 0x433A, 0x433B, 0x433C, 0x433D, 0x433E,
+ /* GB+82 32 F9 35 */ 0x433F, 0x4340, 0x4341, 0x4342, 0x4343,
+ /* GB+82 32 FA 30 */ 0x4344, 0x4345, 0x4346, 0x4347, 0x4348,
+ /* GB+82 32 FA 35 */ 0x4349, 0x434A, 0x434B, 0x434C, 0x434D,
+ /* GB+82 32 FB 30 */ 0x434E, 0x434F, 0x4350, 0x4351, 0x4352,
+ /* GB+82 32 FB 35 */ 0x4353, 0x4354, 0x4355, 0x4356, 0x4357,
+ /* GB+82 32 FC 30 */ 0x4358, 0x4359, 0x435A, 0x435B, 0x435C,
+ /* GB+82 32 FC 35 */ 0x435D, 0x435E, 0x435F, 0x4360, 0x4361,
+ /* GB+82 32 FD 30 */ 0x4362, 0x4363, 0x4364, 0x4365, 0x4366,
+ /* GB+82 32 FD 35 */ 0x4367, 0x4368, 0x4369, 0x436A, 0x436B,
+ /* GB+82 32 FE 30 */ 0x436C, 0x436D, 0x436E, 0x436F, 0x4370,
+ /* GB+82 32 FE 35 */ 0x4371, 0x4372, 0x4373, 0x4374, 0x4375,
+ /* GB+82 33 81 30 */ 0x4376, 0x4377, 0x4378, 0x4379, 0x437A,
+ /* GB+82 33 81 35 */ 0x437B, 0x437C, 0x437D, 0x437E, 0x437F,
+ /* GB+82 33 82 30 */ 0x4380, 0x4381, 0x4382, 0x4383, 0x4384,
+ /* GB+82 33 82 35 */ 0x4385, 0x4386, 0x4387, 0x4388, 0x4389,
+ /* GB+82 33 83 30 */ 0x438A, 0x438B, 0x438C, 0x438D, 0x438E,
+ /* GB+82 33 83 35 */ 0x438F, 0x4390, 0x4391, 0x4392, 0x4393,
+ /* GB+82 33 84 30 */ 0x4394, 0x4395, 0x4396, 0x4397, 0x4398,
+ /* GB+82 33 84 35 */ 0x4399, 0x439A, 0x439B, 0x439C, 0x439D,
+ /* GB+82 33 85 30 */ 0x439E, 0x439F, 0x43A0, 0x43A1, 0x43A2,
+ /* GB+82 33 85 35 */ 0x43A3, 0x43A4, 0x43A5, 0x43A6, 0x43A7,
+ /* GB+82 33 86 30 */ 0x43A8, 0x43A9, 0x43AA, 0x43AB, 0x43AD,
+ /* GB+82 33 86 35 */ 0x43AE, 0x43AF, 0x43B0, 0x43B2, 0x43B3,
+ /* GB+82 33 87 30 */ 0x43B4, 0x43B5, 0x43B6, 0x43B7, 0x43B8,
+ /* GB+82 33 87 35 */ 0x43B9, 0x43BA, 0x43BB, 0x43BC, 0x43BD,
+ /* GB+82 33 88 30 */ 0x43BE, 0x43BF, 0x43C0, 0x43C1, 0x43C2,
+ /* GB+82 33 88 35 */ 0x43C3, 0x43C4, 0x43C5, 0x43C6, 0x43C7,
+ /* GB+82 33 89 30 */ 0x43C8, 0x43C9, 0x43CA, 0x43CB, 0x43CC,
+ /* GB+82 33 89 35 */ 0x43CD, 0x43CE, 0x43CF, 0x43D0, 0x43D1,
+ /* GB+82 33 8A 30 */ 0x43D2, 0x43D3, 0x43D4, 0x43D5, 0x43D6,
+ /* GB+82 33 8A 35 */ 0x43D7, 0x43D8, 0x43D9, 0x43DA, 0x43DB,
+ /* GB+82 33 8B 30 */ 0x43DC, 0x43DE, 0x43DF, 0x43E0, 0x43E1,
+ /* GB+82 33 8B 35 */ 0x43E2, 0x43E3, 0x43E4, 0x43E5, 0x43E6,
+ /* GB+82 33 8C 30 */ 0x43E7, 0x43E8, 0x43E9, 0x43EA, 0x43EB,
+ /* GB+82 33 8C 35 */ 0x43EC, 0x43ED, 0x43EE, 0x43EF, 0x43F0,
+ /* GB+82 33 8D 30 */ 0x43F1, 0x43F2, 0x43F3, 0x43F4, 0x43F5,
+ /* GB+82 33 8D 35 */ 0x43F6, 0x43F7, 0x43F8, 0x43F9, 0x43FA,
+ /* GB+82 33 8E 30 */ 0x43FB, 0x43FC, 0x43FD, 0x43FE, 0x43FF,
+ /* GB+82 33 8E 35 */ 0x4400, 0x4401, 0x4402, 0x4403, 0x4404,
+ /* GB+82 33 8F 30 */ 0x4405, 0x4406, 0x4407, 0x4408, 0x4409,
+ /* GB+82 33 8F 35 */ 0x440A, 0x440B, 0x440C, 0x440D, 0x440E,
+ /* GB+82 33 90 30 */ 0x440F, 0x4410, 0x4411, 0x4412, 0x4413,
+ /* GB+82 33 90 35 */ 0x4414, 0x4415, 0x4416, 0x4417, 0x4418,
+ /* GB+82 33 91 30 */ 0x4419, 0x441A, 0x441B, 0x441C, 0x441D,
+ /* GB+82 33 91 35 */ 0x441E, 0x441F, 0x4420, 0x4421, 0x4422,
+ /* GB+82 33 92 30 */ 0x4423, 0x4424, 0x4425, 0x4426, 0x4427,
+ /* GB+82 33 92 35 */ 0x4428, 0x4429, 0x442A, 0x442B, 0x442C,
+ /* GB+82 33 93 30 */ 0x442D, 0x442E, 0x442F, 0x4430, 0x4431,
+ /* GB+82 33 93 35 */ 0x4432, 0x4433, 0x4434, 0x4435, 0x4436,
+ /* GB+82 33 94 30 */ 0x4437, 0x4438, 0x4439, 0x443A, 0x443B,
+ /* GB+82 33 94 35 */ 0x443C, 0x443D, 0x443E, 0x443F, 0x4440,
+ /* GB+82 33 95 30 */ 0x4441, 0x4442, 0x4443, 0x4444, 0x4445,
+ /* GB+82 33 95 35 */ 0x4446, 0x4447, 0x4448, 0x4449, 0x444A,
+ /* GB+82 33 96 30 */ 0x444B, 0x444C, 0x444D, 0x444E, 0x444F,
+ /* GB+82 33 96 35 */ 0x4450, 0x4451, 0x4452, 0x4453, 0x4454,
+ /* GB+82 33 97 30 */ 0x4455, 0x4456, 0x4457, 0x4458, 0x4459,
+ /* GB+82 33 97 35 */ 0x445A, 0x445B, 0x445C, 0x445D, 0x445E,
+ /* GB+82 33 98 30 */ 0x445F, 0x4460, 0x4461, 0x4462, 0x4463,
+ /* GB+82 33 98 35 */ 0x4464, 0x4465, 0x4466, 0x4467, 0x4468,
+ /* GB+82 33 99 30 */ 0x4469, 0x446A, 0x446B, 0x446C, 0x446D,
+ /* GB+82 33 99 35 */ 0x446E, 0x446F, 0x4470, 0x4471, 0x4472,
+ /* GB+82 33 9A 30 */ 0x4473, 0x4474, 0x4475, 0x4476, 0x4477,
+ /* GB+82 33 9A 35 */ 0x4478, 0x4479, 0x447A, 0x447B, 0x447C,
+ /* GB+82 33 9B 30 */ 0x447D, 0x447E, 0x447F, 0x4480, 0x4481,
+ /* GB+82 33 9B 35 */ 0x4482, 0x4483, 0x4484, 0x4485, 0x4486,
+ /* GB+82 33 9C 30 */ 0x4487, 0x4488, 0x4489, 0x448A, 0x448B,
+ /* GB+82 33 9C 35 */ 0x448C, 0x448D, 0x448E, 0x448F, 0x4490,
+ /* GB+82 33 9D 30 */ 0x4491, 0x4492, 0x4493, 0x4494, 0x4495,
+ /* GB+82 33 9D 35 */ 0x4496, 0x4497, 0x4498, 0x4499, 0x449A,
+ /* GB+82 33 9E 30 */ 0x449B, 0x449C, 0x449D, 0x449E, 0x449F,
+ /* GB+82 33 9E 35 */ 0x44A0, 0x44A1, 0x44A2, 0x44A3, 0x44A4,
+ /* GB+82 33 9F 30 */ 0x44A5, 0x44A6, 0x44A7, 0x44A8, 0x44A9,
+ /* GB+82 33 9F 35 */ 0x44AA, 0x44AB, 0x44AC, 0x44AD, 0x44AE,
+ /* GB+82 33 A0 30 */ 0x44AF, 0x44B0, 0x44B1, 0x44B2, 0x44B3,
+ /* GB+82 33 A0 35 */ 0x44B4, 0x44B5, 0x44B6, 0x44B7, 0x44B8,
+ /* GB+82 33 A1 30 */ 0x44B9, 0x44BA, 0x44BB, 0x44BC, 0x44BD,
+ /* GB+82 33 A1 35 */ 0x44BE, 0x44BF, 0x44C0, 0x44C1, 0x44C2,
+ /* GB+82 33 A2 30 */ 0x44C3, 0x44C4, 0x44C5, 0x44C6, 0x44C7,
+ /* GB+82 33 A2 35 */ 0x44C8, 0x44C9, 0x44CA, 0x44CB, 0x44CC,
+ /* GB+82 33 A3 30 */ 0x44CD, 0x44CE, 0x44CF, 0x44D0, 0x44D1,
+ /* GB+82 33 A3 35 */ 0x44D2, 0x44D3, 0x44D4, 0x44D5,
+ /* Contiguous area: GB+82 33 C9 32 .. GB+82 33 E8 37 */
+ /* GB+82 33 C9 32 */ 0x464D, 0x464E, 0x464F,
+ /* GB+82 33 C9 35 */ 0x4650, 0x4651, 0x4652, 0x4653, 0x4654,
+ /* GB+82 33 CA 30 */ 0x4655, 0x4656, 0x4657, 0x4658, 0x4659,
+ /* GB+82 33 CA 35 */ 0x465A, 0x465B, 0x465C, 0x465D, 0x465E,
+ /* GB+82 33 CB 30 */ 0x465F, 0x4660, 0x4662, 0x4663, 0x4664,
+ /* GB+82 33 CB 35 */ 0x4665, 0x4666, 0x4667, 0x4668, 0x4669,
+ /* GB+82 33 CC 30 */ 0x466A, 0x466B, 0x466C, 0x466D, 0x466E,
+ /* GB+82 33 CC 35 */ 0x466F, 0x4670, 0x4671, 0x4672, 0x4673,
+ /* GB+82 33 CD 30 */ 0x4674, 0x4675, 0x4676, 0x4677, 0x4678,
+ /* GB+82 33 CD 35 */ 0x4679, 0x467A, 0x467B, 0x467C, 0x467D,
+ /* GB+82 33 CE 30 */ 0x467E, 0x467F, 0x4680, 0x4681, 0x4682,
+ /* GB+82 33 CE 35 */ 0x4683, 0x4684, 0x4685, 0x4686, 0x4687,
+ /* GB+82 33 CF 30 */ 0x4688, 0x4689, 0x468A, 0x468B, 0x468C,
+ /* GB+82 33 CF 35 */ 0x468D, 0x468E, 0x468F, 0x4690, 0x4691,
+ /* GB+82 33 D0 30 */ 0x4692, 0x4693, 0x4694, 0x4695, 0x4696,
+ /* GB+82 33 D0 35 */ 0x4697, 0x4698, 0x4699, 0x469A, 0x469B,
+ /* GB+82 33 D1 30 */ 0x469C, 0x469D, 0x469E, 0x469F, 0x46A0,
+ /* GB+82 33 D1 35 */ 0x46A1, 0x46A2, 0x46A3, 0x46A4, 0x46A5,
+ /* GB+82 33 D2 30 */ 0x46A6, 0x46A7, 0x46A8, 0x46A9, 0x46AA,
+ /* GB+82 33 D2 35 */ 0x46AB, 0x46AC, 0x46AD, 0x46AE, 0x46AF,
+ /* GB+82 33 D3 30 */ 0x46B0, 0x46B1, 0x46B2, 0x46B3, 0x46B4,
+ /* GB+82 33 D3 35 */ 0x46B5, 0x46B6, 0x46B7, 0x46B8, 0x46B9,
+ /* GB+82 33 D4 30 */ 0x46BA, 0x46BB, 0x46BC, 0x46BD, 0x46BE,
+ /* GB+82 33 D4 35 */ 0x46BF, 0x46C0, 0x46C1, 0x46C2, 0x46C3,
+ /* GB+82 33 D5 30 */ 0x46C4, 0x46C5, 0x46C6, 0x46C7, 0x46C8,
+ /* GB+82 33 D5 35 */ 0x46C9, 0x46CA, 0x46CB, 0x46CC, 0x46CD,
+ /* GB+82 33 D6 30 */ 0x46CE, 0x46CF, 0x46D0, 0x46D1, 0x46D2,
+ /* GB+82 33 D6 35 */ 0x46D3, 0x46D4, 0x46D5, 0x46D6, 0x46D7,
+ /* GB+82 33 D7 30 */ 0x46D8, 0x46D9, 0x46DA, 0x46DB, 0x46DC,
+ /* GB+82 33 D7 35 */ 0x46DD, 0x46DE, 0x46DF, 0x46E0, 0x46E1,
+ /* GB+82 33 D8 30 */ 0x46E2, 0x46E3, 0x46E4, 0x46E5, 0x46E6,
+ /* GB+82 33 D8 35 */ 0x46E7, 0x46E8, 0x46E9, 0x46EA, 0x46EB,
+ /* GB+82 33 D9 30 */ 0x46EC, 0x46ED, 0x46EE, 0x46EF, 0x46F0,
+ /* GB+82 33 D9 35 */ 0x46F1, 0x46F2, 0x46F3, 0x46F4, 0x46F5,
+ /* GB+82 33 DA 30 */ 0x46F6, 0x46F7, 0x46F8, 0x46F9, 0x46FA,
+ /* GB+82 33 DA 35 */ 0x46FB, 0x46FC, 0x46FD, 0x46FE, 0x46FF,
+ /* GB+82 33 DB 30 */ 0x4700, 0x4701, 0x4702, 0x4703, 0x4704,
+ /* GB+82 33 DB 35 */ 0x4705, 0x4706, 0x4707, 0x4708, 0x4709,
+ /* GB+82 33 DC 30 */ 0x470A, 0x470B, 0x470C, 0x470D, 0x470E,
+ /* GB+82 33 DC 35 */ 0x470F, 0x4710, 0x4711, 0x4712, 0x4713,
+ /* GB+82 33 DD 30 */ 0x4714, 0x4715, 0x4716, 0x4717, 0x4718,
+ /* GB+82 33 DD 35 */ 0x4719, 0x471A, 0x471B, 0x471C, 0x471D,
+ /* GB+82 33 DE 30 */ 0x471E, 0x471F, 0x4720, 0x4721, 0x4722,
+ /* GB+82 33 DE 35 */ 0x4724, 0x4725, 0x4726, 0x4727, 0x4728,
+ /* GB+82 33 DF 30 */ 0x472A, 0x472B, 0x472C, 0x472D, 0x472E,
+ /* GB+82 33 DF 35 */ 0x472F, 0x4730, 0x4731, 0x4732, 0x4733,
+ /* GB+82 33 E0 30 */ 0x4734, 0x4735, 0x4736, 0x4737, 0x4738,
+ /* GB+82 33 E0 35 */ 0x4739, 0x473A, 0x473B, 0x473C, 0x473D,
+ /* GB+82 33 E1 30 */ 0x473E, 0x473F, 0x4740, 0x4741, 0x4742,
+ /* GB+82 33 E1 35 */ 0x4743, 0x4744, 0x4745, 0x4746, 0x4747,
+ /* GB+82 33 E2 30 */ 0x4748, 0x4749, 0x474A, 0x474B, 0x474C,
+ /* GB+82 33 E2 35 */ 0x474D, 0x474E, 0x474F, 0x4750, 0x4751,
+ /* GB+82 33 E3 30 */ 0x4752, 0x4753, 0x4754, 0x4755, 0x4756,
+ /* GB+82 33 E3 35 */ 0x4757, 0x4758, 0x4759, 0x475A, 0x475B,
+ /* GB+82 33 E4 30 */ 0x475C, 0x475D, 0x475E, 0x475F, 0x4760,
+ /* GB+82 33 E4 35 */ 0x4761, 0x4762, 0x4763, 0x4764, 0x4765,
+ /* GB+82 33 E5 30 */ 0x4766, 0x4767, 0x4768, 0x4769, 0x476A,
+ /* GB+82 33 E5 35 */ 0x476B, 0x476C, 0x476D, 0x476E, 0x476F,
+ /* GB+82 33 E6 30 */ 0x4770, 0x4771, 0x4772, 0x4773, 0x4774,
+ /* GB+82 33 E6 35 */ 0x4775, 0x4776, 0x4777, 0x4778, 0x4779,
+ /* GB+82 33 E7 30 */ 0x477A, 0x477B, 0x477D, 0x477E, 0x477F,
+ /* GB+82 33 E7 35 */ 0x4780, 0x4781, 0x4782, 0x4783, 0x4784,
+ /* GB+82 33 E8 30 */ 0x4785, 0x4786, 0x4787, 0x4788, 0x4789,
+ /* GB+82 33 E8 35 */ 0x478A, 0x478B, 0x478C,
+ /* Contiguous area: GB+82 34 96 39 .. GB+82 34 A1 30 */
+ /* GB+82 34 96 39 */ 0x4948,
+ /* GB+82 34 97 30 */ 0x4949, 0x494A, 0x494B, 0x494C, 0x494D,
+ /* GB+82 34 97 35 */ 0x494E, 0x494F, 0x4950, 0x4951, 0x4952,
+ /* GB+82 34 98 30 */ 0x4953, 0x4954, 0x4955, 0x4956, 0x4957,
+ /* GB+82 34 98 35 */ 0x4958, 0x4959, 0x495A, 0x495B, 0x495C,
+ /* GB+82 34 99 30 */ 0x495D, 0x495E, 0x495F, 0x4960, 0x4961,
+ /* GB+82 34 99 35 */ 0x4962, 0x4963, 0x4964, 0x4965, 0x4966,
+ /* GB+82 34 9A 30 */ 0x4967, 0x4968, 0x4969, 0x496A, 0x496B,
+ /* GB+82 34 9A 35 */ 0x496C, 0x496D, 0x496E, 0x496F, 0x4970,
+ /* GB+82 34 9B 30 */ 0x4971, 0x4972, 0x4973, 0x4974, 0x4975,
+ /* GB+82 34 9B 35 */ 0x4976, 0x4977, 0x4978, 0x4979, 0x497B,
+ /* GB+82 34 9C 30 */ 0x497C, 0x497E, 0x497F, 0x4980, 0x4981,
+ /* GB+82 34 9C 35 */ 0x4984, 0x4987, 0x4988, 0x4989, 0x498A,
+ /* GB+82 34 9D 30 */ 0x498B, 0x498C, 0x498D, 0x498E, 0x498F,
+ /* GB+82 34 9D 35 */ 0x4990, 0x4991, 0x4992, 0x4993, 0x4994,
+ /* GB+82 34 9E 30 */ 0x4995, 0x4996, 0x4997, 0x4998, 0x4999,
+ /* GB+82 34 9E 35 */ 0x499A, 0x499C, 0x499D, 0x499E, 0x49A0,
+ /* GB+82 34 9F 30 */ 0x49A1, 0x49A2, 0x49A3, 0x49A4, 0x49A5,
+ /* GB+82 34 9F 35 */ 0x49A6, 0x49A7, 0x49A8, 0x49A9, 0x49AA,
+ /* GB+82 34 A0 30 */ 0x49AB, 0x49AC, 0x49AD, 0x49AE, 0x49AF,
+ /* GB+82 34 A0 35 */ 0x49B0, 0x49B1, 0x49B2, 0x49B3, 0x49B4,
+ /* GB+82 34 A1 30 */ 0x49B5,
+ /* Contiguous area: GB+82 34 E7 34 .. GB+82 35 8F 32 */
+ /* GB+82 34 E7 34 */ 0x4C78,
+ /* GB+82 34 E7 35 */ 0x4C79, 0x4C7A, 0x4C7B, 0x4C7C, 0x4C7D,
+ /* GB+82 34 E8 30 */ 0x4C7E, 0x4C7F, 0x4C80, 0x4C81, 0x4C82,
+ /* GB+82 34 E8 35 */ 0x4C83, 0x4C84, 0x4C85, 0x4C86, 0x4C87,
+ /* GB+82 34 E9 30 */ 0x4C88, 0x4C89, 0x4C8A, 0x4C8B, 0x4C8C,
+ /* GB+82 34 E9 35 */ 0x4C8D, 0x4C8E, 0x4C8F, 0x4C90, 0x4C91,
+ /* GB+82 34 EA 30 */ 0x4C92, 0x4C93, 0x4C94, 0x4C95, 0x4C96,
+ /* GB+82 34 EA 35 */ 0x4C97, 0x4C98, 0x4C99, 0x4C9A, 0x4C9B,
+ /* GB+82 34 EB 30 */ 0x4C9C, 0x4C9D, 0x4C9E, 0x4CA4, 0x4CA5,
+ /* GB+82 34 EB 35 */ 0x4CA6, 0x4CA7, 0x4CA8, 0x4CA9, 0x4CAA,
+ /* GB+82 34 EC 30 */ 0x4CAB, 0x4CAC, 0x4CAD, 0x4CAE, 0x4CAF,
+ /* GB+82 34 EC 35 */ 0x4CB0, 0x4CB1, 0x4CB2, 0x4CB3, 0x4CB4,
+ /* GB+82 34 ED 30 */ 0x4CB5, 0x4CB6, 0x4CB7, 0x4CB8, 0x4CB9,
+ /* GB+82 34 ED 35 */ 0x4CBA, 0x4CBB, 0x4CBC, 0x4CBD, 0x4CBE,
+ /* GB+82 34 EE 30 */ 0x4CBF, 0x4CC0, 0x4CC1, 0x4CC2, 0x4CC3,
+ /* GB+82 34 EE 35 */ 0x4CC4, 0x4CC5, 0x4CC6, 0x4CC7, 0x4CC8,
+ /* GB+82 34 EF 30 */ 0x4CC9, 0x4CCA, 0x4CCB, 0x4CCC, 0x4CCD,
+ /* GB+82 34 EF 35 */ 0x4CCE, 0x4CCF, 0x4CD0, 0x4CD1, 0x4CD2,
+ /* GB+82 34 F0 30 */ 0x4CD3, 0x4CD4, 0x4CD5, 0x4CD6, 0x4CD7,
+ /* GB+82 34 F0 35 */ 0x4CD8, 0x4CD9, 0x4CDA, 0x4CDB, 0x4CDC,
+ /* GB+82 34 F1 30 */ 0x4CDD, 0x4CDE, 0x4CDF, 0x4CE0, 0x4CE1,
+ /* GB+82 34 F1 35 */ 0x4CE2, 0x4CE3, 0x4CE4, 0x4CE5, 0x4CE6,
+ /* GB+82 34 F2 30 */ 0x4CE7, 0x4CE8, 0x4CE9, 0x4CEA, 0x4CEB,
+ /* GB+82 34 F2 35 */ 0x4CEC, 0x4CED, 0x4CEE, 0x4CEF, 0x4CF0,
+ /* GB+82 34 F3 30 */ 0x4CF1, 0x4CF2, 0x4CF3, 0x4CF4, 0x4CF5,
+ /* GB+82 34 F3 35 */ 0x4CF6, 0x4CF7, 0x4CF8, 0x4CF9, 0x4CFA,
+ /* GB+82 34 F4 30 */ 0x4CFB, 0x4CFC, 0x4CFD, 0x4CFE, 0x4CFF,
+ /* GB+82 34 F4 35 */ 0x4D00, 0x4D01, 0x4D02, 0x4D03, 0x4D04,
+ /* GB+82 34 F5 30 */ 0x4D05, 0x4D06, 0x4D07, 0x4D08, 0x4D09,
+ /* GB+82 34 F5 35 */ 0x4D0A, 0x4D0B, 0x4D0C, 0x4D0D, 0x4D0E,
+ /* GB+82 34 F6 30 */ 0x4D0F, 0x4D10, 0x4D11, 0x4D12, 0x4D1A,
+ /* GB+82 34 F6 35 */ 0x4D1B, 0x4D1C, 0x4D1D, 0x4D1E, 0x4D1F,
+ /* GB+82 34 F7 30 */ 0x4D20, 0x4D21, 0x4D22, 0x4D23, 0x4D24,
+ /* GB+82 34 F7 35 */ 0x4D25, 0x4D26, 0x4D27, 0x4D28, 0x4D29,
+ /* GB+82 34 F8 30 */ 0x4D2A, 0x4D2B, 0x4D2C, 0x4D2D, 0x4D2E,
+ /* GB+82 34 F8 35 */ 0x4D2F, 0x4D30, 0x4D31, 0x4D32, 0x4D33,
+ /* GB+82 34 F9 30 */ 0x4D34, 0x4D35, 0x4D36, 0x4D37, 0x4D38,
+ /* GB+82 34 F9 35 */ 0x4D39, 0x4D3A, 0x4D3B, 0x4D3C, 0x4D3D,
+ /* GB+82 34 FA 30 */ 0x4D3E, 0x4D3F, 0x4D40, 0x4D41, 0x4D42,
+ /* GB+82 34 FA 35 */ 0x4D43, 0x4D44, 0x4D45, 0x4D46, 0x4D47,
+ /* GB+82 34 FB 30 */ 0x4D48, 0x4D49, 0x4D4A, 0x4D4B, 0x4D4C,
+ /* GB+82 34 FB 35 */ 0x4D4D, 0x4D4E, 0x4D4F, 0x4D50, 0x4D51,
+ /* GB+82 34 FC 30 */ 0x4D52, 0x4D53, 0x4D54, 0x4D55, 0x4D56,
+ /* GB+82 34 FC 35 */ 0x4D57, 0x4D58, 0x4D59, 0x4D5A, 0x4D5B,
+ /* GB+82 34 FD 30 */ 0x4D5C, 0x4D5D, 0x4D5E, 0x4D5F, 0x4D60,
+ /* GB+82 34 FD 35 */ 0x4D61, 0x4D62, 0x4D63, 0x4D64, 0x4D65,
+ /* GB+82 34 FE 30 */ 0x4D66, 0x4D67, 0x4D68, 0x4D69, 0x4D6A,
+ /* GB+82 34 FE 35 */ 0x4D6B, 0x4D6C, 0x4D6D, 0x4D6E, 0x4D6F,
+ /* GB+82 35 81 30 */ 0x4D70, 0x4D71, 0x4D72, 0x4D73, 0x4D74,
+ /* GB+82 35 81 35 */ 0x4D75, 0x4D76, 0x4D77, 0x4D78, 0x4D79,
+ /* GB+82 35 82 30 */ 0x4D7A, 0x4D7B, 0x4D7C, 0x4D7D, 0x4D7E,
+ /* GB+82 35 82 35 */ 0x4D7F, 0x4D80, 0x4D81, 0x4D82, 0x4D83,
+ /* GB+82 35 83 30 */ 0x4D84, 0x4D85, 0x4D86, 0x4D87, 0x4D88,
+ /* GB+82 35 83 35 */ 0x4D89, 0x4D8A, 0x4D8B, 0x4D8C, 0x4D8D,
+ /* GB+82 35 84 30 */ 0x4D8E, 0x4D8F, 0x4D90, 0x4D91, 0x4D92,
+ /* GB+82 35 84 35 */ 0x4D93, 0x4D94, 0x4D95, 0x4D96, 0x4D97,
+ /* GB+82 35 85 30 */ 0x4D98, 0x4D99, 0x4D9A, 0x4D9B, 0x4D9C,
+ /* GB+82 35 85 35 */ 0x4D9D, 0x4D9E, 0x4D9F, 0x4DA0, 0x4DA1,
+ /* GB+82 35 86 30 */ 0x4DA2, 0x4DA3, 0x4DA4, 0x4DA5, 0x4DA6,
+ /* GB+82 35 86 35 */ 0x4DA7, 0x4DA8, 0x4DA9, 0x4DAA, 0x4DAB,
+ /* GB+82 35 87 30 */ 0x4DAC, 0x4DAD, 0x4DAF, 0x4DB0, 0x4DB1,
+ /* GB+82 35 87 35 */ 0x4DB2, 0x4DB3, 0x4DB4, 0x4DB5, 0x4DB6,
+ /* GB+82 35 88 30 */ 0x4DB7, 0x4DB8, 0x4DB9, 0x4DBA, 0x4DBB,
+ /* GB+82 35 88 35 */ 0x4DBC, 0x4DBD, 0x4DBE, 0x4DBF, 0x4DC0,
+ /* GB+82 35 89 30 */ 0x4DC1, 0x4DC2, 0x4DC3, 0x4DC4, 0x4DC5,
+ /* GB+82 35 89 35 */ 0x4DC6, 0x4DC7, 0x4DC8, 0x4DC9, 0x4DCA,
+ /* GB+82 35 8A 30 */ 0x4DCB, 0x4DCC, 0x4DCD, 0x4DCE, 0x4DCF,
+ /* GB+82 35 8A 35 */ 0x4DD0, 0x4DD1, 0x4DD2, 0x4DD3, 0x4DD4,
+ /* GB+82 35 8B 30 */ 0x4DD5, 0x4DD6, 0x4DD7, 0x4DD8, 0x4DD9,
+ /* GB+82 35 8B 35 */ 0x4DDA, 0x4DDB, 0x4DDC, 0x4DDD, 0x4DDE,
+ /* GB+82 35 8C 30 */ 0x4DDF, 0x4DE0, 0x4DE1, 0x4DE2, 0x4DE3,
+ /* GB+82 35 8C 35 */ 0x4DE4, 0x4DE5, 0x4DE6, 0x4DE7, 0x4DE8,
+ /* GB+82 35 8D 30 */ 0x4DE9, 0x4DEA, 0x4DEB, 0x4DEC, 0x4DED,
+ /* GB+82 35 8D 35 */ 0x4DEE, 0x4DEF, 0x4DF0, 0x4DF1, 0x4DF2,
+ /* GB+82 35 8E 30 */ 0x4DF3, 0x4DF4, 0x4DF5, 0x4DF6, 0x4DF7,
+ /* GB+82 35 8E 35 */ 0x4DF8, 0x4DF9, 0x4DFA, 0x4DFB, 0x4DFC,
+ /* GB+82 35 8F 30 */ 0x4DFD, 0x4DFE, 0x4DFF,
+ /* Contiguous area: GB+83 36 C7 39 .. GB+83 36 CF 39 */
+ /* GB+83 36 C7 39 */ 0xE76C,
+ /* GB+83 36 C8 30 */ 0xE7C8, 0xE7E7, 0xE7E8, 0xE7E9, 0xE7EA,
+ /* GB+83 36 C8 35 */ 0xE7EB, 0xE7EC, 0xE7ED, 0xE7EE, 0xE7EF,
+ /* GB+83 36 C9 30 */ 0xE7F0, 0xE7F1, 0xE7F2, 0xE7F3, 0xE815,
+ /* GB+83 36 C9 35 */ 0xE819, 0xE81A, 0xE81B, 0xE81C, 0xE81D,
+ /* GB+83 36 CA 30 */ 0xE81F, 0xE820, 0xE821, 0xE822, 0xE823,
+ /* GB+83 36 CA 35 */ 0xE824, 0xE825, 0xE827, 0xE828, 0xE829,
+ /* GB+83 36 CB 30 */ 0xE82A, 0xE82D, 0xE82E, 0xE82F, 0xE830,
+ /* GB+83 36 CB 35 */ 0xE833, 0xE834, 0xE835, 0xE836, 0xE837,
+ /* GB+83 36 CC 30 */ 0xE838, 0xE839, 0xE83A, 0xE83C, 0xE83D,
+ /* GB+83 36 CC 35 */ 0xE83E, 0xE83F, 0xE840, 0xE841, 0xE842,
+ /* GB+83 36 CD 30 */ 0xE844, 0xE845, 0xE846, 0xE847, 0xE848,
+ /* GB+83 36 CD 35 */ 0xE849, 0xE84A, 0xE84B, 0xE84C, 0xE84D,
+ /* GB+83 36 CE 30 */ 0xE84E, 0xE84F, 0xE850, 0xE851, 0xE852,
+ /* GB+83 36 CE 35 */ 0xE853, 0xE856, 0xE857, 0xE858, 0xE859,
+ /* GB+83 36 CF 30 */ 0xE85A, 0xE85B, 0xE85C, 0xE85D, 0xE85E,
+ /* GB+83 36 CF 35 */ 0xE85F, 0xE860, 0xE861, 0xE862, 0xE863,
+ /* Contiguous area: GB+84 30 85 35 .. GB+84 30 9C 37 */
+ /* GB+84 30 85 35 */ 0xF92D, 0xF92E, 0xF92F, 0xF930, 0xF931,
+ /* GB+84 30 86 30 */ 0xF932, 0xF933, 0xF934, 0xF935, 0xF936,
+ /* GB+84 30 86 35 */ 0xF937, 0xF938, 0xF939, 0xF93A, 0xF93B,
+ /* GB+84 30 87 30 */ 0xF93C, 0xF93D, 0xF93E, 0xF93F, 0xF940,
+ /* GB+84 30 87 35 */ 0xF941, 0xF942, 0xF943, 0xF944, 0xF945,
+ /* GB+84 30 88 30 */ 0xF946, 0xF947, 0xF948, 0xF949, 0xF94A,
+ /* GB+84 30 88 35 */ 0xF94B, 0xF94C, 0xF94D, 0xF94E, 0xF94F,
+ /* GB+84 30 89 30 */ 0xF950, 0xF951, 0xF952, 0xF953, 0xF954,
+ /* GB+84 30 89 35 */ 0xF955, 0xF956, 0xF957, 0xF958, 0xF959,
+ /* GB+84 30 8A 30 */ 0xF95A, 0xF95B, 0xF95C, 0xF95D, 0xF95E,
+ /* GB+84 30 8A 35 */ 0xF95F, 0xF960, 0xF961, 0xF962, 0xF963,
+ /* GB+84 30 8B 30 */ 0xF964, 0xF965, 0xF966, 0xF967, 0xF968,
+ /* GB+84 30 8B 35 */ 0xF969, 0xF96A, 0xF96B, 0xF96C, 0xF96D,
+ /* GB+84 30 8C 30 */ 0xF96E, 0xF96F, 0xF970, 0xF971, 0xF972,
+ /* GB+84 30 8C 35 */ 0xF973, 0xF974, 0xF975, 0xF976, 0xF977,
+ /* GB+84 30 8D 30 */ 0xF978, 0xF97A, 0xF97B, 0xF97C, 0xF97D,
+ /* GB+84 30 8D 35 */ 0xF97E, 0xF97F, 0xF980, 0xF981, 0xF982,
+ /* GB+84 30 8E 30 */ 0xF983, 0xF984, 0xF985, 0xF986, 0xF987,
+ /* GB+84 30 8E 35 */ 0xF988, 0xF989, 0xF98A, 0xF98B, 0xF98C,
+ /* GB+84 30 8F 30 */ 0xF98D, 0xF98E, 0xF98F, 0xF990, 0xF991,
+ /* GB+84 30 8F 35 */ 0xF992, 0xF993, 0xF994, 0xF996, 0xF997,
+ /* GB+84 30 90 30 */ 0xF998, 0xF999, 0xF99A, 0xF99B, 0xF99C,
+ /* GB+84 30 90 35 */ 0xF99D, 0xF99E, 0xF99F, 0xF9A0, 0xF9A1,
+ /* GB+84 30 91 30 */ 0xF9A2, 0xF9A3, 0xF9A4, 0xF9A5, 0xF9A6,
+ /* GB+84 30 91 35 */ 0xF9A7, 0xF9A8, 0xF9A9, 0xF9AA, 0xF9AB,
+ /* GB+84 30 92 30 */ 0xF9AC, 0xF9AD, 0xF9AE, 0xF9AF, 0xF9B0,
+ /* GB+84 30 92 35 */ 0xF9B1, 0xF9B2, 0xF9B3, 0xF9B4, 0xF9B5,
+ /* GB+84 30 93 30 */ 0xF9B6, 0xF9B7, 0xF9B8, 0xF9B9, 0xF9BA,
+ /* GB+84 30 93 35 */ 0xF9BB, 0xF9BC, 0xF9BD, 0xF9BE, 0xF9BF,
+ /* GB+84 30 94 30 */ 0xF9C0, 0xF9C1, 0xF9C2, 0xF9C3, 0xF9C4,
+ /* GB+84 30 94 35 */ 0xF9C5, 0xF9C6, 0xF9C7, 0xF9C8, 0xF9C9,
+ /* GB+84 30 95 30 */ 0xF9CA, 0xF9CB, 0xF9CC, 0xF9CD, 0xF9CE,
+ /* GB+84 30 95 35 */ 0xF9CF, 0xF9D0, 0xF9D1, 0xF9D2, 0xF9D3,
+ /* GB+84 30 96 30 */ 0xF9D4, 0xF9D5, 0xF9D6, 0xF9D7, 0xF9D8,
+ /* GB+84 30 96 35 */ 0xF9D9, 0xF9DA, 0xF9DB, 0xF9DC, 0xF9DD,
+ /* GB+84 30 97 30 */ 0xF9DE, 0xF9DF, 0xF9E0, 0xF9E1, 0xF9E2,
+ /* GB+84 30 97 35 */ 0xF9E3, 0xF9E4, 0xF9E5, 0xF9E6, 0xF9E8,
+ /* GB+84 30 98 30 */ 0xF9E9, 0xF9EA, 0xF9EB, 0xF9EC, 0xF9ED,
+ /* GB+84 30 98 35 */ 0xF9EE, 0xF9EF, 0xF9F0, 0xF9F2, 0xF9F3,
+ /* GB+84 30 99 30 */ 0xF9F4, 0xF9F5, 0xF9F6, 0xF9F7, 0xF9F8,
+ /* GB+84 30 99 35 */ 0xF9F9, 0xF9FA, 0xF9FB, 0xF9FC, 0xF9FD,
+ /* GB+84 30 9A 30 */ 0xF9FE, 0xF9FF, 0xFA00, 0xFA01, 0xFA02,
+ /* GB+84 30 9A 35 */ 0xFA03, 0xFA04, 0xFA05, 0xFA06, 0xFA07,
+ /* GB+84 30 9B 30 */ 0xFA08, 0xFA09, 0xFA0A, 0xFA0B, 0xFA10,
+ /* GB+84 30 9B 35 */ 0xFA12, 0xFA15, 0xFA16, 0xFA17, 0xFA19,
+ /* GB+84 30 9C 30 */ 0xFA1A, 0xFA1B, 0xFA1C, 0xFA1D, 0xFA1E,
+ /* GB+84 30 9C 35 */ 0xFA22, 0xFA25, 0xFA26,
+ /* Contiguous area: GB+84 31 85 38 .. GB+84 31 A2 33 */
+ /* GB+84 31 85 38 */ 0xFE32, 0xFE45,
+ /* GB+84 31 86 30 */ 0xFE46, 0xFE47, 0xFE48, 0xFE53, 0xFE58,
+ /* GB+84 31 86 35 */ 0xFE67, 0xFE6C, 0xFE6D, 0xFE6E, 0xFE6F,
+ /* GB+84 31 87 30 */ 0xFE70, 0xFE71, 0xFE72, 0xFE73, 0xFE74,
+ /* GB+84 31 87 35 */ 0xFE75, 0xFE76, 0xFE77, 0xFE78, 0xFE79,
+ /* GB+84 31 88 30 */ 0xFE7A, 0xFE7B, 0xFE7C, 0xFE7D, 0xFE7E,
+ /* GB+84 31 88 35 */ 0xFE7F, 0xFE80, 0xFE81, 0xFE82, 0xFE83,
+ /* GB+84 31 89 30 */ 0xFE84, 0xFE85, 0xFE86, 0xFE87, 0xFE88,
+ /* GB+84 31 89 35 */ 0xFE89, 0xFE8A, 0xFE8B, 0xFE8C, 0xFE8D,
+ /* GB+84 31 8A 30 */ 0xFE8E, 0xFE8F, 0xFE90, 0xFE91, 0xFE92,
+ /* GB+84 31 8A 35 */ 0xFE93, 0xFE94, 0xFE95, 0xFE96, 0xFE97,
+ /* GB+84 31 8B 30 */ 0xFE98, 0xFE99, 0xFE9A, 0xFE9B, 0xFE9C,
+ /* GB+84 31 8B 35 */ 0xFE9D, 0xFE9E, 0xFE9F, 0xFEA0, 0xFEA1,
+ /* GB+84 31 8C 30 */ 0xFEA2, 0xFEA3, 0xFEA4, 0xFEA5, 0xFEA6,
+ /* GB+84 31 8C 35 */ 0xFEA7, 0xFEA8, 0xFEA9, 0xFEAA, 0xFEAB,
+ /* GB+84 31 8D 30 */ 0xFEAC, 0xFEAD, 0xFEAE, 0xFEAF, 0xFEB0,
+ /* GB+84 31 8D 35 */ 0xFEB1, 0xFEB2, 0xFEB3, 0xFEB4, 0xFEB5,
+ /* GB+84 31 8E 30 */ 0xFEB6, 0xFEB7, 0xFEB8, 0xFEB9, 0xFEBA,
+ /* GB+84 31 8E 35 */ 0xFEBB, 0xFEBC, 0xFEBD, 0xFEBE, 0xFEBF,
+ /* GB+84 31 8F 30 */ 0xFEC0, 0xFEC1, 0xFEC2, 0xFEC3, 0xFEC4,
+ /* GB+84 31 8F 35 */ 0xFEC5, 0xFEC6, 0xFEC7, 0xFEC8, 0xFEC9,
+ /* GB+84 31 90 30 */ 0xFECA, 0xFECB, 0xFECC, 0xFECD, 0xFECE,
+ /* GB+84 31 90 35 */ 0xFECF, 0xFED0, 0xFED1, 0xFED2, 0xFED3,
+ /* GB+84 31 91 30 */ 0xFED4, 0xFED5, 0xFED6, 0xFED7, 0xFED8,
+ /* GB+84 31 91 35 */ 0xFED9, 0xFEDA, 0xFEDB, 0xFEDC, 0xFEDD,
+ /* GB+84 31 92 30 */ 0xFEDE, 0xFEDF, 0xFEE0, 0xFEE1, 0xFEE2,
+ /* GB+84 31 92 35 */ 0xFEE3, 0xFEE4, 0xFEE5, 0xFEE6, 0xFEE7,
+ /* GB+84 31 93 30 */ 0xFEE8, 0xFEE9, 0xFEEA, 0xFEEB, 0xFEEC,
+ /* GB+84 31 93 35 */ 0xFEED, 0xFEEE, 0xFEEF, 0xFEF0, 0xFEF1,
+ /* GB+84 31 94 30 */ 0xFEF2, 0xFEF3, 0xFEF4, 0xFEF5, 0xFEF6,
+ /* GB+84 31 94 35 */ 0xFEF7, 0xFEF8, 0xFEF9, 0xFEFA, 0xFEFB,
+ /* GB+84 31 95 30 */ 0xFEFC, 0xFEFD, 0xFEFE, 0xFEFF, 0xFF00,
+ /* GB+84 31 95 35 */ 0xFF5F, 0xFF60, 0xFF61, 0xFF62, 0xFF63,
+ /* GB+84 31 96 30 */ 0xFF64, 0xFF65, 0xFF66, 0xFF67, 0xFF68,
+ /* GB+84 31 96 35 */ 0xFF69, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D,
+ /* GB+84 31 97 30 */ 0xFF6E, 0xFF6F, 0xFF70, 0xFF71, 0xFF72,
+ /* GB+84 31 97 35 */ 0xFF73, 0xFF74, 0xFF75, 0xFF76, 0xFF77,
+ /* GB+84 31 98 30 */ 0xFF78, 0xFF79, 0xFF7A, 0xFF7B, 0xFF7C,
+ /* GB+84 31 98 35 */ 0xFF7D, 0xFF7E, 0xFF7F, 0xFF80, 0xFF81,
+ /* GB+84 31 99 30 */ 0xFF82, 0xFF83, 0xFF84, 0xFF85, 0xFF86,
+ /* GB+84 31 99 35 */ 0xFF87, 0xFF88, 0xFF89, 0xFF8A, 0xFF8B,
+ /* GB+84 31 9A 30 */ 0xFF8C, 0xFF8D, 0xFF8E, 0xFF8F, 0xFF90,
+ /* GB+84 31 9A 35 */ 0xFF91, 0xFF92, 0xFF93, 0xFF94, 0xFF95,
+ /* GB+84 31 9B 30 */ 0xFF96, 0xFF97, 0xFF98, 0xFF99, 0xFF9A,
+ /* GB+84 31 9B 35 */ 0xFF9B, 0xFF9C, 0xFF9D, 0xFF9E, 0xFF9F,
+ /* GB+84 31 9C 30 */ 0xFFA0, 0xFFA1, 0xFFA2, 0xFFA3, 0xFFA4,
+ /* GB+84 31 9C 35 */ 0xFFA5, 0xFFA6, 0xFFA7, 0xFFA8, 0xFFA9,
+ /* GB+84 31 9D 30 */ 0xFFAA, 0xFFAB, 0xFFAC, 0xFFAD, 0xFFAE,
+ /* GB+84 31 9D 35 */ 0xFFAF, 0xFFB0, 0xFFB1, 0xFFB2, 0xFFB3,
+ /* GB+84 31 9E 30 */ 0xFFB4, 0xFFB5, 0xFFB6, 0xFFB7, 0xFFB8,
+ /* GB+84 31 9E 35 */ 0xFFB9, 0xFFBA, 0xFFBB, 0xFFBC, 0xFFBD,
+ /* GB+84 31 9F 30 */ 0xFFBE, 0xFFBF, 0xFFC0, 0xFFC1, 0xFFC2,
+ /* GB+84 31 9F 35 */ 0xFFC3, 0xFFC4, 0xFFC5, 0xFFC6, 0xFFC7,
+ /* GB+84 31 A0 30 */ 0xFFC8, 0xFFC9, 0xFFCA, 0xFFCB, 0xFFCC,
+ /* GB+84 31 A0 35 */ 0xFFCD, 0xFFCE, 0xFFCF, 0xFFD0, 0xFFD1,
+ /* GB+84 31 A1 30 */ 0xFFD2, 0xFFD3, 0xFFD4, 0xFFD5, 0xFFD6,
+ /* GB+84 31 A1 35 */ 0xFFD7, 0xFFD8, 0xFFD9, 0xFFDA, 0xFFDB,
+ /* GB+84 31 A2 30 */ 0xFFDC, 0xFFDD, 0xFFDE, 0xFFDF,
+};
+
+static inline uint gb4lin_to_gb(uint gb4lin) {
+ uchar a, b, c, d;
+ a = 0x81 + gb4lin / 12600;
+ b = 0x30 + (gb4lin / 1260) % 10;
+ c = 0x81 + (gb4lin / 10) % 126;
+ d = 0x30 + gb4lin % 10;
+ return ((a << 24) | (b << 16) | (c << 8) | d);
+}
+
+static uint qt_Gb18030ToUnicode(const uchar *gbstr, int& len) {
+ /* Returns Unicode. */
+ uint uni;
+ uchar first = *gbstr;
+
+ if (IsLatin(first)) {
+ len = 1;
+ uni = (uint)first;
+ }
+ else if (Is1stByte(first) && len >= 2) {
+ uchar second = gbstr[1];
+
+ if (Is2ndByteIn2Bytes(second)) {
+ len = 2;
+
+ if (IsUDA1(first, second))
+ uni = 0xE000 + (first - 0xAA) * 94 + (second - 0xA1);
+ else if (IsUDA2(first, second))
+ uni = 0xE234 + (first - 0xF8) * 94 + (second - 0xA1);
+ else if (IsUDA3(first, second))
+ uni = 0xE4C6 + (first - 0xA1) * 96 + (second - 0x40)
+ - ((second >= 0x80) ? 1 : 0);
+ else {
+ // Use the mapping table
+ uint i;
+
+ i = (first - 0x81) * 190 + (second - 0x40)
+ - ((second >= 0x80) ? 1 : 0);
+
+ if (InRange(first, 0xA1, 0xA7))
+ i -= (first - 0xA0) * 96;
+ if (first > 0xA7)
+ i -= 672;
+ if (InRange(first, 0xAA, 0xAF))
+ i -= (first - 0xAA) * 94;
+ if (first > 0xAF)
+ i -= 564;
+ if (first >= 0xF8)
+ i -= (first - 0xF8) * 94;
+
+ uni = (uint)gb18030_2byte_to_ucs[i];
+ }
+ }
+ else if (Is2ndByteIn4Bytes(second) && len >= 4) {
+ uchar third = gbstr[2],
+ fourth = gbstr[3];
+
+ if (Is3rdByte(third) && Is4thByte(fourth)) {
+ // Valid 4-byte GB18030, whether defined or not
+ uint gb4lin;
+ indexTbl_t g2u;
+
+ gb4lin = (first - 0x81) * 12600 + (second - 0x30) * 1260
+ + (third - 0x81) * 10 + (fourth - 0x30);
+
+ len = 4;
+ if (gb4lin <= 0x99FB) {
+ /* GB+81308130 - GB+8431A439 */
+ g2u = gb18030_to_ucs_index[gb4lin >> 8];
+
+ if ((quint8)(gb4lin & 0xFF) >= g2u.tblBegin &&
+ (quint8)(gb4lin & 0xFF) <= g2u.tblEnd) {
+
+ uni = (uint)gb18030_4byte_to_ucs[gb4lin - g2u.tblOffset];
+ }
+ else {
+ uni = g2u.algOffset + (gb4lin & 0xFF);
+ }
+ } else if (InRange(gb4lin, 0x2E248, 0x12E247)) {
+ /* GB+90308130 - GB+E3329A35 */
+ uni = gb4lin - 0xE248;
+ } else {
+ /* undefined or reserved area */
+ len = 1;
+ uni = QChar::ReplacementCharacter;
+ }
+ }
+ else {
+ len = 1;
+ uni = QChar::ReplacementCharacter;
+ }
+ }
+ else {
+ len = 1;
+ uni = QChar::ReplacementCharacter;
+ }
+ }
+ else {
+ len = 1;
+ uni = QChar::ReplacementCharacter;
+ }
+ return uni;
+}
+
+
+int qt_UnicodeToGb18030(uint uni, uchar *gbchar) {
+ /* Returns the bytesize of the GB18030 character. */
+ uint gb, gb4lin;
+ indexTbl_t u2g;
+
+ if (IsLatin(uni)) {
+ *gbchar = (uchar)uni;
+ return 1;
+ }
+ else if (uni <= 0xD7FF || InRange(uni, 0xE766, 0xFFFF)) {
+ u2g = ucs_to_gb18030_index[uni >> 8];
+
+ if ((quint8)(uni & 0xFF) >= u2g.tblBegin && (quint8)(uni & 0xFF) <= u2g.tblEnd) {
+ // Use mapping table (2-byte or 4-byte GB18030)
+ uint tblEntry;
+
+ tblEntry = ucs_to_gb18030[uni - u2g.tblOffset];
+
+ if (tblEntry > 0x8000) {
+ // 2-byte GB18030
+ gb = tblEntry;
+ }
+ else {
+ // 4-byte GB18030 stored in a special compact format
+ uchar a, b;
+ a = 0x81;
+ b = 0x30 + (tblEntry >> 11);
+ if (tblEntry >= 0x7000) {
+ a += 3;
+ b -= 14;
+ } else if (tblEntry >= 0x6000) {
+ a += 2;
+ b -= 6;
+ } else if (tblEntry >= 0x3000) {
+ a += 1;
+ b -= 6;
+ } else if (b >= 0x31) {
+ b += 5;
+ }
+ gbchar[0] = a;
+ gbchar[1] = b;
+ gbchar[2] = 0x81 + ((tblEntry >> 4) & 0x7F);
+ gbchar[3] = 0x30 + (tblEntry & 0xF);
+ return 4;
+ }
+ }
+ else {
+ // 4-byte GB18030 calculated algorithmically
+ gb4lin = u2g.algOffset + (uni & 0xFF);
+ // Yikes, my index table could not cover all the bases...
+ if (InRange(uni, 0x49B8, 0x49FF))
+ gb4lin -= 11;
+ gb = gb4lin_to_gb(gb4lin);
+ }
+ }
+ else if (InRange(uni, 0xE000, 0xE765)) {
+ // User-defined areas in GB18030 (2-byte)
+ if (uni <= 0xE233)
+ gb = 0xAAA1 + (((uni - 0xE000) / 94) << 8) + (uni - 0xE000) % 94;
+ else if (uni <= 0xE4C5)
+ gb = 0xF8A1 + (((uni - 0xE234) / 94) << 8) + (uni - 0xE234) % 94;
+ else {
+ gb = 0xA140 + (((uni - 0xE4C6) / 96) << 8) + (uni - 0xE4C6) % 96;
+ // Skip the gap at 0x7F
+ if ((gb & 0xFF) >= 0x7F)
+ gb++;
+ }
+ }
+ else if (InRange(uni, 0x10000, 0x10FFFF)) {
+ // Qt 3.x does not support beyond BMP yet, but what the heck...
+ // (U+10000 = GB+90308130) to (U+10FFFF = GB+E3329A35)
+ gb = gb4lin_to_gb(0x1E248 + uni);
+ }
+ else {
+ // Surrogate area and other undefined/reserved areas (discard)
+ *gbchar = 0;
+ return 0;
+ }
+
+ if (gb <= 0xFFFF) {
+ gbchar[0] = (uchar)((gb >> 8) & 0xFF);
+ gbchar[1] = (uchar)(gb & 0xFF);
+ return 2;
+ } else {
+ gbchar[0] = (uchar)((gb >> 24) & 0xFF);
+ gbchar[1] = (uchar)((gb >> 16) & 0xFF);
+ gbchar[2] = (uchar)((gb >> 8) & 0xFF);
+ gbchar[3] = (uchar)(gb & 0xFF);
+ return 4;
+ }
+}
+
+
+int qt_UnicodeToGbk(uint uni, uchar *gbchar) {
+ /* Returns the bytesize of the GBK character. */
+ /* Intended for improving performance of GB2312 and GBK functions. */
+ uint gb;
+ indexTbl_t u2g;
+
+ if (IsLatin(uni)) {
+ *gbchar = (uchar)uni;
+ return 1;
+ }
+ else if (uni <= 0xD7FF || InRange(uni, 0xE766, 0xFFFF)) {
+ u2g = ucs_to_gb18030_index[uni >> 8];
+
+ if ((quint8)(uni & 0xFF) >= u2g.tblBegin && (quint8)(uni & 0xFF) <= u2g.tblEnd) {
+ // Use mapping table (2-byte GBK or 4-byte GB18030)
+ uint tblEntry;
+
+ tblEntry = ucs_to_gb18030[uni - u2g.tblOffset];
+
+ if (tblEntry > 0x8000) {
+ // GBK
+ gb = tblEntry;
+ }
+ else {
+ // 4-byte GB18030 stored in a special compact format (discard)
+ *gbchar = 0;
+ return 0;
+ }
+ }
+ else {
+ // 4-byte GB18030 calculated algorithmically (discard)
+ *gbchar = 0;
+ return 0;
+ }
+ }
+ else if (InRange(uni, 0xE000, 0xE765)) {
+ // User-defined areas in GB18030 (2-byte)
+ if (uni <= 0xE233)
+ gb = 0xAAA1 + (((uni - 0xE000) / 94) << 8) + (uni - 0xE000) % 94;
+ else if (uni <= 0xE4C5)
+ gb = 0xF8A1 + (((uni - 0xE234) / 94) << 8) + (uni - 0xE234) % 94;
+ else {
+ gb = 0xA140 + (((uni - 0xE4C6) / 96) << 8) + (uni - 0xE4C6) % 96;
+ // Skip the gap at 0x7F
+ if ((gb & 0xFF) >= 0x7F)
+ gb++;
+ }
+ }
+ else {
+ // Surrogate area and other undefined/reserved areas (discard)
+ *gbchar = 0;
+ return 0;
+ }
+
+ gbchar[0] = (uchar)((gb >> 8) & 0xFF);
+ gbchar[1] = (uchar)(gb & 0xFF);
+ return 2;
+}
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_TEXTCODEC
diff --git a/src/corelib/codecs/qgb18030codec_p.h b/src/corelib/codecs/qgb18030codec_p.h
new file mode 100644
index 0000000000..12f50d5048
--- /dev/null
+++ b/src/corelib/codecs/qgb18030codec_p.h
@@ -0,0 +1,170 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+// Contributed by James Su <suzhe@gnuchina.org>
+
+#ifndef QGB18030CODEC_P_H
+#define QGB18030CODEC_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtCore/qtextcodec.h>
+#include <QtCore/qlist.h>
+
+QT_BEGIN_NAMESPACE
+
+#ifndef QT_NO_TEXTCODEC
+
+class QGb18030Codec : public QTextCodec {
+public:
+ QGb18030Codec();
+
+ static QByteArray _name() { return "GB18030"; }
+ static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
+ static int _mibEnum() { return 114; }
+
+ QByteArray name() const { return _name(); }
+ QList<QByteArray> aliases() const { return _aliases(); }
+ int mibEnum() const { return _mibEnum(); }
+
+ QString convertToUnicode(const char *, int, ConverterState *) const;
+ QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
+};
+
+class QGbkCodec : public QGb18030Codec {
+public:
+ QGbkCodec();
+
+ static QByteArray _name();
+ static QList<QByteArray> _aliases();
+ static int _mibEnum();
+
+ QByteArray name() const { return _name(); }
+ QList<QByteArray> aliases() const { return _aliases(); }
+ int mibEnum() const { return _mibEnum(); }
+
+ QString convertToUnicode(const char *, int, ConverterState *) const;
+ QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
+};
+
+class QGb2312Codec : public QGb18030Codec {
+public:
+ QGb2312Codec();
+
+ static QByteArray _name();
+ static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
+ static int _mibEnum();
+
+ QByteArray name() const { return _name(); }
+ int mibEnum() const { return _mibEnum(); }
+
+ QString convertToUnicode(const char *, int, ConverterState *) const;
+ QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
+};
+
+#ifdef Q_OS_UNIX
+
+class QFontGb2312Codec : public QTextCodec
+{
+public:
+ QFontGb2312Codec();
+
+ static QByteArray _name();
+ static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
+ static int _mibEnum();
+
+ QByteArray name() const { return _name(); }
+ int mibEnum() const { return _mibEnum(); }
+
+ QString convertToUnicode(const char *, int, ConverterState *) const;
+ QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
+};
+
+
+class QFontGbkCodec : public QTextCodec
+{
+public:
+ QFontGbkCodec();
+
+ static QByteArray _name();
+ static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
+ static int _mibEnum();
+
+ QByteArray name() const { return _name(); }
+ QList<QByteArray> aliases() const { return _aliases(); }
+ int mibEnum() const { return _mibEnum(); }
+
+ QString convertToUnicode(const char *, int, ConverterState *) const;
+ QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
+};
+
+class QFontGb18030_0Codec : public QTextCodec
+{
+public:
+ QFontGb18030_0Codec();
+
+ static QByteArray _name();
+ static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
+ static int _mibEnum();
+
+ QByteArray name() const { return _name(); }
+ QList<QByteArray> aliases() const { return _aliases(); }
+ int mibEnum() const { return _mibEnum(); }
+
+ QString convertToUnicode(const char *, int, ConverterState *) const;
+ QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
+};
+#endif // Q_OS_UNIX
+
+#endif // QT_NO_TEXTCODEC
+
+QT_END_NAMESPACE
+
+#endif // QGB18030CODEC_P_H
diff --git a/src/corelib/codecs/qiconvcodec.cpp b/src/corelib/codecs/qiconvcodec.cpp
index 428e7d4bbe..aa0ddca753 100644
--- a/src/corelib/codecs/qiconvcodec.cpp
+++ b/src/corelib/codecs/qiconvcodec.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -286,12 +286,16 @@ QString QIconvCodec::convertToUnicode(const char* chars, int len, ConverterState
}
} while (inBytesLeft != 0);
- QString s = utf16Codec->toUnicode(ba.constData(), ba.size() - outBytesLeft);
+ QString s;
if (convState) {
+ s = utf16Codec->toUnicode(ba.constData(), ba.size() - outBytesLeft, &state->internalState);
+
convState->invalidChars = invalidCount;
convState->remainingChars = remainingCount;
} else {
+ s = utf16Codec->toUnicode(ba.constData(), ba.size() - outBytesLeft);
+
// reset state
iconv(state->cd, 0, &inBytesLeft, 0, &outBytesLeft);
}
@@ -462,8 +466,13 @@ iconv_t QIconvCodec::createIconv_t(const char *to, const char *from)
iconv_t cd = (iconv_t) -1;
#if defined(__GLIBC__) || defined(GNU_LIBICONV)
+#if defined(Q_OS_QNX)
+ // on QNX the default locale is UTF-8, and an empty string will cause iconv_open to fail
+ static const char empty_codeset[] = "UTF-8";
+#else
// both GLIBC and libgnuiconv will use the locale's encoding if from or to is an empty string
static const char empty_codeset[] = "";
+#endif
const char *codeset = empty_codeset;
cd = iconv_open(to ? to : codeset, from ? from : codeset);
#else
diff --git a/src/corelib/codecs/qiconvcodec_p.h b/src/corelib/codecs/qiconvcodec_p.h
index fb2d89eeac..efe3b4b5f7 100644
--- a/src/corelib/codecs/qiconvcodec_p.h
+++ b/src/corelib/codecs/qiconvcodec_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -87,6 +87,7 @@ public:
public:
IconvState(iconv_t x);
~IconvState();
+ ConverterState internalState;
char *buffer;
int bufferLen;
iconv_t cd;
diff --git a/src/corelib/codecs/qisciicodec.cpp b/src/corelib/codecs/qisciicodec.cpp
index e17b21a507..0b93c4acdb 100644
--- a/src/corelib/codecs/qisciicodec.cpp
+++ b/src/corelib/codecs/qisciicodec.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/codecs/qisciicodec_p.h b/src/corelib/codecs/qisciicodec_p.h
index d529be1215..695a60ef13 100644
--- a/src/corelib/codecs/qisciicodec_p.h
+++ b/src/corelib/codecs/qisciicodec_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/codecs/qjiscodec.cpp b/src/corelib/codecs/qjiscodec.cpp
new file mode 100644
index 0000000000..83c4329496
--- /dev/null
+++ b/src/corelib/codecs/qjiscodec.cpp
@@ -0,0 +1,367 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+// Most of the code here was originally written by Serika Kurusugawa,
+// a.k.a. Junji Takagi, and is included in Qt with the author's permission
+// and the grateful thanks of the Qt team.
+
+/*! \class QJisCodec
+ \reentrant
+ \internal
+*/
+
+#include "qjiscodec_p.h"
+#include "qlist.h"
+
+QT_BEGIN_NAMESPACE
+
+#ifndef QT_NO_TEXTCODEC
+enum {
+ Esc = 0x1b,
+ So = 0x0e, // Shift Out
+ Si = 0x0f, // Shift In
+
+ ReverseSolidus = 0x5c,
+ YenSign = 0x5c,
+ Tilde = 0x7e,
+ Overline = 0x7e
+};
+
+#define IsKana(c) (((c) >= 0xa1) && ((c) <= 0xdf))
+#define IsJisChar(c) (((c) >= 0x21) && ((c) <= 0x7e))
+
+#define QValidChar(u) ((u) ? QChar((ushort)(u)) : QChar(QChar::ReplacementCharacter))
+
+enum Iso2022State{ Ascii, MinState = Ascii,
+ JISX0201_Latin, JISX0201_Kana,
+ JISX0208_1978, JISX0208_1983,
+ JISX0212, MaxState = JISX0212,
+ UnknownState };
+
+static const char Esc_CHARS[] = "()*+-./";
+
+static const char Esc_Ascii[] = {Esc, '(', 'B', 0 };
+static const char Esc_JISX0201_Latin[] = {Esc, '(', 'J', 0 };
+static const char Esc_JISX0201_Kana[] = {Esc, '(', 'I', 0 };
+static const char Esc_JISX0208_1978[] = {Esc, '$', '@', 0 };
+static const char Esc_JISX0208_1983[] = {Esc, '$', 'B', 0 };
+static const char Esc_JISX0212[] = {Esc, '$', '(', 'D', 0 };
+static const char * const Esc_SEQ[] = { Esc_Ascii,
+ Esc_JISX0201_Latin,
+ Esc_JISX0201_Kana,
+ Esc_JISX0208_1978,
+ Esc_JISX0208_1983,
+ Esc_JISX0212 };
+
+/*! \internal */
+QJisCodec::QJisCodec() : conv(QJpUnicodeConv::newConverter(QJpUnicodeConv::Default))
+{
+}
+
+
+/*! \internal */
+QJisCodec::~QJisCodec()
+{
+ delete (QJpUnicodeConv*)conv;
+ conv = 0;
+}
+
+QByteArray QJisCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *cs) const
+{
+ char replacement = '?';
+ if (cs) {
+ if (cs->flags & ConvertInvalidToNull)
+ replacement = 0;
+ }
+ int invalid = 0;
+
+ QByteArray result;
+ Iso2022State state = Ascii;
+ Iso2022State prev = Ascii;
+ for (int i = 0; i < len; i++) {
+ QChar ch = uc[i];
+ uint j;
+ if (ch.row() == 0x00 && ch.cell() < 0x80) {
+ // Ascii
+ if (state != JISX0201_Latin ||
+ ch.cell() == ReverseSolidus || ch.cell() == Tilde) {
+ state = Ascii;
+ }
+ j = ch.cell();
+ } else if ((j = conv->unicodeToJisx0201(ch.row(), ch.cell())) != 0) {
+ if (j < 0x80) {
+ // JIS X 0201 Latin
+ if (state != Ascii ||
+ ch.cell() == YenSign || ch.cell() == Overline) {
+ state = JISX0201_Latin;
+ }
+ } else {
+ // JIS X 0201 Kana
+ state = JISX0201_Kana;
+ j &= 0x7f;
+ }
+ } else if ((j = conv->unicodeToJisx0208(ch.row(), ch.cell())) != 0) {
+ // JIS X 0208
+ state = JISX0208_1983;
+ } else if ((j = conv->unicodeToJisx0212(ch.row(), ch.cell())) != 0) {
+ // JIS X 0212
+ state = JISX0212;
+ } else {
+ // Invalid
+ state = UnknownState;
+ j = replacement;
+ ++invalid;
+ }
+ if (state != prev) {
+ if (state == UnknownState) {
+ result += Esc_Ascii;
+ } else {
+ result += Esc_SEQ[state - MinState];
+ }
+ prev = state;
+ }
+ if (j < 0x0100) {
+ result += j & 0xff;
+ } else {
+ result += (j >> 8) & 0xff;
+ result += j & 0xff;
+ }
+ }
+ if (prev != Ascii) {
+ result += Esc_Ascii;
+ }
+
+ if (cs) {
+ cs->invalidChars += invalid;
+ }
+ return result;
+}
+
+QString QJisCodec::convertToUnicode(const char* chars, int len, ConverterState *cs) const
+{
+ uchar buf[4] = {0, 0, 0, 0};
+ int nbuf = 0;
+ Iso2022State state = Ascii, prev = Ascii;
+ bool esc = false;
+ QChar replacement = QChar::ReplacementCharacter;
+ if (cs) {
+ if (cs->flags & ConvertInvalidToNull)
+ replacement = QChar::Null;
+ nbuf = cs->remainingChars;
+ buf[0] = (cs->state_data[0] >> 24) & 0xff;
+ buf[1] = (cs->state_data[0] >> 16) & 0xff;
+ buf[2] = (cs->state_data[0] >> 8) & 0xff;
+ buf[3] = (cs->state_data[0] >> 0) & 0xff;
+ state = (Iso2022State)((cs->state_data[1] >> 0) & 0xff);
+ prev = (Iso2022State)((cs->state_data[1] >> 8) & 0xff);
+ esc = cs->state_data[2];
+ }
+ int invalid = 0;
+
+ QString result;
+ for (int i=0; i<len; i++) {
+ uchar ch = chars[i];
+ if (esc) {
+ // Escape sequence
+ state = UnknownState;
+ switch (nbuf) {
+ case 0:
+ if (ch == '$' || strchr(Esc_CHARS, ch)) {
+ buf[nbuf++] = ch;
+ } else {
+ nbuf = 0;
+ esc = false;
+ }
+ break;
+ case 1:
+ if (buf[0] == '$') {
+ if (strchr(Esc_CHARS, ch)) {
+ buf[nbuf++] = ch;
+ } else {
+ switch (ch) {
+ case '@':
+ state = JISX0208_1978; // Esc $ @
+ break;
+ case 'B':
+ state = JISX0208_1983; // Esc $ B
+ break;
+ }
+ nbuf = 0;
+ esc = false;
+ }
+ } else {
+ if (buf[0] == '(') {
+ switch (ch) {
+ case 'B':
+ state = Ascii; // Esc (B
+ break;
+ case 'I':
+ state = JISX0201_Kana; // Esc (I
+ break;
+ case 'J':
+ state = JISX0201_Latin; // Esc (J
+ break;
+ }
+ }
+ nbuf = 0;
+ esc = false;
+ }
+ break;
+ case 2:
+ if (buf[1] == '(') {
+ switch (ch) {
+ case 'D':
+ state = JISX0212; // Esc $ (D
+ break;
+ }
+ }
+ nbuf = 0;
+ esc = false;
+ break;
+ }
+ } else {
+ if (ch == Esc) {
+ // Escape sequence
+ nbuf = 0;
+ esc = true;
+ } else if (ch == So) {
+ // Shift out
+ prev = state;
+ state = JISX0201_Kana;
+ nbuf = 0;
+ } else if (ch == Si) {
+ // Shift in
+ if (prev == Ascii || prev == JISX0201_Latin) {
+ state = prev;
+ } else {
+ state = Ascii;
+ }
+ nbuf = 0;
+ } else {
+ uint u;
+ switch (nbuf) {
+ case 0:
+ switch (state) {
+ case Ascii:
+ if (ch < 0x80) {
+ result += QLatin1Char(ch);
+ break;
+ }
+ /* fall through */
+ case JISX0201_Latin:
+ u = conv->jisx0201ToUnicode(ch);
+ result += QValidChar(u);
+ break;
+ case JISX0201_Kana:
+ u = conv->jisx0201ToUnicode(ch | 0x80);
+ result += QValidChar(u);
+ break;
+ case JISX0208_1978:
+ case JISX0208_1983:
+ case JISX0212:
+ buf[nbuf++] = ch;
+ break;
+ default:
+ result += QChar::ReplacementCharacter;
+ break;
+ }
+ break;
+ case 1:
+ switch (state) {
+ case JISX0208_1978:
+ case JISX0208_1983:
+ u = conv->jisx0208ToUnicode(buf[0] & 0x7f, ch & 0x7f);
+ result += QValidChar(u);
+ break;
+ case JISX0212:
+ u = conv->jisx0212ToUnicode(buf[0] & 0x7f, ch & 0x7f);
+ result += QValidChar(u);
+ break;
+ default:
+ result += replacement;
+ ++invalid;
+ break;
+ }
+ nbuf = 0;
+ break;
+ }
+ }
+ }
+ }
+
+ if (cs) {
+ cs->remainingChars = nbuf;
+ cs->invalidChars += invalid;
+ cs->state_data[0] = (buf[0] << 24) + (buf[1] << 16) + (buf[2] << 8) + buf[3];
+ cs->state_data[1] = (prev << 8) + state;
+ cs->state_data[2] = esc;
+ }
+
+ return result;
+}
+
+
+
+/*! \internal */
+int QJisCodec::_mibEnum()
+{
+ return 39;
+}
+
+/*! \internal */
+QByteArray QJisCodec::_name()
+{
+ return "ISO-2022-JP";
+}
+
+/*!
+ Returns the codec's mime name.
+*/
+QList<QByteArray> QJisCodec::_aliases()
+{
+ QList<QByteArray> list;
+ list << "JIS7"; // Qt 3 compat
+ return list;
+}
+
+#endif // QT_NO_TEXTCODEC
+
+QT_END_NAMESPACE
diff --git a/src/corelib/codecs/qjiscodec_p.h b/src/corelib/codecs/qjiscodec_p.h
new file mode 100644
index 0000000000..daccf57c87
--- /dev/null
+++ b/src/corelib/codecs/qjiscodec_p.h
@@ -0,0 +1,117 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+// Most of the code here was originally written by Serika Kurusugawa
+// a.k.a. Junji Takagi, and is included in Qt with the author's permission,
+// and the grateful thanks of the Qt team.
+
+/*
+ * Copyright (C) 1999 Serika Kurusugawa, All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef QJISCODEC_P_H
+#define QJISCODEC_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "qjpunicode_p.h"
+#include <QtCore/qtextcodec.h>
+#include <QtCore/qlist.h>
+
+QT_BEGIN_NAMESPACE
+
+#ifndef QT_NO_TEXTCODEC
+
+class QJisCodec : public QTextCodec {
+public:
+ static QByteArray _name();
+ static QList<QByteArray> _aliases();
+ static int _mibEnum();
+
+ QByteArray name() const { return _name(); }
+ QList<QByteArray> aliases() const { return _aliases(); }
+ int mibEnum() const { return _mibEnum(); }
+
+ QString convertToUnicode(const char *, int, ConverterState *) const;
+ QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
+
+ QJisCodec();
+ ~QJisCodec();
+
+protected:
+ const QJpUnicodeConv *conv;
+};
+
+#endif // QT_NO_TEXTCODEC
+
+QT_END_NAMESPACE
+
+#endif // QJISCODEC_P_H
diff --git a/src/corelib/codecs/qjpunicode.cpp b/src/corelib/codecs/qjpunicode.cpp
new file mode 100644
index 0000000000..1e4883fa8b
--- /dev/null
+++ b/src/corelib/codecs/qjpunicode.cpp
@@ -0,0 +1,10700 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+/*! \class QJpUnicodeConv
+ \reentrant
+ \internal
+*/
+
+#include "qjpunicode_p.h"
+
+#include "qbytearray.h"
+#include <stdlib.h>
+
+QT_BEGIN_NAMESPACE
+
+#define USE_JISX0212
+
+#define Q_STRICT
+
+#define IsLatin(c) (/*((c) >= 0x00) &&*/ ((c) <= 0x7f))
+#define IsKana(c) (((c) >= 0xa1) && ((c) <= 0xdf))
+#define IsJisChar(c) (((c) >= 0x21) && ((c) <= 0x7e))
+#define IsSjisChar1(c) ((((c) >= 0x81) && ((c) <= 0x9f)) || \
+ (((c) >= 0xe0) && ((c) <= 0xfc)))
+#define IsSjisUDC1(c) (((c) >= 0xf0) && ((c) <= 0xfc))
+#define IsSjisChar2(c) (((c) >= 0x40) && ((c) != 0x7f) && ((c) <= 0xfc))
+
+#define IsSjisIBMVDCChar1(c) (((c) >= 0xfa) && ((c) <= 0xfc))
+
+static uint jisx0208ToSjis(uint h, uint l);
+static
+inline uint jisx0208ToSjis(uint jis)
+{
+ return jisx0208ToSjis((jis & 0xff00) >> 8, (jis & 0x00ff));
+}
+
+static uint sjisToJisx0208(uint h, uint l);
+#if 0
+static
+inline uint sjisToJisx0208(uint sjis)
+{
+ return sjisToJisx0208((sjis & 0xff00) >> 8, (sjis & 0x00ff));
+}
+#endif
+
+static uint jisx0201ToUnicode11(uint h, uint l);
+static uint jisx0208ToUnicode11(uint h, uint l);
+static uint jisx0212ToUnicode11(uint h, uint l);
+
+static uint unicode11ToJisx0201(uint h, uint l);
+static uint unicode11ToJisx0208(uint h, uint l);
+static uint unicode11ToJisx0212(uint h, uint l);
+
+/*
+ * Unicode 1.1 conversion.
+ */
+
+/*!
+ \fn QJpUnicodeConv::QJpUnicodeConv (int r)
+ \internal
+*/
+
+
+/*! \internal */
+uint QJpUnicodeConv::asciiToUnicode(uint h, uint l) const
+{
+ if ((h == 0) && (l < 0x80)) {
+ return l;
+ }
+ return 0x0000;
+}
+
+/*! \internal */
+uint QJpUnicodeConv::jisx0201ToUnicode(uint h, uint l) const
+{
+ if (h == 0) {
+ if (IsLatin(l)) {
+ return jisx0201LatinToUnicode(h, l);
+ } else if (IsKana(l)) {
+ return jisx0201KanaToUnicode(h, l);
+ }
+ }
+ return 0x0000;
+}
+
+/*! \internal */
+uint QJpUnicodeConv::jisx0201LatinToUnicode(uint h, uint l) const
+{
+ if ((h == 0) && IsLatin(l)) {
+ return jisx0201ToUnicode11(h, l);
+ }
+ return 0x0000;
+}
+
+/*! \internal */
+uint QJpUnicodeConv::jisx0201KanaToUnicode(uint h, uint l) const
+{
+ if ((h == 0) && IsKana(l)) {
+ return jisx0201ToUnicode11(h, l);
+ }
+ return 0x0000;
+}
+
+/*! \internal */
+uint QJpUnicodeConv::jisx0208ToUnicode(uint h, uint l) const
+{
+ if (rule & UDC){
+ if ((0x75 <= h) && (h <= 0x7e) && IsJisChar(l)/*0x21 - 0x7e*/) {
+ // User Defined Char (mapped to Private Use Area)
+ return 0xe000 + (h - 0x75) * 0x5e + (l - 0x21);
+ }
+ }
+ if ((rule & NEC_VDC) == 0) {
+ if ((h == 0x2d) && (IsJisChar(l)/*0x21 - 0x7c*/)) {
+ // NEC Vendor Defined Char
+ return 0x0000;
+ }
+ }
+ return jisx0208ToUnicode11(h, l);
+}
+
+/*! \internal */
+uint QJpUnicodeConv::jisx0212ToUnicode(uint h, uint l) const
+{
+ if (rule & UDC){
+ if ((0x75 <= h) && (h <= 0x7e) && IsJisChar(l)/*0x21 - 0x7e*/) {
+ // User Defined Char (mapped to Private Use Area)
+ return 0xe3ac + (h - 0x75) * 0x5e + (l - 0x21);
+ }
+ }
+ if ((rule & IBM_VDC) == 0){
+ if (((h == 0x73) && (0x73 <= l) && (l <= 0x7e)) ||
+ ((h == 0x74) && (IsJisChar(l)/*0x21 - 0x7e*/))) {
+ // IBM Vendor Defined Char
+ return 0x0000;
+ }
+ }
+ return jisx0212ToUnicode11(h, l);
+}
+
+/*! \internal */
+uint QJpUnicodeConv::unicodeToAscii(uint h, uint l) const
+{
+ if ((h == 0) && (l < 0x80)) {
+ return l;
+ }
+ return 0x0000;
+}
+
+/*! \internal */
+uint QJpUnicodeConv::unicodeToJisx0201(uint h, uint l) const
+{
+ uint jis;
+ if ((jis = unicodeToJisx0201Latin(h, l)) != 0) {
+ return jis;
+ } else if ((jis = unicodeToJisx0201Kana(h, l)) != 0) {
+ return jis;
+ }
+ return 0x0000;
+}
+
+/*! \internal */
+uint QJpUnicodeConv::unicodeToJisx0201Latin(uint h, uint l) const
+{
+ uint jis = unicode11ToJisx0201(h, l);
+ if (IsLatin(jis)) {
+ return jis;
+ }
+ return 0x0000;
+}
+
+/*! \internal */
+uint QJpUnicodeConv::unicodeToJisx0201Kana(uint h, uint l) const
+{
+ uint jis = unicode11ToJisx0201(h, l);
+ if (IsKana(jis)) {
+ return jis;
+ }
+ return 0x0000;
+}
+
+/*! \internal */
+uint QJpUnicodeConv::unicodeToJisx0208(uint h, uint l) const
+{
+ if (rule & UDC){
+ uint unicode = (h << 8) | l;
+ if ((0xe000 <= unicode) && (unicode <= 0xe3ab)) {
+ // User Defined Char (mapped to Private Use Area)
+ unicode -= 0xe000;
+ return ((0x75 + unicode / 0x5e) << 8) | (0x21 + unicode % 0x5e);
+ }
+ }
+ uint jis = unicode11ToJisx0208(h, l);
+ if ((rule & NEC_VDC) == 0) {
+ if ((0x2d21 <= jis) && (jis <= 0x2d7c)) {
+ // NEC Vendor Defined Char
+ return 0x0000;
+ }
+ }
+ return jis;
+}
+
+/*! \internal */
+uint QJpUnicodeConv::unicodeToJisx0212(uint h, uint l) const
+{
+ if (rule & UDC){
+ uint unicode = (h << 8) | l;
+ if ((0xe3ac <= unicode) && (unicode <= 0xe757)) {
+ // User Defined Char (mapped to Private Use Area)
+ unicode -= 0xe3ac;
+ return ((0x75 + unicode / 0x5e) << 8) | (0x21 + unicode % 0x5e);
+ }
+ }
+ uint jis = unicode11ToJisx0212(h, l);
+ if ((rule & IBM_VDC) == 0){
+ if (((0x7373 <= jis) && (jis <= 0x737e)) ||
+ ((0x7421 <= jis) && (jis <= 0x747e))) {
+ // IBM Vendor Defined Char
+ return 0x0000;
+ }
+ }
+ return jis;
+}
+
+/*! \internal */
+uint QJpUnicodeConv::sjisToUnicode(uint h, uint l) const
+{
+ if (h == 0) {
+ return jisx0201ToUnicode(h, l);
+ } else if (IsSjisChar1(h) && IsSjisChar2(l)) {
+ return jisx0208ToUnicode(sjisToJisx0208(h, l));
+ }
+ return 0x0000;
+}
+
+/*! \internal */
+uint QJpUnicodeConv::unicodeToSjis(uint h, uint l) const
+{
+ uint jis;
+ if ((jis = unicodeToJisx0201(h, l)) != 0x0000) {
+ return jis;
+ } else if ((jis = unicodeToJisx0208(h, l)) != 0x0000) {
+ return jisx0208ToSjis(jis);
+ } else if ((jis = unicodeToJisx0212(h, l)) != 0x0000) {
+ return 0x0000;
+ }
+ return 0x0000;
+}
+
+/*
+ * Unicode 1.1 with JISX0201 conversion.
+ */
+
+class QJpUnicodeConv_Unicode_JISX0201 : public QJpUnicodeConv {
+public:
+ QJpUnicodeConv_Unicode_JISX0201(int r) : QJpUnicodeConv(r) {}
+
+// uint AsciiToUnicode(uint h, uint l) const;
+// uint Jisx0201ToUnicode(uint h, uint l) const;
+// uint Jisx0201LatinToUnicode(uint h, uint l) const;
+// uint Jisx0201KanaToUnicode(uint h, uint l) const;
+// uint Jisx0208ToUnicode(uint h, uint l) const;
+// uint Jisx0212ToUnicode(uint h, uint l) const;
+
+// uint UnicodeToAscii(uint h, uint l) const;
+// uint UnicodeToJisx0201(uint h, uint l) const;
+// uint UnicodeToJisx0201Latin(uint h, uint l) const;
+// uint UnicodeToJisx0201Kana(uint h, uint l) const;
+// uint UnicodeToJisx0208(uint h, uint l) const;
+// uint UnicodeToJisx0212(uint h, uint l) const;
+};
+
+/*
+ * Unicode 1.1 with ASCII conversion.
+ */
+
+class QJpUnicodeConv_Unicode_ASCII : public QJpUnicodeConv {
+public:
+ QJpUnicodeConv_Unicode_ASCII(int r) : QJpUnicodeConv(r) {}
+
+// uint AsciiToUnicode(uint h, uint l) const;
+// uint Jisx0201ToUnicode(uint h, uint l) const;
+// uint Jisx0201LatinToUnicode(uint h, uint l) const;
+// uint Jisx0201KanaToUnicode(uint h, uint l) const;
+ uint jisx0208ToUnicode(uint h, uint l) const;
+ uint jisx0212ToUnicode(uint h, uint l) const;
+
+// uint UnicodeToAscii(uint h, uint l) const;
+// uint UnicodeToJisx0201(uint h, uint l) const;
+// uint UnicodeToJisx0201Latin(uint h, uint l) const;
+// uint UnicodeToJisx0201Kana(uint h, uint l) const;
+ uint unicodeToJisx0208(uint h, uint l) const;
+ uint unicodeToJisx0212(uint h, uint l) const;
+};
+
+uint QJpUnicodeConv_Unicode_ASCII::jisx0208ToUnicode(uint h, uint l) const
+{
+ if ((h == 0x21) && (l == 0x40)) {
+ return 0xff3c;
+ }
+ return QJpUnicodeConv::jisx0208ToUnicode(h, l);
+}
+
+uint QJpUnicodeConv_Unicode_ASCII::jisx0212ToUnicode(uint h, uint l) const
+{
+ if ((h == 0x22) && (l == 0x37)) {
+ return 0xff5e;
+ }
+ return QJpUnicodeConv::jisx0212ToUnicode(h, l);
+}
+
+uint QJpUnicodeConv_Unicode_ASCII::unicodeToJisx0208(uint h, uint l) const
+{
+ if ((h == 0x00) && (l == 0x5c)) {
+ return 0x0000;
+ }
+ return QJpUnicodeConv::unicodeToJisx0208(h, l);
+}
+
+/*! \internal */
+uint QJpUnicodeConv_Unicode_ASCII::unicodeToJisx0212(uint h, uint l) const
+{
+ if ((h == 0x00) && (l == 0x7e)) {
+ return 0x0000;
+ }
+ if ((h == 0xff) && (l == 0x5e)) {
+ return 0x2237;
+ }
+ return QJpUnicodeConv::unicodeToJisx0208(h, l);
+}
+
+/*
+ * JISX0221 with JISX0201 conversion.
+ */
+
+class QJpUnicodeConv_JISX0221_JISX0201 : public QJpUnicodeConv {
+public:
+ QJpUnicodeConv_JISX0221_JISX0201(int r) : QJpUnicodeConv(r) {}
+
+ uint asciiToUnicode(uint h, uint l) const;
+// uint Jisx0201ToUnicode(uint h, uint l) const;
+// uint Jisx0201LatinToUnicode(uint h, uint l) const;
+// uint Jisx0201KanaToUnicode(uint h, uint l) const;
+ uint jisx0208ToUnicode(uint h, uint l) const;
+// uint Jisx0212ToUnicode(uint h, uint l) const;
+
+ uint unicodeToAscii(uint h, uint l) const;
+// uint UnicodeToJisx0201(uint h, uint l) const;
+// uint UnicodeToJisx0201Latin(uint h, uint l) const;
+// uint UnicodeToJisx0201Kana(uint h, uint l) const;
+ uint unicodeToJisx0208(uint h, uint l) const;
+// uint UnicodeToJisx0212(uint h, uint l) const;
+};
+
+uint QJpUnicodeConv_JISX0221_JISX0201::asciiToUnicode(uint h, uint l) const
+{
+ return jisx0201LatinToUnicode(h, l);
+}
+
+uint QJpUnicodeConv_JISX0221_JISX0201::jisx0208ToUnicode(uint h, uint l) const
+{
+ if ((h == 0x21) && (l == 0x3d)) {
+ return 0x2014;
+ }
+ return QJpUnicodeConv::jisx0208ToUnicode(h, l);
+}
+
+uint QJpUnicodeConv_JISX0221_JISX0201::unicodeToAscii(uint h, uint l) const
+{
+ return unicodeToJisx0201Latin(h, l);
+}
+
+uint QJpUnicodeConv_JISX0221_JISX0201::unicodeToJisx0208(uint h, uint l) const
+{
+#ifdef Q_STRICT
+ if ((h == 0x20) && (l == 0x15)) {
+ return 0x0000;
+ }
+#endif
+ if ((h == 0x20) && (l == 0x14)) {
+ return 0x213d;
+ }
+ return QJpUnicodeConv::unicodeToJisx0208(h, l);
+}
+
+/*
+ * JISX0221 with ASCII conversion.
+ */
+
+class QJpUnicodeConv_JISX0221_ASCII : public QJpUnicodeConv {
+public:
+ QJpUnicodeConv_JISX0221_ASCII(int r) : QJpUnicodeConv(r) {}
+
+// uint AsciiToUnicode(uint h, uint l) const;
+// uint Jisx0201ToUnicode(uint h, uint l) const;
+ uint jisx0201LatinToUnicode(uint h, uint l) const;
+// uint Jisx0201KanaToUnicode(uint h, uint l) const;
+ uint jisx0208ToUnicode(uint h, uint l) const;
+ uint jisx0212ToUnicode(uint h, uint l) const;
+
+// uint UnicodeToAscii(uint h, uint l) const;
+// uint UnicodeToJisx0201(uint h, uint l) const;
+ uint unicodeToJisx0201Latin(uint h, uint l) const;
+// uint UnicodeToJisx0201Kana(uint h, uint l) const;
+ uint unicodeToJisx0208(uint h, uint l) const;
+ uint unicodeToJisx0212(uint h, uint l) const;
+};
+
+uint QJpUnicodeConv_JISX0221_ASCII::jisx0201LatinToUnicode(uint h, uint l) const
+{
+ return asciiToUnicode(h, l);
+}
+
+uint QJpUnicodeConv_JISX0221_ASCII::jisx0208ToUnicode(uint h, uint l) const
+{
+ if (h == 0x21) {
+ if (l == 0x31) {
+ return 0x203e;
+ } else if (l == 0x3d) {
+ return 0x02014;
+ } else if (l == 0x40) {
+ return 0xff3c;
+ } else if (l == 0x6f) {
+ return 0x00a5;
+ }
+ }
+ return QJpUnicodeConv::jisx0208ToUnicode(h, l);
+}
+
+uint QJpUnicodeConv_JISX0221_ASCII::jisx0212ToUnicode(uint h, uint l) const
+{
+ if ((h == 0x22) && (l == 0x37)) {
+ return 0xff5e;
+ }
+ return QJpUnicodeConv::jisx0212ToUnicode(h, l);
+}
+
+uint QJpUnicodeConv_JISX0221_ASCII::unicodeToJisx0201Latin(uint h, uint l) const
+{
+ return QJpUnicodeConv::unicodeToAscii(h, l);
+}
+
+uint QJpUnicodeConv_JISX0221_ASCII::unicodeToJisx0208(uint h, uint l) const
+{
+#ifdef Q_STRICT
+ if (((h == 0x00) && (l == 0x5c)) ||
+ ((h == 0x20) && (l == 0x15)) ||
+ ((h == 0xff) && ((l == 0xe3) || (l == 0xe5)))) {
+ return 0x0000;
+ }
+#else
+ if ((h == 0x00) && (l == 0x5c)) {
+ return 0x0000;
+ }
+#endif
+ if ((h == 0x00) && (l == 0xa5)) {
+ return 0x216f;
+ } else if (h == 0x20) {
+ if (l == 0x14) {
+ return 0x213d;
+ } else if (l == 0x3e) {
+ return 0x2131;
+ }
+ }
+ return QJpUnicodeConv::unicodeToJisx0208(h, l);
+}
+
+/*! \internal */
+uint QJpUnicodeConv_JISX0221_ASCII::unicodeToJisx0212(uint h, uint l) const
+{
+ if ((h == 0x00) && (l == 0x7e)) {
+ return 0x0000;
+ }
+ if ((h == 0xff) && (l == 0x5e)) {
+ return 0x2237;
+ }
+ return QJpUnicodeConv::unicodeToJisx0212(h, l);
+}
+
+/*
+ * Sun Microsystems conversion.
+ */
+
+class QJpUnicodeConv_Sun : public QJpUnicodeConv {
+public:
+ QJpUnicodeConv_Sun(int r) : QJpUnicodeConv(r) {}
+
+// uint AsciiToUnicode(uint h, uint l) const;
+// uint Jisx0201ToUnicode(uint h, uint l) const;
+ uint jisx0201LatinToUnicode(uint h, uint l) const;
+// uint Jisx0201KanaToUnicode(uint h, uint l) const;
+ uint jisx0208ToUnicode(uint h, uint l) const;
+ uint jisx0212ToUnicode(uint h, uint l) const;
+
+ uint unicodeToAscii(uint h, uint l) const;
+// uint UnicodeToJisx0201(uint h, uint l) const;
+ uint unicodeToJisx0201Latin(uint h, uint l) const;
+// uint UnicodeToJisx0201Kana(uint h, uint l) const;
+ uint unicodeToJisx0208(uint h, uint l) const;
+ uint unicodeToJisx0212(uint h, uint l) const;
+};
+
+uint QJpUnicodeConv_Sun::jisx0201LatinToUnicode(uint h, uint l) const
+{
+ return asciiToUnicode(h, l);
+}
+
+uint QJpUnicodeConv_Sun::jisx0208ToUnicode(uint h, uint l) const
+{
+ if ((h == 0x21) && (l == 0x40)) {
+ return 0xff3c;
+ }
+ return QJpUnicodeConv::jisx0208ToUnicode(h, l);
+}
+
+uint QJpUnicodeConv_Sun::jisx0212ToUnicode(uint h, uint l) const
+{
+#if 1
+ // Added by Serika Kususugawa to avoid conflict on U+007c.
+ if ((h == 0x22) && (l == 0x37)) {
+ return 0xff5e;
+ }
+#endif
+ return QJpUnicodeConv::jisx0212ToUnicode(h, l);
+}
+
+uint QJpUnicodeConv_Sun::unicodeToAscii(uint h, uint l) const
+{
+ if ((h == 0x00) && (l == 0xa5)) {
+ return 0x005c;
+ } else if ((h == 0x20) && (l == 0x3e)) {
+ return 0x007e;
+ }
+ return QJpUnicodeConv::unicodeToAscii(h, l);
+}
+
+uint QJpUnicodeConv_Sun::unicodeToJisx0201Latin(uint h, uint l) const
+{
+ return QJpUnicodeConv::unicodeToAscii(h, l);
+}
+
+uint QJpUnicodeConv_Sun::unicodeToJisx0208(uint h, uint l) const
+{
+ if ((h == 0x00) && (l == 0xa5)) {
+ return 0x0000;
+ } else if ((h == 0x20) && (l == 0x3e)) {
+ return 0x0000;
+ }
+ return QJpUnicodeConv::unicodeToJisx0208(h, l);
+}
+
+/*! \internal */
+uint QJpUnicodeConv_Sun::unicodeToJisx0212(uint h, uint l) const
+{
+#if 1
+ // Added by Serika Kususugawa to avoid conflict on U+007c.
+ if ((h == 0x00) && (l == 0x7e)) {
+ return 0x0000;
+ }
+ if ((h == 0xff) && (l == 0x5e)) {
+ return 0x2237;
+ }
+#endif
+ return QJpUnicodeConv::unicodeToJisx0212(h, l);
+}
+
+/*
+ * Microsoft conversion.
+ */
+
+class QJpUnicodeConv_Microsoft : public QJpUnicodeConv {
+public:
+ QJpUnicodeConv_Microsoft(int r) : QJpUnicodeConv(r) {}
+
+// uint AsciiToUnicode(uint h, uint l) const;
+// uint Jisx0201ToUnicode(uint h, uint l) const;
+ uint jisx0201LatinToUnicode(uint h, uint l) const;
+// uint Jisx0201KanaToUnicode(uint h, uint l) const;
+ uint jisx0208ToUnicode(uint h, uint l) const;
+ uint jisx0212ToUnicode(uint h, uint l) const;
+
+// uint UnicodeToAscii(uint h, uint l) const;
+// uint UnicodeToJisx0201(uint h, uint l) const;
+ uint unicodeToJisx0201Latin(uint h, uint l) const;
+// uint UnicodeToJisx0201Kana(uint h, uint l) const;
+ uint unicodeToJisx0208(uint h, uint l) const;
+ uint unicodeToJisx0212(uint h, uint l) const;
+};
+
+uint QJpUnicodeConv_Microsoft::jisx0201LatinToUnicode(uint h, uint l) const
+{
+ return asciiToUnicode(h, l);
+}
+
+uint QJpUnicodeConv_Microsoft::jisx0208ToUnicode(uint h, uint l) const
+{
+ if (h == 0x21) {
+ if (l == 0x40) {
+ return 0xff3c;
+ } else if (l == 0x41) {
+ return 0xff5e;
+ } else if (l == 0x42) {
+ return 0x2225;
+ } else if (l == 0x5d) {
+ return 0xff0d;
+ } else if (l == 0x71) {
+ return 0xffe0;
+ } else if (l == 0x72) {
+ return 0xffe1;
+ }
+ } else if (h == 0x22) {
+ if (l == 0x4c) {
+ return 0xffe2;
+ }
+ }
+ return QJpUnicodeConv::jisx0208ToUnicode(h, l);
+}
+
+uint QJpUnicodeConv_Microsoft::jisx0212ToUnicode(uint h, uint l) const
+{
+ if (h == 0x22) {
+ if (l == 0x37) {
+ return 0xff5e;
+ } else if (l == 0x43) {
+ return 0xffe4;
+ }
+ }
+ return QJpUnicodeConv::jisx0212ToUnicode(h, l);
+}
+
+uint QJpUnicodeConv_Microsoft::unicodeToJisx0201Latin(uint h, uint l) const
+{
+ return QJpUnicodeConv::unicodeToAscii(h, l);
+}
+
+uint QJpUnicodeConv_Microsoft::unicodeToJisx0208(uint h, uint l) const
+{
+#ifdef Q_STRICT
+ if (((h == 0x00) && ((l == 0x5c) || (l == 0xa2) || (l == 0xa3) || (l == 0xac))) ||
+ ((h == 0x20) && (l == 0x16)) ||
+ ((h == 0x22) && (l == 0x12)) ||
+ ((h == 0x30) && (l == 0x1c))) {
+ return 0x0000;
+ }
+#else
+ if ((h == 0x00) && (l == 0x5c)) {
+ return 0x0000;
+ }
+#endif
+ if ((h == 0x22) && (l == 0x25)) {
+ return 0x2142;
+ } else if (h == 0xff) {
+ if (l == 0x0d) {
+ return 0x215d;
+ } else if (l == 0xe0) {
+ return 0x2171;
+ } else if (l == 0xe1) {
+ return 0x2172;
+ } else if (l == 0xe2) {
+ return 0x224c;
+ }
+ }
+ return QJpUnicodeConv::unicodeToJisx0208(h, l);
+}
+
+uint QJpUnicodeConv_Microsoft::unicodeToJisx0212(uint h, uint l) const
+{
+#ifdef Q_STRICT
+ if ((h == 0x00) && ((l == 0x7e) || (l == 0xa6))) {
+ return 0x0000;
+ }
+#else
+ if ((h == 0x00) && (l == 0x7e)) {
+ return 0x0000;
+ }
+#endif
+ if (h == 0xff) {
+ if (l == 0x5e) {
+ return 0x2237;
+ } else if (l == 0xe4) {
+ return 0x2243;
+ }
+ }
+ return QJpUnicodeConv::unicodeToJisx0212(h, l);
+}
+
+
+/*! \internal */
+QJpUnicodeConv *QJpUnicodeConv::newConverter(int rule)
+{
+ QByteArray env = qgetenv("UNICODEMAP_JP");
+ if (rule == Default && !env.isNull()) {
+ for (int i = 0; i < (int)env.length();) {
+ int j = env.indexOf(',', i);
+ QByteArray s;
+ if (j < 0) {
+ s = env.mid(i).trimmed();
+ i = env.length();
+ } else {
+ s = env.mid(i, j - i).trimmed();
+ i = j + 1;
+ }
+ if (qstricmp(s, "unicode-0.9") == 0) {
+ rule = (rule & 0xff00) | Unicode;
+ } else if (qstricmp(s, "unicode-0201") == 0) {
+ rule = (rule & 0xff00) | Unicode_JISX0201;
+ } else if (qstricmp(s, "unicode-ascii") == 0) {
+ rule = (rule & 0xff00) | Unicode_ASCII;
+ } else if (qstricmp(s, "jisx0221-1995") == 0) {
+ rule = (rule & 0xff00) | JISX0221_JISX0201;
+ } else if ((qstricmp(s, "open-0201") == 0) ||
+ (qstricmp(s, "open-19970715-0201") == 0)) {
+ rule = (rule & 0xff00) | JISX0221_JISX0201;
+ } else if ((qstricmp(s, "open-ascii") == 0) ||
+ (qstricmp(s, "open-19970715-ascii") == 0)) {
+ rule = (rule & 0xff00) | JISX0221_ASCII;
+ } else if ((qstricmp(s, "open-ms") == 0) ||
+ (qstricmp(s, "open-19970715-ms") == 0)) {
+ rule = (rule & 0xff00) | Microsoft_CP932;
+ } else if (qstricmp(s, "cp932") == 0) {
+ rule = (rule & 0xff00) | Microsoft_CP932;
+ } else if (qstricmp(s, "jdk1.1.7") == 0) {
+ rule = (rule & 0xff00) | Sun_JDK117;
+ } else if (qstricmp(s, "nec-vdc") == 0) {
+ rule = rule | NEC_VDC;
+ } else if (qstricmp(s, "ibm-vdc") == 0) {
+ rule = rule | IBM_VDC;
+ } else if (qstricmp(s, "udc") == 0) {
+ rule = rule | UDC;
+ }
+ }
+ }
+
+ switch (rule & 0x00ff) {
+ case Unicode_JISX0201:
+ return new QJpUnicodeConv_Unicode_JISX0201(rule);
+ case Unicode_ASCII:
+ return new QJpUnicodeConv_Unicode_ASCII(rule);
+ case JISX0221_JISX0201:
+ return new QJpUnicodeConv_JISX0221_JISX0201(rule);
+ case JISX0221_ASCII:
+ return new QJpUnicodeConv_JISX0221_ASCII(rule);
+ case Sun_JDK117:
+ return new QJpUnicodeConv_Sun(rule);
+ case Microsoft_CP932:
+ return new QJpUnicodeConv_Microsoft(rule);
+ default:
+ return new QJpUnicodeConv_Unicode_ASCII(rule);
+ }
+}
+
+/*
+ * JISX0208 <-> ShiftJIS conversion.
+ */
+
+static uint jisx0208ToSjis(uint h, uint l)
+{
+ if ((0x0021 <= h) && (h <= 0x007e) && (0x0021 <= l) && (l <= 0x007e)) {
+ return ((((h - 1) >> 1) + ((h <= 0x5e) ? 0x71 : 0xb1)) << 8) |
+ (l + ((h & 1) ? ((l < 0x60) ? 0x1f : 0x20) : 0x7e));
+ }
+ return 0x0000;
+}
+
+static uint sjisToJisx0208(uint h, uint l)
+{
+ if ((((0x81 <= h) && (h <= 0x9f)) || ((0xe0 <= h) && (h <= 0xef))) &&
+ ((0x40 <= l) && (l != 0x7f) && (l <= 0xfc))) {
+ if (l < 0x9f) {
+ return (((h << 1) - ((h <= 0x9f) ? 0x00e1 : 0x0161)) << 8) |
+ (l - ((l <= 0x7f) ? 0x1f : 0x20));
+ } else {
+ return (((h << 1) - ((h <= 0x9f) ? 0x00e1 : 0x0161) + 1) << 8) |
+ (l - 0x7e);
+ }
+ }
+ return 0x0000;
+}
+
+/*
+ * This function is derived from Unicode 1.1,
+ * JIS X 0201 (1976) to Unicode mapping table version 0.9 .
+ */
+
+#define JISX0201_YEN_SIGN 0x005c
+#define UNICODE_YEN_SIGN 0x00a5
+
+#define JISX0201_OVERLINE 0x007e
+#define UNICODE_OVERLINE 0x203e
+
+static uint jisx0201ToUnicode11(uint h, uint l)
+{
+ if (h == 0x00) {
+ if (l < 0x80) {
+ if (l == JISX0201_YEN_SIGN) {
+ return UNICODE_YEN_SIGN;
+ } else if (l == JISX0201_OVERLINE) {
+ return UNICODE_OVERLINE;
+ } else {
+ return l;
+ }
+ } else if ((0xa1 <= l) && (l <= 0x00df)) {
+ return 0xff61 + l - 0x00a1;
+ }
+ }
+ return 0x0000;
+}
+
+/*
+ * This function is derived from Unicode 1.1,
+ * JIS X 0201 (1976) to Unicode mapping table version 0.9 .
+ */
+
+static uint unicode11ToJisx0201(uint h, uint l)
+{
+ if ((h == 0x00) && (l < 0x80)) {
+ if ((l == JISX0201_YEN_SIGN) ||
+ (l == JISX0201_OVERLINE)) {
+ return 0x0000;
+ }
+ return l;
+ } else if ((h == 0x00) && (l == 0xa5)) {
+ return JISX0201_YEN_SIGN;
+ } else if ((h == 0x20) && (l == 0x3e)) {
+ return JISX0201_OVERLINE;
+ } else if ((h == 0xff) && (0x61 <= l) && (l <= 0x9f)) {
+ return 0x00a1 + l - 0x61;
+ }
+ return 0x0000;
+}
+
+/*
+ * This data is derived from Unicode 1.1,
+ * JIS X 0208 (1990) to Unicode mapping table version 0.9 .
+ * (In addition NEC Vender Defined Char included)
+ */
+static unsigned short const jisx0208_to_unicode[] = {
+ /* 0x2121 - 0x217e */
+ 0x3000, 0x3001, 0x3002, 0xff0c, 0xff0e, 0x30fb, 0xff1a,
+ 0xff1b, 0xff1f, 0xff01, 0x309b, 0x309c, 0x00b4, 0xff40, 0x00a8,
+ 0xff3e, 0xffe3, 0xff3f, 0x30fd, 0x30fe, 0x309d, 0x309e, 0x3003,
+ 0x4edd, 0x3005, 0x3006, 0x3007, 0x30fc, 0x2015, 0x2010, 0xff0f,
+ 0x005c, 0x301c, 0x2016, 0xff5c, 0x2026, 0x2025, 0x2018, 0x2019,
+ 0x201c, 0x201d, 0xff08, 0xff09, 0x3014, 0x3015, 0xff3b, 0xff3d,
+ 0xff5b, 0xff5d, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d,
+ 0x300e, 0x300f, 0x3010, 0x3011, 0xff0b, 0xff0d, 0x00b1, 0x00d7,
+ 0x00f7, 0xff1d, 0x2260, 0xff1c, 0xff1e, 0x2266, 0x2267, 0x221e,
+ 0x2234, 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xffe5,
+ 0xff04, 0x00a2, 0x00a3, 0xff05, 0xff03, 0xff06, 0xff0a, 0xff20,
+ 0x00a7, 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7,
+ /* 0x2221 - 0x227e */
+ 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc,
+ 0x203b, 0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282, 0x2283,
+ 0x222a, 0x2229, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2227, 0x2228, 0x00ac, 0x21d2, 0x21d4, 0x2200,
+ 0x2203, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2220, 0x22a5, 0x2312, 0x2202,
+ 0x2207, 0x2261, 0x2252, 0x226a, 0x226b, 0x221a, 0x223d, 0x221d,
+ 0x2235, 0x222b, 0x222c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x212b, 0x2030, 0x266f, 0x266d, 0x266a, 0x2020,
+ 0x2021, 0x00b6, 0x0000, 0x0000, 0x0000, 0x0000, 0x25ef,
+ /* 0x2321 - 0x237e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17,
+ 0xff18, 0xff19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27,
+ 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f,
+ 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37,
+ 0xff38, 0xff39, 0xff3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47,
+ 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f,
+ 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57,
+ 0xff58, 0xff59, 0xff5a, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2421 - 0x247e */
+ 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047,
+ 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f,
+ 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057,
+ 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f,
+ 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067,
+ 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f,
+ 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077,
+ 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f,
+ 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087,
+ 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f,
+ 0x3090, 0x3091, 0x3092, 0x3093, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2521 - 0x257e */
+ 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7,
+ 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af,
+ 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7,
+ 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf,
+ 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7,
+ 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf,
+ 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7,
+ 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df,
+ 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7,
+ 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef,
+ 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2621 - 0x267e */
+ 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
+ 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
+ 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8,
+ 0x03a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
+ 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
+ 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8,
+ 0x03c9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2721 - 0x277e */
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401,
+ 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d,
+ 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425,
+ 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d,
+ 0x042e, 0x042f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451,
+ 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d,
+ 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445,
+ 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d,
+ 0x044e, 0x044f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2821 - 0x287e */
+ 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c,
+ 0x252c, 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513,
+ 0x251b, 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520,
+ 0x252f, 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538,
+ 0x2542, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2921 - 0x297e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2a21 - 0x2a7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2b21 - 0x2b7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2c21 - 0x2c7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2d21 - 0x2d7e */
+ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466,
+ 0x2467, 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e,
+ 0x246f, 0x2470, 0x2471, 0x2472, 0x2473, 0x2160, 0x2161, 0x2162,
+ 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x0000,
+ 0x3349, 0x3314, 0x3322, 0x334d, 0x3318, 0x3327, 0x3303, 0x3336,
+ 0x3351, 0x3357, 0x330d, 0x3326, 0x3323, 0x332b, 0x334a, 0x333b,
+ 0x339c, 0x339d, 0x339e, 0x338e, 0x338f, 0x33c4, 0x33a1, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x337b,
+ 0x301d, 0x301f, 0x2116, 0x33cd, 0x2121, 0x32a4, 0x32a5, 0x32a6,
+ 0x32a7, 0x32a8, 0x3231, 0x3232, 0x3239, 0x337e, 0x337d, 0x337c,
+ 0x2252, 0x2261, 0x222b, 0x222e, 0x2211, 0x221a, 0x22a5, 0x2220,
+ 0x221f, 0x22bf, 0x2235, 0x2229, 0x222a, 0x0000, 0x0000,
+ /* 0x2e21 - 0x2e7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2f21 - 0x2f7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x3021 - 0x307e */
+ 0x4e9c, 0x5516, 0x5a03, 0x963f, 0x54c0, 0x611b, 0x6328,
+ 0x59f6, 0x9022, 0x8475, 0x831c, 0x7a50, 0x60aa, 0x63e1, 0x6e25,
+ 0x65ed, 0x8466, 0x82a6, 0x9bf5, 0x6893, 0x5727, 0x65a1, 0x6271,
+ 0x5b9b, 0x59d0, 0x867b, 0x98f4, 0x7d62, 0x7dbe, 0x9b8e, 0x6216,
+ 0x7c9f, 0x88b7, 0x5b89, 0x5eb5, 0x6309, 0x6697, 0x6848, 0x95c7,
+ 0x978d, 0x674f, 0x4ee5, 0x4f0a, 0x4f4d, 0x4f9d, 0x5049, 0x56f2,
+ 0x5937, 0x59d4, 0x5a01, 0x5c09, 0x60df, 0x610f, 0x6170, 0x6613,
+ 0x6905, 0x70ba, 0x754f, 0x7570, 0x79fb, 0x7dad, 0x7def, 0x80c3,
+ 0x840e, 0x8863, 0x8b02, 0x9055, 0x907a, 0x533b, 0x4e95, 0x4ea5,
+ 0x57df, 0x80b2, 0x90c1, 0x78ef, 0x4e00, 0x58f1, 0x6ea2, 0x9038,
+ 0x7a32, 0x8328, 0x828b, 0x9c2f, 0x5141, 0x5370, 0x54bd, 0x54e1,
+ 0x56e0, 0x59fb, 0x5f15, 0x98f2, 0x6deb, 0x80e4, 0x852d,
+ /* 0x3121 - 0x317e */
+ 0x9662, 0x9670, 0x96a0, 0x97fb, 0x540b, 0x53f3, 0x5b87,
+ 0x70cf, 0x7fbd, 0x8fc2, 0x96e8, 0x536f, 0x9d5c, 0x7aba, 0x4e11,
+ 0x7893, 0x81fc, 0x6e26, 0x5618, 0x5504, 0x6b1d, 0x851a, 0x9c3b,
+ 0x59e5, 0x53a9, 0x6d66, 0x74dc, 0x958f, 0x5642, 0x4e91, 0x904b,
+ 0x96f2, 0x834f, 0x990c, 0x53e1, 0x55b6, 0x5b30, 0x5f71, 0x6620,
+ 0x66f3, 0x6804, 0x6c38, 0x6cf3, 0x6d29, 0x745b, 0x76c8, 0x7a4e,
+ 0x9834, 0x82f1, 0x885b, 0x8a60, 0x92ed, 0x6db2, 0x75ab, 0x76ca,
+ 0x99c5, 0x60a6, 0x8b01, 0x8d8a, 0x95b2, 0x698e, 0x53ad, 0x5186,
+ 0x5712, 0x5830, 0x5944, 0x5bb4, 0x5ef6, 0x6028, 0x63a9, 0x63f4,
+ 0x6cbf, 0x6f14, 0x708e, 0x7114, 0x7159, 0x71d5, 0x733f, 0x7e01,
+ 0x8276, 0x82d1, 0x8597, 0x9060, 0x925b, 0x9d1b, 0x5869, 0x65bc,
+ 0x6c5a, 0x7525, 0x51f9, 0x592e, 0x5965, 0x5f80, 0x5fdc,
+ /* 0x3221 - 0x327e */
+ 0x62bc, 0x65fa, 0x6a2a, 0x6b27, 0x6bb4, 0x738b, 0x7fc1,
+ 0x8956, 0x9d2c, 0x9d0e, 0x9ec4, 0x5ca1, 0x6c96, 0x837b, 0x5104,
+ 0x5c4b, 0x61b6, 0x81c6, 0x6876, 0x7261, 0x4e59, 0x4ffa, 0x5378,
+ 0x6069, 0x6e29, 0x7a4f, 0x97f3, 0x4e0b, 0x5316, 0x4eee, 0x4f55,
+ 0x4f3d, 0x4fa1, 0x4f73, 0x52a0, 0x53ef, 0x5609, 0x590f, 0x5ac1,
+ 0x5bb6, 0x5be1, 0x79d1, 0x6687, 0x679c, 0x67b6, 0x6b4c, 0x6cb3,
+ 0x706b, 0x73c2, 0x798d, 0x79be, 0x7a3c, 0x7b87, 0x82b1, 0x82db,
+ 0x8304, 0x8377, 0x83ef, 0x83d3, 0x8766, 0x8ab2, 0x5629, 0x8ca8,
+ 0x8fe6, 0x904e, 0x971e, 0x868a, 0x4fc4, 0x5ce8, 0x6211, 0x7259,
+ 0x753b, 0x81e5, 0x82bd, 0x86fe, 0x8cc0, 0x96c5, 0x9913, 0x99d5,
+ 0x4ecb, 0x4f1a, 0x89e3, 0x56de, 0x584a, 0x58ca, 0x5efb, 0x5feb,
+ 0x602a, 0x6094, 0x6062, 0x61d0, 0x6212, 0x62d0, 0x6539,
+ /* 0x3321 - 0x337e */
+ 0x9b41, 0x6666, 0x68b0, 0x6d77, 0x7070, 0x754c, 0x7686,
+ 0x7d75, 0x82a5, 0x87f9, 0x958b, 0x968e, 0x8c9d, 0x51f1, 0x52be,
+ 0x5916, 0x54b3, 0x5bb3, 0x5d16, 0x6168, 0x6982, 0x6daf, 0x788d,
+ 0x84cb, 0x8857, 0x8a72, 0x93a7, 0x9ab8, 0x6d6c, 0x99a8, 0x86d9,
+ 0x57a3, 0x67ff, 0x86ce, 0x920e, 0x5283, 0x5687, 0x5404, 0x5ed3,
+ 0x62e1, 0x64b9, 0x683c, 0x6838, 0x6bbb, 0x7372, 0x78ba, 0x7a6b,
+ 0x899a, 0x89d2, 0x8d6b, 0x8f03, 0x90ed, 0x95a3, 0x9694, 0x9769,
+ 0x5b66, 0x5cb3, 0x697d, 0x984d, 0x984e, 0x639b, 0x7b20, 0x6a2b,
+ 0x6a7f, 0x68b6, 0x9c0d, 0x6f5f, 0x5272, 0x559d, 0x6070, 0x62ec,
+ 0x6d3b, 0x6e07, 0x6ed1, 0x845b, 0x8910, 0x8f44, 0x4e14, 0x9c39,
+ 0x53f6, 0x691b, 0x6a3a, 0x9784, 0x682a, 0x515c, 0x7ac3, 0x84b2,
+ 0x91dc, 0x938c, 0x565b, 0x9d28, 0x6822, 0x8305, 0x8431,
+ /* 0x3421 - 0x347e */
+ 0x7ca5, 0x5208, 0x82c5, 0x74e6, 0x4e7e, 0x4f83, 0x51a0,
+ 0x5bd2, 0x520a, 0x52d8, 0x52e7, 0x5dfb, 0x559a, 0x582a, 0x59e6,
+ 0x5b8c, 0x5b98, 0x5bdb, 0x5e72, 0x5e79, 0x60a3, 0x611f, 0x6163,
+ 0x61be, 0x63db, 0x6562, 0x67d1, 0x6853, 0x68fa, 0x6b3e, 0x6b53,
+ 0x6c57, 0x6f22, 0x6f97, 0x6f45, 0x74b0, 0x7518, 0x76e3, 0x770b,
+ 0x7aff, 0x7ba1, 0x7c21, 0x7de9, 0x7f36, 0x7ff0, 0x809d, 0x8266,
+ 0x839e, 0x89b3, 0x8acc, 0x8cab, 0x9084, 0x9451, 0x9593, 0x9591,
+ 0x95a2, 0x9665, 0x97d3, 0x9928, 0x8218, 0x4e38, 0x542b, 0x5cb8,
+ 0x5dcc, 0x73a9, 0x764c, 0x773c, 0x5ca9, 0x7feb, 0x8d0b, 0x96c1,
+ 0x9811, 0x9854, 0x9858, 0x4f01, 0x4f0e, 0x5371, 0x559c, 0x5668,
+ 0x57fa, 0x5947, 0x5b09, 0x5bc4, 0x5c90, 0x5e0c, 0x5e7e, 0x5fcc,
+ 0x63ee, 0x673a, 0x65d7, 0x65e2, 0x671f, 0x68cb, 0x68c4,
+ /* 0x3521 - 0x357e */
+ 0x6a5f, 0x5e30, 0x6bc5, 0x6c17, 0x6c7d, 0x757f, 0x7948,
+ 0x5b63, 0x7a00, 0x7d00, 0x5fbd, 0x898f, 0x8a18, 0x8cb4, 0x8d77,
+ 0x8ecc, 0x8f1d, 0x98e2, 0x9a0e, 0x9b3c, 0x4e80, 0x507d, 0x5100,
+ 0x5993, 0x5b9c, 0x622f, 0x6280, 0x64ec, 0x6b3a, 0x72a0, 0x7591,
+ 0x7947, 0x7fa9, 0x87fb, 0x8abc, 0x8b70, 0x63ac, 0x83ca, 0x97a0,
+ 0x5409, 0x5403, 0x55ab, 0x6854, 0x6a58, 0x8a70, 0x7827, 0x6775,
+ 0x9ecd, 0x5374, 0x5ba2, 0x811a, 0x8650, 0x9006, 0x4e18, 0x4e45,
+ 0x4ec7, 0x4f11, 0x53ca, 0x5438, 0x5bae, 0x5f13, 0x6025, 0x6551,
+ 0x673d, 0x6c42, 0x6c72, 0x6ce3, 0x7078, 0x7403, 0x7a76, 0x7aae,
+ 0x7b08, 0x7d1a, 0x7cfe, 0x7d66, 0x65e7, 0x725b, 0x53bb, 0x5c45,
+ 0x5de8, 0x62d2, 0x62e0, 0x6319, 0x6e20, 0x865a, 0x8a31, 0x8ddd,
+ 0x92f8, 0x6f01, 0x79a6, 0x9b5a, 0x4ea8, 0x4eab, 0x4eac,
+ /* 0x3621 - 0x367e */
+ 0x4f9b, 0x4fa0, 0x50d1, 0x5147, 0x7af6, 0x5171, 0x51f6,
+ 0x5354, 0x5321, 0x537f, 0x53eb, 0x55ac, 0x5883, 0x5ce1, 0x5f37,
+ 0x5f4a, 0x602f, 0x6050, 0x606d, 0x631f, 0x6559, 0x6a4b, 0x6cc1,
+ 0x72c2, 0x72ed, 0x77ef, 0x80f8, 0x8105, 0x8208, 0x854e, 0x90f7,
+ 0x93e1, 0x97ff, 0x9957, 0x9a5a, 0x4ef0, 0x51dd, 0x5c2d, 0x6681,
+ 0x696d, 0x5c40, 0x66f2, 0x6975, 0x7389, 0x6850, 0x7c81, 0x50c5,
+ 0x52e4, 0x5747, 0x5dfe, 0x9326, 0x65a4, 0x6b23, 0x6b3d, 0x7434,
+ 0x7981, 0x79bd, 0x7b4b, 0x7dca, 0x82b9, 0x83cc, 0x887f, 0x895f,
+ 0x8b39, 0x8fd1, 0x91d1, 0x541f, 0x9280, 0x4e5d, 0x5036, 0x53e5,
+ 0x533a, 0x72d7, 0x7396, 0x77e9, 0x82e6, 0x8eaf, 0x99c6, 0x99c8,
+ 0x99d2, 0x5177, 0x611a, 0x865e, 0x55b0, 0x7a7a, 0x5076, 0x5bd3,
+ 0x9047, 0x9685, 0x4e32, 0x6adb, 0x91e7, 0x5c51, 0x5c48,
+ /* 0x3721 - 0x377e */
+ 0x6398, 0x7a9f, 0x6c93, 0x9774, 0x8f61, 0x7aaa, 0x718a,
+ 0x9688, 0x7c82, 0x6817, 0x7e70, 0x6851, 0x936c, 0x52f2, 0x541b,
+ 0x85ab, 0x8a13, 0x7fa4, 0x8ecd, 0x90e1, 0x5366, 0x8888, 0x7941,
+ 0x4fc2, 0x50be, 0x5211, 0x5144, 0x5553, 0x572d, 0x73ea, 0x578b,
+ 0x5951, 0x5f62, 0x5f84, 0x6075, 0x6176, 0x6167, 0x61a9, 0x63b2,
+ 0x643a, 0x656c, 0x666f, 0x6842, 0x6e13, 0x7566, 0x7a3d, 0x7cfb,
+ 0x7d4c, 0x7d99, 0x7e4b, 0x7f6b, 0x830e, 0x834a, 0x86cd, 0x8a08,
+ 0x8a63, 0x8b66, 0x8efd, 0x981a, 0x9d8f, 0x82b8, 0x8fce, 0x9be8,
+ 0x5287, 0x621f, 0x6483, 0x6fc0, 0x9699, 0x6841, 0x5091, 0x6b20,
+ 0x6c7a, 0x6f54, 0x7a74, 0x7d50, 0x8840, 0x8a23, 0x6708, 0x4ef6,
+ 0x5039, 0x5026, 0x5065, 0x517c, 0x5238, 0x5263, 0x55a7, 0x570f,
+ 0x5805, 0x5acc, 0x5efa, 0x61b2, 0x61f8, 0x62f3, 0x6372,
+ /* 0x3821 - 0x387e */
+ 0x691c, 0x6a29, 0x727d, 0x72ac, 0x732e, 0x7814, 0x786f,
+ 0x7d79, 0x770c, 0x80a9, 0x898b, 0x8b19, 0x8ce2, 0x8ed2, 0x9063,
+ 0x9375, 0x967a, 0x9855, 0x9a13, 0x9e78, 0x5143, 0x539f, 0x53b3,
+ 0x5e7b, 0x5f26, 0x6e1b, 0x6e90, 0x7384, 0x73fe, 0x7d43, 0x8237,
+ 0x8a00, 0x8afa, 0x9650, 0x4e4e, 0x500b, 0x53e4, 0x547c, 0x56fa,
+ 0x59d1, 0x5b64, 0x5df1, 0x5eab, 0x5f27, 0x6238, 0x6545, 0x67af,
+ 0x6e56, 0x72d0, 0x7cca, 0x88b4, 0x80a1, 0x80e1, 0x83f0, 0x864e,
+ 0x8a87, 0x8de8, 0x9237, 0x96c7, 0x9867, 0x9f13, 0x4e94, 0x4e92,
+ 0x4f0d, 0x5348, 0x5449, 0x543e, 0x5a2f, 0x5f8c, 0x5fa1, 0x609f,
+ 0x68a7, 0x6a8e, 0x745a, 0x7881, 0x8a9e, 0x8aa4, 0x8b77, 0x9190,
+ 0x4e5e, 0x9bc9, 0x4ea4, 0x4f7c, 0x4faf, 0x5019, 0x5016, 0x5149,
+ 0x516c, 0x529f, 0x52b9, 0x52fe, 0x539a, 0x53e3, 0x5411,
+ /* 0x3921 - 0x397e */
+ 0x540e, 0x5589, 0x5751, 0x57a2, 0x597d, 0x5b54, 0x5b5d,
+ 0x5b8f, 0x5de5, 0x5de7, 0x5df7, 0x5e78, 0x5e83, 0x5e9a, 0x5eb7,
+ 0x5f18, 0x6052, 0x614c, 0x6297, 0x62d8, 0x63a7, 0x653b, 0x6602,
+ 0x6643, 0x66f4, 0x676d, 0x6821, 0x6897, 0x69cb, 0x6c5f, 0x6d2a,
+ 0x6d69, 0x6e2f, 0x6e9d, 0x7532, 0x7687, 0x786c, 0x7a3f, 0x7ce0,
+ 0x7d05, 0x7d18, 0x7d5e, 0x7db1, 0x8015, 0x8003, 0x80af, 0x80b1,
+ 0x8154, 0x818f, 0x822a, 0x8352, 0x884c, 0x8861, 0x8b1b, 0x8ca2,
+ 0x8cfc, 0x90ca, 0x9175, 0x9271, 0x783f, 0x92fc, 0x95a4, 0x964d,
+ 0x9805, 0x9999, 0x9ad8, 0x9d3b, 0x525b, 0x52ab, 0x53f7, 0x5408,
+ 0x58d5, 0x62f7, 0x6fe0, 0x8c6a, 0x8f5f, 0x9eb9, 0x514b, 0x523b,
+ 0x544a, 0x56fd, 0x7a40, 0x9177, 0x9d60, 0x9ed2, 0x7344, 0x6f09,
+ 0x8170, 0x7511, 0x5ffd, 0x60da, 0x9aa8, 0x72db, 0x8fbc,
+ /* 0x3a21 - 0x3a7e */
+ 0x6b64, 0x9803, 0x4eca, 0x56f0, 0x5764, 0x58be, 0x5a5a,
+ 0x6068, 0x61c7, 0x660f, 0x6606, 0x6839, 0x68b1, 0x6df7, 0x75d5,
+ 0x7d3a, 0x826e, 0x9b42, 0x4e9b, 0x4f50, 0x53c9, 0x5506, 0x5d6f,
+ 0x5de6, 0x5dee, 0x67fb, 0x6c99, 0x7473, 0x7802, 0x8a50, 0x9396,
+ 0x88df, 0x5750, 0x5ea7, 0x632b, 0x50b5, 0x50ac, 0x518d, 0x6700,
+ 0x54c9, 0x585e, 0x59bb, 0x5bb0, 0x5f69, 0x624d, 0x63a1, 0x683d,
+ 0x6b73, 0x6e08, 0x707d, 0x91c7, 0x7280, 0x7815, 0x7826, 0x796d,
+ 0x658e, 0x7d30, 0x83dc, 0x88c1, 0x8f09, 0x969b, 0x5264, 0x5728,
+ 0x6750, 0x7f6a, 0x8ca1, 0x51b4, 0x5742, 0x962a, 0x583a, 0x698a,
+ 0x80b4, 0x54b2, 0x5d0e, 0x57fc, 0x7895, 0x9dfa, 0x4f5c, 0x524a,
+ 0x548b, 0x643e, 0x6628, 0x6714, 0x67f5, 0x7a84, 0x7b56, 0x7d22,
+ 0x932f, 0x685c, 0x9bad, 0x7b39, 0x5319, 0x518a, 0x5237,
+ /* 0x3b21 - 0x3b7e */
+ 0x5bdf, 0x62f6, 0x64ae, 0x64e6, 0x672d, 0x6bba, 0x85a9,
+ 0x96d1, 0x7690, 0x9bd6, 0x634c, 0x9306, 0x9bab, 0x76bf, 0x6652,
+ 0x4e09, 0x5098, 0x53c2, 0x5c71, 0x60e8, 0x6492, 0x6563, 0x685f,
+ 0x71e6, 0x73ca, 0x7523, 0x7b97, 0x7e82, 0x8695, 0x8b83, 0x8cdb,
+ 0x9178, 0x9910, 0x65ac, 0x66ab, 0x6b8b, 0x4ed5, 0x4ed4, 0x4f3a,
+ 0x4f7f, 0x523a, 0x53f8, 0x53f2, 0x55e3, 0x56db, 0x58eb, 0x59cb,
+ 0x59c9, 0x59ff, 0x5b50, 0x5c4d, 0x5e02, 0x5e2b, 0x5fd7, 0x601d,
+ 0x6307, 0x652f, 0x5b5c, 0x65af, 0x65bd, 0x65e8, 0x679d, 0x6b62,
+ 0x6b7b, 0x6c0f, 0x7345, 0x7949, 0x79c1, 0x7cf8, 0x7d19, 0x7d2b,
+ 0x80a2, 0x8102, 0x81f3, 0x8996, 0x8a5e, 0x8a69, 0x8a66, 0x8a8c,
+ 0x8aee, 0x8cc7, 0x8cdc, 0x96cc, 0x98fc, 0x6b6f, 0x4e8b, 0x4f3c,
+ 0x4f8d, 0x5150, 0x5b57, 0x5bfa, 0x6148, 0x6301, 0x6642,
+ /* 0x3c21 - 0x3c7e */
+ 0x6b21, 0x6ecb, 0x6cbb, 0x723e, 0x74bd, 0x75d4, 0x78c1,
+ 0x793a, 0x800c, 0x8033, 0x81ea, 0x8494, 0x8f9e, 0x6c50, 0x9e7f,
+ 0x5f0f, 0x8b58, 0x9d2b, 0x7afa, 0x8ef8, 0x5b8d, 0x96eb, 0x4e03,
+ 0x53f1, 0x57f7, 0x5931, 0x5ac9, 0x5ba4, 0x6089, 0x6e7f, 0x6f06,
+ 0x75be, 0x8cea, 0x5b9f, 0x8500, 0x7be0, 0x5072, 0x67f4, 0x829d,
+ 0x5c61, 0x854a, 0x7e1e, 0x820e, 0x5199, 0x5c04, 0x6368, 0x8d66,
+ 0x659c, 0x716e, 0x793e, 0x7d17, 0x8005, 0x8b1d, 0x8eca, 0x906e,
+ 0x86c7, 0x90aa, 0x501f, 0x52fa, 0x5c3a, 0x6753, 0x707c, 0x7235,
+ 0x914c, 0x91c8, 0x932b, 0x82e5, 0x5bc2, 0x5f31, 0x60f9, 0x4e3b,
+ 0x53d6, 0x5b88, 0x624b, 0x6731, 0x6b8a, 0x72e9, 0x73e0, 0x7a2e,
+ 0x816b, 0x8da3, 0x9152, 0x9996, 0x5112, 0x53d7, 0x546a, 0x5bff,
+ 0x6388, 0x6a39, 0x7dac, 0x9700, 0x56da, 0x53ce, 0x5468,
+ /* 0x3d21 - 0x3d7e */
+ 0x5b97, 0x5c31, 0x5dde, 0x4fee, 0x6101, 0x62fe, 0x6d32,
+ 0x79c0, 0x79cb, 0x7d42, 0x7e4d, 0x7fd2, 0x81ed, 0x821f, 0x8490,
+ 0x8846, 0x8972, 0x8b90, 0x8e74, 0x8f2f, 0x9031, 0x914b, 0x916c,
+ 0x96c6, 0x919c, 0x4ec0, 0x4f4f, 0x5145, 0x5341, 0x5f93, 0x620e,
+ 0x67d4, 0x6c41, 0x6e0b, 0x7363, 0x7e26, 0x91cd, 0x9283, 0x53d4,
+ 0x5919, 0x5bbf, 0x6dd1, 0x795d, 0x7e2e, 0x7c9b, 0x587e, 0x719f,
+ 0x51fa, 0x8853, 0x8ff0, 0x4fca, 0x5cfb, 0x6625, 0x77ac, 0x7ae3,
+ 0x821c, 0x99ff, 0x51c6, 0x5faa, 0x65ec, 0x696f, 0x6b89, 0x6df3,
+ 0x6e96, 0x6f64, 0x76fe, 0x7d14, 0x5de1, 0x9075, 0x9187, 0x9806,
+ 0x51e6, 0x521d, 0x6240, 0x6691, 0x66d9, 0x6e1a, 0x5eb6, 0x7dd2,
+ 0x7f72, 0x66f8, 0x85af, 0x85f7, 0x8af8, 0x52a9, 0x53d9, 0x5973,
+ 0x5e8f, 0x5f90, 0x6055, 0x92e4, 0x9664, 0x50b7, 0x511f,
+ /* 0x3e21 - 0x3e7e */
+ 0x52dd, 0x5320, 0x5347, 0x53ec, 0x54e8, 0x5546, 0x5531,
+ 0x5617, 0x5968, 0x59be, 0x5a3c, 0x5bb5, 0x5c06, 0x5c0f, 0x5c11,
+ 0x5c1a, 0x5e84, 0x5e8a, 0x5ee0, 0x5f70, 0x627f, 0x6284, 0x62db,
+ 0x638c, 0x6377, 0x6607, 0x660c, 0x662d, 0x6676, 0x677e, 0x68a2,
+ 0x6a1f, 0x6a35, 0x6cbc, 0x6d88, 0x6e09, 0x6e58, 0x713c, 0x7126,
+ 0x7167, 0x75c7, 0x7701, 0x785d, 0x7901, 0x7965, 0x79f0, 0x7ae0,
+ 0x7b11, 0x7ca7, 0x7d39, 0x8096, 0x83d6, 0x848b, 0x8549, 0x885d,
+ 0x88f3, 0x8a1f, 0x8a3c, 0x8a54, 0x8a73, 0x8c61, 0x8cde, 0x91a4,
+ 0x9266, 0x937e, 0x9418, 0x969c, 0x9798, 0x4e0a, 0x4e08, 0x4e1e,
+ 0x4e57, 0x5197, 0x5270, 0x57ce, 0x5834, 0x58cc, 0x5b22, 0x5e38,
+ 0x60c5, 0x64fe, 0x6761, 0x6756, 0x6d44, 0x72b6, 0x7573, 0x7a63,
+ 0x84b8, 0x8b72, 0x91b8, 0x9320, 0x5631, 0x57f4, 0x98fe,
+ /* 0x3f21 - 0x3f7e */
+ 0x62ed, 0x690d, 0x6b96, 0x71ed, 0x7e54, 0x8077, 0x8272,
+ 0x89e6, 0x98df, 0x8755, 0x8fb1, 0x5c3b, 0x4f38, 0x4fe1, 0x4fb5,
+ 0x5507, 0x5a20, 0x5bdd, 0x5be9, 0x5fc3, 0x614e, 0x632f, 0x65b0,
+ 0x664b, 0x68ee, 0x699b, 0x6d78, 0x6df1, 0x7533, 0x75b9, 0x771f,
+ 0x795e, 0x79e6, 0x7d33, 0x81e3, 0x82af, 0x85aa, 0x89aa, 0x8a3a,
+ 0x8eab, 0x8f9b, 0x9032, 0x91dd, 0x9707, 0x4eba, 0x4ec1, 0x5203,
+ 0x5875, 0x58ec, 0x5c0b, 0x751a, 0x5c3d, 0x814e, 0x8a0a, 0x8fc5,
+ 0x9663, 0x976d, 0x7b25, 0x8acf, 0x9808, 0x9162, 0x56f3, 0x53a8,
+ 0x9017, 0x5439, 0x5782, 0x5e25, 0x63a8, 0x6c34, 0x708a, 0x7761,
+ 0x7c8b, 0x7fe0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968f,
+ 0x745e, 0x9ac4, 0x5d07, 0x5d69, 0x6570, 0x67a2, 0x8da8, 0x96db,
+ 0x636e, 0x6749, 0x6919, 0x83c5, 0x9817, 0x96c0, 0x88fe,
+ /* 0x4021 - 0x407e */
+ 0x6f84, 0x647a, 0x5bf8, 0x4e16, 0x702c, 0x755d, 0x662f,
+ 0x51c4, 0x5236, 0x52e2, 0x59d3, 0x5f81, 0x6027, 0x6210, 0x653f,
+ 0x6574, 0x661f, 0x6674, 0x68f2, 0x6816, 0x6b63, 0x6e05, 0x7272,
+ 0x751f, 0x76db, 0x7cbe, 0x8056, 0x58f0, 0x88fd, 0x897f, 0x8aa0,
+ 0x8a93, 0x8acb, 0x901d, 0x9192, 0x9752, 0x9759, 0x6589, 0x7a0e,
+ 0x8106, 0x96bb, 0x5e2d, 0x60dc, 0x621a, 0x65a5, 0x6614, 0x6790,
+ 0x77f3, 0x7a4d, 0x7c4d, 0x7e3e, 0x810a, 0x8cac, 0x8d64, 0x8de1,
+ 0x8e5f, 0x78a9, 0x5207, 0x62d9, 0x63a5, 0x6442, 0x6298, 0x8a2d,
+ 0x7a83, 0x7bc0, 0x8aac, 0x96ea, 0x7d76, 0x820c, 0x8749, 0x4ed9,
+ 0x5148, 0x5343, 0x5360, 0x5ba3, 0x5c02, 0x5c16, 0x5ddd, 0x6226,
+ 0x6247, 0x64b0, 0x6813, 0x6834, 0x6cc9, 0x6d45, 0x6d17, 0x67d3,
+ 0x6f5c, 0x714e, 0x717d, 0x65cb, 0x7a7f, 0x7bad, 0x7dda,
+ /* 0x4121 - 0x417e */
+ 0x7e4a, 0x7fa8, 0x817a, 0x821b, 0x8239, 0x85a6, 0x8a6e,
+ 0x8cce, 0x8df5, 0x9078, 0x9077, 0x92ad, 0x9291, 0x9583, 0x9bae,
+ 0x524d, 0x5584, 0x6f38, 0x7136, 0x5168, 0x7985, 0x7e55, 0x81b3,
+ 0x7cce, 0x564c, 0x5851, 0x5ca8, 0x63aa, 0x66fe, 0x66fd, 0x695a,
+ 0x72d9, 0x758f, 0x758e, 0x790e, 0x7956, 0x79df, 0x7c97, 0x7d20,
+ 0x7d44, 0x8607, 0x8a34, 0x963b, 0x9061, 0x9f20, 0x50e7, 0x5275,
+ 0x53cc, 0x53e2, 0x5009, 0x55aa, 0x58ee, 0x594f, 0x723d, 0x5b8b,
+ 0x5c64, 0x531d, 0x60e3, 0x60f3, 0x635c, 0x6383, 0x633f, 0x63bb,
+ 0x64cd, 0x65e9, 0x66f9, 0x5de3, 0x69cd, 0x69fd, 0x6f15, 0x71e5,
+ 0x4e89, 0x75e9, 0x76f8, 0x7a93, 0x7cdf, 0x7dcf, 0x7d9c, 0x8061,
+ 0x8349, 0x8358, 0x846c, 0x84bc, 0x85fb, 0x88c5, 0x8d70, 0x9001,
+ 0x906d, 0x9397, 0x971c, 0x9a12, 0x50cf, 0x5897, 0x618e,
+ /* 0x4221 - 0x427e */
+ 0x81d3, 0x8535, 0x8d08, 0x9020, 0x4fc3, 0x5074, 0x5247,
+ 0x5373, 0x606f, 0x6349, 0x675f, 0x6e2c, 0x8db3, 0x901f, 0x4fd7,
+ 0x5c5e, 0x8cca, 0x65cf, 0x7d9a, 0x5352, 0x8896, 0x5176, 0x63c3,
+ 0x5b58, 0x5b6b, 0x5c0a, 0x640d, 0x6751, 0x905c, 0x4ed6, 0x591a,
+ 0x592a, 0x6c70, 0x8a51, 0x553e, 0x5815, 0x59a5, 0x60f0, 0x6253,
+ 0x67c1, 0x8235, 0x6955, 0x9640, 0x99c4, 0x9a28, 0x4f53, 0x5806,
+ 0x5bfe, 0x8010, 0x5cb1, 0x5e2f, 0x5f85, 0x6020, 0x614b, 0x6234,
+ 0x66ff, 0x6cf0, 0x6ede, 0x80ce, 0x817f, 0x82d4, 0x888b, 0x8cb8,
+ 0x9000, 0x902e, 0x968a, 0x9edb, 0x9bdb, 0x4ee3, 0x53f0, 0x5927,
+ 0x7b2c, 0x918d, 0x984c, 0x9df9, 0x6edd, 0x7027, 0x5353, 0x5544,
+ 0x5b85, 0x6258, 0x629e, 0x62d3, 0x6ca2, 0x6fef, 0x7422, 0x8a17,
+ 0x9438, 0x6fc1, 0x8afe, 0x8338, 0x51e7, 0x86f8, 0x53ea,
+ /* 0x4321 - 0x437e */
+ 0x53e9, 0x4f46, 0x9054, 0x8fb0, 0x596a, 0x8131, 0x5dfd,
+ 0x7aea, 0x8fbf, 0x68da, 0x8c37, 0x72f8, 0x9c48, 0x6a3d, 0x8ab0,
+ 0x4e39, 0x5358, 0x5606, 0x5766, 0x62c5, 0x63a2, 0x65e6, 0x6b4e,
+ 0x6de1, 0x6e5b, 0x70ad, 0x77ed, 0x7aef, 0x7baa, 0x7dbb, 0x803d,
+ 0x80c6, 0x86cb, 0x8a95, 0x935b, 0x56e3, 0x58c7, 0x5f3e, 0x65ad,
+ 0x6696, 0x6a80, 0x6bb5, 0x7537, 0x8ac7, 0x5024, 0x77e5, 0x5730,
+ 0x5f1b, 0x6065, 0x667a, 0x6c60, 0x75f4, 0x7a1a, 0x7f6e, 0x81f4,
+ 0x8718, 0x9045, 0x99b3, 0x7bc9, 0x755c, 0x7af9, 0x7b51, 0x84c4,
+ 0x9010, 0x79e9, 0x7a92, 0x8336, 0x5ae1, 0x7740, 0x4e2d, 0x4ef2,
+ 0x5b99, 0x5fe0, 0x62bd, 0x663c, 0x67f1, 0x6ce8, 0x866b, 0x8877,
+ 0x8a3b, 0x914e, 0x92f3, 0x99d0, 0x6a17, 0x7026, 0x732a, 0x82e7,
+ 0x8457, 0x8caf, 0x4e01, 0x5146, 0x51cb, 0x558b, 0x5bf5,
+ /* 0x4421 - 0x447e */
+ 0x5e16, 0x5e33, 0x5e81, 0x5f14, 0x5f35, 0x5f6b, 0x5fb4,
+ 0x61f2, 0x6311, 0x66a2, 0x671d, 0x6f6e, 0x7252, 0x753a, 0x773a,
+ 0x8074, 0x8139, 0x8178, 0x8776, 0x8abf, 0x8adc, 0x8d85, 0x8df3,
+ 0x929a, 0x9577, 0x9802, 0x9ce5, 0x52c5, 0x6357, 0x76f4, 0x6715,
+ 0x6c88, 0x73cd, 0x8cc3, 0x93ae, 0x9673, 0x6d25, 0x589c, 0x690e,
+ 0x69cc, 0x8ffd, 0x939a, 0x75db, 0x901a, 0x585a, 0x6802, 0x63b4,
+ 0x69fb, 0x4f43, 0x6f2c, 0x67d8, 0x8fbb, 0x8526, 0x7db4, 0x9354,
+ 0x693f, 0x6f70, 0x576a, 0x58f7, 0x5b2c, 0x7d2c, 0x722a, 0x540a,
+ 0x91e3, 0x9db4, 0x4ead, 0x4f4e, 0x505c, 0x5075, 0x5243, 0x8c9e,
+ 0x5448, 0x5824, 0x5b9a, 0x5e1d, 0x5e95, 0x5ead, 0x5ef7, 0x5f1f,
+ 0x608c, 0x62b5, 0x633a, 0x63d0, 0x68af, 0x6c40, 0x7887, 0x798e,
+ 0x7a0b, 0x7de0, 0x8247, 0x8a02, 0x8ae6, 0x8e44, 0x9013,
+ /* 0x4521 - 0x457e */
+ 0x90b8, 0x912d, 0x91d8, 0x9f0e, 0x6ce5, 0x6458, 0x64e2,
+ 0x6575, 0x6ef4, 0x7684, 0x7b1b, 0x9069, 0x93d1, 0x6eba, 0x54f2,
+ 0x5fb9, 0x64a4, 0x8f4d, 0x8fed, 0x9244, 0x5178, 0x586b, 0x5929,
+ 0x5c55, 0x5e97, 0x6dfb, 0x7e8f, 0x751c, 0x8cbc, 0x8ee2, 0x985b,
+ 0x70b9, 0x4f1d, 0x6bbf, 0x6fb1, 0x7530, 0x96fb, 0x514e, 0x5410,
+ 0x5835, 0x5857, 0x59ac, 0x5c60, 0x5f92, 0x6597, 0x675c, 0x6e21,
+ 0x767b, 0x83df, 0x8ced, 0x9014, 0x90fd, 0x934d, 0x7825, 0x783a,
+ 0x52aa, 0x5ea6, 0x571f, 0x5974, 0x6012, 0x5012, 0x515a, 0x51ac,
+ 0x51cd, 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5b95, 0x5cf6,
+ 0x5d8b, 0x60bc, 0x6295, 0x642d, 0x6771, 0x6843, 0x68bc, 0x68df,
+ 0x76d7, 0x6dd8, 0x6e6f, 0x6d9b, 0x706f, 0x71c8, 0x5f53, 0x75d8,
+ 0x7977, 0x7b49, 0x7b54, 0x7b52, 0x7cd6, 0x7d71, 0x5230,
+ /* 0x4621 - 0x467e */
+ 0x8463, 0x8569, 0x85e4, 0x8a0e, 0x8b04, 0x8c46, 0x8e0f,
+ 0x9003, 0x900f, 0x9419, 0x9676, 0x982d, 0x9a30, 0x95d8, 0x50cd,
+ 0x52d5, 0x540c, 0x5802, 0x5c0e, 0x61a7, 0x649e, 0x6d1e, 0x77b3,
+ 0x7ae5, 0x80f4, 0x8404, 0x9053, 0x9285, 0x5ce0, 0x9d07, 0x533f,
+ 0x5f97, 0x5fb3, 0x6d9c, 0x7279, 0x7763, 0x79bf, 0x7be4, 0x6bd2,
+ 0x72ec, 0x8aad, 0x6803, 0x6a61, 0x51f8, 0x7a81, 0x6934, 0x5c4a,
+ 0x9cf6, 0x82eb, 0x5bc5, 0x9149, 0x701e, 0x5678, 0x5c6f, 0x60c7,
+ 0x6566, 0x6c8c, 0x8c5a, 0x9041, 0x9813, 0x5451, 0x66c7, 0x920d,
+ 0x5948, 0x90a3, 0x5185, 0x4e4d, 0x51ea, 0x8599, 0x8b0e, 0x7058,
+ 0x637a, 0x934b, 0x6962, 0x99b4, 0x7e04, 0x7577, 0x5357, 0x6960,
+ 0x8edf, 0x96e3, 0x6c5d, 0x4e8c, 0x5c3c, 0x5f10, 0x8fe9, 0x5302,
+ 0x8cd1, 0x8089, 0x8679, 0x5eff, 0x65e5, 0x4e73, 0x5165,
+ /* 0x4721 - 0x477e */
+ 0x5982, 0x5c3f, 0x97ee, 0x4efb, 0x598a, 0x5fcd, 0x8a8d,
+ 0x6fe1, 0x79b0, 0x7962, 0x5be7, 0x8471, 0x732b, 0x71b1, 0x5e74,
+ 0x5ff5, 0x637b, 0x649a, 0x71c3, 0x7c98, 0x4e43, 0x5efc, 0x4e4b,
+ 0x57dc, 0x56a2, 0x60a9, 0x6fc3, 0x7d0d, 0x80fd, 0x8133, 0x81bf,
+ 0x8fb2, 0x8997, 0x86a4, 0x5df4, 0x628a, 0x64ad, 0x8987, 0x6777,
+ 0x6ce2, 0x6d3e, 0x7436, 0x7834, 0x5a46, 0x7f75, 0x82ad, 0x99ac,
+ 0x4ff3, 0x5ec3, 0x62dd, 0x6392, 0x6557, 0x676f, 0x76c3, 0x724c,
+ 0x80cc, 0x80ba, 0x8f29, 0x914d, 0x500d, 0x57f9, 0x5a92, 0x6885,
+ 0x6973, 0x7164, 0x72fd, 0x8cb7, 0x58f2, 0x8ce0, 0x966a, 0x9019,
+ 0x877f, 0x79e4, 0x77e7, 0x8429, 0x4f2f, 0x5265, 0x535a, 0x62cd,
+ 0x67cf, 0x6cca, 0x767d, 0x7b94, 0x7c95, 0x8236, 0x8584, 0x8feb,
+ 0x66dd, 0x6f20, 0x7206, 0x7e1b, 0x83ab, 0x99c1, 0x9ea6,
+ /* 0x4821 - 0x487e */
+ 0x51fd, 0x7bb1, 0x7872, 0x7bb8, 0x8087, 0x7b48, 0x6ae8,
+ 0x5e61, 0x808c, 0x7551, 0x7560, 0x516b, 0x9262, 0x6e8c, 0x767a,
+ 0x9197, 0x9aea, 0x4f10, 0x7f70, 0x629c, 0x7b4f, 0x95a5, 0x9ce9,
+ 0x567a, 0x5859, 0x86e4, 0x96bc, 0x4f34, 0x5224, 0x534a, 0x53cd,
+ 0x53db, 0x5e06, 0x642c, 0x6591, 0x677f, 0x6c3e, 0x6c4e, 0x7248,
+ 0x72af, 0x73ed, 0x7554, 0x7e41, 0x822c, 0x85e9, 0x8ca9, 0x7bc4,
+ 0x91c6, 0x7169, 0x9812, 0x98ef, 0x633d, 0x6669, 0x756a, 0x76e4,
+ 0x78d0, 0x8543, 0x86ee, 0x532a, 0x5351, 0x5426, 0x5983, 0x5e87,
+ 0x5f7c, 0x60b2, 0x6249, 0x6279, 0x62ab, 0x6590, 0x6bd4, 0x6ccc,
+ 0x75b2, 0x76ae, 0x7891, 0x79d8, 0x7dcb, 0x7f77, 0x80a5, 0x88ab,
+ 0x8ab9, 0x8cbb, 0x907f, 0x975e, 0x98db, 0x6a0b, 0x7c38, 0x5099,
+ 0x5c3e, 0x5fae, 0x6787, 0x6bd8, 0x7435, 0x7709, 0x7f8e,
+ /* 0x4921 - 0x497e */
+ 0x9f3b, 0x67ca, 0x7a17, 0x5339, 0x758b, 0x9aed, 0x5f66,
+ 0x819d, 0x83f1, 0x8098, 0x5f3c, 0x5fc5, 0x7562, 0x7b46, 0x903c,
+ 0x6867, 0x59eb, 0x5a9b, 0x7d10, 0x767e, 0x8b2c, 0x4ff5, 0x5f6a,
+ 0x6a19, 0x6c37, 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8a55, 0x8c79,
+ 0x5edf, 0x63cf, 0x75c5, 0x79d2, 0x82d7, 0x9328, 0x92f2, 0x849c,
+ 0x86ed, 0x9c2d, 0x54c1, 0x5f6c, 0x658c, 0x6d5c, 0x7015, 0x8ca7,
+ 0x8cd3, 0x983b, 0x654f, 0x74f6, 0x4e0d, 0x4ed8, 0x57e0, 0x592b,
+ 0x5a66, 0x5bcc, 0x51a8, 0x5e03, 0x5e9c, 0x6016, 0x6276, 0x6577,
+ 0x65a7, 0x666e, 0x6d6e, 0x7236, 0x7b26, 0x8150, 0x819a, 0x8299,
+ 0x8b5c, 0x8ca0, 0x8ce6, 0x8d74, 0x961c, 0x9644, 0x4fae, 0x64ab,
+ 0x6b66, 0x821e, 0x8461, 0x856a, 0x90e8, 0x5c01, 0x6953, 0x98a8,
+ 0x847a, 0x8557, 0x4f0f, 0x526f, 0x5fa9, 0x5e45, 0x670d,
+ /* 0x4a21 - 0x4a7e */
+ 0x798f, 0x8179, 0x8907, 0x8986, 0x6df5, 0x5f17, 0x6255,
+ 0x6cb8, 0x4ecf, 0x7269, 0x9b92, 0x5206, 0x543b, 0x5674, 0x58b3,
+ 0x61a4, 0x626e, 0x711a, 0x596e, 0x7c89, 0x7cde, 0x7d1b, 0x96f0,
+ 0x6587, 0x805e, 0x4e19, 0x4f75, 0x5175, 0x5840, 0x5e63, 0x5e73,
+ 0x5f0a, 0x67c4, 0x4e26, 0x853d, 0x9589, 0x965b, 0x7c73, 0x9801,
+ 0x50fb, 0x58c1, 0x7656, 0x78a7, 0x5225, 0x77a5, 0x8511, 0x7b86,
+ 0x504f, 0x5909, 0x7247, 0x7bc7, 0x7de8, 0x8fba, 0x8fd4, 0x904d,
+ 0x4fbf, 0x52c9, 0x5a29, 0x5f01, 0x97ad, 0x4fdd, 0x8217, 0x92ea,
+ 0x5703, 0x6355, 0x6b69, 0x752b, 0x88dc, 0x8f14, 0x7a42, 0x52df,
+ 0x5893, 0x6155, 0x620a, 0x66ae, 0x6bcd, 0x7c3f, 0x83e9, 0x5023,
+ 0x4ff8, 0x5305, 0x5446, 0x5831, 0x5949, 0x5b9d, 0x5cf0, 0x5cef,
+ 0x5d29, 0x5e96, 0x62b1, 0x6367, 0x653e, 0x65b9, 0x670b,
+ /* 0x4b21 - 0x4b7e */
+ 0x6cd5, 0x6ce1, 0x70f9, 0x7832, 0x7e2b, 0x80de, 0x82b3,
+ 0x840c, 0x84ec, 0x8702, 0x8912, 0x8a2a, 0x8c4a, 0x90a6, 0x92d2,
+ 0x98fd, 0x9cf3, 0x9d6c, 0x4e4f, 0x4ea1, 0x508d, 0x5256, 0x574a,
+ 0x59a8, 0x5e3d, 0x5fd8, 0x5fd9, 0x623f, 0x66b4, 0x671b, 0x67d0,
+ 0x68d2, 0x5192, 0x7d21, 0x80aa, 0x81a8, 0x8b00, 0x8c8c, 0x8cbf,
+ 0x927e, 0x9632, 0x5420, 0x982c, 0x5317, 0x50d5, 0x535c, 0x58a8,
+ 0x64b2, 0x6734, 0x7267, 0x7766, 0x7a46, 0x91e6, 0x52c3, 0x6ca1,
+ 0x6b86, 0x5800, 0x5e4c, 0x5954, 0x672c, 0x7ffb, 0x51e1, 0x76c6,
+ 0x6469, 0x78e8, 0x9b54, 0x9ebb, 0x57cb, 0x59b9, 0x6627, 0x679a,
+ 0x6bce, 0x54e9, 0x69d9, 0x5e55, 0x819c, 0x6795, 0x9baa, 0x67fe,
+ 0x9c52, 0x685d, 0x4ea6, 0x4fe3, 0x53c8, 0x62b9, 0x672b, 0x6cab,
+ 0x8fc4, 0x4fad, 0x7e6d, 0x9ebf, 0x4e07, 0x6162, 0x6e80,
+ /* 0x4c21 - 0x4c7e */
+ 0x6f2b, 0x8513, 0x5473, 0x672a, 0x9b45, 0x5df3, 0x7b95,
+ 0x5cac, 0x5bc6, 0x871c, 0x6e4a, 0x84d1, 0x7a14, 0x8108, 0x5999,
+ 0x7c8d, 0x6c11, 0x7720, 0x52d9, 0x5922, 0x7121, 0x725f, 0x77db,
+ 0x9727, 0x9d61, 0x690b, 0x5a7f, 0x5a18, 0x51a5, 0x540d, 0x547d,
+ 0x660e, 0x76df, 0x8ff7, 0x9298, 0x9cf4, 0x59ea, 0x725d, 0x6ec5,
+ 0x514d, 0x68c9, 0x7dbf, 0x7dec, 0x9762, 0x9eba, 0x6478, 0x6a21,
+ 0x8302, 0x5984, 0x5b5f, 0x6bdb, 0x731b, 0x76f2, 0x7db2, 0x8017,
+ 0x8499, 0x5132, 0x6728, 0x9ed9, 0x76ee, 0x6762, 0x52ff, 0x9905,
+ 0x5c24, 0x623b, 0x7c7e, 0x8cb0, 0x554f, 0x60b6, 0x7d0b, 0x9580,
+ 0x5301, 0x4e5f, 0x51b6, 0x591c, 0x723a, 0x8036, 0x91ce, 0x5f25,
+ 0x77e2, 0x5384, 0x5f79, 0x7d04, 0x85ac, 0x8a33, 0x8e8d, 0x9756,
+ 0x67f3, 0x85ae, 0x9453, 0x6109, 0x6108, 0x6cb9, 0x7652,
+ /* 0x4d21 - 0x4d7e */
+ 0x8aed, 0x8f38, 0x552f, 0x4f51, 0x512a, 0x52c7, 0x53cb,
+ 0x5ba5, 0x5e7d, 0x60a0, 0x6182, 0x63d6, 0x6709, 0x67da, 0x6e67,
+ 0x6d8c, 0x7336, 0x7337, 0x7531, 0x7950, 0x88d5, 0x8a98, 0x904a,
+ 0x9091, 0x90f5, 0x96c4, 0x878d, 0x5915, 0x4e88, 0x4f59, 0x4e0e,
+ 0x8a89, 0x8f3f, 0x9810, 0x50ad, 0x5e7c, 0x5996, 0x5bb9, 0x5eb8,
+ 0x63da, 0x63fa, 0x64c1, 0x66dc, 0x694a, 0x69d8, 0x6d0b, 0x6eb6,
+ 0x7194, 0x7528, 0x7aaf, 0x7f8a, 0x8000, 0x8449, 0x84c9, 0x8981,
+ 0x8b21, 0x8e0a, 0x9065, 0x967d, 0x990a, 0x617e, 0x6291, 0x6b32,
+ 0x6c83, 0x6d74, 0x7fcc, 0x7ffc, 0x6dc0, 0x7f85, 0x87ba, 0x88f8,
+ 0x6765, 0x83b1, 0x983c, 0x96f7, 0x6d1b, 0x7d61, 0x843d, 0x916a,
+ 0x4e71, 0x5375, 0x5d50, 0x6b04, 0x6feb, 0x85cd, 0x862d, 0x89a7,
+ 0x5229, 0x540f, 0x5c65, 0x674e, 0x68a8, 0x7406, 0x7483,
+ /* 0x4e21 - 0x4e7e */
+ 0x75e2, 0x88cf, 0x88e1, 0x91cc, 0x96e2, 0x9678, 0x5f8b,
+ 0x7387, 0x7acb, 0x844e, 0x63a0, 0x7565, 0x5289, 0x6d41, 0x6e9c,
+ 0x7409, 0x7559, 0x786b, 0x7c92, 0x9686, 0x7adc, 0x9f8d, 0x4fb6,
+ 0x616e, 0x65c5, 0x865c, 0x4e86, 0x4eae, 0x50da, 0x4e21, 0x51cc,
+ 0x5bee, 0x6599, 0x6881, 0x6dbc, 0x731f, 0x7642, 0x77ad, 0x7a1c,
+ 0x7ce7, 0x826f, 0x8ad2, 0x907c, 0x91cf, 0x9675, 0x9818, 0x529b,
+ 0x7dd1, 0x502b, 0x5398, 0x6797, 0x6dcb, 0x71d0, 0x7433, 0x81e8,
+ 0x8f2a, 0x96a3, 0x9c57, 0x9e9f, 0x7460, 0x5841, 0x6d99, 0x7d2f,
+ 0x985e, 0x4ee4, 0x4f36, 0x4f8b, 0x51b7, 0x52b1, 0x5dba, 0x601c,
+ 0x73b2, 0x793c, 0x82d3, 0x9234, 0x96b7, 0x96f6, 0x970a, 0x9e97,
+ 0x9f62, 0x66a6, 0x6b74, 0x5217, 0x52a3, 0x70c8, 0x88c2, 0x5ec9,
+ 0x604b, 0x6190, 0x6f23, 0x7149, 0x7c3e, 0x7df4, 0x806f,
+ /* 0x4f21 - 0x4f7e */
+ 0x84ee, 0x9023, 0x932c, 0x5442, 0x9b6f, 0x6ad3, 0x7089,
+ 0x8cc2, 0x8def, 0x9732, 0x52b4, 0x5a41, 0x5eca, 0x5f04, 0x6717,
+ 0x697c, 0x6994, 0x6d6a, 0x6f0f, 0x7262, 0x72fc, 0x7bed, 0x8001,
+ 0x807e, 0x874b, 0x90ce, 0x516d, 0x9e93, 0x7984, 0x808b, 0x9332,
+ 0x8ad6, 0x502d, 0x548c, 0x8a71, 0x6b6a, 0x8cc4, 0x8107, 0x60d1,
+ 0x67a0, 0x9df2, 0x4e99, 0x4e98, 0x9c10, 0x8a6b, 0x85c1, 0x8568,
+ 0x6900, 0x6e7e, 0x7897, 0x8155, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x5021 - 0x507e */
+ 0x5f0c, 0x4e10, 0x4e15, 0x4e2a, 0x4e31, 0x4e36, 0x4e3c,
+ 0x4e3f, 0x4e42, 0x4e56, 0x4e58, 0x4e82, 0x4e85, 0x8c6b, 0x4e8a,
+ 0x8212, 0x5f0d, 0x4e8e, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea2, 0x4eb0,
+ 0x4eb3, 0x4eb6, 0x4ece, 0x4ecd, 0x4ec4, 0x4ec6, 0x4ec2, 0x4ed7,
+ 0x4ede, 0x4eed, 0x4edf, 0x4ef7, 0x4f09, 0x4f5a, 0x4f30, 0x4f5b,
+ 0x4f5d, 0x4f57, 0x4f47, 0x4f76, 0x4f88, 0x4f8f, 0x4f98, 0x4f7b,
+ 0x4f69, 0x4f70, 0x4f91, 0x4f6f, 0x4f86, 0x4f96, 0x5118, 0x4fd4,
+ 0x4fdf, 0x4fce, 0x4fd8, 0x4fdb, 0x4fd1, 0x4fda, 0x4fd0, 0x4fe4,
+ 0x4fe5, 0x501a, 0x5028, 0x5014, 0x502a, 0x5025, 0x5005, 0x4f1c,
+ 0x4ff6, 0x5021, 0x5029, 0x502c, 0x4ffe, 0x4fef, 0x5011, 0x5006,
+ 0x5043, 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505a, 0x5056,
+ 0x506c, 0x5078, 0x5080, 0x509a, 0x5085, 0x50b4, 0x50b2,
+ /* 0x5121 - 0x517e */
+ 0x50c9, 0x50ca, 0x50b3, 0x50c2, 0x50d6, 0x50de, 0x50e5,
+ 0x50ed, 0x50e3, 0x50ee, 0x50f9, 0x50f5, 0x5109, 0x5101, 0x5102,
+ 0x5116, 0x5115, 0x5114, 0x511a, 0x5121, 0x513a, 0x5137, 0x513c,
+ 0x513b, 0x513f, 0x5140, 0x5152, 0x514c, 0x5154, 0x5162, 0x7af8,
+ 0x5169, 0x516a, 0x516e, 0x5180, 0x5182, 0x56d8, 0x518c, 0x5189,
+ 0x518f, 0x5191, 0x5193, 0x5195, 0x5196, 0x51a4, 0x51a6, 0x51a2,
+ 0x51a9, 0x51aa, 0x51ab, 0x51b3, 0x51b1, 0x51b2, 0x51b0, 0x51b5,
+ 0x51bd, 0x51c5, 0x51c9, 0x51db, 0x51e0, 0x8655, 0x51e9, 0x51ed,
+ 0x51f0, 0x51f5, 0x51fe, 0x5204, 0x520b, 0x5214, 0x520e, 0x5227,
+ 0x522a, 0x522e, 0x5233, 0x5239, 0x524f, 0x5244, 0x524b, 0x524c,
+ 0x525e, 0x5254, 0x526a, 0x5274, 0x5269, 0x5273, 0x527f, 0x527d,
+ 0x528d, 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8fa8,
+ /* 0x5221 - 0x527e */
+ 0x8fa7, 0x52ac, 0x52ad, 0x52bc, 0x52b5, 0x52c1, 0x52cd,
+ 0x52d7, 0x52de, 0x52e3, 0x52e6, 0x98ed, 0x52e0, 0x52f3, 0x52f5,
+ 0x52f8, 0x52f9, 0x5306, 0x5308, 0x7538, 0x530d, 0x5310, 0x530f,
+ 0x5315, 0x531a, 0x5323, 0x532f, 0x5331, 0x5333, 0x5338, 0x5340,
+ 0x5346, 0x5345, 0x4e17, 0x5349, 0x534d, 0x51d6, 0x535e, 0x5369,
+ 0x536e, 0x5918, 0x537b, 0x5377, 0x5382, 0x5396, 0x53a0, 0x53a6,
+ 0x53a5, 0x53ae, 0x53b0, 0x53b6, 0x53c3, 0x7c12, 0x96d9, 0x53df,
+ 0x66fc, 0x71ee, 0x53ee, 0x53e8, 0x53ed, 0x53fa, 0x5401, 0x543d,
+ 0x5440, 0x542c, 0x542d, 0x543c, 0x542e, 0x5436, 0x5429, 0x541d,
+ 0x544e, 0x548f, 0x5475, 0x548e, 0x545f, 0x5471, 0x5477, 0x5470,
+ 0x5492, 0x547b, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54c7,
+ 0x54a2, 0x54b8, 0x54a5, 0x54ac, 0x54c4, 0x54c8, 0x54a8,
+ /* 0x5321 - 0x537e */
+ 0x54ab, 0x54c2, 0x54a4, 0x54be, 0x54bc, 0x54d8, 0x54e5,
+ 0x54e6, 0x550f, 0x5514, 0x54fd, 0x54ee, 0x54ed, 0x54fa, 0x54e2,
+ 0x5539, 0x5540, 0x5563, 0x554c, 0x552e, 0x555c, 0x5545, 0x5556,
+ 0x5557, 0x5538, 0x5533, 0x555d, 0x5599, 0x5580, 0x54af, 0x558a,
+ 0x559f, 0x557b, 0x557e, 0x5598, 0x559e, 0x55ae, 0x557c, 0x5583,
+ 0x55a9, 0x5587, 0x55a8, 0x55da, 0x55c5, 0x55df, 0x55c4, 0x55dc,
+ 0x55e4, 0x55d4, 0x5614, 0x55f7, 0x5616, 0x55fe, 0x55fd, 0x561b,
+ 0x55f9, 0x564e, 0x5650, 0x71df, 0x5634, 0x5636, 0x5632, 0x5638,
+ 0x566b, 0x5664, 0x562f, 0x566c, 0x566a, 0x5686, 0x5680, 0x568a,
+ 0x56a0, 0x5694, 0x568f, 0x56a5, 0x56ae, 0x56b6, 0x56b4, 0x56c2,
+ 0x56bc, 0x56c1, 0x56c3, 0x56c0, 0x56c8, 0x56ce, 0x56d1, 0x56d3,
+ 0x56d7, 0x56ee, 0x56f9, 0x5700, 0x56ff, 0x5704, 0x5709,
+ /* 0x5421 - 0x547e */
+ 0x5708, 0x570b, 0x570d, 0x5713, 0x5718, 0x5716, 0x55c7,
+ 0x571c, 0x5726, 0x5737, 0x5738, 0x574e, 0x573b, 0x5740, 0x574f,
+ 0x5769, 0x57c0, 0x5788, 0x5761, 0x577f, 0x5789, 0x5793, 0x57a0,
+ 0x57b3, 0x57a4, 0x57aa, 0x57b0, 0x57c3, 0x57c6, 0x57d4, 0x57d2,
+ 0x57d3, 0x580a, 0x57d6, 0x57e3, 0x580b, 0x5819, 0x581d, 0x5872,
+ 0x5821, 0x5862, 0x584b, 0x5870, 0x6bc0, 0x5852, 0x583d, 0x5879,
+ 0x5885, 0x58b9, 0x589f, 0x58ab, 0x58ba, 0x58de, 0x58bb, 0x58b8,
+ 0x58ae, 0x58c5, 0x58d3, 0x58d1, 0x58d7, 0x58d9, 0x58d8, 0x58e5,
+ 0x58dc, 0x58e4, 0x58df, 0x58ef, 0x58fa, 0x58f9, 0x58fb, 0x58fc,
+ 0x58fd, 0x5902, 0x590a, 0x5910, 0x591b, 0x68a6, 0x5925, 0x592c,
+ 0x592d, 0x5932, 0x5938, 0x593e, 0x7ad2, 0x5955, 0x5950, 0x594e,
+ 0x595a, 0x5958, 0x5962, 0x5960, 0x5967, 0x596c, 0x5969,
+ /* 0x5521 - 0x557e */
+ 0x5978, 0x5981, 0x599d, 0x4f5e, 0x4fab, 0x59a3, 0x59b2,
+ 0x59c6, 0x59e8, 0x59dc, 0x598d, 0x59d9, 0x59da, 0x5a25, 0x5a1f,
+ 0x5a11, 0x5a1c, 0x5a09, 0x5a1a, 0x5a40, 0x5a6c, 0x5a49, 0x5a35,
+ 0x5a36, 0x5a62, 0x5a6a, 0x5a9a, 0x5abc, 0x5abe, 0x5acb, 0x5ac2,
+ 0x5abd, 0x5ae3, 0x5ad7, 0x5ae6, 0x5ae9, 0x5ad6, 0x5afa, 0x5afb,
+ 0x5b0c, 0x5b0b, 0x5b16, 0x5b32, 0x5ad0, 0x5b2a, 0x5b36, 0x5b3e,
+ 0x5b43, 0x5b45, 0x5b40, 0x5b51, 0x5b55, 0x5b5a, 0x5b5b, 0x5b65,
+ 0x5b69, 0x5b70, 0x5b73, 0x5b75, 0x5b78, 0x6588, 0x5b7a, 0x5b80,
+ 0x5b83, 0x5ba6, 0x5bb8, 0x5bc3, 0x5bc7, 0x5bc9, 0x5bd4, 0x5bd0,
+ 0x5be4, 0x5be6, 0x5be2, 0x5bde, 0x5be5, 0x5beb, 0x5bf0, 0x5bf6,
+ 0x5bf3, 0x5c05, 0x5c07, 0x5c08, 0x5c0d, 0x5c13, 0x5c20, 0x5c22,
+ 0x5c28, 0x5c38, 0x5c39, 0x5c41, 0x5c46, 0x5c4e, 0x5c53,
+ /* 0x5621 - 0x567e */
+ 0x5c50, 0x5c4f, 0x5b71, 0x5c6c, 0x5c6e, 0x4e62, 0x5c76,
+ 0x5c79, 0x5c8c, 0x5c91, 0x5c94, 0x599b, 0x5cab, 0x5cbb, 0x5cb6,
+ 0x5cbc, 0x5cb7, 0x5cc5, 0x5cbe, 0x5cc7, 0x5cd9, 0x5ce9, 0x5cfd,
+ 0x5cfa, 0x5ced, 0x5d8c, 0x5cea, 0x5d0b, 0x5d15, 0x5d17, 0x5d5c,
+ 0x5d1f, 0x5d1b, 0x5d11, 0x5d14, 0x5d22, 0x5d1a, 0x5d19, 0x5d18,
+ 0x5d4c, 0x5d52, 0x5d4e, 0x5d4b, 0x5d6c, 0x5d73, 0x5d76, 0x5d87,
+ 0x5d84, 0x5d82, 0x5da2, 0x5d9d, 0x5dac, 0x5dae, 0x5dbd, 0x5d90,
+ 0x5db7, 0x5dbc, 0x5dc9, 0x5dcd, 0x5dd3, 0x5dd2, 0x5dd6, 0x5ddb,
+ 0x5deb, 0x5df2, 0x5df5, 0x5e0b, 0x5e1a, 0x5e19, 0x5e11, 0x5e1b,
+ 0x5e36, 0x5e37, 0x5e44, 0x5e43, 0x5e40, 0x5e4e, 0x5e57, 0x5e54,
+ 0x5e5f, 0x5e62, 0x5e64, 0x5e47, 0x5e75, 0x5e76, 0x5e7a, 0x9ebc,
+ 0x5e7f, 0x5ea0, 0x5ec1, 0x5ec2, 0x5ec8, 0x5ed0, 0x5ecf,
+ /* 0x5721 - 0x577e */
+ 0x5ed6, 0x5ee3, 0x5edd, 0x5eda, 0x5edb, 0x5ee2, 0x5ee1,
+ 0x5ee8, 0x5ee9, 0x5eec, 0x5ef1, 0x5ef3, 0x5ef0, 0x5ef4, 0x5ef8,
+ 0x5efe, 0x5f03, 0x5f09, 0x5f5d, 0x5f5c, 0x5f0b, 0x5f11, 0x5f16,
+ 0x5f29, 0x5f2d, 0x5f38, 0x5f41, 0x5f48, 0x5f4c, 0x5f4e, 0x5f2f,
+ 0x5f51, 0x5f56, 0x5f57, 0x5f59, 0x5f61, 0x5f6d, 0x5f73, 0x5f77,
+ 0x5f83, 0x5f82, 0x5f7f, 0x5f8a, 0x5f88, 0x5f91, 0x5f87, 0x5f9e,
+ 0x5f99, 0x5f98, 0x5fa0, 0x5fa8, 0x5fad, 0x5fbc, 0x5fd6, 0x5ffb,
+ 0x5fe4, 0x5ff8, 0x5ff1, 0x5fdd, 0x60b3, 0x5fff, 0x6021, 0x6060,
+ 0x6019, 0x6010, 0x6029, 0x600e, 0x6031, 0x601b, 0x6015, 0x602b,
+ 0x6026, 0x600f, 0x603a, 0x605a, 0x6041, 0x606a, 0x6077, 0x605f,
+ 0x604a, 0x6046, 0x604d, 0x6063, 0x6043, 0x6064, 0x6042, 0x606c,
+ 0x606b, 0x6059, 0x6081, 0x608d, 0x60e7, 0x6083, 0x609a,
+ /* 0x5821 - 0x587e */
+ 0x6084, 0x609b, 0x6096, 0x6097, 0x6092, 0x60a7, 0x608b,
+ 0x60e1, 0x60b8, 0x60e0, 0x60d3, 0x60b4, 0x5ff0, 0x60bd, 0x60c6,
+ 0x60b5, 0x60d8, 0x614d, 0x6115, 0x6106, 0x60f6, 0x60f7, 0x6100,
+ 0x60f4, 0x60fa, 0x6103, 0x6121, 0x60fb, 0x60f1, 0x610d, 0x610e,
+ 0x6147, 0x613e, 0x6128, 0x6127, 0x614a, 0x613f, 0x613c, 0x612c,
+ 0x6134, 0x613d, 0x6142, 0x6144, 0x6173, 0x6177, 0x6158, 0x6159,
+ 0x615a, 0x616b, 0x6174, 0x616f, 0x6165, 0x6171, 0x615f, 0x615d,
+ 0x6153, 0x6175, 0x6199, 0x6196, 0x6187, 0x61ac, 0x6194, 0x619a,
+ 0x618a, 0x6191, 0x61ab, 0x61ae, 0x61cc, 0x61ca, 0x61c9, 0x61f7,
+ 0x61c8, 0x61c3, 0x61c6, 0x61ba, 0x61cb, 0x7f79, 0x61cd, 0x61e6,
+ 0x61e3, 0x61f6, 0x61fa, 0x61f4, 0x61ff, 0x61fd, 0x61fc, 0x61fe,
+ 0x6200, 0x6208, 0x6209, 0x620d, 0x620c, 0x6214, 0x621b,
+ /* 0x5921 - 0x597e */
+ 0x621e, 0x6221, 0x622a, 0x622e, 0x6230, 0x6232, 0x6233,
+ 0x6241, 0x624e, 0x625e, 0x6263, 0x625b, 0x6260, 0x6268, 0x627c,
+ 0x6282, 0x6289, 0x627e, 0x6292, 0x6293, 0x6296, 0x62d4, 0x6283,
+ 0x6294, 0x62d7, 0x62d1, 0x62bb, 0x62cf, 0x62ff, 0x62c6, 0x64d4,
+ 0x62c8, 0x62dc, 0x62cc, 0x62ca, 0x62c2, 0x62c7, 0x629b, 0x62c9,
+ 0x630c, 0x62ee, 0x62f1, 0x6327, 0x6302, 0x6308, 0x62ef, 0x62f5,
+ 0x6350, 0x633e, 0x634d, 0x641c, 0x634f, 0x6396, 0x638e, 0x6380,
+ 0x63ab, 0x6376, 0x63a3, 0x638f, 0x6389, 0x639f, 0x63b5, 0x636b,
+ 0x6369, 0x63be, 0x63e9, 0x63c0, 0x63c6, 0x63e3, 0x63c9, 0x63d2,
+ 0x63f6, 0x63c4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436,
+ 0x651d, 0x6417, 0x6428, 0x640f, 0x6467, 0x646f, 0x6476, 0x644e,
+ 0x652a, 0x6495, 0x6493, 0x64a5, 0x64a9, 0x6488, 0x64bc,
+ /* 0x5a21 - 0x5a7e */
+ 0x64da, 0x64d2, 0x64c5, 0x64c7, 0x64bb, 0x64d8, 0x64c2,
+ 0x64f1, 0x64e7, 0x8209, 0x64e0, 0x64e1, 0x62ac, 0x64e3, 0x64ef,
+ 0x652c, 0x64f6, 0x64f4, 0x64f2, 0x64fa, 0x6500, 0x64fd, 0x6518,
+ 0x651c, 0x6505, 0x6524, 0x6523, 0x652b, 0x6534, 0x6535, 0x6537,
+ 0x6536, 0x6538, 0x754b, 0x6548, 0x6556, 0x6555, 0x654d, 0x6558,
+ 0x655e, 0x655d, 0x6572, 0x6578, 0x6582, 0x6583, 0x8b8a, 0x659b,
+ 0x659f, 0x65ab, 0x65b7, 0x65c3, 0x65c6, 0x65c1, 0x65c4, 0x65cc,
+ 0x65d2, 0x65db, 0x65d9, 0x65e0, 0x65e1, 0x65f1, 0x6772, 0x660a,
+ 0x6603, 0x65fb, 0x6773, 0x6635, 0x6636, 0x6634, 0x661c, 0x664f,
+ 0x6644, 0x6649, 0x6641, 0x665e, 0x665d, 0x6664, 0x6667, 0x6668,
+ 0x665f, 0x6662, 0x6670, 0x6683, 0x6688, 0x668e, 0x6689, 0x6684,
+ 0x6698, 0x669d, 0x66c1, 0x66b9, 0x66c9, 0x66be, 0x66bc,
+ /* 0x5b21 - 0x5b7e */
+ 0x66c4, 0x66b8, 0x66d6, 0x66da, 0x66e0, 0x663f, 0x66e6,
+ 0x66e9, 0x66f0, 0x66f5, 0x66f7, 0x670f, 0x6716, 0x671e, 0x6726,
+ 0x6727, 0x9738, 0x672e, 0x673f, 0x6736, 0x6741, 0x6738, 0x6737,
+ 0x6746, 0x675e, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770,
+ 0x67a9, 0x677c, 0x676a, 0x678c, 0x678b, 0x67a6, 0x67a1, 0x6785,
+ 0x67b7, 0x67ef, 0x67b4, 0x67ec, 0x67b3, 0x67e9, 0x67b8, 0x67e4,
+ 0x67de, 0x67dd, 0x67e2, 0x67ee, 0x67b9, 0x67ce, 0x67c6, 0x67e7,
+ 0x6a9c, 0x681e, 0x6846, 0x6829, 0x6840, 0x684d, 0x6832, 0x684e,
+ 0x68b3, 0x682b, 0x6859, 0x6863, 0x6877, 0x687f, 0x689f, 0x688f,
+ 0x68ad, 0x6894, 0x689d, 0x689b, 0x6883, 0x6aae, 0x68b9, 0x6874,
+ 0x68b5, 0x68a0, 0x68ba, 0x690f, 0x688d, 0x687e, 0x6901, 0x68ca,
+ 0x6908, 0x68d8, 0x6922, 0x6926, 0x68e1, 0x690c, 0x68cd,
+ /* 0x5c21 - 0x5c7e */
+ 0x68d4, 0x68e7, 0x68d5, 0x6936, 0x6912, 0x6904, 0x68d7,
+ 0x68e3, 0x6925, 0x68f9, 0x68e0, 0x68ef, 0x6928, 0x692a, 0x691a,
+ 0x6923, 0x6921, 0x68c6, 0x6979, 0x6977, 0x695c, 0x6978, 0x696b,
+ 0x6954, 0x697e, 0x696e, 0x6939, 0x6974, 0x693d, 0x6959, 0x6930,
+ 0x6961, 0x695e, 0x695d, 0x6981, 0x696a, 0x69b2, 0x69ae, 0x69d0,
+ 0x69bf, 0x69c1, 0x69d3, 0x69be, 0x69ce, 0x5be8, 0x69ca, 0x69dd,
+ 0x69bb, 0x69c3, 0x69a7, 0x6a2e, 0x6991, 0x69a0, 0x699c, 0x6995,
+ 0x69b4, 0x69de, 0x69e8, 0x6a02, 0x6a1b, 0x69ff, 0x6b0a, 0x69f9,
+ 0x69f2, 0x69e7, 0x6a05, 0x69b1, 0x6a1e, 0x69ed, 0x6a14, 0x69eb,
+ 0x6a0a, 0x6a12, 0x6ac1, 0x6a23, 0x6a13, 0x6a44, 0x6a0c, 0x6a72,
+ 0x6a36, 0x6a78, 0x6a47, 0x6a62, 0x6a59, 0x6a66, 0x6a48, 0x6a38,
+ 0x6a22, 0x6a90, 0x6a8d, 0x6aa0, 0x6a84, 0x6aa2, 0x6aa3,
+ /* 0x5d21 - 0x5d7e */
+ 0x6a97, 0x8617, 0x6abb, 0x6ac3, 0x6ac2, 0x6ab8, 0x6ab3,
+ 0x6aac, 0x6ade, 0x6ad1, 0x6adf, 0x6aaa, 0x6ada, 0x6aea, 0x6afb,
+ 0x6b05, 0x8616, 0x6afa, 0x6b12, 0x6b16, 0x9b31, 0x6b1f, 0x6b38,
+ 0x6b37, 0x76dc, 0x6b39, 0x98ee, 0x6b47, 0x6b43, 0x6b49, 0x6b50,
+ 0x6b59, 0x6b54, 0x6b5b, 0x6b5f, 0x6b61, 0x6b78, 0x6b79, 0x6b7f,
+ 0x6b80, 0x6b84, 0x6b83, 0x6b8d, 0x6b98, 0x6b95, 0x6b9e, 0x6ba4,
+ 0x6baa, 0x6bab, 0x6baf, 0x6bb2, 0x6bb1, 0x6bb3, 0x6bb7, 0x6bbc,
+ 0x6bc6, 0x6bcb, 0x6bd3, 0x6bdf, 0x6bec, 0x6beb, 0x6bf3, 0x6bef,
+ 0x9ebe, 0x6c08, 0x6c13, 0x6c14, 0x6c1b, 0x6c24, 0x6c23, 0x6c5e,
+ 0x6c55, 0x6c62, 0x6c6a, 0x6c82, 0x6c8d, 0x6c9a, 0x6c81, 0x6c9b,
+ 0x6c7e, 0x6c68, 0x6c73, 0x6c92, 0x6c90, 0x6cc4, 0x6cf1, 0x6cd3,
+ 0x6cbd, 0x6cd7, 0x6cc5, 0x6cdd, 0x6cae, 0x6cb1, 0x6cbe,
+ /* 0x5e21 - 0x5e7e */
+ 0x6cba, 0x6cdb, 0x6cef, 0x6cd9, 0x6cea, 0x6d1f, 0x884d,
+ 0x6d36, 0x6d2b, 0x6d3d, 0x6d38, 0x6d19, 0x6d35, 0x6d33, 0x6d12,
+ 0x6d0c, 0x6d63, 0x6d93, 0x6d64, 0x6d5a, 0x6d79, 0x6d59, 0x6d8e,
+ 0x6d95, 0x6fe4, 0x6d85, 0x6df9, 0x6e15, 0x6e0a, 0x6db5, 0x6dc7,
+ 0x6de6, 0x6db8, 0x6dc6, 0x6dec, 0x6dde, 0x6dcc, 0x6de8, 0x6dd2,
+ 0x6dc5, 0x6dfa, 0x6dd9, 0x6de4, 0x6dd5, 0x6dea, 0x6dee, 0x6e2d,
+ 0x6e6e, 0x6e2e, 0x6e19, 0x6e72, 0x6e5f, 0x6e3e, 0x6e23, 0x6e6b,
+ 0x6e2b, 0x6e76, 0x6e4d, 0x6e1f, 0x6e43, 0x6e3a, 0x6e4e, 0x6e24,
+ 0x6eff, 0x6e1d, 0x6e38, 0x6e82, 0x6eaa, 0x6e98, 0x6ec9, 0x6eb7,
+ 0x6ed3, 0x6ebd, 0x6eaf, 0x6ec4, 0x6eb2, 0x6ed4, 0x6ed5, 0x6e8f,
+ 0x6ea5, 0x6ec2, 0x6e9f, 0x6f41, 0x6f11, 0x704c, 0x6eec, 0x6ef8,
+ 0x6efe, 0x6f3f, 0x6ef2, 0x6f31, 0x6eef, 0x6f32, 0x6ecc,
+ /* 0x5f21 - 0x5f7e */
+ 0x6f3e, 0x6f13, 0x6ef7, 0x6f86, 0x6f7a, 0x6f78, 0x6f81,
+ 0x6f80, 0x6f6f, 0x6f5b, 0x6ff3, 0x6f6d, 0x6f82, 0x6f7c, 0x6f58,
+ 0x6f8e, 0x6f91, 0x6fc2, 0x6f66, 0x6fb3, 0x6fa3, 0x6fa1, 0x6fa4,
+ 0x6fb9, 0x6fc6, 0x6faa, 0x6fdf, 0x6fd5, 0x6fec, 0x6fd4, 0x6fd8,
+ 0x6ff1, 0x6fee, 0x6fdb, 0x7009, 0x700b, 0x6ffa, 0x7011, 0x7001,
+ 0x700f, 0x6ffe, 0x701b, 0x701a, 0x6f74, 0x701d, 0x7018, 0x701f,
+ 0x7030, 0x703e, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092, 0x70af,
+ 0x70f1, 0x70ac, 0x70b8, 0x70b3, 0x70ae, 0x70df, 0x70cb, 0x70dd,
+ 0x70d9, 0x7109, 0x70fd, 0x711c, 0x7119, 0x7165, 0x7155, 0x7188,
+ 0x7166, 0x7162, 0x714c, 0x7156, 0x716c, 0x718f, 0x71fb, 0x7184,
+ 0x7195, 0x71a8, 0x71ac, 0x71d7, 0x71b9, 0x71be, 0x71d2, 0x71c9,
+ 0x71d4, 0x71ce, 0x71e0, 0x71ec, 0x71e7, 0x71f5, 0x71fc,
+ /* 0x6021 - 0x607e */
+ 0x71f9, 0x71ff, 0x720d, 0x7210, 0x721b, 0x7228, 0x722d,
+ 0x722c, 0x7230, 0x7232, 0x723b, 0x723c, 0x723f, 0x7240, 0x7246,
+ 0x724b, 0x7258, 0x7274, 0x727e, 0x7282, 0x7281, 0x7287, 0x7292,
+ 0x7296, 0x72a2, 0x72a7, 0x72b9, 0x72b2, 0x72c3, 0x72c6, 0x72c4,
+ 0x72ce, 0x72d2, 0x72e2, 0x72e0, 0x72e1, 0x72f9, 0x72f7, 0x500f,
+ 0x7317, 0x730a, 0x731c, 0x7316, 0x731d, 0x7334, 0x732f, 0x7329,
+ 0x7325, 0x733e, 0x734e, 0x734f, 0x9ed8, 0x7357, 0x736a, 0x7368,
+ 0x7370, 0x7378, 0x7375, 0x737b, 0x737a, 0x73c8, 0x73b3, 0x73ce,
+ 0x73bb, 0x73c0, 0x73e5, 0x73ee, 0x73de, 0x74a2, 0x7405, 0x746f,
+ 0x7425, 0x73f8, 0x7432, 0x743a, 0x7455, 0x743f, 0x745f, 0x7459,
+ 0x7441, 0x745c, 0x7469, 0x7470, 0x7463, 0x746a, 0x7476, 0x747e,
+ 0x748b, 0x749e, 0x74a7, 0x74ca, 0x74cf, 0x74d4, 0x73f1,
+ /* 0x6121 - 0x617e */
+ 0x74e0, 0x74e3, 0x74e7, 0x74e9, 0x74ee, 0x74f2, 0x74f0,
+ 0x74f1, 0x74f8, 0x74f7, 0x7504, 0x7503, 0x7505, 0x750c, 0x750e,
+ 0x750d, 0x7515, 0x7513, 0x751e, 0x7526, 0x752c, 0x753c, 0x7544,
+ 0x754d, 0x754a, 0x7549, 0x755b, 0x7546, 0x755a, 0x7569, 0x7564,
+ 0x7567, 0x756b, 0x756d, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574,
+ 0x758a, 0x7589, 0x7582, 0x7594, 0x759a, 0x759d, 0x75a5, 0x75a3,
+ 0x75c2, 0x75b3, 0x75c3, 0x75b5, 0x75bd, 0x75b8, 0x75bc, 0x75b1,
+ 0x75cd, 0x75ca, 0x75d2, 0x75d9, 0x75e3, 0x75de, 0x75fe, 0x75ff,
+ 0x75fc, 0x7601, 0x75f0, 0x75fa, 0x75f2, 0x75f3, 0x760b, 0x760d,
+ 0x7609, 0x761f, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634,
+ 0x7630, 0x763b, 0x7647, 0x7648, 0x7646, 0x765c, 0x7658, 0x7661,
+ 0x7662, 0x7668, 0x7669, 0x766a, 0x7667, 0x766c, 0x7670,
+ /* 0x6221 - 0x627e */
+ 0x7672, 0x7676, 0x7678, 0x767c, 0x7680, 0x7683, 0x7688,
+ 0x768b, 0x768e, 0x7696, 0x7693, 0x7699, 0x769a, 0x76b0, 0x76b4,
+ 0x76b8, 0x76b9, 0x76ba, 0x76c2, 0x76cd, 0x76d6, 0x76d2, 0x76de,
+ 0x76e1, 0x76e5, 0x76e7, 0x76ea, 0x862f, 0x76fb, 0x7708, 0x7707,
+ 0x7704, 0x7729, 0x7724, 0x771e, 0x7725, 0x7726, 0x771b, 0x7737,
+ 0x7738, 0x7747, 0x775a, 0x7768, 0x776b, 0x775b, 0x7765, 0x777f,
+ 0x777e, 0x7779, 0x778e, 0x778b, 0x7791, 0x77a0, 0x779e, 0x77b0,
+ 0x77b6, 0x77b9, 0x77bf, 0x77bc, 0x77bd, 0x77bb, 0x77c7, 0x77cd,
+ 0x77d7, 0x77da, 0x77dc, 0x77e3, 0x77ee, 0x77fc, 0x780c, 0x7812,
+ 0x7926, 0x7820, 0x792a, 0x7845, 0x788e, 0x7874, 0x7886, 0x787c,
+ 0x789a, 0x788c, 0x78a3, 0x78b5, 0x78aa, 0x78af, 0x78d1, 0x78c6,
+ 0x78cb, 0x78d4, 0x78be, 0x78bc, 0x78c5, 0x78ca, 0x78ec,
+ /* 0x6321 - 0x637e */
+ 0x78e7, 0x78da, 0x78fd, 0x78f4, 0x7907, 0x7912, 0x7911,
+ 0x7919, 0x792c, 0x792b, 0x7940, 0x7960, 0x7957, 0x795f, 0x795a,
+ 0x7955, 0x7953, 0x797a, 0x797f, 0x798a, 0x799d, 0x79a7, 0x9f4b,
+ 0x79aa, 0x79ae, 0x79b3, 0x79b9, 0x79ba, 0x79c9, 0x79d5, 0x79e7,
+ 0x79ec, 0x79e1, 0x79e3, 0x7a08, 0x7a0d, 0x7a18, 0x7a19, 0x7a20,
+ 0x7a1f, 0x7980, 0x7a31, 0x7a3b, 0x7a3e, 0x7a37, 0x7a43, 0x7a57,
+ 0x7a49, 0x7a61, 0x7a62, 0x7a69, 0x9f9d, 0x7a70, 0x7a79, 0x7a7d,
+ 0x7a88, 0x7a97, 0x7a95, 0x7a98, 0x7a96, 0x7aa9, 0x7ac8, 0x7ab0,
+ 0x7ab6, 0x7ac5, 0x7ac4, 0x7abf, 0x9083, 0x7ac7, 0x7aca, 0x7acd,
+ 0x7acf, 0x7ad5, 0x7ad3, 0x7ad9, 0x7ada, 0x7add, 0x7ae1, 0x7ae2,
+ 0x7ae6, 0x7aed, 0x7af0, 0x7b02, 0x7b0f, 0x7b0a, 0x7b06, 0x7b33,
+ 0x7b18, 0x7b19, 0x7b1e, 0x7b35, 0x7b28, 0x7b36, 0x7b50,
+ /* 0x6421 - 0x647e */
+ 0x7b7a, 0x7b04, 0x7b4d, 0x7b0b, 0x7b4c, 0x7b45, 0x7b75,
+ 0x7b65, 0x7b74, 0x7b67, 0x7b70, 0x7b71, 0x7b6c, 0x7b6e, 0x7b9d,
+ 0x7b98, 0x7b9f, 0x7b8d, 0x7b9c, 0x7b9a, 0x7b8b, 0x7b92, 0x7b8f,
+ 0x7b5d, 0x7b99, 0x7bcb, 0x7bc1, 0x7bcc, 0x7bcf, 0x7bb4, 0x7bc6,
+ 0x7bdd, 0x7be9, 0x7c11, 0x7c14, 0x7be6, 0x7be5, 0x7c60, 0x7c00,
+ 0x7c07, 0x7c13, 0x7bf3, 0x7bf7, 0x7c17, 0x7c0d, 0x7bf6, 0x7c23,
+ 0x7c27, 0x7c2a, 0x7c1f, 0x7c37, 0x7c2b, 0x7c3d, 0x7c4c, 0x7c43,
+ 0x7c54, 0x7c4f, 0x7c40, 0x7c50, 0x7c58, 0x7c5f, 0x7c64, 0x7c56,
+ 0x7c65, 0x7c6c, 0x7c75, 0x7c83, 0x7c90, 0x7ca4, 0x7cad, 0x7ca2,
+ 0x7cab, 0x7ca1, 0x7ca8, 0x7cb3, 0x7cb2, 0x7cb1, 0x7cae, 0x7cb9,
+ 0x7cbd, 0x7cc0, 0x7cc5, 0x7cc2, 0x7cd8, 0x7cd2, 0x7cdc, 0x7ce2,
+ 0x9b3b, 0x7cef, 0x7cf2, 0x7cf4, 0x7cf6, 0x7cfa, 0x7d06,
+ /* 0x6521 - 0x657e */
+ 0x7d02, 0x7d1c, 0x7d15, 0x7d0a, 0x7d45, 0x7d4b, 0x7d2e,
+ 0x7d32, 0x7d3f, 0x7d35, 0x7d46, 0x7d73, 0x7d56, 0x7d4e, 0x7d72,
+ 0x7d68, 0x7d6e, 0x7d4f, 0x7d63, 0x7d93, 0x7d89, 0x7d5b, 0x7d8f,
+ 0x7d7d, 0x7d9b, 0x7dba, 0x7dae, 0x7da3, 0x7db5, 0x7dc7, 0x7dbd,
+ 0x7dab, 0x7e3d, 0x7da2, 0x7daf, 0x7ddc, 0x7db8, 0x7d9f, 0x7db0,
+ 0x7dd8, 0x7ddd, 0x7de4, 0x7dde, 0x7dfb, 0x7df2, 0x7de1, 0x7e05,
+ 0x7e0a, 0x7e23, 0x7e21, 0x7e12, 0x7e31, 0x7e1f, 0x7e09, 0x7e0b,
+ 0x7e22, 0x7e46, 0x7e66, 0x7e3b, 0x7e35, 0x7e39, 0x7e43, 0x7e37,
+ 0x7e32, 0x7e3a, 0x7e67, 0x7e5d, 0x7e56, 0x7e5e, 0x7e59, 0x7e5a,
+ 0x7e79, 0x7e6a, 0x7e69, 0x7e7c, 0x7e7b, 0x7e83, 0x7dd5, 0x7e7d,
+ 0x8fae, 0x7e7f, 0x7e88, 0x7e89, 0x7e8c, 0x7e92, 0x7e90, 0x7e93,
+ 0x7e94, 0x7e96, 0x7e8e, 0x7e9b, 0x7e9c, 0x7f38, 0x7f3a,
+ /* 0x6621 - 0x667e */
+ 0x7f45, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f50, 0x7f51, 0x7f55,
+ 0x7f54, 0x7f58, 0x7f5f, 0x7f60, 0x7f68, 0x7f69, 0x7f67, 0x7f78,
+ 0x7f82, 0x7f86, 0x7f83, 0x7f88, 0x7f87, 0x7f8c, 0x7f94, 0x7f9e,
+ 0x7f9d, 0x7f9a, 0x7fa3, 0x7faf, 0x7fb2, 0x7fb9, 0x7fae, 0x7fb6,
+ 0x7fb8, 0x8b71, 0x7fc5, 0x7fc6, 0x7fca, 0x7fd5, 0x7fd4, 0x7fe1,
+ 0x7fe6, 0x7fe9, 0x7ff3, 0x7ff9, 0x98dc, 0x8006, 0x8004, 0x800b,
+ 0x8012, 0x8018, 0x8019, 0x801c, 0x8021, 0x8028, 0x803f, 0x803b,
+ 0x804a, 0x8046, 0x8052, 0x8058, 0x805a, 0x805f, 0x8062, 0x8068,
+ 0x8073, 0x8072, 0x8070, 0x8076, 0x8079, 0x807d, 0x807f, 0x8084,
+ 0x8086, 0x8085, 0x809b, 0x8093, 0x809a, 0x80ad, 0x5190, 0x80ac,
+ 0x80db, 0x80e5, 0x80d9, 0x80dd, 0x80c4, 0x80da, 0x80d6, 0x8109,
+ 0x80ef, 0x80f1, 0x811b, 0x8129, 0x8123, 0x812f, 0x814b,
+ /* 0x6721 - 0x677e */
+ 0x968b, 0x8146, 0x813e, 0x8153, 0x8151, 0x80fc, 0x8171,
+ 0x816e, 0x8165, 0x8166, 0x8174, 0x8183, 0x8188, 0x818a, 0x8180,
+ 0x8182, 0x81a0, 0x8195, 0x81a4, 0x81a3, 0x815f, 0x8193, 0x81a9,
+ 0x81b0, 0x81b5, 0x81be, 0x81b8, 0x81bd, 0x81c0, 0x81c2, 0x81ba,
+ 0x81c9, 0x81cd, 0x81d1, 0x81d9, 0x81d8, 0x81c8, 0x81da, 0x81df,
+ 0x81e0, 0x81e7, 0x81fa, 0x81fb, 0x81fe, 0x8201, 0x8202, 0x8205,
+ 0x8207, 0x820a, 0x820d, 0x8210, 0x8216, 0x8229, 0x822b, 0x8238,
+ 0x8233, 0x8240, 0x8259, 0x8258, 0x825d, 0x825a, 0x825f, 0x8264,
+ 0x8262, 0x8268, 0x826a, 0x826b, 0x822e, 0x8271, 0x8277, 0x8278,
+ 0x827e, 0x828d, 0x8292, 0x82ab, 0x829f, 0x82bb, 0x82ac, 0x82e1,
+ 0x82e3, 0x82df, 0x82d2, 0x82f4, 0x82f3, 0x82fa, 0x8393, 0x8303,
+ 0x82fb, 0x82f9, 0x82de, 0x8306, 0x82dc, 0x8309, 0x82d9,
+ /* 0x6821 - 0x687e */
+ 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339,
+ 0x8350, 0x8345, 0x832f, 0x832b, 0x8317, 0x8318, 0x8385, 0x839a,
+ 0x83aa, 0x839f, 0x83a2, 0x8396, 0x8323, 0x838e, 0x8387, 0x838a,
+ 0x837c, 0x83b5, 0x8373, 0x8375, 0x83a0, 0x8389, 0x83a8, 0x83f4,
+ 0x8413, 0x83eb, 0x83ce, 0x83fd, 0x8403, 0x83d8, 0x840b, 0x83c1,
+ 0x83f7, 0x8407, 0x83e0, 0x83f2, 0x840d, 0x8422, 0x8420, 0x83bd,
+ 0x8438, 0x8506, 0x83fb, 0x846d, 0x842a, 0x843c, 0x855a, 0x8484,
+ 0x8477, 0x846b, 0x84ad, 0x846e, 0x8482, 0x8469, 0x8446, 0x842c,
+ 0x846f, 0x8479, 0x8435, 0x84ca, 0x8462, 0x84b9, 0x84bf, 0x849f,
+ 0x84d9, 0x84cd, 0x84bb, 0x84da, 0x84d0, 0x84c1, 0x84c6, 0x84d6,
+ 0x84a1, 0x8521, 0x84ff, 0x84f4, 0x8517, 0x8518, 0x852c, 0x851f,
+ 0x8515, 0x8514, 0x84fc, 0x8540, 0x8563, 0x8558, 0x8548,
+ /* 0x6921 - 0x697e */
+ 0x8541, 0x8602, 0x854b, 0x8555, 0x8580, 0x85a4, 0x8588,
+ 0x8591, 0x858a, 0x85a8, 0x856d, 0x8594, 0x859b, 0x85ea, 0x8587,
+ 0x859c, 0x8577, 0x857e, 0x8590, 0x85c9, 0x85ba, 0x85cf, 0x85b9,
+ 0x85d0, 0x85d5, 0x85dd, 0x85e5, 0x85dc, 0x85f9, 0x860a, 0x8613,
+ 0x860b, 0x85fe, 0x85fa, 0x8606, 0x8622, 0x861a, 0x8630, 0x863f,
+ 0x864d, 0x4e55, 0x8654, 0x865f, 0x8667, 0x8671, 0x8693, 0x86a3,
+ 0x86a9, 0x86aa, 0x868b, 0x868c, 0x86b6, 0x86af, 0x86c4, 0x86c6,
+ 0x86b0, 0x86c9, 0x8823, 0x86ab, 0x86d4, 0x86de, 0x86e9, 0x86ec,
+ 0x86df, 0x86db, 0x86ef, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703,
+ 0x86fb, 0x8711, 0x8709, 0x870d, 0x86f9, 0x870a, 0x8734, 0x873f,
+ 0x8737, 0x873b, 0x8725, 0x8729, 0x871a, 0x8760, 0x875f, 0x8778,
+ 0x874c, 0x874e, 0x8774, 0x8757, 0x8768, 0x876e, 0x8759,
+ /* 0x6a21 - 0x6a7e */
+ 0x8753, 0x8763, 0x876a, 0x8805, 0x87a2, 0x879f, 0x8782,
+ 0x87af, 0x87cb, 0x87bd, 0x87c0, 0x87d0, 0x96d6, 0x87ab, 0x87c4,
+ 0x87b3, 0x87c7, 0x87c6, 0x87bb, 0x87ef, 0x87f2, 0x87e0, 0x880f,
+ 0x880d, 0x87fe, 0x87f6, 0x87f7, 0x880e, 0x87d2, 0x8811, 0x8816,
+ 0x8815, 0x8822, 0x8821, 0x8831, 0x8836, 0x8839, 0x8827, 0x883b,
+ 0x8844, 0x8842, 0x8852, 0x8859, 0x885e, 0x8862, 0x886b, 0x8881,
+ 0x887e, 0x889e, 0x8875, 0x887d, 0x88b5, 0x8872, 0x8882, 0x8897,
+ 0x8892, 0x88ae, 0x8899, 0x88a2, 0x888d, 0x88a4, 0x88b0, 0x88bf,
+ 0x88b1, 0x88c3, 0x88c4, 0x88d4, 0x88d8, 0x88d9, 0x88dd, 0x88f9,
+ 0x8902, 0x88fc, 0x88f4, 0x88e8, 0x88f2, 0x8904, 0x890c, 0x890a,
+ 0x8913, 0x8943, 0x891e, 0x8925, 0x892a, 0x892b, 0x8941, 0x8944,
+ 0x893b, 0x8936, 0x8938, 0x894c, 0x891d, 0x8960, 0x895e,
+ /* 0x6b21 - 0x6b7e */
+ 0x8966, 0x8964, 0x896d, 0x896a, 0x896f, 0x8974, 0x8977,
+ 0x897e, 0x8983, 0x8988, 0x898a, 0x8993, 0x8998, 0x89a1, 0x89a9,
+ 0x89a6, 0x89ac, 0x89af, 0x89b2, 0x89ba, 0x89bd, 0x89bf, 0x89c0,
+ 0x89da, 0x89dc, 0x89dd, 0x89e7, 0x89f4, 0x89f8, 0x8a03, 0x8a16,
+ 0x8a10, 0x8a0c, 0x8a1b, 0x8a1d, 0x8a25, 0x8a36, 0x8a41, 0x8a5b,
+ 0x8a52, 0x8a46, 0x8a48, 0x8a7c, 0x8a6d, 0x8a6c, 0x8a62, 0x8a85,
+ 0x8a82, 0x8a84, 0x8aa8, 0x8aa1, 0x8a91, 0x8aa5, 0x8aa6, 0x8a9a,
+ 0x8aa3, 0x8ac4, 0x8acd, 0x8ac2, 0x8ada, 0x8aeb, 0x8af3, 0x8ae7,
+ 0x8ae4, 0x8af1, 0x8b14, 0x8ae0, 0x8ae2, 0x8af7, 0x8ade, 0x8adb,
+ 0x8b0c, 0x8b07, 0x8b1a, 0x8ae1, 0x8b16, 0x8b10, 0x8b17, 0x8b20,
+ 0x8b33, 0x97ab, 0x8b26, 0x8b2b, 0x8b3e, 0x8b28, 0x8b41, 0x8b4c,
+ 0x8b4f, 0x8b4e, 0x8b49, 0x8b56, 0x8b5b, 0x8b5a, 0x8b6b,
+ /* 0x6c21 - 0x6c7e */
+ 0x8b5f, 0x8b6c, 0x8b6f, 0x8b74, 0x8b7d, 0x8b80, 0x8b8c,
+ 0x8b8e, 0x8b92, 0x8b93, 0x8b96, 0x8b99, 0x8b9a, 0x8c3a, 0x8c41,
+ 0x8c3f, 0x8c48, 0x8c4c, 0x8c4e, 0x8c50, 0x8c55, 0x8c62, 0x8c6c,
+ 0x8c78, 0x8c7a, 0x8c82, 0x8c89, 0x8c85, 0x8c8a, 0x8c8d, 0x8c8e,
+ 0x8c94, 0x8c7c, 0x8c98, 0x621d, 0x8cad, 0x8caa, 0x8cbd, 0x8cb2,
+ 0x8cb3, 0x8cae, 0x8cb6, 0x8cc8, 0x8cc1, 0x8ce4, 0x8ce3, 0x8cda,
+ 0x8cfd, 0x8cfa, 0x8cfb, 0x8d04, 0x8d05, 0x8d0a, 0x8d07, 0x8d0f,
+ 0x8d0d, 0x8d10, 0x9f4e, 0x8d13, 0x8ccd, 0x8d14, 0x8d16, 0x8d67,
+ 0x8d6d, 0x8d71, 0x8d73, 0x8d81, 0x8d99, 0x8dc2, 0x8dbe, 0x8dba,
+ 0x8dcf, 0x8dda, 0x8dd6, 0x8dcc, 0x8ddb, 0x8dcb, 0x8dea, 0x8deb,
+ 0x8ddf, 0x8de3, 0x8dfc, 0x8e08, 0x8e09, 0x8dff, 0x8e1d, 0x8e1e,
+ 0x8e10, 0x8e1f, 0x8e42, 0x8e35, 0x8e30, 0x8e34, 0x8e4a,
+ /* 0x6d21 - 0x6d7e */
+ 0x8e47, 0x8e49, 0x8e4c, 0x8e50, 0x8e48, 0x8e59, 0x8e64,
+ 0x8e60, 0x8e2a, 0x8e63, 0x8e55, 0x8e76, 0x8e72, 0x8e7c, 0x8e81,
+ 0x8e87, 0x8e85, 0x8e84, 0x8e8b, 0x8e8a, 0x8e93, 0x8e91, 0x8e94,
+ 0x8e99, 0x8eaa, 0x8ea1, 0x8eac, 0x8eb0, 0x8ec6, 0x8eb1, 0x8ebe,
+ 0x8ec5, 0x8ec8, 0x8ecb, 0x8edb, 0x8ee3, 0x8efc, 0x8efb, 0x8eeb,
+ 0x8efe, 0x8f0a, 0x8f05, 0x8f15, 0x8f12, 0x8f19, 0x8f13, 0x8f1c,
+ 0x8f1f, 0x8f1b, 0x8f0c, 0x8f26, 0x8f33, 0x8f3b, 0x8f39, 0x8f45,
+ 0x8f42, 0x8f3e, 0x8f4c, 0x8f49, 0x8f46, 0x8f4e, 0x8f57, 0x8f5c,
+ 0x8f62, 0x8f63, 0x8f64, 0x8f9c, 0x8f9f, 0x8fa3, 0x8fad, 0x8faf,
+ 0x8fb7, 0x8fda, 0x8fe5, 0x8fe2, 0x8fea, 0x8fef, 0x9087, 0x8ff4,
+ 0x9005, 0x8ff9, 0x8ffa, 0x9011, 0x9015, 0x9021, 0x900d, 0x901e,
+ 0x9016, 0x900b, 0x9027, 0x9036, 0x9035, 0x9039, 0x8ff8,
+ /* 0x6e21 - 0x6e7e */
+ 0x904f, 0x9050, 0x9051, 0x9052, 0x900e, 0x9049, 0x903e,
+ 0x9056, 0x9058, 0x905e, 0x9068, 0x906f, 0x9076, 0x96a8, 0x9072,
+ 0x9082, 0x907d, 0x9081, 0x9080, 0x908a, 0x9089, 0x908f, 0x90a8,
+ 0x90af, 0x90b1, 0x90b5, 0x90e2, 0x90e4, 0x6248, 0x90db, 0x9102,
+ 0x9112, 0x9119, 0x9132, 0x9130, 0x914a, 0x9156, 0x9158, 0x9163,
+ 0x9165, 0x9169, 0x9173, 0x9172, 0x918b, 0x9189, 0x9182, 0x91a2,
+ 0x91ab, 0x91af, 0x91aa, 0x91b5, 0x91b4, 0x91ba, 0x91c0, 0x91c1,
+ 0x91c9, 0x91cb, 0x91d0, 0x91d6, 0x91df, 0x91e1, 0x91db, 0x91fc,
+ 0x91f5, 0x91f6, 0x921e, 0x91ff, 0x9214, 0x922c, 0x9215, 0x9211,
+ 0x925e, 0x9257, 0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923f,
+ 0x924b, 0x9250, 0x929c, 0x9296, 0x9293, 0x929b, 0x925a, 0x92cf,
+ 0x92b9, 0x92b7, 0x92e9, 0x930f, 0x92fa, 0x9344, 0x932e,
+ /* 0x6f21 - 0x6f7e */
+ 0x9319, 0x9322, 0x931a, 0x9323, 0x933a, 0x9335, 0x933b,
+ 0x935c, 0x9360, 0x937c, 0x936e, 0x9356, 0x93b0, 0x93ac, 0x93ad,
+ 0x9394, 0x93b9, 0x93d6, 0x93d7, 0x93e8, 0x93e5, 0x93d8, 0x93c3,
+ 0x93dd, 0x93d0, 0x93c8, 0x93e4, 0x941a, 0x9414, 0x9413, 0x9403,
+ 0x9407, 0x9410, 0x9436, 0x942b, 0x9435, 0x9421, 0x943a, 0x9441,
+ 0x9452, 0x9444, 0x945b, 0x9460, 0x9462, 0x945e, 0x946a, 0x9229,
+ 0x9470, 0x9475, 0x9477, 0x947d, 0x945a, 0x947c, 0x947e, 0x9481,
+ 0x947f, 0x9582, 0x9587, 0x958a, 0x9594, 0x9596, 0x9598, 0x9599,
+ 0x95a0, 0x95a8, 0x95a7, 0x95ad, 0x95bc, 0x95bb, 0x95b9, 0x95be,
+ 0x95ca, 0x6ff6, 0x95c3, 0x95cd, 0x95cc, 0x95d5, 0x95d4, 0x95d6,
+ 0x95dc, 0x95e1, 0x95e5, 0x95e2, 0x9621, 0x9628, 0x962e, 0x962f,
+ 0x9642, 0x964c, 0x964f, 0x964b, 0x9677, 0x965c, 0x965e,
+ /* 0x7021 - 0x707e */
+ 0x965d, 0x965f, 0x9666, 0x9672, 0x966c, 0x968d, 0x9698,
+ 0x9695, 0x9697, 0x96aa, 0x96a7, 0x96b1, 0x96b2, 0x96b0, 0x96b4,
+ 0x96b6, 0x96b8, 0x96b9, 0x96ce, 0x96cb, 0x96c9, 0x96cd, 0x894d,
+ 0x96dc, 0x970d, 0x96d5, 0x96f9, 0x9704, 0x9706, 0x9708, 0x9713,
+ 0x970e, 0x9711, 0x970f, 0x9716, 0x9719, 0x9724, 0x972a, 0x9730,
+ 0x9739, 0x973d, 0x973e, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749,
+ 0x975c, 0x9760, 0x9764, 0x9766, 0x9768, 0x52d2, 0x976b, 0x9771,
+ 0x9779, 0x9785, 0x977c, 0x9781, 0x977a, 0x9786, 0x978b, 0x978f,
+ 0x9790, 0x979c, 0x97a8, 0x97a6, 0x97a3, 0x97b3, 0x97b4, 0x97c3,
+ 0x97c6, 0x97c8, 0x97cb, 0x97dc, 0x97ed, 0x9f4f, 0x97f2, 0x7adf,
+ 0x97f6, 0x97f5, 0x980f, 0x980c, 0x9838, 0x9824, 0x9821, 0x9837,
+ 0x983d, 0x9846, 0x984f, 0x984b, 0x986b, 0x986f, 0x9870,
+ /* 0x7121 - 0x717e */
+ 0x9871, 0x9874, 0x9873, 0x98aa, 0x98af, 0x98b1, 0x98b6,
+ 0x98c4, 0x98c3, 0x98c6, 0x98e9, 0x98eb, 0x9903, 0x9909, 0x9912,
+ 0x9914, 0x9918, 0x9921, 0x991d, 0x991e, 0x9924, 0x9920, 0x992c,
+ 0x992e, 0x993d, 0x993e, 0x9942, 0x9949, 0x9945, 0x9950, 0x994b,
+ 0x9951, 0x9952, 0x994c, 0x9955, 0x9997, 0x9998, 0x99a5, 0x99ad,
+ 0x99ae, 0x99bc, 0x99df, 0x99db, 0x99dd, 0x99d8, 0x99d1, 0x99ed,
+ 0x99ee, 0x99f1, 0x99f2, 0x99fb, 0x99f8, 0x9a01, 0x9a0f, 0x9a05,
+ 0x99e2, 0x9a19, 0x9a2b, 0x9a37, 0x9a45, 0x9a42, 0x9a40, 0x9a43,
+ 0x9a3e, 0x9a55, 0x9a4d, 0x9a5b, 0x9a57, 0x9a5f, 0x9a62, 0x9a65,
+ 0x9a64, 0x9a69, 0x9a6b, 0x9a6a, 0x9aad, 0x9ab0, 0x9abc, 0x9ac0,
+ 0x9acf, 0x9ad1, 0x9ad3, 0x9ad4, 0x9ade, 0x9adf, 0x9ae2, 0x9ae3,
+ 0x9ae6, 0x9aef, 0x9aeb, 0x9aee, 0x9af4, 0x9af1, 0x9af7,
+ /* 0x7221 - 0x727e */
+ 0x9afb, 0x9b06, 0x9b18, 0x9b1a, 0x9b1f, 0x9b22, 0x9b23,
+ 0x9b25, 0x9b27, 0x9b28, 0x9b29, 0x9b2a, 0x9b2e, 0x9b2f, 0x9b32,
+ 0x9b44, 0x9b43, 0x9b4f, 0x9b4d, 0x9b4e, 0x9b51, 0x9b58, 0x9b74,
+ 0x9b93, 0x9b83, 0x9b91, 0x9b96, 0x9b97, 0x9b9f, 0x9ba0, 0x9ba8,
+ 0x9bb4, 0x9bc0, 0x9bca, 0x9bb9, 0x9bc6, 0x9bcf, 0x9bd1, 0x9bd2,
+ 0x9be3, 0x9be2, 0x9be4, 0x9bd4, 0x9be1, 0x9c3a, 0x9bf2, 0x9bf1,
+ 0x9bf0, 0x9c15, 0x9c14, 0x9c09, 0x9c13, 0x9c0c, 0x9c06, 0x9c08,
+ 0x9c12, 0x9c0a, 0x9c04, 0x9c2e, 0x9c1b, 0x9c25, 0x9c24, 0x9c21,
+ 0x9c30, 0x9c47, 0x9c32, 0x9c46, 0x9c3e, 0x9c5a, 0x9c60, 0x9c67,
+ 0x9c76, 0x9c78, 0x9ce7, 0x9cec, 0x9cf0, 0x9d09, 0x9d08, 0x9ceb,
+ 0x9d03, 0x9d06, 0x9d2a, 0x9d26, 0x9daf, 0x9d23, 0x9d1f, 0x9d44,
+ 0x9d15, 0x9d12, 0x9d41, 0x9d3f, 0x9d3e, 0x9d46, 0x9d48,
+ /* 0x7321 - 0x737e */
+ 0x9d5d, 0x9d5e, 0x9d64, 0x9d51, 0x9d50, 0x9d59, 0x9d72,
+ 0x9d89, 0x9d87, 0x9dab, 0x9d6f, 0x9d7a, 0x9d9a, 0x9da4, 0x9da9,
+ 0x9db2, 0x9dc4, 0x9dc1, 0x9dbb, 0x9db8, 0x9dba, 0x9dc6, 0x9dcf,
+ 0x9dc2, 0x9dd9, 0x9dd3, 0x9df8, 0x9de6, 0x9ded, 0x9def, 0x9dfd,
+ 0x9e1a, 0x9e1b, 0x9e1e, 0x9e75, 0x9e79, 0x9e7d, 0x9e81, 0x9e88,
+ 0x9e8b, 0x9e8c, 0x9e92, 0x9e95, 0x9e91, 0x9e9d, 0x9ea5, 0x9ea9,
+ 0x9eb8, 0x9eaa, 0x9ead, 0x9761, 0x9ecc, 0x9ece, 0x9ecf, 0x9ed0,
+ 0x9ed4, 0x9edc, 0x9ede, 0x9edd, 0x9ee0, 0x9ee5, 0x9ee8, 0x9eef,
+ 0x9ef4, 0x9ef6, 0x9ef7, 0x9ef9, 0x9efb, 0x9efc, 0x9efd, 0x9f07,
+ 0x9f08, 0x76b7, 0x9f15, 0x9f21, 0x9f2c, 0x9f3e, 0x9f4a, 0x9f52,
+ 0x9f54, 0x9f63, 0x9f5f, 0x9f60, 0x9f61, 0x9f66, 0x9f67, 0x9f6c,
+ 0x9f6a, 0x9f77, 0x9f72, 0x9f76, 0x9f95, 0x9f9c, 0x9fa0,
+ /* 0x7421 - 0x747e */
+ 0x582f, 0x69c7, 0x9059, 0x7464, 0x51dc, 0x7199, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7521 - 0x757e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7621 - 0x767e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7721 - 0x777e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7821 - 0x787e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7921 - 0x797e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7a21 - 0x7a7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7b21 - 0x7b7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7c21 - 0x7c7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7d21 - 0x7d7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7e21 - 0x7e7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static uint jisx0208ToUnicode11(uint h, uint l)
+{
+ if ((0x0021 <= h) && (h <= 0x007e) && (0x0021 <= l) && (l <= 0x007e)) {
+ return jisx0208_to_unicode[(h - 0x0021) * 0x005e + (l - 0x0021)];
+ }
+ return 0x0000;
+}
+
+/*
+ * This data is derived from Unicode 1.1,
+ * JIS X 0208 (1990) to Unicode mapping table version 0.9 .
+ * (In addition NEC Vender Defined Char included)
+ */
+static unsigned short const unicode_to_jisx0208_00[] = {
+ /* 0x0000 - 0x00ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2140, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2171, 0x2172, 0x0000, 0x0000, 0x0000, 0x2178,
+ 0x212f, 0x0000, 0x0000, 0x0000, 0x224c, 0x0000, 0x0000, 0x0000,
+ 0x216b, 0x215e, 0x0000, 0x0000, 0x212d, 0x0000, 0x2279, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x215f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2160,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_03[] = {
+ /* 0x0300 - 0x03ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2621, 0x2622, 0x2623, 0x2624, 0x2625, 0x2626, 0x2627,
+ 0x2628, 0x2629, 0x262a, 0x262b, 0x262c, 0x262d, 0x262e, 0x262f,
+ 0x2630, 0x2631, 0x0000, 0x2632, 0x2633, 0x2634, 0x2635, 0x2636,
+ 0x2637, 0x2638, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2641, 0x2642, 0x2643, 0x2644, 0x2645, 0x2646, 0x2647,
+ 0x2648, 0x2649, 0x264a, 0x264b, 0x264c, 0x264d, 0x264e, 0x264f,
+ 0x2650, 0x2651, 0x0000, 0x2652, 0x2653, 0x2654, 0x2655, 0x2656,
+ 0x2657, 0x2658, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_04[] = {
+ /* 0x0400 - 0x04ff */
+ 0x0000, 0x2727, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2728, 0x2729,
+ 0x272a, 0x272b, 0x272c, 0x272d, 0x272e, 0x272f, 0x2730, 0x2731,
+ 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737, 0x2738, 0x2739,
+ 0x273a, 0x273b, 0x273c, 0x273d, 0x273e, 0x273f, 0x2740, 0x2741,
+ 0x2751, 0x2752, 0x2753, 0x2754, 0x2755, 0x2756, 0x2758, 0x2759,
+ 0x275a, 0x275b, 0x275c, 0x275d, 0x275e, 0x275f, 0x2760, 0x2761,
+ 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, 0x2768, 0x2769,
+ 0x276a, 0x276b, 0x276c, 0x276d, 0x276e, 0x276f, 0x2770, 0x2771,
+ 0x0000, 0x2757, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_20[] = {
+ /* 0x2000 - 0x20ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x213e, 0x0000, 0x0000, 0x0000, 0x0000, 0x213d, 0x2142, 0x0000,
+ 0x2146, 0x2147, 0x0000, 0x0000, 0x2148, 0x2149, 0x0000, 0x0000,
+ 0x2277, 0x2278, 0x0000, 0x0000, 0x0000, 0x2145, 0x2144, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2273, 0x0000, 0x216c, 0x216d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2228, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_21[] = {
+ /* 0x2100 - 0x21ff */
+ 0x0000, 0x0000, 0x0000, 0x216e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d62, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2d64, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2272, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2d35, 0x2d36, 0x2d37, 0x2d38, 0x2d39, 0x2d3a, 0x2d3b, 0x2d3c,
+ 0x2d3d, 0x2d3e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x222b, 0x222c, 0x222a, 0x222d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x224d, 0x0000, 0x224e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_22[] = {
+ /* 0x2200 - 0x22ff */
+ 0x224f, 0x0000, 0x225f, 0x2250, 0x0000, 0x0000, 0x0000, 0x2260,
+ 0x223a, 0x0000, 0x0000, 0x223b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2d74, 0x215d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2265, 0x0000, 0x0000, 0x2267, 0x2167, 0x2d78,
+ 0x225c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x224a,
+ 0x224b, 0x2241, 0x2240, 0x2269, 0x226a, 0x0000, 0x2d73, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2168, 0x2268, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2266, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2262, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2162, 0x2261, 0x0000, 0x0000, 0x0000, 0x0000, 0x2165, 0x2166,
+ 0x0000, 0x0000, 0x2263, 0x2264, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x223e, 0x223f, 0x0000, 0x0000, 0x223c, 0x223d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x225d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d79,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_23[] = {
+ /* 0x2300 - 0x23ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x225e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_24[] = {
+ /* 0x2400 - 0x24ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2d21, 0x2d22, 0x2d23, 0x2d24, 0x2d25, 0x2d26, 0x2d27, 0x2d28,
+ 0x2d29, 0x2d2a, 0x2d2b, 0x2d2c, 0x2d2d, 0x2d2e, 0x2d2f, 0x2d30,
+ 0x2d31, 0x2d32, 0x2d33, 0x2d34, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_25[] = {
+ /* 0x2500 - 0x25ff */
+ 0x2821, 0x282c, 0x2822, 0x282d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2823, 0x0000, 0x0000, 0x282e,
+ 0x2824, 0x0000, 0x0000, 0x282f, 0x2826, 0x0000, 0x0000, 0x2831,
+ 0x2825, 0x0000, 0x0000, 0x2830, 0x2827, 0x283c, 0x0000, 0x0000,
+ 0x2837, 0x0000, 0x0000, 0x2832, 0x2829, 0x283e, 0x0000, 0x0000,
+ 0x2839, 0x0000, 0x0000, 0x2834, 0x2828, 0x0000, 0x0000, 0x2838,
+ 0x283d, 0x0000, 0x0000, 0x2833, 0x282a, 0x0000, 0x0000, 0x283a,
+ 0x283f, 0x0000, 0x0000, 0x2835, 0x282b, 0x0000, 0x0000, 0x283b,
+ 0x0000, 0x0000, 0x2840, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2836, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2223, 0x2222, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2225, 0x2224, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2227, 0x2226, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2221, 0x217e,
+ 0x0000, 0x0000, 0x0000, 0x217b, 0x0000, 0x0000, 0x217d, 0x217c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x227e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_26[] = {
+ /* 0x2600 - 0x26ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x217a, 0x2179, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x216a, 0x0000, 0x2169, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2276, 0x0000, 0x0000, 0x2275, 0x0000, 0x2274,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_30[] = {
+ /* 0x3000 - 0x30ff */
+ 0x2121, 0x2122, 0x2123, 0x2137, 0x0000, 0x2139, 0x213a, 0x213b,
+ 0x2152, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159,
+ 0x215a, 0x215b, 0x2229, 0x222e, 0x214c, 0x214d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2141, 0x2d60, 0x0000, 0x2d61,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2421, 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427,
+ 0x2428, 0x2429, 0x242a, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f,
+ 0x2430, 0x2431, 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437,
+ 0x2438, 0x2439, 0x243a, 0x243b, 0x243c, 0x243d, 0x243e, 0x243f,
+ 0x2440, 0x2441, 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447,
+ 0x2448, 0x2449, 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f,
+ 0x2450, 0x2451, 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457,
+ 0x2458, 0x2459, 0x245a, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f,
+ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
+ 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f,
+ 0x2470, 0x2471, 0x2472, 0x2473, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x212b, 0x212c, 0x2135, 0x2136, 0x0000,
+ 0x0000, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527,
+ 0x2528, 0x2529, 0x252a, 0x252b, 0x252c, 0x252d, 0x252e, 0x252f,
+ 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537,
+ 0x2538, 0x2539, 0x253a, 0x253b, 0x253c, 0x253d, 0x253e, 0x253f,
+ 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547,
+ 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e, 0x254f,
+ 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557,
+ 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, 0x255f,
+ 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567,
+ 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f,
+ 0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2126, 0x213c, 0x2133, 0x2134, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_32[] = {
+ /* 0x3200 - 0x32ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2d6a, 0x2d6b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2d6c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2d65, 0x2d66, 0x2d67, 0x2d68,
+ 0x2d69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_33[] = {
+ /* 0x3300 - 0x33ff */
+ 0x0000, 0x0000, 0x0000, 0x2d46, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d4a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2d41, 0x0000, 0x0000, 0x0000,
+ 0x2d44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2d42, 0x2d4c, 0x0000, 0x0000, 0x2d4b, 0x2d45,
+ 0x0000, 0x0000, 0x0000, 0x2d4d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d47, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2d4f, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2d40, 0x2d4e, 0x0000, 0x0000, 0x2d43, 0x0000, 0x0000,
+ 0x0000, 0x2d48, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d49,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2d5f, 0x2d6f, 0x2d6e, 0x2d6d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d53, 0x2d54,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2d50, 0x2d51, 0x2d52, 0x0000,
+ 0x0000, 0x2d56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2d55, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d63, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_4e[] = {
+ /* 0x4e00 - 0x4eff */
+ 0x306c, 0x437a, 0x0000, 0x3c37, 0x0000, 0x0000, 0x0000, 0x4b7c,
+ 0x3e66, 0x3b30, 0x3e65, 0x323c, 0x0000, 0x4954, 0x4d3f, 0x0000,
+ 0x5022, 0x312f, 0x0000, 0x0000, 0x336e, 0x5023, 0x4024, 0x5242,
+ 0x3556, 0x4a3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e67, 0x0000,
+ 0x0000, 0x4e3e, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a42, 0x0000,
+ 0x0000, 0x0000, 0x5024, 0x0000, 0x0000, 0x4366, 0x0000, 0x0000,
+ 0x0000, 0x5025, 0x367a, 0x0000, 0x0000, 0x0000, 0x5026, 0x0000,
+ 0x345d, 0x4330, 0x0000, 0x3c67, 0x5027, 0x0000, 0x0000, 0x5028,
+ 0x0000, 0x0000, 0x5029, 0x4735, 0x0000, 0x3557, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4737, 0x0000, 0x4663, 0x3843, 0x4b33,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6949, 0x502a, 0x3e68,
+ 0x502b, 0x3235, 0x0000, 0x0000, 0x0000, 0x3665, 0x3870, 0x4c69,
+ 0x0000, 0x0000, 0x5626, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4d70, 0x0000, 0x467d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3425, 0x0000,
+ 0x3535, 0x0000, 0x502c, 0x0000, 0x0000, 0x502d, 0x4e3b, 0x0000,
+ 0x4d3d, 0x4168, 0x502f, 0x3b76, 0x4673, 0x0000, 0x5032, 0x0000,
+ 0x0000, 0x313e, 0x385f, 0x0000, 0x385e, 0x3066, 0x0000, 0x0000,
+ 0x4f4b, 0x4f4a, 0x0000, 0x3a33, 0x3021, 0x0000, 0x5033, 0x5034,
+ 0x5035, 0x4b34, 0x5036, 0x0000, 0x3872, 0x3067, 0x4b72, 0x0000,
+ 0x357c, 0x0000, 0x0000, 0x357d, 0x357e, 0x4462, 0x4e3c, 0x0000,
+ 0x5037, 0x0000, 0x0000, 0x5038, 0x0000, 0x0000, 0x5039, 0x0000,
+ 0x0000, 0x0000, 0x3f4d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3d3a, 0x3f4e, 0x503e, 0x0000, 0x503c, 0x0000, 0x503d, 0x3558,
+ 0x0000, 0x0000, 0x3a23, 0x3270, 0x0000, 0x503b, 0x503a, 0x4a29,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3b46, 0x3b45, 0x423e, 0x503f,
+ 0x4955, 0x4067, 0x0000, 0x0000, 0x0000, 0x2138, 0x5040, 0x5042,
+ 0x0000, 0x0000, 0x0000, 0x4265, 0x4e61, 0x304a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5041, 0x323e, 0x0000,
+ 0x3644, 0x0000, 0x4367, 0x0000, 0x0000, 0x0000, 0x376f, 0x5043,
+ 0x0000, 0x0000, 0x0000, 0x4724, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_4f[] = {
+ /* 0x4f00 - 0x4fff */
+ 0x0000, 0x346b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5044, 0x304b, 0x0000, 0x0000, 0x3860, 0x346c, 0x497a,
+ 0x4832, 0x3559, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3271, 0x0000, 0x5067, 0x4541, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x476c,
+ 0x5046, 0x0000, 0x0000, 0x0000, 0x483c, 0x0000, 0x4e62, 0x0000,
+ 0x3f2d, 0x0000, 0x3b47, 0x0000, 0x3b77, 0x3240, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4451, 0x0000, 0x0000, 0x4322, 0x504a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x304c, 0x4463, 0x3d3b,
+ 0x3a34, 0x4d24, 0x0000, 0x424e, 0x0000, 0x323f, 0x0000, 0x5049,
+ 0x0000, 0x4d3e, 0x5045, 0x5047, 0x3a6e, 0x5048, 0x5524, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5050, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5053,
+ 0x5051, 0x0000, 0x0000, 0x3242, 0x0000, 0x4a3b, 0x504b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x504f, 0x3873, 0x0000, 0x0000, 0x3b48,
+ 0x0000, 0x0000, 0x0000, 0x3426, 0x0000, 0x0000, 0x5054, 0x0000,
+ 0x504c, 0x0000, 0x0000, 0x4e63, 0x0000, 0x3b78, 0x0000, 0x504d,
+ 0x0000, 0x5052, 0x0000, 0x0000, 0x0000, 0x0000, 0x5055, 0x0000,
+ 0x504e, 0x0000, 0x0000, 0x3621, 0x0000, 0x304d, 0x0000, 0x0000,
+ 0x3622, 0x3241, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5525, 0x0000, 0x4b79, 0x496e, 0x3874,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f2f, 0x4e37, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a58,
+ 0x0000, 0x0000, 0x3738, 0x4225, 0x3264, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3d53, 0x0000, 0x0000, 0x0000, 0x5059, 0x0000,
+ 0x505e, 0x505c, 0x0000, 0x0000, 0x5057, 0x0000, 0x0000, 0x422f,
+ 0x505a, 0x0000, 0x505d, 0x505b, 0x0000, 0x4a5d, 0x0000, 0x5058,
+ 0x0000, 0x3f2e, 0x0000, 0x4b73, 0x505f, 0x5060, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d24, 0x506d,
+ 0x0000, 0x0000, 0x0000, 0x4750, 0x0000, 0x4936, 0x5068, 0x0000,
+ 0x4a70, 0x0000, 0x3236, 0x0000, 0x0000, 0x0000, 0x506c, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_50[] = {
+ /* 0x5000 - 0x50ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5066, 0x506f, 0x0000,
+ 0x0000, 0x4152, 0x0000, 0x3844, 0x0000, 0x475c, 0x0000, 0x6047,
+ 0x0000, 0x506e, 0x455d, 0x0000, 0x5063, 0x0000, 0x3876, 0x0000,
+ 0x0000, 0x3875, 0x5061, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c5a,
+ 0x0000, 0x5069, 0x0000, 0x4a6f, 0x434d, 0x5065, 0x3771, 0x0000,
+ 0x5062, 0x506a, 0x5064, 0x4e51, 0x506b, 0x4f41, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3666, 0x0000,
+ 0x0000, 0x3770, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5070, 0x0000, 0x0000, 0x0000, 0x5071,
+ 0x5075, 0x304e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a50,
+ 0x5074, 0x0000, 0x0000, 0x0000, 0x0000, 0x5073, 0x5077, 0x0000,
+ 0x0000, 0x0000, 0x5076, 0x0000, 0x4464, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3772, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5078, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3c45, 0x0000, 0x4226, 0x4465, 0x3676, 0x0000,
+ 0x5079, 0x0000, 0x0000, 0x0000, 0x0000, 0x3536, 0x0000, 0x0000,
+ 0x507a, 0x0000, 0x0000, 0x0000, 0x0000, 0x507c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b35, 0x0000, 0x0000,
+ 0x0000, 0x3766, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3b31, 0x4877, 0x507b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3a45, 0x4d43, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x507e, 0x5123, 0x507d, 0x3a44, 0x0000, 0x3d7d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3739, 0x0000,
+ 0x0000, 0x0000, 0x5124, 0x0000, 0x0000, 0x364f, 0x0000, 0x0000,
+ 0x0000, 0x5121, 0x5122, 0x0000, 0x0000, 0x462f, 0x0000, 0x417c,
+ 0x0000, 0x3623, 0x0000, 0x0000, 0x0000, 0x4b4d, 0x5125, 0x0000,
+ 0x0000, 0x0000, 0x4e3d, 0x0000, 0x0000, 0x0000, 0x5126, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5129, 0x0000, 0x5127, 0x0000, 0x414e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5128, 0x512a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x512c, 0x0000, 0x0000,
+ 0x0000, 0x512b, 0x0000, 0x4a48, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_51[] = {
+ /* 0x5100 - 0x51ff */
+ 0x3537, 0x512e, 0x512f, 0x0000, 0x322f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x512d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3c74, 0x0000, 0x5132, 0x5131, 0x5130, 0x0000,
+ 0x5056, 0x0000, 0x5133, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d7e,
+ 0x0000, 0x5134, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4d25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4c59, 0x0000, 0x0000, 0x0000, 0x0000, 0x5136,
+ 0x0000, 0x0000, 0x5135, 0x5138, 0x5137, 0x0000, 0x0000, 0x5139,
+ 0x513a, 0x3074, 0x0000, 0x3835, 0x373b, 0x3d3c, 0x437b, 0x3624,
+ 0x4068, 0x3877, 0x0000, 0x396e, 0x513c, 0x4c48, 0x4546, 0x0000,
+ 0x3b79, 0x0000, 0x513b, 0x0000, 0x513d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x455e, 0x0000, 0x3375, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x513e, 0x0000, 0x0000, 0x467e, 0x0000, 0x0000,
+ 0x4134, 0x5140, 0x5141, 0x482c, 0x3878, 0x4f3b, 0x5142, 0x0000,
+ 0x0000, 0x3626, 0x0000, 0x0000, 0x0000, 0x4a3c, 0x4236, 0x3671,
+ 0x4535, 0x0000, 0x0000, 0x0000, 0x3773, 0x0000, 0x0000, 0x0000,
+ 0x5143, 0x0000, 0x5144, 0x0000, 0x0000, 0x4662, 0x315f, 0x0000,
+ 0x0000, 0x5147, 0x3a7d, 0x0000, 0x5146, 0x3a46, 0x0000, 0x5148,
+ 0x666e, 0x5149, 0x4b41, 0x514a, 0x0000, 0x514b, 0x514c, 0x3e69,
+ 0x0000, 0x3c4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3427, 0x0000, 0x514f, 0x0000, 0x514d, 0x4c3d, 0x514e, 0x0000,
+ 0x495a, 0x5150, 0x5151, 0x5152, 0x455f, 0x0000, 0x0000, 0x0000,
+ 0x5156, 0x5154, 0x5155, 0x5153, 0x3a63, 0x5157, 0x4c6a, 0x4e64,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5158, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4028, 0x5159, 0x3d5a, 0x0000,
+ 0x0000, 0x515a, 0x0000, 0x437c, 0x4e3f, 0x4560, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5245, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x515b, 0x7425, 0x3645, 0x0000, 0x0000,
+ 0x515c, 0x4b5e, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d68, 0x427c,
+ 0x0000, 0x515e, 0x4664, 0x0000, 0x0000, 0x515f, 0x0000, 0x0000,
+ 0x5160, 0x332e, 0x0000, 0x0000, 0x0000, 0x5161, 0x3627, 0x0000,
+ 0x464c, 0x317a, 0x3d50, 0x0000, 0x0000, 0x4821, 0x5162, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_52[] = {
+ /* 0x5200 - 0x52ff */
+ 0x4561, 0x0000, 0x0000, 0x3f4f, 0x5163, 0x0000, 0x4a2c, 0x405a,
+ 0x3422, 0x0000, 0x3429, 0x5164, 0x0000, 0x0000, 0x5166, 0x0000,
+ 0x0000, 0x373a, 0x0000, 0x0000, 0x5165, 0x0000, 0x0000, 0x4e73,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d69, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x483d, 0x4a4c, 0x0000, 0x5167,
+ 0x0000, 0x4d78, 0x5168, 0x0000, 0x0000, 0x0000, 0x5169, 0x0000,
+ 0x457e, 0x0000, 0x0000, 0x516a, 0x0000, 0x0000, 0x4029, 0x3a7e,
+ 0x3774, 0x516b, 0x3b49, 0x396f, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4466, 0x516d, 0x0000, 0x0000, 0x4227,
+ 0x0000, 0x0000, 0x3a6f, 0x516e, 0x516f, 0x4130, 0x0000, 0x516c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5171, 0x0000, 0x4b36, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3964, 0x0000, 0x0000, 0x5170, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3775, 0x3a5e, 0x476d, 0x0000, 0x0000,
+ 0x0000, 0x5174, 0x5172, 0x0000, 0x0000, 0x0000, 0x0000, 0x497b,
+ 0x3e6a, 0x517b, 0x3364, 0x5175, 0x5173, 0x414f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5177, 0x0000, 0x5176,
+ 0x0000, 0x0000, 0x0000, 0x3344, 0x0000, 0x0000, 0x0000, 0x3760,
+ 0x517c, 0x4e2d, 0x0000, 0x0000, 0x0000, 0x5178, 0x0000, 0x0000,
+ 0x0000, 0x517d, 0x517a, 0x0000, 0x5179, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4e4f, 0x0000, 0x0000, 0x0000, 0x3879,
+ 0x3243, 0x0000, 0x0000, 0x4e74, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3d75, 0x4558, 0x3965, 0x5222, 0x5223, 0x0000, 0x0000,
+ 0x0000, 0x4e65, 0x0000, 0x0000, 0x4f2b, 0x5225, 0x0000, 0x0000,
+ 0x0000, 0x387a, 0x0000, 0x0000, 0x5224, 0x0000, 0x332f, 0x0000,
+ 0x0000, 0x5226, 0x0000, 0x4b56, 0x0000, 0x443c, 0x0000, 0x4d26,
+ 0x0000, 0x4a59, 0x0000, 0x0000, 0x0000, 0x5227, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7055, 0x0000, 0x0000, 0x4630, 0x0000, 0x5228,
+ 0x342a, 0x4c33, 0x0000, 0x0000, 0x0000, 0x3e21, 0x5229, 0x4a67,
+ 0x522d, 0x0000, 0x402a, 0x522a, 0x3650, 0x0000, 0x522b, 0x342b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x372e, 0x522e, 0x0000, 0x522f, 0x0000, 0x0000,
+ 0x5230, 0x5231, 0x3c5b, 0x0000, 0x0000, 0x0000, 0x387b, 0x4c5e,
+};
+
+static unsigned short const unicode_to_jisx0208_53[] = {
+ /* 0x5300 - 0x53ff */
+ 0x0000, 0x4c68, 0x4677, 0x0000, 0x0000, 0x4a71, 0x5232, 0x0000,
+ 0x5233, 0x0000, 0x0000, 0x0000, 0x0000, 0x5235, 0x0000, 0x5237,
+ 0x5236, 0x0000, 0x0000, 0x0000, 0x0000, 0x5238, 0x323d, 0x4b4c,
+ 0x0000, 0x3a7c, 0x5239, 0x0000, 0x0000, 0x4159, 0x0000, 0x0000,
+ 0x3e22, 0x3629, 0x0000, 0x523a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x485b, 0x0000, 0x0000, 0x0000, 0x0000, 0x523b,
+ 0x0000, 0x523c, 0x0000, 0x523d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x523e, 0x4924, 0x3668, 0x3065, 0x0000, 0x0000, 0x0000, 0x463f,
+ 0x523f, 0x3d3d, 0x0000, 0x4069, 0x0000, 0x5241, 0x5240, 0x3e23,
+ 0x3861, 0x5243, 0x483e, 0x0000, 0x0000, 0x5244, 0x0000, 0x0000,
+ 0x0000, 0x485c, 0x4234, 0x426e, 0x3628, 0x0000, 0x0000, 0x466e,
+ 0x4331, 0x0000, 0x476e, 0x0000, 0x4b4e, 0x0000, 0x5246, 0x0000,
+ 0x406a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3735, 0x0000,
+ 0x0000, 0x5247, 0x0000, 0x0000, 0x0000, 0x0000, 0x5248, 0x312c,
+ 0x3075, 0x346d, 0x0000, 0x4228, 0x3551, 0x4d71, 0x0000, 0x524b,
+ 0x3237, 0x0000, 0x0000, 0x524a, 0x0000, 0x0000, 0x0000, 0x362a,
+ 0x0000, 0x0000, 0x524c, 0x0000, 0x4c71, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x524d, 0x0000,
+ 0x4e52, 0x0000, 0x387c, 0x0000, 0x0000, 0x0000, 0x0000, 0x3836,
+ 0x524e, 0x0000, 0x0000, 0x0000, 0x0000, 0x5250, 0x524f, 0x0000,
+ 0x3f5f, 0x3139, 0x0000, 0x0000, 0x0000, 0x315e, 0x5251, 0x0000,
+ 0x5252, 0x0000, 0x0000, 0x3837, 0x0000, 0x0000, 0x5253, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x356e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3b32, 0x5254, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4b74, 0x3a35, 0x355a, 0x4d27, 0x4150, 0x483f, 0x3c7d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3d47, 0x0000, 0x3c68, 0x3c75,
+ 0x0000, 0x3d76, 0x0000, 0x4840, 0x0000, 0x0000, 0x0000, 0x5257,
+ 0x0000, 0x3143, 0x4151, 0x387d, 0x3845, 0x3667, 0x0000, 0x0000,
+ 0x525b, 0x4321, 0x427e, 0x362b, 0x3e24, 0x525c, 0x525a, 0x3244,
+ 0x4266, 0x3c38, 0x3b4b, 0x3126, 0x0000, 0x0000, 0x3370, 0x3966,
+ 0x3b4a, 0x0000, 0x525d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_54[] = {
+ /* 0x5400 - 0x54ff */
+ 0x0000, 0x525e, 0x0000, 0x3549, 0x3346, 0x0000, 0x0000, 0x0000,
+ 0x3967, 0x3548, 0x445f, 0x3125, 0x4631, 0x4c3e, 0x3921, 0x4d79,
+ 0x4547, 0x387e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x372f, 0x0000, 0x5267, 0x0000, 0x3663,
+ 0x4b4a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x485d, 0x0000,
+ 0x0000, 0x5266, 0x0000, 0x345e, 0x5261, 0x5262, 0x5264, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5265, 0x0000,
+ 0x355b, 0x3f61, 0x0000, 0x4a2d, 0x5263, 0x525f, 0x3863, 0x0000,
+ 0x5260, 0x0000, 0x4f24, 0x0000, 0x0000, 0x0000, 0x4a72, 0x0000,
+ 0x4468, 0x3862, 0x3970, 0x0000, 0x0000, 0x0000, 0x5268, 0x0000,
+ 0x0000, 0x465d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x526c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3c7e, 0x0000, 0x3c76, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x526f, 0x526d, 0x0000, 0x4c23, 0x0000, 0x526a, 0x5273, 0x526e,
+ 0x0000, 0x0000, 0x0000, 0x5271, 0x3846, 0x4c3f, 0x0000, 0x0000,
+ 0x5272, 0x0000, 0x0000, 0x0000, 0x5274, 0x0000, 0x5276, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3a70, 0x4f42, 0x0000, 0x526b, 0x5269,
+ 0x5275, 0x0000, 0x5270, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5278, 0x0000, 0x5323, 0x527a, 0x0000, 0x0000,
+ 0x527e, 0x0000, 0x0000, 0x5321, 0x527b, 0x0000, 0x0000, 0x533e,
+ 0x0000, 0x0000, 0x3a69, 0x3331, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5279, 0x0000, 0x0000, 0x0000, 0x5325, 0x3076, 0x5324, 0x0000,
+ 0x3025, 0x494a, 0x5322, 0x0000, 0x527c, 0x0000, 0x0000, 0x5277,
+ 0x527d, 0x3a48, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5326, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3077, 0x532f, 0x0000, 0x0000, 0x5327, 0x5328, 0x0000,
+ 0x3e25, 0x4b69, 0x0000, 0x0000, 0x0000, 0x532d, 0x532c, 0x0000,
+ 0x0000, 0x0000, 0x452f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x532e, 0x0000, 0x0000, 0x532b, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_55[] = {
+ /* 0x5500 - 0x55ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3134, 0x0000, 0x3a36, 0x3f30,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5329,
+ 0x4562, 0x0000, 0x0000, 0x0000, 0x532a, 0x0000, 0x3022, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5334, 0x4d23,
+ 0x0000, 0x3e27, 0x0000, 0x533a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5339, 0x5330, 0x0000, 0x0000, 0x0000, 0x0000, 0x4243, 0x0000,
+ 0x5331, 0x0000, 0x0000, 0x0000, 0x426f, 0x5336, 0x3e26, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5333, 0x0000, 0x0000, 0x4c64,
+ 0x0000, 0x0000, 0x0000, 0x373c, 0x0000, 0x0000, 0x5337, 0x5338,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5335, 0x533b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5332, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5341, 0x5346, 0x0000, 0x5342, 0x0000,
+ 0x533d, 0x0000, 0x0000, 0x5347, 0x4131, 0x0000, 0x0000, 0x5349,
+ 0x0000, 0x3922, 0x533f, 0x437d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5343, 0x533c, 0x342d, 0x0000, 0x346e, 0x3365, 0x5344, 0x5340,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3776,
+ 0x534a, 0x5348, 0x4153, 0x354a, 0x362c, 0x0000, 0x5345, 0x0000,
+ 0x3674, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3144, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x534e, 0x534c, 0x0000, 0x5427,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5351, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x534b, 0x0000, 0x534f, 0x0000, 0x0000, 0x534d,
+ 0x0000, 0x0000, 0x0000, 0x3b4c, 0x5350, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5353,
+ 0x0000, 0x5358, 0x0000, 0x0000, 0x0000, 0x5356, 0x5355, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_56[] = {
+ /* 0x5600 - 0x56ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4332, 0x0000,
+ 0x0000, 0x3245, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5352, 0x0000, 0x5354, 0x3e28,
+ 0x3133, 0x0000, 0x0000, 0x5357, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x325e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5362,
+ 0x0000, 0x3e7c, 0x535e, 0x0000, 0x535c, 0x0000, 0x535d, 0x0000,
+ 0x535f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x313d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4139, 0x0000, 0x5359, 0x0000,
+ 0x535a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x337a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5361, 0x0000, 0x0000, 0x0000,
+ 0x346f, 0x0000, 0x5364, 0x5360, 0x5363, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4a2e, 0x0000, 0x0000, 0x0000,
+ 0x4655, 0x0000, 0x4838, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5366, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5365, 0x3345,
+ 0x0000, 0x0000, 0x5367, 0x0000, 0x0000, 0x0000, 0x0000, 0x536a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5369, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5368, 0x0000, 0x4739, 0x0000, 0x0000, 0x536b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x536c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x536e, 0x0000, 0x536d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5370, 0x0000, 0x0000, 0x0000,
+ 0x5373, 0x5371, 0x536f, 0x5372, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5374, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5375, 0x0000,
+ 0x0000, 0x5376, 0x0000, 0x5377, 0x0000, 0x0000, 0x0000, 0x5378,
+ 0x5145, 0x0000, 0x3c7c, 0x3b4d, 0x0000, 0x0000, 0x3273, 0x0000,
+ 0x3078, 0x0000, 0x0000, 0x4344, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5379, 0x0000,
+ 0x3a24, 0x0000, 0x304f, 0x3f5e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x537a, 0x3847, 0x0000, 0x0000, 0x3971, 0x0000, 0x537c,
+};
+
+static unsigned short const unicode_to_jisx0208_57[] = {
+ /* 0x5700 - 0x57ff */
+ 0x537b, 0x0000, 0x0000, 0x4a60, 0x537d, 0x0000, 0x0000, 0x0000,
+ 0x5421, 0x537e, 0x0000, 0x5422, 0x0000, 0x5423, 0x0000, 0x3777,
+ 0x0000, 0x0000, 0x3160, 0x5424, 0x0000, 0x0000, 0x5426, 0x0000,
+ 0x5425, 0x0000, 0x0000, 0x0000, 0x5428, 0x0000, 0x0000, 0x455a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5429, 0x3035,
+ 0x3a5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x373d, 0x0000, 0x0000,
+ 0x434f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x542a,
+ 0x542b, 0x0000, 0x0000, 0x542d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x542e, 0x0000, 0x3a64, 0x0000, 0x0000, 0x0000, 0x0000, 0x3651,
+ 0x0000, 0x0000, 0x4b37, 0x0000, 0x0000, 0x0000, 0x542c, 0x542f,
+ 0x3a41, 0x3923, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5433, 0x0000, 0x0000, 0x3a25, 0x0000, 0x4333, 0x0000,
+ 0x0000, 0x5430, 0x445a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5434,
+ 0x0000, 0x0000, 0x3f62, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5432, 0x5435, 0x0000, 0x373f, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5436, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5437, 0x0000, 0x3924, 0x3340, 0x5439, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x543a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x543b, 0x0000, 0x0000, 0x5438, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5431, 0x0000, 0x0000, 0x543c, 0x0000, 0x0000, 0x543d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4b64, 0x0000, 0x0000, 0x3e6b, 0x0000,
+ 0x0000, 0x0000, 0x543f, 0x5440, 0x543e, 0x0000, 0x5442, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4738, 0x0000, 0x0000, 0x3068,
+ 0x4956, 0x0000, 0x0000, 0x5443, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3e7d, 0x0000, 0x0000, 0x3c39,
+ 0x0000, 0x475d, 0x3470, 0x0000, 0x3a6b, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_58[] = {
+ /* 0x5800 - 0x58ff */
+ 0x4b59, 0x0000, 0x4632, 0x0000, 0x0000, 0x3778, 0x424f, 0x0000,
+ 0x0000, 0x0000, 0x5441, 0x5444, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4244, 0x0000, 0x0000,
+ 0x0000, 0x5445, 0x0000, 0x0000, 0x0000, 0x5446, 0x0000, 0x0000,
+ 0x0000, 0x5448, 0x0000, 0x0000, 0x4469, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x342e, 0x0000, 0x0000, 0x0000, 0x0000, 0x7421,
+ 0x3161, 0x4a73, 0x0000, 0x0000, 0x3e6c, 0x4548, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3a66, 0x0000, 0x0000, 0x544e, 0x0000, 0x0000,
+ 0x4a3d, 0x4e5d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3274, 0x544a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x413a, 0x544d, 0x0000, 0x4563, 0x0000, 0x0000, 0x4549,
+ 0x4564, 0x4839, 0x444d, 0x0000, 0x0000, 0x0000, 0x3a49, 0x0000,
+ 0x0000, 0x0000, 0x5449, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3176, 0x0000, 0x4536, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x544b, 0x0000, 0x5447, 0x0000, 0x0000, 0x3f50, 0x0000, 0x0000,
+ 0x0000, 0x544f, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d4e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x362d, 0x0000, 0x5450, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4a68, 0x0000, 0x0000, 0x0000, 0x417d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4446, 0x0000, 0x0000, 0x5452,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4b4f, 0x0000, 0x0000, 0x5453, 0x0000, 0x0000, 0x5458, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4a2f, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5457, 0x5451, 0x5454, 0x5456, 0x0000, 0x0000, 0x3a26, 0x0000,
+ 0x0000, 0x4a49, 0x0000, 0x0000, 0x0000, 0x5459, 0x0000, 0x4345,
+ 0x0000, 0x0000, 0x3275, 0x0000, 0x3e6d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x545b, 0x0000, 0x545a, 0x0000, 0x3968, 0x0000, 0x545c,
+ 0x545e, 0x545d, 0x0000, 0x0000, 0x5460, 0x0000, 0x5455, 0x5462,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5461, 0x545f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3b4e, 0x3f51, 0x0000, 0x4154, 0x5463,
+ 0x403c, 0x306d, 0x4764, 0x0000, 0x0000, 0x0000, 0x0000, 0x445b,
+ 0x0000, 0x5465, 0x5464, 0x5466, 0x5467, 0x5468, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_59[] = {
+ /* 0x5900 - 0x59ff */
+ 0x0000, 0x0000, 0x5469, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4a51, 0x546a, 0x0000, 0x0000, 0x0000, 0x0000, 0x3246,
+ 0x546b, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d3c, 0x3330, 0x0000,
+ 0x5249, 0x3d48, 0x423f, 0x546c, 0x4c6b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4c34, 0x0000, 0x0000, 0x546e, 0x0000, 0x4267,
+ 0x0000, 0x4537, 0x4240, 0x4957, 0x546f, 0x5470, 0x317b, 0x0000,
+ 0x0000, 0x3c3a, 0x5471, 0x0000, 0x0000, 0x0000, 0x0000, 0x3050,
+ 0x5472, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5473, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3162, 0x0000, 0x0000, 0x3471,
+ 0x4660, 0x4a74, 0x0000, 0x0000, 0x0000, 0x0000, 0x5477, 0x4155,
+ 0x5476, 0x3740, 0x0000, 0x0000, 0x4b5b, 0x5475, 0x0000, 0x4565,
+ 0x5479, 0x0000, 0x5478, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x547b, 0x0000, 0x547a, 0x0000, 0x0000, 0x317c, 0x0000, 0x547c,
+ 0x3e29, 0x547e, 0x4325, 0x0000, 0x547d, 0x0000, 0x4a33, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3d77, 0x455b, 0x0000, 0x0000, 0x0000,
+ 0x5521, 0x0000, 0x0000, 0x0000, 0x0000, 0x3925, 0x0000, 0x0000,
+ 0x0000, 0x5522, 0x4721, 0x485e, 0x4c51, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4725, 0x0000, 0x0000, 0x552b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3538, 0x0000, 0x0000, 0x4d45, 0x0000,
+ 0x0000, 0x4c2f, 0x0000, 0x562c, 0x0000, 0x5523, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5526, 0x0000, 0x4245, 0x0000, 0x0000,
+ 0x4b38, 0x0000, 0x0000, 0x0000, 0x454a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5527, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4b65, 0x0000, 0x3a4a, 0x0000, 0x0000, 0x3e2a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5528, 0x0000,
+ 0x0000, 0x3b50, 0x0000, 0x3b4f, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3039, 0x3848, 0x0000, 0x402b, 0x3051, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x552c, 0x552d, 0x0000, 0x552a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3138, 0x342f, 0x0000,
+ 0x5529, 0x0000, 0x4c45, 0x4931, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3028, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3079, 0x0000, 0x0000, 0x0000, 0x3b51,
+};
+
+static unsigned short const unicode_to_jisx0208_5a[] = {
+ /* 0x5a00 - 0x5aff */
+ 0x0000, 0x3052, 0x0000, 0x3023, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5532, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5530, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4c3c, 0x0000, 0x5533, 0x0000, 0x5531, 0x0000, 0x0000, 0x552f,
+ 0x3f31, 0x0000, 0x0000, 0x0000, 0x0000, 0x552e, 0x0000, 0x0000,
+ 0x0000, 0x4a5a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3864,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5537, 0x5538, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3e2b, 0x0000, 0x0000, 0x0000,
+ 0x5534, 0x4f2c, 0x0000, 0x0000, 0x0000, 0x0000, 0x474c, 0x0000,
+ 0x0000, 0x5536, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3a27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5539, 0x0000, 0x0000, 0x0000, 0x4958, 0x0000,
+ 0x0000, 0x0000, 0x553a, 0x0000, 0x5535, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c3b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x475e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x553b, 0x4932, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x553c, 0x5540, 0x553d, 0x0000,
+ 0x0000, 0x3247, 0x553f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3c3b, 0x0000, 0x553e, 0x3779, 0x0000, 0x0000, 0x0000,
+ 0x554c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5545, 0x5542,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4364, 0x0000, 0x5541, 0x0000, 0x0000, 0x5543, 0x0000,
+ 0x0000, 0x5544, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5546, 0x5547, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_5b[] = {
+ /* 0x5b00 - 0x5bff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3472, 0x0000, 0x5549, 0x5548, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x554a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3e6e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x554d, 0x0000, 0x445c, 0x0000, 0x0000, 0x0000,
+ 0x3145, 0x0000, 0x554b, 0x0000, 0x0000, 0x0000, 0x554e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x554f, 0x0000,
+ 0x5552, 0x0000, 0x0000, 0x5550, 0x0000, 0x5551, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3b52, 0x5553, 0x0000, 0x0000, 0x3926, 0x5554, 0x0000, 0x3b7a,
+ 0x4238, 0x0000, 0x5555, 0x5556, 0x3b5a, 0x3927, 0x0000, 0x4c52,
+ 0x0000, 0x0000, 0x0000, 0x3528, 0x3849, 0x5557, 0x3358, 0x0000,
+ 0x0000, 0x5558, 0x0000, 0x4239, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5559, 0x5623, 0x0000, 0x555a, 0x0000, 0x555b, 0x0000, 0x0000,
+ 0x555c, 0x0000, 0x555e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x555f, 0x0000, 0x0000, 0x5560, 0x0000, 0x4270, 0x0000, 0x3127,
+ 0x3c69, 0x3042, 0x0000, 0x4157, 0x3430, 0x3c35, 0x0000, 0x3928,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4566, 0x0000, 0x3d21,
+ 0x3431, 0x4368, 0x446a, 0x3038, 0x3539, 0x4a75, 0x0000, 0x3c42,
+ 0x0000, 0x0000, 0x3552, 0x406b, 0x3c3c, 0x4d28, 0x5561, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x355c, 0x0000,
+ 0x3a4b, 0x0000, 0x0000, 0x3332, 0x3163, 0x3e2c, 0x3248, 0x0000,
+ 0x5562, 0x4d46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d49,
+ 0x0000, 0x0000, 0x3c64, 0x5563, 0x3473, 0x4652, 0x4c29, 0x5564,
+ 0x0000, 0x5565, 0x0000, 0x0000, 0x4959, 0x0000, 0x0000, 0x0000,
+ 0x5567, 0x0000, 0x3428, 0x3677, 0x5566, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3432, 0x0000, 0x3f32, 0x556b, 0x3b21,
+ 0x0000, 0x3249, 0x556a, 0x0000, 0x5568, 0x556c, 0x5569, 0x472b,
+ 0x5c4d, 0x3f33, 0x0000, 0x556d, 0x0000, 0x0000, 0x4e40, 0x0000,
+ 0x556e, 0x0000, 0x0000, 0x5570, 0x0000, 0x437e, 0x556f, 0x0000,
+ 0x4023, 0x0000, 0x3b7b, 0x0000, 0x0000, 0x0000, 0x4250, 0x3c77,
+};
+
+static unsigned short const unicode_to_jisx0208_5c[] = {
+ /* 0x5c00 - 0x5cff */
+ 0x0000, 0x4975, 0x406c, 0x0000, 0x3c4d, 0x5571, 0x3e2d, 0x5572,
+ 0x5573, 0x3053, 0x423a, 0x3f52, 0x0000, 0x5574, 0x4633, 0x3e2e,
+ 0x0000, 0x3e2f, 0x0000, 0x5575, 0x0000, 0x0000, 0x406d, 0x0000,
+ 0x0000, 0x0000, 0x3e30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5576, 0x0000, 0x5577, 0x0000, 0x4c60, 0x0000, 0x0000, 0x0000,
+ 0x5578, 0x0000, 0x0000, 0x0000, 0x0000, 0x3646, 0x0000, 0x0000,
+ 0x0000, 0x3d22, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5579, 0x557a, 0x3c5c, 0x3f2c, 0x4674, 0x3f54, 0x4878, 0x4722,
+ 0x3649, 0x557b, 0x0000, 0x0000, 0x0000, 0x356f, 0x557c, 0x0000,
+ 0x367e, 0x0000, 0x464f, 0x3230, 0x0000, 0x3b53, 0x557d, 0x5622,
+ 0x5621, 0x367d, 0x0000, 0x557e, 0x0000, 0x4538, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4230, 0x0000,
+ 0x454b, 0x3c48, 0x0000, 0x0000, 0x4158, 0x4d7a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5624, 0x0000, 0x5625, 0x4656,
+ 0x0000, 0x3b33, 0x0000, 0x0000, 0x0000, 0x0000, 0x5627, 0x0000,
+ 0x0000, 0x5628, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5629, 0x0000, 0x0000, 0x0000,
+ 0x3474, 0x562a, 0x0000, 0x0000, 0x562b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x322c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x413b, 0x3464, 0x0000, 0x562d, 0x4c28, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4252, 0x0000, 0x3359, 0x0000, 0x0000, 0x562f, 0x5631,
+ 0x345f, 0x0000, 0x0000, 0x562e, 0x5630, 0x0000, 0x5633, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5632, 0x0000, 0x5634,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5635, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x463d, 0x362e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3265, 0x5636, 0x563b, 0x0000, 0x0000, 0x5639, 0x0000, 0x4a77,
+ 0x4a76, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4567, 0x0000,
+ 0x0000, 0x0000, 0x5638, 0x3d54, 0x0000, 0x5637, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_5d[] = {
+ /* 0x5d00 - 0x5dff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f72,
+ 0x0000, 0x0000, 0x0000, 0x563c, 0x0000, 0x0000, 0x3a6a, 0x0000,
+ 0x0000, 0x5642, 0x0000, 0x0000, 0x5643, 0x563d, 0x3333, 0x563e,
+ 0x5647, 0x5646, 0x5645, 0x5641, 0x0000, 0x0000, 0x0000, 0x5640,
+ 0x0000, 0x0000, 0x5644, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4a78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x564b, 0x5648, 0x0000, 0x564a, 0x0000,
+ 0x4d72, 0x0000, 0x5649, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x563f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3f73, 0x0000, 0x0000, 0x564c, 0x0000, 0x0000, 0x3a37,
+ 0x0000, 0x0000, 0x0000, 0x564d, 0x0000, 0x0000, 0x564e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5651, 0x0000, 0x5650, 0x0000, 0x0000, 0x564f,
+ 0x0000, 0x0000, 0x0000, 0x4568, 0x563a, 0x0000, 0x0000, 0x0000,
+ 0x5657, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5653, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5654, 0x0000, 0x5655, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5658,
+ 0x0000, 0x0000, 0x4e66, 0x0000, 0x5659, 0x5656, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x565a, 0x0000, 0x0000, 0x3460, 0x565b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x565d, 0x565c, 0x0000, 0x0000, 0x565e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x565f, 0x0000, 0x406e, 0x3d23, 0x0000,
+ 0x0000, 0x3d64, 0x0000, 0x4163, 0x0000, 0x3929, 0x3a38, 0x392a,
+ 0x3570, 0x0000, 0x0000, 0x5660, 0x0000, 0x0000, 0x3a39, 0x0000,
+ 0x0000, 0x384a, 0x5661, 0x4c26, 0x4743, 0x5662, 0x0000, 0x392b,
+ 0x0000, 0x0000, 0x0000, 0x342c, 0x0000, 0x4327, 0x3652, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_5e[] = {
+ /* 0x5e00 - 0x5eff */
+ 0x0000, 0x0000, 0x3b54, 0x495b, 0x0000, 0x0000, 0x4841, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5663, 0x3475, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5666, 0x0000, 0x0000, 0x0000, 0x0000, 0x4421, 0x0000,
+ 0x0000, 0x5665, 0x5664, 0x5667, 0x0000, 0x446b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f63, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3b55, 0x0000, 0x404a, 0x0000, 0x4253,
+ 0x3522, 0x0000, 0x0000, 0x4422, 0x0000, 0x0000, 0x5668, 0x5669,
+ 0x3e6f, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b39, 0x0000, 0x0000,
+ 0x566c, 0x0000, 0x0000, 0x566b, 0x566a, 0x497d, 0x0000, 0x5673,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4b5a, 0x0000, 0x566d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x566f, 0x4b6b, 0x0000, 0x566e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5670,
+ 0x0000, 0x4828, 0x5671, 0x4a3e, 0x5672, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3433, 0x4a3f, 0x472f, 0x5674, 0x5675, 0x0000,
+ 0x392c, 0x3434, 0x5676, 0x3838, 0x4d44, 0x4d29, 0x3476, 0x5678,
+ 0x0000, 0x4423, 0x0000, 0x392d, 0x3e31, 0x0000, 0x0000, 0x485f,
+ 0x0000, 0x0000, 0x3e32, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d78,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x446c, 0x4a79, 0x4539,
+ 0x0000, 0x0000, 0x392e, 0x0000, 0x495c, 0x0000, 0x0000, 0x0000,
+ 0x5679, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4559, 0x3a42,
+ 0x0000, 0x0000, 0x0000, 0x384b, 0x0000, 0x446d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3043, 0x3d6e, 0x392f,
+ 0x4d47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x567a, 0x567b, 0x4751, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x567c, 0x4e77, 0x4f2d, 0x0000, 0x0000, 0x0000, 0x0000, 0x567e,
+ 0x567d, 0x0000, 0x0000, 0x3347, 0x0000, 0x0000, 0x5721, 0x0000,
+ 0x0000, 0x0000, 0x5724, 0x5725, 0x0000, 0x5723, 0x0000, 0x4940,
+ 0x3e33, 0x5727, 0x5726, 0x5722, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5728, 0x5729, 0x0000, 0x0000, 0x572a, 0x0000, 0x0000, 0x0000,
+ 0x572d, 0x572b, 0x0000, 0x572c, 0x572e, 0x0000, 0x3164, 0x446e,
+ 0x572f, 0x0000, 0x377a, 0x3276, 0x4736, 0x0000, 0x5730, 0x467b,
+};
+
+static unsigned short const unicode_to_jisx0208_5f[] = {
+ /* 0x5f00 - 0x5fff */
+ 0x0000, 0x4a5b, 0x0000, 0x5731, 0x4f2e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5732, 0x4a40, 0x5735, 0x5021, 0x5031, 0x0000, 0x3c30,
+ 0x4675, 0x5736, 0x0000, 0x355d, 0x4424, 0x307a, 0x5737, 0x4a26,
+ 0x3930, 0x0000, 0x0000, 0x4350, 0x0000, 0x0000, 0x0000, 0x446f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c6f, 0x3839, 0x384c,
+ 0x0000, 0x5738, 0x0000, 0x0000, 0x0000, 0x5739, 0x0000, 0x573f,
+ 0x0000, 0x3c65, 0x0000, 0x0000, 0x0000, 0x4425, 0x0000, 0x362f,
+ 0x573a, 0x0000, 0x0000, 0x0000, 0x492b, 0x0000, 0x4346, 0x0000,
+ 0x0000, 0x573b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x573c, 0x0000, 0x3630, 0x0000, 0x573d, 0x0000, 0x573e, 0x0000,
+ 0x0000, 0x5740, 0x0000, 0x4576, 0x0000, 0x0000, 0x5741, 0x5742,
+ 0x0000, 0x5743, 0x0000, 0x0000, 0x5734, 0x5733, 0x0000, 0x0000,
+ 0x0000, 0x5744, 0x3741, 0x0000, 0x0000, 0x0000, 0x4927, 0x0000,
+ 0x0000, 0x3a4c, 0x4937, 0x4426, 0x494b, 0x5745, 0x0000, 0x0000,
+ 0x3e34, 0x3146, 0x0000, 0x5746, 0x0000, 0x0000, 0x0000, 0x5747,
+ 0x0000, 0x4c72, 0x0000, 0x0000, 0x4860, 0x0000, 0x0000, 0x574a,
+ 0x317d, 0x402c, 0x5749, 0x5748, 0x3742, 0x4254, 0x0000, 0x574e,
+ 0x574c, 0x0000, 0x574b, 0x4e27, 0x3865, 0x0000, 0x0000, 0x0000,
+ 0x3d79, 0x574d, 0x454c, 0x3d3e, 0x0000, 0x0000, 0x0000, 0x4640,
+ 0x5751, 0x5750, 0x0000, 0x0000, 0x0000, 0x0000, 0x574f, 0x0000,
+ 0x5752, 0x3866, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5753, 0x497c, 0x3d5b, 0x0000, 0x0000, 0x5754, 0x4879, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4641, 0x4427, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4530, 0x0000, 0x0000, 0x5755, 0x352b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3f34, 0x0000, 0x492c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3477, 0x4726, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5756, 0x3b56,
+ 0x4b3a, 0x4b3b, 0x0000, 0x0000, 0x317e, 0x575b, 0x0000, 0x0000,
+ 0x4369, 0x0000, 0x0000, 0x0000, 0x5758, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3277, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x582d, 0x575a, 0x0000, 0x0000, 0x0000, 0x4730, 0x0000, 0x0000,
+ 0x5759, 0x0000, 0x0000, 0x5757, 0x0000, 0x397a, 0x0000, 0x575d,
+};
+
+static unsigned short const unicode_to_jisx0208_60[] = {
+ /* 0x6000 - 0x60ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5763, 0x5769,
+ 0x5761, 0x0000, 0x455c, 0x0000, 0x0000, 0x5766, 0x495d, 0x0000,
+ 0x0000, 0x5760, 0x0000, 0x5765, 0x4e67, 0x3b57, 0x0000, 0x0000,
+ 0x4255, 0x575e, 0x0000, 0x0000, 0x0000, 0x355e, 0x5768, 0x402d,
+ 0x3165, 0x5762, 0x3278, 0x5767, 0x0000, 0x0000, 0x0000, 0x3631,
+ 0x0000, 0x5764, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x576a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x576c, 0x5776, 0x5774, 0x0000, 0x0000, 0x5771, 0x0000,
+ 0x0000, 0x0000, 0x5770, 0x4e78, 0x0000, 0x5772, 0x0000, 0x0000,
+ 0x3632, 0x0000, 0x3931, 0x0000, 0x0000, 0x3d7a, 0x0000, 0x0000,
+ 0x0000, 0x5779, 0x576b, 0x0000, 0x0000, 0x0000, 0x0000, 0x576f,
+ 0x575f, 0x0000, 0x327a, 0x5773, 0x5775, 0x4351, 0x0000, 0x0000,
+ 0x3a28, 0x3238, 0x576d, 0x5778, 0x5777, 0x3633, 0x0000, 0x4229,
+ 0x3366, 0x0000, 0x0000, 0x0000, 0x0000, 0x3743, 0x0000, 0x576e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x577a, 0x0000, 0x577d, 0x5821, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3c3d, 0x0000, 0x5827, 0x4470, 0x577b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5825, 0x0000, 0x3279, 0x0000, 0x5823, 0x5824,
+ 0x0000, 0x0000, 0x577e, 0x5822, 0x0000, 0x0000, 0x0000, 0x3867,
+ 0x4d2a, 0x0000, 0x0000, 0x3435, 0x0000, 0x0000, 0x3159, 0x5826,
+ 0x0000, 0x473a, 0x302d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4861, 0x575c, 0x582c, 0x5830, 0x4c65, 0x0000,
+ 0x5829, 0x0000, 0x0000, 0x0000, 0x4569, 0x582e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e70, 0x582f, 0x4657,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4f47, 0x0000, 0x582b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5831, 0x0000, 0x397b, 0x0000, 0x404b, 0x0000, 0x0000, 0x3054,
+ 0x582a, 0x5828, 0x0000, 0x415a, 0x0000, 0x0000, 0x0000, 0x577c,
+ 0x3b34, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4246, 0x583d, 0x0000, 0x415b, 0x5838, 0x0000, 0x5835, 0x5836,
+ 0x0000, 0x3c66, 0x5839, 0x583c, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_61[] = {
+ /* 0x6100 - 0x61ff */
+ 0x5837, 0x3d25, 0x0000, 0x583a, 0x0000, 0x0000, 0x5834, 0x0000,
+ 0x4c7c, 0x4c7b, 0x0000, 0x0000, 0x0000, 0x583e, 0x583f, 0x3055,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5833, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3672, 0x3026, 0x0000, 0x0000, 0x0000, 0x3436,
+ 0x0000, 0x583b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5843,
+ 0x5842, 0x0000, 0x0000, 0x0000, 0x5847, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5848, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5846, 0x5849, 0x5841, 0x5845,
+ 0x0000, 0x0000, 0x584a, 0x0000, 0x584b, 0x0000, 0x0000, 0x5840,
+ 0x3b7c, 0x0000, 0x5844, 0x4256, 0x3932, 0x5832, 0x3f35, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5858, 0x0000, 0x4a69, 0x0000, 0x0000,
+ 0x584e, 0x584f, 0x5850, 0x0000, 0x0000, 0x5857, 0x0000, 0x5856,
+ 0x0000, 0x0000, 0x4b7d, 0x3437, 0x0000, 0x5854, 0x0000, 0x3745,
+ 0x3334, 0x0000, 0x0000, 0x5851, 0x0000, 0x0000, 0x4e38, 0x5853,
+ 0x3056, 0x5855, 0x0000, 0x584c, 0x5852, 0x5859, 0x3744, 0x584d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d5d, 0x0000,
+ 0x0000, 0x0000, 0x4d2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x585c,
+ 0x0000, 0x0000, 0x5860, 0x0000, 0x0000, 0x0000, 0x417e, 0x0000,
+ 0x4e79, 0x5861, 0x0000, 0x0000, 0x585e, 0x0000, 0x585b, 0x0000,
+ 0x0000, 0x585a, 0x585f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4a30, 0x0000, 0x0000, 0x4634,
+ 0x0000, 0x3746, 0x0000, 0x5862, 0x585d, 0x0000, 0x5863, 0x0000,
+ 0x0000, 0x0000, 0x377b, 0x0000, 0x0000, 0x0000, 0x3231, 0x0000,
+ 0x0000, 0x0000, 0x586b, 0x0000, 0x0000, 0x0000, 0x3438, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5869, 0x0000, 0x0000, 0x586a, 0x3a29,
+ 0x5868, 0x5866, 0x5865, 0x586c, 0x5864, 0x586e, 0x0000, 0x0000,
+ 0x327b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5870, 0x0000, 0x0000, 0x586f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4428, 0x0000, 0x5873, 0x0000, 0x5871, 0x5867,
+ 0x377c, 0x0000, 0x5872, 0x0000, 0x5876, 0x5875, 0x5877, 0x5874,
+};
+
+static unsigned short const unicode_to_jisx0208_62[] = {
+ /* 0x6200 - 0x62ff */
+ 0x5878, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5879, 0x587a, 0x4a6a, 0x0000, 0x587c, 0x587b, 0x3d3f, 0x0000,
+ 0x402e, 0x3266, 0x327c, 0x0000, 0x587d, 0x0000, 0x303f, 0x0000,
+ 0x0000, 0x0000, 0x404c, 0x587e, 0x0000, 0x6c43, 0x5921, 0x3761,
+ 0x0000, 0x5922, 0x0000, 0x0000, 0x0000, 0x0000, 0x406f, 0x0000,
+ 0x0000, 0x0000, 0x5923, 0x0000, 0x0000, 0x0000, 0x5924, 0x353a,
+ 0x5925, 0x0000, 0x5926, 0x5927, 0x4257, 0x0000, 0x0000, 0x0000,
+ 0x384d, 0x0000, 0x0000, 0x4c61, 0x0000, 0x0000, 0x0000, 0x4b3c,
+ 0x3d6a, 0x5928, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4070,
+ 0x6e3d, 0x4862, 0x0000, 0x3c6a, 0x0000, 0x3a4d, 0x5929, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4247, 0x0000, 0x4a27, 0x0000, 0x0000,
+ 0x4271, 0x0000, 0x0000, 0x592c, 0x0000, 0x0000, 0x592a, 0x0000,
+ 0x592d, 0x0000, 0x0000, 0x592b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x592e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a31, 0x0000,
+ 0x0000, 0x3037, 0x0000, 0x0000, 0x0000, 0x0000, 0x495e, 0x0000,
+ 0x0000, 0x4863, 0x0000, 0x0000, 0x592f, 0x0000, 0x5932, 0x3e35,
+ 0x353b, 0x0000, 0x5930, 0x5937, 0x3e36, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5931, 0x4744, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4d5e, 0x5933, 0x5934, 0x5938, 0x456a, 0x5935, 0x3933,
+ 0x405e, 0x0000, 0x0000, 0x5946, 0x4834, 0x0000, 0x4272, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4864, 0x5a2d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4a7a, 0x0000, 0x0000, 0x0000, 0x4471, 0x0000, 0x0000,
+ 0x0000, 0x4b75, 0x0000, 0x593b, 0x3221, 0x436a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5944, 0x0000, 0x0000, 0x4334, 0x593e, 0x5945,
+ 0x5940, 0x5947, 0x5943, 0x0000, 0x5942, 0x476f, 0x0000, 0x593c,
+ 0x327d, 0x593a, 0x3571, 0x4273, 0x5936, 0x0000, 0x0000, 0x5939,
+ 0x3934, 0x405b, 0x0000, 0x3e37, 0x5941, 0x4752, 0x0000, 0x0000,
+ 0x3572, 0x3348, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3367, 0x3f21, 0x5949, 0x594e,
+ 0x0000, 0x594a, 0x0000, 0x377d, 0x0000, 0x594f, 0x3b22, 0x3969,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d26, 0x593d,
+};
+
+static unsigned short const unicode_to_jisx0208_63[] = {
+ /* 0x6300 - 0x63ff */
+ 0x0000, 0x3b7d, 0x594c, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b58,
+ 0x594d, 0x3044, 0x0000, 0x0000, 0x5948, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4429, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3573, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3634,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x594b,
+ 0x3027, 0x0000, 0x0000, 0x3a43, 0x0000, 0x0000, 0x0000, 0x3f36,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4472, 0x0000, 0x0000, 0x4854, 0x5951, 0x415e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x422a, 0x0000, 0x0000, 0x3b2b, 0x5952, 0x0000, 0x5954,
+ 0x5950, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a61, 0x0000, 0x443d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x415c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a7b,
+ 0x3c4e, 0x5960, 0x0000, 0x595f, 0x0000, 0x0000, 0x3f78, 0x0000,
+ 0x0000, 0x0000, 0x377e, 0x0000, 0x0000, 0x0000, 0x5959, 0x3e39,
+ 0x0000, 0x0000, 0x4668, 0x4731, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5957, 0x0000, 0x0000, 0x415d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3c78, 0x595c, 0x0000, 0x0000, 0x3e38, 0x0000, 0x5956, 0x595b,
+ 0x0000, 0x0000, 0x4753, 0x0000, 0x0000, 0x0000, 0x5955, 0x0000,
+ 0x3721, 0x0000, 0x0000, 0x335d, 0x0000, 0x0000, 0x0000, 0x595d,
+ 0x4e2b, 0x3a4e, 0x4335, 0x595a, 0x0000, 0x405c, 0x0000, 0x3935,
+ 0x3f64, 0x3166, 0x413c, 0x5958, 0x3545, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3747, 0x0000, 0x444f, 0x595e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x415f, 0x0000, 0x0000, 0x5961, 0x0000,
+ 0x5963, 0x0000, 0x0000, 0x4237, 0x5969, 0x0000, 0x5964, 0x0000,
+ 0x0000, 0x5966, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4941,
+ 0x4473, 0x0000, 0x5967, 0x0000, 0x0000, 0x0000, 0x4d2c, 0x0000,
+ 0x0000, 0x0000, 0x4d48, 0x3439, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x302e, 0x0000, 0x5965, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5962, 0x0000, 0x0000, 0x0000, 0x0000, 0x3478, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3167, 0x0000, 0x5968, 0x0000,
+ 0x0000, 0x0000, 0x4d49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_64[] = {
+ /* 0x6400 - 0x64ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x596c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x423b, 0x0000, 0x5973,
+ 0x0000, 0x0000, 0x0000, 0x596d, 0x0000, 0x0000, 0x596a, 0x5971,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5953, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x596e, 0x0000,
+ 0x5972, 0x0000, 0x0000, 0x0000, 0x4842, 0x456b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x596b, 0x0000, 0x596f, 0x0000,
+ 0x0000, 0x0000, 0x3748, 0x0000, 0x0000, 0x0000, 0x3a71, 0x0000,
+ 0x0000, 0x0000, 0x405d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5977, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4526, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5974,
+ 0x0000, 0x4b60, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5975,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5976, 0x0000,
+ 0x4c4e, 0x0000, 0x4022, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3762, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x597d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3b35, 0x597a, 0x0000, 0x5979, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4732, 0x0000, 0x0000, 0x0000, 0x4635, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4531, 0x597b, 0x0000, 0x0000,
+ 0x0000, 0x597c, 0x0000, 0x496f, 0x0000, 0x4745, 0x3b23, 0x0000,
+ 0x4071, 0x0000, 0x4b50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3349, 0x0000, 0x5a25, 0x597e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4d4a, 0x5a27, 0x0000, 0x0000, 0x5a23, 0x0000, 0x5a24,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4160, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5a22, 0x0000, 0x593f, 0x0000, 0x0000, 0x0000,
+ 0x5a26, 0x0000, 0x5a21, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5a2b, 0x5a2c, 0x4527, 0x5a2e, 0x0000, 0x0000, 0x3b24, 0x5a29,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x353c, 0x0000, 0x0000, 0x5a2f,
+ 0x0000, 0x5a28, 0x5a33, 0x0000, 0x5a32, 0x0000, 0x5a31, 0x0000,
+ 0x0000, 0x0000, 0x5a34, 0x0000, 0x0000, 0x5a36, 0x3e71, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_65[] = {
+ /* 0x6500 - 0x65ff */
+ 0x5a35, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a39, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5a37, 0x0000, 0x0000, 0x0000, 0x5a38, 0x5970, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5a3b, 0x5a3a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5978, 0x5a3c, 0x5a30, 0x0000, 0x0000, 0x3b59,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5a3d, 0x5a3e, 0x5a40, 0x5a3f,
+ 0x5a41, 0x327e, 0x0000, 0x3936, 0x0000, 0x0000, 0x4a7c, 0x402f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x384e, 0x0000, 0x0000,
+ 0x5a43, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a46, 0x0000, 0x4952,
+ 0x0000, 0x355f, 0x0000, 0x0000, 0x0000, 0x5a45, 0x5a44, 0x4754,
+ 0x5a47, 0x3635, 0x0000, 0x0000, 0x0000, 0x5a49, 0x5a48, 0x0000,
+ 0x0000, 0x0000, 0x343a, 0x3b36, 0x0000, 0x0000, 0x4658, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3749, 0x0000, 0x0000, 0x0000,
+ 0x3f74, 0x0000, 0x5a4a, 0x0000, 0x4030, 0x4528, 0x0000, 0x495f,
+ 0x5a4b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5a4c, 0x5a4d, 0x0000, 0x0000, 0x0000, 0x4a38,
+ 0x555d, 0x4046, 0x0000, 0x0000, 0x494c, 0x0000, 0x3a58, 0x0000,
+ 0x4865, 0x4843, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x454d,
+ 0x0000, 0x4e41, 0x0000, 0x5a4f, 0x3c50, 0x0000, 0x0000, 0x5a50,
+ 0x0000, 0x3036, 0x0000, 0x0000, 0x3654, 0x404d, 0x0000, 0x4960,
+ 0x0000, 0x0000, 0x0000, 0x5a51, 0x3b42, 0x4347, 0x0000, 0x3b5b,
+ 0x3f37, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a52,
+ 0x0000, 0x4a7d, 0x0000, 0x0000, 0x3177, 0x3b5c, 0x0000, 0x0000,
+ 0x0000, 0x5a55, 0x0000, 0x5a53, 0x5a56, 0x4e39, 0x5a54, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x407b, 0x5a57, 0x0000, 0x0000, 0x4232,
+ 0x0000, 0x0000, 0x5a58, 0x0000, 0x0000, 0x0000, 0x0000, 0x347a,
+ 0x0000, 0x5a5a, 0x0000, 0x5a59, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5a5b, 0x5a5c, 0x347b, 0x0000, 0x0000, 0x467c, 0x4336, 0x356c,
+ 0x3b5d, 0x4161, 0x0000, 0x0000, 0x3d5c, 0x3030, 0x0000, 0x0000,
+ 0x0000, 0x5a5d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3222, 0x5a61, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_66[] = {
+ /* 0x6600 - 0x66ff */
+ 0x0000, 0x0000, 0x3937, 0x5a60, 0x0000, 0x0000, 0x3a2b, 0x3e3a,
+ 0x0000, 0x0000, 0x5a5f, 0x0000, 0x3e3b, 0x0000, 0x4c40, 0x3a2a,
+ 0x0000, 0x0000, 0x0000, 0x3057, 0x404e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5a66, 0x0000, 0x0000, 0x4031,
+ 0x3147, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d55, 0x0000, 0x4b66,
+ 0x3a72, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e3c, 0x0000, 0x4027,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5a65, 0x5a63, 0x5a64, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x436b, 0x0000, 0x0000, 0x5b26,
+ 0x0000, 0x5a6a, 0x3b7e, 0x3938, 0x5a68, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5a69, 0x0000, 0x3f38, 0x0000, 0x0000, 0x0000, 0x5a67,
+ 0x0000, 0x0000, 0x3b2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a6c, 0x5a6b, 0x5a70,
+ 0x0000, 0x0000, 0x5a71, 0x0000, 0x5a6d, 0x0000, 0x3322, 0x5a6e,
+ 0x5a6f, 0x4855, 0x0000, 0x0000, 0x0000, 0x0000, 0x4961, 0x374a,
+ 0x5a72, 0x0000, 0x0000, 0x0000, 0x4032, 0x0000, 0x3e3d, 0x0000,
+ 0x0000, 0x0000, 0x4352, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3647, 0x0000, 0x5a73, 0x5a77, 0x0000, 0x0000, 0x324b,
+ 0x5a74, 0x5a76, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a75, 0x0000,
+ 0x0000, 0x3d6b, 0x0000, 0x0000, 0x0000, 0x0000, 0x4348, 0x3045,
+ 0x5a78, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a79, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x442a, 0x0000, 0x0000, 0x0000, 0x4e71, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3b43, 0x0000, 0x0000, 0x4a6b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4b3d, 0x0000, 0x0000, 0x0000,
+ 0x5b22, 0x5a7b, 0x0000, 0x0000, 0x5a7e, 0x0000, 0x5a7d, 0x0000,
+ 0x0000, 0x5a7a, 0x0000, 0x0000, 0x5b21, 0x0000, 0x0000, 0x465e,
+ 0x0000, 0x5a7c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b23, 0x0000,
+ 0x0000, 0x3d6c, 0x5b24, 0x0000, 0x4d4b, 0x4778, 0x0000, 0x0000,
+ 0x5b25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b27, 0x0000,
+ 0x0000, 0x5b28, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5b29, 0x0000, 0x364a, 0x3148, 0x3939, 0x5b2a, 0x0000, 0x5b2b,
+ 0x3d71, 0x4162, 0x0000, 0x0000, 0x5258, 0x413e, 0x413d, 0x4258,
+};
+
+static unsigned short const unicode_to_jisx0208_67[] = {
+ /* 0x6700 - 0x67ff */
+ 0x3a47, 0x0000, 0x0000, 0x5072, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x376e, 0x4d2d, 0x0000, 0x4a7e, 0x0000, 0x497e, 0x0000, 0x5b2c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3a73, 0x443f, 0x5b2d, 0x4f2f,
+ 0x0000, 0x0000, 0x0000, 0x4b3e, 0x0000, 0x442b, 0x5b2e, 0x347c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b2f, 0x5b30,
+ 0x4c5a, 0x0000, 0x4c24, 0x4b76, 0x4b5c, 0x3b25, 0x5b32, 0x0000,
+ 0x0000, 0x3c6b, 0x0000, 0x0000, 0x4b51, 0x0000, 0x5b34, 0x5b37,
+ 0x5b36, 0x0000, 0x3479, 0x0000, 0x0000, 0x3560, 0x0000, 0x5b33,
+ 0x0000, 0x5b35, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b38, 0x0000,
+ 0x0000, 0x3f79, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d7b, 0x3049,
+ 0x3a60, 0x423c, 0x0000, 0x3c5d, 0x0000, 0x0000, 0x3e73, 0x0000,
+ 0x0000, 0x5b3b, 0x0000, 0x0000, 0x454e, 0x0000, 0x5b39, 0x422b,
+ 0x5b3a, 0x3e72, 0x4c5d, 0x5b3c, 0x5b3d, 0x4d68, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5b42, 0x0000, 0x0000, 0x393a, 0x0000, 0x4755,
+ 0x5b3f, 0x456c, 0x5a5e, 0x5a62, 0x0000, 0x354f, 0x0000, 0x4747,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5b41, 0x0000, 0x3e3e, 0x4844,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b47, 0x0000, 0x487a,
+ 0x0000, 0x5b3e, 0x0000, 0x5b44, 0x5b43, 0x0000, 0x0000, 0x0000,
+ 0x404f, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b6d, 0x0000, 0x4e53,
+ 0x0000, 0x0000, 0x4b67, 0x0000, 0x324c, 0x3b5e, 0x0000, 0x0000,
+ 0x4f48, 0x5b46, 0x3f75, 0x0000, 0x0000, 0x0000, 0x5b45, 0x0000,
+ 0x0000, 0x5b40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x384f,
+ 0x0000, 0x0000, 0x0000, 0x5b4c, 0x5b4a, 0x0000, 0x324d, 0x5b48,
+ 0x5b4e, 0x5b54, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4248, 0x0000, 0x0000, 0x4a41, 0x0000, 0x5b56, 0x0000,
+ 0x0000, 0x0000, 0x4922, 0x0000, 0x0000, 0x0000, 0x5b55, 0x4770,
+ 0x4b3f, 0x343b, 0x0000, 0x4077, 0x3d40, 0x0000, 0x0000, 0x0000,
+ 0x4453, 0x0000, 0x4d2e, 0x0000, 0x0000, 0x5b51, 0x5b50, 0x0000,
+ 0x0000, 0x0000, 0x5b52, 0x0000, 0x5b4f, 0x0000, 0x0000, 0x5b57,
+ 0x0000, 0x5b4d, 0x0000, 0x0000, 0x5b4b, 0x0000, 0x5b53, 0x5b49,
+ 0x0000, 0x436c, 0x0000, 0x4c78, 0x3c46, 0x3a74, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3a3a, 0x0000, 0x0000, 0x4b6f, 0x3341,
+};
+
+static unsigned short const unicode_to_jisx0208_68[] = {
+ /* 0x6800 - 0x68ff */
+ 0x0000, 0x0000, 0x444e, 0x464a, 0x3149, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4072, 0x0000, 0x0000, 0x4034, 0x372a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b59, 0x0000,
+ 0x0000, 0x393b, 0x337c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5b5b, 0x3374, 0x5b61, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5b5e, 0x0000, 0x4073, 0x0000, 0x0000, 0x0000,
+ 0x334b, 0x3a2c, 0x0000, 0x0000, 0x334a, 0x3a4f, 0x0000, 0x0000,
+ 0x5b5c, 0x3765, 0x374b, 0x456d, 0x0000, 0x0000, 0x5b5a, 0x0000,
+ 0x3046, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b5d, 0x5b5f, 0x0000,
+ 0x364d, 0x372c, 0x0000, 0x343c, 0x354b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5b62, 0x0000, 0x0000, 0x3a79, 0x4b71, 0x0000, 0x3b37,
+ 0x0000, 0x0000, 0x0000, 0x5b63, 0x0000, 0x0000, 0x0000, 0x4930,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5b6f, 0x0000, 0x3233, 0x5b64,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b75, 0x5b65,
+ 0x0000, 0x4e42, 0x0000, 0x5b6c, 0x0000, 0x475f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b74, 0x0000, 0x5b67,
+ 0x0000, 0x0000, 0x0000, 0x3034, 0x5b69, 0x0000, 0x0000, 0x393c,
+ 0x0000, 0x0000, 0x0000, 0x5b6b, 0x0000, 0x5b6a, 0x0000, 0x5b66,
+ 0x5b71, 0x0000, 0x3e3f, 0x0000, 0x0000, 0x0000, 0x546d, 0x3868,
+ 0x4d7c, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b68, 0x0000, 0x4474,
+ 0x3323, 0x3a2d, 0x0000, 0x5b60, 0x0000, 0x5b70, 0x3361, 0x0000,
+ 0x0000, 0x5b6e, 0x5b72, 0x0000, 0x456e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x347e, 0x0000, 0x5c32, 0x0000,
+ 0x0000, 0x4c49, 0x5b77, 0x347d, 0x0000, 0x5b7e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4b40, 0x0000, 0x5c21, 0x5c23, 0x0000, 0x5c27,
+ 0x5b79, 0x0000, 0x432a, 0x0000, 0x0000, 0x0000, 0x0000, 0x456f,
+ 0x5c2b, 0x5b7c, 0x0000, 0x5c28, 0x0000, 0x0000, 0x0000, 0x5c22,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f39, 0x5c2c,
+ 0x0000, 0x0000, 0x4033, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5c2a, 0x343d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_69[] = {
+ /* 0x6900 - 0x69ff */
+ 0x4f50, 0x5b76, 0x0000, 0x0000, 0x5c26, 0x3058, 0x0000, 0x0000,
+ 0x5b78, 0x0000, 0x0000, 0x4c3a, 0x5b7d, 0x3f22, 0x4447, 0x5b73,
+ 0x0000, 0x0000, 0x5c25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3f7a, 0x5c2f, 0x3371, 0x3821, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5c31, 0x5b7a, 0x5c30, 0x0000, 0x5c29, 0x5b7b, 0x0000,
+ 0x5c2d, 0x0000, 0x5c2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5c3f, 0x0000, 0x0000, 0x0000, 0x464e, 0x0000, 0x5c24, 0x0000,
+ 0x0000, 0x5c3b, 0x0000, 0x0000, 0x0000, 0x5c3d, 0x0000, 0x4458,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4d4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4976, 0x5c38, 0x424a, 0x0000, 0x0000,
+ 0x0000, 0x5c3e, 0x413f, 0x0000, 0x5c35, 0x5c42, 0x5c41, 0x0000,
+ 0x466f, 0x5c40, 0x466a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5c44, 0x5c37, 0x0000, 0x3648, 0x5c3a, 0x3d5d,
+ 0x0000, 0x0000, 0x0000, 0x4760, 0x5c3c, 0x364b, 0x0000, 0x5c34,
+ 0x5c36, 0x5c33, 0x0000, 0x0000, 0x4f30, 0x335a, 0x5c39, 0x0000,
+ 0x0000, 0x5c43, 0x3335, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3a67, 0x0000, 0x0000, 0x0000, 0x315d, 0x0000,
+ 0x0000, 0x5c54, 0x0000, 0x0000, 0x4f31, 0x5c57, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3f3a, 0x5c56, 0x0000, 0x0000, 0x0000,
+ 0x5c55, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c52,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c46, 0x0000,
+ 0x0000, 0x5c63, 0x5c45, 0x0000, 0x5c58, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5c50, 0x0000, 0x0000, 0x5c4b, 0x5c48,
+ 0x0000, 0x5c49, 0x0000, 0x5c51, 0x0000, 0x0000, 0x0000, 0x7422,
+ 0x0000, 0x0000, 0x5c4e, 0x393d, 0x4448, 0x4164, 0x5c4c, 0x0000,
+ 0x5c47, 0x0000, 0x0000, 0x5c4a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4d4d, 0x4b6a, 0x0000, 0x0000, 0x0000, 0x5c4f, 0x5c59, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c61,
+ 0x5c5a, 0x0000, 0x0000, 0x5c67, 0x0000, 0x5c65, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5c60, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5c5f, 0x0000, 0x4450, 0x0000, 0x4165, 0x0000, 0x5c5d,
+};
+
+static unsigned short const unicode_to_jisx0208_6a[] = {
+ /* 0x6a00 - 0x6aff */
+ 0x0000, 0x0000, 0x5c5b, 0x0000, 0x0000, 0x5c62, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5c68, 0x4875, 0x5c6e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5c69, 0x5c6c, 0x5c66, 0x0000, 0x0000, 0x4374,
+ 0x0000, 0x4938, 0x0000, 0x5c5c, 0x0000, 0x0000, 0x5c64, 0x3e40,
+ 0x0000, 0x4c4f, 0x5c78, 0x5c6b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3822, 0x3223, 0x335f, 0x0000, 0x0000, 0x5c53, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e41, 0x5c70, 0x0000,
+ 0x5c77, 0x3c79, 0x3372, 0x0000, 0x0000, 0x432e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5c6d, 0x0000, 0x0000, 0x5c72,
+ 0x5c76, 0x0000, 0x0000, 0x3636, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x354c, 0x5c74, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3521,
+ 0x0000, 0x464b, 0x5c73, 0x0000, 0x0000, 0x0000, 0x5c75, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5c6f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5c71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3360,
+ 0x4349, 0x0000, 0x0000, 0x0000, 0x5c7c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c7a, 0x3869, 0x0000,
+ 0x5c79, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d21,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5b58, 0x0000, 0x0000, 0x0000,
+ 0x5c7b, 0x0000, 0x5c7d, 0x5c7e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5d2c, 0x0000, 0x5d28, 0x0000, 0x5b6d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5d27, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5d26, 0x0000, 0x0000, 0x5d23, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5c6a, 0x5d25, 0x5d24, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5d2a, 0x0000, 0x4f26, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5d2d, 0x367b, 0x0000, 0x0000, 0x5d29, 0x5d2b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4827, 0x0000, 0x5d2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5d32, 0x5d2f, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_6b[] = {
+ /* 0x6b00 - 0x6bff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4d73, 0x5d30, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5c5e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5d33, 0x0000, 0x0000, 0x0000, 0x5d34, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3135, 0x0000, 0x5d36,
+ 0x3767, 0x3c21, 0x0000, 0x3655, 0x0000, 0x0000, 0x0000, 0x3224,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4d5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d38,
+ 0x5d37, 0x5d3a, 0x353d, 0x0000, 0x0000, 0x3656, 0x343e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5d3d, 0x0000, 0x0000, 0x0000, 0x5d3c,
+ 0x0000, 0x5d3e, 0x0000, 0x0000, 0x324e, 0x0000, 0x4337, 0x0000,
+ 0x5d3f, 0x0000, 0x0000, 0x343f, 0x5d41, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5d40, 0x0000, 0x5d42, 0x0000, 0x0000, 0x0000, 0x5d43,
+ 0x0000, 0x5d44, 0x3b5f, 0x4035, 0x3a21, 0x0000, 0x4970, 0x0000,
+ 0x0000, 0x4a62, 0x4f44, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b75,
+ 0x0000, 0x0000, 0x0000, 0x3a50, 0x4e72, 0x0000, 0x0000, 0x0000,
+ 0x5d45, 0x5d46, 0x0000, 0x3b60, 0x0000, 0x0000, 0x0000, 0x5d47,
+ 0x5d48, 0x0000, 0x0000, 0x5d4a, 0x5d49, 0x0000, 0x4b58, 0x0000,
+ 0x0000, 0x3d5e, 0x3c6c, 0x3b44, 0x0000, 0x5d4b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d4d, 0x3f23, 0x0000,
+ 0x5d4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d4e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5d4f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5d50, 0x5d51, 0x0000, 0x0000, 0x0000, 0x5d52,
+ 0x0000, 0x5d54, 0x5d53, 0x5d55, 0x3225, 0x434a, 0x0000, 0x5d56,
+ 0x0000, 0x0000, 0x3b26, 0x334c, 0x5d57, 0x0000, 0x0000, 0x4542,
+ 0x544c, 0x0000, 0x0000, 0x0000, 0x0000, 0x3523, 0x5d58, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5d59, 0x0000, 0x4a6c, 0x4b68, 0x0000,
+ 0x0000, 0x0000, 0x4647, 0x5d5a, 0x4866, 0x0000, 0x0000, 0x0000,
+ 0x487b, 0x0000, 0x0000, 0x4c53, 0x0000, 0x0000, 0x0000, 0x5d5b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5d5d, 0x5d5c, 0x0000, 0x0000, 0x5d5f,
+ 0x0000, 0x0000, 0x0000, 0x5d5e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_6c[] = {
+ /* 0x6c00 - 0x6cff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5d61, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b61,
+ 0x0000, 0x4c31, 0x0000, 0x5d62, 0x5d63, 0x0000, 0x0000, 0x3524,
+ 0x0000, 0x0000, 0x0000, 0x5d64, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5d66, 0x5d65, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3f65, 0x0000, 0x0000, 0x4939,
+ 0x314a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4845, 0x0000,
+ 0x4475, 0x3d41, 0x3561, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4846, 0x0000,
+ 0x3c2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d68, 0x0000, 0x3440,
+ 0x0000, 0x0000, 0x3178, 0x0000, 0x0000, 0x4672, 0x5d67, 0x393e,
+ 0x4353, 0x0000, 0x5d69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5d71, 0x0000, 0x5d6a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4241, 0x0000, 0x3562, 0x5d72, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3768, 0x0000, 0x0000, 0x3525, 0x5d70, 0x0000,
+ 0x0000, 0x5d6e, 0x5d6b, 0x4d60, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4440, 0x0000, 0x0000, 0x0000, 0x4659, 0x5d6c, 0x0000, 0x0000,
+ 0x5d74, 0x0000, 0x5d73, 0x3723, 0x0000, 0x0000, 0x322d, 0x0000,
+ 0x0000, 0x3a3b, 0x5d6d, 0x5d6f, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4b57, 0x4274, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4b77, 0x0000, 0x0000, 0x5d7c, 0x0000,
+ 0x0000, 0x5d7d, 0x0000, 0x324f, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4a28, 0x4c7d, 0x5e21, 0x3c23, 0x3e42, 0x5d78, 0x5d7e, 0x3168,
+ 0x0000, 0x3637, 0x0000, 0x0000, 0x5d75, 0x5d7a, 0x0000, 0x0000,
+ 0x0000, 0x4074, 0x4771, 0x0000, 0x4867, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5d77, 0x0000, 0x4b21, 0x0000, 0x5d79,
+ 0x0000, 0x5e24, 0x0000, 0x5e22, 0x0000, 0x5d7b, 0x0000, 0x0000,
+ 0x0000, 0x4b22, 0x4748, 0x3563, 0x0000, 0x4525, 0x0000, 0x0000,
+ 0x436d, 0x0000, 0x5e25, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e23,
+ 0x4259, 0x5d76, 0x0000, 0x314b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_6d[] = {
+ /* 0x6d00 - 0x6dff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4d4e, 0x5e30, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5e2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x4076,
+ 0x0000, 0x5e2c, 0x0000, 0x4d6c, 0x0000, 0x0000, 0x4636, 0x5e26,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4445, 0x0000, 0x0000,
+ 0x0000, 0x314c, 0x393f, 0x5e29, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3d27, 0x5e2e, 0x0000, 0x5e2d, 0x5e28, 0x0000,
+ 0x5e2b, 0x0000, 0x0000, 0x3368, 0x0000, 0x5e2a, 0x4749, 0x0000,
+ 0x0000, 0x4e2e, 0x0000, 0x0000, 0x3e74, 0x4075, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5e36, 0x5e34, 0x0000, 0x494d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5e31, 0x5e33, 0x0000, 0x313a, 0x0000,
+ 0x0000, 0x3940, 0x4f32, 0x0000, 0x333d, 0x0000, 0x4962, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4d61, 0x0000, 0x0000, 0x3324,
+ 0x3f3b, 0x5e35, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e3a, 0x0000, 0x0000,
+ 0x3e43, 0x0000, 0x0000, 0x0000, 0x4d30, 0x0000, 0x5e37, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5e32, 0x0000, 0x5e38, 0x0000, 0x0000,
+ 0x0000, 0x4e5e, 0x0000, 0x4573, 0x4642, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3336,
+ 0x0000, 0x0000, 0x3155, 0x0000, 0x0000, 0x5e3e, 0x0000, 0x0000,
+ 0x5e41, 0x0000, 0x0000, 0x0000, 0x4e43, 0x0000, 0x0000, 0x0000,
+ 0x4d64, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e48, 0x5e42, 0x5e3f,
+ 0x0000, 0x0000, 0x0000, 0x4e54, 0x5e45, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3d4a, 0x5e47, 0x0000, 0x0000, 0x5e4c, 0x0000, 0x0000,
+ 0x4571, 0x5e4a, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e44, 0x0000,
+ 0x0000, 0x4338, 0x0000, 0x0000, 0x5e4b, 0x0000, 0x5e40, 0x0000,
+ 0x5e46, 0x0000, 0x5e4d, 0x307c, 0x5e43, 0x0000, 0x5e4e, 0x0000,
+ 0x0000, 0x3f3c, 0x0000, 0x3d5f, 0x0000, 0x4a25, 0x0000, 0x3a2e,
+ 0x0000, 0x5e3b, 0x5e49, 0x453a, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_6e[] = {
+ /* 0x6e00 - 0x6eff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4036, 0x0000, 0x3369,
+ 0x3a51, 0x3e44, 0x5e3d, 0x3d42, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x374c, 0x0000, 0x5e3c, 0x0000, 0x0000,
+ 0x0000, 0x5e52, 0x3d6d, 0x383a, 0x0000, 0x5e61, 0x0000, 0x5e5b,
+ 0x3574, 0x454f, 0x0000, 0x5e56, 0x5e5f, 0x302f, 0x3132, 0x0000,
+ 0x0000, 0x3239, 0x0000, 0x5e58, 0x422c, 0x5e4f, 0x5e51, 0x3941,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5e62, 0x0000, 0x5e5d, 0x0000, 0x0000, 0x0000, 0x5e55, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5e5c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4c2b, 0x0000, 0x0000, 0x5e5a, 0x5e5e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3850, 0x0000,
+ 0x3e45, 0x0000, 0x0000, 0x4339, 0x0000, 0x0000, 0x0000, 0x5e54,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d2f,
+ 0x0000, 0x0000, 0x0000, 0x5e57, 0x0000, 0x0000, 0x5e50, 0x4572,
+ 0x0000, 0x0000, 0x5e53, 0x0000, 0x0000, 0x0000, 0x5e59, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f51, 0x3c3e,
+ 0x4b7e, 0x0000, 0x5e63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x482e, 0x0000, 0x0000, 0x5e6f,
+ 0x383b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d60, 0x0000,
+ 0x5e65, 0x0000, 0x0000, 0x0000, 0x4e2f, 0x3942, 0x0000, 0x5e72,
+ 0x0000, 0x0000, 0x306e, 0x0000, 0x0000, 0x5e70, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5e64, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e6a,
+ 0x0000, 0x0000, 0x5e6c, 0x0000, 0x0000, 0x0000, 0x4d4f, 0x5e67,
+ 0x0000, 0x0000, 0x452e, 0x0000, 0x0000, 0x5e69, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5e71, 0x0000, 0x5e6b, 0x4c47, 0x0000, 0x0000,
+ 0x0000, 0x5e66, 0x0000, 0x3c22, 0x5e7e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x336a, 0x0000, 0x5e68, 0x5e6d, 0x5e6e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x426c, 0x425a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5e76, 0x0000, 0x0000, 0x5e7c,
+ 0x0000, 0x0000, 0x5e7a, 0x0000, 0x4529, 0x0000, 0x0000, 0x5f23,
+ 0x5e77, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e78, 0x5e60,
+};
+
+static unsigned short const unicode_to_jisx0208_6f[] = {
+ /* 0x6f00 - 0x6fff */
+ 0x0000, 0x3579, 0x493a, 0x0000, 0x0000, 0x0000, 0x3c3f, 0x0000,
+ 0x0000, 0x3977, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f33,
+ 0x0000, 0x5e74, 0x0000, 0x5f22, 0x3169, 0x4166, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4779, 0x0000, 0x3441, 0x4e7a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4c21, 0x4452, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5e7b, 0x5e7d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4132, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f21, 0x5e79,
+ 0x0000, 0x5e73, 0x0000, 0x0000, 0x0000, 0x3443, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3769, 0x0000, 0x0000, 0x0000,
+ 0x5f2f, 0x0000, 0x0000, 0x5f2a, 0x4078, 0x0000, 0x0000, 0x3363,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3d61, 0x0000, 0x5f33, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f2c, 0x442c, 0x5f29,
+ 0x4459, 0x0000, 0x0000, 0x0000, 0x5f4c, 0x0000, 0x0000, 0x0000,
+ 0x5f26, 0x0000, 0x5f25, 0x0000, 0x5f2e, 0x0000, 0x0000, 0x0000,
+ 0x5f28, 0x5f27, 0x5f2d, 0x0000, 0x4021, 0x0000, 0x5f24, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f30, 0x0000,
+ 0x0000, 0x5f31, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3442,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5f36, 0x0000, 0x5f35, 0x5f37, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5f3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4543, 0x0000, 0x5f34, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5f38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3763, 0x4279, 0x5f32, 0x473b, 0x0000, 0x0000, 0x5f39, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5f3e, 0x5f3c, 0x0000, 0x0000,
+ 0x5f3f, 0x0000, 0x0000, 0x5f42, 0x0000, 0x0000, 0x0000, 0x5f3b,
+ 0x396a, 0x4728, 0x0000, 0x0000, 0x5e39, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4d74, 0x5f3d, 0x0000, 0x5f41, 0x4275,
+ 0x0000, 0x5f40, 0x0000, 0x5f2b, 0x0000, 0x0000, 0x6f69, 0x0000,
+ 0x0000, 0x0000, 0x5f45, 0x0000, 0x0000, 0x0000, 0x5f49, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_70[] = {
+ /* 0x7000 - 0x70ff */
+ 0x0000, 0x5f47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5f43, 0x0000, 0x5f44, 0x0000, 0x0000, 0x0000, 0x5f48,
+ 0x0000, 0x5f46, 0x0000, 0x0000, 0x0000, 0x494e, 0x0000, 0x0000,
+ 0x5f4e, 0x0000, 0x5f4b, 0x5f4a, 0x0000, 0x5f4d, 0x4654, 0x5f4f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4375, 0x426d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4025, 0x0000, 0x0000, 0x0000,
+ 0x5f50, 0x0000, 0x5f52, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f51, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5e75, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5f53, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4667, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5f54, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3250, 0x0000, 0x0000, 0x0000, 0x4574,
+ 0x3325, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3564, 0x0000, 0x0000, 0x0000, 0x3c5e, 0x3a52, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4f27, 0x3f66, 0x0000, 0x0000, 0x0000, 0x316a, 0x0000,
+ 0x0000, 0x0000, 0x5f56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5f55, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5f59, 0x433a, 0x5f5c, 0x5f57,
+ 0x0000, 0x0000, 0x0000, 0x5f5b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5f5a, 0x4540, 0x3059, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4e75, 0x0000, 0x0000, 0x5f5e, 0x0000, 0x0000, 0x0000, 0x3128,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5f60, 0x0000, 0x0000, 0x0000, 0x5f5f, 0x0000, 0x5f5d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5f58, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4b23, 0x0000, 0x0000, 0x0000, 0x5f62, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_71[] = {
+ /* 0x7100 - 0x71ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5f61, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x316b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5f64, 0x4a32, 0x0000, 0x5f63, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4c35, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e47, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4133, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3e46, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4e7b, 0x0000, 0x0000, 0x5f6a, 0x0000, 0x4079, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f66, 0x5f6b, 0x0000,
+ 0x0000, 0x316c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5f69, 0x0000, 0x4761, 0x5f65, 0x5f68, 0x3e48,
+ 0x0000, 0x4851, 0x0000, 0x0000, 0x5f6c, 0x0000, 0x3c51, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x407a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5f6f, 0x0000, 0x0000, 0x0000,
+ 0x5f67, 0x0000, 0x3727, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f6d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4d50, 0x5f70, 0x0000, 0x0000,
+ 0x0000, 0x7426, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d4f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5f71, 0x0000, 0x0000, 0x0000, 0x5f72, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x472e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5f74, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f75, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4733, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4575, 0x5f77, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f79, 0x0000,
+ 0x4e55, 0x0000, 0x5f76, 0x0000, 0x5f78, 0x316d, 0x0000, 0x5f73,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x535b,
+ 0x5f7a, 0x0000, 0x0000, 0x0000, 0x0000, 0x4167, 0x3b38, 0x5f7c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5f7b, 0x3f24, 0x5259, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f7d, 0x0000, 0x0000,
+ 0x0000, 0x6021, 0x0000, 0x5f6e, 0x5f7e, 0x0000, 0x0000, 0x6022,
+};
+
+static unsigned short const unicode_to_jisx0208_72[] = {
+ /* 0x7200 - 0x72ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x477a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6023, 0x0000, 0x0000,
+ 0x6024, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6025, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6026, 0x0000, 0x445e, 0x0000, 0x6028, 0x6027, 0x0000, 0x0000,
+ 0x6029, 0x0000, 0x602a, 0x0000, 0x0000, 0x3c5f, 0x4963, 0x0000,
+ 0x0000, 0x0000, 0x4c6c, 0x602b, 0x602c, 0x4156, 0x3c24, 0x602d,
+ 0x602e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x602f, 0x4a52,
+ 0x4847, 0x0000, 0x0000, 0x6030, 0x4757, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x442d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6031, 0x3267, 0x0000, 0x356d, 0x0000, 0x4c46, 0x0000, 0x4c36,
+ 0x0000, 0x3234, 0x4f34, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b52,
+ 0x0000, 0x4a2a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4037, 0x0000, 0x6032, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4643, 0x0000, 0x0000, 0x0000, 0x3823, 0x6033, 0x0000,
+ 0x3a54, 0x6035, 0x6034, 0x0000, 0x0000, 0x0000, 0x0000, 0x6036,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6037, 0x0000, 0x0000, 0x0000, 0x6038, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x353e, 0x0000, 0x6039, 0x0000, 0x0000, 0x0000, 0x0000, 0x603a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3824, 0x0000, 0x0000, 0x4848,
+ 0x0000, 0x0000, 0x603c, 0x0000, 0x0000, 0x0000, 0x3e75, 0x0000,
+ 0x0000, 0x603b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3638, 0x603d, 0x603f, 0x0000, 0x603e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6040, 0x0000,
+ 0x3851, 0x0000, 0x6041, 0x0000, 0x0000, 0x0000, 0x0000, 0x3669,
+ 0x0000, 0x4140, 0x0000, 0x397d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6043, 0x6044, 0x6042, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3c6d, 0x0000, 0x0000, 0x4648, 0x3639, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6046,
+ 0x432c, 0x6045, 0x0000, 0x0000, 0x4f35, 0x4762, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_73[] = {
+ /* 0x7300 - 0x73ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x604b, 0x6048,
+ 0x0000, 0x0000, 0x0000, 0x4c54, 0x604a, 0x604c, 0x0000, 0x4e44,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6050, 0x0000, 0x0000,
+ 0x0000, 0x604f, 0x4376, 0x472d, 0x0000, 0x0000, 0x3825, 0x604e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x604d, 0x0000, 0x4d31, 0x4d32,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6051, 0x316e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3976, 0x3b62, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6052, 0x6053,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6055,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3d43, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6057, 0x0000, 0x6056, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6058, 0x0000, 0x334d, 0x0000, 0x0000, 0x605a, 0x0000, 0x0000,
+ 0x6059, 0x0000, 0x605c, 0x605b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x383c, 0x0000, 0x0000, 0x4e28,
+ 0x0000, 0x364c, 0x0000, 0x3226, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x366a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3461, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4e68, 0x605e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6061, 0x0000, 0x3251, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x605d, 0x0000, 0x3b39, 0x0000, 0x0000, 0x4441, 0x605f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6064, 0x0000,
+ 0x3c6e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6062, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x373e, 0x0000, 0x0000, 0x4849, 0x6063, 0x0000,
+ 0x0000, 0x607e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6069, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x383d, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_74[] = {
+ /* 0x7400 - 0x74ff */
+ 0x0000, 0x0000, 0x0000, 0x3565, 0x0000, 0x6066, 0x4d7d, 0x0000,
+ 0x0000, 0x4e30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4276, 0x0000, 0x0000, 0x6068, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x606a, 0x4e56, 0x3657, 0x487c, 0x474a, 0x0000,
+ 0x0000, 0x0000, 0x606b, 0x0000, 0x0000, 0x0000, 0x0000, 0x606d,
+ 0x0000, 0x6070, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x606c, 0x0000, 0x0000,
+ 0x0000, 0x606f, 0x386a, 0x314d, 0x6071, 0x0000, 0x3f70, 0x606e,
+ 0x4e5c, 0x0000, 0x0000, 0x6074, 0x7424, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6072, 0x6075, 0x0000, 0x0000, 0x0000, 0x0000, 0x6067,
+ 0x6073, 0x0000, 0x0000, 0x3a3c, 0x0000, 0x0000, 0x6076, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6077, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4d7e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6078, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6079, 0x0000,
+ 0x0000, 0x0000, 0x6065, 0x0000, 0x0000, 0x0000, 0x0000, 0x607a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3444, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c25, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x607b, 0x0000, 0x0000, 0x0000, 0x0000, 0x607c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x607d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x313b, 0x0000, 0x0000, 0x0000,
+ 0x6121, 0x0000, 0x493b, 0x6122, 0x0000, 0x0000, 0x3424, 0x6123,
+ 0x0000, 0x6124, 0x0000, 0x0000, 0x0000, 0x0000, 0x6125, 0x0000,
+ 0x6127, 0x6128, 0x6126, 0x0000, 0x0000, 0x0000, 0x4953, 0x612a,
+ 0x6129, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_75[] = {
+ /* 0x7500 - 0x75ff */
+ 0x0000, 0x0000, 0x0000, 0x612c, 0x612b, 0x612d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x612e, 0x6130, 0x612f, 0x0000,
+ 0x0000, 0x3979, 0x0000, 0x6132, 0x0000, 0x6131, 0x0000, 0x0000,
+ 0x3445, 0x0000, 0x3f53, 0x0000, 0x453c, 0x0000, 0x6133, 0x4038,
+ 0x0000, 0x0000, 0x0000, 0x3b3a, 0x0000, 0x3179, 0x6134, 0x0000,
+ 0x4d51, 0x0000, 0x0000, 0x4a63, 0x6135, 0x0000, 0x0000, 0x0000,
+ 0x4544, 0x4d33, 0x3943, 0x3f3d, 0x0000, 0x0000, 0x0000, 0x434b,
+ 0x5234, 0x0000, 0x442e, 0x3268, 0x6136, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6137, 0x0000, 0x613c, 0x0000,
+ 0x0000, 0x613a, 0x6139, 0x5a42, 0x3326, 0x6138, 0x0000, 0x305a,
+ 0x0000, 0x482a, 0x0000, 0x0000, 0x484a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4e31, 0x613d, 0x613b, 0x435c, 0x4026, 0x0000, 0x0000,
+ 0x482b, 0x0000, 0x492d, 0x0000, 0x613f, 0x4e2c, 0x374d, 0x6140,
+ 0x0000, 0x613e, 0x4856, 0x6141, 0x0000, 0x6142, 0x0000, 0x0000,
+ 0x305b, 0x0000, 0x0000, 0x3e76, 0x6147, 0x0000, 0x6144, 0x466d,
+ 0x6143, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3526,
+ 0x0000, 0x0000, 0x614a, 0x0000, 0x0000, 0x0000, 0x6145, 0x6146,
+ 0x0000, 0x6149, 0x6148, 0x4925, 0x0000, 0x0000, 0x4142, 0x4141,
+ 0x0000, 0x353f, 0x0000, 0x0000, 0x614b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x614c, 0x0000, 0x0000, 0x614d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x614f, 0x0000, 0x614e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3156, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6157, 0x4868, 0x6151, 0x0000, 0x6153, 0x0000, 0x0000,
+ 0x6155, 0x3f3e, 0x0000, 0x0000, 0x6156, 0x6154, 0x3c40, 0x0000,
+ 0x0000, 0x0000, 0x6150, 0x6152, 0x0000, 0x4942, 0x0000, 0x3e49,
+ 0x0000, 0x0000, 0x6159, 0x0000, 0x0000, 0x6158, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x615a, 0x0000, 0x3c26, 0x3a2f, 0x0000, 0x0000,
+ 0x4577, 0x615b, 0x0000, 0x444b, 0x0000, 0x0000, 0x615d, 0x0000,
+ 0x0000, 0x0000, 0x4e21, 0x615c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4169, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6162, 0x0000, 0x6164, 0x6165, 0x4354, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6163, 0x0000, 0x6160, 0x0000, 0x615e, 0x615f,
+};
+
+static unsigned short const unicode_to_jisx0208_76[] = {
+ /* 0x7600 - 0x76ff */
+ 0x0000, 0x6161, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6168, 0x0000, 0x6166, 0x0000, 0x6167, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6169,
+ 0x616b, 0x616c, 0x616d, 0x0000, 0x616e, 0x0000, 0x0000, 0x616a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6170, 0x0000, 0x0000, 0x0000, 0x616f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6171, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4e45, 0x0000, 0x0000, 0x0000, 0x6174, 0x6172,
+ 0x6173, 0x0000, 0x0000, 0x0000, 0x3462, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4c7e, 0x0000, 0x0000, 0x0000, 0x4a4a, 0x0000,
+ 0x6176, 0x0000, 0x0000, 0x0000, 0x6175, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6177, 0x6178, 0x0000, 0x0000, 0x0000, 0x0000, 0x617c,
+ 0x6179, 0x617a, 0x617b, 0x0000, 0x617d, 0x0000, 0x0000, 0x0000,
+ 0x617e, 0x0000, 0x6221, 0x0000, 0x0000, 0x0000, 0x6222, 0x0000,
+ 0x6223, 0x0000, 0x482f, 0x4550, 0x6224, 0x4772, 0x4934, 0x0000,
+ 0x6225, 0x0000, 0x0000, 0x6226, 0x452a, 0x0000, 0x3327, 0x3944,
+ 0x6227, 0x0000, 0x0000, 0x6228, 0x0000, 0x0000, 0x6229, 0x0000,
+ 0x3b29, 0x0000, 0x0000, 0x622b, 0x0000, 0x0000, 0x622a, 0x0000,
+ 0x0000, 0x622c, 0x622d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4869, 0x0000,
+ 0x622e, 0x0000, 0x0000, 0x0000, 0x622f, 0x0000, 0x0000, 0x7369,
+ 0x6230, 0x6231, 0x6232, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b2e,
+ 0x0000, 0x0000, 0x6233, 0x4756, 0x0000, 0x0000, 0x4b5f, 0x0000,
+ 0x314e, 0x0000, 0x3157, 0x0000, 0x0000, 0x6234, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6236, 0x0000, 0x0000, 0x0000, 0x6235, 0x4570,
+ 0x0000, 0x0000, 0x0000, 0x4039, 0x5d39, 0x0000, 0x6237, 0x4c41,
+ 0x0000, 0x6238, 0x0000, 0x3446, 0x4857, 0x6239, 0x0000, 0x623a,
+ 0x0000, 0x0000, 0x623b, 0x0000, 0x0000, 0x0000, 0x4c5c, 0x0000,
+ 0x0000, 0x0000, 0x4c55, 0x0000, 0x443e, 0x0000, 0x0000, 0x0000,
+ 0x416a, 0x0000, 0x0000, 0x623d, 0x0000, 0x0000, 0x3d62, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_77[] = {
+ /* 0x7700 - 0x77ff */
+ 0x0000, 0x3e4a, 0x0000, 0x0000, 0x6240, 0x0000, 0x0000, 0x623f,
+ 0x623e, 0x487d, 0x0000, 0x3447, 0x3829, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6246, 0x0000, 0x0000, 0x6243, 0x3f3f,
+ 0x4c32, 0x0000, 0x0000, 0x0000, 0x6242, 0x6244, 0x6245, 0x0000,
+ 0x0000, 0x6241, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6247,
+ 0x6248, 0x0000, 0x442f, 0x0000, 0x3463, 0x0000, 0x0000, 0x0000,
+ 0x4365, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6249,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x624a, 0x624d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3f67, 0x0000, 0x4644, 0x0000, 0x624e, 0x4b53, 0x0000,
+ 0x624b, 0x0000, 0x0000, 0x624c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6251, 0x0000, 0x0000, 0x0000, 0x0000, 0x6250, 0x624f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6253, 0x0000, 0x0000, 0x6252, 0x0000,
+ 0x0000, 0x6254, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6256, 0x0000,
+ 0x6255, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a4d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3d56, 0x4e46, 0x0000, 0x0000,
+ 0x6257, 0x0000, 0x0000, 0x4637, 0x0000, 0x0000, 0x6258, 0x0000,
+ 0x0000, 0x6259, 0x0000, 0x625d, 0x625b, 0x625c, 0x0000, 0x625a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x625e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x625f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6260,
+ 0x0000, 0x0000, 0x6261, 0x4c37, 0x6262, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4c70, 0x6263, 0x0000, 0x434e, 0x0000, 0x476a,
+ 0x0000, 0x366b, 0x0000, 0x0000, 0x0000, 0x433b, 0x6264, 0x363a,
+ 0x0000, 0x0000, 0x0000, 0x4050, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6265, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_78[] = {
+ /* 0x7800 - 0x78ff */
+ 0x0000, 0x0000, 0x3a3d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6266, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6267, 0x0000, 0x3826, 0x3a55, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6269, 0x0000, 0x0000, 0x0000, 0x0000, 0x4556, 0x3a56, 0x354e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4b24, 0x0000, 0x474b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4557, 0x0000, 0x0000, 0x0000, 0x0000, 0x395c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x626b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e4b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4e32, 0x3945, 0x0000, 0x0000, 0x3827,
+ 0x0000, 0x0000, 0x4823, 0x0000, 0x626d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x626f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x386b, 0x0000, 0x0000, 0x0000, 0x0000, 0x626e, 0x4476,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6271, 0x3337, 0x626c, 0x0000,
+ 0x0000, 0x486a, 0x0000, 0x3130, 0x0000, 0x3a6c, 0x0000, 0x4f52,
+ 0x0000, 0x0000, 0x6270, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6272, 0x0000, 0x0000, 0x0000, 0x4a4b,
+ 0x0000, 0x4059, 0x6274, 0x0000, 0x0000, 0x0000, 0x0000, 0x6275,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6273, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x334e, 0x0000, 0x627b, 0x0000, 0x627a, 0x0000,
+ 0x0000, 0x3c27, 0x0000, 0x0000, 0x0000, 0x627c, 0x6277, 0x0000,
+ 0x0000, 0x0000, 0x627d, 0x6278, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4858, 0x6276, 0x0000, 0x0000, 0x6279, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6322, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6321,
+ 0x4b61, 0x0000, 0x0000, 0x0000, 0x627e, 0x0000, 0x0000, 0x306b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6324, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6323, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_79[] = {
+ /* 0x7900 - 0x79ff */
+ 0x0000, 0x3e4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6325,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4143, 0x0000,
+ 0x0000, 0x6327, 0x6326, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6328, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6268, 0x0000,
+ 0x0000, 0x0000, 0x626a, 0x632a, 0x6329, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3c28, 0x0000, 0x4e69, 0x0000, 0x3c52, 0x0000,
+ 0x632b, 0x3737, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3540,
+ 0x3527, 0x3b63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4d34, 0x0000, 0x0000, 0x6331, 0x0000, 0x6330, 0x4144, 0x632d,
+ 0x0000, 0x0000, 0x632f, 0x0000, 0x0000, 0x3d4b, 0x3f40, 0x632e,
+ 0x632c, 0x0000, 0x472a, 0x0000, 0x0000, 0x3e4d, 0x0000, 0x0000,
+ 0x493c, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a57, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4578,
+ 0x0000, 0x0000, 0x6332, 0x0000, 0x0000, 0x0000, 0x0000, 0x6333,
+ 0x6349, 0x3658, 0x0000, 0x0000, 0x4f3d, 0x4135, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6334, 0x0000, 0x0000, 0x3252, 0x4477, 0x4a21,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6335, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x357a, 0x6336,
+ 0x0000, 0x0000, 0x6338, 0x0000, 0x0000, 0x0000, 0x6339, 0x0000,
+ 0x4729, 0x0000, 0x0000, 0x633a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x633b, 0x633c, 0x0000, 0x0000, 0x3659, 0x3253, 0x4645,
+ 0x3d28, 0x3b64, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x633d, 0x0000, 0x3d29, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x324a, 0x4943, 0x0000, 0x0000, 0x633e, 0x0000, 0x0000,
+ 0x486b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4145,
+ 0x0000, 0x6341, 0x0000, 0x6342, 0x4769, 0x0000, 0x3f41, 0x633f,
+ 0x0000, 0x4361, 0x0000, 0x0000, 0x6340, 0x0000, 0x0000, 0x0000,
+ 0x3e4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x305c, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_7a[] = {
+ /* 0x7a00 - 0x7aff */
+ 0x3529, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6343, 0x0000, 0x0000, 0x4478, 0x0000, 0x6344, 0x4047, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4c2d, 0x0000, 0x0000, 0x4923,
+ 0x6345, 0x6346, 0x4355, 0x0000, 0x4e47, 0x0000, 0x0000, 0x6348,
+ 0x6347, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c6f, 0x0000,
+ 0x0000, 0x634a, 0x3070, 0x0000, 0x0000, 0x0000, 0x0000, 0x634d,
+ 0x0000, 0x0000, 0x0000, 0x634b, 0x3254, 0x374e, 0x634c, 0x3946,
+ 0x3972, 0x0000, 0x4a66, 0x634e, 0x0000, 0x0000, 0x4b54, 0x0000,
+ 0x0000, 0x6350, 0x0000, 0x0000, 0x0000, 0x4051, 0x314f, 0x323a,
+ 0x302c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x634f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6351, 0x6352, 0x3e77, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6353, 0x0000, 0x334f, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6355, 0x0000, 0x0000, 0x0000, 0x376a, 0x0000, 0x3566, 0x0000,
+ 0x0000, 0x6356, 0x3675, 0x0000, 0x0000, 0x6357, 0x0000, 0x407c,
+ 0x0000, 0x464d, 0x0000, 0x4060, 0x3a75, 0x0000, 0x0000, 0x0000,
+ 0x6358, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4362, 0x416b, 0x0000, 0x635a, 0x635c, 0x6359,
+ 0x635b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3722,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x635d, 0x3726, 0x0000, 0x0000, 0x0000, 0x3567, 0x4d52,
+ 0x635f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6360, 0x0000,
+ 0x0000, 0x0000, 0x312e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6363,
+ 0x0000, 0x0000, 0x0000, 0x3376, 0x6362, 0x6361, 0x0000, 0x6365,
+ 0x635e, 0x0000, 0x6366, 0x4e29, 0x0000, 0x6367, 0x0000, 0x6368,
+ 0x0000, 0x0000, 0x5474, 0x636a, 0x0000, 0x6369, 0x0000, 0x0000,
+ 0x0000, 0x636b, 0x636c, 0x0000, 0x4e35, 0x636d, 0x0000, 0x706f,
+ 0x3e4f, 0x636e, 0x636f, 0x3d57, 0x0000, 0x4638, 0x6370, 0x0000,
+ 0x0000, 0x0000, 0x4328, 0x0000, 0x0000, 0x6371, 0x0000, 0x433c,
+ 0x6372, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3625, 0x0000,
+ 0x513f, 0x435d, 0x3c33, 0x0000, 0x0000, 0x0000, 0x0000, 0x3448,
+};
+
+static unsigned short const unicode_to_jisx0208_7b[] = {
+ /* 0x7b00 - 0x7bff */
+ 0x0000, 0x0000, 0x6373, 0x0000, 0x6422, 0x0000, 0x6376, 0x0000,
+ 0x3568, 0x0000, 0x6375, 0x6424, 0x0000, 0x0000, 0x0000, 0x6374,
+ 0x0000, 0x3e50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6378, 0x6379, 0x0000, 0x452b, 0x0000, 0x0000, 0x637a, 0x0000,
+ 0x335e, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f5a, 0x4964, 0x0000,
+ 0x637c, 0x0000, 0x0000, 0x0000, 0x4268, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6377, 0x0000, 0x637b, 0x637d, 0x0000,
+ 0x0000, 0x3a7b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6426, 0x492e, 0x0000,
+ 0x4826, 0x4579, 0x0000, 0x365a, 0x6425, 0x6423, 0x0000, 0x4835,
+ 0x637e, 0x435e, 0x457b, 0x0000, 0x457a, 0x0000, 0x3a76, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6438, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6428, 0x0000, 0x642a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x642d, 0x0000, 0x642e, 0x0000,
+ 0x642b, 0x642c, 0x0000, 0x0000, 0x6429, 0x6427, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a4f, 0x3255,
+ 0x0000, 0x0000, 0x0000, 0x6435, 0x0000, 0x6432, 0x0000, 0x6437,
+ 0x0000, 0x0000, 0x6436, 0x0000, 0x4773, 0x4c27, 0x0000, 0x3b3b,
+ 0x6430, 0x6439, 0x6434, 0x0000, 0x6433, 0x642f, 0x0000, 0x6431,
+ 0x0000, 0x3449, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x433d, 0x0000, 0x0000, 0x407d, 0x0000, 0x0000,
+ 0x0000, 0x4822, 0x0000, 0x0000, 0x643e, 0x0000, 0x0000, 0x0000,
+ 0x4824, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4061, 0x643b, 0x0000, 0x0000, 0x484f, 0x0000, 0x643f, 0x4a53,
+ 0x0000, 0x435b, 0x0000, 0x643a, 0x643c, 0x0000, 0x0000, 0x643d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6440, 0x0000, 0x0000,
+ 0x3c44, 0x0000, 0x0000, 0x0000, 0x4646, 0x6445, 0x6444, 0x0000,
+ 0x0000, 0x6441, 0x0000, 0x0000, 0x0000, 0x4f36, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x644a, 0x0000, 0x0000, 0x644e, 0x644b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_7c[] = {
+ /* 0x7c00 - 0x7cff */
+ 0x6447, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6448,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x644d, 0x0000, 0x0000,
+ 0x0000, 0x6442, 0x5255, 0x6449, 0x6443, 0x0000, 0x0000, 0x644c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6452,
+ 0x0000, 0x344a, 0x0000, 0x644f, 0x0000, 0x0000, 0x0000, 0x6450,
+ 0x0000, 0x0000, 0x6451, 0x6454, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6453,
+ 0x4876, 0x0000, 0x0000, 0x0000, 0x0000, 0x6455, 0x4e7c, 0x4a6d,
+ 0x645a, 0x0000, 0x0000, 0x6457, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6456, 0x4052, 0x0000, 0x6459,
+ 0x645b, 0x0000, 0x0000, 0x0000, 0x6458, 0x0000, 0x645f, 0x0000,
+ 0x645c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x645d,
+ 0x6446, 0x0000, 0x0000, 0x0000, 0x645e, 0x6460, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6461, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4a46, 0x0000, 0x6462, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c62, 0x0000,
+ 0x0000, 0x364e, 0x3729, 0x6463, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4a34, 0x0000, 0x3f68, 0x0000, 0x4c30, 0x0000, 0x0000,
+ 0x6464, 0x0000, 0x4e33, 0x0000, 0x0000, 0x4774, 0x0000, 0x4146,
+ 0x4734, 0x0000, 0x0000, 0x3d4d, 0x0000, 0x0000, 0x0000, 0x3040,
+ 0x0000, 0x6469, 0x6467, 0x0000, 0x6465, 0x3421, 0x0000, 0x3e51,
+ 0x646a, 0x0000, 0x0000, 0x6468, 0x0000, 0x6466, 0x646e, 0x0000,
+ 0x0000, 0x646d, 0x646c, 0x646b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x646f, 0x0000, 0x0000, 0x0000, 0x6470, 0x403a, 0x0000,
+ 0x6471, 0x0000, 0x6473, 0x0000, 0x0000, 0x6472, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3852, 0x0000, 0x0000, 0x0000, 0x4138, 0x0000,
+ 0x0000, 0x0000, 0x6475, 0x0000, 0x0000, 0x0000, 0x457c, 0x0000,
+ 0x6474, 0x0000, 0x0000, 0x0000, 0x6476, 0x0000, 0x4a35, 0x416c,
+ 0x3947, 0x0000, 0x6477, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e48,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6479,
+ 0x0000, 0x0000, 0x647a, 0x0000, 0x647b, 0x0000, 0x647c, 0x0000,
+ 0x3b65, 0x0000, 0x647d, 0x374f, 0x0000, 0x0000, 0x356a, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_7d[] = {
+ /* 0x7d00 - 0x7dff */
+ 0x352a, 0x0000, 0x6521, 0x0000, 0x4c73, 0x3948, 0x647e, 0x0000,
+ 0x0000, 0x0000, 0x6524, 0x4c66, 0x0000, 0x473c, 0x0000, 0x0000,
+ 0x4933, 0x0000, 0x0000, 0x0000, 0x3d63, 0x6523, 0x0000, 0x3c53,
+ 0x3949, 0x3b66, 0x3569, 0x4a36, 0x6522, 0x0000, 0x0000, 0x0000,
+ 0x4147, 0x4b42, 0x3a77, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3b67, 0x445d, 0x0000, 0x6527, 0x4e5f,
+ 0x3a59, 0x0000, 0x6528, 0x3f42, 0x0000, 0x652a, 0x0000, 0x0000,
+ 0x0000, 0x3e52, 0x3a30, 0x0000, 0x0000, 0x0000, 0x0000, 0x6529,
+ 0x0000, 0x0000, 0x3d2a, 0x383e, 0x4148, 0x6525, 0x652b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6526, 0x3750, 0x0000, 0x652e, 0x6532,
+ 0x376b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x652d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6536, 0x0000, 0x0000, 0x394a, 0x0000,
+ 0x0000, 0x4d6d, 0x303c, 0x6533, 0x0000, 0x0000, 0x356b, 0x0000,
+ 0x6530, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6531, 0x0000,
+ 0x0000, 0x457d, 0x652f, 0x652c, 0x0000, 0x3328, 0x4064, 0x0000,
+ 0x0000, 0x3828, 0x0000, 0x0000, 0x0000, 0x6538, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6535, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6537,
+ 0x0000, 0x0000, 0x0000, 0x6534, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3751, 0x4233, 0x6539, 0x416e, 0x0000, 0x0000, 0x6546,
+ 0x0000, 0x0000, 0x6542, 0x653c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6540, 0x3c7a, 0x305d, 0x653b, 0x6543,
+ 0x6547, 0x394b, 0x4c56, 0x0000, 0x4456, 0x653d, 0x0000, 0x0000,
+ 0x6545, 0x0000, 0x653a, 0x433e, 0x0000, 0x653f, 0x303d, 0x4c4a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x653e,
+ 0x0000, 0x0000, 0x365b, 0x486c, 0x0000, 0x0000, 0x0000, 0x416d,
+ 0x0000, 0x4e50, 0x3d6f, 0x0000, 0x0000, 0x656e, 0x0000, 0x0000,
+ 0x6548, 0x0000, 0x407e, 0x0000, 0x6544, 0x6549, 0x654b, 0x0000,
+ 0x4479, 0x654e, 0x0000, 0x0000, 0x654a, 0x0000, 0x0000, 0x0000,
+ 0x4a54, 0x344b, 0x0000, 0x0000, 0x4c4b, 0x0000, 0x0000, 0x305e,
+ 0x0000, 0x0000, 0x654d, 0x0000, 0x4e7d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x654c, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_7e[] = {
+ /* 0x7e00 - 0x7eff */
+ 0x0000, 0x316f, 0x0000, 0x0000, 0x466c, 0x654f, 0x0000, 0x0000,
+ 0x0000, 0x6556, 0x6550, 0x6557, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6553, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x477b, 0x0000, 0x0000, 0x3c4a, 0x6555,
+ 0x0000, 0x6552, 0x6558, 0x6551, 0x0000, 0x0000, 0x3d44, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4b25, 0x0000, 0x0000, 0x3d4c, 0x0000,
+ 0x0000, 0x6554, 0x6560, 0x0000, 0x0000, 0x655c, 0x0000, 0x655f,
+ 0x0000, 0x655d, 0x6561, 0x655b, 0x0000, 0x6541, 0x4053, 0x0000,
+ 0x0000, 0x484b, 0x0000, 0x655e, 0x0000, 0x0000, 0x6559, 0x0000,
+ 0x0000, 0x0000, 0x4121, 0x3752, 0x0000, 0x3d2b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3f25, 0x4136, 0x6564, 0x0000,
+ 0x0000, 0x6566, 0x6567, 0x0000, 0x0000, 0x6563, 0x6565, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x655a, 0x6562,
+ 0x0000, 0x656a, 0x6569, 0x0000, 0x0000, 0x4b7a, 0x0000, 0x0000,
+ 0x372b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6568, 0x0000, 0x656c, 0x656b, 0x656f, 0x0000, 0x6571,
+ 0x0000, 0x0000, 0x3b3c, 0x656d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6572, 0x6573, 0x0000, 0x0000, 0x6574, 0x0000, 0x657a, 0x453b,
+ 0x6576, 0x0000, 0x6575, 0x6577, 0x6578, 0x0000, 0x6579, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x657b, 0x657c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_7f[] = {
+ /* 0x7f00 - 0x7fff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x344c, 0x0000,
+ 0x657d, 0x0000, 0x657e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6621, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6622, 0x6623, 0x6624, 0x0000,
+ 0x6625, 0x6626, 0x0000, 0x0000, 0x6628, 0x6627, 0x0000, 0x0000,
+ 0x6629, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x662a,
+ 0x662b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x662e,
+ 0x662c, 0x662d, 0x3a61, 0x3753, 0x0000, 0x0000, 0x4356, 0x0000,
+ 0x4833, 0x0000, 0x3d70, 0x0000, 0x0000, 0x474d, 0x0000, 0x486d,
+ 0x662f, 0x586d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6630, 0x6632, 0x0000, 0x4d65, 0x6631, 0x6634,
+ 0x6633, 0x0000, 0x4d53, 0x0000, 0x6635, 0x0000, 0x487e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6636, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6639, 0x0000, 0x0000, 0x6638, 0x6637, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x663a, 0x3732, 0x0000, 0x0000, 0x0000,
+ 0x4122, 0x3541, 0x0000, 0x0000, 0x0000, 0x0000, 0x663e, 0x663b,
+ 0x0000, 0x0000, 0x663c, 0x0000, 0x0000, 0x0000, 0x663f, 0x0000,
+ 0x6640, 0x663d, 0x0000, 0x0000, 0x0000, 0x3129, 0x0000, 0x0000,
+ 0x0000, 0x3227, 0x0000, 0x0000, 0x0000, 0x6642, 0x6643, 0x0000,
+ 0x0000, 0x0000, 0x6644, 0x0000, 0x4d62, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3d2c, 0x0000, 0x6646, 0x6645, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3f69, 0x6647, 0x0000, 0x0000, 0x0000, 0x0000, 0x6648, 0x0000,
+ 0x0000, 0x6649, 0x0000, 0x3465, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x344d, 0x0000, 0x0000, 0x664a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x664b, 0x0000, 0x4b5d, 0x4d63, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_80[] = {
+ /* 0x8000 - 0x80ff */
+ 0x4d54, 0x4f37, 0x0000, 0x394d, 0x664e, 0x3c54, 0x664d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x664f, 0x3c29, 0x0000, 0x0000, 0x0000,
+ 0x4251, 0x0000, 0x6650, 0x0000, 0x0000, 0x394c, 0x0000, 0x4c57,
+ 0x6651, 0x6652, 0x0000, 0x0000, 0x6653, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6654, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6655, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3c2a, 0x0000, 0x0000, 0x4c6d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6657, 0x0000, 0x433f, 0x0000, 0x6656,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6659, 0x0000,
+ 0x0000, 0x0000, 0x6658, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x665a, 0x0000, 0x0000, 0x0000, 0x403b, 0x0000,
+ 0x665b, 0x0000, 0x665c, 0x0000, 0x0000, 0x0000, 0x4a39, 0x665d,
+ 0x0000, 0x416f, 0x665e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x665f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e7e,
+ 0x6662, 0x0000, 0x6661, 0x6660, 0x4430, 0x0000, 0x6663, 0x3f26,
+ 0x0000, 0x6664, 0x0000, 0x0000, 0x0000, 0x6665, 0x4f38, 0x6666,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6667, 0x6669, 0x6668, 0x4825,
+ 0x0000, 0x4679, 0x0000, 0x4f3e, 0x4829, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x666b, 0x0000, 0x0000, 0x3e53, 0x0000,
+ 0x492a, 0x0000, 0x666c, 0x666a, 0x0000, 0x344e, 0x0000, 0x0000,
+ 0x0000, 0x3854, 0x3b68, 0x0000, 0x0000, 0x486e, 0x0000, 0x0000,
+ 0x0000, 0x382a, 0x4b43, 0x0000, 0x666f, 0x666d, 0x0000, 0x394e,
+ 0x0000, 0x394f, 0x3069, 0x0000, 0x3a68, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4759, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x305f, 0x6674, 0x0000, 0x4340, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4758, 0x0000, 0x425b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6676, 0x0000,
+ 0x0000, 0x6672, 0x6675, 0x6670, 0x0000, 0x6673, 0x4b26, 0x0000,
+ 0x0000, 0x3855, 0x0000, 0x0000, 0x307d, 0x6671, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6678,
+ 0x0000, 0x6679, 0x0000, 0x0000, 0x4639, 0x0000, 0x0000, 0x0000,
+ 0x363b, 0x0000, 0x0000, 0x0000, 0x6726, 0x473d, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_81[] = {
+ /* 0x8100 - 0x81ff */
+ 0x0000, 0x0000, 0x3b69, 0x0000, 0x0000, 0x363c, 0x4048, 0x4f46,
+ 0x4c2e, 0x6677, 0x4054, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3553, 0x667a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x667c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x667b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x667d,
+ 0x0000, 0x4326, 0x0000, 0x473e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4431, 0x0000, 0x0000, 0x0000, 0x0000, 0x6723, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6722, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x667e, 0x0000, 0x0000, 0x3f55, 0x0000,
+ 0x4965, 0x6725, 0x0000, 0x6724, 0x3950, 0x4f53, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6735,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6729, 0x672a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3c70, 0x0000, 0x0000, 0x6728, 0x0000,
+ 0x3978, 0x6727, 0x0000, 0x0000, 0x672b, 0x0000, 0x0000, 0x0000,
+ 0x4432, 0x4a22, 0x4123, 0x0000, 0x0000, 0x0000, 0x0000, 0x425c,
+ 0x672f, 0x0000, 0x6730, 0x672c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x672d, 0x0000, 0x672e, 0x0000, 0x0000, 0x0000, 0x0000, 0x3951,
+ 0x0000, 0x0000, 0x0000, 0x6736, 0x0000, 0x6732, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4966, 0x0000, 0x4b6c, 0x4928, 0x0000, 0x0000,
+ 0x6731, 0x0000, 0x0000, 0x6734, 0x6733, 0x0000, 0x0000, 0x0000,
+ 0x4b44, 0x6737, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6738, 0x0000, 0x0000, 0x4137, 0x0000, 0x6739, 0x0000, 0x0000,
+ 0x673b, 0x0000, 0x673f, 0x0000, 0x0000, 0x673c, 0x673a, 0x473f,
+ 0x673d, 0x0000, 0x673e, 0x0000, 0x0000, 0x0000, 0x3232, 0x0000,
+ 0x6745, 0x6740, 0x0000, 0x0000, 0x0000, 0x6741, 0x0000, 0x0000,
+ 0x0000, 0x6742, 0x0000, 0x4221, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6744, 0x6743, 0x6746, 0x0000, 0x0000, 0x0000, 0x0000, 0x6747,
+ 0x6748, 0x0000, 0x0000, 0x3f43, 0x0000, 0x3269, 0x0000, 0x6749,
+ 0x4e57, 0x0000, 0x3c2b, 0x0000, 0x0000, 0x3d2d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3b6a, 0x4357, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x674a, 0x674b, 0x3131, 0x0000, 0x674c, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_82[] = {
+ /* 0x8200 - 0x82ff */
+ 0x0000, 0x674d, 0x674e, 0x0000, 0x0000, 0x674f, 0x0000, 0x6750,
+ 0x363d, 0x5a2a, 0x6751, 0x0000, 0x4065, 0x6752, 0x3c4b, 0x0000,
+ 0x6753, 0x0000, 0x5030, 0x0000, 0x0000, 0x0000, 0x6754, 0x4a5e,
+ 0x345c, 0x0000, 0x0000, 0x4124, 0x3d58, 0x0000, 0x4971, 0x3d2e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6755, 0x3952, 0x6756, 0x484c, 0x0000, 0x6764, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6758, 0x0000, 0x4249, 0x4775, 0x383f,
+ 0x6757, 0x4125, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6759, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x447a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x675b, 0x675a, 0x675d, 0x0000, 0x0000, 0x675c, 0x0000, 0x675e,
+ 0x0000, 0x0000, 0x6760, 0x0000, 0x675f, 0x0000, 0x344f, 0x0000,
+ 0x6761, 0x0000, 0x6762, 0x6763, 0x0000, 0x0000, 0x3a31, 0x4e49,
+ 0x0000, 0x6765, 0x3f27, 0x0000, 0x0000, 0x0000, 0x3170, 0x6766,
+ 0x6767, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6768, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3072, 0x0000, 0x6769, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x676a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4967, 0x0000, 0x0000, 0x0000, 0x3c47, 0x0000, 0x676c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3329, 0x3032, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x676b, 0x676e, 0x474e, 0x0000, 0x3f44,
+ 0x0000, 0x3256, 0x0000, 0x4b27, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x375d, 0x365c, 0x0000, 0x676d, 0x0000, 0x326a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3423, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3171, 0x6772, 0x4e6a, 0x425d, 0x0000, 0x0000, 0x4944,
+ 0x0000, 0x677e, 0x0000, 0x3257, 0x677c, 0x0000, 0x677a, 0x6771,
+ 0x0000, 0x676f, 0x0000, 0x6770, 0x0000, 0x3c63, 0x366c, 0x4377,
+ 0x0000, 0x0000, 0x0000, 0x4651, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3151, 0x0000, 0x6774, 0x6773, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6779, 0x6775, 0x6778, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_83[] = {
+ /* 0x8300 - 0x83ff */
+ 0x0000, 0x0000, 0x4c50, 0x6777, 0x3258, 0x337d, 0x677b, 0x0000,
+ 0x0000, 0x677d, 0x0000, 0x0000, 0x0000, 0x0000, 0x3754, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6823, 0x682c,
+ 0x682d, 0x0000, 0x0000, 0x0000, 0x302b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6834, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3071, 0x0000, 0x0000, 0x682b, 0x0000, 0x0000, 0x0000, 0x682a,
+ 0x0000, 0x6825, 0x6824, 0x0000, 0x6822, 0x6821, 0x4363, 0x0000,
+ 0x427b, 0x6827, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6826, 0x0000, 0x0000, 0x0000, 0x0000, 0x6829, 0x0000, 0x0000,
+ 0x0000, 0x4170, 0x3755, 0x0000, 0x0000, 0x0000, 0x0000, 0x3141,
+ 0x6828, 0x0000, 0x3953, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4171, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x683a, 0x0000, 0x683b, 0x0000, 0x3259,
+ 0x0000, 0x0000, 0x0000, 0x322e, 0x6838, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x682e, 0x0000, 0x6836,
+ 0x0000, 0x683d, 0x6837, 0x0000, 0x0000, 0x0000, 0x6835, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6776, 0x0000, 0x0000, 0x6833, 0x0000,
+ 0x0000, 0x0000, 0x682f, 0x0000, 0x0000, 0x0000, 0x3450, 0x6831,
+ 0x683c, 0x0000, 0x6832, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x683e, 0x0000, 0x6830, 0x477c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4d69, 0x0000, 0x0000, 0x0000, 0x6839, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x684f, 0x0000, 0x0000,
+ 0x0000, 0x6847, 0x0000, 0x0000, 0x0000, 0x3f7b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3546, 0x0000, 0x365d, 0x0000, 0x6842, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x325b, 0x0000, 0x0000, 0x3e54, 0x0000,
+ 0x6845, 0x0000, 0x0000, 0x0000, 0x3a5a, 0x0000, 0x0000, 0x4551,
+ 0x684a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4a6e, 0x0000, 0x6841, 0x0000, 0x0000, 0x0000, 0x325a,
+ 0x3856, 0x4929, 0x684b, 0x0000, 0x683f, 0x0000, 0x0000, 0x6848,
+ 0x0000, 0x0000, 0x0000, 0x6852, 0x0000, 0x6843, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_84[] = {
+ /* 0x8400 - 0x84ff */
+ 0x0000, 0x0000, 0x0000, 0x6844, 0x463a, 0x0000, 0x0000, 0x6849,
+ 0x0000, 0x0000, 0x0000, 0x6846, 0x4b28, 0x684c, 0x3060, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6840, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x684e, 0x0000, 0x684d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x476b, 0x6854, 0x0000, 0x685f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x337e, 0x0000, 0x0000, 0x0000, 0x6862, 0x0000, 0x0000,
+ 0x6850, 0x0000, 0x0000, 0x0000, 0x6855, 0x4d6e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x685e, 0x0000,
+ 0x0000, 0x4d55, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e2a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4378,
+ 0x0000, 0x0000, 0x0000, 0x336b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4972, 0x6864, 0x4621, 0x0000, 0x0000, 0x3031, 0x0000,
+ 0x0000, 0x685d, 0x0000, 0x6859, 0x4172, 0x6853, 0x685b, 0x6860,
+ 0x0000, 0x472c, 0x0000, 0x0000, 0x0000, 0x302a, 0x0000, 0x6858,
+ 0x0000, 0x6861, 0x4978, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x685c, 0x0000, 0x6857, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3e55, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3d2f, 0x0000, 0x0000, 0x0000, 0x3c2c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4c58, 0x0000, 0x0000, 0x4947, 0x0000, 0x0000, 0x6867,
+ 0x0000, 0x6870, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x685a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3377, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3e78, 0x6865, 0x0000, 0x686a, 0x4173, 0x0000, 0x0000, 0x6866,
+ 0x0000, 0x686d, 0x0000, 0x0000, 0x435f, 0x0000, 0x686e, 0x0000,
+ 0x0000, 0x4d56, 0x6863, 0x3338, 0x0000, 0x6869, 0x0000, 0x0000,
+ 0x686c, 0x4c2c, 0x0000, 0x0000, 0x0000, 0x0000, 0x686f, 0x0000,
+ 0x0000, 0x6868, 0x686b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4b29, 0x0000, 0x4f21, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6873, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x687a, 0x0000, 0x0000, 0x6872,
+};
+
+static unsigned short const unicode_to_jisx0208_85[] = {
+ /* 0x8500 - 0x85ff */
+ 0x3c43, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6851, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4a4e, 0x0000, 0x4c22, 0x6879, 0x6878, 0x0000, 0x6874,
+ 0x6875, 0x0000, 0x3136, 0x0000, 0x0000, 0x0000, 0x0000, 0x6877,
+ 0x0000, 0x6871, 0x0000, 0x0000, 0x0000, 0x0000, 0x4455, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6876, 0x307e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4222, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a43, 0x0000, 0x0000,
+ 0x687b, 0x6921, 0x0000, 0x4859, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x687e, 0x3e56, 0x3c49, 0x6923, 0x0000, 0x0000, 0x363e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6924, 0x0000, 0x4979,
+ 0x687d, 0x0000, 0x6856, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x687c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4f4f, 0x4622, 0x4973, 0x0000, 0x0000, 0x692b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6931,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6932, 0x0000,
+ 0x6925, 0x0000, 0x0000, 0x0000, 0x4776, 0x0000, 0x0000, 0x692f,
+ 0x6927, 0x0000, 0x6929, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6933, 0x6928, 0x0000, 0x0000, 0x692c, 0x0000, 0x0000, 0x3172,
+ 0x0000, 0x4665, 0x0000, 0x692d, 0x6930, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6926, 0x0000, 0x4126, 0x0000,
+ 0x692a, 0x3b27, 0x3f45, 0x3730, 0x4c74, 0x0000, 0x4c79, 0x3d72,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6937, 0x6935, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4f4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6934, 0x0000, 0x0000, 0x0000, 0x4d75, 0x0000, 0x6936,
+ 0x6938, 0x0000, 0x0000, 0x0000, 0x0000, 0x6939, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x693c, 0x693a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4623, 0x693b, 0x0000, 0x0000,
+ 0x0000, 0x484d, 0x692e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d73,
+ 0x0000, 0x693d, 0x6942, 0x4174, 0x0000, 0x0000, 0x6941, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_86[] = {
+ /* 0x8600 - 0x86ff */
+ 0x0000, 0x0000, 0x6922, 0x0000, 0x0000, 0x0000, 0x6943, 0x4149,
+ 0x0000, 0x0000, 0x693e, 0x6940, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x693f, 0x0000, 0x0000, 0x5d31, 0x5d22,
+ 0x0000, 0x0000, 0x6945, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6944, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d76, 0x0000, 0x623c,
+ 0x6946, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6947,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6948, 0x3857, 0x0000,
+ 0x3554, 0x0000, 0x0000, 0x0000, 0x694a, 0x515d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3575, 0x0000, 0x4e3a, 0x0000, 0x3673, 0x694b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x694c,
+ 0x0000, 0x0000, 0x0000, 0x436e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x694d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x467a, 0x0000, 0x303a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3263, 0x6952, 0x6953, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x694e, 0x0000, 0x3b3d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x694f, 0x4742, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6950, 0x6951, 0x695b, 0x0000, 0x0000, 0x0000, 0x6955,
+ 0x6958, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6954, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6956, 0x0000, 0x6957, 0x3c58,
+ 0x0000, 0x6959, 0x0000, 0x4341, 0x0000, 0x3756, 0x3342, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x695c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x333f, 0x0000, 0x6961, 0x0000, 0x0000, 0x695d, 0x6960,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x483a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x695e, 0x0000, 0x0000, 0x695f, 0x4948, 0x485a, 0x6962,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x427d, 0x696c, 0x0000, 0x6968, 0x0000, 0x0000, 0x326b, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_87[] = {
+ /* 0x8700 - 0x87ff */
+ 0x6966, 0x0000, 0x4b2a, 0x6967, 0x0000, 0x0000, 0x6964, 0x0000,
+ 0x6965, 0x696a, 0x696d, 0x0000, 0x0000, 0x696b, 0x0000, 0x0000,
+ 0x0000, 0x6969, 0x6963, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4358, 0x0000, 0x6974, 0x0000, 0x4c2a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6972, 0x0000, 0x0000,
+ 0x0000, 0x6973, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x696e, 0x0000, 0x0000, 0x6970,
+ 0x0000, 0x0000, 0x0000, 0x6971, 0x0000, 0x0000, 0x0000, 0x696f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4066, 0x0000, 0x4f39, 0x6978, 0x0000, 0x6979, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6a21, 0x0000, 0x3f2a, 0x0000, 0x697b,
+ 0x0000, 0x697e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6976,
+ 0x6975, 0x0000, 0x0000, 0x6a22, 0x0000, 0x0000, 0x325c, 0x0000,
+ 0x697c, 0x0000, 0x6a23, 0x0000, 0x0000, 0x0000, 0x697d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x697a, 0x0000, 0x4433, 0x0000,
+ 0x6977, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4768,
+ 0x0000, 0x0000, 0x6a27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d3b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a26,
+ 0x0000, 0x0000, 0x6a25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6a2e, 0x0000, 0x0000, 0x0000, 0x6a28,
+ 0x0000, 0x0000, 0x0000, 0x6a30, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4d66, 0x6a33, 0x0000, 0x6a2a, 0x0000, 0x0000,
+ 0x6a2b, 0x0000, 0x0000, 0x0000, 0x6a2f, 0x0000, 0x6a32, 0x6a31,
+ 0x0000, 0x0000, 0x0000, 0x6a29, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6a2c, 0x0000, 0x6a3d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6a36, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a34,
+ 0x0000, 0x0000, 0x6a35, 0x0000, 0x0000, 0x0000, 0x6a3a, 0x6a3b,
+ 0x0000, 0x332a, 0x0000, 0x3542, 0x0000, 0x0000, 0x6a39, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_88[] = {
+ /* 0x8800 - 0x88ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a24, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a38, 0x6a3c, 0x6a37,
+ 0x0000, 0x6a3e, 0x0000, 0x0000, 0x0000, 0x6a40, 0x6a3f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6a42, 0x6a41, 0x695a, 0x0000, 0x0000, 0x0000, 0x6a46,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6a43, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a44, 0x0000,
+ 0x0000, 0x6a45, 0x0000, 0x6a47, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x376c, 0x0000, 0x6a49, 0x0000, 0x6a48, 0x0000, 0x3d30, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3954, 0x5e27, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6a4a, 0x3d51, 0x0000, 0x0000, 0x0000, 0x3339,
+ 0x0000, 0x6a4b, 0x0000, 0x3152, 0x0000, 0x3e57, 0x6a4c, 0x0000,
+ 0x0000, 0x3955, 0x6a4d, 0x3061, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x493d, 0x0000, 0x0000, 0x6a4e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3f6a, 0x0000, 0x6a55, 0x0000, 0x0000, 0x6a52, 0x0000, 0x436f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a53, 0x6a50, 0x365e,
+ 0x0000, 0x6a4f, 0x6a56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3736, 0x0000, 0x0000, 0x425e, 0x0000, 0x6a5c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6a58, 0x0000, 0x0000, 0x0000, 0x4235, 0x6a57,
+ 0x0000, 0x6a5a, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a51, 0x0000,
+ 0x0000, 0x0000, 0x6a5b, 0x0000, 0x6a5d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x486f, 0x0000, 0x0000, 0x6a59, 0x0000,
+ 0x6a5e, 0x6a60, 0x0000, 0x0000, 0x3853, 0x6a54, 0x0000, 0x3041,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a5f,
+ 0x0000, 0x3a5b, 0x4e76, 0x6a61, 0x6a62, 0x4175, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e22,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6a63, 0x4d35, 0x0000, 0x0000,
+ 0x6a64, 0x6a65, 0x0000, 0x0000, 0x4a64, 0x6a66, 0x0000, 0x3a40,
+ 0x0000, 0x4e23, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6a6b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6a6c, 0x3e58, 0x6a6a, 0x0000, 0x0000, 0x0000,
+ 0x4d67, 0x6a67, 0x0000, 0x0000, 0x6a69, 0x403d, 0x3f7e, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_89[] = {
+ /* 0x8900 - 0x89ff */
+ 0x0000, 0x0000, 0x6a68, 0x0000, 0x6a6d, 0x0000, 0x0000, 0x4a23,
+ 0x0000, 0x0000, 0x6a6f, 0x0000, 0x6a6e, 0x0000, 0x0000, 0x0000,
+ 0x336c, 0x0000, 0x4b2b, 0x6a70, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a7c, 0x6a72, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a73, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6a74, 0x6a75, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a79, 0x0000,
+ 0x6a7a, 0x0000, 0x0000, 0x6a78, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6a76, 0x0000, 0x6a71, 0x6a77, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6a7b, 0x7037, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3228, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a7e, 0x365f,
+ 0x6a7d, 0x0000, 0x0000, 0x0000, 0x6b22, 0x0000, 0x6b21, 0x0000,
+ 0x0000, 0x0000, 0x6b24, 0x0000, 0x0000, 0x6b23, 0x0000, 0x6b25,
+ 0x0000, 0x0000, 0x3d31, 0x0000, 0x6b26, 0x0000, 0x0000, 0x6b27,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b28, 0x403e,
+ 0x0000, 0x4d57, 0x0000, 0x6b29, 0x0000, 0x0000, 0x4a24, 0x4746,
+ 0x6b2a, 0x0000, 0x6b2b, 0x382b, 0x0000, 0x0000, 0x0000, 0x352c,
+ 0x0000, 0x0000, 0x0000, 0x6b2c, 0x0000, 0x0000, 0x3b6b, 0x4741,
+ 0x6b2d, 0x0000, 0x3350, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6b2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b30, 0x4d77,
+ 0x0000, 0x6b2f, 0x3f46, 0x0000, 0x6b31, 0x0000, 0x0000, 0x6b32,
+ 0x0000, 0x0000, 0x6b33, 0x3451, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6b34, 0x0000, 0x0000, 0x6b35, 0x0000, 0x6b36,
+ 0x6b37, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3351, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6b38, 0x0000, 0x6b39, 0x6b3a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3272, 0x0000, 0x0000, 0x3f28, 0x6b3b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6b3c, 0x0000, 0x0000, 0x0000,
+ 0x6b3d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_8a[] = {
+ /* 0x8a00 - 0x8aff */
+ 0x3840, 0x0000, 0x447b, 0x6b3e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3757, 0x0000, 0x3f56, 0x0000, 0x6b41, 0x0000, 0x4624, 0x0000,
+ 0x6b40, 0x0000, 0x0000, 0x3731, 0x0000, 0x0000, 0x6b3f, 0x4277,
+ 0x352d, 0x0000, 0x0000, 0x6b42, 0x0000, 0x6b43, 0x0000, 0x3e59,
+ 0x0000, 0x0000, 0x0000, 0x376d, 0x0000, 0x6b44, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4b2c, 0x0000, 0x0000, 0x405f, 0x0000, 0x0000,
+ 0x0000, 0x3576, 0x0000, 0x4c75, 0x414a, 0x0000, 0x6b45, 0x0000,
+ 0x0000, 0x0000, 0x3f47, 0x4370, 0x3e5a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6b46, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b49, 0x0000,
+ 0x6b4a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3a3e, 0x4242, 0x6b48, 0x0000, 0x3e5b, 0x493e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6b47, 0x0000, 0x0000, 0x3b6c, 0x0000,
+ 0x3153, 0x0000, 0x6b4e, 0x3758, 0x0000, 0x0000, 0x3b6e, 0x0000,
+ 0x0000, 0x3b6d, 0x0000, 0x4f4d, 0x6b4d, 0x6b4c, 0x4127, 0x0000,
+ 0x354d, 0x4f43, 0x333a, 0x3e5c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6b4b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6b50, 0x0000, 0x6b51, 0x6b4f, 0x0000, 0x3858,
+ 0x0000, 0x4d40, 0x0000, 0x0000, 0x3b6f, 0x4727, 0x0000, 0x0000,
+ 0x0000, 0x6b54, 0x0000, 0x4040, 0x0000, 0x4342, 0x0000, 0x0000,
+ 0x4d36, 0x0000, 0x6b57, 0x0000, 0x0000, 0x0000, 0x386c, 0x0000,
+ 0x403f, 0x6b53, 0x0000, 0x6b58, 0x386d, 0x6b55, 0x6b56, 0x0000,
+ 0x6b52, 0x0000, 0x0000, 0x0000, 0x4062, 0x4649, 0x0000, 0x0000,
+ 0x432f, 0x0000, 0x325d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4870, 0x0000, 0x0000, 0x3543, 0x0000, 0x0000, 0x4434,
+ 0x0000, 0x0000, 0x6b5b, 0x0000, 0x6b59, 0x0000, 0x0000, 0x434c,
+ 0x0000, 0x0000, 0x0000, 0x4041, 0x3452, 0x6b5a, 0x0000, 0x3f5b,
+ 0x0000, 0x0000, 0x4e4a, 0x0000, 0x0000, 0x0000, 0x4f40, 0x0000,
+ 0x0000, 0x0000, 0x6b5c, 0x6b67, 0x4435, 0x0000, 0x6b66, 0x0000,
+ 0x6b63, 0x6b6b, 0x6b64, 0x0000, 0x6b60, 0x0000, 0x447c, 0x6b5f,
+ 0x0000, 0x0000, 0x0000, 0x6b5d, 0x0000, 0x4d21, 0x3b70, 0x0000,
+ 0x0000, 0x6b61, 0x0000, 0x6b5e, 0x0000, 0x0000, 0x0000, 0x6b65,
+ 0x3d74, 0x0000, 0x3841, 0x0000, 0x0000, 0x0000, 0x427a, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_8b[] = {
+ /* 0x8b00 - 0x8bff */
+ 0x4b45, 0x315a, 0x3062, 0x0000, 0x4625, 0x0000, 0x0000, 0x6b69,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6b68, 0x0000, 0x4666, 0x0000,
+ 0x6b6d, 0x0000, 0x0000, 0x0000, 0x6b62, 0x0000, 0x6b6c, 0x6b6e,
+ 0x0000, 0x382c, 0x6b6a, 0x3956, 0x0000, 0x3c55, 0x0000, 0x0000,
+ 0x6b6f, 0x4d58, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b72, 0x0000,
+ 0x6b75, 0x0000, 0x0000, 0x6b73, 0x4935, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6b70, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3660, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b74, 0x0000,
+ 0x0000, 0x6b76, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6b7a, 0x0000, 0x0000, 0x6b77, 0x0000, 0x6b79, 0x6b78,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b7b, 0x0000,
+ 0x3c31, 0x0000, 0x6b7d, 0x6b7c, 0x4968, 0x0000, 0x0000, 0x6c21,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3759, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6b7e, 0x6c22, 0x0000, 0x0000, 0x6c23,
+ 0x3544, 0x6641, 0x3e79, 0x0000, 0x6c24, 0x0000, 0x0000, 0x386e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c25, 0x0000, 0x0000,
+ 0x6c26, 0x0000, 0x0000, 0x3b3e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5a4e, 0x0000, 0x6c27, 0x0000, 0x6c28, 0x0000,
+ 0x3d32, 0x0000, 0x6c29, 0x6c2a, 0x0000, 0x0000, 0x6c2b, 0x0000,
+ 0x0000, 0x6c2c, 0x6c2d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_8c[] = {
+ /* 0x8c00 - 0x8cff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x432b,
+ 0x0000, 0x0000, 0x6c2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c30,
+ 0x0000, 0x6c2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x4626, 0x0000,
+ 0x6c31, 0x0000, 0x4b2d, 0x0000, 0x6c32, 0x0000, 0x6c33, 0x0000,
+ 0x6c34, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c35, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x465a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3e5d, 0x6c36, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x396b, 0x502e, 0x6c37, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6c38, 0x493f, 0x6c39, 0x0000, 0x6c41, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6c3a, 0x0000, 0x0000, 0x6c3c, 0x0000, 0x0000,
+ 0x0000, 0x6c3b, 0x6c3d, 0x0000, 0x4b46, 0x6c3e, 0x6c3f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6c40, 0x0000, 0x0000, 0x0000,
+ 0x6c42, 0x0000, 0x0000, 0x0000, 0x0000, 0x332d, 0x4467, 0x0000,
+ 0x4969, 0x3a62, 0x3957, 0x0000, 0x0000, 0x0000, 0x0000, 0x494f,
+ 0x325f, 0x484e, 0x6c45, 0x3453, 0x4055, 0x6c44, 0x6c49, 0x4379,
+ 0x4c63, 0x0000, 0x6c47, 0x6c48, 0x352e, 0x0000, 0x6c4a, 0x4763,
+ 0x425f, 0x0000, 0x0000, 0x4871, 0x453d, 0x6c46, 0x0000, 0x4b47,
+ 0x326c, 0x6c4c, 0x4f28, 0x4442, 0x4f45, 0x0000, 0x0000, 0x3b71,
+ 0x6c4b, 0x0000, 0x4231, 0x0000, 0x0000, 0x6c5c, 0x4128, 0x0000,
+ 0x0000, 0x4678, 0x0000, 0x4950, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6c4f, 0x3b3f, 0x3b72, 0x0000, 0x3e5e, 0x0000,
+ 0x4765, 0x0000, 0x382d, 0x6c4e, 0x6c4d, 0x0000, 0x496a, 0x0000,
+ 0x0000, 0x0000, 0x3c41, 0x0000, 0x0000, 0x4552, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6c51, 0x6c52, 0x3958, 0x6c50, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_8d[] = {
+ /* 0x8d00 - 0x8dff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6c53, 0x6c54, 0x0000, 0x6c56,
+ 0x4223, 0x0000, 0x6c55, 0x3466, 0x0000, 0x6c58, 0x0000, 0x6c57,
+ 0x6c59, 0x0000, 0x0000, 0x6c5b, 0x6c5d, 0x0000, 0x6c5e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4056, 0x0000, 0x3c4f, 0x6c5f,
+ 0x0000, 0x0000, 0x0000, 0x3352, 0x0000, 0x6c60, 0x0000, 0x0000,
+ 0x4176, 0x6c61, 0x0000, 0x6c62, 0x496b, 0x0000, 0x0000, 0x352f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6c63, 0x0000, 0x0000, 0x0000, 0x4436, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x315b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6c64, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3c71, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3f76, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x422d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6c67, 0x0000, 0x0000, 0x0000, 0x6c66, 0x0000,
+ 0x0000, 0x0000, 0x6c65, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6c6d, 0x6c6b, 0x0000, 0x0000, 0x6c68,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c6a, 0x0000,
+ 0x0000, 0x0000, 0x6c69, 0x6c6c, 0x0000, 0x3577, 0x0000, 0x6c70,
+ 0x0000, 0x4057, 0x0000, 0x6c71, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3859, 0x0000, 0x6c6e, 0x6c6f, 0x0000, 0x0000, 0x0000, 0x4f29,
+ 0x0000, 0x0000, 0x0000, 0x4437, 0x0000, 0x4129, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6c72, 0x0000, 0x0000, 0x6c75,
+};
+
+static unsigned short const unicode_to_jisx0208_8e[] = {
+ /* 0x8e00 - 0x8eff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6c73, 0x6c74, 0x4d59, 0x0000, 0x0000, 0x0000, 0x0000, 0x4627,
+ 0x6c78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c76, 0x6c77, 0x6c79,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6d29, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6c7c, 0x0000, 0x0000, 0x0000, 0x6c7d, 0x6c7b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6c7a, 0x0000, 0x447d, 0x0000, 0x0000, 0x6d21,
+ 0x6d25, 0x6d22, 0x6c7e, 0x0000, 0x6d23, 0x0000, 0x0000, 0x0000,
+ 0x6d24, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d2b, 0x0000, 0x0000,
+ 0x0000, 0x6d26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4058,
+ 0x6d28, 0x0000, 0x0000, 0x6d2a, 0x6d27, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6d2d, 0x0000, 0x3d33, 0x0000, 0x6d2c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6d2e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6d2f, 0x0000, 0x0000, 0x6d32, 0x6d31, 0x0000, 0x6d30,
+ 0x0000, 0x0000, 0x6d34, 0x6d33, 0x0000, 0x4c76, 0x0000, 0x0000,
+ 0x0000, 0x6d36, 0x0000, 0x6d35, 0x6d37, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6d38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6d3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6d39, 0x3f48, 0x6d3b, 0x0000, 0x0000, 0x366d,
+ 0x6d3c, 0x6d3e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d3f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d40, 0x6d3d, 0x0000,
+ 0x6d41, 0x0000, 0x3c56, 0x6d42, 0x3530, 0x3733, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x382e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6d43, 0x0000, 0x0000, 0x0000, 0x4670,
+ 0x0000, 0x0000, 0x453e, 0x6d44, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6d47, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3c34, 0x0000, 0x0000, 0x6d46, 0x6d45, 0x375a, 0x6d48, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_8f[] = {
+ /* 0x8f00 - 0x8fff */
+ 0x0000, 0x0000, 0x0000, 0x3353, 0x0000, 0x6d4a, 0x0000, 0x0000,
+ 0x0000, 0x3a5c, 0x6d49, 0x0000, 0x6d52, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6d4c, 0x6d4e, 0x4a65, 0x6d4b, 0x0000, 0x0000,
+ 0x0000, 0x6d4d, 0x0000, 0x6d51, 0x6d4f, 0x3531, 0x0000, 0x6d50,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d53, 0x0000,
+ 0x0000, 0x475a, 0x4e58, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d34,
+ 0x0000, 0x0000, 0x0000, 0x6d54, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4d22, 0x6d56, 0x0000, 0x6d55, 0x0000, 0x0000, 0x6d59, 0x4d41,
+ 0x0000, 0x0000, 0x6d58, 0x0000, 0x336d, 0x6d57, 0x6d5c, 0x0000,
+ 0x0000, 0x6d5b, 0x0000, 0x0000, 0x6d5a, 0x4532, 0x6d5d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d5e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6d5f, 0x0000, 0x0000, 0x396c,
+ 0x0000, 0x3725, 0x6d60, 0x6d61, 0x6d62, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3f49, 0x6d63, 0x0000, 0x3c2d, 0x6d64,
+ 0x0000, 0x0000, 0x0000, 0x6d65, 0x0000, 0x0000, 0x0000, 0x5221,
+ 0x517e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d66, 0x6570, 0x6d67,
+ 0x4324, 0x3f2b, 0x4740, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d68,
+ 0x0000, 0x0000, 0x4a55, 0x4454, 0x397e, 0x0000, 0x0000, 0x4329,
+ 0x0000, 0x0000, 0x312a, 0x0000, 0x4b78, 0x3f57, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x375e, 0x0000,
+ 0x0000, 0x3661, 0x0000, 0x0000, 0x4a56, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6d69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6d6b, 0x0000, 0x0000, 0x6d6a, 0x3260, 0x0000,
+ 0x0000, 0x4676, 0x6d6c, 0x4777, 0x0000, 0x4533, 0x0000, 0x6d6d,
+ 0x3d52, 0x0000, 0x0000, 0x0000, 0x6d6f, 0x0000, 0x0000, 0x4c42,
+ 0x6d7e, 0x6d71, 0x6d72, 0x0000, 0x0000, 0x4449, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_90[] = {
+ /* 0x9000 - 0x90ff */
+ 0x4260, 0x4177, 0x0000, 0x4628, 0x0000, 0x6d70, 0x3555, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6d79, 0x0000, 0x6d76, 0x6e25, 0x4629,
+ 0x4360, 0x6d73, 0x0000, 0x447e, 0x4553, 0x6d74, 0x6d78, 0x3f60,
+ 0x0000, 0x4767, 0x444c, 0x0000, 0x0000, 0x4042, 0x6d77, 0x422e,
+ 0x4224, 0x6d75, 0x3029, 0x4f22, 0x0000, 0x0000, 0x0000, 0x6d7a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4261, 0x0000,
+ 0x0000, 0x3d35, 0x3f4a, 0x0000, 0x0000, 0x6d7c, 0x6d7b, 0x0000,
+ 0x306f, 0x6d7d, 0x0000, 0x0000, 0x492f, 0x0000, 0x6e27, 0x0000,
+ 0x0000, 0x465b, 0x3f6b, 0x0000, 0x0000, 0x4359, 0x0000, 0x3678,
+ 0x0000, 0x6e26, 0x4d37, 0x313f, 0x0000, 0x4a57, 0x3261, 0x6e21,
+ 0x6e22, 0x6e23, 0x6e24, 0x463b, 0x4323, 0x3063, 0x6e28, 0x0000,
+ 0x6e29, 0x7423, 0x0000, 0x0000, 0x423d, 0x0000, 0x6e2a, 0x0000,
+ 0x3173, 0x414c, 0x0000, 0x382f, 0x0000, 0x4d5a, 0x0000, 0x0000,
+ 0x6e2b, 0x452c, 0x0000, 0x0000, 0x0000, 0x4178, 0x3c57, 0x6e2c,
+ 0x0000, 0x0000, 0x6e2f, 0x0000, 0x0000, 0x3d65, 0x6e2d, 0x412b,
+ 0x412a, 0x0000, 0x3064, 0x0000, 0x4e4b, 0x6e31, 0x0000, 0x4872,
+ 0x6e33, 0x6e32, 0x6e30, 0x6364, 0x3454, 0x0000, 0x0000, 0x6d6e,
+ 0x0000, 0x6e35, 0x6e34, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e36,
+ 0x0000, 0x4d38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4661, 0x0000, 0x0000, 0x4b2e, 0x0000,
+ 0x6e37, 0x0000, 0x3c59, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e38,
+ 0x0000, 0x6e39, 0x0000, 0x0000, 0x0000, 0x6e3a, 0x0000, 0x0000,
+ 0x4521, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x306a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3959, 0x0000, 0x0000, 0x0000, 0x4f3a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6e3e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3734, 0x6e3b, 0x0000, 0x6e3c, 0x0000, 0x0000, 0x0000,
+ 0x4974, 0x0000, 0x0000, 0x0000, 0x0000, 0x3354, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d39, 0x0000, 0x363f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4554, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_91[] = {
+ /* 0x9100 - 0x91ff */
+ 0x0000, 0x0000, 0x6e3f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6e40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6e41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4522, 0x0000, 0x0000,
+ 0x6e43, 0x0000, 0x6e42, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4653, 0x6e44, 0x3d36, 0x3c60, 0x475b, 0x4371, 0x0000,
+ 0x0000, 0x0000, 0x3c72, 0x0000, 0x3f6c, 0x0000, 0x6e45, 0x0000,
+ 0x6e46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3f5d, 0x6e47, 0x0000, 0x6e48, 0x0000, 0x0000,
+ 0x0000, 0x6e49, 0x4d6f, 0x0000, 0x3d37, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6e4b, 0x6e4a, 0x0000, 0x395a, 0x0000, 0x3973,
+ 0x3b40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6e4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d66,
+ 0x0000, 0x6e4d, 0x0000, 0x6e4c, 0x0000, 0x4269, 0x0000, 0x0000,
+ 0x386f, 0x0000, 0x4043, 0x0000, 0x0000, 0x0000, 0x0000, 0x4830,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3d39, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6e4f, 0x0000, 0x3e5f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6e52, 0x6e50, 0x0000, 0x0000, 0x0000, 0x6e51,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6e54, 0x6e53, 0x0000, 0x0000,
+ 0x3e7a, 0x0000, 0x6e55, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6e56, 0x6e57, 0x0000, 0x0000, 0x0000, 0x0000, 0x4850, 0x3a53,
+ 0x3c61, 0x6e58, 0x0000, 0x6e59, 0x4e24, 0x3d45, 0x4c6e, 0x4e4c,
+ 0x6e5a, 0x3662, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e5b, 0x0000,
+ 0x4523, 0x0000, 0x0000, 0x6e5e, 0x3378, 0x3f4b, 0x0000, 0x6e5c,
+ 0x0000, 0x6e5d, 0x0000, 0x4460, 0x0000, 0x0000, 0x4b55, 0x367c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e60, 0x6e61, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6e5f, 0x0000, 0x0000, 0x6e63,
+};
+
+static unsigned short const unicode_to_jisx0208_92[] = {
+ /* 0x9200 - 0x92ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x465f, 0x3343, 0x0000,
+ 0x0000, 0x6e67, 0x0000, 0x0000, 0x6e64, 0x6e66, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e62, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6f4f, 0x0000, 0x0000, 0x6e65, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4e6b, 0x0000, 0x0000, 0x385a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e6f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4534, 0x6e6a, 0x0000, 0x0000,
+ 0x6e6d, 0x6e6b, 0x0000, 0x6e70, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6e71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e69,
+ 0x0000, 0x0000, 0x6e76, 0x3174, 0x0000, 0x0000, 0x6e68, 0x0000,
+ 0x0000, 0x0000, 0x482d, 0x0000, 0x6e6c, 0x0000, 0x3e60, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x395b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b48, 0x0000,
+ 0x3664, 0x0000, 0x0000, 0x3d46, 0x0000, 0x463c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x412d, 0x0000, 0x6e74, 0x0000, 0x6e6e, 0x6e73, 0x0000,
+ 0x4c43, 0x0000, 0x4438, 0x6e75, 0x6e72, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x412c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e79,
+ 0x0000, 0x6e78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e77,
+ 0x0000, 0x0000, 0x4b2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3d7b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6e7a, 0x4a5f, 0x0000, 0x0000, 0x3154, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4946, 0x4372, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3578, 0x0000, 0x6e7c, 0x0000, 0x395d, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_93[] = {
+ /* 0x9300 - 0x93ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b2c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e7b,
+ 0x3f6d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3f6e, 0x6f21, 0x6f23, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3e7b, 0x0000, 0x6f22, 0x6f24, 0x0000, 0x0000, 0x3653, 0x0000,
+ 0x4945, 0x0000, 0x0000, 0x3c62, 0x4f23, 0x0000, 0x6e7e, 0x3a78,
+ 0x0000, 0x0000, 0x4f3f, 0x0000, 0x0000, 0x6f26, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6f25, 0x6f27, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6e7d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4669, 0x0000, 0x4555, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4457, 0x0000, 0x6f2c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4343, 0x6f28, 0x0000, 0x0000, 0x0000,
+ 0x6f29, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x372d, 0x0000, 0x6f2b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3830, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6f2a, 0x0000, 0x3e61, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3379, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6f30, 0x0000, 0x3a3f, 0x4179,
+ 0x0000, 0x0000, 0x444a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x333b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6f2e, 0x6f2f, 0x4443, 0x0000,
+ 0x6f2d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6f31, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6f37, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6f3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6f39, 0x452d, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f32, 0x6f33,
+ 0x6f36, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f38, 0x0000, 0x0000,
+ 0x0000, 0x3640, 0x0000, 0x0000, 0x6f3b, 0x6f35, 0x0000, 0x0000,
+ 0x6f34, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_94[] = {
+ /* 0x9400 - 0x94ff */
+ 0x0000, 0x0000, 0x0000, 0x6f3f, 0x0000, 0x0000, 0x0000, 0x6f40,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6f41, 0x0000, 0x0000, 0x6f3e, 0x6f3d, 0x0000, 0x0000, 0x0000,
+ 0x3e62, 0x462a, 0x6f3c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6f45, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6f43, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f44, 0x6f42, 0x0000,
+ 0x4278, 0x0000, 0x6f46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6f47, 0x0000, 0x0000, 0x6f49, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3455, 0x6f48, 0x4c7a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6f54, 0x6f4a, 0x0000, 0x0000, 0x6f4d, 0x0000,
+ 0x6f4b, 0x0000, 0x6f4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6f4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6f50, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f51, 0x0000, 0x6f52,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6f55, 0x6f53, 0x6f56, 0x6f58,
+ 0x0000, 0x6f57, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_95[] = {
+ /* 0x9500 - 0x95ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4439,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4c67, 0x0000, 0x6f59, 0x412e, 0x0000, 0x0000, 0x0000, 0x6f5a,
+ 0x0000, 0x4a44, 0x6f5b, 0x332b, 0x0000, 0x0000, 0x0000, 0x313c,
+ 0x0000, 0x3457, 0x0000, 0x3456, 0x6f5c, 0x0000, 0x6f5d, 0x0000,
+ 0x6f5e, 0x6f5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6f60, 0x0000, 0x3458, 0x3355, 0x395e, 0x4836, 0x0000, 0x6f62,
+ 0x6f61, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f63, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x315c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6f66, 0x0000, 0x6f65, 0x6f64, 0x0000, 0x6f67, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6f6a, 0x0000, 0x0000, 0x0000, 0x3047,
+ 0x0000, 0x0000, 0x6f68, 0x0000, 0x6f6c, 0x6f6b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6f6e, 0x6f6d, 0x6f6f, 0x0000,
+ 0x462e, 0x0000, 0x0000, 0x0000, 0x6f70, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6f71, 0x6f73, 0x0000, 0x0000, 0x6f72, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_96[] = {
+ /* 0x9600 - 0x96ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x496c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6f74, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6f75, 0x0000, 0x3a65, 0x0000, 0x0000, 0x0000, 0x6f76, 0x6f77,
+ 0x0000, 0x0000, 0x4b49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x414b, 0x0000, 0x0000, 0x0000, 0x3024,
+ 0x424b, 0x0000, 0x6f78, 0x0000, 0x496d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6f7b, 0x6f79, 0x395f, 0x0000, 0x6f7a,
+ 0x3842, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4a45, 0x6f7d, 0x7021, 0x6f7e, 0x7022,
+ 0x0000, 0x0000, 0x3121, 0x3f58, 0x3d7c, 0x3459, 0x7023, 0x0000,
+ 0x0000, 0x0000, 0x4766, 0x0000, 0x7025, 0x0000, 0x0000, 0x0000,
+ 0x3122, 0x0000, 0x7024, 0x4444, 0x0000, 0x4e4d, 0x462b, 0x6f7c,
+ 0x4e26, 0x0000, 0x3831, 0x0000, 0x0000, 0x4d5b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3679, 0x4e34, 0x0000,
+ 0x3728, 0x0000, 0x4262, 0x6721, 0x0000, 0x7026, 0x332c, 0x3f6f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3356, 0x7028, 0x0000, 0x7029,
+ 0x7027, 0x3764, 0x0000, 0x3a5d, 0x3e63, 0x0000, 0x0000, 0x0000,
+ 0x3123, 0x0000, 0x0000, 0x4e59, 0x0000, 0x0000, 0x0000, 0x702b,
+ 0x6e2e, 0x0000, 0x702a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x702e, 0x702c, 0x702d, 0x0000, 0x702f, 0x0000, 0x7030, 0x4e6c,
+ 0x7031, 0x7032, 0x0000, 0x4049, 0x483b, 0x0000, 0x0000, 0x0000,
+ 0x3f7d, 0x3467, 0x0000, 0x0000, 0x4d3a, 0x326d, 0x3d38, 0x385b,
+ 0x0000, 0x7035, 0x0000, 0x7034, 0x3b73, 0x7036, 0x7033, 0x0000,
+ 0x0000, 0x3b28, 0x0000, 0x0000, 0x0000, 0x703a, 0x6a2d, 0x0000,
+ 0x0000, 0x5256, 0x0000, 0x3f77, 0x7038, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4e25, 0x4671, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x312b, 0x0000, 0x4063, 0x3c36, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4a37, 0x0000, 0x3140, 0x0000, 0x0000, 0x0000, 0x4e6d, 0x4d6b,
+ 0x0000, 0x703b, 0x0000, 0x4545, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_97[] = {
+ /* 0x9700 - 0x97ff */
+ 0x3c7b, 0x0000, 0x0000, 0x0000, 0x703c, 0x0000, 0x703d, 0x3f4c,
+ 0x703e, 0x0000, 0x4e6e, 0x0000, 0x0000, 0x7039, 0x7040, 0x7042,
+ 0x0000, 0x7041, 0x0000, 0x703f, 0x0000, 0x0000, 0x7043, 0x0000,
+ 0x0000, 0x7044, 0x0000, 0x0000, 0x417a, 0x0000, 0x3262, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7045, 0x0000, 0x0000, 0x4c38,
+ 0x0000, 0x0000, 0x7046, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7047, 0x0000, 0x4f2a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5b31, 0x7048, 0x0000, 0x0000, 0x0000, 0x7049, 0x704a, 0x0000,
+ 0x0000, 0x0000, 0x704e, 0x0000, 0x704b, 0x0000, 0x704c, 0x0000,
+ 0x704d, 0x704f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4044, 0x0000, 0x0000, 0x0000, 0x4c77, 0x0000,
+ 0x0000, 0x4045, 0x0000, 0x0000, 0x7050, 0x0000, 0x4873, 0x0000,
+ 0x7051, 0x7353, 0x4c4c, 0x0000, 0x7052, 0x0000, 0x7053, 0x0000,
+ 0x7054, 0x3357, 0x0000, 0x7056, 0x0000, 0x3f59, 0x0000, 0x0000,
+ 0x0000, 0x7057, 0x0000, 0x0000, 0x3724, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7058, 0x705c, 0x0000, 0x705a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x705b, 0x0000, 0x0000, 0x3373, 0x7059, 0x705d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x705e, 0x0000, 0x3048, 0x0000, 0x705f,
+ 0x7060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3e64, 0x0000, 0x0000, 0x0000, 0x7061, 0x0000, 0x0000, 0x0000,
+ 0x3547, 0x0000, 0x0000, 0x7064, 0x0000, 0x0000, 0x7063, 0x0000,
+ 0x7062, 0x0000, 0x0000, 0x6b71, 0x0000, 0x4a5c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7065, 0x7066, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7067, 0x0000, 0x0000, 0x7068, 0x0000,
+ 0x7069, 0x0000, 0x0000, 0x706a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x345a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x706b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x706c, 0x4723, 0x0000,
+ 0x0000, 0x0000, 0x706e, 0x323b, 0x0000, 0x7071, 0x7070, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3124, 0x0000, 0x0000, 0x0000, 0x3641,
+};
+
+static unsigned short const unicode_to_jisx0208_98[] = {
+ /* 0x9800 - 0x98ff */
+ 0x0000, 0x4a47, 0x443a, 0x3a22, 0x0000, 0x3960, 0x3d67, 0x0000,
+ 0x3f5c, 0x0000, 0x0000, 0x0000, 0x7073, 0x0000, 0x0000, 0x7072,
+ 0x4d42, 0x3468, 0x4852, 0x465c, 0x0000, 0x0000, 0x0000, 0x3f7c,
+ 0x4e4e, 0x0000, 0x375b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7076, 0x0000, 0x0000, 0x7075, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4b4b, 0x462c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3150, 0x0000, 0x0000, 0x7077,
+ 0x7074, 0x0000, 0x0000, 0x4951, 0x4d6a, 0x7078, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7079, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x707b, 0x426a, 0x335b, 0x335c, 0x707a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3469, 0x3832, 0x0000, 0x0000,
+ 0x346a, 0x0000, 0x0000, 0x453f, 0x0000, 0x0000, 0x4e60, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x385c,
+ 0x0000, 0x0000, 0x0000, 0x707c, 0x0000, 0x0000, 0x0000, 0x707d,
+ 0x707e, 0x7121, 0x0000, 0x7123, 0x7122, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4977, 0x0000, 0x7124, 0x0000, 0x0000, 0x0000, 0x0000, 0x7125,
+ 0x0000, 0x7126, 0x0000, 0x0000, 0x0000, 0x0000, 0x7127, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7129, 0x7128, 0x0000, 0x712a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4874, 0x664c, 0x0000, 0x0000, 0x3f29,
+ 0x0000, 0x0000, 0x3532, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x712b, 0x0000, 0x712c, 0x0000, 0x522c, 0x5d3b, 0x4853,
+ 0x0000, 0x0000, 0x307b, 0x0000, 0x303b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3b74, 0x4b30, 0x3e7e, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_99[] = {
+ /* 0x9900 - 0x99ff */
+ 0x0000, 0x0000, 0x0000, 0x712d, 0x0000, 0x4c5f, 0x0000, 0x0000,
+ 0x0000, 0x712e, 0x4d5c, 0x0000, 0x3142, 0x0000, 0x0000, 0x0000,
+ 0x3b41, 0x0000, 0x712f, 0x326e, 0x7130, 0x0000, 0x0000, 0x0000,
+ 0x7131, 0x0000, 0x0000, 0x0000, 0x0000, 0x7133, 0x7134, 0x0000,
+ 0x7136, 0x7132, 0x0000, 0x0000, 0x7135, 0x0000, 0x0000, 0x0000,
+ 0x345b, 0x0000, 0x0000, 0x0000, 0x7137, 0x0000, 0x7138, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7139, 0x713a, 0x0000,
+ 0x0000, 0x0000, 0x713b, 0x0000, 0x0000, 0x713d, 0x0000, 0x0000,
+ 0x0000, 0x713c, 0x0000, 0x713f, 0x7142, 0x0000, 0x0000, 0x0000,
+ 0x713e, 0x7140, 0x7141, 0x0000, 0x0000, 0x7143, 0x0000, 0x3642,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c73, 0x7144,
+ 0x7145, 0x3961, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7146, 0x0000, 0x0000,
+ 0x333e, 0x0000, 0x0000, 0x0000, 0x474f, 0x7147, 0x7148, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x435a, 0x466b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7149, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x477d, 0x0000, 0x0000, 0x424c, 0x3158, 0x366e, 0x0000,
+ 0x366f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4373, 0x714e, 0x3670, 0x0000, 0x0000, 0x326f, 0x0000, 0x0000,
+ 0x714d, 0x0000, 0x0000, 0x714b, 0x0000, 0x714c, 0x0000, 0x714a,
+ 0x0000, 0x0000, 0x7158, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x714f, 0x7150, 0x0000,
+ 0x0000, 0x7151, 0x7152, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7154, 0x0000, 0x0000, 0x7153, 0x0000, 0x0000, 0x0000, 0x3d59,
+};
+
+static unsigned short const unicode_to_jisx0208_9a[] = {
+ /* 0x9a00 - 0x9aff */
+ 0x0000, 0x7155, 0x0000, 0x0000, 0x0000, 0x7157, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3533, 0x7156,
+ 0x0000, 0x0000, 0x417b, 0x3833, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7159, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x424d, 0x0000, 0x0000, 0x715a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x462d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x715b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7160, 0x0000,
+ 0x715e, 0x0000, 0x715d, 0x715f, 0x0000, 0x715c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7162, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7161, 0x0000, 0x7164,
+ 0x0000, 0x0000, 0x3643, 0x7163, 0x0000, 0x0000, 0x0000, 0x7165,
+ 0x0000, 0x0000, 0x7166, 0x0000, 0x7168, 0x7167, 0x0000, 0x0000,
+ 0x0000, 0x7169, 0x716b, 0x716a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x397c, 0x0000, 0x0000, 0x0000, 0x0000, 0x716c, 0x0000, 0x0000,
+ 0x716d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x333c, 0x0000, 0x0000, 0x0000, 0x716e, 0x0000, 0x0000, 0x0000,
+ 0x716f, 0x0000, 0x0000, 0x0000, 0x3f71, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7170,
+ 0x0000, 0x7171, 0x0000, 0x7172, 0x7173, 0x0000, 0x0000, 0x0000,
+ 0x3962, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7174, 0x7175,
+ 0x0000, 0x0000, 0x7176, 0x7177, 0x0000, 0x0000, 0x7178, 0x0000,
+ 0x0000, 0x0000, 0x4831, 0x717a, 0x0000, 0x4926, 0x717b, 0x7179,
+ 0x0000, 0x717d, 0x0000, 0x0000, 0x717c, 0x0000, 0x0000, 0x717e,
+ 0x0000, 0x0000, 0x0000, 0x7221, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_9b[] = {
+ /* 0x9b00 - 0x9bff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7222, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7223, 0x0000, 0x7224, 0x0000, 0x0000, 0x0000, 0x0000, 0x7225,
+ 0x0000, 0x0000, 0x7226, 0x7227, 0x0000, 0x7228, 0x0000, 0x7229,
+ 0x722a, 0x722b, 0x722c, 0x0000, 0x0000, 0x0000, 0x722d, 0x722e,
+ 0x0000, 0x5d35, 0x722f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6478, 0x3534, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3321, 0x3a32, 0x7231, 0x7230, 0x4c25, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7233, 0x7234, 0x7232,
+ 0x0000, 0x7235, 0x0000, 0x0000, 0x4b62, 0x0000, 0x0000, 0x0000,
+ 0x7236, 0x0000, 0x357b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f25,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7237, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7239, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x303e, 0x0000,
+ 0x0000, 0x723a, 0x4a2b, 0x7238, 0x0000, 0x0000, 0x723b, 0x723c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x723d,
+ 0x723e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x723f, 0x0000, 0x4b6e, 0x3b2d, 0x0000, 0x3a7a, 0x412f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7240, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7243, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7241, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7244, 0x0000,
+ 0x0000, 0x3871, 0x7242, 0x0000, 0x0000, 0x0000, 0x0000, 0x7245,
+ 0x0000, 0x7246, 0x7247, 0x0000, 0x724b, 0x0000, 0x3b2a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4264, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x724c, 0x7249, 0x7248, 0x724a, 0x0000, 0x0000, 0x0000,
+ 0x375f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7250, 0x724f, 0x724e, 0x0000, 0x0000, 0x3033, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_9c[] = {
+ /* 0x9c00 - 0x9cff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x725a, 0x0000, 0x7256, 0x0000,
+ 0x7257, 0x7253, 0x7259, 0x0000, 0x7255, 0x3362, 0x0000, 0x0000,
+ 0x4f4c, 0x0000, 0x7258, 0x7254, 0x7252, 0x7251, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x725c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x725f, 0x0000, 0x0000, 0x725e, 0x725d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4949, 0x725b, 0x3073,
+ 0x7260, 0x0000, 0x7262, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x336f, 0x724d, 0x3137, 0x0000, 0x0000, 0x7264, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7263, 0x7261,
+ 0x432d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4b70, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e5a,
+ 0x0000, 0x0000, 0x7265, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7266, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7267,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7268, 0x0000,
+ 0x7269, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x443b, 0x0000, 0x726a,
+ 0x0000, 0x4837, 0x0000, 0x726f, 0x726b, 0x0000, 0x0000, 0x0000,
+ 0x726c, 0x0000, 0x0000, 0x4b31, 0x4c44, 0x0000, 0x4650, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_9d[] = {
+ /* 0x9d00 - 0x9dff */
+ 0x0000, 0x0000, 0x0000, 0x7270, 0x0000, 0x0000, 0x7271, 0x463e,
+ 0x726e, 0x726d, 0x0000, 0x0000, 0x0000, 0x0000, 0x322a, 0x0000,
+ 0x0000, 0x0000, 0x7279, 0x0000, 0x0000, 0x7278, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3175, 0x0000, 0x0000, 0x0000, 0x7276,
+ 0x0000, 0x0000, 0x0000, 0x7275, 0x0000, 0x0000, 0x7273, 0x0000,
+ 0x337b, 0x0000, 0x7272, 0x3c32, 0x3229, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3963, 0x0000, 0x0000, 0x727c, 0x727b,
+ 0x0000, 0x727a, 0x0000, 0x0000, 0x7277, 0x0000, 0x727d, 0x0000,
+ 0x727e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7325, 0x7324, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7326, 0x0000, 0x0000, 0x312d, 0x7321, 0x7322, 0x0000,
+ 0x3974, 0x4c39, 0x0000, 0x0000, 0x7323, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4b32, 0x0000, 0x0000, 0x732b,
+ 0x0000, 0x0000, 0x7327, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x732c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7329,
+ 0x0000, 0x7328, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x375c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x732d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x732e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x732f, 0x0000, 0x732a, 0x0000, 0x0000, 0x0000, 0x7274,
+ 0x0000, 0x0000, 0x7330, 0x0000, 0x4461, 0x0000, 0x0000, 0x0000,
+ 0x7334, 0x0000, 0x7335, 0x7333, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7332, 0x7338, 0x0000, 0x7331, 0x0000, 0x7336, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7337,
+ 0x0000, 0x0000, 0x0000, 0x733a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7339, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x733c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x733d, 0x0000, 0x733e,
+ 0x0000, 0x0000, 0x4f49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x733b, 0x426b, 0x3a6d, 0x0000, 0x0000, 0x733f, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_9e[] = {
+ /* 0x9e00 - 0x9eff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x7340, 0x7341, 0x0000, 0x0000, 0x7342, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7343, 0x0000, 0x0000,
+ 0x3834, 0x7344, 0x0000, 0x0000, 0x0000, 0x7345, 0x0000, 0x3c2f,
+ 0x0000, 0x7346, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7347, 0x0000, 0x0000, 0x7348, 0x7349, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x734c, 0x734a, 0x4f3c, 0x0000, 0x734b, 0x0000, 0x4e6f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x734d, 0x0000, 0x4e5b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x734e, 0x477e, 0x0000,
+ 0x0000, 0x734f, 0x7351, 0x0000, 0x0000, 0x7352, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7350, 0x396d, 0x4c4d, 0x4b63, 0x5677, 0x0000, 0x5d60, 0x4b7b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x322b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7354, 0x3550, 0x7355, 0x7356,
+ 0x7357, 0x0000, 0x3975, 0x0000, 0x7358, 0x0000, 0x0000, 0x0000,
+ 0x6054, 0x4c5b, 0x0000, 0x4263, 0x7359, 0x735b, 0x735a, 0x0000,
+ 0x735c, 0x0000, 0x0000, 0x0000, 0x0000, 0x735d, 0x0000, 0x0000,
+ 0x735e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x735f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7360, 0x0000, 0x7361, 0x7362,
+ 0x0000, 0x7363, 0x0000, 0x7364, 0x7365, 0x7366, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_9f[] = {
+ /* 0x9f00 - 0x9fff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7367,
+ 0x7368, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4524, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x385d, 0x0000, 0x736a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x414d, 0x736b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x736c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4921, 0x0000, 0x0000, 0x736d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x736e, 0x6337, 0x0000, 0x0000, 0x6c5a, 0x706d,
+ 0x0000, 0x0000, 0x736f, 0x0000, 0x7370, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7372,
+ 0x7373, 0x7374, 0x4e70, 0x7371, 0x0000, 0x0000, 0x7375, 0x7376,
+ 0x0000, 0x0000, 0x7378, 0x0000, 0x7377, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x737a, 0x0000, 0x0000, 0x0000, 0x737b, 0x7379,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e36, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x737c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x737d, 0x6354, 0x0000, 0x0000,
+ 0x737e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0208_ff[] = {
+ /* 0xff00 - 0xffff */
+ 0x0000, 0x212a, 0x2149, 0x2174, 0x2170, 0x2173, 0x2175, 0x216d,
+ 0x214a, 0x214b, 0x2176, 0x215c, 0x2124, 0x213e, 0x2125, 0x213f,
+ 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337,
+ 0x2338, 0x2339, 0x2127, 0x2128, 0x2163, 0x2161, 0x2164, 0x2129,
+ 0x2177, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347,
+ 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, 0x234f,
+ 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357,
+ 0x2358, 0x2359, 0x235a, 0x214e, 0x2140, 0x214f, 0x2130, 0x2132,
+ 0x212e, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367,
+ 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, 0x236f,
+ 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, 0x2377,
+ 0x2378, 0x2379, 0x237a, 0x2150, 0x2143, 0x2151, 0x2141, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2131, 0x0000, 0x216f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const * const unicode_to_jisx0208_map[0x100] = {
+ /* 0x00XX - 0x0fXX */
+ unicode_to_jisx0208_00,
+ 0, 0,
+ unicode_to_jisx0208_03,
+ unicode_to_jisx0208_04,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 0x10XX - 0x1fXX */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 0x20XX - 0x2fXX */
+ unicode_to_jisx0208_20,
+ unicode_to_jisx0208_21,
+ unicode_to_jisx0208_22,
+ unicode_to_jisx0208_23,
+ unicode_to_jisx0208_24,
+ unicode_to_jisx0208_25,
+ unicode_to_jisx0208_26,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 0x30XX - 0x3fXX */
+ unicode_to_jisx0208_30,
+ 0,
+ unicode_to_jisx0208_32,
+ unicode_to_jisx0208_33,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 0x40XX - 0x4fXX */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ unicode_to_jisx0208_4e,
+ unicode_to_jisx0208_4f,
+ /* 0x50XX - 0x5fXX */
+ unicode_to_jisx0208_50,
+ unicode_to_jisx0208_51,
+ unicode_to_jisx0208_52,
+ unicode_to_jisx0208_53,
+ unicode_to_jisx0208_54,
+ unicode_to_jisx0208_55,
+ unicode_to_jisx0208_56,
+ unicode_to_jisx0208_57,
+ unicode_to_jisx0208_58,
+ unicode_to_jisx0208_59,
+ unicode_to_jisx0208_5a,
+ unicode_to_jisx0208_5b,
+ unicode_to_jisx0208_5c,
+ unicode_to_jisx0208_5d,
+ unicode_to_jisx0208_5e,
+ unicode_to_jisx0208_5f,
+ /* 0x60XX - 0x6fXX */
+ unicode_to_jisx0208_60,
+ unicode_to_jisx0208_61,
+ unicode_to_jisx0208_62,
+ unicode_to_jisx0208_63,
+ unicode_to_jisx0208_64,
+ unicode_to_jisx0208_65,
+ unicode_to_jisx0208_66,
+ unicode_to_jisx0208_67,
+ unicode_to_jisx0208_68,
+ unicode_to_jisx0208_69,
+ unicode_to_jisx0208_6a,
+ unicode_to_jisx0208_6b,
+ unicode_to_jisx0208_6c,
+ unicode_to_jisx0208_6d,
+ unicode_to_jisx0208_6e,
+ unicode_to_jisx0208_6f,
+ /* 0x70XX - 0x7fXX */
+ unicode_to_jisx0208_70,
+ unicode_to_jisx0208_71,
+ unicode_to_jisx0208_72,
+ unicode_to_jisx0208_73,
+ unicode_to_jisx0208_74,
+ unicode_to_jisx0208_75,
+ unicode_to_jisx0208_76,
+ unicode_to_jisx0208_77,
+ unicode_to_jisx0208_78,
+ unicode_to_jisx0208_79,
+ unicode_to_jisx0208_7a,
+ unicode_to_jisx0208_7b,
+ unicode_to_jisx0208_7c,
+ unicode_to_jisx0208_7d,
+ unicode_to_jisx0208_7e,
+ unicode_to_jisx0208_7f,
+ /* 0x80XX - 0x8fXX */
+ unicode_to_jisx0208_80,
+ unicode_to_jisx0208_81,
+ unicode_to_jisx0208_82,
+ unicode_to_jisx0208_83,
+ unicode_to_jisx0208_84,
+ unicode_to_jisx0208_85,
+ unicode_to_jisx0208_86,
+ unicode_to_jisx0208_87,
+ unicode_to_jisx0208_88,
+ unicode_to_jisx0208_89,
+ unicode_to_jisx0208_8a,
+ unicode_to_jisx0208_8b,
+ unicode_to_jisx0208_8c,
+ unicode_to_jisx0208_8d,
+ unicode_to_jisx0208_8e,
+ unicode_to_jisx0208_8f,
+ /* 0x90XX - 0x9fXX */
+ unicode_to_jisx0208_90,
+ unicode_to_jisx0208_91,
+ unicode_to_jisx0208_92,
+ unicode_to_jisx0208_93,
+ unicode_to_jisx0208_94,
+ unicode_to_jisx0208_95,
+ unicode_to_jisx0208_96,
+ unicode_to_jisx0208_97,
+ unicode_to_jisx0208_98,
+ unicode_to_jisx0208_99,
+ unicode_to_jisx0208_9a,
+ unicode_to_jisx0208_9b,
+ unicode_to_jisx0208_9c,
+ unicode_to_jisx0208_9d,
+ unicode_to_jisx0208_9e,
+ unicode_to_jisx0208_9f,
+ /* 0xa0XX - 0xafXX */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 0xb0XX - 0xbfXX */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 0xc0XX - 0xcfXX */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 0xd0XX - 0xdfXX */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 0xe0XX - 0xefXX */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 0xf0XX - 0xffXX */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ unicode_to_jisx0208_ff,
+};
+
+static uint unicode11ToJisx0208(uint h, uint l)
+{
+ unsigned short const *table;
+
+ table = unicode_to_jisx0208_map[h];
+ if (table != 0) {
+ return table[l];
+ }
+ return 0x0000;
+}
+
+#ifdef USE_JISX0212
+
+/*
+ * This data is derived from Unicode 1.1,
+ * JIS X 0212 (1990) to Unicode mapping table version 0.9 .
+ * (In addition IBM Vender Defined Char included)
+ */
+static unsigned short const jisx0212_to_unicode[] = {
+ /* 0x2121 - 0x217e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2221 - 0x227e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x02d8,
+ 0x02c7, 0x00b8, 0x02d9, 0x02dd, 0x00af, 0x02db, 0x02da, 0x007e,
+ 0x0384, 0x0385, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x00a1, 0x00a6, 0x00bf, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x00ba, 0x00aa, 0x00a9, 0x00ae, 0x2122,
+ 0x00a4, 0x2116, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2321 - 0x237e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2421 - 0x247e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2521 - 0x257e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2621 - 0x267e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0386, 0x0388, 0x0389, 0x038a, 0x03aa, 0x0000, 0x038c,
+ 0x0000, 0x038e, 0x03ab, 0x0000, 0x038f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x03ac, 0x03ad, 0x03ae, 0x03af, 0x03ca, 0x0390, 0x03cc,
+ 0x03c2, 0x03cd, 0x03cb, 0x03b0, 0x03ce, 0x0000, 0x0000,
+ /* 0x2721 - 0x277e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
+ 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x040e, 0x040f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
+ 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x045e, 0x045f,
+ /* 0x2821 - 0x287e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2921 - 0x297e */
+ 0x00c6, 0x0110, 0x0000, 0x0126, 0x0000, 0x0132, 0x0000,
+ 0x0141, 0x013f, 0x0000, 0x014a, 0x00d8, 0x0152, 0x0000, 0x0166,
+ 0x00de, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138,
+ 0x0142, 0x0140, 0x0149, 0x014b, 0x00f8, 0x0153, 0x00df, 0x0167,
+ 0x00fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2a21 - 0x2a7e */
+ 0x00c1, 0x00c0, 0x00c4, 0x00c2, 0x0102, 0x01cd, 0x0100,
+ 0x0104, 0x00c5, 0x00c3, 0x0106, 0x0108, 0x010c, 0x00c7, 0x010a,
+ 0x010e, 0x00c9, 0x00c8, 0x00cb, 0x00ca, 0x011a, 0x0116, 0x0112,
+ 0x0118, 0x0000, 0x011c, 0x011e, 0x0122, 0x0120, 0x0124, 0x00cd,
+ 0x00cc, 0x00cf, 0x00ce, 0x01cf, 0x0130, 0x012a, 0x012e, 0x0128,
+ 0x0134, 0x0136, 0x0139, 0x013d, 0x013b, 0x0143, 0x0147, 0x0145,
+ 0x00d1, 0x00d3, 0x00d2, 0x00d6, 0x00d4, 0x01d1, 0x0150, 0x014c,
+ 0x00d5, 0x0154, 0x0158, 0x0156, 0x015a, 0x015c, 0x0160, 0x015e,
+ 0x0164, 0x0162, 0x00da, 0x00d9, 0x00dc, 0x00db, 0x016c, 0x01d3,
+ 0x0170, 0x016a, 0x0172, 0x016e, 0x0168, 0x01d7, 0x01db, 0x01d9,
+ 0x01d5, 0x0174, 0x00dd, 0x0178, 0x0176, 0x0179, 0x017d, 0x017b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2b21 - 0x2b7e */
+ 0x00e1, 0x00e0, 0x00e4, 0x00e2, 0x0103, 0x01ce, 0x0101,
+ 0x0105, 0x00e5, 0x00e3, 0x0107, 0x0109, 0x010d, 0x00e7, 0x010b,
+ 0x010f, 0x00e9, 0x00e8, 0x00eb, 0x00ea, 0x011b, 0x0117, 0x0113,
+ 0x0119, 0x01f5, 0x011d, 0x011f, 0x0000, 0x0121, 0x0125, 0x00ed,
+ 0x00ec, 0x00ef, 0x00ee, 0x01d0, 0x0000, 0x012b, 0x012f, 0x0129,
+ 0x0135, 0x0137, 0x013a, 0x013e, 0x013c, 0x0144, 0x0148, 0x0146,
+ 0x00f1, 0x00f3, 0x00f2, 0x00f6, 0x00f4, 0x01d2, 0x0151, 0x014d,
+ 0x00f5, 0x0155, 0x0159, 0x0157, 0x015b, 0x015d, 0x0161, 0x015f,
+ 0x0165, 0x0163, 0x00fa, 0x00f9, 0x00fc, 0x00fb, 0x016d, 0x01d4,
+ 0x0171, 0x016b, 0x0173, 0x016f, 0x0169, 0x01d8, 0x01dc, 0x01da,
+ 0x01d6, 0x0175, 0x00fd, 0x00ff, 0x0177, 0x017a, 0x017e, 0x017c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2c21 - 0x2c7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2d21 - 0x2d7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2e21 - 0x2e7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x2f21 - 0x2f7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x3021 - 0x307e */
+ 0x4e02, 0x4e04, 0x4e05, 0x4e0c, 0x4e12, 0x4e1f, 0x4e23,
+ 0x4e24, 0x4e28, 0x4e2b, 0x4e2e, 0x4e2f, 0x4e30, 0x4e35, 0x4e40,
+ 0x4e41, 0x4e44, 0x4e47, 0x4e51, 0x4e5a, 0x4e5c, 0x4e63, 0x4e68,
+ 0x4e69, 0x4e74, 0x4e75, 0x4e79, 0x4e7f, 0x4e8d, 0x4e96, 0x4e97,
+ 0x4e9d, 0x4eaf, 0x4eb9, 0x4ec3, 0x4ed0, 0x4eda, 0x4edb, 0x4ee0,
+ 0x4ee1, 0x4ee2, 0x4ee8, 0x4eef, 0x4ef1, 0x4ef3, 0x4ef5, 0x4efd,
+ 0x4efe, 0x4eff, 0x4f00, 0x4f02, 0x4f03, 0x4f08, 0x4f0b, 0x4f0c,
+ 0x4f12, 0x4f15, 0x4f16, 0x4f17, 0x4f19, 0x4f2e, 0x4f31, 0x4f60,
+ 0x4f33, 0x4f35, 0x4f37, 0x4f39, 0x4f3b, 0x4f3e, 0x4f40, 0x4f42,
+ 0x4f48, 0x4f49, 0x4f4b, 0x4f4c, 0x4f52, 0x4f54, 0x4f56, 0x4f58,
+ 0x4f5f, 0x4f63, 0x4f6a, 0x4f6c, 0x4f6e, 0x4f71, 0x4f77, 0x4f78,
+ 0x4f79, 0x4f7a, 0x4f7d, 0x4f7e, 0x4f81, 0x4f82, 0x4f84,
+ /* 0x3121 - 0x317e */
+ 0x4f85, 0x4f89, 0x4f8a, 0x4f8c, 0x4f8e, 0x4f90, 0x4f92,
+ 0x4f93, 0x4f94, 0x4f97, 0x4f99, 0x4f9a, 0x4f9e, 0x4f9f, 0x4fb2,
+ 0x4fb7, 0x4fb9, 0x4fbb, 0x4fbc, 0x4fbd, 0x4fbe, 0x4fc0, 0x4fc1,
+ 0x4fc5, 0x4fc6, 0x4fc8, 0x4fc9, 0x4fcb, 0x4fcc, 0x4fcd, 0x4fcf,
+ 0x4fd2, 0x4fdc, 0x4fe0, 0x4fe2, 0x4ff0, 0x4ff2, 0x4ffc, 0x4ffd,
+ 0x4fff, 0x5000, 0x5001, 0x5004, 0x5007, 0x500a, 0x500c, 0x500e,
+ 0x5010, 0x5013, 0x5017, 0x5018, 0x501b, 0x501c, 0x501d, 0x501e,
+ 0x5022, 0x5027, 0x502e, 0x5030, 0x5032, 0x5033, 0x5035, 0x5040,
+ 0x5041, 0x5042, 0x5045, 0x5046, 0x504a, 0x504c, 0x504e, 0x5051,
+ 0x5052, 0x5053, 0x5057, 0x5059, 0x505f, 0x5060, 0x5062, 0x5063,
+ 0x5066, 0x5067, 0x506a, 0x506d, 0x5070, 0x5071, 0x503b, 0x5081,
+ 0x5083, 0x5084, 0x5086, 0x508a, 0x508e, 0x508f, 0x5090,
+ /* 0x3221 - 0x327e */
+ 0x5092, 0x5093, 0x5094, 0x5096, 0x509b, 0x509c, 0x509e,
+ 0x509f, 0x50a0, 0x50a1, 0x50a2, 0x50aa, 0x50af, 0x50b0, 0x50b9,
+ 0x50ba, 0x50bd, 0x50c0, 0x50c3, 0x50c4, 0x50c7, 0x50cc, 0x50ce,
+ 0x50d0, 0x50d3, 0x50d4, 0x50d8, 0x50dc, 0x50dd, 0x50df, 0x50e2,
+ 0x50e4, 0x50e6, 0x50e8, 0x50e9, 0x50ef, 0x50f1, 0x50f6, 0x50fa,
+ 0x50fe, 0x5103, 0x5106, 0x5107, 0x5108, 0x510b, 0x510c, 0x510d,
+ 0x510e, 0x50f2, 0x5110, 0x5117, 0x5119, 0x511b, 0x511c, 0x511d,
+ 0x511e, 0x5123, 0x5127, 0x5128, 0x512c, 0x512d, 0x512f, 0x5131,
+ 0x5133, 0x5134, 0x5135, 0x5138, 0x5139, 0x5142, 0x514a, 0x514f,
+ 0x5153, 0x5155, 0x5157, 0x5158, 0x515f, 0x5164, 0x5166, 0x517e,
+ 0x5183, 0x5184, 0x518b, 0x518e, 0x5198, 0x519d, 0x51a1, 0x51a3,
+ 0x51ad, 0x51b8, 0x51ba, 0x51bc, 0x51be, 0x51bf, 0x51c2,
+ /* 0x3321 - 0x337e */
+ 0x51c8, 0x51cf, 0x51d1, 0x51d2, 0x51d3, 0x51d5, 0x51d8,
+ 0x51de, 0x51e2, 0x51e5, 0x51ee, 0x51f2, 0x51f3, 0x51f4, 0x51f7,
+ 0x5201, 0x5202, 0x5205, 0x5212, 0x5213, 0x5215, 0x5216, 0x5218,
+ 0x5222, 0x5228, 0x5231, 0x5232, 0x5235, 0x523c, 0x5245, 0x5249,
+ 0x5255, 0x5257, 0x5258, 0x525a, 0x525c, 0x525f, 0x5260, 0x5261,
+ 0x5266, 0x526e, 0x5277, 0x5278, 0x5279, 0x5280, 0x5282, 0x5285,
+ 0x528a, 0x528c, 0x5293, 0x5295, 0x5296, 0x5297, 0x5298, 0x529a,
+ 0x529c, 0x52a4, 0x52a5, 0x52a6, 0x52a7, 0x52af, 0x52b0, 0x52b6,
+ 0x52b7, 0x52b8, 0x52ba, 0x52bb, 0x52bd, 0x52c0, 0x52c4, 0x52c6,
+ 0x52c8, 0x52cc, 0x52cf, 0x52d1, 0x52d4, 0x52d6, 0x52db, 0x52dc,
+ 0x52e1, 0x52e5, 0x52e8, 0x52e9, 0x52ea, 0x52ec, 0x52f0, 0x52f1,
+ 0x52f4, 0x52f6, 0x52f7, 0x5300, 0x5303, 0x530a, 0x530b,
+ /* 0x3421 - 0x347e */
+ 0x530c, 0x5311, 0x5313, 0x5318, 0x531b, 0x531c, 0x531e,
+ 0x531f, 0x5325, 0x5327, 0x5328, 0x5329, 0x532b, 0x532c, 0x532d,
+ 0x5330, 0x5332, 0x5335, 0x533c, 0x533d, 0x533e, 0x5342, 0x534c,
+ 0x534b, 0x5359, 0x535b, 0x5361, 0x5363, 0x5365, 0x536c, 0x536d,
+ 0x5372, 0x5379, 0x537e, 0x5383, 0x5387, 0x5388, 0x538e, 0x5393,
+ 0x5394, 0x5399, 0x539d, 0x53a1, 0x53a4, 0x53aa, 0x53ab, 0x53af,
+ 0x53b2, 0x53b4, 0x53b5, 0x53b7, 0x53b8, 0x53ba, 0x53bd, 0x53c0,
+ 0x53c5, 0x53cf, 0x53d2, 0x53d3, 0x53d5, 0x53da, 0x53dd, 0x53de,
+ 0x53e0, 0x53e6, 0x53e7, 0x53f5, 0x5402, 0x5413, 0x541a, 0x5421,
+ 0x5427, 0x5428, 0x542a, 0x542f, 0x5431, 0x5434, 0x5435, 0x5443,
+ 0x5444, 0x5447, 0x544d, 0x544f, 0x545e, 0x5462, 0x5464, 0x5466,
+ 0x5467, 0x5469, 0x546b, 0x546d, 0x546e, 0x5474, 0x547f,
+ /* 0x3521 - 0x357e */
+ 0x5481, 0x5483, 0x5485, 0x5488, 0x5489, 0x548d, 0x5491,
+ 0x5495, 0x5496, 0x549c, 0x549f, 0x54a1, 0x54a6, 0x54a7, 0x54a9,
+ 0x54aa, 0x54ad, 0x54ae, 0x54b1, 0x54b7, 0x54b9, 0x54ba, 0x54bb,
+ 0x54bf, 0x54c6, 0x54ca, 0x54cd, 0x54ce, 0x54e0, 0x54ea, 0x54ec,
+ 0x54ef, 0x54f6, 0x54fc, 0x54fe, 0x54ff, 0x5500, 0x5501, 0x5505,
+ 0x5508, 0x5509, 0x550c, 0x550d, 0x550e, 0x5515, 0x552a, 0x552b,
+ 0x5532, 0x5535, 0x5536, 0x553b, 0x553c, 0x553d, 0x5541, 0x5547,
+ 0x5549, 0x554a, 0x554d, 0x5550, 0x5551, 0x5558, 0x555a, 0x555b,
+ 0x555e, 0x5560, 0x5561, 0x5564, 0x5566, 0x557f, 0x5581, 0x5582,
+ 0x5586, 0x5588, 0x558e, 0x558f, 0x5591, 0x5592, 0x5593, 0x5594,
+ 0x5597, 0x55a3, 0x55a4, 0x55ad, 0x55b2, 0x55bf, 0x55c1, 0x55c3,
+ 0x55c6, 0x55c9, 0x55cb, 0x55cc, 0x55ce, 0x55d1, 0x55d2,
+ /* 0x3621 - 0x367e */
+ 0x55d3, 0x55d7, 0x55d8, 0x55db, 0x55de, 0x55e2, 0x55e9,
+ 0x55f6, 0x55ff, 0x5605, 0x5608, 0x560a, 0x560d, 0x560e, 0x560f,
+ 0x5610, 0x5611, 0x5612, 0x5619, 0x562c, 0x5630, 0x5633, 0x5635,
+ 0x5637, 0x5639, 0x563b, 0x563c, 0x563d, 0x563f, 0x5640, 0x5641,
+ 0x5643, 0x5644, 0x5646, 0x5649, 0x564b, 0x564d, 0x564f, 0x5654,
+ 0x565e, 0x5660, 0x5661, 0x5662, 0x5663, 0x5666, 0x5669, 0x566d,
+ 0x566f, 0x5671, 0x5672, 0x5675, 0x5684, 0x5685, 0x5688, 0x568b,
+ 0x568c, 0x5695, 0x5699, 0x569a, 0x569d, 0x569e, 0x569f, 0x56a6,
+ 0x56a7, 0x56a8, 0x56a9, 0x56ab, 0x56ac, 0x56ad, 0x56b1, 0x56b3,
+ 0x56b7, 0x56be, 0x56c5, 0x56c9, 0x56ca, 0x56cb, 0x56cf, 0x56d0,
+ 0x56cc, 0x56cd, 0x56d9, 0x56dc, 0x56dd, 0x56df, 0x56e1, 0x56e4,
+ 0x56e5, 0x56e6, 0x56e7, 0x56e8, 0x56f1, 0x56eb, 0x56ed,
+ /* 0x3721 - 0x377e */
+ 0x56f6, 0x56f7, 0x5701, 0x5702, 0x5707, 0x570a, 0x570c,
+ 0x5711, 0x5715, 0x571a, 0x571b, 0x571d, 0x5720, 0x5722, 0x5723,
+ 0x5724, 0x5725, 0x5729, 0x572a, 0x572c, 0x572e, 0x572f, 0x5733,
+ 0x5734, 0x573d, 0x573e, 0x573f, 0x5745, 0x5746, 0x574c, 0x574d,
+ 0x5752, 0x5762, 0x5765, 0x5767, 0x5768, 0x576b, 0x576d, 0x576e,
+ 0x576f, 0x5770, 0x5771, 0x5773, 0x5774, 0x5775, 0x5777, 0x5779,
+ 0x577a, 0x577b, 0x577c, 0x577e, 0x5781, 0x5783, 0x578c, 0x5794,
+ 0x5797, 0x5799, 0x579a, 0x579c, 0x579d, 0x579e, 0x579f, 0x57a1,
+ 0x5795, 0x57a7, 0x57a8, 0x57a9, 0x57ac, 0x57b8, 0x57bd, 0x57c7,
+ 0x57c8, 0x57cc, 0x57cf, 0x57d5, 0x57dd, 0x57de, 0x57e4, 0x57e6,
+ 0x57e7, 0x57e9, 0x57ed, 0x57f0, 0x57f5, 0x57f6, 0x57f8, 0x57fd,
+ 0x57fe, 0x57ff, 0x5803, 0x5804, 0x5808, 0x5809, 0x57e1,
+ /* 0x3821 - 0x387e */
+ 0x580c, 0x580d, 0x581b, 0x581e, 0x581f, 0x5820, 0x5826,
+ 0x5827, 0x582d, 0x5832, 0x5839, 0x583f, 0x5849, 0x584c, 0x584d,
+ 0x584f, 0x5850, 0x5855, 0x585f, 0x5861, 0x5864, 0x5867, 0x5868,
+ 0x5878, 0x587c, 0x587f, 0x5880, 0x5881, 0x5887, 0x5888, 0x5889,
+ 0x588a, 0x588c, 0x588d, 0x588f, 0x5890, 0x5894, 0x5896, 0x589d,
+ 0x58a0, 0x58a1, 0x58a2, 0x58a6, 0x58a9, 0x58b1, 0x58b2, 0x58c4,
+ 0x58bc, 0x58c2, 0x58c8, 0x58cd, 0x58ce, 0x58d0, 0x58d2, 0x58d4,
+ 0x58d6, 0x58da, 0x58dd, 0x58e1, 0x58e2, 0x58e9, 0x58f3, 0x5905,
+ 0x5906, 0x590b, 0x590c, 0x5912, 0x5913, 0x5914, 0x8641, 0x591d,
+ 0x5921, 0x5923, 0x5924, 0x5928, 0x592f, 0x5930, 0x5933, 0x5935,
+ 0x5936, 0x593f, 0x5943, 0x5946, 0x5952, 0x5953, 0x5959, 0x595b,
+ 0x595d, 0x595e, 0x595f, 0x5961, 0x5963, 0x596b, 0x596d,
+ /* 0x3921 - 0x397e */
+ 0x596f, 0x5972, 0x5975, 0x5976, 0x5979, 0x597b, 0x597c,
+ 0x598b, 0x598c, 0x598e, 0x5992, 0x5995, 0x5997, 0x599f, 0x59a4,
+ 0x59a7, 0x59ad, 0x59ae, 0x59af, 0x59b0, 0x59b3, 0x59b7, 0x59ba,
+ 0x59bc, 0x59c1, 0x59c3, 0x59c4, 0x59c8, 0x59ca, 0x59cd, 0x59d2,
+ 0x59dd, 0x59de, 0x59df, 0x59e3, 0x59e4, 0x59e7, 0x59ee, 0x59ef,
+ 0x59f1, 0x59f2, 0x59f4, 0x59f7, 0x5a00, 0x5a04, 0x5a0c, 0x5a0d,
+ 0x5a0e, 0x5a12, 0x5a13, 0x5a1e, 0x5a23, 0x5a24, 0x5a27, 0x5a28,
+ 0x5a2a, 0x5a2d, 0x5a30, 0x5a44, 0x5a45, 0x5a47, 0x5a48, 0x5a4c,
+ 0x5a50, 0x5a55, 0x5a5e, 0x5a63, 0x5a65, 0x5a67, 0x5a6d, 0x5a77,
+ 0x5a7a, 0x5a7b, 0x5a7e, 0x5a8b, 0x5a90, 0x5a93, 0x5a96, 0x5a99,
+ 0x5a9c, 0x5a9e, 0x5a9f, 0x5aa0, 0x5aa2, 0x5aa7, 0x5aac, 0x5ab1,
+ 0x5ab2, 0x5ab3, 0x5ab5, 0x5ab8, 0x5aba, 0x5abb, 0x5abf,
+ /* 0x3a21 - 0x3a7e */
+ 0x5ac4, 0x5ac6, 0x5ac8, 0x5acf, 0x5ada, 0x5adc, 0x5ae0,
+ 0x5ae5, 0x5aea, 0x5aee, 0x5af5, 0x5af6, 0x5afd, 0x5b00, 0x5b01,
+ 0x5b08, 0x5b17, 0x5b34, 0x5b19, 0x5b1b, 0x5b1d, 0x5b21, 0x5b25,
+ 0x5b2d, 0x5b38, 0x5b41, 0x5b4b, 0x5b4c, 0x5b52, 0x5b56, 0x5b5e,
+ 0x5b68, 0x5b6e, 0x5b6f, 0x5b7c, 0x5b7d, 0x5b7e, 0x5b7f, 0x5b81,
+ 0x5b84, 0x5b86, 0x5b8a, 0x5b8e, 0x5b90, 0x5b91, 0x5b93, 0x5b94,
+ 0x5b96, 0x5ba8, 0x5ba9, 0x5bac, 0x5bad, 0x5baf, 0x5bb1, 0x5bb2,
+ 0x5bb7, 0x5bba, 0x5bbc, 0x5bc0, 0x5bc1, 0x5bcd, 0x5bcf, 0x5bd6,
+ 0x5bd7, 0x5bd8, 0x5bd9, 0x5bda, 0x5be0, 0x5bef, 0x5bf1, 0x5bf4,
+ 0x5bfd, 0x5c0c, 0x5c17, 0x5c1e, 0x5c1f, 0x5c23, 0x5c26, 0x5c29,
+ 0x5c2b, 0x5c2c, 0x5c2e, 0x5c30, 0x5c32, 0x5c35, 0x5c36, 0x5c59,
+ 0x5c5a, 0x5c5c, 0x5c62, 0x5c63, 0x5c67, 0x5c68, 0x5c69,
+ /* 0x3b21 - 0x3b7e */
+ 0x5c6d, 0x5c70, 0x5c74, 0x5c75, 0x5c7a, 0x5c7b, 0x5c7c,
+ 0x5c7d, 0x5c87, 0x5c88, 0x5c8a, 0x5c8f, 0x5c92, 0x5c9d, 0x5c9f,
+ 0x5ca0, 0x5ca2, 0x5ca3, 0x5ca6, 0x5caa, 0x5cb2, 0x5cb4, 0x5cb5,
+ 0x5cba, 0x5cc9, 0x5ccb, 0x5cd2, 0x5cdd, 0x5cd7, 0x5cee, 0x5cf1,
+ 0x5cf2, 0x5cf4, 0x5d01, 0x5d06, 0x5d0d, 0x5d12, 0x5d2b, 0x5d23,
+ 0x5d24, 0x5d26, 0x5d27, 0x5d31, 0x5d34, 0x5d39, 0x5d3d, 0x5d3f,
+ 0x5d42, 0x5d43, 0x5d46, 0x5d48, 0x5d55, 0x5d51, 0x5d59, 0x5d4a,
+ 0x5d5f, 0x5d60, 0x5d61, 0x5d62, 0x5d64, 0x5d6a, 0x5d6d, 0x5d70,
+ 0x5d79, 0x5d7a, 0x5d7e, 0x5d7f, 0x5d81, 0x5d83, 0x5d88, 0x5d8a,
+ 0x5d92, 0x5d93, 0x5d94, 0x5d95, 0x5d99, 0x5d9b, 0x5d9f, 0x5da0,
+ 0x5da7, 0x5dab, 0x5db0, 0x5db4, 0x5db8, 0x5db9, 0x5dc3, 0x5dc7,
+ 0x5dcb, 0x5dd0, 0x5dce, 0x5dd8, 0x5dd9, 0x5de0, 0x5de4,
+ /* 0x3c21 - 0x3c7e */
+ 0x5de9, 0x5df8, 0x5df9, 0x5e00, 0x5e07, 0x5e0d, 0x5e12,
+ 0x5e14, 0x5e15, 0x5e18, 0x5e1f, 0x5e20, 0x5e2e, 0x5e28, 0x5e32,
+ 0x5e35, 0x5e3e, 0x5e4b, 0x5e50, 0x5e49, 0x5e51, 0x5e56, 0x5e58,
+ 0x5e5b, 0x5e5c, 0x5e5e, 0x5e68, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d,
+ 0x5e6e, 0x5e70, 0x5e80, 0x5e8b, 0x5e8e, 0x5ea2, 0x5ea4, 0x5ea5,
+ 0x5ea8, 0x5eaa, 0x5eac, 0x5eb1, 0x5eb3, 0x5ebd, 0x5ebe, 0x5ebf,
+ 0x5ec6, 0x5ecc, 0x5ecb, 0x5ece, 0x5ed1, 0x5ed2, 0x5ed4, 0x5ed5,
+ 0x5edc, 0x5ede, 0x5ee5, 0x5eeb, 0x5f02, 0x5f06, 0x5f07, 0x5f08,
+ 0x5f0e, 0x5f19, 0x5f1c, 0x5f1d, 0x5f21, 0x5f22, 0x5f23, 0x5f24,
+ 0x5f28, 0x5f2b, 0x5f2c, 0x5f2e, 0x5f30, 0x5f34, 0x5f36, 0x5f3b,
+ 0x5f3d, 0x5f3f, 0x5f40, 0x5f44, 0x5f45, 0x5f47, 0x5f4d, 0x5f50,
+ 0x5f54, 0x5f58, 0x5f5b, 0x5f60, 0x5f63, 0x5f64, 0x5f67,
+ /* 0x3d21 - 0x3d7e */
+ 0x5f6f, 0x5f72, 0x5f74, 0x5f75, 0x5f78, 0x5f7a, 0x5f7d,
+ 0x5f7e, 0x5f89, 0x5f8d, 0x5f8f, 0x5f96, 0x5f9c, 0x5f9d, 0x5fa2,
+ 0x5fa7, 0x5fab, 0x5fa4, 0x5fac, 0x5faf, 0x5fb0, 0x5fb1, 0x5fb8,
+ 0x5fc4, 0x5fc7, 0x5fc8, 0x5fc9, 0x5fcb, 0x5fd0, 0x5fd1, 0x5fd2,
+ 0x5fd3, 0x5fd4, 0x5fde, 0x5fe1, 0x5fe2, 0x5fe8, 0x5fe9, 0x5fea,
+ 0x5fec, 0x5fed, 0x5fee, 0x5fef, 0x5ff2, 0x5ff3, 0x5ff6, 0x5ffa,
+ 0x5ffc, 0x6007, 0x600a, 0x600d, 0x6013, 0x6014, 0x6017, 0x6018,
+ 0x601a, 0x601f, 0x6024, 0x602d, 0x6033, 0x6035, 0x6040, 0x6047,
+ 0x6048, 0x6049, 0x604c, 0x6051, 0x6054, 0x6056, 0x6057, 0x605d,
+ 0x6061, 0x6067, 0x6071, 0x607e, 0x607f, 0x6082, 0x6086, 0x6088,
+ 0x608a, 0x608e, 0x6091, 0x6093, 0x6095, 0x6098, 0x609d, 0x609e,
+ 0x60a2, 0x60a4, 0x60a5, 0x60a8, 0x60b0, 0x60b1, 0x60b7,
+ /* 0x3e21 - 0x3e7e */
+ 0x60bb, 0x60be, 0x60c2, 0x60c4, 0x60c8, 0x60c9, 0x60ca,
+ 0x60cb, 0x60ce, 0x60cf, 0x60d4, 0x60d5, 0x60d9, 0x60db, 0x60dd,
+ 0x60de, 0x60e2, 0x60e5, 0x60f2, 0x60f5, 0x60f8, 0x60fc, 0x60fd,
+ 0x6102, 0x6107, 0x610a, 0x610c, 0x6110, 0x6111, 0x6112, 0x6113,
+ 0x6114, 0x6116, 0x6117, 0x6119, 0x611c, 0x611e, 0x6122, 0x612a,
+ 0x612b, 0x6130, 0x6131, 0x6135, 0x6136, 0x6137, 0x6139, 0x6141,
+ 0x6145, 0x6146, 0x6149, 0x615e, 0x6160, 0x616c, 0x6172, 0x6178,
+ 0x617b, 0x617c, 0x617f, 0x6180, 0x6181, 0x6183, 0x6184, 0x618b,
+ 0x618d, 0x6192, 0x6193, 0x6197, 0x6198, 0x619c, 0x619d, 0x619f,
+ 0x61a0, 0x61a5, 0x61a8, 0x61aa, 0x61ad, 0x61b8, 0x61b9, 0x61bc,
+ 0x61c0, 0x61c1, 0x61c2, 0x61ce, 0x61cf, 0x61d5, 0x61dc, 0x61dd,
+ 0x61de, 0x61df, 0x61e1, 0x61e2, 0x61e7, 0x61e9, 0x61e5,
+ /* 0x3f21 - 0x3f7e */
+ 0x61ec, 0x61ed, 0x61ef, 0x6201, 0x6203, 0x6204, 0x6207,
+ 0x6213, 0x6215, 0x621c, 0x6220, 0x6222, 0x6223, 0x6227, 0x6229,
+ 0x622b, 0x6239, 0x623d, 0x6242, 0x6243, 0x6244, 0x6246, 0x624c,
+ 0x6250, 0x6251, 0x6252, 0x6254, 0x6256, 0x625a, 0x625c, 0x6264,
+ 0x626d, 0x626f, 0x6273, 0x627a, 0x627d, 0x628d, 0x628e, 0x628f,
+ 0x6290, 0x62a6, 0x62a8, 0x62b3, 0x62b6, 0x62b7, 0x62ba, 0x62be,
+ 0x62bf, 0x62c4, 0x62ce, 0x62d5, 0x62d6, 0x62da, 0x62ea, 0x62f2,
+ 0x62f4, 0x62fc, 0x62fd, 0x6303, 0x6304, 0x630a, 0x630b, 0x630d,
+ 0x6310, 0x6313, 0x6316, 0x6318, 0x6329, 0x632a, 0x632d, 0x6335,
+ 0x6336, 0x6339, 0x633c, 0x6341, 0x6342, 0x6343, 0x6344, 0x6346,
+ 0x634a, 0x634b, 0x634e, 0x6352, 0x6353, 0x6354, 0x6358, 0x635b,
+ 0x6365, 0x6366, 0x636c, 0x636d, 0x6371, 0x6374, 0x6375,
+ /* 0x4021 - 0x407e */
+ 0x6378, 0x637c, 0x637d, 0x637f, 0x6382, 0x6384, 0x6387,
+ 0x638a, 0x6390, 0x6394, 0x6395, 0x6399, 0x639a, 0x639e, 0x63a4,
+ 0x63a6, 0x63ad, 0x63ae, 0x63af, 0x63bd, 0x63c1, 0x63c5, 0x63c8,
+ 0x63ce, 0x63d1, 0x63d3, 0x63d4, 0x63d5, 0x63dc, 0x63e0, 0x63e5,
+ 0x63ea, 0x63ec, 0x63f2, 0x63f3, 0x63f5, 0x63f8, 0x63f9, 0x6409,
+ 0x640a, 0x6410, 0x6412, 0x6414, 0x6418, 0x641e, 0x6420, 0x6422,
+ 0x6424, 0x6425, 0x6429, 0x642a, 0x642f, 0x6430, 0x6435, 0x643d,
+ 0x643f, 0x644b, 0x644f, 0x6451, 0x6452, 0x6453, 0x6454, 0x645a,
+ 0x645b, 0x645c, 0x645d, 0x645f, 0x6460, 0x6461, 0x6463, 0x646d,
+ 0x6473, 0x6474, 0x647b, 0x647d, 0x6485, 0x6487, 0x648f, 0x6490,
+ 0x6491, 0x6498, 0x6499, 0x649b, 0x649d, 0x649f, 0x64a1, 0x64a3,
+ 0x64a6, 0x64a8, 0x64ac, 0x64b3, 0x64bd, 0x64be, 0x64bf,
+ /* 0x4121 - 0x417e */
+ 0x64c4, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64ce, 0x64d0,
+ 0x64d1, 0x64d5, 0x64d7, 0x64e4, 0x64e5, 0x64e9, 0x64ea, 0x64ed,
+ 0x64f0, 0x64f5, 0x64f7, 0x64fb, 0x64ff, 0x6501, 0x6504, 0x6508,
+ 0x6509, 0x650a, 0x650f, 0x6513, 0x6514, 0x6516, 0x6519, 0x651b,
+ 0x651e, 0x651f, 0x6522, 0x6526, 0x6529, 0x652e, 0x6531, 0x653a,
+ 0x653c, 0x653d, 0x6543, 0x6547, 0x6549, 0x6550, 0x6552, 0x6554,
+ 0x655f, 0x6560, 0x6567, 0x656b, 0x657a, 0x657d, 0x6581, 0x6585,
+ 0x658a, 0x6592, 0x6595, 0x6598, 0x659d, 0x65a0, 0x65a3, 0x65a6,
+ 0x65ae, 0x65b2, 0x65b3, 0x65b4, 0x65bf, 0x65c2, 0x65c8, 0x65c9,
+ 0x65ce, 0x65d0, 0x65d4, 0x65d6, 0x65d8, 0x65df, 0x65f0, 0x65f2,
+ 0x65f4, 0x65f5, 0x65f9, 0x65fe, 0x65ff, 0x6600, 0x6604, 0x6608,
+ 0x6609, 0x660d, 0x6611, 0x6612, 0x6615, 0x6616, 0x661d,
+ /* 0x4221 - 0x427e */
+ 0x661e, 0x6621, 0x6622, 0x6623, 0x6624, 0x6626, 0x6629,
+ 0x662a, 0x662b, 0x662c, 0x662e, 0x6630, 0x6631, 0x6633, 0x6639,
+ 0x6637, 0x6640, 0x6645, 0x6646, 0x664a, 0x664c, 0x6651, 0x664e,
+ 0x6657, 0x6658, 0x6659, 0x665b, 0x665c, 0x6660, 0x6661, 0x66fb,
+ 0x666a, 0x666b, 0x666c, 0x667e, 0x6673, 0x6675, 0x667f, 0x6677,
+ 0x6678, 0x6679, 0x667b, 0x6680, 0x667c, 0x668b, 0x668c, 0x668d,
+ 0x6690, 0x6692, 0x6699, 0x669a, 0x669b, 0x669c, 0x669f, 0x66a0,
+ 0x66a4, 0x66ad, 0x66b1, 0x66b2, 0x66b5, 0x66bb, 0x66bf, 0x66c0,
+ 0x66c2, 0x66c3, 0x66c8, 0x66cc, 0x66ce, 0x66cf, 0x66d4, 0x66db,
+ 0x66df, 0x66e8, 0x66eb, 0x66ec, 0x66ee, 0x66fa, 0x6705, 0x6707,
+ 0x670e, 0x6713, 0x6719, 0x671c, 0x6720, 0x6722, 0x6733, 0x673e,
+ 0x6745, 0x6747, 0x6748, 0x674c, 0x6754, 0x6755, 0x675d,
+ /* 0x4321 - 0x437e */
+ 0x6766, 0x676c, 0x676e, 0x6774, 0x6776, 0x677b, 0x6781,
+ 0x6784, 0x678e, 0x678f, 0x6791, 0x6793, 0x6796, 0x6798, 0x6799,
+ 0x679b, 0x67b0, 0x67b1, 0x67b2, 0x67b5, 0x67bb, 0x67bc, 0x67bd,
+ 0x67f9, 0x67c0, 0x67c2, 0x67c3, 0x67c5, 0x67c8, 0x67c9, 0x67d2,
+ 0x67d7, 0x67d9, 0x67dc, 0x67e1, 0x67e6, 0x67f0, 0x67f2, 0x67f6,
+ 0x67f7, 0x6852, 0x6814, 0x6819, 0x681d, 0x681f, 0x6828, 0x6827,
+ 0x682c, 0x682d, 0x682f, 0x6830, 0x6831, 0x6833, 0x683b, 0x683f,
+ 0x6844, 0x6845, 0x684a, 0x684c, 0x6855, 0x6857, 0x6858, 0x685b,
+ 0x686b, 0x686e, 0x686f, 0x6870, 0x6871, 0x6872, 0x6875, 0x6879,
+ 0x687a, 0x687b, 0x687c, 0x6882, 0x6884, 0x6886, 0x6888, 0x6896,
+ 0x6898, 0x689a, 0x689c, 0x68a1, 0x68a3, 0x68a5, 0x68a9, 0x68aa,
+ 0x68ae, 0x68b2, 0x68bb, 0x68c5, 0x68c8, 0x68cc, 0x68cf,
+ /* 0x4421 - 0x447e */
+ 0x68d0, 0x68d1, 0x68d3, 0x68d6, 0x68d9, 0x68dc, 0x68dd,
+ 0x68e5, 0x68e8, 0x68ea, 0x68eb, 0x68ec, 0x68ed, 0x68f0, 0x68f1,
+ 0x68f5, 0x68f6, 0x68fb, 0x68fc, 0x68fd, 0x6906, 0x6909, 0x690a,
+ 0x6910, 0x6911, 0x6913, 0x6916, 0x6917, 0x6931, 0x6933, 0x6935,
+ 0x6938, 0x693b, 0x6942, 0x6945, 0x6949, 0x694e, 0x6957, 0x695b,
+ 0x6963, 0x6964, 0x6965, 0x6966, 0x6968, 0x6969, 0x696c, 0x6970,
+ 0x6971, 0x6972, 0x697a, 0x697b, 0x697f, 0x6980, 0x698d, 0x6992,
+ 0x6996, 0x6998, 0x69a1, 0x69a5, 0x69a6, 0x69a8, 0x69ab, 0x69ad,
+ 0x69af, 0x69b7, 0x69b8, 0x69ba, 0x69bc, 0x69c5, 0x69c8, 0x69d1,
+ 0x69d6, 0x69d7, 0x69e2, 0x69e5, 0x69ee, 0x69ef, 0x69f1, 0x69f3,
+ 0x69f5, 0x69fe, 0x6a00, 0x6a01, 0x6a03, 0x6a0f, 0x6a11, 0x6a15,
+ 0x6a1a, 0x6a1d, 0x6a20, 0x6a24, 0x6a28, 0x6a30, 0x6a32,
+ /* 0x4521 - 0x457e */
+ 0x6a34, 0x6a37, 0x6a3b, 0x6a3e, 0x6a3f, 0x6a45, 0x6a46,
+ 0x6a49, 0x6a4a, 0x6a4e, 0x6a50, 0x6a51, 0x6a52, 0x6a55, 0x6a56,
+ 0x6a5b, 0x6a64, 0x6a67, 0x6a6a, 0x6a71, 0x6a73, 0x6a7e, 0x6a81,
+ 0x6a83, 0x6a86, 0x6a87, 0x6a89, 0x6a8b, 0x6a91, 0x6a9b, 0x6a9d,
+ 0x6a9e, 0x6a9f, 0x6aa5, 0x6aab, 0x6aaf, 0x6ab0, 0x6ab1, 0x6ab4,
+ 0x6abd, 0x6abe, 0x6abf, 0x6ac6, 0x6ac9, 0x6ac8, 0x6acc, 0x6ad0,
+ 0x6ad4, 0x6ad5, 0x6ad6, 0x6adc, 0x6add, 0x6ae4, 0x6ae7, 0x6aec,
+ 0x6af0, 0x6af1, 0x6af2, 0x6afc, 0x6afd, 0x6b02, 0x6b03, 0x6b06,
+ 0x6b07, 0x6b09, 0x6b0f, 0x6b10, 0x6b11, 0x6b17, 0x6b1b, 0x6b1e,
+ 0x6b24, 0x6b28, 0x6b2b, 0x6b2c, 0x6b2f, 0x6b35, 0x6b36, 0x6b3b,
+ 0x6b3f, 0x6b46, 0x6b4a, 0x6b4d, 0x6b52, 0x6b56, 0x6b58, 0x6b5d,
+ 0x6b60, 0x6b67, 0x6b6b, 0x6b6e, 0x6b70, 0x6b75, 0x6b7d,
+ /* 0x4621 - 0x467e */
+ 0x6b7e, 0x6b82, 0x6b85, 0x6b97, 0x6b9b, 0x6b9f, 0x6ba0,
+ 0x6ba2, 0x6ba3, 0x6ba8, 0x6ba9, 0x6bac, 0x6bad, 0x6bae, 0x6bb0,
+ 0x6bb8, 0x6bb9, 0x6bbd, 0x6bbe, 0x6bc3, 0x6bc4, 0x6bc9, 0x6bcc,
+ 0x6bd6, 0x6bda, 0x6be1, 0x6be3, 0x6be6, 0x6be7, 0x6bee, 0x6bf1,
+ 0x6bf7, 0x6bf9, 0x6bff, 0x6c02, 0x6c04, 0x6c05, 0x6c09, 0x6c0d,
+ 0x6c0e, 0x6c10, 0x6c12, 0x6c19, 0x6c1f, 0x6c26, 0x6c27, 0x6c28,
+ 0x6c2c, 0x6c2e, 0x6c33, 0x6c35, 0x6c36, 0x6c3a, 0x6c3b, 0x6c3f,
+ 0x6c4a, 0x6c4b, 0x6c4d, 0x6c4f, 0x6c52, 0x6c54, 0x6c59, 0x6c5b,
+ 0x6c5c, 0x6c6b, 0x6c6d, 0x6c6f, 0x6c74, 0x6c76, 0x6c78, 0x6c79,
+ 0x6c7b, 0x6c85, 0x6c86, 0x6c87, 0x6c89, 0x6c94, 0x6c95, 0x6c97,
+ 0x6c98, 0x6c9c, 0x6c9f, 0x6cb0, 0x6cb2, 0x6cb4, 0x6cc2, 0x6cc6,
+ 0x6ccd, 0x6ccf, 0x6cd0, 0x6cd1, 0x6cd2, 0x6cd4, 0x6cd6,
+ /* 0x4721 - 0x477e */
+ 0x6cda, 0x6cdc, 0x6ce0, 0x6ce7, 0x6ce9, 0x6ceb, 0x6cec,
+ 0x6cee, 0x6cf2, 0x6cf4, 0x6d04, 0x6d07, 0x6d0a, 0x6d0e, 0x6d0f,
+ 0x6d11, 0x6d13, 0x6d1a, 0x6d26, 0x6d27, 0x6d28, 0x6c67, 0x6d2e,
+ 0x6d2f, 0x6d31, 0x6d39, 0x6d3c, 0x6d3f, 0x6d57, 0x6d5e, 0x6d5f,
+ 0x6d61, 0x6d65, 0x6d67, 0x6d6f, 0x6d70, 0x6d7c, 0x6d82, 0x6d87,
+ 0x6d91, 0x6d92, 0x6d94, 0x6d96, 0x6d97, 0x6d98, 0x6daa, 0x6dac,
+ 0x6db4, 0x6db7, 0x6db9, 0x6dbd, 0x6dbf, 0x6dc4, 0x6dc8, 0x6dca,
+ 0x6dce, 0x6dcf, 0x6dd6, 0x6ddb, 0x6ddd, 0x6ddf, 0x6de0, 0x6de2,
+ 0x6de5, 0x6de9, 0x6def, 0x6df0, 0x6df4, 0x6df6, 0x6dfc, 0x6e00,
+ 0x6e04, 0x6e1e, 0x6e22, 0x6e27, 0x6e32, 0x6e36, 0x6e39, 0x6e3b,
+ 0x6e3c, 0x6e44, 0x6e45, 0x6e48, 0x6e49, 0x6e4b, 0x6e4f, 0x6e51,
+ 0x6e52, 0x6e53, 0x6e54, 0x6e57, 0x6e5c, 0x6e5d, 0x6e5e,
+ /* 0x4821 - 0x487e */
+ 0x6e62, 0x6e63, 0x6e68, 0x6e73, 0x6e7b, 0x6e7d, 0x6e8d,
+ 0x6e93, 0x6e99, 0x6ea0, 0x6ea7, 0x6ead, 0x6eae, 0x6eb1, 0x6eb3,
+ 0x6ebb, 0x6ebf, 0x6ec0, 0x6ec1, 0x6ec3, 0x6ec7, 0x6ec8, 0x6eca,
+ 0x6ecd, 0x6ece, 0x6ecf, 0x6eeb, 0x6eed, 0x6eee, 0x6ef9, 0x6efb,
+ 0x6efd, 0x6f04, 0x6f08, 0x6f0a, 0x6f0c, 0x6f0d, 0x6f16, 0x6f18,
+ 0x6f1a, 0x6f1b, 0x6f26, 0x6f29, 0x6f2a, 0x6f2f, 0x6f30, 0x6f33,
+ 0x6f36, 0x6f3b, 0x6f3c, 0x6f2d, 0x6f4f, 0x6f51, 0x6f52, 0x6f53,
+ 0x6f57, 0x6f59, 0x6f5a, 0x6f5d, 0x6f5e, 0x6f61, 0x6f62, 0x6f68,
+ 0x6f6c, 0x6f7d, 0x6f7e, 0x6f83, 0x6f87, 0x6f88, 0x6f8b, 0x6f8c,
+ 0x6f8d, 0x6f90, 0x6f92, 0x6f93, 0x6f94, 0x6f96, 0x6f9a, 0x6f9f,
+ 0x6fa0, 0x6fa5, 0x6fa6, 0x6fa7, 0x6fa8, 0x6fae, 0x6faf, 0x6fb0,
+ 0x6fb5, 0x6fb6, 0x6fbc, 0x6fc5, 0x6fc7, 0x6fc8, 0x6fca,
+ /* 0x4921 - 0x497e */
+ 0x6fda, 0x6fde, 0x6fe8, 0x6fe9, 0x6ff0, 0x6ff5, 0x6ff9,
+ 0x6ffc, 0x6ffd, 0x7000, 0x7005, 0x7006, 0x7007, 0x700d, 0x7017,
+ 0x7020, 0x7023, 0x702f, 0x7034, 0x7037, 0x7039, 0x703c, 0x7043,
+ 0x7044, 0x7048, 0x7049, 0x704a, 0x704b, 0x7054, 0x7055, 0x705d,
+ 0x705e, 0x704e, 0x7064, 0x7065, 0x706c, 0x706e, 0x7075, 0x7076,
+ 0x707e, 0x7081, 0x7085, 0x7086, 0x7094, 0x7095, 0x7096, 0x7097,
+ 0x7098, 0x709b, 0x70a4, 0x70ab, 0x70b0, 0x70b1, 0x70b4, 0x70b7,
+ 0x70ca, 0x70d1, 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d8, 0x70dc,
+ 0x70e4, 0x70fa, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x710b,
+ 0x710c, 0x710f, 0x711e, 0x7120, 0x712b, 0x712d, 0x712f, 0x7130,
+ 0x7131, 0x7138, 0x7141, 0x7145, 0x7146, 0x7147, 0x714a, 0x714b,
+ 0x7150, 0x7152, 0x7157, 0x715a, 0x715c, 0x715e, 0x7160,
+ /* 0x4a21 - 0x4a7e */
+ 0x7168, 0x7179, 0x7180, 0x7185, 0x7187, 0x718c, 0x7192,
+ 0x719a, 0x719b, 0x71a0, 0x71a2, 0x71af, 0x71b0, 0x71b2, 0x71b3,
+ 0x71ba, 0x71bf, 0x71c0, 0x71c1, 0x71c4, 0x71cb, 0x71cc, 0x71d3,
+ 0x71d6, 0x71d9, 0x71da, 0x71dc, 0x71f8, 0x71fe, 0x7200, 0x7207,
+ 0x7208, 0x7209, 0x7213, 0x7217, 0x721a, 0x721d, 0x721f, 0x7224,
+ 0x722b, 0x722f, 0x7234, 0x7238, 0x7239, 0x7241, 0x7242, 0x7243,
+ 0x7245, 0x724e, 0x724f, 0x7250, 0x7253, 0x7255, 0x7256, 0x725a,
+ 0x725c, 0x725e, 0x7260, 0x7263, 0x7268, 0x726b, 0x726e, 0x726f,
+ 0x7271, 0x7277, 0x7278, 0x727b, 0x727c, 0x727f, 0x7284, 0x7289,
+ 0x728d, 0x728e, 0x7293, 0x729b, 0x72a8, 0x72ad, 0x72ae, 0x72b1,
+ 0x72b4, 0x72be, 0x72c1, 0x72c7, 0x72c9, 0x72cc, 0x72d5, 0x72d6,
+ 0x72d8, 0x72df, 0x72e5, 0x72f3, 0x72f4, 0x72fa, 0x72fb,
+ /* 0x4b21 - 0x4b7e */
+ 0x72fe, 0x7302, 0x7304, 0x7305, 0x7307, 0x730b, 0x730d,
+ 0x7312, 0x7313, 0x7318, 0x7319, 0x731e, 0x7322, 0x7324, 0x7327,
+ 0x7328, 0x732c, 0x7331, 0x7332, 0x7335, 0x733a, 0x733b, 0x733d,
+ 0x7343, 0x734d, 0x7350, 0x7352, 0x7356, 0x7358, 0x735d, 0x735e,
+ 0x735f, 0x7360, 0x7366, 0x7367, 0x7369, 0x736b, 0x736c, 0x736e,
+ 0x736f, 0x7371, 0x7377, 0x7379, 0x737c, 0x7380, 0x7381, 0x7383,
+ 0x7385, 0x7386, 0x738e, 0x7390, 0x7393, 0x7395, 0x7397, 0x7398,
+ 0x739c, 0x739e, 0x739f, 0x73a0, 0x73a2, 0x73a5, 0x73a6, 0x73aa,
+ 0x73ab, 0x73ad, 0x73b5, 0x73b7, 0x73b9, 0x73bc, 0x73bd, 0x73bf,
+ 0x73c5, 0x73c6, 0x73c9, 0x73cb, 0x73cc, 0x73cf, 0x73d2, 0x73d3,
+ 0x73d6, 0x73d9, 0x73dd, 0x73e1, 0x73e3, 0x73e6, 0x73e7, 0x73e9,
+ 0x73f4, 0x73f5, 0x73f7, 0x73f9, 0x73fa, 0x73fb, 0x73fd,
+ /* 0x4c21 - 0x4c7e */
+ 0x73ff, 0x7400, 0x7401, 0x7404, 0x7407, 0x740a, 0x7411,
+ 0x741a, 0x741b, 0x7424, 0x7426, 0x7428, 0x7429, 0x742a, 0x742b,
+ 0x742c, 0x742d, 0x742e, 0x742f, 0x7430, 0x7431, 0x7439, 0x7440,
+ 0x7443, 0x7444, 0x7446, 0x7447, 0x744b, 0x744d, 0x7451, 0x7452,
+ 0x7457, 0x745d, 0x7462, 0x7466, 0x7467, 0x7468, 0x746b, 0x746d,
+ 0x746e, 0x7471, 0x7472, 0x7480, 0x7481, 0x7485, 0x7486, 0x7487,
+ 0x7489, 0x748f, 0x7490, 0x7491, 0x7492, 0x7498, 0x7499, 0x749a,
+ 0x749c, 0x749f, 0x74a0, 0x74a1, 0x74a3, 0x74a6, 0x74a8, 0x74a9,
+ 0x74aa, 0x74ab, 0x74ae, 0x74af, 0x74b1, 0x74b2, 0x74b5, 0x74b9,
+ 0x74bb, 0x74bf, 0x74c8, 0x74c9, 0x74cc, 0x74d0, 0x74d3, 0x74d8,
+ 0x74da, 0x74db, 0x74de, 0x74df, 0x74e4, 0x74e8, 0x74ea, 0x74eb,
+ 0x74ef, 0x74f4, 0x74fa, 0x74fb, 0x74fc, 0x74ff, 0x7506,
+ /* 0x4d21 - 0x4d7e */
+ 0x7512, 0x7516, 0x7517, 0x7520, 0x7521, 0x7524, 0x7527,
+ 0x7529, 0x752a, 0x752f, 0x7536, 0x7539, 0x753d, 0x753e, 0x753f,
+ 0x7540, 0x7543, 0x7547, 0x7548, 0x754e, 0x7550, 0x7552, 0x7557,
+ 0x755e, 0x755f, 0x7561, 0x756f, 0x7571, 0x7579, 0x757a, 0x757b,
+ 0x757c, 0x757d, 0x757e, 0x7581, 0x7585, 0x7590, 0x7592, 0x7593,
+ 0x7595, 0x7599, 0x759c, 0x75a2, 0x75a4, 0x75b4, 0x75ba, 0x75bf,
+ 0x75c0, 0x75c1, 0x75c4, 0x75c6, 0x75cc, 0x75ce, 0x75cf, 0x75d7,
+ 0x75dc, 0x75df, 0x75e0, 0x75e1, 0x75e4, 0x75e7, 0x75ec, 0x75ee,
+ 0x75ef, 0x75f1, 0x75f9, 0x7600, 0x7602, 0x7603, 0x7604, 0x7607,
+ 0x7608, 0x760a, 0x760c, 0x760f, 0x7612, 0x7613, 0x7615, 0x7616,
+ 0x7619, 0x761b, 0x761c, 0x761d, 0x761e, 0x7623, 0x7625, 0x7626,
+ 0x7629, 0x762d, 0x7632, 0x7633, 0x7635, 0x7638, 0x7639,
+ /* 0x4e21 - 0x4e7e */
+ 0x763a, 0x763c, 0x764a, 0x7640, 0x7641, 0x7643, 0x7644,
+ 0x7645, 0x7649, 0x764b, 0x7655, 0x7659, 0x765f, 0x7664, 0x7665,
+ 0x766d, 0x766e, 0x766f, 0x7671, 0x7674, 0x7681, 0x7685, 0x768c,
+ 0x768d, 0x7695, 0x769b, 0x769c, 0x769d, 0x769f, 0x76a0, 0x76a2,
+ 0x76a3, 0x76a4, 0x76a5, 0x76a6, 0x76a7, 0x76a8, 0x76aa, 0x76ad,
+ 0x76bd, 0x76c1, 0x76c5, 0x76c9, 0x76cb, 0x76cc, 0x76ce, 0x76d4,
+ 0x76d9, 0x76e0, 0x76e6, 0x76e8, 0x76ec, 0x76f0, 0x76f1, 0x76f6,
+ 0x76f9, 0x76fc, 0x7700, 0x7706, 0x770a, 0x770e, 0x7712, 0x7714,
+ 0x7715, 0x7717, 0x7719, 0x771a, 0x771c, 0x7722, 0x7728, 0x772d,
+ 0x772e, 0x772f, 0x7734, 0x7735, 0x7736, 0x7739, 0x773d, 0x773e,
+ 0x7742, 0x7745, 0x7746, 0x774a, 0x774d, 0x774e, 0x774f, 0x7752,
+ 0x7756, 0x7757, 0x775c, 0x775e, 0x775f, 0x7760, 0x7762,
+ /* 0x4f21 - 0x4f7e */
+ 0x7764, 0x7767, 0x776a, 0x776c, 0x7770, 0x7772, 0x7773,
+ 0x7774, 0x777a, 0x777d, 0x7780, 0x7784, 0x778c, 0x778d, 0x7794,
+ 0x7795, 0x7796, 0x779a, 0x779f, 0x77a2, 0x77a7, 0x77aa, 0x77ae,
+ 0x77af, 0x77b1, 0x77b5, 0x77be, 0x77c3, 0x77c9, 0x77d1, 0x77d2,
+ 0x77d5, 0x77d9, 0x77de, 0x77df, 0x77e0, 0x77e4, 0x77e6, 0x77ea,
+ 0x77ec, 0x77f0, 0x77f1, 0x77f4, 0x77f8, 0x77fb, 0x7805, 0x7806,
+ 0x7809, 0x780d, 0x780e, 0x7811, 0x781d, 0x7821, 0x7822, 0x7823,
+ 0x782d, 0x782e, 0x7830, 0x7835, 0x7837, 0x7843, 0x7844, 0x7847,
+ 0x7848, 0x784c, 0x784e, 0x7852, 0x785c, 0x785e, 0x7860, 0x7861,
+ 0x7863, 0x7864, 0x7868, 0x786a, 0x786e, 0x787a, 0x787e, 0x788a,
+ 0x788f, 0x7894, 0x7898, 0x78a1, 0x789d, 0x789e, 0x789f, 0x78a4,
+ 0x78a8, 0x78ac, 0x78ad, 0x78b0, 0x78b1, 0x78b2, 0x78b3,
+ /* 0x5021 - 0x507e */
+ 0x78bb, 0x78bd, 0x78bf, 0x78c7, 0x78c8, 0x78c9, 0x78cc,
+ 0x78ce, 0x78d2, 0x78d3, 0x78d5, 0x78d6, 0x78e4, 0x78db, 0x78df,
+ 0x78e0, 0x78e1, 0x78e6, 0x78ea, 0x78f2, 0x78f3, 0x7900, 0x78f6,
+ 0x78f7, 0x78fa, 0x78fb, 0x78ff, 0x7906, 0x790c, 0x7910, 0x791a,
+ 0x791c, 0x791e, 0x791f, 0x7920, 0x7925, 0x7927, 0x7929, 0x792d,
+ 0x7931, 0x7934, 0x7935, 0x793b, 0x793d, 0x793f, 0x7944, 0x7945,
+ 0x7946, 0x794a, 0x794b, 0x794f, 0x7951, 0x7954, 0x7958, 0x795b,
+ 0x795c, 0x7967, 0x7969, 0x796b, 0x7972, 0x7979, 0x797b, 0x797c,
+ 0x797e, 0x798b, 0x798c, 0x7991, 0x7993, 0x7994, 0x7995, 0x7996,
+ 0x7998, 0x799b, 0x799c, 0x79a1, 0x79a8, 0x79a9, 0x79ab, 0x79af,
+ 0x79b1, 0x79b4, 0x79b8, 0x79bb, 0x79c2, 0x79c4, 0x79c7, 0x79c8,
+ 0x79ca, 0x79cf, 0x79d4, 0x79d6, 0x79da, 0x79dd, 0x79de,
+ /* 0x5121 - 0x517e */
+ 0x79e0, 0x79e2, 0x79e5, 0x79ea, 0x79eb, 0x79ed, 0x79f1,
+ 0x79f8, 0x79fc, 0x7a02, 0x7a03, 0x7a07, 0x7a09, 0x7a0a, 0x7a0c,
+ 0x7a11, 0x7a15, 0x7a1b, 0x7a1e, 0x7a21, 0x7a27, 0x7a2b, 0x7a2d,
+ 0x7a2f, 0x7a30, 0x7a34, 0x7a35, 0x7a38, 0x7a39, 0x7a3a, 0x7a44,
+ 0x7a45, 0x7a47, 0x7a48, 0x7a4c, 0x7a55, 0x7a56, 0x7a59, 0x7a5c,
+ 0x7a5d, 0x7a5f, 0x7a60, 0x7a65, 0x7a67, 0x7a6a, 0x7a6d, 0x7a75,
+ 0x7a78, 0x7a7e, 0x7a80, 0x7a82, 0x7a85, 0x7a86, 0x7a8a, 0x7a8b,
+ 0x7a90, 0x7a91, 0x7a94, 0x7a9e, 0x7aa0, 0x7aa3, 0x7aac, 0x7ab3,
+ 0x7ab5, 0x7ab9, 0x7abb, 0x7abc, 0x7ac6, 0x7ac9, 0x7acc, 0x7ace,
+ 0x7ad1, 0x7adb, 0x7ae8, 0x7ae9, 0x7aeb, 0x7aec, 0x7af1, 0x7af4,
+ 0x7afb, 0x7afd, 0x7afe, 0x7b07, 0x7b14, 0x7b1f, 0x7b23, 0x7b27,
+ 0x7b29, 0x7b2a, 0x7b2b, 0x7b2d, 0x7b2e, 0x7b2f, 0x7b30,
+ /* 0x5221 - 0x527e */
+ 0x7b31, 0x7b34, 0x7b3d, 0x7b3f, 0x7b40, 0x7b41, 0x7b47,
+ 0x7b4e, 0x7b55, 0x7b60, 0x7b64, 0x7b66, 0x7b69, 0x7b6a, 0x7b6d,
+ 0x7b6f, 0x7b72, 0x7b73, 0x7b77, 0x7b84, 0x7b89, 0x7b8e, 0x7b90,
+ 0x7b91, 0x7b96, 0x7b9b, 0x7b9e, 0x7ba0, 0x7ba5, 0x7bac, 0x7baf,
+ 0x7bb0, 0x7bb2, 0x7bb5, 0x7bb6, 0x7bba, 0x7bbb, 0x7bbc, 0x7bbd,
+ 0x7bc2, 0x7bc5, 0x7bc8, 0x7bca, 0x7bd4, 0x7bd6, 0x7bd7, 0x7bd9,
+ 0x7bda, 0x7bdb, 0x7be8, 0x7bea, 0x7bf2, 0x7bf4, 0x7bf5, 0x7bf8,
+ 0x7bf9, 0x7bfa, 0x7bfc, 0x7bfe, 0x7c01, 0x7c02, 0x7c03, 0x7c04,
+ 0x7c06, 0x7c09, 0x7c0b, 0x7c0c, 0x7c0e, 0x7c0f, 0x7c19, 0x7c1b,
+ 0x7c20, 0x7c25, 0x7c26, 0x7c28, 0x7c2c, 0x7c31, 0x7c33, 0x7c34,
+ 0x7c36, 0x7c39, 0x7c3a, 0x7c46, 0x7c4a, 0x7c55, 0x7c51, 0x7c52,
+ 0x7c53, 0x7c59, 0x7c5a, 0x7c5b, 0x7c5c, 0x7c5d, 0x7c5e,
+ /* 0x5321 - 0x537e */
+ 0x7c61, 0x7c63, 0x7c67, 0x7c69, 0x7c6d, 0x7c6e, 0x7c70,
+ 0x7c72, 0x7c79, 0x7c7c, 0x7c7d, 0x7c86, 0x7c87, 0x7c8f, 0x7c94,
+ 0x7c9e, 0x7ca0, 0x7ca6, 0x7cb0, 0x7cb6, 0x7cb7, 0x7cba, 0x7cbb,
+ 0x7cbc, 0x7cbf, 0x7cc4, 0x7cc7, 0x7cc8, 0x7cc9, 0x7ccd, 0x7ccf,
+ 0x7cd3, 0x7cd4, 0x7cd5, 0x7cd7, 0x7cd9, 0x7cda, 0x7cdd, 0x7ce6,
+ 0x7ce9, 0x7ceb, 0x7cf5, 0x7d03, 0x7d07, 0x7d08, 0x7d09, 0x7d0f,
+ 0x7d11, 0x7d12, 0x7d13, 0x7d16, 0x7d1d, 0x7d1e, 0x7d23, 0x7d26,
+ 0x7d2a, 0x7d2d, 0x7d31, 0x7d3c, 0x7d3d, 0x7d3e, 0x7d40, 0x7d41,
+ 0x7d47, 0x7d48, 0x7d4d, 0x7d51, 0x7d53, 0x7d57, 0x7d59, 0x7d5a,
+ 0x7d5c, 0x7d5d, 0x7d65, 0x7d67, 0x7d6a, 0x7d70, 0x7d78, 0x7d7a,
+ 0x7d7b, 0x7d7f, 0x7d81, 0x7d82, 0x7d83, 0x7d85, 0x7d86, 0x7d88,
+ 0x7d8b, 0x7d8c, 0x7d8d, 0x7d91, 0x7d96, 0x7d97, 0x7d9d,
+ /* 0x5421 - 0x547e */
+ 0x7d9e, 0x7da6, 0x7da7, 0x7daa, 0x7db3, 0x7db6, 0x7db7,
+ 0x7db9, 0x7dc2, 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dcc, 0x7dcd,
+ 0x7dce, 0x7dd7, 0x7dd9, 0x7e00, 0x7de2, 0x7de5, 0x7de6, 0x7dea,
+ 0x7deb, 0x7ded, 0x7df1, 0x7df5, 0x7df6, 0x7df9, 0x7dfa, 0x7e08,
+ 0x7e10, 0x7e11, 0x7e15, 0x7e17, 0x7e1c, 0x7e1d, 0x7e20, 0x7e27,
+ 0x7e28, 0x7e2c, 0x7e2d, 0x7e2f, 0x7e33, 0x7e36, 0x7e3f, 0x7e44,
+ 0x7e45, 0x7e47, 0x7e4e, 0x7e50, 0x7e52, 0x7e58, 0x7e5f, 0x7e61,
+ 0x7e62, 0x7e65, 0x7e6b, 0x7e6e, 0x7e6f, 0x7e73, 0x7e78, 0x7e7e,
+ 0x7e81, 0x7e86, 0x7e87, 0x7e8a, 0x7e8d, 0x7e91, 0x7e95, 0x7e98,
+ 0x7e9a, 0x7e9d, 0x7e9e, 0x7f3c, 0x7f3b, 0x7f3d, 0x7f3e, 0x7f3f,
+ 0x7f43, 0x7f44, 0x7f47, 0x7f4f, 0x7f52, 0x7f53, 0x7f5b, 0x7f5c,
+ 0x7f5d, 0x7f61, 0x7f63, 0x7f64, 0x7f65, 0x7f66, 0x7f6d,
+ /* 0x5521 - 0x557e */
+ 0x7f71, 0x7f7d, 0x7f7e, 0x7f7f, 0x7f80, 0x7f8b, 0x7f8d,
+ 0x7f8f, 0x7f90, 0x7f91, 0x7f96, 0x7f97, 0x7f9c, 0x7fa1, 0x7fa2,
+ 0x7fa6, 0x7faa, 0x7fad, 0x7fb4, 0x7fbc, 0x7fbf, 0x7fc0, 0x7fc3,
+ 0x7fc8, 0x7fce, 0x7fcf, 0x7fdb, 0x7fdf, 0x7fe3, 0x7fe5, 0x7fe8,
+ 0x7fec, 0x7fee, 0x7fef, 0x7ff2, 0x7ffa, 0x7ffd, 0x7ffe, 0x7fff,
+ 0x8007, 0x8008, 0x800a, 0x800d, 0x800e, 0x800f, 0x8011, 0x8013,
+ 0x8014, 0x8016, 0x801d, 0x801e, 0x801f, 0x8020, 0x8024, 0x8026,
+ 0x802c, 0x802e, 0x8030, 0x8034, 0x8035, 0x8037, 0x8039, 0x803a,
+ 0x803c, 0x803e, 0x8040, 0x8044, 0x8060, 0x8064, 0x8066, 0x806d,
+ 0x8071, 0x8075, 0x8081, 0x8088, 0x808e, 0x809c, 0x809e, 0x80a6,
+ 0x80a7, 0x80ab, 0x80b8, 0x80b9, 0x80c8, 0x80cd, 0x80cf, 0x80d2,
+ 0x80d4, 0x80d5, 0x80d7, 0x80d8, 0x80e0, 0x80ed, 0x80ee,
+ /* 0x5621 - 0x567e */
+ 0x80f0, 0x80f2, 0x80f3, 0x80f6, 0x80f9, 0x80fa, 0x80fe,
+ 0x8103, 0x810b, 0x8116, 0x8117, 0x8118, 0x811c, 0x811e, 0x8120,
+ 0x8124, 0x8127, 0x812c, 0x8130, 0x8135, 0x813a, 0x813c, 0x8145,
+ 0x8147, 0x814a, 0x814c, 0x8152, 0x8157, 0x8160, 0x8161, 0x8167,
+ 0x8168, 0x8169, 0x816d, 0x816f, 0x8177, 0x8181, 0x8190, 0x8184,
+ 0x8185, 0x8186, 0x818b, 0x818e, 0x8196, 0x8198, 0x819b, 0x819e,
+ 0x81a2, 0x81ae, 0x81b2, 0x81b4, 0x81bb, 0x81cb, 0x81c3, 0x81c5,
+ 0x81ca, 0x81ce, 0x81cf, 0x81d5, 0x81d7, 0x81db, 0x81dd, 0x81de,
+ 0x81e1, 0x81e4, 0x81eb, 0x81ec, 0x81f0, 0x81f1, 0x81f2, 0x81f5,
+ 0x81f6, 0x81f8, 0x81f9, 0x81fd, 0x81ff, 0x8200, 0x8203, 0x820f,
+ 0x8213, 0x8214, 0x8219, 0x821a, 0x821d, 0x8221, 0x8222, 0x8228,
+ 0x8232, 0x8234, 0x823a, 0x8243, 0x8244, 0x8245, 0x8246,
+ /* 0x5721 - 0x577e */
+ 0x824b, 0x824e, 0x824f, 0x8251, 0x8256, 0x825c, 0x8260,
+ 0x8263, 0x8267, 0x826d, 0x8274, 0x827b, 0x827d, 0x827f, 0x8280,
+ 0x8281, 0x8283, 0x8284, 0x8287, 0x8289, 0x828a, 0x828e, 0x8291,
+ 0x8294, 0x8296, 0x8298, 0x829a, 0x829b, 0x82a0, 0x82a1, 0x82a3,
+ 0x82a4, 0x82a7, 0x82a8, 0x82a9, 0x82aa, 0x82ae, 0x82b0, 0x82b2,
+ 0x82b4, 0x82b7, 0x82ba, 0x82bc, 0x82be, 0x82bf, 0x82c6, 0x82d0,
+ 0x82d5, 0x82da, 0x82e0, 0x82e2, 0x82e4, 0x82e8, 0x82ea, 0x82ed,
+ 0x82ef, 0x82f6, 0x82f7, 0x82fd, 0x82fe, 0x8300, 0x8301, 0x8307,
+ 0x8308, 0x830a, 0x830b, 0x8354, 0x831b, 0x831d, 0x831e, 0x831f,
+ 0x8321, 0x8322, 0x832c, 0x832d, 0x832e, 0x8330, 0x8333, 0x8337,
+ 0x833a, 0x833c, 0x833d, 0x8342, 0x8343, 0x8344, 0x8347, 0x834d,
+ 0x834e, 0x8351, 0x8355, 0x8356, 0x8357, 0x8370, 0x8378,
+ /* 0x5821 - 0x587e */
+ 0x837d, 0x837f, 0x8380, 0x8382, 0x8384, 0x8386, 0x838d,
+ 0x8392, 0x8394, 0x8395, 0x8398, 0x8399, 0x839b, 0x839c, 0x839d,
+ 0x83a6, 0x83a7, 0x83a9, 0x83ac, 0x83be, 0x83bf, 0x83c0, 0x83c7,
+ 0x83c9, 0x83cf, 0x83d0, 0x83d1, 0x83d4, 0x83dd, 0x8353, 0x83e8,
+ 0x83ea, 0x83f6, 0x83f8, 0x83f9, 0x83fc, 0x8401, 0x8406, 0x840a,
+ 0x840f, 0x8411, 0x8415, 0x8419, 0x83ad, 0x842f, 0x8439, 0x8445,
+ 0x8447, 0x8448, 0x844a, 0x844d, 0x844f, 0x8451, 0x8452, 0x8456,
+ 0x8458, 0x8459, 0x845a, 0x845c, 0x8460, 0x8464, 0x8465, 0x8467,
+ 0x846a, 0x8470, 0x8473, 0x8474, 0x8476, 0x8478, 0x847c, 0x847d,
+ 0x8481, 0x8485, 0x8492, 0x8493, 0x8495, 0x849e, 0x84a6, 0x84a8,
+ 0x84a9, 0x84aa, 0x84af, 0x84b1, 0x84b4, 0x84ba, 0x84bd, 0x84be,
+ 0x84c0, 0x84c2, 0x84c7, 0x84c8, 0x84cc, 0x84cf, 0x84d3,
+ /* 0x5921 - 0x597e */
+ 0x84dc, 0x84e7, 0x84ea, 0x84ef, 0x84f0, 0x84f1, 0x84f2,
+ 0x84f7, 0x8532, 0x84fa, 0x84fb, 0x84fd, 0x8502, 0x8503, 0x8507,
+ 0x850c, 0x850e, 0x8510, 0x851c, 0x851e, 0x8522, 0x8523, 0x8524,
+ 0x8525, 0x8527, 0x852a, 0x852b, 0x852f, 0x8533, 0x8534, 0x8536,
+ 0x853f, 0x8546, 0x854f, 0x8550, 0x8551, 0x8552, 0x8553, 0x8556,
+ 0x8559, 0x855c, 0x855d, 0x855e, 0x855f, 0x8560, 0x8561, 0x8562,
+ 0x8564, 0x856b, 0x856f, 0x8579, 0x857a, 0x857b, 0x857d, 0x857f,
+ 0x8581, 0x8585, 0x8586, 0x8589, 0x858b, 0x858c, 0x858f, 0x8593,
+ 0x8598, 0x859d, 0x859f, 0x85a0, 0x85a2, 0x85a5, 0x85a7, 0x85b4,
+ 0x85b6, 0x85b7, 0x85b8, 0x85bc, 0x85bd, 0x85be, 0x85bf, 0x85c2,
+ 0x85c7, 0x85ca, 0x85cb, 0x85ce, 0x85ad, 0x85d8, 0x85da, 0x85df,
+ 0x85e0, 0x85e6, 0x85e8, 0x85ed, 0x85f3, 0x85f6, 0x85fc,
+ /* 0x5a21 - 0x5a7e */
+ 0x85ff, 0x8600, 0x8604, 0x8605, 0x860d, 0x860e, 0x8610,
+ 0x8611, 0x8612, 0x8618, 0x8619, 0x861b, 0x861e, 0x8621, 0x8627,
+ 0x8629, 0x8636, 0x8638, 0x863a, 0x863c, 0x863d, 0x8640, 0x8642,
+ 0x8646, 0x8652, 0x8653, 0x8656, 0x8657, 0x8658, 0x8659, 0x865d,
+ 0x8660, 0x8661, 0x8662, 0x8663, 0x8664, 0x8669, 0x866c, 0x866f,
+ 0x8675, 0x8676, 0x8677, 0x867a, 0x868d, 0x8691, 0x8696, 0x8698,
+ 0x869a, 0x869c, 0x86a1, 0x86a6, 0x86a7, 0x86a8, 0x86ad, 0x86b1,
+ 0x86b3, 0x86b4, 0x86b5, 0x86b7, 0x86b8, 0x86b9, 0x86bf, 0x86c0,
+ 0x86c1, 0x86c3, 0x86c5, 0x86d1, 0x86d2, 0x86d5, 0x86d7, 0x86da,
+ 0x86dc, 0x86e0, 0x86e3, 0x86e5, 0x86e7, 0x8688, 0x86fa, 0x86fc,
+ 0x86fd, 0x8704, 0x8705, 0x8707, 0x870b, 0x870e, 0x870f, 0x8710,
+ 0x8713, 0x8714, 0x8719, 0x871e, 0x871f, 0x8721, 0x8723,
+ /* 0x5b21 - 0x5b7e */
+ 0x8728, 0x872e, 0x872f, 0x8731, 0x8732, 0x8739, 0x873a,
+ 0x873c, 0x873d, 0x873e, 0x8740, 0x8743, 0x8745, 0x874d, 0x8758,
+ 0x875d, 0x8761, 0x8764, 0x8765, 0x876f, 0x8771, 0x8772, 0x877b,
+ 0x8783, 0x8784, 0x8785, 0x8786, 0x8787, 0x8788, 0x8789, 0x878b,
+ 0x878c, 0x8790, 0x8793, 0x8795, 0x8797, 0x8798, 0x8799, 0x879e,
+ 0x87a0, 0x87a3, 0x87a7, 0x87ac, 0x87ad, 0x87ae, 0x87b1, 0x87b5,
+ 0x87be, 0x87bf, 0x87c1, 0x87c8, 0x87c9, 0x87ca, 0x87ce, 0x87d5,
+ 0x87d6, 0x87d9, 0x87da, 0x87dc, 0x87df, 0x87e2, 0x87e3, 0x87e4,
+ 0x87ea, 0x87eb, 0x87ed, 0x87f1, 0x87f3, 0x87f8, 0x87fa, 0x87ff,
+ 0x8801, 0x8803, 0x8806, 0x8809, 0x880a, 0x880b, 0x8810, 0x8819,
+ 0x8812, 0x8813, 0x8814, 0x8818, 0x881a, 0x881b, 0x881c, 0x881e,
+ 0x881f, 0x8828, 0x882d, 0x882e, 0x8830, 0x8832, 0x8835,
+ /* 0x5c21 - 0x5c7e */
+ 0x883a, 0x883c, 0x8841, 0x8843, 0x8845, 0x8848, 0x8849,
+ 0x884a, 0x884b, 0x884e, 0x8851, 0x8855, 0x8856, 0x8858, 0x885a,
+ 0x885c, 0x885f, 0x8860, 0x8864, 0x8869, 0x8871, 0x8879, 0x887b,
+ 0x8880, 0x8898, 0x889a, 0x889b, 0x889c, 0x889f, 0x88a0, 0x88a8,
+ 0x88aa, 0x88ba, 0x88bd, 0x88be, 0x88c0, 0x88ca, 0x88cb, 0x88cc,
+ 0x88cd, 0x88ce, 0x88d1, 0x88d2, 0x88d3, 0x88db, 0x88de, 0x88e7,
+ 0x88ef, 0x88f0, 0x88f1, 0x88f5, 0x88f7, 0x8901, 0x8906, 0x890d,
+ 0x890e, 0x890f, 0x8915, 0x8916, 0x8918, 0x8919, 0x891a, 0x891c,
+ 0x8920, 0x8926, 0x8927, 0x8928, 0x8930, 0x8931, 0x8932, 0x8935,
+ 0x8939, 0x893a, 0x893e, 0x8940, 0x8942, 0x8945, 0x8946, 0x8949,
+ 0x894f, 0x8952, 0x8957, 0x895a, 0x895b, 0x895c, 0x8961, 0x8962,
+ 0x8963, 0x896b, 0x896e, 0x8970, 0x8973, 0x8975, 0x897a,
+ /* 0x5d21 - 0x5d7e */
+ 0x897b, 0x897c, 0x897d, 0x8989, 0x898d, 0x8990, 0x8994,
+ 0x8995, 0x899b, 0x899c, 0x899f, 0x89a0, 0x89a5, 0x89b0, 0x89b4,
+ 0x89b5, 0x89b6, 0x89b7, 0x89bc, 0x89d4, 0x89d5, 0x89d6, 0x89d7,
+ 0x89d8, 0x89e5, 0x89e9, 0x89eb, 0x89ed, 0x89f1, 0x89f3, 0x89f6,
+ 0x89f9, 0x89fd, 0x89ff, 0x8a04, 0x8a05, 0x8a07, 0x8a0f, 0x8a11,
+ 0x8a12, 0x8a14, 0x8a15, 0x8a1e, 0x8a20, 0x8a22, 0x8a24, 0x8a26,
+ 0x8a2b, 0x8a2c, 0x8a2f, 0x8a35, 0x8a37, 0x8a3d, 0x8a3e, 0x8a40,
+ 0x8a43, 0x8a45, 0x8a47, 0x8a49, 0x8a4d, 0x8a4e, 0x8a53, 0x8a56,
+ 0x8a57, 0x8a58, 0x8a5c, 0x8a5d, 0x8a61, 0x8a65, 0x8a67, 0x8a75,
+ 0x8a76, 0x8a77, 0x8a79, 0x8a7a, 0x8a7b, 0x8a7e, 0x8a7f, 0x8a80,
+ 0x8a83, 0x8a86, 0x8a8b, 0x8a8f, 0x8a90, 0x8a92, 0x8a96, 0x8a97,
+ 0x8a99, 0x8a9f, 0x8aa7, 0x8aa9, 0x8aae, 0x8aaf, 0x8ab3,
+ /* 0x5e21 - 0x5e7e */
+ 0x8ab6, 0x8ab7, 0x8abb, 0x8abe, 0x8ac3, 0x8ac6, 0x8ac8,
+ 0x8ac9, 0x8aca, 0x8ad1, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad7, 0x8add,
+ 0x8adf, 0x8aec, 0x8af0, 0x8af4, 0x8af5, 0x8af6, 0x8afc, 0x8aff,
+ 0x8b05, 0x8b06, 0x8b0b, 0x8b11, 0x8b1c, 0x8b1e, 0x8b1f, 0x8b0a,
+ 0x8b2d, 0x8b30, 0x8b37, 0x8b3c, 0x8b42, 0x8b43, 0x8b44, 0x8b45,
+ 0x8b46, 0x8b48, 0x8b52, 0x8b53, 0x8b54, 0x8b59, 0x8b4d, 0x8b5e,
+ 0x8b63, 0x8b6d, 0x8b76, 0x8b78, 0x8b79, 0x8b7c, 0x8b7e, 0x8b81,
+ 0x8b84, 0x8b85, 0x8b8b, 0x8b8d, 0x8b8f, 0x8b94, 0x8b95, 0x8b9c,
+ 0x8b9e, 0x8b9f, 0x8c38, 0x8c39, 0x8c3d, 0x8c3e, 0x8c45, 0x8c47,
+ 0x8c49, 0x8c4b, 0x8c4f, 0x8c51, 0x8c53, 0x8c54, 0x8c57, 0x8c58,
+ 0x8c5b, 0x8c5d, 0x8c59, 0x8c63, 0x8c64, 0x8c66, 0x8c68, 0x8c69,
+ 0x8c6d, 0x8c73, 0x8c75, 0x8c76, 0x8c7b, 0x8c7e, 0x8c86,
+ /* 0x5f21 - 0x5f7e */
+ 0x8c87, 0x8c8b, 0x8c90, 0x8c92, 0x8c93, 0x8c99, 0x8c9b,
+ 0x8c9c, 0x8ca4, 0x8cb9, 0x8cba, 0x8cc5, 0x8cc6, 0x8cc9, 0x8ccb,
+ 0x8ccf, 0x8cd6, 0x8cd5, 0x8cd9, 0x8cdd, 0x8ce1, 0x8ce8, 0x8cec,
+ 0x8cef, 0x8cf0, 0x8cf2, 0x8cf5, 0x8cf7, 0x8cf8, 0x8cfe, 0x8cff,
+ 0x8d01, 0x8d03, 0x8d09, 0x8d12, 0x8d17, 0x8d1b, 0x8d65, 0x8d69,
+ 0x8d6c, 0x8d6e, 0x8d7f, 0x8d82, 0x8d84, 0x8d88, 0x8d8d, 0x8d90,
+ 0x8d91, 0x8d95, 0x8d9e, 0x8d9f, 0x8da0, 0x8da6, 0x8dab, 0x8dac,
+ 0x8daf, 0x8db2, 0x8db5, 0x8db7, 0x8db9, 0x8dbb, 0x8dc0, 0x8dc5,
+ 0x8dc6, 0x8dc7, 0x8dc8, 0x8dca, 0x8dce, 0x8dd1, 0x8dd4, 0x8dd5,
+ 0x8dd7, 0x8dd9, 0x8de4, 0x8de5, 0x8de7, 0x8dec, 0x8df0, 0x8dbc,
+ 0x8df1, 0x8df2, 0x8df4, 0x8dfd, 0x8e01, 0x8e04, 0x8e05, 0x8e06,
+ 0x8e0b, 0x8e11, 0x8e14, 0x8e16, 0x8e20, 0x8e21, 0x8e22,
+ /* 0x6021 - 0x607e */
+ 0x8e23, 0x8e26, 0x8e27, 0x8e31, 0x8e33, 0x8e36, 0x8e37,
+ 0x8e38, 0x8e39, 0x8e3d, 0x8e40, 0x8e41, 0x8e4b, 0x8e4d, 0x8e4e,
+ 0x8e4f, 0x8e54, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e61, 0x8e62,
+ 0x8e69, 0x8e6c, 0x8e6d, 0x8e6f, 0x8e70, 0x8e71, 0x8e79, 0x8e7a,
+ 0x8e7b, 0x8e82, 0x8e83, 0x8e89, 0x8e90, 0x8e92, 0x8e95, 0x8e9a,
+ 0x8e9b, 0x8e9d, 0x8e9e, 0x8ea2, 0x8ea7, 0x8ea9, 0x8ead, 0x8eae,
+ 0x8eb3, 0x8eb5, 0x8eba, 0x8ebb, 0x8ec0, 0x8ec1, 0x8ec3, 0x8ec4,
+ 0x8ec7, 0x8ecf, 0x8ed1, 0x8ed4, 0x8edc, 0x8ee8, 0x8eee, 0x8ef0,
+ 0x8ef1, 0x8ef7, 0x8ef9, 0x8efa, 0x8eed, 0x8f00, 0x8f02, 0x8f07,
+ 0x8f08, 0x8f0f, 0x8f10, 0x8f16, 0x8f17, 0x8f18, 0x8f1e, 0x8f20,
+ 0x8f21, 0x8f23, 0x8f25, 0x8f27, 0x8f28, 0x8f2c, 0x8f2d, 0x8f2e,
+ 0x8f34, 0x8f35, 0x8f36, 0x8f37, 0x8f3a, 0x8f40, 0x8f41,
+ /* 0x6121 - 0x617e */
+ 0x8f43, 0x8f47, 0x8f4f, 0x8f51, 0x8f52, 0x8f53, 0x8f54,
+ 0x8f55, 0x8f58, 0x8f5d, 0x8f5e, 0x8f65, 0x8f9d, 0x8fa0, 0x8fa1,
+ 0x8fa4, 0x8fa5, 0x8fa6, 0x8fb5, 0x8fb6, 0x8fb8, 0x8fbe, 0x8fc0,
+ 0x8fc1, 0x8fc6, 0x8fca, 0x8fcb, 0x8fcd, 0x8fd0, 0x8fd2, 0x8fd3,
+ 0x8fd5, 0x8fe0, 0x8fe3, 0x8fe4, 0x8fe8, 0x8fee, 0x8ff1, 0x8ff5,
+ 0x8ff6, 0x8ffb, 0x8ffe, 0x9002, 0x9004, 0x9008, 0x900c, 0x9018,
+ 0x901b, 0x9028, 0x9029, 0x902f, 0x902a, 0x902c, 0x902d, 0x9033,
+ 0x9034, 0x9037, 0x903f, 0x9043, 0x9044, 0x904c, 0x905b, 0x905d,
+ 0x9062, 0x9066, 0x9067, 0x906c, 0x9070, 0x9074, 0x9079, 0x9085,
+ 0x9088, 0x908b, 0x908c, 0x908e, 0x9090, 0x9095, 0x9097, 0x9098,
+ 0x9099, 0x909b, 0x90a0, 0x90a1, 0x90a2, 0x90a5, 0x90b0, 0x90b2,
+ 0x90b3, 0x90b4, 0x90b6, 0x90bd, 0x90cc, 0x90be, 0x90c3,
+ /* 0x6221 - 0x627e */
+ 0x90c4, 0x90c5, 0x90c7, 0x90c8, 0x90d5, 0x90d7, 0x90d8,
+ 0x90d9, 0x90dc, 0x90dd, 0x90df, 0x90e5, 0x90d2, 0x90f6, 0x90eb,
+ 0x90ef, 0x90f0, 0x90f4, 0x90fe, 0x90ff, 0x9100, 0x9104, 0x9105,
+ 0x9106, 0x9108, 0x910d, 0x9110, 0x9114, 0x9116, 0x9117, 0x9118,
+ 0x911a, 0x911c, 0x911e, 0x9120, 0x9125, 0x9122, 0x9123, 0x9127,
+ 0x9129, 0x912e, 0x912f, 0x9131, 0x9134, 0x9136, 0x9137, 0x9139,
+ 0x913a, 0x913c, 0x913d, 0x9143, 0x9147, 0x9148, 0x914f, 0x9153,
+ 0x9157, 0x9159, 0x915a, 0x915b, 0x9161, 0x9164, 0x9167, 0x916d,
+ 0x9174, 0x9179, 0x917a, 0x917b, 0x9181, 0x9183, 0x9185, 0x9186,
+ 0x918a, 0x918e, 0x9191, 0x9193, 0x9194, 0x9195, 0x9198, 0x919e,
+ 0x91a1, 0x91a6, 0x91a8, 0x91ac, 0x91ad, 0x91ae, 0x91b0, 0x91b1,
+ 0x91b2, 0x91b3, 0x91b6, 0x91bb, 0x91bc, 0x91bd, 0x91bf,
+ /* 0x6321 - 0x637e */
+ 0x91c2, 0x91c3, 0x91c5, 0x91d3, 0x91d4, 0x91d7, 0x91d9,
+ 0x91da, 0x91de, 0x91e4, 0x91e5, 0x91e9, 0x91ea, 0x91ec, 0x91ed,
+ 0x91ee, 0x91ef, 0x91f0, 0x91f1, 0x91f7, 0x91f9, 0x91fb, 0x91fd,
+ 0x9200, 0x9201, 0x9204, 0x9205, 0x9206, 0x9207, 0x9209, 0x920a,
+ 0x920c, 0x9210, 0x9212, 0x9213, 0x9216, 0x9218, 0x921c, 0x921d,
+ 0x9223, 0x9224, 0x9225, 0x9226, 0x9228, 0x922e, 0x922f, 0x9230,
+ 0x9233, 0x9235, 0x9236, 0x9238, 0x9239, 0x923a, 0x923c, 0x923e,
+ 0x9240, 0x9242, 0x9243, 0x9246, 0x9247, 0x924a, 0x924d, 0x924e,
+ 0x924f, 0x9251, 0x9258, 0x9259, 0x925c, 0x925d, 0x9260, 0x9261,
+ 0x9265, 0x9267, 0x9268, 0x9269, 0x926e, 0x926f, 0x9270, 0x9275,
+ 0x9276, 0x9277, 0x9278, 0x9279, 0x927b, 0x927c, 0x927d, 0x927f,
+ 0x9288, 0x9289, 0x928a, 0x928d, 0x928e, 0x9292, 0x9297,
+ /* 0x6421 - 0x647e */
+ 0x9299, 0x929f, 0x92a0, 0x92a4, 0x92a5, 0x92a7, 0x92a8,
+ 0x92ab, 0x92af, 0x92b2, 0x92b6, 0x92b8, 0x92ba, 0x92bb, 0x92bc,
+ 0x92bd, 0x92bf, 0x92c0, 0x92c1, 0x92c2, 0x92c3, 0x92c5, 0x92c6,
+ 0x92c7, 0x92c8, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92d0, 0x92d3,
+ 0x92d5, 0x92d7, 0x92d8, 0x92d9, 0x92dc, 0x92dd, 0x92df, 0x92e0,
+ 0x92e1, 0x92e3, 0x92e5, 0x92e7, 0x92e8, 0x92ec, 0x92ee, 0x92f0,
+ 0x92f9, 0x92fb, 0x92ff, 0x9300, 0x9302, 0x9308, 0x930d, 0x9311,
+ 0x9314, 0x9315, 0x931c, 0x931d, 0x931e, 0x931f, 0x9321, 0x9324,
+ 0x9325, 0x9327, 0x9329, 0x932a, 0x9333, 0x9334, 0x9336, 0x9337,
+ 0x9347, 0x9348, 0x9349, 0x9350, 0x9351, 0x9352, 0x9355, 0x9357,
+ 0x9358, 0x935a, 0x935e, 0x9364, 0x9365, 0x9367, 0x9369, 0x936a,
+ 0x936d, 0x936f, 0x9370, 0x9371, 0x9373, 0x9374, 0x9376,
+ /* 0x6521 - 0x657e */
+ 0x937a, 0x937d, 0x937f, 0x9380, 0x9381, 0x9382, 0x9388,
+ 0x938a, 0x938b, 0x938d, 0x938f, 0x9392, 0x9395, 0x9398, 0x939b,
+ 0x939e, 0x93a1, 0x93a3, 0x93a4, 0x93a6, 0x93a8, 0x93ab, 0x93b4,
+ 0x93b5, 0x93b6, 0x93ba, 0x93a9, 0x93c1, 0x93c4, 0x93c5, 0x93c6,
+ 0x93c7, 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd, 0x93d3, 0x93d9,
+ 0x93dc, 0x93de, 0x93df, 0x93e2, 0x93e6, 0x93e7, 0x93f9, 0x93f7,
+ 0x93f8, 0x93fa, 0x93fb, 0x93fd, 0x9401, 0x9402, 0x9404, 0x9408,
+ 0x9409, 0x940d, 0x940e, 0x940f, 0x9415, 0x9416, 0x9417, 0x941f,
+ 0x942e, 0x942f, 0x9431, 0x9432, 0x9433, 0x9434, 0x943b, 0x943f,
+ 0x943d, 0x9443, 0x9445, 0x9448, 0x944a, 0x944c, 0x9455, 0x9459,
+ 0x945c, 0x945f, 0x9461, 0x9463, 0x9468, 0x946b, 0x946d, 0x946e,
+ 0x946f, 0x9471, 0x9472, 0x9484, 0x9483, 0x9578, 0x9579,
+ /* 0x6621 - 0x667e */
+ 0x957e, 0x9584, 0x9588, 0x958c, 0x958d, 0x958e, 0x959d,
+ 0x959e, 0x959f, 0x95a1, 0x95a6, 0x95a9, 0x95ab, 0x95ac, 0x95b4,
+ 0x95b6, 0x95ba, 0x95bd, 0x95bf, 0x95c6, 0x95c8, 0x95c9, 0x95cb,
+ 0x95d0, 0x95d1, 0x95d2, 0x95d3, 0x95d9, 0x95da, 0x95dd, 0x95de,
+ 0x95df, 0x95e0, 0x95e4, 0x95e6, 0x961d, 0x961e, 0x9622, 0x9624,
+ 0x9625, 0x9626, 0x962c, 0x9631, 0x9633, 0x9637, 0x9638, 0x9639,
+ 0x963a, 0x963c, 0x963d, 0x9641, 0x9652, 0x9654, 0x9656, 0x9657,
+ 0x9658, 0x9661, 0x966e, 0x9674, 0x967b, 0x967c, 0x967e, 0x967f,
+ 0x9681, 0x9682, 0x9683, 0x9684, 0x9689, 0x9691, 0x9696, 0x969a,
+ 0x969d, 0x969f, 0x96a4, 0x96a5, 0x96a6, 0x96a9, 0x96ae, 0x96af,
+ 0x96b3, 0x96ba, 0x96ca, 0x96d2, 0x5db2, 0x96d8, 0x96da, 0x96dd,
+ 0x96de, 0x96df, 0x96e9, 0x96ef, 0x96f1, 0x96fa, 0x9702,
+ /* 0x6721 - 0x677e */
+ 0x9703, 0x9705, 0x9709, 0x971a, 0x971b, 0x971d, 0x9721,
+ 0x9722, 0x9723, 0x9728, 0x9731, 0x9733, 0x9741, 0x9743, 0x974a,
+ 0x974e, 0x974f, 0x9755, 0x9757, 0x9758, 0x975a, 0x975b, 0x9763,
+ 0x9767, 0x976a, 0x976e, 0x9773, 0x9776, 0x9777, 0x9778, 0x977b,
+ 0x977d, 0x977f, 0x9780, 0x9789, 0x9795, 0x9796, 0x9797, 0x9799,
+ 0x979a, 0x979e, 0x979f, 0x97a2, 0x97ac, 0x97ae, 0x97b1, 0x97b2,
+ 0x97b5, 0x97b6, 0x97b8, 0x97b9, 0x97ba, 0x97bc, 0x97be, 0x97bf,
+ 0x97c1, 0x97c4, 0x97c5, 0x97c7, 0x97c9, 0x97ca, 0x97cc, 0x97cd,
+ 0x97ce, 0x97d0, 0x97d1, 0x97d4, 0x97d7, 0x97d8, 0x97d9, 0x97dd,
+ 0x97de, 0x97e0, 0x97db, 0x97e1, 0x97e4, 0x97ef, 0x97f1, 0x97f4,
+ 0x97f7, 0x97f8, 0x97fa, 0x9807, 0x980a, 0x9819, 0x980d, 0x980e,
+ 0x9814, 0x9816, 0x981c, 0x981e, 0x9820, 0x9823, 0x9826,
+ /* 0x6821 - 0x687e */
+ 0x982b, 0x982e, 0x982f, 0x9830, 0x9832, 0x9833, 0x9835,
+ 0x9825, 0x983e, 0x9844, 0x9847, 0x984a, 0x9851, 0x9852, 0x9853,
+ 0x9856, 0x9857, 0x9859, 0x985a, 0x9862, 0x9863, 0x9865, 0x9866,
+ 0x986a, 0x986c, 0x98ab, 0x98ad, 0x98ae, 0x98b0, 0x98b4, 0x98b7,
+ 0x98b8, 0x98ba, 0x98bb, 0x98bf, 0x98c2, 0x98c5, 0x98c8, 0x98cc,
+ 0x98e1, 0x98e3, 0x98e5, 0x98e6, 0x98e7, 0x98ea, 0x98f3, 0x98f6,
+ 0x9902, 0x9907, 0x9908, 0x9911, 0x9915, 0x9916, 0x9917, 0x991a,
+ 0x991b, 0x991c, 0x991f, 0x9922, 0x9926, 0x9927, 0x992b, 0x9931,
+ 0x9932, 0x9933, 0x9934, 0x9935, 0x9939, 0x993a, 0x993b, 0x993c,
+ 0x9940, 0x9941, 0x9946, 0x9947, 0x9948, 0x994d, 0x994e, 0x9954,
+ 0x9958, 0x9959, 0x995b, 0x995c, 0x995e, 0x995f, 0x9960, 0x999b,
+ 0x999d, 0x999f, 0x99a6, 0x99b0, 0x99b1, 0x99b2, 0x99b5,
+ /* 0x6921 - 0x697e */
+ 0x99b9, 0x99ba, 0x99bd, 0x99bf, 0x99c3, 0x99c9, 0x99d3,
+ 0x99d4, 0x99d9, 0x99da, 0x99dc, 0x99de, 0x99e7, 0x99ea, 0x99eb,
+ 0x99ec, 0x99f0, 0x99f4, 0x99f5, 0x99f9, 0x99fd, 0x99fe, 0x9a02,
+ 0x9a03, 0x9a04, 0x9a0b, 0x9a0c, 0x9a10, 0x9a11, 0x9a16, 0x9a1e,
+ 0x9a20, 0x9a22, 0x9a23, 0x9a24, 0x9a27, 0x9a2d, 0x9a2e, 0x9a33,
+ 0x9a35, 0x9a36, 0x9a38, 0x9a47, 0x9a41, 0x9a44, 0x9a4a, 0x9a4b,
+ 0x9a4c, 0x9a4e, 0x9a51, 0x9a54, 0x9a56, 0x9a5d, 0x9aaa, 0x9aac,
+ 0x9aae, 0x9aaf, 0x9ab2, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab9, 0x9abb,
+ 0x9abe, 0x9abf, 0x9ac1, 0x9ac3, 0x9ac6, 0x9ac8, 0x9ace, 0x9ad0,
+ 0x9ad2, 0x9ad5, 0x9ad6, 0x9ad7, 0x9adb, 0x9adc, 0x9ae0, 0x9ae4,
+ 0x9ae5, 0x9ae7, 0x9ae9, 0x9aec, 0x9af2, 0x9af3, 0x9af5, 0x9af9,
+ 0x9afa, 0x9afd, 0x9aff, 0x9b00, 0x9b01, 0x9b02, 0x9b03,
+ /* 0x6a21 - 0x6a7e */
+ 0x9b04, 0x9b05, 0x9b08, 0x9b09, 0x9b0b, 0x9b0c, 0x9b0d,
+ 0x9b0e, 0x9b10, 0x9b12, 0x9b16, 0x9b19, 0x9b1b, 0x9b1c, 0x9b20,
+ 0x9b26, 0x9b2b, 0x9b2d, 0x9b33, 0x9b34, 0x9b35, 0x9b37, 0x9b39,
+ 0x9b3a, 0x9b3d, 0x9b48, 0x9b4b, 0x9b4c, 0x9b55, 0x9b56, 0x9b57,
+ 0x9b5b, 0x9b5e, 0x9b61, 0x9b63, 0x9b65, 0x9b66, 0x9b68, 0x9b6a,
+ 0x9b6b, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b73, 0x9b75, 0x9b77, 0x9b78,
+ 0x9b79, 0x9b7f, 0x9b80, 0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b89,
+ 0x9b8a, 0x9b8b, 0x9b8d, 0x9b8f, 0x9b90, 0x9b94, 0x9b9a, 0x9b9d,
+ 0x9b9e, 0x9ba6, 0x9ba7, 0x9ba9, 0x9bac, 0x9bb0, 0x9bb1, 0x9bb2,
+ 0x9bb7, 0x9bb8, 0x9bbb, 0x9bbc, 0x9bbe, 0x9bbf, 0x9bc1, 0x9bc7,
+ 0x9bc8, 0x9bce, 0x9bd0, 0x9bd7, 0x9bd8, 0x9bdd, 0x9bdf, 0x9be5,
+ 0x9be7, 0x9bea, 0x9beb, 0x9bef, 0x9bf3, 0x9bf7, 0x9bf8,
+ /* 0x6b21 - 0x6b7e */
+ 0x9bf9, 0x9bfa, 0x9bfd, 0x9bff, 0x9c00, 0x9c02, 0x9c0b,
+ 0x9c0f, 0x9c11, 0x9c16, 0x9c18, 0x9c19, 0x9c1a, 0x9c1c, 0x9c1e,
+ 0x9c22, 0x9c23, 0x9c26, 0x9c27, 0x9c28, 0x9c29, 0x9c2a, 0x9c31,
+ 0x9c35, 0x9c36, 0x9c37, 0x9c3d, 0x9c41, 0x9c43, 0x9c44, 0x9c45,
+ 0x9c49, 0x9c4a, 0x9c4e, 0x9c4f, 0x9c50, 0x9c53, 0x9c54, 0x9c56,
+ 0x9c58, 0x9c5b, 0x9c5d, 0x9c5e, 0x9c5f, 0x9c63, 0x9c69, 0x9c6a,
+ 0x9c5c, 0x9c6b, 0x9c68, 0x9c6e, 0x9c70, 0x9c72, 0x9c75, 0x9c77,
+ 0x9c7b, 0x9ce6, 0x9cf2, 0x9cf7, 0x9cf9, 0x9d0b, 0x9d02, 0x9d11,
+ 0x9d17, 0x9d18, 0x9d1c, 0x9d1d, 0x9d1e, 0x9d2f, 0x9d30, 0x9d32,
+ 0x9d33, 0x9d34, 0x9d3a, 0x9d3c, 0x9d45, 0x9d3d, 0x9d42, 0x9d43,
+ 0x9d47, 0x9d4a, 0x9d53, 0x9d54, 0x9d5f, 0x9d63, 0x9d62, 0x9d65,
+ 0x9d69, 0x9d6a, 0x9d6b, 0x9d70, 0x9d76, 0x9d77, 0x9d7b,
+ /* 0x6c21 - 0x6c7e */
+ 0x9d7c, 0x9d7e, 0x9d83, 0x9d84, 0x9d86, 0x9d8a, 0x9d8d,
+ 0x9d8e, 0x9d92, 0x9d93, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9da1,
+ 0x9daa, 0x9dac, 0x9dae, 0x9db1, 0x9db5, 0x9db9, 0x9dbc, 0x9dbf,
+ 0x9dc3, 0x9dc7, 0x9dc9, 0x9dca, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7,
+ 0x9dda, 0x9dde, 0x9ddf, 0x9de0, 0x9de5, 0x9de7, 0x9de9, 0x9deb,
+ 0x9dee, 0x9df0, 0x9df3, 0x9df4, 0x9dfe, 0x9e0a, 0x9e02, 0x9e07,
+ 0x9e0e, 0x9e10, 0x9e11, 0x9e12, 0x9e15, 0x9e16, 0x9e19, 0x9e1c,
+ 0x9e1d, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e80, 0x9e82, 0x9e83, 0x9e84,
+ 0x9e85, 0x9e87, 0x9e8e, 0x9e8f, 0x9e96, 0x9e98, 0x9e9b, 0x9e9e,
+ 0x9ea4, 0x9ea8, 0x9eac, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb3, 0x9eb4,
+ 0x9eb5, 0x9ec6, 0x9ec8, 0x9ecb, 0x9ed5, 0x9edf, 0x9ee4, 0x9ee7,
+ 0x9eec, 0x9eed, 0x9eee, 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef5,
+ /* 0x6d21 - 0x6d7e */
+ 0x9ef8, 0x9eff, 0x9f02, 0x9f03, 0x9f09, 0x9f0f, 0x9f10,
+ 0x9f11, 0x9f12, 0x9f14, 0x9f16, 0x9f17, 0x9f19, 0x9f1a, 0x9f1b,
+ 0x9f1f, 0x9f22, 0x9f26, 0x9f2a, 0x9f2b, 0x9f2f, 0x9f31, 0x9f32,
+ 0x9f34, 0x9f37, 0x9f39, 0x9f3a, 0x9f3c, 0x9f3d, 0x9f3f, 0x9f41,
+ 0x9f43, 0x9f44, 0x9f45, 0x9f46, 0x9f47, 0x9f53, 0x9f55, 0x9f56,
+ 0x9f57, 0x9f58, 0x9f5a, 0x9f5d, 0x9f5e, 0x9f68, 0x9f69, 0x9f6d,
+ 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f73, 0x9f75, 0x9f7a, 0x9f7d,
+ 0x9f8f, 0x9f90, 0x9f91, 0x9f92, 0x9f94, 0x9f96, 0x9f97, 0x9f9e,
+ 0x9fa1, 0x9fa2, 0x9fa3, 0x9fa5, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x6e21 - 0x6e7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x6f21 - 0x6f7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7021 - 0x707e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7121 - 0x717e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7221 - 0x727e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7321 - 0x737e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174,
+ 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x2160, 0x2161,
+ /* 0x7421 - 0x747e */
+ 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
+ 0x2169, 0xff07, 0xff02, 0x3231, 0x2116, 0x2121, 0x70bb, 0x4efc,
+ 0x50f4, 0x51ec, 0x5307, 0x5324, 0xfa0e, 0x548a, 0x5759, 0xfa0f,
+ 0xfa10, 0x589e, 0x5bec, 0x5cf5, 0x5d53, 0xfa11, 0x5fb7, 0x6085,
+ 0x6120, 0x654e, 0x663b, 0x6665, 0xfa12, 0xf929, 0x6801, 0xfa13,
+ 0xfa14, 0x6a6b, 0x6ae2, 0x6df8, 0x6df2, 0x7028, 0xfa15, 0xfa16,
+ 0x7501, 0x7682, 0x769e, 0xfa17, 0x7930, 0xfa18, 0xfa19, 0xfa1a,
+ 0xfa1b, 0x7ae7, 0xfa1c, 0xfa1d, 0x7da0, 0x7dd6, 0xfa1e, 0x8362,
+ 0xfa1f, 0x85b0, 0xfa20, 0xfa21, 0x8807, 0xfa22, 0x8b7f, 0x8cf4,
+ 0x8d76, 0xfa23, 0xfa24, 0xfa25, 0x90de, 0xfa26, 0x9115, 0xfa27,
+ 0xfa28, 0x9592, 0xf9dc, 0xfa29, 0x973b, 0x974d, 0x9751, 0xfa2a,
+ 0xfa2b, 0xfa2c, 0x999e, 0x9ad9, 0x9b72, 0xfa2d, 0x9ed1,
+ /* 0x7521 - 0x757e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7621 - 0x767e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7721 - 0x777e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7821 - 0x787e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7921 - 0x797e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7a21 - 0x7a7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7b21 - 0x7b7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7c21 - 0x7c7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7d21 - 0x7d7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ /* 0x7e21 - 0x7e7e */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+#endif
+
+#ifdef USE_JISX0212
+static uint jisx0212ToUnicode11(uint h, uint l)
+{
+ if ((0x0021 <= h) && (h <= 0x007e) && (0x0021 <= l) && (l <= 0x007e)) {
+ return jisx0212_to_unicode[(h - 0x0021) * 0x005e + (l - 0x0021)];
+ }
+ return 0x0000;
+}
+#else
+static uint jisx0212ToUnicode11(uint h, uint l)
+{
+ return 0x0000;
+}
+#endif
+
+#ifdef USE_JISX0212
+
+/*
+ * This data is derived from Unicode 1.1,
+ * JIS X 0212 (1990) to Unicode mapping table version 0.9 .
+ * (In addition IBM Vender Defined Char included)
+ */
+static unsigned short const unicode_to_jisx0212_00[] = {
+ /* 0x0000 - 0x00ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2237, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x2242, 0x0000, 0x0000, 0x2270, 0x0000, 0x2243, 0x0000,
+ 0x0000, 0x226d, 0x226c, 0x0000, 0x0000, 0x0000, 0x226e, 0x2234,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x2231, 0x0000, 0x226b, 0x0000, 0x0000, 0x0000, 0x0000, 0x2244,
+ 0x2a22, 0x2a21, 0x2a24, 0x2a2a, 0x2a23, 0x2a29, 0x2921, 0x2a2e,
+ 0x2a32, 0x2a31, 0x2a34, 0x2a33, 0x2a40, 0x2a3f, 0x2a42, 0x2a41,
+ 0x0000, 0x2a50, 0x2a52, 0x2a51, 0x2a54, 0x2a58, 0x2a53, 0x0000,
+ 0x292c, 0x2a63, 0x2a62, 0x2a65, 0x2a64, 0x2a72, 0x2930, 0x294e,
+ 0x2b22, 0x2b21, 0x2b24, 0x2b2a, 0x2b23, 0x2b29, 0x2941, 0x2b2e,
+ 0x2b32, 0x2b31, 0x2b34, 0x2b33, 0x2b40, 0x2b3f, 0x2b42, 0x2b41,
+ 0x2943, 0x2b50, 0x2b52, 0x2b51, 0x2b54, 0x2b58, 0x2b53, 0x0000,
+ 0x294c, 0x2b63, 0x2b62, 0x2b65, 0x2b64, 0x2b72, 0x2950, 0x2b73,
+};
+
+static unsigned short const unicode_to_jisx0212_01[] = {
+ /* 0x0100 - 0x01ff */
+ 0x2a27, 0x2b27, 0x2a25, 0x2b25, 0x2a28, 0x2b28, 0x2a2b, 0x2b2b,
+ 0x2a2c, 0x2b2c, 0x2a2f, 0x2b2f, 0x2a2d, 0x2b2d, 0x2a30, 0x2b30,
+ 0x2922, 0x2942, 0x2a37, 0x2b37, 0x0000, 0x0000, 0x2a36, 0x2b36,
+ 0x2a38, 0x2b38, 0x2a35, 0x2b35, 0x2a3a, 0x2b3a, 0x2a3b, 0x2b3b,
+ 0x2a3d, 0x2b3d, 0x2a3c, 0x0000, 0x2a3e, 0x2b3e, 0x2924, 0x2944,
+ 0x2a47, 0x2b47, 0x2a45, 0x2b45, 0x0000, 0x0000, 0x2a46, 0x2b46,
+ 0x2a44, 0x2945, 0x2926, 0x2946, 0x2a48, 0x2b48, 0x2a49, 0x2b49,
+ 0x2947, 0x2a4a, 0x2b4a, 0x2a4c, 0x2b4c, 0x2a4b, 0x2b4b, 0x2929,
+ 0x2949, 0x2928, 0x2948, 0x2a4d, 0x2b4d, 0x2a4f, 0x2b4f, 0x2a4e,
+ 0x2b4e, 0x294a, 0x292b, 0x294b, 0x2a57, 0x2b57, 0x0000, 0x0000,
+ 0x2a56, 0x2b56, 0x292d, 0x294d, 0x2a59, 0x2b59, 0x2a5b, 0x2b5b,
+ 0x2a5a, 0x2b5a, 0x2a5c, 0x2b5c, 0x2a5d, 0x2b5d, 0x2a5f, 0x2b5f,
+ 0x2a5e, 0x2b5e, 0x2a61, 0x2b61, 0x2a60, 0x2b60, 0x292f, 0x294f,
+ 0x2a6c, 0x2b6c, 0x2a69, 0x2b69, 0x2a66, 0x2b66, 0x2a6b, 0x2b6b,
+ 0x2a68, 0x2b68, 0x2a6a, 0x2b6a, 0x2a71, 0x2b71, 0x2a74, 0x2b74,
+ 0x2a73, 0x2a75, 0x2b75, 0x2a77, 0x2b77, 0x2a76, 0x2b76, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2a26, 0x2b26, 0x2a43,
+ 0x2b43, 0x2a55, 0x2b55, 0x2a67, 0x2b67, 0x2a70, 0x2b70, 0x2a6d,
+ 0x2b6d, 0x2a6f, 0x2b6f, 0x2a6e, 0x2b6e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2b39, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_02[] = {
+ /* 0x0200 - 0x02ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2230,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x222f, 0x2232, 0x2236, 0x2235, 0x0000, 0x2233, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_03[] = {
+ /* 0x0300 - 0x03ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x2238, 0x2239, 0x2661, 0x0000,
+ 0x2662, 0x2663, 0x2664, 0x0000, 0x2667, 0x0000, 0x2669, 0x266c,
+ 0x2676, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2665, 0x266a, 0x2671, 0x2672, 0x2673, 0x2674,
+ 0x267b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2678, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2675, 0x267a, 0x2677, 0x2679, 0x267c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_04[] = {
+ /* 0x0400 - 0x04ff */
+ 0x0000, 0x0000, 0x2742, 0x2743, 0x2744, 0x2745, 0x2746, 0x2747,
+ 0x2748, 0x2749, 0x274a, 0x274b, 0x274c, 0x0000, 0x274d, 0x274e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x2772, 0x2773, 0x2774, 0x2775, 0x2776, 0x2777,
+ 0x2778, 0x2779, 0x277a, 0x277b, 0x277c, 0x0000, 0x277d, 0x277e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_21[] = {
+ /* 0x2100 - 0x21ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2271, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x742d, 0x226f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x737d, 0x737e, 0x7421, 0x7422, 0x7423, 0x7424, 0x7425, 0x7426,
+ 0x7427, 0x7428, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x7373, 0x7374, 0x7375, 0x7376, 0x7377, 0x7378, 0x7379, 0x737a,
+ 0x737b, 0x737c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_32[] = {
+ /* 0x3200 - 0x32ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x742b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_4e[] = {
+ /* 0x4e00 - 0x4eff */
+ 0x0000, 0x0000, 0x3021, 0x0000, 0x3022, 0x3023, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3024, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3025, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3026,
+ 0x0000, 0x0000, 0x0000, 0x3027, 0x3028, 0x0000, 0x0000, 0x0000,
+ 0x3029, 0x0000, 0x0000, 0x302a, 0x0000, 0x0000, 0x302b, 0x302c,
+ 0x302d, 0x0000, 0x0000, 0x0000, 0x0000, 0x302e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x302f, 0x3030, 0x0000, 0x0000, 0x3031, 0x0000, 0x0000, 0x3032,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3033, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3034, 0x0000, 0x3035, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3036, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3037, 0x3038, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3039, 0x303a, 0x0000, 0x0000,
+ 0x0000, 0x303b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x303c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x303d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x303e, 0x303f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3040, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3041,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3042, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3043, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3044, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3045, 0x3046, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3047, 0x3048, 0x3049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x304a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x304b,
+ 0x0000, 0x304c, 0x0000, 0x304d, 0x0000, 0x304e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x742f, 0x304f, 0x3050, 0x3051,
+};
+
+static unsigned short const unicode_to_jisx0212_4f[] = {
+ /* 0x4f00 - 0x4fff */
+ 0x3052, 0x0000, 0x3053, 0x3054, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3055, 0x0000, 0x0000, 0x3056, 0x3057, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3058, 0x0000, 0x0000, 0x3059, 0x305a, 0x305b,
+ 0x0000, 0x305c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x305d, 0x0000,
+ 0x0000, 0x305e, 0x0000, 0x3060, 0x0000, 0x3061, 0x0000, 0x3062,
+ 0x0000, 0x3063, 0x0000, 0x3064, 0x0000, 0x0000, 0x3065, 0x0000,
+ 0x3066, 0x0000, 0x3067, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3068, 0x3069, 0x0000, 0x306a, 0x306b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x306c, 0x0000, 0x306d, 0x0000, 0x306e, 0x0000,
+ 0x306f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3070,
+ 0x305f, 0x0000, 0x0000, 0x3071, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3072, 0x0000, 0x3073, 0x0000, 0x3074, 0x0000,
+ 0x0000, 0x3075, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3076,
+ 0x3077, 0x3078, 0x3079, 0x0000, 0x0000, 0x307a, 0x307b, 0x0000,
+ 0x0000, 0x307c, 0x307d, 0x0000, 0x307e, 0x3121, 0x0000, 0x0000,
+ 0x0000, 0x3122, 0x3123, 0x0000, 0x3124, 0x0000, 0x3125, 0x0000,
+ 0x3126, 0x0000, 0x3127, 0x3128, 0x3129, 0x0000, 0x0000, 0x312a,
+ 0x0000, 0x312b, 0x312c, 0x0000, 0x0000, 0x0000, 0x312d, 0x312e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x312f, 0x0000, 0x0000, 0x0000, 0x0000, 0x3130,
+ 0x0000, 0x3131, 0x0000, 0x3132, 0x3133, 0x3134, 0x3135, 0x0000,
+ 0x3136, 0x3137, 0x0000, 0x0000, 0x0000, 0x3138, 0x3139, 0x0000,
+ 0x313a, 0x313b, 0x0000, 0x313c, 0x313d, 0x313e, 0x0000, 0x313f,
+ 0x0000, 0x0000, 0x3140, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3141, 0x0000, 0x0000, 0x0000,
+ 0x3142, 0x0000, 0x3143, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3144, 0x0000, 0x3145, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3146, 0x3147, 0x0000, 0x3148,
+};
+
+static unsigned short const unicode_to_jisx0212_50[] = {
+ /* 0x5000 - 0x50ff */
+ 0x3149, 0x314a, 0x0000, 0x0000, 0x314b, 0x0000, 0x0000, 0x314c,
+ 0x0000, 0x0000, 0x314d, 0x0000, 0x314e, 0x0000, 0x314f, 0x0000,
+ 0x3150, 0x0000, 0x0000, 0x3151, 0x0000, 0x0000, 0x0000, 0x3152,
+ 0x3153, 0x0000, 0x0000, 0x3154, 0x3155, 0x3156, 0x3157, 0x0000,
+ 0x0000, 0x0000, 0x3158, 0x0000, 0x0000, 0x0000, 0x0000, 0x3159,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x315a, 0x0000,
+ 0x315b, 0x0000, 0x315c, 0x315d, 0x0000, 0x315e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3176, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x315f, 0x3160, 0x3161, 0x0000, 0x0000, 0x3162, 0x3163, 0x0000,
+ 0x0000, 0x0000, 0x3164, 0x0000, 0x3165, 0x0000, 0x3166, 0x0000,
+ 0x0000, 0x3167, 0x3168, 0x3169, 0x0000, 0x0000, 0x0000, 0x316a,
+ 0x0000, 0x316b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x316c,
+ 0x316d, 0x0000, 0x316e, 0x316f, 0x0000, 0x0000, 0x3170, 0x3171,
+ 0x0000, 0x0000, 0x3172, 0x0000, 0x0000, 0x3173, 0x0000, 0x0000,
+ 0x3174, 0x3175, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3177, 0x0000, 0x3178, 0x3179, 0x0000, 0x317a, 0x0000,
+ 0x0000, 0x0000, 0x317b, 0x0000, 0x0000, 0x0000, 0x317c, 0x317d,
+ 0x317e, 0x0000, 0x3221, 0x3222, 0x3223, 0x0000, 0x3224, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3225, 0x3226, 0x0000, 0x3227, 0x3228,
+ 0x3229, 0x322a, 0x322b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x322c, 0x0000, 0x0000, 0x0000, 0x0000, 0x322d,
+ 0x322e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x322f, 0x3230, 0x0000, 0x0000, 0x3231, 0x0000, 0x0000,
+ 0x3232, 0x0000, 0x0000, 0x3233, 0x3234, 0x0000, 0x0000, 0x3235,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3236, 0x0000, 0x3237, 0x0000,
+ 0x3238, 0x0000, 0x0000, 0x3239, 0x323a, 0x0000, 0x0000, 0x0000,
+ 0x323b, 0x0000, 0x0000, 0x0000, 0x323c, 0x323d, 0x0000, 0x323e,
+ 0x0000, 0x0000, 0x323f, 0x0000, 0x3240, 0x0000, 0x3241, 0x0000,
+ 0x3242, 0x3243, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3244,
+ 0x0000, 0x3245, 0x3251, 0x0000, 0x7430, 0x0000, 0x3246, 0x0000,
+ 0x0000, 0x0000, 0x3247, 0x0000, 0x0000, 0x0000, 0x3248, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_51[] = {
+ /* 0x5100 - 0x51ff */
+ 0x0000, 0x0000, 0x0000, 0x3249, 0x0000, 0x0000, 0x324a, 0x324b,
+ 0x324c, 0x0000, 0x0000, 0x324d, 0x324e, 0x324f, 0x3250, 0x0000,
+ 0x3252, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3253,
+ 0x0000, 0x3254, 0x0000, 0x3255, 0x3256, 0x3257, 0x3258, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3259, 0x0000, 0x0000, 0x0000, 0x325a,
+ 0x325b, 0x0000, 0x0000, 0x0000, 0x325c, 0x325d, 0x0000, 0x325e,
+ 0x0000, 0x325f, 0x0000, 0x3260, 0x3261, 0x3262, 0x0000, 0x0000,
+ 0x3263, 0x3264, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3265, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3266, 0x0000, 0x0000, 0x0000, 0x0000, 0x3267,
+ 0x0000, 0x0000, 0x0000, 0x3268, 0x0000, 0x3269, 0x0000, 0x326a,
+ 0x326b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x326c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x326d, 0x0000, 0x326e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x326f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3270, 0x3271, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3272, 0x0000, 0x0000, 0x3273, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3274, 0x0000, 0x0000, 0x0000, 0x0000, 0x3275, 0x0000, 0x0000,
+ 0x0000, 0x3276, 0x0000, 0x3277, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3278, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3279, 0x0000, 0x327a, 0x0000, 0x327b, 0x0000, 0x327c, 0x327d,
+ 0x0000, 0x0000, 0x327e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3322,
+ 0x0000, 0x3323, 0x3324, 0x3325, 0x0000, 0x3326, 0x0000, 0x0000,
+ 0x3327, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3328, 0x0000,
+ 0x0000, 0x0000, 0x3329, 0x0000, 0x0000, 0x332a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7431, 0x0000, 0x332b, 0x0000,
+ 0x0000, 0x0000, 0x332c, 0x332d, 0x332e, 0x0000, 0x0000, 0x332f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_52[] = {
+ /* 0x5200 - 0x52ff */
+ 0x0000, 0x3330, 0x3331, 0x0000, 0x0000, 0x3332, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3333, 0x3334, 0x0000, 0x3335, 0x3336, 0x0000,
+ 0x3337, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3338, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3339, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x333a, 0x333b, 0x0000, 0x0000, 0x333c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x333d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x333e, 0x0000, 0x0000,
+ 0x0000, 0x333f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3340, 0x0000, 0x3341,
+ 0x3342, 0x0000, 0x3343, 0x0000, 0x3344, 0x0000, 0x0000, 0x3345,
+ 0x3346, 0x3347, 0x0000, 0x0000, 0x0000, 0x0000, 0x3348, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3349, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x334a,
+ 0x334b, 0x334c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x334d, 0x0000, 0x334e, 0x0000, 0x0000, 0x334f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3350, 0x0000, 0x3351, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3352, 0x0000, 0x3353, 0x3354, 0x3355,
+ 0x3356, 0x0000, 0x3357, 0x0000, 0x3358, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3359, 0x335a, 0x335b, 0x335c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x335d,
+ 0x335e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x335f, 0x3360,
+ 0x3361, 0x0000, 0x3362, 0x3363, 0x0000, 0x3364, 0x0000, 0x0000,
+ 0x3365, 0x0000, 0x0000, 0x0000, 0x3366, 0x0000, 0x3367, 0x0000,
+ 0x3368, 0x0000, 0x0000, 0x0000, 0x3369, 0x0000, 0x0000, 0x336a,
+ 0x0000, 0x336b, 0x0000, 0x0000, 0x336c, 0x0000, 0x336d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x336e, 0x336f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3370, 0x0000, 0x0000, 0x0000, 0x3371, 0x0000, 0x0000,
+ 0x3372, 0x3373, 0x3374, 0x0000, 0x3375, 0x0000, 0x0000, 0x0000,
+ 0x3376, 0x3377, 0x0000, 0x0000, 0x3378, 0x0000, 0x3379, 0x337a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_53[] = {
+ /* 0x5300 - 0x53ff */
+ 0x337b, 0x0000, 0x0000, 0x337c, 0x0000, 0x0000, 0x0000, 0x7432,
+ 0x0000, 0x0000, 0x337d, 0x337e, 0x3421, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3422, 0x0000, 0x3423, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3424, 0x0000, 0x0000, 0x3425, 0x3426, 0x0000, 0x3427, 0x3428,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7433, 0x3429, 0x0000, 0x342a,
+ 0x342b, 0x342c, 0x0000, 0x342d, 0x342e, 0x342f, 0x0000, 0x0000,
+ 0x3430, 0x0000, 0x3431, 0x0000, 0x0000, 0x3432, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3433, 0x3434, 0x3435, 0x0000,
+ 0x0000, 0x0000, 0x3436, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3438, 0x3437, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3439, 0x0000, 0x343a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x343b, 0x0000, 0x343c, 0x0000, 0x343d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x343e, 0x343f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3440, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3441, 0x0000, 0x0000, 0x0000, 0x0000, 0x3442, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3443, 0x0000, 0x0000, 0x0000, 0x3444,
+ 0x3445, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3446, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3447, 0x3448, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3449, 0x0000, 0x0000, 0x0000, 0x344a, 0x0000, 0x0000,
+ 0x0000, 0x344b, 0x0000, 0x0000, 0x344c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x344d, 0x344e, 0x0000, 0x0000, 0x0000, 0x344f,
+ 0x0000, 0x0000, 0x3450, 0x0000, 0x3451, 0x3452, 0x0000, 0x3453,
+ 0x3454, 0x0000, 0x3455, 0x0000, 0x0000, 0x3456, 0x0000, 0x0000,
+ 0x3457, 0x0000, 0x0000, 0x0000, 0x0000, 0x3458, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3459,
+ 0x0000, 0x0000, 0x345a, 0x345b, 0x0000, 0x345c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x345d, 0x0000, 0x0000, 0x345e, 0x345f, 0x0000,
+ 0x3460, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3461, 0x3462,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3463, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_54[] = {
+ /* 0x5400 - 0x54ff */
+ 0x0000, 0x0000, 0x3464, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3465, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3466, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3467, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3468,
+ 0x3469, 0x0000, 0x346a, 0x0000, 0x0000, 0x0000, 0x0000, 0x346b,
+ 0x0000, 0x346c, 0x0000, 0x0000, 0x346d, 0x346e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x346f, 0x3470, 0x0000, 0x0000, 0x3471,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3472, 0x0000, 0x3473,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3474, 0x0000,
+ 0x0000, 0x0000, 0x3475, 0x0000, 0x3476, 0x0000, 0x3477, 0x3478,
+ 0x0000, 0x3479, 0x0000, 0x347a, 0x0000, 0x347b, 0x347c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x347d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x347e,
+ 0x0000, 0x3521, 0x0000, 0x3522, 0x0000, 0x3523, 0x0000, 0x0000,
+ 0x3524, 0x3525, 0x7435, 0x0000, 0x0000, 0x3526, 0x0000, 0x0000,
+ 0x0000, 0x3527, 0x0000, 0x0000, 0x0000, 0x3528, 0x3529, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x352a, 0x0000, 0x0000, 0x352b,
+ 0x0000, 0x352c, 0x0000, 0x0000, 0x0000, 0x0000, 0x352d, 0x352e,
+ 0x0000, 0x352f, 0x3530, 0x0000, 0x0000, 0x3531, 0x3532, 0x0000,
+ 0x0000, 0x3533, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3534,
+ 0x0000, 0x3535, 0x3536, 0x3537, 0x0000, 0x0000, 0x0000, 0x3538,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3539, 0x0000,
+ 0x0000, 0x0000, 0x353a, 0x0000, 0x0000, 0x353b, 0x353c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x353d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x353e, 0x0000, 0x353f, 0x0000, 0x0000, 0x3540,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3541, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3542, 0x0000, 0x3543, 0x3544,
+};
+
+static unsigned short const unicode_to_jisx0212_55[] = {
+ /* 0x5500 - 0x55ff */
+ 0x3545, 0x3546, 0x0000, 0x0000, 0x0000, 0x3547, 0x0000, 0x0000,
+ 0x3548, 0x3549, 0x0000, 0x0000, 0x354a, 0x354b, 0x354c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x354d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x354e, 0x354f, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3550, 0x0000, 0x0000, 0x3551, 0x3552, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3553, 0x3554, 0x3555, 0x0000, 0x0000,
+ 0x0000, 0x3556, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3557,
+ 0x0000, 0x3558, 0x3559, 0x0000, 0x0000, 0x355a, 0x0000, 0x0000,
+ 0x355b, 0x355c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x355d, 0x0000, 0x355e, 0x355f, 0x0000, 0x0000, 0x3560, 0x0000,
+ 0x3561, 0x3562, 0x0000, 0x0000, 0x3563, 0x0000, 0x3564, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3565,
+ 0x0000, 0x3566, 0x3567, 0x0000, 0x0000, 0x0000, 0x3568, 0x0000,
+ 0x3569, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x356a, 0x356b,
+ 0x0000, 0x356c, 0x356d, 0x356e, 0x356f, 0x0000, 0x0000, 0x3570,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3571, 0x3572, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3573, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3574, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3575,
+ 0x0000, 0x3576, 0x0000, 0x3577, 0x0000, 0x0000, 0x3578, 0x0000,
+ 0x0000, 0x3579, 0x0000, 0x357a, 0x357b, 0x0000, 0x357c, 0x0000,
+ 0x0000, 0x357d, 0x357e, 0x3621, 0x0000, 0x0000, 0x0000, 0x3622,
+ 0x3623, 0x0000, 0x0000, 0x3624, 0x0000, 0x0000, 0x3625, 0x0000,
+ 0x0000, 0x0000, 0x3626, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3627, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3628, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3629,
+};
+
+static unsigned short const unicode_to_jisx0212_56[] = {
+ /* 0x5600 - 0x56ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x362a, 0x0000, 0x0000,
+ 0x362b, 0x0000, 0x362c, 0x0000, 0x0000, 0x362d, 0x362e, 0x362f,
+ 0x3630, 0x3631, 0x3632, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3633, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3634, 0x0000, 0x0000, 0x0000,
+ 0x3635, 0x0000, 0x0000, 0x3636, 0x0000, 0x3637, 0x0000, 0x3638,
+ 0x0000, 0x3639, 0x0000, 0x363a, 0x363b, 0x363c, 0x0000, 0x363d,
+ 0x363e, 0x363f, 0x0000, 0x3640, 0x3641, 0x0000, 0x3642, 0x0000,
+ 0x0000, 0x3643, 0x0000, 0x3644, 0x0000, 0x3645, 0x0000, 0x3646,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3647, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3648, 0x0000,
+ 0x3649, 0x364a, 0x364b, 0x364c, 0x0000, 0x0000, 0x364d, 0x0000,
+ 0x0000, 0x364e, 0x0000, 0x0000, 0x0000, 0x364f, 0x0000, 0x3650,
+ 0x0000, 0x3651, 0x3652, 0x0000, 0x0000, 0x3653, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3654, 0x3655, 0x0000, 0x0000,
+ 0x3656, 0x0000, 0x0000, 0x3657, 0x3658, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3659, 0x0000, 0x0000,
+ 0x0000, 0x365a, 0x365b, 0x0000, 0x0000, 0x365c, 0x365d, 0x365e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x365f, 0x3660,
+ 0x3661, 0x3662, 0x0000, 0x3663, 0x3664, 0x3665, 0x0000, 0x0000,
+ 0x0000, 0x3666, 0x0000, 0x3667, 0x0000, 0x0000, 0x0000, 0x3668,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3669, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x366a, 0x0000, 0x0000,
+ 0x0000, 0x366b, 0x366c, 0x366d, 0x3670, 0x3671, 0x0000, 0x366e,
+ 0x366f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3672, 0x0000, 0x0000, 0x3673, 0x3674, 0x0000, 0x3675,
+ 0x0000, 0x3676, 0x0000, 0x0000, 0x3677, 0x3678, 0x3679, 0x367a,
+ 0x367b, 0x0000, 0x0000, 0x367d, 0x0000, 0x367e, 0x0000, 0x0000,
+ 0x0000, 0x367c, 0x0000, 0x0000, 0x0000, 0x0000, 0x3721, 0x3722,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_57[] = {
+ /* 0x5700 - 0x57ff */
+ 0x0000, 0x3723, 0x3724, 0x0000, 0x0000, 0x0000, 0x0000, 0x3725,
+ 0x0000, 0x0000, 0x3726, 0x0000, 0x3727, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3728, 0x0000, 0x0000, 0x0000, 0x3729, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x372a, 0x372b, 0x0000, 0x372c, 0x0000, 0x0000,
+ 0x372d, 0x0000, 0x372e, 0x372f, 0x3730, 0x3731, 0x0000, 0x0000,
+ 0x0000, 0x3732, 0x3733, 0x0000, 0x3734, 0x0000, 0x3735, 0x3736,
+ 0x0000, 0x0000, 0x0000, 0x3737, 0x3738, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3739, 0x373a, 0x373b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x373c, 0x373d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x373e, 0x373f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3740, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7436, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3741, 0x0000, 0x0000, 0x3742, 0x0000, 0x3743,
+ 0x3744, 0x0000, 0x0000, 0x3745, 0x0000, 0x3746, 0x3747, 0x3748,
+ 0x3749, 0x374a, 0x0000, 0x374b, 0x374c, 0x374d, 0x0000, 0x374e,
+ 0x0000, 0x374f, 0x3750, 0x3751, 0x3752, 0x0000, 0x3753, 0x0000,
+ 0x0000, 0x3754, 0x0000, 0x3755, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3756, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3757, 0x3760, 0x0000, 0x3758,
+ 0x0000, 0x3759, 0x375a, 0x0000, 0x375b, 0x375c, 0x375d, 0x375e,
+ 0x0000, 0x375f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3761,
+ 0x3762, 0x3763, 0x0000, 0x0000, 0x3764, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3765, 0x0000, 0x0000, 0x0000, 0x0000, 0x3766, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3767,
+ 0x3768, 0x0000, 0x0000, 0x0000, 0x3769, 0x0000, 0x0000, 0x376a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x376b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x376c, 0x376d, 0x0000,
+ 0x0000, 0x377e, 0x0000, 0x0000, 0x376e, 0x0000, 0x376f, 0x3770,
+ 0x0000, 0x3771, 0x0000, 0x0000, 0x0000, 0x3772, 0x0000, 0x0000,
+ 0x3773, 0x0000, 0x0000, 0x0000, 0x0000, 0x3774, 0x3775, 0x0000,
+ 0x3776, 0x0000, 0x0000, 0x0000, 0x0000, 0x3777, 0x3778, 0x3779,
+};
+
+static unsigned short const unicode_to_jisx0212_58[] = {
+ /* 0x5800 - 0x58ff */
+ 0x0000, 0x0000, 0x0000, 0x377a, 0x377b, 0x0000, 0x0000, 0x0000,
+ 0x377c, 0x377d, 0x0000, 0x0000, 0x3821, 0x3822, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3823, 0x0000, 0x0000, 0x3824, 0x3825,
+ 0x3826, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3827, 0x3828,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3829, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x382a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x382b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x382c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x382d, 0x0000, 0x0000, 0x382e, 0x382f, 0x0000, 0x3830,
+ 0x3831, 0x0000, 0x0000, 0x0000, 0x0000, 0x3832, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3833,
+ 0x0000, 0x3834, 0x0000, 0x0000, 0x3835, 0x0000, 0x0000, 0x3836,
+ 0x3837, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3838, 0x0000, 0x0000, 0x0000, 0x3839, 0x0000, 0x0000, 0x383a,
+ 0x383b, 0x383c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x383d,
+ 0x383e, 0x383f, 0x3840, 0x0000, 0x3841, 0x3842, 0x0000, 0x3843,
+ 0x3844, 0x0000, 0x0000, 0x0000, 0x3845, 0x0000, 0x3846, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3847, 0x7439, 0x0000,
+ 0x3848, 0x3849, 0x384a, 0x0000, 0x0000, 0x0000, 0x384b, 0x0000,
+ 0x0000, 0x384c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x384d, 0x384e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3850, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3851, 0x0000, 0x384f, 0x0000, 0x0000, 0x0000,
+ 0x3852, 0x0000, 0x0000, 0x0000, 0x0000, 0x3853, 0x3854, 0x0000,
+ 0x3855, 0x0000, 0x3856, 0x0000, 0x3857, 0x0000, 0x3858, 0x0000,
+ 0x0000, 0x0000, 0x3859, 0x0000, 0x0000, 0x385a, 0x0000, 0x0000,
+ 0x0000, 0x385b, 0x385c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x385d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x385e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_59[] = {
+ /* 0x5900 - 0x59ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x385f, 0x3860, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3861, 0x3862, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3863, 0x3864, 0x3865, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3867, 0x0000, 0x0000,
+ 0x0000, 0x3868, 0x0000, 0x3869, 0x386a, 0x0000, 0x0000, 0x0000,
+ 0x386b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x386c,
+ 0x386d, 0x0000, 0x0000, 0x386e, 0x0000, 0x386f, 0x3870, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3871,
+ 0x0000, 0x0000, 0x0000, 0x3872, 0x0000, 0x0000, 0x3873, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3874, 0x3875, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3876, 0x0000, 0x3877, 0x0000, 0x3878, 0x3879, 0x387a,
+ 0x0000, 0x387b, 0x0000, 0x387c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x387d, 0x0000, 0x387e, 0x0000, 0x3921,
+ 0x0000, 0x0000, 0x3922, 0x0000, 0x0000, 0x3923, 0x3924, 0x0000,
+ 0x0000, 0x3925, 0x0000, 0x3926, 0x3927, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3928, 0x3929, 0x0000, 0x392a, 0x0000,
+ 0x0000, 0x0000, 0x392b, 0x0000, 0x0000, 0x392c, 0x0000, 0x392d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x392e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x392f, 0x0000, 0x0000, 0x3930,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3931, 0x3932, 0x3933,
+ 0x3934, 0x0000, 0x0000, 0x3935, 0x0000, 0x0000, 0x0000, 0x3936,
+ 0x0000, 0x0000, 0x3937, 0x0000, 0x3938, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3939, 0x0000, 0x393a, 0x393b, 0x0000, 0x0000, 0x0000,
+ 0x393c, 0x0000, 0x393d, 0x0000, 0x0000, 0x393e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x393f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3940, 0x3941, 0x3942,
+ 0x0000, 0x0000, 0x0000, 0x3943, 0x3944, 0x0000, 0x0000, 0x3945,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3946, 0x3947,
+ 0x0000, 0x3948, 0x3949, 0x0000, 0x394a, 0x0000, 0x0000, 0x394b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_5a[] = {
+ /* 0x5a00 - 0x5aff */
+ 0x394c, 0x0000, 0x0000, 0x0000, 0x394d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x394e, 0x394f, 0x3950, 0x0000,
+ 0x0000, 0x0000, 0x3951, 0x3952, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3953, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3954, 0x3955, 0x0000, 0x0000, 0x3956,
+ 0x3957, 0x0000, 0x3958, 0x0000, 0x0000, 0x3959, 0x0000, 0x0000,
+ 0x395a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x395b, 0x395c, 0x0000, 0x395d,
+ 0x395e, 0x0000, 0x0000, 0x0000, 0x395f, 0x0000, 0x0000, 0x0000,
+ 0x3960, 0x0000, 0x0000, 0x0000, 0x0000, 0x3961, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3962, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3963, 0x0000, 0x3964, 0x0000, 0x3965,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3966, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3967,
+ 0x0000, 0x0000, 0x3968, 0x3969, 0x0000, 0x0000, 0x396a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x396b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x396c, 0x0000, 0x0000, 0x396d, 0x0000, 0x0000, 0x396e, 0x0000,
+ 0x0000, 0x396f, 0x0000, 0x0000, 0x3970, 0x0000, 0x3971, 0x3972,
+ 0x3973, 0x0000, 0x3974, 0x0000, 0x0000, 0x0000, 0x0000, 0x3975,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3976, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3977, 0x3978, 0x3979, 0x0000, 0x397a, 0x0000, 0x0000,
+ 0x397b, 0x0000, 0x397c, 0x397d, 0x0000, 0x0000, 0x0000, 0x397e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3a21, 0x0000, 0x3a22, 0x0000,
+ 0x3a23, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a24,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3a25, 0x0000, 0x3a26, 0x0000, 0x0000, 0x0000,
+ 0x3a27, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a28, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3a29, 0x0000, 0x0000, 0x0000, 0x3a2a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a2b, 0x3a2c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a2d, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_5b[] = {
+ /* 0x5b00 - 0x5bff */
+ 0x3a2e, 0x3a2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3a30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a31,
+ 0x0000, 0x3a33, 0x0000, 0x3a34, 0x0000, 0x3a35, 0x0000, 0x0000,
+ 0x0000, 0x3a36, 0x0000, 0x0000, 0x0000, 0x3a37, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a38, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3a32, 0x0000, 0x0000, 0x0000,
+ 0x3a39, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3a3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3a3b, 0x3a3c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3a3d, 0x0000, 0x0000, 0x0000, 0x3a3e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a3f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3a40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a41, 0x3a42,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3a43, 0x3a44, 0x3a45, 0x3a46,
+ 0x0000, 0x3a47, 0x0000, 0x0000, 0x3a48, 0x0000, 0x3a49, 0x0000,
+ 0x0000, 0x0000, 0x3a4a, 0x0000, 0x0000, 0x0000, 0x3a4b, 0x0000,
+ 0x3a4c, 0x3a4d, 0x0000, 0x3a4e, 0x3a4f, 0x0000, 0x3a50, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3a51, 0x3a52, 0x0000, 0x0000, 0x3a53, 0x3a54, 0x0000, 0x3a55,
+ 0x0000, 0x3a56, 0x3a57, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a58,
+ 0x0000, 0x0000, 0x3a59, 0x0000, 0x3a5a, 0x0000, 0x0000, 0x0000,
+ 0x3a5b, 0x3a5c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a5d, 0x0000, 0x3a5e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a5f, 0x3a60,
+ 0x3a61, 0x3a62, 0x3a63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3a64, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x743a, 0x0000, 0x0000, 0x3a65,
+ 0x0000, 0x3a66, 0x0000, 0x0000, 0x3a67, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a68, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_5c[] = {
+ /* 0x5c00 - 0x5cff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3a69, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a6a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a6b, 0x3a6c,
+ 0x0000, 0x0000, 0x0000, 0x3a6d, 0x0000, 0x0000, 0x3a6e, 0x0000,
+ 0x0000, 0x3a6f, 0x0000, 0x3a70, 0x3a71, 0x0000, 0x3a72, 0x0000,
+ 0x3a73, 0x0000, 0x3a74, 0x0000, 0x0000, 0x3a75, 0x3a76, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3a77, 0x3a78, 0x0000, 0x3a79, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3a7a, 0x3a7b, 0x0000, 0x0000, 0x0000, 0x3a7c,
+ 0x3a7d, 0x3a7e, 0x0000, 0x0000, 0x0000, 0x3b21, 0x0000, 0x0000,
+ 0x3b22, 0x0000, 0x0000, 0x0000, 0x3b23, 0x3b24, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3b25, 0x3b26, 0x3b27, 0x3b28, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b29,
+ 0x3b2a, 0x0000, 0x3b2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b2c,
+ 0x0000, 0x0000, 0x3b2d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b2e, 0x0000, 0x3b2f,
+ 0x3b30, 0x0000, 0x3b31, 0x3b32, 0x0000, 0x0000, 0x3b33, 0x0000,
+ 0x0000, 0x0000, 0x3b34, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3b35, 0x0000, 0x3b36, 0x3b37, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3b38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3b39, 0x0000, 0x3b3a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3b3b, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b3d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b3c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b3e, 0x0000,
+ 0x0000, 0x3b3f, 0x3b40, 0x0000, 0x3b41, 0x743b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_5d[] = {
+ /* 0x5d00 - 0x5dff */
+ 0x0000, 0x3b42, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b43, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b44, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3b45, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3b47, 0x3b48, 0x0000, 0x3b49, 0x3b4a,
+ 0x0000, 0x0000, 0x0000, 0x3b46, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3b4b, 0x0000, 0x0000, 0x3b4c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3b4d, 0x0000, 0x0000, 0x0000, 0x3b4e, 0x0000, 0x3b4f,
+ 0x0000, 0x0000, 0x3b50, 0x3b51, 0x0000, 0x0000, 0x3b52, 0x0000,
+ 0x3b53, 0x0000, 0x3b57, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3b55, 0x0000, 0x743c, 0x0000, 0x3b54, 0x0000, 0x0000,
+ 0x0000, 0x3b56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b58,
+ 0x3b59, 0x3b5a, 0x3b5b, 0x0000, 0x3b5c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3b5d, 0x0000, 0x0000, 0x3b5e, 0x0000, 0x0000,
+ 0x3b5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3b60, 0x3b61, 0x0000, 0x0000, 0x0000, 0x3b62, 0x3b63,
+ 0x0000, 0x3b64, 0x0000, 0x3b65, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3b66, 0x0000, 0x3b67, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3b68, 0x3b69, 0x3b6a, 0x3b6b, 0x0000, 0x0000,
+ 0x0000, 0x3b6c, 0x0000, 0x3b6d, 0x0000, 0x0000, 0x0000, 0x3b6e,
+ 0x3b6f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b70,
+ 0x0000, 0x0000, 0x0000, 0x3b71, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3b72, 0x0000, 0x6674, 0x0000, 0x3b73, 0x0000, 0x0000, 0x0000,
+ 0x3b74, 0x3b75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3b76, 0x0000, 0x0000, 0x0000, 0x3b77,
+ 0x0000, 0x0000, 0x0000, 0x3b78, 0x0000, 0x0000, 0x3b7a, 0x0000,
+ 0x3b79, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3b7b, 0x3b7c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3b7d, 0x0000, 0x0000, 0x0000, 0x3b7e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3c21, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3c22, 0x3c23, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_5e[] = {
+ /* 0x5e00 - 0x5eff */
+ 0x3c24, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c25,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c26, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3c27, 0x0000, 0x3c28, 0x3c29, 0x0000, 0x0000,
+ 0x3c2a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c2b,
+ 0x3c2c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3c2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c2d, 0x0000,
+ 0x0000, 0x0000, 0x3c2f, 0x0000, 0x0000, 0x3c30, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c31, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3c34, 0x0000, 0x3c32, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3c33, 0x3c35, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c36, 0x0000,
+ 0x3c37, 0x0000, 0x0000, 0x3c38, 0x3c39, 0x0000, 0x3c3a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3c3b, 0x0000, 0x3c3c, 0x3c3d, 0x3c3e, 0x3c3f, 0x3c40, 0x0000,
+ 0x3c41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3c42, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3c43, 0x0000, 0x0000, 0x3c44, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3c45, 0x0000, 0x3c46, 0x3c47, 0x0000, 0x0000,
+ 0x3c48, 0x0000, 0x3c49, 0x0000, 0x3c4a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3c4b, 0x0000, 0x3c4c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c4d, 0x3c4e, 0x3c4f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c50, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3c52, 0x3c51, 0x0000, 0x3c53, 0x0000,
+ 0x0000, 0x3c54, 0x3c55, 0x0000, 0x3c56, 0x3c57, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3c58, 0x0000, 0x3c59, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c5a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3c5b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_5f[] = {
+ /* 0x5f00 - 0x5fff */
+ 0x0000, 0x0000, 0x3c5c, 0x0000, 0x0000, 0x0000, 0x3c5d, 0x3c5e,
+ 0x3c5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c60, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3c61, 0x0000, 0x0000, 0x3c62, 0x3c63, 0x0000, 0x0000,
+ 0x0000, 0x3c64, 0x3c65, 0x3c66, 0x3c67, 0x0000, 0x0000, 0x0000,
+ 0x3c68, 0x0000, 0x0000, 0x3c69, 0x3c6a, 0x0000, 0x3c6b, 0x0000,
+ 0x3c6c, 0x0000, 0x0000, 0x0000, 0x3c6d, 0x0000, 0x3c6e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3c6f, 0x0000, 0x3c70, 0x0000, 0x3c71,
+ 0x3c72, 0x0000, 0x0000, 0x0000, 0x3c73, 0x3c74, 0x0000, 0x3c75,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c76, 0x0000, 0x0000,
+ 0x3c77, 0x0000, 0x0000, 0x0000, 0x3c78, 0x0000, 0x0000, 0x0000,
+ 0x3c79, 0x0000, 0x0000, 0x3c7a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3c7b, 0x0000, 0x0000, 0x3c7c, 0x3c7d, 0x0000, 0x0000, 0x3c7e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d21,
+ 0x0000, 0x0000, 0x3d22, 0x0000, 0x3d23, 0x3d24, 0x0000, 0x0000,
+ 0x3d25, 0x0000, 0x3d26, 0x0000, 0x0000, 0x3d27, 0x3d28, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3d29, 0x0000, 0x0000, 0x0000, 0x3d2a, 0x0000, 0x3d2b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d2c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3d2d, 0x3d2e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3d2f, 0x0000, 0x3d32, 0x0000, 0x0000, 0x3d30,
+ 0x0000, 0x0000, 0x0000, 0x3d31, 0x3d33, 0x0000, 0x0000, 0x3d34,
+ 0x3d35, 0x3d36, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x743e,
+ 0x3d37, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3d38, 0x0000, 0x0000, 0x3d39,
+ 0x3d3a, 0x3d3b, 0x0000, 0x3d3c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3d3d, 0x3d3e, 0x3d3f, 0x3d40, 0x3d41, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d42, 0x0000,
+ 0x0000, 0x3d43, 0x3d44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3d45, 0x3d46, 0x3d47, 0x0000, 0x3d48, 0x3d49, 0x3d4a, 0x3d4b,
+ 0x0000, 0x0000, 0x3d4c, 0x3d4d, 0x0000, 0x0000, 0x3d4e, 0x0000,
+ 0x0000, 0x0000, 0x3d4f, 0x0000, 0x3d50, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_60[] = {
+ /* 0x6000 - 0x60ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d51,
+ 0x0000, 0x0000, 0x3d52, 0x0000, 0x0000, 0x3d53, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3d54, 0x3d55, 0x0000, 0x0000, 0x3d56,
+ 0x3d57, 0x0000, 0x3d58, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d59,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3d5a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d5b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3d5c, 0x0000, 0x3d5d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3d5e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d5f,
+ 0x3d60, 0x3d61, 0x0000, 0x0000, 0x3d62, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3d63, 0x0000, 0x0000, 0x3d64, 0x0000, 0x3d65, 0x3d66,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d67, 0x0000, 0x0000,
+ 0x0000, 0x3d68, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d69,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3d6a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d6b, 0x3d6c,
+ 0x0000, 0x0000, 0x3d6d, 0x0000, 0x0000, 0x743f, 0x3d6e, 0x0000,
+ 0x3d6f, 0x0000, 0x3d70, 0x0000, 0x0000, 0x0000, 0x3d71, 0x0000,
+ 0x0000, 0x3d72, 0x0000, 0x3d73, 0x0000, 0x3d74, 0x0000, 0x0000,
+ 0x3d75, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d76, 0x3d77, 0x0000,
+ 0x0000, 0x0000, 0x3d78, 0x0000, 0x3d79, 0x3d7a, 0x0000, 0x0000,
+ 0x3d7b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3d7c, 0x3d7d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d7e,
+ 0x0000, 0x0000, 0x0000, 0x3e21, 0x0000, 0x0000, 0x3e22, 0x0000,
+ 0x0000, 0x0000, 0x3e23, 0x0000, 0x3e24, 0x0000, 0x0000, 0x0000,
+ 0x3e25, 0x3e26, 0x3e27, 0x3e28, 0x0000, 0x0000, 0x3e29, 0x3e2a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3e2b, 0x3e2c, 0x0000, 0x0000,
+ 0x0000, 0x3e2d, 0x0000, 0x3e2e, 0x0000, 0x3e2f, 0x3e30, 0x0000,
+ 0x0000, 0x0000, 0x3e31, 0x0000, 0x0000, 0x3e32, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3e33, 0x0000, 0x0000, 0x3e34, 0x0000, 0x0000,
+ 0x3e35, 0x0000, 0x0000, 0x0000, 0x3e36, 0x3e37, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_61[] = {
+ /* 0x6100 - 0x61ff */
+ 0x0000, 0x0000, 0x3e38, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e39,
+ 0x0000, 0x0000, 0x3e3a, 0x0000, 0x3e3b, 0x0000, 0x0000, 0x0000,
+ 0x3e3c, 0x3e3d, 0x3e3e, 0x3e3f, 0x3e40, 0x0000, 0x3e41, 0x3e42,
+ 0x0000, 0x3e43, 0x0000, 0x0000, 0x3e44, 0x0000, 0x3e45, 0x0000,
+ 0x7440, 0x0000, 0x3e46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3e47, 0x3e48, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3e49, 0x3e4a, 0x0000, 0x0000, 0x0000, 0x3e4b, 0x3e4c, 0x3e4d,
+ 0x0000, 0x3e4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3e4f, 0x0000, 0x0000, 0x0000, 0x3e50, 0x3e51, 0x0000,
+ 0x0000, 0x3e52, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e53, 0x0000,
+ 0x3e54, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3e55, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3e56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3e57, 0x0000, 0x0000, 0x3e58, 0x3e59, 0x0000, 0x0000, 0x3e5a,
+ 0x3e5b, 0x3e5c, 0x0000, 0x3e5d, 0x3e5e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3e5f, 0x0000, 0x3e60, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3e61, 0x3e62, 0x0000, 0x0000, 0x0000, 0x3e63,
+ 0x3e64, 0x0000, 0x0000, 0x0000, 0x3e65, 0x3e66, 0x0000, 0x3e67,
+ 0x3e68, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e69, 0x0000, 0x0000,
+ 0x3e6a, 0x0000, 0x3e6b, 0x0000, 0x0000, 0x3e6c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x3e6d, 0x3e6e, 0x0000, 0x0000, 0x3e6f, 0x0000, 0x0000, 0x0000,
+ 0x3e70, 0x3e71, 0x3e72, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e73, 0x3e74,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e75, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3e76, 0x3e77, 0x3e78, 0x3e79,
+ 0x0000, 0x3e7a, 0x3e7b, 0x0000, 0x0000, 0x3e7e, 0x0000, 0x3e7c,
+ 0x0000, 0x3e7d, 0x0000, 0x0000, 0x3f21, 0x3f22, 0x0000, 0x3f23,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_62[] = {
+ /* 0x6200 - 0x62ff */
+ 0x0000, 0x3f24, 0x0000, 0x3f25, 0x3f26, 0x0000, 0x0000, 0x3f27,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3f28, 0x0000, 0x3f29, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3f2a, 0x0000, 0x0000, 0x0000,
+ 0x3f2b, 0x0000, 0x3f2c, 0x3f2d, 0x0000, 0x0000, 0x0000, 0x3f2e,
+ 0x0000, 0x3f2f, 0x0000, 0x3f30, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3f31, 0x0000, 0x0000, 0x0000, 0x3f32, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3f33, 0x3f34, 0x3f35, 0x0000, 0x3f36, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3f37, 0x0000, 0x0000, 0x0000,
+ 0x3f38, 0x3f39, 0x3f3a, 0x0000, 0x3f3b, 0x0000, 0x3f3c, 0x0000,
+ 0x0000, 0x0000, 0x3f3d, 0x0000, 0x3f3e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3f3f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f40, 0x0000, 0x3f41,
+ 0x0000, 0x0000, 0x0000, 0x3f42, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3f43, 0x0000, 0x0000, 0x3f44, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f45, 0x3f46, 0x3f47,
+ 0x3f48, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f49, 0x0000,
+ 0x3f4a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x3f4b, 0x0000, 0x0000, 0x3f4c, 0x3f4d,
+ 0x0000, 0x0000, 0x3f4e, 0x0000, 0x0000, 0x0000, 0x3f4f, 0x3f50,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3f51, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f52, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f53, 0x3f54, 0x0000,
+ 0x0000, 0x0000, 0x3f55, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3f56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3f57, 0x0000, 0x3f58, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3f59, 0x3f5a, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_63[] = {
+ /* 0x6300 - 0x63ff */
+ 0x0000, 0x0000, 0x0000, 0x3f5b, 0x3f5c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x3f5d, 0x3f5e, 0x0000, 0x3f5f, 0x0000, 0x0000,
+ 0x3f60, 0x0000, 0x0000, 0x3f61, 0x0000, 0x0000, 0x3f62, 0x0000,
+ 0x3f63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3f64, 0x3f65, 0x0000, 0x0000, 0x3f66, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f67, 0x3f68, 0x0000,
+ 0x0000, 0x3f69, 0x0000, 0x0000, 0x3f6a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x3f6b, 0x3f6c, 0x3f6d, 0x3f6e, 0x0000, 0x3f6f, 0x0000,
+ 0x0000, 0x0000, 0x3f70, 0x3f71, 0x0000, 0x0000, 0x3f72, 0x0000,
+ 0x0000, 0x0000, 0x3f73, 0x3f74, 0x3f75, 0x0000, 0x0000, 0x0000,
+ 0x3f76, 0x0000, 0x0000, 0x3f77, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f78, 0x3f79, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x3f7a, 0x3f7b, 0x0000, 0x0000,
+ 0x0000, 0x3f7c, 0x0000, 0x0000, 0x3f7d, 0x3f7e, 0x0000, 0x0000,
+ 0x4021, 0x0000, 0x0000, 0x0000, 0x4022, 0x4023, 0x0000, 0x4024,
+ 0x0000, 0x0000, 0x4025, 0x0000, 0x4026, 0x0000, 0x0000, 0x4027,
+ 0x0000, 0x0000, 0x4028, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4029, 0x0000, 0x0000, 0x0000, 0x402a, 0x402b, 0x0000, 0x0000,
+ 0x0000, 0x402c, 0x402d, 0x0000, 0x0000, 0x0000, 0x402e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x402f, 0x0000, 0x4030, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4031, 0x4032, 0x4033,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4034, 0x0000, 0x0000,
+ 0x0000, 0x4035, 0x0000, 0x0000, 0x0000, 0x4036, 0x0000, 0x0000,
+ 0x4037, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4038, 0x0000,
+ 0x0000, 0x4039, 0x0000, 0x403a, 0x403b, 0x403c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x403d, 0x0000, 0x0000, 0x0000,
+ 0x403e, 0x0000, 0x0000, 0x0000, 0x0000, 0x403f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4040, 0x0000, 0x4041, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4042, 0x4043, 0x0000, 0x4044, 0x0000, 0x0000,
+ 0x4045, 0x4046, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_64[] = {
+ /* 0x6400 - 0x64ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4047, 0x4048, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4049, 0x0000, 0x404a, 0x0000, 0x404b, 0x0000, 0x0000, 0x0000,
+ 0x404c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x404d, 0x0000,
+ 0x404e, 0x0000, 0x404f, 0x0000, 0x4050, 0x4051, 0x0000, 0x0000,
+ 0x0000, 0x4052, 0x4053, 0x0000, 0x0000, 0x0000, 0x0000, 0x4054,
+ 0x4055, 0x0000, 0x0000, 0x0000, 0x0000, 0x4056, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4057, 0x0000, 0x4058,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4059, 0x0000, 0x0000, 0x0000, 0x405a,
+ 0x0000, 0x405b, 0x405c, 0x405d, 0x405e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x405f, 0x4060, 0x4061, 0x4062, 0x0000, 0x4063,
+ 0x4064, 0x4065, 0x0000, 0x4066, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4067, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4068, 0x4069, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x406a, 0x0000, 0x406b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x406c, 0x0000, 0x406d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x406e,
+ 0x406f, 0x4070, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4071, 0x4072, 0x0000, 0x4073, 0x0000, 0x4074, 0x0000, 0x4075,
+ 0x0000, 0x4076, 0x0000, 0x4077, 0x0000, 0x0000, 0x4078, 0x0000,
+ 0x4079, 0x0000, 0x0000, 0x0000, 0x407a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x407b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x407c, 0x407d, 0x407e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4121, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4122, 0x4123, 0x4124, 0x4125, 0x0000, 0x4126, 0x0000,
+ 0x4127, 0x4128, 0x0000, 0x0000, 0x0000, 0x4129, 0x0000, 0x412a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x412b, 0x412c, 0x0000, 0x0000,
+ 0x0000, 0x412d, 0x412e, 0x0000, 0x0000, 0x412f, 0x0000, 0x0000,
+ 0x4130, 0x0000, 0x0000, 0x0000, 0x0000, 0x4131, 0x0000, 0x4132,
+ 0x0000, 0x0000, 0x0000, 0x4133, 0x0000, 0x0000, 0x0000, 0x4134,
+};
+
+static unsigned short const unicode_to_jisx0212_65[] = {
+ /* 0x6500 - 0x65ff */
+ 0x0000, 0x4135, 0x0000, 0x0000, 0x4136, 0x0000, 0x0000, 0x0000,
+ 0x4137, 0x4138, 0x4139, 0x0000, 0x0000, 0x0000, 0x0000, 0x413a,
+ 0x0000, 0x0000, 0x0000, 0x413b, 0x413c, 0x0000, 0x413d, 0x0000,
+ 0x0000, 0x413e, 0x0000, 0x413f, 0x0000, 0x0000, 0x4140, 0x4141,
+ 0x0000, 0x0000, 0x4142, 0x0000, 0x0000, 0x0000, 0x4143, 0x0000,
+ 0x0000, 0x4144, 0x0000, 0x0000, 0x0000, 0x0000, 0x4145, 0x0000,
+ 0x0000, 0x4146, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4147, 0x0000, 0x4148, 0x4149, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x414a, 0x0000, 0x0000, 0x0000, 0x414b,
+ 0x0000, 0x414c, 0x0000, 0x0000, 0x0000, 0x0000, 0x7441, 0x0000,
+ 0x414d, 0x0000, 0x414e, 0x0000, 0x414f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4150,
+ 0x4151, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4152,
+ 0x0000, 0x0000, 0x0000, 0x4153, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4154, 0x0000, 0x0000, 0x4155, 0x0000, 0x0000,
+ 0x0000, 0x4156, 0x0000, 0x0000, 0x0000, 0x4157, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4158, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4159, 0x0000, 0x0000, 0x415a, 0x0000, 0x0000,
+ 0x415b, 0x0000, 0x0000, 0x0000, 0x0000, 0x415c, 0x0000, 0x0000,
+ 0x415d, 0x0000, 0x0000, 0x415e, 0x0000, 0x0000, 0x415f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4160, 0x0000,
+ 0x0000, 0x0000, 0x4161, 0x4162, 0x4163, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4164,
+ 0x0000, 0x0000, 0x4165, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4166, 0x4167, 0x0000, 0x0000, 0x0000, 0x0000, 0x4168, 0x0000,
+ 0x4169, 0x0000, 0x0000, 0x0000, 0x416a, 0x0000, 0x416b, 0x0000,
+ 0x416c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x416d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x416e, 0x0000, 0x416f, 0x0000, 0x4170, 0x4171, 0x0000, 0x0000,
+ 0x0000, 0x4172, 0x0000, 0x0000, 0x0000, 0x0000, 0x4173, 0x4174,
+};
+
+static unsigned short const unicode_to_jisx0212_66[] = {
+ /* 0x6600 - 0x66ff */
+ 0x4175, 0x0000, 0x0000, 0x0000, 0x4176, 0x0000, 0x0000, 0x0000,
+ 0x4177, 0x4178, 0x0000, 0x0000, 0x0000, 0x4179, 0x0000, 0x0000,
+ 0x0000, 0x417a, 0x417b, 0x0000, 0x0000, 0x417c, 0x417d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x417e, 0x4221, 0x0000,
+ 0x0000, 0x4222, 0x4223, 0x4224, 0x4225, 0x0000, 0x4226, 0x0000,
+ 0x0000, 0x4227, 0x4228, 0x4229, 0x422a, 0x0000, 0x422b, 0x0000,
+ 0x422c, 0x422d, 0x0000, 0x422e, 0x0000, 0x0000, 0x0000, 0x4230,
+ 0x0000, 0x422f, 0x0000, 0x7442, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4231, 0x0000, 0x0000, 0x0000, 0x0000, 0x4232, 0x4233, 0x0000,
+ 0x0000, 0x0000, 0x4234, 0x0000, 0x4235, 0x0000, 0x4237, 0x0000,
+ 0x0000, 0x4236, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4238,
+ 0x4239, 0x423a, 0x0000, 0x423b, 0x423c, 0x0000, 0x0000, 0x0000,
+ 0x423d, 0x423e, 0x0000, 0x0000, 0x0000, 0x7443, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4240, 0x4241, 0x4242, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4244, 0x0000, 0x4245, 0x0000, 0x4247,
+ 0x4248, 0x4249, 0x0000, 0x424a, 0x424c, 0x0000, 0x4243, 0x4246,
+ 0x424b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x424d, 0x424e, 0x424f, 0x0000, 0x0000,
+ 0x4250, 0x0000, 0x4251, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4252, 0x4253, 0x4254, 0x4255, 0x0000, 0x0000, 0x4256,
+ 0x4257, 0x0000, 0x0000, 0x0000, 0x4258, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4259, 0x0000, 0x0000,
+ 0x0000, 0x425a, 0x425b, 0x0000, 0x0000, 0x425c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x425d, 0x0000, 0x0000, 0x0000, 0x425e,
+ 0x425f, 0x0000, 0x4260, 0x4261, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4262, 0x0000, 0x0000, 0x0000, 0x4263, 0x0000, 0x4264, 0x4265,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4266, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4267, 0x0000, 0x0000, 0x0000, 0x4268,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4269, 0x0000, 0x0000, 0x426a, 0x426b, 0x0000, 0x426c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x426d, 0x423f, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_67[] = {
+ /* 0x6700 - 0x67ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x426e, 0x0000, 0x426f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4270, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4271, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4272, 0x0000, 0x0000, 0x4273, 0x0000, 0x0000, 0x0000,
+ 0x4274, 0x0000, 0x4275, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4276, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4277, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4278, 0x0000, 0x4279,
+ 0x427a, 0x0000, 0x0000, 0x0000, 0x427b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x427c, 0x427d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x427e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4321, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4322, 0x0000, 0x4323, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4324, 0x0000, 0x4325, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4326, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4327, 0x0000, 0x0000, 0x4328, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4329, 0x432a,
+ 0x0000, 0x432b, 0x0000, 0x432c, 0x0000, 0x0000, 0x432d, 0x0000,
+ 0x432e, 0x432f, 0x0000, 0x4330, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4331, 0x4332, 0x4333, 0x0000, 0x0000, 0x4334, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4335, 0x4336, 0x4337, 0x0000, 0x0000,
+ 0x4339, 0x0000, 0x433a, 0x433b, 0x0000, 0x433c, 0x0000, 0x0000,
+ 0x433d, 0x433e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x433f, 0x0000, 0x0000, 0x0000, 0x0000, 0x4340,
+ 0x0000, 0x4341, 0x0000, 0x0000, 0x4342, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4343, 0x0000, 0x0000, 0x0000, 0x0000, 0x4344, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4345, 0x0000, 0x4346, 0x0000, 0x0000, 0x0000, 0x4347, 0x4348,
+ 0x0000, 0x4338, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_68[] = {
+ /* 0x6800 - 0x68ff */
+ 0x0000, 0x7446, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x434a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x434b, 0x0000, 0x0000, 0x0000, 0x434c, 0x0000, 0x434d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x434f,
+ 0x434e, 0x0000, 0x0000, 0x0000, 0x4350, 0x4351, 0x0000, 0x4352,
+ 0x4353, 0x4354, 0x0000, 0x4355, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4356, 0x0000, 0x0000, 0x0000, 0x4357,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4358, 0x4359, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x435a, 0x0000, 0x435b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4349, 0x0000, 0x0000, 0x435c, 0x0000, 0x435d,
+ 0x435e, 0x0000, 0x0000, 0x435f, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4360, 0x0000, 0x0000, 0x4361, 0x4362,
+ 0x4363, 0x4364, 0x4365, 0x0000, 0x0000, 0x4366, 0x0000, 0x0000,
+ 0x0000, 0x4367, 0x4368, 0x4369, 0x436a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x436b, 0x0000, 0x436c, 0x0000, 0x436d, 0x0000,
+ 0x436e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x436f, 0x0000,
+ 0x4370, 0x0000, 0x4371, 0x0000, 0x4372, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4373, 0x0000, 0x4374, 0x0000, 0x4375, 0x0000, 0x0000,
+ 0x0000, 0x4376, 0x4377, 0x0000, 0x0000, 0x0000, 0x4378, 0x0000,
+ 0x0000, 0x0000, 0x4379, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x437a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x437b, 0x0000, 0x0000,
+ 0x437c, 0x0000, 0x0000, 0x0000, 0x437d, 0x0000, 0x0000, 0x437e,
+ 0x4421, 0x4422, 0x0000, 0x4423, 0x0000, 0x0000, 0x4424, 0x0000,
+ 0x0000, 0x4425, 0x0000, 0x0000, 0x4426, 0x4427, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4428, 0x0000, 0x0000,
+ 0x4429, 0x0000, 0x442a, 0x442b, 0x442c, 0x442d, 0x0000, 0x0000,
+ 0x442e, 0x442f, 0x0000, 0x0000, 0x0000, 0x4430, 0x4431, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4432, 0x4433, 0x4434, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_69[] = {
+ /* 0x6900 - 0x69ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4435, 0x0000,
+ 0x0000, 0x4436, 0x4437, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4438, 0x4439, 0x0000, 0x443a, 0x0000, 0x0000, 0x443b, 0x443c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x443d, 0x0000, 0x443e, 0x0000, 0x443f, 0x0000, 0x0000,
+ 0x4440, 0x0000, 0x0000, 0x4441, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4442, 0x0000, 0x0000, 0x4443, 0x0000, 0x0000,
+ 0x0000, 0x4444, 0x0000, 0x0000, 0x0000, 0x0000, 0x4445, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4446,
+ 0x0000, 0x0000, 0x0000, 0x4447, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4448, 0x4449, 0x444a, 0x444b, 0x0000,
+ 0x444c, 0x444d, 0x0000, 0x0000, 0x444e, 0x0000, 0x0000, 0x0000,
+ 0x444f, 0x4450, 0x4451, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4452, 0x4453, 0x0000, 0x0000, 0x0000, 0x4454,
+ 0x4455, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4456, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4457, 0x0000, 0x0000, 0x0000, 0x4458, 0x0000,
+ 0x4459, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x445a, 0x0000, 0x0000, 0x0000, 0x445b, 0x445c, 0x0000,
+ 0x445d, 0x0000, 0x0000, 0x445e, 0x0000, 0x445f, 0x0000, 0x4460,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4461,
+ 0x4462, 0x0000, 0x4463, 0x0000, 0x4464, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4465, 0x0000, 0x0000,
+ 0x4466, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4467, 0x0000, 0x0000, 0x0000, 0x0000, 0x4468, 0x4469,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x446a, 0x0000, 0x0000, 0x446b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x446c, 0x446d,
+ 0x0000, 0x446e, 0x0000, 0x446f, 0x0000, 0x4470, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4471, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_6a[] = {
+ /* 0x6a00 - 0x6aff */
+ 0x4472, 0x4473, 0x0000, 0x4474, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4475,
+ 0x0000, 0x4476, 0x0000, 0x0000, 0x0000, 0x4477, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4478, 0x0000, 0x0000, 0x4479, 0x0000, 0x0000,
+ 0x447a, 0x0000, 0x0000, 0x0000, 0x447b, 0x0000, 0x0000, 0x0000,
+ 0x447c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x447d, 0x0000, 0x447e, 0x0000, 0x4521, 0x0000, 0x0000, 0x4522,
+ 0x0000, 0x0000, 0x0000, 0x4523, 0x0000, 0x0000, 0x4524, 0x4525,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4526, 0x4527, 0x0000,
+ 0x0000, 0x4528, 0x4529, 0x0000, 0x0000, 0x0000, 0x452a, 0x0000,
+ 0x452b, 0x452c, 0x452d, 0x0000, 0x0000, 0x452e, 0x452f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4530, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4531, 0x0000, 0x0000, 0x4532,
+ 0x0000, 0x0000, 0x4533, 0x7449, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4534, 0x0000, 0x4535, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4536, 0x0000,
+ 0x0000, 0x4537, 0x0000, 0x4538, 0x0000, 0x0000, 0x4539, 0x453a,
+ 0x0000, 0x453b, 0x0000, 0x453c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x453d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x453e, 0x0000, 0x453f, 0x4540, 0x4541,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4542, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4543, 0x0000, 0x0000, 0x0000, 0x4544,
+ 0x4545, 0x4546, 0x0000, 0x0000, 0x4547, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4548, 0x4549, 0x454a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x454b, 0x0000,
+ 0x454d, 0x454c, 0x0000, 0x0000, 0x454e, 0x0000, 0x0000, 0x0000,
+ 0x454f, 0x0000, 0x0000, 0x0000, 0x4550, 0x4551, 0x4552, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4553, 0x4554, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x744a, 0x0000, 0x4555, 0x0000, 0x0000, 0x4556,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4557, 0x0000, 0x0000, 0x0000,
+ 0x4558, 0x4559, 0x455a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x455b, 0x455c, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_6b[] = {
+ /* 0x6b00 - 0x6bff */
+ 0x0000, 0x0000, 0x455d, 0x455e, 0x0000, 0x0000, 0x455f, 0x4560,
+ 0x0000, 0x4561, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4562,
+ 0x4563, 0x4564, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4565,
+ 0x0000, 0x0000, 0x0000, 0x4566, 0x0000, 0x0000, 0x4567, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4568, 0x0000, 0x0000, 0x0000,
+ 0x4569, 0x0000, 0x0000, 0x456a, 0x456b, 0x0000, 0x0000, 0x456c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x456d, 0x456e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x456f, 0x0000, 0x0000, 0x0000, 0x4570,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4571, 0x0000,
+ 0x0000, 0x0000, 0x4572, 0x0000, 0x0000, 0x4573, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4574, 0x0000, 0x0000, 0x0000, 0x4575, 0x0000,
+ 0x4576, 0x0000, 0x0000, 0x0000, 0x0000, 0x4577, 0x0000, 0x0000,
+ 0x4578, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4579,
+ 0x0000, 0x0000, 0x0000, 0x457a, 0x0000, 0x0000, 0x457b, 0x0000,
+ 0x457c, 0x0000, 0x0000, 0x0000, 0x0000, 0x457d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x457e, 0x4621, 0x0000,
+ 0x0000, 0x0000, 0x4622, 0x0000, 0x0000, 0x4623, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4624,
+ 0x0000, 0x0000, 0x0000, 0x4625, 0x0000, 0x0000, 0x0000, 0x4626,
+ 0x4627, 0x0000, 0x4628, 0x4629, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x462a, 0x462b, 0x0000, 0x0000, 0x462c, 0x462d, 0x462e, 0x0000,
+ 0x462f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4630, 0x4631, 0x0000, 0x0000, 0x0000, 0x4632, 0x4633, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4634, 0x4635, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4636, 0x0000, 0x0000, 0x4637, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4638, 0x0000,
+ 0x0000, 0x0000, 0x4639, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x463a, 0x0000, 0x463b, 0x0000, 0x0000, 0x463c, 0x463d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x463e, 0x0000,
+ 0x0000, 0x463f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4640,
+ 0x0000, 0x4641, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4642,
+};
+
+static unsigned short const unicode_to_jisx0212_6c[] = {
+ /* 0x6c00 - 0x6cff */
+ 0x0000, 0x0000, 0x4643, 0x0000, 0x4644, 0x4645, 0x0000, 0x0000,
+ 0x0000, 0x4646, 0x0000, 0x0000, 0x0000, 0x4647, 0x4648, 0x0000,
+ 0x4649, 0x0000, 0x464a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x464b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x464c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x464d, 0x464e,
+ 0x464f, 0x0000, 0x0000, 0x0000, 0x4650, 0x0000, 0x4651, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4652, 0x0000, 0x4653, 0x4654, 0x0000,
+ 0x0000, 0x0000, 0x4655, 0x4656, 0x0000, 0x0000, 0x0000, 0x4657,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4658, 0x4659, 0x0000, 0x465a, 0x0000, 0x465b,
+ 0x0000, 0x0000, 0x465c, 0x0000, 0x465d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x465e, 0x0000, 0x465f, 0x4660, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4736,
+ 0x0000, 0x0000, 0x0000, 0x4661, 0x0000, 0x4662, 0x0000, 0x4663,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4664, 0x0000, 0x4665, 0x0000,
+ 0x4666, 0x4667, 0x0000, 0x4668, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4669, 0x466a, 0x466b,
+ 0x0000, 0x466c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x466d, 0x466e, 0x0000, 0x466f,
+ 0x4670, 0x0000, 0x0000, 0x0000, 0x4671, 0x0000, 0x0000, 0x4672,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4673, 0x0000, 0x4674, 0x0000, 0x4675, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4676, 0x0000, 0x0000, 0x0000, 0x4677, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4678, 0x0000, 0x4679,
+ 0x467a, 0x467b, 0x467c, 0x0000, 0x467d, 0x0000, 0x467e, 0x0000,
+ 0x0000, 0x0000, 0x4721, 0x0000, 0x4722, 0x0000, 0x0000, 0x0000,
+ 0x4723, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4724,
+ 0x0000, 0x4725, 0x0000, 0x4726, 0x4727, 0x0000, 0x4728, 0x0000,
+ 0x0000, 0x0000, 0x4729, 0x0000, 0x472a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_6d[] = {
+ /* 0x6d00 - 0x6dff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x472b, 0x0000, 0x0000, 0x472c,
+ 0x0000, 0x0000, 0x472d, 0x0000, 0x0000, 0x0000, 0x472e, 0x472f,
+ 0x0000, 0x4730, 0x0000, 0x4731, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4732, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4733, 0x4734,
+ 0x4735, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4737, 0x4738,
+ 0x0000, 0x4739, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x473a, 0x0000, 0x0000, 0x473b, 0x0000, 0x0000, 0x473c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x473d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x473e, 0x473f,
+ 0x0000, 0x4740, 0x0000, 0x0000, 0x0000, 0x4741, 0x0000, 0x4742,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4743,
+ 0x4744, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4745, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4746, 0x0000, 0x0000, 0x0000, 0x0000, 0x4747,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4748, 0x4749, 0x0000, 0x474a, 0x0000, 0x474b, 0x474c,
+ 0x474d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x474e, 0x0000, 0x474f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4750, 0x0000, 0x0000, 0x4751,
+ 0x0000, 0x4752, 0x0000, 0x0000, 0x0000, 0x4753, 0x0000, 0x4754,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4755, 0x0000, 0x0000, 0x0000,
+ 0x4756, 0x0000, 0x4757, 0x0000, 0x0000, 0x0000, 0x4758, 0x4759,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x475a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x475b, 0x0000, 0x475c, 0x0000, 0x475d,
+ 0x475e, 0x0000, 0x475f, 0x0000, 0x0000, 0x4760, 0x0000, 0x0000,
+ 0x0000, 0x4761, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4762,
+ 0x4763, 0x0000, 0x744c, 0x0000, 0x4764, 0x0000, 0x4765, 0x0000,
+ 0x744b, 0x0000, 0x0000, 0x0000, 0x4766, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_6e[] = {
+ /* 0x6e00 - 0x6eff */
+ 0x4767, 0x0000, 0x0000, 0x0000, 0x4768, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4769, 0x0000,
+ 0x0000, 0x0000, 0x476a, 0x0000, 0x0000, 0x0000, 0x0000, 0x476b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x476c, 0x0000, 0x0000, 0x0000, 0x476d, 0x0000,
+ 0x0000, 0x476e, 0x0000, 0x476f, 0x4770, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4771, 0x4772, 0x0000, 0x0000,
+ 0x4773, 0x4774, 0x0000, 0x4775, 0x0000, 0x0000, 0x0000, 0x4776,
+ 0x0000, 0x4777, 0x4778, 0x4779, 0x477a, 0x0000, 0x0000, 0x477b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x477c, 0x477d, 0x477e, 0x0000,
+ 0x0000, 0x0000, 0x4821, 0x4822, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4823, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4824, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4825, 0x0000, 0x4826, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4827, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4828, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4829, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x482a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x482b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x482c, 0x482d, 0x0000,
+ 0x0000, 0x482e, 0x0000, 0x482f, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4830, 0x0000, 0x0000, 0x0000, 0x4831,
+ 0x4832, 0x4833, 0x0000, 0x4834, 0x0000, 0x0000, 0x0000, 0x4835,
+ 0x4836, 0x0000, 0x4837, 0x0000, 0x0000, 0x4838, 0x4839, 0x483a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x483b, 0x0000, 0x483c, 0x483d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x483e, 0x0000, 0x483f, 0x0000, 0x4840, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_6f[] = {
+ /* 0x6f00 - 0x6fff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4841, 0x0000, 0x0000, 0x0000,
+ 0x4842, 0x0000, 0x4843, 0x0000, 0x4844, 0x4845, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4846, 0x0000,
+ 0x4847, 0x0000, 0x4848, 0x4849, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x484a, 0x0000,
+ 0x0000, 0x484b, 0x484c, 0x0000, 0x0000, 0x4853, 0x0000, 0x484d,
+ 0x484e, 0x0000, 0x0000, 0x484f, 0x0000, 0x0000, 0x4850, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4851, 0x4852, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4854,
+ 0x0000, 0x4855, 0x4856, 0x4857, 0x0000, 0x0000, 0x0000, 0x4858,
+ 0x0000, 0x4859, 0x485a, 0x0000, 0x0000, 0x485b, 0x485c, 0x0000,
+ 0x0000, 0x485d, 0x485e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x485f, 0x0000, 0x0000, 0x0000, 0x4860, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4861, 0x4862, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4863, 0x0000, 0x0000, 0x0000, 0x4864,
+ 0x4865, 0x0000, 0x0000, 0x4866, 0x4867, 0x4868, 0x0000, 0x0000,
+ 0x4869, 0x0000, 0x486a, 0x486b, 0x486c, 0x0000, 0x486d, 0x0000,
+ 0x0000, 0x0000, 0x486e, 0x0000, 0x0000, 0x0000, 0x0000, 0x486f,
+ 0x4870, 0x0000, 0x0000, 0x0000, 0x0000, 0x4871, 0x4872, 0x4873,
+ 0x4874, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4875, 0x4876,
+ 0x4877, 0x0000, 0x0000, 0x0000, 0x0000, 0x4878, 0x4879, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x487a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x487b, 0x0000, 0x487c,
+ 0x487d, 0x0000, 0x487e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4921, 0x0000, 0x0000, 0x0000, 0x4922, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4923, 0x4924, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4925, 0x0000, 0x0000, 0x0000, 0x0000, 0x4926, 0x0000, 0x0000,
+ 0x0000, 0x4927, 0x0000, 0x0000, 0x4928, 0x4929, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_70[] = {
+ /* 0x7000 - 0x70ff */
+ 0x492a, 0x0000, 0x0000, 0x0000, 0x0000, 0x492b, 0x492c, 0x492d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x492e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x492f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4930, 0x0000, 0x0000, 0x4931, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x744d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4932,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4933, 0x0000, 0x0000, 0x4934,
+ 0x0000, 0x4935, 0x0000, 0x0000, 0x4936, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4937, 0x4938, 0x0000, 0x0000, 0x0000,
+ 0x4939, 0x493a, 0x493b, 0x493c, 0x0000, 0x0000, 0x4941, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x493d, 0x493e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x493f, 0x4940, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4942, 0x4943, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4944, 0x0000, 0x4945, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4946, 0x4947, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4948, 0x0000,
+ 0x0000, 0x4949, 0x0000, 0x0000, 0x0000, 0x494a, 0x494b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x494c, 0x494d, 0x494e, 0x494f,
+ 0x4950, 0x0000, 0x0000, 0x4951, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4952, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4953, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4954, 0x4955, 0x0000, 0x0000, 0x4956, 0x0000, 0x0000, 0x4957,
+ 0x0000, 0x0000, 0x0000, 0x742e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4958, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4959, 0x0000, 0x495a, 0x495b, 0x495c, 0x495d, 0x0000,
+ 0x495e, 0x0000, 0x0000, 0x0000, 0x495f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4960, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4961, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_71[] = {
+ /* 0x7100 - 0x71ff */
+ 0x0000, 0x0000, 0x0000, 0x4962, 0x4963, 0x4964, 0x4965, 0x4966,
+ 0x0000, 0x0000, 0x0000, 0x4967, 0x4968, 0x0000, 0x0000, 0x4969,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x496a, 0x0000,
+ 0x496b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x496c, 0x0000, 0x496d, 0x0000, 0x496e,
+ 0x496f, 0x4970, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4971, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4972, 0x0000, 0x0000, 0x0000, 0x4973, 0x4974, 0x4975,
+ 0x0000, 0x0000, 0x4976, 0x4977, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4978, 0x0000, 0x4979, 0x0000, 0x0000, 0x0000, 0x0000, 0x497a,
+ 0x0000, 0x0000, 0x497b, 0x0000, 0x497c, 0x0000, 0x497d, 0x0000,
+ 0x497e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4a21, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4a22, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4a23, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a24, 0x0000, 0x4a25,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4a26, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4a27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4a28, 0x4a29, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4a2a, 0x0000, 0x4a2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a2c,
+ 0x4a2d, 0x0000, 0x4a2e, 0x4a2f, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4a30, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a31,
+ 0x4a32, 0x4a33, 0x0000, 0x0000, 0x4a34, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4a35, 0x4a36, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4a37, 0x0000, 0x0000, 0x4a38, 0x0000,
+ 0x0000, 0x4a39, 0x4a3a, 0x0000, 0x4a3b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4a3c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a3d, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_72[] = {
+ /* 0x7200 - 0x72ff */
+ 0x4a3e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a3f,
+ 0x4a40, 0x4a41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4a42, 0x0000, 0x0000, 0x0000, 0x4a43,
+ 0x0000, 0x0000, 0x4a44, 0x0000, 0x0000, 0x4a45, 0x0000, 0x4a46,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4a47, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4a48, 0x0000, 0x0000, 0x0000, 0x4a49,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4a4a, 0x0000, 0x0000, 0x0000,
+ 0x4a4b, 0x4a4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4a4d, 0x4a4e, 0x4a4f, 0x0000, 0x4a50, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a51, 0x4a52,
+ 0x4a53, 0x0000, 0x0000, 0x4a54, 0x0000, 0x4a55, 0x4a56, 0x0000,
+ 0x0000, 0x0000, 0x4a57, 0x0000, 0x4a58, 0x0000, 0x4a59, 0x0000,
+ 0x4a5a, 0x0000, 0x0000, 0x4a5b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4a5c, 0x0000, 0x0000, 0x4a5d, 0x0000, 0x0000, 0x4a5e, 0x4a5f,
+ 0x0000, 0x4a60, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a61,
+ 0x4a62, 0x0000, 0x0000, 0x4a63, 0x4a64, 0x0000, 0x0000, 0x4a65,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4a66, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4a67, 0x0000, 0x0000, 0x0000, 0x4a68, 0x4a69, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4a6a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4a6b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4a6c, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a6d, 0x4a6e, 0x0000,
+ 0x0000, 0x4a6f, 0x0000, 0x0000, 0x4a70, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a71, 0x0000,
+ 0x0000, 0x4a72, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a73,
+ 0x0000, 0x4a74, 0x0000, 0x0000, 0x4a75, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a76, 0x4a77, 0x0000,
+ 0x4a78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a79,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a7a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4a7b, 0x4a7c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4a7d, 0x4a7e, 0x0000, 0x0000, 0x4b21, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_73[] = {
+ /* 0x7300 - 0x73ff */
+ 0x0000, 0x0000, 0x4b22, 0x0000, 0x4b23, 0x4b24, 0x0000, 0x4b25,
+ 0x0000, 0x0000, 0x0000, 0x4b26, 0x0000, 0x4b27, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4b28, 0x4b29, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4b2a, 0x4b2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b2c, 0x0000,
+ 0x0000, 0x0000, 0x4b2d, 0x0000, 0x4b2e, 0x0000, 0x0000, 0x4b2f,
+ 0x4b30, 0x0000, 0x0000, 0x0000, 0x4b31, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4b32, 0x4b33, 0x0000, 0x0000, 0x4b34, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4b35, 0x4b36, 0x0000, 0x4b37, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4b38, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b39, 0x0000, 0x0000,
+ 0x4b3a, 0x0000, 0x4b3b, 0x0000, 0x0000, 0x0000, 0x4b3c, 0x0000,
+ 0x4b3d, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b3e, 0x4b3f, 0x4b40,
+ 0x4b41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b42, 0x4b43,
+ 0x0000, 0x4b44, 0x0000, 0x4b45, 0x4b46, 0x0000, 0x4b47, 0x4b48,
+ 0x0000, 0x4b49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b4a,
+ 0x0000, 0x4b4b, 0x0000, 0x0000, 0x4b4c, 0x0000, 0x0000, 0x0000,
+ 0x4b4d, 0x4b4e, 0x0000, 0x4b4f, 0x0000, 0x4b50, 0x4b51, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b52, 0x0000,
+ 0x4b53, 0x0000, 0x0000, 0x4b54, 0x0000, 0x4b55, 0x0000, 0x4b56,
+ 0x4b57, 0x0000, 0x0000, 0x0000, 0x4b58, 0x0000, 0x4b59, 0x4b5a,
+ 0x4b5b, 0x0000, 0x4b5c, 0x0000, 0x0000, 0x4b5d, 0x4b5e, 0x0000,
+ 0x0000, 0x0000, 0x4b5f, 0x4b60, 0x0000, 0x4b61, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b62, 0x0000, 0x4b63,
+ 0x0000, 0x4b64, 0x0000, 0x0000, 0x4b65, 0x4b66, 0x0000, 0x4b67,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b68, 0x4b69, 0x0000,
+ 0x0000, 0x4b6a, 0x0000, 0x4b6b, 0x4b6c, 0x0000, 0x0000, 0x4b6d,
+ 0x0000, 0x0000, 0x4b6e, 0x4b6f, 0x0000, 0x0000, 0x4b70, 0x0000,
+ 0x0000, 0x4b71, 0x0000, 0x0000, 0x0000, 0x4b72, 0x0000, 0x0000,
+ 0x0000, 0x4b73, 0x0000, 0x4b74, 0x0000, 0x0000, 0x4b75, 0x4b76,
+ 0x0000, 0x4b77, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4b78, 0x4b79, 0x0000, 0x4b7a,
+ 0x0000, 0x4b7b, 0x4b7c, 0x4b7d, 0x0000, 0x4b7e, 0x0000, 0x4c21,
+};
+
+static unsigned short const unicode_to_jisx0212_74[] = {
+ /* 0x7400 - 0x74ff */
+ 0x4c22, 0x4c23, 0x0000, 0x0000, 0x4c24, 0x0000, 0x0000, 0x4c25,
+ 0x0000, 0x0000, 0x4c26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4c27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4c28, 0x4c29, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4c2a, 0x0000, 0x4c2b, 0x0000,
+ 0x4c2c, 0x4c2d, 0x4c2e, 0x4c2f, 0x4c30, 0x4c31, 0x4c32, 0x4c33,
+ 0x4c34, 0x4c35, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4c36, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4c37, 0x0000, 0x0000, 0x4c38, 0x4c39, 0x0000, 0x4c3a, 0x4c3b,
+ 0x0000, 0x0000, 0x0000, 0x4c3c, 0x0000, 0x4c3d, 0x0000, 0x0000,
+ 0x0000, 0x4c3e, 0x4c3f, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c40,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c41, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4c42, 0x0000, 0x0000, 0x0000, 0x4c43, 0x4c44,
+ 0x4c45, 0x0000, 0x0000, 0x4c46, 0x0000, 0x4c47, 0x4c48, 0x0000,
+ 0x0000, 0x4c49, 0x4c4a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4c4b, 0x4c4c, 0x0000, 0x0000, 0x0000, 0x4c4d, 0x4c4e, 0x4c4f,
+ 0x0000, 0x4c50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c51,
+ 0x4c52, 0x4c53, 0x4c54, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4c55, 0x4c56, 0x4c57, 0x0000, 0x4c58, 0x0000, 0x0000, 0x4c59,
+ 0x4c5a, 0x4c5b, 0x0000, 0x4c5c, 0x0000, 0x0000, 0x4c5d, 0x0000,
+ 0x4c5e, 0x4c5f, 0x4c60, 0x4c61, 0x0000, 0x0000, 0x4c62, 0x4c63,
+ 0x0000, 0x4c64, 0x4c65, 0x0000, 0x0000, 0x4c66, 0x0000, 0x0000,
+ 0x0000, 0x4c67, 0x0000, 0x4c68, 0x0000, 0x0000, 0x0000, 0x4c69,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4c6a, 0x4c6b, 0x0000, 0x0000, 0x4c6c, 0x0000, 0x0000, 0x0000,
+ 0x4c6d, 0x0000, 0x0000, 0x4c6e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4c6f, 0x0000, 0x4c70, 0x4c71, 0x0000, 0x0000, 0x4c72, 0x4c73,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4c74, 0x0000, 0x0000, 0x0000,
+ 0x4c75, 0x0000, 0x4c76, 0x4c77, 0x0000, 0x0000, 0x0000, 0x4c78,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4c79, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4c7a, 0x4c7b, 0x4c7c, 0x0000, 0x0000, 0x4c7d,
+};
+
+static unsigned short const unicode_to_jisx0212_75[] = {
+ /* 0x7500 - 0x75ff */
+ 0x0000, 0x7450, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c7e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4d21, 0x0000, 0x0000, 0x0000, 0x4d22, 0x4d23,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4d24, 0x4d25, 0x0000, 0x0000, 0x4d26, 0x0000, 0x0000, 0x4d27,
+ 0x0000, 0x4d28, 0x4d29, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d2a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d2b, 0x0000,
+ 0x0000, 0x4d2c, 0x0000, 0x0000, 0x0000, 0x4d2d, 0x4d2e, 0x4d2f,
+ 0x4d30, 0x0000, 0x0000, 0x4d31, 0x0000, 0x0000, 0x0000, 0x4d32,
+ 0x4d33, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d34, 0x0000,
+ 0x4d35, 0x0000, 0x4d36, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d37,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d38, 0x4d39,
+ 0x0000, 0x4d3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d3b,
+ 0x0000, 0x4d3c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4d3d, 0x4d3e, 0x4d3f, 0x4d40, 0x4d41, 0x4d42, 0x0000,
+ 0x0000, 0x4d43, 0x0000, 0x0000, 0x0000, 0x4d44, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4d45, 0x0000, 0x4d46, 0x4d47, 0x0000, 0x4d48, 0x0000, 0x0000,
+ 0x0000, 0x4d49, 0x0000, 0x0000, 0x4d4a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4d4b, 0x0000, 0x4d4c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4d4d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4d4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d4f,
+ 0x4d50, 0x4d51, 0x0000, 0x0000, 0x4d52, 0x0000, 0x4d53, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4d54, 0x0000, 0x4d55, 0x4d56,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d57,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4d58, 0x0000, 0x0000, 0x4d59,
+ 0x4d5a, 0x4d5b, 0x0000, 0x0000, 0x4d5c, 0x0000, 0x0000, 0x4d5d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4d5e, 0x0000, 0x4d5f, 0x4d60,
+ 0x0000, 0x4d61, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4d62, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_76[] = {
+ /* 0x7600 - 0x76ff */
+ 0x4d63, 0x0000, 0x4d64, 0x4d65, 0x4d66, 0x0000, 0x0000, 0x4d67,
+ 0x4d68, 0x0000, 0x4d69, 0x0000, 0x4d6a, 0x0000, 0x0000, 0x4d6b,
+ 0x0000, 0x0000, 0x4d6c, 0x4d6d, 0x0000, 0x4d6e, 0x4d6f, 0x0000,
+ 0x0000, 0x4d70, 0x0000, 0x4d71, 0x4d72, 0x4d73, 0x4d74, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4d75, 0x0000, 0x4d76, 0x4d77, 0x0000,
+ 0x0000, 0x4d78, 0x0000, 0x0000, 0x0000, 0x4d79, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4d7a, 0x4d7b, 0x0000, 0x4d7c, 0x0000, 0x0000,
+ 0x4d7d, 0x4d7e, 0x4e21, 0x0000, 0x4e22, 0x0000, 0x0000, 0x0000,
+ 0x4e24, 0x4e25, 0x0000, 0x4e26, 0x4e27, 0x4e28, 0x0000, 0x0000,
+ 0x0000, 0x4e29, 0x4e23, 0x4e2a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e2b, 0x0000, 0x0000,
+ 0x0000, 0x4e2c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e2d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4e2e, 0x4e2f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e30, 0x4e31, 0x4e32,
+ 0x0000, 0x4e33, 0x0000, 0x0000, 0x4e34, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4e35, 0x7451, 0x0000, 0x0000, 0x4e36, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4e37, 0x4e38, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e39, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4e3a, 0x4e3b, 0x4e3c, 0x7452, 0x4e3d,
+ 0x4e3e, 0x0000, 0x4e3f, 0x4e40, 0x4e41, 0x4e42, 0x4e43, 0x4e44,
+ 0x4e45, 0x0000, 0x4e46, 0x0000, 0x0000, 0x4e47, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e48, 0x0000, 0x0000,
+ 0x0000, 0x4e49, 0x0000, 0x0000, 0x0000, 0x4e4a, 0x0000, 0x0000,
+ 0x0000, 0x4e4b, 0x0000, 0x4e4c, 0x4e4d, 0x0000, 0x4e4e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4e4f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4e50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4e51, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e52, 0x0000,
+ 0x4e53, 0x0000, 0x0000, 0x0000, 0x4e54, 0x0000, 0x0000, 0x0000,
+ 0x4e55, 0x4e56, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e57, 0x0000,
+ 0x0000, 0x4e58, 0x0000, 0x0000, 0x4e59, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_77[] = {
+ /* 0x7700 - 0x77ff */
+ 0x4e5a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e5b, 0x0000,
+ 0x0000, 0x0000, 0x4e5c, 0x0000, 0x0000, 0x0000, 0x4e5d, 0x0000,
+ 0x0000, 0x0000, 0x4e5e, 0x0000, 0x4e5f, 0x4e60, 0x0000, 0x4e61,
+ 0x0000, 0x4e62, 0x4e63, 0x0000, 0x4e64, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4e65, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x4e66, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e67, 0x4e68, 0x4e69,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4e6a, 0x4e6b, 0x4e6c, 0x0000,
+ 0x0000, 0x4e6d, 0x0000, 0x0000, 0x0000, 0x4e6e, 0x4e6f, 0x0000,
+ 0x0000, 0x0000, 0x4e70, 0x0000, 0x0000, 0x4e71, 0x4e72, 0x0000,
+ 0x0000, 0x0000, 0x4e73, 0x0000, 0x0000, 0x4e74, 0x4e75, 0x4e76,
+ 0x0000, 0x0000, 0x4e77, 0x0000, 0x0000, 0x0000, 0x4e78, 0x4e79,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4e7a, 0x0000, 0x4e7b, 0x4e7c,
+ 0x4e7d, 0x0000, 0x4e7e, 0x0000, 0x4f21, 0x0000, 0x0000, 0x4f22,
+ 0x0000, 0x0000, 0x4f23, 0x0000, 0x4f24, 0x0000, 0x0000, 0x0000,
+ 0x4f25, 0x0000, 0x4f26, 0x4f27, 0x4f28, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4f29, 0x0000, 0x0000, 0x4f2a, 0x0000, 0x0000,
+ 0x4f2b, 0x0000, 0x0000, 0x0000, 0x4f2c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4f2d, 0x4f2e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4f2f, 0x4f30, 0x4f31, 0x0000,
+ 0x0000, 0x0000, 0x4f32, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f33,
+ 0x0000, 0x0000, 0x4f34, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f35,
+ 0x0000, 0x0000, 0x4f36, 0x0000, 0x0000, 0x0000, 0x4f37, 0x4f38,
+ 0x0000, 0x4f39, 0x0000, 0x0000, 0x0000, 0x4f3a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f3b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4f3c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4f3d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x4f3e, 0x4f3f, 0x0000, 0x0000, 0x4f40, 0x0000, 0x0000,
+ 0x0000, 0x4f41, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f42, 0x4f43,
+ 0x4f44, 0x0000, 0x0000, 0x0000, 0x4f45, 0x0000, 0x4f46, 0x0000,
+ 0x0000, 0x0000, 0x4f47, 0x0000, 0x4f48, 0x0000, 0x0000, 0x0000,
+ 0x4f49, 0x4f4a, 0x0000, 0x0000, 0x4f4b, 0x0000, 0x0000, 0x0000,
+ 0x4f4c, 0x0000, 0x0000, 0x4f4d, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_78[] = {
+ /* 0x7800 - 0x78ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f4e, 0x4f4f, 0x0000,
+ 0x0000, 0x4f50, 0x0000, 0x0000, 0x0000, 0x4f51, 0x4f52, 0x0000,
+ 0x0000, 0x4f53, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f54, 0x0000, 0x0000,
+ 0x0000, 0x4f55, 0x4f56, 0x4f57, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f58, 0x4f59, 0x0000,
+ 0x4f5a, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f5b, 0x0000, 0x4f5c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x4f5d, 0x4f5e, 0x0000, 0x0000, 0x4f5f,
+ 0x4f60, 0x0000, 0x0000, 0x0000, 0x4f61, 0x0000, 0x4f62, 0x0000,
+ 0x0000, 0x0000, 0x4f63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4f64, 0x0000, 0x4f65, 0x0000,
+ 0x4f66, 0x4f67, 0x0000, 0x4f68, 0x4f69, 0x0000, 0x0000, 0x0000,
+ 0x4f6a, 0x0000, 0x4f6b, 0x0000, 0x0000, 0x0000, 0x4f6c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4f6d, 0x0000, 0x0000, 0x0000, 0x4f6e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x4f6f, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f70,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x4f71, 0x0000, 0x0000, 0x0000,
+ 0x4f72, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f74, 0x4f75, 0x4f76,
+ 0x0000, 0x4f73, 0x0000, 0x0000, 0x4f77, 0x0000, 0x0000, 0x0000,
+ 0x4f78, 0x0000, 0x0000, 0x0000, 0x4f79, 0x4f7a, 0x0000, 0x0000,
+ 0x4f7b, 0x4f7c, 0x4f7d, 0x4f7e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5021, 0x0000, 0x5022, 0x0000, 0x5023,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5024,
+ 0x5025, 0x5026, 0x0000, 0x0000, 0x5027, 0x0000, 0x5028, 0x0000,
+ 0x0000, 0x0000, 0x5029, 0x502a, 0x0000, 0x502b, 0x502c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x502e, 0x0000, 0x0000, 0x0000, 0x502f,
+ 0x5030, 0x5031, 0x0000, 0x0000, 0x502d, 0x0000, 0x5032, 0x0000,
+ 0x0000, 0x0000, 0x5033, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5034, 0x5035, 0x0000, 0x0000, 0x5037, 0x5038,
+ 0x0000, 0x0000, 0x5039, 0x503a, 0x0000, 0x0000, 0x0000, 0x503b,
+};
+
+static unsigned short const unicode_to_jisx0212_79[] = {
+ /* 0x7900 - 0x79ff */
+ 0x5036, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x503c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x503d, 0x0000, 0x0000, 0x0000,
+ 0x503e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x503f, 0x0000, 0x5040, 0x0000, 0x5041, 0x5042,
+ 0x5043, 0x0000, 0x0000, 0x0000, 0x0000, 0x5044, 0x0000, 0x5045,
+ 0x0000, 0x5046, 0x0000, 0x0000, 0x0000, 0x5047, 0x0000, 0x0000,
+ 0x7454, 0x5048, 0x0000, 0x0000, 0x5049, 0x504a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x504b, 0x0000, 0x504c, 0x0000, 0x504d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x504e, 0x504f, 0x5050, 0x0000,
+ 0x0000, 0x0000, 0x5051, 0x5052, 0x0000, 0x0000, 0x0000, 0x5053,
+ 0x0000, 0x5054, 0x0000, 0x0000, 0x5055, 0x0000, 0x0000, 0x0000,
+ 0x5056, 0x0000, 0x0000, 0x5057, 0x5058, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5059,
+ 0x0000, 0x505a, 0x0000, 0x505b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x505c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x505d, 0x0000, 0x505e, 0x505f, 0x0000, 0x5060, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5061, 0x5062, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5063, 0x0000, 0x5064, 0x5065, 0x5066, 0x5067, 0x0000,
+ 0x5068, 0x0000, 0x0000, 0x5069, 0x506a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x506b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x506c, 0x506d, 0x0000, 0x506e, 0x0000, 0x0000, 0x0000, 0x506f,
+ 0x0000, 0x5070, 0x0000, 0x0000, 0x5071, 0x0000, 0x0000, 0x0000,
+ 0x5072, 0x0000, 0x0000, 0x5073, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5074, 0x0000, 0x5075, 0x0000, 0x0000, 0x5076,
+ 0x5077, 0x0000, 0x5078, 0x0000, 0x0000, 0x0000, 0x0000, 0x5079,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x507a, 0x0000, 0x507b, 0x0000,
+ 0x0000, 0x0000, 0x507c, 0x0000, 0x0000, 0x507d, 0x507e, 0x0000,
+ 0x5121, 0x0000, 0x5122, 0x0000, 0x0000, 0x5123, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5124, 0x5125, 0x0000, 0x5126, 0x0000, 0x0000,
+ 0x0000, 0x5127, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5128, 0x0000, 0x0000, 0x0000, 0x5129, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_7a[] = {
+ /* 0x7a00 - 0x7aff */
+ 0x0000, 0x0000, 0x512a, 0x512b, 0x0000, 0x0000, 0x0000, 0x512c,
+ 0x0000, 0x512d, 0x512e, 0x0000, 0x512f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5130, 0x0000, 0x0000, 0x0000, 0x5131, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5132, 0x0000, 0x0000, 0x5133, 0x0000,
+ 0x0000, 0x5134, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5135,
+ 0x0000, 0x0000, 0x0000, 0x5136, 0x0000, 0x5137, 0x0000, 0x5138,
+ 0x5139, 0x0000, 0x0000, 0x0000, 0x513a, 0x513b, 0x0000, 0x0000,
+ 0x513c, 0x513d, 0x513e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x513f, 0x5140, 0x0000, 0x5141,
+ 0x5142, 0x0000, 0x0000, 0x0000, 0x5143, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5144, 0x5145, 0x0000,
+ 0x0000, 0x5146, 0x0000, 0x0000, 0x5147, 0x5148, 0x0000, 0x5149,
+ 0x514a, 0x0000, 0x0000, 0x0000, 0x0000, 0x514b, 0x0000, 0x514c,
+ 0x0000, 0x0000, 0x514d, 0x0000, 0x0000, 0x514e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x514f, 0x0000, 0x0000,
+ 0x5150, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5151, 0x0000,
+ 0x5152, 0x0000, 0x5153, 0x0000, 0x0000, 0x5154, 0x5155, 0x0000,
+ 0x0000, 0x0000, 0x5156, 0x5157, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5158, 0x5159, 0x0000, 0x0000, 0x515a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x515b, 0x0000,
+ 0x515c, 0x0000, 0x0000, 0x515d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x515e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x515f, 0x0000, 0x5160, 0x0000, 0x0000,
+ 0x0000, 0x5161, 0x0000, 0x5162, 0x5163, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5164, 0x0000,
+ 0x0000, 0x5165, 0x0000, 0x0000, 0x5166, 0x0000, 0x5167, 0x0000,
+ 0x0000, 0x5168, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5169, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7459,
+ 0x516a, 0x516b, 0x0000, 0x516c, 0x516d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x516e, 0x0000, 0x0000, 0x516f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5170, 0x0000, 0x5171, 0x5172, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_7b[] = {
+ /* 0x7b00 - 0x7bff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5173,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5174, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5175,
+ 0x0000, 0x0000, 0x0000, 0x5176, 0x0000, 0x0000, 0x0000, 0x5177,
+ 0x0000, 0x5178, 0x5179, 0x517a, 0x0000, 0x517b, 0x517c, 0x517d,
+ 0x517e, 0x5221, 0x0000, 0x0000, 0x5222, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5223, 0x0000, 0x5224,
+ 0x5225, 0x5226, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5227,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5228, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5229, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x522a, 0x0000, 0x0000, 0x0000, 0x522b, 0x0000, 0x522c, 0x0000,
+ 0x0000, 0x522d, 0x522e, 0x0000, 0x0000, 0x522f, 0x0000, 0x5230,
+ 0x0000, 0x0000, 0x5231, 0x5232, 0x0000, 0x0000, 0x0000, 0x5233,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5234, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5235, 0x0000, 0x0000, 0x0000, 0x0000, 0x5236, 0x0000,
+ 0x5237, 0x5238, 0x0000, 0x0000, 0x0000, 0x0000, 0x5239, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x523a, 0x0000, 0x0000, 0x523b, 0x0000,
+ 0x523c, 0x0000, 0x0000, 0x0000, 0x0000, 0x523d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x523e, 0x0000, 0x0000, 0x523f,
+ 0x5240, 0x0000, 0x5241, 0x0000, 0x0000, 0x5242, 0x5243, 0x0000,
+ 0x0000, 0x0000, 0x5244, 0x5245, 0x5246, 0x5247, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5248, 0x0000, 0x0000, 0x5249, 0x0000, 0x0000,
+ 0x524a, 0x0000, 0x524b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x524c, 0x0000, 0x524d, 0x524e,
+ 0x0000, 0x524f, 0x5250, 0x5251, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5252, 0x0000, 0x5253, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5254, 0x0000, 0x5255, 0x5256, 0x0000, 0x0000,
+ 0x5257, 0x5258, 0x5259, 0x0000, 0x525a, 0x0000, 0x525b, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_7c[] = {
+ /* 0x7c00 - 0x7cff */
+ 0x0000, 0x525c, 0x525d, 0x525e, 0x525f, 0x0000, 0x5260, 0x0000,
+ 0x0000, 0x5261, 0x0000, 0x5262, 0x5263, 0x0000, 0x5264, 0x5265,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5266, 0x0000, 0x5267, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5268, 0x0000, 0x0000, 0x0000, 0x0000, 0x5269, 0x526a, 0x0000,
+ 0x526b, 0x0000, 0x0000, 0x0000, 0x526c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x526d, 0x0000, 0x526e, 0x526f, 0x0000, 0x5270, 0x0000,
+ 0x0000, 0x5271, 0x5272, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5273, 0x0000,
+ 0x0000, 0x0000, 0x5274, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5276, 0x5277, 0x5278, 0x0000, 0x5275, 0x0000, 0x0000,
+ 0x0000, 0x5279, 0x527a, 0x527b, 0x527c, 0x527d, 0x527e, 0x0000,
+ 0x0000, 0x5321, 0x0000, 0x5322, 0x0000, 0x0000, 0x0000, 0x5323,
+ 0x0000, 0x5324, 0x0000, 0x0000, 0x0000, 0x5325, 0x5326, 0x0000,
+ 0x5327, 0x0000, 0x5328, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5329, 0x0000, 0x0000, 0x532a, 0x532b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x532c, 0x532d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x532e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x532f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5330, 0x0000,
+ 0x5331, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5332, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5333, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5334, 0x5335,
+ 0x0000, 0x0000, 0x5336, 0x5337, 0x5338, 0x0000, 0x0000, 0x5339,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x533a, 0x0000, 0x0000, 0x533b,
+ 0x533c, 0x533d, 0x0000, 0x0000, 0x0000, 0x533e, 0x0000, 0x533f,
+ 0x0000, 0x0000, 0x0000, 0x5340, 0x5341, 0x5342, 0x0000, 0x5343,
+ 0x0000, 0x5344, 0x5345, 0x0000, 0x0000, 0x5346, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5347, 0x0000,
+ 0x0000, 0x5348, 0x0000, 0x5349, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x534a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_7d[] = {
+ /* 0x7d00 - 0x7dff */
+ 0x0000, 0x0000, 0x0000, 0x534b, 0x0000, 0x0000, 0x0000, 0x534c,
+ 0x534d, 0x534e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x534f,
+ 0x0000, 0x5350, 0x5351, 0x5352, 0x0000, 0x0000, 0x5353, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5354, 0x5355, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5356, 0x0000, 0x0000, 0x5357, 0x0000,
+ 0x0000, 0x0000, 0x5358, 0x0000, 0x0000, 0x5359, 0x0000, 0x0000,
+ 0x0000, 0x535a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x535b, 0x535c, 0x535d, 0x0000,
+ 0x535e, 0x535f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5360,
+ 0x5361, 0x0000, 0x0000, 0x0000, 0x0000, 0x5362, 0x0000, 0x0000,
+ 0x0000, 0x5363, 0x0000, 0x5364, 0x0000, 0x0000, 0x0000, 0x5365,
+ 0x0000, 0x5366, 0x5367, 0x0000, 0x5368, 0x5369, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x536a, 0x0000, 0x536b,
+ 0x0000, 0x0000, 0x536c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x536d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x536e, 0x0000, 0x536f, 0x5370, 0x0000, 0x0000, 0x0000, 0x5371,
+ 0x0000, 0x5372, 0x5373, 0x5374, 0x0000, 0x5375, 0x5376, 0x0000,
+ 0x5377, 0x0000, 0x0000, 0x5378, 0x5379, 0x537a, 0x0000, 0x0000,
+ 0x0000, 0x537b, 0x0000, 0x0000, 0x0000, 0x0000, 0x537c, 0x537d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x537e, 0x5421, 0x0000,
+ 0x745c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5422, 0x5423,
+ 0x0000, 0x0000, 0x5424, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5425, 0x0000, 0x0000, 0x5426, 0x5427,
+ 0x0000, 0x5428, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5429, 0x542a, 0x542b, 0x542c, 0x542d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x542e, 0x542f, 0x5430, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x745d, 0x5431,
+ 0x0000, 0x5432, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5434, 0x0000, 0x0000, 0x5435, 0x5436, 0x0000,
+ 0x0000, 0x0000, 0x5437, 0x5438, 0x0000, 0x5439, 0x0000, 0x0000,
+ 0x0000, 0x543a, 0x0000, 0x0000, 0x0000, 0x543b, 0x543c, 0x0000,
+ 0x0000, 0x543d, 0x543e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_7e[] = {
+ /* 0x7e00 - 0x7eff */
+ 0x5433, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x543f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5440, 0x5441, 0x0000, 0x0000, 0x0000, 0x5442, 0x0000, 0x5443,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5444, 0x5445, 0x0000, 0x0000,
+ 0x5446, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5447,
+ 0x5448, 0x0000, 0x0000, 0x0000, 0x5449, 0x544a, 0x0000, 0x544b,
+ 0x0000, 0x0000, 0x0000, 0x544c, 0x0000, 0x0000, 0x544d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x544e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x544f, 0x5450, 0x0000, 0x5451,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5452, 0x0000,
+ 0x5453, 0x0000, 0x5454, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5455, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5456,
+ 0x0000, 0x5457, 0x5458, 0x0000, 0x0000, 0x5459, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x545a, 0x0000, 0x0000, 0x545b, 0x545c,
+ 0x0000, 0x0000, 0x0000, 0x545d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x545e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x545f, 0x0000,
+ 0x0000, 0x5460, 0x0000, 0x0000, 0x0000, 0x0000, 0x5461, 0x5462,
+ 0x0000, 0x0000, 0x5463, 0x0000, 0x0000, 0x5464, 0x0000, 0x0000,
+ 0x0000, 0x5465, 0x0000, 0x0000, 0x0000, 0x5466, 0x0000, 0x0000,
+ 0x5467, 0x0000, 0x5468, 0x0000, 0x0000, 0x5469, 0x546a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_7f[] = {
+ /* 0x7f00 - 0x7fff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x546c, 0x546b, 0x546d, 0x546e, 0x546f,
+ 0x0000, 0x0000, 0x0000, 0x5470, 0x5471, 0x0000, 0x0000, 0x5472,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5473,
+ 0x0000, 0x0000, 0x5474, 0x5475, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5476, 0x5477, 0x5478, 0x0000, 0x0000,
+ 0x0000, 0x5479, 0x0000, 0x547a, 0x547b, 0x547c, 0x547d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x547e, 0x0000, 0x0000,
+ 0x0000, 0x5521, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5522, 0x5523, 0x5524,
+ 0x5525, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5526, 0x0000, 0x5527, 0x0000, 0x5528,
+ 0x5529, 0x552a, 0x0000, 0x0000, 0x0000, 0x0000, 0x552b, 0x552c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x552d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x552e, 0x552f, 0x0000, 0x0000, 0x0000, 0x5530, 0x0000,
+ 0x0000, 0x0000, 0x5531, 0x0000, 0x0000, 0x5532, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5533, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5534, 0x0000, 0x0000, 0x5535,
+ 0x5536, 0x0000, 0x0000, 0x5537, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5538, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5539, 0x553a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x553b, 0x0000, 0x0000, 0x0000, 0x553c,
+ 0x0000, 0x0000, 0x0000, 0x553d, 0x0000, 0x553e, 0x0000, 0x0000,
+ 0x553f, 0x0000, 0x0000, 0x0000, 0x5540, 0x0000, 0x5541, 0x5542,
+ 0x0000, 0x0000, 0x5543, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5544, 0x0000, 0x0000, 0x5545, 0x5546, 0x5547,
+};
+
+static unsigned short const unicode_to_jisx0212_80[] = {
+ /* 0x8000 - 0x80ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5548,
+ 0x5549, 0x0000, 0x554a, 0x0000, 0x0000, 0x554b, 0x554c, 0x554d,
+ 0x0000, 0x554e, 0x0000, 0x554f, 0x5550, 0x0000, 0x5551, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5552, 0x5553, 0x5554,
+ 0x5555, 0x0000, 0x0000, 0x0000, 0x5556, 0x0000, 0x5557, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5558, 0x0000, 0x5559, 0x0000,
+ 0x555a, 0x0000, 0x0000, 0x0000, 0x555b, 0x555c, 0x0000, 0x555d,
+ 0x0000, 0x555e, 0x555f, 0x0000, 0x5560, 0x0000, 0x5561, 0x0000,
+ 0x5562, 0x0000, 0x0000, 0x0000, 0x5563, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5564, 0x0000, 0x0000, 0x0000, 0x5565, 0x0000, 0x5566, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5567, 0x0000, 0x0000,
+ 0x0000, 0x5568, 0x0000, 0x0000, 0x0000, 0x5569, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x556a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x556b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x556c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x556d, 0x0000, 0x556e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x556f, 0x5570,
+ 0x0000, 0x0000, 0x0000, 0x5571, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5572, 0x5573, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5574, 0x0000, 0x0000, 0x0000, 0x0000, 0x5575, 0x0000, 0x5576,
+ 0x0000, 0x0000, 0x5577, 0x0000, 0x5578, 0x5579, 0x0000, 0x557a,
+ 0x557b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x557c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x557d, 0x557e, 0x0000,
+ 0x5621, 0x0000, 0x5622, 0x5623, 0x0000, 0x0000, 0x5624, 0x0000,
+ 0x0000, 0x5625, 0x5626, 0x0000, 0x0000, 0x0000, 0x5627, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_81[] = {
+ /* 0x8100 - 0x81ff */
+ 0x0000, 0x0000, 0x0000, 0x5628, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5629, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x562a, 0x562b,
+ 0x562c, 0x0000, 0x0000, 0x0000, 0x562d, 0x0000, 0x562e, 0x0000,
+ 0x562f, 0x0000, 0x0000, 0x0000, 0x5630, 0x0000, 0x0000, 0x5631,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5632, 0x0000, 0x0000, 0x0000,
+ 0x5633, 0x0000, 0x0000, 0x0000, 0x0000, 0x5634, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5635, 0x0000, 0x5636, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5637, 0x0000, 0x5638,
+ 0x0000, 0x0000, 0x5639, 0x0000, 0x563a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x563b, 0x0000, 0x0000, 0x0000, 0x0000, 0x563c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x563d, 0x563e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x563f,
+ 0x5640, 0x5641, 0x0000, 0x0000, 0x0000, 0x5642, 0x0000, 0x5643,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5644,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5645, 0x0000, 0x0000, 0x5647, 0x5648, 0x5649, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x564a, 0x0000, 0x0000, 0x564b, 0x0000,
+ 0x5646, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x564c, 0x0000,
+ 0x564d, 0x0000, 0x0000, 0x564e, 0x0000, 0x0000, 0x564f, 0x0000,
+ 0x0000, 0x0000, 0x5650, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5651, 0x0000,
+ 0x0000, 0x0000, 0x5652, 0x0000, 0x5653, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5654, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5656, 0x0000, 0x5657, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5658, 0x5655, 0x0000, 0x0000, 0x5659, 0x565a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x565b, 0x0000, 0x565c,
+ 0x0000, 0x0000, 0x0000, 0x565d, 0x0000, 0x565e, 0x565f, 0x0000,
+ 0x0000, 0x5660, 0x0000, 0x0000, 0x5661, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5662, 0x5663, 0x0000, 0x0000, 0x0000,
+ 0x5664, 0x5665, 0x5666, 0x0000, 0x0000, 0x5667, 0x5668, 0x0000,
+ 0x5669, 0x566a, 0x0000, 0x0000, 0x0000, 0x566b, 0x0000, 0x566c,
+};
+
+static unsigned short const unicode_to_jisx0212_82[] = {
+ /* 0x8200 - 0x82ff */
+ 0x566d, 0x0000, 0x0000, 0x566e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x566f,
+ 0x0000, 0x0000, 0x0000, 0x5670, 0x5671, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5672, 0x5673, 0x0000, 0x0000, 0x5674, 0x0000, 0x0000,
+ 0x0000, 0x5675, 0x5676, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5677, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5678, 0x0000, 0x5679, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x567a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x567b, 0x567c, 0x567d, 0x567e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5721, 0x0000, 0x0000, 0x5722, 0x5723,
+ 0x0000, 0x5724, 0x0000, 0x0000, 0x0000, 0x0000, 0x5725, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5726, 0x0000, 0x0000, 0x0000,
+ 0x5727, 0x0000, 0x0000, 0x5728, 0x0000, 0x0000, 0x0000, 0x5729,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x572a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x572b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x572c, 0x0000, 0x572d, 0x0000, 0x572e,
+ 0x572f, 0x5730, 0x0000, 0x5731, 0x5732, 0x0000, 0x0000, 0x5733,
+ 0x0000, 0x5734, 0x5735, 0x0000, 0x0000, 0x0000, 0x5736, 0x0000,
+ 0x0000, 0x5737, 0x0000, 0x0000, 0x5738, 0x0000, 0x5739, 0x0000,
+ 0x573a, 0x0000, 0x573b, 0x573c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x573d, 0x573e, 0x0000, 0x573f, 0x5740, 0x0000, 0x0000, 0x5741,
+ 0x5742, 0x5743, 0x5744, 0x0000, 0x0000, 0x0000, 0x5745, 0x0000,
+ 0x5746, 0x0000, 0x5747, 0x0000, 0x5748, 0x0000, 0x0000, 0x5749,
+ 0x0000, 0x0000, 0x574a, 0x0000, 0x574b, 0x0000, 0x574c, 0x574d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x574e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x574f, 0x0000, 0x0000, 0x0000, 0x0000, 0x5750, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5751, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5752, 0x0000, 0x5753, 0x0000, 0x5754, 0x0000, 0x0000, 0x0000,
+ 0x5755, 0x0000, 0x5756, 0x0000, 0x0000, 0x5757, 0x0000, 0x5758,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5759, 0x575a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x575b, 0x575c, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_83[] = {
+ /* 0x8300 - 0x83ff */
+ 0x575d, 0x575e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x575f,
+ 0x5760, 0x0000, 0x5761, 0x5762, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5764, 0x0000, 0x5765, 0x5766, 0x5767,
+ 0x0000, 0x5768, 0x5769, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x576a, 0x576b, 0x576c, 0x0000,
+ 0x576d, 0x0000, 0x0000, 0x576e, 0x0000, 0x0000, 0x0000, 0x576f,
+ 0x0000, 0x0000, 0x5770, 0x0000, 0x5771, 0x5772, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5773, 0x5774, 0x5775, 0x0000, 0x0000, 0x5776,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5777, 0x5778, 0x0000,
+ 0x0000, 0x5779, 0x0000, 0x583e, 0x5763, 0x577a, 0x577b, 0x577c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x745f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x577d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x577e, 0x0000, 0x0000, 0x0000, 0x0000, 0x5821, 0x0000, 0x5822,
+ 0x5823, 0x0000, 0x5824, 0x0000, 0x5825, 0x0000, 0x5826, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5827, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5828, 0x0000, 0x5829, 0x582a, 0x0000, 0x0000,
+ 0x582b, 0x582c, 0x0000, 0x582d, 0x582e, 0x582f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5830, 0x5831,
+ 0x0000, 0x5832, 0x0000, 0x0000, 0x5833, 0x584c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5834, 0x5835,
+ 0x5836, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5837,
+ 0x0000, 0x5838, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5839,
+ 0x583a, 0x583b, 0x0000, 0x0000, 0x583c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x583d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x583f, 0x0000, 0x5840, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5841, 0x0000,
+ 0x5842, 0x5843, 0x0000, 0x0000, 0x5844, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_84[] = {
+ /* 0x8400 - 0x84ff */
+ 0x0000, 0x5845, 0x0000, 0x0000, 0x0000, 0x0000, 0x5846, 0x0000,
+ 0x0000, 0x0000, 0x5847, 0x0000, 0x0000, 0x0000, 0x0000, 0x5848,
+ 0x0000, 0x5849, 0x0000, 0x0000, 0x0000, 0x584a, 0x0000, 0x0000,
+ 0x0000, 0x584b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x584d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x584e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x584f, 0x0000, 0x5850,
+ 0x5851, 0x0000, 0x5852, 0x0000, 0x0000, 0x5853, 0x0000, 0x5854,
+ 0x0000, 0x5855, 0x5856, 0x0000, 0x0000, 0x0000, 0x5857, 0x0000,
+ 0x5858, 0x5859, 0x585a, 0x0000, 0x585b, 0x0000, 0x0000, 0x0000,
+ 0x585c, 0x0000, 0x0000, 0x0000, 0x585d, 0x585e, 0x0000, 0x585f,
+ 0x0000, 0x0000, 0x5860, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5861, 0x0000, 0x0000, 0x5862, 0x5863, 0x0000, 0x5864, 0x0000,
+ 0x5865, 0x0000, 0x0000, 0x0000, 0x5866, 0x5867, 0x0000, 0x0000,
+ 0x0000, 0x5868, 0x0000, 0x0000, 0x0000, 0x5869, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x586a, 0x586b, 0x0000, 0x586c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x586d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x586e, 0x0000,
+ 0x586f, 0x5870, 0x5871, 0x0000, 0x0000, 0x0000, 0x0000, 0x5872,
+ 0x0000, 0x5873, 0x0000, 0x0000, 0x5874, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5875, 0x0000, 0x0000, 0x5876, 0x5877, 0x0000,
+ 0x5878, 0x0000, 0x5879, 0x0000, 0x0000, 0x0000, 0x0000, 0x587a,
+ 0x587b, 0x0000, 0x0000, 0x0000, 0x587c, 0x0000, 0x0000, 0x587d,
+ 0x0000, 0x0000, 0x0000, 0x587e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5921, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5922,
+ 0x0000, 0x0000, 0x5923, 0x0000, 0x0000, 0x0000, 0x0000, 0x5924,
+ 0x5925, 0x5926, 0x5927, 0x0000, 0x0000, 0x0000, 0x0000, 0x5928,
+ 0x0000, 0x0000, 0x592a, 0x592b, 0x0000, 0x592c, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_85[] = {
+ /* 0x8500 - 0x85ff */
+ 0x0000, 0x0000, 0x592d, 0x592e, 0x0000, 0x0000, 0x0000, 0x592f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5930, 0x0000, 0x5931, 0x0000,
+ 0x5932, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5933, 0x0000, 0x5934, 0x0000,
+ 0x0000, 0x0000, 0x5935, 0x5936, 0x5937, 0x5938, 0x0000, 0x5939,
+ 0x0000, 0x0000, 0x593a, 0x593b, 0x0000, 0x0000, 0x0000, 0x593c,
+ 0x0000, 0x0000, 0x5929, 0x593d, 0x593e, 0x0000, 0x593f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5940,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5941, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5942,
+ 0x5943, 0x5944, 0x5945, 0x5946, 0x0000, 0x0000, 0x5947, 0x0000,
+ 0x0000, 0x5948, 0x0000, 0x0000, 0x5949, 0x594a, 0x594b, 0x594c,
+ 0x594d, 0x594e, 0x594f, 0x0000, 0x5950, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5951, 0x0000, 0x0000, 0x0000, 0x5952,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5953, 0x5954, 0x5955, 0x0000, 0x5956, 0x0000, 0x5957,
+ 0x0000, 0x5958, 0x0000, 0x0000, 0x0000, 0x5959, 0x595a, 0x0000,
+ 0x0000, 0x595b, 0x0000, 0x595c, 0x595d, 0x0000, 0x0000, 0x595e,
+ 0x0000, 0x0000, 0x0000, 0x595f, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5960, 0x0000, 0x0000, 0x0000, 0x0000, 0x5961, 0x0000, 0x5962,
+ 0x5963, 0x0000, 0x5964, 0x0000, 0x0000, 0x5965, 0x0000, 0x5966,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5974, 0x0000, 0x0000,
+ 0x7461, 0x0000, 0x0000, 0x0000, 0x5967, 0x0000, 0x5968, 0x5969,
+ 0x596a, 0x0000, 0x0000, 0x0000, 0x596b, 0x596c, 0x596d, 0x596e,
+ 0x0000, 0x0000, 0x596f, 0x0000, 0x0000, 0x0000, 0x0000, 0x5970,
+ 0x0000, 0x0000, 0x5971, 0x5972, 0x0000, 0x0000, 0x5973, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5975, 0x0000, 0x5976, 0x0000, 0x0000, 0x0000, 0x0000, 0x5977,
+ 0x5978, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5979, 0x0000,
+ 0x597a, 0x0000, 0x0000, 0x0000, 0x0000, 0x597b, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x597c, 0x0000, 0x0000, 0x597d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x597e, 0x0000, 0x0000, 0x5a21,
+};
+
+static unsigned short const unicode_to_jisx0212_86[] = {
+ /* 0x8600 - 0x86ff */
+ 0x5a22, 0x0000, 0x0000, 0x0000, 0x5a23, 0x5a24, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a25, 0x5a26, 0x0000,
+ 0x5a27, 0x5a28, 0x5a29, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5a2a, 0x5a2b, 0x0000, 0x5a2c, 0x0000, 0x0000, 0x5a2d, 0x0000,
+ 0x0000, 0x5a2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a2f,
+ 0x0000, 0x5a30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a31, 0x0000,
+ 0x5a32, 0x0000, 0x5a33, 0x0000, 0x5a34, 0x5a35, 0x0000, 0x0000,
+ 0x5a36, 0x3866, 0x5a37, 0x0000, 0x0000, 0x0000, 0x5a38, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5a39, 0x5a3a, 0x0000, 0x0000, 0x5a3b, 0x5a3c,
+ 0x5a3d, 0x5a3e, 0x0000, 0x0000, 0x0000, 0x5a3f, 0x0000, 0x0000,
+ 0x5a40, 0x5a41, 0x5a42, 0x5a43, 0x5a44, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5a45, 0x0000, 0x0000, 0x5a46, 0x0000, 0x0000, 0x5a47,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a48, 0x5a49, 0x5a4a,
+ 0x0000, 0x0000, 0x5a4b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5a6d, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a4c, 0x0000, 0x0000,
+ 0x0000, 0x5a4d, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a4e, 0x0000,
+ 0x5a4f, 0x0000, 0x5a50, 0x0000, 0x5a51, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5a52, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a53, 0x5a54,
+ 0x5a55, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a56, 0x0000, 0x0000,
+ 0x0000, 0x5a57, 0x0000, 0x5a58, 0x5a59, 0x5a5a, 0x0000, 0x5a5b,
+ 0x5a5c, 0x5a5d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a5e,
+ 0x5a5f, 0x5a60, 0x0000, 0x5a61, 0x0000, 0x5a62, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5a63, 0x5a64, 0x0000, 0x0000, 0x5a65, 0x0000, 0x5a66,
+ 0x0000, 0x0000, 0x5a67, 0x0000, 0x5a68, 0x0000, 0x0000, 0x0000,
+ 0x5a69, 0x0000, 0x0000, 0x5a6a, 0x0000, 0x5a6b, 0x0000, 0x5a6c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5a6e, 0x0000, 0x5a6f, 0x5a70, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_87[] = {
+ /* 0x8700 - 0x87ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5a71, 0x5a72, 0x0000, 0x5a73,
+ 0x0000, 0x0000, 0x0000, 0x5a74, 0x0000, 0x0000, 0x5a75, 0x5a76,
+ 0x5a77, 0x0000, 0x0000, 0x5a78, 0x5a79, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5a7a, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a7b, 0x5a7c,
+ 0x0000, 0x5a7d, 0x0000, 0x5a7e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5b21, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b22, 0x5b23,
+ 0x0000, 0x5b24, 0x5b25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5b26, 0x5b27, 0x0000, 0x5b28, 0x5b29, 0x5b2a, 0x0000,
+ 0x5b2b, 0x0000, 0x0000, 0x5b2c, 0x0000, 0x5b2d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b2e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5b2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b30, 0x0000, 0x0000,
+ 0x0000, 0x5b31, 0x0000, 0x0000, 0x5b32, 0x5b33, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b34,
+ 0x0000, 0x5b35, 0x5b36, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5b37, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5b38, 0x5b39, 0x5b3a, 0x5b3b, 0x5b3c,
+ 0x5b3d, 0x5b3e, 0x0000, 0x5b3f, 0x5b40, 0x0000, 0x0000, 0x0000,
+ 0x5b41, 0x0000, 0x0000, 0x5b42, 0x0000, 0x5b43, 0x0000, 0x5b44,
+ 0x5b45, 0x5b46, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b47, 0x0000,
+ 0x5b48, 0x0000, 0x0000, 0x5b49, 0x0000, 0x0000, 0x0000, 0x5b4a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5b4b, 0x5b4c, 0x5b4d, 0x0000,
+ 0x0000, 0x5b4e, 0x0000, 0x0000, 0x0000, 0x5b4f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b50, 0x5b51,
+ 0x0000, 0x5b52, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5b53, 0x5b54, 0x5b55, 0x0000, 0x0000, 0x0000, 0x5b56, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b57, 0x5b58, 0x0000,
+ 0x0000, 0x5b59, 0x5b5a, 0x0000, 0x5b5b, 0x0000, 0x0000, 0x5b5c,
+ 0x0000, 0x0000, 0x5b5d, 0x5b5e, 0x5b5f, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5b60, 0x5b61, 0x0000, 0x5b62, 0x0000, 0x0000,
+ 0x0000, 0x5b63, 0x0000, 0x5b64, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5b65, 0x0000, 0x5b66, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b67,
+};
+
+static unsigned short const unicode_to_jisx0212_88[] = {
+ /* 0x8800 - 0x88ff */
+ 0x0000, 0x5b68, 0x0000, 0x5b69, 0x0000, 0x0000, 0x5b6a, 0x7464,
+ 0x0000, 0x5b6b, 0x5b6c, 0x5b6d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5b6e, 0x0000, 0x5b70, 0x5b71, 0x5b72, 0x0000, 0x0000, 0x0000,
+ 0x5b73, 0x5b6f, 0x5b74, 0x5b75, 0x5b76, 0x0000, 0x5b77, 0x5b78,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5b79, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b7a, 0x5b7b, 0x0000,
+ 0x5b7c, 0x0000, 0x5b7d, 0x0000, 0x0000, 0x5b7e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5c21, 0x0000, 0x5c22, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5c23, 0x0000, 0x5c24, 0x0000, 0x5c25, 0x0000, 0x0000,
+ 0x5c26, 0x5c27, 0x5c28, 0x5c29, 0x0000, 0x0000, 0x5c2a, 0x0000,
+ 0x0000, 0x5c2b, 0x0000, 0x0000, 0x0000, 0x5c2c, 0x5c2d, 0x0000,
+ 0x5c2e, 0x0000, 0x5c2f, 0x0000, 0x5c30, 0x0000, 0x0000, 0x5c31,
+ 0x5c32, 0x0000, 0x0000, 0x0000, 0x5c33, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5c34, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5c35, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5c36, 0x0000, 0x5c37, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5c38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5c39, 0x0000, 0x5c3a, 0x5c3b, 0x5c3c, 0x0000, 0x0000, 0x5c3d,
+ 0x5c3e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5c3f, 0x0000, 0x5c40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5c41, 0x0000, 0x0000, 0x5c42, 0x5c43, 0x0000,
+ 0x5c44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5c45, 0x5c46, 0x5c47, 0x5c48, 0x5c49, 0x0000,
+ 0x0000, 0x5c4a, 0x5c4b, 0x5c4c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5c4d, 0x0000, 0x0000, 0x5c4e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c4f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c50,
+ 0x5c51, 0x5c52, 0x0000, 0x0000, 0x0000, 0x5c53, 0x0000, 0x5c54,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_89[] = {
+ /* 0x8900 - 0x89ff */
+ 0x0000, 0x5c55, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c56, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c57, 0x5c58, 0x5c59,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c5a, 0x5c5b, 0x0000,
+ 0x5c5c, 0x5c5d, 0x5c5e, 0x0000, 0x5c5f, 0x0000, 0x0000, 0x0000,
+ 0x5c60, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c61, 0x5c62,
+ 0x5c63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5c64, 0x5c65, 0x5c66, 0x0000, 0x0000, 0x5c67, 0x0000, 0x0000,
+ 0x0000, 0x5c68, 0x5c69, 0x0000, 0x0000, 0x0000, 0x5c6a, 0x0000,
+ 0x5c6b, 0x0000, 0x5c6c, 0x0000, 0x0000, 0x5c6d, 0x5c6e, 0x0000,
+ 0x0000, 0x5c6f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c70,
+ 0x0000, 0x0000, 0x5c71, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c72,
+ 0x0000, 0x0000, 0x5c73, 0x5c74, 0x5c75, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5c76, 0x5c77, 0x5c78, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5c79, 0x0000, 0x0000, 0x5c7a, 0x0000,
+ 0x5c7b, 0x0000, 0x0000, 0x5c7c, 0x0000, 0x5c7d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5c7e, 0x5d21, 0x5d22, 0x5d23, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5d24, 0x0000, 0x0000, 0x0000, 0x5d25, 0x0000, 0x0000,
+ 0x5d26, 0x0000, 0x0000, 0x0000, 0x5d27, 0x5d28, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5d29, 0x5d2a, 0x0000, 0x0000, 0x5d2b,
+ 0x5d2c, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d2d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5d2e, 0x0000, 0x0000, 0x0000, 0x5d2f, 0x5d30, 0x5d31, 0x5d32,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5d33, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5d34, 0x5d35, 0x5d36, 0x5d37,
+ 0x5d38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d39, 0x0000, 0x0000,
+ 0x0000, 0x5d3a, 0x0000, 0x5d3b, 0x0000, 0x5d3c, 0x0000, 0x0000,
+ 0x0000, 0x5d3d, 0x0000, 0x5d3e, 0x0000, 0x0000, 0x5d3f, 0x0000,
+ 0x0000, 0x5d40, 0x0000, 0x0000, 0x0000, 0x5d41, 0x0000, 0x5d42,
+};
+
+static unsigned short const unicode_to_jisx0212_8a[] = {
+ /* 0x8a00 - 0x8aff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5d43, 0x5d44, 0x0000, 0x5d45,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d46,
+ 0x0000, 0x5d47, 0x5d48, 0x0000, 0x5d49, 0x5d4a, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d4b, 0x0000,
+ 0x5d4c, 0x0000, 0x5d4d, 0x0000, 0x5d4e, 0x0000, 0x5d4f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5d50, 0x5d51, 0x0000, 0x0000, 0x5d52,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d53, 0x0000, 0x5d54,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d55, 0x5d56, 0x0000,
+ 0x5d57, 0x0000, 0x0000, 0x5d58, 0x0000, 0x5d59, 0x0000, 0x5d5a,
+ 0x0000, 0x5d5b, 0x0000, 0x0000, 0x0000, 0x5d5c, 0x5d5d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5d5e, 0x0000, 0x0000, 0x5d5f, 0x5d60,
+ 0x5d61, 0x0000, 0x0000, 0x0000, 0x5d62, 0x5d63, 0x0000, 0x0000,
+ 0x0000, 0x5d64, 0x0000, 0x0000, 0x0000, 0x5d65, 0x0000, 0x5d66,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d67, 0x5d68, 0x5d69,
+ 0x0000, 0x5d6a, 0x5d6b, 0x5d6c, 0x0000, 0x0000, 0x5d6d, 0x5d6e,
+ 0x5d6f, 0x0000, 0x0000, 0x5d70, 0x0000, 0x0000, 0x5d71, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5d72, 0x0000, 0x0000, 0x0000, 0x5d73,
+ 0x5d74, 0x0000, 0x5d75, 0x0000, 0x0000, 0x0000, 0x5d76, 0x5d77,
+ 0x0000, 0x5d78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d79,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d7a,
+ 0x0000, 0x5d7b, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d7c, 0x5d7d,
+ 0x0000, 0x0000, 0x0000, 0x5d7e, 0x0000, 0x0000, 0x5e21, 0x5e22,
+ 0x0000, 0x0000, 0x0000, 0x5e23, 0x0000, 0x0000, 0x5e24, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5e25, 0x0000, 0x0000, 0x5e26, 0x0000,
+ 0x5e27, 0x5e28, 0x5e29, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5e2a, 0x0000, 0x5e2b, 0x5e2c, 0x5e2d, 0x0000, 0x5e2e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e2f, 0x0000, 0x5e30,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5e31, 0x0000, 0x0000, 0x0000,
+ 0x5e32, 0x0000, 0x0000, 0x0000, 0x5e33, 0x5e34, 0x5e35, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5e36, 0x0000, 0x0000, 0x5e37,
+};
+
+static unsigned short const unicode_to_jisx0212_8b[] = {
+ /* 0x8b00 - 0x8bff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e38, 0x5e39, 0x0000,
+ 0x0000, 0x0000, 0x5e3f, 0x5e3a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5e3b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5e3c, 0x0000, 0x5e3d, 0x5e3e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e40, 0x0000, 0x0000,
+ 0x5e41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e42,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5e43, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5e44, 0x5e45, 0x5e46, 0x5e47, 0x5e48, 0x0000,
+ 0x5e49, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e4e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5e4a, 0x5e4b, 0x5e4c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5e4d, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e4f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5e50, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e51, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e52, 0x0000,
+ 0x5e53, 0x5e54, 0x0000, 0x0000, 0x5e55, 0x0000, 0x5e56, 0x7466,
+ 0x0000, 0x5e57, 0x0000, 0x0000, 0x5e58, 0x5e59, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5e5a, 0x0000, 0x5e5b, 0x0000, 0x5e5c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5e5d, 0x5e5e, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5e5f, 0x0000, 0x5e60, 0x5e61,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_8c[] = {
+ /* 0x8c00 - 0x8cff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5e62, 0x5e63, 0x0000, 0x0000, 0x0000, 0x5e64, 0x5e65, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e66, 0x0000, 0x5e67,
+ 0x0000, 0x5e68, 0x0000, 0x5e69, 0x0000, 0x0000, 0x0000, 0x5e6a,
+ 0x0000, 0x5e6b, 0x0000, 0x5e6c, 0x5e6d, 0x0000, 0x0000, 0x5e6e,
+ 0x5e6f, 0x5e72, 0x0000, 0x5e70, 0x0000, 0x5e71, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5e73, 0x5e74, 0x0000, 0x5e75, 0x0000,
+ 0x5e76, 0x5e77, 0x0000, 0x0000, 0x0000, 0x5e78, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5e79, 0x0000, 0x5e7a, 0x5e7b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5e7c, 0x0000, 0x0000, 0x5e7d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e7e, 0x5f21,
+ 0x0000, 0x0000, 0x0000, 0x5f22, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5f23, 0x0000, 0x5f24, 0x5f25, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5f26, 0x0000, 0x5f27, 0x5f28, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5f29, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5f2a, 0x5f2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f2c, 0x5f2d, 0x0000,
+ 0x0000, 0x5f2e, 0x0000, 0x5f2f, 0x0000, 0x0000, 0x0000, 0x5f30,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f32, 0x5f31, 0x0000,
+ 0x0000, 0x5f33, 0x0000, 0x0000, 0x0000, 0x5f34, 0x0000, 0x0000,
+ 0x0000, 0x5f35, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5f36, 0x0000, 0x0000, 0x0000, 0x5f37, 0x0000, 0x0000, 0x5f38,
+ 0x5f39, 0x0000, 0x5f3a, 0x0000, 0x7467, 0x5f3b, 0x0000, 0x5f3c,
+ 0x5f3d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f3e, 0x5f3f,
+};
+
+static unsigned short const unicode_to_jisx0212_8d[] = {
+ /* 0x8d00 - 0x8dff */
+ 0x0000, 0x5f40, 0x0000, 0x5f41, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5f42, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x5f43, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f44,
+ 0x0000, 0x0000, 0x0000, 0x5f45, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f46, 0x0000, 0x0000,
+ 0x0000, 0x5f47, 0x0000, 0x0000, 0x5f48, 0x0000, 0x5f49, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7468, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f4a,
+ 0x0000, 0x0000, 0x5f4b, 0x0000, 0x5f4c, 0x0000, 0x0000, 0x0000,
+ 0x5f4d, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f4e, 0x0000, 0x0000,
+ 0x5f4f, 0x5f50, 0x0000, 0x0000, 0x0000, 0x5f51, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f52, 0x5f53,
+ 0x5f54, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f55, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5f56, 0x5f57, 0x0000, 0x0000, 0x5f58,
+ 0x0000, 0x0000, 0x5f59, 0x0000, 0x0000, 0x5f5a, 0x0000, 0x5f5b,
+ 0x0000, 0x5f5c, 0x0000, 0x5f5d, 0x5f6f, 0x0000, 0x0000, 0x0000,
+ 0x5f5e, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f5f, 0x5f60, 0x5f61,
+ 0x5f62, 0x0000, 0x5f63, 0x0000, 0x0000, 0x0000, 0x5f64, 0x0000,
+ 0x0000, 0x5f65, 0x0000, 0x0000, 0x5f66, 0x5f67, 0x0000, 0x5f68,
+ 0x0000, 0x5f69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5f6a, 0x5f6b, 0x0000, 0x5f6c,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x5f6d, 0x0000, 0x0000, 0x0000,
+ 0x5f6e, 0x5f70, 0x5f71, 0x0000, 0x5f72, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f73, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_8e[] = {
+ /* 0x8e00 - 0x8eff */
+ 0x0000, 0x5f74, 0x0000, 0x0000, 0x5f75, 0x5f76, 0x5f77, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x5f78, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x5f79, 0x0000, 0x0000, 0x5f7a, 0x0000, 0x5f7b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x5f7c, 0x5f7d, 0x5f7e, 0x6021, 0x0000, 0x0000, 0x6022, 0x6023,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6024, 0x0000, 0x6025, 0x0000, 0x0000, 0x6026, 0x6027,
+ 0x6028, 0x6029, 0x0000, 0x0000, 0x0000, 0x602a, 0x0000, 0x0000,
+ 0x602b, 0x602c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x602d, 0x0000, 0x602e, 0x602f, 0x6030,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6031, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6032, 0x6033, 0x6034, 0x6035, 0x0000,
+ 0x0000, 0x6036, 0x6037, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6038, 0x0000, 0x0000, 0x6039, 0x603a, 0x0000, 0x603b,
+ 0x603c, 0x603d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x603e, 0x603f, 0x6040, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6041, 0x6042, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6043, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6044, 0x0000, 0x6045, 0x0000, 0x0000, 0x6046, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6047, 0x6048, 0x0000, 0x6049, 0x604a, 0x0000,
+ 0x0000, 0x0000, 0x604b, 0x0000, 0x0000, 0x0000, 0x0000, 0x604c,
+ 0x0000, 0x604d, 0x0000, 0x0000, 0x0000, 0x604e, 0x604f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6050, 0x0000, 0x6051, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6052, 0x6053, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6054, 0x6055, 0x0000, 0x6056, 0x6057, 0x0000, 0x0000, 0x6058,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6059,
+ 0x0000, 0x605a, 0x0000, 0x0000, 0x605b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x605c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x605d, 0x0000, 0x0000, 0x0000, 0x0000, 0x6064, 0x605e, 0x0000,
+ 0x605f, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6061,
+ 0x0000, 0x6062, 0x6063, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_8f[] = {
+ /* 0x8f00 - 0x8fff */
+ 0x6065, 0x0000, 0x6066, 0x0000, 0x0000, 0x0000, 0x0000, 0x6067,
+ 0x6068, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6069,
+ 0x606a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x606b, 0x606c,
+ 0x606d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x606e, 0x0000,
+ 0x606f, 0x6070, 0x0000, 0x6071, 0x0000, 0x6072, 0x0000, 0x6073,
+ 0x6074, 0x0000, 0x0000, 0x0000, 0x6075, 0x6076, 0x6077, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6078, 0x6079, 0x607a, 0x607b,
+ 0x0000, 0x0000, 0x607c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x607d, 0x607e, 0x0000, 0x6121, 0x0000, 0x0000, 0x0000, 0x6122,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6123,
+ 0x0000, 0x6124, 0x6125, 0x6126, 0x6127, 0x6128, 0x0000, 0x0000,
+ 0x6129, 0x0000, 0x0000, 0x0000, 0x0000, 0x612a, 0x612b, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x612c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x612d, 0x0000, 0x0000,
+ 0x612e, 0x612f, 0x0000, 0x0000, 0x6130, 0x6131, 0x6132, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6133, 0x6134, 0x0000,
+ 0x6135, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6136, 0x0000,
+ 0x6137, 0x6138, 0x0000, 0x0000, 0x0000, 0x0000, 0x6139, 0x0000,
+ 0x0000, 0x0000, 0x613a, 0x613b, 0x0000, 0x613c, 0x0000, 0x0000,
+ 0x613d, 0x0000, 0x613e, 0x613f, 0x0000, 0x6140, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6141, 0x0000, 0x0000, 0x6142, 0x6143, 0x0000, 0x0000, 0x0000,
+ 0x6144, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6145, 0x0000,
+ 0x0000, 0x6146, 0x0000, 0x0000, 0x0000, 0x6147, 0x6148, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6149, 0x0000, 0x0000, 0x614a, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_90[] = {
+ /* 0x9000 - 0x90ff */
+ 0x0000, 0x0000, 0x614b, 0x0000, 0x614c, 0x0000, 0x0000, 0x0000,
+ 0x614d, 0x0000, 0x0000, 0x0000, 0x614e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x614f, 0x0000, 0x0000, 0x6150, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6151, 0x6152, 0x6154, 0x0000, 0x6155, 0x6156, 0x0000, 0x6153,
+ 0x0000, 0x0000, 0x0000, 0x6157, 0x6158, 0x0000, 0x0000, 0x6159,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x615a,
+ 0x0000, 0x0000, 0x0000, 0x615b, 0x615c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x615d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x615e, 0x0000, 0x615f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6160, 0x0000, 0x0000, 0x0000, 0x6161, 0x6162,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6163, 0x0000, 0x0000, 0x0000,
+ 0x6164, 0x0000, 0x0000, 0x0000, 0x6165, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6166, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6167, 0x0000, 0x0000,
+ 0x6168, 0x0000, 0x0000, 0x6169, 0x616a, 0x0000, 0x616b, 0x0000,
+ 0x616c, 0x0000, 0x0000, 0x0000, 0x0000, 0x616d, 0x0000, 0x616e,
+ 0x616f, 0x6170, 0x0000, 0x6171, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6172, 0x6173, 0x6174, 0x0000, 0x0000, 0x6175, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6176, 0x0000, 0x6177, 0x6178, 0x6179, 0x0000, 0x617a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x617b, 0x617d, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x617e, 0x6221, 0x6222, 0x0000, 0x6223,
+ 0x6224, 0x0000, 0x0000, 0x0000, 0x617c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x622d, 0x0000, 0x0000, 0x6225, 0x0000, 0x6226,
+ 0x6227, 0x6228, 0x0000, 0x0000, 0x6229, 0x622a, 0x746c, 0x622b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x622c, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x622f, 0x0000, 0x0000, 0x0000, 0x6230,
+ 0x6231, 0x0000, 0x0000, 0x0000, 0x6232, 0x0000, 0x622e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6233, 0x6234,
+};
+
+static unsigned short const unicode_to_jisx0212_91[] = {
+ /* 0x9100 - 0x91ff */
+ 0x6235, 0x0000, 0x0000, 0x0000, 0x6236, 0x6237, 0x6238, 0x0000,
+ 0x6239, 0x0000, 0x0000, 0x0000, 0x0000, 0x623a, 0x0000, 0x0000,
+ 0x623b, 0x0000, 0x0000, 0x0000, 0x623c, 0x746e, 0x623d, 0x623e,
+ 0x623f, 0x0000, 0x6240, 0x0000, 0x6241, 0x0000, 0x6242, 0x0000,
+ 0x6243, 0x0000, 0x6245, 0x6246, 0x0000, 0x6244, 0x0000, 0x6247,
+ 0x0000, 0x6248, 0x0000, 0x0000, 0x0000, 0x0000, 0x6249, 0x624a,
+ 0x0000, 0x624b, 0x0000, 0x0000, 0x624c, 0x0000, 0x624d, 0x624e,
+ 0x0000, 0x624f, 0x6250, 0x0000, 0x6251, 0x6252, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6253, 0x0000, 0x0000, 0x0000, 0x6254,
+ 0x6255, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6256,
+ 0x0000, 0x0000, 0x0000, 0x6257, 0x0000, 0x0000, 0x0000, 0x6258,
+ 0x0000, 0x6259, 0x625a, 0x625b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x625c, 0x0000, 0x0000, 0x625d, 0x0000, 0x0000, 0x625e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x625f, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6260, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6261, 0x6262, 0x6263, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6264, 0x0000, 0x6265, 0x0000, 0x6266, 0x6267, 0x0000,
+ 0x0000, 0x0000, 0x6268, 0x0000, 0x0000, 0x0000, 0x6269, 0x0000,
+ 0x0000, 0x626a, 0x0000, 0x626b, 0x626c, 0x626d, 0x0000, 0x0000,
+ 0x626e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x626f, 0x0000,
+ 0x0000, 0x6270, 0x0000, 0x0000, 0x0000, 0x0000, 0x6271, 0x0000,
+ 0x6272, 0x0000, 0x0000, 0x0000, 0x6273, 0x6274, 0x6275, 0x0000,
+ 0x6276, 0x6277, 0x6278, 0x6279, 0x0000, 0x0000, 0x627a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x627b, 0x627c, 0x627d, 0x0000, 0x627e,
+ 0x0000, 0x0000, 0x6321, 0x6322, 0x0000, 0x6323, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6324, 0x6325, 0x0000, 0x0000, 0x6326,
+ 0x0000, 0x6327, 0x6328, 0x0000, 0x0000, 0x0000, 0x6329, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x632a, 0x632b, 0x0000, 0x0000,
+ 0x0000, 0x632c, 0x632d, 0x0000, 0x632e, 0x632f, 0x6330, 0x6331,
+ 0x6332, 0x6333, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6334,
+ 0x0000, 0x6335, 0x0000, 0x6336, 0x0000, 0x6337, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_92[] = {
+ /* 0x9200 - 0x92ff */
+ 0x6338, 0x6339, 0x0000, 0x0000, 0x633a, 0x633b, 0x633c, 0x633d,
+ 0x0000, 0x633e, 0x633f, 0x0000, 0x6340, 0x0000, 0x0000, 0x0000,
+ 0x6341, 0x0000, 0x6342, 0x6343, 0x0000, 0x0000, 0x6344, 0x0000,
+ 0x6345, 0x0000, 0x0000, 0x0000, 0x6346, 0x6347, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6348, 0x6349, 0x634a, 0x634b, 0x0000,
+ 0x634c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x634d, 0x634e,
+ 0x634f, 0x0000, 0x0000, 0x6350, 0x0000, 0x6351, 0x6352, 0x0000,
+ 0x6353, 0x6354, 0x6355, 0x0000, 0x6356, 0x0000, 0x6357, 0x0000,
+ 0x6358, 0x0000, 0x6359, 0x635a, 0x0000, 0x0000, 0x635b, 0x635c,
+ 0x0000, 0x0000, 0x635d, 0x0000, 0x0000, 0x635e, 0x635f, 0x6360,
+ 0x0000, 0x6361, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6362, 0x6363, 0x0000, 0x0000, 0x6364, 0x6365, 0x0000, 0x0000,
+ 0x6366, 0x6367, 0x0000, 0x0000, 0x0000, 0x6368, 0x0000, 0x6369,
+ 0x636a, 0x636b, 0x0000, 0x0000, 0x0000, 0x0000, 0x636c, 0x636d,
+ 0x636e, 0x0000, 0x0000, 0x0000, 0x0000, 0x636f, 0x6370, 0x6371,
+ 0x6372, 0x6373, 0x0000, 0x6374, 0x6375, 0x6376, 0x0000, 0x6377,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6378, 0x6379, 0x637a, 0x0000, 0x0000, 0x637b, 0x637c, 0x0000,
+ 0x0000, 0x0000, 0x637d, 0x0000, 0x0000, 0x0000, 0x0000, 0x637e,
+ 0x0000, 0x6421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6422,
+ 0x6423, 0x0000, 0x0000, 0x0000, 0x6424, 0x6425, 0x0000, 0x6426,
+ 0x6427, 0x0000, 0x0000, 0x6428, 0x0000, 0x0000, 0x0000, 0x6429,
+ 0x0000, 0x0000, 0x642a, 0x0000, 0x0000, 0x0000, 0x642b, 0x0000,
+ 0x642c, 0x0000, 0x642d, 0x642e, 0x642f, 0x6430, 0x0000, 0x6431,
+ 0x6432, 0x6433, 0x6434, 0x6435, 0x0000, 0x6436, 0x6437, 0x6438,
+ 0x6439, 0x0000, 0x0000, 0x643a, 0x643b, 0x643c, 0x643d, 0x0000,
+ 0x643e, 0x0000, 0x0000, 0x643f, 0x0000, 0x6440, 0x0000, 0x6441,
+ 0x6442, 0x6443, 0x0000, 0x0000, 0x6444, 0x6445, 0x0000, 0x6446,
+ 0x6447, 0x6448, 0x0000, 0x6449, 0x0000, 0x644a, 0x0000, 0x644b,
+ 0x644c, 0x0000, 0x0000, 0x0000, 0x644d, 0x0000, 0x644e, 0x0000,
+ 0x644f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6450, 0x0000, 0x6451, 0x0000, 0x0000, 0x0000, 0x6452,
+};
+
+static unsigned short const unicode_to_jisx0212_93[] = {
+ /* 0x9300 - 0x93ff */
+ 0x6453, 0x0000, 0x6454, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6455, 0x0000, 0x0000, 0x0000, 0x0000, 0x6456, 0x0000, 0x0000,
+ 0x0000, 0x6457, 0x0000, 0x0000, 0x6458, 0x6459, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x645a, 0x645b, 0x645c, 0x645d,
+ 0x0000, 0x645e, 0x0000, 0x0000, 0x645f, 0x6460, 0x0000, 0x6461,
+ 0x0000, 0x6462, 0x6463, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6464, 0x6465, 0x0000, 0x6466, 0x6467,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6468,
+ 0x6469, 0x646a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x646b, 0x646c, 0x646d, 0x0000, 0x0000, 0x646e, 0x0000, 0x646f,
+ 0x6470, 0x0000, 0x6471, 0x0000, 0x0000, 0x0000, 0x6472, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6473, 0x6474, 0x0000, 0x6475,
+ 0x0000, 0x6476, 0x6477, 0x0000, 0x0000, 0x6478, 0x0000, 0x6479,
+ 0x647a, 0x647b, 0x0000, 0x647c, 0x647d, 0x0000, 0x647e, 0x0000,
+ 0x0000, 0x0000, 0x6521, 0x0000, 0x0000, 0x6522, 0x0000, 0x6523,
+ 0x6524, 0x6525, 0x6526, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6527, 0x0000, 0x6528, 0x6529, 0x0000, 0x652a, 0x0000, 0x652b,
+ 0x0000, 0x0000, 0x652c, 0x0000, 0x0000, 0x652d, 0x0000, 0x0000,
+ 0x652e, 0x0000, 0x0000, 0x652f, 0x0000, 0x0000, 0x6530, 0x0000,
+ 0x0000, 0x6531, 0x0000, 0x6532, 0x6533, 0x0000, 0x6534, 0x0000,
+ 0x6535, 0x653b, 0x0000, 0x6536, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6537, 0x6538, 0x6539, 0x0000,
+ 0x0000, 0x0000, 0x653a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x653c, 0x0000, 0x0000, 0x653d, 0x653e, 0x653f, 0x6540,
+ 0x0000, 0x6541, 0x6542, 0x6543, 0x6544, 0x6545, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6546, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6547, 0x0000, 0x0000, 0x6548, 0x0000, 0x6549, 0x654a,
+ 0x0000, 0x0000, 0x654b, 0x0000, 0x0000, 0x0000, 0x654c, 0x654d,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x654f,
+ 0x6550, 0x654e, 0x6551, 0x6552, 0x0000, 0x6553, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_94[] = {
+ /* 0x9400 - 0x94ff */
+ 0x0000, 0x6554, 0x6555, 0x0000, 0x6556, 0x0000, 0x0000, 0x0000,
+ 0x6557, 0x6558, 0x0000, 0x0000, 0x0000, 0x6559, 0x655a, 0x655b,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x655c, 0x655d, 0x655e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x655f,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6560, 0x6561,
+ 0x0000, 0x6562, 0x6563, 0x6564, 0x6565, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6566, 0x0000, 0x6568, 0x0000, 0x6567,
+ 0x0000, 0x0000, 0x0000, 0x6569, 0x0000, 0x656a, 0x0000, 0x0000,
+ 0x656b, 0x0000, 0x656c, 0x0000, 0x656d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x656e, 0x0000, 0x0000,
+ 0x0000, 0x656f, 0x0000, 0x0000, 0x6570, 0x0000, 0x0000, 0x6571,
+ 0x0000, 0x6572, 0x0000, 0x6573, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6574, 0x0000, 0x0000, 0x6575, 0x0000, 0x6576, 0x6577, 0x6578,
+ 0x0000, 0x6579, 0x657a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x657c, 0x657b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_95[] = {
+ /* 0x9500 - 0x95ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x657d, 0x657e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6621, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6622, 0x0000, 0x0000, 0x0000,
+ 0x6623, 0x0000, 0x0000, 0x0000, 0x6624, 0x6625, 0x6626, 0x0000,
+ 0x0000, 0x0000, 0x7471, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6627, 0x6628, 0x6629,
+ 0x0000, 0x662a, 0x0000, 0x0000, 0x0000, 0x0000, 0x662b, 0x0000,
+ 0x0000, 0x662c, 0x0000, 0x662d, 0x662e, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x662f, 0x0000, 0x6630, 0x0000,
+ 0x0000, 0x0000, 0x6631, 0x0000, 0x0000, 0x6632, 0x0000, 0x6633,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6634, 0x0000,
+ 0x6635, 0x6636, 0x0000, 0x6637, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6638, 0x6639, 0x663a, 0x663b, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x663c, 0x663d, 0x0000, 0x0000, 0x663e, 0x663f, 0x6640,
+ 0x6641, 0x0000, 0x0000, 0x0000, 0x6642, 0x0000, 0x6643, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_96[] = {
+ /* 0x9600 - 0x96ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6644, 0x6645, 0x0000,
+ 0x0000, 0x0000, 0x6646, 0x0000, 0x6647, 0x6648, 0x6649, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x664a, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x664b, 0x0000, 0x664c, 0x0000, 0x0000, 0x0000, 0x664d,
+ 0x664e, 0x664f, 0x6650, 0x0000, 0x6651, 0x6652, 0x0000, 0x0000,
+ 0x0000, 0x6653, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6654, 0x0000, 0x6655, 0x0000, 0x6656, 0x6657,
+ 0x6658, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6659, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x665a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x665b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x665c, 0x665d, 0x0000, 0x665e, 0x665f,
+ 0x0000, 0x6660, 0x6661, 0x6662, 0x6663, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6664, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6665, 0x0000, 0x0000, 0x0000, 0x0000, 0x6666, 0x0000,
+ 0x0000, 0x0000, 0x6667, 0x0000, 0x0000, 0x6668, 0x0000, 0x6669,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x666a, 0x666b, 0x666c, 0x0000,
+ 0x0000, 0x666d, 0x0000, 0x0000, 0x0000, 0x0000, 0x666e, 0x666f,
+ 0x0000, 0x0000, 0x0000, 0x6670, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6671, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6672, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6673, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6675, 0x0000, 0x6676, 0x0000, 0x0000, 0x6677, 0x6678, 0x6679,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x667a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x667b,
+ 0x0000, 0x667c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x667d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_97[] = {
+ /* 0x9700 - 0x97ff */
+ 0x0000, 0x0000, 0x667e, 0x6721, 0x0000, 0x6722, 0x0000, 0x0000,
+ 0x0000, 0x6723, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6724, 0x6725, 0x0000, 0x6726, 0x0000, 0x0000,
+ 0x0000, 0x6727, 0x6728, 0x6729, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x672a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x672b, 0x0000, 0x672c, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x7474, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x672d, 0x0000, 0x672e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x672f, 0x0000, 0x0000, 0x7475, 0x6730, 0x6731,
+ 0x0000, 0x7476, 0x0000, 0x0000, 0x0000, 0x6732, 0x0000, 0x6733,
+ 0x6734, 0x0000, 0x6735, 0x6736, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6737, 0x0000, 0x0000, 0x0000, 0x6738,
+ 0x0000, 0x0000, 0x6739, 0x0000, 0x0000, 0x0000, 0x673a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x673b, 0x0000, 0x0000, 0x673c, 0x673d,
+ 0x673e, 0x0000, 0x0000, 0x673f, 0x0000, 0x6740, 0x0000, 0x6741,
+ 0x6742, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6743, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6744, 0x6745, 0x6746,
+ 0x0000, 0x6747, 0x6748, 0x0000, 0x0000, 0x0000, 0x6749, 0x674a,
+ 0x0000, 0x0000, 0x674b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x674c, 0x0000, 0x674d, 0x0000,
+ 0x0000, 0x674e, 0x674f, 0x0000, 0x0000, 0x6750, 0x6751, 0x0000,
+ 0x6752, 0x6753, 0x6754, 0x0000, 0x6755, 0x0000, 0x6756, 0x6757,
+ 0x0000, 0x6758, 0x0000, 0x0000, 0x6759, 0x675a, 0x0000, 0x675b,
+ 0x0000, 0x675c, 0x675d, 0x0000, 0x675e, 0x675f, 0x6760, 0x0000,
+ 0x6761, 0x6762, 0x0000, 0x0000, 0x6763, 0x0000, 0x0000, 0x6764,
+ 0x6765, 0x6766, 0x0000, 0x676a, 0x0000, 0x6767, 0x6768, 0x0000,
+ 0x6769, 0x676b, 0x0000, 0x0000, 0x676c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x676d,
+ 0x0000, 0x676e, 0x0000, 0x0000, 0x676f, 0x0000, 0x0000, 0x6770,
+ 0x6771, 0x0000, 0x6772, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_98[] = {
+ /* 0x9800 - 0x98ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6773,
+ 0x0000, 0x0000, 0x6774, 0x0000, 0x0000, 0x6776, 0x6777, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6778, 0x0000, 0x6779, 0x0000,
+ 0x0000, 0x6775, 0x0000, 0x0000, 0x677a, 0x0000, 0x677b, 0x0000,
+ 0x677c, 0x0000, 0x0000, 0x677d, 0x0000, 0x6828, 0x677e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6821, 0x0000, 0x0000, 0x6822, 0x6823,
+ 0x6824, 0x0000, 0x6825, 0x6826, 0x0000, 0x6827, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6829, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x682a, 0x0000, 0x0000, 0x682b,
+ 0x0000, 0x0000, 0x682c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x682d, 0x682e, 0x682f, 0x0000, 0x0000, 0x6830, 0x6831,
+ 0x0000, 0x6832, 0x6833, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6834, 0x6835, 0x0000, 0x6836, 0x6837, 0x0000,
+ 0x0000, 0x0000, 0x6838, 0x0000, 0x6839, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x683a, 0x0000, 0x683b, 0x683c, 0x0000,
+ 0x683d, 0x0000, 0x0000, 0x0000, 0x683e, 0x0000, 0x0000, 0x683f,
+ 0x6840, 0x0000, 0x6841, 0x6842, 0x0000, 0x0000, 0x0000, 0x6843,
+ 0x0000, 0x0000, 0x6844, 0x0000, 0x0000, 0x6845, 0x0000, 0x0000,
+ 0x6846, 0x0000, 0x0000, 0x0000, 0x6847, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6848, 0x0000, 0x6849, 0x0000, 0x684a, 0x684b, 0x684c,
+ 0x0000, 0x0000, 0x684d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x684e, 0x0000, 0x0000, 0x684f, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_99[] = {
+ /* 0x9900 - 0x99ff */
+ 0x0000, 0x0000, 0x6850, 0x0000, 0x0000, 0x0000, 0x0000, 0x6851,
+ 0x6852, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6853, 0x0000, 0x0000, 0x0000, 0x6854, 0x6855, 0x6856,
+ 0x0000, 0x0000, 0x6857, 0x6858, 0x6859, 0x0000, 0x0000, 0x685a,
+ 0x0000, 0x0000, 0x685b, 0x0000, 0x0000, 0x0000, 0x685c, 0x685d,
+ 0x0000, 0x0000, 0x0000, 0x685e, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x685f, 0x6860, 0x6861, 0x6862, 0x6863, 0x0000, 0x0000,
+ 0x0000, 0x6864, 0x6865, 0x6866, 0x6867, 0x0000, 0x0000, 0x0000,
+ 0x6868, 0x6869, 0x0000, 0x0000, 0x0000, 0x0000, 0x686a, 0x686b,
+ 0x686c, 0x0000, 0x0000, 0x0000, 0x0000, 0x686d, 0x686e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x686f, 0x0000, 0x0000, 0x0000,
+ 0x6870, 0x6871, 0x0000, 0x6872, 0x6873, 0x0000, 0x6874, 0x6875,
+ 0x6876, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6877, 0x0000, 0x6878, 0x747a, 0x6879,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x687a, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x687b, 0x687c, 0x687d, 0x0000, 0x0000, 0x687e, 0x0000, 0x0000,
+ 0x0000, 0x6921, 0x6922, 0x0000, 0x0000, 0x6923, 0x0000, 0x6924,
+ 0x0000, 0x0000, 0x0000, 0x6925, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6926, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6927, 0x6928, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6929, 0x692a, 0x0000, 0x692b, 0x0000, 0x692c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x692d,
+ 0x0000, 0x0000, 0x692e, 0x692f, 0x6930, 0x0000, 0x0000, 0x0000,
+ 0x6931, 0x0000, 0x0000, 0x0000, 0x6932, 0x6933, 0x0000, 0x0000,
+ 0x0000, 0x6934, 0x0000, 0x0000, 0x0000, 0x6935, 0x6936, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_9a[] = {
+ /* 0x9a00 - 0x9aff */
+ 0x0000, 0x0000, 0x6937, 0x6938, 0x6939, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x693a, 0x693b, 0x0000, 0x0000, 0x0000,
+ 0x693c, 0x693d, 0x0000, 0x0000, 0x0000, 0x0000, 0x693e, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x693f, 0x0000,
+ 0x6940, 0x0000, 0x6941, 0x6942, 0x6943, 0x0000, 0x0000, 0x6944,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6945, 0x6946, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6947, 0x0000, 0x6948, 0x6949, 0x0000,
+ 0x694a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x694c, 0x0000, 0x0000, 0x694d, 0x0000, 0x0000, 0x694b,
+ 0x0000, 0x0000, 0x694e, 0x694f, 0x6950, 0x0000, 0x6951, 0x0000,
+ 0x0000, 0x6952, 0x0000, 0x0000, 0x6953, 0x0000, 0x6954, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6955, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6956, 0x0000, 0x6957, 0x0000, 0x6958, 0x6959,
+ 0x0000, 0x0000, 0x695a, 0x0000, 0x695b, 0x695c, 0x695d, 0x0000,
+ 0x0000, 0x695e, 0x0000, 0x695f, 0x0000, 0x0000, 0x6960, 0x6961,
+ 0x0000, 0x6962, 0x0000, 0x6963, 0x0000, 0x0000, 0x6964, 0x0000,
+ 0x6965, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6966, 0x0000,
+ 0x6967, 0x0000, 0x6968, 0x0000, 0x0000, 0x6969, 0x696a, 0x696b,
+ 0x0000, 0x747b, 0x0000, 0x696c, 0x696d, 0x0000, 0x0000, 0x0000,
+ 0x696e, 0x0000, 0x0000, 0x0000, 0x696f, 0x6970, 0x0000, 0x6971,
+ 0x0000, 0x6972, 0x0000, 0x0000, 0x6973, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6974, 0x6975, 0x0000, 0x6976, 0x0000, 0x0000,
+ 0x0000, 0x6977, 0x6978, 0x0000, 0x0000, 0x6979, 0x0000, 0x697a,
+};
+
+static unsigned short const unicode_to_jisx0212_9b[] = {
+ /* 0x9b00 - 0x9bff */
+ 0x697b, 0x697c, 0x697d, 0x697e, 0x6a21, 0x6a22, 0x0000, 0x0000,
+ 0x6a23, 0x6a24, 0x0000, 0x6a25, 0x6a26, 0x6a27, 0x6a28, 0x0000,
+ 0x6a29, 0x0000, 0x6a2a, 0x0000, 0x0000, 0x0000, 0x6a2b, 0x0000,
+ 0x0000, 0x6a2c, 0x0000, 0x6a2d, 0x6a2e, 0x0000, 0x0000, 0x0000,
+ 0x6a2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a30, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6a31, 0x0000, 0x6a32, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6a33, 0x6a34, 0x6a35, 0x0000, 0x6a36,
+ 0x0000, 0x6a37, 0x6a38, 0x0000, 0x0000, 0x6a39, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6a3a, 0x0000, 0x0000, 0x6a3b, 0x6a3c, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a3d, 0x6a3e, 0x6a3f,
+ 0x0000, 0x0000, 0x0000, 0x6a40, 0x0000, 0x0000, 0x6a41, 0x0000,
+ 0x0000, 0x6a42, 0x0000, 0x6a43, 0x0000, 0x6a44, 0x6a45, 0x0000,
+ 0x6a46, 0x0000, 0x6a47, 0x6a48, 0x6a49, 0x6a4a, 0x6a4b, 0x0000,
+ 0x0000, 0x0000, 0x747c, 0x6a4c, 0x0000, 0x6a4d, 0x0000, 0x6a4e,
+ 0x6a4f, 0x6a50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a51,
+ 0x6a52, 0x0000, 0x0000, 0x0000, 0x6a53, 0x6a54, 0x6a55, 0x6a56,
+ 0x0000, 0x6a57, 0x6a58, 0x6a59, 0x0000, 0x6a5a, 0x0000, 0x6a5b,
+ 0x6a5c, 0x0000, 0x0000, 0x0000, 0x6a5d, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6a5e, 0x0000, 0x0000, 0x6a5f, 0x6a60, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a61, 0x6a62,
+ 0x0000, 0x6a63, 0x0000, 0x0000, 0x6a64, 0x0000, 0x0000, 0x0000,
+ 0x6a65, 0x6a66, 0x6a67, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a68,
+ 0x6a69, 0x0000, 0x0000, 0x6a6a, 0x6a6b, 0x0000, 0x6a6c, 0x6a6d,
+ 0x0000, 0x6a6e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a6f,
+ 0x6a70, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a71, 0x0000,
+ 0x6a72, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a73,
+ 0x6a74, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a75, 0x0000, 0x6a76,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a77, 0x0000, 0x6a78,
+ 0x0000, 0x0000, 0x6a79, 0x6a7a, 0x0000, 0x0000, 0x0000, 0x6a7b,
+ 0x0000, 0x0000, 0x0000, 0x6a7c, 0x0000, 0x0000, 0x0000, 0x6a7d,
+ 0x6a7e, 0x6b21, 0x6b22, 0x0000, 0x0000, 0x6b23, 0x0000, 0x6b24,
+};
+
+static unsigned short const unicode_to_jisx0212_9c[] = {
+ /* 0x9c00 - 0x9cff */
+ 0x6b25, 0x0000, 0x6b26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6b27, 0x0000, 0x0000, 0x0000, 0x6b28,
+ 0x0000, 0x6b29, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b2a, 0x0000,
+ 0x6b2b, 0x6b2c, 0x6b2d, 0x0000, 0x6b2e, 0x0000, 0x6b2f, 0x0000,
+ 0x0000, 0x0000, 0x6b30, 0x6b31, 0x0000, 0x0000, 0x6b32, 0x6b33,
+ 0x6b34, 0x6b35, 0x6b36, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6b37, 0x0000, 0x0000, 0x0000, 0x6b38, 0x6b39, 0x6b3a,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b3b, 0x0000, 0x0000,
+ 0x0000, 0x6b3c, 0x0000, 0x6b3d, 0x6b3e, 0x6b3f, 0x0000, 0x0000,
+ 0x0000, 0x6b40, 0x6b41, 0x0000, 0x0000, 0x0000, 0x6b42, 0x6b43,
+ 0x6b44, 0x0000, 0x0000, 0x6b45, 0x6b46, 0x0000, 0x6b47, 0x0000,
+ 0x6b48, 0x0000, 0x0000, 0x6b49, 0x6b50, 0x6b4a, 0x6b4b, 0x6b4c,
+ 0x0000, 0x0000, 0x0000, 0x6b4d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6b52, 0x6b4e, 0x6b4f, 0x6b51, 0x0000, 0x0000, 0x6b53, 0x0000,
+ 0x6b54, 0x0000, 0x6b55, 0x0000, 0x0000, 0x6b56, 0x0000, 0x6b57,
+ 0x0000, 0x0000, 0x0000, 0x6b58, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b59, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6b5a, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b5b,
+ 0x0000, 0x6b5c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_9d[] = {
+ /* 0x9d00 - 0x9dff */
+ 0x0000, 0x0000, 0x6b5e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6b5d, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6b5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b60,
+ 0x6b61, 0x0000, 0x0000, 0x0000, 0x6b62, 0x6b63, 0x6b64, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b65,
+ 0x6b66, 0x0000, 0x6b67, 0x6b68, 0x6b69, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6b6a, 0x0000, 0x6b6b, 0x6b6d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6b6e, 0x6b6f, 0x0000, 0x6b6c, 0x0000, 0x6b70,
+ 0x0000, 0x0000, 0x6b71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6b72, 0x6b73, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b74,
+ 0x0000, 0x0000, 0x6b76, 0x6b75, 0x0000, 0x6b77, 0x0000, 0x0000,
+ 0x0000, 0x6b78, 0x6b79, 0x6b7a, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6b7b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b7c, 0x6b7d,
+ 0x0000, 0x0000, 0x0000, 0x6b7e, 0x6c21, 0x0000, 0x6c22, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6c23, 0x6c24, 0x0000, 0x6c25, 0x0000,
+ 0x0000, 0x0000, 0x6c26, 0x0000, 0x0000, 0x6c27, 0x6c28, 0x0000,
+ 0x0000, 0x0000, 0x6c29, 0x6c2a, 0x0000, 0x6c2b, 0x6c2c, 0x6c2d,
+ 0x6c2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6c2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6c30, 0x0000, 0x6c31, 0x0000, 0x6c32, 0x0000,
+ 0x0000, 0x6c33, 0x0000, 0x0000, 0x0000, 0x6c34, 0x0000, 0x0000,
+ 0x0000, 0x6c35, 0x0000, 0x0000, 0x6c36, 0x0000, 0x0000, 0x6c37,
+ 0x0000, 0x0000, 0x0000, 0x6c38, 0x0000, 0x0000, 0x0000, 0x6c39,
+ 0x0000, 0x6c3a, 0x6c3b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6c3c, 0x6c3d, 0x6c3e, 0x6c3f,
+ 0x0000, 0x0000, 0x6c40, 0x0000, 0x0000, 0x0000, 0x6c41, 0x6c42,
+ 0x6c43, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c44, 0x0000, 0x6c45,
+ 0x0000, 0x6c46, 0x0000, 0x6c47, 0x0000, 0x0000, 0x6c48, 0x0000,
+ 0x6c49, 0x0000, 0x0000, 0x6c4a, 0x6c4b, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c4c, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_9e[] = {
+ /* 0x9e00 - 0x9eff */
+ 0x0000, 0x0000, 0x6c4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c4f,
+ 0x0000, 0x0000, 0x6c4d, 0x0000, 0x0000, 0x0000, 0x6c50, 0x0000,
+ 0x6c51, 0x6c52, 0x6c53, 0x0000, 0x0000, 0x6c54, 0x6c55, 0x0000,
+ 0x0000, 0x6c56, 0x0000, 0x0000, 0x6c57, 0x6c58, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6c59, 0x6c5a, 0x6c5b, 0x0000, 0x0000, 0x0000,
+ 0x6c5c, 0x0000, 0x6c5d, 0x6c5e, 0x6c5f, 0x6c60, 0x0000, 0x6c61,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c62, 0x6c63,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c64, 0x0000,
+ 0x6c65, 0x0000, 0x0000, 0x6c66, 0x0000, 0x0000, 0x6c67, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6c68, 0x0000, 0x0000, 0x0000,
+ 0x6c69, 0x0000, 0x0000, 0x0000, 0x6c6a, 0x0000, 0x6c6b, 0x6c6c,
+ 0x6c6d, 0x0000, 0x0000, 0x6c6e, 0x6c6f, 0x6c70, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c71, 0x0000,
+ 0x6c72, 0x0000, 0x0000, 0x6c73, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x747e, 0x0000, 0x0000, 0x0000, 0x6c74, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c75,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6c76, 0x0000, 0x0000, 0x6c77,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x6c78, 0x6c79, 0x6c7a, 0x0000,
+ 0x6c7b, 0x6c7c, 0x6c7d, 0x0000, 0x0000, 0x6c7e, 0x0000, 0x0000,
+ 0x6d21, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d22,
+};
+
+static unsigned short const unicode_to_jisx0212_9f[] = {
+ /* 0x9f00 - 0x9fff */
+ 0x0000, 0x0000, 0x6d23, 0x6d24, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x6d25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d26,
+ 0x6d27, 0x6d28, 0x6d29, 0x0000, 0x6d2a, 0x0000, 0x6d2b, 0x6d2c,
+ 0x0000, 0x6d2d, 0x6d2e, 0x6d2f, 0x0000, 0x0000, 0x0000, 0x6d30,
+ 0x0000, 0x0000, 0x6d31, 0x0000, 0x0000, 0x0000, 0x6d32, 0x0000,
+ 0x0000, 0x0000, 0x6d33, 0x6d34, 0x0000, 0x0000, 0x0000, 0x6d35,
+ 0x0000, 0x6d36, 0x6d37, 0x0000, 0x6d38, 0x0000, 0x0000, 0x6d39,
+ 0x0000, 0x6d3a, 0x6d3b, 0x0000, 0x6d3c, 0x6d3d, 0x0000, 0x6d3e,
+ 0x0000, 0x6d3f, 0x0000, 0x6d40, 0x6d41, 0x6d42, 0x6d43, 0x6d44,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x6d45, 0x0000, 0x6d46, 0x6d47, 0x6d48,
+ 0x6d49, 0x0000, 0x6d4a, 0x0000, 0x0000, 0x6d4b, 0x6d4c, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x6d4d, 0x6d4e, 0x0000, 0x0000, 0x0000, 0x6d4f, 0x6d50, 0x6d51,
+ 0x6d52, 0x6d53, 0x0000, 0x6d54, 0x0000, 0x6d55, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x6d56, 0x0000, 0x0000, 0x6d57, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d58,
+ 0x6d59, 0x6d5a, 0x6d5b, 0x0000, 0x6d5c, 0x0000, 0x6d5d, 0x6d5e,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d5f, 0x0000,
+ 0x0000, 0x6d60, 0x6d61, 0x6d62, 0x0000, 0x6d63, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_f9[] = {
+ /* 0xf900 - 0xf9ff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x7445, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x7472, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_fa[] = {
+ /* 0xfa00 - 0xfaff */
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7434, 0x7437,
+ 0x7438, 0x743d, 0x7444, 0x7447, 0x7448, 0x744e, 0x744f, 0x7453,
+ 0x7455, 0x7456, 0x7457, 0x7458, 0x745a, 0x745b, 0x745e, 0x7460,
+ 0x7462, 0x7463, 0x7465, 0x7469, 0x746a, 0x746b, 0x746d, 0x746f,
+ 0x7470, 0x7473, 0x7477, 0x7478, 0x7479, 0x747d, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const unicode_to_jisx0212_ff[] = {
+ /* 0xff00 - 0xffff */
+ 0x0000, 0x0000, 0x742a, 0x0000, 0x0000, 0x0000, 0x0000, 0x7429,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+};
+
+static unsigned short const * const unicode_to_jisx0212_map[0x100] = {
+ /* 0x00XX - 0x0fXX */
+ unicode_to_jisx0212_00,
+ unicode_to_jisx0212_01,
+ unicode_to_jisx0212_02,
+ unicode_to_jisx0212_03,
+ unicode_to_jisx0212_04,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 0x10XX - 0x1fXX */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 0x20XX - 0x2fXX */
+ 0,
+ unicode_to_jisx0212_21,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 0x30XX - 0x3fXX */
+ 0, 0,
+ unicode_to_jisx0212_32,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 0x40XX - 0x4fXX */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ unicode_to_jisx0212_4e,
+ unicode_to_jisx0212_4f,
+ /* 0x50XX - 0x5fXX */
+ unicode_to_jisx0212_50,
+ unicode_to_jisx0212_51,
+ unicode_to_jisx0212_52,
+ unicode_to_jisx0212_53,
+ unicode_to_jisx0212_54,
+ unicode_to_jisx0212_55,
+ unicode_to_jisx0212_56,
+ unicode_to_jisx0212_57,
+ unicode_to_jisx0212_58,
+ unicode_to_jisx0212_59,
+ unicode_to_jisx0212_5a,
+ unicode_to_jisx0212_5b,
+ unicode_to_jisx0212_5c,
+ unicode_to_jisx0212_5d,
+ unicode_to_jisx0212_5e,
+ unicode_to_jisx0212_5f,
+ /* 0x60XX - 0x6fXX */
+ unicode_to_jisx0212_60,
+ unicode_to_jisx0212_61,
+ unicode_to_jisx0212_62,
+ unicode_to_jisx0212_63,
+ unicode_to_jisx0212_64,
+ unicode_to_jisx0212_65,
+ unicode_to_jisx0212_66,
+ unicode_to_jisx0212_67,
+ unicode_to_jisx0212_68,
+ unicode_to_jisx0212_69,
+ unicode_to_jisx0212_6a,
+ unicode_to_jisx0212_6b,
+ unicode_to_jisx0212_6c,
+ unicode_to_jisx0212_6d,
+ unicode_to_jisx0212_6e,
+ unicode_to_jisx0212_6f,
+ /* 0x70XX - 0x7fXX */
+ unicode_to_jisx0212_70,
+ unicode_to_jisx0212_71,
+ unicode_to_jisx0212_72,
+ unicode_to_jisx0212_73,
+ unicode_to_jisx0212_74,
+ unicode_to_jisx0212_75,
+ unicode_to_jisx0212_76,
+ unicode_to_jisx0212_77,
+ unicode_to_jisx0212_78,
+ unicode_to_jisx0212_79,
+ unicode_to_jisx0212_7a,
+ unicode_to_jisx0212_7b,
+ unicode_to_jisx0212_7c,
+ unicode_to_jisx0212_7d,
+ unicode_to_jisx0212_7e,
+ unicode_to_jisx0212_7f,
+ /* 0x80XX - 0x8fXX */
+ unicode_to_jisx0212_80,
+ unicode_to_jisx0212_81,
+ unicode_to_jisx0212_82,
+ unicode_to_jisx0212_83,
+ unicode_to_jisx0212_84,
+ unicode_to_jisx0212_85,
+ unicode_to_jisx0212_86,
+ unicode_to_jisx0212_87,
+ unicode_to_jisx0212_88,
+ unicode_to_jisx0212_89,
+ unicode_to_jisx0212_8a,
+ unicode_to_jisx0212_8b,
+ unicode_to_jisx0212_8c,
+ unicode_to_jisx0212_8d,
+ unicode_to_jisx0212_8e,
+ unicode_to_jisx0212_8f,
+ /* 0x90XX - 0x9fXX */
+ unicode_to_jisx0212_90,
+ unicode_to_jisx0212_91,
+ unicode_to_jisx0212_92,
+ unicode_to_jisx0212_93,
+ unicode_to_jisx0212_94,
+ unicode_to_jisx0212_95,
+ unicode_to_jisx0212_96,
+ unicode_to_jisx0212_97,
+ unicode_to_jisx0212_98,
+ unicode_to_jisx0212_99,
+ unicode_to_jisx0212_9a,
+ unicode_to_jisx0212_9b,
+ unicode_to_jisx0212_9c,
+ unicode_to_jisx0212_9d,
+ unicode_to_jisx0212_9e,
+ unicode_to_jisx0212_9f,
+ /* 0xa0XX - 0xafXX */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 0xb0XX - 0xbfXX */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 0xc0XX - 0xcfXX */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 0xd0XX - 0xdfXX */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 0xe0XX - 0xefXX */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ /* 0xf0XX - 0xffXX */
+ 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ unicode_to_jisx0212_f9,
+ unicode_to_jisx0212_fa,
+ 0, 0, 0, 0,
+ unicode_to_jisx0212_ff,
+};
+
+#endif
+
+#ifdef USE_JISX0212
+static uint unicode11ToJisx0212(uint h, uint l)
+{
+ unsigned short const *table;
+
+ table = unicode_to_jisx0212_map[h];
+ if (table != 0) {
+ return table[l];
+ }
+ return 0x0000;
+}
+#else
+static uint unicode11ToJisx0212(uint h, uint l)
+{
+ return 0x0000;
+}
+#endif
+
+static unsigned short const sjis208ibmvdc_unicode[] = {
+ /*0xfa40 -0xfafc*/
+ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
+ 0x2178, 0x2179, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165,
+ 0x2166, 0x2167, 0x2168, 0x2169, 0xffe2, 0xffe4, 0xff07, 0xff02,
+ 0x3231, 0x2116, 0x2121, 0x2235, 0x7e8a, 0x891c, 0x9348, 0x9288,
+ 0x84dc, 0x4fc9, 0x70bb, 0x6631, 0x68c8, 0x92f9, 0x66fb, 0x5f45,
+ 0x4e28, 0x4ee1, 0x4efc, 0x4f00, 0x4f03, 0x4f39, 0x4f56, 0x4f92,
+ 0x4f8a, 0x4f9a, 0x4f94, 0x4fcd, 0x5040, 0x5022, 0x4fff, 0x501e,
+ 0x5046, 0x5070, 0x5042, 0x5094, 0x50f4, 0x50d8, 0x514a, 0x30fb,
+ 0x5164, 0x519d, 0x51be, 0x51ec, 0x5215, 0x529c, 0x52a6, 0x52c0,
+ 0x52db, 0x5300, 0x5307, 0x5324, 0x5372, 0x5393, 0x53b2, 0x53dd,
+ 0xfa0e, 0x549c, 0x548a, 0x54a9, 0x54ff, 0x5586, 0x5759, 0x5765,
+ 0x57ac, 0x57c8, 0x57c7, 0xfa0f, 0xfa10, 0x589e, 0x58b2, 0x590b,
+ 0x5953, 0x595b, 0x595d, 0x5963, 0x59a4, 0x59ba, 0x5b56, 0x5bc0,
+ 0x752f, 0x5bd8, 0x5bec, 0x5c1e, 0x5ca6, 0x5cba, 0x5cf5, 0x5d27,
+ 0x5d53, 0xfa11, 0x5d42, 0x5d6d, 0x5db8, 0x5db9, 0x5dd0, 0x5f21,
+ 0x5f34, 0x5f67, 0x5fb7, 0x5fde, 0x605d, 0x6085, 0x608a, 0x60de,
+ 0x60d5, 0x6120, 0x60f2, 0x6111, 0x6137, 0x6130, 0x6198, 0x6213,
+ 0x62a6, 0x63f5, 0x6460, 0x649d, 0x64ce, 0x654e, 0x6600, 0x6615,
+ 0x663b, 0x6609, 0x662e, 0x661e, 0x6624, 0x6665, 0x6657, 0x6659,
+ 0xfa12, 0x6673, 0x6699, 0x66a0, 0x66b2, 0x66bf, 0x66fa, 0x670e,
+ 0xf929, 0x6766, 0x67bb, 0x6852, 0x67c0, 0x6801, 0x6844, 0x68cf,
+ 0xfa13, 0x6968, 0xfa14, 0x6998, 0x69e2, 0x6a30, 0x6a6b, 0x6a46,
+ 0x6a73, 0x6a7e, 0x6ae2, 0x6ae4, 0x6bd6, 0x6c3f, 0x6c5c, 0x6c86,
+ 0x6c6f, 0x6cda, 0x6d04, 0x6d87, 0x6d6f,
+ /*0xfb40 -0xfbfc*/
+ 0x6d96, 0x6dac, 0x6dcf, 0x6df8, 0x6df2, 0x6dfc, 0x6e39, 0x6e5c,
+ 0x6e27, 0x6e3c, 0x6ebf, 0x6f88, 0x6fb5, 0x6ff5, 0x7005, 0x7007,
+ 0x7028, 0x7085, 0x70ab, 0x710f, 0x7104, 0x715c, 0x7146, 0x7147,
+ 0xfa15, 0x71c1, 0x71fe, 0x72b1, 0x72be, 0x7324, 0xfa16, 0x7377,
+ 0x73bd, 0x73c9, 0x73d6, 0x73e3, 0x73d2, 0x7407, 0x73f5, 0x7426,
+ 0x742a, 0x7429, 0x742e, 0x7462, 0x7489, 0x749f, 0x7501, 0x756f,
+ 0x7682, 0x769c, 0x769e, 0x769b, 0x76a6, 0xfa17, 0x7746, 0x52af,
+ 0x7821, 0x784e, 0x7864, 0x787a, 0x7930, 0xfa18, 0xfa19, 0x30fb,
+ 0xfa1a, 0x7994, 0xfa1b, 0x799b, 0x7ad1, 0x7ae7, 0xfa1c, 0x7aeb,
+ 0x7b9e, 0xfa1d, 0x7d48, 0x7d5c, 0x7db7, 0x7da0, 0x7dd6, 0x7e52,
+ 0x7f47, 0x7fa1, 0xfa1e, 0x8301, 0x8362, 0x837f, 0x83c7, 0x83f6,
+ 0x8448, 0x84b4, 0x8553, 0x8559, 0x856b, 0xfa1f, 0x85b0, 0xfa20,
+ 0xfa21, 0x8807, 0x88f5, 0x8a12, 0x8a37, 0x8a79, 0x8aa7, 0x8abe,
+ 0x8adf, 0xfa22, 0x8af6, 0x8b53, 0x8b7f, 0x8cf0, 0x8cf4, 0x8d12,
+ 0x8d76, 0xfa23, 0x8ecf, 0xfa24, 0xfa25, 0x9067, 0x90de, 0xfa26,
+ 0x9115, 0x9127, 0x91da, 0x91d7, 0x91de, 0x91ed, 0x91ee, 0x91e4,
+ 0x91e5, 0x9206, 0x9210, 0x920a, 0x923a, 0x9240, 0x923c, 0x924e,
+ 0x9259, 0x9251, 0x9239, 0x9267, 0x92a7, 0x9277, 0x9278, 0x92e7,
+ 0x92d7, 0x92d9, 0x92d0, 0xfa27, 0x92d5, 0x92e0, 0x92d3, 0x9325,
+ 0x9321, 0x92fb, 0xfa28, 0x931e, 0x92ff, 0x931d, 0x9302, 0x9370,
+ 0x9357, 0x93a4, 0x93c6, 0x93de, 0x93f8, 0x9431, 0x9445, 0x9448,
+ 0x9592, 0xf9dc, 0xfa29, 0x969d, 0x96af, 0x9733, 0x973b, 0x9743,
+ 0x974d, 0x974f, 0x9751, 0x9755, 0x9857, 0x9865, 0xfa2a, 0xfa2b,
+ 0x9927, 0xfa2c, 0x999e, 0x9a4e, 0x9ad9,
+ /*0xfc40 -0xfc4b*/
+ 0x9adc, 0x9b75, 0x9b72, 0x9b8f, 0x9bb1, 0x9bbb, 0x9c00, 0x9d70,
+ 0x9d6b, 0xfa2d, 0x9e19, 0x9ed1, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+};
+
+uint QJpUnicodeConv::sjisibmvdcToUnicode(uint h, uint l) const
+{
+ if (((rule & IBM_VDC) || (rule & Microsoft_CP932)) && IsSjisIBMVDCChar1(h))
+ return sjis208ibmvdc_unicode[((h - 0x00fa)*189 + (l-0x0040))];
+ else
+ return 0;
+}
+
+uint QJpUnicodeConv::unicodeToSjisibmvdc(uint h, uint l) const
+{
+ if ((rule & IBM_VDC) || (rule & Microsoft_CP932)) {
+ uint u = (h<<8) | l;
+ //since there is no direct mapping, do a linear search
+ for (uint i =0; i<sizeof(sjis208ibmvdc_unicode)/sizeof(short) ; i++) {
+ //the table has zeros after 0xfc4b
+ if (!sjis208ibmvdc_unicode[i])
+ return 0;
+ if (u==sjis208ibmvdc_unicode[i]){
+ return (((0x00fa +(i/189))<<8) | (0x0040+(i%189)));
+ }
+ }
+ }
+ return 0;
+}
+
+static unsigned short const cp932_87_unicode[] = {
+ /*0x8740 -0x879c*/
+ 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
+ 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f,
+ 0x2470, 0x2471, 0x2472, 0x2473, 0x2160, 0x2161, 0x2162, 0x2163,
+ 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x0000, 0x3349,
+ 0x3314, 0x3322, 0x334d, 0x3318, 0x3327, 0x3303, 0x3336, 0x3351,
+ 0x3357, 0x330d, 0x3326, 0x3323, 0x332b, 0x334a, 0x333b, 0x339c,
+ 0x339d, 0x339e, 0x338e, 0x338f, 0x33c4, 0x33a1, 0x0000, 0x0000,
+ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x337b, 0x0000,
+ 0x301d, 0x301f, 0x2116, 0x33cd, 0x2121, 0x32a4, 0x32a5, 0x32a6,
+ 0x32a7, 0x32a8, 0x3231, 0x3232, 0x3239, 0x337e, 0x337d, 0x337c,
+ 0x2252, 0x2261, 0x222b, 0x222e, 0x2211, 0x221a, 0x22a5, 0x2220,
+ 0x221f, 0x22bf, 0x2235, 0x2229, 0x222a
+};
+
+static unsigned short const cp932_ed_ee_unicode[] = {
+ /*0xed40-0xedfc*/
+ 0x7e8a, 0x891c, 0x9348, 0x9288, 0x84dc, 0x4fc9, 0x70bb, 0x6631,
+ 0x68c8, 0x92f9, 0x66fb, 0x5f45, 0x4e28, 0x4ee1, 0x4efc, 0x4f00,
+ 0x4f03, 0x4f39, 0x4f56, 0x4f92, 0x4f8a, 0x4f9a, 0x4f94, 0x4fcd,
+ 0x5040, 0x5022, 0x4fff, 0x501e, 0x5046, 0x5070, 0x5042, 0x5094,
+ 0x50f4, 0x50d8, 0x514a, 0x5164, 0x519d, 0x51be, 0x51ec, 0x5215,
+ 0x529c, 0x52a6, 0x52c0, 0x52db, 0x5300, 0x5307, 0x5324, 0x5372,
+ 0x5393, 0x53b2, 0x53dd, 0xfa0e, 0x549c, 0x548a, 0x54a9, 0x54ff,
+ 0x5586, 0x5759, 0x5765, 0x57ac, 0x57c8, 0x57c7, 0xfa0f, 0x0000,
+ 0xfa10, 0x589e, 0x58b2, 0x590b, 0x5953, 0x595b, 0x595d, 0x5963,
+ 0x59a4, 0x59ba, 0x5b56, 0x5bc0, 0x752f, 0x5bd8, 0x5bec, 0x5c1e,
+ 0x5ca6, 0x5cba, 0x5cf5, 0x5d27, 0x5d53, 0xfa11, 0x5d42, 0x5d6d,
+ 0x5db8, 0x5db9, 0x5dd0, 0x5f21, 0x5f34, 0x5f67, 0x5fb7, 0x5fde,
+ 0x605d, 0x6085, 0x608a, 0x60de, 0x60d5, 0x6120, 0x60f2, 0x6111,
+ 0x6137, 0x6130, 0x6198, 0x6213, 0x62a6, 0x63f5, 0x6460, 0x649d,
+ 0x64ce, 0x654e, 0x6600, 0x6615, 0x663b, 0x6609, 0x662e, 0x661e,
+ 0x6624, 0x6665, 0x6657, 0x6659, 0xfa12, 0x6673, 0x6699, 0x66a0,
+ 0x66b2, 0x66bf, 0x66fa, 0x670e, 0xf929, 0x6766, 0x67bb, 0x6852,
+ 0x67c0, 0x6801, 0x6844, 0x68cf, 0xfa13, 0x6968, 0xfa14, 0x6998,
+ 0x69e2, 0x6a30, 0x6a6b, 0x6a46, 0x6a73, 0x6a7e, 0x6ae2, 0x6ae4,
+ 0x6bd6, 0x6c3f, 0x6c5c, 0x6c86, 0x6c6f, 0x6cda, 0x6d04, 0x6d87,
+ 0x6d6f, 0x6d96, 0x6dac, 0x6dcf, 0x6df8, 0x6df2, 0x6dfc, 0x6e39,
+ 0x6e5c, 0x6e27, 0x6e3c, 0x6ebf, 0x6f88, 0x6fb5, 0x6ff5, 0x7005,
+ 0x7007, 0x7028, 0x7085, 0x70ab, 0x710f, 0x7104, 0x715c, 0x7146,
+ 0x7147, 0xfa15, 0x71c1, 0x71fe, 0x72b1,
+ /*0xee40-0xeefc*/
+ 0x72be, 0x7324, 0xfa16, 0x7377, 0x73bd, 0x73c9, 0x73d6, 0x73e3,
+ 0x73d2, 0x7407, 0x73f5, 0x7426, 0x742a, 0x7429, 0x742e, 0x7462,
+ 0x7489, 0x749f, 0x7501, 0x756f, 0x7682, 0x769c, 0x769e, 0x769b,
+ 0x76a6, 0xfa17, 0x7746, 0x52af, 0x7821, 0x784e, 0x7864, 0x787a,
+ 0x7930, 0xfa18, 0xfa19, 0xfa1a, 0x7994, 0xfa1b, 0x799b, 0x7ad1,
+ 0x7ae7, 0xfa1c, 0x7aeb, 0x7b9e, 0xfa1d, 0x7d48, 0x7d5c, 0x7db7,
+ 0x7da0, 0x7dd6, 0x7e52, 0x7f47, 0x7fa1, 0xfa1e, 0x8301, 0x8362,
+ 0x837f, 0x83c7, 0x83f6, 0x8448, 0x84b4, 0x8553, 0x8559, 0x0000,
+ 0x856b, 0xfa1f, 0x85b0, 0xfa20, 0xfa21, 0x8807, 0x88f5, 0x8a12,
+ 0x8a37, 0x8a79, 0x8aa7, 0x8abe, 0x8adf, 0xfa22, 0x8af6, 0x8b53,
+ 0x8b7f, 0x8cf0, 0x8cf4, 0x8d12, 0x8d76, 0xfa23, 0x8ecf, 0xfa24,
+ 0xfa25, 0x9067, 0x90de, 0xfa26, 0x9115, 0x9127, 0x91da, 0x91d7,
+ 0x91de, 0x91ed, 0x91ee, 0x91e4, 0x91e5, 0x9206, 0x9210, 0x920a,
+ 0x923a, 0x9240, 0x923c, 0x924e, 0x9259, 0x9251, 0x9239, 0x9267,
+ 0x92a7, 0x9277, 0x9278, 0x92e7, 0x92d7, 0x92d9, 0x92d0, 0xfa27,
+ 0x92d5, 0x92e0, 0x92d3, 0x9325, 0x9321, 0x92fb, 0xfa28, 0x931e,
+ 0x92ff, 0x931d, 0x9302, 0x9370, 0x9357, 0x93a4, 0x93c6, 0x93de,
+ 0x93f8, 0x9431, 0x9445, 0x9448, 0x9592, 0xf9dc, 0xfa29, 0x969d,
+ 0x96af, 0x9733, 0x973b, 0x9743, 0x974d, 0x974f, 0x9751, 0x9755,
+ 0x9857, 0x9865, 0xfa2a, 0xfa2b, 0x9927, 0xfa2c, 0x999e, 0x9a4e,
+ 0x9ad9, 0x9adc, 0x9b75, 0x9b72, 0x9b8f, 0x9bb1, 0x9bbb, 0x9c00,
+ 0x9d70, 0x9d6b, 0xfa2d, 0x9e19, 0x9ed1, 0x0000, 0x0000, 0x2170,
+ 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178,
+ 0x2179, 0xffe2, 0xffe4, 0xff07, 0xff02
+};
+
+uint QJpUnicodeConv::cp932ToUnicode(uint h, uint l) const
+{
+ if (rule & Microsoft_CP932) {
+ if (h == 0x0087 && (l >= 0x0040 && l <= 0x009c))
+ return cp932_87_unicode[l-0x0040];
+ else if ((h == 0x00ed || h == 0x00ee) && (l >= 0x0040 && l <= 0x00fc))
+ return cp932_ed_ee_unicode[((h - 0x00ed)*189 + (l-0x0040))];
+ }
+ return 0;
+}
+
+uint QJpUnicodeConv::unicodeToCp932(uint h, uint l) const
+{
+ if ((rule & Microsoft_CP932)) {
+ uint u = (h<<8) | l;
+ //since there is no direct mapping, do a linear search
+ for (uint i =0; i<sizeof(cp932_87_unicode)/sizeof(short) ; i++) {
+ //the table has zeros for some characters
+ if (!cp932_87_unicode[i])
+ return 0;
+ if (u == cp932_87_unicode[i]){
+ return ((0x0087<<8) | (0x0040+i));
+ }
+ }
+ for (uint j =0; j<sizeof(cp932_ed_ee_unicode)/sizeof(short) ; j++) {
+ if (!cp932_ed_ee_unicode[j])
+ return 0;
+ if (u==cp932_ed_ee_unicode[j]){
+ return (((0x00ed +(j/189))<<8) | (0x0040+(j%189)));
+ }
+ }
+ }
+ return 0;
+}
+
+// and now for the inlines:
+
+/*! \fn uint QJpUnicodeConv::asciiToUnicode (uint ascii) const
+
+\internal
+*/
+
+/*! \fn uint QJpUnicodeConv::jisx0201ToUnicode (uint jis) const
+
+\internal
+*/
+
+/*! \fn uint QJpUnicodeConv::jisx0201LatinToUnicode (uint jis) const
+
+\internal
+*/
+
+/*! \fn uint QJpUnicodeConv::jisx0201KanaToUnicode (uint jis) const
+
+\internal
+*/
+
+/*! \fn uint QJpUnicodeConv::jisx0208ToUnicode (uint jis) const
+
+\internal
+*/
+
+/*! \fn uint QJpUnicodeConv::jisx0212ToUnicode (uint jis) const
+
+\internal
+*/
+
+/*! \fn uint QJpUnicodeConv::unicodeToAscii (uint unicode) const
+
+\internal
+*/
+
+/*! \fn uint QJpUnicodeConv::unicodeToJisx0201 (uint unicode) const
+
+\internal
+*/
+
+/*! \fn uint QJpUnicodeConv::unicodeToJisx0201Latin (uint unicode) const
+
+\internal
+*/
+
+/*! \fn uint QJpUnicodeConv::unicodeToJisx0201Kana (uint unicode) const
+
+\internal
+*/
+
+/*! \fn uint QJpUnicodeConv::unicodeToJisx0208 (uint unicode) const
+
+\internal
+*/
+
+/*! \fn uint QJpUnicodeConv::unicodeToJisx0212 (uint unicode) const
+
+\internal
+*/
+
+/*! \fn uint QJpUnicodeConv::sjisToUnicode (uint sjis) const
+
+\internal
+*/
+
+/*! \fn uint QJpUnicodeConv::unicodeToSjis (uint unicode) const
+
+\internal
+*/
+
+QT_END_NAMESPACE
diff --git a/src/corelib/codecs/qjpunicode_p.h b/src/corelib/codecs/qjpunicode_p.h
new file mode 100644
index 0000000000..07b5b25411
--- /dev/null
+++ b/src/corelib/codecs/qjpunicode_p.h
@@ -0,0 +1,185 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+// Most of the code here was originally written by Serika Kurusugawa
+// a.k.a. Junji Takagi, and is included in Qt with the author's permission,
+// and the grateful thanks of the Qt team.
+
+/*
+ * Copyright (C) 1999 Serika Kurusugawa, All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef QJPUNICODE_P_H
+#define QJPUNICODE_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <QtCore/qglobal.h>
+
+QT_BEGIN_NAMESPACE
+
+class QJpUnicodeConv {
+public:
+ virtual ~QJpUnicodeConv() {}
+ enum Rules {
+ // "ASCII" is ANSI X.3.4-1986, a.k.a. US-ASCII here.
+ Default = 0x0000,
+
+ Unicode = 0x0001,
+ Unicode_JISX0201 = 0x0001,
+ Unicode_ASCII = 0x0002,
+ JISX0221_JISX0201 = 0x0003,
+ JISX0221_ASCII = 0x0004,
+ Sun_JDK117 = 0x0005,
+ Microsoft_CP932 = 0x0006,
+
+ NEC_VDC = 0x0100, // NEC Vender Defined Char
+ UDC = 0x0200, // User Defined Char
+ IBM_VDC = 0x0400 // IBM Vender Defined Char
+ };
+ static QJpUnicodeConv *newConverter(int rule);
+
+ virtual uint asciiToUnicode(uint h, uint l) const;
+ /*virtual*/ uint jisx0201ToUnicode(uint h, uint l) const;
+ virtual uint jisx0201LatinToUnicode(uint h, uint l) const;
+ /*virtual*/ uint jisx0201KanaToUnicode(uint h, uint l) const;
+ virtual uint jisx0208ToUnicode(uint h, uint l) const;
+ virtual uint jisx0212ToUnicode(uint h, uint l) const;
+
+ uint asciiToUnicode(uint ascii) const {
+ return asciiToUnicode((ascii & 0xff00) >> 8, (ascii & 0x00ff));
+ }
+ uint jisx0201ToUnicode(uint jis) const {
+ return jisx0201ToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff));
+ }
+ uint jisx0201LatinToUnicode(uint jis) const {
+ return jisx0201LatinToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff));
+ }
+ uint jisx0201KanaToUnicode(uint jis) const {
+ return jisx0201KanaToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff));
+ }
+ uint jisx0208ToUnicode(uint jis) const {
+ return jisx0208ToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff));
+ }
+ uint jisx0212ToUnicode(uint jis) const {
+ return jisx0212ToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff));
+ }
+
+ virtual uint unicodeToAscii(uint h, uint l) const;
+ /*virtual*/ uint unicodeToJisx0201(uint h, uint l) const;
+ virtual uint unicodeToJisx0201Latin(uint h, uint l) const;
+ /*virtual*/ uint unicodeToJisx0201Kana(uint h, uint l) const;
+ virtual uint unicodeToJisx0208(uint h, uint l) const;
+ virtual uint unicodeToJisx0212(uint h, uint l) const;
+
+ uint unicodeToAscii(uint unicode) const {
+ return unicodeToAscii((unicode & 0xff00) >> 8, (unicode & 0x00ff));
+ }
+ uint unicodeToJisx0201(uint unicode) const {
+ return unicodeToJisx0201((unicode & 0xff00) >> 8, (unicode & 0x00ff));
+ }
+ uint unicodeToJisx0201Latin(uint unicode) const {
+ return unicodeToJisx0201Latin((unicode & 0xff00) >> 8, (unicode & 0x00ff));
+ }
+ uint unicodeToJisx0201Kana(uint unicode) const {
+ return unicodeToJisx0201Kana((unicode & 0xff00) >> 8, (unicode & 0x00ff));
+ }
+ uint unicodeToJisx0208(uint unicode) const {
+ return unicodeToJisx0208((unicode & 0xff00) >> 8, (unicode & 0x00ff));
+ }
+ uint unicodeToJisx0212(uint unicode) const {
+ return unicodeToJisx0212((unicode & 0xff00) >> 8, (unicode & 0x00ff));
+ }
+
+ uint sjisToUnicode(uint h, uint l) const;
+ uint unicodeToSjis(uint h, uint l) const;
+ uint sjisibmvdcToUnicode(uint h, uint l) const;
+ uint unicodeToSjisibmvdc(uint h, uint l) const;
+ uint cp932ToUnicode(uint h, uint l) const;
+ uint unicodeToCp932(uint h, uint l) const;
+
+ uint sjisToUnicode(uint sjis) const {
+ return sjisToUnicode((sjis & 0xff00) >> 8, (sjis & 0x00ff));
+ }
+ uint unicodeToSjis(uint unicode) const {
+ return unicodeToSjis((unicode & 0xff00) >> 8, (unicode & 0x00ff));
+ }
+
+protected:
+ explicit QJpUnicodeConv(int r) : rule(r) {}
+
+private:
+ int rule;
+};
+
+QT_END_NAMESPACE
+
+#endif // QJPUNICODE_P_H
diff --git a/src/corelib/codecs/qlatincodec.cpp b/src/corelib/codecs/qlatincodec.cpp
index d95fcfc601..cf7c106f6f 100644
--- a/src/corelib/codecs/qlatincodec.cpp
+++ b/src/corelib/codecs/qlatincodec.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/codecs/qlatincodec_p.h b/src/corelib/codecs/qlatincodec_p.h
index 71eded6d08..e9b4c07e8e 100644
--- a/src/corelib/codecs/qlatincodec_p.h
+++ b/src/corelib/codecs/qlatincodec_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/codecs/qsimplecodec.cpp b/src/corelib/codecs/qsimplecodec.cpp
index 757351f196..2f1ef30041 100644
--- a/src/corelib/codecs/qsimplecodec.cpp
+++ b/src/corelib/codecs/qsimplecodec.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/codecs/qsimplecodec_p.h b/src/corelib/codecs/qsimplecodec_p.h
index 6d0ceb3c95..3785fcc296 100644
--- a/src/corelib/codecs/qsimplecodec_p.h
+++ b/src/corelib/codecs/qsimplecodec_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/codecs/qsjiscodec.cpp b/src/corelib/codecs/qsjiscodec.cpp
new file mode 100644
index 0000000000..27121ad449
--- /dev/null
+++ b/src/corelib/codecs/qsjiscodec.cpp
@@ -0,0 +1,229 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+// Most of the code here was originally written by Serika Kurusugawa
+// a.k.a. Junji Takagi, and is included in Qt with the author's permission,
+// and the grateful thanks of the Qt team.
+
+/*! \class QSjisCodec
+ \reentrant
+ \internal
+*/
+
+#include "qsjiscodec_p.h"
+#include "qlist.h"
+
+QT_BEGIN_NAMESPACE
+
+#ifndef QT_NO_TEXTCODEC
+enum {
+ Esc = 0x1b
+};
+
+#define IsKana(c) (((c) >= 0xa1) && ((c) <= 0xdf))
+#define IsSjisChar1(c) ((((c) >= 0x81) && ((c) <= 0x9f)) || \
+ (((c) >= 0xe0) && ((c) <= 0xfc)))
+#define IsSjisChar2(c) (((c) >= 0x40) && ((c) != 0x7f) && ((c) <= 0xfc))
+#define IsUserDefinedChar1(c) (((c) >= 0xf0) && ((c) <= 0xfc))
+
+#define QValidChar(u) ((u) ? QChar((ushort)(u)) : QChar(QChar::ReplacementCharacter))
+
+/*!
+ Creates a Shift-JIS codec. Note that this is done automatically by
+ the QApplication, you do not need construct your own.
+*/
+QSjisCodec::QSjisCodec() : conv(QJpUnicodeConv::newConverter(QJpUnicodeConv::Default))
+{
+}
+
+
+/*!
+ Destroys the Shift-JIS codec.
+*/
+QSjisCodec::~QSjisCodec()
+{
+ delete (QJpUnicodeConv*)conv;
+ conv = 0;
+}
+
+
+QByteArray QSjisCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
+{
+ char replacement = '?';
+ if (state) {
+ if (state->flags & ConvertInvalidToNull)
+ replacement = 0;
+ }
+ int invalid = 0;
+
+ int rlen = 2*len + 1;
+ QByteArray rstr;
+ rstr.resize(rlen);
+ uchar* cursor = (uchar*)rstr.data();
+ for (int i = 0; i < len; i++) {
+ QChar ch = uc[i];
+ uint j;
+ if (ch.row() == 0x00 && ch.cell() < 0x80) {
+ // ASCII
+ *cursor++ = ch.cell();
+ } else if ((j = conv->unicodeToJisx0201(ch.row(), ch.cell())) != 0) {
+ // JIS X 0201 Latin or JIS X 0201 Kana
+ *cursor++ = j;
+ } else if ((j = conv->unicodeToSjis(ch.row(), ch.cell())) != 0) {
+ // JIS X 0208
+ *cursor++ = (j >> 8);
+ *cursor++ = (j & 0xff);
+ } else if ((j = conv->unicodeToSjisibmvdc(ch.row(), ch.cell())) != 0) {
+ // JIS X 0208 IBM VDC
+ *cursor++ = (j >> 8);
+ *cursor++ = (j & 0xff);
+ } else if ((j = conv->unicodeToCp932(ch.row(), ch.cell())) != 0) {
+ // CP932 (for lead bytes 87, ee & ed)
+ *cursor++ = (j >> 8);
+ *cursor++ = (j & 0xff);
+ } else if ((j = conv->unicodeToJisx0212(ch.row(), ch.cell())) != 0) {
+ // JIS X 0212 (can't be encoded in ShiftJIS !)
+ *cursor++ = 0x81; // white square
+ *cursor++ = 0xa0; // white square
+ } else {
+ // Error
+ *cursor++ = replacement;
+ ++invalid;
+ }
+ }
+ rstr.resize(cursor - (const uchar*)rstr.constData());
+
+ if (state) {
+ state->invalidChars += invalid;
+ }
+ return rstr;
+}
+
+QString QSjisCodec::convertToUnicode(const char* chars, int len, ConverterState *state) const
+{
+ uchar buf[1] = {0};
+ int nbuf = 0;
+ QChar replacement = QChar::ReplacementCharacter;
+ if (state) {
+ if (state->flags & ConvertInvalidToNull)
+ replacement = QChar::Null;
+ nbuf = state->remainingChars;
+ buf[0] = state->state_data[0];
+ }
+ int invalid = 0;
+ uint u= 0;
+ QString result;
+ for (int i=0; i<len; i++) {
+ uchar ch = chars[i];
+ switch (nbuf) {
+ case 0:
+ if (ch < 0x80) {
+ result += QValidChar(ch);
+ } else if (IsKana(ch)) {
+ // JIS X 0201 Latin or JIS X 0201 Kana
+ u = conv->jisx0201ToUnicode(ch);
+ result += QValidChar(u);
+ } else if (IsSjisChar1(ch)) {
+ // JIS X 0208
+ buf[0] = ch;
+ nbuf = 1;
+ } else {
+ // Invalid
+ result += replacement;
+ ++invalid;
+ }
+ break;
+ case 1:
+ // JIS X 0208
+ if (IsSjisChar2(ch)) {
+ if ((u = conv->sjisibmvdcToUnicode(buf[0], ch))) {
+ result += QValidChar(u);
+ } else if ((u = conv->cp932ToUnicode(buf[0], ch))) {
+ result += QValidChar(u);
+ }
+ else if (IsUserDefinedChar1(buf[0])) {
+ result += QChar::ReplacementCharacter;
+ } else {
+ u = conv->sjisToUnicode(buf[0], ch);
+ result += QValidChar(u);
+ }
+ } else {
+ // Invalid
+ result += replacement;
+ ++invalid;
+ }
+ nbuf = 0;
+ break;
+ }
+ }
+
+ if (state) {
+ state->remainingChars = nbuf;
+ state->state_data[0] = buf[0];
+ state->invalidChars += invalid;
+ }
+ return result;
+}
+
+
+int QSjisCodec::_mibEnum()
+{
+ return 17;
+}
+
+QByteArray QSjisCodec::_name()
+{
+ return "Shift_JIS";
+}
+
+/*!
+ Returns the codec's mime name.
+*/
+QList<QByteArray> QSjisCodec::_aliases()
+{
+ QList<QByteArray> list;
+ list << "SJIS" // Qt 3 compat
+ << "MS_Kanji";
+ return list;
+}
+#endif // QT_NO_TEXTCODEC
+
+QT_END_NAMESPACE
diff --git a/src/corelib/codecs/qsjiscodec_p.h b/src/corelib/codecs/qsjiscodec_p.h
new file mode 100644
index 0000000000..d57f94b55f
--- /dev/null
+++ b/src/corelib/codecs/qsjiscodec_p.h
@@ -0,0 +1,117 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+// Most of the code here was originally written by Serika Kurusugawa
+// a.k.a. Junji Takagi, and is included in Qt with the author's permission,
+// and the grateful thanks of the Qt team.
+
+/*
+ * Copyright (C) 1999 Serika Kurusugawa, All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ */
+
+#ifndef QSJISCODEC_P_H
+#define QSJISCODEC_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of other Qt classes. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "qjpunicode_p.h"
+#include <QtCore/qtextcodec.h>
+#include <QtCore/qlist.h>
+
+QT_BEGIN_NAMESPACE
+
+#ifndef QT_NO_TEXTCODEC
+
+class QSjisCodec : public QTextCodec {
+public:
+ static QByteArray _name();
+ static QList<QByteArray> _aliases();
+ static int _mibEnum();
+
+ QByteArray name() const { return _name(); }
+ QList<QByteArray> aliases() const { return _aliases(); }
+ int mibEnum() const { return _mibEnum(); }
+
+ QString convertToUnicode(const char *, int, ConverterState *) const;
+ QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
+
+ QSjisCodec();
+ ~QSjisCodec();
+
+protected:
+ const QJpUnicodeConv *conv;
+};
+
+#endif // QT_NO_TEXTCODEC
+
+QT_END_NAMESPACE
+
+#endif // QSJISCODEC_P_H
diff --git a/src/corelib/codecs/qtextcodec.cpp b/src/corelib/codecs/qtextcodec.cpp
index 465caea62f..82e5c9a1c3 100644
--- a/src/corelib/codecs/qtextcodec.cpp
+++ b/src/corelib/codecs/qtextcodec.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,11 +47,6 @@
#include "qlist.h"
#include "qfile.h"
-#ifndef QT_NO_LIBRARY
-# include "qcoreapplication.h"
-# include "qtextcodecplugin.h"
-# include "private/qfactoryloader_p.h"
-#endif
#include "qstringlist.h"
#ifdef Q_OS_UNIX
@@ -65,18 +60,17 @@
# include "qtsciicodec_p.h"
# include "qisciicodec_p.h"
#if !defined(Q_OS_INTEGRITY)
-# if defined(QT_NO_ICONV) && !defined(QT_BOOTSTRAPPED)
-// no iconv(3) support, must build all codecs into the library
-# include "../../plugins/codecs/cn/qgb18030codec.h"
-# include "../../plugins/codecs/jp/qeucjpcodec.h"
-# include "../../plugins/codecs/jp/qjiscodec.h"
-# include "../../plugins/codecs/jp/qsjiscodec.h"
-# include "../../plugins/codecs/kr/qeuckrcodec.h"
-# include "../../plugins/codecs/tw/qbig5codec.h"
-# endif // QT_NO_ICONV
+# if !defined(QT_BOOTSTRAPPED)
+# include "qgb18030codec_p.h"
+# include "qeucjpcodec_p.h"
+# include "qjiscodec_p.h"
+# include "qsjiscodec_p.h"
+# include "qeuckrcodec_p.h"
+# include "qbig5codec_p.h"
+# endif // !QT_BOOTSTRAPPED
# if defined(Q_OS_UNIX) && !defined(QT_BOOTSTRAPPED)
# include "qfontlaocodec_p.h"
-# include "../../plugins/codecs/jp/qfontjpcodec.h"
+# include "qfontjpcodec_p.h"
# endif
#endif // !Q_OS_INTEGRITY
#endif // QT_NO_CODECS
@@ -91,8 +85,11 @@
#include <langinfo.h>
#endif
-#if defined(Q_OS_WINCE)
-# define QT_NO_SETLOCALE
+#ifdef Q_OS_WIN
+# include <qt_windows.h>
+# if defined(Q_OS_WINCE)
+# define QT_NO_SETLOCALE
+# endif
#endif
@@ -101,11 +98,6 @@
QT_BEGIN_NAMESPACE
-#if !defined(QT_NO_LIBRARY) && !defined(QT_NO_TEXTCODECPLUGIN)
-Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader,
- (QTextCodecFactoryInterface_iid, QLatin1String("/codecs")))
-#endif
-
//Cache for QTextCodec::codecForName and codecForMib.
typedef QHash<QByteArray, QTextCodec *> QTextCodecCache;
Q_GLOBAL_STATIC(QTextCodecCache, qTextCodecCache)
@@ -147,39 +139,6 @@ static bool nameMatch(const QByteArray &name, const QByteArray &test)
}
-static QTextCodec *createForName(const QByteArray &name)
-{
-#if !defined(QT_NO_LIBRARY) && !defined(QT_NO_TEXTCODECPLUGIN)
- QFactoryLoader *l = loader();
- QStringList keys = l->keys();
- for (int i = 0; i < keys.size(); ++i) {
- if (nameMatch(name, keys.at(i).toLatin1())) {
- QString realName = keys.at(i);
- if (QTextCodecFactoryInterface *factory
- = qobject_cast<QTextCodecFactoryInterface*>(l->instance(realName))) {
- return factory->create(realName);
- }
- }
- }
-#else
- Q_UNUSED(name);
-#endif
- return 0;
-}
-
-static QTextCodec *createForMib(int mib)
-{
-#ifndef QT_NO_TEXTCODECPLUGIN
- QString name = QLatin1String("MIB: ") + QString::number(mib);
- if (QTextCodecFactoryInterface *factory
- = qobject_cast<QTextCodecFactoryInterface*>(loader()->instance(name)))
- return factory->create(name);
-#else
- Q_UNUSED(mib);
-#endif
- return 0;
-}
-
static QList<QTextCodec*> *all = 0;
#ifdef Q_DEBUG_TEXTCODEC
static bool destroying_is_ok = false;
@@ -730,8 +689,6 @@ static void setup()
# if defined(Q_OS_UNIX) && !defined(QT_BOOTSTRAPPED)
// no font codecs when bootstrapping
(void)new QFontLaoCodec;
-# if defined(QT_NO_ICONV)
- // no iconv(3) support, must build all codecs into the library
(void)new QFontGb2312Codec;
(void)new QFontGbkCodec;
(void)new QFontGb18030_0Codec;
@@ -740,12 +697,11 @@ static void setup()
(void)new QFontKsc5601Codec;
(void)new QFontBig5hkscsCodec;
(void)new QFontBig5Codec;
-# endif // QT_NO_ICONV && !QT_BOOTSTRAPPED
-# endif // Q_OS_UNIX
+# endif // Q_OS_UNIX && !QT_BOOTSTRAPPED
#if !defined(Q_OS_INTEGRITY)
-# if defined(QT_NO_ICONV) && !defined(QT_BOOTSTRAPPED)
+# if !defined(QT_BOOTSTRAPPED)
// no asian codecs when bootstrapping, sorry
(void)new QGb18030Codec;
(void)new QGbkCodec;
@@ -757,7 +713,7 @@ static void setup()
(void)new QCP949Codec;
(void)new QBig5Codec;
(void)new QBig5hkscsCodec;
-# endif // QT_NO_ICONV && !QT_BOOTSTRAPPED
+# endif // !QT_BOOTSTRAPPED
#endif // !Q_OS_INTEGRITY
#endif // QT_NO_CODECS
@@ -940,10 +896,6 @@ QTextCodec::ConverterState::~ConverterState()
\o Converts a Unicode string to an 8-bit character string.
\endtable
- You may find it more convenient to make your codec class
- available as a plugin; see \l{How to Create Qt Plugins} for
- details.
-
\sa QTextStream, QTextDecoder, QTextEncoder, {Codecs Example}
*/
@@ -1036,10 +988,7 @@ QTextCodec *QTextCodec::codecForName(const QByteArray &name)
}
}
- codec = createForName(name);
- if (codec && cache)
- cache->insert(name, codec);
- return codec;
+ return 0;
}
@@ -1076,16 +1025,7 @@ QTextCodec* QTextCodec::codecForMib(int mib)
}
}
- codec = createForMib(mib);
-
- // Qt 3 used 1000 (mib for UCS2) as its identifier for the utf16 codec. Map
- // this correctly for compatibility.
- if (!codec && mib == 1000)
- return codecForMib(1015);
-
- if (codec && cache)
- cache->insert(key, codec);
- return codec;
+ return 0;
}
/*!
@@ -1118,18 +1058,6 @@ QList<QByteArray> QTextCodec::availableCodecs()
locker.unlock();
#endif
-#if !defined(QT_NO_LIBRARY) && !defined(QT_NO_TEXTCODECPLUGIN)
- QFactoryLoader *l = loader();
- QStringList keys = l->keys();
- for (int i = 0; i < keys.size(); ++i) {
- if (!keys.at(i).startsWith(QLatin1String("MIB: "))) {
- QByteArray name = keys.at(i).toLatin1();
- if (!codecs.contains(name))
- codecs += name;
- }
- }
-#endif
-
return codecs;
}
@@ -1158,18 +1086,6 @@ QList<int> QTextCodec::availableMibs()
locker.unlock();
#endif
-#if !defined(QT_NO_LIBRARY) && !defined(QT_NO_TEXTCODECPLUGIN)
- QFactoryLoader *l = loader();
- QStringList keys = l->keys();
- for (int i = 0; i < keys.size(); ++i) {
- if (keys.at(i).startsWith(QLatin1String("MIB: "))) {
- int mib = keys.at(i).mid(5).toInt();
- if (!codecs.contains(mib))
- codecs += mib;
- }
- }
-#endif
-
return codecs;
}
diff --git a/src/corelib/codecs/qtextcodec.h b/src/corelib/codecs/qtextcodec.h
index c4f1a09726..9e46863964 100644
--- a/src/corelib/codecs/qtextcodec.h
+++ b/src/corelib/codecs/qtextcodec.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_TEXTCODEC
diff --git a/src/corelib/codecs/qtextcodec_p.h b/src/corelib/codecs/qtextcodec_p.h
index 03d9d3dfaf..d13835910d 100644
--- a/src/corelib/codecs/qtextcodec_p.h
+++ b/src/corelib/codecs/qtextcodec_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/codecs/qtextcodecplugin.cpp b/src/corelib/codecs/qtextcodecplugin.cpp
deleted file mode 100644
index 4eb075c5f2..0000000000
--- a/src/corelib/codecs/qtextcodecplugin.cpp
+++ /dev/null
@@ -1,161 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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 "qtextcodecplugin.h"
-#include "qstringlist.h"
-
-#ifndef QT_NO_TEXTCODECPLUGIN
-
-QT_BEGIN_NAMESPACE
-
-/*!
- \class QTextCodecPlugin
- \brief The QTextCodecPlugin class provides an abstract base for custom QTextCodec plugins.
- \reentrant
- \ingroup plugins
-
- The text codec plugin is a simple plugin interface that makes it
- easy to create custom text codecs that can be loaded dynamically
- into applications.
-
- Writing a text codec plugin is achieved by subclassing this base
- class, reimplementing the pure virtual functions names(),
- aliases(), createForName(), mibEnums() and createForMib(), and
- exporting the class with the Q_EXPORT_PLUGIN2() macro. See \l{How
- to Create Qt Plugins} for details.
-
- See the \l{http://www.iana.org/assignments/character-sets}{IANA
- character-sets encoding file} for more information on mime
- names and mib enums.
-*/
-
-/*!
- \fn QStringList QTextCodecPlugin::names() const
-
- Returns the list of MIME names supported by this plugin.
-
- If a codec has several names, the extra names are returned by aliases().
-
- \sa createForName(), aliases()
-*/
-
-/*!
- \fn QList<QByteArray> QTextCodecPlugin::aliases() const
-
- Returns the list of aliases supported by this plugin.
-*/
-
-/*!
- \fn QTextCodec *QTextCodecPlugin::createForName(const QByteArray &name)
-
- Creates a QTextCodec object for the codec called \a name. The \a name
- must come from the list of encodings returned by names(). Encoding
- names are case sensitive.
-
- Example:
-
- \snippet doc/src/snippets/code/src_corelib_codecs_qtextcodecplugin.cpp 0
-
- \sa names()
-*/
-
-
-/*!
- \fn QList<int> QTextCodecPlugin::mibEnums() const
-
- Returns the list of mib enums supported by this plugin.
-
- \sa createForMib()
-*/
-
-/*!
- \fn QTextCodec *QTextCodecPlugin::createForMib(int mib);
-
- Creates a QTextCodec object for the mib enum \a mib.
-
- See \l{http://www.iana.org/assignments/character-sets}{the
- IANA character-sets encoding file} for more information.
-
- \sa mibEnums()
-*/
-
-/*!
- Constructs a text codec plugin with the given \a parent. This is
- invoked automatically by the Q_EXPORT_PLUGIN2() macro.
-*/
-QTextCodecPlugin::QTextCodecPlugin(QObject *parent)
- : QObject(parent)
-{
-}
-
-/*!
- Destroys the text codec plugin.
-
- You never have to call this explicitly. Qt destroys a plugin
- automatically when it is no longer used.
-*/
-QTextCodecPlugin::~QTextCodecPlugin()
-{
-}
-
-QStringList QTextCodecPlugin::keys() const
-{
- QStringList keys;
- QList<QByteArray> list = names();
- list += aliases();
- for (int i = 0; i < list.size(); ++i)
- keys += QString::fromLatin1(list.at(i));
- QList<int> mibs = mibEnums();
- for (int i = 0; i < mibs.count(); ++i)
- keys += QLatin1String("MIB: ") + QString::number(mibs.at(i));
- return keys;
-}
-
-QTextCodec *QTextCodecPlugin::create(const QString &name)
-{
- if (name.startsWith(QLatin1String("MIB: ")))
- return createForMib(name.mid(4).toInt());
- return createForName(name.toLatin1());
-}
-
-QT_END_NAMESPACE
-
-#endif // QT_NO_TEXTCODECPLUGIN
diff --git a/src/corelib/codecs/qtextcodecplugin.h b/src/corelib/codecs/qtextcodecplugin.h
deleted file mode 100644
index 9a00bbc9fa..0000000000
--- a/src/corelib/codecs/qtextcodecplugin.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QTEXTCODECPLUGIN_H
-#define QTEXTCODECPLUGIN_H
-
-#include <QtCore/qplugin.h>
-#include <QtCore/qfactoryinterface.h>
-#include <QtCore/qlist.h>
-#include <QtCore/qbytearray.h>
-
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-#ifndef QT_NO_TEXTCODECPLUGIN
-
-class QTextCodec;
-
-struct Q_CORE_EXPORT QTextCodecFactoryInterface : public QFactoryInterface
-{
- virtual QTextCodec *create(const QString &key) = 0;
-};
-
-#define QTextCodecFactoryInterface_iid "com.trolltech.Qt.QTextCodecFactoryInterface"
-
-Q_DECLARE_INTERFACE(QTextCodecFactoryInterface, QTextCodecFactoryInterface_iid)
-
-
-class Q_CORE_EXPORT QTextCodecPlugin : public QObject, public QTextCodecFactoryInterface
-{
- Q_OBJECT
- Q_INTERFACES(QTextCodecFactoryInterface:QFactoryInterface)
-public:
- explicit QTextCodecPlugin(QObject *parent = 0);
- ~QTextCodecPlugin();
-
- virtual QList<QByteArray> names() const = 0;
- virtual QList<QByteArray> aliases() const = 0;
- virtual QTextCodec *createForName(const QByteArray &name) = 0;
-
- virtual QList<int> mibEnums() const = 0;
- virtual QTextCodec *createForMib(int mib) = 0;
-
-private:
- QStringList keys() const;
- QTextCodec *create(const QString &name);
-};
-
-#endif // QT_NO_TEXTCODECPLUGIN
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif // QTEXTCODECPLUGIN_H
diff --git a/src/corelib/codecs/qtsciicodec.cpp b/src/corelib/codecs/qtsciicodec.cpp
index c158ad2dc5..345b4afac2 100644
--- a/src/corelib/codecs/qtsciicodec.cpp
+++ b/src/corelib/codecs/qtsciicodec.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/codecs/qtsciicodec_p.h b/src/corelib/codecs/qtsciicodec_p.h
index b74b38c429..17c37d613d 100644
--- a/src/corelib/codecs/qtsciicodec_p.h
+++ b/src/corelib/codecs/qtsciicodec_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/codecs/qutfcodec.cpp b/src/corelib/codecs/qutfcodec.cpp
index d279f8591c..c7076eea3a 100644
--- a/src/corelib/codecs/qutfcodec.cpp
+++ b/src/corelib/codecs/qutfcodec.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/codecs/qutfcodec_p.h b/src/corelib/codecs/qutfcodec_p.h
index 737697f5d6..3e0d018779 100644
--- a/src/corelib/codecs/qutfcodec_p.h
+++ b/src/corelib/codecs/qutfcodec_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/concurrent/concurrent.pri b/src/corelib/concurrent/concurrent.pri
deleted file mode 100644
index 940297139c..0000000000
--- a/src/corelib/concurrent/concurrent.pri
+++ /dev/null
@@ -1,42 +0,0 @@
-SOURCES += \
- concurrent/qfuture.cpp \
- concurrent/qfutureinterface.cpp \
- concurrent/qfuturesynchronizer.cpp \
- concurrent/qfuturewatcher.cpp \
- concurrent/qrunnable.cpp \
- concurrent/qtconcurrentfilter.cpp \
- concurrent/qtconcurrentmap.cpp \
- concurrent/qtconcurrentresultstore.cpp \
- concurrent/qtconcurrentthreadengine.cpp \
- concurrent/qtconcurrentiteratekernel.cpp \
- concurrent/qtconcurrentexception.cpp \
- concurrent/qthreadpool.cpp
-
-HEADERS += \
- concurrent/qfuture.h \
- concurrent/qfutureinterface.h \
- concurrent/qfuturesynchronizer.h \
- concurrent/qfuturewatcher.h \
- concurrent/qrunnable.h \
- concurrent/qtconcurrentcompilertest.h \
- concurrent/qtconcurrentexception.h \
- concurrent/qtconcurrentfilter.h \
- concurrent/qtconcurrentfilterkernel.h \
- concurrent/qtconcurrentfunctionwrappers.h \
- concurrent/qtconcurrentiteratekernel.h \
- concurrent/qtconcurrentmap.h \
- concurrent/qtconcurrentmapkernel.h \
- concurrent/qtconcurrentmedian.h \
- concurrent/qtconcurrentreducekernel.h \
- concurrent/qtconcurrentresultstore.h \
- concurrent/qtconcurrentrun.h \
- concurrent/qtconcurrentrunbase.h \
- concurrent/qtconcurrentstoredfunctioncall.h \
- concurrent/qtconcurrentthreadengine.h \
- concurrent/qthreadpool.h
-
-# private headers
-HEADERS += \
- concurrent/qfutureinterface_p.h \
- concurrent/qfuturewatcher_p.h \
- concurrent/qthreadpool_p.h
diff --git a/src/corelib/concurrent/qfuture.cpp b/src/corelib/concurrent/qfuture.cpp
deleted file mode 100644
index 81655502e9..0000000000
--- a/src/corelib/concurrent/qfuture.cpp
+++ /dev/null
@@ -1,697 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-/*! \class QFuture
- \threadsafe
- \brief The QFuture class represents the result of an asynchronous computation.
- \since 4.4
-
- \ingroup thread
-
- To start a computation, use one of the APIs in the
- \l {Concurrent Programming}{Qt Concurrent} framework.
-
- QFuture allows threads to be synchronized against one or more results
- which will be ready at a later point in time. The result can be of any type
- that has a default constructor and a copy constructor. If a result is not
- available at the time of calling the result(), resultAt(), or results()
- functions, QFuture will wait until the result becomes available. You can
- use the isResultReadyAt() function to determine if a result is ready or
- not. For QFuture objects that report more than one result, the
- resultCount() function returns the number of continuous results. This
- means that it is always safe to iterate through the results from 0 to
- resultCount().
-
- QFuture provides a \l{Java-style iterators}{Java-style iterator}
- (QFutureIterator) and an \l{STL-style iterators}{STL-style iterator}
- (QFuture::const_iterator). Using these iterators is another way to access
- results in the future.
-
- QFuture also offers ways to interact with a runnning computation. For
- instance, the computation can be canceled with the cancel() function. To
- pause the computation, use the setPaused() function or one of the pause(),
- resume(), or togglePaused() convenience functions. Be aware that not all
- asynchronous computations can be canceled or paused. For example, the
- future returned by QtConcurrent::run() cannot be canceled; but the
- future returned by QtConcurrent::mappedReduced() can.
-
- Progress information is provided by the progressValue(),
- progressMinimum(), progressMaximum(), and progressText() functions. The
- waitForFinished() function causes the calling thread to block and wait for
- the computation to finish, ensuring that all results are available.
-
- The state of the computation represented by a QFuture can be queried using
- the isCanceled(), isStarted(), isFinished(), isRunning(), or isPaused()
- functions.
-
- QFuture is a lightweight reference counted class that can be passed by
- value.
-
- QFuture<void> is specialized to not contain any of the result fetching
- functions. Any QFuture<T> can be assigned or copied into a QFuture<void>
- as well. This is useful if only status or progress information is needed
- - not the actual result data.
-
- To interact with running tasks using signals and slots, use QFutureWatcher.
-
- \sa QFutureWatcher, {Concurrent Programming}{Qt Concurrent}
-*/
-
-/*! \fn QFuture::QFuture()
-
- Constructs an empty future.
-*/
-
-/*! \fn QFuture::QFuture(const QFuture &other)
-
- Constructs a copy of \a other.
-
- \sa operator=()
-*/
-
-/*! \fn QFuture::QFuture(QFutureInterface<T> *resultHolder)
- \internal
-*/
-
-/*! \fn QFuture::~QFuture()
-
- Destroys the future.
-
- Note that this neither waits nor cancels the asynchronous computation. Use
- waitForFinished() or QFutureSynchronizer when you need to ensure that the
- computation is completed before the future is destroyed.
-*/
-
-/*! \fn QFuture &QFuture::operator=(const QFuture &other)
-
- Assigns \a other to this future and returns a reference to this future.
-*/
-
-/*! \fn bool QFuture::operator==(const QFuture &other) const
-
- Returns true if \a other is a copy of this future; otherwise returns false.
-*/
-
-/*! \fn bool QFuture::operator!=(const QFuture &other) const
-
- Returns true if \a other is \e not a copy of this future; otherwise returns
- false.
-*/
-
-/*! \fn void QFuture::cancel()
-
- Cancels the asynchronous computation represented by this future. Note that
- the cancelation is asynchronous. Use waitForFinished() after calling
- cancel() when you need synchronous cancelation.
-
- Results currently available may still be accessed on a canceled future,
- but new results will \e not become available after calling this function.
- Any QFutureWatcher object that is watching this future will not deliver
- progress and result ready signals on a canceled future.
-
- Be aware that not all asynchronous computations can be canceled. For
- example, the future returned by QtConcurrent::run() cannot be canceled;
- but the future returned by QtConcurrent::mappedReduced() can.
-*/
-
-/*! \fn bool QFuture::isCanceled() const
-
- Returns true if the asynchronous computation has been canceled with the
- cancel() function; otherwise returns false.
-
- Be aware that the computation may still be running even though this
- function returns true. See cancel() for more details.
-*/
-
-/*! \fn void QFuture::setPaused(bool paused)
-
- If \a paused is true, this function pauses the asynchronous computation
- represented by the future. If the computation is already paused, this
- function does nothing. Any QFutureWatcher object that is watching this
- future will stop delivering progress and result ready signals while the
- future is paused. Signal delivery will continue once the future is
- resumed.
-
- If \a paused is false, this function resumes the asynchronous computation.
- If the computation was not previously paused, this function does nothing.
-
- Be aware that not all computations can be paused. For example, the future
- returned by QtConcurrent::run() cannot be paused; but the future returned
- by QtConcurrent::mappedReduced() can.
-
- \sa pause(), resume(), togglePaused()
-*/
-
-/*! \fn bool QFuture::isPaused() const
-
- Returns true if the asynchronous computation has been paused with the
- pause() function; otherwise returns false.
-
- Be aware that the computation may still be running even though this
- function returns true. See setPaused() for more details.
-
- \sa setPaused(), togglePaused()
-*/
-
-/*! \fn void QFuture::pause()
-
- Pauses the asynchronous computation represented by this future. This is a
- convenience method that simply calls setPaused(true).
-
- \sa resume()
-*/
-
-/*! \fn void QFuture::resume()
-
- Resumes the asynchronous computation represented by this future. This is a
- convenience method that simply calls setPaused(false).
-
- \sa pause()
-*/
-
-/*! \fn void QFuture::togglePaused()
-
- Toggles the paused state of the asynchronous computation. In other words,
- if the computation is currently paused, calling this function resumes it;
- if the computation is running, it is paused. This is a convenience method
- for calling setPaused(!isPaused()).
-
- \sa setPaused(), pause(), resume()
-*/
-
-/*! \fn bool QFuture::isStarted() const
-
- Returns true if the asynchronous computation represented by this future
- has been started; otherwise returns false.
-*/
-
-/*! \fn bool QFuture::isFinished() const
-
- Returns true if the asynchronous computation represented by this future
- has finished; otherwise returns false.
-*/
-
-/*! \fn bool QFuture::isRunning() const
-
- Returns true if the asynchronous computation represented by this future is
- currently running; otherwise returns false.
-*/
-
-/*! \fn int QFuture::resultCount() const
-
- Returns the number of continuous results available in this future. The real
- number of results stored might be different from this value, due to gaps
- in the result set. It is always safe to iterate through the results from 0
- to resultCount().
- \sa result(), resultAt(), results()
-*/
-
-/*! \fn int QFuture::progressValue() const
-
- Returns the current progress value, which is between the progressMinimum()
- and progressMaximum().
-
- \sa progressMinimum(), progressMaximum()
-*/
-
-/*! \fn int QFuture::progressMinimum() const
-
- Returns the minimum progressValue().
-
- \sa progressValue(), progressMaximum()
-*/
-
-/*! \fn int QFuture::progressMaximum() const
-
- Returns the maximum progressValue().
-
- \sa progressValue(), progressMinimum()
-*/
-
-/*! \fn QString QFuture::progressText() const
-
- Returns the (optional) textual representation of the progress as reported
- by the asynchronous computation.
-
- Be aware that not all computations provide a textual representation of the
- progress, and as such, this function may return an empty string.
-*/
-
-/*! \fn void QFuture::waitForFinished()
-
- Waits for the asynchronous computation to finish (including cancel()ed
- computations).
-*/
-
-/*! \fn T QFuture::result() const
-
- Returns the first result in the future. If the result is not immediately
- available, this function will block and wait for the result to become
- available. This is a convenience method for calling resultAt(0).
-
- \sa resultAt(), results()
-*/
-
-/*! \fn T QFuture::resultAt(int index) const
-
- Returns the result at \a index in the future. If the result is not
- immediately available, this function will block and wait for the result to
- become available.
-
- \sa result(), results(), resultCount()
-*/
-
-/*! \fn bool QFuture::isResultReadyAt(int index) const
-
- Returns true if the result at \a index is immediately available; otherwise
- returns false.
-
- \sa resultAt(), resultCount()
-*/
-
-/*! \fn QFuture::operator T() const
-
- Returns the first result in the future. If the result is not immediately
- available, this function will block and wait for the result to become
- available. This is a convenience method for calling result() or
- resultAt(0).
-
- \sa result(), resultAt(), results()
-*/
-
-/*! \fn QList<T> QFuture::results() const
-
- Returns all results from the future. If the results are not immediately
- available, this function will block and wait for them to become available.
-
- \sa result(), resultAt(), resultCount()
-*/
-
-/*! \fn QFuture::const_iterator QFuture::begin() const
-
- Returns a const \l{STL-style iterator} pointing to the first result in the
- future.
-
- \sa constBegin(), end()
-*/
-
-/*! \fn QFuture::const_iterator QFuture::end() const
-
- Returns a const \l{STL-style iterator} pointing to the imaginary result
- after the last result in the future.
-
- \sa begin(), constEnd()
-*/
-
-/*! \fn QFuture::const_iterator QFuture::constBegin() const
-
- Returns a const \l{STL-style iterator} pointing to the first result in the
- future.
-
- \sa begin(), constEnd()
-*/
-
-/*! \fn QFuture::const_iterator QFuture::constEnd() const
-
- Returns a const \l{STL-style iterator} pointing to the imaginary result
- after the last result in the future.
-
- \sa constBegin(), end()
-*/
-
-/*! \class QFuture::const_iterator
- \reentrant
- \since 4.4
-
- \brief The QFuture::const_iterator class provides an STL-style const
- iterator for QFuture.
-
- QFuture provides both \l{STL-style iterators} and \l{Java-style iterators}.
- The STL-style iterators are more low-level and more cumbersome to use; on
- the other hand, they are slightly faster and, for developers who already
- know STL, have the advantage of familiarity.
-
- The default QFuture::const_iterator constructor creates an uninitialized
- iterator. You must initialize it using a QFuture function like
- QFuture::constBegin() or QFuture::constEnd() before you start iterating.
- Here's a typical loop that prints all the results available in a future:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qfuture.cpp 0
-
- \sa QFutureIterator, QFuture
-*/
-
-/*! \typedef QFuture::const_iterator::iterator_category
-
- Typedef for std::bidirectional_iterator_tag. Provided for STL compatibility.
-*/
-
-/*! \typedef QFuture::const_iterator::difference_type
-
- Typedef for ptrdiff_t. Provided for STL compatibility.
-*/
-
-/*! \typedef QFuture::const_iterator::value_type
-
- Typedef for T. Provided for STL compatibility.
-*/
-
-/*! \typedef QFuture::const_iterator::pointer
-
- Typedef for const T *. Provided for STL compatibility.
-*/
-
-/*! \typedef QFuture::const_iterator::reference
-
- Typedef for const T &. Provided for STL compatibility.
-*/
-
-/*! \fn QFuture::const_iterator::const_iterator()
-
- Constructs an uninitialized iterator.
-
- Functions like operator*() and operator++() should not be called on an
- uninitialized iterartor. Use operator=() to assign a value to it before
- using it.
-
- \sa QFuture::constBegin() QFuture::constEnd()
-*/
-
-/*! \fn QFuture::const_iterator::const_iterator(QFuture const * const future, int index)
- \internal
-*/
-
-/*! \fn QFuture::const_iterator::const_iterator(const const_iterator &other)
-
- Constructs a copy of \a other.
-*/
-
-/*! \fn QFuture::const_iterator &QFuture::const_iterator::operator=(const const_iterator &other)
-
- Assigns \a other to this iterator.
-*/
-
-/*! \fn const T &QFuture::const_iterator::operator*() const
-
- Returns the current result.
-*/
-
-/*! \fn const T *QFuture::const_iterator::operator->() const
-
- Returns a pointer to the current result.
-*/
-
-/*! \fn bool QFuture::const_iterator::operator!=(const const_iterator &other) const
-
- Returns true if \a other points to a different result than this iterator;
- otherwise returns false.
-
- \sa operator==()
-*/
-
-/*! \fn bool QFuture::const_iterator::operator==(const const_iterator &other) const
-
- Returns true if \a other points to the same result as this iterator;
- otherwise returns false.
-
- \sa operator!=()
-*/
-
-/*! \fn QFuture::const_iterator &QFuture::const_iterator::operator++()
-
- The prefix ++ operator (\c{++it}) advances the iterator to the next result
- in the future and returns an iterator to the new current result.
-
- Calling this function on QFuture::constEnd() leads to undefined results.
-
- \sa operator--()
-*/
-
-/*! \fn QFuture::const_iterator QFuture::const_iterator::operator++(int)
-
- \overload
-
- The postfix ++ operator (\c{it++}) advances the iterator to the next
- result in the future and returns an iterator to the previously current
- result.
-*/
-
-/*! \fn QFuture::const_iterator &QFuture::const_iterator::operator--()
-
- The prefix -- operator (\c{--it}) makes the preceding result current and
- returns an iterator to the new current result.
-
- Calling this function on QFuture::constBegin() leads to undefined results.
-
- \sa operator++()
-*/
-
-/*! \fn QFuture::const_iterator QFuture::const_iterator::operator--(int)
-
- \overload
-
- The postfix -- operator (\c{it--}) makes the preceding result current and
- returns an iterator to the previously current result.
-*/
-
-/*! \fn QFuture::const_iterator &QFuture::const_iterator::operator+=(int j)
-
- Advances the iterator by \a j results. (If \a j is negative, the iterator
- goes backward.)
-
- \sa operator-=(), operator+()
-*/
-
-/*! \fn QFuture::const_iterator &QFuture::const_iterator::operator-=(int j)
-
- Makes the iterator go back by \a j results. (If \a j is negative, the
- iterator goes forward.)
-
- \sa operator+=(), operator-()
-*/
-
-/*! \fn QFuture::const_iterator QFuture::const_iterator::operator+(int j) const
-
- Returns an iterator to the results at \a j positions forward from this
- iterator. (If \a j is negative, the iterator goes backward.)
-
- \sa operator-(), operator+=()
-*/
-
-/*! \fn QFuture::const_iterator QFuture::const_iterator::operator-(int j) const
-
- Returns an iterator to the result at \a j positions backward from this
- iterator. (If \a j is negative, the iterator goes forward.)
-
- \sa operator+(), operator-=()
-*/
-
-/*! \typedef QFuture::ConstIterator
-
- Qt-style synonym for QFuture::const_iterator.
-*/
-
-/*!
- \class QFutureIterator
- \reentrant
- \since 4.4
- \inmodule QtCore
-
- \brief The QFutureIterator class provides a Java-style const iterator for
- QFuture.
-
- QFuture has both \l{Java-style iterators} and \l{STL-style iterators}. The
- Java-style iterators are more high-level and easier to use than the
- STL-style iterators; on the other hand, they are slightly less efficient.
-
- An alternative to using iterators is to use index positions. Some QFuture
- member functions take an index as their first parameter, making it
- possible to access results without using iterators.
-
- QFutureIterator\<T\> allows you to iterate over a QFuture\<T\>. Note that
- there is no mutable iterator for QFuture (unlike the other Java-style
- iterators).
-
- The QFutureIterator constructor takes a QFuture as its argument. After
- construction, the iterator is located at the very beginning of the result
- list (i.e. before the first result). Here's how to iterate over all the
- results sequentially:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qfuture.cpp 1
-
- The next() function returns the next result (waiting for it to become
- available, if necessary) from the future and advances the iterator. Unlike
- STL-style iterators, Java-style iterators point \e between results rather
- than directly \e at results. The first call to next() advances the iterator
- to the position between the first and second result, and returns the first
- result; the second call to next() advances the iterator to the position
- between the second and third result, and returns the second result; and
- so on.
-
- \img javaiterators1.png
-
- Here's how to iterate over the elements in reverse order:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qfuture.cpp 2
-
- If you want to find all occurrences of a particular value, use findNext()
- or findPrevious() in a loop.
-
- Multiple iterators can be used on the same future. If the future is
- modified while a QFutureIterator is active, the QFutureIterator will
- continue iterating over the original future, ignoring the modified copy.
-
- \sa QFuture::const_iterator, QFuture
-*/
-
-/*!
- \fn QFutureIterator::QFutureIterator(const QFuture<T> &future)
-
- Constructs an iterator for traversing \a future. The iterator is set to be
- at the front of the result list (before the first result).
-
- \sa operator=()
-*/
-
-/*! \fn QFutureIterator &QFutureIterator::operator=(const QFuture<T> &future)
-
- Makes the iterator operate on \a future. The iterator is set to be at the
- front of the result list (before the first result).
-
- \sa toFront(), toBack()
-*/
-
-/*! \fn void QFutureIterator::toFront()
-
- Moves the iterator to the front of the result list (before the first
- result).
-
- \sa toBack(), next()
-*/
-
-/*! \fn void QFutureIterator::toBack()
-
- Moves the iterator to the back of the result list (after the last result).
-
- \sa toFront(), previous()
-*/
-
-/*! \fn bool QFutureIterator::hasNext() const
-
- Returns true if there is at least one result ahead of the iterator, e.g.,
- the iterator is \e not at the back of the result list; otherwise returns
- false.
-
- \sa hasPrevious(), next()
-*/
-
-/*! \fn const T &QFutureIterator::next()
-
- Returns the next result and advances the iterator by one position.
-
- Calling this function on an iterator located at the back of the result
- list leads to undefined results.
-
- \sa hasNext(), peekNext(), previous()
-*/
-
-/*! \fn const T &QFutureIterator::peekNext() const
-
- Returns the next result without moving the iterator.
-
- Calling this function on an iterator located at the back of the result
- list leads to undefined results.
-
- \sa hasNext(), next(), peekPrevious()
-*/
-
-/*! \fn bool QFutureIterator::hasPrevious() const
-
- Returns true if there is at least one result ahead of the iterator, e.g.,
- the iterator is \e not at the front of the result list; otherwise returns
- false.
-
- \sa hasNext(), previous()
-*/
-
-/*! \fn const T &QFutureIterator::previous()
-
- Returns the previous result and moves the iterator back by one position.
-
- Calling this function on an iterator located at the front of the result
- list leads to undefined results.
-
- \sa hasPrevious(), peekPrevious(), next()
-*/
-
-/*! \fn const T &QFutureIterator::peekPrevious() const
-
- Returns the previous result without moving the iterator.
-
- Calling this function on an iterator located at the front of the result
- list leads to undefined results.
-
- \sa hasPrevious(), previous(), peekNext()
-*/
-
-/*! \fn bool QFutureIterator::findNext(const T &value)
-
- Searches for \a value starting from the current iterator position forward.
- Returns true if \a value is found; otherwise returns false.
-
- After the call, if \a value was found, the iterator is positioned just
- after the matching result; otherwise, the iterator is positioned at the
- back of the result list.
-
- \sa findPrevious()
-*/
-
-/*! \fn bool QFutureIterator::findPrevious(const T &value)
-
- Searches for \a value starting from the current iterator position
- backward. Returns true if \a value is found; otherwise returns false.
-
- After the call, if \a value was found, the iterator is positioned just
- before the matching result; otherwise, the iterator is positioned at the
- front of the result list.
-
- \sa findNext()
-*/
diff --git a/src/corelib/concurrent/qfuture.h b/src/corelib/concurrent/qfuture.h
deleted file mode 100644
index 6407fc39e7..0000000000
--- a/src/corelib/concurrent/qfuture.h
+++ /dev/null
@@ -1,278 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QFUTURE_H
-#define QFUTURE_H
-
-#include <QtCore/qglobal.h>
-
-#ifndef QT_NO_QFUTURE
-
-#include <QtCore/qfutureinterface.h>
-#include <QtCore/qstring.h>
-#include <QtCore/qtconcurrentcompilertest.h>
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-template <typename T>
-class QFutureWatcher;
-template <>
-class QFutureWatcher<void>;
-
-template <typename T>
-class QFuture
-{
-public:
- QFuture()
- : d(QFutureInterface<T>::canceledResult())
- { }
- explicit QFuture(QFutureInterface<T> *p) // internal
- : d(*p)
- { }
- QFuture(const QFuture &other)
- : d(other.d)
- { }
- ~QFuture()
- { }
-
- inline QFuture &operator=(const QFuture &other);
- bool operator==(const QFuture &other) const { return (d == other.d); }
- bool operator!=(const QFuture &other) const { return (d != other.d); }
-
- void cancel() { d.cancel(); }
- bool isCanceled() const { return d.isCanceled(); }
-
- void setPaused(bool paused) { d.setPaused(paused); }
- bool isPaused() const { return d.isPaused(); }
- void pause() { setPaused(true); }
- void resume() { setPaused(false); }
- void togglePaused() { d.togglePaused(); }
-
- bool isStarted() const { return d.isStarted(); }
- bool isFinished() const { return d.isFinished(); }
- bool isRunning() const { return d.isRunning(); }
-
- int resultCount() const { return d.resultCount(); }
- int progressValue() const { return d.progressValue(); }
- int progressMinimum() const { return d.progressMinimum(); }
- int progressMaximum() const { return d.progressMaximum(); }
- QString progressText() const { return d.progressText(); }
- void waitForFinished() { d.waitForFinished(); }
-
- inline T result() const;
- inline T resultAt(int index) const;
- bool isResultReadyAt(int resultIndex) const { return d.isResultReadyAt(resultIndex); }
-
- operator T() const { return result(); }
- QList<T> results() const { return d.results(); }
-
- class const_iterator
- {
- public:
- typedef std::bidirectional_iterator_tag iterator_category;
- typedef qptrdiff difference_type;
- typedef T value_type;
- typedef const T *pointer;
- typedef const T &reference;
-
- inline const_iterator() {}
- inline const_iterator(QFuture const * const _future, int _index) : future(_future), index(_index) {}
- inline const_iterator(const const_iterator &o) : future(o.future), index(o.index) {}
- inline const_iterator &operator=(const const_iterator &o)
- { future = o.future; index = o.index; return *this; }
- inline const T &operator*() const { return future->d.resultReference(index); }
- inline const T *operator->() const { return future->d.resultPointer(index); }
-
- inline bool operator!=(const const_iterator &other) const
- {
- if (index == -1 && other.index == -1) // comparing end != end?
- return false;
- if (other.index == -1)
- return (future->isRunning() || (index < future->resultCount()));
- return (index != other.index);
- }
-
- inline bool operator==(const const_iterator &o) const { return !operator!=(o); }
- inline const_iterator &operator++() { ++index; return *this; }
- inline const_iterator operator++(int) { const_iterator r = *this; ++index; return r; }
- inline const_iterator &operator--() { --index; return *this; }
- inline const_iterator operator--(int) { const_iterator r = *this; --index; return r; }
- inline const_iterator operator+(int j) const { return const_iterator(future, index + j); }
- inline const_iterator operator-(int j) const { return const_iterator(future, index - j); }
- inline const_iterator &operator+=(int j) { index += j; return *this; }
- inline const_iterator &operator-=(int j) { index -= j; return *this; }
- private:
- QFuture const * future;
- int index;
- };
- friend class const_iterator;
- typedef const_iterator ConstIterator;
-
- const_iterator begin() const { return const_iterator(this, 0); }
- const_iterator constBegin() const { return const_iterator(this, 0); }
- const_iterator end() const { return const_iterator(this, -1); }
- const_iterator constEnd() const { return const_iterator(this, -1); }
-
-private:
- friend class QFutureWatcher<T>;
-
-public: // Warning: the d pointer is not documented and is considered private.
- mutable QFutureInterface<T> d;
-};
-
-template <typename T>
-inline QFuture<T> &QFuture<T>::operator=(const QFuture<T> &other)
-{
- d = other.d;
- return *this;
-}
-
-template <typename T>
-inline T QFuture<T>::result() const
-{
- d.waitForResult(0);
- return d.resultReference(0);
-}
-
-template <typename T>
-inline T QFuture<T>::resultAt(int index) const
-{
- d.waitForResult(index);
- return d.resultReference(index);
-}
-
-template <typename T>
-inline QFuture<T> QFutureInterface<T>::future()
-{
- return QFuture<T>(this);
-}
-
-Q_DECLARE_SEQUENTIAL_ITERATOR(Future)
-
-template <>
-class QFuture<void>
-{
-public:
- QFuture()
- : d(QFutureInterface<void>::canceledResult())
- { }
- explicit QFuture(QFutureInterfaceBase *p) // internal
- : d(*p)
- { }
- QFuture(const QFuture &other)
- : d(other.d)
- { }
- ~QFuture()
- { }
-
- QFuture &operator=(const QFuture &other);
- bool operator==(const QFuture &other) const { return (d == other.d); }
- bool operator!=(const QFuture &other) const { return (d != other.d); }
-
-#if !defined(Q_CC_XLC)
- template <typename T>
- QFuture(const QFuture<T> &other)
- : d(other.d)
- { }
-
- template <typename T>
- QFuture<void> &operator=(const QFuture<T> &other)
- {
- d = other.d;
- return *this;
- }
-#endif
-
- void cancel() { d.cancel(); }
- bool isCanceled() const { return d.isCanceled(); }
-
- void setPaused(bool paused) { d.setPaused(paused); }
- bool isPaused() const { return d.isPaused(); }
- void pause() { setPaused(true); }
- void resume() { setPaused(false); }
- void togglePaused() { d.togglePaused(); }
-
- bool isStarted() const { return d.isStarted(); }
- bool isFinished() const { return d.isFinished(); }
- bool isRunning() const { return d.isRunning(); }
-
- int resultCount() const { return d.resultCount(); }
- int progressValue() const { return d.progressValue(); }
- int progressMinimum() const { return d.progressMinimum(); }
- int progressMaximum() const { return d.progressMaximum(); }
- QString progressText() const { return d.progressText(); }
- void waitForFinished() { d.waitForFinished(); }
-
-private:
- friend class QFutureWatcher<void>;
-
-#ifdef QFUTURE_TEST
-public:
-#endif
- mutable QFutureInterfaceBase d;
-};
-
-inline QFuture<void> &QFuture<void>::operator=(const QFuture<void> &other)
-{
- d = other.d;
- return *this;
-}
-
-inline QFuture<void> QFutureInterface<void>::future()
-{
- return QFuture<void>(this);
-}
-
-template <typename T>
-QFuture<void> qToVoidFuture(const QFuture<T> &future)
-{
- return QFuture<void>(future.d);
-}
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif // QFUTURE_H
diff --git a/src/corelib/concurrent/qfutureinterface.cpp b/src/corelib/concurrent/qfutureinterface.cpp
deleted file mode 100644
index 63033080a1..0000000000
--- a/src/corelib/concurrent/qfutureinterface.cpp
+++ /dev/null
@@ -1,565 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-// qfutureinterface.h included from qfuture.h
-#include "qfuture.h"
-
-#ifndef QT_NO_QFUTURE
-
-#include <QtCore/qatomic.h>
-#include <QtCore/qthread.h>
-#include <QtCore/qthreadpool.h>
-#include <private/qthreadpool_p.h>
-
-#include "qfutureinterface_p.h"
-
-QT_BEGIN_NAMESPACE
-
-enum {
- MaxProgressEmitsPerSecond = 25
-};
-
-QFutureInterfaceBase::QFutureInterfaceBase(State initialState)
- : d(new QFutureInterfaceBasePrivate(initialState))
-{ }
-
-QFutureInterfaceBase::QFutureInterfaceBase(const QFutureInterfaceBase &other)
- : d(other.d)
-{
- d->refCount.ref();
-}
-
-QFutureInterfaceBase::~QFutureInterfaceBase()
-{
- if (!d->refCount.deref())
- delete d;
-}
-
-void QFutureInterfaceBase::cancel()
-{
- QMutexLocker locker(&d->m_mutex);
- if (d->state & Canceled)
- return;
-
- d->state = State((d->state & ~Paused) | Canceled);
- d->waitCondition.wakeAll();
- d->pausedWaitCondition.wakeAll();
- d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Canceled));
-}
-
-void QFutureInterfaceBase::setPaused(bool paused)
-{
- QMutexLocker locker(&d->m_mutex);
- if (paused) {
- d->state = State(d->state | Paused);
- d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Paused));
- } else {
- d->state = State(d->state & ~Paused);
- d->pausedWaitCondition.wakeAll();
- d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Resumed));
- }
-}
-
-void QFutureInterfaceBase::togglePaused()
-{
- QMutexLocker locker(&d->m_mutex);
- if (d->state & Paused) {
- d->state = State(d->state & ~Paused);
- d->pausedWaitCondition.wakeAll();
- d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Resumed));
- } else {
- d->state = State(d->state | Paused);
- d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Paused));
- }
-}
-
-void QFutureInterfaceBase::setThrottled(bool enable)
-{
- // bail out if we are not changing the state
- if ((enable && (d->state & Throttled)) || (!enable && !(d->state & Throttled)))
- return;
-
- // lock and change the state
- QMutexLocker lock(&d->m_mutex);
- if (enable) {
- d->state = State(d->state | Throttled);
- } else {
- d->state = State(d->state & ~Throttled);
- if (!(d->state & Paused))
- d->pausedWaitCondition.wakeAll();
- }
-}
-
-
-bool QFutureInterfaceBase::isRunning() const
-{
- return queryState(Running);
-}
-
-bool QFutureInterfaceBase::isStarted() const
-{
- return queryState(Started);
-}
-
-bool QFutureInterfaceBase::isCanceled() const
-{
- return queryState(Canceled);
-}
-
-bool QFutureInterfaceBase::isFinished() const
-{
- return queryState(Finished);
-}
-
-bool QFutureInterfaceBase::isPaused() const
-{
- return queryState(Paused);
-}
-
-bool QFutureInterfaceBase::isThrottled() const
-{
- return queryState(Throttled);
-}
-
-bool QFutureInterfaceBase::isResultReadyAt(int index) const
-{
- QMutexLocker lock(&d->m_mutex);
- return d->internal_isResultReadyAt(index);
-}
-
-bool QFutureInterfaceBase::waitForNextResult()
-{
- QMutexLocker lock(&d->m_mutex);
- return d->internal_waitForNextResult();
-}
-
-void QFutureInterfaceBase::waitForResume()
-{
- // return early if possible to avoid taking the mutex lock.
- if ((d->state & Paused) == false || (d->state & Canceled))
- return;
-
- QMutexLocker lock(&d->m_mutex);
- if ((d->state & Paused) == false || (d->state & Canceled))
- return;
-
- // decrease active thread count since this thread will wait.
- QThreadPool::globalInstance()->releaseThread();
-
- d->pausedWaitCondition.wait(&d->m_mutex);
-
- QThreadPool::globalInstance()->reserveThread();
-}
-
-int QFutureInterfaceBase::progressValue() const
-{
- return d->m_progressValue;
-}
-
-int QFutureInterfaceBase::progressMinimum() const
-{
- return d->m_progressMinimum;
-}
-
-int QFutureInterfaceBase::progressMaximum() const
-{
- return d->m_progressMaximum;
-}
-
-int QFutureInterfaceBase::resultCount() const
-{
- QMutexLocker lock(&d->m_mutex);
- return d->internal_resultCount();
-}
-
-QString QFutureInterfaceBase::progressText() const
-{
- QMutexLocker locker(&d->m_mutex);
- return d->m_progressText;
-}
-
-bool QFutureInterfaceBase::isProgressUpdateNeeded() const
-{
- QMutexLocker locker(&d->m_mutex);
- return !d->progressTime.isValid() || (d->progressTime.elapsed() > (1000 / MaxProgressEmitsPerSecond));
-}
-
-void QFutureInterfaceBase::reportStarted()
-{
- QMutexLocker locker(&d->m_mutex);
- if ((d->state & Started) || (d->state & Canceled) || (d->state & Finished))
- return;
-
- d->setState(State(Started | Running));
- d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Started));
-}
-
-void QFutureInterfaceBase::reportCanceled()
-{
- cancel();
-}
-
-#ifndef QT_NO_EXCEPTIONS
-void QFutureInterfaceBase::reportException(const QtConcurrent::Exception &exception)
-{
- QMutexLocker locker(&d->m_mutex);
- if ((d->state & Canceled) || (d->state & Finished))
- return;
-
- d->m_exceptionStore.setException(exception);
- d->state = State(d->state | Canceled);
- d->waitCondition.wakeAll();
- d->pausedWaitCondition.wakeAll();
- d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Canceled));
-}
-#endif
-
-void QFutureInterfaceBase::reportFinished()
-{
- QMutexLocker locker(&d->m_mutex);
- if (!(d->state & Finished)) {
- d->state = State((d->state & ~Running) | Finished);
- d->waitCondition.wakeAll();
- d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Finished));
- }
-}
-
-void QFutureInterfaceBase::setExpectedResultCount(int resultCount)
-{
- if (d->manualProgress == false)
- setProgressRange(0, resultCount);
- d->m_expectedResultCount = resultCount;
-}
-
-int QFutureInterfaceBase::expectedResultCount()
-{
- return d->m_expectedResultCount;
-}
-
-bool QFutureInterfaceBase::queryState(State state) const
-{
- return (d->state & state);
-}
-
-void QFutureInterfaceBase::waitForResult(int resultIndex)
-{
- d->m_exceptionStore.throwPossibleException();
-
- if (!(d->state & Running))
- return;
-
- // To avoid deadlocks and reduce the number of threads used, try to
- // run the runnable in the current thread.
- QThreadPool::globalInstance()->d_func()->stealRunnable(d->runnable);
-
- QMutexLocker lock(&d->m_mutex);
-
- if (!(d->state & Running))
- return;
-
- const int waitIndex = (resultIndex == -1) ? INT_MAX : resultIndex;
- while ((d->state & Running) && d->internal_isResultReadyAt(waitIndex) == false)
- d->waitCondition.wait(&d->m_mutex);
-
- d->m_exceptionStore.throwPossibleException();
-}
-
-void QFutureInterfaceBase::waitForFinished()
-{
- if (d->state & Running) {
- QThreadPool::globalInstance()->d_func()->stealRunnable(d->runnable);
-
- QMutexLocker lock(&d->m_mutex);
-
- while (d->state & Running)
- d->waitCondition.wait(&d->m_mutex);
- }
-
- d->m_exceptionStore.throwPossibleException();
-}
-
-void QFutureInterfaceBase::reportResultsReady(int beginIndex, int endIndex)
-{
- if ((d->state & Canceled) || (d->state & Finished) || beginIndex == endIndex)
- return;
-
- d->waitCondition.wakeAll();
-
- if (d->manualProgress == false) {
- if (d->internal_updateProgress(d->m_progressValue + endIndex - beginIndex) == false) {
- d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::ResultsReady,
- beginIndex,
- endIndex));
- return;
- }
-
- d->sendCallOuts(QFutureCallOutEvent(QFutureCallOutEvent::Progress,
- d->m_progressValue,
- d->m_progressText),
- QFutureCallOutEvent(QFutureCallOutEvent::ResultsReady,
- beginIndex,
- endIndex));
- return;
- }
- d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::ResultsReady, beginIndex, endIndex));
-}
-
-void QFutureInterfaceBase::setRunnable(QRunnable *runnable)
-{
- d->runnable = runnable;
-}
-
-void QFutureInterfaceBase::setFilterMode(bool enable)
-{
- QMutexLocker locker(&d->m_mutex);
- resultStoreBase().setFilterMode(enable);
-}
-
-void QFutureInterfaceBase::setProgressRange(int minimum, int maximum)
-{
- QMutexLocker locker(&d->m_mutex);
- d->m_progressMinimum = minimum;
- d->m_progressMaximum = maximum;
- d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::ProgressRange, minimum, maximum));
-}
-
-void QFutureInterfaceBase::setProgressValue(int progressValue)
-{
- setProgressValueAndText(progressValue, QString());
-}
-
-void QFutureInterfaceBase::setProgressValueAndText(int progressValue,
- const QString &progressText)
-{
- QMutexLocker locker(&d->m_mutex);
- if (d->manualProgress == false)
- d->manualProgress = true;
- if (d->m_progressValue >= progressValue)
- return;
-
- if ((d->state & Canceled) || (d->state & Finished))
- return;
-
- if (d->internal_updateProgress(progressValue, progressText)) {
- d->sendCallOut(QFutureCallOutEvent(QFutureCallOutEvent::Progress,
- d->m_progressValue,
- d->m_progressText));
- }
-}
-
-QMutex *QFutureInterfaceBase::mutex() const
-{
- return &d->m_mutex;
-}
-
-QtConcurrent::internal::ExceptionStore &QFutureInterfaceBase::exceptionStore()
-{
- return d->m_exceptionStore;
-}
-
-QtConcurrent::ResultStoreBase &QFutureInterfaceBase::resultStoreBase()
-{
- return d->m_results;
-}
-
-const QtConcurrent::ResultStoreBase &QFutureInterfaceBase::resultStoreBase() const
-{
- return d->m_results;
-}
-
-QFutureInterfaceBase &QFutureInterfaceBase::operator=(const QFutureInterfaceBase &other)
-{
- other.d->refCount.ref();
- if (!d->refCount.deref())
- delete d;
- d = other.d;
- return *this;
-}
-
-bool QFutureInterfaceBase::referenceCountIsOne() const
-{
- return d->refCount.load() == 1;
-}
-
-QFutureInterfaceBasePrivate::QFutureInterfaceBasePrivate(QFutureInterfaceBase::State initialState)
- : refCount(1), m_progressValue(0), m_progressMinimum(0), m_progressMaximum(0),
- state(initialState), pendingResults(0),
- manualProgress(false), m_expectedResultCount(0), runnable(0)
-{
- progressTime.invalidate();
-}
-
-int QFutureInterfaceBasePrivate::internal_resultCount() const
-{
- return m_results.count(); // ### subtract canceled results.
-}
-
-bool QFutureInterfaceBasePrivate::internal_isResultReadyAt(int index) const
-{
- return (m_results.contains(index));
-}
-
-bool QFutureInterfaceBasePrivate::internal_waitForNextResult()
-{
- if (m_results.hasNextResult())
- return true;
-
- while ((state & QFutureInterfaceBase::Running) && m_results.hasNextResult() == false)
- waitCondition.wait(&m_mutex);
-
- return (!(state & QFutureInterfaceBase::Canceled) && m_results.hasNextResult());
-}
-
-bool QFutureInterfaceBasePrivate::internal_updateProgress(int progress,
- const QString &progressText)
-{
- if (m_progressValue >= progress)
- return false;
-
- m_progressValue = progress;
- m_progressText = progressText;
-
- if (progressTime.isValid() && m_progressValue != m_progressMaximum) // make sure the first and last steps are emitted.
- if (progressTime.elapsed() < (1000 / MaxProgressEmitsPerSecond))
- return false;
-
- progressTime.start();
- return true;
-}
-
-void QFutureInterfaceBasePrivate::internal_setThrottled(bool enable)
-{
- // bail out if we are not changing the state
- if ((enable && (state & QFutureInterfaceBase::Throttled))
- || (!enable && !(state & QFutureInterfaceBase::Throttled)))
- return;
-
- // change the state
- if (enable) {
- state = QFutureInterfaceBase::State(state | QFutureInterfaceBase::Throttled);
- } else {
- state = QFutureInterfaceBase::State(state & ~QFutureInterfaceBase::Throttled);
- if (!(state & QFutureInterfaceBase::Paused))
- pausedWaitCondition.wakeAll();
- }
-}
-
-void QFutureInterfaceBasePrivate::sendCallOut(const QFutureCallOutEvent &callOutEvent)
-{
- if (outputConnections.isEmpty())
- return;
-
- for (int i = 0; i < outputConnections.count(); ++i)
- outputConnections.at(i)->postCallOutEvent(callOutEvent);
-}
-
-void QFutureInterfaceBasePrivate::sendCallOuts(const QFutureCallOutEvent &callOutEvent1,
- const QFutureCallOutEvent &callOutEvent2)
-{
- if (outputConnections.isEmpty())
- return;
-
- for (int i = 0; i < outputConnections.count(); ++i) {
- QFutureCallOutInterface *interface = outputConnections.at(i);
- interface->postCallOutEvent(callOutEvent1);
- interface->postCallOutEvent(callOutEvent2);
- }
-}
-
-// This function connects an output interface (for example a QFutureWatcher)
-// to this future. While holding the lock we check the state and ready results
-// and add the appropriate callouts to the queue. In order to avoid deadlocks,
-// the actual callouts are made at the end while not holding the lock.
-void QFutureInterfaceBasePrivate::connectOutputInterface(QFutureCallOutInterface *interface)
-{
- QMutexLocker locker(&m_mutex);
-
- if (state & QFutureInterfaceBase::Started) {
- interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Started));
- interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::ProgressRange,
- m_progressMinimum,
- m_progressMaximum));
- interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Progress,
- m_progressValue,
- m_progressText));
- }
-
- QtConcurrent::ResultIteratorBase it = m_results.begin();
- while (it != m_results.end()) {
- const int begin = it.resultIndex();
- const int end = begin + it.batchSize();
- interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::ResultsReady,
- begin,
- end));
- it.batchedAdvance();
- }
-
- if (state & QFutureInterfaceBase::Paused)
- interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Paused));
-
- if (state & QFutureInterfaceBase::Canceled)
- interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Canceled));
-
- if (state & QFutureInterfaceBase::Finished)
- interface->postCallOutEvent(QFutureCallOutEvent(QFutureCallOutEvent::Finished));
-
- outputConnections.append(interface);
-}
-
-void QFutureInterfaceBasePrivate::disconnectOutputInterface(QFutureCallOutInterface *interface)
-{
- QMutexLocker lock(&m_mutex);
- const int index = outputConnections.indexOf(interface);
- if (index == -1)
- return;
- outputConnections.removeAt(index);
-
- interface->callOutInterfaceDisconnected();
-}
-
-void QFutureInterfaceBasePrivate::setState(QFutureInterfaceBase::State newState)
-{
- state = newState;
-}
-
-QT_END_NAMESPACE
-
-#endif // QT_NO_CONCURRENT
diff --git a/src/corelib/concurrent/qfutureinterface.h b/src/corelib/concurrent/qfutureinterface.h
deleted file mode 100644
index 2acd1f46fd..0000000000
--- a/src/corelib/concurrent/qfutureinterface.h
+++ /dev/null
@@ -1,313 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QFUTUREINTERFACE_H
-#define QFUTUREINTERFACE_H
-
-#include <QtCore/qglobal.h>
-#include <QtCore/qrunnable.h>
-
-#ifndef QT_NO_QFUTURE
-
-#include <QtCore/qmutex.h>
-#include <QtCore/qtconcurrentexception.h>
-#include <QtCore/qtconcurrentresultstore.h>
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-template <typename T> class QFuture;
-class QFutureInterfaceBasePrivate;
-class QFutureWatcherBase;
-class QFutureWatcherBasePrivate;
-
-class Q_CORE_EXPORT QFutureInterfaceBase
-{
-public:
- enum State {
- NoState = 0x00,
- Running = 0x01,
- Started = 0x02,
- Finished = 0x04,
- Canceled = 0x08,
- Paused = 0x10,
- Throttled = 0x20
- };
-
- QFutureInterfaceBase(State initialState = NoState);
- QFutureInterfaceBase(const QFutureInterfaceBase &other);
- virtual ~QFutureInterfaceBase();
-
- // reporting functions available to the engine author:
- void reportStarted();
- void reportFinished();
- void reportCanceled();
-#ifndef QT_NO_EXCEPTIONS
- void reportException(const QtConcurrent::Exception &e);
-#endif
- void reportResultsReady(int beginIndex, int endIndex);
-
- void setRunnable(QRunnable *runnable);
- void setFilterMode(bool enable);
- void setProgressRange(int minimum, int maximum);
- int progressMinimum() const;
- int progressMaximum() const;
- bool isProgressUpdateNeeded() const;
- void setProgressValue(int progressValue);
- int progressValue() const;
- void setProgressValueAndText(int progressValue, const QString &progressText);
- QString progressText() const;
-
- void setExpectedResultCount(int resultCount);
- int expectedResultCount();
- int resultCount() const;
-
- bool queryState(State state) const;
- bool isRunning() const;
- bool isStarted() const;
- bool isCanceled() const;
- bool isFinished() const;
- bool isPaused() const;
- bool isThrottled() const;
- bool isResultReadyAt(int index) const;
-
- void cancel();
- void setPaused(bool paused);
- void togglePaused();
- void setThrottled(bool enable);
-
- void waitForFinished();
- bool waitForNextResult();
- void waitForResult(int resultIndex);
- void waitForResume();
-
- QMutex *mutex() const;
- QtConcurrent::internal::ExceptionStore &exceptionStore();
- QtConcurrent::ResultStoreBase &resultStoreBase();
- const QtConcurrent::ResultStoreBase &resultStoreBase() const;
-
- inline bool operator==(const QFutureInterfaceBase &other) const { return d == other.d; }
- inline bool operator!=(const QFutureInterfaceBase &other) const { return d != other.d; }
- QFutureInterfaceBase &operator=(const QFutureInterfaceBase &other);
-
-protected:
- bool referenceCountIsOne() const;
-public:
-
-#ifndef QFUTURE_TEST
-private:
-#endif
- QFutureInterfaceBasePrivate *d;
-
-private:
- friend class QFutureWatcherBase;
- friend class QFutureWatcherBasePrivate;
-};
-
-template <typename T>
-class QFutureInterface : public QFutureInterfaceBase
-{
-public:
- QFutureInterface(State initialState = NoState)
- : QFutureInterfaceBase(initialState)
- { }
- QFutureInterface(const QFutureInterface &other)
- : QFutureInterfaceBase(other)
- { }
- ~QFutureInterface()
- {
- if (referenceCountIsOne())
- resultStore().clear();
- }
-
- static QFutureInterface canceledResult()
- { return QFutureInterface(State(Started | Finished | Canceled)); }
-
- QFutureInterface &operator=(const QFutureInterface &other)
- {
- if (referenceCountIsOne())
- resultStore().clear();
- QFutureInterfaceBase::operator=(other);
- return *this;
- }
-
- inline QFuture<T> future(); // implemented in qfuture.h
-
- inline void reportResult(const T *result, int index = -1);
- inline void reportResult(const T &result, int index = -1);
- inline void reportResults(const QVector<T> &results, int beginIndex = -1, int count = -1);
- inline void reportFinished(const T *result = 0);
-
- inline const T &resultReference(int index) const;
- inline const T *resultPointer(int index) const;
- inline QList<T> results();
-private:
- QtConcurrent::ResultStore<T> &resultStore()
- { return static_cast<QtConcurrent::ResultStore<T> &>(resultStoreBase()); }
- const QtConcurrent::ResultStore<T> &resultStore() const
- { return static_cast<const QtConcurrent::ResultStore<T> &>(resultStoreBase()); }
-};
-
-template <typename T>
-inline void QFutureInterface<T>::reportResult(const T *result, int index)
-{
- QMutexLocker locker(mutex());
- if (this->queryState(Canceled) || this->queryState(Finished)) {
- return;
- }
-
- QtConcurrent::ResultStore<T> &store = resultStore();
-
-
- if (store.filterMode()) {
- const int resultCountBefore = store.count();
- store.addResult(index, result);
- this->reportResultsReady(resultCountBefore, resultCountBefore + store.count());
- } else {
- const int insertIndex = store.addResult(index, result);
- this->reportResultsReady(insertIndex, insertIndex + 1);
- }
-}
-
-template <typename T>
-inline void QFutureInterface<T>::reportResult(const T &result, int index)
-{
- reportResult(&result, index);
-}
-
-template <typename T>
-inline void QFutureInterface<T>::reportResults(const QVector<T> &_results, int beginIndex, int count)
-{
- QMutexLocker locker(mutex());
- if (this->queryState(Canceled) || this->queryState(Finished)) {
- return;
- }
-
- QtConcurrent::ResultStore<T> &store = resultStore();
-
- if (store.filterMode()) {
- const int resultCountBefore = store.count();
- store.addResults(beginIndex, &_results, count);
- this->reportResultsReady(resultCountBefore, store.count());
- } else {
- const int insertIndex = store.addResults(beginIndex, &_results, count);
- this->reportResultsReady(insertIndex, insertIndex + _results.count());
- }
-}
-
-template <typename T>
-inline void QFutureInterface<T>::reportFinished(const T *result)
-{
- if (result)
- reportResult(result);
- QFutureInterfaceBase::reportFinished();
-}
-
-template <typename T>
-inline const T &QFutureInterface<T>::resultReference(int index) const
-{
- QMutexLocker lock(mutex());
- return resultStore().resultAt(index).value();
-}
-
-template <typename T>
-inline const T *QFutureInterface<T>::resultPointer(int index) const
-{
- QMutexLocker lock(mutex());
- return resultStore().resultAt(index).pointer();
-}
-
-template <typename T>
-inline QList<T> QFutureInterface<T>::results()
-{
- if (this->isCanceled()) {
- exceptionStore().throwPossibleException();
- return QList<T>();
- }
- QFutureInterfaceBase::waitForResult(-1);
-
- QList<T> res;
- QMutexLocker lock(mutex());
-
- QtConcurrent::ResultIterator<T> it = resultStore().begin();
- while (it != resultStore().end()) {
- res.append(it.value());
- ++it;
- }
-
- return res;
-}
-
-template <>
-class QFutureInterface<void> : public QFutureInterfaceBase
-{
-public:
- QFutureInterface<void>(State initialState = NoState)
- : QFutureInterfaceBase(initialState)
- { }
- QFutureInterface<void>(const QFutureInterface<void> &other)
- : QFutureInterfaceBase(other)
- { }
-
- static QFutureInterface<void> canceledResult()
- { return QFutureInterface(State(Started | Finished | Canceled)); }
-
- QFutureInterface<void> &operator=(const QFutureInterface<void> &other)
- {
- QFutureInterfaceBase::operator=(other);
- return *this;
- }
-
- inline QFuture<void> future(); // implemented in qfuture.h
-
- void reportResult(const void *, int) { }
- void reportResults(const QVector<void> &, int) { }
- void reportFinished(void * = 0) { QFutureInterfaceBase::reportFinished(); }
-};
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif // QFUTUREINTERFACE_H
diff --git a/src/corelib/concurrent/qfutureinterface_p.h b/src/corelib/concurrent/qfutureinterface_p.h
deleted file mode 100644
index 96567c35eb..0000000000
--- a/src/corelib/concurrent/qfutureinterface_p.h
+++ /dev/null
@@ -1,167 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QFUTUREINTERFACE_P_H
-#define QFUTUREINTERFACE_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <QtCore/qelapsedtimer.h>
-#include <QtCore/qcoreevent.h>
-#include <QtCore/qlist.h>
-#include <QtCore/qwaitcondition.h>
-#include <QtCore/qrunnable.h>
-
-QT_BEGIN_NAMESPACE
-
-class QFutureCallOutEvent : public QEvent
-{
-public:
- enum CallOutType {
- Started,
- Finished,
- Canceled,
- Paused,
- Resumed,
- Progress,
- ProgressRange,
- ResultsReady
- };
-
- QFutureCallOutEvent()
- : QEvent(QEvent::FutureCallOut), callOutType(CallOutType(0)), index1(-1), index2(-1)
- { }
- QFutureCallOutEvent(CallOutType callOutType, int index1 = -1)
- : QEvent(QEvent::FutureCallOut), callOutType(callOutType), index1(index1), index2(-1)
- { }
- QFutureCallOutEvent(CallOutType callOutType, int index1, int index2)
- : QEvent(QEvent::FutureCallOut), callOutType(callOutType), index1(index1), index2(index2)
- { }
-
- QFutureCallOutEvent(CallOutType callOutType, int index1, const QString &text)
- : QEvent(QEvent::FutureCallOut),
- callOutType(callOutType),
- index1(index1),
- index2(-1),
- text(text)
- { }
-
- CallOutType callOutType;
- int index1;
- int index2;
- QString text;
-
- QFutureCallOutEvent *clone() const
- {
- return new QFutureCallOutEvent(callOutType, index1, index2, text);
- }
-
-private:
- QFutureCallOutEvent(CallOutType callOutType,
- int index1,
- int index2,
- const QString &text)
- : QEvent(QEvent::FutureCallOut),
- callOutType(callOutType),
- index1(index1),
- index2(index2),
- text(text)
- { }
-};
-
-class QFutureCallOutInterface
-{
-public:
- virtual ~QFutureCallOutInterface() {}
- virtual void postCallOutEvent(const QFutureCallOutEvent &) = 0;
- virtual void callOutInterfaceDisconnected() = 0;
-};
-
-class QFutureInterfaceBasePrivate
-{
-public:
- QFutureInterfaceBasePrivate(QFutureInterfaceBase::State initialState);
-
- QAtomicInt refCount;
- mutable QMutex m_mutex;
- QWaitCondition waitCondition;
- QList<QFutureCallOutInterface *> outputConnections;
- int m_progressValue;
- int m_progressMinimum;
- int m_progressMaximum;
- QFutureInterfaceBase::State state;
- QElapsedTimer progressTime;
- QWaitCondition pausedWaitCondition;
- int pendingResults;
- QtConcurrent::ResultStoreBase m_results;
- bool manualProgress;
- int m_expectedResultCount;
- QtConcurrent::internal::ExceptionStore m_exceptionStore;
- QString m_progressText;
- QRunnable *runnable;
-
- // Internal functions that does not change the mutex state.
- // The mutex must be locked when calling these.
- int internal_resultCount() const;
- bool internal_isResultReadyAt(int index) const;
- bool internal_waitForNextResult();
- bool internal_updateProgress(int progress, const QString &progressText = QString());
- void internal_setThrottled(bool enable);
- void sendCallOut(const QFutureCallOutEvent &callOut);
- void sendCallOuts(const QFutureCallOutEvent &callOut1, const QFutureCallOutEvent &callOut2);
- void connectOutputInterface(QFutureCallOutInterface *iface);
- void disconnectOutputInterface(QFutureCallOutInterface *iface);
-
- void setState(QFutureInterfaceBase::State state);
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/src/corelib/concurrent/qfuturesynchronizer.cpp b/src/corelib/concurrent/qfuturesynchronizer.cpp
deleted file mode 100644
index d46aa3e7e7..0000000000
--- a/src/corelib/concurrent/qfuturesynchronizer.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-/*! \class QFutureSynchronizer
- \since 4.4
-
- \brief The QFutureSynchronizer class is a convenience class that simplifies
- QFuture synchronization.
-
- \ingroup thread
-
- QFutureSynchronizer is a template class that simplifies synchronization of
- one or more QFuture objects. Futures are added using the addFuture() or
- setFuture() functions. The futures() function returns a list of futures.
- Use clearFutures() to remove all futures from the QFutureSynchronizer.
-
- The waitForFinished() function waits for all futures to finish.
- The destructor of QFutureSynchronizer calls waitForFinished(), providing
- an easy way to ensure that all futures have finished before returning from
- a function:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qfuturesynchronizer.cpp 0
-
- The behavior of waitForFinished() can be changed using the
- setCancelOnWait() function. Calling setCancelOnWait(true) will cause
- waitForFinished() to cancel all futures before waiting for them to finish.
- You can query the status of the cancel-on-wait feature using the
- cancelOnWait() function.
-
- \sa QFuture, QFutureWatcher, {Concurrent Programming}{Qt Concurrent}
-*/
-
-/*!
- \fn QFutureSynchronizer::QFutureSynchronizer()
-
- Constructs a QFutureSynchronizer.
-*/
-
-/*!
- \fn QFutureSynchronizer::QFutureSynchronizer(const QFuture<T> &future)
-
- Constructs a QFutureSynchronizer and begins watching \a future by calling
- addFuture().
-
- \sa addFuture()
-*/
-
-/*!
- \fn QFutureSynchronizer::~QFutureSynchronizer()
-
- Calls waitForFinished() function to ensure that all futures have finished
- before destroying this QFutureSynchronizer.
-
- \sa waitForFinished()
-*/
-
-/*!
- \fn void QFutureSynchronizer::setFuture(const QFuture<T> &future)
-
- Sets \a future to be the only future managed by this QFutureSynchronizer.
- This is a convenience function that calls waitForFinished(),
- then clearFutures(), and finally passes \a future to addFuture().
-
- \sa addFuture(), waitForFinished(), clearFutures()
-*/
-
-/*!
- \fn void QFutureSynchronizer::addFuture(const QFuture<T> &future)
-
- Adds \a future to the list of managed futures.
-
- \sa futures()
-*/
-
-/*!
- \fn void QFutureSynchronizer::waitForFinished()
-
- Waits for all futures to finish. If cancelOnWait() returns true, each
- future is canceled before waiting for them to finish.
-
- \sa cancelOnWait(), setCancelOnWait()
-*/
-
-/*!
- \fn void QFutureSynchronizer::clearFutures()
-
- Removes all managed futures from this QFutureSynchronizer.
-
- \sa addFuture(), setFuture()
-*/
-
-/*!
- \fn QList<QFuture<T> > QFutureSynchronizer::futures() const
-
- Returns a list of all managed futures.
-
- \sa addFuture(), setFuture()
-*/
-
-/*!
- \fn void QFutureSynchronizer::setCancelOnWait(bool enabled)
-
- Enables or disables the cancel-on-wait feature based on the \a enabled
- argument. If \a enabled is true, the waitForFinished() function will cancel
- all futures before waiting for them to finish.
-
- \sa waitForFinished()
-*/
-
-/*!
- \fn bool QFutureSynchronizer::cancelOnWait() const
-
- Returns true if the cancel-on-wait feature is enabled; otherwise returns
- false. If cancel-on-wait is enabled, the waitForFinished() function will
- cancel all futures before waiting for them to finish.
-
- \sa waitForFinished()
-*/
diff --git a/src/corelib/concurrent/qfuturesynchronizer.h b/src/corelib/concurrent/qfuturesynchronizer.h
deleted file mode 100644
index 4fc1987f65..0000000000
--- a/src/corelib/concurrent/qfuturesynchronizer.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QFUTRUESYNCHRONIZER_H
-#define QFUTRUESYNCHRONIZER_H
-
-#include <QtCore/qfuture.h>
-
-#ifndef QT_NO_CONCURRENT
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-template <typename T>
-class QFutureSynchronizer
-{
- Q_DISABLE_COPY(QFutureSynchronizer)
-
-public:
- QFutureSynchronizer() : m_cancelOnWait(false) { }
- explicit QFutureSynchronizer(const QFuture<T> &future)
- : m_cancelOnWait(false)
- { addFuture(future); }
- ~QFutureSynchronizer() { waitForFinished(); }
-
- void setFuture(const QFuture<T> &future)
- {
- waitForFinished();
- m_futures.clear();
- addFuture(future);
- }
-
- void addFuture(const QFuture<T> &future)
- {
- m_futures.append(future);
- }
-
- void waitForFinished()
- {
- if (m_cancelOnWait) {
- for (int i = 0; i < m_futures.count(); ++i) {
- m_futures[i].cancel();
- }
- }
-
- for (int i = 0; i < m_futures.count(); ++i) {
- m_futures[i].waitForFinished();
- }
- }
-
- void clearFutures()
- {
- m_futures.clear();
- }
-
- QList<QFuture<T> > futures() const
- {
- return m_futures;
- }
-
- void setCancelOnWait(bool enabled)
- {
- m_cancelOnWait = enabled;
- }
-
- bool cancelOnWait() const
- {
- return m_cancelOnWait;
- }
-
-protected:
- QList<QFuture<T> > m_futures;
- bool m_cancelOnWait;
-};
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif // QFUTRUESYNCHRONIZER_H
diff --git a/src/corelib/concurrent/qfuturewatcher.cpp b/src/corelib/concurrent/qfuturewatcher.cpp
deleted file mode 100644
index e0f197c7e7..0000000000
--- a/src/corelib/concurrent/qfuturewatcher.cpp
+++ /dev/null
@@ -1,592 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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 "qfuturewatcher.h"
-
-#ifndef QT_NO_QFUTURE
-
-#include <QtCore/qcoreevent.h>
-#include <QtCore/qcoreapplication.h>
-#include <QtCore/qthread.h>
-
-#include "qfuturewatcher_p.h"
-
-QT_BEGIN_NAMESPACE
-
-/*! \class QFutureWatcher
- \reentrant
- \since 4.4
-
- \ingroup thread
-
- \brief The QFutureWatcher class allows monitoring a QFuture using signals
- and slots.
-
- QFutureWatcher provides information and notifications about a QFuture. Use
- the setFuture() function to start watching a particular QFuture. The
- future() function returns the future set with setFuture().
-
- For convenience, several of QFuture's functions are also available in
- QFutureWatcher: progressValue(), progressMinimum(), progressMaximum(),
- progressText(), isStarted(), isFinished(), isRunning(), isCanceled(),
- isPaused(), waitForFinished(), result(), and resultAt(). The cancel(),
- setPaused(), pause(), resume(), and togglePaused() functions are slots in
- QFutureWatcher.
-
- Status changes are reported via the started(), finished(), canceled(),
- paused(), resumed(), resultReadyAt(), and resultsReadyAt() signals.
- Progress information is provided from the progressRangeChanged(),
- void progressValueChanged(), and progressTextChanged() signals.
-
- Throttling control is provided by the setPendingResultsLimit() function.
- When the number of pending resultReadyAt() or resultsReadyAt() signals
- exceeds the limit, the computation represented by the future will be
- throttled automatically. The computation will resume once the number of
- pending signals drops below the limit.
-
- Example: Starting a computation and getting a slot callback when it's
- finished:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qfuturewatcher.cpp 0
-
- Be aware that not all asynchronous computations can be canceled or paused.
- For example, the future returned by QtConcurrent::run() cannot be
- canceled; but the future returned by QtConcurrent::mappedReduced() can.
-
- QFutureWatcher<void> is specialized to not contain any of the result
- fetching functions. Any QFuture<T> can be watched by a
- QFutureWatcher<void> as well. This is useful if only status or progress
- information is needed; not the actual result data.
-
- \sa QFuture, {Concurrent Programming}{Qt Concurrent}
-*/
-
-/*! \fn QFutureWatcher::QFutureWatcher(QObject *parent)
-
- Constructs a new QFutureWatcher with the given \a parent.
-*/
-QFutureWatcherBase::QFutureWatcherBase(QObject *parent)
- :QObject(*new QFutureWatcherBasePrivate, parent)
-{ }
-
-/*! \fn QFutureWatcher::~QFutureWatcher()
-
- Destroys the QFutureWatcher.
-*/
-
-/*! \fn void QFutureWatcher::cancel()
-
- Cancels the asynchronous computation represented by the future(). Note that
- the cancelation is asynchronous. Use waitForFinished() after calling
- cancel() when you need synchronous cancelation.
-
- Currently available results may still be accessed on a canceled QFuture,
- but new results will \e not become available after calling this function.
- Also, this QFutureWatcher will not deliver progress and result ready
- signals once canceled. This includes the progressValueChanged(),
- progressRangeChanged(), progressTextChanged(), resultReadyAt(), and
- resultsReadyAt() signals.
-
- Be aware that not all asynchronous computations can be canceled. For
- example, the QFuture returned by QtConcurrent::run() cannot be canceled;
- but the QFuture returned by QtConcurrent::mappedReduced() can.
-*/
-void QFutureWatcherBase::cancel()
-{
- futureInterface().cancel();
-}
-
-/*! \fn void QFutureWatcher::setPaused(bool paused)
-
- If \a paused is true, this function pauses the asynchronous computation
- represented by the future(). If the computation is already paused, this
- function does nothing. This QFutureWatcher will stop delivering progress
- and result ready signals while the future is paused. Signal delivery will
- continue once the computation is resumed.
-
- If \a paused is false, this function resumes the asynchronous computation.
- If the computation was not previously paused, this function does nothing.
-
- Be aware that not all computations can be paused. For example, the
- QFuture returned by QtConcurrent::run() cannot be paused; but the QFuture
- returned by QtConcurrent::mappedReduced() can.
-
- \sa pause(), resume(), togglePaused()
-*/
-void QFutureWatcherBase::setPaused(bool paused)
-{
- futureInterface().setPaused(paused);
-}
-
-/*! \fn void QFutureWatcher::pause()
-
- Pauses the asynchronous computation represented by the future(). This is a
- convenience method that simply calls setPaused(true).
-
- \sa resume()
-*/
-void QFutureWatcherBase::pause()
-{
- futureInterface().setPaused(true);
-}
-
-/*! \fn void QFutureWatcher::resume()
-
- Resumes the asynchronous computation represented by the future(). This is
- a convenience method that simply calls setPaused(false).
-
- \sa pause()
-*/
-void QFutureWatcherBase::resume()
-{
- futureInterface().setPaused(false);
-}
-
-/*! \fn void QFutureWatcher::togglePaused()
-
- Toggles the paused state of the asynchronous computation. In other words,
- if the computation is currently paused, calling this function resumes it;
- if the computation is running, it becomes paused. This is a convenience
- method for calling setPaused(!isPaused()).
-
- \sa setPaused(), pause(), resume()
-*/
-void QFutureWatcherBase::togglePaused()
-{
- futureInterface().togglePaused();
-}
-
-/*! \fn int QFutureWatcher::progressValue() const
-
- Returns the current progress value, which is between the progressMinimum()
- and progressMaximum().
-
- \sa progressMinimum(), progressMaximum()
-*/
-int QFutureWatcherBase::progressValue() const
-{
- return futureInterface().progressValue();
-}
-
-/*! \fn int QFutureWatcher::progressMinimum() const
-
- Returns the minimum progressValue().
-
- \sa progressValue(), progressMaximum()
-*/
-int QFutureWatcherBase::progressMinimum() const
-{
- return futureInterface().progressMinimum();
-}
-
-/*! \fn int QFutureWatcher::progressMaximum() const
-
- Returns the maximum progressValue().
-
- \sa progressValue(), progressMinimum()
-*/
-int QFutureWatcherBase::progressMaximum() const
-{
- return futureInterface().progressMaximum();
-}
-
-/*! \fn QString QFutureWatcher::progressText() const
-
- Returns the (optional) textual representation of the progress as reported
- by the asynchronous computation.
-
- Be aware that not all computations provide a textual representation of the
- progress, and as such, this function may return an empty string.
-*/
-QString QFutureWatcherBase::progressText() const
-{
- return futureInterface().progressText();
-}
-
-/*! \fn bool QFutureWatcher::isStarted() const
-
- Returns true if the asynchronous computation represented by the future()
- has been started; otherwise returns false.
-*/
-bool QFutureWatcherBase::isStarted() const
-{
- return futureInterface().queryState(QFutureInterfaceBase::Started);
-}
-
-/*! \fn bool QFutureWatcher::isFinished() const
-
- Returns true if the asynchronous computation represented by the future()
- has finished; otherwise returns false.
-*/
-bool QFutureWatcherBase::isFinished() const
-{
- Q_D(const QFutureWatcherBase);
- return d->finished;
-}
-
-/*! \fn bool QFutureWatcher::isRunning() const
-
- Returns true if the asynchronous computation represented by the future()
- is currently running; otherwise returns false.
-*/
-bool QFutureWatcherBase::isRunning() const
-{
- return futureInterface().queryState(QFutureInterfaceBase::Running);
-}
-
-/*! \fn bool QFutureWatcher::isCanceled() const
-
- Returns true if the asynchronous computation has been canceled with the
- cancel() function; otherwise returns false.
-
- Be aware that the computation may still be running even though this
- function returns true. See cancel() for more details.
-*/
-bool QFutureWatcherBase::isCanceled() const
-{
- return futureInterface().queryState(QFutureInterfaceBase::Canceled);
-}
-
-/*! \fn bool QFutureWatcher::isPaused() const
-
- Returns true if the asynchronous computation has been paused with the
- pause() function; otherwise returns false.
-
- Be aware that the computation may still be running even though this
- function returns true. See setPaused() for more details.
-
- \sa setPaused(), togglePaused()
-*/
-bool QFutureWatcherBase::isPaused() const
-{
- return futureInterface().queryState(QFutureInterfaceBase::Paused);
-}
-
-/*! \fn void QFutureWatcher::waitForFinished()
-
- Waits for the asynchronous computation to finish (including cancel()ed
- computations).
-*/
-void QFutureWatcherBase::waitForFinished()
-{
- futureInterface().waitForFinished();
-}
-
-/*! \fn void QFutureWatcher::setPendingResultsLimit(int limit)
-
- The setPendingResultsLimit() provides throttling control. When the number
- of pending resultReadyAt() or resultsReadyAt() signals exceeds the
- \a limit, the computation represented by the future will be throttled
- automatically. The computation will resume once the number of pending
- signals drops below the \a limit.
-*/
-
-bool QFutureWatcherBase::event(QEvent *event)
-{
- Q_D(QFutureWatcherBase);
- if (event->type() == QEvent::FutureCallOut) {
- QFutureCallOutEvent *callOutEvent = static_cast<QFutureCallOutEvent *>(event);
-
- if (futureInterface().isPaused()) {
- d->pendingCallOutEvents.append(callOutEvent->clone());
- return true;
- }
-
- if (callOutEvent->callOutType == QFutureCallOutEvent::Resumed
- && !d->pendingCallOutEvents.isEmpty()) {
- // send the resume
- d->sendCallOutEvent(callOutEvent);
-
- // next send all pending call outs
- for (int i = 0; i < d->pendingCallOutEvents.count(); ++i)
- d->sendCallOutEvent(d->pendingCallOutEvents.at(i));
- qDeleteAll(d->pendingCallOutEvents);
- d->pendingCallOutEvents.clear();
- } else {
- d->sendCallOutEvent(callOutEvent);
- }
- return true;
- }
- return QObject::event(event);
-}
-
-void QFutureWatcherBase::setPendingResultsLimit(int limit)
-{
- Q_D(QFutureWatcherBase);
- d->maximumPendingResultsReady = limit;
-}
-
-void QFutureWatcherBase::connectNotify(const char * signal)
-{
- Q_D(QFutureWatcherBase);
- if (qstrcmp(signal, SIGNAL(resultReadyAt(int))) == 0)
- d->resultAtConnected.ref();
-#ifndef QT_NO_DEBUG
- if (qstrcmp(signal, SIGNAL(finished())) == 0) {
- if (futureInterface().isRunning()) {
- //connections should be established before calling stFuture to avoid race.
- // (The future could finish before the connection is made.)
- qWarning("QFutureWatcher::connect: connecting after calling setFuture() is likely to produce race");
- }
- }
-#endif
-}
-
-void QFutureWatcherBase::disconnectNotify(const char * signal)
-{
- Q_D(QFutureWatcherBase);
- if (qstrcmp(signal, SIGNAL(resultReadyAt(int))) == 0)
- d->resultAtConnected.deref();
-}
-
-/*!
- \internal
-*/
-QFutureWatcherBasePrivate::QFutureWatcherBasePrivate()
- : maximumPendingResultsReady(QThread::idealThreadCount() * 2),
- resultAtConnected(0)
-{ }
-
-/*!
- \internal
-*/
-void QFutureWatcherBase::connectOutputInterface()
-{
- futureInterface().d->connectOutputInterface(d_func());
-}
-
-/*!
- \internal
-*/
-void QFutureWatcherBase::disconnectOutputInterface(bool pendingAssignment)
-{
- if (pendingAssignment) {
- Q_D(QFutureWatcherBase);
- d->pendingResultsReady.store(0);
- qDeleteAll(d->pendingCallOutEvents);
- d->pendingCallOutEvents.clear();
- d->finished = false;
- }
-
- futureInterface().d->disconnectOutputInterface(d_func());
-}
-
-void QFutureWatcherBasePrivate::postCallOutEvent(const QFutureCallOutEvent &callOutEvent)
-{
- Q_Q(QFutureWatcherBase);
-
- if (callOutEvent.callOutType == QFutureCallOutEvent::ResultsReady) {
- if (pendingResultsReady.fetchAndAddRelaxed(1) >= maximumPendingResultsReady)
- q->futureInterface().d->internal_setThrottled(true);
- }
-
- QCoreApplication::postEvent(q, callOutEvent.clone());
-}
-
-void QFutureWatcherBasePrivate::callOutInterfaceDisconnected()
-{
- QCoreApplication::removePostedEvents(q_func(), QEvent::FutureCallOut);
-}
-
-void QFutureWatcherBasePrivate::sendCallOutEvent(QFutureCallOutEvent *event)
-{
- Q_Q(QFutureWatcherBase);
-
- switch (event->callOutType) {
- case QFutureCallOutEvent::Started:
- emit q->started();
- break;
- case QFutureCallOutEvent::Finished:
- finished = true;
- emit q->finished();
- break;
- case QFutureCallOutEvent::Canceled:
- pendingResultsReady.store(0);
- emit q->canceled();
- break;
- case QFutureCallOutEvent::Paused:
- if (q->futureInterface().isCanceled())
- break;
- emit q->paused();
- break;
- case QFutureCallOutEvent::Resumed:
- if (q->futureInterface().isCanceled())
- break;
- emit q->resumed();
- break;
- case QFutureCallOutEvent::ResultsReady: {
- if (q->futureInterface().isCanceled())
- break;
-
- if (pendingResultsReady.fetchAndAddRelaxed(-1) <= maximumPendingResultsReady)
- q->futureInterface().setThrottled(false);
-
- const int beginIndex = event->index1;
- const int endIndex = event->index2;
-
- emit q->resultsReadyAt(beginIndex, endIndex);
-
- if (resultAtConnected.load() <= 0)
- break;
-
- for (int i = beginIndex; i < endIndex; ++i)
- emit q->resultReadyAt(i);
-
- } break;
- case QFutureCallOutEvent::Progress:
- if (q->futureInterface().isCanceled())
- break;
-
- emit q->progressValueChanged(event->index1);
- if (!event->text.isNull()) // ###
- q->progressTextChanged(event->text);
- break;
- case QFutureCallOutEvent::ProgressRange:
- emit q->progressRangeChanged(event->index1, event->index2);
- break;
- default: break;
- }
-}
-
-
-/*! \fn const T &QFutureWatcher::result() const
-
- Returns the first result in the future(). If the result is not immediately
- available, this function will block and wait for the result to become
- available. This is a convenience method for calling resultAt(0).
-
- \sa resultAt()
-*/
-
-/*! \fn const T &QFutureWatcher::resultAt(int index) const
-
- Returns the result at \a index in the future(). If the result is not
- immediately available, this function will block and wait for the result to
- become available.
-
- \sa result()
-*/
-
-/*! \fn void QFutureWatcher::setFuture(const QFuture<T> &future)
-
- Starts watching the given \a future.
-
- One of the signals might be emitted for the current state of the
- \a future. For example, if the future is already stopped, the
- finished signal will be emitted.
-
- To avoid a race condition, it is important to call this function
- \e after doing the connections.
-*/
-
-/*! \fn QFuture<T> QFutureWatcher::future() const
-
- Returns the watched future.
-*/
-
-/*! \fn void QFutureWatcher::started()
-
- This signal is emitted when this QFutureWatcher starts watching the future
- set with setFuture().
-*/
-
-/*!
- \fn void QFutureWatcher::finished()
- This signal is emitted when the watched future finishes.
-*/
-
-/*!
- \fn void QFutureWatcher::canceled()
- This signal is emitted if the watched future is canceled.
-*/
-
-/*! \fn void QFutureWatcher::paused()
- This signal is emitted when the watched future is paused.
-*/
-
-/*! \fn void QFutureWatcher::resumed()
- This signal is emitted when the watched future is resumed.
-*/
-
-/*!
- \fn void QFutureWatcher::progressRangeChanged(int minimum, int maximum)
-
- The progress range for the watched future has changed to \a minimum and
- \a maximum
-*/
-
-/*!
- \fn void QFutureWatcher::progressValueChanged(int progressValue)
-
- This signal is emitted when the watched future reports progress,
- \a progressValue gives the current progress. In order to avoid overloading
- the GUI event loop, QFutureWatcher limits the progress signal emission
- rate. This means that listeners connected to this slot might not get all
- progress reports the future makes. The last progress update (where
- \a progressValue equals the maximum value) will always be delivered.
-*/
-
-/*! \fn void QFutureWatcher::progressTextChanged(const QString &progressText)
-
- This signal is emitted when the watched future reports textual progress
- information, \a progressText.
-*/
-
-/*!
- \fn void QFutureWatcher::resultReadyAt(int index)
-
- This signal is emitted when the watched future reports a ready result at
- \a index. If the future reports multiple results, the index will indicate
- which one it is. Results can be reported out-of-order. To get the result,
- call future().result(index);
-*/
-
-/*!
- \fn void QFutureWatcher::resultsReadyAt(int beginIndex, int endIndex);
-
- This signal is emitted when the watched future reports ready results.
- The results are indexed from \a beginIndex to \a endIndex.
-
-*/
-
-QT_END_NAMESPACE
-
-#endif // QT_NO_CONCURRENT
diff --git a/src/corelib/concurrent/qfuturewatcher.h b/src/corelib/concurrent/qfuturewatcher.h
deleted file mode 100644
index efd7d94101..0000000000
--- a/src/corelib/concurrent/qfuturewatcher.h
+++ /dev/null
@@ -1,222 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QFUTUREWATCHER_H
-#define QFUTUREWATCHER_H
-
-#include <QtCore/qfuture.h>
-
-#ifndef QT_NO_QFUTURE
-
-#include <QtCore/qobject.h>
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-class QEvent;
-
-class QFutureWatcherBasePrivate;
-class Q_CORE_EXPORT QFutureWatcherBase : public QObject
-{
- Q_OBJECT
- Q_DECLARE_PRIVATE(QFutureWatcherBase)
-
-public:
- QFutureWatcherBase(QObject *parent = 0);
-
- int progressValue() const;
- int progressMinimum() const;
- int progressMaximum() const;
- QString progressText() const;
-
- bool isStarted() const;
- bool isFinished() const;
- bool isRunning() const;
- bool isCanceled() const;
- bool isPaused() const;
-
- void waitForFinished();
-
- void setPendingResultsLimit(int limit);
-
- bool event(QEvent *event);
-
-Q_SIGNALS:
- void started();
- void finished();
- void canceled();
- void paused();
- void resumed();
- void resultReadyAt(int resultIndex);
- void resultsReadyAt(int beginIndex, int endIndex);
- void progressRangeChanged(int minimum, int maximum);
- void progressValueChanged(int progressValue);
- void progressTextChanged(const QString &progressText);
-
-public Q_SLOTS:
- void cancel();
- void setPaused(bool paused);
- void pause();
- void resume();
- void togglePaused();
-
-protected:
- void connectNotify (const char * signal);
- void disconnectNotify (const char * signal);
-
- // called from setFuture() implemented in template sub-classes
- void connectOutputInterface();
- void disconnectOutputInterface(bool pendingAssignment = false);
-
-private:
- // implemented in the template sub-classes
- virtual const QFutureInterfaceBase &futureInterface() const = 0;
- virtual QFutureInterfaceBase &futureInterface() = 0;
-};
-
-template <typename T>
-class QFutureWatcher : public QFutureWatcherBase
-{
-public:
- QFutureWatcher(QObject *_parent = 0)
- : QFutureWatcherBase(_parent)
- { }
- ~QFutureWatcher()
- { disconnectOutputInterface(); }
-
- void setFuture(const QFuture<T> &future);
- QFuture<T> future() const
- { return m_future; }
-
- T result() const { return m_future.result(); }
- T resultAt(int index) const { return m_future.resultAt(index); }
-
-#ifdef qdoc
- int progressValue() const;
- int progressMinimum() const;
- int progressMaximum() const;
- QString progressText() const;
-
- bool isStarted() const;
- bool isFinished() const;
- bool isRunning() const;
- bool isCanceled() const;
- bool isPaused() const;
-
- void waitForFinished();
-
- void setPendingResultsLimit(int limit);
-
-Q_SIGNALS:
- void started();
- void finished();
- void canceled();
- void paused();
- void resumed();
- void resultReadyAt(int resultIndex);
- void resultsReadyAt(int beginIndex, int endIndex);
- void progressRangeChanged(int minimum, int maximum);
- void progressValueChanged(int progressValue);
- void progressTextChanged(const QString &progressText);
-
-public Q_SLOTS:
- void cancel();
- void setPaused(bool paused);
- void pause();
- void resume();
- void togglePaused();
-#endif
-
-private:
- QFuture<T> m_future;
- const QFutureInterfaceBase &futureInterface() const { return m_future.d; }
- QFutureInterfaceBase &futureInterface() { return m_future.d; }
-};
-
-template <typename T>
-Q_INLINE_TEMPLATE void QFutureWatcher<T>::setFuture(const QFuture<T> &_future)
-{
- if (_future == m_future)
- return;
-
- disconnectOutputInterface(true);
- m_future = _future;
- connectOutputInterface();
-}
-
-template <>
-class QFutureWatcher<void> : public QFutureWatcherBase
-{
-public:
- QFutureWatcher(QObject *_parent = 0)
- : QFutureWatcherBase(_parent)
- { }
- ~QFutureWatcher()
- { disconnectOutputInterface(); }
-
- void setFuture(const QFuture<void> &future);
- QFuture<void> future() const
- { return m_future; }
-
-private:
- QFuture<void> m_future;
- const QFutureInterfaceBase &futureInterface() const { return m_future.d; }
- QFutureInterfaceBase &futureInterface() { return m_future.d; }
-};
-
-Q_INLINE_TEMPLATE void QFutureWatcher<void>::setFuture(const QFuture<void> &_future)
-{
- if (_future == m_future)
- return;
-
- disconnectOutputInterface(true);
- m_future = _future;
- connectOutputInterface();
-}
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif // QFUTUREWATCHER_H
diff --git a/src/corelib/concurrent/qfuturewatcher_p.h b/src/corelib/concurrent/qfuturewatcher_p.h
deleted file mode 100644
index 4898779c33..0000000000
--- a/src/corelib/concurrent/qfuturewatcher_p.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QFUTUREWATCHER_P_H
-#define QFUTUREWATCHER_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qfutureinterface_p.h"
-#include <qlist.h>
-
-#ifndef QT_NO_QFUTURE
-
-#include <private/qobject_p.h>
-
-QT_BEGIN_NAMESPACE
-
-class QFutureWatcherBase;
-class QFutureWatcherBasePrivate : public QObjectPrivate,
- public QFutureCallOutInterface
-{
- Q_DECLARE_PUBLIC(QFutureWatcherBase)
-
-public:
- QFutureWatcherBasePrivate();
-
- void postCallOutEvent(const QFutureCallOutEvent &callOutEvent);
- void callOutInterfaceDisconnected();
-
- void sendCallOutEvent(QFutureCallOutEvent *event);
-
- QList<QFutureCallOutEvent *> pendingCallOutEvents;
- QAtomicInt pendingResultsReady;
- int maximumPendingResultsReady;
-
- QAtomicInt resultAtConnected;
- bool finished;
-};
-
-QT_END_NAMESPACE
-
-#endif // QT_NO_QFUTURE
-#endif
diff --git a/src/corelib/concurrent/qrunnable.cpp b/src/corelib/concurrent/qrunnable.cpp
deleted file mode 100644
index e5f7dc0efb..0000000000
--- a/src/corelib/concurrent/qrunnable.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-/*!
- \class QRunnable
- \since 4.4
- \brief The QRunnable class is the base class for all runnable objects.
-
- \ingroup thread
-
- The QRunnable class is an interface for representing a task or
- piece of code that needs to be executed, represented by your
- reimplementation of the run() function.
-
- You can use QThreadPool to execute your code in a separate
- thread. QThreadPool deletes the QRunnable automatically if
- autoDelete() returns true (the default). Use setAutoDelete() to
- change the auto-deletion flag.
-
- QThreadPool supports executing the same QRunnable more than once
- by calling QThreadPool::tryStart(this) from within the run() function.
- If autoDelete is enabled the QRunnable will be deleted when
- the last thread exits the run function. Calling QThreadPool::start()
- multiple times with the same QRunnable when autoDelete is enabled
- creates a race condition and is not recommended.
-
- \sa QThreadPool
-*/
-
-/*! \fn QRunnable::run()
- Implement this pure virtual function in your subclass.
-*/
-
-/*! \fn QRunnable::QRunnable()
- Constructs a QRunnable. Auto-deletion is enabled by default.
-
- \sa autoDelete(), setAutoDelete()
-*/
-
-/*! \fn QRunnable::~QRunnable()
- QRunnable virtual destructor.
-*/
-
-/*! \fn bool QRunnable::autoDelete() const
-
- Returns true is auto-deletion is enabled; false otherwise.
-
- If auto-deletion is enabled, QThreadPool will automatically delete
- this runnable after calling run(); otherwise, ownership remains
- with the application programmer.
-
- \sa setAutoDelete(), QThreadPool
-*/
-
-/*! \fn bool QRunnable::setAutoDelete(bool autoDelete)
-
- Enables auto-deletion if \a autoDelete is true; otherwise
- auto-deletion is disabled.
-
- If auto-deletion is enabled, QThreadPool will automatically delete
- this runnable after calling run(); otherwise, ownership remains
- with the application programmer.
-
- Note that this flag must be set before calling
- QThreadPool::start(). Calling this function after
- QThreadPool::start() results in undefined behavior.
-
- \sa autoDelete(), QThreadPool
-*/
diff --git a/src/corelib/concurrent/qrunnable.h b/src/corelib/concurrent/qrunnable.h
deleted file mode 100644
index d4b3bda956..0000000000
--- a/src/corelib/concurrent/qrunnable.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QRUNNABLE_H
-#define QRUNNABLE_H
-
-#include <QtCore/qglobal.h>
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-class QRunnable
-{
- int ref;
-
- friend class QThreadPool;
- friend class QThreadPoolPrivate;
- friend class QThreadPoolThread;
-
-public:
- virtual void run() = 0;
-
- QRunnable() : ref(0) { }
- virtual ~QRunnable() { }
-
- bool autoDelete() const { return ref != -1; }
- void setAutoDelete(bool _autoDelete) { ref = _autoDelete ? 0 : -1; }
-};
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif
diff --git a/src/corelib/concurrent/qtconcurrentcompilertest.h b/src/corelib/concurrent/qtconcurrentcompilertest.h
deleted file mode 100644
index b6385b5a8f..0000000000
--- a/src/corelib/concurrent/qtconcurrentcompilertest.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QTCONCURRENT_COMPILERTEST_H
-#define QTCONCURRENT_COMPILERTEST_H
-
-#include <QtCore/qglobal.h>
-
-#ifndef QT_NO_CONCURRENT
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-#if defined (Q_CC_MSVC) && (_MSC_VER < 1300)
-# define QT_TYPENAME
-#else
-# define QT_TYPENAME typename
-#endif
-
-namespace QtPrivate {
-
-template<class T>
-class HasResultType {
- typedef char Yes;
- typedef void *No;
- template<typename U> static Yes test(int, const typename U::result_type * = 0);
- template<typename U> static No test(double);
-public:
- enum { Value = (sizeof(test<T>(0)) == sizeof(Yes)) };
-};
-
-}
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif
diff --git a/src/corelib/concurrent/qtconcurrentexception.cpp b/src/corelib/concurrent/qtconcurrentexception.cpp
deleted file mode 100644
index 3bc4c05684..0000000000
--- a/src/corelib/concurrent/qtconcurrentexception.cpp
+++ /dev/null
@@ -1,211 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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 "qtconcurrentexception.h"
-#include "QtCore/qshareddata.h"
-
-#ifndef QT_NO_QFUTURE
-#ifndef QT_NO_EXCEPTIONS
-
-QT_BEGIN_NAMESPACE
-
-/*!
- \class QtConcurrent::Exception
- \brief The Exception class provides a base class for exceptions that can transferred across threads.
- \since 4.4
-
- Qt Concurrent supports throwing and catching exceptions across thread
- boundaries, provided that the exception inherit from QtConcurrent::Exception
- and implement two helper functions:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp 0
-
- QtConcurrent::Exception subclasses must be thrown by value and
- caught by reference:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp 1
-
- If you throw an exception that is not a subclass of QtConcurrent::Exception,
- the Qt Concurrent functions will throw a QtConcurrent::UnhandledException
- in the receiver thread.
-
- When using QFuture, transferred exceptions will be thrown when calling the following functions:
- \list
- \o QFuture::waitForFinished()
- \o QFuture::result()
- \o QFuture::resultAt()
- \o QFuture::results()
- \endlist
-*/
-
-/*!
- \fn QtConcurrent::Exception::raise() const
- In your QtConcurrent::Exception subclass, reimplement raise() like this:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp 2
-*/
-
-/*!
- \fn QtConcurrent::Exception::clone() const
- In your QtConcurrent::Exception subclass, reimplement clone() like this:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentexception.cpp 3
-*/
-
-/*!
- \class QtConcurrent::UnhandledException
-
- \brief The UnhandledException class represents an unhandled exception in a worker thread.
- \since 4.4
-
- If a worker thread throws an exception that is not a subclass of QtConcurrent::Exception,
- the Qt Concurrent functions will throw a QtConcurrent::UnhandledException
- on the receiver thread side.
-
- Inheriting from this class is not supported.
-*/
-
-/*!
- \fn QtConcurrent::UnhandledException::raise() const
- \internal
-*/
-
-/*!
- \fn QtConcurrent::UnhandledException::clone() const
- \internal
-*/
-
-namespace QtConcurrent
-{
-
-void Exception::raise() const
-{
- Exception e = *this;
- throw e;
-}
-
-Exception *Exception::clone() const
-{
- return new Exception(*this);
-}
-
-void UnhandledException::raise() const
-{
- UnhandledException e = *this;
- throw e;
-}
-
-Exception *UnhandledException::clone() const
-{
- return new UnhandledException(*this);
-}
-
-#ifndef qdoc
-
-namespace internal {
-
-class Base : public QSharedData
-{
-public:
- Base(Exception *exception)
- : exception(exception), hasThrown(false) { }
- ~Base() { delete exception; }
-
- Exception *exception;
- bool hasThrown;
-};
-
-ExceptionHolder::ExceptionHolder(Exception *exception)
-: base(new Base(exception)) {}
-
-ExceptionHolder::ExceptionHolder(const ExceptionHolder &other)
-: base(other.base)
-{}
-
-void ExceptionHolder::operator=(const ExceptionHolder &other)
-{
- base = other.base;
-}
-
-ExceptionHolder::~ExceptionHolder()
-{}
-
-Exception *ExceptionHolder::exception() const
-{
- return base->exception;
-}
-
-void ExceptionStore::setException(const Exception &e)
-{
- if (hasException() == false)
- exceptionHolder = ExceptionHolder(e.clone());
-}
-
-bool ExceptionStore::hasException() const
-{
- return (exceptionHolder.exception() != 0);
-}
-
-ExceptionHolder ExceptionStore::exception()
-{
- return exceptionHolder;
-}
-
-void ExceptionStore::throwPossibleException()
-{
- if (hasException() ) {
- exceptionHolder.base->hasThrown = true;
- exceptionHolder.exception()->raise();
- }
-}
-
-bool ExceptionStore::hasThrown() const { return exceptionHolder.base->hasThrown; }
-
-} // namespace internal
-
-#endif //qdoc
-
-} // namespace QtConcurrent
-
-QT_END_NAMESPACE
-
-#endif // QT_NO_EXCEPTIONS
-#endif // QT_NO_CONCURRENT
diff --git a/src/corelib/concurrent/qtconcurrentexception.h b/src/corelib/concurrent/qtconcurrentexception.h
deleted file mode 100644
index c926d9ffe7..0000000000
--- a/src/corelib/concurrent/qtconcurrentexception.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QTCONCURRENT_EXCEPTION_H
-#define QTCONCURRENT_EXCEPTION_H
-
-#include <QtCore/qglobal.h>
-
-#ifndef QT_NO_QFUTURE
-
-#include <QtCore/qatomic.h>
-#include <QtCore/qshareddata.h>
-
-#ifndef QT_NO_EXCEPTIONS
-# include <exception>
-#endif
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-namespace QtConcurrent
-{
-
-#ifndef QT_NO_EXCEPTIONS
-
-class Q_CORE_EXPORT Exception : public std::exception
-{
-public:
- virtual void raise() const;
- virtual Exception *clone() const;
-};
-
-class Q_CORE_EXPORT UnhandledException : public Exception
-{
-public:
- void raise() const;
- Exception *clone() const;
-};
-
-namespace internal {
-
-class Base;
-class ExceptionHolder
-{
-public:
- ExceptionHolder(Exception *exception = 0);
- ExceptionHolder(const ExceptionHolder &other);
- void operator=(const ExceptionHolder &other);
- ~ExceptionHolder();
- Exception *exception() const;
- QExplicitlySharedDataPointer<Base> base;
-};
-
-class Q_CORE_EXPORT ExceptionStore
-{
-public:
- void setException(const Exception &e);
- bool hasException() const;
- ExceptionHolder exception();
- void throwPossibleException();
- bool hasThrown() const;
- ExceptionHolder exceptionHolder;
-};
-
-} // namespace internal
-
-#else // QT_NO_EXCEPTIONS
-
-namespace internal {
-
-class Q_CORE_EXPORT ExceptionStore
-{
-public:
- ExceptionStore() { }
- inline void throwPossibleException() const {}
-};
-
-} // namespace internal
-
-#endif
-
-} // namespace QtConcurrent
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif
diff --git a/src/corelib/concurrent/qtconcurrentfilter.cpp b/src/corelib/concurrent/qtconcurrentfilter.cpp
deleted file mode 100644
index 0b3ddd829d..0000000000
--- a/src/corelib/concurrent/qtconcurrentfilter.cpp
+++ /dev/null
@@ -1,330 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-/*!
- \headerfile <QtConcurrentFilter>
- \title Concurrent Filter and Filter-Reduce
- \ingroup thread
-
- \brief The <QtConcurrentFilter> header provides concurrent Filter and
- Filter-Reduce.
-
- These functions are a part of the \l {Concurrent Programming}{Qt Concurrent} framework.
-
- The QtConcurrent::filter(), QtConcurrent::filtered() and
- QtConcurrent::filteredReduced() functions filter items in a sequence such
- as a QList or a QVector in parallel. QtConcurrent::filter() modifies a
- sequence in-place, QtConcurrent::filtered() returns a new sequence
- containing the filtered content, and QtConcurrent::filteredReduced()
- returns a single result.
-
- Each of the above functions have a blocking variant that returns the final
- result instead of a QFuture. You use them in the same way as the
- asynchronous variants.
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 6
-
- Note that the result types above are not QFuture objects, but real result
- types (in this case, QStringList and QSet<QString>).
-
- \section1 Concurrent Filter
-
- QtConcurrent::filtered() takes an input sequence and a filter function.
- This filter function is then called for each item in the sequence, and a
- new sequence containing the filtered values is returned.
-
- The filter function must be of the form:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 0
-
- T must match the type stored in the sequence. The function returns true if
- the item should be kept, false if it should be discarded.
-
- This example shows how to keep strings that are all lower-case from a
- QStringList:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 1
-
- The results of the filter are made available through QFuture. See the
- QFuture and QFutureWatcher documentation for more information on how to
- use QFuture in your applications.
-
- If you want to modify a sequence in-place, use QtConcurrent::filter():
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 2
-
- Since the sequence is modified in place, QtConcurrent::filter() does not
- return any results via QFuture. However, you can still use QFuture and
- QFutureWatcher to monitor the status of the filter.
-
- \section1 Concurrent Filter-Reduce
-
- QtConcurrent::filteredReduced() is similar to QtConcurrent::filtered(),
- but instead of returing a sequence with the filtered results, the results
- are combined into a single value using a reduce function.
-
- The reduce function must be of the form:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 3
-
- T is the type of the final result, U is the type of items being filtered.
- Note that the return value and return type of the reduce function are not
- used.
-
- Call QtConcurrent::filteredReduced() like this:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 4
-
- The reduce function will be called once for each result kept by the filter
- function, and should merge the \e{intermediate} into the \e{result}
- variable. QtConcurrent::filteredReduced() guarantees that only one thread
- will call reduce at a time, so using a mutex to lock the result variable
- is not necessary. The QtConcurrent::ReduceOptions enum provides a way to
- control the order in which the reduction is done.
-
- \section1 Additional API Features
-
- \section2 Using Iterators instead of Sequence
-
- Each of the above functions has a variant that takes an iterator range
- instead of a sequence. You use them in the same way as the sequence
- variants:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 5
-
-
- \section2 Using Member Functions
-
- QtConcurrent::filter(), QtConcurrent::filtered(), and
- QtConcurrent::filteredReduced() accept pointers to member functions.
- The member function class type must match the type stored in the sequence:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 7
-
- Note that when using QtConcurrent::filteredReduced(), you can mix the use of
- normal and member functions freely:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 8
-
- \section2 Using Function Objects
-
- QtConcurrent::filter(), QtConcurrent::filtered(), and
- QtConcurrent::filteredReduced() accept function objects, which can be used to
- add state to a function call. The result_type typedef must define the
- result type of the function call operator:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 13
-
- \section2 Using Bound Function Arguments
-
- Note that Qt does not provide support for bound functions. This is
- provided by 3rd party libraries like
- \l{http://www.boost.org/libs/bind/bind.html}{Boost} or
- \l{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf}
- {C++ TR1 Library Extensions}.
-
- If you want to use a filter function takes more than one argument, you can
- use boost::bind() or std::tr1::bind() to transform it onto a function that
- takes one argument.
-
- As an example, we use QString::contains():
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 9
-
- QString::contains() takes 2 arguments (including the "this" pointer) and
- can't be used with QtConcurrent::filtered() directly, because
- QtConcurrent::filtered() expects a function that takes one argument. To
- use QString::contains() with QtConcurrent::filtered() we have to provide a
- value for the \e regexp argument:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 10
-
- The return value from boost::bind() is a function object (functor) with
- the following signature:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 11
-
- This matches what QtConcurrent::filtered() expects, and the complete
- example becomes:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentfilter.cpp 12
-*/
-
-/*!
- \fn QFuture<void> QtConcurrent::filter(Sequence &sequence, FilterFunction filterFunction)
- \relates <QtConcurrentFilter>
-
- Calls \a filterFunction once for each item in \a sequence. If
- \a filterFunction returns true, the item is kept in \a sequence;
- otherwise, the item is removed from \a sequence.
-*/
-
-/*!
- \fn QFuture<T> QtConcurrent::filtered(const Sequence &sequence, FilterFunction filterFunction)
- \relates <QtConcurrentFilter>
-
- Calls \a filterFunction once for each item in \a sequence and returns a
- new Sequence of kept items. If \a filterFunction returns true, a copy of
- the item is put in the new Sequence. Otherwise, the item will \e not
- appear in the new Sequence.
-*/
-
-/*!
- \fn QFuture<T> QtConcurrent::filtered(ConstIterator begin, ConstIterator end, FilterFunction filterFunction)
- \relates <QtConcurrentFilter>
-
- Calls \a filterFunction once for each item from \a begin to \a end and
- returns a new Sequence of kept items. If \a filterFunction returns true, a
- copy of the item is put in the new Sequence. Otherwise, the item will
- \e not appear in the new Sequence.
-*/
-
-/*!
- \fn QFuture<T> QtConcurrent::filteredReduced(const Sequence &sequence, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions)
- \relates <QtConcurrentFilter>
-
- Calls \a filterFunction once for each item in \a sequence. If
- \a filterFunction returns true for an item, that item is then passed to
- \a reduceFunction. In other words, the return value is the result of
- \a reduceFunction for each item where \a filterFunction returns true.
-
- Note that while \a filterFunction is called concurrently, only one thread
- at a time will call \a reduceFunction. The order in which \a reduceFunction
- is called is undefined if \a reduceOptions is
- QtConcurrent::UnorderedReduce. If \a reduceOptions is
- QtConcurrent::OrderedReduce, \a reduceFunction is called in the order of
- the original sequence.
-*/
-
-/*!
- \fn QFuture<T> QtConcurrent::filteredReduced(ConstIterator begin, ConstIterator end, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions)
- \relates <QtConcurrentFilter>
-
- Calls \a filterFunction once for each item from \a begin to \a end. If
- \a filterFunction returns true for an item, that item is then passed to
- \a reduceFunction. In other words, the return value is the result of
- \a reduceFunction for each item where \a filterFunction returns true.
-
- Note that while \a filterFunction is called concurrently, only one thread
- at a time will call \a reduceFunction. The order in which
- \a reduceFunction is called is undefined if \a reduceOptions is
- QtConcurrent::UnorderedReduce. If \a reduceOptions is
- QtConcurrent::OrderedReduce, the \a reduceFunction is called in the order
- of the original sequence.
-*/
-
-/*!
- \fn void QtConcurrent::blockingFilter(Sequence &sequence, FilterFunction filterFunction)
-
- Calls \a filterFunction once for each item in \a sequence. If
- \a filterFunction returns true, the item is kept in \a sequence;
- otherwise, the item is removed from \a sequence.
-
- \note This function will block until all items in the sequence have been processed.
-*/
-
-/*!
- \fn Sequence QtConcurrent::blockingFiltered(const Sequence &sequence, FilterFunction filterFunction)
-
- Calls \a filterFunction once for each item in \a sequence and returns a
- new Sequence of kept items. If \a filterFunction returns true, a copy of
- the item is put in the new Sequence. Otherwise, the item will \e not
- appear in the new Sequence.
-
- \note This function will block until all items in the sequence have been processed.
-
- \sa filtered()
-*/
-
-/*!
- \fn Sequence QtConcurrent::blockingFiltered(ConstIterator begin, ConstIterator end, FilterFunction filterFunction)
-
- Calls \a filterFunction once for each item from \a begin to \a end and
- returns a new Sequence of kept items. If \a filterFunction returns true, a
- copy of the item is put in the new Sequence. Otherwise, the item will
- \e not appear in the new Sequence.
-
- \note This function will block until the iterator reaches the end of the
- sequence being processed.
-
- \sa filtered()
-*/
-
-/*!
- \fn T QtConcurrent::blockingFilteredReduced(const Sequence &sequence, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions)
-
- Calls \a filterFunction once for each item in \a sequence. If
- \a filterFunction returns true for an item, that item is then passed to
- \a reduceFunction. In other words, the return value is the result of
- \a reduceFunction for each item where \a filterFunction returns true.
-
- Note that while \a filterFunction is called concurrently, only one thread
- at a time will call \a reduceFunction. The order in which \a reduceFunction
- is called is undefined if \a reduceOptions is
- QtConcurrent::UnorderedReduce. If \a reduceOptions is
- QtConcurrent::OrderedReduce, \a reduceFunction is called in the order of
- the original sequence.
-
- \note This function will block until all items in the sequence have been processed.
-
- \sa filteredReduced()
-*/
-
-/*!
- \fn T QtConcurrent::blockingFilteredReduced(ConstIterator begin, ConstIterator end, FilterFunction filterFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions)
-
- Calls \a filterFunction once for each item from \a begin to \a end. If
- \a filterFunction returns true for an item, that item is then passed to
- \a reduceFunction. In other words, the return value is the result of
- \a reduceFunction for each item where \a filterFunction returns true.
-
- Note that while \a filterFunction is called concurrently, only one thread
- at a time will call \a reduceFunction. The order in which
- \a reduceFunction is called is undefined if \a reduceOptions is
- QtConcurrent::UnorderedReduce. If \a reduceOptions is
- QtConcurrent::OrderedReduce, the \a reduceFunction is called in the order
- of the original sequence.
-
- \note This function will block until the iterator reaches the end of the
- sequence being processed.
-
- \sa filteredReduced()
-*/
diff --git a/src/corelib/concurrent/qtconcurrentfilter.h b/src/corelib/concurrent/qtconcurrentfilter.h
deleted file mode 100644
index c9ed9bbdfa..0000000000
--- a/src/corelib/concurrent/qtconcurrentfilter.h
+++ /dev/null
@@ -1,270 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QTCONCURRENT_FILTER_H
-#define QTCONCURRENT_FILTER_H
-
-#include <QtCore/qglobal.h>
-
-#ifndef QT_NO_CONCURRENT
-
-#include <QtCore/qtconcurrentfilterkernel.h>
-#include <QtCore/qtconcurrentfunctionwrappers.h>
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-#ifdef qdoc
-
-namespace QtConcurrent {
-
- QFuture<void> filter(Sequence &sequence, FilterFunction filterFunction);
-
- template <typename T>
- QFuture<T> filtered(const Sequence &sequence, FilterFunction filterFunction);
- template <typename T>
- QFuture<T> filtered(ConstIterator begin, ConstIterator end, FilterFunction filterFunction);
-
- template <typename T>
- QFuture<T> filteredReduced(const Sequence &sequence,
- FilterFunction filterFunction,
- ReduceFunction reduceFunction,
- QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce);
- template <typename T>
- QFuture<T> filteredReduced(ConstIterator begin,
- ConstIterator end,
- FilterFunction filterFunction,
- ReduceFunction reduceFunction,
- QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce);
-
- void blockingFilter(Sequence &sequence, FilterFunction filterFunction);
-
- template <typename Sequence>
- Sequence blockingFiltered(const Sequence &sequence, FilterFunction filterFunction);
- template <typename Sequence>
- Sequence blockingFiltered(ConstIterator begin, ConstIterator end, FilterFunction filterFunction);
-
- template <typename T>
- T blockingFilteredReduced(const Sequence &sequence,
- FilterFunction filterFunction,
- ReduceFunction reduceFunction,
- QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce);
- template <typename T>
- T blockingFilteredReduced(ConstIterator begin,
- ConstIterator end,
- FilterFunction filterFunction,
- ReduceFunction reduceFunction,
- QtConcurrent::ReduceOptions reduceOptions = UnorderedReduce | SequentialReduce);
-
-} // namespace QtConcurrent
-
-#else
-
-namespace QtConcurrent {
-
-template <typename Sequence, typename KeepFunctor, typename ReduceFunctor>
-ThreadEngineStarter<void> filterInternal(Sequence &sequence, KeepFunctor keep, ReduceFunctor reduce)
-{
- typedef typename Sequence::const_iterator Iterator;
- typedef FilterKernel<Sequence, KeepFunctor, ReduceFunctor> KernelType;
- return startThreadEngine(new KernelType(sequence, keep, reduce));
-}
-
-// filter() on sequences
-template <typename Sequence, typename KeepFunctor>
-QFuture<void> filter(Sequence &sequence, KeepFunctor keep)
-{
- return filterInternal(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::PushBackWrapper());
-}
-
-// filteredReduced() on sequences
-template <typename ResultType, typename Sequence, typename KeepFunctor, typename ReduceFunctor>
-QFuture<ResultType> filteredReduced(const Sequence &sequence,
- KeepFunctor keep,
- ReduceFunctor reduce,
- ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
-{
- return startFilteredReduced<ResultType>(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::createFunctionWrapper(reduce), options);
-}
-
-template <typename Sequence, typename KeepFunctor, typename ReduceFunctor>
-QFuture<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType> filteredReduced(const Sequence &sequence,
- KeepFunctor keep,
- ReduceFunctor reduce,
- ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
-{
- return startFilteredReduced<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType>
- (sequence,
- QtPrivate::createFunctionWrapper(keep),
- QtPrivate::createFunctionWrapper(reduce),
- options);
-}
-
-// filteredReduced() on iterators
-template <typename ResultType, typename Iterator, typename KeepFunctor, typename ReduceFunctor>
-QFuture<ResultType> filteredReduced(Iterator begin,
- Iterator end,
- KeepFunctor keep,
- ReduceFunctor reduce,
- ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
-{
- return startFilteredReduced<ResultType>(begin, end, QtPrivate::createFunctionWrapper(keep), QtPrivate::createFunctionWrapper(reduce), options);
-}
-
-template <typename Iterator, typename KeepFunctor, typename ReduceFunctor>
-QFuture<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType> filteredReduced(Iterator begin,
- Iterator end,
- KeepFunctor keep,
- ReduceFunctor reduce,
- ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
-{
- return startFilteredReduced<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType>
- (begin, end,
- QtPrivate::createFunctionWrapper(keep),
- QtPrivate::createFunctionWrapper(reduce),
- options);
-}
-
-// filtered() on sequences
-template <typename Sequence, typename KeepFunctor>
-QFuture<typename Sequence::value_type> filtered(const Sequence &sequence, KeepFunctor keep)
-{
- return startFiltered(sequence, QtPrivate::createFunctionWrapper(keep));
-}
-
-// filtered() on iterators
-template <typename Iterator, typename KeepFunctor>
-QFuture<typename qValueType<Iterator>::value_type> filtered(Iterator begin, Iterator end, KeepFunctor keep)
-{
- return startFiltered(begin, end, QtPrivate::createFunctionWrapper(keep));
-}
-
-// blocking filter() on sequences
-template <typename Sequence, typename KeepFunctor>
-void blockingFilter(Sequence &sequence, KeepFunctor keep)
-{
- filterInternal(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::PushBackWrapper()).startBlocking();
-}
-
-// blocking filteredReduced() on sequences
-template <typename ResultType, typename Sequence, typename KeepFunctor, typename ReduceFunctor>
-ResultType blockingFilteredReduced(const Sequence &sequence,
- KeepFunctor keep,
- ReduceFunctor reduce,
- ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
-{
- return startFilteredReduced<ResultType>(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::createFunctionWrapper(reduce), options)
- .startBlocking();
-}
-
-template <typename Sequence, typename KeepFunctor, typename ReduceFunctor>
-typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType blockingFilteredReduced(const Sequence &sequence,
- KeepFunctor keep,
- ReduceFunctor reduce,
- ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
-{
- return blockingFilteredReduced<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType>
- (sequence,
- QtPrivate::createFunctionWrapper(keep),
- QtPrivate::createFunctionWrapper(reduce),
- options);
-}
-
-// blocking filteredReduced() on iterators
-template <typename ResultType, typename Iterator, typename KeepFunctor, typename ReduceFunctor>
-ResultType blockingFilteredReduced(Iterator begin,
- Iterator end,
- KeepFunctor keep,
- ReduceFunctor reduce,
- ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
-{
- return startFilteredReduced<ResultType>
- (begin, end,
- QtPrivate::createFunctionWrapper(keep),
- QtPrivate::createFunctionWrapper(reduce),
- options)
- .startBlocking();
-}
-
-template <typename Iterator, typename KeepFunctor, typename ReduceFunctor>
-typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType blockingFilteredReduced(Iterator begin,
- Iterator end,
- KeepFunctor keep,
- ReduceFunctor reduce,
- ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
-{
- return startFilteredReduced<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType>
- (begin, end,
- QtPrivate::createFunctionWrapper(keep),
- QtPrivate::createFunctionWrapper(reduce),
- options)
- .startBlocking();
-}
-
-// blocking filtered() on sequences
-template <typename Sequence, typename KeepFunctor>
-Sequence blockingFiltered(const Sequence &sequence, KeepFunctor keep)
-{
- return startFilteredReduced<Sequence>(sequence, QtPrivate::createFunctionWrapper(keep), QtPrivate::PushBackWrapper(), OrderedReduce).startBlocking();
-}
-
-// blocking filtered() on iterators
-template <typename OutputSequence, typename Iterator, typename KeepFunctor>
-OutputSequence blockingFiltered(Iterator begin, Iterator end, KeepFunctor keep)
-{
- return startFilteredReduced<OutputSequence>(begin, end,
- QtPrivate::createFunctionWrapper(keep),
- QtPrivate::PushBackWrapper(),
- OrderedReduce).startBlocking();
-}
-
-} // namespace QtConcurrent
-
-#endif // qdoc
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif
diff --git a/src/corelib/concurrent/qtconcurrentfilterkernel.h b/src/corelib/concurrent/qtconcurrentfilterkernel.h
deleted file mode 100644
index 61d13423a3..0000000000
--- a/src/corelib/concurrent/qtconcurrentfilterkernel.h
+++ /dev/null
@@ -1,351 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QTCONCURRENT_FILTERKERNEL_H
-#define QTCONCURRENT_FILTERKERNEL_H
-
-#include <QtCore/qglobal.h>
-
-#ifndef QT_NO_CONCURRENT
-
-#include <QtCore/qtconcurrentiteratekernel.h>
-#include <QtCore/qtconcurrentmapkernel.h>
-#include <QtCore/qtconcurrentreducekernel.h>
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-#ifndef qdoc
-
-namespace QtConcurrent {
-
-template <typename T>
-struct qValueType
-{
- typedef typename T::value_type value_type;
-};
-
-template <typename T>
-struct qValueType<const T*>
-{
- typedef T value_type;
-};
-
-template <typename T>
-struct qValueType<T*>
-{
- typedef T value_type;
-};
-
-// Implementation of filter
-template <typename Sequence, typename KeepFunctor, typename ReduceFunctor>
-class FilterKernel : public IterateKernel<typename Sequence::const_iterator, void>
-{
- typedef ReduceKernel<ReduceFunctor, Sequence, typename Sequence::value_type> Reducer;
- typedef IterateKernel<typename Sequence::const_iterator, void> IterateKernelType;
- typedef typename ReduceFunctor::result_type T;
-
- Sequence reducedResult;
- Sequence &sequence;
- KeepFunctor keep;
- ReduceFunctor reduce;
- Reducer reducer;
-
-public:
- FilterKernel(Sequence &_sequence, KeepFunctor _keep, ReduceFunctor _reduce)
- : IterateKernelType(const_cast<const Sequence &>(_sequence).begin(), const_cast<const Sequence &>(_sequence).end()), reducedResult(),
- sequence(_sequence),
- keep(_keep),
- reduce(_reduce),
- reducer(OrderedReduce)
- { }
-
- bool runIteration(typename Sequence::const_iterator it, int index, T *)
- {
- IntermediateResults<typename Sequence::value_type> results;
- results.begin = index;
- results.end = index + 1;
-
- if (keep(*it))
- results.vector.append(*it);
-
- reducer.runReduce(reduce, reducedResult, results);
- return false;
- }
-
- bool runIterations(typename Sequence::const_iterator sequenceBeginIterator, int begin, int end, T *)
- {
- IntermediateResults<typename Sequence::value_type> results;
- results.begin = begin;
- results.end = end;
- results.vector.reserve(end - begin);
-
-
- typename Sequence::const_iterator it = sequenceBeginIterator;
- advance(it, begin);
- for (int i = begin; i < end; ++i) {
- if (keep(*it))
- results.vector.append(*it);
- advance(it, 1);
- }
-
- reducer.runReduce(reduce, reducedResult, results);
- return false;
- }
-
- void finish()
- {
- reducer.finish(reduce, reducedResult);
- sequence = reducedResult;
- }
-
- inline bool shouldThrottleThread()
- {
- return IterateKernelType::shouldThrottleThread() || reducer.shouldThrottle();
- }
-
- inline bool shouldStartThread()
- {
- return IterateKernelType::shouldStartThread() && reducer.shouldStartThread();
- }
-
- typedef void ReturnType;
- typedef void ResultType;
-};
-
-// Implementation of filter-reduce
-template <typename ReducedResultType,
- typename Iterator,
- typename KeepFunctor,
- typename ReduceFunctor,
- typename Reducer = ReduceKernel<ReduceFunctor,
- ReducedResultType,
- typename qValueType<Iterator>::value_type> >
-class FilteredReducedKernel : public IterateKernel<Iterator, ReducedResultType>
-{
- ReducedResultType reducedResult;
- KeepFunctor keep;
- ReduceFunctor reduce;
- Reducer reducer;
- typedef IterateKernel<Iterator, ReducedResultType> IterateKernelType;
-
-public:
- FilteredReducedKernel(Iterator begin,
- Iterator end,
- KeepFunctor _keep,
- ReduceFunctor _reduce,
- ReduceOptions reduceOption)
- : IterateKernelType(begin, end), reducedResult(), keep(_keep), reduce(_reduce), reducer(reduceOption)
- { }
-
-#if 0
- FilteredReducedKernel(ReducedResultType initialValue,
- KeepFunctor keep,
- ReduceFunctor reduce,
- ReduceOption reduceOption)
- : reducedResult(initialValue), keep(keep), reduce(reduce), reducer(reduceOption)
- { }
-#endif
-
- bool runIteration(Iterator it, int index, ReducedResultType *)
- {
- IntermediateResults<typename qValueType<Iterator>::value_type> results;
- results.begin = index;
- results.end = index + 1;
-
- if (keep(*it))
- results.vector.append(*it);
-
- reducer.runReduce(reduce, reducedResult, results);
- return false;
- }
-
- bool runIterations(Iterator sequenceBeginIterator, int begin, int end, ReducedResultType *)
- {
- IntermediateResults<typename qValueType<Iterator>::value_type> results;
- results.begin = begin;
- results.end = end;
- results.vector.reserve(end - begin);
-
- Iterator it = sequenceBeginIterator;
- advance(it, begin);
- for (int i = begin; i < end; ++i) {
- if (keep(*it))
- results.vector.append(*it);
- advance(it, 1);
- }
-
- reducer.runReduce(reduce, reducedResult, results);
- return false;
- }
-
- void finish()
- {
- reducer.finish(reduce, reducedResult);
- }
-
- inline bool shouldThrottleThread()
- {
- return IterateKernelType::shouldThrottleThread() || reducer.shouldThrottle();
- }
-
- inline bool shouldStartThread()
- {
- return IterateKernelType::shouldStartThread() && reducer.shouldStartThread();
- }
-
- typedef ReducedResultType ReturnType;
- typedef ReducedResultType ResultType;
- ReducedResultType *result()
- {
- return &reducedResult;
- }
-};
-
-// Implementation of filter that reports individual results via QFutureInterface
-template <typename Iterator, typename KeepFunctor>
-class FilteredEachKernel : public IterateKernel<Iterator, typename qValueType<Iterator>::value_type>
-{
- typedef typename qValueType<Iterator>::value_type T;
- typedef IterateKernel<Iterator, T> IterateKernelType;
-
- KeepFunctor keep;
-
-public:
- typedef T ReturnType;
- typedef T ResultType;
-
- FilteredEachKernel(Iterator begin, Iterator end, KeepFunctor _keep)
- : IterateKernelType(begin, end), keep(_keep)
- { }
-
- void start()
- {
- if (this->futureInterface)
- this->futureInterface->setFilterMode(true);
- IterateKernelType::start();
- }
-
- bool runIteration(Iterator it, int index, T *)
- {
- if (keep(*it))
- this->reportResult(&(*it), index);
- else
- this->reportResult(0, index);
- return false;
- }
-
- bool runIterations(Iterator sequenceBeginIterator, int begin, int end, T *)
- {
- const int count = end - begin;
- IntermediateResults<typename qValueType<Iterator>::value_type> results;
- results.begin = begin;
- results.end = end;
- results.vector.reserve(count);
-
- Iterator it = sequenceBeginIterator;
- advance(it, begin);
- for (int i = begin; i < end; ++i) {
- if (keep(*it))
- results.vector.append(*it);
- advance(it, 1);
- }
-
- this->reportResults(results.vector, begin, count);
- return false;
- }
-};
-
-template <typename Iterator, typename KeepFunctor>
-inline
-ThreadEngineStarter<typename qValueType<Iterator>::value_type>
-startFiltered(Iterator begin, Iterator end, KeepFunctor functor)
-{
- return startThreadEngine(new FilteredEachKernel<Iterator, KeepFunctor>(begin, end, functor));
-}
-
-template <typename Sequence, typename KeepFunctor>
-inline ThreadEngineStarter<typename Sequence::value_type>
-startFiltered(const Sequence &sequence, KeepFunctor functor)
-{
- typedef SequenceHolder1<Sequence,
- FilteredEachKernel<typename Sequence::const_iterator, KeepFunctor>,
- KeepFunctor>
- SequenceHolderType;
- return startThreadEngine(new SequenceHolderType(sequence, functor));
-}
-
-template <typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor>
-inline ThreadEngineStarter<ResultType> startFilteredReduced(const Sequence & sequence,
- MapFunctor mapFunctor, ReduceFunctor reduceFunctor,
- ReduceOptions options)
-{
- typedef typename Sequence::const_iterator Iterator;
- typedef ReduceKernel<ReduceFunctor, ResultType, typename qValueType<Iterator>::value_type > Reducer;
- typedef FilteredReducedKernel<ResultType, Iterator, MapFunctor, ReduceFunctor, Reducer> FilteredReduceType;
- typedef SequenceHolder2<Sequence, FilteredReduceType, MapFunctor, ReduceFunctor> SequenceHolderType;
- return startThreadEngine(new SequenceHolderType(sequence, mapFunctor, reduceFunctor, options));
-}
-
-
-template <typename ResultType, typename Iterator, typename MapFunctor, typename ReduceFunctor>
-inline ThreadEngineStarter<ResultType> startFilteredReduced(Iterator begin, Iterator end,
- MapFunctor mapFunctor, ReduceFunctor reduceFunctor,
- ReduceOptions options)
-{
- typedef ReduceKernel<ReduceFunctor, ResultType, typename qValueType<Iterator>::value_type> Reducer;
- typedef FilteredReducedKernel<ResultType, Iterator, MapFunctor, ReduceFunctor, Reducer> FilteredReduceType;
- return startThreadEngine(new FilteredReduceType(begin, end, mapFunctor, reduceFunctor, options));
-}
-
-
-} // namespace QtConcurrent
-
-#endif // qdoc
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif
diff --git a/src/corelib/concurrent/qtconcurrentfunctionwrappers.h b/src/corelib/concurrent/qtconcurrentfunctionwrappers.h
deleted file mode 100644
index 1468b4e4e6..0000000000
--- a/src/corelib/concurrent/qtconcurrentfunctionwrappers.h
+++ /dev/null
@@ -1,304 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QTCONCURRENT_FUNCTIONWRAPPERS_H
-#define QTCONCURRENT_FUNCTIONWRAPPERS_H
-
-#include <QtCore/qglobal.h>
-
-#ifndef QT_NO_CONCURRENT
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-#ifndef qdoc
-
-namespace QtConcurrent {
-
-template <typename T>
-class FunctionWrapper0
-{
-public:
- typedef T (*FunctionPointerType)();
- typedef T result_type;
- inline FunctionWrapper0(FunctionPointerType _functionPointer)
- :functionPointer(_functionPointer) { }
-
- inline T operator()()
- {
- return functionPointer();
- }
-private:
- FunctionPointerType functionPointer;
-};
-
-template <typename T, typename U>
-class FunctionWrapper1
-{
-public:
- typedef T (*FunctionPointerType)(U u);
- typedef T result_type;
- inline FunctionWrapper1(FunctionPointerType _functionPointer)
- :functionPointer(_functionPointer) { }
-
- inline T operator()(U u)
- {
- return functionPointer(u);
- }
-
-private:
- FunctionPointerType functionPointer;
-};
-
-template <typename T, typename U, typename V>
-class FunctionWrapper2
-{
-public:
- typedef T (*FunctionPointerType)(U u, V v);
- typedef T result_type;
- inline FunctionWrapper2(FunctionPointerType _functionPointer)
- :functionPointer(_functionPointer) { }
-
- inline T operator()(U u, V v)
- {
- return functionPointer(u, v);
- }
-private:
- FunctionPointerType functionPointer;
-};
-
-template <typename T, typename C>
-class MemberFunctionWrapper
-{
-public:
- typedef T (C::*FunctionPointerType)();
- typedef T result_type;
- inline MemberFunctionWrapper(FunctionPointerType _functionPointer)
- :functionPointer(_functionPointer) { }
-
- inline T operator()(C &c)
- {
- return (c.*functionPointer)();
- }
-private:
- FunctionPointerType functionPointer;
-};
-
-template <typename T, typename C, typename U>
-class MemberFunctionWrapper1
-{
-public:
- typedef T (C::*FunctionPointerType)(U);
- typedef T result_type;
-
- inline MemberFunctionWrapper1(FunctionPointerType _functionPointer)
- : functionPointer(_functionPointer)
- { }
-
- inline T operator()(C &c, U u)
- {
- return (c.*functionPointer)(u);
- }
-
-private:
- FunctionPointerType functionPointer;
-};
-
-template <typename T, typename C>
-class ConstMemberFunctionWrapper
-{
-public:
- typedef T (C::*FunctionPointerType)() const;
- typedef T result_type;
- inline ConstMemberFunctionWrapper(FunctionPointerType _functionPointer)
- :functionPointer(_functionPointer) { }
-
- inline T operator()(const C &c) const
- {
- return (c.*functionPointer)();
- }
-private:
- FunctionPointerType functionPointer;
-};
-
-} // namespace QtConcurrent.
-
-namespace QtPrivate {
-
-template <typename T>
-const T& createFunctionWrapper(const T& t)
-{
- return t;
-}
-
-template <typename T, typename U>
-QtConcurrent::FunctionWrapper1<T, U> createFunctionWrapper(T (*func)(U))
-{
- return QtConcurrent::FunctionWrapper1<T, U>(func);
-}
-
-template <typename T, typename C>
-QtConcurrent::MemberFunctionWrapper<T, C> createFunctionWrapper(T (C::*func)())
-{
- return QtConcurrent::MemberFunctionWrapper<T, C>(func);
-}
-
-template <typename T, typename C, typename U>
-QtConcurrent::MemberFunctionWrapper1<T, C, U> createFunctionWrapper(T (C::*func)(U))
-{
- return QtConcurrent::MemberFunctionWrapper1<T, C, U>(func);
-}
-
-template <typename T, typename C>
-QtConcurrent::ConstMemberFunctionWrapper<T, C> createFunctionWrapper(T (C::*func)() const)
-{
- return QtConcurrent::ConstMemberFunctionWrapper<T, C>(func);
-}
-
-struct PushBackWrapper
-{
- typedef void result_type;
-
- template <class C, class U>
- inline void operator()(C &c, const U &u) const
- {
- return c.push_back(u);
- }
-
-#ifdef Q_COMPILER_RVALUE_REFS
- template <class C, class U>
- inline void operator()(C &c, U &&u) const
- {
- return c.push_back(u);
- }
-#endif
-};
-
-template <typename Functor, bool foo = HasResultType<Functor>::Value>
-struct LazyResultType { typedef typename Functor::result_type Type; };
-template <typename Functor>
-struct LazyResultType<Functor, false> { typedef void Type; };
-
-template <class T>
-struct ReduceResultType;
-
-template <class U, class V>
-struct ReduceResultType<void(*)(U&,V)>
-{
- typedef U ResultType;
-};
-
-template <class T, class C, class U>
-struct ReduceResultType<T(C::*)(U)>
-{
- typedef C ResultType;
-};
-
-template <class InputSequence, class MapFunctor>
-struct MapResultType
-{
- typedef typename LazyResultType<MapFunctor>::Type ResultType;
-};
-
-template <class U, class V>
-struct MapResultType<void, U (*)(V)>
-{
- typedef U ResultType;
-};
-
-template <class T, class C>
-struct MapResultType<void, T(C::*)() const>
-{
- typedef T ResultType;
-};
-
-#ifndef QT_NO_TEMPLATE_TEMPLATE_PARAMETERS
-
-template <template <typename> class InputSequence, typename MapFunctor, typename T>
-struct MapResultType<InputSequence<T>, MapFunctor>
-{
- typedef InputSequence<typename LazyResultType<MapFunctor>::Type> ResultType;
-};
-
-template <template <typename> class InputSequence, class T, class U, class V>
-struct MapResultType<InputSequence<T>, U (*)(V)>
-{
- typedef InputSequence<U> ResultType;
-};
-
-template <template <typename> class InputSequence, class T, class U, class C>
-struct MapResultType<InputSequence<T>, U(C::*)() const>
-{
- typedef InputSequence<U> ResultType;
-};
-
-#endif // QT_NO_TEMPLATE_TEMPLATE_PARAMETER
-
-template <class MapFunctor>
-struct MapResultType<QStringList, MapFunctor>
-{
- typedef QList<typename LazyResultType<MapFunctor>::Type> ResultType;
-};
-
-template <class U, class V>
-struct MapResultType<QStringList, U (*)(V)>
-{
- typedef QList<U> ResultType;
-};
-
-template <class U, class C>
-struct MapResultType<QStringList, U(C::*)() const>
-{
- typedef QList<U> ResultType;
-};
-
-} // namespace QtPrivate.
-
-#endif //qdoc
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif
diff --git a/src/corelib/concurrent/qtconcurrentiteratekernel.cpp b/src/corelib/concurrent/qtconcurrentiteratekernel.cpp
deleted file mode 100644
index 9b3b177ce8..0000000000
--- a/src/corelib/concurrent/qtconcurrentiteratekernel.cpp
+++ /dev/null
@@ -1,199 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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 "qtconcurrentiteratekernel.h"
-
-#if defined(Q_OS_MAC)
-#include <mach/mach.h>
-#include <mach/mach_time.h>
-#include <unistd.h>
-#elif defined(Q_OS_UNIX)
-#if defined(Q_OS_HURD)
-#include <sys/time.h>
-#endif
-#include <time.h>
-#include <unistd.h>
-#elif defined(Q_OS_WIN)
-#include <qt_windows.h>
-#endif
-
-#include "private/qfunctions_p.h"
-
-
-#ifndef QT_NO_CONCURRENT
-
-QT_BEGIN_NAMESPACE
-
-enum {
- TargetRatio = 100,
- MedianSize = 7
-};
-
-#if defined(Q_OS_MAC)
-
-static qint64 getticks()
-{
- return mach_absolute_time();
-}
-
-#elif defined(Q_OS_UNIX)
-
-
-static qint64 getticks()
-{
-#if defined(_POSIX_TIMERS) && (_POSIX_TIMERS > 0)
- clockid_t clockId;
-
-#ifndef _POSIX_THREAD_CPUTIME
- clockId = CLOCK_REALTIME;
-#elif (_POSIX_THREAD_CPUTIME-0 <= 0)
- // if we don't have CLOCK_THREAD_CPUTIME_ID, we have to just use elapsed realtime instead
- clockId = CLOCK_REALTIME;
-
-# if (_POSIX_THREAD_CPUTIME-0 == 0)
- // detect availablility of CLOCK_THREAD_CPUTIME_ID
- static long useThreadCpuTime = -2;
- if (useThreadCpuTime == -2) {
- // sysconf() will return either -1 or _POSIX_VERSION (don't care about thread races here)
- useThreadCpuTime = sysconf(_SC_THREAD_CPUTIME);
- }
- if (useThreadCpuTime != -1)
- clockId = CLOCK_THREAD_CPUTIME_ID;
-# endif
-#else
- clockId = CLOCK_THREAD_CPUTIME_ID;
-#endif
-
- struct timespec ts;
- if (clock_gettime(clockId, &ts) == -1)
- return 0;
- return (ts.tv_sec * 1000000000) + ts.tv_nsec;
-#else
-
-#ifdef Q_OS_SYMBIAN
- return clock();
-#else
- // no clock_gettime(), fall back to wall time
- struct timeval tv;
- gettimeofday(&tv, 0);
- return (tv.tv_sec * 1000000) + tv.tv_usec;
-#endif
-
-#endif
-}
-
-#elif defined(Q_OS_WIN)
-
-static qint64 getticks()
-{
- LARGE_INTEGER x;
- if (!QueryPerformanceCounter(&x))
- return 0;
- return x.QuadPart;
-}
-
-#endif
-
-static double elapsed(qint64 after, qint64 before)
-{
- return double(after - before);
-}
-
-namespace QtConcurrent {
-
-/*! \internal
-
-*/
-BlockSizeManager::BlockSizeManager(int iterationCount)
-: maxBlockSize(iterationCount / (QThreadPool::globalInstance()->maxThreadCount() * 2)),
- beforeUser(0), afterUser(0),
- controlPartElapsed(MedianSize), userPartElapsed(MedianSize),
- m_blockSize(1)
-{ }
-
-// Records the time before user code.
-void BlockSizeManager::timeBeforeUser()
-{
- if (blockSizeMaxed())
- return;
-
- beforeUser = getticks();
- controlPartElapsed.addValue(elapsed(beforeUser, afterUser));
-}
-
- // Records the time after user code and adjust the block size if we are spending
- // to much time in the for control code compared with the user code.
-void BlockSizeManager::timeAfterUser()
-{
- if (blockSizeMaxed())
- return;
-
- afterUser = getticks();
- userPartElapsed.addValue(elapsed(afterUser, beforeUser));
-
- if (controlPartElapsed.isMedianValid() == false)
- return;
-
- if (controlPartElapsed.median() * TargetRatio < userPartElapsed.median())
- return;
-
- m_blockSize = qMin(m_blockSize * 2, maxBlockSize);
-
-#ifdef QTCONCURRENT_FOR_DEBUG
- qDebug() << QThread::currentThread() << "adjusting block size" << controlPartElapsed.median() << userPartElapsed.median() << m_blockSize;
-#endif
-
- // Reset the medians after adjusting the block size so we get
- // new measurements with the new block size.
- controlPartElapsed.reset();
- userPartElapsed.reset();
-}
-
-int BlockSizeManager::blockSize()
-{
- return m_blockSize;
-}
-
-} // namespace QtConcurrent
-
-QT_END_NAMESPACE
-
-#endif // QT_NO_CONCURRENT
diff --git a/src/corelib/concurrent/qtconcurrentiteratekernel.h b/src/corelib/concurrent/qtconcurrentiteratekernel.h
deleted file mode 100644
index 6adb05574b..0000000000
--- a/src/corelib/concurrent/qtconcurrentiteratekernel.h
+++ /dev/null
@@ -1,340 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QTCONCURRENT_ITERATEKERNEL_H
-#define QTCONCURRENT_ITERATEKERNEL_H
-
-#include <QtCore/qglobal.h>
-
-#ifndef QT_NO_CONCURRENT
-
-#include <QtCore/qatomic.h>
-#include <QtCore/qtconcurrentmedian.h>
-#include <QtCore/qtconcurrentthreadengine.h>
-
-#ifndef QT_NO_STL
-# include <iterator>
-#endif
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-#ifndef qdoc
-
-namespace QtConcurrent {
-
-#ifndef QT_NO_STL
- using std::advance;
-#else
- template <typename It, typename T>
- void advance(It &it, T value)
- {
- it+=value;
- }
-#endif
-
-/*
- The BlockSizeManager class manages how many iterations a thread should
- reserve and process at a time. This is done by measuring the time spent
- in the user code versus the control part code, and then increasing
- the block size if the ratio between them is to small. The block size
- management is done on the basis of the median of several timing measuremens,
- and it is done induvidualy for each thread.
-*/
-class Q_CORE_EXPORT BlockSizeManager
-{
-public:
- BlockSizeManager(int iterationCount);
- void timeBeforeUser();
- void timeAfterUser();
- int blockSize();
-private:
- inline bool blockSizeMaxed()
- {
- return (m_blockSize >= maxBlockSize);
- }
-
- const int maxBlockSize;
- qint64 beforeUser;
- qint64 afterUser;
- Median<double> controlPartElapsed;
- Median<double> userPartElapsed;
- int m_blockSize;
-};
-
-template <typename T>
-class ResultReporter
-{
-public:
- ResultReporter(ThreadEngine<T> *_threadEngine)
- :threadEngine(_threadEngine)
- {
-
- }
-
- void reserveSpace(int resultCount)
- {
- currentResultCount = resultCount;
- vector.resize(qMax(resultCount, vector.count()));
- }
-
- void reportResults(int begin)
- {
- const int useVectorThreshold = 4; // Tunable parameter.
- if (currentResultCount > useVectorThreshold) {
- vector.resize(currentResultCount);
- threadEngine->reportResults(vector, begin);
- } else {
- for (int i = 0; i < currentResultCount; ++i)
- threadEngine->reportResult(&vector.at(i), begin + i);
- }
- }
-
- inline T * getPointer()
- {
- return vector.data();
- }
-
- int currentResultCount;
- ThreadEngine<T> *threadEngine;
- QVector<T> vector;
-};
-
-template <>
-class ResultReporter<void>
-{
-public:
- inline ResultReporter(ThreadEngine<void> *) { }
- inline void reserveSpace(int) { }
- inline void reportResults(int) { }
- inline void * getPointer() { return 0; }
-};
-
-#ifndef QT_NO_STL
-inline bool selectIteration(std::bidirectional_iterator_tag)
-{
- return false; // while
-}
-
-inline bool selectIteration(std::forward_iterator_tag)
-{
- return false; // while
-}
-
-inline bool selectIteration(std::random_access_iterator_tag)
-{
- return true; // for
-}
-#else
-// no stl support, always use while iteration
-template <typename T>
-inline bool selectIteration(T)
-{
- return false; // while
-}
-#endif
-
-template <typename Iterator, typename T>
-class IterateKernel : public ThreadEngine<T>
-{
-public:
- typedef T ResultType;
-
- IterateKernel(Iterator _begin, Iterator _end)
-#if defined (QT_NO_STL)
- : begin(_begin), end(_end), current(_begin), currentIndex(0),
- forIteration(false), progressReportingEnabled(true)
-#else
- : begin(_begin), end(_end), current(_begin), currentIndex(0),
- forIteration(selectIteration(typename std::iterator_traits<Iterator>::iterator_category())), progressReportingEnabled(true)
-#endif
- {
-#if defined (QT_NO_STL)
- iterationCount = 0;
-#else
- iterationCount = forIteration ? std::distance(_begin, _end) : 0;
-
-#endif
- }
-
- virtual ~IterateKernel() { }
-
- virtual bool runIteration(Iterator it, int index , T *result)
- { Q_UNUSED(it); Q_UNUSED(index); Q_UNUSED(result); return false; }
- virtual bool runIterations(Iterator _begin, int beginIndex, int endIndex, T *results)
- { Q_UNUSED(_begin); Q_UNUSED(beginIndex); Q_UNUSED(endIndex); Q_UNUSED(results); return false; }
-
- void start()
- {
- progressReportingEnabled = this->isProgressReportingEnabled();
- if (progressReportingEnabled && iterationCount > 0)
- this->setProgressRange(0, iterationCount);
- }
-
- bool shouldStartThread()
- {
- if (forIteration)
- return (currentIndex.load() < iterationCount) && !this->shouldThrottleThread();
- else // whileIteration
- return (iteratorThreads.load() == 0);
- }
-
- ThreadFunctionResult threadFunction()
- {
- if (forIteration)
- return this->forThreadFunction();
- else // whileIteration
- return this->whileThreadFunction();
- }
-
- ThreadFunctionResult forThreadFunction()
- {
- BlockSizeManager blockSizeManager(iterationCount);
- ResultReporter<T> resultReporter(this);
-
- for(;;) {
- if (this->isCanceled())
- break;
-
- const int currentBlockSize = blockSizeManager.blockSize();
-
- if (currentIndex.load() >= iterationCount)
- break;
-
- // Atomically reserve a block of iterationCount for this thread.
- const int beginIndex = currentIndex.fetchAndAddRelease(currentBlockSize);
- const int endIndex = qMin(beginIndex + currentBlockSize, iterationCount);
-
- if (beginIndex >= endIndex) {
- // No more work
- break;
- }
-
- this->waitForResume(); // (only waits if the qfuture is paused.)
-
- if (shouldStartThread())
- this->startThread();
-
- const int finalBlockSize = endIndex - beginIndex; // block size adjusted for possible end-of-range
- resultReporter.reserveSpace(finalBlockSize);
-
- // Call user code with the current iteration range.
- blockSizeManager.timeBeforeUser();
- const bool resultsAvailable = this->runIterations(begin, beginIndex, endIndex, resultReporter.getPointer());
- blockSizeManager.timeAfterUser();
-
- if (resultsAvailable)
- resultReporter.reportResults(beginIndex);
-
- // Report progress if progress reporting enabled.
- if (progressReportingEnabled) {
- completed.fetchAndAddAcquire(finalBlockSize);
- this->setProgressValue(this->completed.load());
- }
-
- if (this->shouldThrottleThread())
- return ThrottleThread;
- }
- return ThreadFinished;
- }
-
- ThreadFunctionResult whileThreadFunction()
- {
- if (iteratorThreads.testAndSetAcquire(0, 1) == false)
- return ThreadFinished;
-
- ResultReporter<T> resultReporter(this);
- resultReporter.reserveSpace(1);
-
- while (current != end) {
- // The following two lines breaks support for input iterators according to
- // the sgi docs: dereferencing prev after calling ++current is not allowed
- // on input iterators. (prev is dereferenced inside user.runIteration())
- Iterator prev = current;
- ++current;
- int index = currentIndex.fetchAndAddRelaxed(1);
- iteratorThreads.testAndSetRelease(1, 0);
-
- this->waitForResume(); // (only waits if the qfuture is paused.)
-
- if (shouldStartThread())
- this->startThread();
-
- const bool resultAavailable = this->runIteration(prev, index, resultReporter.getPointer());
- if (resultAavailable)
- resultReporter.reportResults(index);
-
- if (this->shouldThrottleThread())
- return ThrottleThread;
-
- if (iteratorThreads.testAndSetAcquire(0, 1) == false)
- return ThreadFinished;
- }
-
- return ThreadFinished;
- }
-
-
-public:
- const Iterator begin;
- const Iterator end;
- Iterator current;
- QAtomicInt currentIndex;
- bool forIteration;
- QAtomicInt iteratorThreads;
- int iterationCount;
-
- bool progressReportingEnabled;
- QAtomicInt completed;
-};
-
-} // namespace QtConcurrent
-
-#endif //qdoc
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif
diff --git a/src/corelib/concurrent/qtconcurrentmap.cpp b/src/corelib/concurrent/qtconcurrentmap.cpp
deleted file mode 100644
index f078a0646a..0000000000
--- a/src/corelib/concurrent/qtconcurrentmap.cpp
+++ /dev/null
@@ -1,402 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-/*!
- \namespace QtConcurrent
- \inmodule QtCore
- \since 4.4
- \brief The QtConcurrent namespace provides high-level APIs that make it
- possible to write multi-threaded programs without using low-level
- threading primitives.
-
- See the \l {Concurrent Programming}{Qt Concurrent} chapter in
- the \l{threads.html}{threading} documentation.
-
- \inheaderfile QtCore
- \ingroup thread
-*/
-
-/*!
- \namespace QtConcurrent::internal
- \internal
-
- \brief The QtConcurrent::internal namespace contains QtConcurrent
- implementation details.
-*/
-
-/*!
- \enum QtConcurrent::ReduceOption
- This enum specifies the order of which results from the map or filter
- function are passed to the reduce function.
-
- \value UnorderedReduce Reduction is done in an arbitrary order.
- \value OrderedReduce Reduction is done in the order of the
- original sequence.
- \value SequentialReduce Reduction is done sequentially: only one
- thread will enter the reduce function at a time. (Parallel reduction
- might be supported in a future version of Qt Concurrent.)
-*/
-
-/*!
- \headerfile <QtConcurrentMap>
- \title Concurrent Map and Map-Reduce
- \ingroup thread
-
- \brief The <QtConcurrentMap> header provides concurrent Map and MapReduce.
-
- These functions are a part of the \l {Concurrent Programming}{Qt Concurrent} framework.
-
- The QtConcurrent::map(), QtConcurrent::mapped() and
- QtConcurrent::mappedReduced() functions run computations in parallel on
- the items in a sequence such as a QList or a QVector. QtConcurrent::map()
- modifies a sequence in-place, QtConcurrent::mapped() returns a new
- sequence containing the modified content, and QtConcurrent::mappedReduced()
- returns a single result.
-
- Each of the above functions has a blocking variant that returns
- the final result instead of a QFuture. You use them in the same
- way as the asynchronous variants.
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 7
-
- Note that the result types above are not QFuture objects, but real result
- types (in this case, QList<QImage> and QImage).
-
- \section1 Concurrent Map
-
- QtConcurrent::mapped() takes an input sequence and a map function. This map
- function is then called for each item in the sequence, and a new sequence
- containing the return values from the map function is returned.
-
- The map function must be of the form:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 0
-
- T and U can be any type (and they can even be the same type), but T must
- match the type stored in the sequence. The function returns the modified
- or \e mapped content.
-
- This example shows how to apply a scale function to all the items
- in a sequence:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 1
-
- The results of the map are made available through QFuture. See the
- QFuture and QFutureWatcher documentation for more information on how to
- use QFuture in your applications.
-
- If you want to modify a sequence in-place, use QtConcurrent::map(). The
- map function must then be of the form:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 2
-
- Note that the return value and return type of the map function are not
- used.
-
- Using QtConcurrent::map() is similar to using QtConcurrent::mapped():
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 3
-
- Since the sequence is modified in place, QtConcurrent::map() does not
- return any results via QFuture. However, you can still use QFuture and
- QFutureWatcher to monitor the status of the map.
-
- \section1 Concurrent Map-Reduce
-
- QtConcurrent::mappedReduced() is similar to QtConcurrent::mapped(), but
- instead of returning a sequence with the new results, the results are
- combined into a single value using a reduce function.
-
- The reduce function must be of the form:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 4
-
- T is the type of the final result, U is the return type of the map
- function. Note that the return value and return type of the reduce
- function are not used.
-
- Call QtConcurrent::mappedReduced() like this:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 5
-
- The reduce function will be called once for each result returned by the map
- function, and should merge the \e{intermediate} into the \e{result}
- variable. QtConcurrent::mappedReduced() guarantees that only one thread
- will call reduce at a time, so using a mutex to lock the result variable
- is not necessary. The QtConcurrent::ReduceOptions enum provides a way to
- control the order in which the reduction is done. If
- QtConcurrent::UnorderedReduce is used (the default), the order is
- undefined, while QtConcurrent::OrderedReduce ensures that the reduction
- is done in the order of the original sequence.
-
- \section1 Additional API Features
-
- \section2 Using Iterators instead of Sequence
-
- Each of the above functions has a variant that takes an iterator range
- instead of a sequence. You use them in the same way as the sequence
- variants:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 6
-
- \section2 Blocking Variants
-
- Each of the above functions has a blocking variant that returns
- the final result instead of a QFuture. You use them in the same
- way as the asynchronous variants.
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 7
-
- Note that the result types above are not QFuture objects, but real result
- types (in this case, QList<QImage> and QImage).
-
- \section2 Using Member Functions
-
- QtConcurrent::map(), QtConcurrent::mapped(), and
- QtConcurrent::mappedReduced() accept pointers to member functions.
- The member function class type must match the type stored in the sequence:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 8
-
- Note that when using QtConcurrent::mappedReduced(), you can mix the use of
- normal and member functions freely:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 9
-
- \section2 Using Function Objects
-
- QtConcurrent::map(), QtConcurrent::mapped(), and
- QtConcurrent::mappedReduced() accept function objects, which can be used to
- add state to a function call. The result_type typedef must define the
- result type of the function call operator:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 14
-
- \section2 Using Bound Function Arguments
-
- Note that Qt does not provide support for bound functions. This is
- provided by 3rd party libraries like
- \l{http://www.boost.org/libs/bind/bind.html}{Boost} or
- \l{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf}{C++
- TR1 Library Extensions}.
-
- If you want to use a map function that takes more than one argument you can
- use boost::bind() or std::tr1::bind() to transform it onto a function that
- takes one argument.
-
- As an example, we'll use QImage::scaledToWidth():
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 10
-
- scaledToWidth takes three arguments (including the "this" pointer) and
- can't be used with QtConcurrent::mapped() directly, because
- QtConcurrent::mapped() expects a function that takes one argument. To use
- QImage::scaledToWidth() with QtConcurrent::mapped() we have to provide a
- value for the \e{width} and the \e{transformation mode}:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 11
-
- The return value from boost::bind() is a function object (functor) with
- the following signature:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 12
-
- This matches what QtConcurrent::mapped() expects, and the complete example
- becomes:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentmap.cpp 13
-*/
-
-/*!
- \fn QFuture<void> QtConcurrent::map(Sequence &sequence, MapFunction function)
- \relates <QtConcurrentMap>
-
- Calls \a function once for each item in \a sequence. The \a function is
- passed a reference to the item, so that any modifications done to the item
- will appear in \a sequence.
-*/
-
-/*!
- \fn QFuture<void> QtConcurrent::map(Iterator begin, Iterator end, MapFunction function)
- \relates <QtConcurrentMap>
-
- Calls \a function once for each item from \a begin to \a end. The
- \a function is passed a reference to the item, so that any modifications
- done to the item will appear in the sequence which the iterators belong to.
-*/
-
-/*!
- \fn QFuture<T> QtConcurrent::mapped(const Sequence &sequence, MapFunction function)
- \relates <QtConcurrentMap>
-
- Calls \a function once for each item in \a sequence and returns a future
- with each mapped item as a result. You can use QFuture::const_iterator or
- QFutureIterator to iterate through the results.
-*/
-
-/*!
- \fn QFuture<T> QtConcurrent::mapped(ConstIterator begin, ConstIterator end, MapFunction function)
- \relates <QtConcurrentMap>
-
- Calls \a function once for each item from \a begin to \a end and returns a
- future with each mapped item as a result. You can use
- QFuture::const_iterator or QFutureIterator to iterate through the results.
-*/
-
-/*!
- \fn QFuture<T> QtConcurrent::mappedReduced(const Sequence &sequence,
- MapFunction mapFunction, ReduceFunction reduceFunction,
- QtConcurrent::ReduceOptions reduceOptions)
-
- \relates <QtConcurrentMap>
-
- Calls \a mapFunction once for each item in \a sequence. The return value of
- each \a mapFunction is passed to \a reduceFunction.
-
- Note that while \a mapFunction is called concurrently, only one thread at a
- time will call \a reduceFunction. The order in which \a reduceFunction is
- called is determined by \a reduceOptions.
-*/
-
-/*!
- \fn QFuture<T> QtConcurrent::mappedReduced(ConstIterator begin,
- ConstIterator end, MapFunction mapFunction, ReduceFunction reduceFunction,
- QtConcurrent::ReduceOptions reduceOptions)
-
- \relates <QtConcurrentMap>
-
- Calls \a mapFunction once for each item from \a begin to \a end. The return
- value of each \a mapFunction is passed to \a reduceFunction.
-
- Note that while \a mapFunction is called concurrently, only one thread at a
- time will call \a reduceFunction. By default, the order in which
- \a reduceFunction is called is undefined.
-
- \note QtConcurrent::OrderedReduce results in the ordered reduction.
-*/
-
-/*!
- \fn void QtConcurrent::blockingMap(Sequence &sequence, MapFunction function)
-
- Calls \a function once for each item in \a sequence. The \a function is
- passed a reference to the item, so that any modifications done to the item
- will appear in \a sequence.
-
- \note This function will block until all items in the sequence have been processed.
-
- \sa map()
-*/
-
-/*!
- \fn void QtConcurrent::blockingMap(Iterator begin, Iterator end, MapFunction function)
-
- Calls \a function once for each item from \a begin to \a end. The
- \a function is passed a reference to the item, so that any modifications
- done to the item will appear in the sequence which the iterators belong to.
-
- \note This function will block until the iterator reaches the end of the
- sequence being processed.
-
- \sa map()
-*/
-
-/*!
- \fn T QtConcurrent::blockingMapped(const Sequence &sequence, MapFunction function)
-
- Calls \a function once for each item in \a sequence and returns a Sequence containing
- the results. The type of the results will match the type returned my the MapFunction.
-
- \note This function will block until all items in the sequence have been processed.
-
- \sa mapped()
-*/
-
-/*!
- \fn T QtConcurrent::blockingMapped(ConstIterator begin, ConstIterator end, MapFunction function)
-
- Calls \a function once for each item from \a begin to \a end and returns a
- container with the results. Specify the type of container as the a template
- argument, like this:
-
- \code
- QList<int> ints = QtConcurrent::blockingMapped<QList<int> >(beginIterator, endIterator, fn);
- \endcode
-
- \note This function will block until the iterator reaches the end of the
- sequence being processed.
-
- \sa mapped()
-*/
-
-/*!
- \fn T QtConcurrent::blockingMappedReduced(const Sequence &sequence, MapFunction mapFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions)
-
- \relates <QtConcurrentMap>
-
- Calls \a mapFunction once for each item in \a sequence. The return value of
- each \a mapFunction is passed to \a reduceFunction.
-
- Note that while \a mapFunction is called concurrently, only one thread at a
- time will call \a reduceFunction. The order in which \a reduceFunction is
- called is determined by \a reduceOptions.
-
- \note This function will block until all items in the sequence have been processed.
-
- \sa mapped()
-*/
-
-/*!
- \fn T QtConcurrent::blockingMappedReduced(ConstIterator begin, ConstIterator end, MapFunction mapFunction, ReduceFunction reduceFunction, QtConcurrent::ReduceOptions reduceOptions)
-
- \relates <QtConcurrentMap>
-
- Calls \a mapFunction once for each item from \a begin to \a end. The return
- value of each \a mapFunction is passed to \a reduceFunction.
-
- Note that while \a mapFunction is called concurrently, only one thread at a
- time will call \a reduceFunction. The order in which \a reduceFunction is
- called is undefined.
-
- \note This function will block until the iterator reaches the end of the
- sequence being processed.
-
- \sa blockingMappedReduced()
-*/
diff --git a/src/corelib/concurrent/qtconcurrentmap.h b/src/corelib/concurrent/qtconcurrentmap.h
deleted file mode 100644
index d735045173..0000000000
--- a/src/corelib/concurrent/qtconcurrentmap.h
+++ /dev/null
@@ -1,320 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QTCONCURRENT_MAP_H
-#define QTCONCURRENT_MAP_H
-
-#include <QtCore/qglobal.h>
-
-#ifndef QT_NO_CONCURRENT
-
-#include <QtCore/qtconcurrentmapkernel.h>
-#include <QtCore/qtconcurrentreducekernel.h>
-#include <QtCore/qtconcurrentfunctionwrappers.h>
-#include <QtCore/qstringlist.h>
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-#ifdef qdoc
-
-namespace QtConcurrent {
-
- QFuture<void> map(Sequence &sequence, MapFunction function);
- QFuture<void> map(Iterator begin, Iterator end, MapFunction function);
-
- template <typename T>
- QFuture<T> mapped(const Sequence &sequence, MapFunction function);
- template <typename T>
- QFuture<T> mapped(ConstIterator begin, ConstIterator end, MapFunction function);
-
- template <typename T>
- QFuture<T> mappedReduced(const Sequence &sequence,
- MapFunction function,
- ReduceFunction function,
- QtConcurrent::ReduceOptions options = UnorderedReduce | SequentialReduce);
- template <typename T>
- QFuture<T> mappedReduced(ConstIterator begin,
- ConstIterator end,
- MapFunction function,
- ReduceFunction function,
- QtConcurrent::ReduceOptions options = UnorderedReduce | SequentialReduce);
-
- void blockingMap(Sequence &sequence, MapFunction function);
- void blockingMap(Iterator begin, Iterator end, MapFunction function);
-
- template <typename T>
- T blockingMapped(const Sequence &sequence, MapFunction function);
- template <typename T>
- T blockingMapped(ConstIterator begin, ConstIterator end, MapFunction function);
-
- template <typename T>
- T blockingMappedReduced(const Sequence &sequence,
- MapFunction function,
- ReduceFunction function,
- QtConcurrent::ReduceOptions options = UnorderedReduce | SequentialReduce);
- template <typename T>
- T blockingMappedReduced(ConstIterator begin,
- ConstIterator end,
- MapFunction function,
- ReduceFunction function,
- QtConcurrent::ReduceOptions options = UnorderedReduce | SequentialReduce);
-
-} // namespace QtConcurrent
-
-#else
-
-namespace QtConcurrent {
-
-// map() on sequences
-template <typename Sequence, typename MapFunctor>
-QFuture<void> map(Sequence &sequence, MapFunctor map)
-{
- return startMap(sequence.begin(), sequence.end(), QtPrivate::createFunctionWrapper(map));
-}
-
-// map() on iterators
-template <typename Iterator, typename MapFunctor>
-QFuture<void> map(Iterator begin, Iterator end, MapFunctor map)
-{
- return startMap(begin, end, QtPrivate::createFunctionWrapper(map));
-}
-
-// mappedReduced() for sequences.
-template <typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor>
-QFuture<ResultType> mappedReduced(const Sequence &sequence,
- MapFunctor map,
- ReduceFunctor reduce,
- ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
-{
- return startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, ResultType>
- (sequence,
- QtPrivate::createFunctionWrapper(map),
- QtPrivate::createFunctionWrapper(reduce),
- options);
-}
-
-template <typename Sequence, typename MapFunctor, typename ReduceFunctor>
-QFuture<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType> mappedReduced(const Sequence &sequence,
- MapFunctor map,
- ReduceFunctor reduce,
- ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
-{
- return startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType>
- (sequence,
- QtPrivate::createFunctionWrapper(map),
- QtPrivate::createFunctionWrapper(reduce),
- options);
-}
-
-// mappedReduced() for iterators
-template <typename ResultType, typename Iterator, typename MapFunctor, typename ReduceFunctor>
-QFuture<ResultType> mappedReduced(Iterator begin,
- Iterator end,
- MapFunctor map,
- ReduceFunctor reduce,
- ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
-{
- return startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, ResultType>
- (begin, end,
- QtPrivate::createFunctionWrapper(map),
- QtPrivate::createFunctionWrapper(reduce),
- options);
-}
-
-template <typename Iterator, typename MapFunctor, typename ReduceFunctor>
-QFuture<typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType> mappedReduced(Iterator begin,
- Iterator end,
- MapFunctor map,
- ReduceFunctor reduce,
- ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
-{
- return startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType>
- (begin, end,
- QtPrivate::createFunctionWrapper(map),
- QtPrivate::createFunctionWrapper(reduce),
- options);
-}
-
-// mapped() for sequences
-template <typename Sequence, typename MapFunctor>
-QFuture<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType> mapped(const Sequence &sequence, MapFunctor map)
-{
- return startMapped<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType>(sequence, QtPrivate::createFunctionWrapper(map));
-}
-
-// mapped() for iterator ranges.
-template <typename Iterator, typename MapFunctor>
-QFuture<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType> mapped(Iterator begin, Iterator end, MapFunctor map)
-{
- return startMapped<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType>(begin, end, QtPrivate::createFunctionWrapper(map));
-}
-
-// blockingMap() for sequences
-template <typename Sequence, typename MapFunctor>
-void blockingMap(Sequence &sequence, MapFunctor map)
-{
- startMap(sequence.begin(), sequence.end(), QtPrivate::createFunctionWrapper(map)).startBlocking();
-}
-
-// blockingMap() for iterator ranges
-template <typename Iterator, typename MapFunctor>
-void blockingMap(Iterator begin, Iterator end, MapFunctor map)
-{
- startMap(begin, end, QtPrivate::createFunctionWrapper(map)).startBlocking();
-}
-
-// blockingMappedReduced() for sequences
-template <typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor>
-ResultType blockingMappedReduced(const Sequence &sequence,
- MapFunctor map,
- ReduceFunctor reduce,
- ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
-{
- return QtConcurrent::startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, ResultType>
- (sequence,
- QtPrivate::createFunctionWrapper(map),
- QtPrivate::createFunctionWrapper(reduce),
- options)
- .startBlocking();
-}
-
-template <typename MapFunctor, typename ReduceFunctor, typename Sequence>
-typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType blockingMappedReduced(const Sequence &sequence,
- MapFunctor map,
- ReduceFunctor reduce,
- ReduceOptions options = ReduceOptions(UnorderedReduce | SequentialReduce))
-{
- return QtConcurrent::startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType>
- (sequence,
- QtPrivate::createFunctionWrapper(map),
- QtPrivate::createFunctionWrapper(reduce),
- options)
- .startBlocking();
-}
-
-// blockingMappedReduced() for iterator ranges
-template <typename ResultType, typename Iterator, typename MapFunctor, typename ReduceFunctor>
-ResultType blockingMappedReduced(Iterator begin,
- Iterator end,
- MapFunctor map,
- ReduceFunctor reduce,
- QtConcurrent::ReduceOptions options = QtConcurrent::ReduceOptions(QtConcurrent::UnorderedReduce | QtConcurrent::SequentialReduce))
-{
- return QtConcurrent::startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, ResultType>
- (begin, end,
- QtPrivate::createFunctionWrapper(map),
- QtPrivate::createFunctionWrapper(reduce),
- options)
- .startBlocking();
-}
-
-template <typename Iterator, typename MapFunctor, typename ReduceFunctor>
-typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType blockingMappedReduced(Iterator begin,
- Iterator end,
- MapFunctor map,
- ReduceFunctor reduce,
- QtConcurrent::ReduceOptions options = QtConcurrent::ReduceOptions(QtConcurrent::UnorderedReduce | QtConcurrent::SequentialReduce))
-{
- return QtConcurrent::startMappedReduced<typename QtPrivate::MapResultType<void, MapFunctor>::ResultType, typename QtPrivate::ReduceResultType<ReduceFunctor>::ResultType>
- (begin, end,
- QtPrivate::createFunctionWrapper(map),
- QtPrivate::createFunctionWrapper(reduce),
- options)
- .startBlocking();
-}
-
-// mapped() for sequences with a different putput sequence type.
-template <typename OutputSequence, typename InputSequence, typename MapFunctor>
-OutputSequence blockingMapped(const InputSequence &sequence, MapFunctor map)
-{
- return blockingMappedReduced<OutputSequence>
- (sequence,
- QtPrivate::createFunctionWrapper(map),
- QtPrivate::PushBackWrapper(),
- QtConcurrent::OrderedReduce);
-}
-
-template <typename MapFunctor, typename InputSequence>
-typename QtPrivate::MapResultType<InputSequence, MapFunctor>::ResultType blockingMapped(const InputSequence &sequence, MapFunctor map)
-{
- typedef typename QtPrivate::MapResultType<InputSequence, MapFunctor>::ResultType OutputSequence;
- return blockingMappedReduced<OutputSequence>
- (sequence,
- QtPrivate::createFunctionWrapper(map),
- QtPrivate::PushBackWrapper(),
- QtConcurrent::OrderedReduce);
-}
-
-// mapped() for iterator ranges
-template <typename Sequence, typename Iterator, typename MapFunctor>
-Sequence blockingMapped(Iterator begin, Iterator end, MapFunctor map)
-{
- return blockingMappedReduced<Sequence>
- (begin, end,
- QtPrivate::createFunctionWrapper(map),
- QtPrivate::PushBackWrapper(),
- QtConcurrent::OrderedReduce);
-}
-
-template <typename Iterator, typename MapFunctor>
-typename QtPrivate::MapResultType<Iterator, MapFunctor>::ResultType blockingMapped(Iterator begin, Iterator end, MapFunctor map)
-{
- typedef typename QtPrivate::MapResultType<Iterator, MapFunctor>::ResultType OutputSequence;
- return blockingMappedReduced<OutputSequence>
- (begin, end,
- QtPrivate::createFunctionWrapper(map),
- QtPrivate::PushBackWrapper(),
- QtConcurrent::OrderedReduce);
-}
-
-} // namespace QtConcurrent
-
-#endif // qdoc
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif
diff --git a/src/corelib/concurrent/qtconcurrentmapkernel.h b/src/corelib/concurrent/qtconcurrentmapkernel.h
deleted file mode 100644
index ed8a1543ce..0000000000
--- a/src/corelib/concurrent/qtconcurrentmapkernel.h
+++ /dev/null
@@ -1,273 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QTCONCURRENT_MAPKERNEL_H
-#define QTCONCURRENT_MAPKERNEL_H
-
-#include <QtCore/qglobal.h>
-
-#ifndef QT_NO_CONCURRENT
-
-#include <QtCore/qtconcurrentiteratekernel.h>
-#include <QtCore/qtconcurrentreducekernel.h>
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-#ifndef qdoc
-namespace QtConcurrent {
-
-// map kernel, works with both parallel-for and parallel-while
-template <typename Iterator, typename MapFunctor>
-class MapKernel : public IterateKernel<Iterator, void>
-{
- MapFunctor map;
-public:
- typedef void ReturnType;
- MapKernel(Iterator begin, Iterator end, MapFunctor _map)
- : IterateKernel<Iterator, void>(begin, end), map(_map)
- { }
-
- bool runIteration(Iterator it, int, void *)
- {
- map(*it);
- return false;
- }
-
- bool runIterations(Iterator sequenceBeginIterator, int beginIndex, int endIndex, void *)
- {
- Iterator it = sequenceBeginIterator;
- advance(it, beginIndex);
- for (int i = beginIndex; i < endIndex; ++i) {
- runIteration(it, i, 0);
- advance(it, 1);
- }
-
- return false;
- }
-};
-
-template <typename ReducedResultType,
- typename Iterator,
- typename MapFunctor,
- typename ReduceFunctor,
- typename Reducer = ReduceKernel<ReduceFunctor,
- ReducedResultType,
- typename MapFunctor::result_type> >
-class MappedReducedKernel : public IterateKernel<Iterator, ReducedResultType>
-{
- ReducedResultType reducedResult;
- MapFunctor map;
- ReduceFunctor reduce;
- Reducer reducer;
-public:
- typedef ReducedResultType ReturnType;
- MappedReducedKernel(Iterator begin, Iterator end, MapFunctor _map, ReduceFunctor _reduce, ReduceOptions reduceOptions)
- : IterateKernel<Iterator, ReducedResultType>(begin, end), reducedResult(), map(_map), reduce(_reduce), reducer(reduceOptions)
- { }
-
- MappedReducedKernel(ReducedResultType initialValue,
- MapFunctor _map,
- ReduceFunctor _reduce)
- : reducedResult(initialValue), map(_map), reduce(_reduce)
- { }
-
- bool runIteration(Iterator it, int index, ReducedResultType *)
- {
- IntermediateResults<typename MapFunctor::result_type> results;
- results.begin = index;
- results.end = index + 1;
-
- results.vector.append(map(*it));
- reducer.runReduce(reduce, reducedResult, results);
- return false;
- }
-
- bool runIterations(Iterator sequenceBeginIterator, int begin, int end, ReducedResultType *)
- {
- IntermediateResults<typename MapFunctor::result_type> results;
- results.begin = begin;
- results.end = end;
- results.vector.reserve(end - begin);
-
- Iterator it = sequenceBeginIterator;
- advance(it, begin);
- for (int i = begin; i < end; ++i) {
- results.vector.append(map(*(it)));
- advance(it, 1);
- }
-
- reducer.runReduce(reduce, reducedResult, results);
- return false;
- }
-
- void finish()
- {
- reducer.finish(reduce, reducedResult);
- }
-
- bool shouldThrottleThread()
- {
- return IterateKernel<Iterator, ReducedResultType>::shouldThrottleThread() || reducer.shouldThrottle();
- }
-
- bool shouldStartThread()
- {
- return IterateKernel<Iterator, ReducedResultType>::shouldStartThread() && reducer.shouldStartThread();
- }
-
- typedef ReducedResultType ResultType;
- ReducedResultType *result()
- {
- return &reducedResult;
- }
-};
-
-template <typename Iterator, typename MapFunctor>
-class MappedEachKernel : public IterateKernel<Iterator, typename MapFunctor::result_type>
-{
- MapFunctor map;
- typedef typename MapFunctor::result_type T;
-public:
- typedef T ReturnType;
- typedef T ResultType;
-
- MappedEachKernel(Iterator begin, Iterator end, MapFunctor _map)
- : IterateKernel<Iterator, T>(begin, end), map(_map) { }
-
- bool runIteration(Iterator it, int, T *result)
- {
- *result = map(*it);
- return true;
- }
-
- bool runIterations(Iterator sequenceBeginIterator, int begin, int end, T *results)
- {
-
- Iterator it = sequenceBeginIterator;
- advance(it, begin);
- for (int i = begin; i < end; ++i) {
- runIteration(it, i, results + (i - begin));
- advance(it, 1);
- }
-
- return true;
- }
-};
-
-template <typename Iterator, typename Functor>
-inline ThreadEngineStarter<void> startMap(Iterator begin, Iterator end, Functor functor)
-{
- return startThreadEngine(new MapKernel<Iterator, Functor>(begin, end, functor));
-}
-
-template <typename T, typename Iterator, typename Functor>
-inline ThreadEngineStarter<T> startMapped(Iterator begin, Iterator end, Functor functor)
-{
- return startThreadEngine(new MappedEachKernel<Iterator, Functor>(begin, end, functor));
-}
-
-/*
- The SequnceHolder class is used to hold a reference to the
- sequence we are working on.
-*/
-template <typename Sequence, typename Base, typename Functor>
-struct SequenceHolder1 : public Base
-{
- SequenceHolder1(const Sequence &_sequence, Functor functor)
- : Base(_sequence.begin(), _sequence.end(), functor), sequence(_sequence)
- { }
-
- Sequence sequence;
-
- void finish()
- {
- Base::finish();
- // Clear the sequence to make sure all temporaries are destroyed
- // before finished is signaled.
- sequence = Sequence();
- }
-};
-
-template <typename T, typename Sequence, typename Functor>
-inline ThreadEngineStarter<T> startMapped(const Sequence &sequence, Functor functor)
-{
- typedef SequenceHolder1<Sequence,
- MappedEachKernel<typename Sequence::const_iterator , Functor>, Functor>
- SequenceHolderType;
-
- return startThreadEngine(new SequenceHolderType(sequence, functor));
-}
-
-template <typename IntermediateType, typename ResultType, typename Sequence, typename MapFunctor, typename ReduceFunctor>
-inline ThreadEngineStarter<ResultType> startMappedReduced(const Sequence & sequence,
- MapFunctor mapFunctor, ReduceFunctor reduceFunctor,
- ReduceOptions options)
-{
- typedef typename Sequence::const_iterator Iterator;
- typedef ReduceKernel<ReduceFunctor, ResultType, IntermediateType> Reducer;
- typedef MappedReducedKernel<ResultType, Iterator, MapFunctor, ReduceFunctor, Reducer> MappedReduceType;
- typedef SequenceHolder2<Sequence, MappedReduceType, MapFunctor, ReduceFunctor> SequenceHolderType;
- return startThreadEngine(new SequenceHolderType(sequence, mapFunctor, reduceFunctor, options));
-}
-
-template <typename IntermediateType, typename ResultType, typename Iterator, typename MapFunctor, typename ReduceFunctor>
-inline ThreadEngineStarter<ResultType> startMappedReduced(Iterator begin, Iterator end,
- MapFunctor mapFunctor, ReduceFunctor reduceFunctor,
- ReduceOptions options)
-{
- typedef ReduceKernel<ReduceFunctor, ResultType, IntermediateType> Reducer;
- typedef MappedReducedKernel<ResultType, Iterator, MapFunctor, ReduceFunctor, Reducer> MappedReduceType;
- return startThreadEngine(new MappedReduceType(begin, end, mapFunctor, reduceFunctor, options));
-}
-
-} // namespace QtConcurrent
-
-#endif //qdoc
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif
diff --git a/src/corelib/concurrent/qtconcurrentmedian.h b/src/corelib/concurrent/qtconcurrentmedian.h
deleted file mode 100644
index 13983fd2a4..0000000000
--- a/src/corelib/concurrent/qtconcurrentmedian.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QTCONCURRENT_MEDIAN_H
-#define QTCONCURRENT_MEDIAN_H
-
-#include <QtCore/qglobal.h>
-
-#ifndef QT_NO_CONCURRENT
-
-#include <QtCore/qvector.h>
-#include <QtCore/qalgorithms.h>
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-#ifndef qdoc
-
-namespace QtConcurrent {
-
-template <typename T>
-class Median
-{
-public:
- Median(int _bufferSize)
- : currentMedian(), bufferSize(_bufferSize), currentIndex(0), valid(false), dirty(true)
- {
- values.resize(bufferSize);
- }
-
- void reset()
- {
- values.fill(0);
- currentIndex = 0;
- valid = false;
- dirty = true;
- }
-
- void addValue(T value)
- {
- currentIndex = ((currentIndex + 1) % bufferSize);
- if (valid == false && currentIndex % bufferSize == 0)
- valid = true;
-
- // Only update the cached median value when we have to, that
- // is when the new value is on then other side of the median
- // compared to the current value at the index.
- const T currentIndexValue = values[currentIndex];
- if ((currentIndexValue > currentMedian && currentMedian > value)
- || (currentMedian > currentIndexValue && value > currentMedian)) {
- dirty = true;
- }
-
- values[currentIndex] = value;
- }
-
- bool isMedianValid() const
- {
- return valid;
- }
-
- T median()
- {
- if (dirty) {
- dirty = false;
- QVector<T> sorted = values;
- qSort(sorted);
- currentMedian = sorted.at(bufferSize / 2 + 1);
- }
- return currentMedian;
- }
-private:
- QVector<T> values;
- T currentMedian;
- int bufferSize;
- int currentIndex;
- bool valid;
- bool dirty;
-};
-
-} // namespace QtConcurrent
-
-#endif //qdoc
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif
diff --git a/src/corelib/concurrent/qtconcurrentreducekernel.h b/src/corelib/concurrent/qtconcurrentreducekernel.h
deleted file mode 100644
index 1a30d2e3e3..0000000000
--- a/src/corelib/concurrent/qtconcurrentreducekernel.h
+++ /dev/null
@@ -1,255 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QTCONCURRENT_REDUCEKERNEL_H
-#define QTCONCURRENT_REDUCEKERNEL_H
-
-#include <QtCore/qglobal.h>
-
-#ifndef QT_NO_CONCURRENT
-
-#include <QtCore/qatomic.h>
-#include <QtCore/qlist.h>
-#include <QtCore/qmap.h>
-#include <QtCore/qmutex.h>
-#include <QtCore/qthread.h>
-#include <QtCore/qthreadpool.h>
-#include <QtCore/qvector.h>
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-namespace QtConcurrent {
-
-#ifndef qdoc
-
-/*
- The ReduceQueueStartLimit and ReduceQueueThrottleLimit constants
- limit the reduce queue size for MapReduce. When the number of
- reduce blocks in the queue exceeds ReduceQueueStartLimit,
- MapReduce won't start any new threads, and when it exceeds
- ReduceQueueThrottleLimit running threads will be stopped.
-*/
-enum {
- ReduceQueueStartLimit = 20,
- ReduceQueueThrottleLimit = 30
-};
-
-// IntermediateResults holds a block of intermediate results from a
-// map or filter functor. The begin/end offsets indicates the origin
-// and range of the block.
-template <typename T>
-class IntermediateResults
-{
-public:
- int begin, end;
- QVector<T> vector;
-};
-
-#endif // qdoc
-
-enum ReduceOption {
- UnorderedReduce = 0x1,
- OrderedReduce = 0x2,
- SequentialReduce = 0x4
- // ParallelReduce = 0x8
-};
-Q_DECLARE_FLAGS(ReduceOptions, ReduceOption)
-Q_DECLARE_OPERATORS_FOR_FLAGS(ReduceOptions)
-
-#ifndef qdoc
-
-// supports both ordered and out-of-order reduction
-template <typename ReduceFunctor, typename ReduceResultType, typename T>
-class ReduceKernel
-{
- typedef QMap<int, IntermediateResults<T> > ResultsMap;
-
- const ReduceOptions reduceOptions;
-
- QMutex mutex;
- int progress, resultsMapSize, threadCount;
- ResultsMap resultsMap;
-
- bool canReduce(int begin) const
- {
- return (((reduceOptions & UnorderedReduce)
- && progress == 0)
- || ((reduceOptions & OrderedReduce)
- && progress == begin));
- }
-
- void reduceResult(ReduceFunctor &reduce,
- ReduceResultType &r,
- const IntermediateResults<T> &result)
- {
- for (int i = 0; i < result.vector.size(); ++i) {
- reduce(r, result.vector.at(i));
- }
- }
-
- void reduceResults(ReduceFunctor &reduce,
- ReduceResultType &r,
- ResultsMap &map)
- {
- typename ResultsMap::iterator it = map.begin();
- while (it != map.end()) {
- reduceResult(reduce, r, it.value());
- ++it;
- }
- }
-
-public:
- ReduceKernel(ReduceOptions _reduceOptions)
- : reduceOptions(_reduceOptions), progress(0), resultsMapSize(0),
- threadCount(QThreadPool::globalInstance()->maxThreadCount())
- { }
-
- void runReduce(ReduceFunctor &reduce,
- ReduceResultType &r,
- const IntermediateResults<T> &result)
- {
- QMutexLocker locker(&mutex);
- if (!canReduce(result.begin)) {
- ++resultsMapSize;
- resultsMap.insert(result.begin, result);
- return;
- }
-
- if (reduceOptions & UnorderedReduce) {
- // UnorderedReduce
- progress = -1;
-
- // reduce this result
- locker.unlock();
- reduceResult(reduce, r, result);
- locker.relock();
-
- // reduce all stored results as well
- while (!resultsMap.isEmpty()) {
- ResultsMap resultsMapCopy = resultsMap;
- resultsMap.clear();
-
- locker.unlock();
- reduceResults(reduce, r, resultsMapCopy);
- locker.relock();
-
- resultsMapSize -= resultsMapCopy.size();
- }
-
- progress = 0;
- } else {
- // reduce this result
- locker.unlock();
- reduceResult(reduce, r, result);
- locker.relock();
-
- // OrderedReduce
- progress += result.end - result.begin;
-
- // reduce as many other results as possible
- typename ResultsMap::iterator it = resultsMap.begin();
- while (it != resultsMap.end()) {
- if (it.value().begin != progress)
- break;
-
- locker.unlock();
- reduceResult(reduce, r, it.value());
- locker.relock();
-
- --resultsMapSize;
- progress += it.value().end - it.value().begin;
- it = resultsMap.erase(it);
- }
- }
- }
-
- // final reduction
- void finish(ReduceFunctor &reduce, ReduceResultType &r)
- {
- reduceResults(reduce, r, resultsMap);
- }
-
- inline bool shouldThrottle()
- {
- return (resultsMapSize > (ReduceQueueThrottleLimit * threadCount));
- }
-
- inline bool shouldStartThread()
- {
- return (resultsMapSize <= (ReduceQueueStartLimit * threadCount));
- }
-};
-
-template <typename Sequence, typename Base, typename Functor1, typename Functor2>
-struct SequenceHolder2 : public Base
-{
- SequenceHolder2(const Sequence &_sequence,
- Functor1 functor1,
- Functor2 functor2,
- ReduceOptions reduceOptions)
- : Base(_sequence.begin(), _sequence.end(), functor1, functor2, reduceOptions),
- sequence(_sequence)
- { }
-
- Sequence sequence;
-
- void finish()
- {
- Base::finish();
- // Clear the sequence to make sure all temporaries are destroyed
- // before finished is signaled.
- sequence = Sequence();
- }
-};
-
-#endif //qdoc
-
-} // namespace QtConcurrent
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif
diff --git a/src/corelib/concurrent/qtconcurrentresultstore.cpp b/src/corelib/concurrent/qtconcurrentresultstore.cpp
deleted file mode 100644
index e9d76448a7..0000000000
--- a/src/corelib/concurrent/qtconcurrentresultstore.cpp
+++ /dev/null
@@ -1,256 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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 "qtconcurrentresultstore.h"
-
-#ifndef QT_NO_QFUTURE
-
-QT_BEGIN_NAMESPACE
-
-namespace QtConcurrent {
-
-ResultIteratorBase::ResultIteratorBase()
- : mapIterator(QMap<int, ResultItem>::const_iterator()), m_vectorIndex(0) { }
-ResultIteratorBase::ResultIteratorBase(QMap<int, ResultItem>::const_iterator _mapIterator, int _vectorIndex)
- : mapIterator(_mapIterator), m_vectorIndex(_vectorIndex) { }
-
-int ResultIteratorBase::vectorIndex() const { return m_vectorIndex; }
-int ResultIteratorBase::resultIndex() const { return mapIterator.key() + m_vectorIndex; }
-
-ResultIteratorBase ResultIteratorBase::operator++()
-{
- if (canIncrementVectorIndex()) {
- ++m_vectorIndex;
- } else {
- ++mapIterator;
- m_vectorIndex = 0;
- }
- return *this;
-}
-
-int ResultIteratorBase::batchSize() const
-{
- return mapIterator.value().count();
-}
-
-void ResultIteratorBase::batchedAdvance()
-{
- ++mapIterator;
- m_vectorIndex = 0;
-}
-
-bool ResultIteratorBase::operator==(const ResultIteratorBase &other) const
-{
- return (mapIterator == other.mapIterator && m_vectorIndex == other.m_vectorIndex);
-}
-
-bool ResultIteratorBase::operator!=(const ResultIteratorBase &other) const
-{
- return !operator==(other);
-}
-
-bool ResultIteratorBase::isVector() const
-{
- return mapIterator.value().isVector();
-}
-
-bool ResultIteratorBase::canIncrementVectorIndex() const
-{
- return (m_vectorIndex + 1 < mapIterator.value().m_count);
-}
-
-ResultStoreBase::ResultStoreBase()
- : insertIndex(0), resultCount(0), m_filterMode(false), filteredResults(0) { }
-
-void ResultStoreBase::setFilterMode(bool enable)
-{
- m_filterMode = enable;
-}
-
-bool ResultStoreBase::filterMode() const
-{
- return m_filterMode;
-}
-
-void ResultStoreBase::syncResultCount()
-{
- ResultIteratorBase it = resultAt(resultCount);
- while (it != end()) {
- resultCount += it.batchSize();
- it = resultAt(resultCount);
- }
-}
-
-void ResultStoreBase::insertResultItemIfValid(int index, ResultItem &resultItem)
-{
- if (resultItem.isValid()) {
- m_results[index] = resultItem;
- syncResultCount();
- } else {
- filteredResults += resultItem.count();
- }
-}
-
-int ResultStoreBase::insertResultItem(int index, ResultItem &resultItem)
-{
- int storeIndex;
- if (m_filterMode && index != -1 && index > insertIndex) {
- pendingResults[index] = resultItem;
- storeIndex = index;
- } else {
- storeIndex = updateInsertIndex(index, resultItem.count());
- insertResultItemIfValid(storeIndex - filteredResults, resultItem);
- }
- syncPendingResults();
- return storeIndex;
-}
-
-void ResultStoreBase::syncPendingResults()
-{
- // check if we can insert any of the pending results:
- QMap<int, ResultItem>::iterator it = pendingResults.begin();
- while (it != pendingResults.end()) {
- int index = it.key();
- if (index != resultCount + filteredResults)
- break;
-
- ResultItem result = it.value();
- insertResultItemIfValid(index - filteredResults, result);
- pendingResults.erase(it);
- it = pendingResults.begin();
- }
-}
-
-int ResultStoreBase::addResult(int index, const void *result)
-{
- ResultItem resultItem(result, 0); // 0 means "not a vector"
- return insertResultItem(index, resultItem);
-}
-
-int ResultStoreBase::addResults(int index, const void *results, int vectorSize, int totalCount)
-{
- if (m_filterMode == false || vectorSize == totalCount) {
- ResultItem resultItem(results, vectorSize);
- return insertResultItem(index, resultItem);
- } else {
- if (vectorSize > 0) {
- ResultItem filteredIn(results, vectorSize);
- insertResultItem(index, filteredIn);
- }
- ResultItem filteredAway(0, totalCount - vectorSize);
- return insertResultItem(index + vectorSize, filteredAway);
- }
-}
-
-ResultIteratorBase ResultStoreBase::begin() const
-{
- return ResultIteratorBase(m_results.begin());
-}
-
-ResultIteratorBase ResultStoreBase::end() const
-{
- return ResultIteratorBase(m_results.end());
-}
-
-bool ResultStoreBase::hasNextResult() const
-{
- return begin() != end();
-}
-
-ResultIteratorBase ResultStoreBase::resultAt(int index) const
-{
- if (m_results.isEmpty())
- return ResultIteratorBase(m_results.end());
- QMap<int, ResultItem>::const_iterator it = m_results.lowerBound(index);
-
- // lowerBound returns either an iterator to the result or an iterator
- // to the nearest greater index. If the latter happens it might be
- // that the result is stored in a vector at the previous index.
- if (it == m_results.end()) {
- --it;
- if (it.value().isVector() == false) {
- return ResultIteratorBase(m_results.end());
- }
- } else {
- if (it.key() > index) {
- if (it == m_results.begin())
- return ResultIteratorBase(m_results.end());
- --it;
- }
- }
-
- const int vectorIndex = index - it.key();
-
- if (vectorIndex >= it.value().count())
- return ResultIteratorBase(m_results.end());
- else if (it.value().isVector() == false && vectorIndex != 0)
- return ResultIteratorBase(m_results.end());
- return ResultIteratorBase(it, vectorIndex);
-}
-
-bool ResultStoreBase::contains(int index) const
-{
- return (resultAt(index) != end());
-}
-
-int ResultStoreBase::count() const
-{
- return resultCount;
-}
-
-// returns the insert index, calling this function with
-// index equal to -1 returns the next available index.
-int ResultStoreBase::updateInsertIndex(int index, int _count)
-{
- if (index == -1) {
- index = insertIndex;
- insertIndex += _count;
- } else {
- insertIndex = qMax(index + _count, insertIndex);
- }
- return index;
-}
-
-} // namespace QtConcurrent
-
-QT_END_NAMESPACE
-
-#endif // QT_NO_CONCURRENT
diff --git a/src/corelib/concurrent/qtconcurrentresultstore.h b/src/corelib/concurrent/qtconcurrentresultstore.h
deleted file mode 100644
index c2a9f0a3e2..0000000000
--- a/src/corelib/concurrent/qtconcurrentresultstore.h
+++ /dev/null
@@ -1,239 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QTCONCURRENT_RESULTSTORE_H
-#define QTCONCURRENT_RESULTSTORE_H
-
-#include <QtCore/qglobal.h>
-
-#ifndef QT_NO_QFUTURE
-
-#include <QtCore/qmap.h>
-#include <QtCore/qdebug.h>
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-/*
- ResultStore stores indexed results. Results can be added and retrieved
- either individually batched in a QVector. Retriveing results and checking
- which indexes are in the store can be done either by iterating or by random
- accees. In addition results kan be removed from the front of the store,
- either individually or in batches.
-*/
-
-#ifndef qdoc
-
-namespace QtConcurrent {
-
-class ResultItem
-{
-public:
- ResultItem(const void *_result, int _count) : m_count(_count), result(_result) { } // contruct with vector of results
- ResultItem(const void *_result) : m_count(0), result(_result) { } // construct with result
- ResultItem() : m_count(0), result(0) { }
- bool isValid() const { return result != 0; }
- bool isVector() const { return m_count != 0; }
- int count() const { return (m_count == 0) ? 1 : m_count; }
- int m_count; // result is either a pointer to a result or to a vector of results,
- const void *result; // if count is 0 it's a result, otherwise it's a vector.
-};
-
-class Q_CORE_EXPORT ResultIteratorBase
-{
-public:
- ResultIteratorBase();
- ResultIteratorBase(QMap<int, ResultItem>::const_iterator _mapIterator, int _vectorIndex = 0);
- int vectorIndex() const;
- int resultIndex() const;
-
- ResultIteratorBase operator++();
- int batchSize() const;
- void batchedAdvance();
- bool operator==(const ResultIteratorBase &other) const;
- bool operator!=(const ResultIteratorBase &other) const;
- bool isVector() const;
- bool canIncrementVectorIndex() const;
-protected:
- QMap<int, ResultItem>::const_iterator mapIterator;
- int m_vectorIndex;
-};
-
-template <typename T>
-class ResultIterator : public ResultIteratorBase
-{
-public:
- ResultIterator(const ResultIteratorBase &base)
- : ResultIteratorBase(base) { }
-
- const T &value() const
- {
- return *pointer();
- }
-
- const T *pointer() const
- {
- if (mapIterator.value().isVector())
- return &(reinterpret_cast<const QVector<T> *>(mapIterator.value().result)->at(m_vectorIndex));
- else
- return reinterpret_cast<const T *>(mapIterator.value().result);
- }
-};
-
-class Q_CORE_EXPORT ResultStoreBase
-{
-public:
- ResultStoreBase();
- void setFilterMode(bool enable);
- bool filterMode() const;
- int addResult(int index, const void *result);
- int addResults(int index, const void *results, int vectorSize, int logicalCount);
- ResultIteratorBase begin() const;
- ResultIteratorBase end() const;
- bool hasNextResult() const;
- ResultIteratorBase resultAt(int index) const;
- bool contains(int index) const;
- int count() const;
- virtual ~ResultStoreBase() { }
-
-protected:
- int insertResultItem(int index, ResultItem &resultItem);
- void insertResultItemIfValid(int index, ResultItem &resultItem);
- void syncPendingResults();
- void syncResultCount();
- int updateInsertIndex(int index, int _count);
-
- QMap<int, ResultItem> m_results;
- int insertIndex; // The index where the next results(s) will be inserted.
- int resultCount; // The number of consecutive results stored, starting at index 0.
-
- bool m_filterMode;
- QMap<int, ResultItem> pendingResults;
- int filteredResults;
-
-};
-
-template <typename T>
-class ResultStore : public ResultStoreBase
-{
-public:
- ResultStore() { }
-
- ResultStore(const ResultStoreBase &base)
- : ResultStoreBase(base) { }
-
- int addResult(int index, const T *result)
- {
- if (result == 0)
- return ResultStoreBase::addResult(index, result);
- else
- return ResultStoreBase::addResult(index, new T(*result));
- }
-
- int addResults(int index, const QVector<T> *results)
- {
- return ResultStoreBase::addResults(index, new QVector<T>(*results), results->count(), results->count());
- }
-
- int addResults(int index, const QVector<T> *results, int totalCount)
- {
- return ResultStoreBase::addResults(index, new QVector<T>(*results), results->count(), totalCount);
- }
-
- int addCanceledResult(int index)
- {
- return addResult(index, 0);
- }
-
- int addCanceledResults(int index, int _count)
- {
- QVector<T> empty;
- return addResults(index, &empty, _count);
- }
-
- ResultIterator<T> begin() const
- {
- return static_cast<ResultIterator<T> >(ResultStoreBase::begin());
- }
-
- ResultIterator<T> end() const
- {
- return static_cast<ResultIterator<T> >(ResultStoreBase::end());
- }
-
- ResultIterator<T> resultAt(int index) const
- {
- return static_cast<ResultIterator<T> >(ResultStoreBase::resultAt(index));
- }
-
- void clear()
- {
- QMap<int, ResultItem>::const_iterator mapIterator = m_results.constBegin();
- while (mapIterator != m_results.constEnd()) {
- if (mapIterator.value().isVector())
- delete reinterpret_cast<const QVector<T> *>(mapIterator.value().result);
- else
- delete reinterpret_cast<const T *>(mapIterator.value().result);
- ++mapIterator;
- }
- resultCount = 0;
- m_results.clear();
- }
-
- ~ResultStore()
- {
- clear();
- }
-
-};
-
-} // namespace QtConcurrent
-
-#endif //qdoc
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif
diff --git a/src/corelib/concurrent/qtconcurrentrun.cpp b/src/corelib/concurrent/qtconcurrentrun.cpp
deleted file mode 100644
index 676a542471..0000000000
--- a/src/corelib/concurrent/qtconcurrentrun.cpp
+++ /dev/null
@@ -1,152 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-/*!
- \headerfile <QtConcurrentRun>
- \title Asynchronous Run
-
- \brief The <QtConcurrentRun> header provides a way to run a function in a
- separate thread.
-
- \ingroup thread
-
- This function is a part of the \l {Concurrent Programming}{Qt Concurrent} framework.
-
- The QtConcurrent::run() function runs a function in a separate thread.
- The return value of the function is made available through the QFuture API.
-
- \section1 Running a Function in a Separate Thread
-
- To run a function in another thread, use QtConcurrent::run():
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp 0
-
- This will run \e aFunction in a separate thread obtained from the default
- QThreadPool. You can use the QFuture and QFutureWatcher classes to monitor
- the status of the function.
-
- \section1 Passing Arguments to the Function
-
- Passing arguments to the function is done by adding them to the
- QtConcurrent::run() call immediately after the function name. For example:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp 1
-
- A copy of each argument is made at the point where QtConcurrent::run() is
- called, and these values are passed to the thread when it begins executing
- the function. Changes made to the arguments after calling
- QtConcurrent::run() are \e not visible to the thread.
-
- \section1 Returning Values from the Function
-
- Any return value from the function is available via QFuture:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp 2
-
- As documented above, passing arguments is done like this:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp 3
-
- Note that the QFuture::result() function blocks and waits for the result
- to become available. Use QFutureWatcher to get notification when the
- function has finished execution and the result is available.
-
- \section1 Additional API Features
-
- \section2 Using Member Functions
-
- QtConcurrent::run() also accepts pointers to member functions. The first
- argument must be either a const reference or a pointer to an instance of
- the class. Passing by const reference is useful when calling const member
- functions; passing by pointer is useful for calling non-const member
- functions that modify the instance.
-
- For example, calling QByteArray::split() (a const member function) in a
- separate thread is done like this:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp 4
-
- Calling a non-const member function is done like this:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp 5
-
- \section2 Using Bound Function Arguments
-
- Note that Qt does not provide support for bound functions. This is
- provided by 3rd party libraries like
- \l{http://www.boost.org/libs/bind/bind.html}{Boost} or
- \l{http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf}
- {C++ TR1 Library Extensions}.
-
- You can use boost::bind() or std::tr1::bind() to \e bind a number of
- arguments to a function when called. There are number of reasons for doing
- this:
-
- \list
- \o To call a function that takes more than 5 arguments.
- \o To simplify calling a function with constant arguments.
- \o Changing the order of arguments.
- \endlist
-
- See the documentation for the relevant functions for details on how to use
- the bind API.
-
- Calling a bound function is done like this:
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qtconcurrentrun.cpp 6
-*/
-
-/*!
- \fn QFuture<T> QtConcurrent::run(Function function, ...);
- \relates <QtConcurrentRun>
-
- Runs \a function in a separate thread. The thread is taken from the global
- QThreadPool. Note that the function may not run immediately; the function
- will only be run when a thread is available.
-
- T is the same type as the return value of \a function. Non-void return
- values can be accessed via the QFuture::result() function.
-
- Note that the QFuture returned by QtConcurrent::run() does not support
- canceling, pausing, or progress reporting. The QFuture returned can only
- be used to query for the running/finished status and the return value of
- the function.
-*/
diff --git a/src/corelib/concurrent/qtconcurrentrun.h b/src/corelib/concurrent/qtconcurrentrun.h
deleted file mode 100644
index 06da380430..0000000000
--- a/src/corelib/concurrent/qtconcurrentrun.h
+++ /dev/null
@@ -1,348 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-// Generated code, do not edit! Use generator at tools/qtconcurrent/generaterun/
-#ifndef QTCONCURRENT_RUN_H
-#define QTCONCURRENT_RUN_H
-
-#include <QtCore/qglobal.h>
-
-#ifndef QT_NO_CONCURRENT
-
-#include <QtCore/qtconcurrentrunbase.h>
-#include <QtCore/qtconcurrentstoredfunctioncall.h>
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-#ifdef qdoc
-
-namespace QtConcurrent {
-
- template <typename T>
- QFuture<T> run(Function function, ...);
-
-} // namespace QtConcurrent
-
-#else
-
-namespace QtConcurrent {
-
-template <typename T>
-QFuture<T> run(T (*functionPointer)())
-{
- return (new StoredFunctorCall0<T, T (*)()>(functionPointer))->start();
-}
-template <typename T, typename Param1, typename Arg1>
-QFuture<T> run(T (*functionPointer)(Param1), const Arg1 &arg1)
-{
- return (new StoredFunctorCall1<T, T (*)(Param1), Arg1>(functionPointer, arg1))->start();
-}
-template <typename T, typename Param1, typename Arg1, typename Param2, typename Arg2>
-QFuture<T> run(T (*functionPointer)(Param1, Param2), const Arg1 &arg1, const Arg2 &arg2)
-{
- return (new StoredFunctorCall2<T, T (*)(Param1, Param2), Arg1, Arg2>(functionPointer, arg1, arg2))->start();
-}
-template <typename T, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
-QFuture<T> run(T (*functionPointer)(Param1, Param2, Param3), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3)
-{
- return (new StoredFunctorCall3<T, T (*)(Param1, Param2, Param3), Arg1, Arg2, Arg3>(functionPointer, arg1, arg2, arg3))->start();
-}
-template <typename T, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
-QFuture<T> run(T (*functionPointer)(Param1, Param2, Param3, Param4), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4)
-{
- return (new StoredFunctorCall4<T, T (*)(Param1, Param2, Param3, Param4), Arg1, Arg2, Arg3, Arg4>(functionPointer, arg1, arg2, arg3, arg4))->start();
-}
-template <typename T, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
-QFuture<T> run(T (*functionPointer)(Param1, Param2, Param3, Param4, Param5), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4, const Arg5 &arg5)
-{
- return (new StoredFunctorCall5<T, T (*)(Param1, Param2, Param3, Param4, Param5), Arg1, Arg2, Arg3, Arg4, Arg5>(functionPointer, arg1, arg2, arg3, arg4, arg5))->start();
-}
-
-#ifdef Q_COMPILER_DECLTYPE
-
-template <typename Functor>
-auto run(Functor functor) -> typename QtPrivate::QEnableIf<!QtPrivate::HasResultType<Functor>::Value, QFuture<decltype(functor())> >::Type
-{
- typedef decltype(functor()) result_type;
- return (new StoredFunctorCall0<result_type, Functor>(functor))->start();
-}
-
-template <typename Functor, typename Arg1>
-auto run(Functor functor, const Arg1 &arg1)
- -> typename QtPrivate::QEnableIf<!QtPrivate::HasResultType<Functor>::Value, QFuture<decltype(functor(arg1))> >::Type
-{
- typedef decltype(functor(arg1)) result_type;
- return (new StoredFunctorCall1<result_type, Functor, Arg1>(functor, arg1))->start();
-}
-
-template <typename Functor, typename Arg1, typename Arg2>
-auto run(Functor functor, const Arg1 &arg1, const Arg2 &arg2)
- -> typename QtPrivate::QEnableIf<!QtPrivate::HasResultType<Functor>::Value, QFuture<decltype(functor(arg1, arg2))> >::Type
-{
- typedef decltype(functor(arg1, arg2)) result_type;
- return (new StoredFunctorCall2<result_type, Functor, Arg1, Arg2>(functor, arg1, arg2))->start();
-}
-
-template <typename Functor, typename Arg1, typename Arg2, typename Arg3>
-auto run(Functor functor, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3)
- -> typename QtPrivate::QEnableIf<!QtPrivate::HasResultType<Functor>::Value, QFuture<decltype(functor(arg1, arg2, arg3))> >::Type
-{
- typedef decltype(functor(arg1, arg2, arg3)) result_type;
- return (new StoredFunctorCall3<result_type, Functor, Arg1, Arg2, Arg3>(functor, arg1, arg2, arg3))->start();
-}
-
-template <typename Functor, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
-auto run(Functor functor, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4)
- -> typename QtPrivate::QEnableIf<!QtPrivate::HasResultType<Functor>::Value, QFuture<decltype(functor(arg1, arg2, arg3, arg4))> >::Type
-{
- typedef decltype(functor(arg1, arg2, arg3, arg4)) result_type;
- return (new StoredFunctorCall4<result_type, Functor, Arg1, Arg2, Arg3, Arg4>(functor, arg1, arg2, arg3, arg4))->start();
-}
-
-template <typename Functor, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
-auto run(Functor functor, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4, const Arg5 &arg5)
- -> typename QtPrivate::QEnableIf<!QtPrivate::HasResultType<Functor>::Value, QFuture<decltype(functor(arg1, arg2, arg3, arg4, arg5))> >::Type
-{
- typedef decltype(functor(arg1, arg2, arg3, arg4, arg5)) result_type;
- return (new StoredFunctorCall5<result_type, Functor, Arg1, Arg2, Arg3, Arg4, Arg5>(functor, arg1, arg2, arg3, arg4, arg5))->start();
-}
-
-#endif
-
-template <typename FunctionObject>
-QFuture<typename FunctionObject::result_type> run(FunctionObject functionObject)
-{
- return (new StoredFunctorCall0<QT_TYPENAME FunctionObject::result_type, FunctionObject>(functionObject))->start();
-}
-template <typename FunctionObject, typename Arg1>
-QFuture<typename FunctionObject::result_type> run(FunctionObject functionObject, const Arg1 &arg1)
-{
- return (new StoredFunctorCall1<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1>(functionObject, arg1))->start();
-}
-template <typename FunctionObject, typename Arg1, typename Arg2>
-QFuture<typename FunctionObject::result_type> run(FunctionObject functionObject, const Arg1 &arg1, const Arg2 &arg2)
-{
- return (new StoredFunctorCall2<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1, Arg2>(functionObject, arg1, arg2))->start();
-}
-template <typename FunctionObject, typename Arg1, typename Arg2, typename Arg3>
-QFuture<typename FunctionObject::result_type> run(FunctionObject functionObject, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3)
-{
- return (new StoredFunctorCall3<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1, Arg2, Arg3>(functionObject, arg1, arg2, arg3))->start();
-}
-template <typename FunctionObject, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
-QFuture<typename FunctionObject::result_type> run(FunctionObject functionObject, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4)
-{
- return (new StoredFunctorCall4<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1, Arg2, Arg3, Arg4>(functionObject, arg1, arg2, arg3, arg4))->start();
-}
-template <typename FunctionObject, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
-QFuture<typename FunctionObject::result_type> run(FunctionObject functionObject, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4, const Arg5 &arg5)
-{
- return (new StoredFunctorCall5<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1, Arg2, Arg3, Arg4, Arg5>(functionObject, arg1, arg2, arg3, arg4, arg5))->start();
-}
-
-template <typename FunctionObject>
-QFuture<typename FunctionObject::result_type> run(FunctionObject *functionObject)
-{
- return (new QT_TYPENAME SelectStoredFunctorPointerCall0<QT_TYPENAME FunctionObject::result_type, FunctionObject>::type(functionObject))->start();
-}
-template <typename FunctionObject, typename Arg1>
-QFuture<typename FunctionObject::result_type> run(FunctionObject *functionObject, const Arg1 &arg1)
-{
- return (new QT_TYPENAME SelectStoredFunctorPointerCall1<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1>::type(functionObject, arg1))->start();
-}
-template <typename FunctionObject, typename Arg1, typename Arg2>
-QFuture<typename FunctionObject::result_type> run(FunctionObject *functionObject, const Arg1 &arg1, const Arg2 &arg2)
-{
- return (new QT_TYPENAME SelectStoredFunctorPointerCall2<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1, Arg2>::type(functionObject, arg1, arg2))->start();
-}
-template <typename FunctionObject, typename Arg1, typename Arg2, typename Arg3>
-QFuture<typename FunctionObject::result_type> run(FunctionObject *functionObject, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3)
-{
- return (new QT_TYPENAME SelectStoredFunctorPointerCall3<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1, Arg2, Arg3>::type(functionObject, arg1, arg2, arg3))->start();
-}
-template <typename FunctionObject, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
-QFuture<typename FunctionObject::result_type> run(FunctionObject *functionObject, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4)
-{
- return (new QT_TYPENAME SelectStoredFunctorPointerCall4<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1, Arg2, Arg3, Arg4>::type(functionObject, arg1, arg2, arg3, arg4))->start();
-}
-template <typename FunctionObject, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
-QFuture<typename FunctionObject::result_type> run(FunctionObject *functionObject, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4, const Arg5 &arg5)
-{
- return (new QT_TYPENAME SelectStoredFunctorPointerCall5<QT_TYPENAME FunctionObject::result_type, FunctionObject, Arg1, Arg2, Arg3, Arg4, Arg5>::type(functionObject, arg1, arg2, arg3, arg4, arg5))->start();
-}
-
-template <typename T, typename Class>
-QFuture<T> run(const Class &object, T (Class::*fn)())
-{
- return (new QT_TYPENAME SelectStoredMemberFunctionCall0<T, Class>::type(fn, object))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1>
-QFuture<T> run(const Class &object, T (Class::*fn)(Param1), const Arg1 &arg1)
-{
- return (new QT_TYPENAME SelectStoredMemberFunctionCall1<T, Class, Param1, Arg1>::type(fn, object, arg1))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
-QFuture<T> run(const Class &object, T (Class::*fn)(Param1, Param2), const Arg1 &arg1, const Arg2 &arg2)
-{
- return (new QT_TYPENAME SelectStoredMemberFunctionCall2<T, Class, Param1, Arg1, Param2, Arg2>::type(fn, object, arg1, arg2))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
-QFuture<T> run(const Class &object, T (Class::*fn)(Param1, Param2, Param3), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3)
-{
- return (new QT_TYPENAME SelectStoredMemberFunctionCall3<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3>::type(fn, object, arg1, arg2, arg3))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
-QFuture<T> run(const Class &object, T (Class::*fn)(Param1, Param2, Param3, Param4), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4)
-{
- return (new QT_TYPENAME SelectStoredMemberFunctionCall4<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4>::type(fn, object, arg1, arg2, arg3, arg4))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
-QFuture<T> run(const Class &object, T (Class::*fn)(Param1, Param2, Param3, Param4, Param5), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4, const Arg5 &arg5)
-{
- return (new QT_TYPENAME SelectStoredMemberFunctionCall5<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5>::type(fn, object, arg1, arg2, arg3, arg4, arg5))->start();
-}
-
-template <typename T, typename Class>
-QFuture<T> run(const Class &object, T (Class::*fn)() const)
-{
- return (new QT_TYPENAME SelectStoredConstMemberFunctionCall0<T, Class>::type(fn, object))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1>
-QFuture<T> run(const Class &object, T (Class::*fn)(Param1) const, const Arg1 &arg1)
-{
- return (new QT_TYPENAME SelectStoredConstMemberFunctionCall1<T, Class, Param1, Arg1>::type(fn, object, arg1))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
-QFuture<T> run(const Class &object, T (Class::*fn)(Param1, Param2) const, const Arg1 &arg1, const Arg2 &arg2)
-{
- return (new QT_TYPENAME SelectStoredConstMemberFunctionCall2<T, Class, Param1, Arg1, Param2, Arg2>::type(fn, object, arg1, arg2))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
-QFuture<T> run(const Class &object, T (Class::*fn)(Param1, Param2, Param3) const, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3)
-{
- return (new QT_TYPENAME SelectStoredConstMemberFunctionCall3<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3>::type(fn, object, arg1, arg2, arg3))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
-QFuture<T> run(const Class &object, T (Class::*fn)(Param1, Param2, Param3, Param4) const, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4)
-{
- return (new QT_TYPENAME SelectStoredConstMemberFunctionCall4<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4>::type(fn, object, arg1, arg2, arg3, arg4))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
-QFuture<T> run(const Class &object, T (Class::*fn)(Param1, Param2, Param3, Param4, Param5) const, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4, const Arg5 &arg5)
-{
- return (new QT_TYPENAME SelectStoredConstMemberFunctionCall5<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5>::type(fn, object, arg1, arg2, arg3, arg4, arg5))->start();
-}
-
-template <typename T, typename Class>
-QFuture<T> run(Class *object, T (Class::*fn)())
-{
- return (new QT_TYPENAME SelectStoredMemberFunctionPointerCall0<T, Class>::type(fn, object))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1>
-QFuture<T> run(Class *object, T (Class::*fn)(Param1), const Arg1 &arg1)
-{
- return (new QT_TYPENAME SelectStoredMemberFunctionPointerCall1<T, Class, Param1, Arg1>::type(fn, object, arg1))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
-QFuture<T> run(Class *object, T (Class::*fn)(Param1, Param2), const Arg1 &arg1, const Arg2 &arg2)
-{
- return (new QT_TYPENAME SelectStoredMemberFunctionPointerCall2<T, Class, Param1, Arg1, Param2, Arg2>::type(fn, object, arg1, arg2))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
-QFuture<T> run(Class *object, T (Class::*fn)(Param1, Param2, Param3), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3)
-{
- return (new QT_TYPENAME SelectStoredMemberFunctionPointerCall3<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3>::type(fn, object, arg1, arg2, arg3))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
-QFuture<T> run(Class *object, T (Class::*fn)(Param1, Param2, Param3, Param4), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4)
-{
- return (new QT_TYPENAME SelectStoredMemberFunctionPointerCall4<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4>::type(fn, object, arg1, arg2, arg3, arg4))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
-QFuture<T> run(Class *object, T (Class::*fn)(Param1, Param2, Param3, Param4, Param5), const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4, const Arg5 &arg5)
-{
- return (new QT_TYPENAME SelectStoredMemberFunctionPointerCall5<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5>::type(fn, object, arg1, arg2, arg3, arg4, arg5))->start();
-}
-
-template <typename T, typename Class>
-QFuture<T> run(const Class *object, T (Class::*fn)() const)
-{
- return (new QT_TYPENAME SelectStoredConstMemberFunctionPointerCall0<T, Class>::type(fn, object))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1>
-QFuture<T> run(const Class *object, T (Class::*fn)(Param1) const, const Arg1 &arg1)
-{
- return (new QT_TYPENAME SelectStoredConstMemberFunctionPointerCall1<T, Class, Param1, Arg1>::type(fn, object, arg1))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
-QFuture<T> run(const Class *object, T (Class::*fn)(Param1, Param2) const, const Arg1 &arg1, const Arg2 &arg2)
-{
- return (new QT_TYPENAME SelectStoredConstMemberFunctionPointerCall2<T, Class, Param1, Arg1, Param2, Arg2>::type(fn, object, arg1, arg2))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
-QFuture<T> run(const Class *object, T (Class::*fn)(Param1, Param2, Param3) const, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3)
-{
- return (new QT_TYPENAME SelectStoredConstMemberFunctionPointerCall3<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3>::type(fn, object, arg1, arg2, arg3))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
-QFuture<T> run(const Class *object, T (Class::*fn)(Param1, Param2, Param3, Param4) const, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4)
-{
- return (new QT_TYPENAME SelectStoredConstMemberFunctionPointerCall4<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4>::type(fn, object, arg1, arg2, arg3, arg4))->start();
-}
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
-QFuture<T> run(const Class *object, T (Class::*fn)(Param1, Param2, Param3, Param4, Param5) const, const Arg1 &arg1, const Arg2 &arg2, const Arg3 &arg3, const Arg4 &arg4, const Arg5 &arg5)
-{
- return (new QT_TYPENAME SelectStoredConstMemberFunctionPointerCall5<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5>::type(fn, object, arg1, arg2, arg3, arg4, arg5))->start();
-}
-
-} //namespace QtConcurrent
-
-#endif // qdoc
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif
diff --git a/src/corelib/concurrent/qtconcurrentrunbase.h b/src/corelib/concurrent/qtconcurrentrunbase.h
deleted file mode 100644
index 51390028b0..0000000000
--- a/src/corelib/concurrent/qtconcurrentrunbase.h
+++ /dev/null
@@ -1,155 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QTCONCURRENT_RUNBASE_H
-#define QTCONCURRENT_RUNBASE_H
-
-#include <QtCore/qglobal.h>
-
-#ifndef QT_NO_CONCURRENT
-
-#include <QtCore/qfuture.h>
-#include <QtCore/qrunnable.h>
-#include <QtCore/qthreadpool.h>
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-#ifndef qdoc
-
-namespace QtConcurrent {
-
-template <typename T>
-struct SelectSpecialization
-{
- template <class Normal, class Void>
- struct Type { typedef Normal type; };
-};
-
-template <>
-struct SelectSpecialization<void>
-{
- template <class Normal, class Void>
- struct Type { typedef Void type; };
-};
-
-template <typename T>
-class RunFunctionTaskBase : public QFutureInterface<T> , public QRunnable
-{
-public:
- QFuture<T> start()
- {
- this->setRunnable(this);
- this->reportStarted();
- QFuture<T> theFuture = this->future();
- QThreadPool::globalInstance()->start(this, /*m_priority*/ 0);
- return theFuture;
- }
-
- void run() {}
- virtual void runFunctor() = 0;
-};
-
-template <typename T>
-class RunFunctionTask : public RunFunctionTaskBase<T>
-{
-public:
- void run()
- {
- if (this->isCanceled()) {
- this->reportFinished();
- return;
- }
-#ifndef QT_NO_EXCEPTIONS
- try {
-#endif
- this->runFunctor();
-#ifndef QT_NO_EXCEPTIONS
- } catch (QtConcurrent::Exception &e) {
- QFutureInterface<T>::reportException(e);
- } catch (...) {
- QFutureInterface<T>::reportException(QtConcurrent::UnhandledException());
- }
-#endif
-
- this->reportResult(result);
- this->reportFinished();
- }
- T result;
-};
-
-template <>
-class RunFunctionTask<void> : public RunFunctionTaskBase<void>
-{
-public:
- void run()
- {
- if (this->isCanceled()) {
- this->reportFinished();
- return;
- }
-#ifndef QT_NO_EXCEPTIONS
- try {
-#endif
- this->runFunctor();
-#ifndef QT_NO_EXCEPTIONS
- } catch (QtConcurrent::Exception &e) {
- QFutureInterface<void>::reportException(e);
- } catch (...) {
- QFutureInterface<void>::reportException(QtConcurrent::UnhandledException());
- }
-#endif
- this->reportFinished();
- }
-};
-
-} //namespace QtConcurrent
-
-#endif //qdoc
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif
diff --git a/src/corelib/concurrent/qtconcurrentstoredfunctioncall.h b/src/corelib/concurrent/qtconcurrentstoredfunctioncall.h
deleted file mode 100644
index 8a02497ddd..0000000000
--- a/src/corelib/concurrent/qtconcurrentstoredfunctioncall.h
+++ /dev/null
@@ -1,1313 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-// Generated code, do not edit! Use generator at tools/qtconcurrent/generaterun/
-#ifndef QTCONCURRENT_STOREDFUNCTIONCALL_H
-#define QTCONCURRENT_STOREDFUNCTIONCALL_H
-
-#include <QtCore/qglobal.h>
-
-#ifndef QT_NO_CONCURRENT
-#include <QtCore/qtconcurrentrunbase.h>
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-#ifndef qdoc
-
-namespace QtConcurrent {
-template <typename T, typename FunctionPointer>
-struct StoredFunctorCall0: public RunFunctionTask<T>
-{
- inline StoredFunctorCall0(FunctionPointer _function)
- : function(_function) {}
- void runFunctor() { this->result = function(); }
- FunctionPointer function;
-
-};
-
-template <typename FunctionPointer>
-struct StoredFunctorCall0<void, FunctionPointer>: public RunFunctionTask<void>
-{
- inline StoredFunctorCall0(FunctionPointer _function)
- : function(_function) {}
- void runFunctor() { function(); }
- FunctionPointer function;
-
-};
-
-template <typename T, typename FunctionPointer>
-struct StoredFunctorPointerCall0: public RunFunctionTask<T>
-{
- inline StoredFunctorPointerCall0(FunctionPointer * _function)
- : function(_function) {}
- void runFunctor() { this->result =(*function)(); }
- FunctionPointer * function;
-
-};
-
-template <typename T, typename FunctionPointer>
-struct VoidStoredFunctorPointerCall0: public RunFunctionTask<T>
-{
- inline VoidStoredFunctorPointerCall0(FunctionPointer * _function)
- : function(_function) {}
- void runFunctor() {(*function)(); }
- FunctionPointer * function;
-
-};
-
-template <typename T, typename FunctionPointer>
-struct SelectStoredFunctorPointerCall0
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredFunctorPointerCall0 <T, FunctionPointer>,
- VoidStoredFunctorPointerCall0<T, FunctionPointer> >::type type;
-};
-template <typename T, typename Class>
-class StoredMemberFunctionCall0 : public RunFunctionTask<T>
-{
-public:
- StoredMemberFunctionCall0(T (Class::*_fn)() , const Class &_object)
- : fn(_fn), object(_object){ }
-
- void runFunctor()
- {
- this->result = (object.*fn)();
- }
-private:
- T (Class::*fn)();
- Class object;
-
-};
-template <typename T, typename Class>
-class VoidStoredMemberFunctionCall0 : public RunFunctionTask<T>
-{
-public:
- VoidStoredMemberFunctionCall0(T (Class::*_fn)() , const Class &_object)
- : fn(_fn), object(_object){ }
-
- void runFunctor()
- {
- (object.*fn)();
- }
-private:
- T (Class::*fn)();
- Class object;
-
-};
-template <typename T, typename Class>
-struct SelectStoredMemberFunctionCall0
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredMemberFunctionCall0 <T, Class>,
- VoidStoredMemberFunctionCall0<T, Class> >::type type;
-};
-template <typename T, typename Class>
-class StoredConstMemberFunctionCall0 : public RunFunctionTask<T>
-{
-public:
- StoredConstMemberFunctionCall0(T (Class::*_fn)() const, const Class &_object)
- : fn(_fn), object(_object){ }
-
- void runFunctor()
- {
- this->result = (object.*fn)();
- }
-private:
- T (Class::*fn)()const;
- const Class object;
-
-};
-template <typename T, typename Class>
-class VoidStoredConstMemberFunctionCall0 : public RunFunctionTask<T>
-{
-public:
- VoidStoredConstMemberFunctionCall0(T (Class::*_fn)() const, const Class &_object)
- : fn(_fn), object(_object){ }
-
- void runFunctor()
- {
- (object.*fn)();
- }
-private:
- T (Class::*fn)()const;
- const Class object;
-
-};
-template <typename T, typename Class>
-struct SelectStoredConstMemberFunctionCall0
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredConstMemberFunctionCall0 <T, Class>,
- VoidStoredConstMemberFunctionCall0<T, Class> >::type type;
-};
-template <typename T, typename Class>
-class StoredMemberFunctionPointerCall0 : public RunFunctionTask<T>
-{
-public:
- StoredMemberFunctionPointerCall0(T (Class::*_fn)() , Class *_object)
- : fn(_fn), object(_object){ }
-
- void runFunctor()
- {
- this->result = (object->*fn)();
- }
-private:
- T (Class::*fn)();
- Class *object;
-
-};
-template <typename T, typename Class>
-class VoidStoredMemberFunctionPointerCall0 : public RunFunctionTask<T>
-{
-public:
- VoidStoredMemberFunctionPointerCall0(T (Class::*_fn)() , Class *_object)
- : fn(_fn), object(_object){ }
-
- void runFunctor()
- {
- (object->*fn)();
- }
-private:
- T (Class::*fn)();
- Class *object;
-
-};
-template <typename T, typename Class>
-struct SelectStoredMemberFunctionPointerCall0
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredMemberFunctionPointerCall0 <T, Class>,
- VoidStoredMemberFunctionPointerCall0<T, Class> >::type type;
-};
-template <typename T, typename Class>
-class StoredConstMemberFunctionPointerCall0 : public RunFunctionTask<T>
-{
-public:
- StoredConstMemberFunctionPointerCall0(T (Class::*_fn)() const, Class const *_object)
- : fn(_fn), object(_object){ }
-
- void runFunctor()
- {
- this->result = (object->*fn)();
- }
-private:
- T (Class::*fn)()const;
- Class const *object;
-
-};
-template <typename T, typename Class>
-class VoidStoredConstMemberFunctionPointerCall0 : public RunFunctionTask<T>
-{
-public:
- VoidStoredConstMemberFunctionPointerCall0(T (Class::*_fn)() const, Class const *_object)
- : fn(_fn), object(_object){ }
-
- void runFunctor()
- {
- (object->*fn)();
- }
-private:
- T (Class::*fn)()const;
- Class const *object;
-
-};
-template <typename T, typename Class>
-struct SelectStoredConstMemberFunctionPointerCall0
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredConstMemberFunctionPointerCall0 <T, Class>,
- VoidStoredConstMemberFunctionPointerCall0<T, Class> >::type type;
-};
-template <typename T, typename FunctionPointer, typename Arg1>
-struct StoredFunctorCall1: public RunFunctionTask<T>
-{
- inline StoredFunctorCall1(FunctionPointer _function, const Arg1 &_arg1)
- : function(_function), arg1(_arg1) {}
- void runFunctor() { this->result = function(arg1); }
- FunctionPointer function;
- Arg1 arg1;
-};
-
-template <typename FunctionPointer, typename Arg1>
-struct StoredFunctorCall1<void, FunctionPointer, Arg1>: public RunFunctionTask<void>
-{
- inline StoredFunctorCall1(FunctionPointer _function, const Arg1 &_arg1)
- : function(_function), arg1(_arg1) {}
- void runFunctor() { function(arg1); }
- FunctionPointer function;
- Arg1 arg1;
-};
-
-template <typename T, typename FunctionPointer, typename Arg1>
-struct StoredFunctorPointerCall1: public RunFunctionTask<T>
-{
- inline StoredFunctorPointerCall1(FunctionPointer * _function, const Arg1 &_arg1)
- : function(_function), arg1(_arg1) {}
- void runFunctor() { this->result =(*function)(arg1); }
- FunctionPointer * function;
- Arg1 arg1;
-};
-
-template <typename T, typename FunctionPointer, typename Arg1>
-struct VoidStoredFunctorPointerCall1: public RunFunctionTask<T>
-{
- inline VoidStoredFunctorPointerCall1(FunctionPointer * _function, const Arg1 &_arg1)
- : function(_function), arg1(_arg1) {}
- void runFunctor() {(*function)(arg1); }
- FunctionPointer * function;
- Arg1 arg1;
-};
-
-template <typename T, typename FunctionPointer, typename Arg1>
-struct SelectStoredFunctorPointerCall1
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredFunctorPointerCall1 <T, FunctionPointer, Arg1>,
- VoidStoredFunctorPointerCall1<T, FunctionPointer, Arg1> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1>
-class StoredMemberFunctionCall1 : public RunFunctionTask<T>
-{
-public:
- StoredMemberFunctionCall1(T (Class::*_fn)(Param1) , const Class &_object, const Arg1 &_arg1)
- : fn(_fn), object(_object), arg1(_arg1){ }
-
- void runFunctor()
- {
- this->result = (object.*fn)(arg1);
- }
-private:
- T (Class::*fn)(Param1);
- Class object;
- Arg1 arg1;
-};
-template <typename T, typename Class, typename Param1, typename Arg1>
-class VoidStoredMemberFunctionCall1 : public RunFunctionTask<T>
-{
-public:
- VoidStoredMemberFunctionCall1(T (Class::*_fn)(Param1) , const Class &_object, const Arg1 &_arg1)
- : fn(_fn), object(_object), arg1(_arg1){ }
-
- void runFunctor()
- {
- (object.*fn)(arg1);
- }
-private:
- T (Class::*fn)(Param1);
- Class object;
- Arg1 arg1;
-};
-template <typename T, typename Class, typename Param1, typename Arg1>
-struct SelectStoredMemberFunctionCall1
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredMemberFunctionCall1 <T, Class, Param1, Arg1>,
- VoidStoredMemberFunctionCall1<T, Class, Param1, Arg1> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1>
-class StoredConstMemberFunctionCall1 : public RunFunctionTask<T>
-{
-public:
- StoredConstMemberFunctionCall1(T (Class::*_fn)(Param1) const, const Class &_object, const Arg1 &_arg1)
- : fn(_fn), object(_object), arg1(_arg1){ }
-
- void runFunctor()
- {
- this->result = (object.*fn)(arg1);
- }
-private:
- T (Class::*fn)(Param1)const;
- const Class object;
- Arg1 arg1;
-};
-template <typename T, typename Class, typename Param1, typename Arg1>
-class VoidStoredConstMemberFunctionCall1 : public RunFunctionTask<T>
-{
-public:
- VoidStoredConstMemberFunctionCall1(T (Class::*_fn)(Param1) const, const Class &_object, const Arg1 &_arg1)
- : fn(_fn), object(_object), arg1(_arg1){ }
-
- void runFunctor()
- {
- (object.*fn)(arg1);
- }
-private:
- T (Class::*fn)(Param1)const;
- const Class object;
- Arg1 arg1;
-};
-template <typename T, typename Class, typename Param1, typename Arg1>
-struct SelectStoredConstMemberFunctionCall1
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredConstMemberFunctionCall1 <T, Class, Param1, Arg1>,
- VoidStoredConstMemberFunctionCall1<T, Class, Param1, Arg1> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1>
-class StoredMemberFunctionPointerCall1 : public RunFunctionTask<T>
-{
-public:
- StoredMemberFunctionPointerCall1(T (Class::*_fn)(Param1) , Class *_object, const Arg1 &_arg1)
- : fn(_fn), object(_object), arg1(_arg1){ }
-
- void runFunctor()
- {
- this->result = (object->*fn)(arg1);
- }
-private:
- T (Class::*fn)(Param1);
- Class *object;
- Arg1 arg1;
-};
-template <typename T, typename Class, typename Param1, typename Arg1>
-class VoidStoredMemberFunctionPointerCall1 : public RunFunctionTask<T>
-{
-public:
- VoidStoredMemberFunctionPointerCall1(T (Class::*_fn)(Param1) , Class *_object, const Arg1 &_arg1)
- : fn(_fn), object(_object), arg1(_arg1){ }
-
- void runFunctor()
- {
- (object->*fn)(arg1);
- }
-private:
- T (Class::*fn)(Param1);
- Class *object;
- Arg1 arg1;
-};
-template <typename T, typename Class, typename Param1, typename Arg1>
-struct SelectStoredMemberFunctionPointerCall1
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredMemberFunctionPointerCall1 <T, Class, Param1, Arg1>,
- VoidStoredMemberFunctionPointerCall1<T, Class, Param1, Arg1> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1>
-class StoredConstMemberFunctionPointerCall1 : public RunFunctionTask<T>
-{
-public:
- StoredConstMemberFunctionPointerCall1(T (Class::*_fn)(Param1) const, Class const *_object, const Arg1 &_arg1)
- : fn(_fn), object(_object), arg1(_arg1){ }
-
- void runFunctor()
- {
- this->result = (object->*fn)(arg1);
- }
-private:
- T (Class::*fn)(Param1)const;
- Class const *object;
- Arg1 arg1;
-};
-template <typename T, typename Class, typename Param1, typename Arg1>
-class VoidStoredConstMemberFunctionPointerCall1 : public RunFunctionTask<T>
-{
-public:
- VoidStoredConstMemberFunctionPointerCall1(T (Class::*_fn)(Param1) const, Class const *_object, const Arg1 &_arg1)
- : fn(_fn), object(_object), arg1(_arg1){ }
-
- void runFunctor()
- {
- (object->*fn)(arg1);
- }
-private:
- T (Class::*fn)(Param1)const;
- Class const *object;
- Arg1 arg1;
-};
-template <typename T, typename Class, typename Param1, typename Arg1>
-struct SelectStoredConstMemberFunctionPointerCall1
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredConstMemberFunctionPointerCall1 <T, Class, Param1, Arg1>,
- VoidStoredConstMemberFunctionPointerCall1<T, Class, Param1, Arg1> >::type type;
-};
-template <typename T, typename FunctionPointer, typename Arg1, typename Arg2>
-struct StoredFunctorCall2: public RunFunctionTask<T>
-{
- inline StoredFunctorCall2(FunctionPointer _function, const Arg1 &_arg1, const Arg2 &_arg2)
- : function(_function), arg1(_arg1), arg2(_arg2) {}
- void runFunctor() { this->result = function(arg1, arg2); }
- FunctionPointer function;
- Arg1 arg1; Arg2 arg2;
-};
-
-template <typename FunctionPointer, typename Arg1, typename Arg2>
-struct StoredFunctorCall2<void, FunctionPointer, Arg1, Arg2>: public RunFunctionTask<void>
-{
- inline StoredFunctorCall2(FunctionPointer _function, const Arg1 &_arg1, const Arg2 &_arg2)
- : function(_function), arg1(_arg1), arg2(_arg2) {}
- void runFunctor() { function(arg1, arg2); }
- FunctionPointer function;
- Arg1 arg1; Arg2 arg2;
-};
-
-template <typename T, typename FunctionPointer, typename Arg1, typename Arg2>
-struct StoredFunctorPointerCall2: public RunFunctionTask<T>
-{
- inline StoredFunctorPointerCall2(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2)
- : function(_function), arg1(_arg1), arg2(_arg2) {}
- void runFunctor() { this->result =(*function)(arg1, arg2); }
- FunctionPointer * function;
- Arg1 arg1; Arg2 arg2;
-};
-
-template <typename T, typename FunctionPointer, typename Arg1, typename Arg2>
-struct VoidStoredFunctorPointerCall2: public RunFunctionTask<T>
-{
- inline VoidStoredFunctorPointerCall2(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2)
- : function(_function), arg1(_arg1), arg2(_arg2) {}
- void runFunctor() {(*function)(arg1, arg2); }
- FunctionPointer * function;
- Arg1 arg1; Arg2 arg2;
-};
-
-template <typename T, typename FunctionPointer, typename Arg1, typename Arg2>
-struct SelectStoredFunctorPointerCall2
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredFunctorPointerCall2 <T, FunctionPointer, Arg1, Arg2>,
- VoidStoredFunctorPointerCall2<T, FunctionPointer, Arg1, Arg2> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
-class StoredMemberFunctionCall2 : public RunFunctionTask<T>
-{
-public:
- StoredMemberFunctionCall2(T (Class::*_fn)(Param1, Param2) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
-
- void runFunctor()
- {
- this->result = (object.*fn)(arg1, arg2);
- }
-private:
- T (Class::*fn)(Param1, Param2);
- Class object;
- Arg1 arg1; Arg2 arg2;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
-class VoidStoredMemberFunctionCall2 : public RunFunctionTask<T>
-{
-public:
- VoidStoredMemberFunctionCall2(T (Class::*_fn)(Param1, Param2) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
-
- void runFunctor()
- {
- (object.*fn)(arg1, arg2);
- }
-private:
- T (Class::*fn)(Param1, Param2);
- Class object;
- Arg1 arg1; Arg2 arg2;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
-struct SelectStoredMemberFunctionCall2
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredMemberFunctionCall2 <T, Class, Param1, Arg1, Param2, Arg2>,
- VoidStoredMemberFunctionCall2<T, Class, Param1, Arg1, Param2, Arg2> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
-class StoredConstMemberFunctionCall2 : public RunFunctionTask<T>
-{
-public:
- StoredConstMemberFunctionCall2(T (Class::*_fn)(Param1, Param2) const, const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
-
- void runFunctor()
- {
- this->result = (object.*fn)(arg1, arg2);
- }
-private:
- T (Class::*fn)(Param1, Param2)const;
- const Class object;
- Arg1 arg1; Arg2 arg2;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
-class VoidStoredConstMemberFunctionCall2 : public RunFunctionTask<T>
-{
-public:
- VoidStoredConstMemberFunctionCall2(T (Class::*_fn)(Param1, Param2) const, const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
-
- void runFunctor()
- {
- (object.*fn)(arg1, arg2);
- }
-private:
- T (Class::*fn)(Param1, Param2)const;
- const Class object;
- Arg1 arg1; Arg2 arg2;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
-struct SelectStoredConstMemberFunctionCall2
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredConstMemberFunctionCall2 <T, Class, Param1, Arg1, Param2, Arg2>,
- VoidStoredConstMemberFunctionCall2<T, Class, Param1, Arg1, Param2, Arg2> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
-class StoredMemberFunctionPointerCall2 : public RunFunctionTask<T>
-{
-public:
- StoredMemberFunctionPointerCall2(T (Class::*_fn)(Param1, Param2) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
-
- void runFunctor()
- {
- this->result = (object->*fn)(arg1, arg2);
- }
-private:
- T (Class::*fn)(Param1, Param2);
- Class *object;
- Arg1 arg1; Arg2 arg2;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
-class VoidStoredMemberFunctionPointerCall2 : public RunFunctionTask<T>
-{
-public:
- VoidStoredMemberFunctionPointerCall2(T (Class::*_fn)(Param1, Param2) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
-
- void runFunctor()
- {
- (object->*fn)(arg1, arg2);
- }
-private:
- T (Class::*fn)(Param1, Param2);
- Class *object;
- Arg1 arg1; Arg2 arg2;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
-struct SelectStoredMemberFunctionPointerCall2
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredMemberFunctionPointerCall2 <T, Class, Param1, Arg1, Param2, Arg2>,
- VoidStoredMemberFunctionPointerCall2<T, Class, Param1, Arg1, Param2, Arg2> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
-class StoredConstMemberFunctionPointerCall2 : public RunFunctionTask<T>
-{
-public:
- StoredConstMemberFunctionPointerCall2(T (Class::*_fn)(Param1, Param2) const, Class const *_object, const Arg1 &_arg1, const Arg2 &_arg2)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
-
- void runFunctor()
- {
- this->result = (object->*fn)(arg1, arg2);
- }
-private:
- T (Class::*fn)(Param1, Param2)const;
- Class const *object;
- Arg1 arg1; Arg2 arg2;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
-class VoidStoredConstMemberFunctionPointerCall2 : public RunFunctionTask<T>
-{
-public:
- VoidStoredConstMemberFunctionPointerCall2(T (Class::*_fn)(Param1, Param2) const, Class const *_object, const Arg1 &_arg1, const Arg2 &_arg2)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2){ }
-
- void runFunctor()
- {
- (object->*fn)(arg1, arg2);
- }
-private:
- T (Class::*fn)(Param1, Param2)const;
- Class const *object;
- Arg1 arg1; Arg2 arg2;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2>
-struct SelectStoredConstMemberFunctionPointerCall2
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredConstMemberFunctionPointerCall2 <T, Class, Param1, Arg1, Param2, Arg2>,
- VoidStoredConstMemberFunctionPointerCall2<T, Class, Param1, Arg1, Param2, Arg2> >::type type;
-};
-template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3>
-struct StoredFunctorCall3: public RunFunctionTask<T>
-{
- inline StoredFunctorCall3(FunctionPointer _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
- : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3) {}
- void runFunctor() { this->result = function(arg1, arg2, arg3); }
- FunctionPointer function;
- Arg1 arg1; Arg2 arg2; Arg3 arg3;
-};
-
-template <typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3>
-struct StoredFunctorCall3<void, FunctionPointer, Arg1, Arg2, Arg3>: public RunFunctionTask<void>
-{
- inline StoredFunctorCall3(FunctionPointer _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
- : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3) {}
- void runFunctor() { function(arg1, arg2, arg3); }
- FunctionPointer function;
- Arg1 arg1; Arg2 arg2; Arg3 arg3;
-};
-
-template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3>
-struct StoredFunctorPointerCall3: public RunFunctionTask<T>
-{
- inline StoredFunctorPointerCall3(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
- : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3) {}
- void runFunctor() { this->result =(*function)(arg1, arg2, arg3); }
- FunctionPointer * function;
- Arg1 arg1; Arg2 arg2; Arg3 arg3;
-};
-
-template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3>
-struct VoidStoredFunctorPointerCall3: public RunFunctionTask<T>
-{
- inline VoidStoredFunctorPointerCall3(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
- : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3) {}
- void runFunctor() {(*function)(arg1, arg2, arg3); }
- FunctionPointer * function;
- Arg1 arg1; Arg2 arg2; Arg3 arg3;
-};
-
-template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3>
-struct SelectStoredFunctorPointerCall3
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredFunctorPointerCall3 <T, FunctionPointer, Arg1, Arg2, Arg3>,
- VoidStoredFunctorPointerCall3<T, FunctionPointer, Arg1, Arg2, Arg3> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
-class StoredMemberFunctionCall3 : public RunFunctionTask<T>
-{
-public:
- StoredMemberFunctionCall3(T (Class::*_fn)(Param1, Param2, Param3) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
-
- void runFunctor()
- {
- this->result = (object.*fn)(arg1, arg2, arg3);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3);
- Class object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
-class VoidStoredMemberFunctionCall3 : public RunFunctionTask<T>
-{
-public:
- VoidStoredMemberFunctionCall3(T (Class::*_fn)(Param1, Param2, Param3) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
-
- void runFunctor()
- {
- (object.*fn)(arg1, arg2, arg3);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3);
- Class object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
-struct SelectStoredMemberFunctionCall3
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredMemberFunctionCall3 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3>,
- VoidStoredMemberFunctionCall3<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
-class StoredConstMemberFunctionCall3 : public RunFunctionTask<T>
-{
-public:
- StoredConstMemberFunctionCall3(T (Class::*_fn)(Param1, Param2, Param3) const, const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
-
- void runFunctor()
- {
- this->result = (object.*fn)(arg1, arg2, arg3);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3)const;
- const Class object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
-class VoidStoredConstMemberFunctionCall3 : public RunFunctionTask<T>
-{
-public:
- VoidStoredConstMemberFunctionCall3(T (Class::*_fn)(Param1, Param2, Param3) const, const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
-
- void runFunctor()
- {
- (object.*fn)(arg1, arg2, arg3);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3)const;
- const Class object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
-struct SelectStoredConstMemberFunctionCall3
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredConstMemberFunctionCall3 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3>,
- VoidStoredConstMemberFunctionCall3<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
-class StoredMemberFunctionPointerCall3 : public RunFunctionTask<T>
-{
-public:
- StoredMemberFunctionPointerCall3(T (Class::*_fn)(Param1, Param2, Param3) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
-
- void runFunctor()
- {
- this->result = (object->*fn)(arg1, arg2, arg3);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3);
- Class *object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
-class VoidStoredMemberFunctionPointerCall3 : public RunFunctionTask<T>
-{
-public:
- VoidStoredMemberFunctionPointerCall3(T (Class::*_fn)(Param1, Param2, Param3) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
-
- void runFunctor()
- {
- (object->*fn)(arg1, arg2, arg3);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3);
- Class *object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
-struct SelectStoredMemberFunctionPointerCall3
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredMemberFunctionPointerCall3 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3>,
- VoidStoredMemberFunctionPointerCall3<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
-class StoredConstMemberFunctionPointerCall3 : public RunFunctionTask<T>
-{
-public:
- StoredConstMemberFunctionPointerCall3(T (Class::*_fn)(Param1, Param2, Param3) const, Class const *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
-
- void runFunctor()
- {
- this->result = (object->*fn)(arg1, arg2, arg3);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3)const;
- Class const *object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
-class VoidStoredConstMemberFunctionPointerCall3 : public RunFunctionTask<T>
-{
-public:
- VoidStoredConstMemberFunctionPointerCall3(T (Class::*_fn)(Param1, Param2, Param3) const, Class const *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3){ }
-
- void runFunctor()
- {
- (object->*fn)(arg1, arg2, arg3);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3)const;
- Class const *object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3>
-struct SelectStoredConstMemberFunctionPointerCall3
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredConstMemberFunctionPointerCall3 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3>,
- VoidStoredConstMemberFunctionPointerCall3<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3> >::type type;
-};
-template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
-struct StoredFunctorCall4: public RunFunctionTask<T>
-{
- inline StoredFunctorCall4(FunctionPointer _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
- : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4) {}
- void runFunctor() { this->result = function(arg1, arg2, arg3, arg4); }
- FunctionPointer function;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
-};
-
-template <typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
-struct StoredFunctorCall4<void, FunctionPointer, Arg1, Arg2, Arg3, Arg4>: public RunFunctionTask<void>
-{
- inline StoredFunctorCall4(FunctionPointer _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
- : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4) {}
- void runFunctor() { function(arg1, arg2, arg3, arg4); }
- FunctionPointer function;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
-};
-
-template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
-struct StoredFunctorPointerCall4: public RunFunctionTask<T>
-{
- inline StoredFunctorPointerCall4(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
- : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4) {}
- void runFunctor() { this->result =(*function)(arg1, arg2, arg3, arg4); }
- FunctionPointer * function;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
-};
-
-template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
-struct VoidStoredFunctorPointerCall4: public RunFunctionTask<T>
-{
- inline VoidStoredFunctorPointerCall4(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
- : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4) {}
- void runFunctor() {(*function)(arg1, arg2, arg3, arg4); }
- FunctionPointer * function;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
-};
-
-template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4>
-struct SelectStoredFunctorPointerCall4
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredFunctorPointerCall4 <T, FunctionPointer, Arg1, Arg2, Arg3, Arg4>,
- VoidStoredFunctorPointerCall4<T, FunctionPointer, Arg1, Arg2, Arg3, Arg4> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
-class StoredMemberFunctionCall4 : public RunFunctionTask<T>
-{
-public:
- StoredMemberFunctionCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
-
- void runFunctor()
- {
- this->result = (object.*fn)(arg1, arg2, arg3, arg4);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3, Param4);
- Class object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
-class VoidStoredMemberFunctionCall4 : public RunFunctionTask<T>
-{
-public:
- VoidStoredMemberFunctionCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
-
- void runFunctor()
- {
- (object.*fn)(arg1, arg2, arg3, arg4);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3, Param4);
- Class object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
-struct SelectStoredMemberFunctionCall4
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredMemberFunctionCall4 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4>,
- VoidStoredMemberFunctionCall4<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
-class StoredConstMemberFunctionCall4 : public RunFunctionTask<T>
-{
-public:
- StoredConstMemberFunctionCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) const, const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
-
- void runFunctor()
- {
- this->result = (object.*fn)(arg1, arg2, arg3, arg4);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3, Param4)const;
- const Class object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
-class VoidStoredConstMemberFunctionCall4 : public RunFunctionTask<T>
-{
-public:
- VoidStoredConstMemberFunctionCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) const, const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
-
- void runFunctor()
- {
- (object.*fn)(arg1, arg2, arg3, arg4);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3, Param4)const;
- const Class object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
-struct SelectStoredConstMemberFunctionCall4
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredConstMemberFunctionCall4 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4>,
- VoidStoredConstMemberFunctionCall4<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
-class StoredMemberFunctionPointerCall4 : public RunFunctionTask<T>
-{
-public:
- StoredMemberFunctionPointerCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
-
- void runFunctor()
- {
- this->result = (object->*fn)(arg1, arg2, arg3, arg4);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3, Param4);
- Class *object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
-class VoidStoredMemberFunctionPointerCall4 : public RunFunctionTask<T>
-{
-public:
- VoidStoredMemberFunctionPointerCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
-
- void runFunctor()
- {
- (object->*fn)(arg1, arg2, arg3, arg4);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3, Param4);
- Class *object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
-struct SelectStoredMemberFunctionPointerCall4
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredMemberFunctionPointerCall4 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4>,
- VoidStoredMemberFunctionPointerCall4<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
-class StoredConstMemberFunctionPointerCall4 : public RunFunctionTask<T>
-{
-public:
- StoredConstMemberFunctionPointerCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) const, Class const *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
-
- void runFunctor()
- {
- this->result = (object->*fn)(arg1, arg2, arg3, arg4);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3, Param4)const;
- Class const *object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
-class VoidStoredConstMemberFunctionPointerCall4 : public RunFunctionTask<T>
-{
-public:
- VoidStoredConstMemberFunctionPointerCall4(T (Class::*_fn)(Param1, Param2, Param3, Param4) const, Class const *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4){ }
-
- void runFunctor()
- {
- (object->*fn)(arg1, arg2, arg3, arg4);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3, Param4)const;
- Class const *object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4>
-struct SelectStoredConstMemberFunctionPointerCall4
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredConstMemberFunctionPointerCall4 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4>,
- VoidStoredConstMemberFunctionPointerCall4<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4> >::type type;
-};
-template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
-struct StoredFunctorCall5: public RunFunctionTask<T>
-{
- inline StoredFunctorCall5(FunctionPointer _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
- : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5) {}
- void runFunctor() { this->result = function(arg1, arg2, arg3, arg4, arg5); }
- FunctionPointer function;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
-};
-
-template <typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
-struct StoredFunctorCall5<void, FunctionPointer, Arg1, Arg2, Arg3, Arg4, Arg5>: public RunFunctionTask<void>
-{
- inline StoredFunctorCall5(FunctionPointer _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
- : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5) {}
- void runFunctor() { function(arg1, arg2, arg3, arg4, arg5); }
- FunctionPointer function;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
-};
-
-template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
-struct StoredFunctorPointerCall5: public RunFunctionTask<T>
-{
- inline StoredFunctorPointerCall5(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
- : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5) {}
- void runFunctor() { this->result =(*function)(arg1, arg2, arg3, arg4, arg5); }
- FunctionPointer * function;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
-};
-
-template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
-struct VoidStoredFunctorPointerCall5: public RunFunctionTask<T>
-{
- inline VoidStoredFunctorPointerCall5(FunctionPointer * _function, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
- : function(_function), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5) {}
- void runFunctor() {(*function)(arg1, arg2, arg3, arg4, arg5); }
- FunctionPointer * function;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
-};
-
-template <typename T, typename FunctionPointer, typename Arg1, typename Arg2, typename Arg3, typename Arg4, typename Arg5>
-struct SelectStoredFunctorPointerCall5
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredFunctorPointerCall5 <T, FunctionPointer, Arg1, Arg2, Arg3, Arg4, Arg5>,
- VoidStoredFunctorPointerCall5<T, FunctionPointer, Arg1, Arg2, Arg3, Arg4, Arg5> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
-class StoredMemberFunctionCall5 : public RunFunctionTask<T>
-{
-public:
- StoredMemberFunctionCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
-
- void runFunctor()
- {
- this->result = (object.*fn)(arg1, arg2, arg3, arg4, arg5);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3, Param4, Param5);
- Class object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
-class VoidStoredMemberFunctionCall5 : public RunFunctionTask<T>
-{
-public:
- VoidStoredMemberFunctionCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) , const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
-
- void runFunctor()
- {
- (object.*fn)(arg1, arg2, arg3, arg4, arg5);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3, Param4, Param5);
- Class object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
-struct SelectStoredMemberFunctionCall5
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredMemberFunctionCall5 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5>,
- VoidStoredMemberFunctionCall5<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
-class StoredConstMemberFunctionCall5 : public RunFunctionTask<T>
-{
-public:
- StoredConstMemberFunctionCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) const, const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
-
- void runFunctor()
- {
- this->result = (object.*fn)(arg1, arg2, arg3, arg4, arg5);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3, Param4, Param5)const;
- const Class object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
-class VoidStoredConstMemberFunctionCall5 : public RunFunctionTask<T>
-{
-public:
- VoidStoredConstMemberFunctionCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) const, const Class &_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
-
- void runFunctor()
- {
- (object.*fn)(arg1, arg2, arg3, arg4, arg5);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3, Param4, Param5)const;
- const Class object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
-struct SelectStoredConstMemberFunctionCall5
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredConstMemberFunctionCall5 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5>,
- VoidStoredConstMemberFunctionCall5<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
-class StoredMemberFunctionPointerCall5 : public RunFunctionTask<T>
-{
-public:
- StoredMemberFunctionPointerCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
-
- void runFunctor()
- {
- this->result = (object->*fn)(arg1, arg2, arg3, arg4, arg5);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3, Param4, Param5);
- Class *object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
-class VoidStoredMemberFunctionPointerCall5 : public RunFunctionTask<T>
-{
-public:
- VoidStoredMemberFunctionPointerCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) , Class *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
-
- void runFunctor()
- {
- (object->*fn)(arg1, arg2, arg3, arg4, arg5);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3, Param4, Param5);
- Class *object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
-struct SelectStoredMemberFunctionPointerCall5
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredMemberFunctionPointerCall5 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5>,
- VoidStoredMemberFunctionPointerCall5<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5> >::type type;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
-class StoredConstMemberFunctionPointerCall5 : public RunFunctionTask<T>
-{
-public:
- StoredConstMemberFunctionPointerCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) const, Class const *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
-
- void runFunctor()
- {
- this->result = (object->*fn)(arg1, arg2, arg3, arg4, arg5);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3, Param4, Param5)const;
- Class const *object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
-class VoidStoredConstMemberFunctionPointerCall5 : public RunFunctionTask<T>
-{
-public:
- VoidStoredConstMemberFunctionPointerCall5(T (Class::*_fn)(Param1, Param2, Param3, Param4, Param5) const, Class const *_object, const Arg1 &_arg1, const Arg2 &_arg2, const Arg3 &_arg3, const Arg4 &_arg4, const Arg5 &_arg5)
- : fn(_fn), object(_object), arg1(_arg1), arg2(_arg2), arg3(_arg3), arg4(_arg4), arg5(_arg5){ }
-
- void runFunctor()
- {
- (object->*fn)(arg1, arg2, arg3, arg4, arg5);
- }
-private:
- T (Class::*fn)(Param1, Param2, Param3, Param4, Param5)const;
- Class const *object;
- Arg1 arg1; Arg2 arg2; Arg3 arg3; Arg4 arg4; Arg5 arg5;
-};
-template <typename T, typename Class, typename Param1, typename Arg1, typename Param2, typename Arg2, typename Param3, typename Arg3, typename Param4, typename Arg4, typename Param5, typename Arg5>
-struct SelectStoredConstMemberFunctionPointerCall5
-{
- typedef typename SelectSpecialization<T>::template
- Type<StoredConstMemberFunctionPointerCall5 <T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5>,
- VoidStoredConstMemberFunctionPointerCall5<T, Class, Param1, Arg1, Param2, Arg2, Param3, Arg3, Param4, Arg4, Param5, Arg5> >::type type;
-};
-
-template <typename T, typename Functor>
-class StoredFunctorCall : public RunFunctionTask<T>
-{
-public:
- StoredFunctorCall(const Functor &f) : functor(f) { }
- void runFunctor()
- {
- this->result = functor();
- }
-private:
- Functor functor;
-};
-template <typename Functor>
-class StoredFunctorCall<void, Functor> : public RunFunctionTask<void>
-{
-public:
- StoredFunctorCall(const Functor &f) : functor(f) { }
- void runFunctor()
- {
- functor();
- }
-private:
- Functor functor;
-};
-
-
-} //namespace QtConcurrent
-
-#endif // qdoc
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif
diff --git a/src/corelib/concurrent/qtconcurrentthreadengine.cpp b/src/corelib/concurrent/qtconcurrentthreadengine.cpp
deleted file mode 100644
index 559e7bb490..0000000000
--- a/src/corelib/concurrent/qtconcurrentthreadengine.cpp
+++ /dev/null
@@ -1,299 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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 "qtconcurrentthreadengine.h"
-
-#ifndef QT_NO_CONCURRENT
-
-QT_BEGIN_NAMESPACE
-
-namespace QtConcurrent {
-
-ThreadEngineBarrier::ThreadEngineBarrier()
-:count(0) { }
-
-void ThreadEngineBarrier::acquire()
-{
- forever {
- int localCount = count.load();
- if (localCount < 0) {
- if (count.testAndSetOrdered(localCount, localCount -1))
- return;
- } else {
- if (count.testAndSetOrdered(localCount, localCount + 1))
- return;
- }
- }
-}
-
-int ThreadEngineBarrier::release()
-{
- forever {
- int localCount = count.load();
- if (localCount == -1) {
- if (count.testAndSetOrdered(-1, 0)) {
- semaphore.release();
- return 0;
- }
- } else if (localCount < 0) {
- if (count.testAndSetOrdered(localCount, localCount + 1))
- return qAbs(localCount + 1);
- } else {
- if (count.testAndSetOrdered(localCount, localCount - 1))
- return localCount - 1;
- }
- }
-}
-
-// Wait until all threads have been released
-void ThreadEngineBarrier::wait()
-{
- forever {
- int localCount = count.load();
- if (localCount == 0)
- return;
-
- Q_ASSERT(localCount > 0); // multiple waiters are not allowed.
- if (count.testAndSetOrdered(localCount, -localCount)) {
- semaphore.acquire();
- return;
- }
- }
-}
-
-int ThreadEngineBarrier::currentCount()
-{
- return count.load();
-}
-
-// releases a thread, unless this is the last thread.
-// returns true if the thread was released.
-bool ThreadEngineBarrier::releaseUnlessLast()
-{
- forever {
- int localCount = count.load();
- if (qAbs(localCount) == 1) {
- return false;
- } else if (localCount < 0) {
- if (count.testAndSetOrdered(localCount, localCount + 1))
- return true;
- } else {
- if (count.testAndSetOrdered(localCount, localCount - 1))
- return true;
- }
- }
-}
-
-ThreadEngineBase::ThreadEngineBase()
-:futureInterface(0), threadPool(QThreadPool::globalInstance())
-{
- setAutoDelete(false);
-}
-
-ThreadEngineBase::~ThreadEngineBase() {}
-
-void ThreadEngineBase::startSingleThreaded()
-{
- start();
- while (threadFunction() != ThreadFinished)
- ;
- finish();
-}
-
-void ThreadEngineBase::startBlocking()
-{
- start();
- barrier.acquire();
- startThreads();
-
- bool throttled = false;
-#ifndef QT_NO_EXCEPTIONS
- try {
-#endif
- while (threadFunction() == ThrottleThread) {
- if (threadThrottleExit()) {
- throttled = true;
- break;
- }
- }
-#ifndef QT_NO_EXCEPTIONS
- } catch (QtConcurrent::Exception &e) {
- handleException(e);
- } catch (...) {
- handleException(QtConcurrent::UnhandledException());
- }
-#endif
-
- if (throttled == false) {
- barrier.release();
- }
-
- barrier.wait();
- finish();
- exceptionStore.throwPossibleException();
-}
-
-void ThreadEngineBase::startThread()
-{
- startThreadInternal();
-}
-
-void ThreadEngineBase::acquireBarrierSemaphore()
-{
- barrier.acquire();
-}
-
-bool ThreadEngineBase::isCanceled()
-{
- if (futureInterface)
- return futureInterface->isCanceled();
- else
- return false;
-}
-
-void ThreadEngineBase::waitForResume()
-{
- if (futureInterface)
- futureInterface->waitForResume();
-}
-
-bool ThreadEngineBase::isProgressReportingEnabled()
-{
- // If we don't have a QFuture, there is no-one to report the progress to.
- return (futureInterface != 0);
-}
-
-void ThreadEngineBase::setProgressValue(int progress)
-{
- if (futureInterface)
- futureInterface->setProgressValue(progress);
-}
-
-void ThreadEngineBase::setProgressRange(int minimum, int maximum)
-{
- if (futureInterface)
- futureInterface->setProgressRange(minimum, maximum);
-}
-
-bool ThreadEngineBase::startThreadInternal()
-{
- if (this->isCanceled())
- return false;
-
- barrier.acquire();
- if (!threadPool->tryStart(this)) {
- barrier.release();
- return false;
- }
- return true;
-}
-
-void ThreadEngineBase::startThreads()
-{
- while (shouldStartThread() && startThreadInternal())
- ;
-}
-
-void ThreadEngineBase::threadExit()
-{
- const bool asynchronous = futureInterface != 0;
- const int lastThread = (barrier.release() == 0);
-
- if (lastThread && asynchronous)
- this->asynchronousFinish();
-}
-
-// Called by a worker thread that wants to be throttled. If the current number
-// of running threads is larger than one the thread is allowed to exit and
-// this function returns one.
-bool ThreadEngineBase::threadThrottleExit()
-{
- return barrier.releaseUnlessLast();
-}
-
-void ThreadEngineBase::run() // implements QRunnable.
-{
- if (this->isCanceled()) {
- threadExit();
- return;
- }
-
- startThreads();
-
-#ifndef QT_NO_EXCEPTIONS
- try {
-#endif
- while (threadFunction() == ThrottleThread) {
- // threadFunction returning ThrottleThread means it that the user
- // struct wants to be throttled by making a worker thread exit.
- // Respect that request unless this is the only worker thread left
- // running, in which case it has to keep going.
- if (threadThrottleExit())
- return;
- }
-
-#ifndef QT_NO_EXCEPTIONS
- } catch (QtConcurrent::Exception &e) {
- handleException(e);
- } catch (...) {
- handleException(QtConcurrent::UnhandledException());
- }
-#endif
- threadExit();
-}
-
-#ifndef QT_NO_EXCEPTIONS
-
-void ThreadEngineBase::handleException(const QtConcurrent::Exception &exception)
-{
- if (futureInterface)
- futureInterface->reportException(exception);
- else
- exceptionStore.setException(exception);
-}
-#endif
-
-
-} // namepsace QtConcurrent
-
-QT_END_NAMESPACE
-
-#endif // QT_NO_CONCURRENT
diff --git a/src/corelib/concurrent/qtconcurrentthreadengine.h b/src/corelib/concurrent/qtconcurrentthreadengine.h
deleted file mode 100644
index 98edd2d9ec..0000000000
--- a/src/corelib/concurrent/qtconcurrentthreadengine.h
+++ /dev/null
@@ -1,285 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QTCONCURRENT_THREADENGINE_H
-#define QTCONCURRENT_THREADENGINE_H
-
-#include <QtCore/qglobal.h>
-
-#ifndef QT_NO_CONCURRENT
-
-#include <QtCore/qthreadpool.h>
-#include <QtCore/qfuture.h>
-#include <QtCore/qdebug.h>
-#include <QtCore/qtconcurrentexception.h>
-#include <QtCore/qwaitcondition.h>
-#include <QtCore/qatomic.h>
-#include <QtCore/qsemaphore.h>
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-#ifndef qdoc
-
-namespace QtConcurrent {
-
-// The ThreadEngineBarrier counts worker threads, and allows one
-// thread to wait for all others to finish. Tested for its use in
-// QtConcurrent, requires more testing for use as a general class.
-class ThreadEngineBarrier
-{
-private:
- // The thread count is maintained as an integer in the count atomic
- // variable. The count can be either positive or negative - a negative
- // count signals that a thread is waiting on the barrier.
-
- // BC note: inlined code from Qt < 4.6 will expect to find the QMutex
- // and QAtomicInt here. ### Qt 5: remove.
- QMutex mutex;
- QAtomicInt count;
-
- QSemaphore semaphore;
-public:
- ThreadEngineBarrier();
- void acquire();
- int release();
- void wait();
- int currentCount();
- bool releaseUnlessLast();
-};
-
-enum ThreadFunctionResult { ThrottleThread, ThreadFinished };
-
-// The ThreadEngine controls the threads used in the computation.
-// Can be run in three modes: single threaded, multi-threaded blocking
-// and multi-threaded asynchronous.
-// The code for the single threaded mode is
-class Q_CORE_EXPORT ThreadEngineBase: public QRunnable
-{
-public:
- // Public API:
- ThreadEngineBase();
- virtual ~ThreadEngineBase();
- void startSingleThreaded();
- void startBlocking();
- void startThread();
- bool isCanceled();
- void waitForResume();
- bool isProgressReportingEnabled();
- void setProgressValue(int progress);
- void setProgressRange(int minimum, int maximum);
- void acquireBarrierSemaphore();
-
-protected: // The user overrides these:
- virtual void start() {}
- virtual void finish() {}
- virtual ThreadFunctionResult threadFunction() { return ThreadFinished; }
- virtual bool shouldStartThread() { return futureInterface ? !futureInterface->isPaused() : true; }
- virtual bool shouldThrottleThread() { return futureInterface ? futureInterface->isPaused() : false; }
-private:
- bool startThreadInternal();
- void startThreads();
- void threadExit();
- bool threadThrottleExit();
- void run();
- virtual void asynchronousFinish() = 0;
-#ifndef QT_NO_EXCEPTIONS
- void handleException(const QtConcurrent::Exception &exception);
-#endif
-protected:
- QFutureInterfaceBase *futureInterface;
- QThreadPool *threadPool;
- ThreadEngineBarrier barrier;
- QtConcurrent::internal::ExceptionStore exceptionStore;
-};
-
-
-template <typename T>
-class ThreadEngine : public virtual ThreadEngineBase
-{
-public:
- typedef T ResultType;
-
- virtual T *result() { return 0; }
-
- QFutureInterface<T> *futureInterfaceTyped()
- {
- return static_cast<QFutureInterface<T> *>(futureInterface);
- }
-
- // Runs the user algorithm using a single thread.
- T *startSingleThreaded()
- {
- ThreadEngineBase::startSingleThreaded();
- return result();
- }
-
- // Runs the user algorithm using multiple threads.
- // This function blocks until the algorithm is finished,
- // and then returns the result.
- T *startBlocking()
- {
- ThreadEngineBase::startBlocking();
- return result();
- }
-
- // Runs the user algorithm using multiple threads.
- // Does not block, returns a future.
- QFuture<T> startAsynchronously()
- {
- futureInterface = new QFutureInterface<T>();
-
- // reportStart() must be called before starting threads, otherwise the
- // user algorithm might finish while reportStart() is running, which
- // is very bad.
- futureInterface->reportStarted();
- QFuture<T> future = QFuture<T>(futureInterfaceTyped());
- start();
-
- acquireBarrierSemaphore();
- threadPool->start(this);
- return future;
- }
-
- void asynchronousFinish()
- {
- finish();
- futureInterfaceTyped()->reportFinished(result());
- delete futureInterfaceTyped();
- delete this;
- }
-
-
- void reportResult(const T *_result, int index = -1)
- {
- if (futureInterface)
- futureInterfaceTyped()->reportResult(_result, index);
- }
-
- void reportResults(const QVector<T> &_result, int index = -1, int count = -1)
- {
- if (futureInterface)
- futureInterfaceTyped()->reportResults(_result, index, count);
- }
-};
-
-// The ThreadEngineStarter class ecapsulates the return type
-// from the thread engine.
-// Depending on how the it is used, it will run
-// the engine in either blocking mode or asynchronous mode.
-template <typename T>
-class ThreadEngineStarterBase
-{
-public:
- ThreadEngineStarterBase(ThreadEngine<T> *_threadEngine)
- : threadEngine(_threadEngine) { }
-
- inline ThreadEngineStarterBase(const ThreadEngineStarterBase &other)
- : threadEngine(other.threadEngine) { }
-
- QFuture<T> startAsynchronously()
- {
- return threadEngine->startAsynchronously();
- }
-
- operator QFuture<T>()
- {
- return startAsynchronously();
- }
-
-protected:
- ThreadEngine<T> *threadEngine;
-};
-
-
-// We need to factor out the code that dereferences the T pointer,
-// with a specialization where T is void. (code that dereferences a void *
-// won't compile)
-template <typename T>
-class ThreadEngineStarter : public ThreadEngineStarterBase<T>
-{
- typedef ThreadEngineStarterBase<T> Base;
- typedef ThreadEngine<T> TypedThreadEngine;
-public:
- ThreadEngineStarter(TypedThreadEngine *eng)
- : Base(eng) { }
-
- T startBlocking()
- {
- T t = *this->threadEngine->startBlocking();
- delete this->threadEngine;
- return t;
- }
-};
-
-// Full template specialization where T is void.
-template <>
-class ThreadEngineStarter<void> : public ThreadEngineStarterBase<void>
-{
-public:
- ThreadEngineStarter<void>(ThreadEngine<void> *_threadEngine)
- :ThreadEngineStarterBase<void>(_threadEngine) {}
-
- void startBlocking()
- {
- this->threadEngine->startBlocking();
- delete this->threadEngine;
- }
-};
-
-template <typename ThreadEngine>
-inline ThreadEngineStarter<typename ThreadEngine::ResultType> startThreadEngine(ThreadEngine *threadEngine)
-{
- return ThreadEngineStarter<typename ThreadEngine::ResultType>(threadEngine);
-}
-
-} // namespace QtConcurrent
-
-#endif //qdoc
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_CONCURRENT
-
-#endif
diff --git a/src/corelib/concurrent/qthreadpool.cpp b/src/corelib/concurrent/qthreadpool.cpp
deleted file mode 100644
index 2cc31b9943..0000000000
--- a/src/corelib/concurrent/qthreadpool.cpp
+++ /dev/null
@@ -1,651 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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 "qthreadpool.h"
-#include "qthreadpool_p.h"
-#include "qelapsedtimer.h"
-
-#ifndef QT_NO_THREAD
-
-QT_BEGIN_NAMESPACE
-
-inline bool operator<(int priority, const QPair<QRunnable *, int> &p)
-{
- return p.second < priority;
-}
-inline bool operator<(const QPair<QRunnable *, int> &p, int priority)
-{
- return priority < p.second;
-}
-
-Q_GLOBAL_STATIC(QThreadPool, theInstance)
-
-/*
- QThread wrapper, provides synchronizitaion against a ThreadPool
-*/
-class QThreadPoolThread : public QThread
-{
-public:
- QThreadPoolThread(QThreadPoolPrivate *manager);
- void run();
- void registerTheadInactive();
-
- QThreadPoolPrivate *manager;
- QRunnable *runnable;
-};
-
-/*
- QThreadPool private class.
-*/
-
-
-/*!\internal
-
-*/
-QThreadPoolThread::QThreadPoolThread(QThreadPoolPrivate *manager)
- :manager(manager), runnable(0)
-{ }
-
-/* \internal
-
-*/
-void QThreadPoolThread::run()
-{
- QMutexLocker locker(&manager->mutex);
- for(;;) {
- QRunnable *r = runnable;
- runnable = 0;
-
- do {
- if (r) {
- const bool autoDelete = r->autoDelete();
-
-
- // run the task
- locker.unlock();
-#ifndef QT_NO_EXCEPTIONS
- try {
-#endif
- r->run();
-#ifndef QT_NO_EXCEPTIONS
- } catch (...) {
- qWarning("Qt Concurrent has caught an exception thrown from a worker thread.\n"
- "This is not supported, exceptions thrown in worker threads must be\n"
- "caught before control returns to Qt Concurrent.");
- registerTheadInactive();
- throw;
- }
-#endif
- locker.relock();
-
- if (autoDelete && !--r->ref)
- delete r;
- }
-
- // if too many threads are active, expire this thread
- if (manager->tooManyThreadsActive())
- break;
-
- r = !manager->queue.isEmpty() ? manager->queue.takeFirst().first : 0;
- } while (r != 0);
-
- if (manager->isExiting) {
- registerTheadInactive();
- break;
- }
-
- // if too many threads are active, expire this thread
- bool expired = manager->tooManyThreadsActive();
- if (!expired) {
- ++manager->waitingThreads;
- registerTheadInactive();
- // wait for work, exiting after the expiry timeout is reached
- expired = !manager->runnableReady.wait(locker.mutex(), manager->expiryTimeout);
- ++manager->activeThreads;
-
- if (expired)
- --manager->waitingThreads;
- }
- if (expired) {
- manager->expiredThreads.enqueue(this);
- registerTheadInactive();
- break;
- }
- }
-}
-
-void QThreadPoolThread::registerTheadInactive()
-{
- if (--manager->activeThreads == 0)
- manager->noActiveThreads.wakeAll();
-}
-
-
-/* \internal
-
-*/
-QThreadPoolPrivate:: QThreadPoolPrivate()
- : isExiting(false),
- expiryTimeout(30000),
- maxThreadCount(qAbs(QThread::idealThreadCount())),
- reservedThreads(0),
- waitingThreads(0),
- activeThreads(0)
-{ }
-
-bool QThreadPoolPrivate::tryStart(QRunnable *task)
-{
- if (allThreads.isEmpty()) {
- // always create at least one thread
- startThread(task);
- return true;
- }
-
- // can't do anything if we're over the limit
- if (activeThreadCount() >= maxThreadCount)
- return false;
-
- if (waitingThreads > 0) {
- // recycle an available thread
- --waitingThreads;
- enqueueTask(task);
- return true;
- }
-
- if (!expiredThreads.isEmpty()) {
- // restart an expired thread
- QThreadPoolThread *thread = expiredThreads.dequeue();
- Q_ASSERT(thread->runnable == 0);
-
- ++activeThreads;
-
- if (task->autoDelete())
- ++task->ref;
- thread->runnable = task;
- thread->start();
- return true;
- }
-
- // start a new thread
- startThread(task);
- return true;
-}
-
-void QThreadPoolPrivate::enqueueTask(QRunnable *runnable, int priority)
-{
- if (runnable->autoDelete())
- ++runnable->ref;
-
- // put it on the queue
- QList<QPair<QRunnable *, int> >::iterator at =
- qUpperBound(queue.begin(), queue.end(), priority);
- queue.insert(at, qMakePair(runnable, priority));
- runnableReady.wakeOne();
-}
-
-int QThreadPoolPrivate::activeThreadCount() const
-{
- // To improve scalability this function is called without holding
- // the mutex lock -- keep it thread-safe.
- return (allThreads.count()
- - expiredThreads.count()
- - waitingThreads
- + reservedThreads);
-}
-
-void QThreadPoolPrivate::tryToStartMoreThreads()
-{
- // try to push tasks on the queue to any available threads
- while (!queue.isEmpty() && tryStart(queue.first().first))
- queue.removeFirst();
-}
-
-bool QThreadPoolPrivate::tooManyThreadsActive() const
-{
- const int activeThreadCount = this->activeThreadCount();
- return activeThreadCount > maxThreadCount && (activeThreadCount - reservedThreads) > 1;
-}
-
-/*! \internal
-
-*/
-void QThreadPoolPrivate::startThread(QRunnable *runnable)
-{
- QScopedPointer <QThreadPoolThread> thread(new QThreadPoolThread(this));
- thread->setObjectName(QLatin1String("Thread (pooled)"));
- allThreads.insert(thread.data());
- ++activeThreads;
-
- if (runnable->autoDelete())
- ++runnable->ref;
- thread->runnable = runnable;
- thread.take()->start();
-}
-
-/*! \internal
- Makes all threads exit, waits for each tread to exit and deletes it.
-*/
-void QThreadPoolPrivate::reset()
-{
- QMutexLocker locker(&mutex);
- isExiting = true;
- runnableReady.wakeAll();
-
- do {
- // make a copy of the set so that we can iterate without the lock
- QSet<QThreadPoolThread *> allThreadsCopy = allThreads;
- allThreads.clear();
- locker.unlock();
-
- foreach (QThreadPoolThread *thread, allThreadsCopy) {
- thread->wait();
- delete thread;
- }
-
- locker.relock();
- // repeat until all newly arrived threads have also completed
- } while (!allThreads.isEmpty());
-
- waitingThreads = 0;
- expiredThreads.clear();
-
- isExiting = false;
-}
-
-bool QThreadPoolPrivate::waitForDone(int msecs)
-{
- QMutexLocker locker(&mutex);
- if (msecs < 0) {
- while (!(queue.isEmpty() && activeThreads == 0))
- noActiveThreads.wait(locker.mutex());
- } else {
- QElapsedTimer timer;
- timer.start();
- int t;
- while (!(queue.isEmpty() && activeThreads == 0) &&
- ((t = msecs - timer.elapsed()) > 0))
- noActiveThreads.wait(locker.mutex(), t);
- }
- return queue.isEmpty() && activeThreads == 0;
-}
-
-/*! \internal
- Pulls a runnable from the front queue and runs it in the current thread. Blocks
- until the runnable has completed. Returns true if a runnable was found.
-*/
-bool QThreadPoolPrivate::startFrontRunnable()
-{
- QMutexLocker locker(&mutex);
- if (queue.isEmpty())
- return false;
-
- QRunnable *runnable = queue.takeFirst().first;
- const bool autoDelete = runnable->autoDelete();
- bool del = autoDelete && !--runnable->ref;
-
- locker.unlock();
- runnable->run();
- locker.relock();
-
- if (del) {
- delete runnable;
- }
-
- return true;
-}
-
-/*! \internal
- Seaches for \a runnable in the queue, removes it from the queue and
- runs it if found. This functon does not return until the runnable
- has completed.
-*/
-void QThreadPoolPrivate::stealRunnable(QRunnable *runnable)
-{
- if (runnable == 0 || queue.isEmpty())
- return;
- bool found = false;
- {
- QMutexLocker locker(&mutex);
- QList<QPair<QRunnable *, int> >::iterator it = queue.begin();
- QList<QPair<QRunnable *, int> >::iterator end = queue.end();
-
- while (it != end) {
- if (it->first == runnable) {
- found = true;
- queue.erase(it);
- break;
- }
- ++it;
- }
- }
-
- if (!found)
- return;
-
- const bool autoDelete = runnable->autoDelete();
- bool del = autoDelete && !--runnable->ref;
-
- runnable->run();
-
- if (del) {
- delete runnable;
- }
-}
-
-/*!
- \class QThreadPool
- \brief The QThreadPool class manages a collection of QThreads.
- \since 4.4
- \threadsafe
-
- \ingroup thread
-
- QThreadPool manages and recyles individual QThread objects to help reduce
- thread creation costs in programs that use threads. Each Qt application
- has one global QThreadPool object, which can be accessed by calling
- globalInstance().
-
- To use one of the QThreadPool threads, subclass QRunnable and implement
- the run() virtual function. Then create an object of that class and pass
- it to QThreadPool::start().
-
- \snippet doc/src/snippets/code/src_corelib_concurrent_qthreadpool.cpp 0
-
- QThreadPool deletes the QRunnable automatically by default. Use
- QRunnable::setAutoDelete() to change the auto-deletion flag.
-
- QThreadPool supports executing the same QRunnable more than once
- by calling tryStart(this) from within QRunnable::run().
- If autoDelete is enabled the QRunnable will be deleted when
- the last thread exits the run function. Calling start()
- multiple times with the same QRunnable when autoDelete is enabled
- creates a race condition and is not recommended.
-
- Threads that are unused for a certain amount of time will expire. The
- default expiry timeout is 30000 milliseconds (30 seconds). This can be
- changed using setExpiryTimeout(). Setting a negative expiry timeout
- disables the expiry mechanism.
-
- Call maxThreadCount() to query the maximum number of threads to be used.
- If needed, you can change the limit with setMaxThreadCount(). The default
- maxThreadCount() is QThread::idealThreadCount(). The activeThreadCount()
- function returns the number of threads currently doing work.
-
- The reserveThread() function reserves a thread for external
- use. Use releaseThread() when your are done with the thread, so
- that it may be reused. Essentially, these functions temporarily
- increase or reduce the active thread count and are useful when
- implementing time-consuming operations that are not visible to the
- QThreadPool.
-
- Note that QThreadPool is a low-level class for managing threads, see
- QtConcurrent::run() or the other
- \l {Concurrent Programming}{Qt Concurrent} APIs for higher
- level alternatives.
-
- \sa QRunnable
-*/
-
-/*!
- Constructs a thread pool with the given \a parent.
-*/
-QThreadPool::QThreadPool(QObject *parent)
- : QObject(*new QThreadPoolPrivate, parent)
-{ }
-
-/*!
- Destroys the QThreadPool.
- This function will block until all runnables have been completed.
-*/
-QThreadPool::~QThreadPool()
-{
- d_func()->waitForDone();
- d_func()->reset();
-}
-
-/*!
- Returns the global QThreadPool instance.
-*/
-QThreadPool *QThreadPool::globalInstance()
-{
- return theInstance();
-}
-
-/*!
- Reserves a thread and uses it to run \a runnable, unless this thread will
- make the current thread count exceed maxThreadCount(). In that case,
- \a runnable is added to a run queue instead. The \a priority argument can
- be used to control the run queue's order of execution.
-
- Note that the thread pool takes ownership of the \a runnable if
- \l{QRunnable::autoDelete()}{runnable->autoDelete()} returns true,
- and the \a runnable will be deleted automatically by the thread
- pool after the \l{QRunnable::run()}{runnable->run()} returns. If
- \l{QRunnable::autoDelete()}{runnable->autoDelete()} returns false,
- ownership of \a runnable remains with the caller. Note that
- changing the auto-deletion on \a runnable after calling this
- functions results in undefined behavior.
-*/
-void QThreadPool::start(QRunnable *runnable, int priority)
-{
- if (!runnable)
- return;
-
- Q_D(QThreadPool);
- QMutexLocker locker(&d->mutex);
- if (!d->tryStart(runnable))
- d->enqueueTask(runnable, priority);
-}
-
-/*!
- Attempts to reserve a thread to run \a runnable.
-
- If no threads are available at the time of calling, then this function
- does nothing and returns false. Otherwise, \a runnable is run immediately
- using one available thread and this function returns true.
-
- Note that the thread pool takes ownership of the \a runnable if
- \l{QRunnable::autoDelete()}{runnable->autoDelete()} returns true,
- and the \a runnable will be deleted automatically by the thread
- pool after the \l{QRunnable::run()}{runnable->run()} returns. If
- \l{QRunnable::autoDelete()}{runnable->autoDelete()} returns false,
- ownership of \a runnable remains with the caller. Note that
- changing the auto-deletion on \a runnable after calling this
- function results in undefined behavior.
-*/
-bool QThreadPool::tryStart(QRunnable *runnable)
-{
- if (!runnable)
- return false;
-
- Q_D(QThreadPool);
-
- // To improve scalability perform a check on the thread count
- // before locking the mutex.
- if (d->allThreads.isEmpty() == false && d->activeThreadCount() >= d->maxThreadCount)
- return false;
-
- QMutexLocker locker(&d->mutex);
- return d->tryStart(runnable);
-}
-
-/*! \property QThreadPool::expiryTimeout
-
- Threads that are unused for \a expiryTimeout milliseconds are considered
- to have expired and will exit. Such threads will be restarted as needed.
- The default \a expiryTimeout is 30000 milliseconds (30 seconds). If
- \a expiryTimeout is negative, newly created threads will not expire, e.g.,
- they will not exit until the thread pool is destroyed.
-
- Note that setting \a expiryTimeout has no effect on already running
- threads. Only newly created threads will use the new \a expiryTimeout.
- We recommend setting the \a expiryTimeout immediately after creating the
- thread pool, but before calling start().
-*/
-
-int QThreadPool::expiryTimeout() const
-{
- Q_D(const QThreadPool);
- return d->expiryTimeout;
-}
-
-void QThreadPool::setExpiryTimeout(int expiryTimeout)
-{
- Q_D(QThreadPool);
- if (d->expiryTimeout == expiryTimeout)
- return;
- d->expiryTimeout = expiryTimeout;
-}
-
-/*! \property QThreadPool::maxThreadCount
-
- This property represents the maximum number of threads used by the thread
- pool.
-
- \note The thread pool will always use at least 1 thread, even if
- \a maxThreadCount limit is zero or negative.
-
- The default \a maxThreadCount is QThread::idealThreadCount().
-*/
-
-int QThreadPool::maxThreadCount() const
-{
- Q_D(const QThreadPool);
- return d->maxThreadCount;
-}
-
-void QThreadPool::setMaxThreadCount(int maxThreadCount)
-{
- Q_D(QThreadPool);
- QMutexLocker locker(&d->mutex);
-
- if (maxThreadCount == d->maxThreadCount)
- return;
-
- d->maxThreadCount = maxThreadCount;
- d->tryToStartMoreThreads();
-}
-
-/*! \property QThreadPool::activeThreadCount
-
- This property represents the number of active threads in the thread pool.
-
- \note It is possible for this function to return a value that is greater
- than maxThreadCount(). See reserveThread() for more details.
-
- \sa reserveThread(), releaseThread()
-*/
-
-int QThreadPool::activeThreadCount() const
-{
- Q_D(const QThreadPool);
- return d->activeThreadCount();
-}
-
-/*!
- Reserves one thread, disregarding activeThreadCount() and maxThreadCount().
-
- Once you are done with the thread, call releaseThread() to allow it to be
- reused.
-
- \note This function will always increase the number of active threads.
- This means that by using this function, it is possible for
- activeThreadCount() to return a value greater than maxThreadCount() .
-
- \sa releaseThread()
- */
-void QThreadPool::reserveThread()
-{
- Q_D(QThreadPool);
- QMutexLocker locker(&d->mutex);
- ++d->reservedThreads;
-}
-
-/*!
- Releases a thread previously reserved by a call to reserveThread().
-
- \note Calling this function without previously reserving a thread
- temporarily increases maxThreadCount(). This is useful when a
- thread goes to sleep waiting for more work, allowing other threads
- to continue. Be sure to call reserveThread() when done waiting, so
- that the thread pool can correctly maintain the
- activeThreadCount().
-
- \sa reserveThread()
-*/
-void QThreadPool::releaseThread()
-{
- Q_D(QThreadPool);
- QMutexLocker locker(&d->mutex);
- --d->reservedThreads;
- d->tryToStartMoreThreads();
-}
-
-/*!
- Waits for each thread to exit and removes all threads from the thread pool.
-*/
-void QThreadPool::waitForDone()
-{
- Q_D(QThreadPool);
- d->waitForDone();
- d->reset();
-}
-
-/*!
- \overload waitForDone()
- \since 4.8
-
- Waits up to \a msecs milliseconds for all threads to exit and removes all
- threads from the thread pool. Returns true if all threads were removed;
- otherwise it returns false.
-*/
-bool QThreadPool::waitForDone(int msecs)
-{
- Q_D(QThreadPool);
- bool rc = d->waitForDone(msecs);
- if (rc)
- d->reset();
- return rc;
-}
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/src/corelib/concurrent/qthreadpool.h b/src/corelib/concurrent/qthreadpool.h
deleted file mode 100644
index 1b5677b9fa..0000000000
--- a/src/corelib/concurrent/qthreadpool.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QTHREADPOOL_H
-#define QTHREADPOOL_H
-
-#include <QtCore/qglobal.h>
-
-#include <QtCore/qthread.h>
-#include <QtCore/qrunnable.h>
-
-#ifndef QT_NO_THREAD
-
-QT_BEGIN_HEADER
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Core)
-
-class QThreadPoolPrivate;
-class Q_CORE_EXPORT QThreadPool : public QObject
-{
- Q_OBJECT
- Q_DECLARE_PRIVATE(QThreadPool)
- Q_PROPERTY(int expiryTimeout READ expiryTimeout WRITE setExpiryTimeout)
- Q_PROPERTY(int maxThreadCount READ maxThreadCount WRITE setMaxThreadCount)
- Q_PROPERTY(int activeThreadCount READ activeThreadCount)
- friend class QFutureInterfaceBase;
-
-public:
- QThreadPool(QObject *parent = 0);
- ~QThreadPool();
-
- static QThreadPool *globalInstance();
-
- void start(QRunnable *runnable, int priority = 0);
- bool tryStart(QRunnable *runnable);
-
- int expiryTimeout() const;
- void setExpiryTimeout(int expiryTimeout);
-
- int maxThreadCount() const;
- void setMaxThreadCount(int maxThreadCount);
-
- int activeThreadCount() const;
-
- void reserveThread();
- void releaseThread();
-
- void waitForDone();
- bool waitForDone(int msecs);
-};
-
-QT_END_NAMESPACE
-QT_END_HEADER
-
-#endif // QT_NO_THREAD
-
-#endif
diff --git a/src/corelib/concurrent/qthreadpool_p.h b/src/corelib/concurrent/qthreadpool_p.h
deleted file mode 100644
index 009dfcdee2..0000000000
--- a/src/corelib/concurrent/qthreadpool_p.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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$
-**
-****************************************************************************/
-
-#ifndef QTHREADPOOL_P_H
-#define QTHREADPOOL_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-//
-
-#include "QtCore/qmutex.h"
-#include "QtCore/qwaitcondition.h"
-#include "QtCore/qset.h"
-#include "QtCore/qqueue.h"
-#include "private/qobject_p.h"
-
-#ifndef QT_NO_THREAD
-
-QT_BEGIN_NAMESPACE
-
-class QThreadPoolThread;
-class QThreadPoolPrivate : public QObjectPrivate
-{
- Q_DECLARE_PUBLIC(QThreadPool)
- friend class QThreadPoolThread;
-
-public:
- QThreadPoolPrivate();
-
- bool tryStart(QRunnable *task);
- void enqueueTask(QRunnable *task, int priority = 0);
- int activeThreadCount() const;
-
- void tryToStartMoreThreads();
- bool tooManyThreadsActive() const;
-
- void startThread(QRunnable *runnable = 0);
- void reset();
- bool waitForDone(int msecs = -1);
- bool startFrontRunnable();
- void stealRunnable(QRunnable *);
-
- mutable QMutex mutex;
- QWaitCondition runnableReady;
- QSet<QThreadPoolThread *> allThreads;
- QQueue<QThreadPoolThread *> expiredThreads;
- QList<QPair<QRunnable *, int> > queue;
- QWaitCondition noActiveThreads;
-
- bool isExiting;
- int expiryTimeout;
- int maxThreadCount;
- int reservedThreads;
- int waitingThreads;
- int activeThreads;
-};
-
-QT_END_NAMESPACE
-
-#endif // QT_NO_THREAD
-#endif
diff --git a/src/corelib/corelib.pro b/src/corelib/corelib.pro
index 17c15d42b1..c8c9b9b8e6 100644
--- a/src/corelib/corelib.pro
+++ b/src/corelib/corelib.pro
@@ -18,12 +18,12 @@ HEADERS += $$QT_SOURCE_TREE/src/corelib/qtcoreversion.h
include(animation/animation.pri)
include(arch/arch.pri)
-include(concurrent/concurrent.pri)
include(global/global.pri)
include(thread/thread.pri)
include(tools/tools.pri)
include(io/io.pri)
include(itemmodels/itemmodels.pri)
+include(json/json.pri)
include(plugin/plugin.pri)
include(kernel/kernel.pri)
include(codecs/codecs.pri)
@@ -34,6 +34,7 @@ mac|darwin {
contains(QT_CONFIG, coreservices) {
LIBS_PRIVATE += -framework ApplicationServices
LIBS_PRIVATE += -framework CoreServices
+ LIBS_PRIVATE += -framework Foundation
}
LIBS_PRIVATE += -framework CoreFoundation
}
@@ -45,14 +46,3 @@ QMAKE_LIBS += $$QMAKE_LIBS_CORE
QMAKE_DYNAMIC_LIST_FILE = $$PWD/QtCore.dynlist
contains(DEFINES,QT_EVAL):include(eval.pri)
-
-symbian: {
- TARGET.UID3=0x2001B2DC
-
- # Problems using data exports from this DLL mean that we can't page it on releases that don't support
- # data exports (currently that's any release before Symbian^3)
- pagingBlock = "$${LITERAL_HASH}ifndef SYMBIAN_DLL_DATA_EXPORTS_SUPPORTED" \
- "UNPAGED" \
- "$${LITERAL_HASH}endif"
- MMP_RULES += pagingBlock
-}
diff --git a/src/corelib/global/global.pri b/src/corelib/global/global.pri
index 3c0dfd2a39..fca9969db0 100644
--- a/src/corelib/global/global.pri
+++ b/src/corelib/global/global.pri
@@ -5,13 +5,15 @@ HEADERS += \
global/qnamespace.h \
global/qendian.h \
global/qnumeric_p.h \
- global/qnumeric.h
+ global/qnumeric.h \
+ global/qlogging.h
SOURCES += \
global/qglobal.cpp \
global/qlibraryinfo.cpp \
global/qmalloc.cpp \
- global/qnumeric.cpp
+ global/qnumeric.cpp \
+ global/qlogging.cpp
# qlibraryinfo.cpp includes qconfig.cpp
INCLUDEPATH += $$QT_BUILD_TREE/src/corelib/global
@@ -19,7 +21,7 @@ INCLUDEPATH += $$QT_BUILD_TREE/src/corelib/global
# Only used on platforms with CONFIG += precompile_header
PRECOMPILED_HEADER = global/qt_pch.h
-linux*:!cross_compile:!static:!symbian-gcce:!*-armcc* {
+linux*:!cross_compile:!static:!*-armcc* {
QMAKE_LFLAGS += -Wl,-e,qt_core_boilerplate
prog=$$quote(if (/program interpreter: (.*)]/) { print $1; })
DEFINES += ELF_INTERPRETER=\\\"$$system(readelf -l /bin/ls | perl -n -e \'$$prog\')\\\"
diff --git a/src/corelib/global/qconfig-dist.h b/src/corelib/global/qconfig-dist.h
index 727eea0018..9e65fdd3dd 100644
--- a/src/corelib/global/qconfig-dist.h
+++ b/src/corelib/global/qconfig-dist.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/global/qconfig-large.h b/src/corelib/global/qconfig-large.h
index 8a2553a6a6..4d23999c2a 100644
--- a/src/corelib/global/qconfig-large.h
+++ b/src/corelib/global/qconfig-large.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/global/qconfig-medium.h b/src/corelib/global/qconfig-medium.h
index 96207d1cd8..9ed73aa645 100644
--- a/src/corelib/global/qconfig-medium.h
+++ b/src/corelib/global/qconfig-medium.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -91,9 +91,6 @@
#ifndef QT_NO_CODECS
# define QT_NO_CODECS
#endif
-#ifndef QT_NO_TEXTCODECPLUGIN
-# define QT_NO_TEXTCODECPLUGIN
-#endif
#ifndef QT_NO_TRANSLATION
# define QT_NO_TRANSLATION
#endif
diff --git a/src/corelib/global/qconfig-minimal.h b/src/corelib/global/qconfig-minimal.h
index 30440243de..24349a76ba 100644
--- a/src/corelib/global/qconfig-minimal.h
+++ b/src/corelib/global/qconfig-minimal.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -164,9 +164,6 @@
#ifndef QT_NO_CODECS
# define QT_NO_CODECS
#endif
-#ifndef QT_NO_TEXTCODECPLUGIN
-# define QT_NO_TEXTCODECPLUGIN
-#endif
#ifndef QT_NO_TRANSLATION
# define QT_NO_TRANSLATION
#endif
diff --git a/src/corelib/global/qconfig-nacl.h b/src/corelib/global/qconfig-nacl.h
index 6b943ab422..88da7f3d44 100644
--- a/src/corelib/global/qconfig-nacl.h
+++ b/src/corelib/global/qconfig-nacl.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -128,9 +128,6 @@
#ifndef QT_NO_CODECS
# define QT_NO_CODECS
#endif
-#ifndef QT_NO_TEXTCODECPLUGIN
-# define QT_NO_TEXTCODECPLUGIN
-#endif
#ifndef QT_NO_TRANSLATION
# define QT_NO_TRANSLATION
#endif
diff --git a/src/corelib/global/qconfig-small.h b/src/corelib/global/qconfig-small.h
index 84a5ec59d9..e6cebfe110 100644
--- a/src/corelib/global/qconfig-small.h
+++ b/src/corelib/global/qconfig-small.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -125,9 +125,6 @@
#ifndef QT_NO_CODECS
# define QT_NO_CODECS
#endif
-#ifndef QT_NO_TEXTCODECPLUGIN
-# define QT_NO_TEXTCODECPLUGIN
-#endif
#ifndef QT_NO_TRANSLATION
# define QT_NO_TRANSLATION
#endif
diff --git a/src/corelib/global/qendian.h b/src/corelib/global/qendian.h
index 66d66cb78f..8ecff5e165 100644
--- a/src/corelib/global/qendian.h
+++ b/src/corelib/global/qendian.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,7 +55,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
/*
* ENDIAN FUNCTIONS
diff --git a/src/corelib/global/qendian.qdoc b/src/corelib/global/qendian.qdoc
index 3133d3c252..a0f818a5ca 100644
--- a/src/corelib/global/qendian.qdoc
+++ b/src/corelib/global/qendian.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/global/qfeatures.h b/src/corelib/global/qfeatures.h
index 5055414834..db7ff04bb2 100644
--- a/src/corelib/global/qfeatures.h
+++ b/src/corelib/global/qfeatures.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,15 +52,15 @@
// Big Codecs
//#define QT_NO_BIG_CODECS
+// QClipboard
+//#define QT_NO_CLIPBOARD
+
// Color Names
//#define QT_NO_COLORNAMES
// QtConcurrent
//#define QT_NO_CONCURRENT
-// QCopChannel
-//#define QT_NO_COP
-
// CssParser
//#define QT_NO_CSSPARSER
@@ -70,9 +70,6 @@
// QDesktopServices
//#define QT_NO_DESKTOPSERVICES
-// QDirectPainter
-//#define QT_NO_DIRECTPAINTER
-
// Document Object Model
//#define QT_NO_DOM
@@ -94,6 +91,9 @@
// QGroupBox
//#define QT_NO_GROUPBOX
+// QHostInfo
+//#define QT_NO_HOSTINFO
+
// QImageIOPlugin
//#define QT_NO_IMAGEFORMATPLUGIN
@@ -112,6 +112,9 @@
// XBM Image Format
//#define QT_NO_IMAGEFORMAT_XBM
+// XPM Image Format
+//#define QT_NO_IMAGEFORMAT_XPM
+
// QImage::createHeuristicMask()
//#define QT_NO_IMAGE_HEURISTIC_MASK
@@ -142,24 +145,6 @@
// Painting Debug Utilities
//#define QT_NO_PAINT_DEBUG
-// Phonon::AbstractMediaStream
-//#define QT_NO_PHONON_ABSTRACTMEDIASTREAM
-
-// Support for Audio Capture
-//#define QT_NO_PHONON_AUDIOCAPTURE
-
-// Phonon::Effect
-//#define QT_NO_PHONON_EFFECT
-
-// Phonon::MediaController
-//#define QT_NO_PHONON_MEDIACONTROLLER
-
-// Phonon::ObjectDescriptionModel
-//#define QT_NO_PHONON_OBJECTDESCRIPTIONMODEL
-
-// Phonon::VideoWidget
-//#define QT_NO_PHONON_VIDEO
-
// QPicture
//#define QT_NO_PICTURE
@@ -175,42 +160,6 @@
// Universally Unique Identifier Convertion
//#define QT_NO_QUUID_STRING
-// QWSEmbedWidget
-//#define QT_NO_QWSEMBEDWIDGET
-
-// Alpha Cursor
-//#define QT_NO_QWS_ALPHA_CURSOR
-
-// Decoration
-//#define QT_NO_QWS_DECORATION_DEFAULT
-
-// Keyboard
-//#define QT_NO_QWS_KEYBOARD
-
-// Mouse
-//#define QT_NO_QWS_MOUSE
-
-// Mouse (Auto)
-//#define QT_NO_QWS_MOUSE_AUTO
-
-// Mouse (Non-Auto)
-//#define QT_NO_QWS_MOUSE_MANUAL
-
-// Multi-Process
-//#define QT_NO_QWS_MULTIPROCESS
-
-// Properties
-//#define QT_NO_QWS_PROPERTIES
-
-// QProxyScreen
-//#define QT_NO_QWS_PROXYSCREEN
-
-// Qt Prerendered Font Format
-//#define QT_NO_QWS_QPF
-
-// Qt Prerendered Font Format 2
-//#define QT_NO_QWS_QPF2
-
// Raster Paint Engine callback functions
//#define QT_NO_RASTERCALLBACKS
@@ -323,11 +272,6 @@
#define QT_NO_BUTTONGROUP
#endif
-// QClipboard
-#if !defined(QT_NO_CLIPBOARD) && (defined(QT_NO_QWS_PROPERTIES))
-#define QT_NO_CLIPBOARD
-#endif
-
// Codecs
#if !defined(QT_NO_CODECS) && (defined(QT_NO_TEXTCODEC))
#define QT_NO_CODECS
@@ -343,11 +287,21 @@
#define QT_NO_DIAL
#endif
+// Drag and drop
+#if !defined(QT_NO_DRAGANDDROP) && (defined(QT_NO_IMAGEFORMAT_XPM))
+#define QT_NO_DRAGANDDROP
+#endif
+
// QFileSystemModel
#if !defined(QT_NO_FILESYSTEMMODEL) && (defined(QT_NO_FILESYSTEMWATCHER))
#define QT_NO_FILESYSTEMMODEL
#endif
+// Hyper Text Transfer Protocol
+#if !defined(QT_NO_HTTP) && (defined(QT_NO_HOSTINFO))
+#define QT_NO_HTTP
+#endif
+
// QLibrary
#if !defined(QT_NO_LIBRARY) && (defined(QT_NO_SETTINGS))
#define QT_NO_LIBRARY
@@ -363,66 +317,11 @@
#define QT_NO_NETWORKDISKCACHE
#endif
-// Phonon::SeekSlider
-#if !defined(QT_NO_PHONON_SEEKSLIDER) && (defined(QT_NO_SLIDER))
-#define QT_NO_PHONON_SEEKSLIDER
-#endif
-
-// Phonon::AbstractMediaStream
-#if !defined(QT_NO_PHONON_SETTINGSGROUP) && (defined(QT_NO_SETTINGS))
-#define QT_NO_PHONON_SETTINGSGROUP
-#endif
-
-// Phonon::VideoPlayer
-#if !defined(QT_NO_PHONON_VIDEOPLAYER) && (defined(QT_NO_PHONON_VIDEO))
-#define QT_NO_PHONON_VIDEOPLAYER
-#endif
-
-// Phonon::VolumeFaderEffect
-#if !defined(QT_NO_PHONON_VOLUMEFADEREFFECT) && (defined(QT_NO_PHONON_EFFECT))
-#define QT_NO_PHONON_VOLUMEFADEREFFECT
-#endif
-
// QProgressDialog
#if !defined(QT_NO_PROGRESSDIALOG) && (defined(QT_NO_PROGRESSBAR))
#define QT_NO_PROGRESSDIALOG
#endif
-// Cursor
-#if !defined(QT_NO_QWS_CURSOR) && (defined(QT_NO_CURSOR))
-#define QT_NO_QWS_CURSOR
-#endif
-
-// Decoration (Styled)
-#if !defined(QT_NO_QWS_DECORATION_STYLED) && (defined(QT_NO_QWS_DECORATION_DEFAULT))
-#define QT_NO_QWS_DECORATION_STYLED
-#endif
-
-// Decoration (Windows Style)
-#if !defined(QT_NO_QWS_DECORATION_WINDOWS) && (defined(QT_NO_QWS_DECORATION_DEFAULT))
-#define QT_NO_QWS_DECORATION_WINDOWS
-#endif
-
-// Dynamic screen transformation.
-#if !defined(QT_NO_QWS_DYNAMICSCREENTRANSFORMATION) && (defined(QT_NO_QWS_PROXYSCREEN))
-#define QT_NO_QWS_DYNAMICSCREENTRANSFORMATION
-#endif
-
-// Manager
-#if !defined(QT_NO_QWS_MANAGER) && (defined(QT_NO_QWS_DECORATION_DEFAULT))
-#define QT_NO_QWS_MANAGER
-#endif
-
-// QVncTransformed
-#if !defined(QT_NO_QWS_TRANSFORMED) && (defined(QT_NO_QWS_PROXYSCREEN))
-#define QT_NO_QWS_TRANSFORMED
-#endif
-
-// QVncScreen
-#if !defined(QT_NO_QWS_VNC) && (defined(QT_NO_QWS_PROXYSCREEN))
-#define QT_NO_QWS_VNC
-#endif
-
// QScrollBar
#if !defined(QT_NO_SCROLLBAR) && (defined(QT_NO_SLIDER))
#define QT_NO_SCROLLBAR
@@ -458,11 +357,6 @@
#define QT_NO_STYLE_WINDOWSXP
#endif
-// SXE
-#if !defined(QT_NO_SXE) && (defined(QT_NO_QWS_MULTIPROCESS))
-#define QT_NO_SXE
-#endif
-
// QToolButton
#if !defined(QT_NO_TOOLBUTTON) && (defined(QT_NO_ACTION))
#define QT_NO_TOOLBUTTON
@@ -473,11 +367,6 @@
#define QT_NO_UNDOSTACK
#endif
-// ActiveQt
-#if !defined(QT_NO_WIN_ACTIVEQT) && (defined(QT_NO_PROPERTIES))
-#define QT_NO_WIN_ACTIVEQT
-#endif
-
// QWizard
#if !defined(QT_NO_WIZARD) && (defined(QT_NO_PROPERTIES))
#define QT_NO_WIZARD
@@ -518,9 +407,9 @@
#define QT_NO_IM
#endif
-// Phonon::PlatformPlugin
-#if !defined(QT_NO_PHONON_PLATFORMPLUGIN) && (defined(QT_NO_LIBRARY))
-#define QT_NO_PHONON_PLATFORMPLUGIN
+// QPrinter
+#if !defined(QT_NO_PRINTER) && (defined(QT_NO_PICTURE) || defined(QT_NO_TEMPORARYFILE))
+#define QT_NO_PRINTER
#endif
// QScrollArea
@@ -528,6 +417,26 @@
#define QT_NO_SCROLLAREA
#endif
+// QCleanLooksStyle
+#if !defined(QT_NO_STYLE_CLEANLOOKS) && (defined(QT_NO_STYLE_WINDOWS) || defined(QT_NO_IMAGEFORMAT_XPM))
+#define QT_NO_STYLE_CLEANLOOKS
+#endif
+
+// QPlastiqueStyle
+#if !defined(QT_NO_STYLE_PLASTIQUE) && (defined(QT_NO_STYLE_WINDOWS) || defined(QT_NO_IMAGEFORMAT_XPM))
+#define QT_NO_STYLE_PLASTIQUE
+#endif
+
+// QWindowsCEStyle
+#if !defined(QT_NO_STYLE_WINDOWSCE) && (defined(QT_NO_STYLE_WINDOWS) || defined(QT_NO_IMAGEFORMAT_XPM))
+#define QT_NO_STYLE_WINDOWSCE
+#endif
+
+// QWindowsMobileStyle
+#if !defined(QT_NO_STYLE_WINDOWSMOBILE) && (defined(QT_NO_STYLE_WINDOWS) || defined(QT_NO_IMAGEFORMAT_XPM))
+#define QT_NO_STYLE_WINDOWSMOBILE
+#endif
+
// QWindowsVistaStyle
#if !defined(QT_NO_STYLE_WINDOWSVISTA) && (defined(QT_NO_STYLE_WINDOWSXP))
#define QT_NO_STYLE_WINDOWSVISTA
@@ -558,86 +467,31 @@
#define QT_NO_WHATSTHIS
#endif
-// Drag and drop
-#if !defined(QT_NO_DRAGANDDROP) && (defined(QT_NO_QWS_PROPERTIES) || defined(QT_NO_IMAGEFORMAT_XPM))
-#define QT_NO_DRAGANDDROP
-#endif
-
// QGraphicsView
#if !defined(QT_NO_GRAPHICSVIEW) && (defined(QT_NO_SCROLLAREA))
#define QT_NO_GRAPHICSVIEW
#endif
-// Hyper Text Transfer Protocol
-#if !defined(QT_NO_HTTP) && defined(QT_NO_HOSTINFO)
-#define QT_NO_HTTP
-#endif
-
// QMdiArea
#if !defined(QT_NO_MDIAREA) && (defined(QT_NO_SCROLLAREA))
#define QT_NO_MDIAREA
#endif
-// Phonon::VolumeSlider
-#if !defined(QT_NO_PHONON_VOLUMESLIDER) && (defined(QT_NO_SLIDER) || defined(QT_NO_TOOLBUTTON))
-#define QT_NO_PHONON_VOLUMESLIDER
-#endif
-
-// QPrinter
-#if !defined(QT_NO_PRINTER) && (defined(QT_NO_PICTURE) || defined(QT_NO_TEMPORARYFILE))
-#define QT_NO_PRINTER
-#endif
-
-// QWSInputMethod
-#if !defined(QT_NO_QWS_INPUTMETHODS) && (defined(QT_NO_IM))
-#define QT_NO_QWS_INPUTMETHODS
-#endif
-
// QSpinBox
#if !defined(QT_NO_SPINBOX) && (defined(QT_NO_SPINWIDGET) || defined(QT_NO_LINEEDIT) || defined(QT_NO_VALIDATOR))
#define QT_NO_SPINBOX
#endif
-// QCleanLooksStyle
-#if !defined(QT_NO_STYLE_CLEANLOOKS) && (defined(QT_NO_STYLE_WINDOWS) || defined(QT_NO_IMAGEFORMAT_XPM))
-#define QT_NO_STYLE_CLEANLOOKS
-#endif
-
-// QPlastiqueStyle
-#if !defined(QT_NO_STYLE_PLASTIQUE) && (defined(QT_NO_STYLE_WINDOWS) || defined(QT_NO_IMAGEFORMAT_XPM))
-#define QT_NO_STYLE_PLASTIQUE
-#endif
-
// QStyleSheetStyle
#if !defined(QT_NO_STYLE_STYLESHEET) && (defined(QT_NO_STYLE_WINDOWS) || defined(QT_NO_PROPERTIES) || defined(QT_NO_CSSPARSER))
#define QT_NO_STYLE_STYLESHEET
#endif
-// QWindowsCEStyle
-#if !defined(QT_NO_STYLE_WINDOWSCE) && (defined(QT_NO_STYLE_WINDOWS) || defined(QT_NO_IMAGEFORMAT_XPM))
-#define QT_NO_STYLE_WINDOWSCE
-#endif
-
-// QWindowsMobileStyle
-#if !defined(QT_NO_STYLE_WINDOWSMOBILE) && (defined(QT_NO_STYLE_WINDOWS) || defined(QT_NO_IMAGEFORMAT_XPM))
-#define QT_NO_STYLE_WINDOWSMOBILE
-#endif
-
-// QtSvg module
-#if !defined(QT_NO_SVG) && (defined(QT_NO_XMLSTREAMREADER) || defined(QT_NO_CSSPARSER))
-#define QT_NO_SVG
-#endif
-
// Q3TabDialog
#if !defined(QT_NO_TABDIALOG) && (defined(QT_NO_TABBAR))
#define QT_NO_TABDIALOG
#endif
-// QTextCodecPlugin
-#if !defined(QT_NO_TEXTCODECPLUGIN) && (defined(QT_NO_TEXTCODEC) || defined(QT_NO_LIBRARY))
-#define QT_NO_TEXTCODECPLUGIN
-#endif
-
// QColorDialog
#if !defined(QT_NO_COLORDIALOG) && (defined(QT_NO_SPINBOX))
#define QT_NO_COLORDIALOG
@@ -658,21 +512,6 @@
#define QT_NO_MENUBAR
#endif
-// Sound Server
-#if !defined(QT_NO_QWS_SOUNDSERVER) && (defined(QT_NO_SOUND) || defined(QT_NO_HOSTINFO) || defined(QT_NO_QWS_MULTIPROCESS))
-#define QT_NO_QWS_SOUNDSERVER
-#endif
-
-// QSvgGenerator
-#if !defined(QT_NO_SVGGENERATOR) && (defined(QT_NO_SVG))
-#define QT_NO_SVGGENERATOR
-#endif
-
-// QSvgRenderer
-#if !defined(QT_NO_SVGRENDERER) && (defined(QT_NO_SVG))
-#define QT_NO_SVGRENDERER
-#endif
-
// QTabWidget
#if !defined(QT_NO_TABWIDGET) && (defined(QT_NO_TABBAR) || defined(QT_NO_STACKEDWIDGET))
#define QT_NO_TABWIDGET
@@ -683,6 +522,11 @@
#define QT_NO_TEXTEDIT
#endif
+// Common UNIX Printing System
+#if !defined(QT_NO_CUPS) && (defined(QT_NO_PRINTER) || defined(QT_NO_LIBRARY))
+#define QT_NO_CUPS
+#endif
+
// QErrorMessage
#if !defined(QT_NO_ERRORMESSAGE) && (defined(QT_NO_TEXTEDIT))
#define QT_NO_ERRORMESSAGE
@@ -713,11 +557,6 @@
#define QT_NO_STRINGLISTMODEL
#endif
-// QSvgWidget
-#if !defined(QT_NO_SVGWIDGET) && (defined(QT_NO_SVGRENDERER))
-#define QT_NO_SVGWIDGET
-#endif
-
// QSyntaxHighlighter
#if !defined(QT_NO_SYNTAXHIGHLIGHTER) && (defined(QT_NO_TEXTEDIT))
#define QT_NO_SYNTAXHIGHLIGHTER
@@ -758,11 +597,6 @@
#define QT_NO_COMPLETER
#endif
-// Common UNIX Printing System
-#if !defined(QT_NO_CUPS) && (defined(QT_NO_PRINTER) || defined(QT_NO_LIBRARY))
-#define QT_NO_CUPS
-#endif
-
// QDataWidgetMapper
#if !defined(QT_NO_DATAWIDGETMAPPER) && (defined(QT_NO_ITEMVIEWS) || defined(QT_NO_PROPERTIES))
#define QT_NO_DATAWIDGETMAPPER
@@ -813,26 +647,21 @@
#define QT_NO_FSCOMPLETER
#endif
-// QGraphicsSvgItem
-#if !defined(QT_NO_GRAPHICSSVGITEM) && (defined(QT_NO_SVGRENDERER) || defined(QT_NO_GRAPHICSVIEW))
-#define QT_NO_GRAPHICSSVGITEM
-#endif
-
// QComboBox
#if !defined(QT_NO_COMBOBOX) && (defined(QT_NO_LINEEDIT) || defined(QT_NO_STANDARDITEMMODEL) || defined(QT_NO_LISTVIEW))
#define QT_NO_COMBOBOX
#endif
-// QWorkSpace
-#if !defined(QT_NO_WORKSPACE) && (defined(QT_NO_SCROLLBAR) || defined(QT_NO_MAINWINDOW) || defined(QT_NO_MENUBAR))
-#define QT_NO_WORKSPACE
-#endif
-
// QPrintPreviewWidget
#if !defined(QT_NO_PRINTPREVIEWWIDGET) && (defined(QT_NO_GRAPHICSVIEW) || defined(QT_NO_PRINTER) || defined(QT_NO_MAINWINDOW))
#define QT_NO_PRINTPREVIEWWIDGET
#endif
+// QWorkSpace
+#if !defined(QT_NO_WORKSPACE) && (defined(QT_NO_SCROLLBAR) || defined(QT_NO_MAINWINDOW) || defined(QT_NO_MENUBAR))
+#define QT_NO_WORKSPACE
+#endif
+
// QCalendarWidget
#if !defined(QT_NO_CALENDARWIDGET) && (defined(QT_NO_TABLEVIEW) || defined(QT_NO_MENU) || defined(QT_NO_TEXTDATE) || defined(QT_NO_SPINBOX) || defined(QT_NO_TOOLBUTTON))
#define QT_NO_CALENDARWIDGET
@@ -848,11 +677,6 @@
#define QT_NO_INPUTDIALOG
#endif
-// Phonon::EffectWidget
-#if !defined(QT_NO_PHONON_EFFECTWIDGET) && (defined(QT_NO_PHONON_EFFECT) || defined(QT_NO_COMBOBOX) || defined(QT_NO_SPINBOX))
-#define QT_NO_PHONON_EFFECTWIDGET
-#endif
-
// QFontComboBox
#if !defined(QT_NO_FONTCOMBOBOX) && (defined(QT_NO_COMBOBOX) || defined(QT_NO_STRINGLISTMODEL))
#define QT_NO_FONTCOMBOBOX
diff --git a/src/corelib/global/qfeatures.txt b/src/corelib/global/qfeatures.txt
index 4eae2f50ec..444a23b0e3 100644
--- a/src/corelib/global/qfeatures.txt
+++ b/src/corelib/global/qfeatures.txt
@@ -38,7 +38,7 @@ SeeAlso: ???
Feature: DRAGANDDROP
Description: Supports the drag and drop mechansim.
Section: Kernel
-Requires: QWS_PROPERTIES IMAGEFORMAT_XPM
+Requires: IMAGEFORMAT_XPM
Name: Drag and drop
SeeAlso: ???
@@ -80,7 +80,7 @@ SeeAlso: ???
Feature: CLIPBOARD
Description: Supports cut and paste operations.
Section: Kernel
-Requires: QWS_PROPERTIES
+Requires:
Name: QClipboard
SeeAlso: ???
@@ -858,7 +858,7 @@ SeeAlso: ???
Feature: IMAGEFORMAT_XPM
Description: Supports the X11 Pixmap image file format.
Section: Images
-Requires: TEXTSTREAM
+Requires:
Name: XPM Image Format
SeeAlso: ???
@@ -892,13 +892,6 @@ SeeAlso: ???
# Painting
-Feature: DIRECTPAINTER
-Description: Supports direct access to the video hardware.
-Section: Painting
-Requires:
-Name: QDirectPainter
-SeeAlso: ???
-
Feature: PICTURE
Description: Supports recording and replaying QPainter commands.
Section: Painting
@@ -917,7 +910,7 @@ SeeAlso: ???
Feature: PRINTER
Description: Supports printing
Section: Painting
-Requires: TEXTSTREAM PICTURE TEMPORARYFILE
+Requires: PICTURE TEMPORARYFILE
Name: QPrinter
SeeAlso: ???
@@ -958,31 +951,8 @@ Requires:
Name: Freetype Font Engine
SeeAlso: ???
-Feature: QWS_QPF
-Description: Supports Qt's pre-rendered fonts, a light-weight non-scalable font format
-specific to Qt for Embedded Linux.
-Section: Fonts
-Requires:
-Name: Qt Prerendered Font Format
-SeeAlso: ???
-
-Feature: QWS_QPF2
-Description: Supports Qt's second generation of pre-rendered fonts, a light-weight
-non-scalable font format specific to Qt for Embedded Linux.
-Section: Fonts
-Requires:
-Name: Qt Prerendered Font Format 2
-SeeAlso: ???
-
# Internationalization
-Feature: TEXTCODECPLUGIN
-Description: Supports custom text codecs that can be loaded dynamically into applications.
-Section: Internationalization
-Requires: TEXTCODEC LIBRARY
-Name: QTextCodecPlugin
-SeeAlso: ???
-
Feature: TRANSLATION
Description: Supports translations using QObject::tr().
Section: Internationalization
@@ -1018,13 +988,6 @@ Requires:
Name: Big Codecs
SeeAlso: ???
-Feature: QWS_INPUTMETHODS
-Description: Supports international input methods.
-Section: Internationalization
-Requires: IM
-Name: QWSInputMethod
-SeeAlso: ???
-
# Networking
Feature: URLINFO
@@ -1037,7 +1000,7 @@ SeeAlso: ???
Feature: HOSTINFO
Description: Supports host name lookups.
Section: Networking
-Requires: TEXTSTREAM
+Requires:
Name: QHostInfo
SeeAlso: ???
@@ -1076,15 +1039,6 @@ Requires: NETWORKPROXY
Name: SOCKS5
SeeAlso: ???
-Feature: COP
-Description: Supports the QCOP protocol, which is a many-to-many
-communication protocol for transferring messages on various
-channels, and Inter Process Communications (IPC).
-Section: Networking
-Requires:
-Name: QCopChannel
-SeeAlso: ???
-
Feature: NETWORKINTERFACE
Description: Supports listing the host's IP addresses and network interfaces
Section: Networking
@@ -1193,188 +1147,6 @@ Requires:
Name: Gesture
SeeAlso: ???
-# SVG
-
-Feature: SVG
-Description: Provides classes for displaying the contents of SVG files.
-Section: SVG
-Requires: XMLSTREAMREADER CSSPARSER
-Name: QtSvg module
-SeeAlso: ???
-
-Feature: GRAPHICSSVGITEM
-Description: Provides a QGraphicsItem that can be used to render the contents of SVG files.
-Section: SVG
-Requires: SVGRENDERER GRAPHICSVIEW
-Name: QGraphicsSvgItem
-SeeAlso: ???
-
-Feature: SVGGENERATOR
-Description: Provides a paint device that is used to create SVG drawings.
-Section: SVG
-Requires: SVG
-Name: QSvgGenerator
-SeeAlso: ???
-
-Feature: SVGRENDERER
-Description: Provides a class used to draw the contents of SVG files onto paint devices.
-Section: SVG
-Requires: SVG
-Name: QSvgRenderer
-SeeAlso: ???
-
-Feature: SVGWIDGET
-Description: Provides a widget that is used to display the contents of SVG files.
-Section: SVG
-Requires: SVGRENDERER
-Name: QSvgWidget
-SeeAlso: ???
-
-
-# Qt for Embedded Linux
-
-Feature: QWS_SOUNDSERVER
-Description: Supports servers playing sounds.
-Section: Qt for Embedded Linux
-Requires: SOUND HOSTINFO QWS_MULTIPROCESS
-Name: Sound Server
-SeeAlso: ???
-
-Feature: QWS_MULTIPROCESS
-Description: Supports multi-process architecture.
-Section: Qt for Embedded Linux
-Requires:
-Name: Multi-Process
-SeeAlso: ???
-
-Feature: QWS_KEYBOARD
-Description: Supports the console keyboard.
-Section: Qt for Embedded Linux
-Requires:
-Name: Keyboard
-SeeAlso: ???
-
-Feature: QWS_CURSOR
-Description: Supports visible cursors.
-Section: Qt for Embedded Linux
-Requires: CURSOR
-Name: Cursor
-SeeAlso: ???
-
-Feature: QWS_ALPHA_CURSOR
-Description: Supports alpha-blended cursors.
-Section: Qt for Embedded Linux
-Requires:
-Name: Alpha Cursor
-SeeAlso: ???
-
-Feature: QWS_MANAGER
-Description: Supports the window manager.
-Section: Qt for Embedded Linux
-Requires: QWS_DECORATION_DEFAULT
-Name: Manager
-SeeAlso: ???
-
-Feature: QWS_DECORATION_DEFAULT
-Description: Supports default decoration of the top level windows.
-Section: Qt for Embedded Linux
-Requires:
-Name: Decoration
-SeeAlso: ???
-
-Feature: QWS_DECORATION_WINDOWS
-Description: Supports a "Windows" style decoration of the top level windows.
-Section: Qt for Embedded Linux
-Requires: QWS_DECORATION_DEFAULT
-Name: Decoration (Windows Style)
-SeeAlso: ???
-
-Feature: QWS_DECORATION_STYLED
-Description: Supports styled decoration of the top level windows.
-Section: Qt for Embedded Linux
-Requires: QWS_DECORATION_DEFAULT
-Name: Decoration (Styled)
-SeeAlso: ???
-
-Feature: QWS_MOUSE
-Description: Supports mouse drivers.
-Section: Qt for Embedded Linux
-Requires:
-Name: Mouse
-SeeAlso: ???
-
-Feature: QWS_MOUSE_AUTO
-Description: Supports auto-detected mouse drivers.
-Section: Qt for Embedded Linux
-Requires:
-Name: Mouse (Auto)
-SeeAlso: ???
-
-Feature: QWS_MOUSE_MANUAL
-Description: Supports non-autodetected mouse drivers.
-Section: Qt for Embedded Linux
-Requires:
-Name: Mouse (Non-Auto)
-SeeAlso: ???
-
-Feature: QWS_PROPERTIES
-Description: Supports window system properties.
-Section: Qt for Embedded Linux
-Requires:
-Name: Properties
-SeeAlso: ???
-
-Feature: SXE
-Description: Supports Safe Execution Environment (experimental).
-Section: Qt for Embedded Linux
-Requires: QWS_MULTIPROCESS
-Name: SXE
-SeeAlso: ???
-
-Feature: QWSEMBEDWIDGET
-Description: Provides embedding of a top-level window.
-Section: Qt for Embedded Linux
-Requires:
-Name: QWSEmbedWidget
-SeeAlso: ???
-
-Feature: QWS_PROXYSCREEN
-Description: Provides a proxy helper class used by some screen drivers.
-Section: Qt for Embedded Linux
-Requires:
-Name: QProxyScreen
-SeeAlso: ???
-
-Feature: QWS_VNC
-Description: Provides VNC screen driver
-Section: Qt for Embedded Linux
-Requires: QWS_PROXYSCREEN
-Name: QVncScreen
-SeeAlso: ???
-
-Feature: QWS_TRANSFORMED
-Description: Provides Transformed screen driver
-Section: Qt for Embedded Linux
-Requires: QWS_PROXYSCREEN
-Name: QVncTransformed
-SeeAlso: ???
-
-Feature: QWS_DYNAMICSCREENTRANSFORMATION
-Description: Enables dynamic setting of screen transformation/rotation.
-Section: Qt for Embedded Linux
-Requires: QWS_PROXYSCREEN
-Name: Dynamic screen transformation.
-SeeAlso: ???
-
-# Windows
-
-Feature: WIN_ACTIVEQT
-Description: Support for ActiveQt
-Section: Windows
-Requires: PROPERTIES
-Name: ActiveQt
-SeeAlso: ???
-
# D-Bus
Feature: DBUS
@@ -1384,97 +1156,3 @@ Requires: PROPERTIES DOM
Name: QtDBus module
SeeAlso: ???
-# Phonon
-
-Feature: PHONON_PLATFORMPLUGIN
-Description: Support for platform plugin
-Section: Phonon
-Requires: LIBRARY
-Name: Phonon::PlatformPlugin
-SeeAlso: ???
-
-Feature: PHONON_EFFECT
-Description: Support for Audio Effect
-Section: Phonon
-Requires:
-Name: Phonon::Effect
-SeeAlso: ???
-
-Feature: PHONON_AUDIOCAPTURE
-Description: Support for Audio Capture
-Section: Phonon
-Requires:
-Name: Support for Audio Capture
-SeeAlso: ???
-
-Feature: PHONON_EFFECTWIDGET
-Description: Support for Audio Effect Widget
-Section: Phonon
-Requires: PHONON_EFFECT COMBOBOX SPINBOX
-Name: Phonon::EffectWidget
-SeeAlso: ???
-
-Feature: PHONON_VOLUMEFADEREFFECT
-Description: Support for Volume Fader Effect class
-Section: Phonon
-Requires: PHONON_EFFECT
-Name: Phonon::VolumeFaderEffect
-SeeAlso: ???
-
-
-Feature: PHONON_OBJECTDESCRIPTIONMODEL
-Description: Support for Object Description Model
-Section: Phonon
-Requires:
-Name: Phonon::ObjectDescriptionModel
-SeeAlso: ???
-
-Feature: PHONON_VIDEO
-Description: Support for Video
-Section: Phonon
-Requires:
-Name: Phonon::VideoWidget
-SeeAlso: ???
-
-Feature: PHONON_VIDEOPLAYER
-Description: Support for the Video Player class
-Section: Phonon
-Requires: PHONON_VIDEO
-Name: Phonon::VideoPlayer
-SeeAlso: ???
-
-
-Feature: PHONON_SEEKSLIDER
-Description: Support for the Seek Slider class
-Section: Phonon
-Requires: SLIDER
-Name: Phonon::SeekSlider
-SeeAlso: ???
-
-Feature: PHONON_VOLUMESLIDER
-Description: Support for the Volume Slider class
-Section: Phonon
-Requires: SLIDER TOOLBUTTON
-Name: Phonon::VolumeSlider
-SeeAlso: ???
-
-Feature: PHONON_MEDIACONTROLLER
-Description: Support for the MediaController class
-Section: Phonon
-Requires:
-Name: Phonon::MediaController
-SeeAlso: ???
-
-Feature: PHONON_ABSTRACTMEDIASTREAM
-Description: Support for streaming of raw data (QIODevice...)
-Section: Phonon
-Requires:
-Name: Phonon::AbstractMediaStream
-SeeAlso: ???
-
-Feature: PHONON_SETTINGSGROUP
-Description: Phonon settingsgroup
-Section: Phonon
-Requires: SETTINGS
-Name: Phonon::AbstractMediaStream
-SeeAlso: ???
diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp
index f8fc49ddbf..01b3e2ec32 100644
--- a/src/corelib/global/qglobal.cpp
+++ b/src/corelib/global/qglobal.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,6 +47,7 @@
#include "qdir.h"
#include "qstringlist.h"
#include "qdatetime.h"
+#include "qdebug.h"
#ifndef QT_NO_QOBJECT
#include <private/qthread_p.h>
@@ -442,8 +443,12 @@ QT_BEGIN_NAMESPACE
Finally, the QtMsgType definition identifies the various messages
that can be generated and sent to a Qt message handler;
- QtMsgHandler is a type definition for a pointer to a function with
- the signature \c {void myMsgHandler(QtMsgType, const char *)}.
+ QMessageHandler is a type definition for a pointer to a function with
+ the signature
+ \c {void myMessageHandler(QtMsgType, const QMessageLogContext &, const char *)}.
+ QMessageLogContext class contains the line, file, and function the
+ message was logged at. This information is created by the QMessageLogger
+ class.
\section1 Functions
@@ -473,8 +478,8 @@ QT_BEGIN_NAMESPACE
The remaining functions are qRound() and qRound64(), which both
accept a \l qreal value as their argument returning the value
rounded up to the nearest integer and 64-bit integer respectively,
- the qInstallMsgHandler() function which installs the given
- QtMsgHandler, and the qVersion() function which returns the
+ the qInstallMessageHandler() function which installs the given
+ QMessageHandler, and the qVersion() function which returns the
version number of Qt at run-time as a string.
\section1 Macros
@@ -675,15 +680,31 @@ QT_BEGIN_NAMESPACE
/*!
\typedef QtMsgHandler
\relates <QtGlobal>
+ \deprecated
This is a typedef for a pointer to a function with the following
signature:
\snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 7
- \sa QtMsgType, qInstallMsgHandler()
+ This typedef is deprecated, you should use QMessageHandler instead.
+ \sa QtMsgType, QMessageHandler, qInstallMsgHandler(), qInstallMessageHandler()
+*/
+
+/*!
+ \typedef QMessageHandler
+ \relates <QtGlobal>
+ \since 5.0
+
+ This is a typedef for a pointer to a function with the following
+ signature:
+
+ \snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 49
+
+ \sa QtMsgType, qInstallMessageHandler()
*/
+
/*!
\enum QtMsgType
\relates <QtGlobal>
@@ -704,7 +725,7 @@ QT_BEGIN_NAMESPACE
\value QtSystemMsg
- \sa QtMsgHandler, qInstallMsgHandler()
+ \sa QMessageHandler, qInstallMessageHandler()
*/
/*! \typedef QFunctionPointer
@@ -1232,14 +1253,6 @@ bool qSharedBuild()
*/
/*!
- \macro Q_CC_MWERKS
- \relates <QtGlobal>
-
- Defined if the application is compiled using Metrowerks
- CodeWarrior.
-*/
-
-/*!
\macro Q_CC_MSVC
\relates <QtGlobal>
@@ -1378,13 +1391,6 @@ bool qSharedBuild()
*/
/*!
- \macro Q_OS_SYMBIAN
- \relates <QtGlobal>
-
- Defined on Symbian.
- */
-
-/*!
\macro QT_DISABLE_DEPRECATED_BEFORE
\relates <QtGlobal>
@@ -1720,21 +1726,8 @@ Q_CORE_EXPORT unsigned int qt_int_sqrt(unsigned int n)
void *qMemCopy(void *dest, const void *src, size_t n) { return memcpy(dest, src, n); }
void *qMemSet(void *dest, int c, size_t n) { return memset(dest, c, n); }
-static QtMsgHandler handler = 0; // pointer to debug handler
-
-#if defined(Q_CC_MWERKS) && defined(Q_OS_MACX)
-extern bool qt_is_gui_used;
-static void mac_default_handler(const char *msg)
-{
- if (qt_is_gui_used) {
- Str255 pmsg;
- qt_mac_to_pascal_string(msg, pmsg);
- DebugStr(pmsg);
- } else {
- fprintf(stderr, msg);
- }
-}
-#endif // Q_CC_MWERKS && Q_OS_MACX
+static QtMsgHandler msgHandler = 0; // pointer to debug handler (without context)
+static QMessageHandler messageHandler = 0; // pointer to debug handler (with context)
#if !defined(Q_OS_WIN) && !defined(QT_NO_THREAD) && !defined(Q_OS_INTEGRITY) && !defined(Q_OS_QNX) && \
defined(_POSIX_THREAD_SAFE_FUNCTIONS) && _POSIX_VERSION >= 200112L
@@ -1815,10 +1808,22 @@ QString qt_error_string(int errorCode)
return ret.trimmed();
}
-
/*!
\fn QtMsgHandler qInstallMsgHandler(QtMsgHandler handler)
\relates <QtGlobal>
+ \deprecated
+
+ Installs a Qt message \a handler which has been defined
+ previously. This method is deprecated, use qInstallMessageHandler
+ instead.
+
+ \sa QtMsgHandler, qInstallMessageHandler
+*/
+
+/*!
+ \fn QMessageHandler qInstallMessageHandler(QMessageHandler handler)
+ \relates <QtGlobal>
+ \since 5.0
Installs a Qt message \a handler which has been defined
previously. Returns a pointer to the previous message handler
@@ -1840,7 +1845,7 @@ QString qt_error_string(int errorCode)
Only one message handler can be defined, since this is usually
done on an application-wide basis to control debug output.
- To restore the message handler, call \c qInstallMsgHandler(0).
+ To restore the message handler, call \c qInstallMessageHandler(0).
Example:
@@ -1849,9 +1854,12 @@ QString qt_error_string(int errorCode)
\sa qDebug(), qWarning(), qCritical(), qFatal(), QtMsgType,
{Debugging Techniques}
*/
+
#if defined(Q_OS_WIN) && defined(QT_BUILD_CORE_LIB)
extern bool usingWinMain;
-extern Q_CORE_EXPORT void qWinMsgHandler(QtMsgType t, const char* str);
+extern Q_CORE_EXPORT void qWinMsgHandler(QtMsgType t, const char *str);
+extern Q_CORE_EXPORT void qWinMessageHandler(QtMsgType t, const QMessageLogContext &context,
+ const char *str);
#endif
/*!
@@ -1859,9 +1867,7 @@ extern Q_CORE_EXPORT void qWinMsgHandler(QtMsgType t, const char* str);
*/
static void qDefaultMsgHandler(QtMsgType, const char *buf)
{
-#if defined(Q_CC_MWERKS) && defined(Q_OS_MACX)
- mac_default_handler(buf);
-#elif defined(Q_OS_WINCE)
+#if defined(Q_OS_WINCE)
QString fstr = QString::fromLatin1(buf);
fstr += QLatin1Char('\n');
OutputDebugString(reinterpret_cast<const wchar_t *> (fstr.utf16()));
@@ -1871,17 +1877,38 @@ static void qDefaultMsgHandler(QtMsgType, const char *buf)
#endif
}
+/*!
+ \internal
+*/
+static void qDefaultMessageHandler(QtMsgType type, const QMessageLogContext &, const char *buf)
+{
+ qDefaultMsgHandler(type, buf);
+}
+
+QMessageHandler qInstallMessageHandler(QMessageHandler h)
+{
+ if (!messageHandler)
+ messageHandler = qDefaultMessageHandler;
+ QMessageHandler old = messageHandler;
+ messageHandler = h;
+#if defined(Q_OS_WIN) && defined(QT_BUILD_CORE_LIB)
+ if (!messageHandler && usingWinMain)
+ messageHandler = qWinMessageHandler;
+#endif
+ return old;
+}
+
QtMsgHandler qInstallMsgHandler(QtMsgHandler h)
{
//if handler is 0, set it to the
//default message handler
- if (!handler)
- handler = qDefaultMsgHandler;
- QtMsgHandler old = handler;
- handler = h;
+ if (!msgHandler)
+ msgHandler = qDefaultMsgHandler;
+ QtMsgHandler old = msgHandler;
+ msgHandler = h;
#if defined(Q_OS_WIN) && defined(QT_BUILD_CORE_LIB)
- if (!handler && usingWinMain)
- handler = qWinMsgHandler;
+ if (!msgHandler && usingWinMain)
+ msgHandler = qWinMsgHandler;
#endif
return old;
}
@@ -1889,11 +1916,20 @@ QtMsgHandler qInstallMsgHandler(QtMsgHandler h)
/*!
\internal
*/
-void qt_message_output(QtMsgType msgType, const char *buf)
+void qt_message_output(QtMsgType msgType, const QMessageLogContext &context, const char *buf)
{
- if (!handler)
- handler = qDefaultMsgHandler;
- (*handler)(msgType, buf);
+ if (!msgHandler)
+ msgHandler = qDefaultMsgHandler;
+ if (!messageHandler)
+ messageHandler = qDefaultMessageHandler;
+
+ // prefer new message handler over the old one
+ if (msgHandler == qDefaultMsgHandler
+ || messageHandler != qDefaultMessageHandler) {
+ (*messageHandler)(msgType, context, buf);
+ } else {
+ (*msgHandler)(msgType, buf);
+ }
if (msgType == QtFatalMsg
|| (msgType == QtWarningMsg
@@ -1935,14 +1971,15 @@ static void qEmergencyOut(QtMsgType msgType, const char *msg, va_list ap)
emergency_buf[255] = '\0';
if (msg)
qvsnprintf(emergency_buf, 255, msg, ap);
- qt_message_output(msgType, emergency_buf);
+ QMessageLogContext context;
+ qt_message_output(msgType, context, emergency_buf);
}
#endif
/*!
\internal
*/
-static void qt_message(QtMsgType msgType, const char *msg, va_list ap)
+static void qt_message(QtMsgType msgType, const QMessageLogContext &context, const char *msg, va_list ap)
{
#if !defined(QT_NO_EXCEPTIONS)
if (std::uncaught_exception()) {
@@ -1962,11 +1999,12 @@ static void qt_message(QtMsgType msgType, const char *msg, va_list ap)
#endif
}
}
- qt_message_output(msgType, buf.constData());
+ qt_message_output(msgType, context, buf.constData());
}
#undef qDebug
/*!
+ \fn qDebug(const char *message, ...)
\relates <QtGlobal>
Calls the message handler with the debug message \a msg. If no
@@ -1995,21 +2033,42 @@ static void qt_message(QtMsgType msgType, const char *msg, va_list ap)
the end. It supports many C++ and Qt types.
To suppress the output at run-time, install your own message handler
- with qInstallMsgHandler().
+ with qInstallMessageHandler().
- \sa qWarning(), qCritical(), qFatal(), qInstallMsgHandler(),
+ \sa qWarning(), qCritical(), qFatal(), qInstallMessageHandler(),
{Debugging Techniques}
*/
-void qDebug(const char *msg, ...)
+
+void QMessageLogger::debug(const char *msg, ...)
{
va_list ap;
va_start(ap, msg); // use variable arg list
- qt_message(QtDebugMsg, msg, ap);
+ qt_message(QtDebugMsg, context, msg, ap);
va_end(ap);
}
+#ifndef QT_NO_DEBUG_STREAM
+
+QDebug QMessageLogger::debug()
+{
+ QDebug dbg = QDebug(QtDebugMsg);
+ QMessageLogContext &ctxt = dbg.stream->context;
+ ctxt.file = context.file;
+ ctxt.line = context.line;
+ ctxt.function = context.function;
+ return dbg;
+}
+
+QNoDebug QMessageLogger::noDebug()
+{
+ return QNoDebug();
+}
+
+#endif
+
#undef qWarning
/*!
+ \fn qWarning(const char *message, ...)
\relates <QtGlobal>
Calls the message handler with the warning message \a msg. If no
@@ -2035,20 +2094,35 @@ void qDebug(const char *msg, ...)
appends a newline at the end.
To suppress the output at runtime, install your own message handler
- with qInstallMsgHandler().
+ with qInstallMessageHandler().
- \sa qDebug(), qCritical(), qFatal(), qInstallMsgHandler(),
+ \sa qDebug(), qCritical(), qFatal(), qInstallMessageHandler(),
{Debugging Techniques}
*/
-void qWarning(const char *msg, ...)
+
+void QMessageLogger::warning(const char *msg, ...)
{
va_list ap;
va_start(ap, msg); // use variable arg list
- qt_message(QtWarningMsg, msg, ap);
+ qt_message(QtWarningMsg, context, msg, ap);
va_end(ap);
}
+#ifndef QT_NO_DEBUG_STREAM
+QDebug QMessageLogger::warning()
+{
+ QDebug dbg = QDebug(QtWarningMsg);
+ QMessageLogContext &ctxt = dbg.stream->context;
+ ctxt.file = context.file;
+ ctxt.line = context.line;
+ ctxt.function = context.function;
+ return dbg;
+}
+#endif
+
+#undef qCritical
/*!
+ \fn qCritical(const char *message, ...)
\relates <QtGlobal>
Calls the message handler with the critical message \a msg. If no
@@ -2071,19 +2145,32 @@ void qWarning(const char *msg, ...)
appended at the end.
To suppress the output at runtime, install your own message handler
- with qInstallMsgHandler().
+ with qInstallMessageHandler().
- \sa qDebug(), qWarning(), qFatal(), qInstallMsgHandler(),
+ \sa qDebug(), qWarning(), qFatal(), qInstallMessageHandler(),
{Debugging Techniques}
*/
-void qCritical(const char *msg, ...)
+
+void QMessageLogger::critical(const char *msg, ...)
{
va_list ap;
va_start(ap, msg); // use variable arg list
- qt_message(QtCriticalMsg, msg, ap);
+ qt_message(QtCriticalMsg, context, msg, ap);
va_end(ap);
}
+#ifndef QT_NO_DEBUG_STREAM
+QDebug QMessageLogger::critical()
+{
+ QDebug dbg = QDebug(QtCriticalMsg);
+ QMessageLogContext &ctxt = dbg.stream->context;
+ ctxt.file = context.file;
+ ctxt.line = context.line;
+ ctxt.function = context.function;
+ return dbg;
+}
+#endif
+
void qErrnoWarning(const char *msg, ...)
{
// qt_error_string() will allocate anyway, so we don't have
@@ -2095,7 +2182,8 @@ void qErrnoWarning(const char *msg, ...)
buf.vsprintf(msg, ap);
va_end(ap);
- qCritical("%s (%s)", buf.toLocal8Bit().constData(), qt_error_string(-1).toLocal8Bit().constData());
+ QMessageLogger().critical("%s (%s)", buf.toLocal8Bit().constData(),
+ qt_error_string(-1).toLocal8Bit().constData());
}
void qErrnoWarning(int code, const char *msg, ...)
@@ -2109,10 +2197,13 @@ void qErrnoWarning(int code, const char *msg, ...)
buf.vsprintf(msg, ap);
va_end(ap);
- qCritical("%s (%s)", buf.toLocal8Bit().constData(), qt_error_string(code).toLocal8Bit().constData());
+ QMessageLogger().critical("%s (%s)", buf.toLocal8Bit().constData(),
+ qt_error_string(code).toLocal8Bit().constData());
}
+#undef qFatal
/*!
+ \fn qFatal(const char *message, ...)
\relates <QtGlobal>
Calls the message handler with the fatal message \a msg. If no
@@ -2131,16 +2222,17 @@ void qErrnoWarning(int code, const char *msg, ...)
\snippet doc/src/snippets/code/src_corelib_global_qglobal.cpp 30
To suppress the output at runtime, install your own message handler
- with qInstallMsgHandler().
+ with qInstallMessageHandler().
- \sa qDebug(), qCritical(), qWarning(), qInstallMsgHandler(),
+ \sa qDebug(), qCritical(), qWarning(), qInstallMessageHandler(),
{Debugging Techniques}
*/
-void qFatal(const char *msg, ...)
+
+void QMessageLogger::fatal(const char *msg, ...)
{
va_list ap;
va_start(ap, msg); // use variable arg list
- qt_message(QtFatalMsg, msg, ap);
+ qt_message(QtFatalMsg, context, msg, ap);
va_end(ap);
}
diff --git a/src/corelib/global/qglobal.h b/src/corelib/global/qglobal.h
index fd5c5d6315..c92336f95c 100644
--- a/src/corelib/global/qglobal.h
+++ b/src/corelib/global/qglobal.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -143,20 +143,15 @@ namespace QT_NAMESPACE {}
#if defined(Q_OS_MAC) && !defined(Q_CC_INTEL)
#define QT_BEGIN_HEADER extern "C++" {
#define QT_END_HEADER }
-#define QT_BEGIN_INCLUDE_HEADER }
-#define QT_END_INCLUDE_HEADER extern "C++" {
#else
#define QT_BEGIN_HEADER
#define QT_END_HEADER
-#define QT_BEGIN_INCLUDE_HEADER
-#define QT_END_INCLUDE_HEADER extern "C++"
#endif
/*
The operating system, must be one of: (Q_OS_x)
DARWIN - Darwin OS (synonym for Q_OS_MAC)
- SYMBIAN - Symbian
MSDOS - MS-DOS and Windows
OS2 - OS/2
OS2EMX - XFree86 on OS/2 (not PM)
@@ -195,10 +190,6 @@ namespace QT_NAMESPACE {}
# else
# define Q_OS_DARWIN32
# endif
-#elif defined(__SYMBIAN32__) || defined(SYMBIAN)
-# define Q_OS_SYMBIAN
-# define Q_NO_POSIX_SIGNALS
-# define QT_NO_GETIFADDRS
#elif defined(__CYGWIN__)
# define Q_OS_CYGWIN
#elif !defined(SAG_COM) && (defined(WIN64) || defined(_WIN64) || defined(__WIN64__))
@@ -210,8 +201,6 @@ namespace QT_NAMESPACE {}
# else
# define Q_OS_WIN32
# endif
-#elif defined(__MWERKS__) && defined(__INTEL__)
-# define Q_OS_WIN32
#elif defined(__sun) || defined(sun)
# define Q_OS_SOLARIS
#elif defined(hpux) || defined(__hpux)
@@ -264,7 +253,7 @@ namespace QT_NAMESPACE {}
# define Q_OS_VXWORKS
#elif defined(__MAKEDEPEND__)
#else
-# error "Qt has not been ported to this OS - talk to qt-info@nokia.com"
+# error "Qt has not been ported to this OS - see http://www.qt-project.org/"
#endif
#if defined(Q_OS_WIN32) || defined(Q_OS_WIN64) || defined(Q_OS_WINCE)
@@ -330,7 +319,6 @@ namespace QT_NAMESPACE {}
The compiler, must be one of: (Q_CC_x)
SYM - Digital Mars C/C++ (used to be Symantec C++)
- MWERKS - Metrowerks CodeWarrior
MSVC - Microsoft Visual C/C++, Intel C++ for Windows
BOR - Borland/Turbo C++
WAT - Watcom C++
@@ -349,9 +337,7 @@ namespace QT_NAMESPACE {}
HIGHC - MetaWare High C/C++
PGI - Portland Group C++
GHS - Green Hills Optimizing C++ Compilers
- GCCE - GCCE (Symbian GCCE builds)
RVCT - ARM Realview Compiler Suite
- NOKIAX86 - Nokia x86 (Symbian WINSCW builds)
CLANG - C++ front-end for the LLVM compiler
@@ -367,13 +353,6 @@ namespace QT_NAMESPACE {}
# endif
# define Q_NO_USING_KEYWORD
-#elif defined(__MWERKS__)
-# define Q_CC_MWERKS
-# if defined(__EMU_SYMBIAN_OS__)
-# define Q_CC_NOKIAX86
-# endif
-/* "explicit" recognized since 4.0d1 */
-
#elif defined(_MSC_VER)
# define Q_CC_MSVC
# define Q_CC_MSVC_NET
@@ -416,14 +395,6 @@ namespace QT_NAMESPACE {}
#elif defined(__WATCOMC__)
# define Q_CC_WAT
-/* Symbian GCCE */
-#elif defined(__GCCE__)
-# define Q_CC_GCCE
-# define QT_VISIBILITY_AVAILABLE
-# if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__)
-# define QT_HAVE_ARMV6
-# endif
-
/* ARM Realview Compiler Suite
RVCT compiler also defines __EDG__ and __GNUC__ (if --gnu flag is given),
so check for it before that */
@@ -523,7 +494,6 @@ namespace QT_NAMESPACE {}
# if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407
/* C++0x features supported in GCC 4.7: */
# define Q_COMPILER_EXPLICIT_OVERRIDES
-# define Q_COMPILER_FINAL
# endif
# endif
@@ -760,11 +730,8 @@ namespace QT_NAMESPACE {}
# endif
# define Q_NO_USING_KEYWORD /* ### check "using" status */
-#elif defined(__WINSCW__) && !defined(Q_CC_NOKIAX86)
-# define Q_CC_NOKIAX86
-
#else
-# error "Qt has not been tested with this compiler - talk to qt-info@nokia.com"
+# error "Qt has not been tested with this compiler - see http://www.qt-project.org/"
#endif
@@ -815,16 +782,24 @@ namespace QT_NAMESPACE {}
# define Q_COMPILER_RANGE_FOR
# define Q_COMPILER_UNICODE_STRINGS
# endif
-# if 0 /*) not implemented in clang */
-# define Q_COMPILER_ATOMICS
+ /* not implemented in clang yet */
+# if __has_feature(cxx_constexpr)
# define Q_COMPILER_CONSTEXPR
-# define Q_COMPILER_FINAL
-# define Q_COMPILER_INITIALIZER_LISTS
+# endif
+# if __has_feature(cxx_lambdas)
# define Q_COMPILER_LAMBDA
+# endif
+# if __has_feature(cxx_generalized_initializers)
+# define Q_COMPILER_INITIALIZER_LISTS
+# endif
+# if __has_feature(cxx_unrestricted_unions)
# define Q_COMPILER_UNRESTRICTED_UNIONS
# endif
+# if 0
+# define Q_COMPILER_ATOMICS
+# endif
# endif
-#endif
+#endif // Q_CC_CLANG
#ifndef Q_PACKED
# define Q_PACKED
@@ -893,7 +868,7 @@ typedef short qint16; /* 16 bit signed */
typedef unsigned short quint16; /* 16 bit unsigned */
typedef int qint32; /* 32 bit signed */
typedef unsigned int quint32; /* 32 bit unsigned */
-#if defined(Q_OS_WIN) && !defined(Q_CC_GNU) && !defined(Q_CC_MWERKS)
+#if defined(Q_OS_WIN) && !defined(Q_CC_GNU)
# define Q_INT64_C(c) c ## i64 /* signed 64 bit constant */
# define Q_UINT64_C(c) c ## ui64 /* unsigned 64 bit constant */
typedef __int64 qint64; /* 64 bit signed */
@@ -911,7 +886,7 @@ typedef quint64 qulonglong;
#ifndef QT_POINTER_SIZE
# if defined(Q_OS_WIN64)
# define QT_POINTER_SIZE 8
-# elif defined(Q_OS_WIN32) || defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+# elif defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
# define QT_POINTER_SIZE 4
# endif
#endif
@@ -1121,13 +1096,9 @@ QT_END_INCLUDE_NAMESPACE
#ifdef Q_COMPILER_EXPLICIT_OVERRIDES
# define Q_DECL_OVERRIDE override
-#else
-# define Q_DECL_OVERRIDE
-#endif
-
-#ifdef Q_COMPILER_FINAL
# define Q_DECL_FINAL final
#else
+# define Q_DECL_OVERRIDE
# define Q_DECL_FINAL
#endif
@@ -1220,7 +1191,7 @@ class QDataStream;
#endif
#ifndef Q_DECL_EXPORT
-# if defined(Q_OS_WIN) || defined(Q_CC_NOKIAX86) || defined(Q_CC_RVCT)
+# if defined(Q_OS_WIN) || defined(Q_CC_RVCT)
# define Q_DECL_EXPORT __declspec(dllexport)
# elif defined(QT_VISIBILITY_AVAILABLE)
# define Q_DECL_EXPORT __attribute__((visibility("default")))
@@ -1231,7 +1202,7 @@ class QDataStream;
# endif
#endif
#ifndef Q_DECL_IMPORT
-# if defined(Q_OS_WIN) || defined(Q_CC_NOKIAX86) || defined(Q_CC_RVCT)
+# if defined(Q_OS_WIN) || defined(Q_CC_RVCT)
# define Q_DECL_IMPORT __declspec(dllimport)
# else
# define Q_DECL_IMPORT
@@ -1355,6 +1326,11 @@ class QDataStream;
# define Q_DBUS_EXPORT Q_DECL_IMPORT
# endif
# define Q_TEMPLATEDLL
+# if defined(QT_BUILD_CONCURRENT_LIB)
+# define Q_CONCURRENT_EXPORT Q_DECL_EXPORT
+# else
+# define Q_CONCURRENT_EXPORT Q_DECL_IMPORT
+# endif
# elif defined(QT_DLL) /* use a Qt DLL library */
# define Q_CORE_EXPORT Q_DECL_IMPORT
# define Q_GUI_EXPORT Q_DECL_IMPORT
@@ -1376,6 +1352,7 @@ class QDataStream;
# define Q_SCRIPTTOOLS_EXPORT Q_DECL_IMPORT
# define Q_COMPAT_EXPORT Q_DECL_IMPORT
# define Q_DBUS_EXPORT Q_DECL_IMPORT
+# define Q_CONCURRENT_EXPORT Q_DECL_IMPORT
# define Q_TEMPLATEDLL
# endif
# define Q_NO_DECLARED_NOT_DEFINED
@@ -1409,6 +1386,7 @@ class QDataStream;
# define Q_SCRIPTTOOLS_EXPORT Q_DECL_EXPORT
# define Q_COMPAT_EXPORT Q_DECL_EXPORT
# define Q_DBUS_EXPORT Q_DECL_EXPORT
+# define Q_CONCURRENT_EXPORT Q_DECL_EXPORT
# else
# define Q_CORE_EXPORT
# define Q_GUI_EXPORT
@@ -1429,6 +1407,7 @@ class QDataStream;
# define Q_SCRIPTTOOLS_EXPORT
# define Q_COMPAT_EXPORT
# define Q_DBUS_EXPORT
+# define Q_CONCURRENT_EXPORT
# endif
#endif
@@ -1666,65 +1645,12 @@ inline void qUnused(T &x) { (void)x; }
# define qPrintable(string) QString(string).toLocal8Bit().constData()
#endif
-Q_CORE_EXPORT void qDebug(const char *, ...) /* print debug message */
-#if defined(Q_CC_GNU) && !defined(__INSURE__)
- __attribute__ ((format (printf, 1, 2)))
-#endif
-;
-
-Q_CORE_EXPORT void qWarning(const char *, ...) /* print warning message */
-#if defined(Q_CC_GNU) && !defined(__INSURE__)
- __attribute__ ((format (printf, 1, 2)))
-#endif
-;
-
class QString;
Q_CORE_EXPORT QString qt_error_string(int errorCode = -1);
-Q_CORE_EXPORT void qCritical(const char *, ...) /* print critical message */
-#if defined(Q_CC_GNU) && !defined(__INSURE__)
- __attribute__ ((format (printf, 1, 2)))
-#endif
-;
-Q_CORE_EXPORT void qFatal(const char *, ...) /* print fatal message and exit */
-#if defined(Q_CC_GNU) && !defined(__INSURE__)
- __attribute__ ((format (printf, 1, 2)))
-#endif
-;
Q_CORE_EXPORT void qErrnoWarning(int code, const char *msg, ...);
Q_CORE_EXPORT void qErrnoWarning(const char *msg, ...);
-/*
- Forward declarations only.
-
- In order to use the qDebug() stream, you must #include<QDebug>
-*/
-class QDebug;
-class QNoDebug;
-#if !defined(QT_NO_DEBUG_OUTPUT) && !defined(QT_NO_DEBUG_STREAM)
-Q_CORE_EXPORT_INLINE QDebug qDebug();
-#else
-inline QNoDebug qDebug();
-#endif
-#if !defined(QT_NO_WARNING_OUTPUT) && !defined(QT_NO_DEBUG_STREAM)
-Q_CORE_EXPORT_INLINE QDebug qWarning();
-#else
-inline QNoDebug qWarning();
-#endif
-#if !defined(QT_NO_DEBUG_STREAM)
-Q_CORE_EXPORT_INLINE QDebug qCritical();
-#endif
-
-#define QT_NO_QDEBUG_MACRO while (false) qDebug
-#ifdef QT_NO_DEBUG_OUTPUT
-# define qDebug QT_NO_QDEBUG_MACRO
-#endif
-#define QT_NO_QWARNING_MACRO while (false) qWarning
-#ifdef QT_NO_WARNING_OUTPUT
-# define qWarning QT_NO_QWARNING_MACRO
-#endif
-
-
Q_CORE_EXPORT void qt_assert(const char *assertion, const char *file, int line);
#if !defined(Q_ASSERT)
@@ -1751,8 +1677,8 @@ Q_CORE_EXPORT void qt_assert_x(const char *where, const char *what, const char *
#ifdef Q_COMPILER_STATIC_ASSERT
-#define Q_STATIC_ASSERT(Condition) static_assert(Condition, #Condition)
-#define Q_STATIC_ASSERT_X(Condition, Message) static_assert(Condition, Message)
+#define Q_STATIC_ASSERT(Condition) static_assert(bool(Condition), #Condition)
+#define Q_STATIC_ASSERT_X(Condition, Message) static_assert(bool(Condition), Message)
#else
// Intentionally undefined
template <bool Test> class QStaticAssertFailure;
@@ -1797,18 +1723,12 @@ inline T *q_check_ptr(T *p) { Q_CHECK_PTR(p); return p; }
# endif
/* The MIPSpro and RVCT compilers postpones macro expansion,
and therefore macros must be in scope when being used. */
-# if !defined(Q_CC_MIPS) && !defined(Q_CC_RVCT) && !defined(Q_CC_NOKIAX86)
+# if !defined(Q_CC_MIPS) && !defined(Q_CC_RVCT)
# undef QT_STRINGIFY2
# undef QT_STRINGIFY
# endif
#endif
-enum QtMsgType { QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtSystemMsg = QtCriticalMsg };
-
-Q_CORE_EXPORT void qt_message_output(QtMsgType, const char *buf);
-
-typedef void (*QtMsgHandler)(QtMsgType, const char *);
-Q_CORE_EXPORT QtMsgHandler qInstallMsgHandler(QtMsgHandler);
typedef void (*QFunctionPointer)();
@@ -1935,23 +1855,6 @@ public:
#endif
-class QBool
-{
- bool b;
-
-public:
- inline explicit QBool(bool B) : b(B) {}
- inline operator const void *() const
- { return b ? static_cast<const void *>(this) : static_cast<const void *>(0); }
-};
-
-inline bool operator==(QBool b1, bool b2) { return !b1 == !b2; }
-inline bool operator==(bool b1, QBool b2) { return !b1 == !b2; }
-inline bool operator==(QBool b1, QBool b2) { return !b1 == !b2; }
-inline bool operator!=(QBool b1, bool b2) { return !b1 != !b2; }
-inline bool operator!=(bool b1, QBool b2) { return !b1 != !b2; }
-inline bool operator!=(QBool b1, QBool b2) { return !b1 != !b2; }
-
Q_DECL_CONSTEXPR static inline bool qFuzzyCompare(double p1, double p2)
{
return (qAbs(p1 - p2) <= 0.000000000001 * qMin(qAbs(p1), qAbs(p2)));
@@ -2051,7 +1954,8 @@ public:
isComplex = true,
isStatic = true,
isLarge = (sizeof(T)>sizeof(void*)),
- isDummy = false
+ isDummy = false,
+ sizeOf = sizeof(T)
};
};
@@ -2064,7 +1968,8 @@ public:
isComplex = false,
isStatic = false,
isLarge = false,
- isDummy = false
+ isDummy = false,
+ sizeOf = 0
};
};
@@ -2077,10 +1982,37 @@ public:
isComplex = false,
isStatic = false,
isLarge = false,
- isDummy = false
+ isDummy = false,
+ sizeOf = sizeof(T*)
};
};
+
+#define Q_DECLARE_MOVABLE_CONTAINER(CONTAINER) \
+template <typename T> class CONTAINER; \
+template <typename T> \
+class QTypeInfo< CONTAINER<T> > \
+{ \
+public: \
+ enum { \
+ isPointer = false, \
+ isComplex = true, \
+ isStatic = false, \
+ isLarge = (sizeof(CONTAINER<T>) > sizeof(void*)), \
+ isDummy = false, \
+ sizeOf = sizeof(CONTAINER<T>) \
+ }; \
+};
+
+Q_DECLARE_MOVABLE_CONTAINER(QList)
+Q_DECLARE_MOVABLE_CONTAINER(QVector)
+Q_DECLARE_MOVABLE_CONTAINER(QQueue)
+Q_DECLARE_MOVABLE_CONTAINER(QStack)
+Q_DECLARE_MOVABLE_CONTAINER(QLinkedList)
+Q_DECLARE_MOVABLE_CONTAINER(QSet)
+
+#undef Q_DECLARE_MOVABLE_CONTAINER
+
/*
Specialize a specific type with:
@@ -2106,7 +2038,8 @@ public: \
isStatic = (((FLAGS) & (Q_MOVABLE_TYPE | Q_PRIMITIVE_TYPE)) == 0), \
isLarge = (sizeof(TYPE)>sizeof(void*)), \
isPointer = false, \
- isDummy = (((FLAGS) & Q_DUMMY_TYPE) != 0) \
+ isDummy = (((FLAGS) & Q_DUMMY_TYPE) != 0), \
+ sizeOf = sizeof(TYPE) \
}; \
static inline const char *name() { return #TYPE; } \
}
@@ -2476,138 +2409,7 @@ inline int qIntCast(float f) { return int(f); }
Q_CORE_EXPORT void qsrand(uint seed);
Q_CORE_EXPORT int qrand();
-/*
- This gives us the possibility to check which modules the user can
- use. These are purely compile time checks and will generate no code.
-*/
-
-/* Qt modules */
-#define QT_MODULE_CORE 0x000001
-#define QT_MODULE_GUI 0x000002
-#define QT_MODULE_NETWORK 0x000004
-#define QT_MODULE_OPENGL 0x000008
-#define QT_MODULE_SQL 0x000010
-#define QT_MODULE_XML 0x000020
-#define QT_MODULE_SVG 0x000100
-#define QT_MODULE_ACTIVEQT 0x000200
-#define QT_MODULE_GRAPHICSVIEW 0x000400
-#define QT_MODULE_SCRIPT 0x000800
-#define QT_MODULE_XMLPATTERNS 0x001000
-#define QT_MODULE_HELP 0x002000
-#define QT_MODULE_TEST 0x004000
-#define QT_MODULE_DBUS 0x008000
-#define QT_MODULE_SCRIPTTOOLS 0x010000
-#define QT_MODULE_OPENVG 0x020000
-#define QT_MODULE_MULTIMEDIA 0x040000
-#define QT_MODULE_DECLARATIVE 0x080000
-
-/* Qt editions */
-#define QT_EDITION_CONSOLE (QT_MODULE_CORE \
- | QT_MODULE_NETWORK \
- | QT_MODULE_SQL \
- | QT_MODULE_SCRIPT \
- | QT_MODULE_MULTIMEDIA \
- | QT_MODULE_XML \
- | QT_MODULE_XMLPATTERNS \
- | QT_MODULE_TEST \
- | QT_MODULE_DBUS)
-#define QT_EDITION_DESKTOPLIGHT (QT_MODULE_CORE \
- | QT_MODULE_GUI \
- | QT_MODULE_TEST \
- | QT_MODULE_DBUS)
-#define QT_EDITION_OPENSOURCE (QT_MODULE_CORE \
- | QT_MODULE_GUI \
- | QT_MODULE_NETWORK \
- | QT_MODULE_OPENGL \
- | QT_MODULE_OPENVG \
- | QT_MODULE_SQL \
- | QT_MODULE_MULTIMEDIA \
- | QT_MODULE_XML \
- | QT_MODULE_XMLPATTERNS \
- | QT_MODULE_SCRIPT \
- | QT_MODULE_SCRIPTTOOLS \
- | QT_MODULE_SVG \
- | QT_MODULE_DECLARATIVE \
- | QT_MODULE_GRAPHICSVIEW \
- | QT_MODULE_HELP \
- | QT_MODULE_TEST \
- | QT_MODULE_DBUS \
- | QT_MODULE_ACTIVEQT)
-#define QT_EDITION_DESKTOP (QT_EDITION_OPENSOURCE)
-#define QT_EDITION_UNIVERSAL QT_EDITION_DESKTOP
-#define QT_EDITION_ACADEMIC QT_EDITION_DESKTOP
-#define QT_EDITION_EDUCATIONAL QT_EDITION_DESKTOP
-#define QT_EDITION_EVALUATION QT_EDITION_DESKTOP
-
-/* Determine which modules can be used */
-#ifndef QT_EDITION
-# ifdef QT_BUILD_QMAKE
-# define QT_EDITION QT_EDITION_DESKTOP
-# else
-# error "Qt not configured correctly, please run configure"
-# endif
-#endif
-
-#define QT_LICENSED_MODULE(x) \
- enum QtValidLicenseFor##x##Module { Licensed##x = true };
-
-/* qdoc is really unhappy with the following block of preprocessor checks,
- making it difficult to document classes properly after this point. */
-
-#if (QT_EDITION & QT_MODULE_CORE)
-QT_LICENSED_MODULE(Core)
-#endif
-#if (QT_EDITION & QT_MODULE_GUI)
-QT_LICENSED_MODULE(Gui)
-#endif
-#if (QT_EDITION & QT_MODULE_NETWORK)
-QT_LICENSED_MODULE(Network)
-#endif
-#if (QT_EDITION & QT_MODULE_OPENGL)
-QT_LICENSED_MODULE(OpenGL)
-#endif
-#if (QT_EDITION & QT_MODULE_OPENVG)
-QT_LICENSED_MODULE(OpenVG)
-#endif
-#if (QT_EDITION & QT_MODULE_SQL)
-QT_LICENSED_MODULE(Sql)
-#endif
-#if (QT_EDITION & QT_MODULE_MULTIMEDIA)
-QT_LICENSED_MODULE(Multimedia)
-#endif
-#if (QT_EDITION & QT_MODULE_XML)
-QT_LICENSED_MODULE(Xml)
-#endif
-#if (QT_EDITION & QT_MODULE_XMLPATTERNS)
-QT_LICENSED_MODULE(XmlPatterns)
-#endif
-#if (QT_EDITION & QT_MODULE_HELP)
-QT_LICENSED_MODULE(Help)
-#endif
-#if (QT_EDITION & QT_MODULE_SCRIPT) || defined(QT_BUILD_QMAKE)
-QT_LICENSED_MODULE(Script)
-#endif
-#if (QT_EDITION & QT_MODULE_SCRIPTTOOLS)
-QT_LICENSED_MODULE(ScriptTools)
-#endif
-#if (QT_EDITION & QT_MODULE_SVG)
-QT_LICENSED_MODULE(Svg)
-#endif
-#if (QT_EDITION & QT_MODULE_DECLARATIVE)
-QT_LICENSED_MODULE(Declarative)
-#endif
-#if (QT_EDITION & QT_MODULE_ACTIVEQT)
-QT_LICENSED_MODULE(ActiveQt)
-#endif
-#if (QT_EDITION & QT_MODULE_TEST)
-QT_LICENSED_MODULE(Test)
-#endif
-#if (QT_EDITION & QT_MODULE_DBUS)
-QT_LICENSED_MODULE(DBus)
-#endif
-
-#define QT_MODULE(x) \
- typedef QtValidLicenseFor##x##Module Qt##x##Module;
+#define QT_MODULE(x)
#ifdef QT_NO_CONCURRENT
# define QT_NO_QFUTURE
@@ -2646,6 +2448,9 @@ template <typename T> struct QEnableIf<true, T> { typedef T Type; };
QT_END_NAMESPACE
QT_END_HEADER
+// qDebug and friends
+#include "qlogging.h"
+
#endif /* __cplusplus */
#endif /* QGLOBAL_H */
diff --git a/src/corelib/global/qlibraryinfo.cpp b/src/corelib/global/qlibraryinfo.cpp
index 375349c18d..61c750acaf 100644
--- a/src/corelib/global/qlibraryinfo.cpp
+++ b/src/corelib/global/qlibraryinfo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -499,7 +499,7 @@ void qt_core_boilerplate()
{
printf("This is the QtCore library version " QT_VERSION_STR "\n"
"Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).\n"
- "Contact: Nokia Corporation (qt-info@nokia.com)\n"
+ "Contact: http://www.qt-project.org/\n"
"\n"
"Build date: %s\n"
"Installation prefix: %s\n"
diff --git a/src/corelib/global/qlibraryinfo.h b/src/corelib/global/qlibraryinfo.h
index 21fcdeb62c..66f3d40792 100644
--- a/src/corelib/global/qlibraryinfo.h
+++ b/src/corelib/global/qlibraryinfo.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_SETTINGS
diff --git a/src/corelib/global/qlogging.cpp b/src/corelib/global/qlogging.cpp
new file mode 100644
index 0000000000..bc26c9b6b7
--- /dev/null
+++ b/src/corelib/global/qlogging.cpp
@@ -0,0 +1,76 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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 <qlogging.h>
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QMessageLogContext
+ \relates <QtGlobal>
+ \brief The QMessageLogContext class provides additional information about a log message.
+ \since 5.0
+
+ The class provides information about the source code location a qDebug(), qWarning(),
+ qCritical() or qFatal() message was generated.
+
+ \sa QMessageLogger, QMessageHandler, qInstallMessageHandler()
+*/
+
+/*!
+ \class QMessageLogger
+ \relates <QtGlobal>
+ \brief The QMessageLogger class generates log messages.
+ \since 5.0
+
+ QMessageLogger is used to generate messages for the Qt logging framework. Most of the time
+ is transparently used through the qDebug(), qWarning(), qCritical, or qFatal() functions,
+ which are actually macros that expand to QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO).debug()
+ et al.
+
+ One example of direct use is to forward errors that stem from a scripting language, e.g. QML:
+
+ \snippet doc/src/snippets/code/qlogging/qlogging.cpp 1
+
+ \sa QMessageLogContext, qDebug(), qWarning(), qCritical(), qFatal()
+*/
+
+QT_END_NAMESPACE
diff --git a/src/corelib/global/qlogging.h b/src/corelib/global/qlogging.h
new file mode 100644
index 0000000000..c6edc7bc48
--- /dev/null
+++ b/src/corelib/global/qlogging.h
@@ -0,0 +1,161 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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 <QtCore/qglobal.h>
+
+#ifndef QLOGGING_H
+#define QLOGGING_H
+
+#if 0
+// header is automatically included in qglobal.h
+#pragma qt_no_master_include
+#endif
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+/*
+ Forward declarations only.
+
+ In order to use the qDebug() stream, you must #include<QDebug>
+*/
+class QDebug;
+class QNoDebug;
+
+enum QtMsgType { QtDebugMsg, QtWarningMsg, QtCriticalMsg, QtFatalMsg, QtSystemMsg = QtCriticalMsg };
+
+class QMessageLogContext
+{
+ Q_DISABLE_COPY(QMessageLogContext)
+public:
+ QMessageLogContext() : version(1), line(0), file(0), function(0) {}
+ Q_DECL_CONSTEXPR QMessageLogContext(const char *file, int line, const char *function)
+ : version(1), line(line), file(file), function(function) {}
+
+ int version;
+ int line;
+ const char *file;
+ const char *function;
+
+private:
+ friend class QMessageLogger;
+ friend class QDebug;
+};
+
+class Q_CORE_EXPORT QMessageLogger
+{
+ Q_DISABLE_COPY(QMessageLogger)
+public:
+ QMessageLogger() : context() {}
+ Q_DECL_CONSTEXPR QMessageLogger(const char *file, int line, const char *function)
+ : context(file, line, function) {}
+
+ void debug(const char *msg, ...)
+#if defined(Q_CC_GNU) && !defined(__INSURE__)
+ __attribute__ ((format (printf, 2, 3)))
+#endif
+ ;
+ void noDebug(const char *, ...)
+#if defined(Q_CC_GNU) && !defined(__INSURE__)
+ __attribute__ ((format (printf, 2, 3)))
+#endif
+ {}
+ void warning(const char *msg, ...)
+#if defined(Q_CC_GNU) && !defined(__INSURE__)
+ __attribute__ ((format (printf, 2, 3)))
+#endif
+ ;
+ void critical(const char *msg, ...)
+#if defined(Q_CC_GNU) && !defined(__INSURE__)
+ __attribute__ ((format (printf, 2, 3)))
+#endif
+ ;
+ void fatal(const char *msg, ...)
+#if defined(Q_CC_GNU) && !defined(__INSURE__)
+ __attribute__ ((format (printf, 2, 3)))
+#endif
+ ;
+
+#ifndef QT_NO_DEBUG_STREAM
+ QDebug debug();
+ QDebug warning();
+ QDebug critical();
+
+ QNoDebug noDebug();
+#endif // QT_NO_DEBUG_STREAM
+
+private:
+ QMessageLogContext context;
+};
+
+Q_CORE_EXPORT void qt_message_output(QtMsgType, const QMessageLogContext &context, const char *buf);
+
+/*
+ qDebug, qWarning, qCritical, qFatal are redefined to automatically include context information
+ */
+#define qDebug QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO).debug
+#define qWarning QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO).warning
+#define qCritical QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO).critical
+#define qFatal QMessageLogger(__FILE__, __LINE__, Q_FUNC_INFO).fatal
+
+#define QT_NO_QDEBUG_MACRO while (false) QMessageLogger().noDebug
+#define QT_NO_QWARNING_MACRO while (false) QMessageLogger().noDebug
+
+#ifdef QT_NO_DEBUG_OUTPUT
+# undef qDebug
+# define qDebug QT_NO_QDEBUG_MACRO
+#endif
+#ifdef QT_NO_WARNING_OUTPUT
+# undef qWarning
+# define qWarning QT_NO_QWARNING_MACRO
+#endif
+
+// deprecated. Use qInstallMessageHandler instead!
+typedef void (*QtMsgHandler)(QtMsgType, const char *);
+Q_CORE_EXPORT QtMsgHandler qInstallMsgHandler(QtMsgHandler);
+
+typedef void (*QMessageHandler)(QtMsgType, const QMessageLogContext &, const char *);
+Q_CORE_EXPORT QMessageHandler qInstallMessageHandler(QMessageHandler);
+
+QT_END_HEADER
+QT_END_NAMESPACE
+
+#endif // QLOGGING_H
diff --git a/src/corelib/global/qmalloc.cpp b/src/corelib/global/qmalloc.cpp
index 2ec6938f98..a6d3b4f418 100644
--- a/src/corelib/global/qmalloc.cpp
+++ b/src/corelib/global/qmalloc.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h
index ee4000498f..efb4985645 100644
--- a/src/corelib/global/qnamespace.h
+++ b/src/corelib/global/qnamespace.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef Q_MOC_RUN
namespace
@@ -292,6 +291,7 @@ public:
WindowShadeButtonHint = 0x00020000,
WindowStaysOnTopHint = 0x00040000,
WindowTransparentForInput = 0x00080000,
+ WindowOverridesSystemGestures = 0x00100000,
CustomizeWindowHint = 0x02000000,
WindowStaysOnBottomHint = 0x04000000,
@@ -317,7 +317,7 @@ public:
Q_DECLARE_FLAGS(WindowStates, WindowState)
enum ScreenOrientation {
- UnknownOrientation = 0x00000000,
+ PrimaryOrientation = 0x00000000,
PortraitOrientation = 0x00000001,
LandscapeOrientation = 0x00000002,
InvertedPortraitOrientation = 0x00000004,
@@ -1416,11 +1416,7 @@ public:
};
Q_DECLARE_FLAGS(MatchFlags, MatchFlag)
-#if defined(Q_OS_SYMBIAN)
- typedef unsigned long int HANDLE; // equivalent to TUint32
-#else
typedef void * HANDLE;
-#endif
typedef WindowFlags WFlags;
enum WindowModality {
diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc
index 3add1a48c7..ae395a2dfa 100644
--- a/src/corelib/global/qnamespace.qdoc
+++ b/src/corelib/global/qnamespace.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -150,19 +150,6 @@
Command+C on the keyboard regardless of the value set, though what is output for
QKeySequence::toString(QKeySequence::PortableText) will be different).
- \value AA_S60DontConstructApplicationPanes Stops Qt from initializing the S60 status
- pane and softkey pane on Symbian. This is useful to save memory and reduce
- startup time for applications that will run in fullscreen mode during their
- whole lifetime. This attribute must be set before QApplication is
- constructed.
-
- \omitvalue AA_S60DisablePartialScreenInputMode By default in Symbian^3,
- a separate editing window is opened on top of an application. This is exactly
- like editing on previous versions of Symbian behave. When this attribute
- is true, a virtual keyboard window is shown on top of application and it
- is ensured that the focused text widget is visible. This is only supported in
- Symbian^3. (internal)
-
\value AA_X11InitThreads Calls XInitThreads() as part of the QApplication
construction in order to make Xlib calls thread-safe. This
attribute must be set before QApplication is constructed.
@@ -811,7 +798,7 @@
\value WA_InputMethodEnabled Enables input methods for Asian languages.
Must be set when creating custom text editing widgets.
- On Windows CE and Symbian this flag can be used in addition to
+ On Windows CE this flag can be used in addition to
QApplication::autoSipEnabled to automatically display the SIP when
entering a widget.
@@ -1834,7 +1821,7 @@
This enum type specifies the various orientations a screen might have.
- \value UnknownOrientation The orientation is unknown or the platform doesn't support orientations.
+ \value PrimaryOrientation The display's primary orientation.
\value LandscapeOrientation Landscape orientation, display width is greater than display height.
\value PortraitOrientation Portrait orientation, display height is greater than display width,
rotated 90 degree clockwise relative to landscape.
@@ -2075,6 +2062,10 @@
even the softkeys are invisible i.e. the window is displayed with
\c showFullscreen(). Only supported for Symbian.
+ \value WindowOverridesSystemGesturesHint Informs the window system that this window
+ implements its own set of gestures and that system level gestures, like for
+ instance three-finger desktop switching, should be disabled.
+
\value WindowType_Mask A mask for extracting the window type
part of the window flags.
diff --git a/src/corelib/global/qnumeric.cpp b/src/corelib/global/qnumeric.cpp
index 7677d86db0..1e77231f2f 100644
--- a/src/corelib/global/qnumeric.cpp
+++ b/src/corelib/global/qnumeric.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/global/qnumeric.h b/src/corelib/global/qnumeric.h
index 9f5ce691b1..c2be271062 100644
--- a/src/corelib/global/qnumeric.h
+++ b/src/corelib/global/qnumeric.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
Q_CORE_EXPORT bool qIsInf(double d);
Q_CORE_EXPORT bool qIsNaN(double d);
diff --git a/src/corelib/global/qnumeric_p.h b/src/corelib/global/qnumeric_p.h
index 94d64409b3..6b5ecf73e1 100644
--- a/src/corelib/global/qnumeric_p.h
+++ b/src/corelib/global/qnumeric_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/global/qt_pch.h b/src/corelib/global/qt_pch.h
index a16e6be567..3eaca2fb84 100644
--- a/src/corelib/global/qt_pch.h
+++ b/src/corelib/global/qt_pch.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/global/qt_windows.h b/src/corelib/global/qt_windows.h
index 3081645b6b..e4af46d939 100644
--- a/src/corelib/global/qt_windows.h
+++ b/src/corelib/global/qt_windows.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,6 +60,9 @@
#endif
#endif
+#ifndef NOMINMAX
+# define NOMINMAX
+#endif
#include <windows.h>
#ifdef _WIN32_WCE
diff --git a/src/corelib/io/io.pri b/src/corelib/io/io.pri
index 1d31e5d794..e8a41b2d76 100644
--- a/src/corelib/io/io.pri
+++ b/src/corelib/io/io.pri
@@ -87,7 +87,11 @@ win32 {
wince* {
SOURCES += io/qprocess_wince.cpp
} else {
- SOURCES += io/qprocess_win.cpp
+ HEADERS += \
+ io/qwinoverlappedionotifier_p.h
+ SOURCES += \
+ io/qprocess_win.cpp \
+ io/qwinoverlappedionotifier.cpp
}
} else:unix|integrity {
SOURCES += \
diff --git a/src/corelib/io/qabstractfileengine.cpp b/src/corelib/io/qabstractfileengine.cpp
index c315d33606..fb18809e48 100644
--- a/src/corelib/io/qabstractfileengine.cpp
+++ b/src/corelib/io/qabstractfileengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qabstractfileengine.h b/src/corelib/io/qabstractfileengine.h
index c9bab7d435..6ea5a2b94e 100644
--- a/src/corelib/io/qabstractfileengine.h
+++ b/src/corelib/io/qabstractfileengine.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QFileExtension;
class QFileExtensionResult;
diff --git a/src/corelib/io/qabstractfileengine_p.h b/src/corelib/io/qabstractfileengine_p.h
index 72b8339e39..08bb7fb097 100644
--- a/src/corelib/io/qabstractfileengine_p.h
+++ b/src/corelib/io/qabstractfileengine_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qbuffer.cpp b/src/corelib/io/qbuffer.cpp
index a5e605b9d5..dfc85a434d 100644
--- a/src/corelib/io/qbuffer.cpp
+++ b/src/corelib/io/qbuffer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qbuffer.h b/src/corelib/io/qbuffer.h
index b222c7d6ca..8b42363f24 100644
--- a/src/corelib/io/qbuffer.h
+++ b/src/corelib/io/qbuffer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QObject;
class QBufferPrivate;
diff --git a/src/corelib/io/qdatastream.cpp b/src/corelib/io/qdatastream.cpp
index fb2528e45f..7920d881b4 100644
--- a/src/corelib/io/qdatastream.cpp
+++ b/src/corelib/io/qdatastream.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -250,7 +250,7 @@ QT_BEGIN_NAMESPACE
return retVal;
enum {
- DefaultStreamVersion = QDataStream::Qt_4_6
+ DefaultStreamVersion = QDataStream::Qt_5_0
};
// ### 5.0: when streaming invalid QVariants, just the type should
diff --git a/src/corelib/io/qdatastream.h b/src/corelib/io/qdatastream.h
index 30cf8417ad..752246a543 100644
--- a/src/corelib/io/qdatastream.h
+++ b/src/corelib/io/qdatastream.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QByteArray;
class QIODevice;
@@ -88,7 +87,7 @@ public:
Qt_4_7 = Qt_4_6,
Qt_4_8 = Qt_4_7,
Qt_4_9 = Qt_4_8,
- Qt_5_0 = Qt_4_8
+ Qt_5_0 = 13
#if QT_VERSION >= 0x050100
#error Add the datastream version for this Qt version
#endif
diff --git a/src/corelib/io/qdatastream_p.h b/src/corelib/io/qdatastream_p.h
index 2501e98d1d..e4ac0e45c2 100644
--- a/src/corelib/io/qdatastream_p.h
+++ b/src/corelib/io/qdatastream_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qdataurl.cpp b/src/corelib/io/qdataurl.cpp
index 7e856ad647..8002f10889 100644
--- a/src/corelib/io/qdataurl.cpp
+++ b/src/corelib/io/qdataurl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qdataurl_p.h b/src/corelib/io/qdataurl_p.h
index b92f363e1d..66b3e74418 100644
--- a/src/corelib/io/qdataurl_p.h
+++ b/src/corelib/io/qdataurl_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qdebug.cpp b/src/corelib/io/qdebug.cpp
index 8ca15b19ca..6726537842 100644
--- a/src/corelib/io/qdebug.cpp
+++ b/src/corelib/io/qdebug.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -165,14 +165,6 @@
*/
/*!
- \fn QDebug &QDebug::operator<<(QBool t)
- \internal
-
- Writes the boolean value, \a t, to the stream and returns a reference to the
- stream.
-*/
-
-/*!
\fn QDebug &QDebug::operator<<(bool t)
Writes the boolean value, \a t, to the stream and returns a reference to the
diff --git a/src/corelib/io/qdebug.h b/src/corelib/io/qdebug.h
index 54663d5d65..48a382eea6 100644
--- a/src/corelib/io/qdebug.h
+++ b/src/corelib/io/qdebug.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -57,10 +57,10 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class Q_CORE_EXPORT QDebug
{
+ friend class QMessageLogger;
struct Stream {
Stream(QIODevice *device) : ts(device), ref(1), type(QtDebugMsg), space(true), message_output(false) {}
Stream(QString *string) : ts(string, QIODevice::WriteOnly), ref(1), type(QtDebugMsg), space(true), message_output(false) {}
@@ -71,6 +71,7 @@ class Q_CORE_EXPORT QDebug
QtMsgType type;
bool space;
bool message_output;
+ QMessageLogContext context;
} *stream;
public:
inline QDebug(QIODevice *device) : stream(new Stream(device)) {}
@@ -82,7 +83,9 @@ public:
if (!--stream->ref) {
if(stream->message_output) {
QT_TRY {
- qt_message_output(stream->type, stream->buffer.toLocal8Bit().data());
+ qt_message_output(stream->type,
+ stream->context,
+ stream->buffer.toLocal8Bit().data());
} QT_CATCH(std::bad_alloc&) { /* We're out of memory - give up. */ }
}
delete stream;
@@ -93,7 +96,6 @@ public:
inline QDebug &maybeSpace() { if (stream->space) stream->ts << ' '; return *this; }
inline QDebug &operator<<(QChar t) { stream->ts << '\'' << t << '\''; return maybeSpace(); }
- inline QDebug &operator<<(QBool t) { stream->ts << (bool(t != 0) ? "true" : "false"); return maybeSpace(); }
inline QDebug &operator<<(bool t) { stream->ts << (t ? "true" : "false"); return maybeSpace(); }
inline QDebug &operator<<(char t) { stream->ts << t; return maybeSpace(); }
inline QDebug &operator<<(signed short t) { stream->ts << t; return maybeSpace(); }
@@ -111,7 +113,7 @@ public:
inline QDebug &operator<<(const char* t) { stream->ts << QString::fromAscii(t); return maybeSpace(); }
inline QDebug &operator<<(const QString & t) { stream->ts << '\"' << t << '\"'; return maybeSpace(); }
inline QDebug &operator<<(const QStringRef & t) { return operator<<(t.toString()); }
- inline QDebug &operator<<(const QLatin1String &t) { stream->ts << '\"' << t.latin1() << '\"'; return maybeSpace(); }
+ inline QDebug &operator<<(const QLatin1String &t) { stream->ts << '\"' << t << '\"'; return maybeSpace(); }
inline QDebug &operator<<(const QByteArray & t) { stream->ts << '\"' << t << '\"'; return maybeSpace(); }
inline QDebug &operator<<(const void * t) { stream->ts << t; return maybeSpace(); }
inline QDebug &operator<<(QTextStreamFunction f) {
@@ -271,27 +273,6 @@ inline QDebug operator<<(QDebug debug, const QFlags<T> &flags)
return debug.space();
}
-#if !defined(QT_NO_DEBUG_OUTPUT) && !defined(QT_NO_DEBUG_STREAM)
-Q_CORE_EXPORT_INLINE QDebug qDebug() { return QDebug(QtDebugMsg); }
-#else
-#undef qDebug
-inline QNoDebug qDebug() { return QNoDebug(); }
-#define qDebug QT_NO_QDEBUG_MACRO
-#endif
-
-#if !defined(QT_NO_WARNING_OUTPUT) && !defined(QT_NO_DEBUG_STREAM)
-Q_CORE_EXPORT_INLINE QDebug qWarning() { return QDebug(QtWarningMsg); }
-#else
-#undef qWarning
-inline QNoDebug qWarning() { return QNoDebug(); }
-#define qWarning QT_NO_QWARNING_MACRO
-#endif
-
-#if !defined(QT_NO_DEBUG_STREAM)
-Q_CORE_EXPORT_INLINE QDebug qCritical() { return QDebug(QtCriticalMsg); }
-#endif
-
-
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/corelib/io/qdir.cpp b/src/corelib/io/qdir.cpp
index d6979bad57..afd6620e65 100644
--- a/src/corelib/io/qdir.cpp
+++ b/src/corelib/io/qdir.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -70,7 +70,7 @@ QT_BEGIN_NAMESPACE
static QString driveSpec(const QString &path)
{
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
if (path.size() < 2)
return QString();
char c = path.at(0).toAscii();
@@ -162,7 +162,7 @@ inline void QDirPrivate::setPath(const QString &path)
QString p = QDir::fromNativeSeparators(path);
if (p.endsWith(QLatin1Char('/'))
&& p.length() > 1
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
&& (!(p.length() == 3 && p.at(1).unicode() == ':' && p.at(0).isLetter()))
#endif
) {
@@ -736,8 +736,6 @@ QString QDir::relativeFilePath(const QString &fileName) const
if (fileDrive.toLower() != dirDrive.toLower()
|| (file.startsWith(QLatin1String("//"))
&& !dir.startsWith(QLatin1String("//"))))
-#elif defined(Q_OS_SYMBIAN)
- if (fileDrive.toLower() != dirDrive.toLower())
#else
if (fileDrive != dirDrive)
#endif
@@ -753,7 +751,7 @@ QString QDir::relativeFilePath(const QString &fileName) const
int i = 0;
while (i < dirElts.size() && i < fileElts.size() &&
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
dirElts.at(i).toLower() == fileElts.at(i).toLower())
#else
dirElts.at(i) == fileElts.at(i))
@@ -772,18 +770,6 @@ QString QDir::relativeFilePath(const QString &fileName) const
return result;
}
-#ifndef QT_NO_DEPRECATED
-/*!
- \obsolete
-
- Use QDir::toNativeSeparators() instead.
-*/
-QString QDir::convertSeparators(const QString &pathName)
-{
- return toNativeSeparators(pathName);
-}
-#endif
-
/*!
\since 4.2
@@ -801,7 +787,7 @@ QString QDir::convertSeparators(const QString &pathName)
*/
QString QDir::toNativeSeparators(const QString &pathName)
{
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
int i = pathName.indexOf(QLatin1Char('/'));
if (i != -1) {
QString n(pathName);
@@ -834,7 +820,7 @@ QString QDir::toNativeSeparators(const QString &pathName)
*/
QString QDir::fromNativeSeparators(const QString &pathName)
{
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
int i = pathName.indexOf(QLatin1Char('\\'));
if (i != -1) {
QString n(pathName);
@@ -1375,7 +1361,6 @@ QFileInfoList QDir::entryInfoList(const QStringList &nameFilters, Filters filter
\sa rmdir()
*/
-// ### Qt5: behaviour when directory already exists should be made consistent for mkdir and mkpath
bool QDir::mkdir(const QString &dirName) const
{
const QDirPrivate* d = d_ptr.constData();
@@ -1428,7 +1413,6 @@ bool QDir::rmdir(const QString &dirName) const
\sa rmpath()
*/
-// ### Qt5: behaviour when directory already exists should be made consistent for mkdir and mkpath
bool QDir::mkpath(const QString &dirPath) const
{
const QDirPrivate* d = d_ptr.constData();
@@ -1816,7 +1800,7 @@ QFileInfoList QDir::drives()
*/
QChar QDir::separator()
{
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
return QLatin1Char('\\');
#else
return QLatin1Char('/');
@@ -1896,7 +1880,7 @@ QString QDir::currentPath()
Under non-Windows operating systems the \c HOME environment
variable is used if it exists, otherwise the path returned by the
- rootPath(). On Symbian always the same as the path returned by the rootPath().
+ rootPath().
\sa home(), currentPath(), rootPath(), tempPath()
*/
@@ -1951,8 +1935,7 @@ QString QDir::tempPath()
Returns the absolute path of the root directory.
For Unix operating systems this returns "/". For Windows file
- systems this normally returns "c:/". On Symbian this typically returns
- "c:/data", i.e. the same as native PathInfo::PhoneMemoryRootPath().
+ systems this normally returns "c:/".
\sa root(), drives(), currentPath(), homePath(), tempPath()
*/
@@ -2084,7 +2067,7 @@ QString QDir::cleanPath(const QString &path)
levels++;
}
} else if (last != -1 && iwrite - last == 1) {
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
eaten = (iwrite > 2);
#else
eaten = true;
@@ -2119,7 +2102,7 @@ QString QDir::cleanPath(const QString &path)
QString ret = (used == len ? name : QString(out, used));
// Strip away last slash except for root directories
if (ret.length() > 1 && ret.endsWith(QLatin1Char('/'))) {
-#if defined (Q_OS_WIN) || defined (Q_OS_SYMBIAN)
+#if defined (Q_OS_WIN)
if (!(ret.length() == 3 && ret.at(1) == QLatin1Char(':')))
#endif
ret.chop(1);
@@ -2234,7 +2217,6 @@ QDebug operator<<(QDebug debug, QDir::Filters filters)
if (filters & QDir::Files) flags << QLatin1String("Files");
if (filters & QDir::Drives) flags << QLatin1String("Drives");
if (filters & QDir::NoSymLinks) flags << QLatin1String("NoSymLinks");
- if (filters & QDir::NoDotAndDotDot) flags << QLatin1String("NoDotAndDotDot"); // ### Qt5: remove (because NoDotAndDotDot=NoDot|NoDotDot)
if (filters & QDir::NoDot) flags << QLatin1String("NoDot");
if (filters & QDir::NoDotDot) flags << QLatin1String("NoDotDot");
if ((filters & QDir::AllEntries) == QDir::AllEntries) flags << QLatin1String("AllEntries");
diff --git a/src/corelib/io/qdir.h b/src/corelib/io/qdir.h
index 5b058272e7..5551ecd2fb 100644
--- a/src/corelib/io/qdir.h
+++ b/src/corelib/io/qdir.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QDirPrivate;
@@ -78,9 +77,9 @@ public:
AllDirs = 0x400,
CaseSensitive = 0x800,
- NoDotAndDotDot = 0x1000, // ### Qt5 NoDotAndDotDot = NoDot|NoDotDot
NoDot = 0x2000,
NoDotDot = 0x4000,
+ NoDotAndDotDot = NoDot | NoDotDot,
NoFilter = -1
};
@@ -131,9 +130,6 @@ public:
QString absoluteFilePath(const QString &fileName) const;
QString relativeFilePath(const QString &fileName) const;
-#ifdef QT_DEPRECATED
- QT_DEPRECATED static QString convertSeparators(const QString &pathName);
-#endif
static QString toNativeSeparators(const QString &pathName);
static QString fromNativeSeparators(const QString &pathName);
diff --git a/src/corelib/io/qdir_p.h b/src/corelib/io/qdir_p.h
index 7865c1d5a3..9fe93cefa0 100644
--- a/src/corelib/io/qdir_p.h
+++ b/src/corelib/io/qdir_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qdiriterator.cpp b/src/corelib/io/qdiriterator.cpp
index 28aa4a0f59..c5f24071aa 100644
--- a/src/corelib/io/qdiriterator.cpp
+++ b/src/corelib/io/qdiriterator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -330,8 +330,6 @@ bool QDirIteratorPrivate::matchesFilters(const QString &fileName, const QFileInf
return false;
if ((filters & QDir::NoDotDot) && dotOrDotDot && fileNameSize == 2)
return false;
- if ((filters & QDir::NoDotAndDotDot) && dotOrDotDot) // ### Qt5 remove (NoDotAndDotDot == NoDot|NoDotDot)
- return false;
// name filter
#ifndef QT_NO_REGEXP
diff --git a/src/corelib/io/qdiriterator.h b/src/corelib/io/qdiriterator.h
index be03415372..27189e2efd 100644
--- a/src/corelib/io/qdiriterator.h
+++ b/src/corelib/io/qdiriterator.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QDirIteratorPrivate;
class Q_CORE_EXPORT QDirIterator {
diff --git a/src/corelib/io/qfile.cpp b/src/corelib/io/qfile.cpp
index 95d842da42..d7308c710d 100644
--- a/src/corelib/io/qfile.cpp
+++ b/src/corelib/io/qfile.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -66,8 +66,6 @@ static QByteArray locale_encode(const QString &f)
#if defined(Q_OS_DARWIN)
// Mac always expects UTF-8... and decomposed...
return f.normalized(QString::NormalizationForm_D).toUtf8();
-#elif defined(Q_OS_SYMBIAN)
- return f.toUtf8();
#else
return f.toLocal8Bit();
#endif
@@ -78,8 +76,6 @@ static QString locale_decode(const QByteArray &f)
#if defined(Q_OS_DARWIN)
// Mac always gives us UTF-8 and decomposed, we want that composed...
return QString::fromUtf8(f).normalized(QString::NormalizationForm_C);
-#elif defined(Q_OS_SYMBIAN)
- return QString::fromUtf8(f);
#else
return QString::fromLocal8Bit(f);
#endif
@@ -134,23 +130,6 @@ QFilePrivate::openExternalFile(int flags, FILE *fh, QFile::FileHandleFlags handl
#endif
}
-#ifdef Q_OS_SYMBIAN
-bool QFilePrivate::openExternalFile(int flags, const RFile &f, QFile::FileHandleFlags handleFlags)
-{
-#ifdef QT_NO_FSFILEENGINE
- Q_UNUSED(flags);
- Q_UNUSED(fh);
- return false;
-#else
- delete fileEngine;
- fileEngine = 0;
- QFSFileEngine *fe = new QFSFileEngine;
- fileEngine = fe;
- return fe->open(QIODevice::OpenMode(flags), f, handleFlags);
-#endif
-}
-#endif
-
inline bool QFilePrivate::ensureFlushed() const
{
// This function ensures that the write buffer has been flushed (const
@@ -815,9 +794,6 @@ QFile::rename(const QString &oldName, const QString &newName)
\note To create a valid link on Windows, \a linkName must have a \c{.lnk} file extension.
- \note On Symbian, no link is created and false is returned if fileName()
- currently specifies a directory.
-
\sa setFileName()
*/
@@ -1019,14 +995,8 @@ bool QFile::open(OpenMode mode)
return false;
}
-#ifdef Q_OS_SYMBIAN
- // For symbian, the unbuffered flag is used to control write-behind cache behaviour
- if (fileEngine()->open(mode))
-#else
// QIODevice provides the buffering, so there's no need to request it from the file engine.
- if (fileEngine()->open(mode | QIODevice::Unbuffered))
-#endif
- {
+ if (fileEngine()->open(mode | QIODevice::Unbuffered)) {
QIODevice::open(mode);
if (mode & Append)
seek(size());
@@ -1247,63 +1217,6 @@ bool QFile::open(int fd, OpenMode mode, FileHandleFlags handleFlags)
return false;
}
-#ifdef Q_OS_SYMBIAN
-/*!
- \overload
-
- Opens the existing file object \a f in the given \a mode.
- Returns true if successful; otherwise returns false.
-
- When a QFile is opened using this function, behaviour of close() is
- controlled by the AutoCloseHandle flag.
- If AutoCloseHandle is specified, and this function succeeds,
- then calling close() closes the adopted handle.
- Otherwise, close() does not actually close the file, but only flushes it.
-
- \warning If the file handle is adopted from another process,
- you may not be able to use this QFile with a QFileInfo.
-
- \sa close()
-*/
-bool QFile::open(const RFile &f, OpenMode mode, FileHandleFlags handleFlags)
-{
- Q_D(QFile);
- if (isOpen()) {
- qWarning("QFile::open: File (%s) already open", qPrintable(fileName()));
- return false;
- }
- if (mode & Append)
- mode |= WriteOnly;
- unsetError();
- if ((mode & (ReadOnly | WriteOnly)) == 0) {
- qWarning("QFile::open: File access not specified");
- return false;
- }
- if (d->openExternalFile(mode, f, handleFlags)) {
- bool ok = QIODevice::open(mode);
- if (ok) {
- if (mode & Append) {
- ok = seek(size());
- } else {
- qint64 pos = 0;
- TInt err;
-#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
- err = static_cast<const RFile64&>(f).Seek(ESeekCurrent, pos);
-#else
- TInt pos32 = 0;
- err = f.Seek(ESeekCurrent, pos32);
- pos = pos32;
-#endif
- ok = ok && (err == KErrNone);
- ok = ok && seek(pos);
- }
- }
- return ok;
- }
- return false;
-}
-#endif
-
/*!
Returns the file handle of the file.
diff --git a/src/corelib/io/qfile.h b/src/corelib/io/qfile.h
index 903ba13963..bc278cf600 100644
--- a/src/corelib/io/qfile.h
+++ b/src/corelib/io/qfile.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -45,9 +45,6 @@
#include <QtCore/qiodevice.h>
#include <QtCore/qstring.h>
#include <stdio.h>
-#ifdef Q_OS_SYMBIAN
-#include <f32file.h>
-#endif
#ifdef open
#error qfile.h must be included before any header file that defines open
@@ -57,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QAbstractFileEngine;
class QFilePrivate;
@@ -151,9 +147,6 @@ public:
bool open(OpenMode flags);
bool open(FILE *f, OpenMode flags);
bool open(int fd, OpenMode flags);
-#ifdef Q_OS_SYMBIAN
- bool open(const RFile &f, OpenMode flags, FileHandleFlags handleFlags = DontCloseHandle);
-#endif
bool open(FILE *f, OpenMode ioFlags, FileHandleFlags handleFlags);
bool open(int fd, OpenMode ioFlags, FileHandleFlags handleFlags);
virtual void close();
diff --git a/src/corelib/io/qfile_p.h b/src/corelib/io/qfile_p.h
index 24013c3c3d..b932627ec0 100644
--- a/src/corelib/io/qfile_p.h
+++ b/src/corelib/io/qfile_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -69,9 +69,6 @@ protected:
bool openExternalFile(int flags, int fd, QFile::FileHandleFlags handleFlags);
bool openExternalFile(int flags, FILE *fh, QFile::FileHandleFlags handleFlags);
-#ifdef Q_OS_SYMBIAN
- bool openExternalFile(int flags, const RFile& f, QFile::FileHandleFlags handleFlags);
-#endif
QString fileName;
mutable QAbstractFileEngine *fileEngine;
diff --git a/src/corelib/io/qfileinfo.cpp b/src/corelib/io/qfileinfo.cpp
index 226b5d3560..7277a7a0e4 100644
--- a/src/corelib/io/qfileinfo.cpp
+++ b/src/corelib/io/qfileinfo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1019,7 +1019,7 @@ bool QFileInfo::isRoot() const
return true;
if (d->fileEngine == 0) {
if (d->fileEntry.isRoot()) {
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
//the path is a drive root, but the drive may not exist
//for backward compatibility, return true only if the drive exists
if (!d->cache_enabled || !d->metaData.hasFlags(QFileSystemMetaData::ExistsAttribute))
diff --git a/src/corelib/io/qfileinfo.h b/src/corelib/io/qfileinfo.h
index 6d6da3527a..bc9b057fb5 100644
--- a/src/corelib/io/qfileinfo.h
+++ b/src/corelib/io/qfileinfo.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QDir;
class QDirIteratorPrivate;
diff --git a/src/corelib/io/qfileinfo_p.h b/src/corelib/io/qfileinfo_p.h
index 64e644f29f..aa1d88665c 100644
--- a/src/corelib/io/qfileinfo_p.h
+++ b/src/corelib/io/qfileinfo_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -108,10 +108,15 @@ public:
: QSharedData(),
fileEntry(file),
metaData(data),
+ fileEngine(QFileSystemEngine::resolveEntryAndCreateLegacyEngine(fileEntry, metaData)),
cachedFlags(0),
isDefaultConstructed(false),
cache_enabled(true), fileFlags(0), fileSize(0)
{
+ //If the file engine is not null, this maybe a "mount point" for a custom file engine
+ //in which case we can't trust the metadata
+ if (fileEngine)
+ metaData = QFileSystemMetaData();
}
inline void clearFlags() const {
diff --git a/src/corelib/io/qfilesystemengine.cpp b/src/corelib/io/qfilesystemengine.cpp
index ab10f30585..21436c1cfc 100644
--- a/src/corelib/io/qfilesystemengine.cpp
+++ b/src/corelib/io/qfilesystemengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -84,15 +84,7 @@ QString QFileSystemEngine::slowCanonicalized(const QString &path)
#endif
separatorPos = tmpPath.indexOf(slash, separatorPos + 1);
QString prefix = separatorPos == -1 ? tmpPath : tmpPath.left(separatorPos);
- if (
-#ifdef Q_OS_SYMBIAN
- // Symbian doesn't support directory symlinks, so do not check for link unless we
- // are handling the last path element. This not only slightly improves performance,
- // but also saves us from lot of unnecessary platform security check failures
- // when dealing with files under *:/private directories.
- separatorPos == -1 &&
-#endif
- !nonSymlinks.contains(prefix)) {
+ if (!nonSymlinks.contains(prefix)) {
fi.setFile(prefix);
if (fi.isSymLink()) {
QString target = fi.symLinkTarget();
@@ -276,20 +268,16 @@ void QFileSystemMetaData::fillFromStatBuf(const QT_STATBUF &statBuffer)
#endif
// Times
-#ifdef Q_OS_SYMBIAN
- modificationTime_ = qt_symbian_time_t_To_TTime(statBuffer.st_mtime);
-#else
creationTime_ = statBuffer.st_ctime ? statBuffer.st_ctime : statBuffer.st_mtime;
modificationTime_ = statBuffer.st_mtime;
accessTime_ = statBuffer.st_atime;
userId_ = statBuffer.st_uid;
groupId_ = statBuffer.st_gid;
-#endif
}
void QFileSystemMetaData::fillFromDirEnt(const QT_DIRENT &entry)
{
-#if defined(_DIRENT_HAVE_D_TYPE) || defined(Q_OS_BSD4) || defined(Q_OS_SYMBIAN)
+#if defined(_DIRENT_HAVE_D_TYPE) || defined(Q_OS_BSD4)
// BSD4 includes Mac OS X
// ### This will clear all entry flags and knownFlagsMask
@@ -357,11 +345,7 @@ void QFileSystemMetaData::fillFromDirEnt(const QT_DIRENT &entry)
//static
QString QFileSystemEngine::resolveUserName(const QFileSystemEntry &entry, QFileSystemMetaData &metaData)
{
-#if defined (Q_OS_SYMBIAN)
- Q_UNUSED(entry);
- Q_UNUSED(metaData);
- return QString();
-#elif defined(Q_OS_WIN)
+#if defined(Q_OS_WIN)
Q_UNUSED(metaData);
return QFileSystemEngine::owner(entry, QAbstractFileEngine::OwnerUser);
#else //(Q_OS_UNIX)
@@ -374,11 +358,7 @@ QString QFileSystemEngine::resolveUserName(const QFileSystemEntry &entry, QFileS
//static
QString QFileSystemEngine::resolveGroupName(const QFileSystemEntry &entry, QFileSystemMetaData &metaData)
{
-#if defined (Q_OS_SYMBIAN)
- Q_UNUSED(entry);
- Q_UNUSED(metaData);
- return QString();
-#elif defined(Q_OS_WIN)
+#if defined(Q_OS_WIN)
Q_UNUSED(metaData);
return QFileSystemEngine::owner(entry, QAbstractFileEngine::OwnerGroup);
#else //(Q_OS_UNIX)
diff --git a/src/corelib/io/qfilesystemengine_mac.cpp b/src/corelib/io/qfilesystemengine_mac.cpp
index f5e61ff29f..8bbb1a2e22 100644
--- a/src/corelib/io/qfilesystemengine_mac.cpp
+++ b/src/corelib/io/qfilesystemengine_mac.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qfilesystemengine_p.h b/src/corelib/io/qfilesystemengine_p.h
index af32a1c575..6d60d77c33 100644
--- a/src/corelib/io/qfilesystemengine_p.h
+++ b/src/corelib/io/qfilesystemengine_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -71,7 +71,7 @@ public:
static QString resolveUserName(const QFileSystemEntry &entry, QFileSystemMetaData &data);
static QString resolveGroupName(const QFileSystemEntry &entry, QFileSystemMetaData &data);
-#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_UNIX)
static QString resolveUserName(uint userId);
static QString resolveGroupName(uint groupId);
#endif
diff --git a/src/corelib/io/qfilesystemengine_unix.cpp b/src/corelib/io/qfilesystemengine_unix.cpp
index 901aaf8f91..52621eb23f 100644
--- a/src/corelib/io/qfilesystemengine_unix.cpp
+++ b/src/corelib/io/qfilesystemengine_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qfilesystemengine_win.cpp b/src/corelib/io/qfilesystemengine_win.cpp
index d724429f6b..6ebaadad7e 100644
--- a/src/corelib/io/qfilesystemengine_win.cpp
+++ b/src/corelib/io/qfilesystemengine_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -158,6 +158,12 @@ typedef VOID (WINAPI *PtrBuildTrusteeWithSidW)(PTRUSTEE_W, PSID);
static PtrBuildTrusteeWithSidW ptrBuildTrusteeWithSidW = 0;
typedef DWORD (WINAPI *PtrGetEffectiveRightsFromAclW)(PACL, PTRUSTEE_W, OUT PACCESS_MASK);
static PtrGetEffectiveRightsFromAclW ptrGetEffectiveRightsFromAclW = 0;
+typedef BOOL (WINAPI *PtrGetUserProfileDirectoryW)(HANDLE, LPWSTR, LPDWORD);
+static PtrGetUserProfileDirectoryW ptrGetUserProfileDirectoryW = 0;
+typedef BOOL (WINAPI *PtrGetVolumePathNamesForVolumeNameW)(LPCWSTR,LPWSTR,DWORD,PDWORD);
+static PtrGetVolumePathNamesForVolumeNameW ptrGetVolumePathNamesForVolumeNameW = 0;
+QT_END_INCLUDE_NAMESPACE
+
static TRUSTEE_W currentUserTrusteeW;
static TRUSTEE_W worldTrusteeW;
static PSID currentUserSID = 0;
@@ -174,7 +180,7 @@ public:
SidCleanup::~SidCleanup()
{
- qFree(currentUserSID);
+ free(currentUserSID);
currentUserSID = 0;
// worldSID was allocated with AllocateAndInitializeSid so it needs to be freed with FreeSid
@@ -186,13 +192,6 @@ SidCleanup::~SidCleanup()
Q_GLOBAL_STATIC(SidCleanup, initSidCleanup)
-typedef BOOL (WINAPI *PtrGetUserProfileDirectoryW)(HANDLE, LPWSTR, LPDWORD);
-static PtrGetUserProfileDirectoryW ptrGetUserProfileDirectoryW = 0;
-typedef BOOL (WINAPI *PtrGetVolumePathNamesForVolumeNameW)(LPCWSTR,LPWSTR,DWORD,PDWORD);
-static PtrGetVolumePathNamesForVolumeNameW ptrGetVolumePathNamesForVolumeNameW = 0;
-QT_END_INCLUDE_NAMESPACE
-
-
static void resolveLibs()
{
static bool triedResolve = false;
@@ -233,15 +232,15 @@ static void resolveLibs()
// doing a dummy GetTokenInformation call.
::GetTokenInformation(token, TokenUser, 0, 0, &retsize);
if (retsize) {
- void *tokenBuffer = qMalloc(retsize);
+ void *tokenBuffer = malloc(retsize);
if (::GetTokenInformation(token, TokenUser, tokenBuffer, retsize, &retsize)) {
PSID tokenSid = reinterpret_cast<PTOKEN_USER>(tokenBuffer)->User.Sid;
DWORD sidLen = ::GetLengthSid(tokenSid);
- currentUserSID = reinterpret_cast<PSID>(qMalloc(sidLen));
+ currentUserSID = reinterpret_cast<PSID>(malloc(sidLen));
if (::CopySid(sidLen, currentUserSID, tokenSid))
ptrBuildTrusteeWithSidW(&currentUserTrusteeW, currentUserSID);
}
- qFree(tokenBuffer);
+ free(tokenBuffer);
}
::CloseHandle(token);
}
@@ -357,7 +356,7 @@ static QString readSymLink(const QFileSystemEntry &link)
static QString readLink(const QFileSystemEntry &link)
{
#if !defined(Q_OS_WINCE)
-#if !defined(QT_NO_LIBRARY) && !defined(Q_CC_MWERKS)
+#if !defined(QT_NO_LIBRARY)
QString ret;
bool neededCoInit = false;
diff --git a/src/corelib/io/qfilesystementry.cpp b/src/corelib/io/qfilesystementry.cpp
index 11b73dd745..46881a1e5c 100644
--- a/src/corelib/io/qfilesystementry.cpp
+++ b/src/corelib/io/qfilesystementry.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -176,7 +176,7 @@ void QFileSystemEntry::resolveNativeFilePath() const
QString QFileSystemEntry::fileName() const
{
findLastSeparator();
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
if (m_lastSeparator == -1 && m_filePath.length() >= 2 && m_filePath.at(1) == QLatin1Char(':'))
return m_filePath.mid(2);
#endif
@@ -187,7 +187,7 @@ QString QFileSystemEntry::path() const
{
findLastSeparator();
if (m_lastSeparator == -1) {
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
if (m_filePath.length() >= 2 && m_filePath.at(1) == QLatin1Char(':'))
return m_filePath.left(2);
#endif
@@ -195,7 +195,7 @@ QString QFileSystemEntry::path() const
}
if (m_lastSeparator == 0)
return QString(QLatin1Char('/'));
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
if (m_lastSeparator == 2 && m_filePath.at(1) == QLatin1Char(':'))
return m_filePath.left(m_lastSeparator + 1);
#endif
@@ -205,7 +205,7 @@ QString QFileSystemEntry::path() const
QString QFileSystemEntry::baseName() const
{
findFileNameSeparators();
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
if (m_lastSeparator == -1 && m_filePath.length() >= 2 && m_filePath.at(1) == QLatin1Char(':'))
return m_filePath.mid(2);
#endif
@@ -221,7 +221,7 @@ QString QFileSystemEntry::baseName() const
QString QFileSystemEntry::completeBaseName() const
{
findFileNameSeparators();
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
if (m_lastSeparator == -1 && m_filePath.length() >= 2 && m_filePath.at(1) == QLatin1Char(':'))
return m_filePath.mid(2);
#endif
@@ -253,7 +253,7 @@ QString QFileSystemEntry::completeSuffix() const
return m_filePath.mid(qMax((qint16)0, m_lastSeparator) + m_firstDotInFileName + 1);
}
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
bool QFileSystemEntry::isRelative() const
{
resolveFilePath();
@@ -266,9 +266,7 @@ bool QFileSystemEntry::isAbsolute() const
resolveFilePath();
return (!m_filePath.isEmpty() && ((m_filePath.length() >= 3
&& (m_filePath[0].isLetter() && m_filePath[1].unicode() == ':' && m_filePath[2].unicode() == '/'))
-#ifdef Q_OS_WIN
|| (m_filePath.length() >= 2 && (m_filePath.at(0) == QLatin1Char('/') && m_filePath.at(1) == QLatin1Char('/')))
-#endif
));
}
#else
@@ -284,7 +282,7 @@ bool QFileSystemEntry::isAbsolute() const
}
#endif
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
bool QFileSystemEntry::isDriveRoot() const
{
resolveFilePath();
@@ -298,12 +296,10 @@ bool QFileSystemEntry::isRoot() const
{
resolveFilePath();
if (m_filePath == QLatin1String("/")
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
- || isDriveRoot()
#if defined(Q_OS_WIN)
+ || isDriveRoot()
|| isUncRoot(m_filePath)
#endif
-#endif
)
return true;
diff --git a/src/corelib/io/qfilesystementry_p.h b/src/corelib/io/qfilesystementry_p.h
index 61902f77d0..4b99d65c19 100644
--- a/src/corelib/io/qfilesystementry_p.h
+++ b/src/corelib/io/qfilesystementry_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,7 +56,7 @@
#include <QtCore/qstring.h>
#include <QtCore/qbytearray.h>
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
#define QFILESYSTEMENTRY_NATIVE_PATH_IS_UTF16
#endif
@@ -93,7 +93,7 @@ public:
bool isRelative() const;
bool isClean() const;
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
bool isDriveRoot() const;
#endif
bool isRoot() const;
diff --git a/src/corelib/io/qfilesystemiterator_p.h b/src/corelib/io/qfilesystemiterator_p.h
index 7df5988459..5c249d6dba 100644
--- a/src/corelib/io/qfilesystemiterator_p.h
+++ b/src/corelib/io/qfilesystemiterator_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -65,10 +65,7 @@
#include <QtCore/private/qfilesystemmetadata_p.h>
// Platform-specific headers
-#if defined(Q_OS_WIN)
-#elif defined (Q_OS_SYMBIAN)
-#include <f32file.h>
-#else
+#if !defined(Q_OS_WIN)
#include <QtCore/qscopedpointer.h>
#endif
@@ -95,11 +92,6 @@ private:
bool uncFallback;
int uncShareIndex;
bool onlyDirs;
-#elif defined (Q_OS_SYMBIAN)
- RDir dirHandle;
- TEntryArray entries;
- TInt lastError;
- TInt entryIndex;
#else
QT_DIR *dir;
QT_DIRENT *dirEntry;
diff --git a/src/corelib/io/qfilesystemiterator_unix.cpp b/src/corelib/io/qfilesystemiterator_unix.cpp
index d0eb04a145..5b7c82770b 100644
--- a/src/corelib/io/qfilesystemiterator_unix.cpp
+++ b/src/corelib/io/qfilesystemiterator_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qfilesystemiterator_win.cpp b/src/corelib/io/qfilesystemiterator_win.cpp
index 1f5cf356a0..61dc633a65 100644
--- a/src/corelib/io/qfilesystemiterator_win.cpp
+++ b/src/corelib/io/qfilesystemiterator_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -94,10 +94,12 @@ bool QFileSystemIterator::advance(QFileSystemEntry &fileEntry, QFileSystemMetaDa
haveData = true;
int infoLevel = 0 ; // FindExInfoStandard;
DWORD dwAdditionalFlags = 0;
+#ifndef Q_OS_WINCE
if (QSysInfo::windowsVersion() >= QSysInfo::WV_WINDOWS7) {
dwAdditionalFlags = 2; // FIND_FIRST_EX_LARGE_FETCH
infoLevel = 1 ; // FindExInfoBasic;
}
+#endif
int searchOps = 0; // FindExSearchNameMatch
if (onlyDirs)
searchOps = 1 ; // FindExSearchLimitToDirectories
diff --git a/src/corelib/io/qfilesystemmetadata_p.h b/src/corelib/io/qfilesystemmetadata_p.h
index 6ed5cec954..792ee0e714 100644
--- a/src/corelib/io/qfilesystemmetadata_p.h
+++ b/src/corelib/io/qfilesystemmetadata_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,13 +59,11 @@
#include <QtCore/qabstractfileengine.h>
// Platform-specific includes
-#if defined(Q_OS_WIN)
-#ifndef IO_REPARSE_TAG_SYMLINK
-#define IO_REPARSE_TAG_SYMLINK (0xA000000CL)
-#endif
-#elif defined(Q_OS_SYMBIAN)
-#include <f32file.h>
-#include <QtCore/private/qdatetime_p.h>
+#ifdef Q_OS_WIN
+# include <QtCore/qt_windows.h>
+# ifndef IO_REPARSE_TAG_SYMLINK
+# define IO_REPARSE_TAG_SYMLINK (0xA000000CL)
+# endif
#endif
QT_BEGIN_NAMESPACE
@@ -99,11 +97,7 @@ public:
Permissions = OtherPermissions | GroupPermissions | UserPermissions | OwnerPermissions,
// Type
-#ifdef Q_OS_SYMBIAN
- LinkType = 0,
-#else
LinkType = 0x00010000,
-#endif
FileType = 0x00020000,
DirectoryType = 0x00040000,
#if defined(Q_OS_MAC) && !defined(QT_NO_CORESERVICES)
@@ -154,12 +148,6 @@ public:
| QFileSystemMetaData::Times
| QFileSystemMetaData::OwnerIds,
- SymbianTEntryFlags = QFileSystemMetaData::Permissions
- | QFileSystemMetaData::FileType
- | QFileSystemMetaData::DirectoryType
- | QFileSystemMetaData::SequentialType
- | QFileSystemMetaData::Attributes
- | QFileSystemMetaData::Times,
#if defined(Q_OS_WIN)
WinStatFlags = QFileSystemMetaData::FileType
| QFileSystemMetaData::DirectoryType
@@ -227,10 +215,6 @@ public:
void fillFromStatBuf(const QT_STATBUF &statBuffer);
void fillFromDirEnt(const QT_DIRENT &statBuffer);
#endif
-#ifdef Q_OS_SYMBIAN
- void fillFromTEntry(const TEntry& entry);
- void fillFromVolumeInfo(const TVolumeInfo& info);
-#endif
#if defined(Q_OS_WIN)
inline void fillFromFileAttribute(DWORD fileAttribute, bool isDriveRoot = false);
@@ -251,8 +235,6 @@ private:
FILETIME creationTime_;
FILETIME lastAccessTime_;
FILETIME lastWriteTime_;
-#elif defined(Q_OS_SYMBIAN)
- TTime modificationTime_;
#else
time_t creationTime_;
time_t modificationTime_;
@@ -274,7 +256,7 @@ inline bool QFileSystemMetaData::isBundle() const { return fal
inline bool QFileSystemMetaData::isAlias() const { return false; }
#endif
-#if (defined(Q_OS_UNIX) && !defined (Q_OS_SYMBIAN)) || defined (Q_OS_WIN)
+#if defined(Q_OS_UNIX) || defined (Q_OS_WIN)
inline QDateTime QFileSystemMetaData::fileTime(QAbstractFileEngine::FileTime time) const
{
switch (time) {
@@ -292,7 +274,7 @@ inline QDateTime QFileSystemMetaData::fileTime(QAbstractFileEngine::FileTime tim
}
#endif
-#if defined(Q_OS_UNIX) && !defined (Q_OS_SYMBIAN)
+#if defined(Q_OS_UNIX)
inline QDateTime QFileSystemMetaData::creationTime() const { return QDateTime::fromTime_t(creationTime_); }
inline QDateTime QFileSystemMetaData::modificationTime() const { return QDateTime::fromTime_t(modificationTime_); }
inline QDateTime QFileSystemMetaData::accessTime() const { return QDateTime::fromTime_t(accessTime_); }
@@ -309,25 +291,6 @@ inline uint QFileSystemMetaData::ownerId(QAbstractFileEngine::FileOwner owner) c
}
#endif
-#ifdef Q_OS_SYMBIAN
-inline QDateTime QFileSystemMetaData::creationTime() const { return modificationTime(); }
-inline QDateTime QFileSystemMetaData::modificationTime() const { return qt_symbian_TTime_To_QDateTime(modificationTime_); }
-inline QDateTime QFileSystemMetaData::accessTime() const { return modificationTime(); }
-
-inline QDateTime QFileSystemMetaData::fileTime(QAbstractFileEngine::FileTime time) const
-{
- Q_UNUSED(time);
- return modificationTime();
-}
-inline uint QFileSystemMetaData::userId() const { return (uint) -2; }
-inline uint QFileSystemMetaData::groupId() const { return (uint) -2; }
-inline uint QFileSystemMetaData::ownerId(QAbstractFileEngine::FileOwner owner) const
-{
- Q_UNUSED(owner);
- return (uint) -2;
-}
-#endif
-
#if defined(Q_OS_WIN)
inline uint QFileSystemMetaData::userId() const { return (uint) -2; }
inline uint QFileSystemMetaData::groupId() const { return (uint) -2; }
diff --git a/src/corelib/io/qfilesystemwatcher.cpp b/src/corelib/io/qfilesystemwatcher.cpp
index 4abb4f3cc1..57777179b5 100644
--- a/src/corelib/io/qfilesystemwatcher.cpp
+++ b/src/corelib/io/qfilesystemwatcher.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qfilesystemwatcher.h b/src/corelib/io/qfilesystemwatcher.h
index 7b7dbe98c5..7e38eb650a 100644
--- a/src/corelib/io/qfilesystemwatcher.h
+++ b/src/corelib/io/qfilesystemwatcher.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QFileSystemWatcherPrivate;
diff --git a/src/corelib/io/qfilesystemwatcher_inotify.cpp b/src/corelib/io/qfilesystemwatcher_inotify.cpp
index ff732bc70e..ed95435afd 100644
--- a/src/corelib/io/qfilesystemwatcher_inotify.cpp
+++ b/src/corelib/io/qfilesystemwatcher_inotify.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -131,7 +131,7 @@
# define __NR_inotify_rm_watch 286
# define __NR_inotify_init1 328
#else
-# error "This architecture is not supported. Please talk to qt-info@nokia.com"
+# error "This architecture is not supported. Please see http://www.qt-project.org/"
#endif
#if !defined(IN_CLOEXEC) && defined(O_CLOEXEC) && defined(__NR_inotify_init1)
@@ -277,7 +277,7 @@ QStringList QInotifyFileSystemWatcherEngine::addPaths(const QStringList &paths,
| IN_MOVE_SELF
| IN_DELETE_SELF
)));
- if (wd <= 0) {
+ if (wd < 0) {
perror("QInotifyFileSystemWatcherEngine::addPaths: inotify_add_watch failed");
continue;
}
diff --git a/src/corelib/io/qfilesystemwatcher_inotify_p.h b/src/corelib/io/qfilesystemwatcher_inotify_p.h
index 8b3ce62c46..6855f803e3 100644
--- a/src/corelib/io/qfilesystemwatcher_inotify_p.h
+++ b/src/corelib/io/qfilesystemwatcher_inotify_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qfilesystemwatcher_kqueue.cpp b/src/corelib/io/qfilesystemwatcher_kqueue.cpp
index fd7bfa2b27..542bbd23b2 100644
--- a/src/corelib/io/qfilesystemwatcher_kqueue.cpp
+++ b/src/corelib/io/qfilesystemwatcher_kqueue.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qfilesystemwatcher_kqueue_p.h b/src/corelib/io/qfilesystemwatcher_kqueue_p.h
index 9bd9378c0c..73d544abeb 100644
--- a/src/corelib/io/qfilesystemwatcher_kqueue_p.h
+++ b/src/corelib/io/qfilesystemwatcher_kqueue_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qfilesystemwatcher_p.h b/src/corelib/io/qfilesystemwatcher_p.h
index 9f403b308f..41bea1f951 100644
--- a/src/corelib/io/qfilesystemwatcher_p.h
+++ b/src/corelib/io/qfilesystemwatcher_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qfilesystemwatcher_polling.cpp b/src/corelib/io/qfilesystemwatcher_polling.cpp
index 23dca140d6..92d0a2b6b0 100644
--- a/src/corelib/io/qfilesystemwatcher_polling.cpp
+++ b/src/corelib/io/qfilesystemwatcher_polling.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qfilesystemwatcher_polling_p.h b/src/corelib/io/qfilesystemwatcher_polling_p.h
index 3b3272a890..14f6345412 100644
--- a/src/corelib/io/qfilesystemwatcher_polling_p.h
+++ b/src/corelib/io/qfilesystemwatcher_polling_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qfilesystemwatcher_win.cpp b/src/corelib/io/qfilesystemwatcher_win.cpp
index e82a9a5b56..715e16bc7e 100644
--- a/src/corelib/io/qfilesystemwatcher_win.cpp
+++ b/src/corelib/io/qfilesystemwatcher_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,8 +52,15 @@
#include <qdir.h>
#include <qtextstream.h>
+#include <qt_windows.h>
+
QT_BEGIN_NAMESPACE
+QWindowsFileSystemWatcherEngine::Handle::Handle()
+ : handle(INVALID_HANDLE_VALUE), flags(0u)
+{
+}
+
QWindowsFileSystemWatcherEngine::~QWindowsFileSystemWatcherEngine()
{
foreach(QWindowsFileSystemWatcherEngineThread *thread, threads) {
diff --git a/src/corelib/io/qfilesystemwatcher_win_p.h b/src/corelib/io/qfilesystemwatcher_win_p.h
index 8e6b779b93..8daf5a94ad 100644
--- a/src/corelib/io/qfilesystemwatcher_win_p.h
+++ b/src/corelib/io/qfilesystemwatcher_win_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -57,8 +57,6 @@
#ifndef QT_NO_FILESYSTEMWATCHER
-#include <qt_windows.h>
-
#include <QtCore/qdatetime.h>
#include <QtCore/qthread.h>
#include <QtCore/qfile.h>
@@ -90,15 +88,10 @@ public:
class Handle
{
public:
- HANDLE handle;
+ Qt::HANDLE handle;
uint flags;
- Handle()
- : handle(INVALID_HANDLE_VALUE), flags(0u)
- { }
- Handle(const Handle &other)
- : handle(other.handle), flags(other.flags)
- { }
+ Handle();
};
class PathInfo {
@@ -147,12 +140,12 @@ public:
void wakeup();
QMutex mutex;
- QVector<HANDLE> handles;
+ QVector<Qt::HANDLE> handles;
int msg;
QHash<QString, QWindowsFileSystemWatcherEngine::Handle> handleForDir;
- QHash<HANDLE, QHash<QString, QWindowsFileSystemWatcherEngine::PathInfo> > pathInfoForHandle;
+ QHash<Qt::HANDLE, QHash<QString, QWindowsFileSystemWatcherEngine::PathInfo> > pathInfoForHandle;
Q_SIGNALS:
void fileChanged(const QString &path, bool removed);
diff --git a/src/corelib/io/qfsfileengine.cpp b/src/corelib/io/qfsfileengine.cpp
index a49ea84603..4bf2e530a3 100644
--- a/src/corelib/io/qfsfileengine.cpp
+++ b/src/corelib/io/qfsfileengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -120,9 +120,6 @@ void QFSFileEnginePrivate::init()
openMode = QIODevice::NotOpen;
fd = -1;
fh = 0;
-#ifdef Q_OS_SYMBIAN
- fileHandleForMaps = -1;
-#endif
lastIOCommand = IOFlushCommand;
lastFlushFailed = false;
closeFileHandle = false;
@@ -365,12 +362,7 @@ bool QFSFileEngine::close()
bool QFSFileEnginePrivate::closeFdFh()
{
Q_Q(QFSFileEngine);
- if (fd == -1 && !fh
-#ifdef Q_OS_SYMBIAN
- && !symbianFile.SubSessionHandle()
- && fileHandleForMaps == -1
-#endif
- )
+ if (fd == -1 && !fh)
return false;
// Flush the file if it's buffered, and if the last flush didn't fail.
@@ -378,24 +370,10 @@ bool QFSFileEnginePrivate::closeFdFh()
bool closed = true;
tried_stat = 0;
-#ifdef Q_OS_SYMBIAN
- // Map handle is always owned by us so always close it
- if (fileHandleForMaps >= 0) {
- QT_CLOSE(fileHandleForMaps);
- fileHandleForMaps = -1;
- }
-#endif
-
// Close the file if we created the handle.
if (closeFileHandle) {
int ret;
do {
-#ifdef Q_OS_SYMBIAN
- if (symbianFile.SubSessionHandle()) {
- symbianFile.Close();
- ret = 0;
- } else
-#endif
if (fh) {
// Close buffered file.
ret = fclose(fh) != 0 ? -1 : 0;
diff --git a/src/corelib/io/qfsfileengine.h b/src/corelib/io/qfsfileengine.h
index 0ed883a4a7..63659e709a 100644
--- a/src/corelib/io/qfsfileengine.h
+++ b/src/corelib/io/qfsfileengine.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -43,9 +43,6 @@
#define QFSFILEENGINE_H
#include <QtCore/qabstractfileengine.h>
-#ifdef Q_OS_SYMBIAN
-#include <f32file.h>
-#endif
#ifndef QT_NO_FSFILEENGINE
@@ -53,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QFSFileEnginePrivate;
@@ -106,9 +102,6 @@ public:
bool open(QIODevice::OpenMode flags, int fd);
bool open(QIODevice::OpenMode flags, int fd, QFile::FileHandleFlags handleFlags);
bool open(QIODevice::OpenMode flags, FILE *fh, QFile::FileHandleFlags handleFlags);
-#ifdef Q_OS_SYMBIAN
- bool open(QIODevice::OpenMode flags, const RFile &f, QFile::FileHandleFlags handleFlags);
-#endif
static bool setCurrentPath(const QString &path);
static QString currentPath(const QString &path = QString());
static QString homePath();
diff --git a/src/corelib/io/qfsfileengine_iterator.cpp b/src/corelib/io/qfsfileengine_iterator.cpp
index 2d162f6a7d..d90dc87bbd 100644
--- a/src/corelib/io/qfsfileengine_iterator.cpp
+++ b/src/corelib/io/qfsfileengine_iterator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qfsfileengine_iterator_p.h b/src/corelib/io/qfsfileengine_iterator_p.h
index 782930a52c..477e0ecd73 100644
--- a/src/corelib/io/qfsfileengine_iterator_p.h
+++ b/src/corelib/io/qfsfileengine_iterator_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qfsfileengine_p.h b/src/corelib/io/qfsfileengine_p.h
index 158c6f3a23..c06f662380 100644
--- a/src/corelib/io/qfsfileengine_p.h
+++ b/src/corelib/io/qfsfileengine_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,10 +60,6 @@
#include <QtCore/private/qfilesystemmetadata_p.h>
#include <qhash.h>
-#ifdef Q_OS_SYMBIAN
-#include <f32file.h>
-#endif
-
#ifndef QT_NO_FSFILEENGINE
QT_BEGIN_NAMESPACE
@@ -117,31 +113,6 @@ public:
mutable QFileSystemMetaData metaData;
FILE *fh;
-#ifdef Q_OS_SYMBIAN
-#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
- RFile64 symbianFile;
- TInt64 symbianFilePos;
-#else
- RFile symbianFile;
-
- /**
- * The cursor position in the underlying file. This differs
- * from devicePos because the latter is updated on calls to
- * writeData, even if no data was physically transferred to
- * the file, but instead stored in the write buffer.
- *
- * iFilePos is updated on calls to RFile::Read and
- * RFile::Write. It is also updated on calls to seek() but
- * RFile::Seek is not called when that happens because
- * Symbian supports positioned reads and writes, saving a file
- * server call, and because Symbian does not support seeking
- * past the end of a file.
- */
- TInt symbianFilePos;
-#endif
- mutable int fileHandleForMaps;
- int getMapHandle();
-#endif
#ifdef Q_OS_WIN
HANDLE fileHandle;
diff --git a/src/corelib/io/qfsfileengine_unix.cpp b/src/corelib/io/qfsfileengine_unix.cpp
index b09518865e..805c4b5989 100644
--- a/src/corelib/io/qfsfileengine_unix.cpp
+++ b/src/corelib/io/qfsfileengine_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,12 +56,6 @@
#include <sys/mman.h>
#include <stdlib.h>
#include <limits.h>
-#if defined(Q_OS_SYMBIAN)
-# include <sys/syslimits.h>
-# include <f32file.h>
-# include <pathinfo.h>
-# include "private/qcore_symbian_p.h"
-#endif
#include <errno.h>
#if !defined(QWS) && defined(Q_OS_MAC)
# include <private/qcore_mac_p.h>
@@ -69,23 +63,6 @@
QT_BEGIN_NAMESPACE
-#if defined(Q_OS_SYMBIAN)
-/*!
- \internal
-
- Returns true if supplied path is a relative path
-*/
-static bool isRelativePathSymbian(const QString& fileName)
-{
- return !(fileName.startsWith(QLatin1Char('/'))
- || (fileName.length() >= 2
- && ((fileName.at(0).isLetter() && fileName.at(1) == QLatin1Char(':'))
- || (fileName.at(0) == QLatin1Char('/') && fileName.at(1) == QLatin1Char('/')))));
-}
-
-#endif
-
-#ifndef Q_OS_SYMBIAN
/*!
\internal
@@ -125,7 +102,6 @@ static inline QByteArray openModeToFopenMode(QIODevice::OpenMode flags, const QF
return mode;
}
-#endif
/*!
\internal
@@ -155,7 +131,6 @@ static inline int openModeToOpenFlags(QIODevice::OpenMode mode)
return oflags;
}
-#ifndef Q_OS_SYMBIAN
/*!
\internal
@@ -166,151 +141,7 @@ static inline bool setCloseOnExec(int fd)
{
return fd != -1 && fcntl(fd, F_SETFD, FD_CLOEXEC) != -1;
}
-#endif
-
-#ifdef Q_OS_SYMBIAN
-/*!
- \internal
-*/
-bool QFSFileEnginePrivate::nativeOpen(QIODevice::OpenMode openMode)
-{
- Q_Q(QFSFileEngine);
-
- fh = 0;
- fd = -1;
-
- QString fn(QFileSystemEngine::absoluteName(fileEntry).nativeFilePath());
- RFs& fs = qt_s60GetRFs();
-
- TUint symbianMode = 0;
-
- if(openMode & QIODevice::ReadOnly)
- symbianMode |= EFileRead;
- if(openMode & QIODevice::WriteOnly)
- symbianMode |= EFileWrite;
- if(openMode & QIODevice::Text)
- symbianMode |= EFileStreamText;
-
- // pre Symbian 9.4, file I/O is always unbuffered, and the enum values don't exist
- if(QSysInfo::symbianVersion() >= QSysInfo::SV_9_4) {
- if (openMode & QFile::Unbuffered) {
- if (openMode & QIODevice::WriteOnly)
- symbianMode |= 0x00001000; //EFileWriteDirectIO;
- // ### Unbuffered read is not used, because it prevents file open in /resource
- // ### and has no obvious benefits
- } else {
- if (openMode & QIODevice::WriteOnly)
- symbianMode |= 0x00000800; //EFileWriteBuffered;
- // use implementation defaults for read buffering
- }
- }
-
- // Until Qt supports file sharing, we can't support EFileShareReadersOrWriters safely,
- // but Qt does this on other platforms and autotests rely on it.
- // The reason is that Unix locks are only advisory - the application needs to test the
- // lock after opening the file. Symbian and Windows locks are mandatory - opening a
- // locked file will fail.
- symbianMode |= EFileShareReadersOrWriters;
-
- TInt r;
- //note QIODevice::Truncate only has meaning for read/write access
- //write-only files are always truncated unless append is specified
- //reference openModeToOpenFlags in qfsfileengine_unix.cpp
- if ((openMode & QIODevice::Truncate) || (!(openMode & QIODevice::ReadOnly) && !(openMode & QIODevice::Append))) {
- r = symbianFile.Replace(fs, qt_QString2TPtrC(fn), symbianMode);
- } else {
- r = symbianFile.Open(fs, qt_QString2TPtrC(fn), symbianMode);
- if (r == KErrNotFound && (openMode & QIODevice::WriteOnly)) {
- r = symbianFile.Create(fs, qt_QString2TPtrC(fn), symbianMode);
- }
- }
-
- if (r == KErrNone) {
-#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
- TInt64 size;
-#else
- TInt size;
-#endif
- r = symbianFile.Size(size);
- if (r==KErrNone) {
- if (openMode & QIODevice::Append)
- symbianFilePos = size;
- else
- symbianFilePos = 0;
- //TODO: port this (QFileSystemMetaData in open?)
- //cachedSize = size;
- }
- }
-
- if (r != KErrNone) {
- q->setError(QFile::OpenError, QSystemError(r, QSystemError::NativeError).toString());
- symbianFile.Close();
- return false;
- }
-
- closeFileHandle = true;
- return true;
-}
-
-bool QFSFileEngine::open(QIODevice::OpenMode openMode, const RFile &file, QFile::FileHandleFlags handleFlags)
-{
- Q_D(QFSFileEngine);
- // Append implies WriteOnly.
- if (openMode & QFile::Append)
- openMode |= QFile::WriteOnly;
-
- // WriteOnly implies Truncate if neither ReadOnly nor Append are sent.
- if ((openMode & QFile::WriteOnly) && !(openMode & (QFile::ReadOnly | QFile::Append)))
- openMode |= QFile::Truncate;
-
- d->openMode = openMode;
- d->lastFlushFailed = false;
- d->closeFileHandle = (handleFlags & QFile::AutoCloseHandle);
- d->fileEntry.clear();
- d->fh = 0;
- d->fd = -1;
- d->tried_stat = 0;
-
-#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
- //RFile64 adds only functions to RFile, no data members
- d->symbianFile = static_cast<const RFile64&>(file);
-#else
- d->symbianFile = file;
-#endif
- TInt ret;
- d->symbianFilePos = 0;
- if (openMode & QFile::Append) {
- // Seek to the end when in Append mode.
- ret = d->symbianFile.Size(d->symbianFilePos);
- } else {
- // Seek to current otherwise
- ret = d->symbianFile.Seek(ESeekCurrent, d->symbianFilePos);
- }
-
- if (ret != KErrNone) {
- setError(QFile::OpenError, QSystemError(ret, QSystemError::NativeError).toString());
-
- d->openMode = QIODevice::NotOpen;
-#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
- d->symbianFile = RFile64();
-#else
- d->symbianFile = RFile();
-#endif
- return false;
- }
-
- // Extract filename (best effort)
- TFileName fn;
- TInt err = d->symbianFile.FullName(fn);
- if (err == KErrNone)
- d->fileEntry = QFileSystemEntry(qt_TDesC2QString(fn), QFileSystemEntry::FromNativePath());
- else
- d->fileEntry.clear();
-
- return true;
-}
-#else
/*!
\internal
*/
@@ -407,7 +238,6 @@ bool QFSFileEnginePrivate::nativeOpen(QIODevice::OpenMode openMode)
closeFileHandle = true;
return true;
}
-#endif
/*!
\internal
@@ -423,10 +253,6 @@ bool QFSFileEnginePrivate::nativeClose()
*/
bool QFSFileEnginePrivate::nativeFlush()
{
-#ifdef Q_OS_SYMBIAN
- if (symbianFile.SubSessionHandle())
- return (KErrNone == symbianFile.Flush());
-#endif
return fh ? flushFh() : fd != -1;
}
@@ -437,24 +263,6 @@ qint64 QFSFileEnginePrivate::nativeRead(char *data, qint64 len)
{
Q_Q(QFSFileEngine);
-#ifdef Q_OS_SYMBIAN
- if (symbianFile.SubSessionHandle()) {
- if(len > KMaxTInt) {
- //this check is more likely to catch a corrupt length, since it isn't possible to allocate 2GB buffers (yet..)
- q->setError(QFile::ReadError, QLatin1String("Maximum 2GB in single read on this platform"));
- return -1;
- }
- TPtr8 ptr(reinterpret_cast<TUint8*>(data), static_cast<TInt>(len));
- TInt r = symbianFile.Read(symbianFilePos, ptr);
- if (r != KErrNone)
- {
- q->setError(QFile::ReadError, QSystemError(r, QSystemError::NativeError).toString());
- return -1;
- }
- symbianFilePos += ptr.Length();
- return qint64(ptr.Length());
- }
-#endif
if (fh && nativeIsSequential()) {
size_t readBytes = 0;
int oldFlags = fcntl(QT_FILENO(fh), F_GETFL);
@@ -522,40 +330,6 @@ qint64 QFSFileEnginePrivate::nativeReadLine(char *data, qint64 maxlen)
*/
qint64 QFSFileEnginePrivate::nativeWrite(const char *data, qint64 len)
{
-#ifdef Q_OS_SYMBIAN
- Q_Q(QFSFileEngine);
- if (symbianFile.SubSessionHandle()) {
- if(len > KMaxTInt) {
- //this check is more likely to catch a corrupt length, since it isn't possible to allocate 2GB buffers (yet..)
- q->setError(QFile::WriteError, QLatin1String("Maximum 2GB in single write on this platform"));
- return -1;
- }
- const TPtrC8 ptr(reinterpret_cast<const TUint8*>(data), static_cast<TInt>(len));
-#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
- TInt64 eofpos = 0;
-#else
- TInt eofpos = 0;
-#endif
- //The end of file position is not cached because QFile is read/write sharable, therefore another
- //process may have altered the file size.
- TInt r = symbianFile.Seek(ESeekEnd, eofpos);
- if (r == KErrNone && symbianFilePos > eofpos) {
- //seek position is beyond end of file so file needs to be extended before write.
- //note that SetSize does not zero-initialise (c.f. posix lseek)
- r = symbianFile.SetSize(symbianFilePos);
- }
- if (r == KErrNone) {
- //write to specific position in the file (i.e. use our own cursor rather than calling seek)
- r = symbianFile.Write(symbianFilePos, ptr);
- }
- if (r != KErrNone) {
- q->setError(QFile::WriteError, QSystemError(r, QSystemError::NativeError).toString());
- return -1;
- }
- symbianFilePos += len;
- return len;
- }
-#endif
return writeFdFh(data, len);
}
@@ -564,12 +338,6 @@ qint64 QFSFileEnginePrivate::nativeWrite(const char *data, qint64 len)
*/
qint64 QFSFileEnginePrivate::nativePos() const
{
-#ifdef Q_OS_SYMBIAN
- const Q_Q(QFSFileEngine);
- if (symbianFile.SubSessionHandle()) {
- return symbianFilePos;
- }
-#endif
return posFdFh();
}
@@ -578,19 +346,6 @@ qint64 QFSFileEnginePrivate::nativePos() const
*/
bool QFSFileEnginePrivate::nativeSeek(qint64 pos)
{
-#ifdef Q_OS_SYMBIAN
- Q_Q(QFSFileEngine);
- if (symbianFile.SubSessionHandle()) {
-#ifndef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
- if(pos > KMaxTInt) {
- q->setError(QFile::PositionError, QLatin1String("Maximum 2GB file position on this platform"));
- return false;
- }
-#endif
- symbianFilePos = pos;
- return true;
- }
-#endif
return seekFdFh(pos);
}
@@ -602,31 +357,11 @@ int QFSFileEnginePrivate::nativeHandle() const
return fh ? fileno(fh) : fd;
}
-#ifdef Q_OS_SYMBIAN
-int QFSFileEnginePrivate::getMapHandle()
-{
- if (symbianFile.SubSessionHandle()) {
- // Symbian file handle can't be used for open C mmap() so open the file with open C as well.
- if (fileHandleForMaps < 0) {
- int flags = openModeToOpenFlags(openMode);
- flags &= ~(O_CREAT | O_TRUNC);
- fileHandleForMaps = ::wopen((wchar_t*)(fileEntry.nativeFilePath().utf16()), flags, 0666);
- }
- return fileHandleForMaps;
- }
- return nativeHandle();
-}
-#endif
-
/*!
\internal
*/
bool QFSFileEnginePrivate::nativeIsSequential() const
{
-#ifdef Q_OS_SYMBIAN
- if (symbianFile.SubSessionHandle())
- return false;
-#endif
return isSequentialFdFh();
}
@@ -679,22 +414,6 @@ bool QFSFileEngine::link(const QString &newName)
qint64 QFSFileEnginePrivate::nativeSize() const
{
-#ifdef Q_OS_SYMBIAN
- const Q_Q(QFSFileEngine);
- if (symbianFile.SubSessionHandle()) {
-#ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
- qint64 size;
-#else
- TInt size;
-#endif
- TInt err = symbianFile.Size(size);
- if(err != KErrNone) {
- const_cast<QFSFileEngine*>(q)->setError(QFile::PositionError, QSystemError(err, QSystemError::NativeError).toString());
- return 0;
- }
- return size;
- }
-#endif
return sizeFdFh();
}
@@ -710,11 +429,7 @@ bool QFSFileEngine::rmdir(const QString &name, bool recurseParentDirectories) co
bool QFSFileEngine::caseSensitive() const
{
-#if defined(Q_OS_SYMBIAN)
- return false;
-#else
return true;
-#endif
}
bool QFSFileEngine::setCurrentPath(const QString &path)
@@ -745,25 +460,7 @@ QString QFSFileEngine::tempPath()
QFileInfoList QFSFileEngine::drives()
{
QFileInfoList ret;
-#if defined(Q_OS_SYMBIAN)
- TDriveList driveList;
- RFs rfs = qt_s60GetRFs();
- TInt err = rfs.DriveList(driveList);
- if (err == KErrNone) {
- char driveName[] = "A:/";
-
- for (char i = 0; i < KMaxDrives; i++) {
- if (driveList[i]) {
- driveName[0] = 'A' + i;
- ret.append(QFileInfo(QLatin1String(driveName)));
- }
- }
- } else {
- qWarning("QFSFileEngine::drives: Getting drives failed");
- }
-#else
ret.append(QFileInfo(rootPath()));
-#endif
return ret;
}
@@ -900,11 +597,7 @@ QString QFSFileEngine::fileName(FileName file) const
bool QFSFileEngine::isRelativePath() const
{
Q_D(const QFSFileEngine);
-#if defined(Q_OS_SYMBIAN)
- return isRelativePathSymbian(d->fileEntry.filePath());
-#else
return d->fileEntry.filePath().length() ? d->fileEntry.filePath()[0] != QLatin1Char('/') : true;
-#endif
}
uint QFSFileEngine::ownerId(FileOwner own) const
@@ -920,13 +613,9 @@ uint QFSFileEngine::ownerId(FileOwner own) const
QString QFSFileEngine::owner(FileOwner own) const
{
-#ifndef Q_OS_SYMBIAN
if (own == OwnerUser)
return QFileSystemEngine::resolveUserName(ownerId(own));
return QFileSystemEngine::resolveGroupName(ownerId(own));
-#else
- return QString();
-#endif
}
bool QFSFileEngine::setPermissions(uint perms)
@@ -940,44 +629,6 @@ bool QFSFileEngine::setPermissions(uint perms)
return true;
}
-#ifdef Q_OS_SYMBIAN
-bool QFSFileEngine::setSize(qint64 size)
-{
- Q_D(QFSFileEngine);
- bool ret = false;
- TInt err = KErrNone;
- if (d->symbianFile.SubSessionHandle()) {
- TInt err = d->symbianFile.SetSize(size);
- ret = (err == KErrNone);
- if (ret && d->symbianFilePos > size)
- d->symbianFilePos = size;
- }
- else if (d->fd != -1)
- ret = QT_FTRUNCATE(d->fd, size) == 0;
- else if (d->fh)
- ret = QT_FTRUNCATE(QT_FILENO(d->fh), size) == 0;
- else {
- RFile tmp;
- QString symbianFilename(d->fileEntry.nativeFilePath());
- err = tmp.Open(qt_s60GetRFs(), qt_QString2TPtrC(symbianFilename), EFileWrite);
- if (err == KErrNone)
- {
- err = tmp.SetSize(size);
- tmp.Close();
- }
- ret = (err == KErrNone);
- }
- if (!ret) {
- QSystemError error;
- if (err)
- error = QSystemError(err, QSystemError::NativeError);
- else
- error = QSystemError(errno, QSystemError::StandardLibraryError);
- setError(QFile::ResizeError, error.toString());
- }
- return ret;
-}
-#else
bool QFSFileEngine::setSize(qint64 size)
{
Q_D(QFSFileEngine);
@@ -992,7 +643,6 @@ bool QFSFileEngine::setSize(qint64 size)
setError(QFile::ResizeError, qt_error_string(errno));
return ret;
}
-#endif
QDateTime QFSFileEngine::fileTime(FileTime time) const
{
@@ -1045,19 +695,8 @@ uchar *QFSFileEnginePrivate::map(qint64 offset, qint64 size, QFile::MemoryMapFla
QT_OFF_T realOffset = QT_OFF_T(offset);
realOffset &= ~(QT_OFF_T(pageSize - 1));
-#ifdef Q_OS_SYMBIAN
- void *mapAddress;
- TRAPD(err, mapAddress = QT_MMAP((void*)0, realSize,
- access, MAP_SHARED, getMapHandle(), realOffset));
- if (err != KErrNone) {
- qWarning("OpenC bug: leave from mmap %d", err);
- mapAddress = MAP_FAILED;
- errno = EINVAL;
- }
-#else
void *mapAddress = QT_MMAP((void*)0, realSize,
access, MAP_SHARED, nativeHandle(), realOffset);
-#endif
if (MAP_FAILED != mapAddress) {
uchar *address = extra + static_cast<uchar*>(mapAddress);
maps[address] = QPair<int,size_t>(extra, realSize);
diff --git a/src/corelib/io/qfsfileengine_win.cpp b/src/corelib/io/qfsfileengine_win.cpp
index 5dc96ea8a2..cc78664275 100644
--- a/src/corelib/io/qfsfileengine_win.cpp
+++ b/src/corelib/io/qfsfileengine_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -614,7 +614,7 @@ bool QFSFileEnginePrivate::doStat(QFileSystemMetaData::MetaDataFlags flags) cons
bool QFSFileEngine::link(const QString &newName)
{
#if !defined(Q_OS_WINCE)
-#if !defined(QT_NO_LIBRARY) && !defined(Q_CC_MWERKS)
+#if !defined(QT_NO_LIBRARY)
bool ret = false;
QString linkName = newName;
diff --git a/src/corelib/io/qiodevice.cpp b/src/corelib/io/qiodevice.cpp
index ef530f379f..0ad1a91d6c 100644
--- a/src/corelib/io/qiodevice.cpp
+++ b/src/corelib/io/qiodevice.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1088,15 +1088,6 @@ qint64 QIODevice::readLine(char *data, qint64 maxSize)
if (readSoFar)
debugBinaryString(data, int(readSoFar));
#endif
-#if defined(Q_OS_SYMBIAN)
- // Open C fgets strips '\r' but readSoFar gets returned as if it was still there
- if ((d->openMode & Text) &&
- readSoFar > 1 &&
- data[readSoFar - 1] == '\0' &&
- data[readSoFar - 2] == '\n') {
- --readSoFar;
- }
-#endif
if (readSoFar && data[readSoFar - 1] == '\n') {
if (d->openMode & Text) {
// QRingBuffer::readLine() isn't Text aware.
@@ -1135,12 +1126,6 @@ qint64 QIODevice::readLine(char *data, qint64 maxSize)
data[readSoFar] = '\0';
if (d->openMode & Text) {
-#if defined(Q_OS_SYMBIAN)
- // Open C fgets strips '\r' but readSoFar gets returned as if it was still there
- if (readSoFar > 1 && data[readSoFar - 1] == '\0' && data[readSoFar - 2] == '\n') {
- --readSoFar;
- }
-#endif
if (readSoFar > 1 && data[readSoFar - 1] == '\n' && data[readSoFar - 2] == '\r') {
data[readSoFar - 2] = '\n';
data[readSoFar - 1] = '\0';
diff --git a/src/corelib/io/qiodevice.h b/src/corelib/io/qiodevice.h
index 4b34ad4f69..eba408b285 100644
--- a/src/corelib/io/qiodevice.h
+++ b/src/corelib/io/qiodevice.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -58,7 +58,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QByteArray;
class QIODevicePrivate;
diff --git a/src/corelib/io/qiodevice_p.h b/src/corelib/io/qiodevice_p.h
index 2515fe5705..a510f5390c 100644
--- a/src/corelib/io/qiodevice_p.h
+++ b/src/corelib/io/qiodevice_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qnoncontiguousbytedevice.cpp b/src/corelib/io/qnoncontiguousbytedevice.cpp
index ba711493c6..f3d5bec196 100644
--- a/src/corelib/io/qnoncontiguousbytedevice.cpp
+++ b/src/corelib/io/qnoncontiguousbytedevice.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qnoncontiguousbytedevice_p.h b/src/corelib/io/qnoncontiguousbytedevice_p.h
index ded605681e..084d5b6cd8 100644
--- a/src/corelib/io/qnoncontiguousbytedevice_p.h
+++ b/src/corelib/io/qnoncontiguousbytedevice_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qprocess.cpp b/src/corelib/io/qprocess.cpp
index 8f76e0e4b9..0a0097c887 100644
--- a/src/corelib/io/qprocess.cpp
+++ b/src/corelib/io/qprocess.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -97,10 +97,6 @@ QT_END_NAMESPACE
#include <qwineventnotifier.h>
#endif
-#ifdef Q_OS_SYMBIAN
-#include <e32std.h>
-#endif
-
#ifndef QT_NO_PROCESS
QT_BEGIN_NAMESPACE
@@ -473,7 +469,7 @@ void QProcessPrivate::Channel::clear()
used as an input source for QXmlReader, or for generating data to
be uploaded using QNetworkAccessManager.
- \note On Windows CE and Symbian, reading and writing to a process
+ \note On Windows CE, reading and writing to a process
is not supported.
When the process exits, QProcess reenters the \l NotRunning state
@@ -524,10 +520,6 @@ void QProcessPrivate::Channel::clear()
setWorkingDirectory(). By default, processes are run in the
current working directory of the calling process.
- \note On Symbian, setting environment or working directory
- is not supported. The working directory will always be the private
- directory of the running process.
-
\section1 Synchronous Process API
QProcess provides a set of functions which allow it to be used
@@ -564,16 +556,6 @@ void QProcessPrivate::Channel::clear()
interpreter itself (\c{cmd.exe} on some Windows systems), and ask
the interpreter to execute the desired command.
- \section1 Symbian Platform Security Requirements
-
- On Symbian, processes which use the functions kill() or terminate()
- must have the \c PowerMgmt platform security capability. If the client
- process lacks this capability, these functions will fail.
-
- Platform security capabilities are added via the
- \l{qmake-variable-reference.html#target-capability}{TARGET.CAPABILITY}
- qmake variable.
-
\sa QBuffer, QFile, QTcpSocket
*/
@@ -761,8 +743,6 @@ QProcessPrivate::QProcessPrivate()
exitStatus = QProcess::NormalExit;
startupSocketNotifier = 0;
deathNotifier = 0;
- notifier = 0;
- pipeWriter = 0;
childStartedPipe[0] = INVALID_Q_PIPE;
childStartedPipe[1] = INVALID_Q_PIPE;
deathPipe[0] = INVALID_Q_PIPE;
@@ -773,16 +753,15 @@ QProcessPrivate::QProcessPrivate()
emittedReadyRead = false;
emittedBytesWritten = false;
#ifdef Q_OS_WIN
+ notifier = 0;
+ stdoutReader = 0;
+ stderrReader = 0;
pipeWriter = 0;
processFinishedNotifier = 0;
#endif // Q_OS_WIN
#ifdef Q_OS_UNIX
serial = 0;
#endif
-#ifdef Q_OS_SYMBIAN
- symbianProcess = NULL;
- processLaunched = false;
-#endif
}
/*! \internal
@@ -843,25 +822,20 @@ void QProcessPrivate::cleanup()
qDeleteInEventHandler(deathNotifier);
deathNotifier = 0;
}
+#ifdef Q_OS_WIN
if (notifier) {
qDeleteInEventHandler(notifier);
notifier = 0;
}
- destroyPipe(stdoutChannel.pipe);
- destroyPipe(stderrChannel.pipe);
- destroyPipe(stdinChannel.pipe);
+#endif
+ destroyChannel(&stdoutChannel);
+ destroyChannel(&stderrChannel);
+ destroyChannel(&stdinChannel);
destroyPipe(childStartedPipe);
destroyPipe(deathPipe);
#ifdef Q_OS_UNIX
serial = 0;
#endif
-#ifdef Q_OS_SYMBIAN
- if (symbianProcess) {
- symbianProcess->Close();
- delete symbianProcess;
- symbianProcess = NULL;
- }
-#endif
}
/*! \internal
@@ -873,7 +847,7 @@ bool QProcessPrivate::_q_canReadStandardOutput()
if (available == 0) {
if (stdoutChannel.notifier)
stdoutChannel.notifier->setEnabled(false);
- destroyPipe(stdoutChannel.pipe);
+ destroyChannel(&stdoutChannel);
#if defined QPROCESS_DEBUG
qDebug("QProcessPrivate::canReadStandardOutput(), 0 bytes available");
#endif
@@ -928,7 +902,7 @@ bool QProcessPrivate::_q_canReadStandardError()
if (available == 0) {
if (stderrChannel.notifier)
stderrChannel.notifier->setEnabled(false);
- destroyPipe(stderrChannel.pipe);
+ destroyChannel(&stderrChannel);
return false;
}
@@ -981,7 +955,7 @@ bool QProcessPrivate::_q_canWrite()
qint64 written = writeToStdin(writeBuffer.readPointer(),
writeBuffer.nextDataBlockSize());
if (written < 0) {
- destroyPipe(stdinChannel.pipe);
+ destroyChannel(&stdinChannel);
processError = QProcess::WriteError;
q->setErrorString(QProcess::tr("Error writing to process"));
emit q->error(processError);
@@ -1125,7 +1099,7 @@ void QProcessPrivate::closeWriteChannel()
// instead.
flushPipeWriter();
#endif
- destroyPipe(stdinChannel.pipe);
+ destroyChannel(&stdinChannel);
}
/*!
@@ -1397,15 +1371,14 @@ void QProcess::setStandardOutputProcess(QProcess *destination)
dto->stdinChannel.pipeFrom(dfrom);
}
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
/*!
\since 4.7
Returns the additional native command line arguments for the program.
- \note This function is available only on the Windows and Symbian
- platforms.
+ \note This function is available only on the Windows platform.
\sa setNativeArguments()
*/
@@ -1428,8 +1401,7 @@ QString QProcess::nativeArguments() const
string which is \e appended to the string composed from the usual
argument list, with a delimiting space.
- \note This function is available only on the Windows and Symbian
- platforms.
+ \note This function is available only on the Windows platform.
\sa nativeArguments()
*/
@@ -1461,10 +1433,6 @@ QString QProcess::workingDirectory() const
process in this directory. The default behavior is to start the
process in the working directory of the calling process.
- \note The working directory setting is ignored on Symbian;
- the private directory of the process is considered its working
- directory.
-
\sa workingDirectory(), start()
*/
void QProcess::setWorkingDirectory(const QString &dir)
@@ -1610,7 +1578,7 @@ void QProcess::setEnvironment(const QStringList &environment)
using setEnvironment() or setEnvironmentHash(). If no environment
has been set, the environment of the calling process will be used.
- \note The environment settings are ignored on Windows CE and Symbian,
+ \note The environment settings are ignored on Windows CE,
as there is no concept of an environment.
\sa processEnvironment(), setEnvironment(), systemEnvironment()
@@ -2076,13 +2044,6 @@ void QProcess::start(const QString &program, OpenMode mode)
event loop does not handle the WM_CLOSE message, can only be terminated by
calling kill().
- On Symbian, this function requires platform security capability
- \c PowerMgmt. If absent, the process will panic with KERN-EXEC 46.
-
- \note Terminating running processes from other processes will typically
- cause a panic in Symbian due to platform security.
-
- \sa {Symbian Platform Security Requirements}
\sa kill()
*/
void QProcess::terminate()
@@ -2097,13 +2058,6 @@ void QProcess::terminate()
On Windows, kill() uses TerminateProcess, and on Unix and Mac OS X, the
SIGKILL signal is sent to the process.
- On Symbian, this function requires platform security capability
- \c PowerMgmt. If absent, the process will panic with KERN-EXEC 46.
-
- \note Killing running processes from other processes will typically
- cause a panic in Symbian due to platform security.
-
- \sa {Symbian Platform Security Requirements}
\sa terminate()
*/
void QProcess::kill()
@@ -2256,7 +2210,7 @@ QT_BEGIN_INCLUDE_NAMESPACE
#if defined(Q_OS_MAC) && !defined(QT_NO_CORESERVICES)
# include <crt_externs.h>
# define environ (*_NSGetEnviron())
-#elif defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN) || (defined(Q_OS_MAC) && defined(QT_NO_CORESERVICES))
+#elif defined(Q_OS_WINCE) || (defined(Q_OS_MAC) && defined(QT_NO_CORESERVICES))
static char *qt_empty_environ[] = { 0 };
#define environ qt_empty_environ
#elif !defined(Q_OS_WIN)
@@ -2317,7 +2271,7 @@ QStringList QProcess::systemEnvironment()
\relates QProcess
Typedef for the identifiers used to represent processes on the underlying
- platform. On Unix and Symbian, this corresponds to \l qint64; on Windows, it
+ platform. On Unix, this corresponds to \l qint64; on Windows, it
corresponds to \c{_PROCESS_INFORMATION*}.
\sa QProcess::pid()
diff --git a/src/corelib/io/qprocess.h b/src/corelib/io/qprocess.h
index 96a1edefd8..1890635eda 100644
--- a/src/corelib/io/qprocess.h
+++ b/src/corelib/io/qprocess.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,11 +50,10 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_PROCESS
-#if (!defined(Q_OS_WIN32) && !defined(Q_OS_WINCE)) || defined(qdoc)
+#if !defined(Q_OS_WIN) || defined(qdoc)
typedef qint64 Q_PID;
#else
QT_END_NAMESPACE
@@ -152,7 +151,7 @@ public:
void setStandardErrorFile(const QString &fileName, OpenMode mode = Truncate);
void setStandardOutputProcess(QProcess *destination);
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
QString nativeArguments() const;
void setNativeArguments(const QString &arguments);
#endif
diff --git a/src/corelib/io/qprocess_p.h b/src/corelib/io/qprocess_p.h
index 7e0fecc320..236e716b34 100644
--- a/src/corelib/io/qprocess_p.h
+++ b/src/corelib/io/qprocess_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -74,12 +74,10 @@ typedef int Q_PIPE;
QT_BEGIN_NAMESPACE
class QSocketNotifier;
+class QWindowsPipeReader;
class QWindowsPipeWriter;
class QWinEventNotifier;
class QTimer;
-#if defined(Q_OS_SYMBIAN)
-class RProcess;
-#endif
#ifdef Q_OS_WIN
class QProcEnvKey : public QString
@@ -279,7 +277,7 @@ public:
QString program;
QStringList arguments;
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
QString nativeArguments;
#endif
QProcessEnvironment environment;
@@ -291,17 +289,22 @@ public:
Q_PIPE childStartedPipe[2];
Q_PIPE deathPipe[2];
void destroyPipe(Q_PIPE pipe[2]);
+ void destroyChannel(Channel *channel);
QSocketNotifier *startupSocketNotifier;
QSocketNotifier *deathNotifier;
+#ifdef Q_OS_WIN
// the wonderful windows notifier
QTimer *notifier;
+ QWindowsPipeReader *stdoutReader;
+ QWindowsPipeReader *stderrReader;
QWindowsPipeWriter *pipeWriter;
QWinEventNotifier *processFinishedNotifier;
+#endif
void startProcess();
-#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_UNIX)
void execChild(const char *workingDirectory, char **path, char **argv, char **envp);
#endif
bool processStarted();
@@ -342,11 +345,6 @@ public:
#ifdef Q_OS_UNIX
static void initializeProcessManager();
#endif
-
-#ifdef Q_OS_SYMBIAN
- bool processLaunched;
- RProcess* symbianProcess;
-#endif
};
QT_END_NAMESPACE
diff --git a/src/corelib/io/qprocess_unix.cpp b/src/corelib/io/qprocess_unix.cpp
index f01df3c078..9e35978c77 100644
--- a/src/corelib/io/qprocess_unix.cpp
+++ b/src/corelib/io/qprocess_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -169,16 +169,14 @@ private:
};
-Q_GLOBAL_STATIC(QMutex, processManagerGlobalMutex)
-
static QProcessManager *processManagerInstance = 0;
static QProcessManager *processManager()
{
// The constructor of QProcessManager should be called only once
// so we cannot use Q_GLOBAL_STATIC directly for QProcessManager
- QMutex *mutex = processManagerGlobalMutex();
- QMutexLocker locker(mutex);
+ static QBasicMutex processManagerGlobalMutex;
+ QMutexLocker locker(&processManagerGlobalMutex);
if (!processManagerInstance)
QProcessPrivate::initializeProcessManager();
@@ -357,6 +355,11 @@ void QProcessPrivate::destroyPipe(int *pipe)
}
}
+void QProcessPrivate::destroyChannel(Channel *channel)
+{
+ destroyPipe(channel->pipe);
+}
+
/*
Create the pipes to a QProcessPrivate::Channel.
@@ -545,10 +548,6 @@ inline pid_t qt_fork()
#endif
}
-#ifdef Q_OS_MAC
-Q_GLOBAL_STATIC(QMutex, cfbundleMutex);
-#endif
-
void QProcessPrivate::startProcess()
{
Q_Q(QProcess);
@@ -599,7 +598,8 @@ void QProcessPrivate::startProcess()
{
// CFBundle is not reentrant, since CFBundleCreate might return a reference
// to a cached bundle object. Protect the bundle calls with a mutex lock.
- QMutexLocker lock(cfbundleMutex());
+ static QBasicMutex cfbundleMutex;
+ QMutexLocker lock(&cfbundleMutex);
QCFType<CFBundleRef> bundle = CFBundleCreate(0, url);
url = CFBundleCopyExecutableURL(bundle);
}
diff --git a/src/corelib/io/qprocess_win.cpp b/src/corelib/io/qprocess_win.cpp
index 8c6444d173..51f34a61a6 100644
--- a/src/corelib/io/qprocess_win.cpp
+++ b/src/corelib/io/qprocess_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,28 +34,31 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "qprocess.h"
#include "qprocess_p.h"
+#include "qwindowspipereader_p.h"
#include "qwindowspipewriter_p.h"
#include <qdatetime.h>
#include <qdir.h>
+#include <qelapsedtimer.h>
#include <qfileinfo.h>
#include <qregexp.h>
#include <qtimer.h>
-#include <qthread.h>
-#include <qmutex.h>
-#include <qwaitcondition.h>
#include <qwineventnotifier.h>
#include <private/qthread_p.h>
#include <qdebug.h>
#include "private/qfsfileengine_p.h" // for longFileName
+#ifndef PIPE_REJECT_REMOTE_CLIENTS
+#define PIPE_REJECT_REMOTE_CLIENTS 0x08
+#endif
#ifndef QT_NO_PROCESS
@@ -66,30 +68,63 @@ QT_BEGIN_NAMESPACE
#define NOTIFYTIMEOUT 100
-static void qt_create_pipe(Q_PIPE *pipe, bool in)
+static void qt_create_pipe(Q_PIPE *pipe, bool isInputPipe)
{
- // Open the pipes. Make non-inheritable copies of input write and output
- // read handles to avoid non-closable handles (this is done by the
- // DuplicateHandle() call).
+ // Anomymous pipes do not support asynchronous I/O. Thus we
+ // create named pipes for redirecting stdout, stderr and stdin.
- SECURITY_ATTRIBUTES secAtt = { sizeof( SECURITY_ATTRIBUTES ), NULL, TRUE };
+ SECURITY_ATTRIBUTES secAtt = { 0 };
+ secAtt.nLength = sizeof(secAtt);
+ secAtt.bInheritHandle = isInputPipe; // The read handle must be non-inheritable for output pipes.
- HANDLE tmpHandle;
- if (in) { // stdin
- if (!CreatePipe(&pipe[0], &tmpHandle, &secAtt, 1024 * 1024))
- return;
- if (!DuplicateHandle(GetCurrentProcess(), tmpHandle, GetCurrentProcess(),
- &pipe[1], 0, FALSE, DUPLICATE_SAME_ACCESS))
- return;
- } else { // stdout or stderr
- if (!CreatePipe(&tmpHandle, &pipe[1], &secAtt, 1024 * 1024))
- return;
- if (!DuplicateHandle(GetCurrentProcess(), tmpHandle, GetCurrentProcess(),
- &pipe[0], 0, FALSE, DUPLICATE_SAME_ACCESS))
+ HANDLE hRead;
+ wchar_t pipeName[256];
+ unsigned int attempts = 1000;
+ forever {
+ // ### The user must make sure to call qsrand() to make the pipe names less predictable.
+ // ### Replace the call to qrand() with a secure version, once we have it in Qt.
+ swprintf(pipeName, L"\\\\.\\pipe\\qt-%X", qrand());
+
+ const DWORD dwPipeBufferSize = 1024 * 1024;
+ hRead = CreateNamedPipe(pipeName,
+ PIPE_ACCESS_INBOUND | FILE_FLAG_OVERLAPPED,
+ PIPE_TYPE_BYTE | PIPE_WAIT | PIPE_REJECT_REMOTE_CLIENTS,
+ 1, // only one pipe instance
+ 0, // output buffer size
+ dwPipeBufferSize, // input buffer size
+ 0,
+ &secAtt);
+ if (hRead != INVALID_HANDLE_VALUE)
+ break;
+ DWORD dwError = GetLastError();
+ if (dwError != ERROR_PIPE_BUSY || !--attempts) {
+ qErrnoWarning(dwError, "QProcess: CreateNamedPipe failed.");
return;
+ }
}
- CloseHandle(tmpHandle);
+ // The write handle must be non-inheritable for input pipes.
+ secAtt.bInheritHandle = !isInputPipe;
+
+ HANDLE hWrite = INVALID_HANDLE_VALUE;
+ hWrite = CreateFile(pipeName,
+ GENERIC_WRITE,
+ 0,
+ &secAtt,
+ OPEN_EXISTING,
+ FILE_FLAG_OVERLAPPED,
+ NULL);
+ if (hWrite == INVALID_HANDLE_VALUE) {
+ qErrnoWarning("QProcess: CreateFile failed.");
+ CloseHandle(hRead);
+ return;
+ }
+
+ // Wait until connection is in place.
+ ConnectNamedPipe(hRead, NULL);
+
+ pipe[0] = hRead;
+ pipe[1] = hWrite;
}
static void duplicateStdWriteChannel(Q_PIPE *pipe, DWORD nStdHandle)
@@ -122,6 +157,26 @@ bool QProcessPrivate::createChannel(Channel &channel)
qt_create_pipe(channel.pipe, isStdInChannel);
else
duplicateStdWriteChannel(channel.pipe, (&channel == &stdoutChannel) ? STD_OUTPUT_HANDLE : STD_ERROR_HANDLE);
+
+ QWindowsPipeReader *pipeReader = 0;
+ if (&channel == &stdoutChannel) {
+ if (!stdoutReader) {
+ stdoutReader = new QWindowsPipeReader(q);
+ q->connect(stdoutReader, SIGNAL(readyRead()), SLOT(_q_canReadStandardOutput()));
+ }
+ pipeReader = stdoutReader;
+ } else if (&channel == &stderrChannel) {
+ if (!stderrReader) {
+ stderrReader = new QWindowsPipeReader(q);
+ q->connect(stderrReader, SIGNAL(readyRead()), SLOT(_q_canReadStandardError()));
+ }
+ pipeReader = stderrReader;
+ }
+ if (pipeReader) {
+ pipeReader->setHandle(channel.pipe[0]);
+ pipeReader->startAsyncRead();
+ }
+
return true;
} else if (channel.type == Channel::Redirect) {
// we're redirecting the channel to/from a file
@@ -233,11 +288,6 @@ bool QProcessPrivate::createChannel(Channel &channel)
void QProcessPrivate::destroyPipe(Q_PIPE pipe[2])
{
- if (pipe[0] == stdinChannel.pipe[0] && pipe[1] == stdinChannel.pipe[1] && pipeWriter) {
- delete pipeWriter;
- pipeWriter = 0;
- }
-
if (pipe[0] != INVALID_Q_PIPE) {
CloseHandle(pipe[0]);
pipe[0] = INVALID_Q_PIPE;
@@ -248,6 +298,26 @@ void QProcessPrivate::destroyPipe(Q_PIPE pipe[2])
}
}
+void QProcessPrivate::destroyChannel(Channel *channel)
+{
+ if (channel == &stdinChannel) {
+ if (pipeWriter) {
+ delete pipeWriter;
+ pipeWriter = 0;
+ }
+ } else if (channel == &stdoutChannel) {
+ if (stdoutReader) {
+ stdoutReader->deleteLater();
+ stdoutReader = 0;
+ }
+ } else if (channel == &stderrChannel) {
+ if (stderrReader) {
+ stderrReader->deleteLater();
+ stderrReader = 0;
+ }
+ }
+ destroyPipe(channel->pipe);
+}
static QString qt_create_commandline(const QString &program, const QStringList &arguments)
{
@@ -472,8 +542,10 @@ qint64 QProcessPrivate::bytesAvailableFromStdout() const
if (stdoutChannel.pipe[0] == INVALID_Q_PIPE)
return 0;
- DWORD bytesAvail = 0;
- PeekNamedPipe(stdoutChannel.pipe[0], 0, 0, 0, &bytesAvail, 0);
+ if (!stdoutReader)
+ return 0;
+
+ DWORD bytesAvail = stdoutReader->bytesAvailable();
#if defined QPROCESS_DEBUG
qDebug("QProcessPrivate::bytesAvailableFromStdout() == %d", bytesAvail);
#endif
@@ -485,8 +557,10 @@ qint64 QProcessPrivate::bytesAvailableFromStderr() const
if (stderrChannel.pipe[0] == INVALID_Q_PIPE)
return 0;
- DWORD bytesAvail = 0;
- PeekNamedPipe(stderrChannel.pipe[0], 0, 0, 0, &bytesAvail, 0);
+ if (!stderrReader)
+ return 0;
+
+ DWORD bytesAvail = stderrReader->bytesAvailable();
#if defined QPROCESS_DEBUG
qDebug("QProcessPrivate::bytesAvailableFromStderr() == %d", bytesAvail);
#endif
@@ -495,22 +569,12 @@ qint64 QProcessPrivate::bytesAvailableFromStderr() const
qint64 QProcessPrivate::readFromStdout(char *data, qint64 maxlen)
{
- DWORD read = qMin(maxlen, bytesAvailableFromStdout());
- DWORD bytesRead = 0;
-
- if (read > 0 && !ReadFile(stdoutChannel.pipe[0], data, read, &bytesRead, 0))
- return -1;
- return bytesRead;
+ return stdoutReader ? stdoutReader->read(data, maxlen) : 0;
}
qint64 QProcessPrivate::readFromStderr(char *data, qint64 maxlen)
{
- DWORD read = qMin(maxlen, bytesAvailableFromStderr());
- DWORD bytesRead = 0;
-
- if (read > 0 && !ReadFile(stderrChannel.pipe[0], data, read, &bytesRead, 0))
- return -1;
- return bytesRead;
+ return stderrReader ? stderrReader->read(data, maxlen) : 0;
}
@@ -553,6 +617,30 @@ bool QProcessPrivate::waitForStarted(int)
return false;
}
+static bool drainOutputPipes(QProcessPrivate *d)
+{
+ if (!d->stdoutReader && !d->stderrReader)
+ return false;
+
+ bool readyReadEmitted = false;
+ forever {
+ bool readOperationActive = false;
+ if (d->stdoutReader) {
+ readyReadEmitted |= d->stdoutReader->waitForReadyRead(0);
+ readOperationActive = d->stdoutReader->isReadOperationActive();
+ }
+ if (d->stderrReader) {
+ readyReadEmitted |= d->stderrReader->waitForReadyRead(0);
+ readOperationActive |= d->stderrReader->isReadOperationActive();
+ }
+ if (!readOperationActive)
+ break;
+ Sleep(100);
+ }
+
+ return readyReadEmitted;
+}
+
bool QProcessPrivate::waitForReadyRead(int msecs)
{
Q_Q(QProcess);
@@ -564,26 +652,18 @@ bool QProcessPrivate::waitForReadyRead(int msecs)
return false;
if (pipeWriter && pipeWriter->waitForWrite(0))
timer.resetIncrements();
- bool readyReadEmitted = false;
- if (bytesAvailableFromStdout() != 0) {
- readyReadEmitted = _q_canReadStandardOutput() ? true : readyReadEmitted;
- timer.resetIncrements();
- }
-
- if (bytesAvailableFromStderr() != 0) {
- readyReadEmitted = _q_canReadStandardError() ? true : readyReadEmitted;
- timer.resetIncrements();
- }
- if (readyReadEmitted)
+ if (processChannelMode != QProcess::ForwardedChannels
+ && ((stdoutReader && stdoutReader->waitForReadyRead(0))
+ || (stderrReader && stderrReader->waitForReadyRead(0))))
return true;
if (!pid)
return false;
if (WaitForSingleObject(pid->hProcess, 0) == WAIT_OBJECT_0) {
- // find the return value if there is noew data to read
+ bool readyReadEmitted = drainOutputPipes(this);
_q_processDied();
- return false;
+ return readyReadEmitted;
}
Sleep(timer.nextSleepTime());
@@ -664,7 +744,6 @@ bool QProcessPrivate::waitForBytesWritten(int msecs)
return false;
}
-
bool QProcessPrivate::waitForFinished(int msecs)
{
Q_Q(QProcess);
@@ -679,21 +758,18 @@ bool QProcessPrivate::waitForFinished(int msecs)
return false;
if (pipeWriter && pipeWriter->waitForWrite(0))
timer.resetIncrements();
-
- if (bytesAvailableFromStdout() != 0) {
- _q_canReadStandardOutput();
+ if (stdoutReader && stdoutReader->waitForReadyRead(0))
timer.resetIncrements();
- }
-
- if (bytesAvailableFromStderr() != 0) {
- _q_canReadStandardError();
+ if (stderrReader && stderrReader->waitForReadyRead(0))
timer.resetIncrements();
- }
- if (!pid)
+ if (!pid) {
+ drainOutputPipes(this);
return true;
+ }
if (WaitForSingleObject(pid->hProcess, timer.nextSleepTime()) == WAIT_OBJECT_0) {
+ drainOutputPipes(this);
_q_processDied();
return true;
}
@@ -701,6 +777,7 @@ bool QProcessPrivate::waitForFinished(int msecs)
if (timer.hasTimedOut())
break;
}
+
processError = QProcess::Timedout;
q->setErrorString(QProcess::tr("Process operation timed out"));
return false;
@@ -760,12 +837,6 @@ void QProcessPrivate::_q_notified()
if (!writeBuffer.isEmpty() && (!pipeWriter || pipeWriter->waitForWrite(0)))
_q_canWrite();
- if (bytesAvailableFromStdout())
- _q_canReadStandardOutput();
-
- if (bytesAvailableFromStderr())
- _q_canReadStandardError();
-
if (processState != QProcess::NotRunning)
notifier->start(NOTIFYTIMEOUT);
}
diff --git a/src/corelib/io/qprocess_wince.cpp b/src/corelib/io/qprocess_wince.cpp
index 16a34469e7..8ae1d11c80 100644
--- a/src/corelib/io/qprocess_wince.cpp
+++ b/src/corelib/io/qprocess_wince.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,6 +60,11 @@ void QProcessPrivate::destroyPipe(Q_PIPE pipe[2])
Q_UNUSED(pipe);
}
+void QProcessPrivate::destroyChannel(Channel *channel)
+{
+ Q_UNUSED(channel);
+}
+
static QString qt_create_commandline(const QString &program, const QStringList &arguments)
{
QString args;
diff --git a/src/corelib/io/qresource.cpp b/src/corelib/io/qresource.cpp
index 0ae3f9e647..e46ab260b0 100644
--- a/src/corelib/io/qresource.cpp
+++ b/src/corelib/io/qresource.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -928,7 +928,7 @@ public:
}
};
-#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN) && !defined (Q_OS_NACL) && !defined(Q_OS_INTEGRITY)
+#if defined(Q_OS_UNIX) && !defined (Q_OS_NACL) && !defined(Q_OS_INTEGRITY)
#define QT_USE_MMAP
#endif
diff --git a/src/corelib/io/qresource.h b/src/corelib/io/qresource.h
index 452e141e41..4790adcb61 100644
--- a/src/corelib/io/qresource.h
+++ b/src/corelib/io/qresource.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QResourcePrivate;
diff --git a/src/corelib/io/qresource_iterator.cpp b/src/corelib/io/qresource_iterator.cpp
index 3317ef5fff..f09bd07411 100644
--- a/src/corelib/io/qresource_iterator.cpp
+++ b/src/corelib/io/qresource_iterator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qresource_iterator_p.h b/src/corelib/io/qresource_iterator_p.h
index 3603c64819..e01b5d3e5f 100644
--- a/src/corelib/io/qresource_iterator_p.h
+++ b/src/corelib/io/qresource_iterator_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qresource_p.h b/src/corelib/io/qresource_p.h
index f558319dc2..73046888a5 100644
--- a/src/corelib/io/qresource_p.h
+++ b/src/corelib/io/qresource_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp
index 81dc5bb078..2021c42c4d 100644
--- a/src/corelib/io/qsettings.cpp
+++ b/src/corelib/io/qsettings.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -68,17 +68,17 @@
#include "qcoreapplication.h"
#endif
-#ifdef Q_OS_WIN // for homedirpath reading from registry
-#include "qt_windows.h"
-#include <private/qsystemlibrary_p.h>
-#endif
-
#ifdef Q_OS_VXWORKS
# include <ioLib.h>
#endif
#include <stdlib.h>
+#ifdef Q_OS_WIN // for homedirpath reading from registry
+# include <private/qsystemlibrary_p.h>
+# include <qt_windows.h>
+#endif
+
#ifndef CSIDL_COMMON_APPDATA
#define CSIDL_COMMON_APPDATA 0x0023 // All Users\Application Data
#endif
@@ -122,7 +122,9 @@ Q_GLOBAL_STATIC(ConfFileHash, usedHashFunc)
Q_GLOBAL_STATIC(ConfFileCache, unusedCacheFunc)
Q_GLOBAL_STATIC(PathHash, pathHashFunc)
Q_GLOBAL_STATIC(CustomFormatVector, customFormatVectorFunc)
-Q_GLOBAL_STATIC(QMutex, globalMutex)
+
+static QBasicMutex settingsGlobalMutex;
+
static QSettings::Format globalDefaultFormat = QSettings::NativeFormat;
#ifndef Q_OS_WIN
@@ -277,7 +279,7 @@ QConfFile *QConfFile::fromName(const QString &fileName, bool _userPerms)
ConfFileCache *unusedCache = unusedCacheFunc();
QConfFile *confFile = 0;
- QMutexLocker locker(globalMutex());
+ QMutexLocker locker(&settingsGlobalMutex);
if (!(confFile = usedHash->value(absPath))) {
if ((confFile = unusedCache->take(absPath)))
@@ -292,7 +294,7 @@ QConfFile *QConfFile::fromName(const QString &fileName, bool _userPerms)
void QConfFile::clearCache()
{
- QMutexLocker locker(globalMutex());
+ QMutexLocker locker(&settingsGlobalMutex);
unusedCacheFunc()->clear();
}
@@ -992,7 +994,7 @@ void QConfFileSettingsPrivate::initFormat()
#endif
if (format > QSettings::IniFormat) {
- QMutexLocker locker(globalMutex());
+ QMutexLocker locker(&settingsGlobalMutex);
const CustomFormatVector *customFormatVector = customFormatVectorFunc();
int i = (int)format - (int)QSettings::CustomFormat1;
@@ -1127,7 +1129,7 @@ static QString getPath(QSettings::Format format, QSettings::Scope scope)
Q_ASSERT((int)QSettings::NativeFormat == 0);
Q_ASSERT((int)QSettings::IniFormat == 1);
- QMutexLocker locker(globalMutex());
+ QMutexLocker locker(&settingsGlobalMutex);
PathHash *pathHash = pathHashFunc();
if (pathHash->isEmpty())
initDefaultPaths(&locker);
@@ -1195,7 +1197,7 @@ QConfFileSettingsPrivate::QConfFileSettingsPrivate(const QString &fileName,
QConfFileSettingsPrivate::~QConfFileSettingsPrivate()
{
- QMutexLocker locker(globalMutex());
+ QMutexLocker locker(&settingsGlobalMutex);
ConfFileHash *usedHash = usedHashFunc();
ConfFileCache *unusedCache = unusedCacheFunc();
@@ -3437,7 +3439,7 @@ void QSettings::setUserIniPath(const QString &dir)
*/
void QSettings::setPath(Format format, Scope scope, const QString &path)
{
- QMutexLocker locker(globalMutex());
+ QMutexLocker locker(&settingsGlobalMutex);
PathHash *pathHash = pathHashFunc();
if (pathHash->isEmpty())
initDefaultPaths(&locker);
@@ -3520,7 +3522,7 @@ QSettings::Format QSettings::registerFormat(const QString &extension, ReadFunc r
Q_ASSERT(caseSensitivity == Qt::CaseSensitive);
#endif
- QMutexLocker locker(globalMutex());
+ QMutexLocker locker(&settingsGlobalMutex);
CustomFormatVector *customFormatVector = customFormatVectorFunc();
int index = customFormatVector->size();
if (index == 16) // the QSettings::Format enum has room for 16 custom formats
diff --git a/src/corelib/io/qsettings.h b/src/corelib/io/qsettings.h
index 65aeb89523..a4bb8349a8 100644
--- a/src/corelib/io/qsettings.h
+++ b/src/corelib/io/qsettings.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
QT_END_NAMESPACE
#ifndef QT_NO_SETTINGS
diff --git a/src/corelib/io/qsettings_mac.cpp b/src/corelib/io/qsettings_mac.cpp
index 6bb815c561..c572fa7b72 100644
--- a/src/corelib/io/qsettings_mac.cpp
+++ b/src/corelib/io/qsettings_mac.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qsettings_p.h b/src/corelib/io/qsettings_p.h
index cf348122dc..f4f285bae4 100644
--- a/src/corelib/io/qsettings_p.h
+++ b/src/corelib/io/qsettings_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -64,10 +64,6 @@
#endif
#include "private/qscopedpointer_p.h"
-#ifdef Q_OS_WIN
-#include "QtCore/qt_windows.h"
-#endif
-
QT_BEGIN_NAMESPACE
#define QT_QSETTINGS_ALWAYS_CASE_SENSITIVE_AND_FORGET_ORIGINAL_KEY_ORDER
diff --git a/src/corelib/io/qsettings_win.cpp b/src/corelib/io/qsettings_win.cpp
index 2cac379ec6..5ddc1dd1b1 100644
--- a/src/corelib/io/qsettings_win.cpp
+++ b/src/corelib/io/qsettings_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -46,8 +46,8 @@
#include "qsettings_p.h"
#include "qvector.h"
#include "qmap.h"
-#include "qt_windows.h"
#include "qdebug.h"
+#include <qt_windows.h>
QT_BEGIN_NAMESPACE
diff --git a/src/corelib/io/qstandardpaths.cpp b/src/corelib/io/qstandardpaths.cpp
index 5accb61cc5..78bf6c7b96 100644
--- a/src/corelib/io/qstandardpaths.cpp
+++ b/src/corelib/io/qstandardpaths.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -105,12 +105,6 @@ QT_BEGIN_NAMESPACE
\note The storage location returned can be a directory that does not exist; i.e., it
may need to be created by the system or the user.
-
- \note On Symbian OS, ApplicationsLocation always point /sys/bin folder on the same drive
- with executable. FontsLocation always points to folder on ROM drive. Symbian OS does not
- have desktop concept, DesktopLocation returns same path as DocumentsLocation.
- Rest of the standard locations point to folder on same drive with executable, except
- that if executable is in ROM the folder from C drive is returned.
*/
@@ -232,7 +226,7 @@ QString QStandardPaths::findExecutable(const QString &executableName, const QStr
QStringList searchPaths = paths;
if (paths.isEmpty()) {
QByteArray pEnv = qgetenv("PATH");
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
const QLatin1Char pathSep(';');
#else
const QLatin1Char pathSep(':');
diff --git a/src/corelib/io/qstandardpaths.h b/src/corelib/io/qstandardpaths.h
index bae7b3f7b5..e647f46f18 100644
--- a/src/corelib/io/qstandardpaths.h
+++ b/src/corelib/io/qstandardpaths.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_STANDARDPATHS
diff --git a/src/corelib/io/qstandardpaths_mac.cpp b/src/corelib/io/qstandardpaths_mac.cpp
index f37c21ed39..e3779220af 100644
--- a/src/corelib/io/qstandardpaths_mac.cpp
+++ b/src/corelib/io/qstandardpaths_mac.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qstandardpaths_unix.cpp b/src/corelib/io/qstandardpaths_unix.cpp
index 5aef52eaba..6057c26e0d 100644
--- a/src/corelib/io/qstandardpaths_unix.cpp
+++ b/src/corelib/io/qstandardpaths_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,13 +34,12 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "qstandardpaths.h"
-#include <qprocess.h>
-#include <qurl.h>
#include <qdir.h>
#include <qfile.h>
#include <qtextstream.h>
diff --git a/src/corelib/io/qstandardpaths_win.cpp b/src/corelib/io/qstandardpaths_win.cpp
index e3f86b7134..310b1eb40d 100644
--- a/src/corelib/io/qstandardpaths_win.cpp
+++ b/src/corelib/io/qstandardpaths_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,19 +34,16 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "qstandardpaths.h"
-#include <qsettings.h>
#include <qdir.h>
#include <private/qsystemlibrary_p.h>
-#include <qurl.h>
#include <qstringlist.h>
-#include <qprocess.h>
-#include <qtemporaryfile.h>
#include <qcoreapplication.h>
#include <qt_windows.h>
diff --git a/src/corelib/io/qtemporarydir.cpp b/src/corelib/io/qtemporarydir.cpp
index 15d3258a9a..53a48609e5 100644
--- a/src/corelib/io/qtemporarydir.cpp
+++ b/src/corelib/io/qtemporarydir.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,8 +53,8 @@
#include <stdlib.h> // mkdtemp
#ifdef Q_OS_WIN
-#include <windows.h>
#include <private/qfsfileengine_p.h>
+#include <qt_windows.h>
#endif
QT_BEGIN_NAMESPACE
@@ -95,6 +95,42 @@ static QString defaultTemplateName()
return QDir::tempPath() + QLatin1Char('/') + baseName + QLatin1String("-XXXXXX");
}
+#ifdef Q_OS_QNX
+static char *mkdtemp(char *templateName)
+{
+ static const char letters[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
+
+ const int length = strlen(templateName);
+
+ char *XXXXXX = templateName + length - 6;
+
+ if ((length < 6) || strncmp(XXXXXX, "XXXXXX", 6))
+ return 0;
+
+ for (int i = 0; i < 256; ++i) {
+ int v = qrand();
+
+ /* Fill in the random bits. */
+ XXXXXX[0] = letters[v % 62];
+ v /= 62;
+ XXXXXX[1] = letters[v % 62];
+ v /= 62;
+ XXXXXX[2] = letters[v % 62];
+ v /= 62;
+ XXXXXX[3] = letters[v % 62];
+ v /= 62;
+ XXXXXX[4] = letters[v % 62];
+ v /= 62;
+ XXXXXX[5] = letters[v % 62];
+
+ if (!mkdir(templateName, 0700))
+ return templateName;
+ }
+
+ return 0;
+}
+#endif
+
void QTemporaryDirPrivate::create(const QString &templateName)
{
#ifdef Q_OS_WIN
@@ -163,12 +199,32 @@ void QTemporaryDirPrivate::create(const QString &templateName)
\sa QDir::tempPath(), QDir, QTemporaryFile
*/
+/*!
+ Constructs a QTemporaryDir using as template the application name
+ returned by QCoreApplication::applicationName() (otherwise \c qt_temp).
+ The directory is stored in the system's temporary directory, QDir::tempPath().
+
+ \sa QDir::tempPath()
+*/
QTemporaryDir::QTemporaryDir()
: d_ptr(new QTemporaryDirPrivate)
{
d_ptr->create(defaultTemplateName());
}
+/*!
+ Constructs a QTemporaryFile with a template name of \a templateName.
+
+ If \a templateName is a relative path, the path will be relative to the
+ current working directory. You can use QDir::tempPath() to construct \a
+ templateName if you want use the system's temporary directory.
+
+ If the \a templateName ends with XXXXXX it will be used as the dynamic portion
+ of the directory name, otherwise it will be appended.
+ Unlike QTemporaryFile, XXXXXX in the middle of the template string is not supported.
+
+ \sa QDir::tempPath()
+*/
QTemporaryDir::QTemporaryDir(const QString &templateName)
: d_ptr(new QTemporaryDirPrivate)
{
diff --git a/src/corelib/io/qtemporarydir.h b/src/corelib/io/qtemporarydir.h
index 22c0a271e4..78d33e90b4 100644
--- a/src/corelib/io/qtemporarydir.h
+++ b/src/corelib/io/qtemporarydir.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_TEMPORARYFILE
diff --git a/src/corelib/io/qtemporaryfile.cpp b/src/corelib/io/qtemporaryfile.cpp
index eb645fabe8..b80ba6eee1 100644
--- a/src/corelib/io/qtemporaryfile.cpp
+++ b/src/corelib/io/qtemporaryfile.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,11 +49,7 @@
#include "private/qsystemerror_p.h"
#include "private/qfilesystemengine_p.h"
-#if defined(Q_OS_SYMBIAN)
-#include "private/qcore_symbian_p.h"
-#endif
-
-#if !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
+#if !defined(Q_OS_WIN)
#include "private/qcore_unix_p.h" // overrides QT_OPEN
#include <errno.h>
#endif
@@ -64,7 +60,7 @@
QT_BEGIN_NAMESPACE
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
typedef ushort Char;
static inline Char Latin1Char(char ch)
@@ -72,15 +68,7 @@ static inline Char Latin1Char(char ch)
return ushort(uchar(ch));
}
-# ifdef Q_OS_WIN
typedef HANDLE NativeFileHandle;
-# else // Q_OS_SYMBIAN
-# ifdef SYMBIAN_ENABLE_64_BIT_FILE_SERVER_API
-typedef RFile64 NativeFileHandle;
-# else
-typedef RFile NativeFileHandle;
-# endif
-# endif
#else // POSIX
typedef char Char;
@@ -161,10 +149,6 @@ static bool createFileFromTemplate(NativeFileHandle &file,
}
}
-#ifdef Q_OS_SYMBIAN
- RFs& fs = qt_s60GetRFs();
-#endif
-
for (;;) {
// Atomically create file and obtain handle
#if defined(Q_OS_WIN)
@@ -181,17 +165,6 @@ static bool createFileFromTemplate(NativeFileHandle &file,
error = QSystemError(err, QSystemError::NativeError);
return false;
}
-#elif defined(Q_OS_SYMBIAN)
- TInt err = file.Create(fs, qt_QString2TPtrC(path),
- EFileRead | EFileWrite | EFileShareReadersOrWriters);
-
- if (err == KErrNone)
- return true;
-
- if (err != KErrAlreadyExists) {
- error = QSystemError(err, QSystemError::NativeError);
- return false;
- }
#else // POSIX
file = QT_OPEN(path.constData(),
QT_OPEN_CREAT | O_EXCL | QT_OPEN_RDWR | QT_OPEN_LARGEFILE,
@@ -283,9 +256,6 @@ bool QTemporaryFileEngine::isReallyOpen()
Q_D(QFSFileEngine);
if (!((0 == d->fh) && (-1 == d->fd)
-#if defined (Q_OS_SYMBIAN)
- && (0 == d->symbianFile.SubSessionHandle())
-#endif
#if defined Q_OS_WIN
&& (INVALID_HANDLE_VALUE == d->fileHandle)
#endif
@@ -377,8 +347,6 @@ bool QTemporaryFileEngine::open(QIODevice::OpenMode openMode)
QSystemError error;
#if defined(Q_OS_WIN)
NativeFileHandle &file = d->fileHandle;
-#elif defined(Q_OS_SYMBIAN)
- NativeFileHandle &file = d->symbianFile;
#else // POSIX
NativeFileHandle &file = d->fd;
#endif
diff --git a/src/corelib/io/qtemporaryfile.h b/src/corelib/io/qtemporaryfile.h
index 20956d2cf0..8b14e5a14a 100644
--- a/src/corelib/io/qtemporaryfile.h
+++ b/src/corelib/io/qtemporaryfile.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_TEMPORARYFILE
diff --git a/src/corelib/io/qtextstream.cpp b/src/corelib/io/qtextstream.cpp
index 8c7f57fddf..7f37866226 100644
--- a/src/corelib/io/qtextstream.cpp
+++ b/src/corelib/io/qtextstream.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -2324,15 +2324,6 @@ void QTextStreamPrivate::putNumber(qulonglong number, bool negative)
}
/*!
- \internal
- \overload
-*/
-QTextStream &QTextStream::operator<<(QBool b)
-{
- return *this << bool(b);
-}
-
-/*!
Writes the character \a c to the stream, then returns a reference
to the QTextStream.
@@ -2542,6 +2533,21 @@ QTextStream &QTextStream::operator<<(const QString &string)
/*!
\overload
+ Writes \a string to the stream, and returns a reference to the
+ QTextStream. The contents of \a string are converted with the
+ QString constructor that takes a QLatin1String as argument.
+*/
+QTextStream &QTextStream::operator<<(const QLatin1String &string)
+{
+ Q_D(QTextStream);
+ CHECK_VALID_STREAM(*this);
+ d->putString(QString(string));
+ return *this;
+}
+
+/*!
+ \overload
+
Writes \a array to the stream. The contents of \a array are
converted with QString::fromAscii().
*/
diff --git a/src/corelib/io/qtextstream.h b/src/corelib/io/qtextstream.h
index 0531d4017d..011d43ebb0 100644
--- a/src/corelib/io/qtextstream.h
+++ b/src/corelib/io/qtextstream.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -58,7 +58,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QTextCodec;
class QTextDecoder;
@@ -175,7 +174,6 @@ public:
QTextStream &operator>>(QByteArray &array);
QTextStream &operator>>(char *c);
- QTextStream &operator<<(QBool b);
QTextStream &operator<<(QChar ch);
QTextStream &operator<<(char ch);
QTextStream &operator<<(signed short i);
@@ -189,6 +187,7 @@ public:
QTextStream &operator<<(float f);
QTextStream &operator<<(double f);
QTextStream &operator<<(const QString &s);
+ QTextStream &operator<<(const QLatin1String &s);
QTextStream &operator<<(const QByteArray &array);
QTextStream &operator<<(const char *c);
QTextStream &operator<<(const void *ptr);
@@ -209,6 +208,7 @@ typedef QTextStream & (*QTextStreamFunction)(QTextStream &);// manipulator funct
typedef void (QTextStream::*QTSMFI)(int); // manipulator w/int argument
typedef void (QTextStream::*QTSMFC)(QChar); // manipulator w/QChar argument
+
class Q_CORE_EXPORT QTextStreamManipulator
{
public:
diff --git a/src/corelib/io/qtldurl.cpp b/src/corelib/io/qtldurl.cpp
index 2c725f17fd..7adb40261b 100644
--- a/src/corelib/io/qtldurl.cpp
+++ b/src/corelib/io/qtldurl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qtldurl_p.h b/src/corelib/io/qtldurl_p.h
index 0a94f3015b..bba532b179 100644
--- a/src/corelib/io/qtldurl_p.h
+++ b/src/corelib/io/qtldurl_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp
index 53b4df4729..d74e7b8121 100644
--- a/src/corelib/io/qurl.cpp
+++ b/src/corelib/io/qurl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -114,9 +114,6 @@
\list
\o When creating an QString to contain a URL from a QByteArray or a
char*, always use QString::fromUtf8().
- \o Favor the use of QUrl::fromEncoded() and QUrl::toEncoded() instead of
- QUrl(string) and QUrl::toString() when converting a QUrl to or from
- a string.
\endlist
\sa QUrlInfo
@@ -318,6 +315,7 @@ public:
QString userInfo(QUrl::FormattingOptions options = QUrl::None) const;
void setEncodedAuthority(const QByteArray &authority);
void setEncodedUserInfo(const QUrlParseData *parseData);
+ void setEncodedUrl(const QByteArray&, QUrl::ParsingMode);
QByteArray mergePaths(const QByteArray &relativePath) const;
@@ -3880,7 +3878,7 @@ void QUrlPrivate::parse(ParseOptions parseOptions) const
if (parseData.scheme) {
QByteArray s(parseData.scheme, parseData.schemeLength);
- that->scheme = fromPercentEncodingMutable(&s);
+ that->scheme = fromPercentEncodingMutable(&s).toLower();
}
that->setEncodedUserInfo(&parseData);
@@ -4041,7 +4039,6 @@ const QByteArray &QUrlPrivate::normalized() const
QURL_SETFLAG(that->stateFlags, QUrlPrivate::Normalized);
QUrlPrivate tmp = *this;
- tmp.scheme = tmp.scheme.toLower();
tmp.host = tmp.canonicalHost();
// ensure the encoded and normalized parts of the URL
@@ -4180,28 +4177,13 @@ QString QUrlPrivate::createErrorString()
readable representation, with no percent encoding. QUrl will automatically
percent encode all characters that are not allowed in a URL.
+ The parsing mode \a parsingMode is used for parsing \a url.
+
Example:
\snippet doc/src/snippets/code/src_corelib_io_qurl.cpp 0
- To construct a URL from an encoded string, call fromEncoded():
-
- \snippet doc/src/snippets/code/src_corelib_io_qurl.cpp 1
-
- \sa setUrl(), setEncodedUrl(), fromEncoded(), TolerantMode
-*/
-QUrl::QUrl(const QString &url) : d(0)
-{
- if (!url.isEmpty())
- setUrl(url);
-}
-
-/*!
- \overload
-
- Parses the \a url using the parser mode \a parsingMode.
-
- \sa setUrl()
+ \sa setUrl(), TolerantMode
*/
QUrl::QUrl(const QString &url, ParsingMode parsingMode) : d(0)
{
@@ -4292,35 +4274,23 @@ void QUrl::clear()
/*!
Constructs a URL by parsing the contents of \a url.
- \a url is assumed to be in unicode format, with no percent
- encoding.
+ \a url is assumed to be in unicode format, and encoded,
+ such as URLs produced by url().
+
+ The parsing mode \a parsingMode is used for parsing \a url.
Calling isValid() will tell whether or not a valid URL was
constructed.
\sa setEncodedUrl()
*/
-void QUrl::setUrl(const QString &url)
-{
- setUrl(url, TolerantMode);
-}
-
-/*!
- \overload
-
- Parses \a url using the parsing mode \a parsingMode.
-
- \sa setEncodedUrl()
-*/
void QUrl::setUrl(const QString &url, ParsingMode parsingMode)
{
detach();
- // escape all reserved characters and delimiters
- // reserved = gen-delims / sub-delims
- if (parsingMode != TolerantMode) {
- setEncodedUrl(toPercentEncodingHelper(url, ABNF_reserved), parsingMode);
+
+ d->setEncodedUrl(url.toUtf8(), parsingMode);
+ if (isValid() || parsingMode == StrictMode)
return;
- }
// Tolerant preprocessing
QString tmp = url;
@@ -4351,22 +4321,7 @@ void QUrl::setUrl(const QString &url, ParsingMode parsingMode)
} else {
encodedUrl = toPercentEncodingHelper(tmp, ABNF_reserved);
}
- setEncodedUrl(encodedUrl, StrictMode);
-}
-
-/*!
- Constructs a URL by parsing the contents of \a encodedUrl.
-
- \a encodedUrl is assumed to be a URL string in percent encoded
- form, containing only ASCII characters.
-
- Use isValid() to determine if a valid URL was constructed.
-
- \sa setUrl()
-*/
-void QUrl::setEncodedUrl(const QByteArray &encodedUrl)
-{
- setEncodedUrl(encodedUrl, TolerantMode);
+ d->setEncodedUrl(encodedUrl, StrictMode);
}
inline static bool isHex(char c)
@@ -4381,15 +4336,26 @@ static inline char toHex(quint8 c)
}
/*!
- Constructs a URL by parsing the contents of \a encodedUrl using
- the given \a parsingMode.
+ \fn void QUrl::setEncodedUrl(const QByteArray &encodedUrl, ParsingMode parsingMode)
+ Constructs a URL by parsing the contents of \a encodedUrl.
+
+ \a encodedUrl is assumed to be a URL string in percent encoded
+ form, containing only ASCII characters.
+
+ The parsing mode \a parsingMode is used for parsing \a encodedUrl.
+
+ \obsolete Use setUrl(QString::fromUtf8(encodedUrl), parsingMode)
+
+ \sa setUrl()
*/
-void QUrl::setEncodedUrl(const QByteArray &encodedUrl, ParsingMode parsingMode)
+
+
+void QUrlPrivate::setEncodedUrl(const QByteArray &encodedUrl, QUrl::ParsingMode mode)
{
QByteArray tmp = encodedUrl;
- if (!d) d = new QUrlPrivate;
- else d->clear();
- if ((d->parsingMode = parsingMode) == TolerantMode) {
+ clear();
+ parsingMode = mode;
+ if (parsingMode == QUrl::TolerantMode) {
// Replace stray % with %25
QByteArray copy = tmp;
for (int i = 0, j = 0; i < copy.size(); ++i, ++j) {
@@ -4440,7 +4406,7 @@ void QUrl::setEncodedUrl(const QByteArray &encodedUrl, ParsingMode parsingMode)
}
}
- d->encodedOriginal = tmp;
+ encodedOriginal = tmp;
}
/*!
@@ -4467,13 +4433,15 @@ void QUrl::setScheme(const QString &scheme)
detach();
QURL_UNSETFLAG(d->stateFlags, QUrlPrivate::Validated | QUrlPrivate::Normalized);
- d->scheme = scheme;
+ d->scheme = scheme.toLower();
}
/*!
Returns the scheme of the URL. If an empty string is returned,
this means the scheme is undefined and the URL is then relative.
+ The returned scheme is always lowercase, for convenience.
+
\sa setScheme(), isRelative()
*/
QString QUrl::scheme() const
@@ -4807,18 +4775,6 @@ void QUrl::setPort(int port)
}
/*!
- Returns the port of the URL, or -1 if the port is unspecified.
-*/
-int QUrl::port() const
-{
- if (!d) return -1;
- if (!QURL_HASFLAG(d->stateFlags, QUrlPrivate::Parsed)) d->parse();
- if (!QURL_HASFLAG(d->stateFlags, QUrlPrivate::Validated)) d->validate();
- return d->port;
-}
-
-/*!
- \overload
\since 4.1
Returns the port of the URL, or \a defaultPort if the port is
@@ -5695,12 +5651,42 @@ bool QUrl::isRelative() const
return d->scheme.isEmpty();
}
+// Encodes only what really needs to be encoded.
+// \a input must be decoded.
+static QString toPrettyPercentEncoding(const QString &input, bool forFragment)
+{
+ const int len = input.length();
+ QString result;
+ result.reserve(len);
+ for (int i = 0; i < len; ++i) {
+ const QChar c = input.at(i);
+ register ushort u = c.unicode();
+ if (u < 0x20
+ || (!forFragment && u == '?') // don't escape '?' in fragments
+ || u == '#' || u == '%'
+ || (u == ' ' && (i+1 == len|| input.at(i+1).unicode() == ' '))) {
+ static const char hexdigits[] = "0123456789ABCDEF";
+ result += QLatin1Char('%');
+ result += QLatin1Char(hexdigits[(u & 0xf0) >> 4]);
+ result += QLatin1Char(hexdigits[u & 0xf]);
+ } else {
+ result += c;
+ }
+ }
+
+ return result;
+}
+
/*!
Returns the human-displayable string representation of the
URL. The output can be customized by passing flags with \a
options.
- \sa FormattingOptions, toEncoded()
+ The resulting QString can be passed back to a QUrl later on.
+
+ Synonym for url(options).
+
+ \sa FormattingOptions, toEncoded(), url()
*/
QString QUrl::toString(FormattingOptions options) const
{
@@ -5727,7 +5713,7 @@ QString QUrl::toString(FormattingOptions options) const
if ((options & QUrl::RemoveAuthority) != QUrl::RemoveAuthority
&& !d->authority(options).isEmpty() && !ourPath.isEmpty() && ourPath.at(0) != QLatin1Char('/'))
url += QLatin1Char('/');
- url += ourPath;
+ url += toPrettyPercentEncoding(ourPath, false);
// check if we need to remove trailing slashes
while ((options & StripTrailingSlash) && url.endsWith(QLatin1Char('/')))
url.chop(1);
@@ -5735,7 +5721,8 @@ QString QUrl::toString(FormattingOptions options) const
if (!(options & QUrl::RemoveQuery) && d->hasQuery) {
url += QLatin1Char('?');
- url += fromPercentEncoding(d->query);
+ // query is already encoded, but possibly more than necessary.
+ url += toPrettyPercentEncoding(fromPercentEncoding(d->query), true);
}
if (!(options & QUrl::RemoveFragment) && d->hasFragment) {
url += QLatin1Char('#');
@@ -5746,6 +5733,22 @@ QString QUrl::toString(FormattingOptions options) const
}
/*!
+ Returns the human-displayable string representation of the
+ URL. The output can be customized by passing flags with \a
+ options.
+
+ The resulting QString can be passed back to a QUrl later on.
+
+ Synonym for toString(options).
+
+ \sa FormattingOptions, toEncoded(), toString()
+*/
+QString QUrl::url(FormattingOptions options) const
+{
+ return toString(options);
+}
+
+/*!
Returns the encoded representation of the URL if it's valid;
otherwise an empty QByteArray is returned. The output can be
customized by passing flags with \a options.
@@ -5761,33 +5764,18 @@ QByteArray QUrl::toEncoded(FormattingOptions options) const
}
/*!
+ \fn QUrl QUrl::fromEncoded(const QByteArray &input, ParsingMode parsingMode)
+ \obsolete
+
Parses \a input and returns the corresponding QUrl. \a input is
assumed to be in encoded form, containing only ASCII characters.
- The URL is parsed using TolerantMode.
+ The URL is parsed using \a parsingMode.
- \sa toEncoded(), setUrl()
-*/
-QUrl QUrl::fromEncoded(const QByteArray &input)
-{
- QUrl tmp;
- tmp.setEncodedUrl(input, TolerantMode);
- return tmp;
-}
-
-/*!
- \overload
-
- Parses the URL using \a parsingMode.
+ Use QUrl(QString::fromUtf8(input), parsingMode) instead.
\sa toEncoded(), setUrl()
*/
-QUrl QUrl::fromEncoded(const QByteArray &input, ParsingMode parsingMode)
-{
- QUrl tmp;
- tmp.setEncodedUrl(input, parsingMode);
- return tmp;
-}
/*!
Returns a decoded copy of \a input. \a input is first decoded from
@@ -6241,7 +6229,7 @@ QDataStream &operator>>(QDataStream &in, QUrl &url)
{
QByteArray u;
in >> u;
- url = QUrl::fromEncoded(u);
+ url = QUrl(QString::fromUtf8(u));
return in;
}
#endif // QT_NO_DATASTREAM
@@ -6345,8 +6333,8 @@ QUrl QUrl::fromUserInput(const QString &userInput)
if (QDir::isAbsolutePath(trimmedString))
return QUrl::fromLocalFile(trimmedString);
- QUrl url = QUrl::fromEncoded(trimmedString.toUtf8(), QUrl::TolerantMode);
- QUrl urlPrepended = QUrl::fromEncoded("http://" + trimmedString.toUtf8(), QUrl::TolerantMode);
+ QUrl url(trimmedString, QUrl::TolerantMode);
+ QUrl urlPrepended(QString::fromLatin1("http://") + trimmedString, QUrl::TolerantMode);
// Check the most common case of a valid url with scheme and host
// We check if the port would be valid by adding the scheme to handle the case host:port
diff --git a/src/corelib/io/qurl.h b/src/corelib/io/qurl.h
index 75a88e8048..c301d92dfb 100644
--- a/src/corelib/io/qurl.h
+++ b/src/corelib/io/qurl.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QUrlPrivate;
class QDataStream;
@@ -86,9 +85,7 @@ public:
#ifdef QT_NO_URL_CAST_FROM_STRING
explicit
#endif
- QUrl(const QString &url);
- QUrl(const QString &url, ParsingMode mode);
- // ### Qt 5: merge the two constructors, with mode = TolerantMode
+ QUrl(const QString &url, ParsingMode mode = TolerantMode);
QUrl(const QUrl &copy);
QUrl &operator =(const QUrl &copy);
#ifndef QT_NO_URL_CAST_FROM_STRING
@@ -102,12 +99,9 @@ public:
inline void swap(QUrl &other) { qSwap(d, other.d); }
- void setUrl(const QString &url);
- void setUrl(const QString &url, ParsingMode mode);
- // ### Qt 5: merge the two setUrl() functions, with mode = TolerantMode
- void setEncodedUrl(const QByteArray &url);
- void setEncodedUrl(const QByteArray &url, ParsingMode mode);
- // ### Qt 5: merge the two setEncodedUrl() functions, with mode = TolerantMode
+ void setUrl(const QString &url, ParsingMode mode = TolerantMode);
+ QString url(FormattingOptions options = None) const;
+ QString toString(FormattingOptions options = None) const;
bool isValid() const;
@@ -140,9 +134,7 @@ public:
QByteArray encodedHost() const;
void setPort(int port);
- int port() const;
- int port(int defaultPort) const;
- // ### Qt 5: merge the two port() functions, with defaultPort = -1
+ int port(int defaultPort = -1) const;
void setPath(const QString &path);
QString path() const;
@@ -194,12 +186,7 @@ public:
QString toLocalFile() const;
bool isLocalFile() const;
- QString toString(FormattingOptions options = None) const;
-
QByteArray toEncoded(FormattingOptions options = None) const;
- static QUrl fromEncoded(const QByteArray &url);
- static QUrl fromEncoded(const QByteArray &url, ParsingMode mode);
- // ### Qt 5: merge the two fromEncoded() functions, with mode = TolerantMode
static QUrl fromUserInput(const QString &userInput);
@@ -223,6 +210,13 @@ public:
QString errorString() const;
+#if QT_DEPRECATED_SINCE(5,0)
+ QT_DEPRECATED void setEncodedUrl(const QByteArray &url, ParsingMode mode = TolerantMode)
+ { setUrl(QString::fromUtf8(url.constData(), url.size()), mode); }
+ QT_DEPRECATED static QUrl fromEncoded(const QByteArray &url, ParsingMode mode = TolerantMode)
+ { return QUrl(QString::fromUtf8(url.constData(), url.size()), mode); }
+#endif
+
private:
QUrlPrivate *d;
public:
diff --git a/src/corelib/io/qwindowspipereader.cpp b/src/corelib/io/qwindowspipereader.cpp
index 8da786ebd9..61ab5c9440 100644
--- a/src/corelib/io/qwindowspipereader.cpp
+++ b/src/corelib/io/qwindowspipereader.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,16 +34,17 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "qwindowspipereader_p.h"
+#include "qwinoverlappedionotifier_p.h"
#include <qdebug.h>
#include <qelapsedtimer.h>
#include <qeventloop.h>
#include <qtimer.h>
-#include <qwineventnotifier.h>
QT_BEGIN_NAMESPACE
@@ -53,21 +53,23 @@ QWindowsPipeReader::QWindowsPipeReader(QObject *parent)
handle(INVALID_HANDLE_VALUE),
readBufferMaxSize(0),
actualReadBufferSize(0),
+ readSequenceStarted(false),
emitReadyReadTimer(new QTimer(this)),
- pipeBroken(false)
+ pipeBroken(false),
+ readyReadEmitted(false)
{
emitReadyReadTimer->setSingleShot(true);
connect(emitReadyReadTimer, SIGNAL(timeout()), SIGNAL(readyRead()));
-
- ZeroMemory(&overlapped, sizeof(overlapped));
- overlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
- dataReadNotifier = new QWinEventNotifier(overlapped.hEvent, this);
- connect(dataReadNotifier, SIGNAL(activated(HANDLE)), SLOT(readEventSignalled()));
+ dataReadNotifier = new QWinOverlappedIoNotifier(this);
+ connect(dataReadNotifier, &QWinOverlappedIoNotifier::notified, this, &QWindowsPipeReader::notified);
}
QWindowsPipeReader::~QWindowsPipeReader()
{
- CloseHandle(overlapped.hEvent);
+ if (readSequenceStarted) {
+ CancelIo(handle);
+ dataReadNotifier->waitForNotified(-1);
+ }
}
/*!
@@ -78,8 +80,13 @@ void QWindowsPipeReader::setHandle(HANDLE hPipeReadEnd)
readBuffer.clear();
actualReadBufferSize = 0;
handle = hPipeReadEnd;
+ ZeroMemory(&overlapped, sizeof(overlapped));
pipeBroken = false;
- dataReadNotifier->setEnabled(true);
+ readyReadEmitted = false;
+ if (hPipeReadEnd != INVALID_HANDLE_VALUE) {
+ dataReadNotifier->setHandle(hPipeReadEnd);
+ dataReadNotifier->setEnabled(true);
+ }
}
/*!
@@ -92,7 +99,6 @@ void QWindowsPipeReader::stop()
dataReadNotifier->setEnabled(false);
readSequenceStarted = false;
handle = INVALID_HANDLE_VALUE;
- ResetEvent(overlapped.hEvent);
}
/*!
@@ -149,19 +155,18 @@ bool QWindowsPipeReader::canReadLine() const
/*!
\internal
Will be called whenever the read operation completes.
- Returns true, if readyRead() has been emitted.
*/
-bool QWindowsPipeReader::readEventSignalled()
+void QWindowsPipeReader::notified(DWORD numberOfBytesRead, DWORD errorCode)
{
- if (!completeAsyncRead()) {
+ if (!completeAsyncRead(numberOfBytesRead, errorCode)) {
pipeBroken = true;
emit pipeClosed();
- return false;
+ return;
}
startAsyncRead();
emitReadyReadTimer->stop();
+ readyReadEmitted = true;
emit readyRead();
- return true;
}
/*!
@@ -170,56 +175,50 @@ bool QWindowsPipeReader::readEventSignalled()
*/
void QWindowsPipeReader::startAsyncRead()
{
- do {
- DWORD bytesToRead = checkPipeState();
- if (pipeBroken)
- return;
+ const DWORD minReadBufferSize = 4096;
+ DWORD bytesToRead = qMax(checkPipeState(), minReadBufferSize);
+ if (pipeBroken)
+ return;
+ if (readBufferMaxSize && bytesToRead > (readBufferMaxSize - readBuffer.size())) {
+ bytesToRead = readBufferMaxSize - readBuffer.size();
if (bytesToRead == 0) {
- // There are no bytes in the pipe but we need to
- // start the overlapped read with some buffer size.
- bytesToRead = initialReadBufferSize;
- }
-
- if (readBufferMaxSize && bytesToRead > (readBufferMaxSize - readBuffer.size())) {
- bytesToRead = readBufferMaxSize - readBuffer.size();
- if (bytesToRead == 0) {
- // Buffer is full. User must read data from the buffer
- // before we can read more from the pipe.
- return;
- }
+ // Buffer is full. User must read data from the buffer
+ // before we can read more from the pipe.
+ return;
}
+ }
- char *ptr = readBuffer.reserve(bytesToRead);
+ char *ptr = readBuffer.reserve(bytesToRead);
- readSequenceStarted = true;
- if (ReadFile(handle, ptr, bytesToRead, NULL, &overlapped)) {
- completeAsyncRead();
- } else {
- switch (GetLastError()) {
- case ERROR_IO_PENDING:
- // This is not an error. We're getting notified, when data arrives.
- return;
- case ERROR_MORE_DATA:
- // This is not an error. The synchronous read succeeded.
- // We're connected to a message mode pipe and the message
- // didn't fit into the pipe's system buffer.
- completeAsyncRead();
- break;
- case ERROR_PIPE_NOT_CONNECTED:
- {
- // It may happen, that the other side closes the connection directly
- // after writing data. Then we must set the appropriate socket state.
- pipeBroken = true;
- emit pipeClosed();
- return;
- }
- default:
- emit winError(GetLastError(), QLatin1String("QWindowsPipeReader::startAsyncRead"));
- return;
+ readSequenceStarted = true;
+ if (ReadFile(handle, ptr, bytesToRead, NULL, &overlapped)) {
+ // We get notified by the QWinOverlappedIoNotifier - even in the synchronous case.
+ return;
+ } else {
+ switch (GetLastError()) {
+ case ERROR_IO_PENDING:
+ // This is not an error. We're getting notified, when data arrives.
+ return;
+ case ERROR_MORE_DATA:
+ // This is not an error. The synchronous read succeeded.
+ // We're connected to a message mode pipe and the message
+ // didn't fit into the pipe's system buffer.
+ // We're getting notified by the QWinOverlappedIoNotifier.
+ break;
+ case ERROR_PIPE_NOT_CONNECTED:
+ {
+ // It may happen, that the other side closes the connection directly
+ // after writing data. Then we must set the appropriate socket state.
+ pipeBroken = true;
+ emit pipeClosed();
+ return;
}
+ default:
+ emit winError(GetLastError(), QLatin1String("QWindowsPipeReader::startAsyncRead"));
+ return;
}
- } while (!readSequenceStarted);
+ }
}
/*!
@@ -227,26 +226,24 @@ void QWindowsPipeReader::startAsyncRead()
Sets the correct size of the read buffer after a read operation.
Returns false, if an error occurred or the connection dropped.
*/
-bool QWindowsPipeReader::completeAsyncRead()
+bool QWindowsPipeReader::completeAsyncRead(DWORD bytesRead, DWORD errorCode)
{
- ResetEvent(overlapped.hEvent);
readSequenceStarted = false;
- DWORD bytesRead;
- if (!GetOverlappedResult(handle, &overlapped, &bytesRead, TRUE)) {
- switch (GetLastError()) {
- case ERROR_MORE_DATA:
- // This is not an error. We're connected to a message mode
- // pipe and the message didn't fit into the pipe's system
- // buffer. We will read the remaining data in the next call.
- break;
- case ERROR_BROKEN_PIPE:
- case ERROR_PIPE_NOT_CONNECTED:
- return false;
- default:
- emit winError(GetLastError(), QLatin1String("QWindowsPipeReader::completeAsyncRead"));
- return false;
- }
+ switch (errorCode) {
+ case ERROR_SUCCESS:
+ break;
+ case ERROR_MORE_DATA:
+ // This is not an error. We're connected to a message mode
+ // pipe and the message didn't fit into the pipe's system
+ // buffer. We will read the remaining data in the next call.
+ break;
+ case ERROR_BROKEN_PIPE:
+ case ERROR_PIPE_NOT_CONNECTED:
+ return false;
+ default:
+ emit winError(errorCode, QLatin1String("QWindowsPipeReader::completeAsyncRead"));
+ return false;
}
actualReadBufferSize += bytesRead;
@@ -281,17 +278,11 @@ DWORD QWindowsPipeReader::checkPipeState()
*/
bool QWindowsPipeReader::waitForReadyRead(int msecs)
{
- Q_ASSERT(readSequenceStarted);
- DWORD result = WaitForSingleObject(overlapped.hEvent, msecs == -1 ? INFINITE : msecs);
- switch (result) {
- case WAIT_OBJECT_0:
- return readEventSignalled();
- case WAIT_TIMEOUT:
- return false;
- }
-
- qWarning("QWindowsPipeReader::waitForReadyRead WaitForSingleObject failed with error code %d.", int(GetLastError()));
- return false;
+ if (!readSequenceStarted)
+ return false;
+ readyReadEmitted = false;
+ dataReadNotifier->waitForNotified(msecs);
+ return readyReadEmitted;
}
/*!
diff --git a/src/corelib/io/qwindowspipereader_p.h b/src/corelib/io/qwindowspipereader_p.h
index e78d6b29ad..6bf950eec1 100644
--- a/src/corelib/io/qwindowspipereader_p.h
+++ b/src/corelib/io/qwindowspipereader_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,17 +56,16 @@
#include <qbytearray.h>
#include <qobject.h>
#include <qtimer.h>
-#include <qt_windows.h>
-
#include <private/qringbuffer_p.h>
+#include <qt_windows.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
-class QWinEventNotifier;
+class QWinOverlappedIoNotifier;
class Q_CORE_EXPORT QWindowsPipeReader : public QObject
{
@@ -89,7 +88,7 @@ public:
bool waitForPipeClosed(int msecs);
void startAsyncRead();
- bool completeAsyncRead();
+ bool isReadOperationActive() const { return readSequenceStarted; }
Q_SIGNALS:
void winError(ulong, const QString &);
@@ -97,22 +96,23 @@ Q_SIGNALS:
void pipeClosed();
private Q_SLOTS:
- bool readEventSignalled();
+ void notified(DWORD numberOfBytesRead, DWORD errorCode);
private:
+ bool completeAsyncRead(DWORD bytesRead, DWORD errorCode);
DWORD checkPipeState();
private:
HANDLE handle;
OVERLAPPED overlapped;
- QWinEventNotifier *dataReadNotifier;
+ QWinOverlappedIoNotifier *dataReadNotifier;
qint64 readBufferMaxSize;
QRingBuffer readBuffer;
int actualReadBufferSize;
bool readSequenceStarted;
QTimer *emitReadyReadTimer;
bool pipeBroken;
- static const qint64 initialReadBufferSize = 4096;
+ bool readyReadEmitted;
};
QT_END_NAMESPACE
diff --git a/src/corelib/io/qwindowspipewriter.cpp b/src/corelib/io/qwindowspipewriter.cpp
index a1765b4178..e31337d0fd 100644
--- a/src/corelib/io/qwindowspipewriter.cpp
+++ b/src/corelib/io/qwindowspipewriter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/io/qwindowspipewriter_p.h b/src/corelib/io/qwindowspipewriter_p.h
index 44a1d04b4e..fd648deefc 100644
--- a/src/corelib/io/qwindowspipewriter_p.h
+++ b/src/corelib/io/qwindowspipewriter_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -63,7 +63,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_THREAD
diff --git a/src/corelib/io/qwinoverlappedionotifier.cpp b/src/corelib/io/qwinoverlappedionotifier.cpp
new file mode 100644
index 0000000000..a26dfd406c
--- /dev/null
+++ b/src/corelib/io/qwinoverlappedionotifier.cpp
@@ -0,0 +1,228 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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 "qwinoverlappedionotifier_p.h"
+#include <qdebug.h>
+#include <qmutex.h>
+#include <qpointer.h>
+#include <qset.h>
+#include <qthread.h>
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QWinOverlappedIoNotifier
+ \brief The QWinOverlappedIoNotifier class provides support for overlapped I/O notifications on Windows.
+ \since 5.0
+ \internal
+
+ The QWinOverlappedIoNotifier class makes it possible to use efficient
+ overlapped (asynchronous) I/O notifications on Windows by using an
+ I/O completion port.
+
+ Once you have obtained a file handle, you can use setHandle() to get
+ notifications for I/O operations. Whenever an I/O operation completes,
+ the notified() signal is emitted which will pass the number of transferred
+ bytes and the operation's error code to the receiver.
+
+ Every handle that supports overlapped I/O can be used by
+ QWinOverlappedIoNotifier. That includes file handles, TCP sockets
+ and named pipes.
+
+ Note that you must not use ReadFileEx() and WriteFileEx() together
+ with QWinOverlappedIoNotifier. They are not supported as they use a
+ different I/O notification mechanism.
+
+ The hEvent member in the OVERLAPPED structure passed to ReadFile()
+ or WriteFile() is ignored and can be used for other purposes.
+
+ \warning This class is only available on Windows.
+*/
+
+class QWinIoCompletionPort : protected QThread
+{
+public:
+ QWinIoCompletionPort()
+ : hPort(INVALID_HANDLE_VALUE)
+ {
+ setObjectName(QLatin1String("I/O completion port thread"));
+ HANDLE hIOCP = CreateIoCompletionPort(INVALID_HANDLE_VALUE, NULL, 0, 0);
+ if (!hIOCP) {
+ qErrnoWarning("CreateIoCompletionPort failed.");
+ return;
+ }
+ hPort = hIOCP;
+ }
+
+ ~QWinIoCompletionPort()
+ {
+ PostQueuedCompletionStatus(hPort, 0, 0, NULL);
+ QThread::wait();
+ CloseHandle(hPort);
+ }
+
+ void registerNotifier(QWinOverlappedIoNotifier *notifier)
+ {
+ HANDLE hIOCP = CreateIoCompletionPort(notifier->hHandle, hPort, reinterpret_cast<ULONG_PTR>(notifier), 0);
+ if (!hIOCP) {
+ qErrnoWarning("Can't associate file handle %x with I/O completion port.", notifier->hHandle);
+ return;
+ }
+ mutex.lock();
+ notifiers += notifier;
+ mutex.unlock();
+ if (!QThread::isRunning())
+ QThread::start();
+ }
+
+ void unregisterNotifier(QWinOverlappedIoNotifier *notifier)
+ {
+ mutex.lock();
+ notifiers.remove(notifier);
+ mutex.unlock();
+ }
+
+protected:
+ void run()
+ {
+ DWORD dwBytesRead;
+ ULONG_PTR pulCompletionKey;
+ OVERLAPPED *overlapped;
+
+ forever {
+ BOOL success = GetQueuedCompletionStatus(hPort,
+ &dwBytesRead,
+ &pulCompletionKey,
+ &overlapped,
+ INFINITE);
+
+ DWORD errorCode = success ? ERROR_SUCCESS : GetLastError();
+ if (!success && !overlapped) {
+ qErrnoWarning(errorCode, "GetQueuedCompletionStatus failed.");
+ return;
+ }
+
+ if (success && !(dwBytesRead || pulCompletionKey || overlapped)) {
+ // We've posted null values via PostQueuedCompletionStatus to end this thread.
+ return;
+ }
+
+ QWinOverlappedIoNotifier *notifier = reinterpret_cast<QWinOverlappedIoNotifier *>(pulCompletionKey);
+ mutex.lock();
+ if (notifiers.contains(notifier))
+ notifier->notify(dwBytesRead, errorCode);
+ mutex.unlock();
+ }
+ }
+
+private:
+ HANDLE hPort;
+ QSet<QWinOverlappedIoNotifier *> notifiers;
+ QMutex mutex;
+};
+
+Q_GLOBAL_STATIC(QWinIoCompletionPort, iocp)
+
+QWinOverlappedIoNotifier::QWinOverlappedIoNotifier(QObject *parent)
+ : QObject(parent),
+ hHandle(INVALID_HANDLE_VALUE),
+ lastNumberOfBytes(0),
+ lastErrorCode(ERROR_SUCCESS)
+{
+ hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
+ connect(this, &QWinOverlappedIoNotifier::_q_notify,
+ this, &QWinOverlappedIoNotifier::_q_notified, Qt::QueuedConnection);
+}
+
+QWinOverlappedIoNotifier::~QWinOverlappedIoNotifier()
+{
+ setEnabled(false);
+ CloseHandle(hEvent);
+}
+
+void QWinOverlappedIoNotifier::setHandle(HANDLE h)
+{
+ hHandle = h;
+}
+
+void QWinOverlappedIoNotifier::setEnabled(bool enabled)
+{
+ if (enabled)
+ iocp()->registerNotifier(this);
+ else
+ iocp()->unregisterNotifier(this);
+}
+
+bool QWinOverlappedIoNotifier::waitForNotified(int msecs)
+{
+ DWORD result = WaitForSingleObject(hEvent, msecs == -1 ? INFINITE : DWORD(msecs));
+ switch (result) {
+ case WAIT_OBJECT_0:
+ _q_notified();
+ return true;
+ case WAIT_TIMEOUT:
+ return false;
+ }
+
+ qErrnoWarning("QWinOverlappedIoNotifier::waitForNotified: WaitForSingleObject failed.");
+ return false;
+}
+
+/*!
+ * Note: This function runs in the I/O completion port thread.
+ */
+void QWinOverlappedIoNotifier::notify(DWORD numberOfBytes, DWORD errorCode)
+{
+ lastNumberOfBytes = numberOfBytes;
+ lastErrorCode = errorCode;
+ SetEvent(hEvent);
+ emit _q_notify();
+}
+
+void QWinOverlappedIoNotifier::_q_notified()
+{
+ if (WaitForSingleObject(hEvent, 0) == WAIT_OBJECT_0) {
+ ResetEvent(hEvent);
+ emit notified(lastNumberOfBytes, lastErrorCode);
+ }
+}
+
+QT_END_NAMESPACE
diff --git a/src/corelib/io/qwinoverlappedionotifier_p.h b/src/corelib/io/qwinoverlappedionotifier_p.h
new file mode 100644
index 0000000000..fb994b554e
--- /dev/null
+++ b/src/corelib/io/qwinoverlappedionotifier_p.h
@@ -0,0 +1,101 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QWINOVERLAPPEDIONOTIFIER_P_H
+#define QWINOVERLAPPEDIONOTIFIER_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <qobject.h>
+#include <qt_windows.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Core)
+
+class Q_CORE_EXPORT QWinOverlappedIoNotifier : public QObject
+{
+ Q_OBJECT
+public:
+ QWinOverlappedIoNotifier(QObject *parent = 0);
+ ~QWinOverlappedIoNotifier();
+
+ void setHandle(HANDLE h);
+ HANDLE handle() const { return hHandle; }
+
+ void setEnabled(bool enabled);
+ bool waitForNotified(int msecs);
+
+Q_SIGNALS:
+ void notified(DWORD numberOfBytes, DWORD errorCode);
+ void _q_notify();
+
+private Q_SLOTS:
+ void _q_notified();
+
+private:
+ void notify(DWORD numberOfBytes, DWORD errorCode);
+
+private:
+ HANDLE hHandle;
+ HANDLE hEvent;
+ DWORD lastNumberOfBytes;
+ DWORD lastErrorCode;
+
+ friend class QWinIoCompletionPort;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QWINOVERLAPPEDIONOTIFIER_P_H
diff --git a/src/corelib/itemmodels/qabstractitemmodel.cpp b/src/corelib/itemmodels/qabstractitemmodel.cpp
index dec1fe4cef..1d6610af05 100644
--- a/src/corelib/itemmodels/qabstractitemmodel.cpp
+++ b/src/corelib/itemmodels/qabstractitemmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1753,6 +1753,28 @@ QMimeData *QAbstractItemModel::mimeData(const QModelIndexList &indexes) const
}
/*!
+ Returns whether a model can accept a drop of data.
+
+ This can be used to indicate whether a drop of certain data is allowed, for example
+ by using a 'forbidden' emblem on a mouse cursor during a drag operation.
+
+ This method returns true by default.
+
+ \sa dropMimeData(), {Using drag and drop with item views}
+ */
+bool QAbstractItemModel::canDropMimeData(const QMimeData *data, Qt::DropAction action,
+ int row, int column,
+ const QModelIndex &parent) const
+{
+ Q_UNUSED(data)
+ Q_UNUSED(action)
+ Q_UNUSED(row)
+ Q_UNUSED(column)
+ Q_UNUSED(parent)
+ return true;
+}
+
+/*!
Handles the \a data supplied by a drag and drop operation that ended with
the given \a action.
@@ -1773,7 +1795,7 @@ QMimeData *QAbstractItemModel::mimeData(const QModelIndexList &indexes) const
greater than or equal zero, it means that the drop occurred just before the
specified \a row and \a column in the specified \a parent.
- \sa supportedDropActions(), {Using drag and drop with item views}
+ \sa supportedDropActions(), canDropMimeData(), {Using drag and drop with item views}
*/
bool QAbstractItemModel::dropMimeData(const QMimeData *data, Qt::DropAction action,
int row, int column, const QModelIndex &parent)
@@ -1849,6 +1871,7 @@ void QAbstractItemModel::doSetSupportedDragActions(Qt::DropActions actions)
/*!
\since 4.2
\obsolete
+ \fn void QAbstractItemModel::setSupportedDragActions(Qt::DropActions actions)
Sets the supported drag \a actions for the items in the model.
@@ -1959,6 +1982,48 @@ bool QAbstractItemModel::removeColumns(int, int, const QModelIndex &)
}
/*!
+ On models that support this, moves \a count rows starting with the given
+ \a sourceRow under parent \a sourceParent to row \a destinationChild under
+ \a parent \a destinationParent.
+
+ Returns true if the rows were successfully moved; otherwise returns
+ false.
+
+ The base class implementation does nothing and returns false.
+
+ If you implement your own model, you can reimplement this function if you
+ want to support moving. Alternatively, you can provide your own API for
+ altering the data.
+
+ \sa beginMoveRows(), endMoveRows()
+*/
+bool QAbstractItemModel::moveRows(const QModelIndex &, int , int , const QModelIndex &, int)
+{
+ return false;
+}
+
+/*!
+ On models that support this, moves \a count columns starting with the given
+ \a sourceColumn under parent \a sourceParent to column \a destinationChild under
+ \a parent \a destinationParent.
+
+ Returns true if the columns were successfully moved; otherwise returns
+ false.
+
+ The base class implementation does nothing and returns false.
+
+ If you implement your own model, you can reimplement this function if you
+ want to support moving. Alternatively, you can provide your own API for
+ altering the data.
+
+ \sa beginMoveColumns(), endMoveColumns()
+*/
+bool QAbstractItemModel::moveColumns(const QModelIndex &, int , int , const QModelIndex &, int)
+{
+ return false;
+}
+
+/*!
Fetches any available data for the items with the parent specified by the
\a parent index.
@@ -2141,9 +2206,7 @@ QSize QAbstractItemModel::span(const QModelIndex &) const
Sets the model's role names to \a roleNames.
This function allows mapping of role identifiers to role property names in
- Declarative UI. This function must be called before the model is used.
- Modifying the role names after the model has been set may result in
- undefined behaviour.
+ scripting languages.
\sa roleNames()
*/
@@ -2887,19 +2950,25 @@ void QAbstractItemModel::endMoveColumns()
}
/*!
+ \obsolete
+
Resets the model to its original state in any attached views.
+ This function emits the signals modelAboutToBeReset() and modelReset().
+
\note Use beginResetModel() and endResetModel() instead whenever possible.
Use this method only if there is no way to call beginResetModel() before invalidating the model.
Otherwise it could lead to unexpected behaviour, especially when used with proxy models.
+
+ For example, in this code both signals modelAboutToBeReset() and modelReset()
+ are emitted \e after the data changes:
+
+ \snippet doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp 10
+
+ Instead you should use:
+
+ \snippet doc/src/snippets/code/src_corelib_kernel_qabstractitemmodel.cpp 11
*/
-void QAbstractItemModel::reset()
-{
- Q_D(QAbstractItemModel);
- emit modelAboutToBeReset();
- d->invalidatePersistentIndexes();
- emit modelReset();
-}
/*!
Begins a model reset operation.
@@ -2919,6 +2988,8 @@ void QAbstractItemModel::reset()
You must call this function before resetting any internal data structures in your model
or proxy model.
+ This function emits the signal modelAboutToBeReset().
+
\sa modelAboutToBeReset(), modelReset(), endResetModel()
\since 4.6
*/
@@ -2933,6 +3004,8 @@ void QAbstractItemModel::beginResetModel()
You must call this function after resetting any internal data structure in your model
or proxy model.
+ This function emits the signal modelReset().
+
\sa beginResetModel()
\since 4.6
*/
@@ -3417,8 +3490,13 @@ bool QAbstractListModel::dropMimeData(const QMimeData *data, Qt::DropAction acti
\fn QAbstractItemModel::modelReset()
\since 4.1
- This signal is emitted when reset() is called, after the model's internal
- state (e.g. persistent model indexes) has been invalidated.
+ This signal is emitted when reset() or endResetModel() is called, after the
+ model's internal state (e.g. persistent model indexes) has been invalidated.
+
+ Note that if a model is reset it should be considered that all information
+ previously retrieved from it is invalid. This includes but is not limited
+ to the rowCount() and columnCount(), flags(), data retrieved through data(),
+ and roleNames().
\sa endResetModel(), modelAboutToBeReset()
*/
diff --git a/src/corelib/itemmodels/qabstractitemmodel.h b/src/corelib/itemmodels/qabstractitemmodel.h
index 46dd7880ce..ff96fe53d6 100644
--- a/src/corelib/itemmodels/qabstractitemmodel.h
+++ b/src/corelib/itemmodels/qabstractitemmodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QAbstractItemModel;
class QPersistentModelIndex;
@@ -194,27 +193,35 @@ public:
virtual QStringList mimeTypes() const;
virtual QMimeData *mimeData(const QModelIndexList &indexes) const;
+ virtual bool canDropMimeData(const QMimeData *data, Qt::DropAction action,
+ int row, int column, const QModelIndex &parent) const;
virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action,
int row, int column, const QModelIndex &parent);
virtual Qt::DropActions supportedDropActions() const;
virtual Qt::DropActions supportedDragActions() const;
#if QT_DEPRECATED_SINCE(5, 0)
- void setSupportedDragActions(Qt::DropActions actions)
- {
- doSetSupportedDragActions(actions);
- }
+ QT_DEPRECATED void setSupportedDragActions(Qt::DropActions actions)
+ { doSetSupportedDragActions(actions); }
#endif
virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex());
virtual bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex());
virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex());
virtual bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex());
+ virtual bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count,
+ const QModelIndex &destinationParent, int destinationChild);
+ virtual bool moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count,
+ const QModelIndex &destinationParent, int destinationChild);
inline bool insertRow(int row, const QModelIndex &parent = QModelIndex());
inline bool insertColumn(int column, const QModelIndex &parent = QModelIndex());
inline bool removeRow(int row, const QModelIndex &parent = QModelIndex());
inline bool removeColumn(int column, const QModelIndex &parent = QModelIndex());
+ inline bool moveRow(const QModelIndex &sourceParent, int sourceRow,
+ const QModelIndex &destinationParent, int destinationChild);
+ inline bool moveColumn(const QModelIndex &sourceParent, int sourceColumn,
+ const QModelIndex &destinationParent, int destinationChild);
virtual void fetchMore(const QModelIndex &parent);
virtual bool canFetchMore(const QModelIndex &parent) const;
@@ -298,7 +305,14 @@ protected:
bool beginMoveColumns(const QModelIndex &sourceParent, int sourceFirst, int sourceLast, const QModelIndex &destinationParent, int destinationColumn);
void endMoveColumns();
- void reset();
+
+#if QT_DEPRECATED_SINCE(5,0)
+ QT_DEPRECATED void reset()
+ {
+ beginResetModel();
+ endResetModel();
+ }
+#endif
void beginResetModel();
void endResetModel();
@@ -330,7 +344,12 @@ inline bool QAbstractItemModel::removeRow(int arow, const QModelIndex &aparent)
{ return removeRows(arow, 1, aparent); }
inline bool QAbstractItemModel::removeColumn(int acolumn, const QModelIndex &aparent)
{ return removeColumns(acolumn, 1, aparent); }
-
+inline bool QAbstractItemModel::moveRow(const QModelIndex &sourceParent, int sourceRow,
+ const QModelIndex &destinationParent, int destinationChild)
+{ return moveRows(sourceParent, sourceRow, 1, destinationParent, destinationChild); }
+inline bool QAbstractItemModel::moveColumn(const QModelIndex &sourceParent, int sourceColumn,
+ const QModelIndex &destinationParent, int destinationChild)
+{ return moveRows(sourceParent, sourceColumn, 1, destinationParent, destinationChild); }
inline QModelIndex QAbstractItemModel::createIndex(int arow, int acolumn, void *adata) const
{ return QModelIndex(arow, acolumn, adata, this); }
inline QModelIndex QAbstractItemModel::createIndex(int arow, int acolumn, int aid) const
diff --git a/src/corelib/itemmodels/qabstractitemmodel_p.h b/src/corelib/itemmodels/qabstractitemmodel_p.h
index 3c5d8e5d20..050ed4ed1f 100644
--- a/src/corelib/itemmodels/qabstractitemmodel_p.h
+++ b/src/corelib/itemmodels/qabstractitemmodel_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/itemmodels/qabstractproxymodel.cpp b/src/corelib/itemmodels/qabstractproxymodel.cpp
index 46678403db..69160043ea 100644
--- a/src/corelib/itemmodels/qabstractproxymodel.cpp
+++ b/src/corelib/itemmodels/qabstractproxymodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/itemmodels/qabstractproxymodel.h b/src/corelib/itemmodels/qabstractproxymodel.h
index 000fc8d0ce..3c82199038 100644
--- a/src/corelib/itemmodels/qabstractproxymodel.h
+++ b/src/corelib/itemmodels/qabstractproxymodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_PROXYMODEL
diff --git a/src/corelib/itemmodels/qabstractproxymodel_p.h b/src/corelib/itemmodels/qabstractproxymodel_p.h
index 7d6e49a235..db3fc18481 100644
--- a/src/corelib/itemmodels/qabstractproxymodel_p.h
+++ b/src/corelib/itemmodels/qabstractproxymodel_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/itemmodels/qidentityproxymodel.cpp b/src/corelib/itemmodels/qidentityproxymodel.cpp
index 6edb5df0fb..1f95ac0660 100644
--- a/src/corelib/itemmodels/qidentityproxymodel.cpp
+++ b/src/corelib/itemmodels/qidentityproxymodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -319,6 +319,15 @@ int QIdentityProxyModel::rowCount(const QModelIndex& parent) const
/*!
\reimp
*/
+QVariant QIdentityProxyModel::headerData(int section, Qt::Orientation orientation, int role) const
+{
+ Q_D(const QIdentityProxyModel);
+ return d->model->headerData(section, orientation, role);
+}
+
+/*!
+ \reimp
+ */
void QIdentityProxyModel::setSourceModel(QAbstractItemModel* sourceModel)
{
beginResetModel();
diff --git a/src/corelib/itemmodels/qidentityproxymodel.h b/src/corelib/itemmodels/qidentityproxymodel.h
index 9d3c085829..918ae24c6c 100644
--- a/src/corelib/itemmodels/qidentityproxymodel.h
+++ b/src/corelib/itemmodels/qidentityproxymodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QIdentityProxyModelPrivate;
@@ -68,6 +67,7 @@ public:
QModelIndex mapToSource(const QModelIndex& proxyIndex) const;
QModelIndex parent(const QModelIndex& child) const;
int rowCount(const QModelIndex& parent = QModelIndex()) const;
+ QVariant headerData(int section, Qt::Orientation orientation, int role) const;
bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent);
QItemSelection mapSelectionFromSource(const QItemSelection& selection) const;
diff --git a/src/corelib/itemmodels/qitemselectionmodel.cpp b/src/corelib/itemmodels/qitemselectionmodel.cpp
index 3321735498..7f31128770 100644
--- a/src/corelib/itemmodels/qitemselectionmodel.cpp
+++ b/src/corelib/itemmodels/qitemselectionmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/itemmodels/qitemselectionmodel.h b/src/corelib/itemmodels/qitemselectionmodel.h
index 3b3fa8d1e8..6f438d8c68 100644
--- a/src/corelib/itemmodels/qitemselectionmodel.h
+++ b/src/corelib/itemmodels/qitemselectionmodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_ITEMVIEWS
diff --git a/src/corelib/itemmodels/qitemselectionmodel_p.h b/src/corelib/itemmodels/qitemselectionmodel_p.h
index 919c4fab05..59d00de3ad 100644
--- a/src/corelib/itemmodels/qitemselectionmodel_p.h
+++ b/src/corelib/itemmodels/qitemselectionmodel_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.cpp b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
index 3a63c923d3..ebd1ce2a70 100644
--- a/src/corelib/itemmodels/qsortfilterproxymodel.cpp
+++ b/src/corelib/itemmodels/qsortfilterproxymodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/itemmodels/qsortfilterproxymodel.h b/src/corelib/itemmodels/qsortfilterproxymodel.h
index c8cd581420..8c7433d307 100644
--- a/src/corelib/itemmodels/qsortfilterproxymodel.h
+++ b/src/corelib/itemmodels/qsortfilterproxymodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QSortFilterProxyModelPrivate;
class QSortFilterProxyModelLessThan;
diff --git a/src/corelib/itemmodels/qstringlistmodel.cpp b/src/corelib/itemmodels/qstringlistmodel.cpp
index 5e72977d20..b13e825c05 100644
--- a/src/corelib/itemmodels/qstringlistmodel.cpp
+++ b/src/corelib/itemmodels/qstringlistmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/itemmodels/qstringlistmodel.h b/src/corelib/itemmodels/qstringlistmodel.h
index c70072de9e..d8b3f87f4a 100644
--- a/src/corelib/itemmodels/qstringlistmodel.h
+++ b/src/corelib/itemmodels/qstringlistmodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_STRINGLISTMODEL
diff --git a/src/corelib/json/json.pri b/src/corelib/json/json.pri
new file mode 100644
index 0000000000..1a4e2a72bf
--- /dev/null
+++ b/src/corelib/json/json.pri
@@ -0,0 +1,17 @@
+HEADERS += \
+ json/qjson_p.h \
+ json/qjsondocument.h \
+ json/qjsonobject.h \
+ json/qjsonvalue.h \
+ json/qjsonarray.h \
+ json/qjsonwriter_p.h \
+ json/qjsonparser_p.h
+
+SOURCES += \
+ json/qjson.cpp \
+ json/qjsondocument.cpp \
+ json/qjsonobject.cpp \
+ json/qjsonarray.cpp \
+ json/qjsonvalue.cpp \
+ json/qjsonwriter.cpp \
+ json/qjsonparser.cpp
diff --git a/src/corelib/json/qjson.cpp b/src/corelib/json/qjson.cpp
new file mode 100644
index 0000000000..4f7372a6c0
--- /dev/null
+++ b/src/corelib/json/qjson.cpp
@@ -0,0 +1,427 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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 "qjson_p.h"
+#include <qalgorithms.h>
+
+QT_BEGIN_NAMESPACE
+
+namespace QJsonPrivate
+{
+
+#ifdef Q_LITTLE_ENDIAN
+#define Q_TO_LITTLE_ENDIAN(x) (x)
+#else
+#define Q_TO_LITTLE_ENDIAN(x) ( ((x & 0xff) << 24) | ((x & 0xff00) << 8) | ((x & 0xff0000) >> 8) | ((x & 0xff000000) >> 24) )
+#endif
+
+static const Base emptyArray = { { Q_TO_LITTLE_ENDIAN(sizeof(Base)) }, { 0 }, { 0 } };
+static const Base emptyObject = { { Q_TO_LITTLE_ENDIAN(sizeof(Base)) }, { 0 }, { 0 } };
+
+
+void Data::compact()
+{
+ Q_ASSERT(sizeof(Value) == sizeof(offset));
+
+ if (!compactionCounter)
+ return;
+
+ Base *base = header->root();
+ int reserve = 0;
+ if (base->is_object) {
+ Object *o = static_cast<Object *>(base);
+ for (int i = 0; i < (int)o->length; ++i)
+ reserve += o->entryAt(i)->usedStorage(o);
+ } else {
+ Array *a = static_cast<Array *>(base);
+ for (int i = 0; i < (int)a->length; ++i)
+ reserve += (*a)[i].usedStorage(a);
+ }
+
+ int size = sizeof(Base) + reserve + base->length*sizeof(offset);
+ int alloc = sizeof(Header) + size;
+ Header *h = (Header *) malloc(alloc);
+ h->tag = QJsonDocument::BinaryFormatTag;
+ h->version = 1;
+ Base *b = h->root();
+ b->size = size;
+ b->is_object = header->root()->is_object;
+ b->length = base->length;
+ b->tableOffset = reserve + sizeof(Array);
+
+ int offset = sizeof(Base);
+ if (b->is_object) {
+ Object *o = static_cast<Object *>(base);
+ Object *no = static_cast<Object *>(b);
+
+ for (int i = 0; i < (int)o->length; ++i) {
+ no->table()[i] = offset;
+
+ const Entry *e = o->entryAt(i);
+ Entry *ne = no->entryAt(i);
+ int s = e->size();
+ memcpy(ne, e, s);
+ offset += s;
+ int dataSize = e->value.usedStorage(o);
+ if (dataSize) {
+ memcpy((char *)no + offset, e->value.data(o), dataSize);
+ ne->value.value = offset;
+ offset += dataSize;
+ }
+ }
+ } else {
+ Array *a = static_cast<Array *>(base);
+ Array *na = static_cast<Array *>(b);
+
+ for (int i = 0; i < (int)a->length; ++i) {
+ const Value &v = (*a)[i];
+ Value &nv = (*na)[i];
+ nv = v;
+ int dataSize = v.usedStorage(a);
+ if (dataSize) {
+ memcpy((char *)na + offset, v.data(a), dataSize);
+ nv.value = offset;
+ offset += dataSize;
+ }
+ }
+ }
+ Q_ASSERT(offset == (int)b->tableOffset);
+
+ free(header);
+ header = h;
+ this->alloc = alloc;
+ compactionCounter = 0;
+}
+
+bool Data::valid() const
+{
+ if (header->tag != QJsonDocument::BinaryFormatTag || header->version != 1u)
+ return false;
+
+ bool res = false;
+ if (header->root()->is_object)
+ res = static_cast<Object *>(header->root())->isValid();
+ else
+ res = static_cast<Array *>(header->root())->isValid();
+
+ return res;
+}
+
+
+int Base::reserveSpace(uint dataSize, int posInTable, uint numItems, bool replace)
+{
+ Q_ASSERT(posInTable >= 0 && posInTable <= (int)length);
+
+ offset off = tableOffset;
+ // move table to new position
+ if (replace) {
+ memmove((char *)(table()) + dataSize, table(), length*sizeof(offset));
+ } else {
+ memmove((char *)(table() + posInTable + numItems) + dataSize, table() + posInTable, (length - posInTable)*sizeof(offset));
+ memmove((char *)(table()) + dataSize, table(), posInTable*sizeof(offset));
+ }
+ tableOffset += dataSize;
+ for (int i = 0; i < (int)numItems; ++i)
+ table()[posInTable + i] = off;
+ size += dataSize;
+ if (!replace) {
+ length += numItems;
+ size += numItems * sizeof(offset);
+ }
+ return off;
+}
+
+void Base::removeItems(int pos, int numItems)
+{
+ Q_ASSERT(pos >= 0 && pos <= (int)length);
+ if (pos + numItems < (int)length)
+ memmove(table() + pos, table() + pos + numItems, (length - pos - numItems)*sizeof(offset));
+ length -= numItems;
+}
+
+int Object::indexOf(const QString &key, bool *exists)
+{
+ int min = 0;
+ int n = length;
+ while (n > 0) {
+ int half = n >> 1;
+ int middle = min + half;
+ if (*entryAt(middle) >= key) {
+ n = half;
+ } else {
+ min = middle + 1;
+ n -= half + 1;
+ }
+ }
+ if (min < (int)length && *entryAt(min) == key) {
+ *exists = true;
+ return min;
+ }
+ *exists = false;
+ return min;
+}
+
+bool Object::isValid() const
+{
+ if (tableOffset + length*sizeof(offset) > size)
+ return false;
+
+ for (uint i = 0; i < length; ++i) {
+ offset entryOffset = table()[i];
+ if (entryOffset + sizeof(Entry) >= tableOffset)
+ return false;
+ Entry *e = entryAt(i);
+ int s = e->size();
+ if (table()[i] + s > tableOffset)
+ return false;
+ if (!e->value.isValid(this))
+ return false;
+ }
+ return true;
+}
+
+
+
+bool Array::isValid() const
+{
+ if (tableOffset + length*sizeof(offset) > size)
+ return false;
+
+ for (uint i = 0; i < length; ++i) {
+ if (!at(i).isValid(this))
+ return false;
+ }
+ return true;
+}
+
+
+bool Entry::operator ==(const QString &key) const
+{
+ if (value.latinKey)
+ return (shallowLatin1Key() == key);
+ else
+ 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) {
+ if (other.value.latinKey)
+ return shallowLatin1Key() == other.shallowLatin1Key();
+ return shallowLatin1Key() == other.shallowKey();
+ } else if (other.value.latinKey) {
+ return shallowKey() == other.shallowLatin1Key();
+ }
+ return shallowKey() == other.shallowKey();
+}
+
+bool Entry::operator >=(const Entry &other) const
+{
+ if (value.latinKey) {
+ if (other.value.latinKey)
+ return shallowLatin1Key() >= other.shallowLatin1Key();
+ return shallowLatin1Key() >= other.shallowKey();
+ } else if (other.value.latinKey) {
+ return shallowKey() >= other.shallowLatin1Key();
+ }
+ return shallowKey() >= other.shallowKey();
+}
+
+
+int Value::usedStorage(const Base *b) const
+{
+ int s = 0;
+ switch (type) {
+ case QJsonValue::Double:
+ if (latinOrIntValue)
+ break;
+ s = sizeof(double);
+ break;
+ case QJsonValue::String: {
+ char *d = data(b);
+ if (latinOrIntValue)
+ s = sizeof(ushort) + *(ushort *)d;
+ else
+ s = sizeof(int) + sizeof(ushort)*(*(int *)d);
+ break;
+ }
+ case QJsonValue::Array:
+ case QJsonValue::Object:
+ s = base(b)->size;
+ break;
+ case QJsonValue::Null:
+ case QJsonValue::Bool:
+ default:
+ break;
+ }
+ return alignedSize(s);
+}
+
+bool Value::isValid(const Base *b) const
+{
+ int offset = 0;
+ switch (type) {
+ case QJsonValue::Double:
+ if (latinOrIntValue)
+ break;
+ // fall through
+ case QJsonValue::String:
+ case QJsonValue::Array:
+ case QJsonValue::Object:
+ offset = value;
+ break;
+ case QJsonValue::Null:
+ case QJsonValue::Bool:
+ default:
+ break;
+ }
+
+ if (!offset)
+ return true;
+ if (offset + sizeof(uint) > b->tableOffset)
+ return false;
+
+ int s = usedStorage(b);
+ if (!s)
+ return true;
+ if (s < 0 || offset + s > (int)b->tableOffset)
+ return false;
+ if (type == QJsonValue::Array)
+ return static_cast<Array *>(base(b))->isValid();
+ if (type == QJsonValue::Object)
+ return static_cast<Object *>(base(b))->isValid();
+ return true;
+}
+
+/*!
+ \internal
+ */
+int Value::requiredStorage(const QJsonValue &v, bool *compressed)
+{
+ *compressed = false;
+ switch (v.t) {
+ case QJsonValue::Double:
+ if (QJsonPrivate::compressedNumber(v.dbl) != INT_MAX) {
+ *compressed = true;
+ return 0;
+ }
+ return sizeof(double);
+ case QJsonValue::String: {
+ QString s = v.toString();
+ *compressed = QJsonPrivate::useCompressed(s);
+ return QJsonPrivate::qStringSize(s, *compressed);
+ }
+ case QJsonValue::Array:
+ case QJsonValue::Object:
+ return v.base ? v.base->size : sizeof(QJsonPrivate::Base);
+ case QJsonValue::Undefined:
+ case QJsonValue::Null:
+ case QJsonValue::Bool:
+ break;
+ }
+ return 0;
+}
+
+/*!
+ \internal
+ */
+uint Value::valueToStore(const QJsonValue &v, uint offset)
+{
+ switch (v.t) {
+ case QJsonValue::Undefined:
+ case QJsonValue::Null:
+ break;
+ case QJsonValue::Bool:
+ return v.b;
+ case QJsonValue::Double: {
+ int c = QJsonPrivate::compressedNumber(v.dbl);
+ if (c != INT_MAX)
+ return c;
+ }
+ // fall through
+ case QJsonValue::String:
+ case QJsonValue::Array:
+ case QJsonValue::Object:
+ return offset;
+ }
+ return 0;
+}
+
+/*!
+ \internal
+ */
+void Value::copyData(const QJsonValue &v, char *dest, bool compressed)
+{
+ switch (v.t) {
+ case QJsonValue::Double:
+ if (!compressed) {
+ qToLittleEndian(v.ui, (uchar *)dest);
+ }
+ break;
+ case QJsonValue::String: {
+ QString str = v.toString();
+ QJsonPrivate::copyString(dest, str, compressed);
+ break;
+ }
+ case QJsonValue::Array:
+ case QJsonValue::Object: {
+ const QJsonPrivate::Base *b = v.base;
+ if (!b)
+ b = (v.t == QJsonValue::Array ? &emptyArray : &emptyObject);
+ memcpy(dest, b, b->size);
+ break;
+ }
+ default:
+ break;
+ }
+}
+
+} // namespace QJsonPrivate
+
+QT_END_NAMESPACE
diff --git a/src/corelib/json/qjson_p.h b/src/corelib/json/qjson_p.h
new file mode 100644
index 0000000000..55c37988e2
--- /dev/null
+++ b/src/corelib/json/qjson_p.h
@@ -0,0 +1,760 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QJSON_P_H
+#define QJSON_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <qjsonobject.h>
+#include <qjsonvalue.h>
+#include <qjsondocument.h>
+#include <qjsonarray.h>
+#include <qatomic.h>
+#include <qstring.h>
+#include <qendian.h>
+
+#include <limits.h>
+
+QT_BEGIN_NAMESPACE
+
+/*
+ This defines a binary data structure for Json data. The data structure is optimised for fast reading
+ and minimum allocations. The whole data structure can be mmap'ed and used directly.
+
+ In most cases the binary structure is not as space efficient as a utf8 encoded text representation, but
+ much faster to access.
+
+ The size requirements are:
+
+ String:
+ Latin1 data: 2 bytes header + string.length()
+ Full Unicode: 4 bytes header + 2*(string.length())
+
+ Values: 4 bytes + size of data (size can be 0 for some data)
+ bool: 0 bytes
+ double: 8 bytes (0 if integer with less than 27bits)
+ string: see above
+ array: size of array
+ object: size of object
+ Array: 12 bytes + 4*length + size of Value data
+ Object: 12 bytes + 8*length + size of Key Strings + size of Value data
+
+ For an example such as
+
+ { // object: 12 + 5*8 = 52
+ "firstName": "John", // key 12, value 8 = 20
+ "lastName" : "Smith", // key 12, value 8 = 20
+ "age" : 25, // key 8, value 0 = 8
+ "address" : // key 12, object below = 140
+ { // object: 12 + 4*8
+ "streetAddress": "21 2nd Street", // key 16, value 16
+ "city" : "New York", // key 8, value 12
+ "state" : "NY", // key 8, value 4
+ "postalCode" : "10021" // key 12, value 8
+ }, // object total: 128
+ "phoneNumber": // key: 16, value array below = 172
+ [ // array: 12 + 2*4 + values below: 156
+ { // object 12 + 2*8
+ "type" : "home", // key 8, value 8
+ "number": "212 555-1234" // key 8, value 16
+ }, // object total: 68
+ { // object 12 + 2*8
+ "type" : "fax", // key 8, value 8
+ "number": "646 555-4567" // key 8, value 16
+ } // object total: 68
+ ] // array total: 156
+ } // great total: 412 bytes
+
+ The uncompressed text file used roughly 500 bytes, so in this case we end up using about
+ the same space as the text representation.
+
+ Other measurements have shown a slightly bigger binary size than a compact text
+ representation where all possible whitespace was stripped out.
+*/
+namespace QJsonPrivate {
+
+class Array;
+class Object;
+class Value;
+class Entry;
+
+template<typename T>
+class q_littleendian
+{
+public:
+ T val;
+
+ q_littleendian &operator =(T i) { val = qToLittleEndian(i); return *this; }
+ operator T() const { return qFromLittleEndian(val); }
+
+ bool operator ==(T i) { return qFromLittleEndian(val) == i; }
+ bool operator !=(T i) { return qFromLittleEndian(val) != i; }
+ bool operator ==(q_littleendian<T> i) { return val == i.val; }
+ bool operator !=(q_littleendian<T> i) { return val != i.val; }
+ bool operator <(T i) { return qFromLittleEndian(val) < i; }
+ bool operator >(T i) { return qFromLittleEndian(val) > i; }
+ bool operator <=(T i) { return qFromLittleEndian(val) <= i; }
+ bool operator >=(T i) { return qFromLittleEndian(val) >= i; }
+ q_littleendian &operator +=(T i) {
+ val = qToLittleEndian(qFromLittleEndian(val) + i);
+ return *this;
+ }
+};
+
+typedef q_littleendian<short> qle_short;
+typedef q_littleendian<unsigned short> qle_ushort;
+typedef q_littleendian<int> qle_int;
+typedef q_littleendian<unsigned int> qle_uint;
+
+template<int pos, int width>
+class qle_bitfield
+{
+public:
+ uint val;
+
+ enum {
+ mask = ((1u << width) - 1) << pos
+ };
+
+ void operator =(uint t) {
+ uint i = qFromLittleEndian(val);
+ i &= ~mask;
+ i |= t << pos;
+ val = qToLittleEndian(i);
+ }
+ operator uint() const {
+ uint t = qFromLittleEndian(val);
+ t &= mask;
+ t >>= pos;
+ return t;
+ }
+ bool operator !() const {
+ return !operator uint();
+ }
+
+ bool operator ==(uint t) { return uint(*this) == t; }
+ bool operator !=(uint t) { return uint(*this) != t; }
+ bool operator <(uint t) { return uint(*this) < t; }
+ bool operator >(uint t) { return uint(*this) > t; }
+ bool operator <=(uint t) { return uint(*this) <= t; }
+ bool operator >=(uint t) { return uint(*this) >= t; }
+ qle_bitfield &operator +=(uint i) {
+ *this = (uint(*this) + i);
+ return *this;
+ }
+ qle_bitfield &operator -=(uint i) {
+ *this = (uint(*this) - i);
+ return *this;
+ }
+};
+
+template<int pos, int width>
+class qle_signedbitfield
+{
+public:
+ uint val;
+
+ enum {
+ mask = ((1u << width) - 1) << pos
+ };
+
+ void operator =(int t) {
+ uint i = qFromLittleEndian(val);
+ i &= ~mask;
+ i |= t << pos;
+ val = qToLittleEndian(i);
+ }
+ operator int() const {
+ uint i = qFromLittleEndian(val);
+ i <<= 32 - width - pos;
+ int t = (int) i;
+ t >>= pos;
+ return t;
+ }
+ bool operator !() const {
+ return !operator int();
+ }
+
+ bool operator ==(int t) { return int(*this) == t; }
+ bool operator !=(int t) { return int(*this) != t; }
+ bool operator <(int t) { return int(*this) < t; }
+ bool operator >(int t) { return int(*this) > t; }
+ bool operator <=(int t) { return int(*this) <= t; }
+ bool operator >=(int t) { return int(*this) >= t; }
+ qle_signedbitfield &operator +=(int i) {
+ *this = (int(*this) + i);
+ return *this;
+ }
+ qle_signedbitfield &operator -=(int i) {
+ *this = (int(*this) - i);
+ return *this;
+ }
+};
+
+typedef qle_uint offset;
+
+// round the size up to the next 4 byte boundary
+inline int alignedSize(int size) { return (size + 3) & ~3; }
+
+static inline bool useCompressed(const QString &s)
+{
+ if (s.length() >= 0x8000)
+ return false;
+ const ushort *uc = (const ushort *)s.constData();
+ const ushort *e = uc + s.length();
+ while (uc < e) {
+ if (*uc > 0xff)
+ return false;
+ ++uc;
+ }
+ return true;
+}
+
+static inline int qStringSize(const QString &string, bool compress)
+{
+ int l = 2 + string.length();
+ if (!compress)
+ l *= 2;
+ return alignedSize(l);
+}
+
+// returns INT_MAX if it can't compress it into 28 bits
+static inline int compressedNumber(double d)
+{
+ // this relies on details of how ieee floats are represented
+ const int exponent_off = 52;
+ const quint64 fraction_mask = 0x000fffffffffffffull;
+ const quint64 exponent_mask = 0x7ff0000000000000ull;
+
+ quint64 val;
+ memcpy (&val, &d, sizeof(double));
+ int exp = (int)((val & exponent_mask) >> exponent_off) - 1023;
+ if (exp < 0 || exp > 25)
+ return INT_MAX;
+
+ quint64 non_int = val & (fraction_mask >> exp);
+ if (non_int)
+ return INT_MAX;
+
+ bool neg = (val >> 63);
+ val &= fraction_mask;
+ val |= ((quint64)1 << 52);
+ int res = (int)(val >> (52 - exp));
+ return neg ? -res : res;
+}
+
+class Latin1String;
+
+class String
+{
+public:
+ String(const char *data) { d = (Data *)data; }
+
+ struct Data {
+ qle_int length;
+ qle_ushort utf16[1];
+ };
+
+ Data *d;
+
+ inline String &operator=(const QString &str)
+ {
+ d->length = str.length();
+#if Q_BYTE_ORDER == Q_BIG_ENDIAN
+ for (int i = 0; i < str.length(); ++i)
+ d->utf16[i] = uc[i];
+#else
+ memcpy(d->utf16, str.unicode(), str.length()*sizeof(ushort));
+#endif
+ if (str.length() & 1)
+ d->utf16[str.length()] = 0;
+ return *this;
+ }
+
+ inline bool operator ==(const QString &str) const {
+ int slen = str.length();
+ int l = d->length;
+ if (slen != l)
+ return false;
+ const ushort *s = (const ushort *)str.constData();
+ const qle_ushort *a = d->utf16;
+ const ushort *b = s;
+ while (l-- && *a == *b)
+ a++,b++;
+ return (l == -1);
+ }
+ inline bool operator !=(const QString &str) const {
+ return !operator ==(str);
+ }
+ inline bool operator >=(const QString &str) const {
+ // ###
+ return toString() >= str;
+ }
+
+ inline bool operator<(const Latin1String &str) const;
+ inline bool operator>=(const Latin1String &str) const { return !operator <(str); }
+ inline bool operator ==(const Latin1String &str) const;
+
+ inline bool operator ==(const String &str) const {
+ if (d->length != str.d->length)
+ return false;
+ return !memcmp(d->utf16, str.d->utf16, d->length*sizeof(ushort));
+ }
+ inline bool operator<(const String &other) const;
+ inline bool operator >=(const String &other) const { return other < *this; }
+
+ inline QString toString() const {
+#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
+ return QString((QChar *)d->utf16, d->length);
+#else
+ int l = d->length;
+ QString str(l, Qt::Uninitialized);
+ QChar *ch = str.data();
+ for (int i = 0; i < l; ++i)
+ ch[i] = d->utf16[i];
+ return str;
+#endif
+ }
+
+};
+
+class Latin1String
+{
+public:
+ Latin1String(const char *data) { d = (Data *)data; }
+
+ struct Data {
+ qle_short length;
+ char latin1[1];
+ };
+ Data *d;
+
+ inline Latin1String &operator=(const QString &str)
+ {
+ d->length = str.length();
+ uchar *l = (uchar *)d->latin1;
+ const ushort *uc = (const ushort *)str.unicode();
+ for (int i = 0; i < str.length(); ++i)
+ *l++ = uc[i];
+ while ((quintptr)l & 0x3)
+ *l++ = 0;
+ return *this;
+ }
+
+ inline bool operator ==(const QString &str) const {
+ return QLatin1String(d->latin1, d->length) == str;
+ }
+ inline bool operator !=(const QString &str) const {
+ return !operator ==(str);
+ }
+ inline bool operator >=(const QString &str) const {
+ return QLatin1String(d->latin1, d->length) >= str;
+ }
+
+ inline bool operator ==(const Latin1String &str) const {
+ return d->length == str.d->length && !strcmp(d->latin1, str.d->latin1);
+ }
+ inline bool operator >=(const Latin1String &str) const {
+ int l = qMin(d->length, str.d->length);
+ int val = strncmp(d->latin1, str.d->latin1, l);
+ if (!val)
+ val = d->length - str.d->length;
+ return val >= 0;
+ }
+
+ inline bool operator ==(const String &str) const {
+ return (str == *this);
+ }
+ inline bool operator >=(const String &str) const {
+ return (str < *this);
+ }
+
+ inline QString toString() const {
+ return QString::fromLatin1(d->latin1, d->length);
+ }
+};
+
+inline bool String::operator ==(const Latin1String &str) const
+{
+ if ((int)d->length != (int)str.d->length)
+ return false;
+ const qle_ushort *uc = d->utf16;
+ const qle_ushort *e = uc + d->length;
+ const uchar *c = (uchar *)str.d->latin1;
+
+ while (uc < e) {
+ if (*uc != *c)
+ return false;
+ ++uc;
+ ++c;
+ }
+ return true;
+}
+
+inline bool String::operator <(const String &other) const
+{
+ int alen = d->length;
+ int blen = other.d->length;
+ int l = qMin(alen, blen);
+ qle_ushort *a = d->utf16;
+ qle_ushort *b = other.d->utf16;
+
+ while (l-- && *a == *b)
+ a++,b++;
+ if (l==-1)
+ return (alen < blen);
+ return (ushort)*a - (ushort)*b;
+}
+
+inline bool String::operator<(const Latin1String &str) const
+{
+ const uchar *c = (uchar *) str.d->latin1;
+ if (!c || *c == 0)
+ return false;
+
+ const qle_ushort *uc = d->utf16;
+ const qle_ushort *e = uc + qMin((int)d->length, (int)str.d->length);
+
+ while (uc < e) {
+ if (*uc != *c)
+ break;
+ ++uc;
+ ++c;
+ }
+ return (uc == e ? (int)d->length < (int)str.d->length : (ushort)*uc < *c);
+
+}
+
+static inline void copyString(char *dest, const QString &str, bool compress)
+{
+ if (compress) {
+ Latin1String string(dest);
+ string = str;
+ } else {
+ String string(dest);
+ string = str;
+ }
+}
+
+
+/*
+ Base is the base class for both Object and Array. Both classe work more or less the same way.
+ The class starts with a header (defined by the struct below), then followed by data (the data for
+ values in the Array case and Entry's (see below) for objects.
+
+ After the data a table follows (tableOffset points to it) containing Value objects for Arrays, and
+ offsets from the beginning of the object to Entry's in the case of Object.
+
+ Entry's in the Object's table are lexicographically sorted by key in the table(). This allows the usage
+ of a binary search over the keys in an Object.
+ */
+class Base
+{
+public:
+ qle_uint size;
+ union {
+ uint _dummy;
+ qle_bitfield<0, 1> is_object;
+ qle_bitfield<1, 31> length;
+ };
+ offset tableOffset;
+ // content follows here
+
+ inline bool isObject() const { return is_object; }
+ inline bool isArray() const { return !isObject(); }
+
+ inline offset *table() const { return (offset *) (((char *) this) + tableOffset); }
+
+ int reserveSpace(uint dataSize, int posInTable, uint numItems, bool replace);
+ void removeItems(int pos, int numItems);
+};
+
+class Object : public Base
+{
+public:
+ Entry *entryAt(int i) const {
+ return reinterpret_cast<Entry *>(((char *)this) + table()[i]);
+ }
+ int indexOf(const QString &key, bool *exists);
+
+ bool isValid() const;
+};
+
+
+class Array : public Base
+{
+public:
+ inline Value at(int i) const;
+ inline Value &operator [](int i);
+
+ bool isValid() const;
+};
+
+
+class Value
+{
+public:
+ union {
+ uint _dummy;
+ qle_bitfield<0, 3> type;
+ qle_bitfield<3, 1> latinOrIntValue;
+ qle_bitfield<4, 1> latinKey;
+ qle_bitfield<5, 27> value;
+ qle_signedbitfield<5, 27> int_value;
+ };
+
+ inline char *data(const Base *b) const { return ((char *)b) + value; }
+ int usedStorage(const Base *b) const;
+
+ bool toBoolean() const;
+ double toDouble(const Base *b) const;
+ QString toString(const Base *b) const;
+ String asString(const Base *b) const;
+ Latin1String asLatin1String(const Base *b) const;
+ Base *base(const Base *b) const;
+
+ bool isValid(const Base *b) const;
+
+ static int requiredStorage(const QJsonValue &v, bool *compressed);
+ static uint valueToStore(const QJsonValue &v, uint offset);
+ static void copyData(const QJsonValue &v, char *dest, bool compressed);
+};
+
+inline Value Array::at(int i) const
+{
+ return *(Value *) (table() + i);
+}
+
+inline Value &Array::operator [](int i)
+{
+ return *(Value *) (table() + i);
+}
+
+
+
+class Entry {
+public:
+ Value value;
+ // key
+ // value data follows key
+
+ int size() const {
+ int s = sizeof(Entry);
+ if (value.latinKey)
+ s += sizeof(ushort) + *(ushort *) ((const char *)this + sizeof(Entry));
+ else
+ s += sizeof(uint) + *(int *) ((const char *)this + sizeof(Entry));
+ return alignedSize(s);
+ }
+
+ int usedStorage(Base *b) const {
+ return size() + value.usedStorage(b);
+ }
+
+ String shallowKey() const
+ {
+ Q_ASSERT(!value.latinKey);
+ return String((const char *)this + sizeof(Entry));
+ }
+ Latin1String shallowLatin1Key() const
+ {
+ Q_ASSERT(value.latinKey);
+ return Latin1String((const char *)this + sizeof(Entry));
+ }
+ QString key() const
+ {
+ if (value.latinKey) {
+ return shallowLatin1Key().toString();
+ }
+ return shallowKey().toString();
+ }
+
+ bool operator ==(const QString &key) const;
+ inline bool operator !=(const QString &key) const { return !operator ==(key); }
+ bool operator >=(const QString &key) const;
+
+ bool operator ==(const Entry &other) const;
+ bool operator >=(const Entry &other) const;
+};
+
+inline bool operator <(const QString &key, const Entry &e)
+{ return e >= key; }
+
+class Header {
+public:
+ qle_uint tag; // 'qbjs'
+ qle_uint version; // 1
+ Base *root() { return (Base *)(this + 1); }
+};
+
+
+inline bool Value::toBoolean() const
+{
+ Q_ASSERT(type == QJsonValue::Bool);
+ return value != 0;
+}
+
+inline double Value::toDouble(const Base *b) const
+{
+ Q_ASSERT(type == QJsonValue::Double);
+ if (latinOrIntValue)
+ return int_value;
+
+ quint64 i = qFromLittleEndian<quint64>((const uchar *)b + value);
+ double d;
+ memcpy(&d, &i, sizeof(double));
+ return d;
+}
+
+inline String Value::asString(const Base *b) const
+{
+ Q_ASSERT(type == QJsonValue::String && !latinOrIntValue);
+ return String(data(b));
+}
+
+inline Latin1String Value::asLatin1String(const Base *b) const
+{
+ Q_ASSERT(type == QJsonValue::String && latinOrIntValue);
+ return Latin1String(data(b));
+}
+
+inline QString Value::toString(const Base *b) const
+{
+ if (latinOrIntValue)
+ return asLatin1String(b).toString();
+ else
+ return asString(b).toString();
+}
+
+inline Base *Value::base(const Base *b) const
+{
+ Q_ASSERT(type == QJsonValue::Array || type == QJsonValue::Object);
+ return reinterpret_cast<Base *>(data(b));
+}
+
+class Data {
+public:
+ enum Validation {
+ Unchecked,
+ Validated,
+ Invalid
+ };
+
+ QAtomicInt ref;
+ int alloc;
+ union {
+ char *rawData;
+ Header *header;
+ };
+ uint compactionCounter : 31;
+ uint ownsData : 1;
+
+ inline Data(char *raw, int a)
+ : alloc(a), rawData(raw), compactionCounter(0), ownsData(true)
+ {
+ }
+ inline Data(int reserved, QJsonValue::Type valueType)
+ : rawData(0), compactionCounter(0), ownsData(true)
+ {
+ Q_ASSERT(valueType == QJsonValue::Array || valueType == QJsonValue::Object);
+
+ alloc = sizeof(Header) + sizeof(Base) + reserved + sizeof(offset);
+ header = (Header *)malloc(alloc);
+ Q_CHECK_PTR(header);
+ header->tag = QJsonDocument::BinaryFormatTag;
+ header->version = 1;
+ Base *b = header->root();
+ b->size = sizeof(Base);
+ b->is_object = (valueType == QJsonValue::Object);
+ b->tableOffset = sizeof(Base);
+ b->length = 0;
+ }
+ inline ~Data()
+ { if (ownsData) free(rawData); }
+
+ uint offsetOf(const void *ptr) const { return (uint)(((char *)ptr - rawData)); }
+
+ QJsonObject toObject(Object *o) const
+ {
+ return QJsonObject(const_cast<Data *>(this), o);
+ }
+
+ QJsonArray toArray(Array *a) const
+ {
+ return QJsonArray(const_cast<Data *>(this), a);
+ }
+
+ Data *clone(Base *b, int reserve = 0)
+ {
+ int size = sizeof(Header) + b->size + reserve;
+ char *raw = (char *)malloc(size);
+ Q_CHECK_PTR(raw);
+ memcpy(raw + sizeof(Header), b, b->size);
+ Header *h = (Header *)raw;
+ h->tag = QJsonDocument::BinaryFormatTag;
+ h->version = 1;
+ Data *d = new Data(raw, size);
+ d->compactionCounter = (b == header->root()) ? compactionCounter : 0;
+ return d;
+ }
+
+ void compact();
+ bool valid() const;
+
+private:
+ Q_DISABLE_COPY(Data)
+};
+
+}
+
+QT_END_NAMESPACE
+
+#endif // QJSON_P_H
diff --git a/src/corelib/json/qjsonarray.cpp b/src/corelib/json/qjsonarray.cpp
new file mode 100644
index 0000000000..0eb1974147
--- /dev/null
+++ b/src/corelib/json/qjsonarray.cpp
@@ -0,0 +1,1014 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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 <qjsonobject.h>
+#include <qjsonvalue.h>
+#include <qjsonarray.h>
+#include <qjsonvalue.h>
+#include <qstringlist.h>
+#include <qdebug.h>
+
+#include "qjsonwriter_p.h"
+#include "qjson_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QJsonArray
+ \ingroup json
+ \reentrant
+ \since 5.0
+
+ \brief The QJsonArray class encapsulates a JSON array.
+
+ A JSON array is a list of values. The list can be manipulated by inserting and
+ removing QJsonValue's from the array.
+
+ A QJsonArray can be converted to and from a QVariantList. You can query the
+ number of entries with size(), insert(), and remove() entries from it
+ and iterate over its content using the standard C++ iterator pattern.
+
+ QJsonArray is an implicitly shared class and shares the data with the document
+ it has been created from as long as it is not being modified.
+
+ You can convert the array to and from text based JSON through QJsonDocument.
+*/
+
+/*!
+ Creates an empty array.
+ */
+QJsonArray::QJsonArray()
+ : d(0), a(0)
+{
+}
+
+/*!
+ \internal
+ */
+QJsonArray::QJsonArray(QJsonPrivate::Data *data, QJsonPrivate::Array *array)
+ : d(data), a(array)
+{
+ d->ref.ref();
+}
+
+/*!
+ Deletes the array.
+ */
+QJsonArray::~QJsonArray()
+{
+ if (d && !d->ref.deref())
+ delete d;
+}
+
+/*!
+ Creates a copy of \a other.
+
+ Since QJsonArray is implicitly shared, the copy is shallow
+ as long as the object doesn't get modified.
+ */
+QJsonArray::QJsonArray(const QJsonArray &other)
+{
+ d = other.d;
+ a = other.a;
+ if (d)
+ d->ref.ref();
+}
+
+/*!
+ Assigns \a other to this array.
+ */
+QJsonArray &QJsonArray::operator =(const QJsonArray &other)
+{
+ if (d != other.d) {
+ if (d && !d->ref.deref())
+ delete d;
+ d = other.d;
+ a = other.a;
+ if (d)
+ d->ref.ref();
+ }
+
+ return *this;
+}
+
+/*!
+ Converts the string list \a list to a QJsonArray.
+
+ The values in \a list will be converted to JSON values.
+
+ \sa toVariantList, QJsonValue::fromString
+ */
+QJsonArray QJsonArray::fromStringList(const QStringList &list)
+{
+ QJsonArray array;
+ for (QStringList::const_iterator it = list.constBegin(); it != list.constEnd(); ++it)
+ array.append(QJsonValue(*it));
+ return array;
+}
+
+/*!
+ Converts the variant list \a list to a QJsonArray.
+
+ The QVariant values in \a list will be converted to JSON values.
+
+ \sa toVariantList, QJsonValue::fromVariant
+ */
+QJsonArray QJsonArray::fromVariantList(const QVariantList &list)
+{
+ QJsonArray array;
+ for (QVariantList::const_iterator it = list.constBegin(); it != list.constEnd(); ++it)
+ array.append(QJsonValue::fromVariant(*it));
+ return array;
+}
+
+/*!
+ Converts this object to a QVariantList.
+
+ Returns the created map.
+ */
+QVariantList QJsonArray::toVariantList() const
+{
+ QVariantList list;
+
+ if (a) {
+ for (int i = 0; i < (int)a->length; ++i)
+ list.append(QJsonValue(d, a, a->at(i)).toVariant());
+ }
+ return list;
+}
+
+
+/*!
+ Returns the number of values stored in the array.
+ */
+int QJsonArray::size() const
+{
+ if (!d)
+ return 0;
+
+ return (int)a->length;
+}
+
+/*!
+ Returns \c true if the object is empty. This is the same as size() == 0.
+
+ \sa size
+ */
+bool QJsonArray::isEmpty() const
+{
+ if (!d)
+ return true;
+
+ return !a->length;
+}
+
+/*!
+ Returns a QJsonValue representing the value for index \a i.
+
+ The returned QJsonValue is \c Undefined, if \a i is out of bounds.
+
+ */
+QJsonValue QJsonArray::at(int i) const
+{
+ if (!a || i < 0 || i >= (int)a->length)
+ return QJsonValue(QJsonValue::Undefined);
+
+ return QJsonValue(d, a, a->at(i));
+}
+
+/*!
+ Returns the first value stored in the array.
+
+ Same as \c at(0).
+
+ \sa at
+ */
+QJsonValue QJsonArray::first() const
+{
+ return at(0);
+}
+
+/*!
+ Returns the last value stored in the array.
+
+ Same as \c{at(size() - 1)}.
+
+ \sa at
+ */
+QJsonValue QJsonArray::last() const
+{
+ return at(a ? (a->length - 1) : 0);
+}
+
+/*!
+ Inserts \a value at the beginning of the array.
+
+ This is the same as \c{insert(0, \a value)}.
+
+ \sa append(), insert()
+ */
+void QJsonArray::prepend(const QJsonValue &value)
+{
+ insert(0, value);
+}
+
+/*!
+ Inserts \a value at the end of the array.
+
+ \sa prepend(), insert()
+ */
+void QJsonArray::append(const QJsonValue &value)
+{
+ insert(a ? (int)a->length : 0, value);
+}
+
+/*!
+ Removes the value at index position \a i. \a i must be a valid
+ index position in the array (i.e., \c{0 <= \a i < size()}).
+
+ \sa insert(), replace()
+ */
+void QJsonArray::removeAt(int i)
+{
+ if (!a || i < 0 || i >= (int)a->length)
+ return;
+
+ detach();
+ a->removeItems(i, 1);
+ ++d->compactionCounter;
+ if (d->compactionCounter > 32 && d->compactionCounter >= (int)a->length/2)
+ compact();
+}
+
+/*! \fn void QJsonArray::removeFirst()
+
+ Removes the first item in the array. Calling this function is
+ equivalent to calling \c{removeAt(0)}. The array must not be empty. If
+ the array can be empty, call isEmpty() before calling this
+ function.
+
+ \sa removeAt(), takeFirst()
+*/
+
+/*! \fn void QJsonArray::removeLast()
+
+ Removes the last item in the array. Calling this function is
+ equivalent to calling \c{removeAt(size() - 1)}. The array must not be
+ empty. If the array can be empty, call isEmpty() before calling
+ this function.
+
+ \sa removeAt(), takeLast()
+*/
+
+/*!
+ Removes the item at index position \a i and returns it. \a i must
+ be a valid index position in the array (i.e., \c{0 <= \a i < size()}).
+
+ If you don't use the return value, removeAt() is more efficient.
+
+ \sa removeAt()
+ */
+QJsonValue QJsonArray::takeAt(int i)
+{
+ if (!a || i < 0 || i >= (int)a->length)
+ return QJsonValue(QJsonValue::Undefined);
+
+ detach();
+
+ QJsonValue v(d, a, a->at(i));
+ v.detach();
+
+ removeAt(i);
+
+ return v;
+}
+
+/*!
+ Inserts \a value at index position \a i in the array. If \a i
+ is \c 0, the value is prepended to the array. If \a i is size(), the
+ value is appended to the array.
+
+ \sa append(), prepend(), replace(), removeAt()
+ */
+void QJsonArray::insert(int i, const QJsonValue &value)
+{
+ Q_ASSERT (i >= 0 && i <= (a ? (int)a->length : 0));
+
+ bool compressed;
+ int valueSize = QJsonPrivate::Value::requiredStorage(value, &compressed);
+
+ detach(valueSize + sizeof(QJsonPrivate::Value));
+
+ if (!a->length)
+ a->tableOffset = sizeof(QJsonPrivate::Array);
+
+ int valueOffset = a->reserveSpace(valueSize, i, 1, false);
+ QJsonPrivate::Value &v = (*a)[i];
+ v.type = (value.t == QJsonValue::Undefined ? QJsonValue::Null : value.t);
+ v.latinOrIntValue = compressed;
+ v.latinKey = false;
+ v.value = QJsonPrivate::Value::valueToStore(value, valueOffset);
+ if (valueSize)
+ QJsonPrivate::Value::copyData(value, (char *)a + valueOffset, compressed);
+}
+
+/*!
+ Replaces the item at index position \a i with \a value. \a i must
+ be a valid index position in the array (i.e., \c{0 <= \a i < size()}).
+
+ \sa operator[](), removeAt()
+ */
+void QJsonArray::replace(int i, const QJsonValue &value)
+{
+ Q_ASSERT (a && i >= 0 && i < (int)(a->length));
+
+ bool compressed;
+ int valueSize = QJsonPrivate::Value::requiredStorage(value, &compressed);
+
+ detach(valueSize);
+
+ if (!a->length)
+ a->tableOffset = sizeof(QJsonPrivate::Array);
+
+ int valueOffset = a->reserveSpace(valueSize, i, 1, true);
+ QJsonPrivate::Value &v = (*a)[i];
+ v.type = (value.t == QJsonValue::Undefined ? QJsonValue::Null : value.t);
+ v.latinOrIntValue = compressed;
+ v.latinKey = false;
+ v.value = QJsonPrivate::Value::valueToStore(value, valueOffset);
+ if (valueSize)
+ QJsonPrivate::Value::copyData(value, (char *)a + valueOffset, compressed);
+
+ ++d->compactionCounter;
+ if (d->compactionCounter > 32 && d->compactionCounter >= (int)a->length/2)
+ compact();
+}
+
+/*!
+ Returns \c true if the array contains an occurrence of \a value, otherwise \c false.
+
+ \sa count()
+ */
+bool QJsonArray::contains(const QJsonValue &value) const
+{
+ for (int i = 0; i < size(); i++) {
+ if (at(i) == value)
+ return true;
+ }
+ return false;
+}
+
+/*!
+ Returns the value at index position \a i as a modifiable reference.
+ \a i must be a valid index position in the array (i.e., \c{0 <= \a i <
+ size()}).
+
+ The return value is of type QJsonValueRef, a helper class for QJsonArray
+ and QJsonObject. When you get an object of type QJsonValueRef, you can
+ use it as if it were a reference to a QJsonValue. If you assign to it,
+ the assignment will apply to the character in the QJsonArray of QJsonObject
+ from which you got the reference.
+
+ \sa at(), value()
+ */
+QJsonValueRef QJsonArray::operator [](int i)
+{
+ Q_ASSERT(a && i >= 0 && i < (int)a->length);
+ return QJsonValueRef(this, i);
+}
+
+/*!
+ \overload
+
+ Same as at().
+ */
+QJsonValue QJsonArray::operator[](int i) const
+{
+ return at(i);
+}
+
+/*!
+ Returns \c true if this array is equal to \a other.
+ */
+bool QJsonArray::operator==(const QJsonArray &other) const
+{
+ if (a == other.a)
+ return true;
+
+ if (!a)
+ return !other.a->length;
+ if (!other.a)
+ return !a->length;
+ if (a->length != other.a->length)
+ return false;
+
+ for (int i = 0; i < (int)a->length; ++i) {
+ if (QJsonValue(d, a, a->at(i)) != QJsonValue(other.d, other.a, other.a->at(i)))
+ return false;
+ }
+ return true;
+}
+
+/*!
+ Returns \c true if this array is not equal to \a other.
+ */
+bool QJsonArray::operator!=(const QJsonArray &other) const
+{
+ return !(*this == other);
+}
+
+/*! \fn QJsonArray::iterator QJsonArray::begin()
+
+ Returns an \l{STL-style iterator} pointing to the first item in
+ the array.
+
+ \sa constBegin(), end()
+*/
+
+/*! \fn QJsonArray::const_iterator QJsonArray::begin() const
+
+ \overload
+*/
+
+/*! \fn QJsonArray::const_iterator QJsonArray::constBegin() const
+
+ Returns a const \l{STL-style iterator} pointing to the first item
+ in the array.
+
+ \sa begin(), constEnd()
+*/
+
+/*! \fn QJsonArray::iterator QJsonArray::end()
+
+ Returns an \l{STL-style iterator} pointing to the imaginary item
+ after the last item in the array.
+
+ \sa begin(), constEnd()
+*/
+
+/*! \fn const_iterator QJsonArray::end() const
+
+ \overload
+*/
+
+/*! \fn QJsonArray::const_iterator QJsonArray::constEnd() const
+
+ Returns a const \l{STL-style iterator} pointing to the imaginary
+ item after the last item in the array.
+
+ \sa constBegin(), end()
+*/
+
+/*! \fn void QJsonArray::push_back(const T &value)
+
+ This function is provided for STL compatibility. It is equivalent
+ to \l{QJsonArray::append()}{append(\a value)}.
+*/
+
+/*! \fn void QJsonArray::push_front(const T &value)
+
+ This function is provided for STL compatibility. It is equivalent
+ to \l{QJsonArray::prepend()}{prepend(\a value)}.
+*/
+
+/*! \fn void QJsonArray::pop_front()
+
+ This function is provided for STL compatibility. It is equivalent
+ to removeFirst(). The array must not be empty. If the array can be
+ empty, call isEmpty() before calling this function.
+*/
+
+/*! \fn void QJsonArray::pop_back()
+
+ This function is provided for STL compatibility. It is equivalent
+ to removeLast(). The array must not be empty. If the array can be
+ empty, call isEmpty() before calling this function.
+*/
+
+/*! \fn bool QJsonArray::empty() const
+
+ This function is provided for STL compatibility. It is equivalent
+ to isEmpty() and returns \c true if the array is empty.
+*/
+
+/*! \class QJsonArray::iterator
+ \brief The QJsonArray::iterator class provides an STL-style non-const iterator for QJsonArray.
+
+ QJsonArray::iterator allows you to iterate over a QJsonArray
+ and to modify the array item associated with the
+ iterator. If you want to iterate over a const QJsonArray, use
+ QJsonArray::const_iterator instead. It is generally a good practice to
+ use QJsonArray::const_iterator on a non-const QJsonArray as well, unless
+ you need to change the QJsonArray through the iterator. Const
+ iterators are slightly faster and improves code readability.
+
+ The default QJsonArray::iterator constructor creates an uninitialized
+ iterator. You must initialize it using a QJsonArray function like
+ QJsonArray::begin(), QJsonArray::end(), or QJsonArray::insert() before you can
+ start iterating.
+
+ Most QJsonArray functions accept an integer index rather than an
+ iterator. For that reason, iterators are rarely useful in
+ connection with QJsonArray. One place where STL-style iterators do
+ make sense is as arguments to \l{generic algorithms}.
+
+ Multiple iterators can be used on the same array. However, be
+ aware that any non-const function call performed on the QJsonArray
+ will render all existing iterators undefined.
+
+ \sa QJsonArray::const_iterator
+*/
+
+/*! \typedef QJsonArray::iterator::iterator_category
+
+ A synonym for \i {std::random_access_iterator_tag} indicating
+ this iterator is a random access iterator.
+*/
+
+/*! \typedef QJsonArray::iterator::difference_type
+
+ \internal
+*/
+
+/*! \typedef QJsonArray::iterator::value_type
+
+ \internal
+*/
+
+/*! \typedef QJsonArray::iterator::reference
+
+ \internal
+*/
+
+/*! \fn QJsonArray::iterator::iterator()
+
+ Constructs an uninitialized iterator.
+
+ Functions like operator*() and operator++() should not be called
+ on an uninitialized iterator. Use operator=() to assign a value
+ to it before using it.
+
+ \sa QJsonArray::begin() QJsonArray::end()
+*/
+
+/*! \fn QJsonArray::iterator::iterator(const iterator &other)
+
+ Constructs a copy of \a other.
+*/
+
+/*! \fn QJsonValueRef QJsonArray::iterator::operator*() const
+
+ Returns a modifiable reference to the current item.
+
+ You can change the value of an item by using operator*() on the
+ left side of an assignment.
+
+ The return value is of type QJsonValueRef, a helper class for QJsonArray
+ and QJsonObject. When you get an object of type QJsonValueRef, you can
+ use it as if it were a reference to a QJsonValue. If you assign to it,
+ the assignment will apply to the character in the QJsonArray of QJsonObject
+ from which you got the reference.
+*/
+
+/*! \fn QJsonValueRef QJsonArray::iterator::operator[](int j) const
+
+ Returns a modifiable reference to the item at position \c{*this + j}.
+
+ This function is provided to make QJsonArray iterators behave like C++
+ pointers.
+
+ The return value is of type QJsonValueRef, a helper class for QJsonArray
+ and QJsonObject. When you get an object of type QJsonValueRef, you can
+ use it as if it were a reference to a QJsonValue. If you assign to it,
+ the assignment will apply to the character in the QJsonArray of QJsonObject
+ from which you got the reference.
+
+ \sa operator+()
+*/
+
+/*!
+ \fn bool QJsonArray::iterator::operator==(const iterator &other) const
+ \fn bool QJsonArray::iterator::operator==(const const_iterator &other) const
+
+ Returns \c true if \a other points to the same item as this
+ iterator; otherwise returns \c false.
+
+ \sa operator!=()
+*/
+
+/*!
+ \fn bool QJsonArray::iterator::operator!=(const iterator &other) const
+ \fn bool QJsonArray::iterator::operator!=(const const_iterator &other) const
+
+ Returns \c true if \a other points to a different item than this
+ iterator; otherwise returns \c false.
+
+ \sa operator==()
+*/
+
+/*!
+ \fn bool QJsonArray::iterator::operator<(const iterator& other) const
+ \fn bool QJsonArray::iterator::operator<(const const_iterator& other) const
+
+ Returns \c true if the item pointed to by this iterator is less than
+ the item pointed to by the \a other iterator.
+*/
+
+/*!
+ \fn bool QJsonArray::iterator::operator<=(const iterator& other) const
+ \fn bool QJsonArray::iterator::operator<=(const const_iterator& other) const
+
+ Returns \c true if the item pointed to by this iterator is less than
+ or equal to the item pointed to by the \a other iterator.
+*/
+
+/*!
+ \fn bool QJsonArray::iterator::operator>(const iterator& other) const
+ \fn bool QJsonArray::iterator::operator>(const const_iterator& other) const
+
+ Returns \c true if the item pointed to by this iterator is greater
+ than the item pointed to by the \a other iterator.
+*/
+
+/*!
+ \fn bool QJsonArray::iterator::operator>=(const iterator& other) const
+ \fn bool QJsonArray::iterator::operator>=(const const_iterator& other) const
+
+ Returns \c true if the item pointed to by this iterator is greater
+ than or equal to the item pointed to by the \a other iterator.
+*/
+
+/*! \fn QJsonArray::iterator &QJsonArray::iterator::operator++()
+
+ The prefix ++ operator, \c{++it}, advances the iterator to the
+ next item in the array and returns an iterator to the new current
+ item.
+
+ Calling this function on QJsonArray::end() leads to undefined results.
+
+ \sa operator--()
+*/
+
+/*! \fn QJsonArray::iterator QJsonArray::iterator::operator++(int)
+
+ \overload
+
+ The postfix ++ operator, \c{it++}, advances the iterator to the
+ next item in the array and returns an iterator to the previously
+ current item.
+*/
+
+/*! \fn QJsonArray::iterator &QJsonArray::iterator::operator--()
+
+ The prefix -- operator, \c{--it}, makes the preceding item
+ current and returns an iterator to the new current item.
+
+ Calling this function on QJsonArray::begin() leads to undefined results.
+
+ \sa operator++()
+*/
+
+/*! \fn QJsonArray::iterator QJsonArray::iterator::operator--(int)
+
+ \overload
+
+ The postfix -- operator, \c{it--}, makes the preceding item
+ current and returns an iterator to the previously current item.
+*/
+
+/*! \fn QJsonArray::iterator &QJsonArray::iterator::operator+=(int j)
+
+ Advances the iterator by \a j items. If \a j is negative, the
+ iterator goes backward.
+
+ \sa operator-=(), operator+()
+*/
+
+/*! \fn QJsonArray::iterator &QJsonArray::iterator::operator-=(int j)
+
+ Makes the iterator go back by \a j items. If \a j is negative,
+ the iterator goes forward.
+
+ \sa operator+=(), operator-()
+*/
+
+/*! \fn QJsonArray::iterator QJsonArray::iterator::operator+(int j) const
+
+ Returns an iterator to the item at \a j positions forward from
+ this iterator. If \a j is negative, the iterator goes backward.
+
+ \sa operator-(), operator+=()
+*/
+
+/*! \fn QJsonArray::iterator QJsonArray::iterator::operator-(int j) const
+
+ Returns an iterator to the item at \a j positions backward from
+ this iterator. If \a j is negative, the iterator goes forward.
+
+ \sa operator+(), operator-=()
+*/
+
+/*! \fn int QJsonArray::iterator::operator-(iterator other) const
+
+ Returns the number of items between the item pointed to by \a
+ other and the item pointed to by this iterator.
+*/
+
+/*! \class QJsonArray::const_iterator
+ \brief The QJsonArray::const_iterator class provides an STL-style const iterator for QJsonArray.
+
+ QJsonArray::const_iterator allows you to iterate over a
+ QJsonArray. If you want to modify the QJsonArray as
+ you iterate over it, use QJsonArray::iterator instead. It is generally a
+ good practice to use QJsonArray::const_iterator on a non-const QJsonArray
+ as well, unless you need to change the QJsonArray through the
+ iterator. Const iterators are slightly faster and improves
+ code readability.
+
+ The default QJsonArray::const_iterator constructor creates an
+ uninitialized iterator. You must initialize it using a QJsonArray
+ function like QJsonArray::constBegin(), QJsonArray::constEnd(), or
+ QJsonArray::insert() before you can start iterating.
+
+ Most QJsonArray functions accept an integer index rather than an
+ iterator. For that reason, iterators are rarely useful in
+ connection with QJsonArray. One place where STL-style iterators do
+ make sense is as arguments to \l{generic algorithms}.
+
+ Multiple iterators can be used on the same array. However, be
+ aware that any non-const function call performed on the QJsonArray
+ will render all existing iterators undefined.
+
+ \sa QJsonArray::iterator, QJsonArrayIterator
+*/
+
+/*! \fn QJsonArray::const_iterator::const_iterator()
+
+ Constructs an uninitialized iterator.
+
+ Functions like operator*() and operator++() should not be called
+ on an uninitialized iterator. Use operator=() to assign a value
+ to it before using it.
+
+ \sa QJsonArray::constBegin() QJsonArray::constEnd()
+*/
+
+/*! \typedef QJsonArray::const_iterator::iterator_category
+
+ A synonym for \i {std::random_access_iterator_tag} indicating
+ this iterator is a random access iterator.
+*/
+
+/*! \typedef QJsonArray::const_iterator::difference_type
+
+ \internal
+*/
+
+/*! \typedef QJsonArray::const_iterator::value_type
+
+ \internal
+*/
+
+/*! \typedef QJsonArray::const_iterator::reference
+
+ \internal
+*/
+
+/*! \fn QJsonArray::const_iterator::const_iterator(const const_iterator &other)
+
+ Constructs a copy of \a other.
+*/
+
+/*! \fn QJsonArray::const_iterator::const_iterator(const iterator &other)
+
+ Constructs a copy of \a other.
+*/
+
+/*! \fn QJsonValue QJsonArray::const_iterator::operator*() const
+
+ Returns the current item.
+*/
+
+/*! \fn QJsonValue QJsonArray::const_iterator::operator[](int j) const
+
+ Returns the item at position \c{*this + j}.
+
+ This function is provided to make QJsonArray iterators behave like C++
+ pointers.
+
+ \sa operator+()
+*/
+
+/*! \fn bool QJsonArray::const_iterator::operator==(const const_iterator &other) const
+
+ Returns \c true if \a other points to the same item as this
+ iterator; otherwise returns \c false.
+
+ \sa operator!=()
+*/
+
+/*! \fn bool QJsonArray::const_iterator::operator!=(const const_iterator &other) const
+
+ Returns \c true if \a other points to a different item than this
+ iterator; otherwise returns \c false.
+
+ \sa operator==()
+*/
+
+/*!
+ \fn bool QJsonArray::const_iterator::operator<(const const_iterator& other) const
+
+ Returns \c true if the item pointed to by this iterator is less than
+ the item pointed to by the \a other iterator.
+*/
+
+/*!
+ \fn bool QJsonArray::const_iterator::operator<=(const const_iterator& other) const
+
+ Returns \c true if the item pointed to by this iterator is less than
+ or equal to the item pointed to by the \a other iterator.
+*/
+
+/*!
+ \fn bool QJsonArray::const_iterator::operator>(const const_iterator& other) const
+
+ Returns \c true if the item pointed to by this iterator is greater
+ than the item pointed to by the \a other iterator.
+*/
+
+/*!
+ \fn bool QJsonArray::const_iterator::operator>=(const const_iterator& other) const
+
+ Returns \c true if the item pointed to by this iterator is greater
+ than or equal to the item pointed to by the \a other iterator.
+*/
+
+/*! \fn QJsonArray::const_iterator &QJsonArray::const_iterator::operator++()
+
+ The prefix ++ operator, \c{++it}, advances the iterator to the
+ next item in the array and returns an iterator to the new current
+ item.
+
+ Calling this function on QJsonArray::end() leads to undefined results.
+
+ \sa operator--()
+*/
+
+/*! \fn QJsonArray::const_iterator QJsonArray::const_iterator::operator++(int)
+
+ \overload
+
+ The postfix ++ operator, \c{it++}, advances the iterator to the
+ next item in the array and returns an iterator to the previously
+ current item.
+*/
+
+/*! \fn QJsonArray::const_iterator &QJsonArray::const_iterator::operator--()
+
+ The prefix -- operator, \c{--it}, makes the preceding item
+ current and returns an iterator to the new current item.
+
+ Calling this function on QJsonArray::begin() leads to undefined results.
+
+ \sa operator++()
+*/
+
+/*! \fn QJsonArray::const_iterator QJsonArray::const_iterator::operator--(int)
+
+ \overload
+
+ The postfix -- operator, \c{it--}, makes the preceding item
+ current and returns an iterator to the previously current item.
+*/
+
+/*! \fn QJsonArray::const_iterator &QJsonArray::const_iterator::operator+=(int j)
+
+ Advances the iterator by \a j items. If \a j is negative, the
+ iterator goes backward.
+
+ \sa operator-=(), operator+()
+*/
+
+/*! \fn QJsonArray::const_iterator &QJsonArray::const_iterator::operator-=(int j)
+
+ Makes the iterator go back by \a j items. If \a j is negative,
+ the iterator goes forward.
+
+ \sa operator+=(), operator-()
+*/
+
+/*! \fn QJsonArray::const_iterator QJsonArray::const_iterator::operator+(int j) const
+
+ Returns an iterator to the item at \a j positions forward from
+ this iterator. If \a j is negative, the iterator goes backward.
+
+ \sa operator-(), operator+=()
+*/
+
+/*! \fn QJsonArray::const_iterator QJsonArray::const_iterator::operator-(int j) const
+
+ Returns an iterator to the item at \a j positions backward from
+ this iterator. If \a j is negative, the iterator goes forward.
+
+ \sa operator+(), operator-=()
+*/
+
+/*! \fn int QJsonArray::const_iterator::operator-(const_iterator other) const
+
+ Returns the number of items between the item pointed to by \a
+ other and the item pointed to by this iterator.
+*/
+
+
+/*!
+ \internal
+ */
+void QJsonArray::detach(uint reserve)
+{
+ if (!d) {
+ d = new QJsonPrivate::Data(reserve, QJsonValue::Array);
+ a = static_cast<QJsonPrivate::Array *>(d->header->root());
+ d->ref.ref();
+ return;
+ }
+ if (reserve == 0 && d->ref.load() == 1)
+ return;
+
+ QJsonPrivate::Data *x = d->clone(a, reserve);
+ x->ref.ref();
+ if (!d->ref.deref())
+ delete d;
+ d = x;
+ a = static_cast<QJsonPrivate::Array *>(d->header->root());
+}
+
+/*!
+ \internal
+ */
+void QJsonArray::compact()
+{
+ if (!d || !d->compactionCounter)
+ return;
+
+ detach();
+ d->compact();
+ a = static_cast<QJsonPrivate::Array *>(d->header->root());
+}
+
+
+#ifndef QT_NO_DEBUG_STREAM
+QDebug operator<<(QDebug dbg, const QJsonArray &a)
+{
+ if (!a.a) {
+ dbg << "QJsonArray()";
+ return dbg;
+ }
+ QByteArray json;
+ QJsonPrivate::Writer::arrayToJson(a.a, json, 0, true);
+ dbg.nospace() << "QJsonArray("
+ << json.constData() // print as utf-8 string without extra quotation marks
+ << ")";
+ return dbg.space();
+}
+#endif
+
+QT_END_NAMESPACE
+
diff --git a/src/corelib/json/qjsonarray.h b/src/corelib/json/qjsonarray.h
new file mode 100644
index 0000000000..8bb1ac0b51
--- /dev/null
+++ b/src/corelib/json/qjsonarray.h
@@ -0,0 +1,223 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QJSONARRAY_H
+#define QJSONARRAY_H
+
+#include <QtCore/qjsonvalue.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QDebug;
+class QStringList;
+template <typename T> class QList;
+typedef QList<QVariant> QVariantList;
+
+class Q_CORE_EXPORT QJsonArray
+{
+public:
+ QJsonArray();
+ ~QJsonArray();
+
+ QJsonArray(const QJsonArray &other);
+ QJsonArray &operator =(const QJsonArray &other);
+
+ static QJsonArray fromStringList(const QStringList &list);
+ static QJsonArray fromVariantList(const QVariantList &list);
+ QVariantList toVariantList() const;
+
+ int size() const;
+ inline int count() const { return size(); }
+
+ bool isEmpty() const;
+ QJsonValue at(int i) const;
+ QJsonValue first() const;
+ QJsonValue last() const;
+
+ void prepend(const QJsonValue &value);
+ void append(const QJsonValue &value);
+ void removeAt(int i);
+ QJsonValue takeAt(int i);
+ inline void removeFirst() { removeAt(0); }
+ inline void removeLast() { removeAt(size() - 1); }
+
+ void insert(int i, const QJsonValue &value);
+ void replace(int i, const QJsonValue &value);
+
+ bool contains(const QJsonValue &element) const;
+ QJsonValueRef operator[](int i);
+ QJsonValue operator[](int i) const;
+
+ bool operator==(const QJsonArray &other) const;
+ bool operator!=(const QJsonArray &other) const;
+
+ class const_iterator;
+
+ class iterator {
+ public:
+ QJsonArray *a;
+ int i;
+ typedef std::random_access_iterator_tag iterator_category;
+ typedef int difference_type;
+ typedef QJsonValue value_type;
+ //typedef T *pointer;
+ typedef QJsonValueRef reference;
+
+ inline iterator() : a(0), i(0) { }
+ explicit inline iterator(QJsonArray *array, int index) : a(array), i(index) { }
+
+ inline QJsonValueRef operator*() const { return QJsonValueRef(a, i); }
+ //inline T *operator->() const { return &concrete(i)->value; }
+ inline QJsonValueRef operator[](int j) const { return QJsonValueRef(a, i + j); }
+
+ inline bool operator==(const iterator &o) const { return i == o.i; }
+ inline bool operator!=(const iterator &o) const { return i != o.i; }
+ inline bool operator<(const iterator& other) const { return i < other.i; }
+ inline bool operator<=(const iterator& other) const { return i <= other.i; }
+ inline bool operator>(const iterator& other) const { return i > other.i; }
+ inline bool operator>=(const iterator& other) const { return i >= other.i; }
+ inline bool operator==(const const_iterator &o) const { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const { return i != o.i; }
+ inline bool operator<(const const_iterator& other) const { return i < other.i; }
+ inline bool operator<=(const const_iterator& other) const { return i <= other.i; }
+ inline bool operator>(const const_iterator& other) const { return i > other.i; }
+ inline bool operator>=(const const_iterator& other) const { return i >= other.i; }
+ inline iterator &operator++() { ++i; return *this; }
+ inline iterator operator++(int) { iterator n = *this; ++i; return n; }
+ inline iterator &operator--() { i--; return *this; }
+ inline iterator operator--(int) { iterator n = *this; i--; return n; }
+ inline iterator &operator+=(int j) { i+=j; return *this; }
+ inline iterator &operator-=(int j) { i-=j; return *this; }
+ inline iterator operator+(int j) const { return iterator(a, i+j); }
+ inline iterator operator-(int j) const { return iterator(a, i-j); }
+ inline int operator-(iterator j) const { return i - j.i; }
+ };
+ friend class iterator;
+
+ class const_iterator {
+ public:
+ const QJsonArray *a;
+ int i;
+ typedef std::random_access_iterator_tag iterator_category;
+ typedef qptrdiff difference_type;
+ typedef QJsonValue value_type;
+ //typedef const T *pointer;
+ typedef QJsonValue reference;
+
+ inline const_iterator() : a(0), i(0) { }
+ explicit inline const_iterator(const QJsonArray *array, int index) : a(array), i(index) { }
+ inline const_iterator(const const_iterator &o) : a(o.a), i(o.i) {}
+ inline const_iterator(const iterator &o) : a(o.a), i(o.i) {}
+
+ inline QJsonValue operator*() const { return a->at(i); }
+ //inline T *operator->() const { return &concrete(i)->value; }
+ inline QJsonValue operator[](int j) const { return a->at(i+j); }
+ inline bool operator==(const const_iterator &o) const { return i == o.i; }
+ inline bool operator!=(const const_iterator &o) const { return i != o.i; }
+ inline bool operator<(const const_iterator& other) const { return i < other.i; }
+ inline bool operator<=(const const_iterator& other) const { return i <= other.i; }
+ inline bool operator>(const const_iterator& other) const { return i > other.i; }
+ inline bool operator>=(const const_iterator& other) const { return i >= other.i; }
+ inline const_iterator &operator++() { ++i; return *this; }
+ inline const_iterator operator++(int) { const_iterator n = *this; ++i; return n; }
+ inline const_iterator &operator--() { i--; return *this; }
+ inline const_iterator operator--(int) { const_iterator n = *this; i--; return n; }
+ inline const_iterator &operator+=(int j) { i+=j; return *this; }
+ inline const_iterator &operator-=(int j) { i-=j; return *this; }
+ inline const_iterator operator+(int j) const { return const_iterator(a, i+j); }
+ inline const_iterator operator-(int j) const { return const_iterator(a, i-j); }
+ inline int operator-(const_iterator j) const { return i - j.i; }
+ };
+ friend class const_iterator;
+
+ // stl style
+ inline iterator begin() { detach(); return iterator(this, 0); }
+ inline const_iterator begin() const { return const_iterator(this, 0); }
+ inline const_iterator constBegin() const { return const_iterator(this, 0); }
+ inline iterator end() { detach(); return iterator(this, size()); }
+ inline const_iterator end() const { return const_iterator(this, size()); }
+ inline const_iterator constEnd() const { return const_iterator(this, size()); }
+ iterator insert(iterator before, const QJsonValue &value) { insert(before.i, value); return before; }
+ iterator erase(iterator pos) { removeAt(pos.i); return pos; }
+
+ // more Qt
+ typedef iterator Iterator;
+ typedef const_iterator ConstIterator;
+
+ // stl compatibility
+ inline void push_back(const QJsonValue &t) { append(t); }
+ inline void push_front(const QJsonValue &t) { prepend(t); }
+ inline void pop_front() { removeFirst(); }
+ inline void pop_back() { removeLast(); }
+ inline bool empty() const { return isEmpty(); }
+ typedef int size_type;
+ typedef QJsonValue value_type;
+ typedef value_type *pointer;
+ typedef const value_type *const_pointer;
+ typedef QJsonValueRef reference;
+ typedef QJsonValue const_reference;
+ typedef int difference_type;
+
+private:
+ friend class QJsonPrivate::Data;
+ friend class QJsonValue;
+ friend class QJsonDocument;
+ friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonArray &);
+
+ QJsonArray(QJsonPrivate::Data *data, QJsonPrivate::Array *array);
+ void compact();
+ void detach(uint reserve = 0);
+
+ QJsonPrivate::Data *d;
+ QJsonPrivate::Array *a;
+};
+
+#ifndef QT_NO_DEBUG_STREAM
+Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonArray &);
+#endif
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QJSONARRAY_H
diff --git a/src/corelib/json/qjsondocument.cpp b/src/corelib/json/qjsondocument.cpp
new file mode 100644
index 0000000000..98a0b8c3d3
--- /dev/null
+++ b/src/corelib/json/qjsondocument.cpp
@@ -0,0 +1,536 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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 <qjsondocument.h>
+#include <qjsonobject.h>
+#include <qjsonvalue.h>
+#include <qjsonarray.h>
+#include <qstringlist.h>
+#include <qdebug.h>
+#include "qjsonwriter_p.h"
+#include "qjsonparser_p.h"
+#include "qjson_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/*! \class QJsonDocument
+ \ingroup json
+ \reentrant
+ \since 5.0
+
+ \brief The QJsonDocument class provides a way to read and write JSON documents.
+
+ QJsonDocument is a class that wraps a complete JSON document and can read and
+ write this document both from a UTF-8 encoded text based representation as well
+ as Qt's own binary format.
+
+ A JSON document can be converted from its text-based representation to a QJsonDocument
+ using QJsonDocument::fromJson(). toJson() converts it back to text. The parser is very
+ fast and efficient and converts the JSON to the binary representation used by Qt.
+
+ Validity of the parsed document can be queried with !isNull()
+
+ A document can be queried as to whether it contains an array or an object using isArray()
+ and isObject(). The array or object contained in the document can be retrieved using
+ array() or object() and then read or manipulated.
+
+ A document can also be created from a stored binary representation using fromBinaryData() or
+ fromRawData().
+*/
+
+/*!
+ * Constructs an empty and invalid document.
+ */
+QJsonDocument::QJsonDocument()
+ : d(0)
+{
+}
+
+/*!
+ * Creates a QJsonDocument from \a object.
+ */
+QJsonDocument::QJsonDocument(const QJsonObject &object)
+ : d(0)
+{
+ setObject(object);
+}
+
+/*!
+ * Constructs a QJsonDocument from \a array.
+ */
+QJsonDocument::QJsonDocument(const QJsonArray &array)
+ : d(0)
+{
+ setArray(array);
+}
+
+/*! \internal
+ */
+QJsonDocument::QJsonDocument(QJsonPrivate::Data *data)
+ : d(data)
+{
+ Q_ASSERT(d);
+ d->ref.ref();
+}
+
+/*!
+ Deletes the document.
+
+ Binary data set with fromRawData is not freed.
+ */
+QJsonDocument::~QJsonDocument()
+{
+ if (d && !d->ref.deref())
+ delete d;
+}
+
+/*!
+ * Creates a copy of the \a other document.
+ */
+QJsonDocument::QJsonDocument(const QJsonDocument &other)
+{
+ d = other.d;
+ if (d)
+ d->ref.ref();
+}
+
+/*!
+ * Assigns the \a other document to this QJsonDocument.
+ * Returns a reference to this object.
+ */
+QJsonDocument &QJsonDocument::operator =(const QJsonDocument &other)
+{
+ if (d != other.d) {
+ if (d && !d->ref.deref())
+ delete d;
+ d = other.d;
+ if (d)
+ d->ref.ref();
+ }
+
+ return *this;
+}
+
+/*! \enum QJsonDocument::DataValidation
+
+ This value is used to tell QJsonDocument whether to validate the binary data
+ when converting to a QJsonDocument using fromBinaryData() or fromRawData().
+
+ \value Validate Validate the data before using it. This is the default.
+ \value BypassValidation Bypasses data validation. Only use if you received the
+ data from a trusted place and know it's valid, as using of invalid data can crash
+ the application.
+ */
+
+/*!
+ Creates a QJsonDocument that uses the first \a size bytes from
+ \a data. It assumes \a data contains a binary encoded JSON document.
+ The created document does not take ownership of \a data and the caller
+ has to guarantee that \a data will not be deleted or modified as long as
+ any QJsonDocument, QJsonObject or QJsonArray still references the data.
+
+ \a data has to be aligned to a 4 byte boundary.
+
+ \a validation decides whether the data is checked for validity before being used.
+ By default the data is validated. If the \a data is not valid, the method returns
+ a null document.
+
+ Returns a QJsonDocument representing the data.
+
+ \sa rawData fromBinaryData isNull DataValidation
+ */
+QJsonDocument QJsonDocument::fromRawData(const char *data, int size, DataValidation validation)
+{
+ if (!(((quintptr)validation) & ~3)) {
+ qWarning() <<"QJsonDocumnt::fromRawData: data has to have 4 byte alignment";
+ return QJsonDocument();
+ }
+
+ QJsonPrivate::Data *d = new QJsonPrivate::Data((char *)data, size);
+ d->ownsData = false;
+
+ if (validation != BypassValidation && !d->valid()) {
+ delete d;
+ return QJsonDocument();
+ }
+
+ return QJsonDocument(d);
+}
+
+/*!
+ Returns the raw binary representation of the data
+ \a size will contain the size of the \a data.
+
+ This method is useful to e.g. stream the JSON document
+ in it's binary form to a file.
+ */
+const char *QJsonDocument::rawData(int *size) const
+{
+ if (!d) {
+ *size = 0;
+ return 0;
+ }
+ *size = d->alloc;
+ return d->rawData;
+}
+
+/*!
+ Creates a QJsonDocument from \a data.
+
+ \a validation decides whether the data is checked for validity before being used.
+ By default the data is validated. If the \a data is not valid, the method returns
+ a null document.
+
+ \sa toBinaryData fromRawData isNull DataValidation
+ */
+QJsonDocument QJsonDocument::fromBinaryData(const QByteArray &data, DataValidation validation)
+{
+ QJsonPrivate::Header h;
+ memcpy(&h, data.constData(), sizeof(QJsonPrivate::Header));
+ QJsonPrivate::Base root;
+ memcpy(&root, data.constData() + sizeof(QJsonPrivate::Header), sizeof(QJsonPrivate::Base));
+
+ // do basic checks here, so we don't try to allocate more memory than we can.
+ if (data.size() < (int)(sizeof(QJsonPrivate::Header) + sizeof(QJsonPrivate::Base)) ||
+ h.tag != QJsonDocument::BinaryFormatTag || h.version != 1u ||
+ sizeof(QJsonPrivate::Header) + root.size > (uint)data.size())
+ return QJsonDocument();
+
+ char *raw = (char *)malloc(data.size());
+ if (!raw)
+ return QJsonDocument();
+
+ memcpy(raw, data.constData(), data.size());
+ QJsonPrivate::Data *d = new QJsonPrivate::Data(raw, data.size());
+
+ if (validation != BypassValidation && !d->valid()) {
+ delete d;
+ return QJsonDocument();
+ }
+
+ return QJsonDocument(d);
+}
+
+/*!
+ Creates a QJsonDocument from the QVariant \a variant.
+
+ If the \a variant contains any other type than a QVariant::Map,
+ QVariant::List or QVariant::StringList, the returned document
+ document is invalid.
+
+ \sa toVariant
+ */
+QJsonDocument QJsonDocument::fromVariant(const QVariant &variant)
+{
+ QJsonDocument doc;
+ if (variant.type() == QVariant::Map) {
+ doc.setObject(QJsonObject::fromVariantMap(variant.toMap()));
+ } else if (variant.type() == QVariant::List) {
+ doc.setArray(QJsonArray::fromVariantList(variant.toList()));
+ } else if (variant.type() == QVariant::StringList) {
+ doc.setArray(QJsonArray::fromStringList(variant.toStringList()));
+ }
+ return doc;
+}
+
+/*!
+ Returns a QVariant representing the Json document.
+
+ The returned variant will be a QVariantList if the document is
+ a QJsonArray and a QVariantMap if the document is a QJsonObject.
+
+ \sa fromVariant, QJsonValue::toVariant()
+ */
+QVariant QJsonDocument::toVariant() const
+{
+ if (!d)
+ return QVariant();
+
+ if (d->header->root()->isArray())
+ return QJsonArray(d, static_cast<QJsonPrivate::Array *>(d->header->root())).toVariantList();
+ else
+ return QJsonObject(d, static_cast<QJsonPrivate::Object *>(d->header->root())).toVariantMap();
+}
+
+/*!
+ Converts the QJsonDocument to a UTF-8 encoded JSON document.
+
+ \sa fromJson
+ */
+QByteArray QJsonDocument::toJson() const
+{
+ if (!d)
+ return QByteArray();
+
+ QByteArray json;
+
+ if (d->header->root()->isArray())
+ QJsonPrivate::Writer::arrayToJson(static_cast<QJsonPrivate::Array *>(d->header->root()), json, 0);
+ else
+ QJsonPrivate::Writer::objectToJson(static_cast<QJsonPrivate::Object *>(d->header->root()), json, 0);
+
+ return json;
+}
+
+/*!
+ Parses a UTF-8 encoded JSON document and creates a QJsonDocument
+ from it. isNull() will return \c false if no error was encountered during
+ parsing.
+
+ \sa toJson
+ */
+QJsonDocument QJsonDocument::fromJson(const QByteArray &json)
+{
+ QJsonPrivate::Parser parser(json.constData(), json.length());
+ return parser.parse();
+}
+
+/*!
+ Returns true if the document doesn't contain any data.
+ */
+bool QJsonDocument::isEmpty() const
+{
+ if (!d)
+ return true;
+
+ return false;
+}
+
+/*!
+ Returns a binary representation of the document.
+
+ The binary representation is also the native format used internally in Qt,
+ and is very efficient and fast to convert to and from.
+
+ The binary format can be stored on disk and interchanged with other applications
+ or computers. fromBinaryData() can be used to convert it back into a
+ JSON document.
+
+ \sa fromBinaryData
+ */
+QByteArray QJsonDocument::toBinaryData() const
+{
+ if (!d || !d->rawData)
+ return QByteArray();
+
+ return QByteArray(d->rawData, d->header->root()->size + sizeof(QJsonPrivate::Header));
+}
+
+/*!
+ Returns true if the document contains an array.
+
+ \sa array() isObject()
+ */
+bool QJsonDocument::isArray() const
+{
+ if (!d)
+ return false;
+
+ QJsonPrivate::Header *h = (QJsonPrivate::Header *)d->rawData;
+ return h->root()->isArray();
+}
+
+/*!
+ Returns true if the document contains an object.
+
+ \sa object() isArray()
+ */
+bool QJsonDocument::isObject() const
+{
+ if (!d)
+ return false;
+
+ QJsonPrivate::Header *h = (QJsonPrivate::Header *)d->rawData;
+ return h->root()->isObject();
+}
+
+/*!
+ Returns the QJsonObject contained in the document.
+
+ Returns an empty object if the document contains an
+ array.
+
+ \sa isObject array setObject
+ */
+QJsonObject QJsonDocument::object() const
+{
+ if (d) {
+ QJsonPrivate::Base *b = d->header->root();
+ if (b->isObject())
+ return QJsonObject(d, static_cast<QJsonPrivate::Object *>(b));
+ }
+ return QJsonObject();
+}
+
+/*!
+ Returns the QJsonArray contained in the document.
+
+ Returns an empty array if the document contains an
+ object.
+
+ \sa isArray object setArray
+ */
+QJsonArray QJsonDocument::array() const
+{
+ if (d) {
+ QJsonPrivate::Base *b = d->header->root();
+ if (b->isArray())
+ return QJsonArray(d, static_cast<QJsonPrivate::Array *>(b));
+ }
+ return QJsonArray();
+}
+
+/*!
+ Sets \a object as the main object of this document.
+
+ \sa setArray object
+ */
+void QJsonDocument::setObject(const QJsonObject &object)
+{
+ if (d && !d->ref.deref())
+ delete d;
+
+ d = object.d;
+
+ if (!d) {
+ d = new QJsonPrivate::Data(0, QJsonValue::Object);
+ } else if (d->compactionCounter || object.o != d->header->root()) {
+ QJsonObject o(object);
+ if (d->compactionCounter)
+ o.compact();
+ else
+ o.detach();
+ d = o.d;
+ d->ref.ref();
+ return;
+ }
+ d->ref.ref();
+}
+
+/*!
+ Sets \a array as the main object of this document.
+
+ \sa setObject array
+ */
+void QJsonDocument::setArray(const QJsonArray &array)
+{
+ if (d && !d->ref.deref())
+ delete d;
+
+ d = array.d;
+
+ if (!d) {
+ d = new QJsonPrivate::Data(0, QJsonValue::Array);
+ } else if (d->compactionCounter || array.a != d->header->root()) {
+ QJsonArray a(array);
+ if (d->compactionCounter)
+ a.compact();
+ else
+ a.detach();
+ d = a.d;
+ d->ref.ref();
+ return;
+ }
+ d->ref.ref();
+}
+
+/*!
+ Returns \c true if the \a other document is equal to this document.
+ */
+bool QJsonDocument::operator==(const QJsonDocument &other) const
+{
+ if (d == other.d)
+ return true;
+
+ if (!d || !other.d)
+ return false;
+
+ if (d->header->root()->isArray() != other.d->header->root()->isArray())
+ return false;
+
+ if (d->header->root()->isObject())
+ return QJsonObject(d, static_cast<QJsonPrivate::Object *>(d->header->root()))
+ == QJsonObject(other.d, static_cast<QJsonPrivate::Object *>(other.d->header->root()));
+ else
+ return QJsonArray(d, static_cast<QJsonPrivate::Array *>(d->header->root()))
+ == QJsonArray(other.d, static_cast<QJsonPrivate::Array *>(other.d->header->root()));
+}
+
+/*!
+ \fn bool QJsonDocument::operator!=(const QJsonDocument &other) const
+
+ returns \c true if \a other is not equal to this document
+ */
+
+/*!
+ returns true if this document is null.
+
+ Null documents are documents created through the default constructor.
+
+ Documents created from UTF-8 encoded text or the binary format are
+ validated during parsing. If validation fails, the returned document
+ will also be null.
+ */
+bool QJsonDocument::isNull() const
+{
+ return (d == 0);
+}
+
+#ifndef QT_NO_DEBUG_STREAM
+QDebug operator<<(QDebug dbg, const QJsonDocument &o)
+{
+ if (!o.d) {
+ dbg << "QJsonDocument()";
+ return dbg;
+ }
+ QByteArray json;
+ if (o.d->header->root()->isArray())
+ QJsonPrivate::Writer::arrayToJson(static_cast<QJsonPrivate::Array *>(o.d->header->root()), json, 0, true);
+ else
+ QJsonPrivate::Writer::objectToJson(static_cast<QJsonPrivate::Object *>(o.d->header->root()), json, 0, true);
+ dbg.nospace() << "QJsonDocument("
+ << json.constData() // print as utf-8 string without extra quotation marks
+ << ")";
+ return dbg.space();
+}
+#endif
+
+QT_END_NAMESPACE
diff --git a/src/corelib/json/qjsondocument.h b/src/corelib/json/qjsondocument.h
new file mode 100644
index 0000000000..39db830726
--- /dev/null
+++ b/src/corelib/json/qjsondocument.h
@@ -0,0 +1,125 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QJSONDOCUMENT_H
+#define QJSONDOCUMENT_H
+
+#include <QtCore/qjsonvalue.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QDebug;
+
+namespace QJsonPrivate {
+ class Parser;
+}
+
+class Q_CORE_EXPORT QJsonDocument
+{
+public:
+#ifdef Q_LITTLE_ENDIAN
+ static const uint BinaryFormatTag = ('q') | ('b' << 8) | ('j' << 16) | ('s' << 24);
+#else
+ static const uint BinaryFormatTag = ('q' << 24) | ('b' << 16) | ('j' << 8) | ('s');
+#endif
+
+ QJsonDocument();
+ explicit QJsonDocument(const QJsonObject &object);
+ explicit QJsonDocument(const QJsonArray &array);
+ ~QJsonDocument();
+
+ QJsonDocument(const QJsonDocument &other);
+ QJsonDocument &operator =(const QJsonDocument &other);
+
+ enum DataValidation {
+ Validate,
+ BypassValidation
+ };
+
+ static QJsonDocument fromRawData(const char *data, int size, DataValidation validation = Validate);
+ const char *rawData(int *size) const;
+
+ static QJsonDocument fromBinaryData(const QByteArray &data, DataValidation validation = Validate);
+ QByteArray toBinaryData() const;
+
+ static QJsonDocument fromVariant(const QVariant &variant);
+ QVariant toVariant() const;
+
+ static QJsonDocument fromJson(const QByteArray &json);
+ QByteArray toJson() const;
+
+ bool isEmpty() const;
+ bool isArray() const;
+ bool isObject() const;
+
+ QJsonObject object() const;
+ QJsonArray array() const;
+
+ void setObject(const QJsonObject &object);
+ void setArray(const QJsonArray &array);
+
+ bool operator==(const QJsonDocument &other) const;
+ bool operator!=(const QJsonDocument &other) const { return !(*this == other); }
+
+ bool isNull() const;
+
+private:
+ friend class QJsonValue;
+ friend class QJsonPrivate::Data;
+ friend class QJsonPrivate::Parser;
+ friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonDocument &);
+
+ QJsonDocument(QJsonPrivate::Data *data);
+
+ QJsonPrivate::Data *d;
+};
+
+#ifndef QT_NO_DEBUG_STREAM
+Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonDocument &);
+#endif
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QJSONDOCUMENT_H
diff --git a/src/corelib/json/qjsonobject.cpp b/src/corelib/json/qjsonobject.cpp
new file mode 100644
index 0000000000..b7af8c22cf
--- /dev/null
+++ b/src/corelib/json/qjsonobject.cpp
@@ -0,0 +1,1016 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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 <qjsonobject.h>
+#include <qjsonvalue.h>
+#include <qjsonarray.h>
+#include <qstringlist.h>
+#include <qdebug.h>
+#include "qjson_p.h"
+#include "qjsonwriter_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QJsonObject
+ \ingroup json
+ \reentrant
+ \since 5.0
+
+ \brief The QJsonObject class encapsulates a JSON object.
+
+ A JSON object is a list of key value pairs, where the keys are unique strings
+ and the values are represented by a QJsonValue.
+
+ A QJsonObject can be converted to and from a QVariantMap. You can query the
+ number of (key, value) pairs with size(), insert(), and remove() entries from it
+ and iterate over its content using the standard C++ iterator pattern.
+
+ QJsonObject is an implicitly shared class, and shares the data with the document
+ it has been created from as long as it is not being modified.
+
+ You can convert the array to and from text based JSON through QJsonDocument.
+*/
+
+/*!
+ Constructs an empty JSON object
+
+ \sa isEmpty
+ */
+QJsonObject::QJsonObject()
+ : d(0), o(0)
+{
+}
+
+/*!
+ \internal
+ */
+QJsonObject::QJsonObject(QJsonPrivate::Data *data, QJsonPrivate::Object *object)
+ : d(data), o(object)
+{
+ Q_ASSERT(d);
+ Q_ASSERT(o);
+ d->ref.ref();
+}
+
+
+/*!
+ Destroys the object.
+ */
+QJsonObject::~QJsonObject()
+{
+ if (d && !d->ref.deref())
+ delete d;
+}
+
+/*!
+ Creates a copy of \a other.
+
+ Since QJsonObject is implicitly shared, the copy is shallow
+ as long as the object does not get modified.
+ */
+QJsonObject::QJsonObject(const QJsonObject &other)
+{
+ d = other.d;
+ o = other.o;
+ if (d)
+ d->ref.ref();
+}
+
+/*!
+ Assigns \a other to this object.
+ */
+QJsonObject &QJsonObject::operator =(const QJsonObject &other)
+{
+ if (d != other.d) {
+ if (d && !d->ref.deref())
+ delete d;
+ d = other.d;
+ o = other.o;
+ if (d)
+ d->ref.ref();
+ }
+
+ return *this;
+}
+
+/*!
+ Converts the variant map \a map to a QJsonObject.
+
+ The keys in \a map will be used as the keys in the JSON object,
+ and the QVariant values will be converted to JSON values.
+
+ \sa toVariantMap, QJsonValue::fromVariant
+ */
+QJsonObject QJsonObject::fromVariantMap(const QVariantMap &map)
+{
+ // ### this is implemented the trivial way, not the most efficient way
+
+ QJsonObject object;
+ for (QVariantMap::const_iterator it = map.constBegin(); it != map.constEnd(); ++it)
+ object.insert(it.key(), QJsonValue::fromVariant(it.value()));
+ return object;
+}
+
+/*!
+ Converts this object to a QVariantMap.
+
+ Returns the created map.
+ */
+QVariantMap QJsonObject::toVariantMap() const
+{
+ QVariantMap map;
+ if (o) {
+ for (uint i = 0; i < o->length; ++i) {
+ QJsonPrivate::Entry *e = o->entryAt(i);
+ map.insert(e->key(), QJsonValue(d, o, e->value).toVariant());
+ }
+ }
+ return map;
+}
+
+/*!
+ Returns a list of all keys in this object.
+ */
+QStringList QJsonObject::keys() const
+{
+ if (!d)
+ return QStringList();
+
+ QStringList keys;
+
+ for (uint i = 0; i < o->length; ++i) {
+ QJsonPrivate::Entry *e = o->entryAt(i);
+ keys.append(e->key());
+ }
+
+ return keys;
+}
+
+/*!
+ Returns the the number of (key, value) pairs stored in the object.
+ */
+int QJsonObject::size() const
+{
+ if (!d)
+ return 0;
+
+ return o->length;
+}
+
+/*!
+ Returns \c true if the object is empty. This is the same as size() == 0.
+
+ \sa size
+ */
+bool QJsonObject::isEmpty() const
+{
+ if (!d)
+ return true;
+
+ return !o->length;
+}
+
+/*!
+ Returns a QJsonValue representing the value for the key \a key.
+
+ The returned QJsonValue is \c Undefined, if the key does not exist.
+
+ \sa setValue, QJsonValue, QJsonValue::isUndefined
+ */
+QJsonValue QJsonObject::value(const QString &key) const
+{
+ if (!d)
+ return QJsonValue();
+
+ bool keyExists;
+ int i = o->indexOf(key, &keyExists);
+ if (!keyExists)
+ return QJsonValue(QJsonValue::Undefined);
+ return QJsonValue(d, o, o->entryAt(i)->value);
+}
+
+/*!
+ Returns a QJsonValue representing the value for the key \a key.
+
+ This does the same as value().
+
+ The returned QJsonValue is \c Undefined, if the key does not exist.
+
+ \sa value, setValue, QJsonValue, QJsonValue::isUndefined
+ */
+QJsonValue QJsonObject::operator [](const QString &key) const
+{
+ return value(key);
+}
+
+/*!
+ Returns a reference to the value for \a key.
+
+ The return value is of type QJsonValueRef, a helper class for QJsonArray
+ and QJsonObject. When you get an object of type QJsonValueRef, you can
+ use it as if it were a reference to a QJsonValue. If you assign to it,
+ the assignment will apply to the character in the QJsonArray of QJsonObject
+ from which you got the reference.
+
+ \sa setValue, value
+ */
+QJsonValueRef QJsonObject::operator [](const QString &key)
+{
+ // ### somewhat inefficient, as we lookup the key twice if it doesn't yet exist
+ bool keyExists = false;
+ int index = o ? o->indexOf(key, &keyExists) : -1;
+ if (!keyExists) {
+ iterator i = insert(key, QJsonValue());
+ index = i.i;
+ }
+ return QJsonValueRef(this, index);
+}
+
+/*!
+ Inserts a new item with the key \a key and a value of \a value.
+
+ If there is already an item with the key \a key then that item's value
+ is replaced with \a value.
+
+ Returns an iterator pointing to the inserted item.
+
+ If the value is QJsonValue::Undefined, it will cause the key to get removed
+ from the object. The returned iterator will then point to end()
+
+ \sa remove, take, QJsonObject::iterator, end
+ */
+QJsonObject::iterator QJsonObject::insert(const QString &key, const QJsonValue &value)
+{
+ if (value.t == QJsonValue::Undefined) {
+ remove(key);
+ return end();
+ }
+
+ bool latinOrIntValue;
+ int valueSize = QJsonPrivate::Value::requiredStorage(value, &latinOrIntValue);
+
+ bool latinKey = QJsonPrivate::useCompressed(key);
+ int valueOffset = sizeof(QJsonPrivate::Entry) + QJsonPrivate::qStringSize(key, latinKey);
+ int requiredSize = valueOffset + valueSize;
+
+ detach(requiredSize + sizeof(QJsonPrivate::offset)); // offset for the new index entry
+
+ if (!o->length)
+ o->tableOffset = sizeof(QJsonPrivate::Object);
+
+ bool keyExists = false;
+ int pos = o->indexOf(key, &keyExists);
+ if (keyExists)
+ ++d->compactionCounter;
+
+ o->reserveSpace(requiredSize, pos, 1, keyExists);
+
+ QJsonPrivate::Entry *e = o->entryAt(pos);
+ e->value.type = value.t;
+ e->value.latinKey = latinKey;
+ e->value.latinOrIntValue = latinOrIntValue;
+ e->value.value = QJsonPrivate::Value::valueToStore(value, (char *)e - (char *)o + valueOffset);
+ QJsonPrivate::copyString((char *)(e + 1), key, latinKey);
+ if (valueSize)
+ QJsonPrivate::Value::copyData(value, (char *)e + valueOffset, latinOrIntValue);
+
+ return iterator(this, pos);
+}
+
+/*!
+ Removes \a key from the object.
+
+ \sa insert, take
+ */
+void QJsonObject::remove(const QString &key)
+{
+ if (!d)
+ return;
+
+ bool keyExists;
+ int index = o->indexOf(key, &keyExists);
+ if (!keyExists)
+ return;
+
+ detach();
+ o->removeItems(index, 1);
+ ++d->compactionCounter;
+ if (d->compactionCounter > 32 && d->compactionCounter >= (int)o->length/2)
+ compact();
+}
+
+/*!
+ Removes \a key from the object.
+
+ Returns a QJsonValue containing the value referenced by \a key.
+ If \a key was not contained in the object, the returned QJsonValue
+ is Undefined.
+
+ \sa insert, remove, QJsonValue
+ */
+QJsonValue QJsonObject::take(const QString &key)
+{
+ if (!o)
+ return QJsonValue(QJsonValue::Undefined);
+
+ bool keyExists;
+ int index = o->indexOf(key, &keyExists);
+ if (!keyExists)
+ return QJsonValue(QJsonValue::Undefined);
+
+ QJsonPrivate::Entry *e = o->entryAt(index);
+ o->removeItems(index, 1);
+ ++d->compactionCounter;
+ if (d->compactionCounter > 32 && d->compactionCounter >= (int)o->length/2)
+ compact();
+
+ return QJsonValue(d, o, e->value);
+}
+
+/*!
+ Returns \c true if the object contains key \a key.
+
+ \sa insert, remove, take
+ */
+bool QJsonObject::contains(const QString &key) const
+{
+ if (!o)
+ return false;
+
+ bool keyExists;
+ o->indexOf(key, &keyExists);
+ return keyExists;
+}
+
+/*!
+ Returns \c true if \a other is equal to this object
+ */
+bool QJsonObject::operator==(const QJsonObject &other) const
+{
+ if (o == other.o)
+ return true;
+
+ if (!o)
+ return !other.o->length;
+ if (!other.o)
+ return !o->length;
+ if (o->length != other.o->length)
+ return false;
+
+ for (uint i = 0; i < o->length; ++i) {
+ QJsonPrivate::Entry *e = o->entryAt(i);
+ QJsonValue v(d, o, e->value);
+ if (other.value(e->key()) != v)
+ return false;
+ }
+
+ return true;
+}
+
+/*!
+ Returns \c true if \a other is not equal to this object
+ */
+bool QJsonObject::operator!=(const QJsonObject &other) const
+{
+ return !(*this == other);
+}
+
+/*!
+ Removes the (key, value) pair pointed to by the iterator \a it
+ from the map, and returns an iterator to the next item in the
+ map.
+
+ \sa remove()
+ */
+QJsonObject::iterator QJsonObject::erase(QJsonObject::iterator it)
+{
+ Q_ASSERT(d && d->ref.load() == 1);
+ if (it.o != this || it.i < 0 || it.i >= (int)o->length)
+ return iterator(this, o->length);
+
+ int index = it.i;
+
+ o->removeItems(index, 1);
+ ++d->compactionCounter;
+ if (d->compactionCounter > 32 && d->compactionCounter >= (int)o->length/2)
+ compact();
+
+ // iterator hasn't changed
+ return it;
+}
+
+/*!
+ Returns an iterator pointing to the item with key \a key in the
+ map.
+
+ If the map contains no item with key \a key, the function
+ returns end().
+ */
+QJsonObject::iterator QJsonObject::find(const QString &key)
+{
+ bool keyExists = false;
+ int index = o ? o->indexOf(key, &keyExists) : 0;
+ if (!keyExists)
+ return end();
+ return iterator(this, index);
+}
+
+/*! \fn QJsonObject::const_iterator QJsonObject::find(const Key &key) const
+
+ \overload
+*/
+
+/*!
+ Returns an const iterator pointing to the item with key \a key in the
+ map.
+
+ If the map contains no item with key \a key, the function
+ returns constEnd().
+ */
+QJsonObject::const_iterator QJsonObject::constFind(const QString &key) const
+{
+ bool keyExists = false;
+ int index = o ? o->indexOf(key, &keyExists) : 0;
+ if (!keyExists)
+ return end();
+ return const_iterator(this, index);
+}
+
+/*! \fn int QJsonObject::count() const
+
+ \overload
+
+ Same as size().
+*/
+
+/*! \fn int QJsonObject::length() const
+
+ \overload
+
+ Same as size().
+*/
+
+/*! \fn QJsonObject::iterator QJsonObject::begin()
+
+ Returns an \l{STL-style iterator} pointing to the first item in
+ the object.
+
+ \sa constBegin(), end()
+*/
+
+/*! \fn QJsonObject::const_iterator QJsonObject::begin() const
+
+ \overload
+*/
+
+/*! \fn QJsonObject::const_iterator QJsonObject::constBegin() const
+
+ Returns a const \l{STL-style iterator} pointing to the first item
+ in the object.
+
+ \sa begin(), constEnd()
+*/
+
+/*! \fn QJsonObject::iterator QJsonObject::end()
+
+ Returns an \l{STL-style iterator} pointing to the imaginary item
+ after the last item in the object.
+
+ \sa begin(), constEnd()
+*/
+
+/*! \fn QJsonObject::const_iterator QJsonObject::end() const
+
+ \overload
+*/
+
+/*! \fn QJsonObject::const_iterator QJsonObject::constEnd() const
+
+ Returns a const \l{STL-style iterator} pointing to the imaginary
+ item after the last item in the object.
+
+ \sa constBegin(), end()
+*/
+
+/*!
+ \fn bool QJsonObject::empty() const
+
+ This function is provided for STL compatibility. It is equivalent
+ to isEmpty(), returning \c true if the object is empty; otherwise
+ returning \c false.
+*/
+
+/*! \class QJsonObject::iterator
+ \brief The QJsonObject::iterator class provides an STL-style non-const iterator for QJsonObject.
+
+ QJsonObject::iterator allows you to iterate over a QJsonObject
+ and to modify the value (but not the key) stored under
+ a particular key. If you want to iterate over a const QJsonObject, you
+ should use QJsonObject::const_iterator. It is generally good practice to
+ use QJsonObject::const_iterator on a non-const QJsonObject as well, unless you
+ need to change the QJsonObject through the iterator. Const iterators are
+ slightly faster, and improves code readability.
+
+ The default QJsonObject::iterator constructor creates an uninitialized
+ iterator. You must initialize it using a QJsonObject function like
+ QJsonObject::begin(), QJsonObject::end(), or QJsonObject::find() before you can
+ start iterating.
+
+ Multiple iterators can be used on the same object. Existing iterators will however
+ become dangling once the object gets modified.
+
+ \sa QJsonObject::const_iterator
+*/
+
+/*! \typedef QJsonObject::iterator::difference_type
+
+ \internal
+*/
+
+/*! \typedef QJsonObject::iterator::iterator_category
+
+ A synonym for \i {std::bidirectional_iterator_tag} indicating
+ this iterator is a bidirectional iterator.
+*/
+
+/*! \typedef QJsonObject::iterator::reference
+
+ \internal
+*/
+
+/*! \typedef QJsonObject::iterator::value_type
+
+ \internal
+*/
+
+/*! \fn QJsonObject::iterator::iterator()
+
+ Constructs an uninitialized iterator.
+
+ Functions like key(), value(), and operator++() must not be
+ called on an uninitialized iterator. Use operator=() to assign a
+ value to it before using it.
+
+ \sa QJsonObject::begin() QJsonObject::end()
+*/
+
+/*! \fn QString QJsonObject::iterator::key() const
+
+ Returns the current item's key.
+
+ There is no direct way of changing an item's key through an
+ iterator, although it can be done by calling QJsonObject::erase()
+ followed by QJsonObject::insert().
+
+ \sa value()
+*/
+
+/*! \fn QJsonValueRef QJsonObject::iterator::value() const
+
+ Returns a modifiable reference to the current item's value.
+
+ You can change the value of an item by using value() on
+ the left side of an assignment.
+
+ The return value is of type QJsonValueRef, a helper class for QJsonArray
+ and QJsonObject. When you get an object of type QJsonValueRef, you can
+ use it as if it were a reference to a QJsonValue. If you assign to it,
+ the assignment will apply to the character in the QJsonArray of QJsonObject
+ from which you got the reference.
+
+ \sa key(), operator*()
+*/
+
+/*! \fn QJsonValueRef QJsonObject::iterator::operator*() const
+
+ Returns a modifiable reference to the current item's value.
+
+ Same as value().
+
+ The return value is of type QJsonValueRef, a helper class for QJsonArray
+ and QJsonObject. When you get an object of type QJsonValueRef, you can
+ use it as if it were a reference to a QJsonValue. If you assign to it,
+ the assignment will apply to the character in the QJsonArray of QJsonObject
+ from which you got the reference.
+
+ \sa key()
+*/
+
+/*!
+ \fn bool QJsonObject::iterator::operator==(const iterator &other) const
+ \fn bool QJsonObject::iterator::operator==(const const_iterator &other) const
+
+ Returns \c true if \a other points to the same item as this
+ iterator; otherwise returns \c false.
+
+ \sa operator!=()
+*/
+
+/*!
+ \fn bool QJsonObject::iterator::operator!=(const iterator &other) const
+ \fn bool QJsonObject::iterator::operator!=(const const_iterator &other) const
+
+ Returns \c true if \a other points to a different item than this
+ iterator; otherwise returns \c false.
+
+ \sa operator==()
+*/
+
+/*! \fn QJsonObject::iterator QJsonObject::iterator::operator++()
+
+ The prefix ++ operator, \c{++i}, advances the iterator to the
+ next item in the object and returns an iterator to the new current
+ item.
+
+ Calling this function on QJsonObject::end() leads to undefined results.
+
+ \sa operator--()
+*/
+
+/*! \fn QJsonObject::iterator QJsonObject::iterator::operator++(int)
+
+ \overload
+
+ The postfix ++ operator, \c{i++}, advances the iterator to the
+ next item in the object and returns an iterator to the previously
+ current item.
+*/
+
+/*! \fn QJsonObject::iterator QJsonObject::iterator::operator--()
+
+ The prefix -- operator, \c{--i}, makes the preceding item
+ current and returns an iterator pointing to the new current item.
+
+ Calling this function on QJsonObject::begin() leads to undefined
+ results.
+
+ \sa operator++()
+*/
+
+/*! \fn QJsonObject::iterator QJsonObject::iterator::operator--(int)
+
+ \overload
+
+ The postfix -- operator, \c{i--}, makes the preceding item
+ current and returns an iterator pointing to the previously
+ current item.
+*/
+
+/*! \fn QJsonObject::iterator QJsonObject::iterator::operator+(int j) const
+
+ Returns an iterator to the item at \a j positions forward from
+ this iterator. If \a j is negative, the iterator goes backward.
+
+ \sa operator-()
+
+*/
+
+/*! \fn QJsonObject::iterator QJsonObject::iterator::operator-(int j) const
+
+ Returns an iterator to the item at \a j positions backward from
+ this iterator. If \a j is negative, the iterator goes forward.
+
+ \sa operator+()
+*/
+
+/*! \fn QJsonObject::iterator &QJsonObject::iterator::operator+=(int j)
+
+ Advances the iterator by \a j items. If \a j is negative, the
+ iterator goes backward.
+
+ \sa operator-=(), operator+()
+*/
+
+/*! \fn QJsonObject::iterator &QJsonObject::iterator::operator-=(int j)
+
+ Makes the iterator go back by \a j items. If \a j is negative,
+ the iterator goes forward.
+
+ \sa operator+=(), operator-()
+*/
+
+/*! \class QJsonObject::const_iterator
+ \brief The QJsonObject::const_iterator class provides an STL-style const iterator for QJsonObject.
+
+ QJsonObject::const_iterator allows you to iterate over a QJsonObject.
+ If you want to modify the QJsonObject as you iterate
+ over it, you must use QJsonObject::iterator instead. It is generally
+ good practice to use QJsonObject::const_iterator on a non-const QJsonObject as
+ well, unless you need to change the QJsonObject through the iterator.
+ Const iterators are slightly faster and improves code
+ readability.
+
+ The default QJsonObject::const_iterator constructor creates an
+ uninitialized iterator. You must initialize it using a QJsonObject
+ function like QJsonObject::constBegin(), QJsonObject::constEnd(), or
+ QJsonObject::find() before you can start iterating.
+
+ Multiple iterators can be used on the same object. Existing iterators
+ will however become dangling if the object gets modified.
+
+ \sa QJsonObject::iterator, QJsonObjectIterator
+*/
+
+/*! \typedef QJsonObject::const_iterator::difference_type
+
+ \internal
+*/
+
+/*! \typedef QJsonObject::const_iterator::iterator_category
+
+ A synonym for \i {std::bidirectional_iterator_tag} indicating
+ this iterator is a bidirectional iterator.
+*/
+
+/*! \typedef QJsonObject::const_iterator::reference
+
+ \internal
+*/
+
+/*! \typedef QJsonObject::const_iterator::value_type
+
+ \internal
+*/
+
+/*! \fn QJsonObject::const_iterator::const_iterator()
+
+ Constructs an uninitialized iterator.
+
+ Functions like key(), value(), and operator++() must not be
+ called on an uninitialized iterator. Use operator=() to assign a
+ value to it before using it.
+
+ \sa QJsonObject::constBegin() QJsonObject::constEnd()
+*/
+
+/*! \fn QJsonObject::const_iterator::const_iterator(const iterator &other)
+
+ Constructs a copy of \a other.
+*/
+
+/*! \fn QString QJsonObject::const_iterator::key() const
+
+ Returns the current item's key.
+
+ \sa value()
+*/
+
+/*! \fn QJsonValue QJsonObject::const_iterator::value() const
+
+ Returns the current item's value.
+
+ \sa key(), operator*()
+*/
+
+/*! \fn QJsonValue QJsonObject::const_iterator::operator*() const
+
+ Returns the current item's value.
+
+ Same as value().
+
+ \sa key()
+*/
+
+/*! \fn bool QJsonObject::const_iterator::operator==(const const_iterator &other) const
+
+ Returns \c true if \a other points to the same item as this
+ iterator; otherwise returns \c false.
+
+ \sa operator!=()
+*/
+
+/*! \fn bool QJsonObject::const_iterator::operator!=(const const_iterator &other) const
+
+ Returns \c true if \a other points to a different item than this
+ iterator; otherwise returns \c false.
+
+ \sa operator==()
+*/
+
+/*! \fn QJsonObject::const_iterator QJsonObject::const_iterator::operator++()
+
+ The prefix ++ operator, \c{++i}, advances the iterator to the
+ next item in the object and returns an iterator to the new current
+ item.
+
+ Calling this function on QJsonObject::end() leads to undefined results.
+
+ \sa operator--()
+*/
+
+/*! \fn QJsonObject::const_iterator QJsonObject::const_iterator::operator++(int)
+
+ \overload
+
+ The postfix ++ operator, \c{i++}, advances the iterator to the
+ next item in the object and returns an iterator to the previously
+ current item.
+*/
+
+/*! \fn QJsonObject::const_iterator &QJsonObject::const_iterator::operator--()
+
+ The prefix -- operator, \c{--i}, makes the preceding item
+ current and returns an iterator pointing to the new current item.
+
+ Calling this function on QJsonObject::begin() leads to undefined
+ results.
+
+ \sa operator++()
+*/
+
+/*! \fn QJsonObject::const_iterator QJsonObject::const_iterator::operator--(int)
+
+ \overload
+
+ The postfix -- operator, \c{i--}, makes the preceding item
+ current and returns an iterator pointing to the previously
+ current item.
+*/
+
+/*! \fn QJsonObject::const_iterator QJsonObject::const_iterator::operator+(int j) const
+
+ Returns an iterator to the item at \a j positions forward from
+ this iterator. If \a j is negative, the iterator goes backward.
+
+ This operation can be slow for large \a j values.
+
+ \sa operator-()
+*/
+
+/*! \fn QJsonObject::const_iterator QJsonObject::const_iterator::operator-(int j) const
+
+ Returns an iterator to the item at \a j positions backward from
+ this iterator. If \a j is negative, the iterator goes forward.
+
+ This operation can be slow for large \a j values.
+
+ \sa operator+()
+*/
+
+/*! \fn QJsonObject::const_iterator &QJsonObject::const_iterator::operator+=(int j)
+
+ Advances the iterator by \a j items. If \a j is negative, the
+ iterator goes backward.
+
+ This operation can be slow for large \a j values.
+
+ \sa operator-=(), operator+()
+*/
+
+/*! \fn QJsonObject::const_iterator &QJsonObject::const_iterator::operator-=(int j)
+
+ Makes the iterator go back by \a j items. If \a j is negative,
+ the iterator goes forward.
+
+ This operation can be slow for large \a j values.
+
+ \sa operator+=(), operator-()
+*/
+
+
+/*!
+ \internal
+ */
+void QJsonObject::detach(uint reserve)
+{
+ if (!d) {
+ d = new QJsonPrivate::Data(reserve, QJsonValue::Object);
+ o = static_cast<QJsonPrivate::Object *>(d->header->root());
+ d->ref.ref();
+ return;
+ }
+ if (reserve == 0 && d->ref.load() == 1)
+ return;
+
+ QJsonPrivate::Data *x = d->clone(o, reserve);
+ x->ref.ref();
+ if (!d->ref.deref())
+ delete d;
+ d = x;
+ o = static_cast<QJsonPrivate::Object *>(d->header->root());
+}
+
+/*!
+ \internal
+ */
+void QJsonObject::compact()
+{
+ if (!d || !d->compactionCounter)
+ return;
+
+ detach();
+ d->compact();
+ o = static_cast<QJsonPrivate::Object *>(d->header->root());
+}
+
+/*!
+ \internal
+ */
+QString QJsonObject::keyAt(int i) const
+{
+ Q_ASSERT(o && i >= 0 && i < (int)o->length);
+
+ QJsonPrivate::Entry *e = o->entryAt(i);
+ return e->key();
+}
+
+/*!
+ \internal
+ */
+QJsonValue QJsonObject::valueAt(int i) const
+{
+ if (!o || i < 0 || i >= (int)o->length)
+ return QJsonValue(QJsonValue::Undefined);
+
+ QJsonPrivate::Entry *e = o->entryAt(i);
+ return QJsonValue(d, o, e->value);
+}
+
+/*!
+ \internal
+ */
+void QJsonObject::setValueAt(int i, const QJsonValue &val)
+{
+ Q_ASSERT(o && i >= 0 && i < (int)o->length);
+
+ QJsonPrivate::Entry *e = o->entryAt(i);
+ insert(e->key(), val);
+}
+
+/*! \typedef QJsonObject::Iterator
+
+ Qt-style synonym for QJsonObject::iterator.
+*/
+
+/*! \typedef QJsonObject::ConstIterator
+
+ Qt-style synonym for QJsonObject::const_iterator.
+*/
+
+
+/*! \class QJsonObject::iterator
+ \ingroup json
+ \reentrant
+ \since 5.0
+
+ \brief The QJsonDocument::iterator class provides a way to iterate over q QJsonObject
+
+
+ */
+
+#ifndef QT_NO_DEBUG_STREAM
+QDebug operator<<(QDebug dbg, const QJsonObject &o)
+{
+ if (!o.o) {
+ dbg << "QJsonObject()";
+ return dbg;
+ }
+ QByteArray json;
+ QJsonPrivate::Writer::objectToJson(o.o, json, 0, true);
+ dbg.nospace() << "QJsonObject("
+ << json.constData() // print as utf-8 string without extra quotation marks
+ << ")";
+ return dbg.space();
+}
+#endif
+
+QT_END_NAMESPACE
diff --git a/src/corelib/json/qjsonobject.h b/src/corelib/json/qjsonobject.h
new file mode 100644
index 0000000000..d2831a3cea
--- /dev/null
+++ b/src/corelib/json/qjsonobject.h
@@ -0,0 +1,218 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QJSONOBJECT_H
+#define QJSONOBJECT_H
+
+#include <QtCore/qjsonvalue.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QDebug;
+template <class Key, class T> class QMap;
+typedef QMap<QString, QVariant> QVariantMap;
+
+class Q_CORE_EXPORT QJsonObject
+{
+public:
+ QJsonObject();
+ ~QJsonObject();
+
+ QJsonObject(const QJsonObject &other);
+ QJsonObject &operator =(const QJsonObject &other);
+
+ static QJsonObject fromVariantMap(const QVariantMap &map);
+ QVariantMap toVariantMap() const;
+
+ QStringList keys() const;
+ int size() const;
+ inline int count() const { return size(); }
+ inline int length() const { return size(); }
+ bool isEmpty() const;
+
+ QJsonValue value(const QString &key) const;
+ QJsonValue operator[] (const QString &key) const;
+ QJsonValueRef operator[] (const QString &key);
+
+ void remove(const QString &key);
+ QJsonValue take(const QString &key);
+ bool contains(const QString &key) const;
+
+ bool operator==(const QJsonObject &other) const;
+ bool operator!=(const QJsonObject &other) const;
+
+ class const_iterator;
+
+ class iterator
+ {
+ friend class const_iterator;
+ friend class QJsonObject;
+ QJsonObject *o;
+ int i;
+
+ public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef int difference_type;
+ typedef QJsonValue value_type;
+// typedef T *pointer;
+ typedef QJsonValueRef reference;
+
+ Q_DECL_CONSTEXPR inline iterator() : o(0), i(0) {}
+ Q_DECL_CONSTEXPR inline iterator(QJsonObject *obj, int index) : o(obj), i(index) {}
+
+ inline QString key() const { return o->keyAt(i); }
+ inline QJsonValueRef value() const { return QJsonValueRef(o, i); }
+ inline QJsonValueRef operator*() const { return QJsonValueRef(o, i); }
+ //inline T *operator->() const { return &concrete(i)->value; }
+ inline bool operator==(const iterator &other) const { return i == other.i; }
+ inline bool operator!=(const iterator &other) const { return i != other.i; }
+
+ inline iterator &operator++() { ++i; return *this; }
+ inline iterator operator++(int) { iterator r = *this; ++i; return r; }
+ inline iterator &operator--() { --i; return *this; }
+ inline iterator operator--(int) { iterator r = *this; --i; return r; }
+ inline iterator operator+(int j) const
+ { iterator r = *this; r.i += j; return r; }
+ inline iterator operator-(int j) const { return operator+(-j); }
+ inline iterator &operator+=(int j) { i += j; return *this; }
+ inline iterator &operator-=(int j) { i -= j; return *this; }
+
+ public:
+ inline bool operator==(const const_iterator &other) const { return i == other.i; }
+ inline bool operator!=(const const_iterator &other) const { return i != other.i; }
+ };
+ friend class iterator;
+
+ class const_iterator
+ {
+ friend class iterator;
+ const QJsonObject *o;
+ int i;
+
+ public:
+ typedef std::bidirectional_iterator_tag iterator_category;
+ typedef int difference_type;
+ typedef QJsonValue value_type;
+ typedef QJsonValue reference;
+
+ Q_DECL_CONSTEXPR inline const_iterator() : o(0), i(0) {}
+ Q_DECL_CONSTEXPR inline const_iterator(const QJsonObject *obj, int index)
+ : o(obj), i(index) {}
+ inline const_iterator(const iterator &other)
+ : o(other.o), i(other.i) {}
+
+ inline QString key() const { return o->keyAt(i); }
+ inline QJsonValue value() const { return o->valueAt(i); }
+ inline QJsonValue operator*() const { return o->valueAt(i); }
+ //inline const T *operator->() const { return &concrete(i)->value; }
+ inline bool operator==(const const_iterator &other) const { return i == other.i; }
+ inline bool operator!=(const const_iterator &other) const { return i != other.i; }
+
+ inline const_iterator &operator++() { ++i; return *this; }
+ inline const_iterator operator++(int) { const_iterator r = *this; ++i; return r; }
+ inline const_iterator &operator--() { --i; return *this; }
+ inline const_iterator operator--(int) { const_iterator r = *this; --i; return r; }
+ inline const_iterator operator+(int j) const
+ { const_iterator r = *this; r.i += j; return r; }
+ inline const_iterator operator-(int j) const { return operator+(-j); }
+ inline const_iterator &operator+=(int j) { i += j; return *this; }
+ inline const_iterator &operator-=(int j) { i -= j; return *this; }
+
+ inline bool operator==(const iterator &other) const { return i == other.i; }
+ inline bool operator!=(const iterator &other) const { return i != other.i; }
+ };
+ friend class const_iterator;
+
+ // STL style
+ inline iterator begin() { detach(); return iterator(this, 0); }
+ inline const_iterator begin() const { return const_iterator(this, 0); }
+ inline const_iterator constBegin() const { return const_iterator(this, 0); }
+ inline iterator end() { detach(); return iterator(this, size()); }
+ inline const_iterator end() const { return const_iterator(this, size()); }
+ inline const_iterator constEnd() const { return const_iterator(this, size()); }
+ iterator erase(iterator it);
+
+ // more Qt
+ typedef iterator Iterator;
+ typedef const_iterator ConstIterator;
+ iterator find(const QString &key);
+ const_iterator find(const QString &key) const { return constFind(key); }
+ const_iterator constFind(const QString &key) const;
+ iterator insert(const QString &key, const QJsonValue &value);
+
+ // STL compatibility
+ typedef QJsonValue mapped_type;
+ typedef QString key_type;
+ typedef int size_type;
+
+ inline bool empty() const { return isEmpty(); }
+
+private:
+ friend class QJsonPrivate::Data;
+ friend class QJsonValue;
+ friend class QJsonDocument;
+ friend class QJsonValueRef;
+
+ friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonObject &);
+
+ QJsonObject(QJsonPrivate::Data *data, QJsonPrivate::Object *object);
+ void detach(uint reserve = 0);
+ void compact();
+
+ QString keyAt(int i) const;
+ QJsonValue valueAt(int i) const;
+ void setValueAt(int i, const QJsonValue &val);
+
+ QJsonPrivate::Data *d;
+ QJsonPrivate::Object *o;
+};
+
+#ifndef QT_NO_DEBUG_STREAM
+Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonObject &);
+#endif
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QJSONOBJECT_H
diff --git a/src/corelib/json/qjsonparser.cpp b/src/corelib/json/qjsonparser.cpp
new file mode 100644
index 0000000000..75ed7de48f
--- /dev/null
+++ b/src/corelib/json/qjsonparser.cpp
@@ -0,0 +1,752 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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 <qdebug.h>
+#include "qjsonparser_p.h"
+#include "qjson_p.h"
+
+//#define PARSER_DEBUG
+#ifdef PARSER_DEBUG
+static int indent = 0;
+#define BEGIN qDebug() << QByteArray(4*indent++, ' ').constData() << "pos=" << current
+#define END --indent
+#define DEBUG qDebug() << QByteArray(4*indent, ' ').constData()
+#else
+#define BEGIN if (1) ; else qDebug()
+#define END do {} while (0)
+#define DEBUG if (1) ; else qDebug()
+#endif
+
+QT_BEGIN_NAMESPACE
+
+using namespace QJsonPrivate;
+
+Parser::Parser(const char *json, int length)
+ : json(json), data(0), dataLength(0), current(0)
+{
+ end = json + length;
+}
+
+
+
+/*
+
+begin-array = ws %x5B ws ; [ left square bracket
+
+begin-object = ws %x7B ws ; { left curly bracket
+
+end-array = ws %x5D ws ; ] right square bracket
+
+end-object = ws %x7D ws ; } right curly bracket
+
+name-separator = ws %x3A ws ; : colon
+
+value-separator = ws %x2C ws ; , comma
+
+Insignificant whitespace is allowed before or after any of the six
+structural characters.
+
+ws = *(
+ %x20 / ; Space
+ %x09 / ; Horizontal tab
+ %x0A / ; Line feed or New line
+ %x0D ; Carriage return
+ )
+
+*/
+
+enum {
+ Space = 0x20,
+ Tab = 0x09,
+ LineFeed = 0x0a,
+ Return = 0x0d,
+ BeginArray = 0x5b,
+ BeginObject = 0x7b,
+ EndArray = 0x5d,
+ EndObject = 0x7d,
+ NameSeparator = 0x3a,
+ ValueSeparator = 0x2c,
+ Quote = 0x22
+};
+
+
+
+bool Parser::eatSpace()
+{
+ while (json < end) {
+ if (*json > Space)
+ break;
+ if (*json != Space &&
+ *json != Tab &&
+ *json != LineFeed &&
+ *json != Return)
+ break;
+ ++json;
+ }
+ return (json < end);
+}
+
+char Parser::nextToken()
+{
+ if (!eatSpace())
+ return 0;
+ char token = *json++;
+ switch (token) {
+ case BeginArray:
+ case BeginObject:
+ case NameSeparator:
+ case ValueSeparator:
+ if (!eatSpace())
+ return 0;
+ case EndArray:
+ case EndObject:
+ eatSpace();
+ case Quote:
+ break;
+ default:
+ token = 0;
+ break;
+ }
+ return token;
+}
+
+/*
+ JSON-text = object / array
+*/
+QJsonDocument Parser::parse()
+{
+#ifdef PARSER_DEBUG
+ indent = 0;
+ qDebug() << ">>>>> parser begin";
+#endif
+ // allocate some space
+ dataLength = qMax(end - json, (ptrdiff_t) 256);
+ data = (char *)malloc(dataLength);
+
+ // fill in Header data
+ QJsonPrivate::Header *h = (QJsonPrivate::Header *)data;
+ h->tag = QJsonDocument::BinaryFormatTag;
+ h->version = 1u;
+
+ current = sizeof(QJsonPrivate::Header);
+
+ char token = nextToken();
+ DEBUG << token;
+ if (token == BeginArray) {
+ if (!parseArray())
+ goto error;
+ } else if (token == BeginObject) {
+ if (!parseObject())
+ goto error;
+ } else {
+ goto error;
+ }
+
+ END;
+ {
+ QJsonPrivate::Data *d = new QJsonPrivate::Data(data, current);
+ return QJsonDocument(d);
+ }
+
+error:
+#ifdef PARSER_DEBUG
+ qDebug() << ">>>>> parser error";
+#endif
+ free(data);
+ return QJsonDocument();
+}
+
+
+void Parser::ParsedObject::insert(uint offset) {
+ const QJsonPrivate::Entry *newEntry = reinterpret_cast<const QJsonPrivate::Entry *>(parser->data + objectPosition + offset);
+ int min = 0;
+ int n = offsets.size();
+ while (n > 0) {
+ int half = n >> 1;
+ int middle = min + half;
+ if (*entryAt(middle) >= *newEntry) {
+ n = half;
+ } else {
+ min = middle + 1;
+ n -= half + 1;
+ }
+ }
+ if (min < offsets.size() && *entryAt(min) == *newEntry) {
+ offsets[min] = offset;
+ } else {
+ offsets.insert(min, offset);
+ }
+}
+
+/*
+ object = begin-object [ member *( value-separator member ) ]
+ end-object
+*/
+
+bool Parser::parseObject()
+{
+ int objectOffset = reserveSpace(sizeof(QJsonPrivate::Object));
+ BEGIN << "parseObject pos=" << objectOffset << current << json;
+
+ ParsedObject parsedObject(this, objectOffset);
+
+ char token = nextToken();
+ while (token == Quote) {
+ int off = current - objectOffset;
+ if (!parseMember(objectOffset))
+ return false;
+ parsedObject.insert(off);
+ token = nextToken();
+ if (token != ValueSeparator)
+ break;
+ token = nextToken();
+ }
+
+ DEBUG << "end token=" << token;
+ if (token != EndObject)
+ return false;
+
+ DEBUG << "numEntries" << parsedObject.offsets.size();
+ int table = objectOffset;
+ // finalize the object
+ if (parsedObject.offsets.size()) {
+ int tableSize = parsedObject.offsets.size()*sizeof(uint);
+ table = reserveSpace(tableSize);
+#if Q_BYTE_ORDER == Q_LITTLE_ENDIAN
+ memcpy(data + table, parsedObject.offsets.constData(), tableSize);
+#else
+ offset *o = (offset *)(data + table);
+ for (int i = 0; i < tableSize; ++i)
+ o[i] = parsedObject.offsets[i];
+
+#endif
+ }
+
+ QJsonPrivate::Object *o = (QJsonPrivate::Object *)(data + objectOffset);
+ o->tableOffset = table - objectOffset;
+ o->size = current - objectOffset;
+ o->is_object = true;
+ o->length = parsedObject.offsets.size();
+
+ DEBUG << "current=" << current;
+ END;
+ return true;
+}
+
+/*
+ member = string name-separator value
+*/
+bool Parser::parseMember(int baseOffset)
+{
+ int entryOffset = reserveSpace(sizeof(QJsonPrivate::Entry));
+ BEGIN << "parseMember pos=" << entryOffset;
+
+ bool latin1;
+ if (!parseString(&latin1))
+ return false;
+ char token = nextToken();
+ if (token != NameSeparator)
+ return false;
+ QJsonPrivate::Value val;
+ if (!parseValue(&val, baseOffset))
+ return false;
+
+ // finalize the entry
+ QJsonPrivate::Entry *e = (QJsonPrivate::Entry *)(data + entryOffset);
+ e->value = val;
+ e->value.latinKey = latin1;
+
+ END;
+ return true;
+}
+
+/*
+ array = begin-array [ value *( value-separator value ) ] end-array
+*/
+bool Parser::parseArray()
+{
+ BEGIN << "parseArray";
+ int arrayOffset = reserveSpace(sizeof(QJsonPrivate::Array));
+
+ QVarLengthArray<QJsonPrivate::Value> values;
+
+ if (!eatSpace())
+ return false;
+ if (*json == EndArray) {
+ nextToken();
+ } else {
+ while (1) {
+ QJsonPrivate::Value val;
+ if (!parseValue(&val, arrayOffset))
+ return false;
+ values.append(val);
+ char token = nextToken();
+ if (token == EndArray)
+ break;
+ else if (token != ValueSeparator)
+ return false;
+ }
+ }
+
+ DEBUG << "size =" << values.size();
+ int table = arrayOffset;
+ // finalize the object
+ if (values.size()) {
+ int tableSize = values.size()*sizeof(QJsonPrivate::Value);
+ table = reserveSpace(tableSize);
+ memcpy(data + table, values.constData(), tableSize);
+ }
+
+ QJsonPrivate::Array *a = (QJsonPrivate::Array *)(data + arrayOffset);
+ a->tableOffset = table - arrayOffset;
+ a->size = current - arrayOffset;
+ a->is_object = false;
+ a->length = values.size();
+
+ DEBUG << "current=" << current;
+ END;
+ return true;
+}
+
+/*
+value = false / null / true / object / array / number / string
+
+*/
+
+bool Parser::parseValue(QJsonPrivate::Value *val, int baseOffset)
+{
+ BEGIN << "parse Value" << json;
+ val->_dummy = 0;
+
+ switch (*json++) {
+ case 'n':
+ if (end - json < 4)
+ return false;
+ if (*json++ == 'u' &&
+ *json++ == 'l' &&
+ *json++ == 'l') {
+ val->type = QJsonValue::Null;
+ DEBUG << "value: null";
+ END;
+ return true;
+ }
+ return false;
+ case 't':
+ if (end - json < 4)
+ return false;
+ if (*json++ == 'r' &&
+ *json++ == 'u' &&
+ *json++ == 'e') {
+ val->type = QJsonValue::Bool;
+ val->value = true;
+ DEBUG << "value: true";
+ END;
+ return true;
+ }
+ return false;
+ case 'f':
+ if (end - json < 5)
+ return false;
+ if (*json++ == 'a' &&
+ *json++ == 'l' &&
+ *json++ == 's' &&
+ *json++ == 'e') {
+ val->type = QJsonValue::Bool;
+ val->value = false;
+ DEBUG << "value: false";
+ END;
+ return true;
+ }
+ return false;
+ case Quote: {
+ val->type = QJsonValue::String;
+ val->value = current - baseOffset;
+ bool latin1;
+ if (!parseString(&latin1))
+ return false;
+ val->latinOrIntValue = latin1;
+ DEBUG << "value: string";
+ END;
+ return true;
+ }
+ case BeginArray:
+ val->type = QJsonValue::Array;
+ val->value = current - baseOffset;
+ if (!parseArray())
+ return false;
+ DEBUG << "value: array";
+ END;
+ return true;
+ case BeginObject:
+ val->type = QJsonValue::Object;
+ val->value = current - baseOffset;
+ if (!parseObject())
+ return false;
+ DEBUG << "value: object";
+ END;
+ return true;
+ default:
+ --json;
+ if (!parseNumber(val, baseOffset))
+ return false;
+ DEBUG << "value: number";
+ END;
+ }
+
+ return true;
+}
+
+
+
+
+
+/*
+ number = [ minus ] int [ frac ] [ exp ]
+ decimal-point = %x2E ; .
+ digit1-9 = %x31-39 ; 1-9
+ e = %x65 / %x45 ; e E
+ exp = e [ minus / plus ] 1*DIGIT
+ frac = decimal-point 1*DIGIT
+ int = zero / ( digit1-9 *DIGIT )
+ minus = %x2D ; -
+ plus = %x2B ; +
+ zero = %x30 ; 0
+
+*/
+
+bool Parser::parseNumber(QJsonPrivate::Value *val, int baseOffset)
+{
+ BEGIN << "parseNumber" << json;
+ val->type = QJsonValue::Double;
+
+ const char *start = json;
+ bool isInt = true;
+
+ // minus
+ if (json < end && *json == '-')
+ ++json;
+
+ // int = zero / ( digit1-9 *DIGIT )
+ if (json < end && *json == '0') {
+ ++json;
+ } else {
+ while (json < end && *json >= '0' && *json <= '9')
+ ++json;
+ }
+
+ // frac = decimal-point 1*DIGIT
+ if (json < end && *json == '.') {
+ isInt = false;
+ ++json;
+ while (json < end && *json >= '0' && *json <= '9')
+ ++json;
+ }
+
+ // exp = e [ minus / plus ] 1*DIGIT
+ if (json < end && (*json == 'e' || *json == 'E')) {
+ isInt = false;
+ ++json;
+ if (json < end && (*json == '-' || *json == '+'))
+ ++json;
+ while (json < end && *json >= '0' && *json <= '9')
+ ++json;
+ }
+
+ if (json >= end)
+ return false;
+
+ QByteArray number(start, json - start);
+ DEBUG << "numberstring" << number;
+
+ if (isInt) {
+ bool ok;
+ int n = number.toInt(&ok);
+ if (ok && n < (1<<25) && n > -(1<<25)) {
+ val->int_value = n;
+ val->latinOrIntValue = true;
+ END;
+ return true;
+ }
+ }
+
+ bool ok;
+ union {
+ quint64 ui;
+ double d;
+ };
+ d = number.toDouble(&ok);
+
+ if (!ok)
+ return false;
+
+ int pos = reserveSpace(sizeof(double));
+ *(quint64 *)(data + pos) = qToLittleEndian(ui);
+ val->value = pos - baseOffset;
+ val->latinOrIntValue = false;
+
+ END;
+ return true;
+}
+
+/*
+
+ string = quotation-mark *char quotation-mark
+
+ char = unescaped /
+ escape (
+ %x22 / ; " quotation mark U+0022
+ %x5C / ; \ reverse solidus U+005C
+ %x2F / ; / solidus U+002F
+ %x62 / ; b backspace U+0008
+ %x66 / ; f form feed U+000C
+ %x6E / ; n line feed U+000A
+ %x72 / ; r carriage return U+000D
+ %x74 / ; t tab U+0009
+ %x75 4HEXDIG ) ; uXXXX U+XXXX
+
+ escape = %x5C ; \
+
+ quotation-mark = %x22 ; "
+
+ unescaped = %x20-21 / %x23-5B / %x5D-10FFFF
+ */
+static inline bool addHexDigit(char digit, uint *result)
+{
+ *result <<= 4;
+ if (digit >= '0' && digit <= '9')
+ *result |= (digit - '0');
+ else if (digit >= 'a' && digit <= 'f')
+ *result |= (digit - 'a');
+ else if (digit >= 'A' && digit <= 'F')
+ *result |= (digit - 'A');
+ else
+ return false;
+ return true;
+}
+
+static inline bool scanEscapeSequence(const char *&json, const char *end, uint *ch)
+{
+ ++json;
+ if (json >= end)
+ return false;
+
+ DEBUG << "scan escape" << (char)*json;
+ uint escaped = *json++;
+ switch (escaped) {
+ case '"':
+ *ch = '"'; break;
+ case '\\':
+ *ch = '\\'; break;
+ case '/':
+ *ch = '/'; break;
+ case 'b':
+ *ch = 0x8; break;
+ case 'f':
+ *ch = 0xc; break;
+ case 'n':
+ *ch = 0xa; break;
+ case 'r':
+ *ch = 0xd; break;
+ case 't':
+ *ch = 0x9; break;
+ case 'u': {
+ *ch = 0;
+ if (json > end - 4)
+ return false;
+ for (int i = 0; i < 4; ++i) {
+ if (!addHexDigit(*json, ch))
+ return false;
+ ++json;
+ }
+ return true;
+ }
+ default:
+ // this is not as strict as one could be, but allows for more Json files
+ // to be parsed correctly.
+ *ch = escaped;
+ return true;
+ }
+ return true;
+}
+
+static inline bool isUnicodeNonCharacter(uint ucs4)
+{
+ // Unicode has a couple of "non-characters" that one can use internally,
+ // but are not allowed to be used for text interchange.
+ //
+ // Those are the last two entries each Unicode Plane (U+FFFE, U+FFFF,
+ // U+1FFFE, U+1FFFF, etc.) as well as the entries between U+FDD0 and
+ // U+FDEF (inclusive)
+
+ return (ucs4 & 0xfffe) == 0xfffe
+ || (ucs4 - 0xfdd0U) < 16;
+}
+
+static inline bool scanUtf8Char(const char *&json, const char *end, uint *result)
+{
+ int need;
+ uint min_uc;
+ uint uc;
+ uchar ch = *json++;
+ if (ch < 128) {
+ *result = ch;
+ return true;
+ } else if ((ch & 0xe0) == 0xc0) {
+ uc = ch & 0x1f;
+ need = 1;
+ min_uc = 0x80;
+ } else if ((ch & 0xf0) == 0xe0) {
+ uc = ch & 0x0f;
+ need = 2;
+ min_uc = 0x800;
+ } else if ((ch&0xf8) == 0xf0) {
+ uc = ch & 0x07;
+ need = 3;
+ min_uc = 0x10000;
+ } else {
+ return false;
+ }
+
+ if (json >= end - need)
+ return false;
+
+ for (int i = 0; i < need; ++i) {
+ ch = *json++;
+ if ((ch&0xc0) != 0x80)
+ return false;
+ uc = (uc << 6) | (ch & 0x3f);
+ }
+
+ if (isUnicodeNonCharacter(uc) || uc >= 0x110000 ||
+ (uc < min_uc) || (uc >= 0xd800 && uc <= 0xdfff))
+ return false;
+
+ *result = uc;
+ return true;
+}
+
+bool Parser::parseString(bool *latin1)
+{
+ *latin1 = true;
+
+ const char *start = json;
+ int outStart = current;
+
+ // try to write out a latin1 string
+
+ int stringPos = reserveSpace(2);
+ BEGIN << "parse string stringPos=" << stringPos << json;
+ while (json < end) {
+ uint ch = 0;
+ if (*json == '"')
+ break;
+ else if (*json == '\\') {
+ if (!scanEscapeSequence(json, end, &ch))
+ return false;
+ } else {
+ if (!scanUtf8Char(json, end, &ch))
+ return false;
+ }
+ if (ch > 0xff) {
+ *latin1 = false;
+ break;
+ }
+ int pos = reserveSpace(1);
+ DEBUG << " " << ch << (char)ch;
+ data[pos] = (uchar)ch;
+ }
+ ++json;
+ DEBUG << "end of string";
+ if (json >= end)
+ return false;
+
+ // no unicode string, we are done
+ if (*latin1) {
+ // write string length
+ *(QJsonPrivate::qle_ushort *)(data + stringPos) = current - outStart - sizeof(ushort);
+ int pos = reserveSpace((4 - current) & 3);
+ while (pos & 3)
+ data[pos++] = 0;
+ END;
+ return true;
+ }
+
+ *latin1 = false;
+ DEBUG << "not latin";
+
+ json = start;
+ current = outStart + sizeof(int);
+
+ while (json < end) {
+ uint ch = 0;
+ if (*json == '"')
+ break;
+ else if (*json == '\\') {
+ if (!scanEscapeSequence(json, end, &ch))
+ return false;
+ } else {
+ if (!scanUtf8Char(json, end, &ch))
+ return false;
+ }
+ if (ch > 0xffff) {
+ int pos = reserveSpace(4);
+ *(QJsonPrivate::qle_ushort *)(data + pos) = QChar::highSurrogate(ch);
+ *(QJsonPrivate::qle_ushort *)(data + pos + 2) = QChar::lowSurrogate(ch);
+ } else {
+ int pos = reserveSpace(2);
+ *(QJsonPrivate::qle_ushort *)(data + pos) = (ushort)ch;
+ }
+ }
+ ++json;
+
+ if (json >= end)
+ return false;
+
+ // write string length
+ *(QJsonPrivate::qle_int *)(data + stringPos) = (current - outStart - sizeof(int))/2;
+ int pos = reserveSpace((4 - current) & 3);
+ while (pos & 3)
+ data[pos++] = 0;
+ END;
+ return true;
+}
+
+QT_END_NAMESPACE
diff --git a/src/corelib/json/qjsonparser_p.h b/src/corelib/json/qjsonparser_p.h
new file mode 100644
index 0000000000..eae6c08718
--- /dev/null
+++ b/src/corelib/json/qjsonparser_p.h
@@ -0,0 +1,118 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QJSONPARSER_P_H
+#define QJSONPARSER_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include <qjsondocument.h>
+#include <qvarlengtharray.h>
+
+QT_BEGIN_NAMESPACE
+
+namespace QJsonPrivate {
+
+class Parser
+{
+public:
+ Parser(const char *json, int length);
+
+ QJsonDocument parse();
+
+ class ParsedObject
+ {
+ public:
+ ParsedObject(Parser *p, int pos) : parser(p), objectPosition(pos) {}
+ void insert(uint offset);
+
+ Parser *parser;
+ int objectPosition;
+ QVarLengthArray<uint> offsets;
+
+ inline QJsonPrivate::Entry *entryAt(int i) const {
+ return reinterpret_cast<QJsonPrivate::Entry *>(parser->data + objectPosition + offsets[i]);
+ }
+ };
+
+
+private:
+ inline bool eatSpace();
+ inline char nextToken();
+
+ bool parseObject();
+ bool parseArray();
+ bool parseMember(int baseOffset);
+ bool parseString(bool *latin1);
+ bool parseValue(QJsonPrivate::Value *val, int baseOffset);
+ bool parseNumber(QJsonPrivate::Value *val, int baseOffset);
+ const char *json;
+ const char *end;
+
+ char *data;
+ int dataLength;
+ int current;
+
+ inline int reserveSpace(int space) {
+ if (current + space >= dataLength) {
+ dataLength = 2*dataLength + space;
+ data = (char *)realloc(data, dataLength);
+ }
+ int pos = current;
+ current += space;
+ return pos;
+ }
+};
+
+}
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/corelib/json/qjsonvalue.cpp b/src/corelib/json/qjsonvalue.cpp
new file mode 100644
index 0000000000..603cba8897
--- /dev/null
+++ b/src/corelib/json/qjsonvalue.cpp
@@ -0,0 +1,569 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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 <qjsonobject.h>
+#include <qjsonvalue.h>
+#include <qjsonarray.h>
+#include <qjsonarray.h>
+#include <qvariant.h>
+#include <qstringlist.h>
+#include <qdebug.h>
+
+#include "qjson_p.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QJsonValue
+ \ingroup json
+ \reentrant
+ \since 5.0
+
+ \brief The QJsonValue class encapsulates a value in JSON.
+
+ A value in JSON can be one of 6 basic types:
+
+ JSON is a format to store structured data. It has 6 basic data types:
+
+ \list
+ \o bool QJsonValue::Bool
+ \o double QJsonValue::Double
+ \o string QJsonValue::String
+ \o array QJsonValue::Array
+ \o object QJsonValue::Object
+ \o null QJsonValue::Null
+ \endlist
+
+ A value can represent any of the above data types. In addition, QJsonValue has one special
+ flag to represent undefined values. This can be queried with isUndefined().
+
+ The type of the value can be queried with type() or accessors like isBool(), isString(), and so on.
+ Likewise, the value can be converted to the type stored in it using the toBool(), toString() and so on.
+
+ Values are strictly typed internally and contrary to QVariant will not attempt to do any implicit type
+ conversions. This implies that converting to a type that is not stored in the value will return a default
+ constructed return value.
+*/
+
+/*!
+ Creates a QJsonValue of type \a type.
+
+ The default is to create a Null value.
+ */
+QJsonValue::QJsonValue(Type type)
+ : ui(0), d(0), t(type)
+{
+}
+
+/*!
+ \internal
+ */
+QJsonValue::QJsonValue(QJsonPrivate::Data *data, QJsonPrivate::Base *base, const QJsonPrivate::Value &v)
+ : d(0)
+{
+ t = (Type)(uint)v.type;
+ switch (t) {
+ case Undefined:
+ case Null:
+ dbl = 0;
+ break;
+ case Bool:
+ b = v.toBoolean();
+ break;
+ case Double:
+ dbl = v.toDouble(base);
+ break;
+ case String: {
+ QString s = v.toString(base);
+ stringData = s.data_ptr();
+ stringData->ref.ref();
+ break;
+ }
+ case Array:
+ case Object:
+ d = data;
+ this->base = v.base(base);
+ break;
+ }
+ if (d)
+ d->ref.ref();
+}
+
+/*!
+ Creates a value of type Bool, with value \a b.
+ */
+QJsonValue::QJsonValue(bool b)
+ : d(0), t(Bool)
+{
+ this->b = b;
+}
+
+/*!
+ Creates a value of type Double, with value \a n.
+ */
+QJsonValue::QJsonValue(double n)
+ : d(0), t(Double)
+{
+ this->dbl = n;
+}
+
+/*!
+ \overload
+ Creates a value of type Double, with value \a n.
+ */
+QJsonValue::QJsonValue(int n)
+ : d(0), t(Double)
+{
+ this->dbl = n;
+}
+
+/*!
+ Creates a value of type String, with value \a s.
+ */
+QJsonValue::QJsonValue(const QString &s)
+ : d(0), t(String)
+{
+ stringData = *(QStringData **)(&s);
+ stringData->ref.ref();
+}
+
+/*!
+ Creates a value of type String, with value \a s.
+ */
+QJsonValue::QJsonValue(const QLatin1String &s)
+ : d(0), t(String)
+{
+ // ### FIXME: Avoid creating the temp QString below
+ QString str(s);
+ stringData = *(QStringData **)(&str);
+ stringData->ref.ref();
+}
+
+/*!
+ Creates a value of type Array, with value \a a.
+ */
+QJsonValue::QJsonValue(const QJsonArray &a)
+ : d(a.d), t(Array)
+{
+ base = a.a;
+ if (d)
+ d->ref.ref();
+}
+
+/*!
+ Creates a value of type Object, with value \a o.
+ */
+QJsonValue::QJsonValue(const QJsonObject &o)
+ : d(o.d), t(Object)
+{
+ base = o.o;
+ if (d)
+ d->ref.ref();
+}
+
+
+/*!
+ Destroys the value.
+ */
+QJsonValue::~QJsonValue()
+{
+ if (t == String && stringData && !stringData->ref.deref())
+ free(stringData);
+
+ if (d && !d->ref.deref())
+ delete d;
+}
+
+/*!
+ Creates a copy of \a other.
+ */
+QJsonValue::QJsonValue(const QJsonValue &other)
+{
+ t = other.t;
+ d = other.d;
+ ui = other.ui;
+ if (d)
+ d->ref.ref();
+
+ if (t == String && stringData)
+ stringData->ref.ref();
+}
+
+/*!
+ Assigns the value stored in \a other to this object.
+ */
+QJsonValue &QJsonValue::operator =(const QJsonValue &other)
+{
+ if (t == String && stringData && !stringData->ref.deref())
+ free(stringData);
+
+ t = other.t;
+ dbl = other.dbl;
+
+ if (d != other.d) {
+
+ if (d && !d->ref.deref())
+ delete d;
+ d = other.d;
+ if (d)
+ d->ref.ref();
+
+ }
+
+ if (t == String && stringData)
+ stringData->ref.ref();
+
+ return *this;
+}
+
+/*!
+ Converts \a variant to a QJsonValue and returns it.
+
+ The conversion will convert QVariant types as follows:
+
+ \list
+ \o QVariant::Bool to Bool
+ \o QVariant::Int
+ \o QVariant::Double
+ \o QVariant::LongLong
+ \o QVariant::ULongLong
+ \o QVariant::UInt to Double
+ \o QVariant::String to String
+ \o QVariant::StringList
+ \o QVariant::VariantList to Array
+ \o QVariant::VariantMap to Object
+ \endlist
+
+ For all other QVariant types a conversion to a QString will be attempted. If the returned string
+ is empty, a Null QJsonValue will be stored, otherwise a String value using the returned QString.
+
+ \sa toVariant()
+ */
+QJsonValue QJsonValue::fromVariant(const QVariant &variant)
+{
+ switch (variant.type()) {
+ case QVariant::Bool:
+ return QJsonValue(variant.toBool());
+ case QVariant::Int:
+ case QVariant::Double:
+ case QVariant::LongLong:
+ case QVariant::ULongLong:
+ case QVariant::UInt:
+ return QJsonValue(variant.toDouble());
+ case QVariant::String:
+ return QJsonValue(variant.toString());
+ case QVariant::StringList:
+ return QJsonValue(QJsonArray::fromStringList(variant.toStringList()));
+ case QVariant::List:
+ return QJsonValue(QJsonArray::fromVariantList(variant.toList()));
+ case QVariant::Map:
+ return QJsonValue(QJsonObject::fromVariantMap(variant.toMap()));
+ default:
+ break;
+ }
+ QString string = variant.toString();
+ if (string.isEmpty())
+ return QJsonValue();
+ return QJsonValue(string);
+}
+
+/*!
+ Converts the value to a QVariant.
+
+ The QJsonValue types will be converted as follows:
+
+ \value Null QVariant()
+ \value Bool QVariant::Bool
+ \value Double QVariant::Double
+ \value String QVariant::String
+ \value Array QVariantList
+ \value Object QVariantMap
+ \value Undefined QVariant()
+
+ \sa fromVariant()
+ */
+QVariant QJsonValue::toVariant() const
+{
+ switch (t) {
+ case Bool:
+ return b;
+ case Double:
+ return dbl;
+ case String:
+ return toString();
+ case Array:
+ return QJsonArray(d, static_cast<QJsonPrivate::Array *>(base)).toVariantList();
+ case Object:
+ return QJsonObject(d, static_cast<QJsonPrivate::Object *>(base)).toVariantMap();
+ case Null:
+ case Undefined:
+ break;
+ }
+ return QVariant();
+}
+
+/*!
+ \enum QJsonValue::Type
+
+ This enum describes the type of the JSON value.
+
+ \value Null A Null value
+ \value Bool A boolean value. Use toBool() to convert to a bool.
+ \value Double A double. Use toDouble() to convert to a double.
+ \value String A string. Use toString() to convert to a QString.
+ \value Array An array. Use toArray() to convert to a QJsonArray.
+ \value Object An object. Use toObject() to convert to a QJsonObject.
+ \value Undefined The value is undefined. This is usually returned as an
+ error condition, when trying to read an out of bounds value
+ in an array or a non existant key in an object.
+*/
+
+/*!
+ Returns the type of the value.
+
+ \sa QJsonValue::Type
+ */
+QJsonValue::Type QJsonValue::type() const
+{
+ return t;
+}
+
+/*!
+ Converts the value to a bool and returns it.
+
+ If type() is not bool, false will be returned.
+ */
+bool QJsonValue::toBool() const
+{
+ if (t != Bool)
+ return false;
+ return b;
+}
+
+/*!
+ Converts the value to a double and returns it.
+
+ If type() is not Double, 0. will be returned.
+ */
+double QJsonValue::toDouble() const
+{
+ if (t != Double)
+ return 0;
+ return dbl;
+}
+
+/*!
+ Converts the value to a QString and returns it.
+
+ If type() is not String, a QString() will be returned.
+ */
+QString QJsonValue::toString() const
+{
+ if (t != String)
+ return QString();
+ stringData->ref.ref(); // the constructor below doesn't add a ref.
+ return QString(*(const QConstStringData<1> *)stringData);
+}
+
+/*!
+ Converts the value to an array and returns it.
+
+ If type() is not Array, a QJsonArray() will be returned.
+ */
+QJsonArray QJsonValue::toArray() const
+{
+ if (!d || t != Array)
+ return QJsonArray();
+
+ return QJsonArray(d, static_cast<QJsonPrivate::Array *>(base));
+}
+
+/*!
+ Converts the value to an object and returns it.
+
+ If type() is not Object, a QJsonObject() will be returned.
+ */
+QJsonObject QJsonValue::toObject() const
+{
+ if (!d || t != Object)
+ return QJsonObject();
+
+ return QJsonObject(d, static_cast<QJsonPrivate::Object *>(base));
+}
+
+/*!
+ Returns true if the value is equal to \a other.
+ */
+bool QJsonValue::operator==(const QJsonValue &other) const
+{
+ if (t != other.t)
+ return false;
+
+ switch (t) {
+ case Undefined:
+ case Null:
+ break;
+ case Bool:
+ return b == other.b;
+ case Double:
+ return dbl == other.dbl;
+ case String:
+ return toString() == other.toString();
+ case Array:
+ return QJsonArray(d, static_cast<QJsonPrivate::Array *>(base))
+ == QJsonArray(other.d, static_cast<QJsonPrivate::Array *>(other.base));
+ case Object:
+ return QJsonObject(d, static_cast<QJsonPrivate::Object *>(base))
+ == QJsonObject(other.d, static_cast<QJsonPrivate::Object *>(other.base));
+ }
+ return true;
+}
+
+/*!
+ Returns true if the value is not equal to \a other.
+ */
+bool QJsonValue::operator!=(const QJsonValue &other) const
+{
+ return !(*this == other);
+}
+
+/*!
+ \internal
+ */
+void QJsonValue::detach()
+{
+ if (!d)
+ return;
+
+ QJsonPrivate::Data *x = d->clone(base);
+ x->ref.ref();
+ if (!d->ref.deref())
+ delete d;
+ d = x;
+ base = static_cast<QJsonPrivate::Object *>(d->header->root());
+}
+
+
+/*!
+ \class QJsonValueRef
+ \reentrant
+ \brief The QJsonValueRef class is a helper class for QJsonValue.
+
+ \internal
+
+ \ingroup json
+
+ When you get an object of type QJsonValueRef, if you can assign to it,
+ the assignment will apply to the character in the string from
+ which you got the reference. That is its whole purpose in life.
+
+ You can use it exactly in the same way as a reference to a QJsonValue.
+
+ The QJsonValueRef becomes invalid once modifications are made to the
+ string: if you want to keep the character, copy it into a QJsonValue.
+
+ Most of the QJsonValue member functions also exist in QJsonValueRef.
+ However, they are not explicitly documented here.
+*/
+
+
+QJsonValueRef &QJsonValueRef::operator =(const QJsonValue &val)
+{
+ if (is_object)
+ o->setValueAt(index, val);
+ else
+ a->replace(index, val);
+
+ return *this;
+}
+
+QJsonArray QJsonValueRef::toArray() const
+{
+ return toValue().toArray();
+}
+
+QJsonObject QJsonValueRef::toObject() const
+{
+ return toValue().toObject();
+}
+
+QJsonValue QJsonValueRef::toValue() const
+{
+ if (!is_object)
+ return a->at(index);
+ return o->valueAt(index);
+}
+
+#ifndef QT_NO_DEBUG_STREAM
+QDebug operator<<(QDebug dbg, const QJsonValue &o)
+{
+ switch (o.t) {
+ case QJsonValue::Undefined:
+ dbg.nospace() << "QJsonValue(undefined)";
+ break;
+ case QJsonValue::Null:
+ dbg.nospace() << "QJsonValue(null)";
+ break;
+ case QJsonValue::Bool:
+ dbg.nospace() << "QJsonValue(bool, " << o.toBool() << ")";
+ break;
+ case QJsonValue::Double:
+ dbg.nospace() << "QJsonValue(double, " << o.toDouble() << ")";
+ break;
+ case QJsonValue::String:
+ dbg.nospace() << "QJsonValue(string, " << o.toString() << ")";
+ break;
+ case QJsonValue::Array:
+ dbg.nospace() << "QJsonValue(array, ";
+ dbg.nospace() << o.toArray();
+ dbg.nospace() << ")";
+ break;
+ case QJsonValue::Object:
+ dbg.nospace() << "QJsonValue(object, ";
+ dbg.nospace() << o.toObject();
+ dbg.nospace() << ")";
+ break;
+ }
+ return dbg.space();
+}
+#endif
+
+QT_END_NAMESPACE
diff --git a/src/corelib/json/qjsonvalue.h b/src/corelib/json/qjsonvalue.h
new file mode 100644
index 0000000000..69dcc0640a
--- /dev/null
+++ b/src/corelib/json/qjsonvalue.h
@@ -0,0 +1,186 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QJSONVALUE_H
+#define QJSONVALUE_H
+
+#include <QtCore/qglobal.h>
+#include <QtCore/qstring.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QDebug;
+class QVariant;
+class QJsonArray;
+class QJsonObject;
+
+namespace QJsonPrivate {
+ class Data;
+ class Base;
+ class Object;
+ class Header;
+ class Array;
+ class Value;
+ class Entry;
+}
+
+class Q_CORE_EXPORT QJsonValue
+{
+public:
+ enum Type {
+ Null = 0x0,
+ Bool = 0x1,
+ Double = 0x2,
+ String = 0x3,
+ Array = 0x4,
+ Object = 0x5,
+ Undefined = 0x80
+ };
+
+ QJsonValue(Type = Null);
+ QJsonValue(bool b);
+ QJsonValue(double n);
+ QJsonValue(int n);
+ QJsonValue(const QString &s);
+ QJsonValue(const QLatin1String &s);
+ QJsonValue(const QJsonArray &a);
+ QJsonValue(const QJsonObject &o);
+
+ ~QJsonValue();
+
+ QJsonValue(const QJsonValue &other);
+ QJsonValue &operator =(const QJsonValue &other);
+
+ static QJsonValue fromVariant(const QVariant &variant);
+ QVariant toVariant() const;
+
+ Type type() const;
+ inline bool isNull() const { return type() == Null; }
+ inline bool isBool() const { return type() == Bool; }
+ inline bool isDouble() const { return type() == Double; }
+ inline bool isString() const { return type() == String; }
+ inline bool isArray() const { return type() == Array; }
+ inline bool isObject() const { return type() == Object; }
+ inline bool isUndefined() const { return type() == Undefined; }
+
+ bool toBool() const;
+ double toDouble() const;
+ QString toString() const;
+ QJsonArray toArray() const;
+ QJsonObject toObject() const;
+
+ bool operator==(const QJsonValue &other) const;
+ bool operator!=(const QJsonValue &other) const;
+
+private:
+ // avoid implicit conversions from char * to bool
+ inline QJsonValue(const void *) {}
+ friend class QJsonPrivate::Value;
+ friend class QJsonArray;
+ friend class QJsonObject;
+ friend Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonValue &);
+
+ QJsonValue(QJsonPrivate::Data *d, QJsonPrivate::Base *b, const QJsonPrivate::Value& v);
+
+ void detach();
+
+ union {
+ quint64 ui;
+ bool b;
+ double dbl;
+ QStringData *stringData;
+ QJsonPrivate::Base *base;
+ };
+ QJsonPrivate::Data *d; // needed for Objects and Arrays
+ Type t;
+};
+
+class Q_CORE_EXPORT QJsonValueRef
+{
+public:
+ QJsonValueRef(QJsonArray *array, int idx)
+ : a(array), is_object(false), index(idx) {}
+ QJsonValueRef(QJsonObject *object, int idx)
+ : o(object), is_object(true), index(idx) {}
+
+ inline operator QJsonValue() const { return toValue(); }
+ QJsonValueRef &operator = (const QJsonValue &val);
+
+ inline QJsonValue::Type type() const { return toValue().type(); }
+ inline bool isNull() const { return type() == QJsonValue::Null; }
+ inline bool isBool() const { return type() == QJsonValue::Bool; }
+ inline bool isDouble() const { return type() == QJsonValue::Double; }
+ inline bool isString() const { return type() == QJsonValue::String; }
+ inline bool isArray() const { return type() == QJsonValue::Array; }
+ inline bool isObject() const { return type() == QJsonValue::Object; }
+ inline bool isUndefined() const { return type() == QJsonValue::Undefined; }
+
+ inline bool toBool() const { return toValue().toBool(); }
+ inline double toDouble() const { return toValue().toDouble(); }
+ inline QString toString() const { return toValue().toString(); }
+ QJsonArray toArray() const;
+ QJsonObject toObject() const;
+
+ inline bool operator==(const QJsonValue &other) const { return toValue() == other; }
+ inline bool operator!=(const QJsonValue &other) const { return toValue() != other; }
+
+private:
+ QJsonValue toValue() const;
+
+ union {
+ QJsonArray *a;
+ QJsonObject *o;
+ };
+ uint is_object : 1;
+ uint index : 31;
+};
+
+#ifndef QT_NO_DEBUG_STREAM
+Q_CORE_EXPORT QDebug operator<<(QDebug, const QJsonValue &);
+#endif
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QJSONVALUE_H
diff --git a/src/corelib/json/qjsonwriter.cpp b/src/corelib/json/qjsonwriter.cpp
new file mode 100644
index 0000000000..d544e6154b
--- /dev/null
+++ b/src/corelib/json/qjsonwriter.cpp
@@ -0,0 +1,280 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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 "qjsonwriter_p.h"
+#include "qjson_p.h"
+
+QT_BEGIN_NAMESPACE
+
+using namespace QJsonPrivate;
+
+static void objectContentToJson(const QJsonPrivate::Object *o, QByteArray &json, int indent, bool compact);
+static void arrayContentToJson(const QJsonPrivate::Array *a, QByteArray &json, int indent, bool compact);
+
+// some code from qutfcodec.cpp, inlined here for performance reasons
+// to allow fast escaping of strings
+static inline bool isUnicodeNonCharacter(uint ucs4)
+{
+ // Unicode has a couple of "non-characters" that one can use internally,
+ // but are not allowed to be used for text interchange.
+ //
+ // Those are the last two entries each Unicode Plane (U+FFFE, U+FFFF,
+ // U+1FFFE, U+1FFFF, etc.) as well as the entries between U+FDD0 and
+ // U+FDEF (inclusive)
+
+ return (ucs4 & 0xfffe) == 0xfffe
+ || (ucs4 - 0xfdd0U) < 16;
+}
+
+static inline uchar hexdig(uint u)
+{
+ return (u < 0xa ? '0' + u : 'a' + u - 0xa);
+}
+
+static QByteArray escapedString(const QString &s)
+{
+ const uchar replacement = '?';
+ QByteArray ba(s.length(), Qt::Uninitialized);
+
+ uchar *cursor = (uchar *)ba.data();
+ const uchar *ba_end = cursor + ba.length();
+
+ const QChar *ch = (const QChar *)s.constData();
+ const QChar *end = ch + s.length();
+
+ int surrogate_high = -1;
+
+ while (ch < end) {
+ if (cursor >= ba_end - 6) {
+ // ensure we have enough space
+ int pos = cursor - (const uchar *)ba.constData();
+ ba.resize(ba.size()*2);
+ cursor = (uchar *)ba.data() + pos;
+ ba_end = (const uchar *)ba.constData() + ba.length();
+ }
+
+ uint u = ch->unicode();
+ if (surrogate_high >= 0) {
+ if (ch->isLowSurrogate()) {
+ u = QChar::surrogateToUcs4(surrogate_high, u);
+ surrogate_high = -1;
+ } else {
+ // high surrogate without low
+ *cursor = replacement;
+ ++ch;
+ surrogate_high = -1;
+ continue;
+ }
+ } else if (ch->isLowSurrogate()) {
+ // low surrogate without high
+ *cursor = replacement;
+ ++ch;
+ continue;
+ } else if (ch->isHighSurrogate()) {
+ surrogate_high = u;
+ ++ch;
+ continue;
+ }
+
+ if (u < 0x80) {
+ if (u < 0x20 || u == 0x22 || u == 0x5c) {
+ *cursor++ = '\\';
+ switch (u) {
+ case 0x22:
+ *cursor++ = '"';
+ break;
+ case 0x5c:
+ *cursor++ = '\\';
+ break;
+ case 0x8:
+ *cursor++ = 'b';
+ break;
+ case 0xc:
+ *cursor++ = 'f';
+ break;
+ case 0xa:
+ *cursor++ = 'n';
+ break;
+ case 0xd:
+ *cursor++ = 'r';
+ break;
+ case 0x9:
+ *cursor++ = 't';
+ break;
+ default:
+ *cursor++ = 'u';
+ *cursor++ = '0';
+ *cursor++ = '0';
+ *cursor++ = hexdig(u>>4);
+ *cursor++ = hexdig(u & 0xf);
+ }
+ } else {
+ *cursor++ = (uchar)u;
+ }
+ } else {
+ if (u < 0x0800) {
+ *cursor++ = 0xc0 | ((uchar) (u >> 6));
+ } else {
+ // is it one of the Unicode non-characters?
+ if (isUnicodeNonCharacter(u)) {
+ *cursor++ = replacement;
+ ++ch;
+ continue;
+ }
+
+ if (u > 0xffff) {
+ *cursor++ = 0xf0 | ((uchar) (u >> 18));
+ *cursor++ = 0x80 | (((uchar) (u >> 12)) & 0x3f);
+ } else {
+ *cursor++ = 0xe0 | (((uchar) (u >> 12)) & 0x3f);
+ }
+ *cursor++ = 0x80 | (((uchar) (u >> 6)) & 0x3f);
+ }
+ *cursor++ = 0x80 | ((uchar) (u&0x3f));
+ }
+ ++ch;
+ }
+
+ ba.resize(cursor - (const uchar *)ba.constData());
+ return ba;
+}
+
+static void valueToJson(const QJsonPrivate::Base *b, const QJsonPrivate::Value &v, QByteArray &json, int indent, bool compact)
+{
+ QJsonValue::Type type = (QJsonValue::Type)(uint)v.type;
+ switch (type) {
+ case QJsonValue::Bool:
+ json += v.toBoolean() ? "true" : "false";
+ break;
+ case QJsonValue::Double:
+ json += QByteArray::number(v.toDouble(b));
+ break;
+ case QJsonValue::String:
+ json += '"';
+ json += escapedString(v.toString(b));
+ json += '"';
+ break;
+ case QJsonValue::Array:
+ json += compact ? "[" : "[\n";
+ arrayContentToJson(static_cast<QJsonPrivate::Array *>(v.base(b)), json, indent + (compact ? 0 : 1), compact);
+ json += QByteArray(4*indent, ' ');
+ json += "]";
+ break;
+ case QJsonValue::Object:
+ json += compact ? "{" : "{\n";
+ objectContentToJson(static_cast<QJsonPrivate::Object *>(v.base(b)), json, indent + (compact ? 0 : 1), compact);
+ json += QByteArray(4*indent, ' ');
+ json += "}";
+ break;
+ case QJsonValue::Null:
+ default:
+ json += "null";
+ }
+}
+
+static void arrayContentToJson(const QJsonPrivate::Array *a, QByteArray &json, int indent, bool compact)
+{
+ if (!a || !a->length)
+ return;
+
+ QByteArray indentString(4*indent, ' ');
+
+ uint i = 0;
+ while (1) {
+ json += indentString;
+ valueToJson(a, a->at(i), json, indent, compact);
+
+ if (++i == a->length) {
+ if (!compact)
+ json += '\n';
+ break;
+ }
+
+ json += compact ? "," : ",\n";
+ }
+}
+
+
+static void objectContentToJson(const QJsonPrivate::Object *o, QByteArray &json, int indent, bool compact)
+{
+ if (!o || !o->length)
+ return;
+
+ QByteArray indentString(4*indent, ' ');
+
+ uint i = 0;
+ while (1) {
+ QJsonPrivate::Entry *e = o->entryAt(i);
+ json += indentString;
+ json += '"';
+ json += escapedString(e->key());
+ json += "\": ";
+ valueToJson(o, e->value, json, indent, compact);
+
+ if (++i == o->length) {
+ if (!compact)
+ json += '\n';
+ break;
+ }
+
+ json += compact ? "," : ",\n";
+ }
+}
+
+void Writer::objectToJson(const QJsonPrivate::Object *o, QByteArray &json, int indent, bool compact)
+{
+ json.reserve(json.size() + (o ? (int)o->size : 16));
+ json += compact ? "{" : "{\n";
+ objectContentToJson(o, json, indent + (compact ? 0 : 1), compact);
+ json += QByteArray(4*indent, ' ');
+ json += compact ? "}" : "}\n";
+}
+
+void Writer::arrayToJson(const QJsonPrivate::Array *a, QByteArray &json, int indent, bool compact)
+{
+ json.reserve(json.size() + (a ? (int)a->size : 16));
+ json += compact ? "[" : "[\n";
+ arrayContentToJson(a, json, indent + (compact ? 0 : 1), compact);
+ json += QByteArray(4*indent, ' ');
+ json += compact ? "]" : "]\n";
+}
+
+QT_END_NAMESPACE
diff --git a/src/corelib/json/qjsonwriter_p.h b/src/corelib/json/qjsonwriter_p.h
new file mode 100644
index 0000000000..295ed99324
--- /dev/null
+++ b/src/corelib/json/qjsonwriter_p.h
@@ -0,0 +1,73 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QJSONWRITER_P_H
+#define QJSONWRITER_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+#include <qjsonvalue.h>
+
+QT_BEGIN_NAMESPACE
+
+namespace QJsonPrivate
+{
+
+class Writer
+{
+public:
+ static void objectToJson(const QJsonPrivate::Object *o, QByteArray &json, int indent, bool compact = false);
+ static void arrayToJson(const QJsonPrivate::Array *a, QByteArray &json, int indent, bool compact = false);
+};
+
+}
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/corelib/kernel/kernel.pri b/src/corelib/kernel/kernel.pri
index 1139e3074a..6ebc62614b 100644
--- a/src/corelib/kernel/kernel.pri
+++ b/src/corelib/kernel/kernel.pri
@@ -90,6 +90,8 @@ mac {
mac:!nacl {
SOURCES += \
kernel/qcore_mac.cpp
+ OBJECTIVE_SOURCES += \
+ kernel/qcore_mac_objc.mm
}
nacl {
diff --git a/src/corelib/kernel/qabstracteventdispatcher.cpp b/src/corelib/kernel/qabstracteventdispatcher.cpp
index 1d4bf3cf1f..31a46ad744 100644
--- a/src/corelib/kernel/qabstracteventdispatcher.cpp
+++ b/src/corelib/kernel/qabstracteventdispatcher.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qabstracteventdispatcher.h b/src/corelib/kernel/qabstracteventdispatcher.h
index 80e77c02af..76f264c3c0 100644
--- a/src/corelib/kernel/qabstracteventdispatcher.h
+++ b/src/corelib/kernel/qabstracteventdispatcher.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QAbstractEventDispatcherPrivate;
class QSocketNotifier;
diff --git a/src/corelib/kernel/qabstracteventdispatcher_p.h b/src/corelib/kernel/qabstracteventdispatcher_p.h
index 6e1c81ae33..b6f0160342 100644
--- a/src/corelib/kernel/qabstracteventdispatcher_p.h
+++ b/src/corelib/kernel/qabstracteventdispatcher_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qbasictimer.cpp b/src/corelib/kernel/qbasictimer.cpp
index a52152875f..621223eb88 100644
--- a/src/corelib/kernel/qbasictimer.cpp
+++ b/src/corelib/kernel/qbasictimer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qbasictimer.h b/src/corelib/kernel/qbasictimer.h
index 84b232e766..4d01fbc4fd 100644
--- a/src/corelib/kernel/qbasictimer.h
+++ b/src/corelib/kernel/qbasictimer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QObject;
diff --git a/src/corelib/kernel/qcore_mac.cpp b/src/corelib/kernel/qcore_mac.cpp
index 88cc83ce48..6d661911ca 100644
--- a/src/corelib/kernel/qcore_mac.cpp
+++ b/src/corelib/kernel/qcore_mac.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qcore_mac_objc.mm b/src/corelib/kernel/qcore_mac_objc.mm
new file mode 100644
index 0000000000..76705f1c8c
--- /dev/null
+++ b/src/corelib/kernel/qcore_mac_objc.mm
@@ -0,0 +1,54 @@
+/****************************************************************************
+ **
+ ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+ ** Contact: http://www.qt-project.org/
+ **
+ ** This file is part of the QtCore 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/qcore_mac_p.h>
+
+NSString *QCFString::toNSString(const QString &string)
+{
+ // The const cast below is safe: CfStringRef is immutable and so is NSString.
+ return [const_cast<NSString *>(reinterpret_cast<const NSString *>(toCFStringRef(string))) autorelease];
+}
+
+QString QCFString::toQString(const NSString *nsstr)
+{
+ return toQString(reinterpret_cast<CFStringRef>(nsstr));
+}
+
diff --git a/src/corelib/kernel/qcore_mac_p.h b/src/corelib/kernel/qcore_mac_p.h
index 4efd6bf653..78cb0eff3b 100644
--- a/src/corelib/kernel/qcore_mac_p.h
+++ b/src/corelib/kernel/qcore_mac_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -78,6 +78,10 @@
#include <CoreServices/CoreServices.h>
#endif
+#ifdef __OBJC__
+#include <Foundation/Foundation.h>
+#endif
+
#undef DEBUG
#ifdef OLD_DEBUG
# define DEBUG OLD_DEBUG
@@ -144,6 +148,11 @@ public:
operator CFStringRef() const;
static QString toQString(CFStringRef cfstr);
static CFStringRef toCFStringRef(const QString &str);
+#ifdef __OBJC__
+ static QString toQString(const NSString *nsstr);
+ static NSString *toNSString(const QString &string);
+#endif
+
private:
QString string;
};
diff --git a/src/corelib/kernel/qcore_unix.cpp b/src/corelib/kernel/qcore_unix.cpp
index 08a2f69bf3..3f4d4431e6 100644
--- a/src/corelib/kernel/qcore_unix.cpp
+++ b/src/corelib/kernel/qcore_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qcore_unix_p.h b/src/corelib/kernel/qcore_unix_p.h
index 9ac4f5c480..6ec8e269f8 100644
--- a/src/corelib/kernel/qcore_unix_p.h
+++ b/src/corelib/kernel/qcore_unix_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -274,9 +274,8 @@ static inline int qt_safe_close(int fd)
#undef QT_CLOSE
#define QT_CLOSE qt_safe_close
-// - Open C does not (yet?) implement these on Symbian OS
// - VxWorks doesn't have processes
-#if !defined(Q_OS_SYMBIAN) && !defined(Q_OS_VXWORKS)
+#if !defined(Q_OS_VXWORKS)
static inline int qt_safe_execve(const char *filename, char *const argv[],
char *const envp[])
{
@@ -298,16 +297,13 @@ static inline int qt_safe_execvp(const char *file, char *const argv[])
EINTR_LOOP(ret, ::execvp(file, argv));
return ret;
}
-#endif
-#ifndef Q_OS_VXWORKS // no processes on VxWorks
static inline pid_t qt_safe_waitpid(pid_t pid, int *status, int options)
{
register int ret;
EINTR_LOOP(ret, ::waitpid(pid, status, options));
return ret;
}
-
#endif // Q_OS_VXWORKS
#if !defined(_POSIX_MONOTONIC_CLOCK)
diff --git a/src/corelib/kernel/qcoreapplication.cpp b/src/corelib/kernel/qcoreapplication.cpp
index 05f26cc87f..cf3ae1b7c5 100644
--- a/src/corelib/kernel/qcoreapplication.cpp
+++ b/src/corelib/kernel/qcoreapplication.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -66,15 +66,7 @@
#include <private/qfunctions_p.h>
#include <private/qlocale_p.h>
-#ifdef Q_OS_SYMBIAN
-# include <exception>
-# include <f32file.h>
-# include <e32ldr.h>
-# include "qeventdispatcher_symbian_p.h"
-# include "private/qcore_symbian_p.h"
-# include "private/qfilesystemengine_p.h"
-# include <apacmdln.h>
-#elif defined(Q_OS_UNIX)
+#if defined(Q_OS_UNIX)
# if !defined(QT_NO_GLIB)
# include "qeventdispatcher_glib_p.h"
# endif
@@ -116,62 +108,6 @@ private:
QMutex *mtx;
};
-#ifdef Q_OS_SYMBIAN
-typedef TDriveNumber (*SystemDriveFunc)(RFs&);
-static SystemDriveFunc PtrGetSystemDrive = 0;
-static CApaCommandLine* apaCommandLine = 0;
-static char *apaTail = 0;
-static QVector<char *> *apaArgv = 0;
-
-static void qt_cleanup_apa_cmd_line()
-{
- delete apaCommandLine;
- apaCommandLine = 0;
- delete apaArgv;
- apaArgv = 0;
- delete apaTail;
- apaTail = 0;
-}
-
-static inline void qt_init_symbian_apa_arguments(int &argc, char **&argv)
-{
- // If app is launched via CApaCommandLine::StartApp(), normal arguments only contain
- // application name.
- if (argc == 1) {
- CApaCommandLine* commandLine = QCoreApplicationPrivate::symbianCommandLine();
- if(commandLine) {
- TPtrC8 apaCmdLine = commandLine->TailEnd();
- int tailLen = apaCmdLine.Length();
- if (tailLen) {
- apaTail = reinterpret_cast<char *>(malloc(tailLen + 1));
- qMemCopy(apaTail, reinterpret_cast<const char *>(apaCmdLine.Ptr()), tailLen);
- apaTail[tailLen] = '\0';
- apaArgv = new QVector<char *>(8);
- // Reuse windows command line parsing
- *apaArgv = qWinCmdLine<char>(apaTail, tailLen, argc);
- apaArgv->insert(0, argv[0]);
- argc++;
- argv = apaArgv->data();
- }
- }
- }
-}
-
-CApaCommandLine* QCoreApplicationPrivate::symbianCommandLine()
-{
- // Getting of Apa command line needs to be static as it can only be called successfully
- // once per process.
- if (!apaCommandLine) {
- TInt err = CApaCommandLine::GetCommandLineFromProcessEnvironment(apaCommandLine);
- if (err == KErrNone) {
- qAddPostRoutine(qt_cleanup_apa_cmd_line);
- }
- }
- return apaCommandLine;
-}
-
-#endif
-
#if defined(Q_OS_WIN) || defined(Q_OS_MAC)
extern QString qAppFileName();
#endif
@@ -335,6 +271,8 @@ struct QCoreApplicationData {
Q_GLOBAL_STATIC(QCoreApplicationData, coreappdata)
+static bool quitLockRefEnabled = true;
+
QCoreApplicationPrivate::QCoreApplicationPrivate(int &aargc, char **aargv, uint flags)
: QObjectPrivate(), argc(aargc), argv(aargv), application_type(0), eventFilter(0),
in_exec(false), aboutToQuitEmitted(false), threadData_clean(false)
@@ -347,10 +285,6 @@ QCoreApplicationPrivate::QCoreApplicationPrivate(int &aargc, char **aargv, uint
}
QCoreApplicationPrivate::is_app_closing = false;
-#ifdef Q_OS_SYMBIAN
- qt_init_symbian_apa_arguments(argc, argv);
-#endif
-
#ifdef Q_OS_UNIX
qt_application_thread_id = QThread::currentThreadId();
#endif
@@ -393,9 +327,7 @@ void QCoreApplicationPrivate::cleanupThreadData()
void QCoreApplicationPrivate::createEventDispatcher()
{
Q_Q(QCoreApplication);
-#if defined(Q_OS_SYMBIAN)
- eventDispatcher = new QEventDispatcherSymbian(q);
-#elif defined(Q_OS_UNIX)
+#if defined(Q_OS_UNIX)
# if !defined(QT_NO_GLIB)
if (qgetenv("QT_NO_GLIB").isEmpty() && QEventDispatcherGlib::versionSupported())
eventDispatcher = new QEventDispatcherGlib(q);
@@ -443,11 +375,6 @@ void QCoreApplicationPrivate::checkReceiverThread(QObject *receiver)
Q_UNUSED(currentThread);
Q_UNUSED(thr);
}
-#elif defined(Q_OS_SYMBIAN) && defined (QT_NO_DEBUG)
-// no implementation in release builds, but keep the symbol present
-void QCoreApplicationPrivate::checkReceiverThread(QObject * /* receiver */)
-{
-}
#endif
void QCoreApplicationPrivate::appendApplicationPathToLibraryPaths()
@@ -455,17 +382,10 @@ void QCoreApplicationPrivate::appendApplicationPathToLibraryPaths()
#if !defined(QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS)
QStringList *app_libpaths = coreappdata()->app_libpaths;
Q_ASSERT(app_libpaths);
-# if defined(Q_OS_SYMBIAN)
- QString app_location( QCoreApplication::applicationDirPath() );
- // File existence check for application's private dir requires additional '\' or
- // platform security will not allow it.
- if (app_location != QLibraryInfo::location(QLibraryInfo::PluginsPath) && QFile::exists(app_location + QLatin1Char('\\')) && !app_libpaths->contains(app_location))
-# else
QString app_location( QCoreApplication::applicationFilePath() );
app_location.truncate(app_location.lastIndexOf(QLatin1Char('/')));
app_location = QDir(app_location).canonicalPath();
if (QFile::exists(app_location) && !app_libpaths->contains(app_location))
-# endif
app_libpaths->append(app_location);
#endif
}
@@ -607,17 +527,6 @@ QCoreApplication::QCoreApplication(int &argc, char **argv, int _internal)
{
init();
QCoreApplicationPrivate::eventDispatcher->startingUp();
-#if defined(Q_OS_SYMBIAN)
-#ifndef QT_NO_LIBRARY
- // Refresh factoryloader, as text codecs are requested during lib path
- // resolving process and won't be therefore properly loaded.
- // Unknown if this is symbian specific issue.
- QFactoryLoader::refreshAll();
-#endif
-#ifndef QT_NO_SYSTEMLOCALE
- d_func()->symbianInit();
-#endif
-#endif //Q_OS_SYMBIAN
}
@@ -634,12 +543,6 @@ void QCoreApplication::init()
Q_ASSERT_X(!self, "QCoreApplication", "there should be only one application object");
QCoreApplication::self = this;
-#ifdef Q_OS_SYMBIAN
- //ensure temp and working directories exist
- QFileSystemEngine::createDirectory(QFileSystemEntry(QFileSystemEngine::tempPath()), true);
- QFileSystemEngine::createDirectory(QFileSystemEntry(QFileSystemEngine::currentPath()), true);
-#endif
-
#ifndef QT_NO_THREAD
QThread::initialize();
#endif
@@ -673,41 +576,11 @@ void QCoreApplication::init()
qt_core_eval_init(d->application_type);
#endif
-#if defined(Q_OS_SYMBIAN) \
- && defined(Q_CC_NOKIAX86) \
- && defined(QT_DEBUG)
- /**
- * Prevent the executable from being locked in the Symbian emulator. The
- * code dramatically simplifies debugging on Symbian, but beyond that has
- * no impact.
- *
- * Force the ZLazyUnloadTimer to fire and therefore unload code segments
- * immediately. The code affects Symbian's file server and on the other
- * hand needs only to be run once in each emulator run.
- */
- {
- RLoader loader;
- CleanupClosePushL(loader);
- User::LeaveIfError(loader.Connect());
- User::LeaveIfError(loader.CancelLazyDllUnload());
- CleanupStack::PopAndDestroy(&loader);
- }
-#endif
-
d->processCommandLineArguments();
qt_startup_hook();
}
-#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_SYSTEMLOCALE)
-void QCoreApplicationPrivate::symbianInit()
-{
- if (!environmentChangeNotifier)
- environmentChangeNotifier.reset(new QEnvironmentChangeNotifier);
-}
-#endif
-
-
/*!
Destroys the QCoreApplication object.
*/
@@ -720,7 +593,6 @@ QCoreApplication::~QCoreApplication()
QCoreApplicationPrivate::is_app_running = false;
#if !defined(QT_NO_THREAD)
-#if !defined(QT_NO_CONCURRENT)
// Synchronize and stop the global thread pool threads.
QThreadPool *globalThreadPool = 0;
QT_TRY {
@@ -730,7 +602,6 @@ QCoreApplication::~QCoreApplication()
}
if (globalThreadPool)
globalThreadPool->waitForDone();
-#endif
QThread::cleanup();
#endif
@@ -778,6 +649,29 @@ bool QCoreApplication::testAttribute(Qt::ApplicationAttribute attribute)
return QCoreApplicationPrivate::testAttribute(attribute);
}
+/*!/
+ Returns true if the use of the QEventLoopLocker feature can cause the
+ application to quit, otherwise returns false.
+
+ \sa QEventLoopLocker
+ */
+bool QCoreApplication::isQuitLockEnabled()
+{
+ return quitLockRefEnabled;
+}
+
+/*!
+ Enables the ability of the QEventLoopLocker feature to quit
+ the application.
+
+ If disabled, the use of QEventLoopLocker will not quit the application.
+
+ \sa QEventLoopLocker
+ */
+void QCoreApplication::setQuitLockEnabled(bool enabled)
+{
+ quitLockRefEnabled = enabled;
+}
/*!
\internal
@@ -973,8 +867,6 @@ void QCoreApplication::processEvents(QEventLoop::ProcessEventsFlags flags)
QThreadData *data = QThreadData::current();
if (!data->eventDispatcher)
return;
- if (flags & QEventLoop::DeferredDeletion)
- QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
data->eventDispatcher->processEvents(flags);
}
@@ -1001,13 +893,9 @@ void QCoreApplication::processEvents(QEventLoop::ProcessEventsFlags flags, int m
return;
QElapsedTimer start;
start.start();
- if (flags & QEventLoop::DeferredDeletion)
- QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
while (data->eventDispatcher->processEvents(flags & ~QEventLoop::WaitForMoreEvents)) {
if (start.elapsed() > maxtime)
break;
- if (flags & QEventLoop::DeferredDeletion)
- QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
}
}
@@ -1611,6 +1499,17 @@ bool QCoreApplication::event(QEvent *e)
\sa QObject::tr(), QObject::trUtf8(), QString::fromUtf8()
*/
+void QCoreApplicationPrivate::ref()
+{
+ quitLockRef.ref();
+}
+
+void QCoreApplicationPrivate::deref()
+{
+ if (!quitLockRef.deref() && in_exec && quitLockRefEnabled)
+ QCoreApplication::postEvent(qApp, new QEvent(QEvent::Quit));
+}
+
/*!
Tells the application to exit with return code 0 (success).
Equivalent to calling QCoreApplication::exit(0).
@@ -1846,11 +1745,6 @@ bool QCoreApplicationPrivate::isTranslatorInstalled(QTranslator *translator)
function also assumes that the current directory has not been
changed by the application.
- In Symbian this function will return the application private directory,
- not the path to executable itself, as those are always in \c {/sys/bin}.
- If the application is in a read only drive, i.e. ROM, then the private path
- on the system drive will be returned.
-
\sa applicationFilePath()
*/
QString QCoreApplication::applicationDirPath()
@@ -1862,49 +1756,7 @@ QString QCoreApplication::applicationDirPath()
QCoreApplicationPrivate *d = self->d_func();
if (d->cachedApplicationDirPath.isNull())
-#if defined(Q_OS_SYMBIAN)
- {
- QString appPath;
- RFs& fs = qt_s60GetRFs();
- TChar driveChar;
- QChar qDriveChar;
- driveChar = (RProcess().FileName())[0];
-
- //Check if the process is installed in a read only drive (typically ROM),
- //and use the system drive (typically C:) if so.
- TInt drive;
- TDriveInfo driveInfo;
- TInt err = fs.CharToDrive(driveChar, drive);
- if (err == KErrNone) {
- err = fs.Drive(driveInfo, drive);
- }
- if (err != KErrNone || (driveInfo.iDriveAtt & KDriveAttRom) || (driveInfo.iMediaAtt
- & KMediaAttWriteProtected)) {
- if(!PtrGetSystemDrive)
- PtrGetSystemDrive = reinterpret_cast<SystemDriveFunc>(qt_resolveS60PluginFunc(S60Plugin_GetSystemDrive));
- Q_ASSERT(PtrGetSystemDrive);
- drive = PtrGetSystemDrive(fs);
- fs.DriveToChar(drive, driveChar);
- }
-
- qDriveChar = QChar(QLatin1Char(driveChar)).toUpper();
-
- TFileName privatePath;
- fs.PrivatePath(privatePath);
- appPath = qt_TDesC2QString(privatePath);
- appPath.prepend(QLatin1Char(':')).prepend(qDriveChar);
-
- // Create the appPath if it doesn't exist. Non-existing appPath will cause
- // Platform Security violations later on if the app doesn't have AllFiles capability.
- err = fs.CreatePrivatePath(drive);
- if (err != KErrNone)
- qWarning("QCoreApplication::applicationDirPath: Failed to create private path.");
-
- d->cachedApplicationDirPath = QFileInfo(appPath).path();
- }
-#else
d->cachedApplicationDirPath = QFileInfo(applicationFilePath()).path();
-#endif
return d->cachedApplicationDirPath;
}
@@ -1945,20 +1797,7 @@ QString QCoreApplication::applicationFilePath()
return d->cachedApplicationFilePath;
}
#endif
-#if defined(Q_OS_SYMBIAN)
- QString appPath;
- RProcess proc;
- TInt err = proc.Open(proc.Id());
- if (err == KErrNone) {
- TFileName procName = proc.FileName();
- appPath.append(QString(reinterpret_cast<const QChar*>(procName.Ptr()), procName.Length()));
- proc.Close();
- }
-
- d->cachedApplicationFilePath = appPath;
- return d->cachedApplicationFilePath;
-
-#elif defined( Q_OS_UNIX )
+#if defined( Q_OS_UNIX )
# ifdef Q_OS_LINUX
// Try looking for a /proc/<pid>/exe symlink first which points to
// the absolute path of the executable
@@ -1969,7 +1808,7 @@ QString QCoreApplication::applicationFilePath()
}
# endif
- QString argv0 = QFile::decodeName(QByteArray(argv()[0]));
+ QString argv0 = QFile::decodeName(arguments().at(0).toLocal8Bit());
QString absPath;
if (!argv0.isEmpty() && argv0.at(0) == QLatin1Char('/')) {
@@ -2017,35 +1856,6 @@ qint64 QCoreApplication::applicationPid()
}
/*!
- \obsolete
-
- Use arguments().size() instead.
-*/
-int QCoreApplication::argc()
-{
- if (!self) {
- qWarning("QCoreApplication::argc: Please instantiate the QApplication object first");
- return 0;
- }
- return self->d_func()->argc;
-}
-
-
-/*!
- \obsolete
-
- Use arguments() instead.
-*/
-char **QCoreApplication::argv()
-{
- if (!self) {
- qWarning("QCoreApplication::argv: Please instantiate the QApplication object first");
- return 0;
- }
- return self->d_func()->argv;
-}
-
-/*!
\since 4.1
Returns the list of command-line arguments.
@@ -2072,12 +1882,6 @@ char **QCoreApplication::argv()
As a result of this, the string given by arguments().at(0) might not be
the program name on Windows, depending on how the application was started.
- For Symbian applications started with \c RApaLsSession::StartApp one can specify
- arguments using \c CApaCommandLine::SetTailEndL function. Such arguments are only
- available via this method; they will not be passed to \c main function. Also note
- that only 8-bit string data set with \c CApaCommandLine::SetTailEndL is supported
- by this function.
-
\sa applicationFilePath()
*/
@@ -2256,34 +2060,12 @@ QStringList QCoreApplication::libraryPaths()
if (!coreappdata()->app_libpaths) {
QStringList *app_libpaths = coreappdata()->app_libpaths = new QStringList;
QString installPathPlugins = QLibraryInfo::location(QLibraryInfo::PluginsPath);
-#if defined(Q_OS_SYMBIAN)
- // Add existing path on all drives for relative PluginsPath in Symbian
- if (installPathPlugins.at(1) != QChar(QLatin1Char(':'))) {
- QString tempPath = installPathPlugins;
- if (tempPath.at(tempPath.length() - 1) != QDir::separator()) {
- tempPath += QDir::separator();
- }
- RFs& fs = qt_s60GetRFs();
- TPtrC tempPathPtr(reinterpret_cast<const TText*> (tempPath.constData()));
- TFindFile finder(fs);
- TInt err = finder.FindByDir(tempPathPtr, tempPathPtr);
- while (err == KErrNone) {
- QString foundDir(reinterpret_cast<const QChar *>(finder.File().Ptr()),
- finder.File().Length());
- foundDir = QDir(foundDir).canonicalPath();
- if (!app_libpaths->contains(foundDir))
- app_libpaths->append(foundDir);
- err = finder.Find();
- }
- }
-#else
if (QFile::exists(installPathPlugins)) {
// Make sure we convert from backslashes to slashes.
installPathPlugins = QDir(installPathPlugins).canonicalPath();
if (!app_libpaths->contains(installPathPlugins))
app_libpaths->append(installPathPlugins);
}
-#endif
// If QCoreApplication is not yet instantiated,
// make sure we add the application path when we construct the QCoreApplication
@@ -2291,7 +2073,7 @@ QStringList QCoreApplication::libraryPaths()
const QByteArray libPathEnv = qgetenv("QT_PLUGIN_PATH");
if (!libPathEnv.isEmpty()) {
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
QLatin1Char pathSep(';');
#else
QLatin1Char pathSep(':');
@@ -2317,10 +2099,6 @@ QStringList QCoreApplication::libraryPaths()
\a paths. All existing paths will be deleted and the path list
will consist of the paths given in \a paths.
- In Symbian this function is only useful for setting paths for
- finding Qt extension plugin stubs, since the OS can only
- load libraries from the \c{/sys/bin} directory.
-
\sa libraryPaths(), addLibraryPath(), removeLibraryPath(), QLibrary
*/
void QCoreApplication::setLibraryPaths(const QStringList &paths)
@@ -2343,10 +2121,6 @@ void QCoreApplication::setLibraryPaths(const QStringList &paths)
is \c INSTALL/plugins, where \c INSTALL is the directory where Qt was
installed.
- In Symbian this function is only useful for adding paths for
- finding Qt extension plugin stubs, since the OS can only
- load libraries from the \c{/sys/bin} directory.
-
\sa removeLibraryPath(), libraryPaths(), setLibraryPaths()
*/
void QCoreApplication::addLibraryPath(const QString &path)
diff --git a/src/corelib/kernel/qcoreapplication.h b/src/corelib/kernel/qcoreapplication.h
index abbc6e5821..d1fba3b63c 100644
--- a/src/corelib/kernel/qcoreapplication.h
+++ b/src/corelib/kernel/qcoreapplication.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QCoreApplicationPrivate;
class QTextCodec;
@@ -72,6 +71,7 @@ class Q_CORE_EXPORT QCoreApplication : public QObject
Q_PROPERTY(QString applicationVersion READ applicationVersion WRITE setApplicationVersion)
Q_PROPERTY(QString organizationName READ organizationName WRITE setOrganizationName)
Q_PROPERTY(QString organizationDomain READ organizationDomain WRITE setOrganizationDomain)
+ Q_PROPERTY(bool quitLockEnabled READ isQuitLockEnabled WRITE setQuitLockEnabled)
Q_DECLARE_PRIVATE(QCoreApplication)
public:
@@ -88,10 +88,6 @@ public:
~QCoreApplication();
-#ifdef QT_DEPRECATED
- QT_DEPRECATED static int argc();
- QT_DEPRECATED static char **argv();
-#endif
static QStringList arguments();
static void setAttribute(Qt::ApplicationAttribute attribute, bool on = true);
@@ -157,7 +153,7 @@ public:
virtual bool winEventFilter(MSG *message, long *result);
#endif
-#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_UNIX)
static void watchUnixSignal(int signal, bool watch);
#endif
@@ -165,6 +161,9 @@ public:
EventFilter setEventFilter(EventFilter filter);
bool filterEvent(void *message, long *result);
+ static bool isQuitLockEnabled();
+ static void setQuitLockEnabled(bool enabled);
+
public Q_SLOTS:
static void quit();
@@ -188,7 +187,7 @@ private:
void init();
static QCoreApplication *self;
-
+
Q_DISABLE_COPY(QCoreApplication)
friend class QEventDispatcherUNIXPrivate;
diff --git a/src/corelib/kernel/qcoreapplication_mac.cpp b/src/corelib/kernel/qcoreapplication_mac.cpp
index 289c2f4bdb..d304ee0593 100644
--- a/src/corelib/kernel/qcoreapplication_mac.cpp
+++ b/src/corelib/kernel/qcoreapplication_mac.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qcoreapplication_p.h b/src/corelib/kernel/qcoreapplication_p.h
index 692e460114..861a046f16 100644
--- a/src/corelib/kernel/qcoreapplication_p.h
+++ b/src/corelib/kernel/qcoreapplication_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -58,20 +58,10 @@
#include "QtCore/qsettings.h"
#include "private/qobject_p.h"
-#ifdef Q_OS_SYMBIAN
-#include <f32file.h>
-#endif
-
QT_BEGIN_NAMESPACE
typedef QList<QTranslator*> QTranslatorList;
-#if defined(Q_OS_SYMBIAN)
-# if !defined(QT_NO_SYSTEMLOCALE)
-class QEnvironmentChangeNotifier;
-# endif
-class CApaCommandLine;
-#endif
class QAbstractEventDispatcher;
class Q_CORE_EXPORT QCoreApplicationPrivate : public QObjectPrivate
@@ -99,12 +89,16 @@ public:
static QString macMenuBarName();
#endif
+ QAtomicInt quitLockRef;
+ void ref();
+ void deref();
+
static QThread *theMainThread;
static QThread *mainThread();
static bool checkInstance(const char *method);
static void sendPostedEvents(QObject *receiver, int event_type, QThreadData *data);
-#if !defined (QT_NO_DEBUG) || defined (QT_MAC_FRAMEWORK_BUILD) || defined (Q_OS_SYMBIAN)
+#if !defined (QT_NO_DEBUG) || defined (QT_MAC_FRAMEWORK_BUILD)
void checkReceiverThread(QObject *receiver);
#endif
int &argc;
@@ -124,13 +118,6 @@ public:
bool threadData_clean;
QString cachedApplicationDirPath;
QString cachedApplicationFilePath;
-#if defined(Q_OS_SYMBIAN)
-# if !defined(QT_NO_SYSTEMLOCALE)
- QScopedPointer<QEnvironmentChangeNotifier> environmentChangeNotifier;
- void symbianInit();
-# endif
- static CApaCommandLine* symbianCommandLine();
-#endif
static bool isTranslatorInstalled(QTranslator *translator);
diff --git a/src/corelib/kernel/qcoreapplication_win.cpp b/src/corelib/kernel/qcoreapplication_win.cpp
index 3cba628a41..9a45f28f16 100644
--- a/src/corelib/kernel/qcoreapplication_win.cpp
+++ b/src/corelib/kernel/qcoreapplication_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,13 +42,13 @@
#include "qcoreapplication.h"
#include "qcoreapplication_p.h"
#include "qstringlist.h"
-#include "qt_windows.h"
#include "qvector.h"
#include "qmutex.h"
#include "qfileinfo.h"
#include "qcorecmdlineargs_p.h"
#include <private/qthread_p.h>
#include <ctype.h>
+#include <qt_windows.h>
QT_BEGIN_NAMESPACE
@@ -161,6 +161,10 @@ Q_CORE_EXPORT void qWinMsgHandler(QtMsgType t, const char* str)
staticCriticalSection.unlock();
}
+Q_CORE_EXPORT void qWinMessageHandler(QtMsgType t, const QMessageLogContext &, const char* str)
+{
+ qWinMsgHandler(t, str);
+}
/*****************************************************************************
qWinMain() - Initializes Windows. Called from WinMain() in qtmain_win.cpp
diff --git a/src/corelib/kernel/qcorecmdlineargs_p.h b/src/corelib/kernel/qcorecmdlineargs_p.h
index 937c9898cd..151818b005 100644
--- a/src/corelib/kernel/qcorecmdlineargs_p.h
+++ b/src/corelib/kernel/qcorecmdlineargs_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -58,13 +58,11 @@
QT_BEGIN_NAMESPACE
-#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+#ifdef Q_OS_WIN
QT_BEGIN_INCLUDE_NAMESPACE
-#include "QtCore/qvector.h"
-#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
-# include "qt_windows.h"
-#endif
+# include "QtCore/qvector.h"
+# include <qt_windows.h>
QT_END_INCLUDE_NAMESPACE
// template implementation of the parsing algorithm
@@ -132,7 +130,6 @@ static QVector<Char*> qWinCmdLine(Char *cmdParam, int length, int &argc)
return argv;
}
-#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
static inline QStringList qWinCmdArgs(QString cmdLine) // not const-ref: this might be modified
{
QStringList args;
@@ -153,8 +150,8 @@ static inline QStringList qCmdLineArgs(int argc, char *argv[])
QString cmdLine = QString::fromWCharArray(GetCommandLine());
return qWinCmdArgs(cmdLine);
}
-#endif
-#else // !Q_OS_WIN || !Q_OS_SYMBIAN
+
+#else // !Q_OS_WIN
static inline QStringList qCmdLineArgs(int argc, char *argv[])
{
@@ -164,7 +161,7 @@ static inline QStringList qCmdLineArgs(int argc, char *argv[])
return args;
}
-#endif // Q_OS_WIN || Q_OS_SYMBIAN
+#endif // Q_OS_WIN
QT_END_NAMESPACE
diff --git a/src/corelib/kernel/qcoreevent.cpp b/src/corelib/kernel/qcoreevent.cpp
index bf8207283b..9ed696539a 100644
--- a/src/corelib/kernel/qcoreevent.cpp
+++ b/src/corelib/kernel/qcoreevent.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qcoreevent.h b/src/corelib/kernel/qcoreevent.h
index cbdf13c992..8910763daf 100644
--- a/src/corelib/kernel/qcoreevent.h
+++ b/src/corelib/kernel/qcoreevent.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QEventPrivate;
class Q_CORE_EXPORT QEvent // event base class
diff --git a/src/corelib/kernel/qcoreglobaldata.cpp b/src/corelib/kernel/qcoreglobaldata.cpp
index 3854f7d53a..d8ffcaae48 100644
--- a/src/corelib/kernel/qcoreglobaldata.cpp
+++ b/src/corelib/kernel/qcoreglobaldata.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qcoreglobaldata_p.h b/src/corelib/kernel/qcoreglobaldata_p.h
index 7b5120a0dc..50f619acf5 100644
--- a/src/corelib/kernel/qcoreglobaldata_p.h
+++ b/src/corelib/kernel/qcoreglobaldata_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qcrashhandler.cpp b/src/corelib/kernel/qcrashhandler.cpp
index 8f4577be24..1941300a28 100644
--- a/src/corelib/kernel/qcrashhandler.cpp
+++ b/src/corelib/kernel/qcrashhandler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qcrashhandler_p.h b/src/corelib/kernel/qcrashhandler_p.h
index a23dc98967..2d292f8a19 100644
--- a/src/corelib/kernel/qcrashhandler_p.h
+++ b/src/corelib/kernel/qcrashhandler_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qeventdispatcher_glib.cpp b/src/corelib/kernel/qeventdispatcher_glib.cpp
index f34570007b..4adcb7678c 100644
--- a/src/corelib/kernel/qeventdispatcher_glib.cpp
+++ b/src/corelib/kernel/qeventdispatcher_glib.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qeventdispatcher_glib_p.h b/src/corelib/kernel/qeventdispatcher_glib_p.h
index facacb07a8..7bd40564b9 100644
--- a/src/corelib/kernel/qeventdispatcher_glib_p.h
+++ b/src/corelib/kernel/qeventdispatcher_glib_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qeventdispatcher_unix.cpp b/src/corelib/kernel/qeventdispatcher_unix.cpp
index 26a9e9f0ca..d5805112e9 100644
--- a/src/corelib/kernel/qeventdispatcher_unix.cpp
+++ b/src/corelib/kernel/qeventdispatcher_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qeventdispatcher_unix_p.h b/src/corelib/kernel/qeventdispatcher_unix_p.h
index f4862bd9c3..e618853e09 100644
--- a/src/corelib/kernel/qeventdispatcher_unix_p.h
+++ b/src/corelib/kernel/qeventdispatcher_unix_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qeventdispatcher_win.cpp b/src/corelib/kernel/qeventdispatcher_win.cpp
index 3ade11ca60..768fde682b 100644
--- a/src/corelib/kernel/qeventdispatcher_win.cpp
+++ b/src/corelib/kernel/qeventdispatcher_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -408,7 +408,7 @@ LRESULT QT_WIN_CALLBACK qt_internal_proc(HWND hwnd, UINT message, WPARAM wp, LPA
const int localSerialNumber = d->serialNumber.load();
if (localSerialNumber != d->lastSerialNumber) {
d->lastSerialNumber = localSerialNumber;
- QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData);
+ q->sendPostedEvents();
}
return 0;
} else if (message == WM_TIMER) {
@@ -761,7 +761,7 @@ bool QEventDispatcherWin32::processEvents(QEventLoop::ProcessEventsFlags flags)
if (!seenWM_QT_SENDPOSTEDEVENTS && (flags & QEventLoop::EventLoopExec) == 0) {
// when called "manually", always send posted events
- QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData);
+ sendPostedEvents();
}
if (needWM_QT_SENDPOSTEDEVENTS)
@@ -1076,4 +1076,10 @@ bool QEventDispatcherWin32::event(QEvent *e)
return QAbstractEventDispatcher::event(e);
}
+void QEventDispatcherWin32::sendPostedEvents()
+{
+ Q_D(QEventDispatcherWin32);
+ QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData);
+}
+
QT_END_NAMESPACE
diff --git a/src/corelib/kernel/qeventdispatcher_win_p.h b/src/corelib/kernel/qeventdispatcher_win_p.h
index 833fcf13ac..c404967e6a 100644
--- a/src/corelib/kernel/qeventdispatcher_win_p.h
+++ b/src/corelib/kernel/qeventdispatcher_win_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -104,6 +104,7 @@ public:
protected:
QEventDispatcherWin32(QEventDispatcherWin32Private &dd, QObject *parent = 0);
+ virtual void sendPostedEvents();
private:
friend LRESULT QT_WIN_CALLBACK qt_internal_proc(HWND hwnd, UINT message, WPARAM wp, LPARAM lp);
diff --git a/src/corelib/kernel/qeventloop.cpp b/src/corelib/kernel/qeventloop.cpp
index 05e284ba34..8b0ec85679 100644
--- a/src/corelib/kernel/qeventloop.cpp
+++ b/src/corelib/kernel/qeventloop.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -43,24 +43,15 @@
#include "qabstracteventdispatcher.h"
#include "qcoreapplication.h"
+#include "qcoreapplication_p.h"
#include "qelapsedtimer.h"
#include "qobject_p.h"
+#include "qeventloop_p.h"
#include <private/qthread_p.h>
QT_BEGIN_NAMESPACE
-class QEventLoopPrivate : public QObjectPrivate
-{
- Q_DECLARE_PUBLIC(QEventLoop)
-public:
- inline QEventLoopPrivate()
- : exit(true), inExec(false), returnCode(-1)
- { }
- bool exit, inExec;
- int returnCode;
-};
-
/*!
\class QEventLoop
\brief The QEventLoop class provides a means of entering and leaving an event loop.
@@ -96,11 +87,8 @@ public:
available.
\omitvalue X11ExcludeTimers
- \omitvalue ExcludeUserInput
- \omitvalue WaitForMore
\omitvalue EventLoopExec
\omitvalue DialogExec
- \value DeferredDeletion deprecated - do not use.
\sa processEvents()
*/
@@ -144,8 +132,6 @@ bool QEventLoop::processEvents(ProcessEventsFlags flags)
Q_D(QEventLoop);
if (!d->threadData->eventDispatcher)
return false;
- if (flags & DeferredDeletion)
- QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
return d->threadData->eventDispatcher->processEvents(flags);
}
@@ -252,13 +238,9 @@ void QEventLoop::processEvents(ProcessEventsFlags flags, int maxTime)
QElapsedTimer start;
start.start();
- if (flags & DeferredDeletion)
- QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
while (processEvents(flags & ~WaitForMoreEvents)) {
if (start.elapsed() > maxTime)
break;
- if (flags & DeferredDeletion)
- QCoreApplication::sendPostedEvents(0, QEvent::DeferredDelete);
}
}
@@ -314,6 +296,17 @@ void QEventLoop::wakeUp()
d->threadData->eventDispatcher->wakeUp();
}
+
+bool QEventLoop::event(QEvent *event)
+{
+ if (event->type() == QEvent::Quit) {
+ quit();
+ return true;
+ } else {
+ return QObject::event(event);
+ }
+}
+
/*!
Tells the event loop to exit normally.
@@ -324,4 +317,85 @@ void QEventLoop::wakeUp()
void QEventLoop::quit()
{ exit(0); }
+
+class QEventLoopLockerPrivate
+{
+public:
+ explicit QEventLoopLockerPrivate(QEventLoopPrivate *loop)
+ : loop(loop), app(0)
+ {
+ loop->ref();
+ }
+
+ explicit QEventLoopLockerPrivate(QCoreApplicationPrivate *app)
+ : loop(0), app(app)
+ {
+ app->ref();
+ }
+
+ ~QEventLoopLockerPrivate()
+ {
+ if (loop)
+ loop->deref();
+ else
+ app->deref();
+ }
+
+private:
+ QEventLoopPrivate *loop;
+ QCoreApplicationPrivate *app;
+};
+
+/*!
+ \class QEventLoopLocker
+ \brief The QEventLoopLocker class provides a means to quit an event loop when it is no longer needed.
+
+ The QEventLoopLocker operates on particular objects - either a QCoreApplication
+ instance or a QEventLoop instance.
+
+ This makes it possible to, for example, run a batch of jobs with an event loop
+ and exit that event loop after the last job is finished. That is accomplished
+ by keeping a QEventLoopLocker with each job instance.
+
+ The variant which operates on QCoreApplication makes it possible to finish
+ asynchronously running jobs after the last gui window has been closed. This
+ can be useful for example for running a job which uploads data to a network.
+
+ \sa QEventLoop, QCoreApplication
+*/
+
+/*!
+ Creates an event locker operating on the \p app.
+
+ The application will quit when there are no more QEventLoopLockers operating on it.
+
+ \sa QCoreApplication::quit(), QCoreApplication::isQuitLockEnabled()
+ */
+QEventLoopLocker::QEventLoopLocker()
+ : d_ptr(new QEventLoopLockerPrivate(static_cast<QCoreApplicationPrivate*>(QObjectPrivate::get(QCoreApplication::instance()))))
+{
+
+}
+
+/*!
+ Creates an event locker operating on the \p app.
+
+ This particular QEventLoop will quit when there are no more QEventLoopLockers operating on it.
+
+ \sa QEventLoop::quit()
+ */
+QEventLoopLocker::QEventLoopLocker(QEventLoop *loop)
+ : d_ptr(new QEventLoopLockerPrivate(static_cast<QEventLoopPrivate*>(QObjectPrivate::get(loop))))
+{
+
+}
+
+/*!
+ Destroys this event loop locker object
+ */
+QEventLoopLocker::~QEventLoopLocker()
+{
+ delete d_ptr;
+}
+
QT_END_NAMESPACE
diff --git a/src/corelib/kernel/qeventloop.h b/src/corelib/kernel/qeventloop.h
index a76ba0ad93..0e7195d6a7 100644
--- a/src/corelib/kernel/qeventloop.h
+++ b/src/corelib/kernel/qeventloop.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QEventLoopPrivate;
@@ -66,12 +65,9 @@ public:
ExcludeUserInputEvents = 0x01,
ExcludeSocketNotifiers = 0x02,
WaitForMoreEvents = 0x04,
- X11ExcludeTimers = 0x08
-#ifdef QT_DEPRECATED
- , DeferredDeletion = 0x10
-#endif
- , EventLoopExec = 0x20
- , DialogExec = 0x40
+ X11ExcludeTimers = 0x08,
+ EventLoopExec = 0x20,
+ DialogExec = 0x40
};
Q_DECLARE_FLAGS(ProcessEventsFlags, ProcessEventsFlag)
@@ -84,12 +80,29 @@ public:
void wakeUp();
+ bool event(QEvent *event);
+
public Q_SLOTS:
void quit();
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QEventLoop::ProcessEventsFlags)
+
+class QEventLoopLockerPrivate;
+
+class Q_CORE_EXPORT QEventLoopLocker
+{
+public:
+ QEventLoopLocker();
+ explicit QEventLoopLocker(QEventLoop *loop);
+ ~QEventLoopLocker();
+
+private:
+ Q_DISABLE_COPY(QEventLoopLocker)
+ QEventLoopLockerPrivate *d_ptr;
+};
+
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/corelib/kernel/qeventloop_p.h b/src/corelib/kernel/qeventloop_p.h
new file mode 100644
index 0000000000..5770ed0076
--- /dev/null
+++ b/src/corelib/kernel/qeventloop_p.h
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QEVENTLOOP_P_H
+#define QEVENTLOOP_P_H
+
+#include "qobject_p.h"
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Core)
+
+class QEventLoopPrivate : public QObjectPrivate
+{
+ Q_DECLARE_PUBLIC(QEventLoop)
+public:
+ inline QEventLoopPrivate()
+ : exit(true), inExec(false), returnCode(-1)
+ { }
+
+ QAtomicInt quitLockRef;
+
+ bool exit, inExec;
+ int returnCode;
+
+ void ref()
+ {
+ quitLockRef.ref();
+ }
+
+ void deref()
+ {
+ if (!quitLockRef.deref() && inExec) {
+ qApp->postEvent(q_ptr, new QEvent(QEvent::Quit));
+ }
+ }
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QEVENTLOOP_P_H
diff --git a/src/corelib/kernel/qfunctions_nacl.cpp b/src/corelib/kernel/qfunctions_nacl.cpp
index 76272154b3..c4aad29142 100644
--- a/src/corelib/kernel/qfunctions_nacl.cpp
+++ b/src/corelib/kernel/qfunctions_nacl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qfunctions_nacl.h b/src/corelib/kernel/qfunctions_nacl.h
index a2f5d928f0..955a32c5d1 100644
--- a/src/corelib/kernel/qfunctions_nacl.h
+++ b/src/corelib/kernel/qfunctions_nacl.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,7 +56,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
extern "C" {
diff --git a/src/corelib/kernel/qfunctions_p.h b/src/corelib/kernel/qfunctions_p.h
index 88686e976a..52d617c732 100644
--- a/src/corelib/kernel/qfunctions_p.h
+++ b/src/corelib/kernel/qfunctions_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qfunctions_vxworks.cpp b/src/corelib/kernel/qfunctions_vxworks.cpp
index c39e6ad458..6d519cf0dd 100644
--- a/src/corelib/kernel/qfunctions_vxworks.cpp
+++ b/src/corelib/kernel/qfunctions_vxworks.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qfunctions_vxworks.h b/src/corelib/kernel/qfunctions_vxworks.h
index 22dc7bcc06..6a29573e66 100644
--- a/src/corelib/kernel/qfunctions_vxworks.h
+++ b/src/corelib/kernel/qfunctions_vxworks.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -65,7 +65,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
#ifdef QT_BUILD_CORE_LIB
-QT_MODULE(Core)
#endif
QT_END_NAMESPACE
diff --git a/src/corelib/kernel/qfunctions_wince.cpp b/src/corelib/kernel/qfunctions_wince.cpp
index 8fd09679ce..9b9c3553d6 100644
--- a/src/corelib/kernel/qfunctions_wince.cpp
+++ b/src/corelib/kernel/qfunctions_wince.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qfunctions_wince.h b/src/corelib/kernel/qfunctions_wince.h
index d634cba67e..f83dad0dde 100644
--- a/src/corelib/kernel/qfunctions_wince.h
+++ b/src/corelib/kernel/qfunctions_wince.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,7 +60,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
#ifdef QT_BUILD_CORE_LIB
-QT_MODULE(Core)
#endif
QT_END_NAMESPACE
diff --git a/src/corelib/kernel/qmath.cpp b/src/corelib/kernel/qmath.cpp
index fb5087092c..5c9e2fbba3 100644
--- a/src/corelib/kernel/qmath.cpp
+++ b/src/corelib/kernel/qmath.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qmath.h b/src/corelib/kernel/qmath.h
index 793138a5e0..309564b0f8 100644
--- a/src/corelib/kernel/qmath.h
+++ b/src/corelib/kernel/qmath.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -46,15 +46,10 @@
#include <QtCore/qglobal.h>
-#ifdef Q_OS_SYMBIAN
-# include <e32math.h>
-#endif
-
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#define QT_SINE_TABLE_SIZE 256
@@ -92,130 +87,82 @@ inline qreal qFabs(qreal v)
inline qreal qSin(qreal v)
{
-#ifdef Q_OS_SYMBIAN
- TReal sin_v;
- Math::Sin(sin_v, static_cast<TReal>(v));
- return static_cast<qreal>(sin_v);
-#else
-# ifdef QT_USE_MATH_H_FLOATS
- if (sizeof(qreal) == sizeof(float))
- return sinf(float(v));
- else
-# endif
- return sin(v);
+#ifdef QT_USE_MATH_H_FLOATS
+ if (sizeof(qreal) == sizeof(float))
+ return sinf(float(v));
+ else
#endif
+ return sin(v);
}
inline qreal qCos(qreal v)
{
-#ifdef Q_OS_SYMBIAN
- TReal cos_v;
- Math::Cos(cos_v, static_cast<TReal>(v));
- return static_cast<qreal>(cos_v);
-#else
-# ifdef QT_USE_MATH_H_FLOATS
- if (sizeof(qreal) == sizeof(float))
- return cosf(float(v));
- else
-# endif
- return cos(v);
+#ifdef QT_USE_MATH_H_FLOATS
+ if (sizeof(qreal) == sizeof(float))
+ return cosf(float(v));
+ else
#endif
+ return cos(v);
}
inline qreal qTan(qreal v)
{
-#ifdef Q_OS_SYMBIAN
- TReal tan_v;
- Math::Tan(tan_v, static_cast<TReal>(v));
- return static_cast<qreal>(tan_v);
-#else
-# ifdef QT_USE_MATH_H_FLOATS
- if (sizeof(qreal) == sizeof(float))
- return tanf(float(v));
- else
-# endif
- return tan(v);
+#ifdef QT_USE_MATH_H_FLOATS
+ if (sizeof(qreal) == sizeof(float))
+ return tanf(float(v));
+ else
#endif
+ return tan(v);
}
inline qreal qAcos(qreal v)
{
-#ifdef Q_OS_SYMBIAN
- TReal acos_v;
- Math::ACos(acos_v, static_cast<TReal>(v));
- return static_cast<qreal>(acos_v);
-#else
-# ifdef QT_USE_MATH_H_FLOATS
- if (sizeof(qreal) == sizeof(float))
- return acosf(float(v));
- else
-# endif
- return acos(v);
+#ifdef QT_USE_MATH_H_FLOATS
+ if (sizeof(qreal) == sizeof(float))
+ return acosf(float(v));
+ else
#endif
+ return acos(v);
}
inline qreal qAsin(qreal v)
{
-#ifdef Q_OS_SYMBIAN
- TReal asin_v;
- Math::ASin(asin_v, static_cast<TReal>(v));
- return static_cast<qreal>(asin_v);
-#else
-# ifdef QT_USE_MATH_H_FLOATS
- if (sizeof(qreal) == sizeof(float))
- return asinf(float(v));
- else
-# endif
- return asin(v);
+#ifdef QT_USE_MATH_H_FLOATS
+ if (sizeof(qreal) == sizeof(float))
+ return asinf(float(v));
+ else
#endif
+ return asin(v);
}
inline qreal qAtan(qreal v)
{
-#ifdef Q_OS_SYMBIAN
- TReal atan_v;
- Math::ATan(atan_v, static_cast<TReal>(v));
- return static_cast<qreal>(atan_v);
-#else
-# ifdef QT_USE_MATH_H_FLOATS
- if(sizeof(qreal) == sizeof(float))
- return atanf(float(v));
- else
-# endif
- return atan(v);
+#ifdef QT_USE_MATH_H_FLOATS
+ if (sizeof(qreal) == sizeof(float))
+ return atanf(float(v));
+ else
#endif
+ return atan(v);
}
inline qreal qAtan2(qreal x, qreal y)
{
-#ifdef Q_OS_SYMBIAN
- TReal atan2_v;
- Math::ATan(atan2_v, static_cast<TReal>(x), static_cast<TReal>(y));
- return static_cast<qreal>(atan2_v);
-#else
-# ifdef QT_USE_MATH_H_FLOATS
- if(sizeof(qreal) == sizeof(float))
- return atan2f(float(x), float(y));
- else
-# endif
- return atan2(x, y);
+#ifdef QT_USE_MATH_H_FLOATS
+ if (sizeof(qreal) == sizeof(float))
+ return atan2f(float(x), float(y));
+ else
#endif
+ return atan2(x, y);
}
inline qreal qSqrt(qreal v)
{
-#ifdef Q_OS_SYMBIAN
- TReal sqrt_v;
- Math::Sqrt(sqrt_v, static_cast<TReal>(v));
- return static_cast<qreal>(sqrt_v);
-#else
-# ifdef QT_USE_MATH_H_FLOATS
- if (sizeof(qreal) == sizeof(float))
- return sqrtf(float(v));
- else
-# endif
- return sqrt(v);
+#ifdef QT_USE_MATH_H_FLOATS
+ if (sizeof(qreal) == sizeof(float))
+ return sqrtf(float(v));
+ else
#endif
+ return sqrt(v);
}
inline qreal qLn(qreal v)
@@ -230,31 +177,19 @@ inline qreal qLn(qreal v)
inline qreal qExp(qreal v)
{
-#ifdef Q_OS_SYMBIAN
- TReal exp_v;
- Math::Exp(exp_v, static_cast<TReal>(v));
- return static_cast<qreal>(exp_v);
-#else
// only one signature
// exists, exp(double)
return exp(v);
-#endif
}
inline qreal qPow(qreal x, qreal y)
{
-#ifdef Q_OS_SYMBIAN
- TReal pow_v;
- Math::Pow(pow_v, static_cast<TReal>(x), static_cast<TReal>(y));
- return static_cast<qreal>(pow_v);
-#else
-# ifdef QT_USE_MATH_H_FLOATS
- if (sizeof(qreal) == sizeof(float))
- return powf(float(x), float(y));
- else
-# endif
- return pow(x, y);
+#ifdef QT_USE_MATH_H_FLOATS
+ if (sizeof(qreal) == sizeof(float))
+ return powf(float(x), float(y));
+ else
#endif
+ return pow(x, y);
}
#ifndef M_PI
diff --git a/src/corelib/kernel/qmath.qdoc b/src/corelib/kernel/qmath.qdoc
index b2de54ee32..fcc51764b0 100644
--- a/src/corelib/kernel/qmath.qdoc
+++ b/src/corelib/kernel/qmath.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qmetaobject.cpp b/src/corelib/kernel/qmetaobject.cpp
index d7cbab8e3a..400fe54c7f 100644
--- a/src/corelib/kernel/qmetaobject.cpp
+++ b/src/corelib/kernel/qmetaobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -2105,8 +2105,6 @@ QVariant::Type QMetaProperty::type() const
uint flags = mobj->d.data[handle + 2];
uint type = flags >> 24;
- if (type == 0xff) // special value for QVariant
- type = QVariant::LastType;
if (type)
return QVariant::Type(type);
if (isEnumType()) {
@@ -2241,8 +2239,6 @@ QVariant QMetaProperty::read(const QObject *object) const
uint flags = mobj->d.data[handle + 2];
const char *typeName = mobj->d.stringdata + mobj->d.data[handle + 1];
t = (flags >> 24);
- if (t == 0xff) // special value for QVariant
- t = QVariant::LastType;
if (t == QVariant::Invalid)
t = QMetaType::type(typeName);
if (t == QVariant::Invalid)
@@ -2262,7 +2258,7 @@ QVariant QMetaProperty::read(const QObject *object) const
int status = -1;
QVariant value;
void *argv[] = { 0, &value, &status };
- if (t == QVariant::LastType) {
+ if (t == QMetaType::QVariant) {
argv[0] = &value;
} else {
value = QVariant(t, (void*)0);
@@ -2273,7 +2269,7 @@ QVariant QMetaProperty::read(const QObject *object) const
if (status != -1)
return value;
- if (t != QVariant::LastType && argv[0] != value.data())
+ if (t != QMetaType::QVariant && argv[0] != value.data())
// pointer or reference
return QVariant((QVariant::Type)t, argv[0]);
return value;
@@ -2312,8 +2308,6 @@ bool QMetaProperty::write(QObject *object, const QVariant &value) const
int handle = priv(mobj->d.data)->propertyData + 3*idx;
uint flags = mobj->d.data[handle + 2];
t = flags >> 24;
- if (t == 0xff) // special value for QVariant
- t = QVariant::LastType;
if (t == QVariant::Invalid) {
const char *typeName = mobj->d.stringdata + mobj->d.data[handle + 1];
const char *vtypeName = value.typeName();
@@ -2324,7 +2318,7 @@ bool QMetaProperty::write(QObject *object, const QVariant &value) const
}
if (t == QVariant::Invalid)
return false;
- if (t != QVariant::LastType && t != (uint)value.userType() && (t < QMetaType::User && !v.convert((QVariant::Type)t)))
+ if (t != QMetaType::QVariant && t != (uint)value.userType() && (t < QMetaType::User && !v.convert((QVariant::Type)t)))
return false;
}
@@ -2338,7 +2332,7 @@ bool QMetaProperty::write(QObject *object, const QVariant &value) const
// interception of property writes.
int flags = 0;
void *argv[] = { 0, &v, &status, &flags };
- if (t == QVariant::LastType)
+ if (t == QMetaType::QVariant)
argv[0] = &v;
else
argv[0] = v.data();
diff --git a/src/corelib/kernel/qmetaobject.h b/src/corelib/kernel/qmetaobject.h
index 61ca373745..650369164c 100644
--- a/src/corelib/kernel/qmetaobject.h
+++ b/src/corelib/kernel/qmetaobject.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
template <typename T> class QList;
diff --git a/src/corelib/kernel/qmetaobject_moc_p.h b/src/corelib/kernel/qmetaobject_moc_p.h
index abfdc442c0..06a5b64978 100644
--- a/src/corelib/kernel/qmetaobject_moc_p.h
+++ b/src/corelib/kernel/qmetaobject_moc_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qmetaobject_p.h b/src/corelib/kernel/qmetaobject_p.h
index 45fb95495c..5fc0555fb5 100644
--- a/src/corelib/kernel/qmetaobject_p.h
+++ b/src/corelib/kernel/qmetaobject_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -109,6 +109,8 @@ class QMutex;
struct QMetaObjectPrivate
{
+ enum { OutputRevision = 6 }; // Used by moc and qmetaobjectbuilder
+
int revision;
int className;
int classInfoCount, classInfoData;
diff --git a/src/corelib/kernel/qmetaobjectbuilder.cpp b/src/corelib/kernel/qmetaobjectbuilder.cpp
index 601d52529f..529ca22107 100644
--- a/src/corelib/kernel/qmetaobjectbuilder.cpp
+++ b/src/corelib/kernel/qmetaobjectbuilder.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,12 +34,18 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "qmetaobjectbuilder_p.h"
+#include "qobject_p.h"
+#include "qmetaobject_p.h"
+
+#include <stdlib.h>
+
QT_BEGIN_NAMESPACE
/*!
@@ -78,17 +83,6 @@ uint qvariant_nameToType(const char* name)
if (!name)
return 0;
- if (strcmp(name, "QVariant") == 0)
- return 0xffffffff;
- if (strcmp(name, "QCString") == 0)
- return QMetaType::QByteArray;
- if (strcmp(name, "Q_LLONG") == 0)
- return QMetaType::LongLong;
- if (strcmp(name, "Q_ULLONG") == 0)
- return QMetaType::ULongLong;
- if (strcmp(name, "QIconSet") == 0)
- return QMetaType::QIcon;
-
uint tp = QMetaType::type(name);
return tp < QMetaType::User ? tp : 0;
}
@@ -101,63 +95,6 @@ bool isVariantType(const char* type)
return qvariant_nameToType(type) != 0;
}
-// copied from qmetaobject_p.h
-// do not touch without touching the moc as well
-enum PropertyFlags {
- Invalid = 0x00000000,
- Readable = 0x00000001,
- Writable = 0x00000002,
- Resettable = 0x00000004,
- EnumOrFlag = 0x00000008,
- StdCppSet = 0x00000100,
-// Override = 0x00000200,
- Constant = 0x00000400,
- Final = 0x00000800,
- Designable = 0x00001000,
- ResolveDesignable = 0x00002000,
- Scriptable = 0x00004000,
- ResolveScriptable = 0x00008000,
- Stored = 0x00010000,
- ResolveStored = 0x00020000,
- Editable = 0x00040000,
- ResolveEditable = 0x00080000,
- User = 0x00100000,
- ResolveUser = 0x00200000,
- Notify = 0x00400000,
- Revisioned = 0x00800000
-};
-
-enum MethodFlags {
- AccessPrivate = 0x00,
- AccessProtected = 0x01,
- AccessPublic = 0x02,
- AccessMask = 0x03, //mask
-
- MethodMethod = 0x00,
- MethodSignal = 0x04,
- MethodSlot = 0x08,
- MethodConstructor = 0x0c,
- MethodTypeMask = 0x0c,
-
- MethodCompatibility = 0x10,
- MethodCloned = 0x20,
- MethodScriptable = 0x40,
- MethodRevisioned = 0x80
-};
-
-struct QMetaObjectPrivate
-{
- int revision;
- int className;
- int classInfoCount, classInfoData;
- int methodCount, methodData;
- int propertyCount, propertyData;
- int enumeratorCount, enumeratorData;
- int constructorCount, constructorData;
- int flags;
- int signalCount;
-};
-
static inline const QMetaObjectPrivate *priv(const uint* data)
{ return reinterpret_cast<const QMetaObjectPrivate*>(data); }
// end of copied lines from qmetaobject.cpp
@@ -1199,7 +1136,8 @@ static int buildMetaObject(QMetaObjectBuilderPrivate *d, char *buf,
}
}
if (buf) {
- pmeta->revision = 4;
+ Q_STATIC_ASSERT_X(QMetaObjectPrivate::OutputRevision == 6, "QMetaObjectBuilder should generate the same version as moc");
+ pmeta->revision = QMetaObjectPrivate::OutputRevision;
pmeta->flags = d->flags;
pmeta->className = 0; // Class name is always the first string.
//pmeta->signalCount is handled in the "output method loop" as an optimization.
diff --git a/src/corelib/kernel/qmetaobjectbuilder_p.h b/src/corelib/kernel/qmetaobjectbuilder_p.h
index bf3fd2499c..17b7af0c77 100644
--- a/src/corelib/kernel/qmetaobjectbuilder_p.h
+++ b/src/corelib/kernel/qmetaobjectbuilder_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp
index 375c7b75bb..50b11e0e98 100644
--- a/src/corelib/kernel/qmetatype.cpp
+++ b/src/corelib/kernel/qmetatype.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -79,40 +79,40 @@ QT_BEGIN_NAMESPACE
namespace {
template<typename T>
-struct TypeDefiniton {
+struct TypeDefinition {
static const bool IsAvailable = true;
};
struct DefinedTypesFilter {
template<typename T>
struct Acceptor {
- static const bool IsAccepted = TypeDefiniton<T>::IsAvailable && QTypeModuleInfo<T>::IsCore;
+ static const bool IsAccepted = TypeDefinition<T>::IsAvailable && QTypeModuleInfo<T>::IsCore;
};
};
// Ignore these types, as incomplete
#ifdef QT_NO_GEOM_VARIANT
-template<> struct TypeDefiniton<QRect> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QRectF> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QSize> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QSizeF> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QLine> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QLineF> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QPoint> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QPointF> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QRect> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QRectF> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QSize> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QSizeF> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QLine> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QLineF> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QPoint> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QPointF> { static const bool IsAvailable = false; };
#endif
#ifdef QT_BOOTSTRAPPED
-template<> struct TypeDefiniton<QVariantMap> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QVariantHash> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QVariantList> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QVariant> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QBitArray> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QUrl> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QEasingCurve> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QModelIndex> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QVariantMap> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QVariantHash> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QVariantList> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QVariant> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QBitArray> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QUrl> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QEasingCurve> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QModelIndex> { static const bool IsAvailable = false; };
#endif
#ifdef QT_NO_REGEXP
-template<> struct TypeDefiniton<QRegExp> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QRegExp> { static const bool IsAvailable = false; };
#endif
} // namespace
@@ -228,14 +228,13 @@ template<> struct TypeDefiniton<QRegExp> { static const bool IsAvailable = false
\value User Base value for user types
- \omitvalue FirstCoreExtType
\omitvalue FirstGuiType
\omitvalue FirstWidgetsType
- \omitvalue LastCoreExtType
\omitvalue LastCoreType
\omitvalue LastGuiType
\omitvalue LastWidgetsType
\omitvalue QReal
+ \omitvalue HighestInternalId
Additional types can be registered using Q_DECLARE_METATYPE().
@@ -362,10 +361,10 @@ const char *QMetaType::typeName(int type)
// In theory it can be filled during compilation time, but for some reason template code
// that is able to do it causes GCC 4.6 to generate additional 3K of executable code. Probably
// it is not worth of it.
- static const char *namesCache[QMetaType::LastCoreExtType + 1];
+ static const char *namesCache[QMetaType::HighestInternalId + 1];
const char *result;
- if (type <= QMetaType::LastCoreExtType && ((result = namesCache[type])))
+ if (type <= QMetaType::HighestInternalId && ((result = namesCache[type])))
return result;
#define QT_METATYPE_TYPEID_TYPENAME_CONVERTER(MetaTypeName, TypeId, RealName) \
@@ -388,7 +387,7 @@ const char *QMetaType::typeName(int type)
}
#undef QT_METATYPE_TYPEID_TYPENAME_CONVERTER
- Q_ASSERT(type <= QMetaType::LastCoreExtType);
+ Q_ASSERT(type <= QMetaType::HighestInternalId);
namesCache[type] = result;
return result;
}
@@ -634,6 +633,7 @@ bool QMetaType::save(QDataStream &stream, int type, const void *data)
case QMetaType::VoidStar:
case QMetaType::QObjectStar:
case QMetaType::QWidgetStar:
+ case QMetaType::QModelIndex:
return false;
case QMetaType::Long:
stream << qlonglong(*static_cast<const long *>(data));
@@ -838,6 +838,7 @@ bool QMetaType::load(QDataStream &stream, int type, void *data)
case QMetaType::VoidStar:
case QMetaType::QObjectStar:
case QMetaType::QWidgetStar:
+ case QMetaType::QModelIndex:
return false;
case QMetaType::Long: {
qlonglong l;
@@ -1262,6 +1263,60 @@ void *QMetaType::create(int type, const void *copy)
return creator(copy);
}
+namespace {
+class TypeDestroyer {
+ template<typename T, bool IsAcceptedType = DefinedTypesFilter::Acceptor<T>::IsAccepted>
+ struct DestroyerImpl {
+ static void Destroy(const int /* type */, T *where) { delete where; }
+ };
+ template<typename T>
+ struct DestroyerImpl<T, /* IsAcceptedType = */ false> {
+ static void Destroy(const int type, void *where)
+ {
+ if (QTypeModuleInfo<T>::IsGui) {
+ if (qMetaTypeGuiHelper)
+ qMetaTypeGuiHelper[type - QMetaType::FirstGuiType].deleter(where);
+ return;
+ }
+ if (QTypeModuleInfo<T>::IsWidget) {
+ if (qMetaTypeWidgetsHelper)
+ qMetaTypeWidgetsHelper[type - QMetaType::FirstWidgetsType].deleter(where);
+ return;
+ }
+ // This point can be reached only for known types that definition is not available, for example
+ // in bootstrap mode. We have no other choice then ignore it.
+ }
+ };
+public:
+ TypeDestroyer(const int type)
+ : m_type(type)
+ {}
+
+ template<typename T>
+ void delegate(const T *where) { DestroyerImpl<T>::Destroy(m_type, const_cast<T*>(where)); }
+ void delegate(const void *) {}
+ void delegate(const QMetaTypeSwitcher::UnknownType *where) { customTypeDestroyer(m_type, (void*)where); }
+
+private:
+ static void customTypeDestroyer(const int type, void *where)
+ {
+ QMetaType::Destructor deleter;
+ const QVector<QCustomTypeInfo> * const ct = customTypes();
+ {
+ QReadLocker locker(customTypesLock());
+ if (Q_UNLIKELY(type < QMetaType::User || !ct || ct->count() <= type - QMetaType::User))
+ return;
+ deleter = ct->at(type - QMetaType::User).deleter;
+ }
+ if (Q_LIKELY(deleter))
+ deleter(where);
+ }
+
+ const int m_type;
+};
+} // namespace
+
+
/*!
Destroys the \a data, assuming it is of the \a type given.
@@ -1269,173 +1324,8 @@ void *QMetaType::create(int type, const void *copy)
*/
void QMetaType::destroy(int type, void *data)
{
- if (!data)
- return;
- switch(type) {
- case QMetaType::VoidStar:
- case QMetaType::QObjectStar:
- case QMetaType::QWidgetStar:
- delete static_cast<void**>(data);
- break;
- case QMetaType::Long:
- delete static_cast<long*>(data);
- break;
- case QMetaType::Int:
- delete static_cast<int*>(data);
- break;
- case QMetaType::Short:
- delete static_cast<short*>(data);
- break;
- case QMetaType::Char:
- delete static_cast<char*>(data);
- break;
- case QMetaType::ULong:
- delete static_cast<ulong*>(data);
- break;
- case QMetaType::LongLong:
- delete static_cast<qlonglong*>(data);
- break;
- case QMetaType::ULongLong:
- delete static_cast<qulonglong*>(data);
- break;
- case QMetaType::UInt:
- delete static_cast<uint*>(data);
- break;
- case QMetaType::UShort:
- delete static_cast<ushort*>(data);
- break;
- case QMetaType::UChar:
- delete static_cast<uchar*>(data);
- break;
- case QMetaType::Bool:
- delete static_cast<bool*>(data);
- break;
- case QMetaType::Float:
- delete static_cast<float*>(data);
- break;
- case QMetaType::Double:
- delete static_cast<double*>(data);
- break;
- case QMetaType::QChar:
- delete static_cast< NS(QChar)* >(data);
- break;
-#ifndef QT_BOOTSTRAPPED
- case QMetaType::QVariantMap:
- delete static_cast< NS(QVariantMap)* >(data);
- break;
- case QMetaType::QVariantHash:
- delete static_cast< NS(QVariantHash)* >(data);
- break;
- case QMetaType::QVariantList:
- delete static_cast< NS(QVariantList)* >(data);
- break;
- case QMetaType::QVariant:
- delete static_cast< NS(QVariant)* >(data);
- break;
-#endif
- case QMetaType::QByteArray:
- delete static_cast< NS(QByteArray)* >(data);
- break;
- case QMetaType::QString:
- delete static_cast< NS(QString)* >(data);
- break;
- case QMetaType::QStringList:
- delete static_cast< NS(QStringList)* >(data);
- break;
-#ifndef QT_BOOTSTRAPPED
- case QMetaType::QBitArray:
- delete static_cast< NS(QBitArray)* >(data);
- break;
-#endif
- case QMetaType::QDate:
- delete static_cast< NS(QDate)* >(data);
- break;
- case QMetaType::QTime:
- delete static_cast< NS(QTime)* >(data);
- break;
- case QMetaType::QDateTime:
- delete static_cast< NS(QDateTime)* >(data);
- break;
-#ifndef QT_BOOTSTRAPPED
- case QMetaType::QUrl:
- delete static_cast< NS(QUrl)* >(data);
-#endif
- break;
- case QMetaType::QLocale:
- delete static_cast< NS(QLocale)* >(data);
- break;
-#ifndef QT_NO_GEOM_VARIANT
- case QMetaType::QRect:
- delete static_cast< NS(QRect)* >(data);
- break;
- case QMetaType::QRectF:
- delete static_cast< NS(QRectF)* >(data);
- break;
- case QMetaType::QSize:
- delete static_cast< NS(QSize)* >(data);
- break;
- case QMetaType::QSizeF:
- delete static_cast< NS(QSizeF)* >(data);
- break;
- case QMetaType::QLine:
- delete static_cast< NS(QLine)* >(data);
- break;
- case QMetaType::QLineF:
- delete static_cast< NS(QLineF)* >(data);
- break;
- case QMetaType::QPoint:
- delete static_cast< NS(QPoint)* >(data);
- break;
- case QMetaType::QPointF:
- delete static_cast< NS(QPointF)* >(data);
- break;
-#endif
-#ifndef QT_NO_REGEXP
- case QMetaType::QRegExp:
- delete static_cast< NS(QRegExp)* >(data);
- break;
-#endif
-#ifndef QT_BOOTSTRAPPED
- case QMetaType::QEasingCurve:
- delete static_cast< NS(QEasingCurve)* >(data);
- break;
-#endif
- case QMetaType::QUuid:
- delete static_cast< NS(QUuid)* >(data);
- break;
-#ifndef QT_BOOTSTRAPPED
- case QMetaType::QModelIndex:
- delete static_cast< NS(QModelIndex)* >(data);
- break;
-#endif
- case QMetaType::Void:
- break;
- default: {
- const QVector<QCustomTypeInfo> * const ct = customTypes();
- Deleter deleter = 0;
- if (type >= FirstGuiType && type <= LastGuiType) {
- Q_ASSERT(qMetaTypeGuiHelper);
-
- if (!qMetaTypeGuiHelper)
- return;
- deleter = qMetaTypeGuiHelper[type - FirstGuiType].deleter;
- } else if (type >= FirstWidgetsType && type <= LastWidgetsType) {
- Q_ASSERT(qMetaTypeWidgetsHelper);
-
- if (!qMetaTypeWidgetsHelper)
- return;
- deleter = qMetaTypeWidgetsHelper[type - FirstWidgetsType].deleter;
- } else {
- QReadLocker locker(customTypesLock());
- if (type < User || !ct || ct->count() <= type - User)
- break;
- if (ct->at(type - User).typeName.isEmpty())
- break;
- deleter = ct->at(type - User).deleter;
- }
- deleter(data);
- break; }
- }
+ TypeDestroyer deleter(type);
+ QMetaTypeSwitcher::switcher<void>(deleter, type, data);
}
namespace {
@@ -1547,8 +1437,10 @@ class TypeDestructor {
if (!qMetaTypeWidgetsHelper)
return;
dtor = qMetaTypeWidgetsHelper[type - QMetaType::FirstWidgetsType].destructor;
- } else
+ } else {
customTypeDestructor(type, where);
+ return;
+ }
dtor(where);
}
};
@@ -1605,7 +1497,7 @@ namespace {
class SizeOf {
template<typename T, bool IsAcceptedType = DefinedTypesFilter::Acceptor<T>::IsAccepted>
struct SizeOfImpl {
- static int Size(const int) { return sizeof(T); }
+ static int Size(const int) { return QTypeInfo<T>::sizeOf; }
};
template<typename T>
struct SizeOfImpl<T, /* IsAcceptedType = */ false> {
@@ -1631,7 +1523,6 @@ public:
template<typename T>
int delegate(const T*) { return SizeOfImpl<T>::Size(m_type); }
- int delegate(const void*) { return 0; }
int delegate(const QMetaTypeSwitcher::UnknownType*) { return customTypeSizeOf(m_type); }
private:
static int customTypeSizeOf(const int type)
@@ -1670,11 +1561,13 @@ class Flags
template<typename T, bool IsAcceptedType = DefinedTypesFilter::Acceptor<T>::IsAccepted>
struct FlagsImpl
{
- static quint32 Flags(const int)
+ static quint32 Flags(const int type)
{
return (!QTypeInfo<T>::isStatic * QMetaType::MovableType)
| (QTypeInfo<T>::isComplex * QMetaType::NeedsConstruction)
- | (QTypeInfo<T>::isComplex * QMetaType::NeedsDestruction);
+ | (QTypeInfo<T>::isComplex * QMetaType::NeedsDestruction)
+ | (type == QMetaType::QObjectStar ? QMetaType::PointerToQObject : 0)
+ | (type == QMetaType::QWidgetStar ? QMetaType::PointerToQObject : 0);
}
};
template<typename T>
diff --git a/src/corelib/kernel/qmetatype.h b/src/corelib/kernel/qmetatype.h
index 843044eee6..0ea9d26394 100644
--- a/src/corelib/kernel/qmetatype.h
+++ b/src/corelib/kernel/qmetatype.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -44,6 +44,7 @@
#include <QtCore/qglobal.h>
#include <QtCore/qatomic.h>
+#include <QtCore/qbytearray.h>
#include <new>
@@ -55,7 +56,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
// F is a tuple: (QMetaType::TypeName, QMetaType::TypeNameID, RealType)
#define QT_FOR_EACH_STATIC_PRIMITIVE_TYPE(F)\
@@ -66,16 +66,16 @@ QT_MODULE(Core)
F(LongLong, 4, qlonglong) \
F(ULongLong, 5, qulonglong) \
F(Double, 6, double) \
- F(Long, 129, long) \
- F(Short, 130, short) \
- F(Char, 131, char) \
- F(ULong, 132, ulong) \
- F(UShort, 133, ushort) \
- F(UChar, 134, uchar) \
- F(Float, 135, float) \
+ F(Long, 32, long) \
+ F(Short, 33, short) \
+ F(Char, 34, char) \
+ F(ULong, 35, ulong) \
+ F(UShort, 36, ushort) \
+ F(UChar, 37, uchar) \
+ F(Float, 38, float) \
#define QT_FOR_EACH_STATIC_PRIMITIVE_POINTER(F)\
- F(VoidStar, 128, void*) \
+ F(VoidStar, 31, void*) \
#define QT_FOR_EACH_STATIC_CORE_CLASS(F)\
F(QChar, 7, QChar) \
@@ -99,12 +99,12 @@ QT_MODULE(Core)
F(QRegExp, 27, QRegExp) \
F(QEasingCurve, 29, QEasingCurve) \
F(QUuid, 30, QUuid) \
- F(QModelIndex, 31, QModelIndex) \
- F(QVariant, 138, QVariant) \
+ F(QVariant, 41, QVariant) \
+ F(QModelIndex, 42, QModelIndex) \
#define QT_FOR_EACH_STATIC_CORE_POINTER(F)\
- F(QObjectStar, 136, QObject*) \
- F(QWidgetStar, 137, QWidget*) \
+ F(QObjectStar, 39, QObject*) \
+ F(QWidgetStar, 40, QWidget*) \
#define QT_FOR_EACH_STATIC_CORE_TEMPLATE(F)\
F(QVariantMap, 8, QVariantMap) \
@@ -189,13 +189,12 @@ public:
LastGuiType = QPolygonF,
FirstWidgetsType = QIcon,
LastWidgetsType = QSizePolicy,
- FirstCoreExtType = VoidStar,
- LastCoreExtType = QVariant,
+ HighestInternalId = LastWidgetsType,
// This logic must match the one in qglobal.h
#if defined(QT_COORD_TYPE)
QReal = 0,
-#elif defined(QT_NO_FPU) || defined(QT_ARCH_ARM) || defined(QT_ARCH_WINDOWSCE) || defined(QT_ARCH_SYMBIAN)
+#elif defined(QT_NO_FPU) || defined(QT_ARCH_ARM) || defined(QT_ARCH_WINDOWSCE)
QReal = Float,
#else
QReal = Double,
@@ -207,7 +206,8 @@ public:
enum TypeFlag {
NeedsConstruction = 0x1,
NeedsDestruction = 0x2,
- MovableType = 0x4
+ MovableType = 0x4,
+ PointerToQObject = 0x8
};
Q_DECLARE_FLAGS(TypeFlags, TypeFlag)
@@ -315,6 +315,9 @@ struct QMetaTypeId2
static inline int qt_metatype_id() { return QMetaTypeId<T>::qt_metatype_id(); }
};
+class QObject;
+class QWidget;
+
namespace QtPrivate {
template <typename T, bool Defined = QMetaTypeId2<T>::Defined>
struct QMetaTypeIdHelper {
@@ -325,6 +328,49 @@ namespace QtPrivate {
static inline int qt_metatype_id()
{ return -1; }
};
+
+ template<typename T>
+ struct IsPointerToTypeDerivedFromQObject
+ {
+ enum { Value = false };
+ };
+
+ // Specialize to avoid sizeof(void) warning
+ template<>
+ struct IsPointerToTypeDerivedFromQObject<void*>
+ {
+ enum { Value = false };
+ };
+ template<>
+ struct IsPointerToTypeDerivedFromQObject<QObject*>
+ {
+ enum { Value = true };
+ };
+ template<>
+ struct IsPointerToTypeDerivedFromQObject<QWidget*>
+ {
+ enum { Value = true };
+ };
+
+ template<typename T>
+ struct IsPointerToTypeDerivedFromQObject<T*>
+ {
+ typedef qint8 yes_type;
+ typedef qint64 no_type;
+
+#ifndef QT_NO_QOBJECT
+ static yes_type checkType(QObject* );
+#endif
+ static no_type checkType(...);
+ Q_STATIC_ASSERT_X(sizeof(T), "Type argument of Q_DECLARE_METATYPE(T*) must be fully defined");
+ enum { Value = sizeof(checkType(static_cast<T*>(0))) == sizeof(yes_type) };
+ };
+
+ // Function pointers don't derive from QObject
+ template <class Result> struct IsPointerToTypeDerivedFromQObject<Result(*)()> { enum { Value = false }; };
+ template <class Result, class Arg0> struct IsPointerToTypeDerivedFromQObject<Result(*)(Arg0)> { enum { Value = false }; };
+ template <class Result, class Arg0, class Arg1> struct IsPointerToTypeDerivedFromQObject<Result(*)(Arg0, Arg1)> { enum { Value = false }; };
+ template <class Result, class Arg0, class Arg1, class Arg2> struct IsPointerToTypeDerivedFromQObject<Result(*)(Arg0, Arg1, Arg2)> { enum { Value = false }; };
}
template <typename T>
@@ -354,6 +400,8 @@ int qRegisterMetaType(const char *typeName
flags |= QMetaType::NeedsConstruction;
flags |= QMetaType::NeedsDestruction;
}
+ if (QtPrivate::IsPointerToTypeDerivedFromQObject<T>::Value)
+ flags |= QMetaType::PointerToQObject;
return QMetaType::registerType(typeName, reinterpret_cast<QMetaType::Deleter>(dptr),
reinterpret_cast<QMetaType::Creator>(cptr),
@@ -459,15 +507,43 @@ QT_FOR_EACH_STATIC_WIDGETS_CLASS(QT_FORWARD_DECLARE_STATIC_TYPES_ITER)
#undef QT_FORWARD_DECLARE_STATIC_TYPES_ITER
-class QWidget;
-class QObject;
template <class T> class QList;
+template <class T> class QLinkedList;
+template <class T> class QVector;
+template <class T> class QQueue;
+template <class T> class QStack;
+template <class T> class QSet;
+template <class T> class QSharedPointer;
template <class T1, class T2> class QMap;
template <class T1, class T2> class QHash;
typedef QList<QVariant> QVariantList;
typedef QMap<QString, QVariant> QVariantMap;
typedef QHash<QString, QVariant> QVariantHash;
+#define Q_DECLARE_METATYPE_TEMPLATE_1ARG(SINGLE_ARG_TEMPLATE) \
+template <typename T> \
+struct QMetaTypeId< SINGLE_ARG_TEMPLATE<T> > \
+{ \
+ enum { \
+ Defined = QMetaTypeId2<T>::Defined \
+ }; \
+ static int qt_metatype_id() \
+ { \
+ static QBasicAtomicInt metatype_id = Q_BASIC_ATOMIC_INITIALIZER(0); \
+ if (!metatype_id.load()) \
+ metatype_id.storeRelease(qRegisterMetaType< SINGLE_ARG_TEMPLATE<T> >( QByteArray(QByteArray(#SINGLE_ARG_TEMPLATE "<") + QMetaType::typeName(qMetaTypeId<T>()) + ">"), \
+ reinterpret_cast< SINGLE_ARG_TEMPLATE<T> *>(quintptr(-1)))); \
+ return metatype_id.loadAcquire(); \
+ } \
+};
+
+Q_DECLARE_METATYPE_TEMPLATE_1ARG(QList)
+Q_DECLARE_METATYPE_TEMPLATE_1ARG(QVector)
+Q_DECLARE_METATYPE_TEMPLATE_1ARG(QQueue)
+Q_DECLARE_METATYPE_TEMPLATE_1ARG(QStack)
+Q_DECLARE_METATYPE_TEMPLATE_1ARG(QSet)
+Q_DECLARE_METATYPE_TEMPLATE_1ARG(QSharedPointer)
+Q_DECLARE_METATYPE_TEMPLATE_1ARG(QLinkedList)
QT_END_NAMESPACE
diff --git a/src/corelib/kernel/qmetatype_p.h b/src/corelib/kernel/qmetatype_p.h
index 11139288d1..c292f11764 100644
--- a/src/corelib/kernel/qmetatype_p.h
+++ b/src/corelib/kernel/qmetatype_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -68,8 +68,6 @@ static inline int moduleForType(const int typeId)
return Gui;
if (typeId <= QMetaType::LastWidgetsType)
return Widgets;
- if (typeId <= QMetaType::LastCoreExtType)
- return Core;
return Unknown;
}
}
diff --git a/src/corelib/kernel/qmetatypeswitcher_p.h b/src/corelib/kernel/qmetatypeswitcher_p.h
index d3cf1024c3..c1cccfca63 100644
--- a/src/corelib/kernel/qmetatypeswitcher_p.h
+++ b/src/corelib/kernel/qmetatypeswitcher_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qmimedata.cpp b/src/corelib/kernel/qmimedata.cpp
index c43ef505fb..25e2b3532b 100644
--- a/src/corelib/kernel/qmimedata.cpp
+++ b/src/corelib/kernel/qmimedata.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qmimedata.h b/src/corelib/kernel/qmimedata.h
index 60498b7ab8..1f56ea6eda 100644
--- a/src/corelib/kernel/qmimedata.h
+++ b/src/corelib/kernel/qmimedata.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QUrl;
class QMimeDataPrivate;
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index bebdcac662..4377355486 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -4038,7 +4038,19 @@ QMetaObject::Connection QObject::connectImpl(const QObject *sender, void **signa
}
QObjectPrivate::get(s)->addConnection(signal_index, c.data());
- return QMetaObject::Connection(c.take());
+ QMetaObject::Connection ret(c.take());
+ locker.unlock();
+
+ // reconstruct the signature to call connectNotify
+ const char *sig = senderMetaObject->d.stringdata + senderMetaObject->d.data[
+ reinterpret_cast<const QMetaObjectPrivate*>(senderMetaObject->d.data)->methodData
+ + 5 * (signal_index - signalOffset)];
+ QVarLengthArray<char> signalSignature(qstrlen(sig) + 2);
+ signalSignature.data()[0] = char(QSIGNAL_CODE + '0');
+ strcpy(signalSignature.data() + 1 , sig);
+ s->connectNotify(signalSignature.data());
+
+ return ret;
}
/*!
diff --git a/src/corelib/kernel/qobject.h b/src/corelib/kernel/qobject.h
index 11f524180c..5f43b52939 100644
--- a/src/corelib/kernel/qobject.h
+++ b/src/corelib/kernel/qobject.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,7 +60,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QEvent;
class QTimerEvent;
@@ -437,7 +436,7 @@ T qFindChild(const QObject *o, const QString &name = QString());
QList<T> qFindChildren(const QObject *oobj, const QString &name = QString());
QList<T> qFindChildren(const QObject *o, const QRegExp &re);
#endif
-#ifdef QT_DEPRECATED
+#if QT_DEPRECATED_SINCE(5, 0)
template<typename T>
inline QT_DEPRECATED T qFindChild(const QObject *o, const QString &name = QString())
{ return o->findChild<T>(name); }
diff --git a/src/corelib/kernel/qobject_impl.h b/src/corelib/kernel/qobject_impl.h
index 44aaa9a218..5adffb708f 100644
--- a/src/corelib/kernel/qobject_impl.h
+++ b/src/corelib/kernel/qobject_impl.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
namespace QtPrivate {
template <typename T> struct RemoveRef { typedef T Type; };
diff --git a/src/corelib/kernel/qobject_p.h b/src/corelib/kernel/qobject_p.h
index dbd2e4fa37..fa1aee8173 100644
--- a/src/corelib/kernel/qobject_p.h
+++ b/src/corelib/kernel/qobject_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qobjectcleanuphandler.cpp b/src/corelib/kernel/qobjectcleanuphandler.cpp
index 8a0cc2840e..166a90a74f 100644
--- a/src/corelib/kernel/qobjectcleanuphandler.cpp
+++ b/src/corelib/kernel/qobjectcleanuphandler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qobjectcleanuphandler.h b/src/corelib/kernel/qobjectcleanuphandler.h
index 5997f0e250..90685090f8 100644
--- a/src/corelib/kernel/qobjectcleanuphandler.h
+++ b/src/corelib/kernel/qobjectcleanuphandler.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class Q_CORE_EXPORT QObjectCleanupHandler : public QObject
{
diff --git a/src/corelib/kernel/qobjectdefs.h b/src/corelib/kernel/qobjectdefs.h
index dfcc81be03..315619761c 100644
--- a/src/corelib/kernel/qobjectdefs.h
+++ b/src/corelib/kernel/qobjectdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QByteArray;
@@ -62,6 +61,7 @@ class QString;
// They are used, strictly speaking, only by the moc.
#ifndef Q_MOC_RUN
+#ifndef QT_NO_META_MACROS
# if defined(QT_NO_KEYWORDS)
# define QT_NO_EMIT
# else
@@ -87,6 +87,7 @@ class QString;
#define Q_INVOKABLE
#define Q_SIGNAL
#define Q_SLOT
+#endif // QT_NO_META_MACROS
#ifndef QT_NO_TRANSLATION
# ifndef QT_NO_TEXTCODEC
@@ -151,11 +152,14 @@ private: \
/* tmake ignore Q_OBJECT */
#define Q_OBJECT_FAKE Q_OBJECT
+
+#ifndef QT_NO_META_MACROS
/* tmake ignore Q_GADGET */
#define Q_GADGET \
public: \
static const QMetaObject staticMetaObject; \
private:
+#endif // QT_NO_META_MACROS
#else // Q_MOC_RUN
#define slots slots
@@ -182,6 +186,7 @@ private:
#define Q_SLOT Q_SLOT
#endif //Q_MOC_RUN
+#ifndef QT_NO_META_MACROS
// macro for onaming members
#ifdef METHOD
#undef METHOD
@@ -192,9 +197,11 @@ private:
#ifdef SIGNAL
#undef SIGNAL
#endif
+#endif // QT_NO_META_MACROS
Q_CORE_EXPORT const char *qFlagLocation(const char *method);
+#ifndef QT_NO_META_MACROS
#define QTOSTRING_HELPER(s) #s
#define QTOSTRING(s) QTOSTRING_HELPER(s)
#ifndef QT_NO_DEBUG
@@ -215,6 +222,7 @@ Q_CORE_EXPORT const char *qFlagLocation(const char *method);
#define QMETHOD_CODE 0 // member type codes
#define QSLOT_CODE 1
#define QSIGNAL_CODE 2
+#endif // QT_NO_META_MACROS
#define Q_ARG(type, data) QArgument<type >(#type, data)
#define Q_RETURN_ARG(type, data) QReturnArgument<type >(#type, data)
diff --git a/src/corelib/kernel/qpointer.cpp b/src/corelib/kernel/qpointer.cpp
index 575dad9ed8..936a933d2d 100644
--- a/src/corelib/kernel/qpointer.cpp
+++ b/src/corelib/kernel/qpointer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qpointer.h b/src/corelib/kernel/qpointer.h
index 4c0aebb41d..9b4f8e4332 100644
--- a/src/corelib/kernel/qpointer.h
+++ b/src/corelib/kernel/qpointer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#if QT_DEPRECATED_SINCE(5,0)
diff --git a/src/corelib/kernel/qsharedmemory.cpp b/src/corelib/kernel/qsharedmemory.cpp
index c5b1b56747..640dfc0f94 100644
--- a/src/corelib/kernel/qsharedmemory.cpp
+++ b/src/corelib/kernel/qsharedmemory.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -44,10 +44,10 @@
#include "qsystemsemaphore.h"
#include <qdir.h>
#include <qcryptographichash.h>
-#ifdef Q_OS_SYMBIAN
-#include <e32const.h>
-#endif
#include <qdebug.h>
+#ifdef Q_OS_WIN
+# include <qt_windows.h>
+#endif
QT_BEGIN_NAMESPACE
@@ -59,7 +59,6 @@ QT_BEGIN_NAMESPACE
the subset that the win/unix kernel allows.
On Unix this will be a file name
- On Symbian key will be truncated to 80 characters
*/
QString
QSharedMemoryPrivate::makePlatformSafeKey(const QString &key,
@@ -78,8 +77,6 @@ QSharedMemoryPrivate::makePlatformSafeKey(const QString &key,
result.append(QLatin1String(hex));
#ifdef Q_OS_WIN
return result;
-#elif defined(Q_OS_SYMBIAN)
- return result.left(KMaxKernelName);
#else
return QDir::tempPath() + QLatin1Char('/') + result;
#endif
@@ -121,14 +118,6 @@ QSharedMemoryPrivate::makePlatformSafeKey(const QString &key,
process. This means that QSharedMemory should not be used across
multiple threads in the same process in HP-UX.
- \o Symbian: QSharedMemory does not "own" the shared memory segment.
- When all threads or processes that have an instance of QSharedMemory
- attached to a particular shared memory segment have either destroyed
- their instance of QSharedMemory or exited, the Symbian kernel
- releases the shared memory segment automatically.
- Also, access to a shared memory segment cannot be limited to read-only
- in Symbian.
-
\endlist
Remember to lock the shared memory with lock() before reading from
diff --git a/src/corelib/kernel/qsharedmemory.h b/src/corelib/kernel/qsharedmemory.h
index d536e94fa1..e591d886c0 100644
--- a/src/corelib/kernel/qsharedmemory.h
+++ b/src/corelib/kernel/qsharedmemory.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_SHAREDMEMORY
diff --git a/src/corelib/kernel/qsharedmemory_p.h b/src/corelib/kernel/qsharedmemory_p.h
index d3d3c023ba..2eb90c2c1a 100644
--- a/src/corelib/kernel/qsharedmemory_p.h
+++ b/src/corelib/kernel/qsharedmemory_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -69,13 +69,8 @@ namespace QSharedMemoryPrivate
#include "qsystemsemaphore.h"
#include "private/qobject_p.h"
-#ifdef Q_OS_WIN
-#include <qt_windows.h>
-#elif defined(Q_OS_SYMBIAN)
-#include <e32std.h>
-#include <sys/types.h>
-#else
-#include <sys/sem.h>
+#ifndef Q_OS_WIN
+# include <sys/sem.h>
#endif
QT_BEGIN_NAMESPACE
@@ -134,7 +129,7 @@ public:
static QString makePlatformSafeKey(const QString &key,
const QString &prefix = QLatin1String("qipc_sharedmemory_"));
#ifdef Q_OS_WIN
- HANDLE handle();
+ Qt::HANDLE handle();
#else
key_t handle();
#endif
@@ -144,11 +139,7 @@ public:
bool attach(QSharedMemory::AccessMode mode);
bool detach();
-#ifdef Q_OS_SYMBIAN
- void setErrorString(const QString &function, TInt errorCode);
-#else
void setErrorString(const QString &function);
-#endif
#ifndef QT_NO_SYSTEMSEMAPHORE
bool tryLocker(QSharedMemoryLocker *locker, const QString function) {
@@ -163,9 +154,7 @@ public:
private:
#ifdef Q_OS_WIN
- HANDLE hand;
-#elif defined(Q_OS_SYMBIAN)
- RChunk chunk;
+ Qt::HANDLE hand;
#else
key_t unix_key;
#endif
diff --git a/src/corelib/kernel/qsharedmemory_unix.cpp b/src/corelib/kernel/qsharedmemory_unix.cpp
index fd435d7b97..54bd4c6cc7 100644
--- a/src/corelib/kernel/qsharedmemory_unix.cpp
+++ b/src/corelib/kernel/qsharedmemory_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qsharedmemory_win.cpp b/src/corelib/kernel/qsharedmemory_win.cpp
index c02ab15c88..c3f8dcf2ff 100644
--- a/src/corelib/kernel/qsharedmemory_win.cpp
+++ b/src/corelib/kernel/qsharedmemory_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -43,6 +43,7 @@
#include "qsharedmemory_p.h"
#include "qsystemsemaphore.h"
#include <qdebug.h>
+#include <qt_windows.h>
QT_BEGIN_NAMESPACE
diff --git a/src/corelib/kernel/qsignalmapper.cpp b/src/corelib/kernel/qsignalmapper.cpp
index 7bdffd4153..27340020d8 100644
--- a/src/corelib/kernel/qsignalmapper.cpp
+++ b/src/corelib/kernel/qsignalmapper.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qsignalmapper.h b/src/corelib/kernel/qsignalmapper.h
index 04278b491c..f4e7879697 100644
--- a/src/corelib/kernel/qsignalmapper.h
+++ b/src/corelib/kernel/qsignalmapper.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_SIGNALMAPPER
class QSignalMapperPrivate;
diff --git a/src/corelib/kernel/qsocketnotifier.cpp b/src/corelib/kernel/qsocketnotifier.cpp
index 60970f1cd2..d7689bb7b1 100644
--- a/src/corelib/kernel/qsocketnotifier.cpp
+++ b/src/corelib/kernel/qsocketnotifier.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qsocketnotifier.h b/src/corelib/kernel/qsocketnotifier.h
index 186979db4c..18efa7f770 100644
--- a/src/corelib/kernel/qsocketnotifier.h
+++ b/src/corelib/kernel/qsocketnotifier.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class Q_CORE_EXPORT QSocketNotifier : public QObject
{
diff --git a/src/corelib/kernel/qsystemerror.cpp b/src/corelib/kernel/qsystemerror.cpp
index 708eba89a6..74815d9e4e 100644
--- a/src/corelib/kernel/qsystemerror.cpp
+++ b/src/corelib/kernel/qsystemerror.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,7 @@
# endif
#endif
#ifdef Q_OS_WIN
-#include <windows.h>
+# include <qt_windows.h>
#endif
QT_BEGIN_NAMESPACE
@@ -141,76 +141,12 @@ static QString standardLibraryErrorString(int errorCode)
return ret.trimmed();
}
-#ifdef Q_OS_SYMBIAN
-static QString symbianErrorString(int errorCode)
-{
- switch (errorCode) {
- case KErrNotFound:
- return QLatin1String("not found");
- case KErrCancel:
- return QLatin1String("cancelled");
- case KErrNoMemory:
- return QLatin1String("out of memory");
- case KErrNotSupported:
- return QLatin1String("not supported");
- case KErrBadHandle:
- return QLatin1String("bad handle"); //KERN-EXEC 0 panic is more likely
- case KErrAlreadyExists:
- return QLatin1String("already exists");
- case KErrPathNotFound:
- return QLatin1String("path not found");
- case KErrInUse:
- return QLatin1String("in use");
- case KErrNotReady:
- return QLatin1String("not ready (e.g. FS dismounted, network down)");
- case KErrCorrupt:
- return QLatin1String("corrupt");
- case KErrAccessDenied:
- return QLatin1String("access denied");
- case KErrLocked:
- return QLatin1String("locked");
- case KErrWrite:
- return QLatin1String("incomplete write error");
- case KErrDisMounted:
- return QLatin1String("file system dismounted during operation"); //i.e. a forcible dismount was done while we had files open
- case KErrEof:
- return QLatin1String("end of file");
- case KErrDiskFull:
- return QLatin1String("no space in file system");
- case KErrBadName:
- return QLatin1String("invalid filename");
- case KErrTimedOut:
- return QLatin1String("timed out");
- case KErrBadDescriptor:
- return QLatin1String("bad descriptor (passed address on stack to async call?)");
- case KErrAbort:
- return QLatin1String("aborted");
- case KErrTooBig:
- return QLatin1String("too big"); //e.g. trying to open a >2GB file with 32 bit API
- case KErrBadPower:
- return QLatin1String("insufficient power");
- case KErrDirFull:
- return QLatin1String("no space in directory table");
- case KErrHardwareNotAvailable:
- return QLatin1String("hardware not available");
- case KErrSessionClosed:
- return QLatin1String("session closed");
- case KErrPermissionDenied:
- return QLatin1String("permission denied");
- default:
- return QString(QLatin1String("symbian error %1")).arg(errorCode);
- }
-}
-#endif
-
QString QSystemError::toString()
{
switch(errorScope) {
case NativeError:
#if defined (Q_OS_WIN)
return windowsErrorString(errorCode);
-#elif defined (Q_OS_SYMBIAN)
- return symbianErrorString(errorCode);
#else
//unix: fall through as native and standard library are the same
#endif
diff --git a/src/corelib/kernel/qsystemerror_p.h b/src/corelib/kernel/qsystemerror_p.h
index 2a90760197..4ebe2196c2 100644
--- a/src/corelib/kernel/qsystemerror_p.h
+++ b/src/corelib/kernel/qsystemerror_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qsystemsemaphore.cpp b/src/corelib/kernel/qsystemsemaphore.cpp
index 690a4e8b92..d0a67834dd 100644
--- a/src/corelib/kernel/qsystemsemaphore.cpp
+++ b/src/corelib/kernel/qsystemsemaphore.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -123,10 +123,6 @@ QT_BEGIN_NAMESPACE
resource and then exits without releasing it, Unix will release that
resource.
- \o Symbian: QSystemSemaphore behaves the same as Windows semaphores.
- In other words, the operating system owns the semaphore and ignores
- QSystemSemaphore::AccessMode.
-
\endlist
\sa QSharedMemory, QSemaphore
@@ -151,7 +147,7 @@ QT_BEGIN_NAMESPACE
creates a new semaphore for that key and sets its resource count to
\a initialValue.
- In Windows and in Symbian, \a mode is ignored, and the system always tries to
+ In Windows, \a mode is ignored, and the system always tries to
create a semaphore for the specified \a key. If the system does not
already have a semaphore identified as \a key, it creates the
semaphore and sets its resource count to \a initialValue. But if the
@@ -201,7 +197,7 @@ QSystemSemaphore::~QSystemSemaphore()
enable handling the problem in Unix implementations of semaphores
that survive a crash. In Unix, when a semaphore survives a crash, we
need a way to force it to reset its resource count, when the system
- reuses the semaphore. In Windows and in Symbian, where semaphores can't survive a
+ reuses the semaphore. In Windows, where semaphores can't survive a
crash, this enum has no effect.
\value Open If the semaphore already exists, its initial resource
@@ -214,7 +210,7 @@ QSystemSemaphore::~QSystemSemaphore()
This value should be passed to the constructor, when the first
semaphore for a particular key is constructed and you know that if
the semaphore already exists it could only be because of a crash. In
- Windows and in Symbian, where a semaphore can't survive a crash, Create and Open
+ Windows, where a semaphore can't survive a crash, Create and Open
have the same behavior.
*/
@@ -234,7 +230,7 @@ void QSystemSemaphore::setKey(const QString &key, int initialValue, AccessMode m
return;
d->error = NoError;
d->errorString = QString();
-#if !defined(Q_OS_WIN) && !defined(Q_OS_SYMBIAN)
+#if !defined(Q_OS_WIN)
// optimization to not destroy/create the file & semaphore
if (key == d->key && mode == Create && d->createdSemaphore && d->createdFile) {
d->initialValue = initialValue;
diff --git a/src/corelib/kernel/qsystemsemaphore.h b/src/corelib/kernel/qsystemsemaphore.h
index 0cb69d5e7c..63c03ed772 100644
--- a/src/corelib/kernel/qsystemsemaphore.h
+++ b/src/corelib/kernel/qsystemsemaphore.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_SYSTEMSEMAPHORE
diff --git a/src/corelib/kernel/qsystemsemaphore_p.h b/src/corelib/kernel/qsystemsemaphore_p.h
index 31fd596fd5..527cb312cb 100644
--- a/src/corelib/kernel/qsystemsemaphore_p.h
+++ b/src/corelib/kernel/qsystemsemaphore_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -62,10 +62,6 @@
# include <sys/types.h>
#endif
-#ifdef Q_OS_SYMBIAN
-class RSemaphore;
-#endif
-
QT_BEGIN_NAMESPACE
class QSystemSemaphorePrivate
@@ -80,11 +76,8 @@ public:
}
#ifdef Q_OS_WIN
- HANDLE handle(QSystemSemaphore::AccessMode mode = QSystemSemaphore::Open);
+ Qt::HANDLE handle(QSystemSemaphore::AccessMode mode = QSystemSemaphore::Open);
void setErrorString(const QString &function);
-#elif defined(Q_OS_SYMBIAN)
- int handle(QSystemSemaphore::AccessMode mode = QSystemSemaphore::Open);
- void setErrorString(const QString &function,int err = 0);
#else
key_t handle(QSystemSemaphore::AccessMode mode = QSystemSemaphore::Open);
void setErrorString(const QString &function);
@@ -96,10 +89,8 @@ public:
QString fileName;
int initialValue;
#ifdef Q_OS_WIN
- HANDLE semaphore;
- HANDLE semaphoreLock;
-#elif defined(Q_OS_SYMBIAN)
- RSemaphore semaphore;
+ Qt::HANDLE semaphore;
+ Qt::HANDLE semaphoreLock;
#else
int semaphore;
bool createdFile;
diff --git a/src/corelib/kernel/qsystemsemaphore_unix.cpp b/src/corelib/kernel/qsystemsemaphore_unix.cpp
index cc86e335e5..70c697b693 100644
--- a/src/corelib/kernel/qsystemsemaphore_unix.cpp
+++ b/src/corelib/kernel/qsystemsemaphore_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qsystemsemaphore_win.cpp b/src/corelib/kernel/qsystemsemaphore_win.cpp
index aad78459d7..fef53585fe 100644
--- a/src/corelib/kernel/qsystemsemaphore_win.cpp
+++ b/src/corelib/kernel/qsystemsemaphore_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -43,6 +43,7 @@
#include "qsystemsemaphore_p.h"
#include "qcoreapplication.h"
#include <qdebug.h>
+#include <qt_windows.h>
QT_BEGIN_NAMESPACE
diff --git a/src/corelib/kernel/qtcore_eval.cpp b/src/corelib/kernel/qtcore_eval.cpp
index 2f9ccdae46..2b07fa99cc 100644
--- a/src/corelib/kernel/qtcore_eval.cpp
+++ b/src/corelib/kernel/qtcore_eval.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,7 +55,6 @@ QT_BEGIN_NAMESPACE
static const char boilerplate_unsuported[] =
"\nQt %1 Evaluation License\n"
"Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).\n"
- "All rights reserved.\n\n"
"This trial version may only be used for evaluation purposes\n"
"and will shut down after 120 minutes.\n"
"Registered to:\n"
@@ -66,7 +65,6 @@ static const char boilerplate_unsuported[] =
static const char boilerplate_supported[] =
"\nQt %1 Evaluation License\n"
"Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).\n"
- "All rights reserved.\n\n"
"This trial version may only be used for evaluation purposes\n"
"Registered to:\n"
" Licensee: %2\n\n"
diff --git a/src/corelib/kernel/qtimer.cpp b/src/corelib/kernel/qtimer.cpp
index da1cfe91b2..f434df177c 100644
--- a/src/corelib/kernel/qtimer.cpp
+++ b/src/corelib/kernel/qtimer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qtimer.h b/src/corelib/kernel/qtimer.h
index 6fb32f9bde..eff2a7bfe1 100644
--- a/src/corelib/kernel/qtimer.h
+++ b/src/corelib/kernel/qtimer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class Q_CORE_EXPORT QTimer : public QObject
{
diff --git a/src/corelib/kernel/qtimerinfo_unix.cpp b/src/corelib/kernel/qtimerinfo_unix.cpp
index b89d4ccb30..32e24edcf3 100644
--- a/src/corelib/kernel/qtimerinfo_unix.cpp
+++ b/src/corelib/kernel/qtimerinfo_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qtimerinfo_unix_p.h b/src/corelib/kernel/qtimerinfo_unix_p.h
index 8a057dda60..4bf6b91ea6 100644
--- a/src/corelib/kernel/qtimerinfo_unix_p.h
+++ b/src/corelib/kernel/qtimerinfo_unix_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qtranslator.cpp b/src/corelib/kernel/qtranslator.cpp
index aadf3a76e9..a11bcb26c9 100644
--- a/src/corelib/kernel/qtranslator.cpp
+++ b/src/corelib/kernel/qtranslator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -58,7 +58,7 @@
#include "qtranslator_p.h"
#include "qlocale.h"
-#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN) && !defined(Q_OS_INTEGRITY)
+#if defined(Q_OS_UNIX) && !defined(Q_OS_INTEGRITY)
#define QT_USE_MMAP
#include "private/qcore_unix_p.h"
#endif
@@ -518,7 +518,7 @@ static QString find_translation(const QLocale & locale,
// see http://www.unicode.org/reports/tr35/#LanguageMatching for inspiration
QStringList languages = locale.uiLanguages();
-#if defined(Q_OS_UNIX) && !defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_UNIX)
for (int i = languages.size()-1; i >= 0; --i) {
QString lang = languages.at(i);
QString lowerLang = lang.toLower();
diff --git a/src/corelib/kernel/qtranslator.h b/src/corelib/kernel/qtranslator.h
index b1f378a8b5..f52db59201 100644
--- a/src/corelib/kernel/qtranslator.h
+++ b/src/corelib/kernel/qtranslator.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_TRANSLATION
diff --git a/src/corelib/kernel/qtranslator_p.h b/src/corelib/kernel/qtranslator_p.h
index 23164ecac6..0d418bc565 100644
--- a/src/corelib/kernel/qtranslator_p.h
+++ b/src/corelib/kernel/qtranslator_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qvariant.cpp b/src/corelib/kernel/qvariant.cpp
index 72229c0e63..cfaf22c146 100644
--- a/src/corelib/kernel/qvariant.cpp
+++ b/src/corelib/kernel/qvariant.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -98,33 +98,33 @@ public:
namespace {
template<typename T>
-struct TypeDefiniton {
+struct TypeDefinition {
static const bool IsAvailable = true;
};
// Ignore these types, as incomplete
#ifdef QT_BOOTSTRAPPED
-template<> struct TypeDefiniton<QEasingCurve> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QModelIndex> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QEasingCurve> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QModelIndex> { static const bool IsAvailable = false; };
#endif
#ifdef QT_NO_GEOM_VARIANT
-template<> struct TypeDefiniton<QRect> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QRectF> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QSize> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QSizeF> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QLine> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QLineF> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QPoint> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QPointF> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QRect> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QRectF> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QSize> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QSizeF> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QLine> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QLineF> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QPoint> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QPointF> { static const bool IsAvailable = false; };
#endif
struct CoreTypesFilter {
template<typename T>
struct Acceptor {
- static const bool IsAccepted = QTypeModuleInfo<T>::IsCore && TypeDefiniton<T>::IsAvailable;
+ static const bool IsAccepted = QTypeModuleInfo<T>::IsCore && TypeDefinition<T>::IsAvailable;
};
};
-} // annonymous used to hide TypeDefiniton
+} // annonymous used to hide TypeDefinition
namespace { // annonymous used to hide QVariant handlers
@@ -980,6 +980,7 @@ Q_CORE_EXPORT void QVariantPrivate::unregisterHandler(const int /* Modules::Name
*/
/*!
+ \obsolete Use QMetaType::Type instead
\enum QVariant::Type
This enum type defines the types of variable that a QVariant can
@@ -1589,8 +1590,6 @@ const char *QVariant::typeToName(Type typ)
{
if (typ == Invalid)
return 0;
- if (typ == UserType)
- return "UserType";
return QMetaType::typeName(typ);
}
@@ -1607,16 +1606,6 @@ QVariant::Type QVariant::nameToType(const char *name)
{
if (!name || !*name)
return Invalid;
- if (strcmp(name, "Q3CString") == 0)
- return ByteArray;
- if (strcmp(name, "Q_LLONG") == 0)
- return LongLong;
- if (strcmp(name, "Q_ULLONG") == 0)
- return ULongLong;
- if (strcmp(name, "QIconSet") == 0)
- return Icon;
- if (strcmp(name, "UserType") == 0)
- return UserType;
int metaType = QMetaType::type(name);
return metaType <= int(LastGuiType) ? QVariant::Type(metaType) : UserType;
@@ -1624,7 +1613,7 @@ QVariant::Type QVariant::nameToType(const char *name)
#ifndef QT_NO_DATASTREAM
enum { MapFromThreeCount = 36 };
-static const ushort map_from_three[MapFromThreeCount] =
+static const ushort mapIdFromQt3ToCurrent[MapFromThreeCount] =
{
QVariant::Invalid,
QVariant::Map,
@@ -1638,7 +1627,7 @@ static const ushort map_from_three[MapFromThreeCount] =
QVariant::Size,
QVariant::Color,
QVariant::Palette,
- 63, // ColorGroup
+ 0, // ColorGroup
QVariant::Icon,
QVariant::Point,
QVariant::Image,
@@ -1674,26 +1663,45 @@ void QVariant::load(QDataStream &s)
{
clear();
- quint32 u;
- s >> u;
+ quint32 typeId;
+ s >> typeId;
if (s.version() < QDataStream::Qt_4_0) {
- if (u >= MapFromThreeCount)
+ if (typeId >= MapFromThreeCount)
return;
- u = map_from_three[u];
+ typeId = mapIdFromQt3ToCurrent[typeId];
+ } else if (s.version() < QDataStream::Qt_5_0) {
+ if (typeId >= 128 && typeId != QVariant::UserType) {
+ // In Qt4 id == 128 was FirstExtCoreType. In Qt5 ExtCoreTypes set was merged to CoreTypes
+ // by moving all ids down by 97.
+ typeId -= 97;
+ } else if (typeId == 69 /* QIcon */) {
+ // In Qt5 after modularization project this types where moved to a separate module (and ids were downgraded)
+ typeId = QMetaType::QIcon;
+ } else if (typeId == 75 /* QSizePolicy */) {
+ typeId = QMetaType::QSizePolicy;
+ } else if (typeId >= 70) {
+ // and as a result this types recieved lower ids too
+ if (typeId <= 74) { // QImage QPolygon QRegion QBitmap QCursor
+ typeId -=1;
+ } else if (typeId <= 86) { // QKeySequence QPen QTextLength QTextFormat QMatrix QTransform QMatrix4x4 QVector2D QVector3D QVector4D QQuaternion
+ typeId -=2;
+ }
+ }
}
+
qint8 is_null = false;
if (s.version() >= QDataStream::Qt_4_2)
s >> is_null;
- if (u == QVariant::UserType) {
+ if (typeId == QVariant::UserType) {
QByteArray name;
s >> name;
- u = QMetaType::type(name);
- if (!u) {
+ typeId = QMetaType::type(name);
+ if (!typeId) {
s.setStatus(QDataStream::ReadCorruptData);
return;
}
}
- create(static_cast<int>(u), 0);
+ create(static_cast<int>(typeId), 0);
d.is_null = is_null;
if (!isValid()) {
@@ -1719,12 +1727,12 @@ void QVariant::load(QDataStream &s)
*/
void QVariant::save(QDataStream &s) const
{
- quint32 tp = type();
+ quint32 typeId = type();
if (s.version() < QDataStream::Qt_4_0) {
int i;
for (i = MapFromThreeCount - 1; i >= 0; i--) {
- if (map_from_three[i] == tp) {
- tp = i;
+ if (mapIdFromQt3ToCurrent[i] == typeId) {
+ typeId = i;
break;
}
}
@@ -1732,11 +1740,29 @@ void QVariant::save(QDataStream &s) const
s << QVariant();
return;
}
+ } else if (s.version() < QDataStream::Qt_5_0) {
+ if (typeId >= 128 - 97 && typeId <= LastCoreType) {
+ // In Qt4 id == 128 was FirstExtCoreType. In Qt5 ExtCoreTypes set was merged to CoreTypes
+ // by moving all ids down by 97.
+ typeId += 97;
+ } else if (typeId == QMetaType::QIcon) {
+ // In Qt5 after modularization project this types where moved to a separate module (and ids were downgraded)
+ typeId = 69;
+ } else if (typeId == QMetaType::QSizePolicy) {
+ typeId = 75;
+ } else if (typeId >= QMetaType::QImage) {
+ // and as a result this types recieved lower ids too
+ if (typeId <= QMetaType::QCursor) {
+ typeId +=1;
+ } else if (typeId <= QMetaType::QQuaternion) {
+ typeId +=2;
+ }
+ }
}
- s << tp;
+ s << typeId;
if (s.version() >= QDataStream::Qt_4_2)
s << qint8(d.is_null);
- if (tp == QVariant::UserType) {
+ if (typeId == QVariant::UserType) {
s << QMetaType::typeName(userType());
}
@@ -1746,8 +1772,8 @@ void QVariant::save(QDataStream &s) const
}
if (!QMetaType::save(s, d.type, constData())) {
+ qWarning("QVariant::save: unable to save type '%s' (type id: %d).\n", QMetaType::typeName(d.type), d.type);
Q_ASSERT_X(false, "QVariant::save", "Invalid type to save");
- qWarning("QVariant::save: unable to save type %d.", d.type);
}
}
@@ -2410,17 +2436,15 @@ static const quint32 qCanConvertMatrix[QVariant::LastCoreType + 1] =
*/
bool QVariant::canConvert(Type t) const
{
- //we can treat floats as double
- //the reason for not doing it the "proper" way is that QMetaType::Float's value is 135,
- //which can't be handled by qCanConvertMatrix
- //In addition QVariant::Type doesn't have a Float value, so we're using QMetaType::Float
+ // TODO Reimplement this function, currently it works but it is a historical mess.
const uint currentType = ((d.type == QMetaType::Float) ? QVariant::Double : d.type);
if (uint(t) == uint(QMetaType::Float)) t = QVariant::Double;
if (currentType == uint(t))
return true;
- if (currentType > QVariant::LastCoreType || t > QVariant::LastCoreType) {
+ // FIXME It should be LastCoreType intead of Uuid
+ if (currentType > QVariant::Uuid || t > QVariant::Uuid) {
switch (uint(t)) {
case QVariant::Int:
return currentType == QVariant::KeySequence
diff --git a/src/corelib/kernel/qvariant.h b/src/corelib/kernel/qvariant.h
index 35c584fa51..07ef4dc41e 100644
--- a/src/corelib/kernel/qvariant.h
+++ b/src/corelib/kernel/qvariant.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QBitArray;
class QDataStream;
@@ -380,7 +379,7 @@ protected:
#ifndef Q_NO_TEMPLATE_FRIENDS
template<typename T>
friend inline T qvariant_cast(const QVariant &);
-private:
+protected:
#else
public:
#endif
@@ -503,7 +502,7 @@ template<> inline QVariant qvariant_cast<QVariant>(const QVariant &v)
return v;
}
-#ifdef QT_DEPRECATED
+#if QT_DEPRECATED_SINCE(5, 0)
template<typename T>
inline QT_DEPRECATED T qVariantValue(const QVariant &variant)
{ return qvariant_cast<T>(variant); }
diff --git a/src/corelib/kernel/qvariant_p.h b/src/corelib/kernel/qvariant_p.h
index 015ca5b464..7065bcfd6b 100644
--- a/src/corelib/kernel/qvariant_p.h
+++ b/src/corelib/kernel/qvariant_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qwineventnotifier.cpp b/src/corelib/kernel/qwineventnotifier.cpp
index e06e1d5b0a..11a2dc83f5 100644
--- a/src/corelib/kernel/qwineventnotifier.cpp
+++ b/src/corelib/kernel/qwineventnotifier.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/kernel/qwineventnotifier.h b/src/corelib/kernel/qwineventnotifier.h
index 386a640434..b364c68e05 100644
--- a/src/corelib/kernel/qwineventnotifier.h
+++ b/src/corelib/kernel/qwineventnotifier.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class Q_CORE_EXPORT QWinEventNotifier : public QObject
{
diff --git a/src/corelib/plugin/qelfparser_p.cpp b/src/corelib/plugin/qelfparser_p.cpp
index cfe9a9d1b5..0e8d43454c 100644
--- a/src/corelib/plugin/qelfparser_p.cpp
+++ b/src/corelib/plugin/qelfparser_p.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/plugin/qelfparser_p.h b/src/corelib/plugin/qelfparser_p.h
index 2f10807720..96e1eac33f 100644
--- a/src/corelib/plugin/qelfparser_p.h
+++ b/src/corelib/plugin/qelfparser_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/plugin/qfactoryinterface.h b/src/corelib/plugin/qfactoryinterface.h
index b7e4f3de16..081dc54158 100644
--- a/src/corelib/plugin/qfactoryinterface.h
+++ b/src/corelib/plugin/qfactoryinterface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
struct Q_CORE_EXPORT QFactoryInterface
{
diff --git a/src/corelib/plugin/qfactoryloader.cpp b/src/corelib/plugin/qfactoryloader.cpp
index 9ae97c6313..e887ae8bf9 100644
--- a/src/corelib/plugin/qfactoryloader.cpp
+++ b/src/corelib/plugin/qfactoryloader.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/plugin/qfactoryloader_p.h b/src/corelib/plugin/qfactoryloader_p.h
index be40e66efd..2241a22e5f 100644
--- a/src/corelib/plugin/qfactoryloader_p.h
+++ b/src/corelib/plugin/qfactoryloader_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/plugin/qlibrary.cpp b/src/corelib/plugin/qlibrary.cpp
index f20abb660d..dc08b32db1 100644
--- a/src/corelib/plugin/qlibrary.cpp
+++ b/src/corelib/plugin/qlibrary.cpp
@@ -2,8 +2,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -76,7 +76,7 @@ QT_BEGIN_NAMESPACE
# define QT_NO_DEBUG_PLUGIN_CHECK
#endif
-Q_GLOBAL_STATIC(QMutex, qt_library_mutex)
+static QBasicMutex qt_library_mutex;
/*!
\class QLibrary
@@ -452,7 +452,7 @@ QLibraryPrivate::QLibraryPrivate(const QString &canonicalFileName, const QString
QLibraryPrivate *QLibraryPrivate::findOrCreate(const QString &fileName, const QString &version)
{
- QMutexLocker locker(qt_library_mutex());
+ QMutexLocker locker(&qt_library_mutex);
if (QLibraryPrivate *lib = libraryMap()->value(fileName)) {
lib->libraryRefCount.ref();
return lib;
@@ -526,7 +526,7 @@ bool QLibraryPrivate::unload()
void QLibraryPrivate::release()
{
- QMutexLocker locker(qt_library_mutex());
+ QMutexLocker locker(&qt_library_mutex);
if (!libraryRefCount.deref())
delete this;
}
diff --git a/src/corelib/plugin/qlibrary.h b/src/corelib/plugin/qlibrary.h
index 729277e838..f373ad06b6 100644
--- a/src/corelib/plugin/qlibrary.h
+++ b/src/corelib/plugin/qlibrary.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#if defined(QT_NO_LIBRARY) && defined(Q_OS_WIN)
#undef QT_NO_LIBRARY
diff --git a/src/corelib/plugin/qlibrary_p.h b/src/corelib/plugin/qlibrary_p.h
index 45c8843d20..a5f366070c 100644
--- a/src/corelib/plugin/qlibrary_p.h
+++ b/src/corelib/plugin/qlibrary_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,14 +53,14 @@
// We mean it.
//
-#ifdef Q_OS_WIN
-# include "QtCore/qt_windows.h"
-#endif
#include "QtCore/qlibrary.h"
#include "QtCore/qpointer.h"
#include "QtCore/qstringlist.h"
#include "QtCore/qplugin.h"
#include "QtCore/qsharedpointer.h"
+#ifdef Q_OS_WIN
+# include "QtCore/qt_windows.h"
+#endif
#ifndef QT_NO_LIBRARY
diff --git a/src/corelib/plugin/qlibrary_unix.cpp b/src/corelib/plugin/qlibrary_unix.cpp
index ce6d645ca4..cb81440c7e 100644
--- a/src/corelib/plugin/qlibrary_unix.cpp
+++ b/src/corelib/plugin/qlibrary_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -86,30 +86,18 @@ bool QLibraryPrivate::load_sys()
#if !defined(QT_NO_DYNAMIC_LIBRARY)
QFileInfo fi(fileName);
-#if defined(Q_OS_SYMBIAN)
- QString path; // In Symbian, always resolve with just the filename
- QString name;
-
- // Replace possible ".qtplugin" suffix with ".dll"
- if (fi.suffix() == QLatin1String("qtplugin"))
- name = fi.completeBaseName() + QLatin1String(".dll");
- else
- name = fi.fileName();
-#else
QString path = fi.path();
QString name = fi.fileName();
if (path == QLatin1String(".") && !fileName.startsWith(path))
path.clear();
else
path += QLatin1Char('/');
-#endif
+
// The first filename we want to attempt to load is the filename as the callee specified.
// Thus, the first attempt we do must be with an empty prefix and empty suffix.
QStringList suffixes(QLatin1String("")), prefixes(QLatin1String(""));
if (pluginState != IsAPlugin) {
-#if !defined(Q_OS_SYMBIAN)
prefixes << QLatin1String("lib");
-#endif
#if defined(Q_OS_HPUX)
// according to
// http://docs.hp.com/en/B2355-90968/linkerdifferencesiapa.htm
@@ -138,8 +126,6 @@ bool QLibraryPrivate::load_sys()
#elif defined(Q_OS_AIX)
suffixes << ".a";
-#elif defined(Q_OS_SYMBIAN)
- suffixes << QLatin1String(".dll");
#else
if (!fullVersion.isEmpty()) {
suffixes << QString::fromLatin1(".so.%1").arg(fullVersion);
@@ -209,11 +195,6 @@ bool QLibraryPrivate::load_sys()
pHnd = dlopen(QFile::encodeName(attempt), dlFlags);
#endif
-#if defined(Q_OS_SYMBIAN)
- // Never try again in symbian, dlopen already handles the library search logic,
- // and there is only one possible suffix.
- retry = false;
-#else
if (!pHnd && fileName.startsWith(QLatin1Char('/')) && QFile::exists(attempt)) {
// We only want to continue if dlopen failed due to that the shared library did not exist.
// However, we are only able to apply this check for absolute filenames (since they are
@@ -221,7 +202,6 @@ bool QLibraryPrivate::load_sys()
// This is all because dlerror is flawed and cannot tell us the reason why it failed.
retry = false;
}
-#endif
}
}
diff --git a/src/corelib/plugin/qlibrary_win.cpp b/src/corelib/plugin/qlibrary_win.cpp
index fd46a7107e..19a8299b7c 100644
--- a/src/corelib/plugin/qlibrary_win.cpp
+++ b/src/corelib/plugin/qlibrary_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,7 @@
#pragma message("QT_NO_LIBRARY is not supported on Windows")
#endif
-#include "qt_windows.h"
+#include <qt_windows.h>
QT_BEGIN_NAMESPACE
diff --git a/src/corelib/plugin/qplugin.h b/src/corelib/plugin/qplugin.h
index c9388c1337..6cc0ceb5c2 100644
--- a/src/corelib/plugin/qplugin.h
+++ b/src/corelib/plugin/qplugin.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef Q_EXTERN_C
# ifdef __cplusplus
diff --git a/src/corelib/plugin/qplugin.qdoc b/src/corelib/plugin/qplugin.qdoc
index 2149fa7179..77069e6dfd 100644
--- a/src/corelib/plugin/qplugin.qdoc
+++ b/src/corelib/plugin/qplugin.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/plugin/qpluginloader.cpp b/src/corelib/plugin/qpluginloader.cpp
index 1557df2eef..4ef04f2ea3 100644
--- a/src/corelib/plugin/qpluginloader.cpp
+++ b/src/corelib/plugin/qpluginloader.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/plugin/qpluginloader.h b/src/corelib/plugin/qpluginloader.h
index 0854d3dcdf..ee62986f21 100644
--- a/src/corelib/plugin/qpluginloader.h
+++ b/src/corelib/plugin/qpluginloader.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,7 +55,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QLibraryPrivate;
diff --git a/src/corelib/plugin/qsystemlibrary.cpp b/src/corelib/plugin/qsystemlibrary.cpp
index f949cc0f86..789e07527c 100644
--- a/src/corelib/plugin/qsystemlibrary.cpp
+++ b/src/corelib/plugin/qsystemlibrary.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/plugin/qsystemlibrary_p.h b/src/corelib/plugin/qsystemlibrary_p.h
index 4015fb6958..2701d2072d 100644
--- a/src/corelib/plugin/qsystemlibrary_p.h
+++ b/src/corelib/plugin/qsystemlibrary_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -44,8 +44,8 @@
#include <QtCore/qglobal.h>
#ifdef Q_OS_WIN
-#include <qt_windows.h>
-#include <QtCore/qstring.h>
+# include <QtCore/qstring.h>
+# include <qt_windows.h>
QT_BEGIN_NAMESPACE
diff --git a/src/corelib/plugin/quuid.cpp b/src/corelib/plugin/quuid.cpp
index e73508fce6..7b1c682e21 100644
--- a/src/corelib/plugin/quuid.cpp
+++ b/src/corelib/plugin/quuid.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -866,7 +866,7 @@ bool QUuid::operator>(const QUuid &other) const
\sa variant(), version()
*/
-#if defined(Q_OS_WIN32) && ! defined(Q_CC_MWERKS)
+#if defined(Q_OS_WIN32)
QT_BEGIN_INCLUDE_NAMESPACE
#include <objbase.h> // For CoCreateGuid
diff --git a/src/corelib/plugin/quuid.h b/src/corelib/plugin/quuid.h
index 9efb2ba37c..a55d6af3eb 100644
--- a/src/corelib/plugin/quuid.h
+++ b/src/corelib/plugin/quuid.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -63,7 +63,6 @@ typedef struct _GUID
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class Q_CORE_EXPORT QUuid
{
diff --git a/src/corelib/statemachine/qabstractstate.cpp b/src/corelib/statemachine/qabstractstate.cpp
index c2d24e3c00..3b51ded87f 100644
--- a/src/corelib/statemachine/qabstractstate.cpp
+++ b/src/corelib/statemachine/qabstractstate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/statemachine/qabstractstate.h b/src/corelib/statemachine/qabstractstate.h
index 33dbde23aa..a726222030 100644
--- a/src/corelib/statemachine/qabstractstate.h
+++ b/src/corelib/statemachine/qabstractstate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_STATEMACHINE
diff --git a/src/corelib/statemachine/qabstractstate_p.h b/src/corelib/statemachine/qabstractstate_p.h
index cf86e0cbe9..5fb5cddd27 100644
--- a/src/corelib/statemachine/qabstractstate_p.h
+++ b/src/corelib/statemachine/qabstractstate_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/statemachine/qabstracttransition.cpp b/src/corelib/statemachine/qabstracttransition.cpp
index a8fdea2cfc..3658725484 100644
--- a/src/corelib/statemachine/qabstracttransition.cpp
+++ b/src/corelib/statemachine/qabstracttransition.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/statemachine/qabstracttransition.h b/src/corelib/statemachine/qabstracttransition.h
index fd1eedb72e..1c05d39e65 100644
--- a/src/corelib/statemachine/qabstracttransition.h
+++ b/src/corelib/statemachine/qabstracttransition.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_STATEMACHINE
diff --git a/src/corelib/statemachine/qabstracttransition_p.h b/src/corelib/statemachine/qabstracttransition_p.h
index 4de0f4b8d6..64a0af7cfb 100644
--- a/src/corelib/statemachine/qabstracttransition_p.h
+++ b/src/corelib/statemachine/qabstracttransition_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/statemachine/qeventtransition.cpp b/src/corelib/statemachine/qeventtransition.cpp
index f55cdbc927..ed00d6681e 100644
--- a/src/corelib/statemachine/qeventtransition.cpp
+++ b/src/corelib/statemachine/qeventtransition.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/statemachine/qeventtransition.h b/src/corelib/statemachine/qeventtransition.h
index 173d24ef4a..ec61e062a1 100644
--- a/src/corelib/statemachine/qeventtransition.h
+++ b/src/corelib/statemachine/qeventtransition.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_STATEMACHINE
diff --git a/src/corelib/statemachine/qeventtransition_p.h b/src/corelib/statemachine/qeventtransition_p.h
index 6c3dc9dda4..c2d214da67 100644
--- a/src/corelib/statemachine/qeventtransition_p.h
+++ b/src/corelib/statemachine/qeventtransition_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/statemachine/qfinalstate.cpp b/src/corelib/statemachine/qfinalstate.cpp
index c2bb2ee218..a05f7f3b69 100644
--- a/src/corelib/statemachine/qfinalstate.cpp
+++ b/src/corelib/statemachine/qfinalstate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/statemachine/qfinalstate.h b/src/corelib/statemachine/qfinalstate.h
index 652abd6600..008409063a 100644
--- a/src/corelib/statemachine/qfinalstate.h
+++ b/src/corelib/statemachine/qfinalstate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_STATEMACHINE
diff --git a/src/corelib/statemachine/qhistorystate.cpp b/src/corelib/statemachine/qhistorystate.cpp
index b45cd30935..574404024b 100644
--- a/src/corelib/statemachine/qhistorystate.cpp
+++ b/src/corelib/statemachine/qhistorystate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/statemachine/qhistorystate.h b/src/corelib/statemachine/qhistorystate.h
index e9ec058d53..edb8c6f232 100644
--- a/src/corelib/statemachine/qhistorystate.h
+++ b/src/corelib/statemachine/qhistorystate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_STATEMACHINE
diff --git a/src/corelib/statemachine/qhistorystate_p.h b/src/corelib/statemachine/qhistorystate_p.h
index 35662d88f8..b49eee119c 100644
--- a/src/corelib/statemachine/qhistorystate_p.h
+++ b/src/corelib/statemachine/qhistorystate_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/statemachine/qsignaleventgenerator_p.h b/src/corelib/statemachine/qsignaleventgenerator_p.h
index e681add086..2cdca89424 100644
--- a/src/corelib/statemachine/qsignaleventgenerator_p.h
+++ b/src/corelib/statemachine/qsignaleventgenerator_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/statemachine/qsignaltransition.cpp b/src/corelib/statemachine/qsignaltransition.cpp
index 51a8a82b2d..bbd7bc4e19 100644
--- a/src/corelib/statemachine/qsignaltransition.cpp
+++ b/src/corelib/statemachine/qsignaltransition.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/statemachine/qsignaltransition.h b/src/corelib/statemachine/qsignaltransition.h
index fd91dd4c6d..c6fc9c6409 100644
--- a/src/corelib/statemachine/qsignaltransition.h
+++ b/src/corelib/statemachine/qsignaltransition.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_STATEMACHINE
diff --git a/src/corelib/statemachine/qsignaltransition_p.h b/src/corelib/statemachine/qsignaltransition_p.h
index aadb4efcc7..e0687b6488 100644
--- a/src/corelib/statemachine/qsignaltransition_p.h
+++ b/src/corelib/statemachine/qsignaltransition_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/statemachine/qstate.cpp b/src/corelib/statemachine/qstate.cpp
index 4f37bb0642..0230acbab6 100644
--- a/src/corelib/statemachine/qstate.cpp
+++ b/src/corelib/statemachine/qstate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/statemachine/qstate.h b/src/corelib/statemachine/qstate.h
index 337659295e..63a11b4e4f 100644
--- a/src/corelib/statemachine/qstate.h
+++ b/src/corelib/statemachine/qstate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_STATEMACHINE
diff --git a/src/corelib/statemachine/qstate_p.h b/src/corelib/statemachine/qstate_p.h
index daa2f467c1..30be47cf51 100644
--- a/src/corelib/statemachine/qstate_p.h
+++ b/src/corelib/statemachine/qstate_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/statemachine/qstatemachine.cpp b/src/corelib/statemachine/qstatemachine.cpp
index a24c71c105..52fd806b05 100644
--- a/src/corelib/statemachine/qstatemachine.cpp
+++ b/src/corelib/statemachine/qstatemachine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -2346,7 +2346,7 @@ QStateMachine::SignalEvent::~SignalEvent()
/*!
\class QStateMachine::WrappedEvent
- \brief The WrappedEvent class holds a clone of an event associated with a QObject.
+ \brief The WrappedEvent class inherits QEvent and holds a clone of an event associated with a QObject.
\since 4.6
\ingroup statemachine
diff --git a/src/corelib/statemachine/qstatemachine.h b/src/corelib/statemachine/qstatemachine.h
index b2a251038d..c9c60976d1 100644
--- a/src/corelib/statemachine/qstatemachine.h
+++ b/src/corelib/statemachine/qstatemachine.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_STATEMACHINE
diff --git a/src/corelib/statemachine/qstatemachine_p.h b/src/corelib/statemachine/qstatemachine_p.h
index 88b16a22bf..d01b050e15 100644
--- a/src/corelib/statemachine/qstatemachine_p.h
+++ b/src/corelib/statemachine/qstatemachine_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/thread/qatomic.cpp b/src/corelib/thread/qatomic.cpp
index c2c9484cf6..5443d6e1b6 100644
--- a/src/corelib/thread/qatomic.cpp
+++ b/src/corelib/thread/qatomic.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/thread/qatomic.h b/src/corelib/thread/qatomic.h
index 07350ecfcd..b75ae94429 100644
--- a/src/corelib/thread/qatomic.h
+++ b/src/corelib/thread/qatomic.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -44,13 +44,12 @@
#ifndef QATOMIC_H
#define QATOMIC_H
-#include <QtCore/qoldbasicatomic.h>
+#include <QtCore/qbasicatomic.h>
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#if defined(__GNUC__) && (__GNUC__ * 100 + __GNUC_MINOR__ >= 406)
# pragma GCC diagnostic push
diff --git a/src/corelib/thread/qbasicatomic.h b/src/corelib/thread/qbasicatomic.h
new file mode 100644
index 0000000000..47d690c13f
--- /dev/null
+++ b/src/corelib/thread/qbasicatomic.h
@@ -0,0 +1,232 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Thiago Macieira <thiago@kde.org>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QBASICATOMIC_H
+#define QBASICATOMIC_H
+
+#include <QtCore/qglobal.h>
+
+#if defined(QT_MOC) || defined(QT_BUILD_QMAKE) || defined(QT_RCC) || defined(QT_UIC) || defined(QT_BOOTSTRAPPED)
+# include <QtCore/qatomic_bootstrap.h>
+#elif defined(Q_CC_MSVC)
+# include <QtCore/qatomic_msvc.h>
+#elif defined(__arm__) || defined(__TARGET_ARCH_ARM)
+# include <QtCore/qatomic_arm.h>
+#elif defined(__i386) || defined(__i386__)
+# include <QtCore/qatomic_i386.h>
+#elif defined(__ia64) || defined(__ia64__)
+# include "QtCore/qatomic_ia64.h"
+#elif defined(__mips) || defined(__mips__)
+# include "QtCore/qatomic_mips.h"
+#elif defined(__x86_64) || defined(__x86_64__) || defined(__amd64)
+# include <QtCore/qatomic_x86_64.h>
+#elif defined(Q_COMPILER_ATOMICS) && defined(Q_COMPILER_CONSTEXPR)
+# include <QtCore/qatomic_cxx11.h>
+#elif defined(Q_CC_GNU)
+# include <QtCore/qatomic_gcc.h>
+#else
+# define QT_OLD_ATOMICS
+#endif
+
+#ifdef QT_OLD_ATOMICS
+# include "QtCore/qoldbasicatomic.h"
+# undef QT_OLD_ATOMICS
+#else
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Core)
+
+#if 0
+#pragma qt_no_master_include
+#pragma qt_sync_stop_processing
+#endif
+
+// New atomics
+
+template <typename T>
+class QBasicAtomicInteger
+{
+public:
+ typedef QAtomicOps<T> Ops;
+ // static check that this is a valid integer
+ typedef char PermittedIntegerType[QAtomicIntegerTraits<T>::IsInteger ? 1 : -1];
+
+ typename Ops::Type _q_value;
+
+ // Non-atomic API
+ T load() const { return Ops::load(_q_value); }
+ void store(T newValue) { Ops::store(_q_value, newValue); }
+
+ // Atomic API, implemented in qatomic_XXX.h
+
+ T loadAcquire() { return Ops::loadAcquire(_q_value); }
+ void storeRelease(T newValue) { Ops::storeRelease(_q_value, newValue); }
+
+ static bool isReferenceCountingNative() { return Ops::isReferenceCountingNative(); }
+ static bool isReferenceCountingWaitFree() { return Ops::isReferenceCountingWaitFree(); }
+
+ bool ref() { return Ops::ref(_q_value); }
+ bool deref() { return Ops::deref(_q_value); }
+
+ static bool isTestAndSetNative() { return Ops::isTestAndSetNative(); }
+ static bool isTestAndSetWaitFree() { return Ops::isTestAndSetWaitFree(); }
+
+ bool testAndSetRelaxed(T expectedValue, T newValue)
+ { return Ops::testAndSetRelaxed(_q_value, expectedValue, newValue); }
+ bool testAndSetAcquire(T expectedValue, T newValue)
+ { return Ops::testAndSetAcquire(_q_value, expectedValue, newValue); }
+ bool testAndSetRelease(T expectedValue, T newValue)
+ { return Ops::testAndSetRelease(_q_value, expectedValue, newValue); }
+ bool testAndSetOrdered(T expectedValue, T newValue)
+ { return Ops::testAndSetOrdered(_q_value, expectedValue, newValue); }
+
+ static bool isFetchAndStoreNative() { return Ops::isFetchAndStoreNative(); }
+ static bool isFetchAndStoreWaitFree() { return Ops::isFetchAndStoreWaitFree(); }
+
+ T fetchAndStoreRelaxed(T newValue)
+ { return Ops::fetchAndStoreRelaxed(_q_value, newValue); }
+ T fetchAndStoreAcquire(T newValue)
+ { return Ops::fetchAndStoreAcquire(_q_value, newValue); }
+ T fetchAndStoreRelease(T newValue)
+ { return Ops::fetchAndStoreRelease(_q_value, newValue); }
+ T fetchAndStoreOrdered(T newValue)
+ { return Ops::fetchAndStoreOrdered(_q_value, newValue); }
+
+ static bool isFetchAndAddNative() { return Ops::isFetchAndAddNative(); }
+ static bool isFetchAndAddWaitFree() { return Ops::isFetchAndAddWaitFree(); }
+
+ T fetchAndAddRelaxed(T valueToAdd)
+ { return Ops::fetchAndAddRelaxed(_q_value, valueToAdd); }
+ T fetchAndAddAcquire(T valueToAdd)
+ { return Ops::fetchAndAddAcquire(_q_value, valueToAdd); }
+ T fetchAndAddRelease(T valueToAdd)
+ { return Ops::fetchAndAddRelease(_q_value, valueToAdd); }
+ T fetchAndAddOrdered(T valueToAdd)
+ { return Ops::fetchAndAddOrdered(_q_value, valueToAdd); }
+
+#if defined(Q_COMPILER_CONSTEXPR) && defined(Q_COMPILER_DEFAULT_DELETE_MEMBERS)
+ QBasicAtomicInteger() = default;
+ constexpr QBasicAtomicInteger(T value) : _q_value(value) {}
+ QBasicAtomicInteger(const QBasicAtomicInteger &) = delete;
+ QBasicAtomicInteger &operator=(const QBasicAtomicInteger &) = delete;
+ QBasicAtomicInteger &operator=(const QBasicAtomicInteger &) volatile = delete;
+#endif
+};
+typedef QBasicAtomicInteger<int> QBasicAtomicInt;
+
+template <typename X>
+class QBasicAtomicPointer
+{
+public:
+ typedef X *Type;
+ typedef QAtomicOps<Type> Ops;
+ typedef typename Ops::Type AtomicType;
+
+ AtomicType _q_value;
+
+ // Non-atomic API
+ Type load() const { return _q_value; }
+ void store(Type newValue) { _q_value = newValue; }
+
+ // Atomic API, implemented in qatomic_XXX.h
+ Type loadAcquire() { return Ops::loadAcquire(_q_value); }
+ void storeRelease(Type newValue) { Ops::storeRelease(_q_value, newValue); }
+
+ static bool isTestAndSetNative() { return Ops::isTestAndSetNative(); }
+ static bool isTestAndSetWaitFree() { return Ops::isTestAndSetWaitFree(); }
+
+ bool testAndSetRelaxed(Type expectedValue, Type newValue)
+ { return Ops::testAndSetRelaxed(_q_value, expectedValue, newValue); }
+ bool testAndSetAcquire(Type expectedValue, Type newValue)
+ { return Ops::testAndSetAcquire(_q_value, expectedValue, newValue); }
+ bool testAndSetRelease(Type expectedValue, Type newValue)
+ { return Ops::testAndSetRelease(_q_value, expectedValue, newValue); }
+ bool testAndSetOrdered(Type expectedValue, Type newValue)
+ { return Ops::testAndSetOrdered(_q_value, expectedValue, newValue); }
+
+ static bool isFetchAndStoreNative() { return Ops::isFetchAndStoreNative(); }
+ static bool isFetchAndStoreWaitFree() { return Ops::isFetchAndStoreWaitFree(); }
+
+ Type fetchAndStoreRelaxed(Type newValue)
+ { return Ops::fetchAndStoreRelaxed(_q_value, newValue); }
+ Type fetchAndStoreAcquire(Type newValue)
+ { return Ops::fetchAndStoreAcquire(_q_value, newValue); }
+ Type fetchAndStoreRelease(Type newValue)
+ { return Ops::fetchAndStoreRelease(_q_value, newValue); }
+ Type fetchAndStoreOrdered(Type newValue)
+ { return Ops::fetchAndStoreOrdered(_q_value, newValue); }
+
+ static bool isFetchAndAddNative() { return Ops::isFetchAndAddNative(); }
+ static bool isFetchAndAddWaitFree() { return Ops::isFetchAndAddWaitFree(); }
+
+ Type fetchAndAddRelaxed(qptrdiff valueToAdd)
+ { return Ops::fetchAndAddRelaxed(_q_value, valueToAdd); }
+ Type fetchAndAddAcquire(qptrdiff valueToAdd)
+ { return Ops::fetchAndAddAcquire(_q_value, valueToAdd); }
+ Type fetchAndAddRelease(qptrdiff valueToAdd)
+ { return Ops::fetchAndAddRelease(_q_value, valueToAdd); }
+ Type fetchAndAddOrdered(qptrdiff valueToAdd)
+ { return Ops::fetchAndAddOrdered(_q_value, valueToAdd); }
+
+#if defined(Q_COMPILER_CONSTEXPR) && defined(Q_COMPILER_DEFAULT_DELETE_MEMBERS)
+ QBasicAtomicPointer() = default;
+ constexpr QBasicAtomicPointer(Type value) : _q_value(value) {}
+ QBasicAtomicPointer(const QBasicAtomicPointer &) = delete;
+ QBasicAtomicPointer &operator=(const QBasicAtomicPointer &) = delete;
+ QBasicAtomicPointer &operator=(const QBasicAtomicPointer &) volatile = delete;
+#endif
+};
+
+#ifndef Q_BASIC_ATOMIC_INITIALIZER
+# define Q_BASIC_ATOMIC_INITIALIZER(a) { (a) }
+#endif
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QT_OLD_ATOMICS
+
+
+#endif // QBASIC_ATOMIC
diff --git a/src/corelib/thread/qgenericatomic.h b/src/corelib/thread/qgenericatomic.h
new file mode 100644
index 0000000000..984ebed47b
--- /dev/null
+++ b/src/corelib/thread/qgenericatomic.h
@@ -0,0 +1,234 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Thiago Macieira <thiago@kde.org>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QGENERICATOMIC_H
+#define QGENERICATOMIC_H
+
+#include <QtCore/qglobal.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+#if 0
+#pragma qt_sync_stop_processing
+#endif
+
+#ifdef Q_CC_GNU
+// lowercase is fine, we'll undef it below
+#define always_inline __attribute__((always_inline, gnu_inline))
+#else
+#define always_inline
+#endif
+
+template<typename T> struct QAtomicIntegerTraits { enum { IsInteger = 0 }; };
+
+template <typename T> struct QAtomicAdditiveType
+{
+ typedef T AdditiveT;
+ static const int AddScale = 1;
+};
+template <typename T> struct QAtomicAdditiveType<T *>
+{
+ typedef qptrdiff AdditiveT;
+ static const int AddScale = sizeof(T);
+};
+
+// not really atomic...
+template <typename BaseClass> struct QGenericAtomicOps
+{
+ template <typename T> struct AtomicType { typedef T Type; typedef T *PointerType; };
+
+ static void acquireMemoryFence() { BaseClass::orderedMemoryFence(); }
+ static void releaseMemoryFence() { BaseClass::orderedMemoryFence(); }
+ static void orderedMemoryFence() { }
+
+ template <typename T> static inline always_inline
+ T load(T &_q_value)
+ {
+ return _q_value;
+ }
+
+ template <typename T, typename X> static inline always_inline
+ void store(T &_q_value, X newValue)
+ {
+ _q_value = newValue;
+ }
+
+ template <typename T> static inline always_inline
+ T loadAcquire(T &_q_value)
+ {
+ T tmp = *static_cast<volatile T *>(&_q_value);
+ BaseClass::acquireMemoryFence();
+ return tmp;
+ }
+
+ template <typename T, typename X> static inline always_inline
+ void storeRelease(T &_q_value, X newValue)
+ {
+ BaseClass::releaseMemoryFence();
+ *static_cast<volatile T *>(&_q_value) = newValue;
+ }
+
+ static inline bool isReferenceCountingNative()
+ { return BaseClass::isFetchAndAddNative(); }
+ static inline bool isReferenceCountingWaitFree()
+ { return BaseClass::isFetchAndAddWaitFree(); }
+ template <typename T> static inline always_inline
+ bool ref(T &_q_value)
+ {
+ return BaseClass::fetchAndAddRelaxed(_q_value, 1) != T(-1);
+ }
+
+ template <typename T> static inline always_inline
+ bool deref(T &_q_value)
+ {
+ return BaseClass::fetchAndAddRelaxed(_q_value, -1) != 1;
+ }
+
+#if 0
+ // These functions have no default implementation
+ // Archictectures must implement them
+ static inline bool isTestAndSetNative();
+ static inline bool isTestAndSetWaitFree();
+ template <typename T, typename X> static inline
+ bool testAndSetRelaxed(T &_q_value, X expectedValue, X newValue);
+#endif
+
+ template <typename T, typename X> static inline always_inline
+ bool testAndSetAcquire(T &_q_value, X expectedValue, X newValue)
+ {
+ bool tmp = BaseClass::testAndSetRelaxed(_q_value, expectedValue, newValue);
+ BaseClass::acquireMemoryFence();
+ return tmp;
+ }
+
+ template <typename T, typename X> static inline always_inline
+ bool testAndSetRelease(T &_q_value, X expectedValue, X newValue)
+ {
+ BaseClass::releaseMemoryFence();
+ return BaseClass::testAndSetRelaxed(_q_value, expectedValue, newValue);
+ }
+
+ template <typename T, typename X> static inline always_inline
+ bool testAndSetOrdered(T &_q_value, X expectedValue, X newValue)
+ {
+ BaseClass::orderedMemoryFence();
+ return BaseClass::testAndSetRelaxed(_q_value, expectedValue, newValue);
+ }
+
+ static inline bool isFetchAndStoreNative() { return false; }
+ static inline bool isFetchAndStoreWaitFree() { return false; }
+
+ template <typename T, typename X> static inline always_inline
+ T fetchAndStoreRelaxed(T &_q_value, X newValue)
+ {
+ // implement fetchAndStore on top of testAndSet
+ Q_FOREVER {
+ register T tmp = load(_q_value);
+ if (BaseClass::testAndSetRelaxed(_q_value, tmp, newValue))
+ return tmp;
+ }
+ }
+
+ template <typename T, typename X> static inline always_inline
+ T fetchAndStoreAcquire(T &_q_value, X newValue)
+ {
+ T tmp = BaseClass::fetchAndStoreRelaxed(_q_value, newValue);
+ BaseClass::acquireMemoryFence();
+ return tmp;
+ }
+
+ template <typename T, typename X> static inline always_inline
+ T fetchAndStoreRelease(T &_q_value, X newValue)
+ {
+ BaseClass::releaseMemoryFence();
+ return BaseClass::fetchAndStoreRelaxed(_q_value, newValue);
+ }
+
+ template <typename T, typename X> static inline always_inline
+ T fetchAndStoreOrdered(T &_q_value, X newValue)
+ {
+ BaseClass::orderedMemoryFence();
+ return BaseClass::fetchAndStoreRelaxed(_q_value, newValue);
+ }
+
+ static inline bool isFetchAndAddNative() { return false; }
+ static inline bool isFetchAndAddWaitFree() { return false; }
+ template <typename T> static inline always_inline
+ T fetchAndAddRelaxed(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
+ {
+ // implement fetchAndAdd on top of testAndSet
+ Q_FOREVER {
+ register T tmp = BaseClass::load(_q_value);
+ if (BaseClass::testAndSetRelaxed(_q_value, tmp, T(tmp + valueToAdd)))
+ return tmp;
+ }
+ }
+
+ template <typename T> static inline always_inline
+ T fetchAndAddAcquire(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
+ {
+ T tmp = BaseClass::fetchAndAddRelaxed(_q_value, valueToAdd);
+ BaseClass::acquireMemoryFence();
+ return tmp;
+ }
+
+ template <typename T> static inline always_inline
+ T fetchAndAddRelease(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
+ {
+ BaseClass::releaseMemoryFence();
+ return BaseClass::fetchAndAddRelaxed(_q_value, valueToAdd);
+ }
+
+ template <typename T> static inline always_inline
+ T fetchAndAddOrdered(T &_q_value, typename QAtomicAdditiveType<T>::AdditiveT valueToAdd)
+ {
+ BaseClass::orderedMemoryFence();
+ return BaseClass::fetchAndAddRelaxed(_q_value, valueToAdd);
+ }
+};
+
+#undef always_inline
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QGENERICATOMIC_H
diff --git a/src/corelib/thread/qmutex.cpp b/src/corelib/thread/qmutex.cpp
index 6c8ed3b897..4a64feff0e 100644
--- a/src/corelib/thread/qmutex.cpp
+++ b/src/corelib/thread/qmutex.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/thread/qmutex.h b/src/corelib/thread/qmutex.h
index 1d7e591b7d..9a81b3d4bd 100644
--- a/src/corelib/thread/qmutex.h
+++ b/src/corelib/thread/qmutex.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#if !defined(QT_NO_THREAD) && !defined(qdoc)
diff --git a/src/corelib/thread/qmutex_linux.cpp b/src/corelib/thread/qmutex_linux.cpp
index 9bb9c9061e..b1618f7fc9 100644
--- a/src/corelib/thread/qmutex_linux.cpp
+++ b/src/corelib/thread/qmutex_linux.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/thread/qmutex_mac.cpp b/src/corelib/thread/qmutex_mac.cpp
index 1a561aa5d5..ecd3442d91 100644
--- a/src/corelib/thread/qmutex_mac.cpp
+++ b/src/corelib/thread/qmutex_mac.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/thread/qmutex_p.h b/src/corelib/thread/qmutex_p.h
index 0cbc99adc6..3cf0938e94 100644
--- a/src/corelib/thread/qmutex_p.h
+++ b/src/corelib/thread/qmutex_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -118,8 +118,8 @@ public:
bool wakeup;
pthread_mutex_t mutex;
pthread_cond_t cond;
-#elif defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
- HANDLE event;
+#elif defined(Q_OS_WIN)
+ Qt::HANDLE event;
#endif
};
#endif //Q_OS_LINUX
diff --git a/src/corelib/thread/qmutex_unix.cpp b/src/corelib/thread/qmutex_unix.cpp
index a426d958f2..0347d4b3da 100644
--- a/src/corelib/thread/qmutex_unix.cpp
+++ b/src/corelib/thread/qmutex_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/thread/qmutex_win.cpp b/src/corelib/thread/qmutex_win.cpp
index b513b6e1ad..1fdf97b0d0 100644
--- a/src/corelib/thread/qmutex_win.cpp
+++ b/src/corelib/thread/qmutex_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,15 +34,15 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
-#include <qt_windows.h>
-
#include "qmutex.h"
#include <qatomic.h>
#include "qmutex_p.h"
+#include <qt_windows.h>
QT_BEGIN_NAMESPACE
diff --git a/src/corelib/thread/qmutexpool.cpp b/src/corelib/thread/qmutexpool.cpp
index 6be5e092d7..b102770d23 100644
--- a/src/corelib/thread/qmutexpool.cpp
+++ b/src/corelib/thread/qmutexpool.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/thread/qmutexpool_p.h b/src/corelib/thread/qmutexpool_p.h
index 90b89f9a17..ce55a40bb8 100644
--- a/src/corelib/thread/qmutexpool_p.h
+++ b/src/corelib/thread/qmutexpool_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/thread/qoldbasicatomic.h b/src/corelib/thread/qoldbasicatomic.h
index 2f952c9e0a..a1985793ed 100644
--- a/src/corelib/thread/qoldbasicatomic.h
+++ b/src/corelib/thread/qoldbasicatomic.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,12 +34,13 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
-#ifndef QBASICATOMIC_H
-#define QBASICATOMIC_H
+#ifndef QOLDBASICATOMIC_H
+#define QOLDBASICATOMIC_H
#include <QtCore/qglobal.h>
@@ -48,7 +48,11 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
+
+#if 0
+#pragma qt_no_master_include
+#pragma qt_sync_stop_processing
+#endif
class Q_CORE_EXPORT QBasicAtomicInt
{
@@ -166,10 +170,6 @@ public:
QT_END_NAMESPACE
QT_END_HEADER
-#if defined(QT_MOC) || defined(QT_BUILD_QMAKE) || defined(QT_RCC) || defined(QT_UIC) || defined(QT_BOOTSTRAPPED)
-# include <QtCore/qatomic_bootstrap.h>
-#else
# include <QtCore/qatomic_arch.h>
-#endif
#endif // QBASIC_ATOMIC
diff --git a/src/corelib/thread/qorderedmutexlocker_p.h b/src/corelib/thread/qorderedmutexlocker_p.h
index 14a29c7edf..4f8378f496 100644
--- a/src/corelib/thread/qorderedmutexlocker_p.h
+++ b/src/corelib/thread/qorderedmutexlocker_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/thread/qreadwritelock.cpp b/src/corelib/thread/qreadwritelock.cpp
index 54926111d5..519bae9fa6 100644
--- a/src/corelib/thread/qreadwritelock.cpp
+++ b/src/corelib/thread/qreadwritelock.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/thread/qreadwritelock.h b/src/corelib/thread/qreadwritelock.h
index cdbd7894a1..092352f611 100644
--- a/src/corelib/thread/qreadwritelock.h
+++ b/src/corelib/thread/qreadwritelock.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_THREAD
diff --git a/src/corelib/thread/qreadwritelock_p.h b/src/corelib/thread/qreadwritelock_p.h
index 125245bb4a..85e767ac12 100644
--- a/src/corelib/thread/qreadwritelock_p.h
+++ b/src/corelib/thread/qreadwritelock_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/thread/qrunnable.cpp b/src/corelib/thread/qrunnable.cpp
new file mode 100644
index 0000000000..933a5b922c
--- /dev/null
+++ b/src/corelib/thread/qrunnable.cpp
@@ -0,0 +1,107 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+/*!
+ \class QRunnable
+ \since 4.4
+ \brief The QRunnable class is the base class for all runnable objects.
+
+ \ingroup thread
+
+ The QRunnable class is an interface for representing a task or
+ piece of code that needs to be executed, represented by your
+ reimplementation of the run() function.
+
+ You can use QThreadPool to execute your code in a separate
+ thread. QThreadPool deletes the QRunnable automatically if
+ autoDelete() returns true (the default). Use setAutoDelete() to
+ change the auto-deletion flag.
+
+ QThreadPool supports executing the same QRunnable more than once
+ by calling QThreadPool::tryStart(this) from within the run() function.
+ If autoDelete is enabled the QRunnable will be deleted when
+ the last thread exits the run function. Calling QThreadPool::start()
+ multiple times with the same QRunnable when autoDelete is enabled
+ creates a race condition and is not recommended.
+
+ \sa QThreadPool
+*/
+
+/*! \fn QRunnable::run()
+ Implement this pure virtual function in your subclass.
+*/
+
+/*! \fn QRunnable::QRunnable()
+ Constructs a QRunnable. Auto-deletion is enabled by default.
+
+ \sa autoDelete(), setAutoDelete()
+*/
+
+/*! \fn QRunnable::~QRunnable()
+ QRunnable virtual destructor.
+*/
+
+/*! \fn bool QRunnable::autoDelete() const
+
+ Returns true is auto-deletion is enabled; false otherwise.
+
+ If auto-deletion is enabled, QThreadPool will automatically delete
+ this runnable after calling run(); otherwise, ownership remains
+ with the application programmer.
+
+ \sa setAutoDelete(), QThreadPool
+*/
+
+/*! \fn bool QRunnable::setAutoDelete(bool autoDelete)
+
+ Enables auto-deletion if \a autoDelete is true; otherwise
+ auto-deletion is disabled.
+
+ If auto-deletion is enabled, QThreadPool will automatically delete
+ this runnable after calling run(); otherwise, ownership remains
+ with the application programmer.
+
+ Note that this flag must be set before calling
+ QThreadPool::start(). Calling this function after
+ QThreadPool::start() results in undefined behavior.
+
+ \sa autoDelete(), QThreadPool
+*/
diff --git a/src/corelib/thread/qrunnable.h b/src/corelib/thread/qrunnable.h
new file mode 100644
index 0000000000..11d5c0146e
--- /dev/null
+++ b/src/corelib/thread/qrunnable.h
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QRUNNABLE_H
+#define QRUNNABLE_H
+
+#include <QtCore/qglobal.h>
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+class QRunnable
+{
+ int ref;
+
+ friend class QThreadPool;
+ friend class QThreadPoolPrivate;
+ friend class QThreadPoolThread;
+
+public:
+ virtual void run() = 0;
+
+ QRunnable() : ref(0) { }
+ virtual ~QRunnable() { }
+
+ bool autoDelete() const { return ref != -1; }
+ void setAutoDelete(bool _autoDelete) { ref = _autoDelete ? 0 : -1; }
+};
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif
diff --git a/src/corelib/thread/qsemaphore.cpp b/src/corelib/thread/qsemaphore.cpp
index 12539a794d..52f5a1d699 100644
--- a/src/corelib/thread/qsemaphore.cpp
+++ b/src/corelib/thread/qsemaphore.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/thread/qsemaphore.h b/src/corelib/thread/qsemaphore.h
index 4790a84bb6..c1d27bbde4 100644
--- a/src/corelib/thread/qsemaphore.h
+++ b/src/corelib/thread/qsemaphore.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_THREAD
diff --git a/src/corelib/thread/qthread.cpp b/src/corelib/thread/qthread.cpp
index 9d48c4dbe5..be0a98d3b5 100644
--- a/src/corelib/thread/qthread.cpp
+++ b/src/corelib/thread/qthread.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,24 +52,6 @@
#include "qthread_p.h"
#include "private/qcoreapplication_p.h"
-/*
-#ifdef Q_OS_WIN32
-# include "qt_windows.h"
-#else
-# include <unistd.h>
-# include <netinet/in.h>
-# include <sys/utsname.h>
-# include <sys/socket.h>
-*/
-/*
-# elif defined(Q_OS_HPUX)
-# include <sys/pstat.h>
-# elif defined(Q_OS_FREEBSD) || defined(Q_OS_OPENBSD) || defined(Q_OS_MAC)
-# include <sys/sysctl.h>
-# endif
-#endif
-*/
-
QT_BEGIN_NAMESPACE
/*
diff --git a/src/corelib/thread/qthread.h b/src/corelib/thread/qthread.h
index 597e29546a..719f4afbbb 100644
--- a/src/corelib/thread/qthread.h
+++ b/src/corelib/thread/qthread.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QThreadData;
class QThreadPrivate;
diff --git a/src/corelib/thread/qthread_p.h b/src/corelib/thread/qthread_p.h
index 094c9b0daf..d8374e9805 100644
--- a/src/corelib/thread/qthread_p.h
+++ b/src/corelib/thread/qthread_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -167,16 +167,13 @@ public:
#endif // Q_OS_UNIX
-#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
- HANDLE handle;
- unsigned int id;
- int waiters;
-
+#ifdef Q_OS_WIN
static unsigned int __stdcall start(void *);
static void finish(void *, bool lockAnyway=true);
-#endif // Q_OS_WIN32
-#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
+ Qt::HANDLE handle;
+ unsigned int id;
+ int waiters;
bool terminationEnabled, terminatePending;
# endif
QThreadData *data;
diff --git a/src/corelib/thread/qthread_unix.cpp b/src/corelib/thread/qthread_unix.cpp
index 672b7cb976..9ce951cf3b 100644
--- a/src/corelib/thread/qthread_unix.cpp
+++ b/src/corelib/thread/qthread_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/thread/qthread_win.cpp b/src/corelib/thread/qthread_win.cpp
index 3184b18471..bdee6d6b7c 100644
--- a/src/corelib/thread/qthread_win.cpp
+++ b/src/corelib/thread/qthread_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/thread/qthreadpool.cpp b/src/corelib/thread/qthreadpool.cpp
new file mode 100644
index 0000000000..af8c99197e
--- /dev/null
+++ b/src/corelib/thread/qthreadpool.cpp
@@ -0,0 +1,651 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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 "qthreadpool.h"
+#include "qthreadpool_p.h"
+#include "qelapsedtimer.h"
+
+#ifndef QT_NO_THREAD
+
+QT_BEGIN_NAMESPACE
+
+inline bool operator<(int priority, const QPair<QRunnable *, int> &p)
+{
+ return p.second < priority;
+}
+inline bool operator<(const QPair<QRunnable *, int> &p, int priority)
+{
+ return priority < p.second;
+}
+
+Q_GLOBAL_STATIC(QThreadPool, theInstance)
+
+/*
+ QThread wrapper, provides synchronizitaion against a ThreadPool
+*/
+class QThreadPoolThread : public QThread
+{
+public:
+ QThreadPoolThread(QThreadPoolPrivate *manager);
+ void run();
+ void registerTheadInactive();
+
+ QThreadPoolPrivate *manager;
+ QRunnable *runnable;
+};
+
+/*
+ QThreadPool private class.
+*/
+
+
+/*!\internal
+
+*/
+QThreadPoolThread::QThreadPoolThread(QThreadPoolPrivate *manager)
+ :manager(manager), runnable(0)
+{ }
+
+/* \internal
+
+*/
+void QThreadPoolThread::run()
+{
+ QMutexLocker locker(&manager->mutex);
+ for(;;) {
+ QRunnable *r = runnable;
+ runnable = 0;
+
+ do {
+ if (r) {
+ const bool autoDelete = r->autoDelete();
+
+
+ // run the task
+ locker.unlock();
+#ifndef QT_NO_EXCEPTIONS
+ try {
+#endif
+ r->run();
+#ifndef QT_NO_EXCEPTIONS
+ } catch (...) {
+ qWarning("Qt Concurrent has caught an exception thrown from a worker thread.\n"
+ "This is not supported, exceptions thrown in worker threads must be\n"
+ "caught before control returns to Qt Concurrent.");
+ registerTheadInactive();
+ throw;
+ }
+#endif
+ locker.relock();
+
+ if (autoDelete && !--r->ref)
+ delete r;
+ }
+
+ // if too many threads are active, expire this thread
+ if (manager->tooManyThreadsActive())
+ break;
+
+ r = !manager->queue.isEmpty() ? manager->queue.takeFirst().first : 0;
+ } while (r != 0);
+
+ if (manager->isExiting) {
+ registerTheadInactive();
+ break;
+ }
+
+ // if too many threads are active, expire this thread
+ bool expired = manager->tooManyThreadsActive();
+ if (!expired) {
+ ++manager->waitingThreads;
+ registerTheadInactive();
+ // wait for work, exiting after the expiry timeout is reached
+ expired = !manager->runnableReady.wait(locker.mutex(), manager->expiryTimeout);
+ ++manager->activeThreads;
+
+ if (expired)
+ --manager->waitingThreads;
+ }
+ if (expired) {
+ manager->expiredThreads.enqueue(this);
+ registerTheadInactive();
+ break;
+ }
+ }
+}
+
+void QThreadPoolThread::registerTheadInactive()
+{
+ if (--manager->activeThreads == 0)
+ manager->noActiveThreads.wakeAll();
+}
+
+
+/* \internal
+
+*/
+QThreadPoolPrivate:: QThreadPoolPrivate()
+ : isExiting(false),
+ expiryTimeout(30000),
+ maxThreadCount(qAbs(QThread::idealThreadCount())),
+ reservedThreads(0),
+ waitingThreads(0),
+ activeThreads(0)
+{ }
+
+bool QThreadPoolPrivate::tryStart(QRunnable *task)
+{
+ if (allThreads.isEmpty()) {
+ // always create at least one thread
+ startThread(task);
+ return true;
+ }
+
+ // can't do anything if we're over the limit
+ if (activeThreadCount() >= maxThreadCount)
+ return false;
+
+ if (waitingThreads > 0) {
+ // recycle an available thread
+ --waitingThreads;
+ enqueueTask(task);
+ return true;
+ }
+
+ if (!expiredThreads.isEmpty()) {
+ // restart an expired thread
+ QThreadPoolThread *thread = expiredThreads.dequeue();
+ Q_ASSERT(thread->runnable == 0);
+
+ ++activeThreads;
+
+ if (task->autoDelete())
+ ++task->ref;
+ thread->runnable = task;
+ thread->start();
+ return true;
+ }
+
+ // start a new thread
+ startThread(task);
+ return true;
+}
+
+void QThreadPoolPrivate::enqueueTask(QRunnable *runnable, int priority)
+{
+ if (runnable->autoDelete())
+ ++runnable->ref;
+
+ // put it on the queue
+ QList<QPair<QRunnable *, int> >::iterator at =
+ qUpperBound(queue.begin(), queue.end(), priority);
+ queue.insert(at, qMakePair(runnable, priority));
+ runnableReady.wakeOne();
+}
+
+int QThreadPoolPrivate::activeThreadCount() const
+{
+ // To improve scalability this function is called without holding
+ // the mutex lock -- keep it thread-safe.
+ return (allThreads.count()
+ - expiredThreads.count()
+ - waitingThreads
+ + reservedThreads);
+}
+
+void QThreadPoolPrivate::tryToStartMoreThreads()
+{
+ // try to push tasks on the queue to any available threads
+ while (!queue.isEmpty() && tryStart(queue.first().first))
+ queue.removeFirst();
+}
+
+bool QThreadPoolPrivate::tooManyThreadsActive() const
+{
+ const int activeThreadCount = this->activeThreadCount();
+ return activeThreadCount > maxThreadCount && (activeThreadCount - reservedThreads) > 1;
+}
+
+/*! \internal
+
+*/
+void QThreadPoolPrivate::startThread(QRunnable *runnable)
+{
+ QScopedPointer <QThreadPoolThread> thread(new QThreadPoolThread(this));
+ thread->setObjectName(QLatin1String("Thread (pooled)"));
+ allThreads.insert(thread.data());
+ ++activeThreads;
+
+ if (runnable->autoDelete())
+ ++runnable->ref;
+ thread->runnable = runnable;
+ thread.take()->start();
+}
+
+/*! \internal
+ Makes all threads exit, waits for each tread to exit and deletes it.
+*/
+void QThreadPoolPrivate::reset()
+{
+ QMutexLocker locker(&mutex);
+ isExiting = true;
+ runnableReady.wakeAll();
+
+ do {
+ // make a copy of the set so that we can iterate without the lock
+ QSet<QThreadPoolThread *> allThreadsCopy = allThreads;
+ allThreads.clear();
+ locker.unlock();
+
+ foreach (QThreadPoolThread *thread, allThreadsCopy) {
+ thread->wait();
+ delete thread;
+ }
+
+ locker.relock();
+ // repeat until all newly arrived threads have also completed
+ } while (!allThreads.isEmpty());
+
+ waitingThreads = 0;
+ expiredThreads.clear();
+
+ isExiting = false;
+}
+
+bool QThreadPoolPrivate::waitForDone(int msecs)
+{
+ QMutexLocker locker(&mutex);
+ if (msecs < 0) {
+ while (!(queue.isEmpty() && activeThreads == 0))
+ noActiveThreads.wait(locker.mutex());
+ } else {
+ QElapsedTimer timer;
+ timer.start();
+ int t;
+ while (!(queue.isEmpty() && activeThreads == 0) &&
+ ((t = msecs - timer.elapsed()) > 0))
+ noActiveThreads.wait(locker.mutex(), t);
+ }
+ return queue.isEmpty() && activeThreads == 0;
+}
+
+/*! \internal
+ Pulls a runnable from the front queue and runs it in the current thread. Blocks
+ until the runnable has completed. Returns true if a runnable was found.
+*/
+bool QThreadPoolPrivate::startFrontRunnable()
+{
+ QMutexLocker locker(&mutex);
+ if (queue.isEmpty())
+ return false;
+
+ QRunnable *runnable = queue.takeFirst().first;
+ const bool autoDelete = runnable->autoDelete();
+ bool del = autoDelete && !--runnable->ref;
+
+ locker.unlock();
+ runnable->run();
+ locker.relock();
+
+ if (del) {
+ delete runnable;
+ }
+
+ return true;
+}
+
+/*! \internal
+ Seaches for \a runnable in the queue, removes it from the queue and
+ runs it if found. This functon does not return until the runnable
+ has completed.
+*/
+void QThreadPoolPrivate::stealRunnable(QRunnable *runnable)
+{
+ if (runnable == 0 || queue.isEmpty())
+ return;
+ bool found = false;
+ {
+ QMutexLocker locker(&mutex);
+ QList<QPair<QRunnable *, int> >::iterator it = queue.begin();
+ QList<QPair<QRunnable *, int> >::iterator end = queue.end();
+
+ while (it != end) {
+ if (it->first == runnable) {
+ found = true;
+ queue.erase(it);
+ break;
+ }
+ ++it;
+ }
+ }
+
+ if (!found)
+ return;
+
+ const bool autoDelete = runnable->autoDelete();
+ bool del = autoDelete && !--runnable->ref;
+
+ runnable->run();
+
+ if (del) {
+ delete runnable;
+ }
+}
+
+/*!
+ \class QThreadPool
+ \brief The QThreadPool class manages a collection of QThreads.
+ \since 4.4
+ \threadsafe
+
+ \ingroup thread
+
+ QThreadPool manages and recyles individual QThread objects to help reduce
+ thread creation costs in programs that use threads. Each Qt application
+ has one global QThreadPool object, which can be accessed by calling
+ globalInstance().
+
+ To use one of the QThreadPool threads, subclass QRunnable and implement
+ the run() virtual function. Then create an object of that class and pass
+ it to QThreadPool::start().
+
+ \snippet doc/src/snippets/code/src_corelib_concurrent_qthreadpool.cpp 0
+
+ QThreadPool deletes the QRunnable automatically by default. Use
+ QRunnable::setAutoDelete() to change the auto-deletion flag.
+
+ QThreadPool supports executing the same QRunnable more than once
+ by calling tryStart(this) from within QRunnable::run().
+ If autoDelete is enabled the QRunnable will be deleted when
+ the last thread exits the run function. Calling start()
+ multiple times with the same QRunnable when autoDelete is enabled
+ creates a race condition and is not recommended.
+
+ Threads that are unused for a certain amount of time will expire. The
+ default expiry timeout is 30000 milliseconds (30 seconds). This can be
+ changed using setExpiryTimeout(). Setting a negative expiry timeout
+ disables the expiry mechanism.
+
+ Call maxThreadCount() to query the maximum number of threads to be used.
+ If needed, you can change the limit with setMaxThreadCount(). The default
+ maxThreadCount() is QThread::idealThreadCount(). The activeThreadCount()
+ function returns the number of threads currently doing work.
+
+ The reserveThread() function reserves a thread for external
+ use. Use releaseThread() when your are done with the thread, so
+ that it may be reused. Essentially, these functions temporarily
+ increase or reduce the active thread count and are useful when
+ implementing time-consuming operations that are not visible to the
+ QThreadPool.
+
+ Note that QThreadPool is a low-level class for managing threads, see
+ QtConcurrent::run() or the other
+ \l {Concurrent Programming}{Qt Concurrent} APIs for higher
+ level alternatives.
+
+ \sa QRunnable
+*/
+
+/*!
+ Constructs a thread pool with the given \a parent.
+*/
+QThreadPool::QThreadPool(QObject *parent)
+ : QObject(*new QThreadPoolPrivate, parent)
+{ }
+
+/*!
+ Destroys the QThreadPool.
+ This function will block until all runnables have been completed.
+*/
+QThreadPool::~QThreadPool()
+{
+ d_func()->waitForDone();
+ d_func()->reset();
+}
+
+/*!
+ Returns the global QThreadPool instance.
+*/
+QThreadPool *QThreadPool::globalInstance()
+{
+ return theInstance();
+}
+
+/*!
+ Reserves a thread and uses it to run \a runnable, unless this thread will
+ make the current thread count exceed maxThreadCount(). In that case,
+ \a runnable is added to a run queue instead. The \a priority argument can
+ be used to control the run queue's order of execution.
+
+ Note that the thread pool takes ownership of the \a runnable if
+ \l{QRunnable::autoDelete()}{runnable->autoDelete()} returns true,
+ and the \a runnable will be deleted automatically by the thread
+ pool after the \l{QRunnable::run()}{runnable->run()} returns. If
+ \l{QRunnable::autoDelete()}{runnable->autoDelete()} returns false,
+ ownership of \a runnable remains with the caller. Note that
+ changing the auto-deletion on \a runnable after calling this
+ functions results in undefined behavior.
+*/
+void QThreadPool::start(QRunnable *runnable, int priority)
+{
+ if (!runnable)
+ return;
+
+ Q_D(QThreadPool);
+ QMutexLocker locker(&d->mutex);
+ if (!d->tryStart(runnable))
+ d->enqueueTask(runnable, priority);
+}
+
+/*!
+ Attempts to reserve a thread to run \a runnable.
+
+ If no threads are available at the time of calling, then this function
+ does nothing and returns false. Otherwise, \a runnable is run immediately
+ using one available thread and this function returns true.
+
+ Note that the thread pool takes ownership of the \a runnable if
+ \l{QRunnable::autoDelete()}{runnable->autoDelete()} returns true,
+ and the \a runnable will be deleted automatically by the thread
+ pool after the \l{QRunnable::run()}{runnable->run()} returns. If
+ \l{QRunnable::autoDelete()}{runnable->autoDelete()} returns false,
+ ownership of \a runnable remains with the caller. Note that
+ changing the auto-deletion on \a runnable after calling this
+ function results in undefined behavior.
+*/
+bool QThreadPool::tryStart(QRunnable *runnable)
+{
+ if (!runnable)
+ return false;
+
+ Q_D(QThreadPool);
+
+ // To improve scalability perform a check on the thread count
+ // before locking the mutex.
+ if (d->allThreads.isEmpty() == false && d->activeThreadCount() >= d->maxThreadCount)
+ return false;
+
+ QMutexLocker locker(&d->mutex);
+ return d->tryStart(runnable);
+}
+
+/*! \property QThreadPool::expiryTimeout
+
+ Threads that are unused for \a expiryTimeout milliseconds are considered
+ to have expired and will exit. Such threads will be restarted as needed.
+ The default \a expiryTimeout is 30000 milliseconds (30 seconds). If
+ \a expiryTimeout is negative, newly created threads will not expire, e.g.,
+ they will not exit until the thread pool is destroyed.
+
+ Note that setting \a expiryTimeout has no effect on already running
+ threads. Only newly created threads will use the new \a expiryTimeout.
+ We recommend setting the \a expiryTimeout immediately after creating the
+ thread pool, but before calling start().
+*/
+
+int QThreadPool::expiryTimeout() const
+{
+ Q_D(const QThreadPool);
+ return d->expiryTimeout;
+}
+
+void QThreadPool::setExpiryTimeout(int expiryTimeout)
+{
+ Q_D(QThreadPool);
+ if (d->expiryTimeout == expiryTimeout)
+ return;
+ d->expiryTimeout = expiryTimeout;
+}
+
+/*! \property QThreadPool::maxThreadCount
+
+ This property represents the maximum number of threads used by the thread
+ pool.
+
+ \note The thread pool will always use at least 1 thread, even if
+ \a maxThreadCount limit is zero or negative.
+
+ The default \a maxThreadCount is QThread::idealThreadCount().
+*/
+
+int QThreadPool::maxThreadCount() const
+{
+ Q_D(const QThreadPool);
+ return d->maxThreadCount;
+}
+
+void QThreadPool::setMaxThreadCount(int maxThreadCount)
+{
+ Q_D(QThreadPool);
+ QMutexLocker locker(&d->mutex);
+
+ if (maxThreadCount == d->maxThreadCount)
+ return;
+
+ d->maxThreadCount = maxThreadCount;
+ d->tryToStartMoreThreads();
+}
+
+/*! \property QThreadPool::activeThreadCount
+
+ This property represents the number of active threads in the thread pool.
+
+ \note It is possible for this function to return a value that is greater
+ than maxThreadCount(). See reserveThread() for more details.
+
+ \sa reserveThread(), releaseThread()
+*/
+
+int QThreadPool::activeThreadCount() const
+{
+ Q_D(const QThreadPool);
+ return d->activeThreadCount();
+}
+
+/*!
+ Reserves one thread, disregarding activeThreadCount() and maxThreadCount().
+
+ Once you are done with the thread, call releaseThread() to allow it to be
+ reused.
+
+ \note This function will always increase the number of active threads.
+ This means that by using this function, it is possible for
+ activeThreadCount() to return a value greater than maxThreadCount() .
+
+ \sa releaseThread()
+ */
+void QThreadPool::reserveThread()
+{
+ Q_D(QThreadPool);
+ QMutexLocker locker(&d->mutex);
+ ++d->reservedThreads;
+}
+
+/*!
+ Releases a thread previously reserved by a call to reserveThread().
+
+ \note Calling this function without previously reserving a thread
+ temporarily increases maxThreadCount(). This is useful when a
+ thread goes to sleep waiting for more work, allowing other threads
+ to continue. Be sure to call reserveThread() when done waiting, so
+ that the thread pool can correctly maintain the
+ activeThreadCount().
+
+ \sa reserveThread()
+*/
+void QThreadPool::releaseThread()
+{
+ Q_D(QThreadPool);
+ QMutexLocker locker(&d->mutex);
+ --d->reservedThreads;
+ d->tryToStartMoreThreads();
+}
+
+/*!
+ Waits for each thread to exit and removes all threads from the thread pool.
+*/
+void QThreadPool::waitForDone()
+{
+ Q_D(QThreadPool);
+ d->waitForDone();
+ d->reset();
+}
+
+/*!
+ \overload waitForDone()
+ \since 4.8
+
+ Waits up to \a msecs milliseconds for all threads to exit and removes all
+ threads from the thread pool. Returns true if all threads were removed;
+ otherwise it returns false.
+*/
+bool QThreadPool::waitForDone(int msecs)
+{
+ Q_D(QThreadPool);
+ bool rc = d->waitForDone(msecs);
+ if (rc)
+ d->reset();
+ return rc;
+}
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/corelib/thread/qthreadpool.h b/src/corelib/thread/qthreadpool.h
new file mode 100644
index 0000000000..9fc023c56d
--- /dev/null
+++ b/src/corelib/thread/qthreadpool.h
@@ -0,0 +1,95 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QTHREADPOOL_H
+#define QTHREADPOOL_H
+
+#include <QtCore/qglobal.h>
+
+#include <QtCore/qthread.h>
+#include <QtCore/qrunnable.h>
+
+#ifndef QT_NO_THREAD
+
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
+
+class QThreadPoolPrivate;
+class Q_CORE_EXPORT QThreadPool : public QObject
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QThreadPool)
+ Q_PROPERTY(int expiryTimeout READ expiryTimeout WRITE setExpiryTimeout)
+ Q_PROPERTY(int maxThreadCount READ maxThreadCount WRITE setMaxThreadCount)
+ Q_PROPERTY(int activeThreadCount READ activeThreadCount)
+ friend class QFutureInterfaceBase;
+
+public:
+ QThreadPool(QObject *parent = 0);
+ ~QThreadPool();
+
+ static QThreadPool *globalInstance();
+
+ void start(QRunnable *runnable, int priority = 0);
+ bool tryStart(QRunnable *runnable);
+
+ int expiryTimeout() const;
+ void setExpiryTimeout(int expiryTimeout);
+
+ int maxThreadCount() const;
+ void setMaxThreadCount(int maxThreadCount);
+
+ int activeThreadCount() const;
+
+ void reserveThread();
+ void releaseThread();
+
+ void waitForDone();
+ bool waitForDone(int msecs);
+};
+
+QT_END_NAMESPACE
+QT_END_HEADER
+
+#endif // QT_NO_THREAD
+
+#endif
diff --git a/src/corelib/thread/qthreadpool_p.h b/src/corelib/thread/qthreadpool_p.h
new file mode 100644
index 0000000000..9a7c09695f
--- /dev/null
+++ b/src/corelib/thread/qthreadpool_p.h
@@ -0,0 +1,107 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtCore 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$
+**
+****************************************************************************/
+
+#ifndef QTHREADPOOL_P_H
+#define QTHREADPOOL_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+//
+
+#include "QtCore/qmutex.h"
+#include "QtCore/qwaitcondition.h"
+#include "QtCore/qset.h"
+#include "QtCore/qqueue.h"
+#include "private/qobject_p.h"
+
+#ifndef QT_NO_THREAD
+
+QT_BEGIN_NAMESPACE
+
+class QThreadPoolThread;
+class Q_CORE_EXPORT QThreadPoolPrivate : public QObjectPrivate
+{
+ Q_DECLARE_PUBLIC(QThreadPool)
+ friend class QThreadPoolThread;
+
+public:
+ QThreadPoolPrivate();
+
+ bool tryStart(QRunnable *task);
+ void enqueueTask(QRunnable *task, int priority = 0);
+ int activeThreadCount() const;
+
+ void tryToStartMoreThreads();
+ bool tooManyThreadsActive() const;
+
+ void startThread(QRunnable *runnable = 0);
+ void reset();
+ bool waitForDone(int msecs = -1);
+ bool startFrontRunnable();
+ void stealRunnable(QRunnable *);
+
+ mutable QMutex mutex;
+ QWaitCondition runnableReady;
+ QSet<QThreadPoolThread *> allThreads;
+ QQueue<QThreadPoolThread *> expiredThreads;
+ QList<QPair<QRunnable *, int> > queue;
+ QWaitCondition noActiveThreads;
+
+ bool isExiting;
+ int expiryTimeout;
+ int maxThreadCount;
+ int reservedThreads;
+ int waitingThreads;
+ int activeThreads;
+};
+
+QT_END_NAMESPACE
+
+#endif // QT_NO_THREAD
+#endif
diff --git a/src/corelib/thread/qthreadstorage.cpp b/src/corelib/thread/qthreadstorage.cpp
index 6dba8d670e..1dfa3305bc 100644
--- a/src/corelib/thread/qthreadstorage.cpp
+++ b/src/corelib/thread/qthreadstorage.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -71,13 +71,13 @@ void qtsDebug(const char *fmt, ...)
# define DEBUG_MSG if(false)qDebug
#endif
-Q_GLOBAL_STATIC(QMutex, mutex)
+static QBasicMutex destructorsMutex;
typedef QVector<void (*)(void *)> DestructorMap;
Q_GLOBAL_STATIC(DestructorMap, destructors)
QThreadStorageData::QThreadStorageData(void (*func)(void *))
{
- QMutexLocker locker(mutex());
+ QMutexLocker locker(&destructorsMutex);
DestructorMap *destr = destructors();
if (!destr) {
/*
@@ -109,7 +109,7 @@ QThreadStorageData::QThreadStorageData(void (*func)(void *))
QThreadStorageData::~QThreadStorageData()
{
DEBUG_MSG("QThreadStorageData: Released id %d", id);
- QMutexLocker locker(mutex());
+ QMutexLocker locker(&destructorsMutex);
if (destructors())
(*destructors())[id] = 0;
}
@@ -153,7 +153,7 @@ void **QThreadStorageData::set(void *p)
value,
data->thread);
- QMutexLocker locker(mutex());
+ QMutexLocker locker(&destructorsMutex);
DestructorMap *destr = destructors();
void (*destructor)(void *) = destr ? destr->value(id) : 0;
locker.unlock();
@@ -174,7 +174,7 @@ void **QThreadStorageData::set(void *p)
void QThreadStorageData::finish(void **p)
{
QVector<void *> *tls = reinterpret_cast<QVector<void *> *>(p);
- if (!tls || tls->isEmpty() || !mutex())
+ if (!tls || tls->isEmpty() || !destructors())
return; // nothing to do
DEBUG_MSG("QThreadStorageData: Destroying storage for thread %p", QThread::currentThread());
@@ -190,7 +190,7 @@ void QThreadStorageData::finish(void **p)
continue;
}
- QMutexLocker locker(mutex());
+ QMutexLocker locker(&destructorsMutex);
void (*destructor)(void *) = destructors()->value(i);
locker.unlock();
diff --git a/src/corelib/thread/qthreadstorage.h b/src/corelib/thread/qthreadstorage.h
index 790f9a51ef..706d4d0e86 100644
--- a/src/corelib/thread/qthreadstorage.h
+++ b/src/corelib/thread/qthreadstorage.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class Q_CORE_EXPORT QThreadStorageData
{
diff --git a/src/corelib/thread/qwaitcondition.h b/src/corelib/thread/qwaitcondition.h
index 7d4eb684ee..f6e41aef4e 100644
--- a/src/corelib/thread/qwaitcondition.h
+++ b/src/corelib/thread/qwaitcondition.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#ifndef QT_NO_THREAD
diff --git a/src/corelib/thread/qwaitcondition.qdoc b/src/corelib/thread/qwaitcondition.qdoc
index f079e5a6ba..7b861f8f7a 100644
--- a/src/corelib/thread/qwaitcondition.qdoc
+++ b/src/corelib/thread/qwaitcondition.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/thread/qwaitcondition_unix.cpp b/src/corelib/thread/qwaitcondition_unix.cpp
index 91aea010d9..5641eba80a 100644
--- a/src/corelib/thread/qwaitcondition_unix.cpp
+++ b/src/corelib/thread/qwaitcondition_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/thread/qwaitcondition_win.cpp b/src/corelib/thread/qwaitcondition_win.cpp
index 0106dbf13a..3528d6a0ff 100644
--- a/src/corelib/thread/qwaitcondition_win.cpp
+++ b/src/corelib/thread/qwaitcondition_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -45,13 +45,13 @@
#include "qreadwritelock.h"
#include "qlist.h"
#include "qalgorithms.h"
-#include "qt_windows.h"
#ifndef QT_NO_THREAD
#define Q_MUTEX_T void*
#include <private/qmutex_p.h>
#include <private/qreadwritelock_p.h>
+#include <qt_windows.h>
QT_BEGIN_NAMESPACE
diff --git a/src/corelib/thread/thread.pri b/src/corelib/thread/thread.pri
index 974e086684..1eefa60d50 100644
--- a/src/corelib/thread/thread.pri
+++ b/src/corelib/thread/thread.pri
@@ -2,12 +2,16 @@
# public headers
HEADERS += thread/qmutex.h \
+ thread/qrunnable.h \
thread/qreadwritelock.h \
thread/qsemaphore.h \
thread/qthread.h \
+ thread/qthreadpool.h \
thread/qthreadstorage.h \
thread/qwaitcondition.h \
thread/qatomic.h \
+ thread/qbasicatomic.h \
+ thread/qgenericatomic.h \
thread/qoldbasicatomic.h
# private headers
@@ -15,14 +19,17 @@ HEADERS += thread/qmutex_p.h \
thread/qmutexpool_p.h \
thread/qorderedmutexlocker_p.h \
thread/qreadwritelock_p.h \
- thread/qthread_p.h
+ thread/qthread_p.h \
+ thread/qthreadpool_p.h
SOURCES += thread/qatomic.cpp \
thread/qmutex.cpp \
thread/qreadwritelock.cpp \
+ thread/qrunnable.cpp \
thread/qmutexpool.cpp \
thread/qsemaphore.cpp \
thread/qthread.cpp \
+ thread/qthreadpool.cpp \
thread/qthreadstorage.cpp
unix:SOURCES += thread/qthread_unix.cpp \
diff --git a/src/corelib/tools/qalgorithms.h b/src/corelib/tools/qalgorithms.h
index a1c656934d..9bc56be527 100644
--- a/src/corelib/tools/qalgorithms.h
+++ b/src/corelib/tools/qalgorithms.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
/*
Warning: The contents of QAlgorithmsPrivate is not a part of the public Qt API
diff --git a/src/corelib/tools/qalgorithms.qdoc b/src/corelib/tools/qalgorithms.qdoc
index 3ba86b6838..a16ed8b3dc 100644
--- a/src/corelib/tools/qalgorithms.qdoc
+++ b/src/corelib/tools/qalgorithms.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qbitarray.cpp b/src/corelib/tools/qbitarray.cpp
index 96811cc179..4cb08a7310 100644
--- a/src/corelib/tools/qbitarray.cpp
+++ b/src/corelib/tools/qbitarray.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qbitarray.h b/src/corelib/tools/qbitarray.h
index 83c81eca90..ac54c2a4f5 100644
--- a/src/corelib/tools/qbitarray.h
+++ b/src/corelib/tools/qbitarray.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QBitRef;
class Q_CORE_EXPORT QBitArray
diff --git a/src/corelib/tools/qbytearray.cpp b/src/corelib/tools/qbytearray.cpp
index 4173cf28e2..aa22413d94 100644
--- a/src/corelib/tools/qbytearray.cpp
+++ b/src/corelib/tools/qbytearray.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1143,7 +1143,7 @@ QByteArray &QByteArray::operator=(const char *str)
\overload
*/
-/*! \fn QBool QByteArray::contains(const QByteArray &ba) const
+/*! \fn bool QByteArray::contains(const QByteArray &ba) const
Returns true if the byte array contains an occurrence of the byte
array \a ba; otherwise returns false.
@@ -1151,7 +1151,7 @@ QByteArray &QByteArray::operator=(const char *str)
\sa indexOf(), count()
*/
-/*! \fn QBool QByteArray::contains(const char *str) const
+/*! \fn bool QByteArray::contains(const char *str) const
\overload
@@ -1159,7 +1159,7 @@ QByteArray &QByteArray::operator=(const char *str)
otherwise returns false.
*/
-/*! \fn QBool QByteArray::contains(char ch) const
+/*! \fn bool QByteArray::contains(char ch) const
\overload
@@ -2660,7 +2660,7 @@ QByteArray QByteArray::right(int len) const
QByteArray QByteArray::mid(int pos, int len) const
{
- if (d == &shared_null.ba || d == &shared_empty.ba || pos >= d->size)
+ if (d == &shared_null.ba || d == &shared_empty.ba || pos > d->size)
return QByteArray();
if (len < 0)
len = d->size - pos;
diff --git a/src/corelib/tools/qbytearray.h b/src/corelib/tools/qbytearray.h
index bf75ef6ead..5efeb6025e 100644
--- a/src/corelib/tools/qbytearray.h
+++ b/src/corelib/tools/qbytearray.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -68,7 +68,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
/*****************************************************************************
Safe and portable C string functions; extensions to standard string.h
@@ -232,9 +231,9 @@ public:
int lastIndexOf(const char *c, int from = -1) const;
int lastIndexOf(const QByteArray &a, int from = -1) const;
- QBool contains(char c) const;
- QBool contains(const char *a) const;
- QBool contains(const QByteArray &a) const;
+ bool contains(char c) const;
+ bool contains(const char *a) const;
+ bool contains(const QByteArray &a) const;
int count(char c) const;
int count(const char *a) const;
int count(const QByteArray &a) const;
@@ -524,10 +523,10 @@ inline void QByteArray::push_front(const char *c)
{ prepend(c); }
inline void QByteArray::push_front(const QByteArray &a)
{ prepend(a); }
-inline QBool QByteArray::contains(const QByteArray &a) const
-{ return QBool(indexOf(a) != -1); }
-inline QBool QByteArray::contains(char c) const
-{ return QBool(indexOf(c) != -1); }
+inline bool QByteArray::contains(const QByteArray &a) const
+{ return indexOf(a) != -1; }
+inline bool QByteArray::contains(char c) const
+{ return indexOf(c) != -1; }
inline bool operator==(const QByteArray &a1, const QByteArray &a2)
{ return (a1.size() == a2.size()) && (memcmp(a1.constData(), a2.constData(), a1.size())==0); }
inline bool operator==(const QByteArray &a1, const char *a2)
@@ -576,8 +575,8 @@ inline const QByteArray operator+(const char *a1, const QByteArray &a2)
inline const QByteArray operator+(char a1, const QByteArray &a2)
{ return QByteArray(&a1, 1) += a2; }
#endif // QT_USE_QSTRINGBUILDER
-inline QBool QByteArray::contains(const char *c) const
-{ return QBool(indexOf(c) != -1); }
+inline bool QByteArray::contains(const char *c) const
+{ return indexOf(c) != -1; }
inline QByteArray &QByteArray::replace(char before, const char *c)
{ return replace(&before, 1, c, qstrlen(c)); }
inline QByteArray &QByteArray::replace(const QByteArray &before, const char *c)
diff --git a/src/corelib/tools/qbytearraymatcher.cpp b/src/corelib/tools/qbytearraymatcher.cpp
index fbe54fb9b3..a635db0a15 100644
--- a/src/corelib/tools/qbytearraymatcher.cpp
+++ b/src/corelib/tools/qbytearraymatcher.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qbytearraymatcher.h b/src/corelib/tools/qbytearraymatcher.h
index 9acfa0d581..f95cc98163 100644
--- a/src/corelib/tools/qbytearraymatcher.h
+++ b/src/corelib/tools/qbytearraymatcher.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QByteArrayMatcherPrivate;
diff --git a/src/corelib/tools/qbytedata_p.h b/src/corelib/tools/qbytedata_p.h
index 2708df3d52..763b71c8f3 100644
--- a/src/corelib/tools/qbytedata_p.h
+++ b/src/corelib/tools/qbytedata_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qcache.h b/src/corelib/tools/qcache.h
index fc5b8a0a9f..7fe1921804 100644
--- a/src/corelib/tools/qcache.h
+++ b/src/corelib/tools/qcache.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
template <class Key, class T>
class QCache
diff --git a/src/corelib/tools/qcache.qdoc b/src/corelib/tools/qcache.qdoc
index 9c8aef15df..80d47ff703 100644
--- a/src/corelib/tools/qcache.qdoc
+++ b/src/corelib/tools/qcache.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qchar.cpp b/src/corelib/tools/qchar.cpp
index 5109bf22a4..01241dce6b 100644
--- a/src/corelib/tools/qchar.cpp
+++ b/src/corelib/tools/qchar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qchar.h b/src/corelib/tools/qchar.h
index 0e02d109f6..df3d7eac33 100644
--- a/src/corelib/tools/qchar.h
+++ b/src/corelib/tools/qchar.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QString;
diff --git a/src/corelib/tools/qcontainerfwd.h b/src/corelib/tools/qcontainerfwd.h
index 51ba07d856..c949b230f8 100644
--- a/src/corelib/tools/qcontainerfwd.h
+++ b/src/corelib/tools/qcontainerfwd.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
template <class Key, class T> class QCache;
template <class Key, class T> class QHash;
diff --git a/src/corelib/tools/qcontiguouscache.cpp b/src/corelib/tools/qcontiguouscache.cpp
index 29601149e4..6a320b82eb 100644
--- a/src/corelib/tools/qcontiguouscache.cpp
+++ b/src/corelib/tools/qcontiguouscache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qcontiguouscache.h b/src/corelib/tools/qcontiguouscache.h
index 3c43b3abe7..4dc763f35d 100644
--- a/src/corelib/tools/qcontiguouscache.h
+++ b/src/corelib/tools/qcontiguouscache.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
#undef QT_QCONTIGUOUSCACHE_DEBUG
-QT_MODULE(Core)
struct Q_CORE_EXPORT QContiguousCacheData
diff --git a/src/corelib/tools/qcryptographichash.cpp b/src/corelib/tools/qcryptographichash.cpp
index 350c785e8b..164660f818 100644
--- a/src/corelib/tools/qcryptographichash.cpp
+++ b/src/corelib/tools/qcryptographichash.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,16 +34,13 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <qcryptographichash.h>
-#ifdef Q_OS_SYMBIAN
-#define _MD5_H_ // Needed to disable system header
-#endif
-
#include "../../3rdparty/md5/md5.h"
#include "../../3rdparty/md5/md5.cpp"
#include "../../3rdparty/md4/md4.h"
diff --git a/src/corelib/tools/qcryptographichash.h b/src/corelib/tools/qcryptographichash.h
index 64d54838fa..59314e1963 100644
--- a/src/corelib/tools/qcryptographichash.h
+++ b/src/corelib/tools/qcryptographichash.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QCryptographicHashPrivate;
class QIODevice;
diff --git a/src/corelib/tools/qdatetime.cpp b/src/corelib/tools/qdatetime.cpp
index d20b07589e..3da7a37066 100644
--- a/src/corelib/tools/qdatetime.cpp
+++ b/src/corelib/tools/qdatetime.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,16 +48,16 @@
#include "qdatetime.h"
#include "qregexp.h"
#include "qdebug.h"
-#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
-#include <qt_windows.h>
-#endif
#ifndef Q_OS_WIN
#include <locale.h>
#endif
#include <time.h>
-#if defined(Q_OS_WINCE)
-#include "qfunctions_wince.h"
+#ifdef Q_OS_WIN
+# include <qt_windows.h>
+# ifdef Q_OS_WINCE
+# include "qfunctions_wince.h"
+# endif
#endif
//#define QDATETIMEPARSER_DEBUG
@@ -73,23 +73,16 @@
#include <private/qcore_mac_p.h>
#endif
-#if defined(Q_OS_SYMBIAN)
-#include <e32std.h>
-#endif
-
QT_BEGIN_NAMESPACE
enum {
- FIRST_YEAR = -4713,
- FIRST_MONTH = 1,
- FIRST_DAY = 2, // ### Qt 5: make FIRST_DAY = 1, by support jd == 0 as valid
SECS_PER_DAY = 86400,
MSECS_PER_DAY = 86400000,
SECS_PER_HOUR = 3600,
MSECS_PER_HOUR = 3600000,
SECS_PER_MIN = 60,
MSECS_PER_MIN = 60000,
- JULIAN_DAY_FOR_EPOCH = 2440588 // result of julianDayFromGregorianDate(1970, 1, 1)
+ JULIAN_DAY_FOR_EPOCH = 2440588 // result of julianDayFromDate(1970, 1, 1)
};
static inline QDate fixedDate(int y, int m, int d)
@@ -99,67 +92,41 @@ static inline QDate fixedDate(int y, int m, int d)
return result;
}
-static inline uint julianDayFromGregorianDate(int year, int month, int day)
+static inline qint64 julianDayFromDate(qint64 year, int month, int day)
{
- // Gregorian calendar starting from October 15, 1582
+ // Gregorian calendar
// Algorithm from Henry F. Fliegel and Thomas C. Van Flandern
- return (1461 * (year + 4800 + (month - 14) / 12)) / 4
- + (367 * (month - 2 - 12 * ((month - 14) / 12))) / 12
- - (3 * ((year + 4900 + (month - 14) / 12) / 100)) / 4
- + day - 32075;
-}
-static uint julianDayFromDate(int year, int month, int day)
-{
if (year < 0)
++year;
- if (year > 1582 || (year == 1582 && (month > 10 || (month == 10 && day >= 15)))) {
- return julianDayFromGregorianDate(year, month, day);
- } else if (year < 1582 || (year == 1582 && (month < 10 || (month == 10 && day <= 4)))) {
- // Julian calendar until October 4, 1582
- // Algorithm from Frequently Asked Questions about Calendars by Claus Toendering
- int a = (14 - month) / 12;
- return (153 * (month + (12 * a) - 3) + 2) / 5
- + (1461 * (year + 4800 - a)) / 4
- + day - 32083;
- } else {
- // the day following October 4, 1582 is October 15, 1582
- return 0;
- }
+ return (1461 * (year + 4800 + (month - 14) / 12)) / 4
+ + (367 * (month - 2 - 12 * ((month - 14) / 12))) / 12
+ - (3 * ((year + 4900 + (month - 14) / 12) / 100)) / 4
+ + day - 32075;
}
-static void getDateFromJulianDay(uint julianDay, int *year, int *month, int *day)
+static void getDateFromJulianDay(qint64 julianDay, int *year, int *month, int *day)
{
int y, m, d;
- if (julianDay >= 2299161) {
- // Gregorian calendar starting from October 15, 1582
- // This algorithm is from Henry F. Fliegel and Thomas C. Van Flandern
- qulonglong ell, n, i, j;
- ell = qulonglong(julianDay) + 68569;
- n = (4 * ell) / 146097;
- ell = ell - (146097 * n + 3) / 4;
- i = (4000 * (ell + 1)) / 1461001;
- ell = ell - (1461 * i) / 4 + 31;
- j = (80 * ell) / 2447;
- d = ell - (2447 * j) / 80;
- ell = j / 11;
- m = j + 2 - (12 * ell);
- y = 100 * (n - 49) + i + ell;
- } else {
- // Julian calendar until October 4, 1582
- // Algorithm from Frequently Asked Questions about Calendars by Claus Toendering
- julianDay += 32082;
- int dd = (4 * julianDay + 3) / 1461;
- int ee = julianDay - (1461 * dd) / 4;
- int mm = ((5 * ee) + 2) / 153;
- d = ee - (153 * mm + 2) / 5 + 1;
- m = mm + 3 - 12 * (mm / 10);
- y = dd - 4800 + (mm / 10);
- if (y <= 0)
- --y;
- }
+ // Gregorian calendar
+ // This algorithm is from Henry F. Fliegel and Thomas C. Van Flandern
+ qint64 ell, n, i, j; //TODO These will need to be bigger to prevent overflow!!!
+ ell = julianDay + 68569;
+ n = (4 * ell) / 146097;
+ ell = ell - (146097 * n + 3) / 4;
+ i = (4000 * (ell + 1)) / 1461001;
+ ell = ell - (1461 * i) / 4 + 31;
+ j = (80 * ell) / 2447;
+ d = ell - (2447 * j) / 80;
+ ell = j / 11;
+ m = j + 2 - (12 * ell);
+ y = 100 * (n - 49) + i + ell;
+
+ if (y<= 0)
+ --y;
+
if (year)
*year = y;
if (month)
@@ -205,12 +172,10 @@ static QString fmtDateTime(const QString& f, const QTime* dt = 0, const QDate* d
A QDate object contains a calendar date, i.e. year, month, and day
- numbers, in the Gregorian calendar. (see \l{QDate G and J} {Use of
- Gregorian and Julian Calendars} for dates prior to 15 October
- 1582). It can read the current date from the system clock. It
- provides functions for comparing dates, and for manipulating
- dates. For example, it is possible to add and subtract days,
- months, and years to dates.
+ numbers, in the Gregorian calendar. It can read the current date
+ from the system clock. It provides functions for comparing dates,
+ and for manipulating dates. For example, it is possible to add
+ and subtract days, months, and years to dates.
A QDate object is typically created either by giving the year,
month, and day numbers explicitly. Note that QDate interprets two
@@ -241,40 +206,31 @@ static QString fmtDateTime(const QString& f, const QTime* dt = 0, const QDate* d
\section1
- \target QDate G and J
- \section2 Use of Gregorian and Julian Calendars
-
- QDate uses the Gregorian calendar in all locales, beginning
- on the date 15 October 1582. For dates up to and including 4
- October 1582, the Julian calendar is used. This means there is a
- 10-day gap in the internal calendar between the 4th and the 15th
- of October 1582. When you use QDateTime for dates in that epoch,
- the day after 4 October 1582 is 15 October 1582, and the dates in
- the gap are invalid.
-
- The Julian to Gregorian changeover date used here is the date when
- the Gregorian calendar was first introduced, by Pope Gregory
- XIII. That change was not universally accepted and some localities
- only executed it at a later date (if at all). QDateTime
- doesn't take any of these historical facts into account. If an
- application must support a locale-specific dating system, it must
- do so on its own, remembering to convert the dates using the
- Julian day.
-
\section2 No Year 0
There is no year 0. Dates in that year are considered invalid. The
year -1 is the year "1 before Christ" or "1 before current era."
- The day before 0001-01-01 is December 31st, 1 BCE.
+ The day before 1 January 1 CE is 31 December 1 BCE.
\section2 Range of Valid Dates
- The range of valid dates is from January 2nd, 4713 BCE, to
- sometime in the year 11 million CE. The Julian Day returned by
- QDate::toJulianDay() is a number in the contiguous range from 1 to
- \e{overflow}, even across QDateTime's "date holes". It is suitable
- for use in applications that must convert a QDateTime to a date in
- another calendar system, e.g., Hebrew, Islamic or Chinese.
+ Dates are stored internally as a Julian Day number, an interger count of
+ every day in a contiguous range, with 24 November 4714 BCE in the Gregorian
+ calendar being Julian Day 0 (1 January 4713 BCE in the Julian calendar).
+ As well as being an efficient and accurate way of storing an absolute date,
+ it is suitable for converting a Date into other calendar systems such as
+ Hebrew, Islamic or Chinese. The Julian Day number can be obtained using
+ QDate::toJulianDay() and can be set using QDate::fromJulianDay().
+
+ The range of dates able to be stored by QDate as a Julian Day number is
+ limited for convenience from std::numeric_limits<qint64>::min() / 2 to
+ std::numeric_limits<qint64>::max() / 2, which on most platforms means
+ from around 2.5 quadrillion BCE to around 2.5 quadrillion CE, effectively
+ covering the full range of astronomical time. The range of Julian Days
+ able to be accurately converted to and from valid YMD form Dates is
+ restricted to 1 January 4800 BCE to 31 December 1400000 CE due to
+ shortcomings in the available conversion formulas. Conversions outside this
+ range are not guaranteed to be correct. This may change in the future.
\sa QTime, QDateTime, QDateEdit, QDateTimeEdit, QCalendarWidget
*/
@@ -291,8 +247,7 @@ static QString fmtDateTime(const QString& f, const QTime* dt = 0, const QDate* d
Constructs a date with year \a y, month \a m and day \a d.
If the specified date is invalid, the date is not set and
- isValid() returns false. A date before 2 January 4713 B.C. is
- considered invalid.
+ isValid() returns false.
\warning Years 0 to 99 are interpreted as is, i.e., years
0-99.
@@ -319,26 +274,28 @@ QDate::QDate(int y, int m, int d)
/*!
+ \fn bool isValid() const
+
Returns true if this date is valid; otherwise returns false.
\sa isNull()
*/
-bool QDate::isValid() const
-{
- return !isNull();
-}
-
/*!
Returns the year of this date. Negative numbers indicate years
- before 1 A.D. = 1 C.E., such that year -44 is 44 B.C.
+ before 1 CE, such that year -44 is 44 BCE.
+
+ Returns 0 if the date is invalid.
\sa month(), day()
*/
int QDate::year() const
{
+ if (isNull())
+ return 0;
+
int y;
getDateFromJulianDay(jd, &y, 0, 0);
return y;
@@ -363,11 +320,16 @@ int QDate::year() const
\i 12 = "December"
\endlist
+ Returns 0 if the date is invalid.
+
\sa year(), day()
*/
int QDate::month() const
{
+ if (isNull())
+ return 0;
+
int m;
getDateFromJulianDay(jd, 0, &m, 0);
return m;
@@ -376,51 +338,76 @@ int QDate::month() const
/*!
Returns the day of the month (1 to 31) of this date.
+ Returns 0 if the date is invalid.
+
\sa year(), month(), dayOfWeek()
*/
int QDate::day() const
{
+ if (isNull())
+ return 0;
+
int d;
getDateFromJulianDay(jd, 0, 0, &d);
return d;
}
/*!
- Returns the weekday (1 to 7) for this date.
+ Returns the weekday (1 = Monday to 7 = Sunday) for this date.
+
+ Returns 0 if the date is invalid.
\sa day(), dayOfYear(), Qt::DayOfWeek
*/
int QDate::dayOfWeek() const
{
- return (jd % 7) + 1;
+ if (isNull())
+ return 0;
+
+ if (jd >= 0)
+ return (jd % 7) + 1;
+ else
+ return ((jd + 1) % 7) + 7;
}
/*!
Returns the day of the year (1 to 365 or 366 on leap years) for
this date.
+ Returns 0 if the date is invalid.
+
\sa day(), dayOfWeek()
*/
int QDate::dayOfYear() const
{
+ if (isNull())
+ return 0;
+
return jd - julianDayFromDate(year(), 1, 1) + 1;
}
/*!
Returns the number of days in the month (28 to 31) for this date.
+ Returns 0 if the date is invalid.
+
\sa day(), daysInYear()
*/
int QDate::daysInMonth() const
{
- int y, m, d;
- getDateFromJulianDay(jd, &y, &m, &d);
+ if (isNull())
+ return 0;
+
+ int y, m;
+ getDateFromJulianDay(jd, &y, &m, 0);
if (m == 2 && isLeapYear(y))
return 29;
+ else if (m < 1 || m > 12)
+ return 0;
else
return monthDays[m];
}
@@ -428,13 +415,18 @@ int QDate::daysInMonth() const
/*!
Returns the number of days in the year (365 or 366) for this date.
+ Returns 0 if the date is invalid.
+
\sa day(), daysInMonth()
*/
int QDate::daysInYear() const
{
- int y, m, d;
- getDateFromJulianDay(jd, &y, &m, &d);
+ if (isNull())
+ return 0;
+
+ int y;
+ getDateFromJulianDay(jd, &y, 0, 0);
return isLeapYear(y) ? 366 : 365;
}
@@ -546,14 +538,16 @@ int QDate::weekNumber(int *yearNumber) const
The month names will be localized according to the system's locale
settings.
+ Returns an empty string if the date is invalid.
+
\sa toString(), longMonthName(), shortDayName(), longDayName()
*/
QString QDate::shortMonthName(int month, QDate::MonthNameType type)
{
- if (month < 1 || month > 12) {
- month = 1;
- }
+ if (month < 1 || month > 12)
+ return QString();
+
switch (type) {
case QDate::DateFormat:
return QLocale::system().monthName(month, QLocale::ShortFormat);
@@ -591,14 +585,16 @@ QString QDate::shortMonthName(int month, QDate::MonthNameType type)
The month names will be localized according to the system's locale
settings.
+ Returns an empty string if the date is invalid.
+
\sa toString(), shortMonthName(), shortDayName(), longDayName()
*/
QString QDate::longMonthName(int month, MonthNameType type)
{
- if (month < 1 || month > 12) {
- month = 1;
- }
+ if (month < 1 || month > 12)
+ return QString();
+
switch (type) {
case QDate::DateFormat:
return QLocale::system().monthName(month, QLocale::LongFormat);
@@ -631,14 +627,16 @@ QString QDate::longMonthName(int month, MonthNameType type)
The day names will be localized according to the system's locale
settings.
+ Returns an empty string if the date is invalid.
+
\sa toString(), shortMonthName(), longMonthName(), longDayName()
*/
QString QDate::shortDayName(int weekday, MonthNameType type)
{
- if (weekday < 1 || weekday > 7) {
- weekday = 1;
- }
+ if (weekday < 1 || weekday > 7)
+ return QString();
+
switch (type) {
case QDate::DateFormat:
return QLocale::system().dayName(weekday, QLocale::ShortFormat);
@@ -671,14 +669,16 @@ QString QDate::shortDayName(int weekday, MonthNameType type)
The day names will be localized according to the system's locale
settings.
+ Returns an empty string if the date is invalid.
+
\sa toString(), shortDayName(), shortMonthName(), longMonthName()
*/
QString QDate::longDayName(int weekday, MonthNameType type)
{
- if (weekday < 1 || weekday > 7) {
- weekday = 1;
- }
+ if (weekday < 1 || weekday > 7)
+ return QString();
+
switch (type) {
case QDate::DateFormat:
return QLocale::system().dayName(weekday, QLocale::LongFormat);
@@ -836,7 +836,9 @@ QString QDate::toString(const QString& format) const
#endif //QT_NO_DATESTRING
/*!
- \obsolete
+ \fn bool setYMD(int y, int m, int d)
+
+ \deprecated in 5.0, use setDate() instead.
Sets the date's year \a y, month \a m, and day \a d.
@@ -846,13 +848,6 @@ QString QDate::toString(const QString& format) const
Use setDate() instead.
*/
-bool QDate::setYMD(int y, int m, int d)
-{
- if (uint(y) <= 99)
- y += 1900;
- return setDate(y, m, d);
-}
-
/*!
\since 4.2
@@ -860,19 +855,21 @@ bool QDate::setYMD(int y, int m, int d)
the date is valid; otherwise returns false.
If the specified date is invalid, the QDate object is set to be
- invalid. Any date before 2 January 4713 B.C. is considered
invalid.
+ Note that any date before 4800 BCE or after about 1.4 million CE
+ may not be accurately stored.
+
\sa isValid()
*/
bool QDate::setDate(int year, int month, int day)
{
- if (!isValid(year, month, day)) {
- jd = 0;
- } else {
+ if (isValid(year, month, day))
jd = julianDayFromDate(year, month, day);
- }
- return jd != 0;
+ else
+ jd = nullJd();
+
+ return isValid();
}
/*!
@@ -881,28 +878,55 @@ bool QDate::setDate(int year, int month, int day)
Extracts the date's year, month, and day, and assigns them to
*\a year, *\a month, and *\a day. The pointers may be null.
+ Returns 0 if the date is invalid.
+
+ Note that any date before 4800 BCE or after about 1.4 million CE
+ may not be accurately stored.
+
\sa year(), month(), day(), isValid()
*/
void QDate::getDate(int *year, int *month, int *day)
{
- getDateFromJulianDay(jd, year, month, day);
+ if (isValid()) {
+ getDateFromJulianDay(jd, year, month, day);
+ } else {
+ if (year)
+ *year = 0;
+ if (month)
+ *month = 0;
+ if (day)
+ *day = 0;
+ }
}
/*!
Returns a QDate object containing a date \a ndays later than the
date of this object (or earlier if \a ndays is negative).
+ Returns a null date if the current date is invalid or the new date is
+ out-of-range.
+
\sa addMonths() addYears() daysTo()
*/
-QDate QDate::addDays(int ndays) const
+QDate QDate::addDays(qint64 ndays) const
{
+ if (isNull())
+ return QDate();
+
QDate d;
+ quint64 diff = 0;
+
// this is basically "d.jd = jd + ndays" with checks for integer overflow
+ // Due to limits on minJd() and maxJd() we know diff will never overflow
if (ndays >= 0)
- d.jd = (jd + ndays >= jd) ? jd + ndays : 0;
+ diff = maxJd() - jd;
else
- d.jd = (jd + ndays < jd) ? jd + ndays : 0;
+ diff = jd - minJd();
+
+ if (abs(ndays) <= diff)
+ d.jd = jd + ndays;
+
return d;
}
@@ -914,11 +938,6 @@ QDate QDate::addDays(int ndays) const
resulting month/year, this function will return a date that is the
latest valid date.
- \warning QDate has a date hole around the days introducing the
- Gregorian calendar (the days 5 to 14 October 1582, inclusive, do
- not exist). If the calculation ends in one of those days, QDate
- will return either October 4 or October 15.
-
\sa addDays() addYears()
*/
@@ -968,10 +987,6 @@ QDate QDate::addMonths(int nmonths) const
// yes, adjust the date by +1 or -1 years
y += increasing ? +1 : -1;
- // did we end up in the Gregorian/Julian conversion hole?
- if (y == 1582 && m == 10 && d > 4 && d < 15)
- d = increasing ? 15 : 4;
-
return fixedDate(y, m, d);
}
@@ -1011,14 +1026,20 @@ QDate QDate::addYears(int nyears) const
Returns the number of days from this date to \a d (which is
negative if \a d is earlier than this date).
+ Returns 0 if either date is invalid.
+
Example:
\snippet doc/src/snippets/code/src_corelib_tools_qdatetime.cpp 0
\sa addDays()
*/
-int QDate::daysTo(const QDate &d) const
+qint64 QDate::daysTo(const QDate &d) const
{
+ if (isNull() || d.isNull())
+ return 0;
+
+ // Due to limits on minJd() and maxJd() we know this will never overflow
return d.jd - jd;
}
@@ -1255,17 +1276,10 @@ QDate QDate::fromString(const QString &string, const QString &format)
bool QDate::isValid(int year, int month, int day)
{
- if (year < FIRST_YEAR
- || (year == FIRST_YEAR &&
- (month < FIRST_MONTH
- || (month == FIRST_MONTH && day < FIRST_DAY)))
- || year == 0) // there is no year 0 in the Julian calendar
+ // there is no year 0 in the Gregorian calendar
+ if (year == 0)
return false;
- // passage from Julian to Gregorian calendar
- if (year == 1582 && month == 10 && day > 4 && day < 15)
- return 0;
-
return (day > 0 && month > 0 && month <= 12) &&
(day <= monthDays[month] || (day == 29 && month == 2 && isLeapYear(year)));
}
@@ -1279,14 +1293,11 @@ bool QDate::isValid(int year, int month, int day)
bool QDate::isLeapYear(int y)
{
- if (y < 1582) {
- if ( y < 1) { // No year 0 in Julian calendar, so -1, -5, -9 etc are leap years
- ++y;
- }
- return y % 4 == 0;
- } else {
- return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;
- }
+ // No year 0 in Gregorian calendar, so -1, -5, -9 etc are leap years
+ if ( y < 1)
+ ++y;
+
+ return (y % 4 == 0 && y % 100 != 0) || y % 400 == 0;
}
/*! \fn static QDate QDate::fromJulianDay(int jd)
@@ -1403,44 +1414,64 @@ bool QTime::isValid() const
/*!
Returns the hour part (0 to 23) of the time.
+ Returns -1 if the time is invalid.
+
\sa minute(), second(), msec()
*/
int QTime::hour() const
{
+ if (!isValid())
+ return -1;
+
return ds() / MSECS_PER_HOUR;
}
/*!
Returns the minute part (0 to 59) of the time.
+ Returns -1 if the time is invalid.
+
\sa hour(), second(), msec()
*/
int QTime::minute() const
{
+ if (!isValid())
+ return -1;
+
return (ds() % MSECS_PER_HOUR) / MSECS_PER_MIN;
}
/*!
Returns the second part (0 to 59) of the time.
+ Returns -1 if the time is invalid.
+
\sa hour(), minute(), msec()
*/
int QTime::second() const
{
+ if (!isValid())
+ return -1;
+
return (ds() / 1000)%SECS_PER_MIN;
}
/*!
Returns the millisecond part (0 to 999) of the time.
+ Returns -1 if the time is invalid.
+
\sa hour(), minute(), second()
*/
int QTime::msec() const
{
+ if (!isValid())
+ return -1;
+
return ds() % 1000;
}
@@ -1588,6 +1619,8 @@ bool QTime::setHMS(int h, int m, int s, int ms)
Note that the time will wrap if it passes midnight.
+ Returns a null time if this time is invalid.
+
Example:
\snippet doc/src/snippets/code/src_corelib_tools_qdatetime.cpp 5
@@ -1610,11 +1643,16 @@ QTime QTime::addSecs(int s) const
secsTo() does not take into account any milliseconds.
+ Returns 0 if either time is invalid.
+
\sa addSecs(), QDateTime::secsTo()
*/
int QTime::secsTo(const QTime &t) const
{
+ if (!isValid() || !t.isValid())
+ return 0;
+
return (t.ds() - ds()) / 1000;
}
@@ -1625,18 +1663,22 @@ int QTime::secsTo(const QTime &t) const
Note that the time will wrap if it passes midnight. See addSecs()
for an example.
+ Returns a null time if this time is invalid.
+
\sa addSecs(), msecsTo(), QDateTime::addMSecs()
*/
QTime QTime::addMSecs(int ms) const
{
QTime t;
- if (ms < 0) {
- // % not well-defined for -ve, but / is.
- int negdays = (MSECS_PER_DAY - ms) / MSECS_PER_DAY;
- t.mds = (ds() + ms + negdays * MSECS_PER_DAY) % MSECS_PER_DAY;
- } else {
- t.mds = (ds() + ms) % MSECS_PER_DAY;
+ if (isValid()) {
+ if (ms < 0) {
+ // % not well-defined for -ve, but / is.
+ int negdays = (MSECS_PER_DAY - ms) / MSECS_PER_DAY;
+ t.mds = (ds() + ms + negdays * MSECS_PER_DAY) % MSECS_PER_DAY;
+ } else {
+ t.mds = (ds() + ms) % MSECS_PER_DAY;
+ }
}
#if defined(Q_OS_WINCE)
if (startTick > NullTime)
@@ -1654,11 +1696,15 @@ QTime QTime::addMSecs(int ms) const
seconds in a day, the result is always between -86400000 and
86400000 ms.
+ Returns 0 if either time is invalid.
+
\sa secsTo(), addMSecs(), QDateTime::msecsTo()
*/
int QTime::msecsTo(const QTime &t) const
{
+ if (!isValid() || !t.isValid())
+ return 0;
#if defined(Q_OS_WINCE)
// GetLocalTime() for Windows CE has no milliseconds resolution
if (t.startTick > NullTime && startTick > NullTime)
@@ -1979,50 +2025,31 @@ int QTime::elapsed() const
\section1
- \target QDateTime G and J
- \section2 Use of Gregorian and Julian Calendars
-
- QDate uses the Gregorian calendar in all locales, beginning
- on the date 15 October 1582. For dates up to and including 4
- October 1582, the Julian calendar is used. This means there is a
- 10-day gap in the internal calendar between the 4th and the 15th
- of October 1582. When you use QDateTime for dates in that epoch,
- the day after 4 October 1582 is 15 October 1582, and the dates in
- the gap are invalid.
-
- The Julian to Gregorian changeover date used here is the date when
- the Gregorian calendar was first introduced, by Pope Gregory
- XIII. That change was not universally accepted and some localities
- only executed it at a later date (if at all). QDateTime
- doesn't take any of these historical facts into account. If an
- application must support a locale-specific dating system, it must
- do so on its own, remembering to convert the dates using the
- Julian day.
-
\section2 No Year 0
There is no year 0. Dates in that year are considered invalid. The
year -1 is the year "1 before Christ" or "1 before current era."
- The day before 0001-01-01 is December 31st, 1 BCE.
+ The day before 1 January 1 CE is 31 December 1 BCE.
\section2 Range of Valid Dates
- The range of valid dates is from January 2nd, 4713 BCE, to
- sometime in the year 11 million CE. The Julian Day returned by
- QDate::toJulianDay() is a number in the contiguous range from 1 to
- \e{overflow}, even across QDateTime's "date holes". It is suitable
- for use in applications that must convert a QDateTime to a date in
- another calendar system, e.g., Hebrew, Islamic or Chinese.
-
- The Gregorian calendar was introduced in different places around
- the world on different dates. QDateTime uses QDate to store the
- date, so it uses the Gregorian calendar for all locales, beginning
- on the date 15 October 1582. For dates up to and including 4
- October 1582, QDateTime uses the Julian calendar. This means
- there is a 10-day gap in the QDateTime calendar between the 4th
- and the 15th of October 1582. When you use QDateTime for dates in
- that epoch, the day after 4 October 1582 is 15 October 1582, and
- the dates in the gap are invalid.
+ Dates are stored internally as a Julian Day number, an interger count of
+ every day in a contiguous range, with 24 November 4714 BCE in the Gregorian
+ calendar being Julian Day 0 (1 January 4713 BCE in the Julian calendar).
+ As well as being an efficient and accurate way of storing an absolute date,
+ it is suitable for converting a Date into other calendar systems such as
+ Hebrew, Islamic or Chinese. The Julian Day number can be obtained using
+ QDate::toJulianDay() and can be set using QDate::fromJulianDay().
+
+ The range of dates able to be stored by QDate as a Julian Day number is
+ limited for convenience from std::numeric_limits<qint64>::min() / 2 to
+ std::numeric_limits<qint64>::max() / 2, which on most platforms means
+ from around 2.5 quadrillion BCE to around 2.5 quadrillion CE, effectively
+ covering the full range of astronomical time. The range of Julian Days
+ able to be accurately converted to and from valid YMD form Dates is
+ restricted to 1 January 4800 BCE to 31 December 1400000 CE due to
+ shortcomings in the available conversion formulas. Conversions outside this
+ range are not guaranteed to be correct. This may change in the future.
\section2
Use of System Timezone
@@ -2269,7 +2296,7 @@ qint64 QDateTime::toMSecsSinceEpoch() const
QTime utcTime;
d->getUTC(utcDate, utcTime);
- return toMSecsSinceEpoch_helper(utcDate.jd, utcTime.ds());
+ return toMSecsSinceEpoch_helper(utcDate.toJulianDay(), QTime(0, 0, 0).msecsTo(utcTime));
}
/*!
@@ -2331,7 +2358,7 @@ void QDateTime::setMSecsSinceEpoch(qint64 msecs)
}
d->date = QDate(1970, 1, 1).addDays(ddays);
- d->time = QTime().addMSecs(msecs);
+ d->time = QTime(0, 0, 0).addMSecs(msecs);
d->spec = QDateTimePrivate::UTC;
if (oldSpec != QDateTimePrivate::UTC)
@@ -2356,7 +2383,7 @@ void QDateTime::setTime_t(uint secsSince1Jan1970UTC)
QDateTimePrivate::Spec oldSpec = d->spec;
d->date = QDate(1970, 1, 1).addDays(secsSince1Jan1970UTC / SECS_PER_DAY);
- d->time = QTime().addSecs(secsSince1Jan1970UTC % SECS_PER_DAY);
+ d->time = QTime(0, 0, 0).addSecs(secsSince1Jan1970UTC % SECS_PER_DAY);
d->spec = QDateTimePrivate::UTC;
if (oldSpec != QDateTimePrivate::UTC)
@@ -2563,7 +2590,7 @@ QString QDateTime::toString(const QString& format) const
\sa daysTo(), addMonths(), addYears(), addSecs()
*/
-QDateTime QDateTime::addDays(int ndays) const
+QDateTime QDateTime::addDays(qint64 ndays) const
{
return QDateTime(d->date.addDays(ndays), d->time, timeSpec());
}
@@ -2614,8 +2641,8 @@ QDateTime QDateTimePrivate::addMSecs(const QDateTime &dt, qint64 msecs)
*/
void QDateTimePrivate::addMSecs(QDate &utcDate, QTime &utcTime, qint64 msecs)
{
- uint dd = utcDate.jd;
- int tt = utcTime.ds();
+ qint64 dd = utcDate.toJulianDay();
+ int tt = QTime(0, 0, 0).msecsTo(utcTime);
int sign = 1;
if (msecs < 0) {
msecs = -msecs;
@@ -2637,8 +2664,8 @@ void QDateTimePrivate::addMSecs(QDate &utcDate, QTime &utcTime, qint64 msecs)
tt = tt % MSECS_PER_DAY;
}
- utcDate.jd = dd;
- utcTime.mds = tt;
+ utcDate = QDate::fromJulianDay(dd);
+ utcTime = QTime(0, 0, 0).addMSecs(tt);
}
/*!
@@ -2674,7 +2701,7 @@ QDateTime QDateTime::addMSecs(qint64 msecs) const
\sa addDays(), secsTo(), msecsTo()
*/
-int QDateTime::daysTo(const QDateTime &other) const
+qint64 QDateTime::daysTo(const QDateTime &other) const
{
return d->date.daysTo(other.d->date);
}
@@ -2688,6 +2715,8 @@ int QDateTime::daysTo(const QDateTime &other) const
to Qt::UTC to ensure that the result is correct if one of the two
datetimes has daylight saving time (DST) and the other doesn't.
+ Returns 0 if either time is invalid.
+
Example:
\snippet doc/src/snippets/code/src_corelib_tools_qdatetime.cpp 11
@@ -2696,6 +2725,9 @@ int QDateTime::daysTo(const QDateTime &other) const
int QDateTime::secsTo(const QDateTime &other) const
{
+ if (!isValid() || !other.isValid())
+ return 0;
+
QDate date1, date2;
QTime time1, time2;
@@ -2714,11 +2746,16 @@ int QDateTime::secsTo(const QDateTime &other) const
to Qt::UTC to ensure that the result is correct if one of the two
datetimes has daylight saving time (DST) and the other doesn't.
+ Returns 0 if either time is null.
+
\sa addMSecs(), daysTo(), QTime::msecsTo()
*/
qint64 QDateTime::msecsTo(const QDateTime &other) const
{
+ if (!isValid() || !other.isValid())
+ return 0;
+
QDate selfDate;
QDate otherDate;
QTime selfTime;
@@ -2882,7 +2919,7 @@ QTime QTime::currentTime()
SYSTEMTIME st;
memset(&st, 0, sizeof(SYSTEMTIME));
GetLocalTime(&st);
- ct.mds = msecsFromDecomposed(st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
+ ct.setHMS(st.wHour, st.wMinute, st.wSecond, st.wMilliseconds);
#if defined(Q_OS_WINCE)
ct.startTick = GetTickCount() % MSECS_PER_DAY;
#endif
@@ -2922,78 +2959,8 @@ qint64 QDateTime::currentMSecsSinceEpoch()
GetSystemTime(&st);
return msecsFromDecomposed(st.wHour, st.wMinute, st.wSecond, st.wMilliseconds) +
- qint64(julianDayFromGregorianDate(st.wYear, st.wMonth, st.wDay)
- - julianDayFromGregorianDate(1970, 1, 1)) * Q_INT64_C(86400000);
-}
-
-#elif defined(Q_OS_SYMBIAN)
-QDate QDate::currentDate()
-{
- QDate d;
- TTime localTime;
- localTime.HomeTime();
- TDateTime localDateTime = localTime.DateTime();
- // months and days are zero indexed
- d.jd = julianDayFromDate(localDateTime.Year(), localDateTime.Month() + 1, localDateTime.Day() + 1 );
- return d;
-}
-
-QTime QTime::currentTime()
-{
- QTime ct;
- TTime localTime;
- localTime.HomeTime();
- TDateTime localDateTime = localTime.DateTime();
- ct.mds = msecsFromDecomposed(localDateTime.Hour(), localDateTime.Minute(),
- localDateTime.Second(), localDateTime.MicroSecond() / 1000);
- return ct;
-}
-
-QDateTime QDateTime::currentDateTime()
-{
- QDate d;
- QTime ct;
- TTime localTime;
- localTime.HomeTime();
- TDateTime localDateTime = localTime.DateTime();
- // months and days are zero indexed
- d.jd = julianDayFromDate(localDateTime.Year(), localDateTime.Month() + 1, localDateTime.Day() + 1);
- ct.mds = msecsFromDecomposed(localDateTime.Hour(), localDateTime.Minute(),
- localDateTime.Second(), localDateTime.MicroSecond() / 1000);
- return QDateTime(d, ct);
-}
-
-QDateTime QDateTime::currentDateTimeUtc()
-{
- QDate d;
- QTime ct;
- TTime gmTime;
- gmTime.UniversalTime();
- TDateTime gmtDateTime = gmTime.DateTime();
- // months and days are zero indexed
- d.jd = julianDayFromDate(gmtDateTime.Year(), gmtDateTime.Month() + 1, gmtDateTime.Day() + 1);
- ct.mds = msecsFromDecomposed(gmtDateTime.Hour(), gmtDateTime.Minute(),
- gmtDateTime.Second(), gmtDateTime.MicroSecond() / 1000);
- return QDateTime(d, ct, Qt::UTC);
-}
-
-qint64 QDateTime::currentMSecsSinceEpoch()
-{
- QDate d;
- QTime ct;
- TTime gmTime;
- gmTime.UniversalTime();
- TDateTime gmtDateTime = gmTime.DateTime();
-
- // according to the documentation, the value is:
- // "a date and time as a number of microseconds since midnight, January 1st, 0 AD nominal Gregorian"
- qint64 value = gmTime.Int64();
-
- // whereas 1970-01-01T00:00:00 is (in the same representation):
- // ((1970 * 365) + (1970 / 4) - (1970 / 100) + (1970 / 400) - 13) * 86400 * 1000000
- static const qint64 unixEpoch = Q_INT64_C(0xdcddb30f2f8000);
-
- return (value - unixEpoch) / 1000;
+ qint64(julianDayFromDate(st.wYear, st.wMonth, st.wDay)
+ - julianDayFromDate(1970, 1, 1)) * Q_INT64_C(86400000);
}
#elif defined(Q_OS_UNIX)
@@ -3544,7 +3511,7 @@ void QDateTime::detach()
QDataStream &operator<<(QDataStream &out, const QDate &date)
{
- return out << (quint32)(date.jd);
+ return out << (qint64)(date.jd);
}
/*!
@@ -3557,7 +3524,7 @@ QDataStream &operator<<(QDataStream &out, const QDate &date)
QDataStream &operator>>(QDataStream &in, QDate &date)
{
- quint32 jd;
+ qint64 jd;
in >> jd;
date.jd = jd;
return in;
@@ -3859,7 +3826,7 @@ static QDateTimePrivate::Spec utcToLocal(QDate &date, QTime &time)
QDate fakeDate = adjustDate(date);
// won't overflow because of fakeDate
- time_t secsSince1Jan1970UTC = toMSecsSinceEpoch_helper(fakeDate.toJulianDay(), QTime().msecsTo(time)) / 1000;
+ time_t secsSince1Jan1970UTC = toMSecsSinceEpoch_helper(fakeDate.toJulianDay(), QTime(0, 0, 0).msecsTo(time)) / 1000;
tm *brokenDown = 0;
#if defined(Q_OS_WINCE)
@@ -3877,27 +3844,6 @@ static QDateTimePrivate::Spec utcToLocal(QDate &date, QTime &time)
res.tm_mon = sysTime.wMonth - 1;
res.tm_year = sysTime.wYear - 1900;
brokenDown = &res;
-#elif defined(Q_OS_SYMBIAN)
- // months and days are zero index based
- _LIT(KUnixEpoch, "19700000:000000.000000");
- TTimeIntervalSeconds utcOffset = User::UTCOffset();
- TTimeIntervalSeconds tTimeIntervalSecsSince1Jan1970UTC(secsSince1Jan1970UTC);
- TTime epochTTime;
- TInt err = epochTTime.Set(KUnixEpoch);
- tm res;
- if(err == KErrNone) {
- TTime utcTTime = epochTTime + tTimeIntervalSecsSince1Jan1970UTC;
- utcTTime = utcTTime + utcOffset;
- TDateTime utcDateTime = utcTTime.DateTime();
- res.tm_sec = utcDateTime.Second();
- res.tm_min = utcDateTime.Minute();
- res.tm_hour = utcDateTime.Hour();
- res.tm_mday = utcDateTime.Day() + 1; // non-zero based index for tm struct
- res.tm_mon = utcDateTime.Month();
- res.tm_year = utcDateTime.Year() - 1900;
- res.tm_isdst = 0;
- brokenDown = &res;
- }
#elif !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS)
// use the reentrant version of localtime() where available
tzset();
@@ -3943,7 +3889,7 @@ static void localToUtc(QDate &date, QTime &time, int isdst)
localTM.tm_mon = fakeDate.month() - 1;
localTM.tm_year = fakeDate.year() - 1900;
localTM.tm_isdst = (int)isdst;
-#if defined(Q_OS_WINCE) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WINCE)
time_t secsSince1Jan1970UTC = (toMSecsSinceEpoch_helper(fakeDate.toJulianDay(), QTime().msecsTo(time)) / 1000);
#else
#if defined(Q_OS_WIN)
@@ -3968,27 +3914,6 @@ static void localToUtc(QDate &date, QTime &time, int isdst)
res.tm_year = sysTime.wYear - 1900;
res.tm_isdst = (int)isdst;
brokenDown = &res;
-#elif defined(Q_OS_SYMBIAN)
- // months and days are zero index based
- _LIT(KUnixEpoch, "19700000:000000.000000");
- TTimeIntervalSeconds utcOffset = TTimeIntervalSeconds(0 - User::UTCOffset().Int());
- TTimeIntervalSeconds tTimeIntervalSecsSince1Jan1970UTC(secsSince1Jan1970UTC);
- TTime epochTTime;
- TInt err = epochTTime.Set(KUnixEpoch);
- tm res;
- if(err == KErrNone) {
- TTime utcTTime = epochTTime + tTimeIntervalSecsSince1Jan1970UTC;
- utcTTime = utcTTime + utcOffset;
- TDateTime utcDateTime = utcTTime.DateTime();
- res.tm_sec = utcDateTime.Second();
- res.tm_min = utcDateTime.Minute();
- res.tm_hour = utcDateTime.Hour();
- res.tm_mday = utcDateTime.Day() + 1; // non-zero based index for tm struct
- res.tm_mon = utcDateTime.Month();
- res.tm_year = utcDateTime.Year() - 1900;
- res.tm_isdst = (int)isdst;
- brokenDown = &res;
- }
#elif !defined(QT_NO_THREAD) && defined(_POSIX_THREAD_SAFE_FUNCTIONS)
// use the reentrant version of gmtime() where available
tm res;
@@ -4772,7 +4697,7 @@ int QDateTimeParser::parseSection(const QDateTime &currentValue, int sectionInde
const int max = qMin(sectionmaxsize, sectiontextSize);
for (int digits = max; digits >= 1; --digits) {
digitsStr.truncate(digits);
- int tmp = (int)loc.toUInt(digitsStr, &ok, 10);
+ int tmp = (int)loc.toUInt(digitsStr, &ok);
if (ok && sn.type == Hour12Section) {
if (tmp > 12) {
tmp = -1;
@@ -5710,42 +5635,6 @@ bool operator==(const QDateTimeParser::SectionNode &s1, const QDateTimeParser::S
return (s1.type == s2.type) && (s1.pos == s2.pos) && (s1.count == s2.count);
}
-#ifdef Q_OS_SYMBIAN
-const static TTime UnixEpochOffset(I64LIT(0xdcddb30f2f8000));
-const static TInt64 MinimumMillisecondTime(KMinTInt64 / 1000);
-const static TInt64 MaximumMillisecondTime(KMaxTInt64 / 1000);
-QDateTime qt_symbian_TTime_To_QDateTime(const TTime& time)
-{
- TTimeIntervalMicroSeconds absolute = time.MicroSecondsFrom(UnixEpochOffset);
-
- return QDateTime::fromMSecsSinceEpoch(absolute.Int64() / 1000);
-}
-
-TTime qt_symbian_QDateTime_To_TTime(const QDateTime& datetime)
-{
- qint64 absolute = datetime.toMSecsSinceEpoch();
- if(absolute > MaximumMillisecondTime)
- return TTime(KMaxTInt64);
- if(absolute < MinimumMillisecondTime)
- return TTime(KMinTInt64);
- return TTime(absolute * 1000);
-}
-
-time_t qt_symbian_TTime_To_time_t(const TTime& time)
-{
- TTimeIntervalSeconds interval;
- TInt err = time.SecondsFrom(UnixEpochOffset, interval);
- if (err || interval.Int() < 0)
- return (time_t) 0;
- return (time_t) interval.Int();
-}
-
-TTime qt_symbian_time_t_To_TTime(time_t time)
-{
- return UnixEpochOffset + TTimeIntervalSeconds(time);
-}
-#endif //Q_OS_SYMBIAN
-
#endif // QT_BOOTSTRAPPED
QT_END_NAMESPACE
diff --git a/src/corelib/tools/qdatetime.h b/src/corelib/tools/qdatetime.h
index ba52f7455c..af257eaa40 100644
--- a/src/corelib/tools/qdatetime.h
+++ b/src/corelib/tools/qdatetime.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -46,11 +46,21 @@
#include <QtCore/qnamespace.h>
#include <QtCore/qsharedpointer.h>
+// windows.h defines these identifiers, so undefine it
+// ### figure out where in Qt we include it too soon
+#ifdef max
+# undef max
+#endif
+#ifdef min
+# undef min
+#endif
+
+#include <limits>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class Q_CORE_EXPORT QDate
{
@@ -60,11 +70,11 @@ public:
StandaloneFormat
};
public:
- QDate() { jd = 0; }
+ QDate() { jd = nullJd(); }
QDate(int y, int m, int d);
- bool isNull() const { return jd == 0; }
- bool isValid() const;
+ bool isNull() const { return !isValid(); }
+ bool isValid() const { return jd >= minJd() && jd <= maxJd(); }
int year() const;
int month() const;
@@ -85,15 +95,19 @@ public:
QString toString(Qt::DateFormat f = Qt::TextDate) const;
QString toString(const QString &format) const;
#endif
- bool setYMD(int y, int m, int d);
+#if QT_DEPRECATED_SINCE(5,0)
+QT_DEPRECATED inline bool setYMD(int y, int m, int d)
+{ if (uint(y) <= 99) y += 1900; return setDate(y, m, d); }
+#endif
+
bool setDate(int year, int month, int day);
void getDate(int *year, int *month, int *day);
- QDate addDays(int days) const;
+ QDate addDays(qint64 days) const;
QDate addMonths(int months) const;
QDate addYears(int years) const;
- int daysTo(const QDate &) const;
+ qint64 daysTo(const QDate &) const;
bool operator==(const QDate &other) const { return jd == other.jd; }
bool operator!=(const QDate &other) const { return jd != other.jd; }
@@ -110,11 +124,16 @@ public:
static bool isValid(int y, int m, int d);
static bool isLeapYear(int year);
- static inline QDate fromJulianDay(int jd) { QDate d; d.jd = jd; return d; }
- inline int toJulianDay() const { return jd; }
+ static inline QDate fromJulianDay(qint64 jd)
+ { QDate d; if (jd >= minJd() && jd <= maxJd()) d.jd = jd; return d; }
+ inline qint64 toJulianDay() const { return jd; }
private:
- uint jd;
+ static inline qint64 nullJd() { return std::numeric_limits<qint64>::min(); }
+ static inline qint64 minJd() { return std::numeric_limits<qint64>::min() / 2; }
+ static inline qint64 maxJd() { return (std::numeric_limits<qint64>::max()) / 2; }
+
+ qint64 jd;
friend class QDateTime;
friend class QDateTimePrivate;
@@ -217,7 +236,7 @@ public:
QString toString(Qt::DateFormat f = Qt::TextDate) const;
QString toString(const QString &format) const;
#endif
- QDateTime addDays(int days) const;
+ QDateTime addDays(qint64 days) const;
QDateTime addMonths(int months) const;
QDateTime addYears(int years) const;
QDateTime addSecs(int secs) const;
@@ -225,7 +244,7 @@ public:
QDateTime toTimeSpec(Qt::TimeSpec spec) const;
inline QDateTime toLocalTime() const { return toTimeSpec(Qt::LocalTime); }
inline QDateTime toUTC() const { return toTimeSpec(Qt::UTC); }
- int daysTo(const QDateTime &) const;
+ qint64 daysTo(const QDateTime &) const;
int secsTo(const QDateTime &) const;
qint64 msecsTo(const QDateTime &) const;
diff --git a/src/corelib/tools/qdatetime_p.h b/src/corelib/tools/qdatetime_p.h
index 38aa748c6c..fa897121f6 100644
--- a/src/corelib/tools/qdatetime_p.h
+++ b/src/corelib/tools/qdatetime_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -274,13 +274,6 @@ Q_CORE_EXPORT bool operator==(const QDateTimeParser::SectionNode &s1, const QDat
Q_DECLARE_OPERATORS_FOR_FLAGS(QDateTimeParser::Sections)
Q_DECLARE_OPERATORS_FOR_FLAGS(QDateTimeParser::FieldInfo)
-#ifdef Q_OS_SYMBIAN
-QDateTime qt_symbian_TTime_To_QDateTime(const TTime& time);
-TTime qt_symbian_QDateTime_To_TTime(const QDateTime& datetime);
-time_t qt_symbian_TTime_To_time_t(const TTime& time);
-TTime qt_symbian_time_t_To_TTime(time_t time);
-#endif //Q_OS_SYMBIAN
-
#endif // QT_BOOTSTRAPPED
QT_END_NAMESPACE
diff --git a/src/corelib/tools/qeasingcurve.cpp b/src/corelib/tools/qeasingcurve.cpp
index a3614f9b6c..76c06cb0d5 100644
--- a/src/corelib/tools/qeasingcurve.cpp
+++ b/src/corelib/tools/qeasingcurve.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qeasingcurve.h b/src/corelib/tools/qeasingcurve.h
index ef18ae20bc..4d53af591b 100644
--- a/src/corelib/tools/qeasingcurve.h
+++ b/src/corelib/tools/qeasingcurve.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QEasingCurvePrivate;
class QPointF;
diff --git a/src/corelib/tools/qelapsedtimer.cpp b/src/corelib/tools/qelapsedtimer.cpp
index 087252a926..e8f2ce174e 100644
--- a/src/corelib/tools/qelapsedtimer.cpp
+++ b/src/corelib/tools/qelapsedtimer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -138,7 +138,7 @@ QT_BEGIN_NAMESPACE
\value SystemTime The human-readable system time. This clock is not monotonic.
\value MonotonicClock The system's monotonic clock, usually found in Unix systems. This clock is monotonic and does not overflow.
- \value TickCounter The system's tick counter, used on Windows and Symbian systems. This clock may overflow.
+ \value TickCounter The system's tick counter, used on Windows systems. This clock may overflow.
\value MachAbsoluteTime The Mach kernel's absolute time (Mac OS X). This clock is monotonic and does not overflow.
\value PerformanceCounter The high-resolution performance counter provided by Windows. This clock is monotonic and does not overflow.
@@ -164,7 +164,7 @@ QT_BEGIN_NAMESPACE
The tick counter clock type is based on the system's or the processor's
tick counter, multiplied by the duration of a tick. This clock type is
- used on Windows and Symbian platforms. If the high-precision performance
+ used on Windows platforms. If the high-precision performance
counter is available on Windows, the \tt{PerformanceCounter} clock type
is used instead.
@@ -178,12 +178,6 @@ QT_BEGIN_NAMESPACE
milliseconds. When comparing such values, it's recommended that the high
32 bits of the millisecond count be masked off.
- On Symbian systems, the overflow happens after 2^32 ticks, the duration
- of which can be obtained from the platform HAL using the constant
- HAL::ENanoTickPeriod. When comparing values between processes, it's
- necessary to divide the value by the tick duration and mask off the high
- 32 bits.
-
\section2 MachAbsoluteTime
This clock type is based on the absolute time presented by Mach kernels,
@@ -236,7 +230,7 @@ void QElapsedTimer::invalidate()
}
/*!
- Returns true if this object was invalidated by a call to invalidate() and
+ Returns false if this object was invalidated by a call to invalidate() and
has not been restarted since.
\sa invalidate(), start(), restart()
diff --git a/src/corelib/tools/qelapsedtimer.h b/src/corelib/tools/qelapsedtimer.h
index 73ec8d637e..7e0f3e27ae 100644
--- a/src/corelib/tools/qelapsedtimer.h
+++ b/src/corelib/tools/qelapsedtimer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class Q_CORE_EXPORT QElapsedTimer
{
diff --git a/src/corelib/tools/qelapsedtimer_generic.cpp b/src/corelib/tools/qelapsedtimer_generic.cpp
index 3c7bb197d7..038a15bd37 100644
--- a/src/corelib/tools/qelapsedtimer_generic.cpp
+++ b/src/corelib/tools/qelapsedtimer_generic.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qelapsedtimer_mac.cpp b/src/corelib/tools/qelapsedtimer_mac.cpp
index f8f124f6a9..4150bc86ca 100644
--- a/src/corelib/tools/qelapsedtimer_mac.cpp
+++ b/src/corelib/tools/qelapsedtimer_mac.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qelapsedtimer_symbian.cpp b/src/corelib/tools/qelapsedtimer_symbian.cpp
deleted file mode 100644
index 4ae3f3d1ab..0000000000
--- a/src/corelib/tools/qelapsedtimer_symbian.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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 "qelapsedtimer.h"
-#include "qpair.h"
-#include <e32std.h>
-#include <sys/time.h>
-#include <hal.h>
-
-QT_BEGIN_NAMESPACE
-
-// return quint64 to avoid sign-extension
-static quint64 getMicrosecondFromTick()
-{
- static TInt nanokernel_tick_period;
- if (!nanokernel_tick_period)
- HAL::Get(HAL::ENanoTickPeriod, nanokernel_tick_period);
-
- static quint32 highdword = 0;
- static quint32 lastval = 0;
- quint32 val = User::NTickCount();
- if (val < lastval)
- ++highdword;
- lastval = val;
-
- return nanokernel_tick_period * (val | (quint64(highdword) << 32));
-}
-
-timeval qt_gettime()
-{
- timeval tv;
- quint64 now = getMicrosecondFromTick();
- tv.tv_sec = now / 1000000;
- tv.tv_usec = now % 1000000;
-
- return tv;
-}
-
-QElapsedTimer::ClockType QElapsedTimer::clockType()
-{
- return TickCounter;
-}
-
-bool QElapsedTimer::isMonotonic()
-{
- return true;
-}
-
-void QElapsedTimer::start()
-{
- t1 = getMicrosecondFromTick();
- t2 = 0;
-}
-
-qint64 QElapsedTimer::restart()
-{
- qint64 oldt1 = t1;
- t1 = getMicrosecondFromTick();
- t2 = 0;
- return (t1 - oldt1) / 1000;
-}
-
-qint64 QElapsedTimer::nsecsElapsed() const
-{
- return (getMicrosecondFromTick() - t1) * 1000;
-}
-
-qint64 QElapsedTimer::elapsed() const
-{
- return (getMicrosecondFromTick() - t1) / 1000;
-}
-
-qint64 QElapsedTimer::msecsSinceReference() const
-{
- return t1 / 1000;
-}
-
-qint64 QElapsedTimer::msecsTo(const QElapsedTimer &other) const
-{
- return (other.t1 - t1) / 1000;
-}
-
-qint64 QElapsedTimer::secsTo(const QElapsedTimer &other) const
-{
- return msecsTo(other) / 1000000;
-}
-
-bool operator<(const QElapsedTimer &v1, const QElapsedTimer &v2)
-{
- return (v1.t1 - v2.t1) < 0;
-}
-
-QT_END_NAMESPACE
diff --git a/src/corelib/tools/qelapsedtimer_unix.cpp b/src/corelib/tools/qelapsedtimer_unix.cpp
index 7f3d4f635c..36acc81735 100644
--- a/src/corelib/tools/qelapsedtimer_unix.cpp
+++ b/src/corelib/tools/qelapsedtimer_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qelapsedtimer_win.cpp b/src/corelib/tools/qelapsedtimer_win.cpp
index 183171e306..b1faf22c3f 100644
--- a/src/corelib/tools/qelapsedtimer_win.cpp
+++ b/src/corelib/tools/qelapsedtimer_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,21 +34,22 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "qelapsedtimer.h"
-#include <windows.h>
-
-// Result of QueryPerformanceFrequency, 0 indicates that the high resolution timer is unavailable
-static quint64 counterFrequency = 0;
+#include <qt_windows.h>
typedef ULONGLONG (WINAPI *PtrGetTickCount64)(void);
static PtrGetTickCount64 ptrGetTickCount64 = 0;
QT_BEGIN_NAMESPACE
+// Result of QueryPerformanceFrequency, 0 indicates that the high resolution timer is unavailable
+static quint64 counterFrequency = 0;
+
static void resolveLibs()
{
static bool done = false;
diff --git a/src/corelib/tools/qfreelist.cpp b/src/corelib/tools/qfreelist.cpp
index 57530cf3c8..270f4840bb 100644
--- a/src/corelib/tools/qfreelist.cpp
+++ b/src/corelib/tools/qfreelist.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qfreelist_p.h b/src/corelib/tools/qfreelist_p.h
index 2105e5af56..599abcd48b 100644
--- a/src/corelib/tools/qfreelist_p.h
+++ b/src/corelib/tools/qfreelist_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
/*! \internal
diff --git a/src/corelib/tools/qharfbuzz.cpp b/src/corelib/tools/qharfbuzz.cpp
index 4eb6565557..7d08547ab8 100644
--- a/src/corelib/tools/qharfbuzz.cpp
+++ b/src/corelib/tools/qharfbuzz.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qharfbuzz_p.h b/src/corelib/tools/qharfbuzz_p.h
index a8da47b71c..cc575ddffa 100644
--- a/src/corelib/tools/qharfbuzz_p.h
+++ b/src/corelib/tools/qharfbuzz_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qhash.cpp b/src/corelib/tools/qhash.cpp
index 82ac8a0591..18537023ad 100644
--- a/src/corelib/tools/qhash.cpp
+++ b/src/corelib/tools/qhash.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qhash.h b/src/corelib/tools/qhash.h
index ecd02008e2..91d015c394 100644
--- a/src/corelib/tools/qhash.h
+++ b/src/corelib/tools/qhash.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QBitArray;
class QByteArray;
diff --git a/src/corelib/tools/qiterator.h b/src/corelib/tools/qiterator.h
index 0747940bf2..25a6f59383 100644
--- a/src/corelib/tools/qiterator.h
+++ b/src/corelib/tools/qiterator.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ namespace std {
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
#define Q_DECLARE_SEQUENTIAL_ITERATOR(C) \
\
diff --git a/src/corelib/tools/qiterator.qdoc b/src/corelib/tools/qiterator.qdoc
index 0e33aecbe4..e19a751755 100644
--- a/src/corelib/tools/qiterator.qdoc
+++ b/src/corelib/tools/qiterator.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qline.cpp b/src/corelib/tools/qline.cpp
index 161123cfff..1ca9a59bde 100644
--- a/src/corelib/tools/qline.cpp
+++ b/src/corelib/tools/qline.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qline.h b/src/corelib/tools/qline.h
index 956cbf9ce8..3c7977a207 100644
--- a/src/corelib/tools/qline.h
+++ b/src/corelib/tools/qline.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
/*******************************************************************************
* class QLine
diff --git a/src/corelib/tools/qlinkedlist.cpp b/src/corelib/tools/qlinkedlist.cpp
index acfbcd07eb..db5404e429 100644
--- a/src/corelib/tools/qlinkedlist.cpp
+++ b/src/corelib/tools/qlinkedlist.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qlinkedlist.h b/src/corelib/tools/qlinkedlist.h
index e8696eb5f9..1fa4eaabd0 100644
--- a/src/corelib/tools/qlinkedlist.h
+++ b/src/corelib/tools/qlinkedlist.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
struct Q_CORE_EXPORT QLinkedListData
{
diff --git a/src/corelib/tools/qlist.cpp b/src/corelib/tools/qlist.cpp
index 8eb4be090a..dbd026e65a 100644
--- a/src/corelib/tools/qlist.cpp
+++ b/src/corelib/tools/qlist.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -869,7 +869,7 @@ void **QListData::erase(void **xi)
\sa indexOf()
*/
-/*! \fn QBool QList::contains(const T &value) const
+/*! \fn bool QList::contains(const T &value) const
Returns true if the list contains an occurrence of \a value;
otherwise returns false.
diff --git a/src/corelib/tools/qlist.h b/src/corelib/tools/qlist.h
index c3db56d686..da3bae5f6c 100644
--- a/src/corelib/tools/qlist.h
+++ b/src/corelib/tools/qlist.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -63,7 +63,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
template <typename T> class QVector;
template <typename T> class QSet;
@@ -170,7 +169,7 @@ public:
void swap(int i, int j);
int indexOf(const T &t, int from = 0) const;
int lastIndexOf(const T &t, int from = -1) const;
- QBool contains(const T &t) const;
+ bool contains(const T &t) const;
int count(const T &t) const;
class const_iterator;
@@ -859,14 +858,14 @@ Q_OUTOFLINE_TEMPLATE int QList<T>::lastIndexOf(const T &t, int from) const
}
template <typename T>
-Q_OUTOFLINE_TEMPLATE QBool QList<T>::contains(const T &t) const
+Q_OUTOFLINE_TEMPLATE bool QList<T>::contains(const T &t) const
{
Node *b = reinterpret_cast<Node *>(p.begin());
Node *i = reinterpret_cast<Node *>(p.end());
while (i-- != b)
if (i->t() == t)
- return QBool(true);
- return QBool(false);
+ return true;
+ return false;
}
template <typename T>
diff --git a/src/corelib/tools/qlocale.cpp b/src/corelib/tools/qlocale.cpp
index 1dc384985b..6c52eb3827 100644
--- a/src/corelib/tools/qlocale.cpp
+++ b/src/corelib/tools/qlocale.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -67,20 +67,15 @@ QT_END_NAMESPACE
#include "qstringlist.h"
#include "qvariant.h"
#include "qstringbuilder.h"
-#if defined(Q_OS_WIN)
-# include "qt_windows.h"
-# include <time.h>
-#endif
#include "private/qnumeric_p.h"
#include "private/qsystemlibrary_p.h"
+#ifdef Q_OS_WIN
+# include <qt_windows.h>
+# include <time.h>
+#endif
QT_BEGIN_NAMESPACE
-#if defined(Q_OS_SYMBIAN)
-void qt_symbianUpdateSystemPrivate();
-void qt_symbianInitSystemLocale();
-#endif
-
#ifndef QT_NO_SYSTEMLOCALE
static QSystemLocale *_systemLocale = 0;
Q_GLOBAL_STATIC_WITH_ARGS(QSystemLocale, QSystemLocale_globalSystemLocale, (true))
@@ -474,9 +469,6 @@ static const QSystemLocale *systemLocale()
{
if (_systemLocale)
return _systemLocale;
-#if defined(Q_OS_SYMBIAN)
- qt_symbianInitSystemLocale();
-#endif
return QSystemLocale_globalSystemLocale();
}
@@ -491,10 +483,6 @@ void QLocalePrivate::updateSystemPrivate()
*system_lp = *sys_locale->fallbackLocale().d();
-#if defined(Q_OS_SYMBIAN)
- qt_symbianUpdateSystemPrivate();
-#endif
-
QVariant res = sys_locale->query(QSystemLocale::LanguageId, QVariant());
if (!res.isNull()) {
system_lp->m_language_id = res.toInt();
@@ -1033,11 +1021,7 @@ QString QLocale::scriptToString(QLocale::Script script)
}
/*!
- Returns the short int represented by the localized string \a s,
- using base \a base. If \a base is 0 the base is determined
- automatically using the following rules: If the string begins with
- "0x", it is assumed to be hexadecimal; if it begins with "0", it
- is assumed to be octal; otherwise it is assumed to be decimal.
+ Returns the short int represented by the localized string \a s.
If the conversion fails the function returns 0.
@@ -1049,9 +1033,9 @@ QString QLocale::scriptToString(QLocale::Script script)
\sa toUShort(), toString()
*/
-short QLocale::toShort(const QString &s, bool *ok, int base) const
+short QLocale::toShort(const QString &s, bool *ok) const
{
- qlonglong i = toLongLong(s, ok, base);
+ qlonglong i = toLongLong(s, ok);
if (i < SHRT_MIN || i > SHRT_MAX) {
if (ok != 0)
*ok = false;
@@ -1061,11 +1045,7 @@ short QLocale::toShort(const QString &s, bool *ok, int base) const
}
/*!
- Returns the unsigned short int represented by the localized string
- \a s, using base \a base. If \a base is 0 the base is determined
- automatically using the following rules: If the string begins with
- "0x", it is assumed to be hexadecimal; if it begins with "0", it
- is assumed to be octal; otherwise it is assumed to be decimal.
+ Returns the unsigned short int represented by the localized string \a s.
If the conversion fails the function returns 0.
@@ -1077,9 +1057,9 @@ short QLocale::toShort(const QString &s, bool *ok, int base) const
\sa toShort(), toString()
*/
-ushort QLocale::toUShort(const QString &s, bool *ok, int base) const
+ushort QLocale::toUShort(const QString &s, bool *ok) const
{
- qulonglong i = toULongLong(s, ok, base);
+ qulonglong i = toULongLong(s, ok);
if (i > USHRT_MAX) {
if (ok != 0)
*ok = false;
@@ -1089,11 +1069,7 @@ ushort QLocale::toUShort(const QString &s, bool *ok, int base) const
}
/*!
- Returns the int represented by the localized string \a s, using
- base \a base. If \a base is 0 the base is determined automatically
- using the following rules: If the string begins with "0x", it is
- assumed to be hexadecimal; if it begins with "0", it is assumed to
- be octal; otherwise it is assumed to be decimal.
+ Returns the int represented by the localized string \a s.
If the conversion fails the function returns 0.
@@ -1105,9 +1081,9 @@ ushort QLocale::toUShort(const QString &s, bool *ok, int base) const
\sa toUInt(), toString()
*/
-int QLocale::toInt(const QString &s, bool *ok, int base) const
+int QLocale::toInt(const QString &s, bool *ok) const
{
- qlonglong i = toLongLong(s, ok, base);
+ qlonglong i = toLongLong(s, ok);
if (i < INT_MIN || i > INT_MAX) {
if (ok != 0)
*ok = false;
@@ -1117,11 +1093,7 @@ int QLocale::toInt(const QString &s, bool *ok, int base) const
}
/*!
- Returns the unsigned int represented by the localized string \a s,
- using base \a base. If \a base is 0 the base is determined
- automatically using the following rules: If the string begins with
- "0x", it is assumed to be hexadecimal; if it begins with "0", it
- is assumed to be octal; otherwise it is assumed to be decimal.
+ Returns the unsigned int represented by the localized string \a s.
If the conversion fails the function returns 0.
@@ -1133,9 +1105,9 @@ int QLocale::toInt(const QString &s, bool *ok, int base) const
\sa toInt(), toString()
*/
-uint QLocale::toUInt(const QString &s, bool *ok, int base) const
+uint QLocale::toUInt(const QString &s, bool *ok) const
{
- qulonglong i = toULongLong(s, ok, base);
+ qulonglong i = toULongLong(s, ok);
if (i > UINT_MAX) {
if (ok != 0)
*ok = false;
@@ -1145,11 +1117,7 @@ uint QLocale::toUInt(const QString &s, bool *ok, int base) const
}
/*!
- Returns the long long int represented by the localized string \a
- s, using base \a base. If \a base is 0 the base is determined
- automatically using the following rules: If the string begins with
- "0x", it is assumed to be hexadecimal; if it begins with "0", it
- is assumed to be octal; otherwise it is assumed to be decimal.
+ Returns the long long int represented by the localized string \a s.
If the conversion fails the function returns 0.
@@ -1162,25 +1130,21 @@ uint QLocale::toUInt(const QString &s, bool *ok, int base) const
*/
-qlonglong QLocale::toLongLong(const QString &s, bool *ok, int base) const
+qlonglong QLocale::toLongLong(const QString &s, bool *ok) const
{
QLocalePrivate::GroupSeparatorMode mode
= p.numberOptions & RejectGroupSeparator
? QLocalePrivate::FailOnGroupSeparators
: QLocalePrivate::ParseGroupSeparators;
- return d()->stringToLongLong(s, base, ok, mode);
+ return d()->stringToLongLong(s, 10, ok, mode);
}
// ### Qt5: make the return type for toULongLong() qulonglong.
/*!
Returns the unsigned long long int represented by the localized
- string \a s, using base \a base. If \a base is 0 the base is
- determined automatically using the following rules: If the string
- begins with "0x", it is assumed to be hexadecimal; if it begins
- with "0", it is assumed to be octal; otherwise it is assumed to be
- decimal.
+ string \a s.
If the conversion fails the function returns 0.
@@ -1192,14 +1156,14 @@ qlonglong QLocale::toLongLong(const QString &s, bool *ok, int base) const
\sa toLongLong(), toInt(), toDouble(), toString()
*/
-qlonglong QLocale::toULongLong(const QString &s, bool *ok, int base) const
+qlonglong QLocale::toULongLong(const QString &s, bool *ok) const
{
QLocalePrivate::GroupSeparatorMode mode
= p.numberOptions & RejectGroupSeparator
? QLocalePrivate::FailOnGroupSeparators
: QLocalePrivate::ParseGroupSeparators;
- return d()->stringToUnsLongLong(s, base, ok, mode);
+ return d()->stringToUnsLongLong(s, 10, ok, mode);
}
/*!
diff --git a/src/corelib/tools/qlocale.h b/src/corelib/tools/qlocale.h
index 9bc4ea70b8..c029f627b2 100644
--- a/src/corelib/tools/qlocale.h
+++ b/src/corelib/tools/qlocale.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QDataStream;
class QDate;
@@ -62,71 +61,6 @@ class QTextStreamPrivate;
class QLocale;
-#ifndef QT_NO_SYSTEMLOCALE
-class Q_CORE_EXPORT QSystemLocale
-{
-public:
- QSystemLocale();
- virtual ~QSystemLocale();
-
- struct CurrencyToStringArgument
- {
- CurrencyToStringArgument() { }
- CurrencyToStringArgument(const QVariant &v, const QString &s)
- : value(v), symbol(s) { }
- QVariant value;
- QString symbol;
- };
-
- enum QueryType {
- LanguageId, // uint
- CountryId, // uint
- DecimalPoint, // QString
- GroupSeparator, // QString
- ZeroDigit, // QString
- NegativeSign, // QString
- DateFormatLong, // QString
- DateFormatShort, // QString
- TimeFormatLong, // QString
- TimeFormatShort, // QString
- DayNameLong, // QString, in: int
- DayNameShort, // QString, in: int
- MonthNameLong, // QString, in: int
- MonthNameShort, // QString, in: int
- DateToStringLong, // QString, in: QDate
- DateToStringShort, // QString in: QDate
- TimeToStringLong, // QString in: QTime
- TimeToStringShort, // QString in: QTime
- DateTimeFormatLong, // QString
- DateTimeFormatShort, // QString
- DateTimeToStringLong, // QString in: QDateTime
- DateTimeToStringShort, // QString in: QDateTime
- MeasurementSystem, // uint
- PositiveSign, // QString
- AMText, // QString
- PMText, // QString
- FirstDayOfWeek, // Qt::DayOfWeek
- Weekdays, // QList<Qt::DayOfWeek>
- CurrencySymbol, // QString in: CurrencyToStringArgument
- CurrencyToString, // QString in: qlonglong, qulonglong or double
- UILanguages, // QStringList
- StringToStandardQuotation, // QString in: QStringRef to quote
- StringToAlternateQuotation, // QString in: QStringRef to quote
- ScriptId, // uint
- ListToSeparatedString, // QString
- LocaleChanged, // system locale changed
- NativeLanguageName, // QString
- NativeCountryName // QString
- };
- virtual QVariant query(QueryType type, QVariant in) const;
- virtual QLocale fallbackLocale() const;
-
-private:
- QSystemLocale(bool);
- friend QSystemLocale *QSystemLocale_globalSystemLocale();
-};
-#endif
-
struct QLocalePrivate;
class Q_CORE_EXPORT QLocale
{
@@ -663,12 +597,12 @@ public:
QString nativeLanguageName() const;
QString nativeCountryName() const;
- short toShort(const QString &s, bool *ok = 0, int base = 0) const;
- ushort toUShort(const QString &s, bool *ok = 0, int base = 0) const;
- int toInt(const QString &s, bool *ok = 0, int base = 0) const;
- uint toUInt(const QString &s, bool *ok = 0, int base = 0) const;
- qlonglong toLongLong(const QString &s, bool *ok = 0, int base = 0) const;
- qlonglong toULongLong(const QString &s, bool *ok = 0, int base = 0) const;
+ short toShort(const QString &s, bool *ok = 0) const;
+ ushort toUShort(const QString &s, bool *ok = 0) const;
+ int toInt(const QString &s, bool *ok = 0) const;
+ uint toUInt(const QString &s, bool *ok = 0) const;
+ qlonglong toLongLong(const QString &s, bool *ok = 0) const;
+ qlonglong toULongLong(const QString &s, bool *ok = 0) const;
float toFloat(const QString &s, bool *ok = 0) const;
double toDouble(const QString &s, bool *ok = 0) const;
@@ -812,10 +746,6 @@ Q_CORE_EXPORT QDebug operator<<(QDebug, const QLocale &);
QT_END_NAMESPACE
-#ifndef QT_NO_SYSTEMLOCALE
-Q_DECLARE_METATYPE(QSystemLocale::CurrencyToStringArgument)
-#endif
-
QT_END_HEADER
#endif // QLOCALE_H
diff --git a/src/corelib/tools/qlocale.qdoc b/src/corelib/tools/qlocale.qdoc
index 0337c708a9..cc335a4575 100644
--- a/src/corelib/tools/qlocale.qdoc
+++ b/src/corelib/tools/qlocale.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -711,6 +711,7 @@
*/
/*!
+ \internal
\class QSystemLocale
\brief The QSystemLocale class can be used to finetune the system locale
of the user.
diff --git a/src/corelib/tools/qlocale_data_p.h b/src/corelib/tools/qlocale_data_p.h
index a29e40079a..1508b982f1 100644
--- a/src/corelib/tools/qlocale_data_p.h
+++ b/src/corelib/tools/qlocale_data_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qlocale_icu.cpp b/src/corelib/tools/qlocale_icu.cpp
index 0e220ff000..ee2e5f436a 100644
--- a/src/corelib/tools/qlocale_icu.cpp
+++ b/src/corelib/tools/qlocale_icu.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qlocale_mac.mm b/src/corelib/tools/qlocale_mac.mm
index ffcbbbca4b..7153875146 100644
--- a/src/corelib/tools/qlocale_mac.mm
+++ b/src/corelib/tools/qlocale_mac.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qlocale_p.h b/src/corelib/tools/qlocale_p.h
index 0b229e5e3f..7653f4d93d 100644
--- a/src/corelib/tools/qlocale_p.h
+++ b/src/corelib/tools/qlocale_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,12 +59,73 @@
#include "qlocale.h"
-#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_SYSTEMLOCALE)
-class CEnvironmentChangeNotifier;
-#endif
-
QT_BEGIN_NAMESPACE
+#ifndef QT_NO_SYSTEMLOCALE
+class QSystemLocale
+{
+public:
+ QSystemLocale();
+ virtual ~QSystemLocale();
+
+ struct CurrencyToStringArgument
+ {
+ CurrencyToStringArgument() { }
+ CurrencyToStringArgument(const QVariant &v, const QString &s)
+ : value(v), symbol(s) { }
+ QVariant value;
+ QString symbol;
+ };
+
+ enum QueryType {
+ LanguageId, // uint
+ CountryId, // uint
+ DecimalPoint, // QString
+ GroupSeparator, // QString
+ ZeroDigit, // QString
+ NegativeSign, // QString
+ DateFormatLong, // QString
+ DateFormatShort, // QString
+ TimeFormatLong, // QString
+ TimeFormatShort, // QString
+ DayNameLong, // QString, in: int
+ DayNameShort, // QString, in: int
+ MonthNameLong, // QString, in: int
+ MonthNameShort, // QString, in: int
+ DateToStringLong, // QString, in: QDate
+ DateToStringShort, // QString in: QDate
+ TimeToStringLong, // QString in: QTime
+ TimeToStringShort, // QString in: QTime
+ DateTimeFormatLong, // QString
+ DateTimeFormatShort, // QString
+ DateTimeToStringLong, // QString in: QDateTime
+ DateTimeToStringShort, // QString in: QDateTime
+ MeasurementSystem, // uint
+ PositiveSign, // QString
+ AMText, // QString
+ PMText, // QString
+ FirstDayOfWeek, // Qt::DayOfWeek
+ Weekdays, // QList<Qt::DayOfWeek>
+ CurrencySymbol, // QString in: CurrencyToStringArgument
+ CurrencyToString, // QString in: qlonglong, qulonglong or double
+ UILanguages, // QStringList
+ StringToStandardQuotation, // QString in: QStringRef to quote
+ StringToAlternateQuotation, // QString in: QStringRef to quote
+ ScriptId, // uint
+ ListToSeparatedString, // QString
+ LocaleChanged, // system locale changed
+ NativeLanguageName, // QString
+ NativeCountryName // QString
+ };
+ virtual QVariant query(QueryType type, QVariant in) const;
+ virtual QLocale fallbackLocale() const;
+
+private:
+ QSystemLocale(bool);
+ friend QSystemLocale *QSystemLocale_globalSystemLocale();
+};
+#endif
+
struct Q_CORE_EXPORT QLocalePrivate
{
public:
@@ -257,20 +318,6 @@ inline char QLocalePrivate::digitToCLocale(const QChar &in) const
return 0;
}
-#if defined(Q_OS_SYMBIAN) && !defined(QT_NO_SYSTEMLOCALE)
-class QEnvironmentChangeNotifier
-{
-public:
- QEnvironmentChangeNotifier();
- ~QEnvironmentChangeNotifier();
-
- static TInt localeChanged(TAny *data);
-
-private:
- CEnvironmentChangeNotifier *iChangeNotifier;
-};
-#endif
-
QString qt_readEscapedFormatString(const QString &format, int *idx);
bool qt_splitLocaleName(const QString &name, QString &lang, QString &script, QString &cntry);
int qt_repeatCount(const QString &s, int i);
@@ -279,5 +326,8 @@ QT_END_NAMESPACE
Q_DECLARE_METATYPE(QStringRef)
Q_DECLARE_METATYPE(QList<Qt::DayOfWeek>)
+#ifndef QT_NO_SYSTEMLOCALE
+Q_DECLARE_METATYPE(QSystemLocale::CurrencyToStringArgument)
+#endif
#endif // QLOCALE_P_H
diff --git a/src/corelib/tools/qlocale_symbian.cpp b/src/corelib/tools/qlocale_symbian.cpp
deleted file mode 100644
index abe437fc89..0000000000
--- a/src/corelib/tools/qlocale_symbian.cpp
+++ /dev/null
@@ -1,956 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtCore 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 <QDate>
-#include <QLocale>
-#include <QTime>
-#include <QVariant>
-#include <QThread>
-#include <QStringList>
-
-#include <e32std.h>
-#include <e32const.h>
-#include <e32base.h>
-#include <e32property.h>
-#include <bacntf.h>
-#include "private/qcore_symbian_p.h"
-#include "private/qcoreapplication_p.h"
-#include "private/qlocale_p.h"
-#include <qdebug.h>
-
-QT_BEGIN_NAMESPACE
-
-static TExtendedLocale _s60Locale;
-
-// Type definitions for runtime resolved function pointers
-typedef void (*FormatFunc)(TTime&, TDes&, const TDesC&, const TLocale&);
-typedef TPtrC (*FormatSpecFunc)(TExtendedLocale&);
-
-// Runtime resolved functions
-static FormatFunc ptrTimeFormatL = NULL;
-static FormatSpecFunc ptrGetTimeFormatSpec = NULL;
-static FormatSpecFunc ptrGetLongDateFormatSpec = NULL;
-static FormatSpecFunc ptrGetShortDateFormatSpec = NULL;
-
-// Default functions if functions cannot be resolved
-static void defaultTimeFormatL(TTime&, TDes& des, const TDesC&, const TLocale&)
-{
- des.Zero();
-}
-
-static TPtrC defaultFormatSpec(TExtendedLocale&)
-{
- return TPtrC(KNullDesC);
-}
-
-/*
- Definition of struct for mapping Symbian to ISO locale
-*/
-struct symbianToISO {
- int symbian_language;
- char iso_name[8];
- char uilanguage[8];
-};
-
-
-/*
- Mapping from Symbian to ISO locale.
- NOTE: This array should be sorted by the first column!
-*/
-static const symbianToISO symbian_to_iso_list[] = {
- { ELangEnglish, "en_GB", "en" }, // 1
- { ELangFrench, "fr_FR", "fr" }, // 2
- { ELangGerman, "de_DE", "de" }, // 3
- { ELangSpanish, "es_ES", "es" }, // 4
- { ELangItalian, "it_IT", "it" }, // 5
- { ELangSwedish, "sv_SE", "sv" }, // 6
- { ELangDanish, "da_DK", "da" }, // 7
- { ELangNorwegian, "nb_NO", "nb" }, // 8
- { ELangFinnish, "fi_FI", "fi" }, // 9
- { ELangAmerican, "en_US", "en-US" }, // 10
- { ELangPortuguese, "pt_PT", "pt" }, // 13
- { ELangTurkish, "tr_TR", "tr" }, // 14
- { ELangIcelandic, "is_IS", "is" }, // 15
- { ELangRussian, "ru_RU", "ru" }, // 16
- { ELangHungarian, "hu_HU", "hu" }, // 17
- { ELangDutch, "nl_NL", "nl" }, // 18
- { ELangCzech, "cs_CZ", "cs" }, // 25
- { ELangSlovak, "sk_SK", "sk" }, // 26
- { ELangPolish, "pl_PL", "pl" }, // 27
- { ELangSlovenian, "sl_SI", "sl" }, // 28
- { ELangTaiwanChinese, "zh_TW", "zh-TW" }, // 29
- { ELangHongKongChinese, "zh_HK", "zh-HK" }, // 30
- { ELangPrcChinese, "zh_CN", "zh" }, // 31
- { ELangJapanese, "ja_JP", "ja" }, // 32
- { ELangThai, "th_TH", "th" }, // 33
- { ELangArabic, "ar_AE", "ar" }, // 37
- { ELangTagalog, "tl_PH", "tl" }, // 39
- { ELangBulgarian, "bg_BG", "bg" }, // 42
- { ELangCatalan, "ca_ES", "ca" }, // 44
- { ELangCroatian, "hr_HR", "hr" }, // 45
- { ELangEstonian, "et_EE", "et" }, // 49
- { ELangFarsi, "fa_IR", "fa" }, // 50
- { ELangCanadianFrench, "fr_CA", "fr-CA" }, // 51
- { ELangGreek, "el_GR", "el" }, // 54
- { ELangHebrew, "he_IL", "he" }, // 57
- { ELangHindi, "hi_IN", "hi" }, // 58
- { ELangIndonesian, "id_ID", "id" }, // 59
- { 63/*ELangKazakh*/, "kk_KZ", "kk" }, // 63
- { ELangKorean, "ko_KO", "ko" }, // 65
- { ELangLatvian, "lv_LV", "lv" }, // 67
- { ELangLithuanian, "lt_LT", "lt" }, // 68
- { ELangMalay, "ms_MY", "ms" }, // 70
- { ELangNorwegianNynorsk, "nn_NO", "nn" }, // 75
- { ELangBrazilianPortuguese, "pt_BR", "pt-BR" }, // 76
- { ELangRomanian, "ro_RO", "ro" }, // 78
- { ELangSerbian, "sr_RS", "sr" }, // 79
- { ELangLatinAmericanSpanish,"es_419", "es-419" },// 83
- { ELangUkrainian, "uk_UA", "uk" }, // 93
- { ELangUrdu, "ur_PK", "ur" }, // 94 - India/Pakistan
- { ELangVietnamese, "vi_VN", "vi" }, // 96
-#ifdef __E32LANG_H__
-// 5.0
- { ELangBasque, "eu_ES", "eu" }, // 102
- { ELangGalician, "gl_ES", "gl" }, // 103
-#endif
-#if !defined(__SERIES60_31__)
- { ELangEnglish_Apac, "en_GB", "en" }, // 129
- { ELangEnglish_Taiwan, "en_TW", "en-TW" }, // 157 ### Not supported by CLDR
- { ELangEnglish_HongKong, "en_HK", "en-HK" }, // 158
- { ELangEnglish_Prc, "en_CN", "en-CN" }, // 159 ### Not supported by CLDR
- { ELangEnglish_Japan, "en_JP", "en" }, // 160 ### Not supported by CLDR
- { ELangEnglish_Thailand, "en_TH", "en" }, // 161 ### Not supported by CLDR
- { 230/*ELangEnglish_India*/,"en_IN", "en" }, // 230
- { ELangMalay_Apac, "ms_MY", "ms" }, // 326
-#endif
- { 327/*ELangIndonesian_Apac*/, "id_ID", "id" } // 327 - appeared in Symbian^3
-};
-
-enum LocaleNameType {
- ISO,
- UILanguage
-};
-
-QByteArray qt_resolveSymbianLocaleName(int code, LocaleNameType type)
-{
- //Number of Symbian to ISO locale mappings
- static const int symbian_to_iso_count
- = sizeof(symbian_to_iso_list)/sizeof(symbianToISO);
-
- int cmp = code - symbian_to_iso_list[0].symbian_language;
- if (cmp < 0)
- return 0;
-
- if (cmp == 0) {
- if (type == ISO)
- return symbian_to_iso_list[0].iso_name;
- return symbian_to_iso_list[0].uilanguage;
- }
-
- int begin = 0;
- int end = symbian_to_iso_count;
-
- while (end - begin > 1) {
- uint mid = (begin + end)/2;
-
- const symbianToISO *elt = symbian_to_iso_list + mid;
- int cmp = code - elt->symbian_language;
- if (cmp < 0) {
- end = mid;
- } else if (cmp > 0) {
- begin = mid;
- } else {
- if (type == ISO)
- return elt->iso_name;
- return elt->uilanguage;
- }
- }
-
- return 0;
-}
-
-/*!
- Returns ISO name corresponding to the Symbian locale code \a sys_fmt.
-*/
-QByteArray qt_symbianLocaleName(int code)
-{
- return qt_resolveSymbianLocaleName(code, ISO);
-}
-
-// order is: normal, abbr, nmode, nmode+abbr
-static const char *us_locale_dep[] = {
- "MM", "dd", "yyyy", "MM", "dd",
- "M", "d", "yy", "M", "d",
- "MMMM", "dd", "yyyy", "MMMM", "dd",
- "MMM", "d", "yy", "MMM", "d" };
-
-static const char *eu_locale_dep[] = {
- "dd", "MM", "yyyy", "dd", "MM",
- "d", "M", "yy", "d", "M",
- "dd", "MMMM", "yyyy", "dd", "MMMM",
- "d", "MMM", "yy", "d", "MMM" };
-
-static const char *jp_locale_dep[] = {
- "yyyy", "MM", "dd", "MM", "dd",
- "yy", "M", "d", "M", "d",
- "yyyy", "MMMM", "dd", "MMMM", "dd",
- "yy", "MMM", "d", "MMM", "d" };
-
-/*!
- Returns a Qt version of the given \a sys_fmt Symbian locale format string.
-*/
-static QString s60ToQtFormat(const QString &sys_fmt)
-{
- TLocale *locale = _s60Locale.GetLocale();
-
- QString result;
- QString other;
- QString qtformatchars = QString::fromLatin1("adhmsyzAHM");
-
- QChar c;
- int i = 0;
- bool open_escape = false;
- bool abbrev_next = false;
- bool locale_indep_ordering = false;
- bool minus_mode = false;
- bool plus_mode = false;
- bool n_mode = false;
- TTimeFormat tf = locale->TimeFormat();
-
- while (i < sys_fmt.size()) {
-
- c = sys_fmt.at(i);
-
- // let formatting thru
- if (c.unicode() == '%') {
- // if we have gathered string, concat it
- if (!other.isEmpty()) {
- result += other;
- other.clear();
- }
- // if we have open escape, end it
- if (open_escape) {
- result += QLatin1Char('\'');
- open_escape = false;
- }
-
- ++i;
- if (i >= sys_fmt.size())
- break;
-
- c = sys_fmt.at(i);
-
- // process specials
- abbrev_next = c.unicode() == '*';
- plus_mode = c.unicode() == '+';
- minus_mode = c.unicode() == '-';
-
- if (abbrev_next || plus_mode || minus_mode) {
- ++i;
- if (i >= sys_fmt.size())
- break;
-
- c = sys_fmt.at(i);
-
- if (plus_mode || minus_mode) {
- // break on undefined plus/minus mode
- if (c.unicode() != 'A' && c.unicode() != 'B')
- break;
- }
- }
-
- switch (c.unicode()) {
- case 'F':
- {
- // locale indep mode on
- locale_indep_ordering = true;
- break;
- }
-
- case '/':
- {
- // date sep 0-3
- ++i;
- if (i >= sys_fmt.size())
- break;
-
- c = sys_fmt.at(i);
- if (c.isDigit() && c.digitValue() <= 3) {
- TChar s = locale->DateSeparator(c.digitValue());
- TUint val = s;
- // some indexes return zero for empty
- if (val > 0)
- result += QChar(val);
- }
- break;
- }
-
- case 'D':
- {
- if (!locale_indep_ordering)
- break;
-
- if (!abbrev_next)
- result += QLatin1String("dd");
- else
- result += QLatin1Char('d');
-
- break;
- }
-
- case 'M':
- {
- if (!locale_indep_ordering)
- break;
-
- if (!n_mode) {
- if (!abbrev_next)
- result += QLatin1String("MM");
- else
- result += QLatin1String("M");
- } else {
- if (!abbrev_next)
- result += QLatin1String("MMMM");
- else
- result += QLatin1String("MMM");
- }
-
- break;
- }
-
- case 'N':
- {
- n_mode = true;
-
- if (!locale_indep_ordering)
- break;
-
- if (!abbrev_next)
- result += QLatin1String("MMMM");
- else
- result += QLatin1String("MMM");
-
- break;
- }
-
- case 'Y':
- {
- if (!locale_indep_ordering)
- break;
-
- if (!abbrev_next)
- result += QLatin1String("yyyy");
- else
- result += QLatin1String("yy");
-
- break;
- }
-
- case 'E':
- {
- if (!abbrev_next)
- result += QLatin1String("dddd");
- else
- result += QLatin1String("ddd");
-
- break;
- }
-
- case ':':
- {
- // timesep 0-3
- ++i;
- if (i >= sys_fmt.size())
- break;
-
- c = sys_fmt.at(i);
- if (c.isDigit() && c.digitValue() <= 3) {
- TChar s = locale->TimeSeparator(c.digitValue());
- TUint val = s;
- // some indexes return zero for empty
- if (val > 0)
- result += QChar(val);
- }
-
- break;
- }
-
- case 'J':
- {
- if (tf == ETime24 && !abbrev_next)
- result += QLatin1String("hh");
- else
- result += QLatin1Char('h');
-
- break;
- }
-
- case 'H':
- {
- if (!abbrev_next)
- result += QLatin1String("hh");
- else
- result += QLatin1Char('h');
-
- break;
- }
-
- case 'I':
- {
- result += QLatin1Char('h');
- break;
- }
-
- case 'T':
- {
- if (!abbrev_next)
- result += QLatin1String("mm");
- else
- result += QLatin1Char('m');
-
- break;
- }
-
- case 'S':
- {
- if (!abbrev_next)
- result += QLatin1String("ss");
- else
- result += QLatin1Char('s');
-
- break;
- }
-
- case 'B':
- {
- // only done for 12h clock
- if (tf == ETime24)
- break;
- }
-
- // fallthru to A
- case 'A': {
- // quickie to get capitalization, can't use s60 string as is because Qt 'hh' format's am/pm logic
- TAmPmName ampm = TAmPmName();
- TChar first(ampm[0]);
- QString qtampm = QString::fromLatin1(first.IsUpper() ? "AP" : "ap");
-
- int pos = locale->AmPmSymbolPosition();
-
- if ((minus_mode && pos != ELocaleBefore) ||
- (plus_mode && pos != ELocaleAfter))
- break;
-
- if (!abbrev_next && locale->AmPmSpaceBetween()) {
- if (pos == ELocaleBefore)
- qtampm.append(QLatin1Char(' '));
- else
- qtampm.prepend(QLatin1Char(' '));
- }
-
- result += qtampm;
- }
- break;
-
- case '.': {
- // decimal sep
- TChar s = locale->DecimalSeparator();
- TUint val = s;
- if (val > 0)
- result += QChar(val);
- }
- break;
-
- case 'C':
- {
- // six digits in s60, three digits in qt
- if (!abbrev_next) {
- result += QLatin1String("zzz");
- } else {
- // next char is number from 0-6, how many digits to display
- ++i;
- if (i >= sys_fmt.size())
- break;
-
- c = sys_fmt.at(i);
-
- if (c.isDigit()) {
- // try to match wanted digits
- QChar val(c.digitValue());
-
- if (val >= 3) {
- result += QLatin1String("zzz");
- } else if (val > 0) {
- result += QLatin1Char('z');
- }
- }
- }
- break;
- }
-
- // these cases fallthru
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- {
-
- // shouldn't parse these with %F
- if (locale_indep_ordering)
- break;
-
- TDateFormat df = locale->DateFormat();
-
- const char **locale_dep;
- switch (df) {
- default: // fallthru to american
- case EDateAmerican:
- locale_dep = us_locale_dep;
- break;
- case EDateEuropean:
- locale_dep = eu_locale_dep;
- break;
- case EDateJapanese:
- locale_dep = jp_locale_dep;
- break;
- }
- int offset = 0;
- if (abbrev_next)
- offset += 5;
- if (n_mode)
- offset += 10;
-
- result += QLatin1String(locale_dep[offset + (c.digitValue()-1)]);
- break;
- }
-
- case '%': // fallthru percent
- {
- // any junk gets copied as is
- }
- default:
- {
- result += c;
- break;
- }
-
- case 'Z': // Qt doesn't support these :(
- case 'X':
- case 'W':
- {
- break;
- }
- }
- } else {
- // double any single quotes, don't begin escape
- if (c.unicode() == '\'') {
- // end open escape
- if (open_escape) {
- result += other;
- other.clear();
- result += QLatin1Char('\'');
- open_escape = false;
- }
-
- other += c;
- }
-
- // gather chars and escape them in one go if any format chars are found
- if (!open_escape && qtformatchars.indexOf(c) != -1) {
- result += QLatin1Char('\'');
- open_escape = true;
- }
- other += c;
- }
-
- ++i;
- }
-
- if (!other.isEmpty())
- result += other;
- if (open_escape)
- result += QLatin1Char('\'');
-
- return result;
-}
-
-/*!
- Retrieves Symbian locale decimal separator.
-*/
-static QString symbianDecimalPoint()
-{
- TLocale *locale = _s60Locale.GetLocale();
-
- TChar decPoint = locale->DecimalSeparator();
- int val = decPoint;
- return QChar(val);
-}
-
-/*!
- Retrieves Symbian locale group separator.
-*/
-static QString symbianGroupSeparator()
-{
- TLocale *locale = _s60Locale.GetLocale();
-
- TChar grpSep = locale->ThousandsSeparator();
- int val = grpSep;
- return QChar(val);
-}
-
-/*!
- Retrieves Symbian locale zero digit.
-*/
-static QString symbianZeroDigit()
-{
- TLocale *locale = _s60Locale.GetLocale();
-
- // TDigitType enumeration value returned by TLocale
- // will always correspond to zero digit unicode value.
- TDigitType digit = locale->DigitType();
- return QChar(digit);
-}
-
-/*!
- Retrieves a day name from Symbian locale. The \a day is an integer
- from 1 to 7. When \a short_format is true the method returns
- the day in short format. Otherwise it returns the day in a long format.
-*/
-static QString symbianDayName(int day, bool short_format)
-{
- day -= 1;
-
- if (day < 0 || day > 6)
- return QString();
-
- if (short_format) {
- return qt_TDes2QString(TDayNameAbb(TDay(day)));
- } else {
- return qt_TDes2QString(TDayName(TDay(day)));
- }
-}
-
-/*!
- Retrieves a month name from Symbian locale. The \a month is an integer
- from 1 to 12. When \a short_format is true the method returns
- the month in short format. Otherwise it returns the month in a long format.
-*/
-static QString symbianMonthName(int month, bool short_format)
-{
- month -= 1;
- if (month < 0 || month > 11)
- return QString();
-
- if (short_format) {
- return qt_TDes2QString(TMonthNameAbb(TMonth(month)));
- } else {
- return qt_TDes2QString(TMonthName(TMonth(month)));
- }
-}
-
-/*!
- Retrieves date format from Symbian locale and
- transforms it to Qt format.
-
- When \a short_format is true the method returns
- short date format. Otherwise it returns the long format.
-*/
-static QString symbianDateFormat(bool short_format)
-{
- TPtrC dateFormat;
-
- if (short_format) {
- dateFormat.Set(ptrGetShortDateFormatSpec(_s60Locale));
- } else {
- dateFormat.Set(ptrGetLongDateFormatSpec(_s60Locale));
- }
-
- return s60ToQtFormat(qt_TDesC2QString(dateFormat));
-}
-
-/*!
- Retrieves time format from Symbian locale and
- transforms it to Qt format.
-*/
-static QString symbianTimeFormat()
-{
- return s60ToQtFormat(qt_TDesC2QString(ptrGetTimeFormatSpec(_s60Locale)));
-}
-
-/*!
- Returns localized string representation of given \a date
- formatted with Symbian locale date format.
-
- If \a short_format is true the format will be a short version.
- Otherwise it uses a longer version.
-*/
-static QString symbianDateToString(const QDate &date, bool short_format)
-{
- int month = date.month() - 1;
- int day = date.day() - 1;
- int year = date.year();
-
- TDateTime dateTime;
- dateTime.Set(year, TMonth(month), day, 0, 0, 0, 0);
-
- TTime timeStr(dateTime);
- TBuf<KMaxLongDateFormatSpec*2> buffer;
-
- TPtrC dateFormat;
- if (short_format) {
- dateFormat.Set(ptrGetShortDateFormatSpec(_s60Locale));
- } else {
- dateFormat.Set(ptrGetLongDateFormatSpec(_s60Locale));
- }
-
- TRAPD(err, ptrTimeFormatL(timeStr, buffer, dateFormat, *_s60Locale.GetLocale());)
-
- if (err == KErrNone)
- return qt_TDes2QString(buffer);
- else
- return QString();
-}
-
-/*!
- Returns localized string representation of given \a time
- formatted with Symbian locale time format.
-*/
-static QString symbianTimeToString(const QTime &time)
-{
- int hour = time.hour();
- int minute = time.minute();
- int second = time.second();
- int milliseconds = 0;
-
- TDateTime dateTime;
- dateTime.Set(0, TMonth(0), 0, hour, minute, second, milliseconds);
-
- TTime timeStr(dateTime);
- TBuf<KMaxTimeFormatSpec*2> buffer;
-
- TRAPD(err, ptrTimeFormatL(
- timeStr,
- buffer,
- ptrGetTimeFormatSpec(_s60Locale),
- *_s60Locale.GetLocale());
- )
-
- if (err == KErrNone)
- return qt_TDes2QString(buffer);
- else
- return QString();
-}
-
-/*!
- Returns the measurement system stored in Symbian locale
-
- \sa QLocale::MeasurementSystem
-*/
-static QLocale::MeasurementSystem symbianMeasurementSystem()
-{
- TLocale *locale = _s60Locale.GetLocale();
-
- TUnitsFormat unitFormat = locale->UnitsGeneral();
- if (unitFormat == EUnitsImperial)
- return QLocale::ImperialSystem;
- else
- return QLocale::MetricSystem;
-}
-
-void qt_symbianUpdateSystemPrivate()
-{
- // load system data before query calls
- _s60Locale.LoadSystemSettings();
-}
-
-void qt_symbianInitSystemLocale()
-{
- static QBasicAtomicInt initDone = Q_BASIC_ATOMIC_INITIALIZER(0);
- if (initDone == 2)
- return;
- if (initDone.testAndSetRelaxed(0, 1)) {
- // Initialize platform version dependent function pointers
- ptrTimeFormatL = reinterpret_cast<FormatFunc>
- (qt_resolveS60PluginFunc(S60Plugin_TimeFormatL));
- ptrGetTimeFormatSpec = reinterpret_cast<FormatSpecFunc>
- (qt_resolveS60PluginFunc(S60Plugin_GetTimeFormatSpec));
- ptrGetLongDateFormatSpec = reinterpret_cast<FormatSpecFunc>
- (qt_resolveS60PluginFunc(S60Plugin_GetLongDateFormatSpec));
- ptrGetShortDateFormatSpec = reinterpret_cast<FormatSpecFunc>
- (qt_resolveS60PluginFunc(S60Plugin_GetShortDateFormatSpec));
- if (!ptrTimeFormatL)
- ptrTimeFormatL = &defaultTimeFormatL;
- if (!ptrGetTimeFormatSpec)
- ptrGetTimeFormatSpec = &defaultFormatSpec;
- if (!ptrGetLongDateFormatSpec)
- ptrGetLongDateFormatSpec = &defaultFormatSpec;
- if (!ptrGetShortDateFormatSpec)
- ptrGetShortDateFormatSpec = &defaultFormatSpec;
- bool ret = initDone.testAndSetRelease(1, 2);
- Q_ASSERT(ret);
- Q_UNUSED(ret);
- }
- while(initDone != 2)
- QThread::yieldCurrentThread();
-}
-
-QLocale QSystemLocale::fallbackLocale() const
-{
- TLanguage lang = User::Language();
- QString locale = QLatin1String(qt_symbianLocaleName(lang));
- return QLocale(locale);
-}
-
-static QStringList symbianUILanguages()
-{
- TLanguage lang = User::Language();
- QString s = QLatin1String(qt_resolveSymbianLocaleName(lang, UILanguage));
- return QStringList(s);
-}
-
-QVariant QSystemLocale::query(QueryType type, QVariant in = QVariant()) const
-{
- switch(type) {
- case DecimalPoint:
- return symbianDecimalPoint();
- case GroupSeparator:
- return symbianGroupSeparator();
-
- case ZeroDigit:
- return symbianZeroDigit();
-
- case DayNameLong:
- case DayNameShort:
- return symbianDayName(in.toInt(), (type == DayNameShort) );
-
- case MonthNameLong:
- case MonthNameShort:
- return symbianMonthName(in.toInt(), (type == MonthNameShort) );
-
- case DateFormatLong:
- case DateFormatShort:
- return symbianDateFormat( (type == DateFormatShort) );
- case TimeFormatLong:
- case TimeFormatShort:
- return symbianTimeFormat();
- case DateTimeFormatLong:
- case DateTimeFormatShort:
- return QString(symbianDateFormat( (type == DateTimeFormatShort) ) + QLatin1Char(' ') + symbianTimeFormat());
- case DateToStringShort:
- case DateToStringLong:
- return symbianDateToString(in.toDate(), (type == DateToStringShort) );
- case TimeToStringShort:
- case TimeToStringLong:
- return symbianTimeToString(in.toTime());
- case DateTimeToStringShort:
- case DateTimeToStringLong: {
- const QDateTime dt = in.toDateTime();
- return QString(symbianDateToString(dt.date(), (type == DateTimeToStringShort) )
- + QLatin1Char(' ') + symbianTimeToString(dt.time()));
- }
- case MeasurementSystem:
- return static_cast<int>(symbianMeasurementSystem());
- case LanguageId:
- case CountryId: {
- TLanguage language = User::Language();
- QString locale = QLatin1String(qt_symbianLocaleName(language));
- QLocale::Language lang;
- QLocale::Script script;
- QLocale::Country cntry;
- QLocalePrivate::getLangAndCountry(locale, lang, script, cntry);
- if (type == LanguageId)
- return lang;
- // few iso codes have no country and will use this
- if (cntry == QLocale::AnyCountry)
- return fallbackLocale().country();
-
- return cntry;
- }
- case ScriptId:
- return QVariant(QLocale::AnyScript);
- case NegativeSign:
- case PositiveSign:
- break;
- case AMText:
- return qt_TDes2QString(TAmPmName(TAmPm(EAm)));
- case PMText:
- return qt_TDes2QString(TAmPmName(TAmPm(EPm)));
- case UILanguages:
- return QVariant(symbianUILanguages());
- default:
- break;
- }
- return QVariant();
-}
-
-#if !defined(QT_NO_SYSTEMLOCALE)
-QEnvironmentChangeNotifier::QEnvironmentChangeNotifier()
-{
- // Create the change notifier and install the callback function
- const TCallBack callback(&QEnvironmentChangeNotifier::localeChanged, this);
- QT_TRAP_THROWING(iChangeNotifier = CEnvironmentChangeNotifier::NewL(CActive::EPriorityStandard, callback));
- iChangeNotifier->Start();
-}
-
-TInt QEnvironmentChangeNotifier::localeChanged(TAny *data)
-{
- QEnvironmentChangeNotifier *that = reinterpret_cast<QEnvironmentChangeNotifier *>(data);
-
- TInt flag = that->iChangeNotifier->Change();
- if (flag & EChangesLocale) {
- static bool first = true;
- if (!first) { // skip the first notification on app startup
- QT_TRYCATCH_LEAVING(QLocalePrivate::updateSystemPrivate());
- QT_TRYCATCH_LEAVING(QCoreApplication::postEvent(qApp, new QEvent(QEvent::LocaleChange)));
- }
- first = false;
- }
- return KErrNone;
-}
-
-QEnvironmentChangeNotifier::~QEnvironmentChangeNotifier()
-{
- delete iChangeNotifier;
-}
-#endif
-
-QT_END_NAMESPACE
diff --git a/src/corelib/tools/qlocale_tools.cpp b/src/corelib/tools/qlocale_tools.cpp
index 8a57a418e4..31a29d7fe1 100644
--- a/src/corelib/tools/qlocale_tools.cpp
+++ b/src/corelib/tools/qlocale_tools.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -258,13 +258,6 @@ bool removeGroupSeparators(QLocalePrivate::CharBuff *num)
return true;
}
-#if defined(Q_CC_MWERKS) && defined(Q_OS_WIN32)
-inline bool isascii(int c)
-{
- return (c >= 0 && c <=127);
-}
-#endif
-
/*-
* Copyright (c) 1992, 1993
* The Regents of the University of California. All rights reserved.
diff --git a/src/corelib/tools/qlocale_tools_p.h b/src/corelib/tools/qlocale_tools_p.h
index 85e6d3b0d0..2dc5c03a20 100644
--- a/src/corelib/tools/qlocale_tools_p.h
+++ b/src/corelib/tools/qlocale_tools_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qlocale_unix.cpp b/src/corelib/tools/qlocale_unix.cpp
index 5839a80e00..6ace96f771 100644
--- a/src/corelib/tools/qlocale_unix.cpp
+++ b/src/corelib/tools/qlocale_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qlocale_win.cpp b/src/corelib/tools/qlocale_win.cpp
index c09802879c..cd9fffc7a5 100644
--- a/src/corelib/tools/qlocale_win.cpp
+++ b/src/corelib/tools/qlocale_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,8 +50,8 @@
#include "qdebug.h"
-#if defined(Q_OS_WIN)
-# include "qt_windows.h"
+#ifdef Q_OS_WIN
+# include <qt_windows.h>
# include <time.h>
#endif
diff --git a/src/corelib/tools/qmap.cpp b/src/corelib/tools/qmap.cpp
index b1e8ecb0ad..474e9cb59d 100644
--- a/src/corelib/tools/qmap.cpp
+++ b/src/corelib/tools/qmap.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qmap.h b/src/corelib/tools/qmap.h
index 7e19760c5f..a8306194d4 100644
--- a/src/corelib/tools/qmap.h
+++ b/src/corelib/tools/qmap.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,7 +56,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
struct Q_CORE_EXPORT QMapData
{
diff --git a/src/corelib/tools/qmargins.cpp b/src/corelib/tools/qmargins.cpp
index e14e2aa227..41f7dce9a5 100644
--- a/src/corelib/tools/qmargins.cpp
+++ b/src/corelib/tools/qmargins.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qmargins.h b/src/corelib/tools/qmargins.h
index 4e69907440..7d9d07ed46 100644
--- a/src/corelib/tools/qmargins.h
+++ b/src/corelib/tools/qmargins.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QMargins
{
diff --git a/src/corelib/tools/qpair.h b/src/corelib/tools/qpair.h
index 0acd617e26..501f2af3e6 100644
--- a/src/corelib/tools/qpair.h
+++ b/src/corelib/tools/qpair.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
template <class T1, class T2>
struct QPair
diff --git a/src/corelib/tools/qpair.qdoc b/src/corelib/tools/qpair.qdoc
index 26e7c78996..fdf1eafc23 100644
--- a/src/corelib/tools/qpair.qdoc
+++ b/src/corelib/tools/qpair.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qpodlist_p.h b/src/corelib/tools/qpodlist_p.h
index 9c03f0e64a..7fc04cfb39 100644
--- a/src/corelib/tools/qpodlist_p.h
+++ b/src/corelib/tools/qpodlist_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
template <typename T, int Prealloc>
class QPodList : public QVarLengthArray<T, Prealloc>
diff --git a/src/corelib/tools/qpoint.cpp b/src/corelib/tools/qpoint.cpp
index 9139f4033c..55a2261cb9 100644
--- a/src/corelib/tools/qpoint.cpp
+++ b/src/corelib/tools/qpoint.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qpoint.h b/src/corelib/tools/qpoint.h
index a6381578d8..827de3936c 100644
--- a/src/corelib/tools/qpoint.h
+++ b/src/corelib/tools/qpoint.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class Q_CORE_EXPORT QPoint
{
diff --git a/src/corelib/tools/qqueue.cpp b/src/corelib/tools/qqueue.cpp
index 5753c7d695..06d996a542 100644
--- a/src/corelib/tools/qqueue.cpp
+++ b/src/corelib/tools/qqueue.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qqueue.h b/src/corelib/tools/qqueue.h
index 9aa7a7bdb0..9e891199a0 100644
--- a/src/corelib/tools/qqueue.h
+++ b/src/corelib/tools/qqueue.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
template <class T>
class QQueue : public QList<T>
diff --git a/src/corelib/tools/qrect.cpp b/src/corelib/tools/qrect.cpp
index 2d63eb85e6..7ff883a99a 100644
--- a/src/corelib/tools/qrect.cpp
+++ b/src/corelib/tools/qrect.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qrect.h b/src/corelib/tools/qrect.h
index 34000750ee..bc9a4d68be 100644
--- a/src/corelib/tools/qrect.h
+++ b/src/corelib/tools/qrect.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class Q_CORE_EXPORT QRect
{
diff --git a/src/corelib/tools/qrefcount.cpp b/src/corelib/tools/qrefcount.cpp
index 5341d27a91..24cfedb5db 100644
--- a/src/corelib/tools/qrefcount.cpp
+++ b/src/corelib/tools/qrefcount.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qrefcount.h b/src/corelib/tools/qrefcount.h
index 1d2474b6d8..16b1d339b3 100644
--- a/src/corelib/tools/qrefcount.h
+++ b/src/corelib/tools/qrefcount.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
namespace QtPrivate
{
diff --git a/src/corelib/tools/qregexp.cpp b/src/corelib/tools/qregexp.cpp
index d300ed967d..421d15c436 100644
--- a/src/corelib/tools/qregexp.cpp
+++ b/src/corelib/tools/qregexp.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -773,7 +773,7 @@ static QString wc2rx(const QString &wc_str, const bool enableEscaping)
if (isEscaping) {
rx += QLatin1String("\\\\");
} // we insert the \\ later if necessary
- if (i+1 == wclen) { // the end
+ if (i == wclen) { // the end
rx += QLatin1String("\\\\");
}
} else {
@@ -3809,7 +3809,7 @@ uint qHash(const QRegExpEngineKey &key)
typedef QCache<QRegExpEngineKey, QRegExpEngine> EngineCache;
Q_GLOBAL_STATIC(EngineCache, globalEngineCache)
-Q_GLOBAL_STATIC(QMutex, mutex)
+static QBasicMutex globalEngineCacheMutex;
#endif // QT_NO_REGEXP_OPTIM
static void derefEngine(QRegExpEngine *eng, const QRegExpEngineKey &key)
@@ -3817,7 +3817,7 @@ static void derefEngine(QRegExpEngine *eng, const QRegExpEngineKey &key)
if (!eng->ref.deref()) {
#if !defined(QT_NO_REGEXP_OPTIM)
if (globalEngineCache()) {
- QMutexLocker locker(mutex());
+ QMutexLocker locker(&globalEngineCacheMutex);
QT_TRY {
globalEngineCache()->insert(key, eng, 4 + key.pattern.length() / 4);
} QT_CATCH(const std::bad_alloc &) {
@@ -3839,7 +3839,7 @@ static void prepareEngine_helper(QRegExpPrivate *priv)
bool initMatchState = !priv->eng;
#if !defined(QT_NO_REGEXP_OPTIM)
if (!priv->eng && globalEngineCache()) {
- QMutexLocker locker(mutex());
+ QMutexLocker locker(&globalEngineCacheMutex);
priv->eng = globalEngineCache()->take(priv->engineKey);
if (priv->eng != 0)
priv->eng->ref.ref();
@@ -4316,18 +4316,13 @@ int QRegExp::matchedLength() const
#ifndef QT_NO_REGEXP_CAPTURE
-#ifndef QT_NO_DEPRECATED
/*!
+ \fn int QRegExp::numCaptures() const
\obsolete
Returns the number of captures contained in the regular expression.
\sa captureCount()
*/
-int QRegExp::numCaptures() const
-{
- return captureCount();
-}
-#endif
/*!
\since 4.6
diff --git a/src/corelib/tools/qregexp.h b/src/corelib/tools/qregexp.h
index 364745e24a..0455e1603e 100644
--- a/src/corelib/tools/qregexp.h
+++ b/src/corelib/tools/qregexp.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
struct QRegExpPrivate;
class QStringList;
@@ -100,9 +99,6 @@ public:
int lastIndexIn(const QString &str, int offset = -1, CaretMode caretMode = CaretAtZero) const;
int matchedLength() const;
#ifndef QT_NO_REGEXP_CAPTURE
-#ifdef QT_DEPRECATED
- QT_DEPRECATED int numCaptures() const;
-#endif
int captureCount() const;
QStringList capturedTexts() const;
QStringList capturedTexts();
diff --git a/src/corelib/tools/qringbuffer_p.h b/src/corelib/tools/qringbuffer_p.h
index 6bbce03a44..46e505099a 100644
--- a/src/corelib/tools/qringbuffer_p.h
+++ b/src/corelib/tools/qringbuffer_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qscopedpointer.cpp b/src/corelib/tools/qscopedpointer.cpp
index a95468617b..b6bf525fb9 100644
--- a/src/corelib/tools/qscopedpointer.cpp
+++ b/src/corelib/tools/qscopedpointer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qscopedpointer.h b/src/corelib/tools/qscopedpointer.h
index 41e6dff90c..4e1027e86a 100644
--- a/src/corelib/tools/qscopedpointer.h
+++ b/src/corelib/tools/qscopedpointer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -46,7 +46,6 @@
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
template <typename T>
struct QScopedPointerDeleter
@@ -86,9 +85,7 @@ struct QScopedPointerPodDeleter
template <typename T, typename Cleanup = QScopedPointerDeleter<T> >
class QScopedPointer
{
-#ifndef Q_CC_NOKIAX86
typedef T *QScopedPointer:: *RestrictedBool;
-#endif
public:
explicit inline QScopedPointer(T *p = 0) : d(p)
{
@@ -118,7 +115,7 @@ public:
return !d;
}
-#if defined(Q_CC_NOKIAX86) || defined(Q_QDOC)
+#if defined(Q_QDOC)
inline operator bool() const
{
return isNull() ? 0 : &QScopedPointer::d;
diff --git a/src/corelib/tools/qscopedpointer_p.h b/src/corelib/tools/qscopedpointer_p.h
index eb7cc80e54..ff32954bad 100644
--- a/src/corelib/tools/qscopedpointer_p.h
+++ b/src/corelib/tools/qscopedpointer_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -57,7 +57,6 @@
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
/* Internal helper class - exposes the data through data_ptr (legacy from QShared).
diff --git a/src/corelib/tools/qscopedvaluerollback.cpp b/src/corelib/tools/qscopedvaluerollback.cpp
index e5b68ded1f..9cbdb4c6ec 100644
--- a/src/corelib/tools/qscopedvaluerollback.cpp
+++ b/src/corelib/tools/qscopedvaluerollback.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qscopedvaluerollback.h b/src/corelib/tools/qscopedvaluerollback.h
index 3b821956eb..23d2d9eda0 100644
--- a/src/corelib/tools/qscopedvaluerollback.h
+++ b/src/corelib/tools/qscopedvaluerollback.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -46,7 +46,6 @@
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
template <typename T>
class QScopedValueRollback
diff --git a/src/corelib/tools/qset.h b/src/corelib/tools/qset.h
index 7ad16a7943..7750cd1147 100644
--- a/src/corelib/tools/qset.h
+++ b/src/corelib/tools/qset.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
template <class T>
class QSet
diff --git a/src/corelib/tools/qset.qdoc b/src/corelib/tools/qset.qdoc
index 28b53e690d..b33064e1b8 100644
--- a/src/corelib/tools/qset.qdoc
+++ b/src/corelib/tools/qset.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qshareddata.cpp b/src/corelib/tools/qshareddata.cpp
index 2995d4a123..6250745400 100644
--- a/src/corelib/tools/qshareddata.cpp
+++ b/src/corelib/tools/qshareddata.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qshareddata.h b/src/corelib/tools/qshareddata.h
index add8025d5a..1003baaae3 100644
--- a/src/corelib/tools/qshareddata.h
+++ b/src/corelib/tools/qshareddata.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
template <class T> class QSharedDataPointer;
diff --git a/src/corelib/tools/qsharedpointer.cpp b/src/corelib/tools/qsharedpointer.cpp
index 0069eb6831..ee0aee2399 100644
--- a/src/corelib/tools/qsharedpointer.cpp
+++ b/src/corelib/tools/qsharedpointer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qsharedpointer.h b/src/corelib/tools/qsharedpointer.h
index f4a0c02ebf..4033b5d422 100644
--- a/src/corelib/tools/qsharedpointer.h
+++ b/src/corelib/tools/qsharedpointer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
// These classes are here to fool qdoc into generating a better documentation
diff --git a/src/corelib/tools/qsharedpointer_impl.h b/src/corelib/tools/qsharedpointer_impl.h
index 3cad13856c..ebab027196 100644
--- a/src/corelib/tools/qsharedpointer_impl.h
+++ b/src/corelib/tools/qsharedpointer_impl.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@
// classes found in qsharedpointer.h
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
QT_END_NAMESPACE
QT_END_HEADER
#pragma qt_sync_stop_processing
@@ -66,7 +65,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
// Macro QSHAREDPOINTER_VERIFY_AUTO_CAST
// generates a compiler error if the following construct isn't valid:
@@ -130,9 +128,7 @@ namespace QtSharedPointer {
template <class T>
class Basic
{
-#ifndef Q_CC_NOKIAX86
typedef T *Basic:: *RestrictedBool;
-#endif
public:
typedef T Type;
typedef T element_type;
@@ -145,11 +141,7 @@ namespace QtSharedPointer {
inline T *data() const { return value; }
inline bool isNull() const { return !data(); }
-#ifndef Q_CC_NOKIAX86
inline operator RestrictedBool() const { return isNull() ? 0 : &Basic::value; }
-#else
- inline operator bool() const { return isNull() ? 0 : &Basic::value; }
-#endif
inline bool operator !() const { return isNull(); }
inline T &operator*() const { return *data(); }
inline T *operator->() const { return data(); }
@@ -563,9 +555,7 @@ public:
template <class T>
class QWeakPointer
{
-#ifndef Q_CC_NOKIAX86
typedef T *QWeakPointer:: *RestrictedBool;
-#endif
typedef QtSharedPointer::ExternalRefCountData Data;
public:
@@ -578,11 +568,7 @@ public:
typedef qptrdiff difference_type;
inline bool isNull() const { return d == 0 || d->strongref.load() == 0 || value == 0; }
-#ifndef Q_CC_NOKIAX86
inline operator RestrictedBool() const { return isNull() ? 0 : &QWeakPointer::value; }
-#else
- inline operator bool() const { return isNull() ? 0 : &QWeakPointer::value; }
-#endif
inline bool operator !() const { return isNull(); }
inline T *data() const { return d == 0 || d->strongref.load() == 0 ? 0 : value; }
diff --git a/src/corelib/tools/qsimd.cpp b/src/corelib/tools/qsimd.cpp
index 9001c4a399..d65dfa35a6 100644
--- a/src/corelib/tools/qsimd.cpp
+++ b/src/corelib/tools/qsimd.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -43,15 +43,14 @@
#include <QByteArray>
#include <stdio.h>
-#if defined(Q_OS_WINCE)
-#include <windows.h>
-#endif
-
-#if defined(Q_OS_WIN64) && !defined(Q_CC_GNU)
-#include <intrin.h>
-#endif
-
-#if defined(Q_OS_LINUX) && defined(__arm__)
+#if defined(Q_OS_WIN)
+# if defined(Q_OS_WINCE)
+# include <qt_windows.h>
+# endif
+# if defined(Q_OS_WIN64) && !defined(Q_CC_GNU)
+# include <intrin.h>
+# endif
+#elif defined(Q_OS_LINUX) && defined(__arm__)
#include "private/qcore_unix_p.h"
// the kernel header definitions for HWCAP_*
diff --git a/src/corelib/tools/qsimd_p.h b/src/corelib/tools/qsimd_p.h
index 2fc6d88fb6..47c4a9952b 100644
--- a/src/corelib/tools/qsimd_p.h
+++ b/src/corelib/tools/qsimd_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -71,9 +71,6 @@ QT_BEGIN_HEADER
# include <emmintrin.h>
# undef posix_memalign
#else
-# ifdef Q_CC_MINGW
-# include <windows.h>
-# endif
# include <emmintrin.h>
#endif
@@ -139,7 +136,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
enum CPUFeatures {
None = 0,
diff --git a/src/corelib/tools/qsize.cpp b/src/corelib/tools/qsize.cpp
index 41abb0be17..d5e6f18326 100644
--- a/src/corelib/tools/qsize.cpp
+++ b/src/corelib/tools/qsize.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qsize.h b/src/corelib/tools/qsize.h
index c9712b3976..5400f76a3a 100644
--- a/src/corelib/tools/qsize.h
+++ b/src/corelib/tools/qsize.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class Q_CORE_EXPORT QSize
{
diff --git a/src/corelib/tools/qstack.cpp b/src/corelib/tools/qstack.cpp
index de851d2f0d..888fbfa0b4 100644
--- a/src/corelib/tools/qstack.cpp
+++ b/src/corelib/tools/qstack.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qstack.h b/src/corelib/tools/qstack.h
index 35518cfe5e..920ad02881 100644
--- a/src/corelib/tools/qstack.h
+++ b/src/corelib/tools/qstack.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
template<class T>
class QStack : public QVector<T>
diff --git a/src/corelib/tools/qstring.cpp b/src/corelib/tools/qstring.cpp
index 8e49106f1d..28e8b6be83 100644
--- a/src/corelib/tools/qstring.cpp
+++ b/src/corelib/tools/qstring.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -64,28 +64,26 @@
#include <private/qfunctions_p.h>
-#if defined(Q_OS_WINCE)
-#include <windows.h>
-#include <winnls.h>
-#endif
-
-#ifdef Q_OS_SYMBIAN
-#include <e32cmn.h>
-#endif
-
#include <limits.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
-#ifdef truncate
-#undef truncate
-#endif
-
#include "qchar.cpp"
#include "qstringmatcher.cpp"
+#ifdef Q_OS_WIN
+# include <qt_windows.h>
+# ifdef Q_OS_WINCE
+# include <winnls.h>
+# endif
+#endif
+
+#ifdef truncate
+# undef truncate
+#endif
+
#ifndef LLONG_MAX
#define LLONG_MAX qint64_C(9223372036854775807)
#endif
@@ -166,7 +164,7 @@ static int ucstricmp(const ushort *a, const ushort *ae, const ushort *b, const u
}
// Case-insensitive comparison between a Unicode string and a QLatin1String
-static int ucstricmp(const ushort *a, const ushort *ae, const uchar *b)
+static int ucstricmp(const ushort *a, const ushort *ae, const uchar *b, const uchar *be)
{
if (a == 0) {
if (b == 0)
@@ -176,7 +174,11 @@ static int ucstricmp(const ushort *a, const ushort *ae, const uchar *b)
if (b == 0)
return -1;
- while (a < ae && *b) {
+ const ushort *e = ae;
+ if (be - b < ae - a)
+ e = a + (be - b);
+
+ while (a < e) {
int diff = foldCase(*a) - foldCase(*b);
if ((diff))
return diff;
@@ -184,7 +186,7 @@ static int ucstricmp(const ushort *a, const ushort *ae, const uchar *b)
++b;
}
if (a == ae) {
- if (!*b)
+ if (b == be)
return 0;
return -1;
}
@@ -1459,7 +1461,7 @@ QString &QString::insert(int i, const QLatin1String &str)
if (i < 0 || !s || !(*s))
return *this;
- int len = qstrlen(str.latin1());
+ int len = str.size();
expand(qMax(d->size, i) + len - 1);
::memmove(d->data() + i + len, d->data() + i, (d->size - i - len) * sizeof(QChar));
@@ -1560,7 +1562,7 @@ QString &QString::append(const QLatin1String &str)
{
const uchar *s = (const uchar *)str.latin1();
if (s) {
- int len = qstrlen((char *)s);
+ int len = str.size();
if (d->ref.isShared() || d->size + len > int(d->alloc))
realloc(grow(d->size + len));
ushort *i = d->data() + d->size;
@@ -2057,11 +2059,11 @@ QString &QString::replace(const QLatin1String &before,
const QLatin1String &after,
Qt::CaseSensitivity cs)
{
- int alen = qstrlen(after.latin1());
+ int alen = after.size();
QVarLengthArray<ushort> a(alen);
for (int i = 0; i < alen; ++i)
a[i] = (uchar)after.latin1()[i];
- int blen = qstrlen(before.latin1());
+ int blen = before.size();
QVarLengthArray<ushort> b(blen);
for (int i = 0; i < blen; ++i)
b[i] = (uchar)before.latin1()[i];
@@ -2236,7 +2238,7 @@ bool QString::operator<(const QLatin1String &other) const
++uc;
++c;
}
- return (uc == (d->data() + d->size) ? *c : *uc < *c);
+ return (uc == e ? d->size < other.size() : *uc < *c);
}
/*! \fn bool QString::operator<(const QByteArray &other) const
@@ -2329,7 +2331,7 @@ bool QString::operator>(const QLatin1String &other) const
if (!c || *c == '\0')
return !isEmpty();
- const ushort *uc = d->data();;
+ const ushort *uc = d->data();
const ushort *e = uc + qMin(d->size, other.size());
while (uc < e) {
@@ -2338,7 +2340,7 @@ bool QString::operator>(const QLatin1String &other) const
++uc;
++c;
}
- return (uc == (d->data() + d->size) ? false : *uc > *c);
+ return (uc == e) ? d->size > other.size() : *uc > *c;
}
/*! \fn bool QString::operator>(const QByteArray &other) const
@@ -3389,7 +3391,7 @@ QString QString::right(int n) const
QString QString::mid(int position, int n) const
{
- if (d == &shared_null.str || position >= d->size)
+ if (d == &shared_null.str || position > d->size)
return QString();
if (n < 0)
n = d->size - position;
@@ -4610,22 +4612,31 @@ int QString::compare_helper(const QChar *data1, int length1, QLatin1String s2,
Qt::CaseSensitivity cs)
{
const ushort *uc = reinterpret_cast<const ushort *>(data1);
- const ushort *e = uc + length1;
+ const ushort *uce = uc + length1;
const uchar *c = (uchar *)s2.latin1();
if (!c)
return length1;
if (cs == Qt::CaseSensitive) {
- while (uc < e && *c && *uc == *c)
+ const ushort *e = uc + length1;
+ if (s2.size() < length1)
+ e = uc + s2.size();
+ while (uc < e) {
+ int diff = *uc - *c;
+ if (diff)
+ return diff;
uc++, c++;
+ }
- if (uc == e)
- return -*c;
-
- return *uc - *c;
+ if (uc == uce) {
+ if (c == (const uchar *)s2.latin1() + s2.size())
+ return 0;
+ return -1;
+ }
+ return 1;
} else {
- return ucstricmp(uc, e, c);
+ return ucstricmp(uc, uce, c, c + s2.size());
}
}
@@ -4701,12 +4712,6 @@ int QString::localeAwareCompare(const QString &other) const
return localeAwareCompare_helper(constData(), length(), other.constData(), other.length());
}
-#if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
-QT_END_NAMESPACE
-#include "qt_windows.h"
-QT_BEGIN_NAMESPACE
-#endif
-
/*!
\internal
\since 4.5
@@ -4745,10 +4750,6 @@ int QString::localeAwareCompare_helper(const QChar *data1, int length1,
CFRelease(thisString);
CFRelease(otherString);
return result;
-#elif defined(Q_OS_SYMBIAN)
- TPtrC p1 = TPtrC16(reinterpret_cast<const TUint16 *>(data1), length1);
- TPtrC p2 = TPtrC16(reinterpret_cast<const TUint16 *>(data2), length2);
- return p1.CompareC(p2);
#elif defined(Q_OS_UNIX)
# if defined(QT_USE_ICU)
int res;
@@ -5432,11 +5433,14 @@ QString &QString::vsprintf(const char* cformat, va_list ap)
begins with "0x", base 16 is used; if the string begins with "0",
base 8 is used; otherwise, base 10 is used.
+ The string conversion will always happen in the 'C' locale. For locale
+ dependent conversion use QLocale::toLongLong()
+
Example:
\snippet doc/src/snippets/qstring/main.cpp 74
- \sa number(), toULongLong(), toInt()
+ \sa number(), toULongLong(), toInt(), QLocale::toLongLong()
*/
qint64 QString::toLongLong(bool *ok, int base) const
@@ -5448,15 +5452,6 @@ qint64 QString::toLongLong(bool *ok, int base) const
}
#endif
- bool my_ok;
- QLocale def_locale;
- qint64 result = def_locale.d()->stringToLongLong(*this, base, &my_ok, QLocalePrivate::FailOnGroupSeparators);
- if (my_ok) {
- if (ok != 0)
- *ok = true;
- return result;
- }
-
QLocale c_locale(QLocale::C);
return c_locale.d()->stringToLongLong(*this, base, ok, QLocalePrivate::FailOnGroupSeparators);
}
@@ -5473,11 +5468,14 @@ qint64 QString::toLongLong(bool *ok, int base) const
begins with "0x", base 16 is used; if the string begins with "0",
base 8 is used; otherwise, base 10 is used.
+ The string conversion will always happen in the 'C' locale. For locale
+ dependent conversion use QLocale::toULongLong()
+
Example:
\snippet doc/src/snippets/qstring/main.cpp 79
- \sa number(), toLongLong()
+ \sa number(), toLongLong(), QLocale::toULongLong()
*/
quint64 QString::toULongLong(bool *ok, int base) const
@@ -5489,15 +5487,6 @@ quint64 QString::toULongLong(bool *ok, int base) const
}
#endif
- bool my_ok;
- QLocale def_locale;
- quint64 result = def_locale.d()->stringToUnsLongLong(*this, base, &my_ok, QLocalePrivate::FailOnGroupSeparators);
- if (my_ok) {
- if (ok != 0)
- *ok = true;
- return result;
- }
-
QLocale c_locale(QLocale::C);
return c_locale.d()->stringToUnsLongLong(*this, base, ok, QLocalePrivate::FailOnGroupSeparators);
}
@@ -5516,11 +5505,14 @@ quint64 QString::toULongLong(bool *ok, int base) const
begins with "0x", base 16 is used; if the string begins with "0",
base 8 is used; otherwise, base 10 is used.
+ The string conversion will always happen in the 'C' locale. For locale
+ dependent conversion use QLocale::toLong()
+
Example:
\snippet doc/src/snippets/qstring/main.cpp 73
- \sa number(), toULong(), toInt()
+ \sa number(), toULong(), toInt(), QLocale::toLong()
*/
long QString::toLong(bool *ok, int base) const
@@ -5548,11 +5540,14 @@ long QString::toLong(bool *ok, int base) const
begins with "0x", base 16 is used; if the string begins with "0",
base 8 is used; otherwise, base 10 is used.
+ The string conversion will always happen in the 'C' locale. For locale
+ dependent conversion use QLocale::toULong()
+
Example:
\snippet doc/src/snippets/qstring/main.cpp 78
- \sa number()
+ \sa number(), QLocale::toULong()
*/
ulong QString::toULong(bool *ok, int base) const
@@ -5579,11 +5574,14 @@ ulong QString::toULong(bool *ok, int base) const
begins with "0x", base 16 is used; if the string begins with "0",
base 8 is used; otherwise, base 10 is used.
+ The string conversion will always happen in the 'C' locale. For locale
+ dependent conversion use QLocale::toInt()
+
Example:
\snippet doc/src/snippets/qstring/main.cpp 72
- \sa number(), toUInt(), toDouble()
+ \sa number(), toUInt(), toDouble(), QLocale::toInt()
*/
int QString::toInt(bool *ok, int base) const
@@ -5609,11 +5607,14 @@ int QString::toInt(bool *ok, int base) const
begins with "0x", base 16 is used; if the string begins with "0",
base 8 is used; otherwise, base 10 is used.
+ The string conversion will always happen in the 'C' locale. For locale
+ dependent conversion use QLocale::toUInt()
+
Example:
\snippet doc/src/snippets/qstring/main.cpp 77
- \sa number(), toInt()
+ \sa number(), toInt(), QLocale::toUInt()
*/
uint QString::toUInt(bool *ok, int base) const
@@ -5639,11 +5640,14 @@ uint QString::toUInt(bool *ok, int base) const
begins with "0x", base 16 is used; if the string begins with "0",
base 8 is used; otherwise, base 10 is used.
+ The string conversion will always happen in the 'C' locale. For locale
+ dependent conversion use QLocale::toShort()
+
Example:
\snippet doc/src/snippets/qstring/main.cpp 76
- \sa number(), toUShort(), toInt()
+ \sa number(), toUShort(), toInt(), QLocale::toShort()
*/
short QString::toShort(bool *ok, int base) const
@@ -5669,11 +5673,14 @@ short QString::toShort(bool *ok, int base) const
begins with "0x", base 16 is used; if the string begins with "0",
base 8 is used; otherwise, base 10 is used.
+ The string conversion will always happen in the 'C' locale. For locale
+ dependent conversion use QLocale::toUShort()
+
Example:
\snippet doc/src/snippets/qstring/main.cpp 80
- \sa number(), toShort()
+ \sa number(), toShort(), QLocale::toUShort()
*/
ushort QString::toUShort(bool *ok, int base) const
@@ -5703,37 +5710,22 @@ ushort QString::toUShort(bool *ok, int base) const
\snippet doc/src/snippets/qstring/main.cpp 67
- This function tries to interpret the string according to the
- current locale. The current locale is determined from the
- system at application startup and can be changed by calling
- QLocale::setDefault(). If the string cannot be interpreted
- according to the current locale, this function falls back
- on the "C" locale.
+ The string conversion will always happen in the 'C' locale. For locale
+ dependent conversion use QLocale::toDouble()
- \snippet doc/src/snippets/qstring/main.cpp 69
- \snippet doc/src/snippets/qstring/main.cpp 70
+ \snippet doc/src/snippets/qstring/main.cpp 68
- Due to the ambiguity between the decimal point and thousands group
- separator in various locales, this function does not handle
+ For historic reasons, this function does not handle
thousands group separators. If you need to convert such numbers,
- see QLocale::toDouble().
+ use QLocale::toDouble().
- \snippet doc/src/snippets/qstring/main.cpp 68
+ \snippet doc/src/snippets/qstring/main.cpp 69
\sa number() QLocale::setDefault() QLocale::toDouble() trimmed()
*/
double QString::toDouble(bool *ok) const
{
- bool my_ok;
- QLocale def_locale;
- double result = def_locale.d()->stringToDouble(*this, &my_ok, QLocalePrivate::FailOnGroupSeparators);
- if (my_ok) {
- if (ok != 0)
- *ok = true;
- return result;
- }
-
QLocale c_locale(QLocale::C);
return c_locale.d()->stringToDouble(*this, ok, QLocalePrivate::FailOnGroupSeparators);
}
@@ -5744,11 +5736,14 @@ double QString::toDouble(bool *ok) const
If a conversion error occurs, *\a{ok} is set to false; otherwise
*\a{ok} is set to true. Returns 0.0 if the conversion fails.
+ The string conversion will always happen in the 'C' locale. For locale
+ dependent conversion use QLocale::toFloat()
+
Example:
\snippet doc/src/snippets/qstring/main.cpp 71
- \sa number(), toDouble(), toInt()
+ \sa number(), toDouble(), toInt(), QLocale::toFloat()
*/
#define QT_MAX_FLOAT 3.4028234663852886e+38
@@ -5850,8 +5845,9 @@ QString &QString::setNum(qulonglong n, int base)
The \a format can be 'f', 'F', 'e', 'E', 'g' or 'G' (see the
arg() function documentation for an explanation of the formats).
- Unlike QLocale::toString(), this function doesn't honor the
- user's locale settings.
+ The formatting always uses QLocale::C, i.e., English/UnitedStates.
+ To get a localized string representation of a number, use
+ QLocale::toString() with the appropriate locale.
*/
QString &QString::setNum(double n, char f, int prec)
@@ -5892,6 +5888,10 @@ QString &QString::setNum(double n, char f, int prec)
Sets the string to the printed value of \a n, formatted according
to the given \a format and \a precision, and returns a reference
to the string.
+
+ The formatting always uses QLocale::C, i.e., English/UnitedStates.
+ To get a localized string representation of a number, use
+ QLocale::toString() with the appropriate locale.
*/
@@ -5905,6 +5905,10 @@ QString &QString::setNum(double n, char f, int prec)
and 36. For bases other than 10, \a n is treated as an
unsigned integer.
+ The formatting always uses QLocale::C, i.e., English/UnitedStates.
+ To get a localized string representation of a number, use
+ QLocale::toString() with the appropriate locale.
+
\snippet doc/src/snippets/qstring/main.cpp 35
\sa setNum()
@@ -7164,11 +7168,29 @@ QString &QString::setRawData(const QChar *unicode, int size)
\sa latin1()
*/
+/*! \fn QLatin1String::QLatin1String(const char *str, int size)
+
+ Constructs a QLatin1String object that stores \a str with \a size.
+ Note that if \a str is 0, an empty string is created; this case
+ is handled by QString.
+
+ The string data is \e not copied. The caller must be able to
+ guarantee that \a str will not be deleted or modified as long as
+ the QLatin1String object exists.
+
+ \sa latin1()
+*/
+
/*! \fn const char *QLatin1String::latin1() const
Returns the Latin-1 string stored in this object.
*/
+/*! \fn int QLatin1String::size() const
+
+ Returns the size of the Latin-1 string stored in this object.
+*/
+
/*! \fn bool QLatin1String::operator==(const QString &other) const
Returns true if this string is equal to string \a other;
@@ -7324,37 +7346,37 @@ QString &QString::setRawData(const QChar *unicode, int size)
-/* \fn bool operator==(const QLatin1String &s1, const QLatin1String &s2)
+/*! \fn bool operator==(const QLatin1String &s1, const QLatin1String &s2)
\relates QLatin1String
Returns true if string \a s1 is lexically equal to string \a s2; otherwise
returns false.
*/
-/* \fn bool operator!=(const QLatin1String &s1, const QLatin1String &s2)
+/*! \fn bool operator!=(const QLatin1String &s1, const QLatin1String &s2)
\relates QLatin1String
Returns true if string \a s1 is lexically unequal to string \a s2; otherwise
returns false.
*/
-/* \fn bool operator<(const QLatin1String &s1, const QLatin1String &s2)
+/*! \fn bool operator<(const QLatin1String &s1, const QLatin1String &s2)
\relates QLatin1String
Returns true if string \a s1 is lexically smaller than string \a s2; otherwise
returns false.
*/
-/* \fn bool operator<=(const QLatin1String &s1, const QLatin1String &s2)
+/*! \fn bool operator<=(const QLatin1String &s1, const QLatin1String &s2)
\relates QLatin1String
Returns true if string \a s1 is lexically smaller than or equal to string \a s2; otherwise
returns false.
*/
-/* \fn bool operator>(const QLatin1String &s1, const QLatin1String &s2)
+/*! \fn bool operator>(const QLatin1String &s1, const QLatin1String &s2)
\relates QLatin1String
Returns true if string \a s1 is lexically greater than string \a s2; otherwise
returns false.
*/
-/* \fn bool operator>=(const QLatin1String &s1, const QLatin1String &s2)
+/*! \fn bool operator>=(const QLatin1String &s1, const QLatin1String &s2)
\relates QLatin1String
Returns true if string \a s1 is lexically greater than or equal to
@@ -7678,6 +7700,9 @@ bool operator==(const QString &s1,const QStringRef &s2)
*/
bool operator==(const QLatin1String &s1, const QStringRef &s2)
{
+ if (s1.size() != s2.size())
+ return false;
+
const ushort *uc = reinterpret_cast<const ushort *>(s2.unicode());
const ushort *e = uc + s2.size();
const uchar *c = reinterpret_cast<const uchar *>(s1.latin1());
@@ -8019,7 +8044,7 @@ QStringRef QString::rightRef(int n) const
Returns a substring reference to \a n characters of this string,
starting at the specified \a position.
- If the \a position exceeds the length of the string, an empty
+ If the \a position exceeds the length of the string, a null
reference is returned.
If there are less than \a n characters available in the string,
@@ -8036,7 +8061,7 @@ QStringRef QString::rightRef(int n) const
QStringRef QString::midRef(int position, int n) const
{
- if (d == &shared_null.str || position >= d->size)
+ if (d == &shared_null.str || position > d->size)
return QStringRef();
if (n < 0)
n = d->size - position;
diff --git a/src/corelib/tools/qstring.h b/src/corelib/tools/qstring.h
index 42fe85e81f..a857d2d4e5 100644
--- a/src/corelib/tools/qstring.h
+++ b/src/corelib/tools/qstring.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -61,7 +61,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QCharRef;
class QRegExp;
@@ -266,9 +265,9 @@ public:
int lastIndexOf(const QLatin1String &s, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
int lastIndexOf(const QStringRef &s, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
- inline QBool contains(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
- inline QBool contains(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
- inline QBool contains(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ inline bool contains(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ inline bool contains(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ inline bool contains(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
int count(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
int count(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
int count(const QStringRef &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
@@ -276,12 +275,12 @@ public:
#ifndef QT_NO_REGEXP
int indexOf(const QRegExp &, int from = 0) const;
int lastIndexOf(const QRegExp &, int from = -1) const;
- inline QBool contains(const QRegExp &rx) const { return QBool(indexOf(rx) != -1); }
+ inline bool contains(const QRegExp &rx) const { return indexOf(rx) != -1; }
int count(const QRegExp &) const;
int indexOf(QRegExp &, int from = 0) const;
int lastIndexOf(QRegExp &, int from = -1) const;
- inline QBool contains(QRegExp &rx) const { return QBool(indexOf(rx) != -1); }
+ inline bool contains(QRegExp &rx) const { return indexOf(rx) != -1; }
#endif
enum SectionFlag {
@@ -646,6 +645,7 @@ class QLatin1String
{
public:
Q_DECL_CONSTEXPR inline explicit QLatin1String(const char *s) : m_size(s ? int(strlen(s)) : 0), m_data(s) {}
+ Q_DECL_CONSTEXPR inline explicit QLatin1String(const char *s, int sz) : m_size(sz), m_data(s) {}
inline const char *latin1() const { return m_data; }
inline int size() const { return m_size; }
@@ -685,7 +685,7 @@ private:
typedef QLatin1String QLatin1Literal;
-inline QString::QString(const QLatin1String &aLatin1) : d(fromLatin1_helper(aLatin1.latin1()))
+inline QString::QString(const QLatin1String &aLatin1) : d(fromLatin1_helper(aLatin1.latin1(), aLatin1.size()))
{ }
inline int QString::length() const
{ return d->size; }
@@ -711,7 +711,7 @@ inline bool QString::isDetached() const
{ return !d->ref.isShared(); }
inline QString &QString::operator=(const QLatin1String &s)
{
- *this = fromLatin1(s.latin1());
+ *this = fromLatin1(s.latin1(), s.size());
return *this;
}
inline void QString::clear()
@@ -910,12 +910,12 @@ inline QString::const_iterator QString::end() const
{ return reinterpret_cast<const QChar*>(d->data() + d->size); }
inline QString::const_iterator QString::constEnd() const
{ return reinterpret_cast<const QChar*>(d->data() + d->size); }
-inline QBool QString::contains(const QString &s, Qt::CaseSensitivity cs) const
-{ return QBool(indexOf(s, 0, cs) != -1); }
-inline QBool QString::contains(const QStringRef &s, Qt::CaseSensitivity cs) const
-{ return QBool(indexOf(s, 0, cs) != -1); }
-inline QBool QString::contains(QChar c, Qt::CaseSensitivity cs) const
-{ return QBool(indexOf(c, 0, cs) != -1); }
+inline bool QString::contains(const QString &s, Qt::CaseSensitivity cs) const
+{ return indexOf(s, 0, cs) != -1; }
+inline bool QString::contains(const QStringRef &s, Qt::CaseSensitivity cs) const
+{ return indexOf(s, 0, cs) != -1; }
+inline bool QString::contains(QChar c, Qt::CaseSensitivity cs) const
+{ return indexOf(c, 0, cs) != -1; }
inline bool operator==(QString::Null, QString::Null) { return true; }
@@ -973,17 +973,21 @@ inline QT_ASCII_CAST_WARN bool operator>=(const char *s1, const QLatin1String &s
{ return (QString::fromAscii(s1, s1 ? int(strlen(s1)) : -1) >= s2); }
inline bool operator==(const QLatin1String &s1, const QLatin1String &s2)
-{ return (qstrcmp(s1.latin1(), s2.latin1()) == 0); }
+{ return (s1.size() == s2.size() && !memcmp(s1.latin1(), s2.latin1(), s1.size())); }
inline bool operator!=(const QLatin1String &s1, const QLatin1String &s2)
-{ return (qstrcmp(s1.latin1(), s2.latin1()) != 0); }
+{ return (s1.size() != s2.size() || memcmp(s1.latin1(), s2.latin1(), s1.size())); }
inline bool operator<(const QLatin1String &s1, const QLatin1String &s2)
-{ return (qstrcmp(s1.latin1(), s2.latin1()) < 0); }
+{ int r = memcmp(s1.latin1(), s2.latin1(), qMin(s1.size(), s2.size()));
+ return (r < 0) || (r == 0 && s1.size() < s2.size()); }
inline bool operator<=(const QLatin1String &s1, const QLatin1String &s2)
-{ return (qstrcmp(s1.latin1(), s2.latin1()) <= 0); }
+{ int r = memcmp(s1.latin1(), s2.latin1(), qMin(s1.size(), s2.size()));
+ return (r < 0) || (r == 0 && s1.size() <= s2.size()); }
inline bool operator>(const QLatin1String &s1, const QLatin1String &s2)
-{ return (qstrcmp(s1.latin1(), s2.latin1()) > 0); }
+{ int r = memcmp(s1.latin1(), s2.latin1(), qMin(s1.size(), s2.size()));
+ return (r > 0) || (r == 0 && s1.size() > s2.size()); }
inline bool operator>=(const QLatin1String &s1, const QLatin1String &s2)
-{ return (qstrcmp(s1.latin1(), s2.latin1()) >= 0); }
+{ int r = memcmp(s1.latin1(), s2.latin1(), qMin(s1.size(), s2.size()));
+ return (r > 0) || (r == 0 && s1.size() >= s2.size()); }
inline bool QString::operator==(const QByteArray &s) const
@@ -1115,10 +1119,10 @@ public:
int lastIndexOf(QLatin1String str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
int lastIndexOf(const QStringRef &str, int from = -1, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
- inline QBool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
- inline QBool contains(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
- inline QBool contains(QLatin1String str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
- inline QBool contains(const QStringRef &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ inline bool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ inline bool contains(QChar ch, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ inline bool contains(QLatin1String str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ inline bool contains(const QStringRef &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
int count(const QString &s, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
int count(QChar c, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
@@ -1258,14 +1262,14 @@ inline int QStringRef::localeAwareCompare(const QStringRef &s1, const QString &s
inline int QStringRef::localeAwareCompare(const QStringRef &s1, const QStringRef &s2)
{ return QString::localeAwareCompare_helper(s1.constData(), s1.length(), s2.constData(), s2.length()); }
-inline QBool QStringRef::contains(const QString &s, Qt::CaseSensitivity cs) const
-{ return QBool(indexOf(s, 0, cs) != -1); }
-inline QBool QStringRef::contains(QLatin1String s, Qt::CaseSensitivity cs) const
-{ return QBool(indexOf(s, 0, cs) != -1); }
-inline QBool QStringRef::contains(QChar c, Qt::CaseSensitivity cs) const
-{ return QBool(indexOf(c, 0, cs) != -1); }
-inline QBool QStringRef::contains(const QStringRef &s, Qt::CaseSensitivity cs) const
-{ return QBool(indexOf(s, 0, cs) != -1); }
+inline bool QStringRef::contains(const QString &s, Qt::CaseSensitivity cs) const
+{ return indexOf(s, 0, cs) != -1; }
+inline bool QStringRef::contains(QLatin1String s, Qt::CaseSensitivity cs) const
+{ return indexOf(s, 0, cs) != -1; }
+inline bool QStringRef::contains(QChar c, Qt::CaseSensitivity cs) const
+{ return indexOf(c, 0, cs) != -1; }
+inline bool QStringRef::contains(const QStringRef &s, Qt::CaseSensitivity cs) const
+{ return indexOf(s, 0, cs) != -1; }
namespace Qt {
#if QT_DEPRECATED_SINCE(5, 0)
diff --git a/src/corelib/tools/qstringbuilder.cpp b/src/corelib/tools/qstringbuilder.cpp
index 018a312fa6..3d6b0eb709 100644
--- a/src/corelib/tools/qstringbuilder.cpp
+++ b/src/corelib/tools/qstringbuilder.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qstringbuilder.h b/src/corelib/tools/qstringbuilder.h
index 016e37fb38..1afdde852c 100644
--- a/src/corelib/tools/qstringbuilder.h
+++ b/src/corelib/tools/qstringbuilder.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -57,7 +57,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
struct Q_CORE_EXPORT QAbstractConcatenable
{
diff --git a/src/corelib/tools/qstringlist.cpp b/src/corelib/tools/qstringlist.cpp
index 1fca78b03b..a352045a7d 100644
--- a/src/corelib/tools/qstringlist.cpp
+++ b/src/corelib/tools/qstringlist.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -266,7 +266,7 @@ QStringList QtPrivate::QStringList_filter(const QStringList *that, const QString
/*!
- \fn QBool QStringList::contains(const QString &str, Qt::CaseSensitivity cs) const
+ \fn bool QStringList::contains(const QString &str, Qt::CaseSensitivity cs) const
Returns true if the list contains the string \a str; otherwise
returns false. The search is case insensitive if \a cs is
@@ -274,15 +274,15 @@ QStringList QtPrivate::QStringList_filter(const QStringList *that, const QString
\sa indexOf(), lastIndexOf(), QString::contains()
*/
-QBool QtPrivate::QStringList_contains(const QStringList *that, const QString &str,
- Qt::CaseSensitivity cs)
+bool QtPrivate::QStringList_contains(const QStringList *that, const QString &str,
+ Qt::CaseSensitivity cs)
{
for (int i = 0; i < that->size(); ++i) {
const QString & string = that->at(i);
if (string.length() == str.length() && str.compare(string, cs) == 0)
- return QBool(true);
+ return true;
}
- return QBool(false);
+ return false;
}
#ifndef QT_NO_REGEXP
diff --git a/src/corelib/tools/qstringlist.h b/src/corelib/tools/qstringlist.h
index 6c32f11096..260008f183 100644
--- a/src/corelib/tools/qstringlist.h
+++ b/src/corelib/tools/qstringlist.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QRegExp;
@@ -77,7 +76,7 @@ public:
inline QString join(const QString &sep) const;
inline QStringList filter(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
- inline QBool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
+ inline bool contains(const QString &str, Qt::CaseSensitivity cs = Qt::CaseSensitive) const;
inline QStringList &replaceInStrings(const QString &before, const QString &after, Qt::CaseSensitivity cs = Qt::CaseSensitive);
@@ -107,6 +106,8 @@ public:
#endif
};
+Q_DECLARE_TYPEINFO(QStringList, Q_MOVABLE_TYPE);
+
namespace QtPrivate {
void Q_CORE_EXPORT QStringList_sort(QStringList *that);
int Q_CORE_EXPORT QStringList_removeDuplicates(QStringList *that);
@@ -114,7 +115,7 @@ namespace QtPrivate {
QStringList Q_CORE_EXPORT QStringList_filter(const QStringList *that, const QString &str,
Qt::CaseSensitivity cs);
- QBool Q_CORE_EXPORT QStringList_contains(const QStringList *that, const QString &str, Qt::CaseSensitivity cs);
+ bool Q_CORE_EXPORT QStringList_contains(const QStringList *that, const QString &str, Qt::CaseSensitivity cs);
void Q_CORE_EXPORT QStringList_replaceInStrings(QStringList *that, const QString &before, const QString &after,
Qt::CaseSensitivity cs);
@@ -148,7 +149,7 @@ inline QStringList QStringList::filter(const QString &str, Qt::CaseSensitivity c
return QtPrivate::QStringList_filter(this, str, cs);
}
-inline QBool QStringList::contains(const QString &str, Qt::CaseSensitivity cs) const
+inline bool QStringList::contains(const QString &str, Qt::CaseSensitivity cs) const
{
return QtPrivate::QStringList_contains(this, str, cs);
}
diff --git a/src/corelib/tools/qstringmatcher.cpp b/src/corelib/tools/qstringmatcher.cpp
index 36016a9401..faab7a903f 100644
--- a/src/corelib/tools/qstringmatcher.cpp
+++ b/src/corelib/tools/qstringmatcher.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qstringmatcher.h b/src/corelib/tools/qstringmatcher.h
index 9f5e10b942..a9b2a7c371 100644
--- a/src/corelib/tools/qstringmatcher.h
+++ b/src/corelib/tools/qstringmatcher.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QStringMatcherPrivate;
diff --git a/src/corelib/tools/qtextboundaryfinder.cpp b/src/corelib/tools/qtextboundaryfinder.cpp
index 4554ebb34f..20ee954efd 100644
--- a/src/corelib/tools/qtextboundaryfinder.cpp
+++ b/src/corelib/tools/qtextboundaryfinder.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qtextboundaryfinder.h b/src/corelib/tools/qtextboundaryfinder.h
index 3f4f309d31..dc26939664 100644
--- a/src/corelib/tools/qtextboundaryfinder.h
+++ b/src/corelib/tools/qtextboundaryfinder.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QTextBoundaryFinderPrivate;
diff --git a/src/corelib/tools/qtimeline.cpp b/src/corelib/tools/qtimeline.cpp
index 2ff25a9a46..f0d8c248b4 100644
--- a/src/corelib/tools/qtimeline.cpp
+++ b/src/corelib/tools/qtimeline.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qtimeline.h b/src/corelib/tools/qtimeline.h
index 06a5d76a4b..48e2165b4f 100644
--- a/src/corelib/tools/qtimeline.h
+++ b/src/corelib/tools/qtimeline.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QTimeLinePrivate;
class Q_CORE_EXPORT QTimeLine : public QObject
diff --git a/src/corelib/tools/qtools_p.h b/src/corelib/tools/qtools_p.h
index 6a1b78b12b..d7ebba1f57 100644
--- a/src/corelib/tools/qtools_p.h
+++ b/src/corelib/tools/qtools_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qunicodetables.cpp b/src/corelib/tools/qunicodetables.cpp
index 7fc09e7d60..7f823d4380 100644
--- a/src/corelib/tools/qunicodetables.cpp
+++ b/src/corelib/tools/qunicodetables.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qunicodetables_p.h b/src/corelib/tools/qunicodetables_p.h
index 0a357c0da6..0b8115035c 100644
--- a/src/corelib/tools/qunicodetables_p.h
+++ b/src/corelib/tools/qunicodetables_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qvarlengtharray.h b/src/corelib/tools/qvarlengtharray.h
index d37389a8dc..a6613a3774 100644
--- a/src/corelib/tools/qvarlengtharray.h
+++ b/src/corelib/tools/qvarlengtharray.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
template<class T, int Prealloc>
class QPodList;
diff --git a/src/corelib/tools/qvarlengtharray.qdoc b/src/corelib/tools/qvarlengtharray.qdoc
index c4198aafa7..1a0579a077 100644
--- a/src/corelib/tools/qvarlengtharray.qdoc
+++ b/src/corelib/tools/qvarlengtharray.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qvector.cpp b/src/corelib/tools/qvector.cpp
index a7a6add15a..0a15c2208c 100644
--- a/src/corelib/tools/qvector.cpp
+++ b/src/corelib/tools/qvector.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/qvector.h b/src/corelib/tools/qvector.h
index 0116d1db6c..22ce2a3d8a 100644
--- a/src/corelib/tools/qvector.h
+++ b/src/corelib/tools/qvector.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -61,7 +61,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
struct Q_CORE_EXPORT QVectorData
{
diff --git a/src/corelib/tools/qvsnprintf.cpp b/src/corelib/tools/qvsnprintf.cpp
index 85f8270ffd..9185bff83a 100644
--- a/src/corelib/tools/qvsnprintf.cpp
+++ b/src/corelib/tools/qvsnprintf.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/tools/tools.pri b/src/corelib/tools/tools.pri
index 2ec32fd9e9..21407fa9cd 100644
--- a/src/corelib/tools/tools.pri
+++ b/src/corelib/tools/tools.pri
@@ -95,7 +95,6 @@ SOURCES += \
SOURCES += tools/qelapsedtimer_mac.cpp
OBJECTIVE_SOURCES += tools/qlocale_mac.mm
}
-else:symbian:SOURCES += tools/qelapsedtimer_symbian.cpp tools/qlocale_symbian.cpp
else:unix:SOURCES += tools/qelapsedtimer_unix.cpp tools/qlocale_unix.cpp
else:win32:SOURCES += tools/qelapsedtimer_win.cpp tools/qlocale_win.cpp
else:integrity:SOURCES += tools/qelapsedtimer_unix.cpp tools/qlocale_unix.cpp
@@ -131,5 +130,5 @@ INCLUDEPATH += ../3rdparty/md5 \
../3rdparty/md4
# Note: libm should be present by default becaue this is C++
-!macx-icc:!vxworks:!symbian:unix:LIBS_PRIVATE += -lm
+!macx-icc:!vxworks:unix:LIBS_PRIVATE += -lm
diff --git a/src/corelib/xml/make-parser.sh b/src/corelib/xml/make-parser.sh
index a02538ba79..4c6628ab54 100755
--- a/src/corelib/xml/make-parser.sh
+++ b/src/corelib/xml/make-parser.sh
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is the build configuration utility of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
diff --git a/src/corelib/xml/qxmlstream.cpp b/src/corelib/xml/qxmlstream.cpp
index 04336c3a31..6222a76f08 100644
--- a/src/corelib/xml/qxmlstream.cpp
+++ b/src/corelib/xml/qxmlstream.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/xml/qxmlstream.g b/src/corelib/xml/qxmlstream.g
index 88bfcd47cc..87a10003d3 100644
--- a/src/corelib/xml/qxmlstream.g
+++ b/src/corelib/xml/qxmlstream.g
@@ -1,8 +1,7 @@
----------------------------------------------------------------------------
--
-- Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
--- All rights reserved.
--- Contact: Nokia Corporation (qt-info@nokia.com)
+-- Contact: http://www.qt-project.org/
--
-- This file is part of the QtCore module of the Qt Toolkit.
--
@@ -35,6 +34,7 @@
--
--
--
+--
-- $QT_END_LICENSE$
--
----------------------------------------------------------------------------
diff --git a/src/corelib/xml/qxmlstream.h b/src/corelib/xml/qxmlstream.h
index 04f9322712..3a9ddfd990 100644
--- a/src/corelib/xml/qxmlstream.h
+++ b/src/corelib/xml/qxmlstream.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class Q_CORE_EXPORT QXmlStreamStringRef {
QString m_string;
diff --git a/src/corelib/xml/qxmlstream_p.h b/src/corelib/xml/qxmlstream_p.h
index e67ff3d76b..067216d3a1 100644
--- a/src/corelib/xml/qxmlstream_p.h
+++ b/src/corelib/xml/qxmlstream_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/xml/qxmlutils.cpp b/src/corelib/xml/qxmlutils.cpp
index afc4fff8d6..954846a573 100644
--- a/src/corelib/xml/qxmlutils.cpp
+++ b/src/corelib/xml/qxmlutils.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/corelib/xml/qxmlutils_p.h b/src/corelib/xml/qxmlutils_p.h
index 8b8d2358c9..87d72c9814 100644
--- a/src/corelib/xml/qxmlutils_p.h
+++ b/src/corelib/xml/qxmlutils_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/dbus.pro b/src/dbus/dbus.pro
index 8669bb003a..6fd48de48d 100644
--- a/src/dbus/dbus.pro
+++ b/src/dbus/dbus.pro
@@ -2,8 +2,7 @@ load(qt_module)
TARGET = QtDBus
QPRO_PWD = $$PWD
-QT = core-private \
- xml
+QT = core-private
CONFIG += link_pkgconfig module
MODULE_PRI = ../modules/qt_dbus.pri
@@ -21,8 +20,7 @@ unix|win32-g++* {
QMAKE_PKGCONFIG_DESCRIPTION = Qt \
DBus \
module
- QMAKE_PKGCONFIG_REQUIRES = QtCore \
- QtXml
+ QMAKE_PKGCONFIG_REQUIRES = QtCore
}
win32 {
wince*:LIBS_PRIVATE += -lws2
diff --git a/src/dbus/qdbus_symbols.cpp b/src/dbus/qdbus_symbols.cpp
index 8f02bedf15..7f4d8e7f33 100644
--- a/src/dbus/qdbus_symbols.cpp
+++ b/src/dbus/qdbus_symbols.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbus_symbols_p.h b/src/dbus/qdbus_symbols_p.h
index bb17231c34..080fe68e6e 100644
--- a/src/dbus/qdbus_symbols_p.h
+++ b/src/dbus/qdbus_symbols_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusabstractadaptor.cpp b/src/dbus/qdbusabstractadaptor.cpp
index 6acbd98fbf..9eae45b34b 100644
--- a/src/dbus/qdbusabstractadaptor.cpp
+++ b/src/dbus/qdbusabstractadaptor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusabstractadaptor.h b/src/dbus/qdbusabstractadaptor.h
index 2f5896a9cb..75a3876b1b 100644
--- a/src/dbus/qdbusabstractadaptor.h
+++ b/src/dbus/qdbusabstractadaptor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
class QDBusAbstractAdaptorPrivate;
class Q_DBUS_EXPORT QDBusAbstractAdaptor: public QObject
diff --git a/src/dbus/qdbusabstractadaptor_p.h b/src/dbus/qdbusabstractadaptor_p.h
index a9e184a186..a0b61e1887 100644
--- a/src/dbus/qdbusabstractadaptor_p.h
+++ b/src/dbus/qdbusabstractadaptor_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusabstractinterface.cpp b/src/dbus/qdbusabstractinterface.cpp
index a63864a0b3..eeaf0b13eb 100644
--- a/src/dbus/qdbusabstractinterface.cpp
+++ b/src/dbus/qdbusabstractinterface.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -125,7 +125,7 @@ void QDBusAbstractInterfacePrivate::property(const QMetaProperty &mp, QVariant &
// is this metatype registered?
const char *expectedSignature = "";
- if (mp.type() != 0xff) {
+ if (int(mp.type()) != QMetaType::QVariant) {
expectedSignature = QDBusMetaType::typeToSignature(where.userType());
if (expectedSignature == 0) {
qWarning("QDBusAbstractInterface: type %s must be registered with QtDBus before it can be "
@@ -164,7 +164,7 @@ void QDBusAbstractInterfacePrivate::property(const QMetaProperty &mp, QVariant &
const char *foundType = 0;
QVariant value = qvariant_cast<QDBusVariant>(reply.arguments().at(0)).variant();
- if (value.userType() == where.userType() || mp.type() == 0xff
+ if (value.userType() == where.userType() || mp.userType() == QMetaType::QVariant
|| (expectedSignature[0] == 'v' && expectedSignature[1] == '\0')) {
// simple match
where = value;
diff --git a/src/dbus/qdbusabstractinterface.h b/src/dbus/qdbusabstractinterface.h
index 9cc68594e6..648229c061 100644
--- a/src/dbus/qdbusabstractinterface.h
+++ b/src/dbus/qdbusabstractinterface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -57,7 +57,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
class QDBusError;
class QDBusPendingCall;
diff --git a/src/dbus/qdbusabstractinterface_p.h b/src/dbus/qdbusabstractinterface_p.h
index b0fb04e831..4324302cf3 100644
--- a/src/dbus/qdbusabstractinterface_p.h
+++ b/src/dbus/qdbusabstractinterface_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusargument.cpp b/src/dbus/qdbusargument.cpp
index 4bb5d55724..1c2cb6f0f0 100644
--- a/src/dbus/qdbusargument.cpp
+++ b/src/dbus/qdbusargument.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1134,7 +1134,7 @@ const QDBusArgument &operator>>(const QDBusArgument &a, QDate &date)
a.endStructure();
if (y != 0 && m != 0 && d != 0)
- date.setYMD(y, m, d);
+ date.setDate(y, m, d);
else
date = QDate();
return a;
diff --git a/src/dbus/qdbusargument.h b/src/dbus/qdbusargument.h
index 74a5b37078..b4731fdb1f 100644
--- a/src/dbus/qdbusargument.h
+++ b/src/dbus/qdbusargument.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
class QDBusUnixFileDescriptor;
diff --git a/src/dbus/qdbusargument_p.h b/src/dbus/qdbusargument_p.h
index c04e458449..02f86c1413 100644
--- a/src/dbus/qdbusargument_p.h
+++ b/src/dbus/qdbusargument_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusconnection.cpp b/src/dbus/qdbusconnection.cpp
index 50a55040c8..08a840c5c9 100644
--- a/src/dbus/qdbusconnection.cpp
+++ b/src/dbus/qdbusconnection.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusconnection.h b/src/dbus/qdbusconnection.h
index 3b88ad3f9a..ad620fd7a6 100644
--- a/src/dbus/qdbusconnection.h
+++ b/src/dbus/qdbusconnection.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
namespace QDBus
{
diff --git a/src/dbus/qdbusconnection_p.h b/src/dbus/qdbusconnection_p.h
index 46fed80865..41a1341e40 100644
--- a/src/dbus/qdbusconnection_p.h
+++ b/src/dbus/qdbusconnection_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -336,7 +336,6 @@ public:
// in qdbusmisc.cpp
extern int qDBusParametersForMethod(const QMetaMethod &mm, QList<int>& metaTypes);
-extern int qDBusNameToTypeId(const char *name);
extern bool qDBusCheckAsyncTag(const char *tag);
extern bool qDBusInterfaceInObject(QObject *obj, const QString &interface_name);
extern QString qDBusInterfaceFromMetaObject(const QMetaObject *mo);
diff --git a/src/dbus/qdbusconnectioninterface.cpp b/src/dbus/qdbusconnectioninterface.cpp
index 46080027a6..0f85f9090e 100644
--- a/src/dbus/qdbusconnectioninterface.cpp
+++ b/src/dbus/qdbusconnectioninterface.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusconnectioninterface.h b/src/dbus/qdbusconnectioninterface.h
index 93ee6709eb..b3651c87a7 100644
--- a/src/dbus/qdbusconnectioninterface.h
+++ b/src/dbus/qdbusconnectioninterface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
class QDBusConnection;
class QString;
diff --git a/src/dbus/qdbusconnectionmanager_p.h b/src/dbus/qdbusconnectionmanager_p.h
index 9d929b019b..f82314aa36 100644
--- a/src/dbus/qdbusconnectionmanager_p.h
+++ b/src/dbus/qdbusconnectionmanager_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbuscontext.cpp b/src/dbus/qdbuscontext.cpp
index e4a5d879d7..cc987d1410 100644
--- a/src/dbus/qdbuscontext.cpp
+++ b/src/dbus/qdbuscontext.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbuscontext.h b/src/dbus/qdbuscontext.h
index 9ceef6ecc1..dd3a8fca3b 100644
--- a/src/dbus/qdbuscontext.h
+++ b/src/dbus/qdbuscontext.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
class QDBusConnection;
class QDBusMessage;
diff --git a/src/dbus/qdbuscontext_p.h b/src/dbus/qdbuscontext_p.h
index 5aa5da0378..f7f28a114e 100644
--- a/src/dbus/qdbuscontext_p.h
+++ b/src/dbus/qdbuscontext_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusdemarshaller.cpp b/src/dbus/qdbusdemarshaller.cpp
index 215e6a1eb1..692606b539 100644
--- a/src/dbus/qdbusdemarshaller.cpp
+++ b/src/dbus/qdbusdemarshaller.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbuserror.cpp b/src/dbus/qdbuserror.cpp
index 911e104736..9db279e005 100644
--- a/src/dbus/qdbuserror.cpp
+++ b/src/dbus/qdbuserror.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbuserror.h b/src/dbus/qdbuserror.h
index 3f6a66c2f4..0cea8e2cde 100644
--- a/src/dbus/qdbuserror.h
+++ b/src/dbus/qdbuserror.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ struct DBusError;
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
class QDBusMessage;
diff --git a/src/dbus/qdbusextratypes.cpp b/src/dbus/qdbusextratypes.cpp
index 8d9d2e06fd..fca3a8db6e 100644
--- a/src/dbus/qdbusextratypes.cpp
+++ b/src/dbus/qdbusextratypes.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusextratypes.h b/src/dbus/qdbusextratypes.h
index 36060ab0a4..c4e843422d 100644
--- a/src/dbus/qdbusextratypes.h
+++ b/src/dbus/qdbusextratypes.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
// defined in qhash.cpp
Q_CORE_EXPORT uint qHash(const QString &key);
diff --git a/src/dbus/qdbusintegrator.cpp b/src/dbus/qdbusintegrator.cpp
index 59b191bd10..f0c8224be2 100644
--- a/src/dbus/qdbusintegrator.cpp
+++ b/src/dbus/qdbusintegrator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -645,7 +645,7 @@ static int findSlot(const QMetaObject *mo, const QByteArray &name, int flags,
if (paren != name.length() || !slotname.startsWith(name))
continue;
- int returnType = qDBusNameToTypeId(mm.typeName());
+ int returnType = QMetaType::type(mm.typeName());
bool isAsync = qDBusCheckAsyncTag(mm.tag());
bool isScriptable = mm.attributes() & QMetaMethod::Scriptable;
diff --git a/src/dbus/qdbusintegrator_p.h b/src/dbus/qdbusintegrator_p.h
index 1e39bd734a..c9a2efc57d 100644
--- a/src/dbus/qdbusintegrator_p.h
+++ b/src/dbus/qdbusintegrator_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusinterface.cpp b/src/dbus/qdbusinterface.cpp
index 1bf468acad..d390f395ee 100644
--- a/src/dbus/qdbusinterface.cpp
+++ b/src/dbus/qdbusinterface.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusinterface.h b/src/dbus/qdbusinterface.h
index 75e876a389..5e123927fa 100644
--- a/src/dbus/qdbusinterface.h
+++ b/src/dbus/qdbusinterface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
class QDBusInterfacePrivate;
class Q_DBUS_EXPORT QDBusInterface: public QDBusAbstractInterface
diff --git a/src/dbus/qdbusinterface_p.h b/src/dbus/qdbusinterface_p.h
index b85d3cea77..e9254d03dd 100644
--- a/src/dbus/qdbusinterface_p.h
+++ b/src/dbus/qdbusinterface_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusinternalfilters.cpp b/src/dbus/qdbusinternalfilters.cpp
index 7d07c92663..de1191afea 100644
--- a/src/dbus/qdbusinternalfilters.cpp
+++ b/src/dbus/qdbusinternalfilters.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -324,19 +324,15 @@ static int writeProperty(QObject *obj, const QByteArray &property_name, QVariant
// we found our property
// do we have the right type?
- int id = mp.type();
- if (id == QVariant::UserType) {
- // dynamic type
- id = qDBusNameToTypeId(mp.typeName());
- if (id == -1) {
- // type not registered?
- qWarning("QDBusConnection: Unable to handle unregistered datatype '%s' for property '%s::%s'",
- mp.typeName(), mo->className(), property_name.constData());
- return PropertyWriteFailed;
- }
+ int id = mp.userType();
+ if (!id){
+ // type not registered or invalid / void?
+ qWarning("QDBusConnection: Unable to handle unregistered datatype '%s' for property '%s::%s'",
+ mp.typeName(), mo->className(), property_name.constData());
+ return PropertyWriteFailed;
}
- if (id != 0xff && value.userType() == QDBusMetaTypeId::argument) {
+ if (id != QMetaType::QVariant && value.userType() == QDBusMetaTypeId::argument) {
// we have to demarshall before writing
void *null = 0;
QVariant other(id, null);
@@ -434,7 +430,7 @@ static QVariantMap readAllProperties(QObject *object, int flags)
continue;
// is it a registered property?
- int typeId = qDBusNameToTypeId(mp.typeName());
+ int typeId = mp.userType();
if (!typeId)
continue;
const char *signature = QDBusMetaType::typeToSignature(typeId);
diff --git a/src/dbus/qdbusintrospection.cpp b/src/dbus/qdbusintrospection.cpp
index 23eda78e5a..88e44a5af3 100644
--- a/src/dbus/qdbusintrospection.cpp
+++ b/src/dbus/qdbusintrospection.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -407,23 +407,6 @@ QDBusIntrospection::parseObject(const QString &xml, const QString &service, cons
return *retval;
}
-/*!
- Parses the XML document fragment (given by \a xml) containing one object node and returns all
- the information about the interfaces and sub-objects, found at the service \a service and path
- \a path.
-
- The Objects map returned will contain the absolute path names in the key.
-*/
-QDBusIntrospection::ObjectTree
-QDBusIntrospection::parseObjectTree(const QString &xml, const QString &service, const QString &path)
-{
- QDBusXmlParser parser(service, path, xml);
- QSharedDataPointer<QDBusIntrospection::ObjectTree> retval = parser.objectTree();
- if (!retval)
- return QDBusIntrospection::ObjectTree();
- return *retval;
-}
-
QT_END_NAMESPACE
#endif // QT_NO_DBUS
diff --git a/src/dbus/qdbusintrospection_p.h b/src/dbus/qdbusintrospection_p.h
index 025cf63fe3..62a2d14f42 100644
--- a/src/dbus/qdbusintrospection_p.h
+++ b/src/dbus/qdbusintrospection_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,7 @@
#include <QtCore/qmap.h>
#include <QtCore/qpair.h>
#include <QtCore/qshareddata.h>
-#include <qdbusmacros.h>
+#include "qdbusmacros.h"
QT_BEGIN_NAMESPACE
@@ -150,26 +150,16 @@ public:
{
QString service;
QString path;
- QString introspection;
QStringList interfaces;
QStringList childObjects;
};
- struct ObjectTree: public Object
- {
- Interfaces interfaceData;
- Objects childObjectData;
- };
-
public:
static Interface parseInterface(const QString &xml);
static Interfaces parseInterfaces(const QString &xml);
static Object parseObject(const QString &xml, const QString &service = QString(),
const QString &path = QString());
- static ObjectTree parseObjectTree(const QString &xml,
- const QString &service,
- const QString &path);
private:
QDBusIntrospection();
diff --git a/src/dbus/qdbusmacros.h b/src/dbus/qdbusmacros.h
index e508362db0..a595e631a2 100644
--- a/src/dbus/qdbusmacros.h
+++ b/src/dbus/qdbusmacros.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -62,7 +62,6 @@
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/dbus/qdbusmarshaller.cpp b/src/dbus/qdbusmarshaller.cpp
index 843388c51e..1f6ef99153 100644
--- a/src/dbus/qdbusmarshaller.cpp
+++ b/src/dbus/qdbusmarshaller.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusmessage.cpp b/src/dbus/qdbusmessage.cpp
index 8cd2cc5d67..d6bdc19d51 100644
--- a/src/dbus/qdbusmessage.cpp
+++ b/src/dbus/qdbusmessage.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusmessage.h b/src/dbus/qdbusmessage.h
index 9cb1a476ca..20859ebb70 100644
--- a/src/dbus/qdbusmessage.h
+++ b/src/dbus/qdbusmessage.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
class QDBusMessagePrivate;
class Q_DBUS_EXPORT QDBusMessage
diff --git a/src/dbus/qdbusmessage_p.h b/src/dbus/qdbusmessage_p.h
index da716a6def..d1f1aef371 100644
--- a/src/dbus/qdbusmessage_p.h
+++ b/src/dbus/qdbusmessage_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusmetaobject.cpp b/src/dbus/qdbusmetaobject.cpp
index e25de261ed..c83865978c 100644
--- a/src/dbus/qdbusmetaobject.cpp
+++ b/src/dbus/qdbusmetaobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,6 +53,8 @@
#include "qdbusintrospection_p.h"
#include "qdbusabstractinterface_p.h"
+#include <private/qmetaobject_p.h>
+
#ifndef QT_NO_DBUS
QT_BEGIN_NAMESPACE
@@ -89,47 +91,7 @@ private:
QByteArray name;
};
- enum PropertyFlags {
- Invalid = 0x00000000,
- Readable = 0x00000001,
- Writable = 0x00000002,
- Resettable = 0x00000004,
- EnumOrFlag = 0x00000008,
- StdCppSet = 0x00000100,
- // Override = 0x00000200,
- Designable = 0x00001000,
- ResolveDesignable = 0x00002000,
- Scriptable = 0x00004000,
- ResolveScriptable = 0x00008000,
- Stored = 0x00010000,
- ResolveStored = 0x00020000,
- Editable = 0x00040000,
- ResolveEditable = 0x00080000,
- User = 0x00100000,
- ResolveUser = 0x00200000
- };
-
- enum MethodFlags {
- AccessPrivate = 0x00,
- AccessProtected = 0x01,
- AccessPublic = 0x02,
- AccessMask = 0x03, //mask
-
- MethodMethod = 0x00,
- MethodSignal = 0x04,
- MethodSlot = 0x08,
- MethodTypeMask = 0x0c,
-
- MethodCompatibility = 0x10,
- MethodCloned = 0x20,
- MethodScriptable = 0x40
- };
-
- enum MetaObjectFlags {
- DynamicMetaObject = 0x01,
- RequiresVariantMetaObject = 0x02
- };
-
+ QMap<QByteArray, Method> signals_;
QMap<QByteArray, Method> methods;
QMap<QByteArray, Property> properties;
@@ -148,19 +110,8 @@ private:
static const int intsPerProperty = 2;
static const int intsPerMethod = 5;
-// ### from kernel/qmetaobject.cpp (Qt 4.1.2):
-struct QDBusMetaObjectPrivate
+struct QDBusMetaObjectPrivate : public QMetaObjectPrivate
{
- int revision;
- int className;
- int classInfoCount, classInfoData;
- int methodCount, methodData;
- int propertyCount, propertyData;
- int enumeratorCount, enumeratorData;
- int constructorCount, constructorData; // since revision 2
- int flags; // since revision 3
-
- // this is specific for QDBusMetaObject:
int propertyDBusData;
int methodDBusData;
};
@@ -202,9 +153,7 @@ QDBusMetaObjectGenerator::findType(const QByteArray &signature,
// verify that it's a valid one
if (!typeName.isEmpty()) {
// type name found
- type = QVariant::nameToType(typeName);
- if (type == QVariant::UserType)
- type = QMetaType::type(typeName);
+ type = QMetaType::type(typeName);
}
if (type == QVariant::Invalid || signature != QDBusMetaType::typeToSignature(type)) {
@@ -371,7 +320,7 @@ void QDBusMetaObjectGenerator::parseSignals()
mm.flags = AccessProtected | MethodSignal | MethodScriptable;
// add
- methods.insert(QMetaObject::normalizedSignature(prototype), mm);
+ signals_.insert(QMetaObject::normalizedSignature(prototype), mm);
}
}
@@ -399,7 +348,7 @@ void QDBusMetaObjectGenerator::parseProperties()
mp.flags |= Writable;
if (mp.typeName == "QDBusVariant")
- mp.flags |= 0xff << 24;
+ mp.flags |= QMetaType::QVariant << 24;
else if (mp.type < 0xff)
// encode the type in the flags
mp.flags |= mp.type << 24;
@@ -423,11 +372,12 @@ void QDBusMetaObjectGenerator::write(QDBusMetaObject *obj)
idata.resize(sizeof(QDBusMetaObjectPrivate) / sizeof(int));
QDBusMetaObjectPrivate *header = reinterpret_cast<QDBusMetaObjectPrivate *>(idata.data());
- header->revision = 3;
+ Q_STATIC_ASSERT_X(QMetaObjectPrivate::OutputRevision == 6, "QtDBus meta-object generator should generate the same version as moc");
+ header->revision = QMetaObjectPrivate::OutputRevision;
header->className = 0;
header->classInfoCount = 0;
header->classInfoData = 0;
- header->methodCount = methods.count();
+ header->methodCount = signals_.count() + methods.count();
header->methodData = idata.size();
header->propertyCount = properties.count();
header->propertyData = header->methodData + header->methodCount * 5;
@@ -436,12 +386,16 @@ void QDBusMetaObjectGenerator::write(QDBusMetaObject *obj)
header->constructorCount = 0;
header->constructorData = 0;
header->flags = RequiresVariantMetaObject;
+ header->signalCount = signals_.count();
+ // These are specific to QDBusMetaObject:
header->propertyDBusData = header->propertyData + header->propertyCount * 3;
header->methodDBusData = header->propertyDBusData + header->propertyCount * intsPerProperty;
int data_size = idata.size() +
(header->methodCount * (5+intsPerMethod)) +
(header->propertyCount * (3+intsPerProperty));
+ foreach (const Method &mm, signals_)
+ data_size += 2 + mm.inputTypes.count() + mm.outputTypes.count();
foreach (const Method &mm, methods)
data_size += 2 + mm.inputTypes.count() + mm.outputTypes.count();
idata.resize(data_size + 1);
@@ -457,44 +411,48 @@ void QDBusMetaObjectGenerator::write(QDBusMetaObject *obj)
idata[typeidOffset++] = 0; // eod
// add each method:
- for (QMap<QByteArray, Method>::ConstIterator it = methods.constBegin();
- it != methods.constEnd(); ++it) {
- // form "prototype\0parameters\0typeName\0tag\0methodname\0inputSignature\0outputSignature"
- const Method &mm = it.value();
-
- idata[offset++] = stringdata.length();
- stringdata += it.key(); // prototype
- stringdata += null;
- idata[offset++] = stringdata.length();
- stringdata += mm.parameters;
- stringdata += null;
- idata[offset++] = stringdata.length();
- stringdata += mm.typeName;
- stringdata += null;
- idata[offset++] = stringdata.length();
- stringdata += mm.tag;
- stringdata += null;
- idata[offset++] = mm.flags;
-
- idata[signatureOffset++] = stringdata.length();
- stringdata += mm.name;
- stringdata += null;
- idata[signatureOffset++] = stringdata.length();
- stringdata += mm.inputSignature;
- stringdata += null;
- idata[signatureOffset++] = stringdata.length();
- stringdata += mm.outputSignature;
- stringdata += null;
-
- idata[signatureOffset++] = typeidOffset;
- idata[typeidOffset++] = mm.inputTypes.count();
- memcpy(idata.data() + typeidOffset, mm.inputTypes.data(), mm.inputTypes.count() * sizeof(int));
- typeidOffset += mm.inputTypes.count();
-
- idata[signatureOffset++] = typeidOffset;
- idata[typeidOffset++] = mm.outputTypes.count();
- memcpy(idata.data() + typeidOffset, mm.outputTypes.data(), mm.outputTypes.count() * sizeof(int));
- typeidOffset += mm.outputTypes.count();
+ for (int x = 0; x < 2; ++x) {
+ // Signals must be added before other methods, to match moc.
+ QMap<QByteArray, Method> &map = (x == 0) ? signals_ : methods;
+ for (QMap<QByteArray, Method>::ConstIterator it = map.constBegin();
+ it != map.constEnd(); ++it) {
+ // form "prototype\0parameters\0typeName\0tag\0methodname\0inputSignature\0outputSignature"
+ const Method &mm = it.value();
+
+ idata[offset++] = stringdata.length();
+ stringdata += it.key(); // prototype
+ stringdata += null;
+ idata[offset++] = stringdata.length();
+ stringdata += mm.parameters;
+ stringdata += null;
+ idata[offset++] = stringdata.length();
+ stringdata += mm.typeName;
+ stringdata += null;
+ idata[offset++] = stringdata.length();
+ stringdata += mm.tag;
+ stringdata += null;
+ idata[offset++] = mm.flags;
+
+ idata[signatureOffset++] = stringdata.length();
+ stringdata += mm.name;
+ stringdata += null;
+ idata[signatureOffset++] = stringdata.length();
+ stringdata += mm.inputSignature;
+ stringdata += null;
+ idata[signatureOffset++] = stringdata.length();
+ stringdata += mm.outputSignature;
+ stringdata += null;
+
+ idata[signatureOffset++] = typeidOffset;
+ idata[typeidOffset++] = mm.inputTypes.count();
+ memcpy(idata.data() + typeidOffset, mm.inputTypes.data(), mm.inputTypes.count() * sizeof(int));
+ typeidOffset += mm.inputTypes.count();
+
+ idata[signatureOffset++] = typeidOffset;
+ idata[typeidOffset++] = mm.outputTypes.count();
+ memcpy(idata.data() + typeidOffset, mm.outputTypes.data(), mm.outputTypes.count() * sizeof(int));
+ typeidOffset += mm.outputTypes.count();
+ }
}
Q_ASSERT(offset == header->propertyData);
diff --git a/src/dbus/qdbusmetaobject_p.h b/src/dbus/qdbusmetaobject_p.h
index 063234a49e..d8385fbcc7 100644
--- a/src/dbus/qdbusmetaobject_p.h
+++ b/src/dbus/qdbusmetaobject_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusmetatype.cpp b/src/dbus/qdbusmetatype.cpp
index e3ed5b5146..b0d640608a 100644
--- a/src/dbus/qdbusmetatype.cpp
+++ b/src/dbus/qdbusmetatype.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusmetatype.h b/src/dbus/qdbusmetatype.h
index 53b4c29591..bb791c9636 100644
--- a/src/dbus/qdbusmetatype.h
+++ b/src/dbus/qdbusmetatype.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
class Q_DBUS_EXPORT QDBusMetaType
{
diff --git a/src/dbus/qdbusmetatype_p.h b/src/dbus/qdbusmetatype_p.h
index 68deffbe08..8239657232 100644
--- a/src/dbus/qdbusmetatype_p.h
+++ b/src/dbus/qdbusmetatype_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusmisc.cpp b/src/dbus/qdbusmisc.cpp
index e7c7715eaa..7d68bf1185 100644
--- a/src/dbus/qdbusmisc.cpp
+++ b/src/dbus/qdbusmisc.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -69,14 +69,6 @@ bool qDBusCheckAsyncTag(const char *tag)
return false;
}
-int qDBusNameToTypeId(const char *name)
-{
- int id = static_cast<int>( QVariant::nameToType(name) );
- if (id == QVariant::UserType)
- id = QMetaType::type(name);
- return id;
-}
-
QString qDBusInterfaceFromMetaObject(const QMetaObject *mo)
{
QString interface;
@@ -158,7 +150,7 @@ int qDBusParametersForMethod(const QMetaMethod &mm, QList<int>& metaTypes)
QByteArray basictype = type;
basictype.truncate(type.length() - 1);
- int id = qDBusNameToTypeId(basictype);
+ int id = QMetaType::type(basictype);
if (id == 0) {
//qWarning("Could not parse the method '%s'", mm.signature());
// invalid type in method parameter list
@@ -177,7 +169,7 @@ int qDBusParametersForMethod(const QMetaMethod &mm, QList<int>& metaTypes)
return -1; // not allowed
}
- int id = qDBusNameToTypeId(type);
+ int id = QMetaType::type(type);
if (id == 0) {
//qWarning("Could not parse the method '%s'", mm.signature());
// invalid type in method parameter list
diff --git a/src/dbus/qdbuspendingcall.cpp b/src/dbus/qdbuspendingcall.cpp
index 1004146f1d..65d4b5533b 100644
--- a/src/dbus/qdbuspendingcall.cpp
+++ b/src/dbus/qdbuspendingcall.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbuspendingcall.h b/src/dbus/qdbuspendingcall.h
index dfdaf4e76a..6dfdef59d0 100644
--- a/src/dbus/qdbuspendingcall.h
+++ b/src/dbus/qdbuspendingcall.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,7 +55,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
class QDBusConnection;
class QDBusError;
diff --git a/src/dbus/qdbuspendingcall_p.h b/src/dbus/qdbuspendingcall_p.h
index 02057a74b2..2aaae7b494 100644
--- a/src/dbus/qdbuspendingcall_p.h
+++ b/src/dbus/qdbuspendingcall_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbuspendingreply.cpp b/src/dbus/qdbuspendingreply.cpp
index 5f930c71a1..78b64c4772 100644
--- a/src/dbus/qdbuspendingreply.cpp
+++ b/src/dbus/qdbuspendingreply.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbuspendingreply.h b/src/dbus/qdbuspendingreply.h
index 596a459009..ce8354deb3 100644
--- a/src/dbus/qdbuspendingreply.h
+++ b/src/dbus/qdbuspendingreply.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
class Q_DBUS_EXPORT QDBusPendingReplyData: public QDBusPendingCall
{
diff --git a/src/dbus/qdbusreply.cpp b/src/dbus/qdbusreply.cpp
index 6c5b598ea2..098fe7f4bb 100644
--- a/src/dbus/qdbusreply.cpp
+++ b/src/dbus/qdbusreply.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusreply.h b/src/dbus/qdbusreply.h
index b9013185b4..a3170f7d54 100644
--- a/src/dbus/qdbusreply.h
+++ b/src/dbus/qdbusreply.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -57,7 +57,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
Q_DBUS_EXPORT void qDBusReplyFill(const QDBusMessage &reply, QDBusError &error, QVariant &data);
diff --git a/src/dbus/qdbusserver.cpp b/src/dbus/qdbusserver.cpp
index 078f56aa61..32471dfe5d 100644
--- a/src/dbus/qdbusserver.cpp
+++ b/src/dbus/qdbusserver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -82,6 +82,31 @@ QDBusServer::QDBusServer(const QString &address, QObject *parent)
}
/*!
+ Constructs a QDBusServer with the given \a parent. The server will listen
+ for connections in \c {/tmp}.
+*/
+QDBusServer::QDBusServer(QObject *parent)
+ : QObject(parent)
+{
+ const QString address = QLatin1String("unix:tmpdir=/tmp");
+
+ if (!qdbus_loadLibDBus()) {
+ d = 0;
+ return;
+ }
+ d = new QDBusConnectionPrivate(this);
+
+ QMutexLocker locker(&QDBusConnectionManager::instance()->mutex);
+ QDBusConnectionManager::instance()->setConnection(QLatin1String("QDBusServer-") + QString::number(reinterpret_cast<qulonglong>(d)), d);
+
+ QObject::connect(d, SIGNAL(newServerConnection(QDBusConnection)),
+ this, SIGNAL(newConnection(QDBusConnection)));
+
+ QDBusErrorInternal error;
+ d->setServer(q_dbus_server_listen(address.toUtf8().constData(), error), error);
+}
+
+/*!
Destructs a QDBusServer
*/
QDBusServer::~QDBusServer()
diff --git a/src/dbus/qdbusserver.h b/src/dbus/qdbusserver.h
index 900c652d37..dff20a2f2a 100644
--- a/src/dbus/qdbusserver.h
+++ b/src/dbus/qdbusserver.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
class QDBusConnectionPrivate;
class QDBusError;
@@ -61,7 +60,8 @@ class Q_DBUS_EXPORT QDBusServer: public QObject
{
Q_OBJECT
public:
- QDBusServer(const QString &address = "unix:tmpdir=/tmp", QObject *parent = 0);
+ explicit QDBusServer(const QString &address, QObject *parent = 0);
+ explicit QDBusServer(QObject *parent = 0);
virtual ~QDBusServer();
bool isConnected() const;
diff --git a/src/dbus/qdbusservicewatcher.cpp b/src/dbus/qdbusservicewatcher.cpp
index 6db9a28712..749d68fad5 100644
--- a/src/dbus/qdbusservicewatcher.cpp
+++ b/src/dbus/qdbusservicewatcher.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusservicewatcher.h b/src/dbus/qdbusservicewatcher.h
index 853064032b..8acf72d900 100644
--- a/src/dbus/qdbusservicewatcher.h
+++ b/src/dbus/qdbusservicewatcher.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
class QDBusConnection;
diff --git a/src/dbus/qdbusthreaddebug_p.h b/src/dbus/qdbusthreaddebug_p.h
index 131437d370..879f5fdcc1 100644
--- a/src/dbus/qdbusthreaddebug_p.h
+++ b/src/dbus/qdbusthreaddebug_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusunixfiledescriptor.cpp b/src/dbus/qdbusunixfiledescriptor.cpp
index 5a8835735e..bcf5f64a90 100644
--- a/src/dbus/qdbusunixfiledescriptor.cpp
+++ b/src/dbus/qdbusunixfiledescriptor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the FOO module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusunixfiledescriptor.h b/src/dbus/qdbusunixfiledescriptor.h
index 46d933ea24..ad5d00ba0b 100644
--- a/src/dbus/qdbusunixfiledescriptor.h
+++ b/src/dbus/qdbusunixfiledescriptor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the FOO module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,7 +56,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
class QDBusUnixFileDescriptorPrivate;
template<> QExplicitlySharedDataPointer<QDBusUnixFileDescriptorPrivate>::~QExplicitlySharedDataPointer();
diff --git a/src/dbus/qdbusutil.cpp b/src/dbus/qdbusutil.cpp
index 70ef22f428..9ca80864aa 100644
--- a/src/dbus/qdbusutil.cpp
+++ b/src/dbus/qdbusutil.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusutil_p.h b/src/dbus/qdbusutil_p.h
index 50ef4fc9c2..3374d5fa86 100644
--- a/src/dbus/qdbusutil_p.h
+++ b/src/dbus/qdbusutil_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusvirtualobject.cpp b/src/dbus/qdbusvirtualobject.cpp
index c421e7dfd6..7325bc1f58 100644
--- a/src/dbus/qdbusvirtualobject.cpp
+++ b/src/dbus/qdbusvirtualobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/dbus/qdbusvirtualobject.h b/src/dbus/qdbusvirtualobject.h
index 6f0807f16d..90d4e75d16 100644
--- a/src/dbus/qdbusvirtualobject.h
+++ b/src/dbus/qdbusvirtualobject.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(DBus)
class QDBusMessage;
class QDBusConnection;
diff --git a/src/dbus/qdbusxmlgenerator.cpp b/src/dbus/qdbusxmlgenerator.cpp
index b49756ebfe..a6572b2c86 100644
--- a/src/dbus/qdbusxmlgenerator.cpp
+++ b/src/dbus/qdbusxmlgenerator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -101,7 +101,7 @@ static QString generateInterfaceXml(const QMetaObject *mo, int flags, int method
if (mp.isWritable())
access |= 2;
- int typeId = qDBusNameToTypeId(mp.typeName());
+ int typeId = mp.userType();
if (!typeId)
continue;
const char *signature = QDBusMetaType::typeToSignature(typeId);
@@ -150,7 +150,7 @@ static QString generateInterfaceXml(const QMetaObject *mo, int flags, int method
.arg(QLatin1String(signature.left(paren)));
// check the return type first
- int typeId = qDBusNameToTypeId(mm.typeName());
+ int typeId = QMetaType::type(mm.typeName());
if (typeId) {
const char *typeName = QDBusMetaType::typeToSignature(typeId);
if (typeName) {
diff --git a/src/dbus/qdbusxmlparser.cpp b/src/dbus/qdbusxmlparser.cpp
index b1d0b78c96..68fc5f0ce4 100644
--- a/src/dbus/qdbusxmlparser.cpp
+++ b/src/dbus/qdbusxmlparser.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,342 +34,325 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "qdbusxmlparser_p.h"
-#include "qdbusinterface.h"
-#include "qdbusinterface_p.h"
-#include "qdbusconnection_p.h"
#include "qdbusutil_p.h"
-#include <QtXml/qdom.h>
#include <QtCore/qmap.h>
#include <QtCore/qvariant.h>
#include <QtCore/qtextstream.h>
+#include <QtCore/qxmlstream.h>
+#include <QtCore/qdebug.h>
#ifndef QT_NO_DBUS
//#define QDBUS_PARSER_DEBUG
#ifdef QDBUS_PARSER_DEBUG
-# define qDBusParserError qWarning
+# define qDBusParserError qDebug
#else
# define qDBusParserError if (true) {} else qDebug
#endif
QT_BEGIN_NAMESPACE
-static QDBusIntrospection::Annotations
-parseAnnotations(const QDomElement& elem)
+static bool parseArg(const QXmlStreamAttributes &attributes, QDBusIntrospection::Argument &argData)
{
- QDBusIntrospection::Annotations retval;
- QDomNodeList list = elem.elementsByTagName(QLatin1String("annotation"));
- for (int i = 0; i < list.count(); ++i)
- {
- QDomElement ann = list.item(i).toElement();
- if (ann.isNull())
- continue;
-
- QString name = ann.attribute(QLatin1String("name")),
- value = ann.attribute(QLatin1String("value"));
-
- if (!QDBusUtil::isValidInterfaceName(name)) {
- qDBusParserError("Invalid D-BUS annotation '%s' found while parsing introspection",
- qPrintable(name));
- continue;
- }
+ const QString argType = attributes.value(QLatin1String("type")).toString();
- retval.insert(name, value);
+ bool ok = QDBusUtil::isValidSingleSignature(argType);
+ if (!ok) {
+ qDBusParserError("Invalid D-BUS type signature '%s' found while parsing introspection",
+ qPrintable(argType));
}
- return retval;
+ argData.name = attributes.value(QLatin1String("name")).toString();
+ argData.type = argType;
+
+ return ok;
}
-static QDBusIntrospection::Arguments
-parseArgs(const QDomElement& elem, const QLatin1String& direction, bool acceptEmpty)
+static bool parseAnnotation(const QXmlStreamReader &xml, QDBusIntrospection::Annotations &annotations)
{
- QDBusIntrospection::Arguments retval;
- QDomNodeList list = elem.elementsByTagName(QLatin1String("arg"));
- for (int i = 0; i < list.count(); ++i)
- {
- QDomElement arg = list.item(i).toElement();
- if (arg.isNull())
- continue;
-
- if ((acceptEmpty && !arg.hasAttribute(QLatin1String("direction"))) ||
- arg.attribute(QLatin1String("direction")) == direction) {
-
- QDBusIntrospection::Argument argData;
- if (arg.hasAttribute(QLatin1String("name")))
- argData.name = arg.attribute(QLatin1String("name")); // can be empty
- argData.type = arg.attribute(QLatin1String("type"));
- if (!QDBusUtil::isValidSingleSignature(argData.type)) {
- qDBusParserError("Invalid D-BUS type signature '%s' found while parsing introspection",
- qPrintable(argData.type));
- }
+ Q_ASSERT(xml.isStartElement() && xml.name() == QLatin1String("annotation"));
- retval << argData;
- }
+ const QXmlStreamAttributes attributes = xml.attributes();
+ const QString name = attributes.value(QLatin1String("name")).toString();
+
+ if (!QDBusUtil::isValidInterfaceName(name)) {
+ qDBusParserError("Invalid D-BUS annotation '%s' found while parsing introspection",
+ qPrintable(name));
+ return false;
}
- return retval;
+ annotations.insert(name, attributes.value(QLatin1String("value")).toString());
+ return true;
}
-QDBusXmlParser::QDBusXmlParser(const QString& service, const QString& path,
- const QString& xmlData)
- : m_service(service), m_path(path)
+static bool parseProperty(QXmlStreamReader &xml, QDBusIntrospection::Property &propertyData,
+ const QString &ifaceName)
{
- QDomDocument doc;
- doc.setContent(xmlData);
- m_node = doc.firstChildElement(QLatin1String("node"));
-}
+ Q_ASSERT(xml.isStartElement() && xml.name() == QLatin1String("property"));
+
+ QXmlStreamAttributes attributes = xml.attributes();
+ const QString propertyName = attributes.value(QLatin1String("name")).toString();
+ if (!QDBusUtil::isValidMemberName(propertyName)) {
+ qDBusParserError("Invalid D-BUS member name '%s' found in interface '%s' while parsing introspection",
+ qPrintable(propertyName), qPrintable(ifaceName));
+ xml.skipCurrentElement();
+ return false;
+ }
-QDBusXmlParser::QDBusXmlParser(const QString& service, const QString& path,
- const QDomElement& node)
- : m_service(service), m_path(path), m_node(node)
-{
-}
+ // parse data
+ propertyData.name = propertyName;
+ propertyData.type = attributes.value(QLatin1String("type")).toString();
-QDBusIntrospection::Interfaces
-QDBusXmlParser::interfaces() const
-{
- QDBusIntrospection::Interfaces retval;
-
- if (m_node.isNull())
- return retval;
-
- QDomNodeList interfaceList = m_node.elementsByTagName(QLatin1String("interface"));
- for (int i = 0; i < interfaceList.count(); ++i)
- {
- QDomElement iface = interfaceList.item(i).toElement();
- QString ifaceName = iface.attribute(QLatin1String("name"));
- if (iface.isNull())
- continue; // for whatever reason
- if (!QDBusUtil::isValidInterfaceName(ifaceName)) {
- qDBusParserError("Invalid D-BUS interface name '%s' found while parsing introspection",
- qPrintable(ifaceName));
- continue;
- }
+ if (!QDBusUtil::isValidSingleSignature(propertyData.type)) {
+ // cannot be!
+ qDBusParserError("Invalid D-BUS type signature '%s' found in property '%s.%s' while parsing introspection",
+ qPrintable(propertyData.type), qPrintable(ifaceName),
+ qPrintable(propertyName));
+ }
- QDBusIntrospection::Interface *ifaceData = new QDBusIntrospection::Interface;
- ifaceData->name = ifaceName;
- {
- // save the data
- QTextStream ts(&ifaceData->introspection);
- iface.save(ts,2);
+ const QString access = attributes.value(QLatin1String("access")).toString();
+ if (access == QLatin1String("read"))
+ propertyData.access = QDBusIntrospection::Property::Read;
+ else if (access == QLatin1String("write"))
+ propertyData.access = QDBusIntrospection::Property::Write;
+ else if (access == QLatin1String("readwrite"))
+ propertyData.access = QDBusIntrospection::Property::ReadWrite;
+ else {
+ qDBusParserError("Invalid D-BUS property access '%s' found in property '%s.%s' while parsing introspection",
+ qPrintable(access), qPrintable(ifaceName),
+ qPrintable(propertyName));
+ return false; // invalid one!
+ }
+
+ while (xml.readNextStartElement()) {
+ if (xml.name() == QLatin1String("annotation")) {
+ parseAnnotation(xml, propertyData.annotations);
+ } else if (xml.prefix().isEmpty()) {
+ qDBusParserError() << "Unknown element" << xml.name() << "while checking for annotations";
}
+ xml.skipCurrentElement();
+ }
- // parse annotations
- ifaceData->annotations = parseAnnotations(iface);
-
- // parse methods
- QDomNodeList list = iface.elementsByTagName(QLatin1String("method"));
- for (int j = 0; j < list.count(); ++j)
- {
- QDomElement method = list.item(j).toElement();
- QString methodName = method.attribute(QLatin1String("name"));
- if (method.isNull())
- continue;
- if (!QDBusUtil::isValidMemberName(methodName)) {
- qDBusParserError("Invalid D-BUS member name '%s' found in interface '%s' while parsing introspection",
- qPrintable(methodName), qPrintable(ifaceName));
- continue;
- }
+ if (!xml.isEndElement() || xml.name() != QLatin1String("property")) {
+ qDBusParserError() << "Invalid property specification" << xml.tokenString() << xml.name();
+ return false;
+ }
- QDBusIntrospection::Method methodData;
- methodData.name = methodName;
+ return true;
+}
- // parse arguments
- methodData.inputArgs = parseArgs(method, QLatin1String("in"), true);
- methodData.outputArgs = parseArgs(method, QLatin1String("out"), false);
- methodData.annotations = parseAnnotations(method);
+static bool parseMethod(QXmlStreamReader &xml, QDBusIntrospection::Method &methodData,
+ const QString &ifaceName)
+{
+ Q_ASSERT(xml.isStartElement() && xml.name() == QLatin1String("method"));
+
+ const QXmlStreamAttributes attributes = xml.attributes();
+ const QString methodName = attributes.value(QLatin1String("name")).toString();
+ if (!QDBusUtil::isValidMemberName(methodName)) {
+ qDBusParserError("Invalid D-BUS member name '%s' found in interface '%s' while parsing introspection",
+ qPrintable(methodName), qPrintable(ifaceName));
+ return false;
+ }
- // add it
- ifaceData->methods.insert(methodName, methodData);
+ methodData.name = methodName;
+
+ QDBusIntrospection::Arguments outArguments;
+ QDBusIntrospection::Arguments inArguments;
+ QDBusIntrospection::Annotations annotations;
+
+ while (xml.readNextStartElement()) {
+ if (xml.name() == QLatin1String("annotation")) {
+ parseAnnotation(xml, annotations);
+ } else if (xml.name() == QLatin1String("arg")) {
+ const QXmlStreamAttributes attributes = xml.attributes();
+ const QString direction = attributes.value(QLatin1String("direction")).toString();
+ QDBusIntrospection::Argument argument;
+ if (!attributes.hasAttribute(QLatin1String("direction"))
+ || direction == QLatin1String("in")) {
+ parseArg(attributes, argument);
+ inArguments << argument;
+ } else if (direction == QLatin1String("out")) {
+ parseArg(attributes, argument);
+ outArguments << argument;
+ }
+ } else if (xml.prefix().isEmpty()) {
+ qDBusParserError() << "Unknown element" << xml.name() << "while checking for method arguments";
}
+ xml.skipCurrentElement();
+ }
- // parse signals
- list = iface.elementsByTagName(QLatin1String("signal"));
- for (int j = 0; j < list.count(); ++j)
- {
- QDomElement signal = list.item(j).toElement();
- QString signalName = signal.attribute(QLatin1String("name"));
- if (signal.isNull())
- continue;
- if (!QDBusUtil::isValidMemberName(signalName)) {
- qDBusParserError("Invalid D-BUS member name '%s' found in interface '%s' while parsing introspection",
- qPrintable(signalName), qPrintable(ifaceName));
- continue;
- }
+ methodData.inputArgs = inArguments;
+ methodData.outputArgs = outArguments;
+ methodData.annotations = annotations;
- QDBusIntrospection::Signal signalData;
- signalData.name = signalName;
+ return true;
+}
- // parse data
- signalData.outputArgs = parseArgs(signal, QLatin1String("out"), true);
- signalData.annotations = parseAnnotations(signal);
- // add it
- ifaceData->signals_.insert(signalName, signalData);
- }
+static bool parseSignal(QXmlStreamReader &xml, QDBusIntrospection::Signal &signalData,
+ const QString &ifaceName)
+{
+ Q_ASSERT(xml.isStartElement() && xml.name() == QLatin1String("signal"));
- // parse properties
- list = iface.elementsByTagName(QLatin1String("property"));
- for (int j = 0; j < list.count(); ++j)
- {
- QDomElement property = list.item(j).toElement();
- QString propertyName = property.attribute(QLatin1String("name"));
- if (property.isNull())
- continue;
- if (!QDBusUtil::isValidMemberName(propertyName)) {
- qDBusParserError("Invalid D-BUS member name '%s' found in interface '%s' while parsing introspection",
- qPrintable(propertyName), qPrintable(ifaceName));
- continue;
- }
+ const QXmlStreamAttributes attributes = xml.attributes();
+ const QString signalName = attributes.value(QLatin1String("name")).toString();
- QDBusIntrospection::Property propertyData;
+ if (!QDBusUtil::isValidMemberName(signalName)) {
+ qDBusParserError("Invalid D-BUS member name '%s' found in interface '%s' while parsing introspection",
+ qPrintable(signalName), qPrintable(ifaceName));
+ return false;
+ }
- // parse data
- propertyData.name = propertyName;
- propertyData.type = property.attribute(QLatin1String("type"));
- propertyData.annotations = parseAnnotations(property);
+ signalData.name = signalName;
- if (!QDBusUtil::isValidSingleSignature(propertyData.type)) {
- // cannot be!
- qDBusParserError("Invalid D-BUS type signature '%s' found in property '%s.%s' while parsing introspection",
- qPrintable(propertyData.type), qPrintable(ifaceName),
- qPrintable(propertyName));
- }
- QString access = property.attribute(QLatin1String("access"));
- if (access == QLatin1String("read"))
- propertyData.access = QDBusIntrospection::Property::Read;
- else if (access == QLatin1String("write"))
- propertyData.access = QDBusIntrospection::Property::Write;
- else if (access == QLatin1String("readwrite"))
- propertyData.access = QDBusIntrospection::Property::ReadWrite;
- else {
- qDBusParserError("Invalid D-BUS property access '%s' found in property '%s.%s' while parsing introspection",
- qPrintable(access), qPrintable(ifaceName),
- qPrintable(propertyName));
- continue; // invalid one!
- }
+ QDBusIntrospection::Arguments arguments;
+ QDBusIntrospection::Annotations annotations;
- // add it
- ifaceData->properties.insert(propertyName, propertyData);
+ while (xml.readNextStartElement()) {
+ if (xml.name() == QLatin1String("annotation")) {
+ parseAnnotation(xml, annotations);
+ } else if (xml.name() == QLatin1String("arg")) {
+ const QXmlStreamAttributes attributes = xml.attributes();
+ QDBusIntrospection::Argument argument;
+ if (!attributes.hasAttribute(QLatin1String("direction")) ||
+ attributes.value(QLatin1String("direction")) == QLatin1String("out")) {
+ parseArg(attributes, argument);
+ arguments << argument;
+ }
+ } else {
+ qDBusParserError() << "Unknown element" << xml.name() << "while checking for signal arguments";
}
-
- // add it
- retval.insert(ifaceName, QSharedDataPointer<QDBusIntrospection::Interface>(ifaceData));
+ xml.skipCurrentElement();
}
- return retval;
+ signalData.outputArgs = arguments;
+ signalData.annotations = annotations;
+
+ return true;
}
-QSharedDataPointer<QDBusIntrospection::Object>
-QDBusXmlParser::object() const
+static void readInterface(QXmlStreamReader &xml, QDBusIntrospection::Object *objData,
+ QDBusIntrospection::Interfaces *interfaces)
{
- if (m_node.isNull())
- return QSharedDataPointer<QDBusIntrospection::Object>();
-
- QDBusIntrospection::Object* objData;
- objData = new QDBusIntrospection::Object;
- objData->service = m_service;
- objData->path = m_path;
-
- // check if we have anything to process
- if (objData->introspection.isNull() && !m_node.firstChild().isNull()) {
- // yes, introspect this object
- QTextStream ts(&objData->introspection);
- m_node.save(ts,2);
-
- QDomNodeList objects = m_node.elementsByTagName(QLatin1String("node"));
- for (int i = 0; i < objects.count(); ++i) {
- QDomElement obj = objects.item(i).toElement();
- QString objName = obj.attribute(QLatin1String("name"));
- if (obj.isNull())
- continue; // for whatever reason
- if (!QDBusUtil::isValidObjectPath(m_path + QLatin1Char('/') + objName)) {
- qDBusParserError("Invalid D-BUS object path '%s/%s' found while parsing introspection",
- qPrintable(m_path), qPrintable(objName));
- continue;
- }
+ const QString ifaceName = xml.attributes().value(QLatin1String("name")).toString();
+ if (!QDBusUtil::isValidInterfaceName(ifaceName)) {
+ qDBusParserError("Invalid D-BUS interface name '%s' found while parsing introspection",
+ qPrintable(ifaceName));
+ return;
+ }
- objData->childObjects.append(objName);
- }
+ objData->interfaces.append(ifaceName);
- QDomNodeList interfaceList = m_node.elementsByTagName(QLatin1String("interface"));
- for (int i = 0; i < interfaceList.count(); ++i) {
- QDomElement iface = interfaceList.item(i).toElement();
- QString ifaceName = iface.attribute(QLatin1String("name"));
- if (iface.isNull())
- continue;
- if (!QDBusUtil::isValidInterfaceName(ifaceName)) {
- qDBusParserError("Invalid D-BUS interface name '%s' found while parsing introspection",
- qPrintable(ifaceName));
- continue;
- }
+ QDBusIntrospection::Interface *ifaceData = new QDBusIntrospection::Interface;
+ ifaceData->name = ifaceName;
- objData->interfaces.append(ifaceName);
+ while (xml.readNextStartElement()) {
+ if (xml.name() == QLatin1String("method")) {
+ QDBusIntrospection::Method methodData;
+ if (parseMethod(xml, methodData, ifaceName))
+ ifaceData->methods.insert(methodData.name, methodData);
+ } else if (xml.name() == QLatin1String("signal")) {
+ QDBusIntrospection::Signal signalData;
+ if (parseSignal(xml, signalData, ifaceName))
+ ifaceData->signals_.insert(signalData.name, signalData);
+ } else if (xml.name() == QLatin1String("property")) {
+ QDBusIntrospection::Property propertyData;
+ if (parseProperty(xml, propertyData, ifaceName))
+ ifaceData->properties.insert(propertyData.name, propertyData);
+ } else if (xml.name() == QLatin1String("annotation")) {
+ parseAnnotation(xml, ifaceData->annotations);
+ xml.skipCurrentElement(); // skip over annotation object
+ } else {
+ if (xml.prefix().isEmpty()) {
+ qDBusParserError() << "Unknown element while parsing interface" << xml.name();
+ }
+ xml.skipCurrentElement();
}
- } else {
- objData->introspection = QLatin1String("<node/>\n");
}
- QSharedDataPointer<QDBusIntrospection::Object> retval;
- retval = objData;
- return retval;
+ interfaces->insert(ifaceName, QSharedDataPointer<QDBusIntrospection::Interface>(ifaceData));
+
+ if (!xml.isEndElement() || xml.name() != QLatin1String("interface")) {
+ qDBusParserError() << "Invalid Interface specification";
+ }
}
-QSharedDataPointer<QDBusIntrospection::ObjectTree>
-QDBusXmlParser::objectTree() const
+static void readNode(const QXmlStreamReader &xml, QDBusIntrospection::Object *objData, int nodeLevel)
{
- QSharedDataPointer<QDBusIntrospection::ObjectTree> retval;
-
- if (m_node.isNull())
- return retval;
-
- retval = new QDBusIntrospection::ObjectTree;
-
- retval->service = m_service;
- retval->path = m_path;
-
- QTextStream ts(&retval->introspection);
- m_node.save(ts,2);
-
- // interfaces are easy:
- retval->interfaceData = interfaces();
- retval->interfaces = retval->interfaceData.keys();
-
- // sub-objects are slightly more difficult:
- QDomNodeList objects = m_node.elementsByTagName(QLatin1String("node"));
- for (int i = 0; i < objects.count(); ++i) {
- QDomElement obj = objects.item(i).toElement();
- QString objName = obj.attribute(QLatin1String("name"));
- if (obj.isNull() || objName.isEmpty())
- continue; // for whatever reason
-
- // check if we have anything to process
- if (!obj.firstChild().isNull()) {
- // yes, introspect this object
- QString xml;
- QTextStream ts2(&xml);
- obj.save(ts2,0);
-
- // parse it
- QString objAbsName = m_path;
- if (!objAbsName.endsWith(QLatin1Char('/')))
- objAbsName.append(QLatin1Char('/'));
- objAbsName += objName;
-
- QDBusXmlParser parser(m_service, objAbsName, obj);
- retval->childObjectData.insert(objName, parser.objectTree());
- }
+ const QString objName = xml.attributes().value(QLatin1String("name")).toString();
+ const QString fullName = objData->path.endsWith(QLatin1Char('/'))
+ ? (objData->path + objName)
+ : QString(objData->path + QLatin1Char('/') + objName);
+ if (!QDBusUtil::isValidObjectPath(fullName)) {
+ qDBusParserError("Invalid D-BUS object path '%s' found while parsing introspection",
+ qPrintable(fullName));
+ return;
+ }
+
+ if (nodeLevel > 0)
+ objData->childObjects.append(objName);
+}
+
+QDBusXmlParser::QDBusXmlParser(const QString& service, const QString& path,
+ const QString& xmlData)
+ : m_service(service), m_path(path), m_object(new QDBusIntrospection::Object)
+{
+// qDBusParserError() << "parsing" << xmlData;
- retval->childObjects << objName;
+ m_object->service = m_service;
+ m_object->path = m_path;
+
+ QXmlStreamReader xml(xmlData);
+
+ int nodeLevel = -1;
+
+ while (!xml.atEnd()) {
+ xml.readNext();
+
+ switch (xml.tokenType()) {
+ case QXmlStreamReader::StartElement:
+ if (xml.name() == QLatin1String("node")) {
+ readNode(xml, m_object, ++nodeLevel);
+ } else if (xml.name() == QLatin1String("interface")) {
+ readInterface(xml, m_object, &m_interfaces);
+ } else {
+ if (xml.prefix().isEmpty()) {
+ qDBusParserError() << "skipping unknown element" << xml.name();
+ }
+ xml.skipCurrentElement();
+ }
+ break;
+ case QXmlStreamReader::EndElement:
+ if (xml.name() == QLatin1String("node")) {
+ --nodeLevel;
+ } else {
+ qDBusParserError() << "Invalid Node declaration" << xml.name();
+ }
+ break;
+ case QXmlStreamReader::StartDocument:
+ case QXmlStreamReader::EndDocument:
+ case QXmlStreamReader::DTD:
+ // not interested
+ break;
+ case QXmlStreamReader::Comment:
+ // ignore comments and processing instructions
+ break;
+ default:
+ qDBusParserError() << "unknown token" << xml.name() << xml.tokenString();
+ break;
+ }
}
- return QSharedDataPointer<QDBusIntrospection::ObjectTree>( retval );
+ if (xml.hasError()) {
+ qDBusParserError() << "xml error" << xml.errorString() << "doc" << xmlData;
+ }
}
QT_END_NAMESPACE
diff --git a/src/dbus/qdbusxmlparser_p.h b/src/dbus/qdbusxmlparser_p.h
index f7677e0ae4..fe82eaf2cf 100644
--- a/src/dbus/qdbusxmlparser_p.h
+++ b/src/dbus/qdbusxmlparser_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@
//
#include <QtCore/qmap.h>
-#include <QtXml/qdom.h>
#include <qdbusmacros.h>
#include "qdbusintrospection_p.h"
@@ -69,17 +68,15 @@ class QDBusXmlParser
{
QString m_service;
QString m_path;
- QDomElement m_node;
+ QSharedDataPointer<QDBusIntrospection::Object> m_object;
+ QDBusIntrospection::Interfaces m_interfaces;
public:
QDBusXmlParser(const QString& service, const QString& path,
const QString& xmlData);
- QDBusXmlParser(const QString& service, const QString& path,
- const QDomElement& node);
- QDBusIntrospection::Interfaces interfaces() const;
- QSharedDataPointer<QDBusIntrospection::Object> object() const;
- QSharedDataPointer<QDBusIntrospection::ObjectTree> objectTree() const;
+ inline QDBusIntrospection::Interfaces interfaces() const { return m_interfaces; }
+ inline QSharedDataPointer<QDBusIntrospection::Object> object() const { return m_object; }
};
QT_END_NAMESPACE
diff --git a/src/gui/accessible/qaccessible.cpp b/src/gui/accessible/qaccessible.cpp
index de37f67943..8610ef726d 100644
--- a/src/gui/accessible/qaccessible.cpp
+++ b/src/gui/accessible/qaccessible.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -654,13 +654,29 @@ void QAccessible::setRootObject(QObject *object)
}
/*!
- Notifies accessibility clients about a change in \a object's
- accessibility information.
+ \deprecated
- \a reason specifies the cause of the change, for example,
- \c ValueChange when the position of a slider has been changed. \a
- child is the (1-based) index of the child element that has changed.
- When \a child is 0, the object itself has changed.
+ Use the version with a single \l QAccessibleEvent paremeter instead.
+*/
+void QAccessible::updateAccessibility(QObject *object, int child, Event reason)
+{
+ Q_ASSERT(object);
+
+ qWarning("QAccessible::updateAccessibility is deprecated.");
+
+ QAccessibleEvent event = QAccessibleEvent(reason, object, child);
+ updateAccessibility(event);
+}
+
+/*!
+ Notifies about a change that might be relevant for accessibility clients.
+
+ \a event gives the details about the change.
+ This includes the source of the change and what the actual change is.
+ There should be sufficient details delivered with this event to give meaningful notifications.
+
+ For example, the type \c ValueChange indicates that the position of
+ a slider has been changed.
Call this function whenever the state of your accessible object or
one of its sub-elements has been changed either programmatically
@@ -671,12 +687,10 @@ void QAccessible::setRootObject(QObject *object)
the parameters of the call is expensive you can test isActive() to
avoid unnecessary computations.
*/
-void QAccessible::updateAccessibility(QObject *object, int child, Event reason)
+void QAccessible::updateAccessibility(const QAccessibleEvent &event)
{
- Q_ASSERT(object);
-
if (updateHandler) {
- updateHandler(object, child, reason);
+ updateHandler(event);
return;
}
@@ -684,9 +698,43 @@ void QAccessible::updateAccessibility(QObject *object, int child, Event reason)
return;
if (QPlatformAccessibility *pfAccessibility = platformAccessibility())
- pfAccessibility->notifyAccessibilityUpdate(object, child, reason);
+ pfAccessibility->notifyAccessibilityUpdate(event);
}
+/*!
+ \class QAccessibleEvent
+ \brief The QAccessibleEvent is use to notify about changes that are
+ relevant for accessibility in the application.
+
+ \ingroup accessibility
+ \inmodule QtGui
+
+ This class should be created on the stack and used as parameter for
+ \l QAccessible::updateAccessibility().
+*/
+
+/*!
+ Returns the QAccessibleInterface associated with the event.
+
+ The caller of this function takes ownership of the returned interface.
+*/
+QAccessibleInterface *QAccessibleEvent::accessibleInterface() const
+{
+ QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(m_object);
+ if (!iface)
+ return 0;
+
+ if (m_child >= 0) {
+ QAccessibleInterface *child = iface->child(m_child);
+ if (child) {
+ delete iface;
+ iface = child;
+ } else {
+ qWarning() << "Cannot creat accessible child interface for object: " << m_object << " index: " << m_child;
+ }
+ }
+ return iface;
+}
/*!
\class QAccessibleInterface
diff --git a/src/gui/accessible/qaccessible.h b/src/gui/accessible/qaccessible.h
index bafd3a8a6b..dc74ac1814 100644
--- a/src/gui/accessible/qaccessible.h
+++ b/src/gui/accessible/qaccessible.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,11 +55,11 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_ACCESSIBILITY
class QAccessibleInterface;
+class QAccessibleEvent;
class QWindow;
// We need to inherit QObject to expose the enums to QML.
@@ -306,12 +306,6 @@ public:
enum RelationFlag {
Unrelated = 0x00000000,
- Self = 0x00000001,
-
- Covers = 0x00001000,
- Covered = 0x00002000,
- GeometryMask = 0x0000ff00,
-
FocusChild = 0x00010000,
Label = 0x00020000,
Labelled = 0x00040000,
@@ -333,7 +327,7 @@ public:
};
typedef QAccessibleInterface*(*InterfaceFactory)(const QString &key, QObject*);
- typedef void(*UpdateHandler)(QObject*, int who, Event reason);
+ typedef void(*UpdateHandler)(const QAccessibleEvent &event);
typedef void(*RootObjectHandler)(QObject*);
static void installFactory(InterfaceFactory);
@@ -342,7 +336,10 @@ public:
static RootObjectHandler installRootObjectHandler(RootObjectHandler);
static QAccessibleInterface *queryAccessibleInterface(QObject *);
+
static void updateAccessibility(QObject *object, int child, Event reason);
+ static void updateAccessibility(const QAccessibleEvent &event);
+
static bool isActive();
static void setRootObject(QObject *object);
@@ -432,7 +429,29 @@ public:
private:
};
-#define QAccessibleInterface_iid "com.trolltech.Qt.QAccessibleInterface"
+class Q_GUI_EXPORT QAccessibleEvent
+{
+public:
+ inline QAccessibleEvent(QAccessible::Event type, QObject *object, int child = -1)
+ : m_type(type), m_object(object), m_child(child)
+ {
+ Q_ASSERT(object);
+ }
+
+ QAccessible::Event type() const { return m_type; }
+ QObject *object() const { return m_object; }
+ int child() const { return m_child; }
+
+ QAccessibleInterface *accessibleInterface() const;
+
+private:
+ QAccessible::Event m_type;
+ QObject *m_object;
+ int m_child;
+};
+
+
+#define QAccessibleInterface_iid "org.qt-project.Qt.QAccessibleInterface"
Q_DECLARE_INTERFACE(QAccessibleInterface, QAccessibleInterface_iid)
Q_GUI_EXPORT const char *qAccessibleRoleString(QAccessible::Role role);
diff --git a/src/gui/accessible/qaccessible2.cpp b/src/gui/accessible/qaccessible2.cpp
index 0a7a8b0b6f..0f854c6158 100644
--- a/src/gui/accessible/qaccessible2.cpp
+++ b/src/gui/accessible/qaccessible2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/accessible/qaccessible2.h b/src/gui/accessible/qaccessible2.h
index 0b1ddc99b1..b84c484f74 100644
--- a/src/gui/accessible/qaccessible2.h
+++ b/src/gui/accessible/qaccessible2.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_ACCESSIBILITY
diff --git a/src/gui/accessible/qaccessiblebridge.cpp b/src/gui/accessible/qaccessiblebridge.cpp
index d702972cd2..8fcf0474a1 100644
--- a/src/gui/accessible/qaccessiblebridge.cpp
+++ b/src/gui/accessible/qaccessiblebridge.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/accessible/qaccessiblebridge.h b/src/gui/accessible/qaccessiblebridge.h
index d0470f38e6..147bf30bd0 100644
--- a/src/gui/accessible/qaccessiblebridge.h
+++ b/src/gui/accessible/qaccessiblebridge.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,18 +49,18 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_ACCESSIBILITY
class QAccessibleInterface;
+class QAccessibleEvent;
class QAccessibleBridge
{
public:
virtual ~QAccessibleBridge() {}
virtual void setRootObject(QAccessibleInterface *) = 0;
- virtual void notifyAccessibilityUpdate(int, QAccessibleInterface*, int) = 0;
+ virtual void notifyAccessibilityUpdate(const QAccessibleEvent &event) = 0;
};
struct Q_GUI_EXPORT QAccessibleBridgeFactoryInterface : public QFactoryInterface
@@ -68,7 +68,7 @@ struct Q_GUI_EXPORT QAccessibleBridgeFactoryInterface : public QFactoryInterface
virtual QAccessibleBridge *create(const QString& name) = 0;
};
-#define QAccessibleBridgeFactoryInterface_iid "com.trolltech.Qt.QAccessibleBridgeFactoryInterface"
+#define QAccessibleBridgeFactoryInterface_iid "org.qt-project.Qt.QAccessibleBridgeFactoryInterface"
Q_DECLARE_INTERFACE(QAccessibleBridgeFactoryInterface, QAccessibleBridgeFactoryInterface_iid)
class Q_GUI_EXPORT QAccessibleBridgePlugin : public QObject, public QAccessibleBridgeFactoryInterface
diff --git a/src/gui/accessible/qaccessibleobject.cpp b/src/gui/accessible/qaccessibleobject.cpp
index e271df2a13..b9e0ac388b 100644
--- a/src/gui/accessible/qaccessibleobject.cpp
+++ b/src/gui/accessible/qaccessibleobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -202,7 +202,7 @@ static QObjectList topLevelObjects()
if (w->windowType() != Qt::Popup && w->windowType() != Qt::Desktop) {
if (QAccessibleInterface *root = w->accessibleRoot()) {
if (root->object())
- list.append(w->accessibleRoot()->object());
+ list.append(root->object());
delete root;
}
}
@@ -224,20 +224,6 @@ int QAccessibleApplication::indexOfChild(const QAccessibleInterface *child) cons
return tlw.indexOf(child->object());
}
-/*! \reimp */
-QAccessible::Relation QAccessibleApplication::relationTo(const QAccessibleInterface *other) const
-{
- QObject *o = other ? other->object() : 0;
- if (!o)
- return QAccessible::Unrelated;
-
- if(o == object()) {
- return QAccessible::Self;
- }
-
- return QAccessible::Unrelated;
-}
-
QAccessibleInterface *QAccessibleApplication::parent() const
{
return 0;
@@ -262,9 +248,6 @@ int QAccessibleApplication::navigate(QAccessible::RelationFlag relation, int,
QObject *targetObject = 0;
switch (relation) {
- case QAccessible::Self:
- targetObject = object();
- break;
case QAccessible::FocusChild:
if (QWindow *window = QGuiApplication::activeWindow()) {
*target = window->accessibleRoot();
diff --git a/src/gui/accessible/qaccessibleobject.h b/src/gui/accessible/qaccessibleobject.h
index 58b95baffa..2372e82f89 100644
--- a/src/gui/accessible/qaccessibleobject.h
+++ b/src/gui/accessible/qaccessibleobject.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_ACCESSIBILITY
@@ -86,7 +85,6 @@ public:
// relations
int childCount() const;
int indexOfChild(const QAccessibleInterface*) const;
- QAccessible::Relation relationTo(const QAccessibleInterface *other) const;
// navigation
QAccessibleInterface *parent() const;
diff --git a/src/gui/accessible/qaccessibleplugin.cpp b/src/gui/accessible/qaccessibleplugin.cpp
index 0d9d57b0ec..8823d63b79 100644
--- a/src/gui/accessible/qaccessibleplugin.cpp
+++ b/src/gui/accessible/qaccessibleplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/accessible/qaccessibleplugin.h b/src/gui/accessible/qaccessibleplugin.h
index d3610e40f6..275e9ea753 100644
--- a/src/gui/accessible/qaccessibleplugin.h
+++ b/src/gui/accessible/qaccessibleplugin.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_ACCESSIBILITY
@@ -61,7 +60,7 @@ struct Q_GUI_EXPORT QAccessibleFactoryInterface : public QFactoryInterface
virtual QAccessibleInterface* create(const QString &key, QObject *object) = 0;
};
-#define QAccessibleFactoryInterface_iid "com.trolltech.Qt.QAccessibleFactoryInterface"
+#define QAccessibleFactoryInterface_iid "org.qt-project.Qt.QAccessibleFactoryInterface"
Q_DECLARE_INTERFACE(QAccessibleFactoryInterface, QAccessibleFactoryInterface_iid)
class QAccessiblePluginPrivate;
diff --git a/src/gui/accessible/qplatformaccessibility_qpa.cpp b/src/gui/accessible/qplatformaccessibility_qpa.cpp
index 47c351921e..9de11e7c1f 100644
--- a/src/gui/accessible/qplatformaccessibility_qpa.cpp
+++ b/src/gui/accessible/qplatformaccessibility_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -45,6 +45,8 @@
#include "qaccessiblebridge.h"
#include <QtGui/QGuiApplication>
+#include <QDebug>
+
QT_BEGIN_NAMESPACE
/* accessiblebridge plugin discovery stuff */
@@ -73,33 +75,15 @@ QPlatformAccessibility::~QPlatformAccessibility()
{
}
-void QPlatformAccessibility::notifyAccessibilityUpdate(QObject *o,
- int who,
- QAccessible::Event reason)
+void QPlatformAccessibility::notifyAccessibilityUpdate(const QAccessibleEvent &event)
{
initialize();
if (!bridges() || bridges()->isEmpty())
return;
- QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(o);
- if (!iface)
- return;
-
- // updates for List/Table/Tree should send child
- if (who) {
- QAccessibleInterface *child = iface->child(who - 1);
- if (child) {
- delete iface;
- iface = child;
- who = 0;
- }
- }
-
for (int i = 0; i < bridges()->count(); ++i)
- bridges()->at(i)->notifyAccessibilityUpdate(reason, iface, who);
- delete iface;
-
+ bridges()->at(i)->notifyAccessibilityUpdate(event);
}
void QPlatformAccessibility::setRootObject(QObject *o)
diff --git a/src/gui/accessible/qplatformaccessibility_qpa.h b/src/gui/accessible/qplatformaccessibility_qpa.h
index 15297110b8..364f87b0c9 100644
--- a/src/gui/accessible/qplatformaccessibility_qpa.h
+++ b/src/gui/accessible/qplatformaccessibility_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class Q_GUI_EXPORT QPlatformAccessibility
{
@@ -58,7 +57,7 @@ public:
QPlatformAccessibility();
virtual ~QPlatformAccessibility();
- virtual void notifyAccessibilityUpdate(QObject *o, int who, QAccessible::Event reason);
+ virtual void notifyAccessibilityUpdate(const QAccessibleEvent &event);
virtual void setRootObject(QObject *o);
virtual void initialize();
virtual void cleanup();
diff --git a/src/gui/egl/egl.pri b/src/gui/egl/egl.pri
index 59af997477..e4a2bbef75 100644
--- a/src/gui/egl/egl.pri
+++ b/src/gui/egl/egl.pri
@@ -23,8 +23,4 @@ contains(QT_CONFIG, egl): {
}
SOURCES += egl/qegl_qpa.cpp
-} else:symbian: {
- DEFINES += QT_NO_EGL
- SOURCES += egl/qegl_stub.cpp
- SOURCES += egl/qeglproperties_stub.cpp
}
diff --git a/src/gui/egl/qegl.cpp b/src/gui/egl/qegl.cpp
index 4ee656f777..067886cf5a 100644
--- a/src/gui/egl/qegl.cpp
+++ b/src/gui/egl/qegl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/egl/qegl_p.h b/src/gui/egl/qegl_p.h
index 02712b4026..3e78b97fcb 100644
--- a/src/gui/egl/qegl_p.h
+++ b/src/gui/egl/qegl_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -113,9 +113,6 @@ QT_BEGIN_NAMESPACE
#define EGLAPIENTRY
#endif
-// Try to get some info to debug the symbian build failues:
-
-
// Declare/define the bits of EGL_KHR_image_base we need:
#if !defined(EGL_KHR_image) && !defined(EGL_KHR_image_base)
typedef void *EGLImageKHR;
diff --git a/src/gui/egl/qegl_qpa.cpp b/src/gui/egl/qegl_qpa.cpp
index 2b7daf47b2..a0a16a5395 100644
--- a/src/gui/egl/qegl_qpa.cpp
+++ b/src/gui/egl/qegl_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/egl/qegl_stub.cpp b/src/gui/egl/qegl_stub.cpp
deleted file mode 100644
index 3d9d72587e..0000000000
--- a/src/gui/egl/qegl_stub.cpp
+++ /dev/null
@@ -1,298 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 <QtGui/qpaintdevice.h>
-#include <QtGui/qpixmap.h>
-#include <QtCore/qdebug.h>
-
-#include "qegl_p.h"
-#include "qeglcontext_p.h"
-
-
-QT_BEGIN_NAMESPACE
-
-static void noegl(const char *fn)
-{
- qWarning() << fn << " called, but Qt configured without EGL" << endl;
-}
-
-#define NOEGL noegl(__FUNCTION__);
-
-QEglContext::QEglContext()
- : apiType(QEgl::OpenGL)
- , ctx(0)
- , cfg(QEGL_NO_CONFIG)
- , currentSurface(0)
- , current(false)
- , ownsContext(true)
- , sharing(false)
-{
- NOEGL
-}
-
-QEglContext::~QEglContext()
-{
- NOEGL
-}
-
-bool QEglContext::isValid() const
-{
- NOEGL
- return false;
-}
-
-bool QEglContext::isCurrent() const
-{
- NOEGL
- return false;
-}
-
-EGLConfig QEgl::defaultConfig(int devType, API api, ConfigOptions options)
-{
- Q_UNUSED(devType)
- Q_UNUSED(api)
- Q_UNUSED(options)
- NOEGL
- return QEGL_NO_CONFIG;
-}
-
-
-// Choose a configuration that matches "properties".
-EGLConfig QEgl::chooseConfig(const QEglProperties* properties, QEgl::PixelFormatMatch match)
-{
- Q_UNUSED(properties)
- Q_UNUSED(match)
- NOEGL
- return QEGL_NO_CONFIG;
-}
-
-bool QEglContext::chooseConfig(const QEglProperties& properties, QEgl::PixelFormatMatch match)
-{
- Q_UNUSED(properties)
- Q_UNUSED(match)
- NOEGL
- return false;
-}
-
-EGLSurface QEglContext::createSurface(QPaintDevice* device, const QEglProperties *properties)
-{
- Q_UNUSED(device)
- Q_UNUSED(properties)
- NOEGL
- return 0;
-}
-
-
-// Create the EGLContext.
-bool QEglContext::createContext(QEglContext *shareContext, const QEglProperties *properties)
-{
- Q_UNUSED(shareContext)
- Q_UNUSED(properties)
- NOEGL
- return false;
-}
-
-// Destroy an EGL surface object. If it was current on this context
-// then call doneCurrent() for it first.
-void QEglContext::destroySurface(EGLSurface surface)
-{
- Q_UNUSED(surface)
- NOEGL
-}
-
-// Destroy the context. Note: this does not destroy the surface.
-void QEglContext::destroyContext()
-{
- NOEGL
-}
-
-bool QEglContext::makeCurrent(EGLSurface surface)
-{
- Q_UNUSED(surface)
- NOEGL
- return false;
-}
-
-bool QEglContext::doneCurrent()
-{
- NOEGL
- return false;
-}
-
-// Act as though doneCurrent() was called, but keep the context
-// and the surface active for the moment. This allows makeCurrent()
-// to skip a call to eglMakeCurrent() if we are using the same
-// surface as the last set of painting operations. We leave the
-// currentContext() pointer as-is for now.
-bool QEglContext::lazyDoneCurrent()
-{
- NOEGL
- return false;
-}
-
-bool QEglContext::swapBuffers(EGLSurface surface)
-{
- Q_UNUSED(surface)
- NOEGL
- return false;
-}
-
-bool QEglContext::swapBuffersRegion2NOK(EGLSurface surface, const QRegion *region)
-{
- Q_UNUSED(surface)
- Q_UNUSED(region)
- NOEGL
- return false;
-}
-
-int QEglContext::configAttrib(int name) const
-{
- Q_UNUSED(name)
- NOEGL
- return 0;
-}
-
-EGLDisplay QEgl::display()
-{
- NOEGL
- return 0;
-}
-
-EGLImageKHR QEgl::eglCreateImageKHR(EGLDisplay dpy, EGLContext ctx, EGLenum target, EGLClientBuffer buffer, const EGLint *attrib_list)
-{
- Q_UNUSED(dpy)
- Q_UNUSED(ctx)
- Q_UNUSED(target)
- Q_UNUSED(buffer)
- Q_UNUSED(attrib_list)
- NOEGL
- return 0;
-}
-
-EGLBoolean QEgl::eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR img)
-{
- Q_UNUSED(dpy)
- Q_UNUSED(img)
- NOEGL
- return 0;
-}
-
-EGLBoolean QEgl::eglSwapBuffersRegion2NOK(EGLDisplay dpy, EGLSurface surface, EGLint count, const EGLint *rects)
-{
- Q_UNUSED(dpy);
- Q_UNUSED(surface);
- Q_UNUSED(count);
- Q_UNUSED(rects);
- NOEGL
- return 0;
-}
-
-EGLSurface QEgl::createSurface(QPaintDevice *device, EGLConfig cfg, const QEglProperties *properties)
-{
- Q_UNUSED(device)
- Q_UNUSED(cfg)
- Q_UNUSED(properties)
- NOEGL
- return 0;
-}
-
-
-// Return the error string associated with a specific code.
-QString QEgl::errorString(EGLint code)
-{
- Q_UNUSED(code)
- NOEGL
- return QString();
-}
-
-// Dump all of the EGL configurations supported by the system.
-void QEgl::dumpAllConfigs()
-{
- NOEGL
-}
-
-QString QEgl::extensions()
-{
- NOEGL
- return QString();
-}
-
-bool QEgl::hasExtension(const char* extensionName)
-{
- Q_UNUSED(extensionName)
- NOEGL
- return false;
-}
-
-QEglContext *QEglContext::currentContext(QEgl::API api)
-{
- Q_UNUSED(api)
- NOEGL
- return false;
-}
-
-void QEglContext::setCurrentContext(QEgl::API api, QEglContext *context)
-{
- Q_UNUSED(api)
- Q_UNUSED(context)
- NOEGL
-}
-
-EGLNativeDisplayType QEgl::nativeDisplay()
-{
- NOEGL
- return 0;
-}
-
-EGLNativeWindowType QEgl::nativeWindow(QWidget* widget)
-{
- Q_UNUSED(widget)
- NOEGL
- return (EGLNativeWindowType)0;
-}
-
-EGLNativePixmapType QEgl::nativePixmap(QPixmap*)
-{
- NOEGL
- return (EGLNativePixmapType)0;
-}
-
-QT_END_NAMESPACE
diff --git a/src/gui/egl/qeglcontext_p.h b/src/gui/egl/qeglcontext_p.h
index 70cdfc72ac..94654eb2a8 100644
--- a/src/gui/egl/qeglcontext_p.h
+++ b/src/gui/egl/qeglcontext_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/egl/qeglproperties.cpp b/src/gui/egl/qeglproperties.cpp
index 29b1cd371d..414ad8d06a 100644
--- a/src/gui/egl/qeglproperties.cpp
+++ b/src/gui/egl/qeglproperties.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/egl/qeglproperties_p.h b/src/gui/egl/qeglproperties_p.h
index d7bc0893d4..a5fc8f9b1f 100644
--- a/src/gui/egl/qeglproperties_p.h
+++ b/src/gui/egl/qeglproperties_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/egl/qeglproperties_stub.cpp b/src/gui/egl/qeglproperties_stub.cpp
deleted file mode 100644
index 7be8a0a4b9..0000000000
--- a/src/gui/egl/qeglproperties_stub.cpp
+++ /dev/null
@@ -1,141 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 <QtCore/qdebug.h>
-#include <QtCore/qstringlist.h>
-
-#include "qeglproperties_p.h"
-#include "qeglcontext_p.h"
-
-QT_BEGIN_NAMESPACE
-
-static void noegl(const char *fn)
-{
- qWarning() << fn << " called, but Qt configured without EGL" << endl;
-}
-
-#define NOEGL noegl(__FUNCTION__);
-
-// Initialize a property block.
-QEglProperties::QEglProperties()
-{
- NOEGL
-}
-
-QEglProperties::QEglProperties(EGLConfig cfg)
-{
- Q_UNUSED(cfg)
- NOEGL
-}
-
-// Fetch the current value associated with a property.
-int QEglProperties::value(int name) const
-{
- Q_UNUSED(name)
- NOEGL
- return 0;
-}
-
-// Set the value associated with a property, replacing an existing
-// value if there is one.
-void QEglProperties::setValue(int name, int value)
-{
- Q_UNUSED(name)
- Q_UNUSED(value)
- NOEGL
-}
-
-// Remove a property value. Returns false if the property is not present.
-bool QEglProperties::removeValue(int name)
-{
- Q_UNUSED(name)
- NOEGL
- return false;
-}
-
-void QEglProperties::setDeviceType(int devType)
-{
- Q_UNUSED(devType)
- NOEGL
-}
-
-
-// Sets the red, green, blue, and alpha sizes based on a pixel format.
-// Normally used to match a configuration request to the screen format.
-void QEglProperties::setPixelFormat(QImage::Format pixelFormat)
-{
- Q_UNUSED(pixelFormat)
- NOEGL
-
-}
-
-void QEglProperties::setRenderableType(QEgl::API api)
-{
- Q_UNUSED(api);
- NOEGL
-}
-
-// Reduce the complexity of a configuration request to ask for less
-// because the previous request did not result in success. Returns
-// true if the complexity was reduced, or false if no further
-// reductions in complexity are possible.
-bool QEglProperties::reduceConfiguration()
-{
- NOEGL
- return false;
-}
-
-// Convert a property list to a string suitable for debug output.
-QString QEglProperties::toString() const
-{
- NOEGL
- return QString();
-}
-
-void QEglProperties::setPaintDeviceFormat(QPaintDevice *dev)
-{
- Q_UNUSED(dev)
- NOEGL
-}
-
-QT_END_NAMESPACE
-
-
diff --git a/src/gui/image/image.pri b/src/gui/image/image.pri
index b8eb546ba5..dd7b665ecc 100644
--- a/src/gui/image/image.pri
+++ b/src/gui/image/image.pri
@@ -48,12 +48,7 @@ SOURCES += \
SOURCES += image/qpixmap_qpa.cpp
win32: SOURCES += image/qpixmap_win.cpp
-!symbian|contains(S60_VERSION, 3.1)|contains(S60_VERSION, 3.2) {
- SOURCES += image/qvolatileimagedata.cpp
-}
-else {
- SOURCES += image/qvolatileimagedata_symbian.cpp
-}
+SOURCES += image/qvolatileimagedata.cpp
# Built-in image format support
HEADERS += \
@@ -72,8 +67,6 @@ SOURCES += \
else:DEFINES *= QT_NO_IMAGEFORMAT_PNG
contains(QT_CONFIG, jpeg):include($$PWD/qjpeghandler.pri)
-contains(QT_CONFIG, mng):include($$PWD/qmnghandler.pri)
-contains(QT_CONFIG, tiff):include($$PWD/qtiffhandler.pri)
contains(QT_CONFIG, gif):include($$PWD/qgifhandler.pri)
# SIMD
diff --git a/src/gui/image/qbitmap.cpp b/src/gui/image/qbitmap.cpp
index 6c1320e868..8184200813 100644
--- a/src/gui/image/qbitmap.cpp
+++ b/src/gui/image/qbitmap.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qbitmap.h b/src/gui/image/qbitmap.h
index 5740b874db..f67e2ddef8 100644
--- a/src/gui/image/qbitmap.h
+++ b/src/gui/image/qbitmap.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QVariant;
diff --git a/src/gui/image/qbmphandler.cpp b/src/gui/image/qbmphandler.cpp
index 3d9f8228f2..f9e11f1390 100644
--- a/src/gui/image/qbmphandler.cpp
+++ b/src/gui/image/qbmphandler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qbmphandler_p.h b/src/gui/image/qbmphandler_p.h
index f2eb8f69b2..d203a77677 100644
--- a/src/gui/image/qbmphandler_p.h
+++ b/src/gui/image/qbmphandler_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qgifhandler.cpp b/src/gui/image/qgifhandler.cpp
index 6968ca6736..3cffe99c86 100644
--- a/src/gui/image/qgifhandler.cpp
+++ b/src/gui/image/qgifhandler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
** WARNING:
diff --git a/src/gui/image/qgifhandler_p.h b/src/gui/image/qgifhandler_p.h
index 0d9724a071..05b26d09e7 100644
--- a/src/gui/image/qgifhandler_p.h
+++ b/src/gui/image/qgifhandler_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
** WARNING:
diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp
index 564abd2af2..07af19d06a 100644
--- a/src/gui/image/qimage.cpp
+++ b/src/gui/image/qimage.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -124,7 +124,8 @@ QImageData::QImageData()
dpmx(qt_defaultDpiX() * 100 / qreal(2.54)),
dpmy(qt_defaultDpiY() * 100 / qreal(2.54)),
offset(0, 0), own_data(true), ro_data(false), has_alpha_clut(false),
- is_cached(false), is_locked(false), paintEngine(0)
+ is_cached(false), is_locked(false), cleanupFunction(0), cleanupInfo(0),
+ paintEngine(0)
{
}
@@ -206,6 +207,8 @@ QImageData * QImageData::create(const QSize &size, QImage::Format format, int nu
QImageData::~QImageData()
{
+ if (cleanupFunction)
+ cleanupFunction(cleanupInfo);
if (is_cached)
QImagePixmapCleanupHooks::executeImageHooks((((qint64) ser_no) << 32) | ((qint64) detach_no));
delete paintEngine;
@@ -363,7 +366,6 @@ bool QImageData::checkForAlphaPixels() const
\row \o PBM \o Portable Bitmap \o Read
\row \o PGM \o Portable Graymap \o Read
\row \o PPM \o Portable Pixmap \o Read/write
- \row \o TIFF \o Tagged Image File Format \o Read/write
\row \o XBM \o X11 Bitmap \o Read/write
\row \o XPM \o X11 Pixmap \o Read/write
\endtable
@@ -617,6 +619,18 @@ bool QImageData::checkForAlphaPixels() const
*/
/*!
+ \typedef QImageCleanupFunction
+ \since 5.0
+
+ A function with the following signature that can be used to
+ implement basic image memory management:
+
+ \code
+ void myImageCleanupHandler(void *info);
+ \endcode
+*/
+
+/*!
\enum QImage::InvertMode
This enum type is used to describe how pixel values should be
@@ -772,7 +786,7 @@ QImage::QImage(const QSize &size, Format format)
-QImageData *QImageData::create(uchar *data, int width, int height, int bpl, QImage::Format format, bool readOnly)
+QImageData *QImageData::create(uchar *data, int width, int height, int bpl, QImage::Format format, bool readOnly, QImageCleanupFunction cleanupFunction, void *cleanupInfo)
{
QImageData *d = 0;
@@ -815,6 +829,9 @@ QImageData *QImageData::create(uchar *data, int width, int height, int bpl, QIm
d->bytes_per_line = bpl;
d->nbytes = d->bytes_per_line * height;
+ d->cleanupFunction = cleanupFunction;
+ d->cleanupInfo = cleanupInfo;
+
return d;
}
@@ -824,17 +841,21 @@ QImageData *QImageData::create(uchar *data, int width, int height, int bpl, QIm
and \a height must be specified in pixels, \a data must be 32-bit aligned,
and each scanline of data in the image must also be 32-bit aligned.
- The buffer must remain valid throughout the life of the
- QImage. The image does not delete the buffer at destruction.
+ The buffer must remain valid throughout the life of the QImage and
+ all copies that have not been modified or otherwise detached from
+ the original buffer. The image does not delete the buffer at destruction.
+ You can provide a function pointer \a cleanupFunction along with an
+ extra pointer \a cleanupInfo that will be called when the last copy
+ is destroyed.
If \a format is an indexed color format, the image color table is
initially empty and must be sufficiently expanded with
setColorCount() or setColorTable() before the image is used.
*/
-QImage::QImage(uchar* data, int width, int height, Format format)
+QImage::QImage(uchar* data, int width, int height, Format format, QImageCleanupFunction cleanupFunction, void *cleanupInfo)
: QPaintDevice()
{
- d = QImageData::create(data, width, height, 0, format, false);
+ d = QImageData::create(data, width, height, 0, format, false, cleanupFunction, cleanupInfo);
}
/*!
@@ -846,8 +867,10 @@ QImage::QImage(uchar* data, int width, int height, Format format)
The buffer must remain valid throughout the life of the QImage and
all copies that have not been modified or otherwise detached from
- the original buffer. The image does not delete the buffer at
- destruction.
+ the original buffer. The image does not delete the buffer at destruction.
+ You can provide a function pointer \a cleanupFunction along with an
+ extra pointer \a cleanupInfo that will be called when the last copy
+ is destroyed.
If \a format is an indexed color format, the image color table is
initially empty and must be sufficiently expanded with
@@ -860,10 +883,10 @@ QImage::QImage(uchar* data, int width, int height, Format format)
constructing a QImage from raw data, without the possibility of the raw
data being changed.
*/
-QImage::QImage(const uchar* data, int width, int height, Format format)
+QImage::QImage(const uchar* data, int width, int height, Format format, QImageCleanupFunction cleanupFunction, void *cleanupInfo)
: QPaintDevice()
{
- d = QImageData::create(const_cast<uchar*>(data), width, height, 0, format, true);
+ d = QImageData::create(const_cast<uchar*>(data), width, height, 0, format, true, cleanupFunction, cleanupInfo);
}
/*!
@@ -872,17 +895,21 @@ QImage::QImage(const uchar* data, int width, int height, Format format)
and \a height must be specified in pixels. \a bytesPerLine
specifies the number of bytes per line (stride).
- The buffer must remain valid throughout the life of the
- QImage. The image does not delete the buffer at destruction.
+ The buffer must remain valid throughout the life of the QImage and
+ all copies that have not been modified or otherwise detached from
+ the original buffer. The image does not delete the buffer at destruction.
+ You can provide a function pointer \a cleanupFunction along with an
+ extra pointer \a cleanupInfo that will be called when the last copy
+ is destroyed.
If \a format is an indexed color format, the image color table is
initially empty and must be sufficiently expanded with
setColorCount() or setColorTable() before the image is used.
*/
-QImage::QImage(uchar *data, int width, int height, int bytesPerLine, Format format)
+QImage::QImage(uchar *data, int width, int height, int bytesPerLine, Format format, QImageCleanupFunction cleanupFunction, void *cleanupInfo)
:QPaintDevice()
{
- d = QImageData::create(data, width, height, bytesPerLine, format, false);
+ d = QImageData::create(data, width, height, bytesPerLine, format, false, cleanupFunction, cleanupInfo);
}
@@ -892,8 +919,12 @@ QImage::QImage(uchar *data, int width, int height, int bytesPerLine, Format form
and \a height must be specified in pixels. \a bytesPerLine
specifies the number of bytes per line (stride).
- The buffer must remain valid throughout the life of the
- QImage. The image does not delete the buffer at destruction.
+ The buffer must remain valid throughout the life of the QImage and
+ all copies that have not been modified or otherwise detached from
+ the original buffer. The image does not delete the buffer at destruction.
+ You can provide a function pointer \a cleanupFunction along with an
+ extra pointer \a cleanupInfo that will be called when the last copy
+ is destroyed.
If \a format is an indexed color format, the image color table is
initially empty and must be sufficiently expanded with
@@ -907,10 +938,10 @@ QImage::QImage(uchar *data, int width, int height, int bytesPerLine, Format form
data being changed.
*/
-QImage::QImage(const uchar *data, int width, int height, int bytesPerLine, Format format)
+QImage::QImage(const uchar *data, int width, int height, int bytesPerLine, Format format, QImageCleanupFunction cleanupFunction, void *cleanupInfo)
:QPaintDevice()
{
- d = QImageData::create(const_cast<uchar*>(data), width, height, bytesPerLine, format, true);
+ d = QImageData::create(const_cast<uchar*>(data), width, height, bytesPerLine, format, true, cleanupFunction, cleanupInfo);
}
/*!
diff --git a/src/gui/image/qimage.h b/src/gui/image/qimage.h
index 7a5a732c9a..5a3ae8f886 100644
--- a/src/gui/image/qimage.h
+++ b/src/gui/image/qimage.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -57,7 +57,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QIODevice;
class QStringList;
@@ -71,7 +70,7 @@ struct QImageData;
class QImageDataMisc; // internal
#ifndef QT_NO_IMAGE_TEXT
#if QT_DEPRECATED_SINCE(5, 0)
-class Q_GUI_EXPORT QImageTextKeyLang {
+class QT_DEPRECATED QImageTextKeyLang {
public:
QImageTextKeyLang(const char* k, const char* l) : key(k), lang(l) { }
QImageTextKeyLang() { }
@@ -89,6 +88,7 @@ public:
#endif
#endif //QT_NO_IMAGE_TEXT
+typedef void (*QImageCleanupFunction)(void*);
class Q_GUI_EXPORT QImage : public QPaintDevice
{
@@ -129,10 +129,10 @@ public:
QImage();
QImage(const QSize &size, Format format);
QImage(int width, int height, Format format);
- QImage(uchar *data, int width, int height, Format format);
- QImage(const uchar *data, int width, int height, Format format);
- QImage(uchar *data, int width, int height, int bytesPerLine, Format format);
- QImage(const uchar *data, int width, int height, int bytesPerLine, Format format);
+ QImage(uchar *data, int width, int height, Format format, QImageCleanupFunction cleanupFunction = 0, void *cleanupInfo = 0);
+ QImage(const uchar *data, int width, int height, Format format, QImageCleanupFunction cleanupFunction = 0, void *cleanupInfo = 0);
+ QImage(uchar *data, int width, int height, int bytesPerLine, Format format, QImageCleanupFunction cleanupFunction = 0, void *cleanupInfo = 0);
+ QImage(const uchar *data, int width, int height, int bytesPerLine, Format format, QImageCleanupFunction cleanupFunction = 0, void *cleanupInfo = 0);
#ifndef QT_NO_IMAGEFORMAT_XPM
explicit QImage(const char * const xpm[]);
@@ -271,11 +271,11 @@ public:
void setText(const QString &key, const QString &value);
#if QT_DEPRECATED_SINCE(5, 0)
- inline QString text(const char* key, const char* lang=0) const;
- inline QList<QImageTextKeyLang> textList() const;
- inline QStringList textLanguages() const;
- inline QString text(const QImageTextKeyLang&) const;
- inline void setText(const char* key, const char* lang, const QString&);
+ QT_DEPRECATED inline QString text(const char* key, const char* lang=0) const;
+ QT_DEPRECATED inline QList<QImageTextKeyLang> textList() const;
+ QT_DEPRECATED inline QStringList textLanguages() const;
+ QT_DEPRECATED inline QString text(const QImageTextKeyLang&) const;
+ QT_DEPRECATED inline void setText(const char* key, const char* lang, const QString&);
#endif
#endif
@@ -383,6 +383,7 @@ inline void QImage::setText(const char* key, const char* lang, const QString &s)
setText(k, s);
}
#endif
+
inline int QImage::numColors() const
{
return colorCount();
diff --git a/src/gui/image/qimage_neon.cpp b/src/gui/image/qimage_neon.cpp
index cdf817b051..b19dfac3ec 100644
--- a/src/gui/image/qimage_neon.cpp
+++ b/src/gui/image/qimage_neon.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qimage_p.h b/src/gui/image/qimage_p.h
index 6e846fd0cf..fd1370d1d3 100644
--- a/src/gui/image/qimage_p.h
+++ b/src/gui/image/qimage_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -69,7 +69,7 @@ struct Q_GUI_EXPORT QImageData { // internal image data
QImageData();
~QImageData();
static QImageData *create(const QSize &size, QImage::Format format, int numColors = 0);
- static QImageData *create(uchar *data, int w, int h, int bpl, QImage::Format format, bool readOnly);
+ static QImageData *create(uchar *data, int w, int h, int bpl, QImage::Format format, bool readOnly, QImageCleanupFunction cleanupFunction = 0, void *cleanupInfo = 0);
QAtomicInt ref;
@@ -94,6 +94,9 @@ struct Q_GUI_EXPORT QImageData { // internal image data
uint is_cached : 1;
uint is_locked : 1;
+ QImageCleanupFunction cleanupFunction;
+ void* cleanupInfo;
+
bool checkForAlphaPixels() const;
// Convert the image in-place, minimizing memory reallocation
diff --git a/src/gui/image/qimage_sse2.cpp b/src/gui/image/qimage_sse2.cpp
index 872d1d6be7..8a36bfb0d2 100644
--- a/src/gui/image/qimage_sse2.cpp
+++ b/src/gui/image/qimage_sse2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qimage_ssse3.cpp b/src/gui/image/qimage_ssse3.cpp
index 95cf694d2a..2ca80ef3bb 100644
--- a/src/gui/image/qimage_ssse3.cpp
+++ b/src/gui/image/qimage_ssse3.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qimageiohandler.cpp b/src/gui/image/qimageiohandler.cpp
index d9691563b1..153412fb29 100644
--- a/src/gui/image/qimageiohandler.cpp
+++ b/src/gui/image/qimageiohandler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qimageiohandler.h b/src/gui/image/qimageiohandler.h
index 188b4ef1a8..0252ec02cc 100644
--- a/src/gui/image/qimageiohandler.h
+++ b/src/gui/image/qimageiohandler.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QImage;
class QRect;
@@ -120,7 +119,7 @@ struct Q_GUI_EXPORT QImageIOHandlerFactoryInterface : public QFactoryInterface
virtual QImageIOHandler *create(QIODevice *device, const QByteArray &format = QByteArray()) const = 0;
};
-#define QImageIOHandlerFactoryInterface_iid "com.trolltech.Qt.QImageIOHandlerFactoryInterface"
+#define QImageIOHandlerFactoryInterface_iid "org.qt-project.Qt.QImageIOHandlerFactoryInterface"
Q_DECLARE_INTERFACE(QImageIOHandlerFactoryInterface, QImageIOHandlerFactoryInterface_iid)
class Q_GUI_EXPORT QImageIOPlugin : public QObject, public QImageIOHandlerFactoryInterface
diff --git a/src/gui/image/qimagepixmapcleanuphooks.cpp b/src/gui/image/qimagepixmapcleanuphooks.cpp
index e83897aced..6d8693ffb1 100644
--- a/src/gui/image/qimagepixmapcleanuphooks.cpp
+++ b/src/gui/image/qimagepixmapcleanuphooks.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qimagepixmapcleanuphooks_p.h b/src/gui/image/qimagepixmapcleanuphooks_p.h
index 11abe173c4..e7fadcabfd 100644
--- a/src/gui/image/qimagepixmapcleanuphooks_p.h
+++ b/src/gui/image/qimagepixmapcleanuphooks_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qimagereader.cpp b/src/gui/image/qimagereader.cpp
index b6345191d6..4a9a9b00f4 100644
--- a/src/gui/image/qimagereader.cpp
+++ b/src/gui/image/qimagereader.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -144,12 +144,6 @@
#ifndef QT_NO_IMAGEFORMAT_JPEG
#include <private/qjpeghandler_p.h>
#endif
-#ifndef QT_NO_IMAGEFORMAT_MNG
-#include <private/qmnghandler_p.h>
-#endif
-#ifndef QT_NO_IMAGEFORMAT_TIFF
-#include <private/qtiffhandler_p.h>
-#endif
#ifdef QT_BUILTIN_GIF_READER
#include <private/qgifhandler_p.h>
#endif
@@ -168,12 +162,6 @@ enum _qt_BuiltInFormatType {
#ifndef QT_NO_IMAGEFORMAT_JPEG
_qt_JpgFormat,
#endif
-#ifndef QT_NO_IMAGEFORMAT_MNG
- _qt_MngFormat,
-#endif
-#ifndef QT_NO_IMAGEFORMAT_TIFF
- _qt_TifFormat,
-#endif
#ifdef QT_BUILTIN_GIF_READER
_qt_GifFormat,
#endif
@@ -206,12 +194,6 @@ static const _qt_BuiltInFormatStruct _qt_BuiltInFormats[] = {
#ifndef QT_NO_IMAGEFORMAT_JPEG
{_qt_JpgFormat, "jpg"},
#endif
-#ifndef QT_NO_IMAGEFORMAT_MNG
- {_qt_MngFormat, "mng"},
-#endif
-#ifndef QT_NO_IMAGEFORMAT_TIFF
- {_qt_TifFormat, "tif"},
-#endif
#ifdef QT_BUILTIN_GIF_READER
{_qt_GifFormat, "gif"},
#endif
@@ -344,14 +326,6 @@ static QImageIOHandler *createReadHandlerHelper(QIODevice *device,
} else if (testFormat == "jpg" || testFormat == "jpeg") {
handler = new QJpegHandler;
#endif
-#ifndef QT_NO_IMAGEFORMAT_MNG
- } else if (testFormat == "mng") {
- handler = new QMngHandler;
-#endif
-#ifndef QT_NO_IMAGEFORMAT_TIFF
- } else if (testFormat == "tif" || testFormat == "tiff") {
- handler = new QTiffHandler;
-#endif
#ifdef QT_BUILTIN_GIF_READER
} else if (testFormat == "gif") {
handler = new QGifHandler;
@@ -440,18 +414,6 @@ static QImageIOHandler *createReadHandlerHelper(QIODevice *device,
handler = new QJpegHandler;
break;
#endif
-#ifndef QT_NO_IMAGEFORMAT_MNG
- case _qt_MngFormat:
- if (QMngHandler::canRead(device))
- handler = new QMngHandler;
- break;
-#endif
-#ifndef QT_NO_IMAGEFORMAT_TIFF
- case _qt_TifFormat:
- if (QTiffHandler::canRead(device))
- handler = new QTiffHandler;
- break;
-#endif
#ifdef QT_BUILTIN_GIF_READER
case _qt_GifFormat:
if (QGifHandler::canRead(device))
@@ -1466,23 +1428,18 @@ QByteArray QImageReader::imageFormat(QIODevice *device)
\row \o GIF \o Graphic Interchange Format (optional)
\row \o JPG \o Joint Photographic Experts Group
\row \o JPEG \o Joint Photographic Experts Group
- \row \o MNG \o Multiple-image Network Graphics
\row \o PNG \o Portable Network Graphics
\row \o PBM \o Portable Bitmap
\row \o PGM \o Portable Graymap
\row \o PPM \o Portable Pixmap
- \row \o TIFF \o Tagged Image File Format
\row \o XBM \o X11 Bitmap
\row \o XPM \o X11 Pixmap
\row \o SVG \o Scalable Vector Graphics
\endtable
Reading and writing SVG files is supported through Qt's
- \l{QtSvg Module}{SVG Module}.
-
- To configure Qt with GIF support, pass \c -qt-gif to the \c
- configure script or check the appropriate option in the graphical
- installer.
+ \l{QtSvg Module}{SVG Module}. The \l{QtImageFormats Module}{Image Formats Module}
+ provides support for additional image formats.
Note that the QApplication instance must be created before this function is
called.
diff --git a/src/gui/image/qimagereader.h b/src/gui/image/qimagereader.h
index f132991d92..f359cd3e21 100644
--- a/src/gui/image/qimagereader.h
+++ b/src/gui/image/qimagereader.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QColor;
class QIODevice;
diff --git a/src/gui/image/qimagewriter.cpp b/src/gui/image/qimagewriter.cpp
index b7d57fa4d3..966017452c 100644
--- a/src/gui/image/qimagewriter.cpp
+++ b/src/gui/image/qimagewriter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -117,12 +117,6 @@
#ifndef QT_NO_IMAGEFORMAT_JPEG
#include <private/qjpeghandler_p.h>
#endif
-#ifndef QT_NO_IMAGEFORMAT_MNG
-#include <private/qmnghandler_p.h>
-#endif
-#ifndef QT_NO_IMAGEFORMAT_TIFF
-#include <private/qtiffhandler_p.h>
-#endif
#ifdef QT_BUILTIN_GIF_READER
#include <private/qgifhandler_p.h>
#endif
@@ -186,14 +180,6 @@ static QImageIOHandler *createWriteHandlerHelper(QIODevice *device,
} else if (testFormat == "jpg" || testFormat == "jpeg") {
handler = new QJpegHandler;
#endif
-#ifndef QT_NO_IMAGEFORMAT_MNG
- } else if (testFormat == "mng") {
- handler = new QMngHandler;
-#endif
-#ifndef QT_NO_IMAGEFORMAT_TIFF
- } else if (testFormat == "tif" || testFormat == "tiff") {
- handler = new QTiffHandler;
-#endif
#ifdef QT_BUILTIN_GIF_READER
} else if (testFormat == "gif") {
handler = new QGifHandler;
@@ -673,13 +659,13 @@ bool QImageWriter::supportsOption(QImageIOHandler::ImageOption option) const
\row \o JPEG \o Joint Photographic Experts Group
\row \o PNG \o Portable Network Graphics
\row \o PPM \o Portable Pixmap
- \row \o TIFF \o Tagged Image File Format
\row \o XBM \o X11 Bitmap
\row \o XPM \o X11 Pixmap
\endtable
Reading and writing SVG files is supported through Qt's
- \l{QtSvg Module}{SVG Module}.
+ \l{QtSvg Module}{SVG Module}. The \l{QtImageFormats Module}{Image Formats Module}
+ provides support for additional image formats.
Note that the QApplication instance must be created before this function is
called.
@@ -705,12 +691,6 @@ QList<QByteArray> QImageWriter::supportedImageFormats()
#ifndef QT_NO_IMAGEFORMAT_JPEG
formats << "jpg" << "jpeg";
#endif
-#ifndef QT_NO_IMAGEFORMAT_MNG
- formats << "mng";
-#endif
-#ifndef QT_NO_IMAGEFORMAT_TIFF
- formats << "tif" << "tiff";
-#endif
#ifdef QT_BUILTIN_GIF_READER
formats << "gif";
#endif
diff --git a/src/gui/image/qimagewriter.h b/src/gui/image/qimagewriter.h
index 5aac7e8599..a352d20bfd 100644
--- a/src/gui/image/qimagewriter.h
+++ b/src/gui/image/qimagewriter.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QIODevice;
class QImage;
diff --git a/src/gui/image/qjpeghandler.cpp b/src/gui/image/qjpeghandler.cpp
index f0f9368e22..0260d18217 100644
--- a/src/gui/image/qjpeghandler.cpp
+++ b/src/gui/image/qjpeghandler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qjpeghandler_p.h b/src/gui/image/qjpeghandler_p.h
index 7827804959..145361d2b6 100644
--- a/src/gui/image/qjpeghandler_p.h
+++ b/src/gui/image/qjpeghandler_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qmnghandler.cpp b/src/gui/image/qmnghandler.cpp
deleted file mode 100644
index 6a6ee8d2cf..0000000000
--- a/src/gui/image/qmnghandler.cpp
+++ /dev/null
@@ -1,497 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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 "qmnghandler_p.h"
-
-#include "qimage.h"
-#include "qvariant.h"
-#include "qcolor.h"
-
-#define MNG_USE_SO
-#include <libmng.h>
-
-QT_BEGIN_NAMESPACE
-
-class QMngHandlerPrivate
-{
- Q_DECLARE_PUBLIC(QMngHandler)
- public:
- bool haveReadNone;
- bool haveReadAll;
- mng_handle hMNG;
- QImage image;
- int elapsed;
- int nextDelay;
- int iterCount;
- int frameIndex;
- int nextIndex;
- int frameCount;
- mng_uint32 iStyle;
- mng_bool readData(mng_ptr pBuf, mng_uint32 iSize, mng_uint32p pRead);
- mng_bool writeData(mng_ptr pBuf, mng_uint32 iSize, mng_uint32p pWritten);
- mng_bool processHeader(mng_uint32 iWidth, mng_uint32 iHeight);
- QMngHandlerPrivate(QMngHandler *q_ptr);
- ~QMngHandlerPrivate();
- bool getNextImage(QImage *result);
- bool writeImage(const QImage &image);
- int currentImageNumber() const;
- int imageCount() const;
- bool jumpToImage(int imageNumber);
- bool jumpToNextImage();
- int nextImageDelay() const;
- bool setBackgroundColor(const QColor &color);
- QColor backgroundColor() const;
- QMngHandler *q_ptr;
-};
-
-static mng_bool myerror(mng_handle /*hMNG*/,
- mng_int32 iErrorcode,
- mng_int8 /*iSeverity*/,
- mng_chunkid iChunkname,
- mng_uint32 /*iChunkseq*/,
- mng_int32 iExtra1,
- mng_int32 iExtra2,
- mng_pchar zErrortext)
-{
- qWarning("MNG error %d: %s; chunk %c%c%c%c; subcode %d:%d",
- iErrorcode,zErrortext,
- (iChunkname>>24)&0xff,
- (iChunkname>>16)&0xff,
- (iChunkname>>8)&0xff,
- (iChunkname>>0)&0xff,
- iExtra1,iExtra2);
- return TRUE;
-}
-
-static mng_ptr myalloc(mng_size_t iSize)
-{
-#if defined(Q_OS_WINCE)
- mng_ptr ptr = malloc(iSize);
- memset(ptr, 0, iSize);
- return ptr;
-#else
- return (mng_ptr)calloc(1, iSize);
-#endif
-}
-
-static void myfree(mng_ptr pPtr, mng_size_t /*iSize*/)
-{
- free(pPtr);
-}
-
-static mng_bool myopenstream(mng_handle)
-{
- return MNG_TRUE;
-}
-
-static mng_bool myclosestream(mng_handle hMNG)
-{
- QMngHandlerPrivate *pMydata = reinterpret_cast<QMngHandlerPrivate *>(mng_get_userdata(hMNG));
- pMydata->haveReadAll = true;
- return MNG_TRUE;
-}
-
-static mng_bool myreaddata(mng_handle hMNG,
- mng_ptr pBuf,
- mng_uint32 iSize,
- mng_uint32p pRead)
-{
- QMngHandlerPrivate *pMydata = reinterpret_cast<QMngHandlerPrivate *>(mng_get_userdata(hMNG));
- return pMydata->readData(pBuf, iSize, pRead);
-}
-
-static mng_bool mywritedata(mng_handle hMNG,
- mng_ptr pBuf,
- mng_uint32 iSize,
- mng_uint32p pWritten)
-{
- QMngHandlerPrivate *pMydata = reinterpret_cast<QMngHandlerPrivate *>(mng_get_userdata(hMNG));
- return pMydata->writeData(pBuf, iSize, pWritten);
-}
-
-static mng_bool myprocessheader(mng_handle hMNG,
- mng_uint32 iWidth,
- mng_uint32 iHeight)
-{
- QMngHandlerPrivate *pMydata = reinterpret_cast<QMngHandlerPrivate *>(mng_get_userdata(hMNG));
- return pMydata->processHeader(iWidth, iHeight);
-}
-
-static mng_ptr mygetcanvasline(mng_handle hMNG,
- mng_uint32 iLinenr)
-{
- QMngHandlerPrivate *pMydata = reinterpret_cast<QMngHandlerPrivate *>(mng_get_userdata(hMNG));
- return (mng_ptr)pMydata->image.scanLine(iLinenr);
-}
-
-static mng_bool myrefresh(mng_handle /*hMNG*/,
- mng_uint32 /*iX*/,
- mng_uint32 /*iY*/,
- mng_uint32 /*iWidth*/,
- mng_uint32 /*iHeight*/)
-{
- return MNG_TRUE;
-}
-
-static mng_uint32 mygettickcount(mng_handle hMNG)
-{
- QMngHandlerPrivate *pMydata = reinterpret_cast<QMngHandlerPrivate *>(mng_get_userdata(hMNG));
- return pMydata->elapsed++;
-}
-
-static mng_bool mysettimer(mng_handle hMNG,
- mng_uint32 iMsecs)
-{
- QMngHandlerPrivate *pMydata = reinterpret_cast<QMngHandlerPrivate *>(mng_get_userdata(hMNG));
- pMydata->elapsed += iMsecs;
- pMydata->nextDelay = iMsecs;
- return MNG_TRUE;
-}
-
-static mng_bool myprocessterm(mng_handle hMNG,
- mng_uint8 iTermaction,
- mng_uint8 /*iIteraction*/,
- mng_uint32 /*iDelay*/,
- mng_uint32 iItermax)
-{
- QMngHandlerPrivate *pMydata = reinterpret_cast<QMngHandlerPrivate *>(mng_get_userdata(hMNG));
- if (iTermaction == 3)
- pMydata->iterCount = iItermax;
- return MNG_TRUE;
-}
-
-static mng_bool mytrace(mng_handle,
- mng_int32 iFuncnr,
- mng_int32 iFuncseq,
- mng_pchar zFuncname)
-{
- qDebug("mng trace: iFuncnr: %d iFuncseq: %d zFuncname: %s", iFuncnr, iFuncseq, zFuncname);
- return MNG_TRUE;
-}
-
-QMngHandlerPrivate::QMngHandlerPrivate(QMngHandler *q_ptr)
- : haveReadNone(true), haveReadAll(false), elapsed(0), nextDelay(0), iterCount(1),
- frameIndex(-1), nextIndex(0), frameCount(0), q_ptr(q_ptr)
-{
- iStyle = (QSysInfo::ByteOrder == QSysInfo::LittleEndian) ? MNG_CANVAS_BGRA8 : MNG_CANVAS_ARGB8;
- // Initialize libmng
- hMNG = mng_initialize((mng_ptr)this, myalloc, myfree, mytrace);
- if (hMNG) {
- // Set callback functions
- mng_setcb_errorproc(hMNG, myerror);
- mng_setcb_openstream(hMNG, myopenstream);
- mng_setcb_closestream(hMNG, myclosestream);
- mng_setcb_readdata(hMNG, myreaddata);
- mng_setcb_writedata(hMNG, mywritedata);
- mng_setcb_processheader(hMNG, myprocessheader);
- mng_setcb_getcanvasline(hMNG, mygetcanvasline);
- mng_setcb_refresh(hMNG, myrefresh);
- mng_setcb_gettickcount(hMNG, mygettickcount);
- mng_setcb_settimer(hMNG, mysettimer);
- mng_setcb_processterm(hMNG, myprocessterm);
- mng_set_doprogressive(hMNG, MNG_FALSE);
- mng_set_suspensionmode(hMNG, MNG_TRUE);
- }
-}
-
-QMngHandlerPrivate::~QMngHandlerPrivate()
-{
- mng_cleanup(&hMNG);
-}
-
-mng_bool QMngHandlerPrivate::readData(mng_ptr pBuf, mng_uint32 iSize, mng_uint32p pRead)
-{
- Q_Q(QMngHandler);
- *pRead = q->device()->read((char *)pBuf, iSize);
- return (*pRead > 0) ? MNG_TRUE : MNG_FALSE;
-}
-
-mng_bool QMngHandlerPrivate::writeData(mng_ptr pBuf, mng_uint32 iSize, mng_uint32p pWritten)
-{
- Q_Q(QMngHandler);
- *pWritten = q->device()->write((char *)pBuf, iSize);
- return MNG_TRUE;
-}
-
-mng_bool QMngHandlerPrivate::processHeader(mng_uint32 iWidth, mng_uint32 iHeight)
-{
- if (mng_set_canvasstyle(hMNG, iStyle) != MNG_NOERROR)
- return MNG_FALSE;
- image = QImage(iWidth, iHeight, QImage::Format_ARGB32);
- image.fill(0);
- return MNG_TRUE;
-}
-
-bool QMngHandlerPrivate::getNextImage(QImage *result)
-{
- mng_retcode ret;
- if (haveReadNone) {
- haveReadNone = false;
- ret = mng_readdisplay(hMNG);
- } else {
- ret = mng_display_resume(hMNG);
- }
- if ((MNG_NOERROR == ret) || (MNG_NEEDTIMERWAIT == ret)) {
- *result = image;
- frameIndex = nextIndex++;
- if (haveReadAll && (frameCount == 0))
- frameCount = nextIndex;
- return true;
- }
- return false;
-}
-
-bool QMngHandlerPrivate::writeImage(const QImage &image)
-{
- mng_reset(hMNG);
- if (mng_create(hMNG) != MNG_NOERROR)
- return false;
-
- this->image = image.convertToFormat(QImage::Format_ARGB32);
- int w = image.width();
- int h = image.height();
-
- if (
- // width, height, ticks, layercount, framecount, playtime, simplicity
- (mng_putchunk_mhdr(hMNG, w, h, 1000, 0, 0, 0, 7) == MNG_NOERROR) &&
- // termination_action, action_after_iterations, delay, iteration_max
- (mng_putchunk_term(hMNG, 3, 0, 1, 0x7FFFFFFF) == MNG_NOERROR) &&
- // width, height, bitdepth, colortype, compression, filter, interlace
- (mng_putchunk_ihdr(hMNG, w, h, 8, 6, 0, 0, 0) == MNG_NOERROR) &&
- // width, height, colortype, bitdepth, compression, filter, interlace, canvasstyle, getcanvasline
- (mng_putimgdata_ihdr(hMNG, w, h, 6, 8, 0, 0, 0, iStyle, mygetcanvasline) == MNG_NOERROR) &&
- (mng_putchunk_iend(hMNG) == MNG_NOERROR) &&
- (mng_putchunk_mend(hMNG) == MNG_NOERROR) &&
- (mng_write(hMNG) == MNG_NOERROR)
- )
- return true;
- return false;
-}
-
-int QMngHandlerPrivate::currentImageNumber() const
-{
-// return mng_get_currentframe(hMNG) % imageCount(); not implemented, apparently
- return frameIndex;
-}
-
-int QMngHandlerPrivate::imageCount() const
-{
-// return mng_get_totalframes(hMNG); not implemented, apparently
- if (haveReadAll)
- return frameCount;
- return 0; // Don't know
-}
-
-bool QMngHandlerPrivate::jumpToImage(int imageNumber)
-{
- if (imageNumber == nextIndex)
- return true;
-
- if ((imageNumber == 0) && haveReadAll && (nextIndex == frameCount)) {
- // Loop!
- nextIndex = 0;
- return true;
- }
- if (mng_display_freeze(hMNG) == MNG_NOERROR) {
- if (mng_display_goframe(hMNG, imageNumber) == MNG_NOERROR) {
- nextIndex = imageNumber;
- return true;
- }
- }
- return false;
-}
-
-bool QMngHandlerPrivate::jumpToNextImage()
-{
- return jumpToImage((currentImageNumber()+1) % imageCount());
-}
-
-int QMngHandlerPrivate::nextImageDelay() const
-{
- return nextDelay;
-}
-
-bool QMngHandlerPrivate::setBackgroundColor(const QColor &color)
-{
- mng_uint16 iRed = (mng_uint16)(color.red() << 8);
- mng_uint16 iBlue = (mng_uint16)(color.blue() << 8);
- mng_uint16 iGreen = (mng_uint16)(color.green() << 8);
- return (mng_set_bgcolor(hMNG, iRed, iBlue, iGreen) == MNG_NOERROR);
-}
-
-QColor QMngHandlerPrivate::backgroundColor() const
-{
- mng_uint16 iRed;
- mng_uint16 iBlue;
- mng_uint16 iGreen;
- if (mng_get_bgcolor(hMNG, &iRed, &iBlue, &iGreen) == MNG_NOERROR)
- return QColor((iRed >> 8) & 0xFF, (iGreen >> 8) & 0xFF, (iBlue >> 8) & 0xFF);
- return QColor();
-}
-
-QMngHandler::QMngHandler()
- : d_ptr(new QMngHandlerPrivate(this))
-{
-}
-
-QMngHandler::~QMngHandler()
-{
-}
-
-/*! \reimp */
-bool QMngHandler::canRead() const
-{
- Q_D(const QMngHandler);
- if ((!d->haveReadNone
- && (!d->haveReadAll || (d->haveReadAll && (d->nextIndex < d->frameCount))))
- || canRead(device()))
- {
- setFormat("mng");
- return true;
- }
- return false;
-}
-
-/*! \internal */
-bool QMngHandler::canRead(QIODevice *device)
-{
- if (!device) {
- qWarning("QMngHandler::canRead() called with no device");
- return false;
- }
-
- return device->peek(8) == "\x8A\x4D\x4E\x47\x0D\x0A\x1A\x0A";
-}
-
-/*! \reimp */
-QByteArray QMngHandler::name() const
-{
- return "mng";
-}
-
-/*! \reimp */
-bool QMngHandler::read(QImage *image)
-{
- Q_D(QMngHandler);
- return canRead() ? d->getNextImage(image) : false;
-}
-
-/*! \reimp */
-bool QMngHandler::write(const QImage &image)
-{
- Q_D(QMngHandler);
- return d->writeImage(image);
-}
-
-/*! \reimp */
-int QMngHandler::currentImageNumber() const
-{
- Q_D(const QMngHandler);
- return d->currentImageNumber();
-}
-
-/*! \reimp */
-int QMngHandler::imageCount() const
-{
- Q_D(const QMngHandler);
- return d->imageCount();
-}
-
-/*! \reimp */
-bool QMngHandler::jumpToImage(int imageNumber)
-{
- Q_D(QMngHandler);
- return d->jumpToImage(imageNumber);
-}
-
-/*! \reimp */
-bool QMngHandler::jumpToNextImage()
-{
- Q_D(QMngHandler);
- return d->jumpToNextImage();
-}
-
-/*! \reimp */
-int QMngHandler::loopCount() const
-{
- Q_D(const QMngHandler);
- if (d->iterCount == 0x7FFFFFFF)
- return -1; // infinite loop
- return d->iterCount-1;
-}
-
-/*! \reimp */
-int QMngHandler::nextImageDelay() const
-{
- Q_D(const QMngHandler);
- return d->nextImageDelay();
-}
-
-/*! \reimp */
-QVariant QMngHandler::option(ImageOption option) const
-{
- Q_D(const QMngHandler);
- if (option == QImageIOHandler::Animation)
- return true;
- else if (option == QImageIOHandler::BackgroundColor)
- return d->backgroundColor();
- return QVariant();
-}
-
-/*! \reimp */
-void QMngHandler::setOption(ImageOption option, const QVariant & value)
-{
- Q_D(QMngHandler);
- if (option == QImageIOHandler::BackgroundColor)
- d->setBackgroundColor(qvariant_cast<QColor>(value));
-}
-
-/*! \reimp */
-bool QMngHandler::supportsOption(ImageOption option) const
-{
- if (option == QImageIOHandler::Animation)
- return true;
- else if (option == QImageIOHandler::BackgroundColor)
- return true;
- return false;
-}
-
-QT_END_NAMESPACE
diff --git a/src/gui/image/qmnghandler.pri b/src/gui/image/qmnghandler.pri
deleted file mode 100644
index ffb98de92b..0000000000
--- a/src/gui/image/qmnghandler.pri
+++ /dev/null
@@ -1,10 +0,0 @@
-# common to plugin and built-in forms
-INCLUDEPATH *= $$PWD
-HEADERS += $$PWD/qmnghandler_p.h
-SOURCES += $$PWD/qmnghandler.cpp
-contains(QT_CONFIG, system-mng) {
- if(unix|win32-g++*):LIBS += -lmng
- else:win32: LIBS += libmng.lib
-} else {
- include($$PWD/../../3rdparty/libmng.pri)
-}
diff --git a/src/gui/image/qmnghandler_p.h b/src/gui/image/qmnghandler_p.h
deleted file mode 100644
index 42b4fd06a8..0000000000
--- a/src/gui/image/qmnghandler_p.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-#ifndef QMNGHANDLER_P_H
-#define QMNGHANDLER_P_H
-
-#include <QtCore/qscopedpointer.h>
-#include <QtGui/qimageiohandler.h>
-
-QT_BEGIN_NAMESPACE
-
-class QImage;
-class QByteArray;
-class QIODevice;
-class QVariant;
-class QMngHandlerPrivate;
-
-class QMngHandler : public QImageIOHandler
-{
- public:
- QMngHandler();
- ~QMngHandler();
- virtual bool canRead() const;
- virtual QByteArray name() const;
- virtual bool read(QImage *image);
- virtual bool write(const QImage &image);
- virtual int currentImageNumber() const;
- virtual int imageCount() const;
- virtual bool jumpToImage(int imageNumber);
- virtual bool jumpToNextImage();
- virtual int loopCount() const;
- virtual int nextImageDelay() const;
- static bool canRead(QIODevice *device);
- virtual QVariant option(ImageOption option) const;
- virtual void setOption(ImageOption option, const QVariant & value);
- virtual bool supportsOption(ImageOption option) const;
-
- private:
- Q_DECLARE_PRIVATE(QMngHandler)
- QScopedPointer<QMngHandlerPrivate> d_ptr;
-};
-
-QT_END_NAMESPACE
-
-#endif // QMNGHANDLER_P_H
diff --git a/src/gui/image/qmovie.cpp b/src/gui/image/qmovie.cpp
index 0be6833a87..8dfcf57dfd 100644
--- a/src/gui/image/qmovie.cpp
+++ b/src/gui/image/qmovie.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qmovie.h b/src/gui/image/qmovie.h
index eb2b81d0b5..9d4cb87b15 100644
--- a/src/gui/image/qmovie.h
+++ b/src/gui/image/qmovie.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,7 +55,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QByteArray;
class QColor;
diff --git a/src/gui/image/qnativeimage.cpp b/src/gui/image/qnativeimage.cpp
index 776a17857e..45a8e29100 100644
--- a/src/gui/image/qnativeimage.cpp
+++ b/src/gui/image/qnativeimage.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qnativeimage_p.h b/src/gui/image/qnativeimage_p.h
index 0d8834cad3..7809d75c47 100644
--- a/src/gui/image/qnativeimage_p.h
+++ b/src/gui/image/qnativeimage_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qpaintengine_pic.cpp b/src/gui/image/qpaintengine_pic.cpp
index cf9ecc17da..5cf5a37c5f 100644
--- a/src/gui/image/qpaintengine_pic.cpp
+++ b/src/gui/image/qpaintengine_pic.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qpaintengine_pic_p.h b/src/gui/image/qpaintengine_pic_p.h
index 830867d89d..f5145a5305 100644
--- a/src/gui/image/qpaintengine_pic_p.h
+++ b/src/gui/image/qpaintengine_pic_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qpicture.cpp b/src/gui/image/qpicture.cpp
index 1ca34df356..089cc5011c 100644
--- a/src/gui/image/qpicture.cpp
+++ b/src/gui/image/qpicture.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1425,20 +1425,16 @@ QPictureHandler::QPictureHandler(const char *f, const char *h, const QByteArray&
typedef QList<QPictureHandler *> QPHList;
Q_GLOBAL_STATIC(QPHList, pictureHandlers)
-#ifndef QT_NO_LIBRARY
-Q_GLOBAL_STATIC(QMutex, mutex)
-Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, factoryLoader,
- (QPictureFormatInterface_iid,
- QLatin1String("/pictureformats")))
-#endif
void qt_init_picture_plugins()
{
#ifndef QT_NO_LIBRARY
- QMutexLocker locker(mutex());
- QFactoryLoader *loader = factoryLoader();
- QStringList keys = loader->keys();
+ static QBasicMutex mutex;
+ QMutexLocker locker(&mutex);
+ static QFactoryLoader loader(QPictureFormatInterface_iid,
+ QStringLiteral("/pictureformats"));
+ QStringList keys = loader.keys();
for (int i = 0; i < keys.count(); ++i)
- if (QPictureFormatInterface *format = qobject_cast<QPictureFormatInterface*>(loader->instance(keys.at(i))))
+ if (QPictureFormatInterface *format = qobject_cast<QPictureFormatInterface*>(loader.instance(keys.at(i))))
format->installIOHandler(keys.at(i));
#endif
}
diff --git a/src/gui/image/qpicture.h b/src/gui/image/qpicture.h
index e408d65cbc..c3dbab25c5 100644
--- a/src/gui/image/qpicture.h
+++ b/src/gui/image/qpicture.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_PICTURE
diff --git a/src/gui/image/qpicture_p.h b/src/gui/image/qpicture_p.h
index 8c68d19558..f2d1a88408 100644
--- a/src/gui/image/qpicture_p.h
+++ b/src/gui/image/qpicture_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qpictureformatplugin.cpp b/src/gui/image/qpictureformatplugin.cpp
index 558d4febce..cb46790d69 100644
--- a/src/gui/image/qpictureformatplugin.cpp
+++ b/src/gui/image/qpictureformatplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qpictureformatplugin.h b/src/gui/image/qpictureformatplugin.h
index 9fd79c001d..7bcd32b4fd 100644
--- a/src/gui/image/qpictureformatplugin.h
+++ b/src/gui/image/qpictureformatplugin.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#if !defined(QT_NO_LIBRARY) && !defined(QT_NO_PICTURE)
@@ -66,7 +65,7 @@ struct Q_GUI_EXPORT QPictureFormatInterface : public QFactoryInterface
virtual bool installIOHandler(const QString &) = 0;
};
-#define QPictureFormatInterface_iid "com.trolltech.Qt.QPictureFormatInterface"
+#define QPictureFormatInterface_iid "org.qt-project.Qt.QPictureFormatInterface"
Q_DECLARE_INTERFACE(QPictureFormatInterface, QPictureFormatInterface_iid)
diff --git a/src/gui/image/qpixmap.cpp b/src/gui/image/qpixmap.cpp
index 48d393cc24..f1a06fa33c 100644
--- a/src/gui/image/qpixmap.cpp
+++ b/src/gui/image/qpixmap.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1253,8 +1253,7 @@ QPixmap QPixmap::transformed(const QMatrix &matrix, Qt::TransformationMode mode)
screen. Alternatively, if no manipulation is desired, the image
file can be loaded directly into a QPixmap. On Windows, the
QPixmap class also supports conversion between \c HBITMAP and
- QPixmap. On Symbian, the QPixmap class also supports conversion
- between CFbsBitmap and QPixmap.
+ QPixmap.
QPixmap provides a collection of functions that can be used to
obtain a variety of information about the pixmap. In addition,
@@ -1362,12 +1361,6 @@ QPixmap QPixmap::transformed(const QMatrix &matrix, Qt::TransformationMode mode)
to the QPixmap, and returns the HICON handle. The fromWinHICON()
function returns a QPixmap that is equivalent to the given icon.
- In addition, on Symbian, the QPixmap class supports conversion to
- and from CFbsBitmap: the toSymbianCFbsBitmap() function creates
- CFbsBitmap equivalent to the QPixmap, based on given mode and returns
- a CFbsBitmap object. The fromSymbianCFbsBitmap() function returns a
- QPixmap that is equivalent to the given bitmap and given mode.
-
\section1 Pixmap Transformations
QPixmap supports a number of functions for creating a new pixmap
diff --git a/src/gui/image/qpixmap.h b/src/gui/image/qpixmap.h
index 5e8ef70828..de76321f0a 100644
--- a/src/gui/image/qpixmap.h
+++ b/src/gui/image/qpixmap.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QImageWriter;
class QImageReader;
@@ -146,7 +145,7 @@ public:
inline void scroll(int dx, int dy, int x, int y, int width, int height, QRegion *exposed = 0);
void scroll(int dx, int dy, const QRect &rect, QRegion *exposed = 0);
-#ifdef QT_DEPRECATED
+#if QT_DEPRECATED_SINCE(5, 0)
QT_DEPRECATED int serialNumber() const;
#endif
qint64 cacheKey() const;
diff --git a/src/gui/image/qpixmap_blitter.cpp b/src/gui/image/qpixmap_blitter.cpp
index 041c11af3a..e5222fa216 100644
--- a/src/gui/image/qpixmap_blitter.cpp
+++ b/src/gui/image/qpixmap_blitter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qpixmap_blitter_p.h b/src/gui/image/qpixmap_blitter_p.h
index 42d649642f..95397374c6 100644
--- a/src/gui/image/qpixmap_blitter_p.h
+++ b/src/gui/image/qpixmap_blitter_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qpixmap_qpa.cpp b/src/gui/image/qpixmap_qpa.cpp
index 7f2ff2e266..162c5f5286 100644
--- a/src/gui/image/qpixmap_qpa.cpp
+++ b/src/gui/image/qpixmap_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qpixmap_raster.cpp b/src/gui/image/qpixmap_raster.cpp
index 424572ebd4..3fe5216313 100644
--- a/src/gui/image/qpixmap_raster.cpp
+++ b/src/gui/image/qpixmap_raster.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qpixmap_raster_p.h b/src/gui/image/qpixmap_raster_p.h
index de4d0e6f17..864fad42ec 100644
--- a/src/gui/image/qpixmap_raster_p.h
+++ b/src/gui/image/qpixmap_raster_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qpixmap_win.cpp b/src/gui/image/qpixmap_win.cpp
index 5ee7ca9eba..6b0ec38f53 100644
--- a/src/gui/image/qpixmap_win.cpp
+++ b/src/gui/image/qpixmap_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -44,8 +44,8 @@
#include "qpixmap_raster_p.h"
#include <qglobal.h>
-#include <qt_windows.h>
#include <QScopedArrayPointer>
+#include <qt_windows.h>
QT_BEGIN_NAMESPACE
diff --git a/src/gui/image/qpixmapcache.cpp b/src/gui/image/qpixmapcache.cpp
index 0f874bee6c..7769c45b2e 100644
--- a/src/gui/image/qpixmapcache.cpp
+++ b/src/gui/image/qpixmapcache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qpixmapcache.h b/src/gui/image/qpixmapcache.h
index 81f9f4b028..99bc59a50a 100644
--- a/src/gui/image/qpixmapcache.h
+++ b/src/gui/image/qpixmapcache.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class Q_GUI_EXPORT QPixmapCache
{
diff --git a/src/gui/image/qpixmapcache_p.h b/src/gui/image/qpixmapcache_p.h
index 2f609a8471..6ca109b03f 100644
--- a/src/gui/image/qpixmapcache_p.h
+++ b/src/gui/image/qpixmapcache_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qplatformpixmap.cpp b/src/gui/image/qplatformpixmap.cpp
index 30f1f4819b..5162ea80d9 100644
--- a/src/gui/image/qplatformpixmap.cpp
+++ b/src/gui/image/qplatformpixmap.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -133,6 +133,8 @@ bool QPlatformPixmap::fromData(const uchar *buf, uint len, const char *format, Q
QBuffer b(&a);
b.open(QIODevice::ReadOnly);
QImage image = QImageReader(&b, format).read();
+ if (image.isNull())
+ return false;
fromImage(makeBitmapCompliantIfNeeded(this, image, flags), flags);
return !isNull();
}
diff --git a/src/gui/image/qplatformpixmap_qpa.h b/src/gui/image/qplatformpixmap_qpa.h
index 13c3bc2fe8..154c5079a7 100644
--- a/src/gui/image/qplatformpixmap_qpa.h
+++ b/src/gui/image/qplatformpixmap_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,7 +60,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QImageReader;
diff --git a/src/gui/image/qpnghandler.cpp b/src/gui/image/qpnghandler.cpp
index a935ea3a28..7acad067b5 100644
--- a/src/gui/image/qpnghandler.cpp
+++ b/src/gui/image/qpnghandler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qpnghandler_p.h b/src/gui/image/qpnghandler_p.h
index 8f17bd18a4..5f04f81ac3 100644
--- a/src/gui/image/qpnghandler_p.h
+++ b/src/gui/image/qpnghandler_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qppmhandler.cpp b/src/gui/image/qppmhandler.cpp
index b08f97a3ca..fc625c044f 100644
--- a/src/gui/image/qppmhandler.cpp
+++ b/src/gui/image/qppmhandler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qppmhandler_p.h b/src/gui/image/qppmhandler_p.h
index 43e9b09f70..9cb47d063e 100644
--- a/src/gui/image/qppmhandler_p.h
+++ b/src/gui/image/qppmhandler_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qtiffhandler.cpp b/src/gui/image/qtiffhandler.cpp
deleted file mode 100644
index 475622021b..0000000000
--- a/src/gui/image/qtiffhandler.cpp
+++ /dev/null
@@ -1,668 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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 "qtiffhandler_p.h"
-#include <qvariant.h>
-#include <qdebug.h>
-#include <qimage.h>
-#include <qglobal.h>
-extern "C" {
-#include "tiffio.h"
-}
-
-QT_BEGIN_NAMESPACE
-
-tsize_t qtiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
- QIODevice* device = static_cast<QTiffHandler*>(fd)->device();
- return device->isReadable() ? device->read(static_cast<char *>(buf), size) : -1;
-}
-
-tsize_t qtiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
-{
- return static_cast<QTiffHandler*>(fd)->device()->write(static_cast<char *>(buf), size);
-}
-
-toff_t qtiffSeekProc(thandle_t fd, toff_t off, int whence)
-{
- QIODevice *device = static_cast<QTiffHandler*>(fd)->device();
- switch (whence) {
- case SEEK_SET:
- device->seek(off);
- break;
- case SEEK_CUR:
- device->seek(device->pos() + off);
- break;
- case SEEK_END:
- device->seek(device->size() + off);
- break;
- }
-
- return device->pos();
-}
-
-int qtiffCloseProc(thandle_t /*fd*/)
-{
- return 0;
-}
-
-toff_t qtiffSizeProc(thandle_t fd)
-{
- return static_cast<QTiffHandler*>(fd)->device()->size();
-}
-
-int qtiffMapProc(thandle_t /*fd*/, tdata_t* /*pbase*/, toff_t* /*psize*/)
-{
- return 0;
-}
-
-void qtiffUnmapProc(thandle_t /*fd*/, tdata_t /*base*/, toff_t /*size*/)
-{
-}
-
-// for 32 bits images
-inline void rotate_right_mirror_horizontal(QImage *const image)// rotate right->mirrored horizontal
-{
- const int height = image->height();
- const int width = image->width();
- QImage generated(/* width = */ height, /* height = */ width, image->format());
- const uint32 *originalPixel = reinterpret_cast<const uint32*>(image->bits());
- uint32 *const generatedPixels = reinterpret_cast<uint32*>(generated.bits());
- for (int row=0; row < height; ++row) {
- for (int col=0; col < width; ++col) {
- int idx = col * height + row;
- generatedPixels[idx] = *originalPixel;
- ++originalPixel;
- }
- }
- *image = generated;
-}
-
-inline void rotate_right_mirror_vertical(QImage *const image) // rotate right->mirrored vertical
-{
- const int height = image->height();
- const int width = image->width();
- QImage generated(/* width = */ height, /* height = */ width, image->format());
- const int lastCol = width - 1;
- const int lastRow = height - 1;
- const uint32 *pixel = reinterpret_cast<const uint32*>(image->bits());
- uint32 *const generatedBits = reinterpret_cast<uint32*>(generated.bits());
- for (int row=0; row < height; ++row) {
- for (int col=0; col < width; ++col) {
- int idx = (lastCol - col) * height + (lastRow - row);
- generatedBits[idx] = *pixel;
- ++pixel;
- }
- }
- *image = generated;
-}
-
-QTiffHandler::QTiffHandler() : QImageIOHandler()
-{
- compression = NoCompression;
-}
-
-bool QTiffHandler::canRead() const
-{
- if (canRead(device())) {
- setFormat("tiff");
- return true;
- }
- return false;
-}
-
-bool QTiffHandler::canRead(QIODevice *device)
-{
- if (!device) {
- qWarning("QTiffHandler::canRead() called with no device");
- return false;
- }
-
- // current implementation uses TIFFClientOpen which needs to be
- // able to seek, so sequential devices are not supported
- QByteArray header = device->peek(4);
- return header == QByteArray::fromRawData("\x49\x49\x2A\x00", 4)
- || header == QByteArray::fromRawData("\x4D\x4D\x00\x2A", 4);
-}
-
-bool QTiffHandler::read(QImage *image)
-{
- if (!canRead())
- return false;
-
- TIFF *const tiff = TIFFClientOpen("foo",
- "r",
- this,
- qtiffReadProc,
- qtiffWriteProc,
- qtiffSeekProc,
- qtiffCloseProc,
- qtiffSizeProc,
- qtiffMapProc,
- qtiffUnmapProc);
-
- if (!tiff) {
- return false;
- }
- uint32 width;
- uint32 height;
- uint16 photometric;
- if (!TIFFGetField(tiff, TIFFTAG_IMAGEWIDTH, &width)
- || !TIFFGetField(tiff, TIFFTAG_IMAGELENGTH, &height)
- || !TIFFGetField(tiff, TIFFTAG_PHOTOMETRIC, &photometric)) {
- TIFFClose(tiff);
- return false;
- }
-
- // BitsPerSample defaults to 1 according to the TIFF spec.
- uint16 bitPerSample;
- if (!TIFFGetField(tiff, TIFFTAG_BITSPERSAMPLE, &bitPerSample))
- bitPerSample = 1;
- uint16 samplesPerPixel; // they may be e.g. grayscale with 2 samples per pixel
- if (!TIFFGetField(tiff, TIFFTAG_SAMPLESPERPIXEL, &samplesPerPixel))
- samplesPerPixel = 1;
-
- bool grayscale = photometric == PHOTOMETRIC_MINISBLACK || photometric == PHOTOMETRIC_MINISWHITE;
- if (grayscale && bitPerSample == 1 && samplesPerPixel == 1) {
- if (image->size() != QSize(width, height) || image->format() != QImage::Format_Mono)
- *image = QImage(width, height, QImage::Format_Mono);
- QVector<QRgb> colortable(2);
- if (photometric == PHOTOMETRIC_MINISBLACK) {
- colortable[0] = 0xff000000;
- colortable[1] = 0xffffffff;
- } else {
- colortable[0] = 0xffffffff;
- colortable[1] = 0xff000000;
- }
- image->setColorTable(colortable);
-
- if (!image->isNull()) {
- for (uint32 y=0; y<height; ++y) {
- if (TIFFReadScanline(tiff, image->scanLine(y), y, 0) < 0) {
- TIFFClose(tiff);
- return false;
- }
- }
- }
- } else {
- if ((grayscale || photometric == PHOTOMETRIC_PALETTE) && bitPerSample == 8 && samplesPerPixel == 1) {
- if (image->size() != QSize(width, height) || image->format() != QImage::Format_Indexed8)
- *image = QImage(width, height, QImage::Format_Indexed8);
- if (!image->isNull()) {
- const uint16 tableSize = 256;
- QVector<QRgb> qtColorTable(tableSize);
- if (grayscale) {
- for (int i = 0; i<tableSize; ++i) {
- const int c = (photometric == PHOTOMETRIC_MINISBLACK) ? i : (255 - i);
- qtColorTable[i] = qRgb(c, c, c);
- }
- } else {
- // create the color table
- uint16 *redTable = 0;
- uint16 *greenTable = 0;
- uint16 *blueTable = 0;
- if (!TIFFGetField(tiff, TIFFTAG_COLORMAP, &redTable, &greenTable, &blueTable)) {
- TIFFClose(tiff);
- return false;
- }
- if (!redTable || !greenTable || !blueTable) {
- TIFFClose(tiff);
- return false;
- }
-
- for (int i = 0; i<tableSize ;++i) {
- const int red = redTable[i] / 257;
- const int green = greenTable[i] / 257;
- const int blue = blueTable[i] / 257;
- qtColorTable[i] = qRgb(red, green, blue);
- }
- }
-
- image->setColorTable(qtColorTable);
- for (uint32 y=0; y<height; ++y) {
- if (TIFFReadScanline(tiff, image->scanLine(y), y, 0) < 0) {
- TIFFClose(tiff);
- return false;
- }
- }
-
- // free redTable, greenTable and greenTable done by libtiff
- }
- } else {
- if (image->size() != QSize(width, height) || image->format() != QImage::Format_ARGB32)
- *image = QImage(width, height, QImage::Format_ARGB32);
- if (!image->isNull()) {
- const int stopOnError = 1;
- if (TIFFReadRGBAImageOriented(tiff, width, height, reinterpret_cast<uint32 *>(image->bits()), ORIENTATION_TOPLEFT, stopOnError)) {
- for (uint32 y=0; y<height; ++y)
- convert32BitOrder(image->scanLine(y), width);
- } else {
- TIFFClose(tiff);
- return false;
- }
- }
- }
- }
-
- if (image->isNull()) {
- TIFFClose(tiff);
- return false;
- }
-
- float resX = 0;
- float resY = 0;
- uint16 resUnit = RESUNIT_NONE;
- if (TIFFGetField(tiff, TIFFTAG_RESOLUTIONUNIT, &resUnit)
- && TIFFGetField(tiff, TIFFTAG_XRESOLUTION, &resX)
- && TIFFGetField(tiff, TIFFTAG_YRESOLUTION, &resY)) {
-
- switch(resUnit) {
- case RESUNIT_CENTIMETER:
- image->setDotsPerMeterX(qRound(resX * 100));
- image->setDotsPerMeterY(qRound(resY * 100));
- break;
- case RESUNIT_INCH:
- image->setDotsPerMeterX(qRound(resX * (100 / 2.54)));
- image->setDotsPerMeterY(qRound(resY * (100 / 2.54)));
- break;
- default:
- // do nothing as defaults have already
- // been set within the QImage class
- break;
- }
- }
-
- // rotate the image if the orientation is defined in the file
- uint16 orientationTag;
- if (TIFFGetField(tiff, TIFFTAG_ORIENTATION, &orientationTag)) {
- if (image->format() == QImage::Format_ARGB32) {
- // TIFFReadRGBAImageOriented() flip the image but does not rotate them
- switch (orientationTag) {
- case 5:
- rotate_right_mirror_horizontal(image);
- break;
- case 6:
- rotate_right_mirror_vertical(image);
- break;
- case 7:
- rotate_right_mirror_horizontal(image);
- break;
- case 8:
- rotate_right_mirror_vertical(image);
- break;
- }
- } else {
- switch (orientationTag) {
- case 1: // default orientation
- break;
- case 2: // mirror horizontal
- *image = image->mirrored(true, false);
- break;
- case 3: // mirror both
- *image = image->mirrored(true, true);
- break;
- case 4: // mirror vertical
- *image = image->mirrored(false, true);
- break;
- case 5: // rotate right mirror horizontal
- {
- QMatrix transformation;
- transformation.rotate(90);
- *image = image->transformed(transformation);
- *image = image->mirrored(true, false);
- break;
- }
- case 6: // rotate right
- {
- QMatrix transformation;
- transformation.rotate(90);
- *image = image->transformed(transformation);
- break;
- }
- case 7: // rotate right, mirror vertical
- {
- QMatrix transformation;
- transformation.rotate(90);
- *image = image->transformed(transformation);
- *image = image->mirrored(false, true);
- break;
- }
- case 8: // rotate left
- {
- QMatrix transformation;
- transformation.rotate(270);
- *image = image->transformed(transformation);
- break;
- }
- }
- }
- }
-
-
- TIFFClose(tiff);
- return true;
-}
-
-static bool checkGrayscale(const QVector<QRgb> &colorTable)
-{
- if (colorTable.size() != 256)
- return false;
-
- const bool increasing = (colorTable.at(0) == 0xff000000);
- for (int i = 0; i < 256; ++i) {
- if ((increasing && colorTable.at(i) != qRgb(i, i, i))
- || (!increasing && colorTable.at(i) != qRgb(255 - i, 255 - i, 255 - i)))
- return false;
- }
- return true;
-}
-
-bool QTiffHandler::write(const QImage &image)
-{
- if (!device()->isWritable())
- return false;
-
- TIFF *const tiff = TIFFClientOpen("foo",
- "w",
- this,
- qtiffReadProc,
- qtiffWriteProc,
- qtiffSeekProc,
- qtiffCloseProc,
- qtiffSizeProc,
- qtiffMapProc,
- qtiffUnmapProc);
- if (!tiff)
- return false;
-
- const int width = image.width();
- const int height = image.height();
-
- if (!TIFFSetField(tiff, TIFFTAG_IMAGEWIDTH, width)
- || !TIFFSetField(tiff, TIFFTAG_IMAGELENGTH, height)
- || !TIFFSetField(tiff, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG)) {
- TIFFClose(tiff);
- return false;
- }
-
- // set the resolution
- bool resolutionSet = false;
- const int dotPerMeterX = image.dotsPerMeterX();
- const int dotPerMeterY = image.dotsPerMeterY();
- if ((dotPerMeterX % 100) == 0
- && (dotPerMeterY % 100) == 0) {
- resolutionSet = TIFFSetField(tiff, TIFFTAG_RESOLUTIONUNIT, RESUNIT_CENTIMETER)
- && TIFFSetField(tiff, TIFFTAG_XRESOLUTION, dotPerMeterX/100.0)
- && TIFFSetField(tiff, TIFFTAG_YRESOLUTION, dotPerMeterY/100.0);
- } else {
- resolutionSet = TIFFSetField(tiff, TIFFTAG_RESOLUTIONUNIT, RESUNIT_INCH)
- && TIFFSetField(tiff, TIFFTAG_XRESOLUTION, static_cast<float>(image.logicalDpiX()))
- && TIFFSetField(tiff, TIFFTAG_YRESOLUTION, static_cast<float>(image.logicalDpiY()));
- }
- if (!resolutionSet) {
- TIFFClose(tiff);
- return false;
- }
-
- // configure image depth
- const QImage::Format format = image.format();
- if (format == QImage::Format_Mono || format == QImage::Format_MonoLSB) {
- uint16 photometric = PHOTOMETRIC_MINISBLACK;
- if (image.colorTable().at(0) == 0xffffffff)
- photometric = PHOTOMETRIC_MINISWHITE;
- if (!TIFFSetField(tiff, TIFFTAG_PHOTOMETRIC, photometric)
- || !TIFFSetField(tiff, TIFFTAG_COMPRESSION, compression == NoCompression ? COMPRESSION_NONE : COMPRESSION_CCITTRLE)
- || !TIFFSetField(tiff, TIFFTAG_BITSPERSAMPLE, 1)) {
- TIFFClose(tiff);
- return false;
- }
-
- // try to do the conversion in chunks no greater than 16 MB
- int chunks = (width * height / (1024 * 1024 * 16)) + 1;
- int chunkHeight = qMax(height / chunks, 1);
-
- int y = 0;
- while (y < height) {
- QImage chunk = image.copy(0, y, width, qMin(chunkHeight, height - y)).convertToFormat(QImage::Format_Mono);
-
- int chunkStart = y;
- int chunkEnd = y + chunk.height();
- while (y < chunkEnd) {
- if (TIFFWriteScanline(tiff, reinterpret_cast<uint32 *>(chunk.scanLine(y - chunkStart)), y) != 1) {
- TIFFClose(tiff);
- return false;
- }
- ++y;
- }
- }
- TIFFClose(tiff);
- } else if (format == QImage::Format_Indexed8) {
- const QVector<QRgb> colorTable = image.colorTable();
- bool isGrayscale = checkGrayscale(colorTable);
- if (isGrayscale) {
- uint16 photometric = PHOTOMETRIC_MINISBLACK;
- if (image.colorTable().at(0) == 0xffffffff)
- photometric = PHOTOMETRIC_MINISWHITE;
- if (!TIFFSetField(tiff, TIFFTAG_PHOTOMETRIC, photometric)
- || !TIFFSetField(tiff, TIFFTAG_COMPRESSION, compression == NoCompression ? COMPRESSION_NONE : COMPRESSION_PACKBITS)
- || !TIFFSetField(tiff, TIFFTAG_BITSPERSAMPLE, 8)) {
- TIFFClose(tiff);
- return false;
- }
- } else {
- if (!TIFFSetField(tiff, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_PALETTE)
- || !TIFFSetField(tiff, TIFFTAG_COMPRESSION, compression == NoCompression ? COMPRESSION_NONE : COMPRESSION_PACKBITS)
- || !TIFFSetField(tiff, TIFFTAG_BITSPERSAMPLE, 8)) {
- TIFFClose(tiff);
- return false;
- }
- //// write the color table
- // allocate the color tables
- uint16 *redTable = static_cast<uint16 *>(malloc(256 * sizeof(uint16)));
- uint16 *greenTable = static_cast<uint16 *>(malloc(256 * sizeof(uint16)));
- uint16 *blueTable = static_cast<uint16 *>(malloc(256 * sizeof(uint16)));
- if (!redTable || !greenTable || !blueTable) {
- free(redTable);
- free(greenTable);
- free(blueTable);
- TIFFClose(tiff);
- return false;
- }
-
- // set the color table
- const int tableSize = colorTable.size();
- Q_ASSERT(tableSize <= 256);
- for (int i = 0; i<tableSize; ++i) {
- const QRgb color = colorTable.at(i);
- redTable[i] = qRed(color) * 257;
- greenTable[i] = qGreen(color) * 257;
- blueTable[i] = qBlue(color) * 257;
- }
-
- const bool setColorTableSuccess = TIFFSetField(tiff, TIFFTAG_COLORMAP, redTable, greenTable, blueTable);
-
- free(redTable);
- free(greenTable);
- free(blueTable);
-
- if (!setColorTableSuccess) {
- TIFFClose(tiff);
- return false;
- }
- }
-
- //// write the data
- // try to do the conversion in chunks no greater than 16 MB
- int chunks = (width * height/ (1024 * 1024 * 16)) + 1;
- int chunkHeight = qMax(height / chunks, 1);
-
- int y = 0;
- while (y < height) {
- QImage chunk = image.copy(0, y, width, qMin(chunkHeight, height - y));
-
- int chunkStart = y;
- int chunkEnd = y + chunk.height();
- while (y < chunkEnd) {
- if (TIFFWriteScanline(tiff, reinterpret_cast<uint32 *>(chunk.scanLine(y - chunkStart)), y) != 1) {
- TIFFClose(tiff);
- return false;
- }
- ++y;
- }
- }
- TIFFClose(tiff);
-
- } else {
- if (!TIFFSetField(tiff, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB)
- || !TIFFSetField(tiff, TIFFTAG_COMPRESSION, compression == NoCompression ? COMPRESSION_NONE : COMPRESSION_LZW)
- || !TIFFSetField(tiff, TIFFTAG_SAMPLESPERPIXEL, 4)
- || !TIFFSetField(tiff, TIFFTAG_BITSPERSAMPLE, 8)) {
- TIFFClose(tiff);
- return false;
- }
- // try to do the ARGB32 conversion in chunks no greater than 16 MB
- int chunks = (width * height * 4 / (1024 * 1024 * 16)) + 1;
- int chunkHeight = qMax(height / chunks, 1);
-
- int y = 0;
- while (y < height) {
- QImage chunk = image.copy(0, y, width, qMin(chunkHeight, height - y)).convertToFormat(QImage::Format_ARGB32);
-
- int chunkStart = y;
- int chunkEnd = y + chunk.height();
- while (y < chunkEnd) {
- if (QSysInfo::ByteOrder == QSysInfo::LittleEndian)
- convert32BitOrder(chunk.scanLine(y - chunkStart), width);
- else
- convert32BitOrderBigEndian(chunk.scanLine(y - chunkStart), width);
-
- if (TIFFWriteScanline(tiff, reinterpret_cast<uint32 *>(chunk.scanLine(y - chunkStart)), y) != 1) {
- TIFFClose(tiff);
- return false;
- }
- ++y;
- }
- }
- TIFFClose(tiff);
- }
-
- return true;
-}
-
-QByteArray QTiffHandler::name() const
-{
- return "tiff";
-}
-
-QVariant QTiffHandler::option(ImageOption option) const
-{
- if (option == Size && canRead()) {
- QSize imageSize;
- qint64 pos = device()->pos();
- TIFF *tiff = TIFFClientOpen("foo",
- "r",
- const_cast<QTiffHandler*>(this),
- qtiffReadProc,
- qtiffWriteProc,
- qtiffSeekProc,
- qtiffCloseProc,
- qtiffSizeProc,
- qtiffMapProc,
- qtiffUnmapProc);
-
- if (tiff) {
- uint32 width = 0;
- uint32 height = 0;
- TIFFGetField(tiff, TIFFTAG_IMAGEWIDTH, &width);
- TIFFGetField(tiff, TIFFTAG_IMAGELENGTH, &height);
- imageSize = QSize(width, height);
- TIFFClose(tiff);
- }
- device()->seek(pos);
- if (imageSize.isValid())
- return imageSize;
- } else if (option == CompressionRatio) {
- return compression;
- } else if (option == ImageFormat) {
- return QImage::Format_ARGB32;
- }
- return QVariant();
-}
-
-void QTiffHandler::setOption(ImageOption option, const QVariant &value)
-{
- if (option == CompressionRatio && value.type() == QVariant::Int)
- compression = value.toInt();
-}
-
-bool QTiffHandler::supportsOption(ImageOption option) const
-{
- return option == CompressionRatio
- || option == Size
- || option == ImageFormat;
-}
-
-void QTiffHandler::convert32BitOrder(void *buffer, int width)
-{
- uint32 *target = reinterpret_cast<uint32 *>(buffer);
- for (int32 x=0; x<width; ++x) {
- uint32 p = target[x];
- // convert between ARGB and ABGR
- target[x] = (p & 0xff000000)
- | ((p & 0x00ff0000) >> 16)
- | (p & 0x0000ff00)
- | ((p & 0x000000ff) << 16);
- }
-}
-
-void QTiffHandler::convert32BitOrderBigEndian(void *buffer, int width)
-{
- uint32 *target = reinterpret_cast<uint32 *>(buffer);
- for (int32 x=0; x<width; ++x) {
- uint32 p = target[x];
- target[x] = (p & 0xff000000) >> 24
- | (p & 0x00ff0000) << 8
- | (p & 0x0000ff00) << 8
- | (p & 0x000000ff) << 8;
- }
-}
-
-QT_END_NAMESPACE
diff --git a/src/gui/image/qtiffhandler.pri b/src/gui/image/qtiffhandler.pri
deleted file mode 100644
index e1cc3ee2b7..0000000000
--- a/src/gui/image/qtiffhandler.pri
+++ /dev/null
@@ -1,10 +0,0 @@
-# common to plugin and built-in forms
-INCLUDEPATH *= $$PWD
-HEADERS += $$PWD/qtiffhandler_p.h
-SOURCES += $$PWD/qtiffhandler.cpp
-contains(QT_CONFIG, system-tiff) {
- if(unix|win32-g++*):LIBS += -ltiff
- else:win32: LIBS += libtiff.lib
-} else {
- include($$PWD/../../3rdparty/libtiff.pri)
-}
diff --git a/src/gui/image/qtiffhandler_p.h b/src/gui/image/qtiffhandler_p.h
deleted file mode 100644
index 16e68b0ad6..0000000000
--- a/src/gui/image/qtiffhandler_p.h
+++ /dev/null
@@ -1,78 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-#ifndef QTIFFHANDLER_P_H
-#define QTIFFHANDLER_P_H
-
-#include <QtGui/qimageiohandler.h>
-
-QT_BEGIN_NAMESPACE
-
-class QTiffHandler : public QImageIOHandler
-{
-public:
- QTiffHandler();
-
- bool canRead() const;
- bool read(QImage *image);
- bool write(const QImage &image);
-
- QByteArray name() const;
-
- static bool canRead(QIODevice *device);
-
- QVariant option(ImageOption option) const;
- void setOption(ImageOption option, const QVariant &value);
- bool supportsOption(ImageOption option) const;
-
- enum Compression {
- NoCompression = 0,
- LzwCompression = 1
- };
-private:
- void convert32BitOrder(void *buffer, int width);
- void convert32BitOrderBigEndian(void *buffer, int width);
- int compression;
-};
-
-QT_END_NAMESPACE
-
-#endif // QTIFFHANDLER_P_H
diff --git a/src/gui/image/qvolatileimage.cpp b/src/gui/image/qvolatileimage.cpp
index e675e4ca67..8122c9cfe8 100644
--- a/src/gui/image/qvolatileimage.cpp
+++ b/src/gui/image/qvolatileimage.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qvolatileimage_p.h b/src/gui/image/qvolatileimage_p.h
index 8f1664c429..808def7c32 100644
--- a/src/gui/image/qvolatileimage_p.h
+++ b/src/gui/image/qvolatileimage_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qvolatileimagedata.cpp b/src/gui/image/qvolatileimagedata.cpp
index 32f265e9d9..3fcf24e187 100644
--- a/src/gui/image/qvolatileimagedata.cpp
+++ b/src/gui/image/qvolatileimagedata.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qvolatileimagedata_p.h b/src/gui/image/qvolatileimagedata_p.h
index 2890530aaa..59e1be12e3 100644
--- a/src/gui/image/qvolatileimagedata_p.h
+++ b/src/gui/image/qvolatileimagedata_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qvolatileimagedata_symbian.cpp b/src/gui/image/qvolatileimagedata_symbian.cpp
deleted file mode 100644
index f438d96e68..0000000000
--- a/src/gui/image/qvolatileimagedata_symbian.cpp
+++ /dev/null
@@ -1,474 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 "qvolatileimagedata_p.h"
-#include <fbs.h>
-#include <QtGui/private/qt_s60_p.h>
-#include <QtGui/qpaintengine.h>
-#include <QtGui/private/qimage_p.h>
-
-QT_BEGIN_NAMESPACE
-
-static CFbsBitmap *rasterizeBitmap(CFbsBitmap *bitmap, TDisplayMode newMode)
-{
- if (!bitmap) {
- return 0;
- }
- QScopedPointer<CFbsBitmap> newBitmap(new CFbsBitmap);
- if (newBitmap->Create(bitmap->SizeInPixels(), newMode) != KErrNone) {
- qWarning("QVolatileImage: Failed to create new bitmap");
- return 0;
- }
- CFbsBitmapDevice *bitmapDevice = 0;
- CFbsBitGc *bitmapGc = 0;
- QT_TRAP_THROWING(bitmapDevice = CFbsBitmapDevice::NewL(newBitmap.data()));
- QScopedPointer<CFbsBitmapDevice> bitmapDevicePtr(bitmapDevice);
- QT_TRAP_THROWING(bitmapGc = CFbsBitGc::NewL());
- bitmapGc->Activate(bitmapDevice);
- bitmapGc->BitBlt(TPoint(), bitmap);
- delete bitmapGc;
- return newBitmap.take();
-}
-
-static inline TDisplayMode format2TDisplayMode(QImage::Format format)
-{
- TDisplayMode mode;
- switch (format) {
- case QImage::Format_MonoLSB:
- mode = EGray2;
- break;
- case QImage::Format_Indexed8:
- mode = EColor256;
- break;
- case QImage::Format_RGB444:
- mode = EColor4K;
- break;
- case QImage::Format_RGB16:
- mode = EColor64K;
- break;
- case QImage::Format_RGB888:
- mode = EColor16M;
- break;
- case QImage::Format_RGB32:
- mode = EColor16MU;
- break;
- case QImage::Format_ARGB32:
- mode = EColor16MA;
- break;
- case QImage::Format_ARGB32_Premultiplied:
- mode = Q_SYMBIAN_ECOLOR16MAP;
- break;
- default:
- mode = ENone;
- break;
- }
- return mode;
-}
-
-static CFbsBitmap *imageToBitmap(const QImage &image)
-{
- if (image.isNull()) {
- return 0;
- }
- CFbsBitmap *bitmap = new CFbsBitmap;
- if (bitmap->Create(TSize(image.width(), image.height()),
- format2TDisplayMode(image.format())) == KErrNone) {
- bitmap->BeginDataAccess();
- uchar *dptr = reinterpret_cast<uchar *>(bitmap->DataAddress());
- int bmpLineLen = bitmap->DataStride();
- int imgLineLen = image.bytesPerLine();
- if (bmpLineLen == imgLineLen) {
- qMemCopy(dptr, image.constBits(), image.byteCount());
- } else {
- int len = qMin(bmpLineLen, imgLineLen);
- const uchar *sptr = image.constBits();
- for (int y = 0; y < image.height(); ++y) {
- qMemCopy(dptr, sptr, len);
- dptr += bmpLineLen;
- sptr += imgLineLen;
- }
- }
- bitmap->EndDataAccess();
- } else {
- qWarning("QVolatileImage: Failed to create source bitmap");
- delete bitmap;
- bitmap = 0;
- }
- return bitmap;
-}
-
-static CFbsBitmap *copyData(const QVolatileImageData &source)
-{
- source.beginDataAccess();
- CFbsBitmap *bmp = imageToBitmap(source.image);
- source.endDataAccess();
- return bmp;
-}
-
-static CFbsBitmap *convertData(const QVolatileImageData &source, QImage::Format newFormat)
-{
- source.beginDataAccess();
- QImage img = source.image.convertToFormat(newFormat);
- CFbsBitmap *bmp = imageToBitmap(img);
- source.endDataAccess();
- return bmp;
-}
-
-static CFbsBitmap *duplicateBitmap(const CFbsBitmap &sourceBitmap)
-{
- CFbsBitmap *bitmap = new CFbsBitmap;
- if (bitmap->Duplicate(sourceBitmap.Handle()) != KErrNone) {
- qWarning("QVolatileImage: Failed to duplicate source bitmap");
- delete bitmap;
- bitmap = 0;
- }
- return bitmap;
-}
-
-static CFbsBitmap *createBitmap(int w, int h, QImage::Format format)
-{
- CFbsBitmap *bitmap = new CFbsBitmap;
- if (bitmap->Create(TSize(w, h), format2TDisplayMode(format)) != KErrNone) {
- qWarning("QVolatileImage: Failed to create source bitmap %d,%d (%d)", w, h, format);
- delete bitmap;
- bitmap = 0;
- }
- return bitmap;
-}
-
-static inline bool bitmapNeedsCopy(CFbsBitmap *bitmap)
-{
- bool needsCopy = bitmap->IsCompressedInRAM();
-#ifdef Q_SYMBIAN_HAS_EXTENDED_BITMAP_TYPE
- needsCopy |= (bitmap->ExtendedBitmapType() != KNullUid);
-#endif
- return needsCopy;
-}
-
-static bool cleanup_function_registered = false;
-static QVolatileImageData *firstImageData = 0;
-
-static void cleanup()
-{
- if (RFbsSession::GetSession()) {
- QVolatileImageData *imageData = firstImageData;
- while (imageData) {
- imageData->release();
- imageData = imageData->next;
- }
- }
-}
-
-static void ensureCleanup()
-{
- // Destroy all underlying bitmaps in a post routine to prevent panics.
- // This is a must because CFbsBitmap destructor needs the fbs session,
- // that was used to create the bitmap, to be open still.
- if (!cleanup_function_registered) {
- qAddPostRoutine(cleanup);
- cleanup_function_registered = true;
- }
-}
-
-static void registerImageData(QVolatileImageData *imageData)
-{
- ensureCleanup();
- imageData->next = firstImageData;
- if (firstImageData) {
- firstImageData->prev = imageData;
- }
- firstImageData = imageData;
-}
-
-static void unregisterImageData(QVolatileImageData *imageData)
-{
- if (imageData->prev) {
- imageData->prev->next = imageData->next;
- } else {
- firstImageData = imageData->next;
- }
- if (imageData->next) {
- imageData->next->prev = imageData->prev;
- }
-}
-
-QVolatileImageData::QVolatileImageData()
- : next(0), prev(0), bitmap(0), pengine(0)
-{
- registerImageData(this);
-}
-
-QVolatileImageData::QVolatileImageData(int w, int h, QImage::Format format)
- : next(0), prev(0), bitmap(0), pengine(0)
-{
- registerImageData(this);
- bitmap = createBitmap(w, h, format);
- updateImage();
-}
-
-QVolatileImageData::QVolatileImageData(const QImage &sourceImage)
- : next(0), prev(0), bitmap(0), pengine(0)
-{
- registerImageData(this);
- image = sourceImage;
- // The following is not mandatory, but we do it here to have a bitmap
- // created always in order to reduce local heap usage.
- ensureBitmap();
-}
-
-QVolatileImageData::QVolatileImageData(void *nativeImage, void *nativeMask)
- : next(0), prev(0), bitmap(0), pengine(0)
-{
- registerImageData(this);
- if (nativeImage) {
- CFbsBitmap *source = static_cast<CFbsBitmap *>(nativeImage);
- CFbsBitmap *mask = static_cast<CFbsBitmap *>(nativeMask);
- initWithBitmap(source);
- if (mask) {
- applyMask(mask);
- }
- }
-}
-
-QVolatileImageData::QVolatileImageData(const QVolatileImageData &other)
-{
- bitmap = 0;
- pengine = 0;
- next = prev = 0;
- registerImageData(this);
- if (!other.image.isNull()) {
- bitmap = copyData(other);
- updateImage();
- }
-}
-
-QVolatileImageData::~QVolatileImageData()
-{
- release();
- unregisterImageData(this);
-}
-
-void QVolatileImageData::release()
-{
- delete bitmap;
- bitmap = 0;
- delete pengine;
- pengine = 0;
-}
-
-void QVolatileImageData::beginDataAccess() const
-{
- if (bitmap) {
- bitmap->BeginDataAccess();
- }
-}
-
-void QVolatileImageData::endDataAccess(bool readOnly) const
-{
- if (bitmap) {
- bitmap->EndDataAccess(readOnly);
- }
-}
-
-bool QVolatileImageData::ensureFormat(QImage::Format format)
-{
- if (image.isNull()) {
- return false;
- }
- if (image.format() != format) {
- CFbsBitmap *newBitmap = convertData(*this, format);
- if (newBitmap && newBitmap != bitmap) {
- delete bitmap;
- bitmap = newBitmap;
- updateImage();
- } else {
- return false;
- }
- }
- return true;
-}
-
-void *QVolatileImageData::duplicateNativeImage() const
-{
- const_cast<QVolatileImageData *>(this)->ensureBitmap();
- if (bitmap) {
- if (bitmap->DisplayMode() == EColor16M) {
- // slow path: needs rgb swapping
- beginDataAccess();
- QImage tmp = image.rgbSwapped();
- endDataAccess(true);
- return imageToBitmap(tmp);
- } else if (bitmap->DisplayMode() == EGray2) {
- // slow path: needs inverting pixels
- beginDataAccess();
- QImage tmp = image.copy();
- endDataAccess(true);
- tmp.invertPixels();
- return imageToBitmap(tmp);
- } else {
- // fast path: just duplicate the bitmap
- return duplicateBitmap(*bitmap);
- }
- }
- return 0;
-}
-
-void QVolatileImageData::updateImage()
-{
- if (bitmap) {
- TSize size = bitmap->SizeInPixels();
- beginDataAccess();
- // Use existing buffer, no copy. The data address never changes so it
- // is enough to do this whenever we have a new CFbsBitmap. N.B. never
- // use const uchar* here, that would create a read-only image data which
- // would make a copy in detach() even when refcount is 1.
- image = QImage(reinterpret_cast<uchar *>(bitmap->DataAddress()),
- size.iWidth, size.iHeight, bitmap->DataStride(),
- qt_TDisplayMode2Format(bitmap->DisplayMode()));
- endDataAccess(true);
- } else {
- image = QImage();
- }
-}
-
-void QVolatileImageData::initWithBitmap(CFbsBitmap *source)
-{
- bool needsCopy = bitmapNeedsCopy(source);
- if (source->DisplayMode() == EColor16M) {
- // EColor16M is BGR
- CFbsBitmap *unswappedBmp = source;
- if (needsCopy) {
- unswappedBmp = rasterizeBitmap(source, source->DisplayMode());
- }
- unswappedBmp->BeginDataAccess();
- TSize sourceSize = unswappedBmp->SizeInPixels();
- QImage img((uchar *) unswappedBmp->DataAddress(),
- sourceSize.iWidth, sourceSize.iHeight, unswappedBmp->DataStride(),
- qt_TDisplayMode2Format(unswappedBmp->DisplayMode()));
- img = img.rgbSwapped();
- unswappedBmp->EndDataAccess(true);
- bitmap = imageToBitmap(img);
- if (needsCopy) {
- delete unswappedBmp;
- }
- } else if (needsCopy) {
- // Rasterize extended and compressed bitmaps.
- bitmap = rasterizeBitmap(source, EColor16MAP);
- } else if (source->DisplayMode() == EGray2) {
- // The pixels will be inverted, must make a copy.
- bitmap = rasterizeBitmap(source, source->DisplayMode());
- } else {
- // Efficient path: no pixel data copying. Just duplicate. This of course
- // means the original bitmap's data may get modified, but that's fine
- // and is in accordance with the QPixmap::fromSymbianCFbsBitmap() docs.
- bitmap = duplicateBitmap(*source);
- }
- updateImage();
- if (bitmap && bitmap->DisplayMode() == EGray2) {
- // Symbian thinks set pixels are white/transparent, Qt thinks they are
- // foreground/solid. Invert mono bitmaps so that masks work correctly.
- beginDataAccess();
- image.invertPixels();
- endDataAccess();
- }
-}
-
-void QVolatileImageData::applyMask(CFbsBitmap *mask)
-{
- ensureFormat(QImage::Format_ARGB32_Premultiplied);
- bool destroyMask = false;
- if (bitmapNeedsCopy(mask)) {
- mask = rasterizeBitmap(mask, EColor16MU);
- if (!mask) {
- return;
- }
- destroyMask = true;
- }
- mask->BeginDataAccess();
- TSize maskSize = mask->SizeInPixels();
- QImage maskImg((const uchar *) mask->DataAddress(), maskSize.iWidth, maskSize.iHeight,
- mask->DataStride(), qt_TDisplayMode2Format(mask->DisplayMode()));
- if (mask->DisplayMode() == EGray2) {
- maskImg = maskImg.copy();
- maskImg.invertPixels();
- }
- beginDataAccess();
- image.setAlphaChannel(maskImg);
- endDataAccess();
- mask->EndDataAccess(true);
- ensureImage();
- if (destroyMask) {
- delete mask;
- }
-}
-
-void QVolatileImageData::ensureImage()
-{
- if (bitmap && !image.isNull()) {
- QImageData *imaged = image.data_ptr();
- if (imaged->ref != 1 || imaged->ro_data) {
- // This is bad, the imagedata got shared somehow. Detach, in order to
- // have the next check fail and thus have 'image' recreated.
- beginDataAccess();
- image.detach();
- endDataAccess(true);
- }
- }
- if (bitmap && image.constBits() != reinterpret_cast<const uchar *>(bitmap->DataAddress())) {
- // Should not ever get here. If we do it means that either 'image' has
- // been replaced with a copy (e.g. because some QImage API assigned a
- // new, regular QImage to *this) or the bitmap's data address changed
- // unexpectedly.
- qWarning("QVolatileImageData: Ptr mismatch");
- // Recover by recreating the image so that it uses the bitmap as its buffer.
- updateImage();
- }
-}
-
-void QVolatileImageData::ensureBitmap()
-{
- if (!bitmap && !image.isNull()) {
- bitmap = imageToBitmap(image);
- updateImage();
- }
-}
-
-QT_END_NAMESPACE
diff --git a/src/gui/image/qxbmhandler.cpp b/src/gui/image/qxbmhandler.cpp
index dda57239cc..9990c9f4d0 100644
--- a/src/gui/image/qxbmhandler.cpp
+++ b/src/gui/image/qxbmhandler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qxbmhandler_p.h b/src/gui/image/qxbmhandler_p.h
index 13ab343f8b..081f3133b2 100644
--- a/src/gui/image/qxbmhandler_p.h
+++ b/src/gui/image/qxbmhandler_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qxpmhandler.cpp b/src/gui/image/qxpmhandler.cpp
index 48047d2d55..f2fab75d76 100644
--- a/src/gui/image/qxpmhandler.cpp
+++ b/src/gui/image/qxpmhandler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/image/qxpmhandler_p.h b/src/gui/image/qxpmhandler_p.h
index 092d9bb3f1..7acdc49eec 100644
--- a/src/gui/image/qxpmhandler_p.h
+++ b/src/gui/image/qxpmhandler_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/kernel.pri b/src/gui/kernel/kernel.pri
index bf552c9991..7b01ba14cd 100644
--- a/src/gui/kernel/kernel.pri
+++ b/src/gui/kernel/kernel.pri
@@ -21,9 +21,6 @@ HEADERS += \
kernel/qplatformthemefactory_qpa_p.h \
kernel/qplatformthemeplugin_qpa.h \
kernel/qplatformwindow_qpa.h \
- kernel/qplatformopenglcontext_qpa.h \
- kernel/qopenglcontext.h \
- kernel/qopenglcontext_p.h \
kernel/qplatformcursor_qpa.h \
kernel/qplatformclipboard_qpa.h \
kernel/qplatformnativeinterface_qpa.h \
@@ -41,6 +38,8 @@ HEADERS += \
kernel/qdnd_p.h \
kernel/qevent.h \
kernel/qevent_p.h \
+ kernel/qinputmethod.h \
+ kernel/qinputmethod_p.h \
kernel/qinputpanel.h \
kernel/qinputpanel_p.h \
kernel/qkeysequence.h \
@@ -54,7 +53,9 @@ HEADERS += \
kernel/qscreen_p.h \
kernel/qstylehints.h \
kernel/qtouchdevice.h \
- kernel/qtouchdevice_p.h
+ kernel/qtouchdevice_p.h \
+ kernel/qplatformsharedgraphicscache_qpa.h \
+ kernel/qplatformdialoghelper_qpa.h
SOURCES += \
kernel/qclipboard_qpa.cpp \
@@ -71,8 +72,6 @@ SOURCES += \
kernel/qplatformthemefactory_qpa.cpp \
kernel/qplatformthemeplugin_qpa.cpp \
kernel/qplatformwindow_qpa.cpp \
- kernel/qplatformopenglcontext_qpa.cpp \
- kernel/qopenglcontext.cpp \
kernel/qplatformcursor_qpa.cpp \
kernel/qplatformclipboard_qpa.cpp \
kernel/qplatformnativeinterface_qpa.cpp \
@@ -87,7 +86,7 @@ SOURCES += \
kernel/qdrag.cpp \
kernel/qdnd.cpp \
kernel/qevent.cpp \
- kernel/qinputpanel.cpp \
+ kernel/qinputmethod.cpp \
kernel/qkeysequence.cpp \
kernel/qkeymapper.cpp \
kernel/qkeymapper_qpa.cpp \
@@ -96,6 +95,19 @@ SOURCES += \
kernel/qscreen.cpp \
kernel/qshortcutmap.cpp \
kernel/qstylehints.cpp \
- kernel/qtouchdevice.cpp
+ kernel/qtouchdevice.cpp \
+ kernel/qplatformsharedgraphicscache_qpa.cpp \
+ kernel/qplatformdialoghelper_qpa.cpp
+
+contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles2)|contains(QT_CONFIG, egl) {
+ HEADERS += \
+ kernel/qplatformopenglcontext_qpa.h \
+ kernel/qopenglcontext.h \
+ kernel/qopenglcontext_p.h
+
+ SOURCES += \
+ kernel/qplatformopenglcontext_qpa.cpp \
+ kernel/qopenglcontext.cpp
+}
win32:HEADERS+=kernel/qwindowdefs_win.h
diff --git a/src/gui/kernel/qclipboard.cpp b/src/gui/kernel/qclipboard.cpp
index 341b042328..8e881aabc7 100644
--- a/src/gui/kernel/qclipboard.cpp
+++ b/src/gui/kernel/qclipboard.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qclipboard.h b/src/gui/kernel/qclipboard.h
index b909889815..5a251dd0ef 100644
--- a/src/gui/kernel/qclipboard.h
+++ b/src/gui/kernel/qclipboard.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_CLIPBOARD
diff --git a/src/gui/kernel/qclipboard_qpa.cpp b/src/gui/kernel/qclipboard_qpa.cpp
index edcf21babc..ec940385b8 100644
--- a/src/gui/kernel/qclipboard_qpa.cpp
+++ b/src/gui/kernel/qclipboard_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qcursor.cpp b/src/gui/kernel/qcursor.cpp
index bd327e1eb1..77eb1e1e9c 100644
--- a/src/gui/kernel/qcursor.cpp
+++ b/src/gui/kernel/qcursor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qcursor.h b/src/gui/kernel/qcursor.h
index 7437da4aba..00b709b308 100644
--- a/src/gui/kernel/qcursor.h
+++ b/src/gui/kernel/qcursor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QVariant;
diff --git a/src/gui/kernel/qcursor_p.h b/src/gui/kernel/qcursor_p.h
index a904260388..8623c22200 100644
--- a/src/gui/kernel/qcursor_p.h
+++ b/src/gui/kernel/qcursor_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qcursor_qpa.cpp b/src/gui/kernel/qcursor_qpa.cpp
index 6a12f977d3..7ba2e1c580 100644
--- a/src/gui/kernel/qcursor_qpa.cpp
+++ b/src/gui/kernel/qcursor_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qdnd.cpp b/src/gui/kernel/qdnd.cpp
index 4010fd73ff..b9f0fe4f5b 100644
--- a/src/gui/kernel/qdnd.cpp
+++ b/src/gui/kernel/qdnd.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qdnd_p.h b/src/gui/kernel/qdnd_p.h
index 47018edde8..857be34d10 100644
--- a/src/gui/kernel/qdnd_p.h
+++ b/src/gui/kernel/qdnd_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qdrag.cpp b/src/gui/kernel/qdrag.cpp
index 284b1e5c1b..694b12a180 100644
--- a/src/gui/kernel/qdrag.cpp
+++ b/src/gui/kernel/qdrag.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qdrag.h b/src/gui/kernel/qdrag.h
index ccadd8f1cc..0a1ddff2d9 100644
--- a/src/gui/kernel/qdrag.h
+++ b/src/gui/kernel/qdrag.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_DRAGANDDROP
class QMimeData;
diff --git a/src/gui/kernel/qevent.cpp b/src/gui/kernel/qevent.cpp
index 61ccaa5cfd..543f5453ff 100644
--- a/src/gui/kernel/qevent.cpp
+++ b/src/gui/kernel/qevent.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1510,7 +1510,7 @@ QContextMenuEvent::QContextMenuEvent(Reason reason, const QPoint &pos)
Cursor attributes and render them as specified.
\endlist
- \sa QInputContext
+ \sa QInputMethod
*/
/*!
@@ -1872,14 +1872,13 @@ QVariant QInputMethodQueryEvent::value(Qt::InputMethodQuery query) const
\sa pos() globalPos() device() pressure() xTilt() yTilt() uniqueId(), rotation(), tangentialPressure(), z()
*/
-QTabletEvent::QTabletEvent(Type type, const QPoint &pos, const QPoint &globalPos,
- const QPointF &hiResGlobalPos, int device, int pointerType,
+QTabletEvent::QTabletEvent(Type type, const QPointF &pos, const QPointF &globalPos,
+ int device, int pointerType,
qreal pressure, int xTilt, int yTilt, qreal tangentialPressure,
qreal rotation, int z, Qt::KeyboardModifiers keyState, qint64 uniqueID)
: QInputEvent(type, keyState),
mPos(pos),
mGPos(globalPos),
- mHiResGlobalPos(hiResGlobalPos),
mDev(device),
mPointerType(pointerType),
mXT(xTilt),
@@ -2208,7 +2207,7 @@ QDragMoveEvent::~QDragMoveEvent()
The states of the mouse buttons and keyboard modifiers at the time of
the drop are specified by \a buttons and \a modifiers.
*/ // ### pos is in which coordinate system?
-QDropEvent::QDropEvent(const QPoint& pos, Qt::DropActions actions, const QMimeData *data,
+QDropEvent::QDropEvent(const QPointF& pos, Qt::DropActions actions, const QMimeData *data,
Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type)
: QEvent(type), p(pos), mouseState(buttons),
modState(modifiers), act(actions),
@@ -2743,7 +2742,7 @@ QShowEvent::~QShowEvent()
This event is only used to notify the application of a request.
It may be safely ignored.
- \note This class is currently supported for Mac OS X and Symbian only.
+ \note This class is currently supported for Mac OS X only.
*/
QFileOpenEventPrivate::~QFileOpenEventPrivate()
@@ -2807,8 +2806,6 @@ QUrl QFileOpenEvent::url() const
This is necessary as some files cannot be opened by name, but require specific
information stored in this event.
- For example, if this QFileOpenEvent contains a request to open a Symbian data caged file,
- the QFile could only be opened from the Symbian RFile used in the construction of this event.
\since 4.8
*/
@@ -3570,9 +3567,8 @@ QTouchEvent::TouchPoint::~TouchPoint()
/*!
Returns the id number of this touch point.
- Id numbers are globally sequential, starting at zero, meaning the
- first touch point in the application has id 0, the second has id 1,
- and so on.
+ Do not assume that id numbers start at zero or that they are sequential.
+ Such an assumption is often false due to the way the underlying drivers work.
*/
int QTouchEvent::TouchPoint::id() const
{
diff --git a/src/gui/kernel/qevent.h b/src/gui/kernel/qevent.h
index a59b178cec..93dea41de9 100644
--- a/src/gui/kernel/qevent.h
+++ b/src/gui/kernel/qevent.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -61,7 +61,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QAction;
#ifndef QT_NO_GESTURES
@@ -183,21 +182,27 @@ public:
enum TabletDevice { NoDevice, Puck, Stylus, Airbrush, FourDMouse,
XFreeEraser /*internal*/, RotationStylus };
enum PointerType { UnknownPointer, Pen, Cursor, Eraser };
- QTabletEvent(Type t, const QPoint &pos, const QPoint &globalPos, const QPointF &hiResGlobalPos,
+ QTabletEvent(Type t, const QPointF &pos, const QPointF &globalPos,
int device, int pointerType, qreal pressure, int xTilt, int yTilt,
qreal tangentialPressure, qreal rotation, int z,
Qt::KeyboardModifiers keyState, qint64 uniqueID);
~QTabletEvent();
- inline const QPoint &pos() const { return mPos; }
- inline const QPoint &globalPos() const { return mGPos; }
- inline const QPointF &hiResGlobalPos() const { return mHiResGlobalPos; }
- inline int x() const { return mPos.x(); }
- inline int y() const { return mPos.y(); }
- inline int globalX() const { return mGPos.x(); }
- inline int globalY() const { return mGPos.y(); }
- inline qreal hiResGlobalX() const { return mHiResGlobalPos.x(); }
- inline qreal hiResGlobalY() const { return mHiResGlobalPos.y(); }
+ inline const QPoint pos() const { return mPos.toPoint(); }
+ inline const QPoint globalPos() const { return mGPos.toPoint(); }
+#if QT_DEPRECATED_SINCE(5,0)
+ QT_DEPRECATED inline const QPointF &hiResGlobalPos() const { return mPos; }
+#endif
+
+ inline const QPointF &posF() const { return mPos; }
+ inline const QPointF &globalPosF() const { return mGPos; }
+
+ inline int x() const { return qRound(mPos.x()); }
+ inline int y() const { return qRound(mPos.y()); }
+ inline int globalX() const { return qRound(mGPos.x()); }
+ inline int globalY() const { return qRound(mGPos.y()); }
+ inline qreal hiResGlobalX() const { return mGPos.x(); }
+ inline qreal hiResGlobalY() const { return mGPos.y(); }
inline TabletDevice device() const { return TabletDevice(mDev); }
inline PointerType pointerType() const { return PointerType(mPointerType); }
inline qint64 uniqueId() const { return mUnique; }
@@ -209,8 +214,7 @@ public:
inline int yTilt() const { return mYT; }
protected:
- QPoint mPos, mGPos;
- QPointF mHiResGlobalPos;
+ QPointF mPos, mGPos;
int mDev, mPointerType, mXT, mYT, mZ;
qreal mPress, mTangential, mRot;
qint64 mUnique;
@@ -477,11 +481,12 @@ class QMimeData;
class Q_GUI_EXPORT QDropEvent : public QEvent
{
public:
- QDropEvent(const QPoint& pos, Qt::DropActions actions, const QMimeData *data,
+ QDropEvent(const QPointF& pos, Qt::DropActions actions, const QMimeData *data,
Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers, Type type = Drop);
~QDropEvent();
- inline const QPoint &pos() const { return p; }
+ inline const QPoint pos() const { return p.toPoint(); }
+ inline const QPointF &posF() const { return p; }
inline Qt::MouseButtons mouseButtons() const { return mouseState; }
inline Qt::KeyboardModifiers keyboardModifiers() const { return modState; }
@@ -497,7 +502,7 @@ public:
protected:
friend class QApplication;
- QPoint p;
+ QPointF p;
Qt::MouseButtons mouseState;
Qt::KeyboardModifiers modState;
Qt::DropActions act;
@@ -759,10 +764,12 @@ public:
friend class QApplicationPrivate;
};
+#if QT_DEPRECATED_SINCE(5, 0)
QT_DEPRECATED enum DeviceType {
TouchScreen,
TouchPad
};
+#endif
QTouchEvent(QEvent::Type eventType,
QTouchDevice *device = 0,
@@ -773,7 +780,9 @@ public:
inline QWindow *window() const { return _window; }
inline QObject *target() const { return _target; }
+#if QT_DEPRECATED_SINCE(5, 0)
QT_DEPRECATED inline QTouchEvent::DeviceType deviceType() const { return static_cast<DeviceType>(int(_device->type())); }
+#endif
inline Qt::TouchPointStates touchPointStates() const { return _touchPointStates; }
inline const QList<QTouchEvent::TouchPoint> &touchPoints() const { return _touchPoints; }
inline QTouchDevice *device() const { return _device; }
diff --git a/src/gui/kernel/qevent_p.h b/src/gui/kernel/qevent_p.h
index 6dff55ca14..3f354c14e4 100644
--- a/src/gui/kernel/qevent_p.h
+++ b/src/gui/kernel/qevent_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qgenericplugin_qpa.cpp b/src/gui/kernel/qgenericplugin_qpa.cpp
index 23733e3ea9..493fc770b5 100644
--- a/src/gui/kernel/qgenericplugin_qpa.cpp
+++ b/src/gui/kernel/qgenericplugin_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qgenericplugin_qpa.h b/src/gui/kernel/qgenericplugin_qpa.h
index 196304d2a4..0b74250170 100644
--- a/src/gui/kernel/qgenericplugin_qpa.h
+++ b/src/gui/kernel/qgenericplugin_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_LIBRARY
@@ -60,7 +59,7 @@ QT_MODULE(Gui)
virtual QObject* create(const QString &name, const QString &spec) = 0;
};
-#define QGenericPluginFactoryInterface_iid "com.trolltech.Qt.QGenericPluginFactoryInterface"
+#define QGenericPluginFactoryInterface_iid "org.qt-project.Qt.QGenericPluginFactoryInterface"
Q_DECLARE_INTERFACE(QGenericPluginFactoryInterface, QGenericPluginFactoryInterface_iid)
class Q_GUI_EXPORT QGenericPlugin : public QObject, public QGenericPluginFactoryInterface
diff --git a/src/gui/kernel/qgenericpluginfactory_qpa.cpp b/src/gui/kernel/qgenericpluginfactory_qpa.cpp
index 4735604837..d4a7a9c20e 100644
--- a/src/gui/kernel/qgenericpluginfactory_qpa.cpp
+++ b/src/gui/kernel/qgenericpluginfactory_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qgenericpluginfactory_qpa.h b/src/gui/kernel/qgenericpluginfactory_qpa.h
index 2d1550ffac..a7c227f44a 100644
--- a/src/gui/kernel/qgenericpluginfactory_qpa.h
+++ b/src/gui/kernel/qgenericpluginfactory_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QString;
class QObject;
diff --git a/src/gui/kernel/qguiapplication.cpp b/src/gui/kernel/qguiapplication.cpp
index f92e66b38e..b1cbb5fcae 100644
--- a/src/gui/kernel/qguiapplication.cpp
+++ b/src/gui/kernel/qguiapplication.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,6 +54,7 @@
#include <QtCore/private/qabstracteventdispatcher_p.h>
#include <QtCore/qmutex.h>
#include <QtCore/private/qthread_p.h>
+#include <QtCore/qdir.h>
#include <QtDebug>
#include <qpalette.h>
#include <qscreen.h>
@@ -107,13 +108,12 @@ int QGuiApplicationPrivate::mousePressX = 0;
int QGuiApplicationPrivate::mousePressY = 0;
int QGuiApplicationPrivate::mouse_double_click_distance = 5;
-bool QGuiApplicationPrivate::quitOnLastWindowClosed = true;
-
static Qt::LayoutDirection layout_direction = Qt::LeftToRight;
static bool force_reverse = false;
QGuiApplicationPrivate *QGuiApplicationPrivate::self = 0;
QTouchDevice *QGuiApplicationPrivate::m_fakeTouchDevice = 0;
+int QGuiApplicationPrivate::m_fakeMouseSourcePointId = 0;
#ifndef QT_NO_CLIPBOARD
QClipboard *QGuiApplicationPrivate::qt_clipboard = 0;
@@ -124,7 +124,7 @@ QList<QScreen *> QGuiApplicationPrivate::screen_list;
QWindowList QGuiApplicationPrivate::window_list;
QWindow *QGuiApplicationPrivate::focus_window = 0;
-Q_GLOBAL_STATIC(QMutex, applicationFontMutex)
+static QBasicMutex applicationFontMutex;
QFont *QGuiApplicationPrivate::app_font = 0;
extern void qRegisterGuiVariant();
@@ -184,7 +184,7 @@ QGuiApplication::~QGuiApplication()
QGuiApplicationPrivate::QGuiApplicationPrivate(int &argc, char **argv, int flags)
: QCoreApplicationPrivate(argc, argv, flags),
styleHints(0),
- inputPanel(0)
+ inputMethod(0)
{
self = this;
application_type = QCoreApplication::GuiClient;
@@ -195,11 +195,56 @@ QWindow *QGuiApplication::focusWindow()
return QGuiApplicationPrivate::focus_window;
}
-QWindowList QGuiApplication::topLevelWindows()
+/*!
+ \fn QGuiApplication::focusObjectChanged(QObject *focusObject)
+
+ This signal is emitted when final receiver of events tied to focus is changed.
+ \sa focusObject()
+*/
+
+/*!
+ Returns the QObject in currently active window that will be final receiver of events
+ tied focus, such as key events.
+ */
+QObject *QGuiApplication::focusObject()
+{
+ if (focusWindow())
+ return focusWindow()->focusObject();
+ return 0;
+}
+
+/*!
+ \fn QGuiApplication::allWindows()
+
+ Returns a list of all the windows in the application.
+
+ The list is empty if there are no windows.
+
+ \sa topLevelWindows()
+ */
+QWindowList QGuiApplication::allWindows()
{
return QGuiApplicationPrivate::window_list;
}
+/*!
+ \fn QGuiApplication::topLevelWindows()
+
+ Returns a list of the top-level windows in the application.
+
+ \sa allWindows()
+ */
+QWindowList QGuiApplication::topLevelWindows()
+{
+ const QWindowList &list = QGuiApplicationPrivate::window_list;
+ QWindowList topLevelWindows;
+ for (int i = 0; i < list.size(); i++) {
+ if (!list.at(i)->parent())
+ topLevelWindows.prepend(list.at(i));
+ }
+ return topLevelWindows;
+}
+
QScreen *QGuiApplication::primaryScreen()
{
if (QGuiApplicationPrivate::screen_list.isEmpty())
@@ -340,8 +385,9 @@ void QGuiApplicationPrivate::createPlatformIntegration()
// TODO (msorvig): Create proper cross-platform solution for loading
// deployed platform plugins
#ifdef Q_OS_MAC
- if (platformPluginPath.isEmpty()) {
- platformPluginPath = QCoreApplication::applicationDirPath() + QLatin1String("../Plugins/");
+ const QString bundlePluginPath = QCoreApplication::applicationDirPath() + QLatin1String("../Plugins/");
+ if (platformPluginPath.isEmpty() && QDir(bundlePluginPath).exists()) {
+ platformPluginPath = bundlePluginPath;
}
#endif
@@ -437,8 +483,6 @@ void QGuiApplicationPrivate::init()
if (platform_integration == 0)
createPlatformIntegration();
- init_plugins(pluginList);
-
// Set up which span functions should be used in raster engine...
qInitDrawhelperAsm();
// and QImage conversion functions
@@ -454,6 +498,8 @@ void QGuiApplicationPrivate::init()
qRegisterGuiVariant();
is_app_running = true;
+ init_plugins(pluginList);
+ QWindowSystemInterface::sendWindowSystemEvents(QCoreApplicationPrivate::eventDispatcher, QEventLoop::AllEvents);
}
QGuiApplicationPrivate::~QGuiApplicationPrivate()
@@ -465,6 +511,8 @@ QGuiApplicationPrivate::~QGuiApplicationPrivate()
delete generic_plugin_list.at(i);
generic_plugin_list.clear();
+ delete app_font;
+ app_font = 0;
QFont::cleanup();
#ifndef QT_NO_CURSOR
@@ -476,7 +524,7 @@ QGuiApplicationPrivate::~QGuiApplicationPrivate()
cleanupThreadData();
delete styleHints;
- delete inputPanel;
+ delete inputMethod;
delete platform_integration;
platform_integration = 0;
@@ -552,6 +600,11 @@ bool QGuiApplication::compressEvent(QEvent *event, QObject *receiver, QPostEvent
return QCoreApplication::compressEvent(event, receiver, postedEvents);
}
+bool QGuiApplicationPrivate::processNativeEvent(QWindow *window, const QByteArray &eventType, void *message, long *result)
+{
+ return window->nativeEvent(eventType, message, result);
+}
+
void QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent *e)
{
switch(e->type) {
@@ -791,9 +844,13 @@ void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate
if (previous == QGuiApplicationPrivate::focus_window)
return;
+ QObject *previousFocusObject = previous ? previous->focusObject() : 0;
+
if (previous) {
QFocusEvent focusOut(QEvent::FocusOut);
QCoreApplication::sendSpontaneousEvent(previous, &focusOut);
+ QObject::disconnect(previous, SIGNAL(focusObjectChanged(QObject*)),
+ qApp, SIGNAL(focusObjectChanged(QObject*)));
} else {
QEvent appActivate(QEvent::ApplicationActivate);
qApp->sendSpontaneousEvent(qApp, &appActivate);
@@ -802,6 +859,8 @@ void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate
if (QGuiApplicationPrivate::focus_window) {
QFocusEvent focusIn(QEvent::FocusIn);
QCoreApplication::sendSpontaneousEvent(QGuiApplicationPrivate::focus_window, &focusIn);
+ QObject::connect(QGuiApplicationPrivate::focus_window, SIGNAL(focusObjectChanged(QObject*)),
+ qApp, SIGNAL(focusObjectChanged(QObject*)));
} else {
QEvent appActivate(QEvent::ApplicationDeactivate);
qApp->sendSpontaneousEvent(qApp, &appActivate);
@@ -809,6 +868,9 @@ void QGuiApplicationPrivate::processActivatedEvent(QWindowSystemInterfacePrivate
if (self)
self->notifyActiveWindowChange(previous);
+
+ if (previousFocusObject != qApp->focusObject())
+ emit qApp->focusObjectChanged(qApp->focusObject());
}
void QGuiApplicationPrivate::processWindowStateChangedEvent(QWindowSystemInterfacePrivate::WindowStateChangedEvent *wse)
@@ -1036,11 +1098,22 @@ void QGuiApplicationPrivate::processTouchEvent(QWindowSystemInterfacePrivate::To
if (touchEvent.device()->type() != QTouchDevice::TouchPad) {
Qt::MouseButtons b = eventType == QEvent::TouchEnd ? Qt::NoButton : Qt::LeftButton;
- const QTouchEvent::TouchPoint &touchPoint = touchEvent.touchPoints().first();
-
- QWindowSystemInterfacePrivate::MouseEvent fake(w, e->timestamp, touchPoint.pos(), touchPoint.screenPos(), b, e->modifiers);
- fake.synthetic = true;
- processMouseEvent(&fake);
+ QList<QTouchEvent::TouchPoint> touchPoints = touchEvent.touchPoints();
+ if (eventType == QEvent::TouchBegin)
+ m_fakeMouseSourcePointId = touchPoints.first().id();
+
+ for (int i = 0; i < touchPoints.count(); ++i) {
+ const QTouchEvent::TouchPoint &touchPoint = touchPoints.at(i);
+ if (touchPoint.id() == m_fakeMouseSourcePointId) {
+ QWindowSystemInterfacePrivate::MouseEvent fake(w, e->timestamp,
+ touchPoint.pos(),
+ touchPoint.screenPos(),
+ b, e->modifiers);
+ fake.synthetic = true;
+ processMouseEvent(&fake);
+ break;
+ }
+ }
}
}
}
@@ -1066,11 +1139,16 @@ void QGuiApplicationPrivate::reportScreenOrientationChange(QWindowSystemInterfac
return;
QScreen *s = e->screen.data();
- s->d_func()->currentOrientation = e->orientation;
+ s->d_func()->orientation = e->orientation;
- emit s->currentOrientationChanged(s->currentOrientation());
+ reportScreenOrientationChange(s);
+}
- QScreenOrientationChangeEvent event(s, s->currentOrientation());
+void QGuiApplicationPrivate::reportScreenOrientationChange(QScreen *s)
+{
+ emit s->orientationChanged(s->orientation());
+
+ QScreenOrientationChangeEvent event(s, s->orientation());
QCoreApplication::sendEvent(QCoreApplication::instance(), &event);
}
@@ -1086,6 +1164,10 @@ void QGuiApplicationPrivate::reportGeometryChange(QWindowSystemInterfacePrivate:
QScreen *s = e->screen.data();
s->d_func()->geometry = e->geometry;
+ Qt::ScreenOrientation primaryOrientation = s->primaryOrientation();
+ Qt::ScreenOrientation orientation = s->orientation();
+ s->d_func()->updatePrimaryOrientation();
+
emit s->sizeChanged(s->size());
emit s->geometryChanged(s->geometry());
emit s->physicalDotsPerInchXChanged(s->physicalDotsPerInchX());
@@ -1093,6 +1175,12 @@ void QGuiApplicationPrivate::reportGeometryChange(QWindowSystemInterfacePrivate:
emit s->physicalDotsPerInchChanged(s->physicalDotsPerInch());
emit s->availableSizeChanged(s->availableSize());
emit s->availableGeometryChanged(s->availableGeometry());
+
+ if (s->primaryOrientation() != primaryOrientation)
+ emit s->primaryOrientationChanged(s->primaryOrientation());
+
+ if (s->orientation() != orientation)
+ reportScreenOrientationChange(s);
}
void QGuiApplicationPrivate::reportAvailableGeometryChange(
@@ -1241,7 +1329,7 @@ void QGuiApplication::setPalette(const QPalette &pal)
QFont QGuiApplication::font()
{
- QMutexLocker locker(applicationFontMutex());
+ QMutexLocker locker(&applicationFontMutex);
if (!QGuiApplicationPrivate::app_font)
QGuiApplicationPrivate::app_font =
new QFont(QGuiApplicationPrivate::platformIntegration()->fontDatabase()->defaultFont());
@@ -1250,7 +1338,7 @@ QFont QGuiApplication::font()
void QGuiApplication::setFont(const QFont &font)
{
- QMutexLocker locker(applicationFontMutex());
+ QMutexLocker locker(&applicationFontMutex);
if (!QGuiApplicationPrivate::app_font)
QGuiApplicationPrivate::app_font = new QFont(font);
else
@@ -1300,14 +1388,14 @@ void QGuiApplicationPrivate::notifyActiveWindowChange(QWindow *)
void QGuiApplication::setQuitOnLastWindowClosed(bool quit)
{
- QGuiApplicationPrivate::quitOnLastWindowClosed = quit;
+ QCoreApplication::setQuitLockEnabled(quit);
}
bool QGuiApplication::quitOnLastWindowClosed()
{
- return QGuiApplicationPrivate::quitOnLastWindowClosed;
+ return QCoreApplication::isQuitLockEnabled();
}
@@ -1315,11 +1403,6 @@ bool QGuiApplication::quitOnLastWindowClosed()
void QGuiApplicationPrivate::emitLastWindowClosed()
{
if (qGuiApp && qGuiApp->d_func()->in_exec) {
- if (QGuiApplicationPrivate::quitOnLastWindowClosed) {
- // get ready to quit, this event might be removed if the
- // event loop is re-entered, however
- QGuiApplication::postEvent(qApp, new QEvent(QEvent::Quit));
- }
emit qGuiApp->lastWindowClosed();
}
}
@@ -1491,12 +1574,17 @@ QStyleHints *QGuiApplication::styleHints() const
\sa QInputPanel
*/
-QInputPanel *QGuiApplication::inputPanel() const
+QInputMethod *QGuiApplication::inputMethod() const
{
Q_D(const QGuiApplication);
- if (!d->inputPanel)
- const_cast<QGuiApplicationPrivate *>(d)->inputPanel = new QInputPanel();
- return d->inputPanel;
+ if (!d->inputMethod)
+ const_cast<QGuiApplicationPrivate *>(d)->inputMethod = new QInputMethod();
+ return d->inputMethod;
+}
+
+QInputPanel *QGuiApplication::inputPanel() const
+{
+ return inputMethod();
}
@@ -1521,28 +1609,6 @@ uint QGuiApplicationPrivate::currentKeyPlatform()
}
/*!
- \since 4.2
- \obsolete
-
- Returns the current keyboard input locale. Replaced with QInputPanel::locale()
-*/
-QLocale QGuiApplication::keyboardInputLocale()
-{
- return qApp ? qApp->inputPanel()->locale() : QLocale::c();
-}
-
-/*!
- \since 4.2
- \obsolete
-
- Returns the current keyboard input direction. Replaced with QInputPanel::inputDirection()
-*/
-Qt::LayoutDirection QGuiApplication::keyboardInputDirection()
-{
- return qApp ? qApp->inputPanel()->inputDirection() : Qt::LeftToRight;
-}
-
-/*!
\since 4.5
\fn void QGuiApplication::fontDatabaseChanged()
diff --git a/src/gui/kernel/qguiapplication.h b/src/gui/kernel/qguiapplication.h
index dd7b1f8806..75046d8767 100644
--- a/src/gui/kernel/qguiapplication.h
+++ b/src/gui/kernel/qguiapplication.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -44,6 +44,7 @@
#include <QtCore/qcoreapplication.h>
#include <QtGui/qwindowdefs.h>
+#include <QtGui/qinputpanel.h>
#include <QtCore/qlocale.h>
#include <QtCore/qpoint.h>
#include <QtCore/qsize.h>
@@ -52,14 +53,12 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QGuiApplicationPrivate;
class QPlatformNativeInterface;
class QPalette;
class QScreen;
class QStyleHints;
-class QInputPanel;
#if defined(qApp)
#undef qApp
@@ -82,6 +81,7 @@ public:
QGuiApplication(int &argc, char **argv, int = ApplicationFlags);
virtual ~QGuiApplication();
+ static QWindowList allWindows();
static QWindowList topLevelWindows();
static QWindow *topLevelAt(const QPoint &pos);
@@ -89,6 +89,7 @@ public:
static QT_DEPRECATED QWindow *activeWindow() { return focusWindow(); }
#endif
static QWindow *focusWindow();
+ static QObject *focusObject();
static QScreen *primaryScreen();
static QList<QScreen *> screens();
@@ -119,11 +120,9 @@ public:
static inline bool isRightToLeft() { return layoutDirection() == Qt::RightToLeft; }
static inline bool isLeftToRight() { return layoutDirection() == Qt::LeftToRight; }
- QT_DEPRECATED static QLocale keyboardInputLocale();
- QT_DEPRECATED static Qt::LayoutDirection keyboardInputDirection();
-
QStyleHints *styleHints() const;
- QInputPanel *inputPanel() const;
+ QT_DEPRECATED QInputPanel *inputPanel() const;
+ QInputMethod *inputMethod() const;
static QPlatformNativeInterface *platformNativeInterface();
@@ -137,6 +136,7 @@ Q_SIGNALS:
void fontDatabaseChanged();
void screenAdded(QScreen *screen);
void lastWindowClosed();
+ void focusObjectChanged(QObject *focusObject);
protected:
bool event(QEvent *);
diff --git a/src/gui/kernel/qguiapplication_p.h b/src/gui/kernel/qguiapplication_p.h
index 9c965cd109..d9444ebe95 100644
--- a/src/gui/kernel/qguiapplication_p.h
+++ b/src/gui/kernel/qguiapplication_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class Q_GUI_EXPORT QGuiApplicationPrivate : public QCoreApplicationPrivate
{
@@ -96,7 +95,6 @@ public:
KB_KDE = 8,
KB_Gnome = 16,
KB_CDE = 32,
- KB_S60 = 64,
KB_All = 0xffff
};
@@ -122,6 +120,7 @@ public:
static void processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent *e);
+ static void reportScreenOrientationChange(QScreen *screen);
static void reportScreenOrientationChange(QWindowSystemInterfacePrivate::ScreenOrientationEvent *e);
static void reportGeometryChange(QWindowSystemInterfacePrivate::ScreenGeometryEvent *e);
static void reportAvailableGeometryChange(QWindowSystemInterfacePrivate::ScreenAvailableGeometryEvent *e);
@@ -135,6 +134,8 @@ public:
static Qt::DropAction processDrag(QWindow *w, QMimeData *dropData, const QPoint &p);
static Qt::DropAction processDrop(QWindow *w, QMimeData *dropData, const QPoint &p);
+ static bool processNativeEvent(QWindow *window, const QByteArray &eventType, void *message, long *result);
+
static inline Qt::Alignment visualAlignment(Qt::LayoutDirection direction, Qt::Alignment alignment)
{
if (!(alignment & Qt::AlignHorizontal_Mask))
@@ -180,9 +181,7 @@ public:
static QFont *app_font;
QStyleHints *styleHints;
- QInputPanel *inputPanel;
-
- static bool quitOnLastWindowClosed;
+ QInputMethod *inputMethod;
static QList<QObject *> generic_plugin_list;
#ifndef QT_NO_SHORTCUT
@@ -206,6 +205,7 @@ private:
static QGuiApplicationPrivate *self;
static QTouchDevice *m_fakeTouchDevice;
+ static int m_fakeMouseSourcePointId;
};
Q_GUI_EXPORT uint qHash(const QGuiApplicationPrivate::ActiveTouchPointsKey &k);
diff --git a/src/gui/kernel/qguivariant.cpp b/src/gui/kernel/qguivariant.cpp
index 532a5353e2..8378650dcb 100644
--- a/src/gui/kernel/qguivariant.cpp
+++ b/src/gui/kernel/qguivariant.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -99,46 +99,46 @@ Q_CORE_EXPORT const QVariant::Handler *qcoreVariantHandler();
namespace {
template<typename T>
-struct TypeDefiniton {
+struct TypeDefinition {
static const bool IsAvailable = true;
};
// Ignore these types, as incomplete
#ifdef QT_NO_GEOM_VARIANT
-template<> struct TypeDefiniton<QRect> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QRectF> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QSize> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QSizeF> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QLine> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QLineF> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QPoint> { static const bool IsAvailable = false; };
-template<> struct TypeDefiniton<QPointF> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QRect> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QRectF> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QSize> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QSizeF> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QLine> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QLineF> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QPoint> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QPointF> { static const bool IsAvailable = false; };
#endif
#ifdef QT_NO_SHORTCUT
-template<> struct TypeDefiniton<QKeySequence> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QKeySequence> { static const bool IsAvailable = false; };
#endif
#ifdef QT_NO_CURSOR
-template<> struct TypeDefiniton<QCursor> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QCursor> { static const bool IsAvailable = false; };
#endif
#ifdef QT_NO_MATRIX4X4
-template<> struct TypeDefiniton<QMatrix4x4> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QMatrix4x4> { static const bool IsAvailable = false; };
#endif
#ifdef QT_NO_VECTOR2D
-template<> struct TypeDefiniton<QVector2D> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QVector2D> { static const bool IsAvailable = false; };
#endif
#ifdef QT_NO_VECTOR3D
-template<> struct TypeDefiniton<QVector3D> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QVector3D> { static const bool IsAvailable = false; };
#endif
#ifdef QT_NO_VECTOR4D
-template<> struct TypeDefiniton<QVector4D> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QVector4D> { static const bool IsAvailable = false; };
#endif
#ifdef QT_NO_QUATERNION
-template<> struct TypeDefiniton<QQuaternion> { static const bool IsAvailable = false; };
+template<> struct TypeDefinition<QQuaternion> { static const bool IsAvailable = false; };
#endif
struct GuiTypesFilter {
template<typename T>
struct Acceptor {
- static const bool IsAccepted = QTypeModuleInfo<T>::IsGui && TypeDefiniton<T>::IsAvailable;
+ static const bool IsAccepted = QTypeModuleInfo<T>::IsGui && TypeDefinition<T>::IsAvailable;
};
};
} // namespace used to hide TypeDefinition
diff --git a/src/gui/kernel/qinputmethod.cpp b/src/gui/kernel/qinputmethod.cpp
new file mode 100644
index 0000000000..de00396e40
--- /dev/null
+++ b/src/gui/kernel/qinputmethod.cpp
@@ -0,0 +1,376 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** 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 <qinputmethod.h>
+#include <private/qinputmethod_p.h>
+#include <qguiapplication.h>
+#include <qtimer.h>
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \internal
+*/
+QInputMethod::QInputMethod()
+ : QObject(*new QInputMethodPrivate)
+{
+ // might be instantiated before QGuiApplication is fully done, need to connect later
+ QTimer::singleShot(0, this, SLOT(q_connectFocusObject()));
+}
+
+/*!
+ \internal
+*/
+QInputMethod::~QInputMethod()
+{
+}
+
+/*!
+ \class QInputMethod
+ \brief The QInputMethod class provides access to the active text input method.
+
+ QInputMethod is used by the text editors for integrating to the platform text input
+ methods and more commonly by application views for querying various text input method-related
+ information like virtual keyboard visibility and keyboard dimensions.
+
+ Qt Quick also provides access to QInputMethod in QML through \l{QmlGlobalQtObject}{Qt global object}
+ as \c Qt.application.inputPanel property.
+*/
+
+/*!
+ \property QInputMethod::inputItem
+ \brief Focused item that accepts text input
+ \obsolete
+
+ Input item is set and unset by the focused window. In QML Scene Graph this is done by
+ QQuickCanvas and the input item is either TextInput or TextEdit element. Any QObject can
+ behave as an input item as long as it responds to QInputMethodQueryEvent and QInputMethodEvent
+ events sent by the input methods.
+
+ \sa inputItemTransform, inputWindow, QInputMethodQueryEvent, QInputMethodEvent
+*/
+QObject *QInputMethod::inputItem() const
+{
+ Q_D(const QInputMethod);
+ return d->inputItem.data();
+}
+
+void QInputMethod::setInputItem(QObject *inputItem)
+{
+ Q_D(QInputMethod);
+
+ if (d->inputItem.data() == inputItem)
+ return;
+
+ d->inputItem = inputItem;
+ emit inputItemChanged();
+}
+
+/*!
+ Returns the currently focused window containing the input item.
+
+ \obsolete
+*/
+QWindow *QInputMethod::inputWindow() const
+{
+ return qApp->activeWindow();
+}
+
+/*!
+ Returns the transformation from input item coordinates to the window coordinates.
+*/
+QTransform QInputMethod::inputItemTransform() const
+{
+ Q_D(const QInputMethod);
+ return d->inputItemTransform;
+}
+
+/*!
+ Sets the transformation from input item coordinates to the window coordinates.
+ Item transform needs to be updated by the focused window like QQuickCanvas whenever
+ item is moved inside the scene.
+*/
+void QInputMethod::setInputItemTransform(const QTransform &transform)
+{
+ Q_D(QInputMethod);
+ if (d->inputItemTransform == transform)
+ return;
+
+ d->inputItemTransform = transform;
+ emit cursorRectangleChanged();
+}
+
+/*!
+ \property QInputMethod::cursorRectangle
+ \brief Input item's cursor rectangle in window coordinates.
+
+ Cursor rectangle is often used by various text editing controls
+ like text prediction popups for following the text being typed.
+*/
+QRectF QInputMethod::cursorRectangle() const
+{
+ Q_D(const QInputMethod);
+
+ if (!d->inputItem)
+ return QRectF();
+
+ QInputMethodQueryEvent query(Qt::ImCursorRectangle);
+ QGuiApplication::sendEvent(d->inputItem.data(), &query);
+ QRect r = query.value(Qt::ImCursorRectangle).toRect();
+ if (!r.isValid())
+ return QRect();
+
+ return d->inputItemTransform.mapRect(r);
+}
+
+/*!
+ \property QInputMethod::keyboardRectangle
+ \brief Virtual keyboard's geometry in window coordinates.
+*/
+QRectF QInputMethod::keyboardRectangle() const
+{
+ Q_D(const QInputMethod);
+ QPlatformInputContext *ic = d->platformInputContext();
+ if (ic)
+ return ic->keyboardRect();
+ return QRectF();
+}
+
+/*!
+ Requests virtual keyboard to open. If the platform
+ doesn't provide virtual keyboard the visibility
+ remains false.
+
+ Normally applications should not need to call this
+ function, keyboard should automatically open when
+ the text editor gains focus.
+*/
+void QInputMethod::show()
+{
+ Q_D(QInputMethod);
+ QPlatformInputContext *ic = d->platformInputContext();
+ if (ic)
+ ic->showInputPanel();
+}
+
+/*!
+ Requests virtual keyboard to close.
+
+ Normally applications should not need to call this function,
+ keyboard should automatically close when the text editor loses
+ focus, for example when the parent view is closed.
+*/
+void QInputMethod::hide()
+{
+ Q_D(QInputMethod);
+ QPlatformInputContext *ic = d->platformInputContext();
+ if (ic)
+ ic->hideInputPanel();
+}
+
+/*!
+ \property QInputMethod::visible
+ \brief Virtual keyboard's visibility on the screen
+
+ Input method visibility remains false for devices
+ with no virtual keyboards.
+
+ \sa show(), hide()
+*/
+bool QInputMethod::visible() const
+{
+ Q_D(const QInputMethod);
+ QPlatformInputContext *ic = d->platformInputContext();
+ if (ic)
+ return ic->isInputPanelVisible();
+ return false;
+}
+
+/*!
+ Controls the keyboard visibility. Equivalent
+ to calling show() and hide() functions.
+
+ \sa show(), hide()
+*/
+void QInputMethod::setVisible(bool visible)
+{
+ visible ? show() : hide();
+}
+
+/*!
+ \property QInputMethod::animating
+ \brief True when the virtual keyboard is being opened or closed.
+
+ Animating is false when keyboard is fully open or closed.
+ When \c animating is \c true and \c visibility is \c true keyboard
+ is being opened. When \c animating is \c true and \c visibility is
+ false keyboard is being closed.
+*/
+
+bool QInputMethod::isAnimating() const
+{
+ Q_D(const QInputMethod);
+ QPlatformInputContext *ic = d->platformInputContext();
+ if (ic)
+ return ic->isAnimating();
+ return false;
+}
+
+/*!
+ \property QInputMethod::locale
+ \brief Current input locale.
+*/
+QLocale QInputMethod::locale() const
+{
+ Q_D(const QInputMethod);
+ QPlatformInputContext *ic = d->platformInputContext();
+ if (ic)
+ return ic->locale();
+ return QLocale::c();
+}
+
+/*!
+ \property QInputMethod::inputDirection
+ \brief Current input direction.
+*/
+Qt::LayoutDirection QInputMethod::inputDirection() const
+{
+ Q_D(const QInputMethod);
+ QPlatformInputContext *ic = d->platformInputContext();
+ if (ic)
+ return ic->inputDirection();
+ return Qt::LeftToRight;
+}
+
+/*!
+ Called by the input item to inform the platform input methods when there has been
+ state changes in editor's input method query attributes. When calling the function
+ \a queries parameter has to be used to tell what has changes, which input method
+ can use to make queries for attributes it's interested with QInputMethodQueryEvent.
+
+ In particular calling update whenever the cursor position changes is important as
+ that often causes other query attributes like surrounding text and text selection
+ to change as well. The attributes that often change together with cursor position
+ have been grouped in Qt::ImQueryInput value for convenience.
+*/
+void QInputMethod::update(Qt::InputMethodQueries queries)
+{
+ Q_D(QInputMethod);
+
+ if (queries & Qt::ImEnabled)
+ d->q_checkFocusObject(qApp->focusObject());
+
+ QPlatformInputContext *ic = d->platformInputContext();
+ if (ic)
+ ic->update(queries);
+
+ if (queries & Qt::ImCursorRectangle)
+ emit cursorRectangleChanged();
+}
+
+/*!
+ Resets the input method state. For example, a text editor normally calls
+ this method before inserting a text to make widget ready to accept a text.
+
+ Input method resets automatically when the focused editor changes.
+*/
+void QInputMethod::reset()
+{
+ Q_D(QInputMethod);
+ QPlatformInputContext *ic = d->platformInputContext();
+ if (ic)
+ ic->reset();
+}
+
+/*!
+ Commits the word user is currently composing to the editor. The function is
+ mostly needed by the input methods with text prediction features and by the
+ methods where the script used for typing characters is different from the
+ script that actually gets appended to the editor. Any kind of action that
+ interrupts the text composing needs to flush the composing state by calling the
+ commit() function, for example when the cursor is moved elsewhere.
+*/
+void QInputMethod::commit()
+{
+ Q_D(QInputMethod);
+ QPlatformInputContext *ic = d->platformInputContext();
+ if (ic)
+ ic->commit();
+}
+
+/*!
+ Called by the input item when the word currently being composed is tapped by
+ the user. Input methods often use this information to offer more word
+ suggestions to the user.
+*/
+void QInputMethod::invokeAction(Action a, int cursorPosition)
+{
+ Q_D(QInputMethod);
+ QPlatformInputContext *ic = d->platformInputContext();
+ if (ic)
+ ic->invokeAction(a, cursorPosition);
+}
+
+// temporary handlers for updating focus item based on application focus
+void QInputMethodPrivate::q_connectFocusObject()
+{
+ Q_Q(QInputMethod);
+ QObject::connect(qApp, SIGNAL(focusObjectChanged(QObject*)),
+ q, SLOT(q_checkFocusObject(QObject*)));
+ q_checkFocusObject(qApp->focusObject());
+}
+
+void QInputMethodPrivate::q_checkFocusObject(QObject *object)
+{
+ Q_Q(QInputMethod);
+
+ bool enabled = false;
+ if (object) {
+ QInputMethodQueryEvent query(Qt::ImEnabled);
+ QGuiApplication::sendEvent(object, &query);
+ enabled = query.value(Qt::ImEnabled).toBool();
+ }
+ q->setInputItem(enabled ? object : 0);
+}
+
+QT_END_NAMESPACE
+
+#include "moc_qinputmethod.cpp"
diff --git a/src/gui/kernel/qinputmethod.h b/src/gui/kernel/qinputmethod.h
new file mode 100644
index 0000000000..0acddc05e2
--- /dev/null
+++ b/src/gui/kernel/qinputmethod.h
@@ -0,0 +1,134 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** 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$
+**
+****************************************************************************/
+
+#ifndef QINPUTMETHOD_H
+#define QINPUTMETHOD_H
+
+#include <QtCore/qobject.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Gui)
+
+class QInputMethodPrivate;
+class QWindow;
+class QRectF;
+class QTransform;
+
+class Q_GUI_EXPORT QInputMethod : public QObject
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QInputMethod)
+ 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 animating READ isAnimating NOTIFY animatingChanged)
+ Q_PROPERTY(QLocale locale READ locale NOTIFY localeChanged)
+ Q_PROPERTY(Qt::LayoutDirection inputDirection READ inputDirection NOTIFY inputDirectionChanged)
+
+ Q_ENUMS(Action)
+public:
+ QT_DEPRECATED QObject *inputItem() const;
+ QT_DEPRECATED void setInputItem(QObject *inputItemChanged);
+
+ // the window containing the editor
+ QT_DEPRECATED QWindow *inputWindow() const;
+
+ QTransform inputItemTransform() const;
+ void setInputItemTransform(const QTransform &transform);
+
+ // in window coordinates
+ QRectF cursorRectangle() const; // ### what if we have rotations for the item?
+
+ // keyboard geometry in window coords
+ QRectF keyboardRectangle() const;
+
+ enum Action {
+ Click,
+ ContextMenu
+ };
+
+ bool visible() const;
+ void setVisible(bool visible);
+
+ bool isAnimating() const;
+
+ QLocale locale() const;
+ Qt::LayoutDirection inputDirection() const;
+
+public Q_SLOTS:
+ void show();
+ void hide();
+
+ void update(Qt::InputMethodQueries queries);
+ void reset();
+ void commit();
+
+ void invokeAction(Action a, int cursorPosition);
+
+Q_SIGNALS:
+ void inputItemChanged();
+ void cursorRectangleChanged();
+ void keyboardRectangleChanged();
+ void visibleChanged();
+ void animatingChanged();
+ void localeChanged();
+ void inputDirectionChanged(Qt::LayoutDirection newDirection);
+
+private:
+ friend class QGuiApplication;
+ friend class QGuiApplicationPrivate;
+ friend class QPlatformInputContext;
+ QInputMethod();
+ ~QInputMethod();
+
+ Q_PRIVATE_SLOT(d_func(), void q_connectFocusObject())
+ Q_PRIVATE_SLOT(d_func(), void q_checkFocusObject(QObject* object))
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif
diff --git a/src/gui/kernel/qinputmethod_p.h b/src/gui/kernel/qinputmethod_p.h
new file mode 100644
index 0000000000..862764d1bc
--- /dev/null
+++ b/src/gui/kernel/qinputmethod_p.h
@@ -0,0 +1,83 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** 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$
+**
+****************************************************************************/
+
+#ifndef QINPUTMETHOD_P_H
+#define QINPUTMETHOD_P_H
+
+#include <qinputmethod.h>
+#include <private/qobject_p.h>
+#include <QtCore/QWeakPointer>
+#include <QTransform>
+#include <qplatforminputcontext_qpa.h>
+#include <private/qguiapplication_p.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QInputMethodPrivate : public QObjectPrivate
+{
+ Q_DECLARE_PUBLIC(QInputMethod)
+
+public:
+ inline QInputMethodPrivate() : testContext(0)
+ {}
+ QPlatformInputContext *platformInputContext() const
+ {
+ return testContext ? testContext : QGuiApplicationPrivate::platformIntegration()->inputContext();
+ }
+ static inline QInputMethodPrivate *get(QInputMethod *inputMethod)
+ {
+ return inputMethod->d_func();
+ }
+ void q_connectFocusObject();
+ void q_checkFocusObject(QObject *object);
+
+ QTransform inputItemTransform;
+ QWeakPointer<QObject> inputItem;
+ QPlatformInputContext *testContext;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif
diff --git a/src/gui/kernel/qinputpanel.cpp b/src/gui/kernel/qinputpanel.cpp
deleted file mode 100644
index d6dd55b651..0000000000
--- a/src/gui/kernel/qinputpanel.cpp
+++ /dev/null
@@ -1,347 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 <qinputpanel.h>
-#include <private/qinputpanel_p.h>
-
-QT_BEGIN_NAMESPACE
-
-/*!
- \internal
-*/
-QInputPanel::QInputPanel()
- : QObject(*new QInputPanelPrivate)
-{
-}
-
-/*!
- \internal
-*/
-QInputPanel::~QInputPanel()
-{
-}
-
-/*!
- \class QInputPanel
- \brief The QInputPanel class provides access to the active text input method.
-
- QInputPanel is used by the text editors for integrating to the platform text input
- methods and more commonly by application views for querying various text input method-related
- information like virtual keyboard visibility and keyboard dimensions.
-
- Qt Quick also provides access to QInputPanel in QML through \l{QmlGlobalQtObject}{Qt global object}
- as \c Qt.application.inputPanel property.
-*/
-
-/*!
- \property QInputPanel::inputItem
- \brief Focused item that accepts text input
-
- Input item is set and unset by the focused window. In QML Scene Graph this is done by
- QQuickCanvas and the input item is either TextInput or TextEdit element. Any QObject can
- behave as an input item as long as it responds to QInputMethodQueryEvent and QInputMethodEvent
- events sent by the input methods.
-
- \sa inputItemTransform, inputWindow, QInputMethodQueryEvent, QInputMethodEvent
-*/
-QObject *QInputPanel::inputItem() const
-{
- Q_D(const QInputPanel);
- return d->inputItem.data();
-}
-
-void QInputPanel::setInputItem(QObject *inputItem)
-{
- Q_D(QInputPanel);
-
- if (d->inputItem.data() == inputItem)
- return;
-
- d->inputItem = inputItem;
- emit inputItemChanged();
-}
-
-/*!
- Returns the currently focused window containing the input item.
-*/
-QWindow *QInputPanel::inputWindow() const
-{
- return qApp->activeWindow();
-}
-
-/*!
- Returns the transformation from input item coordinates to the window coordinates.
-*/
-QTransform QInputPanel::inputItemTransform() const
-{
- Q_D(const QInputPanel);
- return d->inputItemTransform;
-}
-
-/*!
- Sets the transformation from input item coordinates to the window coordinates.
- Item transform needs to be updated by the focused window like QQuickCanvas whenever
- item is moved inside the scene.
-*/
-void QInputPanel::setInputItemTransform(const QTransform &transform)
-{
- Q_D(QInputPanel);
- if (d->inputItemTransform == transform)
- return;
-
- d->inputItemTransform = transform;
- emit cursorRectangleChanged();
-}
-
-/*!
- \property QInputPanel::cursorRectangle
- \brief Input item's cursor rectangle in window coordinates.
-
- Cursor rectangle is often used by various text editing controls
- like text prediction popups for following the text being typed.
-*/
-QRectF QInputPanel::cursorRectangle() const
-{
- Q_D(const QInputPanel);
-
- if (!d->inputItem)
- return QRectF();
-
- QInputMethodQueryEvent query(Qt::ImCursorRectangle);
- QGuiApplication::sendEvent(d->inputItem.data(), &query);
- QRect r = query.value(Qt::ImCursorRectangle).toRect();
- if (!r.isValid())
- return QRect();
-
- return d->inputItemTransform.mapRect(r);
-}
-
-/*!
- \property QInputPanel::keyboardRectangle
- \brief Virtual keyboard's geometry in window coordinates.
-*/
-QRectF QInputPanel::keyboardRectangle() const
-{
- Q_D(const QInputPanel);
- QPlatformInputContext *ic = d->platformInputContext();
- if (ic)
- return ic->keyboardRect();
- return QRectF();
-}
-
-/*!
- Requests virtual keyboard to open. If the platform
- doesn't provide virtual keyboard the visibility
- remains false.
-
- Normally applications should not need to call this
- function, keyboard should automatically open when
- the text editor gains focus.
-*/
-void QInputPanel::show()
-{
- Q_D(QInputPanel);
- QPlatformInputContext *ic = d->platformInputContext();
- if (ic)
- ic->showInputPanel();
-}
-
-/*!
- Requests virtual keyboard to close.
-
- Normally applications should not need to call this function,
- keyboard should automatically close when the text editor loses
- focus, for example when the parent view is closed.
-*/
-void QInputPanel::hide()
-{
- Q_D(QInputPanel);
- QPlatformInputContext *ic = d->platformInputContext();
- if (ic)
- ic->hideInputPanel();
-}
-
-/*!
- \property QInputPanel::visible
- \brief Virtual keyboard's visibility on the screen
-
- Input panel visibility remains false for devices
- with no virtual keyboards.
-
- \sa show(), hide()
-*/
-bool QInputPanel::visible() const
-{
- Q_D(const QInputPanel);
- QPlatformInputContext *ic = d->platformInputContext();
- if (ic)
- return ic->isInputPanelVisible();
- return false;
-}
-
-/*!
- Controls the keyboard visibility. Equivalent
- to calling show() and hide() functions.
-
- \sa show(), hide()
-*/
-void QInputPanel::setVisible(bool visible)
-{
- visible ? show() : hide();
-}
-
-/*!
- \property QInputPanel::animating
- \brief True when the virtual keyboard is being opened or closed.
-
- Animating is false when keyboard is fully open or closed.
- When \c animating is \c true and \c visibility is \c true keyboard
- is being opened. When \c animating is \c true and \c visibility is
- false keyboard is being closed.
-*/
-
-bool QInputPanel::isAnimating() const
-{
- Q_D(const QInputPanel);
- QPlatformInputContext *ic = d->platformInputContext();
- if (ic)
- return ic->isAnimating();
- return false;
-}
-
-/*!
- \property QInputPanel::locale
- \brief Current input locale.
-*/
-QLocale QInputPanel::locale() const
-{
- Q_D(const QInputPanel);
- QPlatformInputContext *ic = d->platformInputContext();
- if (ic)
- return ic->locale();
- return QLocale::c();
-}
-
-/*!
- \property QInputPanel::inputDirection
- \brief Current input direction.
-*/
-Qt::LayoutDirection QInputPanel::inputDirection() const
-{
- Q_D(const QInputPanel);
- QPlatformInputContext *ic = d->platformInputContext();
- if (ic)
- return ic->inputDirection();
- return Qt::LeftToRight;
-}
-
-/*!
- Called by the input item to inform the platform input methods when there has been
- state changes in editor's input method query attributes. When calling the function
- \a queries parameter has to be used to tell what has changes, which input method
- can use to make queries for attributes it's interested with QInputMethodQueryEvent.
-
- In particular calling update whenever the cursor position changes is important as
- that often causes other query attributes like surrounding text and text selection
- to change as well. The attributes that often change together with cursor position
- have been grouped in Qt::ImQueryInput value for convenience.
-*/
-void QInputPanel::update(Qt::InputMethodQueries queries)
-{
- Q_D(QInputPanel);
-
- if (!d->inputItem)
- return;
-
- QPlatformInputContext *ic = d->platformInputContext();
- if (ic)
- ic->update(queries);
-
- if (queries & Qt::ImCursorRectangle)
- emit cursorRectangleChanged();
-}
-
-/*!
- Resets the input method state. For example, a text editor normally calls
- this method before inserting a text to make widget ready to accept a text.
-
- Input method resets automatically when the focused editor changes.
-*/
-void QInputPanel::reset()
-{
- Q_D(QInputPanel);
- QPlatformInputContext *ic = d->platformInputContext();
- if (ic)
- ic->reset();
-}
-
-/*!
- Commits the word user is currently composing to the editor. The function is
- mostly needed by the input methods with text prediction features and by the
- methods where the script used for typing characters is different from the
- script that actually gets appended to the editor. Any kind of action that
- interrupts the text composing needs to flush the composing state by calling the
- commit() function, for example when the cursor is moved elsewhere.
-*/
-void QInputPanel::commit()
-{
- Q_D(QInputPanel);
- QPlatformInputContext *ic = d->platformInputContext();
- if (ic)
- ic->commit();
-}
-
-/*!
- Called by the input item when the word currently being composed is tapped by
- the user. Input methods often use this information to offer more word
- suggestions to the user.
-*/
-void QInputPanel::invokeAction(Action a, int cursorPosition)
-{
- Q_D(QInputPanel);
- QPlatformInputContext *ic = d->platformInputContext();
- if (ic)
- ic->invokeAction(a, cursorPosition);
-}
-
-QT_END_NAMESPACE
-
-#include "moc_qinputpanel.cpp"
diff --git a/src/gui/kernel/qinputpanel.h b/src/gui/kernel/qinputpanel.h
index c33bd13451..95be71d7b5 100644
--- a/src/gui/kernel/qinputpanel.h
+++ b/src/gui/kernel/qinputpanel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,87 +42,16 @@
#ifndef QINPUTPANEL_H
#define QINPUTPANEL_H
-#include <QtCore/qobject.h>
+#include <QtGui/qinputmethod.h>
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
-
-class QInputPanelPrivate;
-class QWindow;
-class QRectF;
-class QTransform;
-
-class Q_GUI_EXPORT QInputPanel : public QObject
-{
- Q_OBJECT
- Q_DECLARE_PRIVATE(QInputPanel)
- 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 animating READ isAnimating NOTIFY animatingChanged)
- Q_PROPERTY(QLocale locale READ locale NOTIFY localeChanged)
- Q_PROPERTY(Qt::LayoutDirection inputDirection READ inputDirection NOTIFY inputDirectionChanged)
-
- Q_ENUMS(Action)
-public:
- QObject *inputItem() const;
- void setInputItem(QObject *inputItemChanged);
-
- // the window containing the editor
- QWindow *inputWindow() const;
-
- QTransform inputItemTransform() const;
- void setInputItemTransform(const QTransform &transform);
-
- // in window coordinates
- QRectF cursorRectangle() const; // ### what if we have rotations for the item?
-
- // keyboard geometry in window coords
- QRectF keyboardRectangle() const;
-
- enum Action {
- Click,
- ContextMenu
- };
-
- bool visible() const;
- void setVisible(bool visible);
-
- bool isAnimating() const;
-
- QLocale locale() const;
- Qt::LayoutDirection inputDirection() const;
-
-public Q_SLOTS:
- void show();
- void hide();
-
- void update(Qt::InputMethodQueries queries);
- void reset();
- void commit();
-
- void invokeAction(Action a, int cursorPosition);
-
-Q_SIGNALS:
- void inputItemChanged();
- void cursorRectangleChanged();
- void keyboardRectangleChanged();
- void visibleChanged();
- void animatingChanged();
- void localeChanged();
- void inputDirectionChanged(Qt::LayoutDirection newDirection);
-
-private:
- friend class QGuiApplication;
- friend class QGuiApplicationPrivate;
- friend class QPlatformInputContext;
- QInputPanel();
- ~QInputPanel();
-};
+#if 0
+#pragma qt_class(QInputPanel)
+#endif
+#define QInputPanel QInputMethod
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qinputpanel_p.h b/src/gui/kernel/qinputpanel_p.h
index f30c8a1b80..a4f24505c6 100644
--- a/src/gui/kernel/qinputpanel_p.h
+++ b/src/gui/kernel/qinputpanel_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,35 +42,16 @@
#ifndef QINPUTPANEL_P_H
#define QINPUTPANEL_P_H
-#include <qinputpanel.h>
-#include <private/qobject_p.h>
-#include <QtCore/QWeakPointer>
-#include <QTransform>
-#include <qplatforminputcontext_qpa.h>
-#include <private/qguiapplication_p.h>
+#include <private/qinputmethod_p.h>
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-class QInputPanelPrivate : public QObjectPrivate
-{
-public:
- inline QInputPanelPrivate() : testContext(0)
- {}
- QPlatformInputContext *platformInputContext() const
- {
- return testContext ? testContext : QGuiApplicationPrivate::platformIntegration()->inputContext();
- }
- static inline QInputPanelPrivate *get(QInputPanel *inputPanel)
- {
- return inputPanel->d_func();
- }
-
- QTransform inputItemTransform;
- QWeakPointer<QObject> inputItem;
- QPlatformInputContext *testContext;
-};
+#if 0
+#pragma qt_class(QInputPanelPrivate)
+#endif
+#define QInputPanelPrivate QInputMethodPrivate
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qkeymapper.cpp b/src/gui/kernel/qkeymapper.cpp
index a411ee5904..9085579856 100644
--- a/src/gui/kernel/qkeymapper.cpp
+++ b/src/gui/kernel/qkeymapper.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qkeymapper_p.h b/src/gui/kernel/qkeymapper_p.h
index bf19f1d80a..a09cdd1244 100644
--- a/src/gui/kernel/qkeymapper_p.h
+++ b/src/gui/kernel/qkeymapper_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qkeymapper_qpa.cpp b/src/gui/kernel/qkeymapper_qpa.cpp
index fd04ff234c..8f029c9110 100644
--- a/src/gui/kernel/qkeymapper_qpa.cpp
+++ b/src/gui/kernel/qkeymapper_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qkeysequence.cpp b/src/gui/kernel/qkeysequence.cpp
index 986701bd7b..021135b6fe 100644
--- a/src/gui/kernel/qkeysequence.cpp
+++ b/src/gui/kernel/qkeysequence.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -224,72 +224,72 @@ void Q_GUI_EXPORT qt_set_sequence_auto_mnemonic(bool b) { qt_sequence_no_mnemoni
corresponds to the \key Control keys.
\table
- \header \i StandardKey \i Windows \i Mac OS X \i KDE \i GNOME \i S60
- \row \i HelpContents \i F1 \i Ctrl+? \i F1 \i F1 \i F2
- \row \i WhatsThis \i Shift+F1 \i Shift+F1 \i Shift+F1 \i Shift+F1 \i Shift+F1
- \row \i Open \i Ctrl+O \i Ctrl+O \i Ctrl+O \i Ctrl+O \i (none)
- \row \i Close \i Ctrl+F4, Ctrl+W \i Ctrl+W, Ctrl+F4 \i Ctrl+W \i Ctrl+W \i (none)
- \row \i Save \i Ctrl+S \i Ctrl+S \i Ctrl+S \i Ctrl+S \i (none)
- \row \i Quit \i \i Ctrl+Q \i Qtrl+Q \i Qtrl+Q \i (none)
- \row \i SaveAs \i \i Ctrl+Shift+S \i \i Ctrl+Shift+S \i (none)
- \row \i New \i Ctrl+N \i Ctrl+N \i Ctrl+N \i Ctrl+N \i (none)
- \row \i Delete \i Del \i Del, Meta+D \i Del, Ctrl+D \i Del, Ctrl+D \i Del
- \row \i Cut \i Ctrl+X, Shift+Del \i Ctrl+X \i Ctrl+X, F20, Shift+Del \i Ctrl+X, F20, Shift+Del \i Ctrl+X
- \row \i Copy \i Ctrl+C, Ctrl+Ins \i Ctrl+C \i Ctrl+C, F16, Ctrl+Ins \i Ctrl+C, F16, Ctrl+Ins \i Ctrl+C
- \row \i Paste \i Ctrl+V, Shift+Ins \i Ctrl+V \i Ctrl+V, F18, Shift+Ins \i Ctrl+V, F18, Shift+Ins \i Ctrl+V
- \row \i Preferences \i \i Ctrl+, \i \i \i (none)
- \row \i Undo \i Ctrl+Z, Alt+Backspace \i Ctrl+Z \i Ctrl+Z, F14 \i Ctrl+Z, F14 \i Ctrl+Z
- \row \i Redo \i Ctrl+Y, Shift+Ctrl+Z, Alt+Shift+Backspace \i Ctrl+Shift+Z \i Ctrl+Shift+Z \i Ctrl+Shift+Z \i (none)
- \row \i Back \i Alt+Left, Backspace \i Ctrl+[ \i Alt+Left \i Alt+Left \i (none)
- \row \i Forward \i Alt+Right, Shift+Backspace \i Ctrl+] \i Alt+Right \i Alt+Right \i (none)
- \row \i Refresh \i F5 \i F5 \i F5 \i Ctrl+R, F5 \i (none)
- \row \i ZoomIn \i Ctrl+Plus \i Ctrl+Plus \i Ctrl+Plus \i Ctrl+Plus \i (none)
- \row \i ZoomOut \i Ctrl+Minus \i Ctrl+Minus \i Ctrl+Minus \i Ctrl+Minus \i (none)
- \row \i Print \i Ctrl+P \i Ctrl+P \i Ctrl+P \i Ctrl+P \i (none)
- \row \i AddTab \i Ctrl+T \i Ctrl+T \i Ctrl+Shift+N, Ctrl+T \i Ctrl+T \i (none)
- \row \i NextChild \i Ctrl+Tab, Forward, Ctrl+F6 \i Ctrl+}, Forward, Ctrl+Tab \i Ctrl+Tab, Forward, Ctrl+Comma \i Ctrl+Tab, Forward \i (none)
- \row \i PreviousChild \i Ctrl+Shift+Tab, Back, Ctrl+Shift+F6 \i Ctrl+{, Back, Ctrl+Shift+Tab \i Ctrl+Shift+Tab, Back, Ctrl+Period \i Ctrl+Shift+Tab, Back \i (none)
- \row \i Find \i Ctrl+F \i Ctrl+F \i Ctrl+F \i Ctrl+F \i (none)
- \row \i FindNext \i F3, Ctrl+G \i Ctrl+G \i F3 \i Ctrl+G, F3 \i (none)
- \row \i FindPrevious \i Shift+F3, Ctrl+Shift+G \i Ctrl+Shift+G \i Shift+F3 \i Ctrl+Shift+G, Shift+F3 \i (none)
- \row \i Replace \i Ctrl+H \i (none) \i Ctrl+R \i Ctrl+H \i (none)
- \row \i SelectAll \i Ctrl+A \i Ctrl+A \i Ctrl+A \i Ctrl+A \i (none)
- \row \i Bold \i Ctrl+B \i Ctrl+B \i Ctrl+B \i Ctrl+B \i (none)
- \row \i Italic \i Ctrl+I \i Ctrl+I \i Ctrl+I \i Ctrl+I \i (none)
- \row \i Underline \i Ctrl+U \i Ctrl+U \i Ctrl+U \i Ctrl+U \i (none)
- \row \i MoveToNextChar \i Right \i Right \i Right \i Right \i Right
- \row \i MoveToPreviousChar \i Left \i Left \i Left \i Left \i Left
- \row \i MoveToNextWord \i Ctrl+Right \i Alt+Right \i Ctrl+Right \i Ctrl+Right \i Ctrl+Right
- \row \i MoveToPreviousWord \i Ctrl+Left \i Alt+Left \i Ctrl+Left \i Ctrl+Left \i Ctrl+Left
- \row \i MoveToNextLine \i Down \i Down \i Down \i Down \i Down
- \row \i MoveToPreviousLine \i Up \i Up \i Up \i Up \i Up
- \row \i MoveToNextPage \i PgDown \i PgDown, Alt+PgDown, Meta+Down, Meta+PgDown\i PgDown \i PgDown \i PgDown
- \row \i MoveToPreviousPage \i PgUp \i PgUp, Alt+PgUp, Meta+Up, Meta+PgUp \i PgUp \i PgUp \i PgUp
- \row \i MoveToStartOfLine \i Home \i Ctrl+Left, Meta+Left \i Home \i Home \i Home
- \row \i MoveToEndOfLine \i End \i Ctrl+Right, Meta+Right \i End \i End \i End
- \row \i MoveToStartOfBlock \i (none) \i Alt+Up, Meta+A \i (none) \i (none) \i (none)
- \row \i MoveToEndOfBlock \i (none) \i Alt+Down, Meta+E \i (none) \i (none) \i (none)
- \row \i MoveToStartOfDocument\i Ctrl+Home \i Ctrl+Up, Home \i Ctrl+Home \i Ctrl+Home \i Ctrl+Home
- \row \i MoveToEndOfDocument \i Ctrl+End \i Ctrl+Down, End \i Ctrl+End \i Ctrl+End \i Ctrl+End
- \row \i SelectNextChar \i Shift+Right \i Shift+Right \i Shift+Right \i Shift+Right \i Shift+Right
- \row \i SelectPreviousChar \i Shift+Left \i Shift+Left \i Shift+Left \i Shift+Left \i Shift+Left
- \row \i SelectNextWord \i Ctrl+Shift+Right \i Alt+Shift+Right \i Ctrl+Shift+Right \i Ctrl+Shift+Right \i Ctrl+Shift+Right
- \row \i SelectPreviousWord \i Ctrl+Shift+Left \i Alt+Shift+Left \i Ctrl+Shift+Left \i Ctrl+Shift+Left \i Ctrl+Shift+Left
- \row \i SelectNextLine \i Shift+Down \i Shift+Down \i Shift+Down \i Shift+Down \i Shift+Down
- \row \i SelectPreviousLine \i Shift+Up \i Shift+Up \i Shift+Up \i Shift+Up \i Shift+Up
- \row \i SelectNextPage \i Shift+PgDown \i Shift+PgDown \i Shift+PgDown \i Shift+PgDown \i Shift+PgDown
- \row \i SelectPreviousPage \i Shift+PgUp \i Shift+PgUp \i Shift+PgUp \i Shift+PgUp \i Shift+PgUp
- \row \i SelectStartOfLine \i Shift+Home \i Ctrl+Shift+Left \i Shift+Home \i Shift+Home \i Shift+Home
- \row \i SelectEndOfLine \i Shift+End \i Ctrl+Shift+Right \i Shift+End \i Shift+End \i Shift+End
- \row \i SelectStartOfBlock \i (none) \i Alt+Shift+Up, Meta+Shift+A \i (none) \i (none) \i (none)
- \row \i SelectEndOfBlock \i (none) \i Alt+Shift+Down, Meta+Shift+E \i (none) \i (none) \i (none)
- \row \i SelectStartOfDocument\i Ctrl+Shift+Home \i Ctrl+Shift+Up, Shift+Home \i Ctrl+Shift+Home\i Ctrl+Shift+Home \i Ctrl+Shift+Home
- \row \i SelectEndOfDocument \i Ctrl+Shift+End \i Ctrl+Shift+Down, Shift+End \i Ctrl+Shift+End \i Ctrl+Shift+End \i Ctrl+Shift+End
- \row \i DeleteStartOfWord \i Ctrl+Backspace \i Alt+Backspace \i Ctrl+Backspace \i Ctrl+Backspace \i (none)
- \row \i DeleteEndOfWord \i Ctrl+Del \i (none) \i Ctrl+Del \i Ctrl+Del \i (none)
- \row \i DeleteEndOfLine \i (none) \i (none) \i Ctrl+K \i Ctrl+K \i (none)
- \row \i InsertParagraphSeparator \i Enter \i Enter \i Enter \i Enter \i (none)
- \row \i InsertLineSeparator \i Shift+Enter \i Meta+Enter \i Shift+Enter \i Shift+Enter \i (none)
+ \header \i StandardKey \i Windows \i Mac OS X \i KDE \i GNOME
+ \row \i HelpContents \i F1 \i Ctrl+? \i F1 \i F1
+ \row \i WhatsThis \i Shift+F1 \i Shift+F1 \i Shift+F1 \i Shift+F1
+ \row \i Open \i Ctrl+O \i Ctrl+O \i Ctrl+O \i Ctrl+O
+ \row \i Close \i Ctrl+F4, Ctrl+W \i Ctrl+W, Ctrl+F4 \i Ctrl+W \i Ctrl+W
+ \row \i Save \i Ctrl+S \i Ctrl+S \i Ctrl+S \i Ctrl+S
+ \row \i Quit \i \i Ctrl+Q \i Qtrl+Q \i Qtrl+Q
+ \row \i SaveAs \i \i Ctrl+Shift+S \i \i Ctrl+Shift+S
+ \row \i New \i Ctrl+N \i Ctrl+N \i Ctrl+N \i Ctrl+N
+ \row \i Delete \i Del \i Del, Meta+D \i Del, Ctrl+D \i Del, Ctrl+D
+ \row \i Cut \i Ctrl+X, Shift+Del \i Ctrl+X \i Ctrl+X, F20, Shift+Del \i Ctrl+X, F20, Shift+Del
+ \row \i Copy \i Ctrl+C, Ctrl+Ins \i Ctrl+C \i Ctrl+C, F16, Ctrl+Ins \i Ctrl+C, F16, Ctrl+Ins
+ \row \i Paste \i Ctrl+V, Shift+Ins \i Ctrl+V \i Ctrl+V, F18, Shift+Ins \i Ctrl+V, F18, Shift+Ins
+ \row \i Preferences \i \i Ctrl+, \i \i
+ \row \i Undo \i Ctrl+Z, Alt+Backspace \i Ctrl+Z \i Ctrl+Z, F14 \i Ctrl+Z, F14
+ \row \i Redo \i Ctrl+Y, Shift+Ctrl+Z, Alt+Shift+Backspace \i Ctrl+Shift+Z \i Ctrl+Shift+Z \i Ctrl+Shift+Z
+ \row \i Back \i Alt+Left, Backspace \i Ctrl+[ \i Alt+Left \i Alt+Left
+ \row \i Forward \i Alt+Right, Shift+Backspace \i Ctrl+] \i Alt+Right \i Alt+Right
+ \row \i Refresh \i F5 \i F5 \i F5 \i Ctrl+R, F5
+ \row \i ZoomIn \i Ctrl+Plus \i Ctrl+Plus \i Ctrl+Plus \i Ctrl+Plus
+ \row \i ZoomOut \i Ctrl+Minus \i Ctrl+Minus \i Ctrl+Minus \i Ctrl+Minus
+ \row \i Print \i Ctrl+P \i Ctrl+P \i Ctrl+P \i Ctrl+P
+ \row \i AddTab \i Ctrl+T \i Ctrl+T \i Ctrl+Shift+N, Ctrl+T \i Ctrl+T
+ \row \i NextChild \i Ctrl+Tab, Forward, Ctrl+F6 \i Ctrl+}, Forward, Ctrl+Tab \i Ctrl+Tab, Forward, Ctrl+Comma \i Ctrl+Tab, Forward
+ \row \i PreviousChild \i Ctrl+Shift+Tab, Back, Ctrl+Shift+F6 \i Ctrl+{, Back, Ctrl+Shift+Tab \i Ctrl+Shift+Tab, Back, Ctrl+Period \i Ctrl+Shift+Tab, Back
+ \row \i Find \i Ctrl+F \i Ctrl+F \i Ctrl+F \i Ctrl+F
+ \row \i FindNext \i F3, Ctrl+G \i Ctrl+G \i F3 \i Ctrl+G, F3
+ \row \i FindPrevious \i Shift+F3, Ctrl+Shift+G \i Ctrl+Shift+G \i Shift+F3 \i Ctrl+Shift+G, Shift+F3
+ \row \i Replace \i Ctrl+H \i (none) \i Ctrl+R \i Ctrl+H
+ \row \i SelectAll \i Ctrl+A \i Ctrl+A \i Ctrl+A \i Ctrl+A
+ \row \i Bold \i Ctrl+B \i Ctrl+B \i Ctrl+B \i Ctrl+B
+ \row \i Italic \i Ctrl+I \i Ctrl+I \i Ctrl+I \i Ctrl+I
+ \row \i Underline \i Ctrl+U \i Ctrl+U \i Ctrl+U \i Ctrl+U
+ \row \i MoveToNextChar \i Right \i Right \i Right \i Right
+ \row \i MoveToPreviousChar \i Left \i Left \i Left \i Left
+ \row \i MoveToNextWord \i Ctrl+Right \i Alt+Right \i Ctrl+Right \i Ctrl+Right
+ \row \i MoveToPreviousWord \i Ctrl+Left \i Alt+Left \i Ctrl+Left \i Ctrl+Left
+ \row \i MoveToNextLine \i Down \i Down \i Down \i Down
+ \row \i MoveToPreviousLine \i Up \i Up \i Up \i Up
+ \row \i MoveToNextPage \i PgDown \i PgDown, Alt+PgDown, Meta+Down, Meta+PgDown\i PgDown \i PgDown
+ \row \i MoveToPreviousPage \i PgUp \i PgUp, Alt+PgUp, Meta+Up, Meta+PgUp \i PgUp \i PgUp
+ \row \i MoveToStartOfLine \i Home \i Ctrl+Left, Meta+Left \i Home \i Home
+ \row \i MoveToEndOfLine \i End \i Ctrl+Right, Meta+Right \i End \i End
+ \row \i MoveToStartOfBlock \i (none) \i Alt+Up, Meta+A \i (none) \i (none)
+ \row \i MoveToEndOfBlock \i (none) \i Alt+Down, Meta+E \i (none) \i (none)
+ \row \i MoveToStartOfDocument\i Ctrl+Home \i Ctrl+Up, Home \i Ctrl+Home \i Ctrl+Home
+ \row \i MoveToEndOfDocument \i Ctrl+End \i Ctrl+Down, End \i Ctrl+End \i Ctrl+End
+ \row \i SelectNextChar \i Shift+Right \i Shift+Right \i Shift+Right \i Shift+Right
+ \row \i SelectPreviousChar \i Shift+Left \i Shift+Left \i Shift+Left \i Shift+Left
+ \row \i SelectNextWord \i Ctrl+Shift+Right \i Alt+Shift+Right \i Ctrl+Shift+Right \i Ctrl+Shift+Right
+ \row \i SelectPreviousWord \i Ctrl+Shift+Left \i Alt+Shift+Left \i Ctrl+Shift+Left \i Ctrl+Shift+Left
+ \row \i SelectNextLine \i Shift+Down \i Shift+Down \i Shift+Down \i Shift+Down
+ \row \i SelectPreviousLine \i Shift+Up \i Shift+Up \i Shift+Up \i Shift+Up
+ \row \i SelectNextPage \i Shift+PgDown \i Shift+PgDown \i Shift+PgDown \i Shift+PgDown
+ \row \i SelectPreviousPage \i Shift+PgUp \i Shift+PgUp \i Shift+PgUp \i Shift+PgUp
+ \row \i SelectStartOfLine \i Shift+Home \i Ctrl+Shift+Left \i Shift+Home \i Shift+Home
+ \row \i SelectEndOfLine \i Shift+End \i Ctrl+Shift+Right \i Shift+End \i Shift+End
+ \row \i SelectStartOfBlock \i (none) \i Alt+Shift+Up, Meta+Shift+A \i (none) \i (none)
+ \row \i SelectEndOfBlock \i (none) \i Alt+Shift+Down, Meta+Shift+E \i (none) \i (none)
+ \row \i SelectStartOfDocument\i Ctrl+Shift+Home \i Ctrl+Shift+Up, Shift+Home \i Ctrl+Shift+Home\i Ctrl+Shift+Home
+ \row \i SelectEndOfDocument \i Ctrl+Shift+End \i Ctrl+Shift+Down, Shift+End \i Ctrl+Shift+End \i Ctrl+Shift+End
+ \row \i DeleteStartOfWord \i Ctrl+Backspace \i Alt+Backspace \i Ctrl+Backspace \i Ctrl+Backspace
+ \row \i DeleteEndOfWord \i Ctrl+Del \i (none) \i Ctrl+Del \i Ctrl+Del
+ \row \i DeleteEndOfLine \i (none) \i (none) \i Ctrl+K \i Ctrl+K
+ \row \i InsertParagraphSeparator \i Enter \i Enter \i Enter \i Enter
+ \row \i InsertLineSeparator \i Shift+Enter \i Meta+Enter \i Shift+Enter \i Shift+Enter
\endtable
Note that, since the key sequences used for the standard shortcuts differ
@@ -646,9 +646,9 @@ const QKeyBinding QKeySequencePrivate::keyBindings[] = {
{QKeySequence::InsertParagraphSeparator,0, Qt::Key_Return, QGuiApplicationPrivate::KB_All},
{QKeySequence::InsertParagraphSeparator,0, Qt::Key_Enter, QGuiApplicationPrivate::KB_All},
{QKeySequence::Delete, 1, Qt::Key_Delete, QGuiApplicationPrivate::KB_All},
- {QKeySequence::MoveToStartOfLine, 0, Qt::Key_Home, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11 | QGuiApplicationPrivate::KB_S60},
+ {QKeySequence::MoveToStartOfLine, 0, Qt::Key_Home, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11},
{QKeySequence::MoveToStartOfDocument, 0, Qt::Key_Home, QGuiApplicationPrivate::KB_Mac},
- {QKeySequence::MoveToEndOfLine, 0, Qt::Key_End, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11 | QGuiApplicationPrivate::KB_S60},
+ {QKeySequence::MoveToEndOfLine, 0, Qt::Key_End, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11},
{QKeySequence::MoveToEndOfDocument, 0, Qt::Key_End, QGuiApplicationPrivate::KB_Mac},
{QKeySequence::MoveToPreviousChar, 0, Qt::Key_Left, QGuiApplicationPrivate::KB_All},
{QKeySequence::MoveToPreviousLine, 0, Qt::Key_Up, QGuiApplicationPrivate::KB_All},
@@ -657,7 +657,6 @@ const QKeyBinding QKeySequencePrivate::keyBindings[] = {
{QKeySequence::MoveToPreviousPage, 1, Qt::Key_PageUp, QGuiApplicationPrivate::KB_All},
{QKeySequence::MoveToNextPage, 1, Qt::Key_PageDown, QGuiApplicationPrivate::KB_All},
{QKeySequence::HelpContents, 0, Qt::Key_F1, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11},
- {QKeySequence::HelpContents, 0, Qt::Key_F2, QGuiApplicationPrivate::KB_S60},
{QKeySequence::FindNext, 0, Qt::Key_F3, QGuiApplicationPrivate::KB_X11},
{QKeySequence::FindNext, 1, Qt::Key_F3, QGuiApplicationPrivate::KB_Win},
{QKeySequence::Refresh, 0, Qt::Key_F5, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11},
@@ -668,14 +667,13 @@ const QKeyBinding QKeySequencePrivate::keyBindings[] = {
{QKeySequence::PreviousChild, 0, Qt::Key_Back, QGuiApplicationPrivate::KB_All},
{QKeySequence::NextChild, 0, Qt::Key_Forward, QGuiApplicationPrivate::KB_All},
{QKeySequence::Forward, 0, Qt::SHIFT | Qt::Key_Backspace, QGuiApplicationPrivate::KB_Win},
- {QKeySequence::Delete, 0, Qt::SHIFT | Qt::Key_Backspace, QGuiApplicationPrivate::KB_S60},
{QKeySequence::InsertLineSeparator, 0, Qt::SHIFT | Qt::Key_Return, QGuiApplicationPrivate::KB_All},
{QKeySequence::InsertLineSeparator, 0, Qt::SHIFT | Qt::Key_Enter, QGuiApplicationPrivate::KB_All},
{QKeySequence::Paste, 0, Qt::SHIFT | Qt::Key_Insert, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11},
{QKeySequence::Cut, 0, Qt::SHIFT | Qt::Key_Delete, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11}, //## Check if this should work on mac
- {QKeySequence::SelectStartOfLine, 0, Qt::SHIFT | Qt::Key_Home, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11 | QGuiApplicationPrivate::KB_S60},
+ {QKeySequence::SelectStartOfLine, 0, Qt::SHIFT | Qt::Key_Home, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11},
{QKeySequence::SelectStartOfDocument, 0, Qt::SHIFT | Qt::Key_Home, QGuiApplicationPrivate::KB_Mac},
- {QKeySequence::SelectEndOfLine, 0, Qt::SHIFT | Qt::Key_End, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11 | QGuiApplicationPrivate::KB_S60},
+ {QKeySequence::SelectEndOfLine, 0, Qt::SHIFT | Qt::Key_End, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11},
{QKeySequence::SelectEndOfDocument, 0, Qt::SHIFT | Qt::Key_End, QGuiApplicationPrivate::KB_Mac},
{QKeySequence::SelectPreviousChar, 0, Qt::SHIFT | Qt::Key_Left, QGuiApplicationPrivate::KB_All},
{QKeySequence::SelectPreviousLine, 0, Qt::SHIFT | Qt::Key_Up, QGuiApplicationPrivate::KB_All},
@@ -716,7 +714,7 @@ const QKeyBinding QKeySequencePrivate::keyBindings[] = {
{QKeySequence::Close, 0, Qt::CTRL | Qt::Key_W, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11},
{QKeySequence::Close, 1, Qt::CTRL | Qt::Key_W, QGuiApplicationPrivate::KB_Mac},
{QKeySequence::Cut, 1, Qt::CTRL | Qt::Key_X, QGuiApplicationPrivate::KB_All},
- {QKeySequence::Redo, 1, Qt::CTRL | Qt::Key_Y, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_S60},
+ {QKeySequence::Redo, 1, Qt::CTRL | Qt::Key_Y, QGuiApplicationPrivate::KB_Win},
{QKeySequence::Undo, 1, Qt::CTRL | Qt::Key_Z, QGuiApplicationPrivate::KB_All},
{QKeySequence::Back, 1, Qt::CTRL | Qt::Key_BracketLeft, QGuiApplicationPrivate::KB_Mac},
{QKeySequence::Forward, 1, Qt::CTRL | Qt::Key_BracketRight, QGuiApplicationPrivate::KB_Mac},
@@ -727,15 +725,15 @@ const QKeyBinding QKeySequencePrivate::keyBindings[] = {
{QKeySequence::DeleteStartOfWord, 0, Qt::CTRL | Qt::Key_Backspace, QGuiApplicationPrivate::KB_X11 | QGuiApplicationPrivate::KB_Win},
{QKeySequence::Copy, 0, Qt::CTRL | Qt::Key_Insert, QGuiApplicationPrivate::KB_X11 | QGuiApplicationPrivate::KB_Win},
{QKeySequence::DeleteEndOfWord, 0, Qt::CTRL | Qt::Key_Delete, QGuiApplicationPrivate::KB_X11 | QGuiApplicationPrivate::KB_Win},
- {QKeySequence::MoveToStartOfDocument, 0, Qt::CTRL | Qt::Key_Home, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11 | QGuiApplicationPrivate::KB_S60},
- {QKeySequence::MoveToEndOfDocument, 0, Qt::CTRL | Qt::Key_End, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11 | QGuiApplicationPrivate::KB_S60},
+ {QKeySequence::MoveToStartOfDocument, 0, Qt::CTRL | Qt::Key_Home, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11},
+ {QKeySequence::MoveToEndOfDocument, 0, Qt::CTRL | Qt::Key_End, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11},
{QKeySequence::Back, 0, Qt::CTRL | Qt::Key_Left, QGuiApplicationPrivate::KB_Mac},
- {QKeySequence::MoveToPreviousWord, 0, Qt::CTRL | Qt::Key_Left, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11 | QGuiApplicationPrivate::KB_S60},
+ {QKeySequence::MoveToPreviousWord, 0, Qt::CTRL | Qt::Key_Left, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11},
{QKeySequence::MoveToStartOfLine, 0, Qt::CTRL | Qt::Key_Left, QGuiApplicationPrivate::KB_Mac },
{QKeySequence::MoveToStartOfDocument, 1, Qt::CTRL | Qt::Key_Up, QGuiApplicationPrivate::KB_Mac},
{QKeySequence::Forward, 0, Qt::CTRL | Qt::Key_Right, QGuiApplicationPrivate::KB_Mac},
{QKeySequence::MoveToEndOfLine, 0, Qt::CTRL | Qt::Key_Right, QGuiApplicationPrivate::KB_Mac },
- {QKeySequence::MoveToNextWord, 0, Qt::CTRL | Qt::Key_Right, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11 | QGuiApplicationPrivate::KB_S60},
+ {QKeySequence::MoveToNextWord, 0, Qt::CTRL | Qt::Key_Right, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11},
{QKeySequence::MoveToEndOfDocument, 1, Qt::CTRL | Qt::Key_Down, QGuiApplicationPrivate::KB_Mac},
{QKeySequence::Close, 1, Qt::CTRL | Qt::Key_F4, QGuiApplicationPrivate::KB_Win},
{QKeySequence::Close, 0, Qt::CTRL | Qt::Key_F4, QGuiApplicationPrivate::KB_Mac},
@@ -744,17 +742,17 @@ const QKeyBinding QKeySequencePrivate::keyBindings[] = {
{QKeySequence::FindPrevious, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_G, QGuiApplicationPrivate::KB_Win},
{QKeySequence::AddTab, 1, Qt::CTRL | Qt::SHIFT | Qt::Key_N, QGuiApplicationPrivate::KB_KDE},
{QKeySequence::SaveAs, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_S, QGuiApplicationPrivate::KB_Gnome | QGuiApplicationPrivate::KB_Mac},
- {QKeySequence::Redo, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_Z, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11 | QGuiApplicationPrivate::KB_S60},
+ {QKeySequence::Redo, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_Z, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11},
{QKeySequence::Redo, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_Z, QGuiApplicationPrivate::KB_Mac},
{QKeySequence::PreviousChild, 1, Qt::CTRL | Qt::SHIFT | Qt::Key_Backtab, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11},
{QKeySequence::PreviousChild, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_Backtab, QGuiApplicationPrivate::KB_Mac },//different priority from above
{QKeySequence::Paste, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_Insert, QGuiApplicationPrivate::KB_X11},
- {QKeySequence::SelectStartOfDocument, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_Home, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11 | QGuiApplicationPrivate::KB_S60},
- {QKeySequence::SelectEndOfDocument, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_End, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11 | QGuiApplicationPrivate::KB_S60},
- {QKeySequence::SelectPreviousWord, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_Left, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11 | QGuiApplicationPrivate::KB_S60},
+ {QKeySequence::SelectStartOfDocument, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_Home, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11},
+ {QKeySequence::SelectEndOfDocument, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_End, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11},
+ {QKeySequence::SelectPreviousWord, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_Left, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11},
{QKeySequence::SelectStartOfLine, 1, Qt::CTRL | Qt::SHIFT | Qt::Key_Left, QGuiApplicationPrivate::KB_Mac },
{QKeySequence::SelectStartOfDocument, 1, Qt::CTRL | Qt::SHIFT | Qt::Key_Up, QGuiApplicationPrivate::KB_Mac},
- {QKeySequence::SelectNextWord, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_Right, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11 | QGuiApplicationPrivate::KB_S60},
+ {QKeySequence::SelectNextWord, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_Right, QGuiApplicationPrivate::KB_Win | QGuiApplicationPrivate::KB_X11},
{QKeySequence::SelectEndOfLine, 1, Qt::CTRL | Qt::SHIFT | Qt::Key_Right, QGuiApplicationPrivate::KB_Mac },
{QKeySequence::SelectEndOfDocument, 1, Qt::CTRL | Qt::SHIFT | Qt::Key_Down, QGuiApplicationPrivate::KB_Mac},
{QKeySequence::PreviousChild, 0, Qt::CTRL | Qt::SHIFT | Qt::Key_F6, QGuiApplicationPrivate::KB_Win},
@@ -1040,7 +1038,7 @@ void QKeySequence::setKey(int key, int index)
Returns the number of keys in the key sequence.
The maximum is 4.
*/
-uint QKeySequence::count() const
+int QKeySequence::count() const
{
if (!d->key[0])
return 0;
@@ -1255,10 +1253,21 @@ int QKeySequencePrivate::decodeString(const QString &str, QKeySequence::Sequence
int lastI = 0;
while ((i = sl.indexOf(QLatin1Char('+'), i + 1)) != -1) {
const QString sub = sl.mid(lastI, i - lastI + 1);
- // Just shortcut the check here if we only have one character.
- // Rational: A modifier will contain the name AND +, so longer than 1, a length of 1 is just
- // the remaining part of the shortcut (ei. The 'C' in "Ctrl+C"), so no need to check that.
- if (sub.length() > 1) {
+ // If we get here the shortcuts contains at least one '+'. We break up
+ // along the following strategy:
+ // Meta+Ctrl++ ( "Meta+", "Ctrl+", "+" )
+ // Super+Shift+A ( "Super+", "Shift+" )
+ // 4+3+2=1 ( "4+", "3+" )
+ // In other words, everything we try to handle HAS to be a modifier
+ // except for a single '+' at the end of the string.
+
+ // Only '+' can have length 1.
+ if (sub.length() == 1) {
+ // Make sure we only encounter a single '+' at the end of the accel
+ if (accel.lastIndexOf(QLatin1Char('+')) != accel.length()-1)
+ return Qt::Key_unknown;
+ } else {
+ // Identify the modifier
bool validModifier = false;
for (int j = 0; j < modifs.size(); ++j) {
const QModifKeyName &mkf = modifs.at(j);
@@ -1268,9 +1277,7 @@ int QKeySequencePrivate::decodeString(const QString &str, QKeySequence::Sequence
break; // Shortcut, since if we find an other it would/should just be a dup
}
}
- // We couldn't match the string with a modifier. This is only
- // possible if this part is the key. The key is never followed by a
- // '+'. And if the key is '+' the if() above would have skipped it.
+
if (!validModifier)
return Qt::Key_unknown;
}
@@ -1478,7 +1485,8 @@ QKeySequence::SequenceMatch QKeySequence::matches(const QKeySequence &seq) const
}
-/*!
+/*! \fn QKeySequence::operator QString() const
+
\obsolete
Use toString() instead.
@@ -1487,10 +1495,6 @@ QKeySequence::SequenceMatch QKeySequence::matches(const QKeySequence &seq) const
calling toString(QKeySequence::NativeText). Note that the
result is not platform independent.
*/
-QKeySequence::operator QString() const
-{
- return QKeySequence::toString(QKeySequence::NativeText);
-}
/*!
Returns the key sequence as a QVariant
@@ -1500,18 +1504,12 @@ QKeySequence::operator QVariant() const
return QVariant(QVariant::KeySequence, this);
}
-/*!
+/*! \fn QKeySequence::operator int () const
+
\obsolete
For backward compatibility: returns the first keycode
as integer. If the key sequence is empty, 0 is returned.
*/
-QKeySequence::operator int () const
-{
- if (1 <= count())
- return d->key[0];
- return 0;
-}
-
/*!
Returns a reference to the element at position \a index in the key
diff --git a/src/gui/kernel/qkeysequence.h b/src/gui/kernel/qkeysequence.h
index 1127e8afca..d1e7d06653 100644
--- a/src/gui/kernel/qkeysequence.h
+++ b/src/gui/kernel/qkeysequence.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_SHORTCUT
@@ -154,7 +153,7 @@ public:
QKeySequence(StandardKey key);
~QKeySequence();
- uint count() const; // ### Qt 5: return 'int'
+ int count() const;
bool isEmpty() const;
enum SequenceMatch {
@@ -170,10 +169,11 @@ public:
static QKeySequence mnemonic(const QString &text);
static QList<QKeySequence> keyBindings(StandardKey key);
- // ### Qt 5: kill 'operator QString' - it's evil
- operator QString() const;
+#if QT_DEPRECATED_SINCE(5, 0)
+ QT_DEPRECATED operator QString() const { return toString(QKeySequence::NativeText); }
+ QT_DEPRECATED operator int() const { if (1 <= count()) return operator [](0); return 0; }
+#endif
operator QVariant() const;
- operator int() const;
int operator[](uint i) const;
QKeySequence &operator=(const QKeySequence &other);
#ifdef Q_COMPILER_RVALUE_REFS
diff --git a/src/gui/kernel/qkeysequence_p.h b/src/gui/kernel/qkeysequence_p.h
index 57f6e1927f..68cbb8778b 100644
--- a/src/gui/kernel/qkeysequence_p.h
+++ b/src/gui/kernel/qkeysequence_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qopenglcontext.cpp b/src/gui/kernel/qopenglcontext.cpp
index 93a4b3582b..1b6d1d34c4 100644
--- a/src/gui/kernel/qopenglcontext.cpp
+++ b/src/gui/kernel/qopenglcontext.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -68,6 +68,11 @@ public:
static QThreadStorage<QGuiGLThreadContext *> qwindow_context_storage;
+#ifndef QT_NO_DEBUG
+QHash<QOpenGLContext *, bool> QOpenGLContextPrivate::makeCurrentTracker;
+QMutex QOpenGLContextPrivate::makeCurrentTrackerMutex;
+#endif
+
void QOpenGLContextPrivate::setCurrentContext(QOpenGLContext *context)
{
QGuiGLThreadContext *threadContext = qwindow_context_storage.localData();
@@ -163,6 +168,8 @@ bool QOpenGLContext::create()
Q_D(QOpenGLContext);
d->platformGLContext = QGuiApplicationPrivate::platformIntegration()->createPlatformOpenGLContext(this);
+ if (!d->platformGLContext)
+ return false;
d->platformGLContext->setContext(this);
if (!d->platformGLContext->isSharing())
d->shareContext = 0;
@@ -204,6 +211,10 @@ void QOpenGLContext::destroy()
QOpenGLContext::~QOpenGLContext()
{
destroy();
+
+#ifndef QT_NO_DEBUG
+ QOpenGLContextPrivate::cleanMakeCurrentTracker(this);
+#endif
}
/*!
@@ -230,6 +241,29 @@ QOpenGLFunctions *QOpenGLContext::functions() const
}
/*!
+ Call this to get the default framebuffer object for the current surface.
+
+ On some platforms the default framebuffer object depends on the surface being rendered to,
+ and might be different from 0. Thus, instead of calling glBindFramebuffer(0), you should
+ call glBindFramebuffer(ctx->defaultFramebufferObject()) if you want your application to
+ work across different Qt platforms.
+
+ If you use the glBindFramebuffer() in QOpenGLFunctions you do not have to worry about this,
+ as it automatically binds the current context's defaultFramebufferObject() when 0 is passed.
+*/
+GLuint QOpenGLContext::defaultFramebufferObject() const
+{
+ if (!isValid())
+ return 0;
+
+ Q_D(const QOpenGLContext);
+ if (!d->surface || !d->surface->surfaceHandle())
+ return 0;
+
+ return d->platformGLContext->defaultFramebufferObject(d->surface->surfaceHandle());
+}
+
+/*!
If surface is 0 this is equivalent to calling doneCurrent().
Do not call this function from a different thread than the one the QOpenGLContext instance lives in. If
@@ -254,12 +288,22 @@ bool QOpenGLContext::makeCurrent(QSurface *surface)
if (!surface->surfaceHandle())
return false;
+ if (surface->surfaceType() != QSurface::OpenGLSurface) {
+ qWarning() << "QOpenGLContext::makeBuffers() called with non-opengl surface";
+ return false;
+ }
+
+
if (d->platformGLContext->makeCurrent(surface->surfaceHandle())) {
QOpenGLContextPrivate::setCurrentContext(this);
d->surface = surface;
d->shareGroup->d_func()->deletePendingResources(this);
+#ifndef QT_NO_DEBUG
+ QOpenGLContextPrivate::toggleMakeCurrentTracker(this, true);
+#endif
+
return true;
}
@@ -294,6 +338,17 @@ QSurface *QOpenGLContext::surface() const
}
+/*!
+ Swap the back and front buffers of the given surface.
+
+ Call this to finish a frame of OpenGL rendering, and make sure to
+ call makeCurrent() again before you begin a new frame.
+
+ If you have bound a non-default framebuffer object, you need to
+ use bindDefaultFramebufferObject() to make sure that the default
+ framebuffer object is bound before calling swapBuffers(), as
+ some Qt platforms assume that the default framebuffer object is bound.
+*/
void QOpenGLContext::swapBuffers(QSurface *surface)
{
Q_D(QOpenGLContext);
@@ -305,9 +360,34 @@ void QOpenGLContext::swapBuffers(QSurface *surface)
return;
}
+ if (surface->surfaceType() != QSurface::OpenGLSurface) {
+ qWarning() << "QOpenGLContext::swapBuffers() called with non-opengl surface";
+ return;
+ }
+
QPlatformSurface *surfaceHandle = surface->surfaceHandle();
- if (surfaceHandle)
- d->platformGLContext->swapBuffers(surfaceHandle);
+ if (!surfaceHandle)
+ return;
+
+#if !defined(QT_NO_DEBUG)
+ if (currentContext() != this)
+ qWarning() << "QOpenGLContext::swapBuffers() called with non-current surface";
+ else if (!QOpenGLContextPrivate::toggleMakeCurrentTracker(this, false))
+ qWarning() << "QOpenGLContext::swapBuffers() called without corresponding makeCurrent()";
+
+#ifndef GL_FRAMEBUFFER_BINDING
+#define GL_FRAMEBUFFER_BINDING 0x8CA6
+#endif
+
+ GLint framebufferBinding = 0;
+ glGetIntegerv(GL_FRAMEBUFFER_BINDING, &framebufferBinding);
+
+ GLint platformFramebuffer = GLint(d->platformGLContext->defaultFramebufferObject(surfaceHandle));
+ if (framebufferBinding != platformFramebuffer)
+ qWarning() << "QOpenGLContext::swapBuffers() called with non-default framebuffer object bound";
+#endif
+
+ d->platformGLContext->swapBuffers(surfaceHandle);
}
QFunctionPointer QOpenGLContext::getProcAddress(const QByteArray &procName)
diff --git a/src/gui/kernel/qopenglcontext.h b/src/gui/kernel/qopenglcontext.h
index a8ac39c7d5..52f94a8a10 100644
--- a/src/gui/kernel/qopenglcontext.h
+++ b/src/gui/kernel/qopenglcontext.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,18 +42,25 @@
#ifndef QOPENGLCONTEXT_H
#define QOPENGLCONTEXT_H
+#ifndef QT_NO_OPENGL
+
#include <QtCore/qnamespace.h>
#include <QtCore/QObject>
#include <QtCore/QScopedPointer>
#include <QtGui/QSurfaceFormat>
+#ifdef __GLEW_H__
+#warning qopenglfunctions.h is not compatible with GLEW, GLEW defines will be undefined
+#warning To use GLEW with Qt, do not include <qopengl.h> or <QOpenGLFunctions> after glew.h
+#endif
+
+#include <QtGui/qopengl.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
-
class QOpenGLContextPrivate;
class QOpenGLContextGroupPrivate;
class QOpenGLFunctions;
@@ -102,6 +109,8 @@ public:
QOpenGLContextGroup *shareGroup() const;
QScreen *screen() const;
+ GLuint defaultFramebufferObject() const;
+
bool makeCurrent(QSurface *surface);
void doneCurrent();
@@ -146,4 +155,6 @@ QT_END_NAMESPACE
QT_END_HEADER
+#endif // QT_NO_OPENGL
+
#endif // QGUIGLCONTEXT_H
diff --git a/src/gui/kernel/qopenglcontext_p.h b/src/gui/kernel/qopenglcontext_p.h
index 7040b883bf..7b4e880ade 100644
--- a/src/gui/kernel/qopenglcontext_p.h
+++ b/src/gui/kernel/qopenglcontext_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,11 +47,14 @@
#include <private/qobject_p.h>
#include <qmutex.h>
+#ifndef QT_NO_DEBUG
+#include <QtCore/QHash>
+#endif
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QOpenGLFunctions;
class QOpenGLContext;
@@ -186,7 +189,6 @@ public:
, surface(0)
, functions(0)
, current_fbo(0)
- , default_fbo(0)
, workaround_brokenFBOReadBack(false)
, workaround_brokenTexSubImage(false)
, active_engine(0)
@@ -211,7 +213,6 @@ public:
QOpenGLFunctions *functions;
GLuint current_fbo;
- GLuint default_fbo;
bool workaround_brokenFBOReadBack;
bool workaround_brokenTexSubImage;
@@ -221,6 +222,23 @@ public:
static void setCurrentContext(QOpenGLContext *context);
int maxTextureSize() const { return 1024; }
+
+#if !defined(QT_NO_DEBUG)
+ static bool toggleMakeCurrentTracker(QOpenGLContext *context, bool value)
+ {
+ QMutexLocker locker(&makeCurrentTrackerMutex);
+ bool old = makeCurrentTracker.value(context, false);
+ makeCurrentTracker.insert(context, value);
+ return old;
+ }
+ static void cleanMakeCurrentTracker(QOpenGLContext *context)
+ {
+ QMutexLocker locker(&makeCurrentTrackerMutex);
+ makeCurrentTracker.remove(context);
+ }
+ static QHash<QOpenGLContext *, bool> makeCurrentTracker;
+ static QMutex makeCurrentTrackerMutex;
+#endif
};
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qpalette.cpp b/src/gui/kernel/qpalette.cpp
index 2dd2ef00c5..627731ff20 100644
--- a/src/gui/kernel/qpalette.cpp
+++ b/src/gui/kernel/qpalette.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qpalette.h b/src/gui/kernel/qpalette.h
index d47854df07..cc710fa67a 100644
--- a/src/gui/kernel/qpalette.h
+++ b/src/gui/kernel/qpalette.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPalettePrivate;
class QVariant;
diff --git a/src/gui/kernel/qplatformclipboard_qpa.cpp b/src/gui/kernel/qplatformclipboard_qpa.cpp
index 4d8d65de0a..9e0c60b3f6 100644
--- a/src/gui/kernel/qplatformclipboard_qpa.cpp
+++ b/src/gui/kernel/qplatformclipboard_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qplatformclipboard_qpa.h b/src/gui/kernel/qplatformclipboard_qpa.h
index 643733fdf7..4dd672b21e 100644
--- a/src/gui/kernel/qplatformclipboard_qpa.h
+++ b/src/gui/kernel/qplatformclipboard_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class Q_GUI_EXPORT QPlatformClipboard
{
diff --git a/src/gui/kernel/qplatformcursor_qpa.cpp b/src/gui/kernel/qplatformcursor_qpa.cpp
index a3824381d3..fd7bcdcf18 100644
--- a/src/gui/kernel/qplatformcursor_qpa.cpp
+++ b/src/gui/kernel/qplatformcursor_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenVG module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qplatformcursor_qpa.h b/src/gui/kernel/qplatformcursor_qpa.h
index a2026425db..a8cbb282fa 100644
--- a/src/gui/kernel/qplatformcursor_qpa.h
+++ b/src/gui/kernel/qplatformcursor_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenVG module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
// Cursor graphics management
class Q_GUI_EXPORT QPlatformCursorImage {
diff --git a/src/gui/kernel/qplatformdialoghelper_qpa.cpp b/src/gui/kernel/qplatformdialoghelper_qpa.cpp
new file mode 100644
index 0000000000..385484828a
--- /dev/null
+++ b/src/gui/kernel/qplatformdialoghelper_qpa.cpp
@@ -0,0 +1,556 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** 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 "qplatformdialoghelper_qpa.h"
+
+#include <QtCore/QVariant>
+#include <QtCore/QSharedData>
+#include <QtCore/QSettings>
+#include <QtCore/QHash>
+#include <QtCore/QUrl>
+#include <QtGui/QColor>
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QPlatformDialogHelper
+ \since 5.0
+ \internal
+ \brief The QPlatformDialogHelper class allows for platform-specific customization of dialogs.
+
+*/
+
+/*!
+ \enum QPlatformDialogHelper::StyleHint
+
+ This enum type specifies platform-specific style hints.
+
+ \value SnapToDefaultButton Snap the mouse to the center of the default
+ button. There is corresponding system
+ setting on Windows.
+
+ \sa styleHint()
+*/
+
+QPlatformDialogHelper::QPlatformDialogHelper()
+{
+}
+
+QPlatformDialogHelper::~QPlatformDialogHelper()
+{
+}
+
+QVariant QPlatformDialogHelper::styleHint(StyleHint hint) const
+{
+ return QPlatformDialogHelper::defaultStyleHint(hint);
+}
+
+QVariant QPlatformDialogHelper::defaultStyleHint(QPlatformDialogHelper::StyleHint hint)
+{
+ switch (hint) {
+ case QPlatformDialogHelper::SnapToDefaultButton:
+ return QVariant(false);
+ }
+ return QVariant();
+}
+
+void QPlatformDialogHelper::emitLaunchNativeAppModalPanel()
+{
+ emit launchNativeAppModalPanel();
+}
+
+// Font dialog
+
+class QFontDialogOptionsPrivate : public QSharedData
+{
+public:
+ QFontDialogOptionsPrivate() : options(0) {}
+
+ QFontDialogOptions::FontDialogOptions options;
+ QString windowTitle;
+};
+
+QFontDialogOptions::QFontDialogOptions() : d(new QFontDialogOptionsPrivate)
+{
+}
+
+QFontDialogOptions::QFontDialogOptions(const QFontDialogOptions &rhs) : d(rhs.d)
+{
+}
+
+QFontDialogOptions &QFontDialogOptions::operator=(const QFontDialogOptions &rhs)
+{
+ if (this != &rhs)
+ d = rhs.d;
+ return *this;
+}
+
+QFontDialogOptions::~QFontDialogOptions()
+{
+}
+
+QString QFontDialogOptions::windowTitle() const
+{
+ return d->windowTitle;
+}
+
+void QFontDialogOptions::setWindowTitle(const QString &title)
+{
+ d->windowTitle = title;
+}
+
+void QFontDialogOptions::setOption(QFontDialogOptions::FontDialogOption option, bool on)
+{
+ if (!(d->options & option) != !on)
+ setOptions(d->options ^ option);
+}
+
+bool QFontDialogOptions::testOption(QFontDialogOptions::FontDialogOption option) const
+{
+ return d->options & option;
+}
+
+void QFontDialogOptions::setOptions(FontDialogOptions options)
+{
+ if (options != d->options)
+ d->options = options;
+}
+
+QFontDialogOptions::FontDialogOptions QFontDialogOptions::options() const
+{
+ return d->options;
+}
+
+const QSharedPointer<QFontDialogOptions> &QPlatformFontDialogHelper::options() const
+{
+ return m_options;
+}
+
+void QPlatformFontDialogHelper::setOptions(const QSharedPointer<QFontDialogOptions> &options)
+{
+ m_options = options;
+}
+
+// Color dialog
+
+class QColorDialogStaticData
+{
+public:
+ enum { CustomColorCount = 16, StandardColorCount = 6 * 8 };
+
+ QColorDialogStaticData();
+ inline void readSettings();
+ inline void writeSettings() const;
+
+ QRgb customRgb[CustomColorCount];
+ QRgb standardRgb[StandardColorCount];
+ bool customSet;
+};
+
+QColorDialogStaticData::QColorDialogStaticData() : customSet(false)
+{
+ int i = 0;
+ for (int g = 0; g < 4; ++g)
+ for (int r = 0; r < 4; ++r)
+ for (int b = 0; b < 3; ++b)
+ standardRgb[i++] = qRgb(r * 255 / 3, g * 255 / 3, b * 255 / 2);
+ qFill(customRgb, customRgb + CustomColorCount, 0xffffffff);
+ readSettings();
+}
+
+void QColorDialogStaticData::readSettings()
+{
+#ifndef QT_NO_SETTINGS
+ const QSettings settings(QSettings::UserScope, QStringLiteral("Trolltech"));
+ for (int i = 0; i < int(CustomColorCount); ++i) {
+ const QVariant v = settings.value(QStringLiteral("Qt/customColors/") + QString::number(i));
+ if (v.isValid())
+ customRgb[i] = v.toUInt();
+ }
+#endif
+}
+
+void QColorDialogStaticData::writeSettings() const
+{
+#ifndef QT_NO_SETTINGS
+ if (!customSet) {
+ QSettings settings(QSettings::UserScope, QStringLiteral("Trolltech"));
+ for (int i = 0; i < int(CustomColorCount); ++i)
+ settings.setValue(QStringLiteral("Qt/customColors/") + QString::number(i), customRgb[i]);
+ }
+#endif
+}
+
+Q_GLOBAL_STATIC(QColorDialogStaticData, qColorDialogStaticData)
+
+class QColorDialogOptionsPrivate : public QSharedData
+{
+public:
+ QColorDialogOptionsPrivate() : options(0) {}
+ // Write out settings around destruction of dialogs
+ ~QColorDialogOptionsPrivate() { qColorDialogStaticData()->writeSettings(); }
+
+ QColorDialogOptions::ColorDialogOptions options;
+ QString windowTitle;
+};
+
+QColorDialogOptions::QColorDialogOptions() : d(new QColorDialogOptionsPrivate)
+{
+}
+
+QColorDialogOptions::QColorDialogOptions(const QColorDialogOptions &rhs) : d(rhs.d)
+{
+}
+
+QColorDialogOptions &QColorDialogOptions::operator=(const QColorDialogOptions &rhs)
+{
+ if (this != &rhs)
+ d = rhs.d;
+ return *this;
+}
+
+QColorDialogOptions::~QColorDialogOptions()
+{
+}
+
+QString QColorDialogOptions::windowTitle() const
+{
+ return d->windowTitle;
+}
+
+void QColorDialogOptions::setWindowTitle(const QString &title)
+{
+ d->windowTitle = title;
+}
+
+void QColorDialogOptions::setOption(QColorDialogOptions::ColorDialogOption option, bool on)
+{
+ if (!(d->options & option) != !on)
+ setOptions(d->options ^ option);
+}
+
+bool QColorDialogOptions::testOption(QColorDialogOptions::ColorDialogOption option) const
+{
+ return d->options & option;
+}
+
+void QColorDialogOptions::setOptions(ColorDialogOptions options)
+{
+ if (options != d->options)
+ d->options = options;
+}
+
+QColorDialogOptions::ColorDialogOptions QColorDialogOptions::options() const
+{
+ return d->options;
+}
+
+int QColorDialogOptions::customColorCount()
+{
+ return QColorDialogStaticData::CustomColorCount;
+}
+
+QRgb QColorDialogOptions::customColor(int index)
+{
+ if (uint(index) >= uint(QColorDialogStaticData::CustomColorCount))
+ return qRgb(255, 255, 255);
+ return qColorDialogStaticData()->customRgb[index];
+}
+
+QRgb *QColorDialogOptions::customColors()
+{
+ return qColorDialogStaticData()->customRgb;
+}
+
+void QColorDialogOptions::setCustomColor(int index, QRgb color)
+{
+ if (uint(index) >= uint(QColorDialogStaticData::CustomColorCount))
+ return;
+ qColorDialogStaticData()->customSet;
+ qColorDialogStaticData()->customRgb[index] = color;
+}
+
+QRgb *QColorDialogOptions::standardColors()
+{
+ return qColorDialogStaticData()->standardRgb;
+}
+
+QRgb QColorDialogOptions::standardColor(int index)
+{
+ if (uint(index) >= uint(QColorDialogStaticData::StandardColorCount))
+ return qRgb(255, 255, 255);
+ return qColorDialogStaticData()->standardRgb[index];
+}
+
+void QColorDialogOptions::setStandardColor(int index, QRgb color)
+{
+ if (uint(index) >= uint(QColorDialogStaticData::StandardColorCount))
+ return;
+ qColorDialogStaticData()->standardRgb[index] = color;
+}
+
+const QSharedPointer<QColorDialogOptions> &QPlatformColorDialogHelper::options() const
+{
+ return m_options;
+}
+
+void QPlatformColorDialogHelper::setOptions(const QSharedPointer<QColorDialogOptions> &options)
+{
+ m_options = options;
+}
+
+// File dialog
+
+class QFileDialogOptionsPrivate : public QSharedData
+{
+public:
+ QFileDialogOptionsPrivate() : options(0),
+ viewMode(QFileDialogOptions::Detail),
+ fileMode(QFileDialogOptions::AnyFile),
+ acceptMode(QFileDialogOptions::AcceptOpen),
+ filters(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs)
+ {}
+
+ QFileDialogOptions::FileDialogOptions options;
+ QString windowTitle;
+
+ QFileDialogOptions::ViewMode viewMode;
+ QFileDialogOptions::FileMode fileMode;
+ QFileDialogOptions::AcceptMode acceptMode;
+ QString labels[QFileDialogOptions::DialogLabelCount];
+ QDir::Filters filters;
+ QList<QUrl> sidebarUrls;
+ QStringList nameFilters;
+ QString defaultSuffix;
+ QStringList history;
+ QString initialDirectory;
+ QString initiallySelectedNameFilter;
+ QStringList initiallySelectedFiles;
+};
+
+QFileDialogOptions::QFileDialogOptions() : d(new QFileDialogOptionsPrivate)
+{
+}
+
+QFileDialogOptions::QFileDialogOptions(const QFileDialogOptions &rhs) : d(rhs.d)
+{
+}
+
+QFileDialogOptions &QFileDialogOptions::operator=(const QFileDialogOptions &rhs)
+{
+ if (this != &rhs)
+ d = rhs.d;
+ return *this;
+}
+
+QFileDialogOptions::~QFileDialogOptions()
+{
+}
+
+QString QFileDialogOptions::windowTitle() const
+{
+ return d->windowTitle;
+}
+
+void QFileDialogOptions::setWindowTitle(const QString &title)
+{
+ d->windowTitle = title;
+}
+
+void QFileDialogOptions::setOption(QFileDialogOptions::FileDialogOption option, bool on)
+{
+ if (!(d->options & option) != !on)
+ setOptions(d->options ^ option);
+}
+
+bool QFileDialogOptions::testOption(QFileDialogOptions::FileDialogOption option) const
+{
+ return d->options & option;
+}
+
+void QFileDialogOptions::setOptions(FileDialogOptions options)
+{
+ if (options != d->options)
+ d->options = options;
+}
+
+QFileDialogOptions::FileDialogOptions QFileDialogOptions::options() const
+{
+ return d->options;
+}
+
+QDir::Filters QFileDialogOptions::filter() const
+{
+ return d->filters;
+}
+
+void QFileDialogOptions::setFilter(QDir::Filters filters)
+{
+ d->filters = filters;
+}
+
+void QFileDialogOptions::setViewMode(QFileDialogOptions::ViewMode mode)
+{
+ d->viewMode = mode;
+}
+
+QFileDialogOptions::ViewMode QFileDialogOptions::viewMode() const
+{
+ return d->viewMode;
+}
+
+void QFileDialogOptions::setFileMode(QFileDialogOptions::FileMode mode)
+{
+ d->fileMode = mode;
+}
+
+QFileDialogOptions::FileMode QFileDialogOptions::fileMode() const
+{
+ return d->fileMode;
+}
+
+void QFileDialogOptions::setAcceptMode(QFileDialogOptions::AcceptMode mode)
+{
+ d->acceptMode = mode;
+}
+
+QFileDialogOptions::AcceptMode QFileDialogOptions::acceptMode() const
+{
+ return d->acceptMode;
+}
+
+void QFileDialogOptions::setSidebarUrls(const QList<QUrl> &urls)
+{
+ d->sidebarUrls = urls;
+}
+
+QList<QUrl> QFileDialogOptions::sidebarUrls() const
+{
+ return d->sidebarUrls;
+}
+
+void QFileDialogOptions::setNameFilters(const QStringList &filters)
+{
+ d->nameFilters = filters;
+}
+
+QStringList QFileDialogOptions::nameFilters() const
+{
+ return d->nameFilters;
+}
+
+void QFileDialogOptions::setDefaultSuffix(const QString &suffix)
+{
+ d->defaultSuffix = suffix;
+}
+
+QString QFileDialogOptions::defaultSuffix() const
+{
+ return d->defaultSuffix;
+}
+
+void QFileDialogOptions::setHistory(const QStringList &paths)
+{
+ d->history = paths;
+}
+
+QStringList QFileDialogOptions::history() const
+{
+ return d->history;
+}
+
+void QFileDialogOptions::setLabelText(QFileDialogOptions::DialogLabel label, const QString &text)
+{
+ if (label >= 0 && label < DialogLabelCount)
+ d->labels[label] = text;
+}
+
+QString QFileDialogOptions::labelText(QFileDialogOptions::DialogLabel label) const
+{
+ return (label >= 0 && label < DialogLabelCount) ? d->labels[label] : QString();
+}
+
+bool QFileDialogOptions::isLabelExplicitlySet(DialogLabel label)
+{
+ return label >= 0 && label < DialogLabelCount && !d->labels[label].isEmpty();
+}
+
+QString QFileDialogOptions::initialDirectory() const
+{
+ return d->initialDirectory;
+}
+
+void QFileDialogOptions::setInitialDirectory(const QString &directory)
+{
+ d->initialDirectory = directory;
+}
+
+QString QFileDialogOptions::initiallySelectedNameFilter() const
+{
+ return d->initiallySelectedNameFilter;
+}
+
+void QFileDialogOptions::setInitiallySelectedNameFilter(const QString &filter)
+{
+ d->initiallySelectedNameFilter = filter;
+}
+
+QStringList QFileDialogOptions::initiallySelectedFiles() const
+{
+ return d->initiallySelectedFiles;
+}
+
+void QFileDialogOptions::setInitiallySelectedFiles(const QStringList &files)
+{
+ d->initiallySelectedFiles = files;
+}
+
+const QSharedPointer<QFileDialogOptions> &QPlatformFileDialogHelper::options() const
+{
+ return m_options;
+}
+
+void QPlatformFileDialogHelper::setOptions(const QSharedPointer<QFileDialogOptions> &options)
+{
+ m_options = options;
+}
+
+QT_END_NAMESPACE
diff --git a/src/gui/kernel/qplatformdialoghelper_qpa.h b/src/gui/kernel/qplatformdialoghelper_qpa.h
new file mode 100644
index 0000000000..5fdffae5cb
--- /dev/null
+++ b/src/gui/kernel/qplatformdialoghelper_qpa.h
@@ -0,0 +1,314 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** 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$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMDIALOGHELPER_H
+#define QPLATFORMDIALOGHELPER_H
+
+#include <QtCore/QtGlobal>
+#include <QtCore/QObject>
+#include <QtCore/QList>
+#include <QtCore/QSharedDataPointer>
+#include <QtCore/QSharedPointer>
+#include <QtCore/QDir>
+#include <QtGui/QRgb>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+
+class QString;
+class QColor;
+class QFont;
+class QWindow;
+class QVariant;
+class QUrl;
+class QColorDialogOptionsPrivate;
+class QFontDialogOptionsPrivate;
+class QFileDialogOptionsPrivate;
+
+class Q_GUI_EXPORT QPlatformDialogHelper : public QObject
+{
+ Q_OBJECT
+public:
+ enum StyleHint {
+ SnapToDefaultButton
+ };
+ enum DialogCode { Rejected, Accepted };
+ enum ShowFlag {
+ ShowModal = 0x00000001
+ };
+
+ Q_DECLARE_FLAGS(ShowFlags, ShowFlag)
+
+ QPlatformDialogHelper();
+ virtual ~QPlatformDialogHelper();
+
+ virtual QVariant styleHint(StyleHint hint) const;
+
+ virtual void platformNativeDialogModalHelp() = 0;
+ virtual void _q_platformRunNativeAppModalPanel() = 0;
+
+ virtual void deleteNativeDialog_sys() = 0;
+ virtual bool show_sys(ShowFlags showFlags,
+ Qt::WindowFlags windowFlags,
+ QWindow *parent) = 0;
+ virtual void hide_sys() = 0;
+
+ virtual DialogCode dialogResultCode_sys() = 0;
+
+ static QVariant defaultStyleHint(QPlatformDialogHelper::StyleHint hint);
+
+Q_SIGNALS:
+ void launchNativeAppModalPanel();
+ void accept();
+ void reject();
+
+protected Q_SLOTS:
+ void emitLaunchNativeAppModalPanel();
+};
+
+class Q_GUI_EXPORT QColorDialogOptions
+{
+public:
+ enum ColorDialogOption {
+ ShowAlphaChannel = 0x00000001,
+ NoButtons = 0x00000002,
+ DontUseNativeDialog = 0x00000004
+ };
+
+ Q_DECLARE_FLAGS(ColorDialogOptions, ColorDialogOption)
+
+ QColorDialogOptions();
+ QColorDialogOptions(const QColorDialogOptions &rhs);
+ QColorDialogOptions &operator=(const QColorDialogOptions &rhs);
+ ~QColorDialogOptions();
+
+ QString windowTitle() const;
+ void setWindowTitle(const QString &);
+
+ void setOption(ColorDialogOption option, bool on = true);
+ bool testOption(ColorDialogOption option) const;
+ void setOptions(ColorDialogOptions options);
+ ColorDialogOptions options() const;
+
+ static int customColorCount();
+ static QRgb customColor(int index);
+ static QRgb *customColors();
+ static void setCustomColor(int index, QRgb color);
+
+ static QRgb *standardColors();
+ static QRgb standardColor(int index);
+ static void setStandardColor(int index, QRgb color);
+
+private:
+ QSharedDataPointer<QColorDialogOptionsPrivate> d;
+};
+
+class Q_GUI_EXPORT QPlatformColorDialogHelper : public QPlatformDialogHelper
+{
+ Q_OBJECT
+public:
+ const QSharedPointer<QColorDialogOptions> &options() const;
+ void setOptions(const QSharedPointer<QColorDialogOptions> &options);
+
+ virtual void setCurrentColor_sys(const QColor &) = 0;
+ virtual QColor currentColor_sys() const = 0;
+
+Q_SIGNALS:
+ void currentColorChanged(const QColor &color);
+ void colorSelected(const QColor &color);
+
+private:
+ QSharedPointer<QColorDialogOptions> m_options;
+};
+
+class Q_GUI_EXPORT QFontDialogOptions
+{
+public:
+ enum FontDialogOption {
+ NoButtons = 0x00000001,
+ DontUseNativeDialog = 0x00000002
+ };
+
+ Q_DECLARE_FLAGS(FontDialogOptions, FontDialogOption)
+
+ QFontDialogOptions();
+ QFontDialogOptions(const QFontDialogOptions &rhs);
+ QFontDialogOptions &operator=(const QFontDialogOptions &rhs);
+ ~QFontDialogOptions();
+
+ QString windowTitle() const;
+ void setWindowTitle(const QString &);
+
+ void setOption(FontDialogOption option, bool on = true);
+ bool testOption(FontDialogOption option) const;
+ void setOptions(FontDialogOptions options);
+ FontDialogOptions options() const;
+
+private:
+ QSharedDataPointer<QFontDialogOptionsPrivate> d;
+};
+
+class Q_GUI_EXPORT QPlatformFontDialogHelper : public QPlatformDialogHelper
+{
+ Q_OBJECT
+public:
+ virtual void setCurrentFont_sys(const QFont &) = 0;
+ virtual QFont currentFont_sys() const = 0;
+
+ const QSharedPointer<QFontDialogOptions> &options() const;
+ void setOptions(const QSharedPointer<QFontDialogOptions> &options);
+
+Q_SIGNALS:
+ void currentFontChanged(const QFont &font);
+ void fontSelected(const QFont &font);
+
+private:
+ QSharedPointer<QFontDialogOptions> m_options;
+};
+
+class Q_GUI_EXPORT QFileDialogOptions
+{
+public:
+ enum ViewMode { Detail, List };
+ enum FileMode { AnyFile, ExistingFile, Directory, ExistingFiles, DirectoryOnly };
+ enum AcceptMode { AcceptOpen, AcceptSave };
+ enum DialogLabel { LookIn, FileName, FileType, Accept, Reject, DialogLabelCount };
+
+ enum FileDialogOption
+ {
+ ShowDirsOnly = 0x00000001,
+ DontResolveSymlinks = 0x00000002,
+ DontConfirmOverwrite = 0x00000004,
+ DontUseSheet = 0x00000008,
+ DontUseNativeDialog = 0x00000010,
+ ReadOnly = 0x00000020,
+ HideNameFilterDetails = 0x00000040
+ };
+ Q_DECLARE_FLAGS(FileDialogOptions, FileDialogOption)
+
+ QFileDialogOptions();
+ QFileDialogOptions(const QFileDialogOptions &rhs);
+ QFileDialogOptions &operator=(const QFileDialogOptions &rhs);
+ ~QFileDialogOptions();
+
+ QString windowTitle() const;
+ void setWindowTitle(const QString &);
+
+ void setOption(FileDialogOption option, bool on = true);
+ bool testOption(FileDialogOption option) const;
+ void setOptions(FileDialogOptions options);
+ FileDialogOptions options() const;
+
+ QDir::Filters filter() const;
+ void setFilter(QDir::Filters filters);
+
+ void setViewMode(ViewMode mode);
+ ViewMode viewMode() const;
+
+ void setFileMode(FileMode mode);
+ FileMode fileMode() const;
+
+ void setAcceptMode(AcceptMode mode);
+ AcceptMode acceptMode() const;
+
+ void setSidebarUrls(const QList<QUrl> &urls);
+ QList<QUrl> sidebarUrls() const;
+
+ void setNameFilters(const QStringList &filters);
+ QStringList nameFilters() const;
+
+ void setDefaultSuffix(const QString &suffix);
+ QString defaultSuffix() const;
+
+ void setHistory(const QStringList &paths);
+ QStringList history() const;
+
+ void setLabelText(DialogLabel label, const QString &text);
+ QString labelText(DialogLabel label) const;
+ bool isLabelExplicitlySet(DialogLabel label);
+
+ QString initialDirectory() const;
+ void setInitialDirectory(const QString &);
+
+ QString initiallySelectedNameFilter() const;
+ void setInitiallySelectedNameFilter(const QString &);
+
+ QStringList initiallySelectedFiles() const;
+ void setInitiallySelectedFiles(const QStringList &);
+
+private:
+ QSharedDataPointer<QFileDialogOptionsPrivate> d;
+};
+
+class Q_GUI_EXPORT QPlatformFileDialogHelper : public QPlatformDialogHelper
+{
+ Q_OBJECT
+public:
+ virtual bool defaultNameFilterDisables() const = 0;
+ virtual void setDirectory_sys(const QString &directory) = 0;
+ virtual QString directory_sys() const = 0;
+ virtual void selectFile_sys(const QString &filename) = 0;
+ virtual QStringList selectedFiles_sys() const = 0;
+ virtual void setFilter_sys() = 0;
+ virtual void selectNameFilter_sys(const QString &filter) = 0;
+ virtual QString selectedNameFilter_sys() const = 0;
+
+ const QSharedPointer<QFileDialogOptions> &options() const;
+ void setOptions(const QSharedPointer<QFileDialogOptions> &options);
+
+Q_SIGNALS:
+ void fileSelected(const QString &file);
+ void filesSelected(const QStringList &files);
+ void currentChanged(const QString &path);
+ void directoryEntered(const QString &directory);
+ void filterSelected(const QString &filter);
+
+private:
+ QSharedPointer<QFileDialogOptions> m_options;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QPLATFORMDIALOGHELPER_H
diff --git a/src/gui/kernel/qplatformdrag_qpa.h b/src/gui/kernel/qplatformdrag_qpa.h
index fb71f29de9..0c215071d3 100644
--- a/src/gui/kernel/qplatformdrag_qpa.h
+++ b/src/gui/kernel/qplatformdrag_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QMimeData;
class QMouseEvent;
diff --git a/src/gui/kernel/qplatforminputcontext_qpa.cpp b/src/gui/kernel/qplatforminputcontext_qpa.cpp
index 1e82507653..ee18f3ebd1 100644
--- a/src/gui/kernel/qplatforminputcontext_qpa.cpp
+++ b/src/gui/kernel/qplatforminputcontext_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -68,7 +68,7 @@ QT_BEGIN_NAMESPACE
QPlatformInputContext provides an interface the actual input methods
can derive from by reimplementing methods.
- \sa QInputPanel
+ \sa QInputMethod
*/
/*!
@@ -94,7 +94,7 @@ bool QPlatformInputContext::isValid() const
}
/*!
- Method to be called when input method needs to be reset. Called by QInputPanel::reset().
+ Method to be called when input method needs to be reset. Called by QInputMethod::reset().
No further QInputMethodEvents should be sent as response.
*/
void QPlatformInputContext::reset()
@@ -106,7 +106,7 @@ void QPlatformInputContext::commit()
}
/*!
- Notification on editor updates. Called by QInputPanel::update().
+ Notification on editor updates. Called by QInputMethod::update().
*/
void QPlatformInputContext::update(Qt::InputMethodQueries)
{
@@ -117,12 +117,12 @@ void QPlatformInputContext::update(Qt::InputMethodQueries)
the user. Input methods often use this information to offer more word
suggestions to the user.
*/
-void QPlatformInputContext::invokeAction(QInputPanel::Action action, int cursorPosition)
+void QPlatformInputContext::invokeAction(QInputMethod::Action action, int cursorPosition)
{
Q_UNUSED(cursorPosition)
// Default behavior for simple ephemeral input contexts. Some
// complex input contexts should not be reset here.
- if (action == QInputPanel::Click)
+ if (action == QInputMethod::Click)
reset();
}
@@ -148,17 +148,17 @@ QRectF QPlatformInputContext::keyboardRect() const
}
/*!
- Active QPlatformInputContext is responsible for providing keyboardRectangle property to QInputPanel.
+ Active QPlatformInputContext is responsible for providing keyboardRectangle property to QInputMethod.
In addition of providing the value in keyboardRect function, it also needs to call this emit
function whenever the property changes.
*/
void QPlatformInputContext::emitKeyboardRectChanged()
{
- emit qApp->inputPanel()->keyboardRectangleChanged();
+ emit qApp->inputMethod()->keyboardRectangleChanged();
}
/*!
- This function can be reimplemented to return true whenever input panel is animating
+ This function can be reimplemented to return true whenever input method is animating
shown or hidden. Default implementation returns false.
*/
bool QPlatformInputContext::isAnimating() const
@@ -167,13 +167,13 @@ bool QPlatformInputContext::isAnimating() const
}
/*!
- Active QPlatformInputContext is responsible for providing animating property to QInputPanel.
+ Active QPlatformInputContext is responsible for providing animating property to QInputMethod.
In addition of providing the value in isAnimation function, it also needs to call this emit
function whenever the property changes.
*/
void QPlatformInputContext::emitAnimatingChanged()
{
- emit qApp->inputPanel()->animatingChanged();
+ emit qApp->inputMethod()->animatingChanged();
}
/*!
@@ -199,13 +199,13 @@ bool QPlatformInputContext::isInputPanelVisible() const
}
/*!
- Active QPlatformInputContext is responsible for providing visible property to QInputPanel.
+ Active QPlatformInputContext is responsible for providing visible property to QInputMethod.
In addition of providing the value in isInputPanelVisible function, it also needs to call this emit
function whenever the property changes.
*/
void QPlatformInputContext::emitInputPanelVisibleChanged()
{
- emit qApp->inputPanel()->visibleChanged();
+ emit qApp->inputMethod()->visibleChanged();
}
QLocale QPlatformInputContext::locale() const
@@ -215,7 +215,7 @@ QLocale QPlatformInputContext::locale() const
void QPlatformInputContext::emitLocaleChanged()
{
- emit qApp->inputPanel()->localeChanged();
+ emit qApp->inputMethod()->localeChanged();
}
Qt::LayoutDirection QPlatformInputContext::inputDirection() const
@@ -225,7 +225,7 @@ Qt::LayoutDirection QPlatformInputContext::inputDirection() const
void QPlatformInputContext::emitInputDirectionChanged(Qt::LayoutDirection newDirection)
{
- emit qApp->inputPanel()->inputDirectionChanged(newDirection);
+ emit qApp->inputMethod()->inputDirectionChanged(newDirection);
}
diff --git a/src/gui/kernel/qplatforminputcontext_qpa.h b/src/gui/kernel/qplatforminputcontext_qpa.h
index 463238f336..77c3811d95 100644
--- a/src/gui/kernel/qplatforminputcontext_qpa.h
+++ b/src/gui/kernel/qplatforminputcontext_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QWindow;
class QMouseEvent;
diff --git a/src/gui/kernel/qplatformintegration_qpa.cpp b/src/gui/kernel/qplatformintegration_qpa.cpp
index 23ecf3add4..e867e4e588 100644
--- a/src/gui/kernel/qplatformintegration_qpa.cpp
+++ b/src/gui/kernel/qplatformintegration_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -172,6 +172,27 @@ QPlatformNativeInterface * QPlatformIntegration::nativeInterface() const
*/
/*!
+ \enum QPlatformIntegration::Capability
+
+ Capabilities are used to determing specific features of a platform integration
+
+ \value ThreadedPixmaps The platform uses a pixmap implementation that is reentrant
+ and can be used from multiple threads, like the raster paint engine and QImage based
+ pixmaps.
+
+ \value OpenGL The platform supports OpenGL
+
+ \value ThreadedOpenGL The platform supports using OpenGL outside the GUI thread.
+
+ \value SharedGraphicsCache The platform supports a shared graphics cache
+
+ \value BufferQueueingOpenGL The OpenGL implementation on the platform will queue
+ up buffers when swapBuffers() is called and block only when its buffer pipeline
+ is full, rather than block immediately.
+ */
+
+
+/*!
\fn QAbstractEventDispatcher *QPlatformIntegration::guiThreadEventDispatcher() const = 0
@@ -202,6 +223,17 @@ QPlatformOpenGLContext *QPlatformIntegration::createPlatformOpenGLContext(QOpenG
}
/*!
+ Factory function for QPlatformSharedGraphicsCache. This function will return 0 if the platform
+ integration does not support any shared graphics cache mechanism for the given \a cacheId.
+*/
+QPlatformSharedGraphicsCache *QPlatformIntegration::createPlatformSharedGraphicsCache(const char *cacheId) const
+{
+ qWarning("This plugin does not support createPlatformSharedGraphicsBuffer for cacheId: %s!",
+ cacheId);
+ return 0;
+}
+
+/*!
Returns the platforms input context.
The default implementation returns 0, implying no input method support.
diff --git a/src/gui/kernel/qplatformintegration_qpa.h b/src/gui/kernel/qplatformintegration_qpa.h
index 3975d82288..efaf495b81 100644
--- a/src/gui/kernel/qplatformintegration_qpa.h
+++ b/src/gui/kernel/qplatformintegration_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPlatformWindow;
class QWindow;
@@ -65,6 +64,8 @@ class QAbstractEventDispatcher;
class QPlatformInputContext;
class QPlatformAccessibility;
class QPlatformTheme;
+class QPlatformDialogHelper;
+class QPlatformSharedGraphicsCache;
class Q_GUI_EXPORT QPlatformIntegration
{
@@ -72,7 +73,10 @@ public:
enum Capability {
ThreadedPixmaps = 1,
OpenGL = 2,
- ThreadedOpenGL = 3
+ ThreadedOpenGL = 3,
+ SharedGraphicsCache = 4,
+ BufferQueueingOpenGL = 5
+
};
virtual ~QPlatformIntegration() { }
@@ -83,6 +87,7 @@ public:
virtual QPlatformWindow *createPlatformWindow(QWindow *window) const = 0;
virtual QPlatformBackingStore *createPlatformBackingStore(QWindow *window) const = 0;
virtual QPlatformOpenGLContext *createPlatformOpenGLContext(QOpenGLContext *context) const;
+ virtual QPlatformSharedGraphicsCache *createPlatformSharedGraphicsCache(const char *cacheId) const;
// Event dispatcher:
virtual QAbstractEventDispatcher *guiThreadEventDispatcher() const = 0;
diff --git a/src/gui/kernel/qplatformintegrationfactory_qpa.cpp b/src/gui/kernel/qplatformintegrationfactory_qpa.cpp
index 7f2260b5f6..a84c243355 100644
--- a/src/gui/kernel/qplatformintegrationfactory_qpa.cpp
+++ b/src/gui/kernel/qplatformintegrationfactory_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qplatformintegrationfactory_qpa_p.h b/src/gui/kernel/qplatformintegrationfactory_qpa_p.h
index 189b352139..4aae7898fa 100644
--- a/src/gui/kernel/qplatformintegrationfactory_qpa_p.h
+++ b/src/gui/kernel/qplatformintegrationfactory_qpa_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPlatformIntegration;
diff --git a/src/gui/kernel/qplatformintegrationplugin_qpa.cpp b/src/gui/kernel/qplatformintegrationplugin_qpa.cpp
index a57b980ea3..7bd1caa1d3 100644
--- a/src/gui/kernel/qplatformintegrationplugin_qpa.cpp
+++ b/src/gui/kernel/qplatformintegrationplugin_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qplatformintegrationplugin_qpa.h b/src/gui/kernel/qplatformintegrationplugin_qpa.h
index f53d66d1c8..84c2567bbd 100644
--- a/src/gui/kernel/qplatformintegrationplugin_qpa.h
+++ b/src/gui/kernel/qplatformintegrationplugin_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,7 +60,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPlatformIntegration;
diff --git a/src/gui/kernel/qplatformnativeinterface_qpa.cpp b/src/gui/kernel/qplatformnativeinterface_qpa.cpp
index f9ddd1f72a..7237849011 100644
--- a/src/gui/kernel/qplatformnativeinterface_qpa.cpp
+++ b/src/gui/kernel/qplatformnativeinterface_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -106,4 +106,51 @@ void QPlatformNativeInterface::setWindowProperty(QPlatformWindow *window, const
Q_UNUSED(value);
}
+/*!
+ \typedef QPlatformNativeInterface::EventFilter
+ \since 5.0
+
+ A function with the following signature that can be used as an
+ event filter:
+
+ \code
+ bool myEventFilter(void *message, long *result);
+ \endcode
+
+ \sa setEventFilter()
+*/
+
+/*!
+ \fn EventFilter QPlatformNativeInterface::setEventFilter(const QByteArray &eventType, EventFilter filter)
+ \since 5.0
+
+ Replaces the event filter function for the native interface with
+ \a filter and returns the pointer to the replaced event filter
+ function. Only the current event filter function is called. If you
+ want to use both filter functions, save the replaced EventFilter
+ in a place where you can call it from.
+
+ The event filter function set here is called for all messages
+ received from the platform if they are given type \eventType.
+ It is \i not called for messages that are not meant for Qt objects.
+
+ The type of event is specific to the platform plugin chosen at run-time.
+
+ The event filter function should return \c true if the message should
+ be filtered, (i.e. stopped). It should return \c false to allow
+ processing the message to continue.
+
+ By default, no event filter function is set. For example, this function
+ returns a null EventFilter the first time it is called.
+
+ \note The filter function here receives native messages,
+ for example, MSG or XEvent structs. It is called by the platform plugin.
+*/
+QPlatformNativeInterface::EventFilter QPlatformNativeInterface::setEventFilter(const QByteArray &eventType, QPlatformNativeInterface::EventFilter filter)
+{
+ Q_UNUSED(eventType);
+ Q_UNUSED(filter);
+ return 0;
+}
+
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qplatformnativeinterface_qpa.h b/src/gui/kernel/qplatformnativeinterface_qpa.h
index 47e2f82810..b25ebf0fe9 100644
--- a/src/gui/kernel/qplatformnativeinterface_qpa.h
+++ b/src/gui/kernel/qplatformnativeinterface_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QOpenGLContext;
class QWindow;
@@ -70,6 +69,9 @@ public:
virtual QVariant windowProperty(QPlatformWindow *window, const QString &name, const QVariant &defaultValue) const;
virtual void setWindowProperty(QPlatformWindow *window, const QString &name, const QVariant &value);
+ typedef bool (*EventFilter)(void *message, long *result);
+ virtual EventFilter setEventFilter(const QByteArray &eventType, EventFilter filter);
+
Q_SIGNALS:
void windowPropertyChanged(QPlatformWindow *window, const QString &propertyName);
};
diff --git a/src/gui/kernel/qplatformopenglcontext_qpa.cpp b/src/gui/kernel/qplatformopenglcontext_qpa.cpp
index 7c5e8245df..33adc26482 100644
--- a/src/gui/kernel/qplatformopenglcontext_qpa.cpp
+++ b/src/gui/kernel/qplatformopenglcontext_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,12 +34,15 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "qplatformopenglcontext_qpa.h"
+#include <QOpenGLFunctions>
+
QT_BEGIN_NAMESPACE
/*!
@@ -94,6 +96,16 @@ QPlatformOpenGLContext::~QPlatformOpenGLContext()
{
}
+/*!
+ Reimplement in subclass if your platform uses framebuffer objects for surfaces.
+
+ The default implementation returns 0.
+*/
+GLuint QPlatformOpenGLContext::defaultFramebufferObject(QPlatformSurface *) const
+{
+ return 0;
+}
+
QOpenGLContext *QPlatformOpenGLContext::context() const
{
Q_D(const QPlatformOpenGLContext);
diff --git a/src/gui/kernel/qplatformopenglcontext_qpa.h b/src/gui/kernel/qplatformopenglcontext_qpa.h
index ac5cf969d9..17d4e96f8e 100644
--- a/src/gui/kernel/qplatformopenglcontext_qpa.h
+++ b/src/gui/kernel/qplatformopenglcontext_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -45,12 +45,12 @@
#include <QtCore/qnamespace.h>
#include <QtGui/qsurfaceformat.h>
#include <QtGui/qwindow.h>
+#include <QtGui/qopengl.h>
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPlatformOpenGLContextPrivate;
@@ -65,6 +65,8 @@ public:
virtual void swapBuffers(QPlatformSurface *surface) = 0;
+ virtual GLuint defaultFramebufferObject(QPlatformSurface *surface) const;
+
virtual bool makeCurrent(QPlatformSurface *surface) = 0;
virtual void doneCurrent() = 0;
diff --git a/src/gui/kernel/qplatformscreen_qpa.cpp b/src/gui/kernel/qplatformscreen_qpa.cpp
index 26c685ff1a..b8f1430d1b 100644
--- a/src/gui/kernel/qplatformscreen_qpa.cpp
+++ b/src/gui/kernel/qplatformscreen_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -160,36 +160,15 @@ QDpi QPlatformScreen::logicalDpi() const
}
/*!
- Reimplement this function in subclass to return the primary orientation
- of the screen, i.e. the orientation the display controller or equivalent
- expects.
-
- The default implementation returns Qt::PortraitOrientation if the
- geometry's height is greater or Qt::LandscapeOrientation if the geometry's
- width is greater.
-*/
-Qt::ScreenOrientation QPlatformScreen::primaryOrientation() const
-{
- return geometry().height() > geometry().width() ? Qt::PortraitOrientation :
- Qt::LandscapeOrientation;
-}
-
-/*!
Reimplement this function in subclass to return the current orientation
of the screen, for example based on accelerometer data to determine
- the physical screen orientation.
-
- The current orientation is only a hint to the application saying
- what the preferred application orientation should be, the application
- is free to limit itself to a certain set of supported orientations.
-
- The default implementation returns the same as primaryOrientation().
+ the device orientation.
- \sa primaryOrientation()
+ The default implementation returns Qt::PrimaryOrientation.
*/
-Qt::ScreenOrientation QPlatformScreen::currentOrientation() const
+Qt::ScreenOrientation QPlatformScreen::orientation() const
{
- return primaryOrientation();
+ return Qt::PrimaryOrientation;
}
QPlatformScreen * QPlatformScreen::platformScreenForWindow(const QWindow *window)
diff --git a/src/gui/kernel/qplatformscreen_qpa.h b/src/gui/kernel/qplatformscreen_qpa.h
index 586a29279c..e4b9b762b1 100644
--- a/src/gui/kernel/qplatformscreen_qpa.h
+++ b/src/gui/kernel/qplatformscreen_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -58,7 +58,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPlatformBackingStore;
class QPlatformOpenGLContext;
@@ -99,8 +98,7 @@ public:
virtual QSizeF physicalSize() const;
virtual QDpi logicalDpi() const;
- virtual Qt::ScreenOrientation currentOrientation() const;
- virtual Qt::ScreenOrientation primaryOrientation() const;
+ virtual Qt::ScreenOrientation orientation() const;
virtual QWindow *topLevelAt(const QPoint &point) const;
virtual QList<QPlatformScreen *> virtualSiblings() const;
diff --git a/src/gui/kernel/qplatformscreen_qpa_p.h b/src/gui/kernel/qplatformscreen_qpa_p.h
index 67c222bdf3..ced66be8d7 100644
--- a/src/gui/kernel/qplatformscreen_qpa_p.h
+++ b/src/gui/kernel/qplatformscreen_qpa_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qplatformsharedgraphicscache_qpa.cpp b/src/gui/kernel/qplatformsharedgraphicscache_qpa.cpp
new file mode 100644
index 0000000000..539bb1458f
--- /dev/null
+++ b/src/gui/kernel/qplatformsharedgraphicscache_qpa.cpp
@@ -0,0 +1,212 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** 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 "qplatformsharedgraphicscache_qpa.h"
+
+QT_BEGIN_NAMESPACE
+
+/*!
+ \class QPlatformSharedGraphicsCache
+ \since 5.0
+ \internal
+ \preliminary
+ \ingroup qpa
+ \brief The QPlatformSharedGraphicsCache is an abstraction of a cross-process graphics cache.
+
+ If supported, it is possible to retrieve a QPlatformSharedGraphicsCache object from the
+ platform integration. This is typically used to store graphical items which should be shared
+ between several processes.
+
+ Items are requested from the cache by calling requestItems(). If the cache contains the
+ requested items in the requested cache, the itemsAvailable() signal is emitted with the ID of
+ the graphical buffer and each item's coordinates inside the buffer. Before requesting items
+ from a cache, the user must call ensureCacheInitialized() to set the correct parameters for
+ the cache.
+
+ If the cache does not yet contain the requested items, it will emit a similar itemsMissing()
+ signal. The client can then call updateItems() with rasterizations of the items and they will be
+ entered into the shared cache. As the items are rendered into the cache, itemsAvailable() signals
+ will be emitted for each of the items which have previously been requested and which have not
+ yet been reported as ready.
+*/
+
+/*!
+ \enum BufferType
+
+ Defines how the type of buffer required to contain a cache.
+
+ \value OpenGLTexture The buffer will be allocated in graphics memory, and an OpenGL texture
+ for a buffer belonging to the cache can be requested using
+ textureIdForBuffer().
+*/
+
+/*!
+ \enum PixelFormat
+
+ Defines the pixel format of a cache.
+
+ \value Alpha8 The cache will use 8 bits to represent the alpha value of each pixel. If an
+ OpenGL texture is created for a buffer belong to the cache, it will have the
+ pixel format GL_ALPHA.
+*/
+
+/*!
+ \fn void ensureCacheInitialized(const QByteArray &cacheId, BufferType bufferType, PixelFormat pixelFormat)
+
+ Initializes a cache named \a cacheId if it has not yet been initialized. The \a bufferType and
+ \a pixelFormat gives the format of the buffers that will be used to contain the items in the
+ cache. If a cache with the same \a cacheId has previously been initialized, the call will be
+ ignored. The cache will keep its previously set buffer type and pixel format.
+*/
+
+/*!
+ \fn void QPlatformSharedGraphicsCache::requestItems(const QByteArray &cacheId, const QVector<quint32> &itemIds)
+
+ Requests all the items in \a itemIds from the cache with the name \a cacheId.
+
+ If any or all of the items are available in the cache, one or more itemsAvailable() signals will be
+ emitted corresponding to the items. If the cache does not contain all of the items in question,
+ then an itemsMissing() signal will be emitted corresponding to the missing items. The user
+ is at this point expected to call insertItems() to insert the missing items into the cache. If
+ the inserted items have previously been requested by the user, at which point an itemsAvailable()
+ signal will be emitted corresponding to the items.
+
+ Before requesting items from a cache, the user must call ensureCacheInitialized() with the
+ correct parameters for the cache.
+*/
+
+/*!
+ \fn void QPlatformSharedGraphicsCache::insertItems(const QByteArray &cacheId, const QVector<quint32> &itemIds, const QVector<QImage> &items)
+
+ Inserts the items in \a itemIds into the cache named \a cacheId. The appearance of
+ each item is stored in \a items. The format of the QImage objects is expected to match the
+ pixel format of the cache as it was initialized in ensureCacheInitialized().
+
+ When the items have been successfully entered into the cache, one or more itemsAvailable() signals
+ will be emitted for the items.
+
+ If the cache already contains the items, the behavior is implementation-specific. The
+ implementation may choose to ignore the items or it may overwrite the existing instances in
+ the cache. Either way, itemsAvailable() signals corresponding to the inserted items will be
+ emitted.
+*/
+
+/*!
+ \fn void QPlatformSharedGraphicsCache::releaseItems(const QByteArray &cacheId, const QVector<quint32> &itemIds)
+
+ Releases the reference to the items in \a itemIds from the cache named \a cacheId. This should
+ only be called when all references to the items have been released by the user, and they are no
+ longer needed.
+*/
+
+/*!
+ \fn void itemsMissing(const QByteArray &cacheId, const QVector<quint32> *itemIds)
+
+ This signal is emitted when requestItems() has been called for one or more items in the
+ cache named \a cacheId which are not yet available in the cache. The user is then expected to
+ call insertItems() to update the cache with the respective items, at which point they will
+ become available to all clients of the shared cache.
+
+ The vector \a itemIds contains the IDs of the items that need to be inserted into the cache.
+
+ \sa itemsAvailable(), insertItems(), requestItems()
+*/
+
+/*!
+ \fn void itemsAvailable(const QByteArray &cacheId, void *bufferId, const QSize &bufferSize, const QVector<quint32> &itemIds, const QVector<QPoint> &positionsInBuffer)
+
+ This signal can be emitted at any time when either requestItems() or insertItems() has been
+ called by the application for one or more items in the cache named \a cacheId, as long as
+ releaseItems() has not subsequently been called for the same items. It instructs the application
+ on where to find the items that have been entered into the cache. When the application receives
+ a buffer, it is expected to reference it using referenceBuffer() on it if it keeps a reference
+ to the buffer.
+
+ The \a bufferId is an ID for the buffer that contains the items. The \a bufferId can be
+ converted to a format usable by the application depending on which format it was given at
+ initialization. If it is a OpenGLTexture, its texture ID can be requested using the
+ textureIdForBuffer() function. The dimensions of the buffer are given by \a bufferSize.
+
+ The items provided by the cache are identified in the \a itemIds vector. The
+ \a positionsInBuffer vector contains the locations inside the buffer of each item. Each entry in
+ \a positionsInBuffer corresponds to an item in \a itemIds.
+
+ The buffer and the items' locations within the buffer can be considered valid until an
+ itemsInvalidated() signal has been emitted for the items, or until releaseItems() is called
+ for the items.
+
+ \sa itemsMissing(), requestItems(), bufferType()
+*/
+
+/*!
+ \fn void itemsUpdated(const QByteArray &cacheId, void *bufferId, const QSize &bufferSize, const QVector<quint32> &itemIds, const QVector<QPoint> &positionsInBuffer)
+
+ This signal is similar in usage to the itemsAvailable() signal, but will be emitted when
+ the location of a previously requested or inserted item has been updated. The application
+ must update its data for the respective items and release any references to old buffers held
+ by the items.
+
+ If the application no longer holds any references to previously referenced items in a given
+ cache, it should call releaseItems() for these items, at which point it will no longer receive
+ any itemsUpdated() signal for these items.
+
+ \sa requestItems(), insertItems(), itemsAvailable()
+*/
+
+/*!
+ \fn void itemsInvalidated(const QByteArray &cacheId, const QVector<quint32> &itemIds)
+
+ This signal is emitted when the items given by \a itemIds in the cache named \a cacheId have
+ been removed from the cache and the previously reported information about them is considered
+ invalid. It will only be emitted for items for which a buffer has previously been identified
+ through the itemsAvailable() signal (either as response to a requestItems() call or an
+ insertItems() call.)
+
+ The application is expected to throw away information about the items in the \a itemIds array
+ and drop any references it might have to the memory held by the buffer. If the items are still
+ required by the application, it can re-commit them to the cache using the insertItems() function.
+
+ If the application no longer holds any references to previously referenced items in a given
+ cache, it should call releaseItems() for these items, at which point it will no longer receive
+ any itemsInvalidated() signal for these items.
+*/
+
+QT_END_NAMESPACE
diff --git a/src/gui/kernel/qplatformsharedgraphicscache_qpa.h b/src/gui/kernel/qplatformsharedgraphicscache_qpa.h
new file mode 100644
index 0000000000..d59cd7c3c8
--- /dev/null
+++ b/src/gui/kernel/qplatformsharedgraphicscache_qpa.h
@@ -0,0 +1,97 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** 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$
+**
+****************************************************************************/
+
+#ifndef QPLATFORMSHAREDGRAPHICSCACHE_QPA_H
+#define QPLATFORMSHAREDGRAPHICSCACHE_QPA_H
+
+#include <QtCore/qobject.h>
+#include <QtGui/qimage.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Gui)
+
+class Q_GUI_EXPORT QPlatformSharedGraphicsCache: public QObject
+{
+ Q_OBJECT
+public:
+ enum PixelFormat
+ {
+ Alpha8
+ };
+
+ enum BufferType
+ {
+ OpenGLTexture
+ };
+
+ QPlatformSharedGraphicsCache(QObject *parent = 0) : QObject(parent) {}
+
+ Q_INVOKABLE virtual void ensureCacheInitialized(const QByteArray &cacheId, BufferType bufferType,
+ PixelFormat pixelFormat) = 0;
+
+ Q_INVOKABLE virtual void requestItems(const QByteArray &cacheId, const QVector<quint32> &itemIds) = 0;
+ Q_INVOKABLE virtual void insertItems(const QByteArray &cacheId,
+ const QVector<quint32> &itemIds,
+ const QVector<QImage> &items) = 0;
+ Q_INVOKABLE virtual void releaseItems(const QByteArray &cacheId, const QVector<quint32> &itemIds) = 0;
+
+ virtual void serializeBuffer(void *bufferId, QByteArray *serializedData, int *fileDescriptor) const = 0;
+ virtual uint textureIdForBuffer(void *bufferId) = 0;
+ virtual void referenceBuffer(void *bufferId) = 0;
+ virtual bool dereferenceBuffer(void *bufferId) = 0;
+
+Q_SIGNALS:
+ void itemsMissing(const QByteArray &cacheId, const QVector<quint32> &itemIds);
+ void itemsAvailable(const QByteArray &cacheId, void *bufferId, const QSize &bufferSize,
+ const QVector<quint32> &itemIds, const QVector<QPoint> &positionsInBuffer);
+ void itemsInvalidated(const QByteArray &cacheId, const QVector<quint32> &itemIds);
+ void itemsUpdated(const QByteArray &cacheId, void *bufferId, const QSize &bufferSize,
+ const QVector<quint32> &itemIds, const QVector<QPoint> &positionsInBuffer);
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QPLATFORMSHAREDGRAPHICSCACHE_QPA_H
diff --git a/src/gui/kernel/qplatformsurface_qpa.cpp b/src/gui/kernel/qplatformsurface_qpa.cpp
index 3347f7984f..aeb73da2a3 100644
--- a/src/gui/kernel/qplatformsurface_qpa.cpp
+++ b/src/gui/kernel/qplatformsurface_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -43,12 +43,12 @@
QT_BEGIN_NAMESPACE
-QSurface::SurfaceType QPlatformSurface::surfaceType() const
+QSurface::SurfaceClass QPlatformSurface::surfaceClass() const
{
return m_type;
}
-QPlatformSurface::QPlatformSurface(QSurface::SurfaceType type) : m_type(type)
+QPlatformSurface::QPlatformSurface(QSurface::SurfaceClass type) : m_type(type)
{
}
diff --git a/src/gui/kernel/qplatformsurface_qpa.h b/src/gui/kernel/qplatformsurface_qpa.h
index 7ceb39f049..af23ad3a85 100644
--- a/src/gui/kernel/qplatformsurface_qpa.h
+++ b/src/gui/kernel/qplatformsurface_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,19 +50,18 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class Q_GUI_EXPORT QPlatformSurface
{
public:
virtual QSurfaceFormat format() const = 0;
- QSurface::SurfaceType surfaceType() const;
+ QSurface::SurfaceClass surfaceClass() const;
private:
- QPlatformSurface(QSurface::SurfaceType type);
+ QPlatformSurface(QSurface::SurfaceClass type);
- QSurface::SurfaceType m_type;
+ QSurface::SurfaceClass m_type;
friend class QPlatformWindow;
};
diff --git a/src/gui/kernel/qplatformtheme_qpa.cpp b/src/gui/kernel/qplatformtheme_qpa.cpp
index 22d4452f4e..d2ff804ddf 100644
--- a/src/gui/kernel/qplatformtheme_qpa.cpp
+++ b/src/gui/kernel/qplatformtheme_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -83,15 +83,15 @@ QPlatformMenuBar *QPlatformTheme::createPlatformMenuBar(QMenuBar *menuBar) const
return 0;
}
-bool QPlatformTheme::usePlatformNativeDialog(const QDialog *dialog) const
+bool QPlatformTheme::usePlatformNativeDialog(DialogType type) const
{
- Q_UNUSED(dialog);
+ Q_UNUSED(type);
return false;
}
-QPlatformDialogHelper *QPlatformTheme::createPlatformDialogHelper(QDialog *dialog) const
+QPlatformDialogHelper *QPlatformTheme::createPlatformDialogHelper(DialogType type) const
{
- Q_UNUSED(dialog);
+ Q_UNUSED(type);
return 0;
}
diff --git a/src/gui/kernel/qplatformtheme_qpa.h b/src/gui/kernel/qplatformtheme_qpa.h
index c3e5b677a2..2b87e63287 100644
--- a/src/gui/kernel/qplatformtheme_qpa.h
+++ b/src/gui/kernel/qplatformtheme_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,14 +48,12 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QMenu;
class QMenuBar;
class QPlatformMenu;
class QPlatformMenuBar;
class QPlatformDialogHelper;
-class QDialog;
class QVariant;
class Q_GUI_EXPORT QPlatformTheme
@@ -67,11 +65,17 @@ public:
MaximumScrollBarDragDistance
};
+ enum DialogType {
+ FileDialog,
+ ColorDialog,
+ FontDialog
+ };
+
virtual QPlatformMenu *createPlatformMenu(QMenu *menu = 0) const;
virtual QPlatformMenuBar *createPlatformMenuBar(QMenuBar *menuBar = 0) const;
- virtual bool usePlatformNativeDialog(const QDialog *dialog = 0) const;
- virtual QPlatformDialogHelper *createPlatformDialogHelper(QDialog *dialog = 0) const;
+ virtual bool usePlatformNativeDialog(DialogType type) const;
+ virtual QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const;
virtual QVariant themeHint(ThemeHint hint) const;
};
diff --git a/src/gui/kernel/qplatformthemefactory_qpa.cpp b/src/gui/kernel/qplatformthemefactory_qpa.cpp
index c278f41411..c023a73e7e 100644
--- a/src/gui/kernel/qplatformthemefactory_qpa.cpp
+++ b/src/gui/kernel/qplatformthemefactory_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qplatformthemefactory_qpa_p.h b/src/gui/kernel/qplatformthemefactory_qpa_p.h
index 71987aa723..4d659812dc 100644
--- a/src/gui/kernel/qplatformthemefactory_qpa_p.h
+++ b/src/gui/kernel/qplatformthemefactory_qpa_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPlatformTheme;
diff --git a/src/gui/kernel/qplatformthemeplugin_qpa.cpp b/src/gui/kernel/qplatformthemeplugin_qpa.cpp
index c51d4e9fc5..8383c9b948 100644
--- a/src/gui/kernel/qplatformthemeplugin_qpa.cpp
+++ b/src/gui/kernel/qplatformthemeplugin_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qplatformthemeplugin_qpa.h b/src/gui/kernel/qplatformthemeplugin_qpa.h
index 89348deae0..fb4f9f9b7c 100644
--- a/src/gui/kernel/qplatformthemeplugin_qpa.h
+++ b/src/gui/kernel/qplatformthemeplugin_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,7 +60,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPlatformTheme;
diff --git a/src/gui/kernel/qplatformwindow_qpa.cpp b/src/gui/kernel/qplatformwindow_qpa.cpp
index d69cb0e64e..c52a1cf757 100644
--- a/src/gui/kernel/qplatformwindow_qpa.cpp
+++ b/src/gui/kernel/qplatformwindow_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -239,17 +239,42 @@ void QPlatformWindow::requestActivateWindow()
}
/*!
- Set the orientation of the platform window's contents.
+ Handle changes to the orientation of the platform window's contents.
This is a hint to the window manager in case it needs to display
additional content like popups, dialogs, status bars, or similar
in relation to the window.
- \sa QWindow::setOrientation()
+ \sa QWindow::reportContentOrientationChange()
+*/
+void QPlatformWindow::handleContentOrientationChange(Qt::ScreenOrientation orientation)
+{
+ Q_UNUSED(orientation);
+}
+
+/*!
+ Request a different orientation of the platform window.
+
+ This tells the window manager how the window wants to be rotated in order
+ to be displayed, and how input events should be translated.
+
+ As an example, a portrait compositor might rotate the window by 90 degrees,
+ if the window is in landscape. It will also rotate input coordinates from
+ portrait to landscape such that top right in portrait gets mapped to top
+ left in landscape.
+
+ If the implementation doesn't support the requested orientation it should
+ signal this by returning an actual supported orientation.
+
+ If the implementation doesn't support rotating the window at all it should
+ return Qt::PrimaryOrientation, this is also the default value.
+
+ \sa QWindow::requestWindowOrientation()
*/
-void QPlatformWindow::setOrientation(Qt::ScreenOrientation orientation)
+Qt::ScreenOrientation QPlatformWindow::requestWindowOrientation(Qt::ScreenOrientation orientation)
{
Q_UNUSED(orientation);
+ return Qt::PrimaryOrientation;
}
bool QPlatformWindow::setKeyboardGrabEnabled(bool grab)
diff --git a/src/gui/kernel/qplatformwindow_qpa.h b/src/gui/kernel/qplatformwindow_qpa.h
index 7605a5a4aa..88bf633425 100644
--- a/src/gui/kernel/qplatformwindow_qpa.h
+++ b/src/gui/kernel/qplatformwindow_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPlatformScreen;
class QPlatformWindowPrivate;
@@ -95,7 +94,8 @@ public:
virtual void setOpacity(qreal level);
virtual void requestActivateWindow();
- virtual void setOrientation(Qt::ScreenOrientation orientation);
+ virtual void handleContentOrientationChange(Qt::ScreenOrientation orientation);
+ virtual Qt::ScreenOrientation requestWindowOrientation(Qt::ScreenOrientation orientation);
virtual bool setKeyboardGrabEnabled(bool grab);
virtual bool setMouseGrabEnabled(bool grab);
diff --git a/src/gui/kernel/qscreen.cpp b/src/gui/kernel/qscreen.cpp
index a1ed3014d0..67eb991b19 100644
--- a/src/gui/kernel/qscreen.cpp
+++ b/src/gui/kernel/qscreen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -343,35 +343,38 @@ QRect QScreen::availableVirtualGeometry() const
}
/*!
- \property QScreen::primaryOrientation
- \brief the primary screen orientation
+ \property QScreen::orientation
+ \brief the screen orientation
+
+ The screen orientation represents the physical orientation
+ of the display. For example, the screen orientation of a mobile device
+ will change based on the device is being held, and a desktop display
+ might be rotated so that it's in portrait mode.
+
+ Qt::PrimaryOrientation is never returned.
- The primary screen orientation is the orientation that corresponds
- to an un-rotated screen buffer. When the current orientation is equal
- to the primary orientation no rotation needs to be done by the
- application.
+ \sa primaryOrientation(), orientationChanged()
*/
-Qt::ScreenOrientation QScreen::primaryOrientation() const
+Qt::ScreenOrientation QScreen::orientation() const
{
Q_D(const QScreen);
- return d->platformScreen->primaryOrientation();
+ return d->orientation == Qt::PrimaryOrientation ? primaryOrientation() : d->orientation;
}
/*!
\property QScreen::primaryOrientation
- \brief the current screen orientation
+ \brief the primary screen orientation
- The current orientation is a hint to the application saying
- what the preferred application orientation should be, based on the
- current orientation of the physical display and / or other factors.
+ The primary screen orientation is Qt::LandscapeOrientation
+ if the screen geometry's width is greater than or equal to its
+ height, or Qt::PortraitOrientation otherwise.
- \sa primaryOrientation()
- \sa currentOrientationChanged()
+ \sa primaryOrientationChanged()
*/
-Qt::ScreenOrientation QScreen::currentOrientation() const
+Qt::ScreenOrientation QScreen::primaryOrientation() const
{
Q_D(const QScreen);
- return d->currentOrientation;
+ return d->primaryOrientation;
}
// i must be power of two
@@ -393,10 +396,18 @@ static int log2(uint i)
rotation \a a to rotation \a b.
The result will be 0, 90, 180, or 270.
+
+ Qt::PrimaryOrientation is interpreted as the screen's primaryOrientation().
*/
int QScreen::angleBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b)
{
- if (a == Qt::UnknownOrientation || b == Qt::UnknownOrientation || a == b)
+ if (a == Qt::PrimaryOrientation)
+ a = primaryOrientation();
+
+ if (b == Qt::PrimaryOrientation)
+ b = primaryOrientation();
+
+ if (a == b)
return 0;
int ia = log2(uint(a));
@@ -420,10 +431,18 @@ int QScreen::angleBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b)
the resulting transform will be such that the point QPoint(0, 0) is mapped to QPoint(0, w),
and QPoint(h, w) is mapped to QPoint(0, h). Thus, the landscape coordinate system QRect(0, 0, h, w)
is mapped (with a 90 degree rotation) into the portrait coordinate system QRect(0, 0, w, h).
+
+ Qt::PrimaryOrientation is interpreted as the screen's primaryOrientation().
*/
QTransform QScreen::transformBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &target)
{
- if (a == Qt::UnknownOrientation || b == Qt::UnknownOrientation || a == b)
+ if (a == Qt::PrimaryOrientation)
+ a = primaryOrientation();
+
+ if (b == Qt::PrimaryOrientation)
+ b = primaryOrientation();
+
+ if (a == b)
return QTransform();
int angle = angleBetween(a, b);
@@ -453,10 +472,18 @@ QTransform QScreen::transformBetween(Qt::ScreenOrientation a, Qt::ScreenOrientat
This will flip the x and y dimensions of the rectangle if orientation \a is
Qt::PortraitOrientation or Qt::InvertedPortraitOrientation and orientation \b is
Qt::LandscapeOrientation or Qt::InvertedLandscapeOrientation, or vice versa.
+
+ Qt::PrimaryOrientation is interpreted as the screen's primaryOrientation().
*/
QRect QScreen::mapBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &rect)
{
- if (a == Qt::UnknownOrientation || b == Qt::UnknownOrientation || a == b)
+ if (a == Qt::PrimaryOrientation)
+ a = primaryOrientation();
+
+ if (b == Qt::PrimaryOrientation)
+ b = primaryOrientation();
+
+ if (a == b)
return rect;
if ((a == Qt::PortraitOrientation || a == Qt::InvertedPortraitOrientation)
@@ -469,14 +496,50 @@ QRect QScreen::mapBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, cons
}
/*!
- \fn QScreen::currentOrientationChanged(Qt::ScreenOrientation orientation)
+ Convenience function to check if a screen orientation is either portrait
+ or inverted portrait.
- This signal is emitted when the current orientation of the screen
- changes. The current orientation is a hint to the application saying
- what the preferred application orientation should be, based on the
- current orientation of the physical display and / or other factors.
+ Qt::PrimaryOrientation is interpreted as the screen's primaryOrientation().
+*/
+bool QScreen::isPortrait(Qt::ScreenOrientation o)
+{
+ return o == Qt::PortraitOrientation || o == Qt::InvertedPortraitOrientation
+ || (o == Qt::PrimaryOrientation && primaryOrientation() == Qt::PortraitOrientation);
+}
+
+/*!
+ Convenience function to check if a screen orientation is either landscape
+ or inverted landscape.
+
+ Qt::PrimaryOrientation is interpreted as the screen's primaryOrientation().
+*/
+bool QScreen::isLandscape(Qt::ScreenOrientation o)
+{
+ return o == Qt::LandscapeOrientation || o == Qt::InvertedLandscapeOrientation
+ || (o == Qt::PrimaryOrientation && primaryOrientation() == Qt::LandscapeOrientation);
+}
+
+/*!
+ \fn QScreen::orientationChanged(Qt::ScreenOrientation orientation)
+
+ This signal is emitted when the orientation of the screen
+ changes.
- \sa currentOrientation()
+ \sa orientation()
*/
+/*!
+ \fn QScreen::primaryOrientationChanged(Qt::ScreenOrientation orientation)
+
+ This signal is emitted when the primary orientation of the screen
+ changes.
+
+ \sa primaryOrientation()
+*/
+
+void QScreenPrivate::updatePrimaryOrientation()
+{
+ primaryOrientation = geometry.width() >= geometry.height() ? Qt::LandscapeOrientation : Qt::PortraitOrientation;
+}
+
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qscreen.h b/src/gui/kernel/qscreen.h
index 7291e2ad7b..f73cd0836f 100644
--- a/src/gui/kernel/qscreen.h
+++ b/src/gui/kernel/qscreen.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,7 +56,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPlatformScreen;
class QScreenPrivate;
@@ -81,8 +80,8 @@ class Q_GUI_EXPORT QScreen : public QObject
Q_PROPERTY(qreal logicalDotsPerInch READ logicalDotsPerInch NOTIFY logicalDotsPerInchChanged)
Q_PROPERTY(QSize availableSize READ availableSize NOTIFY availableSizeChanged)
Q_PROPERTY(QRect availableGeometry READ availableGeometry NOTIFY availableGeometryChanged)
- Q_PROPERTY(Qt::ScreenOrientation primaryOrientation READ primaryOrientation CONSTANT)
- Q_PROPERTY(Qt::ScreenOrientation currentOrientation READ currentOrientation NOTIFY currentOrientationChanged)
+ Q_PROPERTY(Qt::ScreenOrientation primaryOrientation READ orientation NOTIFY primaryOrientationChanged)
+ Q_PROPERTY(Qt::ScreenOrientation orientation READ orientation NOTIFY orientationChanged)
public:
QPlatformScreen *handle() const;
@@ -116,11 +115,14 @@ public:
QRect availableVirtualGeometry() const;
Qt::ScreenOrientation primaryOrientation() const;
- Qt::ScreenOrientation currentOrientation() const;
+ Qt::ScreenOrientation orientation() const;
+
+ int angleBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b);
+ QTransform transformBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &target);
+ QRect mapBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &rect);
- static int angleBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b);
- static QTransform transformBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &target);
- static QRect mapBetween(Qt::ScreenOrientation a, Qt::ScreenOrientation b, const QRect &rect);
+ bool isPortrait(Qt::ScreenOrientation orientation);
+ bool isLandscape(Qt::ScreenOrientation orientation);
Q_SIGNALS:
void sizeChanged(const QSize &size);
@@ -133,7 +135,8 @@ Q_SIGNALS:
void logicalDotsPerInchChanged(qreal dpi);
void availableSizeChanged(const QSize &size);
void availableGeometryChanged(const QRect &rect);
- void currentOrientationChanged(Qt::ScreenOrientation orientation);
+ void primaryOrientationChanged(Qt::ScreenOrientation orientation);
+ void orientationChanged(Qt::ScreenOrientation orientation);
private:
QScreen(QPlatformScreen *screen);
diff --git a/src/gui/kernel/qscreen_p.h b/src/gui/kernel/qscreen_p.h
index 50742c9f6b..c6bf37e87a 100644
--- a/src/gui/kernel/qscreen_p.h
+++ b/src/gui/kernel/qscreen_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,13 +59,18 @@ public:
QScreenPrivate(QPlatformScreen *screen)
: platformScreen(screen)
{
- currentOrientation = screen->currentOrientation();
+ orientation = screen->orientation();
geometry = screen->geometry();
availableGeometry = screen->availableGeometry();
logicalDpi = screen->logicalDpi();
+
+ updatePrimaryOrientation();
}
- Qt::ScreenOrientation currentOrientation;
+ void updatePrimaryOrientation();
+
+ Qt::ScreenOrientation orientation;
+ Qt::ScreenOrientation primaryOrientation;
QRect geometry;
QRect availableGeometry;
QDpi logicalDpi;
diff --git a/src/gui/kernel/qsessionmanager.h b/src/gui/kernel/qsessionmanager.h
index 89c5cf47b6..529b726a5b 100644
--- a/src/gui/kernel/qsessionmanager.h
+++ b/src/gui/kernel/qsessionmanager.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QGuiApplication;
diff --git a/src/gui/kernel/qsessionmanager_qpa.cpp b/src/gui/kernel/qsessionmanager_qpa.cpp
index 9b6ec26ff4..2db2e75de9 100644
--- a/src/gui/kernel/qsessionmanager_qpa.cpp
+++ b/src/gui/kernel/qsessionmanager_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qshortcutmap.cpp b/src/gui/kernel/qshortcutmap.cpp
index 2bacac9598..a750082219 100644
--- a/src/gui/kernel/qshortcutmap.cpp
+++ b/src/gui/kernel/qshortcutmap.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qshortcutmap_p.h b/src/gui/kernel/qshortcutmap_p.h
index e447507b87..a7918eb239 100644
--- a/src/gui/kernel/qshortcutmap_p.h
+++ b/src/gui/kernel/qshortcutmap_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qstylehints.cpp b/src/gui/kernel/qstylehints.cpp
index eb0f055270..c98158b6b6 100644
--- a/src/gui/kernel/qstylehints.cpp
+++ b/src/gui/kernel/qstylehints.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qstylehints.h b/src/gui/kernel/qstylehints.h
index 6fa72110fb..0fc7e776b5 100644
--- a/src/gui/kernel/qstylehints.h
+++ b/src/gui/kernel/qstylehints.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPlatformIntegration;
diff --git a/src/gui/kernel/qsurface.cpp b/src/gui/kernel/qsurface.cpp
index bfdb772cfb..eb2676802b 100644
--- a/src/gui/kernel/qsurface.cpp
+++ b/src/gui/kernel/qsurface.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -43,12 +43,53 @@
QT_BEGIN_NAMESPACE
-QSurface::QSurface(SurfaceType type)
- : m_type(type)
+
+/*!
+ \class QSurface
+ \brief The QSurface class is an abstraction of renderable surfaces in Qt.
+
+ The size of the surface is accessible with the size() function. The rendering
+ specific attributes of the surface are accessible through the format() function.
+ */
+
+
+/*!
+ \enum QSurface::SurfaceClass
+
+ The SurfaceClass enum describes the actual subclass of the surface.
+
+ \value Window The surface is an instance of QWindow.
+ */
+
+
+/*!
+ \enum QSurface::SurfaceType
+
+ The SurfaceType enum describes what type of surface the.
+
+ \value RasterSurface The surface is is composed of pixels and can be rendered to using
+ a software rasterizer like Qt's raster paint engine.
+ \value OpenGLSurface The surface is an OpenGL compatible surface and can be used
+ in conjunction with QOpenGLContext.
+ */
+
+
+/*!
+ QSize QSurface::size() const
+
+ Returns the size of the surface in pixels.
+ */
+
+
+
+QSurface::QSurface(SurfaceClass type)
+ : m_type(type), m_reserved(0)
{
}
-QSurface::SurfaceType QSurface::surfaceType() const
+
+
+QSurface::SurfaceClass QSurface::surfaceClass() const
{
return m_type;
}
diff --git a/src/gui/kernel/qsurface.h b/src/gui/kernel/qsurface.h
index fba1690af4..a8900fde33 100644
--- a/src/gui/kernel/qsurface.h
+++ b/src/gui/kernel/qsurface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -45,34 +45,46 @@
#include <QtCore/qnamespace.h>
#include <QtGui/qsurfaceformat.h>
+#include <QtCore/qsize.h>
+
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPlatformSurface;
+class QSurfacePrivate;
+
class Q_GUI_EXPORT QSurface
{
public:
- enum SurfaceType {
+ enum SurfaceClass {
Window
};
+ enum SurfaceType {
+ RasterSurface,
+ OpenGLSurface
+ };
+
virtual ~QSurface();
- SurfaceType surfaceType() const;
+ SurfaceClass surfaceClass() const;
virtual QSurfaceFormat format() const = 0;
virtual QPlatformSurface *surfaceHandle() const = 0;
-private:
- QSurface(SurfaceType type);
+ virtual SurfaceType surfaceType() const = 0;
+
+ virtual QSize size() const = 0;
+
+protected:
+ QSurface(SurfaceClass type);
- SurfaceType m_type;
+ SurfaceClass m_type;
- friend class QWindow;
+ QSurfacePrivate *m_reserved;
};
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qsurfaceformat.cpp b/src/gui/kernel/qsurfaceformat.cpp
index 39b2d491a3..b97852dc1d 100644
--- a/src/gui/kernel/qsurfaceformat.cpp
+++ b/src/gui/kernel/qsurfaceformat.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qsurfaceformat.h b/src/gui/kernel/qsurfaceformat.h
index 3d3bfeb30b..6daa08095e 100644
--- a/src/gui/kernel/qsurfaceformat.h
+++ b/src/gui/kernel/qsurfaceformat.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,7 +47,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QOpenGLContext;
class QSurfaceFormatPrivate;
diff --git a/src/gui/kernel/qt_gui_pch.h b/src/gui/kernel/qt_gui_pch.h
index 98a516f54e..ba708f4d69 100644
--- a/src/gui/kernel/qt_gui_pch.h
+++ b/src/gui/kernel/qt_gui_pch.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/kernel/qtouchdevice.cpp b/src/gui/kernel/qtouchdevice.cpp
index b8d4d01655..b0543819df 100644
--- a/src/gui/kernel/qtouchdevice.cpp
+++ b/src/gui/kernel/qtouchdevice.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -177,11 +177,11 @@ void QTouchDevice::setName(const QString &name)
typedef QList<QTouchDevice *> TouchDevices;
Q_GLOBAL_STATIC(TouchDevices, deviceList)
-Q_GLOBAL_STATIC(QMutex, devicesMutex)
+static QBasicMutex devicesMutex;
static void cleanupDevicesList()
{
- QMutexLocker lock(devicesMutex());
+ QMutexLocker lock(&devicesMutex);
qDeleteAll(*deviceList());
deviceList()->clear();
}
@@ -193,7 +193,7 @@ static void cleanupDevicesList()
*/
QList<const QTouchDevice *> QTouchDevice::devices()
{
- QMutexLocker lock(devicesMutex());
+ QMutexLocker lock(&devicesMutex);
QList<QTouchDevice *> *devList = deviceList();
QList<const QTouchDevice *> constDevList;
for (int i = 0, count = devList->count(); i != count; ++i)
@@ -206,7 +206,7 @@ QList<const QTouchDevice *> QTouchDevice::devices()
*/
bool QTouchDevicePrivate::isRegistered(QTouchDevice *dev)
{
- QMutexLocker lock(devicesMutex());
+ QMutexLocker lock(&devicesMutex);
return deviceList()->contains(dev);
}
@@ -215,7 +215,7 @@ bool QTouchDevicePrivate::isRegistered(QTouchDevice *dev)
*/
void QTouchDevicePrivate::registerDevice(QTouchDevice *dev)
{
- QMutexLocker lock(devicesMutex());
+ QMutexLocker lock(&devicesMutex);
if (deviceList()->isEmpty())
qAddPostRoutine(cleanupDevicesList);
deviceList()->append(dev);
diff --git a/src/gui/kernel/qtouchdevice.h b/src/gui/kernel/qtouchdevice.h
index 6efa7814c9..3023a1759a 100644
--- a/src/gui/kernel/qtouchdevice.h
+++ b/src/gui/kernel/qtouchdevice.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QTouchDevicePrivate;
diff --git a/src/gui/kernel/qtouchdevice_p.h b/src/gui/kernel/qtouchdevice_p.h
index c37e4a8bf5..4697a85e58 100644
--- a/src/gui/kernel/qtouchdevice_p.h
+++ b/src/gui/kernel/qtouchdevice_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QTouchDevicePrivate
{
diff --git a/src/gui/kernel/qwindow.cpp b/src/gui/kernel/qwindow.cpp
index 97c6b0cbc9..4436884359 100644
--- a/src/gui/kernel/qwindow.cpp
+++ b/src/gui/kernel/qwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -43,8 +43,10 @@
#include "qplatformwindow_qpa.h"
#include "qsurfaceformat.h"
+#ifndef QT_NO_OPENGL
#include "qplatformopenglcontext_qpa.h"
#include "qopenglcontext.h"
+#endif
#include "qscreen.h"
#include "qwindow_p.h"
@@ -60,7 +62,7 @@ QT_BEGIN_NAMESPACE
/*!
\class QWindow
- \brief The QWindow class encapsulates an independent windw in a Windowing System.
+ \brief The QWindow class encapsulates an independent window in a Windowing System.
A window that is supplied a parent become a native child window of
their parent window.
@@ -70,8 +72,24 @@ QT_BEGIN_NAMESPACE
to support double and triple buffering. To release a windows memory
resources, the destroy() function.
- */
-
+ \section1 Window and content orientation
+
+ QWindow has reportContentOrientationChange() and
+ requestWindowOrientation() that can be used to specify the
+ layout of the window contents in relation to the screen. The
+ window orientation determines the actual buffer layout of the
+ window, and the windowing system uses this value to rotate the
+ window before it ends up on the display, and to ensure that input
+ coordinates are in the correct coordinate space relative to the
+ application.
+
+ On the other hand, the content orientation is simply a hint to the
+ windowing system about which orientation the window contents are in.
+ It's useful when you wish to keep the same buffer layout, but rotate
+ the contents instead, especially when doing rotation animations
+ between different orientations. The windowing system might use this
+ value to determine the layout of system popups or dialogs.
+*/
QWindow::QWindow(QScreen *targetScreen)
: QObject(*new QWindowPrivate(), 0)
, QSurface(QSurface::Window)
@@ -147,6 +165,14 @@ void QWindow::setVisible(bool visible)
return;
d->visible = visible;
emit visibleChanged(visible);
+ if (QCoreApplication::instance() && !transientParent()) {
+ QCoreApplicationPrivate *applicationPrivate = static_cast<QCoreApplicationPrivate*>(QObjectPrivate::get(QCoreApplication::instance()));
+ if (visible) {
+ applicationPrivate->ref();
+ } else {
+ applicationPrivate->deref();
+ }
+ }
if (!d->platformWindow)
create();
@@ -373,42 +399,86 @@ bool QWindow::isActive() const
}
/*!
- Returns the window's currently set orientation.
+ Reports that the orientation of the window's contents have changed.
+
+ This is a hint to the window manager in case it needs to display
+ additional content like popups, dialogs, status bars, or similar
+ in relation to the window.
- The default value is Qt::UnknownOrientation.
+ The recommended orientation is QScreen::orientation() but
+ an application doesn't have to support all possible orientations,
+ and thus can opt to ignore the current screen orientation.
- \sa setOrientation(), QScreen::currentOrientation()
+ The difference between the window and the content orientation
+ determines how much to rotate the content by. QScreen::angleBetween(),
+ QScreen::transformBetween(), and QScreen::mapBetween() can be used
+ to compute the necessary transform.
+
+ \sa requestWindowOrientation(), QScreen::orientation()
*/
-Qt::ScreenOrientation QWindow::orientation() const
+void QWindow::reportContentOrientationChange(Qt::ScreenOrientation orientation)
+{
+ Q_D(QWindow);
+ if (d->contentOrientation == orientation)
+ return;
+ if (!d->platformWindow)
+ create();
+ Q_ASSERT(d->platformWindow);
+ d->contentOrientation = orientation;
+ d->platformWindow->handleContentOrientationChange(orientation);
+ emit contentOrientationChanged(orientation);
+}
+
+/*!
+ Returns the actual content orientation.
+
+ This is the last value set with reportContentOrientationChange(). It defaults
+ to Qt::PrimaryOrientation.
+*/
+Qt::ScreenOrientation QWindow::contentOrientation() const
{
Q_D(const QWindow);
- return d->orientation;
+ return d->contentOrientation;
}
/*!
- Set the orientation of the window's contents.
+ Requests the given window orientation.
- This is a hint to the window manager in case it needs to display
- additional content like popups, dialogs, status bars, or similar
- in relation to the window.
+ The window orientation specifies how the window should be rotated
+ by the window manager in order to be displayed. Input events will
+ be correctly mapped to the given orientation.
- The recommended orientation is QScreen::currentOrientation() but
- an application doesn't have to support all possible orientations,
- and thus can opt to ignore the current screen orientation.
+ The return value is false if the system doesn't support the given
+ orientation (for example when requesting a portrait orientation
+ on a device that only handles landscape buffers, typically a desktop
+ system).
+
+ If the return value is false, call windowOrientation() to get the actual
+ supported orientation.
- \sa QScreen::currentOrientation()
+ \sa windowOrientation(), reportContentOrientationChange(), QScreen::orientation()
*/
-void QWindow::setOrientation(Qt::ScreenOrientation orientation)
+bool QWindow::requestWindowOrientation(Qt::ScreenOrientation orientation)
{
Q_D(QWindow);
- if (orientation == d->orientation)
- return;
+ if (!d->platformWindow)
+ create();
+ Q_ASSERT(d->platformWindow);
+ d->windowOrientation = d->platformWindow->requestWindowOrientation(orientation);
+ return d->windowOrientation == orientation;
+}
- d->orientation = orientation;
- if (d->platformWindow) {
- d->platformWindow->setOrientation(orientation);
- }
- emit orientationChanged(orientation);
+/*!
+ Returns the actual window orientation.
+
+ The default value is Qt::PrimaryOrientation.
+
+ \sa requestWindowOrientation()
+*/
+Qt::ScreenOrientation QWindow::windowOrientation() const
+{
+ Q_D(const QWindow);
+ return d->windowOrientation;
}
Qt::WindowState QWindow::windowState() const
@@ -437,7 +507,19 @@ void QWindow::setWindowState(Qt::WindowState state)
void QWindow::setTransientParent(QWindow *parent)
{
Q_D(QWindow);
+
+ QWindow *previousParent = d->transientParent;
+
d->transientParent = parent;
+
+ if (QCoreApplication::instance() && d->visible) {
+ QCoreApplicationPrivate *applicationPrivate = static_cast<QCoreApplicationPrivate*>(QObjectPrivate::get(QCoreApplication::instance()));
+ if (parent && !previousParent) {
+ applicationPrivate->deref();
+ } else if (!parent && previousParent) {
+ applicationPrivate->ref();
+ }
+ }
}
QWindow *QWindow::transientParent() const
@@ -735,6 +817,13 @@ QAccessibleInterface *QWindow::accessibleRoot() const
}
/*!
+ \fn QWindow::focusObjectChanged(QObject *focusObject)
+
+ This signal is emitted when final receiver of events tied to focus is changed.
+ \sa focusObject()
+*/
+
+/*!
Returns the QObject that will be the final receiver of events tied focus, such
as key events.
*/
@@ -783,8 +872,28 @@ void QWindow::showNormal()
bool QWindow::close()
{
- //should we have close?
- qDebug() << "unimplemented:" << __FILE__ << __LINE__;
+ Q_D(QWindow);
+
+ // Do not close non top level windows
+ if (parent())
+ return false;
+
+ if (QGuiApplicationPrivate::focus_window == this)
+ QGuiApplicationPrivate::focus_window = 0;
+
+ QObjectList childrenWindows = children();
+ for (int i = 0; i < childrenWindows.size(); i++) {
+ QObject *object = childrenWindows.at(i);
+ if (object->isWindowType()) {
+ QWindow *w = static_cast<QWindow*>(object);
+ QGuiApplicationPrivate::window_list.removeAll(w);
+ w->destroy();
+ }
+ }
+
+ QGuiApplicationPrivate::window_list.removeAll(this);
+ destroy();
+ d->maybeQuitOnLastWindowClosed();
return true;
}
@@ -946,6 +1055,14 @@ void QWindow::touchEvent(QTouchEvent *ev)
ev->ignore();
}
+bool QWindow::nativeEvent(const QByteArray &eventType, void *message, long *result)
+{
+ Q_UNUSED(eventType);
+ Q_UNUSED(message);
+ Q_UNUSED(result);
+ return false;
+}
+
/*!
\fn QPoint QWindow::mapToGlobal(const QPoint &pos) const
diff --git a/src/gui/kernel/qwindow.h b/src/gui/kernel/qwindow.h
index 4d161658c6..98b468b142 100644
--- a/src/gui/kernel/qwindow.h
+++ b/src/gui/kernel/qwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -57,7 +57,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QWindowPrivate;
@@ -91,10 +90,9 @@ class Q_GUI_EXPORT QWindow : public QObject, public QSurface
Q_PROPERTY(int width READ width WRITE setWidth NOTIFY widthChanged)
Q_PROPERTY(int height READ height WRITE setHeight NOTIFY heightChanged)
Q_PROPERTY(bool visible READ visible WRITE setVisible NOTIFY visibleChanged)
- Q_PROPERTY(Qt::ScreenOrientation orientation READ orientation WRITE setOrientation NOTIFY orientationChanged)
+ Q_PROPERTY(Qt::ScreenOrientation contentOrientation READ contentOrientation WRITE reportContentOrientationChange NOTIFY contentOrientationChanged)
public:
- enum SurfaceType { RasterSurface, OpenGLSurface };
QWindow(QScreen *screen = 0);
QWindow(QWindow *parent);
@@ -133,8 +131,11 @@ public:
bool isActive() const;
- Qt::ScreenOrientation orientation() const;
- void setOrientation(Qt::ScreenOrientation orientation);
+ void reportContentOrientationChange(Qt::ScreenOrientation orientation);
+ Qt::ScreenOrientation contentOrientation() const;
+
+ bool requestWindowOrientation(Qt::ScreenOrientation orientation);
+ Qt::ScreenOrientation windowOrientation() const;
Qt::WindowState windowState() const;
void setWindowState(Qt::WindowState state);
@@ -252,16 +253,15 @@ Q_SIGNALS:
void screenChanged(QScreen *screen);
void xChanged(int arg);
-
void yChanged(int arg);
void widthChanged(int arg);
-
void heightChanged(int arg);
void visibleChanged(bool arg);
+ void contentOrientationChanged(Qt::ScreenOrientation orientation);
- void orientationChanged(Qt::ScreenOrientation arg);
+ void focusObjectChanged(QObject *object);
private Q_SLOTS:
void screenDestroyed(QObject *screen);
@@ -287,6 +287,7 @@ protected:
virtual void wheelEvent(QWheelEvent *);
#endif
virtual void touchEvent(QTouchEvent *);
+ virtual bool nativeEvent(const QByteArray &eventType, void *message, long *result);
QWindow(QWindowPrivate &dd, QWindow *parent);
diff --git a/src/gui/kernel/qwindow_p.h b/src/gui/kernel/qwindow_p.h
index d3b6868aa5..7f3958b3ff 100644
--- a/src/gui/kernel/qwindow_p.h
+++ b/src/gui/kernel/qwindow_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#define QWINDOWSIZE_MAX ((1<<24)-1)
@@ -76,7 +75,8 @@ public:
, windowState(Qt::WindowNoState)
, resizeEventPending(true)
, positionPolicy(WindowFrameExclusive)
- , orientation(Qt::UnknownOrientation)
+ , contentOrientation(Qt::PrimaryOrientation)
+ , windowOrientation(Qt::PrimaryOrientation)
, maximumSize(QWINDOWSIZE_MAX, QWINDOWSIZE_MAX)
, modality(Qt::NonModal)
, transientParent(0)
@@ -111,7 +111,8 @@ public:
Qt::WindowState windowState;
bool resizeEventPending;
PositionPolicy positionPolicy;
- Qt::ScreenOrientation orientation;
+ Qt::ScreenOrientation contentOrientation;
+ Qt::ScreenOrientation windowOrientation;
QSize minimumSize;
QSize maximumSize;
diff --git a/src/gui/kernel/qwindowdefs.h b/src/gui/kernel/qwindowdefs.h
index 3366606036..82cce0394b 100644
--- a/src/gui/kernel/qwindowdefs.h
+++ b/src/gui/kernel/qwindowdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
// Class forward definitions
diff --git a/src/gui/kernel/qwindowdefs_win.h b/src/gui/kernel/qwindowdefs_win.h
index 2db1a4649f..2dad28cf45 100644
--- a/src/gui/kernel/qwindowdefs_win.h
+++ b/src/gui/kernel/qwindowdefs_win.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qwindowsysteminterface_qpa.cpp b/src/gui/kernel/qwindowsysteminterface_qpa.cpp
index 4a7ebd1c0c..ae94b75076 100644
--- a/src/gui/kernel/qwindowsysteminterface_qpa.cpp
+++ b/src/gui/kernel/qwindowsysteminterface_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,6 +60,17 @@ QMutex QWindowSystemInterfacePrivate::queueMutex;
extern QPointer<QWindow> qt_last_mouse_receiver;
+/*!
+ \class QWindowSystemInterface
+ \since 5.0
+ \internal
+ \preliminary
+ \ingroup qpa
+ \brief The QWindowSystemInterface provides an event queue for the QPA platform.
+
+ The platform plugins call the various functions to notify about events. The events are queued
+ until sendWindowSystemEvents() is called by the event dispatcher.
+*/
void QWindowSystemInterface::handleEnterEvent(QWindow *tlw)
{
@@ -379,4 +390,17 @@ Qt::DropAction QWindowSystemInterface::handleDrop(QWindow *w, QMimeData *dropDat
return QGuiApplicationPrivate::processDrop(w, dropData, p);
}
+/*!
+ \fn static QWindowSystemInterface::handleNativeEvent(QWindow *window, const QByteArray &eventType, void *message, long *result)
+ \brief Passes a native event identified by \a eventType to the \a window.
+
+ \note This function can only be called from the GUI thread.
+ \sa QPlatformNativeInterface::setEventFilter()
+*/
+
+bool QWindowSystemInterface::handleNativeEvent(QWindow *window, const QByteArray &eventType, void *message, long *result)
+{
+ return QGuiApplicationPrivate::processNativeEvent(window, eventType, message, result);
+}
+
QT_END_NAMESPACE
diff --git a/src/gui/kernel/qwindowsysteminterface_qpa.h b/src/gui/kernel/qwindowsysteminterface_qpa.h
index 4a17fb9035..b99363eda7 100644
--- a/src/gui/kernel/qwindowsysteminterface_qpa.h
+++ b/src/gui/kernel/qwindowsysteminterface_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,7 +60,6 @@ QT_BEGIN_NAMESPACE
class QMimeData;
class QTouchDevice;
-QT_MODULE(Gui)
class Q_GUI_EXPORT QWindowSystemInterface
{
@@ -121,6 +120,8 @@ public:
static Qt::DropAction handleDrag(QWindow *w, QMimeData *dropData, const QPoint &p);
static Qt::DropAction handleDrop(QWindow *w, QMimeData *dropData, const QPoint &p);
+ static bool handleNativeEvent(QWindow *window, const QByteArray &eventType, void *message, long *result);
+
// Changes to the screen
static void handleScreenOrientationChange(QScreen *screen, Qt::ScreenOrientation newOrientation);
static void handleScreenGeometryChange(QScreen *screen, const QRect &newGeometry);
diff --git a/src/gui/kernel/qwindowsysteminterface_qpa_p.h b/src/gui/kernel/qwindowsysteminterface_qpa_p.h
index b5614eb38e..0bd9ba017a 100644
--- a/src/gui/kernel/qwindowsysteminterface_qpa_p.h
+++ b/src/gui/kernel/qwindowsysteminterface_qpa_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -73,6 +73,7 @@ public:
public:
explicit WindowSystemEvent(EventType t)
: type(t), synthetic(false) { }
+ virtual ~WindowSystemEvent() { }
EventType type;
bool synthetic;
};
diff --git a/src/gui/math3d/qgenericmatrix.cpp b/src/gui/math3d/qgenericmatrix.cpp
index 88682702de..113b767e9f 100644
--- a/src/gui/math3d/qgenericmatrix.cpp
+++ b/src/gui/math3d/qgenericmatrix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/math3d/qgenericmatrix.h b/src/gui/math3d/qgenericmatrix.h
index c992415426..0a2446587a 100644
--- a/src/gui/math3d/qgenericmatrix.h
+++ b/src/gui/math3d/qgenericmatrix.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
template <int N, int M, typename T>
class QGenericMatrix
diff --git a/src/gui/math3d/qmatrix4x4.cpp b/src/gui/math3d/qmatrix4x4.cpp
index b6b60e7072..068b2e36f7 100644
--- a/src/gui/math3d/qmatrix4x4.cpp
+++ b/src/gui/math3d/qmatrix4x4.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/math3d/qmatrix4x4.h b/src/gui/math3d/qmatrix4x4.h
index 98f967f63c..b80fc86f45 100644
--- a/src/gui/math3d/qmatrix4x4.h
+++ b/src/gui/math3d/qmatrix4x4.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_MATRIX4X4
@@ -1089,7 +1088,7 @@ Q_GUI_EXPORT QDataStream &operator<<(QDataStream &, const QMatrix4x4 &);
Q_GUI_EXPORT QDataStream &operator>>(QDataStream &, QMatrix4x4 &);
#endif
-#ifdef QT_DEPRECATED
+#if QT_DEPRECATED_SINCE(5, 0)
template <int N, int M>
QT_DEPRECATED QMatrix4x4 qGenericMatrixToMatrix4x4(const QGenericMatrix<N, M, qreal>& matrix)
{
diff --git a/src/gui/math3d/qquaternion.cpp b/src/gui/math3d/qquaternion.cpp
index 53e01323d9..e61dc4bb1d 100644
--- a/src/gui/math3d/qquaternion.cpp
+++ b/src/gui/math3d/qquaternion.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/math3d/qquaternion.h b/src/gui/math3d/qquaternion.h
index 78b2d91d13..0a1552f045 100644
--- a/src/gui/math3d/qquaternion.h
+++ b/src/gui/math3d/qquaternion.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_QUATERNION
diff --git a/src/gui/math3d/qvector2d.cpp b/src/gui/math3d/qvector2d.cpp
index a1c7ac048f..897fa356d3 100644
--- a/src/gui/math3d/qvector2d.cpp
+++ b/src/gui/math3d/qvector2d.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/math3d/qvector2d.h b/src/gui/math3d/qvector2d.h
index df435bcf49..882845db1b 100644
--- a/src/gui/math3d/qvector2d.h
+++ b/src/gui/math3d/qvector2d.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QVector3D;
class QVector4D;
diff --git a/src/gui/math3d/qvector3d.cpp b/src/gui/math3d/qvector3d.cpp
index 096d14223c..5251f9c015 100644
--- a/src/gui/math3d/qvector3d.cpp
+++ b/src/gui/math3d/qvector3d.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/math3d/qvector3d.h b/src/gui/math3d/qvector3d.h
index 55c0e36ca2..d02fa7de8f 100644
--- a/src/gui/math3d/qvector3d.h
+++ b/src/gui/math3d/qvector3d.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QMatrix4x4;
class QVector2D;
diff --git a/src/gui/math3d/qvector4d.cpp b/src/gui/math3d/qvector4d.cpp
index ce3d410b39..e7ee46b88b 100644
--- a/src/gui/math3d/qvector4d.cpp
+++ b/src/gui/math3d/qvector4d.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/math3d/qvector4d.h b/src/gui/math3d/qvector4d.h
index ceff21163f..384dd6a2a6 100644
--- a/src/gui/math3d/qvector4d.h
+++ b/src/gui/math3d/qvector4d.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QMatrix4x4;
class QVector2D;
diff --git a/src/gui/opengl/opengl.pri b/src/gui/opengl/opengl.pri
index 3c5ab932ba..f0d9000fb6 100644
--- a/src/gui/opengl/opengl.pri
+++ b/src/gui/opengl/opengl.pri
@@ -4,43 +4,47 @@ contains(QT_CONFIG, opengl):CONFIG += opengl
contains(QT_CONFIG, opengles2):CONFIG += opengles2
contains(QT_CONFIG, egl):CONFIG += egl
-HEADERS += opengl/qopengl.h \
- opengl/qopengl_p.h \
- opengl/qopenglfunctions.h \
- opengl/qopenglframebufferobject.h \
- opengl/qopenglframebufferobject_p.h \
- opengl/qopenglpaintdevice.h \
- opengl/qopenglbuffer.h \
- opengl/qopenglshaderprogram.h \
- opengl/qopenglextensions_p.h \
- opengl/qopenglgradientcache_p.h \
- opengl/qopengltexturecache_p.h \
- opengl/qopenglengineshadermanager_p.h \
- opengl/qopengl2pexvertexarray_p.h \
- opengl/qopenglpaintengine_p.h \
- opengl/qopenglengineshadersource_p.h \
- opengl/qopenglcustomshaderstage_p.h \
- opengl/qopengltriangulatingstroker_p.h \
- opengl/qopengltextureglyphcache_p.h \
- opengl/qopenglshadercache_p.h \
- opengl/qopenglshadercache_meego_p.h \
- opengl/qtriangulator_p.h \
- opengl/qrbtree_p.h
+contains(QT_CONFIG, opengl)|contains(QT_CONFIG, opengles2)|contains(QT_CONFIG, egl) {
-SOURCES += opengl/qopengl.cpp \
- opengl/qopenglfunctions.cpp \
- opengl/qopenglframebufferobject.cpp \
- opengl/qopenglpaintdevice.cpp \
- opengl/qopenglbuffer.cpp \
- opengl/qopenglshaderprogram.cpp \
- opengl/qopenglgradientcache.cpp \
- opengl/qopengltexturecache.cpp \
- opengl/qopenglengineshadermanager.cpp \
- opengl/qopengl2pexvertexarray.cpp \
- opengl/qopenglpaintengine.cpp \
- opengl/qopenglcustomshaderstage.cpp \
- opengl/qopengltriangulatingstroker.cpp \
- opengl/qopengltextureglyphcache.cpp \
- opengl/qtriangulator.cpp
+ HEADERS += opengl/qopengl.h \
+ opengl/qopengl_p.h \
+ opengl/qopenglfunctions.h \
+ opengl/qopenglframebufferobject.h \
+ opengl/qopenglframebufferobject_p.h \
+ opengl/qopenglpaintdevice.h \
+ opengl/qopenglbuffer.h \
+ opengl/qopenglshaderprogram.h \
+ opengl/qopenglextensions_p.h \
+ opengl/qopenglgradientcache_p.h \
+ opengl/qopengltexturecache_p.h \
+ opengl/qopenglengineshadermanager_p.h \
+ opengl/qopengl2pexvertexarray_p.h \
+ opengl/qopenglpaintengine_p.h \
+ opengl/qopenglengineshadersource_p.h \
+ opengl/qopenglcustomshaderstage_p.h \
+ opengl/qopengltriangulatingstroker_p.h \
+ opengl/qopengltextureglyphcache_p.h \
+ opengl/qopenglshadercache_p.h \
+ opengl/qopenglshadercache_meego_p.h \
+ opengl/qtriangulator_p.h \
+ opengl/qrbtree_p.h
+
+ SOURCES += opengl/qopengl.cpp \
+ opengl/qopenglfunctions.cpp \
+ opengl/qopenglframebufferobject.cpp \
+ opengl/qopenglpaintdevice.cpp \
+ opengl/qopenglbuffer.cpp \
+ opengl/qopenglshaderprogram.cpp \
+ opengl/qopenglgradientcache.cpp \
+ opengl/qopengltexturecache.cpp \
+ opengl/qopenglengineshadermanager.cpp \
+ opengl/qopengl2pexvertexarray.cpp \
+ opengl/qopenglpaintengine.cpp \
+ opengl/qopenglcustomshaderstage.cpp \
+ opengl/qopengltriangulatingstroker.cpp \
+ opengl/qopengltextureglyphcache.cpp \
+ opengl/qtriangulator.cpp
+
+}
#INCLUDEPATH += ../3rdparty/harfbuzz/src
diff --git a/src/gui/opengl/qopengl.cpp b/src/gui/opengl/qopengl.cpp
index 246d4dfa24..f39dc12239 100644
--- a/src/gui/opengl/qopengl.cpp
+++ b/src/gui/opengl/qopengl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qopengl.h b/src/gui/opengl/qopengl.h
index a3ec59cef1..5fb30c0c41 100644
--- a/src/gui/opengl/qopengl.h
+++ b/src/gui/opengl/qopengl.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,6 +42,8 @@
#ifndef QOPENGL_H
#define QOPENGL_H
+#ifndef QT_NO_OPENGL
+
#include <QtCore/qglobal.h>
QT_BEGIN_HEADER
@@ -73,10 +75,11 @@ typedef GLfloat GLdouble;
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
QT_END_NAMESPACE
QT_END_HEADER
+#endif // QT_NO_OPENGL
+
#endif // QOPENGL_H
diff --git a/src/gui/opengl/qopengl2pexvertexarray.cpp b/src/gui/opengl/qopengl2pexvertexarray.cpp
index 1db2223667..c9faf98a97 100644
--- a/src/gui/opengl/qopengl2pexvertexarray.cpp
+++ b/src/gui/opengl/qopengl2pexvertexarray.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qopengl2pexvertexarray_p.h b/src/gui/opengl/qopengl2pexvertexarray_p.h
index 779fa5a545..7043f43e02 100644
--- a/src/gui/opengl/qopengl2pexvertexarray_p.h
+++ b/src/gui/opengl/qopengl2pexvertexarray_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qopengl_p.h b/src/gui/opengl/qopengl_p.h
index 5323604ce5..1860fb1683 100644
--- a/src/gui/opengl/qopengl_p.h
+++ b/src/gui/opengl/qopengl_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qopenglbuffer.cpp b/src/gui/opengl/qopenglbuffer.cpp
index 6bf4fedc8e..e0ab98df21 100644
--- a/src/gui/opengl/qopenglbuffer.cpp
+++ b/src/gui/opengl/qopenglbuffer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qopenglbuffer.h b/src/gui/opengl/qopenglbuffer.h
index 83ad5cda51..d8e0a69308 100644
--- a/src/gui/opengl/qopenglbuffer.h
+++ b/src/gui/opengl/qopenglbuffer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,6 +42,8 @@
#ifndef QOPENGLBUFFER_H
#define QOPENGLBUFFER_H
+#ifndef QT_NO_OPENGL
+
#include <QtCore/qscopedpointer.h>
#include <QtGui/qopengl.h>
@@ -49,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QOpenGLBufferPrivate;
@@ -129,4 +130,6 @@ QT_END_NAMESPACE
QT_END_HEADER
+#endif // QT_NO_OPENGL
+
#endif
diff --git a/src/gui/opengl/qopenglcustomshaderstage.cpp b/src/gui/opengl/qopenglcustomshaderstage.cpp
index 25a07b2a4c..c7ad2d9adf 100644
--- a/src/gui/opengl/qopenglcustomshaderstage.cpp
+++ b/src/gui/opengl/qopenglcustomshaderstage.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qopenglcustomshaderstage_p.h b/src/gui/opengl/qopenglcustomshaderstage_p.h
index 35c59a9e9b..3e015ccc5b 100644
--- a/src/gui/opengl/qopenglcustomshaderstage_p.h
+++ b/src/gui/opengl/qopenglcustomshaderstage_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPainter;
class QOpenGLCustomShaderStagePrivate;
diff --git a/src/gui/opengl/qopenglengineshadermanager.cpp b/src/gui/opengl/qopenglengineshadermanager.cpp
index 9520f07fcc..9b4d6e02cc 100644
--- a/src/gui/opengl/qopenglengineshadermanager.cpp
+++ b/src/gui/opengl/qopenglengineshadermanager.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qopenglengineshadermanager_p.h b/src/gui/opengl/qopenglengineshadermanager_p.h
index 39cd2e4d70..72ae1f9073 100644
--- a/src/gui/opengl/qopenglengineshadermanager_p.h
+++ b/src/gui/opengl/qopenglengineshadermanager_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -232,7 +232,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
/*
diff --git a/src/gui/opengl/qopenglengineshadersource_p.h b/src/gui/opengl/qopenglengineshadersource_p.h
index 65e3fc54a5..985e54d542 100644
--- a/src/gui/opengl/qopenglengineshadersource_p.h
+++ b/src/gui/opengl/qopenglengineshadersource_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,7 +60,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
static const char* const qopenglslMainVertexShader = "\n\
diff --git a/src/gui/opengl/qopenglextensions_p.h b/src/gui/opengl/qopenglextensions_p.h
index b66af217a6..cc8454603c 100644
--- a/src/gui/opengl/qopenglextensions_p.h
+++ b/src/gui/opengl/qopenglextensions_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#if 0
#ifndef GL_ARB_vertex_buffer_object
diff --git a/src/gui/opengl/qopenglframebufferobject.cpp b/src/gui/opengl/qopenglframebufferobject.cpp
index 261a6df27d..5e22554303 100644
--- a/src/gui/opengl/qopenglframebufferobject.cpp
+++ b/src/gui/opengl/qopenglframebufferobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -412,8 +412,18 @@ void QOpenGLFramebufferObjectPrivate::init(QOpenGLFramebufferObject *, const QSi
glBindTexture(target, texture);
glTexImage2D(target, 0, internal_format, size.width(), size.height(), 0,
GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- if (mipmap)
- funcs.glGenerateMipmap(GL_TEXTURE_2D);
+ if (mipmap) {
+ int width = size.width();
+ int height = size.height();
+ int level = 0;
+ while (width > 1 || height > 1) {
+ width = (width + 1) >> 1;
+ height = (height + 1) >> 1;
+ ++level;
+ glTexImage2D(target, level, internal_format, width, height, 0,
+ GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+ }
+ }
glTexParameteri(target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
@@ -882,8 +892,8 @@ bool QOpenGLFramebufferObject::release()
#endif
if (current) {
- current->d_func()->current_fbo = current->d_func()->default_fbo;
- d->funcs.glBindFramebuffer(GL_FRAMEBUFFER, current->d_func()->default_fbo);
+ current->d_func()->current_fbo = current->defaultFramebufferObject();
+ d->funcs.glBindFramebuffer(GL_FRAMEBUFFER, current->d_func()->current_fbo);
}
return true;
@@ -1047,8 +1057,8 @@ bool QOpenGLFramebufferObject::bindDefault()
QOpenGLFunctions functions(ctx);
if (ctx) {
- ctx->d_func()->current_fbo = ctx->d_func()->default_fbo;
- functions.glBindFramebuffer(GL_FRAMEBUFFER, ctx->d_func()->default_fbo);
+ ctx->d_func()->current_fbo = ctx->defaultFramebufferObject();
+ functions.glBindFramebuffer(GL_FRAMEBUFFER, ctx->d_func()->current_fbo);
#ifdef QT_DEBUG
} else {
qWarning("QOpenGLFramebufferObject::bindDefault() called without current context.");
@@ -1132,8 +1142,24 @@ void QOpenGLFramebufferObject::blitFramebuffer(QOpenGLFramebufferObject *target,
QOpenGLFramebufferObject *source,
GLbitfield buffers, GLenum filter)
{
- blitFramebuffer(target, QRect(QPoint(0, 0), target->size()),
- source, QRect(QPoint(0, 0), source->size()),
+ if (!target && !source)
+ return;
+
+ QSize targetSize;
+ QSize sourceSize;
+
+ if (target)
+ targetSize = target->size();
+ if (source)
+ sourceSize = source->size();
+
+ if (targetSize.isEmpty())
+ targetSize = sourceSize;
+ else if (sourceSize.isEmpty())
+ sourceSize = targetSize;
+
+ blitFramebuffer(target, QRect(QPoint(0, 0), targetSize),
+ source, QRect(QPoint(0, 0), sourceSize),
buffers, filter);
}
diff --git a/src/gui/opengl/qopenglframebufferobject.h b/src/gui/opengl/qopenglframebufferobject.h
index acce7d7391..0b2ead1cbb 100644
--- a/src/gui/opengl/qopenglframebufferobject.h
+++ b/src/gui/opengl/qopenglframebufferobject.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,6 +42,8 @@
#ifndef QOPENGLFRAMEBUFFEROBJECT_H
#define QOPENGLFRAMEBUFFEROBJECT_H
+#ifndef QT_NO_OPENGL
+
#include <QtGui/qopengl.h>
#include <QtGui/qpaintdevice.h>
@@ -51,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QOpenGLFramebufferObjectPrivate;
class QOpenGLFramebufferObjectFormat;
@@ -159,4 +160,7 @@ private:
QT_END_NAMESPACE
QT_END_HEADER
+
+#endif // QT_NO_OPENGL
+
#endif // QOPENGLFRAMEBUFFEROBJECT_H
diff --git a/src/gui/opengl/qopenglframebufferobject_p.h b/src/gui/opengl/qopenglframebufferobject_p.h
index aeaa2a0e7d..78d9d93ffe 100644
--- a/src/gui/opengl/qopenglframebufferobject_p.h
+++ b/src/gui/opengl/qopenglframebufferobject_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qopenglfunctions.cpp b/src/gui/opengl/qopenglfunctions.cpp
index a34dfc193c..13f91e2ad8 100644
--- a/src/gui/opengl/qopenglfunctions.cpp
+++ b/src/gui/opengl/qopenglfunctions.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -478,6 +478,9 @@ void QOpenGLFunctions::initializeGLFunctions()
Convenience function that calls glBindFramebuffer(\a target, \a framebuffer).
+ Note that Qt will translate a \a framebuffer argument of 0 to the currently
+ bound QOpenGLContext's defaultFramebufferObject().
+
For more information, see the OpenGL/ES 2.0 documentation for
\l{http://www.khronos.org/opengles/sdk/docs/man/glBindFramebuffer.xml}{glBindFramebuffer()}.
*/
diff --git a/src/gui/opengl/qopenglfunctions.h b/src/gui/opengl/qopenglfunctions.h
index 2f4b5b18cb..881c27f2c9 100644
--- a/src/gui/opengl/qopenglfunctions.h
+++ b/src/gui/opengl/qopenglfunctions.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,6 +42,8 @@
#ifndef QOPENGLFUNCTIONS_H
#define QOPENGLFUNCTIONS_H
+#ifndef QT_NO_OPENGL
+
#ifdef __GLEW_H__
#warning qopenglfunctions.h is not compatible with GLEW, GLEW defines will be undefined
#warning To use GLEW with Qt, do not include <qopengl.h> or <QOpenGLFunctions> after glew.h
@@ -71,7 +73,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
// Types that aren't defined in all system's gl.h files.
typedef ptrdiff_t qopengl_GLintptr;
@@ -477,6 +478,8 @@ inline void QOpenGLFunctions::glBindBuffer(GLenum target, GLuint buffer)
inline void QOpenGLFunctions::glBindFramebuffer(GLenum target, GLuint framebuffer)
{
+ if (framebuffer == 0)
+ framebuffer = QOpenGLContext::currentContext()->defaultFramebufferObject();
#if defined(QT_OPENGL_ES_2)
::glBindFramebuffer(target, framebuffer);
#else
@@ -2420,4 +2423,6 @@ QT_END_NAMESPACE
QT_END_HEADER
+#endif // QT_NO_OPENGL
+
#endif
diff --git a/src/gui/opengl/qopenglgradientcache.cpp b/src/gui/opengl/qopenglgradientcache.cpp
index dde5eaf93e..ec958085ed 100644
--- a/src/gui/opengl/qopenglgradientcache.cpp
+++ b/src/gui/opengl/qopenglgradientcache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qopenglgradientcache_p.h b/src/gui/opengl/qopenglgradientcache_p.h
index 055798fcd8..4035689abd 100644
--- a/src/gui/opengl/qopenglgradientcache_p.h
+++ b/src/gui/opengl/qopenglgradientcache_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qopenglpaintdevice.cpp b/src/gui/opengl/qopenglpaintdevice.cpp
index 35ef609529..118fe63122 100644
--- a/src/gui/opengl/qopenglpaintdevice.cpp
+++ b/src/gui/opengl/qopenglpaintdevice.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qopenglpaintdevice.h b/src/gui/opengl/qopenglpaintdevice.h
index 0a7bb3c9f3..ce3e7cf278 100644
--- a/src/gui/opengl/qopenglpaintdevice.h
+++ b/src/gui/opengl/qopenglpaintdevice.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,6 +42,8 @@
#ifndef QOPENGLPAINTDEVICE_H
#define QOPENGLPAINTDEVICE_H
+#ifndef QT_NO_OPENGL
+
//
// W A R N I N G
// -------------
@@ -62,7 +64,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QOpenGLPaintDevicePrivate;
@@ -100,4 +101,6 @@ QT_END_NAMESPACE
QT_END_HEADER
+#endif // QT_NO_OPENGL
+
#endif // QOPENGLPAINTDEVICE_H
diff --git a/src/gui/opengl/qopenglpaintengine.cpp b/src/gui/opengl/qopenglpaintengine.cpp
index 834beda977..eb32ac162f 100644
--- a/src/gui/opengl/qopenglpaintengine.cpp
+++ b/src/gui/opengl/qopenglpaintengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1581,7 +1581,7 @@ void QOpenGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type
transferMode(TextDrawingMode);
- int margin = cache->glyphMargin();
+ int margin = fe->glyphMargin(glyphType);
GLfloat dx = 1.0 / cache->width();
GLfloat dy = 1.0 / cache->height();
diff --git a/src/gui/opengl/qopenglpaintengine_p.h b/src/gui/opengl/qopenglpaintengine_p.h
index 9f125eb616..0a6ef2a4d2 100644
--- a/src/gui/opengl/qopenglpaintengine_p.h
+++ b/src/gui/opengl/qopenglpaintengine_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qopenglshadercache_meego_p.h b/src/gui/opengl/qopenglshadercache_meego_p.h
index 02a1c84336..44efa66117 100644
--- a/src/gui/opengl/qopenglshadercache_meego_p.h
+++ b/src/gui/opengl/qopenglshadercache_meego_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -400,7 +400,6 @@ static bool qt_cache_shader(const QOpenGLShaderProgram *shader, QOpenGLContext *
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class CachedShader
{
diff --git a/src/gui/opengl/qopenglshadercache_p.h b/src/gui/opengl/qopenglshadercache_p.h
index 64435eb1c2..219c2bfb99 100644
--- a/src/gui/opengl/qopenglshadercache_p.h
+++ b/src/gui/opengl/qopenglshadercache_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -63,7 +63,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QOpenGLShaderProgram;
class QOpenGLContext;
diff --git a/src/gui/opengl/qopenglshaderprogram.cpp b/src/gui/opengl/qopenglshaderprogram.cpp
index fab764ed6e..69b4fc9858 100644
--- a/src/gui/opengl/qopenglshaderprogram.cpp
+++ b/src/gui/opengl/qopenglshaderprogram.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qopenglshaderprogram.h b/src/gui/opengl/qopenglshaderprogram.h
index f6244cd12c..5ca2ead45e 100644
--- a/src/gui/opengl/qopenglshaderprogram.h
+++ b/src/gui/opengl/qopenglshaderprogram.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,6 +42,8 @@
#ifndef QOPENGLSHADERPROGRAM_H
#define QOPENGLSHADERPROGRAM_H
+#ifndef QT_NO_OPENGL
+
#include <QtGui/qopengl.h>
#include <QtGui/qvector2d.h>
#include <QtGui/qvector3d.h>
@@ -52,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QOpenGLContext;
class QOpenGLShaderProgram;
@@ -314,4 +315,6 @@ QT_END_NAMESPACE
QT_END_HEADER
+#endif // QT_NO_OPENGL
+
#endif
diff --git a/src/gui/opengl/qopengltexturecache.cpp b/src/gui/opengl/qopengltexturecache.cpp
index a93ae91354..e4d5ff974d 100644
--- a/src/gui/opengl/qopengltexturecache.cpp
+++ b/src/gui/opengl/qopengltexturecache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qopengltexturecache_p.h b/src/gui/opengl/qopengltexturecache_p.h
index c6e46dd6cb..549a2f4eab 100644
--- a/src/gui/opengl/qopengltexturecache_p.h
+++ b/src/gui/opengl/qopengltexturecache_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qopengltextureglyphcache.cpp b/src/gui/opengl/qopengltextureglyphcache.cpp
index 9f5ce46854..b37e8fb972 100644
--- a/src/gui/opengl/qopengltextureglyphcache.cpp
+++ b/src/gui/opengl/qopengltextureglyphcache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qopengltextureglyphcache_p.h b/src/gui/opengl/qopengltextureglyphcache_p.h
index 5da8d1ce4b..1b4f4f7429 100644
--- a/src/gui/opengl/qopengltextureglyphcache_p.h
+++ b/src/gui/opengl/qopengltextureglyphcache_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qopengltriangulatingstroker.cpp b/src/gui/opengl/qopengltriangulatingstroker.cpp
index 65ee8753c4..ccf4eb30e7 100644
--- a/src/gui/opengl/qopengltriangulatingstroker.cpp
+++ b/src/gui/opengl/qopengltriangulatingstroker.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qopengltriangulatingstroker_p.h b/src/gui/opengl/qopengltriangulatingstroker_p.h
index 965fce6157..27f414748e 100644
--- a/src/gui/opengl/qopengltriangulatingstroker_p.h
+++ b/src/gui/opengl/qopengltriangulatingstroker_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,7 @@
QT_BEGIN_NAMESPACE
-class QTriangulatingStroker
+class Q_GUI_EXPORT QTriangulatingStroker
{
public:
QTriangulatingStroker() : m_vertices(0) {}
diff --git a/src/gui/opengl/qrbtree_p.h b/src/gui/opengl/qrbtree_p.h
index dbcf037193..161eed93d0 100644
--- a/src/gui/opengl/qrbtree_p.h
+++ b/src/gui/opengl/qrbtree_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qtriangulator.cpp b/src/gui/opengl/qtriangulator.cpp
index c4b8aba9a7..c82b2a4ca8 100644
--- a/src/gui/opengl/qtriangulator.cpp
+++ b/src/gui/opengl/qtriangulator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/opengl/qtriangulator_p.h b/src/gui/opengl/qtriangulator_p.h
index 96dedd5eca..5cd1a1899b 100644
--- a/src/gui/opengl/qtriangulator_p.h
+++ b/src/gui/opengl/qtriangulator_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/painting.pri b/src/gui/painting/painting.pri
index 1481cb8520..61a25e9ac8 100644
--- a/src/gui/painting/painting.pri
+++ b/src/gui/painting/painting.pri
@@ -103,19 +103,6 @@ if(mmx|3dnow|sse|sse2|iwmmxt) {
IWMMXT_SOURCES += painting/qdrawhelper_iwmmxt.cpp
}
-symbian {
- HEADERS += painting/qdrawhelper_arm_simd_p.h
- armccIfdefBlock = \
- "$${LITERAL_HASH}if defined(ARMV6)" \
- "MACRO QT_HAVE_ARM_SIMD" \
- "SOURCEPATH painting" \
- "SOURCE qdrawhelper_arm_simd.cpp" \
- "$${LITERAL_HASH}endif"
-
- MMP_RULES += armccIfdefBlock
- QMAKE_CXXFLAGS.ARMCC *= -O3
-}
-
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
diff --git a/src/gui/painting/qbackingstore.cpp b/src/gui/painting/qbackingstore.cpp
index 08f809ed88..37446f4f80 100644
--- a/src/gui/painting/qbackingstore.cpp
+++ b/src/gui/painting/qbackingstore.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qbackingstore.h b/src/gui/painting/qbackingstore.h
index 0172a78d85..db6884f58d 100644
--- a/src/gui/painting/qbackingstore.h
+++ b/src/gui/painting/qbackingstore.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QRegion;
class QRect;
diff --git a/src/gui/painting/qbezier.cpp b/src/gui/painting/qbezier.cpp
index 75a75ead7d..57dc5710fa 100644
--- a/src/gui/painting/qbezier.cpp
+++ b/src/gui/painting/qbezier.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qbezier_p.h b/src/gui/painting/qbezier_p.h
index 368ae7e483..8481348bd0 100644
--- a/src/gui/painting/qbezier_p.h
+++ b/src/gui/painting/qbezier_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qblendfunctions.cpp b/src/gui/painting/qblendfunctions.cpp
index 40047d8c94..a83cadb161 100644
--- a/src/gui/painting/qblendfunctions.cpp
+++ b/src/gui/painting/qblendfunctions.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qblendfunctions_p.h b/src/gui/painting/qblendfunctions_p.h
index 412be40d67..83abf01fd8 100644
--- a/src/gui/painting/qblendfunctions_p.h
+++ b/src/gui/painting/qblendfunctions_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qblittable.cpp b/src/gui/painting/qblittable.cpp
index 020eba0235..2009fd1010 100644
--- a/src/gui/painting/qblittable.cpp
+++ b/src/gui/painting/qblittable.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qblittable_p.h b/src/gui/painting/qblittable_p.h
index c704c86452..0d2f6983d4 100644
--- a/src/gui/painting/qblittable_p.h
+++ b/src/gui/painting/qblittable_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qbrush.cpp b/src/gui/painting/qbrush.cpp
index 66f0395582..c8dc370a8b 100644
--- a/src/gui/painting/qbrush.cpp
+++ b/src/gui/painting/qbrush.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qbrush.h b/src/gui/painting/qbrush.h
index 060d11fd79..b4cffc45db 100644
--- a/src/gui/painting/qbrush.h
+++ b/src/gui/painting/qbrush.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -65,7 +65,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
struct QBrushData;
class QPixmap;
diff --git a/src/gui/painting/qcolor.cpp b/src/gui/painting/qcolor.cpp
index 5f15ccbc63..2c95434843 100644
--- a/src/gui/painting/qcolor.cpp
+++ b/src/gui/painting/qcolor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qcolor.h b/src/gui/painting/qcolor.h
index ac525cb068..1b253395a4 100644
--- a/src/gui/painting/qcolor.h
+++ b/src/gui/painting/qcolor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QColor;
class QColormap;
diff --git a/src/gui/painting/qcolor_p.cpp b/src/gui/painting/qcolor_p.cpp
index 14b984978c..a055018353 100644
--- a/src/gui/painting/qcolor_p.cpp
+++ b/src/gui/painting/qcolor_p.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qcolor_p.h b/src/gui/painting/qcolor_p.h
index f1a4d313e3..18224e370a 100644
--- a/src/gui/painting/qcolor_p.h
+++ b/src/gui/painting/qcolor_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qcosmeticstroker.cpp b/src/gui/painting/qcosmeticstroker.cpp
index c59399c905..6f7b69f7b0 100644
--- a/src/gui/painting/qcosmeticstroker.cpp
+++ b/src/gui/painting/qcosmeticstroker.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qcosmeticstroker_p.h b/src/gui/painting/qcosmeticstroker_p.h
index a7742769bd..86e811c5f6 100644
--- a/src/gui/painting/qcosmeticstroker_p.h
+++ b/src/gui/painting/qcosmeticstroker_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QCosmeticStroker;
diff --git a/src/gui/painting/qcssutil.cpp b/src/gui/painting/qcssutil.cpp
index 4758a1362c..a3efb8133f 100644
--- a/src/gui/painting/qcssutil.cpp
+++ b/src/gui/painting/qcssutil.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qcssutil_p.h b/src/gui/painting/qcssutil_p.h
index e555788343..fcccee6ce3 100644
--- a/src/gui/painting/qcssutil_p.h
+++ b/src/gui/painting/qcssutil_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qdatabuffer_p.h b/src/gui/painting/qdatabuffer_p.h
index 6c0f5d57c6..e2855c80d0 100644
--- a/src/gui/painting/qdatabuffer_p.h
+++ b/src/gui/painting/qdatabuffer_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qdrawhelper.cpp b/src/gui/painting/qdrawhelper.cpp
index 26fe6df3d4..13b8c8cae5 100644
--- a/src/gui/painting/qdrawhelper.cpp
+++ b/src/gui/painting/qdrawhelper.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qdrawhelper_arm_simd.cpp b/src/gui/painting/qdrawhelper_arm_simd.cpp
deleted file mode 100644
index e1784e049f..0000000000
--- a/src/gui/painting/qdrawhelper_arm_simd.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 "qdrawhelper_arm_simd_p.h"
-
-#include <private/qpaintengine_raster_p.h>
-#include <private/qblendfunctions_p.h>
-
-#ifdef QT_HAVE_ARM_SIMD
-
-
-
-// TODO: add GNU assembler instructions and support for other platforms.
-// Default to C code for now
-
-void qt_blend_argb32_on_argb32_arm_simd(uchar *destPixels, int dbpl,
- const uchar *srcPixels, int sbpl,
- int w, int h,
- int const_alpha)
-{
- 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)
- dst[x] = s + BYTE_MUL(dst[x], qAlpha(~s));
- }
- 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) {
- uint s = BYTE_MUL(src[x], const_alpha);
- dst[x] = s + BYTE_MUL(dst[x], qAlpha(~s));
- }
- dst = (quint32 *)(((uchar *) dst) + dbpl);
- src = (const quint32 *)(((const uchar *) src) + sbpl);
- }
- }
-}
-
-void qt_blend_rgb32_on_rgb32_arm_simd(uchar *destPixels, int dbpl,
- const uchar *srcPixels, int sbpl,
- int w, int h,
- int const_alpha)
-{
- if (const_alpha != 256) {
- qt_blend_argb32_on_argb32_arm_simd(destPixels, dbpl, srcPixels, sbpl, w, h, const_alpha);
- return;
- }
-
- const uint *src = (const uint *) srcPixels;
- uint *dst = (uint *) destPixels;
- if (w <= 64) {
- for (int y=0; y<h; ++y) {
- qt_memconvert(dst, src, w);
- dst = (quint32 *)(((uchar *) dst) + dbpl);
- src = (const quint32 *)(((const uchar *) src) + sbpl);
- }
- } else {
- 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);
- }
- }
-}
-
-
-#endif // QT_HAVE_ARMV_SIMD
diff --git a/src/gui/painting/qdrawhelper_arm_simd_p.h b/src/gui/painting/qdrawhelper_arm_simd_p.h
deleted file mode 100644
index e920456d45..0000000000
--- a/src/gui/painting/qdrawhelper_arm_simd_p.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-#ifndef QDRAWHELPER_ARM_SIMD_P_H
-#define QDRAWHELPER_ARM_SIMD_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <private/qdrawhelper_p.h>
-
-QT_BEGIN_NAMESPACE
-
-#if defined(QT_HAVE_ARM_SIMD)
-
-void qt_blend_argb32_on_argb32_arm_simd(uchar *destPixels, int dbpl,
- const uchar *srcPixels, int sbpl,
- int w, int h,
- int const_alpha);
-
-void qt_blend_rgb32_on_rgb32_arm_simd(uchar *destPixels, int dbpl,
- const uchar *srcPixels, int sbpl,
- int w, int h,
- int const_alpha);
-
-#endif // QT_HAVE_ARM_SIMD
-
-QT_END_NAMESPACE
-
-#endif // QDRAWHELPER_ARM_SIMD_P_H
diff --git a/src/gui/painting/qdrawhelper_iwmmxt.cpp b/src/gui/painting/qdrawhelper_iwmmxt.cpp
index 59b9f28dcd..83764b41f2 100644
--- a/src/gui/painting/qdrawhelper_iwmmxt.cpp
+++ b/src/gui/painting/qdrawhelper_iwmmxt.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qdrawhelper_mmx.cpp b/src/gui/painting/qdrawhelper_mmx.cpp
index 261cf06a42..520ce6efd0 100644
--- a/src/gui/painting/qdrawhelper_mmx.cpp
+++ b/src/gui/painting/qdrawhelper_mmx.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qdrawhelper_mmx3dnow.cpp b/src/gui/painting/qdrawhelper_mmx3dnow.cpp
index 7bec5ec336..71469b65c0 100644
--- a/src/gui/painting/qdrawhelper_mmx3dnow.cpp
+++ b/src/gui/painting/qdrawhelper_mmx3dnow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qdrawhelper_mmx_p.h b/src/gui/painting/qdrawhelper_mmx_p.h
index d6f7056669..5038292029 100644
--- a/src/gui/painting/qdrawhelper_mmx_p.h
+++ b/src/gui/painting/qdrawhelper_mmx_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qdrawhelper_neon.cpp b/src/gui/painting/qdrawhelper_neon.cpp
index 09eba9103b..c3dd4fb1ef 100644
--- a/src/gui/painting/qdrawhelper_neon.cpp
+++ b/src/gui/painting/qdrawhelper_neon.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qdrawhelper_neon_asm.S b/src/gui/painting/qdrawhelper_neon_asm.S
index d1e6e585c4..4f8b204b23 100644
--- a/src/gui/painting/qdrawhelper_neon_asm.S
+++ b/src/gui/painting/qdrawhelper_neon_asm.S
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qdrawhelper_neon_p.h b/src/gui/painting/qdrawhelper_neon_p.h
index 6ce1d5e59e..d62c73196f 100644
--- a/src/gui/painting/qdrawhelper_neon_p.h
+++ b/src/gui/painting/qdrawhelper_neon_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qdrawhelper_p.h b/src/gui/painting/qdrawhelper_p.h
index 52f50240a4..bf8eadcc03 100644
--- a/src/gui/painting/qdrawhelper_p.h
+++ b/src/gui/painting/qdrawhelper_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qdrawhelper_sse.cpp b/src/gui/painting/qdrawhelper_sse.cpp
index 4e17c32c17..dd83098fe5 100644
--- a/src/gui/painting/qdrawhelper_sse.cpp
+++ b/src/gui/painting/qdrawhelper_sse.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qdrawhelper_sse2.cpp b/src/gui/painting/qdrawhelper_sse2.cpp
index f974b586d0..17b249a235 100644
--- a/src/gui/painting/qdrawhelper_sse2.cpp
+++ b/src/gui/painting/qdrawhelper_sse2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qdrawhelper_sse3dnow.cpp b/src/gui/painting/qdrawhelper_sse3dnow.cpp
index 42061feac3..1cca6b6c1d 100644
--- a/src/gui/painting/qdrawhelper_sse3dnow.cpp
+++ b/src/gui/painting/qdrawhelper_sse3dnow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qdrawhelper_sse_p.h b/src/gui/painting/qdrawhelper_sse_p.h
index 99ef917e71..81a5001fb3 100644
--- a/src/gui/painting/qdrawhelper_sse_p.h
+++ b/src/gui/painting/qdrawhelper_sse_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qdrawhelper_ssse3.cpp b/src/gui/painting/qdrawhelper_ssse3.cpp
index 1281d4d526..bc88e397da 100644
--- a/src/gui/painting/qdrawhelper_ssse3.cpp
+++ b/src/gui/painting/qdrawhelper_ssse3.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qdrawhelper_x86_p.h b/src/gui/painting/qdrawhelper_x86_p.h
index 20d0f7a36b..ada0bec0e3 100644
--- a/src/gui/painting/qdrawhelper_x86_p.h
+++ b/src/gui/painting/qdrawhelper_x86_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qdrawingprimitive_sse2_p.h b/src/gui/painting/qdrawingprimitive_sse2_p.h
index 28b9ceee8a..25d025eb39 100644
--- a/src/gui/painting/qdrawingprimitive_sse2_p.h
+++ b/src/gui/painting/qdrawingprimitive_sse2_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qemulationpaintengine.cpp b/src/gui/painting/qemulationpaintengine.cpp
index 3e40d25ec8..b7ced4e2c7 100644
--- a/src/gui/painting/qemulationpaintengine.cpp
+++ b/src/gui/painting/qemulationpaintengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qemulationpaintengine_p.h b/src/gui/painting/qemulationpaintengine_p.h
index b49ce2bdaf..0e1f09ad22 100644
--- a/src/gui/painting/qemulationpaintengine_p.h
+++ b/src/gui/painting/qemulationpaintengine_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QEmulationPaintEngine : public QPaintEngineEx
{
diff --git a/src/gui/painting/qfixed_p.h b/src/gui/painting/qfixed_p.h
index dba52f75b4..d30328b0fa 100644
--- a/src/gui/painting/qfixed_p.h
+++ b/src/gui/painting/qfixed_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qgrayraster.c b/src/gui/painting/qgrayraster.c
index 50ec22e73a..babc08bebc 100644
--- a/src/gui/painting/qgrayraster.c
+++ b/src/gui/painting/qgrayraster.c
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qgrayraster_p.h b/src/gui/painting/qgrayraster_p.h
index 11470ab279..ee30b786c8 100644
--- a/src/gui/painting/qgrayraster_p.h
+++ b/src/gui/painting/qgrayraster_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qimagescale.cpp b/src/gui/painting/qimagescale.cpp
index 83cd9ad970..94442532be 100644
--- a/src/gui/painting/qimagescale.cpp
+++ b/src/gui/painting/qimagescale.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qimagescale_p.h b/src/gui/painting/qimagescale_p.h
index 654602cefe..815598e6f0 100644
--- a/src/gui/painting/qimagescale_p.h
+++ b/src/gui/painting/qimagescale_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qmath_p.h b/src/gui/painting/qmath_p.h
index 21bbeeeaed..4efbbcabe6 100644
--- a/src/gui/painting/qmath_p.h
+++ b/src/gui/painting/qmath_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qmatrix.cpp b/src/gui/painting/qmatrix.cpp
index cf99e31b90..6b5eb14f5f 100644
--- a/src/gui/painting/qmatrix.cpp
+++ b/src/gui/painting/qmatrix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -923,15 +923,6 @@ QMatrix &QMatrix::rotate(qreal a)
*/
/*!
- \obsolete
- \fn qreal QMatrix::det() const
-
- Returns the matrix's determinant.
-
- \sa determinant()
-*/
-
-/*!
\since 4.6
\fn qreal QMatrix::determinant() const
diff --git a/src/gui/painting/qmatrix.h b/src/gui/painting/qmatrix.h
index e963b90a44..7acc962afa 100644
--- a/src/gui/painting/qmatrix.h
+++ b/src/gui/painting/qmatrix.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPainterPath;
class QVariant;
@@ -102,9 +101,6 @@ public:
bool isInvertible() const { return !qFuzzyIsNull(_m11*_m22 - _m12*_m21); }
qreal determinant() const { return _m11*_m22 - _m12*_m21; }
-#ifdef QT_DEPRECATED
- QT_DEPRECATED qreal det() const { return _m11*_m22 - _m12*_m21; }
-#endif
QMatrix inverted(bool *invertible = 0) const;
diff --git a/src/gui/painting/qmemrotate.cpp b/src/gui/painting/qmemrotate.cpp
index 478d6470b2..5d027b669b 100644
--- a/src/gui/painting/qmemrotate.cpp
+++ b/src/gui/painting/qmemrotate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qmemrotate_p.h b/src/gui/painting/qmemrotate_p.h
index d9793b2404..4c4bc94767 100644
--- a/src/gui/painting/qmemrotate_p.h
+++ b/src/gui/painting/qmemrotate_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qoutlinemapper.cpp b/src/gui/painting/qoutlinemapper.cpp
index da77722491..08ed08abb1 100644
--- a/src/gui/painting/qoutlinemapper.cpp
+++ b/src/gui/painting/qoutlinemapper.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qoutlinemapper_p.h b/src/gui/painting/qoutlinemapper_p.h
index ceb70f1a7b..12ffb7c565 100644
--- a/src/gui/painting/qoutlinemapper_p.h
+++ b/src/gui/painting/qoutlinemapper_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpagedpaintdevice.cpp b/src/gui/painting/qpagedpaintdevice.cpp
index 038852a842..7195ab8394 100644
--- a/src/gui/painting/qpagedpaintdevice.cpp
+++ b/src/gui/painting/qpagedpaintdevice.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpagedpaintdevice.h b/src/gui/painting/qpagedpaintdevice.h
index f113534956..b137bcc6b8 100644
--- a/src/gui/painting/qpagedpaintdevice.h
+++ b/src/gui/painting/qpagedpaintdevice.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPagedPaintDevicePrivate;
diff --git a/src/gui/painting/qpagedpaintdevice_p.h b/src/gui/painting/qpagedpaintdevice_p.h
index 28a2c80b94..8f5817480c 100644
--- a/src/gui/painting/qpagedpaintdevice_p.h
+++ b/src/gui/painting/qpagedpaintdevice_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpaintbuffer.cpp b/src/gui/painting/qpaintbuffer.cpp
index a4edba9299..9a57404169 100644
--- a/src/gui/painting/qpaintbuffer.cpp
+++ b/src/gui/painting/qpaintbuffer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpaintbuffer_p.h b/src/gui/painting/qpaintbuffer_p.h
index 536d5c8a61..0a049fa06e 100644
--- a/src/gui/painting/qpaintbuffer_p.h
+++ b/src/gui/painting/qpaintbuffer_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpaintdevice.cpp b/src/gui/painting/qpaintdevice.cpp
index b094019c84..d1dfa7001f 100644
--- a/src/gui/painting/qpaintdevice.cpp
+++ b/src/gui/painting/qpaintdevice.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpaintdevice.h b/src/gui/painting/qpaintdevice.h
index fdceaa1886..4053e89a1c 100644
--- a/src/gui/painting/qpaintdevice.h
+++ b/src/gui/painting/qpaintdevice.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPaintEngine;
diff --git a/src/gui/painting/qpaintdevice.qdoc b/src/gui/painting/qpaintdevice.qdoc
index 747047d53a..47c518ce10 100644
--- a/src/gui/painting/qpaintdevice.qdoc
+++ b/src/gui/painting/qpaintdevice.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpaintdevice_qpa.cpp b/src/gui/painting/qpaintdevice_qpa.cpp
index eb7408dbff..e469a5f10f 100644
--- a/src/gui/painting/qpaintdevice_qpa.cpp
+++ b/src/gui/painting/qpaintdevice_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpaintengine.cpp b/src/gui/painting/qpaintengine.cpp
index 8364218b6e..eb6d186f78 100644
--- a/src/gui/painting/qpaintengine.cpp
+++ b/src/gui/painting/qpaintengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpaintengine.h b/src/gui/painting/qpaintengine.h
index ee08ef1fbd..bc792a32e3 100644
--- a/src/gui/painting/qpaintengine.h
+++ b/src/gui/painting/qpaintengine.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QFontEngine;
class QLineF;
diff --git a/src/gui/painting/qpaintengine_blitter.cpp b/src/gui/painting/qpaintengine_blitter.cpp
index 37c158a3d9..55d46f3b63 100644
--- a/src/gui/painting/qpaintengine_blitter.cpp
+++ b/src/gui/painting/qpaintengine_blitter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpaintengine_blitter_p.h b/src/gui/painting/qpaintengine_blitter_p.h
index dba0bad9ef..957d1a546d 100644
--- a/src/gui/painting/qpaintengine_blitter_p.h
+++ b/src/gui/painting/qpaintengine_blitter_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpaintengine_p.h b/src/gui/painting/qpaintengine_p.h
index 57075fed90..594259367c 100644
--- a/src/gui/painting/qpaintengine_p.h
+++ b/src/gui/painting/qpaintengine_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpaintengine_raster.cpp b/src/gui/painting/qpaintengine_raster.cpp
index 5100393c69..f2aac442dc 100644
--- a/src/gui/painting/qpaintengine_raster.cpp
+++ b/src/gui/painting/qpaintengine_raster.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -71,17 +71,17 @@
// #include "qbezier_p.h"
#include "qoutlinemapper_p.h"
-#if defined(Q_OS_WIN)
-# include <qt_windows.h>
+#include <limits.h>
+
+#ifdef Q_OS_WIN
# include <qvarlengtharray.h>
# include <private/qfontengine_p.h>
+# include <qt_windows.h>
+#ifdef Q_OS_WIN64
+# include <malloc.h>
+# endif
#endif
-#if defined(Q_OS_WIN64)
-# include <malloc.h>
-#endif
-#include <limits.h>
-
QT_BEGIN_NAMESPACE
Q_GUI_EXPORT extern bool qt_scaleForTransform(const QTransform &transform, qreal *scale); // qtransform.cpp
@@ -2747,7 +2747,7 @@ bool QRasterPaintEngine::drawCachedGlyphs(int numGlyphs, const glyph_t *glyphs,
else if (depth == 1)
rightShift = 3; // divide by 8
- int margin = cache->glyphMargin();
+ int margin = fontEngine->glyphMargin(glyphType);
const QFixed offs = QFixed::fromReal(aliasedCoordinateDelta);
const uchar *bits = image.bits();
for (int i=0; i<numGlyphs; ++i) {
diff --git a/src/gui/painting/qpaintengine_raster_p.h b/src/gui/painting/qpaintengine_raster_p.h
index aa454c0509..7b353188a3 100644
--- a/src/gui/painting/qpaintengine_raster_p.h
+++ b/src/gui/painting/qpaintengine_raster_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpaintengineex.cpp b/src/gui/painting/qpaintengineex.cpp
index e5e14c9135..93f36ba0ab 100644
--- a/src/gui/painting/qpaintengineex.cpp
+++ b/src/gui/painting/qpaintengineex.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpaintengineex_p.h b/src/gui/painting/qpaintengineex_p.h
index 33a6081570..62c5d972de 100644
--- a/src/gui/painting/qpaintengineex_p.h
+++ b/src/gui/painting/qpaintengineex_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -65,7 +65,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPainterState;
class QPaintEngineExPrivate;
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index 77c3fc183f..43429abe8a 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpainter.h b/src/gui/painting/qpainter.h
index ba9a9fbb97..67b05eeca5 100644
--- a/src/gui/painting/qpainter.h
+++ b/src/gui/painting/qpainter.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -64,7 +64,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QBrush;
class QFontInfo;
diff --git a/src/gui/painting/qpainter_p.h b/src/gui/painting/qpainter_p.h
index 0fb3069ee0..fecf8bd960 100644
--- a/src/gui/painting/qpainter_p.h
+++ b/src/gui/painting/qpainter_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpainterpath.cpp b/src/gui/painting/qpainterpath.cpp
index 9c69644033..25dd134401 100644
--- a/src/gui/painting/qpainterpath.cpp
+++ b/src/gui/painting/qpainterpath.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpainterpath.h b/src/gui/painting/qpainterpath.h
index 46af341df3..40456bc163 100644
--- a/src/gui/painting/qpainterpath.h
+++ b/src/gui/painting/qpainterpath.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QFont;
class QPainterPathPrivate;
diff --git a/src/gui/painting/qpainterpath_p.h b/src/gui/painting/qpainterpath_p.h
index 1cf00bbae3..23e8332f19 100644
--- a/src/gui/painting/qpainterpath_p.h
+++ b/src/gui/painting/qpainterpath_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpathclipper.cpp b/src/gui/painting/qpathclipper.cpp
index 03f48d8fda..6e8bc2ac74 100644
--- a/src/gui/painting/qpathclipper.cpp
+++ b/src/gui/painting/qpathclipper.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpathclipper_p.h b/src/gui/painting/qpathclipper_p.h
index daf97884c0..85b66a1515 100644
--- a/src/gui/painting/qpathclipper_p.h
+++ b/src/gui/painting/qpathclipper_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -64,7 +64,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QWingedEdge;
diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp
index 62f4b9b3f6..843551d51f 100644
--- a/src/gui/painting/qpdf.cpp
+++ b/src/gui/painting/qpdf.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpdf_p.h b/src/gui/painting/qpdf_p.h
index 32b59e92e8..7dd1386ec6 100644
--- a/src/gui/painting/qpdf_p.h
+++ b/src/gui/painting/qpdf_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpdfwriter.cpp b/src/gui/painting/qpdfwriter.cpp
index 23be05c49c..f9a969c166 100644
--- a/src/gui/painting/qpdfwriter.cpp
+++ b/src/gui/painting/qpdfwriter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpdfwriter.h b/src/gui/painting/qpdfwriter.h
index dfe49b403a..7b0547ad45 100644
--- a/src/gui/painting/qpdfwriter.h
+++ b/src/gui/painting/qpdfwriter.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QIODevice;
class QPdfWriterPrivate;
diff --git a/src/gui/painting/qpen.cpp b/src/gui/painting/qpen.cpp
index 3654c6f007..b6966b12c3 100644
--- a/src/gui/painting/qpen.cpp
+++ b/src/gui/painting/qpen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpen.h b/src/gui/painting/qpen.h
index 708f131ece..35b3f5eec6 100644
--- a/src/gui/painting/qpen.h
+++ b/src/gui/painting/qpen.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QVariant;
class QPenPrivate;
diff --git a/src/gui/painting/qpen_p.h b/src/gui/painting/qpen_p.h
index 4610026e2f..37979239fb 100644
--- a/src/gui/painting/qpen_p.h
+++ b/src/gui/painting/qpen_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qplatformbackingstore_qpa.cpp b/src/gui/painting/qplatformbackingstore_qpa.cpp
index 9d855735f4..485190d301 100644
--- a/src/gui/painting/qplatformbackingstore_qpa.cpp
+++ b/src/gui/painting/qplatformbackingstore_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qplatformbackingstore_qpa.h b/src/gui/painting/qplatformbackingstore_qpa.h
index a47106771e..8049c64c25 100644
--- a/src/gui/painting/qplatformbackingstore_qpa.h
+++ b/src/gui/painting/qplatformbackingstore_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QRegion;
class QRect;
diff --git a/src/gui/painting/qpolygon.cpp b/src/gui/painting/qpolygon.cpp
index b745e1a6ee..3a4860a559 100644
--- a/src/gui/painting/qpolygon.cpp
+++ b/src/gui/painting/qpolygon.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qpolygon.h b/src/gui/painting/qpolygon.h
index 348cf9eef7..0a089d3cf3 100644
--- a/src/gui/painting/qpolygon.h
+++ b/src/gui/painting/qpolygon.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QMatrix;
class QTransform;
diff --git a/src/gui/painting/qpolygonclipper_p.h b/src/gui/painting/qpolygonclipper_p.h
index 6512a3a0ed..1344270b9e 100644
--- a/src/gui/painting/qpolygonclipper_p.h
+++ b/src/gui/painting/qpolygonclipper_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qrasterdefs_p.h b/src/gui/painting/qrasterdefs_p.h
index a113ab0abf..b6a52c2e2c 100644
--- a/src/gui/painting/qrasterdefs_p.h
+++ b/src/gui/painting/qrasterdefs_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qrasterizer.cpp b/src/gui/painting/qrasterizer.cpp
index 5a46d1ba48..3ccfb08973 100644
--- a/src/gui/painting/qrasterizer.cpp
+++ b/src/gui/painting/qrasterizer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qrasterizer_p.h b/src/gui/painting/qrasterizer_p.h
index ed7d4eb957..f335b4c395 100644
--- a/src/gui/painting/qrasterizer_p.h
+++ b/src/gui/painting/qrasterizer_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qregion.cpp b/src/gui/painting/qregion.cpp
index 68338602e2..48b0c00014 100644
--- a/src/gui/painting/qregion.cpp
+++ b/src/gui/painting/qregion.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -3930,7 +3930,7 @@ void QRegion::translate(int dx, int dy)
OffsetRegion(*d->qt_rgn, dx, dy);
}
-QRegion QRegion::unite(const QRegion &r) const
+QRegion QRegion::united(const QRegion &r) const
{
if (isEmptyHelper(d->qt_rgn))
return r;
@@ -3993,7 +3993,7 @@ QRegion& QRegion::operator+=(const QRegion &r)
}
}
-QRegion QRegion::unite(const QRect &r) const
+QRegion QRegion::united(const QRect &r) const
{
if (isEmptyHelper(d->qt_rgn))
return r;
@@ -4054,7 +4054,7 @@ QRegion& QRegion::operator+=(const QRect &r)
}
}
-QRegion QRegion::intersect(const QRegion &r) const
+QRegion QRegion::intersected(const QRegion &r) const
{
if (isEmptyHelper(d->qt_rgn) || isEmptyHelper(r.d->qt_rgn)
|| !EXTENTCHECK(&d->qt_rgn->extents, &r.d->qt_rgn->extents))
@@ -4099,7 +4099,7 @@ QRegion QRegion::intersect(const QRegion &r) const
return result;
}
-QRegion QRegion::intersect(const QRect &r) const
+QRegion QRegion::intersected(const QRect &r) const
{
if (isEmptyHelper(d->qt_rgn) || r.isEmpty()
|| !EXTENTCHECK(&d->qt_rgn->extents, &r))
@@ -4125,7 +4125,7 @@ QRegion QRegion::intersect(const QRect &r) const
return result;
}
-QRegion QRegion::subtract(const QRegion &r) const
+QRegion QRegion::subtracted(const QRegion &r) const
{
if (isEmptyHelper(d->qt_rgn) || isEmptyHelper(r.d->qt_rgn))
return *this;
@@ -4150,7 +4150,7 @@ QRegion QRegion::subtract(const QRegion &r) const
return result;
}
-QRegion QRegion::eor(const QRegion &r) const
+QRegion QRegion::xored(const QRegion &r) const
{
if (isEmptyHelper(d->qt_rgn)) {
return r;
@@ -4257,11 +4257,6 @@ void QRegion::setRects(const QRect *rects, int num)
}
}
-int QRegion::numRects() const
-{
- return (d->qt_rgn ? d->qt_rgn->numRects : 0);
-}
-
int QRegion::rectCount() const
{
return (d->qt_rgn ? d->qt_rgn->numRects : 0);
diff --git a/src/gui/painting/qregion.h b/src/gui/painting/qregion.h
index 834a015ceb..aa8b21b624 100644
--- a/src/gui/painting/qregion.h
+++ b/src/gui/painting/qregion.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
template <class T> class QVector;
class QVariant;
@@ -92,20 +91,21 @@ public:
QRegion translated(int dx, int dy) const;
inline QRegion translated(const QPoint &p) const { return translated(p.x(), p.y()); }
- // ### Qt 5: make these four functions QT4_SUPPORT
- QRegion unite(const QRegion &r) const;
- QRegion unite(const QRect &r) const;
- QRegion intersect(const QRegion &r) const;
- QRegion intersect(const QRect &r) const;
- QRegion subtract(const QRegion &r) const;
- QRegion eor(const QRegion &r) const;
-
- inline QRegion united(const QRegion &r) const { return unite(r); }
- inline QRegion united(const QRect &r) const { return unite(r); }
- inline QRegion intersected(const QRegion &r) const { return intersect(r); }
- inline QRegion intersected(const QRect &r) const { return intersect(r); }
- inline QRegion subtracted(const QRegion &r) const { return subtract(r); }
- inline QRegion xored(const QRegion &r) const { return eor(r); }
+ QRegion united(const QRegion &r) const;
+ QRegion united(const QRect &r) const;
+ QRegion intersected(const QRegion &r) const;
+ QRegion intersected(const QRect &r) const;
+ QRegion subtracted(const QRegion &r) const;
+ QRegion xored(const QRegion &r) const;
+
+#if QT_DEPRECATED_SINCE(5, 0)
+ inline QT_DEPRECATED QRegion unite(const QRegion &r) const { return united(r); }
+ inline QT_DEPRECATED QRegion unite(const QRect &r) const { return united(r); }
+ inline QT_DEPRECATED QRegion intersect(const QRegion &r) const { return intersected(r); }
+ inline QT_DEPRECATED QRegion intersect(const QRect &r) const { return intersected(r); }
+ inline QT_DEPRECATED QRegion subtract(const QRegion &r) const { return subtracted(r); }
+ inline QT_DEPRECATED QRegion eor(const QRegion &r) const { return xored(r); }
+#endif
bool intersects(const QRegion &r) const;
bool intersects(const QRect &r) const;
@@ -113,9 +113,6 @@ public:
QRect boundingRect() const;
QVector<QRect> rects() const;
void setRects(const QRect *rect, int num);
-#ifdef QT_DEPRECATED
- QT_DEPRECATED int numRects() const;
-#endif
int rectCount() const;
const QRegion operator|(const QRegion &r) const;
diff --git a/src/gui/painting/qrgb.h b/src/gui/painting/qrgb.h
index b982707344..6d046be1d5 100644
--- a/src/gui/painting/qrgb.h
+++ b/src/gui/painting/qrgb.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
typedef unsigned int QRgb; // RGB triplet
diff --git a/src/gui/painting/qstroker.cpp b/src/gui/painting/qstroker.cpp
index f7e50c82c0..ddf828982a 100644
--- a/src/gui/painting/qstroker.cpp
+++ b/src/gui/painting/qstroker.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qstroker_p.h b/src/gui/painting/qstroker_p.h
index b6cae1d2a0..30953d304b 100644
--- a/src/gui/painting/qstroker_p.h
+++ b/src/gui/painting/qstroker_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qtextureglyphcache.cpp b/src/gui/painting/qtextureglyphcache.cpp
index 0743804319..dacedbdfc8 100644
--- a/src/gui/painting/qtextureglyphcache.cpp
+++ b/src/gui/painting/qtextureglyphcache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -108,7 +108,7 @@ bool QTextureGlyphCache::populate(QFontEngine *fontEngine, int numGlyphs, const
#endif
m_current_fontengine = fontEngine;
- const int margin = glyphMargin();
+ const int margin = m_current_fontengine->glyphMargin(m_type);
const int paddingDoubled = glyphPadding() * 2;
bool supportsSubPixelPositions = fontEngine->supportsSubPixelPositions();
@@ -274,7 +274,7 @@ void QTextureGlyphCache::fillInPendingGlyphs()
QImage QTextureGlyphCache::textureMapForGlyph(glyph_t g, QFixed subPixelPosition) const
{
if (m_type == QFontEngineGlyphCache::Raster_RGBMask)
- return m_current_fontengine->alphaRGBMapForGlyph(g, subPixelPosition, glyphMargin(), m_transform);
+ return m_current_fontengine->alphaRGBMapForGlyph(g, subPixelPosition, m_transform);
else
return m_current_fontengine->alphaMapForGlyph(g, subPixelPosition, m_transform);
@@ -311,11 +311,6 @@ void QImageTextureGlyphCache::createTextureData(int width, int height)
}
}
-int QImageTextureGlyphCache::glyphMargin() const
-{
- return m_type == QFontEngineGlyphCache::Raster_RGBMask ? 2 : 0;
-}
-
void QImageTextureGlyphCache::fillTexture(const Coord &c, glyph_t g, QFixed subPixelPosition)
{
QImage mask = textureMapForGlyph(g, subPixelPosition);
@@ -400,7 +395,8 @@ void QImageTextureGlyphCache::fillTexture(const Coord &c, glyph_t g, QFixed subP
#ifdef CACHE_DEBUG
// QPainter p(&m_image);
// p.drawLine(
- QPoint base(c.x + glyphMargin(), c.y + glyphMargin() + c.baseLineY-1);
+ int margin = m_current_fontengine ? m_current_fontengine->glyphMargin(m_type) : 0;
+ QPoint base(c.x + margin, c.y + margin + c.baseLineY-1);
if (m_image.rect().contains(base))
m_image.setPixel(base, 255);
m_image.save(QString::fromLatin1("cache-%1.png").arg(qint64(this)));
diff --git a/src/gui/painting/qtextureglyphcache_p.h b/src/gui/painting/qtextureglyphcache_p.h
index d29a31f4f3..dc9eef13e8 100644
--- a/src/gui/painting/qtextureglyphcache_p.h
+++ b/src/gui/painting/qtextureglyphcache_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -120,7 +120,6 @@ public:
virtual void createTextureData(int width, int height) = 0;
virtual void resizeTextureData(int width, int height) = 0;
- virtual int glyphMargin() const { return 0; }
virtual int glyphPadding() const { return 0; }
virtual void fillTexture(const Coord &coord, glyph_t glyph, QFixed subPixelPosition) = 0;
@@ -170,7 +169,6 @@ class Q_GUI_EXPORT QImageTextureGlyphCache : public QTextureGlyphCache
public:
QImageTextureGlyphCache(QFontEngineGlyphCache::Type type, const QTransform &matrix)
: QTextureGlyphCache(type, matrix) { }
- virtual int glyphMargin() const;
virtual void createTextureData(int width, int height);
virtual void resizeTextureData(int width, int height);
virtual void fillTexture(const Coord &c, glyph_t glyph, QFixed subPixelPosition);
diff --git a/src/gui/painting/qtransform.cpp b/src/gui/painting/qtransform.cpp
index f9948bf8d1..363dd26bbf 100644
--- a/src/gui/painting/qtransform.cpp
+++ b/src/gui/painting/qtransform.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/painting/qtransform.h b/src/gui/painting/qtransform.h
index 08a4861100..2e56da1873 100644
--- a/src/gui/painting/qtransform.h
+++ b/src/gui/painting/qtransform.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -58,7 +58,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QVariant;
diff --git a/src/gui/painting/qvectorpath_p.h b/src/gui/painting/qvectorpath_p.h
index 8a54e65aed..2ee7d86b97 100644
--- a/src/gui/painting/qvectorpath_p.h
+++ b/src/gui/painting/qvectorpath_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -64,7 +64,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPaintEngineEx;
diff --git a/src/gui/text/qabstractfontengine_p.h b/src/gui/text/qabstractfontengine_p.h
index 7d0eaa7b42..5200fd3c8f 100644
--- a/src/gui/text/qabstractfontengine_p.h
+++ b/src/gui/text/qabstractfontengine_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qabstracttextdocumentlayout.cpp b/src/gui/text/qabstracttextdocumentlayout.cpp
index 5dd29e6548..2c22b72846 100644
--- a/src/gui/text/qabstracttextdocumentlayout.cpp
+++ b/src/gui/text/qabstracttextdocumentlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qabstracttextdocumentlayout.h b/src/gui/text/qabstracttextdocumentlayout.h
index 1362640b4f..126a9ac996 100644
--- a/src/gui/text/qabstracttextdocumentlayout.h
+++ b/src/gui/text/qabstracttextdocumentlayout.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QAbstractTextDocumentLayoutPrivate;
class QTextBlock;
@@ -123,7 +122,6 @@ protected:
private:
friend class QWidgetTextControl;
- friend class QTextControl;
friend class QTextDocument;
friend class QTextDocumentPrivate;
friend class QTextEngine;
@@ -142,7 +140,7 @@ public:
virtual void drawObject(QPainter *painter, const QRectF &rect, QTextDocument *doc, int posInDocument, const QTextFormat &format) = 0;
};
-Q_DECLARE_INTERFACE(QTextObjectInterface, "com.trolltech.Qt.QTextObjectInterface")
+Q_DECLARE_INTERFACE(QTextObjectInterface, "org.qt-project.Qt.QTextObjectInterface")
QT_END_NAMESPACE
diff --git a/src/gui/text/qabstracttextdocumentlayout_p.h b/src/gui/text/qabstracttextdocumentlayout_p.h
index 6f8f113bff..8982826347 100644
--- a/src/gui/text/qabstracttextdocumentlayout_p.h
+++ b/src/gui/text/qabstracttextdocumentlayout_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qcssparser.cpp b/src/gui/text/qcssparser.cpp
index 06a88f02ee..38070458b7 100644
--- a/src/gui/text/qcssparser.cpp
+++ b/src/gui/text/qcssparser.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qcssparser_p.h b/src/gui/text/qcssparser_p.h
index fa60a3fd2e..d50b87dcd5 100644
--- a/src/gui/text/qcssparser_p.h
+++ b/src/gui/text/qcssparser_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qcssscanner.cpp b/src/gui/text/qcssscanner.cpp
index 07928a62af..8b13125233 100644
--- a/src/gui/text/qcssscanner.cpp
+++ b/src/gui/text/qcssscanner.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qfont.cpp b/src/gui/text/qfont.cpp
index 1ac398967d..a347c62629 100644
--- a/src/gui/text/qfont.cpp
+++ b/src/gui/text/qfont.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -692,7 +692,7 @@ QFont::QFont()
If \a pointSize is zero or negative, the point size of the font
is set to a system-dependent default value. Generally, this is
- 12 points, except on Symbian where it is 7 points.
+ 12 points.
The \a family name may optionally also include a foundry name,
e.g. "Helvetica [Cronyx]". If the \a family is
diff --git a/src/gui/text/qfont.h b/src/gui/text/qfont.h
index afeea3ce65..9cc61198a5 100644
--- a/src/gui/text/qfont.h
+++ b/src/gui/text/qfont.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QFontPrivate; /* don't touch */
class QStringList;
diff --git a/src/gui/text/qfont_p.h b/src/gui/text/qfont_p.h
index b57af5f213..e26a98aaf2 100644
--- a/src/gui/text/qfont_p.h
+++ b/src/gui/text/qfont_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qfont_qpa.cpp b/src/gui/text/qfont_qpa.cpp
index 2f5b6f7660..7fcbe98b6f 100644
--- a/src/gui/text/qfont_qpa.cpp
+++ b/src/gui/text/qfont_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qfontdatabase.cpp b/src/gui/text/qfontdatabase.cpp
index e7cbe2a8a8..3ef28b8e50 100644
--- a/src/gui/text/qfontdatabase.cpp
+++ b/src/gui/text/qfontdatabase.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -552,15 +552,6 @@ public:
struct ApplicationFont {
QString fileName;
QByteArray data;
-#if defined(Q_OS_WIN)
- HANDLE handle;
- bool memoryFont;
- QVector<FONTSIGNATURE> signatures;
-#elif defined(Q_OS_SYMBIAN)
- QString temporaryFileName;
- TInt screenDeviceFontFileId;
- TUid fontStoreFontFileUid;
-#endif
QStringList families;
};
QVector<ApplicationFont> applicationFonts;
@@ -2197,8 +2188,6 @@ bool QFontDatabasePrivate::isApplicationFont(const QString &fileName)
\note Adding application fonts on Unix/X11 platforms without fontconfig is
currently not supported.
- \note On Symbian, the font family names get truncated to a length of 20 characters.
-
\sa addApplicationFontFromData(), applicationFontFamilies(), removeApplicationFont()
*/
int QFontDatabase::addApplicationFont(const QString &fileName)
@@ -2229,8 +2218,6 @@ int QFontDatabase::addApplicationFont(const QString &fileName)
\bold{Note:} Adding application fonts on Unix/X11 platforms without fontconfig is
currently not supported.
- \note On Symbian, the font family names get truncated to a length of 20 characters.
-
\sa addApplicationFont(), applicationFontFamilies(), removeApplicationFont()
*/
int QFontDatabase::addApplicationFontFromData(const QByteArray &fontData)
diff --git a/src/gui/text/qfontdatabase.h b/src/gui/text/qfontdatabase.h
index 3bfc07fbfd..b30f7da48d 100644
--- a/src/gui/text/qfontdatabase.h
+++ b/src/gui/text/qfontdatabase.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QStringList;
template <class T> class QList;
@@ -162,7 +161,6 @@ private:
friend class QFontDialogPrivate;
friend class QFontEngineMultiXLFD;
friend class QFontEngineMultiQWS;
- friend class QFontEngineMultiS60;
friend class QFontEngineMultiQPA;
#ifdef QT_BUILD_INTERNAL
friend class ::tst_QFont;
diff --git a/src/gui/text/qfontdatabase_qpa.cpp b/src/gui/text/qfontdatabase_qpa.cpp
index a5cb923460..16777d593c 100644
--- a/src/gui/text/qfontdatabase_qpa.cpp
+++ b/src/gui/text/qfontdatabase_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qfontengine.cpp b/src/gui/text/qfontengine.cpp
index d569cb58b9..156a4a1e59 100644
--- a/src/gui/text/qfontengine.cpp
+++ b/src/gui/text/qfontengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -618,7 +618,7 @@ QImage QFontEngine::alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition, con
return i;
}
-QImage QFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed /*subPixelPosition*/, int /* margin */, const QTransform &t)
+QImage QFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed /*subPixelPosition*/, const QTransform &t)
{
QImage alphaMask = alphaMapForGlyph(glyph, t);
QImage rgbMask(alphaMask.width(), alphaMask.height(), QImage::Format_RGB32);
@@ -664,7 +664,7 @@ QImage *QFontEngine::lockedAlphaMapForGlyph(glyph_t glyph, QFixed subPixelPositi
if (neededFormat != Format_A32)
currentlyLockedAlphaMap = alphaMapForGlyph(glyph, subPixelPosition, t);
else
- currentlyLockedAlphaMap = alphaRGBMapForGlyph(glyph, subPixelPosition, 0, t);
+ currentlyLockedAlphaMap = alphaRGBMapForGlyph(glyph, subPixelPosition, t);
if (offset != 0)
*offset = QPoint(0, 0);
@@ -1747,11 +1747,11 @@ QImage QFontEngineMulti::alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition
return engine(which)->alphaMapForGlyph(stripped(glyph), subPixelPosition, t);
}
-QImage QFontEngineMulti::alphaRGBMapForGlyph(glyph_t glyph, QFixed subPixelPosition, int margin, const QTransform &t)
+QImage QFontEngineMulti::alphaRGBMapForGlyph(glyph_t glyph, QFixed subPixelPosition, const QTransform &t)
{
const int which = highByte(glyph);
Q_ASSERT(which < engines.size());
- return engine(which)->alphaRGBMapForGlyph(stripped(glyph), subPixelPosition, margin, t);
+ return engine(which)->alphaRGBMapForGlyph(stripped(glyph), subPixelPosition, t);
}
QT_END_NAMESPACE
diff --git a/src/gui/text/qfontengine_ft.cpp b/src/gui/text/qfontengine_ft.cpp
index e41c0a93c7..cecf9d1feb 100644
--- a/src/gui/text/qfontengine_ft.cpp
+++ b/src/gui/text/qfontengine_ft.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -205,6 +205,8 @@ HB_Error QFreetypeFace::getPointInOutline(HB_Glyph glyph, int flags, hb_uint32 p
return HB_Err_Ok;
}
+extern QByteArray qt_fontdata_from_index(int);
+
/*
* One font file can contain more than one font (bold/italic for example)
* find the right one and return it.
@@ -232,7 +234,6 @@ QFreetypeFace *QFreetypeFace::getFace(const QFontEngine::FaceId &face_id,
QFile file(QString::fromUtf8(face_id.filename));
if (face_id.filename.startsWith(":qmemoryfonts/")) {
// from qfontdatabase.cpp
- extern QByteArray qt_fontdata_from_index(int);
QByteArray idx = face_id.filename;
idx.remove(0, 14); // remove ':qmemoryfonts/'
bool ok = false;
@@ -1896,17 +1897,17 @@ QImage QFontEngineFT::alphaMapForGlyph(glyph_t g, QFixed subPixelPosition)
return img;
}
-QImage QFontEngineFT::alphaRGBMapForGlyph(glyph_t g, QFixed subPixelPosition, int margin, const QTransform &t)
+QImage QFontEngineFT::alphaRGBMapForGlyph(glyph_t g, QFixed subPixelPosition, const QTransform &t)
{
if (t.type() > QTransform::TxTranslate)
- return QFontEngine::alphaRGBMapForGlyph(g, subPixelPosition, margin, t);
+ return QFontEngine::alphaRGBMapForGlyph(g, subPixelPosition, t);
lockFace();
Glyph *glyph = loadGlyphFor(g, subPixelPosition, Format_A32);
if (!glyph) {
unlockFace();
- return QFontEngine::alphaRGBMapForGlyph(g, subPixelPosition, margin, t);
+ return QFontEngine::alphaRGBMapForGlyph(g, subPixelPosition, t);
}
QImage img(glyph->width, glyph->height, QImage::Format_RGB32);
@@ -2058,7 +2059,7 @@ bool QFontEngineFT::initFromFontEngine(const QFontEngineFT *fe)
QFontEngine *QFontEngineFT::cloneWithSize(qreal pixelSize) const
{
- QFontDef fontDef;
+ QFontDef fontDef(this->fontDef);
fontDef.pixelSize = pixelSize;
QFontEngineFT *fe = new QFontEngineFT(fontDef);
if (!fe->initFromFontEngine(this)) {
diff --git a/src/gui/text/qfontengine_ft_p.h b/src/gui/text/qfontengine_ft_p.h
index c84c11163a..a9e67c10e8 100644
--- a/src/gui/text/qfontengine_ft_p.h
+++ b/src/gui/text/qfontengine_ft_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -255,7 +255,7 @@ private:
virtual void recalcAdvances(QGlyphLayout *glyphs, QTextEngine::ShaperFlags flags) const;
virtual QImage alphaMapForGlyph(glyph_t g) { return alphaMapForGlyph(g, 0); }
virtual QImage alphaMapForGlyph(glyph_t, QFixed);
- virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, int margin, const QTransform &t);
+ virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t);
virtual glyph_metrics_t alphaMapBoundingBox(glyph_t glyph,
QFixed subPixelPosition,
const QTransform &matrix,
@@ -267,6 +267,7 @@ private:
virtual void unlockAlphaMapForGlyph();
virtual void removeGlyphFromCache(glyph_t glyph);
+ virtual int glyphMargin(QFontEngineGlyphCache::Type /* type */) { return 0; }
virtual int glyphCount() const;
diff --git a/src/gui/text/qfontengine_p.h b/src/gui/text/qfontengine_p.h
index 02523ada82..c0bd1afb80 100644
--- a/src/gui/text/qfontengine_p.h
+++ b/src/gui/text/qfontengine_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -105,9 +105,6 @@ public:
QPF2,
Proxy,
- // S60 types
- S60FontEngine, // Cannot be simply called "S60". Reason is qt_s60Data.h
-
DirectWrite,
TestFontEngine = 0x1000
@@ -189,7 +186,7 @@ public:
virtual QImage alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition);
virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t);
virtual QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t);
- virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, int margin, const QTransform &t);
+ virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t);
virtual QImage *lockedAlphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition,
GlyphFormat neededFormat,
const QTransform &t = QTransform(),
@@ -231,6 +228,7 @@ public:
virtual Type type() const = 0;
virtual int glyphCount() const;
+ virtual int glyphMargin(QFontEngineGlyphCache::Type type) { return type == QFontEngineGlyphCache::Raster_RGBMask ? 2 : 0; }
virtual QFontEngine *cloneWithSize(qreal /*pixelSize*/) const { return 0; }
@@ -370,7 +368,7 @@ public:
virtual QImage alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition);
virtual QImage alphaMapForGlyph(glyph_t, const QTransform &t);
virtual QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t);
- virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, int margin, const QTransform &t);
+ virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t);
virtual QFixed lineThickness() const;
virtual QFixed underlinePosition() const;
diff --git a/src/gui/text/qfontengine_qpa.cpp b/src/gui/text/qfontengine_qpa.cpp
index 3408d3a2a8..33657367fa 100644
--- a/src/gui/text/qfontengine_qpa.cpp
+++ b/src/gui/text/qfontengine_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qfontengine_qpa_p.h b/src/gui/text/qfontengine_qpa_p.h
index d09692bc57..6a73b9d309 100644
--- a/src/gui/text/qfontengine_qpa_p.h
+++ b/src/gui/text/qfontengine_qpa_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qfontengine_qpf.cpp b/src/gui/text/qfontengine_qpf.cpp
index bedc54f92a..fb898a850f 100644
--- a/src/gui/text/qfontengine_qpf.cpp
+++ b/src/gui/text/qfontengine_qpf.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qfontengine_qpf_p.h b/src/gui/text/qfontengine_qpf_p.h
index 8a79f65814..a31d578805 100644
--- a/src/gui/text/qfontengine_qpf_p.h
+++ b/src/gui/text/qfontengine_qpf_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qfontenginedirectwrite.cpp b/src/gui/text/qfontenginedirectwrite.cpp
index 438d30a913..afbc41daeb 100644
--- a/src/gui/text/qfontenginedirectwrite.cpp
+++ b/src/gui/text/qfontenginedirectwrite.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -641,10 +641,11 @@ QImage QFontEngineDirectWrite::imageForGlyph(glyph_t t,
QImage QFontEngineDirectWrite::alphaRGBMapForGlyph(glyph_t t,
QFixed subPixelPosition,
- int margin,
const QTransform &xform)
{
- QImage mask = imageForGlyph(t, subPixelPosition, margin, xform);
+ QImage mask = imageForGlyph(t, subPixelPosition,
+ glyphMargin(QFontEngineGlyphCache::Raster_RGBMask),
+ xform);
return mask.depth() == 32
? mask
: mask.convertToFormat(QImage::Format_RGB32);
diff --git a/src/gui/text/qfontenginedirectwrite_p.h b/src/gui/text/qfontenginedirectwrite_p.h
index 26198e64ee..ecbbf4fb37 100644
--- a/src/gui/text/qfontenginedirectwrite_p.h
+++ b/src/gui/text/qfontenginedirectwrite_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -102,8 +102,7 @@ public:
bool supportsSubPixelPositions() const;
QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t);
- QImage alphaRGBMapForGlyph(glyph_t t, QFixed subPixelPosition, int margin,
- const QTransform &xform);
+ QImage alphaRGBMapForGlyph(glyph_t t, QFixed subPixelPosition, const QTransform &xform);
QFontEngine *cloneWithSize(qreal pixelSize) const;
diff --git a/src/gui/text/qfontengineglyphcache_p.h b/src/gui/text/qfontengineglyphcache_p.h
index 855c4a0aa0..f23d6a7860 100644
--- a/src/gui/text/qfontengineglyphcache_p.h
+++ b/src/gui/text/qfontengineglyphcache_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qfontinfo.h b/src/gui/text/qfontinfo.h
index 88e1d9f65d..edaed281fe 100644
--- a/src/gui/text/qfontinfo.h
+++ b/src/gui/text/qfontinfo.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class Q_GUI_EXPORT QFontInfo
{
diff --git a/src/gui/text/qfontmetrics.cpp b/src/gui/text/qfontmetrics.cpp
index 11e41ad685..a2f0dd724a 100644
--- a/src/gui/text/qfontmetrics.cpp
+++ b/src/gui/text/qfontmetrics.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qfontmetrics.h b/src/gui/text/qfontmetrics.h
index f5184aacba..7ddc8975e4 100644
--- a/src/gui/text/qfontmetrics.h
+++ b/src/gui/text/qfontmetrics.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QTextCodec;
diff --git a/src/gui/text/qfontsubset.cpp b/src/gui/text/qfontsubset.cpp
index 91d8264f76..b015f71b57 100644
--- a/src/gui/text/qfontsubset.cpp
+++ b/src/gui/text/qfontsubset.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qfontsubset_p.h b/src/gui/text/qfontsubset_p.h
index 3dabec5f0b..5605c2a4a2 100644
--- a/src/gui/text/qfontsubset_p.h
+++ b/src/gui/text/qfontsubset_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qfragmentmap.cpp b/src/gui/text/qfragmentmap.cpp
index ac923bb639..35679cef48 100644
--- a/src/gui/text/qfragmentmap.cpp
+++ b/src/gui/text/qfragmentmap.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qfragmentmap_p.h b/src/gui/text/qfragmentmap_p.h
index e6da236552..776a03c9c5 100644
--- a/src/gui/text/qfragmentmap_p.h
+++ b/src/gui/text/qfragmentmap_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qglyphrun.cpp b/src/gui/text/qglyphrun.cpp
index 3f9989090a..813e0a804a 100644
--- a/src/gui/text/qglyphrun.cpp
+++ b/src/gui/text/qglyphrun.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qglyphrun.h b/src/gui/text/qglyphrun.h
index 0c47c6f4bc..847b7e4852 100644
--- a/src/gui/text/qglyphrun.h
+++ b/src/gui/text/qglyphrun.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QGlyphRunPrivate;
class Q_GUI_EXPORT QGlyphRun
diff --git a/src/gui/text/qglyphrun_p.h b/src/gui/text/qglyphrun_p.h
index c3b6cf40be..b75862b762 100644
--- a/src/gui/text/qglyphrun_p.h
+++ b/src/gui/text/qglyphrun_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qlinecontrol.cpp b/src/gui/text/qlinecontrol.cpp
deleted file mode 100644
index fc8bcafed4..0000000000
--- a/src/gui/text/qlinecontrol.cpp
+++ /dev/null
@@ -1,1729 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-// ###
-#define QT_NO_ACCESSIBILITY
-
-#include "qlinecontrol_p.h"
-
-#ifndef QT_NO_LINEEDIT
-
-#include "qclipboard.h"
-#ifndef QT_NO_ACCESSIBILITY
-#include "qaccessible.h"
-#endif
-#include "qguiapplication.h"
-#include "qstylehints.h"
-
-QT_BEGIN_NAMESPACE
-
-// ### these should come from QStyleHints
-const int textCursorWidth = 1;
-const bool fullWidthSelection = true;
-
-/*!
- \internal
-
- Updates the display text based of the current edit text
- If the text has changed will emit displayTextChanged()
-*/
-void QLineControl::updateDisplayText(bool forceUpdate)
-{
- QString orig = m_textLayout.text();
- QString str;
- if (m_echoMode == NoEcho)
- str = QString::fromLatin1("");
- else
- str = m_text;
-
- if (m_echoMode == Password || (m_echoMode == PasswordEchoOnEdit
- && !m_passwordEchoEditing))
- str.fill(m_passwordCharacter);
-
- // replace certain non-printable characters with spaces (to avoid
- // drawing boxes when using fonts that don't have glyphs for such
- // characters)
- QChar* uc = str.data();
- for (int i = 0; i < (int)str.length(); ++i) {
- if ((uc[i] < 0x20 && uc[i] != 0x09)
- || uc[i] == QChar::LineSeparator
- || uc[i] == QChar::ParagraphSeparator
- || uc[i] == QChar::ObjectReplacementCharacter)
- uc[i] = QChar(0x0020);
- }
-
- m_textLayout.setText(str);
-
- QTextOption option = m_textLayout.textOption();
- option.setTextDirection(m_layoutDirection);
- option.setFlags(QTextOption::IncludeTrailingSpaces);
- m_textLayout.setTextOption(option);
-
- m_textLayout.beginLayout();
- QTextLine l = m_textLayout.createLine();
- m_textLayout.endLayout();
- m_ascent = qRound(l.ascent());
-
- if (str != orig || forceUpdate)
- emit displayTextChanged(str);
-}
-
-#ifndef QT_NO_CLIPBOARD
-/*!
- \internal
-
- Copies the currently selected text into the clipboard using the given
- \a mode.
-
- \note If the echo mode is set to a mode other than Normal then copy
- will not work. This is to prevent using copy as a method of bypassing
- password features of the line control.
-*/
-void QLineControl::copy(QClipboard::Mode mode) const
-{
- QString t = selectedText();
- if (!t.isEmpty() && m_echoMode == Normal) {
- disconnect(QGuiApplication::clipboard(), SIGNAL(selectionChanged()), this, 0);
- QGuiApplication::clipboard()->setText(t, mode);
- connect(QGuiApplication::clipboard(), SIGNAL(selectionChanged()),
- this, SLOT(_q_clipboardChanged()));
- }
-}
-
-/*!
- \internal
-
- Inserts the text stored in the application clipboard into the line
- control.
-
- \sa insert()
-*/
-void QLineControl::paste(QClipboard::Mode clipboardMode)
-{
- QString clip = QGuiApplication::clipboard()->text(clipboardMode);
- if (!clip.isEmpty() || hasSelectedText()) {
- separate(); //make it a separate undo/redo command
- insert(clip);
- separate();
- }
-}
-
-#endif // !QT_NO_CLIPBOARD
-
-/*!
- \internal
-
- Exits preedit mode and commits parts marked as tentative commit
-*/
-void QLineControl::commitPreedit()
-{
- if (!composeMode())
- return;
-
- qApp->inputPanel()->reset();
-
- if (!m_tentativeCommit.isEmpty()) {
- internalInsert(m_tentativeCommit);
- m_tentativeCommit.clear();
- finishChange(-1, true/*not used, not documented*/, false);
- }
-
- m_preeditCursor = 0;
- setPreeditArea(-1, QString());
- m_textLayout.clearAdditionalFormats();
- updateDisplayText(/*force*/ true);
-}
-
-/*!
- \internal
-
- Handles the behavior for the backspace key or function.
- Removes the current selection if there is a selection, otherwise
- removes the character prior to the cursor position.
-
- \sa del()
-*/
-void QLineControl::backspace()
-{
- int priorState = m_undoState;
- if (hasSelectedText()) {
- removeSelectedText();
- } else if (m_cursor) {
- --m_cursor;
- if (m_maskData)
- m_cursor = prevMaskBlank(m_cursor);
- QChar uc = m_text.at(m_cursor);
- if (m_cursor > 0 && uc.unicode() >= 0xdc00 && uc.unicode() < 0xe000) {
- // second half of a surrogate, check if we have the first half as well,
- // if yes delete both at once
- uc = m_text.at(m_cursor - 1);
- if (uc.unicode() >= 0xd800 && uc.unicode() < 0xdc00) {
- internalDelete(true);
- --m_cursor;
- }
- }
- internalDelete(true);
- }
- finishChange(priorState);
-}
-
-/*!
- \internal
-
- Handles the behavior for the delete key or function.
- Removes the current selection if there is a selection, otherwise
- removes the character after the cursor position.
-
- \sa del()
-*/
-void QLineControl::del()
-{
- int priorState = m_undoState;
- if (hasSelectedText()) {
- removeSelectedText();
- } else {
- int n = m_textLayout.nextCursorPosition(m_cursor) - m_cursor;
- while (n--)
- internalDelete();
- }
- finishChange(priorState);
-}
-
-/*!
- \internal
-
- Inserts the given \a newText at the current cursor position.
- If there is any selected text it is removed prior to insertion of
- the new text.
-*/
-void QLineControl::insert(const QString &newText)
-{
- int priorState = m_undoState;
- removeSelectedText();
- internalInsert(newText);
- finishChange(priorState);
-}
-
-/*!
- \internal
-
- Clears the line control text.
-*/
-void QLineControl::clear()
-{
- int priorState = m_undoState;
- m_selstart = 0;
- m_selend = m_text.length();
- removeSelectedText();
- separate();
- finishChange(priorState, /*update*/false, /*edited*/false);
-}
-
-/*!
- \internal
-
- Sets \a length characters from the given \a start position as selected.
- The given \a start position must be within the current text for
- the line control. If \a length characters cannot be selected, then
- the selection will extend to the end of the current text.
-*/
-void QLineControl::setSelection(int start, int length)
-{
- commitPreedit();
-
- if(start < 0 || start > (int)m_text.length()){
- qWarning("QLineControl::setSelection: Invalid start position");
- return;
- }
-
- if (length > 0) {
- if (start == m_selstart && start + length == m_selend && m_cursor == m_selend)
- return;
- m_selstart = start;
- m_selend = qMin(start + length, (int)m_text.length());
- m_cursor = m_selend;
- } else if (length < 0){
- if (start == m_selend && start + length == m_selstart && m_cursor == m_selstart)
- return;
- m_selstart = qMax(start + length, 0);
- m_selend = start;
- m_cursor = m_selstart;
- } else if (m_selstart != m_selend) {
- m_selstart = 0;
- m_selend = 0;
- m_cursor = start;
- } else {
- m_cursor = start;
- emitCursorPositionChanged();
- return;
- }
- emit selectionChanged();
- emitCursorPositionChanged();
-}
-
-void QLineControl::_q_clipboardChanged()
-{
-}
-
-void QLineControl::_q_deleteSelected()
-{
- if (!hasSelectedText())
- return;
-
- int priorState = m_undoState;
- emit resetInputContext();
- removeSelectedText();
- separate();
- finishChange(priorState);
-}
-
-/*!
- \internal
-
- Initializes the line control with a starting text value of \a txt.
-*/
-void QLineControl::init(const QString &txt)
-{
- m_text = txt;
-
- updateDisplayText();
- m_cursor = m_text.length();
-}
-
-/*!
- \internal
-
- Sets the password echo editing to \a editing. If password echo editing
- is true, then the text of the password is displayed even if the echo
- mode is set to QLineEdit::PasswordEchoOnEdit. Password echoing editing
- does not affect other echo modes.
-*/
-void QLineControl::updatePasswordEchoEditing(bool editing)
-{
- m_passwordEchoEditing = editing;
- updateDisplayText();
-}
-
-/*!
- \internal
-
- Returns the cursor position of the given \a x pixel value in relation
- to the displayed text. The given \a betweenOrOn specified what kind
- of cursor position is requested.
-*/
-int QLineControl::xToPos(int x, QTextLine::CursorPosition betweenOrOn) const
-{
- return m_textLayout.lineAt(0).xToCursor(x, betweenOrOn);
-}
-
-/*!
- \internal
-
- Returns the bounds of the current cursor, as defined as a
- between characters cursor.
-*/
-QRect QLineControl::cursorRect() const
-{
- QTextLine l = m_textLayout.lineAt(0);
- int c = m_cursor;
- if (m_preeditCursor != -1)
- c += m_preeditCursor;
- int cix = qRound(l.cursorToX(c));
- int w = m_cursorWidth;
- int ch = l.height() + 1;
-
- return QRect(cix-5, 0, w+9, ch);
-}
-
-QString QLineControl::text() const
-{
- QString content = m_text;
- if (!m_tentativeCommit.isEmpty())
- content.insert(m_cursor, m_tentativeCommit);
- QString res = m_maskData ? stripString(content) : content;
- return (res.isNull() ? QString::fromLatin1("") : res);
-}
-
-// like text() but doesn't include preedit
-QString QLineControl::realText() const
-{
- QString res = m_maskData ? stripString(m_text) : m_text;
- return (res.isNull() ? QString::fromLatin1("") : res);
-}
-
-void QLineControl::setText(const QString &txt)
-{
- if (composeMode())
- qApp->inputPanel()->reset();
- m_tentativeCommit.clear();
- internalSetText(txt, -1, false);
-}
-
-/*!
- \internal
-
- Fixes the current text so that it is valid given any set validators.
-
- Returns true if the text was changed. Otherwise returns false.
-*/
-bool QLineControl::fixup() // this function assumes that validate currently returns != Acceptable
-{
-#ifndef QT_NO_VALIDATOR
- if (m_validator) {
- QString textCopy = m_text;
- int cursorCopy = m_cursor;
- m_validator->fixup(textCopy);
- if (m_validator->validate(textCopy, cursorCopy) == QValidator::Acceptable) {
- if (textCopy != m_text || cursorCopy != m_cursor)
- internalSetText(textCopy, cursorCopy);
- return true;
- }
- }
-#endif
- return false;
-}
-
-/*!
- \internal
-
- Moves the cursor to the given position \a pos. If \a mark is true will
- adjust the currently selected text.
-*/
-void QLineControl::moveCursor(int pos, bool mark)
-{
- commitPreedit();
-
- if (pos != m_cursor) {
- separate();
- if (m_maskData)
- pos = pos > m_cursor ? nextMaskBlank(pos) : prevMaskBlank(pos);
- }
- if (mark) {
- int anchor;
- if (m_selend > m_selstart && m_cursor == m_selstart)
- anchor = m_selend;
- else if (m_selend > m_selstart && m_cursor == m_selend)
- anchor = m_selstart;
- else
- anchor = m_cursor;
- m_selstart = qMin(anchor, pos);
- m_selend = qMax(anchor, pos);
- updateDisplayText();
- } else {
- internalDeselect();
- }
- m_cursor = pos;
- if (mark || m_selDirty) {
- m_selDirty = false;
- emit selectionChanged();
- }
- emitCursorPositionChanged();
-}
-
-/*!
- \internal
-
- Applies the given input method event \a event to the text of the line
- control
-*/
-void QLineControl::processInputMethodEvent(QInputMethodEvent *event)
-{
- int priorState = -1;
- bool isGettingInput = !event->commitString().isEmpty()
- || event->preeditString() != preeditAreaText()
- || event->replacementLength() > 0;
- bool cursorPositionChanged = false;
- bool selectionChange = false;
-
- if (isGettingInput) {
- // If any text is being input, remove selected text.
- priorState = m_undoState;
- if (echoMode() == PasswordEchoOnEdit && !passwordEchoEditing()) {
- updatePasswordEchoEditing(true);
- m_selstart = 0;
- m_selend = m_text.length();
- }
- removeSelectedText();
- }
-
- int c = m_cursor; // cursor position after insertion of commit string
- if (event->replacementStart() <= 0)
- c += event->commitString().length() - qMin(-event->replacementStart(), event->replacementLength());
-
- m_cursor += event->replacementStart();
- if (m_cursor < 0)
- m_cursor = 0;
-
- // insert commit string
- if (event->replacementLength()) {
- m_selstart = m_cursor;
- m_selend = m_selstart + event->replacementLength();
- removeSelectedText();
- }
- if (!event->commitString().isEmpty()) {
- internalInsert(event->commitString());
- cursorPositionChanged = true;
- }
-
- m_cursor = qBound(0, c, m_text.length());
-
- for (int i = 0; i < event->attributes().size(); ++i) {
- const QInputMethodEvent::Attribute &a = event->attributes().at(i);
- if (a.type == QInputMethodEvent::Selection) {
- m_cursor = qBound(0, a.start + a.length, m_text.length());
- if (a.length) {
- m_selstart = qMax(0, qMin(a.start, m_text.length()));
- m_selend = m_cursor;
- if (m_selend < m_selstart) {
- qSwap(m_selstart, m_selend);
- }
- selectionChange = true;
- } else {
- m_selstart = m_selend = 0;
- }
- cursorPositionChanged = true;
- }
- }
-#ifndef QT_NO_IM
- setPreeditArea(m_cursor, event->preeditString());
-#endif //QT_NO_IM
- const int oldPreeditCursor = m_preeditCursor;
- m_preeditCursor = event->preeditString().length();
- m_hideCursor = false;
- QList<QTextLayout::FormatRange> formats;
- for (int i = 0; i < event->attributes().size(); ++i) {
- const QInputMethodEvent::Attribute &a = event->attributes().at(i);
- if (a.type == QInputMethodEvent::Cursor) {
- m_preeditCursor = a.start;
- m_hideCursor = !a.length;
- } else if (a.type == QInputMethodEvent::TextFormat) {
- QTextCharFormat f = qvariant_cast<QTextFormat>(a.value).toCharFormat();
- if (f.isValid()) {
- QTextLayout::FormatRange o;
- o.start = a.start + m_cursor;
- o.length = a.length;
- o.format = f;
- formats.append(o);
- }
- }
- }
- m_textLayout.setAdditionalFormats(formats);
- updateDisplayText(/*force*/ true);
- if (cursorPositionChanged)
- emitCursorPositionChanged();
- else if (m_preeditCursor != oldPreeditCursor)
- emit updateMicroFocus();
-
- bool tentativeCommitChanged = (m_tentativeCommit != event->tentativeCommitString());
-
- if (tentativeCommitChanged) {
- m_textDirty = true;
- m_tentativeCommit = event->tentativeCommitString();
- }
-
- if (isGettingInput || tentativeCommitChanged)
- finishChange(priorState);
-
- if (selectionChange)
- emit selectionChanged();
-}
-
-/*!
- \internal
-
- Draws the display text for the line control using the given
- \a painter, \a clip, and \a offset. Which aspects of the display text
- are drawn is specified by the given \a flags.
-
- If the flags contain DrawSelections, then the selection or input mask
- backgrounds and foregrounds will be applied before drawing the text.
-
- If the flags contain DrawCursor a cursor of the current cursorWidth()
- will be drawn after drawing the text.
-
- The display text will only be drawn if the flags contain DrawText
-*/
-void QLineControl::draw(QPainter *painter, const QPoint &offset, const QRect &clip, int flags)
-{
- QVector<QTextLayout::FormatRange> selections;
- if (flags & DrawSelections) {
- QTextLayout::FormatRange o;
- if (m_selstart < m_selend) {
- o.start = m_selstart;
- o.length = m_selend - m_selstart;
- o.format.setBackground(m_palette.brush(QPalette::Highlight));
- o.format.setForeground(m_palette.brush(QPalette::HighlightedText));
- } else {
- // mask selection
- if(!m_blinkPeriod || m_blinkStatus){
- o.start = m_cursor;
- o.length = 1;
- o.format.setBackground(m_palette.brush(QPalette::Text));
- o.format.setForeground(m_palette.brush(QPalette::Window));
- }
- }
- selections.append(o);
- }
-
- if (flags & DrawText)
- m_textLayout.draw(painter, offset, selections, clip);
-
- if (flags & DrawCursor){
- int cursor = m_cursor;
- if (m_preeditCursor != -1)
- cursor += m_preeditCursor;
- if (!m_hideCursor && (!m_blinkPeriod || m_blinkStatus))
- m_textLayout.drawCursor(painter, offset, cursor, m_cursorWidth);
- }
-}
-
-/*!
- \internal
-
- Sets the selection to cover the word at the given cursor position.
- The word boundaries are defined by the behavior of QTextLayout::SkipWords
- cursor mode.
-*/
-void QLineControl::selectWordAtPos(int cursor)
-{
- int next = cursor + 1;
- if(next > end())
- --next;
- int c = m_textLayout.previousCursorPosition(next, QTextLayout::SkipWords);
- moveCursor(c, false);
- // ## text layout should support end of words.
- int end = m_textLayout.nextCursorPosition(c, QTextLayout::SkipWords);
- while (end > cursor && m_text[end-1].isSpace())
- --end;
- moveCursor(end, true);
-}
-
-/*!
- \internal
-
- Completes a change to the line control text. If the change is not valid
- will undo the line control state back to the given \a validateFromState.
-
- If \a edited is true and the change is valid, will emit textEdited() in
- addition to textChanged(). Otherwise only emits textChanged() on a valid
- change.
-
- The \a update value is currently unused.
-*/
-bool QLineControl::finishChange(int validateFromState, bool update, bool edited)
-{
- Q_UNUSED(update)
-
- if (m_textDirty) {
- // do validation
- bool wasValidInput = m_validInput;
- m_validInput = true;
-#ifndef QT_NO_VALIDATOR
- if (m_validator) {
- QString textCopy = m_text;
- int cursorCopy = m_cursor;
- m_validInput = (m_validator->validate(textCopy, cursorCopy) != QValidator::Invalid);
- if (m_validInput) {
- if (m_text != textCopy) {
- internalSetText(textCopy, cursorCopy);
- return true;
- }
- m_cursor = cursorCopy;
-
- if (!m_tentativeCommit.isEmpty()) {
- textCopy.insert(m_cursor, m_tentativeCommit);
- bool validInput = (m_validator->validate(textCopy, cursorCopy) != QValidator::Invalid);
- if (!validInput)
- m_tentativeCommit.clear();
- }
- } else {
- m_tentativeCommit.clear();
- }
- }
-#endif
- if (validateFromState >= 0 && wasValidInput && !m_validInput) {
- if (m_transactions.count())
- return false;
- internalUndo(validateFromState);
- m_history.resize(m_undoState);
- if (m_modifiedState > m_undoState)
- m_modifiedState = -1;
- m_validInput = true;
- m_textDirty = false;
- }
- updateDisplayText();
-
- if (m_textDirty) {
- m_textDirty = false;
- QString actualText = text();
- if (edited)
- emit textEdited(actualText);
- emit textChanged(actualText);
- }
- }
- if (m_selDirty) {
- m_selDirty = false;
- emit selectionChanged();
- }
- emitCursorPositionChanged();
- return true;
-}
-
-/*!
- \internal
-
- An internal function for setting the text of the line control.
-*/
-void QLineControl::internalSetText(const QString &txt, int pos, bool edited)
-{
- internalDeselect();
- emit resetInputContext();
- QString oldText = m_text;
- if (m_maskData) {
- m_text = maskString(0, txt, true);
- m_text += clearString(m_text.length(), m_maxLength - m_text.length());
- } else {
- m_text = txt.isEmpty() ? txt : txt.left(m_maxLength);
- }
- m_history.clear();
- m_modifiedState = m_undoState = 0;
- m_cursor = (pos < 0 || pos > m_text.length()) ? m_text.length() : pos;
- m_textDirty = (oldText != m_text);
-
- bool changed = finishChange(-1, true, edited);
-#ifdef QT_NO_ACCESSIBILITY
- Q_UNUSED(changed)
-#else
- if (changed)
- QAccessible::updateAccessibility(parent(), 0, QAccessible::TextUpdated);
-#endif
-}
-
-
-/*!
- \internal
-
- Adds the given \a command to the undo history
- of the line control. Does not apply the command.
-*/
-void QLineControl::addCommand(const Command &cmd)
-{
- if (m_separator && m_undoState && m_history[m_undoState - 1].type != Separator) {
- m_history.resize(m_undoState + 2);
- m_history[m_undoState++] = Command(Separator, m_cursor, 0, m_selstart, m_selend);
- } else {
- m_history.resize(m_undoState + 1);
- }
- m_separator = false;
- m_history[m_undoState++] = cmd;
-}
-
-/*!
- \internal
-
- Inserts the given string \a s into the line
- control.
-
- Also adds the appropriate commands into the undo history.
- This function does not call finishChange(), and may leave the text
- in an invalid state.
-*/
-void QLineControl::internalInsert(const QString &s)
-{
- if (hasSelectedText())
- addCommand(Command(SetSelection, m_cursor, 0, m_selstart, m_selend));
- if (m_maskData) {
- QString ms = maskString(m_cursor, s);
- for (int i = 0; i < (int) ms.length(); ++i) {
- addCommand (Command(DeleteSelection, m_cursor + i, m_text.at(m_cursor + i), -1, -1));
- addCommand(Command(Insert, m_cursor + i, ms.at(i), -1, -1));
- }
- m_text.replace(m_cursor, ms.length(), ms);
- m_cursor += ms.length();
- m_cursor = nextMaskBlank(m_cursor);
- m_textDirty = true;
- } else {
- int remaining = m_maxLength - m_text.length();
- if (remaining != 0) {
- m_text.insert(m_cursor, s.left(remaining));
- for (int i = 0; i < (int) s.left(remaining).length(); ++i)
- addCommand(Command(Insert, m_cursor++, s.at(i), -1, -1));
- m_textDirty = true;
- }
- }
-}
-
-/*!
- \internal
-
- deletes a single character from the current text. If \a wasBackspace,
- the character prior to the cursor is removed. Otherwise the character
- after the cursor is removed.
-
- Also adds the appropriate commands into the undo history.
- This function does not call finishChange(), and may leave the text
- in an invalid state.
-*/
-void QLineControl::internalDelete(bool wasBackspace)
-{
- if (m_cursor < (int) m_text.length()) {
- if (hasSelectedText())
- addCommand(Command(SetSelection, m_cursor, 0, m_selstart, m_selend));
- addCommand(Command((CommandType)((m_maskData ? 2 : 0) + (wasBackspace ? Remove : Delete)),
- m_cursor, m_text.at(m_cursor), -1, -1));
- if (m_maskData) {
- m_text.replace(m_cursor, 1, clearString(m_cursor, 1));
- addCommand(Command(Insert, m_cursor, m_text.at(m_cursor), -1, -1));
- } else {
- m_text.remove(m_cursor, 1);
- }
- m_textDirty = true;
- }
-}
-
-/*!
- \internal
-
- removes the currently selected text from the line control.
-
- Also adds the appropriate commands into the undo history.
- This function does not call finishChange(), and may leave the text
- in an invalid state.
-*/
-void QLineControl::removeSelectedText()
-{
- if (m_selstart < m_selend && m_selend <= (int) m_text.length()) {
- separate();
- int i ;
- addCommand(Command(SetSelection, m_cursor, 0, m_selstart, m_selend));
- if (m_selstart <= m_cursor && m_cursor < m_selend) {
- // cursor is within the selection. Split up the commands
- // to be able to restore the correct cursor position
- for (i = m_cursor; i >= m_selstart; --i)
- addCommand (Command(DeleteSelection, i, m_text.at(i), -1, 1));
- for (i = m_selend - 1; i > m_cursor; --i)
- addCommand (Command(DeleteSelection, i - m_cursor + m_selstart - 1, m_text.at(i), -1, -1));
- } else {
- for (i = m_selend-1; i >= m_selstart; --i)
- addCommand (Command(RemoveSelection, i, m_text.at(i), -1, -1));
- }
- if (m_maskData) {
- m_text.replace(m_selstart, m_selend - m_selstart, clearString(m_selstart, m_selend - m_selstart));
- for (int i = 0; i < m_selend - m_selstart; ++i)
- addCommand(Command(Insert, m_selstart + i, m_text.at(m_selstart + i), -1, -1));
- } else {
- m_text.remove(m_selstart, m_selend - m_selstart);
- }
- if (m_cursor > m_selstart)
- m_cursor -= qMin(m_cursor, m_selend) - m_selstart;
- internalDeselect();
- m_textDirty = true;
- }
-}
-
-/*!
- \internal
-
- Parses the input mask specified by \a maskFields to generate
- the mask data used to handle input masks.
-*/
-void QLineControl::parseInputMask(const QString &maskFields)
-{
- int delimiter = maskFields.indexOf(QLatin1Char(';'));
- if (maskFields.isEmpty() || delimiter == 0) {
- if (m_maskData) {
- delete [] m_maskData;
- m_maskData = 0;
- m_maxLength = 32767;
- internalSetText(QString());
- }
- return;
- }
-
- if (delimiter == -1) {
- m_blank = QLatin1Char(' ');
- m_inputMask = maskFields;
- } else {
- m_inputMask = maskFields.left(delimiter);
- m_blank = (delimiter + 1 < maskFields.length()) ? maskFields[delimiter + 1] : QLatin1Char(' ');
- }
-
- // calculate m_maxLength / m_maskData length
- m_maxLength = 0;
- QChar c = 0;
- for (int i=0; i<m_inputMask.length(); i++) {
- c = m_inputMask.at(i);
- if (i > 0 && m_inputMask.at(i-1) == QLatin1Char('\\')) {
- m_maxLength++;
- continue;
- }
- if (c != QLatin1Char('\\') && c != QLatin1Char('!') &&
- c != QLatin1Char('<') && c != QLatin1Char('>') &&
- c != QLatin1Char('{') && c != QLatin1Char('}') &&
- c != QLatin1Char('[') && c != QLatin1Char(']'))
- m_maxLength++;
- }
-
- delete [] m_maskData;
- m_maskData = new MaskInputData[m_maxLength];
-
- MaskInputData::Casemode m = MaskInputData::NoCaseMode;
- c = 0;
- bool s;
- bool escape = false;
- int index = 0;
- for (int i = 0; i < m_inputMask.length(); i++) {
- c = m_inputMask.at(i);
- if (escape) {
- s = true;
- m_maskData[index].maskChar = c;
- m_maskData[index].separator = s;
- m_maskData[index].caseMode = m;
- index++;
- escape = false;
- } else if (c == QLatin1Char('<')) {
- m = MaskInputData::Lower;
- } else if (c == QLatin1Char('>')) {
- m = MaskInputData::Upper;
- } else if (c == QLatin1Char('!')) {
- m = MaskInputData::NoCaseMode;
- } else if (c != QLatin1Char('{') && c != QLatin1Char('}') && c != QLatin1Char('[') && c != QLatin1Char(']')) {
- switch (c.unicode()) {
- case 'A':
- case 'a':
- case 'N':
- case 'n':
- case 'X':
- case 'x':
- case '9':
- case '0':
- case 'D':
- case 'd':
- case '#':
- case 'H':
- case 'h':
- case 'B':
- case 'b':
- s = false;
- break;
- case '\\':
- escape = true;
- default:
- s = true;
- break;
- }
-
- if (!escape) {
- m_maskData[index].maskChar = c;
- m_maskData[index].separator = s;
- m_maskData[index].caseMode = m;
- index++;
- }
- }
- }
- internalSetText(m_text);
-}
-
-
-/*!
- \internal
-
- checks if the key is valid compared to the inputMask
-*/
-bool QLineControl::isValidInput(QChar key, QChar mask) const
-{
- switch (mask.unicode()) {
- case 'A':
- if (key.isLetter())
- return true;
- break;
- case 'a':
- if (key.isLetter() || key == m_blank)
- return true;
- break;
- case 'N':
- if (key.isLetterOrNumber())
- return true;
- break;
- case 'n':
- if (key.isLetterOrNumber() || key == m_blank)
- return true;
- break;
- case 'X':
- if (key.isPrint())
- return true;
- break;
- case 'x':
- if (key.isPrint() || key == m_blank)
- return true;
- break;
- case '9':
- if (key.isNumber())
- return true;
- break;
- case '0':
- if (key.isNumber() || key == m_blank)
- return true;
- break;
- case 'D':
- if (key.isNumber() && key.digitValue() > 0)
- return true;
- break;
- case 'd':
- if ((key.isNumber() && key.digitValue() > 0) || key == m_blank)
- return true;
- break;
- case '#':
- if (key.isNumber() || key == QLatin1Char('+') || key == QLatin1Char('-') || key == m_blank)
- return true;
- break;
- case 'B':
- if (key == QLatin1Char('0') || key == QLatin1Char('1'))
- return true;
- break;
- case 'b':
- if (key == QLatin1Char('0') || key == QLatin1Char('1') || key == m_blank)
- return true;
- break;
- case 'H':
- if (key.isNumber() || (key >= QLatin1Char('a') && key <= QLatin1Char('f')) || (key >= QLatin1Char('A') && key <= QLatin1Char('F')))
- return true;
- break;
- case 'h':
- if (key.isNumber() || (key >= QLatin1Char('a') && key <= QLatin1Char('f')) || (key >= QLatin1Char('A') && key <= QLatin1Char('F')) || key == m_blank)
- return true;
- break;
- default:
- break;
- }
- return false;
-}
-
-/*!
- \internal
-
- Returns true if the given text \a str is valid for any
- validator or input mask set for the line control.
-
- Otherwise returns false
-*/
-bool QLineControl::hasAcceptableInput(const QString &str) const
-{
-#ifndef QT_NO_VALIDATOR
- QString textCopy = str;
- int cursorCopy = m_cursor;
- if (m_validator && m_validator->validate(textCopy, cursorCopy)
- != QValidator::Acceptable)
- return false;
-#endif
-
- if (!m_maskData)
- return true;
-
- if (str.length() != m_maxLength)
- return false;
-
- for (int i=0; i < m_maxLength; ++i) {
- if (m_maskData[i].separator) {
- if (str.at(i) != m_maskData[i].maskChar)
- return false;
- } else {
- if (!isValidInput(str.at(i), m_maskData[i].maskChar))
- return false;
- }
- }
- return true;
-}
-
-/*!
- \internal
-
- Applies the inputMask on \a str starting from position \a pos in the mask. \a clear
- specifies from where characters should be gotten when a separator is met in \a str - true means
- that blanks will be used, false that previous input is used.
- Calling this when no inputMask is set is undefined.
-*/
-QString QLineControl::maskString(uint pos, const QString &str, bool clear) const
-{
- if (pos >= (uint)m_maxLength)
- return QString::fromLatin1("");
-
- QString fill;
- fill = clear ? clearString(0, m_maxLength) : m_text;
-
- int strIndex = 0;
- QString s = QString::fromLatin1("");
- int i = pos;
- while (i < m_maxLength) {
- if (strIndex < str.length()) {
- if (m_maskData[i].separator) {
- s += m_maskData[i].maskChar;
- if (str[(int)strIndex] == m_maskData[i].maskChar)
- strIndex++;
- ++i;
- } else {
- if (isValidInput(str[(int)strIndex], m_maskData[i].maskChar)) {
- switch (m_maskData[i].caseMode) {
- case MaskInputData::Upper:
- s += str[(int)strIndex].toUpper();
- break;
- case MaskInputData::Lower:
- s += str[(int)strIndex].toLower();
- break;
- default:
- s += str[(int)strIndex];
- }
- ++i;
- } else {
- // search for separator first
- int n = findInMask(i, true, true, str[(int)strIndex]);
- if (n != -1) {
- if (str.length() != 1 || i == 0 || (i > 0 && (!m_maskData[i-1].separator || m_maskData[i-1].maskChar != str[(int)strIndex]))) {
- s += fill.mid(i, n-i+1);
- i = n + 1; // update i to find + 1
- }
- } else {
- // search for valid m_blank if not
- n = findInMask(i, true, false, str[(int)strIndex]);
- if (n != -1) {
- s += fill.mid(i, n-i);
- switch (m_maskData[n].caseMode) {
- case MaskInputData::Upper:
- s += str[(int)strIndex].toUpper();
- break;
- case MaskInputData::Lower:
- s += str[(int)strIndex].toLower();
- break;
- default:
- s += str[(int)strIndex];
- }
- i = n + 1; // updates i to find + 1
- }
- }
- }
- ++strIndex;
- }
- } else
- break;
- }
-
- return s;
-}
-
-
-
-/*!
- \internal
-
- Returns a "cleared" string with only separators and blank chars.
- Calling this when no inputMask is set is undefined.
-*/
-QString QLineControl::clearString(uint pos, uint len) const
-{
- if (pos >= (uint)m_maxLength)
- return QString();
-
- QString s;
- int end = qMin((uint)m_maxLength, pos + len);
- for (int i = pos; i < end; ++i)
- if (m_maskData[i].separator)
- s += m_maskData[i].maskChar;
- else
- s += m_blank;
-
- return s;
-}
-
-/*!
- \internal
-
- Strips blank parts of the input in a QLineControl when an inputMask is set,
- separators are still included. Typically "127.0__.0__.1__" becomes "127.0.0.1".
-*/
-QString QLineControl::stripString(const QString &str) const
-{
- if (!m_maskData)
- return str;
-
- QString s;
- int end = qMin(m_maxLength, (int)str.length());
- for (int i = 0; i < end; ++i)
- if (m_maskData[i].separator)
- s += m_maskData[i].maskChar;
- else
- if (str[i] != m_blank)
- s += str[i];
-
- return s;
-}
-
-/*!
- \internal
- searches forward/backward in m_maskData for either a separator or a m_blank
-*/
-int QLineControl::findInMask(int pos, bool forward, bool findSeparator, QChar searchChar) const
-{
- if (pos >= m_maxLength || pos < 0)
- return -1;
-
- int end = forward ? m_maxLength : -1;
- int step = forward ? 1 : -1;
- int i = pos;
-
- while (i != end) {
- if (findSeparator) {
- if (m_maskData[i].separator && m_maskData[i].maskChar == searchChar)
- return i;
- } else {
- if (!m_maskData[i].separator) {
- if (searchChar.isNull())
- return i;
- else if (isValidInput(searchChar, m_maskData[i].maskChar))
- return i;
- }
- }
- i += step;
- }
- return -1;
-}
-
-void QLineControl::internalUndo(int until)
-{
- if (!isUndoAvailable())
- return;
- internalDeselect();
- while (m_undoState && m_undoState > until) {
- Command& cmd = m_history[--m_undoState];
- switch (cmd.type) {
- case Insert:
- m_text.remove(cmd.pos, 1);
- m_cursor = cmd.pos;
- break;
- case SetSelection:
- m_selstart = cmd.selStart;
- m_selend = cmd.selEnd;
- m_cursor = cmd.pos;
- break;
- case Remove:
- case RemoveSelection:
- m_text.insert(cmd.pos, cmd.uc);
- m_cursor = cmd.pos + 1;
- break;
- case Delete:
- case DeleteSelection:
- m_text.insert(cmd.pos, cmd.uc);
- m_cursor = cmd.pos;
- break;
- case Separator:
- continue;
- }
- if (until < 0 && m_undoState) {
- Command& next = m_history[m_undoState-1];
- if (next.type != cmd.type && next.type < RemoveSelection
- && (cmd.type < RemoveSelection || next.type == Separator))
- break;
- }
- }
- m_textDirty = true;
- emitCursorPositionChanged();
-}
-
-void QLineControl::internalRedo()
-{
- if (!isRedoAvailable())
- return;
- internalDeselect();
- while (m_undoState < (int)m_history.size()) {
- Command& cmd = m_history[m_undoState++];
- switch (cmd.type) {
- case Insert:
- m_text.insert(cmd.pos, cmd.uc);
- m_cursor = cmd.pos + 1;
- break;
- case SetSelection:
- m_selstart = cmd.selStart;
- m_selend = cmd.selEnd;
- m_cursor = cmd.pos;
- break;
- case Remove:
- case Delete:
- case RemoveSelection:
- case DeleteSelection:
- m_text.remove(cmd.pos, 1);
- m_selstart = cmd.selStart;
- m_selend = cmd.selEnd;
- m_cursor = cmd.pos;
- break;
- case Separator:
- m_selstart = cmd.selStart;
- m_selend = cmd.selEnd;
- m_cursor = cmd.pos;
- break;
- }
- if (m_undoState < (int)m_history.size()) {
- Command& next = m_history[m_undoState];
- if (next.type != cmd.type && cmd.type < RemoveSelection && next.type != Separator
- && (next.type < RemoveSelection || cmd.type == Separator))
- break;
- }
- }
- m_textDirty = true;
- emitCursorPositionChanged();
-}
-
-/*!
- \internal
-
- If the current cursor position differs from the last emitted cursor
- position, emits cursorPositionChanged().
-*/
-void QLineControl::emitCursorPositionChanged()
-{
- if (m_cursor != m_lastCursorPos) {
- const int oldLast = m_lastCursorPos;
- m_lastCursorPos = m_cursor;
- cursorPositionChanged(oldLast, m_cursor);
-#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(parent(), 0, QAccessible::TextCaretMoved);
-#endif
- }
-}
-
-
-void QLineControl::setCursorBlinkPeriod(int msec)
-{
- if (msec == m_blinkPeriod)
- return;
- if (m_blinkTimer) {
- killTimer(m_blinkTimer);
- }
- if (msec) {
- m_blinkTimer = startTimer(msec / 2);
- m_blinkStatus = 1;
- } else {
- m_blinkTimer = 0;
- if (m_blinkStatus == 1)
- emit updateNeeded(inputMask().isEmpty() ? cursorRect() : QRect());
- }
- m_blinkPeriod = msec;
-}
-
-void QLineControl::resetCursorBlinkTimer()
-{
- if (m_blinkPeriod == 0 || m_blinkTimer == 0)
- return;
- killTimer(m_blinkTimer);
- m_blinkTimer = startTimer(m_blinkPeriod / 2);
- m_blinkStatus = 1;
-}
-
-void QLineControl::timerEvent(QTimerEvent *event)
-{
- if (event->timerId() == m_blinkTimer) {
- m_blinkStatus = !m_blinkStatus;
- emit updateNeeded(inputMask().isEmpty() ? cursorRect() : QRect());
- } else if (event->timerId() == m_deleteAllTimer) {
- killTimer(m_deleteAllTimer);
- m_deleteAllTimer = 0;
- clear();
- } else if (event->timerId() == m_tripleClickTimer) {
- killTimer(m_tripleClickTimer);
- m_tripleClickTimer = 0;
- }
-}
-
-bool QLineControl::processEvent(QEvent* ev)
-{
-#ifdef QT_KEYPAD_NAVIGATION
- if (QGuiApplication::keypadNavigationEnabled()) {
- if ((ev->type() == QEvent::KeyPress) || (ev->type() == QEvent::KeyRelease)) {
- QKeyEvent *ke = (QKeyEvent *)ev;
- if (ke->key() == Qt::Key_Back) {
- if (ke->isAutoRepeat()) {
- // Swallow it. We don't want back keys running amok.
- ke->accept();
- return true;
- }
- if ((ev->type() == QEvent::KeyRelease)
- && !isReadOnly()
- && m_deleteAllTimer) {
- killTimer(m_deleteAllTimer);
- m_deleteAllTimer = 0;
- backspace();
- ke->accept();
- return true;
- }
- }
- }
- }
-#endif
- switch(ev->type()){
- case QEvent::MouseButtonPress:
- case QEvent::MouseButtonRelease:
- case QEvent::MouseButtonDblClick:
- case QEvent::MouseMove:
- processMouseEvent(static_cast<QMouseEvent*>(ev)); break;
- case QEvent::KeyPress:
- case QEvent::KeyRelease:
- processKeyEvent(static_cast<QKeyEvent*>(ev)); break;
- case QEvent::InputMethod:
- processInputMethodEvent(static_cast<QInputMethodEvent*>(ev)); break;
-#ifndef QT_NO_SHORTCUT
- case QEvent::ShortcutOverride:{
- if (isReadOnly())
- return false;
- QKeyEvent* ke = static_cast<QKeyEvent*>(ev);
- if (ke == QKeySequence::Copy
- || ke == QKeySequence::Paste
- || ke == QKeySequence::Cut
- || ke == QKeySequence::Redo
- || ke == QKeySequence::Undo
- || ke == QKeySequence::MoveToNextWord
- || ke == QKeySequence::MoveToPreviousWord
- || ke == QKeySequence::MoveToStartOfDocument
- || ke == QKeySequence::MoveToEndOfDocument
- || ke == QKeySequence::SelectNextWord
- || ke == QKeySequence::SelectPreviousWord
- || ke == QKeySequence::SelectStartOfLine
- || ke == QKeySequence::SelectEndOfLine
- || ke == QKeySequence::SelectStartOfBlock
- || ke == QKeySequence::SelectEndOfBlock
- || ke == QKeySequence::SelectStartOfDocument
- || ke == QKeySequence::SelectAll
- || ke == QKeySequence::SelectEndOfDocument) {
- ke->accept();
- } else if (ke->modifiers() == Qt::NoModifier || ke->modifiers() == Qt::ShiftModifier
- || ke->modifiers() == Qt::KeypadModifier) {
- if (ke->key() < Qt::Key_Escape) {
- ke->accept();
- } else {
- switch (ke->key()) {
- case Qt::Key_Delete:
- case Qt::Key_Home:
- case Qt::Key_End:
- case Qt::Key_Backspace:
- case Qt::Key_Left:
- case Qt::Key_Right:
- ke->accept();
- default:
- break;
- }
- }
- }
- }
-#endif
- default:
- return false;
- }
- return true;
-}
-
-void QLineControl::processMouseEvent(QMouseEvent* ev)
-{
-
- switch (ev->type()) {
- case QEvent::MouseButtonPress:{
- if (m_tripleClickTimer
- && (ev->pos() - m_tripleClick).manhattanLength() < qApp->styleHints()->startDragDistance()) {
- selectAll();
- return;
- }
- if (ev->button() == Qt::RightButton)
- return;
-
- bool mark = ev->modifiers() & Qt::ShiftModifier;
- int cursor = xToPos(ev->pos().x());
- moveCursor(cursor, mark);
- break;
- }
- case QEvent::MouseButtonDblClick:
- if (ev->button() == Qt::LeftButton) {
- selectWordAtPos(xToPos(ev->pos().x()));
- if (m_tripleClickTimer)
- killTimer(m_tripleClickTimer);
- m_tripleClickTimer = startTimer(qApp->styleHints()->mouseDoubleClickInterval());
- m_tripleClick = ev->pos();
- }
- break;
- case QEvent::MouseButtonRelease:
-#ifndef QT_NO_CLIPBOARD
- if (QGuiApplication::clipboard()->supportsSelection()) {
- if (ev->button() == Qt::LeftButton) {
- copy(QClipboard::Selection);
- } else if (!isReadOnly() && ev->button() == Qt::MidButton) {
- deselect();
- insert(QGuiApplication::clipboard()->text(QClipboard::Selection));
- }
- }
-#endif
- break;
- case QEvent::MouseMove:
- if (ev->buttons() & Qt::LeftButton) {
- moveCursor(xToPos(ev->pos().x()), true);
- }
- break;
- default:
- break;
- }
-}
-
-void QLineControl::processKeyEvent(QKeyEvent* event)
-{
- bool inlineCompletionAccepted = false;
-
- if (event->key() == Qt::Key_Enter || event->key() == Qt::Key_Return) {
- if (hasAcceptableInput() || fixup()) {
- emit accepted();
- emit editingFinished();
- }
- if (inlineCompletionAccepted)
- event->accept();
- else
- event->ignore();
- return;
- }
-
- if (echoMode() == PasswordEchoOnEdit
- && !passwordEchoEditing()
- && !isReadOnly()
- && !event->text().isEmpty()
-#ifdef QT_KEYPAD_NAVIGATION
- && event->key() != Qt::Key_Select
- && event->key() != Qt::Key_Up
- && event->key() != Qt::Key_Down
- && event->key() != Qt::Key_Back
-#endif
- && !(event->modifiers() & Qt::ControlModifier)) {
- // Clear the edit and reset to normal echo mode while editing; the
- // echo mode switches back when the edit loses focus
- // ### resets current content. dubious code; you can
- // navigate with keys up, down, back, and select(?), but if you press
- // "left" or "right" it clears?
- updatePasswordEchoEditing(true);
- clear();
- }
-
- bool unknown = false;
- bool visual = cursorMoveStyle() == Qt::VisualMoveStyle;
-
- if (false) {
- }
-#ifndef QT_NO_SHORTCUT
- else if (event == QKeySequence::Undo) {
- if (!isReadOnly())
- undo();
- }
- else if (event == QKeySequence::Redo) {
- if (!isReadOnly())
- redo();
- }
- else if (event == QKeySequence::SelectAll) {
- selectAll();
- }
-#ifndef QT_NO_CLIPBOARD
- else if (event == QKeySequence::Copy) {
- copy();
- }
- else if (event == QKeySequence::Paste) {
- if (!isReadOnly()) {
- QClipboard::Mode mode = QClipboard::Clipboard;
- paste(mode);
- }
- }
- else if (event == QKeySequence::Cut) {
- if (!isReadOnly()) {
- copy();
- del();
- }
- }
- else if (event == QKeySequence::DeleteEndOfLine) {
- if (!isReadOnly()) {
- setSelection(cursor(), end());
- copy();
- del();
- }
- }
-#endif //QT_NO_CLIPBOARD
- else if (event == QKeySequence::MoveToStartOfLine || event == QKeySequence::MoveToStartOfBlock) {
- home(0);
- }
- else if (event == QKeySequence::MoveToEndOfLine || event == QKeySequence::MoveToEndOfBlock) {
- end(0);
- }
- else if (event == QKeySequence::SelectStartOfLine || event == QKeySequence::SelectStartOfBlock) {
- home(1);
- }
- else if (event == QKeySequence::SelectEndOfLine || event == QKeySequence::SelectEndOfBlock) {
- end(1);
- }
- else if (event == QKeySequence::MoveToNextChar) {
- if (hasSelectedText()) {
- moveCursor(selectionEnd(), false);
- } else {
- cursorForward(0, visual ? 1 : (layoutDirection() == Qt::LeftToRight ? 1 : -1));
- }
- }
- else if (event == QKeySequence::SelectNextChar) {
- cursorForward(1, visual ? 1 : (layoutDirection() == Qt::LeftToRight ? 1 : -1));
- }
- else if (event == QKeySequence::MoveToPreviousChar) {
- if (hasSelectedText()) {
- moveCursor(selectionStart(), false);
- } else {
- cursorForward(0, visual ? -1 : (layoutDirection() == Qt::LeftToRight ? -1 : 1));
- }
- }
- else if (event == QKeySequence::SelectPreviousChar) {
- cursorForward(1, visual ? -1 : (layoutDirection() == Qt::LeftToRight ? -1 : 1));
- }
- else if (event == QKeySequence::MoveToNextWord) {
- if (echoMode() == Normal)
- layoutDirection() == Qt::LeftToRight ? cursorWordForward(0) : cursorWordBackward(0);
- else
- layoutDirection() == Qt::LeftToRight ? end(0) : home(0);
- }
- else if (event == QKeySequence::MoveToPreviousWord) {
- if (echoMode() == Normal)
- layoutDirection() == Qt::LeftToRight ? cursorWordBackward(0) : cursorWordForward(0);
- else if (!isReadOnly()) {
- layoutDirection() == Qt::LeftToRight ? home(0) : end(0);
- }
- }
- else if (event == QKeySequence::SelectNextWord) {
- if (echoMode() == Normal)
- layoutDirection() == Qt::LeftToRight ? cursorWordForward(1) : cursorWordBackward(1);
- else
- layoutDirection() == Qt::LeftToRight ? end(1) : home(1);
- }
- else if (event == QKeySequence::SelectPreviousWord) {
- if (echoMode() == Normal)
- layoutDirection() == Qt::LeftToRight ? cursorWordBackward(1) : cursorWordForward(1);
- else
- layoutDirection() == Qt::LeftToRight ? home(1) : end(1);
- }
- else if (event == QKeySequence::Delete) {
- if (!isReadOnly())
- del();
- }
- else if (event == QKeySequence::DeleteEndOfWord) {
- if (!isReadOnly()) {
- cursorWordForward(true);
- del();
- }
- }
- else if (event == QKeySequence::DeleteStartOfWord) {
- if (!isReadOnly()) {
- cursorWordBackward(true);
- del();
- }
- }
-#endif // QT_NO_SHORTCUT
- else {
- bool handled = false;
- if (event->modifiers() & Qt::ControlModifier) {
- switch (event->key()) {
- case Qt::Key_Backspace:
- if (!isReadOnly()) {
- cursorWordBackward(true);
- del();
- }
- break;
- default:
- if (!handled)
- unknown = true;
- }
- } else { // ### check for *no* modifier
- switch (event->key()) {
- case Qt::Key_Backspace:
- if (!isReadOnly()) {
- backspace();
- }
- break;
-#ifdef QT_KEYPAD_NAVIGATION
- case Qt::Key_Back:
- if (QGuiApplication::keypadNavigationEnabled() && !event->isAutoRepeat()
- && !isReadOnly()) {
- if (text().length() == 0) {
- setText(m_cancelText);
-
- if (passwordEchoEditing())
- updatePasswordEchoEditing(false);
-
- emit editFocusChange(false);
- } else if (!m_deleteAllTimer) {
- m_deleteAllTimer = startTimer(750);
- }
- } else {
- unknown = true;
- }
- break;
-#endif
- default:
- if (!handled)
- unknown = true;
- }
- }
- }
-
- if (event->key() == Qt::Key_Direction_L || event->key() == Qt::Key_Direction_R) {
- setLayoutDirection((event->key() == Qt::Key_Direction_L) ? Qt::LeftToRight : Qt::RightToLeft);
- unknown = false;
- }
-
- if (unknown && !isReadOnly()) {
- QString t = event->text();
- if (!t.isEmpty() && t.at(0).isPrint()) {
- insert(t);
- event->accept();
- return;
- }
- }
-
- if (unknown)
- event->ignore();
- else
- event->accept();
-}
-
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/src/gui/text/qlinecontrol_p.h b/src/gui/text/qlinecontrol_p.h
deleted file mode 100644
index fb14df27bb..0000000000
--- a/src/gui/text/qlinecontrol_p.h
+++ /dev/null
@@ -1,456 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-#ifndef QLINECONTROL_P_H
-#define QLINECONTROL_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "QtCore/qglobal.h"
-
-#include "QtGui/qtextlayout.h"
-#include "QtCore/qpointer.h"
-#include "QtGui/qclipboard.h"
-#include "QtGui/qvalidator.h"
-#include "QtGui/qpalette.h"
-#include "QtGui/qguiapplication.h"
-#include "QtGui/qinputpanel.h"
-#include "QtCore/qpoint.h"
-
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Gui)
-
-class Q_GUI_EXPORT QLineControl : public QObject
-{
- Q_OBJECT
-
-public:
- QLineControl(const QString &txt = QString())
- : m_cursor(0), m_preeditCursor(0), m_cursorWidth(0), m_layoutDirection(Qt::LayoutDirectionAuto),
- m_hideCursor(false), m_separator(0), m_readOnly(0),
- m_dragEnabled(0), m_echoMode(Normal), m_textDirty(0), m_selDirty(0),
- m_validInput(1), m_blinkStatus(0), m_blinkPeriod(0), m_blinkTimer(0), m_deleteAllTimer(0),
- m_ascent(0), m_maxLength(32767), m_lastCursorPos(-1),
- m_tripleClickTimer(0), m_maskData(0), m_modifiedState(0), m_undoState(0),
- m_selstart(0), m_selend(0), m_passwordEchoEditing(false)
- {
- init(txt);
- }
-
- enum EchoMode {
- Normal,
- NoEcho,
- Password,
- PasswordEchoOnEdit
- };
-
-
- ~QLineControl()
- {
- delete [] m_maskData;
- }
-
- int nextMaskBlank(int pos)
- {
- int c = findInMask(pos, true, false);
- m_separator |= (c != pos);
- return (c != -1 ? c : m_maxLength);
- }
-
- int prevMaskBlank(int pos)
- {
- int c = findInMask(pos, false, false);
- m_separator |= (c != pos);
- return (c != -1 ? c : 0);
- }
-
- bool isUndoAvailable() const { return !m_readOnly && m_undoState; }
- bool isRedoAvailable() const { return !m_readOnly && m_undoState < (int)m_history.size(); }
- void clearUndo() { m_history.clear(); m_modifiedState = m_undoState = 0; }
-
- bool isModified() const { return m_modifiedState != m_undoState; }
- void setModified(bool modified) { m_modifiedState = modified ? -1 : m_undoState; }
-
- bool allSelected() const { return !m_text.isEmpty() && m_selstart == 0 && m_selend == (int)m_text.length(); }
- bool hasSelectedText() const { return !m_text.isEmpty() && m_selend > m_selstart; }
-
- int width() const { return qRound(m_textLayout.lineAt(0).width()) + 1; }
- int height() const { return qRound(m_textLayout.lineAt(0).height()) + 1; }
- int ascent() const { return m_ascent; }
- qreal naturalTextWidth() const { return m_textLayout.lineAt(0).naturalTextWidth(); }
-
- void setSelection(int start, int length);
-
- inline QString selectedText() const { return hasSelectedText() ? m_text.mid(m_selstart, m_selend - m_selstart) : QString(); }
- QString textBeforeSelection() const { return hasSelectedText() ? m_text.left(m_selstart) : QString(); }
- QString textAfterSelection() const { return hasSelectedText() ? m_text.mid(m_selend) : QString(); }
-
- int selectionStart() const { return hasSelectedText() ? m_selstart : -1; }
- int selectionEnd() const { return hasSelectedText() ? m_selend : -1; }
- bool inSelection(int x) const
- {
- if (m_selstart >= m_selend)
- return false;
- int pos = xToPos(x, QTextLine::CursorOnCharacter);
- return pos >= m_selstart && pos < m_selend;
- }
-
- void removeSelection()
- {
- int priorState = m_undoState;
- removeSelectedText();
- finishChange(priorState);
- }
-
- int start() const { return 0; }
- int end() const { return m_text.length(); }
-
-#ifndef QT_NO_CLIPBOARD
- void copy(QClipboard::Mode mode = QClipboard::Clipboard) const;
- void paste(QClipboard::Mode mode = QClipboard::Clipboard);
-#endif
-
- int cursor() const{ return m_cursor; }
- int preeditCursor() const { return m_preeditCursor; }
-
- int cursorWidth() const { return m_cursorWidth; }
- void setCursorWidth(int value) { m_cursorWidth = value; }
-
- Qt::CursorMoveStyle cursorMoveStyle() const { return m_textLayout.cursorMoveStyle(); }
- void setCursorMoveStyle(Qt::CursorMoveStyle style) { m_textLayout.setCursorMoveStyle(style); }
-
- void moveCursor(int pos, bool mark = false);
- void cursorForward(bool mark, int steps)
- {
- int c = m_cursor;
- if (steps > 0) {
- while (steps--)
- c = cursorMoveStyle() == Qt::VisualMoveStyle ? m_textLayout.rightCursorPosition(c)
- : m_textLayout.nextCursorPosition(c);
- } else if (steps < 0) {
- while (steps++)
- c = cursorMoveStyle() == Qt::VisualMoveStyle ? m_textLayout.leftCursorPosition(c)
- : m_textLayout.previousCursorPosition(c);
- }
- moveCursor(c, mark);
- }
-
- void cursorWordForward(bool mark) { moveCursor(m_textLayout.nextCursorPosition(m_cursor, QTextLayout::SkipWords), mark); }
- void cursorWordBackward(bool mark) { moveCursor(m_textLayout.previousCursorPosition(m_cursor, QTextLayout::SkipWords), mark); }
-
- void home(bool mark) { moveCursor(0, mark); }
- void end(bool mark) { moveCursor(text().length(), mark); }
-
- int xToPos(int x, QTextLine::CursorPosition = QTextLine::CursorBetweenCharacters) const;
- QRect cursorRect() const;
-
- qreal cursorToX(int cursor) const { return m_textLayout.lineAt(0).cursorToX(cursor); }
- qreal cursorToX() const
- {
- int cursor = m_cursor;
- if (m_preeditCursor != -1)
- cursor += m_preeditCursor;
- return cursorToX(cursor);
- }
-
- bool isReadOnly() const { return m_readOnly; }
- void setReadOnly(bool enable) { m_readOnly = enable; }
-
- QString text() const;
- QString realText() const;
- void setText(const QString &txt);
- void commitPreedit();
-
- QString displayText() const { return m_textLayout.text(); }
-
- void backspace();
- void del();
- void deselect() { internalDeselect(); finishChange(); }
- void selectAll() { m_selstart = m_selend = m_cursor = 0; moveCursor(m_text.length(), true); }
-
- void insert(const QString &);
- void clear();
- void undo() { internalUndo(); finishChange(-1, true); }
- void redo() { internalRedo(); finishChange(); }
- void selectWordAtPos(int);
-
- EchoMode echoMode() const { return EchoMode(m_echoMode); }
- void setEchoMode(EchoMode mode)
- {
- m_echoMode = mode;
- m_passwordEchoEditing = false;
- updateDisplayText();
- }
-
- int maxLength() const { return m_maxLength; }
- void setMaxLength(int maxLength)
- {
- if (m_maskData)
- return;
- m_maxLength = maxLength;
- setText(m_text);
- }
-
-#ifndef QT_NO_VALIDATOR
- const QValidator *validator() const { return m_validator; }
- void setValidator(const QValidator *v) { m_validator = const_cast<QValidator*>(v); }
-#endif
-
- int cursorPosition() const { return m_cursor; }
- void setCursorPosition(int pos) { if (pos <= m_text.length()) moveCursor(qMax(0, pos)); }
-
- bool hasAcceptableInput() const { return hasAcceptableInput(m_text); }
- bool fixup();
-
- QString inputMask() const { return m_maskData ? m_inputMask + QLatin1Char(';') + m_blank : QString(); }
- void setInputMask(const QString &mask)
- {
- parseInputMask(mask);
- if (m_maskData)
- moveCursor(nextMaskBlank(0));
- }
-
- // input methods
-#ifndef QT_NO_IM
- bool composeMode() const { return !m_textLayout.preeditAreaText().isEmpty(); }
- void setPreeditArea(int cursor, const QString &text) { m_textLayout.setPreeditArea(cursor, text); }
-#endif
-
- QString preeditAreaText() const { return m_textLayout.preeditAreaText(); }
-
- void updatePasswordEchoEditing(bool editing);
- bool passwordEchoEditing() const { return m_passwordEchoEditing; }
-
- QChar passwordCharacter() const { return m_passwordCharacter; }
- void setPasswordCharacter(const QChar &character) { m_passwordCharacter = character; updateDisplayText(); }
-
- Qt::LayoutDirection layoutDirection() const {
- if (m_layoutDirection == Qt::LayoutDirectionAuto) {
- if (m_text.isEmpty())
- return qApp->inputPanel()->inputDirection();
- return m_text.isRightToLeft() ? Qt::RightToLeft : Qt::LeftToRight;
- }
- return m_layoutDirection;
- }
- void setLayoutDirection(Qt::LayoutDirection direction)
- {
- if (direction != m_layoutDirection) {
- m_layoutDirection = direction;
- updateDisplayText();
- }
- }
-
- void setFont(const QFont &font) { m_textLayout.setFont(font); updateDisplayText(); }
-
- void processInputMethodEvent(QInputMethodEvent *event);
- void processMouseEvent(QMouseEvent* ev);
- void processKeyEvent(QKeyEvent* ev);
-
- int cursorBlinkPeriod() const { return m_blinkPeriod; }
- void setCursorBlinkPeriod(int msec);
- void resetCursorBlinkTimer();
-
- bool cursorBlinkStatus() const { return m_blinkStatus; }
-
- QString cancelText() const { return m_cancelText; }
- void setCancelText(const QString &text) { m_cancelText = text; }
-
- const QPalette &palette() const { return m_palette; }
- void setPalette(const QPalette &p) { m_palette = p; }
-
- enum DrawFlags {
- DrawText = 0x01,
- DrawSelections = 0x02,
- DrawCursor = 0x04,
- DrawAll = DrawText | DrawSelections | DrawCursor
- };
- void draw(QPainter *, const QPoint &, const QRect &, int flags = DrawAll);
-
- bool processEvent(QEvent *ev);
-
- QTextLayout *textLayout()
- {
- return &m_textLayout;
- }
-
-private:
- void init(const QString &txt);
- void removeSelectedText();
- void internalSetText(const QString &txt, int pos = -1, bool edited = true);
- void updateDisplayText(bool forceUpdate = false);
-
- void internalInsert(const QString &s);
- void internalDelete(bool wasBackspace = false);
- void internalRemove(int pos);
-
- inline void internalDeselect()
- {
- m_selDirty |= (m_selend > m_selstart);
- m_selstart = m_selend = 0;
- }
-
- void internalUndo(int until = -1);
- void internalRedo();
-
- QString m_text;
- QPalette m_palette;
- int m_cursor;
- int m_preeditCursor;
- int m_cursorWidth;
- QString m_tentativeCommit;
- Qt::LayoutDirection m_layoutDirection;
- uint m_hideCursor : 1; // used to hide the m_cursor inside preedit areas
- uint m_separator : 1;
- uint m_readOnly : 1;
- uint m_dragEnabled : 1;
- uint m_echoMode : 2;
- uint m_textDirty : 1;
- uint m_selDirty : 1;
- uint m_validInput : 1;
- uint m_blinkStatus : 1;
- int m_blinkPeriod; // 0 for non-blinking cursor
- int m_blinkTimer;
- int m_deleteAllTimer;
- int m_ascent;
- int m_maxLength;
- int m_lastCursorPos;
- QList<int> m_transactions;
- QPoint m_tripleClick;
- int m_tripleClickTimer;
- QString m_cancelText;
-
- void emitCursorPositionChanged();
-
- bool finishChange(int validateFromState = -1, bool update = false, bool edited = true);
-
-#ifndef QT_NO_VALIDATOR
- QPointer<QValidator> m_validator;
-#endif
-
- struct MaskInputData {
- enum Casemode { NoCaseMode, Upper, Lower };
- QChar maskChar; // either the separator char or the inputmask
- bool separator;
- Casemode caseMode;
- };
- QString m_inputMask;
- QChar m_blank;
- MaskInputData *m_maskData;
-
- // undo/redo handling
- enum CommandType { Separator, Insert, Remove, Delete, RemoveSelection, DeleteSelection, SetSelection };
- struct Command {
- inline Command() {}
- inline Command(CommandType t, int p, QChar c, int ss, int se) : type(t),uc(c),pos(p),selStart(ss),selEnd(se) {}
- uint type : 4;
- QChar uc;
- int pos, selStart, selEnd;
- };
- int m_modifiedState;
- int m_undoState;
- QVector<Command> m_history;
- void addCommand(const Command& cmd);
-
- inline void separate() { m_separator = true; }
-
- // selection
- int m_selstart;
- int m_selend;
-
- // masking
- void parseInputMask(const QString &maskFields);
- bool isValidInput(QChar key, QChar mask) const;
- bool hasAcceptableInput(const QString &text) const;
- QString maskString(uint pos, const QString &str, bool clear = false) const;
- QString clearString(uint pos, uint len) const;
- QString stripString(const QString &str) const;
- int findInMask(int pos, bool forward, bool findSeparator, QChar searchChar = QChar()) const;
-
- // complex text layout
- QTextLayout m_textLayout;
-
- bool m_passwordEchoEditing;
- QChar m_passwordCharacter;
-
-Q_SIGNALS:
- void cursorPositionChanged(int, int);
- void selectionChanged();
-
- void displayTextChanged(const QString &);
- void textChanged(const QString &);
- void textEdited(const QString &);
-
- void resetInputContext();
- void updateMicroFocus();
-
- void accepted();
- void editingFinished();
- void updateNeeded(const QRect &);
-
-#ifdef QT_KEYPAD_NAVIGATION
- void editFocusChange(bool);
-#endif
-protected:
- virtual void timerEvent(QTimerEvent *event);
-
-private Q_SLOTS:
- void _q_clipboardChanged();
- void _q_deleteSelected();
-
-};
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif // QLineControl_P_H
diff --git a/src/gui/text/qpfutil.cpp b/src/gui/text/qpfutil.cpp
index f60b358dbe..a3d8c0746a 100644
--- a/src/gui/text/qpfutil.cpp
+++ b/src/gui/text/qpfutil.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qplatformfontdatabase_qpa.cpp b/src/gui/text/qplatformfontdatabase_qpa.cpp
index fbd9cb09cf..f9cc97cbc7 100644
--- a/src/gui/text/qplatformfontdatabase_qpa.cpp
+++ b/src/gui/text/qplatformfontdatabase_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qplatformfontdatabase_qpa.h b/src/gui/text/qplatformfontdatabase_qpa.h
index 9ee2bfd76a..151442c5e1 100644
--- a/src/gui/text/qplatformfontdatabase_qpa.h
+++ b/src/gui/text/qplatformfontdatabase_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QWritingSystemsPrivate;
diff --git a/src/gui/text/qrawfont.cpp b/src/gui/text/qrawfont.cpp
index 65d9797374..a5879e3407 100644
--- a/src/gui/text/qrawfont.cpp
+++ b/src/gui/text/qrawfont.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -81,7 +81,7 @@ QT_BEGIN_NAMESPACE
also have accessors to some relevant data in the physical font.
QRawFont only provides support for the main font technologies: GDI and DirectWrite on Windows
- platforms, FreeType on Symbian and Linux platforms and CoreText on Mac OS X. For other
+ platforms, FreeType on Linux platforms and CoreText on Mac OS X. For other
font back-ends, the APIs will be disabled.
QRawFont can be constructed in a number of ways:
@@ -250,7 +250,7 @@ QImage QRawFont::alphaMapForGlyph(quint32 glyphIndex, AntialiasingType antialias
return QImage();
if (antialiasingType == SubPixelAntialiasing)
- return d->fontEngine->alphaRGBMapForGlyph(glyphIndex, QFixed(), 0, transform);
+ return d->fontEngine->alphaRGBMapForGlyph(glyphIndex, QFixed(), transform);
return d->fontEngine->alphaMapForGlyph(glyphIndex, QFixed(), transform);
}
diff --git a/src/gui/text/qrawfont.h b/src/gui/text/qrawfont.h
index 87f4a75bc7..453f01ff11 100644
--- a/src/gui/text/qrawfont.h
+++ b/src/gui/text/qrawfont.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -57,7 +57,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QRawFontPrivate;
class Q_GUI_EXPORT QRawFont
diff --git a/src/gui/text/qrawfont_ft.cpp b/src/gui/text/qrawfont_ft.cpp
index f0251b28f6..b54a7a3ac3 100644
--- a/src/gui/text/qrawfont_ft.cpp
+++ b/src/gui/text/qrawfont_ft.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qrawfont_p.h b/src/gui/text/qrawfont_p.h
index b1a71d96ab..8f6341601d 100644
--- a/src/gui/text/qrawfont_p.h
+++ b/src/gui/text/qrawfont_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qrawfont_qpa.cpp b/src/gui/text/qrawfont_qpa.cpp
index 444efd0a0b..e9515fdf97 100644
--- a/src/gui/text/qrawfont_qpa.cpp
+++ b/src/gui/text/qrawfont_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp
index c356aa7e99..5bee2a9915 100644
--- a/src/gui/text/qstatictext.cpp
+++ b/src/gui/text/qstatictext.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qstatictext.h b/src/gui/text/qstatictext.h
index ad55c6a05d..a67d4ca595 100644
--- a/src/gui/text/qstatictext.h
+++ b/src/gui/text/qstatictext.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QStaticTextPrivate;
class Q_GUI_EXPORT QStaticText
diff --git a/src/gui/text/qstatictext_p.h b/src/gui/text/qstatictext_p.h
index 2607bcfe8a..994825ce22 100644
--- a/src/gui/text/qstatictext_p.h
+++ b/src/gui/text/qstatictext_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qsyntaxhighlighter.cpp b/src/gui/text/qsyntaxhighlighter.cpp
index d9bdeeddfe..c6810ad61f 100644
--- a/src/gui/text/qsyntaxhighlighter.cpp
+++ b/src/gui/text/qsyntaxhighlighter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qsyntaxhighlighter.h b/src/gui/text/qsyntaxhighlighter.h
index bd64de34bb..244f40b7ed 100644
--- a/src/gui/text/qsyntaxhighlighter.h
+++ b/src/gui/text/qsyntaxhighlighter.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QTextDocument;
class QSyntaxHighlighterPrivate;
diff --git a/src/gui/text/qtextcontrol.cpp b/src/gui/text/qtextcontrol.cpp
deleted file mode 100644
index b21dae5298..0000000000
--- a/src/gui/text/qtextcontrol.cpp
+++ /dev/null
@@ -1,2893 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 "qtextcontrol_p.h"
-#include "qtextcontrol_p_p.h"
-
-#ifndef QT_NO_TEXTCONTROL
-
-#include <qfont.h>
-#include <qpainter.h>
-#include <qevent.h>
-#include <qdebug.h>
-#include <qdrag.h>
-#include <qclipboard.h>
-#include <qtimer.h>
-#include <qinputpanel.h>
-#include "private/qtextdocumentlayout_p.h"
-#include "private/qabstracttextdocumentlayout_p.h"
-#include "qtextdocument.h"
-#include "private/qtextdocument_p.h"
-#include "qtextlist.h"
-#include "qtextdocumentwriter.h"
-#include "private/qtextcursor_p.h"
-#include "qpagedpaintdevice.h"
-#include "private/qpagedpaintdevice_p.h"
-
-#include <qtextformat.h>
-#include <qdatetime.h>
-#include <qbuffer.h>
-#include <qguiapplication.h>
-#include <limits.h>
-#include <qtexttable.h>
-#include <qvariant.h>
-#include <qurl.h>
-#include <qstylehints.h>
-
-// ### these should come from QStyleHints
-const int textCursorWidth = 1;
-const bool fullWidthSelection = true;
-
-QT_BEGIN_NAMESPACE
-
-#ifndef QT_NO_CONTEXTMENU
-#endif
-
-// could go into QTextCursor...
-static QTextLine currentTextLine(const QTextCursor &cursor)
-{
- const QTextBlock block = cursor.block();
- if (!block.isValid())
- return QTextLine();
-
- const QTextLayout *layout = block.layout();
- if (!layout)
- return QTextLine();
-
- const int relativePos = cursor.position() - block.position();
- return layout->lineForTextPosition(relativePos);
-}
-
-QTextControlPrivate::QTextControlPrivate()
- : doc(0), cursorOn(false), cursorIsFocusIndicator(false),
- interactionFlags(Qt::TextEditorInteraction),
- dragEnabled(true),
-#ifndef QT_NO_DRAGANDDROP
- mousePressed(false), mightStartDrag(false),
-#endif
- lastSelectionState(false), ignoreAutomaticScrollbarAdjustement(false),
- overwriteMode(false),
- acceptRichText(true),
- preeditCursor(0), hideCursor(false),
- hasFocus(false),
-#ifdef QT_KEYPAD_NAVIGATION
- hasEditFocus(false),
-#endif
- isEnabled(true),
- hadSelectionOnMousePress(false),
- ignoreUnusedNavigationEvents(false),
- openExternalLinks(false),
- wordSelectionEnabled(false)
-{}
-
-bool QTextControlPrivate::cursorMoveKeyEvent(QKeyEvent *e)
-{
-#ifdef QT_NO_SHORTCUT
- Q_UNUSED(e);
-#endif
-
- Q_Q(QTextControl);
- if (cursor.isNull())
- return false;
-
- const QTextCursor oldSelection = cursor;
- const int oldCursorPos = cursor.position();
-
- QTextCursor::MoveMode mode = QTextCursor::MoveAnchor;
- QTextCursor::MoveOperation op = QTextCursor::NoMove;
-
- if (false) {
- }
-#ifndef QT_NO_SHORTCUT
- if (e == QKeySequence::MoveToNextChar) {
- op = QTextCursor::Right;
- }
- else if (e == QKeySequence::MoveToPreviousChar) {
- op = QTextCursor::Left;
- }
- else if (e == QKeySequence::SelectNextChar) {
- op = QTextCursor::Right;
- mode = QTextCursor::KeepAnchor;
- }
- else if (e == QKeySequence::SelectPreviousChar) {
- op = QTextCursor::Left;
- mode = QTextCursor::KeepAnchor;
- }
- else if (e == QKeySequence::SelectNextWord) {
- op = QTextCursor::WordRight;
- mode = QTextCursor::KeepAnchor;
- }
- else if (e == QKeySequence::SelectPreviousWord) {
- op = QTextCursor::WordLeft;
- mode = QTextCursor::KeepAnchor;
- }
- else if (e == QKeySequence::SelectStartOfLine) {
- op = QTextCursor::StartOfLine;
- mode = QTextCursor::KeepAnchor;
- }
- else if (e == QKeySequence::SelectEndOfLine) {
- op = QTextCursor::EndOfLine;
- mode = QTextCursor::KeepAnchor;
- }
- else if (e == QKeySequence::SelectStartOfBlock) {
- op = QTextCursor::StartOfBlock;
- mode = QTextCursor::KeepAnchor;
- }
- else if (e == QKeySequence::SelectEndOfBlock) {
- op = QTextCursor::EndOfBlock;
- mode = QTextCursor::KeepAnchor;
- }
- else if (e == QKeySequence::SelectStartOfDocument) {
- op = QTextCursor::Start;
- mode = QTextCursor::KeepAnchor;
- }
- else if (e == QKeySequence::SelectEndOfDocument) {
- op = QTextCursor::End;
- mode = QTextCursor::KeepAnchor;
- }
- else if (e == QKeySequence::SelectPreviousLine) {
- op = QTextCursor::Up;
- mode = QTextCursor::KeepAnchor;
- }
- else if (e == QKeySequence::SelectNextLine) {
- op = QTextCursor::Down;
- mode = QTextCursor::KeepAnchor;
- {
- QTextBlock block = cursor.block();
- QTextLine line = currentTextLine(cursor);
- if (!block.next().isValid()
- && line.isValid()
- && line.lineNumber() == block.layout()->lineCount() - 1)
- op = QTextCursor::End;
- }
- }
- else if (e == QKeySequence::MoveToNextWord) {
- op = QTextCursor::WordRight;
- }
- else if (e == QKeySequence::MoveToPreviousWord) {
- op = QTextCursor::WordLeft;
- }
- else if (e == QKeySequence::MoveToEndOfBlock) {
- op = QTextCursor::EndOfBlock;
- }
- else if (e == QKeySequence::MoveToStartOfBlock) {
- op = QTextCursor::StartOfBlock;
- }
- else if (e == QKeySequence::MoveToNextLine) {
- op = QTextCursor::Down;
- }
- else if (e == QKeySequence::MoveToPreviousLine) {
- op = QTextCursor::Up;
- }
- else if (e == QKeySequence::MoveToStartOfLine) {
- op = QTextCursor::StartOfLine;
- }
- else if (e == QKeySequence::MoveToEndOfLine) {
- op = QTextCursor::EndOfLine;
- }
- else if (e == QKeySequence::MoveToStartOfDocument) {
- op = QTextCursor::Start;
- }
- else if (e == QKeySequence::MoveToEndOfDocument) {
- op = QTextCursor::End;
- }
-#endif // QT_NO_SHORTCUT
- else {
- return false;
- }
-
-// Except for pageup and pagedown, Mac OS X has very different behavior, we don't do it all, but
-// here's the breakdown:
-// Shift still works as an anchor, but only one of the other keys can be down Ctrl (Command),
-// Alt (Option), or Meta (Control).
-// Command/Control + Left/Right -- Move to left or right of the line
-// + Up/Down -- Move to top bottom of the file. (Control doesn't move the cursor)
-// Option + Left/Right -- Move one word Left/right.
-// + Up/Down -- Begin/End of Paragraph.
-// Home/End Top/Bottom of file. (usually don't move the cursor, but will select)
-
- bool visualNavigation = cursor.visualNavigation();
- cursor.setVisualNavigation(true);
- const bool moved = cursor.movePosition(op, mode);
- cursor.setVisualNavigation(visualNavigation);
- q->ensureCursorVisible();
-
- bool ignoreNavigationEvents = ignoreUnusedNavigationEvents;
- bool isNavigationEvent = e->key() == Qt::Key_Up || e->key() == Qt::Key_Down;
-
-#ifdef QT_KEYPAD_NAVIGATION
- ignoreNavigationEvents = ignoreNavigationEvents || QGuiApplication::keypadNavigationEnabled();
- isNavigationEvent = isNavigationEvent ||
- (QGuiApplication::navigationMode() == Qt::NavigationModeKeypadDirectional
- && (e->key() == Qt::Key_Left || e->key() == Qt::Key_Right));
-#else
- isNavigationEvent = isNavigationEvent || e->key() == Qt::Key_Left || e->key() == Qt::Key_Right;
-#endif
-
- if (moved) {
- if (cursor.position() != oldCursorPos)
- emit q->cursorPositionChanged();
- emit q->microFocusChanged();
- } else if (ignoreNavigationEvents && isNavigationEvent && oldSelection.anchor() == cursor.anchor()) {
- return false;
- }
-
- selectionChanged(/*forceEmitSelectionChanged =*/(mode == QTextCursor::KeepAnchor));
-
- repaintOldAndNewSelection(oldSelection);
-
- return true;
-}
-
-void QTextControlPrivate::updateCurrentCharFormat()
-{
- Q_Q(QTextControl);
-
- QTextCharFormat fmt = cursor.charFormat();
- if (fmt == lastCharFormat)
- return;
- lastCharFormat = fmt;
-
- emit q->currentCharFormatChanged(fmt);
- emit q->microFocusChanged();
-}
-
-void QTextControlPrivate::indent()
-{
- QTextBlockFormat blockFmt = cursor.blockFormat();
-
- QTextList *list = cursor.currentList();
- if (!list) {
- QTextBlockFormat modifier;
- modifier.setIndent(blockFmt.indent() + 1);
- cursor.mergeBlockFormat(modifier);
- } else {
- QTextListFormat format = list->format();
- format.setIndent(format.indent() + 1);
-
- if (list->itemNumber(cursor.block()) == 1)
- list->setFormat(format);
- else
- cursor.createList(format);
- }
-}
-
-void QTextControlPrivate::outdent()
-{
- QTextBlockFormat blockFmt = cursor.blockFormat();
-
- QTextList *list = cursor.currentList();
-
- if (!list) {
- QTextBlockFormat modifier;
- modifier.setIndent(blockFmt.indent() - 1);
- cursor.mergeBlockFormat(modifier);
- } else {
- QTextListFormat listFmt = list->format();
- listFmt.setIndent(listFmt.indent() - 1);
- list->setFormat(listFmt);
- }
-}
-
-void QTextControlPrivate::gotoNextTableCell()
-{
- QTextTable *table = cursor.currentTable();
- QTextTableCell cell = table->cellAt(cursor);
-
- int newColumn = cell.column() + cell.columnSpan();
- int newRow = cell.row();
-
- if (newColumn >= table->columns()) {
- newColumn = 0;
- ++newRow;
- if (newRow >= table->rows())
- table->insertRows(table->rows(), 1);
- }
-
- cell = table->cellAt(newRow, newColumn);
- cursor = cell.firstCursorPosition();
-}
-
-void QTextControlPrivate::gotoPreviousTableCell()
-{
- QTextTable *table = cursor.currentTable();
- QTextTableCell cell = table->cellAt(cursor);
-
- int newColumn = cell.column() - 1;
- int newRow = cell.row();
-
- if (newColumn < 0) {
- newColumn = table->columns() - 1;
- --newRow;
- if (newRow < 0)
- return;
- }
-
- cell = table->cellAt(newRow, newColumn);
- cursor = cell.firstCursorPosition();
-}
-
-void QTextControlPrivate::createAutoBulletList()
-{
- cursor.beginEditBlock();
-
- QTextBlockFormat blockFmt = cursor.blockFormat();
-
- QTextListFormat listFmt;
- listFmt.setStyle(QTextListFormat::ListDisc);
- listFmt.setIndent(blockFmt.indent() + 1);
-
- blockFmt.setIndent(0);
- cursor.setBlockFormat(blockFmt);
-
- cursor.createList(listFmt);
-
- cursor.endEditBlock();
-}
-
-void QTextControlPrivate::init(Qt::TextFormat format, const QString &text, QTextDocument *document)
-{
- Q_Q(QTextControl);
- setContent(format, text, document);
-
- doc->setUndoRedoEnabled(interactionFlags & Qt::TextEditable);
- q->setCursorWidth(-1);
-
- QObject::connect(q, SIGNAL(updateCursorRequest(QRectF)), q, SIGNAL(updateRequest(QRectF)));
-}
-
-void QTextControlPrivate::setContent(Qt::TextFormat format, const QString &text, QTextDocument *document)
-{
- Q_Q(QTextControl);
-
- // for use when called from setPlainText. we may want to re-use the currently
- // set char format then.
- const QTextCharFormat charFormatForInsertion = cursor.charFormat();
-
- bool clearDocument = true;
- if (!doc) {
- if (document) {
- doc = document;
- clearDocument = false;
- } else {
- palette = QGuiApplication::palette();
- doc = new QTextDocument(q);
- }
- _q_documentLayoutChanged();
- cursor = QTextCursor(doc);
-
-// #### doc->documentLayout()->setPaintDevice(viewport);
-
- QObject::connect(doc, SIGNAL(contentsChanged()), q, SLOT(_q_updateCurrentCharFormatAndSelection()));
- QObject::connect(doc, SIGNAL(cursorPositionChanged(QTextCursor)), q, SLOT(_q_emitCursorPosChanged(QTextCursor)));
- QObject::connect(doc, SIGNAL(documentLayoutChanged()), q, SLOT(_q_documentLayoutChanged()));
-
- // convenience signal forwards
- QObject::connect(doc, SIGNAL(undoAvailable(bool)), q, SIGNAL(undoAvailable(bool)));
- QObject::connect(doc, SIGNAL(redoAvailable(bool)), q, SIGNAL(redoAvailable(bool)));
- QObject::connect(doc, SIGNAL(modificationChanged(bool)), q, SIGNAL(modificationChanged(bool)));
- QObject::connect(doc, SIGNAL(blockCountChanged(int)), q, SIGNAL(blockCountChanged(int)));
- }
-
- bool previousUndoRedoState = doc->isUndoRedoEnabled();
- if (!document)
- doc->setUndoRedoEnabled(false);
-
- //Saving the index save some time.
- static int contentsChangedIndex = QTextDocument::staticMetaObject.indexOfSignal("contentsChanged()");
- static int textChangedIndex = QTextControl::staticMetaObject.indexOfSignal("textChanged()");
- // avoid multiple textChanged() signals being emitted
- QMetaObject::disconnect(doc, contentsChangedIndex, q, textChangedIndex);
-
- if (!text.isEmpty()) {
- // clear 'our' cursor for insertion to prevent
- // the emission of the cursorPositionChanged() signal.
- // instead we emit it only once at the end instead of
- // at the end of the document after loading and when
- // positioning the cursor again to the start of the
- // document.
- cursor = QTextCursor();
- if (format == Qt::PlainText) {
- QTextCursor formatCursor(doc);
- // put the setPlainText and the setCharFormat into one edit block,
- // so that the syntax highlight triggers only /once/ for the entire
- // document, not twice.
- formatCursor.beginEditBlock();
- doc->setPlainText(text);
- doc->setUndoRedoEnabled(false);
- formatCursor.select(QTextCursor::Document);
- formatCursor.setCharFormat(charFormatForInsertion);
- formatCursor.endEditBlock();
- } else {
-#ifndef QT_NO_TEXTHTMLPARSER
- doc->setHtml(text);
-#else
- doc->setPlainText(text);
-#endif
- doc->setUndoRedoEnabled(false);
- }
- cursor = QTextCursor(doc);
- } else if (clearDocument) {
- doc->clear();
- }
- cursor.setCharFormat(charFormatForInsertion);
-
- QMetaObject::connect(doc, contentsChangedIndex, q, textChangedIndex);
- emit q->textChanged();
- if (!document)
- doc->setUndoRedoEnabled(previousUndoRedoState);
- _q_updateCurrentCharFormatAndSelection();
- if (!document)
- doc->setModified(false);
-
- q->ensureCursorVisible();
- emit q->cursorPositionChanged();
-}
-
-void QTextControlPrivate::startDrag()
-{
-#ifndef QT_NO_DRAGANDDROP
- Q_Q(QTextControl);
- mousePressed = false;
- if (!contextObject)
- return;
- QMimeData *data = q->createMimeDataFromSelection();
-
- QDrag *drag = new QDrag(contextObject);
- drag->setMimeData(data);
-
- Qt::DropActions actions = Qt::CopyAction;
- Qt::DropAction action;
- if (interactionFlags & Qt::TextEditable) {
- actions |= Qt::MoveAction;
- action = drag->exec(actions, Qt::MoveAction);
- } else {
- action = drag->exec(actions, Qt::CopyAction);
- }
-
- if (action == Qt::MoveAction && drag->target() != contextObject)
- cursor.removeSelectedText();
-#endif
-}
-
-void QTextControlPrivate::setCursorPosition(const QPointF &pos)
-{
- Q_Q(QTextControl);
- const int cursorPos = q->hitTest(pos, Qt::FuzzyHit);
- if (cursorPos == -1)
- return;
- cursor.setPosition(cursorPos);
-}
-
-void QTextControlPrivate::setCursorPosition(int pos, QTextCursor::MoveMode mode)
-{
- cursor.setPosition(pos, mode);
-
- if (mode != QTextCursor::KeepAnchor) {
- selectedWordOnDoubleClick = QTextCursor();
- selectedBlockOnTrippleClick = QTextCursor();
- }
-}
-
-void QTextControlPrivate::repaintCursor()
-{
- Q_Q(QTextControl);
- emit q->updateCursorRequest(cursorRectPlusUnicodeDirectionMarkers(cursor));
-}
-
-void QTextControlPrivate::repaintOldAndNewSelection(const QTextCursor &oldSelection)
-{
- Q_Q(QTextControl);
- if (cursor.hasSelection()
- && oldSelection.hasSelection()
- && cursor.currentFrame() == oldSelection.currentFrame()
- && !cursor.hasComplexSelection()
- && !oldSelection.hasComplexSelection()
- && cursor.anchor() == oldSelection.anchor()
- ) {
- QTextCursor differenceSelection(doc);
- differenceSelection.setPosition(oldSelection.position());
- differenceSelection.setPosition(cursor.position(), QTextCursor::KeepAnchor);
- emit q->updateRequest(q->selectionRect(differenceSelection));
- } else {
- if (!oldSelection.hasSelection() && !cursor.hasSelection()) {
- if (!oldSelection.isNull())
- emit q->updateCursorRequest(q->selectionRect(oldSelection) | cursorRectPlusUnicodeDirectionMarkers(oldSelection));
- emit q->updateCursorRequest(q->selectionRect() | cursorRectPlusUnicodeDirectionMarkers(cursor));
-
- } else {
- if (!oldSelection.isNull())
- emit q->updateRequest(q->selectionRect(oldSelection) | cursorRectPlusUnicodeDirectionMarkers(oldSelection));
- emit q->updateRequest(q->selectionRect() | cursorRectPlusUnicodeDirectionMarkers(cursor));
- }
- }
-}
-
-void QTextControlPrivate::selectionChanged(bool forceEmitSelectionChanged /*=false*/)
-{
- Q_Q(QTextControl);
- if (forceEmitSelectionChanged)
- emit q->selectionChanged();
-
- bool current = cursor.hasSelection();
- if (current == lastSelectionState)
- return;
-
- lastSelectionState = current;
- emit q->copyAvailable(current);
- if (!forceEmitSelectionChanged)
- emit q->selectionChanged();
- emit q->microFocusChanged();
-}
-
-void QTextControlPrivate::_q_updateCurrentCharFormatAndSelection()
-{
- updateCurrentCharFormat();
- selectionChanged();
-}
-
-#ifndef QT_NO_CLIPBOARD
-void QTextControlPrivate::setClipboardSelection()
-{
- QClipboard *clipboard = QGuiApplication::clipboard();
- if (!cursor.hasSelection() || !clipboard->supportsSelection())
- return;
- Q_Q(QTextControl);
- QMimeData *data = q->createMimeDataFromSelection();
- clipboard->setMimeData(data, QClipboard::Selection);
-}
-#endif
-
-void QTextControlPrivate::_q_emitCursorPosChanged(const QTextCursor &someCursor)
-{
- Q_Q(QTextControl);
- if (someCursor.isCopyOf(cursor)) {
- emit q->cursorPositionChanged();
- emit q->microFocusChanged();
- }
-}
-
-void QTextControlPrivate::_q_documentLayoutChanged()
-{
- Q_Q(QTextControl);
- QAbstractTextDocumentLayout *layout = doc->documentLayout();
- QObject::connect(layout, SIGNAL(update(QRectF)), q, SIGNAL(updateRequest(QRectF)));
- QObject::connect(layout, SIGNAL(updateBlock(QTextBlock)), q, SLOT(_q_updateBlock(QTextBlock)));
- QObject::connect(layout, SIGNAL(documentSizeChanged(QSizeF)), q, SIGNAL(documentSizeChanged(QSizeF)));
-
-}
-
-void QTextControlPrivate::setBlinkingCursorEnabled(bool enable)
-{
- Q_Q(QTextControl);
-
- if (enable && qApp->styleHints()->cursorFlashTime() > 0)
- cursorBlinkTimer.start(qApp->styleHints()->cursorFlashTime() / 2, q);
- else
- cursorBlinkTimer.stop();
-
- cursorOn = enable;
-
- repaintCursor();
-}
-
-void QTextControlPrivate::extendWordwiseSelection(int suggestedNewPosition, qreal mouseXPosition)
-{
- Q_Q(QTextControl);
-
- // if inside the initial selected word keep that
- if (suggestedNewPosition >= selectedWordOnDoubleClick.selectionStart()
- && suggestedNewPosition <= selectedWordOnDoubleClick.selectionEnd()) {
- q->setTextCursor(selectedWordOnDoubleClick);
- return;
- }
-
- QTextCursor curs = selectedWordOnDoubleClick;
- curs.setPosition(suggestedNewPosition, QTextCursor::KeepAnchor);
-
- if (!curs.movePosition(QTextCursor::StartOfWord))
- return;
- const int wordStartPos = curs.position();
-
- const int blockPos = curs.block().position();
- const QPointF blockCoordinates = q->blockBoundingRect(curs.block()).topLeft();
-
- QTextLine line = currentTextLine(curs);
- if (!line.isValid())
- return;
-
- const qreal wordStartX = line.cursorToX(curs.position() - blockPos) + blockCoordinates.x();
-
- if (!curs.movePosition(QTextCursor::EndOfWord))
- return;
- const int wordEndPos = curs.position();
-
- const QTextLine otherLine = currentTextLine(curs);
- if (otherLine.textStart() != line.textStart()
- || wordEndPos == wordStartPos)
- return;
-
- const qreal wordEndX = line.cursorToX(curs.position() - blockPos) + blockCoordinates.x();
-
- if (!wordSelectionEnabled && (mouseXPosition < wordStartX || mouseXPosition > wordEndX))
- return;
-
- if (wordSelectionEnabled) {
- if (suggestedNewPosition < selectedWordOnDoubleClick.position()) {
- cursor.setPosition(selectedWordOnDoubleClick.selectionEnd());
- setCursorPosition(wordStartPos, QTextCursor::KeepAnchor);
- } else {
- cursor.setPosition(selectedWordOnDoubleClick.selectionStart());
- setCursorPosition(wordEndPos, QTextCursor::KeepAnchor);
- }
- } else {
- // keep the already selected word even when moving to the left
- // (#39164)
- if (suggestedNewPosition < selectedWordOnDoubleClick.position())
- cursor.setPosition(selectedWordOnDoubleClick.selectionEnd());
- else
- cursor.setPosition(selectedWordOnDoubleClick.selectionStart());
-
- const qreal differenceToStart = mouseXPosition - wordStartX;
- const qreal differenceToEnd = wordEndX - mouseXPosition;
-
- if (differenceToStart < differenceToEnd)
- setCursorPosition(wordStartPos, QTextCursor::KeepAnchor);
- else
- setCursorPosition(wordEndPos, QTextCursor::KeepAnchor);
- }
-
- if (interactionFlags & Qt::TextSelectableByMouse) {
-#ifndef QT_NO_CLIPBOARD
- setClipboardSelection();
-#endif
- selectionChanged(true);
- }
-}
-
-void QTextControlPrivate::extendBlockwiseSelection(int suggestedNewPosition)
-{
- Q_Q(QTextControl);
-
- // if inside the initial selected line keep that
- if (suggestedNewPosition >= selectedBlockOnTrippleClick.selectionStart()
- && suggestedNewPosition <= selectedBlockOnTrippleClick.selectionEnd()) {
- q->setTextCursor(selectedBlockOnTrippleClick);
- return;
- }
-
- if (suggestedNewPosition < selectedBlockOnTrippleClick.position()) {
- cursor.setPosition(selectedBlockOnTrippleClick.selectionEnd());
- cursor.setPosition(suggestedNewPosition, QTextCursor::KeepAnchor);
- cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor);
- } else {
- cursor.setPosition(selectedBlockOnTrippleClick.selectionStart());
- cursor.setPosition(suggestedNewPosition, QTextCursor::KeepAnchor);
- cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
- cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor);
- }
-
- if (interactionFlags & Qt::TextSelectableByMouse) {
-#ifndef QT_NO_CLIPBOARD
- setClipboardSelection();
-#endif
- selectionChanged(true);
- }
-}
-
-void QTextControlPrivate::_q_deleteSelected()
-{
- if (!(interactionFlags & Qt::TextEditable) || !cursor.hasSelection())
- return;
- cursor.removeSelectedText();
-}
-
-void QTextControl::undo()
-{
- Q_D(QTextControl);
- d->repaintSelection();
- const int oldCursorPos = d->cursor.position();
- d->doc->undo(&d->cursor);
- if (d->cursor.position() != oldCursorPos)
- emit cursorPositionChanged();
- emit microFocusChanged();
- ensureCursorVisible();
-}
-
-void QTextControl::redo()
-{
- Q_D(QTextControl);
- d->repaintSelection();
- const int oldCursorPos = d->cursor.position();
- d->doc->redo(&d->cursor);
- if (d->cursor.position() != oldCursorPos)
- emit cursorPositionChanged();
- emit microFocusChanged();
- ensureCursorVisible();
-}
-
-QTextControl::QTextControl(QObject *parent)
- : QObject(*new QTextControlPrivate, parent)
-{
- Q_D(QTextControl);
- d->init();
-}
-
-QTextControl::QTextControl(const QString &text, QObject *parent)
- : QObject(*new QTextControlPrivate, parent)
-{
- Q_D(QTextControl);
- d->init(Qt::RichText, text);
-}
-
-QTextControl::QTextControl(QTextDocument *doc, QObject *parent)
- : QObject(*new QTextControlPrivate, parent)
-{
- Q_D(QTextControl);
- d->init(Qt::RichText, QString(), doc);
-}
-
-QTextControl::~QTextControl()
-{
-}
-
-void QTextControl::setView(QObject *view)
-{
- Q_D(QTextControl);
- d->contextObject = view;
-}
-
-QObject *QTextControl::view() const
-{
- Q_D(const QTextControl);
- return d->contextObject;
-}
-
-void QTextControl::setDocument(QTextDocument *document)
-{
- Q_D(QTextControl);
- if (d->doc == document)
- return;
-
- d->doc->disconnect(this);
- d->doc->documentLayout()->disconnect(this);
- d->doc->documentLayout()->setPaintDevice(0);
-
- if (d->doc->parent() == this)
- delete d->doc;
-
- d->doc = 0;
- d->setContent(Qt::RichText, QString(), document);
-}
-
-QTextDocument *QTextControl::document() const
-{
- Q_D(const QTextControl);
- return d->doc;
-}
-
-void QTextControl::setTextCursor(const QTextCursor &cursor)
-{
- Q_D(QTextControl);
- d->cursorIsFocusIndicator = false;
- const bool posChanged = cursor.position() != d->cursor.position();
- const QTextCursor oldSelection = d->cursor;
- d->cursor = cursor;
- d->cursorOn = d->hasFocus && (d->interactionFlags & Qt::TextEditable);
- d->_q_updateCurrentCharFormatAndSelection();
- ensureCursorVisible();
- d->repaintOldAndNewSelection(oldSelection);
- if (posChanged)
- emit cursorPositionChanged();
-}
-
-QTextCursor QTextControl::textCursor() const
-{
- Q_D(const QTextControl);
- return d->cursor;
-}
-
-#ifndef QT_NO_CLIPBOARD
-
-void QTextControl::cut()
-{
- Q_D(QTextControl);
- if (!(d->interactionFlags & Qt::TextEditable) || !d->cursor.hasSelection())
- return;
- copy();
- d->cursor.removeSelectedText();
-}
-
-void QTextControl::copy()
-{
- Q_D(QTextControl);
- if (!d->cursor.hasSelection())
- return;
- QMimeData *data = createMimeDataFromSelection();
- QGuiApplication::clipboard()->setMimeData(data);
-}
-
-void QTextControl::paste(QClipboard::Mode mode)
-{
- const QMimeData *md = QGuiApplication::clipboard()->mimeData(mode);
- if (md)
- insertFromMimeData(md);
-}
-#endif
-
-void QTextControl::clear()
-{
- Q_D(QTextControl);
- // clears and sets empty content
- d->extraSelections.clear();
- d->setContent();
-}
-
-
-void QTextControl::selectAll()
-{
- Q_D(QTextControl);
- const int selectionLength = qAbs(d->cursor.position() - d->cursor.anchor());
- d->cursor.select(QTextCursor::Document);
- d->selectionChanged(selectionLength != qAbs(d->cursor.position() - d->cursor.anchor()));
- d->cursorIsFocusIndicator = false;
- emit updateRequest();
-}
-
-void QTextControl::processEvent(QEvent *e, const QPointF &coordinateOffset)
-{
- QMatrix m;
- m.translate(coordinateOffset.x(), coordinateOffset.y());
- processEvent(e, m);
-}
-
-void QTextControl::processEvent(QEvent *e, const QMatrix &matrix)
-{
- Q_D(QTextControl);
- if (d->interactionFlags == Qt::NoTextInteraction) {
- e->ignore();
- return;
- }
-
- switch (e->type()) {
- case QEvent::KeyPress:
- d->keyPressEvent(static_cast<QKeyEvent *>(e));
- break;
- case QEvent::MouseButtonPress: {
- QMouseEvent *ev = static_cast<QMouseEvent *>(e);
- d->mousePressEvent(ev, ev->button(), matrix.map(ev->pos()), ev->modifiers(),
- ev->buttons(), ev->globalPos());
- break; }
- case QEvent::MouseMove: {
- QMouseEvent *ev = static_cast<QMouseEvent *>(e);
- d->mouseMoveEvent(ev, ev->button(), matrix.map(ev->pos()), ev->modifiers(),
- ev->buttons(), ev->globalPos());
- break; }
- case QEvent::MouseButtonRelease: {
- QMouseEvent *ev = static_cast<QMouseEvent *>(e);
- d->mouseReleaseEvent(ev, ev->button(), matrix.map(ev->pos()), ev->modifiers(),
- ev->buttons(), ev->globalPos());
- break; }
- case QEvent::MouseButtonDblClick: {
- QMouseEvent *ev = static_cast<QMouseEvent *>(e);
- d->mouseDoubleClickEvent(ev, ev->button(), matrix.map(ev->pos()), ev->modifiers(),
- ev->buttons(), ev->globalPos());
- break; }
- case QEvent::InputMethod:
- d->inputMethodEvent(static_cast<QInputMethodEvent *>(e));
- break;
- case QEvent::FocusIn:
- case QEvent::FocusOut:
- d->focusEvent(static_cast<QFocusEvent *>(e));
- break;
-
- case QEvent::EnabledChange:
- d->isEnabled = e->isAccepted();
- break;
-
-#ifndef QT_NO_DRAGANDDROP
- case QEvent::DragEnter: {
- QDragEnterEvent *ev = static_cast<QDragEnterEvent *>(e);
- if (d->dragEnterEvent(e, ev->mimeData()))
- ev->acceptProposedAction();
- break;
- }
- case QEvent::DragLeave:
- d->dragLeaveEvent();
- break;
- case QEvent::DragMove: {
- QDragMoveEvent *ev = static_cast<QDragMoveEvent *>(e);
- if (d->dragMoveEvent(e, ev->mimeData(), matrix.map(ev->pos())))
- ev->acceptProposedAction();
- break;
- }
- case QEvent::Drop: {
- QDropEvent *ev = static_cast<QDropEvent *>(e);
- if (d->dropEvent(ev->mimeData(), matrix.map(ev->pos()), ev->dropAction(), ev->source()))
- ev->acceptProposedAction();
- break;
- }
-#endif
-
-#ifdef QT_KEYPAD_NAVIGATION
- case QEvent::EnterEditFocus:
- case QEvent::LeaveEditFocus:
- if (QGuiApplication::keypadNavigationEnabled())
- d->editFocusEvent(e);
- break;
-#endif
- case QEvent::ShortcutOverride:
- if (d->interactionFlags & Qt::TextEditable) {
- QKeyEvent* ke = static_cast<QKeyEvent *>(e);
- if (ke->modifiers() == Qt::NoModifier
- || ke->modifiers() == Qt::ShiftModifier
- || ke->modifiers() == Qt::KeypadModifier) {
- if (ke->key() < Qt::Key_Escape) {
- ke->accept();
- } else {
- switch (ke->key()) {
- case Qt::Key_Return:
- case Qt::Key_Enter:
- case Qt::Key_Delete:
- case Qt::Key_Home:
- case Qt::Key_End:
- case Qt::Key_Backspace:
- case Qt::Key_Left:
- case Qt::Key_Right:
- case Qt::Key_Up:
- case Qt::Key_Down:
- case Qt::Key_Tab:
- ke->accept();
- default:
- break;
- }
- }
-#ifndef QT_NO_SHORTCUT
- } else if (ke == QKeySequence::Copy
- || ke == QKeySequence::Paste
- || ke == QKeySequence::Cut
- || ke == QKeySequence::Redo
- || ke == QKeySequence::Undo
- || ke == QKeySequence::MoveToNextWord
- || ke == QKeySequence::MoveToPreviousWord
- || ke == QKeySequence::MoveToStartOfDocument
- || ke == QKeySequence::MoveToEndOfDocument
- || ke == QKeySequence::SelectNextWord
- || ke == QKeySequence::SelectPreviousWord
- || ke == QKeySequence::SelectStartOfLine
- || ke == QKeySequence::SelectEndOfLine
- || ke == QKeySequence::SelectStartOfBlock
- || ke == QKeySequence::SelectEndOfBlock
- || ke == QKeySequence::SelectStartOfDocument
- || ke == QKeySequence::SelectEndOfDocument
- || ke == QKeySequence::SelectAll
- ) {
- ke->accept();
-#endif
- }
- }
- break;
- default:
- break;
- }
-}
-
-bool QTextControl::event(QEvent *e)
-{
- return QObject::event(e);
-}
-
-void QTextControl::timerEvent(QTimerEvent *e)
-{
- Q_D(QTextControl);
- if (e->timerId() == d->cursorBlinkTimer.timerId()) {
- d->cursorOn = !d->cursorOn;
-
- // ###
-// if (d->cursor.hasSelection())
-// d->cursorOn &= (QGuiApplication::style()->styleHint(QStyle::SH_BlinkCursorWhenTextSelected)
-// != 0);
-
- d->repaintCursor();
- } else if (e->timerId() == d->trippleClickTimer.timerId()) {
- d->trippleClickTimer.stop();
- }
-}
-
-void QTextControl::setPlainText(const QString &text)
-{
- Q_D(QTextControl);
- d->setContent(Qt::PlainText, text);
-}
-
-void QTextControl::setHtml(const QString &text)
-{
- Q_D(QTextControl);
- d->setContent(Qt::RichText, text);
-}
-
-void QTextControlPrivate::keyPressEvent(QKeyEvent *e)
-{
- Q_Q(QTextControl);
-#ifndef QT_NO_SHORTCUT
- if (e == QKeySequence::SelectAll) {
- e->accept();
- q->selectAll();
- return;
- }
-#ifndef QT_NO_CLIPBOARD
- else if (e == QKeySequence::Copy) {
- e->accept();
- q->copy();
- return;
- }
-#endif
-#endif // QT_NO_SHORTCUT
-
- if (interactionFlags & Qt::TextSelectableByKeyboard
- && cursorMoveKeyEvent(e))
- goto accept;
-
- if (interactionFlags & Qt::LinksAccessibleByKeyboard) {
- if ((e->key() == Qt::Key_Return
- || e->key() == Qt::Key_Enter
-#ifdef QT_KEYPAD_NAVIGATION
- || e->key() == Qt::Key_Select
-#endif
- )
- && cursor.hasSelection()) {
-
- e->accept();
- activateLinkUnderCursor();
- return;
- }
- }
-
- if (!(interactionFlags & Qt::TextEditable)) {
- e->ignore();
- return;
- }
-
- if (e->key() == Qt::Key_Direction_L || e->key() == Qt::Key_Direction_R) {
- QTextBlockFormat fmt;
- fmt.setLayoutDirection((e->key() == Qt::Key_Direction_L) ? Qt::LeftToRight : Qt::RightToLeft);
- cursor.mergeBlockFormat(fmt);
- goto accept;
- }
-
- // schedule a repaint of the region of the cursor, as when we move it we
- // want to make sure the old cursor disappears (not noticeable when moving
- // only a few pixels but noticeable when jumping between cells in tables for
- // example)
- repaintSelection();
-
- if (e->key() == Qt::Key_Backspace && !(e->modifiers() & ~Qt::ShiftModifier)) {
- QTextBlockFormat blockFmt = cursor.blockFormat();
- QTextList *list = cursor.currentList();
- if (list && cursor.atBlockStart() && !cursor.hasSelection()) {
- list->remove(cursor.block());
- } else if (cursor.atBlockStart() && blockFmt.indent() > 0) {
- blockFmt.setIndent(blockFmt.indent() - 1);
- cursor.setBlockFormat(blockFmt);
- } else {
- QTextCursor localCursor = cursor;
- localCursor.deletePreviousChar();
- }
- goto accept;
- }
-#ifndef QT_NO_SHORTCUT
- else if (e == QKeySequence::InsertParagraphSeparator) {
- cursor.insertBlock();
- e->accept();
- goto accept;
- } else if (e == QKeySequence::InsertLineSeparator) {
- cursor.insertText(QString(QChar::LineSeparator));
- e->accept();
- goto accept;
- }
-#endif
- if (false) {
- }
-#ifndef QT_NO_SHORTCUT
- else if (e == QKeySequence::Undo) {
- q->undo();
- }
- else if (e == QKeySequence::Redo) {
- q->redo();
- }
-#ifndef QT_NO_CLIPBOARD
- else if (e == QKeySequence::Cut) {
- q->cut();
- }
- else if (e == QKeySequence::Paste) {
- QClipboard::Mode mode = QClipboard::Clipboard;
- q->paste(mode);
- }
-#endif
- else if (e == QKeySequence::Delete) {
- QTextCursor localCursor = cursor;
- localCursor.deleteChar();
- }
- else if (e == QKeySequence::DeleteEndOfWord) {
- if (!cursor.hasSelection())
- cursor.movePosition(QTextCursor::NextWord, QTextCursor::KeepAnchor);
- cursor.removeSelectedText();
- }
- else if (e == QKeySequence::DeleteStartOfWord) {
- if (!cursor.hasSelection())
- cursor.movePosition(QTextCursor::PreviousWord, QTextCursor::KeepAnchor);
- cursor.removeSelectedText();
- }
- else if (e == QKeySequence::DeleteEndOfLine) {
- QTextBlock block = cursor.block();
- if (cursor.position() == block.position() + block.length() - 2)
- cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor);
- else
- cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
- cursor.removeSelectedText();
- }
-#endif // QT_NO_SHORTCUT
- else {
- goto process;
- }
- goto accept;
-
-process:
- {
- QString text = e->text();
- if (!text.isEmpty() && (text.at(0).isPrint() || text.at(0) == QLatin1Char('\t'))) {
- if (overwriteMode
- // no need to call deleteChar() if we have a selection, insertText
- // does it already
- && !cursor.hasSelection()
- && !cursor.atBlockEnd())
- cursor.deleteChar();
-
- cursor.insertText(text);
- selectionChanged();
- } else {
- e->ignore();
- return;
- }
- }
-
- accept:
-
- e->accept();
- cursorOn = true;
-
- q->ensureCursorVisible();
-
- updateCurrentCharFormat();
-}
-
-QVariant QTextControl::loadResource(int type, const QUrl &name)
-{
-#if 1
- Q_UNUSED(type);
- Q_UNUSED(name);
-#else
- if (QTextEdit *textEdit = qobject_cast<QTextEdit *>(parent())) {
- QUrl resolvedName = textEdit->d_func()->resolveUrl(name);
- return textEdit->loadResource(type, resolvedName);
- }
-#endif
- return QVariant();
-}
-
-void QTextControlPrivate::_q_updateBlock(const QTextBlock &block)
-{
- Q_Q(QTextControl);
- QRectF br = q->blockBoundingRect(block);
- br.setRight(qreal(INT_MAX)); // the block might have shrunk
- emit q->updateRequest(br);
-}
-
-QRectF QTextControlPrivate::rectForPosition(int position) const
-{
- Q_Q(const QTextControl);
- const QTextBlock block = doc->findBlock(position);
- if (!block.isValid())
- return QRectF();
- const QAbstractTextDocumentLayout *docLayout = doc->documentLayout();
- const QTextLayout *layout = block.layout();
- const QPointF layoutPos = q->blockBoundingRect(block).topLeft();
- int relativePos = position - block.position();
- if (preeditCursor != 0) {
- int preeditPos = layout->preeditAreaPosition();
- if (relativePos == preeditPos)
- relativePos += preeditCursor;
- else if (relativePos > preeditPos)
- relativePos += layout->preeditAreaText().length();
- }
- QTextLine line = layout->lineForTextPosition(relativePos);
-
- int cursorWidth;
- {
- bool ok = false;
-#ifndef QT_NO_PROPERTIES
- cursorWidth = docLayout->property("cursorWidth").toInt(&ok);
-#endif
- if (!ok)
- cursorWidth = 1;
- }
-
- QRectF r;
-
- if (line.isValid()) {
- qreal x = line.cursorToX(relativePos);
- qreal w = 0;
- if (overwriteMode) {
- if (relativePos < line.textLength() - line.textStart())
- w = line.cursorToX(relativePos + 1) - x;
- else
- w = QFontMetrics(block.layout()->font()).width(QLatin1Char(' ')); // in sync with QTextLine::draw()
- }
- r = QRectF(layoutPos.x() + x, layoutPos.y() + line.y(),
- cursorWidth + w, line.height());
- } else {
- r = QRectF(layoutPos.x(), layoutPos.y(), cursorWidth, 10); // #### correct height
- }
-
- return r;
-}
-
-static inline bool firstFramePosLessThanCursorPos(QTextFrame *frame, int position)
-{
- return frame->firstPosition() < position;
-}
-
-static inline bool cursorPosLessThanLastFramePos(int position, QTextFrame *frame)
-{
- return position < frame->lastPosition();
-}
-
-static QRectF boundingRectOfFloatsInSelection(const QTextCursor &cursor)
-{
- QRectF r;
- QTextFrame *frame = cursor.currentFrame();
- const QList<QTextFrame *> children = frame->childFrames();
-
- const QList<QTextFrame *>::ConstIterator firstFrame = qLowerBound(children.constBegin(), children.constEnd(),
- cursor.selectionStart(), firstFramePosLessThanCursorPos);
- const QList<QTextFrame *>::ConstIterator lastFrame = qUpperBound(children.constBegin(), children.constEnd(),
- cursor.selectionEnd(), cursorPosLessThanLastFramePos);
- for (QList<QTextFrame *>::ConstIterator it = firstFrame; it != lastFrame; ++it) {
- if ((*it)->frameFormat().position() != QTextFrameFormat::InFlow)
- r |= frame->document()->documentLayout()->frameBoundingRect(*it);
- }
- return r;
-}
-
-QRectF QTextControl::selectionRect(const QTextCursor &cursor) const
-{
- Q_D(const QTextControl);
-
- QRectF r = d->rectForPosition(cursor.selectionStart());
-
- if (cursor.hasComplexSelection() && cursor.currentTable()) {
- QTextTable *table = cursor.currentTable();
-
- r = d->doc->documentLayout()->frameBoundingRect(table);
- /*
- int firstRow, numRows, firstColumn, numColumns;
- cursor.selectedTableCells(&firstRow, &numRows, &firstColumn, &numColumns);
-
- const QTextTableCell firstCell = table->cellAt(firstRow, firstColumn);
- const QTextTableCell lastCell = table->cellAt(firstRow + numRows - 1, firstColumn + numColumns - 1);
-
- const QAbstractTextDocumentLayout * const layout = doc->documentLayout();
-
- QRectF tableSelRect = layout->blockBoundingRect(firstCell.firstCursorPosition().block());
-
- for (int col = firstColumn; col < firstColumn + numColumns; ++col) {
- const QTextTableCell cell = table->cellAt(firstRow, col);
- const qreal y = layout->blockBoundingRect(cell.firstCursorPosition().block()).top();
-
- tableSelRect.setTop(qMin(tableSelRect.top(), y));
- }
-
- for (int row = firstRow; row < firstRow + numRows; ++row) {
- const QTextTableCell cell = table->cellAt(row, firstColumn);
- const qreal x = layout->blockBoundingRect(cell.firstCursorPosition().block()).left();
-
- tableSelRect.setLeft(qMin(tableSelRect.left(), x));
- }
-
- for (int col = firstColumn; col < firstColumn + numColumns; ++col) {
- const QTextTableCell cell = table->cellAt(firstRow + numRows - 1, col);
- const qreal y = layout->blockBoundingRect(cell.lastCursorPosition().block()).bottom();
-
- tableSelRect.setBottom(qMax(tableSelRect.bottom(), y));
- }
-
- for (int row = firstRow; row < firstRow + numRows; ++row) {
- const QTextTableCell cell = table->cellAt(row, firstColumn + numColumns - 1);
- const qreal x = layout->blockBoundingRect(cell.lastCursorPosition().block()).right();
-
- tableSelRect.setRight(qMax(tableSelRect.right(), x));
- }
-
- r = tableSelRect.toRect();
- */
- } else if (cursor.hasSelection()) {
- const int position = cursor.selectionStart();
- const int anchor = cursor.selectionEnd();
- const QTextBlock posBlock = d->doc->findBlock(position);
- const QTextBlock anchorBlock = d->doc->findBlock(anchor);
- if (posBlock == anchorBlock && posBlock.isValid() && posBlock.layout()->lineCount()) {
- const QTextLine posLine = posBlock.layout()->lineForTextPosition(position - posBlock.position());
- const QTextLine anchorLine = anchorBlock.layout()->lineForTextPosition(anchor - anchorBlock.position());
-
- const int firstLine = qMin(posLine.lineNumber(), anchorLine.lineNumber());
- const int lastLine = qMax(posLine.lineNumber(), anchorLine.lineNumber());
- const QTextLayout *layout = posBlock.layout();
- r = QRectF();
- for (int i = firstLine; i <= lastLine; ++i) {
- r |= layout->lineAt(i).rect();
- r |= layout->lineAt(i).naturalTextRect(); // might be bigger in the case of wrap not enabled
- }
- r.translate(blockBoundingRect(posBlock).topLeft());
- } else {
- QRectF anchorRect = d->rectForPosition(cursor.selectionEnd());
- r |= anchorRect;
- r |= boundingRectOfFloatsInSelection(cursor);
- QRectF frameRect(d->doc->documentLayout()->frameBoundingRect(cursor.currentFrame()));
- r.setLeft(frameRect.left());
- r.setRight(frameRect.right());
- }
- if (r.isValid())
- r.adjust(-1, -1, 1, 1);
- }
-
- return r;
-}
-
-QRectF QTextControl::selectionRect() const
-{
- Q_D(const QTextControl);
- return selectionRect(d->cursor);
-}
-
-void QTextControlPrivate::mousePressEvent(QEvent *e, Qt::MouseButton button, const QPointF &pos, Qt::KeyboardModifiers modifiers,
- Qt::MouseButtons buttons, const QPoint &globalPos)
-{
- Q_Q(QTextControl);
-
- if (sendMouseEventToInputContext(
- e, QEvent::MouseButtonPress, button, pos, modifiers, buttons, globalPos)) {
- return;
- }
-
- if (interactionFlags & Qt::LinksAccessibleByMouse) {
- anchorOnMousePress = q->anchorAt(pos);
-
- if (cursorIsFocusIndicator) {
- cursorIsFocusIndicator = false;
- repaintSelection();
- cursor.clearSelection();
- }
- }
- if (!(button & Qt::LeftButton) ||
- !((interactionFlags & Qt::TextSelectableByMouse) || (interactionFlags & Qt::TextEditable))) {
- e->ignore();
- return;
- }
-
- cursorIsFocusIndicator = false;
- const QTextCursor oldSelection = cursor;
- const int oldCursorPos = cursor.position();
-
- mousePressed = (interactionFlags & Qt::TextSelectableByMouse);
-#ifndef QT_NO_DRAGANDDROP
- mightStartDrag = false;
-#endif
-
- if (trippleClickTimer.isActive()
- && ((pos - trippleClickPoint).toPoint().manhattanLength() < qApp->styleHints()->startDragDistance())) {
-
- cursor.movePosition(QTextCursor::StartOfBlock);
- cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
- cursor.movePosition(QTextCursor::NextCharacter, QTextCursor::KeepAnchor);
- selectedBlockOnTrippleClick = cursor;
-
- anchorOnMousePress = QString();
-
- trippleClickTimer.stop();
- } else {
- int cursorPos = q->hitTest(pos, Qt::FuzzyHit);
- if (cursorPos == -1) {
- e->ignore();
- return;
- }
-
- if (modifiers == Qt::ShiftModifier && (interactionFlags & Qt::TextSelectableByMouse)) {
- if (wordSelectionEnabled && !selectedWordOnDoubleClick.hasSelection()) {
- selectedWordOnDoubleClick = cursor;
- selectedWordOnDoubleClick.select(QTextCursor::WordUnderCursor);
- }
-
- if (selectedBlockOnTrippleClick.hasSelection())
- extendBlockwiseSelection(cursorPos);
- else if (selectedWordOnDoubleClick.hasSelection())
- extendWordwiseSelection(cursorPos, pos.x());
- else if (!wordSelectionEnabled)
- setCursorPosition(cursorPos, QTextCursor::KeepAnchor);
- } else {
-
- if (dragEnabled
- && cursor.hasSelection()
- && !cursorIsFocusIndicator
- && cursorPos >= cursor.selectionStart()
- && cursorPos <= cursor.selectionEnd()
- && q->hitTest(pos, Qt::ExactHit) != -1) {
-#ifndef QT_NO_DRAGANDDROP
- mightStartDrag = true;
- dragStartPos = pos.toPoint();
-#endif
- return;
- }
-
- setCursorPosition(cursorPos);
- }
- }
-
- if (interactionFlags & Qt::TextEditable) {
- q->ensureCursorVisible();
- if (cursor.position() != oldCursorPos)
- emit q->cursorPositionChanged();
- _q_updateCurrentCharFormatAndSelection();
- } else {
- if (cursor.position() != oldCursorPos) {
- emit q->cursorPositionChanged();
- emit q->microFocusChanged();
- }
- selectionChanged();
- }
- repaintOldAndNewSelection(oldSelection);
- hadSelectionOnMousePress = cursor.hasSelection();
-}
-
-void QTextControlPrivate::mouseMoveEvent(QEvent *e, Qt::MouseButton button, const QPointF &mousePos, Qt::KeyboardModifiers modifiers,
- Qt::MouseButtons buttons, const QPoint &globalPos)
-{
- Q_Q(QTextControl);
-
- if (sendMouseEventToInputContext(
- e, QEvent::MouseMove, button, mousePos, modifiers, buttons, globalPos)) {
- return;
- }
-
- if (interactionFlags & Qt::LinksAccessibleByMouse) {
- QString anchor = q->anchorAt(mousePos);
- if (anchor != highlightedAnchor) {
- highlightedAnchor = anchor;
- emit q->linkHovered(anchor);
- }
- }
-
- if (!(buttons & Qt::LeftButton))
- return;
-
- const bool editable = interactionFlags & Qt::TextEditable;
-
- if (!(mousePressed
- || editable
- || mightStartDrag
- || selectedWordOnDoubleClick.hasSelection()
- || selectedBlockOnTrippleClick.hasSelection()))
- return;
-
- const QTextCursor oldSelection = cursor;
- const int oldCursorPos = cursor.position();
-
- if (mightStartDrag) {
- if ((mousePos.toPoint() - dragStartPos).manhattanLength() > qApp->styleHints()->startDragDistance())
- startDrag();
- return;
- }
-
- if (!mousePressed)
- return;
-
- const qreal mouseX = qreal(mousePos.x());
-
- int newCursorPos = q->hitTest(mousePos, Qt::FuzzyHit);
- if (newCursorPos == -1)
- return;
-
- if (wordSelectionEnabled && !selectedWordOnDoubleClick.hasSelection()) {
- selectedWordOnDoubleClick = cursor;
- selectedWordOnDoubleClick.select(QTextCursor::WordUnderCursor);
- }
-
- if (selectedBlockOnTrippleClick.hasSelection())
- extendBlockwiseSelection(newCursorPos);
- else if (selectedWordOnDoubleClick.hasSelection())
- extendWordwiseSelection(newCursorPos, mouseX);
- else
- setCursorPosition(newCursorPos, QTextCursor::KeepAnchor);
-
- if (interactionFlags & Qt::TextEditable) {
- // don't call ensureVisible for the visible cursor to avoid jumping
- // scrollbars. the autoscrolling ensures smooth scrolling if necessary.
- //q->ensureCursorVisible();
- if (cursor.position() != oldCursorPos)
- emit q->cursorPositionChanged();
- _q_updateCurrentCharFormatAndSelection();
- if (qGuiApp)
- qGuiApp->inputPanel()->update(Qt::ImQueryInput);
- } else {
- //emit q->visibilityRequest(QRectF(mousePos, QSizeF(1, 1)));
- if (cursor.position() != oldCursorPos) {
- emit q->cursorPositionChanged();
- emit q->microFocusChanged();
- }
- }
- selectionChanged(true);
- repaintOldAndNewSelection(oldSelection);
-}
-
-void QTextControlPrivate::mouseReleaseEvent(QEvent *e, Qt::MouseButton button, const QPointF &pos, Qt::KeyboardModifiers modifiers,
- Qt::MouseButtons buttons, const QPoint &globalPos)
-{
- Q_Q(QTextControl);
-
- if (sendMouseEventToInputContext(
- e, QEvent::MouseButtonRelease, button, pos, modifiers, buttons, globalPos)) {
- return;
- }
-
- const QTextCursor oldSelection = cursor;
- const int oldCursorPos = cursor.position();
-
-#ifndef QT_NO_DRAGANDDROP
- if (mightStartDrag && (button & Qt::LeftButton)) {
- mousePressed = false;
- setCursorPosition(pos);
- cursor.clearSelection();
- selectionChanged();
- }
-#endif
- if (mousePressed) {
- mousePressed = false;
-#ifndef QT_NO_CLIPBOARD
- setClipboardSelection();
- selectionChanged(true);
- } else if (button == Qt::MidButton
- && (interactionFlags & Qt::TextEditable)
- && QGuiApplication::clipboard()->supportsSelection()) {
- setCursorPosition(pos);
- const QMimeData *md = QGuiApplication::clipboard()->mimeData(QClipboard::Selection);
- if (md)
- q->insertFromMimeData(md);
-#endif
- }
-
- repaintOldAndNewSelection(oldSelection);
-
- if (cursor.position() != oldCursorPos) {
- emit q->cursorPositionChanged();
- emit q->microFocusChanged();
- }
-
- if (interactionFlags & Qt::LinksAccessibleByMouse) {
- if (!(button & Qt::LeftButton))
- return;
-
- const QString anchor = q->anchorAt(pos);
-
- if (anchor.isEmpty())
- return;
-
- if (!cursor.hasSelection()
- || (anchor == anchorOnMousePress && hadSelectionOnMousePress)) {
-
- const int anchorPos = q->hitTest(pos, Qt::ExactHit);
- if (anchorPos != -1) {
- cursor.setPosition(anchorPos);
-
- QString anchor = anchorOnMousePress;
- anchorOnMousePress = QString();
- activateLinkUnderCursor(anchor);
- }
- }
- }
-}
-
-void QTextControlPrivate::mouseDoubleClickEvent(QEvent *e, Qt::MouseButton button, const QPointF &pos, Qt::KeyboardModifiers modifiers,
- Qt::MouseButtons buttons, const QPoint &globalPos)
-{
- Q_Q(QTextControl);
-
- if (sendMouseEventToInputContext(
- e, QEvent::MouseButtonDblClick, button, pos, modifiers, buttons, globalPos)) {
- return;
- }
-
- if (button != Qt::LeftButton
- || !(interactionFlags & Qt::TextSelectableByMouse)) {
- e->ignore();
- return;
- }
-
-#ifndef QT_NO_DRAGANDDROP
- mightStartDrag = false;
-#endif
- const QTextCursor oldSelection = cursor;
- setCursorPosition(pos);
- QTextLine line = currentTextLine(cursor);
- bool doEmit = false;
- if (line.isValid() && line.textLength()) {
- cursor.select(QTextCursor::WordUnderCursor);
- doEmit = true;
- }
- repaintOldAndNewSelection(oldSelection);
-
- cursorIsFocusIndicator = false;
- selectedWordOnDoubleClick = cursor;
-
- trippleClickPoint = pos;
- trippleClickTimer.start(qApp->styleHints()->mouseDoubleClickInterval(), q);
- if (doEmit) {
- selectionChanged();
-#ifndef QT_NO_CLIPBOARD
- setClipboardSelection();
-#endif
- emit q->cursorPositionChanged();
- }
-}
-
-bool QTextControlPrivate::sendMouseEventToInputContext(
- QEvent *e, QEvent::Type eventType, Qt::MouseButton button, const QPointF &pos,
- Qt::KeyboardModifiers modifiers, Qt::MouseButtons buttons, const QPoint &globalPos)
-{
-#if 0 // ### !defined(QT_NO_IM)
- Q_Q(QTextControl);
-
- QTextLayout *layout = cursor.block().layout();
- if (contextObject && layout && !layout->preeditAreaText().isEmpty()) {
- QInputContext *ctx = inputContext();
- int cursorPos = q->hitTest(pos, Qt::FuzzyHit) - cursor.position();
-
- if (cursorPos < 0 || cursorPos > layout->preeditAreaText().length()) {
- cursorPos = -1;
- // don't send move events outside the preedit area
- if (eventType == QEvent::MouseMove)
- return true;
- }
- if (ctx) {
- QMouseEvent ev(eventType, contextObject->mapFromGlobal(globalPos), globalPos,
- button, buttons, modifiers);
- ctx->mouseHandler(cursorPos, &ev);
- e->setAccepted(ev.isAccepted());
- }
- if (!layout->preeditAreaText().isEmpty())
- return true;
- }
-#else
- Q_UNUSED(e);
- Q_UNUSED(eventType);
- Q_UNUSED(button);
- Q_UNUSED(pos);
- Q_UNUSED(modifiers);
- Q_UNUSED(buttons);
- Q_UNUSED(globalPos);
-#endif
- return false;
-}
-
-bool QTextControlPrivate::dragEnterEvent(QEvent *e, const QMimeData *mimeData)
-{
- Q_Q(QTextControl);
- if (!(interactionFlags & Qt::TextEditable) || !q->canInsertFromMimeData(mimeData)) {
- e->ignore();
- return false;
- }
-
- dndFeedbackCursor = QTextCursor();
-
- return true; // accept proposed action
-}
-
-void QTextControlPrivate::dragLeaveEvent()
-{
- Q_Q(QTextControl);
-
- const QRectF crect = q->cursorRect(dndFeedbackCursor);
- dndFeedbackCursor = QTextCursor();
-
- if (crect.isValid())
- emit q->updateRequest(crect);
-}
-
-bool QTextControlPrivate::dragMoveEvent(QEvent *e, const QMimeData *mimeData, const QPointF &pos)
-{
- Q_Q(QTextControl);
- if (!(interactionFlags & Qt::TextEditable) || !q->canInsertFromMimeData(mimeData)) {
- e->ignore();
- return false;
- }
-
- const int cursorPos = q->hitTest(pos, Qt::FuzzyHit);
- if (cursorPos != -1) {
- QRectF crect = q->cursorRect(dndFeedbackCursor);
- if (crect.isValid())
- emit q->updateRequest(crect);
-
- dndFeedbackCursor = cursor;
- dndFeedbackCursor.setPosition(cursorPos);
-
- crect = q->cursorRect(dndFeedbackCursor);
- emit q->updateRequest(crect);
- }
-
- return true; // accept proposed action
-}
-
-bool QTextControlPrivate::dropEvent(const QMimeData *mimeData, const QPointF &pos, Qt::DropAction dropAction, QObject *source)
-{
- Q_Q(QTextControl);
- dndFeedbackCursor = QTextCursor();
-
- if (!(interactionFlags & Qt::TextEditable) || !q->canInsertFromMimeData(mimeData))
- return false;
-
- repaintSelection();
-
- QTextCursor insertionCursor = q->cursorForPosition(pos);
- insertionCursor.beginEditBlock();
-
- if (dropAction == Qt::MoveAction && source == contextObject)
- cursor.removeSelectedText();
-
- cursor = insertionCursor;
- q->insertFromMimeData(mimeData);
- insertionCursor.endEditBlock();
- q->ensureCursorVisible();
- return true; // accept proposed action
-}
-
-void QTextControlPrivate::inputMethodEvent(QInputMethodEvent *e)
-{
- Q_Q(QTextControl);
- if (!(interactionFlags & Qt::TextEditable) || cursor.isNull()) {
- e->ignore();
- return;
- }
- bool isGettingInput = !e->commitString().isEmpty()
- || e->preeditString() != cursor.block().layout()->preeditAreaText()
- || e->replacementLength() > 0;
- bool forceSelectionChanged = false;
-
- cursor.beginEditBlock();
- if (isGettingInput) {
- cursor.removeSelectedText();
- }
-
- // insert commit string
- if (!e->commitString().isEmpty() || e->replacementLength()) {
- QTextCursor c = cursor;
- c.setPosition(c.position() + e->replacementStart());
- c.setPosition(c.position() + e->replacementLength(), QTextCursor::KeepAnchor);
- c.insertText(e->commitString());
- }
-
- for (int i = 0; i < e->attributes().size(); ++i) {
- const QInputMethodEvent::Attribute &a = e->attributes().at(i);
- if (a.type == QInputMethodEvent::Selection) {
- QTextCursor oldCursor = cursor;
- int blockStart = a.start + cursor.block().position();
- cursor.setPosition(blockStart, QTextCursor::MoveAnchor);
- cursor.setPosition(blockStart + a.length, QTextCursor::KeepAnchor);
- q->ensureCursorVisible();
- repaintOldAndNewSelection(oldCursor);
- forceSelectionChanged = true;
- }
- }
-
- QTextBlock block = cursor.block();
- QTextLayout *layout = block.layout();
- if (isGettingInput)
- layout->setPreeditArea(cursor.position() - block.position(), e->preeditString());
- QList<QTextLayout::FormatRange> overrides;
- const int oldPreeditCursor = preeditCursor;
- preeditCursor = e->preeditString().length();
- hideCursor = false;
- for (int i = 0; i < e->attributes().size(); ++i) {
- const QInputMethodEvent::Attribute &a = e->attributes().at(i);
- if (a.type == QInputMethodEvent::Cursor) {
- preeditCursor = a.start;
- hideCursor = !a.length;
- } else if (a.type == QInputMethodEvent::TextFormat) {
- QTextCharFormat f = qvariant_cast<QTextFormat>(a.value).toCharFormat();
- if (f.isValid()) {
- QTextLayout::FormatRange o;
- o.start = a.start + cursor.position() - block.position();
- o.length = a.length;
- o.format = f;
- overrides.append(o);
- }
- }
- }
- layout->setAdditionalFormats(overrides);
- cursor.endEditBlock();
- QTextCursorPrivate *cursor_d = QTextCursorPrivate::getPrivate(&cursor);
- if (cursor_d)
- cursor_d->setX();
- if (oldPreeditCursor != preeditCursor)
- emit q->microFocusChanged();
- selectionChanged(forceSelectionChanged);
-}
-
-QVariant QTextControl::inputMethodQuery(Qt::InputMethodQuery property) const
-{
- Q_D(const QTextControl);
- QTextBlock block = d->cursor.block();
- switch(property) {
- case Qt::ImCursorRectangle:
- return cursorRect();
- case Qt::ImFont:
- return QVariant(d->cursor.charFormat().font());
- case Qt::ImCursorPosition:
- return QVariant(d->cursor.position() - block.position());
- case Qt::ImSurroundingText:
- return QVariant(block.text());
- case Qt::ImCurrentSelection:
- return QVariant(d->cursor.selectedText());
- case Qt::ImMaximumTextLength:
- return QVariant(); // No limit.
- case Qt::ImAnchorPosition:
- return QVariant(d->cursor.anchor() - block.position());
- default:
- return QVariant();
- }
-}
-
-void QTextControl::setFocus(bool focus, Qt::FocusReason reason)
-{
- QFocusEvent ev(focus ? QEvent::FocusIn : QEvent::FocusOut,
- reason);
- processEvent(&ev);
-}
-
-void QTextControlPrivate::focusEvent(QFocusEvent *e)
-{
- Q_Q(QTextControl);
- emit q->updateRequest(q->selectionRect());
- if (e->gotFocus()) {
-#ifdef QT_KEYPAD_NAVIGATION
- if (!QGuiApplication::keypadNavigationEnabled() || (hasEditFocus && (e->reason() == Qt::PopupFocusReason
- ))) {
-#endif
- setBlinkingCursorEnabled(interactionFlags & (Qt::TextEditable | Qt::TextSelectableByKeyboard));
-#ifdef QT_KEYPAD_NAVIGATION
- }
-#endif
- } else {
- setBlinkingCursorEnabled(false);
-
- if (cursorIsFocusIndicator
- && e->reason() != Qt::ActiveWindowFocusReason
- && e->reason() != Qt::PopupFocusReason
- && cursor.hasSelection()) {
- cursor.clearSelection();
- }
- }
- hasFocus = e->gotFocus();
-}
-
-QString QTextControlPrivate::anchorForCursor(const QTextCursor &anchorCursor) const
-{
- if (anchorCursor.hasSelection()) {
- QTextCursor cursor = anchorCursor;
- if (cursor.selectionStart() != cursor.position())
- cursor.setPosition(cursor.selectionStart());
- cursor.movePosition(QTextCursor::NextCharacter);
- QTextCharFormat fmt = cursor.charFormat();
- if (fmt.isAnchor() && fmt.hasProperty(QTextFormat::AnchorHref))
- return fmt.stringProperty(QTextFormat::AnchorHref);
- }
- return QString();
-}
-
-#ifdef QT_KEYPAD_NAVIGATION
-void QTextControlPrivate::editFocusEvent(QEvent *e)
-{
- Q_Q(QTextControl);
-
- if (QGuiApplication::keypadNavigationEnabled()) {
- if (e->type() == QEvent::EnterEditFocus && interactionFlags & Qt::TextEditable) {
- const QTextCursor oldSelection = cursor;
- const int oldCursorPos = cursor.position();
- const bool moved = cursor.movePosition(QTextCursor::End, QTextCursor::MoveAnchor);
- q->ensureCursorVisible();
- if (moved) {
- if (cursor.position() != oldCursorPos)
- emit q->cursorPositionChanged();
- emit q->microFocusChanged();
- }
- selectionChanged();
- repaintOldAndNewSelection(oldSelection);
-
- setBlinkingCursorEnabled(true);
- } else
- setBlinkingCursorEnabled(false);
- }
-
- hasEditFocus = e->type() == QEvent::EnterEditFocus ? true : false;
-}
-#endif
-
-QTextCursor QTextControl::cursorForPosition(const QPointF &pos) const
-{
- Q_D(const QTextControl);
- int cursorPos = hitTest(pos, Qt::FuzzyHit);
- if (cursorPos == -1)
- cursorPos = 0;
- QTextCursor c(d->doc);
- c.setPosition(cursorPos);
- return c;
-}
-
-QRectF QTextControl::cursorRect(const QTextCursor &cursor) const
-{
- Q_D(const QTextControl);
- if (cursor.isNull())
- return QRectF();
-
- return d->rectForPosition(cursor.position());
-}
-
-QRectF QTextControl::cursorRect() const
-{
- Q_D(const QTextControl);
- return cursorRect(d->cursor);
-}
-
-QRectF QTextControlPrivate::cursorRectPlusUnicodeDirectionMarkers(const QTextCursor &cursor) const
-{
- if (cursor.isNull())
- return QRectF();
-
- return rectForPosition(cursor.position()).adjusted(-4, 0, 4, 0);
-}
-
-QString QTextControl::anchorAt(const QPointF &pos) const
-{
- Q_D(const QTextControl);
- return d->doc->documentLayout()->anchorAt(pos);
-}
-
-QString QTextControl::anchorAtCursor() const
-{
- Q_D(const QTextControl);
-
- return d->anchorForCursor(d->cursor);
-}
-
-bool QTextControl::overwriteMode() const
-{
- Q_D(const QTextControl);
- return d->overwriteMode;
-}
-
-void QTextControl::setOverwriteMode(bool overwrite)
-{
- Q_D(QTextControl);
- d->overwriteMode = overwrite;
-}
-
-int QTextControl::cursorWidth() const
-{
-#ifndef QT_NO_PROPERTIES
- Q_D(const QTextControl);
- return d->doc->documentLayout()->property("cursorWidth").toInt();
-#else
- return 1;
-#endif
-}
-
-void QTextControl::setCursorWidth(int width)
-{
- Q_D(QTextControl);
-#ifdef QT_NO_PROPERTIES
- Q_UNUSED(width);
-#else
- if (width == -1)
- width = textCursorWidth;
- d->doc->documentLayout()->setProperty("cursorWidth", width);
-#endif
- d->repaintCursor();
-}
-
-bool QTextControl::acceptRichText() const
-{
- Q_D(const QTextControl);
- return d->acceptRichText;
-}
-
-void QTextControl::setAcceptRichText(bool accept)
-{
- Q_D(QTextControl);
- d->acceptRichText = accept;
-}
-
-void QTextControl::setExtraSelections(const QVector<QAbstractTextDocumentLayout::Selection> &selections)
-{
- Q_D(QTextControl);
-
- QHash<int, int> hash;
- for (int i = 0; i < d->extraSelections.count(); ++i) {
- const QAbstractTextDocumentLayout::Selection &esel = d->extraSelections.at(i);
- hash.insertMulti(esel.cursor.anchor(), i);
- }
-
- for (int i = 0; i < selections.count(); ++i) {
- const QAbstractTextDocumentLayout::Selection &sel = selections.at(i);
- QHash<int, int>::iterator it = hash.find(sel.cursor.anchor());
- if (it != hash.end()) {
- const QAbstractTextDocumentLayout::Selection &esel = d->extraSelections.at(it.value());
- if (esel.cursor.position() == sel.cursor.position()
- && esel.format == sel.format) {
- hash.erase(it);
- continue;
- }
- }
- QRectF r = selectionRect(sel.cursor);
- if (sel.format.boolProperty(QTextFormat::FullWidthSelection)) {
- r.setLeft(0);
- r.setWidth(qreal(INT_MAX));
- }
- emit updateRequest(r);
- }
-
- for (QHash<int, int>::iterator it = hash.begin(); it != hash.end(); ++it) {
- const QAbstractTextDocumentLayout::Selection &esel = d->extraSelections.at(it.value());
- QRectF r = selectionRect(esel.cursor);
- if (esel.format.boolProperty(QTextFormat::FullWidthSelection)) {
- r.setLeft(0);
- r.setWidth(qreal(INT_MAX));
- }
- emit updateRequest(r);
- }
-
- d->extraSelections = selections;
-}
-
-QVector<QAbstractTextDocumentLayout::Selection> QTextControl::extraSelections() const
-{
- Q_D(const QTextControl);
- return d->extraSelections;
-}
-
-void QTextControl::setTextWidth(qreal width)
-{
- Q_D(QTextControl);
- d->doc->setTextWidth(width);
-}
-
-qreal QTextControl::textWidth() const
-{
- Q_D(const QTextControl);
- return d->doc->textWidth();
-}
-
-QSizeF QTextControl::size() const
-{
- Q_D(const QTextControl);
- return d->doc->size();
-}
-
-void QTextControl::setOpenExternalLinks(bool open)
-{
- Q_D(QTextControl);
- d->openExternalLinks = open;
-}
-
-bool QTextControl::openExternalLinks() const
-{
- Q_D(const QTextControl);
- return d->openExternalLinks;
-}
-
-bool QTextControl::ignoreUnusedNavigationEvents() const
-{
- Q_D(const QTextControl);
- return d->ignoreUnusedNavigationEvents;
-}
-
-void QTextControl::setIgnoreUnusedNavigationEvents(bool ignore)
-{
- Q_D(QTextControl);
- d->ignoreUnusedNavigationEvents = ignore;
-}
-
-void QTextControl::moveCursor(QTextCursor::MoveOperation op, QTextCursor::MoveMode mode)
-{
- Q_D(QTextControl);
- const QTextCursor oldSelection = d->cursor;
- const bool moved = d->cursor.movePosition(op, mode);
- d->_q_updateCurrentCharFormatAndSelection();
- ensureCursorVisible();
- d->repaintOldAndNewSelection(oldSelection);
- if (moved)
- emit cursorPositionChanged();
-}
-
-bool QTextControl::canPaste() const
-{
-#ifndef QT_NO_CLIPBOARD
- Q_D(const QTextControl);
- if (d->interactionFlags & Qt::TextEditable) {
- const QMimeData *md = QGuiApplication::clipboard()->mimeData();
- return md && canInsertFromMimeData(md);
- }
-#endif
- return false;
-}
-
-void QTextControl::setCursorIsFocusIndicator(bool b)
-{
- Q_D(QTextControl);
- d->cursorIsFocusIndicator = b;
- d->repaintCursor();
-}
-
-bool QTextControl::cursorIsFocusIndicator() const
-{
- Q_D(const QTextControl);
- return d->cursorIsFocusIndicator;
-}
-
-
-void QTextControl::setDragEnabled(bool enabled)
-{
- Q_D(QTextControl);
- d->dragEnabled = enabled;
-}
-
-bool QTextControl::isDragEnabled() const
-{
- Q_D(const QTextControl);
- return d->dragEnabled;
-}
-
-void QTextControl::setWordSelectionEnabled(bool enabled)
-{
- Q_D(QTextControl);
- d->wordSelectionEnabled = enabled;
-}
-
-bool QTextControl::isWordSelectionEnabled() const
-{
- Q_D(const QTextControl);
- return d->wordSelectionEnabled;
-}
-
-void QTextControl::print(QPagedPaintDevice *printer) const
-{
- Q_D(const QTextControl);
- if (!printer)
- return;
- QTextDocument *tempDoc = 0;
- const QTextDocument *doc = d->doc;
- if (QPagedPaintDevicePrivate::get(printer)->printSelectionOnly) {
- if (!d->cursor.hasSelection())
- return;
- tempDoc = new QTextDocument(const_cast<QTextDocument *>(doc));
- tempDoc->setMetaInformation(QTextDocument::DocumentTitle, doc->metaInformation(QTextDocument::DocumentTitle));
- tempDoc->setPageSize(doc->pageSize());
- tempDoc->setDefaultFont(doc->defaultFont());
- tempDoc->setUseDesignMetrics(doc->useDesignMetrics());
- QTextCursor(tempDoc).insertFragment(d->cursor.selection());
- doc = tempDoc;
-
- // copy the custom object handlers
- doc->documentLayout()->d_func()->handlers = d->doc->documentLayout()->d_func()->handlers;
- }
- doc->print(printer);
- delete tempDoc;
-}
-
-QMimeData *QTextControl::createMimeDataFromSelection() const
-{
- Q_D(const QTextControl);
- const QTextDocumentFragment fragment(d->cursor);
- return new QTextEditMimeData(fragment);
-}
-
-bool QTextControl::canInsertFromMimeData(const QMimeData *source) const
-{
- Q_D(const QTextControl);
- if (d->acceptRichText)
- return (source->hasText() && !source->text().isEmpty())
- || source->hasHtml()
- || source->hasFormat(QLatin1String("application/x-qrichtext"))
- || source->hasFormat(QLatin1String("application/x-qt-richtext"));
- else
- return source->hasText() && !source->text().isEmpty();
-}
-
-void QTextControl::insertFromMimeData(const QMimeData *source)
-{
- Q_D(QTextControl);
- if (!(d->interactionFlags & Qt::TextEditable) || !source)
- return;
-
- bool hasData = false;
- QTextDocumentFragment fragment;
-#ifndef QT_NO_TEXTHTMLPARSER
- if (source->hasFormat(QLatin1String("application/x-qrichtext")) && d->acceptRichText) {
- // x-qrichtext is always UTF-8 (taken from Qt3 since we don't use it anymore).
- QString richtext = QString::fromUtf8(source->data(QLatin1String("application/x-qrichtext")));
- richtext.prepend(QLatin1String("<meta name=\"qrichtext\" content=\"1\" />"));
- fragment = QTextDocumentFragment::fromHtml(richtext, d->doc);
- hasData = true;
- } else if (source->hasHtml() && d->acceptRichText) {
- fragment = QTextDocumentFragment::fromHtml(source->html(), d->doc);
- hasData = true;
- } else {
- QString text = source->text();
- if (!text.isNull()) {
- fragment = QTextDocumentFragment::fromPlainText(text);
- hasData = true;
- }
- }
-#else
- fragment = QTextDocumentFragment::fromPlainText(source->text());
-#endif // QT_NO_TEXTHTMLPARSER
-
- if (hasData)
- d->cursor.insertFragment(fragment);
- ensureCursorVisible();
-}
-
-bool QTextControl::findNextPrevAnchor(const QTextCursor &startCursor, bool next, QTextCursor &newAnchor)
-{
- Q_D(QTextControl);
-
- int anchorStart = -1;
- QString anchorHref;
- int anchorEnd = -1;
-
- if (next) {
- const int startPos = startCursor.selectionEnd();
-
- QTextBlock block = d->doc->findBlock(startPos);
- QTextBlock::Iterator it = block.begin();
-
- while (!it.atEnd() && it.fragment().position() < startPos)
- ++it;
-
- while (block.isValid()) {
- anchorStart = -1;
-
- // find next anchor
- for (; !it.atEnd(); ++it) {
- const QTextFragment fragment = it.fragment();
- const QTextCharFormat fmt = fragment.charFormat();
-
- if (fmt.isAnchor() && fmt.hasProperty(QTextFormat::AnchorHref)) {
- anchorStart = fragment.position();
- anchorHref = fmt.anchorHref();
- break;
- }
- }
-
- if (anchorStart != -1) {
- anchorEnd = -1;
-
- // find next non-anchor fragment
- for (; !it.atEnd(); ++it) {
- const QTextFragment fragment = it.fragment();
- const QTextCharFormat fmt = fragment.charFormat();
-
- if (!fmt.isAnchor() || fmt.anchorHref() != anchorHref) {
- anchorEnd = fragment.position();
- break;
- }
- }
-
- if (anchorEnd == -1)
- anchorEnd = block.position() + block.length() - 1;
-
- // make found selection
- break;
- }
-
- block = block.next();
- it = block.begin();
- }
- } else {
- int startPos = startCursor.selectionStart();
- if (startPos > 0)
- --startPos;
-
- QTextBlock block = d->doc->findBlock(startPos);
- QTextBlock::Iterator blockStart = block.begin();
- QTextBlock::Iterator it = block.end();
-
- if (startPos == block.position()) {
- it = block.begin();
- } else {
- do {
- if (it == blockStart) {
- it = QTextBlock::Iterator();
- block = QTextBlock();
- } else {
- --it;
- }
- } while (!it.atEnd() && it.fragment().position() + it.fragment().length() - 1 > startPos);
- }
-
- while (block.isValid()) {
- anchorStart = -1;
-
- if (!it.atEnd()) {
- do {
- const QTextFragment fragment = it.fragment();
- const QTextCharFormat fmt = fragment.charFormat();
-
- if (fmt.isAnchor() && fmt.hasProperty(QTextFormat::AnchorHref)) {
- anchorStart = fragment.position() + fragment.length();
- anchorHref = fmt.anchorHref();
- break;
- }
-
- if (it == blockStart)
- it = QTextBlock::Iterator();
- else
- --it;
- } while (!it.atEnd());
- }
-
- if (anchorStart != -1 && !it.atEnd()) {
- anchorEnd = -1;
-
- do {
- const QTextFragment fragment = it.fragment();
- const QTextCharFormat fmt = fragment.charFormat();
-
- if (!fmt.isAnchor() || fmt.anchorHref() != anchorHref) {
- anchorEnd = fragment.position() + fragment.length();
- break;
- }
-
- if (it == blockStart)
- it = QTextBlock::Iterator();
- else
- --it;
- } while (!it.atEnd());
-
- if (anchorEnd == -1)
- anchorEnd = qMax(0, block.position());
-
- break;
- }
-
- block = block.previous();
- it = block.end();
- if (it != block.begin())
- --it;
- blockStart = block.begin();
- }
-
- }
-
- if (anchorStart != -1 && anchorEnd != -1) {
- newAnchor = d->cursor;
- newAnchor.setPosition(anchorStart);
- newAnchor.setPosition(anchorEnd, QTextCursor::KeepAnchor);
- return true;
- }
-
- return false;
-}
-
-void QTextControlPrivate::activateLinkUnderCursor(QString href)
-{
- QTextCursor oldCursor = cursor;
-
- if (href.isEmpty()) {
- QTextCursor tmp = cursor;
- if (tmp.selectionStart() != tmp.position())
- tmp.setPosition(tmp.selectionStart());
- tmp.movePosition(QTextCursor::NextCharacter);
- href = tmp.charFormat().anchorHref();
- }
- if (href.isEmpty())
- return;
-
- if (!cursor.hasSelection()) {
- QTextBlock block = cursor.block();
- const int cursorPos = cursor.position();
-
- QTextBlock::Iterator it = block.begin();
- QTextBlock::Iterator linkFragment;
-
- for (; !it.atEnd(); ++it) {
- QTextFragment fragment = it.fragment();
- const int fragmentPos = fragment.position();
- if (fragmentPos <= cursorPos &&
- fragmentPos + fragment.length() > cursorPos) {
- linkFragment = it;
- break;
- }
- }
-
- if (!linkFragment.atEnd()) {
- it = linkFragment;
- cursor.setPosition(it.fragment().position());
- if (it != block.begin()) {
- do {
- --it;
- QTextFragment fragment = it.fragment();
- if (fragment.charFormat().anchorHref() != href)
- break;
- cursor.setPosition(fragment.position());
- } while (it != block.begin());
- }
-
- for (it = linkFragment; !it.atEnd(); ++it) {
- QTextFragment fragment = it.fragment();
- if (fragment.charFormat().anchorHref() != href)
- break;
- cursor.setPosition(fragment.position() + fragment.length(), QTextCursor::KeepAnchor);
- }
- }
- }
-
- if (hasFocus) {
- cursorIsFocusIndicator = true;
- } else {
- cursorIsFocusIndicator = false;
- cursor.clearSelection();
- }
- repaintOldAndNewSelection(oldCursor);
-
-#if 0 // ###ndef QT_NO_DESKTOPSERVICES
- if (openExternalLinks)
- QDesktopServices::openUrl(href);
- else
-#endif
- emit q_func()->linkActivated(href);
-}
-
-bool QTextControl::setFocusToNextOrPreviousAnchor(bool next)
-{
- Q_D(QTextControl);
-
- if (!(d->interactionFlags & Qt::LinksAccessibleByKeyboard))
- return false;
-
- QRectF crect = selectionRect();
- emit updateRequest(crect);
-
- // If we don't have a current anchor, we start from the start/end
- if (!d->cursor.hasSelection()) {
- d->cursor = QTextCursor(d->doc);
- if (next)
- d->cursor.movePosition(QTextCursor::Start);
- else
- d->cursor.movePosition(QTextCursor::End);
- }
-
- QTextCursor newAnchor;
- if (findNextPrevAnchor(d->cursor, next, newAnchor)) {
- d->cursor = newAnchor;
- d->cursorIsFocusIndicator = true;
- } else {
- d->cursor.clearSelection();
- }
-
- if (d->cursor.hasSelection()) {
- crect = selectionRect();
- emit updateRequest(crect);
- emit visibilityRequest(crect);
- return true;
- } else {
- return false;
- }
-}
-
-bool QTextControl::setFocusToAnchor(const QTextCursor &newCursor)
-{
- Q_D(QTextControl);
-
- if (!(d->interactionFlags & Qt::LinksAccessibleByKeyboard))
- return false;
-
- // Verify that this is an anchor.
- const QString anchorHref = d->anchorForCursor(newCursor);
- if (anchorHref.isEmpty())
- return false;
-
- // and process it
- QRectF crect = selectionRect();
- emit updateRequest(crect);
-
- d->cursor.setPosition(newCursor.selectionStart());
- d->cursor.setPosition(newCursor.selectionEnd(), QTextCursor::KeepAnchor);
- d->cursorIsFocusIndicator = true;
-
- crect = selectionRect();
- emit updateRequest(crect);
- emit visibilityRequest(crect);
- return true;
-}
-
-void QTextControl::setTextInteractionFlags(Qt::TextInteractionFlags flags)
-{
- Q_D(QTextControl);
- if (flags == d->interactionFlags)
- return;
- d->interactionFlags = flags;
-
- if (d->hasFocus)
- d->setBlinkingCursorEnabled(flags & (Qt::TextEditable | Qt::TextSelectableByKeyboard));
-}
-
-Qt::TextInteractionFlags QTextControl::textInteractionFlags() const
-{
- Q_D(const QTextControl);
- return d->interactionFlags;
-}
-
-void QTextControl::mergeCurrentCharFormat(const QTextCharFormat &modifier)
-{
- Q_D(QTextControl);
- d->cursor.mergeCharFormat(modifier);
- d->updateCurrentCharFormat();
-}
-
-void QTextControl::setCurrentCharFormat(const QTextCharFormat &format)
-{
- Q_D(QTextControl);
- d->cursor.setCharFormat(format);
- d->updateCurrentCharFormat();
-}
-
-QTextCharFormat QTextControl::currentCharFormat() const
-{
- Q_D(const QTextControl);
- return d->cursor.charFormat();
-}
-
-void QTextControl::insertPlainText(const QString &text)
-{
- Q_D(QTextControl);
- d->cursor.insertText(text);
-}
-
-#ifndef QT_NO_TEXTHTMLPARSER
-void QTextControl::insertHtml(const QString &text)
-{
- Q_D(QTextControl);
- d->cursor.insertHtml(text);
-}
-#endif // QT_NO_TEXTHTMLPARSER
-
-QPointF QTextControl::anchorPosition(const QString &name) const
-{
- Q_D(const QTextControl);
- if (name.isEmpty())
- return QPointF();
-
- QRectF r;
- for (QTextBlock block = d->doc->begin(); block.isValid(); block = block.next()) {
- QTextCharFormat format = block.charFormat();
- if (format.isAnchor() && format.anchorNames().contains(name)) {
- r = d->rectForPosition(block.position());
- break;
- }
-
- for (QTextBlock::Iterator it = block.begin(); !it.atEnd(); ++it) {
- QTextFragment fragment = it.fragment();
- format = fragment.charFormat();
- if (format.isAnchor() && format.anchorNames().contains(name)) {
- r = d->rectForPosition(fragment.position());
- block = QTextBlock();
- break;
- }
- }
- }
- if (!r.isValid())
- return QPointF();
- return QPointF(0, r.top());
-}
-
-void QTextControl::adjustSize()
-{
- Q_D(QTextControl);
- d->doc->adjustSize();
-}
-
-bool QTextControl::find(const QString &exp, QTextDocument::FindFlags options)
-{
- Q_D(QTextControl);
- QTextCursor search = d->doc->find(exp, d->cursor, options);
- if (search.isNull())
- return false;
-
- setTextCursor(search);
- return true;
-}
-
-
-
-void QTextControlPrivate::append(const QString &text, Qt::TextFormat format)
-{
- QTextCursor tmp(doc);
- tmp.beginEditBlock();
- tmp.movePosition(QTextCursor::End);
-
- if (!doc->isEmpty())
- tmp.insertBlock(cursor.blockFormat(), cursor.charFormat());
- else
- tmp.setCharFormat(cursor.charFormat());
-
- // preserve the char format
- QTextCharFormat oldCharFormat = cursor.charFormat();
-
-#ifndef QT_NO_TEXTHTMLPARSER
- if (format == Qt::RichText || (format == Qt::AutoText && Qt::mightBeRichText(text))) {
- tmp.insertHtml(text);
- } else {
- tmp.insertText(text);
- }
-#else
- tmp.insertText(text);
-#endif // QT_NO_TEXTHTMLPARSER
- if (!cursor.hasSelection())
- cursor.setCharFormat(oldCharFormat);
-
- tmp.endEditBlock();
-}
-
-void QTextControl::append(const QString &text)
-{
- Q_D(QTextControl);
- d->append(text, Qt::AutoText);
-}
-
-void QTextControl::appendHtml(const QString &html)
-{
- Q_D(QTextControl);
- d->append(html, Qt::RichText);
-}
-
-void QTextControl::appendPlainText(const QString &text)
-{
- Q_D(QTextControl);
- d->append(text, Qt::PlainText);
-}
-
-
-void QTextControl::ensureCursorVisible()
-{
- Q_D(QTextControl);
- QRectF crect = d->rectForPosition(d->cursor.position()).adjusted(-5, 0, 5, 0);
- emit visibilityRequest(crect);
- emit microFocusChanged();
-}
-
-QPalette QTextControl::palette() const
-{
- Q_D(const QTextControl);
- return d->palette;
-}
-
-void QTextControl::setPalette(const QPalette &pal)
-{
- Q_D(QTextControl);
- d->palette = pal;
-}
-
-bool QTextControl::cursorOn() const
-{
- Q_D(const QTextControl);
- return d->cursorOn;
-}
-
-QAbstractTextDocumentLayout::PaintContext QTextControl::getPaintContext() const
-{
- Q_D(const QTextControl);
-
- QAbstractTextDocumentLayout::PaintContext ctx;
-
- ctx.selections = d->extraSelections;
- ctx.palette = d->palette;
- if (d->cursorOn && d->isEnabled) {
- if (d->hideCursor)
- ctx.cursorPosition = -1;
- else if (d->preeditCursor != 0)
- ctx.cursorPosition = - (d->preeditCursor + 2);
- else
- ctx.cursorPosition = d->cursor.position();
- }
-
- if (!d->dndFeedbackCursor.isNull())
- ctx.cursorPosition = d->dndFeedbackCursor.position();
-#ifdef QT_KEYPAD_NAVIGATION
- if (!QGuiApplication::keypadNavigationEnabled() || d->hasEditFocus)
-#endif
- if (d->cursor.hasSelection()) {
- QAbstractTextDocumentLayout::Selection selection;
- selection.cursor = d->cursor;
- if (0 && d->cursorIsFocusIndicator) {
-#if 0
- // ###
- QStyleOption opt;
- opt.palette = ctx.palette;
- QStyleHintReturnVariant ret;
- QStyle *style = QGuiApplication::style();
- if (widget)
- style = widget->style();
- style->styleHint(QStyle::SH_TextControl_FocusIndicatorTextCharFormat, &opt, widget, &ret);
- selection.format = qvariant_cast<QTextFormat>(ret.variant).toCharFormat();
-#endif
- } else {
- QPalette::ColorGroup cg = d->hasFocus ? QPalette::Active : QPalette::Inactive;
- selection.format.setBackground(ctx.palette.brush(cg, QPalette::Highlight));
- selection.format.setForeground(ctx.palette.brush(cg, QPalette::HighlightedText));
- if (fullWidthSelection)
- selection.format.setProperty(QTextFormat::FullWidthSelection, true);
- }
- ctx.selections.append(selection);
- }
-
- return ctx;
-}
-
-void QTextControl::drawContents(QPainter *p, const QRectF &rect)
-{
- Q_D(QTextControl);
- p->save();
- QAbstractTextDocumentLayout::PaintContext ctx = getPaintContext();
- if (rect.isValid())
- p->setClipRect(rect, Qt::IntersectClip);
- ctx.clip = rect;
-
- d->doc->documentLayout()->draw(p, ctx);
- p->restore();
-}
-
-void QTextControlPrivate::_q_copyLink()
-{
-#ifndef QT_NO_CLIPBOARD
- QMimeData *md = new QMimeData;
- md->setText(linkToCopy);
- QGuiApplication::clipboard()->setMimeData(md);
-#endif
-}
-
-QInputContext *QTextControlPrivate::inputContext()
-{
-#if 0
- // ###
- QInputContext *ctx = contextObject->inputContext();
- if (!ctx && contextObject->parentWidget())
- ctx = contextObject->parentWidget()->inputContext();
- return ctx;
-#else
- return 0;
-#endif
-}
-
-int QTextControl::hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const
-{
- Q_D(const QTextControl);
- return d->doc->documentLayout()->hitTest(point, accuracy);
-}
-
-QRectF QTextControl::blockBoundingRect(const QTextBlock &block) const
-{
- Q_D(const QTextControl);
- return d->doc->documentLayout()->blockBoundingRect(block);
-}
-
-
-
-QStringList QTextEditMimeData::formats() const
-{
- if (!fragment.isEmpty())
- return QStringList() << QString::fromLatin1("text/plain") << QString::fromLatin1("text/html")
-#ifndef QT_NO_TEXTODFWRITER
- << QString::fromLatin1("application/vnd.oasis.opendocument.text")
-#endif
- ;
- else
- return QMimeData::formats();
-}
-
-QVariant QTextEditMimeData::retrieveData(const QString &mimeType, QVariant::Type type) const
-{
- if (!fragment.isEmpty())
- setup();
- return QMimeData::retrieveData(mimeType, type);
-}
-
-void QTextEditMimeData::setup() const
-{
- QTextEditMimeData *that = const_cast<QTextEditMimeData *>(this);
-#ifndef QT_NO_TEXTHTMLPARSER
- that->setData(QLatin1String("text/html"), fragment.toHtml("utf-8").toUtf8());
-#endif
-#ifndef QT_NO_TEXTODFWRITER
- {
- QBuffer buffer;
- QTextDocumentWriter writer(&buffer, "ODF");
- writer.write(fragment);
- buffer.close();
- that->setData(QLatin1String("application/vnd.oasis.opendocument.text"), buffer.data());
- }
-#endif
- that->setText(fragment.toPlainText());
- fragment = QTextDocumentFragment();
-}
-
-
-QT_END_NAMESPACE
-
-#include "moc_qtextcontrol_p.cpp"
-
-#endif // QT_NO_TEXTCONTROL
diff --git a/src/gui/text/qtextcontrol_p.h b/src/gui/text/qtextcontrol_p.h
deleted file mode 100644
index e00ffd4042..0000000000
--- a/src/gui/text/qtextcontrol_p.h
+++ /dev/null
@@ -1,288 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-#ifndef QTEXTCONTROL_P_H
-#define QTEXTCONTROL_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <QtGui/qtextdocument.h>
-#include <QtGui/qtextoption.h>
-#include <QtGui/qtextcursor.h>
-#include <QtGui/qtextformat.h>
-#include <QtCore/qrect.h>
-#include <QtGui/qabstracttextdocumentlayout.h>
-#include <QtGui/qtextdocumentfragment.h>
-#include <QtGui/qclipboard.h>
-#include <QtCore/qmimedata.h>
-
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Gui)
-
-class QStyleSheet;
-class QTextDocument;
-class QTextControlPrivate;
-class QAbstractScrollArea;
-class QEvent;
-class QTimerEvent;
-class QPagedPaintDevice;
-
-class Q_GUI_EXPORT QTextControl : public QObject
-{
- Q_OBJECT
- Q_DECLARE_PRIVATE(QTextControl)
-#ifndef QT_NO_TEXTHTMLPARSER
- Q_PROPERTY(QString html READ toHtml WRITE setHtml NOTIFY textChanged USER true)
-#endif
- Q_PROPERTY(bool overwriteMode READ overwriteMode WRITE setOverwriteMode)
- Q_PROPERTY(bool acceptRichText READ acceptRichText WRITE setAcceptRichText)
- Q_PROPERTY(int cursorWidth READ cursorWidth WRITE setCursorWidth)
- Q_PROPERTY(Qt::TextInteractionFlags textInteractionFlags READ textInteractionFlags WRITE setTextInteractionFlags)
- Q_PROPERTY(bool openExternalLinks READ openExternalLinks WRITE setOpenExternalLinks)
- Q_PROPERTY(bool ignoreUnusedNavigationEvents READ ignoreUnusedNavigationEvents WRITE setIgnoreUnusedNavigationEvents)
-public:
- explicit QTextControl(QObject *parent = 0);
- explicit QTextControl(const QString &text, QObject *parent = 0);
- explicit QTextControl(QTextDocument *doc, QObject *parent = 0);
- virtual ~QTextControl();
-
- void setView(QObject *view);
- QObject *view() const;
-
- void setDocument(QTextDocument *document);
- QTextDocument *document() const;
-
- void setTextCursor(const QTextCursor &cursor);
- QTextCursor textCursor() const;
-
- void setTextInteractionFlags(Qt::TextInteractionFlags flags);
- Qt::TextInteractionFlags textInteractionFlags() const;
-
- void mergeCurrentCharFormat(const QTextCharFormat &modifier);
-
- void setCurrentCharFormat(const QTextCharFormat &format);
- QTextCharFormat currentCharFormat() const;
-
- bool find(const QString &exp, QTextDocument::FindFlags options = 0);
-
- inline QString toPlainText() const
- { return document()->toPlainText(); }
-#ifndef QT_NO_TEXTHTMLPARSER
- inline QString toHtml() const
- { return document()->toHtml(); }
-#endif
-
- virtual void ensureCursorVisible();
-
- virtual QVariant loadResource(int type, const QUrl &name);
-
- QTextCursor cursorForPosition(const QPointF &pos) const;
- QRectF cursorRect(const QTextCursor &cursor) const;
- QRectF cursorRect() const;
- QRectF selectionRect(const QTextCursor &cursor) const;
- QRectF selectionRect() const;
-
- QString anchorAt(const QPointF &pos) const;
- QPointF anchorPosition(const QString &name) const;
-
- QString anchorAtCursor() const;
-
- bool overwriteMode() const;
- void setOverwriteMode(bool overwrite);
-
- int cursorWidth() const;
- void setCursorWidth(int width);
-
- bool acceptRichText() const;
- void setAcceptRichText(bool accept);
-
- void setExtraSelections(const QVector<QAbstractTextDocumentLayout::Selection> &selections);
- QVector<QAbstractTextDocumentLayout::Selection> extraSelections() const;
-
- void setTextWidth(qreal width);
- qreal textWidth() const;
- QSizeF size() const;
-
- void setOpenExternalLinks(bool open);
- bool openExternalLinks() const;
-
- void setIgnoreUnusedNavigationEvents(bool ignore);
- bool ignoreUnusedNavigationEvents() const;
-
- void moveCursor(QTextCursor::MoveOperation op, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor);
-
- bool canPaste() const;
-
- void setCursorIsFocusIndicator(bool b);
- bool cursorIsFocusIndicator() const;
-
- void setDragEnabled(bool enabled);
- bool isDragEnabled() const;
-
- bool isWordSelectionEnabled() const;
- void setWordSelectionEnabled(bool enabled);
-
- void print(QPagedPaintDevice *printer) const;
-
- virtual int hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const;
- virtual QRectF blockBoundingRect(const QTextBlock &block) const;
- QAbstractTextDocumentLayout::PaintContext getPaintContext() const;
-
-public Q_SLOTS:
- void setPlainText(const QString &text);
- void setHtml(const QString &text);
-
-#ifndef QT_NO_CLIPBOARD
- void cut();
- void copy();
- void paste(QClipboard::Mode mode = QClipboard::Clipboard);
-#endif
-
- void undo();
- void redo();
-
- void clear();
- void selectAll();
-
- void insertPlainText(const QString &text);
-#ifndef QT_NO_TEXTHTMLPARSER
- void insertHtml(const QString &text);
-#endif
-
- void append(const QString &text);
- void appendHtml(const QString &html);
- void appendPlainText(const QString &text);
-
- void adjustSize();
-
-Q_SIGNALS:
- void textChanged();
- void undoAvailable(bool b);
- void redoAvailable(bool b);
- void currentCharFormatChanged(const QTextCharFormat &format);
- void copyAvailable(bool b);
- void selectionChanged();
- void cursorPositionChanged();
-
- // control signals
- void updateCursorRequest(const QRectF &rect = QRectF());
- void updateRequest(const QRectF &rect = QRectF());
- void documentSizeChanged(const QSizeF &);
- void blockCountChanged(int newBlockCount);
- void visibilityRequest(const QRectF &rect);
- void microFocusChanged();
- void linkActivated(const QString &link);
- void linkHovered(const QString &);
- void modificationChanged(bool m);
-
-public:
- // control properties
- QPalette palette() const;
- void setPalette(const QPalette &pal);
-
- virtual void processEvent(QEvent *e, const QMatrix &matrix);
- void processEvent(QEvent *e, const QPointF &coordinateOffset = QPointF());
-
- // control methods
- void drawContents(QPainter *painter, const QRectF &rect = QRectF());
-
- void setFocus(bool focus, Qt::FocusReason = Qt::OtherFocusReason);
-
- virtual QVariant inputMethodQuery(Qt::InputMethodQuery property) const;
-
- virtual QMimeData *createMimeDataFromSelection() const;
- virtual bool canInsertFromMimeData(const QMimeData *source) const;
- virtual void insertFromMimeData(const QMimeData *source);
-
- bool setFocusToAnchor(const QTextCursor &newCursor);
- bool setFocusToNextOrPreviousAnchor(bool next);
- bool findNextPrevAnchor(const QTextCursor& from, bool next, QTextCursor& newAnchor);
-
- bool cursorOn() const;
-
-protected:
- virtual void timerEvent(QTimerEvent *e);
-
- virtual bool event(QEvent *e);
-
-private:
- Q_DISABLE_COPY(QTextControl)
- Q_PRIVATE_SLOT(d_func(), void _q_updateCurrentCharFormatAndSelection())
- Q_PRIVATE_SLOT(d_func(), void _q_emitCursorPosChanged(const QTextCursor &))
- Q_PRIVATE_SLOT(d_func(), void _q_deleteSelected())
- Q_PRIVATE_SLOT(d_func(), void _q_copyLink())
- Q_PRIVATE_SLOT(d_func(), void _q_updateBlock(const QTextBlock &))
- Q_PRIVATE_SLOT(d_func(), void _q_documentLayoutChanged())
-};
-
-
-// also used by QLabel
-class QTextEditMimeData : public QMimeData
-{
-public:
- inline QTextEditMimeData(const QTextDocumentFragment &aFragment) : fragment(aFragment) {}
-
- virtual QStringList formats() const;
-protected:
- virtual QVariant retrieveData(const QString &mimeType, QVariant::Type type) const;
-private:
- void setup() const;
-
- mutable QTextDocumentFragment fragment;
-};
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif // QTextControl_H
diff --git a/src/gui/text/qtextcontrol_p_p.h b/src/gui/text/qtextcontrol_p_p.h
deleted file mode 100644
index 12dfbafb69..0000000000
--- a/src/gui/text/qtextcontrol_p_p.h
+++ /dev/null
@@ -1,232 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-#ifndef QTEXTCONTROL_P_P_H
-#define QTEXTCONTROL_P_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "QtGui/qtextdocumentfragment.h"
-#include "QtGui/qtextcursor.h"
-#include "QtGui/qtextformat.h"
-#include "QtGui/qabstracttextdocumentlayout.h"
-#include "QtCore/qbasictimer.h"
-#include "QtCore/qpointer.h"
-#include "private/qobject_p.h"
-
-QT_BEGIN_NAMESPACE
-
-class QMimeData;
-class QAbstractScrollArea;
-class QInputContext;
-
-class QTextControlPrivate : public QObjectPrivate
-{
- Q_DECLARE_PUBLIC(QTextControl)
-public:
- QTextControlPrivate();
-
- bool cursorMoveKeyEvent(QKeyEvent *e);
-
- void updateCurrentCharFormat();
-
- void indent();
- void outdent();
-
- void gotoNextTableCell();
- void gotoPreviousTableCell();
-
- void createAutoBulletList();
-
- void init(Qt::TextFormat format = Qt::RichText, const QString &text = QString(),
- QTextDocument *document = 0);
- void setContent(Qt::TextFormat format = Qt::RichText, const QString &text = QString(),
- QTextDocument *document = 0);
- void startDrag();
-
- void paste(const QMimeData *source);
-
- void setCursorPosition(const QPointF &pos);
- void setCursorPosition(int pos, QTextCursor::MoveMode mode = QTextCursor::MoveAnchor);
-
- void repaintCursor();
- inline void repaintSelection()
- { repaintOldAndNewSelection(QTextCursor()); }
- void repaintOldAndNewSelection(const QTextCursor &oldSelection);
-
- void selectionChanged(bool forceEmitSelectionChanged = false);
-
- void _q_updateCurrentCharFormatAndSelection();
-
-#ifndef QT_NO_CLIPBOARD
- void setClipboardSelection();
-#endif
-
- void _q_emitCursorPosChanged(const QTextCursor &someCursor);
-
- void setBlinkingCursorEnabled(bool enable);
-
- void extendWordwiseSelection(int suggestedNewPosition, qreal mouseXPosition);
- void extendBlockwiseSelection(int suggestedNewPosition);
-
- void _q_deleteSelected();
-
- void _q_setCursorAfterUndoRedo(int undoPosition, int charsAdded, int charsRemoved);
-
- QRectF cursorRectPlusUnicodeDirectionMarkers(const QTextCursor &cursor) const;
- QRectF rectForPosition(int position) const;
- QRectF selectionRect(const QTextCursor &cursor) const;
- inline QRectF selectionRect() const
- { return selectionRect(this->cursor); }
-
- QString anchorForCursor(const QTextCursor &anchor) const;
-
- void keyPressEvent(QKeyEvent *e);
- void mousePressEvent(QEvent *e, Qt::MouseButton button, const QPointF &pos,
- Qt::KeyboardModifiers modifiers,
- Qt::MouseButtons buttons,
- const QPoint &globalPos);
- void mouseMoveEvent(QEvent *e, Qt::MouseButton button, const QPointF &pos,
- Qt::KeyboardModifiers modifiers,
- Qt::MouseButtons buttons,
- const QPoint &globalPos);
- void mouseReleaseEvent(QEvent *e, Qt::MouseButton button, const QPointF &pos,
- Qt::KeyboardModifiers modifiers,
- Qt::MouseButtons buttons,
- const QPoint &globalPos);
- void mouseDoubleClickEvent(QEvent *e, Qt::MouseButton button, const QPointF &pos,
- Qt::KeyboardModifiers modifiers,
- Qt::MouseButtons buttons,
- const QPoint &globalPos);
- bool sendMouseEventToInputContext(QEvent *e, QEvent::Type eventType, Qt::MouseButton button,
- const QPointF &pos,
- Qt::KeyboardModifiers modifiers,
- Qt::MouseButtons buttons,
- const QPoint &globalPos);
- void contextMenuEvent(const QPoint &screenPos, const QPointF &docPos, QWidget *contextWidget);
- void focusEvent(QFocusEvent *e);
-#ifdef QT_KEYPAD_NAVIGATION
- void editFocusEvent(QEvent *e);
-#endif
- bool dragEnterEvent(QEvent *e, const QMimeData *mimeData);
- void dragLeaveEvent();
- bool dragMoveEvent(QEvent *e, const QMimeData *mimeData, const QPointF &pos);
- bool dropEvent(const QMimeData *mimeData, const QPointF &pos, Qt::DropAction dropAction, QObject *source);
-
- void inputMethodEvent(QInputMethodEvent *);
-
- void activateLinkUnderCursor(QString href = QString());
-
- void append(const QString &text, Qt::TextFormat format = Qt::AutoText);
-
- QInputContext *inputContext();
-
- QTextDocument *doc;
- bool cursorOn;
- QTextCursor cursor;
- bool cursorIsFocusIndicator;
- QTextCharFormat lastCharFormat;
-
- QTextCursor dndFeedbackCursor;
-
- Qt::TextInteractionFlags interactionFlags;
-
- QBasicTimer cursorBlinkTimer;
- QBasicTimer trippleClickTimer;
- QPointF trippleClickPoint;
-
- bool dragEnabled;
-
- bool mousePressed;
-
- bool mightStartDrag;
- QPoint dragStartPos;
- QPointer<QObject> contextObject;
-
- bool lastSelectionState;
-
- bool ignoreAutomaticScrollbarAdjustement;
-
- QTextCursor selectedWordOnDoubleClick;
- QTextCursor selectedBlockOnTrippleClick;
-
- bool overwriteMode;
- bool acceptRichText;
-
- int preeditCursor;
- bool hideCursor; // used to hide the cursor in the preedit area
-
- QVector<QAbstractTextDocumentLayout::Selection> extraSelections;
-
- QPalette palette;
- bool hasFocus;
-#ifdef QT_KEYPAD_NAVIGATION
- bool hasEditFocus;
-#endif
- bool isEnabled;
-
- QString highlightedAnchor; // Anchor below cursor
- QString anchorOnMousePress;
- bool hadSelectionOnMousePress;
-
- bool ignoreUnusedNavigationEvents;
- bool openExternalLinks;
-
- bool wordSelectionEnabled;
-
- QString linkToCopy;
- void _q_copyLink();
- void _q_updateBlock(const QTextBlock &);
- void _q_documentLayoutChanged();
-};
-
-QT_END_NAMESPACE
-
-#endif // QTextControl_P_H
diff --git a/src/gui/text/qtextcursor.cpp b/src/gui/text/qtextcursor.cpp
index 766d9792cd..25ec09d9db 100644
--- a/src/gui/text/qtextcursor.cpp
+++ b/src/gui/text/qtextcursor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextcursor.h b/src/gui/text/qtextcursor.h
index 32ded45137..bf7c4a8787 100644
--- a/src/gui/text/qtextcursor.h
+++ b/src/gui/text/qtextcursor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QTextDocument;
class QTextCursorPrivate;
diff --git a/src/gui/text/qtextcursor_p.h b/src/gui/text/qtextcursor_p.h
index d64498a7ac..d8a644c842 100644
--- a/src/gui/text/qtextcursor_p.h
+++ b/src/gui/text/qtextcursor_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextdocument.cpp b/src/gui/text/qtextdocument.cpp
index 3038504591..1fad064b5c 100644
--- a/src/gui/text/qtextdocument.cpp
+++ b/src/gui/text/qtextdocument.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextdocument.h b/src/gui/text/qtextdocument.h
index b7c77c2c54..aeb431c2bc 100644
--- a/src/gui/text/qtextdocument.h
+++ b/src/gui/text/qtextdocument.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QTextFormatCollection;
class QTextListFormat;
diff --git a/src/gui/text/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp
index 9e410b40af..8ce3ae4ac3 100644
--- a/src/gui/text/qtextdocument_p.cpp
+++ b/src/gui/text/qtextdocument_p.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -531,16 +531,17 @@ int QTextDocumentPrivate::remove_block(int pos, int *blockFormat, int command, Q
Q_ASSERT(b);
if (blocks.size(b) == 1 && command == QTextUndoCommand::BlockAdded) {
- Q_ASSERT((int)blocks.position(b) == pos);
-// qDebug("removing empty block");
- // empty block remove the block itself
+ Q_ASSERT((int)blocks.position(b) == pos);
+ // qDebug("removing empty block");
+ // empty block remove the block itself
} else {
- // non empty block, merge with next one into this block
-// qDebug("merging block with next");
- int n = blocks.next(b);
- Q_ASSERT((int)blocks.position(n) == pos + 1);
- blocks.setSize(b, blocks.size(b) + blocks.size(n) - 1);
- b = n;
+ // non empty block, merge with next one into this block
+ // qDebug("merging block with next");
+ int n = blocks.next(b);
+ Q_ASSERT((int)blocks.position(n) == pos + 1);
+ blocks.setSize(b, blocks.size(b) + blocks.size(n) - 1);
+ blocks.fragment(b)->userState = blocks.fragment(n)->userState;
+ b = n;
}
*blockFormat = blocks.fragment(b)->format;
diff --git a/src/gui/text/qtextdocument_p.h b/src/gui/text/qtextdocument_p.h
index 07a5230ec5..5f2f0f0096 100644
--- a/src/gui/text/qtextdocument_p.h
+++ b/src/gui/text/qtextdocument_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextdocumentfragment.cpp b/src/gui/text/qtextdocumentfragment.cpp
index a42a4ce39a..72113bc977 100644
--- a/src/gui/text/qtextdocumentfragment.cpp
+++ b/src/gui/text/qtextdocumentfragment.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextdocumentfragment.h b/src/gui/text/qtextdocumentfragment.h
index cc7dd293f2..2e1f14fd81 100644
--- a/src/gui/text/qtextdocumentfragment.h
+++ b/src/gui/text/qtextdocumentfragment.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QTextStream;
class QTextDocument;
diff --git a/src/gui/text/qtextdocumentfragment_p.h b/src/gui/text/qtextdocumentfragment_p.h
index 44276d3629..154971ff3d 100644
--- a/src/gui/text/qtextdocumentfragment_p.h
+++ b/src/gui/text/qtextdocumentfragment_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextdocumentlayout.cpp b/src/gui/text/qtextdocumentlayout.cpp
index 80975f928b..cc3372d6e8 100644
--- a/src/gui/text/qtextdocumentlayout.cpp
+++ b/src/gui/text/qtextdocumentlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextdocumentlayout_p.h b/src/gui/text/qtextdocumentlayout_p.h
index e5f8cc19a8..92bcf47b64 100644
--- a/src/gui/text/qtextdocumentlayout_p.h
+++ b/src/gui/text/qtextdocumentlayout_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextdocumentwriter.cpp b/src/gui/text/qtextdocumentwriter.cpp
index a371471b76..d43a61866d 100644
--- a/src/gui/text/qtextdocumentwriter.cpp
+++ b/src/gui/text/qtextdocumentwriter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextdocumentwriter.h b/src/gui/text/qtextdocumentwriter.h
index 7dc903c412..c0dea06f8f 100644
--- a/src/gui/text/qtextdocumentwriter.h
+++ b/src/gui/text/qtextdocumentwriter.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,7 +47,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QTextDocumentWriterPrivate;
class QIODevice;
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index 0dd8d0bef3..5e5354a980 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,7 @@
#include <private/qunicodetables_p.h>
#include "qtextdocument_p.h"
#include <qguiapplication.h>
-#include <qinputpanel.h>
+#include <qinputmethod.h>
#include <stdlib.h>
@@ -1409,7 +1409,7 @@ bool QTextEngine::isRightToLeft() const
itemize();
// this places the cursor in the right position depending on the keyboard layout
if (layoutData->string.isEmpty())
- return qApp ? qApp->inputPanel()->inputDirection() == Qt::RightToLeft : false;
+ return qApp ? qApp->inputMethod()->inputDirection() == Qt::RightToLeft : false;
return layoutData->string.isRightToLeft();
}
@@ -2526,7 +2526,7 @@ QFixed QTextEngine::calculateTabWidth(int item, QFixed x) const
// fall through
case QTextOption::RightTab:
tab = QFixed::fromReal(tabSpec.position) * dpiScale - length;
- if (tab < 0) // default to tab taking no space
+ if (tab < x) // default to tab taking no space
return QFixed();
break;
case QTextOption::LeftTab:
diff --git a/src/gui/text/qtextengine_p.h b/src/gui/text/qtextengine_p.h
index 368ad3763d..641d946aa9 100644
--- a/src/gui/text/qtextengine_p.h
+++ b/src/gui/text/qtextengine_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextformat.cpp b/src/gui/text/qtextformat.cpp
index 9ce45fdaf3..a7e68a41c2 100644
--- a/src/gui/text/qtextformat.cpp
+++ b/src/gui/text/qtextformat.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextformat.h b/src/gui/text/qtextformat.h
index 5c9d6fe20e..6843995124 100644
--- a/src/gui/text/qtextformat.h
+++ b/src/gui/text/qtextformat.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,7 +55,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QString;
class QVariant;
diff --git a/src/gui/text/qtextformat_p.h b/src/gui/text/qtextformat_p.h
index 61e3e1f253..b5ac3ff269 100644
--- a/src/gui/text/qtextformat_p.h
+++ b/src/gui/text/qtextformat_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtexthtmlparser.cpp b/src/gui/text/qtexthtmlparser.cpp
index 4ee282c46e..da08c4e468 100644
--- a/src/gui/text/qtexthtmlparser.cpp
+++ b/src/gui/text/qtexthtmlparser.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtexthtmlparser_p.h b/src/gui/text/qtexthtmlparser_p.h
index f1a90ee0a3..8216681381 100644
--- a/src/gui/text/qtexthtmlparser_p.h
+++ b/src/gui/text/qtexthtmlparser_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextimagehandler.cpp b/src/gui/text/qtextimagehandler.cpp
index c7cf2df903..abd283e459 100644
--- a/src/gui/text/qtextimagehandler.cpp
+++ b/src/gui/text/qtextimagehandler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextimagehandler_p.h b/src/gui/text/qtextimagehandler_p.h
index ce1d481eba..b997e3a41d 100644
--- a/src/gui/text/qtextimagehandler_p.h
+++ b/src/gui/text/qtextimagehandler_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index 1e8cb9e478..ac92c4dd51 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -2228,9 +2228,12 @@ QList<QGlyphRun> QTextLine::glyphRuns(int from, int length) const
int glyphsEnd = (relativeTo == eng->length(&si))
? si.num_glyphs - 1
: logClusters[relativeTo];
+ // the glyph index right next to the requested range
+ int nextGlyphIndex = relativeTo < eng->length(&si) - 1 ? logClusters[relativeTo + 1] : si.num_glyphs;
+ if (nextGlyphIndex - 1 > glyphsEnd)
+ glyphsEnd = nextGlyphIndex - 1;
bool startsInsideLigature = relativeFrom > 0 && logClusters[relativeFrom - 1] == glyphsStart;
- bool endsInsideLigature = relativeTo < eng->length(&si) - 1
- && logClusters[relativeTo + 1] == glyphsEnd;
+ bool endsInsideLigature = nextGlyphIndex == glyphsEnd;
int itemGlyphsStart = logClusters[iterator.itemStart - si.position];
int itemGlyphsEnd = logClusters[iterator.itemEnd - 1 - si.position];
diff --git a/src/gui/text/qtextlayout.h b/src/gui/text/qtextlayout.h
index e698625d9b..a3bc79dc52 100644
--- a/src/gui/text/qtextlayout.h
+++ b/src/gui/text/qtextlayout.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,7 +56,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QTextEngine;
class QFont;
diff --git a/src/gui/text/qtextlist.cpp b/src/gui/text/qtextlist.cpp
index 97ad9dc82b..5a642e90ef 100644
--- a/src/gui/text/qtextlist.cpp
+++ b/src/gui/text/qtextlist.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextlist.h b/src/gui/text/qtextlist.h
index 5a470f4582..11ef3e084b 100644
--- a/src/gui/text/qtextlist.h
+++ b/src/gui/text/qtextlist.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QTextListPrivate;
class QTextCursor;
diff --git a/src/gui/text/qtextobject.cpp b/src/gui/text/qtextobject.cpp
index e49b0d3ad8..bffc2c3a65 100644
--- a/src/gui/text/qtextobject.cpp
+++ b/src/gui/text/qtextobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextobject.h b/src/gui/text/qtextobject.h
index f56a38b366..65b2d5c52d 100644
--- a/src/gui/text/qtextobject.h
+++ b/src/gui/text/qtextobject.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QTextObjectPrivate;
class QTextDocument;
diff --git a/src/gui/text/qtextobject_p.h b/src/gui/text/qtextobject_p.h
index 0ca2f87f0d..960e4e81f2 100644
--- a/src/gui/text/qtextobject_p.h
+++ b/src/gui/text/qtextobject_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextodfwriter.cpp b/src/gui/text/qtextodfwriter.cpp
index 0fe2efdd5f..80adeb602c 100644
--- a/src/gui/text/qtextodfwriter.cpp
+++ b/src/gui/text/qtextodfwriter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextodfwriter_p.h b/src/gui/text/qtextodfwriter_p.h
index 5108175291..b6252c722e 100644
--- a/src/gui/text/qtextodfwriter_p.h
+++ b/src/gui/text/qtextodfwriter_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextoption.cpp b/src/gui/text/qtextoption.cpp
index 2fe6284592..b3b4c90d79 100644
--- a/src/gui/text/qtextoption.cpp
+++ b/src/gui/text/qtextoption.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtextoption.h b/src/gui/text/qtextoption.h
index 8b7b006921..a0a4c76282 100644
--- a/src/gui/text/qtextoption.h
+++ b/src/gui/text/qtextoption.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
template <typename T> class QList;
struct QTextOptionPrivate;
diff --git a/src/gui/text/qtexttable.cpp b/src/gui/text/qtexttable.cpp
index 64b28811e5..35adfd16b2 100644
--- a/src/gui/text/qtexttable.cpp
+++ b/src/gui/text/qtexttable.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qtexttable.h b/src/gui/text/qtexttable.h
index e5ea7609dd..dbcb6705c2 100644
--- a/src/gui/text/qtexttable.h
+++ b/src/gui/text/qtexttable.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QTextCursor;
class QTextTable;
diff --git a/src/gui/text/qtexttable_p.h b/src/gui/text/qtexttable_p.h
index 237a1a883c..273caa110f 100644
--- a/src/gui/text/qtexttable_p.h
+++ b/src/gui/text/qtexttable_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qzip.cpp b/src/gui/text/qzip.cpp
index b82e679d8b..337326d3d7 100644
--- a/src/gui/text/qzip.cpp
+++ b/src/gui/text/qzip.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qzipreader_p.h b/src/gui/text/qzipreader_p.h
index a569b584cf..4dbf1d0a36 100644
--- a/src/gui/text/qzipreader_p.h
+++ b/src/gui/text/qzipreader_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/qzipwriter_p.h b/src/gui/text/qzipwriter_p.h
index 0860c004f9..5fcc48a10b 100644
--- a/src/gui/text/qzipwriter_p.h
+++ b/src/gui/text/qzipwriter_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/text/text.pri b/src/gui/text/text.pri
index c6bdfbd9c2..63a731f116 100644
--- a/src/gui/text/text.pri
+++ b/src/gui/text/text.pri
@@ -9,7 +9,6 @@ HEADERS += \
text/qfontmetrics.h \
text/qfont_p.h \
text/qfontsubset_p.h \
- text/qlinecontrol_p.h \
text/qtextengine_p.h \
text/qtextlayout.h \
text/qtextformat.h \
@@ -23,8 +22,6 @@ HEADERS += \
text/qtexthtmlparser_p.h \
text/qabstracttextdocumentlayout.h \
text/qtextdocumentlayout_p.h \
- text/qtextcontrol_p.h \
- text/qtextcontrol_p_p.h \
text/qtextcursor.h \
text/qtextcursor_p.h \
text/qtextdocumentfragment.h \
@@ -53,8 +50,6 @@ SOURCES += \
text/qfontsubset.cpp \
text/qfontmetrics.cpp \
text/qfontdatabase.cpp \
- text/qlinecontrol.cpp \
- text/qtextcontrol.cpp \
text/qtextengine.cpp \
text/qtextlayout.cpp \
text/qtextformat.cpp \
@@ -107,25 +102,5 @@ SOURCES += \
HEADERS += \
text/qplatformfontdatabase_qpa.h
-symbian {
- SOURCES += \
- text/qfont_s60.cpp
- contains(QT_CONFIG, freetype) {
- SOURCES += \
- text/qfontengine_ft.cpp \
- text/qrawfont_ft.cpp
- HEADERS += \
- text/qfontengine_ft_p.h
- DEFINES += \
- QT_NO_FONTCONFIG
- } else {
- SOURCES += \
- text/qfontengine_s60.cpp
- HEADERS += \
- text/qfontengine_s60_p.h
- }
- LIBS += -lfntstr -lecom
-}
-
DEFINES += QT_NO_OPENTYPE
INCLUDEPATH += ../3rdparty/harfbuzz/src
diff --git a/src/gui/util/qdesktopservices.cpp b/src/gui/util/qdesktopservices.cpp
index 0bb233c82f..0f1312e02d 100644
--- a/src/gui/util/qdesktopservices.cpp
+++ b/src/gui/util/qdesktopservices.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/util/qdesktopservices.h b/src/gui/util/qdesktopservices.h
index af9aa7bec7..04a639437e 100644
--- a/src/gui/util/qdesktopservices.h
+++ b/src/gui/util/qdesktopservices.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -43,15 +43,12 @@
#define QDESKTOPSERVICES_H
#include <QtCore/qstring.h>
-#if QT_DEPRECATED_SINCE(5, 0)
#include <QtCore/qstandardpaths.h>
-#endif
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_DESKTOPSERVICES
@@ -67,7 +64,7 @@ public:
static void unsetUrlHandler(const QString &scheme);
#if QT_DEPRECATED_SINCE(5, 0)
- enum StandardLocation {
+ QT_DEPRECATED enum StandardLocation {
DesktopLocation,
DocumentsLocation,
FontsLocation,
diff --git a/src/gui/util/qdesktopservices_mac.cpp b/src/gui/util/qdesktopservices_mac.cpp
index d822455886..84c7156ef3 100644
--- a/src/gui/util/qdesktopservices_mac.cpp
+++ b/src/gui/util/qdesktopservices_mac.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/util/qdesktopservices_qpa.cpp b/src/gui/util/qdesktopservices_qpa.cpp
index 9e517a0166..b94267e72e 100644
--- a/src/gui/util/qdesktopservices_qpa.cpp
+++ b/src/gui/util/qdesktopservices_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/util/qdesktopservices_win.cpp b/src/gui/util/qdesktopservices_win.cpp
index fe6d65994a..88f245d6f6 100644
--- a/src/gui/util/qdesktopservices_win.cpp
+++ b/src/gui/util/qdesktopservices_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/util/qdesktopservices_x11.cpp b/src/gui/util/qdesktopservices_x11.cpp
index e64833a20c..73cf47a1db 100644
--- a/src/gui/util/qdesktopservices_x11.cpp
+++ b/src/gui/util/qdesktopservices_x11.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/util/qhexstring_p.h b/src/gui/util/qhexstring_p.h
index 7579e4ff78..87bcf2293c 100644
--- a/src/gui/util/qhexstring_p.h
+++ b/src/gui/util/qhexstring_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/gui/util/qvalidator.cpp b/src/gui/util/qvalidator.cpp
index 5b637e4383..02552f5a53 100644
--- a/src/gui/util/qvalidator.cpp
+++ b/src/gui/util/qvalidator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -131,6 +131,12 @@ QT_BEGIN_NAMESPACE
\omitvalue Valid
*/
+/*!
+ \fn void QValidator::changed()
+
+ This signal is emitted when any property that may affect the validity of
+ a string has changed.
+*/
/*!
\fn void QIntValidator::topChanged(int top)
@@ -247,7 +253,10 @@ QLocale QValidator::locale() const
void QValidator::setLocale(const QLocale &locale)
{
Q_D(QValidator);
- d->locale = locale;
+ if (d->locale != locale) {
+ d->locale = locale;
+ emit changed();
+ }
}
/*!
@@ -312,9 +321,7 @@ void QValidator::fixup(QString &) const
or individually with setBottom() and setTop().
QIntValidator uses its locale() to interpret the number. For example,
- in Arabic locales, QIntValidator will accept Arabic digits. In addition,
- QIntValidator is always guaranteed to accept a number formatted according
- to the "C" locale.
+ in Arabic locales, QIntValidator will accept Arabic digits.
\sa QDoubleValidator, QRegExpValidator, {Line Edits Example}
*/
@@ -394,9 +401,7 @@ QValidator::State QIntValidator::validate(QString & input, int&) const
{
QByteArray buff;
if (!locale().d()->validateChars(input, QLocalePrivate::IntegerMode, &buff)) {
- QLocale cl(QLocale::C);
- if (!cl.d()->validateChars(input, QLocalePrivate::IntegerMode, &buff))
- return Invalid;
+ return Invalid;
}
if (buff.isEmpty())
@@ -417,7 +422,7 @@ QValidator::State QIntValidator::validate(QString & input, int&) const
return Invalid;
if (entered >= b && entered <= t) {
- locale().toInt(input, &ok, 10);
+ locale().toInt(input, &ok);
return ok ? Acceptable : Intermediate;
}
@@ -435,9 +440,7 @@ void QIntValidator::fixup(QString &input) const
{
QByteArray buff;
if (!locale().d()->validateChars(input, QLocalePrivate::IntegerMode, &buff)) {
- QLocale cl(QLocale::C);
- if (!cl.d()->validateChars(input, QLocalePrivate::IntegerMode, &buff))
- return;
+ return;
}
bool ok, overflow;
qlonglong entered = QLocalePrivate::bytearrayToLongLong(buff.constData(), 10, &ok, &overflow);
@@ -452,15 +455,21 @@ void QIntValidator::fixup(QString &input) const
void QIntValidator::setRange(int bottom, int top)
{
+ bool rangeChanged = false;
if (b != bottom) {
b = bottom;
+ rangeChanged = true;
emit bottomChanged(b);
}
if (t != top) {
t = top;
+ rangeChanged = true;
emit topChanged(t);
}
+
+ if (rangeChanged)
+ emit changed();
}
@@ -546,10 +555,6 @@ public:
in the German locale, "1,234" will be accepted as the fractional number
1.234. In Arabic locales, QDoubleValidator will accept Arabic digits.
- In addition, QDoubleValidator is always guaranteed to accept a number
- formatted according to the "C" locale. QDoubleValidator will not accept
- numbers with thousand-separators.
-
\sa QIntValidator, QRegExpValidator, {Line Edits Example}
*/
@@ -643,11 +648,7 @@ QValidator::State QDoubleValidator::validate(QString & input, int &) const
break;
}
- State currentLocaleValidation = d->validateWithLocale(input, numMode, locale());
- if (currentLocaleValidation == Acceptable || locale().language() == QLocale::C)
- return currentLocaleValidation;
- State cLocaleValidation = d->validateWithLocale(input, numMode, QLocale(QLocale::C));
- return qMax(currentLocaleValidation, cLocaleValidation);
+ return d->validateWithLocale(input, numMode, locale());
}
QValidator::State QDoubleValidatorPrivate::validateWithLocale(QString &input, QLocalePrivate::NumberMode numMode, const QLocale &locale) const
@@ -697,20 +698,26 @@ QValidator::State QDoubleValidatorPrivate::validateWithLocale(QString &input, QL
void QDoubleValidator::setRange(double minimum, double maximum, int decimals)
{
+ bool rangeChanged = false;
if (b != minimum) {
b = minimum;
+ rangeChanged = true;
emit bottomChanged(b);
}
if (t != maximum) {
t = maximum;
+ rangeChanged = true;
emit topChanged(t);
}
if (dec != decimals) {
dec = decimals;
+ rangeChanged = true;
emit decimalsChanged(dec);
}
+ if (rangeChanged)
+ emit changed();
}
/*!
@@ -772,6 +779,7 @@ void QDoubleValidator::setNotation(Notation newNotation)
if (d->notation != newNotation) {
d->notation = newNotation;
emit notationChanged(d->notation);
+ emit changed();
}
}
@@ -888,6 +896,7 @@ void QRegExpValidator::setRegExp(const QRegExp& rx)
if (r != rx) {
r = rx;
emit regExpChanged(r);
+ emit changed();
}
}
diff --git a/src/gui/util/qvalidator.h b/src/gui/util/qvalidator.h
index 3e15b48c1c..f3191d2b1b 100644
--- a/src/gui/util/qvalidator.h
+++ b/src/gui/util/qvalidator.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_VALIDATOR
@@ -76,6 +75,9 @@ public:
virtual State validate(QString &, int &) const = 0;
virtual void fixup(QString &) const;
+Q_SIGNALS:
+ void changed();
+
protected:
QValidator(QObjectPrivate &d, QObject *parent);
QValidator(QValidatorPrivate &d, QObject *parent);
diff --git a/src/modules/qt_concurrent.pri b/src/modules/qt_concurrent.pri
new file mode 100644
index 0000000000..eccec12f66
--- /dev/null
+++ b/src/modules/qt_concurrent.pri
@@ -0,0 +1,15 @@
+QT.concurrent.VERSION = 5.0.0
+QT.concurrent.MAJOR_VERSION = 5
+QT.concurrent.MINOR_VERSION = 0
+QT.concurrent.PATCH_VERSION = 0
+
+QT.concurrent.name = QtConcurrent
+QT.concurrent.bins = $$QT_MODULE_BIN_BASE
+QT.concurrent.includes = $$QT_MODULE_INCLUDE_BASE/QtConcurrent
+QT.concurrent.private_includes = $$QT_MODULE_INCLUDE_BASE/QtConcurrent/$$QT.concurrent.VERSION
+QT.concurrent.sources = $$QT_MODULE_BASE/src/concurrent
+QT.concurrent.libs = $$QT_MODULE_LIB_BASE
+QT.concurrent.plugins = $$QT_MODULE_PLUGIN_BASE
+QT.concurrent.imports = $$QT_MODULE_IMPORT_BASE
+QT.concurrent.depends = core
+QT.concurrent.DEFINES = QT_CONCURRENT_LIB
diff --git a/src/modules/qt_dbus.pri b/src/modules/qt_dbus.pri
index d57160eb77..8514265f8c 100644
--- a/src/modules/qt_dbus.pri
+++ b/src/modules/qt_dbus.pri
@@ -11,6 +11,6 @@ QT.dbus.sources = $$QT_MODULE_BASE/src/dbus
QT.dbus.libs = $$QT_MODULE_LIB_BASE
QT.dbus.plugins = $$QT_MODULE_PLUGIN_BASE
QT.dbus.imports = $$QT_MODULE_IMPORT_BASE
-QT.dbus.depends = core xml
+QT.dbus.depends = core
QT.dbus.CONFIG = dbusadaptors dbusinterfaces
QT.dbus.DEFINES = QT_DBUS_LIB
diff --git a/src/network/access/access.pri b/src/network/access/access.pri
index 0047084eb1..e0a0253b6c 100644
--- a/src/network/access/access.pri
+++ b/src/network/access/access.pri
@@ -2,7 +2,6 @@
HEADERS += \
access/qftp_p.h \
- access/qhttpheader_p.h \
access/qhttpnetworkheader_p.h \
access/qhttpnetworkrequest_p.h \
access/qhttpnetworkreply_p.h \
@@ -39,7 +38,6 @@ HEADERS += \
SOURCES += \
access/qftp.cpp \
- access/qhttpheader.cpp \
access/qhttpnetworkheader.cpp \
access/qhttpnetworkrequest.cpp \
access/qhttpnetworkreply.cpp \
diff --git a/src/network/access/qabstractnetworkcache.cpp b/src/network/access/qabstractnetworkcache.cpp
index 638e93be53..69acf080ec 100644
--- a/src/network/access/qabstractnetworkcache.cpp
+++ b/src/network/access/qabstractnetworkcache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qabstractnetworkcache.h b/src/network/access/qabstractnetworkcache.h
index 5d03756957..8d7e77eeb0 100644
--- a/src/network/access/qabstractnetworkcache.h
+++ b/src/network/access/qabstractnetworkcache.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
class QIODevice;
class QDateTime;
diff --git a/src/network/access/qabstractnetworkcache_p.h b/src/network/access/qabstractnetworkcache_p.h
index 162422f8c0..4577d16b0b 100644
--- a/src/network/access/qabstractnetworkcache_p.h
+++ b/src/network/access/qabstractnetworkcache_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qftp.cpp b/src/network/access/qftp.cpp
index 6fafff0f56..c7ad810084 100644
--- a/src/network/access/qftp.cpp
+++ b/src/network/access/qftp.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -472,7 +472,7 @@ static void _q_fixupDateTime(QDateTime *dateTime)
const int futureTolerance = 86400;
if (dateTime->secsTo(QDateTime::currentDateTime()) < -futureTolerance) {
QDate d = dateTime->date();
- d.setYMD(d.year() - 1, d.month(), d.day());
+ d.setDate(d.year() - 1, d.month(), d.day());
dateTime->setDate(d);
}
}
diff --git a/src/network/access/qftp_p.h b/src/network/access/qftp_p.h
index 0dc6a2006f..8dc423973a 100644
--- a/src/network/access/qftp_p.h
+++ b/src/network/access/qftp_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -61,7 +61,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
#ifndef QT_NO_FTP
diff --git a/src/network/access/qhttpheader.cpp b/src/network/access/qhttpheader.cpp
deleted file mode 100644
index 6e87a05c6b..0000000000
--- a/src/network/access/qhttpheader.cpp
+++ /dev/null
@@ -1,770 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtNetwork 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$
-**
-****************************************************************************/
-
-//#define QHTTP_DEBUG
-
-#include <qplatformdefs.h>
-#include "qhttpheader_p.h"
-
-#ifndef QT_NO_HTTP
-# include "private/qobject_p.h"
-# include "qtcpsocket.h"
-# include "qsslsocket.h"
-# include "qtextstream.h"
-# include "qmap.h"
-# include "qlist.h"
-# include "qstring.h"
-# include "qstringlist.h"
-# include "qbuffer.h"
-# include "private/qringbuffer_p.h"
-# include "qcoreevent.h"
-# include "qurl.h"
-# include "qnetworkproxy.h"
-# include "qauthenticator.h"
-# include "qauthenticator_p.h"
-# include "qdebug.h"
-# include "qtimer.h"
-#endif
-
-#ifndef QT_NO_HTTP
-
-QT_BEGIN_NAMESPACE
-
-class QHttpHeaderPrivate
-{
- Q_DECLARE_PUBLIC(QHttpHeader)
-public:
- inline virtual ~QHttpHeaderPrivate() {}
-
- QList<QPair<QString, QString> > values;
- bool valid;
- QHttpHeader *q_ptr;
-};
-
-/****************************************************
- *
- * QHttpHeader
- *
- ****************************************************/
-
-/*!
- \class QHttpHeader
- \obsolete
- \brief The QHttpHeader class contains header information for HTTP.
-
- \ingroup network
- \inmodule QtNetwork
-
- In most cases you should use the more specialized derivatives of
- this class, QHttpResponseHeader and QHttpRequestHeader, rather
- than directly using QHttpHeader.
-
- QHttpHeader provides the HTTP header fields. A HTTP header field
- consists of a name followed by a colon, a single space, and the
- field value. (See RFC 1945.) Field names are case-insensitive. A
- typical header field looks like this:
- \snippet doc/src/snippets/code/src_network_access_qhttp.cpp 0
-
- In the API the header field name is called the "key" and the
- content is called the "value". You can get and set a header
- field's value by using its key with value() and setValue(), e.g.
- \snippet doc/src/snippets/code/src_network_access_qhttp.cpp 1
-
- Some fields are so common that getters and setters are provided
- for them as a convenient alternative to using \l value() and
- \l setValue(), e.g. contentLength() and contentType(),
- setContentLength() and setContentType().
-
- Each header key has a \e single value associated with it. If you
- set the value for a key which already exists the previous value
- will be discarded.
-
- \sa QHttpRequestHeader QHttpResponseHeader
-*/
-
-/*!
- \fn int QHttpHeader::majorVersion() const
-
- Returns the major protocol-version of the HTTP header.
-*/
-
-/*!
- \fn int QHttpHeader::minorVersion() const
-
- Returns the minor protocol-version of the HTTP header.
-*/
-
-/*!
- Constructs an empty HTTP header.
-*/
-QHttpHeader::QHttpHeader()
- : d_ptr(new QHttpHeaderPrivate)
-{
- Q_D(QHttpHeader);
- d->q_ptr = this;
- d->valid = true;
-}
-
-/*!
- Constructs a copy of \a header.
-*/
-QHttpHeader::QHttpHeader(const QHttpHeader &header)
- : d_ptr(new QHttpHeaderPrivate)
-{
- Q_D(QHttpHeader);
- d->q_ptr = this;
- d->valid = header.d_func()->valid;
- d->values = header.d_func()->values;
-}
-
-/*!
- Constructs a HTTP header for \a str.
-
- This constructor parses the string \a str for header fields and
- adds this information. The \a str should consist of one or more
- "\r\n" delimited lines; each of these lines should have the format
- key, colon, space, value.
-*/
-QHttpHeader::QHttpHeader(const QString &str)
- : d_ptr(new QHttpHeaderPrivate)
-{
- Q_D(QHttpHeader);
- d->q_ptr = this;
- d->valid = true;
- parse(str);
-}
-
-/*! \internal
- */
-QHttpHeader::QHttpHeader(QHttpHeaderPrivate &dd, const QString &str)
- : d_ptr(&dd)
-{
- Q_D(QHttpHeader);
- d->q_ptr = this;
- d->valid = true;
- if (!str.isEmpty())
- parse(str);
-}
-
-/*! \internal
- */
-QHttpHeader::QHttpHeader(QHttpHeaderPrivate &dd, const QHttpHeader &header)
- : d_ptr(&dd)
-{
- Q_D(QHttpHeader);
- d->q_ptr = this;
- d->valid = header.d_func()->valid;
- d->values = header.d_func()->values;
-}
-/*!
- Destructor.
-*/
-QHttpHeader::~QHttpHeader()
-{
-}
-
-/*!
- Assigns \a h and returns a reference to this http header.
-*/
-QHttpHeader &QHttpHeader::operator=(const QHttpHeader &h)
-{
- Q_D(QHttpHeader);
- d->values = h.d_func()->values;
- d->valid = h.d_func()->valid;
- return *this;
-}
-
-/*!
- Returns true if the HTTP header is valid; otherwise returns false.
-
- A QHttpHeader is invalid if it was created by parsing a malformed string.
-*/
-bool QHttpHeader::isValid() const
-{
- Q_D(const QHttpHeader);
- return d->valid;
-}
-
-/*! \internal
- Parses the HTTP header string \a str for header fields and adds
- the keys/values it finds. If the string is not parsed successfully
- the QHttpHeader becomes \link isValid() invalid\endlink.
-
- Returns true if \a str was successfully parsed; otherwise returns false.
-
- \sa toString()
-*/
-bool QHttpHeader::parse(const QString &str)
-{
- Q_D(QHttpHeader);
- QStringList lst;
- int pos = str.indexOf(QLatin1Char('\n'));
- if (pos > 0 && str.at(pos - 1) == QLatin1Char('\r'))
- lst = str.trimmed().split(QLatin1String("\r\n"));
- else
- lst = str.trimmed().split(QLatin1String("\n"));
- lst.removeAll(QString()); // No empties
-
- if (lst.isEmpty())
- return true;
-
- QStringList lines;
- QStringList::Iterator it = lst.begin();
- for (; it != lst.end(); ++it) {
- if (!(*it).isEmpty()) {
- if ((*it)[0].isSpace()) {
- if (!lines.isEmpty()) {
- lines.last() += QLatin1Char(' ');
- lines.last() += (*it).trimmed();
- }
- } else {
- lines.append((*it));
- }
- }
- }
-
- int number = 0;
- it = lines.begin();
- for (; it != lines.end(); ++it) {
- if (!parseLine(*it, number++)) {
- d->valid = false;
- return false;
- }
- }
- return true;
-}
-
-/*! \internal
-*/
-void QHttpHeader::setValid(bool v)
-{
- Q_D(QHttpHeader);
- d->valid = v;
-}
-
-/*!
- Returns the first value for the entry with the given \a key. If no entry
- has this \a key, an empty string is returned.
-
- \sa setValue() removeValue() hasKey() keys()
-*/
-QString QHttpHeader::value(const QString &key) const
-{
- Q_D(const QHttpHeader);
- QString lowercaseKey = key.toLower();
- QList<QPair<QString, QString> >::ConstIterator it = d->values.constBegin();
- while (it != d->values.constEnd()) {
- if ((*it).first.toLower() == lowercaseKey)
- return (*it).second;
- ++it;
- }
- return QString();
-}
-
-/*!
- Returns all the entries with the given \a key. If no entry
- has this \a key, an empty string list is returned.
-*/
-QStringList QHttpHeader::allValues(const QString &key) const
-{
- Q_D(const QHttpHeader);
- QString lowercaseKey = key.toLower();
- QStringList valueList;
- QList<QPair<QString, QString> >::ConstIterator it = d->values.constBegin();
- while (it != d->values.constEnd()) {
- if ((*it).first.toLower() == lowercaseKey)
- valueList.append((*it).second);
- ++it;
- }
- return valueList;
-}
-
-/*!
- Returns a list of the keys in the HTTP header.
-
- \sa hasKey()
-*/
-QStringList QHttpHeader::keys() const
-{
- Q_D(const QHttpHeader);
- QStringList keyList;
- QSet<QString> seenKeys;
- QList<QPair<QString, QString> >::ConstIterator it = d->values.constBegin();
- while (it != d->values.constEnd()) {
- const QString &key = (*it).first;
- QString lowercaseKey = key.toLower();
- if (!seenKeys.contains(lowercaseKey)) {
- keyList.append(key);
- seenKeys.insert(lowercaseKey);
- }
- ++it;
- }
- return keyList;
-}
-
-/*!
- Returns true if the HTTP header has an entry with the given \a
- key; otherwise returns false.
-
- \sa value() setValue() keys()
-*/
-bool QHttpHeader::hasKey(const QString &key) const
-{
- Q_D(const QHttpHeader);
- QString lowercaseKey = key.toLower();
- QList<QPair<QString, QString> >::ConstIterator it = d->values.constBegin();
- while (it != d->values.constEnd()) {
- if ((*it).first.toLower() == lowercaseKey)
- return true;
- ++it;
- }
- return false;
-}
-
-/*!
- Sets the value of the entry with the \a key to \a value.
-
- If no entry with \a key exists, a new entry with the given \a key
- and \a value is created. If an entry with the \a key already
- exists, the first value is discarded and replaced with the given
- \a value.
-
- \sa value() hasKey() removeValue()
-*/
-void QHttpHeader::setValue(const QString &key, const QString &value)
-{
- Q_D(QHttpHeader);
- QString lowercaseKey = key.toLower();
- QList<QPair<QString, QString> >::Iterator it = d->values.begin();
- while (it != d->values.end()) {
- if ((*it).first.toLower() == lowercaseKey) {
- (*it).second = value;
- return;
- }
- ++it;
- }
- // not found so add
- addValue(key, value);
-}
-
-/*!
- Sets the header entries to be the list of key value pairs in \a values.
-*/
-void QHttpHeader::setValues(const QList<QPair<QString, QString> > &values)
-{
- Q_D(QHttpHeader);
- d->values = values;
-}
-
-/*!
- Adds a new entry with the \a key and \a value.
-*/
-void QHttpHeader::addValue(const QString &key, const QString &value)
-{
- Q_D(QHttpHeader);
- d->values.append(qMakePair(key, value));
-}
-
-/*!
- Returns all the entries in the header.
-*/
-QList<QPair<QString, QString> > QHttpHeader::values() const
-{
- Q_D(const QHttpHeader);
- return d->values;
-}
-
-/*!
- Removes the entry with the key \a key from the HTTP header.
-
- \sa value() setValue()
-*/
-void QHttpHeader::removeValue(const QString &key)
-{
- Q_D(QHttpHeader);
- QString lowercaseKey = key.toLower();
- QList<QPair<QString, QString> >::Iterator it = d->values.begin();
- while (it != d->values.end()) {
- if ((*it).first.toLower() == lowercaseKey) {
- d->values.erase(it);
- return;
- }
- ++it;
- }
-}
-
-/*!
- Removes all the entries with the key \a key from the HTTP header.
-*/
-void QHttpHeader::removeAllValues(const QString &key)
-{
- Q_D(QHttpHeader);
- QString lowercaseKey = key.toLower();
- QList<QPair<QString, QString> >::Iterator it = d->values.begin();
- while (it != d->values.end()) {
- if ((*it).first.toLower() == lowercaseKey) {
- it = d->values.erase(it);
- continue;
- }
- ++it;
- }
-}
-
-/*! \internal
- Parses the single HTTP header line \a line which has the format
- key, colon, space, value, and adds key/value to the headers. The
- linenumber is \a number. Returns true if the line was successfully
- parsed and the key/value added; otherwise returns false.
-
- \sa parse()
-*/
-bool QHttpHeader::parseLine(const QString &line, int)
-{
- int i = line.indexOf(QLatin1Char(':'));
- if (i == -1)
- return false;
-
- addValue(line.left(i).trimmed(), line.mid(i + 1).trimmed());
-
- return true;
-}
-
-/*!
- Returns a string representation of the HTTP header.
-
- The string is suitable for use by the constructor that takes a
- QString. It consists of lines with the format: key, colon, space,
- value, "\r\n".
-*/
-QString QHttpHeader::toString() const
-{
- Q_D(const QHttpHeader);
- if (!isValid())
- return QLatin1String("");
-
- QString ret = QLatin1String("");
-
- QList<QPair<QString, QString> >::ConstIterator it = d->values.constBegin();
- while (it != d->values.constEnd()) {
- ret += (*it).first + QLatin1String(": ") + (*it).second + QLatin1String("\r\n");
- ++it;
- }
- return ret;
-}
-
-/*!
- Returns true if the header has an entry for the special HTTP
- header field \c content-length; otherwise returns false.
-
- \sa contentLength() setContentLength()
-*/
-bool QHttpHeader::hasContentLength() const
-{
- return hasKey(QLatin1String("content-length"));
-}
-
-/*!
- Returns the value of the special HTTP header field \c
- content-length.
-
- \sa setContentLength() hasContentLength()
-*/
-uint QHttpHeader::contentLength() const
-{
- return value(QLatin1String("content-length")).toUInt();
-}
-
-/*!
- Sets the value of the special HTTP header field \c content-length
- to \a len.
-
- \sa contentLength() hasContentLength()
-*/
-void QHttpHeader::setContentLength(int len)
-{
- setValue(QLatin1String("content-length"), QString::number(len));
-}
-
-/*!
- Returns true if the header has an entry for the special HTTP
- header field \c content-type; otherwise returns false.
-
- \sa contentType() setContentType()
-*/
-bool QHttpHeader::hasContentType() const
-{
- return hasKey(QLatin1String("content-type"));
-}
-
-/*!
- Returns the value of the special HTTP header field \c content-type.
-
- \sa setContentType() hasContentType()
-*/
-QString QHttpHeader::contentType() const
-{
- QString type = value(QLatin1String("content-type"));
- if (type.isEmpty())
- return QString();
-
- int pos = type.indexOf(QLatin1Char(';'));
- if (pos == -1)
- return type;
-
- return type.left(pos).trimmed();
-}
-
-/*!
- Sets the value of the special HTTP header field \c content-type to
- \a type.
-
- \sa contentType() hasContentType()
-*/
-void QHttpHeader::setContentType(const QString &type)
-{
- setValue(QLatin1String("content-type"), type);
-}
-
-class QHttpResponseHeaderPrivate : public QHttpHeaderPrivate
-{
- Q_DECLARE_PUBLIC(QHttpResponseHeader)
-public:
- int statCode;
- QString reasonPhr;
- int majVer;
- int minVer;
-};
-
-/****************************************************
- *
- * QHttpResponseHeader
- *
- ****************************************************/
-
-/*!
- \class QHttpResponseHeader
- \obsolete
- \brief The QHttpResponseHeader class contains response header information for HTTP.
-
- \ingroup network
- \inmodule QtNetwork
-
- HTTP responses have a status code that indicates the status of the
- response. This code is a 3-digit integer result code (for details
- see to RFC 1945). In addition to the status code, you can also
- specify a human-readable text that describes the reason for the
- code ("reason phrase"). This class allows you to get the status
- code and the reason phrase.
-
- \sa QHttpRequestHeader, {HTTP Example}
-*/
-
-/*!
- Constructs an empty HTTP response header.
-*/
-QHttpResponseHeader::QHttpResponseHeader()
- : QHttpHeader(*new QHttpResponseHeaderPrivate)
-{
- setValid(false);
-}
-
-/*!
- Constructs a copy of \a header.
-*/
-QHttpResponseHeader::QHttpResponseHeader(const QHttpResponseHeader &header)
- : QHttpHeader(*new QHttpResponseHeaderPrivate, header)
-{
- Q_D(QHttpResponseHeader);
- d->statCode = header.d_func()->statCode;
- d->reasonPhr = header.d_func()->reasonPhr;
- d->majVer = header.d_func()->majVer;
- d->minVer = header.d_func()->minVer;
-}
-
-/*!
- Copies the contents of \a header into this QHttpResponseHeader.
-*/
-QHttpResponseHeader &QHttpResponseHeader::operator=(const QHttpResponseHeader &header)
-{
- Q_D(QHttpResponseHeader);
- QHttpHeader::operator=(header);
- d->statCode = header.d_func()->statCode;
- d->reasonPhr = header.d_func()->reasonPhr;
- d->majVer = header.d_func()->majVer;
- d->minVer = header.d_func()->minVer;
- return *this;
-}
-
-/*!
- Constructs a HTTP response header from the string \a str. The
- string is parsed and the information is set. The \a str should
- consist of one or more "\r\n" delimited lines; the first line should be the
- status-line (format: HTTP-version, space, status-code, space,
- reason-phrase); each of remaining lines should have the format key, colon,
- space, value.
-*/
-QHttpResponseHeader::QHttpResponseHeader(const QString &str)
- : QHttpHeader(*new QHttpResponseHeaderPrivate)
-{
- parse(str);
-}
-
-/*!
- \since 4.1
-
- Constructs a QHttpResponseHeader, setting the status code to \a code, the
- reason phrase to \a text and the protocol-version to \a majorVer and \a
- minorVer.
-
- \sa statusCode() reasonPhrase() majorVersion() minorVersion()
-*/
-QHttpResponseHeader::QHttpResponseHeader(int code, const QString &text, int majorVer, int minorVer)
- : QHttpHeader(*new QHttpResponseHeaderPrivate)
-{
- setStatusLine(code, text, majorVer, minorVer);
-}
-
-/*!
- \since 4.1
-
- Sets the status code to \a code, the reason phrase to \a text and
- the protocol-version to \a majorVer and \a minorVer.
-
- \sa statusCode() reasonPhrase() majorVersion() minorVersion()
-*/
-void QHttpResponseHeader::setStatusLine(int code, const QString &text, int majorVer, int minorVer)
-{
- Q_D(QHttpResponseHeader);
- setValid(true);
- d->statCode = code;
- d->reasonPhr = text;
- d->majVer = majorVer;
- d->minVer = minorVer;
-}
-
-/*!
- Returns the status code of the HTTP response header.
-
- \sa reasonPhrase() majorVersion() minorVersion()
-*/
-int QHttpResponseHeader::statusCode() const
-{
- Q_D(const QHttpResponseHeader);
- return d->statCode;
-}
-
-/*!
- Returns the reason phrase of the HTTP response header.
-
- \sa statusCode() majorVersion() minorVersion()
-*/
-QString QHttpResponseHeader::reasonPhrase() const
-{
- Q_D(const QHttpResponseHeader);
- return d->reasonPhr;
-}
-
-/*!
- Returns the major protocol-version of the HTTP response header.
-
- \sa minorVersion() statusCode() reasonPhrase()
-*/
-int QHttpResponseHeader::majorVersion() const
-{
- Q_D(const QHttpResponseHeader);
- return d->majVer;
-}
-
-/*!
- Returns the minor protocol-version of the HTTP response header.
-
- \sa majorVersion() statusCode() reasonPhrase()
-*/
-int QHttpResponseHeader::minorVersion() const
-{
- Q_D(const QHttpResponseHeader);
- return d->minVer;
-}
-
-/*! \internal
-*/
-bool QHttpResponseHeader::parseLine(const QString &line, int number)
-{
- Q_D(QHttpResponseHeader);
- if (number != 0)
- return QHttpHeader::parseLine(line, number);
-
- QString l = line.simplified();
- if (l.length() < 10)
- return false;
-
- if (l.left(5) == QLatin1String("HTTP/") && l[5].isDigit() && l[6] == QLatin1Char('.') &&
- l[7].isDigit() && l[8] == QLatin1Char(' ') && l[9].isDigit()) {
- d->majVer = l[5].toLatin1() - '0';
- d->minVer = l[7].toLatin1() - '0';
-
- int pos = l.indexOf(QLatin1Char(' '), 9);
- if (pos != -1) {
- d->reasonPhr = l.mid(pos + 1);
- d->statCode = l.mid(9, pos - 9).toInt();
- } else {
- d->statCode = l.mid(9).toInt();
- d->reasonPhr.clear();
- }
- } else {
- return false;
- }
-
- return true;
-}
-
-/*! \reimp
-*/
-QString QHttpResponseHeader::toString() const
-{
- Q_D(const QHttpResponseHeader);
- QString ret(QLatin1String("HTTP/%1.%2 %3 %4\r\n%5\r\n"));
- return ret.arg(d->majVer).arg(d->minVer).arg(d->statCode).arg(d->reasonPhr).arg(QHttpHeader::toString());
-}
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/src/network/access/qhttpheader_p.h b/src/network/access/qhttpheader_p.h
deleted file mode 100644
index fec7da4f92..0000000000
--- a/src/network/access/qhttpheader_p.h
+++ /dev/null
@@ -1,147 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtNetwork 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$
-**
-****************************************************************************/
-
-#ifndef QHTTP_H
-#define QHTTP_H
-
-#include <QtCore/qobject.h>
-#include <QtCore/qstringlist.h>
-#include <QtCore/qmap.h>
-#include <QtCore/qpair.h>
-#include <QtCore/qscopedpointer.h>
-
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Network)
-
-#ifndef QT_NO_HTTP
-
-#if 0
-#pragma qt_class(QHttp)
-#endif
-
-class QHttpHeaderPrivate;
-class QHttpHeader
-{
-public:
- QHttpHeader();
- QHttpHeader(const QHttpHeader &header);
- QHttpHeader(const QString &str);
- virtual ~QHttpHeader();
-
- QHttpHeader &operator=(const QHttpHeader &h);
-
- void setValue(const QString &key, const QString &value);
- void setValues(const QList<QPair<QString, QString> > &values);
- void addValue(const QString &key, const QString &value);
- QList<QPair<QString, QString> > values() const;
- bool hasKey(const QString &key) const;
- QStringList keys() const;
- QString value(const QString &key) const;
- QStringList allValues(const QString &key) const;
- void removeValue(const QString &key);
- void removeAllValues(const QString &key);
-
- // ### Qt 5: change to qint64
- bool hasContentLength() const;
- uint contentLength() const;
- void setContentLength(int len);
-
- bool hasContentType() const;
- QString contentType() const;
- void setContentType(const QString &type);
-
- virtual QString toString() const;
- bool isValid() const;
-
- virtual int majorVersion() const = 0;
- virtual int minorVersion() const = 0;
-
-protected:
- virtual bool parseLine(const QString &line, int number);
- bool parse(const QString &str);
- void setValid(bool);
-
- QHttpHeader(QHttpHeaderPrivate &dd, const QString &str = QString());
- QHttpHeader(QHttpHeaderPrivate &dd, const QHttpHeader &header);
- QScopedPointer<QHttpHeaderPrivate> d_ptr;
-
-private:
- Q_DECLARE_PRIVATE(QHttpHeader)
-};
-
-class QHttpResponseHeaderPrivate;
-class QHttpResponseHeader : public QHttpHeader
-{
-public:
- QHttpResponseHeader();
- QHttpResponseHeader(const QHttpResponseHeader &header);
- QHttpResponseHeader(const QString &str);
- QHttpResponseHeader(int code, const QString &text = QString(), int majorVer = 1, int minorVer = 1);
- QHttpResponseHeader &operator=(const QHttpResponseHeader &header);
-
- void setStatusLine(int code, const QString &text = QString(), int majorVer = 1, int minorVer = 1);
-
- int statusCode() const;
- QString reasonPhrase() const;
-
- int majorVersion() const;
- int minorVersion() const;
-
- QString toString() const;
-
-protected:
- bool parseLine(const QString &line, int number);
-
-private:
- Q_DECLARE_PRIVATE(QHttpResponseHeader)
- friend class QHttpPrivate;
-};
-
-#endif // QT_NO_HTTP
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif // QHTTP_H
diff --git a/src/network/access/qhttpmultipart.cpp b/src/network/access/qhttpmultipart.cpp
index 6de7a807e4..e24c0606ef 100644
--- a/src/network/access/qhttpmultipart.cpp
+++ b/src/network/access/qhttpmultipart.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qhttpmultipart.h b/src/network/access/qhttpmultipart.h
index 317b068e3d..c25beb7ae3 100644
--- a/src/network/access/qhttpmultipart.h
+++ b/src/network/access/qhttpmultipart.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
class QHttpPartPrivate;
class QHttpMultiPart;
diff --git a/src/network/access/qhttpmultipart_p.h b/src/network/access/qhttpmultipart_p.h
index 0ab2fa1d7f..14bf50ec03 100644
--- a/src/network/access/qhttpmultipart_p.h
+++ b/src/network/access/qhttpmultipart_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qhttpnetworkconnection.cpp b/src/network/access/qhttpnetworkconnection.cpp
index 104a21f591..b49bda04ec 100644
--- a/src/network/access/qhttpnetworkconnection.cpp
+++ b/src/network/access/qhttpnetworkconnection.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qhttpnetworkconnection_p.h b/src/network/access/qhttpnetworkconnection_p.h
index 8ce9bf24fe..41ee11db51 100644
--- a/src/network/access/qhttpnetworkconnection_p.h
+++ b/src/network/access/qhttpnetworkconnection_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qhttpnetworkconnectionchannel.cpp b/src/network/access/qhttpnetworkconnectionchannel.cpp
index 3acfe54ef7..70368d5e50 100644
--- a/src/network/access/qhttpnetworkconnectionchannel.cpp
+++ b/src/network/access/qhttpnetworkconnectionchannel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qhttpnetworkconnectionchannel_p.h b/src/network/access/qhttpnetworkconnectionchannel_p.h
index d5a0925f7d..1198ec9941 100644
--- a/src/network/access/qhttpnetworkconnectionchannel_p.h
+++ b/src/network/access/qhttpnetworkconnectionchannel_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qhttpnetworkheader.cpp b/src/network/access/qhttpnetworkheader.cpp
index 531afe92e0..9c5c8b063f 100644
--- a/src/network/access/qhttpnetworkheader.cpp
+++ b/src/network/access/qhttpnetworkheader.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qhttpnetworkheader_p.h b/src/network/access/qhttpnetworkheader_p.h
index 00393b5e92..1748514294 100644
--- a/src/network/access/qhttpnetworkheader_p.h
+++ b/src/network/access/qhttpnetworkheader_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qhttpnetworkreply.cpp b/src/network/access/qhttpnetworkreply.cpp
index a9ba5d2b24..8206cfaab7 100644
--- a/src/network/access/qhttpnetworkreply.cpp
+++ b/src/network/access/qhttpnetworkreply.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qhttpnetworkreply_p.h b/src/network/access/qhttpnetworkreply_p.h
index 1bb0832d19..97400d3b15 100644
--- a/src/network/access/qhttpnetworkreply_p.h
+++ b/src/network/access/qhttpnetworkreply_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -156,6 +156,7 @@ Q_SIGNALS:
void authenticationRequired(const QHttpNetworkRequest &request, QAuthenticator *authenticator);
private:
Q_DECLARE_PRIVATE(QHttpNetworkReply)
+ friend class QHttpSocketEngine;
friend class QHttpNetworkConnection;
friend class QHttpNetworkConnectionPrivate;
friend class QHttpNetworkConnectionChannel;
diff --git a/src/network/access/qhttpnetworkrequest.cpp b/src/network/access/qhttpnetworkrequest.cpp
index e39faaeaa8..f32251935b 100644
--- a/src/network/access/qhttpnetworkrequest.cpp
+++ b/src/network/access/qhttpnetworkrequest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qhttpnetworkrequest_p.h b/src/network/access/qhttpnetworkrequest_p.h
index 71e09eba06..949d98484f 100644
--- a/src/network/access/qhttpnetworkrequest_p.h
+++ b/src/network/access/qhttpnetworkrequest_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qhttpthreaddelegate.cpp b/src/network/access/qhttpthreaddelegate.cpp
index 39a7e8ed08..5cf153325b 100644
--- a/src/network/access/qhttpthreaddelegate.cpp
+++ b/src/network/access/qhttpthreaddelegate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qhttpthreaddelegate_p.h b/src/network/access/qhttpthreaddelegate_p.h
index 366d3bcc60..24affdd8de 100644
--- a/src/network/access/qhttpthreaddelegate_p.h
+++ b/src/network/access/qhttpthreaddelegate_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkaccessauthenticationmanager.cpp b/src/network/access/qnetworkaccessauthenticationmanager.cpp
index 30e3174f25..85e7f65ba2 100644
--- a/src/network/access/qnetworkaccessauthenticationmanager.cpp
+++ b/src/network/access/qnetworkaccessauthenticationmanager.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkaccessauthenticationmanager_p.h b/src/network/access/qnetworkaccessauthenticationmanager_p.h
index 7e7be8ca8a..92f5fcb5b4 100644
--- a/src/network/access/qnetworkaccessauthenticationmanager_p.h
+++ b/src/network/access/qnetworkaccessauthenticationmanager_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkaccessbackend.cpp b/src/network/access/qnetworkaccessbackend.cpp
index 6647c58f8d..d7b6b78e22 100644
--- a/src/network/access/qnetworkaccessbackend.cpp
+++ b/src/network/access/qnetworkaccessbackend.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkaccessbackend_p.h b/src/network/access/qnetworkaccessbackend_p.h
index f9563da4a7..f4c6bb65ac 100644
--- a/src/network/access/qnetworkaccessbackend_p.h
+++ b/src/network/access/qnetworkaccessbackend_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkaccesscache.cpp b/src/network/access/qnetworkaccesscache.cpp
index 2594e53949..bd3cee530f 100644
--- a/src/network/access/qnetworkaccesscache.cpp
+++ b/src/network/access/qnetworkaccesscache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkaccesscache_p.h b/src/network/access/qnetworkaccesscache_p.h
index 813ba3c35f..dfe33b8db7 100644
--- a/src/network/access/qnetworkaccesscache_p.h
+++ b/src/network/access/qnetworkaccesscache_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkaccesscachebackend.cpp b/src/network/access/qnetworkaccesscachebackend.cpp
index baf6292124..6abe42f795 100644
--- a/src/network/access/qnetworkaccesscachebackend.cpp
+++ b/src/network/access/qnetworkaccesscachebackend.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkaccesscachebackend_p.h b/src/network/access/qnetworkaccesscachebackend_p.h
index 5444703793..112a9ccfa9 100644
--- a/src/network/access/qnetworkaccesscachebackend_p.h
+++ b/src/network/access/qnetworkaccesscachebackend_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkaccessdebugpipebackend.cpp b/src/network/access/qnetworkaccessdebugpipebackend.cpp
index 678d6e404e..5a4cd7b20d 100644
--- a/src/network/access/qnetworkaccessdebugpipebackend.cpp
+++ b/src/network/access/qnetworkaccessdebugpipebackend.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkaccessdebugpipebackend_p.h b/src/network/access/qnetworkaccessdebugpipebackend_p.h
index 411c38b3ba..edac78383a 100644
--- a/src/network/access/qnetworkaccessdebugpipebackend_p.h
+++ b/src/network/access/qnetworkaccessdebugpipebackend_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkaccessfilebackend.cpp b/src/network/access/qnetworkaccessfilebackend.cpp
index 0080e23a8f..dbe964ac8d 100644
--- a/src/network/access/qnetworkaccessfilebackend.cpp
+++ b/src/network/access/qnetworkaccessfilebackend.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkaccessfilebackend_p.h b/src/network/access/qnetworkaccessfilebackend_p.h
index 2fbf806851..4b25a2c651 100644
--- a/src/network/access/qnetworkaccessfilebackend_p.h
+++ b/src/network/access/qnetworkaccessfilebackend_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkaccessftpbackend.cpp b/src/network/access/qnetworkaccessftpbackend.cpp
index 7b7ebb5e46..98967e730e 100644
--- a/src/network/access/qnetworkaccessftpbackend.cpp
+++ b/src/network/access/qnetworkaccessftpbackend.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkaccessftpbackend_p.h b/src/network/access/qnetworkaccessftpbackend_p.h
index 7338121493..6105be9816 100644
--- a/src/network/access/qnetworkaccessftpbackend_p.h
+++ b/src/network/access/qnetworkaccessftpbackend_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkaccessmanager.cpp b/src/network/access/qnetworkaccessmanager.cpp
index 3a80b9ed92..8537502116 100644
--- a/src/network/access/qnetworkaccessmanager.cpp
+++ b/src/network/access/qnetworkaccessmanager.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -985,7 +985,6 @@ QNetworkReply *QNetworkAccessManager::createRequest(QNetworkAccessManager::Opera
#endif // QT_NO_HTTP
// first step: create the reply
- QUrl url = request.url();
QNetworkReplyImpl *reply = new QNetworkReplyImpl(this);
#ifndef QT_NO_BEARERMANAGEMENT
if (!isLocalFile) {
diff --git a/src/network/access/qnetworkaccessmanager.h b/src/network/access/qnetworkaccessmanager.h
index 72fd86c5a5..fdbcf01dad 100644
--- a/src/network/access/qnetworkaccessmanager.h
+++ b/src/network/access/qnetworkaccessmanager.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
class QIODevice;
class QAbstractNetworkCache;
diff --git a/src/network/access/qnetworkaccessmanager_p.h b/src/network/access/qnetworkaccessmanager_p.h
index bc8df575a0..0733756be4 100644
--- a/src/network/access/qnetworkaccessmanager_p.h
+++ b/src/network/access/qnetworkaccessmanager_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkcookie.cpp b/src/network/access/qnetworkcookie.cpp
index a5c4fb516c..c987c50017 100644
--- a/src/network/access/qnetworkcookie.cpp
+++ b/src/network/access/qnetworkcookie.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -156,7 +156,7 @@ QNetworkCookie &QNetworkCookie::operator=(const QNetworkCookie &other)
However, in some contexts, two cookies of the same name could be
considered equal.
- \sa operator!=()
+ \sa operator!=(), hasSameIdentifier()
*/
bool QNetworkCookie::operator==(const QNetworkCookie &other) const
{
@@ -172,6 +172,17 @@ bool QNetworkCookie::operator==(const QNetworkCookie &other) const
}
/*!
+ Returns true if this cookie has the same identifier tuple as \a other.
+ The identifier tuple is composed of the name, domain and path.
+
+ \sa operator==()
+*/
+bool QNetworkCookie::hasSameIdentifier(const QNetworkCookie &other) const
+{
+ return d->name == other.d->name && d->domain == other.d->domain && d->path == other.d->path;
+}
+
+/*!
Returns true if the "secure" option was specified in the cookie
string, false otherwise.
@@ -1042,6 +1053,30 @@ QList<QNetworkCookie> QNetworkCookiePrivate::parseSetCookieHeaderLine(const QByt
return result;
}
+/*!
+ This functions normalizes the path and domain of the cookie if they were previously empty.
+*/
+void QNetworkCookie::normalize(const QUrl &url)
+{
+ // don't do path checking. See http://bugreports.qt.nokia.com/browse/QTBUG-5815
+ if (d->path.isEmpty()) {
+ QString pathAndFileName = url.path();
+ QString defaultPath = pathAndFileName.left(pathAndFileName.lastIndexOf(QLatin1Char('/'))+1);
+ if (defaultPath.isEmpty())
+ defaultPath = QLatin1Char('/');
+ d->path = defaultPath;
+ }
+
+ if (d->domain.isEmpty())
+ d->domain = url.host();
+ else if (!d->domain.startsWith(QLatin1Char('.')))
+ // Ensure the domain starts with a dot if its field was not empty
+ // in the HTTP header. There are some servers that forget the
+ // leading dot and this is actually forbidden according to RFC 2109,
+ // but all browsers accept it anyway so we do that as well.
+ d->domain.prepend(QLatin1Char('.'));
+}
+
#ifndef QT_NO_DEBUG_STREAM
QDebug operator<<(QDebug s, const QNetworkCookie &cookie)
{
diff --git a/src/network/access/qnetworkcookie.h b/src/network/access/qnetworkcookie.h
index fd9c825ddc..32307e305e 100644
--- a/src/network/access/qnetworkcookie.h
+++ b/src/network/access/qnetworkcookie.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
class QByteArray;
class QDateTime;
@@ -98,6 +97,9 @@ public:
QByteArray toRawForm(RawForm form = Full) const;
+ bool hasSameIdentifier(const QNetworkCookie &other) const;
+ void normalize(const QUrl &url);
+
static QList<QNetworkCookie> parseCookies(const QByteArray &cookieString);
private:
diff --git a/src/network/access/qnetworkcookie_p.h b/src/network/access/qnetworkcookie_p.h
index 7e45219fce..2d74fad7c9 100644
--- a/src/network/access/qnetworkcookie_p.h
+++ b/src/network/access/qnetworkcookie_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkcookiejar.cpp b/src/network/access/qnetworkcookiejar.cpp
index 54c2ccfaba..4136043e2e 100644
--- a/src/network/access/qnetworkcookiejar.cpp
+++ b/src/network/access/qnetworkcookiejar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -155,8 +155,7 @@ static inline bool isParentDomain(QString domain, QString reference)
/*!
Adds the cookies in the list \a cookieList to this cookie
- jar. Default values for path and domain are taken from the \a
- url object.
+ jar. Before being inserted cookies are normalized.
Returns true if one or more cookies are set for \a url,
otherwise false.
@@ -173,72 +172,18 @@ static inline bool isParentDomain(QString domain, QString reference)
size. Reimplement this function to discard older cookies to create
room for new ones.
- \sa cookiesForUrl(), QNetworkAccessManager::setCookieJar()
+ \sa cookiesForUrl(), QNetworkAccessManager::setCookieJar(), QNetworkCookie::normalize()
*/
bool QNetworkCookieJar::setCookiesFromUrl(const QList<QNetworkCookie> &cookieList,
const QUrl &url)
{
- Q_D(QNetworkCookieJar);
- QString defaultDomain = url.host();
- QString pathAndFileName = url.path();
- QString defaultPath = pathAndFileName.left(pathAndFileName.lastIndexOf(QLatin1Char('/'))+1);
- if (defaultPath.isEmpty())
- defaultPath = QLatin1Char('/');
-
- int added = 0;
- QDateTime now = QDateTime::currentDateTime();
+ bool added = false;
foreach (QNetworkCookie cookie, cookieList) {
- bool isDeletion = !cookie.isSessionCookie() &&
- cookie.expirationDate() < now;
-
- // validate the cookie & set the defaults if unset
- if (cookie.path().isEmpty())
- cookie.setPath(defaultPath);
- // don't do path checking. See http://bugreports.qt.nokia.com/browse/QTBUG-5815
-// else if (!isParentPath(pathAndFileName, cookie.path())) {
-// continue; // not accepted
-// }
- if (cookie.domain().isEmpty()) {
- cookie.setDomain(defaultDomain);
- } else {
- // Ensure the domain starts with a dot if its field was not empty
- // in the HTTP header. There are some servers that forget the
- // leading dot and this is actually forbidden according to RFC 2109,
- // but all browsers accept it anyway so we do that as well.
- if (!cookie.domain().startsWith(QLatin1Char('.')))
- cookie.setDomain(QLatin1Char('.') + cookie.domain());
-
- QString domain = cookie.domain();
- if (!(isParentDomain(domain, defaultDomain)
- || isParentDomain(defaultDomain, domain)))
- continue; // not accepted
-
- // the check for effective TLDs makes the "embedded dot" rule from RFC 2109 section 4.3.2
- // redundant; the "leading dot" rule has been relaxed anyway, see above
- // we remove the leading dot for this check
- if (qIsEffectiveTLD(domain.remove(0, 1)))
- continue; // not accepted
- }
-
- QList<QNetworkCookie>::Iterator it = d->allCookies.begin(),
- end = d->allCookies.end();
- for ( ; it != end; ++it)
- // does this cookie already exist?
- if (cookie.name() == it->name() &&
- cookie.domain() == it->domain() &&
- cookie.path() == it->path()) {
- // found a match
- d->allCookies.erase(it);
- break;
- }
-
- // did not find a match
- if (!isDeletion) {
- d->allCookies += cookie;
- ++added;
- }
+ cookie.normalize(url);
+ if (validateCookie(cookie, url) && insertCookie(cookie))
+ added = true;
}
- return (added > 0);
+ return added;
}
/*!
@@ -304,4 +249,81 @@ QList<QNetworkCookie> QNetworkCookieJar::cookiesForUrl(const QUrl &url) const
return result;
}
+/*!
+ Adds \a cookie to this cookie jar.
+
+ Returns true if \a cookie was added, false otherwise.
+
+ If a cookie with the same identifier already exists in the
+ cookie jar, it will be overridden.
+*/
+bool QNetworkCookieJar::insertCookie(const QNetworkCookie &cookie)
+{
+ Q_D(QNetworkCookieJar);
+ QDateTime now = QDateTime::currentDateTime();
+ bool isDeletion = !cookie.isSessionCookie() &&
+ cookie.expirationDate() < now;
+
+ deleteCookie(cookie);
+
+ if (!isDeletion) {
+ d->allCookies += cookie;
+ return true;
+ }
+ return false;
+}
+
+/*!
+ If a cookie with the same identifier as \a cookie exists in this cookie jar
+ it will be updated. This function uses insertCookie().
+
+ Returns true if \a cookie was updated, false if no cookie in the jar matches
+ the identifier of \a cookie.
+
+ \sa QNetworkCookie::hasSameIdentifier()
+*/
+bool QNetworkCookieJar::updateCookie(const QNetworkCookie &cookie)
+{
+ if (deleteCookie(cookie))
+ return insertCookie(cookie);
+ return false;
+}
+
+/*!
+ Deletes from cookie jar the cookie found to have the same identifier as \a cookie.
+
+ Returns true if a cookie was deleted, false otherwise.
+
+ \sa QNetworkCookie::hasSameIdentifier()
+*/
+bool QNetworkCookieJar::deleteCookie(const QNetworkCookie &cookie)
+{
+ Q_D(QNetworkCookieJar);
+ QList<QNetworkCookie>::Iterator it;
+ for (it = d->allCookies.begin(); it != d->allCookies.end(); it++)
+ if (it->hasSameIdentifier(cookie)) {
+ d->allCookies.erase(it);
+ return true;
+ }
+ return false;
+}
+
+/*!
+ Returns true if the domain and path of \a cookie are valid, false otherwise.
+*/
+bool QNetworkCookieJar::validateCookie(const QNetworkCookie &cookie, const QUrl &url) const
+{
+ QString domain = cookie.domain();
+ if (!(isParentDomain(domain, url.host()) || isParentDomain(url.host(), domain)))
+ return false; // not accepted
+
+ // the check for effective TLDs makes the "embedded dot" rule from RFC 2109 section 4.3.2
+ // redundant; the "leading dot" rule has been relaxed anyway, see QNetworkCookie::normalize()
+ // we remove the leading dot for this check if it's present
+ if (qIsEffectiveTLD(domain.startsWith('.') ? domain.remove(0, 1) : domain))
+ return false; // not accepted
+
+ return true;
+}
+
QT_END_NAMESPACE
diff --git a/src/network/access/qnetworkcookiejar.h b/src/network/access/qnetworkcookiejar.h
index 4ff27d8cf0..513fb3b66c 100644
--- a/src/network/access/qnetworkcookiejar.h
+++ b/src/network/access/qnetworkcookiejar.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
class QNetworkCookie;
@@ -64,9 +63,14 @@ public:
virtual QList<QNetworkCookie> cookiesForUrl(const QUrl &url) const;
virtual bool setCookiesFromUrl(const QList<QNetworkCookie> &cookieList, const QUrl &url);
+ virtual bool insertCookie(const QNetworkCookie &cookie);
+ virtual bool updateCookie(const QNetworkCookie &cookie);
+ virtual bool deleteCookie(const QNetworkCookie &cookie);
+
protected:
QList<QNetworkCookie> allCookies() const;
void setAllCookies(const QList<QNetworkCookie> &cookieList);
+ virtual bool validateCookie(const QNetworkCookie &cookie, const QUrl &url) const;
private:
Q_DECLARE_PRIVATE(QNetworkCookieJar)
diff --git a/src/network/access/qnetworkcookiejar_p.h b/src/network/access/qnetworkcookiejar_p.h
index 32fdecdb50..a3caa1d03d 100644
--- a/src/network/access/qnetworkcookiejar_p.h
+++ b/src/network/access/qnetworkcookiejar_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkdiskcache.cpp b/src/network/access/qnetworkdiskcache.cpp
index 8dd2033a35..bcaf81a6a0 100644
--- a/src/network/access/qnetworkdiskcache.cpp
+++ b/src/network/access/qnetworkdiskcache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkdiskcache.h b/src/network/access/qnetworkdiskcache.h
index b8f1de5930..20da4cac8a 100644
--- a/src/network/access/qnetworkdiskcache.h
+++ b/src/network/access/qnetworkdiskcache.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
#ifndef QT_NO_NETWORKDISKCACHE
diff --git a/src/network/access/qnetworkdiskcache_p.h b/src/network/access/qnetworkdiskcache_p.h
index d8f386e9eb..eb2b474964 100644
--- a/src/network/access/qnetworkdiskcache_p.h
+++ b/src/network/access/qnetworkdiskcache_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkreply.cpp b/src/network/access/qnetworkreply.cpp
index db62f2935a..123418dbcd 100644
--- a/src/network/access/qnetworkreply.cpp
+++ b/src/network/access/qnetworkreply.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkreply.h b/src/network/access/qnetworkreply.h
index 492336bbf6..89ccc2fb92 100644
--- a/src/network/access/qnetworkreply.h
+++ b/src/network/access/qnetworkreply.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
class QUrl;
class QVariant;
diff --git a/src/network/access/qnetworkreply_p.h b/src/network/access/qnetworkreply_p.h
index b725a11520..9c838a5539 100644
--- a/src/network/access/qnetworkreply_p.h
+++ b/src/network/access/qnetworkreply_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkreplydataimpl.cpp b/src/network/access/qnetworkreplydataimpl.cpp
index 22f40b2420..ab2c97b653 100644
--- a/src/network/access/qnetworkreplydataimpl.cpp
+++ b/src/network/access/qnetworkreplydataimpl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkreplydataimpl_p.h b/src/network/access/qnetworkreplydataimpl_p.h
index 0b47bbbb34..10cee7231b 100644
--- a/src/network/access/qnetworkreplydataimpl_p.h
+++ b/src/network/access/qnetworkreplydataimpl_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkreplyfileimpl.cpp b/src/network/access/qnetworkreplyfileimpl.cpp
index 0b4c89987c..6b5dba2bfa 100644
--- a/src/network/access/qnetworkreplyfileimpl.cpp
+++ b/src/network/access/qnetworkreplyfileimpl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkreplyfileimpl_p.h b/src/network/access/qnetworkreplyfileimpl_p.h
index c097fedb68..c7c2bba671 100644
--- a/src/network/access/qnetworkreplyfileimpl_p.h
+++ b/src/network/access/qnetworkreplyfileimpl_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkreplyhttpimpl.cpp b/src/network/access/qnetworkreplyhttpimpl.cpp
index 2c1ad95ea8..71bc03e8d0 100644
--- a/src/network/access/qnetworkreplyhttpimpl.cpp
+++ b/src/network/access/qnetworkreplyhttpimpl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1499,10 +1499,11 @@ bool QNetworkReplyHttpImplPrivate::start()
{
#ifndef QT_NO_BEARERMANAGEMENT
if (!managerPrivate->networkSession) {
+#endif
postRequest();
return true;
+#ifndef QT_NO_BEARERMANAGEMENT
}
-#endif
// This is not ideal.
const QString host = url.host();
@@ -1513,15 +1514,14 @@ bool QNetworkReplyHttpImplPrivate::start()
return true;
}
-#ifndef QT_NO_BEARERMANAGEMENT
if (managerPrivate->networkSession->isOpen() &&
managerPrivate->networkSession->state() == QNetworkSession::Connected) {
postRequest();
return true;
}
-#endif
return false;
+#endif
}
void QNetworkReplyHttpImplPrivate::_q_startOperation()
@@ -1533,13 +1533,12 @@ void QNetworkReplyHttpImplPrivate::_q_startOperation()
}
state = Working;
+ if (!start()) {
#ifndef QT_NO_BEARERMANAGEMENT
- if (!start()) { // ### we should call that method even if bearer is not used
// backend failed to start because the session state is not Connected.
// QNetworkAccessManager will call reply->backend->start() again for us when the session
// state changes.
state = WaitingForSession;
-
QNetworkSession *session = managerPrivate->networkSession.data();
if (session) {
@@ -1553,10 +1552,9 @@ void QNetworkReplyHttpImplPrivate::_q_startOperation()
} else {
qWarning("Backend is waiting for QNetworkSession to connect, but there is none!");
}
-
+#endif
return;
}
-#endif
if (synchronous) {
state = Finished;
@@ -1964,7 +1962,7 @@ void QNetworkReplyHttpImplPrivate::setCachingEnabled(bool enable)
if (enable) {
if (bytesDownloaded) {
- qDebug("setCachingEnabled: %d bytesDownloaded", bytesDownloaded);
+ qDebug("setCachingEnabled: %lld bytesDownloaded", bytesDownloaded);
// refuse to enable in this case
qCritical("QNetworkReplyImpl: backend error: caching was enabled after some bytes had been written");
return;
diff --git a/src/network/access/qnetworkreplyhttpimpl_p.h b/src/network/access/qnetworkreplyhttpimpl_p.h
index 432b769add..b0a8e59b94 100644
--- a/src/network/access/qnetworkreplyhttpimpl_p.h
+++ b/src/network/access/qnetworkreplyhttpimpl_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkreplyimpl.cpp b/src/network/access/qnetworkreplyimpl.cpp
index 1f9efa6ed9..f97d98ec5a 100644
--- a/src/network/access/qnetworkreplyimpl.cpp
+++ b/src/network/access/qnetworkreplyimpl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkreplyimpl_p.h b/src/network/access/qnetworkreplyimpl_p.h
index 0b7664acc6..39c3b9ca2e 100644
--- a/src/network/access/qnetworkreplyimpl_p.h
+++ b/src/network/access/qnetworkreplyimpl_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkrequest.cpp b/src/network/access/qnetworkrequest.cpp
index c909ce2fea..b9c149e5d8 100644
--- a/src/network/access/qnetworkrequest.cpp
+++ b/src/network/access/qnetworkrequest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/access/qnetworkrequest.h b/src/network/access/qnetworkrequest.h
index 66bfcf5942..1eb0fff045 100644
--- a/src/network/access/qnetworkrequest.h
+++ b/src/network/access/qnetworkrequest.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
class QSslConfiguration;
diff --git a/src/network/access/qnetworkrequest_p.h b/src/network/access/qnetworkrequest_p.h
index eb61f092f1..13861cc80e 100644
--- a/src/network/access/qnetworkrequest_p.h
+++ b/src/network/access/qnetworkrequest_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/bearer/qbearerengine.cpp b/src/network/bearer/qbearerengine.cpp
index 5cf52af744..99d885f2c2 100644
--- a/src/network/bearer/qbearerengine.cpp
+++ b/src/network/bearer/qbearerengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/bearer/qbearerengine_p.h b/src/network/bearer/qbearerengine_p.h
index 42481fcd15..aa8117139c 100644
--- a/src/network/bearer/qbearerengine_p.h
+++ b/src/network/bearer/qbearerengine_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/bearer/qbearerplugin.cpp b/src/network/bearer/qbearerplugin.cpp
index 02f6e36807..f022f7b838 100644
--- a/src/network/bearer/qbearerplugin.cpp
+++ b/src/network/bearer/qbearerplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/bearer/qbearerplugin_p.h b/src/network/bearer/qbearerplugin_p.h
index 6533cebf4f..b89d17d235 100644
--- a/src/network/bearer/qbearerplugin_p.h
+++ b/src/network/bearer/qbearerplugin_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -64,14 +64,13 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
struct Q_NETWORK_EXPORT QBearerEngineFactoryInterface : public QFactoryInterface
{
virtual QBearerEngine *create(const QString &key) const = 0;
};
-#define QBearerEngineFactoryInterface_iid "com.trolltech.Qt.QBearerEngineFactoryInterface"
+#define QBearerEngineFactoryInterface_iid "org.qt-project.Qt.QBearerEngineFactoryInterface"
Q_DECLARE_INTERFACE(QBearerEngineFactoryInterface, QBearerEngineFactoryInterface_iid)
class Q_NETWORK_EXPORT QBearerEnginePlugin : public QObject, public QBearerEngineFactoryInterface
diff --git a/src/network/bearer/qnetworkconfigmanager.cpp b/src/network/bearer/qnetworkconfigmanager.cpp
index 1a96ba77a9..511bec8f23 100644
--- a/src/network/bearer/qnetworkconfigmanager.cpp
+++ b/src/network/bearer/qnetworkconfigmanager.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,13 +55,13 @@
QT_BEGIN_NAMESPACE
static QBasicAtomicPointer<QNetworkConfigurationManagerPrivate> connManager_ptr;
-Q_GLOBAL_STATIC(QMutex, connManager_mutex)
static void connManager_cleanup()
{
// this is not atomic or thread-safe!
- delete connManager_ptr.load();
- connManager_ptr.store(0);
+ QNetworkConfigurationManagerPrivate *cmp = connManager_ptr.fetchAndStoreAcquire(0);
+ if (cmp)
+ cmp->cleanup();
}
void QNetworkConfigurationManagerPrivate::addPostRoutine()
@@ -69,23 +69,24 @@ void QNetworkConfigurationManagerPrivate::addPostRoutine()
qAddPostRoutine(connManager_cleanup);
}
-static QNetworkConfigurationManagerPrivate *connManager()
+QNetworkConfigurationManagerPrivate *qNetworkConfigurationManagerPrivate()
{
QNetworkConfigurationManagerPrivate *ptr = connManager_ptr.loadAcquire();
if (!ptr) {
- QMutexLocker locker(connManager_mutex());
+ static QBasicMutex connManager_mutex;
+ QMutexLocker locker(&connManager_mutex);
if (!(ptr = connManager_ptr.loadAcquire())) {
ptr = new QNetworkConfigurationManagerPrivate;
if (QCoreApplicationPrivate::mainThread() == QThread::currentThread()) {
// right thread or no main thread yet
ptr->addPostRoutine();
- ptr->updateConfigurations();
+ ptr->initialize();
} else {
// wrong thread, we need to make the main thread do this
QObject *obj = new QObject;
QObject::connect(obj, SIGNAL(destroyed()), ptr, SLOT(addPostRoutine()), Qt::DirectConnection);
- ptr->updateConfigurations(); // this moves us to the main thread
+ ptr->initialize(); // this moves us to the right thread
obj->moveToThread(QCoreApplicationPrivate::mainThread());
obj->deleteLater();
}
@@ -96,11 +97,6 @@ static QNetworkConfigurationManagerPrivate *connManager()
return ptr;
}
-QNetworkConfigurationManagerPrivate *qNetworkConfigurationManagerPrivate()
-{
- return connManager();
-}
-
/*!
\class QNetworkConfigurationManager
@@ -246,7 +242,7 @@ QNetworkConfigurationManager::QNetworkConfigurationManager(QObject *parent)
*/
QNetworkConfigurationManager::~QNetworkConfigurationManager()
{
- QNetworkConfigurationManagerPrivate *priv = connManager();
+ QNetworkConfigurationManagerPrivate *priv = qNetworkConfigurationManagerPrivate();
if (priv)
priv->disablePolling();
}
@@ -263,7 +259,7 @@ QNetworkConfigurationManager::~QNetworkConfigurationManager()
*/
QNetworkConfiguration QNetworkConfigurationManager::defaultConfiguration() const
{
- QNetworkConfigurationManagerPrivate *priv = connManager();
+ QNetworkConfigurationManagerPrivate *priv = qNetworkConfigurationManagerPrivate();
if (priv)
return priv->defaultConfiguration();
@@ -297,7 +293,7 @@ QNetworkConfiguration QNetworkConfigurationManager::defaultConfiguration() const
*/
QList<QNetworkConfiguration> QNetworkConfigurationManager::allConfigurations(QNetworkConfiguration::StateFlags filter) const
{
- QNetworkConfigurationManagerPrivate *priv = connManager();
+ QNetworkConfigurationManagerPrivate *priv = qNetworkConfigurationManagerPrivate();
if (priv)
return priv->allConfigurations(filter);
@@ -312,7 +308,7 @@ QList<QNetworkConfiguration> QNetworkConfigurationManager::allConfigurations(QNe
*/
QNetworkConfiguration QNetworkConfigurationManager::configurationFromIdentifier(const QString &identifier) const
{
- QNetworkConfigurationManagerPrivate *priv = connManager();
+ QNetworkConfigurationManagerPrivate *priv = qNetworkConfigurationManagerPrivate();
if (priv)
return priv->configurationFromIdentifier(identifier);
@@ -331,7 +327,7 @@ QNetworkConfiguration QNetworkConfigurationManager::configurationFromIdentifier(
*/
bool QNetworkConfigurationManager::isOnline() const
{
- QNetworkConfigurationManagerPrivate *priv = connManager();
+ QNetworkConfigurationManagerPrivate *priv = qNetworkConfigurationManagerPrivate();
if (priv)
return priv->isOnline();
@@ -343,7 +339,7 @@ bool QNetworkConfigurationManager::isOnline() const
*/
QNetworkConfigurationManager::Capabilities QNetworkConfigurationManager::capabilities() const
{
- QNetworkConfigurationManagerPrivate *priv = connManager();
+ QNetworkConfigurationManagerPrivate *priv = qNetworkConfigurationManagerPrivate();
if (priv)
return priv->capabilities();
@@ -366,7 +362,7 @@ QNetworkConfigurationManager::Capabilities QNetworkConfigurationManager::capabil
*/
void QNetworkConfigurationManager::updateConfigurations()
{
- QNetworkConfigurationManagerPrivate *priv = connManager();
+ QNetworkConfigurationManagerPrivate *priv = qNetworkConfigurationManagerPrivate();
if (priv)
priv->performAsyncConfigurationUpdate();
}
diff --git a/src/network/bearer/qnetworkconfigmanager.h b/src/network/bearer/qnetworkconfigmanager.h
index 5f4e64b957..6c160404d1 100644
--- a/src/network/bearer/qnetworkconfigmanager.h
+++ b/src/network/bearer/qnetworkconfigmanager.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
class QNetworkConfigurationManagerPrivate;
class Q_NETWORK_EXPORT QNetworkConfigurationManager : public QObject
@@ -90,6 +89,9 @@ Q_SIGNALS:
void configurationChanged(const QNetworkConfiguration &config);
void onlineStateChanged(bool isOnline);
void updateCompleted();
+
+private:
+ Q_DISABLE_COPY(QNetworkConfigurationManager)
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QNetworkConfigurationManager::Capabilities)
diff --git a/src/network/bearer/qnetworkconfigmanager_p.cpp b/src/network/bearer/qnetworkconfigmanager_p.cpp
index 5f8f0dff53..25bf21e7b9 100644
--- a/src/network/bearer/qnetworkconfigmanager_p.cpp
+++ b/src/network/bearer/qnetworkconfigmanager_p.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -66,11 +66,31 @@ QNetworkConfigurationManagerPrivate::QNetworkConfigurationManagerPrivate()
qRegisterMetaType<QNetworkConfigurationPrivatePointer>("QNetworkConfigurationPrivatePointer");
}
+void QNetworkConfigurationManagerPrivate::initialize()
+{
+ //Two stage construction, because we only want to do this heavyweight work for the winner of the Q_GLOBAL_STATIC race.
+ bearerThread = new QThread();
+ bearerThread->moveToThread(QCoreApplicationPrivate::mainThread()); // because cleanup() is called in main thread context.
+ moveToThread(bearerThread);
+ bearerThread->start();
+ updateConfigurations();
+}
+
QNetworkConfigurationManagerPrivate::~QNetworkConfigurationManagerPrivate()
{
QMutexLocker locker(&mutex);
qDeleteAll(sessionEngines);
+ if (bearerThread)
+ bearerThread->quit();
+}
+
+void QNetworkConfigurationManagerPrivate::cleanup()
+{
+ QThread* thread = bearerThread;
+ deleteLater();
+ if (thread->wait(5000))
+ delete thread;
}
QNetworkConfiguration QNetworkConfigurationManagerPrivate::defaultConfiguration() const
@@ -350,13 +370,6 @@ void QNetworkConfigurationManagerPrivate::updateConfigurations()
if (qobject_cast<QBearerEngine *>(sender()))
return;
- if (thread() != QCoreApplicationPrivate::mainThread()) {
- if (thread() != QThread::currentThread())
- return;
-
- moveToThread(QCoreApplicationPrivate::mainThread());
- }
-
updating = false;
#ifndef QT_NO_LIBRARY
@@ -375,7 +388,7 @@ void QNetworkConfigurationManagerPrivate::updateConfigurations()
else
sessionEngines.append(engine);
- engine->moveToThread(QCoreApplicationPrivate::mainThread());
+ engine->moveToThread(bearerThread);
connect(engine, SIGNAL(updateCompleted()),
this, SLOT(updateConfigurations()));
@@ -411,14 +424,9 @@ void QNetworkConfigurationManagerPrivate::updateConfigurations()
if (firstUpdate) {
firstUpdate = false;
QList<QBearerEngine*> enginesToInitialize = sessionEngines; //shallow copy the list in case it is modified when we unlock mutex
- Qt::ConnectionType connectionType;
- if (QCoreApplicationPrivate::mainThread() == QThread::currentThread())
- connectionType = Qt::DirectConnection;
- else
- connectionType = Qt::BlockingQueuedConnection;
locker.unlock();
foreach (QBearerEngine* engine, enginesToInitialize) {
- QMetaObject::invokeMethod(engine, "initialize", connectionType);
+ QMetaObject::invokeMethod(engine, "initialize", Qt::BlockingQueuedConnection);
}
}
}
diff --git a/src/network/bearer/qnetworkconfigmanager_p.h b/src/network/bearer/qnetworkconfigmanager_p.h
index dcd736cc6e..92406ae8f0 100644
--- a/src/network/bearer/qnetworkconfigmanager_p.h
+++ b/src/network/bearer/qnetworkconfigmanager_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -89,6 +89,8 @@ public:
void enablePolling();
void disablePolling();
+ void initialize();
+ void cleanup();
public Q_SLOTS:
void updateConfigurations();
@@ -112,6 +114,7 @@ private Q_SLOTS:
private:
Q_INVOKABLE void startPolling();
QTimer *pollTimer;
+ QThread *bearerThread;
private:
mutable QMutex mutex;
diff --git a/src/network/bearer/qnetworkconfiguration.cpp b/src/network/bearer/qnetworkconfiguration.cpp
index 150e1cf715..037a7fdbf3 100644
--- a/src/network/bearer/qnetworkconfiguration.cpp
+++ b/src/network/bearer/qnetworkconfiguration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -397,14 +397,6 @@ QList<QNetworkConfiguration> QNetworkConfiguration::children() const
}
/*!
- \fn QString QNetworkConfiguration::bearerName() const
- \deprecated
-
- This function is deprecated. It is equivalent to calling bearerTypeName(), however
- bearerType() should be used in preference.
-*/
-
-/*!
Returns the type of bearer used by this network configuration.
If the bearer type is \l {QNetworkConfiguration::BearerUnknown}{unknown} the bearerTypeName()
@@ -483,27 +475,26 @@ QString QNetworkConfiguration::bearerTypeName() const
return QString();
switch (d->bearerType) {
- case BearerUnknown:
- return d->bearerTypeName();
case BearerEthernet:
- return QLatin1String("Ethernet");
+ return QStringLiteral("Ethernet");
case BearerWLAN:
- return QLatin1String("WLAN");
+ return QStringLiteral("WLAN");
case Bearer2G:
- return QLatin1String("2G");
+ return QStringLiteral("2G");
case BearerCDMA2000:
- return QLatin1String("CDMA2000");
+ return QStringLiteral("CDMA2000");
case BearerWCDMA:
- return QLatin1String("WCDMA");
+ return QStringLiteral("WCDMA");
case BearerHSPA:
- return QLatin1String("HSPA");
+ return QStringLiteral("HSPA");
case BearerBluetooth:
- return QLatin1String("Bluetooth");
+ return QStringLiteral("Bluetooth");
case BearerWiMAX:
- return QLatin1String("WiMAX");
+ return QStringLiteral("WiMAX");
+ case BearerUnknown:
+ break;
}
-
- return QLatin1String("Unknown");
+ return QStringLiteral("Unknown");
}
QT_END_NAMESPACE
diff --git a/src/network/bearer/qnetworkconfiguration.h b/src/network/bearer/qnetworkconfiguration.h
index 5b650d0303..2feb3d2394 100644
--- a/src/network/bearer/qnetworkconfiguration.h
+++ b/src/network/bearer/qnetworkconfiguration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,14 +48,9 @@
#include <QtCore/qstring.h>
#include <QtCore/qlist.h>
-#if defined(Q_OS_WIN) && defined(interface)
-#undef interface
-#endif
-
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
class QNetworkConfigurationPrivate;
class Q_NETWORK_EXPORT QNetworkConfiguration
@@ -108,10 +103,6 @@ public:
Type type() const;
Purpose purpose() const;
-#ifdef QT_DEPRECATED
- // Required to maintain source compatibility with Qt Mobility.
- QT_DEPRECATED inline QString bearerName() const { return bearerTypeName(); }
-#endif
BearerType bearerType() const;
QString bearerTypeName() const;
diff --git a/src/network/bearer/qnetworkconfiguration_p.h b/src/network/bearer/qnetworkconfiguration_p.h
index 9acda9210b..47174a1eab 100644
--- a/src/network/bearer/qnetworkconfiguration_p.h
+++ b/src/network/bearer/qnetworkconfiguration_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -78,11 +78,6 @@ public:
serviceNetworkMembers.clear();
}
- virtual QString bearerTypeName() const
- {
- return QLatin1String("Unknown");
- }
-
QMap<unsigned int, QNetworkConfigurationPrivatePointer> serviceNetworkMembers;
mutable QMutex mutex;
diff --git a/src/network/bearer/qnetworksession.cpp b/src/network/bearer/qnetworksession.cpp
index 7f76fde4f0..3f8cabe26e 100644
--- a/src/network/bearer/qnetworksession.cpp
+++ b/src/network/bearer/qnetworksession.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -575,8 +575,6 @@ void QNetworkSession::migrate()
*/
void QNetworkSession::ignore()
{
- // Needed on mobile platforms (was needed for Symbian/S60): the roaming must be explicitly
- // ignore()'d or migrate()'d
if (d)
d->ignore();
}
diff --git a/src/network/bearer/qnetworksession.h b/src/network/bearer/qnetworksession.h
index 5321875078..21d568ca13 100644
--- a/src/network/bearer/qnetworksession.h
+++ b/src/network/bearer/qnetworksession.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -58,7 +58,6 @@ QT_BEGIN_HEADER
#include <QtCore/qshareddata.h>
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
class QNetworkSessionPrivate;
class Q_NETWORK_EXPORT QNetworkSession : public QObject
@@ -129,6 +128,7 @@ protected:
virtual void disconnectNotify(const char *signal);
private:
+ Q_DISABLE_COPY(QNetworkSession)
friend class QNetworkSessionPrivate;
QNetworkSessionPrivate *d;
};
diff --git a/src/network/bearer/qnetworksession_p.h b/src/network/bearer/qnetworksession_p.h
index c43762136d..0eea06b085 100644
--- a/src/network/bearer/qnetworksession_p.h
+++ b/src/network/bearer/qnetworksession_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/bearer/qsharednetworksession.cpp b/src/network/bearer/qsharednetworksession.cpp
index 358bc95377..54ff32460e 100644
--- a/src/network/bearer/qsharednetworksession.cpp
+++ b/src/network/bearer/qsharednetworksession.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/bearer/qsharednetworksession_p.h b/src/network/bearer/qsharednetworksession_p.h
index 86946955a1..846f35fe58 100644
--- a/src/network/bearer/qsharednetworksession_p.h
+++ b/src/network/bearer/qsharednetworksession_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/kernel/kernel.pri b/src/network/kernel/kernel.pri
index d6e099701d..ea937da518 100644
--- a/src/network/kernel/kernel.pri
+++ b/src/network/kernel/kernel.pri
@@ -5,6 +5,8 @@ INCLUDEPATH += $$PWD
HEADERS += kernel/qauthenticator.h \
kernel/qauthenticator_p.h \
+ kernel/qdnslookup.h \
+ kernel/qdnslookup_p.h \
kernel/qhostaddress.h \
kernel/qhostinfo.h \
kernel/qhostinfo_p.h \
@@ -14,15 +16,16 @@ HEADERS += kernel/qauthenticator.h \
kernel/qnetworkinterface_p.h
SOURCES += kernel/qauthenticator.cpp \
+ kernel/qdnslookup.cpp \
kernel/qhostaddress.cpp \
kernel/qhostinfo.cpp \
kernel/qurlinfo.cpp \
kernel/qnetworkproxy.cpp \
kernel/qnetworkinterface.cpp
-unix:SOURCES += kernel/qhostinfo_unix.cpp kernel/qnetworkinterface_unix.cpp
-win32:SOURCES += kernel/qhostinfo_win.cpp kernel/qnetworkinterface_win.cpp
-integrity:SOURCES += kernel/qhostinfo_unix.cpp kernel/qnetworkinterface_unix.cpp
+unix:SOURCES += kernel/qdnslookup_unix.cpp kernel/qhostinfo_unix.cpp kernel/qnetworkinterface_unix.cpp
+win32:SOURCES += kernel/qdnslookup_win.cpp kernel/qhostinfo_win.cpp kernel/qnetworkinterface_win.cpp
+integrity:SOURCES += kernel/qdnslookup_unix.cpp kernel/qhostinfo_unix.cpp kernel/qnetworkinterface_unix.cpp
mac:LIBS_PRIVATE += -framework SystemConfiguration -framework CoreFoundation
mac:SOURCES += kernel/qnetworkproxy_mac.cpp
diff --git a/src/network/kernel/qauthenticator.cpp b/src/network/kernel/qauthenticator.cpp
index 0a3dddbe28..36f47eb5b4 100644
--- a/src/network/kernel/qauthenticator.cpp
+++ b/src/network/kernel/qauthenticator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -45,7 +45,6 @@
#include <qhash.h>
#include <qbytearray.h>
#include <qcryptographichash.h>
-#include <private/qhttpheader_p.h>
#include <qiodevice.h>
#include <qdatastream.h>
#include <qendian.h>
@@ -339,21 +338,6 @@ QAuthenticatorPrivate::QAuthenticatorPrivate()
nonceCount = 0;
}
-#ifndef QT_NO_HTTP
-void QAuthenticatorPrivate::parseHttpResponse(const QHttpResponseHeader &header, bool isProxy)
-{
- const QList<QPair<QString, QString> > values = header.values();
- QList<QPair<QByteArray, QByteArray> > rawValues;
-
- QList<QPair<QString, QString> >::const_iterator it, end;
- for (it = values.constBegin(), end = values.constEnd(); it != end; ++it)
- rawValues.append(qMakePair(it->first.toLatin1(), it->second.toUtf8()));
-
- // continue in byte array form
- parseHttpResponse(rawValues, isProxy);
-}
-#endif
-
void QAuthenticatorPrivate::parseHttpResponse(const QList<QPair<QByteArray, QByteArray> > &values, bool isProxy)
{
const char *search = isProxy ? "proxy-authenticate" : "www-authenticate";
diff --git a/src/network/kernel/qauthenticator.h b/src/network/kernel/qauthenticator.h
index 958532e9dc..9e5422a0bb 100644
--- a/src/network/kernel/qauthenticator.h
+++ b/src/network/kernel/qauthenticator.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
class QAuthenticatorPrivate;
class QUrl;
diff --git a/src/network/kernel/qauthenticator_p.h b/src/network/kernel/qauthenticator_p.h
index 4b79202d92..a41b31d333 100644
--- a/src/network/kernel/qauthenticator_p.h
+++ b/src/network/kernel/qauthenticator_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -103,9 +103,6 @@ public:
QByteArray digestMd5Response(const QByteArray &challenge, const QByteArray &method, const QByteArray &path);
static QHash<QByteArray, QByteArray> parseDigestAuthenticationChallenge(const QByteArray &challenge);
-#ifndef QT_NO_HTTP
- void parseHttpResponse(const QHttpResponseHeader &, bool isProxy);
-#endif
void parseHttpResponse(const QList<QPair<QByteArray, QByteArray> >&, bool isProxy);
};
diff --git a/src/network/kernel/qdnslookup.cpp b/src/network/kernel/qdnslookup.cpp
new file mode 100644
index 0000000000..f4b143a5fc
--- /dev/null
+++ b/src/network/kernel/qdnslookup.cpp
@@ -0,0 +1,988 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Jeremy Lainé <jeremy.laine@m4x.org>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtNetwork 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 "qdnslookup.h"
+#include "qdnslookup_p.h"
+
+#include <qcoreapplication.h>
+#include <qdatetime.h>
+#include <qthreadstorage.h>
+#include <qurl.h>
+
+QT_BEGIN_NAMESPACE
+
+Q_GLOBAL_STATIC(QDnsLookupThreadPool, theDnsLookupThreadPool);
+Q_GLOBAL_STATIC(QThreadStorage<bool *>, theDnsLookupSeedStorage);
+
+static bool qt_qdnsmailexchangerecord_less_than(const QDnsMailExchangeRecord &r1, const QDnsMailExchangeRecord &r2)
+{
+ // Lower numbers are more preferred than higher ones.
+ return r1.preference() < r2.preference();
+}
+
+/*!
+ Sorts a list of QDnsMailExchangeRecord objects according to RFC 5321.
+*/
+
+static void qt_qdnsmailexchangerecord_sort(QList<QDnsMailExchangeRecord> &records)
+{
+ // If we have no more than one result, we are done.
+ if (records.size() <= 1)
+ return;
+
+ // Order the records by preference.
+ qSort(records.begin(), records.end(), qt_qdnsmailexchangerecord_less_than);
+
+ int i = 0;
+ while (i < records.size()) {
+
+ // Determine the slice of records with the current preference.
+ QList<QDnsMailExchangeRecord> slice;
+ const quint16 slicePreference = records[i].preference();
+ for (int j = i; j < records.size(); ++j) {
+ if (records[j].preference() != slicePreference)
+ break;
+ slice << records[j];
+ }
+
+ // Randomize the slice of records.
+ while (!slice.isEmpty()) {
+ const unsigned int pos = qrand() % slice.size();
+ records[i++] = slice.takeAt(pos);
+ }
+ }
+}
+
+static bool qt_qdnsservicerecord_less_than(const QDnsServiceRecord &r1, const QDnsServiceRecord &r2)
+{
+ // Order by priority, or if the priorities are equal,
+ // put zero weight records first.
+ return r1.priority() < r2.priority()
+ || (r1.priority() == r2.priority()
+ && r1.weight() == 0 && r2.weight() > 0);
+}
+
+/*!
+ Sorts a list of QDnsServiceRecord objects according to RFC 2782.
+*/
+
+static void qt_qdnsservicerecord_sort(QList<QDnsServiceRecord> &records)
+{
+ // If we have no more than one result, we are done.
+ if (records.size() <= 1)
+ return;
+
+ // Order the records by priority, and for records with an equal
+ // priority, put records with a zero weight first.
+ qSort(records.begin(), records.end(), qt_qdnsservicerecord_less_than);
+
+ int i = 0;
+ while (i < records.size()) {
+
+ // Determine the slice of records with the current priority.
+ QList<QDnsServiceRecord> slice;
+ const quint16 slicePriority = records[i].priority();
+ unsigned int sliceWeight = 0;
+ for (int j = i; j < records.size(); ++j) {
+ if (records[j].priority() != slicePriority)
+ break;
+ sliceWeight += records[j].weight();
+ slice << records[j];
+ }
+#ifdef QDNSLOOKUP_DEBUG
+ qDebug("qt_qdnsservicerecord_sort() : priority %i (size: %i, total weight: %i)",
+ slicePriority, slice.size(), sliceWeight);
+#endif
+
+ // Order the slice of records.
+ while (!slice.isEmpty()) {
+ const unsigned int weightThreshold = qrand() % (sliceWeight + 1);
+ unsigned int summedWeight = 0;
+ for (int j = 0; j < slice.size(); ++j) {
+ summedWeight += slice[j].weight();
+ if (summedWeight >= weightThreshold) {
+#ifdef QDNSLOOKUP_DEBUG
+ qDebug("qt_qdnsservicerecord_sort() : adding %s %i (weight: %i)",
+ qPrintable(slice[j].target()), slice[j].port(),
+ slice[j].weight());
+#endif
+ // Adjust the slice weight and take the current record.
+ sliceWeight -= slice[j].weight();
+ records[i++] = slice.takeAt(j);
+ break;
+ }
+ }
+ }
+ }
+}
+
+/*!
+ \class QDnsLookup
+ \brief The QDnsLookup class represents a DNS lookup.
+
+ \inmodule QtNetwork
+ \ingroup network
+
+ QDnsLookup uses the mechanisms provided by the operating system to perform
+ DNS lookups. To perform a lookup you need to specify a \l name and \l type
+ then invoke the \l{QDnsLookup::lookup()}{lookup()} slot. The
+ \l{QDnsLookup::finished()}{finished()} signal will be emitted upon
+ completion.
+
+ For example, you can determine which servers an XMPP chat client should
+ connect to for a given domain with:
+
+ \snippet doc/src/snippets/code/src_network_kernel_qdnslookup.cpp 0
+
+ Once the request finishes you can handle the results with:
+
+ \snippet doc/src/snippets/code/src_network_kernel_qdnslookup.cpp 1
+
+ \note If you simply want to find the IP address(es) associated with a host
+ name, or the host name associated with an IP address you should use
+ QHostInfo instead.
+*/
+
+/*!
+ \enum QDnsLookup::Error
+
+ Indicates all possible error conditions found during the
+ processing of the DNS lookup.
+
+ \value NoError no error condition.
+
+ \value ResolverError there was an error initializing the system's
+ DNS resolver.
+
+ \value OperationCancelledError the lookup was aborted using the abort()
+ method.
+
+ \value InvalidRequestError the requested DNS lookup was invalid.
+
+ \value InvalidReplyError the reply returned by the server was invalid.
+
+ \value ServerFailureError the server encountered an internal failure
+ while processing the request (SERVFAIL).
+
+ \value ServerRefusedError the server refused to process the request for
+ security or policy reasons (REFUSED).
+
+ \value NotFoundError the requested domain name does not exist
+ (NXDOMAIN).
+*/
+
+/*!
+ \enum QDnsLookup::Type
+
+ Indicates the type of DNS lookup that was performed.
+
+ \value A IPv4 address records.
+
+ \value AAAA IPv6 address records.
+
+ \value ANY any records.
+
+ \value CNAME canonical name records.
+
+ \value MX mail exchange records.
+
+ \value NS name server records.
+
+ \value PTR pointer records.
+
+ \value SRV service records.
+
+ \value TXT text records.
+*/
+
+/*!
+ \fn void QDnsLookup::finished()
+
+ This signal is emitted when the reply has finished processing.
+*/
+
+/*!
+ \fn void QDnsLookup::nameChanged(const QString &name)
+
+ This signal is emitted when the lookup \l name changes.
+ \a name is the new lookup name.
+*/
+
+/*!
+ \fn void QDnsLookup::typeChanged(Type type)
+
+ This signal is emitted when the lookup \l type changes.
+ \a type is the new lookup type.
+*/
+
+/*!
+ Constructs a QDnsLookup object and sets \a parent as the parent object.
+
+ The \l type property will default to QDnsLookup::A.
+*/
+
+QDnsLookup::QDnsLookup(QObject *parent)
+ : QObject(*new QDnsLookupPrivate, parent)
+{
+ qRegisterMetaType<QDnsLookupReply>();
+}
+/*!
+ Constructs a QDnsLookup object for the given \a type and \a name and sets
+ \a parent as the parent object.
+*/
+
+QDnsLookup::QDnsLookup(Type type, const QString &name, QObject *parent)
+ : QObject(*new QDnsLookupPrivate, parent)
+{
+ Q_D(QDnsLookup);
+ qRegisterMetaType<QDnsLookupReply>();
+ d->name = name;
+ d->type = type;
+}
+
+/*!
+ Destroys the QDnsLookup object.
+
+ It is safe to delete a QDnsLookup object even if it is not finished, you
+ will simply never receive its results.
+*/
+
+QDnsLookup::~QDnsLookup()
+{
+}
+
+/*!
+ \property QDnsLookup::error
+ \brief the type of error that occurred if the DNS lookup failed, or NoError.
+*/
+
+QDnsLookup::Error QDnsLookup::error() const
+{
+ return d_func()->reply.error;
+}
+
+/*!
+ \property QDnsLookup::errorString
+ \brief a human-readable description of the error if the DNS lookup failed.
+*/
+
+QString QDnsLookup::errorString() const
+{
+ return d_func()->reply.errorString;
+}
+
+/*!
+ \property QDnsLookup::finished
+ \brief whether the reply has finished or was aborted.
+*/
+
+bool QDnsLookup::isFinished() const
+{
+ return d_func()->isFinished;
+}
+
+/*!
+ \property QDnsLookup::name
+ \brief the name to lookup.
+
+ \note The name will be encoded using IDNA, which means it's unsuitable for
+ querying SRV records compatible with the DNS-SD specification.
+*/
+
+QString QDnsLookup::name() const
+{
+ return d_func()->name;
+}
+
+void QDnsLookup::setName(const QString &name)
+{
+ Q_D(QDnsLookup);
+ if (name != d->name) {
+ d->name = name;
+ emit nameChanged(name);
+ }
+}
+
+/*!
+ \property QDnsLookup::type
+ \brief the type of DNS lookup.
+*/
+
+QDnsLookup::Type QDnsLookup::type() const
+{
+ return d_func()->type;
+}
+
+void QDnsLookup::setType(Type type)
+{
+ Q_D(QDnsLookup);
+ if (type != d->type) {
+ d->type = type;
+ emit typeChanged(type);
+ }
+}
+
+/*!
+ Returns the list of canonical name records associated with this lookup.
+*/
+
+QList<QDnsDomainNameRecord> QDnsLookup::canonicalNameRecords() const
+{
+ return d_func()->reply.canonicalNameRecords;
+}
+
+/*!
+ Returns the list of host address records associated with this lookup.
+*/
+
+QList<QDnsHostAddressRecord> QDnsLookup::hostAddressRecords() const
+{
+ return d_func()->reply.hostAddressRecords;
+}
+
+/*!
+ Returns the list of mail exchange records associated with this lookup.
+
+ The records are sorted according to
+ \l{http://www.rfc-editor.org/rfc/rfc5321.txt}{RFC 5321}, so if you use them
+ to connect to servers, you should try them in the order they are listed.
+*/
+
+QList<QDnsMailExchangeRecord> QDnsLookup::mailExchangeRecords() const
+{
+ return d_func()->reply.mailExchangeRecords;
+}
+
+/*!
+ Returns the list of name server records associated with this lookup.
+*/
+
+QList<QDnsDomainNameRecord> QDnsLookup::nameServerRecords() const
+{
+ return d_func()->reply.nameServerRecords;
+}
+
+/*!
+ Returns the list of pointer records associated with this lookup.
+*/
+
+QList<QDnsDomainNameRecord> QDnsLookup::pointerRecords() const
+{
+ return d_func()->reply.pointerRecords;
+}
+
+/*!
+ Returns the list of service records associated with this lookup.
+
+ The records are sorted according to
+ \l{http://www.rfc-editor.org/rfc/rfc2782.txt}{RFC 2782}, so if you use them
+ to connect to servers, you should try them in the order they are listed.
+*/
+
+QList<QDnsServiceRecord> QDnsLookup::serviceRecords() const
+{
+ return d_func()->reply.serviceRecords;
+}
+
+/*!
+ Returns the list of text records associated with this lookup.
+*/
+
+QList<QDnsTextRecord> QDnsLookup::textRecords() const
+{
+ return d_func()->reply.textRecords;
+}
+
+/*!
+ Aborts the DNS lookup operation.
+
+ If the lookup is already finished, does nothing.
+*/
+
+void QDnsLookup::abort()
+{
+ Q_D(QDnsLookup);
+ if (d->runnable) {
+ d->runnable = 0;
+ d->reply = QDnsLookupReply();
+ d->reply.error = QDnsLookup::OperationCancelledError;
+ d->reply.errorString = tr("Operation cancelled");
+ d->isFinished = true;
+ emit finished();
+ }
+}
+
+/*!
+ Performs the DNS lookup.
+
+ The \l{QDnsLookup::finished()}{finished()} signal is emitted upon completion.
+*/
+
+void QDnsLookup::lookup()
+{
+ Q_D(QDnsLookup);
+ d->isFinished = false;
+ d->reply = QDnsLookupReply();
+ d->runnable = new QDnsLookupRunnable(d->type, QUrl::toAce(d->name));
+ connect(d->runnable, SIGNAL(finished(QDnsLookupReply)),
+ this, SLOT(_q_lookupFinished(QDnsLookupReply)),
+ Qt::BlockingQueuedConnection);
+ theDnsLookupThreadPool()->start(d->runnable);
+}
+
+/*!
+ \class QDnsDomainNameRecord
+ \brief The QDnsDomainNameRecord class stores information about a domain
+ name record.
+
+ \inmodule QtNetwork
+ \ingroup network
+
+ When performing a name server lookup, zero or more records will be returned.
+ Each record is represented by a QDnsDomainNameRecord instance.
+
+ \sa QDnsLookup
+*/
+
+/*!
+ Constructs an empty domain name record object.
+*/
+
+QDnsDomainNameRecord::QDnsDomainNameRecord()
+ : d(new QDnsDomainNameRecordPrivate)
+{
+}
+
+/*!
+ Constructs a copy of \a other.
+*/
+
+QDnsDomainNameRecord::QDnsDomainNameRecord(const QDnsDomainNameRecord &other)
+ : d(other.d)
+{
+}
+
+/*!
+ Destroys a domain name record.
+*/
+
+QDnsDomainNameRecord::~QDnsDomainNameRecord()
+{
+}
+
+/*!
+ Returns the name for this record.
+*/
+
+QString QDnsDomainNameRecord::name() const
+{
+ return d->name;
+}
+
+/*!
+ Returns the duration in seconds for which this record is valid.
+*/
+
+quint32 QDnsDomainNameRecord::timeToLive() const
+{
+ return d->timeToLive;
+}
+
+/*!
+ Returns the value for this domain name record.
+*/
+
+QString QDnsDomainNameRecord::value() const
+{
+ return d->value;
+}
+
+/*!
+ Assigns the data of the \a other object to this record object,
+ and returns a reference to it.
+*/
+
+QDnsDomainNameRecord &QDnsDomainNameRecord::operator=(const QDnsDomainNameRecord &other)
+{
+ d = other.d;
+ return *this;
+}
+
+/*!
+ \class QDnsHostAddressRecord
+ \brief The QDnsHostAddressRecord class stores information about a host
+ address record.
+
+ \inmodule QtNetwork
+ \ingroup network
+
+ When performing an address lookup, zero or more records will be
+ returned. Each record is represented by a QDnsHostAddressRecord instance.
+
+ \sa QDnsLookup
+*/
+
+/*!
+ Constructs an empty host address record object.
+*/
+
+QDnsHostAddressRecord::QDnsHostAddressRecord()
+ : d(new QDnsHostAddressRecordPrivate)
+{
+}
+
+/*!
+ Constructs a copy of \a other.
+*/
+
+QDnsHostAddressRecord::QDnsHostAddressRecord(const QDnsHostAddressRecord &other)
+ : d(other.d)
+{
+}
+
+/*!
+ Destroys a host address record.
+*/
+
+QDnsHostAddressRecord::~QDnsHostAddressRecord()
+{
+}
+
+/*!
+ Returns the name for this record.
+*/
+
+QString QDnsHostAddressRecord::name() const
+{
+ return d->name;
+}
+
+/*!
+ Returns the duration in seconds for which this record is valid.
+*/
+
+quint32 QDnsHostAddressRecord::timeToLive() const
+{
+ return d->timeToLive;
+}
+
+/*!
+ Returns the value for this host address record.
+*/
+
+QHostAddress QDnsHostAddressRecord::value() const
+{
+ return d->value;
+}
+
+/*!
+ Assigns the data of the \a other object to this record object,
+ and returns a reference to it.
+*/
+
+QDnsHostAddressRecord &QDnsHostAddressRecord::operator=(const QDnsHostAddressRecord &other)
+{
+ d = other.d;
+ return *this;
+}
+
+/*!
+ \class QDnsMailExchangeRecord
+ \brief The QDnsMailExchangeRecord class stores information about a DNS MX record.
+
+ \inmodule QtNetwork
+ \ingroup network
+
+ When performing a lookup on a service, zero or more records will be
+ returned. Each record is represented by a QDnsMailExchangeRecord instance.
+
+ The meaning of the fields is defined in
+ \l{http://www.rfc-editor.org/rfc/rfc1035.txt}{RFC 1035}.
+
+ \sa QDnsLookup
+*/
+
+/*!
+ Constructs an empty mail exchange record object.
+*/
+
+QDnsMailExchangeRecord::QDnsMailExchangeRecord()
+ : d(new QDnsMailExchangeRecordPrivate)
+{
+}
+
+/*!
+ Constructs a copy of \a other.
+*/
+
+QDnsMailExchangeRecord::QDnsMailExchangeRecord(const QDnsMailExchangeRecord &other)
+ : d(other.d)
+{
+}
+
+/*!
+ Destroys a mail exchange record.
+*/
+
+QDnsMailExchangeRecord::~QDnsMailExchangeRecord()
+{
+}
+
+/*!
+ Returns the domain name of the mail exchange for this record.
+*/
+
+QString QDnsMailExchangeRecord::exchange() const
+{
+ return d->exchange;
+}
+
+/*!
+ Returns the name for this record.
+*/
+
+QString QDnsMailExchangeRecord::name() const
+{
+ return d->name;
+}
+
+/*!
+ Returns the preference for this record.
+*/
+
+quint16 QDnsMailExchangeRecord::preference() const
+{
+ return d->preference;
+}
+
+/*!
+ Returns the duration in seconds for which this record is valid.
+*/
+
+quint32 QDnsMailExchangeRecord::timeToLive() const
+{
+ return d->timeToLive;
+}
+
+/*!
+ Assigns the data of the \a other object to this record object,
+ and returns a reference to it.
+*/
+
+QDnsMailExchangeRecord &QDnsMailExchangeRecord::operator=(const QDnsMailExchangeRecord &other)
+{
+ d = other.d;
+ return *this;
+}
+
+/*!
+ \class QDnsServiceRecord
+ \brief The QDnsServiceRecord class stores information about a DNS SRV record.
+
+ \inmodule QtNetwork
+ \ingroup network
+
+ When performing a lookup on a service, zero or more records will be
+ returned. Each record is represented by a QDnsServiceRecord instance.
+
+ The meaning of the fields is defined in
+ \l{http://www.rfc-editor.org/rfc/rfc2782.txt}{RFC 2782}.
+
+ \sa QDnsLookup
+*/
+
+/*!
+ Constructs an empty service record object.
+*/
+
+QDnsServiceRecord::QDnsServiceRecord()
+ : d(new QDnsServiceRecordPrivate)
+{
+}
+
+/*!
+ Constructs a copy of \a other.
+*/
+
+QDnsServiceRecord::QDnsServiceRecord(const QDnsServiceRecord &other)
+ : d(other.d)
+{
+}
+
+/*!
+ Destroys a service record.
+*/
+
+QDnsServiceRecord::~QDnsServiceRecord()
+{
+}
+
+/*!
+ Returns the name for this record.
+*/
+
+QString QDnsServiceRecord::name() const
+{
+ return d->name;
+}
+
+/*!
+ Returns the port on the target host for this service record.
+*/
+
+quint16 QDnsServiceRecord::port() const
+{
+ return d->port;
+}
+
+/*!
+ Returns the priority for this service record.
+
+ A client must attempt to contact the target host with the lowest-numbered
+ priority.
+*/
+
+quint16 QDnsServiceRecord::priority() const
+{
+ return d->priority;
+}
+
+/*!
+ Returns the domain name of the target host for this service record.
+*/
+
+QString QDnsServiceRecord::target() const
+{
+ return d->target;
+}
+
+/*!
+ Returns the duration in seconds for which this record is valid.
+*/
+
+quint32 QDnsServiceRecord::timeToLive() const
+{
+ return d->timeToLive;
+}
+
+/*!
+ Returns the weight for this service record.
+
+ The weight field specifies a relative weight for entries with the same
+ priority. Entries with higher weights should be selected with a higher
+ probability.
+*/
+
+quint16 QDnsServiceRecord::weight() const
+{
+ return d->weight;
+}
+
+/*!
+ Assigns the data of the \a other object to this record object,
+ and returns a reference to it.
+*/
+
+QDnsServiceRecord &QDnsServiceRecord::operator=(const QDnsServiceRecord &other)
+{
+ d = other.d;
+ return *this;
+}
+
+/*!
+ \class QDnsTextRecord
+ \brief The QDnsTextRecord class stores information about a DNS TXT record.
+
+ \inmodule QtNetwork
+ \ingroup network
+
+ When performing a text lookup, zero or more records will be
+ returned. Each record is represented by a QDnsTextRecord instance.
+
+ The meaning of the fields is defined in
+ \l{http://www.rfc-editor.org/rfc/rfc1035.txt}{RFC 1035}.
+
+ \sa QDnsLookup
+*/
+
+/*!
+ Constructs an empty text record object.
+*/
+
+QDnsTextRecord::QDnsTextRecord()
+ : d(new QDnsTextRecordPrivate)
+{
+}
+
+/*!
+ Constructs a copy of \a other.
+*/
+
+QDnsTextRecord::QDnsTextRecord(const QDnsTextRecord &other)
+ : d(other.d)
+{
+}
+
+/*!
+ Destroys a text record.
+*/
+
+QDnsTextRecord::~QDnsTextRecord()
+{
+}
+
+/*!
+ Returns the name for this text record.
+*/
+
+QString QDnsTextRecord::name() const
+{
+ return d->name;
+}
+
+/*!
+ Returns the duration in seconds for which this record is valid.
+*/
+
+quint32 QDnsTextRecord::timeToLive() const
+{
+ return d->timeToLive;
+}
+
+/*!
+ Returns the values for this text record.
+*/
+
+QList<QByteArray> QDnsTextRecord::values() const
+{
+ return d->values;
+}
+
+/*!
+ Assigns the data of the \a other object to this record object,
+ and returns a reference to it.
+*/
+
+QDnsTextRecord &QDnsTextRecord::operator=(const QDnsTextRecord &other)
+{
+ d = other.d;
+ return *this;
+}
+
+void QDnsLookupPrivate::_q_lookupFinished(const QDnsLookupReply &_reply)
+{
+ Q_Q(QDnsLookup);
+ if (runnable == q->sender()) {
+#ifdef QDNSLOOKUP_DEBUG
+ qDebug("DNS reply for %s: %i (%s)", qPrintable(name), _reply.error, qPrintable(_reply.errorString));
+#endif
+ reply = _reply;
+ runnable = 0;
+ isFinished = true;
+ emit q->finished();
+ }
+}
+
+void QDnsLookupRunnable::run()
+{
+ QDnsLookupReply reply;
+
+ // Validate input.
+ if (requestName.isEmpty()) {
+ reply.error = QDnsLookup::InvalidRequestError;
+ reply.errorString = tr("Invalid domain name");
+ emit finished(reply);
+ return;
+ }
+
+ // Perform request.
+ query(requestType, requestName, &reply);
+
+ // Sort results.
+ if (!theDnsLookupSeedStorage()->hasLocalData()) {
+ qsrand(QTime(0,0,0).msecsTo(QTime::currentTime()) ^ reinterpret_cast<quintptr>(this));
+ theDnsLookupSeedStorage()->setLocalData(new bool(true));
+ }
+ qt_qdnsmailexchangerecord_sort(reply.mailExchangeRecords);
+ qt_qdnsservicerecord_sort(reply.serviceRecords);
+
+ emit finished(reply);
+}
+
+QDnsLookupThreadPool::QDnsLookupThreadPool()
+ : signalsConnected(false)
+{
+ // Run up to 5 lookups in parallel.
+ setMaxThreadCount(5);
+}
+
+void QDnsLookupThreadPool::start(QRunnable *runnable)
+{
+ // Ensure threads complete at application destruction.
+ if (!signalsConnected) {
+ QMutexLocker signalsLocker(&signalsMutex);
+ if (!signalsConnected) {
+ QCoreApplication *app = QCoreApplication::instance();
+ if (!app) {
+ qWarning("QDnsLookup requires a QCoreApplication");
+ delete runnable;
+ return;
+ }
+
+ moveToThread(app->thread());
+ connect(app, SIGNAL(destroyed()),
+ SLOT(_q_applicationDestroyed()), Qt::DirectConnection);
+ signalsConnected = true;
+ }
+ }
+
+ QThreadPool::start(runnable);
+}
+
+void QDnsLookupThreadPool::_q_applicationDestroyed()
+{
+ waitForDone();
+ signalsConnected = false;
+}
+
+QT_END_NAMESPACE
+
+#include "moc_qdnslookup.cpp"
diff --git a/src/network/kernel/qdnslookup.h b/src/network/kernel/qdnslookup.h
new file mode 100644
index 0000000000..198b19d8a8
--- /dev/null
+++ b/src/network/kernel/qdnslookup.h
@@ -0,0 +1,235 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Jeremy Lainé <jeremy.laine@m4x.org>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtNetwork 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$
+**
+****************************************************************************/
+
+#ifndef QDNSLOOKUP_H
+#define QDNSLOOKUP_H
+
+#include <QtCore/qlist.h>
+#include <QtCore/qobject.h>
+#include <QtCore/qshareddata.h>
+#include <QtCore/qsharedpointer.h>
+#include <QtCore/qstring.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+QT_MODULE(Network)
+
+class QHostAddress;
+class QDnsLookupPrivate;
+class QDnsDomainNameRecordPrivate;
+class QDnsHostAddressRecordPrivate;
+class QDnsMailExchangeRecordPrivate;
+class QDnsServiceRecordPrivate;
+class QDnsTextRecordPrivate;
+
+class Q_NETWORK_EXPORT QDnsDomainNameRecord
+{
+public:
+ QDnsDomainNameRecord();
+ QDnsDomainNameRecord(const QDnsDomainNameRecord &other);
+ ~QDnsDomainNameRecord();
+
+ QString name() const;
+ quint32 timeToLive() const;
+ QString value() const;
+
+ QDnsDomainNameRecord &operator=(const QDnsDomainNameRecord &other);
+
+private:
+ QSharedDataPointer<QDnsDomainNameRecordPrivate> d;
+ friend class QDnsLookupRunnable;
+};
+
+class Q_NETWORK_EXPORT QDnsHostAddressRecord
+{
+public:
+ QDnsHostAddressRecord();
+ QDnsHostAddressRecord(const QDnsHostAddressRecord &other);
+ ~QDnsHostAddressRecord();
+
+ QString name() const;
+ quint32 timeToLive() const;
+ QHostAddress value() const;
+
+ QDnsHostAddressRecord &operator=(const QDnsHostAddressRecord &other);
+
+private:
+ QSharedDataPointer<QDnsHostAddressRecordPrivate> d;
+ friend class QDnsLookupRunnable;
+};
+
+class Q_NETWORK_EXPORT QDnsMailExchangeRecord
+{
+public:
+ QDnsMailExchangeRecord();
+ QDnsMailExchangeRecord(const QDnsMailExchangeRecord &other);
+ ~QDnsMailExchangeRecord();
+
+ QString exchange() const;
+ QString name() const;
+ quint16 preference() const;
+ quint32 timeToLive() const;
+
+ QDnsMailExchangeRecord &operator=(const QDnsMailExchangeRecord &other);
+
+private:
+ QSharedDataPointer<QDnsMailExchangeRecordPrivate> d;
+ friend class QDnsLookupRunnable;
+};
+
+class Q_NETWORK_EXPORT QDnsServiceRecord
+{
+public:
+ QDnsServiceRecord();
+ QDnsServiceRecord(const QDnsServiceRecord &other);
+ ~QDnsServiceRecord();
+
+ QString name() const;
+ quint16 port() const;
+ quint16 priority() const;
+ QString target() const;
+ quint32 timeToLive() const;
+ quint16 weight() const;
+
+ QDnsServiceRecord &operator=(const QDnsServiceRecord &other);
+
+private:
+ QSharedDataPointer<QDnsServiceRecordPrivate> d;
+ friend class QDnsLookupRunnable;
+};
+
+class Q_NETWORK_EXPORT QDnsTextRecord
+{
+public:
+ QDnsTextRecord();
+ QDnsTextRecord(const QDnsTextRecord &other);
+ ~QDnsTextRecord();
+
+ QString name() const;
+ quint32 timeToLive() const;
+ QList<QByteArray> values() const;
+
+ QDnsTextRecord &operator=(const QDnsTextRecord &other);
+
+private:
+ QSharedDataPointer<QDnsTextRecordPrivate> d;
+ friend class QDnsLookupRunnable;
+};
+
+class Q_NETWORK_EXPORT QDnsLookup : public QObject
+{
+ Q_OBJECT
+ Q_ENUMS(Error Type)
+ Q_PROPERTY(Error error READ error NOTIFY finished)
+ Q_PROPERTY(QString errorString READ errorString NOTIFY finished)
+ Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
+ Q_PROPERTY(Type type READ type WRITE setType NOTIFY typeChanged)
+
+public:
+ enum Error
+ {
+ NoError = 0,
+ ResolverError,
+ OperationCancelledError,
+ InvalidRequestError,
+ InvalidReplyError,
+ ServerFailureError,
+ ServerRefusedError,
+ NotFoundError
+ };
+
+ enum Type
+ {
+ A = 1,
+ AAAA = 28,
+ ANY = 255,
+ CNAME = 5,
+ MX = 15,
+ NS = 2,
+ PTR = 12,
+ SRV = 33,
+ TXT = 16
+ };
+
+ QDnsLookup(QObject *parent = 0);
+ QDnsLookup(Type type, const QString &name, QObject *parent = 0);
+ ~QDnsLookup();
+
+ Error error() const;
+ QString errorString() const;
+ bool isFinished() const;
+
+ QString name() const;
+ void setName(const QString &name);
+
+ Type type() const;
+ void setType(QDnsLookup::Type);
+
+ QList<QDnsDomainNameRecord> canonicalNameRecords() const;
+ QList<QDnsHostAddressRecord> hostAddressRecords() const;
+ QList<QDnsMailExchangeRecord> mailExchangeRecords() const;
+ QList<QDnsDomainNameRecord> nameServerRecords() const;
+ QList<QDnsDomainNameRecord> pointerRecords() const;
+ QList<QDnsServiceRecord> serviceRecords() const;
+ QList<QDnsTextRecord> textRecords() const;
+
+
+public Q_SLOTS:
+ void abort();
+ void lookup();
+
+Q_SIGNALS:
+ void finished();
+ void nameChanged(const QString &name);
+ void typeChanged(Type type);
+
+private:
+ Q_DECLARE_PRIVATE(QDnsLookup)
+ Q_PRIVATE_SLOT(d_func(), void _q_lookupFinished(const QDnsLookupReply &reply))
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QDNSLOOKUP_H
diff --git a/src/network/kernel/qdnslookup_p.h b/src/network/kernel/qdnslookup_p.h
new file mode 100644
index 0000000000..8515620a93
--- /dev/null
+++ b/src/network/kernel/qdnslookup_p.h
@@ -0,0 +1,213 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Jeremy Lainé <jeremy.laine@m4x.org>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtNetwork 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$
+**
+****************************************************************************/
+
+#ifndef QDNSLOOKUP_P_H
+#define QDNSLOOKUP_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists for the convenience
+// of the QDnsLookup class. This header file may change from
+// version to version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "QtCore/qmutex.h"
+#include "QtCore/qrunnable.h"
+#include "QtCore/qsharedpointer.h"
+#include "QtCore/qthreadpool.h"
+#include "QtNetwork/qdnslookup.h"
+#include "QtNetwork/qhostaddress.h"
+#include "private/qobject_p.h"
+
+QT_BEGIN_NAMESPACE
+
+//#define QDNSLOOKUP_DEBUG
+
+class QDnsLookupRunnable;
+
+class QDnsLookupReply
+{
+public:
+ QDnsLookupReply()
+ : error(QDnsLookup::NoError)
+ { }
+
+ QDnsLookup::Error error;
+ QString errorString;
+
+ QList<QDnsDomainNameRecord> canonicalNameRecords;
+ QList<QDnsHostAddressRecord> hostAddressRecords;
+ QList<QDnsMailExchangeRecord> mailExchangeRecords;
+ QList<QDnsDomainNameRecord> nameServerRecords;
+ QList<QDnsDomainNameRecord> pointerRecords;
+ QList<QDnsServiceRecord> serviceRecords;
+ QList<QDnsTextRecord> textRecords;
+};
+
+class QDnsLookupPrivate : public QObjectPrivate
+{
+public:
+ QDnsLookupPrivate()
+ : isFinished(false)
+ , type(QDnsLookup::A)
+ , runnable(0)
+ { }
+
+ void _q_lookupFinished(const QDnsLookupReply &reply);
+
+ bool isFinished;
+ QString name;
+ QDnsLookup::Type type;
+ QDnsLookupReply reply;
+ QDnsLookupRunnable *runnable;
+
+ Q_DECLARE_PUBLIC(QDnsLookup)
+};
+
+class QDnsLookupRunnable : public QObject, public QRunnable
+{
+ Q_OBJECT
+
+public:
+ QDnsLookupRunnable(QDnsLookup::Type type, const QByteArray &name)
+ : requestType(type)
+ , requestName(name)
+ { }
+ void run();
+
+signals:
+ void finished(const QDnsLookupReply &reply);
+
+private:
+ static void query(const int requestType, const QByteArray &requestName, QDnsLookupReply *reply);
+ QDnsLookup::Type requestType;
+ QByteArray requestName;
+};
+
+class QDnsLookupThreadPool : public QThreadPool
+{
+ Q_OBJECT
+
+public:
+ QDnsLookupThreadPool();
+ void start(QRunnable *runnable);
+
+private slots:
+ void _q_applicationDestroyed();
+
+private:
+ QMutex signalsMutex;
+ bool signalsConnected;
+};
+
+class QDnsRecordPrivate : public QSharedData
+{
+public:
+ QDnsRecordPrivate()
+ : timeToLive(0)
+ { }
+
+ QString name;
+ quint32 timeToLive;
+};
+
+class QDnsDomainNameRecordPrivate : public QDnsRecordPrivate
+{
+public:
+ QDnsDomainNameRecordPrivate()
+ { }
+
+ QString value;
+};
+
+class QDnsHostAddressRecordPrivate : public QDnsRecordPrivate
+{
+public:
+ QDnsHostAddressRecordPrivate()
+ { }
+
+ QHostAddress value;
+};
+
+class QDnsMailExchangeRecordPrivate : public QDnsRecordPrivate
+{
+public:
+ QDnsMailExchangeRecordPrivate()
+ : preference(0)
+ { }
+
+ QString exchange;
+ quint16 preference;
+};
+
+class QDnsServiceRecordPrivate : public QDnsRecordPrivate
+{
+public:
+ QDnsServiceRecordPrivate()
+ : port(0),
+ priority(0),
+ weight(0)
+ { }
+
+ QString target;
+ quint16 port;
+ quint16 priority;
+ quint16 weight;
+};
+
+class QDnsTextRecordPrivate : public QDnsRecordPrivate
+{
+public:
+ QDnsTextRecordPrivate()
+ { }
+
+ QList<QByteArray> values;
+};
+
+QT_END_NAMESPACE
+
+Q_DECLARE_METATYPE(QDnsLookupReply)
+
+#endif // QDNSLOOKUP_P_H
diff --git a/src/network/kernel/qdnslookup_unix.cpp b/src/network/kernel/qdnslookup_unix.cpp
new file mode 100644
index 0000000000..7767dac45a
--- /dev/null
+++ b/src/network/kernel/qdnslookup_unix.cpp
@@ -0,0 +1,322 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Jeremy Lainé <jeremy.laine@m4x.org>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtNetwork 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 "qdnslookup_p.h"
+
+#include <qlibrary.h>
+#include <qscopedpointer.h>
+#include <qurl.h>
+#include <private/qmutexpool_p.h>
+
+#include <sys/types.h>
+#include <netinet/in.h>
+#include <arpa/nameser.h>
+#include <arpa/nameser_compat.h>
+#include <resolv.h>
+
+QT_BEGIN_NAMESPACE
+
+typedef int (*dn_expand_proto)(const unsigned char *, const unsigned char *, const unsigned char *, char *, int);
+static dn_expand_proto local_dn_expand = 0;
+typedef void (*res_nclose_proto)(res_state);
+static res_nclose_proto local_res_nclose = 0;
+typedef int (*res_ninit_proto)(res_state);
+static res_ninit_proto local_res_ninit = 0;
+typedef int (*res_nquery_proto)(res_state, const char *, int, int, unsigned char *, int);
+static res_nquery_proto local_res_nquery = 0;
+
+// Custom deleter to close resolver state.
+
+struct QDnsLookupStateDeleter
+{
+ static inline void cleanup(struct __res_state *pointer)
+ {
+ local_res_nclose(pointer);
+ }
+};
+
+static void resolveLibrary()
+{
+ QLibrary lib(QLatin1String("resolv"));
+ if (!lib.load())
+ return;
+
+ local_dn_expand = dn_expand_proto(lib.resolve("__dn_expand"));
+ if (!local_dn_expand)
+ local_dn_expand = dn_expand_proto(lib.resolve("dn_expand"));
+
+ local_res_nclose = res_nclose_proto(lib.resolve("__res_nclose"));
+ if (!local_res_nclose)
+ local_res_nclose = res_nclose_proto(lib.resolve("res_9_nclose"));
+ if (!local_res_nclose)
+ local_res_nclose = res_nclose_proto(lib.resolve("res_nclose"));
+
+ local_res_ninit = res_ninit_proto(lib.resolve("__res_ninit"));
+ if (!local_res_ninit)
+ local_res_ninit = res_ninit_proto(lib.resolve("res_9_ninit"));
+ if (!local_res_ninit)
+ local_res_ninit = res_ninit_proto(lib.resolve("res_ninit"));
+
+ local_res_nquery = res_nquery_proto(lib.resolve("__res_nquery"));
+ if (!local_res_nquery)
+ local_res_nquery = res_nquery_proto(lib.resolve("res_9_nquery"));
+ if (!local_res_nquery)
+ local_res_nquery = res_nquery_proto(lib.resolve("res_nquery"));
+}
+
+void QDnsLookupRunnable::query(const int requestType, const QByteArray &requestName, QDnsLookupReply *reply)
+{
+ // Load dn_expand, res_ninit and res_nquery on demand.
+ static volatile bool triedResolve = false;
+ if (!triedResolve) {
+ QMutexLocker locker(QMutexPool::globalInstanceGet(&local_res_ninit));
+ if (!triedResolve) {
+ resolveLibrary();
+ triedResolve = true;
+ }
+ }
+
+ // If dn_expand, res_ninit or res_nquery is missing, fail.
+ if (!local_dn_expand || !local_res_nclose || !local_res_ninit || !local_res_nquery) {
+ reply->error = QDnsLookup::ResolverError;
+ reply->errorString = tr("Resolver functions not found");
+ return;
+ }
+
+ // Initialize state.
+ struct __res_state state;
+ memset(&state, 0, sizeof(state));
+ if (local_res_ninit(&state) < 0) {
+ reply->error = QDnsLookup::ResolverError;
+ reply->errorString = tr("Resolver initialization failed");
+ return;
+ }
+#ifdef QDNSLOOKUP_DEBUG
+ state.options |= RES_DEBUG;
+#endif
+ QScopedPointer<struct __res_state, QDnsLookupStateDeleter> state_ptr(&state);
+
+ // Perform DNS query.
+ unsigned char response[PACKETSZ];
+ memset(response, 0, sizeof(response));
+ const int responseLength = local_res_nquery(&state, requestName, C_IN, requestType, response, sizeof(response));
+
+ // Check the response header.
+ HEADER *header = (HEADER*)response;
+ const int answerCount = ntohs(header->ancount);
+ switch (header->rcode) {
+ case NOERROR:
+ break;
+ case FORMERR:
+ reply->error = QDnsLookup::InvalidRequestError;
+ reply->errorString = tr("Server could not process query");
+ return;
+ case SERVFAIL:
+ reply->error = QDnsLookup::ServerFailureError;
+ reply->errorString = tr("Server failure");
+ return;
+ case NXDOMAIN:
+ reply->error = QDnsLookup::NotFoundError;
+ reply->errorString = tr("Non existent domain");
+ return;
+ case REFUSED:
+ reply->error = QDnsLookup::ServerRefusedError;
+ reply->errorString = tr("Server refused to answer");
+ return;
+ default:
+ reply->error = QDnsLookup::InvalidReplyError;
+ reply->errorString = tr("Invalid reply received");
+ return;
+ }
+
+ // Check the reply is valid.
+ if (responseLength < int(sizeof(HEADER))) {
+ reply->error = QDnsLookup::InvalidReplyError;
+ reply->errorString = tr("Invalid reply received");
+ return;
+ }
+
+ // Skip the query host, type (2 bytes) and class (2 bytes).
+ char host[PACKETSZ], answer[PACKETSZ];
+ unsigned char *p = response + sizeof(HEADER);
+ int status = local_dn_expand(response, response + responseLength, p, host, sizeof(host));
+ if (status < 0) {
+ reply->error = QDnsLookup::InvalidReplyError;
+ reply->errorString = tr("Could not expand domain name");
+ return;
+ }
+ p += status + 4;
+
+ // Extract results.
+ int answerIndex = 0;
+ while ((p < response + responseLength) && (answerIndex < answerCount)) {
+ status = local_dn_expand(response, response + responseLength, p, host, sizeof(host));
+ if (status < 0) {
+ reply->error = QDnsLookup::InvalidReplyError;
+ reply->errorString = tr("Could not expand domain name");
+ return;
+ }
+ const QString name = QUrl::fromAce(host);
+
+ p += status;
+ const quint16 type = (p[0] << 8) | p[1];
+ p += 2; // RR type
+ p += 2; // RR class
+ const quint32 ttl = (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3];
+ p += 4;
+ const quint16 size = (p[0] << 8) | p[1];
+ p += 2;
+
+ if (type == QDnsLookup::A) {
+ if (size != 4) {
+ reply->error = QDnsLookup::InvalidReplyError;
+ reply->errorString = tr("Invalid IPv4 address record");
+ return;
+ }
+ const quint32 addr = (p[0] << 24) | (p[1] << 16) | (p[2] << 8) | p[3];
+ QDnsHostAddressRecord record;
+ record.d->name = name;
+ record.d->timeToLive = ttl;
+ record.d->value = QHostAddress(addr);
+ reply->hostAddressRecords.append(record);
+ } else if (type == QDnsLookup::AAAA) {
+ if (size != 16) {
+ reply->error = QDnsLookup::InvalidReplyError;
+ reply->errorString = tr("Invalid IPv6 address record");
+ return;
+ }
+ QDnsHostAddressRecord record;
+ record.d->name = name;
+ record.d->timeToLive = ttl;
+ record.d->value = QHostAddress(p);
+ reply->hostAddressRecords.append(record);
+ } else if (type == QDnsLookup::CNAME) {
+ status = local_dn_expand(response, response + responseLength, p, answer, sizeof(answer));
+ if (status < 0) {
+ reply->error = QDnsLookup::InvalidReplyError;
+ reply->errorString = tr("Invalid canonical name record");
+ return;
+ }
+ QDnsDomainNameRecord record;
+ record.d->name = name;
+ record.d->timeToLive = ttl;
+ record.d->value = QUrl::fromAce(answer);
+ reply->canonicalNameRecords.append(record);
+ } else if (type == QDnsLookup::NS) {
+ status = local_dn_expand(response, response + responseLength, p, answer, sizeof(answer));
+ if (status < 0) {
+ reply->error = QDnsLookup::InvalidReplyError;
+ reply->errorString = tr("Invalid name server record");
+ return;
+ }
+ QDnsDomainNameRecord record;
+ record.d->name = name;
+ record.d->timeToLive = ttl;
+ record.d->value = QUrl::fromAce(answer);
+ reply->nameServerRecords.append(record);
+ } else if (type == QDnsLookup::PTR) {
+ status = local_dn_expand(response, response + responseLength, p, answer, sizeof(answer));
+ if (status < 0) {
+ reply->error = QDnsLookup::InvalidReplyError;
+ reply->errorString = tr("Invalid pointer record");
+ return;
+ }
+ QDnsDomainNameRecord record;
+ record.d->name = name;
+ record.d->timeToLive = ttl;
+ record.d->value = QUrl::fromAce(answer);
+ reply->pointerRecords.append(record);
+ } else if (type == QDnsLookup::MX) {
+ const quint16 preference = (p[0] << 8) | p[1];
+ status = local_dn_expand(response, response + responseLength, p + 2, answer, sizeof(answer));
+ if (status < 0) {
+ reply->error = QDnsLookup::InvalidReplyError;
+ reply->errorString = tr("Invalid mail exchange record");
+ return;
+ }
+ QDnsMailExchangeRecord record;
+ record.d->exchange = QUrl::fromAce(answer);
+ record.d->name = name;
+ record.d->preference = preference;
+ record.d->timeToLive = ttl;
+ reply->mailExchangeRecords.append(record);
+ } else if (type == QDnsLookup::SRV) {
+ const quint16 priority = (p[0] << 8) | p[1];
+ const quint16 weight = (p[2] << 8) | p[3];
+ const quint16 port = (p[4] << 8) | p[5];
+ status = local_dn_expand(response, response + responseLength, p + 6, answer, sizeof(answer));
+ if (status < 0) {
+ reply->error = QDnsLookup::InvalidReplyError;
+ reply->errorString = tr("Invalid service record");
+ return;
+ }
+ QDnsServiceRecord record;
+ record.d->name = name;
+ record.d->target = QUrl::fromAce(answer);
+ record.d->port = port;
+ record.d->priority = priority;
+ record.d->timeToLive = ttl;
+ record.d->weight = weight;
+ reply->serviceRecords.append(record);
+ } else if (type == QDnsLookup::TXT) {
+ unsigned char *txt = p;
+ QDnsTextRecord record;
+ record.d->name = name;
+ record.d->timeToLive = ttl;
+ while (txt < p + size) {
+ const unsigned char length = *txt;
+ txt++;
+ if (txt + length > p + size) {
+ reply->error = QDnsLookup::InvalidReplyError;
+ reply->errorString = tr("Invalid text record");
+ return;
+ }
+ record.d->values << QByteArray((char*)txt, length);
+ txt += length;
+ }
+ reply->textRecords.append(record);
+ }
+ p += size;
+ answerIndex++;
+ }
+}
+
+QT_END_NAMESPACE
diff --git a/src/network/kernel/qdnslookup_win.cpp b/src/network/kernel/qdnslookup_win.cpp
new file mode 100644
index 0000000000..ba97e64942
--- /dev/null
+++ b/src/network/kernel/qdnslookup_win.cpp
@@ -0,0 +1,177 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Jeremy Lainé <jeremy.laine@m4x.org>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtNetwork 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 "qdnslookup_p.h"
+
+#include <qurl.h>
+#include <private/qmutexpool_p.h>
+#include <private/qsystemlibrary_p.h>
+
+#include <qt_windows.h>
+#include <windns.h>
+
+QT_BEGIN_NAMESPACE
+
+typedef DNS_STATUS (*dns_query_utf8_proto)(PCSTR,WORD,DWORD,PIP4_ARRAY,PDNS_RECORD*,PVOID*);
+static dns_query_utf8_proto local_dns_query_utf8 = 0;
+typedef void (*dns_record_list_free_proto)(PDNS_RECORD,DNS_FREE_TYPE);
+static dns_record_list_free_proto local_dns_record_list_free = 0;
+
+static void resolveLibrary()
+{
+ local_dns_query_utf8 = (dns_query_utf8_proto) QSystemLibrary::resolve(QLatin1String("dnsapi"), "DnsQuery_UTF8");
+ local_dns_record_list_free = (dns_record_list_free_proto) QSystemLibrary::resolve(QLatin1String("dnsapi"), "DnsRecordListFree");
+}
+
+void QDnsLookupRunnable::query(const int requestType, const QByteArray &requestName, QDnsLookupReply *reply)
+{
+ // Load DnsQuery_UTF8 and DnsRecordListFree on demand.
+ static volatile bool triedResolve = false;
+ if (!triedResolve) {
+ QMutexLocker locker(QMutexPool::globalInstanceGet(&local_dns_query_utf8));
+ if (!triedResolve) {
+ resolveLibrary();
+ triedResolve = true;
+ }
+ }
+
+ // If DnsQuery_UTF8 or DnsRecordListFree is missing, fail.
+ if (!local_dns_query_utf8 || !local_dns_record_list_free) {
+ reply->error = QDnsLookup::ResolverError,
+ reply->errorString = tr("Resolver functions not found");
+ return;
+ }
+
+ // Perform DNS query.
+ PDNS_RECORD dns_records;
+ const DNS_STATUS status = local_dns_query_utf8(requestName, requestType, DNS_QUERY_STANDARD, NULL, &dns_records, NULL);
+ switch (status) {
+ case ERROR_SUCCESS:
+ break;
+ case DNS_ERROR_RCODE_FORMAT_ERROR:
+ reply->error = QDnsLookup::InvalidRequestError;
+ reply->errorString = tr("Server could not process query");
+ return;
+ case DNS_ERROR_RCODE_SERVER_FAILURE:
+ reply->error = QDnsLookup::ServerFailureError;
+ reply->errorString = tr("Server failure");
+ return;
+ case DNS_ERROR_RCODE_NAME_ERROR:
+ reply->error = QDnsLookup::NotFoundError;
+ reply->errorString = tr("Non existent domain");
+ return;
+ case DNS_ERROR_RCODE_REFUSED:
+ reply->error = QDnsLookup::ServerRefusedError;
+ reply->errorString = tr("Server refused to answer");
+ return;
+ default:
+ reply->error = QDnsLookup::InvalidReplyError;
+ reply->errorString = tr("Invalid reply received");
+ return;
+ }
+
+ // Extract results.
+ for (PDNS_RECORD ptr = dns_records; ptr != NULL; ptr = ptr->pNext) {
+ const QString name = QUrl::fromAce((char*)ptr->pName);
+ if (ptr->wType == QDnsLookup::A) {
+ QDnsHostAddressRecord record;
+ record.d->name = name;
+ record.d->timeToLive = ptr->dwTtl;
+ record.d->value = QHostAddress(ntohl(ptr->Data.A.IpAddress));
+ reply->hostAddressRecords.append(record);
+ } else if (ptr->wType == QDnsLookup::AAAA) {
+ Q_IPV6ADDR addr;
+ memcpy(&addr, &ptr->Data.AAAA.Ip6Address, sizeof(Q_IPV6ADDR));
+
+ QDnsHostAddressRecord record;
+ record.d->name = name;
+ record.d->timeToLive = ptr->dwTtl;
+ record.d->value = QHostAddress(addr);
+ reply->hostAddressRecords.append(record);
+ } else if (ptr->wType == QDnsLookup::CNAME) {
+ QDnsDomainNameRecord record;
+ record.d->name = name;
+ record.d->timeToLive = ptr->dwTtl;
+ record.d->value = QUrl::fromAce((char*)ptr->Data.Cname.pNameHost);
+ reply->canonicalNameRecords.append(record);
+ } else if (ptr->wType == QDnsLookup::MX) {
+ QDnsMailExchangeRecord record;
+ record.d->name = name;
+ record.d->exchange = QUrl::fromAce((char*)ptr->Data.Mx.pNameExchange);
+ record.d->preference = ptr->Data.Mx.wPreference;
+ record.d->timeToLive = ptr->dwTtl;
+ reply->mailExchangeRecords.append(record);
+ } else if (ptr->wType == QDnsLookup::NS) {
+ QDnsDomainNameRecord record;
+ record.d->name = name;
+ record.d->timeToLive = ptr->dwTtl;
+ record.d->value = QUrl::fromAce((char*)ptr->Data.Ns.pNameHost);
+ reply->nameServerRecords.append(record);
+ } else if (ptr->wType == QDnsLookup::PTR) {
+ QDnsDomainNameRecord record;
+ record.d->name = name;
+ record.d->timeToLive = ptr->dwTtl;
+ record.d->value = QUrl::fromAce((char*)ptr->Data.Ptr.pNameHost);
+ reply->pointerRecords.append(record);
+ } else if (ptr->wType == QDnsLookup::SRV) {
+ QDnsServiceRecord record;
+ record.d->name = name;
+ record.d->target = QUrl::fromAce((char*)ptr->Data.Srv.pNameTarget);
+ record.d->port = ptr->Data.Srv.wPort;
+ record.d->priority = ptr->Data.Srv.wPriority;
+ record.d->timeToLive = ptr->dwTtl;
+ record.d->weight = ptr->Data.Srv.wWeight;
+ reply->serviceRecords.append(record);
+ } else if (ptr->wType == QDnsLookup::TXT) {
+ QDnsTextRecord record;
+ record.d->name = name;
+ record.d->timeToLive = ptr->dwTtl;
+ for (unsigned int i = 0; i < ptr->Data.Txt.dwStringCount; ++i) {
+ record.d->values << QByteArray((char*)ptr->Data.Txt.pStringArray[i]);
+ }
+ reply->textRecords.append(record);
+ }
+ }
+
+ local_dns_record_list_free(dns_records, DnsFreeRecordList);
+}
+
+QT_END_NAMESPACE
diff --git a/src/network/kernel/qhostaddress.cpp b/src/network/kernel/qhostaddress.cpp
index 3bda5410d0..b68335314f 100644
--- a/src/network/kernel/qhostaddress.cpp
+++ b/src/network/kernel/qhostaddress.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/kernel/qhostaddress.h b/src/network/kernel/qhostaddress.h
index 4747499e38..fdf09ecc82 100644
--- a/src/network/kernel/qhostaddress.h
+++ b/src/network/kernel/qhostaddress.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
class QHostAddressPrivate;
diff --git a/src/network/kernel/qhostaddress_p.h b/src/network/kernel/qhostaddress_p.h
index bc863a8562..26dbf861f2 100644
--- a/src/network/kernel/qhostaddress_p.h
+++ b/src/network/kernel/qhostaddress_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/kernel/qhostinfo.cpp b/src/network/kernel/qhostinfo.cpp
index 45073f6ad1..085f2f6651 100644
--- a/src/network/kernel/qhostinfo.cpp
+++ b/src/network/kernel/qhostinfo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/kernel/qhostinfo.h b/src/network/kernel/qhostinfo.h
index d84d6d72fa..df377872c8 100644
--- a/src/network/kernel/qhostinfo.h
+++ b/src/network/kernel/qhostinfo.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
class QObject;
class QHostInfoPrivate;
diff --git a/src/network/kernel/qhostinfo_p.h b/src/network/kernel/qhostinfo_p.h
index 35de89c1e9..57a5050172 100644
--- a/src/network/kernel/qhostinfo_p.h
+++ b/src/network/kernel/qhostinfo_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/kernel/qhostinfo_unix.cpp b/src/network/kernel/qhostinfo_unix.cpp
index 73882dd54f..71eb240812 100644
--- a/src/network/kernel/qhostinfo_unix.cpp
+++ b/src/network/kernel/qhostinfo_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -63,10 +63,7 @@
#endif
#if defined (QT_NO_GETADDRINFO)
-#include <qmutex.h>
-QT_BEGIN_NAMESPACE
-Q_GLOBAL_STATIC(QMutex, getHostByNameMutex)
-QT_END_NAMESPACE
+static QBasicMutex getHostByNameMutex;
#endif
QT_BEGIN_NAMESPACE
@@ -267,7 +264,7 @@ QHostInfo QHostInfoAgent::fromName(const QString &hostName)
// reentrant on all platforms. For now this is okay since we only
// use one QHostInfoAgent, but if more agents are introduced, locking
// must be provided.
- QMutexLocker locker(::getHostByNameMutex());
+ QMutexLocker locker(&getHostByNameMutex);
hostent *result = gethostbyname(aceHostname.constData());
if (result) {
if (result->h_addrtype == AF_INET) {
@@ -348,7 +345,7 @@ QString QHostInfo::localDomainName()
#if defined(QT_NO_GETADDRINFO)
// We have to call res_init to be sure that _res was initialized
// So, for systems without getaddrinfo (which is thread-safe), we lock the mutex too
- QMutexLocker locker(::getHostByNameMutex());
+ QMutexLocker locker(&getHostByNameMutex);
#endif
local_res_init();
QString domainName = QUrl::fromAce(local_res->defdname);
diff --git a/src/network/kernel/qhostinfo_win.cpp b/src/network/kernel/qhostinfo_win.cpp
index fc3724f879..a00389e3ed 100644
--- a/src/network/kernel/qhostinfo_win.cpp
+++ b/src/network/kernel/qhostinfo_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -95,15 +95,11 @@ static void resolveLibrary()
#endif
}
-#if defined(Q_OS_WINCE)
-#include <qmutex.h>
-Q_GLOBAL_STATIC(QMutex, qPrivCEMutex)
-#endif
-
QHostInfo QHostInfoAgent::fromName(const QString &hostName)
{
#if defined(Q_OS_WINCE)
- QMutexLocker locker(qPrivCEMutex());
+ static QBasicMutex qPrivCEMutex;
+ QMutexLocker locker(&qPrivCEMutex);
#endif
QWindowsSockInit winSock;
diff --git a/src/network/kernel/qnetworkinterface.cpp b/src/network/kernel/qnetworkinterface.cpp
index 1f69d9fa1b..7b68ed6c12 100644
--- a/src/network/kernel/qnetworkinterface.cpp
+++ b/src/network/kernel/qnetworkinterface.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/kernel/qnetworkinterface.h b/src/network/kernel/qnetworkinterface.h
index 17a8e09cee..dfdbb789fa 100644
--- a/src/network/kernel/qnetworkinterface.h
+++ b/src/network/kernel/qnetworkinterface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
template<typename T> class QList;
diff --git a/src/network/kernel/qnetworkinterface_p.h b/src/network/kernel/qnetworkinterface_p.h
index a964f9bc54..a80a8c4b01 100644
--- a/src/network/kernel/qnetworkinterface_p.h
+++ b/src/network/kernel/qnetworkinterface_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/kernel/qnetworkinterface_unix.cpp b/src/network/kernel/qnetworkinterface_unix.cpp
index 8bd7e32766..d5520e4917 100644
--- a/src/network/kernel/qnetworkinterface_unix.cpp
+++ b/src/network/kernel/qnetworkinterface_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/kernel/qnetworkinterface_win.cpp b/src/network/kernel/qnetworkinterface_win.cpp
index da9fa80efc..a311af7686 100644
--- a/src/network/kernel/qnetworkinterface_win.cpp
+++ b/src/network/kernel/qnetworkinterface_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/kernel/qnetworkinterface_win_p.h b/src/network/kernel/qnetworkinterface_win_p.h
index 0445e512d2..73e5c625ec 100644
--- a/src/network/kernel/qnetworkinterface_win_p.h
+++ b/src/network/kernel/qnetworkinterface_win_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/kernel/qnetworkproxy.cpp b/src/network/kernel/qnetworkproxy.cpp
index a8873d3be9..4070c8f014 100644
--- a/src/network/kernel/qnetworkproxy.cpp
+++ b/src/network/kernel/qnetworkproxy.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/kernel/qnetworkproxy.h b/src/network/kernel/qnetworkproxy.h
index 472c220e62..8f961c43ac 100644
--- a/src/network/kernel/qnetworkproxy.h
+++ b/src/network/kernel/qnetworkproxy.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
class QUrl;
class QNetworkConfiguration;
diff --git a/src/network/kernel/qnetworkproxy_generic.cpp b/src/network/kernel/qnetworkproxy_generic.cpp
index 9328eb379a..c0c6b9fe42 100644
--- a/src/network/kernel/qnetworkproxy_generic.cpp
+++ b/src/network/kernel/qnetworkproxy_generic.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/kernel/qnetworkproxy_mac.cpp b/src/network/kernel/qnetworkproxy_mac.cpp
index a994976860..75ed17048c 100644
--- a/src/network/kernel/qnetworkproxy_mac.cpp
+++ b/src/network/kernel/qnetworkproxy_mac.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/kernel/qnetworkproxy_p.h b/src/network/kernel/qnetworkproxy_p.h
index 2d452d75b4..5b390a573e 100644
--- a/src/network/kernel/qnetworkproxy_p.h
+++ b/src/network/kernel/qnetworkproxy_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 David Faure <dfaure@kdab.net>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/kernel/qnetworkproxy_win.cpp b/src/network/kernel/qnetworkproxy_win.cpp
index 84b2b79c11..6969a9effd 100644
--- a/src/network/kernel/qnetworkproxy_win.cpp
+++ b/src/network/kernel/qnetworkproxy_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,11 +47,11 @@
#include <qstringlist.h>
#include <qregexp.h>
#include <qurl.h>
+#include <private/qsystemlibrary_p.h>
#include <string.h>
#include <qt_windows.h>
#include <wininet.h>
-#include <private/qsystemlibrary_p.h>
/*
* Information on the WinHTTP DLL:
diff --git a/src/network/kernel/qurlinfo.cpp b/src/network/kernel/qurlinfo.cpp
index 8b320a9e03..a446f03b85 100644
--- a/src/network/kernel/qurlinfo.cpp
+++ b/src/network/kernel/qurlinfo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/kernel/qurlinfo.h b/src/network/kernel/qurlinfo.h
index 3bcdff6a9c..7fbf860c31 100644
--- a/src/network/kernel/qurlinfo.h
+++ b/src/network/kernel/qurlinfo.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
#ifndef QT_NO_URLINFO
diff --git a/src/network/socket/qabstractsocket.cpp b/src/network/socket/qabstractsocket.cpp
index e1a2449593..2e54a2d3ca 100644
--- a/src/network/socket/qabstractsocket.cpp
+++ b/src/network/socket/qabstractsocket.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -317,6 +317,10 @@
because the response from the proxy server could not be understood.
\value OperationError An operation was attempted while the socket was in a state that
did not permit it.
+ \value SslInternalError The SSL library being used reported a internal error, this is
+ probably the result of a bad installation or misconfiguration of the library.
+ \value SslInvalidUserDataError Invalid data(certificate, key, cypher, etc.) was
+ provided and its use resulted in an error in the SSL library.
\value UnknownSocketError An unidentified error occurred.
\sa QAbstractSocket::error()
@@ -425,6 +429,19 @@
+ ReuseAddressHint), and on Windows, its equivalent to ShareAddress.
*/
+/*! \enum QAbstractSocket::PauseMode
+ \since 5.0
+
+ This enum describes the behavior of when the socket should hold
+ back with continuing data transfer.
+
+ \value PauseNever Do not pause data transfer on the socket. This is the
+ default and matches the behaviour of Qt 4.
+ \value PauseOnNotify Pause data transfer on the socket upon receiving a
+ notification. The only notification currently supported is
+ QSslSocket::sslErrors().
+*/
+
#include "qabstractsocket.h"
#include "qabstractsocket_p.h"
@@ -529,6 +546,7 @@ QAbstractSocketPrivate::QAbstractSocketPrivate()
abortCalled(false),
closeCalled(false),
pendingClose(false),
+ pauseMode(QAbstractSocket::PauseNever),
port(0),
localPort(0),
peerPort(0),
@@ -797,7 +815,7 @@ bool QAbstractSocketPrivate::flush()
&& socketEngine->bytesToWrite() == 0)) {
#if defined (QABSTRACTSOCKET_DEBUG)
qDebug("QAbstractSocketPrivate::flush() nothing to do: valid ? %s, writeBuffer.isEmpty() ? %s",
- socketEngine->isValid() ? "yes" : "no", writeBuffer.isEmpty() ? "yes" : "no");
+ (socketEngine && socketEngine->isValid()) ? "yes" : "no", writeBuffer.isEmpty() ? "yes" : "no");
#endif
// this covers the case when the buffer was empty, but we had to wait for the socket engine to finish
@@ -1354,6 +1372,55 @@ QAbstractSocket::~QAbstractSocket()
/*!
\since 5.0
+ Continues data transfer on the socket. This method should only be used
+ after the socket has been set to pause upon notifications and a
+ notification has been received.
+ The only notification currently supported is QSslSocket::sslErrors().
+ Calling this method if the socket is not paused results in undefined
+ behavior.
+
+ \sa pauseMode(), setPauseMode()
+*/
+void QAbstractSocket::resume()
+{
+ Q_D(QAbstractSocket);
+ d->resumeSocketNotifiers(this);
+}
+
+/*!
+ \since 5.0
+
+ Returns the pause mode of this socket.
+
+ \sa setPauseMode(), resume()
+*/
+QAbstractSocket::PauseModes QAbstractSocket::pauseMode() const
+{
+ return d_func()->pauseMode;
+}
+
+
+/*!
+ \since 5.0
+
+ Controls whether to pause upon receiving a notification. The only notification
+ currently supported is QSslSocket::sslErrors(). If set to PauseOnNotify,
+ data transfer on the socket will be paused and needs to be enabled explicitly
+ again by calling resume().
+ By default this option is set to PauseNever.
+ This option must be called before connecting to the server, otherwise it will
+ result in undefined behavior.
+
+ \sa pauseMode(), resume()
+*/
+void QAbstractSocket::setPauseMode(PauseModes pauseMode)
+{
+ d_func()->pauseMode = pauseMode;
+}
+
+/*!
+ \since 5.0
+
Binds to \a address on port \a port, using the BindMode \a mode.
Binds this socket to the address \a address and the port \a port.
@@ -1734,10 +1801,6 @@ bool QAbstractSocket::setSocketDescriptor(qintptr socketDescriptor, SocketState
OpenMode openMode)
{
Q_D(QAbstractSocket);
-#ifndef QT_NO_OPENSSL
- if (QSslSocket *socket = qobject_cast<QSslSocket *>(this))
- return socket->setSocketDescriptor(socketDescriptor, socketState, openMode);
-#endif
d->resetSocketLayer();
d->socketEngine = QAbstractSocketEngine::createSocketEngine(socketDescriptor, this);
@@ -1786,13 +1849,6 @@ bool QAbstractSocket::setSocketDescriptor(qintptr socketDescriptor, SocketState
*/
void QAbstractSocket::setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value)
{
-#ifndef QT_NO_OPENSSL
- if (QSslSocket *sslSocket = qobject_cast<QSslSocket*>(this)) {
- sslSocket->setSocketOption(option, value);
- return;
- }
-#endif
-
if (!d_func()->socketEngine)
return;
@@ -1827,12 +1883,6 @@ void QAbstractSocket::setSocketOption(QAbstractSocket::SocketOption option, cons
*/
QVariant QAbstractSocket::socketOption(QAbstractSocket::SocketOption option)
{
-#ifndef QT_NO_OPENSSL
- if (QSslSocket *sslSocket = qobject_cast<QSslSocket*>(this)) {
- return sslSocket->socketOption(option);
- }
-#endif
-
if (!d_func()->socketEngine)
return QVariant();
@@ -1913,13 +1963,6 @@ bool QAbstractSocket::waitForConnected(int msecs)
return true;
}
-#ifndef QT_NO_OPENSSL
- // Manual polymorphism; this function is not virtual, but has an overload
- // in QSslSocket.
- if (QSslSocket *socket = qobject_cast<QSslSocket *>(this))
- return socket->waitForConnected(msecs);
-#endif
-
bool wasPendingClose = d->pendingClose;
d->pendingClose = false;
QElapsedTimer stopWatch;
@@ -2139,12 +2182,6 @@ bool QAbstractSocket::waitForBytesWritten(int msecs)
bool QAbstractSocket::waitForDisconnected(int msecs)
{
Q_D(QAbstractSocket);
-#ifndef QT_NO_OPENSSL
- // Manual polymorphism; this function is not virtual, but has an overload
- // in QSslSocket.
- if (QSslSocket *socket = qobject_cast<QSslSocket *>(this))
- return socket->waitForDisconnected(msecs);
-#endif
// require calling connectToHost() before waitForDisconnected()
if (state() == UnconnectedState) {
@@ -2756,15 +2793,6 @@ void QAbstractSocket::setReadBufferSize(qint64 size)
{
Q_D(QAbstractSocket);
-#ifndef QT_NO_OPENSSL
- // Manual polymorphism; setReadBufferSize() isn't virtual, but QSslSocket overloads
- // it.
- if (QSslSocket *socket = qobject_cast<QSslSocket *>(this)) {
- socket->setReadBufferSize(size);
- return;
- }
-#endif
-
if (d->readBufferMaxSize == size)
return;
d->readBufferMaxSize = size;
diff --git a/src/network/socket/qabstractsocket.h b/src/network/socket/qabstractsocket.h
index e821f3ddb2..7a9f70b47e 100644
--- a/src/network/socket/qabstractsocket.h
+++ b/src/network/socket/qabstractsocket.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
class QHostAddress;
#ifndef QT_NO_NETWORKPROXY
@@ -98,6 +97,8 @@ public:
ProxyNotFoundError,
ProxyProtocolError,
OperationError,
+ SslInternalError, /* 20 */
+ SslInvalidUserDataError,
UnknownSocketError = -1
};
@@ -124,10 +125,19 @@ public:
ReuseAddressHint = 0x4
};
Q_DECLARE_FLAGS(BindMode, BindFlag)
+ enum PauseMode {
+ PauseNever = 0x0,
+ PauseOnNotify = 0x1
+ };
+ Q_DECLARE_FLAGS(PauseModes, PauseMode)
QAbstractSocket(SocketType socketType, QObject *parent);
virtual ~QAbstractSocket();
+ virtual void resume(); // to continue after proxy authentication required, SSL errors etc.
+ PauseModes pauseMode() const;
+ void setPauseMode(PauseModes pauseMode);
+
bool bind(const QHostAddress &address, quint16 port = 0, BindMode mode = DefaultForPlatform);
bool bind(quint16 port = 0, BindMode mode = DefaultForPlatform);
@@ -148,20 +158,17 @@ public:
QHostAddress peerAddress() const;
QString peerName() const;
- // ### Qt 5: Make setReadBufferSize() virtual
qint64 readBufferSize() const;
- void setReadBufferSize(qint64 size);
+ virtual void setReadBufferSize(qint64 size);
void abort();
- // ### Qt 5: Make socketDescriptor() and setSocketDescriptor() virtual.
- qintptr socketDescriptor() const;
- bool setSocketDescriptor(qintptr socketDescriptor, SocketState state = ConnectedState,
+ virtual qintptr socketDescriptor() const;
+ virtual bool setSocketDescriptor(qintptr socketDescriptor, SocketState state = ConnectedState,
OpenMode openMode = ReadWrite);
- // ### Qt 5: Make virtual?
- void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value);
- QVariant socketOption(QAbstractSocket::SocketOption option);
+ virtual void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value);
+ virtual QVariant socketOption(QAbstractSocket::SocketOption option);
SocketType socketType() const;
SocketState state() const;
@@ -174,11 +181,10 @@ public:
bool flush();
// for synchronous access
- // ### Qt 5: Make waitForConnected() and waitForDisconnected() virtual.
- bool waitForConnected(int msecs = 30000);
+ virtual bool waitForConnected(int msecs = 30000);
bool waitForReadyRead(int msecs = 30000);
bool waitForBytesWritten(int msecs = 30000);
- bool waitForDisconnected(int msecs = 30000);
+ virtual bool waitForDisconnected(int msecs = 30000);
#ifndef QT_NO_NETWORKPROXY
void setProxy(const QNetworkProxy &networkProxy);
@@ -223,6 +229,7 @@ private:
Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractSocket::BindMode)
+Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractSocket::PauseModes)
#ifndef QT_NO_DEBUG_STREAM
Q_NETWORK_EXPORT QDebug operator<<(QDebug, QAbstractSocket::SocketError);
diff --git a/src/network/socket/qabstractsocket_p.h b/src/network/socket/qabstractsocket_p.h
index 49e7c82e21..578213f6de 100644
--- a/src/network/socket/qabstractsocket_p.h
+++ b/src/network/socket/qabstractsocket_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -106,6 +106,8 @@ public:
bool closeCalled;
bool pendingClose;
+ QAbstractSocket::PauseModes pauseMode;
+
QString hostName;
quint16 port;
QHostAddress host;
diff --git a/src/network/socket/qabstractsocketengine.cpp b/src/network/socket/qabstractsocketengine.cpp
index 8c1ee88ce1..e9e49d41ec 100644
--- a/src/network/socket/qabstractsocketengine.cpp
+++ b/src/network/socket/qabstractsocketengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qabstractsocketengine_p.h b/src/network/socket/qabstractsocketengine_p.h
index e365eb8b5e..92d795408f 100644
--- a/src/network/socket/qabstractsocketengine_p.h
+++ b/src/network/socket/qabstractsocketengine_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qhttpsocketengine.cpp b/src/network/socket/qhttpsocketengine.cpp
index e882f77dcd..93c5aaf7bd 100644
--- a/src/network/socket/qhttpsocketengine.cpp
+++ b/src/network/socket/qhttpsocketengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -43,7 +43,7 @@
#include "qtcpsocket.h"
#include "qhostaddress.h"
#include "qurl.h"
-#include "private/qhttpheader_p.h"
+#include "private/qhttpnetworkreply_p.h"
#include "qelapsedtimer.h"
#include "qnetworkinterface.h"
@@ -72,6 +72,7 @@ bool QHttpSocketEngine::initialize(QAbstractSocket::SocketType type, QAbstractSo
setProtocol(protocol);
setSocketType(type);
d->socket = new QTcpSocket(this);
+ d->reply = new QHttpNetworkReply(QUrl(), this);
#ifndef QT_NO_BEARERMANAGEMENT
d->socket->setProperty("_q_networkSession", property("_q_networkSession"));
#endif
@@ -214,7 +215,7 @@ void QHttpSocketEngine::close()
qint64 QHttpSocketEngine::bytesAvailable() const
{
Q_D(const QHttpSocketEngine);
- return d->readBuffer.size() + (d->socket ? d->socket->bytesAvailable() : 0);
+ return d->socket ? d->socket->bytesAvailable() : 0;
}
qint64 QHttpSocketEngine::read(char *data, qint64 maxlen)
@@ -567,20 +568,21 @@ void QHttpSocketEngine::slotSocketReadNotification()
return;
}
- // Still in handshake mode. Wait until we've got a full response.
- bool done = false;
- do {
- d->readBuffer += d->socket->readLine();
- } while (!(done = d->readBuffer.endsWith("\r\n\r\n")) && d->socket->canReadLine());
-
- if (!done) {
- // Wait for more.
- return;
+ bool ok = true;
+ if (d->reply->d_func()->state == QHttpNetworkReplyPrivate::NothingDoneState)
+ d->reply->d_func()->state = QHttpNetworkReplyPrivate::ReadingStatusState;
+ if (d->reply->d_func()->state == QHttpNetworkReplyPrivate::ReadingStatusState) {
+ ok = d->reply->d_func()->readStatus(d->socket) != -1;
+ if (ok && d->reply->d_func()->state == QHttpNetworkReplyPrivate::ReadingStatusState)
+ return; //Not done parsing headers yet, wait for more data
}
-
- if (!d->readBuffer.startsWith("HTTP/1.")) {
+ if (ok && d->reply->d_func()->state == QHttpNetworkReplyPrivate::ReadingHeaderState) {
+ ok = d->reply->d_func()->readHeader(d->socket) != -1;
+ if (ok && d->reply->d_func()->state == QHttpNetworkReplyPrivate::ReadingHeaderState)
+ return; //Not done parsing headers yet, wait for more data
+ }
+ if (!ok) {
// protocol error, this isn't HTTP
- d->readBuffer.clear();
d->socket->close();
setState(QAbstractSocket::UnconnectedState);
setError(QAbstractSocket::ProxyProtocolError, tr("Did not receive HTTP response from proxy"));
@@ -588,10 +590,7 @@ void QHttpSocketEngine::slotSocketReadNotification()
return;
}
- QHttpResponseHeader responseHeader(QString::fromLatin1(d->readBuffer));
- d->readBuffer.clear(); // we parsed the proxy protocol response. from now on direct socket reading will be done
-
- int statusCode = responseHeader.statusCode();
+ int statusCode = d->reply->statusCode();
QAuthenticatorPrivate *priv = 0;
if (statusCode == 200) {
d->state = Connected;
@@ -613,7 +612,7 @@ void QHttpSocketEngine::slotSocketReadNotification()
d->authenticator.detach();
priv = QAuthenticatorPrivate::getPrivate(d->authenticator);
- priv->parseHttpResponse(responseHeader, true);
+ priv->parseHttpResponse(d->reply->header(), true);
if (priv->phase == QAuthenticatorPrivate::Invalid) {
// problem parsing the reply
@@ -625,21 +624,21 @@ void QHttpSocketEngine::slotSocketReadNotification()
}
bool willClose;
- QString proxyConnectionHeader = responseHeader.value(QLatin1String("Proxy-Connection"));
+ QByteArray proxyConnectionHeader = d->reply->headerField("Proxy-Connection");
// Although most proxies use the unofficial Proxy-Connection header, the Connection header
// from http spec is also allowed.
if (proxyConnectionHeader.isEmpty())
- proxyConnectionHeader = responseHeader.value(QLatin1String("Connection"));
+ proxyConnectionHeader = d->reply->headerField("Connection");
proxyConnectionHeader = proxyConnectionHeader.toLower();
- if (proxyConnectionHeader == QLatin1String("close")) {
+ if (proxyConnectionHeader == "close") {
willClose = true;
- } else if (proxyConnectionHeader == QLatin1String("keep-alive")) {
+ } else if (proxyConnectionHeader == "keep-alive") {
willClose = false;
} else {
// no Proxy-Connection header, so use the default
// HTTP 1.1's default behaviour is to keep persistent connections
// HTTP 1.0 or earlier, so we expect the server to close
- willClose = (responseHeader.majorVersion() * 0x100 + responseHeader.minorVersion()) <= 0x0100;
+ willClose = (d->reply->majorVersion() * 0x100 + d->reply->minorVersion()) <= 0x0100;
}
if (willClose) {
@@ -647,6 +646,9 @@ void QHttpSocketEngine::slotSocketReadNotification()
// especially since the signal below may trigger a new event loop
d->socket->disconnectFromHost();
d->socket->readAll();
+ //We're done with the reply and need to reset it for the next connection
+ delete d->reply;
+ d->reply = new QHttpNetworkReply;
}
if (priv->phase == QAuthenticatorPrivate::Done)
@@ -662,7 +664,7 @@ void QHttpSocketEngine::slotSocketReadNotification()
d->socket->connectToHost(d->proxy.hostName(), d->proxy.port());
} else {
bool ok;
- int contentLength = responseHeader.value(QLatin1String("Content-Length")).toInt(&ok);
+ int contentLength = d->reply->headerField("Content-Length").toInt(&ok);
if (ok && contentLength > 0) {
d->state = ReadResponseContent;
d->pendingResponseData = contentLength;
@@ -708,7 +710,6 @@ void QHttpSocketEngine::slotSocketBytesWritten()
void QHttpSocketEngine::slotSocketError(QAbstractSocket::SocketError error)
{
Q_D(QHttpSocketEngine);
- d->readBuffer.clear();
if (d->state != Connected) {
// we are in proxy handshaking stages
@@ -811,6 +812,7 @@ QHttpSocketEnginePrivate::QHttpSocketEnginePrivate()
, pendingResponseData(0)
{
socket = 0;
+ reply = 0;
state = QHttpSocketEngine::None;
}
diff --git a/src/network/socket/qhttpsocketengine_p.h b/src/network/socket/qhttpsocketengine_p.h
index 1a93956bd2..a6e8b99310 100644
--- a/src/network/socket/qhttpsocketengine_p.h
+++ b/src/network/socket/qhttpsocketengine_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -63,6 +63,7 @@ QT_BEGIN_NAMESPACE
#if !defined(QT_NO_NETWORKPROXY) && !defined(QT_NO_HTTP)
class QTcpSocket;
+class QHttpNetworkReply;
class QHttpSocketEnginePrivate;
class Q_AUTOTEST_EXPORT QHttpSocketEngine : public QAbstractSocketEngine
@@ -171,7 +172,7 @@ public:
QNetworkProxy proxy;
QString peerName;
QTcpSocket *socket;
- QByteArray readBuffer; // only used for parsing the proxy response
+ QHttpNetworkReply *reply; // only used for parsing the proxy response
QHttpSocketEngine::HttpState state;
QAuthenticator authenticator;
bool readNotificationEnabled;
diff --git a/src/network/socket/qlocalserver.cpp b/src/network/socket/qlocalserver.cpp
index fc5fe3443e..b3fe4ac448 100644
--- a/src/network/socket/qlocalserver.cpp
+++ b/src/network/socket/qlocalserver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qlocalserver.h b/src/network/socket/qlocalserver.h
index 6887c16056..f694131953 100644
--- a/src/network/socket/qlocalserver.h
+++ b/src/network/socket/qlocalserver.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
#ifndef QT_NO_LOCALSERVER
diff --git a/src/network/socket/qlocalserver_p.h b/src/network/socket/qlocalserver_p.h
index d762818692..6e39136dd4 100644
--- a/src/network/socket/qlocalserver_p.h
+++ b/src/network/socket/qlocalserver_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qlocalserver_tcp.cpp b/src/network/socket/qlocalserver_tcp.cpp
index cb4ee53f6a..d6c6a1af92 100644
--- a/src/network/socket/qlocalserver_tcp.cpp
+++ b/src/network/socket/qlocalserver_tcp.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qlocalserver_unix.cpp b/src/network/socket/qlocalserver_unix.cpp
index 5859ab0080..c4482dadfc 100644
--- a/src/network/socket/qlocalserver_unix.cpp
+++ b/src/network/socket/qlocalserver_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qlocalserver_win.cpp b/src/network/socket/qlocalserver_win.cpp
index bdbe4d74f1..67e319cdbb 100644
--- a/src/network/socket/qlocalserver_win.cpp
+++ b/src/network/socket/qlocalserver_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qlocalsocket.cpp b/src/network/socket/qlocalsocket.cpp
index e311f6a060..3097eaa96c 100644
--- a/src/network/socket/qlocalsocket.cpp
+++ b/src/network/socket/qlocalsocket.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qlocalsocket.h b/src/network/socket/qlocalsocket.h
index bb39b0f4c8..f8bb556413 100644
--- a/src/network/socket/qlocalsocket.h
+++ b/src/network/socket/qlocalsocket.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
#ifndef QT_NO_LOCALSOCKET
diff --git a/src/network/socket/qlocalsocket_p.h b/src/network/socket/qlocalsocket_p.h
index 3541d950e8..cb21a7f3e7 100644
--- a/src/network/socket/qlocalsocket_p.h
+++ b/src/network/socket/qlocalsocket_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qlocalsocket_tcp.cpp b/src/network/socket/qlocalsocket_tcp.cpp
index 3b83d0ee01..fb9011f0f2 100644
--- a/src/network/socket/qlocalsocket_tcp.cpp
+++ b/src/network/socket/qlocalsocket_tcp.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qlocalsocket_unix.cpp b/src/network/socket/qlocalsocket_unix.cpp
index 5bd929d477..52d8b05a6f 100644
--- a/src/network/socket/qlocalsocket_unix.cpp
+++ b/src/network/socket/qlocalsocket_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qlocalsocket_win.cpp b/src/network/socket/qlocalsocket_win.cpp
index 99942a6138..35b0130afc 100644
--- a/src/network/socket/qlocalsocket_win.cpp
+++ b/src/network/socket/qlocalsocket_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -108,8 +108,8 @@ void QLocalSocketPrivate::_q_winError(ulong windowsError, const QString &functio
QLocalSocketPrivate::QLocalSocketPrivate() : QIODevicePrivate(),
handle(INVALID_HANDLE_VALUE),
- pipeReader(0),
pipeWriter(0),
+ pipeReader(0),
error(QLocalSocket::UnknownSocketError),
state(QLocalSocket::UnconnectedState)
{
diff --git a/src/network/socket/qnativesocketengine.cpp b/src/network/socket/qnativesocketengine.cpp
index cae2469328..a34b19f7ef 100644
--- a/src/network/socket/qnativesocketengine.cpp
+++ b/src/network/socket/qnativesocketengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qnativesocketengine_p.h b/src/network/socket/qnativesocketengine_p.h
index 60c13c1258..a48fcfa769 100644
--- a/src/network/socket/qnativesocketengine_p.h
+++ b/src/network/socket/qnativesocketengine_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qnativesocketengine_unix.cpp b/src/network/socket/qnativesocketengine_unix.cpp
index 324705d998..b7c149c18d 100644
--- a/src/network/socket/qnativesocketengine_unix.cpp
+++ b/src/network/socket/qnativesocketengine_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qnativesocketengine_win.cpp b/src/network/socket/qnativesocketengine_win.cpp
index ee15702b76..e57bfcb52b 100644
--- a/src/network/socket/qnativesocketengine_win.cpp
+++ b/src/network/socket/qnativesocketengine_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -732,6 +732,8 @@ bool QNativeSocketEnginePrivate::nativeBind(const QHostAddress &a, quint16 port)
ipv6only = 1;
ipv6only = ::setsockopt(socketDescriptor, IPPROTO_IPV6, IPV6_V6ONLY, (char*)&ipv6only, sizeof(ipv6only) );
}
+#else
+ Q_UNUSED(ipv6only)
#endif
break;
case QAbstractSocket::IPv4Protocol:
@@ -1335,10 +1337,10 @@ qint64 QNativeSocketEnginePrivate::nativeRead(char *data, qint64 maxLength)
#if defined (QNATIVESOCKETENGINE_DEBUG)
if (ret != -2) {
- qDebug("QNativeSocketEnginePrivate::nativeRead(%p \"%s\", %l) == %li",
+ qDebug("QNativeSocketEnginePrivate::nativeRead(%p \"%s\", %li) == %li",
data, qt_prettyDebug(data, qMin((int)bytesRead, 16), (int)bytesRead).data(), (int)maxLength, (int)ret);
} else {
- qDebug("QNativeSocketEnginePrivate::nativeRead(%p, %l) == -2 (WOULD BLOCK)",
+ qDebug("QNativeSocketEnginePrivate::nativeRead(%p, %li) == -2 (WOULD BLOCK)",
data, int(maxLength));
}
#endif
diff --git a/src/network/socket/qnet_unix_p.h b/src/network/socket/qnet_unix_p.h
index 7b2ba54648..651bd1816d 100644
--- a/src/network/socket/qnet_unix_p.h
+++ b/src/network/socket/qnet_unix_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qsocks5socketengine.cpp b/src/network/socket/qsocks5socketengine.cpp
index 919bdea2e0..76b00bc4a9 100644
--- a/src/network/socket/qsocks5socketengine.cpp
+++ b/src/network/socket/qsocks5socketengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qsocks5socketengine_p.h b/src/network/socket/qsocks5socketengine_p.h
index 386e4856a1..662ce0d347 100644
--- a/src/network/socket/qsocks5socketengine_p.h
+++ b/src/network/socket/qsocks5socketengine_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qtcpserver.cpp b/src/network/socket/qtcpserver.cpp
index 857827facc..42f0056524 100644
--- a/src/network/socket/qtcpserver.cpp
+++ b/src/network/socket/qtcpserver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qtcpserver.h b/src/network/socket/qtcpserver.h
index a322294f58..71ccefa496 100644
--- a/src/network/socket/qtcpserver.h
+++ b/src/network/socket/qtcpserver.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
class QTcpServerPrivate;
#ifndef QT_NO_NETWORKPROXY
diff --git a/src/network/socket/qtcpsocket.cpp b/src/network/socket/qtcpsocket.cpp
index f900ca752c..706f5721b2 100644
--- a/src/network/socket/qtcpsocket.cpp
+++ b/src/network/socket/qtcpsocket.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qtcpsocket.h b/src/network/socket/qtcpsocket.h
index aa2e89d840..0150205198 100644
--- a/src/network/socket/qtcpsocket.h
+++ b/src/network/socket/qtcpsocket.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
class QTcpSocketPrivate;
diff --git a/src/network/socket/qtcpsocket_p.h b/src/network/socket/qtcpsocket_p.h
index 33672539cc..92d8418acf 100644
--- a/src/network/socket/qtcpsocket_p.h
+++ b/src/network/socket/qtcpsocket_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/socket/qudpsocket.cpp b/src/network/socket/qudpsocket.cpp
index f378fea7b9..a31b16e97d 100644
--- a/src/network/socket/qudpsocket.cpp
+++ b/src/network/socket/qudpsocket.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -318,9 +318,6 @@ qint64 QUdpSocket::pendingDatagramSize() const
fragmented by the IP layer before arriving at their final
destination.
- \warning In S60 5.0 and earlier versions, the writeDatagram return
- value is not reliable for large datagrams.
-
\warning Calling this function on a connected UDP socket may
result in an error and no packet being sent. If you are using a
connected socket, use write() to send datagrams.
diff --git a/src/network/socket/qudpsocket.h b/src/network/socket/qudpsocket.h
index ed5f539732..d1023f57c5 100644
--- a/src/network/socket/qudpsocket.h
+++ b/src/network/socket/qudpsocket.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
#ifndef QT_NO_UDPSOCKET
diff --git a/src/network/ssl/qssl.cpp b/src/network/ssl/qssl.cpp
index 7bb68956ee..b68265f1aa 100644
--- a/src/network/ssl/qssl.cpp
+++ b/src/network/ssl/qssl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/ssl/qssl.h b/src/network/ssl/qssl.h
index 7da5a78c56..7387b0214c 100644
--- a/src/network/ssl/qssl.h
+++ b/src/network/ssl/qssl.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
namespace QSsl {
enum KeyType {
diff --git a/src/network/ssl/qsslcertificate.cpp b/src/network/ssl/qsslcertificate.cpp
index 5a4702d992..966497be2e 100644
--- a/src/network/ssl/qsslcertificate.cpp
+++ b/src/network/ssl/qsslcertificate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/ssl/qsslcertificate.h b/src/network/ssl/qsslcertificate.h
index 3aa7075eb3..b15d6e97bb 100644
--- a/src/network/ssl/qsslcertificate.h
+++ b/src/network/ssl/qsslcertificate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,7 +56,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
#ifndef QT_NO_SSL
@@ -84,8 +83,7 @@ public:
};
QSslCertificate(QIODevice *device, QSsl::EncodingFormat format = QSsl::Pem);
- QSslCertificate( // ### s/encoded/data (to be consistent with signature in .cpp file) ?
- const QByteArray &encoded = QByteArray(), QSsl::EncodingFormat format = QSsl::Pem);
+ QSslCertificate(const QByteArray &data = QByteArray(), QSsl::EncodingFormat format = QSsl::Pem);
QSslCertificate(const QSslCertificate &other);
~QSslCertificate();
QSslCertificate &operator=(const QSslCertificate &other);
diff --git a/src/network/ssl/qsslcertificate_p.h b/src/network/ssl/qsslcertificate_p.h
index 031165b267..cee0ebe9c0 100644
--- a/src/network/ssl/qsslcertificate_p.h
+++ b/src/network/ssl/qsslcertificate_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/ssl/qsslcertificateextension.cpp b/src/network/ssl/qsslcertificateextension.cpp
index b4d002ead1..2b5c57e3f0 100644
--- a/src/network/ssl/qsslcertificateextension.cpp
+++ b/src/network/ssl/qsslcertificateextension.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Richard J. Moore <rich@kde.org>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/ssl/qsslcertificateextension.h b/src/network/ssl/qsslcertificateextension.h
index 6c1d219a3b..1ba294ba1b 100644
--- a/src/network/ssl/qsslcertificateextension.h
+++ b/src/network/ssl/qsslcertificateextension.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Richard J. Moore <rich@kde.org>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
#ifndef QT_NO_SSL
diff --git a/src/network/ssl/qsslcertificateextension_p.h b/src/network/ssl/qsslcertificateextension_p.h
index 877175b666..ccd95655b0 100644
--- a/src/network/ssl/qsslcertificateextension_p.h
+++ b/src/network/ssl/qsslcertificateextension_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Richard J. Moore <rich@kde.org>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/ssl/qsslcipher.cpp b/src/network/ssl/qsslcipher.cpp
index 3c59a8ebf9..ae24e9e3e2 100644
--- a/src/network/ssl/qsslcipher.cpp
+++ b/src/network/ssl/qsslcipher.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/ssl/qsslcipher.h b/src/network/ssl/qsslcipher.h
index 8d58fa50ba..78989b7cb8 100644
--- a/src/network/ssl/qsslcipher.h
+++ b/src/network/ssl/qsslcipher.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
#ifndef QT_NO_SSL
diff --git a/src/network/ssl/qsslcipher_p.h b/src/network/ssl/qsslcipher_p.h
index d4117abe3a..eadb4eacf3 100644
--- a/src/network/ssl/qsslcipher_p.h
+++ b/src/network/ssl/qsslcipher_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/ssl/qsslconfiguration.cpp b/src/network/ssl/qsslconfiguration.cpp
index f29bb02813..dc530dae88 100644
--- a/src/network/ssl/qsslconfiguration.cpp
+++ b/src/network/ssl/qsslconfiguration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/ssl/qsslconfiguration.h b/src/network/ssl/qsslconfiguration.h
index 37df073ae9..0ef6a6b4f3 100644
--- a/src/network/ssl/qsslconfiguration.h
+++ b/src/network/ssl/qsslconfiguration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -65,7 +65,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
#ifndef QT_NO_SSL
@@ -87,7 +86,7 @@ public:
inline bool operator!=(const QSslConfiguration &other) const
{ return !(*this == other); }
- bool isNull() const; // ### Qt 5: remove; who would need this?
+ bool isNull() const;
QSsl::SslProtocol protocol() const;
void setProtocol(QSsl::SslProtocol protocol);
diff --git a/src/network/ssl/qsslconfiguration_p.h b/src/network/ssl/qsslconfiguration_p.h
index d9f41d6351..eab266d83b 100644
--- a/src/network/ssl/qsslconfiguration_p.h
+++ b/src/network/ssl/qsslconfiguration_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/ssl/qsslerror.cpp b/src/network/ssl/qsslerror.cpp
index 39e6d6114e..acb8d70d09 100644
--- a/src/network/ssl/qsslerror.cpp
+++ b/src/network/ssl/qsslerror.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/ssl/qsslerror.h b/src/network/ssl/qsslerror.h
index 0bdc230b2e..a84010adbe 100644
--- a/src/network/ssl/qsslerror.h
+++ b/src/network/ssl/qsslerror.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
#ifndef QT_NO_SSL
diff --git a/src/network/ssl/qsslkey.cpp b/src/network/ssl/qsslkey.cpp
index cb038d726f..f422952870 100644
--- a/src/network/ssl/qsslkey.cpp
+++ b/src/network/ssl/qsslkey.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/ssl/qsslkey.h b/src/network/ssl/qsslkey.h
index d7d52fa992..e64df5fce7 100644
--- a/src/network/ssl/qsslkey.h
+++ b/src/network/ssl/qsslkey.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
#ifndef QT_NO_SSL
diff --git a/src/network/ssl/qsslkey_p.h b/src/network/ssl/qsslkey_p.h
index 1beb2a608a..aac5a8c223 100644
--- a/src/network/ssl/qsslkey_p.h
+++ b/src/network/ssl/qsslkey_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/ssl/qsslsocket.cpp b/src/network/ssl/qsslsocket.cpp
index b428316a77..ffc9f3f9fe 100644
--- a/src/network/ssl/qsslsocket.cpp
+++ b/src/network/ssl/qsslsocket.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -356,6 +356,24 @@ QSslSocket::~QSslSocket()
}
/*!
+ \reimp
+
+ \since 5.0
+
+ Continues data transfer on the socket after it has been paused. If
+ "setPauseMode(QAbstractSocket::PauseOnNotify);" has been called on
+ this socket and a sslErrors() signal is received, calling this method
+ is necessary for the socket to continue.
+
+ \sa QAbstractSocket::pauseMode(), QAbstractSocket::setPauseMode()
+*/
+void QSslSocket::resume()
+{
+ // continuing might emit signals, rather do this through the event loop
+ QMetaObject::invokeMethod(this, "_q_resumeImplementation", Qt::QueuedConnection);
+}
+
+/*!
Starts an encrypted connection to the device \a hostName on \a
port, using \a mode as the \l OpenMode. This is equivalent to
calling connectToHost() to establish the connection, followed by a
@@ -1860,6 +1878,7 @@ QSslSocketPrivate::QSslSocketPrivate()
, readyReadEmittedPointer(0)
, allowRootCertOnDemandLoading(true)
, plainSocket(0)
+ , paused(false)
{
QSslConfigurationPrivate::deepCopyDefaultConfiguration(&configuration);
}
@@ -1935,7 +1954,6 @@ void QSslSocketPrivate::setDefaultSupportedCiphers(const QList<QSslCipher> &ciph
*/
QList<QSslCertificate> QSslSocketPrivate::defaultCaCertificates()
{
- // ### Qt5: rename everything containing "caCertificates" to "rootCertificates" or similar
QSslSocketPrivate::ensureInitialized();
QMutexLocker locker(&globalData()->mutex);
return globalData()->config->caCertificates;
@@ -2114,6 +2132,11 @@ void QSslSocketPrivate::resumeSocketNotifiers(QSslSocket *socket)
QAbstractSocketPrivate::resumeSocketNotifiers(socket->d_func()->plainSocket);
}
+bool QSslSocketPrivate::isPaused() const
+{
+ return paused;
+}
+
/*!
\internal
*/
@@ -2260,6 +2283,55 @@ void QSslSocketPrivate::_q_flushReadBuffer()
/*!
\internal
*/
+void QSslSocketPrivate::_q_resumeImplementation()
+{
+ Q_Q(QSslSocket);
+ if (plainSocket)
+ plainSocket->resume();
+ paused = false;
+ if (!connectionEncrypted) {
+ if (verifyErrorsHaveBeenIgnored()) {
+ continueHandshake();
+ } else {
+ q->setErrorString(sslErrors.first().errorString());
+ q->setSocketError(QAbstractSocket::SslHandshakeFailedError);
+ emit q->error(QAbstractSocket::SslHandshakeFailedError);
+ plainSocket->disconnectFromHost();
+ return;
+ }
+ }
+ transmit();
+}
+
+/*!
+ \internal
+*/
+bool QSslSocketPrivate::verifyErrorsHaveBeenIgnored()
+{
+ bool doEmitSslError;
+ if (!ignoreErrorsList.empty()) {
+ // check whether the errors we got are all in the list of expected errors
+ // (applies only if the method QSslSocket::ignoreSslErrors(const QList<QSslError> &errors)
+ // was called)
+ doEmitSslError = false;
+ for (int a = 0; a < sslErrors.count(); a++) {
+ if (!ignoreErrorsList.contains(sslErrors.at(a))) {
+ doEmitSslError = true;
+ break;
+ }
+ }
+ } else {
+ // if QSslSocket::ignoreSslErrors(const QList<QSslError> &errors) was not called and
+ // we get an SSL error, emit a signal unless we ignored all errors (by calling
+ // QSslSocket::ignoreSslErrors() )
+ doEmitSslError = !ignoreAllSslErrors;
+ }
+ return !doEmitSslError;
+}
+
+/*!
+ \internal
+*/
QList<QByteArray> QSslSocketPrivate::unixRootCertDirectories()
{
return QList<QByteArray>() << "/etc/ssl/certs/" // (K)ubuntu, OpenSUSE, Mandriva, MeeGo ...
diff --git a/src/network/ssl/qsslsocket.h b/src/network/ssl/qsslsocket.h
index 936f27905a..bdc9c4b4cf 100644
--- a/src/network/ssl/qsslsocket.h
+++ b/src/network/ssl/qsslsocket.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Network)
#ifndef QT_NO_SSL
@@ -83,6 +82,7 @@ public:
QSslSocket(QObject *parent = 0);
~QSslSocket();
+ void resume(); // to continue after proxy authentication required, SSL errors etc.
// Autostarting the SSL client handshake.
void connectToHostEncrypted(const QString &hostName, quint16 port, OpenMode mode = ReadWrite, NetworkLayerProtocol protocol = AnyIPProtocol);
@@ -90,12 +90,12 @@ public:
bool setSocketDescriptor(qintptr socketDescriptor, SocketState state = ConnectedState,
OpenMode openMode = ReadWrite);
+ using QAbstractSocket::connectToHost;
void connectToHost(const QString &hostName, quint16 port, OpenMode openMode = ReadWrite, NetworkLayerProtocol protocol = AnyIPProtocol);
void disconnectFromHost();
- // ### Qt 5: Make virtual
- void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value);
- QVariant socketOption(QAbstractSocket::SocketOption option);
+ virtual void setSocketOption(QAbstractSocket::SocketOption option, const QVariant &value);
+ virtual QVariant socketOption(QAbstractSocket::SocketOption option);
SslMode mode() const;
bool isEncrypted() const;
@@ -212,6 +212,7 @@ private:
Q_PRIVATE_SLOT(d_func(), void _q_bytesWrittenSlot(qint64))
Q_PRIVATE_SLOT(d_func(), void _q_flushWriteBuffer())
Q_PRIVATE_SLOT(d_func(), void _q_flushReadBuffer())
+ Q_PRIVATE_SLOT(d_func(), void _q_resumeImplementation())
friend class QSslSocketBackendPrivate;
};
diff --git a/src/network/ssl/qsslsocket_openssl.cpp b/src/network/ssl/qsslsocket_openssl.cpp
index 96b2c8170b..f62f3c1229 100644
--- a/src/network/ssl/qsslsocket_openssl.cpp
+++ b/src/network/ssl/qsslsocket_openssl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -172,6 +172,7 @@ QSslSocketBackendPrivate::QSslSocketBackendPrivate()
QSslSocketBackendPrivate::~QSslSocketBackendPrivate()
{
+ destroySslContext();
}
QSslCipher QSslSocketBackendPrivate::QSslCipher_from_SSL_CIPHER(SSL_CIPHER *cipher)
@@ -295,6 +296,7 @@ bool QSslSocketBackendPrivate::initSslContext()
bool client = (mode == QSslSocket::SslClientMode);
bool reinitialized = false;
+
init_context:
switch (configuration.protocol) {
case QSsl::SslV2:
@@ -326,10 +328,9 @@ init_context:
goto init_context;
}
- // ### Bad error code
q->setErrorString(QSslSocket::tr("Error creating SSL context (%1)").arg(getErrorsFromOpenSsl()));
- q->setSocketError(QAbstractSocket::UnknownSocketError);
- emit q->error(QAbstractSocket::UnknownSocketError);
+ q->setSocketError(QAbstractSocket::SslInternalError);
+ emit q->error(QAbstractSocket::SslInternalError);
return false;
}
@@ -352,10 +353,9 @@ init_context:
}
if (!q_SSL_CTX_set_cipher_list(ctx, cipherString.data())) {
- // ### Bad error code
q->setErrorString(QSslSocket::tr("Invalid or empty cipher list (%1)").arg(getErrorsFromOpenSsl()));
- q->setSocketError(QAbstractSocket::UnknownSocketError);
- emit q->error(QAbstractSocket::UnknownSocketError);
+ q->setSocketError(QAbstractSocket::SslInvalidUserDataError);
+ emit q->error(QAbstractSocket::SslInvalidUserDataError);
return false;
}
@@ -398,14 +398,16 @@ init_context:
// Require a private key as well.
if (configuration.privateKey.isNull()) {
q->setErrorString(QSslSocket::tr("Cannot provide a certificate with no key, %1").arg(getErrorsFromOpenSsl()));
- emit q->error(QAbstractSocket::UnknownSocketError);
+ q->setSocketError(QAbstractSocket::SslInvalidUserDataError);
+ emit q->error(QAbstractSocket::SslInvalidUserDataError);
return false;
}
// Load certificate
if (!q_SSL_CTX_use_certificate(ctx, reinterpret_cast<X509 *>(configuration.localCertificate.handle()))) {
q->setErrorString(QSslSocket::tr("Error loading local certificate, %1").arg(getErrorsFromOpenSsl()));
- emit q->error(QAbstractSocket::UnknownSocketError);
+ q->setSocketError(QAbstractSocket::SslInternalError);
+ emit q->error(QAbstractSocket::SslInternalError);
return false;
}
@@ -425,7 +427,8 @@ init_context:
if (!q_SSL_CTX_use_PrivateKey(ctx, pkey)) {
q->setErrorString(QSslSocket::tr("Error loading private key, %1").arg(getErrorsFromOpenSsl()));
- emit q->error(QAbstractSocket::UnknownSocketError);
+ q->setSocketError(QAbstractSocket::SslInternalError);
+ emit q->error(QAbstractSocket::SslInternalError);
return false;
}
if (configuration.privateKey.algorithm() == QSsl::Opaque)
@@ -434,7 +437,8 @@ init_context:
// Check if the certificate matches the private key.
if (!q_SSL_CTX_check_private_key(ctx)) {
q->setErrorString(QSslSocket::tr("Private key does not certify public key, %1").arg(getErrorsFromOpenSsl()));
- emit q->error(QAbstractSocket::UnknownSocketError);
+ q->setSocketError(QAbstractSocket::SslInvalidUserDataError);
+ emit q->error(QAbstractSocket::SslInvalidUserDataError);
return false;
}
}
@@ -454,8 +458,8 @@ init_context:
if (!(ssl = q_SSL_new(ctx))) {
// ### Bad error code
q->setErrorString(QSslSocket::tr("Error creating SSL session, %1").arg(getErrorsFromOpenSsl()));
- q->setSocketError(QAbstractSocket::UnknownSocketError);
- emit q->error(QAbstractSocket::UnknownSocketError);
+ q->setSocketError(QAbstractSocket::SslInternalError);
+ emit q->error(QAbstractSocket::SslInternalError);
return false;
}
@@ -488,10 +492,9 @@ init_context:
readBio = q_BIO_new(q_BIO_s_mem());
writeBio = q_BIO_new(q_BIO_s_mem());
if (!readBio || !writeBio) {
- // ### Bad error code
q->setErrorString(QSslSocket::tr("Error creating SSL session: %1").arg(getErrorsFromOpenSsl()));
- q->setSocketError(QAbstractSocket::UnknownSocketError);
- emit q->error(QAbstractSocket::UnknownSocketError);
+ q->setSocketError(QAbstractSocket::SslInternalError);
+ emit q->error(QAbstractSocket::SslInternalError);
return false;
}
@@ -506,6 +509,22 @@ init_context:
return true;
}
+void QSslSocketBackendPrivate::destroySslContext()
+{
+ if (ssl) {
+ q_SSL_free(ssl);
+ ssl = 0;
+ }
+ if (ctx) {
+ q_SSL_CTX_free(ctx);
+ ctx = 0;
+ }
+ if (pkey) {
+ q_EVP_PKEY_free(pkey);
+ pkey = 0;
+ }
+}
+
/*!
\internal
*/
@@ -804,8 +823,11 @@ QList<QSslCertificate> QSslSocketPrivate::systemCaCertificates()
void QSslSocketBackendPrivate::startClientEncryption()
{
+ Q_Q(QSslSocket);
if (!initSslContext()) {
- // ### report error: internal OpenSSL failure
+ q->setErrorString(QSslSocket::tr("Unable to init Ssl Context: %1").arg(getErrorsFromOpenSsl()));
+ q->setSocketError(QAbstractSocket::SslInternalError);
+ emit q->error(QAbstractSocket::SslInternalError);
return;
}
@@ -817,8 +839,11 @@ void QSslSocketBackendPrivate::startClientEncryption()
void QSslSocketBackendPrivate::startServerEncryption()
{
+ Q_Q(QSslSocket);
if (!initSslContext()) {
- // ### report error: internal OpenSSL failure
+ q->setErrorString(QSslSocket::tr("Unable to init Ssl Context: %1").arg(getErrorsFromOpenSsl()));
+ q->setSocketError(QAbstractSocket::SslInternalError);
+ emit q->error(QAbstractSocket::SslInternalError);
return;
}
@@ -855,8 +880,8 @@ void QSslSocketBackendPrivate::transmit()
if (writtenBytes <= 0) {
// ### Better error handling.
q->setErrorString(QSslSocket::tr("Unable to write data: %1").arg(getErrorsFromOpenSsl()));
- q->setSocketError(QAbstractSocket::UnknownSocketError);
- emit q->error(QAbstractSocket::UnknownSocketError);
+ q->setSocketError(QAbstractSocket::SslInternalError);
+ emit q->error(QAbstractSocket::SslInternalError);
return;
}
#ifdef QSSLSOCKET_DEBUG
@@ -925,8 +950,8 @@ void QSslSocketBackendPrivate::transmit()
} else {
// ### Better error handling.
q->setErrorString(QSslSocket::tr("Unable to decrypt data: %1").arg(getErrorsFromOpenSsl()));
- q->setSocketError(QAbstractSocket::UnknownSocketError);
- emit q->error(QAbstractSocket::UnknownSocketError);
+ q->setSocketError(QAbstractSocket::SslInternalError);
+ emit q->error(QAbstractSocket::SslInternalError);
return;
}
@@ -950,6 +975,9 @@ void QSslSocketBackendPrivate::transmit()
qDebug() << "QSslSocketBackendPrivate::transmit: connection lost";
#endif
break;
+ } else if (paused) {
+ // just wait until the user continues
+ return;
} else {
#ifdef QSSLSOCKET_DEBUG
qDebug() << "QSslSocketBackendPrivate::transmit: encryption not done yet";
@@ -1003,8 +1031,8 @@ void QSslSocketBackendPrivate::transmit()
// we do not know exactly what the error is, nor whether we can recover from it,
// so just return to prevent an endless loop in the outer "while" statement
q->setErrorString(QSslSocket::tr("Error while reading: %1").arg(getErrorsFromOpenSsl()));
- q->setSocketError(QAbstractSocket::UnknownSocketError);
- emit q->error(QAbstractSocket::UnknownSocketError);
+ q->setSocketError(QAbstractSocket::SslInternalError);
+ emit q->error(QAbstractSocket::SslInternalError);
return;
default:
// SSL_ERROR_WANT_CONNECT, SSL_ERROR_WANT_ACCEPT: can only happen with a
@@ -1013,8 +1041,8 @@ void QSslSocketBackendPrivate::transmit()
// SSL_CTX_set_client_cert_cb(), which we do not call.
// So this default case should never be triggered.
q->setErrorString(QSslSocket::tr("Error while reading: %1").arg(getErrorsFromOpenSsl()));
- q->setSocketError(QAbstractSocket::UnknownSocketError);
- emit q->error(QAbstractSocket::UnknownSocketError);
+ q->setSocketError(QAbstractSocket::SslInternalError);
+ emit q->error(QAbstractSocket::SslInternalError);
break;
}
} while (ssl && readBytes > 0);
@@ -1188,46 +1216,25 @@ bool QSslSocketBackendPrivate::startHandshake()
sslErrors = errors;
emit q->sslErrors(errors);
- bool doEmitSslError;
- if (!ignoreErrorsList.empty()) {
- // check whether the errors we got are all in the list of expected errors
- // (applies only if the method QSslSocket::ignoreSslErrors(const QList<QSslError> &errors)
- // was called)
- doEmitSslError = false;
- for (int a = 0; a < errors.count(); a++) {
- if (!ignoreErrorsList.contains(errors.at(a))) {
- doEmitSslError = true;
- break;
- }
- }
- } else {
- // if QSslSocket::ignoreSslErrors(const QList<QSslError> &errors) was not called and
- // we get an SSL error, emit a signal unless we ignored all errors (by calling
- // QSslSocket::ignoreSslErrors() )
- doEmitSslError = !ignoreAllSslErrors;
- }
+ bool doEmitSslError = !verifyErrorsHaveBeenIgnored();
// check whether we need to emit an SSL handshake error
if (doVerifyPeer && doEmitSslError) {
- q->setErrorString(sslErrors.first().errorString());
- q->setSocketError(QAbstractSocket::SslHandshakeFailedError);
- emit q->error(QAbstractSocket::SslHandshakeFailedError);
- plainSocket->disconnectFromHost();
+ if (q->pauseMode() & QAbstractSocket::PauseOnNotify) {
+ pauseSocketNotifiers(q);
+ paused = true;
+ } else {
+ q->setErrorString(sslErrors.first().errorString());
+ q->setSocketError(QAbstractSocket::SslHandshakeFailedError);
+ emit q->error(QAbstractSocket::SslHandshakeFailedError);
+ plainSocket->disconnectFromHost();
+ }
return false;
}
} else {
sslErrors.clear();
}
- // if we have a max read buffer size, reset the plain socket's to 1k
- if (readBufferMaxSize)
- plainSocket->setReadBufferSize(1024);
-
- connectionEncrypted = true;
- emit q->encrypted();
- if (autoStartHandshake && pendingClose) {
- pendingClose = false;
- q->disconnectFromHost();
- }
+ continueHandshake();
return true;
}
@@ -1242,18 +1249,10 @@ void QSslSocketBackendPrivate::disconnectFromHost()
void QSslSocketBackendPrivate::disconnected()
{
- if (ssl) {
- q_SSL_free(ssl);
- ssl = 0;
- }
- if (ctx) {
- q_SSL_CTX_free(ctx);
- ctx = 0;
- }
- if (pkey) {
- q_EVP_PKEY_free(pkey);
- pkey = 0;
- }
+ if (plainSocket->bytesAvailable() <= 0)
+ destroySslContext();
+ //if there is still buffered data in the plain socket, don't destroy the ssl context yet.
+ //it will be destroyed when the socket is deleted.
}
QSslCipher QSslSocketBackendPrivate::sessionCipher() const
@@ -1271,6 +1270,21 @@ QSslCipher QSslSocketBackendPrivate::sessionCipher() const
return sessionCipher ? QSslCipher_from_SSL_CIPHER(sessionCipher) : QSslCipher();
}
+void QSslSocketBackendPrivate::continueHandshake()
+{
+ Q_Q(QSslSocket);
+ // if we have a max read buffer size, reset the plain socket's to match
+ if (readBufferMaxSize)
+ plainSocket->setReadBufferSize(readBufferMaxSize);
+
+ connectionEncrypted = true;
+ emit q->encrypted();
+ if (autoStartHandshake && pendingClose) {
+ pendingClose = false;
+ q->disconnectFromHost();
+ }
+}
+
QList<QSslCertificate> QSslSocketBackendPrivate::STACKOFX509_to_QSslCertificates(STACK_OF(X509) *x509)
{
ensureInitialized();
diff --git a/src/network/ssl/qsslsocket_openssl_p.h b/src/network/ssl/qsslsocket_openssl_p.h
index 4d1ed9e681..b31eae9c97 100644
--- a/src/network/ssl/qsslsocket_openssl_p.h
+++ b/src/network/ssl/qsslsocket_openssl_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -99,6 +99,7 @@ public:
// SSL context
bool initSslContext();
+ void destroySslContext();
SSL *ssl;
SSL_CTX *ctx;
EVP_PKEY *pkey;
@@ -115,6 +116,7 @@ public:
void disconnectFromHost();
void disconnected();
QSslCipher sessionCipher() const;
+ void continueHandshake();
Q_AUTOTEST_EXPORT static long setupOpenSslOptions(QSsl::SslProtocol protocol, QSsl::SslOptions sslOptions);
static QSslCipher QSslCipher_from_SSL_CIPHER(SSL_CIPHER *cipher);
diff --git a/src/network/ssl/qsslsocket_openssl_symbols.cpp b/src/network/ssl/qsslsocket_openssl_symbols.cpp
index c3bee3edd2..aa25215755 100644
--- a/src/network/ssl/qsslsocket_openssl_symbols.cpp
+++ b/src/network/ssl/qsslsocket_openssl_symbols.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/ssl/qsslsocket_openssl_symbols_p.h b/src/network/ssl/qsslsocket_openssl_symbols_p.h
index 1f1e842c13..758763523f 100644
--- a/src/network/ssl/qsslsocket_openssl_symbols_p.h
+++ b/src/network/ssl/qsslsocket_openssl_symbols_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/network/ssl/qsslsocket_p.h b/src/network/ssl/qsslsocket_p.h
index 6fa443d0c7..44114481df 100644
--- a/src/network/ssl/qsslsocket_p.h
+++ b/src/network/ssl/qsslsocket_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtNetwork module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -73,7 +73,7 @@ QT_BEGIN_NAMESPACE
typedef OSStatus (*PtrSecTrustSettingsCopyCertificates)(int, CFArrayRef*);
typedef OSStatus (*PtrSecTrustCopyAnchorCertificates)(CFArrayRef*);
#elif defined(Q_OS_WIN)
-#include <windows.h>
+#include <QtCore/qt_windows.h>
#include <wincrypt.h>
#ifndef HCRYPTPROV_LEGACY
#define HCRYPTPROV_LEGACY HCRYPTPROV
@@ -149,6 +149,7 @@ public:
void createPlainSocket(QIODevice::OpenMode openMode);
static void pauseSocketNotifiers(QSslSocket*);
static void resumeSocketNotifiers(QSslSocket*);
+ bool isPaused() const;
void _q_connectedSlot();
void _q_hostFoundSlot();
void _q_disconnectedSlot();
@@ -158,6 +159,7 @@ public:
void _q_bytesWrittenSlot(qint64);
void _q_flushWriteBuffer();
void _q_flushReadBuffer();
+ void _q_resumeImplementation();
// Platform specific functions
virtual void startClientEncryption() = 0;
@@ -166,6 +168,7 @@ public:
virtual void disconnectFromHost() = 0;
virtual void disconnected() = 0;
virtual QSslCipher sessionCipher() const = 0;
+ virtual void continueHandshake() = 0;
private:
static bool ensureLibraryLoaded();
@@ -174,8 +177,10 @@ private:
static bool s_libraryLoaded;
static bool s_loadedCiphersAndCerts;
protected:
+ bool verifyErrorsHaveBeenIgnored();
static bool s_loadRootCertsOnDemand;
static QList<QByteArray> unixRootCertDirectories();
+ bool paused;
};
QT_END_NAMESPACE
diff --git a/src/network/ssl/ssl.pri b/src/network/ssl/ssl.pri
index 7a8694ca62..87bcc9378a 100644
--- a/src/network/ssl/ssl.pri
+++ b/src/network/ssl/ssl.pri
@@ -1,9 +1,5 @@
# OpenSSL support; compile in QSslSocket.
contains(QT_CONFIG, openssl) | contains(QT_CONFIG, openssl-linked) {
-
-
-include($$QT_SOURCE_TREE/config.tests/unix/openssl/openssl.pri)
-
HEADERS += ssl/qssl.h \
ssl/qsslcertificate.h \
ssl/qsslcertificate_p.h \
diff --git a/src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp b/src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp
index 50444ecc86..626f994b38 100644
--- a/src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp
+++ b/src/opengl/gl2paintengineex/qgl2pexvertexarray.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h b/src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h
index 8324bab28e..ec9ead2968 100644
--- a/src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h
+++ b/src/opengl/gl2paintengineex/qgl2pexvertexarray_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/gl2paintengineex/qglcustomshaderstage.cpp b/src/opengl/gl2paintengineex/qglcustomshaderstage.cpp
index 9f1cd3cf32..232e727869 100644
--- a/src/opengl/gl2paintengineex/qglcustomshaderstage.cpp
+++ b/src/opengl/gl2paintengineex/qglcustomshaderstage.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/gl2paintengineex/qglcustomshaderstage_p.h b/src/opengl/gl2paintengineex/qglcustomshaderstage_p.h
index 166779cd75..f5164225bc 100644
--- a/src/opengl/gl2paintengineex/qglcustomshaderstage_p.h
+++ b/src/opengl/gl2paintengineex/qglcustomshaderstage_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(OpenGL)
class QGLCustomShaderStagePrivate;
class Q_OPENGL_EXPORT QGLCustomShaderStage
diff --git a/src/opengl/gl2paintengineex/qglengineshadermanager.cpp b/src/opengl/gl2paintengineex/qglengineshadermanager.cpp
index 4daed7ebfa..0850ae8dd2 100644
--- a/src/opengl/gl2paintengineex/qglengineshadermanager.cpp
+++ b/src/opengl/gl2paintengineex/qglengineshadermanager.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/gl2paintengineex/qglengineshadermanager_p.h b/src/opengl/gl2paintengineex/qglengineshadermanager_p.h
index fc922928cd..6190439099 100644
--- a/src/opengl/gl2paintengineex/qglengineshadermanager_p.h
+++ b/src/opengl/gl2paintengineex/qglengineshadermanager_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -232,7 +232,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(OpenGL)
/*
diff --git a/src/opengl/gl2paintengineex/qglengineshadersource_p.h b/src/opengl/gl2paintengineex/qglengineshadersource_p.h
index 8a6bce0d8c..3b5f46c95a 100644
--- a/src/opengl/gl2paintengineex/qglengineshadersource_p.h
+++ b/src/opengl/gl2paintengineex/qglengineshadersource_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,7 +60,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(OpenGL)
static const char* const qglslMainVertexShader = "\n\
diff --git a/src/opengl/gl2paintengineex/qglgradientcache.cpp b/src/opengl/gl2paintengineex/qglgradientcache.cpp
index 96a8a4c33a..0bcaa010e1 100644
--- a/src/opengl/gl2paintengineex/qglgradientcache.cpp
+++ b/src/opengl/gl2paintengineex/qglgradientcache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/gl2paintengineex/qglgradientcache_p.h b/src/opengl/gl2paintengineex/qglgradientcache_p.h
index 105afb157e..16285722e3 100644
--- a/src/opengl/gl2paintengineex/qglgradientcache_p.h
+++ b/src/opengl/gl2paintengineex/qglgradientcache_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/gl2paintengineex/qglshadercache_meego_p.h b/src/opengl/gl2paintengineex/qglshadercache_meego_p.h
index 2d013ae77a..af2ad81bf4 100644
--- a/src/opengl/gl2paintengineex/qglshadercache_meego_p.h
+++ b/src/opengl/gl2paintengineex/qglshadercache_meego_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -400,7 +400,6 @@ static bool qt_cache_shader(const QGLShaderProgram *shader, const QGLContext *ct
QT_BEGIN_NAMESPACE
-QT_MODULE(OpenGL)
class CachedShader
{
diff --git a/src/opengl/gl2paintengineex/qglshadercache_p.h b/src/opengl/gl2paintengineex/qglshadercache_p.h
index 26f5076a5a..14c20e0a61 100644
--- a/src/opengl/gl2paintengineex/qglshadercache_p.h
+++ b/src/opengl/gl2paintengineex/qglshadercache_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -63,7 +63,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(OpenGL)
class QGLShaderProgram;
class QGLContext;
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
index 85773fa3cc..29dab0e1e0 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1438,7 +1438,8 @@ void QGL2PaintEngineEx::drawStaticTextItem(QStaticTextItem *textItem)
? QFontEngineGlyphCache::Type(textItem->fontEngine()->glyphFormat)
: d->glyphCacheType;
if (glyphType == QFontEngineGlyphCache::Raster_RGBMask) {
- if (d->device->alphaRequested() || s->matrix.type() > QTransform::TxTranslate
+ if (!QGLFramebufferObject::hasOpenGLFramebufferObjects()
+ || d->device->alphaRequested() || s->matrix.type() > QTransform::TxTranslate
|| (s->composition_mode != QPainter::CompositionMode_Source
&& s->composition_mode != QPainter::CompositionMode_SourceOver))
{
@@ -1500,7 +1501,8 @@ void QGL2PaintEngineEx::drawTextItem(const QPointF &p, const QTextItem &textItem
if (glyphType == QFontEngineGlyphCache::Raster_RGBMask) {
- if (d->device->alphaRequested() || txtype > QTransform::TxTranslate
+ if (!QGLFramebufferObject::hasOpenGLFramebufferObjects()
+ || d->device->alphaRequested() || txtype > QTransform::TxTranslate
|| (state()->composition_mode != QPainter::CompositionMode_Source
&& state()->composition_mode != QPainter::CompositionMode_SourceOver))
{
@@ -1567,11 +1569,12 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
void *cacheKey = const_cast<QGLContext *>(QGLContextPrivate::contextGroup(ctx)->context());
bool recreateVertexArrays = false;
+ QFontEngine *fe = staticTextItem->fontEngine();
QGLTextureGlyphCache *cache =
- (QGLTextureGlyphCache *) staticTextItem->fontEngine()->glyphCache(cacheKey, glyphType, QTransform());
+ (QGLTextureGlyphCache *) fe->glyphCache(cacheKey, glyphType, QTransform());
if (!cache || cache->cacheType() != glyphType || cache->contextGroup() == 0) {
cache = new QGLTextureGlyphCache(glyphType, QTransform());
- staticTextItem->fontEngine()->setGlyphCache(cacheKey, cache);
+ fe->setGlyphCache(cacheKey, cache);
recreateVertexArrays = true;
}
@@ -1595,11 +1598,11 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
// cache so this text is performed before we test if the cache size has changed.
if (recreateVertexArrays) {
cache->setPaintEnginePrivate(this);
- if (!cache->populate(staticTextItem->fontEngine(), staticTextItem->numGlyphs,
+ if (!cache->populate(fe, staticTextItem->numGlyphs,
staticTextItem->glyphs, staticTextItem->glyphPositions)) {
// No space for glyphs in cache. We need to reset it and try again.
cache->clear();
- cache->populate(staticTextItem->fontEngine(), staticTextItem->numGlyphs,
+ cache->populate(fe, staticTextItem->numGlyphs,
staticTextItem->glyphs, staticTextItem->glyphPositions);
}
cache->fillInPendingGlyphs();
@@ -1610,7 +1613,7 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
transferMode(TextDrawingMode);
- int margin = cache->glyphMargin();
+ int margin = fe->glyphMargin(glyphType);
GLfloat dx = 1.0 / cache->width();
GLfloat dy = 1.0 / cache->height();
@@ -1650,11 +1653,11 @@ void QGL2PaintEngineExPrivate::drawCachedGlyphs(QFontEngineGlyphCache::Type glyp
vertexCoordinates->clear();
textureCoordinates->clear();
- bool supportsSubPixelPositions = staticTextItem->fontEngine()->supportsSubPixelPositions();
+ bool supportsSubPixelPositions = fe->supportsSubPixelPositions();
for (int i=0; i<staticTextItem->numGlyphs; ++i) {
QFixed subPixelPosition;
if (supportsSubPixelPositions)
- subPixelPosition = staticTextItem->fontEngine()->subPixelPositionForX(staticTextItem->glyphPositions[i].x);
+ subPixelPosition = fe->subPixelPositionForX(staticTextItem->glyphPositions[i].x);
QTextureGlyphCache::GlyphAndSubPixelPosition glyph(staticTextItem->glyphs[i], subPixelPosition);
@@ -1980,7 +1983,9 @@ bool QGL2PaintEngineEx::begin(QPaintDevice *pdev)
#if !defined(QT_OPENGL_ES_2)
bool success = qt_resolve_version_2_0_functions(d->ctx)
- && qt_resolve_buffer_extensions(d->ctx);
+ && qt_resolve_buffer_extensions(d->ctx)
+ && (!QGLFramebufferObject::hasOpenGLFramebufferObjects()
+ || qt_resolve_framebufferobject_extensions(d->ctx));
Q_ASSERT(success);
Q_UNUSED(success);
#endif
diff --git a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
index 629a0f3ddb..c5d3417555 100644
--- a/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
+++ b/src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
index c3f0257100..c12a83a61e 100644
--- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
+++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -96,7 +96,7 @@ void QGLTextureGlyphCache::createTextureData(int width, int height)
// create in QImageTextureGlyphCache baseclass is meant to be called
// only to create the initial image and does not preserve the content,
// so we don't call when this function is called from resize.
- if (ctx->d_ptr->workaround_brokenFBOReadBack && image().isNull())
+ if ((!QGLFramebufferObject::hasOpenGLFramebufferObjects() || ctx->d_ptr->workaround_brokenFBOReadBack) && image().isNull())
QImageTextureGlyphCache::createTextureData(width, height);
// Make the lower glyph texture size 16 x 16.
@@ -156,7 +156,7 @@ void QGLTextureGlyphCache::resizeTextureData(int width, int height)
GLuint oldTexture = m_textureResource->m_texture;
createTextureData(width, height);
- if (ctx->d_ptr->workaround_brokenFBOReadBack) {
+ if (!QGLFramebufferObject::hasOpenGLFramebufferObjects() || ctx->d_ptr->workaround_brokenFBOReadBack) {
QImageTextureGlyphCache::resizeTextureData(width, height);
Q_ASSERT(image().depth() == 8);
glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, width, oldHeight, GL_ALPHA, GL_UNSIGNED_BYTE, image().constBits());
@@ -276,7 +276,7 @@ void QGLTextureGlyphCache::fillTexture(const Coord &c, glyph_t glyph, QFixed sub
return;
}
- if (ctx->d_ptr->workaround_brokenFBOReadBack) {
+ if (!QGLFramebufferObject::hasOpenGLFramebufferObjects() || ctx->d_ptr->workaround_brokenFBOReadBack) {
QImageTextureGlyphCache::fillTexture(c, glyph, subPixelPosition);
glBindTexture(GL_TEXTURE_2D, m_textureResource->m_texture);
diff --git a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
index ca5832ca4a..8992c535ba 100644
--- a/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
+++ b/src/opengl/gl2paintengineex/qtextureglyphcache_gl_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,6 +56,7 @@
#include <private/qtextureglyphcache_p.h>
#include <private/qgl_p.h>
#include <qglshaderprogram.h>
+#include <qglframebufferobject.h>
// #define QT_GL_TEXTURE_GLYPH_CACHE_DEBUG
@@ -67,10 +68,11 @@ struct QGLGlyphTexture : public QOpenGLSharedResource
{
QGLGlyphTexture(const QGLContext *ctx)
: QOpenGLSharedResource(ctx->contextHandle()->shareGroup())
+ , m_fbo(0)
, m_width(0)
, m_height(0)
{
- if (ctx && !ctx->d_ptr->workaround_brokenFBOReadBack)
+ if (ctx && QGLFramebufferObject::hasOpenGLFramebufferObjects() && !ctx->d_ptr->workaround_brokenFBOReadBack)
glGenFramebuffers(1, &m_fbo);
#ifdef QT_GL_TEXTURE_GLYPH_CACHE_DEBUG
@@ -84,7 +86,7 @@ struct QGLGlyphTexture : public QOpenGLSharedResource
#ifdef QT_GL_TEXTURE_GLYPH_CACHE_DEBUG
qDebug("~QGLGlyphTexture() %p for context %p.", this, ctx);
#endif
- if (!ctx->d_ptr->workaround_brokenFBOReadBack)
+ if (m_fbo)
glDeleteFramebuffers(1, &m_fbo);
if (m_width || m_height)
glDeleteTextures(1, &m_texture);
diff --git a/src/opengl/gl2paintengineex/qtriangulatingstroker.cpp b/src/opengl/gl2paintengineex/qtriangulatingstroker.cpp
index 7cad66e6ec..9009f80f8f 100644
--- a/src/opengl/gl2paintengineex/qtriangulatingstroker.cpp
+++ b/src/opengl/gl2paintengineex/qtriangulatingstroker.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/gl2paintengineex/qtriangulatingstroker_p.h b/src/opengl/gl2paintengineex/qtriangulatingstroker_p.h
index 3dbadaadde..0d690dc5b6 100644
--- a/src/opengl/gl2paintengineex/qtriangulatingstroker_p.h
+++ b/src/opengl/gl2paintengineex/qtriangulatingstroker_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/qgl.cpp b/src/opengl/qgl.cpp
index 7afbaa9343..836e7225be 100644
--- a/src/opengl/qgl.cpp
+++ b/src/opengl/qgl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/qgl.h b/src/opengl/qgl.h
index 85c4eb9dbc..be1651ea2f 100644
--- a/src/opengl/qgl.h
+++ b/src/opengl/qgl.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -80,7 +80,6 @@ typedef GLfloat GLdouble;
QT_BEGIN_NAMESPACE
-QT_MODULE(OpenGL)
diff --git a/src/opengl/qgl_p.h b/src/opengl/qgl_p.h
index 78eb2d5d6b..2177c147d8 100644
--- a/src/opengl/qgl_p.h
+++ b/src/opengl/qgl_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/qgl_qpa.cpp b/src/opengl/qgl_qpa.cpp
index 009b43d297..ef65d0821b 100644
--- a/src/opengl/qgl_qpa.cpp
+++ b/src/opengl/qgl_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/qglbuffer.cpp b/src/opengl/qglbuffer.cpp
index baeac676e7..bdfc152cd9 100644
--- a/src/opengl/qglbuffer.cpp
+++ b/src/opengl/qglbuffer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/qglbuffer.h b/src/opengl/qglbuffer.h
index 3dece18ab3..a38f65cff4 100644
--- a/src/opengl/qglbuffer.h
+++ b/src/opengl/qglbuffer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(OpenGL)
class QGLBufferPrivate;
diff --git a/src/opengl/qglcolormap.cpp b/src/opengl/qglcolormap.cpp
index 8a3c9d7b86..6698de52b2 100644
--- a/src/opengl/qglcolormap.cpp
+++ b/src/opengl/qglcolormap.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/qglcolormap.h b/src/opengl/qglcolormap.h
index 5774aea1d0..93bdf9db89 100644
--- a/src/opengl/qglcolormap.h
+++ b/src/opengl/qglcolormap.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(OpenGL)
class Q_OPENGL_EXPORT QGLColormap
{
diff --git a/src/opengl/qglextensions.cpp b/src/opengl/qglextensions.cpp
index 34196b6181..713e852d55 100644
--- a/src/opengl/qglextensions.cpp
+++ b/src/opengl/qglextensions.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,11 +34,13 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "qgl_p.h"
+#include <qglframebufferobject.h>
QT_BEGIN_NAMESPACE
@@ -397,9 +398,6 @@ bool qt_resolve_version_2_0_functions(QGLContext *ctx)
if (!qt_resolve_version_1_3_functions(ctx))
gl2supported = false;
- if (!qt_resolve_framebufferobject_extensions(ctx))
- gl2supported = false;
-
if (glStencilOpSeparate)
return gl2supported;
diff --git a/src/opengl/qglextensions_p.h b/src/opengl/qglextensions_p.h
index f8eff5a8bc..f866e0b7ef 100644
--- a/src/opengl/qglextensions_p.h
+++ b/src/opengl/qglextensions_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/qglframebufferobject.cpp b/src/opengl/qglframebufferobject.cpp
index dc62bf0426..96479e189e 100644
--- a/src/opengl/qglframebufferobject.cpp
+++ b/src/opengl/qglframebufferobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -454,8 +454,18 @@ void QGLFramebufferObjectPrivate::init(QGLFramebufferObject *q, const QSize &sz,
glBindTexture(target, texture);
glTexImage2D(target, 0, internal_format, size.width(), size.height(), 0,
GL_RGBA, GL_UNSIGNED_BYTE, NULL);
- if (mipmap)
- glGenerateMipmap(GL_TEXTURE_2D);
+ if (mipmap) {
+ int width = size.width();
+ int height = size.height();
+ int level = 0;
+ while (width > 1 || height > 1) {
+ width = (width + 1) >> 1;
+ height = (height + 1) >> 1;
+ ++level;
+ glTexImage2D(target, level, internal_format, width, height, 0,
+ GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+ }
+ }
glTexParameteri(target, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(target, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(target, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
diff --git a/src/opengl/qglframebufferobject.h b/src/opengl/qglframebufferobject.h
index a3211ebdfd..6442f20588 100644
--- a/src/opengl/qglframebufferobject.h
+++ b/src/opengl/qglframebufferobject.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(OpenGL)
class QGLFramebufferObjectPrivate;
class QGLFramebufferObjectFormat;
diff --git a/src/opengl/qglframebufferobject_p.h b/src/opengl/qglframebufferobject_p.h
index 461d13bbcc..37d786cf60 100644
--- a/src/opengl/qglframebufferobject_p.h
+++ b/src/opengl/qglframebufferobject_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/qglfunctions.cpp b/src/opengl/qglfunctions.cpp
index 9c84fe637e..5649092593 100644
--- a/src/opengl/qglfunctions.cpp
+++ b/src/opengl/qglfunctions.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -395,6 +395,9 @@ void QGLFunctions::initializeGLFunctions(const QGLContext *context)
Convenience function that calls glBindFramebuffer(\a target, \a framebuffer).
+ Note that Qt will translate a \a framebuffer argument of 0 to the currently
+ bound QOpenGLContext's defaultFramebufferObject().
+
For more information, see the OpenGL/ES 2.0 documentation for
\l{http://www.khronos.org/opengles/sdk/docs/man/glBindFramebuffer.xml}{glBindFramebuffer()}.
*/
diff --git a/src/opengl/qglfunctions.h b/src/opengl/qglfunctions.h
index 725fc22bc5..da3ce7db4d 100644
--- a/src/opengl/qglfunctions.h
+++ b/src/opengl/qglfunctions.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,12 +48,12 @@
#endif
#include <QtOpenGL/qgl.h>
+#include <QtGui/qopenglcontext.h>
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(OpenGL)
// Types that aren't defined in all system's gl.h files.
typedef ptrdiff_t qgl_GLintptr;
@@ -451,6 +451,8 @@ inline void QGLFunctions::glBindBuffer(GLenum target, GLuint buffer)
inline void QGLFunctions::glBindFramebuffer(GLenum target, GLuint framebuffer)
{
+ if (framebuffer == 0)
+ framebuffer = QOpenGLContext::currentContext()->defaultFramebufferObject();
#if defined(QT_OPENGL_ES_2)
::glBindFramebuffer(target, framebuffer);
#else
diff --git a/src/opengl/qglpaintdevice.cpp b/src/opengl/qglpaintdevice.cpp
index 1ef13259c5..66a97a2ea5 100644
--- a/src/opengl/qglpaintdevice.cpp
+++ b/src/opengl/qglpaintdevice.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/qglpaintdevice_p.h b/src/opengl/qglpaintdevice_p.h
index c630009171..d39b216cc1 100644
--- a/src/opengl/qglpaintdevice_p.h
+++ b/src/opengl/qglpaintdevice_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/qglpixelbuffer.cpp b/src/opengl/qglpixelbuffer.cpp
index 39f589cbab..ab5a738ba7 100644
--- a/src/opengl/qglpixelbuffer.cpp
+++ b/src/opengl/qglpixelbuffer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/qglpixelbuffer.h b/src/opengl/qglpixelbuffer.h
index 09a7eeec7c..2a1118a078 100644
--- a/src/opengl/qglpixelbuffer.h
+++ b/src/opengl/qglpixelbuffer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(OpenGL)
class QGLPixelBufferPrivate;
diff --git a/src/opengl/qglpixelbuffer_p.h b/src/opengl/qglpixelbuffer_p.h
index 559af5d63e..227d35aabc 100644
--- a/src/opengl/qglpixelbuffer_p.h
+++ b/src/opengl/qglpixelbuffer_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/qglpixelbuffer_stub.cpp b/src/opengl/qglpixelbuffer_stub.cpp
index 8d8cd93975..e970500b5f 100644
--- a/src/opengl/qglpixelbuffer_stub.cpp
+++ b/src/opengl/qglpixelbuffer_stub.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/qglshaderprogram.cpp b/src/opengl/qglshaderprogram.cpp
index 6ffba78b7c..ab5fa6a747 100644
--- a/src/opengl/qglshaderprogram.cpp
+++ b/src/opengl/qglshaderprogram.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/qglshaderprogram.h b/src/opengl/qglshaderprogram.h
index 3af47e5939..9b0cda6170 100644
--- a/src/opengl/qglshaderprogram.h
+++ b/src/opengl/qglshaderprogram.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(OpenGL)
class QGLShaderProgram;
class QGLShaderPrivate;
diff --git a/src/opengl/qgraphicsshadereffect.cpp b/src/opengl/qgraphicsshadereffect.cpp
index b0c46a96cd..1d4cd3edbb 100644
--- a/src/opengl/qgraphicsshadereffect.cpp
+++ b/src/opengl/qgraphicsshadereffect.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/opengl/qgraphicsshadereffect_p.h b/src/opengl/qgraphicsshadereffect_p.h
index de6048acbf..10f657944c 100644
--- a/src/opengl/qgraphicsshadereffect_p.h
+++ b/src/opengl/qgraphicsshadereffect_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(OpenGL)
class QGLShaderProgram;
class QGLCustomShaderEffectStage;
diff --git a/src/platformsupport/cglconvenience/cglconvenience.mm b/src/platformsupport/cglconvenience/cglconvenience.mm
index a1a7f8bd89..5c57457e87 100644
--- a/src/platformsupport/cglconvenience/cglconvenience.mm
+++ b/src/platformsupport/cglconvenience/cglconvenience.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/cglconvenience/cglconvenience_p.h b/src/platformsupport/cglconvenience/cglconvenience_p.h
index 8ac5039bf3..b89654891a 100644
--- a/src/platformsupport/cglconvenience/cglconvenience_p.h
+++ b/src/platformsupport/cglconvenience/cglconvenience_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/dnd/qsimpledrag.cpp b/src/platformsupport/dnd/qsimpledrag.cpp
index 857bc0356a..d0d08c2445 100644
--- a/src/platformsupport/dnd/qsimpledrag.cpp
+++ b/src/platformsupport/dnd/qsimpledrag.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/dnd/qsimpledrag_p.h b/src/platformsupport/dnd/qsimpledrag_p.h
index 980be04ff8..536ae241ff 100644
--- a/src/platformsupport/dnd/qsimpledrag_p.h
+++ b/src/platformsupport/dnd/qsimpledrag_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/eglconvenience/qeglconvenience.cpp b/src/platformsupport/eglconvenience/qeglconvenience.cpp
index 5a01e5a03c..f9ccde6b52 100644
--- a/src/platformsupport/eglconvenience/qeglconvenience.cpp
+++ b/src/platformsupport/eglconvenience/qeglconvenience.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/eglconvenience/qeglconvenience_p.h b/src/platformsupport/eglconvenience/qeglconvenience_p.h
index 1384f11b5e..4fe8e9c6d0 100644
--- a/src/platformsupport/eglconvenience/qeglconvenience_p.h
+++ b/src/platformsupport/eglconvenience/qeglconvenience_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/eglconvenience/qeglplatformcontext.cpp b/src/platformsupport/eglconvenience/qeglplatformcontext.cpp
index cab551fe51..71e18203fb 100644
--- a/src/platformsupport/eglconvenience/qeglplatformcontext.cpp
+++ b/src/platformsupport/eglconvenience/qeglplatformcontext.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/eglconvenience/qeglplatformcontext_p.h b/src/platformsupport/eglconvenience/qeglplatformcontext_p.h
index a0e984b390..75375fa781 100644
--- a/src/platformsupport/eglconvenience/qeglplatformcontext_p.h
+++ b/src/platformsupport/eglconvenience/qeglplatformcontext_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/eglconvenience/qxlibeglintegration.cpp b/src/platformsupport/eglconvenience/qxlibeglintegration.cpp
index a0a758fc51..0f6e2ae8d5 100644
--- a/src/platformsupport/eglconvenience/qxlibeglintegration.cpp
+++ b/src/platformsupport/eglconvenience/qxlibeglintegration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/eglconvenience/qxlibeglintegration_p.h b/src/platformsupport/eglconvenience/qxlibeglintegration_p.h
index 3a2de0d780..e9e9cf33da 100644
--- a/src/platformsupport/eglconvenience/qxlibeglintegration_p.h
+++ b/src/platformsupport/eglconvenience/qxlibeglintegration_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/eventdispatchers/qeventdispatcher_glib.cpp b/src/platformsupport/eventdispatchers/qeventdispatcher_glib.cpp
index 75ce257aac..14bf5f4f3f 100644
--- a/src/platformsupport/eventdispatchers/qeventdispatcher_glib.cpp
+++ b/src/platformsupport/eventdispatchers/qeventdispatcher_glib.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/eventdispatchers/qeventdispatcher_glib_p.h b/src/platformsupport/eventdispatchers/qeventdispatcher_glib_p.h
index e329dfb0b2..2a4acdf3b1 100644
--- a/src/platformsupport/eventdispatchers/qeventdispatcher_glib_p.h
+++ b/src/platformsupport/eventdispatchers/qeventdispatcher_glib_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/eventdispatchers/qgenericunixeventdispatcher.cpp b/src/platformsupport/eventdispatchers/qgenericunixeventdispatcher.cpp
index 01e6866158..5853ed51e5 100644
--- a/src/platformsupport/eventdispatchers/qgenericunixeventdispatcher.cpp
+++ b/src/platformsupport/eventdispatchers/qgenericunixeventdispatcher.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/eventdispatchers/qgenericunixeventdispatcher_p.h b/src/platformsupport/eventdispatchers/qgenericunixeventdispatcher_p.h
index 453fa06e13..82899b8590 100644
--- a/src/platformsupport/eventdispatchers/qgenericunixeventdispatcher_p.h
+++ b/src/platformsupport/eventdispatchers/qgenericunixeventdispatcher_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/eventdispatchers/qunixeventdispatcher_qpa.cpp b/src/platformsupport/eventdispatchers/qunixeventdispatcher_qpa.cpp
index 838c59174d..985b62e0a5 100644
--- a/src/platformsupport/eventdispatchers/qunixeventdispatcher_qpa.cpp
+++ b/src/platformsupport/eventdispatchers/qunixeventdispatcher_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/eventdispatchers/qunixeventdispatcher_qpa_p.h b/src/platformsupport/eventdispatchers/qunixeventdispatcher_qpa_p.h
index b242f6350b..9217d488bc 100644
--- a/src/platformsupport/eventdispatchers/qunixeventdispatcher_qpa_p.h
+++ b/src/platformsupport/eventdispatchers/qunixeventdispatcher_qpa_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/fb_base/fb_base.cpp b/src/platformsupport/fb_base/fb_base.cpp
index 37b20752c2..0cdd091df2 100644
--- a/src/platformsupport/fb_base/fb_base.cpp
+++ b/src/platformsupport/fb_base/fb_base.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/fb_base/fb_base_p.h b/src/platformsupport/fb_base/fb_base_p.h
index d5c825092d..c9862c6c58 100644
--- a/src/platformsupport/fb_base/fb_base_p.h
+++ b/src/platformsupport/fb_base/fb_base_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/fontdatabases/basic/basic.pri b/src/platformsupport/fontdatabases/basic/basic.pri
index 2bff36d434..31a416971f 100644
--- a/src/platformsupport/fontdatabases/basic/basic.pri
+++ b/src/platformsupport/fontdatabases/basic/basic.pri
@@ -58,7 +58,7 @@ contains(QT_CONFIG, freetype) {
$$QT_FREETYPE_DIR/src/autofit/afloader.c\
$$QT_FREETYPE_DIR/src/autofit/autofit.c
- symbian|win32 {
+ win32 {
SOURCES += \
$$QT_FREETYPE_DIR/src/base/ftsystem.c
} else {
diff --git a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp
index eb951cad41..5cfbc6cb4f 100644
--- a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp
+++ b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,6 +56,8 @@
#include <ft2build.h>
#include FT_TRUETYPE_TABLES_H
+QT_BEGIN_NAMESPACE
+
#define SimplifiedChineseCsbBit 18
#define TraditionalChineseCsbBit 20
#define JapaneseCsbBit 17
@@ -322,9 +324,10 @@ void QBasicFontDatabase::releaseHandle(void *handle)
delete file;
}
+extern FT_Library qt_getFreetype();
+
QStringList QBasicFontDatabase::addTTFile(const QByteArray &fontData, const QByteArray &file)
{
- extern FT_Library qt_getFreetype();
FT_Library library = qt_getFreetype();
int index = 0;
@@ -425,3 +428,5 @@ QStringList QBasicFontDatabase::addTTFile(const QByteArray &fontData, const QByt
} while (index < numFaces);
return families;
}
+
+QT_END_NAMESPACE
diff --git a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase_p.h b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase_p.h
index e7ccce445c..fd6e180c75 100644
--- a/src/platformsupport/fontdatabases/basic/qbasicfontdatabase_p.h
+++ b/src/platformsupport/fontdatabases/basic/qbasicfontdatabase_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -46,6 +46,8 @@
#include <QtCore/QByteArray>
#include <QtCore/QString>
+QT_BEGIN_NAMESPACE
+
struct FontFile
{
QString fileName;
@@ -66,4 +68,6 @@ public:
static QSupportedWritingSystems determineWritingSystemsFromTrueTypeBits(quint32 unicodeRange[4], quint32 codePageRange[2]);
};
+QT_END_NAMESPACE
+
#endif // QBASICFONTDATABASE_H
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
index a859f6c672..f048ed91de 100644
--- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h
index 389338b911..77509f76e5 100644
--- a/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h
+++ b/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/fontdatabases/genericunix/qgenericunixfontdatabase_p.h b/src/platformsupport/fontdatabases/genericunix/qgenericunixfontdatabase_p.h
index 55e33fffaa..b15b2576a8 100644
--- a/src/platformsupport/fontdatabases/genericunix/qgenericunixfontdatabase_p.h
+++ b/src/platformsupport/fontdatabases/genericunix/qgenericunixfontdatabase_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm
index dc54efd67b..1eb1cbeece 100644
--- a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm
+++ b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -44,6 +44,8 @@
#include <QtCore/QSettings>
#import <Foundation/Foundation.h>
+QT_BEGIN_NAMESPACE
+
// this could become a list of all languages used for each writing
// system, instead of using the single most common language.
static const char *languageForWritingSystem[] = {
@@ -84,9 +86,6 @@ static const char *languageForWritingSystem[] = {
};
enum { LanguageCount = sizeof(languageForWritingSystem) / sizeof(const char *) };
-inline QString qt_mac_NSStringToQString(const NSString *nsstr)
-{ return QCFString::toQString(reinterpret_cast<const CFStringRef>(nsstr)); }
-
int qt_antialiasing_threshold = 0;
bool qt_enable_font_smoothing = true;
@@ -139,7 +138,7 @@ QCoreTextFontDatabase::~QCoreTextFontDatabase()
static QString familyNameFromPostScriptName(QHash<QString, QString> &psNameToFamily,
NSString *psName)
{
- QString name = qt_mac_NSStringToQString(psName);
+ QString name = QCFString::toQString(psName);
if (psNameToFamily.contains(name))
return psNameToFamily[name];
else {
@@ -238,7 +237,7 @@ void QCoreTextFontDatabase::populateFontDatabase()
pixelSize, fixedPitch, writingSystems, (void *) font);
CFStringRef psName = (CFStringRef) CTFontDescriptorCopyAttribute(font, kCTFontNameAttribute);
// we need PostScript Name to family name mapping for fallback list construction
- psNameToFamily[qt_mac_NSStringToQString((NSString *) psName)] = familyName;
+ psNameToFamily[QCFString::toQString((NSString *) psName)] = familyName;
CFRelease(psName);
}
@@ -320,6 +319,7 @@ QStringList QCoreTextFontDatabase::fallbacksForFamily(const QString family, cons
return fallbackLists[styleHint];
}
+OSErr qt_mac_create_fsref(const QString &file, FSRef *fsref);
QStringList QCoreTextFontDatabase::addApplicationFont(const QByteArray &fontData, const QString &fileName)
{
ATSFontContainerRef fontContainer;
@@ -330,7 +330,6 @@ QStringList QCoreTextFontDatabase::addApplicationFont(const QByteArray &fontData
kATSFontContextLocal, kATSFontFormatUnspecified, NULL,
kATSOptionFlagsDefault, &fontContainer);
} else {
- OSErr qt_mac_create_fsref(const QString &file, FSRef *fsref);
FSRef ref;
if (qt_mac_create_fsref(fileName, &ref) != noErr)
return QStringList();
@@ -371,3 +370,5 @@ QFont QCoreTextFontDatabase::defaultFont() const
return QFont(defaultFontName);
}
+QT_END_NAMESPACE
+
diff --git a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h
index 3e77548de6..adcfeebf0b 100644
--- a/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h
+++ b/src/platformsupport/fontdatabases/mac/qcoretextfontdatabase_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -44,6 +44,8 @@
#include <QPlatformFontDatabase>
+QT_BEGIN_NAMESPACE
+
class QCoreTextFontDatabase : public QPlatformFontDatabase
{
public:
@@ -61,4 +63,6 @@ private:
QHash<QFont::StyleHint, QStringList> fallbackLists;
};
+QT_END_NAMESPACE
+
#endif // QCORETEXTFONTDATABASE_H
diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm
index fa18de9621..489138abae 100644
--- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm
+++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -408,7 +408,7 @@ void QCoreTextFontEngine::addGlyphsToPath(glyph_t *glyphs, QFixedPoint *position
}
}
-QImage QCoreTextFontEngine::imageForGlyph(glyph_t glyph, QFixed subPixelPosition, int /*margin*/, bool aa)
+QImage QCoreTextFontEngine::imageForGlyph(glyph_t glyph, QFixed subPixelPosition, bool aa)
{
const glyph_metrics_t br = boundingBox(glyph);
QImage im(qRound(br.width)+2, qRound(br.height)+2, QImage::Format_RGB32);
@@ -464,7 +464,7 @@ QImage QCoreTextFontEngine::imageForGlyph(glyph_t glyph, QFixed subPixelPosition
QImage QCoreTextFontEngine::alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition)
{
- QImage im = imageForGlyph(glyph, subPixelPosition, 0, false);
+ QImage im = imageForGlyph(glyph, subPixelPosition, false);
QImage indexed(im.width(), im.height(), QImage::Format_Indexed8);
QVector<QRgb> colors(256);
@@ -485,12 +485,12 @@ QImage QCoreTextFontEngine::alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosit
return indexed;
}
-QImage QCoreTextFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed subPixelPosition, int margin, const QTransform &x)
+QImage QCoreTextFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed subPixelPosition, const QTransform &x)
{
if (x.type() >= QTransform::TxScale)
- return QFontEngine::alphaRGBMapForGlyph(glyph, subPixelPosition, margin, x);
+ return QFontEngine::alphaRGBMapForGlyph(glyph, subPixelPosition, x);
- QImage im = imageForGlyph(glyph, subPixelPosition, margin, true);
+ QImage im = imageForGlyph(glyph, subPixelPosition, true);
qGamma_correct_back_to_linear_cs(&im);
return im;
}
diff --git a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h
index 543c170cdd..bfa2841158 100644
--- a/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h
+++ b/src/platformsupport/fontdatabases/mac/qfontengine_coretext_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -91,18 +91,19 @@ public:
virtual bool getSfntTableData(uint /*tag*/, uchar * /*buffer*/, uint * /*length*/) const;
virtual void getUnscaledGlyph(glyph_t glyph, QPainterPath *path, glyph_metrics_t *metrics);
virtual QImage alphaMapForGlyph(glyph_t, QFixed subPixelPosition);
- virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, int margin, const QTransform &t);
+ virtual QImage alphaRGBMapForGlyph(glyph_t, QFixed subPixelPosition, const QTransform &t);
virtual qreal minRightBearing() const;
virtual qreal minLeftBearing() const;
virtual QFixed emSquareSize() const;
virtual QFontEngine *cloneWithSize(qreal pixelSize) const;
+ virtual int glyphMargin(QFontEngineGlyphCache::Type type) { return 0; }
private:
friend class QRawFontPrivate;
void init();
- QImage imageForGlyph(glyph_t glyph, QFixed subPixelPosition, int margin, bool colorful);
+ QImage imageForGlyph(glyph_t glyph, QFixed subPixelPosition, bool colorful);
CTFontRef ctfont;
CGFontRef cgFont;
int synthesisFlags;
diff --git a/src/platformsupport/glxconvenience/qglxconvenience.cpp b/src/platformsupport/glxconvenience/qglxconvenience.cpp
index a857d734c3..5acb2d0b65 100644
--- a/src/platformsupport/glxconvenience/qglxconvenience.cpp
+++ b/src/platformsupport/glxconvenience/qglxconvenience.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,6 +42,7 @@
#include "qglxconvenience_p.h"
#include <QtCore/QVector>
+#include <QtCore/QVarLengthArray>
#ifndef QT_NO_XRENDER
#include <X11/extensions/Xrender.h>
@@ -131,14 +132,19 @@ GLXFBConfig qglx_findConfig(Display *display, int screen , const QSurfaceFormat
glXGetFBConfigAttrib(display,configs[i],GLX_ALPHA_SIZE,&alphaSize);
if (alphaSize > 0) {
XVisualInfo *visual = glXGetVisualFromFBConfig(display, chosenConfig);
+ bool hasAlpha = false;
+
#if !defined(QT_NO_XRENDER)
XRenderPictFormat *pictFormat = XRenderFindVisualFormat(display, visual->visual);
- if (pictFormat->direct.alphaMask > 0)
- break;
+ hasAlpha = pictFormat->direct.alphaMask > 0;
#else
- if (visual->depth == 32)
- break;
+ hasAlpha = visual->depth == 32;
#endif
+
+ XFree(visual);
+
+ if (hasAlpha)
+ break;
}
} else {
break; // Just choose the first in the list if there's no alpha requested
@@ -150,16 +156,59 @@ GLXFBConfig qglx_findConfig(Display *display, int screen , const QSurfaceFormat
reducedFormat = qglx_reduceSurfaceFormat(reducedFormat,&reduced);
}
- if (!chosenConfig)
- qWarning("Warning: no suitable glx confiuration found");
-
return chosenConfig;
}
XVisualInfo *qglx_findVisualInfo(Display *display, int screen, const QSurfaceFormat &format)
{
+ XVisualInfo *visualInfo = 0;
+
GLXFBConfig config = qglx_findConfig(display,screen,format);
- XVisualInfo *visualInfo = glXGetVisualFromFBConfig(display,config);
+ if (config)
+ visualInfo = glXGetVisualFromFBConfig(display, config);
+
+ // attempt to fall back to glXChooseVisual
+ bool reduced = true;
+ QSurfaceFormat reducedFormat = format;
+ while (!visualInfo && reduced) {
+ QVarLengthArray<int, 13> attribs;
+ attribs.append(GLX_RGBA);
+
+ if (reducedFormat.redBufferSize() > 0) {
+ attribs.append(GLX_RED_SIZE);
+ attribs.append(reducedFormat.redBufferSize());
+ }
+
+ if (reducedFormat.greenBufferSize() > 0) {
+ attribs.append(GLX_GREEN_SIZE);
+ attribs.append(reducedFormat.greenBufferSize());
+ }
+
+ if (reducedFormat.blueBufferSize() > 0) {
+ attribs.append(GLX_BLUE_SIZE);
+ attribs.append(reducedFormat.blueBufferSize());
+ }
+
+ if (reducedFormat.stencilBufferSize() > 0) {
+ attribs.append(GLX_STENCIL_SIZE);
+ attribs.append(reducedFormat.stencilBufferSize());
+ }
+
+ if (reducedFormat.depthBufferSize() > 0) {
+ attribs.append(GLX_DEPTH_SIZE);
+ attribs.append(reducedFormat.depthBufferSize());
+ }
+
+ if (reducedFormat.swapBehavior() != QSurfaceFormat::SingleBuffer)
+ attribs.append(GLX_DOUBLEBUFFER);
+
+ attribs.append(XNone);
+
+ visualInfo = glXChooseVisual(display, screen, attribs.data());
+
+ reducedFormat = qglx_reduceSurfaceFormat(reducedFormat, &reduced);
+ }
+
return visualInfo;
}
@@ -208,7 +257,13 @@ QSurfaceFormat qglx_reduceSurfaceFormat(const QSurfaceFormat &format, bool *redu
QSurfaceFormat retFormat = format;
*reduced = true;
- if (retFormat.samples() > 1) {
+ if (retFormat.redBufferSize() > 1) {
+ retFormat.setRedBufferSize(1);
+ } else if (retFormat.greenBufferSize() > 1) {
+ retFormat.setGreenBufferSize(1);
+ } else if (retFormat.blueBufferSize() > 1) {
+ retFormat.setBlueBufferSize(1);
+ } else if (retFormat.samples() > 1) {
retFormat.setSamples(0);
} else if (retFormat.stereo()) {
retFormat.setStereo(false);
@@ -218,6 +273,8 @@ QSurfaceFormat qglx_reduceSurfaceFormat(const QSurfaceFormat &format, bool *redu
retFormat.setAlphaBufferSize(0);
}else if (retFormat.depthBufferSize() > 0) {
retFormat.setDepthBufferSize(0);
+ }else if (retFormat.swapBehavior() != QSurfaceFormat::SingleBuffer) {
+ retFormat.setSwapBehavior(QSurfaceFormat::SingleBuffer);
}else{
*reduced = false;
}
diff --git a/src/platformsupport/glxconvenience/qglxconvenience_p.h b/src/platformsupport/glxconvenience/qglxconvenience_p.h
index df6fe99ed8..6d4cecfbe6 100644
--- a/src/platformsupport/glxconvenience/qglxconvenience_p.h
+++ b/src/platformsupport/glxconvenience/qglxconvenience_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/inputcontext/qplatforminputcontextfactory_qpa.cpp b/src/platformsupport/inputcontext/qplatforminputcontextfactory_qpa.cpp
index aa268ff940..e7fdf4385f 100644
--- a/src/platformsupport/inputcontext/qplatforminputcontextfactory_qpa.cpp
+++ b/src/platformsupport/inputcontext/qplatforminputcontextfactory_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/inputcontext/qplatforminputcontextfactory_qpa_p.h b/src/platformsupport/inputcontext/qplatforminputcontextfactory_qpa_p.h
index c43658dd4a..a7ed2ebfb3 100644
--- a/src/platformsupport/inputcontext/qplatforminputcontextfactory_qpa_p.h
+++ b/src/platformsupport/inputcontext/qplatforminputcontextfactory_qpa_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPlatformInputContext;
diff --git a/src/platformsupport/inputcontext/qplatforminputcontextplugin_qpa.cpp b/src/platformsupport/inputcontext/qplatforminputcontextplugin_qpa.cpp
index 737eab1a66..88cd9cdf67 100644
--- a/src/platformsupport/inputcontext/qplatforminputcontextplugin_qpa.cpp
+++ b/src/platformsupport/inputcontext/qplatforminputcontextplugin_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/inputcontext/qplatforminputcontextplugin_qpa_p.h b/src/platformsupport/inputcontext/qplatforminputcontextplugin_qpa_p.h
index e0ed477acb..495567db07 100644
--- a/src/platformsupport/inputcontext/qplatforminputcontextplugin_qpa_p.h
+++ b/src/platformsupport/inputcontext/qplatforminputcontextplugin_qpa_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,7 +60,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPlatformInputContext;
diff --git a/src/platformsupport/printersupport/genericunix/qgenericunixprintersupport.cpp b/src/platformsupport/printersupport/genericunix/qgenericunixprintersupport.cpp
index db4737706e..2fb9562545 100644
--- a/src/platformsupport/printersupport/genericunix/qgenericunixprintersupport.cpp
+++ b/src/platformsupport/printersupport/genericunix/qgenericunixprintersupport.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/platformsupport/printersupport/genericunix/qgenericunixprintersupport_p.h b/src/platformsupport/printersupport/genericunix/qgenericunixprintersupport_p.h
index 95d8280659..369e8274fd 100644
--- a/src/platformsupport/printersupport/genericunix/qgenericunixprintersupport_p.h
+++ b/src/platformsupport/printersupport/genericunix/qgenericunixprintersupport_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/accessible/widgets/complexwidgets.cpp b/src/plugins/accessible/widgets/complexwidgets.cpp
index 2c1330f188..50e0cd7b65 100644
--- a/src/plugins/accessible/widgets/complexwidgets.cpp
+++ b/src/plugins/accessible/widgets/complexwidgets.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/accessible/widgets/complexwidgets.h b/src/plugins/accessible/widgets/complexwidgets.h
index c596e0b348..d734e5ca56 100644
--- a/src/plugins/accessible/widgets/complexwidgets.h
+++ b/src/plugins/accessible/widgets/complexwidgets.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/accessible/widgets/itemviews.cpp b/src/plugins/accessible/widgets/itemviews.cpp
index a7989ccd4e..a85c79918f 100644
--- a/src/plugins/accessible/widgets/itemviews.cpp
+++ b/src/plugins/accessible/widgets/itemviews.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/accessible/widgets/itemviews.h b/src/plugins/accessible/widgets/itemviews.h
index 4b5112350f..35a9f83a9e 100644
--- a/src/plugins/accessible/widgets/itemviews.h
+++ b/src/plugins/accessible/widgets/itemviews.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/accessible/widgets/main.cpp b/src/plugins/accessible/widgets/main.cpp
index 67e1a46703..dfa9594d5b 100644
--- a/src/plugins/accessible/widgets/main.cpp
+++ b/src/plugins/accessible/widgets/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/accessible/widgets/qaccessiblemenu.cpp b/src/plugins/accessible/widgets/qaccessiblemenu.cpp
index fcd118e745..49cf550b76 100644
--- a/src/plugins/accessible/widgets/qaccessiblemenu.cpp
+++ b/src/plugins/accessible/widgets/qaccessiblemenu.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/accessible/widgets/qaccessiblemenu.h b/src/plugins/accessible/widgets/qaccessiblemenu.h
index 873aacd5d4..e926dc708a 100644
--- a/src/plugins/accessible/widgets/qaccessiblemenu.h
+++ b/src/plugins/accessible/widgets/qaccessiblemenu.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp
index 70d1a7bf48..12a415a5b1 100644
--- a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp
+++ b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/accessible/widgets/qaccessiblewidgets.h b/src/plugins/accessible/widgets/qaccessiblewidgets.h
index b53138636f..c19f1f49fd 100644
--- a/src/plugins/accessible/widgets/qaccessiblewidgets.h
+++ b/src/plugins/accessible/widgets/qaccessiblewidgets.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/accessible/widgets/rangecontrols.cpp b/src/plugins/accessible/widgets/rangecontrols.cpp
index 6c439a71f0..9174c66d1b 100644
--- a/src/plugins/accessible/widgets/rangecontrols.cpp
+++ b/src/plugins/accessible/widgets/rangecontrols.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/accessible/widgets/rangecontrols.h b/src/plugins/accessible/widgets/rangecontrols.h
index 218c48184c..29b89301d9 100644
--- a/src/plugins/accessible/widgets/rangecontrols.h
+++ b/src/plugins/accessible/widgets/rangecontrols.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/accessible/widgets/simplewidgets.cpp b/src/plugins/accessible/widgets/simplewidgets.cpp
index d645ad2d22..652150f392 100644
--- a/src/plugins/accessible/widgets/simplewidgets.cpp
+++ b/src/plugins/accessible/widgets/simplewidgets.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/accessible/widgets/simplewidgets.h b/src/plugins/accessible/widgets/simplewidgets.h
index 88bc931336..bbdececadf 100644
--- a/src/plugins/accessible/widgets/simplewidgets.h
+++ b/src/plugins/accessible/widgets/simplewidgets.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/connman/main.cpp b/src/plugins/bearer/connman/main.cpp
index 730e6857ed..f612f0ca9f 100644
--- a/src/plugins/bearer/connman/main.cpp
+++ b/src/plugins/bearer/connman/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/connman/qconnmanengine.cpp b/src/plugins/bearer/connman/qconnmanengine.cpp
index 254a5ddd87..1a874a92b7 100644
--- a/src/plugins/bearer/connman/qconnmanengine.cpp
+++ b/src/plugins/bearer/connman/qconnmanengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/connman/qconnmanengine.h b/src/plugins/bearer/connman/qconnmanengine.h
index ce944e3352..1e3ef7d3c3 100644
--- a/src/plugins/bearer/connman/qconnmanengine.h
+++ b/src/plugins/bearer/connman/qconnmanengine.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/connman/qconnmanservice_linux.cpp b/src/plugins/bearer/connman/qconnmanservice_linux.cpp
index 81024e0e8b..3ee67ed38f 100644
--- a/src/plugins/bearer/connman/qconnmanservice_linux.cpp
+++ b/src/plugins/bearer/connman/qconnmanservice_linux.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/connman/qconnmanservice_linux_p.h b/src/plugins/bearer/connman/qconnmanservice_linux_p.h
index 0298459798..5a1778605e 100644
--- a/src/plugins/bearer/connman/qconnmanservice_linux_p.h
+++ b/src/plugins/bearer/connman/qconnmanservice_linux_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/connman/qofonoservice_linux.cpp b/src/plugins/bearer/connman/qofonoservice_linux.cpp
index b6670c98d6..5fe6ae0f88 100644
--- a/src/plugins/bearer/connman/qofonoservice_linux.cpp
+++ b/src/plugins/bearer/connman/qofonoservice_linux.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/connman/qofonoservice_linux_p.h b/src/plugins/bearer/connman/qofonoservice_linux_p.h
index a6a64b8657..c92804dd3a 100644
--- a/src/plugins/bearer/connman/qofonoservice_linux_p.h
+++ b/src/plugins/bearer/connman/qofonoservice_linux_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/corewlan/main.cpp b/src/plugins/bearer/corewlan/main.cpp
index 7cc8e9db29..0f5ad2c7fb 100644
--- a/src/plugins/bearer/corewlan/main.cpp
+++ b/src/plugins/bearer/corewlan/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.h b/src/plugins/bearer/corewlan/qcorewlanengine.h
index 570640bc8f..fb34b2cb4b 100644
--- a/src/plugins/bearer/corewlan/qcorewlanengine.h
+++ b/src/plugins/bearer/corewlan/qcorewlanengine.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/corewlan/qcorewlanengine.mm b/src/plugins/bearer/corewlan/qcorewlanengine.mm
index 5552252692..41f817f5fc 100644
--- a/src/plugins/bearer/corewlan/qcorewlanengine.mm
+++ b/src/plugins/bearer/corewlan/qcorewlanengine.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -69,13 +69,6 @@
#include <net/if.h>
#include <ifaddrs.h>
-inline QString qt_NSStringToQString(const NSString *nsstr)
-{ return QCFString::toQString(reinterpret_cast<const CFStringRef>(nsstr)); }
-
-inline NSString *qt_QStringToNSString(const QString &qstr)
-{ return [reinterpret_cast<const NSString *>(QCFString::toCFStringRef(qstr)) autorelease]; }
-
-
@interface QT_MANGLE_NAMESPACE(QNSListener) : NSObject
{
NSNotificationCenter *notificationCenter;
@@ -170,7 +163,7 @@ void QScanThread::run()
NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
QStringList found;
mutex.lock();
- CWInterface *currentInterface = [CWInterface interfaceWithName:qt_QStringToNSString(interfaceName)];
+ CWInterface *currentInterface = [CWInterface interfaceWithName: QCFString::toNSString(interfaceName)];
mutex.unlock();
if([currentInterface power]) {
@@ -188,14 +181,14 @@ void QScanThread::run()
for(uint row=0; row < [apArray count]; row++ ) {
apNetwork = [apArray objectAtIndex:row];
- const QString networkSsid = qt_NSStringToQString([apNetwork ssid]);
+ const QString networkSsid = QCFString::toQString([apNetwork ssid]);
const QString id = QString::number(qHash(QLatin1String("corewlan:") + networkSsid));
found.append(id);
QNetworkConfiguration::StateFlags state = QNetworkConfiguration::Undefined;
bool known = isKnownSsid(networkSsid);
if( [currentInterface.interfaceState intValue] == kCWInterfaceStateRunning) {
- if( networkSsid == qt_NSStringToQString( [currentInterface ssid])) {
+ if( networkSsid == QCFString::toQString( [currentInterface ssid])) {
state = QNetworkConfiguration::Active;
}
}
@@ -238,7 +231,7 @@ void QScanThread::run()
}
if( [currentInterface.interfaceState intValue] == kCWInterfaceStateRunning) {
- if( networkSsid == qt_NSStringToQString([currentInterface ssid])) {
+ if( networkSsid == QCFString::toQString([currentInterface ssid])) {
state = QNetworkConfiguration::Active;
}
}
@@ -317,10 +310,10 @@ void QScanThread::getUserConfigurations()
NSArray *thisSsidarray = [prefNetDict valueForKey:@"SSID_STR"];
for(NSString *ssidkey in thisSsidarray) {
- QString thisSsid = qt_NSStringToQString(ssidkey);
+ QString thisSsid = QCFString::toQString(ssidkey);
if(!userProfiles.contains(thisSsid)) {
QMap <QString,QString> map;
- map.insert(thisSsid, qt_NSStringToQString(nsInterfaceName));
+ map.insert(thisSsid, QCFString::toQString(nsInterfaceName));
userProfiles.insert(thisSsid, map);
}
}
@@ -329,7 +322,7 @@ void QScanThread::getUserConfigurations()
// 802.1X user profiles
QString userProfilePath = QDir::homePath() + "/Library/Preferences/com.apple.eap.profiles.plist";
- NSDictionary* eapDict = [[[NSDictionary alloc] initWithContentsOfFile:qt_QStringToNSString(userProfilePath)] autorelease];
+ NSDictionary* eapDict = [[[NSDictionary alloc] initWithContentsOfFile: QCFString::toNSString(userProfilePath)] autorelease];
if(eapDict != nil) {
NSString *profileStr= @"Profiles";
NSString *nameStr = @"UserDefinedName";
@@ -348,15 +341,15 @@ void QScanThread::getUserConfigurations()
QString ssid;
for(int i = 0; i < dictSize; i++) {
if([nameStr isEqualToString:keys[i]]) {
- networkName = qt_NSStringToQString(objects[i]);
+ networkName = QCFString::toQString(objects[i]);
}
if([networkSsidStr isEqualToString:keys[i]]) {
- ssid = qt_NSStringToQString(objects[i]);
+ ssid = QCFString::toQString(objects[i]);
}
if(!userProfiles.contains(networkName)
&& !ssid.isEmpty()) {
QMap<QString,QString> map;
- map.insert(ssid, qt_NSStringToQString(nsInterfaceName));
+ map.insert(ssid, QCFString::toQString(nsInterfaceName));
userProfiles.insert(networkName, map);
}
}
@@ -479,7 +472,7 @@ void QCoreWlanEngine::connectToId(const QString &id)
QString interfaceString = getInterfaceFromId(id);
CWInterface *wifiInterface =
- [CWInterface interfaceWithName: qt_QStringToNSString(interfaceString)];
+ [CWInterface interfaceWithName: QCFString::toNSString(interfaceString)];
if ([wifiInterface power]) {
NSError *err = nil;
@@ -497,9 +490,9 @@ void QCoreWlanEngine::connectToId(const QString &id)
NSArray *array = [CW8021XProfile allUser8021XProfiles];
for (NSUInteger i = 0; i < [array count]; ++i) {
- const QString networkNameHashCheck = QString::number(qHash(QLatin1String("corewlan:") + qt_NSStringToQString([[array objectAtIndex:i] userDefinedName])));
+ const QString networkNameHashCheck = QString::number(qHash(QLatin1String("corewlan:") + QCFString::toQString([[array objectAtIndex:i] userDefinedName])));
- const QString ssidHash = QString::number(qHash(QLatin1String("corewlan:") + qt_NSStringToQString([[array objectAtIndex:i] ssid])));
+ const QString ssidHash = QString::number(qHash(QLatin1String("corewlan:") + QCFString::toQString([[array objectAtIndex:i] ssid])));
if (id == networkNameHashCheck || id == ssidHash) {
const QString thisName = scanThread->getSsidFromNetworkName(id);
@@ -532,7 +525,7 @@ void QCoreWlanEngine::connectToId(const QString &id)
[NSNumber numberWithBool:YES], kCWScanKeyMerge,
[NSNumber numberWithInt:kCWScanTypeFast], kCWScanKeyScanType,
[NSNumber numberWithInteger:100], kCWScanKeyRestTime,
- qt_QStringToNSString(wantedSsid), kCWScanKeySSID,
+ QCFString::toNSString(wantedSsid), kCWScanKeySSID,
nil];
NSArray *scanArray = [wifiInterface scanForNetworksWithParameters:scanParameters error:&err];
@@ -541,7 +534,7 @@ void QCoreWlanEngine::connectToId(const QString &id)
for(uint row=0; row < [scanArray count]; row++ ) {
CWNetwork *apNetwork = [scanArray objectAtIndex:row];
- if(wantedSsid == qt_NSStringToQString([apNetwork ssid])) {
+ if(wantedSsid == QCFString::toQString([apNetwork ssid])) {
if(!using8021X) {
SecKeychainAttribute attributes[3];
@@ -608,12 +601,12 @@ void QCoreWlanEngine::connectToId(const QString &id)
return;
}
} else {
- qDebug() <<"associate ERROR"<< qt_NSStringToQString([err localizedDescription ]);
+ qDebug() <<"associate ERROR"<< QCFString::toQString([err localizedDescription ]);
}
}
} //end scan network
} else {
- qDebug() <<"scan ERROR"<< qt_NSStringToQString([err localizedDescription ]);
+ qDebug() <<"scan ERROR"<< QCFString::toQString([err localizedDescription ]);
}
emit connectionError(id, InterfaceLookupError);
}
@@ -631,7 +624,7 @@ void QCoreWlanEngine::disconnectFromId(const QString &id)
NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
CWInterface *wifiInterface =
- [CWInterface interfaceWithName: qt_QStringToNSString(interfaceString)];
+ [CWInterface interfaceWithName: QCFString::toNSString(interfaceString)];
[wifiInterface disassociate];
if ([[wifiInterface interfaceState]intValue] != kCWInterfaceStateInactive) {
@@ -656,7 +649,7 @@ void QCoreWlanEngine::doRequestUpdate()
NSArray *wifiInterfaces = [CWInterface supportedInterfaces];
for (uint row = 0; row < [wifiInterfaces count]; ++row) {
- scanThread->interfaceName = qt_NSStringToQString([wifiInterfaces objectAtIndex:row]);
+ scanThread->interfaceName = QCFString::toQString([wifiInterfaces objectAtIndex:row]);
scanThread->start();
}
locker.unlock();
@@ -669,7 +662,7 @@ bool QCoreWlanEngine::isWifiReady(const QString &wifiDeviceName)
bool haswifi = false;
if(hasWifi) {
NSAutoreleasePool *autoreleasepool = [[NSAutoreleasePool alloc] init];
- CWInterface *defaultInterface = [CWInterface interfaceWithName: qt_QStringToNSString(wifiDeviceName)];
+ CWInterface *defaultInterface = [CWInterface interfaceWithName: QCFString::toNSString(wifiDeviceName)];
if([defaultInterface power]) {
haswifi = true;
}
@@ -898,7 +891,7 @@ quint64 QCoreWlanEngine::startTime(const QString &identifier)
bool ok = false;
for(int i = 0; i < dictSize; i++) {
if([ssidStr isEqualToString:keys[i]]) {
- const QString ident = QString::number(qHash(QLatin1String("corewlan:") + qt_NSStringToQString(objects[i])));
+ const QString ident = QString::number(qHash(QLatin1String("corewlan:") + QCFString::toQString(objects[i])));
if(ident == identifier) {
ok = true;
}
diff --git a/src/plugins/bearer/generic/main.cpp b/src/plugins/bearer/generic/main.cpp
index 84d49a2365..0311bcbef0 100644
--- a/src/plugins/bearer/generic/main.cpp
+++ b/src/plugins/bearer/generic/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/generic/qgenericengine.cpp b/src/plugins/bearer/generic/qgenericengine.cpp
index 1413514794..a90d066ad6 100644
--- a/src/plugins/bearer/generic/qgenericengine.cpp
+++ b/src/plugins/bearer/generic/qgenericengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/generic/qgenericengine.h b/src/plugins/bearer/generic/qgenericengine.h
index 33af624ce0..d3a47be7ca 100644
--- a/src/plugins/bearer/generic/qgenericengine.h
+++ b/src/plugins/bearer/generic/qgenericengine.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/nativewifi/main.cpp b/src/plugins/bearer/nativewifi/main.cpp
index 5e9fb6ed7d..74129c1d0a 100644
--- a/src/plugins/bearer/nativewifi/main.cpp
+++ b/src/plugins/bearer/nativewifi/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/nativewifi/platformdefs.h b/src/plugins/bearer/nativewifi/platformdefs.h
index 62ea55c6b2..7614bdb96a 100644
--- a/src/plugins/bearer/nativewifi/platformdefs.h
+++ b/src/plugins/bearer/nativewifi/platformdefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/nativewifi/qnativewifiengine.cpp b/src/plugins/bearer/nativewifi/qnativewifiengine.cpp
index 6bde5d46de..90230bb7d0 100644
--- a/src/plugins/bearer/nativewifi/qnativewifiengine.cpp
+++ b/src/plugins/bearer/nativewifi/qnativewifiengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/nativewifi/qnativewifiengine.h b/src/plugins/bearer/nativewifi/qnativewifiengine.h
index 2307538028..90d30ee228 100644
--- a/src/plugins/bearer/nativewifi/qnativewifiengine.h
+++ b/src/plugins/bearer/nativewifi/qnativewifiengine.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/networkmanager/main.cpp b/src/plugins/bearer/networkmanager/main.cpp
index 01932429b1..2278d221fd 100644
--- a/src/plugins/bearer/networkmanager/main.cpp
+++ b/src/plugins/bearer/networkmanager/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp
index dd845314f5..fd79cff484 100644
--- a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp
+++ b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h
index 445c316627..3d1419b650 100644
--- a/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h
+++ b/src/plugins/bearer/networkmanager/qnetworkmanagerengine.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp
index 126d3da891..f5d12f7623 100644
--- a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp
+++ b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h
index 2c2f35a06c..d65da00724 100644
--- a/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h
+++ b/src/plugins/bearer/networkmanager/qnetworkmanagerservice.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/networkmanager/qnmdbushelper.cpp b/src/plugins/bearer/networkmanager/qnmdbushelper.cpp
index 86b6376ca7..1f76c9c840 100644
--- a/src/plugins/bearer/networkmanager/qnmdbushelper.cpp
+++ b/src/plugins/bearer/networkmanager/qnmdbushelper.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/networkmanager/qnmdbushelper.h b/src/plugins/bearer/networkmanager/qnmdbushelper.h
index 93f141b7a6..6f91af14a9 100644
--- a/src/plugins/bearer/networkmanager/qnmdbushelper.h
+++ b/src/plugins/bearer/networkmanager/qnmdbushelper.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/nla/main.cpp b/src/plugins/bearer/nla/main.cpp
index e70a3e381e..4337c1748a 100644
--- a/src/plugins/bearer/nla/main.cpp
+++ b/src/plugins/bearer/nla/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/nla/qnlaengine.cpp b/src/plugins/bearer/nla/qnlaengine.cpp
index a9ee4b4bb3..640fa3ec43 100644
--- a/src/plugins/bearer/nla/qnlaengine.cpp
+++ b/src/plugins/bearer/nla/qnlaengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/nla/qnlaengine.h b/src/plugins/bearer/nla/qnlaengine.h
index c0b6311f7d..ae1d5ea406 100644
--- a/src/plugins/bearer/nla/qnlaengine.h
+++ b/src/plugins/bearer/nla/qnlaengine.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/platformdefs_win.h b/src/plugins/bearer/platformdefs_win.h
index a4c9bac11b..a0cfa57052 100644
--- a/src/plugins/bearer/platformdefs_win.h
+++ b/src/plugins/bearer/platformdefs_win.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/qbearerengine_impl.h b/src/plugins/bearer/qbearerengine_impl.h
index 01bce7bf72..aa4433115e 100644
--- a/src/plugins/bearer/qbearerengine_impl.h
+++ b/src/plugins/bearer/qbearerengine_impl.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/qnetworksession_impl.cpp b/src/plugins/bearer/qnetworksession_impl.cpp
index ab0c44321e..68d6007bdc 100644
--- a/src/plugins/bearer/qnetworksession_impl.cpp
+++ b/src/plugins/bearer/qnetworksession_impl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/bearer/qnetworksession_impl.h b/src/plugins/bearer/qnetworksession_impl.h
index e022c7b7d2..7e48ec3a9f 100644
--- a/src/plugins/bearer/qnetworksession_impl.h
+++ b/src/plugins/bearer/qnetworksession_impl.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/codecs/cn/cn.pro b/src/plugins/codecs/cn/cn.pro
deleted file mode 100644
index 11a3dd0e6c..0000000000
--- a/src/plugins/codecs/cn/cn.pro
+++ /dev/null
@@ -1,14 +0,0 @@
-TARGET = qcncodecs
-load(qt_plugin)
-
-CONFIG += warn_on
-DESTDIR = $$QT.core.plugins/codecs
-QT = core
-
-HEADERS = qgb18030codec.h
-
-SOURCES = qgb18030codec.cpp \
- main.cpp
-
-target.path += $$[QT_INSTALL_PLUGINS]/codecs
-INSTALLS += target
diff --git a/src/plugins/codecs/cn/main.cpp b/src/plugins/codecs/cn/main.cpp
deleted file mode 100644
index fb1e61a451..0000000000
--- a/src/plugins/codecs/cn/main.cpp
+++ /dev/null
@@ -1,145 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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 <qtextcodecplugin.h>
-#include <qtextcodec.h>
-#include <qlist.h>
-
-#include "qgb18030codec.h"
-
-#ifndef QT_NO_TEXTCODECPLUGIN
-
-QT_BEGIN_NAMESPACE
-
-class CNTextCodecs : public QTextCodecPlugin
-{
-public:
- CNTextCodecs() {}
-
- QList<QByteArray> names() const;
- QList<QByteArray> aliases() const;
- QList<int> mibEnums() const;
-
- QTextCodec *createForMib(int);
- QTextCodec *createForName(const QByteArray &);
-};
-
-QList<QByteArray> CNTextCodecs::names() const
-{
- QList<QByteArray> list;
- list += QGb18030Codec::_name();
- list += QGbkCodec::_name();
- list += QGb2312Codec::_name();
-#ifdef Q_OS_UNIX
- list += QFontGb2312Codec::_name();
- list += QFontGbkCodec::_name();
-#endif
- return list;
-}
-
-QList<QByteArray> CNTextCodecs::aliases() const
-{
- QList<QByteArray> list;
- list += QGb18030Codec::_aliases();
- list += QGbkCodec::_aliases();
- list += QGb2312Codec::_aliases();
-#ifdef Q_OS_UNIX
- list += QFontGb2312Codec::_aliases();
- list += QFontGbkCodec::_aliases();
-#endif
- return list;
-}
-
-QList<int> CNTextCodecs::mibEnums() const
-{
- QList<int> list;
- list += QGb18030Codec::_mibEnum();
- list += QGbkCodec::_mibEnum();
- list += QGb2312Codec::_mibEnum();
-#ifdef Q_OS_UNIX
- list += QFontGb2312Codec::_mibEnum();
- list += QFontGbkCodec::_mibEnum();
-#endif
- return list;
-}
-
-QTextCodec *CNTextCodecs::createForMib(int mib)
-{
- if (mib == QGb18030Codec::_mibEnum())
- return new QGb18030Codec;
- if (mib == QGbkCodec::_mibEnum())
- return new QGbkCodec;
- if (mib == QGb2312Codec::_mibEnum())
- return new QGb2312Codec;
-#ifdef Q_OS_UNIX
- if (mib == QFontGbkCodec::_mibEnum())
- return new QFontGbkCodec;
- if (mib == QFontGb2312Codec::_mibEnum())
- return new QFontGb2312Codec;
-#endif
- return 0;
-}
-
-
-QTextCodec *CNTextCodecs::createForName(const QByteArray &name)
-{
- if (name == QGb18030Codec::_name() || QGb18030Codec::_aliases().contains(name))
- return new QGb18030Codec;
- if (name == QGbkCodec::_name() || QGbkCodec::_aliases().contains(name))
- return new QGbkCodec;
- if (name == QGb2312Codec::_name() || QGb2312Codec::_aliases().contains(name))
- return new QGb2312Codec;
-#ifdef Q_OS_UNIX
- if (name == QFontGbkCodec::_name() || QFontGbkCodec::_aliases().contains(name))
- return new QFontGbkCodec;
- if (name == QFontGb2312Codec::_name() || QFontGb2312Codec::_aliases().contains(name))
- return new QFontGb2312Codec;
-#endif
- return 0;
-}
-
-
-Q_EXPORT_STATIC_PLUGIN(CNTextCodecs)
-Q_EXPORT_PLUGIN2(qcncodecs, CNTextCodecs)
-
-QT_END_NAMESPACE
-
-#endif // QT_NO_TEXTCODECPLUGIN
diff --git a/src/plugins/codecs/cn/qgb18030codec.cpp b/src/plugins/codecs/cn/qgb18030codec.cpp
deleted file mode 100644
index 28d42e0983..0000000000
--- a/src/plugins/codecs/cn/qgb18030codec.cpp
+++ /dev/null
@@ -1,9265 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-/*! \class QGb18030Codec
- \reentrant
- \internal
-*/
-
-#include "qgb18030codec.h"
-
-#ifndef QT_NO_TEXTCODEC
-
-QT_BEGIN_NAMESPACE
-
-#define InRange(c, lower, upper) (((c) >= (lower)) && ((c) <= (upper)))
-#define IsLatin(c) ((c) <= 0x7F)
-#define IsByteInGb2312(c) (InRange((c), 0xA1, 0xFE))
-#define Is1stByte(c) (InRange((c), 0x81, 0xFE))
-#define Is2ndByteIn2Bytes(c) (InRange((c), 0x40, 0xFE) && (c) != 0x7F)
-#define Is2ndByteIn4Bytes(c) (InRange((c), 0x30, 0x39))
-#define Is2ndByte(c) (Is2ndByteIn2Bytes(c) || Is2ndByteIn4Bytes(c))
-#define Is3rdByte(c) (InRange((c), 0x81, 0xFE))
-#define Is4thByte(c) (InRange((c), 0x30, 0x39))
-
-#define qValidChar(u) ((u) ? (u) : static_cast<ushort>(QChar::ReplacementCharacter))
-
-/* User-defined areas: UDA 1: 0xAAA1 - 0xAFFE (564/0)
- UDA 2: 0xF8A1 - 0xFEFE (658/0)
- UDA 3: 0xA140 - 0xA7A0 (672/0) */
-#define IsUDA1(a, b) (InRange((a), 0xAA, 0xAF) && InRange((b), 0xA1, 0xFE))
-#define IsUDA2(a, b) (InRange((a), 0xF8, 0xFE) && InRange((b), 0xA1, 0xFE))
-#define IsUDA3(a, b) (InRange((a), 0xA1, 0xA7) && InRange((b), 0x40, 0xA0) && ((b) != 0x7F))
-
-typedef struct {
- quint8 tblBegin;
- quint8 tblEnd;
- quint16 tblOffset;
- quint16 algOffset;
-} indexTbl_t;
-
-static uint qt_Gb18030ToUnicode(const uchar *gbstr, int& len);
-static int qt_UnicodeToGb18030(uint unicode, uchar *gbchar);
-int qt_UnicodeToGbk(uint unicode, uchar *gbchar);
-
-QGb18030Codec::QGb18030Codec()
-{
-}
-
-/*! \reimp */
-QByteArray QGb18030Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
-{
- char replacement = '?';
- int high = -1;
- if (state) {
- if (state->flags & ConvertInvalidToNull)
- replacement = 0;
- if (state->remainingChars)
- high = state->state_data[0];
- }
- int invalid = 0;
-
- int rlen = 4 *len + 1;
- QByteArray rstr;
- rstr.resize(rlen);
- uchar* cursor = (uchar*)rstr.data();
-
- //qDebug("QGb18030Codec::fromUnicode(const QString& uc, int& lenInOut = %d)", lenInOut);
- for (int i = 0; i < len; i++) {
- unsigned short ch = uc[i].unicode();
- int len;
- uchar buf[4];
- if (high >= 0) {
- if (uc[i].isLowSurrogate()) {
- // valid surrogate pair
- ++i;
- uint u = QChar::surrogateToUcs4(high, uc[i].unicode());
- len = qt_UnicodeToGb18030(u, buf);
- if (len >= 2) {
- for (int j=0; j<len; j++)
- *cursor++ = buf[j];
- } else {
- *cursor++ = replacement;
- ++invalid;
- }
- high = -1;
- continue;
- } else {
- *cursor++ = replacement;
- ++invalid;
- high = -1;
- }
- }
-
- if (IsLatin(ch)) {
- // ASCII
- *cursor++ = ch;
- } else if (uc[i].isHighSurrogate()) {
- // surrogates area. check for correct encoding
- // we need at least one more character, first the high surrogate, then the low one
- high = ch;
- } else if ((len = qt_UnicodeToGb18030(ch, buf)) >= 2) {
- for (int j=0; j<len; j++)
- *cursor++ = buf[j];
- } else {
- // Error
- *cursor++ = replacement;
- ++invalid;
- }
- }
- rstr.resize(cursor - (uchar*)rstr.constData());
-
- if (state) {
- state->invalidChars += invalid;
- state->state_data[0] = high;
- if (high)
- state->remainingChars = 1;
- }
- return rstr;
-}
-
-QString QGb18030Codec::convertToUnicode(const char* chars, int len, ConverterState *state) const
-{
- uchar buf[4];
- int nbuf = 0;
- ushort replacement = QChar::ReplacementCharacter;
- if (state) {
- if (state->flags & ConvertInvalidToNull)
- replacement = QChar::Null;
- nbuf = state->remainingChars;
- buf[0] = (state->state_data[0] >> 24) & 0xff;
- buf[1] = (state->state_data[0] >> 16) & 0xff;
- buf[2] = (state->state_data[0] >> 8) & 0xff;
- buf[3] = (state->state_data[0] >> 0) & 0xff;
- }
- int invalid = 0;
-
- QString result;
- result.resize(len);
- int unicodeLen = 0;
- ushort *const resultData = reinterpret_cast<ushort*>(result.data());
- //qDebug("QGb18030Decoder::toUnicode(const char* chars, int len = %d)", len);
- for (int i = 0; i < len; i++) {
- uchar ch = chars[i];
- switch (nbuf) {
- case 0:
- if (IsLatin(ch)) {
- // ASCII
- resultData[unicodeLen] = ch;
- ++unicodeLen;
- } else if (Is1stByte(ch)) {
- // GB18030?
- buf[0] = ch;
- nbuf = 1;
- } else {
- // Invalid
- resultData[unicodeLen] = replacement;
- ++unicodeLen;
- ++invalid;
- }
- break;
- case 1:
- // GB18030 2 bytes
- if (Is2ndByteIn2Bytes(ch)) {
- buf[1] = ch;
- int clen = 2;
- uint u = qt_Gb18030ToUnicode(buf, clen);
- if (clen == 2) {
- resultData[unicodeLen] = qValidChar(static_cast<ushort>(u));
- ++unicodeLen;
- } else {
- resultData[unicodeLen] = replacement;
- ++unicodeLen;
- ++invalid;
- }
- nbuf = 0;
- } else if (Is2ndByteIn4Bytes(ch)) {
- buf[1] = ch;
- nbuf = 2;
- } else {
- // Error
- resultData[unicodeLen] = replacement;
- ++unicodeLen;
- ++invalid;
- nbuf = 0;
- }
- break;
- case 2:
- // GB18030 3 bytes
- if (Is3rdByte(ch)) {
- buf[2] = ch;
- nbuf = 3;
- } else {
- resultData[unicodeLen] = replacement;
- ++unicodeLen;
- ++invalid;
- nbuf = 0;
- }
- break;
- case 3:
- // GB18030 4 bytes
- if (Is4thByte(ch)) {
- buf[3] = ch;
- int clen = 4;
- uint u = qt_Gb18030ToUnicode(buf, clen);
- if (clen == 4) {
- resultData[unicodeLen] = qValidChar(u);
- ++unicodeLen;
- } else {
- resultData[unicodeLen] = replacement;
- ++unicodeLen;
- ++invalid;
- }
- } else {
- resultData[unicodeLen] = replacement;
- ++unicodeLen;
- ++invalid;
- }
- nbuf = 0;
- break;
- }
- }
- result.resize(unicodeLen);
-
- if (state) {
- state->remainingChars = nbuf;
- state->state_data[0] = (buf[0] << 24) + (buf[1] << 16) + (buf[2] << 8) + buf[3];
- state->invalidChars += invalid;
- }
- return result;
-}
-
-
-/*! \class QGbkCodec
- \reentrant
- \internal
-
- \brief The QGbkCodec class provides conversion to and from the Chinese
- GBK encoding.
-
- GBK, formally the Chinese Internal Code Specification, is a commonly
- used extension of GB 2312-80. Microsoft Windows uses it under the
- name code page 936.
-
- The GBK encoding has been superseded by the GB18030 encoding and
- GB18030 is backward compatible to GBK. For this reason the QGbkCodec class
- is implemented in terms of the GB18030 codec and uses its 1-byte and
- 2-byte portion for conversion from and to Unicode.
-
- The QGbkCodec is kept mainly for compatibility reasons with older software.
-*/
-
-
-/*!
- Constructs a QGbkCodec object.
-*/
-QGbkCodec::QGbkCodec()
- : QGb18030Codec()
-{
-}
-
-int QGbkCodec::_mibEnum()
-{
- return 113;
-}
-
-QByteArray QGbkCodec::_name()
-{
- return "GBK";
-}
-
-QList<QByteArray> QGbkCodec::_aliases()
-{
- QList<QByteArray> list;
- list << "CP936"
- << "MS936"
- << "windows-936";
- return list;
-}
-
-QString QGbkCodec::convertToUnicode(const char* chars, int len, ConverterState *state) const
-{
- uchar buf[2];
- int nbuf = 0;
- ushort replacement = QChar::ReplacementCharacter;
- if (state) {
- if (state->flags & ConvertInvalidToNull)
- replacement = QChar::Null;
- nbuf = state->remainingChars;
- buf[0] = state->state_data[0];
- buf[1] = state->state_data[1];
- }
- int invalid = 0;
-
- QString result;
- result.resize(len);
- int unicodeLen = 0;
- ushort *const resultData = reinterpret_cast<ushort*>(result.data());
-
- //qDebug("QGbkDecoder::toUnicode(const char* chars = \"%s\", int len = %d)", chars, len);
- for (int i=0; i<len; i++) {
- uchar ch = chars[i];
- switch (nbuf) {
- case 0:
- if (IsLatin(ch)) {
- // ASCII
- resultData[unicodeLen] = ch;
- ++unicodeLen;
- } else if (Is1stByte(ch)) {
- // GBK 1st byte?
- buf[0] = ch;
- nbuf = 1;
- } else {
- // Invalid
- resultData[unicodeLen] = replacement;
- ++unicodeLen;
- ++invalid;
- }
- break;
- case 1:
- // GBK 2nd byte
- if (Is2ndByteIn2Bytes(ch)) {
- buf[1] = ch;
- int clen = 2;
- uint u = qt_Gb18030ToUnicode(buf, clen);
- if (clen == 2) {
- resultData[unicodeLen] = qValidChar(static_cast<ushort>(u));
- ++unicodeLen;
- } else {
- resultData[unicodeLen] = replacement;
- ++unicodeLen;
- ++invalid;
- }
- nbuf = 0;
- } else {
- // Error
- resultData[unicodeLen] = replacement;
- ++unicodeLen;
- ++invalid;
- nbuf = 0;
- }
- break;
- }
- }
- result.resize(unicodeLen);
-
- if (state) {
- state->remainingChars = nbuf;
- state->state_data[0] = buf[0];
- state->state_data[1] = buf[1];
- state->invalidChars += invalid;
- }
- return result;
-}
-
-QByteArray QGbkCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
-{
- char replacement = '?';
- if (state) {
- if (state->flags & ConvertInvalidToNull)
- replacement = 0;
- }
- int invalid = 0;
-
- int rlen = 2*len + 1;
- QByteArray rstr;
- rstr.resize(rlen);
- uchar* cursor = (uchar*)rstr.data();
-
- //qDebug("QGbkCodec::fromUnicode(const QString& uc, int& lenInOut = %d)", lenInOut);
- for (int i = 0; i < len; i++) {
- QChar ch = uc[i];
- uchar buf[2];
-
- if (ch.row() == 0x00 && ch.cell() < 0x80) {
- // ASCII
- *cursor++ = ch.cell();
- } else if (qt_UnicodeToGbk(ch.unicode(), buf) == 2) {
- *cursor++ = buf[0];
- *cursor++ = buf[1];
- } else {
- // Error
- *cursor += replacement;
- ++invalid;
- }
- }
- rstr.resize(cursor - (uchar*)rstr.constData());
-
- if (state) {
- state->invalidChars += invalid;
- }
- return rstr;
-}
-
-
-/*! \class QGb2312Codec
- \internal
-
- \brief The QGb2312Codec class provides conversion to and from the Chinese
- GB2312 encoding.
-
- The GB2312 encoding has been superseded by the GB18030 encoding and
- GB18030 is backward compatible to GB2312. For this reason the QGb2312Codec
- class is implemented in terms of the GB18030 codec and uses its
- 0xA1A1-0xFEFE subset for conversion from and to Unicode.
-
- The QGb2312Codec is kept mainly for compatibility reasons with older software.
-*/
-
-
-/*!
- Constructs a QGb2312Codec object.
-*/
-QGb2312Codec::QGb2312Codec()
- : QGb18030Codec()
-{
-}
-
-int QGb2312Codec::_mibEnum()
-{
- return 2025;
-}
-
-QByteArray QGb2312Codec::_name()
-{
- return "GB2312";
-}
-
-
-QString QGb2312Codec::convertToUnicode(const char* chars, int len, ConverterState *state) const
-{
- uchar buf[2];
- int nbuf = 0;
- ushort replacement = QChar::ReplacementCharacter;
- if (state) {
- if (state->flags & ConvertInvalidToNull)
- replacement = QChar::Null;
- nbuf = state->remainingChars;
- buf[0] = state->state_data[0];
- buf[1] = state->state_data[1];
- }
- int invalid = 0;
-
- QString result;
- result.resize(len);
- int unicodeLen = 0;
- ushort *const resultData = reinterpret_cast<ushort*>(result.data());
- //qDebug("QGb2312Decoder::toUnicode(const char* chars, int len = %d)", len);
- for (int i=0; i<len; i++) {
- uchar ch = chars[i];
- switch (nbuf) {
- case 0:
- if (IsLatin(ch)) {
- // ASCII
- resultData[unicodeLen] = ch;
- ++unicodeLen;
- } else if (IsByteInGb2312(ch)) {
- // GB2312 1st byte?
- buf[0] = ch;
- nbuf = 1;
- } else {
- // Invalid
- resultData[unicodeLen] = replacement;
- ++unicodeLen;
- ++invalid;
- }
- break;
- case 1:
- // GB2312 2nd byte
- if (IsByteInGb2312(ch)) {
- buf[1] = ch;
- int clen = 2;
- uint u = qt_Gb18030ToUnicode(buf, clen);
- if (clen == 2) {
- resultData[unicodeLen] = qValidChar(static_cast<ushort>(u));
- ++unicodeLen;
- } else {
- resultData[unicodeLen] = replacement;
- ++unicodeLen;
- ++invalid;
- }
- nbuf = 0;
- } else {
- // Error
- resultData[unicodeLen] = replacement;
- ++unicodeLen;
- ++invalid;
- nbuf = 0;
- }
- break;
- }
- }
- result.resize(unicodeLen);
-
- if (state) {
- state->remainingChars = nbuf;
- state->state_data[0] = buf[0];
- state->state_data[1] = buf[1];
- state->invalidChars += invalid;
- }
- return result;
-}
-
-
-QByteArray QGb2312Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
-{
- char replacement = '?';
- if (state) {
- if (state->flags & ConvertInvalidToNull)
- replacement = 0;
- }
- int invalid = 0;
-
- int rlen = 2*len + 1;
- QByteArray rstr;
- rstr.resize(rlen);
- uchar* cursor = (uchar*)rstr.data();
-
- //qDebug("QGb2312Codec::fromUnicode(const QString& uc, int& lenInOut = %d) const", lenInOut);
- for (int i = 0; i < len; i++) {
- QChar ch = uc[i];
- uchar buf[2];
-
- if (ch.row() == 0x00 && ch.cell() < 0x80) {
- // ASCII
- *cursor++ = ch.cell();
- } else if ((qt_UnicodeToGbk(ch.unicode(), buf) == 2) &&
- (buf[0] >= 0xA1) && (buf[1] >= 0xA1)) {
- *cursor++ = buf[0];
- *cursor++ = buf[1];
- } else {
- // Error
- *cursor++ = replacement;
- ++invalid;
- }
- }
- rstr.resize(cursor - (uchar*)rstr.constData());
-
- if (state) {
- state->invalidChars += invalid;
- }
- return rstr;
-}
-
-
-#ifdef Q_OS_UNIX
-
-QFontGb2312Codec::QFontGb2312Codec()
-{
-}
-
-
-QByteArray QFontGb2312Codec::_name()
-{
- return "gb2312.1980-0";
-}
-
-
-int QFontGb2312Codec::_mibEnum()
-{
- return 57;
-}
-
-
-QString QFontGb2312Codec::convertToUnicode(const char* /*chars*/, int /*len*/, ConverterState *) const
-{
- return QString();
-}
-
-QByteArray QFontGb2312Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *) const
-{
- QByteArray result;
- result.resize(len * 2);
- uchar *rdata = (uchar *) result.data();
- const QChar *ucp = uc;
-
- //qDebug("QFontGb2312Codec::fromUnicode(const QString& uc, int& lenInOut = %d)", lenInOut);
- uchar buf[8];
- for (int i = 0; i < len; i++) {
- QChar ch(*ucp++);
-
- int len = qt_UnicodeToGbk(ch.unicode(), buf);
-
- if (len == 2 && buf[0] > 0xa0 && buf[1] > 0xa0) {
- *rdata++ = buf[0] & 0x7f;
- *rdata++ = buf[1] & 0x7f;
- } else {
- *rdata++ = 0;
- *rdata++ = 0;
- }
- }
- return result;
-}
-
-
-QFontGbkCodec::QFontGbkCodec()
-{
-}
-
-
-QByteArray QFontGbkCodec::_name()
-{
- return "gbk-0";
-}
-
-
-int QFontGbkCodec::_mibEnum()
-{
- return -113;
-}
-
-
-QString QFontGbkCodec::convertToUnicode(const char* /*chars*/, int /*len*/, ConverterState *) const
-{
- return QString();
-}
-
-QByteArray QFontGbkCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *) const
-{
- QByteArray result;
- result.resize(len * 2);
- uchar *rdata = (uchar *) result.data();
- const QChar *ucp = uc;
-
- //qDebug("QFontGbkCodec::fromUnicode(const QString& uc, int& lenInOut = %d)", lenInOut);
- for (int i = 0; i < len; i++) {
- QChar ch(*ucp++);
- uchar buf[8];
-
- int len = qt_UnicodeToGbk(ch.unicode(), buf);
-
- if (len == 2) {
- *rdata++ = buf[0];
- *rdata++ = buf[1];
- } else {
- *rdata++ = 0;
- *rdata++ = 0;
- }
- }
- return result;
-}
-
-
-QFontGb18030_0Codec::QFontGb18030_0Codec()
-{
- //qDebug("QFontGb18030_0Codec::QFontGb18030_0Codec()");
-}
-
-
-QByteArray QFontGb18030_0Codec::_name()
-{
- //qDebug("QFontGb18030_0Codec::name() = \"gb18030-0\"");
- return "gb18030-0";
-}
-
-
-int QFontGb18030_0Codec::_mibEnum()
-{
- //qDebug("QFontGb18030_0Codec::mibEnum() = -114");
- return -114;
-}
-
-
-QString QFontGb18030_0Codec::convertToUnicode(const char* /*chars*/, int /*len*/, ConverterState *) const
-{
- return QString();
-}
-
-QByteArray QFontGb18030_0Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *) const
-{
- QByteArray result;
- result.resize(len * 2);
- uchar *rdata = (uchar *) result.data();
- const QChar *ucp = uc;
-
- //qDebug("QFontGb18030_0Codec::fromUnicode(const QString& uc, int& lenInOut = %d)", lenInOut);
- for (int i = 0; i < len; i++) {
- QChar ch(*ucp++);
- if (ch.row () > 0 && !(ch.row () >= 0xd8 && ch.row () < 0xe0)) {
- *rdata++ = ch.row();
- *rdata++ = ch.cell();
- } else {
- *rdata++ = 0x0;
- *rdata++ = 0x0;
- }
- }
- return result;
-}
-
-#endif // Q_OS_UNIX
-
-
-static const indexTbl_t gb18030_to_ucs_index[154] = {
- /* U+00__ */ {0x00, 0xFF, 0x0000, 0x0000}, {0x00, 0xFF, 0x0000, 0x0000},
- /* U+02__ */ {0x00, 0xFF, 0x0000, 0x0000}, {0x00, 0x33, 0x0000, 0x041E},
- /* U+04__ */ {0xFF, 0x00, 0x1BBE, 0x051E}, {0xFF, 0x00, 0x1BBE, 0x061E},
- /* U+06__ */ {0xFF, 0x00, 0x1BBE, 0x071E}, {0xFF, 0x00, 0x1BBE, 0x081E},
- /* U+08__ */ {0xFF, 0x00, 0x1BBE, 0x091E}, {0xFF, 0x00, 0x1BBE, 0x0A1E},
- /* U+0A__ */ {0xFF, 0x00, 0x1BBE, 0x0B1E}, {0xFF, 0x00, 0x1BBE, 0x0C1E},
- /* U+0C__ */ {0xFF, 0x00, 0x1BBE, 0x0D1E}, {0xFF, 0x00, 0x1BBE, 0x0E1E},
- /* U+0E__ */ {0xFF, 0x00, 0x1BBE, 0x0F1E}, {0xFF, 0x00, 0x1BBE, 0x101E},
- /* U+10__ */ {0xFF, 0x00, 0x1BBE, 0x111E}, {0xFF, 0x00, 0x1BBE, 0x121E},
- /* U+12__ */ {0xFF, 0x00, 0x1BBE, 0x131E}, {0xFF, 0x00, 0x1BBE, 0x141E},
- /* U+14__ */ {0xFF, 0x00, 0x1BBE, 0x151E}, {0xFF, 0x00, 0x1BBE, 0x161E},
- /* U+16__ */ {0xFF, 0x00, 0x1BBE, 0x171E}, {0xFF, 0x00, 0x1BBE, 0x181E},
- /* U+18__ */ {0xFF, 0x00, 0x1BBE, 0x191E}, {0xFF, 0x00, 0x1BBE, 0x1A1E},
- /* U+1A__ */ {0xFF, 0x00, 0x1BBE, 0x1B1E}, {0xFF, 0x00, 0x1BBE, 0x1C1E},
- /* U+1C__ */ {0xFF, 0x00, 0x1BBE, 0x1D1E}, {0xFF, 0x00, 0x1BBE, 0x1E1E},
- /* U+1E__ */ {0xF2, 0xFF, 0x1BBE, 0x1F1E}, {0x00, 0xFF, 0x1BBE, 0x0000},
- /* U+20__ */ {0x00, 0xFF, 0x1BBE, 0x0000}, {0x00, 0xFF, 0x1BBE, 0x0000},
- /* U+22__ */ {0x00, 0xFF, 0x1BBE, 0x0000}, {0x00, 0xFF, 0x1BBE, 0x0000},
- /* U+24__ */ {0x00, 0x02, 0x1BBE, 0x2640}, {0xFF, 0x00, 0x23FC, 0x2740},
- /* U+26__ */ {0xFF, 0x00, 0x23FC, 0x2840}, {0xFF, 0x00, 0x23FC, 0x2940},
- /* U+28__ */ {0xFF, 0x00, 0x23FC, 0x2A40}, {0xFF, 0x00, 0x23FC, 0x2B40},
- /* U+2A__ */ {0xFF, 0x00, 0x23FC, 0x2C40}, {0xFF, 0x00, 0x23FC, 0x2D40},
- /* U+2C__ */ {0x41, 0xFF, 0x23FC, 0x2E40}, {0x00, 0xFF, 0x23FC, 0x0000},
- /* U+2E__ */ {0x00, 0xFF, 0x23FC, 0x0000}, {0x00, 0xFF, 0x23FC, 0x0000},
- /* U+30__ */ {0x00, 0xFF, 0x23FC, 0x0000}, {0x00, 0xFF, 0x23FC, 0x0000},
- /* U+32__ */ {0x00, 0xAC, 0x23FC, 0x356E}, {0xFF, 0x00, 0x26F9, 0x366E},
- /* U+34__ */ {0xFF, 0x00, 0x26F9, 0x376E}, {0xAA, 0xFF, 0x26F9, 0x386E},
- /* U+36__ */ {0x00, 0xFF, 0x26F9, 0x0000}, {0x00, 0xFF, 0x26F9, 0x0000},
- /* U+38__ */ {0x00, 0xFF, 0x26F9, 0x0000}, {0x00, 0x69, 0x26F9, 0x3C77},
- /* U+3A__ */ {0xFF, 0x00, 0x2A6E, 0x3D77}, {0xFF, 0x00, 0x2A6E, 0x3E77},
- /* U+3C__ */ {0xDF, 0xFF, 0x2A6E, 0x3F77}, {0x00, 0xE6, 0x2A6E, 0x4079},
- /* U+3E__ */ {0xFF, 0x00, 0x2C45, 0x4179}, {0xBE, 0xFF, 0x2C45, 0x4279},
- /* U+40__ */ {0x00, 0xFF, 0x2C45, 0x0000}, {0x00, 0x58, 0x2C45, 0x447E},
- /* U+42__ */ {0xCE, 0xFF, 0x2DBA, 0x457E}, {0x00, 0xFF, 0x2DBA, 0x0000},
- /* U+44__ */ {0x00, 0x09, 0x2DBA, 0x4784}, {0xC3, 0xFF, 0x2F73, 0x4884},
- /* U+46__ */ {0x00, 0x28, 0x2F73, 0x498F}, {0xFF, 0x00, 0x3232, 0x4A8F},
- /* U+48__ */ {0xE8, 0xFF, 0x3232, 0x4B8F}, {0x00, 0xFF, 0x3232, 0x0000},
- /* U+4A__ */ {0x00, 0x62, 0x3232, 0x9F43}, {0xFF, 0x00, 0x6A8C, 0xA043},
- /* U+4C__ */ {0xFF, 0x00, 0x6A8C, 0xA143}, {0xFF, 0x00, 0x6A8C, 0xA243},
- /* U+4E__ */ {0xFF, 0x00, 0x6A8C, 0xA343}, {0xFF, 0x00, 0x6A8C, 0xA443},
- /* U+50__ */ {0xFF, 0x00, 0x6A8C, 0xA543}, {0xFF, 0x00, 0x6A8C, 0xA643},
- /* U+52__ */ {0xFF, 0x00, 0x6A8C, 0xA743}, {0xFF, 0x00, 0x6A8C, 0xA843},
- /* U+54__ */ {0xFF, 0x00, 0x6A8C, 0xA943}, {0xFF, 0x00, 0x6A8C, 0xAA43},
- /* U+56__ */ {0xFF, 0x00, 0x6A8C, 0xAB43}, {0xFF, 0x00, 0x6A8C, 0xAC43},
- /* U+58__ */ {0xFF, 0x00, 0x6A8C, 0xAD43}, {0xFF, 0x00, 0x6A8C, 0xAE43},
- /* U+5A__ */ {0xFF, 0x00, 0x6A8C, 0xAF43}, {0xFF, 0x00, 0x6A8C, 0xB043},
- /* U+5C__ */ {0xFF, 0x00, 0x6A8C, 0xB143}, {0xFF, 0x00, 0x6A8C, 0xB243},
- /* U+5E__ */ {0xFF, 0x00, 0x6A8C, 0xB343}, {0xFF, 0x00, 0x6A8C, 0xB443},
- /* U+60__ */ {0xFF, 0x00, 0x6A8C, 0xB543}, {0xFF, 0x00, 0x6A8C, 0xB643},
- /* U+62__ */ {0xFF, 0x00, 0x6A8C, 0xB743}, {0xFF, 0x00, 0x6A8C, 0xB843},
- /* U+64__ */ {0xFF, 0x00, 0x6A8C, 0xB943}, {0xFF, 0x00, 0x6A8C, 0xBA43},
- /* U+66__ */ {0xFF, 0x00, 0x6A8C, 0xBB43}, {0xFF, 0x00, 0x6A8C, 0xBC43},
- /* U+68__ */ {0xFF, 0x00, 0x6A8C, 0xBD43}, {0xFF, 0x00, 0x6A8C, 0xBE43},
- /* U+6A__ */ {0xFF, 0x00, 0x6A8C, 0xBF43}, {0xFF, 0x00, 0x6A8C, 0xC043},
- /* U+6C__ */ {0xFF, 0x00, 0x6A8C, 0xC143}, {0xFF, 0x00, 0x6A8C, 0xC243},
- /* U+6E__ */ {0xFF, 0x00, 0x6A8C, 0xC343}, {0xFF, 0x00, 0x6A8C, 0xC443},
- /* U+70__ */ {0xFF, 0x00, 0x6A8C, 0xC543}, {0xFF, 0x00, 0x6A8C, 0xC643},
- /* U+72__ */ {0xFF, 0x00, 0x6A8C, 0xC743}, {0xFF, 0x00, 0x6A8C, 0xC843},
- /* U+74__ */ {0xFF, 0x00, 0x6A8C, 0xC943}, {0xFF, 0x00, 0x6A8C, 0xCA43},
- /* U+76__ */ {0xFF, 0x00, 0x6A8C, 0xCB43}, {0xFF, 0x00, 0x6A8C, 0xCC43},
- /* U+78__ */ {0xFF, 0x00, 0x6A8C, 0xCD43}, {0xFF, 0x00, 0x6A8C, 0xCE43},
- /* U+7A__ */ {0xFF, 0x00, 0x6A8C, 0xCF43}, {0xFF, 0x00, 0x6A8C, 0xD043},
- /* U+7C__ */ {0xFF, 0x00, 0x6A8C, 0xD143}, {0xFF, 0x00, 0x6A8C, 0xD243},
- /* U+7E__ */ {0xFF, 0x00, 0x6A8C, 0xD343}, {0xFF, 0x00, 0x6A8C, 0xD443},
- /* U+80__ */ {0xFF, 0x00, 0x6A8C, 0xD543}, {0xFF, 0x00, 0x6A8C, 0xD643},
- /* U+82__ */ {0xBD, 0xFF, 0x6A8C, 0xD743}, {0x00, 0x0D, 0x6A8C, 0xE857},
- /* U+84__ */ {0xFF, 0x00, 0x7B53, 0xE957}, {0xFF, 0x00, 0x7B53, 0xEA57},
- /* U+86__ */ {0xFF, 0x00, 0x7B53, 0xEB57}, {0xFF, 0x00, 0x7B53, 0xEC57},
- /* U+88__ */ {0xFF, 0x00, 0x7B53, 0xED57}, {0xFF, 0x00, 0x7B53, 0xEE57},
- /* U+8A__ */ {0xFF, 0x00, 0x7B53, 0xEF57}, {0xFF, 0x00, 0x7B53, 0xF057},
- /* U+8C__ */ {0xFF, 0x00, 0x7B53, 0xF157}, {0xFF, 0x00, 0x7B53, 0xF257},
- /* U+8E__ */ {0xFF, 0x00, 0x7B53, 0xF357}, {0xFF, 0x00, 0x7B53, 0xF457},
- /* U+90__ */ {0xFF, 0x00, 0x7B53, 0xF557}, {0xFF, 0x00, 0x7B53, 0xF657},
- /* U+92__ */ {0xFF, 0x00, 0x7B53, 0xF757}, {0xD5, 0xFF, 0x7B53, 0xF857},
- /* U+94__ */ {0x00, 0xBD, 0x7B53, 0xF96C}, {0xFF, 0x00, 0x7F59, 0xFA6C},
- /* U+96__ */ {0xFF, 0x00, 0x7F59, 0xFB6C}, {0xFF, 0x00, 0x7F59, 0xFC6C},
- /* U+98__ */ {0xC4, 0xFF, 0x7F59, 0xFD6C}, {0x00, 0xE1, 0x7F59, 0xFF04},
-};
-
-static const indexTbl_t ucs_to_gb18030_index[256] = {
- /* 0x00__ */ {0x80, 0xFF, 0x0080, 0x0000}, {0x00, 0xFF, 0x0080, 0x0000},
- /* 0x02__ */ {0x00, 0xFF, 0x0080, 0x0000}, {0x00, 0xFF, 0x0080, 0x0000},
- /* 0x04__ */ {0x00, 0x51, 0x0080, 0x02E2}, {0xFF, 0x00, 0x1C3E, 0x03E2},
- /* 0x06__ */ {0xFF, 0x00, 0x1C3E, 0x04E2}, {0xFF, 0x00, 0x1C3E, 0x05E2},
- /* 0x08__ */ {0xFF, 0x00, 0x1C3E, 0x06E2}, {0xFF, 0x00, 0x1C3E, 0x07E2},
- /* 0x0A__ */ {0xFF, 0x00, 0x1C3E, 0x08E2}, {0xFF, 0x00, 0x1C3E, 0x09E2},
- /* 0x0C__ */ {0xFF, 0x00, 0x1C3E, 0x0AE2}, {0xFF, 0x00, 0x1C3E, 0x0BE2},
- /* 0x0E__ */ {0xFF, 0x00, 0x1C3E, 0x0CE2}, {0xFF, 0x00, 0x1C3E, 0x0DE2},
- /* 0x10__ */ {0xFF, 0x00, 0x1C3E, 0x0EE2}, {0xFF, 0x00, 0x1C3E, 0x0FE2},
- /* 0x12__ */ {0xFF, 0x00, 0x1C3E, 0x10E2}, {0xFF, 0x00, 0x1C3E, 0x11E2},
- /* 0x14__ */ {0xFF, 0x00, 0x1C3E, 0x12E2}, {0xFF, 0x00, 0x1C3E, 0x13E2},
- /* 0x16__ */ {0xFF, 0x00, 0x1C3E, 0x14E2}, {0xFF, 0x00, 0x1C3E, 0x15E2},
- /* 0x18__ */ {0xFF, 0x00, 0x1C3E, 0x16E2}, {0xFF, 0x00, 0x1C3E, 0x17E2},
- /* 0x1A__ */ {0xFF, 0x00, 0x1C3E, 0x18E2}, {0xFF, 0x00, 0x1C3E, 0x19E2},
- /* 0x1C__ */ {0xFF, 0x00, 0x1C3E, 0x1AE2}, {0xFF, 0x00, 0x1C3E, 0x1BE2},
- /* 0x1E__ */ {0xFF, 0x00, 0x1C3E, 0x1CE2}, {0xFF, 0x00, 0x1C3E, 0x1DE2},
- /* 0x20__ */ {0x10, 0xFF, 0x1C3E, 0x1EE2}, {0x00, 0xFF, 0x1C3E, 0x0000},
- /* 0x22__ */ {0x00, 0xFF, 0x1C3E, 0x0000}, {0x00, 0xFF, 0x1C3E, 0x0000},
- /* 0x24__ */ {0x00, 0xFF, 0x1C3E, 0x0000}, {0x00, 0xFF, 0x1C3E, 0x0000},
- /* 0x26__ */ {0x00, 0x42, 0x1C3E, 0x23C0}, {0xFF, 0x00, 0x247C, 0x24C0},
- /* 0x28__ */ {0xFF, 0x00, 0x247C, 0x25C0}, {0xFF, 0x00, 0x247C, 0x26C0},
- /* 0x2A__ */ {0xFF, 0x00, 0x247C, 0x27C0}, {0xFF, 0x00, 0x247C, 0x28C0},
- /* 0x2C__ */ {0xFF, 0x00, 0x247C, 0x29C0}, {0xFF, 0x00, 0x247C, 0x2AC0},
- /* 0x2E__ */ {0x81, 0xFF, 0x247C, 0x2BC0}, {0x00, 0xFF, 0x247C, 0x0000},
- /* 0x30__ */ {0x00, 0xFF, 0x247C, 0x0000}, {0x00, 0xFF, 0x247C, 0x0000},
- /* 0x32__ */ {0x00, 0xFF, 0x247C, 0x0000}, {0x00, 0xFF, 0x247C, 0x0000},
- /* 0x34__ */ {0x00, 0xFF, 0x247C, 0x0000}, {0x00, 0xFF, 0x247C, 0x0000},
- /* 0x36__ */ {0x00, 0x1A, 0x247C, 0x3292}, {0xFF, 0x00, 0x2779, 0x3392},
- /* 0x38__ */ {0xFF, 0x00, 0x2779, 0x3492}, {0x18, 0xFF, 0x2779, 0x3592},
- /* 0x3A__ */ {0x00, 0xFF, 0x2779, 0x0000}, {0x00, 0xFF, 0x2779, 0x0000},
- /* 0x3C__ */ {0x00, 0xE0, 0x2779, 0x3889}, {0xFF, 0x00, 0x2AEE, 0x3989},
- /* 0x3E__ */ {0xFF, 0x00, 0x2AEE, 0x3A89}, {0xFF, 0x00, 0x2AEE, 0x3B89},
- /* 0x40__ */ {0x56, 0xFF, 0x2AEE, 0x3C89}, {0x00, 0x5F, 0x2AEE, 0x3D87},
- /* 0x42__ */ {0xFF, 0x00, 0x2CC5, 0x3E87}, {0x37, 0xFF, 0x2CC5, 0x3F87},
- /* 0x44__ */ {0x00, 0xD6, 0x2CC5, 0x4082}, {0xFF, 0x00, 0x2E3A, 0x4182},
- /* 0x46__ */ {0x4C, 0xFF, 0x2E3A, 0x4282}, {0x00, 0x8D, 0x2E3A, 0x437C},
- /* 0x48__ */ {0xFF, 0x00, 0x2FF3, 0x447C}, {0x47, 0xB7, 0x2FF3, 0x457C},
- /* 0x4A__ */ {0xFF, 0x00, 0x32B2, 0x4671}, {0xFF, 0x00, 0x32B2, 0x4771},
- /* 0x4C__ */ {0x77, 0xFF, 0x32B2, 0x4871}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x4E__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x50__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x52__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x54__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x56__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x58__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x5A__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x5C__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x5E__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x60__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x62__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x64__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x66__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x68__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x6A__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x6C__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x6E__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x70__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x72__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x74__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x76__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x78__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x7A__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x7C__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x7E__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x80__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x82__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x84__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x86__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x88__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x8A__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x8C__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x8E__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x90__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x92__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x94__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x96__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x98__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x9A__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x9C__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xFF, 0x32B2, 0x0000},
- /* 0x9E__ */ {0x00, 0xFF, 0x32B2, 0x0000}, {0x00, 0xA5, 0x32B2, 0x49BD},
- /* 0xA0__ */ {0xFF, 0x00, 0x6B0C, 0x4ABD}, {0xFF, 0x00, 0x6B0C, 0x4BBD},
- /* 0xA2__ */ {0xFF, 0x00, 0x6B0C, 0x4CBD}, {0xFF, 0x00, 0x6B0C, 0x4DBD},
- /* 0xA4__ */ {0xFF, 0x00, 0x6B0C, 0x4EBD}, {0xFF, 0x00, 0x6B0C, 0x4FBD},
- /* 0xA6__ */ {0xFF, 0x00, 0x6B0C, 0x50BD}, {0xFF, 0x00, 0x6B0C, 0x51BD},
- /* 0xA8__ */ {0xFF, 0x00, 0x6B0C, 0x52BD}, {0xFF, 0x00, 0x6B0C, 0x53BD},
- /* 0xAA__ */ {0xFF, 0x00, 0x6B0C, 0x54BD}, {0xFF, 0x00, 0x6B0C, 0x55BD},
- /* 0xAC__ */ {0xFF, 0x00, 0x6B0C, 0x56BD}, {0xFF, 0x00, 0x6B0C, 0x57BD},
- /* 0xAE__ */ {0xFF, 0x00, 0x6B0C, 0x58BD}, {0xFF, 0x00, 0x6B0C, 0x59BD},
- /* 0xB0__ */ {0xFF, 0x00, 0x6B0C, 0x5ABD}, {0xFF, 0x00, 0x6B0C, 0x5BBD},
- /* 0xB2__ */ {0xFF, 0x00, 0x6B0C, 0x5CBD}, {0xFF, 0x00, 0x6B0C, 0x5DBD},
- /* 0xB4__ */ {0xFF, 0x00, 0x6B0C, 0x5EBD}, {0xFF, 0x00, 0x6B0C, 0x5FBD},
- /* 0xB6__ */ {0xFF, 0x00, 0x6B0C, 0x60BD}, {0xFF, 0x00, 0x6B0C, 0x61BD},
- /* 0xB8__ */ {0xFF, 0x00, 0x6B0C, 0x62BD}, {0xFF, 0x00, 0x6B0C, 0x63BD},
- /* 0xBA__ */ {0xFF, 0x00, 0x6B0C, 0x64BD}, {0xFF, 0x00, 0x6B0C, 0x65BD},
- /* 0xBC__ */ {0xFF, 0x00, 0x6B0C, 0x66BD}, {0xFF, 0x00, 0x6B0C, 0x67BD},
- /* 0xBE__ */ {0xFF, 0x00, 0x6B0C, 0x68BD}, {0xFF, 0x00, 0x6B0C, 0x69BD},
- /* 0xC0__ */ {0xFF, 0x00, 0x6B0C, 0x6ABD}, {0xFF, 0x00, 0x6B0C, 0x6BBD},
- /* 0xC2__ */ {0xFF, 0x00, 0x6B0C, 0x6CBD}, {0xFF, 0x00, 0x6B0C, 0x6DBD},
- /* 0xC4__ */ {0xFF, 0x00, 0x6B0C, 0x6EBD}, {0xFF, 0x00, 0x6B0C, 0x6FBD},
- /* 0xC6__ */ {0xFF, 0x00, 0x6B0C, 0x70BD}, {0xFF, 0x00, 0x6B0C, 0x71BD},
- /* 0xC8__ */ {0xFF, 0x00, 0x6B0C, 0x72BD}, {0xFF, 0x00, 0x6B0C, 0x73BD},
- /* 0xCA__ */ {0xFF, 0x00, 0x6B0C, 0x74BD}, {0xFF, 0x00, 0x6B0C, 0x75BD},
- /* 0xCC__ */ {0xFF, 0x00, 0x6B0C, 0x76BD}, {0xFF, 0x00, 0x6B0C, 0x77BD},
- /* 0xCE__ */ {0xFF, 0x00, 0x6B0C, 0x78BD}, {0xFF, 0x00, 0x6B0C, 0x79BD},
- /* 0xD0__ */ {0xFF, 0x00, 0x6B0C, 0x7ABD}, {0xFF, 0x00, 0x6B0C, 0x7BBD},
- /* 0xD2__ */ {0xFF, 0x00, 0x6B0C, 0x7CBD}, {0xFF, 0x00, 0x6B0C, 0x7DBD},
- /* 0xD4__ */ {0xFF, 0x00, 0x6B0C, 0x7EBD}, {0xFF, 0x00, 0x6B0C, 0x7FBD},
- /* 0xD6__ */ {0xFF, 0x00, 0x6B0C, 0x80BD}, {0xFF, 0x00, 0x6B0C, 0x81BD},
- /* 0xD8__ */ {0xFF, 0x00, 0x6B0C, 0x0000}, {0xFF, 0x00, 0x6B0C, 0x0000},
- /* 0xDA__ */ {0xFF, 0x00, 0x6B0C, 0x0000}, {0xFF, 0x00, 0x6B0C, 0x0000},
- /* 0xDC__ */ {0xFF, 0x00, 0x6B0C, 0x0000}, {0xFF, 0x00, 0x6B0C, 0x0000},
- /* 0xDE__ */ {0xFF, 0x00, 0x6B0C, 0x0000}, {0xFF, 0x00, 0x6B0C, 0x0000},
- /* 0xE0__ */ {0xFF, 0x00, 0x7A72, 0x0000}, {0xFF, 0x00, 0x7A72, 0x0000},
- /* 0xE2__ */ {0xFF, 0x00, 0x7A72, 0x0000}, {0xFF, 0x00, 0x7A72, 0x0000},
- /* 0xE4__ */ {0xFF, 0x00, 0x7A72, 0x0000}, {0xFF, 0x00, 0x7A72, 0x0000},
- /* 0xE6__ */ {0xFF, 0x00, 0x7A72, 0x0000}, {0x66, 0xFF, 0x7A72, 0x0000},
- /* 0xE8__ */ {0x00, 0x64, 0x7A72, 0x82A9}, {0xFF, 0x00, 0x8B39, 0x83A9},
- /* 0xEA__ */ {0xFF, 0x00, 0x8B39, 0x84A9}, {0xFF, 0x00, 0x8B39, 0x85A9},
- /* 0xEC__ */ {0xFF, 0x00, 0x8B39, 0x86A9}, {0xFF, 0x00, 0x8B39, 0x87A9},
- /* 0xEE__ */ {0xFF, 0x00, 0x8B39, 0x88A9}, {0xFF, 0x00, 0x8B39, 0x89A9},
- /* 0xF0__ */ {0xFF, 0x00, 0x8B39, 0x8AA9}, {0xFF, 0x00, 0x8B39, 0x8BA9},
- /* 0xF2__ */ {0xFF, 0x00, 0x8B39, 0x8CA9}, {0xFF, 0x00, 0x8B39, 0x8DA9},
- /* 0xF4__ */ {0xFF, 0x00, 0x8B39, 0x8EA9}, {0xFF, 0x00, 0x8B39, 0x8FA9},
- /* 0xF6__ */ {0xFF, 0x00, 0x8B39, 0x90A9}, {0xFF, 0x00, 0x8B39, 0x91A9},
- /* 0xF8__ */ {0xFF, 0x00, 0x8B39, 0x92A9}, {0x2C, 0xFF, 0x8B39, 0x93A9},
- /* 0xFA__ */ {0x00, 0x29, 0x8B39, 0x9494}, {0xFF, 0x00, 0x8F3F, 0x9594},
- /* 0xFC__ */ {0xFF, 0x00, 0x8F3F, 0x9694}, {0xFF, 0x00, 0x8F3F, 0x9794},
- /* 0xFE__ */ {0x30, 0xFF, 0x8F3F, 0x9894}, {0x00, 0xE5, 0x8F3F, 0x98FC},
-};
-
-static quint16 const ucs_to_gb18030[28839] = {
- /* Contiguous area: U+0080 .. U+0451 */
- /* U+0080 */ 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 0x0006, 0x0007,
- /* U+0088 */ 0x0008, 0x0009, 0x0010, 0x0011, 0x0012, 0x0013, 0x0014, 0x0015,
- /* U+0090 */ 0x0016, 0x0017, 0x0018, 0x0019, 0x0020, 0x0021, 0x0022, 0x0023,
- /* U+0098 */ 0x0024, 0x0025, 0x0026, 0x0027, 0x0028, 0x0029, 0x0030, 0x0031,
- /* U+00A0 */ 0x0032, 0x0033, 0x0034, 0x0035, 0xA1E8, 0x0036, 0x0037, 0xA1EC,
- /* U+00A8 */ 0xA1A7, 0x0038, 0x0039, 0x0040, 0x0041, 0x0042, 0x0043, 0x0044,
- /* U+00B0 */ 0xA1E3, 0xA1C0, 0x0045, 0x0046, 0x0047, 0x0048, 0x0049, 0xA1A4,
- /* U+00B8 */ 0x0050, 0x0051, 0x0052, 0x0053, 0x0054, 0x0055, 0x0056, 0x0057,
- /* U+00C0 */ 0x0058, 0x0059, 0x0060, 0x0061, 0x0062, 0x0063, 0x0064, 0x0065,
- /* U+00C8 */ 0x0066, 0x0067, 0x0068, 0x0069, 0x0070, 0x0071, 0x0072, 0x0073,
- /* U+00D0 */ 0x0074, 0x0075, 0x0076, 0x0077, 0x0078, 0x0079, 0x0080, 0xA1C1,
- /* U+00D8 */ 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087, 0x0088,
- /* U+00E0 */ 0xA8A4, 0xA8A2, 0x0089, 0x0090, 0x0091, 0x0092, 0x0093, 0x0094,
- /* U+00E8 */ 0xA8A8, 0xA8A6, 0xA8BA, 0x0095, 0xA8AC, 0xA8AA, 0x0096, 0x0097,
- /* U+00F0 */ 0x0098, 0x0099, 0xA8B0, 0xA8AE, 0x00A0, 0x00A1, 0x00A2, 0xA1C2,
- /* U+00F8 */ 0x00A3, 0xA8B4, 0xA8B2, 0x00A4, 0xA8B9, 0x00A5, 0x00A6, 0x00A7,
- /* U+0100 */ 0x00A8, 0xA8A1, 0x00A9, 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4,
- /* U+0108 */ 0x00B5, 0x00B6, 0x00B7, 0x00B8, 0x00B9, 0x00C0, 0x00C1, 0x00C2,
- /* U+0110 */ 0x00C3, 0x00C4, 0x00C5, 0xA8A5, 0x00C6, 0x00C7, 0x00C8, 0x00C9,
- /* U+0118 */ 0x00D0, 0x00D1, 0x00D2, 0xA8A7, 0x00D3, 0x00D4, 0x00D5, 0x00D6,
- /* U+0120 */ 0x00D7, 0x00D8, 0x00D9, 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4,
- /* U+0128 */ 0x00E5, 0x00E6, 0x00E7, 0xA8A9, 0x00E8, 0x00E9, 0x00F0, 0x00F1,
- /* U+0130 */ 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7, 0x00F8, 0x00F9,
- /* U+0138 */ 0x0100, 0x0101, 0x0102, 0x0103, 0x0104, 0x0105, 0x0106, 0x0107,
- /* U+0140 */ 0x0108, 0x0109, 0x0110, 0x0111, 0xA8BD, 0x0112, 0x0113, 0x0114,
- /* U+0148 */ 0xA8BE, 0x0115, 0x0116, 0x0117, 0x0118, 0xA8AD, 0x0119, 0x0120,
- /* U+0150 */ 0x0121, 0x0122, 0x0123, 0x0124, 0x0125, 0x0126, 0x0127, 0x0128,
- /* U+0158 */ 0x0129, 0x0130, 0x0131, 0x0132, 0x0133, 0x0134, 0x0135, 0x0136,
- /* U+0160 */ 0x0137, 0x0138, 0x0139, 0x0140, 0x0141, 0x0142, 0x0143, 0x0144,
- /* U+0168 */ 0x0145, 0x0146, 0x0147, 0xA8B1, 0x0148, 0x0149, 0x0150, 0x0151,
- /* U+0170 */ 0x0152, 0x0153, 0x0154, 0x0155, 0x0156, 0x0157, 0x0158, 0x0159,
- /* U+0178 */ 0x0160, 0x0161, 0x0162, 0x0163, 0x0164, 0x0165, 0x0166, 0x0167,
- /* U+0180 */ 0x0168, 0x0169, 0x0170, 0x0171, 0x0172, 0x0173, 0x0174, 0x0175,
- /* U+0188 */ 0x0176, 0x0177, 0x0178, 0x0179, 0x0180, 0x0181, 0x0182, 0x0183,
- /* U+0190 */ 0x0184, 0x0185, 0x0186, 0x0187, 0x0188, 0x0189, 0x0190, 0x0191,
- /* U+0198 */ 0x0192, 0x0193, 0x0194, 0x0195, 0x0196, 0x0197, 0x0198, 0x0199,
- /* U+01A0 */ 0x01A0, 0x01A1, 0x01A2, 0x01A3, 0x01A4, 0x01A5, 0x01A6, 0x01A7,
- /* U+01A8 */ 0x01A8, 0x01A9, 0x01B0, 0x01B1, 0x01B2, 0x01B3, 0x01B4, 0x01B5,
- /* U+01B0 */ 0x01B6, 0x01B7, 0x01B8, 0x01B9, 0x01C0, 0x01C1, 0x01C2, 0x01C3,
- /* U+01B8 */ 0x01C4, 0x01C5, 0x01C6, 0x01C7, 0x01C8, 0x01C9, 0x01D0, 0x01D1,
- /* U+01C0 */ 0x01D2, 0x01D3, 0x01D4, 0x01D5, 0x01D6, 0x01D7, 0x01D8, 0x01D9,
- /* U+01C8 */ 0x01E0, 0x01E1, 0x01E2, 0x01E3, 0x01E4, 0x01E5, 0xA8A3, 0x01E6,
- /* U+01D0 */ 0xA8AB, 0x01E7, 0xA8AF, 0x01E8, 0xA8B3, 0x01E9, 0xA8B5, 0x01F0,
- /* U+01D8 */ 0xA8B6, 0x01F1, 0xA8B7, 0x01F2, 0xA8B8, 0x01F3, 0x01F4, 0x01F5,
- /* U+01E0 */ 0x01F6, 0x01F7, 0x01F8, 0x01F9, 0x0200, 0x0201, 0x0202, 0x0203,
- /* U+01E8 */ 0x0204, 0x0205, 0x0206, 0x0207, 0x0208, 0x0209, 0x0210, 0x0211,
- /* U+01F0 */ 0x0212, 0x0213, 0x0214, 0x0215, 0x0216, 0x0217, 0x0218, 0x0219,
- /* U+01F8 */ 0x0220, 0xA8BF, 0x0221, 0x0222, 0x0223, 0x0224, 0x0225, 0x0226,
- /* U+0200 */ 0x0227, 0x0228, 0x0229, 0x0230, 0x0231, 0x0232, 0x0233, 0x0234,
- /* U+0208 */ 0x0235, 0x0236, 0x0237, 0x0238, 0x0239, 0x0240, 0x0241, 0x0242,
- /* U+0210 */ 0x0243, 0x0244, 0x0245, 0x0246, 0x0247, 0x0248, 0x0249, 0x0250,
- /* U+0218 */ 0x0251, 0x0252, 0x0253, 0x0254, 0x0255, 0x0256, 0x0257, 0x0258,
- /* U+0220 */ 0x0259, 0x0260, 0x0261, 0x0262, 0x0263, 0x0264, 0x0265, 0x0266,
- /* U+0228 */ 0x0267, 0x0268, 0x0269, 0x0270, 0x0271, 0x0272, 0x0273, 0x0274,
- /* U+0230 */ 0x0275, 0x0276, 0x0277, 0x0278, 0x0279, 0x0280, 0x0281, 0x0282,
- /* U+0238 */ 0x0283, 0x0284, 0x0285, 0x0286, 0x0287, 0x0288, 0x0289, 0x0290,
- /* U+0240 */ 0x0291, 0x0292, 0x0293, 0x0294, 0x0295, 0x0296, 0x0297, 0x0298,
- /* U+0248 */ 0x0299, 0x02A0, 0x02A1, 0x02A2, 0x02A3, 0x02A4, 0x02A5, 0x02A6,
- /* U+0250 */ 0x02A7, 0xA8BB, 0x02A8, 0x02A9, 0x02B0, 0x02B1, 0x02B2, 0x02B3,
- /* U+0258 */ 0x02B4, 0x02B5, 0x02B6, 0x02B7, 0x02B8, 0x02B9, 0x02C0, 0x02C1,
- /* U+0260 */ 0x02C2, 0xA8C0, 0x02C3, 0x02C4, 0x02C5, 0x02C6, 0x02C7, 0x02C8,
- /* U+0268 */ 0x02C9, 0x02D0, 0x02D1, 0x02D2, 0x02D3, 0x02D4, 0x02D5, 0x02D6,
- /* U+0270 */ 0x02D7, 0x02D8, 0x02D9, 0x02E0, 0x02E1, 0x02E2, 0x02E3, 0x02E4,
- /* U+0278 */ 0x02E5, 0x02E6, 0x02E7, 0x02E8, 0x02E9, 0x02F0, 0x02F1, 0x02F2,
- /* U+0280 */ 0x02F3, 0x02F4, 0x02F5, 0x02F6, 0x02F7, 0x02F8, 0x02F9, 0x0300,
- /* U+0288 */ 0x0301, 0x0302, 0x0303, 0x0304, 0x0305, 0x0306, 0x0307, 0x0308,
- /* U+0290 */ 0x0309, 0x0310, 0x0311, 0x0312, 0x0313, 0x0314, 0x0315, 0x0316,
- /* U+0298 */ 0x0317, 0x0318, 0x0319, 0x0320, 0x0321, 0x0322, 0x0323, 0x0324,
- /* U+02A0 */ 0x0325, 0x0326, 0x0327, 0x0328, 0x0329, 0x0330, 0x0331, 0x0332,
- /* U+02A8 */ 0x0333, 0x0334, 0x0335, 0x0336, 0x0337, 0x0338, 0x0339, 0x0340,
- /* U+02B0 */ 0x0341, 0x0342, 0x0343, 0x0344, 0x0345, 0x0346, 0x0347, 0x0348,
- /* U+02B8 */ 0x0349, 0x0350, 0x0351, 0x0352, 0x0353, 0x0354, 0x0355, 0x0356,
- /* U+02C0 */ 0x0357, 0x0358, 0x0359, 0x0360, 0x0361, 0x0362, 0x0363, 0xA1A6,
- /* U+02C8 */ 0x0364, 0xA1A5, 0xA840, 0xA841, 0x0365, 0x0366, 0x0367, 0x0368,
- /* U+02D0 */ 0x0369, 0x0370, 0x0371, 0x0372, 0x0373, 0x0374, 0x0375, 0x0376,
- /* U+02D8 */ 0x0377, 0xA842, 0x0378, 0x0379, 0x0380, 0x0381, 0x0382, 0x0383,
- /* U+02E0 */ 0x0384, 0x0385, 0x0386, 0x0387, 0x0388, 0x0389, 0x0390, 0x0391,
- /* U+02E8 */ 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398, 0x0399,
- /* U+02F0 */ 0x03A0, 0x03A1, 0x03A2, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7,
- /* U+02F8 */ 0x03A8, 0x03A9, 0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5,
- /* U+0300 */ 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03C0, 0x03C1, 0x03C2, 0x03C3,
- /* U+0308 */ 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x03D0, 0x03D1,
- /* U+0310 */ 0x03D2, 0x03D3, 0x03D4, 0x03D5, 0x03D6, 0x03D7, 0x03D8, 0x03D9,
- /* U+0318 */ 0x03E0, 0x03E1, 0x03E2, 0x03E3, 0x03E4, 0x03E5, 0x03E6, 0x03E7,
- /* U+0320 */ 0x03E8, 0x03E9, 0x03F0, 0x03F1, 0x03F2, 0x03F3, 0x03F4, 0x03F5,
- /* U+0328 */ 0x03F6, 0x03F7, 0x03F8, 0x03F9, 0x0400, 0x0401, 0x0402, 0x0403,
- /* U+0330 */ 0x0404, 0x0405, 0x0406, 0x0407, 0x0408, 0x0409, 0x0410, 0x0411,
- /* U+0338 */ 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417, 0x0418, 0x0419,
- /* U+0340 */ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
- /* U+0348 */ 0x0428, 0x0429, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435,
- /* U+0350 */ 0x0436, 0x0437, 0x0438, 0x0439, 0x0440, 0x0441, 0x0442, 0x0443,
- /* U+0358 */ 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x0450, 0x0451,
- /* U+0360 */ 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457, 0x0458, 0x0459,
- /* U+0368 */ 0x0460, 0x0461, 0x0462, 0x0463, 0x0464, 0x0465, 0x0466, 0x0467,
- /* U+0370 */ 0x0468, 0x0469, 0x0470, 0x0471, 0x0472, 0x0473, 0x0474, 0x0475,
- /* U+0378 */ 0x0476, 0x0477, 0x0478, 0x0479, 0x0480, 0x0481, 0x0482, 0x0483,
- /* U+0380 */ 0x0484, 0x0485, 0x0486, 0x0487, 0x0488, 0x0489, 0x0490, 0x0491,
- /* U+0388 */ 0x0492, 0x0493, 0x0494, 0x0495, 0x0496, 0x0497, 0x0498, 0x0499,
- /* U+0390 */ 0x04A0, 0xA6A1, 0xA6A2, 0xA6A3, 0xA6A4, 0xA6A5, 0xA6A6, 0xA6A7,
- /* U+0398 */ 0xA6A8, 0xA6A9, 0xA6AA, 0xA6AB, 0xA6AC, 0xA6AD, 0xA6AE, 0xA6AF,
- /* U+03A0 */ 0xA6B0, 0xA6B1, 0x04A1, 0xA6B2, 0xA6B3, 0xA6B4, 0xA6B5, 0xA6B6,
- /* U+03A8 */ 0xA6B7, 0xA6B8, 0x04A2, 0x04A3, 0x04A4, 0x04A5, 0x04A6, 0x04A7,
- /* U+03B0 */ 0x04A8, 0xA6C1, 0xA6C2, 0xA6C3, 0xA6C4, 0xA6C5, 0xA6C6, 0xA6C7,
- /* U+03B8 */ 0xA6C8, 0xA6C9, 0xA6CA, 0xA6CB, 0xA6CC, 0xA6CD, 0xA6CE, 0xA6CF,
- /* U+03C0 */ 0xA6D0, 0xA6D1, 0x04A9, 0xA6D2, 0xA6D3, 0xA6D4, 0xA6D5, 0xA6D6,
- /* U+03C8 */ 0xA6D7, 0xA6D8, 0x04B0, 0x04B1, 0x04B2, 0x04B3, 0x04B4, 0x04B5,
- /* U+03D0 */ 0x04B6, 0x04B7, 0x04B8, 0x04B9, 0x04C0, 0x04C1, 0x04C2, 0x04C3,
- /* U+03D8 */ 0x04C4, 0x04C5, 0x04C6, 0x04C7, 0x04C8, 0x04C9, 0x04D0, 0x04D1,
- /* U+03E0 */ 0x04D2, 0x04D3, 0x04D4, 0x04D5, 0x04D6, 0x04D7, 0x04D8, 0x04D9,
- /* U+03E8 */ 0x04E0, 0x04E1, 0x04E2, 0x04E3, 0x04E4, 0x04E5, 0x04E6, 0x04E7,
- /* U+03F0 */ 0x04E8, 0x04E9, 0x04F0, 0x04F1, 0x04F2, 0x04F3, 0x04F4, 0x04F5,
- /* U+03F8 */ 0x04F6, 0x04F7, 0x04F8, 0x04F9, 0x0500, 0x0501, 0x0502, 0x0503,
- /* U+0400 */ 0x0504, 0xA7A7, 0x0505, 0x0506, 0x0507, 0x0508, 0x0509, 0x0510,
- /* U+0408 */ 0x0511, 0x0512, 0x0513, 0x0514, 0x0515, 0x0516, 0x0517, 0x0518,
- /* U+0410 */ 0xA7A1, 0xA7A2, 0xA7A3, 0xA7A4, 0xA7A5, 0xA7A6, 0xA7A8, 0xA7A9,
- /* U+0418 */ 0xA7AA, 0xA7AB, 0xA7AC, 0xA7AD, 0xA7AE, 0xA7AF, 0xA7B0, 0xA7B1,
- /* U+0420 */ 0xA7B2, 0xA7B3, 0xA7B4, 0xA7B5, 0xA7B6, 0xA7B7, 0xA7B8, 0xA7B9,
- /* U+0428 */ 0xA7BA, 0xA7BB, 0xA7BC, 0xA7BD, 0xA7BE, 0xA7BF, 0xA7C0, 0xA7C1,
- /* U+0430 */ 0xA7D1, 0xA7D2, 0xA7D3, 0xA7D4, 0xA7D5, 0xA7D6, 0xA7D8, 0xA7D9,
- /* U+0438 */ 0xA7DA, 0xA7DB, 0xA7DC, 0xA7DD, 0xA7DE, 0xA7DF, 0xA7E0, 0xA7E1,
- /* U+0440 */ 0xA7E2, 0xA7E3, 0xA7E4, 0xA7E5, 0xA7E6, 0xA7E7, 0xA7E8, 0xA7E9,
- /* U+0448 */ 0xA7EA, 0xA7EB, 0xA7EC, 0xA7ED, 0xA7EE, 0xA7EF, 0xA7F0, 0xA7F1,
- /* U+0450 */ 0x0519, 0xA7D7,
- /* Contiguous area: U+2010 .. U+2642 */
- /* U+2010 */ 0xA95C, 0x0A42, 0x0A43, 0xA843, 0xA1AA, 0xA844, 0xA1AC, 0x0A44,
- /* U+2018 */ 0xA1AE, 0xA1AF, 0x0A45, 0x0A46, 0xA1B0, 0xA1B1, 0x0A47, 0x0A48,
- /* U+2020 */ 0x0A49, 0x0A50, 0x0A51, 0x0A52, 0x0A53, 0xA845, 0xA1AD, 0x0A54,
- /* U+2028 */ 0x0A55, 0x0A56, 0x0A57, 0x0A58, 0x0A59, 0x0A60, 0x0A61, 0x0A62,
- /* U+2030 */ 0xA1EB, 0x0A63, 0xA1E4, 0xA1E5, 0x0A64, 0xA846, 0x0A65, 0x0A66,
- /* U+2038 */ 0x0A67, 0x0A68, 0x0A69, 0xA1F9, 0x0A70, 0x0A71, 0x0A72, 0x0A73,
- /* U+2040 */ 0x0A74, 0x0A75, 0x0A76, 0x0A77, 0x0A78, 0x0A79, 0x0A80, 0x0A81,
- /* U+2048 */ 0x0A82, 0x0A83, 0x0A84, 0x0A85, 0x0A86, 0x0A87, 0x0A88, 0x0A89,
- /* U+2050 */ 0x0A90, 0x0A91, 0x0A92, 0x0A93, 0x0A94, 0x0A95, 0x0A96, 0x0A97,
- /* U+2058 */ 0x0A98, 0x0A99, 0x0AA0, 0x0AA1, 0x0AA2, 0x0AA3, 0x0AA4, 0x0AA5,
- /* U+2060 */ 0x0AA6, 0x0AA7, 0x0AA8, 0x0AA9, 0x0AB0, 0x0AB1, 0x0AB2, 0x0AB3,
- /* U+2068 */ 0x0AB4, 0x0AB5, 0x0AB6, 0x0AB7, 0x0AB8, 0x0AB9, 0x0AC0, 0x0AC1,
- /* U+2070 */ 0x0AC2, 0x0AC3, 0x0AC4, 0x0AC5, 0x0AC6, 0x0AC7, 0x0AC8, 0x0AC9,
- /* U+2078 */ 0x0AD0, 0x0AD1, 0x0AD2, 0x0AD3, 0x0AD4, 0x0AD5, 0x0AD6, 0x0AD7,
- /* U+2080 */ 0x0AD8, 0x0AD9, 0x0AE0, 0x0AE1, 0x0AE2, 0x0AE3, 0x0AE4, 0x0AE5,
- /* U+2088 */ 0x0AE6, 0x0AE7, 0x0AE8, 0x0AE9, 0x0AF0, 0x0AF1, 0x0AF2, 0x0AF3,
- /* U+2090 */ 0x0AF4, 0x0AF5, 0x0AF6, 0x0AF7, 0x0AF8, 0x0AF9, 0x0B00, 0x0B01,
- /* U+2098 */ 0x0B02, 0x0B03, 0x0B04, 0x0B05, 0x0B06, 0x0B07, 0x0B08, 0x0B09,
- /* U+20A0 */ 0x0B10, 0x0B11, 0x0B12, 0x0B13, 0x0B14, 0x0B15, 0x0B16, 0x0B17,
- /* U+20A8 */ 0x0B18, 0x0B19, 0x0B20, 0x0B21, 0xA2E3, 0x0B22, 0x0B23, 0x0B24,
- /* U+20B0 */ 0x0B25, 0x0B26, 0x0B27, 0x0B28, 0x0B29, 0x0B30, 0x0B31, 0x0B32,
- /* U+20B8 */ 0x0B33, 0x0B34, 0x0B35, 0x0B36, 0x0B37, 0x0B38, 0x0B39, 0x0B40,
- /* U+20C0 */ 0x0B41, 0x0B42, 0x0B43, 0x0B44, 0x0B45, 0x0B46, 0x0B47, 0x0B48,
- /* U+20C8 */ 0x0B49, 0x0B50, 0x0B51, 0x0B52, 0x0B53, 0x0B54, 0x0B55, 0x0B56,
- /* U+20D0 */ 0x0B57, 0x0B58, 0x0B59, 0x0B60, 0x0B61, 0x0B62, 0x0B63, 0x0B64,
- /* U+20D8 */ 0x0B65, 0x0B66, 0x0B67, 0x0B68, 0x0B69, 0x0B70, 0x0B71, 0x0B72,
- /* U+20E0 */ 0x0B73, 0x0B74, 0x0B75, 0x0B76, 0x0B77, 0x0B78, 0x0B79, 0x0B80,
- /* U+20E8 */ 0x0B81, 0x0B82, 0x0B83, 0x0B84, 0x0B85, 0x0B86, 0x0B87, 0x0B88,
- /* U+20F0 */ 0x0B89, 0x0B90, 0x0B91, 0x0B92, 0x0B93, 0x0B94, 0x0B95, 0x0B96,
- /* U+20F8 */ 0x0B97, 0x0B98, 0x0B99, 0x0BA0, 0x0BA1, 0x0BA2, 0x0BA3, 0x0BA4,
- /* U+2100 */ 0x0BA5, 0x0BA6, 0x0BA7, 0xA1E6, 0x0BA8, 0xA847, 0x0BA9, 0x0BB0,
- /* U+2108 */ 0x0BB1, 0xA848, 0x0BB2, 0x0BB3, 0x0BB4, 0x0BB5, 0x0BB6, 0x0BB7,
- /* U+2110 */ 0x0BB8, 0x0BB9, 0x0BC0, 0x0BC1, 0x0BC2, 0x0BC3, 0xA1ED, 0x0BC4,
- /* U+2118 */ 0x0BC5, 0x0BC6, 0x0BC7, 0x0BC8, 0x0BC9, 0x0BD0, 0x0BD1, 0x0BD2,
- /* U+2120 */ 0x0BD3, 0xA959, 0x0BD4, 0x0BD5, 0x0BD6, 0x0BD7, 0x0BD8, 0x0BD9,
- /* U+2128 */ 0x0BE0, 0x0BE1, 0x0BE2, 0x0BE3, 0x0BE4, 0x0BE5, 0x0BE6, 0x0BE7,
- /* U+2130 */ 0x0BE8, 0x0BE9, 0x0BF0, 0x0BF1, 0x0BF2, 0x0BF3, 0x0BF4, 0x0BF5,
- /* U+2138 */ 0x0BF6, 0x0BF7, 0x0BF8, 0x0BF9, 0x0C00, 0x0C01, 0x0C02, 0x0C03,
- /* U+2140 */ 0x0C04, 0x0C05, 0x0C06, 0x0C07, 0x0C08, 0x0C09, 0x0C10, 0x0C11,
- /* U+2148 */ 0x0C12, 0x0C13, 0x0C14, 0x0C15, 0x0C16, 0x0C17, 0x0C18, 0x0C19,
- /* U+2150 */ 0x0C20, 0x0C21, 0x0C22, 0x0C23, 0x0C24, 0x0C25, 0x0C26, 0x0C27,
- /* U+2158 */ 0x0C28, 0x0C29, 0x0C30, 0x0C31, 0x0C32, 0x0C33, 0x0C34, 0x0C35,
- /* U+2160 */ 0xA2F1, 0xA2F2, 0xA2F3, 0xA2F4, 0xA2F5, 0xA2F6, 0xA2F7, 0xA2F8,
- /* U+2168 */ 0xA2F9, 0xA2FA, 0xA2FB, 0xA2FC, 0x0C36, 0x0C37, 0x0C38, 0x0C39,
- /* U+2170 */ 0xA2A1, 0xA2A2, 0xA2A3, 0xA2A4, 0xA2A5, 0xA2A6, 0xA2A7, 0xA2A8,
- /* U+2178 */ 0xA2A9, 0xA2AA, 0x0C40, 0x0C41, 0x0C42, 0x0C43, 0x0C44, 0x0C45,
- /* U+2180 */ 0x0C46, 0x0C47, 0x0C48, 0x0C49, 0x0C50, 0x0C51, 0x0C52, 0x0C53,
- /* U+2188 */ 0x0C54, 0x0C55, 0x0C56, 0x0C57, 0x0C58, 0x0C59, 0x0C60, 0x0C61,
- /* U+2190 */ 0xA1FB, 0xA1FC, 0xA1FA, 0xA1FD, 0x0C62, 0x0C63, 0xA849, 0xA84A,
- /* U+2198 */ 0xA84B, 0xA84C, 0x0C64, 0x0C65, 0x0C66, 0x0C67, 0x0C68, 0x0C69,
- /* U+21A0 */ 0x0C70, 0x0C71, 0x0C72, 0x0C73, 0x0C74, 0x0C75, 0x0C76, 0x0C77,
- /* U+21A8 */ 0x0C78, 0x0C79, 0x0C80, 0x0C81, 0x0C82, 0x0C83, 0x0C84, 0x0C85,
- /* U+21B0 */ 0x0C86, 0x0C87, 0x0C88, 0x0C89, 0x0C90, 0x0C91, 0x0C92, 0x0C93,
- /* U+21B8 */ 0x0C94, 0x0C95, 0x0C96, 0x0C97, 0x0C98, 0x0C99, 0x0CA0, 0x0CA1,
- /* U+21C0 */ 0x0CA2, 0x0CA3, 0x0CA4, 0x0CA5, 0x0CA6, 0x0CA7, 0x0CA8, 0x0CA9,
- /* U+21C8 */ 0x0CB0, 0x0CB1, 0x0CB2, 0x0CB3, 0x0CB4, 0x0CB5, 0x0CB6, 0x0CB7,
- /* U+21D0 */ 0x0CB8, 0x0CB9, 0x0CC0, 0x0CC1, 0x0CC2, 0x0CC3, 0x0CC4, 0x0CC5,
- /* U+21D8 */ 0x0CC6, 0x0CC7, 0x0CC8, 0x0CC9, 0x0CD0, 0x0CD1, 0x0CD2, 0x0CD3,
- /* U+21E0 */ 0x0CD4, 0x0CD5, 0x0CD6, 0x0CD7, 0x0CD8, 0x0CD9, 0x0CE0, 0x0CE1,
- /* U+21E8 */ 0x0CE2, 0x0CE3, 0x0CE4, 0x0CE5, 0x0CE6, 0x0CE7, 0x0CE8, 0x0CE9,
- /* U+21F0 */ 0x0CF0, 0x0CF1, 0x0CF2, 0x0CF3, 0x0CF4, 0x0CF5, 0x0CF6, 0x0CF7,
- /* U+21F8 */ 0x0CF8, 0x0CF9, 0x0D00, 0x0D01, 0x0D02, 0x0D03, 0x0D04, 0x0D05,
- /* U+2200 */ 0x0D06, 0x0D07, 0x0D08, 0x0D09, 0x0D10, 0x0D11, 0x0D12, 0x0D13,
- /* U+2208 */ 0xA1CA, 0x0D14, 0x0D15, 0x0D16, 0x0D17, 0x0D18, 0x0D19, 0xA1C7,
- /* U+2210 */ 0x0D20, 0xA1C6, 0x0D21, 0x0D22, 0x0D23, 0xA84D, 0x0D24, 0x0D25,
- /* U+2218 */ 0x0D26, 0x0D27, 0xA1CC, 0x0D28, 0x0D29, 0xA1D8, 0xA1DE, 0xA84E,
- /* U+2220 */ 0xA1CF, 0x0D30, 0x0D31, 0xA84F, 0x0D32, 0xA1CE, 0x0D33, 0xA1C4,
- /* U+2228 */ 0xA1C5, 0xA1C9, 0xA1C8, 0xA1D2, 0x0D34, 0x0D35, 0xA1D3, 0x0D36,
- /* U+2230 */ 0x0D37, 0x0D38, 0x0D39, 0x0D40, 0xA1E0, 0xA1DF, 0xA1C3, 0xA1CB,
- /* U+2238 */ 0x0D41, 0x0D42, 0x0D43, 0x0D44, 0x0D45, 0xA1D7, 0x0D46, 0x0D47,
- /* U+2240 */ 0x0D48, 0x0D49, 0x0D50, 0x0D51, 0x0D52, 0x0D53, 0x0D54, 0x0D55,
- /* U+2248 */ 0xA1D6, 0x0D56, 0x0D57, 0x0D58, 0xA1D5, 0x0D59, 0x0D60, 0x0D61,
- /* U+2250 */ 0x0D62, 0x0D63, 0xA850, 0x0D64, 0x0D65, 0x0D66, 0x0D67, 0x0D68,
- /* U+2258 */ 0x0D69, 0x0D70, 0x0D71, 0x0D72, 0x0D73, 0x0D74, 0x0D75, 0x0D76,
- /* U+2260 */ 0xA1D9, 0xA1D4, 0x0D77, 0x0D78, 0xA1DC, 0xA1DD, 0xA851, 0xA852,
- /* U+2268 */ 0x0D79, 0x0D80, 0x0D81, 0x0D82, 0x0D83, 0x0D84, 0xA1DA, 0xA1DB,
- /* U+2270 */ 0x0D85, 0x0D86, 0x0D87, 0x0D88, 0x0D89, 0x0D90, 0x0D91, 0x0D92,
- /* U+2278 */ 0x0D93, 0x0D94, 0x0D95, 0x0D96, 0x0D97, 0x0D98, 0x0D99, 0x0DA0,
- /* U+2280 */ 0x0DA1, 0x0DA2, 0x0DA3, 0x0DA4, 0x0DA5, 0x0DA6, 0x0DA7, 0x0DA8,
- /* U+2288 */ 0x0DA9, 0x0DB0, 0x0DB1, 0x0DB2, 0x0DB3, 0x0DB4, 0x0DB5, 0x0DB6,
- /* U+2290 */ 0x0DB7, 0x0DB8, 0x0DB9, 0x0DC0, 0x0DC1, 0xA892, 0x0DC2, 0x0DC3,
- /* U+2298 */ 0x0DC4, 0xA1D1, 0x0DC5, 0x0DC6, 0x0DC7, 0x0DC8, 0x0DC9, 0x0DD0,
- /* U+22A0 */ 0x0DD1, 0x0DD2, 0x0DD3, 0x0DD4, 0x0DD5, 0xA1CD, 0x0DD6, 0x0DD7,
- /* U+22A8 */ 0x0DD8, 0x0DD9, 0x0DE0, 0x0DE1, 0x0DE2, 0x0DE3, 0x0DE4, 0x0DE5,
- /* U+22B0 */ 0x0DE6, 0x0DE7, 0x0DE8, 0x0DE9, 0x0DF0, 0x0DF1, 0x0DF2, 0x0DF3,
- /* U+22B8 */ 0x0DF4, 0x0DF5, 0x0DF6, 0x0DF7, 0x0DF8, 0x0DF9, 0x0E00, 0xA853,
- /* U+22C0 */ 0x0E01, 0x0E02, 0x0E03, 0x0E04, 0x0E05, 0x0E06, 0x0E07, 0x0E08,
- /* U+22C8 */ 0x0E09, 0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14, 0x0E15, 0x0E16,
- /* U+22D0 */ 0x0E17, 0x0E18, 0x0E19, 0x0E20, 0x0E21, 0x0E22, 0x0E23, 0x0E24,
- /* U+22D8 */ 0x0E25, 0x0E26, 0x0E27, 0x0E28, 0x0E29, 0x0E30, 0x0E31, 0x0E32,
- /* U+22E0 */ 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37, 0x0E38, 0x0E39, 0x0E40,
- /* U+22E8 */ 0x0E41, 0x0E42, 0x0E43, 0x0E44, 0x0E45, 0x0E46, 0x0E47, 0x0E48,
- /* U+22F0 */ 0x0E49, 0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, 0x0E55, 0x0E56,
- /* U+22F8 */ 0x0E57, 0x0E58, 0x0E59, 0x0E60, 0x0E61, 0x0E62, 0x0E63, 0x0E64,
- /* U+2300 */ 0x0E65, 0x0E66, 0x0E67, 0x0E68, 0x0E69, 0x0E70, 0x0E71, 0x0E72,
- /* U+2308 */ 0x0E73, 0x0E74, 0x0E75, 0x0E76, 0x0E77, 0x0E78, 0x0E79, 0x0E80,
- /* U+2310 */ 0x0E81, 0x0E82, 0xA1D0, 0x0E83, 0x0E84, 0x0E85, 0x0E86, 0x0E87,
- /* U+2318 */ 0x0E88, 0x0E89, 0x0E90, 0x0E91, 0x0E92, 0x0E93, 0x0E94, 0x0E95,
- /* U+2320 */ 0x0E96, 0x0E97, 0x0E98, 0x0E99, 0x0EA0, 0x0EA1, 0x0EA2, 0x0EA3,
- /* U+2328 */ 0x0EA4, 0x0EA5, 0x0EA6, 0x0EA7, 0x0EA8, 0x0EA9, 0x0EB0, 0x0EB1,
- /* U+2330 */ 0x0EB2, 0x0EB3, 0x0EB4, 0x0EB5, 0x0EB6, 0x0EB7, 0x0EB8, 0x0EB9,
- /* U+2338 */ 0x0EC0, 0x0EC1, 0x0EC2, 0x0EC3, 0x0EC4, 0x0EC5, 0x0EC6, 0x0EC7,
- /* U+2340 */ 0x0EC8, 0x0EC9, 0x0ED0, 0x0ED1, 0x0ED2, 0x0ED3, 0x0ED4, 0x0ED5,
- /* U+2348 */ 0x0ED6, 0x0ED7, 0x0ED8, 0x0ED9, 0x0EE0, 0x0EE1, 0x0EE2, 0x0EE3,
- /* U+2350 */ 0x0EE4, 0x0EE5, 0x0EE6, 0x0EE7, 0x0EE8, 0x0EE9, 0x0EF0, 0x0EF1,
- /* U+2358 */ 0x0EF2, 0x0EF3, 0x0EF4, 0x0EF5, 0x0EF6, 0x0EF7, 0x0EF8, 0x0EF9,
- /* U+2360 */ 0x0F00, 0x0F01, 0x0F02, 0x0F03, 0x0F04, 0x0F05, 0x0F06, 0x0F07,
- /* U+2368 */ 0x0F08, 0x0F09, 0x0F10, 0x0F11, 0x0F12, 0x0F13, 0x0F14, 0x0F15,
- /* U+2370 */ 0x0F16, 0x0F17, 0x0F18, 0x0F19, 0x0F20, 0x0F21, 0x0F22, 0x0F23,
- /* U+2378 */ 0x0F24, 0x0F25, 0x0F26, 0x0F27, 0x0F28, 0x0F29, 0x0F30, 0x0F31,
- /* U+2380 */ 0x0F32, 0x0F33, 0x0F34, 0x0F35, 0x0F36, 0x0F37, 0x0F38, 0x0F39,
- /* U+2388 */ 0x0F40, 0x0F41, 0x0F42, 0x0F43, 0x0F44, 0x0F45, 0x0F46, 0x0F47,
- /* U+2390 */ 0x0F48, 0x0F49, 0x0F50, 0x0F51, 0x0F52, 0x0F53, 0x0F54, 0x0F55,
- /* U+2398 */ 0x0F56, 0x0F57, 0x0F58, 0x0F59, 0x0F60, 0x0F61, 0x0F62, 0x0F63,
- /* U+23A0 */ 0x0F64, 0x0F65, 0x0F66, 0x0F67, 0x0F68, 0x0F69, 0x0F70, 0x0F71,
- /* U+23A8 */ 0x0F72, 0x0F73, 0x0F74, 0x0F75, 0x0F76, 0x0F77, 0x0F78, 0x0F79,
- /* U+23B0 */ 0x0F80, 0x0F81, 0x0F82, 0x0F83, 0x0F84, 0x0F85, 0x0F86, 0x0F87,
- /* U+23B8 */ 0x0F88, 0x0F89, 0x0F90, 0x0F91, 0x0F92, 0x0F93, 0x0F94, 0x0F95,
- /* U+23C0 */ 0x0F96, 0x0F97, 0x0F98, 0x0F99, 0x0FA0, 0x0FA1, 0x0FA2, 0x0FA3,
- /* U+23C8 */ 0x0FA4, 0x0FA5, 0x0FA6, 0x0FA7, 0x0FA8, 0x0FA9, 0x0FB0, 0x0FB1,
- /* U+23D0 */ 0x0FB2, 0x0FB3, 0x0FB4, 0x0FB5, 0x0FB6, 0x0FB7, 0x0FB8, 0x0FB9,
- /* U+23D8 */ 0x0FC0, 0x0FC1, 0x0FC2, 0x0FC3, 0x0FC4, 0x0FC5, 0x0FC6, 0x0FC7,
- /* U+23E0 */ 0x0FC8, 0x0FC9, 0x0FD0, 0x0FD1, 0x0FD2, 0x0FD3, 0x0FD4, 0x0FD5,
- /* U+23E8 */ 0x0FD6, 0x0FD7, 0x0FD8, 0x0FD9, 0x1000, 0x1001, 0x1002, 0x1003,
- /* U+23F0 */ 0x1004, 0x1005, 0x1006, 0x1007, 0x1008, 0x1009, 0x1010, 0x1011,
- /* U+23F8 */ 0x1012, 0x1013, 0x1014, 0x1015, 0x1016, 0x1017, 0x1018, 0x1019,
- /* U+2400 */ 0x1020, 0x1021, 0x1022, 0x1023, 0x1024, 0x1025, 0x1026, 0x1027,
- /* U+2408 */ 0x1028, 0x1029, 0x1030, 0x1031, 0x1032, 0x1033, 0x1034, 0x1035,
- /* U+2410 */ 0x1036, 0x1037, 0x1038, 0x1039, 0x1040, 0x1041, 0x1042, 0x1043,
- /* U+2418 */ 0x1044, 0x1045, 0x1046, 0x1047, 0x1048, 0x1049, 0x1050, 0x1051,
- /* U+2420 */ 0x1052, 0x1053, 0x1054, 0x1055, 0x1056, 0x1057, 0x1058, 0x1059,
- /* U+2428 */ 0x1060, 0x1061, 0x1062, 0x1063, 0x1064, 0x1065, 0x1066, 0x1067,
- /* U+2430 */ 0x1068, 0x1069, 0x1070, 0x1071, 0x1072, 0x1073, 0x1074, 0x1075,
- /* U+2438 */ 0x1076, 0x1077, 0x1078, 0x1079, 0x1080, 0x1081, 0x1082, 0x1083,
- /* U+2440 */ 0x1084, 0x1085, 0x1086, 0x1087, 0x1088, 0x1089, 0x1090, 0x1091,
- /* U+2448 */ 0x1092, 0x1093, 0x1094, 0x1095, 0x1096, 0x1097, 0x1098, 0x1099,
- /* U+2450 */ 0x10A0, 0x10A1, 0x10A2, 0x10A3, 0x10A4, 0x10A5, 0x10A6, 0x10A7,
- /* U+2458 */ 0x10A8, 0x10A9, 0x10B0, 0x10B1, 0x10B2, 0x10B3, 0x10B4, 0x10B5,
- /* U+2460 */ 0xA2D9, 0xA2DA, 0xA2DB, 0xA2DC, 0xA2DD, 0xA2DE, 0xA2DF, 0xA2E0,
- /* U+2468 */ 0xA2E1, 0xA2E2, 0x10B6, 0x10B7, 0x10B8, 0x10B9, 0x10C0, 0x10C1,
- /* U+2470 */ 0x10C2, 0x10C3, 0x10C4, 0x10C5, 0xA2C5, 0xA2C6, 0xA2C7, 0xA2C8,
- /* U+2478 */ 0xA2C9, 0xA2CA, 0xA2CB, 0xA2CC, 0xA2CD, 0xA2CE, 0xA2CF, 0xA2D0,
- /* U+2480 */ 0xA2D1, 0xA2D2, 0xA2D3, 0xA2D4, 0xA2D5, 0xA2D6, 0xA2D7, 0xA2D8,
- /* U+2488 */ 0xA2B1, 0xA2B2, 0xA2B3, 0xA2B4, 0xA2B5, 0xA2B6, 0xA2B7, 0xA2B8,
- /* U+2490 */ 0xA2B9, 0xA2BA, 0xA2BB, 0xA2BC, 0xA2BD, 0xA2BE, 0xA2BF, 0xA2C0,
- /* U+2498 */ 0xA2C1, 0xA2C2, 0xA2C3, 0xA2C4, 0x10C6, 0x10C7, 0x10C8, 0x10C9,
- /* U+24A0 */ 0x10D0, 0x10D1, 0x10D2, 0x10D3, 0x10D4, 0x10D5, 0x10D6, 0x10D7,
- /* U+24A8 */ 0x10D8, 0x10D9, 0x10E0, 0x10E1, 0x10E2, 0x10E3, 0x10E4, 0x10E5,
- /* U+24B0 */ 0x10E6, 0x10E7, 0x10E8, 0x10E9, 0x10F0, 0x10F1, 0x10F2, 0x10F3,
- /* U+24B8 */ 0x10F4, 0x10F5, 0x10F6, 0x10F7, 0x10F8, 0x10F9, 0x1100, 0x1101,
- /* U+24C0 */ 0x1102, 0x1103, 0x1104, 0x1105, 0x1106, 0x1107, 0x1108, 0x1109,
- /* U+24C8 */ 0x1110, 0x1111, 0x1112, 0x1113, 0x1114, 0x1115, 0x1116, 0x1117,
- /* U+24D0 */ 0x1118, 0x1119, 0x1120, 0x1121, 0x1122, 0x1123, 0x1124, 0x1125,
- /* U+24D8 */ 0x1126, 0x1127, 0x1128, 0x1129, 0x1130, 0x1131, 0x1132, 0x1133,
- /* U+24E0 */ 0x1134, 0x1135, 0x1136, 0x1137, 0x1138, 0x1139, 0x1140, 0x1141,
- /* U+24E8 */ 0x1142, 0x1143, 0x1144, 0x1145, 0x1146, 0x1147, 0x1148, 0x1149,
- /* U+24F0 */ 0x1150, 0x1151, 0x1152, 0x1153, 0x1154, 0x1155, 0x1156, 0x1157,
- /* U+24F8 */ 0x1158, 0x1159, 0x1160, 0x1161, 0x1162, 0x1163, 0x1164, 0x1165,
- /* U+2500 */ 0xA9A4, 0xA9A5, 0xA9A6, 0xA9A7, 0xA9A8, 0xA9A9, 0xA9AA, 0xA9AB,
- /* U+2508 */ 0xA9AC, 0xA9AD, 0xA9AE, 0xA9AF, 0xA9B0, 0xA9B1, 0xA9B2, 0xA9B3,
- /* U+2510 */ 0xA9B4, 0xA9B5, 0xA9B6, 0xA9B7, 0xA9B8, 0xA9B9, 0xA9BA, 0xA9BB,
- /* U+2518 */ 0xA9BC, 0xA9BD, 0xA9BE, 0xA9BF, 0xA9C0, 0xA9C1, 0xA9C2, 0xA9C3,
- /* U+2520 */ 0xA9C4, 0xA9C5, 0xA9C6, 0xA9C7, 0xA9C8, 0xA9C9, 0xA9CA, 0xA9CB,
- /* U+2528 */ 0xA9CC, 0xA9CD, 0xA9CE, 0xA9CF, 0xA9D0, 0xA9D1, 0xA9D2, 0xA9D3,
- /* U+2530 */ 0xA9D4, 0xA9D5, 0xA9D6, 0xA9D7, 0xA9D8, 0xA9D9, 0xA9DA, 0xA9DB,
- /* U+2538 */ 0xA9DC, 0xA9DD, 0xA9DE, 0xA9DF, 0xA9E0, 0xA9E1, 0xA9E2, 0xA9E3,
- /* U+2540 */ 0xA9E4, 0xA9E5, 0xA9E6, 0xA9E7, 0xA9E8, 0xA9E9, 0xA9EA, 0xA9EB,
- /* U+2548 */ 0xA9EC, 0xA9ED, 0xA9EE, 0xA9EF, 0x1166, 0x1167, 0x1168, 0x1169,
- /* U+2550 */ 0xA854, 0xA855, 0xA856, 0xA857, 0xA858, 0xA859, 0xA85A, 0xA85B,
- /* U+2558 */ 0xA85C, 0xA85D, 0xA85E, 0xA85F, 0xA860, 0xA861, 0xA862, 0xA863,
- /* U+2560 */ 0xA864, 0xA865, 0xA866, 0xA867, 0xA868, 0xA869, 0xA86A, 0xA86B,
- /* U+2568 */ 0xA86C, 0xA86D, 0xA86E, 0xA86F, 0xA870, 0xA871, 0xA872, 0xA873,
- /* U+2570 */ 0xA874, 0xA875, 0xA876, 0xA877, 0x1170, 0x1171, 0x1172, 0x1173,
- /* U+2578 */ 0x1174, 0x1175, 0x1176, 0x1177, 0x1178, 0x1179, 0x1180, 0x1181,
- /* U+2580 */ 0x1182, 0xA878, 0xA879, 0xA87A, 0xA87B, 0xA87C, 0xA87D, 0xA87E,
- /* U+2588 */ 0xA880, 0xA881, 0xA882, 0xA883, 0xA884, 0xA885, 0xA886, 0xA887,
- /* U+2590 */ 0x1183, 0x1184, 0x1185, 0xA888, 0xA889, 0xA88A, 0x1186, 0x1187,
- /* U+2598 */ 0x1188, 0x1189, 0x1190, 0x1191, 0x1192, 0x1193, 0x1194, 0x1195,
- /* U+25A0 */ 0xA1F6, 0xA1F5, 0x1196, 0x1197, 0x1198, 0x1199, 0x11A0, 0x11A1,
- /* U+25A8 */ 0x11A2, 0x11A3, 0x11A4, 0x11A5, 0x11A6, 0x11A7, 0x11A8, 0x11A9,
- /* U+25B0 */ 0x11B0, 0x11B1, 0xA1F8, 0xA1F7, 0x11B2, 0x11B3, 0x11B4, 0x11B5,
- /* U+25B8 */ 0x11B6, 0x11B7, 0x11B8, 0x11B9, 0xA88B, 0xA88C, 0x11C0, 0x11C1,
- /* U+25C0 */ 0x11C2, 0x11C3, 0x11C4, 0x11C5, 0x11C6, 0x11C7, 0xA1F4, 0xA1F3,
- /* U+25C8 */ 0x11C8, 0x11C9, 0x11D0, 0xA1F0, 0x11D1, 0x11D2, 0xA1F2, 0xA1F1,
- /* U+25D0 */ 0x11D3, 0x11D4, 0x11D5, 0x11D6, 0x11D7, 0x11D8, 0x11D9, 0x11E0,
- /* U+25D8 */ 0x11E1, 0x11E2, 0x11E3, 0x11E4, 0x11E5, 0x11E6, 0x11E7, 0x11E8,
- /* U+25E0 */ 0x11E9, 0x11F0, 0xA88D, 0xA88E, 0xA88F, 0xA890, 0x11F1, 0x11F2,
- /* U+25E8 */ 0x11F3, 0x11F4, 0x11F5, 0x11F6, 0x11F7, 0x11F8, 0x11F9, 0x1200,
- /* U+25F0 */ 0x1201, 0x1202, 0x1203, 0x1204, 0x1205, 0x1206, 0x1207, 0x1208,
- /* U+25F8 */ 0x1209, 0x1210, 0x1211, 0x1212, 0x1213, 0x1214, 0x1215, 0x1216,
- /* U+2600 */ 0x1217, 0x1218, 0x1219, 0x1220, 0x1221, 0xA1EF, 0xA1EE, 0x1222,
- /* U+2608 */ 0x1223, 0xA891, 0x1224, 0x1225, 0x1226, 0x1227, 0x1228, 0x1229,
- /* U+2610 */ 0x1230, 0x1231, 0x1232, 0x1233, 0x1234, 0x1235, 0x1236, 0x1237,
- /* U+2618 */ 0x1238, 0x1239, 0x1240, 0x1241, 0x1242, 0x1243, 0x1244, 0x1245,
- /* U+2620 */ 0x1246, 0x1247, 0x1248, 0x1249, 0x1250, 0x1251, 0x1252, 0x1253,
- /* U+2628 */ 0x1254, 0x1255, 0x1256, 0x1257, 0x1258, 0x1259, 0x1260, 0x1261,
- /* U+2630 */ 0x1262, 0x1263, 0x1264, 0x1265, 0x1266, 0x1267, 0x1268, 0x1269,
- /* U+2638 */ 0x1270, 0x1271, 0x1272, 0x1273, 0x1274, 0x1275, 0x1276, 0x1277,
- /* U+2640 */ 0xA1E2, 0x1278, 0xA1E1,
- /* Contiguous area: U+2E81 .. U+361A */
- /* U+2E81 */ 0xFE50, 0x1FC9, 0x1FD0, 0xFE54, 0x1FD1, 0x1FD2, 0x1FD3,
- /* U+2E88 */ 0xFE57, 0x1FD4, 0x1FD5, 0xFE58, 0xFE5D, 0x1FD6, 0x1FD7, 0x1FD8,
- /* U+2E90 */ 0x1FD9, 0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0xFE5E,
- /* U+2E98 */ 0x2006, 0x2007, 0x2008, 0x2009, 0x2010, 0x2011, 0x2012, 0x2013,
- /* U+2EA0 */ 0x2014, 0x2015, 0x2016, 0x2017, 0x2018, 0x2019, 0x2020, 0xFE6B,
- /* U+2EA8 */ 0x2021, 0x2022, 0xFE6E, 0x2023, 0x2024, 0x2025, 0xFE71, 0x2026,
- /* U+2EB0 */ 0x2027, 0x2028, 0x2029, 0xFE73, 0x2030, 0x2031, 0xFE74, 0xFE75,
- /* U+2EB8 */ 0x2032, 0x2033, 0x2034, 0xFE79, 0x2035, 0x2036, 0x2037, 0x2038,
- /* U+2EC0 */ 0x2039, 0x2040, 0x2041, 0x2042, 0x2043, 0x2044, 0x2045, 0x2046,
- /* U+2EC8 */ 0x2047, 0x2048, 0xFE84, 0x2049, 0x2050, 0x2051, 0x2052, 0x2053,
- /* U+2ED0 */ 0x2054, 0x2055, 0x2056, 0x2057, 0x2058, 0x2059, 0x2060, 0x2061,
- /* U+2ED8 */ 0x2062, 0x2063, 0x2064, 0x2065, 0x2066, 0x2067, 0x2068, 0x2069,
- /* U+2EE0 */ 0x2070, 0x2071, 0x2072, 0x2073, 0x2074, 0x2075, 0x2076, 0x2077,
- /* U+2EE8 */ 0x2078, 0x2079, 0x2080, 0x2081, 0x2082, 0x2083, 0x2084, 0x2085,
- /* U+2EF0 */ 0x2086, 0x2087, 0x2088, 0x2089, 0x2090, 0x2091, 0x2092, 0x2093,
- /* U+2EF8 */ 0x2094, 0x2095, 0x2096, 0x2097, 0x2098, 0x2099, 0x20A0, 0x20A1,
- /* U+2F00 */ 0x20A2, 0x20A3, 0x20A4, 0x20A5, 0x20A6, 0x20A7, 0x20A8, 0x20A9,
- /* U+2F08 */ 0x20B0, 0x20B1, 0x20B2, 0x20B3, 0x20B4, 0x20B5, 0x20B6, 0x20B7,
- /* U+2F10 */ 0x20B8, 0x20B9, 0x20C0, 0x20C1, 0x20C2, 0x20C3, 0x20C4, 0x20C5,
- /* U+2F18 */ 0x20C6, 0x20C7, 0x20C8, 0x20C9, 0x20D0, 0x20D1, 0x20D2, 0x20D3,
- /* U+2F20 */ 0x20D4, 0x20D5, 0x20D6, 0x20D7, 0x20D8, 0x20D9, 0x20E0, 0x20E1,
- /* U+2F28 */ 0x20E2, 0x20E3, 0x20E4, 0x20E5, 0x20E6, 0x20E7, 0x20E8, 0x20E9,
- /* U+2F30 */ 0x20F0, 0x20F1, 0x20F2, 0x20F3, 0x20F4, 0x20F5, 0x20F6, 0x20F7,
- /* U+2F38 */ 0x20F8, 0x20F9, 0x2100, 0x2101, 0x2102, 0x2103, 0x2104, 0x2105,
- /* U+2F40 */ 0x2106, 0x2107, 0x2108, 0x2109, 0x2110, 0x2111, 0x2112, 0x2113,
- /* U+2F48 */ 0x2114, 0x2115, 0x2116, 0x2117, 0x2118, 0x2119, 0x2120, 0x2121,
- /* U+2F50 */ 0x2122, 0x2123, 0x2124, 0x2125, 0x2126, 0x2127, 0x2128, 0x2129,
- /* U+2F58 */ 0x2130, 0x2131, 0x2132, 0x2133, 0x2134, 0x2135, 0x2136, 0x2137,
- /* U+2F60 */ 0x2138, 0x2139, 0x2140, 0x2141, 0x2142, 0x2143, 0x2144, 0x2145,
- /* U+2F68 */ 0x2146, 0x2147, 0x2148, 0x2149, 0x2150, 0x2151, 0x2152, 0x2153,
- /* U+2F70 */ 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159, 0x2160, 0x2161,
- /* U+2F78 */ 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169,
- /* U+2F80 */ 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
- /* U+2F88 */ 0x2178, 0x2179, 0x2180, 0x2181, 0x2182, 0x2183, 0x2184, 0x2185,
- /* U+2F90 */ 0x2186, 0x2187, 0x2188, 0x2189, 0x2190, 0x2191, 0x2192, 0x2193,
- /* U+2F98 */ 0x2194, 0x2195, 0x2196, 0x2197, 0x2198, 0x2199, 0x21A0, 0x21A1,
- /* U+2FA0 */ 0x21A2, 0x21A3, 0x21A4, 0x21A5, 0x21A6, 0x21A7, 0x21A8, 0x21A9,
- /* U+2FA8 */ 0x21B0, 0x21B1, 0x21B2, 0x21B3, 0x21B4, 0x21B5, 0x21B6, 0x21B7,
- /* U+2FB0 */ 0x21B8, 0x21B9, 0x21C0, 0x21C1, 0x21C2, 0x21C3, 0x21C4, 0x21C5,
- /* U+2FB8 */ 0x21C6, 0x21C7, 0x21C8, 0x21C9, 0x21D0, 0x21D1, 0x21D2, 0x21D3,
- /* U+2FC0 */ 0x21D4, 0x21D5, 0x21D6, 0x21D7, 0x21D8, 0x21D9, 0x21E0, 0x21E1,
- /* U+2FC8 */ 0x21E2, 0x21E3, 0x21E4, 0x21E5, 0x21E6, 0x21E7, 0x21E8, 0x21E9,
- /* U+2FD0 */ 0x21F0, 0x21F1, 0x21F2, 0x21F3, 0x21F4, 0x21F5, 0x21F6, 0x21F7,
- /* U+2FD8 */ 0x21F8, 0x21F9, 0x2200, 0x2201, 0x2202, 0x2203, 0x2204, 0x2205,
- /* U+2FE0 */ 0x2206, 0x2207, 0x2208, 0x2209, 0x2210, 0x2211, 0x2212, 0x2213,
- /* U+2FE8 */ 0x2214, 0x2215, 0x2216, 0x2217, 0x2218, 0x2219, 0x2220, 0x2221,
- /* U+2FF0 */ 0xA98A, 0xA98B, 0xA98C, 0xA98D, 0xA98E, 0xA98F, 0xA990, 0xA991,
- /* U+2FF8 */ 0xA992, 0xA993, 0xA994, 0xA995, 0x2222, 0x2223, 0x2224, 0x2225,
- /* U+3000 */ 0xA1A1, 0xA1A2, 0xA1A3, 0xA1A8, 0x2226, 0xA1A9, 0xA965, 0xA996,
- /* U+3008 */ 0xA1B4, 0xA1B5, 0xA1B6, 0xA1B7, 0xA1B8, 0xA1B9, 0xA1BA, 0xA1BB,
- /* U+3010 */ 0xA1BE, 0xA1BF, 0xA893, 0xA1FE, 0xA1B2, 0xA1B3, 0xA1BC, 0xA1BD,
- /* U+3018 */ 0x2227, 0x2228, 0x2229, 0x2230, 0x2231, 0xA894, 0xA895, 0x2232,
- /* U+3020 */ 0x2233, 0xA940, 0xA941, 0xA942, 0xA943, 0xA944, 0xA945, 0xA946,
- /* U+3028 */ 0xA947, 0xA948, 0x2234, 0x2235, 0x2236, 0x2237, 0x2238, 0x2239,
- /* U+3030 */ 0x2240, 0x2241, 0x2242, 0x2243, 0x2244, 0x2245, 0x2246, 0x2247,
- /* U+3038 */ 0x2248, 0x2249, 0x2250, 0x2251, 0x2252, 0x2253, 0xA989, 0x2254,
- /* U+3040 */ 0x2255, 0xA4A1, 0xA4A2, 0xA4A3, 0xA4A4, 0xA4A5, 0xA4A6, 0xA4A7,
- /* U+3048 */ 0xA4A8, 0xA4A9, 0xA4AA, 0xA4AB, 0xA4AC, 0xA4AD, 0xA4AE, 0xA4AF,
- /* U+3050 */ 0xA4B0, 0xA4B1, 0xA4B2, 0xA4B3, 0xA4B4, 0xA4B5, 0xA4B6, 0xA4B7,
- /* U+3058 */ 0xA4B8, 0xA4B9, 0xA4BA, 0xA4BB, 0xA4BC, 0xA4BD, 0xA4BE, 0xA4BF,
- /* U+3060 */ 0xA4C0, 0xA4C1, 0xA4C2, 0xA4C3, 0xA4C4, 0xA4C5, 0xA4C6, 0xA4C7,
- /* U+3068 */ 0xA4C8, 0xA4C9, 0xA4CA, 0xA4CB, 0xA4CC, 0xA4CD, 0xA4CE, 0xA4CF,
- /* U+3070 */ 0xA4D0, 0xA4D1, 0xA4D2, 0xA4D3, 0xA4D4, 0xA4D5, 0xA4D6, 0xA4D7,
- /* U+3078 */ 0xA4D8, 0xA4D9, 0xA4DA, 0xA4DB, 0xA4DC, 0xA4DD, 0xA4DE, 0xA4DF,
- /* U+3080 */ 0xA4E0, 0xA4E1, 0xA4E2, 0xA4E3, 0xA4E4, 0xA4E5, 0xA4E6, 0xA4E7,
- /* U+3088 */ 0xA4E8, 0xA4E9, 0xA4EA, 0xA4EB, 0xA4EC, 0xA4ED, 0xA4EE, 0xA4EF,
- /* U+3090 */ 0xA4F0, 0xA4F1, 0xA4F2, 0xA4F3, 0x2256, 0x2257, 0x2258, 0x2259,
- /* U+3098 */ 0x2260, 0x2261, 0x2262, 0xA961, 0xA962, 0xA966, 0xA967, 0x2263,
- /* U+30A0 */ 0x2264, 0xA5A1, 0xA5A2, 0xA5A3, 0xA5A4, 0xA5A5, 0xA5A6, 0xA5A7,
- /* U+30A8 */ 0xA5A8, 0xA5A9, 0xA5AA, 0xA5AB, 0xA5AC, 0xA5AD, 0xA5AE, 0xA5AF,
- /* U+30B0 */ 0xA5B0, 0xA5B1, 0xA5B2, 0xA5B3, 0xA5B4, 0xA5B5, 0xA5B6, 0xA5B7,
- /* U+30B8 */ 0xA5B8, 0xA5B9, 0xA5BA, 0xA5BB, 0xA5BC, 0xA5BD, 0xA5BE, 0xA5BF,
- /* U+30C0 */ 0xA5C0, 0xA5C1, 0xA5C2, 0xA5C3, 0xA5C4, 0xA5C5, 0xA5C6, 0xA5C7,
- /* U+30C8 */ 0xA5C8, 0xA5C9, 0xA5CA, 0xA5CB, 0xA5CC, 0xA5CD, 0xA5CE, 0xA5CF,
- /* U+30D0 */ 0xA5D0, 0xA5D1, 0xA5D2, 0xA5D3, 0xA5D4, 0xA5D5, 0xA5D6, 0xA5D7,
- /* U+30D8 */ 0xA5D8, 0xA5D9, 0xA5DA, 0xA5DB, 0xA5DC, 0xA5DD, 0xA5DE, 0xA5DF,
- /* U+30E0 */ 0xA5E0, 0xA5E1, 0xA5E2, 0xA5E3, 0xA5E4, 0xA5E5, 0xA5E6, 0xA5E7,
- /* U+30E8 */ 0xA5E8, 0xA5E9, 0xA5EA, 0xA5EB, 0xA5EC, 0xA5ED, 0xA5EE, 0xA5EF,
- /* U+30F0 */ 0xA5F0, 0xA5F1, 0xA5F2, 0xA5F3, 0xA5F4, 0xA5F5, 0xA5F6, 0x2265,
- /* U+30F8 */ 0x2266, 0x2267, 0x2268, 0x2269, 0xA960, 0xA963, 0xA964, 0x2270,
- /* U+3100 */ 0x2271, 0x2272, 0x2273, 0x2274, 0x2275, 0xA8C5, 0xA8C6, 0xA8C7,
- /* U+3108 */ 0xA8C8, 0xA8C9, 0xA8CA, 0xA8CB, 0xA8CC, 0xA8CD, 0xA8CE, 0xA8CF,
- /* U+3110 */ 0xA8D0, 0xA8D1, 0xA8D2, 0xA8D3, 0xA8D4, 0xA8D5, 0xA8D6, 0xA8D7,
- /* U+3118 */ 0xA8D8, 0xA8D9, 0xA8DA, 0xA8DB, 0xA8DC, 0xA8DD, 0xA8DE, 0xA8DF,
- /* U+3120 */ 0xA8E0, 0xA8E1, 0xA8E2, 0xA8E3, 0xA8E4, 0xA8E5, 0xA8E6, 0xA8E7,
- /* U+3128 */ 0xA8E8, 0xA8E9, 0x2276, 0x2277, 0x2278, 0x2279, 0x2280, 0x2281,
- /* U+3130 */ 0x2282, 0x2283, 0x2284, 0x2285, 0x2286, 0x2287, 0x2288, 0x2289,
- /* U+3138 */ 0x2290, 0x2291, 0x2292, 0x2293, 0x2294, 0x2295, 0x2296, 0x2297,
- /* U+3140 */ 0x2298, 0x2299, 0x22A0, 0x22A1, 0x22A2, 0x22A3, 0x22A4, 0x22A5,
- /* U+3148 */ 0x22A6, 0x22A7, 0x22A8, 0x22A9, 0x22B0, 0x22B1, 0x22B2, 0x22B3,
- /* U+3150 */ 0x22B4, 0x22B5, 0x22B6, 0x22B7, 0x22B8, 0x22B9, 0x22C0, 0x22C1,
- /* U+3158 */ 0x22C2, 0x22C3, 0x22C4, 0x22C5, 0x22C6, 0x22C7, 0x22C8, 0x22C9,
- /* U+3160 */ 0x22D0, 0x22D1, 0x22D2, 0x22D3, 0x22D4, 0x22D5, 0x22D6, 0x22D7,
- /* U+3168 */ 0x22D8, 0x22D9, 0x22E0, 0x22E1, 0x22E2, 0x22E3, 0x22E4, 0x22E5,
- /* U+3170 */ 0x22E6, 0x22E7, 0x22E8, 0x22E9, 0x22F0, 0x22F1, 0x22F2, 0x22F3,
- /* U+3178 */ 0x22F4, 0x22F5, 0x22F6, 0x22F7, 0x22F8, 0x22F9, 0x2300, 0x2301,
- /* U+3180 */ 0x2302, 0x2303, 0x2304, 0x2305, 0x2306, 0x2307, 0x2308, 0x2309,
- /* U+3188 */ 0x2310, 0x2311, 0x2312, 0x2313, 0x2314, 0x2315, 0x2316, 0x2317,
- /* U+3190 */ 0x2318, 0x2319, 0x2320, 0x2321, 0x2322, 0x2323, 0x2324, 0x2325,
- /* U+3198 */ 0x2326, 0x2327, 0x2328, 0x2329, 0x2330, 0x2331, 0x2332, 0x2333,
- /* U+31A0 */ 0x2334, 0x2335, 0x2336, 0x2337, 0x2338, 0x2339, 0x2340, 0x2341,
- /* U+31A8 */ 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347, 0x2348, 0x2349,
- /* U+31B0 */ 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357,
- /* U+31B8 */ 0x2358, 0x2359, 0x2360, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365,
- /* U+31C0 */ 0x2366, 0x2367, 0x2368, 0x2369, 0x2370, 0x2371, 0x2372, 0x2373,
- /* U+31C8 */ 0x2374, 0x2375, 0x2376, 0x2377, 0x2378, 0x2379, 0x2380, 0x2381,
- /* U+31D0 */ 0x2382, 0x2383, 0x2384, 0x2385, 0x2386, 0x2387, 0x2388, 0x2389,
- /* U+31D8 */ 0x2390, 0x2391, 0x2392, 0x2393, 0x2394, 0x2395, 0x2396, 0x2397,
- /* U+31E0 */ 0x2398, 0x2399, 0x23A0, 0x23A1, 0x23A2, 0x23A3, 0x23A4, 0x23A5,
- /* U+31E8 */ 0x23A6, 0x23A7, 0x23A8, 0x23A9, 0x23B0, 0x23B1, 0x23B2, 0x23B3,
- /* U+31F0 */ 0x23B4, 0x23B5, 0x23B6, 0x23B7, 0x23B8, 0x23B9, 0x23C0, 0x23C1,
- /* U+31F8 */ 0x23C2, 0x23C3, 0x23C4, 0x23C5, 0x23C6, 0x23C7, 0x23C8, 0x23C9,
- /* U+3200 */ 0x23D0, 0x23D1, 0x23D2, 0x23D3, 0x23D4, 0x23D5, 0x23D6, 0x23D7,
- /* U+3208 */ 0x23D8, 0x23D9, 0x23E0, 0x23E1, 0x23E2, 0x23E3, 0x23E4, 0x23E5,
- /* U+3210 */ 0x23E6, 0x23E7, 0x23E8, 0x23E9, 0x23F0, 0x23F1, 0x23F2, 0x23F3,
- /* U+3218 */ 0x23F4, 0x23F5, 0x23F6, 0x23F7, 0x23F8, 0x23F9, 0x2400, 0x2401,
- /* U+3220 */ 0xA2E5, 0xA2E6, 0xA2E7, 0xA2E8, 0xA2E9, 0xA2EA, 0xA2EB, 0xA2EC,
- /* U+3228 */ 0xA2ED, 0xA2EE, 0x2402, 0x2403, 0x2404, 0x2405, 0x2406, 0x2407,
- /* U+3230 */ 0x2408, 0xA95A, 0x2409, 0x2410, 0x2411, 0x2412, 0x2413, 0x2414,
- /* U+3238 */ 0x2415, 0x2416, 0x2417, 0x2418, 0x2419, 0x2420, 0x2421, 0x2422,
- /* U+3240 */ 0x2423, 0x2424, 0x2425, 0x2426, 0x2427, 0x2428, 0x2429, 0x2430,
- /* U+3248 */ 0x2431, 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437, 0x2438,
- /* U+3250 */ 0x2439, 0x2440, 0x2441, 0x2442, 0x2443, 0x2444, 0x2445, 0x2446,
- /* U+3258 */ 0x2447, 0x2448, 0x2449, 0x2450, 0x2451, 0x2452, 0x2453, 0x2454,
- /* U+3260 */ 0x2455, 0x2456, 0x2457, 0x2458, 0x2459, 0x2460, 0x2461, 0x2462,
- /* U+3268 */ 0x2463, 0x2464, 0x2465, 0x2466, 0x2467, 0x2468, 0x2469, 0x2470,
- /* U+3270 */ 0x2471, 0x2472, 0x2473, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478,
- /* U+3278 */ 0x2479, 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486,
- /* U+3280 */ 0x2487, 0x2488, 0x2489, 0x2490, 0x2491, 0x2492, 0x2493, 0x2494,
- /* U+3288 */ 0x2495, 0x2496, 0x2497, 0x2498, 0x2499, 0x24A0, 0x24A1, 0x24A2,
- /* U+3290 */ 0x24A3, 0x24A4, 0x24A5, 0x24A6, 0x24A7, 0x24A8, 0x24A9, 0x24B0,
- /* U+3298 */ 0x24B1, 0x24B2, 0x24B3, 0x24B4, 0x24B5, 0x24B6, 0x24B7, 0x24B8,
- /* U+32A0 */ 0x24B9, 0x24C0, 0x24C1, 0xA949, 0x24C2, 0x24C3, 0x24C4, 0x24C5,
- /* U+32A8 */ 0x24C6, 0x24C7, 0x24C8, 0x24C9, 0x24D0, 0x24D1, 0x24D2, 0x24D3,
- /* U+32B0 */ 0x24D4, 0x24D5, 0x24D6, 0x24D7, 0x24D8, 0x24D9, 0x24E0, 0x24E1,
- /* U+32B8 */ 0x24E2, 0x24E3, 0x24E4, 0x24E5, 0x24E6, 0x24E7, 0x24E8, 0x24E9,
- /* U+32C0 */ 0x24F0, 0x24F1, 0x24F2, 0x24F3, 0x24F4, 0x24F5, 0x24F6, 0x24F7,
- /* U+32C8 */ 0x24F8, 0x24F9, 0x2500, 0x2501, 0x2502, 0x2503, 0x2504, 0x2505,
- /* U+32D0 */ 0x2506, 0x2507, 0x2508, 0x2509, 0x2510, 0x2511, 0x2512, 0x2513,
- /* U+32D8 */ 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x2520, 0x2521,
- /* U+32E0 */ 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529,
- /* U+32E8 */ 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537,
- /* U+32F0 */ 0x2538, 0x2539, 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545,
- /* U+32F8 */ 0x2546, 0x2547, 0x2548, 0x2549, 0x2550, 0x2551, 0x2552, 0x2553,
- /* U+3300 */ 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x2560, 0x2561,
- /* U+3308 */ 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569,
- /* U+3310 */ 0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0x2577,
- /* U+3318 */ 0x2578, 0x2579, 0x2580, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585,
- /* U+3320 */ 0x2586, 0x2587, 0x2588, 0x2589, 0x2590, 0x2591, 0x2592, 0x2593,
- /* U+3328 */ 0x2594, 0x2595, 0x2596, 0x2597, 0x2598, 0x2599, 0x25A0, 0x25A1,
- /* U+3330 */ 0x25A2, 0x25A3, 0x25A4, 0x25A5, 0x25A6, 0x25A7, 0x25A8, 0x25A9,
- /* U+3338 */ 0x25B0, 0x25B1, 0x25B2, 0x25B3, 0x25B4, 0x25B5, 0x25B6, 0x25B7,
- /* U+3340 */ 0x25B8, 0x25B9, 0x25C0, 0x25C1, 0x25C2, 0x25C3, 0x25C4, 0x25C5,
- /* U+3348 */ 0x25C6, 0x25C7, 0x25C8, 0x25C9, 0x25D0, 0x25D1, 0x25D2, 0x25D3,
- /* U+3350 */ 0x25D4, 0x25D5, 0x25D6, 0x25D7, 0x25D8, 0x25D9, 0x25E0, 0x25E1,
- /* U+3358 */ 0x25E2, 0x25E3, 0x25E4, 0x25E5, 0x25E6, 0x25E7, 0x25E8, 0x25E9,
- /* U+3360 */ 0x25F0, 0x25F1, 0x25F2, 0x25F3, 0x25F4, 0x25F5, 0x25F6, 0x25F7,
- /* U+3368 */ 0x25F8, 0x25F9, 0x2600, 0x2601, 0x2602, 0x2603, 0x2604, 0x2605,
- /* U+3370 */ 0x2606, 0x2607, 0x2608, 0x2609, 0x2610, 0x2611, 0x2612, 0x2613,
- /* U+3378 */ 0x2614, 0x2615, 0x2616, 0x2617, 0x2618, 0x2619, 0x2620, 0x2621,
- /* U+3380 */ 0x2622, 0x2623, 0x2624, 0x2625, 0x2626, 0x2627, 0x2628, 0x2629,
- /* U+3388 */ 0x2630, 0x2631, 0x2632, 0x2633, 0x2634, 0x2635, 0xA94A, 0xA94B,
- /* U+3390 */ 0x2636, 0x2637, 0x2638, 0x2639, 0x2640, 0x2641, 0x2642, 0x2643,
- /* U+3398 */ 0x2644, 0x2645, 0x2646, 0x2647, 0xA94C, 0xA94D, 0xA94E, 0x2648,
- /* U+33A0 */ 0x2649, 0xA94F, 0x2650, 0x2651, 0x2652, 0x2653, 0x2654, 0x2655,
- /* U+33A8 */ 0x2656, 0x2657, 0x2658, 0x2659, 0x2660, 0x2661, 0x2662, 0x2663,
- /* U+33B0 */ 0x2664, 0x2665, 0x2666, 0x2667, 0x2668, 0x2669, 0x2670, 0x2671,
- /* U+33B8 */ 0x2672, 0x2673, 0x2674, 0x2675, 0x2676, 0x2677, 0x2678, 0x2679,
- /* U+33C0 */ 0x2680, 0x2681, 0x2682, 0x2683, 0xA950, 0x2684, 0x2685, 0x2686,
- /* U+33C8 */ 0x2687, 0x2688, 0x2689, 0x2690, 0x2691, 0x2692, 0xA951, 0x2693,
- /* U+33D0 */ 0x2694, 0xA952, 0xA953, 0x2695, 0x2696, 0xA954, 0x2697, 0x2698,
- /* U+33D8 */ 0x2699, 0x26A0, 0x26A1, 0x26A2, 0x26A3, 0x26A4, 0x26A5, 0x26A6,
- /* U+33E0 */ 0x26A7, 0x26A8, 0x26A9, 0x26B0, 0x26B1, 0x26B2, 0x26B3, 0x26B4,
- /* U+33E8 */ 0x26B5, 0x26B6, 0x26B7, 0x26B8, 0x26B9, 0x26C0, 0x26C1, 0x26C2,
- /* U+33F0 */ 0x26C3, 0x26C4, 0x26C5, 0x26C6, 0x26C7, 0x26C8, 0x26C9, 0x26D0,
- /* U+33F8 */ 0x26D1, 0x26D2, 0x26D3, 0x26D4, 0x26D5, 0x26D6, 0x26D7, 0x26D8,
- /* U+3400 */ 0x26D9, 0x26E0, 0x26E1, 0x26E2, 0x26E3, 0x26E4, 0x26E5, 0x26E6,
- /* U+3408 */ 0x26E7, 0x26E8, 0x26E9, 0x26F0, 0x26F1, 0x26F2, 0x26F3, 0x26F4,
- /* U+3410 */ 0x26F5, 0x26F6, 0x26F7, 0x26F8, 0x26F9, 0x2700, 0x2701, 0x2702,
- /* U+3418 */ 0x2703, 0x2704, 0x2705, 0x2706, 0x2707, 0x2708, 0x2709, 0x2710,
- /* U+3420 */ 0x2711, 0x2712, 0x2713, 0x2714, 0x2715, 0x2716, 0x2717, 0x2718,
- /* U+3428 */ 0x2719, 0x2720, 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726,
- /* U+3430 */ 0x2727, 0x2728, 0x2729, 0x2730, 0x2731, 0x2732, 0x2733, 0x2734,
- /* U+3438 */ 0x2735, 0x2736, 0x2737, 0x2738, 0x2739, 0x2740, 0x2741, 0x2742,
- /* U+3440 */ 0x2743, 0x2744, 0x2745, 0x2746, 0x2747, 0x2748, 0x2749, 0xFE56,
- /* U+3448 */ 0x2750, 0x2751, 0x2752, 0x2753, 0x2754, 0x2755, 0x2756, 0x2757,
- /* U+3450 */ 0x2758, 0x2759, 0x2760, 0x2761, 0x2762, 0x2763, 0x2764, 0x2765,
- /* U+3458 */ 0x2766, 0x2767, 0x2768, 0x2769, 0x2770, 0x2771, 0x2772, 0x2773,
- /* U+3460 */ 0x2774, 0x2775, 0x2776, 0x2777, 0x2778, 0x2779, 0x2780, 0x2781,
- /* U+3468 */ 0x2782, 0x2783, 0x2784, 0x2785, 0x2786, 0x2787, 0x2788, 0x2789,
- /* U+3470 */ 0x2790, 0x2791, 0x2792, 0xFE55, 0x2793, 0x2794, 0x2795, 0x2796,
- /* U+3478 */ 0x2797, 0x2798, 0x2799, 0x27A0, 0x27A1, 0x27A2, 0x27A3, 0x27A4,
- /* U+3480 */ 0x27A5, 0x27A6, 0x27A7, 0x27A8, 0x27A9, 0x27B0, 0x27B1, 0x27B2,
- /* U+3488 */ 0x27B3, 0x27B4, 0x27B5, 0x27B6, 0x27B7, 0x27B8, 0x27B9, 0x27C0,
- /* U+3490 */ 0x27C1, 0x27C2, 0x27C3, 0x27C4, 0x27C5, 0x27C6, 0x27C7, 0x27C8,
- /* U+3498 */ 0x27C9, 0x27D0, 0x27D1, 0x27D2, 0x27D3, 0x27D4, 0x27D5, 0x27D6,
- /* U+34A0 */ 0x27D7, 0x27D8, 0x27D9, 0x3000, 0x3001, 0x3002, 0x3003, 0x3004,
- /* U+34A8 */ 0x3005, 0x3006, 0x3007, 0x3008, 0x3009, 0x3010, 0x3011, 0x3012,
- /* U+34B0 */ 0x3013, 0x3014, 0x3015, 0x3016, 0x3017, 0x3018, 0x3019, 0x3020,
- /* U+34B8 */ 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028,
- /* U+34C0 */ 0x3029, 0x3030, 0x3031, 0x3032, 0x3033, 0x3034, 0x3035, 0x3036,
- /* U+34C8 */ 0x3037, 0x3038, 0x3039, 0x3040, 0x3041, 0x3042, 0x3043, 0x3044,
- /* U+34D0 */ 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x3050, 0x3051, 0x3052,
- /* U+34D8 */ 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x3060,
- /* U+34E0 */ 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
- /* U+34E8 */ 0x3069, 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076,
- /* U+34F0 */ 0x3077, 0x3078, 0x3079, 0x3080, 0x3081, 0x3082, 0x3083, 0x3084,
- /* U+34F8 */ 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x3090, 0x3091, 0x3092,
- /* U+3500 */ 0x3093, 0x3094, 0x3095, 0x3096, 0x3097, 0x3098, 0x3099, 0x30A0,
- /* U+3508 */ 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7, 0x30A8,
- /* U+3510 */ 0x30A9, 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6,
- /* U+3518 */ 0x30B7, 0x30B8, 0x30B9, 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4,
- /* U+3520 */ 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30D0, 0x30D1, 0x30D2,
- /* U+3528 */ 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9, 0x30E0,
- /* U+3530 */ 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8,
- /* U+3538 */ 0x30E9, 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6,
- /* U+3540 */ 0x30F7, 0x30F8, 0x30F9, 0x3100, 0x3101, 0x3102, 0x3103, 0x3104,
- /* U+3548 */ 0x3105, 0x3106, 0x3107, 0x3108, 0x3109, 0x3110, 0x3111, 0x3112,
- /* U+3550 */ 0x3113, 0x3114, 0x3115, 0x3116, 0x3117, 0x3118, 0x3119, 0x3120,
- /* U+3558 */ 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127, 0x3128,
- /* U+3560 */ 0x3129, 0x3130, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136,
- /* U+3568 */ 0x3137, 0x3138, 0x3139, 0x3140, 0x3141, 0x3142, 0x3143, 0x3144,
- /* U+3570 */ 0x3145, 0x3146, 0x3147, 0x3148, 0x3149, 0x3150, 0x3151, 0x3152,
- /* U+3578 */ 0x3153, 0x3154, 0x3155, 0x3156, 0x3157, 0x3158, 0x3159, 0x3160,
- /* U+3580 */ 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166, 0x3167, 0x3168,
- /* U+3588 */ 0x3169, 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176,
- /* U+3590 */ 0x3177, 0x3178, 0x3179, 0x3180, 0x3181, 0x3182, 0x3183, 0x3184,
- /* U+3598 */ 0x3185, 0x3186, 0x3187, 0x3188, 0x3189, 0x3190, 0xFE5A, 0x3191,
- /* U+35A0 */ 0x3192, 0x3193, 0x3194, 0x3195, 0x3196, 0x3197, 0x3198, 0x3199,
- /* U+35A8 */ 0x31A0, 0x31A1, 0x31A2, 0x31A3, 0x31A4, 0x31A5, 0x31A6, 0x31A7,
- /* U+35B0 */ 0x31A8, 0x31A9, 0x31B0, 0x31B1, 0x31B2, 0x31B3, 0x31B4, 0x31B5,
- /* U+35B8 */ 0x31B6, 0x31B7, 0x31B8, 0x31B9, 0x31C0, 0x31C1, 0x31C2, 0x31C3,
- /* U+35C0 */ 0x31C4, 0x31C5, 0x31C6, 0x31C7, 0x31C8, 0x31C9, 0x31D0, 0x31D1,
- /* U+35C8 */ 0x31D2, 0x31D3, 0x31D4, 0x31D5, 0x31D6, 0x31D7, 0x31D8, 0x31D9,
- /* U+35D0 */ 0x31E0, 0x31E1, 0x31E2, 0x31E3, 0x31E4, 0x31E5, 0x31E6, 0x31E7,
- /* U+35D8 */ 0x31E8, 0x31E9, 0x31F0, 0x31F1, 0x31F2, 0x31F3, 0x31F4, 0x31F5,
- /* U+35E0 */ 0x31F6, 0x31F7, 0x31F8, 0x31F9, 0x3200, 0x3201, 0x3202, 0x3203,
- /* U+35E8 */ 0x3204, 0x3205, 0x3206, 0x3207, 0x3208, 0x3209, 0x3210, 0x3211,
- /* U+35F0 */ 0x3212, 0x3213, 0x3214, 0x3215, 0x3216, 0x3217, 0x3218, 0x3219,
- /* U+35F8 */ 0x3220, 0x3221, 0x3222, 0x3223, 0x3224, 0x3225, 0x3226, 0x3227,
- /* U+3600 */ 0x3228, 0x3229, 0x3230, 0x3231, 0x3232, 0x3233, 0x3234, 0x3235,
- /* U+3608 */ 0x3236, 0x3237, 0x3238, 0x3239, 0x3240, 0x3241, 0xFE5C, 0x3242,
- /* U+3610 */ 0x3243, 0x3244, 0x3245, 0x3246, 0x3247, 0x3248, 0x3249, 0x3250,
- /* U+3618 */ 0x3251, 0x3252, 0xFE5B,
- /* Contiguous area: U+3918 .. U+3CE0 */
- /* U+3918 */ 0xFE60, 0x3718, 0x3719, 0x3720, 0x3721, 0x3722, 0x3723, 0x3724,
- /* U+3920 */ 0x3725, 0x3726, 0x3727, 0x3728, 0x3729, 0x3730, 0x3731, 0x3732,
- /* U+3928 */ 0x3733, 0x3734, 0x3735, 0x3736, 0x3737, 0x3738, 0x3739, 0x3740,
- /* U+3930 */ 0x3741, 0x3742, 0x3743, 0x3744, 0x3745, 0x3746, 0x3747, 0x3748,
- /* U+3938 */ 0x3749, 0x3750, 0x3751, 0x3752, 0x3753, 0x3754, 0x3755, 0x3756,
- /* U+3940 */ 0x3757, 0x3758, 0x3759, 0x3760, 0x3761, 0x3762, 0x3763, 0x3764,
- /* U+3948 */ 0x3765, 0x3766, 0x3767, 0x3768, 0x3769, 0x3770, 0x3771, 0x3772,
- /* U+3950 */ 0x3773, 0x3774, 0x3775, 0x3776, 0x3777, 0x3778, 0x3779, 0x3780,
- /* U+3958 */ 0x3781, 0x3782, 0x3783, 0x3784, 0x3785, 0x3786, 0x3787, 0x3788,
- /* U+3960 */ 0x3789, 0x3790, 0x3791, 0x3792, 0x3793, 0x3794, 0x3795, 0x3796,
- /* U+3968 */ 0x3797, 0x3798, 0x3799, 0x37A0, 0x37A1, 0x37A2, 0xFE5F, 0x37A3,
- /* U+3970 */ 0x37A4, 0x37A5, 0x37A6, 0x37A7, 0x37A8, 0x37A9, 0x37B0, 0x37B1,
- /* U+3978 */ 0x37B2, 0x37B3, 0x37B4, 0x37B5, 0x37B6, 0x37B7, 0x37B8, 0x37B9,
- /* U+3980 */ 0x37C0, 0x37C1, 0x37C2, 0x37C3, 0x37C4, 0x37C5, 0x37C6, 0x37C7,
- /* U+3988 */ 0x37C8, 0x37C9, 0x37D0, 0x37D1, 0x37D2, 0x37D3, 0x37D4, 0x37D5,
- /* U+3990 */ 0x37D6, 0x37D7, 0x37D8, 0x37D9, 0x3800, 0x3801, 0x3802, 0x3803,
- /* U+3998 */ 0x3804, 0x3805, 0x3806, 0x3807, 0x3808, 0x3809, 0x3810, 0x3811,
- /* U+39A0 */ 0x3812, 0x3813, 0x3814, 0x3815, 0x3816, 0x3817, 0x3818, 0x3819,
- /* U+39A8 */ 0x3820, 0x3821, 0x3822, 0x3823, 0x3824, 0x3825, 0x3826, 0x3827,
- /* U+39B0 */ 0x3828, 0x3829, 0x3830, 0x3831, 0x3832, 0x3833, 0x3834, 0x3835,
- /* U+39B8 */ 0x3836, 0x3837, 0x3838, 0x3839, 0x3840, 0x3841, 0x3842, 0x3843,
- /* U+39C0 */ 0x3844, 0x3845, 0x3846, 0x3847, 0x3848, 0x3849, 0x3850, 0x3851,
- /* U+39C8 */ 0x3852, 0x3853, 0x3854, 0x3855, 0x3856, 0x3857, 0x3858, 0xFE62,
- /* U+39D0 */ 0xFE65, 0x3859, 0x3860, 0x3861, 0x3862, 0x3863, 0x3864, 0x3865,
- /* U+39D8 */ 0x3866, 0x3867, 0x3868, 0x3869, 0x3870, 0x3871, 0x3872, 0xFE63,
- /* U+39E0 */ 0x3873, 0x3874, 0x3875, 0x3876, 0x3877, 0x3878, 0x3879, 0x3880,
- /* U+39E8 */ 0x3881, 0x3882, 0x3883, 0x3884, 0x3885, 0x3886, 0x3887, 0x3888,
- /* U+39F0 */ 0x3889, 0x3890, 0x3891, 0x3892, 0x3893, 0x3894, 0x3895, 0x3896,
- /* U+39F8 */ 0x3897, 0x3898, 0x3899, 0x38A0, 0x38A1, 0x38A2, 0x38A3, 0x38A4,
- /* U+3A00 */ 0x38A5, 0x38A6, 0x38A7, 0x38A8, 0x38A9, 0x38B0, 0x38B1, 0x38B2,
- /* U+3A08 */ 0x38B3, 0x38B4, 0x38B5, 0x38B6, 0x38B7, 0x38B8, 0x38B9, 0x38C0,
- /* U+3A10 */ 0x38C1, 0x38C2, 0x38C3, 0x38C4, 0x38C5, 0x38C6, 0x38C7, 0x38C8,
- /* U+3A18 */ 0x38C9, 0x38D0, 0x38D1, 0x38D2, 0x38D3, 0x38D4, 0x38D5, 0x38D6,
- /* U+3A20 */ 0x38D7, 0x38D8, 0x38D9, 0x38E0, 0x38E1, 0x38E2, 0x38E3, 0x38E4,
- /* U+3A28 */ 0x38E5, 0x38E6, 0x38E7, 0x38E8, 0x38E9, 0x38F0, 0x38F1, 0x38F2,
- /* U+3A30 */ 0x38F3, 0x38F4, 0x38F5, 0x38F6, 0x38F7, 0x38F8, 0x38F9, 0x3900,
- /* U+3A38 */ 0x3901, 0x3902, 0x3903, 0x3904, 0x3905, 0x3906, 0x3907, 0x3908,
- /* U+3A40 */ 0x3909, 0x3910, 0x3911, 0x3912, 0x3913, 0x3914, 0x3915, 0x3916,
- /* U+3A48 */ 0x3917, 0x3918, 0x3919, 0x3920, 0x3921, 0x3922, 0x3923, 0x3924,
- /* U+3A50 */ 0x3925, 0x3926, 0x3927, 0x3928, 0x3929, 0x3930, 0x3931, 0x3932,
- /* U+3A58 */ 0x3933, 0x3934, 0x3935, 0x3936, 0x3937, 0x3938, 0x3939, 0x3940,
- /* U+3A60 */ 0x3941, 0x3942, 0x3943, 0x3944, 0x3945, 0x3946, 0x3947, 0x3948,
- /* U+3A68 */ 0x3949, 0x3950, 0x3951, 0x3952, 0x3953, 0x3954, 0x3955, 0x3956,
- /* U+3A70 */ 0x3957, 0x3958, 0x3959, 0xFE64, 0x3960, 0x3961, 0x3962, 0x3963,
- /* U+3A78 */ 0x3964, 0x3965, 0x3966, 0x3967, 0x3968, 0x3969, 0x3970, 0x3971,
- /* U+3A80 */ 0x3972, 0x3973, 0x3974, 0x3975, 0x3976, 0x3977, 0x3978, 0x3979,
- /* U+3A88 */ 0x3980, 0x3981, 0x3982, 0x3983, 0x3984, 0x3985, 0x3986, 0x3987,
- /* U+3A90 */ 0x3988, 0x3989, 0x3990, 0x3991, 0x3992, 0x3993, 0x3994, 0x3995,
- /* U+3A98 */ 0x3996, 0x3997, 0x3998, 0x3999, 0x39A0, 0x39A1, 0x39A2, 0x39A3,
- /* U+3AA0 */ 0x39A4, 0x39A5, 0x39A6, 0x39A7, 0x39A8, 0x39A9, 0x39B0, 0x39B1,
- /* U+3AA8 */ 0x39B2, 0x39B3, 0x39B4, 0x39B5, 0x39B6, 0x39B7, 0x39B8, 0x39B9,
- /* U+3AB0 */ 0x39C0, 0x39C1, 0x39C2, 0x39C3, 0x39C4, 0x39C5, 0x39C6, 0x39C7,
- /* U+3AB8 */ 0x39C8, 0x39C9, 0x39D0, 0x39D1, 0x39D2, 0x39D3, 0x39D4, 0x39D5,
- /* U+3AC0 */ 0x39D6, 0x39D7, 0x39D8, 0x39D9, 0x39E0, 0x39E1, 0x39E2, 0x39E3,
- /* U+3AC8 */ 0x39E4, 0x39E5, 0x39E6, 0x39E7, 0x39E8, 0x39E9, 0x39F0, 0x39F1,
- /* U+3AD0 */ 0x39F2, 0x39F3, 0x39F4, 0x39F5, 0x39F6, 0x39F7, 0x39F8, 0x39F9,
- /* U+3AD8 */ 0x3A00, 0x3A01, 0x3A02, 0x3A03, 0x3A04, 0x3A05, 0x3A06, 0x3A07,
- /* U+3AE0 */ 0x3A08, 0x3A09, 0x3A10, 0x3A11, 0x3A12, 0x3A13, 0x3A14, 0x3A15,
- /* U+3AE8 */ 0x3A16, 0x3A17, 0x3A18, 0x3A19, 0x3A20, 0x3A21, 0x3A22, 0x3A23,
- /* U+3AF0 */ 0x3A24, 0x3A25, 0x3A26, 0x3A27, 0x3A28, 0x3A29, 0x3A30, 0x3A31,
- /* U+3AF8 */ 0x3A32, 0x3A33, 0x3A34, 0x3A35, 0x3A36, 0x3A37, 0x3A38, 0x3A39,
- /* U+3B00 */ 0x3A40, 0x3A41, 0x3A42, 0x3A43, 0x3A44, 0x3A45, 0x3A46, 0x3A47,
- /* U+3B08 */ 0x3A48, 0x3A49, 0x3A50, 0x3A51, 0x3A52, 0x3A53, 0x3A54, 0x3A55,
- /* U+3B10 */ 0x3A56, 0x3A57, 0x3A58, 0x3A59, 0x3A60, 0x3A61, 0x3A62, 0x3A63,
- /* U+3B18 */ 0x3A64, 0x3A65, 0x3A66, 0x3A67, 0x3A68, 0x3A69, 0x3A70, 0x3A71,
- /* U+3B20 */ 0x3A72, 0x3A73, 0x3A74, 0x3A75, 0x3A76, 0x3A77, 0x3A78, 0x3A79,
- /* U+3B28 */ 0x3A80, 0x3A81, 0x3A82, 0x3A83, 0x3A84, 0x3A85, 0x3A86, 0x3A87,
- /* U+3B30 */ 0x3A88, 0x3A89, 0x3A90, 0x3A91, 0x3A92, 0x3A93, 0x3A94, 0x3A95,
- /* U+3B38 */ 0x3A96, 0x3A97, 0x3A98, 0x3A99, 0x3AA0, 0x3AA1, 0x3AA2, 0x3AA3,
- /* U+3B40 */ 0x3AA4, 0x3AA5, 0x3AA6, 0x3AA7, 0x3AA8, 0x3AA9, 0x3AB0, 0x3AB1,
- /* U+3B48 */ 0x3AB2, 0x3AB3, 0x3AB4, 0x3AB5, 0x3AB6, 0x3AB7, 0xFE68, 0x3AB8,
- /* U+3B50 */ 0x3AB9, 0x3AC0, 0x3AC1, 0x3AC2, 0x3AC3, 0x3AC4, 0x3AC5, 0x3AC6,
- /* U+3B58 */ 0x3AC7, 0x3AC8, 0x3AC9, 0x3AD0, 0x3AD1, 0x3AD2, 0x3AD3, 0x3AD4,
- /* U+3B60 */ 0x3AD5, 0x3AD6, 0x3AD7, 0x3AD8, 0x3AD9, 0x3AE0, 0x3AE1, 0x3AE2,
- /* U+3B68 */ 0x3AE3, 0x3AE4, 0x3AE5, 0x3AE6, 0x3AE7, 0x3AE8, 0x3AE9, 0x3AF0,
- /* U+3B70 */ 0x3AF1, 0x3AF2, 0x3AF3, 0x3AF4, 0x3AF5, 0x3AF6, 0x3AF7, 0x3AF8,
- /* U+3B78 */ 0x3AF9, 0x3B00, 0x3B01, 0x3B02, 0x3B03, 0x3B04, 0x3B05, 0x3B06,
- /* U+3B80 */ 0x3B07, 0x3B08, 0x3B09, 0x3B10, 0x3B11, 0x3B12, 0x3B13, 0x3B14,
- /* U+3B88 */ 0x3B15, 0x3B16, 0x3B17, 0x3B18, 0x3B19, 0x3B20, 0x3B21, 0x3B22,
- /* U+3B90 */ 0x3B23, 0x3B24, 0x3B25, 0x3B26, 0x3B27, 0x3B28, 0x3B29, 0x3B30,
- /* U+3B98 */ 0x3B31, 0x3B32, 0x3B33, 0x3B34, 0x3B35, 0x3B36, 0x3B37, 0x3B38,
- /* U+3BA0 */ 0x3B39, 0x3B40, 0x3B41, 0x3B42, 0x3B43, 0x3B44, 0x3B45, 0x3B46,
- /* U+3BA8 */ 0x3B47, 0x3B48, 0x3B49, 0x3B50, 0x3B51, 0x3B52, 0x3B53, 0x3B54,
- /* U+3BB0 */ 0x3B55, 0x3B56, 0x3B57, 0x3B58, 0x3B59, 0x3B60, 0x3B61, 0x3B62,
- /* U+3BB8 */ 0x3B63, 0x3B64, 0x3B65, 0x3B66, 0x3B67, 0x3B68, 0x3B69, 0x3B70,
- /* U+3BC0 */ 0x3B71, 0x3B72, 0x3B73, 0x3B74, 0x3B75, 0x3B76, 0x3B77, 0x3B78,
- /* U+3BC8 */ 0x3B79, 0x3B80, 0x3B81, 0x3B82, 0x3B83, 0x3B84, 0x3B85, 0x3B86,
- /* U+3BD0 */ 0x3B87, 0x3B88, 0x3B89, 0x3B90, 0x3B91, 0x3B92, 0x3B93, 0x3B94,
- /* U+3BD8 */ 0x3B95, 0x3B96, 0x3B97, 0x3B98, 0x3B99, 0x3BA0, 0x3BA1, 0x3BA2,
- /* U+3BE0 */ 0x3BA3, 0x3BA4, 0x3BA5, 0x3BA6, 0x3BA7, 0x3BA8, 0x3BA9, 0x3BB0,
- /* U+3BE8 */ 0x3BB1, 0x3BB2, 0x3BB3, 0x3BB4, 0x3BB5, 0x3BB6, 0x3BB7, 0x3BB8,
- /* U+3BF0 */ 0x3BB9, 0x3BC0, 0x3BC1, 0x3BC2, 0x3BC3, 0x3BC4, 0x3BC5, 0x3BC6,
- /* U+3BF8 */ 0x3BC7, 0x3BC8, 0x3BC9, 0x3BD0, 0x3BD1, 0x3BD2, 0x3BD3, 0x3BD4,
- /* U+3C00 */ 0x3BD5, 0x3BD6, 0x3BD7, 0x3BD8, 0x3BD9, 0x3BE0, 0x3BE1, 0x3BE2,
- /* U+3C08 */ 0x3BE3, 0x3BE4, 0x3BE5, 0x3BE6, 0x3BE7, 0x3BE8, 0x3BE9, 0x3BF0,
- /* U+3C10 */ 0x3BF1, 0x3BF2, 0x3BF3, 0x3BF4, 0x3BF5, 0x3BF6, 0x3BF7, 0x3BF8,
- /* U+3C18 */ 0x3BF9, 0x3C00, 0x3C01, 0x3C02, 0x3C03, 0x3C04, 0x3C05, 0x3C06,
- /* U+3C20 */ 0x3C07, 0x3C08, 0x3C09, 0x3C10, 0x3C11, 0x3C12, 0x3C13, 0x3C14,
- /* U+3C28 */ 0x3C15, 0x3C16, 0x3C17, 0x3C18, 0x3C19, 0x3C20, 0x3C21, 0x3C22,
- /* U+3C30 */ 0x3C23, 0x3C24, 0x3C25, 0x3C26, 0x3C27, 0x3C28, 0x3C29, 0x3C30,
- /* U+3C38 */ 0x3C31, 0x3C32, 0x3C33, 0x3C34, 0x3C35, 0x3C36, 0x3C37, 0x3C38,
- /* U+3C40 */ 0x3C39, 0x3C40, 0x3C41, 0x3C42, 0x3C43, 0x3C44, 0x3C45, 0x3C46,
- /* U+3C48 */ 0x3C47, 0x3C48, 0x3C49, 0x3C50, 0x3C51, 0x3C52, 0x3C53, 0x3C54,
- /* U+3C50 */ 0x3C55, 0x3C56, 0x3C57, 0x3C58, 0x3C59, 0x3C60, 0x3C61, 0x3C62,
- /* U+3C58 */ 0x3C63, 0x3C64, 0x3C65, 0x3C66, 0x3C67, 0x3C68, 0x3C69, 0x3C70,
- /* U+3C60 */ 0x3C71, 0x3C72, 0x3C73, 0x3C74, 0x3C75, 0x3C76, 0x3C77, 0x3C78,
- /* U+3C68 */ 0x3C79, 0x3C80, 0x3C81, 0x3C82, 0x3C83, 0x3C84, 0xFE69, 0x3C85,
- /* U+3C70 */ 0x3C86, 0x3C87, 0x3C88, 0x3C89, 0x3C90, 0x3C91, 0x3C92, 0x3C93,
- /* U+3C78 */ 0x3C94, 0x3C95, 0x3C96, 0x3C97, 0x3C98, 0x3C99, 0x3CA0, 0x3CA1,
- /* U+3C80 */ 0x3CA2, 0x3CA3, 0x3CA4, 0x3CA5, 0x3CA6, 0x3CA7, 0x3CA8, 0x3CA9,
- /* U+3C88 */ 0x3CB0, 0x3CB1, 0x3CB2, 0x3CB3, 0x3CB4, 0x3CB5, 0x3CB6, 0x3CB7,
- /* U+3C90 */ 0x3CB8, 0x3CB9, 0x3CC0, 0x3CC1, 0x3CC2, 0x3CC3, 0x3CC4, 0x3CC5,
- /* U+3C98 */ 0x3CC6, 0x3CC7, 0x3CC8, 0x3CC9, 0x3CD0, 0x3CD1, 0x3CD2, 0x3CD3,
- /* U+3CA0 */ 0x3CD4, 0x3CD5, 0x3CD6, 0x3CD7, 0x3CD8, 0x3CD9, 0x3CE0, 0x3CE1,
- /* U+3CA8 */ 0x3CE2, 0x3CE3, 0x3CE4, 0x3CE5, 0x3CE6, 0x3CE7, 0x3CE8, 0x3CE9,
- /* U+3CB0 */ 0x3CF0, 0x3CF1, 0x3CF2, 0x3CF3, 0x3CF4, 0x3CF5, 0x3CF6, 0x3CF7,
- /* U+3CB8 */ 0x3CF8, 0x3CF9, 0x3D00, 0x3D01, 0x3D02, 0x3D03, 0x3D04, 0x3D05,
- /* U+3CC0 */ 0x3D06, 0x3D07, 0x3D08, 0x3D09, 0x3D10, 0x3D11, 0x3D12, 0x3D13,
- /* U+3CC8 */ 0x3D14, 0x3D15, 0x3D16, 0x3D17, 0x3D18, 0x3D19, 0x3D20, 0x3D21,
- /* U+3CD0 */ 0x3D22, 0x3D23, 0x3D24, 0x3D25, 0x3D26, 0x3D27, 0x3D28, 0x3D29,
- /* U+3CD8 */ 0x3D30, 0x3D31, 0x3D32, 0x3D33, 0x3D34, 0x3D35, 0x3D36, 0x3D37,
- /* U+3CE0 */ 0xFE6A,
- /* Contiguous area: U+4056 .. U+415F */
- /* U+4056 */ 0xFE6F, 0x42E3,
- /* U+4058 */ 0x42E4, 0x42E5, 0x42E6, 0x42E7, 0x42E8, 0x42E9, 0x42F0, 0x42F1,
- /* U+4060 */ 0x42F2, 0x42F3, 0x42F4, 0x42F5, 0x42F6, 0x42F7, 0x42F8, 0x42F9,
- /* U+4068 */ 0x4300, 0x4301, 0x4302, 0x4303, 0x4304, 0x4305, 0x4306, 0x4307,
- /* U+4070 */ 0x4308, 0x4309, 0x4310, 0x4311, 0x4312, 0x4313, 0x4314, 0x4315,
- /* U+4078 */ 0x4316, 0x4317, 0x4318, 0x4319, 0x4320, 0x4321, 0x4322, 0x4323,
- /* U+4080 */ 0x4324, 0x4325, 0x4326, 0x4327, 0x4328, 0x4329, 0x4330, 0x4331,
- /* U+4088 */ 0x4332, 0x4333, 0x4334, 0x4335, 0x4336, 0x4337, 0x4338, 0x4339,
- /* U+4090 */ 0x4340, 0x4341, 0x4342, 0x4343, 0x4344, 0x4345, 0x4346, 0x4347,
- /* U+4098 */ 0x4348, 0x4349, 0x4350, 0x4351, 0x4352, 0x4353, 0x4354, 0x4355,
- /* U+40A0 */ 0x4356, 0x4357, 0x4358, 0x4359, 0x4360, 0x4361, 0x4362, 0x4363,
- /* U+40A8 */ 0x4364, 0x4365, 0x4366, 0x4367, 0x4368, 0x4369, 0x4370, 0x4371,
- /* U+40B0 */ 0x4372, 0x4373, 0x4374, 0x4375, 0x4376, 0x4377, 0x4378, 0x4379,
- /* U+40B8 */ 0x4380, 0x4381, 0x4382, 0x4383, 0x4384, 0x4385, 0x4386, 0x4387,
- /* U+40C0 */ 0x4388, 0x4389, 0x4390, 0x4391, 0x4392, 0x4393, 0x4394, 0x4395,
- /* U+40C8 */ 0x4396, 0x4397, 0x4398, 0x4399, 0x43A0, 0x43A1, 0x43A2, 0x43A3,
- /* U+40D0 */ 0x43A4, 0x43A5, 0x43A6, 0x43A7, 0x43A8, 0x43A9, 0x43B0, 0x43B1,
- /* U+40D8 */ 0x43B2, 0x43B3, 0x43B4, 0x43B5, 0x43B6, 0x43B7, 0x43B8, 0x43B9,
- /* U+40E0 */ 0x43C0, 0x43C1, 0x43C2, 0x43C3, 0x43C4, 0x43C5, 0x43C6, 0x43C7,
- /* U+40E8 */ 0x43C8, 0x43C9, 0x43D0, 0x43D1, 0x43D2, 0x43D3, 0x43D4, 0x43D5,
- /* U+40F0 */ 0x43D6, 0x43D7, 0x43D8, 0x43D9, 0x43E0, 0x43E1, 0x43E2, 0x43E3,
- /* U+40F8 */ 0x43E4, 0x43E5, 0x43E6, 0x43E7, 0x43E8, 0x43E9, 0x43F0, 0x43F1,
- /* U+4100 */ 0x43F2, 0x43F3, 0x43F4, 0x43F5, 0x43F6, 0x43F7, 0x43F8, 0x43F9,
- /* U+4108 */ 0x4400, 0x4401, 0x4402, 0x4403, 0x4404, 0x4405, 0x4406, 0x4407,
- /* U+4110 */ 0x4408, 0x4409, 0x4410, 0x4411, 0x4412, 0x4413, 0x4414, 0x4415,
- /* U+4118 */ 0x4416, 0x4417, 0x4418, 0x4419, 0x4420, 0x4421, 0x4422, 0x4423,
- /* U+4120 */ 0x4424, 0x4425, 0x4426, 0x4427, 0x4428, 0x4429, 0x4430, 0x4431,
- /* U+4128 */ 0x4432, 0x4433, 0x4434, 0x4435, 0x4436, 0x4437, 0x4438, 0x4439,
- /* U+4130 */ 0x4440, 0x4441, 0x4442, 0x4443, 0x4444, 0x4445, 0x4446, 0x4447,
- /* U+4138 */ 0x4448, 0x4449, 0x4450, 0x4451, 0x4452, 0x4453, 0x4454, 0x4455,
- /* U+4140 */ 0x4456, 0x4457, 0x4458, 0x4459, 0x4460, 0x4461, 0x4462, 0x4463,
- /* U+4148 */ 0x4464, 0x4465, 0x4466, 0x4467, 0x4468, 0x4469, 0x4470, 0x4471,
- /* U+4150 */ 0x4472, 0x4473, 0x4474, 0x4475, 0x4476, 0x4477, 0x4478, 0x4479,
- /* U+4158 */ 0x4480, 0x4481, 0x4482, 0x4483, 0x4484, 0x4485, 0x4486, 0xFE70,
- /* Contiguous area: U+4337 .. U+44D6 */
- /* U+4337 */ 0xFE72,
- /* U+4338 */ 0x4778, 0x4779, 0x4780, 0x4781, 0x4782, 0x4783, 0x4784, 0x4785,
- /* U+4340 */ 0x4786, 0x4787, 0x4788, 0x4789, 0x4790, 0x4791, 0x4792, 0x4793,
- /* U+4348 */ 0x4794, 0x4795, 0x4796, 0x4797, 0x4798, 0x4799, 0x47A0, 0x47A1,
- /* U+4350 */ 0x47A2, 0x47A3, 0x47A4, 0x47A5, 0x47A6, 0x47A7, 0x47A8, 0x47A9,
- /* U+4358 */ 0x47B0, 0x47B1, 0x47B2, 0x47B3, 0x47B4, 0x47B5, 0x47B6, 0x47B7,
- /* U+4360 */ 0x47B8, 0x47B9, 0x47C0, 0x47C1, 0x47C2, 0x47C3, 0x47C4, 0x47C5,
- /* U+4368 */ 0x47C6, 0x47C7, 0x47C8, 0x47C9, 0x47D0, 0x47D1, 0x47D2, 0x47D3,
- /* U+4370 */ 0x47D4, 0x47D5, 0x47D6, 0x47D7, 0x47D8, 0x47D9, 0x4800, 0x4801,
- /* U+4378 */ 0x4802, 0x4803, 0x4804, 0x4805, 0x4806, 0x4807, 0x4808, 0x4809,
- /* U+4380 */ 0x4810, 0x4811, 0x4812, 0x4813, 0x4814, 0x4815, 0x4816, 0x4817,
- /* U+4388 */ 0x4818, 0x4819, 0x4820, 0x4821, 0x4822, 0x4823, 0x4824, 0x4825,
- /* U+4390 */ 0x4826, 0x4827, 0x4828, 0x4829, 0x4830, 0x4831, 0x4832, 0x4833,
- /* U+4398 */ 0x4834, 0x4835, 0x4836, 0x4837, 0x4838, 0x4839, 0x4840, 0x4841,
- /* U+43A0 */ 0x4842, 0x4843, 0x4844, 0x4845, 0x4846, 0x4847, 0x4848, 0x4849,
- /* U+43A8 */ 0x4850, 0x4851, 0x4852, 0x4853, 0xFE78, 0x4854, 0x4855, 0x4856,
- /* U+43B0 */ 0x4857, 0xFE77, 0x4858, 0x4859, 0x4860, 0x4861, 0x4862, 0x4863,
- /* U+43B8 */ 0x4864, 0x4865, 0x4866, 0x4867, 0x4868, 0x4869, 0x4870, 0x4871,
- /* U+43C0 */ 0x4872, 0x4873, 0x4874, 0x4875, 0x4876, 0x4877, 0x4878, 0x4879,
- /* U+43C8 */ 0x4880, 0x4881, 0x4882, 0x4883, 0x4884, 0x4885, 0x4886, 0x4887,
- /* U+43D0 */ 0x4888, 0x4889, 0x4890, 0x4891, 0x4892, 0x4893, 0x4894, 0x4895,
- /* U+43D8 */ 0x4896, 0x4897, 0x4898, 0x4899, 0x48A0, 0xFE7A, 0x48A1, 0x48A2,
- /* U+43E0 */ 0x48A3, 0x48A4, 0x48A5, 0x48A6, 0x48A7, 0x48A8, 0x48A9, 0x48B0,
- /* U+43E8 */ 0x48B1, 0x48B2, 0x48B3, 0x48B4, 0x48B5, 0x48B6, 0x48B7, 0x48B8,
- /* U+43F0 */ 0x48B9, 0x48C0, 0x48C1, 0x48C2, 0x48C3, 0x48C4, 0x48C5, 0x48C6,
- /* U+43F8 */ 0x48C7, 0x48C8, 0x48C9, 0x48D0, 0x48D1, 0x48D2, 0x48D3, 0x48D4,
- /* U+4400 */ 0x48D5, 0x48D6, 0x48D7, 0x48D8, 0x48D9, 0x48E0, 0x48E1, 0x48E2,
- /* U+4408 */ 0x48E3, 0x48E4, 0x48E5, 0x48E6, 0x48E7, 0x48E8, 0x48E9, 0x48F0,
- /* U+4410 */ 0x48F1, 0x48F2, 0x48F3, 0x48F4, 0x48F5, 0x48F6, 0x48F7, 0x48F8,
- /* U+4418 */ 0x48F9, 0x4900, 0x4901, 0x4902, 0x4903, 0x4904, 0x4905, 0x4906,
- /* U+4420 */ 0x4907, 0x4908, 0x4909, 0x4910, 0x4911, 0x4912, 0x4913, 0x4914,
- /* U+4428 */ 0x4915, 0x4916, 0x4917, 0x4918, 0x4919, 0x4920, 0x4921, 0x4922,
- /* U+4430 */ 0x4923, 0x4924, 0x4925, 0x4926, 0x4927, 0x4928, 0x4929, 0x4930,
- /* U+4438 */ 0x4931, 0x4932, 0x4933, 0x4934, 0x4935, 0x4936, 0x4937, 0x4938,
- /* U+4440 */ 0x4939, 0x4940, 0x4941, 0x4942, 0x4943, 0x4944, 0x4945, 0x4946,
- /* U+4448 */ 0x4947, 0x4948, 0x4949, 0x4950, 0x4951, 0x4952, 0x4953, 0x4954,
- /* U+4450 */ 0x4955, 0x4956, 0x4957, 0x4958, 0x4959, 0x4960, 0x4961, 0x4962,
- /* U+4458 */ 0x4963, 0x4964, 0x4965, 0x4966, 0x4967, 0x4968, 0x4969, 0x4970,
- /* U+4460 */ 0x4971, 0x4972, 0x4973, 0x4974, 0x4975, 0x4976, 0x4977, 0x4978,
- /* U+4468 */ 0x4979, 0x4980, 0x4981, 0x4982, 0x4983, 0x4984, 0x4985, 0x4986,
- /* U+4470 */ 0x4987, 0x4988, 0x4989, 0x4990, 0x4991, 0x4992, 0x4993, 0x4994,
- /* U+4478 */ 0x4995, 0x4996, 0x4997, 0x4998, 0x4999, 0x49A0, 0x49A1, 0x49A2,
- /* U+4480 */ 0x49A3, 0x49A4, 0x49A5, 0x49A6, 0x49A7, 0x49A8, 0x49A9, 0x49B0,
- /* U+4488 */ 0x49B1, 0x49B2, 0x49B3, 0x49B4, 0x49B5, 0x49B6, 0x49B7, 0x49B8,
- /* U+4490 */ 0x49B9, 0x49C0, 0x49C1, 0x49C2, 0x49C3, 0x49C4, 0x49C5, 0x49C6,
- /* U+4498 */ 0x49C7, 0x49C8, 0x49C9, 0x49D0, 0x49D1, 0x49D2, 0x49D3, 0x49D4,
- /* U+44A0 */ 0x49D5, 0x49D6, 0x49D7, 0x49D8, 0x49D9, 0x49E0, 0x49E1, 0x49E2,
- /* U+44A8 */ 0x49E3, 0x49E4, 0x49E5, 0x49E6, 0x49E7, 0x49E8, 0x49E9, 0x49F0,
- /* U+44B0 */ 0x49F1, 0x49F2, 0x49F3, 0x49F4, 0x49F5, 0x49F6, 0x49F7, 0x49F8,
- /* U+44B8 */ 0x49F9, 0x4A00, 0x4A01, 0x4A02, 0x4A03, 0x4A04, 0x4A05, 0x4A06,
- /* U+44C0 */ 0x4A07, 0x4A08, 0x4A09, 0x4A10, 0x4A11, 0x4A12, 0x4A13, 0x4A14,
- /* U+44C8 */ 0x4A15, 0x4A16, 0x4A17, 0x4A18, 0x4A19, 0x4A20, 0x4A21, 0x4A22,
- /* U+44D0 */ 0x4A23, 0x4A24, 0x4A25, 0x4A26, 0x4A27, 0x4A28, 0xFE7B,
- /* Contiguous area: U+464C .. U+478D */
- /* U+464C */ 0xFE7D, 0x4C82, 0x4C83, 0x4C84,
- /* U+4650 */ 0x4C85, 0x4C86, 0x4C87, 0x4C88, 0x4C89, 0x4C90, 0x4C91, 0x4C92,
- /* U+4658 */ 0x4C93, 0x4C94, 0x4C95, 0x4C96, 0x4C97, 0x4C98, 0x4C99, 0x4CA0,
- /* U+4660 */ 0x4CA1, 0xFE7C, 0x4CA2, 0x4CA3, 0x4CA4, 0x4CA5, 0x4CA6, 0x4CA7,
- /* U+4668 */ 0x4CA8, 0x4CA9, 0x4CB0, 0x4CB1, 0x4CB2, 0x4CB3, 0x4CB4, 0x4CB5,
- /* U+4670 */ 0x4CB6, 0x4CB7, 0x4CB8, 0x4CB9, 0x4CC0, 0x4CC1, 0x4CC2, 0x4CC3,
- /* U+4678 */ 0x4CC4, 0x4CC5, 0x4CC6, 0x4CC7, 0x4CC8, 0x4CC9, 0x4CD0, 0x4CD1,
- /* U+4680 */ 0x4CD2, 0x4CD3, 0x4CD4, 0x4CD5, 0x4CD6, 0x4CD7, 0x4CD8, 0x4CD9,
- /* U+4688 */ 0x4CE0, 0x4CE1, 0x4CE2, 0x4CE3, 0x4CE4, 0x4CE5, 0x4CE6, 0x4CE7,
- /* U+4690 */ 0x4CE8, 0x4CE9, 0x4CF0, 0x4CF1, 0x4CF2, 0x4CF3, 0x4CF4, 0x4CF5,
- /* U+4698 */ 0x4CF6, 0x4CF7, 0x4CF8, 0x4CF9, 0x4D00, 0x4D01, 0x4D02, 0x4D03,
- /* U+46A0 */ 0x4D04, 0x4D05, 0x4D06, 0x4D07, 0x4D08, 0x4D09, 0x4D10, 0x4D11,
- /* U+46A8 */ 0x4D12, 0x4D13, 0x4D14, 0x4D15, 0x4D16, 0x4D17, 0x4D18, 0x4D19,
- /* U+46B0 */ 0x4D20, 0x4D21, 0x4D22, 0x4D23, 0x4D24, 0x4D25, 0x4D26, 0x4D27,
- /* U+46B8 */ 0x4D28, 0x4D29, 0x4D30, 0x4D31, 0x4D32, 0x4D33, 0x4D34, 0x4D35,
- /* U+46C0 */ 0x4D36, 0x4D37, 0x4D38, 0x4D39, 0x4D40, 0x4D41, 0x4D42, 0x4D43,
- /* U+46C8 */ 0x4D44, 0x4D45, 0x4D46, 0x4D47, 0x4D48, 0x4D49, 0x4D50, 0x4D51,
- /* U+46D0 */ 0x4D52, 0x4D53, 0x4D54, 0x4D55, 0x4D56, 0x4D57, 0x4D58, 0x4D59,
- /* U+46D8 */ 0x4D60, 0x4D61, 0x4D62, 0x4D63, 0x4D64, 0x4D65, 0x4D66, 0x4D67,
- /* U+46E0 */ 0x4D68, 0x4D69, 0x4D70, 0x4D71, 0x4D72, 0x4D73, 0x4D74, 0x4D75,
- /* U+46E8 */ 0x4D76, 0x4D77, 0x4D78, 0x4D79, 0x4D80, 0x4D81, 0x4D82, 0x4D83,
- /* U+46F0 */ 0x4D84, 0x4D85, 0x4D86, 0x4D87, 0x4D88, 0x4D89, 0x4D90, 0x4D91,
- /* U+46F8 */ 0x4D92, 0x4D93, 0x4D94, 0x4D95, 0x4D96, 0x4D97, 0x4D98, 0x4D99,
- /* U+4700 */ 0x4DA0, 0x4DA1, 0x4DA2, 0x4DA3, 0x4DA4, 0x4DA5, 0x4DA6, 0x4DA7,
- /* U+4708 */ 0x4DA8, 0x4DA9, 0x4DB0, 0x4DB1, 0x4DB2, 0x4DB3, 0x4DB4, 0x4DB5,
- /* U+4710 */ 0x4DB6, 0x4DB7, 0x4DB8, 0x4DB9, 0x4DC0, 0x4DC1, 0x4DC2, 0x4DC3,
- /* U+4718 */ 0x4DC4, 0x4DC5, 0x4DC6, 0x4DC7, 0x4DC8, 0x4DC9, 0x4DD0, 0x4DD1,
- /* U+4720 */ 0x4DD2, 0x4DD3, 0x4DD4, 0xFE80, 0x4DD5, 0x4DD6, 0x4DD7, 0x4DD8,
- /* U+4728 */ 0x4DD9, 0xFE81, 0x4DE0, 0x4DE1, 0x4DE2, 0x4DE3, 0x4DE4, 0x4DE5,
- /* U+4730 */ 0x4DE6, 0x4DE7, 0x4DE8, 0x4DE9, 0x4DF0, 0x4DF1, 0x4DF2, 0x4DF3,
- /* U+4738 */ 0x4DF4, 0x4DF5, 0x4DF6, 0x4DF7, 0x4DF8, 0x4DF9, 0x4E00, 0x4E01,
- /* U+4740 */ 0x4E02, 0x4E03, 0x4E04, 0x4E05, 0x4E06, 0x4E07, 0x4E08, 0x4E09,
- /* U+4748 */ 0x4E10, 0x4E11, 0x4E12, 0x4E13, 0x4E14, 0x4E15, 0x4E16, 0x4E17,
- /* U+4750 */ 0x4E18, 0x4E19, 0x4E20, 0x4E21, 0x4E22, 0x4E23, 0x4E24, 0x4E25,
- /* U+4758 */ 0x4E26, 0x4E27, 0x4E28, 0x4E29, 0x4E30, 0x4E31, 0x4E32, 0x4E33,
- /* U+4760 */ 0x4E34, 0x4E35, 0x4E36, 0x4E37, 0x4E38, 0x4E39, 0x4E40, 0x4E41,
- /* U+4768 */ 0x4E42, 0x4E43, 0x4E44, 0x4E45, 0x4E46, 0x4E47, 0x4E48, 0x4E49,
- /* U+4770 */ 0x4E50, 0x4E51, 0x4E52, 0x4E53, 0x4E54, 0x4E55, 0x4E56, 0x4E57,
- /* U+4778 */ 0x4E58, 0x4E59, 0x4E60, 0x4E61, 0xFE82, 0x4E62, 0x4E63, 0x4E64,
- /* U+4780 */ 0x4E65, 0x4E66, 0x4E67, 0x4E68, 0x4E69, 0x4E70, 0x4E71, 0x4E72,
- /* U+4788 */ 0x4E73, 0x4E74, 0x4E75, 0x4E76, 0x4E77, 0xFE83,
- /* Contiguous area: U+4947 .. U+49B7 */
- /* U+4947 */ 0xFE85,
- /* U+4948 */ 0x5159, 0x5160, 0x5161, 0x5162, 0x5163, 0x5164, 0x5165, 0x5166,
- /* U+4950 */ 0x5167, 0x5168, 0x5169, 0x5170, 0x5171, 0x5172, 0x5173, 0x5174,
- /* U+4958 */ 0x5175, 0x5176, 0x5177, 0x5178, 0x5179, 0x5180, 0x5181, 0x5182,
- /* U+4960 */ 0x5183, 0x5184, 0x5185, 0x5186, 0x5187, 0x5188, 0x5189, 0x5190,
- /* U+4968 */ 0x5191, 0x5192, 0x5193, 0x5194, 0x5195, 0x5196, 0x5197, 0x5198,
- /* U+4970 */ 0x5199, 0x51A0, 0x51A1, 0x51A2, 0x51A3, 0x51A4, 0x51A5, 0x51A6,
- /* U+4978 */ 0x51A7, 0x51A8, 0xFE86, 0x51A9, 0x51B0, 0xFE87, 0x51B1, 0x51B2,
- /* U+4980 */ 0x51B3, 0x51B4, 0xFE88, 0xFE89, 0x51B5, 0xFE8A, 0xFE8B, 0x51B6,
- /* U+4988 */ 0x51B7, 0x51B8, 0x51B9, 0x51C0, 0x51C1, 0x51C2, 0x51C3, 0x51C4,
- /* U+4990 */ 0x51C5, 0x51C6, 0x51C7, 0x51C8, 0x51C9, 0x51D0, 0x51D1, 0x51D2,
- /* U+4998 */ 0x51D3, 0x51D4, 0x51D5, 0xFE8D, 0x51D6, 0x51D7, 0x51D8, 0xFE8C,
- /* U+49A0 */ 0x51D9, 0x51E0, 0x51E1, 0x51E2, 0x51E3, 0x51E4, 0x51E5, 0x51E6,
- /* U+49A8 */ 0x51E7, 0x51E8, 0x51E9, 0x51F0, 0x51F1, 0x51F2, 0x51F3, 0x51F4,
- /* U+49B0 */ 0x51F5, 0x51F6, 0x51F7, 0x51F8, 0x51F9, 0x5200, 0xFE8F, 0xFE8E,
- /* Contiguous area: U+4C77 .. U+9FA5 */
- /* U+4C77 */ 0xFE96,
- /* U+4C78 */ 0x5664, 0x5665, 0x5666, 0x5667, 0x5668, 0x5669, 0x5670, 0x5671,
- /* U+4C80 */ 0x5672, 0x5673, 0x5674, 0x5675, 0x5676, 0x5677, 0x5678, 0x5679,
- /* U+4C88 */ 0x5680, 0x5681, 0x5682, 0x5683, 0x5684, 0x5685, 0x5686, 0x5687,
- /* U+4C90 */ 0x5688, 0x5689, 0x5690, 0x5691, 0x5692, 0x5693, 0x5694, 0x5695,
- /* U+4C98 */ 0x5696, 0x5697, 0x5698, 0x5699, 0x56A0, 0x56A1, 0x56A2, 0xFE93,
- /* U+4CA0 */ 0xFE94, 0xFE95, 0xFE97, 0xFE92, 0x56A3, 0x56A4, 0x56A5, 0x56A6,
- /* U+4CA8 */ 0x56A7, 0x56A8, 0x56A9, 0x56B0, 0x56B1, 0x56B2, 0x56B3, 0x56B4,
- /* U+4CB0 */ 0x56B5, 0x56B6, 0x56B7, 0x56B8, 0x56B9, 0x56C0, 0x56C1, 0x56C2,
- /* U+4CB8 */ 0x56C3, 0x56C4, 0x56C5, 0x56C6, 0x56C7, 0x56C8, 0x56C9, 0x56D0,
- /* U+4CC0 */ 0x56D1, 0x56D2, 0x56D3, 0x56D4, 0x56D5, 0x56D6, 0x56D7, 0x56D8,
- /* U+4CC8 */ 0x56D9, 0x56E0, 0x56E1, 0x56E2, 0x56E3, 0x56E4, 0x56E5, 0x56E6,
- /* U+4CD0 */ 0x56E7, 0x56E8, 0x56E9, 0x56F0, 0x56F1, 0x56F2, 0x56F3, 0x56F4,
- /* U+4CD8 */ 0x56F5, 0x56F6, 0x56F7, 0x56F8, 0x56F9, 0x5700, 0x5701, 0x5702,
- /* U+4CE0 */ 0x5703, 0x5704, 0x5705, 0x5706, 0x5707, 0x5708, 0x5709, 0x5710,
- /* U+4CE8 */ 0x5711, 0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717, 0x5718,
- /* U+4CF0 */ 0x5719, 0x5720, 0x5721, 0x5722, 0x5723, 0x5724, 0x5725, 0x5726,
- /* U+4CF8 */ 0x5727, 0x5728, 0x5729, 0x5730, 0x5731, 0x5732, 0x5733, 0x5734,
- /* U+4D00 */ 0x5735, 0x5736, 0x5737, 0x5738, 0x5739, 0x5740, 0x5741, 0x5742,
- /* U+4D08 */ 0x5743, 0x5744, 0x5745, 0x5746, 0x5747, 0x5748, 0x5749, 0x5750,
- /* U+4D10 */ 0x5751, 0x5752, 0x5753, 0xFE98, 0xFE99, 0xFE9A, 0xFE9B, 0xFE9C,
- /* U+4D18 */ 0xFE9D, 0xFE9E, 0x5754, 0x5755, 0x5756, 0x5757, 0x5758, 0x5759,
- /* U+4D20 */ 0x5760, 0x5761, 0x5762, 0x5763, 0x5764, 0x5765, 0x5766, 0x5767,
- /* U+4D28 */ 0x5768, 0x5769, 0x5770, 0x5771, 0x5772, 0x5773, 0x5774, 0x5775,
- /* U+4D30 */ 0x5776, 0x5777, 0x5778, 0x5779, 0x5780, 0x5781, 0x5782, 0x5783,
- /* U+4D38 */ 0x5784, 0x5785, 0x5786, 0x5787, 0x5788, 0x5789, 0x5790, 0x5791,
- /* U+4D40 */ 0x5792, 0x5793, 0x5794, 0x5795, 0x5796, 0x5797, 0x5798, 0x5799,
- /* U+4D48 */ 0x57A0, 0x57A1, 0x57A2, 0x57A3, 0x57A4, 0x57A5, 0x57A6, 0x57A7,
- /* U+4D50 */ 0x57A8, 0x57A9, 0x57B0, 0x57B1, 0x57B2, 0x57B3, 0x57B4, 0x57B5,
- /* U+4D58 */ 0x57B6, 0x57B7, 0x57B8, 0x57B9, 0x57C0, 0x57C1, 0x57C2, 0x57C3,
- /* U+4D60 */ 0x57C4, 0x57C5, 0x57C6, 0x57C7, 0x57C8, 0x57C9, 0x57D0, 0x57D1,
- /* U+4D68 */ 0x57D2, 0x57D3, 0x57D4, 0x57D5, 0x57D6, 0x57D7, 0x57D8, 0x57D9,
- /* U+4D70 */ 0x5800, 0x5801, 0x5802, 0x5803, 0x5804, 0x5805, 0x5806, 0x5807,
- /* U+4D78 */ 0x5808, 0x5809, 0x5810, 0x5811, 0x5812, 0x5813, 0x5814, 0x5815,
- /* U+4D80 */ 0x5816, 0x5817, 0x5818, 0x5819, 0x5820, 0x5821, 0x5822, 0x5823,
- /* U+4D88 */ 0x5824, 0x5825, 0x5826, 0x5827, 0x5828, 0x5829, 0x5830, 0x5831,
- /* U+4D90 */ 0x5832, 0x5833, 0x5834, 0x5835, 0x5836, 0x5837, 0x5838, 0x5839,
- /* U+4D98 */ 0x5840, 0x5841, 0x5842, 0x5843, 0x5844, 0x5845, 0x5846, 0x5847,
- /* U+4DA0 */ 0x5848, 0x5849, 0x5850, 0x5851, 0x5852, 0x5853, 0x5854, 0x5855,
- /* U+4DA8 */ 0x5856, 0x5857, 0x5858, 0x5859, 0x5860, 0x5861, 0xFE9F, 0x5862,
- /* U+4DB0 */ 0x5863, 0x5864, 0x5865, 0x5866, 0x5867, 0x5868, 0x5869, 0x5870,
- /* U+4DB8 */ 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877, 0x5878,
- /* U+4DC0 */ 0x5879, 0x5880, 0x5881, 0x5882, 0x5883, 0x5884, 0x5885, 0x5886,
- /* U+4DC8 */ 0x5887, 0x5888, 0x5889, 0x5890, 0x5891, 0x5892, 0x5893, 0x5894,
- /* U+4DD0 */ 0x5895, 0x5896, 0x5897, 0x5898, 0x5899, 0x58A0, 0x58A1, 0x58A2,
- /* U+4DD8 */ 0x58A3, 0x58A4, 0x58A5, 0x58A6, 0x58A7, 0x58A8, 0x58A9, 0x58B0,
- /* U+4DE0 */ 0x58B1, 0x58B2, 0x58B3, 0x58B4, 0x58B5, 0x58B6, 0x58B7, 0x58B8,
- /* U+4DE8 */ 0x58B9, 0x58C0, 0x58C1, 0x58C2, 0x58C3, 0x58C4, 0x58C5, 0x58C6,
- /* U+4DF0 */ 0x58C7, 0x58C8, 0x58C9, 0x58D0, 0x58D1, 0x58D2, 0x58D3, 0x58D4,
- /* U+4DF8 */ 0x58D5, 0x58D6, 0x58D7, 0x58D8, 0x58D9, 0x58E0, 0x58E1, 0x58E2,
- /* U+4E00 */ 0xD2BB, 0xB6A1, 0x8140, 0xC6DF, 0x8141, 0x8142, 0x8143, 0xCDF2,
- /* U+4E08 */ 0xD5C9, 0xC8FD, 0xC9CF, 0xCFC2, 0xD8A2, 0xB2BB, 0xD3EB, 0x8144,
- /* U+4E10 */ 0xD8A4, 0xB3F3, 0x8145, 0xD7A8, 0xC7D2, 0xD8A7, 0xCAC0, 0x8146,
- /* U+4E18 */ 0xC7F0, 0xB1FB, 0xD2B5, 0xB4D4, 0xB6AB, 0xCBBF, 0xD8A9, 0x8147,
- /* U+4E20 */ 0x8148, 0x8149, 0xB6AA, 0x814A, 0xC1BD, 0xD1CF, 0x814B, 0xC9A5,
- /* U+4E28 */ 0xD8AD, 0x814C, 0xB8F6, 0xD1BE, 0xE3DC, 0xD6D0, 0x814D, 0x814E,
- /* U+4E30 */ 0xB7E1, 0x814F, 0xB4AE, 0x8150, 0xC1D9, 0x8151, 0xD8BC, 0x8152,
- /* U+4E38 */ 0xCDE8, 0xB5A4, 0xCEAA, 0xD6F7, 0x8153, 0xC0F6, 0xBED9, 0xD8AF,
- /* U+4E40 */ 0x8154, 0x8155, 0x8156, 0xC4CB, 0x8157, 0xBEC3, 0x8158, 0xD8B1,
- /* U+4E48 */ 0xC3B4, 0xD2E5, 0x8159, 0xD6AE, 0xCEDA, 0xD5A7, 0xBAF5, 0xB7A6,
- /* U+4E50 */ 0xC0D6, 0x815A, 0xC6B9, 0xC5D2, 0xC7C7, 0x815B, 0xB9D4, 0x815C,
- /* U+4E58 */ 0xB3CB, 0xD2D2, 0x815D, 0x815E, 0xD8BF, 0xBEC5, 0xC6F2, 0xD2B2,
- /* U+4E60 */ 0xCFB0, 0xCFE7, 0x815F, 0x8160, 0x8161, 0x8162, 0xCAE9, 0x8163,
- /* U+4E68 */ 0x8164, 0xD8C0, 0x8165, 0x8166, 0x8167, 0x8168, 0x8169, 0x816A,
- /* U+4E70 */ 0xC2F2, 0xC2D2, 0x816B, 0xC8E9, 0x816C, 0x816D, 0x816E, 0x816F,
- /* U+4E78 */ 0x8170, 0x8171, 0x8172, 0x8173, 0x8174, 0x8175, 0xC7AC, 0x8176,
- /* U+4E80 */ 0x8177, 0x8178, 0x8179, 0x817A, 0x817B, 0x817C, 0xC1CB, 0x817D,
- /* U+4E88 */ 0xD3E8, 0xD5F9, 0x817E, 0xCAC2, 0xB6FE, 0xD8A1, 0xD3DA, 0xBFF7,
- /* U+4E90 */ 0x8180, 0xD4C6, 0xBBA5, 0xD8C1, 0xCEE5, 0xBEAE, 0x8181, 0x8182,
- /* U+4E98 */ 0xD8A8, 0x8183, 0xD1C7, 0xD0A9, 0x8184, 0x8185, 0x8186, 0xD8BD,
- /* U+4EA0 */ 0xD9EF, 0xCDF6, 0xBFBA, 0x8187, 0xBDBB, 0xBAA5, 0xD2E0, 0xB2FA,
- /* U+4EA8 */ 0xBAE0, 0xC4B6, 0x8188, 0xCFED, 0xBEA9, 0xCDA4, 0xC1C1, 0x8189,
- /* U+4EB0 */ 0x818A, 0x818B, 0xC7D7, 0xD9F1, 0x818C, 0xD9F4, 0x818D, 0x818E,
- /* U+4EB8 */ 0x818F, 0x8190, 0xC8CB, 0xD8E9, 0x8191, 0x8192, 0x8193, 0xD2DA,
- /* U+4EC0 */ 0xCAB2, 0xC8CA, 0xD8EC, 0xD8EA, 0xD8C6, 0xBDF6, 0xC6CD, 0xB3F0,
- /* U+4EC8 */ 0x8194, 0xD8EB, 0xBDF1, 0xBDE9, 0x8195, 0xC8D4, 0xB4D3, 0x8196,
- /* U+4ED0 */ 0x8197, 0xC2D8, 0x8198, 0xB2D6, 0xD7D0, 0xCACB, 0xCBFB, 0xD5CC,
- /* U+4ED8 */ 0xB8B6, 0xCFC9, 0x8199, 0x819A, 0x819B, 0xD9DA, 0xD8F0, 0xC7AA,
- /* U+4EE0 */ 0x819C, 0xD8EE, 0x819D, 0xB4FA, 0xC1EE, 0xD2D4, 0x819E, 0x819F,
- /* U+4EE8 */ 0xD8ED, 0x81A0, 0xD2C7, 0xD8EF, 0xC3C7, 0x81A1, 0x81A2, 0x81A3,
- /* U+4EF0 */ 0xD1F6, 0x81A4, 0xD6D9, 0xD8F2, 0x81A5, 0xD8F5, 0xBCFE, 0xBCDB,
- /* U+4EF8 */ 0x81A6, 0x81A7, 0x81A8, 0xC8CE, 0x81A9, 0xB7DD, 0x81AA, 0xB7C2,
- /* U+4F00 */ 0x81AB, 0xC6F3, 0x81AC, 0x81AD, 0x81AE, 0x81AF, 0x81B0, 0x81B1,
- /* U+4F08 */ 0x81B2, 0xD8F8, 0xD2C1, 0x81B3, 0x81B4, 0xCEE9, 0xBCBF, 0xB7FC,
- /* U+4F10 */ 0xB7A5, 0xD0DD, 0x81B5, 0x81B6, 0x81B7, 0x81B8, 0x81B9, 0xD6DA,
- /* U+4F18 */ 0xD3C5, 0xBBEF, 0xBBE1, 0xD8F1, 0x81BA, 0x81BB, 0xC9A1, 0xCEB0,
- /* U+4F20 */ 0xB4AB, 0x81BC, 0xD8F3, 0x81BD, 0xC9CB, 0xD8F6, 0xC2D7, 0xD8F7,
- /* U+4F28 */ 0x81BE, 0x81BF, 0xCEB1, 0xD8F9, 0x81C0, 0x81C1, 0x81C2, 0xB2AE,
- /* U+4F30 */ 0xB9C0, 0x81C3, 0xD9A3, 0x81C4, 0xB0E9, 0x81C5, 0xC1E6, 0x81C6,
- /* U+4F38 */ 0xC9EC, 0x81C7, 0xCBC5, 0x81C8, 0xCBC6, 0xD9A4, 0x81C9, 0x81CA,
- /* U+4F40 */ 0x81CB, 0x81CC, 0x81CD, 0xB5E8, 0x81CE, 0x81CF, 0xB5AB, 0x81D0,
- /* U+4F48 */ 0x81D1, 0x81D2, 0x81D3, 0x81D4, 0x81D5, 0xCEBB, 0xB5CD, 0xD7A1,
- /* U+4F50 */ 0xD7F4, 0xD3D3, 0x81D6, 0xCCE5, 0x81D7, 0xBACE, 0x81D8, 0xD9A2,
- /* U+4F58 */ 0xD9DC, 0xD3E0, 0xD8FD, 0xB7F0, 0xD7F7, 0xD8FE, 0xD8FA, 0xD9A1,
- /* U+4F60 */ 0xC4E3, 0x81D9, 0x81DA, 0xD3B6, 0xD8F4, 0xD9DD, 0x81DB, 0xD8FB,
- /* U+4F68 */ 0x81DC, 0xC5E5, 0x81DD, 0x81DE, 0xC0D0, 0x81DF, 0x81E0, 0xD1F0,
- /* U+4F70 */ 0xB0DB, 0x81E1, 0x81E2, 0xBCD1, 0xD9A6, 0x81E3, 0xD9A5, 0x81E4,
- /* U+4F78 */ 0x81E5, 0x81E6, 0x81E7, 0xD9AC, 0xD9AE, 0x81E8, 0xD9AB, 0xCAB9,
- /* U+4F80 */ 0x81E9, 0x81EA, 0x81EB, 0xD9A9, 0xD6B6, 0x81EC, 0x81ED, 0x81EE,
- /* U+4F88 */ 0xB3DE, 0xD9A8, 0x81EF, 0xC0FD, 0x81F0, 0xCACC, 0x81F1, 0xD9AA,
- /* U+4F90 */ 0x81F2, 0xD9A7, 0x81F3, 0x81F4, 0xD9B0, 0x81F5, 0x81F6, 0xB6B1,
- /* U+4F98 */ 0x81F7, 0x81F8, 0x81F9, 0xB9A9, 0x81FA, 0xD2C0, 0x81FB, 0x81FC,
- /* U+4FA0 */ 0xCFC0, 0x81FD, 0x81FE, 0xC2C2, 0x8240, 0xBDC4, 0xD5EC, 0xB2E0,
- /* U+4FA8 */ 0xC7C8, 0xBFEB, 0xD9AD, 0x8241, 0xD9AF, 0x8242, 0xCEEA, 0xBAEE,
- /* U+4FB0 */ 0x8243, 0x8244, 0x8245, 0x8246, 0x8247, 0xC7D6, 0x8248, 0x8249,
- /* U+4FB8 */ 0x824A, 0x824B, 0x824C, 0x824D, 0x824E, 0x824F, 0x8250, 0xB1E3,
- /* U+4FC0 */ 0x8251, 0x8252, 0x8253, 0xB4D9, 0xB6ED, 0xD9B4, 0x8254, 0x8255,
- /* U+4FC8 */ 0x8256, 0x8257, 0xBFA1, 0x8258, 0x8259, 0x825A, 0xD9DE, 0xC7CE,
- /* U+4FD0 */ 0xC0FE, 0xD9B8, 0x825B, 0x825C, 0x825D, 0x825E, 0x825F, 0xCBD7,
- /* U+4FD8 */ 0xB7FD, 0x8260, 0xD9B5, 0x8261, 0xD9B7, 0xB1A3, 0xD3E1, 0xD9B9,
- /* U+4FE0 */ 0x8262, 0xD0C5, 0x8263, 0xD9B6, 0x8264, 0x8265, 0xD9B1, 0x8266,
- /* U+4FE8 */ 0xD9B2, 0xC1A9, 0xD9B3, 0x8267, 0x8268, 0xBCF3, 0xD0DE, 0xB8A9,
- /* U+4FF0 */ 0x8269, 0xBEE3, 0x826A, 0xD9BD, 0x826B, 0x826C, 0x826D, 0x826E,
- /* U+4FF8 */ 0xD9BA, 0x826F, 0xB0B3, 0x8270, 0x8271, 0x8272, 0xD9C2, 0x8273,
- /* U+5000 */ 0x8274, 0x8275, 0x8276, 0x8277, 0x8278, 0x8279, 0x827A, 0x827B,
- /* U+5008 */ 0x827C, 0x827D, 0x827E, 0x8280, 0xD9C4, 0xB1B6, 0x8281, 0xD9BF,
- /* U+5010 */ 0x8282, 0x8283, 0xB5B9, 0x8284, 0xBEF3, 0x8285, 0x8286, 0x8287,
- /* U+5018 */ 0xCCC8, 0xBAF2, 0xD2D0, 0x8288, 0xD9C3, 0x8289, 0x828A, 0xBDE8,
- /* U+5020 */ 0x828B, 0xB3AB, 0x828C, 0x828D, 0x828E, 0xD9C5, 0xBEEB, 0x828F,
- /* U+5028 */ 0xD9C6, 0xD9BB, 0xC4DF, 0x8290, 0xD9BE, 0xD9C1, 0xD9C0, 0x8291,
- /* U+5030 */ 0x8292, 0x8293, 0x8294, 0x8295, 0x8296, 0x8297, 0x8298, 0x8299,
- /* U+5038 */ 0x829A, 0x829B, 0xD5AE, 0x829C, 0xD6B5, 0x829D, 0xC7E3, 0x829E,
- /* U+5040 */ 0x829F, 0x82A0, 0x82A1, 0xD9C8, 0x82A2, 0x82A3, 0x82A4, 0xBCD9,
- /* U+5048 */ 0xD9CA, 0x82A5, 0x82A6, 0x82A7, 0xD9BC, 0x82A8, 0xD9CB, 0xC6AB,
- /* U+5050 */ 0x82A9, 0x82AA, 0x82AB, 0x82AC, 0x82AD, 0xD9C9, 0x82AE, 0x82AF,
- /* U+5058 */ 0x82B0, 0x82B1, 0xD7F6, 0x82B2, 0xCDA3, 0x82B3, 0x82B4, 0x82B5,
- /* U+5060 */ 0x82B6, 0x82B7, 0x82B8, 0x82B9, 0x82BA, 0xBDA1, 0x82BB, 0x82BC,
- /* U+5068 */ 0x82BD, 0x82BE, 0x82BF, 0x82C0, 0xD9CC, 0x82C1, 0x82C2, 0x82C3,
- /* U+5070 */ 0x82C4, 0x82C5, 0x82C6, 0x82C7, 0x82C8, 0x82C9, 0xC5BC, 0xCDB5,
- /* U+5078 */ 0x82CA, 0x82CB, 0x82CC, 0xD9CD, 0x82CD, 0x82CE, 0xD9C7, 0xB3A5,
- /* U+5080 */ 0xBFFE, 0x82CF, 0x82D0, 0x82D1, 0x82D2, 0xB8B5, 0x82D3, 0x82D4,
- /* U+5088 */ 0xC0FC, 0x82D5, 0x82D6, 0x82D7, 0x82D8, 0xB0F8, 0x82D9, 0x82DA,
- /* U+5090 */ 0x82DB, 0x82DC, 0x82DD, 0x82DE, 0x82DF, 0x82E0, 0x82E1, 0x82E2,
- /* U+5098 */ 0x82E3, 0x82E4, 0x82E5, 0x82E6, 0x82E7, 0x82E8, 0x82E9, 0x82EA,
- /* U+50A0 */ 0x82EB, 0x82EC, 0x82ED, 0xB4F6, 0x82EE, 0xD9CE, 0x82EF, 0xD9CF,
- /* U+50A8 */ 0xB4A2, 0xD9D0, 0x82F0, 0x82F1, 0xB4DF, 0x82F2, 0x82F3, 0x82F4,
- /* U+50B0 */ 0x82F5, 0x82F6, 0xB0C1, 0x82F7, 0x82F8, 0x82F9, 0x82FA, 0x82FB,
- /* U+50B8 */ 0x82FC, 0x82FD, 0xD9D1, 0xC9B5, 0x82FE, 0x8340, 0x8341, 0x8342,
- /* U+50C0 */ 0x8343, 0x8344, 0x8345, 0x8346, 0x8347, 0x8348, 0x8349, 0x834A,
- /* U+50C8 */ 0x834B, 0x834C, 0x834D, 0x834E, 0x834F, 0x8350, 0x8351, 0xCFF1,
- /* U+50D0 */ 0x8352, 0x8353, 0x8354, 0x8355, 0x8356, 0x8357, 0xD9D2, 0x8358,
- /* U+50D8 */ 0x8359, 0x835A, 0xC1C5, 0x835B, 0x835C, 0x835D, 0x835E, 0x835F,
- /* U+50E0 */ 0x8360, 0x8361, 0x8362, 0x8363, 0x8364, 0x8365, 0xD9D6, 0xC9AE,
- /* U+50E8 */ 0x8366, 0x8367, 0x8368, 0x8369, 0xD9D5, 0xD9D4, 0xD9D7, 0x836A,
- /* U+50F0 */ 0x836B, 0x836C, 0x836D, 0xCBDB, 0x836E, 0xBDA9, 0x836F, 0x8370,
- /* U+50F8 */ 0x8371, 0x8372, 0x8373, 0xC6A7, 0x8374, 0x8375, 0x8376, 0x8377,
- /* U+5100 */ 0x8378, 0x8379, 0x837A, 0x837B, 0x837C, 0x837D, 0xD9D3, 0xD9D8,
- /* U+5108 */ 0x837E, 0x8380, 0x8381, 0xD9D9, 0x8382, 0x8383, 0x8384, 0x8385,
- /* U+5110 */ 0x8386, 0x8387, 0xC8E5, 0x8388, 0x8389, 0x838A, 0x838B, 0x838C,
- /* U+5118 */ 0x838D, 0x838E, 0x838F, 0x8390, 0x8391, 0x8392, 0x8393, 0x8394,
- /* U+5120 */ 0x8395, 0xC0DC, 0x8396, 0x8397, 0x8398, 0x8399, 0x839A, 0x839B,
- /* U+5128 */ 0x839C, 0x839D, 0x839E, 0x839F, 0x83A0, 0x83A1, 0x83A2, 0x83A3,
- /* U+5130 */ 0x83A4, 0x83A5, 0x83A6, 0x83A7, 0x83A8, 0x83A9, 0x83AA, 0x83AB,
- /* U+5138 */ 0x83AC, 0x83AD, 0x83AE, 0x83AF, 0x83B0, 0x83B1, 0x83B2, 0xB6F9,
- /* U+5140 */ 0xD8A3, 0xD4CA, 0x83B3, 0xD4AA, 0xD0D6, 0xB3E4, 0xD5D7, 0x83B4,
- /* U+5148 */ 0xCFC8, 0xB9E2, 0x83B5, 0xBFCB, 0x83B6, 0xC3E2, 0x83B7, 0x83B8,
- /* U+5150 */ 0x83B9, 0xB6D2, 0x83BA, 0x83BB, 0xCDC3, 0xD9EE, 0xD9F0, 0x83BC,
- /* U+5158 */ 0x83BD, 0x83BE, 0xB5B3, 0x83BF, 0xB6B5, 0x83C0, 0x83C1, 0x83C2,
- /* U+5160 */ 0x83C3, 0x83C4, 0xBEA4, 0x83C5, 0x83C6, 0xC8EB, 0x83C7, 0x83C8,
- /* U+5168 */ 0xC8AB, 0x83C9, 0x83CA, 0xB0CB, 0xB9AB, 0xC1F9, 0xD9E2, 0x83CB,
- /* U+5170 */ 0xC0BC, 0xB9B2, 0x83CC, 0xB9D8, 0xD0CB, 0xB1F8, 0xC6E4, 0xBEDF,
- /* U+5178 */ 0xB5E4, 0xD7C8, 0x83CD, 0xD1F8, 0xBCE6, 0xCADE, 0x83CE, 0x83CF,
- /* U+5180 */ 0xBCBD, 0xD9E6, 0xD8E7, 0x83D0, 0x83D1, 0xC4DA, 0x83D2, 0x83D3,
- /* U+5188 */ 0xB8D4, 0xC8BD, 0x83D4, 0x83D5, 0xB2E1, 0xD4D9, 0x83D6, 0x83D7,
- /* U+5190 */ 0x83D8, 0x83D9, 0xC3B0, 0x83DA, 0x83DB, 0xC3E1, 0xDAA2, 0xC8DF,
- /* U+5198 */ 0x83DC, 0xD0B4, 0x83DD, 0xBEFC, 0xC5A9, 0x83DE, 0x83DF, 0x83E0,
- /* U+51A0 */ 0xB9DA, 0x83E1, 0xDAA3, 0x83E2, 0xD4A9, 0xDAA4, 0x83E3, 0x83E4,
- /* U+51A8 */ 0x83E5, 0x83E6, 0x83E7, 0xD9FB, 0xB6AC, 0x83E8, 0x83E9, 0xB7EB,
- /* U+51B0 */ 0xB1F9, 0xD9FC, 0xB3E5, 0xBEF6, 0x83EA, 0xBFF6, 0xD2B1, 0xC0E4,
- /* U+51B8 */ 0x83EB, 0x83EC, 0x83ED, 0xB6B3, 0xD9FE, 0xD9FD, 0x83EE, 0x83EF,
- /* U+51C0 */ 0xBEBB, 0x83F0, 0x83F1, 0x83F2, 0xC6E0, 0x83F3, 0xD7BC, 0xDAA1,
- /* U+51C8 */ 0x83F4, 0xC1B9, 0x83F5, 0xB5F2, 0xC1E8, 0x83F6, 0x83F7, 0xBCF5,
- /* U+51D0 */ 0x83F8, 0xB4D5, 0x83F9, 0x83FA, 0x83FB, 0x83FC, 0x83FD, 0x83FE,
- /* U+51D8 */ 0x8440, 0x8441, 0x8442, 0xC1DD, 0x8443, 0xC4FD, 0x8444, 0x8445,
- /* U+51E0 */ 0xBCB8, 0xB7B2, 0x8446, 0x8447, 0xB7EF, 0x8448, 0x8449, 0x844A,
- /* U+51E8 */ 0x844B, 0x844C, 0x844D, 0xD9EC, 0x844E, 0xC6BE, 0x844F, 0xBFAD,
- /* U+51F0 */ 0xBBCB, 0x8450, 0x8451, 0xB5CA, 0x8452, 0xDBC9, 0xD0D7, 0x8453,
- /* U+51F8 */ 0xCDB9, 0xB0BC, 0xB3F6, 0xBBF7, 0xDBCA, 0xBAAF, 0x8454, 0xD4E4,
- /* U+5200 */ 0xB5B6, 0xB5F3, 0xD8D6, 0xC8D0, 0x8455, 0x8456, 0xB7D6, 0xC7D0,
- /* U+5208 */ 0xD8D7, 0x8457, 0xBFAF, 0x8458, 0x8459, 0xDBBB, 0xD8D8, 0x845A,
- /* U+5210 */ 0x845B, 0xD0CC, 0xBBAE, 0x845C, 0x845D, 0x845E, 0xEBBE, 0xC1D0,
- /* U+5218 */ 0xC1F5, 0xD4F2, 0xB8D5, 0xB4B4, 0x845F, 0xB3F5, 0x8460, 0x8461,
- /* U+5220 */ 0xC9BE, 0x8462, 0x8463, 0x8464, 0xC5D0, 0x8465, 0x8466, 0x8467,
- /* U+5228 */ 0xC5D9, 0xC0FB, 0x8468, 0xB1F0, 0x8469, 0xD8D9, 0xB9CE, 0x846A,
- /* U+5230 */ 0xB5BD, 0x846B, 0x846C, 0xD8DA, 0x846D, 0x846E, 0xD6C6, 0xCBA2,
- /* U+5238 */ 0xC8AF, 0xC9B2, 0xB4CC, 0xBFCC, 0x846F, 0xB9F4, 0x8470, 0xD8DB,
- /* U+5240 */ 0xD8DC, 0xB6E7, 0xBCC1, 0xCCEA, 0x8471, 0x8472, 0x8473, 0x8474,
- /* U+5248 */ 0x8475, 0x8476, 0xCFF7, 0x8477, 0xD8DD, 0xC7B0, 0x8478, 0x8479,
- /* U+5250 */ 0xB9D0, 0xBDA3, 0x847A, 0x847B, 0xCCDE, 0x847C, 0xC6CA, 0x847D,
- /* U+5258 */ 0x847E, 0x8480, 0x8481, 0x8482, 0xD8E0, 0x8483, 0xD8DE, 0x8484,
- /* U+5260 */ 0x8485, 0xD8DF, 0x8486, 0x8487, 0x8488, 0xB0FE, 0x8489, 0xBEE7,
- /* U+5268 */ 0x848A, 0xCAA3, 0xBCF4, 0x848B, 0x848C, 0x848D, 0x848E, 0xB8B1,
- /* U+5270 */ 0x848F, 0x8490, 0xB8EE, 0x8491, 0x8492, 0x8493, 0x8494, 0x8495,
- /* U+5278 */ 0x8496, 0x8497, 0x8498, 0x8499, 0x849A, 0xD8E2, 0x849B, 0xBDCB,
- /* U+5280 */ 0x849C, 0xD8E4, 0xD8E3, 0x849D, 0x849E, 0x849F, 0x84A0, 0x84A1,
- /* U+5288 */ 0xC5FC, 0x84A2, 0x84A3, 0x84A4, 0x84A5, 0x84A6, 0x84A7, 0x84A8,
- /* U+5290 */ 0xD8E5, 0x84A9, 0x84AA, 0xD8E6, 0x84AB, 0x84AC, 0x84AD, 0x84AE,
- /* U+5298 */ 0x84AF, 0x84B0, 0x84B1, 0xC1A6, 0x84B2, 0xC8B0, 0xB0EC, 0xB9A6,
- /* U+52A0 */ 0xBCD3, 0xCEF1, 0xDBBD, 0xC1D3, 0x84B3, 0x84B4, 0x84B5, 0x84B6,
- /* U+52A8 */ 0xB6AF, 0xD6FA, 0xC5AC, 0xBDD9, 0xDBBE, 0xDBBF, 0x84B7, 0x84B8,
- /* U+52B0 */ 0x84B9, 0xC0F8, 0xBEA2, 0xC0CD, 0x84BA, 0x84BB, 0x84BC, 0x84BD,
- /* U+52B8 */ 0x84BE, 0x84BF, 0x84C0, 0x84C1, 0x84C2, 0x84C3, 0xDBC0, 0xCAC6,
- /* U+52C0 */ 0x84C4, 0x84C5, 0x84C6, 0xB2AA, 0x84C7, 0x84C8, 0x84C9, 0xD3C2,
- /* U+52C8 */ 0x84CA, 0xC3E3, 0x84CB, 0xD1AB, 0x84CC, 0x84CD, 0x84CE, 0x84CF,
- /* U+52D0 */ 0xDBC2, 0x84D0, 0xC0D5, 0x84D1, 0x84D2, 0x84D3, 0xDBC3, 0x84D4,
- /* U+52D8 */ 0xBFB1, 0x84D5, 0x84D6, 0x84D7, 0x84D8, 0x84D9, 0x84DA, 0xC4BC,
- /* U+52E0 */ 0x84DB, 0x84DC, 0x84DD, 0x84DE, 0xC7DA, 0x84DF, 0x84E0, 0x84E1,
- /* U+52E8 */ 0x84E2, 0x84E3, 0x84E4, 0x84E5, 0x84E6, 0x84E7, 0x84E8, 0x84E9,
- /* U+52F0 */ 0xDBC4, 0x84EA, 0x84EB, 0x84EC, 0x84ED, 0x84EE, 0x84EF, 0x84F0,
- /* U+52F8 */ 0x84F1, 0xD9E8, 0xC9D7, 0x84F2, 0x84F3, 0x84F4, 0xB9B4, 0xCEF0,
- /* U+5300 */ 0xD4C8, 0x84F5, 0x84F6, 0x84F7, 0x84F8, 0xB0FC, 0xB4D2, 0x84F9,
- /* U+5308 */ 0xD0D9, 0x84FA, 0x84FB, 0x84FC, 0x84FD, 0xD9E9, 0x84FE, 0xDECB,
- /* U+5310 */ 0xD9EB, 0x8540, 0x8541, 0x8542, 0x8543, 0xD8B0, 0xBBAF, 0xB1B1,
- /* U+5318 */ 0x8544, 0xB3D7, 0xD8CE, 0x8545, 0x8546, 0xD4D1, 0x8547, 0x8548,
- /* U+5320 */ 0xBDB3, 0xBFEF, 0x8549, 0xCFBB, 0x854A, 0x854B, 0xD8D0, 0x854C,
- /* U+5328 */ 0x854D, 0x854E, 0xB7CB, 0x854F, 0x8550, 0x8551, 0xD8D1, 0x8552,
- /* U+5330 */ 0x8553, 0x8554, 0x8555, 0x8556, 0x8557, 0x8558, 0x8559, 0x855A,
- /* U+5338 */ 0x855B, 0xC6A5, 0xC7F8, 0xD2BD, 0x855C, 0x855D, 0xD8D2, 0xC4E4,
- /* U+5340 */ 0x855E, 0xCAAE, 0x855F, 0xC7A7, 0x8560, 0xD8A6, 0x8561, 0xC9FD,
- /* U+5348 */ 0xCEE7, 0xBBDC, 0xB0EB, 0x8562, 0x8563, 0x8564, 0xBBAA, 0xD0AD,
- /* U+5350 */ 0x8565, 0xB1B0, 0xD7E4, 0xD7BF, 0x8566, 0xB5A5, 0xC2F4, 0xC4CF,
- /* U+5358 */ 0x8567, 0x8568, 0xB2A9, 0x8569, 0xB2B7, 0x856A, 0xB1E5, 0xDFB2,
- /* U+5360 */ 0xD5BC, 0xBFA8, 0xC2AC, 0xD8D5, 0xC2B1, 0x856B, 0xD8D4, 0xCED4,
- /* U+5368 */ 0x856C, 0xDAE0, 0x856D, 0xCEC0, 0x856E, 0x856F, 0xD8B4, 0xC3AE,
- /* U+5370 */ 0xD3A1, 0xCEA3, 0x8570, 0xBCB4, 0xC8B4, 0xC2D1, 0x8571, 0xBEED,
- /* U+5378 */ 0xD0B6, 0x8572, 0xDAE1, 0x8573, 0x8574, 0x8575, 0x8576, 0xC7E4,
- /* U+5380 */ 0x8577, 0x8578, 0xB3A7, 0x8579, 0xB6F2, 0xCCFC, 0xC0FA, 0x857A,
- /* U+5388 */ 0x857B, 0xC0F7, 0x857C, 0xD1B9, 0xD1E1, 0xD8C7, 0x857D, 0x857E,
- /* U+5390 */ 0x8580, 0x8581, 0x8582, 0x8583, 0x8584, 0xB2DE, 0x8585, 0x8586,
- /* U+5398 */ 0xC0E5, 0x8587, 0xBAF1, 0x8588, 0x8589, 0xD8C8, 0x858A, 0xD4AD,
- /* U+53A0 */ 0x858B, 0x858C, 0xCFE1, 0xD8C9, 0x858D, 0xD8CA, 0xCFC3, 0x858E,
- /* U+53A8 */ 0xB3F8, 0xBEC7, 0x858F, 0x8590, 0x8591, 0x8592, 0xD8CB, 0x8593,
- /* U+53B0 */ 0x8594, 0x8595, 0x8596, 0x8597, 0x8598, 0x8599, 0xDBCC, 0x859A,
- /* U+53B8 */ 0x859B, 0x859C, 0x859D, 0xC8A5, 0x859E, 0x859F, 0x85A0, 0xCFD8,
- /* U+53C0 */ 0x85A1, 0xC8FE, 0xB2CE, 0x85A2, 0x85A3, 0x85A4, 0x85A5, 0x85A6,
- /* U+53C8 */ 0xD3D6, 0xB2E6, 0xBCB0, 0xD3D1, 0xCBAB, 0xB7B4, 0x85A7, 0x85A8,
- /* U+53D0 */ 0x85A9, 0xB7A2, 0x85AA, 0x85AB, 0xCAE5, 0x85AC, 0xC8A1, 0xCADC,
- /* U+53D8 */ 0xB1E4, 0xD0F0, 0x85AD, 0xC5D1, 0x85AE, 0x85AF, 0x85B0, 0xDBC5,
- /* U+53E0 */ 0xB5FE, 0x85B1, 0x85B2, 0xBFDA, 0xB9C5, 0xBEE4, 0xC1ED, 0x85B3,
- /* U+53E8 */ 0xDFB6, 0xDFB5, 0xD6BB, 0xBDD0, 0xD5D9, 0xB0C8, 0xB6A3, 0xBFC9,
- /* U+53F0 */ 0xCCA8, 0xDFB3, 0xCAB7, 0xD3D2, 0x85B4, 0xD8CF, 0xD2B6, 0xBAC5,
- /* U+53F8 */ 0xCBBE, 0xCCBE, 0x85B5, 0xDFB7, 0xB5F0, 0xDFB4, 0x85B6, 0x85B7,
- /* U+5400 */ 0x85B8, 0xD3F5, 0x85B9, 0xB3D4, 0xB8F7, 0x85BA, 0xDFBA, 0x85BB,
- /* U+5408 */ 0xBACF, 0xBCAA, 0xB5F5, 0x85BC, 0xCDAC, 0xC3FB, 0xBAF3, 0xC0F4,
- /* U+5410 */ 0xCDC2, 0xCFF2, 0xDFB8, 0xCFC5, 0x85BD, 0xC2C0, 0xDFB9, 0xC2F0,
- /* U+5418 */ 0x85BE, 0x85BF, 0x85C0, 0xBEFD, 0x85C1, 0xC1DF, 0xCDCC, 0xD2F7,
- /* U+5420 */ 0xB7CD, 0xDFC1, 0x85C2, 0xDFC4, 0x85C3, 0x85C4, 0xB7F1, 0xB0C9,
- /* U+5428 */ 0xB6D6, 0xB7D4, 0x85C5, 0xBAAC, 0xCCFD, 0xBFD4, 0xCBB1, 0xC6F4,
- /* U+5430 */ 0x85C6, 0xD6A8, 0xDFC5, 0x85C7, 0xCEE2, 0xB3B3, 0x85C8, 0x85C9,
- /* U+5438 */ 0xCEFC, 0xB4B5, 0x85CA, 0xCEC7, 0xBAF0, 0x85CB, 0xCEE1, 0x85CC,
- /* U+5440 */ 0xD1BD, 0x85CD, 0x85CE, 0xDFC0, 0x85CF, 0x85D0, 0xB4F4, 0x85D1,
- /* U+5448 */ 0xB3CA, 0x85D2, 0xB8E6, 0xDFBB, 0x85D3, 0x85D4, 0x85D5, 0x85D6,
- /* U+5450 */ 0xC4C5, 0x85D7, 0xDFBC, 0xDFBD, 0xDFBE, 0xC5BB, 0xDFBF, 0xDFC2,
- /* U+5458 */ 0xD4B1, 0xDFC3, 0x85D8, 0xC7BA, 0xCED8, 0x85D9, 0x85DA, 0x85DB,
- /* U+5460 */ 0x85DC, 0x85DD, 0xC4D8, 0x85DE, 0xDFCA, 0x85DF, 0xDFCF, 0x85E0,
- /* U+5468 */ 0xD6DC, 0x85E1, 0x85E2, 0x85E3, 0x85E4, 0x85E5, 0x85E6, 0x85E7,
- /* U+5470 */ 0x85E8, 0xDFC9, 0xDFDA, 0xCEB6, 0x85E9, 0xBAC7, 0xDFCE, 0xDFC8,
- /* U+5478 */ 0xC5DE, 0x85EA, 0x85EB, 0xC9EB, 0xBAF4, 0xC3FC, 0x85EC, 0x85ED,
- /* U+5480 */ 0xBED7, 0x85EE, 0xDFC6, 0x85EF, 0xDFCD, 0x85F0, 0xC5D8, 0x85F1,
- /* U+5488 */ 0x85F2, 0x85F3, 0x85F4, 0xD5A6, 0xBACD, 0x85F5, 0xBECC, 0xD3BD,
- /* U+5490 */ 0xB8C0, 0x85F6, 0xD6E4, 0x85F7, 0xDFC7, 0xB9BE, 0xBFA7, 0x85F8,
- /* U+5498 */ 0x85F9, 0xC1FC, 0xDFCB, 0xDFCC, 0x85FA, 0xDFD0, 0x85FB, 0x85FC,
- /* U+54A0 */ 0x85FD, 0x85FE, 0x8640, 0xDFDB, 0xDFE5, 0x8641, 0xDFD7, 0xDFD6,
- /* U+54A8 */ 0xD7C9, 0xDFE3, 0xDFE4, 0xE5EB, 0xD2A7, 0xDFD2, 0x8642, 0xBFA9,
- /* U+54B0 */ 0x8643, 0xD4DB, 0x8644, 0xBFC8, 0xDFD4, 0x8645, 0x8646, 0x8647,
- /* U+54B8 */ 0xCFCC, 0x8648, 0x8649, 0xDFDD, 0x864A, 0xD1CA, 0x864B, 0xDFDE,
- /* U+54C0 */ 0xB0A7, 0xC6B7, 0xDFD3, 0x864C, 0xBAE5, 0x864D, 0xB6DF, 0xCDDB,
- /* U+54C8 */ 0xB9FE, 0xD4D5, 0x864E, 0x864F, 0xDFDF, 0xCFEC, 0xB0A5, 0xDFE7,
- /* U+54D0 */ 0xDFD1, 0xD1C6, 0xDFD5, 0xDFD8, 0xDFD9, 0xDFDC, 0x8650, 0xBBA9,
- /* U+54D8 */ 0x8651, 0xDFE0, 0xDFE1, 0x8652, 0xDFE2, 0xDFE6, 0xDFE8, 0xD3B4,
- /* U+54E0 */ 0x8653, 0x8654, 0x8655, 0x8656, 0x8657, 0xB8E7, 0xC5B6, 0xDFEA,
- /* U+54E8 */ 0xC9DA, 0xC1A8, 0xC4C4, 0x8658, 0x8659, 0xBFDE, 0xCFF8, 0x865A,
- /* U+54F0 */ 0x865B, 0x865C, 0xD5DC, 0xDFEE, 0x865D, 0x865E, 0x865F, 0x8660,
- /* U+54F8 */ 0x8661, 0x8662, 0xB2B8, 0x8663, 0xBADF, 0xDFEC, 0x8664, 0xDBC1,
- /* U+5500 */ 0x8665, 0xD1E4, 0x8666, 0x8667, 0x8668, 0x8669, 0xCBF4, 0xB4BD,
- /* U+5508 */ 0x866A, 0xB0A6, 0x866B, 0x866C, 0x866D, 0x866E, 0x866F, 0xDFF1,
- /* U+5510 */ 0xCCC6, 0xDFF2, 0x8670, 0x8671, 0xDFED, 0x8672, 0x8673, 0x8674,
- /* U+5518 */ 0x8675, 0x8676, 0x8677, 0xDFE9, 0x8678, 0x8679, 0x867A, 0x867B,
- /* U+5520 */ 0xDFEB, 0x867C, 0xDFEF, 0xDFF0, 0xBBBD, 0x867D, 0x867E, 0xDFF3,
- /* U+5528 */ 0x8680, 0x8681, 0xDFF4, 0x8682, 0xBBA3, 0x8683, 0xCADB, 0xCEA8,
- /* U+5530 */ 0xE0A7, 0xB3AA, 0x8684, 0xE0A6, 0x8685, 0x8686, 0x8687, 0xE0A1,
- /* U+5538 */ 0x8688, 0x8689, 0x868A, 0x868B, 0xDFFE, 0x868C, 0xCDD9, 0xDFFC,
- /* U+5540 */ 0x868D, 0xDFFA, 0x868E, 0xBFD0, 0xD7C4, 0x868F, 0xC9CC, 0x8690,
- /* U+5548 */ 0x8691, 0xDFF8, 0xB0A1, 0x8692, 0x8693, 0x8694, 0x8695, 0x8696,
- /* U+5550 */ 0xDFFD, 0x8697, 0x8698, 0x8699, 0x869A, 0xDFFB, 0xE0A2, 0x869B,
- /* U+5558 */ 0x869C, 0x869D, 0x869E, 0x869F, 0xE0A8, 0x86A0, 0x86A1, 0x86A2,
- /* U+5560 */ 0x86A3, 0xB7C8, 0x86A4, 0x86A5, 0xC6A1, 0xC9B6, 0xC0B2, 0xDFF5,
- /* U+5568 */ 0x86A6, 0x86A7, 0xC5BE, 0x86A8, 0xD8C4, 0xDFF9, 0xC4F6, 0x86A9,
- /* U+5570 */ 0x86AA, 0x86AB, 0x86AC, 0x86AD, 0x86AE, 0xE0A3, 0xE0A4, 0xE0A5,
- /* U+5578 */ 0xD0A5, 0x86AF, 0x86B0, 0xE0B4, 0xCCE4, 0x86B1, 0xE0B1, 0x86B2,
- /* U+5580 */ 0xBFA6, 0xE0AF, 0xCEB9, 0xE0AB, 0xC9C6, 0x86B3, 0x86B4, 0xC0AE,
- /* U+5588 */ 0xE0AE, 0xBAED, 0xBAB0, 0xE0A9, 0x86B5, 0x86B6, 0x86B7, 0xDFF6,
- /* U+5590 */ 0x86B8, 0xE0B3, 0x86B9, 0x86BA, 0xE0B8, 0x86BB, 0x86BC, 0x86BD,
- /* U+5598 */ 0xB4AD, 0xE0B9, 0x86BE, 0x86BF, 0xCFB2, 0xBAC8, 0x86C0, 0xE0B0,
- /* U+55A0 */ 0x86C1, 0x86C2, 0x86C3, 0x86C4, 0x86C5, 0x86C6, 0x86C7, 0xD0FA,
- /* U+55A8 */ 0x86C8, 0x86C9, 0x86CA, 0x86CB, 0x86CC, 0x86CD, 0x86CE, 0x86CF,
- /* U+55B0 */ 0x86D0, 0xE0AC, 0x86D1, 0xD4FB, 0x86D2, 0xDFF7, 0x86D3, 0xC5E7,
- /* U+55B8 */ 0x86D4, 0xE0AD, 0x86D5, 0xD3F7, 0x86D6, 0xE0B6, 0xE0B7, 0x86D7,
- /* U+55C0 */ 0x86D8, 0x86D9, 0x86DA, 0x86DB, 0xE0C4, 0xD0E1, 0x86DC, 0x86DD,
- /* U+55C8 */ 0x86DE, 0xE0BC, 0x86DF, 0x86E0, 0xE0C9, 0xE0CA, 0x86E1, 0x86E2,
- /* U+55D0 */ 0x86E3, 0xE0BE, 0xE0AA, 0xC9A4, 0xE0C1, 0x86E4, 0xE0B2, 0x86E5,
- /* U+55D8 */ 0x86E6, 0x86E7, 0x86E8, 0x86E9, 0xCAC8, 0xE0C3, 0x86EA, 0xE0B5,
- /* U+55E0 */ 0x86EB, 0xCECB, 0x86EC, 0xCBC3, 0xE0CD, 0xE0C6, 0xE0C2, 0x86ED,
- /* U+55E8 */ 0xE0CB, 0x86EE, 0xE0BA, 0xE0BF, 0xE0C0, 0x86EF, 0x86F0, 0xE0C5,
- /* U+55F0 */ 0x86F1, 0x86F2, 0xE0C7, 0xE0C8, 0x86F3, 0xE0CC, 0x86F4, 0xE0BB,
- /* U+55F8 */ 0x86F5, 0x86F6, 0x86F7, 0x86F8, 0x86F9, 0xCBD4, 0xE0D5, 0x86FA,
- /* U+5600 */ 0xE0D6, 0xE0D2, 0x86FB, 0x86FC, 0x86FD, 0x86FE, 0x8740, 0x8741,
- /* U+5608 */ 0xE0D0, 0xBCCE, 0x8742, 0x8743, 0xE0D1, 0x8744, 0xB8C2, 0xD8C5,
- /* U+5610 */ 0x8745, 0x8746, 0x8747, 0x8748, 0x8749, 0x874A, 0x874B, 0x874C,
- /* U+5618 */ 0xD0EA, 0x874D, 0x874E, 0xC2EF, 0x874F, 0x8750, 0xE0CF, 0xE0BD,
- /* U+5620 */ 0x8751, 0x8752, 0x8753, 0xE0D4, 0xE0D3, 0x8754, 0x8755, 0xE0D7,
- /* U+5628 */ 0x8756, 0x8757, 0x8758, 0x8759, 0xE0DC, 0xE0D8, 0x875A, 0x875B,
- /* U+5630 */ 0x875C, 0xD6F6, 0xB3B0, 0x875D, 0xD7EC, 0x875E, 0xCBBB, 0x875F,
- /* U+5638 */ 0x8760, 0xE0DA, 0x8761, 0xCEFB, 0x8762, 0x8763, 0x8764, 0xBAD9,
- /* U+5640 */ 0x8765, 0x8766, 0x8767, 0x8768, 0x8769, 0x876A, 0x876B, 0x876C,
- /* U+5648 */ 0x876D, 0x876E, 0x876F, 0x8770, 0xE0E1, 0xE0DD, 0xD2AD, 0x8771,
- /* U+5650 */ 0x8772, 0x8773, 0x8774, 0x8775, 0xE0E2, 0x8776, 0x8777, 0xE0DB,
- /* U+5658 */ 0xE0D9, 0xE0DF, 0x8778, 0x8779, 0xE0E0, 0x877A, 0x877B, 0x877C,
- /* U+5660 */ 0x877D, 0x877E, 0xE0DE, 0x8780, 0xE0E4, 0x8781, 0x8782, 0x8783,
- /* U+5668 */ 0xC6F7, 0xD8AC, 0xD4EB, 0xE0E6, 0xCAC9, 0x8784, 0x8785, 0x8786,
- /* U+5670 */ 0x8787, 0xE0E5, 0x8788, 0x8789, 0x878A, 0x878B, 0xB8C1, 0x878C,
- /* U+5678 */ 0x878D, 0x878E, 0x878F, 0xE0E7, 0xE0E8, 0x8790, 0x8791, 0x8792,
- /* U+5680 */ 0x8793, 0x8794, 0x8795, 0x8796, 0x8797, 0xE0E9, 0xE0E3, 0x8798,
- /* U+5688 */ 0x8799, 0x879A, 0x879B, 0x879C, 0x879D, 0x879E, 0xBABF, 0xCCE7,
- /* U+5690 */ 0x879F, 0x87A0, 0x87A1, 0xE0EA, 0x87A2, 0x87A3, 0x87A4, 0x87A5,
- /* U+5698 */ 0x87A6, 0x87A7, 0x87A8, 0x87A9, 0x87AA, 0x87AB, 0x87AC, 0x87AD,
- /* U+56A0 */ 0x87AE, 0x87AF, 0x87B0, 0xCFF9, 0x87B1, 0x87B2, 0x87B3, 0x87B4,
- /* U+56A8 */ 0x87B5, 0x87B6, 0x87B7, 0x87B8, 0x87B9, 0x87BA, 0x87BB, 0xE0EB,
- /* U+56B0 */ 0x87BC, 0x87BD, 0x87BE, 0x87BF, 0x87C0, 0x87C1, 0x87C2, 0xC8C2,
- /* U+56B8 */ 0x87C3, 0x87C4, 0x87C5, 0x87C6, 0xBDC0, 0x87C7, 0x87C8, 0x87C9,
- /* U+56C0 */ 0x87CA, 0x87CB, 0x87CC, 0x87CD, 0x87CE, 0x87CF, 0x87D0, 0x87D1,
- /* U+56C8 */ 0x87D2, 0x87D3, 0xC4D2, 0x87D4, 0x87D5, 0x87D6, 0x87D7, 0x87D8,
- /* U+56D0 */ 0x87D9, 0x87DA, 0x87DB, 0x87DC, 0xE0EC, 0x87DD, 0x87DE, 0xE0ED,
- /* U+56D8 */ 0x87DF, 0x87E0, 0xC7F4, 0xCBC4, 0x87E1, 0xE0EE, 0xBBD8, 0xD8B6,
- /* U+56E0 */ 0xD2F2, 0xE0EF, 0xCDC5, 0x87E2, 0xB6DA, 0x87E3, 0x87E4, 0x87E5,
- /* U+56E8 */ 0x87E6, 0x87E7, 0x87E8, 0xE0F1, 0x87E9, 0xD4B0, 0x87EA, 0x87EB,
- /* U+56F0 */ 0xC0A7, 0xB4D1, 0x87EC, 0x87ED, 0xCEA7, 0xE0F0, 0x87EE, 0x87EF,
- /* U+56F8 */ 0x87F0, 0xE0F2, 0xB9CC, 0x87F1, 0x87F2, 0xB9FA, 0xCDBC, 0xE0F3,
- /* U+5700 */ 0x87F3, 0x87F4, 0x87F5, 0xC6D4, 0xE0F4, 0x87F6, 0xD4B2, 0x87F7,
- /* U+5708 */ 0xC8A6, 0xE0F6, 0xE0F5, 0x87F8, 0x87F9, 0x87FA, 0x87FB, 0x87FC,
- /* U+5710 */ 0x87FD, 0x87FE, 0x8840, 0x8841, 0x8842, 0x8843, 0x8844, 0x8845,
- /* U+5718 */ 0x8846, 0x8847, 0x8848, 0x8849, 0xE0F7, 0x884A, 0x884B, 0xCDC1,
- /* U+5720 */ 0x884C, 0x884D, 0x884E, 0xCAA5, 0x884F, 0x8850, 0x8851, 0x8852,
- /* U+5728 */ 0xD4DA, 0xDBD7, 0xDBD9, 0x8853, 0xDBD8, 0xB9E7, 0xDBDC, 0xDBDD,
- /* U+5730 */ 0xB5D8, 0x8854, 0x8855, 0xDBDA, 0x8856, 0x8857, 0x8858, 0x8859,
- /* U+5738 */ 0x885A, 0xDBDB, 0xB3A1, 0xDBDF, 0x885B, 0x885C, 0xBBF8, 0x885D,
- /* U+5740 */ 0xD6B7, 0x885E, 0xDBE0, 0x885F, 0x8860, 0x8861, 0x8862, 0xBEF9,
- /* U+5748 */ 0x8863, 0x8864, 0xB7BB, 0x8865, 0xDBD0, 0xCCAE, 0xBFB2, 0xBBB5,
- /* U+5750 */ 0xD7F8, 0xBFD3, 0x8866, 0x8867, 0x8868, 0x8869, 0x886A, 0xBFE9,
- /* U+5758 */ 0x886B, 0x886C, 0xBCE1, 0xCCB3, 0xDBDE, 0xB0D3, 0xCEEB, 0xB7D8,
- /* U+5760 */ 0xD7B9, 0xC6C2, 0x886D, 0x886E, 0xC0A4, 0x886F, 0xCCB9, 0x8870,
- /* U+5768 */ 0xDBE7, 0xDBE1, 0xC6BA, 0xDBE3, 0x8871, 0xDBE8, 0x8872, 0xC5F7,
- /* U+5770 */ 0x8873, 0x8874, 0x8875, 0xDBEA, 0x8876, 0x8877, 0xDBE9, 0xBFC0,
- /* U+5778 */ 0x8878, 0x8879, 0x887A, 0xDBE6, 0xDBE5, 0x887B, 0x887C, 0x887D,
- /* U+5780 */ 0x887E, 0x8880, 0xB4B9, 0xC0AC, 0xC2A2, 0xDBE2, 0xDBE4, 0x8881,
- /* U+5788 */ 0x8882, 0x8883, 0x8884, 0xD0CD, 0xDBED, 0x8885, 0x8886, 0x8887,
- /* U+5790 */ 0x8888, 0x8889, 0xC0DD, 0xDBF2, 0x888A, 0x888B, 0x888C, 0x888D,
- /* U+5798 */ 0x888E, 0x888F, 0x8890, 0xB6E2, 0x8891, 0x8892, 0x8893, 0x8894,
- /* U+57A0 */ 0xDBF3, 0xDBD2, 0xB9B8, 0xD4AB, 0xDBEC, 0x8895, 0xBFD1, 0xDBF0,
- /* U+57A8 */ 0x8896, 0xDBD1, 0x8897, 0xB5E6, 0x8898, 0xDBEB, 0xBFE5, 0x8899,
- /* U+57B0 */ 0x889A, 0x889B, 0xDBEE, 0x889C, 0xDBF1, 0x889D, 0x889E, 0x889F,
- /* U+57B8 */ 0xDBF9, 0x88A0, 0x88A1, 0x88A2, 0x88A3, 0x88A4, 0x88A5, 0x88A6,
- /* U+57C0 */ 0x88A7, 0x88A8, 0xB9A1, 0xB0A3, 0x88A9, 0x88AA, 0x88AB, 0x88AC,
- /* U+57C8 */ 0x88AD, 0x88AE, 0x88AF, 0xC2F1, 0x88B0, 0x88B1, 0xB3C7, 0xDBEF,
- /* U+57D0 */ 0x88B2, 0x88B3, 0xDBF8, 0x88B4, 0xC6D2, 0xDBF4, 0x88B5, 0x88B6,
- /* U+57D8 */ 0xDBF5, 0xDBF7, 0xDBF6, 0x88B7, 0x88B8, 0xDBFE, 0x88B9, 0xD3F2,
- /* U+57E0 */ 0xB2BA, 0x88BA, 0x88BB, 0x88BC, 0xDBFD, 0x88BD, 0x88BE, 0x88BF,
- /* U+57E8 */ 0x88C0, 0x88C1, 0x88C2, 0x88C3, 0x88C4, 0xDCA4, 0x88C5, 0xDBFB,
- /* U+57F0 */ 0x88C6, 0x88C7, 0x88C8, 0x88C9, 0xDBFA, 0x88CA, 0x88CB, 0x88CC,
- /* U+57F8 */ 0xDBFC, 0xC5E0, 0xBBF9, 0x88CD, 0x88CE, 0xDCA3, 0x88CF, 0x88D0,
- /* U+5800 */ 0xDCA5, 0x88D1, 0xCCC3, 0x88D2, 0x88D3, 0x88D4, 0xB6D1, 0xDDC0,
- /* U+5808 */ 0x88D5, 0x88D6, 0x88D7, 0xDCA1, 0x88D8, 0xDCA2, 0x88D9, 0x88DA,
- /* U+5810 */ 0x88DB, 0xC7B5, 0x88DC, 0x88DD, 0x88DE, 0xB6E9, 0x88DF, 0x88E0,
- /* U+5818 */ 0x88E1, 0xDCA7, 0x88E2, 0x88E3, 0x88E4, 0x88E5, 0xDCA6, 0x88E6,
- /* U+5820 */ 0xDCA9, 0xB1A4, 0x88E7, 0x88E8, 0xB5CC, 0x88E9, 0x88EA, 0x88EB,
- /* U+5828 */ 0x88EC, 0x88ED, 0xBFB0, 0x88EE, 0x88EF, 0x88F0, 0x88F1, 0x88F2,
- /* U+5830 */ 0xD1DF, 0x88F3, 0x88F4, 0x88F5, 0x88F6, 0xB6C2, 0x88F7, 0x88F8,
- /* U+5838 */ 0x88F9, 0x88FA, 0x88FB, 0x88FC, 0x88FD, 0x88FE, 0x8940, 0x8941,
- /* U+5840 */ 0x8942, 0x8943, 0x8944, 0x8945, 0xDCA8, 0x8946, 0x8947, 0x8948,
- /* U+5848 */ 0x8949, 0x894A, 0x894B, 0x894C, 0xCBFA, 0xEBF3, 0x894D, 0x894E,
- /* U+5850 */ 0x894F, 0xCBDC, 0x8950, 0x8951, 0xCBFE, 0x8952, 0x8953, 0x8954,
- /* U+5858 */ 0xCCC1, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959, 0xC8FB, 0x895A,
- /* U+5860 */ 0x895B, 0x895C, 0x895D, 0x895E, 0x895F, 0xDCAA, 0x8960, 0x8961,
- /* U+5868 */ 0x8962, 0x8963, 0x8964, 0xCCEE, 0xDCAB, 0x8965, 0x8966, 0x8967,
- /* U+5870 */ 0x8968, 0x8969, 0x896A, 0x896B, 0x896C, 0x896D, 0x896E, 0x896F,
- /* U+5878 */ 0x8970, 0x8971, 0x8972, 0x8973, 0x8974, 0x8975, 0xDBD3, 0x8976,
- /* U+5880 */ 0xDCAF, 0xDCAC, 0x8977, 0xBEB3, 0x8978, 0xCAFB, 0x8979, 0x897A,
- /* U+5888 */ 0x897B, 0xDCAD, 0x897C, 0x897D, 0x897E, 0x8980, 0x8981, 0x8982,
- /* U+5890 */ 0x8983, 0x8984, 0xC9CA, 0xC4B9, 0x8985, 0x8986, 0x8987, 0x8988,
- /* U+5898 */ 0x8989, 0xC7BD, 0xDCAE, 0x898A, 0x898B, 0x898C, 0xD4F6, 0xD0E6,
- /* U+58A0 */ 0x898D, 0x898E, 0x898F, 0x8990, 0x8991, 0x8992, 0x8993, 0x8994,
- /* U+58A8 */ 0xC4AB, 0xB6D5, 0x8995, 0x8996, 0x8997, 0x8998, 0x8999, 0x899A,
- /* U+58B0 */ 0x899B, 0x899C, 0x899D, 0x899E, 0x899F, 0x89A0, 0x89A1, 0x89A2,
- /* U+58B8 */ 0x89A3, 0x89A4, 0x89A5, 0x89A6, 0xDBD4, 0x89A7, 0x89A8, 0x89A9,
- /* U+58C0 */ 0x89AA, 0xB1DA, 0x89AB, 0x89AC, 0x89AD, 0xDBD5, 0x89AE, 0x89AF,
- /* U+58C8 */ 0x89B0, 0x89B1, 0x89B2, 0x89B3, 0x89B4, 0x89B5, 0x89B6, 0x89B7,
- /* U+58D0 */ 0x89B8, 0xDBD6, 0x89B9, 0x89BA, 0x89BB, 0xBABE, 0x89BC, 0x89BD,
- /* U+58D8 */ 0x89BE, 0x89BF, 0x89C0, 0x89C1, 0x89C2, 0x89C3, 0x89C4, 0x89C5,
- /* U+58E0 */ 0x89C6, 0x89C7, 0x89C8, 0x89C9, 0xC8C0, 0x89CA, 0x89CB, 0x89CC,
- /* U+58E8 */ 0x89CD, 0x89CE, 0x89CF, 0xCABF, 0xC8C9, 0x89D0, 0xD7B3, 0x89D1,
- /* U+58F0 */ 0xC9F9, 0x89D2, 0x89D3, 0xBFC7, 0x89D4, 0x89D5, 0xBAF8, 0x89D6,
- /* U+58F8 */ 0x89D7, 0xD2BC, 0x89D8, 0x89D9, 0x89DA, 0x89DB, 0x89DC, 0x89DD,
- /* U+5900 */ 0x89DE, 0x89DF, 0xE2BA, 0x89E0, 0xB4A6, 0x89E1, 0x89E2, 0xB1B8,
- /* U+5908 */ 0x89E3, 0x89E4, 0x89E5, 0x89E6, 0x89E7, 0xB8B4, 0x89E8, 0xCFC4,
- /* U+5910 */ 0x89E9, 0x89EA, 0x89EB, 0x89EC, 0xD9E7, 0xCFA6, 0xCDE2, 0x89ED,
- /* U+5918 */ 0x89EE, 0xD9ED, 0xB6E0, 0x89EF, 0xD2B9, 0x89F0, 0x89F1, 0xB9BB,
- /* U+5920 */ 0x89F2, 0x89F3, 0x89F4, 0x89F5, 0xE2B9, 0xE2B7, 0x89F6, 0xB4F3,
- /* U+5928 */ 0x89F7, 0xCCEC, 0xCCAB, 0xB7F2, 0x89F8, 0xD8B2, 0xD1EB, 0xBABB,
- /* U+5930 */ 0x89F9, 0xCAA7, 0x89FA, 0x89FB, 0xCDB7, 0x89FC, 0x89FD, 0xD2C4,
- /* U+5938 */ 0xBFE4, 0xBCD0, 0xB6E1, 0x89FE, 0xDEC5, 0x8A40, 0x8A41, 0x8A42,
- /* U+5940 */ 0x8A43, 0xDEC6, 0xDBBC, 0x8A44, 0xD1D9, 0x8A45, 0x8A46, 0xC6E6,
- /* U+5948 */ 0xC4CE, 0xB7EE, 0x8A47, 0xB7DC, 0x8A48, 0x8A49, 0xBFFC, 0xD7E0,
- /* U+5950 */ 0x8A4A, 0xC6F5, 0x8A4B, 0x8A4C, 0xB1BC, 0xDEC8, 0xBDB1, 0xCCD7,
- /* U+5958 */ 0xDECA, 0x8A4D, 0xDEC9, 0x8A4E, 0x8A4F, 0x8A50, 0x8A51, 0x8A52,
- /* U+5960 */ 0xB5EC, 0x8A53, 0xC9DD, 0x8A54, 0x8A55, 0xB0C2, 0x8A56, 0x8A57,
- /* U+5968 */ 0x8A58, 0x8A59, 0x8A5A, 0x8A5B, 0x8A5C, 0x8A5D, 0x8A5E, 0x8A5F,
- /* U+5970 */ 0x8A60, 0x8A61, 0x8A62, 0xC5AE, 0xC5AB, 0x8A63, 0xC4CC, 0x8A64,
- /* U+5978 */ 0xBCE9, 0xCBFD, 0x8A65, 0x8A66, 0x8A67, 0xBAC3, 0x8A68, 0x8A69,
- /* U+5980 */ 0x8A6A, 0xE5F9, 0xC8E7, 0xE5FA, 0xCDFD, 0x8A6B, 0xD7B1, 0xB8BE,
- /* U+5988 */ 0xC2E8, 0x8A6C, 0xC8D1, 0x8A6D, 0x8A6E, 0xE5FB, 0x8A6F, 0x8A70,
- /* U+5990 */ 0x8A71, 0x8A72, 0xB6CA, 0xBCCB, 0x8A73, 0x8A74, 0xD1FD, 0xE6A1,
- /* U+5998 */ 0x8A75, 0xC3EE, 0x8A76, 0x8A77, 0x8A78, 0x8A79, 0xE6A4, 0x8A7A,
- /* U+59A0 */ 0x8A7B, 0x8A7C, 0x8A7D, 0xE5FE, 0xE6A5, 0xCDD7, 0x8A7E, 0x8A80,
- /* U+59A8 */ 0xB7C1, 0xE5FC, 0xE5FD, 0xE6A3, 0x8A81, 0x8A82, 0xC4DD, 0xE6A8,
- /* U+59B0 */ 0x8A83, 0x8A84, 0xE6A7, 0x8A85, 0x8A86, 0x8A87, 0x8A88, 0x8A89,
- /* U+59B8 */ 0x8A8A, 0xC3C3, 0x8A8B, 0xC6DE, 0x8A8C, 0x8A8D, 0xE6AA, 0x8A8E,
- /* U+59C0 */ 0x8A8F, 0x8A90, 0x8A91, 0x8A92, 0x8A93, 0x8A94, 0xC4B7, 0x8A95,
- /* U+59C8 */ 0x8A96, 0x8A97, 0xE6A2, 0xCABC, 0x8A98, 0x8A99, 0x8A9A, 0x8A9B,
- /* U+59D0 */ 0xBDE3, 0xB9C3, 0xE6A6, 0xD0D5, 0xCEAF, 0x8A9C, 0x8A9D, 0xE6A9,
- /* U+59D8 */ 0xE6B0, 0x8A9E, 0xD2A6, 0x8A9F, 0xBDAA, 0xE6AD, 0x8AA0, 0x8AA1,
- /* U+59E0 */ 0x8AA2, 0x8AA3, 0x8AA4, 0xE6AF, 0x8AA5, 0xC0D1, 0x8AA6, 0x8AA7,
- /* U+59E8 */ 0xD2CC, 0x8AA8, 0x8AA9, 0x8AAA, 0xBCA7, 0x8AAB, 0x8AAC, 0x8AAD,
- /* U+59F0 */ 0x8AAE, 0x8AAF, 0x8AB0, 0x8AB1, 0x8AB2, 0x8AB3, 0x8AB4, 0x8AB5,
- /* U+59F8 */ 0x8AB6, 0xE6B1, 0x8AB7, 0xD2F6, 0x8AB8, 0x8AB9, 0x8ABA, 0xD7CB,
- /* U+5A00 */ 0x8ABB, 0xCDFE, 0x8ABC, 0xCDDE, 0xC2A6, 0xE6AB, 0xE6AC, 0xBDBF,
- /* U+5A08 */ 0xE6AE, 0xE6B3, 0x8ABD, 0x8ABE, 0xE6B2, 0x8ABF, 0x8AC0, 0x8AC1,
- /* U+5A10 */ 0x8AC2, 0xE6B6, 0x8AC3, 0xE6B8, 0x8AC4, 0x8AC5, 0x8AC6, 0x8AC7,
- /* U+5A18 */ 0xC4EF, 0x8AC8, 0x8AC9, 0x8ACA, 0xC4C8, 0x8ACB, 0x8ACC, 0xBEEA,
- /* U+5A20 */ 0xC9EF, 0x8ACD, 0x8ACE, 0xE6B7, 0x8ACF, 0xB6F0, 0x8AD0, 0x8AD1,
- /* U+5A28 */ 0x8AD2, 0xC3E4, 0x8AD3, 0x8AD4, 0x8AD5, 0x8AD6, 0x8AD7, 0x8AD8,
- /* U+5A30 */ 0x8AD9, 0xD3E9, 0xE6B4, 0x8ADA, 0xE6B5, 0x8ADB, 0xC8A2, 0x8ADC,
- /* U+5A38 */ 0x8ADD, 0x8ADE, 0x8ADF, 0x8AE0, 0xE6BD, 0x8AE1, 0x8AE2, 0x8AE3,
- /* U+5A40 */ 0xE6B9, 0x8AE4, 0x8AE5, 0x8AE6, 0x8AE7, 0x8AE8, 0xC6C5, 0x8AE9,
- /* U+5A48 */ 0x8AEA, 0xCDF1, 0xE6BB, 0x8AEB, 0x8AEC, 0x8AED, 0x8AEE, 0x8AEF,
- /* U+5A50 */ 0x8AF0, 0x8AF1, 0x8AF2, 0x8AF3, 0x8AF4, 0xE6BC, 0x8AF5, 0x8AF6,
- /* U+5A58 */ 0x8AF7, 0x8AF8, 0xBBE9, 0x8AF9, 0x8AFA, 0x8AFB, 0x8AFC, 0x8AFD,
- /* U+5A60 */ 0x8AFE, 0x8B40, 0xE6BE, 0x8B41, 0x8B42, 0x8B43, 0x8B44, 0xE6BA,
- /* U+5A68 */ 0x8B45, 0x8B46, 0xC0B7, 0x8B47, 0x8B48, 0x8B49, 0x8B4A, 0x8B4B,
- /* U+5A70 */ 0x8B4C, 0x8B4D, 0x8B4E, 0x8B4F, 0xD3A4, 0xE6BF, 0xC9F4, 0xE6C3,
- /* U+5A78 */ 0x8B50, 0x8B51, 0xE6C4, 0x8B52, 0x8B53, 0x8B54, 0x8B55, 0xD0F6,
- /* U+5A80 */ 0x8B56, 0x8B57, 0x8B58, 0x8B59, 0x8B5A, 0x8B5B, 0x8B5C, 0x8B5D,
- /* U+5A88 */ 0x8B5E, 0x8B5F, 0x8B60, 0x8B61, 0x8B62, 0x8B63, 0x8B64, 0x8B65,
- /* U+5A90 */ 0x8B66, 0x8B67, 0xC3BD, 0x8B68, 0x8B69, 0x8B6A, 0x8B6B, 0x8B6C,
- /* U+5A98 */ 0x8B6D, 0x8B6E, 0xC3C4, 0xE6C2, 0x8B6F, 0x8B70, 0x8B71, 0x8B72,
- /* U+5AA0 */ 0x8B73, 0x8B74, 0x8B75, 0x8B76, 0x8B77, 0x8B78, 0x8B79, 0x8B7A,
- /* U+5AA8 */ 0x8B7B, 0x8B7C, 0xE6C1, 0x8B7D, 0x8B7E, 0x8B80, 0x8B81, 0x8B82,
- /* U+5AB0 */ 0x8B83, 0x8B84, 0xE6C7, 0xCFB1, 0x8B85, 0xEBF4, 0x8B86, 0x8B87,
- /* U+5AB8 */ 0xE6CA, 0x8B88, 0x8B89, 0x8B8A, 0x8B8B, 0x8B8C, 0xE6C5, 0x8B8D,
- /* U+5AC0 */ 0x8B8E, 0xBCDE, 0xC9A9, 0x8B8F, 0x8B90, 0x8B91, 0x8B92, 0x8B93,
- /* U+5AC8 */ 0x8B94, 0xBCB5, 0x8B95, 0x8B96, 0xCFD3, 0x8B97, 0x8B98, 0x8B99,
- /* U+5AD0 */ 0x8B9A, 0x8B9B, 0xE6C8, 0x8B9C, 0xE6C9, 0x8B9D, 0xE6CE, 0x8B9E,
- /* U+5AD8 */ 0xE6D0, 0x8B9F, 0x8BA0, 0x8BA1, 0xE6D1, 0x8BA2, 0x8BA3, 0x8BA4,
- /* U+5AE0 */ 0xE6CB, 0xB5D5, 0x8BA5, 0xE6CC, 0x8BA6, 0x8BA7, 0xE6CF, 0x8BA8,
- /* U+5AE8 */ 0x8BA9, 0xC4DB, 0x8BAA, 0xE6C6, 0x8BAB, 0x8BAC, 0x8BAD, 0x8BAE,
- /* U+5AF0 */ 0x8BAF, 0xE6CD, 0x8BB0, 0x8BB1, 0x8BB2, 0x8BB3, 0x8BB4, 0x8BB5,
- /* U+5AF8 */ 0x8BB6, 0x8BB7, 0x8BB8, 0x8BB9, 0x8BBA, 0x8BBB, 0x8BBC, 0x8BBD,
- /* U+5B00 */ 0x8BBE, 0x8BBF, 0x8BC0, 0x8BC1, 0x8BC2, 0x8BC3, 0x8BC4, 0x8BC5,
- /* U+5B08 */ 0x8BC6, 0xE6D2, 0x8BC7, 0x8BC8, 0x8BC9, 0x8BCA, 0x8BCB, 0x8BCC,
- /* U+5B10 */ 0x8BCD, 0x8BCE, 0x8BCF, 0x8BD0, 0x8BD1, 0x8BD2, 0xE6D4, 0xE6D3,
- /* U+5B18 */ 0x8BD3, 0x8BD4, 0x8BD5, 0x8BD6, 0x8BD7, 0x8BD8, 0x8BD9, 0x8BDA,
- /* U+5B20 */ 0x8BDB, 0x8BDC, 0x8BDD, 0x8BDE, 0x8BDF, 0x8BE0, 0x8BE1, 0x8BE2,
- /* U+5B28 */ 0x8BE3, 0x8BE4, 0x8BE5, 0x8BE6, 0x8BE7, 0x8BE8, 0x8BE9, 0x8BEA,
- /* U+5B30 */ 0x8BEB, 0x8BEC, 0xE6D5, 0x8BED, 0xD9F8, 0x8BEE, 0x8BEF, 0xE6D6,
- /* U+5B38 */ 0x8BF0, 0x8BF1, 0x8BF2, 0x8BF3, 0x8BF4, 0x8BF5, 0x8BF6, 0x8BF7,
- /* U+5B40 */ 0xE6D7, 0x8BF8, 0x8BF9, 0x8BFA, 0x8BFB, 0x8BFC, 0x8BFD, 0x8BFE,
- /* U+5B48 */ 0x8C40, 0x8C41, 0x8C42, 0x8C43, 0x8C44, 0x8C45, 0x8C46, 0x8C47,
- /* U+5B50 */ 0xD7D3, 0xE6DD, 0x8C48, 0xE6DE, 0xBFD7, 0xD4D0, 0x8C49, 0xD7D6,
- /* U+5B58 */ 0xB4E6, 0xCBEF, 0xE6DA, 0xD8C3, 0xD7CE, 0xD0A2, 0x8C4A, 0xC3CF,
- /* U+5B60 */ 0x8C4B, 0x8C4C, 0xE6DF, 0xBCBE, 0xB9C2, 0xE6DB, 0xD1A7, 0x8C4D,
- /* U+5B68 */ 0x8C4E, 0xBAA2, 0xC2CF, 0x8C4F, 0xD8AB, 0x8C50, 0x8C51, 0x8C52,
- /* U+5B70 */ 0xCAEB, 0xE5EE, 0x8C53, 0xE6DC, 0x8C54, 0xB7F5, 0x8C55, 0x8C56,
- /* U+5B78 */ 0x8C57, 0x8C58, 0xC8E6, 0x8C59, 0x8C5A, 0xC4F5, 0x8C5B, 0x8C5C,
- /* U+5B80 */ 0xE5B2, 0xC4FE, 0x8C5D, 0xCBFC, 0xE5B3, 0xD5AC, 0x8C5E, 0xD3EE,
- /* U+5B88 */ 0xCAD8, 0xB0B2, 0x8C5F, 0xCBCE, 0xCDEA, 0x8C60, 0x8C61, 0xBAEA,
- /* U+5B90 */ 0x8C62, 0x8C63, 0x8C64, 0xE5B5, 0x8C65, 0xE5B4, 0x8C66, 0xD7DA,
- /* U+5B98 */ 0xB9D9, 0xD6E6, 0xB6A8, 0xCDF0, 0xD2CB, 0xB1A6, 0xCAB5, 0x8C67,
- /* U+5BA0 */ 0xB3E8, 0xC9F3, 0xBFCD, 0xD0FB, 0xCAD2, 0xE5B6, 0xBBC2, 0x8C68,
- /* U+5BA8 */ 0x8C69, 0x8C6A, 0xCFDC, 0xB9AC, 0x8C6B, 0x8C6C, 0x8C6D, 0x8C6E,
- /* U+5BB0 */ 0xD4D7, 0x8C6F, 0x8C70, 0xBAA6, 0xD1E7, 0xCFFC, 0xBCD2, 0x8C71,
- /* U+5BB8 */ 0xE5B7, 0xC8DD, 0x8C72, 0x8C73, 0x8C74, 0xBFED, 0xB1F6, 0xCBDE,
- /* U+5BC0 */ 0x8C75, 0x8C76, 0xBCC5, 0x8C77, 0xBCC4, 0xD2FA, 0xC3DC, 0xBFDC,
- /* U+5BC8 */ 0x8C78, 0x8C79, 0x8C7A, 0x8C7B, 0xB8BB, 0x8C7C, 0x8C7D, 0x8C7E,
- /* U+5BD0 */ 0xC3C2, 0x8C80, 0xBAAE, 0xD4A2, 0x8C81, 0x8C82, 0x8C83, 0x8C84,
- /* U+5BD8 */ 0x8C85, 0x8C86, 0x8C87, 0x8C88, 0x8C89, 0xC7DE, 0xC4AF, 0xB2EC,
- /* U+5BE0 */ 0x8C8A, 0xB9D1, 0x8C8B, 0x8C8C, 0xE5BB, 0xC1C8, 0x8C8D, 0x8C8E,
- /* U+5BE8 */ 0xD5AF, 0x8C8F, 0x8C90, 0x8C91, 0x8C92, 0x8C93, 0xE5BC, 0x8C94,
- /* U+5BF0 */ 0xE5BE, 0x8C95, 0x8C96, 0x8C97, 0x8C98, 0x8C99, 0x8C9A, 0x8C9B,
- /* U+5BF8 */ 0xB4E7, 0xB6D4, 0xCBC2, 0xD1B0, 0xB5BC, 0x8C9C, 0x8C9D, 0xCAD9,
- /* U+5C00 */ 0x8C9E, 0xB7E2, 0x8C9F, 0x8CA0, 0xC9E4, 0x8CA1, 0xBDAB, 0x8CA2,
- /* U+5C08 */ 0x8CA3, 0xCEBE, 0xD7F0, 0x8CA4, 0x8CA5, 0x8CA6, 0x8CA7, 0xD0A1,
- /* U+5C10 */ 0x8CA8, 0xC9D9, 0x8CA9, 0x8CAA, 0xB6FB, 0xE6D8, 0xBCE2, 0x8CAB,
- /* U+5C18 */ 0xB3BE, 0x8CAC, 0xC9D0, 0x8CAD, 0xE6D9, 0xB3A2, 0x8CAE, 0x8CAF,
- /* U+5C20 */ 0x8CB0, 0x8CB1, 0xDECC, 0x8CB2, 0xD3C8, 0xDECD, 0x8CB3, 0xD2A2,
- /* U+5C28 */ 0x8CB4, 0x8CB5, 0x8CB6, 0x8CB7, 0xDECE, 0x8CB8, 0x8CB9, 0x8CBA,
- /* U+5C30 */ 0x8CBB, 0xBECD, 0x8CBC, 0x8CBD, 0xDECF, 0x8CBE, 0x8CBF, 0x8CC0,
- /* U+5C38 */ 0xCAAC, 0xD2FC, 0xB3DF, 0xE5EA, 0xC4E1, 0xBEA1, 0xCEB2, 0xC4F2,
- /* U+5C40 */ 0xBED6, 0xC6A8, 0xB2E3, 0x8CC1, 0x8CC2, 0xBED3, 0x8CC3, 0x8CC4,
- /* U+5C48 */ 0xC7FC, 0xCCEB, 0xBDEC, 0xCEDD, 0x8CC5, 0x8CC6, 0xCABA, 0xC6C1,
- /* U+5C50 */ 0xE5EC, 0xD0BC, 0x8CC7, 0x8CC8, 0x8CC9, 0xD5B9, 0x8CCA, 0x8CCB,
- /* U+5C58 */ 0x8CCC, 0xE5ED, 0x8CCD, 0x8CCE, 0x8CCF, 0x8CD0, 0xCAF4, 0x8CD1,
- /* U+5C60 */ 0xCDC0, 0xC2C5, 0x8CD2, 0xE5EF, 0x8CD3, 0xC2C4, 0xE5F0, 0x8CD4,
- /* U+5C68 */ 0x8CD5, 0x8CD6, 0x8CD7, 0x8CD8, 0x8CD9, 0x8CDA, 0xE5F8, 0xCDCD,
- /* U+5C70 */ 0x8CDB, 0xC9BD, 0x8CDC, 0x8CDD, 0x8CDE, 0x8CDF, 0x8CE0, 0x8CE1,
- /* U+5C78 */ 0x8CE2, 0xD2D9, 0xE1A8, 0x8CE3, 0x8CE4, 0x8CE5, 0x8CE6, 0xD3EC,
- /* U+5C80 */ 0x8CE7, 0xCBEA, 0xC6F1, 0x8CE8, 0x8CE9, 0x8CEA, 0x8CEB, 0x8CEC,
- /* U+5C88 */ 0xE1AC, 0x8CED, 0x8CEE, 0x8CEF, 0xE1A7, 0xE1A9, 0x8CF0, 0x8CF1,
- /* U+5C90 */ 0xE1AA, 0xE1AF, 0x8CF2, 0x8CF3, 0xB2ED, 0x8CF4, 0xE1AB, 0xB8DA,
- /* U+5C98 */ 0xE1AD, 0xE1AE, 0xE1B0, 0xB5BA, 0xE1B1, 0x8CF5, 0x8CF6, 0x8CF7,
- /* U+5CA0 */ 0x8CF8, 0x8CF9, 0xE1B3, 0xE1B8, 0x8CFA, 0x8CFB, 0x8CFC, 0x8CFD,
- /* U+5CA8 */ 0x8CFE, 0xD1D2, 0x8D40, 0xE1B6, 0xE1B5, 0xC1EB, 0x8D41, 0x8D42,
- /* U+5CB0 */ 0x8D43, 0xE1B7, 0x8D44, 0xD4C0, 0x8D45, 0xE1B2, 0x8D46, 0xE1BA,
- /* U+5CB8 */ 0xB0B6, 0x8D47, 0x8D48, 0x8D49, 0x8D4A, 0xE1B4, 0x8D4B, 0xBFF9,
- /* U+5CC0 */ 0x8D4C, 0xE1B9, 0x8D4D, 0x8D4E, 0xE1BB, 0x8D4F, 0x8D50, 0x8D51,
- /* U+5CC8 */ 0x8D52, 0x8D53, 0x8D54, 0xE1BE, 0x8D55, 0x8D56, 0x8D57, 0x8D58,
- /* U+5CD0 */ 0x8D59, 0x8D5A, 0xE1BC, 0x8D5B, 0x8D5C, 0x8D5D, 0x8D5E, 0x8D5F,
- /* U+5CD8 */ 0x8D60, 0xD6C5, 0x8D61, 0x8D62, 0x8D63, 0x8D64, 0x8D65, 0x8D66,
- /* U+5CE0 */ 0x8D67, 0xCFBF, 0x8D68, 0x8D69, 0xE1BD, 0xE1BF, 0xC2CD, 0x8D6A,
- /* U+5CE8 */ 0xB6EB, 0x8D6B, 0xD3F8, 0x8D6C, 0x8D6D, 0xC7CD, 0x8D6E, 0x8D6F,
- /* U+5CF0 */ 0xB7E5, 0x8D70, 0x8D71, 0x8D72, 0x8D73, 0x8D74, 0x8D75, 0x8D76,
- /* U+5CF8 */ 0x8D77, 0x8D78, 0x8D79, 0xBEFE, 0x8D7A, 0x8D7B, 0x8D7C, 0x8D7D,
- /* U+5D00 */ 0x8D7E, 0x8D80, 0xE1C0, 0xE1C1, 0x8D81, 0x8D82, 0xE1C7, 0xB3E7,
- /* U+5D08 */ 0x8D83, 0x8D84, 0x8D85, 0x8D86, 0x8D87, 0x8D88, 0xC6E9, 0x8D89,
- /* U+5D10 */ 0x8D8A, 0x8D8B, 0x8D8C, 0x8D8D, 0xB4DE, 0x8D8E, 0xD1C2, 0x8D8F,
- /* U+5D18 */ 0x8D90, 0x8D91, 0x8D92, 0xE1C8, 0x8D93, 0x8D94, 0xE1C6, 0x8D95,
- /* U+5D20 */ 0x8D96, 0x8D97, 0x8D98, 0x8D99, 0xE1C5, 0x8D9A, 0xE1C3, 0xE1C2,
- /* U+5D28 */ 0x8D9B, 0xB1C0, 0x8D9C, 0x8D9D, 0x8D9E, 0xD5B8, 0xE1C4, 0x8D9F,
- /* U+5D30 */ 0x8DA0, 0x8DA1, 0x8DA2, 0x8DA3, 0xE1CB, 0x8DA4, 0x8DA5, 0x8DA6,
- /* U+5D38 */ 0x8DA7, 0x8DA8, 0x8DA9, 0x8DAA, 0x8DAB, 0xE1CC, 0xE1CA, 0x8DAC,
- /* U+5D40 */ 0x8DAD, 0x8DAE, 0x8DAF, 0x8DB0, 0x8DB1, 0x8DB2, 0x8DB3, 0xEFFA,
- /* U+5D48 */ 0x8DB4, 0x8DB5, 0xE1D3, 0xE1D2, 0xC7B6, 0x8DB6, 0x8DB7, 0x8DB8,
- /* U+5D50 */ 0x8DB9, 0x8DBA, 0x8DBB, 0x8DBC, 0x8DBD, 0x8DBE, 0x8DBF, 0x8DC0,
- /* U+5D58 */ 0xE1C9, 0x8DC1, 0x8DC2, 0xE1CE, 0x8DC3, 0xE1D0, 0x8DC4, 0x8DC5,
- /* U+5D60 */ 0x8DC6, 0x8DC7, 0x8DC8, 0x8DC9, 0x8DCA, 0x8DCB, 0x8DCC, 0x8DCD,
- /* U+5D68 */ 0x8DCE, 0xE1D4, 0x8DCF, 0xE1D1, 0xE1CD, 0x8DD0, 0x8DD1, 0xE1CF,
- /* U+5D70 */ 0x8DD2, 0x8DD3, 0x8DD4, 0x8DD5, 0xE1D5, 0x8DD6, 0x8DD7, 0x8DD8,
- /* U+5D78 */ 0x8DD9, 0x8DDA, 0x8DDB, 0x8DDC, 0x8DDD, 0x8DDE, 0x8DDF, 0x8DE0,
- /* U+5D80 */ 0x8DE1, 0x8DE2, 0xE1D6, 0x8DE3, 0x8DE4, 0x8DE5, 0x8DE6, 0x8DE7,
- /* U+5D88 */ 0x8DE8, 0x8DE9, 0x8DEA, 0x8DEB, 0x8DEC, 0x8DED, 0x8DEE, 0x8DEF,
- /* U+5D90 */ 0x8DF0, 0x8DF1, 0x8DF2, 0x8DF3, 0x8DF4, 0x8DF5, 0x8DF6, 0x8DF7,
- /* U+5D98 */ 0x8DF8, 0xE1D7, 0x8DF9, 0x8DFA, 0x8DFB, 0xE1D8, 0x8DFC, 0x8DFD,
- /* U+5DA0 */ 0x8DFE, 0x8E40, 0x8E41, 0x8E42, 0x8E43, 0x8E44, 0x8E45, 0x8E46,
- /* U+5DA8 */ 0x8E47, 0x8E48, 0x8E49, 0x8E4A, 0x8E4B, 0x8E4C, 0x8E4D, 0x8E4E,
- /* U+5DB0 */ 0x8E4F, 0x8E50, 0x8E51, 0x8E52, 0x8E53, 0x8E54, 0x8E55, 0xE1DA,
- /* U+5DB8 */ 0x8E56, 0x8E57, 0x8E58, 0x8E59, 0x8E5A, 0x8E5B, 0x8E5C, 0x8E5D,
- /* U+5DC0 */ 0x8E5E, 0x8E5F, 0x8E60, 0x8E61, 0x8E62, 0xE1DB, 0x8E63, 0x8E64,
- /* U+5DC8 */ 0x8E65, 0x8E66, 0x8E67, 0x8E68, 0x8E69, 0xCEA1, 0x8E6A, 0x8E6B,
- /* U+5DD0 */ 0x8E6C, 0x8E6D, 0x8E6E, 0x8E6F, 0x8E70, 0x8E71, 0x8E72, 0x8E73,
- /* U+5DD8 */ 0x8E74, 0x8E75, 0x8E76, 0xE7DD, 0x8E77, 0xB4A8, 0xD6DD, 0x8E78,
- /* U+5DE0 */ 0x8E79, 0xD1B2, 0xB3B2, 0x8E7A, 0x8E7B, 0xB9A4, 0xD7F3, 0xC7C9,
- /* U+5DE8 */ 0xBEDE, 0xB9AE, 0x8E7C, 0xCED7, 0x8E7D, 0x8E7E, 0xB2EE, 0xDBCF,
- /* U+5DF0 */ 0x8E80, 0xBCBA, 0xD2D1, 0xCBC8, 0xB0CD, 0x8E81, 0x8E82, 0xCFEF,
- /* U+5DF8 */ 0x8E83, 0x8E84, 0x8E85, 0x8E86, 0x8E87, 0xD9E3, 0xBDED, 0x8E88,
- /* U+5E00 */ 0x8E89, 0xB1D2, 0xCAD0, 0xB2BC, 0x8E8A, 0xCBA7, 0xB7AB, 0x8E8B,
- /* U+5E08 */ 0xCAA6, 0x8E8C, 0x8E8D, 0x8E8E, 0xCFA3, 0x8E8F, 0x8E90, 0xE0F8,
- /* U+5E10 */ 0xD5CA, 0xE0FB, 0x8E91, 0x8E92, 0xE0FA, 0xC5C1, 0xCCFB, 0x8E93,
- /* U+5E18 */ 0xC1B1, 0xE0F9, 0xD6E3, 0xB2AF, 0xD6C4, 0xB5DB, 0x8E94, 0x8E95,
- /* U+5E20 */ 0x8E96, 0x8E97, 0x8E98, 0x8E99, 0x8E9A, 0x8E9B, 0xB4F8, 0xD6A1,
- /* U+5E28 */ 0x8E9C, 0x8E9D, 0x8E9E, 0x8E9F, 0x8EA0, 0xCFAF, 0xB0EF, 0x8EA1,
- /* U+5E30 */ 0x8EA2, 0xE0FC, 0x8EA3, 0x8EA4, 0x8EA5, 0x8EA6, 0x8EA7, 0xE1A1,
- /* U+5E38 */ 0xB3A3, 0x8EA8, 0x8EA9, 0xE0FD, 0xE0FE, 0xC3B1, 0x8EAA, 0x8EAB,
- /* U+5E40 */ 0x8EAC, 0x8EAD, 0xC3DD, 0x8EAE, 0xE1A2, 0xB7F9, 0x8EAF, 0x8EB0,
- /* U+5E48 */ 0x8EB1, 0x8EB2, 0x8EB3, 0x8EB4, 0xBBCF, 0x8EB5, 0x8EB6, 0x8EB7,
- /* U+5E50 */ 0x8EB8, 0x8EB9, 0x8EBA, 0x8EBB, 0xE1A3, 0xC4BB, 0x8EBC, 0x8EBD,
- /* U+5E58 */ 0x8EBE, 0x8EBF, 0x8EC0, 0xE1A4, 0x8EC1, 0x8EC2, 0xE1A5, 0x8EC3,
- /* U+5E60 */ 0x8EC4, 0xE1A6, 0xB4B1, 0x8EC5, 0x8EC6, 0x8EC7, 0x8EC8, 0x8EC9,
- /* U+5E68 */ 0x8ECA, 0x8ECB, 0x8ECC, 0x8ECD, 0x8ECE, 0x8ECF, 0x8ED0, 0x8ED1,
- /* U+5E70 */ 0x8ED2, 0x8ED3, 0xB8C9, 0xC6BD, 0xC4EA, 0x8ED4, 0xB2A2, 0x8ED5,
- /* U+5E78 */ 0xD0D2, 0x8ED6, 0xE7DB, 0xBBC3, 0xD3D7, 0xD3C4, 0x8ED7, 0xB9E3,
- /* U+5E80 */ 0xE2CF, 0x8ED8, 0x8ED9, 0x8EDA, 0xD7AF, 0x8EDB, 0xC7EC, 0xB1D3,
- /* U+5E88 */ 0x8EDC, 0x8EDD, 0xB4B2, 0xE2D1, 0x8EDE, 0x8EDF, 0x8EE0, 0xD0F2,
- /* U+5E90 */ 0xC2AE, 0xE2D0, 0x8EE1, 0xBFE2, 0xD3A6, 0xB5D7, 0xE2D2, 0xB5EA,
- /* U+5E98 */ 0x8EE2, 0xC3ED, 0xB8FD, 0x8EE3, 0xB8AE, 0x8EE4, 0xC5D3, 0xB7CF,
- /* U+5EA0 */ 0xE2D4, 0x8EE5, 0x8EE6, 0x8EE7, 0x8EE8, 0xE2D3, 0xB6C8, 0xD7F9,
- /* U+5EA8 */ 0x8EE9, 0x8EEA, 0x8EEB, 0x8EEC, 0x8EED, 0xCDA5, 0x8EEE, 0x8EEF,
- /* U+5EB0 */ 0x8EF0, 0x8EF1, 0x8EF2, 0xE2D8, 0x8EF3, 0xE2D6, 0xCAFC, 0xBFB5,
- /* U+5EB8 */ 0xD3B9, 0xE2D5, 0x8EF4, 0x8EF5, 0x8EF6, 0x8EF7, 0xE2D7, 0x8EF8,
- /* U+5EC0 */ 0x8EF9, 0x8EFA, 0x8EFB, 0x8EFC, 0x8EFD, 0x8EFE, 0x8F40, 0x8F41,
- /* U+5EC8 */ 0x8F42, 0xC1AE, 0xC0C8, 0x8F43, 0x8F44, 0x8F45, 0x8F46, 0x8F47,
- /* U+5ED0 */ 0x8F48, 0xE2DB, 0xE2DA, 0xC0AA, 0x8F49, 0x8F4A, 0xC1CE, 0x8F4B,
- /* U+5ED8 */ 0x8F4C, 0x8F4D, 0x8F4E, 0xE2DC, 0x8F4F, 0x8F50, 0x8F51, 0x8F52,
- /* U+5EE0 */ 0x8F53, 0x8F54, 0x8F55, 0x8F56, 0x8F57, 0x8F58, 0x8F59, 0x8F5A,
- /* U+5EE8 */ 0xE2DD, 0x8F5B, 0xE2DE, 0x8F5C, 0x8F5D, 0x8F5E, 0x8F5F, 0x8F60,
- /* U+5EF0 */ 0x8F61, 0x8F62, 0x8F63, 0x8F64, 0xDBC8, 0x8F65, 0xD1D3, 0xCDA2,
- /* U+5EF8 */ 0x8F66, 0x8F67, 0xBDA8, 0x8F68, 0x8F69, 0x8F6A, 0xDEC3, 0xD8A5,
- /* U+5F00 */ 0xBFAA, 0xDBCD, 0xD2EC, 0xC6FA, 0xC5AA, 0x8F6B, 0x8F6C, 0x8F6D,
- /* U+5F08 */ 0xDEC4, 0x8F6E, 0xB1D7, 0xDFAE, 0x8F6F, 0x8F70, 0x8F71, 0xCABD,
- /* U+5F10 */ 0x8F72, 0xDFB1, 0x8F73, 0xB9AD, 0x8F74, 0xD2FD, 0x8F75, 0xB8A5,
- /* U+5F18 */ 0xBAEB, 0x8F76, 0x8F77, 0xB3DA, 0x8F78, 0x8F79, 0x8F7A, 0xB5DC,
- /* U+5F20 */ 0xD5C5, 0x8F7B, 0x8F7C, 0x8F7D, 0x8F7E, 0xC3D6, 0xCFD2, 0xBBA1,
- /* U+5F28 */ 0x8F80, 0xE5F3, 0xE5F2, 0x8F81, 0x8F82, 0xE5F4, 0x8F83, 0xCDE4,
- /* U+5F30 */ 0x8F84, 0xC8F5, 0x8F85, 0x8F86, 0x8F87, 0x8F88, 0x8F89, 0x8F8A,
- /* U+5F38 */ 0x8F8B, 0xB5AF, 0xC7BF, 0x8F8C, 0xE5F6, 0x8F8D, 0x8F8E, 0x8F8F,
- /* U+5F40 */ 0xECB0, 0x8F90, 0x8F91, 0x8F92, 0x8F93, 0x8F94, 0x8F95, 0x8F96,
- /* U+5F48 */ 0x8F97, 0x8F98, 0x8F99, 0x8F9A, 0x8F9B, 0x8F9C, 0x8F9D, 0x8F9E,
- /* U+5F50 */ 0xE5E6, 0x8F9F, 0xB9E9, 0xB5B1, 0x8FA0, 0xC2BC, 0xE5E8, 0xE5E7,
- /* U+5F58 */ 0xE5E9, 0x8FA1, 0x8FA2, 0x8FA3, 0x8FA4, 0xD2CD, 0x8FA5, 0x8FA6,
- /* U+5F60 */ 0x8FA7, 0xE1EA, 0xD0CE, 0x8FA8, 0xCDAE, 0x8FA9, 0xD1E5, 0x8FAA,
- /* U+5F68 */ 0x8FAB, 0xB2CA, 0xB1EB, 0x8FAC, 0xB1F2, 0xC5ED, 0x8FAD, 0x8FAE,
- /* U+5F70 */ 0xD5C3, 0xD3B0, 0x8FAF, 0xE1DC, 0x8FB0, 0x8FB1, 0x8FB2, 0xE1DD,
- /* U+5F78 */ 0x8FB3, 0xD2DB, 0x8FB4, 0xB3B9, 0xB1CB, 0x8FB5, 0x8FB6, 0x8FB7,
- /* U+5F80 */ 0xCDF9, 0xD5F7, 0xE1DE, 0x8FB8, 0xBEB6, 0xB4FD, 0x8FB9, 0xE1DF,
- /* U+5F88 */ 0xBADC, 0xE1E0, 0xBBB2, 0xC2C9, 0xE1E1, 0x8FBA, 0x8FBB, 0x8FBC,
- /* U+5F90 */ 0xD0EC, 0x8FBD, 0xCDBD, 0x8FBE, 0x8FBF, 0xE1E2, 0x8FC0, 0xB5C3,
- /* U+5F98 */ 0xC5C7, 0xE1E3, 0x8FC1, 0x8FC2, 0xE1E4, 0x8FC3, 0x8FC4, 0x8FC5,
- /* U+5FA0 */ 0x8FC6, 0xD3F9, 0x8FC7, 0x8FC8, 0x8FC9, 0x8FCA, 0x8FCB, 0x8FCC,
- /* U+5FA8 */ 0xE1E5, 0x8FCD, 0xD1AD, 0x8FCE, 0x8FCF, 0xE1E6, 0xCEA2, 0x8FD0,
- /* U+5FB0 */ 0x8FD1, 0x8FD2, 0x8FD3, 0x8FD4, 0x8FD5, 0xE1E7, 0x8FD6, 0xB5C2,
- /* U+5FB8 */ 0x8FD7, 0x8FD8, 0x8FD9, 0x8FDA, 0xE1E8, 0xBBD5, 0x8FDB, 0x8FDC,
- /* U+5FC0 */ 0x8FDD, 0x8FDE, 0x8FDF, 0xD0C4, 0xE2E0, 0xB1D8, 0xD2E4, 0x8FE0,
- /* U+5FC8 */ 0x8FE1, 0xE2E1, 0x8FE2, 0x8FE3, 0xBCC9, 0xC8CC, 0x8FE4, 0xE2E3,
- /* U+5FD0 */ 0xECFE, 0xECFD, 0xDFAF, 0x8FE5, 0x8FE6, 0x8FE7, 0xE2E2, 0xD6BE,
- /* U+5FD8 */ 0xCDFC, 0xC3A6, 0x8FE8, 0x8FE9, 0x8FEA, 0xE3C3, 0x8FEB, 0x8FEC,
- /* U+5FE0 */ 0xD6D2, 0xE2E7, 0x8FED, 0x8FEE, 0xE2E8, 0x8FEF, 0x8FF0, 0xD3C7,
- /* U+5FE8 */ 0x8FF1, 0x8FF2, 0xE2EC, 0xBFEC, 0x8FF3, 0xE2ED, 0xE2E5, 0x8FF4,
- /* U+5FF0 */ 0x8FF5, 0xB3C0, 0x8FF6, 0x8FF7, 0x8FF8, 0xC4EE, 0x8FF9, 0x8FFA,
- /* U+5FF8 */ 0xE2EE, 0x8FFB, 0x8FFC, 0xD0C3, 0x8FFD, 0xBAF6, 0xE2E9, 0xB7DE,
- /* U+6000 */ 0xBBB3, 0xCCAC, 0xCBCB, 0xE2E4, 0xE2E6, 0xE2EA, 0xE2EB, 0x8FFE,
- /* U+6008 */ 0x9040, 0x9041, 0xE2F7, 0x9042, 0x9043, 0xE2F4, 0xD4F5, 0xE2F3,
- /* U+6010 */ 0x9044, 0x9045, 0xC5AD, 0x9046, 0xD5FA, 0xC5C2, 0xB2C0, 0x9047,
- /* U+6018 */ 0x9048, 0xE2EF, 0x9049, 0xE2F2, 0xC1AF, 0xCBBC, 0x904A, 0x904B,
- /* U+6020 */ 0xB5A1, 0xE2F9, 0x904C, 0x904D, 0x904E, 0xBCB1, 0xE2F1, 0xD0D4,
- /* U+6028 */ 0xD4B9, 0xE2F5, 0xB9D6, 0xE2F6, 0x904F, 0x9050, 0x9051, 0xC7D3,
- /* U+6030 */ 0x9052, 0x9053, 0x9054, 0x9055, 0x9056, 0xE2F0, 0x9057, 0x9058,
- /* U+6038 */ 0x9059, 0x905A, 0x905B, 0xD7DC, 0xEDA1, 0x905C, 0x905D, 0xE2F8,
- /* U+6040 */ 0x905E, 0xEDA5, 0xE2FE, 0xCAD1, 0x905F, 0x9060, 0x9061, 0x9062,
- /* U+6048 */ 0x9063, 0x9064, 0x9065, 0xC1B5, 0x9066, 0xBBD0, 0x9067, 0x9068,
- /* U+6050 */ 0xBFD6, 0x9069, 0xBAE3, 0x906A, 0x906B, 0xCBA1, 0x906C, 0x906D,
- /* U+6058 */ 0x906E, 0xEDA6, 0xEDA3, 0x906F, 0x9070, 0xEDA2, 0x9071, 0x9072,
- /* U+6060 */ 0x9073, 0x9074, 0xBBD6, 0xEDA7, 0xD0F4, 0x9075, 0x9076, 0xEDA4,
- /* U+6068 */ 0xBADE, 0xB6F7, 0xE3A1, 0xB6B2, 0xCCF1, 0xB9A7, 0x9077, 0xCFA2,
- /* U+6070 */ 0xC7A1, 0x9078, 0x9079, 0xBFD2, 0x907A, 0x907B, 0xB6F1, 0x907C,
- /* U+6078 */ 0xE2FA, 0xE2FB, 0xE2FD, 0xE2FC, 0xC4D5, 0xE3A2, 0x907D, 0xD3C1,
- /* U+6080 */ 0x907E, 0x9080, 0x9081, 0xE3A7, 0xC7C4, 0x9082, 0x9083, 0x9084,
- /* U+6088 */ 0x9085, 0xCFA4, 0x9086, 0x9087, 0xE3A9, 0xBAB7, 0x9088, 0x9089,
- /* U+6090 */ 0x908A, 0x908B, 0xE3A8, 0x908C, 0xBBDA, 0x908D, 0xE3A3, 0x908E,
- /* U+6098 */ 0x908F, 0x9090, 0xE3A4, 0xE3AA, 0x9091, 0xE3A6, 0x9092, 0xCEF2,
- /* U+60A0 */ 0xD3C6, 0x9093, 0x9094, 0xBBBC, 0x9095, 0x9096, 0xD4C3, 0x9097,
- /* U+60A8 */ 0xC4FA, 0x9098, 0x9099, 0xEDA8, 0xD0FC, 0xE3A5, 0x909A, 0xC3F5,
- /* U+60B0 */ 0x909B, 0xE3AD, 0xB1AF, 0x909C, 0xE3B2, 0x909D, 0x909E, 0x909F,
- /* U+60B8 */ 0xBCC2, 0x90A0, 0x90A1, 0xE3AC, 0xB5BF, 0x90A2, 0x90A3, 0x90A4,
- /* U+60C0 */ 0x90A5, 0x90A6, 0x90A7, 0x90A8, 0x90A9, 0xC7E9, 0xE3B0, 0x90AA,
- /* U+60C8 */ 0x90AB, 0x90AC, 0xBEAA, 0xCDEF, 0x90AD, 0x90AE, 0x90AF, 0x90B0,
- /* U+60D0 */ 0x90B1, 0xBBF3, 0x90B2, 0x90B3, 0x90B4, 0xCCE8, 0x90B5, 0x90B6,
- /* U+60D8 */ 0xE3AF, 0x90B7, 0xE3B1, 0x90B8, 0xCFA7, 0xE3AE, 0x90B9, 0xCEA9,
- /* U+60E0 */ 0xBBDD, 0x90BA, 0x90BB, 0x90BC, 0x90BD, 0x90BE, 0xB5EB, 0xBEE5,
- /* U+60E8 */ 0xB2D2, 0xB3CD, 0x90BF, 0xB1B9, 0xE3AB, 0xB2D1, 0xB5AC, 0xB9DF,
- /* U+60F0 */ 0xB6E8, 0x90C0, 0x90C1, 0xCFEB, 0xE3B7, 0x90C2, 0xBBCC, 0x90C3,
- /* U+60F8 */ 0x90C4, 0xC8C7, 0xD0CA, 0x90C5, 0x90C6, 0x90C7, 0x90C8, 0x90C9,
- /* U+6100 */ 0xE3B8, 0xB3EE, 0x90CA, 0x90CB, 0x90CC, 0x90CD, 0xEDA9, 0x90CE,
- /* U+6108 */ 0xD3FA, 0xD3E4, 0x90CF, 0x90D0, 0x90D1, 0xEDAA, 0xE3B9, 0xD2E2,
- /* U+6110 */ 0x90D2, 0x90D3, 0x90D4, 0x90D5, 0x90D6, 0xE3B5, 0x90D7, 0x90D8,
- /* U+6118 */ 0x90D9, 0x90DA, 0xD3DE, 0x90DB, 0x90DC, 0x90DD, 0x90DE, 0xB8D0,
- /* U+6120 */ 0xE3B3, 0x90DF, 0x90E0, 0xE3B6, 0xB7DF, 0x90E1, 0xE3B4, 0xC0A2,
- /* U+6128 */ 0x90E2, 0x90E3, 0x90E4, 0xE3BA, 0x90E5, 0x90E6, 0x90E7, 0x90E8,
- /* U+6130 */ 0x90E9, 0x90EA, 0x90EB, 0x90EC, 0x90ED, 0x90EE, 0x90EF, 0x90F0,
- /* U+6138 */ 0x90F1, 0x90F2, 0x90F3, 0x90F4, 0x90F5, 0x90F6, 0x90F7, 0xD4B8,
- /* U+6140 */ 0x90F8, 0x90F9, 0x90FA, 0x90FB, 0x90FC, 0x90FD, 0x90FE, 0x9140,
- /* U+6148 */ 0xB4C8, 0x9141, 0xE3BB, 0x9142, 0xBBC5, 0x9143, 0xC9F7, 0x9144,
- /* U+6150 */ 0x9145, 0xC9E5, 0x9146, 0x9147, 0x9148, 0xC4BD, 0x9149, 0x914A,
- /* U+6158 */ 0x914B, 0x914C, 0x914D, 0x914E, 0x914F, 0xEDAB, 0x9150, 0x9151,
- /* U+6160 */ 0x9152, 0x9153, 0xC2FD, 0x9154, 0x9155, 0x9156, 0x9157, 0xBBDB,
- /* U+6168 */ 0xBFAE, 0x9158, 0x9159, 0x915A, 0x915B, 0x915C, 0x915D, 0x915E,
- /* U+6170 */ 0xCEBF, 0x915F, 0x9160, 0x9161, 0x9162, 0xE3BC, 0x9163, 0xBFB6,
- /* U+6178 */ 0x9164, 0x9165, 0x9166, 0x9167, 0x9168, 0x9169, 0x916A, 0x916B,
- /* U+6180 */ 0x916C, 0x916D, 0x916E, 0x916F, 0x9170, 0x9171, 0x9172, 0x9173,
- /* U+6188 */ 0x9174, 0x9175, 0x9176, 0xB1EF, 0x9177, 0x9178, 0xD4F7, 0x9179,
- /* U+6190 */ 0x917A, 0x917B, 0x917C, 0x917D, 0xE3BE, 0x917E, 0x9180, 0x9181,
- /* U+6198 */ 0x9182, 0x9183, 0x9184, 0x9185, 0x9186, 0xEDAD, 0x9187, 0x9188,
- /* U+61A0 */ 0x9189, 0x918A, 0x918B, 0x918C, 0x918D, 0x918E, 0x918F, 0xE3BF,
- /* U+61A8 */ 0xBAA9, 0xEDAC, 0x9190, 0x9191, 0xE3BD, 0x9192, 0x9193, 0x9194,
- /* U+61B0 */ 0x9195, 0x9196, 0x9197, 0x9198, 0x9199, 0x919A, 0x919B, 0xE3C0,
- /* U+61B8 */ 0x919C, 0x919D, 0x919E, 0x919F, 0x91A0, 0x91A1, 0xBAB6, 0x91A2,
- /* U+61C0 */ 0x91A3, 0x91A4, 0xB6AE, 0x91A5, 0x91A6, 0x91A7, 0x91A8, 0x91A9,
- /* U+61C8 */ 0xD0B8, 0x91AA, 0xB0C3, 0xEDAE, 0x91AB, 0x91AC, 0x91AD, 0x91AE,
- /* U+61D0 */ 0x91AF, 0xEDAF, 0xC0C1, 0x91B0, 0xE3C1, 0x91B1, 0x91B2, 0x91B3,
- /* U+61D8 */ 0x91B4, 0x91B5, 0x91B6, 0x91B7, 0x91B8, 0x91B9, 0x91BA, 0x91BB,
- /* U+61E0 */ 0x91BC, 0x91BD, 0x91BE, 0x91BF, 0x91C0, 0x91C1, 0xC5B3, 0x91C2,
- /* U+61E8 */ 0x91C3, 0x91C4, 0x91C5, 0x91C6, 0x91C7, 0x91C8, 0x91C9, 0x91CA,
- /* U+61F0 */ 0x91CB, 0x91CC, 0x91CD, 0x91CE, 0x91CF, 0xE3C2, 0x91D0, 0x91D1,
- /* U+61F8 */ 0x91D2, 0x91D3, 0x91D4, 0x91D5, 0x91D6, 0x91D7, 0x91D8, 0xDCB2,
- /* U+6200 */ 0x91D9, 0x91DA, 0x91DB, 0x91DC, 0x91DD, 0x91DE, 0xEDB0, 0x91DF,
- /* U+6208 */ 0xB8EA, 0x91E0, 0xCEEC, 0xEAA7, 0xD0E7, 0xCAF9, 0xC8D6, 0xCFB7,
- /* U+6210 */ 0xB3C9, 0xCED2, 0xBDE4, 0x91E1, 0x91E2, 0xE3DE, 0xBBF2, 0xEAA8,
- /* U+6218 */ 0xD5BD, 0x91E3, 0xC6DD, 0xEAA9, 0x91E4, 0x91E5, 0x91E6, 0xEAAA,
- /* U+6220 */ 0x91E7, 0xEAAC, 0xEAAB, 0x91E8, 0xEAAE, 0xEAAD, 0x91E9, 0x91EA,
- /* U+6228 */ 0x91EB, 0x91EC, 0xBDD8, 0x91ED, 0xEAAF, 0x91EE, 0xC2BE, 0x91EF,
- /* U+6230 */ 0x91F0, 0x91F1, 0x91F2, 0xB4C1, 0xB4F7, 0x91F3, 0x91F4, 0xBBA7,
- /* U+6238 */ 0x91F5, 0x91F6, 0x91F7, 0x91F8, 0x91F9, 0xECE6, 0xECE5, 0xB7BF,
- /* U+6240 */ 0xCBF9, 0xB1E2, 0x91FA, 0xECE7, 0x91FB, 0x91FC, 0x91FD, 0xC9C8,
- /* U+6248 */ 0xECE8, 0xECE9, 0x91FE, 0xCAD6, 0xDED0, 0xB2C5, 0xD4FA, 0x9240,
- /* U+6250 */ 0x9241, 0xC6CB, 0xB0C7, 0xB4F2, 0xC8D3, 0x9242, 0x9243, 0x9244,
- /* U+6258 */ 0xCDD0, 0x9245, 0x9246, 0xBFB8, 0x9247, 0x9248, 0x9249, 0x924A,
- /* U+6260 */ 0x924B, 0x924C, 0x924D, 0xBFDB, 0x924E, 0x924F, 0xC7A4, 0xD6B4,
- /* U+6268 */ 0x9250, 0xC0A9, 0xDED1, 0xC9A8, 0xD1EF, 0xC5A4, 0xB0E7, 0xB3B6,
- /* U+6270 */ 0xC8C5, 0x9251, 0x9252, 0xB0E2, 0x9253, 0x9254, 0xB7F6, 0x9255,
- /* U+6278 */ 0x9256, 0xC5FA, 0x9257, 0x9258, 0xB6F3, 0x9259, 0xD5D2, 0xB3D0,
- /* U+6280 */ 0xBCBC, 0x925A, 0x925B, 0x925C, 0xB3AD, 0x925D, 0x925E, 0x925F,
- /* U+6288 */ 0x9260, 0xBEF1, 0xB0D1, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265,
- /* U+6290 */ 0x9266, 0xD2D6, 0xCAE3, 0xD7A5, 0x9267, 0xCDB6, 0xB6B6, 0xBFB9,
- /* U+6298 */ 0xD5DB, 0x9268, 0xB8A7, 0xC5D7, 0x9269, 0x926A, 0x926B, 0xDED2,
- /* U+62A0 */ 0xBFD9, 0xC2D5, 0xC7C0, 0x926C, 0xBBA4, 0xB1A8, 0x926D, 0x926E,
- /* U+62A8 */ 0xC5EA, 0x926F, 0x9270, 0xC5FB, 0xCCA7, 0x9271, 0x9272, 0x9273,
- /* U+62B0 */ 0x9274, 0xB1A7, 0x9275, 0x9276, 0x9277, 0xB5D6, 0x9278, 0x9279,
- /* U+62B8 */ 0x927A, 0xC4A8, 0x927B, 0xDED3, 0xD1BA, 0xB3E9, 0x927C, 0xC3F2,
- /* U+62C0 */ 0x927D, 0x927E, 0xB7F7, 0x9280, 0xD6F4, 0xB5A3, 0xB2F0, 0xC4B4,
- /* U+62C8 */ 0xC4E9, 0xC0AD, 0xDED4, 0x9281, 0xB0E8, 0xC5C4, 0xC1E0, 0x9282,
- /* U+62D0 */ 0xB9D5, 0x9283, 0xBEDC, 0xCDD8, 0xB0CE, 0x9284, 0xCDCF, 0xDED6,
- /* U+62D8 */ 0xBED0, 0xD7BE, 0xDED5, 0xD5D0, 0xB0DD, 0x9285, 0x9286, 0xC4E2,
- /* U+62E0 */ 0x9287, 0x9288, 0xC2A3, 0xBCF0, 0x9289, 0xD3B5, 0xC0B9, 0xC5A1,
- /* U+62E8 */ 0xB2A6, 0xD4F1, 0x928A, 0x928B, 0xC0A8, 0xCAC3, 0xDED7, 0xD5FC,
- /* U+62F0 */ 0x928C, 0xB9B0, 0x928D, 0xC8AD, 0xCBA9, 0x928E, 0xDED9, 0xBFBD,
- /* U+62F8 */ 0x928F, 0x9290, 0x9291, 0x9292, 0xC6B4, 0xD7A7, 0xCAB0, 0xC4C3,
- /* U+6300 */ 0x9293, 0xB3D6, 0xB9D2, 0x9294, 0x9295, 0x9296, 0x9297, 0xD6B8,
- /* U+6308 */ 0xEAFC, 0xB0B4, 0x9298, 0x9299, 0x929A, 0x929B, 0xBFE6, 0x929C,
- /* U+6310 */ 0x929D, 0xCCF4, 0x929E, 0x929F, 0x92A0, 0x92A1, 0xCDDA, 0x92A2,
- /* U+6318 */ 0x92A3, 0x92A4, 0xD6BF, 0xC2CE, 0x92A5, 0xCECE, 0xCCA2, 0xD0AE,
- /* U+6320 */ 0xC4D3, 0xB5B2, 0xDED8, 0xD5F5, 0xBCB7, 0xBBD3, 0x92A6, 0x92A7,
- /* U+6328 */ 0xB0A4, 0x92A8, 0xC5B2, 0xB4EC, 0x92A9, 0x92AA, 0x92AB, 0xD5F1,
- /* U+6330 */ 0x92AC, 0x92AD, 0xEAFD, 0x92AE, 0x92AF, 0x92B0, 0x92B1, 0x92B2,
- /* U+6338 */ 0x92B3, 0xDEDA, 0xCDA6, 0x92B4, 0x92B5, 0xCDEC, 0x92B6, 0x92B7,
- /* U+6340 */ 0x92B8, 0x92B9, 0xCEE6, 0xDEDC, 0x92BA, 0xCDB1, 0xC0A6, 0x92BB,
- /* U+6348 */ 0x92BC, 0xD7BD, 0x92BD, 0xDEDB, 0xB0C6, 0xBAB4, 0xC9D3, 0xC4F3,
- /* U+6350 */ 0xBEE8, 0x92BE, 0x92BF, 0x92C0, 0x92C1, 0xB2B6, 0x92C2, 0x92C3,
- /* U+6358 */ 0x92C4, 0x92C5, 0x92C6, 0x92C7, 0x92C8, 0x92C9, 0xC0CC, 0xCBF0,
- /* U+6360 */ 0x92CA, 0xBCF1, 0xBBBB, 0xB5B7, 0x92CB, 0x92CC, 0x92CD, 0xC5F5,
- /* U+6368 */ 0x92CE, 0xDEE6, 0x92CF, 0x92D0, 0x92D1, 0xDEE3, 0xBEDD, 0x92D2,
- /* U+6370 */ 0x92D3, 0xDEDF, 0x92D4, 0x92D5, 0x92D6, 0x92D7, 0xB4B7, 0xBDDD,
- /* U+6378 */ 0x92D8, 0x92D9, 0xDEE0, 0xC4ED, 0x92DA, 0x92DB, 0x92DC, 0x92DD,
- /* U+6380 */ 0xCFC6, 0x92DE, 0xB5E0, 0x92DF, 0x92E0, 0x92E1, 0x92E2, 0xB6DE,
- /* U+6388 */ 0xCADA, 0xB5F4, 0xDEE5, 0x92E3, 0xD5C6, 0x92E4, 0xDEE1, 0xCCCD,
- /* U+6390 */ 0xC6FE, 0x92E5, 0xC5C5, 0x92E6, 0x92E7, 0x92E8, 0xD2B4, 0x92E9,
- /* U+6398 */ 0xBEF2, 0x92EA, 0x92EB, 0x92EC, 0x92ED, 0x92EE, 0x92EF, 0x92F0,
- /* U+63A0 */ 0xC2D3, 0x92F1, 0xCCBD, 0xB3B8, 0x92F2, 0xBDD3, 0x92F3, 0xBFD8,
- /* U+63A8 */ 0xCDC6, 0xD1DA, 0xB4EB, 0x92F4, 0xDEE4, 0xDEDD, 0xDEE7, 0x92F5,
- /* U+63B0 */ 0xEAFE, 0x92F6, 0x92F7, 0xC2B0, 0xDEE2, 0x92F8, 0x92F9, 0xD6C0,
- /* U+63B8 */ 0xB5A7, 0x92FA, 0xB2F4, 0x92FB, 0xDEE8, 0x92FC, 0xDEF2, 0x92FD,
- /* U+63C0 */ 0x92FE, 0x9340, 0x9341, 0x9342, 0xDEED, 0x9343, 0xDEF1, 0x9344,
- /* U+63C8 */ 0x9345, 0xC8E0, 0x9346, 0x9347, 0x9348, 0xD7E1, 0xDEEF, 0xC3E8,
- /* U+63D0 */ 0xCCE1, 0x9349, 0xB2E5, 0x934A, 0x934B, 0x934C, 0xD2BE, 0x934D,
- /* U+63D8 */ 0x934E, 0x934F, 0x9350, 0x9351, 0x9352, 0x9353, 0xDEEE, 0x9354,
- /* U+63E0 */ 0xDEEB, 0xCED5, 0x9355, 0xB4A7, 0x9356, 0x9357, 0x9358, 0x9359,
- /* U+63E8 */ 0x935A, 0xBFAB, 0xBEBE, 0x935B, 0x935C, 0xBDD2, 0x935D, 0x935E,
- /* U+63F0 */ 0x935F, 0x9360, 0xDEE9, 0x9361, 0xD4AE, 0x9362, 0xDEDE, 0x9363,
- /* U+63F8 */ 0xDEEA, 0x9364, 0x9365, 0x9366, 0x9367, 0xC0BF, 0x9368, 0xDEEC,
- /* U+6400 */ 0xB2F3, 0xB8E9, 0xC2A7, 0x9369, 0x936A, 0xBDC1, 0x936B, 0x936C,
- /* U+6408 */ 0x936D, 0x936E, 0x936F, 0xDEF5, 0xDEF8, 0x9370, 0x9371, 0xB2AB,
- /* U+6410 */ 0xB4A4, 0x9372, 0x9373, 0xB4EA, 0xC9A6, 0x9374, 0x9375, 0x9376,
- /* U+6418 */ 0x9377, 0x9378, 0x9379, 0xDEF6, 0xCBD1, 0x937A, 0xB8E3, 0x937B,
- /* U+6420 */ 0xDEF7, 0xDEFA, 0x937C, 0x937D, 0x937E, 0x9380, 0xDEF9, 0x9381,
- /* U+6428 */ 0x9382, 0x9383, 0xCCC2, 0x9384, 0xB0E1, 0xB4EE, 0x9385, 0x9386,
- /* U+6430 */ 0x9387, 0x9388, 0x9389, 0x938A, 0xE5BA, 0x938B, 0x938C, 0x938D,
- /* U+6438 */ 0x938E, 0x938F, 0xD0AF, 0x9390, 0x9391, 0xB2EB, 0x9392, 0xEBA1,
- /* U+6440 */ 0x9393, 0xDEF4, 0x9394, 0x9395, 0xC9E3, 0xDEF3, 0xB0DA, 0xD2A1,
- /* U+6448 */ 0xB1F7, 0x9396, 0xCCAF, 0x9397, 0x9398, 0x9399, 0x939A, 0x939B,
- /* U+6450 */ 0x939C, 0x939D, 0xDEF0, 0x939E, 0xCBA4, 0x939F, 0x93A0, 0x93A1,
- /* U+6458 */ 0xD5AA, 0x93A2, 0x93A3, 0x93A4, 0x93A5, 0x93A6, 0xDEFB, 0x93A7,
- /* U+6460 */ 0x93A8, 0x93A9, 0x93AA, 0x93AB, 0x93AC, 0x93AD, 0x93AE, 0xB4DD,
- /* U+6468 */ 0x93AF, 0xC4A6, 0x93B0, 0x93B1, 0x93B2, 0xDEFD, 0x93B3, 0x93B4,
- /* U+6470 */ 0x93B5, 0x93B6, 0x93B7, 0x93B8, 0x93B9, 0x93BA, 0x93BB, 0x93BC,
- /* U+6478 */ 0xC3FE, 0xC4A1, 0xDFA1, 0x93BD, 0x93BE, 0x93BF, 0x93C0, 0x93C1,
- /* U+6480 */ 0x93C2, 0x93C3, 0xC1CC, 0x93C4, 0xDEFC, 0xBEEF, 0x93C5, 0xC6B2,
- /* U+6488 */ 0x93C6, 0x93C7, 0x93C8, 0x93C9, 0x93CA, 0x93CB, 0x93CC, 0x93CD,
- /* U+6490 */ 0x93CE, 0xB3C5, 0xC8F6, 0x93CF, 0x93D0, 0xCBBA, 0xDEFE, 0x93D1,
- /* U+6498 */ 0x93D2, 0xDFA4, 0x93D3, 0x93D4, 0x93D5, 0x93D6, 0xD7B2, 0x93D7,
- /* U+64A0 */ 0x93D8, 0x93D9, 0x93DA, 0x93DB, 0xB3B7, 0x93DC, 0x93DD, 0x93DE,
- /* U+64A8 */ 0x93DF, 0xC1C3, 0x93E0, 0x93E1, 0xC7CB, 0xB2A5, 0xB4E9, 0x93E2,
- /* U+64B0 */ 0xD7AB, 0x93E3, 0x93E4, 0x93E5, 0x93E6, 0xC4EC, 0x93E7, 0xDFA2,
- /* U+64B8 */ 0xDFA3, 0x93E8, 0xDFA5, 0x93E9, 0xBAB3, 0x93EA, 0x93EB, 0x93EC,
- /* U+64C0 */ 0xDFA6, 0x93ED, 0xC0DE, 0x93EE, 0x93EF, 0xC9C3, 0x93F0, 0x93F1,
- /* U+64C8 */ 0x93F2, 0x93F3, 0x93F4, 0x93F5, 0x93F6, 0xB2D9, 0xC7E6, 0x93F7,
- /* U+64D0 */ 0xDFA7, 0x93F8, 0xC7DC, 0x93F9, 0x93FA, 0x93FB, 0x93FC, 0xDFA8,
- /* U+64D8 */ 0xEBA2, 0x93FD, 0x93FE, 0x9440, 0x9441, 0x9442, 0xCBD3, 0x9443,
- /* U+64E0 */ 0x9444, 0x9445, 0xDFAA, 0x9446, 0xDFA9, 0x9447, 0xB2C1, 0x9448,
- /* U+64E8 */ 0x9449, 0x944A, 0x944B, 0x944C, 0x944D, 0x944E, 0x944F, 0x9450,
- /* U+64F0 */ 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457, 0x9458,
- /* U+64F8 */ 0x9459, 0x945A, 0x945B, 0x945C, 0x945D, 0x945E, 0x945F, 0x9460,
- /* U+6500 */ 0xC5CA, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467,
- /* U+6508 */ 0x9468, 0xDFAB, 0x9469, 0x946A, 0x946B, 0x946C, 0x946D, 0x946E,
- /* U+6510 */ 0x946F, 0x9470, 0xD4DC, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475,
- /* U+6518 */ 0xC8C1, 0x9476, 0x9477, 0x9478, 0x9479, 0x947A, 0x947B, 0x947C,
- /* U+6520 */ 0x947D, 0x947E, 0x9480, 0x9481, 0x9482, 0xDFAC, 0x9483, 0x9484,
- /* U+6528 */ 0x9485, 0x9486, 0x9487, 0xBEF0, 0x9488, 0x9489, 0xDFAD, 0xD6A7,
- /* U+6530 */ 0x948A, 0x948B, 0x948C, 0x948D, 0xEAB7, 0xEBB6, 0xCAD5, 0x948E,
- /* U+6538 */ 0xD8FC, 0xB8C4, 0x948F, 0xB9A5, 0x9490, 0x9491, 0xB7C5, 0xD5FE,
- /* U+6540 */ 0x9492, 0x9493, 0x9494, 0x9495, 0x9496, 0xB9CA, 0x9497, 0x9498,
- /* U+6548 */ 0xD0A7, 0xF4CD, 0x9499, 0x949A, 0xB5D0, 0x949B, 0x949C, 0xC3F4,
- /* U+6550 */ 0x949D, 0xBEC8, 0x949E, 0x949F, 0x94A0, 0xEBB7, 0xB0BD, 0x94A1,
- /* U+6558 */ 0x94A2, 0xBDCC, 0x94A3, 0xC1B2, 0x94A4, 0xB1D6, 0xB3A8, 0x94A5,
- /* U+6560 */ 0x94A6, 0x94A7, 0xB8D2, 0xC9A2, 0x94A8, 0x94A9, 0xB6D8, 0x94AA,
- /* U+6568 */ 0x94AB, 0x94AC, 0x94AD, 0xEBB8, 0xBEB4, 0x94AE, 0x94AF, 0x94B0,
- /* U+6570 */ 0xCAFD, 0x94B1, 0xC7C3, 0x94B2, 0xD5FB, 0x94B3, 0x94B4, 0xB7F3,
- /* U+6578 */ 0x94B5, 0x94B6, 0x94B7, 0x94B8, 0x94B9, 0x94BA, 0x94BB, 0x94BC,
- /* U+6580 */ 0x94BD, 0x94BE, 0x94BF, 0x94C0, 0x94C1, 0x94C2, 0x94C3, 0xCEC4,
- /* U+6588 */ 0x94C4, 0x94C5, 0x94C6, 0xD5AB, 0xB1F3, 0x94C7, 0x94C8, 0x94C9,
- /* U+6590 */ 0xECB3, 0xB0DF, 0x94CA, 0xECB5, 0x94CB, 0x94CC, 0x94CD, 0xB6B7,
- /* U+6598 */ 0x94CE, 0xC1CF, 0x94CF, 0xF5FA, 0xD0B1, 0x94D0, 0x94D1, 0xD5E5,
- /* U+65A0 */ 0x94D2, 0xCED3, 0x94D3, 0x94D4, 0xBDEF, 0xB3E2, 0x94D5, 0xB8AB,
- /* U+65A8 */ 0x94D6, 0xD5B6, 0x94D7, 0xEDBD, 0x94D8, 0xB6CF, 0x94D9, 0xCBB9,
- /* U+65B0 */ 0xD0C2, 0x94DA, 0x94DB, 0x94DC, 0x94DD, 0x94DE, 0x94DF, 0x94E0,
- /* U+65B8 */ 0x94E1, 0xB7BD, 0x94E2, 0x94E3, 0xECB6, 0xCAA9, 0x94E4, 0x94E5,
- /* U+65C0 */ 0x94E6, 0xC5D4, 0x94E7, 0xECB9, 0xECB8, 0xC2C3, 0xECB7, 0x94E8,
- /* U+65C8 */ 0x94E9, 0x94EA, 0x94EB, 0xD0FD, 0xECBA, 0x94EC, 0xECBB, 0xD7E5,
- /* U+65D0 */ 0x94ED, 0x94EE, 0xECBC, 0x94EF, 0x94F0, 0x94F1, 0xECBD, 0xC6EC,
- /* U+65D8 */ 0x94F2, 0x94F3, 0x94F4, 0x94F5, 0x94F6, 0x94F7, 0x94F8, 0x94F9,
- /* U+65E0 */ 0xCEDE, 0x94FA, 0xBCC8, 0x94FB, 0x94FC, 0xC8D5, 0xB5A9, 0xBEC9,
- /* U+65E8 */ 0xD6BC, 0xD4E7, 0x94FD, 0x94FE, 0xD1AE, 0xD0F1, 0xEAB8, 0xEAB9,
- /* U+65F0 */ 0xEABA, 0xBAB5, 0x9540, 0x9541, 0x9542, 0x9543, 0xCAB1, 0xBFF5,
- /* U+65F8 */ 0x9544, 0x9545, 0xCDFA, 0x9546, 0x9547, 0x9548, 0x9549, 0x954A,
- /* U+6600 */ 0xEAC0, 0x954B, 0xB0BA, 0xEABE, 0x954C, 0x954D, 0xC0A5, 0x954E,
- /* U+6608 */ 0x954F, 0x9550, 0xEABB, 0x9551, 0xB2FD, 0x9552, 0xC3F7, 0xBBE8,
- /* U+6610 */ 0x9553, 0x9554, 0x9555, 0xD2D7, 0xCEF4, 0xEABF, 0x9556, 0x9557,
- /* U+6618 */ 0x9558, 0xEABC, 0x9559, 0x955A, 0x955B, 0xEAC3, 0x955C, 0xD0C7,
- /* U+6620 */ 0xD3B3, 0x955D, 0x955E, 0x955F, 0x9560, 0xB4BA, 0x9561, 0xC3C1,
- /* U+6628 */ 0xD7F2, 0x9562, 0x9563, 0x9564, 0x9565, 0xD5D1, 0x9566, 0xCAC7,
- /* U+6630 */ 0x9567, 0xEAC5, 0x9568, 0x9569, 0xEAC4, 0xEAC7, 0xEAC6, 0x956A,
- /* U+6638 */ 0x956B, 0x956C, 0x956D, 0x956E, 0xD6E7, 0x956F, 0xCFD4, 0x9570,
- /* U+6640 */ 0x9571, 0xEACB, 0x9572, 0xBBCE, 0x9573, 0x9574, 0x9575, 0x9576,
- /* U+6648 */ 0x9577, 0x9578, 0x9579, 0xBDFA, 0xC9CE, 0x957A, 0x957B, 0xEACC,
- /* U+6650 */ 0x957C, 0x957D, 0xC9B9, 0xCFFE, 0xEACA, 0xD4CE, 0xEACD, 0xEACF,
- /* U+6658 */ 0x957E, 0x9580, 0xCDED, 0x9581, 0x9582, 0x9583, 0x9584, 0xEAC9,
- /* U+6660 */ 0x9585, 0xEACE, 0x9586, 0x9587, 0xCEEE, 0x9588, 0xBBDE, 0x9589,
- /* U+6668 */ 0xB3BF, 0x958A, 0x958B, 0x958C, 0x958D, 0x958E, 0xC6D5, 0xBEB0,
- /* U+6670 */ 0xCEFA, 0x958F, 0x9590, 0x9591, 0xC7E7, 0x9592, 0xBEA7, 0xEAD0,
- /* U+6678 */ 0x9593, 0x9594, 0xD6C7, 0x9595, 0x9596, 0x9597, 0xC1C0, 0x9598,
- /* U+6680 */ 0x9599, 0x959A, 0xD4DD, 0x959B, 0xEAD1, 0x959C, 0x959D, 0xCFBE,
- /* U+6688 */ 0x959E, 0x959F, 0x95A0, 0x95A1, 0xEAD2, 0x95A2, 0x95A3, 0x95A4,
- /* U+6690 */ 0x95A5, 0xCAEE, 0x95A6, 0x95A7, 0x95A8, 0x95A9, 0xC5AF, 0xB0B5,
- /* U+6698 */ 0x95AA, 0x95AB, 0x95AC, 0x95AD, 0x95AE, 0xEAD4, 0x95AF, 0x95B0,
- /* U+66A0 */ 0x95B1, 0x95B2, 0x95B3, 0x95B4, 0x95B5, 0x95B6, 0x95B7, 0xEAD3,
- /* U+66A8 */ 0xF4DF, 0x95B8, 0x95B9, 0x95BA, 0x95BB, 0x95BC, 0xC4BA, 0x95BD,
- /* U+66B0 */ 0x95BE, 0x95BF, 0x95C0, 0x95C1, 0xB1A9, 0x95C2, 0x95C3, 0x95C4,
- /* U+66B8 */ 0x95C5, 0xE5DF, 0x95C6, 0x95C7, 0x95C8, 0x95C9, 0xEAD5, 0x95CA,
- /* U+66C0 */ 0x95CB, 0x95CC, 0x95CD, 0x95CE, 0x95CF, 0x95D0, 0x95D1, 0x95D2,
- /* U+66C8 */ 0x95D3, 0x95D4, 0x95D5, 0x95D6, 0x95D7, 0x95D8, 0x95D9, 0x95DA,
- /* U+66D0 */ 0x95DB, 0x95DC, 0x95DD, 0x95DE, 0x95DF, 0x95E0, 0x95E1, 0x95E2,
- /* U+66D8 */ 0x95E3, 0xCAEF, 0x95E4, 0xEAD6, 0xEAD7, 0xC6D8, 0x95E5, 0x95E6,
- /* U+66E0 */ 0x95E7, 0x95E8, 0x95E9, 0x95EA, 0x95EB, 0x95EC, 0xEAD8, 0x95ED,
- /* U+66E8 */ 0x95EE, 0xEAD9, 0x95EF, 0x95F0, 0x95F1, 0x95F2, 0x95F3, 0x95F4,
- /* U+66F0 */ 0xD4BB, 0x95F5, 0xC7FA, 0xD2B7, 0xB8FC, 0x95F6, 0x95F7, 0xEAC2,
- /* U+66F8 */ 0x95F8, 0xB2DC, 0x95F9, 0x95FA, 0xC2FC, 0x95FB, 0xD4F8, 0xCCE6,
- /* U+6700 */ 0xD7EE, 0x95FC, 0x95FD, 0x95FE, 0x9640, 0x9641, 0x9642, 0x9643,
- /* U+6708 */ 0xD4C2, 0xD3D0, 0xEBC3, 0xC5F3, 0x9644, 0xB7FE, 0x9645, 0x9646,
- /* U+6710 */ 0xEBD4, 0x9647, 0x9648, 0x9649, 0xCBB7, 0xEBDE, 0x964A, 0xC0CA,
- /* U+6718 */ 0x964B, 0x964C, 0x964D, 0xCDFB, 0x964E, 0xB3AF, 0x964F, 0xC6DA,
- /* U+6720 */ 0x9650, 0x9651, 0x9652, 0x9653, 0x9654, 0x9655, 0xEBFC, 0x9656,
- /* U+6728 */ 0xC4BE, 0x9657, 0xCEB4, 0xC4A9, 0xB1BE, 0xD4FD, 0x9658, 0xCAF5,
- /* U+6730 */ 0x9659, 0xD6EC, 0x965A, 0x965B, 0xC6D3, 0xB6E4, 0x965C, 0x965D,
- /* U+6738 */ 0x965E, 0x965F, 0xBBFA, 0x9660, 0x9661, 0xD0E0, 0x9662, 0x9663,
- /* U+6740 */ 0xC9B1, 0x9664, 0xD4D3, 0xC8A8, 0x9665, 0x9666, 0xB8CB, 0x9667,
- /* U+6748 */ 0xE8BE, 0xC9BC, 0x9668, 0x9669, 0xE8BB, 0x966A, 0xC0EE, 0xD0D3,
- /* U+6750 */ 0xB2C4, 0xB4E5, 0x966B, 0xE8BC, 0x966C, 0x966D, 0xD5C8, 0x966E,
- /* U+6758 */ 0x966F, 0x9670, 0x9671, 0x9672, 0xB6C5, 0x9673, 0xE8BD, 0xCAF8,
- /* U+6760 */ 0xB8DC, 0xCCF5, 0x9674, 0x9675, 0x9676, 0xC0B4, 0x9677, 0x9678,
- /* U+6768 */ 0xD1EE, 0xE8BF, 0xE8C2, 0x9679, 0x967A, 0xBABC, 0x967B, 0xB1AD,
- /* U+6770 */ 0xBDDC, 0x967C, 0xEABD, 0xE8C3, 0x967D, 0xE8C6, 0x967E, 0xE8CB,
- /* U+6778 */ 0x9680, 0x9681, 0x9682, 0x9683, 0xE8CC, 0x9684, 0xCBC9, 0xB0E5,
- /* U+6780 */ 0x9685, 0xBCAB, 0x9686, 0x9687, 0xB9B9, 0x9688, 0x9689, 0xE8C1,
- /* U+6788 */ 0x968A, 0xCDF7, 0x968B, 0xE8CA, 0x968C, 0x968D, 0x968E, 0x968F,
- /* U+6790 */ 0xCEF6, 0x9690, 0x9691, 0x9692, 0x9693, 0xD5ED, 0x9694, 0xC1D6,
- /* U+6798 */ 0xE8C4, 0x9695, 0xC3B6, 0x9696, 0xB9FB, 0xD6A6, 0xE8C8, 0x9697,
- /* U+67A0 */ 0x9698, 0x9699, 0xCAE0, 0xD4E6, 0x969A, 0xE8C0, 0x969B, 0xE8C5,
- /* U+67A8 */ 0xE8C7, 0x969C, 0xC7B9, 0xB7E3, 0x969D, 0xE8C9, 0x969E, 0xBFDD,
- /* U+67B0 */ 0xE8D2, 0x969F, 0x96A0, 0xE8D7, 0x96A1, 0xE8D5, 0xBCDC, 0xBCCF,
- /* U+67B8 */ 0xE8DB, 0x96A2, 0x96A3, 0x96A4, 0x96A5, 0x96A6, 0x96A7, 0x96A8,
- /* U+67C0 */ 0x96A9, 0xE8DE, 0x96AA, 0xE8DA, 0xB1FA, 0x96AB, 0x96AC, 0x96AD,
- /* U+67C8 */ 0x96AE, 0x96AF, 0x96B0, 0x96B1, 0x96B2, 0x96B3, 0x96B4, 0xB0D8,
- /* U+67D0 */ 0xC4B3, 0xB8CC, 0xC6E2, 0xC8BE, 0xC8E1, 0x96B5, 0x96B6, 0x96B7,
- /* U+67D8 */ 0xE8CF, 0xE8D4, 0xE8D6, 0x96B8, 0xB9F1, 0xE8D8, 0xD7F5, 0x96B9,
- /* U+67E0 */ 0xC4FB, 0x96BA, 0xE8DC, 0x96BB, 0x96BC, 0xB2E9, 0x96BD, 0x96BE,
- /* U+67E8 */ 0x96BF, 0xE8D1, 0x96C0, 0x96C1, 0xBCED, 0x96C2, 0x96C3, 0xBFC2,
- /* U+67F0 */ 0xE8CD, 0xD6F9, 0x96C4, 0xC1F8, 0xB2F1, 0x96C5, 0x96C6, 0x96C7,
- /* U+67F8 */ 0x96C8, 0x96C9, 0x96CA, 0x96CB, 0x96CC, 0xE8DF, 0x96CD, 0xCAC1,
- /* U+6800 */ 0xE8D9, 0x96CE, 0x96CF, 0x96D0, 0x96D1, 0xD5A4, 0x96D2, 0xB1EA,
- /* U+6808 */ 0xD5BB, 0xE8CE, 0xE8D0, 0xB6B0, 0xE8D3, 0x96D3, 0xE8DD, 0xC0B8,
- /* U+6810 */ 0x96D4, 0xCAF7, 0x96D5, 0xCBA8, 0x96D6, 0x96D7, 0xC6DC, 0xC0F5,
- /* U+6818 */ 0x96D8, 0x96D9, 0x96DA, 0x96DB, 0x96DC, 0xE8E9, 0x96DD, 0x96DE,
- /* U+6820 */ 0x96DF, 0xD0A3, 0x96E0, 0x96E1, 0x96E2, 0x96E3, 0x96E4, 0x96E5,
- /* U+6828 */ 0x96E6, 0xE8F2, 0xD6EA, 0x96E7, 0x96E8, 0x96E9, 0x96EA, 0x96EB,
- /* U+6830 */ 0x96EC, 0x96ED, 0xE8E0, 0xE8E1, 0x96EE, 0x96EF, 0x96F0, 0xD1F9,
- /* U+6838 */ 0xBACB, 0xB8F9, 0x96F1, 0x96F2, 0xB8F1, 0xD4D4, 0xE8EF, 0x96F3,
- /* U+6840 */ 0xE8EE, 0xE8EC, 0xB9F0, 0xCCD2, 0xE8E6, 0xCEA6, 0xBFF2, 0x96F4,
- /* U+6848 */ 0xB0B8, 0xE8F1, 0xE8F0, 0x96F5, 0xD7C0, 0x96F6, 0xE8E4, 0x96F7,
- /* U+6850 */ 0xCDA9, 0xC9A3, 0x96F8, 0xBBB8, 0xBDDB, 0xE8EA, 0x96F9, 0x96FA,
- /* U+6858 */ 0x96FB, 0x96FC, 0x96FD, 0x96FE, 0x9740, 0x9741, 0x9742, 0x9743,
- /* U+6860 */ 0xE8E2, 0xE8E3, 0xE8E5, 0xB5B5, 0xE8E7, 0xC7C5, 0xE8EB, 0xE8ED,
- /* U+6868 */ 0xBDB0, 0xD7AE, 0x9744, 0xE8F8, 0x9745, 0x9746, 0x9747, 0x9748,
- /* U+6870 */ 0x9749, 0x974A, 0x974B, 0x974C, 0xE8F5, 0x974D, 0xCDB0, 0xE8F6,
- /* U+6878 */ 0x974E, 0x974F, 0x9750, 0x9751, 0x9752, 0x9753, 0x9754, 0x9755,
- /* U+6880 */ 0x9756, 0xC1BA, 0x9757, 0xE8E8, 0x9758, 0xC3B7, 0xB0F0, 0x9759,
- /* U+6888 */ 0x975A, 0x975B, 0x975C, 0x975D, 0x975E, 0x975F, 0x9760, 0xE8F4,
- /* U+6890 */ 0x9761, 0x9762, 0x9763, 0xE8F7, 0x9764, 0x9765, 0x9766, 0xB9A3,
- /* U+6898 */ 0x9767, 0x9768, 0x9769, 0x976A, 0x976B, 0x976C, 0x976D, 0x976E,
- /* U+68A0 */ 0x976F, 0x9770, 0xC9D2, 0x9771, 0x9772, 0x9773, 0xC3CE, 0xCEE0,
- /* U+68A8 */ 0xC0E6, 0x9774, 0x9775, 0x9776, 0x9777, 0xCBF3, 0x9778, 0xCCDD,
- /* U+68B0 */ 0xD0B5, 0x9779, 0x977A, 0xCAE1, 0x977B, 0xE8F3, 0x977C, 0x977D,
- /* U+68B8 */ 0x977E, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9785, 0x9786,
- /* U+68C0 */ 0xBCEC, 0x9787, 0xE8F9, 0x9788, 0x9789, 0x978A, 0x978B, 0x978C,
- /* U+68C8 */ 0x978D, 0xC3DE, 0x978E, 0xC6E5, 0x978F, 0xB9F7, 0x9790, 0x9791,
- /* U+68D0 */ 0x9792, 0x9793, 0xB0F4, 0x9794, 0x9795, 0xD7D8, 0x9796, 0x9797,
- /* U+68D8 */ 0xBCAC, 0x9798, 0xC5EF, 0x9799, 0x979A, 0x979B, 0x979C, 0x979D,
- /* U+68E0 */ 0xCCC4, 0x979E, 0x979F, 0xE9A6, 0x97A0, 0x97A1, 0x97A2, 0x97A3,
- /* U+68E8 */ 0x97A4, 0x97A5, 0x97A6, 0x97A7, 0x97A8, 0x97A9, 0xC9AD, 0x97AA,
- /* U+68F0 */ 0xE9A2, 0xC0E2, 0x97AB, 0x97AC, 0x97AD, 0xBFC3, 0x97AE, 0x97AF,
- /* U+68F8 */ 0x97B0, 0xE8FE, 0xB9D7, 0x97B1, 0xE8FB, 0x97B2, 0x97B3, 0x97B4,
- /* U+6900 */ 0x97B5, 0xE9A4, 0x97B6, 0x97B7, 0x97B8, 0xD2CE, 0x97B9, 0x97BA,
- /* U+6908 */ 0x97BB, 0x97BC, 0x97BD, 0xE9A3, 0x97BE, 0xD6B2, 0xD7B5, 0x97BF,
- /* U+6910 */ 0xE9A7, 0x97C0, 0xBDB7, 0x97C1, 0x97C2, 0x97C3, 0x97C4, 0x97C5,
- /* U+6918 */ 0x97C6, 0x97C7, 0x97C8, 0x97C9, 0x97CA, 0x97CB, 0x97CC, 0xE8FC,
- /* U+6920 */ 0xE8FD, 0x97CD, 0x97CE, 0x97CF, 0xE9A1, 0x97D0, 0x97D1, 0x97D2,
- /* U+6928 */ 0x97D3, 0x97D4, 0x97D5, 0x97D6, 0x97D7, 0xCDD6, 0x97D8, 0x97D9,
- /* U+6930 */ 0xD2AC, 0x97DA, 0x97DB, 0x97DC, 0xE9B2, 0x97DD, 0x97DE, 0x97DF,
- /* U+6938 */ 0x97E0, 0xE9A9, 0x97E1, 0x97E2, 0x97E3, 0xB4AA, 0x97E4, 0xB4BB,
- /* U+6940 */ 0x97E5, 0x97E6, 0xE9AB, 0x97E7, 0x97E8, 0x97E9, 0x97EA, 0x97EB,
- /* U+6948 */ 0x97EC, 0x97ED, 0x97EE, 0x97EF, 0x97F0, 0x97F1, 0x97F2, 0x97F3,
- /* U+6950 */ 0x97F4, 0x97F5, 0x97F6, 0x97F7, 0xD0A8, 0x97F8, 0x97F9, 0xE9A5,
- /* U+6958 */ 0x97FA, 0x97FB, 0xB3FE, 0x97FC, 0x97FD, 0xE9AC, 0xC0E3, 0x97FE,
- /* U+6960 */ 0xE9AA, 0x9840, 0x9841, 0xE9B9, 0x9842, 0x9843, 0xE9B8, 0x9844,
- /* U+6968 */ 0x9845, 0x9846, 0x9847, 0xE9AE, 0x9848, 0x9849, 0xE8FA, 0x984A,
- /* U+6970 */ 0x984B, 0xE9A8, 0x984C, 0x984D, 0x984E, 0x984F, 0x9850, 0xBFAC,
- /* U+6978 */ 0xE9B1, 0xE9BA, 0x9851, 0x9852, 0xC2A5, 0x9853, 0x9854, 0x9855,
- /* U+6980 */ 0xE9AF, 0x9856, 0xB8C5, 0x9857, 0xE9AD, 0x9858, 0xD3DC, 0xE9B4,
- /* U+6988 */ 0xE9B5, 0xE9B7, 0x9859, 0x985A, 0x985B, 0xE9C7, 0x985C, 0x985D,
- /* U+6990 */ 0x985E, 0x985F, 0x9860, 0x9861, 0xC0C6, 0xE9C5, 0x9862, 0x9863,
- /* U+6998 */ 0xE9B0, 0x9864, 0x9865, 0xE9BB, 0xB0F1, 0x9866, 0x9867, 0x9868,
- /* U+69A0 */ 0x9869, 0x986A, 0x986B, 0x986C, 0x986D, 0x986E, 0x986F, 0xE9BC,
- /* U+69A8 */ 0xD5A5, 0x9870, 0x9871, 0xE9BE, 0x9872, 0xE9BF, 0x9873, 0x9874,
- /* U+69B0 */ 0x9875, 0xE9C1, 0x9876, 0x9877, 0xC1F1, 0x9878, 0x9879, 0xC8B6,
- /* U+69B8 */ 0x987A, 0x987B, 0x987C, 0xE9BD, 0x987D, 0x987E, 0x9880, 0x9881,
- /* U+69C0 */ 0x9882, 0xE9C2, 0x9883, 0x9884, 0x9885, 0x9886, 0x9887, 0x9888,
- /* U+69C8 */ 0x9889, 0x988A, 0xE9C3, 0x988B, 0xE9B3, 0x988C, 0xE9B6, 0x988D,
- /* U+69D0 */ 0xBBB1, 0x988E, 0x988F, 0x9890, 0xE9C0, 0x9891, 0x9892, 0x9893,
- /* U+69D8 */ 0x9894, 0x9895, 0x9896, 0xBCF7, 0x9897, 0x9898, 0x9899, 0xE9C4,
- /* U+69E0 */ 0xE9C6, 0x989A, 0x989B, 0x989C, 0x989D, 0x989E, 0x989F, 0x98A0,
- /* U+69E8 */ 0x98A1, 0x98A2, 0x98A3, 0x98A4, 0x98A5, 0xE9CA, 0x98A6, 0x98A7,
- /* U+69F0 */ 0x98A8, 0x98A9, 0xE9CE, 0x98AA, 0x98AB, 0x98AC, 0x98AD, 0x98AE,
- /* U+69F8 */ 0x98AF, 0x98B0, 0x98B1, 0x98B2, 0x98B3, 0xB2DB, 0x98B4, 0xE9C8,
- /* U+6A00 */ 0x98B5, 0x98B6, 0x98B7, 0x98B8, 0x98B9, 0x98BA, 0x98BB, 0x98BC,
- /* U+6A08 */ 0x98BD, 0x98BE, 0xB7AE, 0x98BF, 0x98C0, 0x98C1, 0x98C2, 0x98C3,
- /* U+6A10 */ 0x98C4, 0x98C5, 0x98C6, 0x98C7, 0x98C8, 0x98C9, 0x98CA, 0xE9CB,
- /* U+6A18 */ 0xE9CC, 0x98CB, 0x98CC, 0x98CD, 0x98CE, 0x98CF, 0x98D0, 0xD5C1,
- /* U+6A20 */ 0x98D1, 0xC4A3, 0x98D2, 0x98D3, 0x98D4, 0x98D5, 0x98D6, 0x98D7,
- /* U+6A28 */ 0xE9D8, 0x98D8, 0xBAE1, 0x98D9, 0x98DA, 0x98DB, 0x98DC, 0xE9C9,
- /* U+6A30 */ 0x98DD, 0xD3A3, 0x98DE, 0x98DF, 0x98E0, 0xE9D4, 0x98E1, 0x98E2,
- /* U+6A38 */ 0x98E3, 0x98E4, 0x98E5, 0x98E6, 0x98E7, 0xE9D7, 0xE9D0, 0x98E8,
- /* U+6A40 */ 0x98E9, 0x98EA, 0x98EB, 0x98EC, 0xE9CF, 0x98ED, 0x98EE, 0xC7C1,
- /* U+6A48 */ 0x98EF, 0x98F0, 0x98F1, 0x98F2, 0x98F3, 0x98F4, 0x98F5, 0x98F6,
- /* U+6A50 */ 0xE9D2, 0x98F7, 0x98F8, 0x98F9, 0x98FA, 0x98FB, 0x98FC, 0x98FD,
- /* U+6A58 */ 0xE9D9, 0xB3C8, 0x98FE, 0xE9D3, 0x9940, 0x9941, 0x9942, 0x9943,
- /* U+6A60 */ 0x9944, 0xCFF0, 0x9945, 0x9946, 0x9947, 0xE9CD, 0x9948, 0x9949,
- /* U+6A68 */ 0x994A, 0x994B, 0x994C, 0x994D, 0x994E, 0x994F, 0x9950, 0x9951,
- /* U+6A70 */ 0x9952, 0xB3F7, 0x9953, 0x9954, 0x9955, 0x9956, 0x9957, 0x9958,
- /* U+6A78 */ 0x9959, 0xE9D6, 0x995A, 0x995B, 0xE9DA, 0x995C, 0x995D, 0x995E,
- /* U+6A80 */ 0xCCB4, 0x995F, 0x9960, 0x9961, 0xCFAD, 0x9962, 0x9963, 0x9964,
- /* U+6A88 */ 0x9965, 0x9966, 0x9967, 0x9968, 0x9969, 0x996A, 0xE9D5, 0x996B,
- /* U+6A90 */ 0xE9DC, 0xE9DB, 0x996C, 0x996D, 0x996E, 0x996F, 0x9970, 0xE9DE,
- /* U+6A98 */ 0x9971, 0x9972, 0x9973, 0x9974, 0x9975, 0x9976, 0x9977, 0x9978,
- /* U+6AA0 */ 0xE9D1, 0x9979, 0x997A, 0x997B, 0x997C, 0x997D, 0x997E, 0x9980,
- /* U+6AA8 */ 0x9981, 0xE9DD, 0x9982, 0xE9DF, 0xC3CA, 0x9983, 0x9984, 0x9985,
- /* U+6AB0 */ 0x9986, 0x9987, 0x9988, 0x9989, 0x998A, 0x998B, 0x998C, 0x998D,
- /* U+6AB8 */ 0x998E, 0x998F, 0x9990, 0x9991, 0x9992, 0x9993, 0x9994, 0x9995,
- /* U+6AC0 */ 0x9996, 0x9997, 0x9998, 0x9999, 0x999A, 0x999B, 0x999C, 0x999D,
- /* U+6AC8 */ 0x999E, 0x999F, 0x99A0, 0x99A1, 0x99A2, 0x99A3, 0x99A4, 0x99A5,
- /* U+6AD0 */ 0x99A6, 0x99A7, 0x99A8, 0x99A9, 0x99AA, 0x99AB, 0x99AC, 0x99AD,
- /* U+6AD8 */ 0x99AE, 0x99AF, 0x99B0, 0x99B1, 0x99B2, 0x99B3, 0x99B4, 0x99B5,
- /* U+6AE0 */ 0x99B6, 0x99B7, 0x99B8, 0x99B9, 0x99BA, 0x99BB, 0x99BC, 0x99BD,
- /* U+6AE8 */ 0x99BE, 0x99BF, 0x99C0, 0x99C1, 0x99C2, 0x99C3, 0x99C4, 0x99C5,
- /* U+6AF0 */ 0x99C6, 0x99C7, 0x99C8, 0x99C9, 0x99CA, 0x99CB, 0x99CC, 0x99CD,
- /* U+6AF8 */ 0x99CE, 0x99CF, 0x99D0, 0x99D1, 0x99D2, 0x99D3, 0x99D4, 0x99D5,
- /* U+6B00 */ 0x99D6, 0x99D7, 0x99D8, 0x99D9, 0x99DA, 0x99DB, 0x99DC, 0x99DD,
- /* U+6B08 */ 0x99DE, 0x99DF, 0x99E0, 0x99E1, 0x99E2, 0x99E3, 0x99E4, 0x99E5,
- /* U+6B10 */ 0x99E6, 0x99E7, 0x99E8, 0x99E9, 0x99EA, 0x99EB, 0x99EC, 0x99ED,
- /* U+6B18 */ 0x99EE, 0x99EF, 0x99F0, 0x99F1, 0x99F2, 0x99F3, 0x99F4, 0x99F5,
- /* U+6B20 */ 0xC7B7, 0xB4CE, 0xBBB6, 0xD0C0, 0xECA3, 0x99F6, 0x99F7, 0xC5B7,
- /* U+6B28 */ 0x99F8, 0x99F9, 0x99FA, 0x99FB, 0x99FC, 0x99FD, 0x99FE, 0x9A40,
- /* U+6B30 */ 0x9A41, 0x9A42, 0xD3FB, 0x9A43, 0x9A44, 0x9A45, 0x9A46, 0xECA4,
- /* U+6B38 */ 0x9A47, 0xECA5, 0xC6DB, 0x9A48, 0x9A49, 0x9A4A, 0xBFEE, 0x9A4B,
- /* U+6B40 */ 0x9A4C, 0x9A4D, 0x9A4E, 0xECA6, 0x9A4F, 0x9A50, 0xECA7, 0xD0AA,
- /* U+6B48 */ 0x9A51, 0xC7B8, 0x9A52, 0x9A53, 0xB8E8, 0x9A54, 0x9A55, 0x9A56,
- /* U+6B50 */ 0x9A57, 0x9A58, 0x9A59, 0x9A5A, 0x9A5B, 0x9A5C, 0x9A5D, 0x9A5E,
- /* U+6B58 */ 0x9A5F, 0xECA8, 0x9A60, 0x9A61, 0x9A62, 0x9A63, 0x9A64, 0x9A65,
- /* U+6B60 */ 0x9A66, 0x9A67, 0xD6B9, 0xD5FD, 0xB4CB, 0xB2BD, 0xCEE4, 0xC6E7,
- /* U+6B68 */ 0x9A68, 0x9A69, 0xCDE1, 0x9A6A, 0x9A6B, 0x9A6C, 0x9A6D, 0x9A6E,
- /* U+6B70 */ 0x9A6F, 0x9A70, 0x9A71, 0x9A72, 0x9A73, 0x9A74, 0x9A75, 0x9A76,
- /* U+6B78 */ 0x9A77, 0xB4F5, 0x9A78, 0xCBC0, 0xBCDF, 0x9A79, 0x9A7A, 0x9A7B,
- /* U+6B80 */ 0x9A7C, 0xE9E2, 0xE9E3, 0xD1EA, 0xE9E5, 0x9A7D, 0xB4F9, 0xE9E4,
- /* U+6B88 */ 0x9A7E, 0xD1B3, 0xCAE2, 0xB2D0, 0x9A80, 0xE9E8, 0x9A81, 0x9A82,
- /* U+6B90 */ 0x9A83, 0x9A84, 0xE9E6, 0xE9E7, 0x9A85, 0x9A86, 0xD6B3, 0x9A87,
- /* U+6B98 */ 0x9A88, 0x9A89, 0xE9E9, 0xE9EA, 0x9A8A, 0x9A8B, 0x9A8C, 0x9A8D,
- /* U+6BA0 */ 0x9A8E, 0xE9EB, 0x9A8F, 0x9A90, 0x9A91, 0x9A92, 0x9A93, 0x9A94,
- /* U+6BA8 */ 0x9A95, 0x9A96, 0xE9EC, 0x9A97, 0x9A98, 0x9A99, 0x9A9A, 0x9A9B,
- /* U+6BB0 */ 0x9A9C, 0x9A9D, 0x9A9E, 0xECAF, 0xC5B9, 0xB6CE, 0x9A9F, 0xD2F3,
- /* U+6BB8 */ 0x9AA0, 0x9AA1, 0x9AA2, 0x9AA3, 0x9AA4, 0x9AA5, 0x9AA6, 0xB5EE,
- /* U+6BC0 */ 0x9AA7, 0xBBD9, 0xECB1, 0x9AA8, 0x9AA9, 0xD2E3, 0x9AAA, 0x9AAB,
- /* U+6BC8 */ 0x9AAC, 0x9AAD, 0x9AAE, 0xCEE3, 0x9AAF, 0xC4B8, 0x9AB0, 0xC3BF,
- /* U+6BD0 */ 0x9AB1, 0x9AB2, 0xB6BE, 0xD8B9, 0xB1C8, 0xB1CF, 0xB1D1, 0xC5FE,
- /* U+6BD8 */ 0x9AB3, 0xB1D0, 0x9AB4, 0xC3AB, 0x9AB5, 0x9AB6, 0x9AB7, 0x9AB8,
- /* U+6BE0 */ 0x9AB9, 0xD5B1, 0x9ABA, 0x9ABB, 0x9ABC, 0x9ABD, 0x9ABE, 0x9ABF,
- /* U+6BE8 */ 0x9AC0, 0x9AC1, 0xEBA4, 0xBAC1, 0x9AC2, 0x9AC3, 0x9AC4, 0xCCBA,
- /* U+6BF0 */ 0x9AC5, 0x9AC6, 0x9AC7, 0xEBA5, 0x9AC8, 0xEBA7, 0x9AC9, 0x9ACA,
- /* U+6BF8 */ 0x9ACB, 0xEBA8, 0x9ACC, 0x9ACD, 0x9ACE, 0xEBA6, 0x9ACF, 0x9AD0,
- /* U+6C00 */ 0x9AD1, 0x9AD2, 0x9AD3, 0x9AD4, 0x9AD5, 0xEBA9, 0xEBAB, 0xEBAA,
- /* U+6C08 */ 0x9AD6, 0x9AD7, 0x9AD8, 0x9AD9, 0x9ADA, 0xEBAC, 0x9ADB, 0xCACF,
- /* U+6C10 */ 0xD8B5, 0xC3F1, 0x9ADC, 0xC3A5, 0xC6F8, 0xEBAD, 0xC4CA, 0x9ADD,
- /* U+6C18 */ 0xEBAE, 0xEBAF, 0xEBB0, 0xB7D5, 0x9ADE, 0x9ADF, 0x9AE0, 0xB7FA,
- /* U+6C20 */ 0x9AE1, 0xEBB1, 0xC7E2, 0x9AE2, 0xEBB3, 0x9AE3, 0xBAA4, 0xD1F5,
- /* U+6C28 */ 0xB0B1, 0xEBB2, 0xEBB4, 0x9AE4, 0x9AE5, 0x9AE6, 0xB5AA, 0xC2C8,
- /* U+6C30 */ 0xC7E8, 0x9AE7, 0xEBB5, 0x9AE8, 0xCBAE, 0xE3DF, 0x9AE9, 0x9AEA,
- /* U+6C38 */ 0xD3C0, 0x9AEB, 0x9AEC, 0x9AED, 0x9AEE, 0xD9DB, 0x9AEF, 0x9AF0,
- /* U+6C40 */ 0xCDA1, 0xD6AD, 0xC7F3, 0x9AF1, 0x9AF2, 0x9AF3, 0xD9E0, 0xBBE3,
- /* U+6C48 */ 0x9AF4, 0xBABA, 0xE3E2, 0x9AF5, 0x9AF6, 0x9AF7, 0x9AF8, 0x9AF9,
- /* U+6C50 */ 0xCFAB, 0x9AFA, 0x9AFB, 0x9AFC, 0xE3E0, 0xC9C7, 0x9AFD, 0xBAB9,
- /* U+6C58 */ 0x9AFE, 0x9B40, 0x9B41, 0xD1B4, 0xE3E1, 0xC8EA, 0xB9AF, 0xBDAD,
- /* U+6C60 */ 0xB3D8, 0xCEDB, 0x9B42, 0x9B43, 0xCCC0, 0x9B44, 0x9B45, 0x9B46,
- /* U+6C68 */ 0xE3E8, 0xE3E9, 0xCDF4, 0x9B47, 0x9B48, 0x9B49, 0x9B4A, 0x9B4B,
- /* U+6C70 */ 0xCCAD, 0x9B4C, 0xBCB3, 0x9B4D, 0xE3EA, 0x9B4E, 0xE3EB, 0x9B4F,
- /* U+6C78 */ 0x9B50, 0xD0DA, 0x9B51, 0x9B52, 0x9B53, 0xC6FB, 0xB7DA, 0x9B54,
- /* U+6C80 */ 0x9B55, 0xC7DF, 0xD2CA, 0xCED6, 0x9B56, 0xE3E4, 0xE3EC, 0x9B57,
- /* U+6C88 */ 0xC9F2, 0xB3C1, 0x9B58, 0x9B59, 0xE3E7, 0x9B5A, 0x9B5B, 0xC6E3,
- /* U+6C90 */ 0xE3E5, 0x9B5C, 0x9B5D, 0xEDB3, 0xE3E6, 0x9B5E, 0x9B5F, 0x9B60,
- /* U+6C98 */ 0x9B61, 0xC9B3, 0x9B62, 0xC5E6, 0x9B63, 0x9B64, 0x9B65, 0xB9B5,
- /* U+6CA0 */ 0x9B66, 0xC3BB, 0x9B67, 0xE3E3, 0xC5BD, 0xC1A4, 0xC2D9, 0xB2D7,
- /* U+6CA8 */ 0x9B68, 0xE3ED, 0xBBA6, 0xC4AD, 0x9B69, 0xE3F0, 0xBEDA, 0x9B6A,
- /* U+6CB0 */ 0x9B6B, 0xE3FB, 0xE3F5, 0xBAD3, 0x9B6C, 0x9B6D, 0x9B6E, 0x9B6F,
- /* U+6CB8 */ 0xB7D0, 0xD3CD, 0x9B70, 0xD6CE, 0xD5D3, 0xB9C1, 0xD5B4, 0xD1D8,
- /* U+6CC0 */ 0x9B71, 0x9B72, 0x9B73, 0x9B74, 0xD0B9, 0xC7F6, 0x9B75, 0x9B76,
- /* U+6CC8 */ 0x9B77, 0xC8AA, 0xB2B4, 0x9B78, 0xC3DA, 0x9B79, 0x9B7A, 0x9B7B,
- /* U+6CD0 */ 0xE3EE, 0x9B7C, 0x9B7D, 0xE3FC, 0xE3EF, 0xB7A8, 0xE3F7, 0xE3F4,
- /* U+6CD8 */ 0x9B7E, 0x9B80, 0x9B81, 0xB7BA, 0x9B82, 0x9B83, 0xC5A2, 0x9B84,
- /* U+6CE0 */ 0xE3F6, 0xC5DD, 0xB2A8, 0xC6FC, 0x9B85, 0xC4E0, 0x9B86, 0x9B87,
- /* U+6CE8 */ 0xD7A2, 0x9B88, 0xC0E1, 0xE3F9, 0x9B89, 0x9B8A, 0xE3FA, 0xE3FD,
- /* U+6CF0 */ 0xCCA9, 0xE3F3, 0x9B8B, 0xD3BE, 0x9B8C, 0xB1C3, 0xEDB4, 0xE3F1,
- /* U+6CF8 */ 0xE3F2, 0x9B8D, 0xE3F8, 0xD0BA, 0xC6C3, 0xD4F3, 0xE3FE, 0x9B8E,
- /* U+6D00 */ 0x9B8F, 0xBDE0, 0x9B90, 0x9B91, 0xE4A7, 0x9B92, 0x9B93, 0xE4A6,
- /* U+6D08 */ 0x9B94, 0x9B95, 0x9B96, 0xD1F3, 0xE4A3, 0x9B97, 0xE4A9, 0x9B98,
- /* U+6D10 */ 0x9B99, 0x9B9A, 0xC8F7, 0x9B9B, 0x9B9C, 0x9B9D, 0x9B9E, 0xCFB4,
- /* U+6D18 */ 0x9B9F, 0xE4A8, 0xE4AE, 0xC2E5, 0x9BA0, 0x9BA1, 0xB6B4, 0x9BA2,
- /* U+6D20 */ 0x9BA3, 0x9BA4, 0x9BA5, 0x9BA6, 0x9BA7, 0xBDF2, 0x9BA8, 0xE4A2,
- /* U+6D28 */ 0x9BA9, 0x9BAA, 0xBAE9, 0xE4AA, 0x9BAB, 0x9BAC, 0xE4AC, 0x9BAD,
- /* U+6D30 */ 0x9BAE, 0xB6FD, 0xD6DE, 0xE4B2, 0x9BAF, 0xE4AD, 0x9BB0, 0x9BB1,
- /* U+6D38 */ 0x9BB2, 0xE4A1, 0x9BB3, 0xBBEE, 0xCDDD, 0xC7A2, 0xC5C9, 0x9BB4,
- /* U+6D40 */ 0x9BB5, 0xC1F7, 0x9BB6, 0xE4A4, 0x9BB7, 0xC7B3, 0xBDAC, 0xBDBD,
- /* U+6D48 */ 0xE4A5, 0x9BB8, 0xD7C7, 0xB2E2, 0x9BB9, 0xE4AB, 0xBCC3, 0xE4AF,
- /* U+6D50 */ 0x9BBA, 0xBBEB, 0xE4B0, 0xC5A8, 0xE4B1, 0x9BBB, 0x9BBC, 0x9BBD,
- /* U+6D58 */ 0x9BBE, 0xD5E3, 0xBFA3, 0x9BBF, 0xE4BA, 0x9BC0, 0xE4B7, 0x9BC1,
- /* U+6D60 */ 0xE4BB, 0x9BC2, 0x9BC3, 0xE4BD, 0x9BC4, 0x9BC5, 0xC6D6, 0x9BC6,
- /* U+6D68 */ 0x9BC7, 0xBAC6, 0xC0CB, 0x9BC8, 0x9BC9, 0x9BCA, 0xB8A1, 0xE4B4,
- /* U+6D70 */ 0x9BCB, 0x9BCC, 0x9BCD, 0x9BCE, 0xD4A1, 0x9BCF, 0x9BD0, 0xBAA3,
- /* U+6D78 */ 0xBDFE, 0x9BD1, 0x9BD2, 0x9BD3, 0xE4BC, 0x9BD4, 0x9BD5, 0x9BD6,
- /* U+6D80 */ 0x9BD7, 0x9BD8, 0xCDBF, 0x9BD9, 0x9BDA, 0xC4F9, 0x9BDB, 0x9BDC,
- /* U+6D88 */ 0xCFFB, 0xC9E6, 0x9BDD, 0x9BDE, 0xD3BF, 0x9BDF, 0xCFD1, 0x9BE0,
- /* U+6D90 */ 0x9BE1, 0xE4B3, 0x9BE2, 0xE4B8, 0xE4B9, 0xCCE9, 0x9BE3, 0x9BE4,
- /* U+6D98 */ 0x9BE5, 0x9BE6, 0x9BE7, 0xCCCE, 0x9BE8, 0xC0D4, 0xE4B5, 0xC1B0,
- /* U+6DA0 */ 0xE4B6, 0xCED0, 0x9BE9, 0xBBC1, 0xB5D3, 0x9BEA, 0xC8F3, 0xBDA7,
- /* U+6DA8 */ 0xD5C7, 0xC9AC, 0xB8A2, 0xE4CA, 0x9BEB, 0x9BEC, 0xE4CC, 0xD1C4,
- /* U+6DB0 */ 0x9BED, 0x9BEE, 0xD2BA, 0x9BEF, 0x9BF0, 0xBAAD, 0x9BF1, 0x9BF2,
- /* U+6DB8 */ 0xBAD4, 0x9BF3, 0x9BF4, 0x9BF5, 0x9BF6, 0x9BF7, 0x9BF8, 0xE4C3,
- /* U+6DC0 */ 0xB5ED, 0x9BF9, 0x9BFA, 0x9BFB, 0xD7CD, 0xE4C0, 0xCFFD, 0xE4BF,
- /* U+6DC8 */ 0x9BFC, 0x9BFD, 0x9BFE, 0xC1DC, 0xCCCA, 0x9C40, 0x9C41, 0x9C42,
- /* U+6DD0 */ 0x9C43, 0xCAE7, 0x9C44, 0x9C45, 0x9C46, 0x9C47, 0xC4D7, 0x9C48,
- /* U+6DD8 */ 0xCCD4, 0xE4C8, 0x9C49, 0x9C4A, 0x9C4B, 0xE4C7, 0xE4C1, 0x9C4C,
- /* U+6DE0 */ 0xE4C4, 0xB5AD, 0x9C4D, 0x9C4E, 0xD3D9, 0x9C4F, 0xE4C6, 0x9C50,
- /* U+6DE8 */ 0x9C51, 0x9C52, 0x9C53, 0xD2F9, 0xB4E3, 0x9C54, 0xBBB4, 0x9C55,
- /* U+6DF0 */ 0x9C56, 0xC9EE, 0x9C57, 0xB4BE, 0x9C58, 0x9C59, 0x9C5A, 0xBBEC,
- /* U+6DF8 */ 0x9C5B, 0xD1CD, 0x9C5C, 0xCCED, 0xEDB5, 0x9C5D, 0x9C5E, 0x9C5F,
- /* U+6E00 */ 0x9C60, 0x9C61, 0x9C62, 0x9C63, 0x9C64, 0xC7E5, 0x9C65, 0x9C66,
- /* U+6E08 */ 0x9C67, 0x9C68, 0xD4A8, 0x9C69, 0xE4CB, 0xD7D5, 0xE4C2, 0x9C6A,
- /* U+6E10 */ 0xBDA5, 0xE4C5, 0x9C6B, 0x9C6C, 0xD3E6, 0x9C6D, 0xE4C9, 0xC9F8,
- /* U+6E18 */ 0x9C6E, 0x9C6F, 0xE4BE, 0x9C70, 0x9C71, 0xD3E5, 0x9C72, 0x9C73,
- /* U+6E20 */ 0xC7FE, 0xB6C9, 0x9C74, 0xD4FC, 0xB2B3, 0xE4D7, 0x9C75, 0x9C76,
- /* U+6E28 */ 0x9C77, 0xCEC2, 0x9C78, 0xE4CD, 0x9C79, 0xCEBC, 0x9C7A, 0xB8DB,
- /* U+6E30 */ 0x9C7B, 0x9C7C, 0xE4D6, 0x9C7D, 0xBFCA, 0x9C7E, 0x9C80, 0x9C81,
- /* U+6E38 */ 0xD3CE, 0x9C82, 0xC3EC, 0x9C83, 0x9C84, 0x9C85, 0x9C86, 0x9C87,
- /* U+6E40 */ 0x9C88, 0x9C89, 0x9C8A, 0xC5C8, 0xE4D8, 0x9C8B, 0x9C8C, 0x9C8D,
- /* U+6E48 */ 0x9C8E, 0x9C8F, 0x9C90, 0x9C91, 0x9C92, 0xCDC4, 0xE4CF, 0x9C93,
- /* U+6E50 */ 0x9C94, 0x9C95, 0x9C96, 0xE4D4, 0xE4D5, 0x9C97, 0xBAFE, 0x9C98,
- /* U+6E58 */ 0xCFE6, 0x9C99, 0x9C9A, 0xD5BF, 0x9C9B, 0x9C9C, 0x9C9D, 0xE4D2,
- /* U+6E60 */ 0x9C9E, 0x9C9F, 0x9CA0, 0x9CA1, 0x9CA2, 0x9CA3, 0x9CA4, 0x9CA5,
- /* U+6E68 */ 0x9CA6, 0x9CA7, 0x9CA8, 0xE4D0, 0x9CA9, 0x9CAA, 0xE4CE, 0x9CAB,
- /* U+6E70 */ 0x9CAC, 0x9CAD, 0x9CAE, 0x9CAF, 0x9CB0, 0x9CB1, 0x9CB2, 0x9CB3,
- /* U+6E78 */ 0x9CB4, 0x9CB5, 0x9CB6, 0x9CB7, 0x9CB8, 0x9CB9, 0xCDE5, 0xCAAA,
- /* U+6E80 */ 0x9CBA, 0x9CBB, 0x9CBC, 0xC0A3, 0x9CBD, 0xBDA6, 0xE4D3, 0x9CBE,
- /* U+6E88 */ 0x9CBF, 0xB8C8, 0x9CC0, 0x9CC1, 0x9CC2, 0x9CC3, 0x9CC4, 0xE4E7,
- /* U+6E90 */ 0xD4B4, 0x9CC5, 0x9CC6, 0x9CC7, 0x9CC8, 0x9CC9, 0x9CCA, 0x9CCB,
- /* U+6E98 */ 0xE4DB, 0x9CCC, 0x9CCD, 0x9CCE, 0xC1EF, 0x9CCF, 0x9CD0, 0xE4E9,
- /* U+6EA0 */ 0x9CD1, 0x9CD2, 0xD2E7, 0x9CD3, 0x9CD4, 0xE4DF, 0x9CD5, 0xE4E0,
- /* U+6EA8 */ 0x9CD6, 0x9CD7, 0xCFAA, 0x9CD8, 0x9CD9, 0x9CDA, 0x9CDB, 0xCBDD,
- /* U+6EB0 */ 0x9CDC, 0xE4DA, 0xE4D1, 0x9CDD, 0xE4E5, 0x9CDE, 0xC8DC, 0xE4E3,
- /* U+6EB8 */ 0x9CDF, 0x9CE0, 0xC4E7, 0xE4E2, 0x9CE1, 0xE4E1, 0x9CE2, 0x9CE3,
- /* U+6EC0 */ 0x9CE4, 0xB3FC, 0xE4E8, 0x9CE5, 0x9CE6, 0x9CE7, 0x9CE8, 0xB5E1,
- /* U+6EC8 */ 0x9CE9, 0x9CEA, 0x9CEB, 0xD7CC, 0x9CEC, 0x9CED, 0x9CEE, 0xE4E6,
- /* U+6ED0 */ 0x9CEF, 0xBBAC, 0x9CF0, 0xD7D2, 0xCCCF, 0xEBF8, 0x9CF1, 0xE4E4,
- /* U+6ED8 */ 0x9CF2, 0x9CF3, 0xB9F6, 0x9CF4, 0x9CF5, 0x9CF6, 0xD6CD, 0xE4D9,
- /* U+6EE0 */ 0xE4DC, 0xC2FA, 0xE4DE, 0x9CF7, 0xC2CB, 0xC0C4, 0xC2D0, 0x9CF8,
- /* U+6EE8 */ 0xB1F5, 0xCCB2, 0x9CF9, 0x9CFA, 0x9CFB, 0x9CFC, 0x9CFD, 0x9CFE,
- /* U+6EF0 */ 0x9D40, 0x9D41, 0x9D42, 0x9D43, 0xB5CE, 0x9D44, 0x9D45, 0x9D46,
- /* U+6EF8 */ 0x9D47, 0xE4EF, 0x9D48, 0x9D49, 0x9D4A, 0x9D4B, 0x9D4C, 0x9D4D,
- /* U+6F00 */ 0x9D4E, 0x9D4F, 0xC6AF, 0x9D50, 0x9D51, 0x9D52, 0xC6E1, 0x9D53,
- /* U+6F08 */ 0x9D54, 0xE4F5, 0x9D55, 0x9D56, 0x9D57, 0x9D58, 0x9D59, 0xC2A9,
- /* U+6F10 */ 0x9D5A, 0x9D5B, 0x9D5C, 0xC0EC, 0xD1DD, 0xE4EE, 0x9D5D, 0x9D5E,
- /* U+6F18 */ 0x9D5F, 0x9D60, 0x9D61, 0x9D62, 0x9D63, 0x9D64, 0x9D65, 0x9D66,
- /* U+6F20 */ 0xC4AE, 0x9D67, 0x9D68, 0x9D69, 0xE4ED, 0x9D6A, 0x9D6B, 0x9D6C,
- /* U+6F28 */ 0x9D6D, 0xE4F6, 0xE4F4, 0xC2FE, 0x9D6E, 0xE4DD, 0x9D6F, 0xE4F0,
- /* U+6F30 */ 0x9D70, 0xCAFE, 0x9D71, 0xD5C4, 0x9D72, 0x9D73, 0xE4F1, 0x9D74,
- /* U+6F38 */ 0x9D75, 0x9D76, 0x9D77, 0x9D78, 0x9D79, 0x9D7A, 0xD1FA, 0x9D7B,
- /* U+6F40 */ 0x9D7C, 0x9D7D, 0x9D7E, 0x9D80, 0x9D81, 0x9D82, 0xE4EB, 0xE4EC,
- /* U+6F48 */ 0x9D83, 0x9D84, 0x9D85, 0xE4F2, 0x9D86, 0xCEAB, 0x9D87, 0x9D88,
- /* U+6F50 */ 0x9D89, 0x9D8A, 0x9D8B, 0x9D8C, 0x9D8D, 0x9D8E, 0x9D8F, 0x9D90,
- /* U+6F58 */ 0xC5CB, 0x9D91, 0x9D92, 0x9D93, 0xC7B1, 0x9D94, 0xC2BA, 0x9D95,
- /* U+6F60 */ 0x9D96, 0x9D97, 0xE4EA, 0x9D98, 0x9D99, 0x9D9A, 0xC1CA, 0x9D9B,
- /* U+6F68 */ 0x9D9C, 0x9D9D, 0x9D9E, 0x9D9F, 0x9DA0, 0xCCB6, 0xB3B1, 0x9DA1,
- /* U+6F70 */ 0x9DA2, 0x9DA3, 0xE4FB, 0x9DA4, 0xE4F3, 0x9DA5, 0x9DA6, 0x9DA7,
- /* U+6F78 */ 0xE4FA, 0x9DA8, 0xE4FD, 0x9DA9, 0xE4FC, 0x9DAA, 0x9DAB, 0x9DAC,
- /* U+6F80 */ 0x9DAD, 0x9DAE, 0x9DAF, 0x9DB0, 0xB3CE, 0x9DB1, 0x9DB2, 0x9DB3,
- /* U+6F88 */ 0xB3BA, 0xE4F7, 0x9DB4, 0x9DB5, 0xE4F9, 0xE4F8, 0xC5EC, 0x9DB6,
- /* U+6F90 */ 0x9DB7, 0x9DB8, 0x9DB9, 0x9DBA, 0x9DBB, 0x9DBC, 0x9DBD, 0x9DBE,
- /* U+6F98 */ 0x9DBF, 0x9DC0, 0x9DC1, 0x9DC2, 0xC0BD, 0x9DC3, 0x9DC4, 0x9DC5,
- /* U+6FA0 */ 0x9DC6, 0xD4E8, 0x9DC7, 0x9DC8, 0x9DC9, 0x9DCA, 0x9DCB, 0xE5A2,
- /* U+6FA8 */ 0x9DCC, 0x9DCD, 0x9DCE, 0x9DCF, 0x9DD0, 0x9DD1, 0x9DD2, 0x9DD3,
- /* U+6FB0 */ 0x9DD4, 0x9DD5, 0x9DD6, 0xB0C4, 0x9DD7, 0x9DD8, 0xE5A4, 0x9DD9,
- /* U+6FB8 */ 0x9DDA, 0xE5A3, 0x9DDB, 0x9DDC, 0x9DDD, 0x9DDE, 0x9DDF, 0x9DE0,
- /* U+6FC0 */ 0xBCA4, 0x9DE1, 0xE5A5, 0x9DE2, 0x9DE3, 0x9DE4, 0x9DE5, 0x9DE6,
- /* U+6FC8 */ 0x9DE7, 0xE5A1, 0x9DE8, 0x9DE9, 0x9DEA, 0x9DEB, 0x9DEC, 0x9DED,
- /* U+6FD0 */ 0x9DEE, 0xE4FE, 0xB1F4, 0x9DEF, 0x9DF0, 0x9DF1, 0x9DF2, 0x9DF3,
- /* U+6FD8 */ 0x9DF4, 0x9DF5, 0x9DF6, 0x9DF7, 0x9DF8, 0x9DF9, 0xE5A8, 0x9DFA,
- /* U+6FE0 */ 0xE5A9, 0xE5A6, 0x9DFB, 0x9DFC, 0x9DFD, 0x9DFE, 0x9E40, 0x9E41,
- /* U+6FE8 */ 0x9E42, 0x9E43, 0x9E44, 0x9E45, 0x9E46, 0x9E47, 0xE5A7, 0xE5AA,
- /* U+6FF0 */ 0x9E48, 0x9E49, 0x9E4A, 0x9E4B, 0x9E4C, 0x9E4D, 0x9E4E, 0x9E4F,
- /* U+6FF8 */ 0x9E50, 0x9E51, 0x9E52, 0x9E53, 0x9E54, 0x9E55, 0x9E56, 0x9E57,
- /* U+7000 */ 0x9E58, 0x9E59, 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5D, 0x9E5E, 0x9E5F,
- /* U+7008 */ 0x9E60, 0x9E61, 0x9E62, 0x9E63, 0x9E64, 0x9E65, 0x9E66, 0x9E67,
- /* U+7010 */ 0x9E68, 0xC6D9, 0x9E69, 0x9E6A, 0x9E6B, 0x9E6C, 0x9E6D, 0x9E6E,
- /* U+7018 */ 0x9E6F, 0x9E70, 0xE5AB, 0xE5AD, 0x9E71, 0x9E72, 0x9E73, 0x9E74,
- /* U+7020 */ 0x9E75, 0x9E76, 0x9E77, 0xE5AC, 0x9E78, 0x9E79, 0x9E7A, 0x9E7B,
- /* U+7028 */ 0x9E7C, 0x9E7D, 0x9E7E, 0x9E80, 0x9E81, 0x9E82, 0x9E83, 0x9E84,
- /* U+7030 */ 0x9E85, 0x9E86, 0x9E87, 0x9E88, 0x9E89, 0xE5AF, 0x9E8A, 0x9E8B,
- /* U+7038 */ 0x9E8C, 0xE5AE, 0x9E8D, 0x9E8E, 0x9E8F, 0x9E90, 0x9E91, 0x9E92,
- /* U+7040 */ 0x9E93, 0x9E94, 0x9E95, 0x9E96, 0x9E97, 0x9E98, 0x9E99, 0x9E9A,
- /* U+7048 */ 0x9E9B, 0x9E9C, 0x9E9D, 0x9E9E, 0xB9E0, 0x9E9F, 0x9EA0, 0xE5B0,
- /* U+7050 */ 0x9EA1, 0x9EA2, 0x9EA3, 0x9EA4, 0x9EA5, 0x9EA6, 0x9EA7, 0x9EA8,
- /* U+7058 */ 0x9EA9, 0x9EAA, 0x9EAB, 0x9EAC, 0x9EAD, 0x9EAE, 0xE5B1, 0x9EAF,
- /* U+7060 */ 0x9EB0, 0x9EB1, 0x9EB2, 0x9EB3, 0x9EB4, 0x9EB5, 0x9EB6, 0x9EB7,
- /* U+7068 */ 0x9EB8, 0x9EB9, 0x9EBA, 0xBBF0, 0xECE1, 0xC3F0, 0x9EBB, 0xB5C6,
- /* U+7070 */ 0xBBD2, 0x9EBC, 0x9EBD, 0x9EBE, 0x9EBF, 0xC1E9, 0xD4EE, 0x9EC0,
- /* U+7078 */ 0xBEC4, 0x9EC1, 0x9EC2, 0x9EC3, 0xD7C6, 0x9EC4, 0xD4D6, 0xB2D3,
- /* U+7080 */ 0xECBE, 0x9EC5, 0x9EC6, 0x9EC7, 0x9EC8, 0xEAC1, 0x9EC9, 0x9ECA,
- /* U+7088 */ 0x9ECB, 0xC2AF, 0xB4B6, 0x9ECC, 0x9ECD, 0x9ECE, 0xD1D7, 0x9ECF,
- /* U+7090 */ 0x9ED0, 0x9ED1, 0xB3B4, 0x9ED2, 0xC8B2, 0xBFBB, 0xECC0, 0x9ED3,
- /* U+7098 */ 0x9ED4, 0xD6CB, 0x9ED5, 0x9ED6, 0xECBF, 0xECC1, 0x9ED7, 0x9ED8,
- /* U+70A0 */ 0x9ED9, 0x9EDA, 0x9EDB, 0x9EDC, 0x9EDD, 0x9EDE, 0x9EDF, 0x9EE0,
- /* U+70A8 */ 0x9EE1, 0x9EE2, 0x9EE3, 0xECC5, 0xBEE6, 0xCCBF, 0xC5DA, 0xBEBC,
- /* U+70B0 */ 0x9EE4, 0xECC6, 0x9EE5, 0xB1FE, 0x9EE6, 0x9EE7, 0x9EE8, 0xECC4,
- /* U+70B8 */ 0xD5A8, 0xB5E3, 0x9EE9, 0xECC2, 0xC1B6, 0xB3E3, 0x9EEA, 0x9EEB,
- /* U+70C0 */ 0xECC3, 0xCBB8, 0xC0C3, 0xCCFE, 0x9EEC, 0x9EED, 0x9EEE, 0x9EEF,
- /* U+70C8 */ 0xC1D2, 0x9EF0, 0xECC8, 0x9EF1, 0x9EF2, 0x9EF3, 0x9EF4, 0x9EF5,
- /* U+70D0 */ 0x9EF6, 0x9EF7, 0x9EF8, 0x9EF9, 0x9EFA, 0x9EFB, 0x9EFC, 0x9EFD,
- /* U+70D8 */ 0xBAE6, 0xC0D3, 0x9EFE, 0xD6F2, 0x9F40, 0x9F41, 0x9F42, 0xD1CC,
- /* U+70E0 */ 0x9F43, 0x9F44, 0x9F45, 0x9F46, 0xBFBE, 0x9F47, 0xB7B3, 0xC9D5,
- /* U+70E8 */ 0xECC7, 0xBBE2, 0x9F48, 0xCCCC, 0xBDFD, 0xC8C8, 0x9F49, 0xCFA9,
- /* U+70F0 */ 0x9F4A, 0x9F4B, 0x9F4C, 0x9F4D, 0x9F4E, 0x9F4F, 0x9F50, 0xCDE9,
- /* U+70F8 */ 0x9F51, 0xC5EB, 0x9F52, 0x9F53, 0x9F54, 0xB7E9, 0x9F55, 0x9F56,
- /* U+7100 */ 0x9F57, 0x9F58, 0x9F59, 0x9F5A, 0x9F5B, 0x9F5C, 0x9F5D, 0x9F5E,
- /* U+7108 */ 0x9F5F, 0xD1C9, 0xBAB8, 0x9F60, 0x9F61, 0x9F62, 0x9F63, 0x9F64,
- /* U+7110 */ 0xECC9, 0x9F65, 0x9F66, 0xECCA, 0x9F67, 0xBBC0, 0xECCB, 0x9F68,
- /* U+7118 */ 0xECE2, 0xB1BA, 0xB7D9, 0x9F69, 0x9F6A, 0x9F6B, 0x9F6C, 0x9F6D,
- /* U+7120 */ 0x9F6E, 0x9F6F, 0x9F70, 0x9F71, 0x9F72, 0x9F73, 0xBDB9, 0x9F74,
- /* U+7128 */ 0x9F75, 0x9F76, 0x9F77, 0x9F78, 0x9F79, 0x9F7A, 0x9F7B, 0xECCC,
- /* U+7130 */ 0xD1E6, 0xECCD, 0x9F7C, 0x9F7D, 0x9F7E, 0x9F80, 0xC8BB, 0x9F81,
- /* U+7138 */ 0x9F82, 0x9F83, 0x9F84, 0x9F85, 0x9F86, 0x9F87, 0x9F88, 0x9F89,
- /* U+7140 */ 0x9F8A, 0x9F8B, 0x9F8C, 0x9F8D, 0x9F8E, 0xECD1, 0x9F8F, 0x9F90,
- /* U+7148 */ 0x9F91, 0x9F92, 0xECD3, 0x9F93, 0xBBCD, 0x9F94, 0xBCE5, 0x9F95,
- /* U+7150 */ 0x9F96, 0x9F97, 0x9F98, 0x9F99, 0x9F9A, 0x9F9B, 0x9F9C, 0x9F9D,
- /* U+7158 */ 0x9F9E, 0x9F9F, 0x9FA0, 0x9FA1, 0xECCF, 0x9FA2, 0xC9B7, 0x9FA3,
- /* U+7160 */ 0x9FA4, 0x9FA5, 0x9FA6, 0x9FA7, 0xC3BA, 0x9FA8, 0xECE3, 0xD5D5,
- /* U+7168 */ 0xECD0, 0x9FA9, 0x9FAA, 0x9FAB, 0x9FAC, 0x9FAD, 0xD6F3, 0x9FAE,
- /* U+7170 */ 0x9FAF, 0x9FB0, 0xECD2, 0xECCE, 0x9FB1, 0x9FB2, 0x9FB3, 0x9FB4,
- /* U+7178 */ 0xECD4, 0x9FB5, 0xECD5, 0x9FB6, 0x9FB7, 0xC9BF, 0x9FB8, 0x9FB9,
- /* U+7180 */ 0x9FBA, 0x9FBB, 0x9FBC, 0x9FBD, 0xCFA8, 0x9FBE, 0x9FBF, 0x9FC0,
- /* U+7188 */ 0x9FC1, 0x9FC2, 0xD0DC, 0x9FC3, 0x9FC4, 0x9FC5, 0x9FC6, 0xD1AC,
- /* U+7190 */ 0x9FC7, 0x9FC8, 0x9FC9, 0x9FCA, 0xC8DB, 0x9FCB, 0x9FCC, 0x9FCD,
- /* U+7198 */ 0xECD6, 0xCEF5, 0x9FCE, 0x9FCF, 0x9FD0, 0x9FD1, 0x9FD2, 0xCAEC,
- /* U+71A0 */ 0xECDA, 0x9FD3, 0x9FD4, 0x9FD5, 0x9FD6, 0x9FD7, 0x9FD8, 0x9FD9,
- /* U+71A8 */ 0xECD9, 0x9FDA, 0x9FDB, 0x9FDC, 0xB0BE, 0x9FDD, 0x9FDE, 0x9FDF,
- /* U+71B0 */ 0x9FE0, 0x9FE1, 0x9FE2, 0xECD7, 0x9FE3, 0xECD8, 0x9FE4, 0x9FE5,
- /* U+71B8 */ 0x9FE6, 0xECE4, 0x9FE7, 0x9FE8, 0x9FE9, 0x9FEA, 0x9FEB, 0x9FEC,
- /* U+71C0 */ 0x9FED, 0x9FEE, 0x9FEF, 0xC8BC, 0x9FF0, 0x9FF1, 0x9FF2, 0x9FF3,
- /* U+71C8 */ 0x9FF4, 0x9FF5, 0x9FF6, 0x9FF7, 0x9FF8, 0x9FF9, 0xC1C7, 0x9FFA,
- /* U+71D0 */ 0x9FFB, 0x9FFC, 0x9FFD, 0x9FFE, 0xECDC, 0xD1E0, 0xA040, 0xA041,
- /* U+71D8 */ 0xA042, 0xA043, 0xA044, 0xA045, 0xA046, 0xA047, 0xA048, 0xA049,
- /* U+71E0 */ 0xECDB, 0xA04A, 0xA04B, 0xA04C, 0xA04D, 0xD4EF, 0xA04E, 0xECDD,
- /* U+71E8 */ 0xA04F, 0xA050, 0xA051, 0xA052, 0xA053, 0xA054, 0xDBC6, 0xA055,
- /* U+71F0 */ 0xA056, 0xA057, 0xA058, 0xA059, 0xA05A, 0xA05B, 0xA05C, 0xA05D,
- /* U+71F8 */ 0xA05E, 0xECDE, 0xA05F, 0xA060, 0xA061, 0xA062, 0xA063, 0xA064,
- /* U+7200 */ 0xA065, 0xA066, 0xA067, 0xA068, 0xA069, 0xA06A, 0xB1AC, 0xA06B,
- /* U+7208 */ 0xA06C, 0xA06D, 0xA06E, 0xA06F, 0xA070, 0xA071, 0xA072, 0xA073,
- /* U+7210 */ 0xA074, 0xA075, 0xA076, 0xA077, 0xA078, 0xA079, 0xA07A, 0xA07B,
- /* U+7218 */ 0xA07C, 0xA07D, 0xA07E, 0xA080, 0xA081, 0xECDF, 0xA082, 0xA083,
- /* U+7220 */ 0xA084, 0xA085, 0xA086, 0xA087, 0xA088, 0xA089, 0xA08A, 0xA08B,
- /* U+7228 */ 0xECE0, 0xA08C, 0xD7A6, 0xA08D, 0xC5C0, 0xA08E, 0xA08F, 0xA090,
- /* U+7230 */ 0xEBBC, 0xB0AE, 0xA091, 0xA092, 0xA093, 0xBEF4, 0xB8B8, 0xD2AF,
- /* U+7238 */ 0xB0D6, 0xB5F9, 0xA094, 0xD8B3, 0xA095, 0xCBAC, 0xA096, 0xE3DD,
- /* U+7240 */ 0xA097, 0xA098, 0xA099, 0xA09A, 0xA09B, 0xA09C, 0xA09D, 0xC6AC,
- /* U+7248 */ 0xB0E6, 0xA09E, 0xA09F, 0xA0A0, 0xC5C6, 0xEBB9, 0xA0A1, 0xA0A2,
- /* U+7250 */ 0xA0A3, 0xA0A4, 0xEBBA, 0xA0A5, 0xA0A6, 0xA0A7, 0xEBBB, 0xA0A8,
- /* U+7258 */ 0xA0A9, 0xD1C0, 0xA0AA, 0xC5A3, 0xA0AB, 0xEAF2, 0xA0AC, 0xC4B2,
- /* U+7260 */ 0xA0AD, 0xC4B5, 0xC0CE, 0xA0AE, 0xA0AF, 0xA0B0, 0xEAF3, 0xC4C1,
- /* U+7268 */ 0xA0B1, 0xCEEF, 0xA0B2, 0xA0B3, 0xA0B4, 0xA0B5, 0xEAF0, 0xEAF4,
- /* U+7270 */ 0xA0B6, 0xA0B7, 0xC9FC, 0xA0B8, 0xA0B9, 0xC7A3, 0xA0BA, 0xA0BB,
- /* U+7278 */ 0xA0BC, 0xCCD8, 0xCEFE, 0xA0BD, 0xA0BE, 0xA0BF, 0xEAF5, 0xEAF6,
- /* U+7280 */ 0xCFAC, 0xC0E7, 0xA0C0, 0xA0C1, 0xEAF7, 0xA0C2, 0xA0C3, 0xA0C4,
- /* U+7288 */ 0xA0C5, 0xA0C6, 0xB6BF, 0xEAF8, 0xA0C7, 0xEAF9, 0xA0C8, 0xEAFA,
- /* U+7290 */ 0xA0C9, 0xA0CA, 0xEAFB, 0xA0CB, 0xA0CC, 0xA0CD, 0xA0CE, 0xA0CF,
- /* U+7298 */ 0xA0D0, 0xA0D1, 0xA0D2, 0xA0D3, 0xA0D4, 0xA0D5, 0xA0D6, 0xEAF1,
- /* U+72A0 */ 0xA0D7, 0xA0D8, 0xA0D9, 0xA0DA, 0xA0DB, 0xA0DC, 0xA0DD, 0xA0DE,
- /* U+72A8 */ 0xA0DF, 0xA0E0, 0xA0E1, 0xA0E2, 0xC8AE, 0xE1EB, 0xA0E3, 0xB7B8,
- /* U+72B0 */ 0xE1EC, 0xA0E4, 0xA0E5, 0xA0E6, 0xE1ED, 0xA0E7, 0xD7B4, 0xE1EE,
- /* U+72B8 */ 0xE1EF, 0xD3CC, 0xA0E8, 0xA0E9, 0xA0EA, 0xA0EB, 0xA0EC, 0xA0ED,
- /* U+72C0 */ 0xA0EE, 0xE1F1, 0xBFF1, 0xE1F0, 0xB5D2, 0xA0EF, 0xA0F0, 0xA0F1,
- /* U+72C8 */ 0xB1B7, 0xA0F2, 0xA0F3, 0xA0F4, 0xA0F5, 0xE1F3, 0xE1F2, 0xA0F6,
- /* U+72D0 */ 0xBAFC, 0xA0F7, 0xE1F4, 0xA0F8, 0xA0F9, 0xA0FA, 0xA0FB, 0xB9B7,
- /* U+72D8 */ 0xA0FC, 0xBED1, 0xA0FD, 0xA0FE, 0xAA40, 0xAA41, 0xC4FC, 0xAA42,
- /* U+72E0 */ 0xBADD, 0xBDC6, 0xAA43, 0xAA44, 0xAA45, 0xAA46, 0xAA47, 0xAA48,
- /* U+72E8 */ 0xE1F5, 0xE1F7, 0xAA49, 0xAA4A, 0xB6C0, 0xCFC1, 0xCAA8, 0xE1F6,
- /* U+72F0 */ 0xD5F8, 0xD3FC, 0xE1F8, 0xE1FC, 0xE1F9, 0xAA4B, 0xAA4C, 0xE1FA,
- /* U+72F8 */ 0xC0EA, 0xAA4D, 0xE1FE, 0xE2A1, 0xC0C7, 0xAA4E, 0xAA4F, 0xAA50,
- /* U+7300 */ 0xAA51, 0xE1FB, 0xAA52, 0xE1FD, 0xAA53, 0xAA54, 0xAA55, 0xAA56,
- /* U+7308 */ 0xAA57, 0xAA58, 0xE2A5, 0xAA59, 0xAA5A, 0xAA5B, 0xC1D4, 0xAA5C,
- /* U+7310 */ 0xAA5D, 0xAA5E, 0xAA5F, 0xE2A3, 0xAA60, 0xE2A8, 0xB2FE, 0xE2A2,
- /* U+7318 */ 0xAA61, 0xAA62, 0xAA63, 0xC3CD, 0xB2C2, 0xE2A7, 0xE2A6, 0xAA64,
- /* U+7320 */ 0xAA65, 0xE2A4, 0xE2A9, 0xAA66, 0xAA67, 0xE2AB, 0xAA68, 0xAA69,
- /* U+7328 */ 0xAA6A, 0xD0C9, 0xD6ED, 0xC3A8, 0xE2AC, 0xAA6B, 0xCFD7, 0xAA6C,
- /* U+7330 */ 0xAA6D, 0xE2AE, 0xAA6E, 0xAA6F, 0xBAEF, 0xAA70, 0xAA71, 0xE9E0,
- /* U+7338 */ 0xE2AD, 0xE2AA, 0xAA72, 0xAA73, 0xAA74, 0xAA75, 0xBBAB, 0xD4B3,
- /* U+7340 */ 0xAA76, 0xAA77, 0xAA78, 0xAA79, 0xAA7A, 0xAA7B, 0xAA7C, 0xAA7D,
- /* U+7348 */ 0xAA7E, 0xAA80, 0xAA81, 0xAA82, 0xAA83, 0xE2B0, 0xAA84, 0xAA85,
- /* U+7350 */ 0xE2AF, 0xAA86, 0xE9E1, 0xAA87, 0xAA88, 0xAA89, 0xAA8A, 0xE2B1,
- /* U+7358 */ 0xAA8B, 0xAA8C, 0xAA8D, 0xAA8E, 0xAA8F, 0xAA90, 0xAA91, 0xAA92,
- /* U+7360 */ 0xE2B2, 0xAA93, 0xAA94, 0xAA95, 0xAA96, 0xAA97, 0xAA98, 0xAA99,
- /* U+7368 */ 0xAA9A, 0xAA9B, 0xAA9C, 0xAA9D, 0xE2B3, 0xCCA1, 0xAA9E, 0xE2B4,
- /* U+7370 */ 0xAA9F, 0xAAA0, 0xAB40, 0xAB41, 0xAB42, 0xAB43, 0xAB44, 0xAB45,
- /* U+7378 */ 0xAB46, 0xAB47, 0xAB48, 0xAB49, 0xAB4A, 0xAB4B, 0xE2B5, 0xAB4C,
- /* U+7380 */ 0xAB4D, 0xAB4E, 0xAB4F, 0xAB50, 0xD0FE, 0xAB51, 0xAB52, 0xC2CA,
- /* U+7388 */ 0xAB53, 0xD3F1, 0xAB54, 0xCDF5, 0xAB55, 0xAB56, 0xE7E0, 0xAB57,
- /* U+7390 */ 0xAB58, 0xE7E1, 0xAB59, 0xAB5A, 0xAB5B, 0xAB5C, 0xBEC1, 0xAB5D,
- /* U+7398 */ 0xAB5E, 0xAB5F, 0xAB60, 0xC2EA, 0xAB61, 0xAB62, 0xAB63, 0xE7E4,
- /* U+73A0 */ 0xAB64, 0xAB65, 0xE7E3, 0xAB66, 0xAB67, 0xAB68, 0xAB69, 0xAB6A,
- /* U+73A8 */ 0xAB6B, 0xCDE6, 0xAB6C, 0xC3B5, 0xAB6D, 0xAB6E, 0xE7E2, 0xBBB7,
- /* U+73B0 */ 0xCFD6, 0xAB6F, 0xC1E1, 0xE7E9, 0xAB70, 0xAB71, 0xAB72, 0xE7E8,
- /* U+73B8 */ 0xAB73, 0xAB74, 0xE7F4, 0xB2A3, 0xAB75, 0xAB76, 0xAB77, 0xAB78,
- /* U+73C0 */ 0xE7EA, 0xAB79, 0xE7E6, 0xAB7A, 0xAB7B, 0xAB7C, 0xAB7D, 0xAB7E,
- /* U+73C8 */ 0xE7EC, 0xE7EB, 0xC9BA, 0xAB80, 0xAB81, 0xD5E4, 0xAB82, 0xE7E5,
- /* U+73D0 */ 0xB7A9, 0xE7E7, 0xAB83, 0xAB84, 0xAB85, 0xAB86, 0xAB87, 0xAB88,
- /* U+73D8 */ 0xAB89, 0xE7EE, 0xAB8A, 0xAB8B, 0xAB8C, 0xAB8D, 0xE7F3, 0xAB8E,
- /* U+73E0 */ 0xD6E9, 0xAB8F, 0xAB90, 0xAB91, 0xAB92, 0xE7ED, 0xAB93, 0xE7F2,
- /* U+73E8 */ 0xAB94, 0xE7F1, 0xAB95, 0xAB96, 0xAB97, 0xB0E0, 0xAB98, 0xAB99,
- /* U+73F0 */ 0xAB9A, 0xAB9B, 0xE7F5, 0xAB9C, 0xAB9D, 0xAB9E, 0xAB9F, 0xABA0,
- /* U+73F8 */ 0xAC40, 0xAC41, 0xAC42, 0xAC43, 0xAC44, 0xAC45, 0xAC46, 0xAC47,
- /* U+7400 */ 0xAC48, 0xAC49, 0xAC4A, 0xC7F2, 0xAC4B, 0xC0C5, 0xC0ED, 0xAC4C,
- /* U+7408 */ 0xAC4D, 0xC1F0, 0xE7F0, 0xAC4E, 0xAC4F, 0xAC50, 0xAC51, 0xE7F6,
- /* U+7410 */ 0xCBF6, 0xAC52, 0xAC53, 0xAC54, 0xAC55, 0xAC56, 0xAC57, 0xAC58,
- /* U+7418 */ 0xAC59, 0xAC5A, 0xE8A2, 0xE8A1, 0xAC5B, 0xAC5C, 0xAC5D, 0xAC5E,
- /* U+7420 */ 0xAC5F, 0xAC60, 0xD7C1, 0xAC61, 0xAC62, 0xE7FA, 0xE7F9, 0xAC63,
- /* U+7428 */ 0xE7FB, 0xAC64, 0xE7F7, 0xAC65, 0xE7FE, 0xAC66, 0xE7FD, 0xAC67,
- /* U+7430 */ 0xE7FC, 0xAC68, 0xAC69, 0xC1D5, 0xC7D9, 0xC5FD, 0xC5C3, 0xAC6A,
- /* U+7438 */ 0xAC6B, 0xAC6C, 0xAC6D, 0xAC6E, 0xC7ED, 0xAC6F, 0xAC70, 0xAC71,
- /* U+7440 */ 0xAC72, 0xE8A3, 0xAC73, 0xAC74, 0xAC75, 0xAC76, 0xAC77, 0xAC78,
- /* U+7448 */ 0xAC79, 0xAC7A, 0xAC7B, 0xAC7C, 0xAC7D, 0xAC7E, 0xAC80, 0xAC81,
- /* U+7450 */ 0xAC82, 0xAC83, 0xAC84, 0xAC85, 0xAC86, 0xE8A6, 0xAC87, 0xE8A5,
- /* U+7458 */ 0xAC88, 0xE8A7, 0xBAF7, 0xE7F8, 0xE8A4, 0xAC89, 0xC8F0, 0xC9AA,
- /* U+7460 */ 0xAC8A, 0xAC8B, 0xAC8C, 0xAC8D, 0xAC8E, 0xAC8F, 0xAC90, 0xAC91,
- /* U+7468 */ 0xAC92, 0xAC93, 0xAC94, 0xAC95, 0xAC96, 0xE8A9, 0xAC97, 0xAC98,
- /* U+7470 */ 0xB9E5, 0xAC99, 0xAC9A, 0xAC9B, 0xAC9C, 0xAC9D, 0xD1FE, 0xE8A8,
- /* U+7478 */ 0xAC9E, 0xAC9F, 0xACA0, 0xAD40, 0xAD41, 0xAD42, 0xE8AA, 0xAD43,
- /* U+7480 */ 0xE8AD, 0xE8AE, 0xAD44, 0xC1A7, 0xAD45, 0xAD46, 0xAD47, 0xE8AF,
- /* U+7488 */ 0xAD48, 0xAD49, 0xAD4A, 0xE8B0, 0xAD4B, 0xAD4C, 0xE8AC, 0xAD4D,
- /* U+7490 */ 0xE8B4, 0xAD4E, 0xAD4F, 0xAD50, 0xAD51, 0xAD52, 0xAD53, 0xAD54,
- /* U+7498 */ 0xAD55, 0xAD56, 0xAD57, 0xAD58, 0xE8AB, 0xAD59, 0xE8B1, 0xAD5A,
- /* U+74A0 */ 0xAD5B, 0xAD5C, 0xAD5D, 0xAD5E, 0xAD5F, 0xAD60, 0xAD61, 0xE8B5,
- /* U+74A8 */ 0xE8B2, 0xE8B3, 0xAD62, 0xAD63, 0xAD64, 0xAD65, 0xAD66, 0xAD67,
- /* U+74B0 */ 0xAD68, 0xAD69, 0xAD6A, 0xAD6B, 0xAD6C, 0xAD6D, 0xAD6E, 0xAD6F,
- /* U+74B8 */ 0xAD70, 0xAD71, 0xE8B7, 0xAD72, 0xAD73, 0xAD74, 0xAD75, 0xAD76,
- /* U+74C0 */ 0xAD77, 0xAD78, 0xAD79, 0xAD7A, 0xAD7B, 0xAD7C, 0xAD7D, 0xAD7E,
- /* U+74C8 */ 0xAD80, 0xAD81, 0xAD82, 0xAD83, 0xAD84, 0xAD85, 0xAD86, 0xAD87,
- /* U+74D0 */ 0xAD88, 0xAD89, 0xE8B6, 0xAD8A, 0xAD8B, 0xAD8C, 0xAD8D, 0xAD8E,
- /* U+74D8 */ 0xAD8F, 0xAD90, 0xAD91, 0xAD92, 0xB9CF, 0xAD93, 0xF0AC, 0xAD94,
- /* U+74E0 */ 0xF0AD, 0xAD95, 0xC6B0, 0xB0EA, 0xC8BF, 0xAD96, 0xCDDF, 0xAD97,
- /* U+74E8 */ 0xAD98, 0xAD99, 0xAD9A, 0xAD9B, 0xAD9C, 0xAD9D, 0xCECD, 0xEAB1,
- /* U+74F0 */ 0xAD9E, 0xAD9F, 0xADA0, 0xAE40, 0xEAB2, 0xAE41, 0xC6BF, 0xB4C9,
- /* U+74F8 */ 0xAE42, 0xAE43, 0xAE44, 0xAE45, 0xAE46, 0xAE47, 0xAE48, 0xEAB3,
- /* U+7500 */ 0xAE49, 0xAE4A, 0xAE4B, 0xAE4C, 0xD5E7, 0xAE4D, 0xAE4E, 0xAE4F,
- /* U+7508 */ 0xAE50, 0xAE51, 0xAE52, 0xAE53, 0xAE54, 0xDDF9, 0xAE55, 0xEAB4,
- /* U+7510 */ 0xAE56, 0xEAB5, 0xAE57, 0xEAB6, 0xAE58, 0xAE59, 0xAE5A, 0xAE5B,
- /* U+7518 */ 0xB8CA, 0xDFB0, 0xC9F5, 0xAE5C, 0xCCF0, 0xAE5D, 0xAE5E, 0xC9FA,
- /* U+7520 */ 0xAE5F, 0xAE60, 0xAE61, 0xAE62, 0xAE63, 0xC9FB, 0xAE64, 0xAE65,
- /* U+7528 */ 0xD3C3, 0xCBA6, 0xAE66, 0xB8A6, 0xF0AE, 0xB1C2, 0xAE67, 0xE5B8,
- /* U+7530 */ 0xCCEF, 0xD3C9, 0xBCD7, 0xC9EA, 0xAE68, 0xB5E7, 0xAE69, 0xC4D0,
- /* U+7538 */ 0xB5E9, 0xAE6A, 0xEEAE, 0xBBAD, 0xAE6B, 0xAE6C, 0xE7DE, 0xAE6D,
- /* U+7540 */ 0xEEAF, 0xAE6E, 0xAE6F, 0xAE70, 0xAE71, 0xB3A9, 0xAE72, 0xAE73,
- /* U+7548 */ 0xEEB2, 0xAE74, 0xAE75, 0xEEB1, 0xBDE7, 0xAE76, 0xEEB0, 0xCEB7,
- /* U+7550 */ 0xAE77, 0xAE78, 0xAE79, 0xAE7A, 0xC5CF, 0xAE7B, 0xAE7C, 0xAE7D,
- /* U+7558 */ 0xAE7E, 0xC1F4, 0xDBCE, 0xEEB3, 0xD0F3, 0xAE80, 0xAE81, 0xAE82,
- /* U+7560 */ 0xAE83, 0xAE84, 0xAE85, 0xAE86, 0xAE87, 0xC2D4, 0xC6E8, 0xAE88,
- /* U+7568 */ 0xAE89, 0xAE8A, 0xB7AC, 0xAE8B, 0xAE8C, 0xAE8D, 0xAE8E, 0xAE8F,
- /* U+7570 */ 0xAE90, 0xAE91, 0xEEB4, 0xAE92, 0xB3EB, 0xAE93, 0xAE94, 0xAE95,
- /* U+7578 */ 0xBBFB, 0xEEB5, 0xAE96, 0xAE97, 0xAE98, 0xAE99, 0xAE9A, 0xE7DC,
- /* U+7580 */ 0xAE9B, 0xAE9C, 0xAE9D, 0xEEB6, 0xAE9E, 0xAE9F, 0xBDAE, 0xAEA0,
- /* U+7588 */ 0xAF40, 0xAF41, 0xAF42, 0xF1E2, 0xAF43, 0xAF44, 0xAF45, 0xCAE8,
- /* U+7590 */ 0xAF46, 0xD2C9, 0xF0DA, 0xAF47, 0xF0DB, 0xAF48, 0xF0DC, 0xC1C6,
- /* U+7598 */ 0xAF49, 0xB8ED, 0xBECE, 0xAF4A, 0xAF4B, 0xF0DE, 0xAF4C, 0xC5B1,
- /* U+75A0 */ 0xF0DD, 0xD1F1, 0xAF4D, 0xF0E0, 0xB0CC, 0xBDEA, 0xAF4E, 0xAF4F,
- /* U+75A8 */ 0xAF50, 0xAF51, 0xAF52, 0xD2DF, 0xF0DF, 0xAF53, 0xB4AF, 0xB7E8,
- /* U+75B0 */ 0xF0E6, 0xF0E5, 0xC6A3, 0xF0E1, 0xF0E2, 0xB4C3, 0xAF54, 0xAF55,
- /* U+75B8 */ 0xF0E3, 0xD5EE, 0xAF56, 0xAF57, 0xCCDB, 0xBED2, 0xBCB2, 0xAF58,
- /* U+75C0 */ 0xAF59, 0xAF5A, 0xF0E8, 0xF0E7, 0xF0E4, 0xB2A1, 0xAF5B, 0xD6A2,
- /* U+75C8 */ 0xD3B8, 0xBEB7, 0xC8AC, 0xAF5C, 0xAF5D, 0xF0EA, 0xAF5E, 0xAF5F,
- /* U+75D0 */ 0xAF60, 0xAF61, 0xD1F7, 0xAF62, 0xD6CC, 0xBADB, 0xF0E9, 0xAF63,
- /* U+75D8 */ 0xB6BB, 0xAF64, 0xAF65, 0xCDB4, 0xAF66, 0xAF67, 0xC6A6, 0xAF68,
- /* U+75E0 */ 0xAF69, 0xAF6A, 0xC1A1, 0xF0EB, 0xF0EE, 0xAF6B, 0xF0ED, 0xF0F0,
- /* U+75E8 */ 0xF0EC, 0xAF6C, 0xBBBE, 0xF0EF, 0xAF6D, 0xAF6E, 0xAF6F, 0xAF70,
- /* U+75F0 */ 0xCCB5, 0xF0F2, 0xAF71, 0xAF72, 0xB3D5, 0xAF73, 0xAF74, 0xAF75,
- /* U+75F8 */ 0xAF76, 0xB1D4, 0xAF77, 0xAF78, 0xF0F3, 0xAF79, 0xAF7A, 0xF0F4,
- /* U+7600 */ 0xF0F6, 0xB4E1, 0xAF7B, 0xF0F1, 0xAF7C, 0xF0F7, 0xAF7D, 0xAF7E,
- /* U+7608 */ 0xAF80, 0xAF81, 0xF0FA, 0xAF82, 0xF0F8, 0xAF83, 0xAF84, 0xAF85,
- /* U+7610 */ 0xF0F5, 0xAF86, 0xAF87, 0xAF88, 0xAF89, 0xF0FD, 0xAF8A, 0xF0F9,
- /* U+7618 */ 0xF0FC, 0xF0FE, 0xAF8B, 0xF1A1, 0xAF8C, 0xAF8D, 0xAF8E, 0xCEC1,
- /* U+7620 */ 0xF1A4, 0xAF8F, 0xF1A3, 0xAF90, 0xC1F6, 0xF0FB, 0xCADD, 0xAF91,
- /* U+7628 */ 0xAF92, 0xB4F1, 0xB1F1, 0xCCB1, 0xAF93, 0xF1A6, 0xAF94, 0xAF95,
- /* U+7630 */ 0xF1A7, 0xAF96, 0xAF97, 0xF1AC, 0xD5CE, 0xF1A9, 0xAF98, 0xAF99,
- /* U+7638 */ 0xC8B3, 0xAF9A, 0xAF9B, 0xAF9C, 0xF1A2, 0xAF9D, 0xF1AB, 0xF1A8,
- /* U+7640 */ 0xF1A5, 0xAF9E, 0xAF9F, 0xF1AA, 0xAFA0, 0xB040, 0xB041, 0xB042,
- /* U+7648 */ 0xB043, 0xB044, 0xB045, 0xB046, 0xB0A9, 0xF1AD, 0xB047, 0xB048,
- /* U+7650 */ 0xB049, 0xB04A, 0xB04B, 0xB04C, 0xF1AF, 0xB04D, 0xF1B1, 0xB04E,
- /* U+7658 */ 0xB04F, 0xB050, 0xB051, 0xB052, 0xF1B0, 0xB053, 0xF1AE, 0xB054,
- /* U+7660 */ 0xB055, 0xB056, 0xB057, 0xD1A2, 0xB058, 0xB059, 0xB05A, 0xB05B,
- /* U+7668 */ 0xB05C, 0xB05D, 0xB05E, 0xF1B2, 0xB05F, 0xB060, 0xB061, 0xF1B3,
- /* U+7670 */ 0xB062, 0xB063, 0xB064, 0xB065, 0xB066, 0xB067, 0xB068, 0xB069,
- /* U+7678 */ 0xB9EF, 0xB06A, 0xB06B, 0xB5C7, 0xB06C, 0xB0D7, 0xB0D9, 0xB06D,
- /* U+7680 */ 0xB06E, 0xB06F, 0xD4ED, 0xB070, 0xB5C4, 0xB071, 0xBDD4, 0xBBCA,
- /* U+7688 */ 0xF0A7, 0xB072, 0xB073, 0xB8DE, 0xB074, 0xB075, 0xF0A8, 0xB076,
- /* U+7690 */ 0xB077, 0xB0A8, 0xB078, 0xF0A9, 0xB079, 0xB07A, 0xCDEE, 0xB07B,
- /* U+7698 */ 0xB07C, 0xF0AA, 0xB07D, 0xB07E, 0xB080, 0xB081, 0xB082, 0xB083,
- /* U+76A0 */ 0xB084, 0xB085, 0xB086, 0xB087, 0xF0AB, 0xB088, 0xB089, 0xB08A,
- /* U+76A8 */ 0xB08B, 0xB08C, 0xB08D, 0xB08E, 0xB08F, 0xB090, 0xC6A4, 0xB091,
- /* U+76B0 */ 0xB092, 0xD6E5, 0xF1E4, 0xB093, 0xF1E5, 0xB094, 0xB095, 0xB096,
- /* U+76B8 */ 0xB097, 0xB098, 0xB099, 0xB09A, 0xB09B, 0xB09C, 0xB09D, 0xC3F3,
- /* U+76C0 */ 0xB09E, 0xB09F, 0xD3DB, 0xB0A0, 0xB140, 0xD6D1, 0xC5E8, 0xB141,
- /* U+76C8 */ 0xD3AF, 0xB142, 0xD2E6, 0xB143, 0xB144, 0xEEC1, 0xB0BB, 0xD5B5,
- /* U+76D0 */ 0xD1CE, 0xBCE0, 0xBAD0, 0xB145, 0xBFF8, 0xB146, 0xB8C7, 0xB5C1,
- /* U+76D8 */ 0xC5CC, 0xB147, 0xB148, 0xCAA2, 0xB149, 0xB14A, 0xB14B, 0xC3CB,
- /* U+76E0 */ 0xB14C, 0xB14D, 0xB14E, 0xB14F, 0xB150, 0xEEC2, 0xB151, 0xB152,
- /* U+76E8 */ 0xB153, 0xB154, 0xB155, 0xB156, 0xB157, 0xB158, 0xC4BF, 0xB6A2,
- /* U+76F0 */ 0xB159, 0xEDEC, 0xC3A4, 0xB15A, 0xD6B1, 0xB15B, 0xB15C, 0xB15D,
- /* U+76F8 */ 0xCFE0, 0xEDEF, 0xB15E, 0xB15F, 0xC5CE, 0xB160, 0xB6DC, 0xB161,
- /* U+7700 */ 0xB162, 0xCAA1, 0xB163, 0xB164, 0xEDED, 0xB165, 0xB166, 0xEDF0,
- /* U+7708 */ 0xEDF1, 0xC3BC, 0xB167, 0xBFB4, 0xB168, 0xEDEE, 0xB169, 0xB16A,
- /* U+7710 */ 0xB16B, 0xB16C, 0xB16D, 0xB16E, 0xB16F, 0xB170, 0xB171, 0xB172,
- /* U+7718 */ 0xB173, 0xEDF4, 0xEDF2, 0xB174, 0xB175, 0xB176, 0xB177, 0xD5E6,
- /* U+7720 */ 0xC3DF, 0xB178, 0xEDF3, 0xB179, 0xB17A, 0xB17B, 0xEDF6, 0xB17C,
- /* U+7728 */ 0xD5A3, 0xD1A3, 0xB17D, 0xB17E, 0xB180, 0xEDF5, 0xB181, 0xC3D0,
- /* U+7730 */ 0xB182, 0xB183, 0xB184, 0xB185, 0xB186, 0xEDF7, 0xBFF4, 0xBEEC,
- /* U+7738 */ 0xEDF8, 0xB187, 0xCCF7, 0xB188, 0xD1DB, 0xB189, 0xB18A, 0xB18B,
- /* U+7740 */ 0xD7C5, 0xD5F6, 0xB18C, 0xEDFC, 0xB18D, 0xB18E, 0xB18F, 0xEDFB,
- /* U+7748 */ 0xB190, 0xB191, 0xB192, 0xB193, 0xB194, 0xB195, 0xB196, 0xB197,
- /* U+7750 */ 0xEDF9, 0xEDFA, 0xB198, 0xB199, 0xB19A, 0xB19B, 0xB19C, 0xB19D,
- /* U+7758 */ 0xB19E, 0xB19F, 0xEDFD, 0xBEA6, 0xB1A0, 0xB240, 0xB241, 0xB242,
- /* U+7760 */ 0xB243, 0xCBAF, 0xEEA1, 0xB6BD, 0xB244, 0xEEA2, 0xC4C0, 0xB245,
- /* U+7768 */ 0xEDFE, 0xB246, 0xB247, 0xBDDE, 0xB2C7, 0xB248, 0xB249, 0xB24A,
- /* U+7770 */ 0xB24B, 0xB24C, 0xB24D, 0xB24E, 0xB24F, 0xB250, 0xB251, 0xB252,
- /* U+7778 */ 0xB253, 0xB6C3, 0xB254, 0xB255, 0xB256, 0xEEA5, 0xD8BA, 0xEEA3,
- /* U+7780 */ 0xEEA6, 0xB257, 0xB258, 0xB259, 0xC3E9, 0xB3F2, 0xB25A, 0xB25B,
- /* U+7788 */ 0xB25C, 0xB25D, 0xB25E, 0xB25F, 0xEEA7, 0xEEA4, 0xCFB9, 0xB260,
- /* U+7790 */ 0xB261, 0xEEA8, 0xC2F7, 0xB262, 0xB263, 0xB264, 0xB265, 0xB266,
- /* U+7798 */ 0xB267, 0xB268, 0xB269, 0xB26A, 0xB26B, 0xB26C, 0xB26D, 0xEEA9,
- /* U+77A0 */ 0xEEAA, 0xB26E, 0xDEAB, 0xB26F, 0xB270, 0xC6B3, 0xB271, 0xC7C6,
- /* U+77A8 */ 0xB272, 0xD6F5, 0xB5C9, 0xB273, 0xCBB2, 0xB274, 0xB275, 0xB276,
- /* U+77B0 */ 0xEEAB, 0xB277, 0xB278, 0xCDAB, 0xB279, 0xEEAC, 0xB27A, 0xB27B,
- /* U+77B8 */ 0xB27C, 0xB27D, 0xB27E, 0xD5B0, 0xB280, 0xEEAD, 0xB281, 0xF6C4,
- /* U+77C0 */ 0xB282, 0xB283, 0xB284, 0xB285, 0xB286, 0xB287, 0xB288, 0xB289,
- /* U+77C8 */ 0xB28A, 0xB28B, 0xB28C, 0xB28D, 0xB28E, 0xDBC7, 0xB28F, 0xB290,
- /* U+77D0 */ 0xB291, 0xB292, 0xB293, 0xB294, 0xB295, 0xB296, 0xB297, 0xB4A3,
- /* U+77D8 */ 0xB298, 0xB299, 0xB29A, 0xC3AC, 0xF1E6, 0xB29B, 0xB29C, 0xB29D,
- /* U+77E0 */ 0xB29E, 0xB29F, 0xCAB8, 0xD2D3, 0xB2A0, 0xD6AA, 0xB340, 0xEFF2,
- /* U+77E8 */ 0xB341, 0xBED8, 0xB342, 0xBDC3, 0xEFF3, 0xB6CC, 0xB0AB, 0xB343,
- /* U+77F0 */ 0xB344, 0xB345, 0xB346, 0xCAAF, 0xB347, 0xB348, 0xEDB6, 0xB349,
- /* U+77F8 */ 0xEDB7, 0xB34A, 0xB34B, 0xB34C, 0xB34D, 0xCEF9, 0xB7AF, 0xBFF3,
- /* U+7800 */ 0xEDB8, 0xC2EB, 0xC9B0, 0xB34E, 0xB34F, 0xB350, 0xB351, 0xB352,
- /* U+7808 */ 0xB353, 0xEDB9, 0xB354, 0xB355, 0xC6F6, 0xBFB3, 0xB356, 0xB357,
- /* U+7810 */ 0xB358, 0xEDBC, 0xC5F8, 0xB359, 0xD1D0, 0xB35A, 0xD7A9, 0xEDBA,
- /* U+7818 */ 0xEDBB, 0xB35B, 0xD1E2, 0xB35C, 0xEDBF, 0xEDC0, 0xB35D, 0xEDC4,
- /* U+7820 */ 0xB35E, 0xB35F, 0xB360, 0xEDC8, 0xB361, 0xEDC6, 0xEDCE, 0xD5E8,
- /* U+7828 */ 0xB362, 0xEDC9, 0xB363, 0xB364, 0xEDC7, 0xEDBE, 0xB365, 0xB366,
- /* U+7830 */ 0xC5E9, 0xB367, 0xB368, 0xB369, 0xC6C6, 0xB36A, 0xB36B, 0xC9E9,
- /* U+7838 */ 0xD4D2, 0xEDC1, 0xEDC2, 0xEDC3, 0xEDC5, 0xB36C, 0xC0F9, 0xB36D,
- /* U+7840 */ 0xB4A1, 0xB36E, 0xB36F, 0xB370, 0xB371, 0xB9E8, 0xB372, 0xEDD0,
- /* U+7848 */ 0xB373, 0xB374, 0xB375, 0xB376, 0xEDD1, 0xB377, 0xEDCA, 0xB378,
- /* U+7850 */ 0xEDCF, 0xB379, 0xCEF8, 0xB37A, 0xB37B, 0xCBB6, 0xEDCC, 0xEDCD,
- /* U+7858 */ 0xB37C, 0xB37D, 0xB37E, 0xB380, 0xB381, 0xCFF5, 0xB382, 0xB383,
- /* U+7860 */ 0xB384, 0xB385, 0xB386, 0xB387, 0xB388, 0xB389, 0xB38A, 0xB38B,
- /* U+7868 */ 0xB38C, 0xB38D, 0xEDD2, 0xC1F2, 0xD3B2, 0xEDCB, 0xC8B7, 0xB38E,
- /* U+7870 */ 0xB38F, 0xB390, 0xB391, 0xB392, 0xB393, 0xB394, 0xB395, 0xBCEF,
- /* U+7878 */ 0xB396, 0xB397, 0xB398, 0xB399, 0xC5F0, 0xB39A, 0xB39B, 0xB39C,
- /* U+7880 */ 0xB39D, 0xB39E, 0xB39F, 0xB3A0, 0xB440, 0xB441, 0xB442, 0xEDD6,
- /* U+7888 */ 0xB443, 0xB5EF, 0xB444, 0xB445, 0xC2B5, 0xB0AD, 0xCBE9, 0xB446,
- /* U+7890 */ 0xB447, 0xB1AE, 0xB448, 0xEDD4, 0xB449, 0xB44A, 0xB44B, 0xCDEB,
- /* U+7898 */ 0xB5E2, 0xB44C, 0xEDD5, 0xEDD3, 0xEDD7, 0xB44D, 0xB44E, 0xB5FA,
- /* U+78A0 */ 0xB44F, 0xEDD8, 0xB450, 0xEDD9, 0xB451, 0xEDDC, 0xB452, 0xB1CC,
- /* U+78A8 */ 0xB453, 0xB454, 0xB455, 0xB456, 0xB457, 0xB458, 0xB459, 0xB45A,
- /* U+78B0 */ 0xC5F6, 0xBCEE, 0xEDDA, 0xCCBC, 0xB2EA, 0xB45B, 0xB45C, 0xB45D,
- /* U+78B8 */ 0xB45E, 0xEDDB, 0xB45F, 0xB460, 0xB461, 0xB462, 0xC4EB, 0xB463,
- /* U+78C0 */ 0xB464, 0xB4C5, 0xB465, 0xB466, 0xB467, 0xB0F5, 0xB468, 0xB469,
- /* U+78C8 */ 0xB46A, 0xEDDF, 0xC0DA, 0xB4E8, 0xB46B, 0xB46C, 0xB46D, 0xB46E,
- /* U+78D0 */ 0xC5CD, 0xB46F, 0xB470, 0xB471, 0xEDDD, 0xBFC4, 0xB472, 0xB473,
- /* U+78D8 */ 0xB474, 0xEDDE, 0xB475, 0xB476, 0xB477, 0xB478, 0xB479, 0xB47A,
- /* U+78E0 */ 0xB47B, 0xB47C, 0xB47D, 0xB47E, 0xB480, 0xB481, 0xB482, 0xB483,
- /* U+78E8 */ 0xC4A5, 0xB484, 0xB485, 0xB486, 0xEDE0, 0xB487, 0xB488, 0xB489,
- /* U+78F0 */ 0xB48A, 0xB48B, 0xEDE1, 0xB48C, 0xEDE3, 0xB48D, 0xB48E, 0xC1D7,
- /* U+78F8 */ 0xB48F, 0xB490, 0xBBC7, 0xB491, 0xB492, 0xB493, 0xB494, 0xB495,
- /* U+7900 */ 0xB496, 0xBDB8, 0xB497, 0xB498, 0xB499, 0xEDE2, 0xB49A, 0xB49B,
- /* U+7908 */ 0xB49C, 0xB49D, 0xB49E, 0xB49F, 0xB4A0, 0xB540, 0xB541, 0xB542,
- /* U+7910 */ 0xB543, 0xB544, 0xB545, 0xEDE4, 0xB546, 0xB547, 0xB548, 0xB549,
- /* U+7918 */ 0xB54A, 0xB54B, 0xB54C, 0xB54D, 0xB54E, 0xB54F, 0xEDE6, 0xB550,
- /* U+7920 */ 0xB551, 0xB552, 0xB553, 0xB554, 0xEDE5, 0xB555, 0xB556, 0xB557,
- /* U+7928 */ 0xB558, 0xB559, 0xB55A, 0xB55B, 0xB55C, 0xB55D, 0xB55E, 0xB55F,
- /* U+7930 */ 0xB560, 0xB561, 0xB562, 0xB563, 0xEDE7, 0xB564, 0xB565, 0xB566,
- /* U+7938 */ 0xB567, 0xB568, 0xCABE, 0xECEA, 0xC0F1, 0xB569, 0xC9E7, 0xB56A,
- /* U+7940 */ 0xECEB, 0xC6EE, 0xB56B, 0xB56C, 0xB56D, 0xB56E, 0xECEC, 0xB56F,
- /* U+7948 */ 0xC6ED, 0xECED, 0xB570, 0xB571, 0xB572, 0xB573, 0xB574, 0xB575,
- /* U+7950 */ 0xB576, 0xB577, 0xB578, 0xECF0, 0xB579, 0xB57A, 0xD7E6, 0xECF3,
- /* U+7958 */ 0xB57B, 0xB57C, 0xECF1, 0xECEE, 0xECEF, 0xD7A3, 0xC9F1, 0xCBEE,
- /* U+7960 */ 0xECF4, 0xB57D, 0xECF2, 0xB57E, 0xB580, 0xCFE9, 0xB581, 0xECF6,
- /* U+7968 */ 0xC6B1, 0xB582, 0xB583, 0xB584, 0xB585, 0xBCC0, 0xB586, 0xECF5,
- /* U+7970 */ 0xB587, 0xB588, 0xB589, 0xB58A, 0xB58B, 0xB58C, 0xB58D, 0xB5BB,
- /* U+7978 */ 0xBBF6, 0xB58E, 0xECF7, 0xB58F, 0xB590, 0xB591, 0xB592, 0xB593,
- /* U+7980 */ 0xD9F7, 0xBDFB, 0xB594, 0xB595, 0xC2BB, 0xECF8, 0xB596, 0xB597,
- /* U+7988 */ 0xB598, 0xB599, 0xECF9, 0xB59A, 0xB59B, 0xB59C, 0xB59D, 0xB8A3,
- /* U+7990 */ 0xB59E, 0xB59F, 0xB5A0, 0xB640, 0xB641, 0xB642, 0xB643, 0xB644,
- /* U+7998 */ 0xB645, 0xB646, 0xECFA, 0xB647, 0xB648, 0xB649, 0xB64A, 0xB64B,
- /* U+79A0 */ 0xB64C, 0xB64D, 0xB64E, 0xB64F, 0xB650, 0xB651, 0xB652, 0xECFB,
- /* U+79A8 */ 0xB653, 0xB654, 0xB655, 0xB656, 0xB657, 0xB658, 0xB659, 0xB65A,
- /* U+79B0 */ 0xB65B, 0xB65C, 0xB65D, 0xECFC, 0xB65E, 0xB65F, 0xB660, 0xB661,
- /* U+79B8 */ 0xB662, 0xD3ED, 0xD8AE, 0xC0EB, 0xB663, 0xC7DD, 0xBACC, 0xB664,
- /* U+79C0 */ 0xD0E3, 0xCBBD, 0xB665, 0xCDBA, 0xB666, 0xB667, 0xB8D1, 0xB668,
- /* U+79C8 */ 0xB669, 0xB1FC, 0xB66A, 0xC7EF, 0xB66B, 0xD6D6, 0xB66C, 0xB66D,
- /* U+79D0 */ 0xB66E, 0xBFC6, 0xC3EB, 0xB66F, 0xB670, 0xEFF5, 0xB671, 0xB672,
- /* U+79D8 */ 0xC3D8, 0xB673, 0xB674, 0xB675, 0xB676, 0xB677, 0xB678, 0xD7E2,
- /* U+79E0 */ 0xB679, 0xB67A, 0xB67B, 0xEFF7, 0xB3D3, 0xB67C, 0xC7D8, 0xD1ED,
- /* U+79E8 */ 0xB67D, 0xD6C8, 0xB67E, 0xEFF8, 0xB680, 0xEFF6, 0xB681, 0xBBFD,
- /* U+79F0 */ 0xB3C6, 0xB682, 0xB683, 0xB684, 0xB685, 0xB686, 0xB687, 0xB688,
- /* U+79F8 */ 0xBDD5, 0xB689, 0xB68A, 0xD2C6, 0xB68B, 0xBBE0, 0xB68C, 0xB68D,
- /* U+7A00 */ 0xCFA1, 0xB68E, 0xEFFC, 0xEFFB, 0xB68F, 0xB690, 0xEFF9, 0xB691,
- /* U+7A08 */ 0xB692, 0xB693, 0xB694, 0xB3CC, 0xB695, 0xC9D4, 0xCBB0, 0xB696,
- /* U+7A10 */ 0xB697, 0xB698, 0xB699, 0xB69A, 0xEFFE, 0xB69B, 0xB69C, 0xB0DE,
- /* U+7A18 */ 0xB69D, 0xB69E, 0xD6C9, 0xB69F, 0xB6A0, 0xB740, 0xEFFD, 0xB741,
- /* U+7A20 */ 0xB3ED, 0xB742, 0xB743, 0xF6D5, 0xB744, 0xB745, 0xB746, 0xB747,
- /* U+7A28 */ 0xB748, 0xB749, 0xB74A, 0xB74B, 0xB74C, 0xB74D, 0xB74E, 0xB74F,
- /* U+7A30 */ 0xB750, 0xB751, 0xB752, 0xCEC8, 0xB753, 0xB754, 0xB755, 0xF0A2,
- /* U+7A38 */ 0xB756, 0xF0A1, 0xB757, 0xB5BE, 0xBCDA, 0xBBFC, 0xB758, 0xB8E5,
- /* U+7A40 */ 0xB759, 0xB75A, 0xB75B, 0xB75C, 0xB75D, 0xB75E, 0xC4C2, 0xB75F,
- /* U+7A48 */ 0xB760, 0xB761, 0xB762, 0xB763, 0xB764, 0xB765, 0xB766, 0xB767,
- /* U+7A50 */ 0xB768, 0xF0A3, 0xB769, 0xB76A, 0xB76B, 0xB76C, 0xB76D, 0xCBEB,
- /* U+7A58 */ 0xB76E, 0xB76F, 0xB770, 0xB771, 0xB772, 0xB773, 0xB774, 0xB775,
- /* U+7A60 */ 0xB776, 0xB777, 0xB778, 0xB779, 0xB77A, 0xB77B, 0xB77C, 0xB77D,
- /* U+7A68 */ 0xB77E, 0xB780, 0xB781, 0xB782, 0xB783, 0xB784, 0xB785, 0xB786,
- /* U+7A70 */ 0xF0A6, 0xB787, 0xB788, 0xB789, 0xD1A8, 0xB78A, 0xBEBF, 0xC7EE,
- /* U+7A78 */ 0xF1B6, 0xF1B7, 0xBFD5, 0xB78B, 0xB78C, 0xB78D, 0xB78E, 0xB4A9,
- /* U+7A80 */ 0xF1B8, 0xCDBB, 0xB78F, 0xC7D4, 0xD5AD, 0xB790, 0xF1B9, 0xB791,
- /* U+7A88 */ 0xF1BA, 0xB792, 0xB793, 0xB794, 0xB795, 0xC7CF, 0xB796, 0xB797,
- /* U+7A90 */ 0xB798, 0xD2A4, 0xD6CF, 0xB799, 0xB79A, 0xF1BB, 0xBDD1, 0xB4B0,
- /* U+7A98 */ 0xBEBD, 0xB79B, 0xB79C, 0xB79D, 0xB4DC, 0xCED1, 0xB79E, 0xBFDF,
- /* U+7AA0 */ 0xF1BD, 0xB79F, 0xB7A0, 0xB840, 0xB841, 0xBFFA, 0xF1BC, 0xB842,
- /* U+7AA8 */ 0xF1BF, 0xB843, 0xB844, 0xB845, 0xF1BE, 0xF1C0, 0xB846, 0xB847,
- /* U+7AB0 */ 0xB848, 0xB849, 0xB84A, 0xF1C1, 0xB84B, 0xB84C, 0xB84D, 0xB84E,
- /* U+7AB8 */ 0xB84F, 0xB850, 0xB851, 0xB852, 0xB853, 0xB854, 0xB855, 0xC1FE,
- /* U+7AC0 */ 0xB856, 0xB857, 0xB858, 0xB859, 0xB85A, 0xB85B, 0xB85C, 0xB85D,
- /* U+7AC8 */ 0xB85E, 0xB85F, 0xB860, 0xC1A2, 0xB861, 0xB862, 0xB863, 0xB864,
- /* U+7AD0 */ 0xB865, 0xB866, 0xB867, 0xB868, 0xB869, 0xB86A, 0xCAFA, 0xB86B,
- /* U+7AD8 */ 0xB86C, 0xD5BE, 0xB86D, 0xB86E, 0xB86F, 0xB870, 0xBEBA, 0xBEB9,
- /* U+7AE0 */ 0xD5C2, 0xB871, 0xB872, 0xBFA2, 0xB873, 0xCDAF, 0xF1B5, 0xB874,
- /* U+7AE8 */ 0xB875, 0xB876, 0xB877, 0xB878, 0xB879, 0xBDDF, 0xB87A, 0xB6CB,
- /* U+7AF0 */ 0xB87B, 0xB87C, 0xB87D, 0xB87E, 0xB880, 0xB881, 0xB882, 0xB883,
- /* U+7AF8 */ 0xB884, 0xD6F1, 0xF3C3, 0xB885, 0xB886, 0xF3C4, 0xB887, 0xB8CD,
- /* U+7B00 */ 0xB888, 0xB889, 0xB88A, 0xF3C6, 0xF3C7, 0xB88B, 0xB0CA, 0xB88C,
- /* U+7B08 */ 0xF3C5, 0xB88D, 0xF3C9, 0xCBF1, 0xB88E, 0xB88F, 0xB890, 0xF3CB,
- /* U+7B10 */ 0xB891, 0xD0A6, 0xB892, 0xB893, 0xB1CA, 0xF3C8, 0xB894, 0xB895,
- /* U+7B18 */ 0xB896, 0xF3CF, 0xB897, 0xB5D1, 0xB898, 0xB899, 0xF3D7, 0xB89A,
- /* U+7B20 */ 0xF3D2, 0xB89B, 0xB89C, 0xB89D, 0xF3D4, 0xF3D3, 0xB7FB, 0xB89E,
- /* U+7B28 */ 0xB1BF, 0xB89F, 0xF3CE, 0xF3CA, 0xB5DA, 0xB8A0, 0xF3D0, 0xB940,
- /* U+7B30 */ 0xB941, 0xF3D1, 0xB942, 0xF3D5, 0xB943, 0xB944, 0xB945, 0xB946,
- /* U+7B38 */ 0xF3CD, 0xB947, 0xBCE3, 0xB948, 0xC1FD, 0xB949, 0xF3D6, 0xB94A,
- /* U+7B40 */ 0xB94B, 0xB94C, 0xB94D, 0xB94E, 0xB94F, 0xF3DA, 0xB950, 0xF3CC,
- /* U+7B48 */ 0xB951, 0xB5C8, 0xB952, 0xBDEE, 0xF3DC, 0xB953, 0xB954, 0xB7A4,
- /* U+7B50 */ 0xBFF0, 0xD6FE, 0xCDB2, 0xB955, 0xB4F0, 0xB956, 0xB2DF, 0xB957,
- /* U+7B58 */ 0xF3D8, 0xB958, 0xF3D9, 0xC9B8, 0xB959, 0xF3DD, 0xB95A, 0xB95B,
- /* U+7B60 */ 0xF3DE, 0xB95C, 0xF3E1, 0xB95D, 0xB95E, 0xB95F, 0xB960, 0xB961,
- /* U+7B68 */ 0xB962, 0xB963, 0xB964, 0xB965, 0xB966, 0xB967, 0xF3DF, 0xB968,
- /* U+7B70 */ 0xB969, 0xF3E3, 0xF3E2, 0xB96A, 0xB96B, 0xF3DB, 0xB96C, 0xBFEA,
- /* U+7B78 */ 0xB96D, 0xB3EF, 0xB96E, 0xF3E0, 0xB96F, 0xB970, 0xC7A9, 0xB971,
- /* U+7B80 */ 0xBCF2, 0xB972, 0xB973, 0xB974, 0xB975, 0xF3EB, 0xB976, 0xB977,
- /* U+7B88 */ 0xB978, 0xB979, 0xB97A, 0xB97B, 0xB97C, 0xB9BF, 0xB97D, 0xB97E,
- /* U+7B90 */ 0xF3E4, 0xB980, 0xB981, 0xB982, 0xB2AD, 0xBBFE, 0xB983, 0xCBE3,
- /* U+7B98 */ 0xB984, 0xB985, 0xB986, 0xB987, 0xF3ED, 0xF3E9, 0xB988, 0xB989,
- /* U+7BA0 */ 0xB98A, 0xB9DC, 0xF3EE, 0xB98B, 0xB98C, 0xB98D, 0xF3E5, 0xF3E6,
- /* U+7BA8 */ 0xF3EA, 0xC2E1, 0xF3EC, 0xF3EF, 0xF3E8, 0xBCFD, 0xB98E, 0xB98F,
- /* U+7BB0 */ 0xB990, 0xCFE4, 0xB991, 0xB992, 0xF3F0, 0xB993, 0xB994, 0xB995,
- /* U+7BB8 */ 0xF3E7, 0xB996, 0xB997, 0xB998, 0xB999, 0xB99A, 0xB99B, 0xB99C,
- /* U+7BC0 */ 0xB99D, 0xF3F2, 0xB99E, 0xB99F, 0xB9A0, 0xBA40, 0xD7AD, 0xC6AA,
- /* U+7BC8 */ 0xBA41, 0xBA42, 0xBA43, 0xBA44, 0xF3F3, 0xBA45, 0xBA46, 0xBA47,
- /* U+7BD0 */ 0xBA48, 0xF3F1, 0xBA49, 0xC2A8, 0xBA4A, 0xBA4B, 0xBA4C, 0xBA4D,
- /* U+7BD8 */ 0xBA4E, 0xB8DD, 0xF3F5, 0xBA4F, 0xBA50, 0xF3F4, 0xBA51, 0xBA52,
- /* U+7BE0 */ 0xBA53, 0xB4DB, 0xBA54, 0xBA55, 0xBA56, 0xF3F6, 0xF3F7, 0xBA57,
- /* U+7BE8 */ 0xBA58, 0xBA59, 0xF3F8, 0xBA5A, 0xBA5B, 0xBA5C, 0xC0BA, 0xBA5D,
- /* U+7BF0 */ 0xBA5E, 0xC0E9, 0xBA5F, 0xBA60, 0xBA61, 0xBA62, 0xBA63, 0xC5F1,
- /* U+7BF8 */ 0xBA64, 0xBA65, 0xBA66, 0xBA67, 0xF3FB, 0xBA68, 0xF3FA, 0xBA69,
- /* U+7C00 */ 0xBA6A, 0xBA6B, 0xBA6C, 0xBA6D, 0xBA6E, 0xBA6F, 0xBA70, 0xB4D8,
- /* U+7C08 */ 0xBA71, 0xBA72, 0xBA73, 0xF3FE, 0xF3F9, 0xBA74, 0xBA75, 0xF3FC,
- /* U+7C10 */ 0xBA76, 0xBA77, 0xBA78, 0xBA79, 0xBA7A, 0xBA7B, 0xF3FD, 0xBA7C,
- /* U+7C18 */ 0xBA7D, 0xBA7E, 0xBA80, 0xBA81, 0xBA82, 0xBA83, 0xBA84, 0xF4A1,
- /* U+7C20 */ 0xBA85, 0xBA86, 0xBA87, 0xBA88, 0xBA89, 0xBA8A, 0xF4A3, 0xBBC9,
- /* U+7C28 */ 0xBA8B, 0xBA8C, 0xF4A2, 0xBA8D, 0xBA8E, 0xBA8F, 0xBA90, 0xBA91,
- /* U+7C30 */ 0xBA92, 0xBA93, 0xBA94, 0xBA95, 0xBA96, 0xBA97, 0xBA98, 0xBA99,
- /* U+7C38 */ 0xF4A4, 0xBA9A, 0xBA9B, 0xBA9C, 0xBA9D, 0xBA9E, 0xBA9F, 0xB2BE,
- /* U+7C40 */ 0xF4A6, 0xF4A5, 0xBAA0, 0xBB40, 0xBB41, 0xBB42, 0xBB43, 0xBB44,
- /* U+7C48 */ 0xBB45, 0xBB46, 0xBB47, 0xBB48, 0xBB49, 0xBCAE, 0xBB4A, 0xBB4B,
- /* U+7C50 */ 0xBB4C, 0xBB4D, 0xBB4E, 0xBB4F, 0xBB50, 0xBB51, 0xBB52, 0xBB53,
- /* U+7C58 */ 0xBB54, 0xBB55, 0xBB56, 0xBB57, 0xBB58, 0xBB59, 0xBB5A, 0xBB5B,
- /* U+7C60 */ 0xBB5C, 0xBB5D, 0xBB5E, 0xBB5F, 0xBB60, 0xBB61, 0xBB62, 0xBB63,
- /* U+7C68 */ 0xBB64, 0xBB65, 0xBB66, 0xBB67, 0xBB68, 0xBB69, 0xBB6A, 0xBB6B,
- /* U+7C70 */ 0xBB6C, 0xBB6D, 0xBB6E, 0xC3D7, 0xD9E1, 0xBB6F, 0xBB70, 0xBB71,
- /* U+7C78 */ 0xBB72, 0xBB73, 0xBB74, 0xC0E0, 0xF4CC, 0xD7D1, 0xBB75, 0xBB76,
- /* U+7C80 */ 0xBB77, 0xBB78, 0xBB79, 0xBB7A, 0xBB7B, 0xBB7C, 0xBB7D, 0xBB7E,
- /* U+7C88 */ 0xBB80, 0xB7DB, 0xBB81, 0xBB82, 0xBB83, 0xBB84, 0xBB85, 0xBB86,
- /* U+7C90 */ 0xBB87, 0xF4CE, 0xC1A3, 0xBB88, 0xBB89, 0xC6C9, 0xBB8A, 0xB4D6,
- /* U+7C98 */ 0xD5B3, 0xBB8B, 0xBB8C, 0xBB8D, 0xF4D0, 0xF4CF, 0xF4D1, 0xCBDA,
- /* U+7CA0 */ 0xBB8E, 0xBB8F, 0xF4D2, 0xBB90, 0xD4C1, 0xD6E0, 0xBB91, 0xBB92,
- /* U+7CA8 */ 0xBB93, 0xBB94, 0xB7E0, 0xBB95, 0xBB96, 0xBB97, 0xC1B8, 0xBB98,
- /* U+7CB0 */ 0xBB99, 0xC1BB, 0xF4D3, 0xBEAC, 0xBB9A, 0xBB9B, 0xBB9C, 0xBB9D,
- /* U+7CB8 */ 0xBB9E, 0xB4E2, 0xBB9F, 0xBBA0, 0xF4D4, 0xF4D5, 0xBEAB, 0xBC40,
- /* U+7CC0 */ 0xBC41, 0xF4D6, 0xBC42, 0xBC43, 0xBC44, 0xF4DB, 0xBC45, 0xF4D7,
- /* U+7CC8 */ 0xF4DA, 0xBC46, 0xBAFD, 0xBC47, 0xF4D8, 0xF4D9, 0xBC48, 0xBC49,
- /* U+7CD0 */ 0xBC4A, 0xBC4B, 0xBC4C, 0xBC4D, 0xBC4E, 0xB8E2, 0xCCC7, 0xF4DC,
- /* U+7CD8 */ 0xBC4F, 0xB2DA, 0xBC50, 0xBC51, 0xC3D3, 0xBC52, 0xBC53, 0xD4E3,
- /* U+7CE0 */ 0xBFB7, 0xBC54, 0xBC55, 0xBC56, 0xBC57, 0xBC58, 0xBC59, 0xBC5A,
- /* U+7CE8 */ 0xF4DD, 0xBC5B, 0xBC5C, 0xBC5D, 0xBC5E, 0xBC5F, 0xBC60, 0xC5B4,
- /* U+7CF0 */ 0xBC61, 0xBC62, 0xBC63, 0xBC64, 0xBC65, 0xBC66, 0xBC67, 0xBC68,
- /* U+7CF8 */ 0xF4E9, 0xBC69, 0xBC6A, 0xCFB5, 0xBC6B, 0xBC6C, 0xBC6D, 0xBC6E,
- /* U+7D00 */ 0xBC6F, 0xBC70, 0xBC71, 0xBC72, 0xBC73, 0xBC74, 0xBC75, 0xBC76,
- /* U+7D08 */ 0xBC77, 0xBC78, 0xCEC9, 0xBC79, 0xBC7A, 0xBC7B, 0xBC7C, 0xBC7D,
- /* U+7D10 */ 0xBC7E, 0xBC80, 0xBC81, 0xBC82, 0xBC83, 0xBC84, 0xBC85, 0xBC86,
- /* U+7D18 */ 0xBC87, 0xBC88, 0xBC89, 0xBC8A, 0xBC8B, 0xBC8C, 0xBC8D, 0xBC8E,
- /* U+7D20 */ 0xCBD8, 0xBC8F, 0xCBF7, 0xBC90, 0xBC91, 0xBC92, 0xBC93, 0xBDF4,
- /* U+7D28 */ 0xBC94, 0xBC95, 0xBC96, 0xD7CF, 0xBC97, 0xBC98, 0xBC99, 0xC0DB,
- /* U+7D30 */ 0xBC9A, 0xBC9B, 0xBC9C, 0xBC9D, 0xBC9E, 0xBC9F, 0xBCA0, 0xBD40,
- /* U+7D38 */ 0xBD41, 0xBD42, 0xBD43, 0xBD44, 0xBD45, 0xBD46, 0xBD47, 0xBD48,
- /* U+7D40 */ 0xBD49, 0xBD4A, 0xBD4B, 0xBD4C, 0xBD4D, 0xBD4E, 0xBD4F, 0xBD50,
- /* U+7D48 */ 0xBD51, 0xBD52, 0xBD53, 0xBD54, 0xBD55, 0xBD56, 0xBD57, 0xBD58,
- /* U+7D50 */ 0xBD59, 0xBD5A, 0xBD5B, 0xBD5C, 0xBD5D, 0xBD5E, 0xBD5F, 0xBD60,
- /* U+7D58 */ 0xBD61, 0xBD62, 0xBD63, 0xBD64, 0xBD65, 0xBD66, 0xBD67, 0xBD68,
- /* U+7D60 */ 0xBD69, 0xBD6A, 0xBD6B, 0xBD6C, 0xBD6D, 0xBD6E, 0xBD6F, 0xBD70,
- /* U+7D68 */ 0xBD71, 0xBD72, 0xBD73, 0xBD74, 0xBD75, 0xBD76, 0xD0F5, 0xBD77,
- /* U+7D70 */ 0xBD78, 0xBD79, 0xBD7A, 0xBD7B, 0xBD7C, 0xBD7D, 0xBD7E, 0xF4EA,
- /* U+7D78 */ 0xBD80, 0xBD81, 0xBD82, 0xBD83, 0xBD84, 0xBD85, 0xBD86, 0xBD87,
- /* U+7D80 */ 0xBD88, 0xBD89, 0xBD8A, 0xBD8B, 0xBD8C, 0xBD8D, 0xBD8E, 0xBD8F,
- /* U+7D88 */ 0xBD90, 0xBD91, 0xBD92, 0xBD93, 0xBD94, 0xBD95, 0xBD96, 0xBD97,
- /* U+7D90 */ 0xBD98, 0xBD99, 0xBD9A, 0xBD9B, 0xBD9C, 0xBD9D, 0xBD9E, 0xBD9F,
- /* U+7D98 */ 0xBDA0, 0xBE40, 0xBE41, 0xBE42, 0xBE43, 0xBE44, 0xBE45, 0xBE46,
- /* U+7DA0 */ 0xBE47, 0xBE48, 0xBE49, 0xBE4A, 0xBE4B, 0xBE4C, 0xF4EB, 0xBE4D,
- /* U+7DA8 */ 0xBE4E, 0xBE4F, 0xBE50, 0xBE51, 0xBE52, 0xBE53, 0xF4EC, 0xBE54,
- /* U+7DB0 */ 0xBE55, 0xBE56, 0xBE57, 0xBE58, 0xBE59, 0xBE5A, 0xBE5B, 0xBE5C,
- /* U+7DB8 */ 0xBE5D, 0xBE5E, 0xBE5F, 0xBE60, 0xBE61, 0xBE62, 0xBE63, 0xBE64,
- /* U+7DC0 */ 0xBE65, 0xBE66, 0xBE67, 0xBE68, 0xBE69, 0xBE6A, 0xBE6B, 0xBE6C,
- /* U+7DC8 */ 0xBE6D, 0xBE6E, 0xBE6F, 0xBE70, 0xBE71, 0xBE72, 0xBE73, 0xBE74,
- /* U+7DD0 */ 0xBE75, 0xBE76, 0xBE77, 0xBE78, 0xBE79, 0xBE7A, 0xBE7B, 0xBE7C,
- /* U+7DD8 */ 0xBE7D, 0xBE7E, 0xBE80, 0xBE81, 0xBE82, 0xBE83, 0xBE84, 0xBE85,
- /* U+7DE0 */ 0xBE86, 0xBE87, 0xBE88, 0xBE89, 0xBE8A, 0xBE8B, 0xBE8C, 0xBE8D,
- /* U+7DE8 */ 0xBE8E, 0xBE8F, 0xBE90, 0xBE91, 0xBE92, 0xBE93, 0xBE94, 0xBE95,
- /* U+7DF0 */ 0xBE96, 0xBE97, 0xBE98, 0xBE99, 0xBE9A, 0xBE9B, 0xBE9C, 0xBE9D,
- /* U+7DF8 */ 0xBE9E, 0xBE9F, 0xBEA0, 0xBF40, 0xBF41, 0xBF42, 0xBF43, 0xBF44,
- /* U+7E00 */ 0xBF45, 0xBF46, 0xBF47, 0xBF48, 0xBF49, 0xBF4A, 0xBF4B, 0xBF4C,
- /* U+7E08 */ 0xBF4D, 0xBF4E, 0xBF4F, 0xBF50, 0xBF51, 0xBF52, 0xBF53, 0xBF54,
- /* U+7E10 */ 0xBF55, 0xBF56, 0xBF57, 0xBF58, 0xBF59, 0xBF5A, 0xBF5B, 0xBF5C,
- /* U+7E18 */ 0xBF5D, 0xBF5E, 0xBF5F, 0xBF60, 0xBF61, 0xBF62, 0xBF63, 0xBF64,
- /* U+7E20 */ 0xBF65, 0xBF66, 0xBF67, 0xBF68, 0xBF69, 0xBF6A, 0xBF6B, 0xBF6C,
- /* U+7E28 */ 0xBF6D, 0xBF6E, 0xBF6F, 0xBF70, 0xBF71, 0xBF72, 0xBF73, 0xBF74,
- /* U+7E30 */ 0xBF75, 0xBF76, 0xBF77, 0xBF78, 0xBF79, 0xBF7A, 0xBF7B, 0xBF7C,
- /* U+7E38 */ 0xBF7D, 0xBF7E, 0xBF80, 0xF7E3, 0xBF81, 0xBF82, 0xBF83, 0xBF84,
- /* U+7E40 */ 0xBF85, 0xB7B1, 0xBF86, 0xBF87, 0xBF88, 0xBF89, 0xBF8A, 0xF4ED,
- /* U+7E48 */ 0xBF8B, 0xBF8C, 0xBF8D, 0xBF8E, 0xBF8F, 0xBF90, 0xBF91, 0xBF92,
- /* U+7E50 */ 0xBF93, 0xBF94, 0xBF95, 0xBF96, 0xBF97, 0xBF98, 0xBF99, 0xBF9A,
- /* U+7E58 */ 0xBF9B, 0xBF9C, 0xBF9D, 0xBF9E, 0xBF9F, 0xBFA0, 0xC040, 0xC041,
- /* U+7E60 */ 0xC042, 0xC043, 0xC044, 0xC045, 0xC046, 0xC047, 0xC048, 0xC049,
- /* U+7E68 */ 0xC04A, 0xC04B, 0xC04C, 0xC04D, 0xC04E, 0xC04F, 0xC050, 0xC051,
- /* U+7E70 */ 0xC052, 0xC053, 0xC054, 0xC055, 0xC056, 0xC057, 0xC058, 0xC059,
- /* U+7E78 */ 0xC05A, 0xC05B, 0xC05C, 0xC05D, 0xC05E, 0xC05F, 0xC060, 0xC061,
- /* U+7E80 */ 0xC062, 0xC063, 0xD7EB, 0xC064, 0xC065, 0xC066, 0xC067, 0xC068,
- /* U+7E88 */ 0xC069, 0xC06A, 0xC06B, 0xC06C, 0xC06D, 0xC06E, 0xC06F, 0xC070,
- /* U+7E90 */ 0xC071, 0xC072, 0xC073, 0xC074, 0xC075, 0xC076, 0xC077, 0xC078,
- /* U+7E98 */ 0xC079, 0xC07A, 0xC07B, 0xF4EE, 0xC07C, 0xC07D, 0xC07E, 0xE6F9,
- /* U+7EA0 */ 0xBEC0, 0xE6FA, 0xBAEC, 0xE6FB, 0xCFCB, 0xE6FC, 0xD4BC, 0xBCB6,
- /* U+7EA8 */ 0xE6FD, 0xE6FE, 0xBCCD, 0xC8D2, 0xCEB3, 0xE7A1, 0xC080, 0xB4BF,
- /* U+7EB0 */ 0xE7A2, 0xC9B4, 0xB8D9, 0xC4C9, 0xC081, 0xD7DD, 0xC2DA, 0xB7D7,
- /* U+7EB8 */ 0xD6BD, 0xCEC6, 0xB7C4, 0xC082, 0xC083, 0xC5A6, 0xE7A3, 0xCFDF,
- /* U+7EC0 */ 0xE7A4, 0xE7A5, 0xE7A6, 0xC1B7, 0xD7E9, 0xC9F0, 0xCFB8, 0xD6AF,
- /* U+7EC8 */ 0xD6D5, 0xE7A7, 0xB0ED, 0xE7A8, 0xE7A9, 0xC9DC, 0xD2EF, 0xBEAD,
- /* U+7ED0 */ 0xE7AA, 0xB0F3, 0xC8DE, 0xBDE1, 0xE7AB, 0xC8C6, 0xC084, 0xE7AC,
- /* U+7ED8 */ 0xBBE6, 0xB8F8, 0xD1A4, 0xE7AD, 0xC2E7, 0xBEF8, 0xBDCA, 0xCDB3,
- /* U+7EE0 */ 0xE7AE, 0xE7AF, 0xBEEE, 0xD0E5, 0xC085, 0xCBE7, 0xCCD0, 0xBCCC,
- /* U+7EE8 */ 0xE7B0, 0xBCA8, 0xD0F7, 0xE7B1, 0xC086, 0xD0F8, 0xE7B2, 0xE7B3,
- /* U+7EF0 */ 0xB4C2, 0xE7B4, 0xE7B5, 0xC9FE, 0xCEAC, 0xC3E0, 0xE7B7, 0xB1C1,
- /* U+7EF8 */ 0xB3F1, 0xC087, 0xE7B8, 0xE7B9, 0xD7DB, 0xD5C0, 0xE7BA, 0xC2CC,
- /* U+7F00 */ 0xD7BA, 0xE7BB, 0xE7BC, 0xE7BD, 0xBCEA, 0xC3E5, 0xC0C2, 0xE7BE,
- /* U+7F08 */ 0xE7BF, 0xBCA9, 0xC088, 0xE7C0, 0xE7C1, 0xE7B6, 0xB6D0, 0xE7C2,
- /* U+7F10 */ 0xC089, 0xE7C3, 0xE7C4, 0xBBBA, 0xB5DE, 0xC2C6, 0xB1E0, 0xE7C5,
- /* U+7F18 */ 0xD4B5, 0xE7C6, 0xB8BF, 0xE7C8, 0xE7C7, 0xB7EC, 0xC08A, 0xE7C9,
- /* U+7F20 */ 0xB2F8, 0xE7CA, 0xE7CB, 0xE7CC, 0xE7CD, 0xE7CE, 0xE7CF, 0xE7D0,
- /* U+7F28 */ 0xD3A7, 0xCBF5, 0xE7D1, 0xE7D2, 0xE7D3, 0xE7D4, 0xC9C9, 0xE7D5,
- /* U+7F30 */ 0xE7D6, 0xE7D7, 0xE7D8, 0xE7D9, 0xBDC9, 0xE7DA, 0xF3BE, 0xC08B,
- /* U+7F38 */ 0xB8D7, 0xC08C, 0xC8B1, 0xC08D, 0xC08E, 0xC08F, 0xC090, 0xC091,
- /* U+7F40 */ 0xC092, 0xC093, 0xF3BF, 0xC094, 0xF3C0, 0xF3C1, 0xC095, 0xC096,
- /* U+7F48 */ 0xC097, 0xC098, 0xC099, 0xC09A, 0xC09B, 0xC09C, 0xC09D, 0xC09E,
- /* U+7F50 */ 0xB9DE, 0xCDF8, 0xC09F, 0xC0A0, 0xD8E8, 0xBAB1, 0xC140, 0xC2DE,
- /* U+7F58 */ 0xEEB7, 0xC141, 0xB7A3, 0xC142, 0xC143, 0xC144, 0xC145, 0xEEB9,
- /* U+7F60 */ 0xC146, 0xEEB8, 0xB0D5, 0xC147, 0xC148, 0xC149, 0xC14A, 0xC14B,
- /* U+7F68 */ 0xEEBB, 0xD5D6, 0xD7EF, 0xC14C, 0xC14D, 0xC14E, 0xD6C3, 0xC14F,
- /* U+7F70 */ 0xC150, 0xEEBD, 0xCAF0, 0xC151, 0xEEBC, 0xC152, 0xC153, 0xC154,
- /* U+7F78 */ 0xC155, 0xEEBE, 0xC156, 0xC157, 0xC158, 0xC159, 0xEEC0, 0xC15A,
- /* U+7F80 */ 0xC15B, 0xEEBF, 0xC15C, 0xC15D, 0xC15E, 0xC15F, 0xC160, 0xC161,
- /* U+7F88 */ 0xC162, 0xC163, 0xD1F2, 0xC164, 0xC7BC, 0xC165, 0xC3C0, 0xC166,
- /* U+7F90 */ 0xC167, 0xC168, 0xC169, 0xC16A, 0xB8E1, 0xC16B, 0xC16C, 0xC16D,
- /* U+7F98 */ 0xC16E, 0xC16F, 0xC1E7, 0xC170, 0xC171, 0xF4C6, 0xD0DF, 0xF4C7,
- /* U+7FA0 */ 0xC172, 0xCFDB, 0xC173, 0xC174, 0xC8BA, 0xC175, 0xC176, 0xF4C8,
- /* U+7FA8 */ 0xC177, 0xC178, 0xC179, 0xC17A, 0xC17B, 0xC17C, 0xC17D, 0xF4C9,
- /* U+7FB0 */ 0xF4CA, 0xC17E, 0xF4CB, 0xC180, 0xC181, 0xC182, 0xC183, 0xC184,
- /* U+7FB8 */ 0xD9FA, 0xB8FE, 0xC185, 0xC186, 0xE5F1, 0xD3F0, 0xC187, 0xF4E0,
- /* U+7FC0 */ 0xC188, 0xCECC, 0xC189, 0xC18A, 0xC18B, 0xB3E1, 0xC18C, 0xC18D,
- /* U+7FC8 */ 0xC18E, 0xC18F, 0xF1B4, 0xC190, 0xD2EE, 0xC191, 0xF4E1, 0xC192,
- /* U+7FD0 */ 0xC193, 0xC194, 0xC195, 0xC196, 0xCFE8, 0xF4E2, 0xC197, 0xC198,
- /* U+7FD8 */ 0xC7CC, 0xC199, 0xC19A, 0xC19B, 0xC19C, 0xC19D, 0xC19E, 0xB5D4,
- /* U+7FE0 */ 0xB4E4, 0xF4E4, 0xC19F, 0xC1A0, 0xC240, 0xF4E3, 0xF4E5, 0xC241,
- /* U+7FE8 */ 0xC242, 0xF4E6, 0xC243, 0xC244, 0xC245, 0xC246, 0xF4E7, 0xC247,
- /* U+7FF0 */ 0xBAB2, 0xB0BF, 0xC248, 0xF4E8, 0xC249, 0xC24A, 0xC24B, 0xC24C,
- /* U+7FF8 */ 0xC24D, 0xC24E, 0xC24F, 0xB7AD, 0xD2ED, 0xC250, 0xC251, 0xC252,
- /* U+8000 */ 0xD2AB, 0xC0CF, 0xC253, 0xBFBC, 0xEBA3, 0xD5DF, 0xEAC8, 0xC254,
- /* U+8008 */ 0xC255, 0xC256, 0xC257, 0xF1F3, 0xB6F8, 0xCBA3, 0xC258, 0xC259,
- /* U+8010 */ 0xC4CD, 0xC25A, 0xF1E7, 0xC25B, 0xF1E8, 0xB8FB, 0xF1E9, 0xBAC4,
- /* U+8018 */ 0xD4C5, 0xB0D2, 0xC25C, 0xC25D, 0xF1EA, 0xC25E, 0xC25F, 0xC260,
- /* U+8020 */ 0xF1EB, 0xC261, 0xF1EC, 0xC262, 0xC263, 0xF1ED, 0xF1EE, 0xF1EF,
- /* U+8028 */ 0xF1F1, 0xF1F0, 0xC5D5, 0xC264, 0xC265, 0xC266, 0xC267, 0xC268,
- /* U+8030 */ 0xC269, 0xF1F2, 0xC26A, 0xB6FA, 0xC26B, 0xF1F4, 0xD2AE, 0xDEC7,
- /* U+8038 */ 0xCBCA, 0xC26C, 0xC26D, 0xB3DC, 0xC26E, 0xB5A2, 0xC26F, 0xB9A2,
- /* U+8040 */ 0xC270, 0xC271, 0xC4F4, 0xF1F5, 0xC272, 0xC273, 0xF1F6, 0xC274,
- /* U+8048 */ 0xC275, 0xC276, 0xC1C4, 0xC1FB, 0xD6B0, 0xF1F7, 0xC277, 0xC278,
- /* U+8050 */ 0xC279, 0xC27A, 0xF1F8, 0xC27B, 0xC1AA, 0xC27C, 0xC27D, 0xC27E,
- /* U+8058 */ 0xC6B8, 0xC280, 0xBEDB, 0xC281, 0xC282, 0xC283, 0xC284, 0xC285,
- /* U+8060 */ 0xC286, 0xC287, 0xC288, 0xC289, 0xC28A, 0xC28B, 0xC28C, 0xC28D,
- /* U+8068 */ 0xC28E, 0xF1F9, 0xB4CF, 0xC28F, 0xC290, 0xC291, 0xC292, 0xC293,
- /* U+8070 */ 0xC294, 0xF1FA, 0xC295, 0xC296, 0xC297, 0xC298, 0xC299, 0xC29A,
- /* U+8078 */ 0xC29B, 0xC29C, 0xC29D, 0xC29E, 0xC29F, 0xC2A0, 0xC340, 0xEDB2,
- /* U+8080 */ 0xEDB1, 0xC341, 0xC342, 0xCBE0, 0xD2DE, 0xC343, 0xCBC1, 0xD5D8,
- /* U+8088 */ 0xC344, 0xC8E2, 0xC345, 0xC0DF, 0xBCA1, 0xC346, 0xC347, 0xC348,
- /* U+8090 */ 0xC349, 0xC34A, 0xC34B, 0xEBC1, 0xC34C, 0xC34D, 0xD0A4, 0xC34E,
- /* U+8098 */ 0xD6E2, 0xC34F, 0xB6C7, 0xB8D8, 0xEBC0, 0xB8CE, 0xC350, 0xEBBF,
- /* U+80A0 */ 0xB3A6, 0xB9C9, 0xD6AB, 0xC351, 0xB7F4, 0xB7CA, 0xC352, 0xC353,
- /* U+80A8 */ 0xC354, 0xBCE7, 0xB7BE, 0xEBC6, 0xC355, 0xEBC7, 0xB0B9, 0xBFCF,
- /* U+80B0 */ 0xC356, 0xEBC5, 0xD3FD, 0xC357, 0xEBC8, 0xC358, 0xC359, 0xEBC9,
- /* U+80B8 */ 0xC35A, 0xC35B, 0xB7CE, 0xC35C, 0xEBC2, 0xEBC4, 0xC9F6, 0xD6D7,
- /* U+80C0 */ 0xD5CD, 0xD0B2, 0xEBCF, 0xCEB8, 0xEBD0, 0xC35D, 0xB5A8, 0xC35E,
- /* U+80C8 */ 0xC35F, 0xC360, 0xC361, 0xC362, 0xB1B3, 0xEBD2, 0xCCA5, 0xC363,
- /* U+80D0 */ 0xC364, 0xC365, 0xC366, 0xC367, 0xC368, 0xC369, 0xC5D6, 0xEBD3,
- /* U+80D8 */ 0xC36A, 0xEBD1, 0xC5DF, 0xEBCE, 0xCAA4, 0xEBD5, 0xB0FB, 0xC36B,
- /* U+80E0 */ 0xC36C, 0xBAFA, 0xC36D, 0xC36E, 0xD8B7, 0xF1E3, 0xC36F, 0xEBCA,
- /* U+80E8 */ 0xEBCB, 0xEBCC, 0xEBCD, 0xEBD6, 0xE6C0, 0xEBD9, 0xC370, 0xBFE8,
- /* U+80F0 */ 0xD2C8, 0xEBD7, 0xEBDC, 0xB8EC, 0xEBD8, 0xC371, 0xBDBA, 0xC372,
- /* U+80F8 */ 0xD0D8, 0xC373, 0xB0B7, 0xC374, 0xEBDD, 0xC4DC, 0xC375, 0xC376,
- /* U+8100 */ 0xC377, 0xC378, 0xD6AC, 0xC379, 0xC37A, 0xC37B, 0xB4E0, 0xC37C,
- /* U+8108 */ 0xC37D, 0xC2F6, 0xBCB9, 0xC37E, 0xC380, 0xEBDA, 0xEBDB, 0xD4E0,
- /* U+8110 */ 0xC6EA, 0xC4D4, 0xEBDF, 0xC5A7, 0xD9F5, 0xC381, 0xB2B1, 0xC382,
- /* U+8118 */ 0xEBE4, 0xC383, 0xBDC5, 0xC384, 0xC385, 0xC386, 0xEBE2, 0xC387,
- /* U+8120 */ 0xC388, 0xC389, 0xC38A, 0xC38B, 0xC38C, 0xC38D, 0xC38E, 0xC38F,
- /* U+8128 */ 0xC390, 0xC391, 0xC392, 0xC393, 0xEBE3, 0xC394, 0xC395, 0xB8AC,
- /* U+8130 */ 0xC396, 0xCDD1, 0xEBE5, 0xC397, 0xC398, 0xC399, 0xEBE1, 0xC39A,
- /* U+8138 */ 0xC1B3, 0xC39B, 0xC39C, 0xC39D, 0xC39E, 0xC39F, 0xC6A2, 0xC3A0,
- /* U+8140 */ 0xC440, 0xC441, 0xC442, 0xC443, 0xC444, 0xC445, 0xCCF3, 0xC446,
- /* U+8148 */ 0xEBE6, 0xC447, 0xC0B0, 0xD2B8, 0xEBE7, 0xC448, 0xC449, 0xC44A,
- /* U+8150 */ 0xB8AF, 0xB8AD, 0xC44B, 0xEBE8, 0xC7BB, 0xCDF3, 0xC44C, 0xC44D,
- /* U+8158 */ 0xC44E, 0xEBEA, 0xEBEB, 0xC44F, 0xC450, 0xC451, 0xC452, 0xC453,
- /* U+8160 */ 0xEBED, 0xC454, 0xC455, 0xC456, 0xC457, 0xD0C8, 0xC458, 0xEBF2,
- /* U+8168 */ 0xC459, 0xEBEE, 0xC45A, 0xC45B, 0xC45C, 0xEBF1, 0xC8F9, 0xC45D,
- /* U+8170 */ 0xD1FC, 0xEBEC, 0xC45E, 0xC45F, 0xEBE9, 0xC460, 0xC461, 0xC462,
- /* U+8178 */ 0xC463, 0xB8B9, 0xCFD9, 0xC4E5, 0xEBEF, 0xEBF0, 0xCCDA, 0xCDC8,
- /* U+8180 */ 0xB0F2, 0xC464, 0xEBF6, 0xC465, 0xC466, 0xC467, 0xC468, 0xC469,
- /* U+8188 */ 0xEBF5, 0xC46A, 0xB2B2, 0xC46B, 0xC46C, 0xC46D, 0xC46E, 0xB8E0,
- /* U+8190 */ 0xC46F, 0xEBF7, 0xC470, 0xC471, 0xC472, 0xC473, 0xC474, 0xC475,
- /* U+8198 */ 0xB1EC, 0xC476, 0xC477, 0xCCC5, 0xC4A4, 0xCFA5, 0xC478, 0xC479,
- /* U+81A0 */ 0xC47A, 0xC47B, 0xC47C, 0xEBF9, 0xC47D, 0xC47E, 0xECA2, 0xC480,
- /* U+81A8 */ 0xC5F2, 0xC481, 0xEBFA, 0xC482, 0xC483, 0xC484, 0xC485, 0xC486,
- /* U+81B0 */ 0xC487, 0xC488, 0xC489, 0xC9C5, 0xC48A, 0xC48B, 0xC48C, 0xC48D,
- /* U+81B8 */ 0xC48E, 0xC48F, 0xE2DF, 0xEBFE, 0xC490, 0xC491, 0xC492, 0xC493,
- /* U+81C0 */ 0xCDCE, 0xECA1, 0xB1DB, 0xD3B7, 0xC494, 0xC495, 0xD2DC, 0xC496,
- /* U+81C8 */ 0xC497, 0xC498, 0xEBFD, 0xC499, 0xEBFB, 0xC49A, 0xC49B, 0xC49C,
- /* U+81D0 */ 0xC49D, 0xC49E, 0xC49F, 0xC4A0, 0xC540, 0xC541, 0xC542, 0xC543,
- /* U+81D8 */ 0xC544, 0xC545, 0xC546, 0xC547, 0xC548, 0xC549, 0xC54A, 0xC54B,
- /* U+81E0 */ 0xC54C, 0xC54D, 0xC54E, 0xB3BC, 0xC54F, 0xC550, 0xC551, 0xEAB0,
- /* U+81E8 */ 0xC552, 0xC553, 0xD7D4, 0xC554, 0xF4AB, 0xB3F4, 0xC555, 0xC556,
- /* U+81F0 */ 0xC557, 0xC558, 0xC559, 0xD6C1, 0xD6C2, 0xC55A, 0xC55B, 0xC55C,
- /* U+81F8 */ 0xC55D, 0xC55E, 0xC55F, 0xD5E9, 0xBECA, 0xC560, 0xF4A7, 0xC561,
- /* U+8200 */ 0xD2A8, 0xF4A8, 0xF4A9, 0xC562, 0xF4AA, 0xBECB, 0xD3DF, 0xC563,
- /* U+8208 */ 0xC564, 0xC565, 0xC566, 0xC567, 0xC9E0, 0xC9E1, 0xC568, 0xC569,
- /* U+8210 */ 0xF3C2, 0xC56A, 0xCAE6, 0xC56B, 0xCCF2, 0xC56C, 0xC56D, 0xC56E,
- /* U+8218 */ 0xC56F, 0xC570, 0xC571, 0xE2B6, 0xCBB4, 0xC572, 0xCEE8, 0xD6DB,
- /* U+8220 */ 0xC573, 0xF4AD, 0xF4AE, 0xF4AF, 0xC574, 0xC575, 0xC576, 0xC577,
- /* U+8228 */ 0xF4B2, 0xC578, 0xBABD, 0xF4B3, 0xB0E3, 0xF4B0, 0xC579, 0xF4B1,
- /* U+8230 */ 0xBDA2, 0xB2D5, 0xC57A, 0xF4B6, 0xF4B7, 0xB6E6, 0xB2B0, 0xCFCF,
- /* U+8238 */ 0xF4B4, 0xB4AC, 0xC57B, 0xF4B5, 0xC57C, 0xC57D, 0xF4B8, 0xC57E,
- /* U+8240 */ 0xC580, 0xC581, 0xC582, 0xC583, 0xF4B9, 0xC584, 0xC585, 0xCDA7,
- /* U+8248 */ 0xC586, 0xF4BA, 0xC587, 0xF4BB, 0xC588, 0xC589, 0xC58A, 0xF4BC,
- /* U+8250 */ 0xC58B, 0xC58C, 0xC58D, 0xC58E, 0xC58F, 0xC590, 0xC591, 0xC592,
- /* U+8258 */ 0xCBD2, 0xC593, 0xF4BD, 0xC594, 0xC595, 0xC596, 0xC597, 0xF4BE,
- /* U+8260 */ 0xC598, 0xC599, 0xC59A, 0xC59B, 0xC59C, 0xC59D, 0xC59E, 0xC59F,
- /* U+8268 */ 0xF4BF, 0xC5A0, 0xC640, 0xC641, 0xC642, 0xC643, 0xF4DE, 0xC1BC,
- /* U+8270 */ 0xBCE8, 0xC644, 0xC9AB, 0xD1DE, 0xE5F5, 0xC645, 0xC646, 0xC647,
- /* U+8278 */ 0xC648, 0xDCB3, 0xD2D5, 0xC649, 0xC64A, 0xDCB4, 0xB0AC, 0xDCB5,
- /* U+8280 */ 0xC64B, 0xC64C, 0xBDDA, 0xC64D, 0xDCB9, 0xC64E, 0xC64F, 0xC650,
- /* U+8288 */ 0xD8C2, 0xC651, 0xDCB7, 0xD3F3, 0xC652, 0xC9D6, 0xDCBA, 0xDCB6,
- /* U+8290 */ 0xC653, 0xDCBB, 0xC3A2, 0xC654, 0xC655, 0xC656, 0xC657, 0xDCBC,
- /* U+8298 */ 0xDCC5, 0xDCBD, 0xC658, 0xC659, 0xCEDF, 0xD6A5, 0xC65A, 0xDCCF,
- /* U+82A0 */ 0xC65B, 0xDCCD, 0xC65C, 0xC65D, 0xDCD2, 0xBDE6, 0xC2AB, 0xC65E,
- /* U+82A8 */ 0xDCB8, 0xDCCB, 0xDCCE, 0xDCBE, 0xB7D2, 0xB0C5, 0xDCC7, 0xD0BE,
- /* U+82B0 */ 0xDCC1, 0xBBA8, 0xC65F, 0xB7BC, 0xDCCC, 0xC660, 0xC661, 0xDCC6,
- /* U+82B8 */ 0xDCBF, 0xC7DB, 0xC662, 0xC663, 0xC664, 0xD1BF, 0xDCC0, 0xC665,
- /* U+82C0 */ 0xC666, 0xDCCA, 0xC667, 0xC668, 0xDCD0, 0xC669, 0xC66A, 0xCEAD,
- /* U+82C8 */ 0xDCC2, 0xC66B, 0xDCC3, 0xDCC8, 0xDCC9, 0xB2D4, 0xDCD1, 0xCBD5,
- /* U+82D0 */ 0xC66C, 0xD4B7, 0xDCDB, 0xDCDF, 0xCCA6, 0xDCE6, 0xC66D, 0xC3E7,
- /* U+82D8 */ 0xDCDC, 0xC66E, 0xC66F, 0xBFC1, 0xDCD9, 0xC670, 0xB0FA, 0xB9B6,
- /* U+82E0 */ 0xDCE5, 0xDCD3, 0xC671, 0xDCC4, 0xDCD6, 0xC8F4, 0xBFE0, 0xC672,
- /* U+82E8 */ 0xC673, 0xC674, 0xC675, 0xC9BB, 0xC676, 0xC677, 0xC678, 0xB1BD,
- /* U+82F0 */ 0xC679, 0xD3A2, 0xC67A, 0xC67B, 0xDCDA, 0xC67C, 0xC67D, 0xDCD5,
- /* U+82F8 */ 0xC67E, 0xC6BB, 0xC680, 0xDCDE, 0xC681, 0xC682, 0xC683, 0xC684,
- /* U+8300 */ 0xC685, 0xD7C2, 0xC3AF, 0xB7B6, 0xC7D1, 0xC3A9, 0xDCE2, 0xDCD8,
- /* U+8308 */ 0xDCEB, 0xDCD4, 0xC686, 0xC687, 0xDCDD, 0xC688, 0xBEA5, 0xDCD7,
- /* U+8310 */ 0xC689, 0xDCE0, 0xC68A, 0xC68B, 0xDCE3, 0xDCE4, 0xC68C, 0xDCF8,
- /* U+8318 */ 0xC68D, 0xC68E, 0xDCE1, 0xDDA2, 0xDCE7, 0xC68F, 0xC690, 0xC691,
- /* U+8320 */ 0xC692, 0xC693, 0xC694, 0xC695, 0xC696, 0xC697, 0xC698, 0xBCEB,
- /* U+8328 */ 0xB4C4, 0xC699, 0xC69A, 0xC3A3, 0xB2E7, 0xDCFA, 0xC69B, 0xDCF2,
- /* U+8330 */ 0xC69C, 0xDCEF, 0xC69D, 0xDCFC, 0xDCEE, 0xD2F0, 0xB2E8, 0xC69E,
- /* U+8338 */ 0xC8D7, 0xC8E3, 0xDCFB, 0xC69F, 0xDCED, 0xC6A0, 0xC740, 0xC741,
- /* U+8340 */ 0xDCF7, 0xC742, 0xC743, 0xDCF5, 0xC744, 0xC745, 0xBEA3, 0xDCF4,
- /* U+8348 */ 0xC746, 0xB2DD, 0xC747, 0xC748, 0xC749, 0xC74A, 0xC74B, 0xDCF3,
- /* U+8350 */ 0xBCF6, 0xDCE8, 0xBBC4, 0xC74C, 0xC0F3, 0xC74D, 0xC74E, 0xC74F,
- /* U+8358 */ 0xC750, 0xC751, 0xBCD4, 0xDCE9, 0xDCEA, 0xC752, 0xDCF1, 0xDCF6,
- /* U+8360 */ 0xDCF9, 0xB5B4, 0xC753, 0xC8D9, 0xBBE7, 0xDCFE, 0xDCFD, 0xD3AB,
- /* U+8368 */ 0xDDA1, 0xDDA3, 0xDDA5, 0xD2F1, 0xDDA4, 0xDDA6, 0xDDA7, 0xD2A9,
- /* U+8370 */ 0xC754, 0xC755, 0xC756, 0xC757, 0xC758, 0xC759, 0xC75A, 0xBAC9,
- /* U+8378 */ 0xDDA9, 0xC75B, 0xC75C, 0xDDB6, 0xDDB1, 0xDDB4, 0xC75D, 0xC75E,
- /* U+8380 */ 0xC75F, 0xC760, 0xC761, 0xC762, 0xC763, 0xDDB0, 0xC6CE, 0xC764,
- /* U+8388 */ 0xC765, 0xC0F2, 0xC766, 0xC767, 0xC768, 0xC769, 0xC9AF, 0xC76A,
- /* U+8390 */ 0xC76B, 0xC76C, 0xDCEC, 0xDDAE, 0xC76D, 0xC76E, 0xC76F, 0xC770,
- /* U+8398 */ 0xDDB7, 0xC771, 0xC772, 0xDCF0, 0xDDAF, 0xC773, 0xDDB8, 0xC774,
- /* U+83A0 */ 0xDDAC, 0xC775, 0xC776, 0xC777, 0xC778, 0xC779, 0xC77A, 0xC77B,
- /* U+83A8 */ 0xDDB9, 0xDDB3, 0xDDAD, 0xC4AA, 0xC77C, 0xC77D, 0xC77E, 0xC780,
- /* U+83B0 */ 0xDDA8, 0xC0B3, 0xC1AB, 0xDDAA, 0xDDAB, 0xC781, 0xDDB2, 0xBBF1,
- /* U+83B8 */ 0xDDB5, 0xD3A8, 0xDDBA, 0xC782, 0xDDBB, 0xC3A7, 0xC783, 0xC784,
- /* U+83C0 */ 0xDDD2, 0xDDBC, 0xC785, 0xC786, 0xC787, 0xDDD1, 0xC788, 0xB9BD,
- /* U+83C8 */ 0xC789, 0xC78A, 0xBED5, 0xC78B, 0xBEFA, 0xC78C, 0xC78D, 0xBACA,
- /* U+83D0 */ 0xC78E, 0xC78F, 0xC790, 0xC791, 0xDDCA, 0xC792, 0xDDC5, 0xC793,
- /* U+83D8 */ 0xDDBF, 0xC794, 0xC795, 0xC796, 0xB2CB, 0xDDC3, 0xC797, 0xDDCB,
- /* U+83E0 */ 0xB2A4, 0xDDD5, 0xC798, 0xC799, 0xC79A, 0xDDBE, 0xC79B, 0xC79C,
- /* U+83E8 */ 0xC79D, 0xC6D0, 0xDDD0, 0xC79E, 0xC79F, 0xC7A0, 0xC840, 0xC841,
- /* U+83F0 */ 0xDDD4, 0xC1E2, 0xB7C6, 0xC842, 0xC843, 0xC844, 0xC845, 0xC846,
- /* U+83F8 */ 0xDDCE, 0xDDCF, 0xC847, 0xC848, 0xC849, 0xDDC4, 0xC84A, 0xC84B,
- /* U+8400 */ 0xC84C, 0xDDBD, 0xC84D, 0xDDCD, 0xCCD1, 0xC84E, 0xDDC9, 0xC84F,
- /* U+8408 */ 0xC850, 0xC851, 0xC852, 0xDDC2, 0xC3C8, 0xC6BC, 0xCEAE, 0xDDCC,
- /* U+8410 */ 0xC853, 0xDDC8, 0xC854, 0xC855, 0xC856, 0xC857, 0xC858, 0xC859,
- /* U+8418 */ 0xDDC1, 0xC85A, 0xC85B, 0xC85C, 0xDDC6, 0xC2DC, 0xC85D, 0xC85E,
- /* U+8420 */ 0xC85F, 0xC860, 0xC861, 0xC862, 0xD3A9, 0xD3AA, 0xDDD3, 0xCFF4,
- /* U+8428 */ 0xC8F8, 0xC863, 0xC864, 0xC865, 0xC866, 0xC867, 0xC868, 0xC869,
- /* U+8430 */ 0xC86A, 0xDDE6, 0xC86B, 0xC86C, 0xC86D, 0xC86E, 0xC86F, 0xC870,
- /* U+8438 */ 0xDDC7, 0xC871, 0xC872, 0xC873, 0xDDE0, 0xC2E4, 0xC874, 0xC875,
- /* U+8440 */ 0xC876, 0xC877, 0xC878, 0xC879, 0xC87A, 0xC87B, 0xDDE1, 0xC87C,
- /* U+8448 */ 0xC87D, 0xC87E, 0xC880, 0xC881, 0xC882, 0xC883, 0xC884, 0xC885,
- /* U+8450 */ 0xC886, 0xDDD7, 0xC887, 0xC888, 0xC889, 0xC88A, 0xC88B, 0xD6F8,
- /* U+8458 */ 0xC88C, 0xDDD9, 0xDDD8, 0xB8F0, 0xDDD6, 0xC88D, 0xC88E, 0xC88F,
- /* U+8460 */ 0xC890, 0xC6CF, 0xC891, 0xB6AD, 0xC892, 0xC893, 0xC894, 0xC895,
- /* U+8468 */ 0xC896, 0xDDE2, 0xC897, 0xBAF9, 0xD4E1, 0xDDE7, 0xC898, 0xC899,
- /* U+8470 */ 0xC89A, 0xB4D0, 0xC89B, 0xDDDA, 0xC89C, 0xBFFB, 0xDDE3, 0xC89D,
- /* U+8478 */ 0xDDDF, 0xC89E, 0xDDDD, 0xC89F, 0xC8A0, 0xC940, 0xC941, 0xC942,
- /* U+8480 */ 0xC943, 0xC944, 0xB5D9, 0xC945, 0xC946, 0xC947, 0xC948, 0xDDDB,
- /* U+8488 */ 0xDDDC, 0xDDDE, 0xC949, 0xBDAF, 0xDDE4, 0xC94A, 0xDDE5, 0xC94B,
- /* U+8490 */ 0xC94C, 0xC94D, 0xC94E, 0xC94F, 0xC950, 0xC951, 0xC952, 0xDDF5,
- /* U+8498 */ 0xC953, 0xC3C9, 0xC954, 0xC955, 0xCBE2, 0xC956, 0xC957, 0xC958,
- /* U+84A0 */ 0xC959, 0xDDF2, 0xC95A, 0xC95B, 0xC95C, 0xC95D, 0xC95E, 0xC95F,
- /* U+84A8 */ 0xC960, 0xC961, 0xC962, 0xC963, 0xC964, 0xC965, 0xC966, 0xD8E1,
- /* U+84B0 */ 0xC967, 0xC968, 0xC6D1, 0xC969, 0xDDF4, 0xC96A, 0xC96B, 0xC96C,
- /* U+84B8 */ 0xD5F4, 0xDDF3, 0xDDF0, 0xC96D, 0xC96E, 0xDDEC, 0xC96F, 0xDDEF,
- /* U+84C0 */ 0xC970, 0xDDE8, 0xC971, 0xC972, 0xD0EE, 0xC973, 0xC974, 0xC975,
- /* U+84C8 */ 0xC976, 0xC8D8, 0xDDEE, 0xC977, 0xC978, 0xDDE9, 0xC979, 0xC97A,
- /* U+84D0 */ 0xDDEA, 0xCBF2, 0xC97B, 0xDDED, 0xC97C, 0xC97D, 0xB1CD, 0xC97E,
- /* U+84D8 */ 0xC980, 0xC981, 0xC982, 0xC983, 0xC984, 0xC0B6, 0xC985, 0xBCBB,
- /* U+84E0 */ 0xDDF1, 0xC986, 0xC987, 0xDDF7, 0xC988, 0xDDF6, 0xDDEB, 0xC989,
- /* U+84E8 */ 0xC98A, 0xC98B, 0xC98C, 0xC98D, 0xC5EE, 0xC98E, 0xC98F, 0xC990,
- /* U+84F0 */ 0xDDFB, 0xC991, 0xC992, 0xC993, 0xC994, 0xC995, 0xC996, 0xC997,
- /* U+84F8 */ 0xC998, 0xC999, 0xC99A, 0xC99B, 0xDEA4, 0xC99C, 0xC99D, 0xDEA3,
- /* U+8500 */ 0xC99E, 0xC99F, 0xC9A0, 0xCA40, 0xCA41, 0xCA42, 0xCA43, 0xCA44,
- /* U+8508 */ 0xCA45, 0xCA46, 0xCA47, 0xCA48, 0xDDF8, 0xCA49, 0xCA4A, 0xCA4B,
- /* U+8510 */ 0xCA4C, 0xC3EF, 0xCA4D, 0xC2FB, 0xCA4E, 0xCA4F, 0xCA50, 0xD5E1,
- /* U+8518 */ 0xCA51, 0xCA52, 0xCEB5, 0xCA53, 0xCA54, 0xCA55, 0xCA56, 0xDDFD,
- /* U+8520 */ 0xCA57, 0xB2CC, 0xCA58, 0xCA59, 0xCA5A, 0xCA5B, 0xCA5C, 0xCA5D,
- /* U+8528 */ 0xCA5E, 0xCA5F, 0xCA60, 0xC4E8, 0xCADF, 0xCA61, 0xCA62, 0xCA63,
- /* U+8530 */ 0xCA64, 0xCA65, 0xCA66, 0xCA67, 0xCA68, 0xCA69, 0xCA6A, 0xC7BE,
- /* U+8538 */ 0xDDFA, 0xDDFC, 0xDDFE, 0xDEA2, 0xB0AA, 0xB1CE, 0xCA6B, 0xCA6C,
- /* U+8540 */ 0xCA6D, 0xCA6E, 0xCA6F, 0xDEAC, 0xCA70, 0xCA71, 0xCA72, 0xCA73,
- /* U+8548 */ 0xDEA6, 0xBDB6, 0xC8EF, 0xCA74, 0xCA75, 0xCA76, 0xCA77, 0xCA78,
- /* U+8550 */ 0xCA79, 0xCA7A, 0xCA7B, 0xCA7C, 0xCA7D, 0xCA7E, 0xDEA1, 0xCA80,
- /* U+8558 */ 0xCA81, 0xDEA5, 0xCA82, 0xCA83, 0xCA84, 0xCA85, 0xDEA9, 0xCA86,
- /* U+8560 */ 0xCA87, 0xCA88, 0xCA89, 0xCA8A, 0xDEA8, 0xCA8B, 0xCA8C, 0xCA8D,
- /* U+8568 */ 0xDEA7, 0xCA8E, 0xCA8F, 0xCA90, 0xCA91, 0xCA92, 0xCA93, 0xCA94,
- /* U+8570 */ 0xCA95, 0xCA96, 0xDEAD, 0xCA97, 0xD4CC, 0xCA98, 0xCA99, 0xCA9A,
- /* U+8578 */ 0xCA9B, 0xDEB3, 0xDEAA, 0xDEAE, 0xCA9C, 0xCA9D, 0xC0D9, 0xCA9E,
- /* U+8580 */ 0xCA9F, 0xCAA0, 0xCB40, 0xCB41, 0xB1A1, 0xDEB6, 0xCB42, 0xDEB1,
- /* U+8588 */ 0xCB43, 0xCB44, 0xCB45, 0xCB46, 0xCB47, 0xCB48, 0xCB49, 0xDEB2,
- /* U+8590 */ 0xCB4A, 0xCB4B, 0xCB4C, 0xCB4D, 0xCB4E, 0xCB4F, 0xCB50, 0xCB51,
- /* U+8598 */ 0xCB52, 0xCB53, 0xCB54, 0xD1A6, 0xDEB5, 0xCB55, 0xCB56, 0xCB57,
- /* U+85A0 */ 0xCB58, 0xCB59, 0xCB5A, 0xCB5B, 0xDEAF, 0xCB5C, 0xCB5D, 0xCB5E,
- /* U+85A8 */ 0xDEB0, 0xCB5F, 0xD0BD, 0xCB60, 0xCB61, 0xCB62, 0xDEB4, 0xCAED,
- /* U+85B0 */ 0xDEB9, 0xCB63, 0xCB64, 0xCB65, 0xCB66, 0xCB67, 0xCB68, 0xDEB8,
- /* U+85B8 */ 0xCB69, 0xDEB7, 0xCB6A, 0xCB6B, 0xCB6C, 0xCB6D, 0xCB6E, 0xCB6F,
- /* U+85C0 */ 0xCB70, 0xDEBB, 0xCB71, 0xCB72, 0xCB73, 0xCB74, 0xCB75, 0xCB76,
- /* U+85C8 */ 0xCB77, 0xBDE5, 0xCB78, 0xCB79, 0xCB7A, 0xCB7B, 0xCB7C, 0xB2D8,
- /* U+85D0 */ 0xC3EA, 0xCB7D, 0xCB7E, 0xDEBA, 0xCB80, 0xC5BA, 0xCB81, 0xCB82,
- /* U+85D8 */ 0xCB83, 0xCB84, 0xCB85, 0xCB86, 0xDEBC, 0xCB87, 0xCB88, 0xCB89,
- /* U+85E0 */ 0xCB8A, 0xCB8B, 0xCB8C, 0xCB8D, 0xCCD9, 0xCB8E, 0xCB8F, 0xCB90,
- /* U+85E8 */ 0xCB91, 0xB7AA, 0xCB92, 0xCB93, 0xCB94, 0xCB95, 0xCB96, 0xCB97,
- /* U+85F0 */ 0xCB98, 0xCB99, 0xCB9A, 0xCB9B, 0xCB9C, 0xCB9D, 0xCB9E, 0xCB9F,
- /* U+85F8 */ 0xCBA0, 0xCC40, 0xCC41, 0xD4E5, 0xCC42, 0xCC43, 0xCC44, 0xDEBD,
- /* U+8600 */ 0xCC45, 0xCC46, 0xCC47, 0xCC48, 0xCC49, 0xDEBF, 0xCC4A, 0xCC4B,
- /* U+8608 */ 0xCC4C, 0xCC4D, 0xCC4E, 0xCC4F, 0xCC50, 0xCC51, 0xCC52, 0xCC53,
- /* U+8610 */ 0xCC54, 0xC4A2, 0xCC55, 0xCC56, 0xCC57, 0xCC58, 0xDEC1, 0xCC59,
- /* U+8618 */ 0xCC5A, 0xCC5B, 0xCC5C, 0xCC5D, 0xCC5E, 0xCC5F, 0xCC60, 0xCC61,
- /* U+8620 */ 0xCC62, 0xCC63, 0xCC64, 0xCC65, 0xCC66, 0xCC67, 0xCC68, 0xDEBE,
- /* U+8628 */ 0xCC69, 0xDEC0, 0xCC6A, 0xCC6B, 0xCC6C, 0xCC6D, 0xCC6E, 0xCC6F,
- /* U+8630 */ 0xCC70, 0xCC71, 0xCC72, 0xCC73, 0xCC74, 0xCC75, 0xCC76, 0xCC77,
- /* U+8638 */ 0xD5BA, 0xCC78, 0xCC79, 0xCC7A, 0xDEC2, 0xCC7B, 0xCC7C, 0xCC7D,
- /* U+8640 */ 0xCC7E, 0xCC80, 0xCC81, 0xCC82, 0xCC83, 0xCC84, 0xCC85, 0xCC86,
- /* U+8648 */ 0xCC87, 0xCC88, 0xCC89, 0xCC8A, 0xCC8B, 0xF2AE, 0xBBA2, 0xC2B2,
- /* U+8650 */ 0xC5B0, 0xC2C7, 0xCC8C, 0xCC8D, 0xF2AF, 0xCC8E, 0xCC8F, 0xCC90,
- /* U+8658 */ 0xCC91, 0xCC92, 0xD0E9, 0xCC93, 0xCC94, 0xCC95, 0xD3DD, 0xCC96,
- /* U+8660 */ 0xCC97, 0xCC98, 0xEBBD, 0xCC99, 0xCC9A, 0xCC9B, 0xCC9C, 0xCC9D,
- /* U+8668 */ 0xCC9E, 0xCC9F, 0xCCA0, 0xB3E6, 0xF2B0, 0xCD40, 0xF2B1, 0xCD41,
- /* U+8670 */ 0xCD42, 0xCAAD, 0xCD43, 0xCD44, 0xCD45, 0xCD46, 0xCD47, 0xCD48,
- /* U+8678 */ 0xCD49, 0xBAE7, 0xF2B3, 0xF2B5, 0xF2B4, 0xCBE4, 0xCFBA, 0xF2B2,
- /* U+8680 */ 0xCAB4, 0xD2CF, 0xC2EC, 0xCD4A, 0xCD4B, 0xCD4C, 0xCD4D, 0xCD4E,
- /* U+8688 */ 0xCD4F, 0xCD50, 0xCEC3, 0xF2B8, 0xB0F6, 0xF2B7, 0xCD51, 0xCD52,
- /* U+8690 */ 0xCD53, 0xCD54, 0xCD55, 0xF2BE, 0xCD56, 0xB2CF, 0xCD57, 0xCD58,
- /* U+8698 */ 0xCD59, 0xCD5A, 0xCD5B, 0xCD5C, 0xD1C1, 0xF2BA, 0xCD5D, 0xCD5E,
- /* U+86A0 */ 0xCD5F, 0xCD60, 0xCD61, 0xF2BC, 0xD4E9, 0xCD62, 0xCD63, 0xF2BB,
- /* U+86A8 */ 0xF2B6, 0xF2BF, 0xF2BD, 0xCD64, 0xF2B9, 0xCD65, 0xCD66, 0xF2C7,
- /* U+86B0 */ 0xF2C4, 0xF2C6, 0xCD67, 0xCD68, 0xF2CA, 0xF2C2, 0xF2C0, 0xCD69,
- /* U+86B8 */ 0xCD6A, 0xCD6B, 0xF2C5, 0xCD6C, 0xCD6D, 0xCD6E, 0xCD6F, 0xCD70,
- /* U+86C0 */ 0xD6FB, 0xCD71, 0xCD72, 0xCD73, 0xF2C1, 0xCD74, 0xC7F9, 0xC9DF,
- /* U+86C8 */ 0xCD75, 0xF2C8, 0xB9C6, 0xB5B0, 0xCD76, 0xCD77, 0xF2C3, 0xF2C9,
- /* U+86D0 */ 0xF2D0, 0xF2D6, 0xCD78, 0xCD79, 0xBBD7, 0xCD7A, 0xCD7B, 0xCD7C,
- /* U+86D8 */ 0xF2D5, 0xCDDC, 0xCD7D, 0xD6EB, 0xCD7E, 0xCD80, 0xF2D2, 0xF2D4,
- /* U+86E0 */ 0xCD81, 0xCD82, 0xCD83, 0xCD84, 0xB8F2, 0xCD85, 0xCD86, 0xCD87,
- /* U+86E8 */ 0xCD88, 0xF2CB, 0xCD89, 0xCD8A, 0xCD8B, 0xF2CE, 0xC2F9, 0xCD8C,
- /* U+86F0 */ 0xD5DD, 0xF2CC, 0xF2CD, 0xF2CF, 0xF2D3, 0xCD8D, 0xCD8E, 0xCD8F,
- /* U+86F8 */ 0xF2D9, 0xD3BC, 0xCD90, 0xCD91, 0xCD92, 0xCD93, 0xB6EA, 0xCD94,
- /* U+8700 */ 0xCAF1, 0xCD95, 0xB7E4, 0xF2D7, 0xCD96, 0xCD97, 0xCD98, 0xF2D8,
- /* U+8708 */ 0xF2DA, 0xF2DD, 0xF2DB, 0xCD99, 0xCD9A, 0xF2DC, 0xCD9B, 0xCD9C,
- /* U+8710 */ 0xCD9D, 0xCD9E, 0xD1D1, 0xF2D1, 0xCD9F, 0xCDC9, 0xCDA0, 0xCECF,
- /* U+8718 */ 0xD6A9, 0xCE40, 0xF2E3, 0xCE41, 0xC3DB, 0xCE42, 0xF2E0, 0xCE43,
- /* U+8720 */ 0xCE44, 0xC0AF, 0xF2EC, 0xF2DE, 0xCE45, 0xF2E1, 0xCE46, 0xCE47,
- /* U+8728 */ 0xCE48, 0xF2E8, 0xCE49, 0xCE4A, 0xCE4B, 0xCE4C, 0xF2E2, 0xCE4D,
- /* U+8730 */ 0xCE4E, 0xF2E7, 0xCE4F, 0xCE50, 0xF2E6, 0xCE51, 0xCE52, 0xF2E9,
- /* U+8738 */ 0xCE53, 0xCE54, 0xCE55, 0xF2DF, 0xCE56, 0xCE57, 0xF2E4, 0xF2EA,
- /* U+8740 */ 0xCE58, 0xCE59, 0xCE5A, 0xCE5B, 0xCE5C, 0xCE5D, 0xCE5E, 0xD3AC,
- /* U+8748 */ 0xF2E5, 0xB2F5, 0xCE5F, 0xCE60, 0xF2F2, 0xCE61, 0xD0AB, 0xCE62,
- /* U+8750 */ 0xCE63, 0xCE64, 0xCE65, 0xF2F5, 0xCE66, 0xCE67, 0xCE68, 0xBBC8,
- /* U+8758 */ 0xCE69, 0xF2F9, 0xCE6A, 0xCE6B, 0xCE6C, 0xCE6D, 0xCE6E, 0xCE6F,
- /* U+8760 */ 0xF2F0, 0xCE70, 0xCE71, 0xF2F6, 0xF2F8, 0xF2FA, 0xCE72, 0xCE73,
- /* U+8768 */ 0xCE74, 0xCE75, 0xCE76, 0xCE77, 0xCE78, 0xCE79, 0xF2F3, 0xCE7A,
- /* U+8770 */ 0xF2F1, 0xCE7B, 0xCE7C, 0xCE7D, 0xBAFB, 0xCE7E, 0xB5FB, 0xCE80,
- /* U+8778 */ 0xCE81, 0xCE82, 0xCE83, 0xF2EF, 0xF2F7, 0xF2ED, 0xF2EE, 0xCE84,
- /* U+8780 */ 0xCE85, 0xCE86, 0xF2EB, 0xF3A6, 0xCE87, 0xF3A3, 0xCE88, 0xCE89,
- /* U+8788 */ 0xF3A2, 0xCE8A, 0xCE8B, 0xF2F4, 0xCE8C, 0xC8DA, 0xCE8D, 0xCE8E,
- /* U+8790 */ 0xCE8F, 0xCE90, 0xCE91, 0xF2FB, 0xCE92, 0xCE93, 0xCE94, 0xF3A5,
- /* U+8798 */ 0xCE95, 0xCE96, 0xCE97, 0xCE98, 0xCE99, 0xCE9A, 0xCE9B, 0xC3F8,
- /* U+87A0 */ 0xCE9C, 0xCE9D, 0xCE9E, 0xCE9F, 0xCEA0, 0xCF40, 0xCF41, 0xCF42,
- /* U+87A8 */ 0xF2FD, 0xCF43, 0xCF44, 0xF3A7, 0xF3A9, 0xF3A4, 0xCF45, 0xF2FC,
- /* U+87B0 */ 0xCF46, 0xCF47, 0xCF48, 0xF3AB, 0xCF49, 0xF3AA, 0xCF4A, 0xCF4B,
- /* U+87B8 */ 0xCF4C, 0xCF4D, 0xC2DD, 0xCF4E, 0xCF4F, 0xF3AE, 0xCF50, 0xCF51,
- /* U+87C0 */ 0xF3B0, 0xCF52, 0xCF53, 0xCF54, 0xCF55, 0xCF56, 0xF3A1, 0xCF57,
- /* U+87C8 */ 0xCF58, 0xCF59, 0xF3B1, 0xF3AC, 0xCF5A, 0xCF5B, 0xCF5C, 0xCF5D,
- /* U+87D0 */ 0xCF5E, 0xF3AF, 0xF2FE, 0xF3AD, 0xCF5F, 0xCF60, 0xCF61, 0xCF62,
- /* U+87D8 */ 0xCF63, 0xCF64, 0xCF65, 0xF3B2, 0xCF66, 0xCF67, 0xCF68, 0xCF69,
- /* U+87E0 */ 0xF3B4, 0xCF6A, 0xCF6B, 0xCF6C, 0xCF6D, 0xF3A8, 0xCF6E, 0xCF6F,
- /* U+87E8 */ 0xCF70, 0xCF71, 0xF3B3, 0xCF72, 0xCF73, 0xCF74, 0xF3B5, 0xCF75,
- /* U+87F0 */ 0xCF76, 0xCF77, 0xCF78, 0xCF79, 0xCF7A, 0xCF7B, 0xCF7C, 0xCF7D,
- /* U+87F8 */ 0xCF7E, 0xD0B7, 0xCF80, 0xCF81, 0xCF82, 0xCF83, 0xF3B8, 0xCF84,
- /* U+8800 */ 0xCF85, 0xCF86, 0xCF87, 0xD9F9, 0xCF88, 0xCF89, 0xCF8A, 0xCF8B,
- /* U+8808 */ 0xCF8C, 0xCF8D, 0xF3B9, 0xCF8E, 0xCF8F, 0xCF90, 0xCF91, 0xCF92,
- /* U+8810 */ 0xCF93, 0xCF94, 0xCF95, 0xF3B7, 0xCF96, 0xC8E4, 0xF3B6, 0xCF97,
- /* U+8818 */ 0xCF98, 0xCF99, 0xCF9A, 0xF3BA, 0xCF9B, 0xCF9C, 0xCF9D, 0xCF9E,
- /* U+8820 */ 0xCF9F, 0xF3BB, 0xB4C0, 0xCFA0, 0xD040, 0xD041, 0xD042, 0xD043,
- /* U+8828 */ 0xD044, 0xD045, 0xD046, 0xD047, 0xD048, 0xD049, 0xD04A, 0xD04B,
- /* U+8830 */ 0xD04C, 0xD04D, 0xEEC3, 0xD04E, 0xD04F, 0xD050, 0xD051, 0xD052,
- /* U+8838 */ 0xD053, 0xF3BC, 0xD054, 0xD055, 0xF3BD, 0xD056, 0xD057, 0xD058,
- /* U+8840 */ 0xD1AA, 0xD059, 0xD05A, 0xD05B, 0xF4AC, 0xD0C6, 0xD05C, 0xD05D,
- /* U+8848 */ 0xD05E, 0xD05F, 0xD060, 0xD061, 0xD0D0, 0xD1DC, 0xD062, 0xD063,
- /* U+8850 */ 0xD064, 0xD065, 0xD066, 0xD067, 0xCFCE, 0xD068, 0xD069, 0xBDD6,
- /* U+8858 */ 0xD06A, 0xD1C3, 0xD06B, 0xD06C, 0xD06D, 0xD06E, 0xD06F, 0xD070,
- /* U+8860 */ 0xD071, 0xBAE2, 0xE1E9, 0xD2C2, 0xF1C2, 0xB2B9, 0xD072, 0xD073,
- /* U+8868 */ 0xB1ED, 0xF1C3, 0xD074, 0xC9C0, 0xB3C4, 0xD075, 0xD9F2, 0xD076,
- /* U+8870 */ 0xCBA5, 0xD077, 0xF1C4, 0xD078, 0xD079, 0xD07A, 0xD07B, 0xD6D4,
- /* U+8878 */ 0xD07C, 0xD07D, 0xD07E, 0xD080, 0xD081, 0xF1C5, 0xF4C0, 0xF1C6,
- /* U+8880 */ 0xD082, 0xD4AC, 0xF1C7, 0xD083, 0xB0C0, 0xF4C1, 0xD084, 0xD085,
- /* U+8888 */ 0xF4C2, 0xD086, 0xD087, 0xB4FC, 0xD088, 0xC5DB, 0xD089, 0xD08A,
- /* U+8890 */ 0xD08B, 0xD08C, 0xCCBB, 0xD08D, 0xD08E, 0xD08F, 0xD0E4, 0xD090,
- /* U+8898 */ 0xD091, 0xD092, 0xD093, 0xD094, 0xCDE0, 0xD095, 0xD096, 0xD097,
- /* U+88A0 */ 0xD098, 0xD099, 0xF1C8, 0xD09A, 0xD9F3, 0xD09B, 0xD09C, 0xD09D,
- /* U+88A8 */ 0xD09E, 0xD09F, 0xD0A0, 0xB1BB, 0xD140, 0xCFAE, 0xD141, 0xD142,
- /* U+88B0 */ 0xD143, 0xB8A4, 0xD144, 0xD145, 0xD146, 0xD147, 0xD148, 0xF1CA,
- /* U+88B8 */ 0xD149, 0xD14A, 0xD14B, 0xD14C, 0xF1CB, 0xD14D, 0xD14E, 0xD14F,
- /* U+88C0 */ 0xD150, 0xB2C3, 0xC1D1, 0xD151, 0xD152, 0xD7B0, 0xF1C9, 0xD153,
- /* U+88C8 */ 0xD154, 0xF1CC, 0xD155, 0xD156, 0xD157, 0xD158, 0xF1CE, 0xD159,
- /* U+88D0 */ 0xD15A, 0xD15B, 0xD9F6, 0xD15C, 0xD2E1, 0xD4A3, 0xD15D, 0xD15E,
- /* U+88D8 */ 0xF4C3, 0xC8B9, 0xD15F, 0xD160, 0xD161, 0xD162, 0xD163, 0xF4C4,
- /* U+88E0 */ 0xD164, 0xD165, 0xF1CD, 0xF1CF, 0xBFE3, 0xF1D0, 0xD166, 0xD167,
- /* U+88E8 */ 0xF1D4, 0xD168, 0xD169, 0xD16A, 0xD16B, 0xD16C, 0xD16D, 0xD16E,
- /* U+88F0 */ 0xF1D6, 0xF1D1, 0xD16F, 0xC9D1, 0xC5E1, 0xD170, 0xD171, 0xD172,
- /* U+88F8 */ 0xC2E3, 0xB9FC, 0xD173, 0xD174, 0xF1D3, 0xD175, 0xF1D5, 0xD176,
- /* U+8900 */ 0xD177, 0xD178, 0xB9D3, 0xD179, 0xD17A, 0xD17B, 0xD17C, 0xD17D,
- /* U+8908 */ 0xD17E, 0xD180, 0xF1DB, 0xD181, 0xD182, 0xD183, 0xD184, 0xD185,
- /* U+8910 */ 0xBAD6, 0xD186, 0xB0FD, 0xF1D9, 0xD187, 0xD188, 0xD189, 0xD18A,
- /* U+8918 */ 0xD18B, 0xF1D8, 0xF1D2, 0xF1DA, 0xD18C, 0xD18D, 0xD18E, 0xD18F,
- /* U+8920 */ 0xD190, 0xF1D7, 0xD191, 0xD192, 0xD193, 0xC8EC, 0xD194, 0xD195,
- /* U+8928 */ 0xD196, 0xD197, 0xCDCA, 0xF1DD, 0xD198, 0xD199, 0xD19A, 0xD19B,
- /* U+8930 */ 0xE5BD, 0xD19C, 0xD19D, 0xD19E, 0xF1DC, 0xD19F, 0xF1DE, 0xD1A0,
- /* U+8938 */ 0xD240, 0xD241, 0xD242, 0xD243, 0xD244, 0xD245, 0xD246, 0xD247,
- /* U+8940 */ 0xD248, 0xF1DF, 0xD249, 0xD24A, 0xCFE5, 0xD24B, 0xD24C, 0xD24D,
- /* U+8948 */ 0xD24E, 0xD24F, 0xD250, 0xD251, 0xD252, 0xD253, 0xD254, 0xD255,
- /* U+8950 */ 0xD256, 0xD257, 0xD258, 0xD259, 0xD25A, 0xD25B, 0xD25C, 0xD25D,
- /* U+8958 */ 0xD25E, 0xD25F, 0xD260, 0xD261, 0xD262, 0xD263, 0xF4C5, 0xBDF3,
- /* U+8960 */ 0xD264, 0xD265, 0xD266, 0xD267, 0xD268, 0xD269, 0xF1E0, 0xD26A,
- /* U+8968 */ 0xD26B, 0xD26C, 0xD26D, 0xD26E, 0xD26F, 0xD270, 0xD271, 0xD272,
- /* U+8970 */ 0xD273, 0xD274, 0xD275, 0xD276, 0xD277, 0xD278, 0xD279, 0xD27A,
- /* U+8978 */ 0xD27B, 0xD27C, 0xD27D, 0xF1E1, 0xD27E, 0xD280, 0xD281, 0xCEF7,
- /* U+8980 */ 0xD282, 0xD2AA, 0xD283, 0xF1FB, 0xD284, 0xD285, 0xB8B2, 0xD286,
- /* U+8988 */ 0xD287, 0xD288, 0xD289, 0xD28A, 0xD28B, 0xD28C, 0xD28D, 0xD28E,
- /* U+8990 */ 0xD28F, 0xD290, 0xD291, 0xD292, 0xD293, 0xD294, 0xD295, 0xD296,
- /* U+8998 */ 0xD297, 0xD298, 0xD299, 0xD29A, 0xD29B, 0xD29C, 0xD29D, 0xD29E,
- /* U+89A0 */ 0xD29F, 0xD2A0, 0xD340, 0xD341, 0xD342, 0xD343, 0xD344, 0xD345,
- /* U+89A8 */ 0xD346, 0xD347, 0xD348, 0xD349, 0xD34A, 0xD34B, 0xD34C, 0xD34D,
- /* U+89B0 */ 0xD34E, 0xD34F, 0xD350, 0xD351, 0xD352, 0xD353, 0xD354, 0xD355,
- /* U+89B8 */ 0xD356, 0xD357, 0xD358, 0xD359, 0xD35A, 0xD35B, 0xD35C, 0xD35D,
- /* U+89C0 */ 0xD35E, 0xBCFB, 0xB9DB, 0xD35F, 0xB9E6, 0xC3D9, 0xCAD3, 0xEAE8,
- /* U+89C8 */ 0xC0C0, 0xBEF5, 0xEAE9, 0xEAEA, 0xEAEB, 0xD360, 0xEAEC, 0xEAED,
- /* U+89D0 */ 0xEAEE, 0xEAEF, 0xBDC7, 0xD361, 0xD362, 0xD363, 0xF5FB, 0xD364,
- /* U+89D8 */ 0xD365, 0xD366, 0xF5FD, 0xD367, 0xF5FE, 0xD368, 0xF5FC, 0xD369,
- /* U+89E0 */ 0xD36A, 0xD36B, 0xD36C, 0xBDE2, 0xD36D, 0xF6A1, 0xB4A5, 0xD36E,
- /* U+89E8 */ 0xD36F, 0xD370, 0xD371, 0xF6A2, 0xD372, 0xD373, 0xD374, 0xF6A3,
- /* U+89F0 */ 0xD375, 0xD376, 0xD377, 0xECB2, 0xD378, 0xD379, 0xD37A, 0xD37B,
- /* U+89F8 */ 0xD37C, 0xD37D, 0xD37E, 0xD380, 0xD381, 0xD382, 0xD383, 0xD384,
- /* U+8A00 */ 0xD1D4, 0xD385, 0xD386, 0xD387, 0xD388, 0xD389, 0xD38A, 0xD9EA,
- /* U+8A08 */ 0xD38B, 0xD38C, 0xD38D, 0xD38E, 0xD38F, 0xD390, 0xD391, 0xD392,
- /* U+8A10 */ 0xD393, 0xD394, 0xD395, 0xD396, 0xD397, 0xD398, 0xD399, 0xD39A,
- /* U+8A18 */ 0xD39B, 0xD39C, 0xD39D, 0xD39E, 0xD39F, 0xD3A0, 0xD440, 0xD441,
- /* U+8A20 */ 0xD442, 0xD443, 0xD444, 0xD445, 0xD446, 0xD447, 0xD448, 0xD449,
- /* U+8A28 */ 0xD44A, 0xD44B, 0xD44C, 0xD44D, 0xD44E, 0xD44F, 0xD450, 0xD451,
- /* U+8A30 */ 0xD452, 0xD453, 0xD454, 0xD455, 0xD456, 0xD457, 0xD458, 0xD459,
- /* U+8A38 */ 0xD45A, 0xD45B, 0xD45C, 0xD45D, 0xD45E, 0xD45F, 0xF6A4, 0xD460,
- /* U+8A40 */ 0xD461, 0xD462, 0xD463, 0xD464, 0xD465, 0xD466, 0xD467, 0xD468,
- /* U+8A48 */ 0xEEBA, 0xD469, 0xD46A, 0xD46B, 0xD46C, 0xD46D, 0xD46E, 0xD46F,
- /* U+8A50 */ 0xD470, 0xD471, 0xD472, 0xD473, 0xD474, 0xD475, 0xD476, 0xD477,
- /* U+8A58 */ 0xD478, 0xD479, 0xD47A, 0xD47B, 0xD47C, 0xD47D, 0xD47E, 0xD480,
- /* U+8A60 */ 0xD481, 0xD482, 0xD483, 0xD484, 0xD485, 0xD486, 0xD487, 0xD488,
- /* U+8A68 */ 0xD489, 0xD48A, 0xD48B, 0xD48C, 0xD48D, 0xD48E, 0xD48F, 0xD490,
- /* U+8A70 */ 0xD491, 0xD492, 0xD493, 0xD494, 0xD495, 0xD496, 0xD497, 0xD498,
- /* U+8A78 */ 0xD499, 0xD5B2, 0xD49A, 0xD49B, 0xD49C, 0xD49D, 0xD49E, 0xD49F,
- /* U+8A80 */ 0xD4A0, 0xD540, 0xD541, 0xD542, 0xD543, 0xD544, 0xD545, 0xD546,
- /* U+8A88 */ 0xD547, 0xD3FE, 0xCCDC, 0xD548, 0xD549, 0xD54A, 0xD54B, 0xD54C,
- /* U+8A90 */ 0xD54D, 0xD54E, 0xD54F, 0xCAC4, 0xD550, 0xD551, 0xD552, 0xD553,
- /* U+8A98 */ 0xD554, 0xD555, 0xD556, 0xD557, 0xD558, 0xD559, 0xD55A, 0xD55B,
- /* U+8AA0 */ 0xD55C, 0xD55D, 0xD55E, 0xD55F, 0xD560, 0xD561, 0xD562, 0xD563,
- /* U+8AA8 */ 0xD564, 0xD565, 0xD566, 0xD567, 0xD568, 0xD569, 0xD56A, 0xD56B,
- /* U+8AB0 */ 0xD56C, 0xD56D, 0xD56E, 0xD56F, 0xD570, 0xD571, 0xD572, 0xD573,
- /* U+8AB8 */ 0xD574, 0xD575, 0xD576, 0xD577, 0xD578, 0xD579, 0xD57A, 0xD57B,
- /* U+8AC0 */ 0xD57C, 0xD57D, 0xD57E, 0xD580, 0xD581, 0xD582, 0xD583, 0xD584,
- /* U+8AC8 */ 0xD585, 0xD586, 0xD587, 0xD588, 0xD589, 0xD58A, 0xD58B, 0xD58C,
- /* U+8AD0 */ 0xD58D, 0xD58E, 0xD58F, 0xD590, 0xD591, 0xD592, 0xD593, 0xD594,
- /* U+8AD8 */ 0xD595, 0xD596, 0xD597, 0xD598, 0xD599, 0xD59A, 0xD59B, 0xD59C,
- /* U+8AE0 */ 0xD59D, 0xD59E, 0xD59F, 0xD5A0, 0xD640, 0xD641, 0xD642, 0xD643,
- /* U+8AE8 */ 0xD644, 0xD645, 0xD646, 0xD647, 0xD648, 0xD649, 0xD64A, 0xD64B,
- /* U+8AF0 */ 0xD64C, 0xD64D, 0xD64E, 0xD64F, 0xD650, 0xD651, 0xD652, 0xD653,
- /* U+8AF8 */ 0xD654, 0xD655, 0xD656, 0xD657, 0xD658, 0xD659, 0xD65A, 0xD65B,
- /* U+8B00 */ 0xD65C, 0xD65D, 0xD65E, 0xD65F, 0xD660, 0xD661, 0xD662, 0xE5C0,
- /* U+8B08 */ 0xD663, 0xD664, 0xD665, 0xD666, 0xD667, 0xD668, 0xD669, 0xD66A,
- /* U+8B10 */ 0xD66B, 0xD66C, 0xD66D, 0xD66E, 0xD66F, 0xD670, 0xD671, 0xD672,
- /* U+8B18 */ 0xD673, 0xD674, 0xD675, 0xD676, 0xD677, 0xD678, 0xD679, 0xD67A,
- /* U+8B20 */ 0xD67B, 0xD67C, 0xD67D, 0xD67E, 0xD680, 0xD681, 0xF6A5, 0xD682,
- /* U+8B28 */ 0xD683, 0xD684, 0xD685, 0xD686, 0xD687, 0xD688, 0xD689, 0xD68A,
- /* U+8B30 */ 0xD68B, 0xD68C, 0xD68D, 0xD68E, 0xD68F, 0xD690, 0xD691, 0xD692,
- /* U+8B38 */ 0xD693, 0xD694, 0xD695, 0xD696, 0xD697, 0xD698, 0xD699, 0xD69A,
- /* U+8B40 */ 0xD69B, 0xD69C, 0xD69D, 0xD69E, 0xD69F, 0xD6A0, 0xD740, 0xD741,
- /* U+8B48 */ 0xD742, 0xD743, 0xD744, 0xD745, 0xD746, 0xD747, 0xD748, 0xD749,
- /* U+8B50 */ 0xD74A, 0xD74B, 0xD74C, 0xD74D, 0xD74E, 0xD74F, 0xD750, 0xD751,
- /* U+8B58 */ 0xD752, 0xD753, 0xD754, 0xD755, 0xD756, 0xD757, 0xD758, 0xD759,
- /* U+8B60 */ 0xD75A, 0xD75B, 0xD75C, 0xD75D, 0xD75E, 0xD75F, 0xBEAF, 0xD760,
- /* U+8B68 */ 0xD761, 0xD762, 0xD763, 0xD764, 0xC6A9, 0xD765, 0xD766, 0xD767,
- /* U+8B70 */ 0xD768, 0xD769, 0xD76A, 0xD76B, 0xD76C, 0xD76D, 0xD76E, 0xD76F,
- /* U+8B78 */ 0xD770, 0xD771, 0xD772, 0xD773, 0xD774, 0xD775, 0xD776, 0xD777,
- /* U+8B80 */ 0xD778, 0xD779, 0xD77A, 0xD77B, 0xD77C, 0xD77D, 0xD77E, 0xD780,
- /* U+8B88 */ 0xD781, 0xD782, 0xD783, 0xD784, 0xD785, 0xD786, 0xD787, 0xD788,
- /* U+8B90 */ 0xD789, 0xD78A, 0xD78B, 0xD78C, 0xD78D, 0xD78E, 0xD78F, 0xD790,
- /* U+8B98 */ 0xD791, 0xD792, 0xD793, 0xD794, 0xD795, 0xD796, 0xD797, 0xD798,
- /* U+8BA0 */ 0xDAA5, 0xBCC6, 0xB6A9, 0xB8BC, 0xC8CF, 0xBCA5, 0xDAA6, 0xDAA7,
- /* U+8BA8 */ 0xCCD6, 0xC8C3, 0xDAA8, 0xC6FD, 0xD799, 0xD1B5, 0xD2E9, 0xD1B6,
- /* U+8BB0 */ 0xBCC7, 0xD79A, 0xBDB2, 0xBBE4, 0xDAA9, 0xDAAA, 0xD1C8, 0xDAAB,
- /* U+8BB8 */ 0xD0ED, 0xB6EF, 0xC2DB, 0xD79B, 0xCBCF, 0xB7ED, 0xC9E8, 0xB7C3,
- /* U+8BC0 */ 0xBEF7, 0xD6A4, 0xDAAC, 0xDAAD, 0xC6C0, 0xD7E7, 0xCAB6, 0xD79C,
- /* U+8BC8 */ 0xD5A9, 0xCBDF, 0xD5EF, 0xDAAE, 0xD6DF, 0xB4CA, 0xDAB0, 0xDAAF,
- /* U+8BD0 */ 0xD79D, 0xD2EB, 0xDAB1, 0xDAB2, 0xDAB3, 0xCAD4, 0xDAB4, 0xCAAB,
- /* U+8BD8 */ 0xDAB5, 0xDAB6, 0xB3CF, 0xD6EF, 0xDAB7, 0xBBB0, 0xB5AE, 0xDAB8,
- /* U+8BE0 */ 0xDAB9, 0xB9EE, 0xD1AF, 0xD2E8, 0xDABA, 0xB8C3, 0xCFEA, 0xB2EF,
- /* U+8BE8 */ 0xDABB, 0xDABC, 0xD79E, 0xBDEB, 0xCEDC, 0xD3EF, 0xDABD, 0xCEF3,
- /* U+8BF0 */ 0xDABE, 0xD3D5, 0xBBE5, 0xDABF, 0xCBB5, 0xCBD0, 0xDAC0, 0xC7EB,
- /* U+8BF8 */ 0xD6EE, 0xDAC1, 0xC5B5, 0xB6C1, 0xDAC2, 0xB7CC, 0xBFCE, 0xDAC3,
- /* U+8C00 */ 0xDAC4, 0xCBAD, 0xDAC5, 0xB5F7, 0xDAC6, 0xC1C2, 0xD7BB, 0xDAC7,
- /* U+8C08 */ 0xCCB8, 0xD79F, 0xD2EA, 0xC4B1, 0xDAC8, 0xB5FD, 0xBBD1, 0xDAC9,
- /* U+8C10 */ 0xD0B3, 0xDACA, 0xDACB, 0xCEBD, 0xDACC, 0xDACD, 0xDACE, 0xB2F7,
- /* U+8C18 */ 0xDAD1, 0xDACF, 0xD1E8, 0xDAD0, 0xC3D5, 0xDAD2, 0xD7A0, 0xDAD3,
- /* U+8C20 */ 0xDAD4, 0xDAD5, 0xD0BB, 0xD2A5, 0xB0F9, 0xDAD6, 0xC7AB, 0xDAD7,
- /* U+8C28 */ 0xBDF7, 0xC3A1, 0xDAD8, 0xDAD9, 0xC3FD, 0xCCB7, 0xDADA, 0xDADB,
- /* U+8C30 */ 0xC0BE, 0xC6D7, 0xDADC, 0xDADD, 0xC7B4, 0xDADE, 0xDADF, 0xB9C8,
- /* U+8C38 */ 0xD840, 0xD841, 0xD842, 0xD843, 0xD844, 0xD845, 0xD846, 0xD847,
- /* U+8C40 */ 0xD848, 0xBBED, 0xD849, 0xD84A, 0xD84B, 0xD84C, 0xB6B9, 0xF4F8,
- /* U+8C48 */ 0xD84D, 0xF4F9, 0xD84E, 0xD84F, 0xCDE3, 0xD850, 0xD851, 0xD852,
- /* U+8C50 */ 0xD853, 0xD854, 0xD855, 0xD856, 0xD857, 0xF5B9, 0xD858, 0xD859,
- /* U+8C58 */ 0xD85A, 0xD85B, 0xEBE0, 0xD85C, 0xD85D, 0xD85E, 0xD85F, 0xD860,
- /* U+8C60 */ 0xD861, 0xCFF3, 0xBBBF, 0xD862, 0xD863, 0xD864, 0xD865, 0xD866,
- /* U+8C68 */ 0xD867, 0xD868, 0xBAC0, 0xD4A5, 0xD869, 0xD86A, 0xD86B, 0xD86C,
- /* U+8C70 */ 0xD86D, 0xD86E, 0xD86F, 0xE1D9, 0xD870, 0xD871, 0xD872, 0xD873,
- /* U+8C78 */ 0xF5F4, 0xB1AA, 0xB2F2, 0xD874, 0xD875, 0xD876, 0xD877, 0xD878,
- /* U+8C80 */ 0xD879, 0xD87A, 0xF5F5, 0xD87B, 0xD87C, 0xF5F7, 0xD87D, 0xD87E,
- /* U+8C88 */ 0xD880, 0xBAD1, 0xF5F6, 0xD881, 0xC3B2, 0xD882, 0xD883, 0xD884,
- /* U+8C90 */ 0xD885, 0xD886, 0xD887, 0xD888, 0xF5F9, 0xD889, 0xD88A, 0xD88B,
- /* U+8C98 */ 0xF5F8, 0xD88C, 0xD88D, 0xD88E, 0xD88F, 0xD890, 0xD891, 0xD892,
- /* U+8CA0 */ 0xD893, 0xD894, 0xD895, 0xD896, 0xD897, 0xD898, 0xD899, 0xD89A,
- /* U+8CA8 */ 0xD89B, 0xD89C, 0xD89D, 0xD89E, 0xD89F, 0xD8A0, 0xD940, 0xD941,
- /* U+8CB0 */ 0xD942, 0xD943, 0xD944, 0xD945, 0xD946, 0xD947, 0xD948, 0xD949,
- /* U+8CB8 */ 0xD94A, 0xD94B, 0xD94C, 0xD94D, 0xD94E, 0xD94F, 0xD950, 0xD951,
- /* U+8CC0 */ 0xD952, 0xD953, 0xD954, 0xD955, 0xD956, 0xD957, 0xD958, 0xD959,
- /* U+8CC8 */ 0xD95A, 0xD95B, 0xD95C, 0xD95D, 0xD95E, 0xD95F, 0xD960, 0xD961,
- /* U+8CD0 */ 0xD962, 0xD963, 0xD964, 0xD965, 0xD966, 0xD967, 0xD968, 0xD969,
- /* U+8CD8 */ 0xD96A, 0xD96B, 0xD96C, 0xD96D, 0xD96E, 0xD96F, 0xD970, 0xD971,
- /* U+8CE0 */ 0xD972, 0xD973, 0xD974, 0xD975, 0xD976, 0xD977, 0xD978, 0xD979,
- /* U+8CE8 */ 0xD97A, 0xD97B, 0xD97C, 0xD97D, 0xD97E, 0xD980, 0xD981, 0xD982,
- /* U+8CF0 */ 0xD983, 0xD984, 0xD985, 0xD986, 0xD987, 0xD988, 0xD989, 0xD98A,
- /* U+8CF8 */ 0xD98B, 0xD98C, 0xD98D, 0xD98E, 0xD98F, 0xD990, 0xD991, 0xD992,
- /* U+8D00 */ 0xD993, 0xD994, 0xD995, 0xD996, 0xD997, 0xD998, 0xD999, 0xD99A,
- /* U+8D08 */ 0xD99B, 0xD99C, 0xD99D, 0xD99E, 0xD99F, 0xD9A0, 0xDA40, 0xDA41,
- /* U+8D10 */ 0xDA42, 0xDA43, 0xDA44, 0xDA45, 0xDA46, 0xDA47, 0xDA48, 0xDA49,
- /* U+8D18 */ 0xDA4A, 0xDA4B, 0xDA4C, 0xDA4D, 0xDA4E, 0xB1B4, 0xD5EA, 0xB8BA,
- /* U+8D20 */ 0xDA4F, 0xB9B1, 0xB2C6, 0xD4F0, 0xCFCD, 0xB0DC, 0xD5CB, 0xBBF5,
- /* U+8D28 */ 0xD6CA, 0xB7B7, 0xCCB0, 0xC6B6, 0xB1E1, 0xB9BA, 0xD6FC, 0xB9E1,
- /* U+8D30 */ 0xB7A1, 0xBCFA, 0xEADA, 0xEADB, 0xCCF9, 0xB9F3, 0xEADC, 0xB4FB,
- /* U+8D38 */ 0xC3B3, 0xB7D1, 0xBAD8, 0xEADD, 0xD4F4, 0xEADE, 0xBCD6, 0xBBDF,
- /* U+8D40 */ 0xEADF, 0xC1DE, 0xC2B8, 0xD4DF, 0xD7CA, 0xEAE0, 0xEAE1, 0xEAE4,
- /* U+8D48 */ 0xEAE2, 0xEAE3, 0xC9DE, 0xB8B3, 0xB6C4, 0xEAE5, 0xCAEA, 0xC9CD,
- /* U+8D50 */ 0xB4CD, 0xDA50, 0xDA51, 0xE2D9, 0xC5E2, 0xEAE6, 0xC0B5, 0xDA52,
- /* U+8D58 */ 0xD7B8, 0xEAE7, 0xD7AC, 0xC8FC, 0xD8D3, 0xD8CD, 0xD4DE, 0xDA53,
- /* U+8D60 */ 0xD4F9, 0xC9C4, 0xD3AE, 0xB8D3, 0xB3E0, 0xDA54, 0xC9E2, 0xF4F6,
- /* U+8D68 */ 0xDA55, 0xDA56, 0xDA57, 0xBAD5, 0xDA58, 0xF4F7, 0xDA59, 0xDA5A,
- /* U+8D70 */ 0xD7DF, 0xDA5B, 0xDA5C, 0xF4F1, 0xB8B0, 0xD5D4, 0xB8CF, 0xC6F0,
- /* U+8D78 */ 0xDA5D, 0xDA5E, 0xDA5F, 0xDA60, 0xDA61, 0xDA62, 0xDA63, 0xDA64,
- /* U+8D80 */ 0xDA65, 0xB3C3, 0xDA66, 0xDA67, 0xF4F2, 0xB3AC, 0xDA68, 0xDA69,
- /* U+8D88 */ 0xDA6A, 0xDA6B, 0xD4BD, 0xC7F7, 0xDA6C, 0xDA6D, 0xDA6E, 0xDA6F,
- /* U+8D90 */ 0xDA70, 0xF4F4, 0xDA71, 0xDA72, 0xF4F3, 0xDA73, 0xDA74, 0xDA75,
- /* U+8D98 */ 0xDA76, 0xDA77, 0xDA78, 0xDA79, 0xDA7A, 0xDA7B, 0xDA7C, 0xCCCB,
- /* U+8DA0 */ 0xDA7D, 0xDA7E, 0xDA80, 0xC8A4, 0xDA81, 0xDA82, 0xDA83, 0xDA84,
- /* U+8DA8 */ 0xDA85, 0xDA86, 0xDA87, 0xDA88, 0xDA89, 0xDA8A, 0xDA8B, 0xDA8C,
- /* U+8DB0 */ 0xDA8D, 0xF4F5, 0xDA8E, 0xD7E3, 0xC5BF, 0xF5C0, 0xDA8F, 0xDA90,
- /* U+8DB8 */ 0xF5BB, 0xDA91, 0xF5C3, 0xDA92, 0xF5C2, 0xDA93, 0xD6BA, 0xF5C1,
- /* U+8DC0 */ 0xDA94, 0xDA95, 0xDA96, 0xD4BE, 0xF5C4, 0xDA97, 0xF5CC, 0xDA98,
- /* U+8DC8 */ 0xDA99, 0xDA9A, 0xDA9B, 0xB0CF, 0xB5F8, 0xDA9C, 0xF5C9, 0xF5CA,
- /* U+8DD0 */ 0xDA9D, 0xC5DC, 0xDA9E, 0xDA9F, 0xDAA0, 0xDB40, 0xF5C5, 0xF5C6,
- /* U+8DD8 */ 0xDB41, 0xDB42, 0xF5C7, 0xF5CB, 0xDB43, 0xBEE0, 0xF5C8, 0xB8FA,
- /* U+8DE0 */ 0xDB44, 0xDB45, 0xDB46, 0xF5D0, 0xF5D3, 0xDB47, 0xDB48, 0xDB49,
- /* U+8DE8 */ 0xBFE7, 0xDB4A, 0xB9F2, 0xF5BC, 0xF5CD, 0xDB4B, 0xDB4C, 0xC2B7,
- /* U+8DF0 */ 0xDB4D, 0xDB4E, 0xDB4F, 0xCCF8, 0xDB50, 0xBCF9, 0xDB51, 0xF5CE,
- /* U+8DF8 */ 0xF5CF, 0xF5D1, 0xB6E5, 0xF5D2, 0xDB52, 0xF5D5, 0xDB53, 0xDB54,
- /* U+8E00 */ 0xDB55, 0xDB56, 0xDB57, 0xDB58, 0xDB59, 0xF5BD, 0xDB5A, 0xDB5B,
- /* U+8E08 */ 0xDB5C, 0xF5D4, 0xD3BB, 0xDB5D, 0xB3EC, 0xDB5E, 0xDB5F, 0xCCA4,
- /* U+8E10 */ 0xDB60, 0xDB61, 0xDB62, 0xDB63, 0xF5D6, 0xDB64, 0xDB65, 0xDB66,
- /* U+8E18 */ 0xDB67, 0xDB68, 0xDB69, 0xDB6A, 0xDB6B, 0xF5D7, 0xBEE1, 0xF5D8,
- /* U+8E20 */ 0xDB6C, 0xDB6D, 0xCCDF, 0xF5DB, 0xDB6E, 0xDB6F, 0xDB70, 0xDB71,
- /* U+8E28 */ 0xDB72, 0xB2C8, 0xD7D9, 0xDB73, 0xF5D9, 0xDB74, 0xF5DA, 0xF5DC,
- /* U+8E30 */ 0xDB75, 0xF5E2, 0xDB76, 0xDB77, 0xDB78, 0xF5E0, 0xDB79, 0xDB7A,
- /* U+8E38 */ 0xDB7B, 0xF5DF, 0xF5DD, 0xDB7C, 0xDB7D, 0xF5E1, 0xDB7E, 0xDB80,
- /* U+8E40 */ 0xF5DE, 0xF5E4, 0xF5E5, 0xDB81, 0xCCE3, 0xDB82, 0xDB83, 0xE5BF,
- /* U+8E48 */ 0xB5B8, 0xF5E3, 0xF5E8, 0xCCA3, 0xDB84, 0xDB85, 0xDB86, 0xDB87,
- /* U+8E50 */ 0xDB88, 0xF5E6, 0xF5E7, 0xDB89, 0xDB8A, 0xDB8B, 0xDB8C, 0xDB8D,
- /* U+8E58 */ 0xDB8E, 0xF5BE, 0xDB8F, 0xDB90, 0xDB91, 0xDB92, 0xDB93, 0xDB94,
- /* U+8E60 */ 0xDB95, 0xDB96, 0xDB97, 0xDB98, 0xDB99, 0xDB9A, 0xB1C4, 0xDB9B,
- /* U+8E68 */ 0xDB9C, 0xF5BF, 0xDB9D, 0xDB9E, 0xB5C5, 0xB2E4, 0xDB9F, 0xF5EC,
- /* U+8E70 */ 0xF5E9, 0xDBA0, 0xB6D7, 0xDC40, 0xF5ED, 0xDC41, 0xF5EA, 0xDC42,
- /* U+8E78 */ 0xDC43, 0xDC44, 0xDC45, 0xDC46, 0xF5EB, 0xDC47, 0xDC48, 0xB4DA,
- /* U+8E80 */ 0xDC49, 0xD4EA, 0xDC4A, 0xDC4B, 0xDC4C, 0xF5EE, 0xDC4D, 0xB3F9,
- /* U+8E88 */ 0xDC4E, 0xDC4F, 0xDC50, 0xDC51, 0xDC52, 0xDC53, 0xDC54, 0xF5EF,
- /* U+8E90 */ 0xF5F1, 0xDC55, 0xDC56, 0xDC57, 0xF5F0, 0xDC58, 0xDC59, 0xDC5A,
- /* U+8E98 */ 0xDC5B, 0xDC5C, 0xDC5D, 0xDC5E, 0xF5F2, 0xDC5F, 0xF5F3, 0xDC60,
- /* U+8EA0 */ 0xDC61, 0xDC62, 0xDC63, 0xDC64, 0xDC65, 0xDC66, 0xDC67, 0xDC68,
- /* U+8EA8 */ 0xDC69, 0xDC6A, 0xDC6B, 0xC9ED, 0xB9AA, 0xDC6C, 0xDC6D, 0xC7FB,
- /* U+8EB0 */ 0xDC6E, 0xDC6F, 0xB6E3, 0xDC70, 0xDC71, 0xDC72, 0xDC73, 0xDC74,
- /* U+8EB8 */ 0xDC75, 0xDC76, 0xCCC9, 0xDC77, 0xDC78, 0xDC79, 0xDC7A, 0xDC7B,
- /* U+8EC0 */ 0xDC7C, 0xDC7D, 0xDC7E, 0xDC80, 0xDC81, 0xDC82, 0xDC83, 0xDC84,
- /* U+8EC8 */ 0xDC85, 0xDC86, 0xDC87, 0xDC88, 0xDC89, 0xDC8A, 0xEAA6, 0xDC8B,
- /* U+8ED0 */ 0xDC8C, 0xDC8D, 0xDC8E, 0xDC8F, 0xDC90, 0xDC91, 0xDC92, 0xDC93,
- /* U+8ED8 */ 0xDC94, 0xDC95, 0xDC96, 0xDC97, 0xDC98, 0xDC99, 0xDC9A, 0xDC9B,
- /* U+8EE0 */ 0xDC9C, 0xDC9D, 0xDC9E, 0xDC9F, 0xDCA0, 0xDD40, 0xDD41, 0xDD42,
- /* U+8EE8 */ 0xDD43, 0xDD44, 0xDD45, 0xDD46, 0xDD47, 0xDD48, 0xDD49, 0xDD4A,
- /* U+8EF0 */ 0xDD4B, 0xDD4C, 0xDD4D, 0xDD4E, 0xDD4F, 0xDD50, 0xDD51, 0xDD52,
- /* U+8EF8 */ 0xDD53, 0xDD54, 0xDD55, 0xDD56, 0xDD57, 0xDD58, 0xDD59, 0xDD5A,
- /* U+8F00 */ 0xDD5B, 0xDD5C, 0xDD5D, 0xDD5E, 0xDD5F, 0xDD60, 0xDD61, 0xDD62,
- /* U+8F08 */ 0xDD63, 0xDD64, 0xDD65, 0xDD66, 0xDD67, 0xDD68, 0xDD69, 0xDD6A,
- /* U+8F10 */ 0xDD6B, 0xDD6C, 0xDD6D, 0xDD6E, 0xDD6F, 0xDD70, 0xDD71, 0xDD72,
- /* U+8F18 */ 0xDD73, 0xDD74, 0xDD75, 0xDD76, 0xDD77, 0xDD78, 0xDD79, 0xDD7A,
- /* U+8F20 */ 0xDD7B, 0xDD7C, 0xDD7D, 0xDD7E, 0xDD80, 0xDD81, 0xDD82, 0xDD83,
- /* U+8F28 */ 0xDD84, 0xDD85, 0xDD86, 0xDD87, 0xDD88, 0xDD89, 0xDD8A, 0xDD8B,
- /* U+8F30 */ 0xDD8C, 0xDD8D, 0xDD8E, 0xDD8F, 0xDD90, 0xDD91, 0xDD92, 0xDD93,
- /* U+8F38 */ 0xDD94, 0xDD95, 0xDD96, 0xDD97, 0xDD98, 0xDD99, 0xDD9A, 0xDD9B,
- /* U+8F40 */ 0xDD9C, 0xDD9D, 0xDD9E, 0xDD9F, 0xDDA0, 0xDE40, 0xDE41, 0xDE42,
- /* U+8F48 */ 0xDE43, 0xDE44, 0xDE45, 0xDE46, 0xDE47, 0xDE48, 0xDE49, 0xDE4A,
- /* U+8F50 */ 0xDE4B, 0xDE4C, 0xDE4D, 0xDE4E, 0xDE4F, 0xDE50, 0xDE51, 0xDE52,
- /* U+8F58 */ 0xDE53, 0xDE54, 0xDE55, 0xDE56, 0xDE57, 0xDE58, 0xDE59, 0xDE5A,
- /* U+8F60 */ 0xDE5B, 0xDE5C, 0xDE5D, 0xDE5E, 0xDE5F, 0xDE60, 0xB3B5, 0xD4FE,
- /* U+8F68 */ 0xB9EC, 0xD0F9, 0xDE61, 0xE9ED, 0xD7AA, 0xE9EE, 0xC2D6, 0xC8ED,
- /* U+8F70 */ 0xBAE4, 0xE9EF, 0xE9F0, 0xE9F1, 0xD6E1, 0xE9F2, 0xE9F3, 0xE9F5,
- /* U+8F78 */ 0xE9F4, 0xE9F6, 0xE9F7, 0xC7E1, 0xE9F8, 0xD4D8, 0xE9F9, 0xBDCE,
- /* U+8F80 */ 0xDE62, 0xE9FA, 0xE9FB, 0xBDCF, 0xE9FC, 0xB8A8, 0xC1BE, 0xE9FD,
- /* U+8F88 */ 0xB1B2, 0xBBD4, 0xB9F5, 0xE9FE, 0xDE63, 0xEAA1, 0xEAA2, 0xEAA3,
- /* U+8F90 */ 0xB7F8, 0xBCAD, 0xDE64, 0xCAE4, 0xE0CE, 0xD4AF, 0xCFBD, 0xD5B7,
- /* U+8F98 */ 0xEAA4, 0xD5DE, 0xEAA5, 0xD0C1, 0xB9BC, 0xDE65, 0xB4C7, 0xB1D9,
- /* U+8FA0 */ 0xDE66, 0xDE67, 0xDE68, 0xC0B1, 0xDE69, 0xDE6A, 0xDE6B, 0xDE6C,
- /* U+8FA8 */ 0xB1E6, 0xB1E7, 0xDE6D, 0xB1E8, 0xDE6E, 0xDE6F, 0xDE70, 0xDE71,
- /* U+8FB0 */ 0xB3BD, 0xC8E8, 0xDE72, 0xDE73, 0xDE74, 0xDE75, 0xE5C1, 0xDE76,
- /* U+8FB8 */ 0xDE77, 0xB1DF, 0xDE78, 0xDE79, 0xDE7A, 0xC1C9, 0xB4EF, 0xDE7B,
- /* U+8FC0 */ 0xDE7C, 0xC7A8, 0xD3D8, 0xDE7D, 0xC6F9, 0xD1B8, 0xDE7E, 0xB9FD,
- /* U+8FC8 */ 0xC2F5, 0xDE80, 0xDE81, 0xDE82, 0xDE83, 0xDE84, 0xD3AD, 0xDE85,
- /* U+8FD0 */ 0xD4CB, 0xBDFC, 0xDE86, 0xE5C2, 0xB7B5, 0xE5C3, 0xDE87, 0xDE88,
- /* U+8FD8 */ 0xBBB9, 0xD5E2, 0xDE89, 0xBDF8, 0xD4B6, 0xCEA5, 0xC1AC, 0xB3D9,
- /* U+8FE0 */ 0xDE8A, 0xDE8B, 0xCCF6, 0xDE8C, 0xE5C6, 0xE5C4, 0xE5C8, 0xDE8D,
- /* U+8FE8 */ 0xE5CA, 0xE5C7, 0xB5CF, 0xC6C8, 0xDE8E, 0xB5FC, 0xE5C5, 0xDE8F,
- /* U+8FF0 */ 0xCAF6, 0xDE90, 0xDE91, 0xE5C9, 0xDE92, 0xDE93, 0xDE94, 0xC3D4,
- /* U+8FF8 */ 0xB1C5, 0xBCA3, 0xDE95, 0xDE96, 0xDE97, 0xD7B7, 0xDE98, 0xDE99,
- /* U+9000 */ 0xCDCB, 0xCBCD, 0xCACA, 0xCCD3, 0xE5CC, 0xE5CB, 0xC4E6, 0xDE9A,
- /* U+9008 */ 0xDE9B, 0xD1A1, 0xD1B7, 0xE5CD, 0xDE9C, 0xE5D0, 0xDE9D, 0xCDB8,
- /* U+9010 */ 0xD6F0, 0xE5CF, 0xB5DD, 0xDE9E, 0xCDBE, 0xDE9F, 0xE5D1, 0xB6BA,
- /* U+9018 */ 0xDEA0, 0xDF40, 0xCDA8, 0xB9E4, 0xDF41, 0xCAC5, 0xB3D1, 0xCBD9,
- /* U+9020 */ 0xD4EC, 0xE5D2, 0xB7EA, 0xDF42, 0xDF43, 0xDF44, 0xE5CE, 0xDF45,
- /* U+9028 */ 0xDF46, 0xDF47, 0xDF48, 0xDF49, 0xDF4A, 0xE5D5, 0xB4FE, 0xE5D6,
- /* U+9030 */ 0xDF4B, 0xDF4C, 0xDF4D, 0xDF4E, 0xDF4F, 0xE5D3, 0xE5D4, 0xDF50,
- /* U+9038 */ 0xD2DD, 0xDF51, 0xDF52, 0xC2DF, 0xB1C6, 0xDF53, 0xD3E2, 0xDF54,
- /* U+9040 */ 0xDF55, 0xB6DD, 0xCBEC, 0xDF56, 0xE5D7, 0xDF57, 0xDF58, 0xD3F6,
- /* U+9048 */ 0xDF59, 0xDF5A, 0xDF5B, 0xDF5C, 0xDF5D, 0xB1E9, 0xDF5E, 0xB6F4,
- /* U+9050 */ 0xE5DA, 0xE5D8, 0xE5D9, 0xB5C0, 0xDF5F, 0xDF60, 0xDF61, 0xD2C5,
- /* U+9058 */ 0xE5DC, 0xDF62, 0xDF63, 0xE5DE, 0xDF64, 0xDF65, 0xDF66, 0xDF67,
- /* U+9060 */ 0xDF68, 0xDF69, 0xE5DD, 0xC7B2, 0xDF6A, 0xD2A3, 0xDF6B, 0xDF6C,
- /* U+9068 */ 0xE5DB, 0xDF6D, 0xDF6E, 0xDF6F, 0xDF70, 0xD4E2, 0xD5DA, 0xDF71,
- /* U+9070 */ 0xDF72, 0xDF73, 0xDF74, 0xDF75, 0xE5E0, 0xD7F1, 0xDF76, 0xDF77,
- /* U+9078 */ 0xDF78, 0xDF79, 0xDF7A, 0xDF7B, 0xDF7C, 0xE5E1, 0xDF7D, 0xB1DC,
- /* U+9080 */ 0xD1FB, 0xDF7E, 0xE5E2, 0xE5E4, 0xDF80, 0xDF81, 0xDF82, 0xDF83,
- /* U+9088 */ 0xE5E3, 0xDF84, 0xDF85, 0xE5E5, 0xDF86, 0xDF87, 0xDF88, 0xDF89,
- /* U+9090 */ 0xDF8A, 0xD2D8, 0xDF8B, 0xB5CB, 0xDF8C, 0xE7DF, 0xDF8D, 0xDAF5,
- /* U+9098 */ 0xDF8E, 0xDAF8, 0xDF8F, 0xDAF6, 0xDF90, 0xDAF7, 0xDF91, 0xDF92,
- /* U+90A0 */ 0xDF93, 0xDAFA, 0xD0CF, 0xC4C7, 0xDF94, 0xDF95, 0xB0EE, 0xDF96,
- /* U+90A8 */ 0xDF97, 0xDF98, 0xD0B0, 0xDF99, 0xDAF9, 0xDF9A, 0xD3CA, 0xBAAA,
- /* U+90B0 */ 0xDBA2, 0xC7F1, 0xDF9B, 0xDAFC, 0xDAFB, 0xC9DB, 0xDAFD, 0xDF9C,
- /* U+90B8 */ 0xDBA1, 0xD7DE, 0xDAFE, 0xC1DA, 0xDF9D, 0xDF9E, 0xDBA5, 0xDF9F,
- /* U+90C0 */ 0xDFA0, 0xD3F4, 0xE040, 0xE041, 0xDBA7, 0xDBA4, 0xE042, 0xDBA8,
- /* U+90C8 */ 0xE043, 0xE044, 0xBDBC, 0xE045, 0xE046, 0xE047, 0xC0C9, 0xDBA3,
- /* U+90D0 */ 0xDBA6, 0xD6A3, 0xE048, 0xDBA9, 0xE049, 0xE04A, 0xE04B, 0xDBAD,
- /* U+90D8 */ 0xE04C, 0xE04D, 0xE04E, 0xDBAE, 0xDBAC, 0xBAC2, 0xE04F, 0xE050,
- /* U+90E0 */ 0xE051, 0xBFA4, 0xDBAB, 0xE052, 0xE053, 0xE054, 0xDBAA, 0xD4C7,
- /* U+90E8 */ 0xB2BF, 0xE055, 0xE056, 0xDBAF, 0xE057, 0xB9F9, 0xE058, 0xDBB0,
- /* U+90F0 */ 0xE059, 0xE05A, 0xE05B, 0xE05C, 0xB3BB, 0xE05D, 0xE05E, 0xE05F,
- /* U+90F8 */ 0xB5A6, 0xE060, 0xE061, 0xE062, 0xE063, 0xB6BC, 0xDBB1, 0xE064,
- /* U+9100 */ 0xE065, 0xE066, 0xB6F5, 0xE067, 0xDBB2, 0xE068, 0xE069, 0xE06A,
- /* U+9108 */ 0xE06B, 0xE06C, 0xE06D, 0xE06E, 0xE06F, 0xE070, 0xE071, 0xE072,
- /* U+9110 */ 0xE073, 0xE074, 0xE075, 0xE076, 0xE077, 0xE078, 0xE079, 0xE07A,
- /* U+9118 */ 0xE07B, 0xB1C9, 0xE07C, 0xE07D, 0xE07E, 0xE080, 0xDBB4, 0xE081,
- /* U+9120 */ 0xE082, 0xE083, 0xDBB3, 0xDBB5, 0xE084, 0xE085, 0xE086, 0xE087,
- /* U+9128 */ 0xE088, 0xE089, 0xE08A, 0xE08B, 0xE08C, 0xE08D, 0xE08E, 0xDBB7,
- /* U+9130 */ 0xE08F, 0xDBB6, 0xE090, 0xE091, 0xE092, 0xE093, 0xE094, 0xE095,
- /* U+9138 */ 0xE096, 0xDBB8, 0xE097, 0xE098, 0xE099, 0xE09A, 0xE09B, 0xE09C,
- /* U+9140 */ 0xE09D, 0xE09E, 0xE09F, 0xDBB9, 0xE0A0, 0xE140, 0xDBBA, 0xE141,
- /* U+9148 */ 0xE142, 0xD3CF, 0xF4FA, 0xC7F5, 0xD7C3, 0xC5E4, 0xF4FC, 0xF4FD,
- /* U+9150 */ 0xF4FB, 0xE143, 0xBEC6, 0xE144, 0xE145, 0xE146, 0xE147, 0xD0EF,
- /* U+9158 */ 0xE148, 0xE149, 0xB7D3, 0xE14A, 0xE14B, 0xD4CD, 0xCCAA, 0xE14C,
- /* U+9160 */ 0xE14D, 0xF5A2, 0xF5A1, 0xBAA8, 0xF4FE, 0xCBD6, 0xE14E, 0xE14F,
- /* U+9168 */ 0xE150, 0xF5A4, 0xC0D2, 0xE151, 0xB3EA, 0xE152, 0xCDAA, 0xF5A5,
- /* U+9170 */ 0xF5A3, 0xBDB4, 0xF5A8, 0xE153, 0xF5A9, 0xBDCD, 0xC3B8, 0xBFE1,
- /* U+9178 */ 0xCBE1, 0xF5AA, 0xE154, 0xE155, 0xE156, 0xF5A6, 0xF5A7, 0xC4F0,
- /* U+9180 */ 0xE157, 0xE158, 0xE159, 0xE15A, 0xE15B, 0xF5AC, 0xE15C, 0xB4BC,
- /* U+9188 */ 0xE15D, 0xD7ED, 0xE15E, 0xB4D7, 0xF5AB, 0xF5AE, 0xE15F, 0xE160,
- /* U+9190 */ 0xF5AD, 0xF5AF, 0xD0D1, 0xE161, 0xE162, 0xE163, 0xE164, 0xE165,
- /* U+9198 */ 0xE166, 0xE167, 0xC3D1, 0xC8A9, 0xE168, 0xE169, 0xE16A, 0xE16B,
- /* U+91A0 */ 0xE16C, 0xE16D, 0xF5B0, 0xF5B1, 0xE16E, 0xE16F, 0xE170, 0xE171,
- /* U+91A8 */ 0xE172, 0xE173, 0xF5B2, 0xE174, 0xE175, 0xF5B3, 0xF5B4, 0xF5B5,
- /* U+91B0 */ 0xE176, 0xE177, 0xE178, 0xE179, 0xF5B7, 0xF5B6, 0xE17A, 0xE17B,
- /* U+91B8 */ 0xE17C, 0xE17D, 0xF5B8, 0xE17E, 0xE180, 0xE181, 0xE182, 0xE183,
- /* U+91C0 */ 0xE184, 0xE185, 0xE186, 0xE187, 0xE188, 0xE189, 0xE18A, 0xB2C9,
- /* U+91C8 */ 0xE18B, 0xD3D4, 0xCACD, 0xE18C, 0xC0EF, 0xD6D8, 0xD2B0, 0xC1BF,
- /* U+91D0 */ 0xE18D, 0xBDF0, 0xE18E, 0xE18F, 0xE190, 0xE191, 0xE192, 0xE193,
- /* U+91D8 */ 0xE194, 0xE195, 0xE196, 0xE197, 0xB8AA, 0xE198, 0xE199, 0xE19A,
- /* U+91E0 */ 0xE19B, 0xE19C, 0xE19D, 0xE19E, 0xE19F, 0xE1A0, 0xE240, 0xE241,
- /* U+91E8 */ 0xE242, 0xE243, 0xE244, 0xE245, 0xE246, 0xE247, 0xE248, 0xE249,
- /* U+91F0 */ 0xE24A, 0xE24B, 0xE24C, 0xE24D, 0xE24E, 0xE24F, 0xE250, 0xE251,
- /* U+91F8 */ 0xE252, 0xE253, 0xE254, 0xE255, 0xE256, 0xE257, 0xE258, 0xE259,
- /* U+9200 */ 0xE25A, 0xE25B, 0xE25C, 0xE25D, 0xE25E, 0xE25F, 0xE260, 0xE261,
- /* U+9208 */ 0xE262, 0xE263, 0xE264, 0xE265, 0xE266, 0xE267, 0xE268, 0xE269,
- /* U+9210 */ 0xE26A, 0xE26B, 0xE26C, 0xE26D, 0xE26E, 0xE26F, 0xE270, 0xE271,
- /* U+9218 */ 0xE272, 0xE273, 0xE274, 0xE275, 0xE276, 0xE277, 0xE278, 0xE279,
- /* U+9220 */ 0xE27A, 0xE27B, 0xE27C, 0xE27D, 0xE27E, 0xE280, 0xE281, 0xE282,
- /* U+9228 */ 0xE283, 0xE284, 0xE285, 0xE286, 0xE287, 0xE288, 0xE289, 0xE28A,
- /* U+9230 */ 0xE28B, 0xE28C, 0xE28D, 0xE28E, 0xE28F, 0xE290, 0xE291, 0xE292,
- /* U+9238 */ 0xE293, 0xE294, 0xE295, 0xE296, 0xE297, 0xE298, 0xE299, 0xE29A,
- /* U+9240 */ 0xE29B, 0xE29C, 0xE29D, 0xE29E, 0xE29F, 0xE2A0, 0xE340, 0xE341,
- /* U+9248 */ 0xE342, 0xE343, 0xE344, 0xE345, 0xE346, 0xE347, 0xE348, 0xE349,
- /* U+9250 */ 0xE34A, 0xE34B, 0xE34C, 0xE34D, 0xE34E, 0xE34F, 0xE350, 0xE351,
- /* U+9258 */ 0xE352, 0xE353, 0xE354, 0xE355, 0xE356, 0xE357, 0xE358, 0xE359,
- /* U+9260 */ 0xE35A, 0xE35B, 0xE35C, 0xE35D, 0xE35E, 0xE35F, 0xE360, 0xE361,
- /* U+9268 */ 0xE362, 0xE363, 0xE364, 0xE365, 0xE366, 0xE367, 0xE368, 0xE369,
- /* U+9270 */ 0xE36A, 0xE36B, 0xE36C, 0xE36D, 0xBCF8, 0xE36E, 0xE36F, 0xE370,
- /* U+9278 */ 0xE371, 0xE372, 0xE373, 0xE374, 0xE375, 0xE376, 0xE377, 0xE378,
- /* U+9280 */ 0xE379, 0xE37A, 0xE37B, 0xE37C, 0xE37D, 0xE37E, 0xE380, 0xE381,
- /* U+9288 */ 0xE382, 0xE383, 0xE384, 0xE385, 0xE386, 0xE387, 0xF6C6, 0xE388,
- /* U+9290 */ 0xE389, 0xE38A, 0xE38B, 0xE38C, 0xE38D, 0xE38E, 0xE38F, 0xE390,
- /* U+9298 */ 0xE391, 0xE392, 0xE393, 0xE394, 0xE395, 0xE396, 0xE397, 0xE398,
- /* U+92A0 */ 0xE399, 0xE39A, 0xE39B, 0xE39C, 0xE39D, 0xE39E, 0xE39F, 0xE3A0,
- /* U+92A8 */ 0xE440, 0xE441, 0xE442, 0xE443, 0xE444, 0xE445, 0xF6C7, 0xE446,
- /* U+92B0 */ 0xE447, 0xE448, 0xE449, 0xE44A, 0xE44B, 0xE44C, 0xE44D, 0xE44E,
- /* U+92B8 */ 0xE44F, 0xE450, 0xE451, 0xE452, 0xE453, 0xE454, 0xE455, 0xE456,
- /* U+92C0 */ 0xE457, 0xE458, 0xE459, 0xE45A, 0xE45B, 0xE45C, 0xE45D, 0xE45E,
- /* U+92C8 */ 0xF6C8, 0xE45F, 0xE460, 0xE461, 0xE462, 0xE463, 0xE464, 0xE465,
- /* U+92D0 */ 0xE466, 0xE467, 0xE468, 0xE469, 0xE46A, 0xE46B, 0xE46C, 0xE46D,
- /* U+92D8 */ 0xE46E, 0xE46F, 0xE470, 0xE471, 0xE472, 0xE473, 0xE474, 0xE475,
- /* U+92E0 */ 0xE476, 0xE477, 0xE478, 0xE479, 0xE47A, 0xE47B, 0xE47C, 0xE47D,
- /* U+92E8 */ 0xE47E, 0xE480, 0xE481, 0xE482, 0xE483, 0xE484, 0xE485, 0xE486,
- /* U+92F0 */ 0xE487, 0xE488, 0xE489, 0xE48A, 0xE48B, 0xE48C, 0xE48D, 0xE48E,
- /* U+92F8 */ 0xE48F, 0xE490, 0xE491, 0xE492, 0xE493, 0xE494, 0xE495, 0xE496,
- /* U+9300 */ 0xE497, 0xE498, 0xE499, 0xE49A, 0xE49B, 0xE49C, 0xE49D, 0xE49E,
- /* U+9308 */ 0xE49F, 0xE4A0, 0xE540, 0xE541, 0xE542, 0xE543, 0xE544, 0xE545,
- /* U+9310 */ 0xE546, 0xE547, 0xE548, 0xE549, 0xE54A, 0xE54B, 0xE54C, 0xE54D,
- /* U+9318 */ 0xE54E, 0xE54F, 0xE550, 0xE551, 0xE552, 0xE553, 0xE554, 0xE555,
- /* U+9320 */ 0xE556, 0xE557, 0xE558, 0xE559, 0xE55A, 0xE55B, 0xE55C, 0xE55D,
- /* U+9328 */ 0xE55E, 0xE55F, 0xE560, 0xE561, 0xE562, 0xE563, 0xE564, 0xE565,
- /* U+9330 */ 0xE566, 0xE567, 0xE568, 0xE569, 0xE56A, 0xE56B, 0xE56C, 0xE56D,
- /* U+9338 */ 0xE56E, 0xE56F, 0xE570, 0xE571, 0xE572, 0xE573, 0xF6C9, 0xE574,
- /* U+9340 */ 0xE575, 0xE576, 0xE577, 0xE578, 0xE579, 0xE57A, 0xE57B, 0xE57C,
- /* U+9348 */ 0xE57D, 0xE57E, 0xE580, 0xE581, 0xE582, 0xE583, 0xE584, 0xE585,
- /* U+9350 */ 0xE586, 0xE587, 0xE588, 0xE589, 0xE58A, 0xE58B, 0xE58C, 0xE58D,
- /* U+9358 */ 0xE58E, 0xE58F, 0xE590, 0xE591, 0xE592, 0xE593, 0xE594, 0xE595,
- /* U+9360 */ 0xE596, 0xE597, 0xE598, 0xE599, 0xE59A, 0xE59B, 0xE59C, 0xE59D,
- /* U+9368 */ 0xE59E, 0xE59F, 0xF6CA, 0xE5A0, 0xE640, 0xE641, 0xE642, 0xE643,
- /* U+9370 */ 0xE644, 0xE645, 0xE646, 0xE647, 0xE648, 0xE649, 0xE64A, 0xE64B,
- /* U+9378 */ 0xE64C, 0xE64D, 0xE64E, 0xE64F, 0xE650, 0xE651, 0xE652, 0xE653,
- /* U+9380 */ 0xE654, 0xE655, 0xE656, 0xE657, 0xE658, 0xE659, 0xE65A, 0xE65B,
- /* U+9388 */ 0xE65C, 0xE65D, 0xE65E, 0xE65F, 0xE660, 0xE661, 0xE662, 0xF6CC,
- /* U+9390 */ 0xE663, 0xE664, 0xE665, 0xE666, 0xE667, 0xE668, 0xE669, 0xE66A,
- /* U+9398 */ 0xE66B, 0xE66C, 0xE66D, 0xE66E, 0xE66F, 0xE670, 0xE671, 0xE672,
- /* U+93A0 */ 0xE673, 0xE674, 0xE675, 0xE676, 0xE677, 0xE678, 0xE679, 0xE67A,
- /* U+93A8 */ 0xE67B, 0xE67C, 0xE67D, 0xE67E, 0xE680, 0xE681, 0xE682, 0xE683,
- /* U+93B0 */ 0xE684, 0xE685, 0xE686, 0xE687, 0xE688, 0xE689, 0xE68A, 0xE68B,
- /* U+93B8 */ 0xE68C, 0xE68D, 0xE68E, 0xE68F, 0xE690, 0xE691, 0xE692, 0xE693,
- /* U+93C0 */ 0xE694, 0xE695, 0xE696, 0xE697, 0xE698, 0xE699, 0xE69A, 0xE69B,
- /* U+93C8 */ 0xE69C, 0xE69D, 0xF6CB, 0xE69E, 0xE69F, 0xE6A0, 0xE740, 0xE741,
- /* U+93D0 */ 0xE742, 0xE743, 0xE744, 0xE745, 0xE746, 0xE747, 0xF7E9, 0xE748,
- /* U+93D8 */ 0xE749, 0xE74A, 0xE74B, 0xE74C, 0xE74D, 0xE74E, 0xE74F, 0xE750,
- /* U+93E0 */ 0xE751, 0xE752, 0xE753, 0xE754, 0xE755, 0xE756, 0xE757, 0xE758,
- /* U+93E8 */ 0xE759, 0xE75A, 0xE75B, 0xE75C, 0xE75D, 0xE75E, 0xE75F, 0xE760,
- /* U+93F0 */ 0xE761, 0xE762, 0xE763, 0xE764, 0xE765, 0xE766, 0xE767, 0xE768,
- /* U+93F8 */ 0xE769, 0xE76A, 0xE76B, 0xE76C, 0xE76D, 0xE76E, 0xE76F, 0xE770,
- /* U+9400 */ 0xE771, 0xE772, 0xE773, 0xE774, 0xE775, 0xE776, 0xE777, 0xE778,
- /* U+9408 */ 0xE779, 0xE77A, 0xE77B, 0xE77C, 0xE77D, 0xE77E, 0xE780, 0xE781,
- /* U+9410 */ 0xE782, 0xE783, 0xE784, 0xE785, 0xE786, 0xE787, 0xE788, 0xE789,
- /* U+9418 */ 0xE78A, 0xE78B, 0xE78C, 0xE78D, 0xE78E, 0xE78F, 0xE790, 0xE791,
- /* U+9420 */ 0xE792, 0xE793, 0xE794, 0xE795, 0xE796, 0xE797, 0xE798, 0xE799,
- /* U+9428 */ 0xE79A, 0xE79B, 0xE79C, 0xE79D, 0xE79E, 0xE79F, 0xE7A0, 0xE840,
- /* U+9430 */ 0xE841, 0xE842, 0xE843, 0xE844, 0xE845, 0xE846, 0xE847, 0xE848,
- /* U+9438 */ 0xE849, 0xE84A, 0xE84B, 0xE84C, 0xE84D, 0xE84E, 0xF6CD, 0xE84F,
- /* U+9440 */ 0xE850, 0xE851, 0xE852, 0xE853, 0xE854, 0xE855, 0xE856, 0xE857,
- /* U+9448 */ 0xE858, 0xE859, 0xE85A, 0xE85B, 0xE85C, 0xE85D, 0xE85E, 0xE85F,
- /* U+9450 */ 0xE860, 0xE861, 0xE862, 0xE863, 0xE864, 0xE865, 0xE866, 0xE867,
- /* U+9458 */ 0xE868, 0xE869, 0xE86A, 0xE86B, 0xE86C, 0xE86D, 0xE86E, 0xE86F,
- /* U+9460 */ 0xE870, 0xE871, 0xE872, 0xE873, 0xE874, 0xE875, 0xE876, 0xE877,
- /* U+9468 */ 0xE878, 0xE879, 0xE87A, 0xF6CE, 0xE87B, 0xE87C, 0xE87D, 0xE87E,
- /* U+9470 */ 0xE880, 0xE881, 0xE882, 0xE883, 0xE884, 0xE885, 0xE886, 0xE887,
- /* U+9478 */ 0xE888, 0xE889, 0xE88A, 0xE88B, 0xE88C, 0xE88D, 0xE88E, 0xE88F,
- /* U+9480 */ 0xE890, 0xE891, 0xE892, 0xE893, 0xE894, 0xEEC4, 0xEEC5, 0xEEC6,
- /* U+9488 */ 0xD5EB, 0xB6A4, 0xEEC8, 0xEEC7, 0xEEC9, 0xEECA, 0xC7A5, 0xEECB,
- /* U+9490 */ 0xEECC, 0xE895, 0xB7B0, 0xB5F6, 0xEECD, 0xEECF, 0xE896, 0xEECE,
- /* U+9498 */ 0xE897, 0xB8C6, 0xEED0, 0xEED1, 0xEED2, 0xB6DB, 0xB3AE, 0xD6D3,
- /* U+94A0 */ 0xC4C6, 0xB1B5, 0xB8D6, 0xEED3, 0xEED4, 0xD4BF, 0xC7D5, 0xBEFB,
- /* U+94A8 */ 0xCED9, 0xB9B3, 0xEED6, 0xEED5, 0xEED8, 0xEED7, 0xC5A5, 0xEED9,
- /* U+94B0 */ 0xEEDA, 0xC7AE, 0xEEDB, 0xC7AF, 0xEEDC, 0xB2A7, 0xEEDD, 0xEEDE,
- /* U+94B8 */ 0xEEDF, 0xEEE0, 0xEEE1, 0xD7EA, 0xEEE2, 0xEEE3, 0xBCD8, 0xEEE4,
- /* U+94C0 */ 0xD3CB, 0xCCFA, 0xB2AC, 0xC1E5, 0xEEE5, 0xC7A6, 0xC3AD, 0xE898,
- /* U+94C8 */ 0xEEE6, 0xEEE7, 0xEEE8, 0xEEE9, 0xEEEA, 0xEEEB, 0xEEEC, 0xE899,
- /* U+94D0 */ 0xEEED, 0xEEEE, 0xEEEF, 0xE89A, 0xE89B, 0xEEF0, 0xEEF1, 0xEEF2,
- /* U+94D8 */ 0xEEF4, 0xEEF3, 0xE89C, 0xEEF5, 0xCDAD, 0xC2C1, 0xEEF6, 0xEEF7,
- /* U+94E0 */ 0xEEF8, 0xD5A1, 0xEEF9, 0xCFB3, 0xEEFA, 0xEEFB, 0xE89D, 0xEEFC,
- /* U+94E8 */ 0xEEFD, 0xEFA1, 0xEEFE, 0xEFA2, 0xB8F5, 0xC3FA, 0xEFA3, 0xEFA4,
- /* U+94F0 */ 0xBDC2, 0xD2BF, 0xB2F9, 0xEFA5, 0xEFA6, 0xEFA7, 0xD2F8, 0xEFA8,
- /* U+94F8 */ 0xD6FD, 0xEFA9, 0xC6CC, 0xE89E, 0xEFAA, 0xEFAB, 0xC1B4, 0xEFAC,
- /* U+9500 */ 0xCFFA, 0xCBF8, 0xEFAE, 0xEFAD, 0xB3FA, 0xB9F8, 0xEFAF, 0xEFB0,
- /* U+9508 */ 0xD0E2, 0xEFB1, 0xEFB2, 0xB7E6, 0xD0BF, 0xEFB3, 0xEFB4, 0xEFB5,
- /* U+9510 */ 0xC8F1, 0xCCE0, 0xEFB6, 0xEFB7, 0xEFB8, 0xEFB9, 0xEFBA, 0xD5E0,
- /* U+9518 */ 0xEFBB, 0xB4ED, 0xC3AA, 0xEFBC, 0xE89F, 0xEFBD, 0xEFBE, 0xEFBF,
- /* U+9520 */ 0xE8A0, 0xCEFD, 0xEFC0, 0xC2E0, 0xB4B8, 0xD7B6, 0xBDF5, 0xE940,
- /* U+9528 */ 0xCFC7, 0xEFC3, 0xEFC1, 0xEFC2, 0xEFC4, 0xB6A7, 0xBCFC, 0xBEE2,
- /* U+9530 */ 0xC3CC, 0xEFC5, 0xEFC6, 0xE941, 0xEFC7, 0xEFCF, 0xEFC8, 0xEFC9,
- /* U+9538 */ 0xEFCA, 0xC7C2, 0xEFF1, 0xB6CD, 0xEFCB, 0xE942, 0xEFCC, 0xEFCD,
- /* U+9540 */ 0xB6C6, 0xC3BE, 0xEFCE, 0xE943, 0xEFD0, 0xEFD1, 0xEFD2, 0xD5F2,
- /* U+9548 */ 0xE944, 0xEFD3, 0xC4F7, 0xE945, 0xEFD4, 0xC4F8, 0xEFD5, 0xEFD6,
- /* U+9550 */ 0xB8E4, 0xB0F7, 0xEFD7, 0xEFD8, 0xEFD9, 0xE946, 0xEFDA, 0xEFDB,
- /* U+9558 */ 0xEFDC, 0xEFDD, 0xE947, 0xEFDE, 0xBEB5, 0xEFE1, 0xEFDF, 0xEFE0,
- /* U+9560 */ 0xE948, 0xEFE2, 0xEFE3, 0xC1CD, 0xEFE4, 0xEFE5, 0xEFE6, 0xEFE7,
- /* U+9568 */ 0xEFE8, 0xEFE9, 0xEFEA, 0xEFEB, 0xEFEC, 0xC0D8, 0xE949, 0xEFED,
- /* U+9570 */ 0xC1AD, 0xEFEE, 0xEFEF, 0xEFF0, 0xE94A, 0xE94B, 0xCFE2, 0xE94C,
- /* U+9578 */ 0xE94D, 0xE94E, 0xE94F, 0xE950, 0xE951, 0xE952, 0xE953, 0xB3A4,
- /* U+9580 */ 0xE954, 0xE955, 0xE956, 0xE957, 0xE958, 0xE959, 0xE95A, 0xE95B,
- /* U+9588 */ 0xE95C, 0xE95D, 0xE95E, 0xE95F, 0xE960, 0xE961, 0xE962, 0xE963,
- /* U+9590 */ 0xE964, 0xE965, 0xE966, 0xE967, 0xE968, 0xE969, 0xE96A, 0xE96B,
- /* U+9598 */ 0xE96C, 0xE96D, 0xE96E, 0xE96F, 0xE970, 0xE971, 0xE972, 0xE973,
- /* U+95A0 */ 0xE974, 0xE975, 0xE976, 0xE977, 0xE978, 0xE979, 0xE97A, 0xE97B,
- /* U+95A8 */ 0xE97C, 0xE97D, 0xE97E, 0xE980, 0xE981, 0xE982, 0xE983, 0xE984,
- /* U+95B0 */ 0xE985, 0xE986, 0xE987, 0xE988, 0xE989, 0xE98A, 0xE98B, 0xE98C,
- /* U+95B8 */ 0xE98D, 0xE98E, 0xE98F, 0xE990, 0xE991, 0xE992, 0xE993, 0xE994,
- /* U+95C0 */ 0xE995, 0xE996, 0xE997, 0xE998, 0xE999, 0xE99A, 0xE99B, 0xE99C,
- /* U+95C8 */ 0xE99D, 0xE99E, 0xE99F, 0xE9A0, 0xEA40, 0xEA41, 0xEA42, 0xEA43,
- /* U+95D0 */ 0xEA44, 0xEA45, 0xEA46, 0xEA47, 0xEA48, 0xEA49, 0xEA4A, 0xEA4B,
- /* U+95D8 */ 0xEA4C, 0xEA4D, 0xEA4E, 0xEA4F, 0xEA50, 0xEA51, 0xEA52, 0xEA53,
- /* U+95E0 */ 0xEA54, 0xEA55, 0xEA56, 0xEA57, 0xEA58, 0xEA59, 0xEA5A, 0xEA5B,
- /* U+95E8 */ 0xC3C5, 0xE3C5, 0xC9C1, 0xE3C6, 0xEA5C, 0xB1D5, 0xCECA, 0xB4B3,
- /* U+95F0 */ 0xC8F2, 0xE3C7, 0xCFD0, 0xE3C8, 0xBCE4, 0xE3C9, 0xE3CA, 0xC3C6,
- /* U+95F8 */ 0xD5A2, 0xC4D6, 0xB9EB, 0xCEC5, 0xE3CB, 0xC3F6, 0xE3CC, 0xEA5D,
- /* U+9600 */ 0xB7A7, 0xB8F3, 0xBAD2, 0xE3CD, 0xE3CE, 0xD4C4, 0xE3CF, 0xEA5E,
- /* U+9608 */ 0xE3D0, 0xD1CB, 0xE3D1, 0xE3D2, 0xE3D3, 0xE3D4, 0xD1D6, 0xE3D5,
- /* U+9610 */ 0xB2FB, 0xC0BB, 0xE3D6, 0xEA5F, 0xC0AB, 0xE3D7, 0xE3D8, 0xE3D9,
- /* U+9618 */ 0xEA60, 0xE3DA, 0xE3DB, 0xEA61, 0xB8B7, 0xDAE2, 0xEA62, 0xB6D3,
- /* U+9620 */ 0xEA63, 0xDAE4, 0xDAE3, 0xEA64, 0xEA65, 0xEA66, 0xEA67, 0xEA68,
- /* U+9628 */ 0xEA69, 0xEA6A, 0xDAE6, 0xEA6B, 0xEA6C, 0xEA6D, 0xC8EE, 0xEA6E,
- /* U+9630 */ 0xEA6F, 0xDAE5, 0xB7C0, 0xD1F4, 0xD2F5, 0xD5F3, 0xBDD7, 0xEA70,
- /* U+9638 */ 0xEA71, 0xEA72, 0xEA73, 0xD7E8, 0xDAE8, 0xDAE7, 0xEA74, 0xB0A2,
- /* U+9640 */ 0xCDD3, 0xEA75, 0xDAE9, 0xEA76, 0xB8BD, 0xBCCA, 0xC2BD, 0xC2A4,
- /* U+9648 */ 0xB3C2, 0xDAEA, 0xEA77, 0xC2AA, 0xC4B0, 0xBDB5, 0xEA78, 0xEA79,
- /* U+9650 */ 0xCFDE, 0xEA7A, 0xEA7B, 0xEA7C, 0xDAEB, 0xC9C2, 0xEA7D, 0xEA7E,
- /* U+9658 */ 0xEA80, 0xEA81, 0xEA82, 0xB1DD, 0xEA83, 0xEA84, 0xEA85, 0xDAEC,
- /* U+9660 */ 0xEA86, 0xB6B8, 0xD4BA, 0xEA87, 0xB3FD, 0xEA88, 0xEA89, 0xDAED,
- /* U+9668 */ 0xD4C9, 0xCFD5, 0xC5E3, 0xEA8A, 0xDAEE, 0xEA8B, 0xEA8C, 0xEA8D,
- /* U+9670 */ 0xEA8E, 0xEA8F, 0xDAEF, 0xEA90, 0xDAF0, 0xC1EA, 0xCCD5, 0xCFDD,
- /* U+9678 */ 0xEA91, 0xEA92, 0xEA93, 0xEA94, 0xEA95, 0xEA96, 0xEA97, 0xEA98,
- /* U+9680 */ 0xEA99, 0xEA9A, 0xEA9B, 0xEA9C, 0xEA9D, 0xD3E7, 0xC2A1, 0xEA9E,
- /* U+9688 */ 0xDAF1, 0xEA9F, 0xEAA0, 0xCBE5, 0xEB40, 0xDAF2, 0xEB41, 0xCBE6,
- /* U+9690 */ 0xD2FE, 0xEB42, 0xEB43, 0xEB44, 0xB8F4, 0xEB45, 0xEB46, 0xDAF3,
- /* U+9698 */ 0xB0AF, 0xCFB6, 0xEB47, 0xEB48, 0xD5CF, 0xEB49, 0xEB4A, 0xEB4B,
- /* U+96A0 */ 0xEB4C, 0xEB4D, 0xEB4E, 0xEB4F, 0xEB50, 0xEB51, 0xEB52, 0xCBED,
- /* U+96A8 */ 0xEB53, 0xEB54, 0xEB55, 0xEB56, 0xEB57, 0xEB58, 0xEB59, 0xEB5A,
- /* U+96B0 */ 0xDAF4, 0xEB5B, 0xEB5C, 0xE3C4, 0xEB5D, 0xEB5E, 0xC1A5, 0xEB5F,
- /* U+96B8 */ 0xEB60, 0xF6BF, 0xEB61, 0xEB62, 0xF6C0, 0xF6C1, 0xC4D1, 0xEB63,
- /* U+96C0 */ 0xC8B8, 0xD1E3, 0xEB64, 0xEB65, 0xD0DB, 0xD1C5, 0xBCAF, 0xB9CD,
- /* U+96C8 */ 0xEB66, 0xEFF4, 0xEB67, 0xEB68, 0xB4C6, 0xD3BA, 0xF6C2, 0xB3FB,
- /* U+96D0 */ 0xEB69, 0xEB6A, 0xF6C3, 0xEB6B, 0xEB6C, 0xB5F1, 0xEB6D, 0xEB6E,
- /* U+96D8 */ 0xEB6F, 0xEB70, 0xEB71, 0xEB72, 0xEB73, 0xEB74, 0xEB75, 0xEB76,
- /* U+96E0 */ 0xF6C5, 0xEB77, 0xEB78, 0xEB79, 0xEB7A, 0xEB7B, 0xEB7C, 0xEB7D,
- /* U+96E8 */ 0xD3EA, 0xF6A7, 0xD1A9, 0xEB7E, 0xEB80, 0xEB81, 0xEB82, 0xF6A9,
- /* U+96F0 */ 0xEB83, 0xEB84, 0xEB85, 0xF6A8, 0xEB86, 0xEB87, 0xC1E3, 0xC0D7,
- /* U+96F8 */ 0xEB88, 0xB1A2, 0xEB89, 0xEB8A, 0xEB8B, 0xEB8C, 0xCEED, 0xEB8D,
- /* U+9700 */ 0xD0E8, 0xF6AB, 0xEB8E, 0xEB8F, 0xCFF6, 0xEB90, 0xF6AA, 0xD5F0,
- /* U+9708 */ 0xF6AC, 0xC3B9, 0xEB91, 0xEB92, 0xEB93, 0xBBF4, 0xF6AE, 0xF6AD,
- /* U+9710 */ 0xEB94, 0xEB95, 0xEB96, 0xC4DE, 0xEB97, 0xEB98, 0xC1D8, 0xEB99,
- /* U+9718 */ 0xEB9A, 0xEB9B, 0xEB9C, 0xEB9D, 0xCBAA, 0xEB9E, 0xCFBC, 0xEB9F,
- /* U+9720 */ 0xEBA0, 0xEC40, 0xEC41, 0xEC42, 0xEC43, 0xEC44, 0xEC45, 0xEC46,
- /* U+9728 */ 0xEC47, 0xEC48, 0xF6AF, 0xEC49, 0xEC4A, 0xF6B0, 0xEC4B, 0xEC4C,
- /* U+9730 */ 0xF6B1, 0xEC4D, 0xC2B6, 0xEC4E, 0xEC4F, 0xEC50, 0xEC51, 0xEC52,
- /* U+9738 */ 0xB0D4, 0xC5F9, 0xEC53, 0xEC54, 0xEC55, 0xEC56, 0xF6B2, 0xEC57,
- /* U+9740 */ 0xEC58, 0xEC59, 0xEC5A, 0xEC5B, 0xEC5C, 0xEC5D, 0xEC5E, 0xEC5F,
- /* U+9748 */ 0xEC60, 0xEC61, 0xEC62, 0xEC63, 0xEC64, 0xEC65, 0xEC66, 0xEC67,
- /* U+9750 */ 0xEC68, 0xEC69, 0xC7E0, 0xF6A6, 0xEC6A, 0xEC6B, 0xBEB8, 0xEC6C,
- /* U+9758 */ 0xEC6D, 0xBEB2, 0xEC6E, 0xB5E5, 0xEC6F, 0xEC70, 0xB7C7, 0xEC71,
- /* U+9760 */ 0xBFBF, 0xC3D2, 0xC3E6, 0xEC72, 0xEC73, 0xD8CC, 0xEC74, 0xEC75,
- /* U+9768 */ 0xEC76, 0xB8EF, 0xEC77, 0xEC78, 0xEC79, 0xEC7A, 0xEC7B, 0xEC7C,
- /* U+9770 */ 0xEC7D, 0xEC7E, 0xEC80, 0xBDF9, 0xD1A5, 0xEC81, 0xB0D0, 0xEC82,
- /* U+9778 */ 0xEC83, 0xEC84, 0xEC85, 0xEC86, 0xF7B0, 0xEC87, 0xEC88, 0xEC89,
- /* U+9780 */ 0xEC8A, 0xEC8B, 0xEC8C, 0xEC8D, 0xEC8E, 0xF7B1, 0xEC8F, 0xEC90,
- /* U+9788 */ 0xEC91, 0xEC92, 0xEC93, 0xD0AC, 0xEC94, 0xB0B0, 0xEC95, 0xEC96,
- /* U+9790 */ 0xEC97, 0xF7B2, 0xF7B3, 0xEC98, 0xF7B4, 0xEC99, 0xEC9A, 0xEC9B,
- /* U+9798 */ 0xC7CA, 0xEC9C, 0xEC9D, 0xEC9E, 0xEC9F, 0xECA0, 0xED40, 0xED41,
- /* U+97A0 */ 0xBECF, 0xED42, 0xED43, 0xF7B7, 0xED44, 0xED45, 0xED46, 0xED47,
- /* U+97A8 */ 0xED48, 0xED49, 0xED4A, 0xF7B6, 0xED4B, 0xB1DE, 0xED4C, 0xF7B5,
- /* U+97B0 */ 0xED4D, 0xED4E, 0xF7B8, 0xED4F, 0xF7B9, 0xED50, 0xED51, 0xED52,
- /* U+97B8 */ 0xED53, 0xED54, 0xED55, 0xED56, 0xED57, 0xED58, 0xED59, 0xED5A,
- /* U+97C0 */ 0xED5B, 0xED5C, 0xED5D, 0xED5E, 0xED5F, 0xED60, 0xED61, 0xED62,
- /* U+97C8 */ 0xED63, 0xED64, 0xED65, 0xED66, 0xED67, 0xED68, 0xED69, 0xED6A,
- /* U+97D0 */ 0xED6B, 0xED6C, 0xED6D, 0xED6E, 0xED6F, 0xED70, 0xED71, 0xED72,
- /* U+97D8 */ 0xED73, 0xED74, 0xED75, 0xED76, 0xED77, 0xED78, 0xED79, 0xED7A,
- /* U+97E0 */ 0xED7B, 0xED7C, 0xED7D, 0xED7E, 0xED80, 0xED81, 0xCEA4, 0xC8CD,
- /* U+97E8 */ 0xED82, 0xBAAB, 0xE8B8, 0xE8B9, 0xE8BA, 0xBEC2, 0xED83, 0xED84,
- /* U+97F0 */ 0xED85, 0xED86, 0xED87, 0xD2F4, 0xED88, 0xD4CF, 0xC9D8, 0xED89,
- /* U+97F8 */ 0xED8A, 0xED8B, 0xED8C, 0xED8D, 0xED8E, 0xED8F, 0xED90, 0xED91,
- /* U+9800 */ 0xED92, 0xED93, 0xED94, 0xED95, 0xED96, 0xED97, 0xED98, 0xED99,
- /* U+9808 */ 0xED9A, 0xED9B, 0xED9C, 0xED9D, 0xED9E, 0xED9F, 0xEDA0, 0xEE40,
- /* U+9810 */ 0xEE41, 0xEE42, 0xEE43, 0xEE44, 0xEE45, 0xEE46, 0xEE47, 0xEE48,
- /* U+9818 */ 0xEE49, 0xEE4A, 0xEE4B, 0xEE4C, 0xEE4D, 0xEE4E, 0xEE4F, 0xEE50,
- /* U+9820 */ 0xEE51, 0xEE52, 0xEE53, 0xEE54, 0xEE55, 0xEE56, 0xEE57, 0xEE58,
- /* U+9828 */ 0xEE59, 0xEE5A, 0xEE5B, 0xEE5C, 0xEE5D, 0xEE5E, 0xEE5F, 0xEE60,
- /* U+9830 */ 0xEE61, 0xEE62, 0xEE63, 0xEE64, 0xEE65, 0xEE66, 0xEE67, 0xEE68,
- /* U+9838 */ 0xEE69, 0xEE6A, 0xEE6B, 0xEE6C, 0xEE6D, 0xEE6E, 0xEE6F, 0xEE70,
- /* U+9840 */ 0xEE71, 0xEE72, 0xEE73, 0xEE74, 0xEE75, 0xEE76, 0xEE77, 0xEE78,
- /* U+9848 */ 0xEE79, 0xEE7A, 0xEE7B, 0xEE7C, 0xEE7D, 0xEE7E, 0xEE80, 0xEE81,
- /* U+9850 */ 0xEE82, 0xEE83, 0xEE84, 0xEE85, 0xEE86, 0xEE87, 0xEE88, 0xEE89,
- /* U+9858 */ 0xEE8A, 0xEE8B, 0xEE8C, 0xEE8D, 0xEE8E, 0xEE8F, 0xEE90, 0xEE91,
- /* U+9860 */ 0xEE92, 0xEE93, 0xEE94, 0xEE95, 0xEE96, 0xEE97, 0xEE98, 0xEE99,
- /* U+9868 */ 0xEE9A, 0xEE9B, 0xEE9C, 0xEE9D, 0xEE9E, 0xEE9F, 0xEEA0, 0xEF40,
- /* U+9870 */ 0xEF41, 0xEF42, 0xEF43, 0xEF44, 0xEF45, 0xD2B3, 0xB6A5, 0xC7EA,
- /* U+9878 */ 0xF1FC, 0xCFEE, 0xCBB3, 0xD0EB, 0xE7EF, 0xCDE7, 0xB9CB, 0xB6D9,
- /* U+9880 */ 0xF1FD, 0xB0E4, 0xCBCC, 0xF1FE, 0xD4A4, 0xC2AD, 0xC1EC, 0xC6C4,
- /* U+9888 */ 0xBEB1, 0xF2A1, 0xBCD5, 0xEF46, 0xF2A2, 0xF2A3, 0xEF47, 0xF2A4,
- /* U+9890 */ 0xD2C3, 0xC6B5, 0xEF48, 0xCDC7, 0xF2A5, 0xEF49, 0xD3B1, 0xBFC5,
- /* U+9898 */ 0xCCE2, 0xEF4A, 0xF2A6, 0xF2A7, 0xD1D5, 0xB6EE, 0xF2A8, 0xF2A9,
- /* U+98A0 */ 0xB5DF, 0xF2AA, 0xF2AB, 0xEF4B, 0xB2FC, 0xF2AC, 0xF2AD, 0xC8A7,
- /* U+98A8 */ 0xEF4C, 0xEF4D, 0xEF4E, 0xEF4F, 0xEF50, 0xEF51, 0xEF52, 0xEF53,
- /* U+98B0 */ 0xEF54, 0xEF55, 0xEF56, 0xEF57, 0xEF58, 0xEF59, 0xEF5A, 0xEF5B,
- /* U+98B8 */ 0xEF5C, 0xEF5D, 0xEF5E, 0xEF5F, 0xEF60, 0xEF61, 0xEF62, 0xEF63,
- /* U+98C0 */ 0xEF64, 0xEF65, 0xEF66, 0xEF67, 0xEF68, 0xEF69, 0xEF6A, 0xEF6B,
- /* U+98C8 */ 0xEF6C, 0xEF6D, 0xEF6E, 0xEF6F, 0xEF70, 0xEF71, 0xB7E7, 0xEF72,
- /* U+98D0 */ 0xEF73, 0xECA9, 0xECAA, 0xECAB, 0xEF74, 0xECAC, 0xEF75, 0xEF76,
- /* U+98D8 */ 0xC6AE, 0xECAD, 0xECAE, 0xEF77, 0xEF78, 0xEF79, 0xB7C9, 0xCAB3,
- /* U+98E0 */ 0xEF7A, 0xEF7B, 0xEF7C, 0xEF7D, 0xEF7E, 0xEF80, 0xEF81, 0xE2B8,
- /* U+98E8 */ 0xF7CF, 0xEF82, 0xEF83, 0xEF84, 0xEF85, 0xEF86, 0xEF87, 0xEF88,
- /* U+98F0 */ 0xEF89, 0xEF8A, 0xEF8B, 0xEF8C, 0xEF8D, 0xEF8E, 0xEF8F, 0xEF90,
- /* U+98F8 */ 0xEF91, 0xEF92, 0xEF93, 0xEF94, 0xEF95, 0xEF96, 0xEF97, 0xEF98,
- /* U+9900 */ 0xEF99, 0xEF9A, 0xEF9B, 0xEF9C, 0xEF9D, 0xEF9E, 0xEF9F, 0xEFA0,
- /* U+9908 */ 0xF040, 0xF041, 0xF042, 0xF043, 0xF044, 0xF7D0, 0xF045, 0xF046,
- /* U+9910 */ 0xB2CD, 0xF047, 0xF048, 0xF049, 0xF04A, 0xF04B, 0xF04C, 0xF04D,
- /* U+9918 */ 0xF04E, 0xF04F, 0xF050, 0xF051, 0xF052, 0xF053, 0xF054, 0xF055,
- /* U+9920 */ 0xF056, 0xF057, 0xF058, 0xF059, 0xF05A, 0xF05B, 0xF05C, 0xF05D,
- /* U+9928 */ 0xF05E, 0xF05F, 0xF060, 0xF061, 0xF062, 0xF063, 0xF7D1, 0xF064,
- /* U+9930 */ 0xF065, 0xF066, 0xF067, 0xF068, 0xF069, 0xF06A, 0xF06B, 0xF06C,
- /* U+9938 */ 0xF06D, 0xF06E, 0xF06F, 0xF070, 0xF071, 0xF072, 0xF073, 0xF074,
- /* U+9940 */ 0xF075, 0xF076, 0xF077, 0xF078, 0xF079, 0xF07A, 0xF07B, 0xF07C,
- /* U+9948 */ 0xF07D, 0xF07E, 0xF080, 0xF081, 0xF082, 0xF083, 0xF084, 0xF085,
- /* U+9950 */ 0xF086, 0xF087, 0xF088, 0xF089, 0xF7D3, 0xF7D2, 0xF08A, 0xF08B,
- /* U+9958 */ 0xF08C, 0xF08D, 0xF08E, 0xF08F, 0xF090, 0xF091, 0xF092, 0xF093,
- /* U+9960 */ 0xF094, 0xF095, 0xF096, 0xE2BB, 0xF097, 0xBCA2, 0xF098, 0xE2BC,
- /* U+9968 */ 0xE2BD, 0xE2BE, 0xE2BF, 0xE2C0, 0xE2C1, 0xB7B9, 0xD2FB, 0xBDA4,
- /* U+9970 */ 0xCACE, 0xB1A5, 0xCBC7, 0xF099, 0xE2C2, 0xB6FC, 0xC8C4, 0xE2C3,
- /* U+9978 */ 0xF09A, 0xF09B, 0xBDC8, 0xF09C, 0xB1FD, 0xE2C4, 0xF09D, 0xB6F6,
- /* U+9980 */ 0xE2C5, 0xC4D9, 0xF09E, 0xF09F, 0xE2C6, 0xCFDA, 0xB9DD, 0xE2C7,
- /* U+9988 */ 0xC0A1, 0xF0A0, 0xE2C8, 0xB2F6, 0xF140, 0xE2C9, 0xF141, 0xC1F3,
- /* U+9990 */ 0xE2CA, 0xE2CB, 0xC2F8, 0xE2CC, 0xE2CD, 0xE2CE, 0xCAD7, 0xD8B8,
- /* U+9998 */ 0xD9E5, 0xCFE3, 0xF142, 0xF143, 0xF144, 0xF145, 0xF146, 0xF147,
- /* U+99A0 */ 0xF148, 0xF149, 0xF14A, 0xF14B, 0xF14C, 0xF0A5, 0xF14D, 0xF14E,
- /* U+99A8 */ 0xDCB0, 0xF14F, 0xF150, 0xF151, 0xF152, 0xF153, 0xF154, 0xF155,
- /* U+99B0 */ 0xF156, 0xF157, 0xF158, 0xF159, 0xF15A, 0xF15B, 0xF15C, 0xF15D,
- /* U+99B8 */ 0xF15E, 0xF15F, 0xF160, 0xF161, 0xF162, 0xF163, 0xF164, 0xF165,
- /* U+99C0 */ 0xF166, 0xF167, 0xF168, 0xF169, 0xF16A, 0xF16B, 0xF16C, 0xF16D,
- /* U+99C8 */ 0xF16E, 0xF16F, 0xF170, 0xF171, 0xF172, 0xF173, 0xF174, 0xF175,
- /* U+99D0 */ 0xF176, 0xF177, 0xF178, 0xF179, 0xF17A, 0xF17B, 0xF17C, 0xF17D,
- /* U+99D8 */ 0xF17E, 0xF180, 0xF181, 0xF182, 0xF183, 0xF184, 0xF185, 0xF186,
- /* U+99E0 */ 0xF187, 0xF188, 0xF189, 0xF18A, 0xF18B, 0xF18C, 0xF18D, 0xF18E,
- /* U+99E8 */ 0xF18F, 0xF190, 0xF191, 0xF192, 0xF193, 0xF194, 0xF195, 0xF196,
- /* U+99F0 */ 0xF197, 0xF198, 0xF199, 0xF19A, 0xF19B, 0xF19C, 0xF19D, 0xF19E,
- /* U+99F8 */ 0xF19F, 0xF1A0, 0xF240, 0xF241, 0xF242, 0xF243, 0xF244, 0xF245,
- /* U+9A00 */ 0xF246, 0xF247, 0xF248, 0xF249, 0xF24A, 0xF24B, 0xF24C, 0xF24D,
- /* U+9A08 */ 0xF24E, 0xF24F, 0xF250, 0xF251, 0xF252, 0xF253, 0xF254, 0xF255,
- /* U+9A10 */ 0xF256, 0xF257, 0xF258, 0xF259, 0xF25A, 0xF25B, 0xF25C, 0xF25D,
- /* U+9A18 */ 0xF25E, 0xF25F, 0xF260, 0xF261, 0xF262, 0xF263, 0xF264, 0xF265,
- /* U+9A20 */ 0xF266, 0xF267, 0xF268, 0xF269, 0xF26A, 0xF26B, 0xF26C, 0xF26D,
- /* U+9A28 */ 0xF26E, 0xF26F, 0xF270, 0xF271, 0xF272, 0xF273, 0xF274, 0xF275,
- /* U+9A30 */ 0xF276, 0xF277, 0xF278, 0xF279, 0xF27A, 0xF27B, 0xF27C, 0xF27D,
- /* U+9A38 */ 0xF27E, 0xF280, 0xF281, 0xF282, 0xF283, 0xF284, 0xF285, 0xF286,
- /* U+9A40 */ 0xF287, 0xF288, 0xF289, 0xF28A, 0xF28B, 0xF28C, 0xF28D, 0xF28E,
- /* U+9A48 */ 0xF28F, 0xF290, 0xF291, 0xF292, 0xF293, 0xF294, 0xF295, 0xF296,
- /* U+9A50 */ 0xF297, 0xF298, 0xF299, 0xF29A, 0xF29B, 0xF29C, 0xF29D, 0xF29E,
- /* U+9A58 */ 0xF29F, 0xF2A0, 0xF340, 0xF341, 0xF342, 0xF343, 0xF344, 0xF345,
- /* U+9A60 */ 0xF346, 0xF347, 0xF348, 0xF349, 0xF34A, 0xF34B, 0xF34C, 0xF34D,
- /* U+9A68 */ 0xF34E, 0xF34F, 0xF350, 0xF351, 0xC2ED, 0xD4A6, 0xCDD4, 0xD1B1,
- /* U+9A70 */ 0xB3DB, 0xC7FD, 0xF352, 0xB2B5, 0xC2BF, 0xE6E0, 0xCABB, 0xE6E1,
- /* U+9A78 */ 0xE6E2, 0xBED4, 0xE6E3, 0xD7A4, 0xCDD5, 0xE6E5, 0xBCDD, 0xE6E4,
- /* U+9A80 */ 0xE6E6, 0xE6E7, 0xC2EE, 0xF353, 0xBDBE, 0xE6E8, 0xC2E6, 0xBAA7,
- /* U+9A88 */ 0xE6E9, 0xF354, 0xE6EA, 0xB3D2, 0xD1E9, 0xF355, 0xF356, 0xBFA5,
- /* U+9A90 */ 0xE6EB, 0xC6EF, 0xE6EC, 0xE6ED, 0xF357, 0xF358, 0xE6EE, 0xC6AD,
- /* U+9A98 */ 0xE6EF, 0xF359, 0xC9A7, 0xE6F0, 0xE6F1, 0xE6F2, 0xE5B9, 0xE6F3,
- /* U+9AA0 */ 0xE6F4, 0xC2E2, 0xE6F5, 0xE6F6, 0xD6E8, 0xE6F7, 0xF35A, 0xE6F8,
- /* U+9AA8 */ 0xB9C7, 0xF35B, 0xF35C, 0xF35D, 0xF35E, 0xF35F, 0xF360, 0xF361,
- /* U+9AB0 */ 0xF7BB, 0xF7BA, 0xF362, 0xF363, 0xF364, 0xF365, 0xF7BE, 0xF7BC,
- /* U+9AB8 */ 0xBAA1, 0xF366, 0xF7BF, 0xF367, 0xF7C0, 0xF368, 0xF369, 0xF36A,
- /* U+9AC0 */ 0xF7C2, 0xF7C1, 0xF7C4, 0xF36B, 0xF36C, 0xF7C3, 0xF36D, 0xF36E,
- /* U+9AC8 */ 0xF36F, 0xF370, 0xF371, 0xF7C5, 0xF7C6, 0xF372, 0xF373, 0xF374,
- /* U+9AD0 */ 0xF375, 0xF7C7, 0xF376, 0xCBE8, 0xF377, 0xF378, 0xF379, 0xF37A,
- /* U+9AD8 */ 0xB8DF, 0xF37B, 0xF37C, 0xF37D, 0xF37E, 0xF380, 0xF381, 0xF7D4,
- /* U+9AE0 */ 0xF382, 0xF7D5, 0xF383, 0xF384, 0xF385, 0xF386, 0xF7D6, 0xF387,
- /* U+9AE8 */ 0xF388, 0xF389, 0xF38A, 0xF7D8, 0xF38B, 0xF7DA, 0xF38C, 0xF7D7,
- /* U+9AF0 */ 0xF38D, 0xF38E, 0xF38F, 0xF390, 0xF391, 0xF392, 0xF393, 0xF394,
- /* U+9AF8 */ 0xF395, 0xF7DB, 0xF396, 0xF7D9, 0xF397, 0xF398, 0xF399, 0xF39A,
- /* U+9B00 */ 0xF39B, 0xF39C, 0xF39D, 0xD7D7, 0xF39E, 0xF39F, 0xF3A0, 0xF440,
- /* U+9B08 */ 0xF7DC, 0xF441, 0xF442, 0xF443, 0xF444, 0xF445, 0xF446, 0xF7DD,
- /* U+9B10 */ 0xF447, 0xF448, 0xF449, 0xF7DE, 0xF44A, 0xF44B, 0xF44C, 0xF44D,
- /* U+9B18 */ 0xF44E, 0xF44F, 0xF450, 0xF451, 0xF452, 0xF453, 0xF454, 0xF7DF,
- /* U+9B20 */ 0xF455, 0xF456, 0xF457, 0xF7E0, 0xF458, 0xF459, 0xF45A, 0xF45B,
- /* U+9B28 */ 0xF45C, 0xF45D, 0xF45E, 0xF45F, 0xF460, 0xF461, 0xF462, 0xDBCB,
- /* U+9B30 */ 0xF463, 0xF464, 0xD8AA, 0xF465, 0xF466, 0xF467, 0xF468, 0xF469,
- /* U+9B38 */ 0xF46A, 0xF46B, 0xF46C, 0xE5F7, 0xB9ED, 0xF46D, 0xF46E, 0xF46F,
- /* U+9B40 */ 0xF470, 0xBFFD, 0xBBEA, 0xF7C9, 0xC6C7, 0xF7C8, 0xF471, 0xF7CA,
- /* U+9B48 */ 0xF7CC, 0xF7CB, 0xF472, 0xF473, 0xF474, 0xF7CD, 0xF475, 0xCEBA,
- /* U+9B50 */ 0xF476, 0xF7CE, 0xF477, 0xF478, 0xC4A7, 0xF479, 0xF47A, 0xF47B,
- /* U+9B58 */ 0xF47C, 0xF47D, 0xF47E, 0xF480, 0xF481, 0xF482, 0xF483, 0xF484,
- /* U+9B60 */ 0xF485, 0xF486, 0xF487, 0xF488, 0xF489, 0xF48A, 0xF48B, 0xF48C,
- /* U+9B68 */ 0xF48D, 0xF48E, 0xF48F, 0xF490, 0xF491, 0xF492, 0xF493, 0xF494,
- /* U+9B70 */ 0xF495, 0xF496, 0xF497, 0xF498, 0xF499, 0xF49A, 0xF49B, 0xF49C,
- /* U+9B78 */ 0xF49D, 0xF49E, 0xF49F, 0xF4A0, 0xF540, 0xF541, 0xF542, 0xF543,
- /* U+9B80 */ 0xF544, 0xF545, 0xF546, 0xF547, 0xF548, 0xF549, 0xF54A, 0xF54B,
- /* U+9B88 */ 0xF54C, 0xF54D, 0xF54E, 0xF54F, 0xF550, 0xF551, 0xF552, 0xF553,
- /* U+9B90 */ 0xF554, 0xF555, 0xF556, 0xF557, 0xF558, 0xF559, 0xF55A, 0xF55B,
- /* U+9B98 */ 0xF55C, 0xF55D, 0xF55E, 0xF55F, 0xF560, 0xF561, 0xF562, 0xF563,
- /* U+9BA0 */ 0xF564, 0xF565, 0xF566, 0xF567, 0xF568, 0xF569, 0xF56A, 0xF56B,
- /* U+9BA8 */ 0xF56C, 0xF56D, 0xF56E, 0xF56F, 0xF570, 0xF571, 0xF572, 0xF573,
- /* U+9BB0 */ 0xF574, 0xF575, 0xF576, 0xF577, 0xF578, 0xF579, 0xF57A, 0xF57B,
- /* U+9BB8 */ 0xF57C, 0xF57D, 0xF57E, 0xF580, 0xF581, 0xF582, 0xF583, 0xF584,
- /* U+9BC0 */ 0xF585, 0xF586, 0xF587, 0xF588, 0xF589, 0xF58A, 0xF58B, 0xF58C,
- /* U+9BC8 */ 0xF58D, 0xF58E, 0xF58F, 0xF590, 0xF591, 0xF592, 0xF593, 0xF594,
- /* U+9BD0 */ 0xF595, 0xF596, 0xF597, 0xF598, 0xF599, 0xF59A, 0xF59B, 0xF59C,
- /* U+9BD8 */ 0xF59D, 0xF59E, 0xF59F, 0xF5A0, 0xF640, 0xF641, 0xF642, 0xF643,
- /* U+9BE0 */ 0xF644, 0xF645, 0xF646, 0xF647, 0xF648, 0xF649, 0xF64A, 0xF64B,
- /* U+9BE8 */ 0xF64C, 0xF64D, 0xF64E, 0xF64F, 0xF650, 0xF651, 0xF652, 0xF653,
- /* U+9BF0 */ 0xF654, 0xF655, 0xF656, 0xF657, 0xF658, 0xF659, 0xF65A, 0xF65B,
- /* U+9BF8 */ 0xF65C, 0xF65D, 0xF65E, 0xF65F, 0xF660, 0xF661, 0xF662, 0xF663,
- /* U+9C00 */ 0xF664, 0xF665, 0xF666, 0xF667, 0xF668, 0xF669, 0xF66A, 0xF66B,
- /* U+9C08 */ 0xF66C, 0xF66D, 0xF66E, 0xF66F, 0xF670, 0xF671, 0xF672, 0xF673,
- /* U+9C10 */ 0xF674, 0xF675, 0xF676, 0xF677, 0xF678, 0xF679, 0xF67A, 0xF67B,
- /* U+9C18 */ 0xF67C, 0xF67D, 0xF67E, 0xF680, 0xF681, 0xF682, 0xF683, 0xF684,
- /* U+9C20 */ 0xF685, 0xF686, 0xF687, 0xF688, 0xF689, 0xF68A, 0xF68B, 0xF68C,
- /* U+9C28 */ 0xF68D, 0xF68E, 0xF68F, 0xF690, 0xF691, 0xF692, 0xF693, 0xF694,
- /* U+9C30 */ 0xF695, 0xF696, 0xF697, 0xF698, 0xF699, 0xF69A, 0xF69B, 0xF69C,
- /* U+9C38 */ 0xF69D, 0xF69E, 0xF69F, 0xF6A0, 0xF740, 0xF741, 0xF742, 0xF743,
- /* U+9C40 */ 0xF744, 0xF745, 0xF746, 0xF747, 0xF748, 0xF749, 0xF74A, 0xF74B,
- /* U+9C48 */ 0xF74C, 0xF74D, 0xF74E, 0xF74F, 0xF750, 0xF751, 0xF752, 0xF753,
- /* U+9C50 */ 0xF754, 0xF755, 0xF756, 0xF757, 0xF758, 0xF759, 0xF75A, 0xF75B,
- /* U+9C58 */ 0xF75C, 0xF75D, 0xF75E, 0xF75F, 0xF760, 0xF761, 0xF762, 0xF763,
- /* U+9C60 */ 0xF764, 0xF765, 0xF766, 0xF767, 0xF768, 0xF769, 0xF76A, 0xF76B,
- /* U+9C68 */ 0xF76C, 0xF76D, 0xF76E, 0xF76F, 0xF770, 0xF771, 0xF772, 0xF773,
- /* U+9C70 */ 0xF774, 0xF775, 0xF776, 0xF777, 0xF778, 0xF779, 0xF77A, 0xF77B,
- /* U+9C78 */ 0xF77C, 0xF77D, 0xF77E, 0xF780, 0xD3E3, 0xF781, 0xF782, 0xF6CF,
- /* U+9C80 */ 0xF783, 0xC2B3, 0xF6D0, 0xF784, 0xF785, 0xF6D1, 0xF6D2, 0xF6D3,
- /* U+9C88 */ 0xF6D4, 0xF786, 0xF787, 0xF6D6, 0xF788, 0xB1AB, 0xF6D7, 0xF789,
- /* U+9C90 */ 0xF6D8, 0xF6D9, 0xF6DA, 0xF78A, 0xF6DB, 0xF6DC, 0xF78B, 0xF78C,
- /* U+9C98 */ 0xF78D, 0xF78E, 0xF6DD, 0xF6DE, 0xCFCA, 0xF78F, 0xF6DF, 0xF6E0,
- /* U+9CA0 */ 0xF6E1, 0xF6E2, 0xF6E3, 0xF6E4, 0xC0F0, 0xF6E5, 0xF6E6, 0xF6E7,
- /* U+9CA8 */ 0xF6E8, 0xF6E9, 0xF790, 0xF6EA, 0xF791, 0xF6EB, 0xF6EC, 0xF792,
- /* U+9CB0 */ 0xF6ED, 0xF6EE, 0xF6EF, 0xF6F0, 0xF6F1, 0xF6F2, 0xF6F3, 0xF6F4,
- /* U+9CB8 */ 0xBEA8, 0xF793, 0xF6F5, 0xF6F6, 0xF6F7, 0xF6F8, 0xF794, 0xF795,
- /* U+9CC0 */ 0xF796, 0xF797, 0xF798, 0xC8FA, 0xF6F9, 0xF6FA, 0xF6FB, 0xF6FC,
- /* U+9CC8 */ 0xF799, 0xF79A, 0xF6FD, 0xF6FE, 0xF7A1, 0xF7A2, 0xF7A3, 0xF7A4,
- /* U+9CD0 */ 0xF7A5, 0xF79B, 0xF79C, 0xF7A6, 0xF7A7, 0xF7A8, 0xB1EE, 0xF7A9,
- /* U+9CD8 */ 0xF7AA, 0xF7AB, 0xF79D, 0xF79E, 0xF7AC, 0xF7AD, 0xC1DB, 0xF7AE,
- /* U+9CE0 */ 0xF79F, 0xF7A0, 0xF7AF, 0xF840, 0xF841, 0xF842, 0xF843, 0xF844,
- /* U+9CE8 */ 0xF845, 0xF846, 0xF847, 0xF848, 0xF849, 0xF84A, 0xF84B, 0xF84C,
- /* U+9CF0 */ 0xF84D, 0xF84E, 0xF84F, 0xF850, 0xF851, 0xF852, 0xF853, 0xF854,
- /* U+9CF8 */ 0xF855, 0xF856, 0xF857, 0xF858, 0xF859, 0xF85A, 0xF85B, 0xF85C,
- /* U+9D00 */ 0xF85D, 0xF85E, 0xF85F, 0xF860, 0xF861, 0xF862, 0xF863, 0xF864,
- /* U+9D08 */ 0xF865, 0xF866, 0xF867, 0xF868, 0xF869, 0xF86A, 0xF86B, 0xF86C,
- /* U+9D10 */ 0xF86D, 0xF86E, 0xF86F, 0xF870, 0xF871, 0xF872, 0xF873, 0xF874,
- /* U+9D18 */ 0xF875, 0xF876, 0xF877, 0xF878, 0xF879, 0xF87A, 0xF87B, 0xF87C,
- /* U+9D20 */ 0xF87D, 0xF87E, 0xF880, 0xF881, 0xF882, 0xF883, 0xF884, 0xF885,
- /* U+9D28 */ 0xF886, 0xF887, 0xF888, 0xF889, 0xF88A, 0xF88B, 0xF88C, 0xF88D,
- /* U+9D30 */ 0xF88E, 0xF88F, 0xF890, 0xF891, 0xF892, 0xF893, 0xF894, 0xF895,
- /* U+9D38 */ 0xF896, 0xF897, 0xF898, 0xF899, 0xF89A, 0xF89B, 0xF89C, 0xF89D,
- /* U+9D40 */ 0xF89E, 0xF89F, 0xF8A0, 0xF940, 0xF941, 0xF942, 0xF943, 0xF944,
- /* U+9D48 */ 0xF945, 0xF946, 0xF947, 0xF948, 0xF949, 0xF94A, 0xF94B, 0xF94C,
- /* U+9D50 */ 0xF94D, 0xF94E, 0xF94F, 0xF950, 0xF951, 0xF952, 0xF953, 0xF954,
- /* U+9D58 */ 0xF955, 0xF956, 0xF957, 0xF958, 0xF959, 0xF95A, 0xF95B, 0xF95C,
- /* U+9D60 */ 0xF95D, 0xF95E, 0xF95F, 0xF960, 0xF961, 0xF962, 0xF963, 0xF964,
- /* U+9D68 */ 0xF965, 0xF966, 0xF967, 0xF968, 0xF969, 0xF96A, 0xF96B, 0xF96C,
- /* U+9D70 */ 0xF96D, 0xF96E, 0xF96F, 0xF970, 0xF971, 0xF972, 0xF973, 0xF974,
- /* U+9D78 */ 0xF975, 0xF976, 0xF977, 0xF978, 0xF979, 0xF97A, 0xF97B, 0xF97C,
- /* U+9D80 */ 0xF97D, 0xF97E, 0xF980, 0xF981, 0xF982, 0xF983, 0xF984, 0xF985,
- /* U+9D88 */ 0xF986, 0xF987, 0xF988, 0xF989, 0xF98A, 0xF98B, 0xF98C, 0xF98D,
- /* U+9D90 */ 0xF98E, 0xF98F, 0xF990, 0xF991, 0xF992, 0xF993, 0xF994, 0xF995,
- /* U+9D98 */ 0xF996, 0xF997, 0xF998, 0xF999, 0xF99A, 0xF99B, 0xF99C, 0xF99D,
- /* U+9DA0 */ 0xF99E, 0xF99F, 0xF9A0, 0xFA40, 0xFA41, 0xFA42, 0xFA43, 0xFA44,
- /* U+9DA8 */ 0xFA45, 0xFA46, 0xFA47, 0xFA48, 0xFA49, 0xFA4A, 0xFA4B, 0xFA4C,
- /* U+9DB0 */ 0xFA4D, 0xFA4E, 0xFA4F, 0xFA50, 0xFA51, 0xFA52, 0xFA53, 0xFA54,
- /* U+9DB8 */ 0xFA55, 0xFA56, 0xFA57, 0xFA58, 0xFA59, 0xFA5A, 0xFA5B, 0xFA5C,
- /* U+9DC0 */ 0xFA5D, 0xFA5E, 0xFA5F, 0xFA60, 0xFA61, 0xFA62, 0xFA63, 0xFA64,
- /* U+9DC8 */ 0xFA65, 0xFA66, 0xFA67, 0xFA68, 0xFA69, 0xFA6A, 0xFA6B, 0xFA6C,
- /* U+9DD0 */ 0xFA6D, 0xFA6E, 0xFA6F, 0xFA70, 0xFA71, 0xFA72, 0xFA73, 0xFA74,
- /* U+9DD8 */ 0xFA75, 0xFA76, 0xFA77, 0xFA78, 0xFA79, 0xFA7A, 0xFA7B, 0xFA7C,
- /* U+9DE0 */ 0xFA7D, 0xFA7E, 0xFA80, 0xFA81, 0xFA82, 0xFA83, 0xFA84, 0xFA85,
- /* U+9DE8 */ 0xFA86, 0xFA87, 0xFA88, 0xFA89, 0xFA8A, 0xFA8B, 0xFA8C, 0xFA8D,
- /* U+9DF0 */ 0xFA8E, 0xFA8F, 0xFA90, 0xFA91, 0xFA92, 0xFA93, 0xFA94, 0xFA95,
- /* U+9DF8 */ 0xFA96, 0xFA97, 0xFA98, 0xFA99, 0xFA9A, 0xFA9B, 0xFA9C, 0xFA9D,
- /* U+9E00 */ 0xFA9E, 0xFA9F, 0xFAA0, 0xFB40, 0xFB41, 0xFB42, 0xFB43, 0xFB44,
- /* U+9E08 */ 0xFB45, 0xFB46, 0xFB47, 0xFB48, 0xFB49, 0xFB4A, 0xFB4B, 0xFB4C,
- /* U+9E10 */ 0xFB4D, 0xFB4E, 0xFB4F, 0xFB50, 0xFB51, 0xFB52, 0xFB53, 0xFB54,
- /* U+9E18 */ 0xFB55, 0xFB56, 0xFB57, 0xFB58, 0xFB59, 0xFB5A, 0xFB5B, 0xC4F1,
- /* U+9E20 */ 0xF0AF, 0xBCA6, 0xF0B0, 0xC3F9, 0xFB5C, 0xC5B8, 0xD1BB, 0xFB5D,
- /* U+9E28 */ 0xF0B1, 0xF0B2, 0xF0B3, 0xF0B4, 0xF0B5, 0xD1BC, 0xFB5E, 0xD1EC,
- /* U+9E30 */ 0xFB5F, 0xF0B7, 0xF0B6, 0xD4A7, 0xFB60, 0xCDD2, 0xF0B8, 0xF0BA,
- /* U+9E38 */ 0xF0B9, 0xF0BB, 0xF0BC, 0xFB61, 0xFB62, 0xB8EB, 0xF0BD, 0xBAE8,
- /* U+9E40 */ 0xFB63, 0xF0BE, 0xF0BF, 0xBEE9, 0xF0C0, 0xB6EC, 0xF0C1, 0xF0C2,
- /* U+9E48 */ 0xF0C3, 0xF0C4, 0xC8B5, 0xF0C5, 0xF0C6, 0xFB64, 0xF0C7, 0xC5F4,
- /* U+9E50 */ 0xFB65, 0xF0C8, 0xFB66, 0xFB67, 0xFB68, 0xF0C9, 0xFB69, 0xF0CA,
- /* U+9E58 */ 0xF7BD, 0xFB6A, 0xF0CB, 0xF0CC, 0xF0CD, 0xFB6B, 0xF0CE, 0xFB6C,
- /* U+9E60 */ 0xFB6D, 0xFB6E, 0xFB6F, 0xF0CF, 0xBAD7, 0xFB70, 0xF0D0, 0xF0D1,
- /* U+9E68 */ 0xF0D2, 0xF0D3, 0xF0D4, 0xF0D5, 0xF0D6, 0xF0D8, 0xFB71, 0xFB72,
- /* U+9E70 */ 0xD3A5, 0xF0D7, 0xFB73, 0xF0D9, 0xFB74, 0xFB75, 0xFB76, 0xFB77,
- /* U+9E78 */ 0xFB78, 0xFB79, 0xFB7A, 0xFB7B, 0xFB7C, 0xFB7D, 0xF5BA, 0xC2B9,
- /* U+9E80 */ 0xFB7E, 0xFB80, 0xF7E4, 0xFB81, 0xFB82, 0xFB83, 0xFB84, 0xF7E5,
- /* U+9E88 */ 0xF7E6, 0xFB85, 0xFB86, 0xF7E7, 0xFB87, 0xFB88, 0xFB89, 0xFB8A,
- /* U+9E90 */ 0xFB8B, 0xFB8C, 0xF7E8, 0xC2B4, 0xFB8D, 0xFB8E, 0xFB8F, 0xFB90,
- /* U+9E98 */ 0xFB91, 0xFB92, 0xFB93, 0xFB94, 0xFB95, 0xF7EA, 0xFB96, 0xF7EB,
- /* U+9EA0 */ 0xFB97, 0xFB98, 0xFB99, 0xFB9A, 0xFB9B, 0xFB9C, 0xC2F3, 0xFB9D,
- /* U+9EA8 */ 0xFB9E, 0xFB9F, 0xFBA0, 0xFC40, 0xFC41, 0xFC42, 0xFC43, 0xFC44,
- /* U+9EB0 */ 0xFC45, 0xFC46, 0xFC47, 0xFC48, 0xF4F0, 0xFC49, 0xFC4A, 0xFC4B,
- /* U+9EB8 */ 0xF4EF, 0xFC4C, 0xFC4D, 0xC2E9, 0xFC4E, 0xF7E1, 0xF7E2, 0xFC4F,
- /* U+9EC0 */ 0xFC50, 0xFC51, 0xFC52, 0xFC53, 0xBBC6, 0xFC54, 0xFC55, 0xFC56,
- /* U+9EC8 */ 0xFC57, 0xD9E4, 0xFC58, 0xFC59, 0xFC5A, 0xCAF2, 0xC0E8, 0xF0A4,
- /* U+9ED0 */ 0xFC5B, 0xBADA, 0xFC5C, 0xFC5D, 0xC7AD, 0xFC5E, 0xFC5F, 0xFC60,
- /* U+9ED8 */ 0xC4AC, 0xFC61, 0xFC62, 0xF7EC, 0xF7ED, 0xF7EE, 0xFC63, 0xF7F0,
- /* U+9EE0 */ 0xF7EF, 0xFC64, 0xF7F1, 0xFC65, 0xFC66, 0xF7F4, 0xFC67, 0xF7F3,
- /* U+9EE8 */ 0xFC68, 0xF7F2, 0xF7F5, 0xFC69, 0xFC6A, 0xFC6B, 0xFC6C, 0xF7F6,
- /* U+9EF0 */ 0xFC6D, 0xFC6E, 0xFC6F, 0xFC70, 0xFC71, 0xFC72, 0xFC73, 0xFC74,
- /* U+9EF8 */ 0xFC75, 0xEDE9, 0xFC76, 0xEDEA, 0xEDEB, 0xFC77, 0xF6BC, 0xFC78,
- /* U+9F00 */ 0xFC79, 0xFC7A, 0xFC7B, 0xFC7C, 0xFC7D, 0xFC7E, 0xFC80, 0xFC81,
- /* U+9F08 */ 0xFC82, 0xFC83, 0xFC84, 0xF6BD, 0xFC85, 0xF6BE, 0xB6A6, 0xFC86,
- /* U+9F10 */ 0xD8BE, 0xFC87, 0xFC88, 0xB9C4, 0xFC89, 0xFC8A, 0xFC8B, 0xD8BB,
- /* U+9F18 */ 0xFC8C, 0xDCB1, 0xFC8D, 0xFC8E, 0xFC8F, 0xFC90, 0xFC91, 0xFC92,
- /* U+9F20 */ 0xCAF3, 0xFC93, 0xF7F7, 0xFC94, 0xFC95, 0xFC96, 0xFC97, 0xFC98,
- /* U+9F28 */ 0xFC99, 0xFC9A, 0xFC9B, 0xFC9C, 0xF7F8, 0xFC9D, 0xFC9E, 0xF7F9,
- /* U+9F30 */ 0xFC9F, 0xFCA0, 0xFD40, 0xFD41, 0xFD42, 0xFD43, 0xFD44, 0xF7FB,
- /* U+9F38 */ 0xFD45, 0xF7FA, 0xFD46, 0xB1C7, 0xFD47, 0xF7FC, 0xF7FD, 0xFD48,
- /* U+9F40 */ 0xFD49, 0xFD4A, 0xFD4B, 0xFD4C, 0xF7FE, 0xFD4D, 0xFD4E, 0xFD4F,
- /* U+9F48 */ 0xFD50, 0xFD51, 0xFD52, 0xFD53, 0xFD54, 0xFD55, 0xFD56, 0xFD57,
- /* U+9F50 */ 0xC6EB, 0xECB4, 0xFD58, 0xFD59, 0xFD5A, 0xFD5B, 0xFD5C, 0xFD5D,
- /* U+9F58 */ 0xFD5E, 0xFD5F, 0xFD60, 0xFD61, 0xFD62, 0xFD63, 0xFD64, 0xFD65,
- /* U+9F60 */ 0xFD66, 0xFD67, 0xFD68, 0xFD69, 0xFD6A, 0xFD6B, 0xFD6C, 0xFD6D,
- /* U+9F68 */ 0xFD6E, 0xFD6F, 0xFD70, 0xFD71, 0xFD72, 0xFD73, 0xFD74, 0xFD75,
- /* U+9F70 */ 0xFD76, 0xFD77, 0xFD78, 0xFD79, 0xFD7A, 0xFD7B, 0xFD7C, 0xFD7D,
- /* U+9F78 */ 0xFD7E, 0xFD80, 0xFD81, 0xFD82, 0xFD83, 0xFD84, 0xFD85, 0xB3DD,
- /* U+9F80 */ 0xF6B3, 0xFD86, 0xFD87, 0xF6B4, 0xC1E4, 0xF6B5, 0xF6B6, 0xF6B7,
- /* U+9F88 */ 0xF6B8, 0xF6B9, 0xF6BA, 0xC8A3, 0xF6BB, 0xFD88, 0xFD89, 0xFD8A,
- /* U+9F90 */ 0xFD8B, 0xFD8C, 0xFD8D, 0xFD8E, 0xFD8F, 0xFD90, 0xFD91, 0xFD92,
- /* U+9F98 */ 0xFD93, 0xC1FA, 0xB9A8, 0xEDE8, 0xFD94, 0xFD95, 0xFD96, 0xB9EA,
- /* U+9FA0 */ 0xD9DF, 0xFD97, 0xFD98, 0xFD99, 0xFD9A, 0xFD9B,
- /* Contiguous area: U+E766 .. U+E864 */
- /* U+E766 */ 0xA2AB, 0xA2AC,
- /* U+E768 */ 0xA2AD, 0xA2AE, 0xA2AF, 0xA2B0, 0x6469, 0xA2E4, 0xA2EF, 0xA2F0,
- /* U+E770 */ 0xA2FD, 0xA2FE, 0xA4F4, 0xA4F5, 0xA4F6, 0xA4F7, 0xA4F8, 0xA4F9,
- /* U+E778 */ 0xA4FA, 0xA4FB, 0xA4FC, 0xA4FD, 0xA4FE, 0xA5F7, 0xA5F8, 0xA5F9,
- /* U+E780 */ 0xA5FA, 0xA5FB, 0xA5FC, 0xA5FD, 0xA5FE, 0xA6B9, 0xA6BA, 0xA6BB,
- /* U+E788 */ 0xA6BC, 0xA6BD, 0xA6BE, 0xA6BF, 0xA6C0, 0xA6D9, 0xA6DA, 0xA6DB,
- /* U+E790 */ 0xA6DC, 0xA6DD, 0xA6DE, 0xA6DF, 0xA6EC, 0xA6ED, 0xA6F3, 0xA6F6,
- /* U+E798 */ 0xA6F7, 0xA6F8, 0xA6F9, 0xA6FA, 0xA6FB, 0xA6FC, 0xA6FD, 0xA6FE,
- /* U+E7A0 */ 0xA7C2, 0xA7C3, 0xA7C4, 0xA7C5, 0xA7C6, 0xA7C7, 0xA7C8, 0xA7C9,
- /* U+E7A8 */ 0xA7CA, 0xA7CB, 0xA7CC, 0xA7CD, 0xA7CE, 0xA7CF, 0xA7D0, 0xA7F2,
- /* U+E7B0 */ 0xA7F3, 0xA7F4, 0xA7F5, 0xA7F6, 0xA7F7, 0xA7F8, 0xA7F9, 0xA7FA,
- /* U+E7B8 */ 0xA7FB, 0xA7FC, 0xA7FD, 0xA7FE, 0xA896, 0xA897, 0xA898, 0xA899,
- /* U+E7C0 */ 0xA89A, 0xA89B, 0xA89C, 0xA89D, 0xA89E, 0xA89F, 0xA8A0, 0xA8BC,
- /* U+E7C8 */ 0x6470, 0xA8C1, 0xA8C2, 0xA8C3, 0xA8C4, 0xA8EA, 0xA8EB, 0xA8EC,
- /* U+E7D0 */ 0xA8ED, 0xA8EE, 0xA8EF, 0xA8F0, 0xA8F1, 0xA8F2, 0xA8F3, 0xA8F4,
- /* U+E7D8 */ 0xA8F5, 0xA8F6, 0xA8F7, 0xA8F8, 0xA8F9, 0xA8FA, 0xA8FB, 0xA8FC,
- /* U+E7E0 */ 0xA8FD, 0xA8FE, 0xA958, 0xA95B, 0xA95D, 0xA95E, 0xA95F, 0x6471,
- /* U+E7E8 */ 0x6472, 0x6473, 0x6474, 0x6475, 0x6476, 0x6477, 0x6478, 0x6479,
- /* U+E7F0 */ 0x6480, 0x6481, 0x6482, 0x6483, 0xA997, 0xA998, 0xA999, 0xA99A,
- /* U+E7F8 */ 0xA99B, 0xA99C, 0xA99D, 0xA99E, 0xA99F, 0xA9A0, 0xA9A1, 0xA9A2,
- /* U+E800 */ 0xA9A3, 0xA9F0, 0xA9F1, 0xA9F2, 0xA9F3, 0xA9F4, 0xA9F5, 0xA9F6,
- /* U+E808 */ 0xA9F7, 0xA9F8, 0xA9F9, 0xA9FA, 0xA9FB, 0xA9FC, 0xA9FD, 0xA9FE,
- /* U+E810 */ 0xD7FA, 0xD7FB, 0xD7FC, 0xD7FD, 0xD7FE, 0x6484, 0xFE51, 0xFE52,
- /* U+E818 */ 0xFE53, 0x6485, 0x6486, 0x6487, 0x6488, 0x6489, 0xFE59, 0x6490,
- /* U+E820 */ 0x6491, 0x6492, 0x6493, 0x6494, 0x6495, 0x6496, 0xFE61, 0x6497,
- /* U+E828 */ 0x6498, 0x6499, 0x64A0, 0xFE66, 0xFE67, 0x64A1, 0x64A2, 0x64A3,
- /* U+E830 */ 0x64A4, 0xFE6C, 0xFE6D, 0x64A5, 0x64A6, 0x64A7, 0x64A8, 0x64A9,
- /* U+E838 */ 0x64B0, 0x64B1, 0x64B2, 0xFE76, 0x64B3, 0x64B4, 0x64B5, 0x64B6,
- /* U+E840 */ 0x64B7, 0x64B8, 0x64B9, 0xFE7E, 0x64C0, 0x64C1, 0x64C2, 0x64C3,
- /* U+E848 */ 0x64C4, 0x64C5, 0x64C6, 0x64C7, 0x64C8, 0x64C9, 0x64D0, 0x64D1,
- /* U+E850 */ 0x64D2, 0x64D3, 0x64D4, 0x64D5, 0xFE90, 0xFE91, 0x64D6, 0x64D7,
- /* U+E858 */ 0x64D8, 0x64D9, 0x64E0, 0x64E1, 0x64E2, 0x64E3, 0x64E4, 0x64E5,
- /* U+E860 */ 0x64E6, 0x64E7, 0x64E8, 0x64E9, 0xFEA0,
- /* Contiguous area: U+F92C .. U+FA29 */
- /* U+F92C */ 0xFD9C, 0x7045, 0x7046, 0x7047,
- /* U+F930 */ 0x7048, 0x7049, 0x7050, 0x7051, 0x7052, 0x7053, 0x7054, 0x7055,
- /* U+F938 */ 0x7056, 0x7057, 0x7058, 0x7059, 0x7060, 0x7061, 0x7062, 0x7063,
- /* U+F940 */ 0x7064, 0x7065, 0x7066, 0x7067, 0x7068, 0x7069, 0x7070, 0x7071,
- /* U+F948 */ 0x7072, 0x7073, 0x7074, 0x7075, 0x7076, 0x7077, 0x7078, 0x7079,
- /* U+F950 */ 0x7080, 0x7081, 0x7082, 0x7083, 0x7084, 0x7085, 0x7086, 0x7087,
- /* U+F958 */ 0x7088, 0x7089, 0x7090, 0x7091, 0x7092, 0x7093, 0x7094, 0x7095,
- /* U+F960 */ 0x7096, 0x7097, 0x7098, 0x7099, 0x70A0, 0x70A1, 0x70A2, 0x70A3,
- /* U+F968 */ 0x70A4, 0x70A5, 0x70A6, 0x70A7, 0x70A8, 0x70A9, 0x70B0, 0x70B1,
- /* U+F970 */ 0x70B2, 0x70B3, 0x70B4, 0x70B5, 0x70B6, 0x70B7, 0x70B8, 0x70B9,
- /* U+F978 */ 0x70C0, 0xFD9D, 0x70C1, 0x70C2, 0x70C3, 0x70C4, 0x70C5, 0x70C6,
- /* U+F980 */ 0x70C7, 0x70C8, 0x70C9, 0x70D0, 0x70D1, 0x70D2, 0x70D3, 0x70D4,
- /* U+F988 */ 0x70D5, 0x70D6, 0x70D7, 0x70D8, 0x70D9, 0x70E0, 0x70E1, 0x70E2,
- /* U+F990 */ 0x70E3, 0x70E4, 0x70E5, 0x70E6, 0x70E7, 0xFD9E, 0x70E8, 0x70E9,
- /* U+F998 */ 0x70F0, 0x70F1, 0x70F2, 0x70F3, 0x70F4, 0x70F5, 0x70F6, 0x70F7,
- /* U+F9A0 */ 0x70F8, 0x70F9, 0x7100, 0x7101, 0x7102, 0x7103, 0x7104, 0x7105,
- /* U+F9A8 */ 0x7106, 0x7107, 0x7108, 0x7109, 0x7110, 0x7111, 0x7112, 0x7113,
- /* U+F9B0 */ 0x7114, 0x7115, 0x7116, 0x7117, 0x7118, 0x7119, 0x7120, 0x7121,
- /* U+F9B8 */ 0x7122, 0x7123, 0x7124, 0x7125, 0x7126, 0x7127, 0x7128, 0x7129,
- /* U+F9C0 */ 0x7130, 0x7131, 0x7132, 0x7133, 0x7134, 0x7135, 0x7136, 0x7137,
- /* U+F9C8 */ 0x7138, 0x7139, 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7145,
- /* U+F9D0 */ 0x7146, 0x7147, 0x7148, 0x7149, 0x7150, 0x7151, 0x7152, 0x7153,
- /* U+F9D8 */ 0x7154, 0x7155, 0x7156, 0x7157, 0x7158, 0x7159, 0x7160, 0x7161,
- /* U+F9E0 */ 0x7162, 0x7163, 0x7164, 0x7165, 0x7166, 0x7167, 0x7168, 0xFD9F,
- /* U+F9E8 */ 0x7169, 0x7170, 0x7171, 0x7172, 0x7173, 0x7174, 0x7175, 0x7176,
- /* U+F9F0 */ 0x7177, 0xFDA0, 0x7178, 0x7179, 0x7180, 0x7181, 0x7182, 0x7183,
- /* U+F9F8 */ 0x7184, 0x7185, 0x7186, 0x7187, 0x7188, 0x7189, 0x7190, 0x7191,
- /* U+FA00 */ 0x7192, 0x7193, 0x7194, 0x7195, 0x7196, 0x7197, 0x7198, 0x7199,
- /* U+FA08 */ 0x71A0, 0x71A1, 0x71A2, 0x71A3, 0xFE40, 0xFE41, 0xFE42, 0xFE43,
- /* U+FA10 */ 0x71A4, 0xFE44, 0x71A5, 0xFE45, 0xFE46, 0x71A6, 0x71A7, 0x71A8,
- /* U+FA18 */ 0xFE47, 0x71A9, 0x71B0, 0x71B1, 0x71B2, 0x71B3, 0x71B4, 0xFE48,
- /* U+FA20 */ 0xFE49, 0xFE4A, 0x71B5, 0xFE4B, 0xFE4C, 0x71B6, 0x71B7, 0xFE4D,
- /* U+FA28 */ 0xFE4E, 0xFE4F,
- /* Contiguous area: U+FE30 .. U+FFE5 */
- /* U+FE30 */ 0xA955, 0xA6F2, 0x7848, 0xA6F4, 0xA6F5, 0xA6E0, 0xA6E1, 0xA6F0,
- /* U+FE38 */ 0xA6F1, 0xA6E2, 0xA6E3, 0xA6EE, 0xA6EF, 0xA6E6, 0xA6E7, 0xA6E4,
- /* U+FE40 */ 0xA6E5, 0xA6E8, 0xA6E9, 0xA6EA, 0xA6EB, 0x7849, 0x7850, 0x7851,
- /* U+FE48 */ 0x7852, 0xA968, 0xA969, 0xA96A, 0xA96B, 0xA96C, 0xA96D, 0xA96E,
- /* U+FE50 */ 0xA96F, 0xA970, 0xA971, 0x7853, 0xA972, 0xA973, 0xA974, 0xA975,
- /* U+FE58 */ 0x7854, 0xA976, 0xA977, 0xA978, 0xA979, 0xA97A, 0xA97B, 0xA97C,
- /* U+FE60 */ 0xA97D, 0xA97E, 0xA980, 0xA981, 0xA982, 0xA983, 0xA984, 0x7855,
- /* U+FE68 */ 0xA985, 0xA986, 0xA987, 0xA988, 0x7856, 0x7857, 0x7858, 0x7859,
- /* U+FE70 */ 0x7860, 0x7861, 0x7862, 0x7863, 0x7864, 0x7865, 0x7866, 0x7867,
- /* U+FE78 */ 0x7868, 0x7869, 0x7870, 0x7871, 0x7872, 0x7873, 0x7874, 0x7875,
- /* U+FE80 */ 0x7876, 0x7877, 0x7878, 0x7879, 0x7880, 0x7881, 0x7882, 0x7883,
- /* U+FE88 */ 0x7884, 0x7885, 0x7886, 0x7887, 0x7888, 0x7889, 0x7890, 0x7891,
- /* U+FE90 */ 0x7892, 0x7893, 0x7894, 0x7895, 0x7896, 0x7897, 0x7898, 0x7899,
- /* U+FE98 */ 0x78A0, 0x78A1, 0x78A2, 0x78A3, 0x78A4, 0x78A5, 0x78A6, 0x78A7,
- /* U+FEA0 */ 0x78A8, 0x78A9, 0x78B0, 0x78B1, 0x78B2, 0x78B3, 0x78B4, 0x78B5,
- /* U+FEA8 */ 0x78B6, 0x78B7, 0x78B8, 0x78B9, 0x78C0, 0x78C1, 0x78C2, 0x78C3,
- /* U+FEB0 */ 0x78C4, 0x78C5, 0x78C6, 0x78C7, 0x78C8, 0x78C9, 0x78D0, 0x78D1,
- /* U+FEB8 */ 0x78D2, 0x78D3, 0x78D4, 0x78D5, 0x78D6, 0x78D7, 0x78D8, 0x78D9,
- /* U+FEC0 */ 0x78E0, 0x78E1, 0x78E2, 0x78E3, 0x78E4, 0x78E5, 0x78E6, 0x78E7,
- /* U+FEC8 */ 0x78E8, 0x78E9, 0x78F0, 0x78F1, 0x78F2, 0x78F3, 0x78F4, 0x78F5,
- /* U+FED0 */ 0x78F6, 0x78F7, 0x78F8, 0x78F9, 0x7900, 0x7901, 0x7902, 0x7903,
- /* U+FED8 */ 0x7904, 0x7905, 0x7906, 0x7907, 0x7908, 0x7909, 0x7910, 0x7911,
- /* U+FEE0 */ 0x7912, 0x7913, 0x7914, 0x7915, 0x7916, 0x7917, 0x7918, 0x7919,
- /* U+FEE8 */ 0x7920, 0x7921, 0x7922, 0x7923, 0x7924, 0x7925, 0x7926, 0x7927,
- /* U+FEF0 */ 0x7928, 0x7929, 0x7930, 0x7931, 0x7932, 0x7933, 0x7934, 0x7935,
- /* U+FEF8 */ 0x7936, 0x7937, 0x7938, 0x7939, 0x7940, 0x7941, 0x7942, 0x7943,
- /* U+FF00 */ 0x7944, 0xA3A1, 0xA3A2, 0xA3A3, 0xA1E7, 0xA3A5, 0xA3A6, 0xA3A7,
- /* U+FF08 */ 0xA3A8, 0xA3A9, 0xA3AA, 0xA3AB, 0xA3AC, 0xA3AD, 0xA3AE, 0xA3AF,
- /* U+FF10 */ 0xA3B0, 0xA3B1, 0xA3B2, 0xA3B3, 0xA3B4, 0xA3B5, 0xA3B6, 0xA3B7,
- /* U+FF18 */ 0xA3B8, 0xA3B9, 0xA3BA, 0xA3BB, 0xA3BC, 0xA3BD, 0xA3BE, 0xA3BF,
- /* U+FF20 */ 0xA3C0, 0xA3C1, 0xA3C2, 0xA3C3, 0xA3C4, 0xA3C5, 0xA3C6, 0xA3C7,
- /* U+FF28 */ 0xA3C8, 0xA3C9, 0xA3CA, 0xA3CB, 0xA3CC, 0xA3CD, 0xA3CE, 0xA3CF,
- /* U+FF30 */ 0xA3D0, 0xA3D1, 0xA3D2, 0xA3D3, 0xA3D4, 0xA3D5, 0xA3D6, 0xA3D7,
- /* U+FF38 */ 0xA3D8, 0xA3D9, 0xA3DA, 0xA3DB, 0xA3DC, 0xA3DD, 0xA3DE, 0xA3DF,
- /* U+FF40 */ 0xA3E0, 0xA3E1, 0xA3E2, 0xA3E3, 0xA3E4, 0xA3E5, 0xA3E6, 0xA3E7,
- /* U+FF48 */ 0xA3E8, 0xA3E9, 0xA3EA, 0xA3EB, 0xA3EC, 0xA3ED, 0xA3EE, 0xA3EF,
- /* U+FF50 */ 0xA3F0, 0xA3F1, 0xA3F2, 0xA3F3, 0xA3F4, 0xA3F5, 0xA3F6, 0xA3F7,
- /* U+FF58 */ 0xA3F8, 0xA3F9, 0xA3FA, 0xA3FB, 0xA3FC, 0xA3FD, 0xA1AB, 0x7945,
- /* U+FF60 */ 0x7946, 0x7947, 0x7948, 0x7949, 0x7950, 0x7951, 0x7952, 0x7953,
- /* U+FF68 */ 0x7954, 0x7955, 0x7956, 0x7957, 0x7958, 0x7959, 0x7960, 0x7961,
- /* U+FF70 */ 0x7962, 0x7963, 0x7964, 0x7965, 0x7966, 0x7967, 0x7968, 0x7969,
- /* U+FF78 */ 0x7970, 0x7971, 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7977,
- /* U+FF80 */ 0x7978, 0x7979, 0x7980, 0x7981, 0x7982, 0x7983, 0x7984, 0x7985,
- /* U+FF88 */ 0x7986, 0x7987, 0x7988, 0x7989, 0x7990, 0x7991, 0x7992, 0x7993,
- /* U+FF90 */ 0x7994, 0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x79A0, 0x79A1,
- /* U+FF98 */ 0x79A2, 0x79A3, 0x79A4, 0x79A5, 0x79A6, 0x79A7, 0x79A8, 0x79A9,
- /* U+FFA0 */ 0x79B0, 0x79B1, 0x79B2, 0x79B3, 0x79B4, 0x79B5, 0x79B6, 0x79B7,
- /* U+FFA8 */ 0x79B8, 0x79B9, 0x79C0, 0x79C1, 0x79C2, 0x79C3, 0x79C4, 0x79C5,
- /* U+FFB0 */ 0x79C6, 0x79C7, 0x79C8, 0x79C9, 0x79D0, 0x79D1, 0x79D2, 0x79D3,
- /* U+FFB8 */ 0x79D4, 0x79D5, 0x79D6, 0x79D7, 0x79D8, 0x79D9, 0x79E0, 0x79E1,
- /* U+FFC0 */ 0x79E2, 0x79E3, 0x79E4, 0x79E5, 0x79E6, 0x79E7, 0x79E8, 0x79E9,
- /* U+FFC8 */ 0x79F0, 0x79F1, 0x79F2, 0x79F3, 0x79F4, 0x79F5, 0x79F6, 0x79F7,
- /* U+FFD0 */ 0x79F8, 0x79F9, 0x7A00, 0x7A01, 0x7A02, 0x7A03, 0x7A04, 0x7A05,
- /* U+FFD8 */ 0x7A06, 0x7A07, 0x7A08, 0x7A09, 0x7A10, 0x7A11, 0x7A12, 0x7A13,
- /* U+FFE0 */ 0xA1E9, 0xA1EA, 0xA956, 0xA3FE, 0xA957, 0xA3A4,
-};
-
-static quint16 const gb18030_2byte_to_ucs[22046] = {
- /* GB 0x8140..0x817E */
- 0x4E02, 0x4E04, 0x4E05, 0x4E06, 0x4E0F, 0x4E12, 0x4E17, 0x4E1F,
- 0x4E20, 0x4E21, 0x4E23, 0x4E26, 0x4E29, 0x4E2E, 0x4E2F, 0x4E31,
- 0x4E33, 0x4E35, 0x4E37, 0x4E3C, 0x4E40, 0x4E41, 0x4E42, 0x4E44,
- 0x4E46, 0x4E4A, 0x4E51, 0x4E55, 0x4E57, 0x4E5A, 0x4E5B, 0x4E62,
- 0x4E63, 0x4E64, 0x4E65, 0x4E67, 0x4E68, 0x4E6A, 0x4E6B, 0x4E6C,
- 0x4E6D, 0x4E6E, 0x4E6F, 0x4E72, 0x4E74, 0x4E75, 0x4E76, 0x4E77,
- 0x4E78, 0x4E79, 0x4E7A, 0x4E7B, 0x4E7C, 0x4E7D, 0x4E7F, 0x4E80,
- 0x4E81, 0x4E82, 0x4E83, 0x4E84, 0x4E85, 0x4E87, 0x4E8A,
- /* GB 0x8180..0x81FE */
- 0x4E90, 0x4E96, 0x4E97, 0x4E99, 0x4E9C, 0x4E9D, 0x4E9E, 0x4EA3,
- 0x4EAA, 0x4EAF, 0x4EB0, 0x4EB1, 0x4EB4, 0x4EB6, 0x4EB7, 0x4EB8,
- 0x4EB9, 0x4EBC, 0x4EBD, 0x4EBE, 0x4EC8, 0x4ECC, 0x4ECF, 0x4ED0,
- 0x4ED2, 0x4EDA, 0x4EDB, 0x4EDC, 0x4EE0, 0x4EE2, 0x4EE6, 0x4EE7,
- 0x4EE9, 0x4EED, 0x4EEE, 0x4EEF, 0x4EF1, 0x4EF4, 0x4EF8, 0x4EF9,
- 0x4EFA, 0x4EFC, 0x4EFE, 0x4F00, 0x4F02, 0x4F03, 0x4F04, 0x4F05,
- 0x4F06, 0x4F07, 0x4F08, 0x4F0B, 0x4F0C, 0x4F12, 0x4F13, 0x4F14,
- 0x4F15, 0x4F16, 0x4F1C, 0x4F1D, 0x4F21, 0x4F23, 0x4F28, 0x4F29,
- 0x4F2C, 0x4F2D, 0x4F2E, 0x4F31, 0x4F33, 0x4F35, 0x4F37, 0x4F39,
- 0x4F3B, 0x4F3E, 0x4F3F, 0x4F40, 0x4F41, 0x4F42, 0x4F44, 0x4F45,
- 0x4F47, 0x4F48, 0x4F49, 0x4F4A, 0x4F4B, 0x4F4C, 0x4F52, 0x4F54,
- 0x4F56, 0x4F61, 0x4F62, 0x4F66, 0x4F68, 0x4F6A, 0x4F6B, 0x4F6D,
- 0x4F6E, 0x4F71, 0x4F72, 0x4F75, 0x4F77, 0x4F78, 0x4F79, 0x4F7A,
- 0x4F7D, 0x4F80, 0x4F81, 0x4F82, 0x4F85, 0x4F86, 0x4F87, 0x4F8A,
- 0x4F8C, 0x4F8E, 0x4F90, 0x4F92, 0x4F93, 0x4F95, 0x4F96, 0x4F98,
- 0x4F99, 0x4F9A, 0x4F9C, 0x4F9E, 0x4F9F, 0x4FA1, 0x4FA2,
- /* GB 0x8240..0x827E */
- 0x4FA4, 0x4FAB, 0x4FAD, 0x4FB0, 0x4FB1, 0x4FB2, 0x4FB3, 0x4FB4,
- 0x4FB6, 0x4FB7, 0x4FB8, 0x4FB9, 0x4FBA, 0x4FBB, 0x4FBC, 0x4FBD,
- 0x4FBE, 0x4FC0, 0x4FC1, 0x4FC2, 0x4FC6, 0x4FC7, 0x4FC8, 0x4FC9,
- 0x4FCB, 0x4FCC, 0x4FCD, 0x4FD2, 0x4FD3, 0x4FD4, 0x4FD5, 0x4FD6,
- 0x4FD9, 0x4FDB, 0x4FE0, 0x4FE2, 0x4FE4, 0x4FE5, 0x4FE7, 0x4FEB,
- 0x4FEC, 0x4FF0, 0x4FF2, 0x4FF4, 0x4FF5, 0x4FF6, 0x4FF7, 0x4FF9,
- 0x4FFB, 0x4FFC, 0x4FFD, 0x4FFF, 0x5000, 0x5001, 0x5002, 0x5003,
- 0x5004, 0x5005, 0x5006, 0x5007, 0x5008, 0x5009, 0x500A,
- /* GB 0x8280..0x82FE */
- 0x500B, 0x500E, 0x5010, 0x5011, 0x5013, 0x5015, 0x5016, 0x5017,
- 0x501B, 0x501D, 0x501E, 0x5020, 0x5022, 0x5023, 0x5024, 0x5027,
- 0x502B, 0x502F, 0x5030, 0x5031, 0x5032, 0x5033, 0x5034, 0x5035,
- 0x5036, 0x5037, 0x5038, 0x5039, 0x503B, 0x503D, 0x503F, 0x5040,
- 0x5041, 0x5042, 0x5044, 0x5045, 0x5046, 0x5049, 0x504A, 0x504B,
- 0x504D, 0x5050, 0x5051, 0x5052, 0x5053, 0x5054, 0x5056, 0x5057,
- 0x5058, 0x5059, 0x505B, 0x505D, 0x505E, 0x505F, 0x5060, 0x5061,
- 0x5062, 0x5063, 0x5064, 0x5066, 0x5067, 0x5068, 0x5069, 0x506A,
- 0x506B, 0x506D, 0x506E, 0x506F, 0x5070, 0x5071, 0x5072, 0x5073,
- 0x5074, 0x5075, 0x5078, 0x5079, 0x507A, 0x507C, 0x507D, 0x5081,
- 0x5082, 0x5083, 0x5084, 0x5086, 0x5087, 0x5089, 0x508A, 0x508B,
- 0x508C, 0x508E, 0x508F, 0x5090, 0x5091, 0x5092, 0x5093, 0x5094,
- 0x5095, 0x5096, 0x5097, 0x5098, 0x5099, 0x509A, 0x509B, 0x509C,
- 0x509D, 0x509E, 0x509F, 0x50A0, 0x50A1, 0x50A2, 0x50A4, 0x50A6,
- 0x50AA, 0x50AB, 0x50AD, 0x50AE, 0x50AF, 0x50B0, 0x50B1, 0x50B3,
- 0x50B4, 0x50B5, 0x50B6, 0x50B7, 0x50B8, 0x50B9, 0x50BC,
- /* GB 0x8340..0x837E */
- 0x50BD, 0x50BE, 0x50BF, 0x50C0, 0x50C1, 0x50C2, 0x50C3, 0x50C4,
- 0x50C5, 0x50C6, 0x50C7, 0x50C8, 0x50C9, 0x50CA, 0x50CB, 0x50CC,
- 0x50CD, 0x50CE, 0x50D0, 0x50D1, 0x50D2, 0x50D3, 0x50D4, 0x50D5,
- 0x50D7, 0x50D8, 0x50D9, 0x50DB, 0x50DC, 0x50DD, 0x50DE, 0x50DF,
- 0x50E0, 0x50E1, 0x50E2, 0x50E3, 0x50E4, 0x50E5, 0x50E8, 0x50E9,
- 0x50EA, 0x50EB, 0x50EF, 0x50F0, 0x50F1, 0x50F2, 0x50F4, 0x50F6,
- 0x50F7, 0x50F8, 0x50F9, 0x50FA, 0x50FC, 0x50FD, 0x50FE, 0x50FF,
- 0x5100, 0x5101, 0x5102, 0x5103, 0x5104, 0x5105, 0x5108,
- /* GB 0x8380..0x83FE */
- 0x5109, 0x510A, 0x510C, 0x510D, 0x510E, 0x510F, 0x5110, 0x5111,
- 0x5113, 0x5114, 0x5115, 0x5116, 0x5117, 0x5118, 0x5119, 0x511A,
- 0x511B, 0x511C, 0x511D, 0x511E, 0x511F, 0x5120, 0x5122, 0x5123,
- 0x5124, 0x5125, 0x5126, 0x5127, 0x5128, 0x5129, 0x512A, 0x512B,
- 0x512C, 0x512D, 0x512E, 0x512F, 0x5130, 0x5131, 0x5132, 0x5133,
- 0x5134, 0x5135, 0x5136, 0x5137, 0x5138, 0x5139, 0x513A, 0x513B,
- 0x513C, 0x513D, 0x513E, 0x5142, 0x5147, 0x514A, 0x514C, 0x514E,
- 0x514F, 0x5150, 0x5152, 0x5153, 0x5157, 0x5158, 0x5159, 0x515B,
- 0x515D, 0x515E, 0x515F, 0x5160, 0x5161, 0x5163, 0x5164, 0x5166,
- 0x5167, 0x5169, 0x516A, 0x516F, 0x5172, 0x517A, 0x517E, 0x517F,
- 0x5183, 0x5184, 0x5186, 0x5187, 0x518A, 0x518B, 0x518E, 0x518F,
- 0x5190, 0x5191, 0x5193, 0x5194, 0x5198, 0x519A, 0x519D, 0x519E,
- 0x519F, 0x51A1, 0x51A3, 0x51A6, 0x51A7, 0x51A8, 0x51A9, 0x51AA,
- 0x51AD, 0x51AE, 0x51B4, 0x51B8, 0x51B9, 0x51BA, 0x51BE, 0x51BF,
- 0x51C1, 0x51C2, 0x51C3, 0x51C5, 0x51C8, 0x51CA, 0x51CD, 0x51CE,
- 0x51D0, 0x51D2, 0x51D3, 0x51D4, 0x51D5, 0x51D6, 0x51D7,
- /* GB 0x8440..0x847E */
- 0x51D8, 0x51D9, 0x51DA, 0x51DC, 0x51DE, 0x51DF, 0x51E2, 0x51E3,
- 0x51E5, 0x51E6, 0x51E7, 0x51E8, 0x51E9, 0x51EA, 0x51EC, 0x51EE,
- 0x51F1, 0x51F2, 0x51F4, 0x51F7, 0x51FE, 0x5204, 0x5205, 0x5209,
- 0x520B, 0x520C, 0x520F, 0x5210, 0x5213, 0x5214, 0x5215, 0x521C,
- 0x521E, 0x521F, 0x5221, 0x5222, 0x5223, 0x5225, 0x5226, 0x5227,
- 0x522A, 0x522C, 0x522F, 0x5231, 0x5232, 0x5234, 0x5235, 0x523C,
- 0x523E, 0x5244, 0x5245, 0x5246, 0x5247, 0x5248, 0x5249, 0x524B,
- 0x524E, 0x524F, 0x5252, 0x5253, 0x5255, 0x5257, 0x5258,
- /* GB 0x8480..0x84FE */
- 0x5259, 0x525A, 0x525B, 0x525D, 0x525F, 0x5260, 0x5262, 0x5263,
- 0x5264, 0x5266, 0x5268, 0x526B, 0x526C, 0x526D, 0x526E, 0x5270,
- 0x5271, 0x5273, 0x5274, 0x5275, 0x5276, 0x5277, 0x5278, 0x5279,
- 0x527A, 0x527B, 0x527C, 0x527E, 0x5280, 0x5283, 0x5284, 0x5285,
- 0x5286, 0x5287, 0x5289, 0x528A, 0x528B, 0x528C, 0x528D, 0x528E,
- 0x528F, 0x5291, 0x5292, 0x5294, 0x5295, 0x5296, 0x5297, 0x5298,
- 0x5299, 0x529A, 0x529C, 0x52A4, 0x52A5, 0x52A6, 0x52A7, 0x52AE,
- 0x52AF, 0x52B0, 0x52B4, 0x52B5, 0x52B6, 0x52B7, 0x52B8, 0x52B9,
- 0x52BA, 0x52BB, 0x52BC, 0x52BD, 0x52C0, 0x52C1, 0x52C2, 0x52C4,
- 0x52C5, 0x52C6, 0x52C8, 0x52CA, 0x52CC, 0x52CD, 0x52CE, 0x52CF,
- 0x52D1, 0x52D3, 0x52D4, 0x52D5, 0x52D7, 0x52D9, 0x52DA, 0x52DB,
- 0x52DC, 0x52DD, 0x52DE, 0x52E0, 0x52E1, 0x52E2, 0x52E3, 0x52E5,
- 0x52E6, 0x52E7, 0x52E8, 0x52E9, 0x52EA, 0x52EB, 0x52EC, 0x52ED,
- 0x52EE, 0x52EF, 0x52F1, 0x52F2, 0x52F3, 0x52F4, 0x52F5, 0x52F6,
- 0x52F7, 0x52F8, 0x52FB, 0x52FC, 0x52FD, 0x5301, 0x5302, 0x5303,
- 0x5304, 0x5307, 0x5309, 0x530A, 0x530B, 0x530C, 0x530E,
- /* GB 0x8540..0x857E */
- 0x5311, 0x5312, 0x5313, 0x5314, 0x5318, 0x531B, 0x531C, 0x531E,
- 0x531F, 0x5322, 0x5324, 0x5325, 0x5327, 0x5328, 0x5329, 0x532B,
- 0x532C, 0x532D, 0x532F, 0x5330, 0x5331, 0x5332, 0x5333, 0x5334,
- 0x5335, 0x5336, 0x5337, 0x5338, 0x533C, 0x533D, 0x5340, 0x5342,
- 0x5344, 0x5346, 0x534B, 0x534C, 0x534D, 0x5350, 0x5354, 0x5358,
- 0x5359, 0x535B, 0x535D, 0x5365, 0x5368, 0x536A, 0x536C, 0x536D,
- 0x5372, 0x5376, 0x5379, 0x537B, 0x537C, 0x537D, 0x537E, 0x5380,
- 0x5381, 0x5383, 0x5387, 0x5388, 0x538A, 0x538E, 0x538F,
- /* GB 0x8580..0x85FE */
- 0x5390, 0x5391, 0x5392, 0x5393, 0x5394, 0x5396, 0x5397, 0x5399,
- 0x539B, 0x539C, 0x539E, 0x53A0, 0x53A1, 0x53A4, 0x53A7, 0x53AA,
- 0x53AB, 0x53AC, 0x53AD, 0x53AF, 0x53B0, 0x53B1, 0x53B2, 0x53B3,
- 0x53B4, 0x53B5, 0x53B7, 0x53B8, 0x53B9, 0x53BA, 0x53BC, 0x53BD,
- 0x53BE, 0x53C0, 0x53C3, 0x53C4, 0x53C5, 0x53C6, 0x53C7, 0x53CE,
- 0x53CF, 0x53D0, 0x53D2, 0x53D3, 0x53D5, 0x53DA, 0x53DC, 0x53DD,
- 0x53DE, 0x53E1, 0x53E2, 0x53E7, 0x53F4, 0x53FA, 0x53FE, 0x53FF,
- 0x5400, 0x5402, 0x5405, 0x5407, 0x540B, 0x5414, 0x5418, 0x5419,
- 0x541A, 0x541C, 0x5422, 0x5424, 0x5425, 0x542A, 0x5430, 0x5433,
- 0x5436, 0x5437, 0x543A, 0x543D, 0x543F, 0x5441, 0x5442, 0x5444,
- 0x5445, 0x5447, 0x5449, 0x544C, 0x544D, 0x544E, 0x544F, 0x5451,
- 0x545A, 0x545D, 0x545E, 0x545F, 0x5460, 0x5461, 0x5463, 0x5465,
- 0x5467, 0x5469, 0x546A, 0x546B, 0x546C, 0x546D, 0x546E, 0x546F,
- 0x5470, 0x5474, 0x5479, 0x547A, 0x547E, 0x547F, 0x5481, 0x5483,
- 0x5485, 0x5487, 0x5488, 0x5489, 0x548A, 0x548D, 0x5491, 0x5493,
- 0x5497, 0x5498, 0x549C, 0x549E, 0x549F, 0x54A0, 0x54A1,
- /* GB 0x8640..0x867E */
- 0x54A2, 0x54A5, 0x54AE, 0x54B0, 0x54B2, 0x54B5, 0x54B6, 0x54B7,
- 0x54B9, 0x54BA, 0x54BC, 0x54BE, 0x54C3, 0x54C5, 0x54CA, 0x54CB,
- 0x54D6, 0x54D8, 0x54DB, 0x54E0, 0x54E1, 0x54E2, 0x54E3, 0x54E4,
- 0x54EB, 0x54EC, 0x54EF, 0x54F0, 0x54F1, 0x54F4, 0x54F5, 0x54F6,
- 0x54F7, 0x54F8, 0x54F9, 0x54FB, 0x54FE, 0x5500, 0x5502, 0x5503,
- 0x5504, 0x5505, 0x5508, 0x550A, 0x550B, 0x550C, 0x550D, 0x550E,
- 0x5512, 0x5513, 0x5515, 0x5516, 0x5517, 0x5518, 0x5519, 0x551A,
- 0x551C, 0x551D, 0x551E, 0x551F, 0x5521, 0x5525, 0x5526,
- /* GB 0x8680..0x86FE */
- 0x5528, 0x5529, 0x552B, 0x552D, 0x5532, 0x5534, 0x5535, 0x5536,
- 0x5538, 0x5539, 0x553A, 0x553B, 0x553D, 0x5540, 0x5542, 0x5545,
- 0x5547, 0x5548, 0x554B, 0x554C, 0x554D, 0x554E, 0x554F, 0x5551,
- 0x5552, 0x5553, 0x5554, 0x5557, 0x5558, 0x5559, 0x555A, 0x555B,
- 0x555D, 0x555E, 0x555F, 0x5560, 0x5562, 0x5563, 0x5568, 0x5569,
- 0x556B, 0x556F, 0x5570, 0x5571, 0x5572, 0x5573, 0x5574, 0x5579,
- 0x557A, 0x557D, 0x557F, 0x5585, 0x5586, 0x558C, 0x558D, 0x558E,
- 0x5590, 0x5592, 0x5593, 0x5595, 0x5596, 0x5597, 0x559A, 0x559B,
- 0x559E, 0x55A0, 0x55A1, 0x55A2, 0x55A3, 0x55A4, 0x55A5, 0x55A6,
- 0x55A8, 0x55A9, 0x55AA, 0x55AB, 0x55AC, 0x55AD, 0x55AE, 0x55AF,
- 0x55B0, 0x55B2, 0x55B4, 0x55B6, 0x55B8, 0x55BA, 0x55BC, 0x55BF,
- 0x55C0, 0x55C1, 0x55C2, 0x55C3, 0x55C6, 0x55C7, 0x55C8, 0x55CA,
- 0x55CB, 0x55CE, 0x55CF, 0x55D0, 0x55D5, 0x55D7, 0x55D8, 0x55D9,
- 0x55DA, 0x55DB, 0x55DE, 0x55E0, 0x55E2, 0x55E7, 0x55E9, 0x55ED,
- 0x55EE, 0x55F0, 0x55F1, 0x55F4, 0x55F6, 0x55F8, 0x55F9, 0x55FA,
- 0x55FB, 0x55FC, 0x55FF, 0x5602, 0x5603, 0x5604, 0x5605,
- /* GB 0x8740..0x877E */
- 0x5606, 0x5607, 0x560A, 0x560B, 0x560D, 0x5610, 0x5611, 0x5612,
- 0x5613, 0x5614, 0x5615, 0x5616, 0x5617, 0x5619, 0x561A, 0x561C,
- 0x561D, 0x5620, 0x5621, 0x5622, 0x5625, 0x5626, 0x5628, 0x5629,
- 0x562A, 0x562B, 0x562E, 0x562F, 0x5630, 0x5633, 0x5635, 0x5637,
- 0x5638, 0x563A, 0x563C, 0x563D, 0x563E, 0x5640, 0x5641, 0x5642,
- 0x5643, 0x5644, 0x5645, 0x5646, 0x5647, 0x5648, 0x5649, 0x564A,
- 0x564B, 0x564F, 0x5650, 0x5651, 0x5652, 0x5653, 0x5655, 0x5656,
- 0x565A, 0x565B, 0x565D, 0x565E, 0x565F, 0x5660, 0x5661,
- /* GB 0x8780..0x87FE */
- 0x5663, 0x5665, 0x5666, 0x5667, 0x566D, 0x566E, 0x566F, 0x5670,
- 0x5672, 0x5673, 0x5674, 0x5675, 0x5677, 0x5678, 0x5679, 0x567A,
- 0x567D, 0x567E, 0x567F, 0x5680, 0x5681, 0x5682, 0x5683, 0x5684,
- 0x5687, 0x5688, 0x5689, 0x568A, 0x568B, 0x568C, 0x568D, 0x5690,
- 0x5691, 0x5692, 0x5694, 0x5695, 0x5696, 0x5697, 0x5698, 0x5699,
- 0x569A, 0x569B, 0x569C, 0x569D, 0x569E, 0x569F, 0x56A0, 0x56A1,
- 0x56A2, 0x56A4, 0x56A5, 0x56A6, 0x56A7, 0x56A8, 0x56A9, 0x56AA,
- 0x56AB, 0x56AC, 0x56AD, 0x56AE, 0x56B0, 0x56B1, 0x56B2, 0x56B3,
- 0x56B4, 0x56B5, 0x56B6, 0x56B8, 0x56B9, 0x56BA, 0x56BB, 0x56BD,
- 0x56BE, 0x56BF, 0x56C0, 0x56C1, 0x56C2, 0x56C3, 0x56C4, 0x56C5,
- 0x56C6, 0x56C7, 0x56C8, 0x56C9, 0x56CB, 0x56CC, 0x56CD, 0x56CE,
- 0x56CF, 0x56D0, 0x56D1, 0x56D2, 0x56D3, 0x56D5, 0x56D6, 0x56D8,
- 0x56D9, 0x56DC, 0x56E3, 0x56E5, 0x56E6, 0x56E7, 0x56E8, 0x56E9,
- 0x56EA, 0x56EC, 0x56EE, 0x56EF, 0x56F2, 0x56F3, 0x56F6, 0x56F7,
- 0x56F8, 0x56FB, 0x56FC, 0x5700, 0x5701, 0x5702, 0x5705, 0x5707,
- 0x570B, 0x570C, 0x570D, 0x570E, 0x570F, 0x5710, 0x5711,
- /* GB 0x8840..0x887E */
- 0x5712, 0x5713, 0x5714, 0x5715, 0x5716, 0x5717, 0x5718, 0x5719,
- 0x571A, 0x571B, 0x571D, 0x571E, 0x5720, 0x5721, 0x5722, 0x5724,
- 0x5725, 0x5726, 0x5727, 0x572B, 0x5731, 0x5732, 0x5734, 0x5735,
- 0x5736, 0x5737, 0x5738, 0x573C, 0x573D, 0x573F, 0x5741, 0x5743,
- 0x5744, 0x5745, 0x5746, 0x5748, 0x5749, 0x574B, 0x5752, 0x5753,
- 0x5754, 0x5755, 0x5756, 0x5758, 0x5759, 0x5762, 0x5763, 0x5765,
- 0x5767, 0x576C, 0x576E, 0x5770, 0x5771, 0x5772, 0x5774, 0x5775,
- 0x5778, 0x5779, 0x577A, 0x577D, 0x577E, 0x577F, 0x5780,
- /* GB 0x8880..0x88FE */
- 0x5781, 0x5787, 0x5788, 0x5789, 0x578A, 0x578D, 0x578E, 0x578F,
- 0x5790, 0x5791, 0x5794, 0x5795, 0x5796, 0x5797, 0x5798, 0x5799,
- 0x579A, 0x579C, 0x579D, 0x579E, 0x579F, 0x57A5, 0x57A8, 0x57AA,
- 0x57AC, 0x57AF, 0x57B0, 0x57B1, 0x57B3, 0x57B5, 0x57B6, 0x57B7,
- 0x57B9, 0x57BA, 0x57BB, 0x57BC, 0x57BD, 0x57BE, 0x57BF, 0x57C0,
- 0x57C1, 0x57C4, 0x57C5, 0x57C6, 0x57C7, 0x57C8, 0x57C9, 0x57CA,
- 0x57CC, 0x57CD, 0x57D0, 0x57D1, 0x57D3, 0x57D6, 0x57D7, 0x57DB,
- 0x57DC, 0x57DE, 0x57E1, 0x57E2, 0x57E3, 0x57E5, 0x57E6, 0x57E7,
- 0x57E8, 0x57E9, 0x57EA, 0x57EB, 0x57EC, 0x57EE, 0x57F0, 0x57F1,
- 0x57F2, 0x57F3, 0x57F5, 0x57F6, 0x57F7, 0x57FB, 0x57FC, 0x57FE,
- 0x57FF, 0x5801, 0x5803, 0x5804, 0x5805, 0x5808, 0x5809, 0x580A,
- 0x580C, 0x580E, 0x580F, 0x5810, 0x5812, 0x5813, 0x5814, 0x5816,
- 0x5817, 0x5818, 0x581A, 0x581B, 0x581C, 0x581D, 0x581F, 0x5822,
- 0x5823, 0x5825, 0x5826, 0x5827, 0x5828, 0x5829, 0x582B, 0x582C,
- 0x582D, 0x582E, 0x582F, 0x5831, 0x5832, 0x5833, 0x5834, 0x5836,
- 0x5837, 0x5838, 0x5839, 0x583A, 0x583B, 0x583C, 0x583D,
- /* GB 0x8940..0x897E */
- 0x583E, 0x583F, 0x5840, 0x5841, 0x5842, 0x5843, 0x5845, 0x5846,
- 0x5847, 0x5848, 0x5849, 0x584A, 0x584B, 0x584E, 0x584F, 0x5850,
- 0x5852, 0x5853, 0x5855, 0x5856, 0x5857, 0x5859, 0x585A, 0x585B,
- 0x585C, 0x585D, 0x585F, 0x5860, 0x5861, 0x5862, 0x5863, 0x5864,
- 0x5866, 0x5867, 0x5868, 0x5869, 0x586A, 0x586D, 0x586E, 0x586F,
- 0x5870, 0x5871, 0x5872, 0x5873, 0x5874, 0x5875, 0x5876, 0x5877,
- 0x5878, 0x5879, 0x587A, 0x587B, 0x587C, 0x587D, 0x587F, 0x5882,
- 0x5884, 0x5886, 0x5887, 0x5888, 0x588A, 0x588B, 0x588C,
- /* GB 0x8980..0x89FE */
- 0x588D, 0x588E, 0x588F, 0x5890, 0x5891, 0x5894, 0x5895, 0x5896,
- 0x5897, 0x5898, 0x589B, 0x589C, 0x589D, 0x58A0, 0x58A1, 0x58A2,
- 0x58A3, 0x58A4, 0x58A5, 0x58A6, 0x58A7, 0x58AA, 0x58AB, 0x58AC,
- 0x58AD, 0x58AE, 0x58AF, 0x58B0, 0x58B1, 0x58B2, 0x58B3, 0x58B4,
- 0x58B5, 0x58B6, 0x58B7, 0x58B8, 0x58B9, 0x58BA, 0x58BB, 0x58BD,
- 0x58BE, 0x58BF, 0x58C0, 0x58C2, 0x58C3, 0x58C4, 0x58C6, 0x58C7,
- 0x58C8, 0x58C9, 0x58CA, 0x58CB, 0x58CC, 0x58CD, 0x58CE, 0x58CF,
- 0x58D0, 0x58D2, 0x58D3, 0x58D4, 0x58D6, 0x58D7, 0x58D8, 0x58D9,
- 0x58DA, 0x58DB, 0x58DC, 0x58DD, 0x58DE, 0x58DF, 0x58E0, 0x58E1,
- 0x58E2, 0x58E3, 0x58E5, 0x58E6, 0x58E7, 0x58E8, 0x58E9, 0x58EA,
- 0x58ED, 0x58EF, 0x58F1, 0x58F2, 0x58F4, 0x58F5, 0x58F7, 0x58F8,
- 0x58FA, 0x58FB, 0x58FC, 0x58FD, 0x58FE, 0x58FF, 0x5900, 0x5901,
- 0x5903, 0x5905, 0x5906, 0x5908, 0x5909, 0x590A, 0x590B, 0x590C,
- 0x590E, 0x5910, 0x5911, 0x5912, 0x5913, 0x5917, 0x5918, 0x591B,
- 0x591D, 0x591E, 0x5920, 0x5921, 0x5922, 0x5923, 0x5926, 0x5928,
- 0x592C, 0x5930, 0x5932, 0x5933, 0x5935, 0x5936, 0x593B,
- /* GB 0x8A40..0x8A7E */
- 0x593D, 0x593E, 0x593F, 0x5940, 0x5943, 0x5945, 0x5946, 0x594A,
- 0x594C, 0x594D, 0x5950, 0x5952, 0x5953, 0x5959, 0x595B, 0x595C,
- 0x595D, 0x595E, 0x595F, 0x5961, 0x5963, 0x5964, 0x5966, 0x5967,
- 0x5968, 0x5969, 0x596A, 0x596B, 0x596C, 0x596D, 0x596E, 0x596F,
- 0x5970, 0x5971, 0x5972, 0x5975, 0x5977, 0x597A, 0x597B, 0x597C,
- 0x597E, 0x597F, 0x5980, 0x5985, 0x5989, 0x598B, 0x598C, 0x598E,
- 0x598F, 0x5990, 0x5991, 0x5994, 0x5995, 0x5998, 0x599A, 0x599B,
- 0x599C, 0x599D, 0x599F, 0x59A0, 0x59A1, 0x59A2, 0x59A6,
- /* GB 0x8A80..0x8AFE */
- 0x59A7, 0x59AC, 0x59AD, 0x59B0, 0x59B1, 0x59B3, 0x59B4, 0x59B5,
- 0x59B6, 0x59B7, 0x59B8, 0x59BA, 0x59BC, 0x59BD, 0x59BF, 0x59C0,
- 0x59C1, 0x59C2, 0x59C3, 0x59C4, 0x59C5, 0x59C7, 0x59C8, 0x59C9,
- 0x59CC, 0x59CD, 0x59CE, 0x59CF, 0x59D5, 0x59D6, 0x59D9, 0x59DB,
- 0x59DE, 0x59DF, 0x59E0, 0x59E1, 0x59E2, 0x59E4, 0x59E6, 0x59E7,
- 0x59E9, 0x59EA, 0x59EB, 0x59ED, 0x59EE, 0x59EF, 0x59F0, 0x59F1,
- 0x59F2, 0x59F3, 0x59F4, 0x59F5, 0x59F6, 0x59F7, 0x59F8, 0x59FA,
- 0x59FC, 0x59FD, 0x59FE, 0x5A00, 0x5A02, 0x5A0A, 0x5A0B, 0x5A0D,
- 0x5A0E, 0x5A0F, 0x5A10, 0x5A12, 0x5A14, 0x5A15, 0x5A16, 0x5A17,
- 0x5A19, 0x5A1A, 0x5A1B, 0x5A1D, 0x5A1E, 0x5A21, 0x5A22, 0x5A24,
- 0x5A26, 0x5A27, 0x5A28, 0x5A2A, 0x5A2B, 0x5A2C, 0x5A2D, 0x5A2E,
- 0x5A2F, 0x5A30, 0x5A33, 0x5A35, 0x5A37, 0x5A38, 0x5A39, 0x5A3A,
- 0x5A3B, 0x5A3D, 0x5A3E, 0x5A3F, 0x5A41, 0x5A42, 0x5A43, 0x5A44,
- 0x5A45, 0x5A47, 0x5A48, 0x5A4B, 0x5A4C, 0x5A4D, 0x5A4E, 0x5A4F,
- 0x5A50, 0x5A51, 0x5A52, 0x5A53, 0x5A54, 0x5A56, 0x5A57, 0x5A58,
- 0x5A59, 0x5A5B, 0x5A5C, 0x5A5D, 0x5A5E, 0x5A5F, 0x5A60,
- /* GB 0x8B40..0x8B7E */
- 0x5A61, 0x5A63, 0x5A64, 0x5A65, 0x5A66, 0x5A68, 0x5A69, 0x5A6B,
- 0x5A6C, 0x5A6D, 0x5A6E, 0x5A6F, 0x5A70, 0x5A71, 0x5A72, 0x5A73,
- 0x5A78, 0x5A79, 0x5A7B, 0x5A7C, 0x5A7D, 0x5A7E, 0x5A80, 0x5A81,
- 0x5A82, 0x5A83, 0x5A84, 0x5A85, 0x5A86, 0x5A87, 0x5A88, 0x5A89,
- 0x5A8A, 0x5A8B, 0x5A8C, 0x5A8D, 0x5A8E, 0x5A8F, 0x5A90, 0x5A91,
- 0x5A93, 0x5A94, 0x5A95, 0x5A96, 0x5A97, 0x5A98, 0x5A99, 0x5A9C,
- 0x5A9D, 0x5A9E, 0x5A9F, 0x5AA0, 0x5AA1, 0x5AA2, 0x5AA3, 0x5AA4,
- 0x5AA5, 0x5AA6, 0x5AA7, 0x5AA8, 0x5AA9, 0x5AAB, 0x5AAC,
- /* GB 0x8B80..0x8BFE */
- 0x5AAD, 0x5AAE, 0x5AAF, 0x5AB0, 0x5AB1, 0x5AB4, 0x5AB6, 0x5AB7,
- 0x5AB9, 0x5ABA, 0x5ABB, 0x5ABC, 0x5ABD, 0x5ABF, 0x5AC0, 0x5AC3,
- 0x5AC4, 0x5AC5, 0x5AC6, 0x5AC7, 0x5AC8, 0x5ACA, 0x5ACB, 0x5ACD,
- 0x5ACE, 0x5ACF, 0x5AD0, 0x5AD1, 0x5AD3, 0x5AD5, 0x5AD7, 0x5AD9,
- 0x5ADA, 0x5ADB, 0x5ADD, 0x5ADE, 0x5ADF, 0x5AE2, 0x5AE4, 0x5AE5,
- 0x5AE7, 0x5AE8, 0x5AEA, 0x5AEC, 0x5AED, 0x5AEE, 0x5AEF, 0x5AF0,
- 0x5AF2, 0x5AF3, 0x5AF4, 0x5AF5, 0x5AF6, 0x5AF7, 0x5AF8, 0x5AF9,
- 0x5AFA, 0x5AFB, 0x5AFC, 0x5AFD, 0x5AFE, 0x5AFF, 0x5B00, 0x5B01,
- 0x5B02, 0x5B03, 0x5B04, 0x5B05, 0x5B06, 0x5B07, 0x5B08, 0x5B0A,
- 0x5B0B, 0x5B0C, 0x5B0D, 0x5B0E, 0x5B0F, 0x5B10, 0x5B11, 0x5B12,
- 0x5B13, 0x5B14, 0x5B15, 0x5B18, 0x5B19, 0x5B1A, 0x5B1B, 0x5B1C,
- 0x5B1D, 0x5B1E, 0x5B1F, 0x5B20, 0x5B21, 0x5B22, 0x5B23, 0x5B24,
- 0x5B25, 0x5B26, 0x5B27, 0x5B28, 0x5B29, 0x5B2A, 0x5B2B, 0x5B2C,
- 0x5B2D, 0x5B2E, 0x5B2F, 0x5B30, 0x5B31, 0x5B33, 0x5B35, 0x5B36,
- 0x5B38, 0x5B39, 0x5B3A, 0x5B3B, 0x5B3C, 0x5B3D, 0x5B3E, 0x5B3F,
- 0x5B41, 0x5B42, 0x5B43, 0x5B44, 0x5B45, 0x5B46, 0x5B47,
- /* GB 0x8C40..0x8C7E */
- 0x5B48, 0x5B49, 0x5B4A, 0x5B4B, 0x5B4C, 0x5B4D, 0x5B4E, 0x5B4F,
- 0x5B52, 0x5B56, 0x5B5E, 0x5B60, 0x5B61, 0x5B67, 0x5B68, 0x5B6B,
- 0x5B6D, 0x5B6E, 0x5B6F, 0x5B72, 0x5B74, 0x5B76, 0x5B77, 0x5B78,
- 0x5B79, 0x5B7B, 0x5B7C, 0x5B7E, 0x5B7F, 0x5B82, 0x5B86, 0x5B8A,
- 0x5B8D, 0x5B8E, 0x5B90, 0x5B91, 0x5B92, 0x5B94, 0x5B96, 0x5B9F,
- 0x5BA7, 0x5BA8, 0x5BA9, 0x5BAC, 0x5BAD, 0x5BAE, 0x5BAF, 0x5BB1,
- 0x5BB2, 0x5BB7, 0x5BBA, 0x5BBB, 0x5BBC, 0x5BC0, 0x5BC1, 0x5BC3,
- 0x5BC8, 0x5BC9, 0x5BCA, 0x5BCB, 0x5BCD, 0x5BCE, 0x5BCF,
- /* GB 0x8C80..0x8CFE */
- 0x5BD1, 0x5BD4, 0x5BD5, 0x5BD6, 0x5BD7, 0x5BD8, 0x5BD9, 0x5BDA,
- 0x5BDB, 0x5BDC, 0x5BE0, 0x5BE2, 0x5BE3, 0x5BE6, 0x5BE7, 0x5BE9,
- 0x5BEA, 0x5BEB, 0x5BEC, 0x5BED, 0x5BEF, 0x5BF1, 0x5BF2, 0x5BF3,
- 0x5BF4, 0x5BF5, 0x5BF6, 0x5BF7, 0x5BFD, 0x5BFE, 0x5C00, 0x5C02,
- 0x5C03, 0x5C05, 0x5C07, 0x5C08, 0x5C0B, 0x5C0C, 0x5C0D, 0x5C0E,
- 0x5C10, 0x5C12, 0x5C13, 0x5C17, 0x5C19, 0x5C1B, 0x5C1E, 0x5C1F,
- 0x5C20, 0x5C21, 0x5C23, 0x5C26, 0x5C28, 0x5C29, 0x5C2A, 0x5C2B,
- 0x5C2D, 0x5C2E, 0x5C2F, 0x5C30, 0x5C32, 0x5C33, 0x5C35, 0x5C36,
- 0x5C37, 0x5C43, 0x5C44, 0x5C46, 0x5C47, 0x5C4C, 0x5C4D, 0x5C52,
- 0x5C53, 0x5C54, 0x5C56, 0x5C57, 0x5C58, 0x5C5A, 0x5C5B, 0x5C5C,
- 0x5C5D, 0x5C5F, 0x5C62, 0x5C64, 0x5C67, 0x5C68, 0x5C69, 0x5C6A,
- 0x5C6B, 0x5C6C, 0x5C6D, 0x5C70, 0x5C72, 0x5C73, 0x5C74, 0x5C75,
- 0x5C76, 0x5C77, 0x5C78, 0x5C7B, 0x5C7C, 0x5C7D, 0x5C7E, 0x5C80,
- 0x5C83, 0x5C84, 0x5C85, 0x5C86, 0x5C87, 0x5C89, 0x5C8A, 0x5C8B,
- 0x5C8E, 0x5C8F, 0x5C92, 0x5C93, 0x5C95, 0x5C9D, 0x5C9E, 0x5C9F,
- 0x5CA0, 0x5CA1, 0x5CA4, 0x5CA5, 0x5CA6, 0x5CA7, 0x5CA8,
- /* GB 0x8D40..0x8D7E */
- 0x5CAA, 0x5CAE, 0x5CAF, 0x5CB0, 0x5CB2, 0x5CB4, 0x5CB6, 0x5CB9,
- 0x5CBA, 0x5CBB, 0x5CBC, 0x5CBE, 0x5CC0, 0x5CC2, 0x5CC3, 0x5CC5,
- 0x5CC6, 0x5CC7, 0x5CC8, 0x5CC9, 0x5CCA, 0x5CCC, 0x5CCD, 0x5CCE,
- 0x5CCF, 0x5CD0, 0x5CD1, 0x5CD3, 0x5CD4, 0x5CD5, 0x5CD6, 0x5CD7,
- 0x5CD8, 0x5CDA, 0x5CDB, 0x5CDC, 0x5CDD, 0x5CDE, 0x5CDF, 0x5CE0,
- 0x5CE2, 0x5CE3, 0x5CE7, 0x5CE9, 0x5CEB, 0x5CEC, 0x5CEE, 0x5CEF,
- 0x5CF1, 0x5CF2, 0x5CF3, 0x5CF4, 0x5CF5, 0x5CF6, 0x5CF7, 0x5CF8,
- 0x5CF9, 0x5CFA, 0x5CFC, 0x5CFD, 0x5CFE, 0x5CFF, 0x5D00,
- /* GB 0x8D80..0x8DFE */
- 0x5D01, 0x5D04, 0x5D05, 0x5D08, 0x5D09, 0x5D0A, 0x5D0B, 0x5D0C,
- 0x5D0D, 0x5D0F, 0x5D10, 0x5D11, 0x5D12, 0x5D13, 0x5D15, 0x5D17,
- 0x5D18, 0x5D19, 0x5D1A, 0x5D1C, 0x5D1D, 0x5D1F, 0x5D20, 0x5D21,
- 0x5D22, 0x5D23, 0x5D25, 0x5D28, 0x5D2A, 0x5D2B, 0x5D2C, 0x5D2F,
- 0x5D30, 0x5D31, 0x5D32, 0x5D33, 0x5D35, 0x5D36, 0x5D37, 0x5D38,
- 0x5D39, 0x5D3A, 0x5D3B, 0x5D3C, 0x5D3F, 0x5D40, 0x5D41, 0x5D42,
- 0x5D43, 0x5D44, 0x5D45, 0x5D46, 0x5D48, 0x5D49, 0x5D4D, 0x5D4E,
- 0x5D4F, 0x5D50, 0x5D51, 0x5D52, 0x5D53, 0x5D54, 0x5D55, 0x5D56,
- 0x5D57, 0x5D59, 0x5D5A, 0x5D5C, 0x5D5E, 0x5D5F, 0x5D60, 0x5D61,
- 0x5D62, 0x5D63, 0x5D64, 0x5D65, 0x5D66, 0x5D67, 0x5D68, 0x5D6A,
- 0x5D6D, 0x5D6E, 0x5D70, 0x5D71, 0x5D72, 0x5D73, 0x5D75, 0x5D76,
- 0x5D77, 0x5D78, 0x5D79, 0x5D7A, 0x5D7B, 0x5D7C, 0x5D7D, 0x5D7E,
- 0x5D7F, 0x5D80, 0x5D81, 0x5D83, 0x5D84, 0x5D85, 0x5D86, 0x5D87,
- 0x5D88, 0x5D89, 0x5D8A, 0x5D8B, 0x5D8C, 0x5D8D, 0x5D8E, 0x5D8F,
- 0x5D90, 0x5D91, 0x5D92, 0x5D93, 0x5D94, 0x5D95, 0x5D96, 0x5D97,
- 0x5D98, 0x5D9A, 0x5D9B, 0x5D9C, 0x5D9E, 0x5D9F, 0x5DA0,
- /* GB 0x8E40..0x8E7E */
- 0x5DA1, 0x5DA2, 0x5DA3, 0x5DA4, 0x5DA5, 0x5DA6, 0x5DA7, 0x5DA8,
- 0x5DA9, 0x5DAA, 0x5DAB, 0x5DAC, 0x5DAD, 0x5DAE, 0x5DAF, 0x5DB0,
- 0x5DB1, 0x5DB2, 0x5DB3, 0x5DB4, 0x5DB5, 0x5DB6, 0x5DB8, 0x5DB9,
- 0x5DBA, 0x5DBB, 0x5DBC, 0x5DBD, 0x5DBE, 0x5DBF, 0x5DC0, 0x5DC1,
- 0x5DC2, 0x5DC3, 0x5DC4, 0x5DC6, 0x5DC7, 0x5DC8, 0x5DC9, 0x5DCA,
- 0x5DCB, 0x5DCC, 0x5DCE, 0x5DCF, 0x5DD0, 0x5DD1, 0x5DD2, 0x5DD3,
- 0x5DD4, 0x5DD5, 0x5DD6, 0x5DD7, 0x5DD8, 0x5DD9, 0x5DDA, 0x5DDC,
- 0x5DDF, 0x5DE0, 0x5DE3, 0x5DE4, 0x5DEA, 0x5DEC, 0x5DED,
- /* GB 0x8E80..0x8EFE */
- 0x5DF0, 0x5DF5, 0x5DF6, 0x5DF8, 0x5DF9, 0x5DFA, 0x5DFB, 0x5DFC,
- 0x5DFF, 0x5E00, 0x5E04, 0x5E07, 0x5E09, 0x5E0A, 0x5E0B, 0x5E0D,
- 0x5E0E, 0x5E12, 0x5E13, 0x5E17, 0x5E1E, 0x5E1F, 0x5E20, 0x5E21,
- 0x5E22, 0x5E23, 0x5E24, 0x5E25, 0x5E28, 0x5E29, 0x5E2A, 0x5E2B,
- 0x5E2C, 0x5E2F, 0x5E30, 0x5E32, 0x5E33, 0x5E34, 0x5E35, 0x5E36,
- 0x5E39, 0x5E3A, 0x5E3E, 0x5E3F, 0x5E40, 0x5E41, 0x5E43, 0x5E46,
- 0x5E47, 0x5E48, 0x5E49, 0x5E4A, 0x5E4B, 0x5E4D, 0x5E4E, 0x5E4F,
- 0x5E50, 0x5E51, 0x5E52, 0x5E53, 0x5E56, 0x5E57, 0x5E58, 0x5E59,
- 0x5E5A, 0x5E5C, 0x5E5D, 0x5E5F, 0x5E60, 0x5E63, 0x5E64, 0x5E65,
- 0x5E66, 0x5E67, 0x5E68, 0x5E69, 0x5E6A, 0x5E6B, 0x5E6C, 0x5E6D,
- 0x5E6E, 0x5E6F, 0x5E70, 0x5E71, 0x5E75, 0x5E77, 0x5E79, 0x5E7E,
- 0x5E81, 0x5E82, 0x5E83, 0x5E85, 0x5E88, 0x5E89, 0x5E8C, 0x5E8D,
- 0x5E8E, 0x5E92, 0x5E98, 0x5E9B, 0x5E9D, 0x5EA1, 0x5EA2, 0x5EA3,
- 0x5EA4, 0x5EA8, 0x5EA9, 0x5EAA, 0x5EAB, 0x5EAC, 0x5EAE, 0x5EAF,
- 0x5EB0, 0x5EB1, 0x5EB2, 0x5EB4, 0x5EBA, 0x5EBB, 0x5EBC, 0x5EBD,
- 0x5EBF, 0x5EC0, 0x5EC1, 0x5EC2, 0x5EC3, 0x5EC4, 0x5EC5,
- /* GB 0x8F40..0x8F7E */
- 0x5EC6, 0x5EC7, 0x5EC8, 0x5ECB, 0x5ECC, 0x5ECD, 0x5ECE, 0x5ECF,
- 0x5ED0, 0x5ED4, 0x5ED5, 0x5ED7, 0x5ED8, 0x5ED9, 0x5EDA, 0x5EDC,
- 0x5EDD, 0x5EDE, 0x5EDF, 0x5EE0, 0x5EE1, 0x5EE2, 0x5EE3, 0x5EE4,
- 0x5EE5, 0x5EE6, 0x5EE7, 0x5EE9, 0x5EEB, 0x5EEC, 0x5EED, 0x5EEE,
- 0x5EEF, 0x5EF0, 0x5EF1, 0x5EF2, 0x5EF3, 0x5EF5, 0x5EF8, 0x5EF9,
- 0x5EFB, 0x5EFC, 0x5EFD, 0x5F05, 0x5F06, 0x5F07, 0x5F09, 0x5F0C,
- 0x5F0D, 0x5F0E, 0x5F10, 0x5F12, 0x5F14, 0x5F16, 0x5F19, 0x5F1A,
- 0x5F1C, 0x5F1D, 0x5F1E, 0x5F21, 0x5F22, 0x5F23, 0x5F24,
- /* GB 0x8F80..0x8FFE */
- 0x5F28, 0x5F2B, 0x5F2C, 0x5F2E, 0x5F30, 0x5F32, 0x5F33, 0x5F34,
- 0x5F35, 0x5F36, 0x5F37, 0x5F38, 0x5F3B, 0x5F3D, 0x5F3E, 0x5F3F,
- 0x5F41, 0x5F42, 0x5F43, 0x5F44, 0x5F45, 0x5F46, 0x5F47, 0x5F48,
- 0x5F49, 0x5F4A, 0x5F4B, 0x5F4C, 0x5F4D, 0x5F4E, 0x5F4F, 0x5F51,
- 0x5F54, 0x5F59, 0x5F5A, 0x5F5B, 0x5F5C, 0x5F5E, 0x5F5F, 0x5F60,
- 0x5F63, 0x5F65, 0x5F67, 0x5F68, 0x5F6B, 0x5F6E, 0x5F6F, 0x5F72,
- 0x5F74, 0x5F75, 0x5F76, 0x5F78, 0x5F7A, 0x5F7D, 0x5F7E, 0x5F7F,
- 0x5F83, 0x5F86, 0x5F8D, 0x5F8E, 0x5F8F, 0x5F91, 0x5F93, 0x5F94,
- 0x5F96, 0x5F9A, 0x5F9B, 0x5F9D, 0x5F9E, 0x5F9F, 0x5FA0, 0x5FA2,
- 0x5FA3, 0x5FA4, 0x5FA5, 0x5FA6, 0x5FA7, 0x5FA9, 0x5FAB, 0x5FAC,
- 0x5FAF, 0x5FB0, 0x5FB1, 0x5FB2, 0x5FB3, 0x5FB4, 0x5FB6, 0x5FB8,
- 0x5FB9, 0x5FBA, 0x5FBB, 0x5FBE, 0x5FBF, 0x5FC0, 0x5FC1, 0x5FC2,
- 0x5FC7, 0x5FC8, 0x5FCA, 0x5FCB, 0x5FCE, 0x5FD3, 0x5FD4, 0x5FD5,
- 0x5FDA, 0x5FDB, 0x5FDC, 0x5FDE, 0x5FDF, 0x5FE2, 0x5FE3, 0x5FE5,
- 0x5FE6, 0x5FE8, 0x5FE9, 0x5FEC, 0x5FEF, 0x5FF0, 0x5FF2, 0x5FF3,
- 0x5FF4, 0x5FF6, 0x5FF7, 0x5FF9, 0x5FFA, 0x5FFC, 0x6007,
- /* GB 0x9040..0x907E */
- 0x6008, 0x6009, 0x600B, 0x600C, 0x6010, 0x6011, 0x6013, 0x6017,
- 0x6018, 0x601A, 0x601E, 0x601F, 0x6022, 0x6023, 0x6024, 0x602C,
- 0x602D, 0x602E, 0x6030, 0x6031, 0x6032, 0x6033, 0x6034, 0x6036,
- 0x6037, 0x6038, 0x6039, 0x603A, 0x603D, 0x603E, 0x6040, 0x6044,
- 0x6045, 0x6046, 0x6047, 0x6048, 0x6049, 0x604A, 0x604C, 0x604E,
- 0x604F, 0x6051, 0x6053, 0x6054, 0x6056, 0x6057, 0x6058, 0x605B,
- 0x605C, 0x605E, 0x605F, 0x6060, 0x6061, 0x6065, 0x6066, 0x606E,
- 0x6071, 0x6072, 0x6074, 0x6075, 0x6077, 0x607E, 0x6080,
- /* GB 0x9080..0x90FE */
- 0x6081, 0x6082, 0x6085, 0x6086, 0x6087, 0x6088, 0x608A, 0x608B,
- 0x608E, 0x608F, 0x6090, 0x6091, 0x6093, 0x6095, 0x6097, 0x6098,
- 0x6099, 0x609C, 0x609E, 0x60A1, 0x60A2, 0x60A4, 0x60A5, 0x60A7,
- 0x60A9, 0x60AA, 0x60AE, 0x60B0, 0x60B3, 0x60B5, 0x60B6, 0x60B7,
- 0x60B9, 0x60BA, 0x60BD, 0x60BE, 0x60BF, 0x60C0, 0x60C1, 0x60C2,
- 0x60C3, 0x60C4, 0x60C7, 0x60C8, 0x60C9, 0x60CC, 0x60CD, 0x60CE,
- 0x60CF, 0x60D0, 0x60D2, 0x60D3, 0x60D4, 0x60D6, 0x60D7, 0x60D9,
- 0x60DB, 0x60DE, 0x60E1, 0x60E2, 0x60E3, 0x60E4, 0x60E5, 0x60EA,
- 0x60F1, 0x60F2, 0x60F5, 0x60F7, 0x60F8, 0x60FB, 0x60FC, 0x60FD,
- 0x60FE, 0x60FF, 0x6102, 0x6103, 0x6104, 0x6105, 0x6107, 0x610A,
- 0x610B, 0x610C, 0x6110, 0x6111, 0x6112, 0x6113, 0x6114, 0x6116,
- 0x6117, 0x6118, 0x6119, 0x611B, 0x611C, 0x611D, 0x611E, 0x6121,
- 0x6122, 0x6125, 0x6128, 0x6129, 0x612A, 0x612C, 0x612D, 0x612E,
- 0x612F, 0x6130, 0x6131, 0x6132, 0x6133, 0x6134, 0x6135, 0x6136,
- 0x6137, 0x6138, 0x6139, 0x613A, 0x613B, 0x613C, 0x613D, 0x613E,
- 0x6140, 0x6141, 0x6142, 0x6143, 0x6144, 0x6145, 0x6146,
- /* GB 0x9140..0x917E */
- 0x6147, 0x6149, 0x614B, 0x614D, 0x614F, 0x6150, 0x6152, 0x6153,
- 0x6154, 0x6156, 0x6157, 0x6158, 0x6159, 0x615A, 0x615B, 0x615C,
- 0x615E, 0x615F, 0x6160, 0x6161, 0x6163, 0x6164, 0x6165, 0x6166,
- 0x6169, 0x616A, 0x616B, 0x616C, 0x616D, 0x616E, 0x616F, 0x6171,
- 0x6172, 0x6173, 0x6174, 0x6176, 0x6178, 0x6179, 0x617A, 0x617B,
- 0x617C, 0x617D, 0x617E, 0x617F, 0x6180, 0x6181, 0x6182, 0x6183,
- 0x6184, 0x6185, 0x6186, 0x6187, 0x6188, 0x6189, 0x618A, 0x618C,
- 0x618D, 0x618F, 0x6190, 0x6191, 0x6192, 0x6193, 0x6195,
- /* GB 0x9180..0x91FE */
- 0x6196, 0x6197, 0x6198, 0x6199, 0x619A, 0x619B, 0x619C, 0x619E,
- 0x619F, 0x61A0, 0x61A1, 0x61A2, 0x61A3, 0x61A4, 0x61A5, 0x61A6,
- 0x61AA, 0x61AB, 0x61AD, 0x61AE, 0x61AF, 0x61B0, 0x61B1, 0x61B2,
- 0x61B3, 0x61B4, 0x61B5, 0x61B6, 0x61B8, 0x61B9, 0x61BA, 0x61BB,
- 0x61BC, 0x61BD, 0x61BF, 0x61C0, 0x61C1, 0x61C3, 0x61C4, 0x61C5,
- 0x61C6, 0x61C7, 0x61C9, 0x61CC, 0x61CD, 0x61CE, 0x61CF, 0x61D0,
- 0x61D3, 0x61D5, 0x61D6, 0x61D7, 0x61D8, 0x61D9, 0x61DA, 0x61DB,
- 0x61DC, 0x61DD, 0x61DE, 0x61DF, 0x61E0, 0x61E1, 0x61E2, 0x61E3,
- 0x61E4, 0x61E5, 0x61E7, 0x61E8, 0x61E9, 0x61EA, 0x61EB, 0x61EC,
- 0x61ED, 0x61EE, 0x61EF, 0x61F0, 0x61F1, 0x61F2, 0x61F3, 0x61F4,
- 0x61F6, 0x61F7, 0x61F8, 0x61F9, 0x61FA, 0x61FB, 0x61FC, 0x61FD,
- 0x61FE, 0x6200, 0x6201, 0x6202, 0x6203, 0x6204, 0x6205, 0x6207,
- 0x6209, 0x6213, 0x6214, 0x6219, 0x621C, 0x621D, 0x621E, 0x6220,
- 0x6223, 0x6226, 0x6227, 0x6228, 0x6229, 0x622B, 0x622D, 0x622F,
- 0x6230, 0x6231, 0x6232, 0x6235, 0x6236, 0x6238, 0x6239, 0x623A,
- 0x623B, 0x623C, 0x6242, 0x6244, 0x6245, 0x6246, 0x624A,
- /* GB 0x9240..0x927E */
- 0x624F, 0x6250, 0x6255, 0x6256, 0x6257, 0x6259, 0x625A, 0x625C,
- 0x625D, 0x625E, 0x625F, 0x6260, 0x6261, 0x6262, 0x6264, 0x6265,
- 0x6268, 0x6271, 0x6272, 0x6274, 0x6275, 0x6277, 0x6278, 0x627A,
- 0x627B, 0x627D, 0x6281, 0x6282, 0x6283, 0x6285, 0x6286, 0x6287,
- 0x6288, 0x628B, 0x628C, 0x628D, 0x628E, 0x628F, 0x6290, 0x6294,
- 0x6299, 0x629C, 0x629D, 0x629E, 0x62A3, 0x62A6, 0x62A7, 0x62A9,
- 0x62AA, 0x62AD, 0x62AE, 0x62AF, 0x62B0, 0x62B2, 0x62B3, 0x62B4,
- 0x62B6, 0x62B7, 0x62B8, 0x62BA, 0x62BE, 0x62C0, 0x62C1,
- /* GB 0x9280..0x92FE */
- 0x62C3, 0x62CB, 0x62CF, 0x62D1, 0x62D5, 0x62DD, 0x62DE, 0x62E0,
- 0x62E1, 0x62E4, 0x62EA, 0x62EB, 0x62F0, 0x62F2, 0x62F5, 0x62F8,
- 0x62F9, 0x62FA, 0x62FB, 0x6300, 0x6303, 0x6304, 0x6305, 0x6306,
- 0x630A, 0x630B, 0x630C, 0x630D, 0x630F, 0x6310, 0x6312, 0x6313,
- 0x6314, 0x6315, 0x6317, 0x6318, 0x6319, 0x631C, 0x6326, 0x6327,
- 0x6329, 0x632C, 0x632D, 0x632E, 0x6330, 0x6331, 0x6333, 0x6334,
- 0x6335, 0x6336, 0x6337, 0x6338, 0x633B, 0x633C, 0x633E, 0x633F,
- 0x6340, 0x6341, 0x6344, 0x6347, 0x6348, 0x634A, 0x6351, 0x6352,
- 0x6353, 0x6354, 0x6356, 0x6357, 0x6358, 0x6359, 0x635A, 0x635B,
- 0x635C, 0x635D, 0x6360, 0x6364, 0x6365, 0x6366, 0x6368, 0x636A,
- 0x636B, 0x636C, 0x636F, 0x6370, 0x6372, 0x6373, 0x6374, 0x6375,
- 0x6378, 0x6379, 0x637C, 0x637D, 0x637E, 0x637F, 0x6381, 0x6383,
- 0x6384, 0x6385, 0x6386, 0x638B, 0x638D, 0x6391, 0x6393, 0x6394,
- 0x6395, 0x6397, 0x6399, 0x639A, 0x639B, 0x639C, 0x639D, 0x639E,
- 0x639F, 0x63A1, 0x63A4, 0x63A6, 0x63AB, 0x63AF, 0x63B1, 0x63B2,
- 0x63B5, 0x63B6, 0x63B9, 0x63BB, 0x63BD, 0x63BF, 0x63C0,
- /* GB 0x9340..0x937E */
- 0x63C1, 0x63C2, 0x63C3, 0x63C5, 0x63C7, 0x63C8, 0x63CA, 0x63CB,
- 0x63CC, 0x63D1, 0x63D3, 0x63D4, 0x63D5, 0x63D7, 0x63D8, 0x63D9,
- 0x63DA, 0x63DB, 0x63DC, 0x63DD, 0x63DF, 0x63E2, 0x63E4, 0x63E5,
- 0x63E6, 0x63E7, 0x63E8, 0x63EB, 0x63EC, 0x63EE, 0x63EF, 0x63F0,
- 0x63F1, 0x63F3, 0x63F5, 0x63F7, 0x63F9, 0x63FA, 0x63FB, 0x63FC,
- 0x63FE, 0x6403, 0x6404, 0x6406, 0x6407, 0x6408, 0x6409, 0x640A,
- 0x640D, 0x640E, 0x6411, 0x6412, 0x6415, 0x6416, 0x6417, 0x6418,
- 0x6419, 0x641A, 0x641D, 0x641F, 0x6422, 0x6423, 0x6424,
- /* GB 0x9380..0x93FE */
- 0x6425, 0x6427, 0x6428, 0x6429, 0x642B, 0x642E, 0x642F, 0x6430,
- 0x6431, 0x6432, 0x6433, 0x6435, 0x6436, 0x6437, 0x6438, 0x6439,
- 0x643B, 0x643C, 0x643E, 0x6440, 0x6442, 0x6443, 0x6449, 0x644B,
- 0x644C, 0x644D, 0x644E, 0x644F, 0x6450, 0x6451, 0x6453, 0x6455,
- 0x6456, 0x6457, 0x6459, 0x645A, 0x645B, 0x645C, 0x645D, 0x645F,
- 0x6460, 0x6461, 0x6462, 0x6463, 0x6464, 0x6465, 0x6466, 0x6468,
- 0x646A, 0x646B, 0x646C, 0x646E, 0x646F, 0x6470, 0x6471, 0x6472,
- 0x6473, 0x6474, 0x6475, 0x6476, 0x6477, 0x647B, 0x647C, 0x647D,
- 0x647E, 0x647F, 0x6480, 0x6481, 0x6483, 0x6486, 0x6488, 0x6489,
- 0x648A, 0x648B, 0x648C, 0x648D, 0x648E, 0x648F, 0x6490, 0x6493,
- 0x6494, 0x6497, 0x6498, 0x649A, 0x649B, 0x649C, 0x649D, 0x649F,
- 0x64A0, 0x64A1, 0x64A2, 0x64A3, 0x64A5, 0x64A6, 0x64A7, 0x64A8,
- 0x64AA, 0x64AB, 0x64AF, 0x64B1, 0x64B2, 0x64B3, 0x64B4, 0x64B6,
- 0x64B9, 0x64BB, 0x64BD, 0x64BE, 0x64BF, 0x64C1, 0x64C3, 0x64C4,
- 0x64C6, 0x64C7, 0x64C8, 0x64C9, 0x64CA, 0x64CB, 0x64CC, 0x64CF,
- 0x64D1, 0x64D3, 0x64D4, 0x64D5, 0x64D6, 0x64D9, 0x64DA,
- /* GB 0x9440..0x947E */
- 0x64DB, 0x64DC, 0x64DD, 0x64DF, 0x64E0, 0x64E1, 0x64E3, 0x64E5,
- 0x64E7, 0x64E8, 0x64E9, 0x64EA, 0x64EB, 0x64EC, 0x64ED, 0x64EE,
- 0x64EF, 0x64F0, 0x64F1, 0x64F2, 0x64F3, 0x64F4, 0x64F5, 0x64F6,
- 0x64F7, 0x64F8, 0x64F9, 0x64FA, 0x64FB, 0x64FC, 0x64FD, 0x64FE,
- 0x64FF, 0x6501, 0x6502, 0x6503, 0x6504, 0x6505, 0x6506, 0x6507,
- 0x6508, 0x650A, 0x650B, 0x650C, 0x650D, 0x650E, 0x650F, 0x6510,
- 0x6511, 0x6513, 0x6514, 0x6515, 0x6516, 0x6517, 0x6519, 0x651A,
- 0x651B, 0x651C, 0x651D, 0x651E, 0x651F, 0x6520, 0x6521,
- /* GB 0x9480..0x94FE */
- 0x6522, 0x6523, 0x6524, 0x6526, 0x6527, 0x6528, 0x6529, 0x652A,
- 0x652C, 0x652D, 0x6530, 0x6531, 0x6532, 0x6533, 0x6537, 0x653A,
- 0x653C, 0x653D, 0x6540, 0x6541, 0x6542, 0x6543, 0x6544, 0x6546,
- 0x6547, 0x654A, 0x654B, 0x654D, 0x654E, 0x6550, 0x6552, 0x6553,
- 0x6554, 0x6557, 0x6558, 0x655A, 0x655C, 0x655F, 0x6560, 0x6561,
- 0x6564, 0x6565, 0x6567, 0x6568, 0x6569, 0x656A, 0x656D, 0x656E,
- 0x656F, 0x6571, 0x6573, 0x6575, 0x6576, 0x6578, 0x6579, 0x657A,
- 0x657B, 0x657C, 0x657D, 0x657E, 0x657F, 0x6580, 0x6581, 0x6582,
- 0x6583, 0x6584, 0x6585, 0x6586, 0x6588, 0x6589, 0x658A, 0x658D,
- 0x658E, 0x658F, 0x6592, 0x6594, 0x6595, 0x6596, 0x6598, 0x659A,
- 0x659D, 0x659E, 0x65A0, 0x65A2, 0x65A3, 0x65A6, 0x65A8, 0x65AA,
- 0x65AC, 0x65AE, 0x65B1, 0x65B2, 0x65B3, 0x65B4, 0x65B5, 0x65B6,
- 0x65B7, 0x65B8, 0x65BA, 0x65BB, 0x65BE, 0x65BF, 0x65C0, 0x65C2,
- 0x65C7, 0x65C8, 0x65C9, 0x65CA, 0x65CD, 0x65D0, 0x65D1, 0x65D3,
- 0x65D4, 0x65D5, 0x65D8, 0x65D9, 0x65DA, 0x65DB, 0x65DC, 0x65DD,
- 0x65DE, 0x65DF, 0x65E1, 0x65E3, 0x65E4, 0x65EA, 0x65EB,
- /* GB 0x9540..0x957E */
- 0x65F2, 0x65F3, 0x65F4, 0x65F5, 0x65F8, 0x65F9, 0x65FB, 0x65FC,
- 0x65FD, 0x65FE, 0x65FF, 0x6601, 0x6604, 0x6605, 0x6607, 0x6608,
- 0x6609, 0x660B, 0x660D, 0x6610, 0x6611, 0x6612, 0x6616, 0x6617,
- 0x6618, 0x661A, 0x661B, 0x661C, 0x661E, 0x6621, 0x6622, 0x6623,
- 0x6624, 0x6626, 0x6629, 0x662A, 0x662B, 0x662C, 0x662E, 0x6630,
- 0x6632, 0x6633, 0x6637, 0x6638, 0x6639, 0x663A, 0x663B, 0x663D,
- 0x663F, 0x6640, 0x6642, 0x6644, 0x6645, 0x6646, 0x6647, 0x6648,
- 0x6649, 0x664A, 0x664D, 0x664E, 0x6650, 0x6651, 0x6658,
- /* GB 0x9580..0x95FE */
- 0x6659, 0x665B, 0x665C, 0x665D, 0x665E, 0x6660, 0x6662, 0x6663,
- 0x6665, 0x6667, 0x6669, 0x666A, 0x666B, 0x666C, 0x666D, 0x6671,
- 0x6672, 0x6673, 0x6675, 0x6678, 0x6679, 0x667B, 0x667C, 0x667D,
- 0x667F, 0x6680, 0x6681, 0x6683, 0x6685, 0x6686, 0x6688, 0x6689,
- 0x668A, 0x668B, 0x668D, 0x668E, 0x668F, 0x6690, 0x6692, 0x6693,
- 0x6694, 0x6695, 0x6698, 0x6699, 0x669A, 0x669B, 0x669C, 0x669E,
- 0x669F, 0x66A0, 0x66A1, 0x66A2, 0x66A3, 0x66A4, 0x66A5, 0x66A6,
- 0x66A9, 0x66AA, 0x66AB, 0x66AC, 0x66AD, 0x66AF, 0x66B0, 0x66B1,
- 0x66B2, 0x66B3, 0x66B5, 0x66B6, 0x66B7, 0x66B8, 0x66BA, 0x66BB,
- 0x66BC, 0x66BD, 0x66BF, 0x66C0, 0x66C1, 0x66C2, 0x66C3, 0x66C4,
- 0x66C5, 0x66C6, 0x66C7, 0x66C8, 0x66C9, 0x66CA, 0x66CB, 0x66CC,
- 0x66CD, 0x66CE, 0x66CF, 0x66D0, 0x66D1, 0x66D2, 0x66D3, 0x66D4,
- 0x66D5, 0x66D6, 0x66D7, 0x66D8, 0x66DA, 0x66DE, 0x66DF, 0x66E0,
- 0x66E1, 0x66E2, 0x66E3, 0x66E4, 0x66E5, 0x66E7, 0x66E8, 0x66EA,
- 0x66EB, 0x66EC, 0x66ED, 0x66EE, 0x66EF, 0x66F1, 0x66F5, 0x66F6,
- 0x66F8, 0x66FA, 0x66FB, 0x66FD, 0x6701, 0x6702, 0x6703,
- /* GB 0x9640..0x967E */
- 0x6704, 0x6705, 0x6706, 0x6707, 0x670C, 0x670E, 0x670F, 0x6711,
- 0x6712, 0x6713, 0x6716, 0x6718, 0x6719, 0x671A, 0x671C, 0x671E,
- 0x6720, 0x6721, 0x6722, 0x6723, 0x6724, 0x6725, 0x6727, 0x6729,
- 0x672E, 0x6730, 0x6732, 0x6733, 0x6736, 0x6737, 0x6738, 0x6739,
- 0x673B, 0x673C, 0x673E, 0x673F, 0x6741, 0x6744, 0x6745, 0x6747,
- 0x674A, 0x674B, 0x674D, 0x6752, 0x6754, 0x6755, 0x6757, 0x6758,
- 0x6759, 0x675A, 0x675B, 0x675D, 0x6762, 0x6763, 0x6764, 0x6766,
- 0x6767, 0x676B, 0x676C, 0x676E, 0x6771, 0x6774, 0x6776,
- /* GB 0x9680..0x96FE */
- 0x6778, 0x6779, 0x677A, 0x677B, 0x677D, 0x6780, 0x6782, 0x6783,
- 0x6785, 0x6786, 0x6788, 0x678A, 0x678C, 0x678D, 0x678E, 0x678F,
- 0x6791, 0x6792, 0x6793, 0x6794, 0x6796, 0x6799, 0x679B, 0x679F,
- 0x67A0, 0x67A1, 0x67A4, 0x67A6, 0x67A9, 0x67AC, 0x67AE, 0x67B1,
- 0x67B2, 0x67B4, 0x67B9, 0x67BA, 0x67BB, 0x67BC, 0x67BD, 0x67BE,
- 0x67BF, 0x67C0, 0x67C2, 0x67C5, 0x67C6, 0x67C7, 0x67C8, 0x67C9,
- 0x67CA, 0x67CB, 0x67CC, 0x67CD, 0x67CE, 0x67D5, 0x67D6, 0x67D7,
- 0x67DB, 0x67DF, 0x67E1, 0x67E3, 0x67E4, 0x67E6, 0x67E7, 0x67E8,
- 0x67EA, 0x67EB, 0x67ED, 0x67EE, 0x67F2, 0x67F5, 0x67F6, 0x67F7,
- 0x67F8, 0x67F9, 0x67FA, 0x67FB, 0x67FC, 0x67FE, 0x6801, 0x6802,
- 0x6803, 0x6804, 0x6806, 0x680D, 0x6810, 0x6812, 0x6814, 0x6815,
- 0x6818, 0x6819, 0x681A, 0x681B, 0x681C, 0x681E, 0x681F, 0x6820,
- 0x6822, 0x6823, 0x6824, 0x6825, 0x6826, 0x6827, 0x6828, 0x682B,
- 0x682C, 0x682D, 0x682E, 0x682F, 0x6830, 0x6831, 0x6834, 0x6835,
- 0x6836, 0x683A, 0x683B, 0x683F, 0x6847, 0x684B, 0x684D, 0x684F,
- 0x6852, 0x6856, 0x6857, 0x6858, 0x6859, 0x685A, 0x685B,
- /* GB 0x9740..0x977E */
- 0x685C, 0x685D, 0x685E, 0x685F, 0x686A, 0x686C, 0x686D, 0x686E,
- 0x686F, 0x6870, 0x6871, 0x6872, 0x6873, 0x6875, 0x6878, 0x6879,
- 0x687A, 0x687B, 0x687C, 0x687D, 0x687E, 0x687F, 0x6880, 0x6882,
- 0x6884, 0x6887, 0x6888, 0x6889, 0x688A, 0x688B, 0x688C, 0x688D,
- 0x688E, 0x6890, 0x6891, 0x6892, 0x6894, 0x6895, 0x6896, 0x6898,
- 0x6899, 0x689A, 0x689B, 0x689C, 0x689D, 0x689E, 0x689F, 0x68A0,
- 0x68A1, 0x68A3, 0x68A4, 0x68A5, 0x68A9, 0x68AA, 0x68AB, 0x68AC,
- 0x68AE, 0x68B1, 0x68B2, 0x68B4, 0x68B6, 0x68B7, 0x68B8,
- /* GB 0x9780..0x97FE */
- 0x68B9, 0x68BA, 0x68BB, 0x68BC, 0x68BD, 0x68BE, 0x68BF, 0x68C1,
- 0x68C3, 0x68C4, 0x68C5, 0x68C6, 0x68C7, 0x68C8, 0x68CA, 0x68CC,
- 0x68CE, 0x68CF, 0x68D0, 0x68D1, 0x68D3, 0x68D4, 0x68D6, 0x68D7,
- 0x68D9, 0x68DB, 0x68DC, 0x68DD, 0x68DE, 0x68DF, 0x68E1, 0x68E2,
- 0x68E4, 0x68E5, 0x68E6, 0x68E7, 0x68E8, 0x68E9, 0x68EA, 0x68EB,
- 0x68EC, 0x68ED, 0x68EF, 0x68F2, 0x68F3, 0x68F4, 0x68F6, 0x68F7,
- 0x68F8, 0x68FB, 0x68FD, 0x68FE, 0x68FF, 0x6900, 0x6902, 0x6903,
- 0x6904, 0x6906, 0x6907, 0x6908, 0x6909, 0x690A, 0x690C, 0x690F,
- 0x6911, 0x6913, 0x6914, 0x6915, 0x6916, 0x6917, 0x6918, 0x6919,
- 0x691A, 0x691B, 0x691C, 0x691D, 0x691E, 0x6921, 0x6922, 0x6923,
- 0x6925, 0x6926, 0x6927, 0x6928, 0x6929, 0x692A, 0x692B, 0x692C,
- 0x692E, 0x692F, 0x6931, 0x6932, 0x6933, 0x6935, 0x6936, 0x6937,
- 0x6938, 0x693A, 0x693B, 0x693C, 0x693E, 0x6940, 0x6941, 0x6943,
- 0x6944, 0x6945, 0x6946, 0x6947, 0x6948, 0x6949, 0x694A, 0x694B,
- 0x694C, 0x694D, 0x694E, 0x694F, 0x6950, 0x6951, 0x6952, 0x6953,
- 0x6955, 0x6956, 0x6958, 0x6959, 0x695B, 0x695C, 0x695F,
- /* GB 0x9840..0x987E */
- 0x6961, 0x6962, 0x6964, 0x6965, 0x6967, 0x6968, 0x6969, 0x696A,
- 0x696C, 0x696D, 0x696F, 0x6970, 0x6972, 0x6973, 0x6974, 0x6975,
- 0x6976, 0x697A, 0x697B, 0x697D, 0x697E, 0x697F, 0x6981, 0x6983,
- 0x6985, 0x698A, 0x698B, 0x698C, 0x698E, 0x698F, 0x6990, 0x6991,
- 0x6992, 0x6993, 0x6996, 0x6997, 0x6999, 0x699A, 0x699D, 0x699E,
- 0x699F, 0x69A0, 0x69A1, 0x69A2, 0x69A3, 0x69A4, 0x69A5, 0x69A6,
- 0x69A9, 0x69AA, 0x69AC, 0x69AE, 0x69AF, 0x69B0, 0x69B2, 0x69B3,
- 0x69B5, 0x69B6, 0x69B8, 0x69B9, 0x69BA, 0x69BC, 0x69BD,
- /* GB 0x9880..0x98FE */
- 0x69BE, 0x69BF, 0x69C0, 0x69C2, 0x69C3, 0x69C4, 0x69C5, 0x69C6,
- 0x69C7, 0x69C8, 0x69C9, 0x69CB, 0x69CD, 0x69CF, 0x69D1, 0x69D2,
- 0x69D3, 0x69D5, 0x69D6, 0x69D7, 0x69D8, 0x69D9, 0x69DA, 0x69DC,
- 0x69DD, 0x69DE, 0x69E1, 0x69E2, 0x69E3, 0x69E4, 0x69E5, 0x69E6,
- 0x69E7, 0x69E8, 0x69E9, 0x69EA, 0x69EB, 0x69EC, 0x69EE, 0x69EF,
- 0x69F0, 0x69F1, 0x69F3, 0x69F4, 0x69F5, 0x69F6, 0x69F7, 0x69F8,
- 0x69F9, 0x69FA, 0x69FB, 0x69FC, 0x69FE, 0x6A00, 0x6A01, 0x6A02,
- 0x6A03, 0x6A04, 0x6A05, 0x6A06, 0x6A07, 0x6A08, 0x6A09, 0x6A0B,
- 0x6A0C, 0x6A0D, 0x6A0E, 0x6A0F, 0x6A10, 0x6A11, 0x6A12, 0x6A13,
- 0x6A14, 0x6A15, 0x6A16, 0x6A19, 0x6A1A, 0x6A1B, 0x6A1C, 0x6A1D,
- 0x6A1E, 0x6A20, 0x6A22, 0x6A23, 0x6A24, 0x6A25, 0x6A26, 0x6A27,
- 0x6A29, 0x6A2B, 0x6A2C, 0x6A2D, 0x6A2E, 0x6A30, 0x6A32, 0x6A33,
- 0x6A34, 0x6A36, 0x6A37, 0x6A38, 0x6A39, 0x6A3A, 0x6A3B, 0x6A3C,
- 0x6A3F, 0x6A40, 0x6A41, 0x6A42, 0x6A43, 0x6A45, 0x6A46, 0x6A48,
- 0x6A49, 0x6A4A, 0x6A4B, 0x6A4C, 0x6A4D, 0x6A4E, 0x6A4F, 0x6A51,
- 0x6A52, 0x6A53, 0x6A54, 0x6A55, 0x6A56, 0x6A57, 0x6A5A,
- /* GB 0x9940..0x997E */
- 0x6A5C, 0x6A5D, 0x6A5E, 0x6A5F, 0x6A60, 0x6A62, 0x6A63, 0x6A64,
- 0x6A66, 0x6A67, 0x6A68, 0x6A69, 0x6A6A, 0x6A6B, 0x6A6C, 0x6A6D,
- 0x6A6E, 0x6A6F, 0x6A70, 0x6A72, 0x6A73, 0x6A74, 0x6A75, 0x6A76,
- 0x6A77, 0x6A78, 0x6A7A, 0x6A7B, 0x6A7D, 0x6A7E, 0x6A7F, 0x6A81,
- 0x6A82, 0x6A83, 0x6A85, 0x6A86, 0x6A87, 0x6A88, 0x6A89, 0x6A8A,
- 0x6A8B, 0x6A8C, 0x6A8D, 0x6A8F, 0x6A92, 0x6A93, 0x6A94, 0x6A95,
- 0x6A96, 0x6A98, 0x6A99, 0x6A9A, 0x6A9B, 0x6A9C, 0x6A9D, 0x6A9E,
- 0x6A9F, 0x6AA1, 0x6AA2, 0x6AA3, 0x6AA4, 0x6AA5, 0x6AA6,
- /* GB 0x9980..0x99FE */
- 0x6AA7, 0x6AA8, 0x6AAA, 0x6AAD, 0x6AAE, 0x6AAF, 0x6AB0, 0x6AB1,
- 0x6AB2, 0x6AB3, 0x6AB4, 0x6AB5, 0x6AB6, 0x6AB7, 0x6AB8, 0x6AB9,
- 0x6ABA, 0x6ABB, 0x6ABC, 0x6ABD, 0x6ABE, 0x6ABF, 0x6AC0, 0x6AC1,
- 0x6AC2, 0x6AC3, 0x6AC4, 0x6AC5, 0x6AC6, 0x6AC7, 0x6AC8, 0x6AC9,
- 0x6ACA, 0x6ACB, 0x6ACC, 0x6ACD, 0x6ACE, 0x6ACF, 0x6AD0, 0x6AD1,
- 0x6AD2, 0x6AD3, 0x6AD4, 0x6AD5, 0x6AD6, 0x6AD7, 0x6AD8, 0x6AD9,
- 0x6ADA, 0x6ADB, 0x6ADC, 0x6ADD, 0x6ADE, 0x6ADF, 0x6AE0, 0x6AE1,
- 0x6AE2, 0x6AE3, 0x6AE4, 0x6AE5, 0x6AE6, 0x6AE7, 0x6AE8, 0x6AE9,
- 0x6AEA, 0x6AEB, 0x6AEC, 0x6AED, 0x6AEE, 0x6AEF, 0x6AF0, 0x6AF1,
- 0x6AF2, 0x6AF3, 0x6AF4, 0x6AF5, 0x6AF6, 0x6AF7, 0x6AF8, 0x6AF9,
- 0x6AFA, 0x6AFB, 0x6AFC, 0x6AFD, 0x6AFE, 0x6AFF, 0x6B00, 0x6B01,
- 0x6B02, 0x6B03, 0x6B04, 0x6B05, 0x6B06, 0x6B07, 0x6B08, 0x6B09,
- 0x6B0A, 0x6B0B, 0x6B0C, 0x6B0D, 0x6B0E, 0x6B0F, 0x6B10, 0x6B11,
- 0x6B12, 0x6B13, 0x6B14, 0x6B15, 0x6B16, 0x6B17, 0x6B18, 0x6B19,
- 0x6B1A, 0x6B1B, 0x6B1C, 0x6B1D, 0x6B1E, 0x6B1F, 0x6B25, 0x6B26,
- 0x6B28, 0x6B29, 0x6B2A, 0x6B2B, 0x6B2C, 0x6B2D, 0x6B2E,
- /* GB 0x9A40..0x9A7E */
- 0x6B2F, 0x6B30, 0x6B31, 0x6B33, 0x6B34, 0x6B35, 0x6B36, 0x6B38,
- 0x6B3B, 0x6B3C, 0x6B3D, 0x6B3F, 0x6B40, 0x6B41, 0x6B42, 0x6B44,
- 0x6B45, 0x6B48, 0x6B4A, 0x6B4B, 0x6B4D, 0x6B4E, 0x6B4F, 0x6B50,
- 0x6B51, 0x6B52, 0x6B53, 0x6B54, 0x6B55, 0x6B56, 0x6B57, 0x6B58,
- 0x6B5A, 0x6B5B, 0x6B5C, 0x6B5D, 0x6B5E, 0x6B5F, 0x6B60, 0x6B61,
- 0x6B68, 0x6B69, 0x6B6B, 0x6B6C, 0x6B6D, 0x6B6E, 0x6B6F, 0x6B70,
- 0x6B71, 0x6B72, 0x6B73, 0x6B74, 0x6B75, 0x6B76, 0x6B77, 0x6B78,
- 0x6B7A, 0x6B7D, 0x6B7E, 0x6B7F, 0x6B80, 0x6B85, 0x6B88,
- /* GB 0x9A80..0x9AFE */
- 0x6B8C, 0x6B8E, 0x6B8F, 0x6B90, 0x6B91, 0x6B94, 0x6B95, 0x6B97,
- 0x6B98, 0x6B99, 0x6B9C, 0x6B9D, 0x6B9E, 0x6B9F, 0x6BA0, 0x6BA2,
- 0x6BA3, 0x6BA4, 0x6BA5, 0x6BA6, 0x6BA7, 0x6BA8, 0x6BA9, 0x6BAB,
- 0x6BAC, 0x6BAD, 0x6BAE, 0x6BAF, 0x6BB0, 0x6BB1, 0x6BB2, 0x6BB6,
- 0x6BB8, 0x6BB9, 0x6BBA, 0x6BBB, 0x6BBC, 0x6BBD, 0x6BBE, 0x6BC0,
- 0x6BC3, 0x6BC4, 0x6BC6, 0x6BC7, 0x6BC8, 0x6BC9, 0x6BCA, 0x6BCC,
- 0x6BCE, 0x6BD0, 0x6BD1, 0x6BD8, 0x6BDA, 0x6BDC, 0x6BDD, 0x6BDE,
- 0x6BDF, 0x6BE0, 0x6BE2, 0x6BE3, 0x6BE4, 0x6BE5, 0x6BE6, 0x6BE7,
- 0x6BE8, 0x6BE9, 0x6BEC, 0x6BED, 0x6BEE, 0x6BF0, 0x6BF1, 0x6BF2,
- 0x6BF4, 0x6BF6, 0x6BF7, 0x6BF8, 0x6BFA, 0x6BFB, 0x6BFC, 0x6BFE,
- 0x6BFF, 0x6C00, 0x6C01, 0x6C02, 0x6C03, 0x6C04, 0x6C08, 0x6C09,
- 0x6C0A, 0x6C0B, 0x6C0C, 0x6C0E, 0x6C12, 0x6C17, 0x6C1C, 0x6C1D,
- 0x6C1E, 0x6C20, 0x6C23, 0x6C25, 0x6C2B, 0x6C2C, 0x6C2D, 0x6C31,
- 0x6C33, 0x6C36, 0x6C37, 0x6C39, 0x6C3A, 0x6C3B, 0x6C3C, 0x6C3E,
- 0x6C3F, 0x6C43, 0x6C44, 0x6C45, 0x6C48, 0x6C4B, 0x6C4C, 0x6C4D,
- 0x6C4E, 0x6C4F, 0x6C51, 0x6C52, 0x6C53, 0x6C56, 0x6C58,
- /* GB 0x9B40..0x9B7E */
- 0x6C59, 0x6C5A, 0x6C62, 0x6C63, 0x6C65, 0x6C66, 0x6C67, 0x6C6B,
- 0x6C6C, 0x6C6D, 0x6C6E, 0x6C6F, 0x6C71, 0x6C73, 0x6C75, 0x6C77,
- 0x6C78, 0x6C7A, 0x6C7B, 0x6C7C, 0x6C7F, 0x6C80, 0x6C84, 0x6C87,
- 0x6C8A, 0x6C8B, 0x6C8D, 0x6C8E, 0x6C91, 0x6C92, 0x6C95, 0x6C96,
- 0x6C97, 0x6C98, 0x6C9A, 0x6C9C, 0x6C9D, 0x6C9E, 0x6CA0, 0x6CA2,
- 0x6CA8, 0x6CAC, 0x6CAF, 0x6CB0, 0x6CB4, 0x6CB5, 0x6CB6, 0x6CB7,
- 0x6CBA, 0x6CC0, 0x6CC1, 0x6CC2, 0x6CC3, 0x6CC6, 0x6CC7, 0x6CC8,
- 0x6CCB, 0x6CCD, 0x6CCE, 0x6CCF, 0x6CD1, 0x6CD2, 0x6CD8,
- /* GB 0x9B80..0x9BFE */
- 0x6CD9, 0x6CDA, 0x6CDC, 0x6CDD, 0x6CDF, 0x6CE4, 0x6CE6, 0x6CE7,
- 0x6CE9, 0x6CEC, 0x6CED, 0x6CF2, 0x6CF4, 0x6CF9, 0x6CFF, 0x6D00,
- 0x6D02, 0x6D03, 0x6D05, 0x6D06, 0x6D08, 0x6D09, 0x6D0A, 0x6D0D,
- 0x6D0F, 0x6D10, 0x6D11, 0x6D13, 0x6D14, 0x6D15, 0x6D16, 0x6D18,
- 0x6D1C, 0x6D1D, 0x6D1F, 0x6D20, 0x6D21, 0x6D22, 0x6D23, 0x6D24,
- 0x6D26, 0x6D28, 0x6D29, 0x6D2C, 0x6D2D, 0x6D2F, 0x6D30, 0x6D34,
- 0x6D36, 0x6D37, 0x6D38, 0x6D3A, 0x6D3F, 0x6D40, 0x6D42, 0x6D44,
- 0x6D49, 0x6D4C, 0x6D50, 0x6D55, 0x6D56, 0x6D57, 0x6D58, 0x6D5B,
- 0x6D5D, 0x6D5F, 0x6D61, 0x6D62, 0x6D64, 0x6D65, 0x6D67, 0x6D68,
- 0x6D6B, 0x6D6C, 0x6D6D, 0x6D70, 0x6D71, 0x6D72, 0x6D73, 0x6D75,
- 0x6D76, 0x6D79, 0x6D7A, 0x6D7B, 0x6D7D, 0x6D7E, 0x6D7F, 0x6D80,
- 0x6D81, 0x6D83, 0x6D84, 0x6D86, 0x6D87, 0x6D8A, 0x6D8B, 0x6D8D,
- 0x6D8F, 0x6D90, 0x6D92, 0x6D96, 0x6D97, 0x6D98, 0x6D99, 0x6D9A,
- 0x6D9C, 0x6DA2, 0x6DA5, 0x6DAC, 0x6DAD, 0x6DB0, 0x6DB1, 0x6DB3,
- 0x6DB4, 0x6DB6, 0x6DB7, 0x6DB9, 0x6DBA, 0x6DBB, 0x6DBC, 0x6DBD,
- 0x6DBE, 0x6DC1, 0x6DC2, 0x6DC3, 0x6DC8, 0x6DC9, 0x6DCA,
- /* GB 0x9C40..0x9C7E */
- 0x6DCD, 0x6DCE, 0x6DCF, 0x6DD0, 0x6DD2, 0x6DD3, 0x6DD4, 0x6DD5,
- 0x6DD7, 0x6DDA, 0x6DDB, 0x6DDC, 0x6DDF, 0x6DE2, 0x6DE3, 0x6DE5,
- 0x6DE7, 0x6DE8, 0x6DE9, 0x6DEA, 0x6DED, 0x6DEF, 0x6DF0, 0x6DF2,
- 0x6DF4, 0x6DF5, 0x6DF6, 0x6DF8, 0x6DFA, 0x6DFD, 0x6DFE, 0x6DFF,
- 0x6E00, 0x6E01, 0x6E02, 0x6E03, 0x6E04, 0x6E06, 0x6E07, 0x6E08,
- 0x6E09, 0x6E0B, 0x6E0F, 0x6E12, 0x6E13, 0x6E15, 0x6E18, 0x6E19,
- 0x6E1B, 0x6E1C, 0x6E1E, 0x6E1F, 0x6E22, 0x6E26, 0x6E27, 0x6E28,
- 0x6E2A, 0x6E2C, 0x6E2E, 0x6E30, 0x6E31, 0x6E33, 0x6E35,
- /* GB 0x9C80..0x9CFE */
- 0x6E36, 0x6E37, 0x6E39, 0x6E3B, 0x6E3C, 0x6E3D, 0x6E3E, 0x6E3F,
- 0x6E40, 0x6E41, 0x6E42, 0x6E45, 0x6E46, 0x6E47, 0x6E48, 0x6E49,
- 0x6E4A, 0x6E4B, 0x6E4C, 0x6E4F, 0x6E50, 0x6E51, 0x6E52, 0x6E55,
- 0x6E57, 0x6E59, 0x6E5A, 0x6E5C, 0x6E5D, 0x6E5E, 0x6E60, 0x6E61,
- 0x6E62, 0x6E63, 0x6E64, 0x6E65, 0x6E66, 0x6E67, 0x6E68, 0x6E69,
- 0x6E6A, 0x6E6C, 0x6E6D, 0x6E6F, 0x6E70, 0x6E71, 0x6E72, 0x6E73,
- 0x6E74, 0x6E75, 0x6E76, 0x6E77, 0x6E78, 0x6E79, 0x6E7A, 0x6E7B,
- 0x6E7C, 0x6E7D, 0x6E80, 0x6E81, 0x6E82, 0x6E84, 0x6E87, 0x6E88,
- 0x6E8A, 0x6E8B, 0x6E8C, 0x6E8D, 0x6E8E, 0x6E91, 0x6E92, 0x6E93,
- 0x6E94, 0x6E95, 0x6E96, 0x6E97, 0x6E99, 0x6E9A, 0x6E9B, 0x6E9D,
- 0x6E9E, 0x6EA0, 0x6EA1, 0x6EA3, 0x6EA4, 0x6EA6, 0x6EA8, 0x6EA9,
- 0x6EAB, 0x6EAC, 0x6EAD, 0x6EAE, 0x6EB0, 0x6EB3, 0x6EB5, 0x6EB8,
- 0x6EB9, 0x6EBC, 0x6EBE, 0x6EBF, 0x6EC0, 0x6EC3, 0x6EC4, 0x6EC5,
- 0x6EC6, 0x6EC8, 0x6EC9, 0x6ECA, 0x6ECC, 0x6ECD, 0x6ECE, 0x6ED0,
- 0x6ED2, 0x6ED6, 0x6ED8, 0x6ED9, 0x6EDB, 0x6EDC, 0x6EDD, 0x6EE3,
- 0x6EE7, 0x6EEA, 0x6EEB, 0x6EEC, 0x6EED, 0x6EEE, 0x6EEF,
- /* GB 0x9D40..0x9D7E */
- 0x6EF0, 0x6EF1, 0x6EF2, 0x6EF3, 0x6EF5, 0x6EF6, 0x6EF7, 0x6EF8,
- 0x6EFA, 0x6EFB, 0x6EFC, 0x6EFD, 0x6EFE, 0x6EFF, 0x6F00, 0x6F01,
- 0x6F03, 0x6F04, 0x6F05, 0x6F07, 0x6F08, 0x6F0A, 0x6F0B, 0x6F0C,
- 0x6F0D, 0x6F0E, 0x6F10, 0x6F11, 0x6F12, 0x6F16, 0x6F17, 0x6F18,
- 0x6F19, 0x6F1A, 0x6F1B, 0x6F1C, 0x6F1D, 0x6F1E, 0x6F1F, 0x6F21,
- 0x6F22, 0x6F23, 0x6F25, 0x6F26, 0x6F27, 0x6F28, 0x6F2C, 0x6F2E,
- 0x6F30, 0x6F32, 0x6F34, 0x6F35, 0x6F37, 0x6F38, 0x6F39, 0x6F3A,
- 0x6F3B, 0x6F3C, 0x6F3D, 0x6F3F, 0x6F40, 0x6F41, 0x6F42,
- /* GB 0x9D80..0x9DFE */
- 0x6F43, 0x6F44, 0x6F45, 0x6F48, 0x6F49, 0x6F4A, 0x6F4C, 0x6F4E,
- 0x6F4F, 0x6F50, 0x6F51, 0x6F52, 0x6F53, 0x6F54, 0x6F55, 0x6F56,
- 0x6F57, 0x6F59, 0x6F5A, 0x6F5B, 0x6F5D, 0x6F5F, 0x6F60, 0x6F61,
- 0x6F63, 0x6F64, 0x6F65, 0x6F67, 0x6F68, 0x6F69, 0x6F6A, 0x6F6B,
- 0x6F6C, 0x6F6F, 0x6F70, 0x6F71, 0x6F73, 0x6F75, 0x6F76, 0x6F77,
- 0x6F79, 0x6F7B, 0x6F7D, 0x6F7E, 0x6F7F, 0x6F80, 0x6F81, 0x6F82,
- 0x6F83, 0x6F85, 0x6F86, 0x6F87, 0x6F8A, 0x6F8B, 0x6F8F, 0x6F90,
- 0x6F91, 0x6F92, 0x6F93, 0x6F94, 0x6F95, 0x6F96, 0x6F97, 0x6F98,
- 0x6F99, 0x6F9A, 0x6F9B, 0x6F9D, 0x6F9E, 0x6F9F, 0x6FA0, 0x6FA2,
- 0x6FA3, 0x6FA4, 0x6FA5, 0x6FA6, 0x6FA8, 0x6FA9, 0x6FAA, 0x6FAB,
- 0x6FAC, 0x6FAD, 0x6FAE, 0x6FAF, 0x6FB0, 0x6FB1, 0x6FB2, 0x6FB4,
- 0x6FB5, 0x6FB7, 0x6FB8, 0x6FBA, 0x6FBB, 0x6FBC, 0x6FBD, 0x6FBE,
- 0x6FBF, 0x6FC1, 0x6FC3, 0x6FC4, 0x6FC5, 0x6FC6, 0x6FC7, 0x6FC8,
- 0x6FCA, 0x6FCB, 0x6FCC, 0x6FCD, 0x6FCE, 0x6FCF, 0x6FD0, 0x6FD3,
- 0x6FD4, 0x6FD5, 0x6FD6, 0x6FD7, 0x6FD8, 0x6FD9, 0x6FDA, 0x6FDB,
- 0x6FDC, 0x6FDD, 0x6FDF, 0x6FE2, 0x6FE3, 0x6FE4, 0x6FE5,
- /* GB 0x9E40..0x9E7E */
- 0x6FE6, 0x6FE7, 0x6FE8, 0x6FE9, 0x6FEA, 0x6FEB, 0x6FEC, 0x6FED,
- 0x6FF0, 0x6FF1, 0x6FF2, 0x6FF3, 0x6FF4, 0x6FF5, 0x6FF6, 0x6FF7,
- 0x6FF8, 0x6FF9, 0x6FFA, 0x6FFB, 0x6FFC, 0x6FFD, 0x6FFE, 0x6FFF,
- 0x7000, 0x7001, 0x7002, 0x7003, 0x7004, 0x7005, 0x7006, 0x7007,
- 0x7008, 0x7009, 0x700A, 0x700B, 0x700C, 0x700D, 0x700E, 0x700F,
- 0x7010, 0x7012, 0x7013, 0x7014, 0x7015, 0x7016, 0x7017, 0x7018,
- 0x7019, 0x701C, 0x701D, 0x701E, 0x701F, 0x7020, 0x7021, 0x7022,
- 0x7024, 0x7025, 0x7026, 0x7027, 0x7028, 0x7029, 0x702A,
- /* GB 0x9E80..0x9EFE */
- 0x702B, 0x702C, 0x702D, 0x702E, 0x702F, 0x7030, 0x7031, 0x7032,
- 0x7033, 0x7034, 0x7036, 0x7037, 0x7038, 0x703A, 0x703B, 0x703C,
- 0x703D, 0x703E, 0x703F, 0x7040, 0x7041, 0x7042, 0x7043, 0x7044,
- 0x7045, 0x7046, 0x7047, 0x7048, 0x7049, 0x704A, 0x704B, 0x704D,
- 0x704E, 0x7050, 0x7051, 0x7052, 0x7053, 0x7054, 0x7055, 0x7056,
- 0x7057, 0x7058, 0x7059, 0x705A, 0x705B, 0x705C, 0x705D, 0x705F,
- 0x7060, 0x7061, 0x7062, 0x7063, 0x7064, 0x7065, 0x7066, 0x7067,
- 0x7068, 0x7069, 0x706A, 0x706E, 0x7071, 0x7072, 0x7073, 0x7074,
- 0x7077, 0x7079, 0x707A, 0x707B, 0x707D, 0x7081, 0x7082, 0x7083,
- 0x7084, 0x7086, 0x7087, 0x7088, 0x708B, 0x708C, 0x708D, 0x708F,
- 0x7090, 0x7091, 0x7093, 0x7097, 0x7098, 0x709A, 0x709B, 0x709E,
- 0x709F, 0x70A0, 0x70A1, 0x70A2, 0x70A3, 0x70A4, 0x70A5, 0x70A6,
- 0x70A7, 0x70A8, 0x70A9, 0x70AA, 0x70B0, 0x70B2, 0x70B4, 0x70B5,
- 0x70B6, 0x70BA, 0x70BE, 0x70BF, 0x70C4, 0x70C5, 0x70C6, 0x70C7,
- 0x70C9, 0x70CB, 0x70CC, 0x70CD, 0x70CE, 0x70CF, 0x70D0, 0x70D1,
- 0x70D2, 0x70D3, 0x70D4, 0x70D5, 0x70D6, 0x70D7, 0x70DA,
- /* GB 0x9F40..0x9F7E */
- 0x70DC, 0x70DD, 0x70DE, 0x70E0, 0x70E1, 0x70E2, 0x70E3, 0x70E5,
- 0x70EA, 0x70EE, 0x70F0, 0x70F1, 0x70F2, 0x70F3, 0x70F4, 0x70F5,
- 0x70F6, 0x70F8, 0x70FA, 0x70FB, 0x70FC, 0x70FE, 0x70FF, 0x7100,
- 0x7101, 0x7102, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x7108,
- 0x710B, 0x710C, 0x710D, 0x710E, 0x710F, 0x7111, 0x7112, 0x7114,
- 0x7117, 0x711B, 0x711C, 0x711D, 0x711E, 0x711F, 0x7120, 0x7121,
- 0x7122, 0x7123, 0x7124, 0x7125, 0x7127, 0x7128, 0x7129, 0x712A,
- 0x712B, 0x712C, 0x712D, 0x712E, 0x7132, 0x7133, 0x7134,
- /* GB 0x9F80..0x9FFE */
- 0x7135, 0x7137, 0x7138, 0x7139, 0x713A, 0x713B, 0x713C, 0x713D,
- 0x713E, 0x713F, 0x7140, 0x7141, 0x7142, 0x7143, 0x7144, 0x7146,
- 0x7147, 0x7148, 0x7149, 0x714B, 0x714D, 0x714F, 0x7150, 0x7151,
- 0x7152, 0x7153, 0x7154, 0x7155, 0x7156, 0x7157, 0x7158, 0x7159,
- 0x715A, 0x715B, 0x715D, 0x715F, 0x7160, 0x7161, 0x7162, 0x7163,
- 0x7165, 0x7169, 0x716A, 0x716B, 0x716C, 0x716D, 0x716F, 0x7170,
- 0x7171, 0x7174, 0x7175, 0x7176, 0x7177, 0x7179, 0x717B, 0x717C,
- 0x717E, 0x717F, 0x7180, 0x7181, 0x7182, 0x7183, 0x7185, 0x7186,
- 0x7187, 0x7188, 0x7189, 0x718B, 0x718C, 0x718D, 0x718E, 0x7190,
- 0x7191, 0x7192, 0x7193, 0x7195, 0x7196, 0x7197, 0x719A, 0x719B,
- 0x719C, 0x719D, 0x719E, 0x71A1, 0x71A2, 0x71A3, 0x71A4, 0x71A5,
- 0x71A6, 0x71A7, 0x71A9, 0x71AA, 0x71AB, 0x71AD, 0x71AE, 0x71AF,
- 0x71B0, 0x71B1, 0x71B2, 0x71B4, 0x71B6, 0x71B7, 0x71B8, 0x71BA,
- 0x71BB, 0x71BC, 0x71BD, 0x71BE, 0x71BF, 0x71C0, 0x71C1, 0x71C2,
- 0x71C4, 0x71C5, 0x71C6, 0x71C7, 0x71C8, 0x71C9, 0x71CA, 0x71CB,
- 0x71CC, 0x71CD, 0x71CF, 0x71D0, 0x71D1, 0x71D2, 0x71D3,
- /* GB 0xA040..0xA07E */
- 0x71D6, 0x71D7, 0x71D8, 0x71D9, 0x71DA, 0x71DB, 0x71DC, 0x71DD,
- 0x71DE, 0x71DF, 0x71E1, 0x71E2, 0x71E3, 0x71E4, 0x71E6, 0x71E8,
- 0x71E9, 0x71EA, 0x71EB, 0x71EC, 0x71ED, 0x71EF, 0x71F0, 0x71F1,
- 0x71F2, 0x71F3, 0x71F4, 0x71F5, 0x71F6, 0x71F7, 0x71F8, 0x71FA,
- 0x71FB, 0x71FC, 0x71FD, 0x71FE, 0x71FF, 0x7200, 0x7201, 0x7202,
- 0x7203, 0x7204, 0x7205, 0x7207, 0x7208, 0x7209, 0x720A, 0x720B,
- 0x720C, 0x720D, 0x720E, 0x720F, 0x7210, 0x7211, 0x7212, 0x7213,
- 0x7214, 0x7215, 0x7216, 0x7217, 0x7218, 0x7219, 0x721A,
- /* GB 0xA080..0xA0FE */
- 0x721B, 0x721C, 0x721E, 0x721F, 0x7220, 0x7221, 0x7222, 0x7223,
- 0x7224, 0x7225, 0x7226, 0x7227, 0x7229, 0x722B, 0x722D, 0x722E,
- 0x722F, 0x7232, 0x7233, 0x7234, 0x723A, 0x723C, 0x723E, 0x7240,
- 0x7241, 0x7242, 0x7243, 0x7244, 0x7245, 0x7246, 0x7249, 0x724A,
- 0x724B, 0x724E, 0x724F, 0x7250, 0x7251, 0x7253, 0x7254, 0x7255,
- 0x7257, 0x7258, 0x725A, 0x725C, 0x725E, 0x7260, 0x7263, 0x7264,
- 0x7265, 0x7268, 0x726A, 0x726B, 0x726C, 0x726D, 0x7270, 0x7271,
- 0x7273, 0x7274, 0x7276, 0x7277, 0x7278, 0x727B, 0x727C, 0x727D,
- 0x7282, 0x7283, 0x7285, 0x7286, 0x7287, 0x7288, 0x7289, 0x728C,
- 0x728E, 0x7290, 0x7291, 0x7293, 0x7294, 0x7295, 0x7296, 0x7297,
- 0x7298, 0x7299, 0x729A, 0x729B, 0x729C, 0x729D, 0x729E, 0x72A0,
- 0x72A1, 0x72A2, 0x72A3, 0x72A4, 0x72A5, 0x72A6, 0x72A7, 0x72A8,
- 0x72A9, 0x72AA, 0x72AB, 0x72AE, 0x72B1, 0x72B2, 0x72B3, 0x72B5,
- 0x72BA, 0x72BB, 0x72BC, 0x72BD, 0x72BE, 0x72BF, 0x72C0, 0x72C5,
- 0x72C6, 0x72C7, 0x72C9, 0x72CA, 0x72CB, 0x72CC, 0x72CF, 0x72D1,
- 0x72D3, 0x72D4, 0x72D5, 0x72D6, 0x72D8, 0x72DA, 0x72DB,
- /* Skip: GB 0xA140..0xA17E, 0xA180..0xA1A0 (UDA 3) */
- /* GB 0xA2A1..0xA2FE */
- 0x3000, 0x3001, 0x3002, 0x00B7, 0x02C9, 0x02C7, 0x00A8,
- 0x3003, 0x3005, 0x2014, 0xFF5E, 0x2016, 0x2026, 0x2018, 0x2019,
- 0x201C, 0x201D, 0x3014, 0x3015, 0x3008, 0x3009, 0x300A, 0x300B,
- 0x300C, 0x300D, 0x300E, 0x300F, 0x3016, 0x3017, 0x3010, 0x3011,
- 0x00B1, 0x00D7, 0x00F7, 0x2236, 0x2227, 0x2228, 0x2211, 0x220F,
- 0x222A, 0x2229, 0x2208, 0x2237, 0x221A, 0x22A5, 0x2225, 0x2220,
- 0x2312, 0x2299, 0x222B, 0x222E, 0x2261, 0x224C, 0x2248, 0x223D,
- 0x221D, 0x2260, 0x226E, 0x226F, 0x2264, 0x2265, 0x221E, 0x2235,
- 0x2234, 0x2642, 0x2640, 0x00B0, 0x2032, 0x2033, 0x2103, 0xFF04,
- 0x00A4, 0xFFE0, 0xFFE1, 0x2030, 0x00A7, 0x2116, 0x2606, 0x2605,
- 0x25CB, 0x25CF, 0x25CE, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25B3,
- 0x25B2, 0x203B, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013,
- /* Skip: GB 0xA240..0xA27E, 0xA280..0xA2A0 (UDA 3) */
- /* GB 0xA3A1..0xA3FE */
- 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176,
- 0x2177, 0x2178, 0x2179, 0xE766, 0xE767, 0xE768, 0xE769, 0xE76A,
- 0xE76B, 0x2488, 0x2489, 0x248A, 0x248B, 0x248C, 0x248D, 0x248E,
- 0x248F, 0x2490, 0x2491, 0x2492, 0x2493, 0x2494, 0x2495, 0x2496,
- 0x2497, 0x2498, 0x2499, 0x249A, 0x249B, 0x2474, 0x2475, 0x2476,
- 0x2477, 0x2478, 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, 0x247E,
- 0x247F, 0x2480, 0x2481, 0x2482, 0x2483, 0x2484, 0x2485, 0x2486,
- 0x2487, 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466,
- 0x2467, 0x2468, 0x2469, 0x20AC, 0xE76D, 0x3220, 0x3221, 0x3222,
- 0x3223, 0x3224, 0x3225, 0x3226, 0x3227, 0x3228, 0x3229, 0xE76E,
- 0xE76F, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166,
- 0x2167, 0x2168, 0x2169, 0x216A, 0x216B, 0xE770, 0xE771,
- /* Skip: GB 0xA340..0xA37E, 0xA380..0xA3A0 (UDA 3) */
- /* GB 0xA4A1..0xA4FE */
- 0xFF01, 0xFF02, 0xFF03, 0xFFE5, 0xFF05, 0xFF06, 0xFF07,
- 0xFF08, 0xFF09, 0xFF0A, 0xFF0B, 0xFF0C, 0xFF0D, 0xFF0E, 0xFF0F,
- 0xFF10, 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17,
- 0xFF18, 0xFF19, 0xFF1A, 0xFF1B, 0xFF1C, 0xFF1D, 0xFF1E, 0xFF1F,
- 0xFF20, 0xFF21, 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27,
- 0xFF28, 0xFF29, 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F,
- 0xFF30, 0xFF31, 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37,
- 0xFF38, 0xFF39, 0xFF3A, 0xFF3B, 0xFF3C, 0xFF3D, 0xFF3E, 0xFF3F,
- 0xFF40, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47,
- 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F,
- 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56, 0xFF57,
- 0xFF58, 0xFF59, 0xFF5A, 0xFF5B, 0xFF5C, 0xFF5D, 0xFFE3,
- /* Skip: GB 0xA440..0xA47E, 0xA480..0xA4A0 (UDA 3) */
- /* GB 0xA5A1..0xA5FE */
- 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047,
- 0x3048, 0x3049, 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F,
- 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057,
- 0x3058, 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F,
- 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067,
- 0x3068, 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F,
- 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077,
- 0x3078, 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F,
- 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087,
- 0x3088, 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F,
- 0x3090, 0x3091, 0x3092, 0x3093, 0xE772, 0xE773, 0xE774, 0xE775,
- 0xE776, 0xE777, 0xE778, 0xE779, 0xE77A, 0xE77B, 0xE77C,
- /* Skip: GB 0xA540..0xA57E, 0xA580..0xA5A0 (UDA 3) */
- /* GB 0xA6A1..0xA6FE */
- 0x30A1, 0x30A2, 0x30A3, 0x30A4, 0x30A5, 0x30A6, 0x30A7,
- 0x30A8, 0x30A9, 0x30AA, 0x30AB, 0x30AC, 0x30AD, 0x30AE, 0x30AF,
- 0x30B0, 0x30B1, 0x30B2, 0x30B3, 0x30B4, 0x30B5, 0x30B6, 0x30B7,
- 0x30B8, 0x30B9, 0x30BA, 0x30BB, 0x30BC, 0x30BD, 0x30BE, 0x30BF,
- 0x30C0, 0x30C1, 0x30C2, 0x30C3, 0x30C4, 0x30C5, 0x30C6, 0x30C7,
- 0x30C8, 0x30C9, 0x30CA, 0x30CB, 0x30CC, 0x30CD, 0x30CE, 0x30CF,
- 0x30D0, 0x30D1, 0x30D2, 0x30D3, 0x30D4, 0x30D5, 0x30D6, 0x30D7,
- 0x30D8, 0x30D9, 0x30DA, 0x30DB, 0x30DC, 0x30DD, 0x30DE, 0x30DF,
- 0x30E0, 0x30E1, 0x30E2, 0x30E3, 0x30E4, 0x30E5, 0x30E6, 0x30E7,
- 0x30E8, 0x30E9, 0x30EA, 0x30EB, 0x30EC, 0x30ED, 0x30EE, 0x30EF,
- 0x30F0, 0x30F1, 0x30F2, 0x30F3, 0x30F4, 0x30F5, 0x30F6, 0xE77D,
- 0xE77E, 0xE77F, 0xE780, 0xE781, 0xE782, 0xE783, 0xE784,
- /* Skip: GB 0xA640..0xA67E, 0xA680..0xA6A0 (UDA 3) */
- /* GB 0xA7A1..0xA7FE */
- 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
- 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
- 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8,
- 0x03A9, 0xE785, 0xE786, 0xE787, 0xE788, 0xE789, 0xE78A, 0xE78B,
- 0xE78C, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7,
- 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,
- 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7, 0x03C8,
- 0x03C9, 0xE78D, 0xE78E, 0xE78F, 0xE790, 0xE791, 0xE792, 0xE793,
- 0xFE35, 0xFE36, 0xFE39, 0xFE3A, 0xFE3F, 0xFE40, 0xFE3D, 0xFE3E,
- 0xFE41, 0xFE42, 0xFE43, 0xFE44, 0xE794, 0xE795, 0xFE3B, 0xFE3C,
- 0xFE37, 0xFE38, 0xFE31, 0xE796, 0xFE33, 0xFE34, 0xE797, 0xE798,
- 0xE799, 0xE79A, 0xE79B, 0xE79C, 0xE79D, 0xE79E, 0xE79F,
- /* Skip: GB 0xA740..0xA77E, 0xA780..0xA7A0 (UDA 3) */
- /* GB 0xA8A1..0xA8FE */
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401,
- 0x0416, 0x0417, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D,
- 0x041E, 0x041F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425,
- 0x0426, 0x0427, 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D,
- 0x042E, 0x042F, 0xE7A0, 0xE7A1, 0xE7A2, 0xE7A3, 0xE7A4, 0xE7A5,
- 0xE7A6, 0xE7A7, 0xE7A8, 0xE7A9, 0xE7AA, 0xE7AB, 0xE7AC, 0xE7AD,
- 0xE7AE, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451,
- 0x0436, 0x0437, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D,
- 0x043E, 0x043F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445,
- 0x0446, 0x0447, 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D,
- 0x044E, 0x044F, 0xE7AF, 0xE7B0, 0xE7B1, 0xE7B2, 0xE7B3, 0xE7B4,
- 0xE7B5, 0xE7B6, 0xE7B7, 0xE7B8, 0xE7B9, 0xE7BA, 0xE7BB,
- /* GB 0xA840..0xA87E */
- 0x02CA, 0x02CB, 0x02D9, 0x2013, 0x2015, 0x2025, 0x2035, 0x2105,
- 0x2109, 0x2196, 0x2197, 0x2198, 0x2199, 0x2215, 0x221F, 0x2223,
- 0x2252, 0x2266, 0x2267, 0x22BF, 0x2550, 0x2551, 0x2552, 0x2553,
- 0x2554, 0x2555, 0x2556, 0x2557, 0x2558, 0x2559, 0x255A, 0x255B,
- 0x255C, 0x255D, 0x255E, 0x255F, 0x2560, 0x2561, 0x2562, 0x2563,
- 0x2564, 0x2565, 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B,
- 0x256C, 0x256D, 0x256E, 0x256F, 0x2570, 0x2571, 0x2572, 0x2573,
- 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586, 0x2587,
- /* GB 0xA880..0xA8FE */
- 0x2588, 0x2589, 0x258A, 0x258B, 0x258C, 0x258D, 0x258E, 0x258F,
- 0x2593, 0x2594, 0x2595, 0x25BC, 0x25BD, 0x25E2, 0x25E3, 0x25E4,
- 0x25E5, 0x2609, 0x2295, 0x3012, 0x301D, 0x301E, 0xE7BC, 0xE7BD,
- 0xE7BE, 0xE7BF, 0xE7C0, 0xE7C1, 0xE7C2, 0xE7C3, 0xE7C4, 0xE7C5,
- 0xE7C6, 0x0101, 0x00E1, 0x01CE, 0x00E0, 0x0113, 0x00E9, 0x011B,
- 0x00E8, 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2,
- 0x00F2, 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA,
- 0x01DC, 0x00FC, 0x00EA, 0x0251, 0xE7C7, 0x0144, 0x0148, 0x01F9,
- 0x0261, 0xE7C9, 0xE7CA, 0xE7CB, 0xE7CC, 0x3105, 0x3106, 0x3107,
- 0x3108, 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, 0x310F,
- 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116, 0x3117,
- 0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E, 0x311F,
- 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126, 0x3127,
- 0x3128, 0x3129, 0xE7CD, 0xE7CE, 0xE7CF, 0xE7D0, 0xE7D1, 0xE7D2,
- 0xE7D3, 0xE7D4, 0xE7D5, 0xE7D6, 0xE7D7, 0xE7D8, 0xE7D9, 0xE7DA,
- 0xE7DB, 0xE7DC, 0xE7DD, 0xE7DE, 0xE7DF, 0xE7E0, 0xE7E1,
- /* GB 0xA940..0xA97E */
- 0x3021, 0x3022, 0x3023, 0x3024, 0x3025, 0x3026, 0x3027, 0x3028,
- 0x3029, 0x32A3, 0x338E, 0x338F, 0x339C, 0x339D, 0x339E, 0x33A1,
- 0x33C4, 0x33CE, 0x33D1, 0x33D2, 0x33D5, 0xFE30, 0xFFE2, 0xFFE4,
- 0xE7E2, 0x2121, 0x3231, 0xE7E3, 0x2010, 0xE7E4, 0xE7E5, 0xE7E6,
- 0x30FC, 0x309B, 0x309C, 0x30FD, 0x30FE, 0x3006, 0x309D, 0x309E,
- 0xFE49, 0xFE4A, 0xFE4B, 0xFE4C, 0xFE4D, 0xFE4E, 0xFE4F, 0xFE50,
- 0xFE51, 0xFE52, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFE59, 0xFE5A,
- 0xFE5B, 0xFE5C, 0xFE5D, 0xFE5E, 0xFE5F, 0xFE60, 0xFE61,
- /* GB 0xA980..0xA9FE */
- 0xFE62, 0xFE63, 0xFE64, 0xFE65, 0xFE66, 0xFE68, 0xFE69, 0xFE6A,
- 0xFE6B, 0x303E, 0x2FF0, 0x2FF1, 0x2FF2, 0x2FF3, 0x2FF4, 0x2FF5,
- 0x2FF6, 0x2FF7, 0x2FF8, 0x2FF9, 0x2FFA, 0x2FFB, 0x3007, 0xE7F4,
- 0xE7F5, 0xE7F6, 0xE7F7, 0xE7F8, 0xE7F9, 0xE7FA, 0xE7FB, 0xE7FC,
- 0xE7FD, 0xE7FE, 0xE7FF, 0xE800, 0x2500, 0x2501, 0x2502, 0x2503,
- 0x2504, 0x2505, 0x2506, 0x2507, 0x2508, 0x2509, 0x250A, 0x250B,
- 0x250C, 0x250D, 0x250E, 0x250F, 0x2510, 0x2511, 0x2512, 0x2513,
- 0x2514, 0x2515, 0x2516, 0x2517, 0x2518, 0x2519, 0x251A, 0x251B,
- 0x251C, 0x251D, 0x251E, 0x251F, 0x2520, 0x2521, 0x2522, 0x2523,
- 0x2524, 0x2525, 0x2526, 0x2527, 0x2528, 0x2529, 0x252A, 0x252B,
- 0x252C, 0x252D, 0x252E, 0x252F, 0x2530, 0x2531, 0x2532, 0x2533,
- 0x2534, 0x2535, 0x2536, 0x2537, 0x2538, 0x2539, 0x253A, 0x253B,
- 0x253C, 0x253D, 0x253E, 0x253F, 0x2540, 0x2541, 0x2542, 0x2543,
- 0x2544, 0x2545, 0x2546, 0x2547, 0x2548, 0x2549, 0x254A, 0x254B,
- 0xE801, 0xE802, 0xE803, 0xE804, 0xE805, 0xE806, 0xE807, 0xE808,
- 0xE809, 0xE80A, 0xE80B, 0xE80C, 0xE80D, 0xE80E, 0xE80F,
- /* GB 0xAA40..0xAA7E */
- 0x72DC, 0x72DD, 0x72DF, 0x72E2, 0x72E3, 0x72E4, 0x72E5, 0x72E6,
- 0x72E7, 0x72EA, 0x72EB, 0x72F5, 0x72F6, 0x72F9, 0x72FD, 0x72FE,
- 0x72FF, 0x7300, 0x7302, 0x7304, 0x7305, 0x7306, 0x7307, 0x7308,
- 0x7309, 0x730B, 0x730C, 0x730D, 0x730F, 0x7310, 0x7311, 0x7312,
- 0x7314, 0x7318, 0x7319, 0x731A, 0x731F, 0x7320, 0x7323, 0x7324,
- 0x7326, 0x7327, 0x7328, 0x732D, 0x732F, 0x7330, 0x7332, 0x7333,
- 0x7335, 0x7336, 0x733A, 0x733B, 0x733C, 0x733D, 0x7340, 0x7341,
- 0x7342, 0x7343, 0x7344, 0x7345, 0x7346, 0x7347, 0x7348,
- /* GB 0xAA80..0xAAA0 */
- 0x7349, 0x734A, 0x734B, 0x734C, 0x734E, 0x734F, 0x7351, 0x7353,
- 0x7354, 0x7355, 0x7356, 0x7358, 0x7359, 0x735A, 0x735B, 0x735C,
- 0x735D, 0x735E, 0x735F, 0x7361, 0x7362, 0x7363, 0x7364, 0x7365,
- 0x7366, 0x7367, 0x7368, 0x7369, 0x736A, 0x736B, 0x736E, 0x7370,
- 0x7371, /* Skip: GB 0xAAA1..0xAAFE (UDA 1) */
- /* GB 0xAB40..0xAB7E */
- 0x7372, 0x7373, 0x7374, 0x7375, 0x7376, 0x7377, 0x7378, 0x7379,
- 0x737A, 0x737B, 0x737C, 0x737D, 0x737F, 0x7380, 0x7381, 0x7382,
- 0x7383, 0x7385, 0x7386, 0x7388, 0x738A, 0x738C, 0x738D, 0x738F,
- 0x7390, 0x7392, 0x7393, 0x7394, 0x7395, 0x7397, 0x7398, 0x7399,
- 0x739A, 0x739C, 0x739D, 0x739E, 0x73A0, 0x73A1, 0x73A3, 0x73A4,
- 0x73A5, 0x73A6, 0x73A7, 0x73A8, 0x73AA, 0x73AC, 0x73AD, 0x73B1,
- 0x73B4, 0x73B5, 0x73B6, 0x73B8, 0x73B9, 0x73BC, 0x73BD, 0x73BE,
- 0x73BF, 0x73C1, 0x73C3, 0x73C4, 0x73C5, 0x73C6, 0x73C7,
- /* GB 0xAB80..0xABA0 */
- 0x73CB, 0x73CC, 0x73CE, 0x73D2, 0x73D3, 0x73D4, 0x73D5, 0x73D6,
- 0x73D7, 0x73D8, 0x73DA, 0x73DB, 0x73DC, 0x73DD, 0x73DF, 0x73E1,
- 0x73E2, 0x73E3, 0x73E4, 0x73E6, 0x73E8, 0x73EA, 0x73EB, 0x73EC,
- 0x73EE, 0x73EF, 0x73F0, 0x73F1, 0x73F3, 0x73F4, 0x73F5, 0x73F6,
- 0x73F7, /* Skip: GB 0xABA1..0xABFE (UDA 1) */
- /* GB 0xAC40..0xAC7E */
- 0x73F8, 0x73F9, 0x73FA, 0x73FB, 0x73FC, 0x73FD, 0x73FE, 0x73FF,
- 0x7400, 0x7401, 0x7402, 0x7404, 0x7407, 0x7408, 0x740B, 0x740C,
- 0x740D, 0x740E, 0x7411, 0x7412, 0x7413, 0x7414, 0x7415, 0x7416,
- 0x7417, 0x7418, 0x7419, 0x741C, 0x741D, 0x741E, 0x741F, 0x7420,
- 0x7421, 0x7423, 0x7424, 0x7427, 0x7429, 0x742B, 0x742D, 0x742F,
- 0x7431, 0x7432, 0x7437, 0x7438, 0x7439, 0x743A, 0x743B, 0x743D,
- 0x743E, 0x743F, 0x7440, 0x7442, 0x7443, 0x7444, 0x7445, 0x7446,
- 0x7447, 0x7448, 0x7449, 0x744A, 0x744B, 0x744C, 0x744D,
- /* GB 0xAC80..0xACA0 */
- 0x744E, 0x744F, 0x7450, 0x7451, 0x7452, 0x7453, 0x7454, 0x7456,
- 0x7458, 0x745D, 0x7460, 0x7461, 0x7462, 0x7463, 0x7464, 0x7465,
- 0x7466, 0x7467, 0x7468, 0x7469, 0x746A, 0x746B, 0x746C, 0x746E,
- 0x746F, 0x7471, 0x7472, 0x7473, 0x7474, 0x7475, 0x7478, 0x7479,
- 0x747A, /* Skip: GB 0xACA1..0xACFE (UDA 1) */
- /* GB 0xAD40..0xAD7E */
- 0x747B, 0x747C, 0x747D, 0x747F, 0x7482, 0x7484, 0x7485, 0x7486,
- 0x7488, 0x7489, 0x748A, 0x748C, 0x748D, 0x748F, 0x7491, 0x7492,
- 0x7493, 0x7494, 0x7495, 0x7496, 0x7497, 0x7498, 0x7499, 0x749A,
- 0x749B, 0x749D, 0x749F, 0x74A0, 0x74A1, 0x74A2, 0x74A3, 0x74A4,
- 0x74A5, 0x74A6, 0x74AA, 0x74AB, 0x74AC, 0x74AD, 0x74AE, 0x74AF,
- 0x74B0, 0x74B1, 0x74B2, 0x74B3, 0x74B4, 0x74B5, 0x74B6, 0x74B7,
- 0x74B8, 0x74B9, 0x74BB, 0x74BC, 0x74BD, 0x74BE, 0x74BF, 0x74C0,
- 0x74C1, 0x74C2, 0x74C3, 0x74C4, 0x74C5, 0x74C6, 0x74C7,
- /* GB 0xAD80..0xADA0 */
- 0x74C8, 0x74C9, 0x74CA, 0x74CB, 0x74CC, 0x74CD, 0x74CE, 0x74CF,
- 0x74D0, 0x74D1, 0x74D3, 0x74D4, 0x74D5, 0x74D6, 0x74D7, 0x74D8,
- 0x74D9, 0x74DA, 0x74DB, 0x74DD, 0x74DF, 0x74E1, 0x74E5, 0x74E7,
- 0x74E8, 0x74E9, 0x74EA, 0x74EB, 0x74EC, 0x74ED, 0x74F0, 0x74F1,
- 0x74F2, /* Skip: GB 0xADA1..0xADFE (UDA 1) */
- /* GB 0xAE40..0xAE7E */
- 0x74F3, 0x74F5, 0x74F8, 0x74F9, 0x74FA, 0x74FB, 0x74FC, 0x74FD,
- 0x74FE, 0x7500, 0x7501, 0x7502, 0x7503, 0x7505, 0x7506, 0x7507,
- 0x7508, 0x7509, 0x750A, 0x750B, 0x750C, 0x750E, 0x7510, 0x7512,
- 0x7514, 0x7515, 0x7516, 0x7517, 0x751B, 0x751D, 0x751E, 0x7520,
- 0x7521, 0x7522, 0x7523, 0x7524, 0x7526, 0x7527, 0x752A, 0x752E,
- 0x7534, 0x7536, 0x7539, 0x753C, 0x753D, 0x753F, 0x7541, 0x7542,
- 0x7543, 0x7544, 0x7546, 0x7547, 0x7549, 0x754A, 0x754D, 0x7550,
- 0x7551, 0x7552, 0x7553, 0x7555, 0x7556, 0x7557, 0x7558,
- /* GB 0xAE80..0xAEA0 */
- 0x755D, 0x755E, 0x755F, 0x7560, 0x7561, 0x7562, 0x7563, 0x7564,
- 0x7567, 0x7568, 0x7569, 0x756B, 0x756C, 0x756D, 0x756E, 0x756F,
- 0x7570, 0x7571, 0x7573, 0x7575, 0x7576, 0x7577, 0x757A, 0x757B,
- 0x757C, 0x757D, 0x757E, 0x7580, 0x7581, 0x7582, 0x7584, 0x7585,
- 0x7587, /* Skip: GB 0xAEA1..0xAEFE (UDA 1) */
- /* GB 0xAF40..0xAF7E */
- 0x7588, 0x7589, 0x758A, 0x758C, 0x758D, 0x758E, 0x7590, 0x7593,
- 0x7595, 0x7598, 0x759B, 0x759C, 0x759E, 0x75A2, 0x75A6, 0x75A7,
- 0x75A8, 0x75A9, 0x75AA, 0x75AD, 0x75B6, 0x75B7, 0x75BA, 0x75BB,
- 0x75BF, 0x75C0, 0x75C1, 0x75C6, 0x75CB, 0x75CC, 0x75CE, 0x75CF,
- 0x75D0, 0x75D1, 0x75D3, 0x75D7, 0x75D9, 0x75DA, 0x75DC, 0x75DD,
- 0x75DF, 0x75E0, 0x75E1, 0x75E5, 0x75E9, 0x75EC, 0x75ED, 0x75EE,
- 0x75EF, 0x75F2, 0x75F3, 0x75F5, 0x75F6, 0x75F7, 0x75F8, 0x75FA,
- 0x75FB, 0x75FD, 0x75FE, 0x7602, 0x7604, 0x7606, 0x7607,
- /* GB 0xAF80..0xAFA0 */
- 0x7608, 0x7609, 0x760B, 0x760D, 0x760E, 0x760F, 0x7611, 0x7612,
- 0x7613, 0x7614, 0x7616, 0x761A, 0x761C, 0x761D, 0x761E, 0x7621,
- 0x7623, 0x7627, 0x7628, 0x762C, 0x762E, 0x762F, 0x7631, 0x7632,
- 0x7636, 0x7637, 0x7639, 0x763A, 0x763B, 0x763D, 0x7641, 0x7642,
- 0x7644, /* Skip: GB 0xAFA1..0xAFFE (UDA 1) */
- /* GB 0xB040..0xB07E */
- 0x7645, 0x7646, 0x7647, 0x7648, 0x7649, 0x764A, 0x764B, 0x764E,
- 0x764F, 0x7650, 0x7651, 0x7652, 0x7653, 0x7655, 0x7657, 0x7658,
- 0x7659, 0x765A, 0x765B, 0x765D, 0x765F, 0x7660, 0x7661, 0x7662,
- 0x7664, 0x7665, 0x7666, 0x7667, 0x7668, 0x7669, 0x766A, 0x766C,
- 0x766D, 0x766E, 0x7670, 0x7671, 0x7672, 0x7673, 0x7674, 0x7675,
- 0x7676, 0x7677, 0x7679, 0x767A, 0x767C, 0x767F, 0x7680, 0x7681,
- 0x7683, 0x7685, 0x7689, 0x768A, 0x768C, 0x768D, 0x768F, 0x7690,
- 0x7692, 0x7694, 0x7695, 0x7697, 0x7698, 0x769A, 0x769B,
- /* GB 0xB080..0xB0FE */
- 0x769C, 0x769D, 0x769E, 0x769F, 0x76A0, 0x76A1, 0x76A2, 0x76A3,
- 0x76A5, 0x76A6, 0x76A7, 0x76A8, 0x76A9, 0x76AA, 0x76AB, 0x76AC,
- 0x76AD, 0x76AF, 0x76B0, 0x76B3, 0x76B5, 0x76B6, 0x76B7, 0x76B8,
- 0x76B9, 0x76BA, 0x76BB, 0x76BC, 0x76BD, 0x76BE, 0x76C0, 0x76C1,
- 0x76C3, 0x554A, 0x963F, 0x57C3, 0x6328, 0x54CE, 0x5509, 0x54C0,
- 0x7691, 0x764C, 0x853C, 0x77EE, 0x827E, 0x788D, 0x7231, 0x9698,
- 0x978D, 0x6C28, 0x5B89, 0x4FFA, 0x6309, 0x6697, 0x5CB8, 0x80FA,
- 0x6848, 0x80AE, 0x6602, 0x76CE, 0x51F9, 0x6556, 0x71AC, 0x7FF1,
- 0x8884, 0x50B2, 0x5965, 0x61CA, 0x6FB3, 0x82AD, 0x634C, 0x6252,
- 0x53ED, 0x5427, 0x7B06, 0x516B, 0x75A4, 0x5DF4, 0x62D4, 0x8DCB,
- 0x9776, 0x628A, 0x8019, 0x575D, 0x9738, 0x7F62, 0x7238, 0x767D,
- 0x67CF, 0x767E, 0x6446, 0x4F70, 0x8D25, 0x62DC, 0x7A17, 0x6591,
- 0x73ED, 0x642C, 0x6273, 0x822C, 0x9881, 0x677F, 0x7248, 0x626E,
- 0x62CC, 0x4F34, 0x74E3, 0x534A, 0x529E, 0x7ECA, 0x90A6, 0x5E2E,
- 0x6886, 0x699C, 0x8180, 0x7ED1, 0x68D2, 0x78C5, 0x868C, 0x9551,
- 0x508D, 0x8C24, 0x82DE, 0x80DE, 0x5305, 0x8912, 0x5265,
- /* GB 0xB140..0xB17E */
- 0x76C4, 0x76C7, 0x76C9, 0x76CB, 0x76CC, 0x76D3, 0x76D5, 0x76D9,
- 0x76DA, 0x76DC, 0x76DD, 0x76DE, 0x76E0, 0x76E1, 0x76E2, 0x76E3,
- 0x76E4, 0x76E6, 0x76E7, 0x76E8, 0x76E9, 0x76EA, 0x76EB, 0x76EC,
- 0x76ED, 0x76F0, 0x76F3, 0x76F5, 0x76F6, 0x76F7, 0x76FA, 0x76FB,
- 0x76FD, 0x76FF, 0x7700, 0x7702, 0x7703, 0x7705, 0x7706, 0x770A,
- 0x770C, 0x770E, 0x770F, 0x7710, 0x7711, 0x7712, 0x7713, 0x7714,
- 0x7715, 0x7716, 0x7717, 0x7718, 0x771B, 0x771C, 0x771D, 0x771E,
- 0x7721, 0x7723, 0x7724, 0x7725, 0x7727, 0x772A, 0x772B,
- /* GB 0xB180..0xB1FE */
- 0x772C, 0x772E, 0x7730, 0x7731, 0x7732, 0x7733, 0x7734, 0x7739,
- 0x773B, 0x773D, 0x773E, 0x773F, 0x7742, 0x7744, 0x7745, 0x7746,
- 0x7748, 0x7749, 0x774A, 0x774B, 0x774C, 0x774D, 0x774E, 0x774F,
- 0x7752, 0x7753, 0x7754, 0x7755, 0x7756, 0x7757, 0x7758, 0x7759,
- 0x775C, 0x8584, 0x96F9, 0x4FDD, 0x5821, 0x9971, 0x5B9D, 0x62B1,
- 0x62A5, 0x66B4, 0x8C79, 0x9C8D, 0x7206, 0x676F, 0x7891, 0x60B2,
- 0x5351, 0x5317, 0x8F88, 0x80CC, 0x8D1D, 0x94A1, 0x500D, 0x72C8,
- 0x5907, 0x60EB, 0x7119, 0x88AB, 0x5954, 0x82EF, 0x672C, 0x7B28,
- 0x5D29, 0x7EF7, 0x752D, 0x6CF5, 0x8E66, 0x8FF8, 0x903C, 0x9F3B,
- 0x6BD4, 0x9119, 0x7B14, 0x5F7C, 0x78A7, 0x84D6, 0x853D, 0x6BD5,
- 0x6BD9, 0x6BD6, 0x5E01, 0x5E87, 0x75F9, 0x95ED, 0x655D, 0x5F0A,
- 0x5FC5, 0x8F9F, 0x58C1, 0x81C2, 0x907F, 0x965B, 0x97AD, 0x8FB9,
- 0x7F16, 0x8D2C, 0x6241, 0x4FBF, 0x53D8, 0x535E, 0x8FA8, 0x8FA9,
- 0x8FAB, 0x904D, 0x6807, 0x5F6A, 0x8198, 0x8868, 0x9CD6, 0x618B,
- 0x522B, 0x762A, 0x5F6C, 0x658C, 0x6FD2, 0x6EE8, 0x5BBE, 0x6448,
- 0x5175, 0x51B0, 0x67C4, 0x4E19, 0x79C9, 0x997C, 0x70B3,
- /* GB 0xB240..0xB27E */
- 0x775D, 0x775E, 0x775F, 0x7760, 0x7764, 0x7767, 0x7769, 0x776A,
- 0x776D, 0x776E, 0x776F, 0x7770, 0x7771, 0x7772, 0x7773, 0x7774,
- 0x7775, 0x7776, 0x7777, 0x7778, 0x777A, 0x777B, 0x777C, 0x7781,
- 0x7782, 0x7783, 0x7786, 0x7787, 0x7788, 0x7789, 0x778A, 0x778B,
- 0x778F, 0x7790, 0x7793, 0x7794, 0x7795, 0x7796, 0x7797, 0x7798,
- 0x7799, 0x779A, 0x779B, 0x779C, 0x779D, 0x779E, 0x77A1, 0x77A3,
- 0x77A4, 0x77A6, 0x77A8, 0x77AB, 0x77AD, 0x77AE, 0x77AF, 0x77B1,
- 0x77B2, 0x77B4, 0x77B6, 0x77B7, 0x77B8, 0x77B9, 0x77BA,
- /* GB 0xB280..0xB2FE */
- 0x77BC, 0x77BE, 0x77C0, 0x77C1, 0x77C2, 0x77C3, 0x77C4, 0x77C5,
- 0x77C6, 0x77C7, 0x77C8, 0x77C9, 0x77CA, 0x77CB, 0x77CC, 0x77CE,
- 0x77CF, 0x77D0, 0x77D1, 0x77D2, 0x77D3, 0x77D4, 0x77D5, 0x77D6,
- 0x77D8, 0x77D9, 0x77DA, 0x77DD, 0x77DE, 0x77DF, 0x77E0, 0x77E1,
- 0x77E4, 0x75C5, 0x5E76, 0x73BB, 0x83E0, 0x64AD, 0x62E8, 0x94B5,
- 0x6CE2, 0x535A, 0x52C3, 0x640F, 0x94C2, 0x7B94, 0x4F2F, 0x5E1B,
- 0x8236, 0x8116, 0x818A, 0x6E24, 0x6CCA, 0x9A73, 0x6355, 0x535C,
- 0x54FA, 0x8865, 0x57E0, 0x4E0D, 0x5E03, 0x6B65, 0x7C3F, 0x90E8,
- 0x6016, 0x64E6, 0x731C, 0x88C1, 0x6750, 0x624D, 0x8D22, 0x776C,
- 0x8E29, 0x91C7, 0x5F69, 0x83DC, 0x8521, 0x9910, 0x53C2, 0x8695,
- 0x6B8B, 0x60ED, 0x60E8, 0x707F, 0x82CD, 0x8231, 0x4ED3, 0x6CA7,
- 0x85CF, 0x64CD, 0x7CD9, 0x69FD, 0x66F9, 0x8349, 0x5395, 0x7B56,
- 0x4FA7, 0x518C, 0x6D4B, 0x5C42, 0x8E6D, 0x63D2, 0x53C9, 0x832C,
- 0x8336, 0x67E5, 0x78B4, 0x643D, 0x5BDF, 0x5C94, 0x5DEE, 0x8BE7,
- 0x62C6, 0x67F4, 0x8C7A, 0x6400, 0x63BA, 0x8749, 0x998B, 0x8C17,
- 0x7F20, 0x94F2, 0x4EA7, 0x9610, 0x98A4, 0x660C, 0x7316,
- /* GB 0xB340..0xB37E */
- 0x77E6, 0x77E8, 0x77EA, 0x77EF, 0x77F0, 0x77F1, 0x77F2, 0x77F4,
- 0x77F5, 0x77F7, 0x77F9, 0x77FA, 0x77FB, 0x77FC, 0x7803, 0x7804,
- 0x7805, 0x7806, 0x7807, 0x7808, 0x780A, 0x780B, 0x780E, 0x780F,
- 0x7810, 0x7813, 0x7815, 0x7819, 0x781B, 0x781E, 0x7820, 0x7821,
- 0x7822, 0x7824, 0x7828, 0x782A, 0x782B, 0x782E, 0x782F, 0x7831,
- 0x7832, 0x7833, 0x7835, 0x7836, 0x783D, 0x783F, 0x7841, 0x7842,
- 0x7843, 0x7844, 0x7846, 0x7848, 0x7849, 0x784A, 0x784B, 0x784D,
- 0x784F, 0x7851, 0x7853, 0x7854, 0x7858, 0x7859, 0x785A,
- /* GB 0xB380..0xB3FE */
- 0x785B, 0x785C, 0x785E, 0x785F, 0x7860, 0x7861, 0x7862, 0x7863,
- 0x7864, 0x7865, 0x7866, 0x7867, 0x7868, 0x7869, 0x786F, 0x7870,
- 0x7871, 0x7872, 0x7873, 0x7874, 0x7875, 0x7876, 0x7878, 0x7879,
- 0x787A, 0x787B, 0x787D, 0x787E, 0x787F, 0x7880, 0x7881, 0x7882,
- 0x7883, 0x573A, 0x5C1D, 0x5E38, 0x957F, 0x507F, 0x80A0, 0x5382,
- 0x655E, 0x7545, 0x5531, 0x5021, 0x8D85, 0x6284, 0x949E, 0x671D,
- 0x5632, 0x6F6E, 0x5DE2, 0x5435, 0x7092, 0x8F66, 0x626F, 0x64A4,
- 0x63A3, 0x5F7B, 0x6F88, 0x90F4, 0x81E3, 0x8FB0, 0x5C18, 0x6668,
- 0x5FF1, 0x6C89, 0x9648, 0x8D81, 0x886C, 0x6491, 0x79F0, 0x57CE,
- 0x6A59, 0x6210, 0x5448, 0x4E58, 0x7A0B, 0x60E9, 0x6F84, 0x8BDA,
- 0x627F, 0x901E, 0x9A8B, 0x79E4, 0x5403, 0x75F4, 0x6301, 0x5319,
- 0x6C60, 0x8FDF, 0x5F1B, 0x9A70, 0x803B, 0x9F7F, 0x4F88, 0x5C3A,
- 0x8D64, 0x7FC5, 0x65A5, 0x70BD, 0x5145, 0x51B2, 0x866B, 0x5D07,
- 0x5BA0, 0x62BD, 0x916C, 0x7574, 0x8E0C, 0x7A20, 0x6101, 0x7B79,
- 0x4EC7, 0x7EF8, 0x7785, 0x4E11, 0x81ED, 0x521D, 0x51FA, 0x6A71,
- 0x53A8, 0x8E87, 0x9504, 0x96CF, 0x6EC1, 0x9664, 0x695A,
- /* GB 0xB440..0xB47E */
- 0x7884, 0x7885, 0x7886, 0x7888, 0x788A, 0x788B, 0x788F, 0x7890,
- 0x7892, 0x7894, 0x7895, 0x7896, 0x7899, 0x789D, 0x789E, 0x78A0,
- 0x78A2, 0x78A4, 0x78A6, 0x78A8, 0x78A9, 0x78AA, 0x78AB, 0x78AC,
- 0x78AD, 0x78AE, 0x78AF, 0x78B5, 0x78B6, 0x78B7, 0x78B8, 0x78BA,
- 0x78BB, 0x78BC, 0x78BD, 0x78BF, 0x78C0, 0x78C2, 0x78C3, 0x78C4,
- 0x78C6, 0x78C7, 0x78C8, 0x78CC, 0x78CD, 0x78CE, 0x78CF, 0x78D1,
- 0x78D2, 0x78D3, 0x78D6, 0x78D7, 0x78D8, 0x78DA, 0x78DB, 0x78DC,
- 0x78DD, 0x78DE, 0x78DF, 0x78E0, 0x78E1, 0x78E2, 0x78E3,
- /* GB 0xB480..0xB4FE */
- 0x78E4, 0x78E5, 0x78E6, 0x78E7, 0x78E9, 0x78EA, 0x78EB, 0x78ED,
- 0x78EE, 0x78EF, 0x78F0, 0x78F1, 0x78F3, 0x78F5, 0x78F6, 0x78F8,
- 0x78F9, 0x78FB, 0x78FC, 0x78FD, 0x78FE, 0x78FF, 0x7900, 0x7902,
- 0x7903, 0x7904, 0x7906, 0x7907, 0x7908, 0x7909, 0x790A, 0x790B,
- 0x790C, 0x7840, 0x50A8, 0x77D7, 0x6410, 0x89E6, 0x5904, 0x63E3,
- 0x5DDD, 0x7A7F, 0x693D, 0x4F20, 0x8239, 0x5598, 0x4E32, 0x75AE,
- 0x7A97, 0x5E62, 0x5E8A, 0x95EF, 0x521B, 0x5439, 0x708A, 0x6376,
- 0x9524, 0x5782, 0x6625, 0x693F, 0x9187, 0x5507, 0x6DF3, 0x7EAF,
- 0x8822, 0x6233, 0x7EF0, 0x75B5, 0x8328, 0x78C1, 0x96CC, 0x8F9E,
- 0x6148, 0x74F7, 0x8BCD, 0x6B64, 0x523A, 0x8D50, 0x6B21, 0x806A,
- 0x8471, 0x56F1, 0x5306, 0x4ECE, 0x4E1B, 0x51D1, 0x7C97, 0x918B,
- 0x7C07, 0x4FC3, 0x8E7F, 0x7BE1, 0x7A9C, 0x6467, 0x5D14, 0x50AC,
- 0x8106, 0x7601, 0x7CB9, 0x6DEC, 0x7FE0, 0x6751, 0x5B58, 0x5BF8,
- 0x78CB, 0x64AE, 0x6413, 0x63AA, 0x632B, 0x9519, 0x642D, 0x8FBE,
- 0x7B54, 0x7629, 0x6253, 0x5927, 0x5446, 0x6B79, 0x50A3, 0x6234,
- 0x5E26, 0x6B86, 0x4EE3, 0x8D37, 0x888B, 0x5F85, 0x902E,
- /* GB 0xB540..0xB57E */
- 0x790D, 0x790E, 0x790F, 0x7910, 0x7911, 0x7912, 0x7914, 0x7915,
- 0x7916, 0x7917, 0x7918, 0x7919, 0x791A, 0x791B, 0x791C, 0x791D,
- 0x791F, 0x7920, 0x7921, 0x7922, 0x7923, 0x7925, 0x7926, 0x7927,
- 0x7928, 0x7929, 0x792A, 0x792B, 0x792C, 0x792D, 0x792E, 0x792F,
- 0x7930, 0x7931, 0x7932, 0x7933, 0x7935, 0x7936, 0x7937, 0x7938,
- 0x7939, 0x793D, 0x793F, 0x7942, 0x7943, 0x7944, 0x7945, 0x7947,
- 0x794A, 0x794B, 0x794C, 0x794D, 0x794E, 0x794F, 0x7950, 0x7951,
- 0x7952, 0x7954, 0x7955, 0x7958, 0x7959, 0x7961, 0x7963,
- /* GB 0xB580..0xB5FE */
- 0x7964, 0x7966, 0x7969, 0x796A, 0x796B, 0x796C, 0x796E, 0x7970,
- 0x7971, 0x7972, 0x7973, 0x7974, 0x7975, 0x7976, 0x7979, 0x797B,
- 0x797C, 0x797D, 0x797E, 0x797F, 0x7982, 0x7983, 0x7986, 0x7987,
- 0x7988, 0x7989, 0x798B, 0x798C, 0x798D, 0x798E, 0x7990, 0x7991,
- 0x7992, 0x6020, 0x803D, 0x62C5, 0x4E39, 0x5355, 0x90F8, 0x63B8,
- 0x80C6, 0x65E6, 0x6C2E, 0x4F46, 0x60EE, 0x6DE1, 0x8BDE, 0x5F39,
- 0x86CB, 0x5F53, 0x6321, 0x515A, 0x8361, 0x6863, 0x5200, 0x6363,
- 0x8E48, 0x5012, 0x5C9B, 0x7977, 0x5BFC, 0x5230, 0x7A3B, 0x60BC,
- 0x9053, 0x76D7, 0x5FB7, 0x5F97, 0x7684, 0x8E6C, 0x706F, 0x767B,
- 0x7B49, 0x77AA, 0x51F3, 0x9093, 0x5824, 0x4F4E, 0x6EF4, 0x8FEA,
- 0x654C, 0x7B1B, 0x72C4, 0x6DA4, 0x7FDF, 0x5AE1, 0x62B5, 0x5E95,
- 0x5730, 0x8482, 0x7B2C, 0x5E1D, 0x5F1F, 0x9012, 0x7F14, 0x98A0,
- 0x6382, 0x6EC7, 0x7898, 0x70B9, 0x5178, 0x975B, 0x57AB, 0x7535,
- 0x4F43, 0x7538, 0x5E97, 0x60E6, 0x5960, 0x6DC0, 0x6BBF, 0x7889,
- 0x53FC, 0x96D5, 0x51CB, 0x5201, 0x6389, 0x540A, 0x9493, 0x8C03,
- 0x8DCC, 0x7239, 0x789F, 0x8776, 0x8FED, 0x8C0D, 0x53E0,
- /* GB 0xB640..0xB67E */
- 0x7993, 0x7994, 0x7995, 0x7996, 0x7997, 0x7998, 0x7999, 0x799B,
- 0x799C, 0x799D, 0x799E, 0x799F, 0x79A0, 0x79A1, 0x79A2, 0x79A3,
- 0x79A4, 0x79A5, 0x79A6, 0x79A8, 0x79A9, 0x79AA, 0x79AB, 0x79AC,
- 0x79AD, 0x79AE, 0x79AF, 0x79B0, 0x79B1, 0x79B2, 0x79B4, 0x79B5,
- 0x79B6, 0x79B7, 0x79B8, 0x79BC, 0x79BF, 0x79C2, 0x79C4, 0x79C5,
- 0x79C7, 0x79C8, 0x79CA, 0x79CC, 0x79CE, 0x79CF, 0x79D0, 0x79D3,
- 0x79D4, 0x79D6, 0x79D7, 0x79D9, 0x79DA, 0x79DB, 0x79DC, 0x79DD,
- 0x79DE, 0x79E0, 0x79E1, 0x79E2, 0x79E5, 0x79E8, 0x79EA,
- /* GB 0xB680..0xB6FE */
- 0x79EC, 0x79EE, 0x79F1, 0x79F2, 0x79F3, 0x79F4, 0x79F5, 0x79F6,
- 0x79F7, 0x79F9, 0x79FA, 0x79FC, 0x79FE, 0x79FF, 0x7A01, 0x7A04,
- 0x7A05, 0x7A07, 0x7A08, 0x7A09, 0x7A0A, 0x7A0C, 0x7A0F, 0x7A10,
- 0x7A11, 0x7A12, 0x7A13, 0x7A15, 0x7A16, 0x7A18, 0x7A19, 0x7A1B,
- 0x7A1C, 0x4E01, 0x76EF, 0x53EE, 0x9489, 0x9876, 0x9F0E, 0x952D,
- 0x5B9A, 0x8BA2, 0x4E22, 0x4E1C, 0x51AC, 0x8463, 0x61C2, 0x52A8,
- 0x680B, 0x4F97, 0x606B, 0x51BB, 0x6D1E, 0x515C, 0x6296, 0x6597,
- 0x9661, 0x8C46, 0x9017, 0x75D8, 0x90FD, 0x7763, 0x6BD2, 0x728A,
- 0x72EC, 0x8BFB, 0x5835, 0x7779, 0x8D4C, 0x675C, 0x9540, 0x809A,
- 0x5EA6, 0x6E21, 0x5992, 0x7AEF, 0x77ED, 0x953B, 0x6BB5, 0x65AD,
- 0x7F0E, 0x5806, 0x5151, 0x961F, 0x5BF9, 0x58A9, 0x5428, 0x8E72,
- 0x6566, 0x987F, 0x56E4, 0x949D, 0x76FE, 0x9041, 0x6387, 0x54C6,
- 0x591A, 0x593A, 0x579B, 0x8EB2, 0x6735, 0x8DFA, 0x8235, 0x5241,
- 0x60F0, 0x5815, 0x86FE, 0x5CE8, 0x9E45, 0x4FC4, 0x989D, 0x8BB9,
- 0x5A25, 0x6076, 0x5384, 0x627C, 0x904F, 0x9102, 0x997F, 0x6069,
- 0x800C, 0x513F, 0x8033, 0x5C14, 0x9975, 0x6D31, 0x4E8C,
- /* GB 0xB740..0xB77E */
- 0x7A1D, 0x7A1F, 0x7A21, 0x7A22, 0x7A24, 0x7A25, 0x7A26, 0x7A27,
- 0x7A28, 0x7A29, 0x7A2A, 0x7A2B, 0x7A2C, 0x7A2D, 0x7A2E, 0x7A2F,
- 0x7A30, 0x7A31, 0x7A32, 0x7A34, 0x7A35, 0x7A36, 0x7A38, 0x7A3A,
- 0x7A3E, 0x7A40, 0x7A41, 0x7A42, 0x7A43, 0x7A44, 0x7A45, 0x7A47,
- 0x7A48, 0x7A49, 0x7A4A, 0x7A4B, 0x7A4C, 0x7A4D, 0x7A4E, 0x7A4F,
- 0x7A50, 0x7A52, 0x7A53, 0x7A54, 0x7A55, 0x7A56, 0x7A58, 0x7A59,
- 0x7A5A, 0x7A5B, 0x7A5C, 0x7A5D, 0x7A5E, 0x7A5F, 0x7A60, 0x7A61,
- 0x7A62, 0x7A63, 0x7A64, 0x7A65, 0x7A66, 0x7A67, 0x7A68,
- /* GB 0xB780..0xB7FE */
- 0x7A69, 0x7A6A, 0x7A6B, 0x7A6C, 0x7A6D, 0x7A6E, 0x7A6F, 0x7A71,
- 0x7A72, 0x7A73, 0x7A75, 0x7A7B, 0x7A7C, 0x7A7D, 0x7A7E, 0x7A82,
- 0x7A85, 0x7A87, 0x7A89, 0x7A8A, 0x7A8B, 0x7A8C, 0x7A8E, 0x7A8F,
- 0x7A90, 0x7A93, 0x7A94, 0x7A99, 0x7A9A, 0x7A9B, 0x7A9E, 0x7AA1,
- 0x7AA2, 0x8D30, 0x53D1, 0x7F5A, 0x7B4F, 0x4F10, 0x4E4F, 0x9600,
- 0x6CD5, 0x73D0, 0x85E9, 0x5E06, 0x756A, 0x7FFB, 0x6A0A, 0x77FE,
- 0x9492, 0x7E41, 0x51E1, 0x70E6, 0x53CD, 0x8FD4, 0x8303, 0x8D29,
- 0x72AF, 0x996D, 0x6CDB, 0x574A, 0x82B3, 0x65B9, 0x80AA, 0x623F,
- 0x9632, 0x59A8, 0x4EFF, 0x8BBF, 0x7EBA, 0x653E, 0x83F2, 0x975E,
- 0x5561, 0x98DE, 0x80A5, 0x532A, 0x8BFD, 0x5420, 0x80BA, 0x5E9F,
- 0x6CB8, 0x8D39, 0x82AC, 0x915A, 0x5429, 0x6C1B, 0x5206, 0x7EB7,
- 0x575F, 0x711A, 0x6C7E, 0x7C89, 0x594B, 0x4EFD, 0x5FFF, 0x6124,
- 0x7CAA, 0x4E30, 0x5C01, 0x67AB, 0x8702, 0x5CF0, 0x950B, 0x98CE,
- 0x75AF, 0x70FD, 0x9022, 0x51AF, 0x7F1D, 0x8BBD, 0x5949, 0x51E4,
- 0x4F5B, 0x5426, 0x592B, 0x6577, 0x80A4, 0x5B75, 0x6276, 0x62C2,
- 0x8F90, 0x5E45, 0x6C1F, 0x7B26, 0x4F0F, 0x4FD8, 0x670D,
- /* GB 0xB840..0xB87E */
- 0x7AA3, 0x7AA4, 0x7AA7, 0x7AA9, 0x7AAA, 0x7AAB, 0x7AAE, 0x7AAF,
- 0x7AB0, 0x7AB1, 0x7AB2, 0x7AB4, 0x7AB5, 0x7AB6, 0x7AB7, 0x7AB8,
- 0x7AB9, 0x7ABA, 0x7ABB, 0x7ABC, 0x7ABD, 0x7ABE, 0x7AC0, 0x7AC1,
- 0x7AC2, 0x7AC3, 0x7AC4, 0x7AC5, 0x7AC6, 0x7AC7, 0x7AC8, 0x7AC9,
- 0x7ACA, 0x7ACC, 0x7ACD, 0x7ACE, 0x7ACF, 0x7AD0, 0x7AD1, 0x7AD2,
- 0x7AD3, 0x7AD4, 0x7AD5, 0x7AD7, 0x7AD8, 0x7ADA, 0x7ADB, 0x7ADC,
- 0x7ADD, 0x7AE1, 0x7AE2, 0x7AE4, 0x7AE7, 0x7AE8, 0x7AE9, 0x7AEA,
- 0x7AEB, 0x7AEC, 0x7AEE, 0x7AF0, 0x7AF1, 0x7AF2, 0x7AF3,
- /* GB 0xB880..0xB8FE */
- 0x7AF4, 0x7AF5, 0x7AF6, 0x7AF7, 0x7AF8, 0x7AFB, 0x7AFC, 0x7AFE,
- 0x7B00, 0x7B01, 0x7B02, 0x7B05, 0x7B07, 0x7B09, 0x7B0C, 0x7B0D,
- 0x7B0E, 0x7B10, 0x7B12, 0x7B13, 0x7B16, 0x7B17, 0x7B18, 0x7B1A,
- 0x7B1C, 0x7B1D, 0x7B1F, 0x7B21, 0x7B22, 0x7B23, 0x7B27, 0x7B29,
- 0x7B2D, 0x6D6E, 0x6DAA, 0x798F, 0x88B1, 0x5F17, 0x752B, 0x629A,
- 0x8F85, 0x4FEF, 0x91DC, 0x65A7, 0x812F, 0x8151, 0x5E9C, 0x8150,
- 0x8D74, 0x526F, 0x8986, 0x8D4B, 0x590D, 0x5085, 0x4ED8, 0x961C,
- 0x7236, 0x8179, 0x8D1F, 0x5BCC, 0x8BA3, 0x9644, 0x5987, 0x7F1A,
- 0x5490, 0x5676, 0x560E, 0x8BE5, 0x6539, 0x6982, 0x9499, 0x76D6,
- 0x6E89, 0x5E72, 0x7518, 0x6746, 0x67D1, 0x7AFF, 0x809D, 0x8D76,
- 0x611F, 0x79C6, 0x6562, 0x8D63, 0x5188, 0x521A, 0x94A2, 0x7F38,
- 0x809B, 0x7EB2, 0x5C97, 0x6E2F, 0x6760, 0x7BD9, 0x768B, 0x9AD8,
- 0x818F, 0x7F94, 0x7CD5, 0x641E, 0x9550, 0x7A3F, 0x544A, 0x54E5,
- 0x6B4C, 0x6401, 0x6208, 0x9E3D, 0x80F3, 0x7599, 0x5272, 0x9769,
- 0x845B, 0x683C, 0x86E4, 0x9601, 0x9694, 0x94EC, 0x4E2A, 0x5404,
- 0x7ED9, 0x6839, 0x8DDF, 0x8015, 0x66F4, 0x5E9A, 0x7FB9,
- /* GB 0xB940..0xB97E */
- 0x7B2F, 0x7B30, 0x7B32, 0x7B34, 0x7B35, 0x7B36, 0x7B37, 0x7B39,
- 0x7B3B, 0x7B3D, 0x7B3F, 0x7B40, 0x7B41, 0x7B42, 0x7B43, 0x7B44,
- 0x7B46, 0x7B48, 0x7B4A, 0x7B4D, 0x7B4E, 0x7B53, 0x7B55, 0x7B57,
- 0x7B59, 0x7B5C, 0x7B5E, 0x7B5F, 0x7B61, 0x7B63, 0x7B64, 0x7B65,
- 0x7B66, 0x7B67, 0x7B68, 0x7B69, 0x7B6A, 0x7B6B, 0x7B6C, 0x7B6D,
- 0x7B6F, 0x7B70, 0x7B73, 0x7B74, 0x7B76, 0x7B78, 0x7B7A, 0x7B7C,
- 0x7B7D, 0x7B7F, 0x7B81, 0x7B82, 0x7B83, 0x7B84, 0x7B86, 0x7B87,
- 0x7B88, 0x7B89, 0x7B8A, 0x7B8B, 0x7B8C, 0x7B8E, 0x7B8F,
- /* GB 0xB980..0xB9FE */
- 0x7B91, 0x7B92, 0x7B93, 0x7B96, 0x7B98, 0x7B99, 0x7B9A, 0x7B9B,
- 0x7B9E, 0x7B9F, 0x7BA0, 0x7BA3, 0x7BA4, 0x7BA5, 0x7BAE, 0x7BAF,
- 0x7BB0, 0x7BB2, 0x7BB3, 0x7BB5, 0x7BB6, 0x7BB7, 0x7BB9, 0x7BBA,
- 0x7BBB, 0x7BBC, 0x7BBD, 0x7BBE, 0x7BBF, 0x7BC0, 0x7BC2, 0x7BC3,
- 0x7BC4, 0x57C2, 0x803F, 0x6897, 0x5DE5, 0x653B, 0x529F, 0x606D,
- 0x9F9A, 0x4F9B, 0x8EAC, 0x516C, 0x5BAB, 0x5F13, 0x5DE9, 0x6C5E,
- 0x62F1, 0x8D21, 0x5171, 0x94A9, 0x52FE, 0x6C9F, 0x82DF, 0x72D7,
- 0x57A2, 0x6784, 0x8D2D, 0x591F, 0x8F9C, 0x83C7, 0x5495, 0x7B8D,
- 0x4F30, 0x6CBD, 0x5B64, 0x59D1, 0x9F13, 0x53E4, 0x86CA, 0x9AA8,
- 0x8C37, 0x80A1, 0x6545, 0x987E, 0x56FA, 0x96C7, 0x522E, 0x74DC,
- 0x5250, 0x5BE1, 0x6302, 0x8902, 0x4E56, 0x62D0, 0x602A, 0x68FA,
- 0x5173, 0x5B98, 0x51A0, 0x89C2, 0x7BA1, 0x9986, 0x7F50, 0x60EF,
- 0x704C, 0x8D2F, 0x5149, 0x5E7F, 0x901B, 0x7470, 0x89C4, 0x572D,
- 0x7845, 0x5F52, 0x9F9F, 0x95FA, 0x8F68, 0x9B3C, 0x8BE1, 0x7678,
- 0x6842, 0x67DC, 0x8DEA, 0x8D35, 0x523D, 0x8F8A, 0x6EDA, 0x68CD,
- 0x9505, 0x90ED, 0x56FD, 0x679C, 0x88F9, 0x8FC7, 0x54C8,
- /* GB 0xBA40..0xBA7E */
- 0x7BC5, 0x7BC8, 0x7BC9, 0x7BCA, 0x7BCB, 0x7BCD, 0x7BCE, 0x7BCF,
- 0x7BD0, 0x7BD2, 0x7BD4, 0x7BD5, 0x7BD6, 0x7BD7, 0x7BD8, 0x7BDB,
- 0x7BDC, 0x7BDE, 0x7BDF, 0x7BE0, 0x7BE2, 0x7BE3, 0x7BE4, 0x7BE7,
- 0x7BE8, 0x7BE9, 0x7BEB, 0x7BEC, 0x7BED, 0x7BEF, 0x7BF0, 0x7BF2,
- 0x7BF3, 0x7BF4, 0x7BF5, 0x7BF6, 0x7BF8, 0x7BF9, 0x7BFA, 0x7BFB,
- 0x7BFD, 0x7BFF, 0x7C00, 0x7C01, 0x7C02, 0x7C03, 0x7C04, 0x7C05,
- 0x7C06, 0x7C08, 0x7C09, 0x7C0A, 0x7C0D, 0x7C0E, 0x7C10, 0x7C11,
- 0x7C12, 0x7C13, 0x7C14, 0x7C15, 0x7C17, 0x7C18, 0x7C19,
- /* GB 0xBA80..0xBAFE */
- 0x7C1A, 0x7C1B, 0x7C1C, 0x7C1D, 0x7C1E, 0x7C20, 0x7C21, 0x7C22,
- 0x7C23, 0x7C24, 0x7C25, 0x7C28, 0x7C29, 0x7C2B, 0x7C2C, 0x7C2D,
- 0x7C2E, 0x7C2F, 0x7C30, 0x7C31, 0x7C32, 0x7C33, 0x7C34, 0x7C35,
- 0x7C36, 0x7C37, 0x7C39, 0x7C3A, 0x7C3B, 0x7C3C, 0x7C3D, 0x7C3E,
- 0x7C42, 0x9AB8, 0x5B69, 0x6D77, 0x6C26, 0x4EA5, 0x5BB3, 0x9A87,
- 0x9163, 0x61A8, 0x90AF, 0x97E9, 0x542B, 0x6DB5, 0x5BD2, 0x51FD,
- 0x558A, 0x7F55, 0x7FF0, 0x64BC, 0x634D, 0x65F1, 0x61BE, 0x608D,
- 0x710A, 0x6C57, 0x6C49, 0x592F, 0x676D, 0x822A, 0x58D5, 0x568E,
- 0x8C6A, 0x6BEB, 0x90DD, 0x597D, 0x8017, 0x53F7, 0x6D69, 0x5475,
- 0x559D, 0x8377, 0x83CF, 0x6838, 0x79BE, 0x548C, 0x4F55, 0x5408,
- 0x76D2, 0x8C89, 0x9602, 0x6CB3, 0x6DB8, 0x8D6B, 0x8910, 0x9E64,
- 0x8D3A, 0x563F, 0x9ED1, 0x75D5, 0x5F88, 0x72E0, 0x6068, 0x54FC,
- 0x4EA8, 0x6A2A, 0x8861, 0x6052, 0x8F70, 0x54C4, 0x70D8, 0x8679,
- 0x9E3F, 0x6D2A, 0x5B8F, 0x5F18, 0x7EA2, 0x5589, 0x4FAF, 0x7334,
- 0x543C, 0x539A, 0x5019, 0x540E, 0x547C, 0x4E4E, 0x5FFD, 0x745A,
- 0x58F6, 0x846B, 0x80E1, 0x8774, 0x72D0, 0x7CCA, 0x6E56,
- /* GB 0xBB40..0xBB7E */
- 0x7C43, 0x7C44, 0x7C45, 0x7C46, 0x7C47, 0x7C48, 0x7C49, 0x7C4A,
- 0x7C4B, 0x7C4C, 0x7C4E, 0x7C4F, 0x7C50, 0x7C51, 0x7C52, 0x7C53,
- 0x7C54, 0x7C55, 0x7C56, 0x7C57, 0x7C58, 0x7C59, 0x7C5A, 0x7C5B,
- 0x7C5C, 0x7C5D, 0x7C5E, 0x7C5F, 0x7C60, 0x7C61, 0x7C62, 0x7C63,
- 0x7C64, 0x7C65, 0x7C66, 0x7C67, 0x7C68, 0x7C69, 0x7C6A, 0x7C6B,
- 0x7C6C, 0x7C6D, 0x7C6E, 0x7C6F, 0x7C70, 0x7C71, 0x7C72, 0x7C75,
- 0x7C76, 0x7C77, 0x7C78, 0x7C79, 0x7C7A, 0x7C7E, 0x7C7F, 0x7C80,
- 0x7C81, 0x7C82, 0x7C83, 0x7C84, 0x7C85, 0x7C86, 0x7C87,
- /* GB 0xBB80..0xBBFE */
- 0x7C88, 0x7C8A, 0x7C8B, 0x7C8C, 0x7C8D, 0x7C8E, 0x7C8F, 0x7C90,
- 0x7C93, 0x7C94, 0x7C96, 0x7C99, 0x7C9A, 0x7C9B, 0x7CA0, 0x7CA1,
- 0x7CA3, 0x7CA6, 0x7CA7, 0x7CA8, 0x7CA9, 0x7CAB, 0x7CAC, 0x7CAD,
- 0x7CAF, 0x7CB0, 0x7CB4, 0x7CB5, 0x7CB6, 0x7CB7, 0x7CB8, 0x7CBA,
- 0x7CBB, 0x5F27, 0x864E, 0x552C, 0x62A4, 0x4E92, 0x6CAA, 0x6237,
- 0x82B1, 0x54D7, 0x534E, 0x733E, 0x6ED1, 0x753B, 0x5212, 0x5316,
- 0x8BDD, 0x69D0, 0x5F8A, 0x6000, 0x6DEE, 0x574F, 0x6B22, 0x73AF,
- 0x6853, 0x8FD8, 0x7F13, 0x6362, 0x60A3, 0x5524, 0x75EA, 0x8C62,
- 0x7115, 0x6DA3, 0x5BA6, 0x5E7B, 0x8352, 0x614C, 0x9EC4, 0x78FA,
- 0x8757, 0x7C27, 0x7687, 0x51F0, 0x60F6, 0x714C, 0x6643, 0x5E4C,
- 0x604D, 0x8C0E, 0x7070, 0x6325, 0x8F89, 0x5FBD, 0x6062, 0x86D4,
- 0x56DE, 0x6BC1, 0x6094, 0x6167, 0x5349, 0x60E0, 0x6666, 0x8D3F,
- 0x79FD, 0x4F1A, 0x70E9, 0x6C47, 0x8BB3, 0x8BF2, 0x7ED8, 0x8364,
- 0x660F, 0x5A5A, 0x9B42, 0x6D51, 0x6DF7, 0x8C41, 0x6D3B, 0x4F19,
- 0x706B, 0x83B7, 0x6216, 0x60D1, 0x970D, 0x8D27, 0x7978, 0x51FB,
- 0x573E, 0x57FA, 0x673A, 0x7578, 0x7A3D, 0x79EF, 0x7B95,
- /* GB 0xBC40..0xBC7E */
- 0x7CBF, 0x7CC0, 0x7CC2, 0x7CC3, 0x7CC4, 0x7CC6, 0x7CC9, 0x7CCB,
- 0x7CCE, 0x7CCF, 0x7CD0, 0x7CD1, 0x7CD2, 0x7CD3, 0x7CD4, 0x7CD8,
- 0x7CDA, 0x7CDB, 0x7CDD, 0x7CDE, 0x7CE1, 0x7CE2, 0x7CE3, 0x7CE4,
- 0x7CE5, 0x7CE6, 0x7CE7, 0x7CE9, 0x7CEA, 0x7CEB, 0x7CEC, 0x7CED,
- 0x7CEE, 0x7CF0, 0x7CF1, 0x7CF2, 0x7CF3, 0x7CF4, 0x7CF5, 0x7CF6,
- 0x7CF7, 0x7CF9, 0x7CFA, 0x7CFC, 0x7CFD, 0x7CFE, 0x7CFF, 0x7D00,
- 0x7D01, 0x7D02, 0x7D03, 0x7D04, 0x7D05, 0x7D06, 0x7D07, 0x7D08,
- 0x7D09, 0x7D0B, 0x7D0C, 0x7D0D, 0x7D0E, 0x7D0F, 0x7D10,
- /* GB 0xBC80..0xBCFE */
- 0x7D11, 0x7D12, 0x7D13, 0x7D14, 0x7D15, 0x7D16, 0x7D17, 0x7D18,
- 0x7D19, 0x7D1A, 0x7D1B, 0x7D1C, 0x7D1D, 0x7D1E, 0x7D1F, 0x7D21,
- 0x7D23, 0x7D24, 0x7D25, 0x7D26, 0x7D28, 0x7D29, 0x7D2A, 0x7D2C,
- 0x7D2D, 0x7D2E, 0x7D30, 0x7D31, 0x7D32, 0x7D33, 0x7D34, 0x7D35,
- 0x7D36, 0x808C, 0x9965, 0x8FF9, 0x6FC0, 0x8BA5, 0x9E21, 0x59EC,
- 0x7EE9, 0x7F09, 0x5409, 0x6781, 0x68D8, 0x8F91, 0x7C4D, 0x96C6,
- 0x53CA, 0x6025, 0x75BE, 0x6C72, 0x5373, 0x5AC9, 0x7EA7, 0x6324,
- 0x51E0, 0x810A, 0x5DF1, 0x84DF, 0x6280, 0x5180, 0x5B63, 0x4F0E,
- 0x796D, 0x5242, 0x60B8, 0x6D4E, 0x5BC4, 0x5BC2, 0x8BA1, 0x8BB0,
- 0x65E2, 0x5FCC, 0x9645, 0x5993, 0x7EE7, 0x7EAA, 0x5609, 0x67B7,
- 0x5939, 0x4F73, 0x5BB6, 0x52A0, 0x835A, 0x988A, 0x8D3E, 0x7532,
- 0x94BE, 0x5047, 0x7A3C, 0x4EF7, 0x67B6, 0x9A7E, 0x5AC1, 0x6B7C,
- 0x76D1, 0x575A, 0x5C16, 0x7B3A, 0x95F4, 0x714E, 0x517C, 0x80A9,
- 0x8270, 0x5978, 0x7F04, 0x8327, 0x68C0, 0x67EC, 0x78B1, 0x7877,
- 0x62E3, 0x6361, 0x7B80, 0x4FED, 0x526A, 0x51CF, 0x8350, 0x69DB,
- 0x9274, 0x8DF5, 0x8D31, 0x89C1, 0x952E, 0x7BAD, 0x4EF6,
- /* GB 0xBD40..0xBD7E */
- 0x7D37, 0x7D38, 0x7D39, 0x7D3A, 0x7D3B, 0x7D3C, 0x7D3D, 0x7D3E,
- 0x7D3F, 0x7D40, 0x7D41, 0x7D42, 0x7D43, 0x7D44, 0x7D45, 0x7D46,
- 0x7D47, 0x7D48, 0x7D49, 0x7D4A, 0x7D4B, 0x7D4C, 0x7D4D, 0x7D4E,
- 0x7D4F, 0x7D50, 0x7D51, 0x7D52, 0x7D53, 0x7D54, 0x7D55, 0x7D56,
- 0x7D57, 0x7D58, 0x7D59, 0x7D5A, 0x7D5B, 0x7D5C, 0x7D5D, 0x7D5E,
- 0x7D5F, 0x7D60, 0x7D61, 0x7D62, 0x7D63, 0x7D64, 0x7D65, 0x7D66,
- 0x7D67, 0x7D68, 0x7D69, 0x7D6A, 0x7D6B, 0x7D6C, 0x7D6D, 0x7D6F,
- 0x7D70, 0x7D71, 0x7D72, 0x7D73, 0x7D74, 0x7D75, 0x7D76,
- /* GB 0xBD80..0xBDFE */
- 0x7D78, 0x7D79, 0x7D7A, 0x7D7B, 0x7D7C, 0x7D7D, 0x7D7E, 0x7D7F,
- 0x7D80, 0x7D81, 0x7D82, 0x7D83, 0x7D84, 0x7D85, 0x7D86, 0x7D87,
- 0x7D88, 0x7D89, 0x7D8A, 0x7D8B, 0x7D8C, 0x7D8D, 0x7D8E, 0x7D8F,
- 0x7D90, 0x7D91, 0x7D92, 0x7D93, 0x7D94, 0x7D95, 0x7D96, 0x7D97,
- 0x7D98, 0x5065, 0x8230, 0x5251, 0x996F, 0x6E10, 0x6E85, 0x6DA7,
- 0x5EFA, 0x50F5, 0x59DC, 0x5C06, 0x6D46, 0x6C5F, 0x7586, 0x848B,
- 0x6868, 0x5956, 0x8BB2, 0x5320, 0x9171, 0x964D, 0x8549, 0x6912,
- 0x7901, 0x7126, 0x80F6, 0x4EA4, 0x90CA, 0x6D47, 0x9A84, 0x5A07,
- 0x56BC, 0x6405, 0x94F0, 0x77EB, 0x4FA5, 0x811A, 0x72E1, 0x89D2,
- 0x997A, 0x7F34, 0x7EDE, 0x527F, 0x6559, 0x9175, 0x8F7F, 0x8F83,
- 0x53EB, 0x7A96, 0x63ED, 0x63A5, 0x7686, 0x79F8, 0x8857, 0x9636,
- 0x622A, 0x52AB, 0x8282, 0x6854, 0x6770, 0x6377, 0x776B, 0x7AED,
- 0x6D01, 0x7ED3, 0x89E3, 0x59D0, 0x6212, 0x85C9, 0x82A5, 0x754C,
- 0x501F, 0x4ECB, 0x75A5, 0x8BEB, 0x5C4A, 0x5DFE, 0x7B4B, 0x65A4,
- 0x91D1, 0x4ECA, 0x6D25, 0x895F, 0x7D27, 0x9526, 0x4EC5, 0x8C28,
- 0x8FDB, 0x9773, 0x664B, 0x7981, 0x8FD1, 0x70EC, 0x6D78,
- /* GB 0xBE40..0xBE7E */
- 0x7D99, 0x7D9A, 0x7D9B, 0x7D9C, 0x7D9D, 0x7D9E, 0x7D9F, 0x7DA0,
- 0x7DA1, 0x7DA2, 0x7DA3, 0x7DA4, 0x7DA5, 0x7DA7, 0x7DA8, 0x7DA9,
- 0x7DAA, 0x7DAB, 0x7DAC, 0x7DAD, 0x7DAF, 0x7DB0, 0x7DB1, 0x7DB2,
- 0x7DB3, 0x7DB4, 0x7DB5, 0x7DB6, 0x7DB7, 0x7DB8, 0x7DB9, 0x7DBA,
- 0x7DBB, 0x7DBC, 0x7DBD, 0x7DBE, 0x7DBF, 0x7DC0, 0x7DC1, 0x7DC2,
- 0x7DC3, 0x7DC4, 0x7DC5, 0x7DC6, 0x7DC7, 0x7DC8, 0x7DC9, 0x7DCA,
- 0x7DCB, 0x7DCC, 0x7DCD, 0x7DCE, 0x7DCF, 0x7DD0, 0x7DD1, 0x7DD2,
- 0x7DD3, 0x7DD4, 0x7DD5, 0x7DD6, 0x7DD7, 0x7DD8, 0x7DD9,
- /* GB 0xBE80..0xBEFE */
- 0x7DDA, 0x7DDB, 0x7DDC, 0x7DDD, 0x7DDE, 0x7DDF, 0x7DE0, 0x7DE1,
- 0x7DE2, 0x7DE3, 0x7DE4, 0x7DE5, 0x7DE6, 0x7DE7, 0x7DE8, 0x7DE9,
- 0x7DEA, 0x7DEB, 0x7DEC, 0x7DED, 0x7DEE, 0x7DEF, 0x7DF0, 0x7DF1,
- 0x7DF2, 0x7DF3, 0x7DF4, 0x7DF5, 0x7DF6, 0x7DF7, 0x7DF8, 0x7DF9,
- 0x7DFA, 0x5C3D, 0x52B2, 0x8346, 0x5162, 0x830E, 0x775B, 0x6676,
- 0x9CB8, 0x4EAC, 0x60CA, 0x7CBE, 0x7CB3, 0x7ECF, 0x4E95, 0x8B66,
- 0x666F, 0x9888, 0x9759, 0x5883, 0x656C, 0x955C, 0x5F84, 0x75C9,
- 0x9756, 0x7ADF, 0x7ADE, 0x51C0, 0x70AF, 0x7A98, 0x63EA, 0x7A76,
- 0x7EA0, 0x7396, 0x97ED, 0x4E45, 0x7078, 0x4E5D, 0x9152, 0x53A9,
- 0x6551, 0x65E7, 0x81FC, 0x8205, 0x548E, 0x5C31, 0x759A, 0x97A0,
- 0x62D8, 0x72D9, 0x75BD, 0x5C45, 0x9A79, 0x83CA, 0x5C40, 0x5480,
- 0x77E9, 0x4E3E, 0x6CAE, 0x805A, 0x62D2, 0x636E, 0x5DE8, 0x5177,
- 0x8DDD, 0x8E1E, 0x952F, 0x4FF1, 0x53E5, 0x60E7, 0x70AC, 0x5267,
- 0x6350, 0x9E43, 0x5A1F, 0x5026, 0x7737, 0x5377, 0x7EE2, 0x6485,
- 0x652B, 0x6289, 0x6398, 0x5014, 0x7235, 0x89C9, 0x51B3, 0x8BC0,
- 0x7EDD, 0x5747, 0x83CC, 0x94A7, 0x519B, 0x541B, 0x5CFB,
- /* GB 0xBF40..0xBF7E */
- 0x7DFB, 0x7DFC, 0x7DFD, 0x7DFE, 0x7DFF, 0x7E00, 0x7E01, 0x7E02,
- 0x7E03, 0x7E04, 0x7E05, 0x7E06, 0x7E07, 0x7E08, 0x7E09, 0x7E0A,
- 0x7E0B, 0x7E0C, 0x7E0D, 0x7E0E, 0x7E0F, 0x7E10, 0x7E11, 0x7E12,
- 0x7E13, 0x7E14, 0x7E15, 0x7E16, 0x7E17, 0x7E18, 0x7E19, 0x7E1A,
- 0x7E1B, 0x7E1C, 0x7E1D, 0x7E1E, 0x7E1F, 0x7E20, 0x7E21, 0x7E22,
- 0x7E23, 0x7E24, 0x7E25, 0x7E26, 0x7E27, 0x7E28, 0x7E29, 0x7E2A,
- 0x7E2B, 0x7E2C, 0x7E2D, 0x7E2E, 0x7E2F, 0x7E30, 0x7E31, 0x7E32,
- 0x7E33, 0x7E34, 0x7E35, 0x7E36, 0x7E37, 0x7E38, 0x7E39,
- /* GB 0xBF80..0xBFFE */
- 0x7E3A, 0x7E3C, 0x7E3D, 0x7E3E, 0x7E3F, 0x7E40, 0x7E42, 0x7E43,
- 0x7E44, 0x7E45, 0x7E46, 0x7E48, 0x7E49, 0x7E4A, 0x7E4B, 0x7E4C,
- 0x7E4D, 0x7E4E, 0x7E4F, 0x7E50, 0x7E51, 0x7E52, 0x7E53, 0x7E54,
- 0x7E55, 0x7E56, 0x7E57, 0x7E58, 0x7E59, 0x7E5A, 0x7E5B, 0x7E5C,
- 0x7E5D, 0x4FCA, 0x7AE3, 0x6D5A, 0x90E1, 0x9A8F, 0x5580, 0x5496,
- 0x5361, 0x54AF, 0x5F00, 0x63E9, 0x6977, 0x51EF, 0x6168, 0x520A,
- 0x582A, 0x52D8, 0x574E, 0x780D, 0x770B, 0x5EB7, 0x6177, 0x7CE0,
- 0x625B, 0x6297, 0x4EA2, 0x7095, 0x8003, 0x62F7, 0x70E4, 0x9760,
- 0x5777, 0x82DB, 0x67EF, 0x68F5, 0x78D5, 0x9897, 0x79D1, 0x58F3,
- 0x54B3, 0x53EF, 0x6E34, 0x514B, 0x523B, 0x5BA2, 0x8BFE, 0x80AF,
- 0x5543, 0x57A6, 0x6073, 0x5751, 0x542D, 0x7A7A, 0x6050, 0x5B54,
- 0x63A7, 0x62A0, 0x53E3, 0x6263, 0x5BC7, 0x67AF, 0x54ED, 0x7A9F,
- 0x82E6, 0x9177, 0x5E93, 0x88E4, 0x5938, 0x57AE, 0x630E, 0x8DE8,
- 0x80EF, 0x5757, 0x7B77, 0x4FA9, 0x5FEB, 0x5BBD, 0x6B3E, 0x5321,
- 0x7B50, 0x72C2, 0x6846, 0x77FF, 0x7736, 0x65F7, 0x51B5, 0x4E8F,
- 0x76D4, 0x5CBF, 0x7AA5, 0x8475, 0x594E, 0x9B41, 0x5080,
- /* GB 0xC040..0xC07E */
- 0x7E5E, 0x7E5F, 0x7E60, 0x7E61, 0x7E62, 0x7E63, 0x7E64, 0x7E65,
- 0x7E66, 0x7E67, 0x7E68, 0x7E69, 0x7E6A, 0x7E6B, 0x7E6C, 0x7E6D,
- 0x7E6E, 0x7E6F, 0x7E70, 0x7E71, 0x7E72, 0x7E73, 0x7E74, 0x7E75,
- 0x7E76, 0x7E77, 0x7E78, 0x7E79, 0x7E7A, 0x7E7B, 0x7E7C, 0x7E7D,
- 0x7E7E, 0x7E7F, 0x7E80, 0x7E81, 0x7E83, 0x7E84, 0x7E85, 0x7E86,
- 0x7E87, 0x7E88, 0x7E89, 0x7E8A, 0x7E8B, 0x7E8C, 0x7E8D, 0x7E8E,
- 0x7E8F, 0x7E90, 0x7E91, 0x7E92, 0x7E93, 0x7E94, 0x7E95, 0x7E96,
- 0x7E97, 0x7E98, 0x7E99, 0x7E9A, 0x7E9C, 0x7E9D, 0x7E9E,
- /* GB 0xC080..0xC0FE */
- 0x7EAE, 0x7EB4, 0x7EBB, 0x7EBC, 0x7ED6, 0x7EE4, 0x7EEC, 0x7EF9,
- 0x7F0A, 0x7F10, 0x7F1E, 0x7F37, 0x7F39, 0x7F3B, 0x7F3C, 0x7F3D,
- 0x7F3E, 0x7F3F, 0x7F40, 0x7F41, 0x7F43, 0x7F46, 0x7F47, 0x7F48,
- 0x7F49, 0x7F4A, 0x7F4B, 0x7F4C, 0x7F4D, 0x7F4E, 0x7F4F, 0x7F52,
- 0x7F53, 0x9988, 0x6127, 0x6E83, 0x5764, 0x6606, 0x6346, 0x56F0,
- 0x62EC, 0x6269, 0x5ED3, 0x9614, 0x5783, 0x62C9, 0x5587, 0x8721,
- 0x814A, 0x8FA3, 0x5566, 0x83B1, 0x6765, 0x8D56, 0x84DD, 0x5A6A,
- 0x680F, 0x62E6, 0x7BEE, 0x9611, 0x5170, 0x6F9C, 0x8C30, 0x63FD,
- 0x89C8, 0x61D2, 0x7F06, 0x70C2, 0x6EE5, 0x7405, 0x6994, 0x72FC,
- 0x5ECA, 0x90CE, 0x6717, 0x6D6A, 0x635E, 0x52B3, 0x7262, 0x8001,
- 0x4F6C, 0x59E5, 0x916A, 0x70D9, 0x6D9D, 0x52D2, 0x4E50, 0x96F7,
- 0x956D, 0x857E, 0x78CA, 0x7D2F, 0x5121, 0x5792, 0x64C2, 0x808B,
- 0x7C7B, 0x6CEA, 0x68F1, 0x695E, 0x51B7, 0x5398, 0x68A8, 0x7281,
- 0x9ECE, 0x7BF1, 0x72F8, 0x79BB, 0x6F13, 0x7406, 0x674E, 0x91CC,
- 0x9CA4, 0x793C, 0x8389, 0x8354, 0x540F, 0x6817, 0x4E3D, 0x5389,
- 0x52B1, 0x783E, 0x5386, 0x5229, 0x5088, 0x4F8B, 0x4FD0,
- /* GB 0xC140..0xC17E */
- 0x7F56, 0x7F59, 0x7F5B, 0x7F5C, 0x7F5D, 0x7F5E, 0x7F60, 0x7F63,
- 0x7F64, 0x7F65, 0x7F66, 0x7F67, 0x7F6B, 0x7F6C, 0x7F6D, 0x7F6F,
- 0x7F70, 0x7F73, 0x7F75, 0x7F76, 0x7F77, 0x7F78, 0x7F7A, 0x7F7B,
- 0x7F7C, 0x7F7D, 0x7F7F, 0x7F80, 0x7F82, 0x7F83, 0x7F84, 0x7F85,
- 0x7F86, 0x7F87, 0x7F88, 0x7F89, 0x7F8B, 0x7F8D, 0x7F8F, 0x7F90,
- 0x7F91, 0x7F92, 0x7F93, 0x7F95, 0x7F96, 0x7F97, 0x7F98, 0x7F99,
- 0x7F9B, 0x7F9C, 0x7FA0, 0x7FA2, 0x7FA3, 0x7FA5, 0x7FA6, 0x7FA8,
- 0x7FA9, 0x7FAA, 0x7FAB, 0x7FAC, 0x7FAD, 0x7FAE, 0x7FB1,
- /* GB 0xC180..0xC1FE */
- 0x7FB3, 0x7FB4, 0x7FB5, 0x7FB6, 0x7FB7, 0x7FBA, 0x7FBB, 0x7FBE,
- 0x7FC0, 0x7FC2, 0x7FC3, 0x7FC4, 0x7FC6, 0x7FC7, 0x7FC8, 0x7FC9,
- 0x7FCB, 0x7FCD, 0x7FCF, 0x7FD0, 0x7FD1, 0x7FD2, 0x7FD3, 0x7FD6,
- 0x7FD7, 0x7FD9, 0x7FDA, 0x7FDB, 0x7FDC, 0x7FDD, 0x7FDE, 0x7FE2,
- 0x7FE3, 0x75E2, 0x7ACB, 0x7C92, 0x6CA5, 0x96B6, 0x529B, 0x7483,
- 0x54E9, 0x4FE9, 0x8054, 0x83B2, 0x8FDE, 0x9570, 0x5EC9, 0x601C,
- 0x6D9F, 0x5E18, 0x655B, 0x8138, 0x94FE, 0x604B, 0x70BC, 0x7EC3,
- 0x7CAE, 0x51C9, 0x6881, 0x7CB1, 0x826F, 0x4E24, 0x8F86, 0x91CF,
- 0x667E, 0x4EAE, 0x8C05, 0x64A9, 0x804A, 0x50DA, 0x7597, 0x71CE,
- 0x5BE5, 0x8FBD, 0x6F66, 0x4E86, 0x6482, 0x9563, 0x5ED6, 0x6599,
- 0x5217, 0x88C2, 0x70C8, 0x52A3, 0x730E, 0x7433, 0x6797, 0x78F7,
- 0x9716, 0x4E34, 0x90BB, 0x9CDE, 0x6DCB, 0x51DB, 0x8D41, 0x541D,
- 0x62CE, 0x73B2, 0x83F1, 0x96F6, 0x9F84, 0x94C3, 0x4F36, 0x7F9A,
- 0x51CC, 0x7075, 0x9675, 0x5CAD, 0x9886, 0x53E6, 0x4EE4, 0x6E9C,
- 0x7409, 0x69B4, 0x786B, 0x998F, 0x7559, 0x5218, 0x7624, 0x6D41,
- 0x67F3, 0x516D, 0x9F99, 0x804B, 0x5499, 0x7B3C, 0x7ABF,
- /* GB 0xC240..0xC27E */
- 0x7FE4, 0x7FE7, 0x7FE8, 0x7FEA, 0x7FEB, 0x7FEC, 0x7FED, 0x7FEF,
- 0x7FF2, 0x7FF4, 0x7FF5, 0x7FF6, 0x7FF7, 0x7FF8, 0x7FF9, 0x7FFA,
- 0x7FFD, 0x7FFE, 0x7FFF, 0x8002, 0x8007, 0x8008, 0x8009, 0x800A,
- 0x800E, 0x800F, 0x8011, 0x8013, 0x801A, 0x801B, 0x801D, 0x801E,
- 0x801F, 0x8021, 0x8023, 0x8024, 0x802B, 0x802C, 0x802D, 0x802E,
- 0x802F, 0x8030, 0x8032, 0x8034, 0x8039, 0x803A, 0x803C, 0x803E,
- 0x8040, 0x8041, 0x8044, 0x8045, 0x8047, 0x8048, 0x8049, 0x804E,
- 0x804F, 0x8050, 0x8051, 0x8053, 0x8055, 0x8056, 0x8057,
- /* GB 0xC280..0xC2FE */
- 0x8059, 0x805B, 0x805C, 0x805D, 0x805E, 0x805F, 0x8060, 0x8061,
- 0x8062, 0x8063, 0x8064, 0x8065, 0x8066, 0x8067, 0x8068, 0x806B,
- 0x806C, 0x806D, 0x806E, 0x806F, 0x8070, 0x8072, 0x8073, 0x8074,
- 0x8075, 0x8076, 0x8077, 0x8078, 0x8079, 0x807A, 0x807B, 0x807C,
- 0x807D, 0x9686, 0x5784, 0x62E2, 0x9647, 0x697C, 0x5A04, 0x6402,
- 0x7BD3, 0x6F0F, 0x964B, 0x82A6, 0x5362, 0x9885, 0x5E90, 0x7089,
- 0x63B3, 0x5364, 0x864F, 0x9C81, 0x9E93, 0x788C, 0x9732, 0x8DEF,
- 0x8D42, 0x9E7F, 0x6F5E, 0x7984, 0x5F55, 0x9646, 0x622E, 0x9A74,
- 0x5415, 0x94DD, 0x4FA3, 0x65C5, 0x5C65, 0x5C61, 0x7F15, 0x8651,
- 0x6C2F, 0x5F8B, 0x7387, 0x6EE4, 0x7EFF, 0x5CE6, 0x631B, 0x5B6A,
- 0x6EE6, 0x5375, 0x4E71, 0x63A0, 0x7565, 0x62A1, 0x8F6E, 0x4F26,
- 0x4ED1, 0x6CA6, 0x7EB6, 0x8BBA, 0x841D, 0x87BA, 0x7F57, 0x903B,
- 0x9523, 0x7BA9, 0x9AA1, 0x88F8, 0x843D, 0x6D1B, 0x9A86, 0x7EDC,
- 0x5988, 0x9EBB, 0x739B, 0x7801, 0x8682, 0x9A6C, 0x9A82, 0x561B,
- 0x5417, 0x57CB, 0x4E70, 0x9EA6, 0x5356, 0x8FC8, 0x8109, 0x7792,
- 0x9992, 0x86EE, 0x6EE1, 0x8513, 0x66FC, 0x6162, 0x6F2B,
- /* GB 0xC340..0xC37E */
- 0x807E, 0x8081, 0x8082, 0x8085, 0x8088, 0x808A, 0x808D, 0x808E,
- 0x808F, 0x8090, 0x8091, 0x8092, 0x8094, 0x8095, 0x8097, 0x8099,
- 0x809E, 0x80A3, 0x80A6, 0x80A7, 0x80A8, 0x80AC, 0x80B0, 0x80B3,
- 0x80B5, 0x80B6, 0x80B8, 0x80B9, 0x80BB, 0x80C5, 0x80C7, 0x80C8,
- 0x80C9, 0x80CA, 0x80CB, 0x80CF, 0x80D0, 0x80D1, 0x80D2, 0x80D3,
- 0x80D4, 0x80D5, 0x80D8, 0x80DF, 0x80E0, 0x80E2, 0x80E3, 0x80E6,
- 0x80EE, 0x80F5, 0x80F7, 0x80F9, 0x80FB, 0x80FE, 0x80FF, 0x8100,
- 0x8101, 0x8103, 0x8104, 0x8105, 0x8107, 0x8108, 0x810B,
- /* GB 0xC380..0xC3FE */
- 0x810C, 0x8115, 0x8117, 0x8119, 0x811B, 0x811C, 0x811D, 0x811F,
- 0x8120, 0x8121, 0x8122, 0x8123, 0x8124, 0x8125, 0x8126, 0x8127,
- 0x8128, 0x8129, 0x812A, 0x812B, 0x812D, 0x812E, 0x8130, 0x8133,
- 0x8134, 0x8135, 0x8137, 0x8139, 0x813A, 0x813B, 0x813C, 0x813D,
- 0x813F, 0x8C29, 0x8292, 0x832B, 0x76F2, 0x6C13, 0x5FD9, 0x83BD,
- 0x732B, 0x8305, 0x951A, 0x6BDB, 0x77DB, 0x94C6, 0x536F, 0x8302,
- 0x5192, 0x5E3D, 0x8C8C, 0x8D38, 0x4E48, 0x73AB, 0x679A, 0x6885,
- 0x9176, 0x9709, 0x7164, 0x6CA1, 0x7709, 0x5A92, 0x9541, 0x6BCF,
- 0x7F8E, 0x6627, 0x5BD0, 0x59B9, 0x5A9A, 0x95E8, 0x95F7, 0x4EEC,
- 0x840C, 0x8499, 0x6AAC, 0x76DF, 0x9530, 0x731B, 0x68A6, 0x5B5F,
- 0x772F, 0x919A, 0x9761, 0x7CDC, 0x8FF7, 0x8C1C, 0x5F25, 0x7C73,
- 0x79D8, 0x89C5, 0x6CCC, 0x871C, 0x5BC6, 0x5E42, 0x68C9, 0x7720,
- 0x7EF5, 0x5195, 0x514D, 0x52C9, 0x5A29, 0x7F05, 0x9762, 0x82D7,
- 0x63CF, 0x7784, 0x85D0, 0x79D2, 0x6E3A, 0x5E99, 0x5999, 0x8511,
- 0x706D, 0x6C11, 0x62BF, 0x76BF, 0x654F, 0x60AF, 0x95FD, 0x660E,
- 0x879F, 0x9E23, 0x94ED, 0x540D, 0x547D, 0x8C2C, 0x6478,
- /* GB 0xC440..0xC47E */
- 0x8140, 0x8141, 0x8142, 0x8143, 0x8144, 0x8145, 0x8147, 0x8149,
- 0x814D, 0x814E, 0x814F, 0x8152, 0x8156, 0x8157, 0x8158, 0x815B,
- 0x815C, 0x815D, 0x815E, 0x815F, 0x8161, 0x8162, 0x8163, 0x8164,
- 0x8166, 0x8168, 0x816A, 0x816B, 0x816C, 0x816F, 0x8172, 0x8173,
- 0x8175, 0x8176, 0x8177, 0x8178, 0x8181, 0x8183, 0x8184, 0x8185,
- 0x8186, 0x8187, 0x8189, 0x818B, 0x818C, 0x818D, 0x818E, 0x8190,
- 0x8192, 0x8193, 0x8194, 0x8195, 0x8196, 0x8197, 0x8199, 0x819A,
- 0x819E, 0x819F, 0x81A0, 0x81A1, 0x81A2, 0x81A4, 0x81A5,
- /* GB 0xC480..0xC4FE */
- 0x81A7, 0x81A9, 0x81AB, 0x81AC, 0x81AD, 0x81AE, 0x81AF, 0x81B0,
- 0x81B1, 0x81B2, 0x81B4, 0x81B5, 0x81B6, 0x81B7, 0x81B8, 0x81B9,
- 0x81BC, 0x81BD, 0x81BE, 0x81BF, 0x81C4, 0x81C5, 0x81C7, 0x81C8,
- 0x81C9, 0x81CB, 0x81CD, 0x81CE, 0x81CF, 0x81D0, 0x81D1, 0x81D2,
- 0x81D3, 0x6479, 0x8611, 0x6A21, 0x819C, 0x78E8, 0x6469, 0x9B54,
- 0x62B9, 0x672B, 0x83AB, 0x58A8, 0x9ED8, 0x6CAB, 0x6F20, 0x5BDE,
- 0x964C, 0x8C0B, 0x725F, 0x67D0, 0x62C7, 0x7261, 0x4EA9, 0x59C6,
- 0x6BCD, 0x5893, 0x66AE, 0x5E55, 0x52DF, 0x6155, 0x6728, 0x76EE,
- 0x7766, 0x7267, 0x7A46, 0x62FF, 0x54EA, 0x5450, 0x94A0, 0x90A3,
- 0x5A1C, 0x7EB3, 0x6C16, 0x4E43, 0x5976, 0x8010, 0x5948, 0x5357,
- 0x7537, 0x96BE, 0x56CA, 0x6320, 0x8111, 0x607C, 0x95F9, 0x6DD6,
- 0x5462, 0x9981, 0x5185, 0x5AE9, 0x80FD, 0x59AE, 0x9713, 0x502A,
- 0x6CE5, 0x5C3C, 0x62DF, 0x4F60, 0x533F, 0x817B, 0x9006, 0x6EBA,
- 0x852B, 0x62C8, 0x5E74, 0x78BE, 0x64B5, 0x637B, 0x5FF5, 0x5A18,
- 0x917F, 0x9E1F, 0x5C3F, 0x634F, 0x8042, 0x5B7D, 0x556E, 0x954A,
- 0x954D, 0x6D85, 0x60A8, 0x67E0, 0x72DE, 0x51DD, 0x5B81,
- /* GB 0xC540..0xC57E */
- 0x81D4, 0x81D5, 0x81D6, 0x81D7, 0x81D8, 0x81D9, 0x81DA, 0x81DB,
- 0x81DC, 0x81DD, 0x81DE, 0x81DF, 0x81E0, 0x81E1, 0x81E2, 0x81E4,
- 0x81E5, 0x81E6, 0x81E8, 0x81E9, 0x81EB, 0x81EE, 0x81EF, 0x81F0,
- 0x81F1, 0x81F2, 0x81F5, 0x81F6, 0x81F7, 0x81F8, 0x81F9, 0x81FA,
- 0x81FD, 0x81FF, 0x8203, 0x8207, 0x8208, 0x8209, 0x820A, 0x820B,
- 0x820E, 0x820F, 0x8211, 0x8213, 0x8215, 0x8216, 0x8217, 0x8218,
- 0x8219, 0x821A, 0x821D, 0x8220, 0x8224, 0x8225, 0x8226, 0x8227,
- 0x8229, 0x822E, 0x8232, 0x823A, 0x823C, 0x823D, 0x823F,
- /* GB 0xC580..0xC5FE */
- 0x8240, 0x8241, 0x8242, 0x8243, 0x8245, 0x8246, 0x8248, 0x824A,
- 0x824C, 0x824D, 0x824E, 0x8250, 0x8251, 0x8252, 0x8253, 0x8254,
- 0x8255, 0x8256, 0x8257, 0x8259, 0x825B, 0x825C, 0x825D, 0x825E,
- 0x8260, 0x8261, 0x8262, 0x8263, 0x8264, 0x8265, 0x8266, 0x8267,
- 0x8269, 0x62E7, 0x6CDE, 0x725B, 0x626D, 0x94AE, 0x7EBD, 0x8113,
- 0x6D53, 0x519C, 0x5F04, 0x5974, 0x52AA, 0x6012, 0x5973, 0x6696,
- 0x8650, 0x759F, 0x632A, 0x61E6, 0x7CEF, 0x8BFA, 0x54E6, 0x6B27,
- 0x9E25, 0x6BB4, 0x85D5, 0x5455, 0x5076, 0x6CA4, 0x556A, 0x8DB4,
- 0x722C, 0x5E15, 0x6015, 0x7436, 0x62CD, 0x6392, 0x724C, 0x5F98,
- 0x6E43, 0x6D3E, 0x6500, 0x6F58, 0x76D8, 0x78D0, 0x76FC, 0x7554,
- 0x5224, 0x53DB, 0x4E53, 0x5E9E, 0x65C1, 0x802A, 0x80D6, 0x629B,
- 0x5486, 0x5228, 0x70AE, 0x888D, 0x8DD1, 0x6CE1, 0x5478, 0x80DA,
- 0x57F9, 0x88F4, 0x8D54, 0x966A, 0x914D, 0x4F69, 0x6C9B, 0x55B7,
- 0x76C6, 0x7830, 0x62A8, 0x70F9, 0x6F8E, 0x5F6D, 0x84EC, 0x68DA,
- 0x787C, 0x7BF7, 0x81A8, 0x670B, 0x9E4F, 0x6367, 0x78B0, 0x576F,
- 0x7812, 0x9739, 0x6279, 0x62AB, 0x5288, 0x7435, 0x6BD7,
- /* GB 0xC640..0xC67E */
- 0x826A, 0x826B, 0x826C, 0x826D, 0x8271, 0x8275, 0x8276, 0x8277,
- 0x8278, 0x827B, 0x827C, 0x8280, 0x8281, 0x8283, 0x8285, 0x8286,
- 0x8287, 0x8289, 0x828C, 0x8290, 0x8293, 0x8294, 0x8295, 0x8296,
- 0x829A, 0x829B, 0x829E, 0x82A0, 0x82A2, 0x82A3, 0x82A7, 0x82B2,
- 0x82B5, 0x82B6, 0x82BA, 0x82BB, 0x82BC, 0x82BF, 0x82C0, 0x82C2,
- 0x82C3, 0x82C5, 0x82C6, 0x82C9, 0x82D0, 0x82D6, 0x82D9, 0x82DA,
- 0x82DD, 0x82E2, 0x82E7, 0x82E8, 0x82E9, 0x82EA, 0x82EC, 0x82ED,
- 0x82EE, 0x82F0, 0x82F2, 0x82F3, 0x82F5, 0x82F6, 0x82F8,
- /* GB 0xC680..0xC6FE */
- 0x82FA, 0x82FC, 0x82FD, 0x82FE, 0x82FF, 0x8300, 0x830A, 0x830B,
- 0x830D, 0x8310, 0x8312, 0x8313, 0x8316, 0x8318, 0x8319, 0x831D,
- 0x831E, 0x831F, 0x8320, 0x8321, 0x8322, 0x8323, 0x8324, 0x8325,
- 0x8326, 0x8329, 0x832A, 0x832E, 0x8330, 0x8332, 0x8337, 0x833B,
- 0x833D, 0x5564, 0x813E, 0x75B2, 0x76AE, 0x5339, 0x75DE, 0x50FB,
- 0x5C41, 0x8B6C, 0x7BC7, 0x504F, 0x7247, 0x9A97, 0x98D8, 0x6F02,
- 0x74E2, 0x7968, 0x6487, 0x77A5, 0x62FC, 0x9891, 0x8D2B, 0x54C1,
- 0x8058, 0x4E52, 0x576A, 0x82F9, 0x840D, 0x5E73, 0x51ED, 0x74F6,
- 0x8BC4, 0x5C4F, 0x5761, 0x6CFC, 0x9887, 0x5A46, 0x7834, 0x9B44,
- 0x8FEB, 0x7C95, 0x5256, 0x6251, 0x94FA, 0x4EC6, 0x8386, 0x8461,
- 0x83E9, 0x84B2, 0x57D4, 0x6734, 0x5703, 0x666E, 0x6D66, 0x8C31,
- 0x66DD, 0x7011, 0x671F, 0x6B3A, 0x6816, 0x621A, 0x59BB, 0x4E03,
- 0x51C4, 0x6F06, 0x67D2, 0x6C8F, 0x5176, 0x68CB, 0x5947, 0x6B67,
- 0x7566, 0x5D0E, 0x8110, 0x9F50, 0x65D7, 0x7948, 0x7941, 0x9A91,
- 0x8D77, 0x5C82, 0x4E5E, 0x4F01, 0x542F, 0x5951, 0x780C, 0x5668,
- 0x6C14, 0x8FC4, 0x5F03, 0x6C7D, 0x6CE3, 0x8BAB, 0x6390,
- /* GB 0xC740..0xC77E */
- 0x833E, 0x833F, 0x8341, 0x8342, 0x8344, 0x8345, 0x8348, 0x834A,
- 0x834B, 0x834C, 0x834D, 0x834E, 0x8353, 0x8355, 0x8356, 0x8357,
- 0x8358, 0x8359, 0x835D, 0x8362, 0x8370, 0x8371, 0x8372, 0x8373,
- 0x8374, 0x8375, 0x8376, 0x8379, 0x837A, 0x837E, 0x837F, 0x8380,
- 0x8381, 0x8382, 0x8383, 0x8384, 0x8387, 0x8388, 0x838A, 0x838B,
- 0x838C, 0x838D, 0x838F, 0x8390, 0x8391, 0x8394, 0x8395, 0x8396,
- 0x8397, 0x8399, 0x839A, 0x839D, 0x839F, 0x83A1, 0x83A2, 0x83A3,
- 0x83A4, 0x83A5, 0x83A6, 0x83A7, 0x83AC, 0x83AD, 0x83AE,
- /* GB 0xC780..0xC7FE */
- 0x83AF, 0x83B5, 0x83BB, 0x83BE, 0x83BF, 0x83C2, 0x83C3, 0x83C4,
- 0x83C6, 0x83C8, 0x83C9, 0x83CB, 0x83CD, 0x83CE, 0x83D0, 0x83D1,
- 0x83D2, 0x83D3, 0x83D5, 0x83D7, 0x83D9, 0x83DA, 0x83DB, 0x83DE,
- 0x83E2, 0x83E3, 0x83E4, 0x83E6, 0x83E7, 0x83E8, 0x83EB, 0x83EC,
- 0x83ED, 0x6070, 0x6D3D, 0x7275, 0x6266, 0x948E, 0x94C5, 0x5343,
- 0x8FC1, 0x7B7E, 0x4EDF, 0x8C26, 0x4E7E, 0x9ED4, 0x94B1, 0x94B3,
- 0x524D, 0x6F5C, 0x9063, 0x6D45, 0x8C34, 0x5811, 0x5D4C, 0x6B20,
- 0x6B49, 0x67AA, 0x545B, 0x8154, 0x7F8C, 0x5899, 0x8537, 0x5F3A,
- 0x62A2, 0x6A47, 0x9539, 0x6572, 0x6084, 0x6865, 0x77A7, 0x4E54,
- 0x4FA8, 0x5DE7, 0x9798, 0x64AC, 0x7FD8, 0x5CED, 0x4FCF, 0x7A8D,
- 0x5207, 0x8304, 0x4E14, 0x602F, 0x7A83, 0x94A6, 0x4FB5, 0x4EB2,
- 0x79E6, 0x7434, 0x52E4, 0x82B9, 0x64D2, 0x79BD, 0x5BDD, 0x6C81,
- 0x9752, 0x8F7B, 0x6C22, 0x503E, 0x537F, 0x6E05, 0x64CE, 0x6674,
- 0x6C30, 0x60C5, 0x9877, 0x8BF7, 0x5E86, 0x743C, 0x7A77, 0x79CB,
- 0x4E18, 0x90B1, 0x7403, 0x6C42, 0x56DA, 0x914B, 0x6CC5, 0x8D8B,
- 0x533A, 0x86C6, 0x66F2, 0x8EAF, 0x5C48, 0x9A71, 0x6E20,
- /* GB 0xC840..0xC87E */
- 0x83EE, 0x83EF, 0x83F3, 0x83F4, 0x83F5, 0x83F6, 0x83F7, 0x83FA,
- 0x83FB, 0x83FC, 0x83FE, 0x83FF, 0x8400, 0x8402, 0x8405, 0x8407,
- 0x8408, 0x8409, 0x840A, 0x8410, 0x8412, 0x8413, 0x8414, 0x8415,
- 0x8416, 0x8417, 0x8419, 0x841A, 0x841B, 0x841E, 0x841F, 0x8420,
- 0x8421, 0x8422, 0x8423, 0x8429, 0x842A, 0x842B, 0x842C, 0x842D,
- 0x842E, 0x842F, 0x8430, 0x8432, 0x8433, 0x8434, 0x8435, 0x8436,
- 0x8437, 0x8439, 0x843A, 0x843B, 0x843E, 0x843F, 0x8440, 0x8441,
- 0x8442, 0x8443, 0x8444, 0x8445, 0x8447, 0x8448, 0x8449,
- /* GB 0xC880..0xC8FE */
- 0x844A, 0x844B, 0x844C, 0x844D, 0x844E, 0x844F, 0x8450, 0x8452,
- 0x8453, 0x8454, 0x8455, 0x8456, 0x8458, 0x845D, 0x845E, 0x845F,
- 0x8460, 0x8462, 0x8464, 0x8465, 0x8466, 0x8467, 0x8468, 0x846A,
- 0x846E, 0x846F, 0x8470, 0x8472, 0x8474, 0x8477, 0x8479, 0x847B,
- 0x847C, 0x53D6, 0x5A36, 0x9F8B, 0x8DA3, 0x53BB, 0x5708, 0x98A7,
- 0x6743, 0x919B, 0x6CC9, 0x5168, 0x75CA, 0x62F3, 0x72AC, 0x5238,
- 0x529D, 0x7F3A, 0x7094, 0x7638, 0x5374, 0x9E4A, 0x69B7, 0x786E,
- 0x96C0, 0x88D9, 0x7FA4, 0x7136, 0x71C3, 0x5189, 0x67D3, 0x74E4,
- 0x58E4, 0x6518, 0x56B7, 0x8BA9, 0x9976, 0x6270, 0x7ED5, 0x60F9,
- 0x70ED, 0x58EC, 0x4EC1, 0x4EBA, 0x5FCD, 0x97E7, 0x4EFB, 0x8BA4,
- 0x5203, 0x598A, 0x7EAB, 0x6254, 0x4ECD, 0x65E5, 0x620E, 0x8338,
- 0x84C9, 0x8363, 0x878D, 0x7194, 0x6EB6, 0x5BB9, 0x7ED2, 0x5197,
- 0x63C9, 0x67D4, 0x8089, 0x8339, 0x8815, 0x5112, 0x5B7A, 0x5982,
- 0x8FB1, 0x4E73, 0x6C5D, 0x5165, 0x8925, 0x8F6F, 0x962E, 0x854A,
- 0x745E, 0x9510, 0x95F0, 0x6DA6, 0x82E5, 0x5F31, 0x6492, 0x6D12,
- 0x8428, 0x816E, 0x9CC3, 0x585E, 0x8D5B, 0x4E09, 0x53C1,
- /* GB 0xC940..0xC97E */
- 0x847D, 0x847E, 0x847F, 0x8480, 0x8481, 0x8483, 0x8484, 0x8485,
- 0x8486, 0x848A, 0x848D, 0x848F, 0x8490, 0x8491, 0x8492, 0x8493,
- 0x8494, 0x8495, 0x8496, 0x8498, 0x849A, 0x849B, 0x849D, 0x849E,
- 0x849F, 0x84A0, 0x84A2, 0x84A3, 0x84A4, 0x84A5, 0x84A6, 0x84A7,
- 0x84A8, 0x84A9, 0x84AA, 0x84AB, 0x84AC, 0x84AD, 0x84AE, 0x84B0,
- 0x84B1, 0x84B3, 0x84B5, 0x84B6, 0x84B7, 0x84BB, 0x84BC, 0x84BE,
- 0x84C0, 0x84C2, 0x84C3, 0x84C5, 0x84C6, 0x84C7, 0x84C8, 0x84CB,
- 0x84CC, 0x84CE, 0x84CF, 0x84D2, 0x84D4, 0x84D5, 0x84D7,
- /* GB 0xC980..0xC9FE */
- 0x84D8, 0x84D9, 0x84DA, 0x84DB, 0x84DC, 0x84DE, 0x84E1, 0x84E2,
- 0x84E4, 0x84E7, 0x84E8, 0x84E9, 0x84EA, 0x84EB, 0x84ED, 0x84EE,
- 0x84EF, 0x84F1, 0x84F2, 0x84F3, 0x84F4, 0x84F5, 0x84F6, 0x84F7,
- 0x84F8, 0x84F9, 0x84FA, 0x84FB, 0x84FD, 0x84FE, 0x8500, 0x8501,
- 0x8502, 0x4F1E, 0x6563, 0x6851, 0x55D3, 0x4E27, 0x6414, 0x9A9A,
- 0x626B, 0x5AC2, 0x745F, 0x8272, 0x6DA9, 0x68EE, 0x50E7, 0x838E,
- 0x7802, 0x6740, 0x5239, 0x6C99, 0x7EB1, 0x50BB, 0x5565, 0x715E,
- 0x7B5B, 0x6652, 0x73CA, 0x82EB, 0x6749, 0x5C71, 0x5220, 0x717D,
- 0x886B, 0x95EA, 0x9655, 0x64C5, 0x8D61, 0x81B3, 0x5584, 0x6C55,
- 0x6247, 0x7F2E, 0x5892, 0x4F24, 0x5546, 0x8D4F, 0x664C, 0x4E0A,
- 0x5C1A, 0x88F3, 0x68A2, 0x634E, 0x7A0D, 0x70E7, 0x828D, 0x52FA,
- 0x97F6, 0x5C11, 0x54E8, 0x90B5, 0x7ECD, 0x5962, 0x8D4A, 0x86C7,
- 0x820C, 0x820D, 0x8D66, 0x6444, 0x5C04, 0x6151, 0x6D89, 0x793E,
- 0x8BBE, 0x7837, 0x7533, 0x547B, 0x4F38, 0x8EAB, 0x6DF1, 0x5A20,
- 0x7EC5, 0x795E, 0x6C88, 0x5BA1, 0x5A76, 0x751A, 0x80BE, 0x614E,
- 0x6E17, 0x58F0, 0x751F, 0x7525, 0x7272, 0x5347, 0x7EF3,
- /* GB 0xCA40..0xCA7E */
- 0x8503, 0x8504, 0x8505, 0x8506, 0x8507, 0x8508, 0x8509, 0x850A,
- 0x850B, 0x850D, 0x850E, 0x850F, 0x8510, 0x8512, 0x8514, 0x8515,
- 0x8516, 0x8518, 0x8519, 0x851B, 0x851C, 0x851D, 0x851E, 0x8520,
- 0x8522, 0x8523, 0x8524, 0x8525, 0x8526, 0x8527, 0x8528, 0x8529,
- 0x852A, 0x852D, 0x852E, 0x852F, 0x8530, 0x8531, 0x8532, 0x8533,
- 0x8534, 0x8535, 0x8536, 0x853E, 0x853F, 0x8540, 0x8541, 0x8542,
- 0x8544, 0x8545, 0x8546, 0x8547, 0x854B, 0x854C, 0x854D, 0x854E,
- 0x854F, 0x8550, 0x8551, 0x8552, 0x8553, 0x8554, 0x8555,
- /* GB 0xCA80..0xCAFE */
- 0x8557, 0x8558, 0x855A, 0x855B, 0x855C, 0x855D, 0x855F, 0x8560,
- 0x8561, 0x8562, 0x8563, 0x8565, 0x8566, 0x8567, 0x8569, 0x856A,
- 0x856B, 0x856C, 0x856D, 0x856E, 0x856F, 0x8570, 0x8571, 0x8573,
- 0x8575, 0x8576, 0x8577, 0x8578, 0x857C, 0x857D, 0x857F, 0x8580,
- 0x8581, 0x7701, 0x76DB, 0x5269, 0x80DC, 0x5723, 0x5E08, 0x5931,
- 0x72EE, 0x65BD, 0x6E7F, 0x8BD7, 0x5C38, 0x8671, 0x5341, 0x77F3,
- 0x62FE, 0x65F6, 0x4EC0, 0x98DF, 0x8680, 0x5B9E, 0x8BC6, 0x53F2,
- 0x77E2, 0x4F7F, 0x5C4E, 0x9A76, 0x59CB, 0x5F0F, 0x793A, 0x58EB,
- 0x4E16, 0x67FF, 0x4E8B, 0x62ED, 0x8A93, 0x901D, 0x52BF, 0x662F,
- 0x55DC, 0x566C, 0x9002, 0x4ED5, 0x4F8D, 0x91CA, 0x9970, 0x6C0F,
- 0x5E02, 0x6043, 0x5BA4, 0x89C6, 0x8BD5, 0x6536, 0x624B, 0x9996,
- 0x5B88, 0x5BFF, 0x6388, 0x552E, 0x53D7, 0x7626, 0x517D, 0x852C,
- 0x67A2, 0x68B3, 0x6B8A, 0x6292, 0x8F93, 0x53D4, 0x8212, 0x6DD1,
- 0x758F, 0x4E66, 0x8D4E, 0x5B70, 0x719F, 0x85AF, 0x6691, 0x66D9,
- 0x7F72, 0x8700, 0x9ECD, 0x9F20, 0x5C5E, 0x672F, 0x8FF0, 0x6811,
- 0x675F, 0x620D, 0x7AD6, 0x5885, 0x5EB6, 0x6570, 0x6F31,
- /* GB 0xCB40..0xCB7E */
- 0x8582, 0x8583, 0x8586, 0x8588, 0x8589, 0x858A, 0x858B, 0x858C,
- 0x858D, 0x858E, 0x8590, 0x8591, 0x8592, 0x8593, 0x8594, 0x8595,
- 0x8596, 0x8597, 0x8598, 0x8599, 0x859A, 0x859D, 0x859E, 0x859F,
- 0x85A0, 0x85A1, 0x85A2, 0x85A3, 0x85A5, 0x85A6, 0x85A7, 0x85A9,
- 0x85AB, 0x85AC, 0x85AD, 0x85B1, 0x85B2, 0x85B3, 0x85B4, 0x85B5,
- 0x85B6, 0x85B8, 0x85BA, 0x85BB, 0x85BC, 0x85BD, 0x85BE, 0x85BF,
- 0x85C0, 0x85C2, 0x85C3, 0x85C4, 0x85C5, 0x85C6, 0x85C7, 0x85C8,
- 0x85CA, 0x85CB, 0x85CC, 0x85CD, 0x85CE, 0x85D1, 0x85D2,
- /* GB 0xCB80..0xCBFE */
- 0x85D4, 0x85D6, 0x85D7, 0x85D8, 0x85D9, 0x85DA, 0x85DB, 0x85DD,
- 0x85DE, 0x85DF, 0x85E0, 0x85E1, 0x85E2, 0x85E3, 0x85E5, 0x85E6,
- 0x85E7, 0x85E8, 0x85EA, 0x85EB, 0x85EC, 0x85ED, 0x85EE, 0x85EF,
- 0x85F0, 0x85F1, 0x85F2, 0x85F3, 0x85F4, 0x85F5, 0x85F6, 0x85F7,
- 0x85F8, 0x6055, 0x5237, 0x800D, 0x6454, 0x8870, 0x7529, 0x5E05,
- 0x6813, 0x62F4, 0x971C, 0x53CC, 0x723D, 0x8C01, 0x6C34, 0x7761,
- 0x7A0E, 0x542E, 0x77AC, 0x987A, 0x821C, 0x8BF4, 0x7855, 0x6714,
- 0x70C1, 0x65AF, 0x6495, 0x5636, 0x601D, 0x79C1, 0x53F8, 0x4E1D,
- 0x6B7B, 0x8086, 0x5BFA, 0x55E3, 0x56DB, 0x4F3A, 0x4F3C, 0x9972,
- 0x5DF3, 0x677E, 0x8038, 0x6002, 0x9882, 0x9001, 0x5B8B, 0x8BBC,
- 0x8BF5, 0x641C, 0x8258, 0x64DE, 0x55FD, 0x82CF, 0x9165, 0x4FD7,
- 0x7D20, 0x901F, 0x7C9F, 0x50F3, 0x5851, 0x6EAF, 0x5BBF, 0x8BC9,
- 0x8083, 0x9178, 0x849C, 0x7B97, 0x867D, 0x968B, 0x968F, 0x7EE5,
- 0x9AD3, 0x788E, 0x5C81, 0x7A57, 0x9042, 0x96A7, 0x795F, 0x5B59,
- 0x635F, 0x7B0B, 0x84D1, 0x68AD, 0x5506, 0x7F29, 0x7410, 0x7D22,
- 0x9501, 0x6240, 0x584C, 0x4ED6, 0x5B83, 0x5979, 0x5854,
- /* GB 0xCC40..0xCC7E */
- 0x85F9, 0x85FA, 0x85FC, 0x85FD, 0x85FE, 0x8600, 0x8601, 0x8602,
- 0x8603, 0x8604, 0x8606, 0x8607, 0x8608, 0x8609, 0x860A, 0x860B,
- 0x860C, 0x860D, 0x860E, 0x860F, 0x8610, 0x8612, 0x8613, 0x8614,
- 0x8615, 0x8617, 0x8618, 0x8619, 0x861A, 0x861B, 0x861C, 0x861D,
- 0x861E, 0x861F, 0x8620, 0x8621, 0x8622, 0x8623, 0x8624, 0x8625,
- 0x8626, 0x8628, 0x862A, 0x862B, 0x862C, 0x862D, 0x862E, 0x862F,
- 0x8630, 0x8631, 0x8632, 0x8633, 0x8634, 0x8635, 0x8636, 0x8637,
- 0x8639, 0x863A, 0x863B, 0x863D, 0x863E, 0x863F, 0x8640,
- /* GB 0xCC80..0xCCFE */
- 0x8641, 0x8642, 0x8643, 0x8644, 0x8645, 0x8646, 0x8647, 0x8648,
- 0x8649, 0x864A, 0x864B, 0x864C, 0x8652, 0x8653, 0x8655, 0x8656,
- 0x8657, 0x8658, 0x8659, 0x865B, 0x865C, 0x865D, 0x865F, 0x8660,
- 0x8661, 0x8663, 0x8664, 0x8665, 0x8666, 0x8667, 0x8668, 0x8669,
- 0x866A, 0x736D, 0x631E, 0x8E4B, 0x8E0F, 0x80CE, 0x82D4, 0x62AC,
- 0x53F0, 0x6CF0, 0x915E, 0x592A, 0x6001, 0x6C70, 0x574D, 0x644A,
- 0x8D2A, 0x762B, 0x6EE9, 0x575B, 0x6A80, 0x75F0, 0x6F6D, 0x8C2D,
- 0x8C08, 0x5766, 0x6BEF, 0x8892, 0x78B3, 0x63A2, 0x53F9, 0x70AD,
- 0x6C64, 0x5858, 0x642A, 0x5802, 0x68E0, 0x819B, 0x5510, 0x7CD6,
- 0x5018, 0x8EBA, 0x6DCC, 0x8D9F, 0x70EB, 0x638F, 0x6D9B, 0x6ED4,
- 0x7EE6, 0x8404, 0x6843, 0x9003, 0x6DD8, 0x9676, 0x8BA8, 0x5957,
- 0x7279, 0x85E4, 0x817E, 0x75BC, 0x8A8A, 0x68AF, 0x5254, 0x8E22,
- 0x9511, 0x63D0, 0x9898, 0x8E44, 0x557C, 0x4F53, 0x66FF, 0x568F,
- 0x60D5, 0x6D95, 0x5243, 0x5C49, 0x5929, 0x6DFB, 0x586B, 0x7530,
- 0x751C, 0x606C, 0x8214, 0x8146, 0x6311, 0x6761, 0x8FE2, 0x773A,
- 0x8DF3, 0x8D34, 0x94C1, 0x5E16, 0x5385, 0x542C, 0x70C3,
- /* GB 0xCD40..0xCD7E */
- 0x866D, 0x866F, 0x8670, 0x8672, 0x8673, 0x8674, 0x8675, 0x8676,
- 0x8677, 0x8678, 0x8683, 0x8684, 0x8685, 0x8686, 0x8687, 0x8688,
- 0x8689, 0x868E, 0x868F, 0x8690, 0x8691, 0x8692, 0x8694, 0x8696,
- 0x8697, 0x8698, 0x8699, 0x869A, 0x869B, 0x869E, 0x869F, 0x86A0,
- 0x86A1, 0x86A2, 0x86A5, 0x86A6, 0x86AB, 0x86AD, 0x86AE, 0x86B2,
- 0x86B3, 0x86B7, 0x86B8, 0x86B9, 0x86BB, 0x86BC, 0x86BD, 0x86BE,
- 0x86BF, 0x86C1, 0x86C2, 0x86C3, 0x86C5, 0x86C8, 0x86CC, 0x86CD,
- 0x86D2, 0x86D3, 0x86D5, 0x86D6, 0x86D7, 0x86DA, 0x86DC,
- /* GB 0xCD80..0xCDFE */
- 0x86DD, 0x86E0, 0x86E1, 0x86E2, 0x86E3, 0x86E5, 0x86E6, 0x86E7,
- 0x86E8, 0x86EA, 0x86EB, 0x86EC, 0x86EF, 0x86F5, 0x86F6, 0x86F7,
- 0x86FA, 0x86FB, 0x86FC, 0x86FD, 0x86FF, 0x8701, 0x8704, 0x8705,
- 0x8706, 0x870B, 0x870C, 0x870E, 0x870F, 0x8710, 0x8711, 0x8714,
- 0x8716, 0x6C40, 0x5EF7, 0x505C, 0x4EAD, 0x5EAD, 0x633A, 0x8247,
- 0x901A, 0x6850, 0x916E, 0x77B3, 0x540C, 0x94DC, 0x5F64, 0x7AE5,
- 0x6876, 0x6345, 0x7B52, 0x7EDF, 0x75DB, 0x5077, 0x6295, 0x5934,
- 0x900F, 0x51F8, 0x79C3, 0x7A81, 0x56FE, 0x5F92, 0x9014, 0x6D82,
- 0x5C60, 0x571F, 0x5410, 0x5154, 0x6E4D, 0x56E2, 0x63A8, 0x9893,
- 0x817F, 0x8715, 0x892A, 0x9000, 0x541E, 0x5C6F, 0x81C0, 0x62D6,
- 0x6258, 0x8131, 0x9E35, 0x9640, 0x9A6E, 0x9A7C, 0x692D, 0x59A5,
- 0x62D3, 0x553E, 0x6316, 0x54C7, 0x86D9, 0x6D3C, 0x5A03, 0x74E6,
- 0x889C, 0x6B6A, 0x5916, 0x8C4C, 0x5F2F, 0x6E7E, 0x73A9, 0x987D,
- 0x4E38, 0x70F7, 0x5B8C, 0x7897, 0x633D, 0x665A, 0x7696, 0x60CB,
- 0x5B9B, 0x5A49, 0x4E07, 0x8155, 0x6C6A, 0x738B, 0x4EA1, 0x6789,
- 0x7F51, 0x5F80, 0x65FA, 0x671B, 0x5FD8, 0x5984, 0x5A01,
- /* GB 0xCE40..0xCE7E */
- 0x8719, 0x871B, 0x871D, 0x871F, 0x8720, 0x8724, 0x8726, 0x8727,
- 0x8728, 0x872A, 0x872B, 0x872C, 0x872D, 0x872F, 0x8730, 0x8732,
- 0x8733, 0x8735, 0x8736, 0x8738, 0x8739, 0x873A, 0x873C, 0x873D,
- 0x8740, 0x8741, 0x8742, 0x8743, 0x8744, 0x8745, 0x8746, 0x874A,
- 0x874B, 0x874D, 0x874F, 0x8750, 0x8751, 0x8752, 0x8754, 0x8755,
- 0x8756, 0x8758, 0x875A, 0x875B, 0x875C, 0x875D, 0x875E, 0x875F,
- 0x8761, 0x8762, 0x8766, 0x8767, 0x8768, 0x8769, 0x876A, 0x876B,
- 0x876C, 0x876D, 0x876F, 0x8771, 0x8772, 0x8773, 0x8775,
- /* GB 0xCE80..0xCEFE */
- 0x8777, 0x8778, 0x8779, 0x877A, 0x877F, 0x8780, 0x8781, 0x8784,
- 0x8786, 0x8787, 0x8789, 0x878A, 0x878C, 0x878E, 0x878F, 0x8790,
- 0x8791, 0x8792, 0x8794, 0x8795, 0x8796, 0x8798, 0x8799, 0x879A,
- 0x879B, 0x879C, 0x879D, 0x879E, 0x87A0, 0x87A1, 0x87A2, 0x87A3,
- 0x87A4, 0x5DCD, 0x5FAE, 0x5371, 0x97E6, 0x8FDD, 0x6845, 0x56F4,
- 0x552F, 0x60DF, 0x4E3A, 0x6F4D, 0x7EF4, 0x82C7, 0x840E, 0x59D4,
- 0x4F1F, 0x4F2A, 0x5C3E, 0x7EAC, 0x672A, 0x851A, 0x5473, 0x754F,
- 0x80C3, 0x5582, 0x9B4F, 0x4F4D, 0x6E2D, 0x8C13, 0x5C09, 0x6170,
- 0x536B, 0x761F, 0x6E29, 0x868A, 0x6587, 0x95FB, 0x7EB9, 0x543B,
- 0x7A33, 0x7D0A, 0x95EE, 0x55E1, 0x7FC1, 0x74EE, 0x631D, 0x8717,
- 0x6DA1, 0x7A9D, 0x6211, 0x65A1, 0x5367, 0x63E1, 0x6C83, 0x5DEB,
- 0x545C, 0x94A8, 0x4E4C, 0x6C61, 0x8BEC, 0x5C4B, 0x65E0, 0x829C,
- 0x68A7, 0x543E, 0x5434, 0x6BCB, 0x6B66, 0x4E94, 0x6342, 0x5348,
- 0x821E, 0x4F0D, 0x4FAE, 0x575E, 0x620A, 0x96FE, 0x6664, 0x7269,
- 0x52FF, 0x52A1, 0x609F, 0x8BEF, 0x6614, 0x7199, 0x6790, 0x897F,
- 0x7852, 0x77FD, 0x6670, 0x563B, 0x5438, 0x9521, 0x727A,
- /* GB 0xCF40..0xCF7E */
- 0x87A5, 0x87A6, 0x87A7, 0x87A9, 0x87AA, 0x87AE, 0x87B0, 0x87B1,
- 0x87B2, 0x87B4, 0x87B6, 0x87B7, 0x87B8, 0x87B9, 0x87BB, 0x87BC,
- 0x87BE, 0x87BF, 0x87C1, 0x87C2, 0x87C3, 0x87C4, 0x87C5, 0x87C7,
- 0x87C8, 0x87C9, 0x87CC, 0x87CD, 0x87CE, 0x87CF, 0x87D0, 0x87D4,
- 0x87D5, 0x87D6, 0x87D7, 0x87D8, 0x87D9, 0x87DA, 0x87DC, 0x87DD,
- 0x87DE, 0x87DF, 0x87E1, 0x87E2, 0x87E3, 0x87E4, 0x87E6, 0x87E7,
- 0x87E8, 0x87E9, 0x87EB, 0x87EC, 0x87ED, 0x87EF, 0x87F0, 0x87F1,
- 0x87F2, 0x87F3, 0x87F4, 0x87F5, 0x87F6, 0x87F7, 0x87F8,
- /* GB 0xCF80..0xCFFE */
- 0x87FA, 0x87FB, 0x87FC, 0x87FD, 0x87FF, 0x8800, 0x8801, 0x8802,
- 0x8804, 0x8805, 0x8806, 0x8807, 0x8808, 0x8809, 0x880B, 0x880C,
- 0x880D, 0x880E, 0x880F, 0x8810, 0x8811, 0x8812, 0x8814, 0x8817,
- 0x8818, 0x8819, 0x881A, 0x881C, 0x881D, 0x881E, 0x881F, 0x8820,
- 0x8823, 0x7A00, 0x606F, 0x5E0C, 0x6089, 0x819D, 0x5915, 0x60DC,
- 0x7184, 0x70EF, 0x6EAA, 0x6C50, 0x7280, 0x6A84, 0x88AD, 0x5E2D,
- 0x4E60, 0x5AB3, 0x559C, 0x94E3, 0x6D17, 0x7CFB, 0x9699, 0x620F,
- 0x7EC6, 0x778E, 0x867E, 0x5323, 0x971E, 0x8F96, 0x6687, 0x5CE1,
- 0x4FA0, 0x72ED, 0x4E0B, 0x53A6, 0x590F, 0x5413, 0x6380, 0x9528,
- 0x5148, 0x4ED9, 0x9C9C, 0x7EA4, 0x54B8, 0x8D24, 0x8854, 0x8237,
- 0x95F2, 0x6D8E, 0x5F26, 0x5ACC, 0x663E, 0x9669, 0x73B0, 0x732E,
- 0x53BF, 0x817A, 0x9985, 0x7FA1, 0x5BAA, 0x9677, 0x9650, 0x7EBF,
- 0x76F8, 0x53A2, 0x9576, 0x9999, 0x7BB1, 0x8944, 0x6E58, 0x4E61,
- 0x7FD4, 0x7965, 0x8BE6, 0x60F3, 0x54CD, 0x4EAB, 0x9879, 0x5DF7,
- 0x6A61, 0x50CF, 0x5411, 0x8C61, 0x8427, 0x785D, 0x9704, 0x524A,
- 0x54EE, 0x56A3, 0x9500, 0x6D88, 0x5BB5, 0x6DC6, 0x6653,
- /* GB 0xD040..0xD07E */
- 0x8824, 0x8825, 0x8826, 0x8827, 0x8828, 0x8829, 0x882A, 0x882B,
- 0x882C, 0x882D, 0x882E, 0x882F, 0x8830, 0x8831, 0x8833, 0x8834,
- 0x8835, 0x8836, 0x8837, 0x8838, 0x883A, 0x883B, 0x883D, 0x883E,
- 0x883F, 0x8841, 0x8842, 0x8843, 0x8846, 0x8847, 0x8848, 0x8849,
- 0x884A, 0x884B, 0x884E, 0x884F, 0x8850, 0x8851, 0x8852, 0x8853,
- 0x8855, 0x8856, 0x8858, 0x885A, 0x885B, 0x885C, 0x885D, 0x885E,
- 0x885F, 0x8860, 0x8866, 0x8867, 0x886A, 0x886D, 0x886F, 0x8871,
- 0x8873, 0x8874, 0x8875, 0x8876, 0x8878, 0x8879, 0x887A,
- /* GB 0xD080..0xD0FE */
- 0x887B, 0x887C, 0x8880, 0x8883, 0x8886, 0x8887, 0x8889, 0x888A,
- 0x888C, 0x888E, 0x888F, 0x8890, 0x8891, 0x8893, 0x8894, 0x8895,
- 0x8897, 0x8898, 0x8899, 0x889A, 0x889B, 0x889D, 0x889E, 0x889F,
- 0x88A0, 0x88A1, 0x88A3, 0x88A5, 0x88A6, 0x88A7, 0x88A8, 0x88A9,
- 0x88AA, 0x5C0F, 0x5B5D, 0x6821, 0x8096, 0x5578, 0x7B11, 0x6548,
- 0x6954, 0x4E9B, 0x6B47, 0x874E, 0x978B, 0x534F, 0x631F, 0x643A,
- 0x90AA, 0x659C, 0x80C1, 0x8C10, 0x5199, 0x68B0, 0x5378, 0x87F9,
- 0x61C8, 0x6CC4, 0x6CFB, 0x8C22, 0x5C51, 0x85AA, 0x82AF, 0x950C,
- 0x6B23, 0x8F9B, 0x65B0, 0x5FFB, 0x5FC3, 0x4FE1, 0x8845, 0x661F,
- 0x8165, 0x7329, 0x60FA, 0x5174, 0x5211, 0x578B, 0x5F62, 0x90A2,
- 0x884C, 0x9192, 0x5E78, 0x674F, 0x6027, 0x59D3, 0x5144, 0x51F6,
- 0x80F8, 0x5308, 0x6C79, 0x96C4, 0x718A, 0x4F11, 0x4FEE, 0x7F9E,
- 0x673D, 0x55C5, 0x9508, 0x79C0, 0x8896, 0x7EE3, 0x589F, 0x620C,
- 0x9700, 0x865A, 0x5618, 0x987B, 0x5F90, 0x8BB8, 0x84C4, 0x9157,
- 0x53D9, 0x65ED, 0x5E8F, 0x755C, 0x6064, 0x7D6E, 0x5A7F, 0x7EEA,
- 0x7EED, 0x8F69, 0x55A7, 0x5BA3, 0x60AC, 0x65CB, 0x7384,
- /* GB 0xD140..0xD17E */
- 0x88AC, 0x88AE, 0x88AF, 0x88B0, 0x88B2, 0x88B3, 0x88B4, 0x88B5,
- 0x88B6, 0x88B8, 0x88B9, 0x88BA, 0x88BB, 0x88BD, 0x88BE, 0x88BF,
- 0x88C0, 0x88C3, 0x88C4, 0x88C7, 0x88C8, 0x88CA, 0x88CB, 0x88CC,
- 0x88CD, 0x88CF, 0x88D0, 0x88D1, 0x88D3, 0x88D6, 0x88D7, 0x88DA,
- 0x88DB, 0x88DC, 0x88DD, 0x88DE, 0x88E0, 0x88E1, 0x88E6, 0x88E7,
- 0x88E9, 0x88EA, 0x88EB, 0x88EC, 0x88ED, 0x88EE, 0x88EF, 0x88F2,
- 0x88F5, 0x88F6, 0x88F7, 0x88FA, 0x88FB, 0x88FD, 0x88FF, 0x8900,
- 0x8901, 0x8903, 0x8904, 0x8905, 0x8906, 0x8907, 0x8908,
- /* GB 0xD180..0xD1FE */
- 0x8909, 0x890B, 0x890C, 0x890D, 0x890E, 0x890F, 0x8911, 0x8914,
- 0x8915, 0x8916, 0x8917, 0x8918, 0x891C, 0x891D, 0x891E, 0x891F,
- 0x8920, 0x8922, 0x8923, 0x8924, 0x8926, 0x8927, 0x8928, 0x8929,
- 0x892C, 0x892D, 0x892E, 0x892F, 0x8931, 0x8932, 0x8933, 0x8935,
- 0x8937, 0x9009, 0x7663, 0x7729, 0x7EDA, 0x9774, 0x859B, 0x5B66,
- 0x7A74, 0x96EA, 0x8840, 0x52CB, 0x718F, 0x5FAA, 0x65EC, 0x8BE2,
- 0x5BFB, 0x9A6F, 0x5DE1, 0x6B89, 0x6C5B, 0x8BAD, 0x8BAF, 0x900A,
- 0x8FC5, 0x538B, 0x62BC, 0x9E26, 0x9E2D, 0x5440, 0x4E2B, 0x82BD,
- 0x7259, 0x869C, 0x5D16, 0x8859, 0x6DAF, 0x96C5, 0x54D1, 0x4E9A,
- 0x8BB6, 0x7109, 0x54BD, 0x9609, 0x70DF, 0x6DF9, 0x76D0, 0x4E25,
- 0x7814, 0x8712, 0x5CA9, 0x5EF6, 0x8A00, 0x989C, 0x960E, 0x708E,
- 0x6CBF, 0x5944, 0x63A9, 0x773C, 0x884D, 0x6F14, 0x8273, 0x5830,
- 0x71D5, 0x538C, 0x781A, 0x96C1, 0x5501, 0x5F66, 0x7130, 0x5BB4,
- 0x8C1A, 0x9A8C, 0x6B83, 0x592E, 0x9E2F, 0x79E7, 0x6768, 0x626C,
- 0x4F6F, 0x75A1, 0x7F8A, 0x6D0B, 0x9633, 0x6C27, 0x4EF0, 0x75D2,
- 0x517B, 0x6837, 0x6F3E, 0x9080, 0x8170, 0x5996, 0x7476,
- /* GB 0xD240..0xD27E */
- 0x8938, 0x8939, 0x893A, 0x893B, 0x893C, 0x893D, 0x893E, 0x893F,
- 0x8940, 0x8942, 0x8943, 0x8945, 0x8946, 0x8947, 0x8948, 0x8949,
- 0x894A, 0x894B, 0x894C, 0x894D, 0x894E, 0x894F, 0x8950, 0x8951,
- 0x8952, 0x8953, 0x8954, 0x8955, 0x8956, 0x8957, 0x8958, 0x8959,
- 0x895A, 0x895B, 0x895C, 0x895D, 0x8960, 0x8961, 0x8962, 0x8963,
- 0x8964, 0x8965, 0x8967, 0x8968, 0x8969, 0x896A, 0x896B, 0x896C,
- 0x896D, 0x896E, 0x896F, 0x8970, 0x8971, 0x8972, 0x8973, 0x8974,
- 0x8975, 0x8976, 0x8977, 0x8978, 0x8979, 0x897A, 0x897C,
- /* GB 0xD280..0xD2FE */
- 0x897D, 0x897E, 0x8980, 0x8982, 0x8984, 0x8985, 0x8987, 0x8988,
- 0x8989, 0x898A, 0x898B, 0x898C, 0x898D, 0x898E, 0x898F, 0x8990,
- 0x8991, 0x8992, 0x8993, 0x8994, 0x8995, 0x8996, 0x8997, 0x8998,
- 0x8999, 0x899A, 0x899B, 0x899C, 0x899D, 0x899E, 0x899F, 0x89A0,
- 0x89A1, 0x6447, 0x5C27, 0x9065, 0x7A91, 0x8C23, 0x59DA, 0x54AC,
- 0x8200, 0x836F, 0x8981, 0x8000, 0x6930, 0x564E, 0x8036, 0x7237,
- 0x91CE, 0x51B6, 0x4E5F, 0x9875, 0x6396, 0x4E1A, 0x53F6, 0x66F3,
- 0x814B, 0x591C, 0x6DB2, 0x4E00, 0x58F9, 0x533B, 0x63D6, 0x94F1,
- 0x4F9D, 0x4F0A, 0x8863, 0x9890, 0x5937, 0x9057, 0x79FB, 0x4EEA,
- 0x80F0, 0x7591, 0x6C82, 0x5B9C, 0x59E8, 0x5F5D, 0x6905, 0x8681,
- 0x501A, 0x5DF2, 0x4E59, 0x77E3, 0x4EE5, 0x827A, 0x6291, 0x6613,
- 0x9091, 0x5C79, 0x4EBF, 0x5F79, 0x81C6, 0x9038, 0x8084, 0x75AB,
- 0x4EA6, 0x88D4, 0x610F, 0x6BC5, 0x5FC6, 0x4E49, 0x76CA, 0x6EA2,
- 0x8BE3, 0x8BAE, 0x8C0A, 0x8BD1, 0x5F02, 0x7FFC, 0x7FCC, 0x7ECE,
- 0x8335, 0x836B, 0x56E0, 0x6BB7, 0x97F3, 0x9634, 0x59FB, 0x541F,
- 0x94F6, 0x6DEB, 0x5BC5, 0x996E, 0x5C39, 0x5F15, 0x9690,
- /* GB 0xD340..0xD37E */
- 0x89A2, 0x89A3, 0x89A4, 0x89A5, 0x89A6, 0x89A7, 0x89A8, 0x89A9,
- 0x89AA, 0x89AB, 0x89AC, 0x89AD, 0x89AE, 0x89AF, 0x89B0, 0x89B1,
- 0x89B2, 0x89B3, 0x89B4, 0x89B5, 0x89B6, 0x89B7, 0x89B8, 0x89B9,
- 0x89BA, 0x89BB, 0x89BC, 0x89BD, 0x89BE, 0x89BF, 0x89C0, 0x89C3,
- 0x89CD, 0x89D3, 0x89D4, 0x89D5, 0x89D7, 0x89D8, 0x89D9, 0x89DB,
- 0x89DD, 0x89DF, 0x89E0, 0x89E1, 0x89E2, 0x89E4, 0x89E7, 0x89E8,
- 0x89E9, 0x89EA, 0x89EC, 0x89ED, 0x89EE, 0x89F0, 0x89F1, 0x89F2,
- 0x89F4, 0x89F5, 0x89F6, 0x89F7, 0x89F8, 0x89F9, 0x89FA,
- /* GB 0xD380..0xD3FE */
- 0x89FB, 0x89FC, 0x89FD, 0x89FE, 0x89FF, 0x8A01, 0x8A02, 0x8A03,
- 0x8A04, 0x8A05, 0x8A06, 0x8A08, 0x8A09, 0x8A0A, 0x8A0B, 0x8A0C,
- 0x8A0D, 0x8A0E, 0x8A0F, 0x8A10, 0x8A11, 0x8A12, 0x8A13, 0x8A14,
- 0x8A15, 0x8A16, 0x8A17, 0x8A18, 0x8A19, 0x8A1A, 0x8A1B, 0x8A1C,
- 0x8A1D, 0x5370, 0x82F1, 0x6A31, 0x5A74, 0x9E70, 0x5E94, 0x7F28,
- 0x83B9, 0x8424, 0x8425, 0x8367, 0x8747, 0x8FCE, 0x8D62, 0x76C8,
- 0x5F71, 0x9896, 0x786C, 0x6620, 0x54DF, 0x62E5, 0x4F63, 0x81C3,
- 0x75C8, 0x5EB8, 0x96CD, 0x8E0A, 0x86F9, 0x548F, 0x6CF3, 0x6D8C,
- 0x6C38, 0x607F, 0x52C7, 0x7528, 0x5E7D, 0x4F18, 0x60A0, 0x5FE7,
- 0x5C24, 0x7531, 0x90AE, 0x94C0, 0x72B9, 0x6CB9, 0x6E38, 0x9149,
- 0x6709, 0x53CB, 0x53F3, 0x4F51, 0x91C9, 0x8BF1, 0x53C8, 0x5E7C,
- 0x8FC2, 0x6DE4, 0x4E8E, 0x76C2, 0x6986, 0x865E, 0x611A, 0x8206,
- 0x4F59, 0x4FDE, 0x903E, 0x9C7C, 0x6109, 0x6E1D, 0x6E14, 0x9685,
- 0x4E88, 0x5A31, 0x96E8, 0x4E0E, 0x5C7F, 0x79B9, 0x5B87, 0x8BED,
- 0x7FBD, 0x7389, 0x57DF, 0x828B, 0x90C1, 0x5401, 0x9047, 0x55BB,
- 0x5CEA, 0x5FA1, 0x6108, 0x6B32, 0x72F1, 0x80B2, 0x8A89,
- /* GB 0xD440..0xD47E */
- 0x8A1E, 0x8A1F, 0x8A20, 0x8A21, 0x8A22, 0x8A23, 0x8A24, 0x8A25,
- 0x8A26, 0x8A27, 0x8A28, 0x8A29, 0x8A2A, 0x8A2B, 0x8A2C, 0x8A2D,
- 0x8A2E, 0x8A2F, 0x8A30, 0x8A31, 0x8A32, 0x8A33, 0x8A34, 0x8A35,
- 0x8A36, 0x8A37, 0x8A38, 0x8A39, 0x8A3A, 0x8A3B, 0x8A3C, 0x8A3D,
- 0x8A3F, 0x8A40, 0x8A41, 0x8A42, 0x8A43, 0x8A44, 0x8A45, 0x8A46,
- 0x8A47, 0x8A49, 0x8A4A, 0x8A4B, 0x8A4C, 0x8A4D, 0x8A4E, 0x8A4F,
- 0x8A50, 0x8A51, 0x8A52, 0x8A53, 0x8A54, 0x8A55, 0x8A56, 0x8A57,
- 0x8A58, 0x8A59, 0x8A5A, 0x8A5B, 0x8A5C, 0x8A5D, 0x8A5E,
- /* GB 0xD480..0xD4FE */
- 0x8A5F, 0x8A60, 0x8A61, 0x8A62, 0x8A63, 0x8A64, 0x8A65, 0x8A66,
- 0x8A67, 0x8A68, 0x8A69, 0x8A6A, 0x8A6B, 0x8A6C, 0x8A6D, 0x8A6E,
- 0x8A6F, 0x8A70, 0x8A71, 0x8A72, 0x8A73, 0x8A74, 0x8A75, 0x8A76,
- 0x8A77, 0x8A78, 0x8A7A, 0x8A7B, 0x8A7C, 0x8A7D, 0x8A7E, 0x8A7F,
- 0x8A80, 0x6D74, 0x5BD3, 0x88D5, 0x9884, 0x8C6B, 0x9A6D, 0x9E33,
- 0x6E0A, 0x51A4, 0x5143, 0x57A3, 0x8881, 0x539F, 0x63F4, 0x8F95,
- 0x56ED, 0x5458, 0x5706, 0x733F, 0x6E90, 0x7F18, 0x8FDC, 0x82D1,
- 0x613F, 0x6028, 0x9662, 0x66F0, 0x7EA6, 0x8D8A, 0x8DC3, 0x94A5,
- 0x5CB3, 0x7CA4, 0x6708, 0x60A6, 0x9605, 0x8018, 0x4E91, 0x90E7,
- 0x5300, 0x9668, 0x5141, 0x8FD0, 0x8574, 0x915D, 0x6655, 0x97F5,
- 0x5B55, 0x531D, 0x7838, 0x6742, 0x683D, 0x54C9, 0x707E, 0x5BB0,
- 0x8F7D, 0x518D, 0x5728, 0x54B1, 0x6512, 0x6682, 0x8D5E, 0x8D43,
- 0x810F, 0x846C, 0x906D, 0x7CDF, 0x51FF, 0x85FB, 0x67A3, 0x65E9,
- 0x6FA1, 0x86A4, 0x8E81, 0x566A, 0x9020, 0x7682, 0x7076, 0x71E5,
- 0x8D23, 0x62E9, 0x5219, 0x6CFD, 0x8D3C, 0x600E, 0x589E, 0x618E,
- 0x66FE, 0x8D60, 0x624E, 0x55B3, 0x6E23, 0x672D, 0x8F67,
- /* GB 0xD540..0xD57E */
- 0x8A81, 0x8A82, 0x8A83, 0x8A84, 0x8A85, 0x8A86, 0x8A87, 0x8A88,
- 0x8A8B, 0x8A8C, 0x8A8D, 0x8A8E, 0x8A8F, 0x8A90, 0x8A91, 0x8A92,
- 0x8A94, 0x8A95, 0x8A96, 0x8A97, 0x8A98, 0x8A99, 0x8A9A, 0x8A9B,
- 0x8A9C, 0x8A9D, 0x8A9E, 0x8A9F, 0x8AA0, 0x8AA1, 0x8AA2, 0x8AA3,
- 0x8AA4, 0x8AA5, 0x8AA6, 0x8AA7, 0x8AA8, 0x8AA9, 0x8AAA, 0x8AAB,
- 0x8AAC, 0x8AAD, 0x8AAE, 0x8AAF, 0x8AB0, 0x8AB1, 0x8AB2, 0x8AB3,
- 0x8AB4, 0x8AB5, 0x8AB6, 0x8AB7, 0x8AB8, 0x8AB9, 0x8ABA, 0x8ABB,
- 0x8ABC, 0x8ABD, 0x8ABE, 0x8ABF, 0x8AC0, 0x8AC1, 0x8AC2,
- /* GB 0xD580..0xD5FE */
- 0x8AC3, 0x8AC4, 0x8AC5, 0x8AC6, 0x8AC7, 0x8AC8, 0x8AC9, 0x8ACA,
- 0x8ACB, 0x8ACC, 0x8ACD, 0x8ACE, 0x8ACF, 0x8AD0, 0x8AD1, 0x8AD2,
- 0x8AD3, 0x8AD4, 0x8AD5, 0x8AD6, 0x8AD7, 0x8AD8, 0x8AD9, 0x8ADA,
- 0x8ADB, 0x8ADC, 0x8ADD, 0x8ADE, 0x8ADF, 0x8AE0, 0x8AE1, 0x8AE2,
- 0x8AE3, 0x94E1, 0x95F8, 0x7728, 0x6805, 0x69A8, 0x548B, 0x4E4D,
- 0x70B8, 0x8BC8, 0x6458, 0x658B, 0x5B85, 0x7A84, 0x503A, 0x5BE8,
- 0x77BB, 0x6BE1, 0x8A79, 0x7C98, 0x6CBE, 0x76CF, 0x65A9, 0x8F97,
- 0x5D2D, 0x5C55, 0x8638, 0x6808, 0x5360, 0x6218, 0x7AD9, 0x6E5B,
- 0x7EFD, 0x6A1F, 0x7AE0, 0x5F70, 0x6F33, 0x5F20, 0x638C, 0x6DA8,
- 0x6756, 0x4E08, 0x5E10, 0x8D26, 0x4ED7, 0x80C0, 0x7634, 0x969C,
- 0x62DB, 0x662D, 0x627E, 0x6CBC, 0x8D75, 0x7167, 0x7F69, 0x5146,
- 0x8087, 0x53EC, 0x906E, 0x6298, 0x54F2, 0x86F0, 0x8F99, 0x8005,
- 0x9517, 0x8517, 0x8FD9, 0x6D59, 0x73CD, 0x659F, 0x771F, 0x7504,
- 0x7827, 0x81FB, 0x8D1E, 0x9488, 0x4FA6, 0x6795, 0x75B9, 0x8BCA,
- 0x9707, 0x632F, 0x9547, 0x9635, 0x84B8, 0x6323, 0x7741, 0x5F81,
- 0x72F0, 0x4E89, 0x6014, 0x6574, 0x62EF, 0x6B63, 0x653F,
- /* GB 0xD640..0xD67E */
- 0x8AE4, 0x8AE5, 0x8AE6, 0x8AE7, 0x8AE8, 0x8AE9, 0x8AEA, 0x8AEB,
- 0x8AEC, 0x8AED, 0x8AEE, 0x8AEF, 0x8AF0, 0x8AF1, 0x8AF2, 0x8AF3,
- 0x8AF4, 0x8AF5, 0x8AF6, 0x8AF7, 0x8AF8, 0x8AF9, 0x8AFA, 0x8AFB,
- 0x8AFC, 0x8AFD, 0x8AFE, 0x8AFF, 0x8B00, 0x8B01, 0x8B02, 0x8B03,
- 0x8B04, 0x8B05, 0x8B06, 0x8B08, 0x8B09, 0x8B0A, 0x8B0B, 0x8B0C,
- 0x8B0D, 0x8B0E, 0x8B0F, 0x8B10, 0x8B11, 0x8B12, 0x8B13, 0x8B14,
- 0x8B15, 0x8B16, 0x8B17, 0x8B18, 0x8B19, 0x8B1A, 0x8B1B, 0x8B1C,
- 0x8B1D, 0x8B1E, 0x8B1F, 0x8B20, 0x8B21, 0x8B22, 0x8B23,
- /* GB 0xD680..0xD6FE */
- 0x8B24, 0x8B25, 0x8B27, 0x8B28, 0x8B29, 0x8B2A, 0x8B2B, 0x8B2C,
- 0x8B2D, 0x8B2E, 0x8B2F, 0x8B30, 0x8B31, 0x8B32, 0x8B33, 0x8B34,
- 0x8B35, 0x8B36, 0x8B37, 0x8B38, 0x8B39, 0x8B3A, 0x8B3B, 0x8B3C,
- 0x8B3D, 0x8B3E, 0x8B3F, 0x8B40, 0x8B41, 0x8B42, 0x8B43, 0x8B44,
- 0x8B45, 0x5E27, 0x75C7, 0x90D1, 0x8BC1, 0x829D, 0x679D, 0x652F,
- 0x5431, 0x8718, 0x77E5, 0x80A2, 0x8102, 0x6C41, 0x4E4B, 0x7EC7,
- 0x804C, 0x76F4, 0x690D, 0x6B96, 0x6267, 0x503C, 0x4F84, 0x5740,
- 0x6307, 0x6B62, 0x8DBE, 0x53EA, 0x65E8, 0x7EB8, 0x5FD7, 0x631A,
- 0x63B7, 0x81F3, 0x81F4, 0x7F6E, 0x5E1C, 0x5CD9, 0x5236, 0x667A,
- 0x79E9, 0x7A1A, 0x8D28, 0x7099, 0x75D4, 0x6EDE, 0x6CBB, 0x7A92,
- 0x4E2D, 0x76C5, 0x5FE0, 0x949F, 0x8877, 0x7EC8, 0x79CD, 0x80BF,
- 0x91CD, 0x4EF2, 0x4F17, 0x821F, 0x5468, 0x5DDE, 0x6D32, 0x8BCC,
- 0x7CA5, 0x8F74, 0x8098, 0x5E1A, 0x5492, 0x76B1, 0x5B99, 0x663C,
- 0x9AA4, 0x73E0, 0x682A, 0x86DB, 0x6731, 0x732A, 0x8BF8, 0x8BDB,
- 0x9010, 0x7AF9, 0x70DB, 0x716E, 0x62C4, 0x77A9, 0x5631, 0x4E3B,
- 0x8457, 0x67F1, 0x52A9, 0x86C0, 0x8D2E, 0x94F8, 0x7B51,
- /* GB 0xD740..0xD77E */
- 0x8B46, 0x8B47, 0x8B48, 0x8B49, 0x8B4A, 0x8B4B, 0x8B4C, 0x8B4D,
- 0x8B4E, 0x8B4F, 0x8B50, 0x8B51, 0x8B52, 0x8B53, 0x8B54, 0x8B55,
- 0x8B56, 0x8B57, 0x8B58, 0x8B59, 0x8B5A, 0x8B5B, 0x8B5C, 0x8B5D,
- 0x8B5E, 0x8B5F, 0x8B60, 0x8B61, 0x8B62, 0x8B63, 0x8B64, 0x8B65,
- 0x8B67, 0x8B68, 0x8B69, 0x8B6A, 0x8B6B, 0x8B6D, 0x8B6E, 0x8B6F,
- 0x8B70, 0x8B71, 0x8B72, 0x8B73, 0x8B74, 0x8B75, 0x8B76, 0x8B77,
- 0x8B78, 0x8B79, 0x8B7A, 0x8B7B, 0x8B7C, 0x8B7D, 0x8B7E, 0x8B7F,
- 0x8B80, 0x8B81, 0x8B82, 0x8B83, 0x8B84, 0x8B85, 0x8B86,
- /* GB 0xD780..0xD7FE */
- 0x8B87, 0x8B88, 0x8B89, 0x8B8A, 0x8B8B, 0x8B8C, 0x8B8D, 0x8B8E,
- 0x8B8F, 0x8B90, 0x8B91, 0x8B92, 0x8B93, 0x8B94, 0x8B95, 0x8B96,
- 0x8B97, 0x8B98, 0x8B99, 0x8B9A, 0x8B9B, 0x8B9C, 0x8B9D, 0x8B9E,
- 0x8B9F, 0x8BAC, 0x8BB1, 0x8BBB, 0x8BC7, 0x8BD0, 0x8BEA, 0x8C09,
- 0x8C1E, 0x4F4F, 0x6CE8, 0x795D, 0x9A7B, 0x6293, 0x722A, 0x62FD,
- 0x4E13, 0x7816, 0x8F6C, 0x64B0, 0x8D5A, 0x7BC6, 0x6869, 0x5E84,
- 0x88C5, 0x5986, 0x649E, 0x58EE, 0x72B6, 0x690E, 0x9525, 0x8FFD,
- 0x8D58, 0x5760, 0x7F00, 0x8C06, 0x51C6, 0x6349, 0x62D9, 0x5353,
- 0x684C, 0x7422, 0x8301, 0x914C, 0x5544, 0x7740, 0x707C, 0x6D4A,
- 0x5179, 0x54A8, 0x8D44, 0x59FF, 0x6ECB, 0x6DC4, 0x5B5C, 0x7D2B,
- 0x4ED4, 0x7C7D, 0x6ED3, 0x5B50, 0x81EA, 0x6E0D, 0x5B57, 0x9B03,
- 0x68D5, 0x8E2A, 0x5B97, 0x7EFC, 0x603B, 0x7EB5, 0x90B9, 0x8D70,
- 0x594F, 0x63CD, 0x79DF, 0x8DB3, 0x5352, 0x65CF, 0x7956, 0x8BC5,
- 0x963B, 0x7EC4, 0x94BB, 0x7E82, 0x5634, 0x9189, 0x6700, 0x7F6A,
- 0x5C0A, 0x9075, 0x6628, 0x5DE6, 0x4F50, 0x67DE, 0x505A, 0x4F5C,
- 0x5750, 0x5EA7, 0xE810, 0xE811, 0xE812, 0xE813, 0xE814,
- /* GB 0xD840..0xD87E */
- 0x8C38, 0x8C39, 0x8C3A, 0x8C3B, 0x8C3C, 0x8C3D, 0x8C3E, 0x8C3F,
- 0x8C40, 0x8C42, 0x8C43, 0x8C44, 0x8C45, 0x8C48, 0x8C4A, 0x8C4B,
- 0x8C4D, 0x8C4E, 0x8C4F, 0x8C50, 0x8C51, 0x8C52, 0x8C53, 0x8C54,
- 0x8C56, 0x8C57, 0x8C58, 0x8C59, 0x8C5B, 0x8C5C, 0x8C5D, 0x8C5E,
- 0x8C5F, 0x8C60, 0x8C63, 0x8C64, 0x8C65, 0x8C66, 0x8C67, 0x8C68,
- 0x8C69, 0x8C6C, 0x8C6D, 0x8C6E, 0x8C6F, 0x8C70, 0x8C71, 0x8C72,
- 0x8C74, 0x8C75, 0x8C76, 0x8C77, 0x8C7B, 0x8C7C, 0x8C7D, 0x8C7E,
- 0x8C7F, 0x8C80, 0x8C81, 0x8C83, 0x8C84, 0x8C86, 0x8C87,
- /* GB 0xD880..0xD8FE */
- 0x8C88, 0x8C8B, 0x8C8D, 0x8C8E, 0x8C8F, 0x8C90, 0x8C91, 0x8C92,
- 0x8C93, 0x8C95, 0x8C96, 0x8C97, 0x8C99, 0x8C9A, 0x8C9B, 0x8C9C,
- 0x8C9D, 0x8C9E, 0x8C9F, 0x8CA0, 0x8CA1, 0x8CA2, 0x8CA3, 0x8CA4,
- 0x8CA5, 0x8CA6, 0x8CA7, 0x8CA8, 0x8CA9, 0x8CAA, 0x8CAB, 0x8CAC,
- 0x8CAD, 0x4E8D, 0x4E0C, 0x5140, 0x4E10, 0x5EFF, 0x5345, 0x4E15,
- 0x4E98, 0x4E1E, 0x9B32, 0x5B6C, 0x5669, 0x4E28, 0x79BA, 0x4E3F,
- 0x5315, 0x4E47, 0x592D, 0x723B, 0x536E, 0x6C10, 0x56DF, 0x80E4,
- 0x9997, 0x6BD3, 0x777E, 0x9F17, 0x4E36, 0x4E9F, 0x9F10, 0x4E5C,
- 0x4E69, 0x4E93, 0x8288, 0x5B5B, 0x556C, 0x560F, 0x4EC4, 0x538D,
- 0x539D, 0x53A3, 0x53A5, 0x53AE, 0x9765, 0x8D5D, 0x531A, 0x53F5,
- 0x5326, 0x532E, 0x533E, 0x8D5C, 0x5366, 0x5363, 0x5202, 0x5208,
- 0x520E, 0x522D, 0x5233, 0x523F, 0x5240, 0x524C, 0x525E, 0x5261,
- 0x525C, 0x84AF, 0x527D, 0x5282, 0x5281, 0x5290, 0x5293, 0x5182,
- 0x7F54, 0x4EBB, 0x4EC3, 0x4EC9, 0x4EC2, 0x4EE8, 0x4EE1, 0x4EEB,
- 0x4EDE, 0x4F1B, 0x4EF3, 0x4F22, 0x4F64, 0x4EF5, 0x4F25, 0x4F27,
- 0x4F09, 0x4F2B, 0x4F5E, 0x4F67, 0x6538, 0x4F5A, 0x4F5D,
- /* GB 0xD940..0xD97E */
- 0x8CAE, 0x8CAF, 0x8CB0, 0x8CB1, 0x8CB2, 0x8CB3, 0x8CB4, 0x8CB5,
- 0x8CB6, 0x8CB7, 0x8CB8, 0x8CB9, 0x8CBA, 0x8CBB, 0x8CBC, 0x8CBD,
- 0x8CBE, 0x8CBF, 0x8CC0, 0x8CC1, 0x8CC2, 0x8CC3, 0x8CC4, 0x8CC5,
- 0x8CC6, 0x8CC7, 0x8CC8, 0x8CC9, 0x8CCA, 0x8CCB, 0x8CCC, 0x8CCD,
- 0x8CCE, 0x8CCF, 0x8CD0, 0x8CD1, 0x8CD2, 0x8CD3, 0x8CD4, 0x8CD5,
- 0x8CD6, 0x8CD7, 0x8CD8, 0x8CD9, 0x8CDA, 0x8CDB, 0x8CDC, 0x8CDD,
- 0x8CDE, 0x8CDF, 0x8CE0, 0x8CE1, 0x8CE2, 0x8CE3, 0x8CE4, 0x8CE5,
- 0x8CE6, 0x8CE7, 0x8CE8, 0x8CE9, 0x8CEA, 0x8CEB, 0x8CEC,
- /* GB 0xD980..0xD9FE */
- 0x8CED, 0x8CEE, 0x8CEF, 0x8CF0, 0x8CF1, 0x8CF2, 0x8CF3, 0x8CF4,
- 0x8CF5, 0x8CF6, 0x8CF7, 0x8CF8, 0x8CF9, 0x8CFA, 0x8CFB, 0x8CFC,
- 0x8CFD, 0x8CFE, 0x8CFF, 0x8D00, 0x8D01, 0x8D02, 0x8D03, 0x8D04,
- 0x8D05, 0x8D06, 0x8D07, 0x8D08, 0x8D09, 0x8D0A, 0x8D0B, 0x8D0C,
- 0x8D0D, 0x4F5F, 0x4F57, 0x4F32, 0x4F3D, 0x4F76, 0x4F74, 0x4F91,
- 0x4F89, 0x4F83, 0x4F8F, 0x4F7E, 0x4F7B, 0x4FAA, 0x4F7C, 0x4FAC,
- 0x4F94, 0x4FE6, 0x4FE8, 0x4FEA, 0x4FC5, 0x4FDA, 0x4FE3, 0x4FDC,
- 0x4FD1, 0x4FDF, 0x4FF8, 0x5029, 0x504C, 0x4FF3, 0x502C, 0x500F,
- 0x502E, 0x502D, 0x4FFE, 0x501C, 0x500C, 0x5025, 0x5028, 0x507E,
- 0x5043, 0x5055, 0x5048, 0x504E, 0x506C, 0x507B, 0x50A5, 0x50A7,
- 0x50A9, 0x50BA, 0x50D6, 0x5106, 0x50ED, 0x50EC, 0x50E6, 0x50EE,
- 0x5107, 0x510B, 0x4EDD, 0x6C3D, 0x4F58, 0x4F65, 0x4FCE, 0x9FA0,
- 0x6C46, 0x7C74, 0x516E, 0x5DFD, 0x9EC9, 0x9998, 0x5181, 0x5914,
- 0x52F9, 0x530D, 0x8A07, 0x5310, 0x51EB, 0x5919, 0x5155, 0x4EA0,
- 0x5156, 0x4EB3, 0x886E, 0x88A4, 0x4EB5, 0x8114, 0x88D2, 0x7980,
- 0x5B34, 0x8803, 0x7FB8, 0x51AB, 0x51B1, 0x51BD, 0x51BC,
- /* GB 0xDA40..0xDA7E */
- 0x8D0E, 0x8D0F, 0x8D10, 0x8D11, 0x8D12, 0x8D13, 0x8D14, 0x8D15,
- 0x8D16, 0x8D17, 0x8D18, 0x8D19, 0x8D1A, 0x8D1B, 0x8D1C, 0x8D20,
- 0x8D51, 0x8D52, 0x8D57, 0x8D5F, 0x8D65, 0x8D68, 0x8D69, 0x8D6A,
- 0x8D6C, 0x8D6E, 0x8D6F, 0x8D71, 0x8D72, 0x8D78, 0x8D79, 0x8D7A,
- 0x8D7B, 0x8D7C, 0x8D7D, 0x8D7E, 0x8D7F, 0x8D80, 0x8D82, 0x8D83,
- 0x8D86, 0x8D87, 0x8D88, 0x8D89, 0x8D8C, 0x8D8D, 0x8D8E, 0x8D8F,
- 0x8D90, 0x8D92, 0x8D93, 0x8D95, 0x8D96, 0x8D97, 0x8D98, 0x8D99,
- 0x8D9A, 0x8D9B, 0x8D9C, 0x8D9D, 0x8D9E, 0x8DA0, 0x8DA1,
- /* GB 0xDA80..0xDAFE */
- 0x8DA2, 0x8DA4, 0x8DA5, 0x8DA6, 0x8DA7, 0x8DA8, 0x8DA9, 0x8DAA,
- 0x8DAB, 0x8DAC, 0x8DAD, 0x8DAE, 0x8DAF, 0x8DB0, 0x8DB2, 0x8DB6,
- 0x8DB7, 0x8DB9, 0x8DBB, 0x8DBD, 0x8DC0, 0x8DC1, 0x8DC2, 0x8DC5,
- 0x8DC7, 0x8DC8, 0x8DC9, 0x8DCA, 0x8DCD, 0x8DD0, 0x8DD2, 0x8DD3,
- 0x8DD4, 0x51C7, 0x5196, 0x51A2, 0x51A5, 0x8BA0, 0x8BA6, 0x8BA7,
- 0x8BAA, 0x8BB4, 0x8BB5, 0x8BB7, 0x8BC2, 0x8BC3, 0x8BCB, 0x8BCF,
- 0x8BCE, 0x8BD2, 0x8BD3, 0x8BD4, 0x8BD6, 0x8BD8, 0x8BD9, 0x8BDC,
- 0x8BDF, 0x8BE0, 0x8BE4, 0x8BE8, 0x8BE9, 0x8BEE, 0x8BF0, 0x8BF3,
- 0x8BF6, 0x8BF9, 0x8BFC, 0x8BFF, 0x8C00, 0x8C02, 0x8C04, 0x8C07,
- 0x8C0C, 0x8C0F, 0x8C11, 0x8C12, 0x8C14, 0x8C15, 0x8C16, 0x8C19,
- 0x8C1B, 0x8C18, 0x8C1D, 0x8C1F, 0x8C20, 0x8C21, 0x8C25, 0x8C27,
- 0x8C2A, 0x8C2B, 0x8C2E, 0x8C2F, 0x8C32, 0x8C33, 0x8C35, 0x8C36,
- 0x5369, 0x537A, 0x961D, 0x9622, 0x9621, 0x9631, 0x962A, 0x963D,
- 0x963C, 0x9642, 0x9649, 0x9654, 0x965F, 0x9667, 0x966C, 0x9672,
- 0x9674, 0x9688, 0x968D, 0x9697, 0x96B0, 0x9097, 0x909B, 0x909D,
- 0x9099, 0x90AC, 0x90A1, 0x90B4, 0x90B3, 0x90B6, 0x90BA,
- /* GB 0xDB40..0xDB7E */
- 0x8DD5, 0x8DD8, 0x8DD9, 0x8DDC, 0x8DE0, 0x8DE1, 0x8DE2, 0x8DE5,
- 0x8DE6, 0x8DE7, 0x8DE9, 0x8DED, 0x8DEE, 0x8DF0, 0x8DF1, 0x8DF2,
- 0x8DF4, 0x8DF6, 0x8DFC, 0x8DFE, 0x8DFF, 0x8E00, 0x8E01, 0x8E02,
- 0x8E03, 0x8E04, 0x8E06, 0x8E07, 0x8E08, 0x8E0B, 0x8E0D, 0x8E0E,
- 0x8E10, 0x8E11, 0x8E12, 0x8E13, 0x8E15, 0x8E16, 0x8E17, 0x8E18,
- 0x8E19, 0x8E1A, 0x8E1B, 0x8E1C, 0x8E20, 0x8E21, 0x8E24, 0x8E25,
- 0x8E26, 0x8E27, 0x8E28, 0x8E2B, 0x8E2D, 0x8E30, 0x8E32, 0x8E33,
- 0x8E34, 0x8E36, 0x8E37, 0x8E38, 0x8E3B, 0x8E3C, 0x8E3E,
- /* GB 0xDB80..0xDBFE */
- 0x8E3F, 0x8E43, 0x8E45, 0x8E46, 0x8E4C, 0x8E4D, 0x8E4E, 0x8E4F,
- 0x8E50, 0x8E53, 0x8E54, 0x8E55, 0x8E56, 0x8E57, 0x8E58, 0x8E5A,
- 0x8E5B, 0x8E5C, 0x8E5D, 0x8E5E, 0x8E5F, 0x8E60, 0x8E61, 0x8E62,
- 0x8E63, 0x8E64, 0x8E65, 0x8E67, 0x8E68, 0x8E6A, 0x8E6B, 0x8E6E,
- 0x8E71, 0x90B8, 0x90B0, 0x90CF, 0x90C5, 0x90BE, 0x90D0, 0x90C4,
- 0x90C7, 0x90D3, 0x90E6, 0x90E2, 0x90DC, 0x90D7, 0x90DB, 0x90EB,
- 0x90EF, 0x90FE, 0x9104, 0x9122, 0x911E, 0x9123, 0x9131, 0x912F,
- 0x9139, 0x9143, 0x9146, 0x520D, 0x5942, 0x52A2, 0x52AC, 0x52AD,
- 0x52BE, 0x54FF, 0x52D0, 0x52D6, 0x52F0, 0x53DF, 0x71EE, 0x77CD,
- 0x5EF4, 0x51F5, 0x51FC, 0x9B2F, 0x53B6, 0x5F01, 0x755A, 0x5DEF,
- 0x574C, 0x57A9, 0x57A1, 0x587E, 0x58BC, 0x58C5, 0x58D1, 0x5729,
- 0x572C, 0x572A, 0x5733, 0x5739, 0x572E, 0x572F, 0x575C, 0x573B,
- 0x5742, 0x5769, 0x5785, 0x576B, 0x5786, 0x577C, 0x577B, 0x5768,
- 0x576D, 0x5776, 0x5773, 0x57AD, 0x57A4, 0x578C, 0x57B2, 0x57CF,
- 0x57A7, 0x57B4, 0x5793, 0x57A0, 0x57D5, 0x57D8, 0x57DA, 0x57D9,
- 0x57D2, 0x57B8, 0x57F4, 0x57EF, 0x57F8, 0x57E4, 0x57DD,
- /* GB 0xDC40..0xDC7E */
- 0x8E73, 0x8E75, 0x8E77, 0x8E78, 0x8E79, 0x8E7A, 0x8E7B, 0x8E7D,
- 0x8E7E, 0x8E80, 0x8E82, 0x8E83, 0x8E84, 0x8E86, 0x8E88, 0x8E89,
- 0x8E8A, 0x8E8B, 0x8E8C, 0x8E8D, 0x8E8E, 0x8E91, 0x8E92, 0x8E93,
- 0x8E95, 0x8E96, 0x8E97, 0x8E98, 0x8E99, 0x8E9A, 0x8E9B, 0x8E9D,
- 0x8E9F, 0x8EA0, 0x8EA1, 0x8EA2, 0x8EA3, 0x8EA4, 0x8EA5, 0x8EA6,
- 0x8EA7, 0x8EA8, 0x8EA9, 0x8EAA, 0x8EAD, 0x8EAE, 0x8EB0, 0x8EB1,
- 0x8EB3, 0x8EB4, 0x8EB5, 0x8EB6, 0x8EB7, 0x8EB8, 0x8EB9, 0x8EBB,
- 0x8EBC, 0x8EBD, 0x8EBE, 0x8EBF, 0x8EC0, 0x8EC1, 0x8EC2,
- /* GB 0xDC80..0xDCFE */
- 0x8EC3, 0x8EC4, 0x8EC5, 0x8EC6, 0x8EC7, 0x8EC8, 0x8EC9, 0x8ECA,
- 0x8ECB, 0x8ECC, 0x8ECD, 0x8ECF, 0x8ED0, 0x8ED1, 0x8ED2, 0x8ED3,
- 0x8ED4, 0x8ED5, 0x8ED6, 0x8ED7, 0x8ED8, 0x8ED9, 0x8EDA, 0x8EDB,
- 0x8EDC, 0x8EDD, 0x8EDE, 0x8EDF, 0x8EE0, 0x8EE1, 0x8EE2, 0x8EE3,
- 0x8EE4, 0x580B, 0x580D, 0x57FD, 0x57ED, 0x5800, 0x581E, 0x5819,
- 0x5844, 0x5820, 0x5865, 0x586C, 0x5881, 0x5889, 0x589A, 0x5880,
- 0x99A8, 0x9F19, 0x61FF, 0x8279, 0x827D, 0x827F, 0x828F, 0x828A,
- 0x82A8, 0x8284, 0x828E, 0x8291, 0x8297, 0x8299, 0x82AB, 0x82B8,
- 0x82BE, 0x82B0, 0x82C8, 0x82CA, 0x82E3, 0x8298, 0x82B7, 0x82AE,
- 0x82CB, 0x82CC, 0x82C1, 0x82A9, 0x82B4, 0x82A1, 0x82AA, 0x829F,
- 0x82C4, 0x82CE, 0x82A4, 0x82E1, 0x8309, 0x82F7, 0x82E4, 0x830F,
- 0x8307, 0x82DC, 0x82F4, 0x82D2, 0x82D8, 0x830C, 0x82FB, 0x82D3,
- 0x8311, 0x831A, 0x8306, 0x8314, 0x8315, 0x82E0, 0x82D5, 0x831C,
- 0x8351, 0x835B, 0x835C, 0x8308, 0x8392, 0x833C, 0x8334, 0x8331,
- 0x839B, 0x835E, 0x832F, 0x834F, 0x8347, 0x8343, 0x835F, 0x8340,
- 0x8317, 0x8360, 0x832D, 0x833A, 0x8333, 0x8366, 0x8365,
- /* GB 0xDD40..0xDD7E */
- 0x8EE5, 0x8EE6, 0x8EE7, 0x8EE8, 0x8EE9, 0x8EEA, 0x8EEB, 0x8EEC,
- 0x8EED, 0x8EEE, 0x8EEF, 0x8EF0, 0x8EF1, 0x8EF2, 0x8EF3, 0x8EF4,
- 0x8EF5, 0x8EF6, 0x8EF7, 0x8EF8, 0x8EF9, 0x8EFA, 0x8EFB, 0x8EFC,
- 0x8EFD, 0x8EFE, 0x8EFF, 0x8F00, 0x8F01, 0x8F02, 0x8F03, 0x8F04,
- 0x8F05, 0x8F06, 0x8F07, 0x8F08, 0x8F09, 0x8F0A, 0x8F0B, 0x8F0C,
- 0x8F0D, 0x8F0E, 0x8F0F, 0x8F10, 0x8F11, 0x8F12, 0x8F13, 0x8F14,
- 0x8F15, 0x8F16, 0x8F17, 0x8F18, 0x8F19, 0x8F1A, 0x8F1B, 0x8F1C,
- 0x8F1D, 0x8F1E, 0x8F1F, 0x8F20, 0x8F21, 0x8F22, 0x8F23,
- /* GB 0xDD80..0xDDFE */
- 0x8F24, 0x8F25, 0x8F26, 0x8F27, 0x8F28, 0x8F29, 0x8F2A, 0x8F2B,
- 0x8F2C, 0x8F2D, 0x8F2E, 0x8F2F, 0x8F30, 0x8F31, 0x8F32, 0x8F33,
- 0x8F34, 0x8F35, 0x8F36, 0x8F37, 0x8F38, 0x8F39, 0x8F3A, 0x8F3B,
- 0x8F3C, 0x8F3D, 0x8F3E, 0x8F3F, 0x8F40, 0x8F41, 0x8F42, 0x8F43,
- 0x8F44, 0x8368, 0x831B, 0x8369, 0x836C, 0x836A, 0x836D, 0x836E,
- 0x83B0, 0x8378, 0x83B3, 0x83B4, 0x83A0, 0x83AA, 0x8393, 0x839C,
- 0x8385, 0x837C, 0x83B6, 0x83A9, 0x837D, 0x83B8, 0x837B, 0x8398,
- 0x839E, 0x83A8, 0x83BA, 0x83BC, 0x83C1, 0x8401, 0x83E5, 0x83D8,
- 0x5807, 0x8418, 0x840B, 0x83DD, 0x83FD, 0x83D6, 0x841C, 0x8438,
- 0x8411, 0x8406, 0x83D4, 0x83DF, 0x840F, 0x8403, 0x83F8, 0x83F9,
- 0x83EA, 0x83C5, 0x83C0, 0x8426, 0x83F0, 0x83E1, 0x845C, 0x8451,
- 0x845A, 0x8459, 0x8473, 0x8487, 0x8488, 0x847A, 0x8489, 0x8478,
- 0x843C, 0x8446, 0x8469, 0x8476, 0x848C, 0x848E, 0x8431, 0x846D,
- 0x84C1, 0x84CD, 0x84D0, 0x84E6, 0x84BD, 0x84D3, 0x84CA, 0x84BF,
- 0x84BA, 0x84E0, 0x84A1, 0x84B9, 0x84B4, 0x8497, 0x84E5, 0x84E3,
- 0x850C, 0x750D, 0x8538, 0x84F0, 0x8539, 0x851F, 0x853A,
- /* GB 0xDE40..0xDE7E */
- 0x8F45, 0x8F46, 0x8F47, 0x8F48, 0x8F49, 0x8F4A, 0x8F4B, 0x8F4C,
- 0x8F4D, 0x8F4E, 0x8F4F, 0x8F50, 0x8F51, 0x8F52, 0x8F53, 0x8F54,
- 0x8F55, 0x8F56, 0x8F57, 0x8F58, 0x8F59, 0x8F5A, 0x8F5B, 0x8F5C,
- 0x8F5D, 0x8F5E, 0x8F5F, 0x8F60, 0x8F61, 0x8F62, 0x8F63, 0x8F64,
- 0x8F65, 0x8F6A, 0x8F80, 0x8F8C, 0x8F92, 0x8F9D, 0x8FA0, 0x8FA1,
- 0x8FA2, 0x8FA4, 0x8FA5, 0x8FA6, 0x8FA7, 0x8FAA, 0x8FAC, 0x8FAD,
- 0x8FAE, 0x8FAF, 0x8FB2, 0x8FB3, 0x8FB4, 0x8FB5, 0x8FB7, 0x8FB8,
- 0x8FBA, 0x8FBB, 0x8FBC, 0x8FBF, 0x8FC0, 0x8FC3, 0x8FC6,
- /* GB 0xDE80..0xDEFE */
- 0x8FC9, 0x8FCA, 0x8FCB, 0x8FCC, 0x8FCD, 0x8FCF, 0x8FD2, 0x8FD6,
- 0x8FD7, 0x8FDA, 0x8FE0, 0x8FE1, 0x8FE3, 0x8FE7, 0x8FEC, 0x8FEF,
- 0x8FF1, 0x8FF2, 0x8FF4, 0x8FF5, 0x8FF6, 0x8FFA, 0x8FFB, 0x8FFC,
- 0x8FFE, 0x8FFF, 0x9007, 0x9008, 0x900C, 0x900E, 0x9013, 0x9015,
- 0x9018, 0x8556, 0x853B, 0x84FF, 0x84FC, 0x8559, 0x8548, 0x8568,
- 0x8564, 0x855E, 0x857A, 0x77A2, 0x8543, 0x8572, 0x857B, 0x85A4,
- 0x85A8, 0x8587, 0x858F, 0x8579, 0x85AE, 0x859C, 0x8585, 0x85B9,
- 0x85B7, 0x85B0, 0x85D3, 0x85C1, 0x85DC, 0x85FF, 0x8627, 0x8605,
- 0x8629, 0x8616, 0x863C, 0x5EFE, 0x5F08, 0x593C, 0x5941, 0x8037,
- 0x5955, 0x595A, 0x5958, 0x530F, 0x5C22, 0x5C25, 0x5C2C, 0x5C34,
- 0x624C, 0x626A, 0x629F, 0x62BB, 0x62CA, 0x62DA, 0x62D7, 0x62EE,
- 0x6322, 0x62F6, 0x6339, 0x634B, 0x6343, 0x63AD, 0x63F6, 0x6371,
- 0x637A, 0x638E, 0x63B4, 0x636D, 0x63AC, 0x638A, 0x6369, 0x63AE,
- 0x63BC, 0x63F2, 0x63F8, 0x63E0, 0x63FF, 0x63C4, 0x63DE, 0x63CE,
- 0x6452, 0x63C6, 0x63BE, 0x6445, 0x6441, 0x640B, 0x641B, 0x6420,
- 0x640C, 0x6426, 0x6421, 0x645E, 0x6484, 0x646D, 0x6496,
- /* GB 0xDF40..0xDF7E */
- 0x9019, 0x901C, 0x9023, 0x9024, 0x9025, 0x9027, 0x9028, 0x9029,
- 0x902A, 0x902B, 0x902C, 0x9030, 0x9031, 0x9032, 0x9033, 0x9034,
- 0x9037, 0x9039, 0x903A, 0x903D, 0x903F, 0x9040, 0x9043, 0x9045,
- 0x9046, 0x9048, 0x9049, 0x904A, 0x904B, 0x904C, 0x904E, 0x9054,
- 0x9055, 0x9056, 0x9059, 0x905A, 0x905C, 0x905D, 0x905E, 0x905F,
- 0x9060, 0x9061, 0x9064, 0x9066, 0x9067, 0x9069, 0x906A, 0x906B,
- 0x906C, 0x906F, 0x9070, 0x9071, 0x9072, 0x9073, 0x9076, 0x9077,
- 0x9078, 0x9079, 0x907A, 0x907B, 0x907C, 0x907E, 0x9081,
- /* GB 0xDF80..0xDFFE */
- 0x9084, 0x9085, 0x9086, 0x9087, 0x9089, 0x908A, 0x908C, 0x908D,
- 0x908E, 0x908F, 0x9090, 0x9092, 0x9094, 0x9096, 0x9098, 0x909A,
- 0x909C, 0x909E, 0x909F, 0x90A0, 0x90A4, 0x90A5, 0x90A7, 0x90A8,
- 0x90A9, 0x90AB, 0x90AD, 0x90B2, 0x90B7, 0x90BC, 0x90BD, 0x90BF,
- 0x90C0, 0x647A, 0x64B7, 0x64B8, 0x6499, 0x64BA, 0x64C0, 0x64D0,
- 0x64D7, 0x64E4, 0x64E2, 0x6509, 0x6525, 0x652E, 0x5F0B, 0x5FD2,
- 0x7519, 0x5F11, 0x535F, 0x53F1, 0x53FD, 0x53E9, 0x53E8, 0x53FB,
- 0x5412, 0x5416, 0x5406, 0x544B, 0x5452, 0x5453, 0x5454, 0x5456,
- 0x5443, 0x5421, 0x5457, 0x5459, 0x5423, 0x5432, 0x5482, 0x5494,
- 0x5477, 0x5471, 0x5464, 0x549A, 0x549B, 0x5484, 0x5476, 0x5466,
- 0x549D, 0x54D0, 0x54AD, 0x54C2, 0x54B4, 0x54D2, 0x54A7, 0x54A6,
- 0x54D3, 0x54D4, 0x5472, 0x54A3, 0x54D5, 0x54BB, 0x54BF, 0x54CC,
- 0x54D9, 0x54DA, 0x54DC, 0x54A9, 0x54AA, 0x54A4, 0x54DD, 0x54CF,
- 0x54DE, 0x551B, 0x54E7, 0x5520, 0x54FD, 0x5514, 0x54F3, 0x5522,
- 0x5523, 0x550F, 0x5511, 0x5527, 0x552A, 0x5567, 0x558F, 0x55B5,
- 0x5549, 0x556D, 0x5541, 0x5555, 0x553F, 0x5550, 0x553C,
- /* GB 0xE040..0xE07E */
- 0x90C2, 0x90C3, 0x90C6, 0x90C8, 0x90C9, 0x90CB, 0x90CC, 0x90CD,
- 0x90D2, 0x90D4, 0x90D5, 0x90D6, 0x90D8, 0x90D9, 0x90DA, 0x90DE,
- 0x90DF, 0x90E0, 0x90E3, 0x90E4, 0x90E5, 0x90E9, 0x90EA, 0x90EC,
- 0x90EE, 0x90F0, 0x90F1, 0x90F2, 0x90F3, 0x90F5, 0x90F6, 0x90F7,
- 0x90F9, 0x90FA, 0x90FB, 0x90FC, 0x90FF, 0x9100, 0x9101, 0x9103,
- 0x9105, 0x9106, 0x9107, 0x9108, 0x9109, 0x910A, 0x910B, 0x910C,
- 0x910D, 0x910E, 0x910F, 0x9110, 0x9111, 0x9112, 0x9113, 0x9114,
- 0x9115, 0x9116, 0x9117, 0x9118, 0x911A, 0x911B, 0x911C,
- /* GB 0xE080..0xE0FE */
- 0x911D, 0x911F, 0x9120, 0x9121, 0x9124, 0x9125, 0x9126, 0x9127,
- 0x9128, 0x9129, 0x912A, 0x912B, 0x912C, 0x912D, 0x912E, 0x9130,
- 0x9132, 0x9133, 0x9134, 0x9135, 0x9136, 0x9137, 0x9138, 0x913A,
- 0x913B, 0x913C, 0x913D, 0x913E, 0x913F, 0x9140, 0x9141, 0x9142,
- 0x9144, 0x5537, 0x5556, 0x5575, 0x5576, 0x5577, 0x5533, 0x5530,
- 0x555C, 0x558B, 0x55D2, 0x5583, 0x55B1, 0x55B9, 0x5588, 0x5581,
- 0x559F, 0x557E, 0x55D6, 0x5591, 0x557B, 0x55DF, 0x55BD, 0x55BE,
- 0x5594, 0x5599, 0x55EA, 0x55F7, 0x55C9, 0x561F, 0x55D1, 0x55EB,
- 0x55EC, 0x55D4, 0x55E6, 0x55DD, 0x55C4, 0x55EF, 0x55E5, 0x55F2,
- 0x55F3, 0x55CC, 0x55CD, 0x55E8, 0x55F5, 0x55E4, 0x8F94, 0x561E,
- 0x5608, 0x560C, 0x5601, 0x5624, 0x5623, 0x55FE, 0x5600, 0x5627,
- 0x562D, 0x5658, 0x5639, 0x5657, 0x562C, 0x564D, 0x5662, 0x5659,
- 0x565C, 0x564C, 0x5654, 0x5686, 0x5664, 0x5671, 0x566B, 0x567B,
- 0x567C, 0x5685, 0x5693, 0x56AF, 0x56D4, 0x56D7, 0x56DD, 0x56E1,
- 0x56F5, 0x56EB, 0x56F9, 0x56FF, 0x5704, 0x570A, 0x5709, 0x571C,
- 0x5E0F, 0x5E19, 0x5E14, 0x5E11, 0x5E31, 0x5E3B, 0x5E3C,
- /* GB 0xE140..0xE17E */
- 0x9145, 0x9147, 0x9148, 0x9151, 0x9153, 0x9154, 0x9155, 0x9156,
- 0x9158, 0x9159, 0x915B, 0x915C, 0x915F, 0x9160, 0x9166, 0x9167,
- 0x9168, 0x916B, 0x916D, 0x9173, 0x917A, 0x917B, 0x917C, 0x9180,
- 0x9181, 0x9182, 0x9183, 0x9184, 0x9186, 0x9188, 0x918A, 0x918E,
- 0x918F, 0x9193, 0x9194, 0x9195, 0x9196, 0x9197, 0x9198, 0x9199,
- 0x919C, 0x919D, 0x919E, 0x919F, 0x91A0, 0x91A1, 0x91A4, 0x91A5,
- 0x91A6, 0x91A7, 0x91A8, 0x91A9, 0x91AB, 0x91AC, 0x91B0, 0x91B1,
- 0x91B2, 0x91B3, 0x91B6, 0x91B7, 0x91B8, 0x91B9, 0x91BB,
- /* GB 0xE180..0xE1FE */
- 0x91BC, 0x91BD, 0x91BE, 0x91BF, 0x91C0, 0x91C1, 0x91C2, 0x91C3,
- 0x91C4, 0x91C5, 0x91C6, 0x91C8, 0x91CB, 0x91D0, 0x91D2, 0x91D3,
- 0x91D4, 0x91D5, 0x91D6, 0x91D7, 0x91D8, 0x91D9, 0x91DA, 0x91DB,
- 0x91DD, 0x91DE, 0x91DF, 0x91E0, 0x91E1, 0x91E2, 0x91E3, 0x91E4,
- 0x91E5, 0x5E37, 0x5E44, 0x5E54, 0x5E5B, 0x5E5E, 0x5E61, 0x5C8C,
- 0x5C7A, 0x5C8D, 0x5C90, 0x5C96, 0x5C88, 0x5C98, 0x5C99, 0x5C91,
- 0x5C9A, 0x5C9C, 0x5CB5, 0x5CA2, 0x5CBD, 0x5CAC, 0x5CAB, 0x5CB1,
- 0x5CA3, 0x5CC1, 0x5CB7, 0x5CC4, 0x5CD2, 0x5CE4, 0x5CCB, 0x5CE5,
- 0x5D02, 0x5D03, 0x5D27, 0x5D26, 0x5D2E, 0x5D24, 0x5D1E, 0x5D06,
- 0x5D1B, 0x5D58, 0x5D3E, 0x5D34, 0x5D3D, 0x5D6C, 0x5D5B, 0x5D6F,
- 0x5D5D, 0x5D6B, 0x5D4B, 0x5D4A, 0x5D69, 0x5D74, 0x5D82, 0x5D99,
- 0x5D9D, 0x8C73, 0x5DB7, 0x5DC5, 0x5F73, 0x5F77, 0x5F82, 0x5F87,
- 0x5F89, 0x5F8C, 0x5F95, 0x5F99, 0x5F9C, 0x5FA8, 0x5FAD, 0x5FB5,
- 0x5FBC, 0x8862, 0x5F61, 0x72AD, 0x72B0, 0x72B4, 0x72B7, 0x72B8,
- 0x72C3, 0x72C1, 0x72CE, 0x72CD, 0x72D2, 0x72E8, 0x72EF, 0x72E9,
- 0x72F2, 0x72F4, 0x72F7, 0x7301, 0x72F3, 0x7303, 0x72FA,
- /* GB 0xE240..0xE27E */
- 0x91E6, 0x91E7, 0x91E8, 0x91E9, 0x91EA, 0x91EB, 0x91EC, 0x91ED,
- 0x91EE, 0x91EF, 0x91F0, 0x91F1, 0x91F2, 0x91F3, 0x91F4, 0x91F5,
- 0x91F6, 0x91F7, 0x91F8, 0x91F9, 0x91FA, 0x91FB, 0x91FC, 0x91FD,
- 0x91FE, 0x91FF, 0x9200, 0x9201, 0x9202, 0x9203, 0x9204, 0x9205,
- 0x9206, 0x9207, 0x9208, 0x9209, 0x920A, 0x920B, 0x920C, 0x920D,
- 0x920E, 0x920F, 0x9210, 0x9211, 0x9212, 0x9213, 0x9214, 0x9215,
- 0x9216, 0x9217, 0x9218, 0x9219, 0x921A, 0x921B, 0x921C, 0x921D,
- 0x921E, 0x921F, 0x9220, 0x9221, 0x9222, 0x9223, 0x9224,
- /* GB 0xE280..0xE2FE */
- 0x9225, 0x9226, 0x9227, 0x9228, 0x9229, 0x922A, 0x922B, 0x922C,
- 0x922D, 0x922E, 0x922F, 0x9230, 0x9231, 0x9232, 0x9233, 0x9234,
- 0x9235, 0x9236, 0x9237, 0x9238, 0x9239, 0x923A, 0x923B, 0x923C,
- 0x923D, 0x923E, 0x923F, 0x9240, 0x9241, 0x9242, 0x9243, 0x9244,
- 0x9245, 0x72FB, 0x7317, 0x7313, 0x7321, 0x730A, 0x731E, 0x731D,
- 0x7315, 0x7322, 0x7339, 0x7325, 0x732C, 0x7338, 0x7331, 0x7350,
- 0x734D, 0x7357, 0x7360, 0x736C, 0x736F, 0x737E, 0x821B, 0x5925,
- 0x98E7, 0x5924, 0x5902, 0x9963, 0x9967, 0x9968, 0x9969, 0x996A,
- 0x996B, 0x996C, 0x9974, 0x9977, 0x997D, 0x9980, 0x9984, 0x9987,
- 0x998A, 0x998D, 0x9990, 0x9991, 0x9993, 0x9994, 0x9995, 0x5E80,
- 0x5E91, 0x5E8B, 0x5E96, 0x5EA5, 0x5EA0, 0x5EB9, 0x5EB5, 0x5EBE,
- 0x5EB3, 0x8D53, 0x5ED2, 0x5ED1, 0x5EDB, 0x5EE8, 0x5EEA, 0x81BA,
- 0x5FC4, 0x5FC9, 0x5FD6, 0x5FCF, 0x6003, 0x5FEE, 0x6004, 0x5FE1,
- 0x5FE4, 0x5FFE, 0x6005, 0x6006, 0x5FEA, 0x5FED, 0x5FF8, 0x6019,
- 0x6035, 0x6026, 0x601B, 0x600F, 0x600D, 0x6029, 0x602B, 0x600A,
- 0x603F, 0x6021, 0x6078, 0x6079, 0x607B, 0x607A, 0x6042,
- /* GB 0xE340..0xE37E */
- 0x9246, 0x9247, 0x9248, 0x9249, 0x924A, 0x924B, 0x924C, 0x924D,
- 0x924E, 0x924F, 0x9250, 0x9251, 0x9252, 0x9253, 0x9254, 0x9255,
- 0x9256, 0x9257, 0x9258, 0x9259, 0x925A, 0x925B, 0x925C, 0x925D,
- 0x925E, 0x925F, 0x9260, 0x9261, 0x9262, 0x9263, 0x9264, 0x9265,
- 0x9266, 0x9267, 0x9268, 0x9269, 0x926A, 0x926B, 0x926C, 0x926D,
- 0x926E, 0x926F, 0x9270, 0x9271, 0x9272, 0x9273, 0x9275, 0x9276,
- 0x9277, 0x9278, 0x9279, 0x927A, 0x927B, 0x927C, 0x927D, 0x927E,
- 0x927F, 0x9280, 0x9281, 0x9282, 0x9283, 0x9284, 0x9285,
- /* GB 0xE380..0xE3FE */
- 0x9286, 0x9287, 0x9288, 0x9289, 0x928A, 0x928B, 0x928C, 0x928D,
- 0x928F, 0x9290, 0x9291, 0x9292, 0x9293, 0x9294, 0x9295, 0x9296,
- 0x9297, 0x9298, 0x9299, 0x929A, 0x929B, 0x929C, 0x929D, 0x929E,
- 0x929F, 0x92A0, 0x92A1, 0x92A2, 0x92A3, 0x92A4, 0x92A5, 0x92A6,
- 0x92A7, 0x606A, 0x607D, 0x6096, 0x609A, 0x60AD, 0x609D, 0x6083,
- 0x6092, 0x608C, 0x609B, 0x60EC, 0x60BB, 0x60B1, 0x60DD, 0x60D8,
- 0x60C6, 0x60DA, 0x60B4, 0x6120, 0x6126, 0x6115, 0x6123, 0x60F4,
- 0x6100, 0x610E, 0x612B, 0x614A, 0x6175, 0x61AC, 0x6194, 0x61A7,
- 0x61B7, 0x61D4, 0x61F5, 0x5FDD, 0x96B3, 0x95E9, 0x95EB, 0x95F1,
- 0x95F3, 0x95F5, 0x95F6, 0x95FC, 0x95FE, 0x9603, 0x9604, 0x9606,
- 0x9608, 0x960A, 0x960B, 0x960C, 0x960D, 0x960F, 0x9612, 0x9615,
- 0x9616, 0x9617, 0x9619, 0x961A, 0x4E2C, 0x723F, 0x6215, 0x6C35,
- 0x6C54, 0x6C5C, 0x6C4A, 0x6CA3, 0x6C85, 0x6C90, 0x6C94, 0x6C8C,
- 0x6C68, 0x6C69, 0x6C74, 0x6C76, 0x6C86, 0x6CA9, 0x6CD0, 0x6CD4,
- 0x6CAD, 0x6CF7, 0x6CF8, 0x6CF1, 0x6CD7, 0x6CB2, 0x6CE0, 0x6CD6,
- 0x6CFA, 0x6CEB, 0x6CEE, 0x6CB1, 0x6CD3, 0x6CEF, 0x6CFE,
- /* GB 0xE440..0xE47E */
- 0x92A8, 0x92A9, 0x92AA, 0x92AB, 0x92AC, 0x92AD, 0x92AF, 0x92B0,
- 0x92B1, 0x92B2, 0x92B3, 0x92B4, 0x92B5, 0x92B6, 0x92B7, 0x92B8,
- 0x92B9, 0x92BA, 0x92BB, 0x92BC, 0x92BD, 0x92BE, 0x92BF, 0x92C0,
- 0x92C1, 0x92C2, 0x92C3, 0x92C4, 0x92C5, 0x92C6, 0x92C7, 0x92C9,
- 0x92CA, 0x92CB, 0x92CC, 0x92CD, 0x92CE, 0x92CF, 0x92D0, 0x92D1,
- 0x92D2, 0x92D3, 0x92D4, 0x92D5, 0x92D6, 0x92D7, 0x92D8, 0x92D9,
- 0x92DA, 0x92DB, 0x92DC, 0x92DD, 0x92DE, 0x92DF, 0x92E0, 0x92E1,
- 0x92E2, 0x92E3, 0x92E4, 0x92E5, 0x92E6, 0x92E7, 0x92E8,
- /* GB 0xE480..0xE4FE */
- 0x92E9, 0x92EA, 0x92EB, 0x92EC, 0x92ED, 0x92EE, 0x92EF, 0x92F0,
- 0x92F1, 0x92F2, 0x92F3, 0x92F4, 0x92F5, 0x92F6, 0x92F7, 0x92F8,
- 0x92F9, 0x92FA, 0x92FB, 0x92FC, 0x92FD, 0x92FE, 0x92FF, 0x9300,
- 0x9301, 0x9302, 0x9303, 0x9304, 0x9305, 0x9306, 0x9307, 0x9308,
- 0x9309, 0x6D39, 0x6D27, 0x6D0C, 0x6D43, 0x6D48, 0x6D07, 0x6D04,
- 0x6D19, 0x6D0E, 0x6D2B, 0x6D4D, 0x6D2E, 0x6D35, 0x6D1A, 0x6D4F,
- 0x6D52, 0x6D54, 0x6D33, 0x6D91, 0x6D6F, 0x6D9E, 0x6DA0, 0x6D5E,
- 0x6D93, 0x6D94, 0x6D5C, 0x6D60, 0x6D7C, 0x6D63, 0x6E1A, 0x6DC7,
- 0x6DC5, 0x6DDE, 0x6E0E, 0x6DBF, 0x6DE0, 0x6E11, 0x6DE6, 0x6DDD,
- 0x6DD9, 0x6E16, 0x6DAB, 0x6E0C, 0x6DAE, 0x6E2B, 0x6E6E, 0x6E4E,
- 0x6E6B, 0x6EB2, 0x6E5F, 0x6E86, 0x6E53, 0x6E54, 0x6E32, 0x6E25,
- 0x6E44, 0x6EDF, 0x6EB1, 0x6E98, 0x6EE0, 0x6F2D, 0x6EE2, 0x6EA5,
- 0x6EA7, 0x6EBD, 0x6EBB, 0x6EB7, 0x6ED7, 0x6EB4, 0x6ECF, 0x6E8F,
- 0x6EC2, 0x6E9F, 0x6F62, 0x6F46, 0x6F47, 0x6F24, 0x6F15, 0x6EF9,
- 0x6F2F, 0x6F36, 0x6F4B, 0x6F74, 0x6F2A, 0x6F09, 0x6F29, 0x6F89,
- 0x6F8D, 0x6F8C, 0x6F78, 0x6F72, 0x6F7C, 0x6F7A, 0x6FD1,
- /* GB 0xE540..0xE57E */
- 0x930A, 0x930B, 0x930C, 0x930D, 0x930E, 0x930F, 0x9310, 0x9311,
- 0x9312, 0x9313, 0x9314, 0x9315, 0x9316, 0x9317, 0x9318, 0x9319,
- 0x931A, 0x931B, 0x931C, 0x931D, 0x931E, 0x931F, 0x9320, 0x9321,
- 0x9322, 0x9323, 0x9324, 0x9325, 0x9326, 0x9327, 0x9328, 0x9329,
- 0x932A, 0x932B, 0x932C, 0x932D, 0x932E, 0x932F, 0x9330, 0x9331,
- 0x9332, 0x9333, 0x9334, 0x9335, 0x9336, 0x9337, 0x9338, 0x9339,
- 0x933A, 0x933B, 0x933C, 0x933D, 0x933F, 0x9340, 0x9341, 0x9342,
- 0x9343, 0x9344, 0x9345, 0x9346, 0x9347, 0x9348, 0x9349,
- /* GB 0xE580..0xE5FE */
- 0x934A, 0x934B, 0x934C, 0x934D, 0x934E, 0x934F, 0x9350, 0x9351,
- 0x9352, 0x9353, 0x9354, 0x9355, 0x9356, 0x9357, 0x9358, 0x9359,
- 0x935A, 0x935B, 0x935C, 0x935D, 0x935E, 0x935F, 0x9360, 0x9361,
- 0x9362, 0x9363, 0x9364, 0x9365, 0x9366, 0x9367, 0x9368, 0x9369,
- 0x936B, 0x6FC9, 0x6FA7, 0x6FB9, 0x6FB6, 0x6FC2, 0x6FE1, 0x6FEE,
- 0x6FDE, 0x6FE0, 0x6FEF, 0x701A, 0x7023, 0x701B, 0x7039, 0x7035,
- 0x704F, 0x705E, 0x5B80, 0x5B84, 0x5B95, 0x5B93, 0x5BA5, 0x5BB8,
- 0x752F, 0x9A9E, 0x6434, 0x5BE4, 0x5BEE, 0x8930, 0x5BF0, 0x8E47,
- 0x8B07, 0x8FB6, 0x8FD3, 0x8FD5, 0x8FE5, 0x8FEE, 0x8FE4, 0x8FE9,
- 0x8FE6, 0x8FF3, 0x8FE8, 0x9005, 0x9004, 0x900B, 0x9026, 0x9011,
- 0x900D, 0x9016, 0x9021, 0x9035, 0x9036, 0x902D, 0x902F, 0x9044,
- 0x9051, 0x9052, 0x9050, 0x9068, 0x9058, 0x9062, 0x905B, 0x66B9,
- 0x9074, 0x907D, 0x9082, 0x9088, 0x9083, 0x908B, 0x5F50, 0x5F57,
- 0x5F56, 0x5F58, 0x5C3B, 0x54AB, 0x5C50, 0x5C59, 0x5B71, 0x5C63,
- 0x5C66, 0x7FBC, 0x5F2A, 0x5F29, 0x5F2D, 0x8274, 0x5F3C, 0x9B3B,
- 0x5C6E, 0x5981, 0x5983, 0x598D, 0x59A9, 0x59AA, 0x59A3,
- /* GB 0xE640..0xE67E */
- 0x936C, 0x936D, 0x936E, 0x936F, 0x9370, 0x9371, 0x9372, 0x9373,
- 0x9374, 0x9375, 0x9376, 0x9377, 0x9378, 0x9379, 0x937A, 0x937B,
- 0x937C, 0x937D, 0x937E, 0x937F, 0x9380, 0x9381, 0x9382, 0x9383,
- 0x9384, 0x9385, 0x9386, 0x9387, 0x9388, 0x9389, 0x938A, 0x938B,
- 0x938C, 0x938D, 0x938E, 0x9390, 0x9391, 0x9392, 0x9393, 0x9394,
- 0x9395, 0x9396, 0x9397, 0x9398, 0x9399, 0x939A, 0x939B, 0x939C,
- 0x939D, 0x939E, 0x939F, 0x93A0, 0x93A1, 0x93A2, 0x93A3, 0x93A4,
- 0x93A5, 0x93A6, 0x93A7, 0x93A8, 0x93A9, 0x93AA, 0x93AB,
- /* GB 0xE680..0xE6FE */
- 0x93AC, 0x93AD, 0x93AE, 0x93AF, 0x93B0, 0x93B1, 0x93B2, 0x93B3,
- 0x93B4, 0x93B5, 0x93B6, 0x93B7, 0x93B8, 0x93B9, 0x93BA, 0x93BB,
- 0x93BC, 0x93BD, 0x93BE, 0x93BF, 0x93C0, 0x93C1, 0x93C2, 0x93C3,
- 0x93C4, 0x93C5, 0x93C6, 0x93C7, 0x93C8, 0x93C9, 0x93CB, 0x93CC,
- 0x93CD, 0x5997, 0x59CA, 0x59AB, 0x599E, 0x59A4, 0x59D2, 0x59B2,
- 0x59AF, 0x59D7, 0x59BE, 0x5A05, 0x5A06, 0x59DD, 0x5A08, 0x59E3,
- 0x59D8, 0x59F9, 0x5A0C, 0x5A09, 0x5A32, 0x5A34, 0x5A11, 0x5A23,
- 0x5A13, 0x5A40, 0x5A67, 0x5A4A, 0x5A55, 0x5A3C, 0x5A62, 0x5A75,
- 0x80EC, 0x5AAA, 0x5A9B, 0x5A77, 0x5A7A, 0x5ABE, 0x5AEB, 0x5AB2,
- 0x5AD2, 0x5AD4, 0x5AB8, 0x5AE0, 0x5AE3, 0x5AF1, 0x5AD6, 0x5AE6,
- 0x5AD8, 0x5ADC, 0x5B09, 0x5B17, 0x5B16, 0x5B32, 0x5B37, 0x5B40,
- 0x5C15, 0x5C1C, 0x5B5A, 0x5B65, 0x5B73, 0x5B51, 0x5B53, 0x5B62,
- 0x9A75, 0x9A77, 0x9A78, 0x9A7A, 0x9A7F, 0x9A7D, 0x9A80, 0x9A81,
- 0x9A85, 0x9A88, 0x9A8A, 0x9A90, 0x9A92, 0x9A93, 0x9A96, 0x9A98,
- 0x9A9B, 0x9A9C, 0x9A9D, 0x9A9F, 0x9AA0, 0x9AA2, 0x9AA3, 0x9AA5,
- 0x9AA7, 0x7E9F, 0x7EA1, 0x7EA3, 0x7EA5, 0x7EA8, 0x7EA9,
- /* GB 0xE740..0xE77E */
- 0x93CE, 0x93CF, 0x93D0, 0x93D1, 0x93D2, 0x93D3, 0x93D4, 0x93D5,
- 0x93D7, 0x93D8, 0x93D9, 0x93DA, 0x93DB, 0x93DC, 0x93DD, 0x93DE,
- 0x93DF, 0x93E0, 0x93E1, 0x93E2, 0x93E3, 0x93E4, 0x93E5, 0x93E6,
- 0x93E7, 0x93E8, 0x93E9, 0x93EA, 0x93EB, 0x93EC, 0x93ED, 0x93EE,
- 0x93EF, 0x93F0, 0x93F1, 0x93F2, 0x93F3, 0x93F4, 0x93F5, 0x93F6,
- 0x93F7, 0x93F8, 0x93F9, 0x93FA, 0x93FB, 0x93FC, 0x93FD, 0x93FE,
- 0x93FF, 0x9400, 0x9401, 0x9402, 0x9403, 0x9404, 0x9405, 0x9406,
- 0x9407, 0x9408, 0x9409, 0x940A, 0x940B, 0x940C, 0x940D,
- /* GB 0xE780..0xE7FE */
- 0x940E, 0x940F, 0x9410, 0x9411, 0x9412, 0x9413, 0x9414, 0x9415,
- 0x9416, 0x9417, 0x9418, 0x9419, 0x941A, 0x941B, 0x941C, 0x941D,
- 0x941E, 0x941F, 0x9420, 0x9421, 0x9422, 0x9423, 0x9424, 0x9425,
- 0x9426, 0x9427, 0x9428, 0x9429, 0x942A, 0x942B, 0x942C, 0x942D,
- 0x942E, 0x7EAD, 0x7EB0, 0x7EBE, 0x7EC0, 0x7EC1, 0x7EC2, 0x7EC9,
- 0x7ECB, 0x7ECC, 0x7ED0, 0x7ED4, 0x7ED7, 0x7EDB, 0x7EE0, 0x7EE1,
- 0x7EE8, 0x7EEB, 0x7EEE, 0x7EEF, 0x7EF1, 0x7EF2, 0x7F0D, 0x7EF6,
- 0x7EFA, 0x7EFB, 0x7EFE, 0x7F01, 0x7F02, 0x7F03, 0x7F07, 0x7F08,
- 0x7F0B, 0x7F0C, 0x7F0F, 0x7F11, 0x7F12, 0x7F17, 0x7F19, 0x7F1C,
- 0x7F1B, 0x7F1F, 0x7F21, 0x7F22, 0x7F23, 0x7F24, 0x7F25, 0x7F26,
- 0x7F27, 0x7F2A, 0x7F2B, 0x7F2C, 0x7F2D, 0x7F2F, 0x7F30, 0x7F31,
- 0x7F32, 0x7F33, 0x7F35, 0x5E7A, 0x757F, 0x5DDB, 0x753E, 0x9095,
- 0x738E, 0x7391, 0x73AE, 0x73A2, 0x739F, 0x73CF, 0x73C2, 0x73D1,
- 0x73B7, 0x73B3, 0x73C0, 0x73C9, 0x73C8, 0x73E5, 0x73D9, 0x987C,
- 0x740A, 0x73E9, 0x73E7, 0x73DE, 0x73BA, 0x73F2, 0x740F, 0x742A,
- 0x745B, 0x7426, 0x7425, 0x7428, 0x7430, 0x742E, 0x742C,
- /* GB 0xE840..0xE87E */
- 0x942F, 0x9430, 0x9431, 0x9432, 0x9433, 0x9434, 0x9435, 0x9436,
- 0x9437, 0x9438, 0x9439, 0x943A, 0x943B, 0x943C, 0x943D, 0x943F,
- 0x9440, 0x9441, 0x9442, 0x9443, 0x9444, 0x9445, 0x9446, 0x9447,
- 0x9448, 0x9449, 0x944A, 0x944B, 0x944C, 0x944D, 0x944E, 0x944F,
- 0x9450, 0x9451, 0x9452, 0x9453, 0x9454, 0x9455, 0x9456, 0x9457,
- 0x9458, 0x9459, 0x945A, 0x945B, 0x945C, 0x945D, 0x945E, 0x945F,
- 0x9460, 0x9461, 0x9462, 0x9463, 0x9464, 0x9465, 0x9466, 0x9467,
- 0x9468, 0x9469, 0x946A, 0x946C, 0x946D, 0x946E, 0x946F,
- /* GB 0xE880..0xE8FE */
- 0x9470, 0x9471, 0x9472, 0x9473, 0x9474, 0x9475, 0x9476, 0x9477,
- 0x9478, 0x9479, 0x947A, 0x947B, 0x947C, 0x947D, 0x947E, 0x947F,
- 0x9480, 0x9481, 0x9482, 0x9483, 0x9484, 0x9491, 0x9496, 0x9498,
- 0x94C7, 0x94CF, 0x94D3, 0x94D4, 0x94DA, 0x94E6, 0x94FB, 0x951C,
- 0x9520, 0x741B, 0x741A, 0x7441, 0x745C, 0x7457, 0x7455, 0x7459,
- 0x7477, 0x746D, 0x747E, 0x749C, 0x748E, 0x7480, 0x7481, 0x7487,
- 0x748B, 0x749E, 0x74A8, 0x74A9, 0x7490, 0x74A7, 0x74D2, 0x74BA,
- 0x97EA, 0x97EB, 0x97EC, 0x674C, 0x6753, 0x675E, 0x6748, 0x6769,
- 0x67A5, 0x6787, 0x676A, 0x6773, 0x6798, 0x67A7, 0x6775, 0x67A8,
- 0x679E, 0x67AD, 0x678B, 0x6777, 0x677C, 0x67F0, 0x6809, 0x67D8,
- 0x680A, 0x67E9, 0x67B0, 0x680C, 0x67D9, 0x67B5, 0x67DA, 0x67B3,
- 0x67DD, 0x6800, 0x67C3, 0x67B8, 0x67E2, 0x680E, 0x67C1, 0x67FD,
- 0x6832, 0x6833, 0x6860, 0x6861, 0x684E, 0x6862, 0x6844, 0x6864,
- 0x6883, 0x681D, 0x6855, 0x6866, 0x6841, 0x6867, 0x6840, 0x683E,
- 0x684A, 0x6849, 0x6829, 0x68B5, 0x688F, 0x6874, 0x6877, 0x6893,
- 0x686B, 0x68C2, 0x696E, 0x68FC, 0x691F, 0x6920, 0x68F9,
- /* GB 0xE940..0xE97E */
- 0x9527, 0x9533, 0x953D, 0x9543, 0x9548, 0x954B, 0x9555, 0x955A,
- 0x9560, 0x956E, 0x9574, 0x9575, 0x9577, 0x9578, 0x9579, 0x957A,
- 0x957B, 0x957C, 0x957D, 0x957E, 0x9580, 0x9581, 0x9582, 0x9583,
- 0x9584, 0x9585, 0x9586, 0x9587, 0x9588, 0x9589, 0x958A, 0x958B,
- 0x958C, 0x958D, 0x958E, 0x958F, 0x9590, 0x9591, 0x9592, 0x9593,
- 0x9594, 0x9595, 0x9596, 0x9597, 0x9598, 0x9599, 0x959A, 0x959B,
- 0x959C, 0x959D, 0x959E, 0x959F, 0x95A0, 0x95A1, 0x95A2, 0x95A3,
- 0x95A4, 0x95A5, 0x95A6, 0x95A7, 0x95A8, 0x95A9, 0x95AA,
- /* GB 0xE980..0xE9FE */
- 0x95AB, 0x95AC, 0x95AD, 0x95AE, 0x95AF, 0x95B0, 0x95B1, 0x95B2,
- 0x95B3, 0x95B4, 0x95B5, 0x95B6, 0x95B7, 0x95B8, 0x95B9, 0x95BA,
- 0x95BB, 0x95BC, 0x95BD, 0x95BE, 0x95BF, 0x95C0, 0x95C1, 0x95C2,
- 0x95C3, 0x95C4, 0x95C5, 0x95C6, 0x95C7, 0x95C8, 0x95C9, 0x95CA,
- 0x95CB, 0x6924, 0x68F0, 0x690B, 0x6901, 0x6957, 0x68E3, 0x6910,
- 0x6971, 0x6939, 0x6960, 0x6942, 0x695D, 0x6984, 0x696B, 0x6980,
- 0x6998, 0x6978, 0x6934, 0x69CC, 0x6987, 0x6988, 0x69CE, 0x6989,
- 0x6966, 0x6963, 0x6979, 0x699B, 0x69A7, 0x69BB, 0x69AB, 0x69AD,
- 0x69D4, 0x69B1, 0x69C1, 0x69CA, 0x69DF, 0x6995, 0x69E0, 0x698D,
- 0x69FF, 0x6A2F, 0x69ED, 0x6A17, 0x6A18, 0x6A65, 0x69F2, 0x6A44,
- 0x6A3E, 0x6AA0, 0x6A50, 0x6A5B, 0x6A35, 0x6A8E, 0x6A79, 0x6A3D,
- 0x6A28, 0x6A58, 0x6A7C, 0x6A91, 0x6A90, 0x6AA9, 0x6A97, 0x6AAB,
- 0x7337, 0x7352, 0x6B81, 0x6B82, 0x6B87, 0x6B84, 0x6B92, 0x6B93,
- 0x6B8D, 0x6B9A, 0x6B9B, 0x6BA1, 0x6BAA, 0x8F6B, 0x8F6D, 0x8F71,
- 0x8F72, 0x8F73, 0x8F75, 0x8F76, 0x8F78, 0x8F77, 0x8F79, 0x8F7A,
- 0x8F7C, 0x8F7E, 0x8F81, 0x8F82, 0x8F84, 0x8F87, 0x8F8B,
- /* GB 0xEA40..0xEA7E */
- 0x95CC, 0x95CD, 0x95CE, 0x95CF, 0x95D0, 0x95D1, 0x95D2, 0x95D3,
- 0x95D4, 0x95D5, 0x95D6, 0x95D7, 0x95D8, 0x95D9, 0x95DA, 0x95DB,
- 0x95DC, 0x95DD, 0x95DE, 0x95DF, 0x95E0, 0x95E1, 0x95E2, 0x95E3,
- 0x95E4, 0x95E5, 0x95E6, 0x95E7, 0x95EC, 0x95FF, 0x9607, 0x9613,
- 0x9618, 0x961B, 0x961E, 0x9620, 0x9623, 0x9624, 0x9625, 0x9626,
- 0x9627, 0x9628, 0x9629, 0x962B, 0x962C, 0x962D, 0x962F, 0x9630,
- 0x9637, 0x9638, 0x9639, 0x963A, 0x963E, 0x9641, 0x9643, 0x964A,
- 0x964E, 0x964F, 0x9651, 0x9652, 0x9653, 0x9656, 0x9657,
- /* GB 0xEA80..0xEAFE */
- 0x9658, 0x9659, 0x965A, 0x965C, 0x965D, 0x965E, 0x9660, 0x9663,
- 0x9665, 0x9666, 0x966B, 0x966D, 0x966E, 0x966F, 0x9670, 0x9671,
- 0x9673, 0x9678, 0x9679, 0x967A, 0x967B, 0x967C, 0x967D, 0x967E,
- 0x967F, 0x9680, 0x9681, 0x9682, 0x9683, 0x9684, 0x9687, 0x9689,
- 0x968A, 0x8F8D, 0x8F8E, 0x8F8F, 0x8F98, 0x8F9A, 0x8ECE, 0x620B,
- 0x6217, 0x621B, 0x621F, 0x6222, 0x6221, 0x6225, 0x6224, 0x622C,
- 0x81E7, 0x74EF, 0x74F4, 0x74FF, 0x750F, 0x7511, 0x7513, 0x6534,
- 0x65EE, 0x65EF, 0x65F0, 0x660A, 0x6619, 0x6772, 0x6603, 0x6615,
- 0x6600, 0x7085, 0x66F7, 0x661D, 0x6634, 0x6631, 0x6636, 0x6635,
- 0x8006, 0x665F, 0x6654, 0x6641, 0x664F, 0x6656, 0x6661, 0x6657,
- 0x6677, 0x6684, 0x668C, 0x66A7, 0x669D, 0x66BE, 0x66DB, 0x66DC,
- 0x66E6, 0x66E9, 0x8D32, 0x8D33, 0x8D36, 0x8D3B, 0x8D3D, 0x8D40,
- 0x8D45, 0x8D46, 0x8D48, 0x8D49, 0x8D47, 0x8D4D, 0x8D55, 0x8D59,
- 0x89C7, 0x89CA, 0x89CB, 0x89CC, 0x89CE, 0x89CF, 0x89D0, 0x89D1,
- 0x726E, 0x729F, 0x725D, 0x7266, 0x726F, 0x727E, 0x727F, 0x7284,
- 0x728B, 0x728D, 0x728F, 0x7292, 0x6308, 0x6332, 0x63B0,
- /* GB 0xEB40..0xEB7E */
- 0x968C, 0x968E, 0x9691, 0x9692, 0x9693, 0x9695, 0x9696, 0x969A,
- 0x969B, 0x969D, 0x969E, 0x969F, 0x96A0, 0x96A1, 0x96A2, 0x96A3,
- 0x96A4, 0x96A5, 0x96A6, 0x96A8, 0x96A9, 0x96AA, 0x96AB, 0x96AC,
- 0x96AD, 0x96AE, 0x96AF, 0x96B1, 0x96B2, 0x96B4, 0x96B5, 0x96B7,
- 0x96B8, 0x96BA, 0x96BB, 0x96BF, 0x96C2, 0x96C3, 0x96C8, 0x96CA,
- 0x96CB, 0x96D0, 0x96D1, 0x96D3, 0x96D4, 0x96D6, 0x96D7, 0x96D8,
- 0x96D9, 0x96DA, 0x96DB, 0x96DC, 0x96DD, 0x96DE, 0x96DF, 0x96E1,
- 0x96E2, 0x96E3, 0x96E4, 0x96E5, 0x96E6, 0x96E7, 0x96EB,
- /* GB 0xEB80..0xEBFE */
- 0x96EC, 0x96ED, 0x96EE, 0x96F0, 0x96F1, 0x96F2, 0x96F4, 0x96F5,
- 0x96F8, 0x96FA, 0x96FB, 0x96FC, 0x96FD, 0x96FF, 0x9702, 0x9703,
- 0x9705, 0x970A, 0x970B, 0x970C, 0x9710, 0x9711, 0x9712, 0x9714,
- 0x9715, 0x9717, 0x9718, 0x9719, 0x971A, 0x971B, 0x971D, 0x971F,
- 0x9720, 0x643F, 0x64D8, 0x8004, 0x6BEA, 0x6BF3, 0x6BFD, 0x6BF5,
- 0x6BF9, 0x6C05, 0x6C07, 0x6C06, 0x6C0D, 0x6C15, 0x6C18, 0x6C19,
- 0x6C1A, 0x6C21, 0x6C29, 0x6C24, 0x6C2A, 0x6C32, 0x6535, 0x6555,
- 0x656B, 0x724D, 0x7252, 0x7256, 0x7230, 0x8662, 0x5216, 0x809F,
- 0x809C, 0x8093, 0x80BC, 0x670A, 0x80BD, 0x80B1, 0x80AB, 0x80AD,
- 0x80B4, 0x80B7, 0x80E7, 0x80E8, 0x80E9, 0x80EA, 0x80DB, 0x80C2,
- 0x80C4, 0x80D9, 0x80CD, 0x80D7, 0x6710, 0x80DD, 0x80EB, 0x80F1,
- 0x80F4, 0x80ED, 0x810D, 0x810E, 0x80F2, 0x80FC, 0x6715, 0x8112,
- 0x8C5A, 0x8136, 0x811E, 0x812C, 0x8118, 0x8132, 0x8148, 0x814C,
- 0x8153, 0x8174, 0x8159, 0x815A, 0x8171, 0x8160, 0x8169, 0x817C,
- 0x817D, 0x816D, 0x8167, 0x584D, 0x5AB5, 0x8188, 0x8182, 0x8191,
- 0x6ED5, 0x81A3, 0x81AA, 0x81CC, 0x6726, 0x81CA, 0x81BB,
- /* GB 0xEC40..0xEC7E */
- 0x9721, 0x9722, 0x9723, 0x9724, 0x9725, 0x9726, 0x9727, 0x9728,
- 0x9729, 0x972B, 0x972C, 0x972E, 0x972F, 0x9731, 0x9733, 0x9734,
- 0x9735, 0x9736, 0x9737, 0x973A, 0x973B, 0x973C, 0x973D, 0x973F,
- 0x9740, 0x9741, 0x9742, 0x9743, 0x9744, 0x9745, 0x9746, 0x9747,
- 0x9748, 0x9749, 0x974A, 0x974B, 0x974C, 0x974D, 0x974E, 0x974F,
- 0x9750, 0x9751, 0x9754, 0x9755, 0x9757, 0x9758, 0x975A, 0x975C,
- 0x975D, 0x975F, 0x9763, 0x9764, 0x9766, 0x9767, 0x9768, 0x976A,
- 0x976B, 0x976C, 0x976D, 0x976E, 0x976F, 0x9770, 0x9771,
- /* GB 0xEC80..0xECFE */
- 0x9772, 0x9775, 0x9777, 0x9778, 0x9779, 0x977A, 0x977B, 0x977D,
- 0x977E, 0x977F, 0x9780, 0x9781, 0x9782, 0x9783, 0x9784, 0x9786,
- 0x9787, 0x9788, 0x9789, 0x978A, 0x978C, 0x978E, 0x978F, 0x9790,
- 0x9793, 0x9795, 0x9796, 0x9797, 0x9799, 0x979A, 0x979B, 0x979C,
- 0x979D, 0x81C1, 0x81A6, 0x6B24, 0x6B37, 0x6B39, 0x6B43, 0x6B46,
- 0x6B59, 0x98D1, 0x98D2, 0x98D3, 0x98D5, 0x98D9, 0x98DA, 0x6BB3,
- 0x5F40, 0x6BC2, 0x89F3, 0x6590, 0x9F51, 0x6593, 0x65BC, 0x65C6,
- 0x65C4, 0x65C3, 0x65CC, 0x65CE, 0x65D2, 0x65D6, 0x7080, 0x709C,
- 0x7096, 0x709D, 0x70BB, 0x70C0, 0x70B7, 0x70AB, 0x70B1, 0x70E8,
- 0x70CA, 0x7110, 0x7113, 0x7116, 0x712F, 0x7131, 0x7173, 0x715C,
- 0x7168, 0x7145, 0x7172, 0x714A, 0x7178, 0x717A, 0x7198, 0x71B3,
- 0x71B5, 0x71A8, 0x71A0, 0x71E0, 0x71D4, 0x71E7, 0x71F9, 0x721D,
- 0x7228, 0x706C, 0x7118, 0x7166, 0x71B9, 0x623E, 0x623D, 0x6243,
- 0x6248, 0x6249, 0x793B, 0x7940, 0x7946, 0x7949, 0x795B, 0x795C,
- 0x7953, 0x795A, 0x7962, 0x7957, 0x7960, 0x796F, 0x7967, 0x797A,
- 0x7985, 0x798A, 0x799A, 0x79A7, 0x79B3, 0x5FD1, 0x5FD0,
- /* GB 0xED40..0xED7E */
- 0x979E, 0x979F, 0x97A1, 0x97A2, 0x97A4, 0x97A5, 0x97A6, 0x97A7,
- 0x97A8, 0x97A9, 0x97AA, 0x97AC, 0x97AE, 0x97B0, 0x97B1, 0x97B3,
- 0x97B5, 0x97B6, 0x97B7, 0x97B8, 0x97B9, 0x97BA, 0x97BB, 0x97BC,
- 0x97BD, 0x97BE, 0x97BF, 0x97C0, 0x97C1, 0x97C2, 0x97C3, 0x97C4,
- 0x97C5, 0x97C6, 0x97C7, 0x97C8, 0x97C9, 0x97CA, 0x97CB, 0x97CC,
- 0x97CD, 0x97CE, 0x97CF, 0x97D0, 0x97D1, 0x97D2, 0x97D3, 0x97D4,
- 0x97D5, 0x97D6, 0x97D7, 0x97D8, 0x97D9, 0x97DA, 0x97DB, 0x97DC,
- 0x97DD, 0x97DE, 0x97DF, 0x97E0, 0x97E1, 0x97E2, 0x97E3,
- /* GB 0xED80..0xEDFE */
- 0x97E4, 0x97E5, 0x97E8, 0x97EE, 0x97EF, 0x97F0, 0x97F1, 0x97F2,
- 0x97F4, 0x97F7, 0x97F8, 0x97F9, 0x97FA, 0x97FB, 0x97FC, 0x97FD,
- 0x97FE, 0x97FF, 0x9800, 0x9801, 0x9802, 0x9803, 0x9804, 0x9805,
- 0x9806, 0x9807, 0x9808, 0x9809, 0x980A, 0x980B, 0x980C, 0x980D,
- 0x980E, 0x603C, 0x605D, 0x605A, 0x6067, 0x6041, 0x6059, 0x6063,
- 0x60AB, 0x6106, 0x610D, 0x615D, 0x61A9, 0x619D, 0x61CB, 0x61D1,
- 0x6206, 0x8080, 0x807F, 0x6C93, 0x6CF6, 0x6DFC, 0x77F6, 0x77F8,
- 0x7800, 0x7809, 0x7817, 0x7818, 0x7811, 0x65AB, 0x782D, 0x781C,
- 0x781D, 0x7839, 0x783A, 0x783B, 0x781F, 0x783C, 0x7825, 0x782C,
- 0x7823, 0x7829, 0x784E, 0x786D, 0x7856, 0x7857, 0x7826, 0x7850,
- 0x7847, 0x784C, 0x786A, 0x789B, 0x7893, 0x789A, 0x7887, 0x789C,
- 0x78A1, 0x78A3, 0x78B2, 0x78B9, 0x78A5, 0x78D4, 0x78D9, 0x78C9,
- 0x78EC, 0x78F2, 0x7905, 0x78F4, 0x7913, 0x7924, 0x791E, 0x7934,
- 0x9F9B, 0x9EF9, 0x9EFB, 0x9EFC, 0x76F1, 0x7704, 0x770D, 0x76F9,
- 0x7707, 0x7708, 0x771A, 0x7722, 0x7719, 0x772D, 0x7726, 0x7735,
- 0x7738, 0x7750, 0x7751, 0x7747, 0x7743, 0x775A, 0x7768,
- /* GB 0xEE40..0xEE7E */
- 0x980F, 0x9810, 0x9811, 0x9812, 0x9813, 0x9814, 0x9815, 0x9816,
- 0x9817, 0x9818, 0x9819, 0x981A, 0x981B, 0x981C, 0x981D, 0x981E,
- 0x981F, 0x9820, 0x9821, 0x9822, 0x9823, 0x9824, 0x9825, 0x9826,
- 0x9827, 0x9828, 0x9829, 0x982A, 0x982B, 0x982C, 0x982D, 0x982E,
- 0x982F, 0x9830, 0x9831, 0x9832, 0x9833, 0x9834, 0x9835, 0x9836,
- 0x9837, 0x9838, 0x9839, 0x983A, 0x983B, 0x983C, 0x983D, 0x983E,
- 0x983F, 0x9840, 0x9841, 0x9842, 0x9843, 0x9844, 0x9845, 0x9846,
- 0x9847, 0x9848, 0x9849, 0x984A, 0x984B, 0x984C, 0x984D,
- /* GB 0xEE80..0xEEFE */
- 0x984E, 0x984F, 0x9850, 0x9851, 0x9852, 0x9853, 0x9854, 0x9855,
- 0x9856, 0x9857, 0x9858, 0x9859, 0x985A, 0x985B, 0x985C, 0x985D,
- 0x985E, 0x985F, 0x9860, 0x9861, 0x9862, 0x9863, 0x9864, 0x9865,
- 0x9866, 0x9867, 0x9868, 0x9869, 0x986A, 0x986B, 0x986C, 0x986D,
- 0x986E, 0x7762, 0x7765, 0x777F, 0x778D, 0x777D, 0x7780, 0x778C,
- 0x7791, 0x779F, 0x77A0, 0x77B0, 0x77B5, 0x77BD, 0x753A, 0x7540,
- 0x754E, 0x754B, 0x7548, 0x755B, 0x7572, 0x7579, 0x7583, 0x7F58,
- 0x7F61, 0x7F5F, 0x8A48, 0x7F68, 0x7F74, 0x7F71, 0x7F79, 0x7F81,
- 0x7F7E, 0x76CD, 0x76E5, 0x8832, 0x9485, 0x9486, 0x9487, 0x948B,
- 0x948A, 0x948C, 0x948D, 0x948F, 0x9490, 0x9494, 0x9497, 0x9495,
- 0x949A, 0x949B, 0x949C, 0x94A3, 0x94A4, 0x94AB, 0x94AA, 0x94AD,
- 0x94AC, 0x94AF, 0x94B0, 0x94B2, 0x94B4, 0x94B6, 0x94B7, 0x94B8,
- 0x94B9, 0x94BA, 0x94BC, 0x94BD, 0x94BF, 0x94C4, 0x94C8, 0x94C9,
- 0x94CA, 0x94CB, 0x94CC, 0x94CD, 0x94CE, 0x94D0, 0x94D1, 0x94D2,
- 0x94D5, 0x94D6, 0x94D7, 0x94D9, 0x94D8, 0x94DB, 0x94DE, 0x94DF,
- 0x94E0, 0x94E2, 0x94E4, 0x94E5, 0x94E7, 0x94E8, 0x94EA,
- /* GB 0xEF40..0xEF7E */
- 0x986F, 0x9870, 0x9871, 0x9872, 0x9873, 0x9874, 0x988B, 0x988E,
- 0x9892, 0x9895, 0x9899, 0x98A3, 0x98A8, 0x98A9, 0x98AA, 0x98AB,
- 0x98AC, 0x98AD, 0x98AE, 0x98AF, 0x98B0, 0x98B1, 0x98B2, 0x98B3,
- 0x98B4, 0x98B5, 0x98B6, 0x98B7, 0x98B8, 0x98B9, 0x98BA, 0x98BB,
- 0x98BC, 0x98BD, 0x98BE, 0x98BF, 0x98C0, 0x98C1, 0x98C2, 0x98C3,
- 0x98C4, 0x98C5, 0x98C6, 0x98C7, 0x98C8, 0x98C9, 0x98CA, 0x98CB,
- 0x98CC, 0x98CD, 0x98CF, 0x98D0, 0x98D4, 0x98D6, 0x98D7, 0x98DB,
- 0x98DC, 0x98DD, 0x98E0, 0x98E1, 0x98E2, 0x98E3, 0x98E4,
- /* GB 0xEF80..0xEFFE */
- 0x98E5, 0x98E6, 0x98E9, 0x98EA, 0x98EB, 0x98EC, 0x98ED, 0x98EE,
- 0x98EF, 0x98F0, 0x98F1, 0x98F2, 0x98F3, 0x98F4, 0x98F5, 0x98F6,
- 0x98F7, 0x98F8, 0x98F9, 0x98FA, 0x98FB, 0x98FC, 0x98FD, 0x98FE,
- 0x98FF, 0x9900, 0x9901, 0x9902, 0x9903, 0x9904, 0x9905, 0x9906,
- 0x9907, 0x94E9, 0x94EB, 0x94EE, 0x94EF, 0x94F3, 0x94F4, 0x94F5,
- 0x94F7, 0x94F9, 0x94FC, 0x94FD, 0x94FF, 0x9503, 0x9502, 0x9506,
- 0x9507, 0x9509, 0x950A, 0x950D, 0x950E, 0x950F, 0x9512, 0x9513,
- 0x9514, 0x9515, 0x9516, 0x9518, 0x951B, 0x951D, 0x951E, 0x951F,
- 0x9522, 0x952A, 0x952B, 0x9529, 0x952C, 0x9531, 0x9532, 0x9534,
- 0x9536, 0x9537, 0x9538, 0x953C, 0x953E, 0x953F, 0x9542, 0x9535,
- 0x9544, 0x9545, 0x9546, 0x9549, 0x954C, 0x954E, 0x954F, 0x9552,
- 0x9553, 0x9554, 0x9556, 0x9557, 0x9558, 0x9559, 0x955B, 0x955E,
- 0x955F, 0x955D, 0x9561, 0x9562, 0x9564, 0x9565, 0x9566, 0x9567,
- 0x9568, 0x9569, 0x956A, 0x956B, 0x956C, 0x956F, 0x9571, 0x9572,
- 0x9573, 0x953A, 0x77E7, 0x77EC, 0x96C9, 0x79D5, 0x79ED, 0x79E3,
- 0x79EB, 0x7A06, 0x5D47, 0x7A03, 0x7A02, 0x7A1E, 0x7A14,
- /* GB 0xF040..0xF07E */
- 0x9908, 0x9909, 0x990A, 0x990B, 0x990C, 0x990E, 0x990F, 0x9911,
- 0x9912, 0x9913, 0x9914, 0x9915, 0x9916, 0x9917, 0x9918, 0x9919,
- 0x991A, 0x991B, 0x991C, 0x991D, 0x991E, 0x991F, 0x9920, 0x9921,
- 0x9922, 0x9923, 0x9924, 0x9925, 0x9926, 0x9927, 0x9928, 0x9929,
- 0x992A, 0x992B, 0x992C, 0x992D, 0x992F, 0x9930, 0x9931, 0x9932,
- 0x9933, 0x9934, 0x9935, 0x9936, 0x9937, 0x9938, 0x9939, 0x993A,
- 0x993B, 0x993C, 0x993D, 0x993E, 0x993F, 0x9940, 0x9941, 0x9942,
- 0x9943, 0x9944, 0x9945, 0x9946, 0x9947, 0x9948, 0x9949,
- /* GB 0xF080..0xF0FE */
- 0x994A, 0x994B, 0x994C, 0x994D, 0x994E, 0x994F, 0x9950, 0x9951,
- 0x9952, 0x9953, 0x9956, 0x9957, 0x9958, 0x9959, 0x995A, 0x995B,
- 0x995C, 0x995D, 0x995E, 0x995F, 0x9960, 0x9961, 0x9962, 0x9964,
- 0x9966, 0x9973, 0x9978, 0x9979, 0x997B, 0x997E, 0x9982, 0x9983,
- 0x9989, 0x7A39, 0x7A37, 0x7A51, 0x9ECF, 0x99A5, 0x7A70, 0x7688,
- 0x768E, 0x7693, 0x7699, 0x76A4, 0x74DE, 0x74E0, 0x752C, 0x9E20,
- 0x9E22, 0x9E28, 0x9E29, 0x9E2A, 0x9E2B, 0x9E2C, 0x9E32, 0x9E31,
- 0x9E36, 0x9E38, 0x9E37, 0x9E39, 0x9E3A, 0x9E3E, 0x9E41, 0x9E42,
- 0x9E44, 0x9E46, 0x9E47, 0x9E48, 0x9E49, 0x9E4B, 0x9E4C, 0x9E4E,
- 0x9E51, 0x9E55, 0x9E57, 0x9E5A, 0x9E5B, 0x9E5C, 0x9E5E, 0x9E63,
- 0x9E66, 0x9E67, 0x9E68, 0x9E69, 0x9E6A, 0x9E6B, 0x9E6C, 0x9E71,
- 0x9E6D, 0x9E73, 0x7592, 0x7594, 0x7596, 0x75A0, 0x759D, 0x75AC,
- 0x75A3, 0x75B3, 0x75B4, 0x75B8, 0x75C4, 0x75B1, 0x75B0, 0x75C3,
- 0x75C2, 0x75D6, 0x75CD, 0x75E3, 0x75E8, 0x75E6, 0x75E4, 0x75EB,
- 0x75E7, 0x7603, 0x75F1, 0x75FC, 0x75FF, 0x7610, 0x7600, 0x7605,
- 0x760C, 0x7617, 0x760A, 0x7625, 0x7618, 0x7615, 0x7619,
- /* GB 0xF140..0xF17E */
- 0x998C, 0x998E, 0x999A, 0x999B, 0x999C, 0x999D, 0x999E, 0x999F,
- 0x99A0, 0x99A1, 0x99A2, 0x99A3, 0x99A4, 0x99A6, 0x99A7, 0x99A9,
- 0x99AA, 0x99AB, 0x99AC, 0x99AD, 0x99AE, 0x99AF, 0x99B0, 0x99B1,
- 0x99B2, 0x99B3, 0x99B4, 0x99B5, 0x99B6, 0x99B7, 0x99B8, 0x99B9,
- 0x99BA, 0x99BB, 0x99BC, 0x99BD, 0x99BE, 0x99BF, 0x99C0, 0x99C1,
- 0x99C2, 0x99C3, 0x99C4, 0x99C5, 0x99C6, 0x99C7, 0x99C8, 0x99C9,
- 0x99CA, 0x99CB, 0x99CC, 0x99CD, 0x99CE, 0x99CF, 0x99D0, 0x99D1,
- 0x99D2, 0x99D3, 0x99D4, 0x99D5, 0x99D6, 0x99D7, 0x99D8,
- /* GB 0xF180..0xF1FE */
- 0x99D9, 0x99DA, 0x99DB, 0x99DC, 0x99DD, 0x99DE, 0x99DF, 0x99E0,
- 0x99E1, 0x99E2, 0x99E3, 0x99E4, 0x99E5, 0x99E6, 0x99E7, 0x99E8,
- 0x99E9, 0x99EA, 0x99EB, 0x99EC, 0x99ED, 0x99EE, 0x99EF, 0x99F0,
- 0x99F1, 0x99F2, 0x99F3, 0x99F4, 0x99F5, 0x99F6, 0x99F7, 0x99F8,
- 0x99F9, 0x761B, 0x763C, 0x7622, 0x7620, 0x7640, 0x762D, 0x7630,
- 0x763F, 0x7635, 0x7643, 0x763E, 0x7633, 0x764D, 0x765E, 0x7654,
- 0x765C, 0x7656, 0x766B, 0x766F, 0x7FCA, 0x7AE6, 0x7A78, 0x7A79,
- 0x7A80, 0x7A86, 0x7A88, 0x7A95, 0x7AA6, 0x7AA0, 0x7AAC, 0x7AA8,
- 0x7AAD, 0x7AB3, 0x8864, 0x8869, 0x8872, 0x887D, 0x887F, 0x8882,
- 0x88A2, 0x88C6, 0x88B7, 0x88BC, 0x88C9, 0x88E2, 0x88CE, 0x88E3,
- 0x88E5, 0x88F1, 0x891A, 0x88FC, 0x88E8, 0x88FE, 0x88F0, 0x8921,
- 0x8919, 0x8913, 0x891B, 0x890A, 0x8934, 0x892B, 0x8936, 0x8941,
- 0x8966, 0x897B, 0x758B, 0x80E5, 0x76B2, 0x76B4, 0x77DC, 0x8012,
- 0x8014, 0x8016, 0x801C, 0x8020, 0x8022, 0x8025, 0x8026, 0x8027,
- 0x8029, 0x8028, 0x8031, 0x800B, 0x8035, 0x8043, 0x8046, 0x804D,
- 0x8052, 0x8069, 0x8071, 0x8983, 0x9878, 0x9880, 0x9883,
- /* GB 0xF240..0xF27E */
- 0x99FA, 0x99FB, 0x99FC, 0x99FD, 0x99FE, 0x99FF, 0x9A00, 0x9A01,
- 0x9A02, 0x9A03, 0x9A04, 0x9A05, 0x9A06, 0x9A07, 0x9A08, 0x9A09,
- 0x9A0A, 0x9A0B, 0x9A0C, 0x9A0D, 0x9A0E, 0x9A0F, 0x9A10, 0x9A11,
- 0x9A12, 0x9A13, 0x9A14, 0x9A15, 0x9A16, 0x9A17, 0x9A18, 0x9A19,
- 0x9A1A, 0x9A1B, 0x9A1C, 0x9A1D, 0x9A1E, 0x9A1F, 0x9A20, 0x9A21,
- 0x9A22, 0x9A23, 0x9A24, 0x9A25, 0x9A26, 0x9A27, 0x9A28, 0x9A29,
- 0x9A2A, 0x9A2B, 0x9A2C, 0x9A2D, 0x9A2E, 0x9A2F, 0x9A30, 0x9A31,
- 0x9A32, 0x9A33, 0x9A34, 0x9A35, 0x9A36, 0x9A37, 0x9A38,
- /* GB 0xF280..0xF2FE */
- 0x9A39, 0x9A3A, 0x9A3B, 0x9A3C, 0x9A3D, 0x9A3E, 0x9A3F, 0x9A40,
- 0x9A41, 0x9A42, 0x9A43, 0x9A44, 0x9A45, 0x9A46, 0x9A47, 0x9A48,
- 0x9A49, 0x9A4A, 0x9A4B, 0x9A4C, 0x9A4D, 0x9A4E, 0x9A4F, 0x9A50,
- 0x9A51, 0x9A52, 0x9A53, 0x9A54, 0x9A55, 0x9A56, 0x9A57, 0x9A58,
- 0x9A59, 0x9889, 0x988C, 0x988D, 0x988F, 0x9894, 0x989A, 0x989B,
- 0x989E, 0x989F, 0x98A1, 0x98A2, 0x98A5, 0x98A6, 0x864D, 0x8654,
- 0x866C, 0x866E, 0x867F, 0x867A, 0x867C, 0x867B, 0x86A8, 0x868D,
- 0x868B, 0x86AC, 0x869D, 0x86A7, 0x86A3, 0x86AA, 0x8693, 0x86A9,
- 0x86B6, 0x86C4, 0x86B5, 0x86CE, 0x86B0, 0x86BA, 0x86B1, 0x86AF,
- 0x86C9, 0x86CF, 0x86B4, 0x86E9, 0x86F1, 0x86F2, 0x86ED, 0x86F3,
- 0x86D0, 0x8713, 0x86DE, 0x86F4, 0x86DF, 0x86D8, 0x86D1, 0x8703,
- 0x8707, 0x86F8, 0x8708, 0x870A, 0x870D, 0x8709, 0x8723, 0x873B,
- 0x871E, 0x8725, 0x872E, 0x871A, 0x873E, 0x8748, 0x8734, 0x8731,
- 0x8729, 0x8737, 0x873F, 0x8782, 0x8722, 0x877D, 0x877E, 0x877B,
- 0x8760, 0x8770, 0x874C, 0x876E, 0x878B, 0x8753, 0x8763, 0x877C,
- 0x8764, 0x8759, 0x8765, 0x8793, 0x87AF, 0x87A8, 0x87D2,
- /* GB 0xF340..0xF37E */
- 0x9A5A, 0x9A5B, 0x9A5C, 0x9A5D, 0x9A5E, 0x9A5F, 0x9A60, 0x9A61,
- 0x9A62, 0x9A63, 0x9A64, 0x9A65, 0x9A66, 0x9A67, 0x9A68, 0x9A69,
- 0x9A6A, 0x9A6B, 0x9A72, 0x9A83, 0x9A89, 0x9A8D, 0x9A8E, 0x9A94,
- 0x9A95, 0x9A99, 0x9AA6, 0x9AA9, 0x9AAA, 0x9AAB, 0x9AAC, 0x9AAD,
- 0x9AAE, 0x9AAF, 0x9AB2, 0x9AB3, 0x9AB4, 0x9AB5, 0x9AB9, 0x9ABB,
- 0x9ABD, 0x9ABE, 0x9ABF, 0x9AC3, 0x9AC4, 0x9AC6, 0x9AC7, 0x9AC8,
- 0x9AC9, 0x9ACA, 0x9ACD, 0x9ACE, 0x9ACF, 0x9AD0, 0x9AD2, 0x9AD4,
- 0x9AD5, 0x9AD6, 0x9AD7, 0x9AD9, 0x9ADA, 0x9ADB, 0x9ADC,
- /* GB 0xF380..0xF3FE */
- 0x9ADD, 0x9ADE, 0x9AE0, 0x9AE2, 0x9AE3, 0x9AE4, 0x9AE5, 0x9AE7,
- 0x9AE8, 0x9AE9, 0x9AEA, 0x9AEC, 0x9AEE, 0x9AF0, 0x9AF1, 0x9AF2,
- 0x9AF3, 0x9AF4, 0x9AF5, 0x9AF6, 0x9AF7, 0x9AF8, 0x9AFA, 0x9AFC,
- 0x9AFD, 0x9AFE, 0x9AFF, 0x9B00, 0x9B01, 0x9B02, 0x9B04, 0x9B05,
- 0x9B06, 0x87C6, 0x8788, 0x8785, 0x87AD, 0x8797, 0x8783, 0x87AB,
- 0x87E5, 0x87AC, 0x87B5, 0x87B3, 0x87CB, 0x87D3, 0x87BD, 0x87D1,
- 0x87C0, 0x87CA, 0x87DB, 0x87EA, 0x87E0, 0x87EE, 0x8816, 0x8813,
- 0x87FE, 0x880A, 0x881B, 0x8821, 0x8839, 0x883C, 0x7F36, 0x7F42,
- 0x7F44, 0x7F45, 0x8210, 0x7AFA, 0x7AFD, 0x7B08, 0x7B03, 0x7B04,
- 0x7B15, 0x7B0A, 0x7B2B, 0x7B0F, 0x7B47, 0x7B38, 0x7B2A, 0x7B19,
- 0x7B2E, 0x7B31, 0x7B20, 0x7B25, 0x7B24, 0x7B33, 0x7B3E, 0x7B1E,
- 0x7B58, 0x7B5A, 0x7B45, 0x7B75, 0x7B4C, 0x7B5D, 0x7B60, 0x7B6E,
- 0x7B7B, 0x7B62, 0x7B72, 0x7B71, 0x7B90, 0x7BA6, 0x7BA7, 0x7BB8,
- 0x7BAC, 0x7B9D, 0x7BA8, 0x7B85, 0x7BAA, 0x7B9C, 0x7BA2, 0x7BAB,
- 0x7BB4, 0x7BD1, 0x7BC1, 0x7BCC, 0x7BDD, 0x7BDA, 0x7BE5, 0x7BE6,
- 0x7BEA, 0x7C0C, 0x7BFE, 0x7BFC, 0x7C0F, 0x7C16, 0x7C0B,
- /* GB 0xF440..0xF47E */
- 0x9B07, 0x9B09, 0x9B0A, 0x9B0B, 0x9B0C, 0x9B0D, 0x9B0E, 0x9B10,
- 0x9B11, 0x9B12, 0x9B14, 0x9B15, 0x9B16, 0x9B17, 0x9B18, 0x9B19,
- 0x9B1A, 0x9B1B, 0x9B1C, 0x9B1D, 0x9B1E, 0x9B20, 0x9B21, 0x9B22,
- 0x9B24, 0x9B25, 0x9B26, 0x9B27, 0x9B28, 0x9B29, 0x9B2A, 0x9B2B,
- 0x9B2C, 0x9B2D, 0x9B2E, 0x9B30, 0x9B31, 0x9B33, 0x9B34, 0x9B35,
- 0x9B36, 0x9B37, 0x9B38, 0x9B39, 0x9B3A, 0x9B3D, 0x9B3E, 0x9B3F,
- 0x9B40, 0x9B46, 0x9B4A, 0x9B4B, 0x9B4C, 0x9B4E, 0x9B50, 0x9B52,
- 0x9B53, 0x9B55, 0x9B56, 0x9B57, 0x9B58, 0x9B59, 0x9B5A,
- /* GB 0xF480..0xF4FE */
- 0x9B5B, 0x9B5C, 0x9B5D, 0x9B5E, 0x9B5F, 0x9B60, 0x9B61, 0x9B62,
- 0x9B63, 0x9B64, 0x9B65, 0x9B66, 0x9B67, 0x9B68, 0x9B69, 0x9B6A,
- 0x9B6B, 0x9B6C, 0x9B6D, 0x9B6E, 0x9B6F, 0x9B70, 0x9B71, 0x9B72,
- 0x9B73, 0x9B74, 0x9B75, 0x9B76, 0x9B77, 0x9B78, 0x9B79, 0x9B7A,
- 0x9B7B, 0x7C1F, 0x7C2A, 0x7C26, 0x7C38, 0x7C41, 0x7C40, 0x81FE,
- 0x8201, 0x8202, 0x8204, 0x81EC, 0x8844, 0x8221, 0x8222, 0x8223,
- 0x822D, 0x822F, 0x8228, 0x822B, 0x8238, 0x823B, 0x8233, 0x8234,
- 0x823E, 0x8244, 0x8249, 0x824B, 0x824F, 0x825A, 0x825F, 0x8268,
- 0x887E, 0x8885, 0x8888, 0x88D8, 0x88DF, 0x895E, 0x7F9D, 0x7F9F,
- 0x7FA7, 0x7FAF, 0x7FB0, 0x7FB2, 0x7C7C, 0x6549, 0x7C91, 0x7C9D,
- 0x7C9C, 0x7C9E, 0x7CA2, 0x7CB2, 0x7CBC, 0x7CBD, 0x7CC1, 0x7CC7,
- 0x7CCC, 0x7CCD, 0x7CC8, 0x7CC5, 0x7CD7, 0x7CE8, 0x826E, 0x66A8,
- 0x7FBF, 0x7FCE, 0x7FD5, 0x7FE5, 0x7FE1, 0x7FE6, 0x7FE9, 0x7FEE,
- 0x7FF3, 0x7CF8, 0x7D77, 0x7DA6, 0x7DAE, 0x7E47, 0x7E9B, 0x9EB8,
- 0x9EB4, 0x8D73, 0x8D84, 0x8D94, 0x8D91, 0x8DB1, 0x8D67, 0x8D6D,
- 0x8C47, 0x8C49, 0x914A, 0x9150, 0x914E, 0x914F, 0x9164,
- /* GB 0xF540..0xF57E */
- 0x9B7C, 0x9B7D, 0x9B7E, 0x9B7F, 0x9B80, 0x9B81, 0x9B82, 0x9B83,
- 0x9B84, 0x9B85, 0x9B86, 0x9B87, 0x9B88, 0x9B89, 0x9B8A, 0x9B8B,
- 0x9B8C, 0x9B8D, 0x9B8E, 0x9B8F, 0x9B90, 0x9B91, 0x9B92, 0x9B93,
- 0x9B94, 0x9B95, 0x9B96, 0x9B97, 0x9B98, 0x9B99, 0x9B9A, 0x9B9B,
- 0x9B9C, 0x9B9D, 0x9B9E, 0x9B9F, 0x9BA0, 0x9BA1, 0x9BA2, 0x9BA3,
- 0x9BA4, 0x9BA5, 0x9BA6, 0x9BA7, 0x9BA8, 0x9BA9, 0x9BAA, 0x9BAB,
- 0x9BAC, 0x9BAD, 0x9BAE, 0x9BAF, 0x9BB0, 0x9BB1, 0x9BB2, 0x9BB3,
- 0x9BB4, 0x9BB5, 0x9BB6, 0x9BB7, 0x9BB8, 0x9BB9, 0x9BBA,
- /* GB 0xF580..0xF5FE */
- 0x9BBB, 0x9BBC, 0x9BBD, 0x9BBE, 0x9BBF, 0x9BC0, 0x9BC1, 0x9BC2,
- 0x9BC3, 0x9BC4, 0x9BC5, 0x9BC6, 0x9BC7, 0x9BC8, 0x9BC9, 0x9BCA,
- 0x9BCB, 0x9BCC, 0x9BCD, 0x9BCE, 0x9BCF, 0x9BD0, 0x9BD1, 0x9BD2,
- 0x9BD3, 0x9BD4, 0x9BD5, 0x9BD6, 0x9BD7, 0x9BD8, 0x9BD9, 0x9BDA,
- 0x9BDB, 0x9162, 0x9161, 0x9170, 0x9169, 0x916F, 0x917D, 0x917E,
- 0x9172, 0x9174, 0x9179, 0x918C, 0x9185, 0x9190, 0x918D, 0x9191,
- 0x91A2, 0x91A3, 0x91AA, 0x91AD, 0x91AE, 0x91AF, 0x91B5, 0x91B4,
- 0x91BA, 0x8C55, 0x9E7E, 0x8DB8, 0x8DEB, 0x8E05, 0x8E59, 0x8E69,
- 0x8DB5, 0x8DBF, 0x8DBC, 0x8DBA, 0x8DC4, 0x8DD6, 0x8DD7, 0x8DDA,
- 0x8DDE, 0x8DCE, 0x8DCF, 0x8DDB, 0x8DC6, 0x8DEC, 0x8DF7, 0x8DF8,
- 0x8DE3, 0x8DF9, 0x8DFB, 0x8DE4, 0x8E09, 0x8DFD, 0x8E14, 0x8E1D,
- 0x8E1F, 0x8E2C, 0x8E2E, 0x8E23, 0x8E2F, 0x8E3A, 0x8E40, 0x8E39,
- 0x8E35, 0x8E3D, 0x8E31, 0x8E49, 0x8E41, 0x8E42, 0x8E51, 0x8E52,
- 0x8E4A, 0x8E70, 0x8E76, 0x8E7C, 0x8E6F, 0x8E74, 0x8E85, 0x8E8F,
- 0x8E94, 0x8E90, 0x8E9C, 0x8E9E, 0x8C78, 0x8C82, 0x8C8A, 0x8C85,
- 0x8C98, 0x8C94, 0x659B, 0x89D6, 0x89DE, 0x89DA, 0x89DC,
- /* GB 0xF640..0xF67E */
- 0x9BDC, 0x9BDD, 0x9BDE, 0x9BDF, 0x9BE0, 0x9BE1, 0x9BE2, 0x9BE3,
- 0x9BE4, 0x9BE5, 0x9BE6, 0x9BE7, 0x9BE8, 0x9BE9, 0x9BEA, 0x9BEB,
- 0x9BEC, 0x9BED, 0x9BEE, 0x9BEF, 0x9BF0, 0x9BF1, 0x9BF2, 0x9BF3,
- 0x9BF4, 0x9BF5, 0x9BF6, 0x9BF7, 0x9BF8, 0x9BF9, 0x9BFA, 0x9BFB,
- 0x9BFC, 0x9BFD, 0x9BFE, 0x9BFF, 0x9C00, 0x9C01, 0x9C02, 0x9C03,
- 0x9C04, 0x9C05, 0x9C06, 0x9C07, 0x9C08, 0x9C09, 0x9C0A, 0x9C0B,
- 0x9C0C, 0x9C0D, 0x9C0E, 0x9C0F, 0x9C10, 0x9C11, 0x9C12, 0x9C13,
- 0x9C14, 0x9C15, 0x9C16, 0x9C17, 0x9C18, 0x9C19, 0x9C1A,
- /* GB 0xF680..0xF6FE */
- 0x9C1B, 0x9C1C, 0x9C1D, 0x9C1E, 0x9C1F, 0x9C20, 0x9C21, 0x9C22,
- 0x9C23, 0x9C24, 0x9C25, 0x9C26, 0x9C27, 0x9C28, 0x9C29, 0x9C2A,
- 0x9C2B, 0x9C2C, 0x9C2D, 0x9C2E, 0x9C2F, 0x9C30, 0x9C31, 0x9C32,
- 0x9C33, 0x9C34, 0x9C35, 0x9C36, 0x9C37, 0x9C38, 0x9C39, 0x9C3A,
- 0x9C3B, 0x89E5, 0x89EB, 0x89EF, 0x8A3E, 0x8B26, 0x9753, 0x96E9,
- 0x96F3, 0x96EF, 0x9706, 0x9701, 0x9708, 0x970F, 0x970E, 0x972A,
- 0x972D, 0x9730, 0x973E, 0x9F80, 0x9F83, 0x9F85, 0x9F86, 0x9F87,
- 0x9F88, 0x9F89, 0x9F8A, 0x9F8C, 0x9EFE, 0x9F0B, 0x9F0D, 0x96B9,
- 0x96BC, 0x96BD, 0x96CE, 0x96D2, 0x77BF, 0x96E0, 0x928E, 0x92AE,
- 0x92C8, 0x933E, 0x936A, 0x93CA, 0x938F, 0x943E, 0x946B, 0x9C7F,
- 0x9C82, 0x9C85, 0x9C86, 0x9C87, 0x9C88, 0x7A23, 0x9C8B, 0x9C8E,
- 0x9C90, 0x9C91, 0x9C92, 0x9C94, 0x9C95, 0x9C9A, 0x9C9B, 0x9C9E,
- 0x9C9F, 0x9CA0, 0x9CA1, 0x9CA2, 0x9CA3, 0x9CA5, 0x9CA6, 0x9CA7,
- 0x9CA8, 0x9CA9, 0x9CAB, 0x9CAD, 0x9CAE, 0x9CB0, 0x9CB1, 0x9CB2,
- 0x9CB3, 0x9CB4, 0x9CB5, 0x9CB6, 0x9CB7, 0x9CBA, 0x9CBB, 0x9CBC,
- 0x9CBD, 0x9CC4, 0x9CC5, 0x9CC6, 0x9CC7, 0x9CCA, 0x9CCB,
- /* GB 0xF740..0xF77E */
- 0x9C3C, 0x9C3D, 0x9C3E, 0x9C3F, 0x9C40, 0x9C41, 0x9C42, 0x9C43,
- 0x9C44, 0x9C45, 0x9C46, 0x9C47, 0x9C48, 0x9C49, 0x9C4A, 0x9C4B,
- 0x9C4C, 0x9C4D, 0x9C4E, 0x9C4F, 0x9C50, 0x9C51, 0x9C52, 0x9C53,
- 0x9C54, 0x9C55, 0x9C56, 0x9C57, 0x9C58, 0x9C59, 0x9C5A, 0x9C5B,
- 0x9C5C, 0x9C5D, 0x9C5E, 0x9C5F, 0x9C60, 0x9C61, 0x9C62, 0x9C63,
- 0x9C64, 0x9C65, 0x9C66, 0x9C67, 0x9C68, 0x9C69, 0x9C6A, 0x9C6B,
- 0x9C6C, 0x9C6D, 0x9C6E, 0x9C6F, 0x9C70, 0x9C71, 0x9C72, 0x9C73,
- 0x9C74, 0x9C75, 0x9C76, 0x9C77, 0x9C78, 0x9C79, 0x9C7A,
- /* GB 0xF780..0xF7FE */
- 0x9C7B, 0x9C7D, 0x9C7E, 0x9C80, 0x9C83, 0x9C84, 0x9C89, 0x9C8A,
- 0x9C8C, 0x9C8F, 0x9C93, 0x9C96, 0x9C97, 0x9C98, 0x9C99, 0x9C9D,
- 0x9CAA, 0x9CAC, 0x9CAF, 0x9CB9, 0x9CBE, 0x9CBF, 0x9CC0, 0x9CC1,
- 0x9CC2, 0x9CC8, 0x9CC9, 0x9CD1, 0x9CD2, 0x9CDA, 0x9CDB, 0x9CE0,
- 0x9CE1, 0x9CCC, 0x9CCD, 0x9CCE, 0x9CCF, 0x9CD0, 0x9CD3, 0x9CD4,
- 0x9CD5, 0x9CD7, 0x9CD8, 0x9CD9, 0x9CDC, 0x9CDD, 0x9CDF, 0x9CE2,
- 0x977C, 0x9785, 0x9791, 0x9792, 0x9794, 0x97AF, 0x97AB, 0x97A3,
- 0x97B2, 0x97B4, 0x9AB1, 0x9AB0, 0x9AB7, 0x9E58, 0x9AB6, 0x9ABA,
- 0x9ABC, 0x9AC1, 0x9AC0, 0x9AC5, 0x9AC2, 0x9ACB, 0x9ACC, 0x9AD1,
- 0x9B45, 0x9B43, 0x9B47, 0x9B49, 0x9B48, 0x9B4D, 0x9B51, 0x98E8,
- 0x990D, 0x992E, 0x9955, 0x9954, 0x9ADF, 0x9AE1, 0x9AE6, 0x9AEF,
- 0x9AEB, 0x9AFB, 0x9AED, 0x9AF9, 0x9B08, 0x9B0F, 0x9B13, 0x9B1F,
- 0x9B23, 0x9EBD, 0x9EBE, 0x7E3B, 0x9E82, 0x9E87, 0x9E88, 0x9E8B,
- 0x9E92, 0x93D6, 0x9E9D, 0x9E9F, 0x9EDB, 0x9EDC, 0x9EDD, 0x9EE0,
- 0x9EDF, 0x9EE2, 0x9EE9, 0x9EE7, 0x9EE5, 0x9EEA, 0x9EEF, 0x9F22,
- 0x9F2C, 0x9F2F, 0x9F39, 0x9F37, 0x9F3D, 0x9F3E, 0x9F44,
- /* GB 0xF840..0xF87E */
- 0x9CE3, 0x9CE4, 0x9CE5, 0x9CE6, 0x9CE7, 0x9CE8, 0x9CE9, 0x9CEA,
- 0x9CEB, 0x9CEC, 0x9CED, 0x9CEE, 0x9CEF, 0x9CF0, 0x9CF1, 0x9CF2,
- 0x9CF3, 0x9CF4, 0x9CF5, 0x9CF6, 0x9CF7, 0x9CF8, 0x9CF9, 0x9CFA,
- 0x9CFB, 0x9CFC, 0x9CFD, 0x9CFE, 0x9CFF, 0x9D00, 0x9D01, 0x9D02,
- 0x9D03, 0x9D04, 0x9D05, 0x9D06, 0x9D07, 0x9D08, 0x9D09, 0x9D0A,
- 0x9D0B, 0x9D0C, 0x9D0D, 0x9D0E, 0x9D0F, 0x9D10, 0x9D11, 0x9D12,
- 0x9D13, 0x9D14, 0x9D15, 0x9D16, 0x9D17, 0x9D18, 0x9D19, 0x9D1A,
- 0x9D1B, 0x9D1C, 0x9D1D, 0x9D1E, 0x9D1F, 0x9D20, 0x9D21,
- /* GB 0xF880..0xF8A0 */
- 0x9D22, 0x9D23, 0x9D24, 0x9D25, 0x9D26, 0x9D27, 0x9D28, 0x9D29,
- 0x9D2A, 0x9D2B, 0x9D2C, 0x9D2D, 0x9D2E, 0x9D2F, 0x9D30, 0x9D31,
- 0x9D32, 0x9D33, 0x9D34, 0x9D35, 0x9D36, 0x9D37, 0x9D38, 0x9D39,
- 0x9D3A, 0x9D3B, 0x9D3C, 0x9D3D, 0x9D3E, 0x9D3F, 0x9D40, 0x9D41,
- 0x9D42, /* Skip: GB 0xF8A1..0xF8FE (UDA 2) */
- /* GB 0xF940..0xF97E */
- 0x9D43, 0x9D44, 0x9D45, 0x9D46, 0x9D47, 0x9D48, 0x9D49, 0x9D4A,
- 0x9D4B, 0x9D4C, 0x9D4D, 0x9D4E, 0x9D4F, 0x9D50, 0x9D51, 0x9D52,
- 0x9D53, 0x9D54, 0x9D55, 0x9D56, 0x9D57, 0x9D58, 0x9D59, 0x9D5A,
- 0x9D5B, 0x9D5C, 0x9D5D, 0x9D5E, 0x9D5F, 0x9D60, 0x9D61, 0x9D62,
- 0x9D63, 0x9D64, 0x9D65, 0x9D66, 0x9D67, 0x9D68, 0x9D69, 0x9D6A,
- 0x9D6B, 0x9D6C, 0x9D6D, 0x9D6E, 0x9D6F, 0x9D70, 0x9D71, 0x9D72,
- 0x9D73, 0x9D74, 0x9D75, 0x9D76, 0x9D77, 0x9D78, 0x9D79, 0x9D7A,
- 0x9D7B, 0x9D7C, 0x9D7D, 0x9D7E, 0x9D7F, 0x9D80, 0x9D81,
- /* GB 0xF980..0xF9A0 */
- 0x9D82, 0x9D83, 0x9D84, 0x9D85, 0x9D86, 0x9D87, 0x9D88, 0x9D89,
- 0x9D8A, 0x9D8B, 0x9D8C, 0x9D8D, 0x9D8E, 0x9D8F, 0x9D90, 0x9D91,
- 0x9D92, 0x9D93, 0x9D94, 0x9D95, 0x9D96, 0x9D97, 0x9D98, 0x9D99,
- 0x9D9A, 0x9D9B, 0x9D9C, 0x9D9D, 0x9D9E, 0x9D9F, 0x9DA0, 0x9DA1,
- 0x9DA2, /* Skip: GB 0xF9A1..0xF9FE (UDA 2) */
- /* GB 0xFA40..0xFA7E */
- 0x9DA3, 0x9DA4, 0x9DA5, 0x9DA6, 0x9DA7, 0x9DA8, 0x9DA9, 0x9DAA,
- 0x9DAB, 0x9DAC, 0x9DAD, 0x9DAE, 0x9DAF, 0x9DB0, 0x9DB1, 0x9DB2,
- 0x9DB3, 0x9DB4, 0x9DB5, 0x9DB6, 0x9DB7, 0x9DB8, 0x9DB9, 0x9DBA,
- 0x9DBB, 0x9DBC, 0x9DBD, 0x9DBE, 0x9DBF, 0x9DC0, 0x9DC1, 0x9DC2,
- 0x9DC3, 0x9DC4, 0x9DC5, 0x9DC6, 0x9DC7, 0x9DC8, 0x9DC9, 0x9DCA,
- 0x9DCB, 0x9DCC, 0x9DCD, 0x9DCE, 0x9DCF, 0x9DD0, 0x9DD1, 0x9DD2,
- 0x9DD3, 0x9DD4, 0x9DD5, 0x9DD6, 0x9DD7, 0x9DD8, 0x9DD9, 0x9DDA,
- 0x9DDB, 0x9DDC, 0x9DDD, 0x9DDE, 0x9DDF, 0x9DE0, 0x9DE1,
- /* GB 0xFA80..0xFAA0 */
- 0x9DE2, 0x9DE3, 0x9DE4, 0x9DE5, 0x9DE6, 0x9DE7, 0x9DE8, 0x9DE9,
- 0x9DEA, 0x9DEB, 0x9DEC, 0x9DED, 0x9DEE, 0x9DEF, 0x9DF0, 0x9DF1,
- 0x9DF2, 0x9DF3, 0x9DF4, 0x9DF5, 0x9DF6, 0x9DF7, 0x9DF8, 0x9DF9,
- 0x9DFA, 0x9DFB, 0x9DFC, 0x9DFD, 0x9DFE, 0x9DFF, 0x9E00, 0x9E01,
- 0x9E02, /* Skip: GB 0xFAA1..0xFAFE (UDA 2) */
- /* GB 0xFB40..0xFB7E */
- 0x9E03, 0x9E04, 0x9E05, 0x9E06, 0x9E07, 0x9E08, 0x9E09, 0x9E0A,
- 0x9E0B, 0x9E0C, 0x9E0D, 0x9E0E, 0x9E0F, 0x9E10, 0x9E11, 0x9E12,
- 0x9E13, 0x9E14, 0x9E15, 0x9E16, 0x9E17, 0x9E18, 0x9E19, 0x9E1A,
- 0x9E1B, 0x9E1C, 0x9E1D, 0x9E1E, 0x9E24, 0x9E27, 0x9E2E, 0x9E30,
- 0x9E34, 0x9E3B, 0x9E3C, 0x9E40, 0x9E4D, 0x9E50, 0x9E52, 0x9E53,
- 0x9E54, 0x9E56, 0x9E59, 0x9E5D, 0x9E5F, 0x9E60, 0x9E61, 0x9E62,
- 0x9E65, 0x9E6E, 0x9E6F, 0x9E72, 0x9E74, 0x9E75, 0x9E76, 0x9E77,
- 0x9E78, 0x9E79, 0x9E7A, 0x9E7B, 0x9E7C, 0x9E7D, 0x9E80,
- /* GB 0xFB80..0xFBA0 */
- 0x9E81, 0x9E83, 0x9E84, 0x9E85, 0x9E86, 0x9E89, 0x9E8A, 0x9E8C,
- 0x9E8D, 0x9E8E, 0x9E8F, 0x9E90, 0x9E91, 0x9E94, 0x9E95, 0x9E96,
- 0x9E97, 0x9E98, 0x9E99, 0x9E9A, 0x9E9B, 0x9E9C, 0x9E9E, 0x9EA0,
- 0x9EA1, 0x9EA2, 0x9EA3, 0x9EA4, 0x9EA5, 0x9EA7, 0x9EA8, 0x9EA9,
- 0x9EAA, /* Skip: GB 0xFBA1..0xFBFE (UDA 2) */
- /* GB 0xFC40..0xFC7E */
- 0x9EAB, 0x9EAC, 0x9EAD, 0x9EAE, 0x9EAF, 0x9EB0, 0x9EB1, 0x9EB2,
- 0x9EB3, 0x9EB5, 0x9EB6, 0x9EB7, 0x9EB9, 0x9EBA, 0x9EBC, 0x9EBF,
- 0x9EC0, 0x9EC1, 0x9EC2, 0x9EC3, 0x9EC5, 0x9EC6, 0x9EC7, 0x9EC8,
- 0x9ECA, 0x9ECB, 0x9ECC, 0x9ED0, 0x9ED2, 0x9ED3, 0x9ED5, 0x9ED6,
- 0x9ED7, 0x9ED9, 0x9EDA, 0x9EDE, 0x9EE1, 0x9EE3, 0x9EE4, 0x9EE6,
- 0x9EE8, 0x9EEB, 0x9EEC, 0x9EED, 0x9EEE, 0x9EF0, 0x9EF1, 0x9EF2,
- 0x9EF3, 0x9EF4, 0x9EF5, 0x9EF6, 0x9EF7, 0x9EF8, 0x9EFA, 0x9EFD,
- 0x9EFF, 0x9F00, 0x9F01, 0x9F02, 0x9F03, 0x9F04, 0x9F05,
- /* GB 0xFC80..0xFCA0 */
- 0x9F06, 0x9F07, 0x9F08, 0x9F09, 0x9F0A, 0x9F0C, 0x9F0F, 0x9F11,
- 0x9F12, 0x9F14, 0x9F15, 0x9F16, 0x9F18, 0x9F1A, 0x9F1B, 0x9F1C,
- 0x9F1D, 0x9F1E, 0x9F1F, 0x9F21, 0x9F23, 0x9F24, 0x9F25, 0x9F26,
- 0x9F27, 0x9F28, 0x9F29, 0x9F2A, 0x9F2B, 0x9F2D, 0x9F2E, 0x9F30,
- 0x9F31, /* Skip: GB 0xFCA1..0xFCFE (UDA 2) */
- /* GB 0xFD40..0xFD7E */
- 0x9F32, 0x9F33, 0x9F34, 0x9F35, 0x9F36, 0x9F38, 0x9F3A, 0x9F3C,
- 0x9F3F, 0x9F40, 0x9F41, 0x9F42, 0x9F43, 0x9F45, 0x9F46, 0x9F47,
- 0x9F48, 0x9F49, 0x9F4A, 0x9F4B, 0x9F4C, 0x9F4D, 0x9F4E, 0x9F4F,
- 0x9F52, 0x9F53, 0x9F54, 0x9F55, 0x9F56, 0x9F57, 0x9F58, 0x9F59,
- 0x9F5A, 0x9F5B, 0x9F5C, 0x9F5D, 0x9F5E, 0x9F5F, 0x9F60, 0x9F61,
- 0x9F62, 0x9F63, 0x9F64, 0x9F65, 0x9F66, 0x9F67, 0x9F68, 0x9F69,
- 0x9F6A, 0x9F6B, 0x9F6C, 0x9F6D, 0x9F6E, 0x9F6F, 0x9F70, 0x9F71,
- 0x9F72, 0x9F73, 0x9F74, 0x9F75, 0x9F76, 0x9F77, 0x9F78,
- /* GB 0xFD80..0xFDA0 */
- 0x9F79, 0x9F7A, 0x9F7B, 0x9F7C, 0x9F7D, 0x9F7E, 0x9F81, 0x9F82,
- 0x9F8D, 0x9F8E, 0x9F8F, 0x9F90, 0x9F91, 0x9F92, 0x9F93, 0x9F94,
- 0x9F95, 0x9F96, 0x9F97, 0x9F98, 0x9F9C, 0x9F9D, 0x9F9E, 0x9FA1,
- 0x9FA2, 0x9FA3, 0x9FA4, 0x9FA5, 0xF92C, 0xF979, 0xF995, 0xF9E7,
- 0xF9F1, /* Skip: GB 0xFDA1..0xFDFE (UDA 2) */
- /* GB 0xFE40..0xFE7E */
- 0xFA0C, 0xFA0D, 0xFA0E, 0xFA0F, 0xFA11, 0xFA13, 0xFA14, 0xFA18,
- 0xFA1F, 0xFA20, 0xFA21, 0xFA23, 0xFA24, 0xFA27, 0xFA28, 0xFA29,
- 0x2E81, 0xE816, 0xE817, 0xE818, 0x2E84, 0x3473, 0x3447, 0x2E88,
- 0x2E8B, 0xE81E, 0x359E, 0x361A, 0x360E, 0x2E8C, 0x2E97, 0x396E,
- 0x3918, 0xE826, 0x39CF, 0x39DF, 0x3A73, 0x39D0, 0xE82B, 0xE82C,
- 0x3B4E, 0x3C6E, 0x3CE0, 0x2EA7, 0xE831, 0xE832, 0x2EAA, 0x4056,
- 0x415F, 0x2EAE, 0x4337, 0x2EB3, 0x2EB6, 0x2EB7, 0xE83B, 0x43B1,
- 0x43AC, 0x2EBB, 0x43DD, 0x44D6, 0x4661, 0x464C, 0xE843,
- /* GB 0xFE80..0xFEA0 */
- 0x4723, 0x4729, 0x477C, 0x478D, 0x2ECA, 0x4947, 0x497A, 0x497D,
- 0x4982, 0x4983, 0x4985, 0x4986, 0x499F, 0x499B, 0x49B7, 0x49B6,
- 0xE854, 0xE855, 0x4CA3, 0x4C9F, 0x4CA0, 0x4CA1, 0x4C77, 0x4CA2,
- 0x4D13, 0x4D14, 0x4D15, 0x4D16, 0x4D17, 0x4D18, 0x4D19, 0x4DAE,
- 0xE864, /* Skip: GB 0xFEA1..0xFEFE (UDA 2) */
-};
-
-static quint16 const gb18030_4byte_to_ucs[6793] = {
- /* Contiguous area: GB+81 30 81 30 .. GB+81 30 D2 39 */
- /* GB+81 30 81 30 */ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084,
- /* GB+81 30 81 35 */ 0x0085, 0x0086, 0x0087, 0x0088, 0x0089,
- /* GB+81 30 82 30 */ 0x008A, 0x008B, 0x008C, 0x008D, 0x008E,
- /* GB+81 30 82 35 */ 0x008F, 0x0090, 0x0091, 0x0092, 0x0093,
- /* GB+81 30 83 30 */ 0x0094, 0x0095, 0x0096, 0x0097, 0x0098,
- /* GB+81 30 83 35 */ 0x0099, 0x009A, 0x009B, 0x009C, 0x009D,
- /* GB+81 30 84 30 */ 0x009E, 0x009F, 0x00A0, 0x00A1, 0x00A2,
- /* GB+81 30 84 35 */ 0x00A3, 0x00A5, 0x00A6, 0x00A9, 0x00AA,
- /* GB+81 30 85 30 */ 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
- /* GB+81 30 85 35 */ 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6,
- /* GB+81 30 86 30 */ 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC,
- /* GB+81 30 86 35 */ 0x00BD, 0x00BE, 0x00BF, 0x00C0, 0x00C1,
- /* GB+81 30 87 30 */ 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6,
- /* GB+81 30 87 35 */ 0x00C7, 0x00C8, 0x00C9, 0x00CA, 0x00CB,
- /* GB+81 30 88 30 */ 0x00CC, 0x00CD, 0x00CE, 0x00CF, 0x00D0,
- /* GB+81 30 88 35 */ 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5,
- /* GB+81 30 89 30 */ 0x00D6, 0x00D8, 0x00D9, 0x00DA, 0x00DB,
- /* GB+81 30 89 35 */ 0x00DC, 0x00DD, 0x00DE, 0x00DF, 0x00E2,
- /* GB+81 30 8A 30 */ 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
- /* GB+81 30 8A 35 */ 0x00EB, 0x00EE, 0x00EF, 0x00F0, 0x00F1,
- /* GB+81 30 8B 30 */ 0x00F4, 0x00F5, 0x00F6, 0x00F8, 0x00FB,
- /* GB+81 30 8B 35 */ 0x00FD, 0x00FE, 0x00FF, 0x0100, 0x0102,
- /* GB+81 30 8C 30 */ 0x0103, 0x0104, 0x0105, 0x0106, 0x0107,
- /* GB+81 30 8C 35 */ 0x0108, 0x0109, 0x010A, 0x010B, 0x010C,
- /* GB+81 30 8D 30 */ 0x010D, 0x010E, 0x010F, 0x0110, 0x0111,
- /* GB+81 30 8D 35 */ 0x0112, 0x0114, 0x0115, 0x0116, 0x0117,
- /* GB+81 30 8E 30 */ 0x0118, 0x0119, 0x011A, 0x011C, 0x011D,
- /* GB+81 30 8E 35 */ 0x011E, 0x011F, 0x0120, 0x0121, 0x0122,
- /* GB+81 30 8F 30 */ 0x0123, 0x0124, 0x0125, 0x0126, 0x0127,
- /* GB+81 30 8F 35 */ 0x0128, 0x0129, 0x012A, 0x012C, 0x012D,
- /* GB+81 30 90 30 */ 0x012E, 0x012F, 0x0130, 0x0131, 0x0132,
- /* GB+81 30 90 35 */ 0x0133, 0x0134, 0x0135, 0x0136, 0x0137,
- /* GB+81 30 91 30 */ 0x0138, 0x0139, 0x013A, 0x013B, 0x013C,
- /* GB+81 30 91 35 */ 0x013D, 0x013E, 0x013F, 0x0140, 0x0141,
- /* GB+81 30 92 30 */ 0x0142, 0x0143, 0x0145, 0x0146, 0x0147,
- /* GB+81 30 92 35 */ 0x0149, 0x014A, 0x014B, 0x014C, 0x014E,
- /* GB+81 30 93 30 */ 0x014F, 0x0150, 0x0151, 0x0152, 0x0153,
- /* GB+81 30 93 35 */ 0x0154, 0x0155, 0x0156, 0x0157, 0x0158,
- /* GB+81 30 94 30 */ 0x0159, 0x015A, 0x015B, 0x015C, 0x015D,
- /* GB+81 30 94 35 */ 0x015E, 0x015F, 0x0160, 0x0161, 0x0162,
- /* GB+81 30 95 30 */ 0x0163, 0x0164, 0x0165, 0x0166, 0x0167,
- /* GB+81 30 95 35 */ 0x0168, 0x0169, 0x016A, 0x016C, 0x016D,
- /* GB+81 30 96 30 */ 0x016E, 0x016F, 0x0170, 0x0171, 0x0172,
- /* GB+81 30 96 35 */ 0x0173, 0x0174, 0x0175, 0x0176, 0x0177,
- /* GB+81 30 97 30 */ 0x0178, 0x0179, 0x017A, 0x017B, 0x017C,
- /* GB+81 30 97 35 */ 0x017D, 0x017E, 0x017F, 0x0180, 0x0181,
- /* GB+81 30 98 30 */ 0x0182, 0x0183, 0x0184, 0x0185, 0x0186,
- /* GB+81 30 98 35 */ 0x0187, 0x0188, 0x0189, 0x018A, 0x018B,
- /* GB+81 30 99 30 */ 0x018C, 0x018D, 0x018E, 0x018F, 0x0190,
- /* GB+81 30 99 35 */ 0x0191, 0x0192, 0x0193, 0x0194, 0x0195,
- /* GB+81 30 9A 30 */ 0x0196, 0x0197, 0x0198, 0x0199, 0x019A,
- /* GB+81 30 9A 35 */ 0x019B, 0x019C, 0x019D, 0x019E, 0x019F,
- /* GB+81 30 9B 30 */ 0x01A0, 0x01A1, 0x01A2, 0x01A3, 0x01A4,
- /* GB+81 30 9B 35 */ 0x01A5, 0x01A6, 0x01A7, 0x01A8, 0x01A9,
- /* GB+81 30 9C 30 */ 0x01AA, 0x01AB, 0x01AC, 0x01AD, 0x01AE,
- /* GB+81 30 9C 35 */ 0x01AF, 0x01B0, 0x01B1, 0x01B2, 0x01B3,
- /* GB+81 30 9D 30 */ 0x01B4, 0x01B5, 0x01B6, 0x01B7, 0x01B8,
- /* GB+81 30 9D 35 */ 0x01B9, 0x01BA, 0x01BB, 0x01BC, 0x01BD,
- /* GB+81 30 9E 30 */ 0x01BE, 0x01BF, 0x01C0, 0x01C1, 0x01C2,
- /* GB+81 30 9E 35 */ 0x01C3, 0x01C4, 0x01C5, 0x01C6, 0x01C7,
- /* GB+81 30 9F 30 */ 0x01C8, 0x01C9, 0x01CA, 0x01CB, 0x01CC,
- /* GB+81 30 9F 35 */ 0x01CD, 0x01CF, 0x01D1, 0x01D3, 0x01D5,
- /* GB+81 30 A0 30 */ 0x01D7, 0x01D9, 0x01DB, 0x01DD, 0x01DE,
- /* GB+81 30 A0 35 */ 0x01DF, 0x01E0, 0x01E1, 0x01E2, 0x01E3,
- /* GB+81 30 A1 30 */ 0x01E4, 0x01E5, 0x01E6, 0x01E7, 0x01E8,
- /* GB+81 30 A1 35 */ 0x01E9, 0x01EA, 0x01EB, 0x01EC, 0x01ED,
- /* GB+81 30 A2 30 */ 0x01EE, 0x01EF, 0x01F0, 0x01F1, 0x01F2,
- /* GB+81 30 A2 35 */ 0x01F3, 0x01F4, 0x01F5, 0x01F6, 0x01F7,
- /* GB+81 30 A3 30 */ 0x01F8, 0x01FA, 0x01FB, 0x01FC, 0x01FD,
- /* GB+81 30 A3 35 */ 0x01FE, 0x01FF, 0x0200, 0x0201, 0x0202,
- /* GB+81 30 A4 30 */ 0x0203, 0x0204, 0x0205, 0x0206, 0x0207,
- /* GB+81 30 A4 35 */ 0x0208, 0x0209, 0x020A, 0x020B, 0x020C,
- /* GB+81 30 A5 30 */ 0x020D, 0x020E, 0x020F, 0x0210, 0x0211,
- /* GB+81 30 A5 35 */ 0x0212, 0x0213, 0x0214, 0x0215, 0x0216,
- /* GB+81 30 A6 30 */ 0x0217, 0x0218, 0x0219, 0x021A, 0x021B,
- /* GB+81 30 A6 35 */ 0x021C, 0x021D, 0x021E, 0x021F, 0x0220,
- /* GB+81 30 A7 30 */ 0x0221, 0x0222, 0x0223, 0x0224, 0x0225,
- /* GB+81 30 A7 35 */ 0x0226, 0x0227, 0x0228, 0x0229, 0x022A,
- /* GB+81 30 A8 30 */ 0x022B, 0x022C, 0x022D, 0x022E, 0x022F,
- /* GB+81 30 A8 35 */ 0x0230, 0x0231, 0x0232, 0x0233, 0x0234,
- /* GB+81 30 A9 30 */ 0x0235, 0x0236, 0x0237, 0x0238, 0x0239,
- /* GB+81 30 A9 35 */ 0x023A, 0x023B, 0x023C, 0x023D, 0x023E,
- /* GB+81 30 AA 30 */ 0x023F, 0x0240, 0x0241, 0x0242, 0x0243,
- /* GB+81 30 AA 35 */ 0x0244, 0x0245, 0x0246, 0x0247, 0x0248,
- /* GB+81 30 AB 30 */ 0x0249, 0x024A, 0x024B, 0x024C, 0x024D,
- /* GB+81 30 AB 35 */ 0x024E, 0x024F, 0x0250, 0x0252, 0x0253,
- /* GB+81 30 AC 30 */ 0x0254, 0x0255, 0x0256, 0x0257, 0x0258,
- /* GB+81 30 AC 35 */ 0x0259, 0x025A, 0x025B, 0x025C, 0x025D,
- /* GB+81 30 AD 30 */ 0x025E, 0x025F, 0x0260, 0x0262, 0x0263,
- /* GB+81 30 AD 35 */ 0x0264, 0x0265, 0x0266, 0x0267, 0x0268,
- /* GB+81 30 AE 30 */ 0x0269, 0x026A, 0x026B, 0x026C, 0x026D,
- /* GB+81 30 AE 35 */ 0x026E, 0x026F, 0x0270, 0x0271, 0x0272,
- /* GB+81 30 AF 30 */ 0x0273, 0x0274, 0x0275, 0x0276, 0x0277,
- /* GB+81 30 AF 35 */ 0x0278, 0x0279, 0x027A, 0x027B, 0x027C,
- /* GB+81 30 B0 30 */ 0x027D, 0x027E, 0x027F, 0x0280, 0x0281,
- /* GB+81 30 B0 35 */ 0x0282, 0x0283, 0x0284, 0x0285, 0x0286,
- /* GB+81 30 B1 30 */ 0x0287, 0x0288, 0x0289, 0x028A, 0x028B,
- /* GB+81 30 B1 35 */ 0x028C, 0x028D, 0x028E, 0x028F, 0x0290,
- /* GB+81 30 B2 30 */ 0x0291, 0x0292, 0x0293, 0x0294, 0x0295,
- /* GB+81 30 B2 35 */ 0x0296, 0x0297, 0x0298, 0x0299, 0x029A,
- /* GB+81 30 B3 30 */ 0x029B, 0x029C, 0x029D, 0x029E, 0x029F,
- /* GB+81 30 B3 35 */ 0x02A0, 0x02A1, 0x02A2, 0x02A3, 0x02A4,
- /* GB+81 30 B4 30 */ 0x02A5, 0x02A6, 0x02A7, 0x02A8, 0x02A9,
- /* GB+81 30 B4 35 */ 0x02AA, 0x02AB, 0x02AC, 0x02AD, 0x02AE,
- /* GB+81 30 B5 30 */ 0x02AF, 0x02B0, 0x02B1, 0x02B2, 0x02B3,
- /* GB+81 30 B5 35 */ 0x02B4, 0x02B5, 0x02B6, 0x02B7, 0x02B8,
- /* GB+81 30 B6 30 */ 0x02B9, 0x02BA, 0x02BB, 0x02BC, 0x02BD,
- /* GB+81 30 B6 35 */ 0x02BE, 0x02BF, 0x02C0, 0x02C1, 0x02C2,
- /* GB+81 30 B7 30 */ 0x02C3, 0x02C4, 0x02C5, 0x02C6, 0x02C8,
- /* GB+81 30 B7 35 */ 0x02CC, 0x02CD, 0x02CE, 0x02CF, 0x02D0,
- /* GB+81 30 B8 30 */ 0x02D1, 0x02D2, 0x02D3, 0x02D4, 0x02D5,
- /* GB+81 30 B8 35 */ 0x02D6, 0x02D7, 0x02D8, 0x02DA, 0x02DB,
- /* GB+81 30 B9 30 */ 0x02DC, 0x02DD, 0x02DE, 0x02DF, 0x02E0,
- /* GB+81 30 B9 35 */ 0x02E1, 0x02E2, 0x02E3, 0x02E4, 0x02E5,
- /* GB+81 30 BA 30 */ 0x02E6, 0x02E7, 0x02E8, 0x02E9, 0x02EA,
- /* GB+81 30 BA 35 */ 0x02EB, 0x02EC, 0x02ED, 0x02EE, 0x02EF,
- /* GB+81 30 BB 30 */ 0x02F0, 0x02F1, 0x02F2, 0x02F3, 0x02F4,
- /* GB+81 30 BB 35 */ 0x02F5, 0x02F6, 0x02F7, 0x02F8, 0x02F9,
- /* GB+81 30 BC 30 */ 0x02FA, 0x02FB, 0x02FC, 0x02FD, 0x02FE,
- /* GB+81 30 BC 35 */ 0x02FF, 0x0300, 0x0301, 0x0302, 0x0303,
- /* GB+81 30 BD 30 */ 0x0304, 0x0305, 0x0306, 0x0307, 0x0308,
- /* GB+81 30 BD 35 */ 0x0309, 0x030A, 0x030B, 0x030C, 0x030D,
- /* GB+81 30 BE 30 */ 0x030E, 0x030F, 0x0310, 0x0311, 0x0312,
- /* GB+81 30 BE 35 */ 0x0313, 0x0314, 0x0315, 0x0316, 0x0317,
- /* GB+81 30 BF 30 */ 0x0318, 0x0319, 0x031A, 0x031B, 0x031C,
- /* GB+81 30 BF 35 */ 0x031D, 0x031E, 0x031F, 0x0320, 0x0321,
- /* GB+81 30 C0 30 */ 0x0322, 0x0323, 0x0324, 0x0325, 0x0326,
- /* GB+81 30 C0 35 */ 0x0327, 0x0328, 0x0329, 0x032A, 0x032B,
- /* GB+81 30 C1 30 */ 0x032C, 0x032D, 0x032E, 0x032F, 0x0330,
- /* GB+81 30 C1 35 */ 0x0331, 0x0332, 0x0333, 0x0334, 0x0335,
- /* GB+81 30 C2 30 */ 0x0336, 0x0337, 0x0338, 0x0339, 0x033A,
- /* GB+81 30 C2 35 */ 0x033B, 0x033C, 0x033D, 0x033E, 0x033F,
- /* GB+81 30 C3 30 */ 0x0340, 0x0341, 0x0342, 0x0343, 0x0344,
- /* GB+81 30 C3 35 */ 0x0345, 0x0346, 0x0347, 0x0348, 0x0349,
- /* GB+81 30 C4 30 */ 0x034A, 0x034B, 0x034C, 0x034D, 0x034E,
- /* GB+81 30 C4 35 */ 0x034F, 0x0350, 0x0351, 0x0352, 0x0353,
- /* GB+81 30 C5 30 */ 0x0354, 0x0355, 0x0356, 0x0357, 0x0358,
- /* GB+81 30 C5 35 */ 0x0359, 0x035A, 0x035B, 0x035C, 0x035D,
- /* GB+81 30 C6 30 */ 0x035E, 0x035F, 0x0360, 0x0361, 0x0362,
- /* GB+81 30 C6 35 */ 0x0363, 0x0364, 0x0365, 0x0366, 0x0367,
- /* GB+81 30 C7 30 */ 0x0368, 0x0369, 0x036A, 0x036B, 0x036C,
- /* GB+81 30 C7 35 */ 0x036D, 0x036E, 0x036F, 0x0370, 0x0371,
- /* GB+81 30 C8 30 */ 0x0372, 0x0373, 0x0374, 0x0375, 0x0376,
- /* GB+81 30 C8 35 */ 0x0377, 0x0378, 0x0379, 0x037A, 0x037B,
- /* GB+81 30 C9 30 */ 0x037C, 0x037D, 0x037E, 0x037F, 0x0380,
- /* GB+81 30 C9 35 */ 0x0381, 0x0382, 0x0383, 0x0384, 0x0385,
- /* GB+81 30 CA 30 */ 0x0386, 0x0387, 0x0388, 0x0389, 0x038A,
- /* GB+81 30 CA 35 */ 0x038B, 0x038C, 0x038D, 0x038E, 0x038F,
- /* GB+81 30 CB 30 */ 0x0390, 0x03A2, 0x03AA, 0x03AB, 0x03AC,
- /* GB+81 30 CB 35 */ 0x03AD, 0x03AE, 0x03AF, 0x03B0, 0x03C2,
- /* GB+81 30 CC 30 */ 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE,
- /* GB+81 30 CC 35 */ 0x03CF, 0x03D0, 0x03D1, 0x03D2, 0x03D3,
- /* GB+81 30 CD 30 */ 0x03D4, 0x03D5, 0x03D6, 0x03D7, 0x03D8,
- /* GB+81 30 CD 35 */ 0x03D9, 0x03DA, 0x03DB, 0x03DC, 0x03DD,
- /* GB+81 30 CE 30 */ 0x03DE, 0x03DF, 0x03E0, 0x03E1, 0x03E2,
- /* GB+81 30 CE 35 */ 0x03E3, 0x03E4, 0x03E5, 0x03E6, 0x03E7,
- /* GB+81 30 CF 30 */ 0x03E8, 0x03E9, 0x03EA, 0x03EB, 0x03EC,
- /* GB+81 30 CF 35 */ 0x03ED, 0x03EE, 0x03EF, 0x03F0, 0x03F1,
- /* GB+81 30 D0 30 */ 0x03F2, 0x03F3, 0x03F4, 0x03F5, 0x03F6,
- /* GB+81 30 D0 35 */ 0x03F7, 0x03F8, 0x03F9, 0x03FA, 0x03FB,
- /* GB+81 30 D1 30 */ 0x03FC, 0x03FD, 0x03FE, 0x03FF, 0x0400,
- /* GB+81 30 D1 35 */ 0x0402, 0x0403, 0x0404, 0x0405, 0x0406,
- /* GB+81 30 D2 30 */ 0x0407, 0x0408, 0x0409, 0x040A, 0x040B,
- /* GB+81 30 D2 35 */ 0x040C, 0x040D, 0x040E, 0x040F, 0x0450,
- /* Contiguous area: GB+81 36 A5 32 .. GB+81 37 A8 38 */
- /* GB+81 36 A5 32 */ 0x2011, 0x2012, 0x2017,
- /* GB+81 36 A5 35 */ 0x201A, 0x201B, 0x201E, 0x201F, 0x2020,
- /* GB+81 36 A6 30 */ 0x2021, 0x2022, 0x2023, 0x2024, 0x2027,
- /* GB+81 36 A6 35 */ 0x2028, 0x2029, 0x202A, 0x202B, 0x202C,
- /* GB+81 36 A7 30 */ 0x202D, 0x202E, 0x202F, 0x2031, 0x2034,
- /* GB+81 36 A7 35 */ 0x2036, 0x2037, 0x2038, 0x2039, 0x203A,
- /* GB+81 36 A8 30 */ 0x203C, 0x203D, 0x203E, 0x203F, 0x2040,
- /* GB+81 36 A8 35 */ 0x2041, 0x2042, 0x2043, 0x2044, 0x2045,
- /* GB+81 36 A9 30 */ 0x2046, 0x2047, 0x2048, 0x2049, 0x204A,
- /* GB+81 36 A9 35 */ 0x204B, 0x204C, 0x204D, 0x204E, 0x204F,
- /* GB+81 36 AA 30 */ 0x2050, 0x2051, 0x2052, 0x2053, 0x2054,
- /* GB+81 36 AA 35 */ 0x2055, 0x2056, 0x2057, 0x2058, 0x2059,
- /* GB+81 36 AB 30 */ 0x205A, 0x205B, 0x205C, 0x205D, 0x205E,
- /* GB+81 36 AB 35 */ 0x205F, 0x2060, 0x2061, 0x2062, 0x2063,
- /* GB+81 36 AC 30 */ 0x2064, 0x2065, 0x2066, 0x2067, 0x2068,
- /* GB+81 36 AC 35 */ 0x2069, 0x206A, 0x206B, 0x206C, 0x206D,
- /* GB+81 36 AD 30 */ 0x206E, 0x206F, 0x2070, 0x2071, 0x2072,
- /* GB+81 36 AD 35 */ 0x2073, 0x2074, 0x2075, 0x2076, 0x2077,
- /* GB+81 36 AE 30 */ 0x2078, 0x2079, 0x207A, 0x207B, 0x207C,
- /* GB+81 36 AE 35 */ 0x207D, 0x207E, 0x207F, 0x2080, 0x2081,
- /* GB+81 36 AF 30 */ 0x2082, 0x2083, 0x2084, 0x2085, 0x2086,
- /* GB+81 36 AF 35 */ 0x2087, 0x2088, 0x2089, 0x208A, 0x208B,
- /* GB+81 36 B0 30 */ 0x208C, 0x208D, 0x208E, 0x208F, 0x2090,
- /* GB+81 36 B0 35 */ 0x2091, 0x2092, 0x2093, 0x2094, 0x2095,
- /* GB+81 36 B1 30 */ 0x2096, 0x2097, 0x2098, 0x2099, 0x209A,
- /* GB+81 36 B1 35 */ 0x209B, 0x209C, 0x209D, 0x209E, 0x209F,
- /* GB+81 36 B2 30 */ 0x20A0, 0x20A1, 0x20A2, 0x20A3, 0x20A4,
- /* GB+81 36 B2 35 */ 0x20A5, 0x20A6, 0x20A7, 0x20A8, 0x20A9,
- /* GB+81 36 B3 30 */ 0x20AA, 0x20AB, 0x20AD, 0x20AE, 0x20AF,
- /* GB+81 36 B3 35 */ 0x20B0, 0x20B1, 0x20B2, 0x20B3, 0x20B4,
- /* GB+81 36 B4 30 */ 0x20B5, 0x20B6, 0x20B7, 0x20B8, 0x20B9,
- /* GB+81 36 B4 35 */ 0x20BA, 0x20BB, 0x20BC, 0x20BD, 0x20BE,
- /* GB+81 36 B5 30 */ 0x20BF, 0x20C0, 0x20C1, 0x20C2, 0x20C3,
- /* GB+81 36 B5 35 */ 0x20C4, 0x20C5, 0x20C6, 0x20C7, 0x20C8,
- /* GB+81 36 B6 30 */ 0x20C9, 0x20CA, 0x20CB, 0x20CC, 0x20CD,
- /* GB+81 36 B6 35 */ 0x20CE, 0x20CF, 0x20D0, 0x20D1, 0x20D2,
- /* GB+81 36 B7 30 */ 0x20D3, 0x20D4, 0x20D5, 0x20D6, 0x20D7,
- /* GB+81 36 B7 35 */ 0x20D8, 0x20D9, 0x20DA, 0x20DB, 0x20DC,
- /* GB+81 36 B8 30 */ 0x20DD, 0x20DE, 0x20DF, 0x20E0, 0x20E1,
- /* GB+81 36 B8 35 */ 0x20E2, 0x20E3, 0x20E4, 0x20E5, 0x20E6,
- /* GB+81 36 B9 30 */ 0x20E7, 0x20E8, 0x20E9, 0x20EA, 0x20EB,
- /* GB+81 36 B9 35 */ 0x20EC, 0x20ED, 0x20EE, 0x20EF, 0x20F0,
- /* GB+81 36 BA 30 */ 0x20F1, 0x20F2, 0x20F3, 0x20F4, 0x20F5,
- /* GB+81 36 BA 35 */ 0x20F6, 0x20F7, 0x20F8, 0x20F9, 0x20FA,
- /* GB+81 36 BB 30 */ 0x20FB, 0x20FC, 0x20FD, 0x20FE, 0x20FF,
- /* GB+81 36 BB 35 */ 0x2100, 0x2101, 0x2102, 0x2104, 0x2106,
- /* GB+81 36 BC 30 */ 0x2107, 0x2108, 0x210A, 0x210B, 0x210C,
- /* GB+81 36 BC 35 */ 0x210D, 0x210E, 0x210F, 0x2110, 0x2111,
- /* GB+81 36 BD 30 */ 0x2112, 0x2113, 0x2114, 0x2115, 0x2117,
- /* GB+81 36 BD 35 */ 0x2118, 0x2119, 0x211A, 0x211B, 0x211C,
- /* GB+81 36 BE 30 */ 0x211D, 0x211E, 0x211F, 0x2120, 0x2122,
- /* GB+81 36 BE 35 */ 0x2123, 0x2124, 0x2125, 0x2126, 0x2127,
- /* GB+81 36 BF 30 */ 0x2128, 0x2129, 0x212A, 0x212B, 0x212C,
- /* GB+81 36 BF 35 */ 0x212D, 0x212E, 0x212F, 0x2130, 0x2131,
- /* GB+81 36 C0 30 */ 0x2132, 0x2133, 0x2134, 0x2135, 0x2136,
- /* GB+81 36 C0 35 */ 0x2137, 0x2138, 0x2139, 0x213A, 0x213B,
- /* GB+81 36 C1 30 */ 0x213C, 0x213D, 0x213E, 0x213F, 0x2140,
- /* GB+81 36 C1 35 */ 0x2141, 0x2142, 0x2143, 0x2144, 0x2145,
- /* GB+81 36 C2 30 */ 0x2146, 0x2147, 0x2148, 0x2149, 0x214A,
- /* GB+81 36 C2 35 */ 0x214B, 0x214C, 0x214D, 0x214E, 0x214F,
- /* GB+81 36 C3 30 */ 0x2150, 0x2151, 0x2152, 0x2153, 0x2154,
- /* GB+81 36 C3 35 */ 0x2155, 0x2156, 0x2157, 0x2158, 0x2159,
- /* GB+81 36 C4 30 */ 0x215A, 0x215B, 0x215C, 0x215D, 0x215E,
- /* GB+81 36 C4 35 */ 0x215F, 0x216C, 0x216D, 0x216E, 0x216F,
- /* GB+81 36 C5 30 */ 0x217A, 0x217B, 0x217C, 0x217D, 0x217E,
- /* GB+81 36 C5 35 */ 0x217F, 0x2180, 0x2181, 0x2182, 0x2183,
- /* GB+81 36 C6 30 */ 0x2184, 0x2185, 0x2186, 0x2187, 0x2188,
- /* GB+81 36 C6 35 */ 0x2189, 0x218A, 0x218B, 0x218C, 0x218D,
- /* GB+81 36 C7 30 */ 0x218E, 0x218F, 0x2194, 0x2195, 0x219A,
- /* GB+81 36 C7 35 */ 0x219B, 0x219C, 0x219D, 0x219E, 0x219F,
- /* GB+81 36 C8 30 */ 0x21A0, 0x21A1, 0x21A2, 0x21A3, 0x21A4,
- /* GB+81 36 C8 35 */ 0x21A5, 0x21A6, 0x21A7, 0x21A8, 0x21A9,
- /* GB+81 36 C9 30 */ 0x21AA, 0x21AB, 0x21AC, 0x21AD, 0x21AE,
- /* GB+81 36 C9 35 */ 0x21AF, 0x21B0, 0x21B1, 0x21B2, 0x21B3,
- /* GB+81 36 CA 30 */ 0x21B4, 0x21B5, 0x21B6, 0x21B7, 0x21B8,
- /* GB+81 36 CA 35 */ 0x21B9, 0x21BA, 0x21BB, 0x21BC, 0x21BD,
- /* GB+81 36 CB 30 */ 0x21BE, 0x21BF, 0x21C0, 0x21C1, 0x21C2,
- /* GB+81 36 CB 35 */ 0x21C3, 0x21C4, 0x21C5, 0x21C6, 0x21C7,
- /* GB+81 36 CC 30 */ 0x21C8, 0x21C9, 0x21CA, 0x21CB, 0x21CC,
- /* GB+81 36 CC 35 */ 0x21CD, 0x21CE, 0x21CF, 0x21D0, 0x21D1,
- /* GB+81 36 CD 30 */ 0x21D2, 0x21D3, 0x21D4, 0x21D5, 0x21D6,
- /* GB+81 36 CD 35 */ 0x21D7, 0x21D8, 0x21D9, 0x21DA, 0x21DB,
- /* GB+81 36 CE 30 */ 0x21DC, 0x21DD, 0x21DE, 0x21DF, 0x21E0,
- /* GB+81 36 CE 35 */ 0x21E1, 0x21E2, 0x21E3, 0x21E4, 0x21E5,
- /* GB+81 36 CF 30 */ 0x21E6, 0x21E7, 0x21E8, 0x21E9, 0x21EA,
- /* GB+81 36 CF 35 */ 0x21EB, 0x21EC, 0x21ED, 0x21EE, 0x21EF,
- /* GB+81 36 D0 30 */ 0x21F0, 0x21F1, 0x21F2, 0x21F3, 0x21F4,
- /* GB+81 36 D0 35 */ 0x21F5, 0x21F6, 0x21F7, 0x21F8, 0x21F9,
- /* GB+81 36 D1 30 */ 0x21FA, 0x21FB, 0x21FC, 0x21FD, 0x21FE,
- /* GB+81 36 D1 35 */ 0x21FF, 0x2200, 0x2201, 0x2202, 0x2203,
- /* GB+81 36 D2 30 */ 0x2204, 0x2205, 0x2206, 0x2207, 0x2209,
- /* GB+81 36 D2 35 */ 0x220A, 0x220B, 0x220C, 0x220D, 0x220E,
- /* GB+81 36 D3 30 */ 0x2210, 0x2212, 0x2213, 0x2214, 0x2216,
- /* GB+81 36 D3 35 */ 0x2217, 0x2218, 0x2219, 0x221B, 0x221C,
- /* GB+81 36 D4 30 */ 0x2221, 0x2222, 0x2224, 0x2226, 0x222C,
- /* GB+81 36 D4 35 */ 0x222D, 0x222F, 0x2230, 0x2231, 0x2232,
- /* GB+81 36 D5 30 */ 0x2233, 0x2238, 0x2239, 0x223A, 0x223B,
- /* GB+81 36 D5 35 */ 0x223C, 0x223E, 0x223F, 0x2240, 0x2241,
- /* GB+81 36 D6 30 */ 0x2242, 0x2243, 0x2244, 0x2245, 0x2246,
- /* GB+81 36 D6 35 */ 0x2247, 0x2249, 0x224A, 0x224B, 0x224D,
- /* GB+81 36 D7 30 */ 0x224E, 0x224F, 0x2250, 0x2251, 0x2253,
- /* GB+81 36 D7 35 */ 0x2254, 0x2255, 0x2256, 0x2257, 0x2258,
- /* GB+81 36 D8 30 */ 0x2259, 0x225A, 0x225B, 0x225C, 0x225D,
- /* GB+81 36 D8 35 */ 0x225E, 0x225F, 0x2262, 0x2263, 0x2268,
- /* GB+81 36 D9 30 */ 0x2269, 0x226A, 0x226B, 0x226C, 0x226D,
- /* GB+81 36 D9 35 */ 0x2270, 0x2271, 0x2272, 0x2273, 0x2274,
- /* GB+81 36 DA 30 */ 0x2275, 0x2276, 0x2277, 0x2278, 0x2279,
- /* GB+81 36 DA 35 */ 0x227A, 0x227B, 0x227C, 0x227D, 0x227E,
- /* GB+81 36 DB 30 */ 0x227F, 0x2280, 0x2281, 0x2282, 0x2283,
- /* GB+81 36 DB 35 */ 0x2284, 0x2285, 0x2286, 0x2287, 0x2288,
- /* GB+81 36 DC 30 */ 0x2289, 0x228A, 0x228B, 0x228C, 0x228D,
- /* GB+81 36 DC 35 */ 0x228E, 0x228F, 0x2290, 0x2291, 0x2292,
- /* GB+81 36 DD 30 */ 0x2293, 0x2294, 0x2296, 0x2297, 0x2298,
- /* GB+81 36 DD 35 */ 0x229A, 0x229B, 0x229C, 0x229D, 0x229E,
- /* GB+81 36 DE 30 */ 0x229F, 0x22A0, 0x22A1, 0x22A2, 0x22A3,
- /* GB+81 36 DE 35 */ 0x22A4, 0x22A6, 0x22A7, 0x22A8, 0x22A9,
- /* GB+81 36 DF 30 */ 0x22AA, 0x22AB, 0x22AC, 0x22AD, 0x22AE,
- /* GB+81 36 DF 35 */ 0x22AF, 0x22B0, 0x22B1, 0x22B2, 0x22B3,
- /* GB+81 36 E0 30 */ 0x22B4, 0x22B5, 0x22B6, 0x22B7, 0x22B8,
- /* GB+81 36 E0 35 */ 0x22B9, 0x22BA, 0x22BB, 0x22BC, 0x22BD,
- /* GB+81 36 E1 30 */ 0x22BE, 0x22C0, 0x22C1, 0x22C2, 0x22C3,
- /* GB+81 36 E1 35 */ 0x22C4, 0x22C5, 0x22C6, 0x22C7, 0x22C8,
- /* GB+81 36 E2 30 */ 0x22C9, 0x22CA, 0x22CB, 0x22CC, 0x22CD,
- /* GB+81 36 E2 35 */ 0x22CE, 0x22CF, 0x22D0, 0x22D1, 0x22D2,
- /* GB+81 36 E3 30 */ 0x22D3, 0x22D4, 0x22D5, 0x22D6, 0x22D7,
- /* GB+81 36 E3 35 */ 0x22D8, 0x22D9, 0x22DA, 0x22DB, 0x22DC,
- /* GB+81 36 E4 30 */ 0x22DD, 0x22DE, 0x22DF, 0x22E0, 0x22E1,
- /* GB+81 36 E4 35 */ 0x22E2, 0x22E3, 0x22E4, 0x22E5, 0x22E6,
- /* GB+81 36 E5 30 */ 0x22E7, 0x22E8, 0x22E9, 0x22EA, 0x22EB,
- /* GB+81 36 E5 35 */ 0x22EC, 0x22ED, 0x22EE, 0x22EF, 0x22F0,
- /* GB+81 36 E6 30 */ 0x22F1, 0x22F2, 0x22F3, 0x22F4, 0x22F5,
- /* GB+81 36 E6 35 */ 0x22F6, 0x22F7, 0x22F8, 0x22F9, 0x22FA,
- /* GB+81 36 E7 30 */ 0x22FB, 0x22FC, 0x22FD, 0x22FE, 0x22FF,
- /* GB+81 36 E7 35 */ 0x2300, 0x2301, 0x2302, 0x2303, 0x2304,
- /* GB+81 36 E8 30 */ 0x2305, 0x2306, 0x2307, 0x2308, 0x2309,
- /* GB+81 36 E8 35 */ 0x230A, 0x230B, 0x230C, 0x230D, 0x230E,
- /* GB+81 36 E9 30 */ 0x230F, 0x2310, 0x2311, 0x2313, 0x2314,
- /* GB+81 36 E9 35 */ 0x2315, 0x2316, 0x2317, 0x2318, 0x2319,
- /* GB+81 36 EA 30 */ 0x231A, 0x231B, 0x231C, 0x231D, 0x231E,
- /* GB+81 36 EA 35 */ 0x231F, 0x2320, 0x2321, 0x2322, 0x2323,
- /* GB+81 36 EB 30 */ 0x2324, 0x2325, 0x2326, 0x2327, 0x2328,
- /* GB+81 36 EB 35 */ 0x2329, 0x232A, 0x232B, 0x232C, 0x232D,
- /* GB+81 36 EC 30 */ 0x232E, 0x232F, 0x2330, 0x2331, 0x2332,
- /* GB+81 36 EC 35 */ 0x2333, 0x2334, 0x2335, 0x2336, 0x2337,
- /* GB+81 36 ED 30 */ 0x2338, 0x2339, 0x233A, 0x233B, 0x233C,
- /* GB+81 36 ED 35 */ 0x233D, 0x233E, 0x233F, 0x2340, 0x2341,
- /* GB+81 36 EE 30 */ 0x2342, 0x2343, 0x2344, 0x2345, 0x2346,
- /* GB+81 36 EE 35 */ 0x2347, 0x2348, 0x2349, 0x234A, 0x234B,
- /* GB+81 36 EF 30 */ 0x234C, 0x234D, 0x234E, 0x234F, 0x2350,
- /* GB+81 36 EF 35 */ 0x2351, 0x2352, 0x2353, 0x2354, 0x2355,
- /* GB+81 36 F0 30 */ 0x2356, 0x2357, 0x2358, 0x2359, 0x235A,
- /* GB+81 36 F0 35 */ 0x235B, 0x235C, 0x235D, 0x235E, 0x235F,
- /* GB+81 36 F1 30 */ 0x2360, 0x2361, 0x2362, 0x2363, 0x2364,
- /* GB+81 36 F1 35 */ 0x2365, 0x2366, 0x2367, 0x2368, 0x2369,
- /* GB+81 36 F2 30 */ 0x236A, 0x236B, 0x236C, 0x236D, 0x236E,
- /* GB+81 36 F2 35 */ 0x236F, 0x2370, 0x2371, 0x2372, 0x2373,
- /* GB+81 36 F3 30 */ 0x2374, 0x2375, 0x2376, 0x2377, 0x2378,
- /* GB+81 36 F3 35 */ 0x2379, 0x237A, 0x237B, 0x237C, 0x237D,
- /* GB+81 36 F4 30 */ 0x237E, 0x237F, 0x2380, 0x2381, 0x2382,
- /* GB+81 36 F4 35 */ 0x2383, 0x2384, 0x2385, 0x2386, 0x2387,
- /* GB+81 36 F5 30 */ 0x2388, 0x2389, 0x238A, 0x238B, 0x238C,
- /* GB+81 36 F5 35 */ 0x238D, 0x238E, 0x238F, 0x2390, 0x2391,
- /* GB+81 36 F6 30 */ 0x2392, 0x2393, 0x2394, 0x2395, 0x2396,
- /* GB+81 36 F6 35 */ 0x2397, 0x2398, 0x2399, 0x239A, 0x239B,
- /* GB+81 36 F7 30 */ 0x239C, 0x239D, 0x239E, 0x239F, 0x23A0,
- /* GB+81 36 F7 35 */ 0x23A1, 0x23A2, 0x23A3, 0x23A4, 0x23A5,
- /* GB+81 36 F8 30 */ 0x23A6, 0x23A7, 0x23A8, 0x23A9, 0x23AA,
- /* GB+81 36 F8 35 */ 0x23AB, 0x23AC, 0x23AD, 0x23AE, 0x23AF,
- /* GB+81 36 F9 30 */ 0x23B0, 0x23B1, 0x23B2, 0x23B3, 0x23B4,
- /* GB+81 36 F9 35 */ 0x23B5, 0x23B6, 0x23B7, 0x23B8, 0x23B9,
- /* GB+81 36 FA 30 */ 0x23BA, 0x23BB, 0x23BC, 0x23BD, 0x23BE,
- /* GB+81 36 FA 35 */ 0x23BF, 0x23C0, 0x23C1, 0x23C2, 0x23C3,
- /* GB+81 36 FB 30 */ 0x23C4, 0x23C5, 0x23C6, 0x23C7, 0x23C8,
- /* GB+81 36 FB 35 */ 0x23C9, 0x23CA, 0x23CB, 0x23CC, 0x23CD,
- /* GB+81 36 FC 30 */ 0x23CE, 0x23CF, 0x23D0, 0x23D1, 0x23D2,
- /* GB+81 36 FC 35 */ 0x23D3, 0x23D4, 0x23D5, 0x23D6, 0x23D7,
- /* GB+81 36 FD 30 */ 0x23D8, 0x23D9, 0x23DA, 0x23DB, 0x23DC,
- /* GB+81 36 FD 35 */ 0x23DD, 0x23DE, 0x23DF, 0x23E0, 0x23E1,
- /* GB+81 36 FE 30 */ 0x23E2, 0x23E3, 0x23E4, 0x23E5, 0x23E6,
- /* GB+81 36 FE 35 */ 0x23E7, 0x23E8, 0x23E9, 0x23EA, 0x23EB,
- /* GB+81 37 81 30 */ 0x23EC, 0x23ED, 0x23EE, 0x23EF, 0x23F0,
- /* GB+81 37 81 35 */ 0x23F1, 0x23F2, 0x23F3, 0x23F4, 0x23F5,
- /* GB+81 37 82 30 */ 0x23F6, 0x23F7, 0x23F8, 0x23F9, 0x23FA,
- /* GB+81 37 82 35 */ 0x23FB, 0x23FC, 0x23FD, 0x23FE, 0x23FF,
- /* GB+81 37 83 30 */ 0x2400, 0x2401, 0x2402, 0x2403, 0x2404,
- /* GB+81 37 83 35 */ 0x2405, 0x2406, 0x2407, 0x2408, 0x2409,
- /* GB+81 37 84 30 */ 0x240A, 0x240B, 0x240C, 0x240D, 0x240E,
- /* GB+81 37 84 35 */ 0x240F, 0x2410, 0x2411, 0x2412, 0x2413,
- /* GB+81 37 85 30 */ 0x2414, 0x2415, 0x2416, 0x2417, 0x2418,
- /* GB+81 37 85 35 */ 0x2419, 0x241A, 0x241B, 0x241C, 0x241D,
- /* GB+81 37 86 30 */ 0x241E, 0x241F, 0x2420, 0x2421, 0x2422,
- /* GB+81 37 86 35 */ 0x2423, 0x2424, 0x2425, 0x2426, 0x2427,
- /* GB+81 37 87 30 */ 0x2428, 0x2429, 0x242A, 0x242B, 0x242C,
- /* GB+81 37 87 35 */ 0x242D, 0x242E, 0x242F, 0x2430, 0x2431,
- /* GB+81 37 88 30 */ 0x2432, 0x2433, 0x2434, 0x2435, 0x2436,
- /* GB+81 37 88 35 */ 0x2437, 0x2438, 0x2439, 0x243A, 0x243B,
- /* GB+81 37 89 30 */ 0x243C, 0x243D, 0x243E, 0x243F, 0x2440,
- /* GB+81 37 89 35 */ 0x2441, 0x2442, 0x2443, 0x2444, 0x2445,
- /* GB+81 37 8A 30 */ 0x2446, 0x2447, 0x2448, 0x2449, 0x244A,
- /* GB+81 37 8A 35 */ 0x244B, 0x244C, 0x244D, 0x244E, 0x244F,
- /* GB+81 37 8B 30 */ 0x2450, 0x2451, 0x2452, 0x2453, 0x2454,
- /* GB+81 37 8B 35 */ 0x2455, 0x2456, 0x2457, 0x2458, 0x2459,
- /* GB+81 37 8C 30 */ 0x245A, 0x245B, 0x245C, 0x245D, 0x245E,
- /* GB+81 37 8C 35 */ 0x245F, 0x246A, 0x246B, 0x246C, 0x246D,
- /* GB+81 37 8D 30 */ 0x246E, 0x246F, 0x2470, 0x2471, 0x2472,
- /* GB+81 37 8D 35 */ 0x2473, 0x249C, 0x249D, 0x249E, 0x249F,
- /* GB+81 37 8E 30 */ 0x24A0, 0x24A1, 0x24A2, 0x24A3, 0x24A4,
- /* GB+81 37 8E 35 */ 0x24A5, 0x24A6, 0x24A7, 0x24A8, 0x24A9,
- /* GB+81 37 8F 30 */ 0x24AA, 0x24AB, 0x24AC, 0x24AD, 0x24AE,
- /* GB+81 37 8F 35 */ 0x24AF, 0x24B0, 0x24B1, 0x24B2, 0x24B3,
- /* GB+81 37 90 30 */ 0x24B4, 0x24B5, 0x24B6, 0x24B7, 0x24B8,
- /* GB+81 37 90 35 */ 0x24B9, 0x24BA, 0x24BB, 0x24BC, 0x24BD,
- /* GB+81 37 91 30 */ 0x24BE, 0x24BF, 0x24C0, 0x24C1, 0x24C2,
- /* GB+81 37 91 35 */ 0x24C3, 0x24C4, 0x24C5, 0x24C6, 0x24C7,
- /* GB+81 37 92 30 */ 0x24C8, 0x24C9, 0x24CA, 0x24CB, 0x24CC,
- /* GB+81 37 92 35 */ 0x24CD, 0x24CE, 0x24CF, 0x24D0, 0x24D1,
- /* GB+81 37 93 30 */ 0x24D2, 0x24D3, 0x24D4, 0x24D5, 0x24D6,
- /* GB+81 37 93 35 */ 0x24D7, 0x24D8, 0x24D9, 0x24DA, 0x24DB,
- /* GB+81 37 94 30 */ 0x24DC, 0x24DD, 0x24DE, 0x24DF, 0x24E0,
- /* GB+81 37 94 35 */ 0x24E1, 0x24E2, 0x24E3, 0x24E4, 0x24E5,
- /* GB+81 37 95 30 */ 0x24E6, 0x24E7, 0x24E8, 0x24E9, 0x24EA,
- /* GB+81 37 95 35 */ 0x24EB, 0x24EC, 0x24ED, 0x24EE, 0x24EF,
- /* GB+81 37 96 30 */ 0x24F0, 0x24F1, 0x24F2, 0x24F3, 0x24F4,
- /* GB+81 37 96 35 */ 0x24F5, 0x24F6, 0x24F7, 0x24F8, 0x24F9,
- /* GB+81 37 97 30 */ 0x24FA, 0x24FB, 0x24FC, 0x24FD, 0x24FE,
- /* GB+81 37 97 35 */ 0x24FF, 0x254C, 0x254D, 0x254E, 0x254F,
- /* GB+81 37 98 30 */ 0x2574, 0x2575, 0x2576, 0x2577, 0x2578,
- /* GB+81 37 98 35 */ 0x2579, 0x257A, 0x257B, 0x257C, 0x257D,
- /* GB+81 37 99 30 */ 0x257E, 0x257F, 0x2580, 0x2590, 0x2591,
- /* GB+81 37 99 35 */ 0x2592, 0x2596, 0x2597, 0x2598, 0x2599,
- /* GB+81 37 9A 30 */ 0x259A, 0x259B, 0x259C, 0x259D, 0x259E,
- /* GB+81 37 9A 35 */ 0x259F, 0x25A2, 0x25A3, 0x25A4, 0x25A5,
- /* GB+81 37 9B 30 */ 0x25A6, 0x25A7, 0x25A8, 0x25A9, 0x25AA,
- /* GB+81 37 9B 35 */ 0x25AB, 0x25AC, 0x25AD, 0x25AE, 0x25AF,
- /* GB+81 37 9C 30 */ 0x25B0, 0x25B1, 0x25B4, 0x25B5, 0x25B6,
- /* GB+81 37 9C 35 */ 0x25B7, 0x25B8, 0x25B9, 0x25BA, 0x25BB,
- /* GB+81 37 9D 30 */ 0x25BE, 0x25BF, 0x25C0, 0x25C1, 0x25C2,
- /* GB+81 37 9D 35 */ 0x25C3, 0x25C4, 0x25C5, 0x25C8, 0x25C9,
- /* GB+81 37 9E 30 */ 0x25CA, 0x25CC, 0x25CD, 0x25D0, 0x25D1,
- /* GB+81 37 9E 35 */ 0x25D2, 0x25D3, 0x25D4, 0x25D5, 0x25D6,
- /* GB+81 37 9F 30 */ 0x25D7, 0x25D8, 0x25D9, 0x25DA, 0x25DB,
- /* GB+81 37 9F 35 */ 0x25DC, 0x25DD, 0x25DE, 0x25DF, 0x25E0,
- /* GB+81 37 A0 30 */ 0x25E1, 0x25E6, 0x25E7, 0x25E8, 0x25E9,
- /* GB+81 37 A0 35 */ 0x25EA, 0x25EB, 0x25EC, 0x25ED, 0x25EE,
- /* GB+81 37 A1 30 */ 0x25EF, 0x25F0, 0x25F1, 0x25F2, 0x25F3,
- /* GB+81 37 A1 35 */ 0x25F4, 0x25F5, 0x25F6, 0x25F7, 0x25F8,
- /* GB+81 37 A2 30 */ 0x25F9, 0x25FA, 0x25FB, 0x25FC, 0x25FD,
- /* GB+81 37 A2 35 */ 0x25FE, 0x25FF, 0x2600, 0x2601, 0x2602,
- /* GB+81 37 A3 30 */ 0x2603, 0x2604, 0x2607, 0x2608, 0x260A,
- /* GB+81 37 A3 35 */ 0x260B, 0x260C, 0x260D, 0x260E, 0x260F,
- /* GB+81 37 A4 30 */ 0x2610, 0x2611, 0x2612, 0x2613, 0x2614,
- /* GB+81 37 A4 35 */ 0x2615, 0x2616, 0x2617, 0x2618, 0x2619,
- /* GB+81 37 A5 30 */ 0x261A, 0x261B, 0x261C, 0x261D, 0x261E,
- /* GB+81 37 A5 35 */ 0x261F, 0x2620, 0x2621, 0x2622, 0x2623,
- /* GB+81 37 A6 30 */ 0x2624, 0x2625, 0x2626, 0x2627, 0x2628,
- /* GB+81 37 A6 35 */ 0x2629, 0x262A, 0x262B, 0x262C, 0x262D,
- /* GB+81 37 A7 30 */ 0x262E, 0x262F, 0x2630, 0x2631, 0x2632,
- /* GB+81 37 A7 35 */ 0x2633, 0x2634, 0x2635, 0x2636, 0x2637,
- /* GB+81 37 A8 30 */ 0x2638, 0x2639, 0x263A, 0x263B, 0x263C,
- /* GB+81 37 A8 35 */ 0x263D, 0x263E, 0x263F, 0x2641,
- /* Contiguous area: GB+81 38 FD 39 .. GB+82 30 A6 32 */
- /* GB+81 38 FD 39 */ 0x2E82,
- /* GB+81 38 FE 30 */ 0x2E83, 0x2E85, 0x2E86, 0x2E87, 0x2E89,
- /* GB+81 38 FE 35 */ 0x2E8A, 0x2E8D, 0x2E8E, 0x2E8F, 0x2E90,
- /* GB+81 39 81 30 */ 0x2E91, 0x2E92, 0x2E93, 0x2E94, 0x2E95,
- /* GB+81 39 81 35 */ 0x2E96, 0x2E98, 0x2E99, 0x2E9A, 0x2E9B,
- /* GB+81 39 82 30 */ 0x2E9C, 0x2E9D, 0x2E9E, 0x2E9F, 0x2EA0,
- /* GB+81 39 82 35 */ 0x2EA1, 0x2EA2, 0x2EA3, 0x2EA4, 0x2EA5,
- /* GB+81 39 83 30 */ 0x2EA6, 0x2EA8, 0x2EA9, 0x2EAB, 0x2EAC,
- /* GB+81 39 83 35 */ 0x2EAD, 0x2EAF, 0x2EB0, 0x2EB1, 0x2EB2,
- /* GB+81 39 84 30 */ 0x2EB4, 0x2EB5, 0x2EB8, 0x2EB9, 0x2EBA,
- /* GB+81 39 84 35 */ 0x2EBC, 0x2EBD, 0x2EBE, 0x2EBF, 0x2EC0,
- /* GB+81 39 85 30 */ 0x2EC1, 0x2EC2, 0x2EC3, 0x2EC4, 0x2EC5,
- /* GB+81 39 85 35 */ 0x2EC6, 0x2EC7, 0x2EC8, 0x2EC9, 0x2ECB,
- /* GB+81 39 86 30 */ 0x2ECC, 0x2ECD, 0x2ECE, 0x2ECF, 0x2ED0,
- /* GB+81 39 86 35 */ 0x2ED1, 0x2ED2, 0x2ED3, 0x2ED4, 0x2ED5,
- /* GB+81 39 87 30 */ 0x2ED6, 0x2ED7, 0x2ED8, 0x2ED9, 0x2EDA,
- /* GB+81 39 87 35 */ 0x2EDB, 0x2EDC, 0x2EDD, 0x2EDE, 0x2EDF,
- /* GB+81 39 88 30 */ 0x2EE0, 0x2EE1, 0x2EE2, 0x2EE3, 0x2EE4,
- /* GB+81 39 88 35 */ 0x2EE5, 0x2EE6, 0x2EE7, 0x2EE8, 0x2EE9,
- /* GB+81 39 89 30 */ 0x2EEA, 0x2EEB, 0x2EEC, 0x2EED, 0x2EEE,
- /* GB+81 39 89 35 */ 0x2EEF, 0x2EF0, 0x2EF1, 0x2EF2, 0x2EF3,
- /* GB+81 39 8A 30 */ 0x2EF4, 0x2EF5, 0x2EF6, 0x2EF7, 0x2EF8,
- /* GB+81 39 8A 35 */ 0x2EF9, 0x2EFA, 0x2EFB, 0x2EFC, 0x2EFD,
- /* GB+81 39 8B 30 */ 0x2EFE, 0x2EFF, 0x2F00, 0x2F01, 0x2F02,
- /* GB+81 39 8B 35 */ 0x2F03, 0x2F04, 0x2F05, 0x2F06, 0x2F07,
- /* GB+81 39 8C 30 */ 0x2F08, 0x2F09, 0x2F0A, 0x2F0B, 0x2F0C,
- /* GB+81 39 8C 35 */ 0x2F0D, 0x2F0E, 0x2F0F, 0x2F10, 0x2F11,
- /* GB+81 39 8D 30 */ 0x2F12, 0x2F13, 0x2F14, 0x2F15, 0x2F16,
- /* GB+81 39 8D 35 */ 0x2F17, 0x2F18, 0x2F19, 0x2F1A, 0x2F1B,
- /* GB+81 39 8E 30 */ 0x2F1C, 0x2F1D, 0x2F1E, 0x2F1F, 0x2F20,
- /* GB+81 39 8E 35 */ 0x2F21, 0x2F22, 0x2F23, 0x2F24, 0x2F25,
- /* GB+81 39 8F 30 */ 0x2F26, 0x2F27, 0x2F28, 0x2F29, 0x2F2A,
- /* GB+81 39 8F 35 */ 0x2F2B, 0x2F2C, 0x2F2D, 0x2F2E, 0x2F2F,
- /* GB+81 39 90 30 */ 0x2F30, 0x2F31, 0x2F32, 0x2F33, 0x2F34,
- /* GB+81 39 90 35 */ 0x2F35, 0x2F36, 0x2F37, 0x2F38, 0x2F39,
- /* GB+81 39 91 30 */ 0x2F3A, 0x2F3B, 0x2F3C, 0x2F3D, 0x2F3E,
- /* GB+81 39 91 35 */ 0x2F3F, 0x2F40, 0x2F41, 0x2F42, 0x2F43,
- /* GB+81 39 92 30 */ 0x2F44, 0x2F45, 0x2F46, 0x2F47, 0x2F48,
- /* GB+81 39 92 35 */ 0x2F49, 0x2F4A, 0x2F4B, 0x2F4C, 0x2F4D,
- /* GB+81 39 93 30 */ 0x2F4E, 0x2F4F, 0x2F50, 0x2F51, 0x2F52,
- /* GB+81 39 93 35 */ 0x2F53, 0x2F54, 0x2F55, 0x2F56, 0x2F57,
- /* GB+81 39 94 30 */ 0x2F58, 0x2F59, 0x2F5A, 0x2F5B, 0x2F5C,
- /* GB+81 39 94 35 */ 0x2F5D, 0x2F5E, 0x2F5F, 0x2F60, 0x2F61,
- /* GB+81 39 95 30 */ 0x2F62, 0x2F63, 0x2F64, 0x2F65, 0x2F66,
- /* GB+81 39 95 35 */ 0x2F67, 0x2F68, 0x2F69, 0x2F6A, 0x2F6B,
- /* GB+81 39 96 30 */ 0x2F6C, 0x2F6D, 0x2F6E, 0x2F6F, 0x2F70,
- /* GB+81 39 96 35 */ 0x2F71, 0x2F72, 0x2F73, 0x2F74, 0x2F75,
- /* GB+81 39 97 30 */ 0x2F76, 0x2F77, 0x2F78, 0x2F79, 0x2F7A,
- /* GB+81 39 97 35 */ 0x2F7B, 0x2F7C, 0x2F7D, 0x2F7E, 0x2F7F,
- /* GB+81 39 98 30 */ 0x2F80, 0x2F81, 0x2F82, 0x2F83, 0x2F84,
- /* GB+81 39 98 35 */ 0x2F85, 0x2F86, 0x2F87, 0x2F88, 0x2F89,
- /* GB+81 39 99 30 */ 0x2F8A, 0x2F8B, 0x2F8C, 0x2F8D, 0x2F8E,
- /* GB+81 39 99 35 */ 0x2F8F, 0x2F90, 0x2F91, 0x2F92, 0x2F93,
- /* GB+81 39 9A 30 */ 0x2F94, 0x2F95, 0x2F96, 0x2F97, 0x2F98,
- /* GB+81 39 9A 35 */ 0x2F99, 0x2F9A, 0x2F9B, 0x2F9C, 0x2F9D,
- /* GB+81 39 9B 30 */ 0x2F9E, 0x2F9F, 0x2FA0, 0x2FA1, 0x2FA2,
- /* GB+81 39 9B 35 */ 0x2FA3, 0x2FA4, 0x2FA5, 0x2FA6, 0x2FA7,
- /* GB+81 39 9C 30 */ 0x2FA8, 0x2FA9, 0x2FAA, 0x2FAB, 0x2FAC,
- /* GB+81 39 9C 35 */ 0x2FAD, 0x2FAE, 0x2FAF, 0x2FB0, 0x2FB1,
- /* GB+81 39 9D 30 */ 0x2FB2, 0x2FB3, 0x2FB4, 0x2FB5, 0x2FB6,
- /* GB+81 39 9D 35 */ 0x2FB7, 0x2FB8, 0x2FB9, 0x2FBA, 0x2FBB,
- /* GB+81 39 9E 30 */ 0x2FBC, 0x2FBD, 0x2FBE, 0x2FBF, 0x2FC0,
- /* GB+81 39 9E 35 */ 0x2FC1, 0x2FC2, 0x2FC3, 0x2FC4, 0x2FC5,
- /* GB+81 39 9F 30 */ 0x2FC6, 0x2FC7, 0x2FC8, 0x2FC9, 0x2FCA,
- /* GB+81 39 9F 35 */ 0x2FCB, 0x2FCC, 0x2FCD, 0x2FCE, 0x2FCF,
- /* GB+81 39 A0 30 */ 0x2FD0, 0x2FD1, 0x2FD2, 0x2FD3, 0x2FD4,
- /* GB+81 39 A0 35 */ 0x2FD5, 0x2FD6, 0x2FD7, 0x2FD8, 0x2FD9,
- /* GB+81 39 A1 30 */ 0x2FDA, 0x2FDB, 0x2FDC, 0x2FDD, 0x2FDE,
- /* GB+81 39 A1 35 */ 0x2FDF, 0x2FE0, 0x2FE1, 0x2FE2, 0x2FE3,
- /* GB+81 39 A2 30 */ 0x2FE4, 0x2FE5, 0x2FE6, 0x2FE7, 0x2FE8,
- /* GB+81 39 A2 35 */ 0x2FE9, 0x2FEA, 0x2FEB, 0x2FEC, 0x2FED,
- /* GB+81 39 A3 30 */ 0x2FEE, 0x2FEF, 0x2FFC, 0x2FFD, 0x2FFE,
- /* GB+81 39 A3 35 */ 0x2FFF, 0x3004, 0x3018, 0x3019, 0x301A,
- /* GB+81 39 A4 30 */ 0x301B, 0x301C, 0x301F, 0x3020, 0x302A,
- /* GB+81 39 A4 35 */ 0x302B, 0x302C, 0x302D, 0x302E, 0x302F,
- /* GB+81 39 A5 30 */ 0x3030, 0x3031, 0x3032, 0x3033, 0x3034,
- /* GB+81 39 A5 35 */ 0x3035, 0x3036, 0x3037, 0x3038, 0x3039,
- /* GB+81 39 A6 30 */ 0x303A, 0x303B, 0x303C, 0x303D, 0x303F,
- /* GB+81 39 A6 35 */ 0x3040, 0x3094, 0x3095, 0x3096, 0x3097,
- /* GB+81 39 A7 30 */ 0x3098, 0x3099, 0x309A, 0x309F, 0x30A0,
- /* GB+81 39 A7 35 */ 0x30F7, 0x30F8, 0x30F9, 0x30FA, 0x30FB,
- /* GB+81 39 A8 30 */ 0x30FF, 0x3100, 0x3101, 0x3102, 0x3103,
- /* GB+81 39 A8 35 */ 0x3104, 0x312A, 0x312B, 0x312C, 0x312D,
- /* GB+81 39 A9 30 */ 0x312E, 0x312F, 0x3130, 0x3131, 0x3132,
- /* GB+81 39 A9 35 */ 0x3133, 0x3134, 0x3135, 0x3136, 0x3137,
- /* GB+81 39 AA 30 */ 0x3138, 0x3139, 0x313A, 0x313B, 0x313C,
- /* GB+81 39 AA 35 */ 0x313D, 0x313E, 0x313F, 0x3140, 0x3141,
- /* GB+81 39 AB 30 */ 0x3142, 0x3143, 0x3144, 0x3145, 0x3146,
- /* GB+81 39 AB 35 */ 0x3147, 0x3148, 0x3149, 0x314A, 0x314B,
- /* GB+81 39 AC 30 */ 0x314C, 0x314D, 0x314E, 0x314F, 0x3150,
- /* GB+81 39 AC 35 */ 0x3151, 0x3152, 0x3153, 0x3154, 0x3155,
- /* GB+81 39 AD 30 */ 0x3156, 0x3157, 0x3158, 0x3159, 0x315A,
- /* GB+81 39 AD 35 */ 0x315B, 0x315C, 0x315D, 0x315E, 0x315F,
- /* GB+81 39 AE 30 */ 0x3160, 0x3161, 0x3162, 0x3163, 0x3164,
- /* GB+81 39 AE 35 */ 0x3165, 0x3166, 0x3167, 0x3168, 0x3169,
- /* GB+81 39 AF 30 */ 0x316A, 0x316B, 0x316C, 0x316D, 0x316E,
- /* GB+81 39 AF 35 */ 0x316F, 0x3170, 0x3171, 0x3172, 0x3173,
- /* GB+81 39 B0 30 */ 0x3174, 0x3175, 0x3176, 0x3177, 0x3178,
- /* GB+81 39 B0 35 */ 0x3179, 0x317A, 0x317B, 0x317C, 0x317D,
- /* GB+81 39 B1 30 */ 0x317E, 0x317F, 0x3180, 0x3181, 0x3182,
- /* GB+81 39 B1 35 */ 0x3183, 0x3184, 0x3185, 0x3186, 0x3187,
- /* GB+81 39 B2 30 */ 0x3188, 0x3189, 0x318A, 0x318B, 0x318C,
- /* GB+81 39 B2 35 */ 0x318D, 0x318E, 0x318F, 0x3190, 0x3191,
- /* GB+81 39 B3 30 */ 0x3192, 0x3193, 0x3194, 0x3195, 0x3196,
- /* GB+81 39 B3 35 */ 0x3197, 0x3198, 0x3199, 0x319A, 0x319B,
- /* GB+81 39 B4 30 */ 0x319C, 0x319D, 0x319E, 0x319F, 0x31A0,
- /* GB+81 39 B4 35 */ 0x31A1, 0x31A2, 0x31A3, 0x31A4, 0x31A5,
- /* GB+81 39 B5 30 */ 0x31A6, 0x31A7, 0x31A8, 0x31A9, 0x31AA,
- /* GB+81 39 B5 35 */ 0x31AB, 0x31AC, 0x31AD, 0x31AE, 0x31AF,
- /* GB+81 39 B6 30 */ 0x31B0, 0x31B1, 0x31B2, 0x31B3, 0x31B4,
- /* GB+81 39 B6 35 */ 0x31B5, 0x31B6, 0x31B7, 0x31B8, 0x31B9,
- /* GB+81 39 B7 30 */ 0x31BA, 0x31BB, 0x31BC, 0x31BD, 0x31BE,
- /* GB+81 39 B7 35 */ 0x31BF, 0x31C0, 0x31C1, 0x31C2, 0x31C3,
- /* GB+81 39 B8 30 */ 0x31C4, 0x31C5, 0x31C6, 0x31C7, 0x31C8,
- /* GB+81 39 B8 35 */ 0x31C9, 0x31CA, 0x31CB, 0x31CC, 0x31CD,
- /* GB+81 39 B9 30 */ 0x31CE, 0x31CF, 0x31D0, 0x31D1, 0x31D2,
- /* GB+81 39 B9 35 */ 0x31D3, 0x31D4, 0x31D5, 0x31D6, 0x31D7,
- /* GB+81 39 BA 30 */ 0x31D8, 0x31D9, 0x31DA, 0x31DB, 0x31DC,
- /* GB+81 39 BA 35 */ 0x31DD, 0x31DE, 0x31DF, 0x31E0, 0x31E1,
- /* GB+81 39 BB 30 */ 0x31E2, 0x31E3, 0x31E4, 0x31E5, 0x31E6,
- /* GB+81 39 BB 35 */ 0x31E7, 0x31E8, 0x31E9, 0x31EA, 0x31EB,
- /* GB+81 39 BC 30 */ 0x31EC, 0x31ED, 0x31EE, 0x31EF, 0x31F0,
- /* GB+81 39 BC 35 */ 0x31F1, 0x31F2, 0x31F3, 0x31F4, 0x31F5,
- /* GB+81 39 BD 30 */ 0x31F6, 0x31F7, 0x31F8, 0x31F9, 0x31FA,
- /* GB+81 39 BD 35 */ 0x31FB, 0x31FC, 0x31FD, 0x31FE, 0x31FF,
- /* GB+81 39 BE 30 */ 0x3200, 0x3201, 0x3202, 0x3203, 0x3204,
- /* GB+81 39 BE 35 */ 0x3205, 0x3206, 0x3207, 0x3208, 0x3209,
- /* GB+81 39 BF 30 */ 0x320A, 0x320B, 0x320C, 0x320D, 0x320E,
- /* GB+81 39 BF 35 */ 0x320F, 0x3210, 0x3211, 0x3212, 0x3213,
- /* GB+81 39 C0 30 */ 0x3214, 0x3215, 0x3216, 0x3217, 0x3218,
- /* GB+81 39 C0 35 */ 0x3219, 0x321A, 0x321B, 0x321C, 0x321D,
- /* GB+81 39 C1 30 */ 0x321E, 0x321F, 0x322A, 0x322B, 0x322C,
- /* GB+81 39 C1 35 */ 0x322D, 0x322E, 0x322F, 0x3230, 0x3232,
- /* GB+81 39 C2 30 */ 0x3233, 0x3234, 0x3235, 0x3236, 0x3237,
- /* GB+81 39 C2 35 */ 0x3238, 0x3239, 0x323A, 0x323B, 0x323C,
- /* GB+81 39 C3 30 */ 0x323D, 0x323E, 0x323F, 0x3240, 0x3241,
- /* GB+81 39 C3 35 */ 0x3242, 0x3243, 0x3244, 0x3245, 0x3246,
- /* GB+81 39 C4 30 */ 0x3247, 0x3248, 0x3249, 0x324A, 0x324B,
- /* GB+81 39 C4 35 */ 0x324C, 0x324D, 0x324E, 0x324F, 0x3250,
- /* GB+81 39 C5 30 */ 0x3251, 0x3252, 0x3253, 0x3254, 0x3255,
- /* GB+81 39 C5 35 */ 0x3256, 0x3257, 0x3258, 0x3259, 0x325A,
- /* GB+81 39 C6 30 */ 0x325B, 0x325C, 0x325D, 0x325E, 0x325F,
- /* GB+81 39 C6 35 */ 0x3260, 0x3261, 0x3262, 0x3263, 0x3264,
- /* GB+81 39 C7 30 */ 0x3265, 0x3266, 0x3267, 0x3268, 0x3269,
- /* GB+81 39 C7 35 */ 0x326A, 0x326B, 0x326C, 0x326D, 0x326E,
- /* GB+81 39 C8 30 */ 0x326F, 0x3270, 0x3271, 0x3272, 0x3273,
- /* GB+81 39 C8 35 */ 0x3274, 0x3275, 0x3276, 0x3277, 0x3278,
- /* GB+81 39 C9 30 */ 0x3279, 0x327A, 0x327B, 0x327C, 0x327D,
- /* GB+81 39 C9 35 */ 0x327E, 0x327F, 0x3280, 0x3281, 0x3282,
- /* GB+81 39 CA 30 */ 0x3283, 0x3284, 0x3285, 0x3286, 0x3287,
- /* GB+81 39 CA 35 */ 0x3288, 0x3289, 0x328A, 0x328B, 0x328C,
- /* GB+81 39 CB 30 */ 0x328D, 0x328E, 0x328F, 0x3290, 0x3291,
- /* GB+81 39 CB 35 */ 0x3292, 0x3293, 0x3294, 0x3295, 0x3296,
- /* GB+81 39 CC 30 */ 0x3297, 0x3298, 0x3299, 0x329A, 0x329B,
- /* GB+81 39 CC 35 */ 0x329C, 0x329D, 0x329E, 0x329F, 0x32A0,
- /* GB+81 39 CD 30 */ 0x32A1, 0x32A2, 0x32A4, 0x32A5, 0x32A6,
- /* GB+81 39 CD 35 */ 0x32A7, 0x32A8, 0x32A9, 0x32AA, 0x32AB,
- /* GB+81 39 CE 30 */ 0x32AC, 0x32AD, 0x32AE, 0x32AF, 0x32B0,
- /* GB+81 39 CE 35 */ 0x32B1, 0x32B2, 0x32B3, 0x32B4, 0x32B5,
- /* GB+81 39 CF 30 */ 0x32B6, 0x32B7, 0x32B8, 0x32B9, 0x32BA,
- /* GB+81 39 CF 35 */ 0x32BB, 0x32BC, 0x32BD, 0x32BE, 0x32BF,
- /* GB+81 39 D0 30 */ 0x32C0, 0x32C1, 0x32C2, 0x32C3, 0x32C4,
- /* GB+81 39 D0 35 */ 0x32C5, 0x32C6, 0x32C7, 0x32C8, 0x32C9,
- /* GB+81 39 D1 30 */ 0x32CA, 0x32CB, 0x32CC, 0x32CD, 0x32CE,
- /* GB+81 39 D1 35 */ 0x32CF, 0x32D0, 0x32D1, 0x32D2, 0x32D3,
- /* GB+81 39 D2 30 */ 0x32D4, 0x32D5, 0x32D6, 0x32D7, 0x32D8,
- /* GB+81 39 D2 35 */ 0x32D9, 0x32DA, 0x32DB, 0x32DC, 0x32DD,
- /* GB+81 39 D3 30 */ 0x32DE, 0x32DF, 0x32E0, 0x32E1, 0x32E2,
- /* GB+81 39 D3 35 */ 0x32E3, 0x32E4, 0x32E5, 0x32E6, 0x32E7,
- /* GB+81 39 D4 30 */ 0x32E8, 0x32E9, 0x32EA, 0x32EB, 0x32EC,
- /* GB+81 39 D4 35 */ 0x32ED, 0x32EE, 0x32EF, 0x32F0, 0x32F1,
- /* GB+81 39 D5 30 */ 0x32F2, 0x32F3, 0x32F4, 0x32F5, 0x32F6,
- /* GB+81 39 D5 35 */ 0x32F7, 0x32F8, 0x32F9, 0x32FA, 0x32FB,
- /* GB+81 39 D6 30 */ 0x32FC, 0x32FD, 0x32FE, 0x32FF, 0x3300,
- /* GB+81 39 D6 35 */ 0x3301, 0x3302, 0x3303, 0x3304, 0x3305,
- /* GB+81 39 D7 30 */ 0x3306, 0x3307, 0x3308, 0x3309, 0x330A,
- /* GB+81 39 D7 35 */ 0x330B, 0x330C, 0x330D, 0x330E, 0x330F,
- /* GB+81 39 D8 30 */ 0x3310, 0x3311, 0x3312, 0x3313, 0x3314,
- /* GB+81 39 D8 35 */ 0x3315, 0x3316, 0x3317, 0x3318, 0x3319,
- /* GB+81 39 D9 30 */ 0x331A, 0x331B, 0x331C, 0x331D, 0x331E,
- /* GB+81 39 D9 35 */ 0x331F, 0x3320, 0x3321, 0x3322, 0x3323,
- /* GB+81 39 DA 30 */ 0x3324, 0x3325, 0x3326, 0x3327, 0x3328,
- /* GB+81 39 DA 35 */ 0x3329, 0x332A, 0x332B, 0x332C, 0x332D,
- /* GB+81 39 DB 30 */ 0x332E, 0x332F, 0x3330, 0x3331, 0x3332,
- /* GB+81 39 DB 35 */ 0x3333, 0x3334, 0x3335, 0x3336, 0x3337,
- /* GB+81 39 DC 30 */ 0x3338, 0x3339, 0x333A, 0x333B, 0x333C,
- /* GB+81 39 DC 35 */ 0x333D, 0x333E, 0x333F, 0x3340, 0x3341,
- /* GB+81 39 DD 30 */ 0x3342, 0x3343, 0x3344, 0x3345, 0x3346,
- /* GB+81 39 DD 35 */ 0x3347, 0x3348, 0x3349, 0x334A, 0x334B,
- /* GB+81 39 DE 30 */ 0x334C, 0x334D, 0x334E, 0x334F, 0x3350,
- /* GB+81 39 DE 35 */ 0x3351, 0x3352, 0x3353, 0x3354, 0x3355,
- /* GB+81 39 DF 30 */ 0x3356, 0x3357, 0x3358, 0x3359, 0x335A,
- /* GB+81 39 DF 35 */ 0x335B, 0x335C, 0x335D, 0x335E, 0x335F,
- /* GB+81 39 E0 30 */ 0x3360, 0x3361, 0x3362, 0x3363, 0x3364,
- /* GB+81 39 E0 35 */ 0x3365, 0x3366, 0x3367, 0x3368, 0x3369,
- /* GB+81 39 E1 30 */ 0x336A, 0x336B, 0x336C, 0x336D, 0x336E,
- /* GB+81 39 E1 35 */ 0x336F, 0x3370, 0x3371, 0x3372, 0x3373,
- /* GB+81 39 E2 30 */ 0x3374, 0x3375, 0x3376, 0x3377, 0x3378,
- /* GB+81 39 E2 35 */ 0x3379, 0x337A, 0x337B, 0x337C, 0x337D,
- /* GB+81 39 E3 30 */ 0x337E, 0x337F, 0x3380, 0x3381, 0x3382,
- /* GB+81 39 E3 35 */ 0x3383, 0x3384, 0x3385, 0x3386, 0x3387,
- /* GB+81 39 E4 30 */ 0x3388, 0x3389, 0x338A, 0x338B, 0x338C,
- /* GB+81 39 E4 35 */ 0x338D, 0x3390, 0x3391, 0x3392, 0x3393,
- /* GB+81 39 E5 30 */ 0x3394, 0x3395, 0x3396, 0x3397, 0x3398,
- /* GB+81 39 E5 35 */ 0x3399, 0x339A, 0x339B, 0x339F, 0x33A0,
- /* GB+81 39 E6 30 */ 0x33A2, 0x33A3, 0x33A4, 0x33A5, 0x33A6,
- /* GB+81 39 E6 35 */ 0x33A7, 0x33A8, 0x33A9, 0x33AA, 0x33AB,
- /* GB+81 39 E7 30 */ 0x33AC, 0x33AD, 0x33AE, 0x33AF, 0x33B0,
- /* GB+81 39 E7 35 */ 0x33B1, 0x33B2, 0x33B3, 0x33B4, 0x33B5,
- /* GB+81 39 E8 30 */ 0x33B6, 0x33B7, 0x33B8, 0x33B9, 0x33BA,
- /* GB+81 39 E8 35 */ 0x33BB, 0x33BC, 0x33BD, 0x33BE, 0x33BF,
- /* GB+81 39 E9 30 */ 0x33C0, 0x33C1, 0x33C2, 0x33C3, 0x33C5,
- /* GB+81 39 E9 35 */ 0x33C6, 0x33C7, 0x33C8, 0x33C9, 0x33CA,
- /* GB+81 39 EA 30 */ 0x33CB, 0x33CC, 0x33CD, 0x33CF, 0x33D0,
- /* GB+81 39 EA 35 */ 0x33D3, 0x33D4, 0x33D6, 0x33D7, 0x33D8,
- /* GB+81 39 EB 30 */ 0x33D9, 0x33DA, 0x33DB, 0x33DC, 0x33DD,
- /* GB+81 39 EB 35 */ 0x33DE, 0x33DF, 0x33E0, 0x33E1, 0x33E2,
- /* GB+81 39 EC 30 */ 0x33E3, 0x33E4, 0x33E5, 0x33E6, 0x33E7,
- /* GB+81 39 EC 35 */ 0x33E8, 0x33E9, 0x33EA, 0x33EB, 0x33EC,
- /* GB+81 39 ED 30 */ 0x33ED, 0x33EE, 0x33EF, 0x33F0, 0x33F1,
- /* GB+81 39 ED 35 */ 0x33F2, 0x33F3, 0x33F4, 0x33F5, 0x33F6,
- /* GB+81 39 EE 30 */ 0x33F7, 0x33F8, 0x33F9, 0x33FA, 0x33FB,
- /* GB+81 39 EE 35 */ 0x33FC, 0x33FD, 0x33FE, 0x33FF, 0x3400,
- /* GB+81 39 EF 30 */ 0x3401, 0x3402, 0x3403, 0x3404, 0x3405,
- /* GB+81 39 EF 35 */ 0x3406, 0x3407, 0x3408, 0x3409, 0x340A,
- /* GB+81 39 F0 30 */ 0x340B, 0x340C, 0x340D, 0x340E, 0x340F,
- /* GB+81 39 F0 35 */ 0x3410, 0x3411, 0x3412, 0x3413, 0x3414,
- /* GB+81 39 F1 30 */ 0x3415, 0x3416, 0x3417, 0x3418, 0x3419,
- /* GB+81 39 F1 35 */ 0x341A, 0x341B, 0x341C, 0x341D, 0x341E,
- /* GB+81 39 F2 30 */ 0x341F, 0x3420, 0x3421, 0x3422, 0x3423,
- /* GB+81 39 F2 35 */ 0x3424, 0x3425, 0x3426, 0x3427, 0x3428,
- /* GB+81 39 F3 30 */ 0x3429, 0x342A, 0x342B, 0x342C, 0x342D,
- /* GB+81 39 F3 35 */ 0x342E, 0x342F, 0x3430, 0x3431, 0x3432,
- /* GB+81 39 F4 30 */ 0x3433, 0x3434, 0x3435, 0x3436, 0x3437,
- /* GB+81 39 F4 35 */ 0x3438, 0x3439, 0x343A, 0x343B, 0x343C,
- /* GB+81 39 F5 30 */ 0x343D, 0x343E, 0x343F, 0x3440, 0x3441,
- /* GB+81 39 F5 35 */ 0x3442, 0x3443, 0x3444, 0x3445, 0x3446,
- /* GB+81 39 F6 30 */ 0x3448, 0x3449, 0x344A, 0x344B, 0x344C,
- /* GB+81 39 F6 35 */ 0x344D, 0x344E, 0x344F, 0x3450, 0x3451,
- /* GB+81 39 F7 30 */ 0x3452, 0x3453, 0x3454, 0x3455, 0x3456,
- /* GB+81 39 F7 35 */ 0x3457, 0x3458, 0x3459, 0x345A, 0x345B,
- /* GB+81 39 F8 30 */ 0x345C, 0x345D, 0x345E, 0x345F, 0x3460,
- /* GB+81 39 F8 35 */ 0x3461, 0x3462, 0x3463, 0x3464, 0x3465,
- /* GB+81 39 F9 30 */ 0x3466, 0x3467, 0x3468, 0x3469, 0x346A,
- /* GB+81 39 F9 35 */ 0x346B, 0x346C, 0x346D, 0x346E, 0x346F,
- /* GB+81 39 FA 30 */ 0x3470, 0x3471, 0x3472, 0x3474, 0x3475,
- /* GB+81 39 FA 35 */ 0x3476, 0x3477, 0x3478, 0x3479, 0x347A,
- /* GB+81 39 FB 30 */ 0x347B, 0x347C, 0x347D, 0x347E, 0x347F,
- /* GB+81 39 FB 35 */ 0x3480, 0x3481, 0x3482, 0x3483, 0x3484,
- /* GB+81 39 FC 30 */ 0x3485, 0x3486, 0x3487, 0x3488, 0x3489,
- /* GB+81 39 FC 35 */ 0x348A, 0x348B, 0x348C, 0x348D, 0x348E,
- /* GB+81 39 FD 30 */ 0x348F, 0x3490, 0x3491, 0x3492, 0x3493,
- /* GB+81 39 FD 35 */ 0x3494, 0x3495, 0x3496, 0x3497, 0x3498,
- /* GB+81 39 FE 30 */ 0x3499, 0x349A, 0x349B, 0x349C, 0x349D,
- /* GB+81 39 FE 35 */ 0x349E, 0x349F, 0x34A0, 0x34A1, 0x34A2,
- /* GB+82 30 81 30 */ 0x34A3, 0x34A4, 0x34A5, 0x34A6, 0x34A7,
- /* GB+82 30 81 35 */ 0x34A8, 0x34A9, 0x34AA, 0x34AB, 0x34AC,
- /* GB+82 30 82 30 */ 0x34AD, 0x34AE, 0x34AF, 0x34B0, 0x34B1,
- /* GB+82 30 82 35 */ 0x34B2, 0x34B3, 0x34B4, 0x34B5, 0x34B6,
- /* GB+82 30 83 30 */ 0x34B7, 0x34B8, 0x34B9, 0x34BA, 0x34BB,
- /* GB+82 30 83 35 */ 0x34BC, 0x34BD, 0x34BE, 0x34BF, 0x34C0,
- /* GB+82 30 84 30 */ 0x34C1, 0x34C2, 0x34C3, 0x34C4, 0x34C5,
- /* GB+82 30 84 35 */ 0x34C6, 0x34C7, 0x34C8, 0x34C9, 0x34CA,
- /* GB+82 30 85 30 */ 0x34CB, 0x34CC, 0x34CD, 0x34CE, 0x34CF,
- /* GB+82 30 85 35 */ 0x34D0, 0x34D1, 0x34D2, 0x34D3, 0x34D4,
- /* GB+82 30 86 30 */ 0x34D5, 0x34D6, 0x34D7, 0x34D8, 0x34D9,
- /* GB+82 30 86 35 */ 0x34DA, 0x34DB, 0x34DC, 0x34DD, 0x34DE,
- /* GB+82 30 87 30 */ 0x34DF, 0x34E0, 0x34E1, 0x34E2, 0x34E3,
- /* GB+82 30 87 35 */ 0x34E4, 0x34E5, 0x34E6, 0x34E7, 0x34E8,
- /* GB+82 30 88 30 */ 0x34E9, 0x34EA, 0x34EB, 0x34EC, 0x34ED,
- /* GB+82 30 88 35 */ 0x34EE, 0x34EF, 0x34F0, 0x34F1, 0x34F2,
- /* GB+82 30 89 30 */ 0x34F3, 0x34F4, 0x34F5, 0x34F6, 0x34F7,
- /* GB+82 30 89 35 */ 0x34F8, 0x34F9, 0x34FA, 0x34FB, 0x34FC,
- /* GB+82 30 8A 30 */ 0x34FD, 0x34FE, 0x34FF, 0x3500, 0x3501,
- /* GB+82 30 8A 35 */ 0x3502, 0x3503, 0x3504, 0x3505, 0x3506,
- /* GB+82 30 8B 30 */ 0x3507, 0x3508, 0x3509, 0x350A, 0x350B,
- /* GB+82 30 8B 35 */ 0x350C, 0x350D, 0x350E, 0x350F, 0x3510,
- /* GB+82 30 8C 30 */ 0x3511, 0x3512, 0x3513, 0x3514, 0x3515,
- /* GB+82 30 8C 35 */ 0x3516, 0x3517, 0x3518, 0x3519, 0x351A,
- /* GB+82 30 8D 30 */ 0x351B, 0x351C, 0x351D, 0x351E, 0x351F,
- /* GB+82 30 8D 35 */ 0x3520, 0x3521, 0x3522, 0x3523, 0x3524,
- /* GB+82 30 8E 30 */ 0x3525, 0x3526, 0x3527, 0x3528, 0x3529,
- /* GB+82 30 8E 35 */ 0x352A, 0x352B, 0x352C, 0x352D, 0x352E,
- /* GB+82 30 8F 30 */ 0x352F, 0x3530, 0x3531, 0x3532, 0x3533,
- /* GB+82 30 8F 35 */ 0x3534, 0x3535, 0x3536, 0x3537, 0x3538,
- /* GB+82 30 90 30 */ 0x3539, 0x353A, 0x353B, 0x353C, 0x353D,
- /* GB+82 30 90 35 */ 0x353E, 0x353F, 0x3540, 0x3541, 0x3542,
- /* GB+82 30 91 30 */ 0x3543, 0x3544, 0x3545, 0x3546, 0x3547,
- /* GB+82 30 91 35 */ 0x3548, 0x3549, 0x354A, 0x354B, 0x354C,
- /* GB+82 30 92 30 */ 0x354D, 0x354E, 0x354F, 0x3550, 0x3551,
- /* GB+82 30 92 35 */ 0x3552, 0x3553, 0x3554, 0x3555, 0x3556,
- /* GB+82 30 93 30 */ 0x3557, 0x3558, 0x3559, 0x355A, 0x355B,
- /* GB+82 30 93 35 */ 0x355C, 0x355D, 0x355E, 0x355F, 0x3560,
- /* GB+82 30 94 30 */ 0x3561, 0x3562, 0x3563, 0x3564, 0x3565,
- /* GB+82 30 94 35 */ 0x3566, 0x3567, 0x3568, 0x3569, 0x356A,
- /* GB+82 30 95 30 */ 0x356B, 0x356C, 0x356D, 0x356E, 0x356F,
- /* GB+82 30 95 35 */ 0x3570, 0x3571, 0x3572, 0x3573, 0x3574,
- /* GB+82 30 96 30 */ 0x3575, 0x3576, 0x3577, 0x3578, 0x3579,
- /* GB+82 30 96 35 */ 0x357A, 0x357B, 0x357C, 0x357D, 0x357E,
- /* GB+82 30 97 30 */ 0x357F, 0x3580, 0x3581, 0x3582, 0x3583,
- /* GB+82 30 97 35 */ 0x3584, 0x3585, 0x3586, 0x3587, 0x3588,
- /* GB+82 30 98 30 */ 0x3589, 0x358A, 0x358B, 0x358C, 0x358D,
- /* GB+82 30 98 35 */ 0x358E, 0x358F, 0x3590, 0x3591, 0x3592,
- /* GB+82 30 99 30 */ 0x3593, 0x3594, 0x3595, 0x3596, 0x3597,
- /* GB+82 30 99 35 */ 0x3598, 0x3599, 0x359A, 0x359B, 0x359C,
- /* GB+82 30 9A 30 */ 0x359D, 0x359F, 0x35A0, 0x35A1, 0x35A2,
- /* GB+82 30 9A 35 */ 0x35A3, 0x35A4, 0x35A5, 0x35A6, 0x35A7,
- /* GB+82 30 9B 30 */ 0x35A8, 0x35A9, 0x35AA, 0x35AB, 0x35AC,
- /* GB+82 30 9B 35 */ 0x35AD, 0x35AE, 0x35AF, 0x35B0, 0x35B1,
- /* GB+82 30 9C 30 */ 0x35B2, 0x35B3, 0x35B4, 0x35B5, 0x35B6,
- /* GB+82 30 9C 35 */ 0x35B7, 0x35B8, 0x35B9, 0x35BA, 0x35BB,
- /* GB+82 30 9D 30 */ 0x35BC, 0x35BD, 0x35BE, 0x35BF, 0x35C0,
- /* GB+82 30 9D 35 */ 0x35C1, 0x35C2, 0x35C3, 0x35C4, 0x35C5,
- /* GB+82 30 9E 30 */ 0x35C6, 0x35C7, 0x35C8, 0x35C9, 0x35CA,
- /* GB+82 30 9E 35 */ 0x35CB, 0x35CC, 0x35CD, 0x35CE, 0x35CF,
- /* GB+82 30 9F 30 */ 0x35D0, 0x35D1, 0x35D2, 0x35D3, 0x35D4,
- /* GB+82 30 9F 35 */ 0x35D5, 0x35D6, 0x35D7, 0x35D8, 0x35D9,
- /* GB+82 30 A0 30 */ 0x35DA, 0x35DB, 0x35DC, 0x35DD, 0x35DE,
- /* GB+82 30 A0 35 */ 0x35DF, 0x35E0, 0x35E1, 0x35E2, 0x35E3,
- /* GB+82 30 A1 30 */ 0x35E4, 0x35E5, 0x35E6, 0x35E7, 0x35E8,
- /* GB+82 30 A1 35 */ 0x35E9, 0x35EA, 0x35EB, 0x35EC, 0x35ED,
- /* GB+82 30 A2 30 */ 0x35EE, 0x35EF, 0x35F0, 0x35F1, 0x35F2,
- /* GB+82 30 A2 35 */ 0x35F3, 0x35F4, 0x35F5, 0x35F6, 0x35F7,
- /* GB+82 30 A3 30 */ 0x35F8, 0x35F9, 0x35FA, 0x35FB, 0x35FC,
- /* GB+82 30 A3 35 */ 0x35FD, 0x35FE, 0x35FF, 0x3600, 0x3601,
- /* GB+82 30 A4 30 */ 0x3602, 0x3603, 0x3604, 0x3605, 0x3606,
- /* GB+82 30 A4 35 */ 0x3607, 0x3608, 0x3609, 0x360A, 0x360B,
- /* GB+82 30 A5 30 */ 0x360C, 0x360D, 0x360F, 0x3610, 0x3611,
- /* GB+82 30 A5 35 */ 0x3612, 0x3613, 0x3614, 0x3615, 0x3616,
- /* GB+82 30 A6 30 */ 0x3617, 0x3618, 0x3619,
- /* Contiguous area: GB+82 30 F2 38 .. GB+82 31 D4 37 */
- /* GB+82 30 F2 38 */ 0x3919, 0x391A,
- /* GB+82 30 F3 30 */ 0x391B, 0x391C, 0x391D, 0x391E, 0x391F,
- /* GB+82 30 F3 35 */ 0x3920, 0x3921, 0x3922, 0x3923, 0x3924,
- /* GB+82 30 F4 30 */ 0x3925, 0x3926, 0x3927, 0x3928, 0x3929,
- /* GB+82 30 F4 35 */ 0x392A, 0x392B, 0x392C, 0x392D, 0x392E,
- /* GB+82 30 F5 30 */ 0x392F, 0x3930, 0x3931, 0x3932, 0x3933,
- /* GB+82 30 F5 35 */ 0x3934, 0x3935, 0x3936, 0x3937, 0x3938,
- /* GB+82 30 F6 30 */ 0x3939, 0x393A, 0x393B, 0x393C, 0x393D,
- /* GB+82 30 F6 35 */ 0x393E, 0x393F, 0x3940, 0x3941, 0x3942,
- /* GB+82 30 F7 30 */ 0x3943, 0x3944, 0x3945, 0x3946, 0x3947,
- /* GB+82 30 F7 35 */ 0x3948, 0x3949, 0x394A, 0x394B, 0x394C,
- /* GB+82 30 F8 30 */ 0x394D, 0x394E, 0x394F, 0x3950, 0x3951,
- /* GB+82 30 F8 35 */ 0x3952, 0x3953, 0x3954, 0x3955, 0x3956,
- /* GB+82 30 F9 30 */ 0x3957, 0x3958, 0x3959, 0x395A, 0x395B,
- /* GB+82 30 F9 35 */ 0x395C, 0x395D, 0x395E, 0x395F, 0x3960,
- /* GB+82 30 FA 30 */ 0x3961, 0x3962, 0x3963, 0x3964, 0x3965,
- /* GB+82 30 FA 35 */ 0x3966, 0x3967, 0x3968, 0x3969, 0x396A,
- /* GB+82 30 FB 30 */ 0x396B, 0x396C, 0x396D, 0x396F, 0x3970,
- /* GB+82 30 FB 35 */ 0x3971, 0x3972, 0x3973, 0x3974, 0x3975,
- /* GB+82 30 FC 30 */ 0x3976, 0x3977, 0x3978, 0x3979, 0x397A,
- /* GB+82 30 FC 35 */ 0x397B, 0x397C, 0x397D, 0x397E, 0x397F,
- /* GB+82 30 FD 30 */ 0x3980, 0x3981, 0x3982, 0x3983, 0x3984,
- /* GB+82 30 FD 35 */ 0x3985, 0x3986, 0x3987, 0x3988, 0x3989,
- /* GB+82 30 FE 30 */ 0x398A, 0x398B, 0x398C, 0x398D, 0x398E,
- /* GB+82 30 FE 35 */ 0x398F, 0x3990, 0x3991, 0x3992, 0x3993,
- /* GB+82 31 81 30 */ 0x3994, 0x3995, 0x3996, 0x3997, 0x3998,
- /* GB+82 31 81 35 */ 0x3999, 0x399A, 0x399B, 0x399C, 0x399D,
- /* GB+82 31 82 30 */ 0x399E, 0x399F, 0x39A0, 0x39A1, 0x39A2,
- /* GB+82 31 82 35 */ 0x39A3, 0x39A4, 0x39A5, 0x39A6, 0x39A7,
- /* GB+82 31 83 30 */ 0x39A8, 0x39A9, 0x39AA, 0x39AB, 0x39AC,
- /* GB+82 31 83 35 */ 0x39AD, 0x39AE, 0x39AF, 0x39B0, 0x39B1,
- /* GB+82 31 84 30 */ 0x39B2, 0x39B3, 0x39B4, 0x39B5, 0x39B6,
- /* GB+82 31 84 35 */ 0x39B7, 0x39B8, 0x39B9, 0x39BA, 0x39BB,
- /* GB+82 31 85 30 */ 0x39BC, 0x39BD, 0x39BE, 0x39BF, 0x39C0,
- /* GB+82 31 85 35 */ 0x39C1, 0x39C2, 0x39C3, 0x39C4, 0x39C5,
- /* GB+82 31 86 30 */ 0x39C6, 0x39C7, 0x39C8, 0x39C9, 0x39CA,
- /* GB+82 31 86 35 */ 0x39CB, 0x39CC, 0x39CD, 0x39CE, 0x39D1,
- /* GB+82 31 87 30 */ 0x39D2, 0x39D3, 0x39D4, 0x39D5, 0x39D6,
- /* GB+82 31 87 35 */ 0x39D7, 0x39D8, 0x39D9, 0x39DA, 0x39DB,
- /* GB+82 31 88 30 */ 0x39DC, 0x39DD, 0x39DE, 0x39E0, 0x39E1,
- /* GB+82 31 88 35 */ 0x39E2, 0x39E3, 0x39E4, 0x39E5, 0x39E6,
- /* GB+82 31 89 30 */ 0x39E7, 0x39E8, 0x39E9, 0x39EA, 0x39EB,
- /* GB+82 31 89 35 */ 0x39EC, 0x39ED, 0x39EE, 0x39EF, 0x39F0,
- /* GB+82 31 8A 30 */ 0x39F1, 0x39F2, 0x39F3, 0x39F4, 0x39F5,
- /* GB+82 31 8A 35 */ 0x39F6, 0x39F7, 0x39F8, 0x39F9, 0x39FA,
- /* GB+82 31 8B 30 */ 0x39FB, 0x39FC, 0x39FD, 0x39FE, 0x39FF,
- /* GB+82 31 8B 35 */ 0x3A00, 0x3A01, 0x3A02, 0x3A03, 0x3A04,
- /* GB+82 31 8C 30 */ 0x3A05, 0x3A06, 0x3A07, 0x3A08, 0x3A09,
- /* GB+82 31 8C 35 */ 0x3A0A, 0x3A0B, 0x3A0C, 0x3A0D, 0x3A0E,
- /* GB+82 31 8D 30 */ 0x3A0F, 0x3A10, 0x3A11, 0x3A12, 0x3A13,
- /* GB+82 31 8D 35 */ 0x3A14, 0x3A15, 0x3A16, 0x3A17, 0x3A18,
- /* GB+82 31 8E 30 */ 0x3A19, 0x3A1A, 0x3A1B, 0x3A1C, 0x3A1D,
- /* GB+82 31 8E 35 */ 0x3A1E, 0x3A1F, 0x3A20, 0x3A21, 0x3A22,
- /* GB+82 31 8F 30 */ 0x3A23, 0x3A24, 0x3A25, 0x3A26, 0x3A27,
- /* GB+82 31 8F 35 */ 0x3A28, 0x3A29, 0x3A2A, 0x3A2B, 0x3A2C,
- /* GB+82 31 90 30 */ 0x3A2D, 0x3A2E, 0x3A2F, 0x3A30, 0x3A31,
- /* GB+82 31 90 35 */ 0x3A32, 0x3A33, 0x3A34, 0x3A35, 0x3A36,
- /* GB+82 31 91 30 */ 0x3A37, 0x3A38, 0x3A39, 0x3A3A, 0x3A3B,
- /* GB+82 31 91 35 */ 0x3A3C, 0x3A3D, 0x3A3E, 0x3A3F, 0x3A40,
- /* GB+82 31 92 30 */ 0x3A41, 0x3A42, 0x3A43, 0x3A44, 0x3A45,
- /* GB+82 31 92 35 */ 0x3A46, 0x3A47, 0x3A48, 0x3A49, 0x3A4A,
- /* GB+82 31 93 30 */ 0x3A4B, 0x3A4C, 0x3A4D, 0x3A4E, 0x3A4F,
- /* GB+82 31 93 35 */ 0x3A50, 0x3A51, 0x3A52, 0x3A53, 0x3A54,
- /* GB+82 31 94 30 */ 0x3A55, 0x3A56, 0x3A57, 0x3A58, 0x3A59,
- /* GB+82 31 94 35 */ 0x3A5A, 0x3A5B, 0x3A5C, 0x3A5D, 0x3A5E,
- /* GB+82 31 95 30 */ 0x3A5F, 0x3A60, 0x3A61, 0x3A62, 0x3A63,
- /* GB+82 31 95 35 */ 0x3A64, 0x3A65, 0x3A66, 0x3A67, 0x3A68,
- /* GB+82 31 96 30 */ 0x3A69, 0x3A6A, 0x3A6B, 0x3A6C, 0x3A6D,
- /* GB+82 31 96 35 */ 0x3A6E, 0x3A6F, 0x3A70, 0x3A71, 0x3A72,
- /* GB+82 31 97 30 */ 0x3A74, 0x3A75, 0x3A76, 0x3A77, 0x3A78,
- /* GB+82 31 97 35 */ 0x3A79, 0x3A7A, 0x3A7B, 0x3A7C, 0x3A7D,
- /* GB+82 31 98 30 */ 0x3A7E, 0x3A7F, 0x3A80, 0x3A81, 0x3A82,
- /* GB+82 31 98 35 */ 0x3A83, 0x3A84, 0x3A85, 0x3A86, 0x3A87,
- /* GB+82 31 99 30 */ 0x3A88, 0x3A89, 0x3A8A, 0x3A8B, 0x3A8C,
- /* GB+82 31 99 35 */ 0x3A8D, 0x3A8E, 0x3A8F, 0x3A90, 0x3A91,
- /* GB+82 31 9A 30 */ 0x3A92, 0x3A93, 0x3A94, 0x3A95, 0x3A96,
- /* GB+82 31 9A 35 */ 0x3A97, 0x3A98, 0x3A99, 0x3A9A, 0x3A9B,
- /* GB+82 31 9B 30 */ 0x3A9C, 0x3A9D, 0x3A9E, 0x3A9F, 0x3AA0,
- /* GB+82 31 9B 35 */ 0x3AA1, 0x3AA2, 0x3AA3, 0x3AA4, 0x3AA5,
- /* GB+82 31 9C 30 */ 0x3AA6, 0x3AA7, 0x3AA8, 0x3AA9, 0x3AAA,
- /* GB+82 31 9C 35 */ 0x3AAB, 0x3AAC, 0x3AAD, 0x3AAE, 0x3AAF,
- /* GB+82 31 9D 30 */ 0x3AB0, 0x3AB1, 0x3AB2, 0x3AB3, 0x3AB4,
- /* GB+82 31 9D 35 */ 0x3AB5, 0x3AB6, 0x3AB7, 0x3AB8, 0x3AB9,
- /* GB+82 31 9E 30 */ 0x3ABA, 0x3ABB, 0x3ABC, 0x3ABD, 0x3ABE,
- /* GB+82 31 9E 35 */ 0x3ABF, 0x3AC0, 0x3AC1, 0x3AC2, 0x3AC3,
- /* GB+82 31 9F 30 */ 0x3AC4, 0x3AC5, 0x3AC6, 0x3AC7, 0x3AC8,
- /* GB+82 31 9F 35 */ 0x3AC9, 0x3ACA, 0x3ACB, 0x3ACC, 0x3ACD,
- /* GB+82 31 A0 30 */ 0x3ACE, 0x3ACF, 0x3AD0, 0x3AD1, 0x3AD2,
- /* GB+82 31 A0 35 */ 0x3AD3, 0x3AD4, 0x3AD5, 0x3AD6, 0x3AD7,
- /* GB+82 31 A1 30 */ 0x3AD8, 0x3AD9, 0x3ADA, 0x3ADB, 0x3ADC,
- /* GB+82 31 A1 35 */ 0x3ADD, 0x3ADE, 0x3ADF, 0x3AE0, 0x3AE1,
- /* GB+82 31 A2 30 */ 0x3AE2, 0x3AE3, 0x3AE4, 0x3AE5, 0x3AE6,
- /* GB+82 31 A2 35 */ 0x3AE7, 0x3AE8, 0x3AE9, 0x3AEA, 0x3AEB,
- /* GB+82 31 A3 30 */ 0x3AEC, 0x3AED, 0x3AEE, 0x3AEF, 0x3AF0,
- /* GB+82 31 A3 35 */ 0x3AF1, 0x3AF2, 0x3AF3, 0x3AF4, 0x3AF5,
- /* GB+82 31 A4 30 */ 0x3AF6, 0x3AF7, 0x3AF8, 0x3AF9, 0x3AFA,
- /* GB+82 31 A4 35 */ 0x3AFB, 0x3AFC, 0x3AFD, 0x3AFE, 0x3AFF,
- /* GB+82 31 A5 30 */ 0x3B00, 0x3B01, 0x3B02, 0x3B03, 0x3B04,
- /* GB+82 31 A5 35 */ 0x3B05, 0x3B06, 0x3B07, 0x3B08, 0x3B09,
- /* GB+82 31 A6 30 */ 0x3B0A, 0x3B0B, 0x3B0C, 0x3B0D, 0x3B0E,
- /* GB+82 31 A6 35 */ 0x3B0F, 0x3B10, 0x3B11, 0x3B12, 0x3B13,
- /* GB+82 31 A7 30 */ 0x3B14, 0x3B15, 0x3B16, 0x3B17, 0x3B18,
- /* GB+82 31 A7 35 */ 0x3B19, 0x3B1A, 0x3B1B, 0x3B1C, 0x3B1D,
- /* GB+82 31 A8 30 */ 0x3B1E, 0x3B1F, 0x3B20, 0x3B21, 0x3B22,
- /* GB+82 31 A8 35 */ 0x3B23, 0x3B24, 0x3B25, 0x3B26, 0x3B27,
- /* GB+82 31 A9 30 */ 0x3B28, 0x3B29, 0x3B2A, 0x3B2B, 0x3B2C,
- /* GB+82 31 A9 35 */ 0x3B2D, 0x3B2E, 0x3B2F, 0x3B30, 0x3B31,
- /* GB+82 31 AA 30 */ 0x3B32, 0x3B33, 0x3B34, 0x3B35, 0x3B36,
- /* GB+82 31 AA 35 */ 0x3B37, 0x3B38, 0x3B39, 0x3B3A, 0x3B3B,
- /* GB+82 31 AB 30 */ 0x3B3C, 0x3B3D, 0x3B3E, 0x3B3F, 0x3B40,
- /* GB+82 31 AB 35 */ 0x3B41, 0x3B42, 0x3B43, 0x3B44, 0x3B45,
- /* GB+82 31 AC 30 */ 0x3B46, 0x3B47, 0x3B48, 0x3B49, 0x3B4A,
- /* GB+82 31 AC 35 */ 0x3B4B, 0x3B4C, 0x3B4D, 0x3B4F, 0x3B50,
- /* GB+82 31 AD 30 */ 0x3B51, 0x3B52, 0x3B53, 0x3B54, 0x3B55,
- /* GB+82 31 AD 35 */ 0x3B56, 0x3B57, 0x3B58, 0x3B59, 0x3B5A,
- /* GB+82 31 AE 30 */ 0x3B5B, 0x3B5C, 0x3B5D, 0x3B5E, 0x3B5F,
- /* GB+82 31 AE 35 */ 0x3B60, 0x3B61, 0x3B62, 0x3B63, 0x3B64,
- /* GB+82 31 AF 30 */ 0x3B65, 0x3B66, 0x3B67, 0x3B68, 0x3B69,
- /* GB+82 31 AF 35 */ 0x3B6A, 0x3B6B, 0x3B6C, 0x3B6D, 0x3B6E,
- /* GB+82 31 B0 30 */ 0x3B6F, 0x3B70, 0x3B71, 0x3B72, 0x3B73,
- /* GB+82 31 B0 35 */ 0x3B74, 0x3B75, 0x3B76, 0x3B77, 0x3B78,
- /* GB+82 31 B1 30 */ 0x3B79, 0x3B7A, 0x3B7B, 0x3B7C, 0x3B7D,
- /* GB+82 31 B1 35 */ 0x3B7E, 0x3B7F, 0x3B80, 0x3B81, 0x3B82,
- /* GB+82 31 B2 30 */ 0x3B83, 0x3B84, 0x3B85, 0x3B86, 0x3B87,
- /* GB+82 31 B2 35 */ 0x3B88, 0x3B89, 0x3B8A, 0x3B8B, 0x3B8C,
- /* GB+82 31 B3 30 */ 0x3B8D, 0x3B8E, 0x3B8F, 0x3B90, 0x3B91,
- /* GB+82 31 B3 35 */ 0x3B92, 0x3B93, 0x3B94, 0x3B95, 0x3B96,
- /* GB+82 31 B4 30 */ 0x3B97, 0x3B98, 0x3B99, 0x3B9A, 0x3B9B,
- /* GB+82 31 B4 35 */ 0x3B9C, 0x3B9D, 0x3B9E, 0x3B9F, 0x3BA0,
- /* GB+82 31 B5 30 */ 0x3BA1, 0x3BA2, 0x3BA3, 0x3BA4, 0x3BA5,
- /* GB+82 31 B5 35 */ 0x3BA6, 0x3BA7, 0x3BA8, 0x3BA9, 0x3BAA,
- /* GB+82 31 B6 30 */ 0x3BAB, 0x3BAC, 0x3BAD, 0x3BAE, 0x3BAF,
- /* GB+82 31 B6 35 */ 0x3BB0, 0x3BB1, 0x3BB2, 0x3BB3, 0x3BB4,
- /* GB+82 31 B7 30 */ 0x3BB5, 0x3BB6, 0x3BB7, 0x3BB8, 0x3BB9,
- /* GB+82 31 B7 35 */ 0x3BBA, 0x3BBB, 0x3BBC, 0x3BBD, 0x3BBE,
- /* GB+82 31 B8 30 */ 0x3BBF, 0x3BC0, 0x3BC1, 0x3BC2, 0x3BC3,
- /* GB+82 31 B8 35 */ 0x3BC4, 0x3BC5, 0x3BC6, 0x3BC7, 0x3BC8,
- /* GB+82 31 B9 30 */ 0x3BC9, 0x3BCA, 0x3BCB, 0x3BCC, 0x3BCD,
- /* GB+82 31 B9 35 */ 0x3BCE, 0x3BCF, 0x3BD0, 0x3BD1, 0x3BD2,
- /* GB+82 31 BA 30 */ 0x3BD3, 0x3BD4, 0x3BD5, 0x3BD6, 0x3BD7,
- /* GB+82 31 BA 35 */ 0x3BD8, 0x3BD9, 0x3BDA, 0x3BDB, 0x3BDC,
- /* GB+82 31 BB 30 */ 0x3BDD, 0x3BDE, 0x3BDF, 0x3BE0, 0x3BE1,
- /* GB+82 31 BB 35 */ 0x3BE2, 0x3BE3, 0x3BE4, 0x3BE5, 0x3BE6,
- /* GB+82 31 BC 30 */ 0x3BE7, 0x3BE8, 0x3BE9, 0x3BEA, 0x3BEB,
- /* GB+82 31 BC 35 */ 0x3BEC, 0x3BED, 0x3BEE, 0x3BEF, 0x3BF0,
- /* GB+82 31 BD 30 */ 0x3BF1, 0x3BF2, 0x3BF3, 0x3BF4, 0x3BF5,
- /* GB+82 31 BD 35 */ 0x3BF6, 0x3BF7, 0x3BF8, 0x3BF9, 0x3BFA,
- /* GB+82 31 BE 30 */ 0x3BFB, 0x3BFC, 0x3BFD, 0x3BFE, 0x3BFF,
- /* GB+82 31 BE 35 */ 0x3C00, 0x3C01, 0x3C02, 0x3C03, 0x3C04,
- /* GB+82 31 BF 30 */ 0x3C05, 0x3C06, 0x3C07, 0x3C08, 0x3C09,
- /* GB+82 31 BF 35 */ 0x3C0A, 0x3C0B, 0x3C0C, 0x3C0D, 0x3C0E,
- /* GB+82 31 C0 30 */ 0x3C0F, 0x3C10, 0x3C11, 0x3C12, 0x3C13,
- /* GB+82 31 C0 35 */ 0x3C14, 0x3C15, 0x3C16, 0x3C17, 0x3C18,
- /* GB+82 31 C1 30 */ 0x3C19, 0x3C1A, 0x3C1B, 0x3C1C, 0x3C1D,
- /* GB+82 31 C1 35 */ 0x3C1E, 0x3C1F, 0x3C20, 0x3C21, 0x3C22,
- /* GB+82 31 C2 30 */ 0x3C23, 0x3C24, 0x3C25, 0x3C26, 0x3C27,
- /* GB+82 31 C2 35 */ 0x3C28, 0x3C29, 0x3C2A, 0x3C2B, 0x3C2C,
- /* GB+82 31 C3 30 */ 0x3C2D, 0x3C2E, 0x3C2F, 0x3C30, 0x3C31,
- /* GB+82 31 C3 35 */ 0x3C32, 0x3C33, 0x3C34, 0x3C35, 0x3C36,
- /* GB+82 31 C4 30 */ 0x3C37, 0x3C38, 0x3C39, 0x3C3A, 0x3C3B,
- /* GB+82 31 C4 35 */ 0x3C3C, 0x3C3D, 0x3C3E, 0x3C3F, 0x3C40,
- /* GB+82 31 C5 30 */ 0x3C41, 0x3C42, 0x3C43, 0x3C44, 0x3C45,
- /* GB+82 31 C5 35 */ 0x3C46, 0x3C47, 0x3C48, 0x3C49, 0x3C4A,
- /* GB+82 31 C6 30 */ 0x3C4B, 0x3C4C, 0x3C4D, 0x3C4E, 0x3C4F,
- /* GB+82 31 C6 35 */ 0x3C50, 0x3C51, 0x3C52, 0x3C53, 0x3C54,
- /* GB+82 31 C7 30 */ 0x3C55, 0x3C56, 0x3C57, 0x3C58, 0x3C59,
- /* GB+82 31 C7 35 */ 0x3C5A, 0x3C5B, 0x3C5C, 0x3C5D, 0x3C5E,
- /* GB+82 31 C8 30 */ 0x3C5F, 0x3C60, 0x3C61, 0x3C62, 0x3C63,
- /* GB+82 31 C8 35 */ 0x3C64, 0x3C65, 0x3C66, 0x3C67, 0x3C68,
- /* GB+82 31 C9 30 */ 0x3C69, 0x3C6A, 0x3C6B, 0x3C6C, 0x3C6D,
- /* GB+82 31 C9 35 */ 0x3C6F, 0x3C70, 0x3C71, 0x3C72, 0x3C73,
- /* GB+82 31 CA 30 */ 0x3C74, 0x3C75, 0x3C76, 0x3C77, 0x3C78,
- /* GB+82 31 CA 35 */ 0x3C79, 0x3C7A, 0x3C7B, 0x3C7C, 0x3C7D,
- /* GB+82 31 CB 30 */ 0x3C7E, 0x3C7F, 0x3C80, 0x3C81, 0x3C82,
- /* GB+82 31 CB 35 */ 0x3C83, 0x3C84, 0x3C85, 0x3C86, 0x3C87,
- /* GB+82 31 CC 30 */ 0x3C88, 0x3C89, 0x3C8A, 0x3C8B, 0x3C8C,
- /* GB+82 31 CC 35 */ 0x3C8D, 0x3C8E, 0x3C8F, 0x3C90, 0x3C91,
- /* GB+82 31 CD 30 */ 0x3C92, 0x3C93, 0x3C94, 0x3C95, 0x3C96,
- /* GB+82 31 CD 35 */ 0x3C97, 0x3C98, 0x3C99, 0x3C9A, 0x3C9B,
- /* GB+82 31 CE 30 */ 0x3C9C, 0x3C9D, 0x3C9E, 0x3C9F, 0x3CA0,
- /* GB+82 31 CE 35 */ 0x3CA1, 0x3CA2, 0x3CA3, 0x3CA4, 0x3CA5,
- /* GB+82 31 CF 30 */ 0x3CA6, 0x3CA7, 0x3CA8, 0x3CA9, 0x3CAA,
- /* GB+82 31 CF 35 */ 0x3CAB, 0x3CAC, 0x3CAD, 0x3CAE, 0x3CAF,
- /* GB+82 31 D0 30 */ 0x3CB0, 0x3CB1, 0x3CB2, 0x3CB3, 0x3CB4,
- /* GB+82 31 D0 35 */ 0x3CB5, 0x3CB6, 0x3CB7, 0x3CB8, 0x3CB9,
- /* GB+82 31 D1 30 */ 0x3CBA, 0x3CBB, 0x3CBC, 0x3CBD, 0x3CBE,
- /* GB+82 31 D1 35 */ 0x3CBF, 0x3CC0, 0x3CC1, 0x3CC2, 0x3CC3,
- /* GB+82 31 D2 30 */ 0x3CC4, 0x3CC5, 0x3CC6, 0x3CC7, 0x3CC8,
- /* GB+82 31 D2 35 */ 0x3CC9, 0x3CCA, 0x3CCB, 0x3CCC, 0x3CCD,
- /* GB+82 31 D3 30 */ 0x3CCE, 0x3CCF, 0x3CD0, 0x3CD1, 0x3CD2,
- /* GB+82 31 D3 35 */ 0x3CD3, 0x3CD4, 0x3CD5, 0x3CD6, 0x3CD7,
- /* GB+82 31 D4 30 */ 0x3CD8, 0x3CD9, 0x3CDA, 0x3CDB, 0x3CDC,
- /* GB+82 31 D4 35 */ 0x3CDD, 0x3CDE, 0x3CDF,
- /* Contiguous area: GB+82 32 AF 33 .. GB+82 32 C9 36 */
- /* GB+82 32 AF 33 */ 0x4057, 0x4058,
- /* GB+82 32 AF 35 */ 0x4059, 0x405A, 0x405B, 0x405C, 0x405D,
- /* GB+82 32 B0 30 */ 0x405E, 0x405F, 0x4060, 0x4061, 0x4062,
- /* GB+82 32 B0 35 */ 0x4063, 0x4064, 0x4065, 0x4066, 0x4067,
- /* GB+82 32 B1 30 */ 0x4068, 0x4069, 0x406A, 0x406B, 0x406C,
- /* GB+82 32 B1 35 */ 0x406D, 0x406E, 0x406F, 0x4070, 0x4071,
- /* GB+82 32 B2 30 */ 0x4072, 0x4073, 0x4074, 0x4075, 0x4076,
- /* GB+82 32 B2 35 */ 0x4077, 0x4078, 0x4079, 0x407A, 0x407B,
- /* GB+82 32 B3 30 */ 0x407C, 0x407D, 0x407E, 0x407F, 0x4080,
- /* GB+82 32 B3 35 */ 0x4081, 0x4082, 0x4083, 0x4084, 0x4085,
- /* GB+82 32 B4 30 */ 0x4086, 0x4087, 0x4088, 0x4089, 0x408A,
- /* GB+82 32 B4 35 */ 0x408B, 0x408C, 0x408D, 0x408E, 0x408F,
- /* GB+82 32 B5 30 */ 0x4090, 0x4091, 0x4092, 0x4093, 0x4094,
- /* GB+82 32 B5 35 */ 0x4095, 0x4096, 0x4097, 0x4098, 0x4099,
- /* GB+82 32 B6 30 */ 0x409A, 0x409B, 0x409C, 0x409D, 0x409E,
- /* GB+82 32 B6 35 */ 0x409F, 0x40A0, 0x40A1, 0x40A2, 0x40A3,
- /* GB+82 32 B7 30 */ 0x40A4, 0x40A5, 0x40A6, 0x40A7, 0x40A8,
- /* GB+82 32 B7 35 */ 0x40A9, 0x40AA, 0x40AB, 0x40AC, 0x40AD,
- /* GB+82 32 B8 30 */ 0x40AE, 0x40AF, 0x40B0, 0x40B1, 0x40B2,
- /* GB+82 32 B8 35 */ 0x40B3, 0x40B4, 0x40B5, 0x40B6, 0x40B7,
- /* GB+82 32 B9 30 */ 0x40B8, 0x40B9, 0x40BA, 0x40BB, 0x40BC,
- /* GB+82 32 B9 35 */ 0x40BD, 0x40BE, 0x40BF, 0x40C0, 0x40C1,
- /* GB+82 32 BA 30 */ 0x40C2, 0x40C3, 0x40C4, 0x40C5, 0x40C6,
- /* GB+82 32 BA 35 */ 0x40C7, 0x40C8, 0x40C9, 0x40CA, 0x40CB,
- /* GB+82 32 BB 30 */ 0x40CC, 0x40CD, 0x40CE, 0x40CF, 0x40D0,
- /* GB+82 32 BB 35 */ 0x40D1, 0x40D2, 0x40D3, 0x40D4, 0x40D5,
- /* GB+82 32 BC 30 */ 0x40D6, 0x40D7, 0x40D8, 0x40D9, 0x40DA,
- /* GB+82 32 BC 35 */ 0x40DB, 0x40DC, 0x40DD, 0x40DE, 0x40DF,
- /* GB+82 32 BD 30 */ 0x40E0, 0x40E1, 0x40E2, 0x40E3, 0x40E4,
- /* GB+82 32 BD 35 */ 0x40E5, 0x40E6, 0x40E7, 0x40E8, 0x40E9,
- /* GB+82 32 BE 30 */ 0x40EA, 0x40EB, 0x40EC, 0x40ED, 0x40EE,
- /* GB+82 32 BE 35 */ 0x40EF, 0x40F0, 0x40F1, 0x40F2, 0x40F3,
- /* GB+82 32 BF 30 */ 0x40F4, 0x40F5, 0x40F6, 0x40F7, 0x40F8,
- /* GB+82 32 BF 35 */ 0x40F9, 0x40FA, 0x40FB, 0x40FC, 0x40FD,
- /* GB+82 32 C0 30 */ 0x40FE, 0x40FF, 0x4100, 0x4101, 0x4102,
- /* GB+82 32 C0 35 */ 0x4103, 0x4104, 0x4105, 0x4106, 0x4107,
- /* GB+82 32 C1 30 */ 0x4108, 0x4109, 0x410A, 0x410B, 0x410C,
- /* GB+82 32 C1 35 */ 0x410D, 0x410E, 0x410F, 0x4110, 0x4111,
- /* GB+82 32 C2 30 */ 0x4112, 0x4113, 0x4114, 0x4115, 0x4116,
- /* GB+82 32 C2 35 */ 0x4117, 0x4118, 0x4119, 0x411A, 0x411B,
- /* GB+82 32 C3 30 */ 0x411C, 0x411D, 0x411E, 0x411F, 0x4120,
- /* GB+82 32 C3 35 */ 0x4121, 0x4122, 0x4123, 0x4124, 0x4125,
- /* GB+82 32 C4 30 */ 0x4126, 0x4127, 0x4128, 0x4129, 0x412A,
- /* GB+82 32 C4 35 */ 0x412B, 0x412C, 0x412D, 0x412E, 0x412F,
- /* GB+82 32 C5 30 */ 0x4130, 0x4131, 0x4132, 0x4133, 0x4134,
- /* GB+82 32 C5 35 */ 0x4135, 0x4136, 0x4137, 0x4138, 0x4139,
- /* GB+82 32 C6 30 */ 0x413A, 0x413B, 0x413C, 0x413D, 0x413E,
- /* GB+82 32 C6 35 */ 0x413F, 0x4140, 0x4141, 0x4142, 0x4143,
- /* GB+82 32 C7 30 */ 0x4144, 0x4145, 0x4146, 0x4147, 0x4148,
- /* GB+82 32 C7 35 */ 0x4149, 0x414A, 0x414B, 0x414C, 0x414D,
- /* GB+82 32 C8 30 */ 0x414E, 0x414F, 0x4150, 0x4151, 0x4152,
- /* GB+82 32 C8 35 */ 0x4153, 0x4154, 0x4155, 0x4156, 0x4157,
- /* GB+82 32 C9 30 */ 0x4158, 0x4159, 0x415A, 0x415B, 0x415C,
- /* GB+82 32 C9 35 */ 0x415D, 0x415E,
- /* Contiguous area: GB+82 32 F8 38 .. GB+82 33 A3 38 */
- /* GB+82 32 F8 38 */ 0x4338, 0x4339,
- /* GB+82 32 F9 30 */ 0x433A, 0x433B, 0x433C, 0x433D, 0x433E,
- /* GB+82 32 F9 35 */ 0x433F, 0x4340, 0x4341, 0x4342, 0x4343,
- /* GB+82 32 FA 30 */ 0x4344, 0x4345, 0x4346, 0x4347, 0x4348,
- /* GB+82 32 FA 35 */ 0x4349, 0x434A, 0x434B, 0x434C, 0x434D,
- /* GB+82 32 FB 30 */ 0x434E, 0x434F, 0x4350, 0x4351, 0x4352,
- /* GB+82 32 FB 35 */ 0x4353, 0x4354, 0x4355, 0x4356, 0x4357,
- /* GB+82 32 FC 30 */ 0x4358, 0x4359, 0x435A, 0x435B, 0x435C,
- /* GB+82 32 FC 35 */ 0x435D, 0x435E, 0x435F, 0x4360, 0x4361,
- /* GB+82 32 FD 30 */ 0x4362, 0x4363, 0x4364, 0x4365, 0x4366,
- /* GB+82 32 FD 35 */ 0x4367, 0x4368, 0x4369, 0x436A, 0x436B,
- /* GB+82 32 FE 30 */ 0x436C, 0x436D, 0x436E, 0x436F, 0x4370,
- /* GB+82 32 FE 35 */ 0x4371, 0x4372, 0x4373, 0x4374, 0x4375,
- /* GB+82 33 81 30 */ 0x4376, 0x4377, 0x4378, 0x4379, 0x437A,
- /* GB+82 33 81 35 */ 0x437B, 0x437C, 0x437D, 0x437E, 0x437F,
- /* GB+82 33 82 30 */ 0x4380, 0x4381, 0x4382, 0x4383, 0x4384,
- /* GB+82 33 82 35 */ 0x4385, 0x4386, 0x4387, 0x4388, 0x4389,
- /* GB+82 33 83 30 */ 0x438A, 0x438B, 0x438C, 0x438D, 0x438E,
- /* GB+82 33 83 35 */ 0x438F, 0x4390, 0x4391, 0x4392, 0x4393,
- /* GB+82 33 84 30 */ 0x4394, 0x4395, 0x4396, 0x4397, 0x4398,
- /* GB+82 33 84 35 */ 0x4399, 0x439A, 0x439B, 0x439C, 0x439D,
- /* GB+82 33 85 30 */ 0x439E, 0x439F, 0x43A0, 0x43A1, 0x43A2,
- /* GB+82 33 85 35 */ 0x43A3, 0x43A4, 0x43A5, 0x43A6, 0x43A7,
- /* GB+82 33 86 30 */ 0x43A8, 0x43A9, 0x43AA, 0x43AB, 0x43AD,
- /* GB+82 33 86 35 */ 0x43AE, 0x43AF, 0x43B0, 0x43B2, 0x43B3,
- /* GB+82 33 87 30 */ 0x43B4, 0x43B5, 0x43B6, 0x43B7, 0x43B8,
- /* GB+82 33 87 35 */ 0x43B9, 0x43BA, 0x43BB, 0x43BC, 0x43BD,
- /* GB+82 33 88 30 */ 0x43BE, 0x43BF, 0x43C0, 0x43C1, 0x43C2,
- /* GB+82 33 88 35 */ 0x43C3, 0x43C4, 0x43C5, 0x43C6, 0x43C7,
- /* GB+82 33 89 30 */ 0x43C8, 0x43C9, 0x43CA, 0x43CB, 0x43CC,
- /* GB+82 33 89 35 */ 0x43CD, 0x43CE, 0x43CF, 0x43D0, 0x43D1,
- /* GB+82 33 8A 30 */ 0x43D2, 0x43D3, 0x43D4, 0x43D5, 0x43D6,
- /* GB+82 33 8A 35 */ 0x43D7, 0x43D8, 0x43D9, 0x43DA, 0x43DB,
- /* GB+82 33 8B 30 */ 0x43DC, 0x43DE, 0x43DF, 0x43E0, 0x43E1,
- /* GB+82 33 8B 35 */ 0x43E2, 0x43E3, 0x43E4, 0x43E5, 0x43E6,
- /* GB+82 33 8C 30 */ 0x43E7, 0x43E8, 0x43E9, 0x43EA, 0x43EB,
- /* GB+82 33 8C 35 */ 0x43EC, 0x43ED, 0x43EE, 0x43EF, 0x43F0,
- /* GB+82 33 8D 30 */ 0x43F1, 0x43F2, 0x43F3, 0x43F4, 0x43F5,
- /* GB+82 33 8D 35 */ 0x43F6, 0x43F7, 0x43F8, 0x43F9, 0x43FA,
- /* GB+82 33 8E 30 */ 0x43FB, 0x43FC, 0x43FD, 0x43FE, 0x43FF,
- /* GB+82 33 8E 35 */ 0x4400, 0x4401, 0x4402, 0x4403, 0x4404,
- /* GB+82 33 8F 30 */ 0x4405, 0x4406, 0x4407, 0x4408, 0x4409,
- /* GB+82 33 8F 35 */ 0x440A, 0x440B, 0x440C, 0x440D, 0x440E,
- /* GB+82 33 90 30 */ 0x440F, 0x4410, 0x4411, 0x4412, 0x4413,
- /* GB+82 33 90 35 */ 0x4414, 0x4415, 0x4416, 0x4417, 0x4418,
- /* GB+82 33 91 30 */ 0x4419, 0x441A, 0x441B, 0x441C, 0x441D,
- /* GB+82 33 91 35 */ 0x441E, 0x441F, 0x4420, 0x4421, 0x4422,
- /* GB+82 33 92 30 */ 0x4423, 0x4424, 0x4425, 0x4426, 0x4427,
- /* GB+82 33 92 35 */ 0x4428, 0x4429, 0x442A, 0x442B, 0x442C,
- /* GB+82 33 93 30 */ 0x442D, 0x442E, 0x442F, 0x4430, 0x4431,
- /* GB+82 33 93 35 */ 0x4432, 0x4433, 0x4434, 0x4435, 0x4436,
- /* GB+82 33 94 30 */ 0x4437, 0x4438, 0x4439, 0x443A, 0x443B,
- /* GB+82 33 94 35 */ 0x443C, 0x443D, 0x443E, 0x443F, 0x4440,
- /* GB+82 33 95 30 */ 0x4441, 0x4442, 0x4443, 0x4444, 0x4445,
- /* GB+82 33 95 35 */ 0x4446, 0x4447, 0x4448, 0x4449, 0x444A,
- /* GB+82 33 96 30 */ 0x444B, 0x444C, 0x444D, 0x444E, 0x444F,
- /* GB+82 33 96 35 */ 0x4450, 0x4451, 0x4452, 0x4453, 0x4454,
- /* GB+82 33 97 30 */ 0x4455, 0x4456, 0x4457, 0x4458, 0x4459,
- /* GB+82 33 97 35 */ 0x445A, 0x445B, 0x445C, 0x445D, 0x445E,
- /* GB+82 33 98 30 */ 0x445F, 0x4460, 0x4461, 0x4462, 0x4463,
- /* GB+82 33 98 35 */ 0x4464, 0x4465, 0x4466, 0x4467, 0x4468,
- /* GB+82 33 99 30 */ 0x4469, 0x446A, 0x446B, 0x446C, 0x446D,
- /* GB+82 33 99 35 */ 0x446E, 0x446F, 0x4470, 0x4471, 0x4472,
- /* GB+82 33 9A 30 */ 0x4473, 0x4474, 0x4475, 0x4476, 0x4477,
- /* GB+82 33 9A 35 */ 0x4478, 0x4479, 0x447A, 0x447B, 0x447C,
- /* GB+82 33 9B 30 */ 0x447D, 0x447E, 0x447F, 0x4480, 0x4481,
- /* GB+82 33 9B 35 */ 0x4482, 0x4483, 0x4484, 0x4485, 0x4486,
- /* GB+82 33 9C 30 */ 0x4487, 0x4488, 0x4489, 0x448A, 0x448B,
- /* GB+82 33 9C 35 */ 0x448C, 0x448D, 0x448E, 0x448F, 0x4490,
- /* GB+82 33 9D 30 */ 0x4491, 0x4492, 0x4493, 0x4494, 0x4495,
- /* GB+82 33 9D 35 */ 0x4496, 0x4497, 0x4498, 0x4499, 0x449A,
- /* GB+82 33 9E 30 */ 0x449B, 0x449C, 0x449D, 0x449E, 0x449F,
- /* GB+82 33 9E 35 */ 0x44A0, 0x44A1, 0x44A2, 0x44A3, 0x44A4,
- /* GB+82 33 9F 30 */ 0x44A5, 0x44A6, 0x44A7, 0x44A8, 0x44A9,
- /* GB+82 33 9F 35 */ 0x44AA, 0x44AB, 0x44AC, 0x44AD, 0x44AE,
- /* GB+82 33 A0 30 */ 0x44AF, 0x44B0, 0x44B1, 0x44B2, 0x44B3,
- /* GB+82 33 A0 35 */ 0x44B4, 0x44B5, 0x44B6, 0x44B7, 0x44B8,
- /* GB+82 33 A1 30 */ 0x44B9, 0x44BA, 0x44BB, 0x44BC, 0x44BD,
- /* GB+82 33 A1 35 */ 0x44BE, 0x44BF, 0x44C0, 0x44C1, 0x44C2,
- /* GB+82 33 A2 30 */ 0x44C3, 0x44C4, 0x44C5, 0x44C6, 0x44C7,
- /* GB+82 33 A2 35 */ 0x44C8, 0x44C9, 0x44CA, 0x44CB, 0x44CC,
- /* GB+82 33 A3 30 */ 0x44CD, 0x44CE, 0x44CF, 0x44D0, 0x44D1,
- /* GB+82 33 A3 35 */ 0x44D2, 0x44D3, 0x44D4, 0x44D5,
- /* Contiguous area: GB+82 33 C9 32 .. GB+82 33 E8 37 */
- /* GB+82 33 C9 32 */ 0x464D, 0x464E, 0x464F,
- /* GB+82 33 C9 35 */ 0x4650, 0x4651, 0x4652, 0x4653, 0x4654,
- /* GB+82 33 CA 30 */ 0x4655, 0x4656, 0x4657, 0x4658, 0x4659,
- /* GB+82 33 CA 35 */ 0x465A, 0x465B, 0x465C, 0x465D, 0x465E,
- /* GB+82 33 CB 30 */ 0x465F, 0x4660, 0x4662, 0x4663, 0x4664,
- /* GB+82 33 CB 35 */ 0x4665, 0x4666, 0x4667, 0x4668, 0x4669,
- /* GB+82 33 CC 30 */ 0x466A, 0x466B, 0x466C, 0x466D, 0x466E,
- /* GB+82 33 CC 35 */ 0x466F, 0x4670, 0x4671, 0x4672, 0x4673,
- /* GB+82 33 CD 30 */ 0x4674, 0x4675, 0x4676, 0x4677, 0x4678,
- /* GB+82 33 CD 35 */ 0x4679, 0x467A, 0x467B, 0x467C, 0x467D,
- /* GB+82 33 CE 30 */ 0x467E, 0x467F, 0x4680, 0x4681, 0x4682,
- /* GB+82 33 CE 35 */ 0x4683, 0x4684, 0x4685, 0x4686, 0x4687,
- /* GB+82 33 CF 30 */ 0x4688, 0x4689, 0x468A, 0x468B, 0x468C,
- /* GB+82 33 CF 35 */ 0x468D, 0x468E, 0x468F, 0x4690, 0x4691,
- /* GB+82 33 D0 30 */ 0x4692, 0x4693, 0x4694, 0x4695, 0x4696,
- /* GB+82 33 D0 35 */ 0x4697, 0x4698, 0x4699, 0x469A, 0x469B,
- /* GB+82 33 D1 30 */ 0x469C, 0x469D, 0x469E, 0x469F, 0x46A0,
- /* GB+82 33 D1 35 */ 0x46A1, 0x46A2, 0x46A3, 0x46A4, 0x46A5,
- /* GB+82 33 D2 30 */ 0x46A6, 0x46A7, 0x46A8, 0x46A9, 0x46AA,
- /* GB+82 33 D2 35 */ 0x46AB, 0x46AC, 0x46AD, 0x46AE, 0x46AF,
- /* GB+82 33 D3 30 */ 0x46B0, 0x46B1, 0x46B2, 0x46B3, 0x46B4,
- /* GB+82 33 D3 35 */ 0x46B5, 0x46B6, 0x46B7, 0x46B8, 0x46B9,
- /* GB+82 33 D4 30 */ 0x46BA, 0x46BB, 0x46BC, 0x46BD, 0x46BE,
- /* GB+82 33 D4 35 */ 0x46BF, 0x46C0, 0x46C1, 0x46C2, 0x46C3,
- /* GB+82 33 D5 30 */ 0x46C4, 0x46C5, 0x46C6, 0x46C7, 0x46C8,
- /* GB+82 33 D5 35 */ 0x46C9, 0x46CA, 0x46CB, 0x46CC, 0x46CD,
- /* GB+82 33 D6 30 */ 0x46CE, 0x46CF, 0x46D0, 0x46D1, 0x46D2,
- /* GB+82 33 D6 35 */ 0x46D3, 0x46D4, 0x46D5, 0x46D6, 0x46D7,
- /* GB+82 33 D7 30 */ 0x46D8, 0x46D9, 0x46DA, 0x46DB, 0x46DC,
- /* GB+82 33 D7 35 */ 0x46DD, 0x46DE, 0x46DF, 0x46E0, 0x46E1,
- /* GB+82 33 D8 30 */ 0x46E2, 0x46E3, 0x46E4, 0x46E5, 0x46E6,
- /* GB+82 33 D8 35 */ 0x46E7, 0x46E8, 0x46E9, 0x46EA, 0x46EB,
- /* GB+82 33 D9 30 */ 0x46EC, 0x46ED, 0x46EE, 0x46EF, 0x46F0,
- /* GB+82 33 D9 35 */ 0x46F1, 0x46F2, 0x46F3, 0x46F4, 0x46F5,
- /* GB+82 33 DA 30 */ 0x46F6, 0x46F7, 0x46F8, 0x46F9, 0x46FA,
- /* GB+82 33 DA 35 */ 0x46FB, 0x46FC, 0x46FD, 0x46FE, 0x46FF,
- /* GB+82 33 DB 30 */ 0x4700, 0x4701, 0x4702, 0x4703, 0x4704,
- /* GB+82 33 DB 35 */ 0x4705, 0x4706, 0x4707, 0x4708, 0x4709,
- /* GB+82 33 DC 30 */ 0x470A, 0x470B, 0x470C, 0x470D, 0x470E,
- /* GB+82 33 DC 35 */ 0x470F, 0x4710, 0x4711, 0x4712, 0x4713,
- /* GB+82 33 DD 30 */ 0x4714, 0x4715, 0x4716, 0x4717, 0x4718,
- /* GB+82 33 DD 35 */ 0x4719, 0x471A, 0x471B, 0x471C, 0x471D,
- /* GB+82 33 DE 30 */ 0x471E, 0x471F, 0x4720, 0x4721, 0x4722,
- /* GB+82 33 DE 35 */ 0x4724, 0x4725, 0x4726, 0x4727, 0x4728,
- /* GB+82 33 DF 30 */ 0x472A, 0x472B, 0x472C, 0x472D, 0x472E,
- /* GB+82 33 DF 35 */ 0x472F, 0x4730, 0x4731, 0x4732, 0x4733,
- /* GB+82 33 E0 30 */ 0x4734, 0x4735, 0x4736, 0x4737, 0x4738,
- /* GB+82 33 E0 35 */ 0x4739, 0x473A, 0x473B, 0x473C, 0x473D,
- /* GB+82 33 E1 30 */ 0x473E, 0x473F, 0x4740, 0x4741, 0x4742,
- /* GB+82 33 E1 35 */ 0x4743, 0x4744, 0x4745, 0x4746, 0x4747,
- /* GB+82 33 E2 30 */ 0x4748, 0x4749, 0x474A, 0x474B, 0x474C,
- /* GB+82 33 E2 35 */ 0x474D, 0x474E, 0x474F, 0x4750, 0x4751,
- /* GB+82 33 E3 30 */ 0x4752, 0x4753, 0x4754, 0x4755, 0x4756,
- /* GB+82 33 E3 35 */ 0x4757, 0x4758, 0x4759, 0x475A, 0x475B,
- /* GB+82 33 E4 30 */ 0x475C, 0x475D, 0x475E, 0x475F, 0x4760,
- /* GB+82 33 E4 35 */ 0x4761, 0x4762, 0x4763, 0x4764, 0x4765,
- /* GB+82 33 E5 30 */ 0x4766, 0x4767, 0x4768, 0x4769, 0x476A,
- /* GB+82 33 E5 35 */ 0x476B, 0x476C, 0x476D, 0x476E, 0x476F,
- /* GB+82 33 E6 30 */ 0x4770, 0x4771, 0x4772, 0x4773, 0x4774,
- /* GB+82 33 E6 35 */ 0x4775, 0x4776, 0x4777, 0x4778, 0x4779,
- /* GB+82 33 E7 30 */ 0x477A, 0x477B, 0x477D, 0x477E, 0x477F,
- /* GB+82 33 E7 35 */ 0x4780, 0x4781, 0x4782, 0x4783, 0x4784,
- /* GB+82 33 E8 30 */ 0x4785, 0x4786, 0x4787, 0x4788, 0x4789,
- /* GB+82 33 E8 35 */ 0x478A, 0x478B, 0x478C,
- /* Contiguous area: GB+82 34 96 39 .. GB+82 34 A1 30 */
- /* GB+82 34 96 39 */ 0x4948,
- /* GB+82 34 97 30 */ 0x4949, 0x494A, 0x494B, 0x494C, 0x494D,
- /* GB+82 34 97 35 */ 0x494E, 0x494F, 0x4950, 0x4951, 0x4952,
- /* GB+82 34 98 30 */ 0x4953, 0x4954, 0x4955, 0x4956, 0x4957,
- /* GB+82 34 98 35 */ 0x4958, 0x4959, 0x495A, 0x495B, 0x495C,
- /* GB+82 34 99 30 */ 0x495D, 0x495E, 0x495F, 0x4960, 0x4961,
- /* GB+82 34 99 35 */ 0x4962, 0x4963, 0x4964, 0x4965, 0x4966,
- /* GB+82 34 9A 30 */ 0x4967, 0x4968, 0x4969, 0x496A, 0x496B,
- /* GB+82 34 9A 35 */ 0x496C, 0x496D, 0x496E, 0x496F, 0x4970,
- /* GB+82 34 9B 30 */ 0x4971, 0x4972, 0x4973, 0x4974, 0x4975,
- /* GB+82 34 9B 35 */ 0x4976, 0x4977, 0x4978, 0x4979, 0x497B,
- /* GB+82 34 9C 30 */ 0x497C, 0x497E, 0x497F, 0x4980, 0x4981,
- /* GB+82 34 9C 35 */ 0x4984, 0x4987, 0x4988, 0x4989, 0x498A,
- /* GB+82 34 9D 30 */ 0x498B, 0x498C, 0x498D, 0x498E, 0x498F,
- /* GB+82 34 9D 35 */ 0x4990, 0x4991, 0x4992, 0x4993, 0x4994,
- /* GB+82 34 9E 30 */ 0x4995, 0x4996, 0x4997, 0x4998, 0x4999,
- /* GB+82 34 9E 35 */ 0x499A, 0x499C, 0x499D, 0x499E, 0x49A0,
- /* GB+82 34 9F 30 */ 0x49A1, 0x49A2, 0x49A3, 0x49A4, 0x49A5,
- /* GB+82 34 9F 35 */ 0x49A6, 0x49A7, 0x49A8, 0x49A9, 0x49AA,
- /* GB+82 34 A0 30 */ 0x49AB, 0x49AC, 0x49AD, 0x49AE, 0x49AF,
- /* GB+82 34 A0 35 */ 0x49B0, 0x49B1, 0x49B2, 0x49B3, 0x49B4,
- /* GB+82 34 A1 30 */ 0x49B5,
- /* Contiguous area: GB+82 34 E7 34 .. GB+82 35 8F 32 */
- /* GB+82 34 E7 34 */ 0x4C78,
- /* GB+82 34 E7 35 */ 0x4C79, 0x4C7A, 0x4C7B, 0x4C7C, 0x4C7D,
- /* GB+82 34 E8 30 */ 0x4C7E, 0x4C7F, 0x4C80, 0x4C81, 0x4C82,
- /* GB+82 34 E8 35 */ 0x4C83, 0x4C84, 0x4C85, 0x4C86, 0x4C87,
- /* GB+82 34 E9 30 */ 0x4C88, 0x4C89, 0x4C8A, 0x4C8B, 0x4C8C,
- /* GB+82 34 E9 35 */ 0x4C8D, 0x4C8E, 0x4C8F, 0x4C90, 0x4C91,
- /* GB+82 34 EA 30 */ 0x4C92, 0x4C93, 0x4C94, 0x4C95, 0x4C96,
- /* GB+82 34 EA 35 */ 0x4C97, 0x4C98, 0x4C99, 0x4C9A, 0x4C9B,
- /* GB+82 34 EB 30 */ 0x4C9C, 0x4C9D, 0x4C9E, 0x4CA4, 0x4CA5,
- /* GB+82 34 EB 35 */ 0x4CA6, 0x4CA7, 0x4CA8, 0x4CA9, 0x4CAA,
- /* GB+82 34 EC 30 */ 0x4CAB, 0x4CAC, 0x4CAD, 0x4CAE, 0x4CAF,
- /* GB+82 34 EC 35 */ 0x4CB0, 0x4CB1, 0x4CB2, 0x4CB3, 0x4CB4,
- /* GB+82 34 ED 30 */ 0x4CB5, 0x4CB6, 0x4CB7, 0x4CB8, 0x4CB9,
- /* GB+82 34 ED 35 */ 0x4CBA, 0x4CBB, 0x4CBC, 0x4CBD, 0x4CBE,
- /* GB+82 34 EE 30 */ 0x4CBF, 0x4CC0, 0x4CC1, 0x4CC2, 0x4CC3,
- /* GB+82 34 EE 35 */ 0x4CC4, 0x4CC5, 0x4CC6, 0x4CC7, 0x4CC8,
- /* GB+82 34 EF 30 */ 0x4CC9, 0x4CCA, 0x4CCB, 0x4CCC, 0x4CCD,
- /* GB+82 34 EF 35 */ 0x4CCE, 0x4CCF, 0x4CD0, 0x4CD1, 0x4CD2,
- /* GB+82 34 F0 30 */ 0x4CD3, 0x4CD4, 0x4CD5, 0x4CD6, 0x4CD7,
- /* GB+82 34 F0 35 */ 0x4CD8, 0x4CD9, 0x4CDA, 0x4CDB, 0x4CDC,
- /* GB+82 34 F1 30 */ 0x4CDD, 0x4CDE, 0x4CDF, 0x4CE0, 0x4CE1,
- /* GB+82 34 F1 35 */ 0x4CE2, 0x4CE3, 0x4CE4, 0x4CE5, 0x4CE6,
- /* GB+82 34 F2 30 */ 0x4CE7, 0x4CE8, 0x4CE9, 0x4CEA, 0x4CEB,
- /* GB+82 34 F2 35 */ 0x4CEC, 0x4CED, 0x4CEE, 0x4CEF, 0x4CF0,
- /* GB+82 34 F3 30 */ 0x4CF1, 0x4CF2, 0x4CF3, 0x4CF4, 0x4CF5,
- /* GB+82 34 F3 35 */ 0x4CF6, 0x4CF7, 0x4CF8, 0x4CF9, 0x4CFA,
- /* GB+82 34 F4 30 */ 0x4CFB, 0x4CFC, 0x4CFD, 0x4CFE, 0x4CFF,
- /* GB+82 34 F4 35 */ 0x4D00, 0x4D01, 0x4D02, 0x4D03, 0x4D04,
- /* GB+82 34 F5 30 */ 0x4D05, 0x4D06, 0x4D07, 0x4D08, 0x4D09,
- /* GB+82 34 F5 35 */ 0x4D0A, 0x4D0B, 0x4D0C, 0x4D0D, 0x4D0E,
- /* GB+82 34 F6 30 */ 0x4D0F, 0x4D10, 0x4D11, 0x4D12, 0x4D1A,
- /* GB+82 34 F6 35 */ 0x4D1B, 0x4D1C, 0x4D1D, 0x4D1E, 0x4D1F,
- /* GB+82 34 F7 30 */ 0x4D20, 0x4D21, 0x4D22, 0x4D23, 0x4D24,
- /* GB+82 34 F7 35 */ 0x4D25, 0x4D26, 0x4D27, 0x4D28, 0x4D29,
- /* GB+82 34 F8 30 */ 0x4D2A, 0x4D2B, 0x4D2C, 0x4D2D, 0x4D2E,
- /* GB+82 34 F8 35 */ 0x4D2F, 0x4D30, 0x4D31, 0x4D32, 0x4D33,
- /* GB+82 34 F9 30 */ 0x4D34, 0x4D35, 0x4D36, 0x4D37, 0x4D38,
- /* GB+82 34 F9 35 */ 0x4D39, 0x4D3A, 0x4D3B, 0x4D3C, 0x4D3D,
- /* GB+82 34 FA 30 */ 0x4D3E, 0x4D3F, 0x4D40, 0x4D41, 0x4D42,
- /* GB+82 34 FA 35 */ 0x4D43, 0x4D44, 0x4D45, 0x4D46, 0x4D47,
- /* GB+82 34 FB 30 */ 0x4D48, 0x4D49, 0x4D4A, 0x4D4B, 0x4D4C,
- /* GB+82 34 FB 35 */ 0x4D4D, 0x4D4E, 0x4D4F, 0x4D50, 0x4D51,
- /* GB+82 34 FC 30 */ 0x4D52, 0x4D53, 0x4D54, 0x4D55, 0x4D56,
- /* GB+82 34 FC 35 */ 0x4D57, 0x4D58, 0x4D59, 0x4D5A, 0x4D5B,
- /* GB+82 34 FD 30 */ 0x4D5C, 0x4D5D, 0x4D5E, 0x4D5F, 0x4D60,
- /* GB+82 34 FD 35 */ 0x4D61, 0x4D62, 0x4D63, 0x4D64, 0x4D65,
- /* GB+82 34 FE 30 */ 0x4D66, 0x4D67, 0x4D68, 0x4D69, 0x4D6A,
- /* GB+82 34 FE 35 */ 0x4D6B, 0x4D6C, 0x4D6D, 0x4D6E, 0x4D6F,
- /* GB+82 35 81 30 */ 0x4D70, 0x4D71, 0x4D72, 0x4D73, 0x4D74,
- /* GB+82 35 81 35 */ 0x4D75, 0x4D76, 0x4D77, 0x4D78, 0x4D79,
- /* GB+82 35 82 30 */ 0x4D7A, 0x4D7B, 0x4D7C, 0x4D7D, 0x4D7E,
- /* GB+82 35 82 35 */ 0x4D7F, 0x4D80, 0x4D81, 0x4D82, 0x4D83,
- /* GB+82 35 83 30 */ 0x4D84, 0x4D85, 0x4D86, 0x4D87, 0x4D88,
- /* GB+82 35 83 35 */ 0x4D89, 0x4D8A, 0x4D8B, 0x4D8C, 0x4D8D,
- /* GB+82 35 84 30 */ 0x4D8E, 0x4D8F, 0x4D90, 0x4D91, 0x4D92,
- /* GB+82 35 84 35 */ 0x4D93, 0x4D94, 0x4D95, 0x4D96, 0x4D97,
- /* GB+82 35 85 30 */ 0x4D98, 0x4D99, 0x4D9A, 0x4D9B, 0x4D9C,
- /* GB+82 35 85 35 */ 0x4D9D, 0x4D9E, 0x4D9F, 0x4DA0, 0x4DA1,
- /* GB+82 35 86 30 */ 0x4DA2, 0x4DA3, 0x4DA4, 0x4DA5, 0x4DA6,
- /* GB+82 35 86 35 */ 0x4DA7, 0x4DA8, 0x4DA9, 0x4DAA, 0x4DAB,
- /* GB+82 35 87 30 */ 0x4DAC, 0x4DAD, 0x4DAF, 0x4DB0, 0x4DB1,
- /* GB+82 35 87 35 */ 0x4DB2, 0x4DB3, 0x4DB4, 0x4DB5, 0x4DB6,
- /* GB+82 35 88 30 */ 0x4DB7, 0x4DB8, 0x4DB9, 0x4DBA, 0x4DBB,
- /* GB+82 35 88 35 */ 0x4DBC, 0x4DBD, 0x4DBE, 0x4DBF, 0x4DC0,
- /* GB+82 35 89 30 */ 0x4DC1, 0x4DC2, 0x4DC3, 0x4DC4, 0x4DC5,
- /* GB+82 35 89 35 */ 0x4DC6, 0x4DC7, 0x4DC8, 0x4DC9, 0x4DCA,
- /* GB+82 35 8A 30 */ 0x4DCB, 0x4DCC, 0x4DCD, 0x4DCE, 0x4DCF,
- /* GB+82 35 8A 35 */ 0x4DD0, 0x4DD1, 0x4DD2, 0x4DD3, 0x4DD4,
- /* GB+82 35 8B 30 */ 0x4DD5, 0x4DD6, 0x4DD7, 0x4DD8, 0x4DD9,
- /* GB+82 35 8B 35 */ 0x4DDA, 0x4DDB, 0x4DDC, 0x4DDD, 0x4DDE,
- /* GB+82 35 8C 30 */ 0x4DDF, 0x4DE0, 0x4DE1, 0x4DE2, 0x4DE3,
- /* GB+82 35 8C 35 */ 0x4DE4, 0x4DE5, 0x4DE6, 0x4DE7, 0x4DE8,
- /* GB+82 35 8D 30 */ 0x4DE9, 0x4DEA, 0x4DEB, 0x4DEC, 0x4DED,
- /* GB+82 35 8D 35 */ 0x4DEE, 0x4DEF, 0x4DF0, 0x4DF1, 0x4DF2,
- /* GB+82 35 8E 30 */ 0x4DF3, 0x4DF4, 0x4DF5, 0x4DF6, 0x4DF7,
- /* GB+82 35 8E 35 */ 0x4DF8, 0x4DF9, 0x4DFA, 0x4DFB, 0x4DFC,
- /* GB+82 35 8F 30 */ 0x4DFD, 0x4DFE, 0x4DFF,
- /* Contiguous area: GB+83 36 C7 39 .. GB+83 36 CF 39 */
- /* GB+83 36 C7 39 */ 0xE76C,
- /* GB+83 36 C8 30 */ 0xE7C8, 0xE7E7, 0xE7E8, 0xE7E9, 0xE7EA,
- /* GB+83 36 C8 35 */ 0xE7EB, 0xE7EC, 0xE7ED, 0xE7EE, 0xE7EF,
- /* GB+83 36 C9 30 */ 0xE7F0, 0xE7F1, 0xE7F2, 0xE7F3, 0xE815,
- /* GB+83 36 C9 35 */ 0xE819, 0xE81A, 0xE81B, 0xE81C, 0xE81D,
- /* GB+83 36 CA 30 */ 0xE81F, 0xE820, 0xE821, 0xE822, 0xE823,
- /* GB+83 36 CA 35 */ 0xE824, 0xE825, 0xE827, 0xE828, 0xE829,
- /* GB+83 36 CB 30 */ 0xE82A, 0xE82D, 0xE82E, 0xE82F, 0xE830,
- /* GB+83 36 CB 35 */ 0xE833, 0xE834, 0xE835, 0xE836, 0xE837,
- /* GB+83 36 CC 30 */ 0xE838, 0xE839, 0xE83A, 0xE83C, 0xE83D,
- /* GB+83 36 CC 35 */ 0xE83E, 0xE83F, 0xE840, 0xE841, 0xE842,
- /* GB+83 36 CD 30 */ 0xE844, 0xE845, 0xE846, 0xE847, 0xE848,
- /* GB+83 36 CD 35 */ 0xE849, 0xE84A, 0xE84B, 0xE84C, 0xE84D,
- /* GB+83 36 CE 30 */ 0xE84E, 0xE84F, 0xE850, 0xE851, 0xE852,
- /* GB+83 36 CE 35 */ 0xE853, 0xE856, 0xE857, 0xE858, 0xE859,
- /* GB+83 36 CF 30 */ 0xE85A, 0xE85B, 0xE85C, 0xE85D, 0xE85E,
- /* GB+83 36 CF 35 */ 0xE85F, 0xE860, 0xE861, 0xE862, 0xE863,
- /* Contiguous area: GB+84 30 85 35 .. GB+84 30 9C 37 */
- /* GB+84 30 85 35 */ 0xF92D, 0xF92E, 0xF92F, 0xF930, 0xF931,
- /* GB+84 30 86 30 */ 0xF932, 0xF933, 0xF934, 0xF935, 0xF936,
- /* GB+84 30 86 35 */ 0xF937, 0xF938, 0xF939, 0xF93A, 0xF93B,
- /* GB+84 30 87 30 */ 0xF93C, 0xF93D, 0xF93E, 0xF93F, 0xF940,
- /* GB+84 30 87 35 */ 0xF941, 0xF942, 0xF943, 0xF944, 0xF945,
- /* GB+84 30 88 30 */ 0xF946, 0xF947, 0xF948, 0xF949, 0xF94A,
- /* GB+84 30 88 35 */ 0xF94B, 0xF94C, 0xF94D, 0xF94E, 0xF94F,
- /* GB+84 30 89 30 */ 0xF950, 0xF951, 0xF952, 0xF953, 0xF954,
- /* GB+84 30 89 35 */ 0xF955, 0xF956, 0xF957, 0xF958, 0xF959,
- /* GB+84 30 8A 30 */ 0xF95A, 0xF95B, 0xF95C, 0xF95D, 0xF95E,
- /* GB+84 30 8A 35 */ 0xF95F, 0xF960, 0xF961, 0xF962, 0xF963,
- /* GB+84 30 8B 30 */ 0xF964, 0xF965, 0xF966, 0xF967, 0xF968,
- /* GB+84 30 8B 35 */ 0xF969, 0xF96A, 0xF96B, 0xF96C, 0xF96D,
- /* GB+84 30 8C 30 */ 0xF96E, 0xF96F, 0xF970, 0xF971, 0xF972,
- /* GB+84 30 8C 35 */ 0xF973, 0xF974, 0xF975, 0xF976, 0xF977,
- /* GB+84 30 8D 30 */ 0xF978, 0xF97A, 0xF97B, 0xF97C, 0xF97D,
- /* GB+84 30 8D 35 */ 0xF97E, 0xF97F, 0xF980, 0xF981, 0xF982,
- /* GB+84 30 8E 30 */ 0xF983, 0xF984, 0xF985, 0xF986, 0xF987,
- /* GB+84 30 8E 35 */ 0xF988, 0xF989, 0xF98A, 0xF98B, 0xF98C,
- /* GB+84 30 8F 30 */ 0xF98D, 0xF98E, 0xF98F, 0xF990, 0xF991,
- /* GB+84 30 8F 35 */ 0xF992, 0xF993, 0xF994, 0xF996, 0xF997,
- /* GB+84 30 90 30 */ 0xF998, 0xF999, 0xF99A, 0xF99B, 0xF99C,
- /* GB+84 30 90 35 */ 0xF99D, 0xF99E, 0xF99F, 0xF9A0, 0xF9A1,
- /* GB+84 30 91 30 */ 0xF9A2, 0xF9A3, 0xF9A4, 0xF9A5, 0xF9A6,
- /* GB+84 30 91 35 */ 0xF9A7, 0xF9A8, 0xF9A9, 0xF9AA, 0xF9AB,
- /* GB+84 30 92 30 */ 0xF9AC, 0xF9AD, 0xF9AE, 0xF9AF, 0xF9B0,
- /* GB+84 30 92 35 */ 0xF9B1, 0xF9B2, 0xF9B3, 0xF9B4, 0xF9B5,
- /* GB+84 30 93 30 */ 0xF9B6, 0xF9B7, 0xF9B8, 0xF9B9, 0xF9BA,
- /* GB+84 30 93 35 */ 0xF9BB, 0xF9BC, 0xF9BD, 0xF9BE, 0xF9BF,
- /* GB+84 30 94 30 */ 0xF9C0, 0xF9C1, 0xF9C2, 0xF9C3, 0xF9C4,
- /* GB+84 30 94 35 */ 0xF9C5, 0xF9C6, 0xF9C7, 0xF9C8, 0xF9C9,
- /* GB+84 30 95 30 */ 0xF9CA, 0xF9CB, 0xF9CC, 0xF9CD, 0xF9CE,
- /* GB+84 30 95 35 */ 0xF9CF, 0xF9D0, 0xF9D1, 0xF9D2, 0xF9D3,
- /* GB+84 30 96 30 */ 0xF9D4, 0xF9D5, 0xF9D6, 0xF9D7, 0xF9D8,
- /* GB+84 30 96 35 */ 0xF9D9, 0xF9DA, 0xF9DB, 0xF9DC, 0xF9DD,
- /* GB+84 30 97 30 */ 0xF9DE, 0xF9DF, 0xF9E0, 0xF9E1, 0xF9E2,
- /* GB+84 30 97 35 */ 0xF9E3, 0xF9E4, 0xF9E5, 0xF9E6, 0xF9E8,
- /* GB+84 30 98 30 */ 0xF9E9, 0xF9EA, 0xF9EB, 0xF9EC, 0xF9ED,
- /* GB+84 30 98 35 */ 0xF9EE, 0xF9EF, 0xF9F0, 0xF9F2, 0xF9F3,
- /* GB+84 30 99 30 */ 0xF9F4, 0xF9F5, 0xF9F6, 0xF9F7, 0xF9F8,
- /* GB+84 30 99 35 */ 0xF9F9, 0xF9FA, 0xF9FB, 0xF9FC, 0xF9FD,
- /* GB+84 30 9A 30 */ 0xF9FE, 0xF9FF, 0xFA00, 0xFA01, 0xFA02,
- /* GB+84 30 9A 35 */ 0xFA03, 0xFA04, 0xFA05, 0xFA06, 0xFA07,
- /* GB+84 30 9B 30 */ 0xFA08, 0xFA09, 0xFA0A, 0xFA0B, 0xFA10,
- /* GB+84 30 9B 35 */ 0xFA12, 0xFA15, 0xFA16, 0xFA17, 0xFA19,
- /* GB+84 30 9C 30 */ 0xFA1A, 0xFA1B, 0xFA1C, 0xFA1D, 0xFA1E,
- /* GB+84 30 9C 35 */ 0xFA22, 0xFA25, 0xFA26,
- /* Contiguous area: GB+84 31 85 38 .. GB+84 31 A2 33 */
- /* GB+84 31 85 38 */ 0xFE32, 0xFE45,
- /* GB+84 31 86 30 */ 0xFE46, 0xFE47, 0xFE48, 0xFE53, 0xFE58,
- /* GB+84 31 86 35 */ 0xFE67, 0xFE6C, 0xFE6D, 0xFE6E, 0xFE6F,
- /* GB+84 31 87 30 */ 0xFE70, 0xFE71, 0xFE72, 0xFE73, 0xFE74,
- /* GB+84 31 87 35 */ 0xFE75, 0xFE76, 0xFE77, 0xFE78, 0xFE79,
- /* GB+84 31 88 30 */ 0xFE7A, 0xFE7B, 0xFE7C, 0xFE7D, 0xFE7E,
- /* GB+84 31 88 35 */ 0xFE7F, 0xFE80, 0xFE81, 0xFE82, 0xFE83,
- /* GB+84 31 89 30 */ 0xFE84, 0xFE85, 0xFE86, 0xFE87, 0xFE88,
- /* GB+84 31 89 35 */ 0xFE89, 0xFE8A, 0xFE8B, 0xFE8C, 0xFE8D,
- /* GB+84 31 8A 30 */ 0xFE8E, 0xFE8F, 0xFE90, 0xFE91, 0xFE92,
- /* GB+84 31 8A 35 */ 0xFE93, 0xFE94, 0xFE95, 0xFE96, 0xFE97,
- /* GB+84 31 8B 30 */ 0xFE98, 0xFE99, 0xFE9A, 0xFE9B, 0xFE9C,
- /* GB+84 31 8B 35 */ 0xFE9D, 0xFE9E, 0xFE9F, 0xFEA0, 0xFEA1,
- /* GB+84 31 8C 30 */ 0xFEA2, 0xFEA3, 0xFEA4, 0xFEA5, 0xFEA6,
- /* GB+84 31 8C 35 */ 0xFEA7, 0xFEA8, 0xFEA9, 0xFEAA, 0xFEAB,
- /* GB+84 31 8D 30 */ 0xFEAC, 0xFEAD, 0xFEAE, 0xFEAF, 0xFEB0,
- /* GB+84 31 8D 35 */ 0xFEB1, 0xFEB2, 0xFEB3, 0xFEB4, 0xFEB5,
- /* GB+84 31 8E 30 */ 0xFEB6, 0xFEB7, 0xFEB8, 0xFEB9, 0xFEBA,
- /* GB+84 31 8E 35 */ 0xFEBB, 0xFEBC, 0xFEBD, 0xFEBE, 0xFEBF,
- /* GB+84 31 8F 30 */ 0xFEC0, 0xFEC1, 0xFEC2, 0xFEC3, 0xFEC4,
- /* GB+84 31 8F 35 */ 0xFEC5, 0xFEC6, 0xFEC7, 0xFEC8, 0xFEC9,
- /* GB+84 31 90 30 */ 0xFECA, 0xFECB, 0xFECC, 0xFECD, 0xFECE,
- /* GB+84 31 90 35 */ 0xFECF, 0xFED0, 0xFED1, 0xFED2, 0xFED3,
- /* GB+84 31 91 30 */ 0xFED4, 0xFED5, 0xFED6, 0xFED7, 0xFED8,
- /* GB+84 31 91 35 */ 0xFED9, 0xFEDA, 0xFEDB, 0xFEDC, 0xFEDD,
- /* GB+84 31 92 30 */ 0xFEDE, 0xFEDF, 0xFEE0, 0xFEE1, 0xFEE2,
- /* GB+84 31 92 35 */ 0xFEE3, 0xFEE4, 0xFEE5, 0xFEE6, 0xFEE7,
- /* GB+84 31 93 30 */ 0xFEE8, 0xFEE9, 0xFEEA, 0xFEEB, 0xFEEC,
- /* GB+84 31 93 35 */ 0xFEED, 0xFEEE, 0xFEEF, 0xFEF0, 0xFEF1,
- /* GB+84 31 94 30 */ 0xFEF2, 0xFEF3, 0xFEF4, 0xFEF5, 0xFEF6,
- /* GB+84 31 94 35 */ 0xFEF7, 0xFEF8, 0xFEF9, 0xFEFA, 0xFEFB,
- /* GB+84 31 95 30 */ 0xFEFC, 0xFEFD, 0xFEFE, 0xFEFF, 0xFF00,
- /* GB+84 31 95 35 */ 0xFF5F, 0xFF60, 0xFF61, 0xFF62, 0xFF63,
- /* GB+84 31 96 30 */ 0xFF64, 0xFF65, 0xFF66, 0xFF67, 0xFF68,
- /* GB+84 31 96 35 */ 0xFF69, 0xFF6A, 0xFF6B, 0xFF6C, 0xFF6D,
- /* GB+84 31 97 30 */ 0xFF6E, 0xFF6F, 0xFF70, 0xFF71, 0xFF72,
- /* GB+84 31 97 35 */ 0xFF73, 0xFF74, 0xFF75, 0xFF76, 0xFF77,
- /* GB+84 31 98 30 */ 0xFF78, 0xFF79, 0xFF7A, 0xFF7B, 0xFF7C,
- /* GB+84 31 98 35 */ 0xFF7D, 0xFF7E, 0xFF7F, 0xFF80, 0xFF81,
- /* GB+84 31 99 30 */ 0xFF82, 0xFF83, 0xFF84, 0xFF85, 0xFF86,
- /* GB+84 31 99 35 */ 0xFF87, 0xFF88, 0xFF89, 0xFF8A, 0xFF8B,
- /* GB+84 31 9A 30 */ 0xFF8C, 0xFF8D, 0xFF8E, 0xFF8F, 0xFF90,
- /* GB+84 31 9A 35 */ 0xFF91, 0xFF92, 0xFF93, 0xFF94, 0xFF95,
- /* GB+84 31 9B 30 */ 0xFF96, 0xFF97, 0xFF98, 0xFF99, 0xFF9A,
- /* GB+84 31 9B 35 */ 0xFF9B, 0xFF9C, 0xFF9D, 0xFF9E, 0xFF9F,
- /* GB+84 31 9C 30 */ 0xFFA0, 0xFFA1, 0xFFA2, 0xFFA3, 0xFFA4,
- /* GB+84 31 9C 35 */ 0xFFA5, 0xFFA6, 0xFFA7, 0xFFA8, 0xFFA9,
- /* GB+84 31 9D 30 */ 0xFFAA, 0xFFAB, 0xFFAC, 0xFFAD, 0xFFAE,
- /* GB+84 31 9D 35 */ 0xFFAF, 0xFFB0, 0xFFB1, 0xFFB2, 0xFFB3,
- /* GB+84 31 9E 30 */ 0xFFB4, 0xFFB5, 0xFFB6, 0xFFB7, 0xFFB8,
- /* GB+84 31 9E 35 */ 0xFFB9, 0xFFBA, 0xFFBB, 0xFFBC, 0xFFBD,
- /* GB+84 31 9F 30 */ 0xFFBE, 0xFFBF, 0xFFC0, 0xFFC1, 0xFFC2,
- /* GB+84 31 9F 35 */ 0xFFC3, 0xFFC4, 0xFFC5, 0xFFC6, 0xFFC7,
- /* GB+84 31 A0 30 */ 0xFFC8, 0xFFC9, 0xFFCA, 0xFFCB, 0xFFCC,
- /* GB+84 31 A0 35 */ 0xFFCD, 0xFFCE, 0xFFCF, 0xFFD0, 0xFFD1,
- /* GB+84 31 A1 30 */ 0xFFD2, 0xFFD3, 0xFFD4, 0xFFD5, 0xFFD6,
- /* GB+84 31 A1 35 */ 0xFFD7, 0xFFD8, 0xFFD9, 0xFFDA, 0xFFDB,
- /* GB+84 31 A2 30 */ 0xFFDC, 0xFFDD, 0xFFDE, 0xFFDF,
-};
-
-static inline uint gb4lin_to_gb(uint gb4lin) {
- uchar a, b, c, d;
- a = 0x81 + gb4lin / 12600;
- b = 0x30 + (gb4lin / 1260) % 10;
- c = 0x81 + (gb4lin / 10) % 126;
- d = 0x30 + gb4lin % 10;
- return ((a << 24) | (b << 16) | (c << 8) | d);
-}
-
-static uint qt_Gb18030ToUnicode(const uchar *gbstr, int& len) {
- /* Returns Unicode. */
- uint uni;
- uchar first = *gbstr;
-
- if (IsLatin(first)) {
- len = 1;
- uni = (uint)first;
- }
- else if (Is1stByte(first) && len >= 2) {
- uchar second = gbstr[1];
-
- if (Is2ndByteIn2Bytes(second)) {
- len = 2;
-
- if (IsUDA1(first, second))
- uni = 0xE000 + (first - 0xAA) * 94 + (second - 0xA1);
- else if (IsUDA2(first, second))
- uni = 0xE234 + (first - 0xF8) * 94 + (second - 0xA1);
- else if (IsUDA3(first, second))
- uni = 0xE4C6 + (first - 0xA1) * 96 + (second - 0x40)
- - ((second >= 0x80) ? 1 : 0);
- else {
- // Use the mapping table
- uint i;
-
- i = (first - 0x81) * 190 + (second - 0x40)
- - ((second >= 0x80) ? 1 : 0);
-
- if (InRange(first, 0xA1, 0xA7))
- i -= (first - 0xA0) * 96;
- if (first > 0xA7)
- i -= 672;
- if (InRange(first, 0xAA, 0xAF))
- i -= (first - 0xAA) * 94;
- if (first > 0xAF)
- i -= 564;
- if (first >= 0xF8)
- i -= (first - 0xF8) * 94;
-
- uni = (uint)gb18030_2byte_to_ucs[i];
- }
- }
- else if (Is2ndByteIn4Bytes(second) && len >= 4) {
- uchar third = gbstr[2],
- fourth = gbstr[3];
-
- if (Is3rdByte(third) && Is4thByte(fourth)) {
- // Valid 4-byte GB18030, whether defined or not
- uint gb4lin;
- indexTbl_t g2u;
-
- gb4lin = (first - 0x81) * 12600 + (second - 0x30) * 1260
- + (third - 0x81) * 10 + (fourth - 0x30);
-
- len = 4;
- if (gb4lin <= 0x99FB) {
- /* GB+81308130 - GB+8431A439 */
- g2u = gb18030_to_ucs_index[gb4lin >> 8];
-
- if ((quint8)(gb4lin & 0xFF) >= g2u.tblBegin &&
- (quint8)(gb4lin & 0xFF) <= g2u.tblEnd) {
-
- uni = (uint)gb18030_4byte_to_ucs[gb4lin - g2u.tblOffset];
- }
- else {
- uni = g2u.algOffset + (gb4lin & 0xFF);
- }
- } else if (InRange(gb4lin, 0x2E248, 0x12E247)) {
- /* GB+90308130 - GB+E3329A35 */
- uni = gb4lin - 0xE248;
- } else {
- /* undefined or reserved area */
- len = 1;
- uni = QChar::ReplacementCharacter;
- }
- }
- else {
- len = 1;
- uni = QChar::ReplacementCharacter;
- }
- }
- else {
- len = 1;
- uni = QChar::ReplacementCharacter;
- }
- }
- else {
- len = 1;
- uni = QChar::ReplacementCharacter;
- }
- return uni;
-}
-
-
-int qt_UnicodeToGb18030(uint uni, uchar *gbchar) {
- /* Returns the bytesize of the GB18030 character. */
- uint gb, gb4lin;
- indexTbl_t u2g;
-
- if (IsLatin(uni)) {
- *gbchar = (uchar)uni;
- return 1;
- }
- else if (uni <= 0xD7FF || InRange(uni, 0xE766, 0xFFFF)) {
- u2g = ucs_to_gb18030_index[uni >> 8];
-
- if ((quint8)(uni & 0xFF) >= u2g.tblBegin && (quint8)(uni & 0xFF) <= u2g.tblEnd) {
- // Use mapping table (2-byte or 4-byte GB18030)
- uint tblEntry;
-
- tblEntry = ucs_to_gb18030[uni - u2g.tblOffset];
-
- if (tblEntry > 0x8000) {
- // 2-byte GB18030
- gb = tblEntry;
- }
- else {
- // 4-byte GB18030 stored in a special compact format
- uchar a, b;
- a = 0x81;
- b = 0x30 + (tblEntry >> 11);
- if (tblEntry >= 0x7000) {
- a += 3;
- b -= 14;
- } else if (tblEntry >= 0x6000) {
- a += 2;
- b -= 6;
- } else if (tblEntry >= 0x3000) {
- a += 1;
- b -= 6;
- } else if (b >= 0x31) {
- b += 5;
- }
- gbchar[0] = a;
- gbchar[1] = b;
- gbchar[2] = 0x81 + ((tblEntry >> 4) & 0x7F);
- gbchar[3] = 0x30 + (tblEntry & 0xF);
- return 4;
- }
- }
- else {
- // 4-byte GB18030 calculated algorithmically
- gb4lin = u2g.algOffset + (uni & 0xFF);
- // Yikes, my index table could not cover all the bases...
- if (InRange(uni, 0x49B8, 0x49FF))
- gb4lin -= 11;
- gb = gb4lin_to_gb(gb4lin);
- }
- }
- else if (InRange(uni, 0xE000, 0xE765)) {
- // User-defined areas in GB18030 (2-byte)
- if (uni <= 0xE233)
- gb = 0xAAA1 + (((uni - 0xE000) / 94) << 8) + (uni - 0xE000) % 94;
- else if (uni <= 0xE4C5)
- gb = 0xF8A1 + (((uni - 0xE234) / 94) << 8) + (uni - 0xE234) % 94;
- else {
- gb = 0xA140 + (((uni - 0xE4C6) / 96) << 8) + (uni - 0xE4C6) % 96;
- // Skip the gap at 0x7F
- if ((gb & 0xFF) >= 0x7F)
- gb++;
- }
- }
- else if (InRange(uni, 0x10000, 0x10FFFF)) {
- // Qt 3.x does not support beyond BMP yet, but what the heck...
- // (U+10000 = GB+90308130) to (U+10FFFF = GB+E3329A35)
- gb = gb4lin_to_gb(0x1E248 + uni);
- }
- else {
- // Surrogate area and other undefined/reserved areas (discard)
- *gbchar = 0;
- return 0;
- }
-
- if (gb <= 0xFFFF) {
- gbchar[0] = (uchar)((gb >> 8) & 0xFF);
- gbchar[1] = (uchar)(gb & 0xFF);
- return 2;
- } else {
- gbchar[0] = (uchar)((gb >> 24) & 0xFF);
- gbchar[1] = (uchar)((gb >> 16) & 0xFF);
- gbchar[2] = (uchar)((gb >> 8) & 0xFF);
- gbchar[3] = (uchar)(gb & 0xFF);
- return 4;
- }
-}
-
-
-int qt_UnicodeToGbk(uint uni, uchar *gbchar) {
- /* Returns the bytesize of the GBK character. */
- /* Intended for improving performance of GB2312 and GBK functions. */
- uint gb;
- indexTbl_t u2g;
-
- if (IsLatin(uni)) {
- *gbchar = (uchar)uni;
- return 1;
- }
- else if (uni <= 0xD7FF || InRange(uni, 0xE766, 0xFFFF)) {
- u2g = ucs_to_gb18030_index[uni >> 8];
-
- if ((quint8)(uni & 0xFF) >= u2g.tblBegin && (quint8)(uni & 0xFF) <= u2g.tblEnd) {
- // Use mapping table (2-byte GBK or 4-byte GB18030)
- uint tblEntry;
-
- tblEntry = ucs_to_gb18030[uni - u2g.tblOffset];
-
- if (tblEntry > 0x8000) {
- // GBK
- gb = tblEntry;
- }
- else {
- // 4-byte GB18030 stored in a special compact format (discard)
- *gbchar = 0;
- return 0;
- }
- }
- else {
- // 4-byte GB18030 calculated algorithmically (discard)
- *gbchar = 0;
- return 0;
- }
- }
- else if (InRange(uni, 0xE000, 0xE765)) {
- // User-defined areas in GB18030 (2-byte)
- if (uni <= 0xE233)
- gb = 0xAAA1 + (((uni - 0xE000) / 94) << 8) + (uni - 0xE000) % 94;
- else if (uni <= 0xE4C5)
- gb = 0xF8A1 + (((uni - 0xE234) / 94) << 8) + (uni - 0xE234) % 94;
- else {
- gb = 0xA140 + (((uni - 0xE4C6) / 96) << 8) + (uni - 0xE4C6) % 96;
- // Skip the gap at 0x7F
- if ((gb & 0xFF) >= 0x7F)
- gb++;
- }
- }
- else {
- // Surrogate area and other undefined/reserved areas (discard)
- *gbchar = 0;
- return 0;
- }
-
- gbchar[0] = (uchar)((gb >> 8) & 0xFF);
- gbchar[1] = (uchar)(gb & 0xFF);
- return 2;
-}
-
-QT_END_NAMESPACE
-
-#endif // QT_NO_TEXTCODEC
diff --git a/src/plugins/codecs/cn/qgb18030codec.h b/src/plugins/codecs/cn/qgb18030codec.h
deleted file mode 100644
index 492f59b295..0000000000
--- a/src/plugins/codecs/cn/qgb18030codec.h
+++ /dev/null
@@ -1,159 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-// Contributed by James Su <suzhe@gnuchina.org>
-
-#ifndef QGB18030CODEC_H
-#define QGB18030CODEC_H
-
-#include <QtCore/qtextcodec.h>
-#include <QtCore/qlist.h>
-
-QT_BEGIN_NAMESPACE
-
-#ifndef QT_NO_TEXTCODEC
-
-class QGb18030Codec : public QTextCodec {
-public:
- QGb18030Codec();
-
- static QByteArray _name() { return "GB18030"; }
- static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
- static int _mibEnum() { return 114; }
-
- QByteArray name() const { return _name(); }
- QList<QByteArray> aliases() const { return _aliases(); }
- int mibEnum() const { return _mibEnum(); }
-
- QString convertToUnicode(const char *, int, ConverterState *) const;
- QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
-};
-
-class QGbkCodec : public QGb18030Codec {
-public:
- QGbkCodec();
-
- static QByteArray _name();
- static QList<QByteArray> _aliases();
- static int _mibEnum();
-
- QByteArray name() const { return _name(); }
- QList<QByteArray> aliases() const { return _aliases(); }
- int mibEnum() const { return _mibEnum(); }
-
- QString convertToUnicode(const char *, int, ConverterState *) const;
- QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
-};
-
-class QGb2312Codec : public QGb18030Codec {
-public:
- QGb2312Codec();
-
- static QByteArray _name();
- static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
- static int _mibEnum();
-
- QByteArray name() const { return _name(); }
- int mibEnum() const { return _mibEnum(); }
-
- QString convertToUnicode(const char *, int, ConverterState *) const;
- QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
-};
-
-#ifdef Q_OS_UNIX
-
-class QFontGb2312Codec : public QTextCodec
-{
-public:
- QFontGb2312Codec();
-
- static QByteArray _name();
- static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
- static int _mibEnum();
-
- QByteArray name() const { return _name(); }
- int mibEnum() const { return _mibEnum(); }
-
- QString convertToUnicode(const char *, int, ConverterState *) const;
- QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
-};
-
-
-class QFontGbkCodec : public QTextCodec
-{
-public:
- QFontGbkCodec();
-
- static QByteArray _name();
- static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
- static int _mibEnum();
-
- QByteArray name() const { return _name(); }
- QList<QByteArray> aliases() const { return _aliases(); }
- int mibEnum() const { return _mibEnum(); }
-
- QString convertToUnicode(const char *, int, ConverterState *) const;
- QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
-};
-
-class QFontGb18030_0Codec : public QTextCodec
-{
-public:
- QFontGb18030_0Codec();
-
- static QByteArray _name();
- static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
- static int _mibEnum();
-
- QByteArray name() const { return _name(); }
- QList<QByteArray> aliases() const { return _aliases(); }
- int mibEnum() const { return _mibEnum(); }
-
- QString convertToUnicode(const char *, int, ConverterState *) const;
- QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
-};
-#endif // Q_OS_UNIX
-
-#endif // QT_NO_TEXTCODEC
-
-QT_END_NAMESPACE
-
-#endif // QGB18030CODEC_H
diff --git a/src/plugins/codecs/codecs.pro b/src/plugins/codecs/codecs.pro
deleted file mode 100644
index 8474a88bc7..0000000000
--- a/src/plugins/codecs/codecs.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-TEMPLATE = subdirs
-
-SUBDIRS = cn jp tw kr
-
diff --git a/src/plugins/codecs/jp/jp.pro b/src/plugins/codecs/jp/jp.pro
deleted file mode 100644
index f2e51cd57d..0000000000
--- a/src/plugins/codecs/jp/jp.pro
+++ /dev/null
@@ -1,25 +0,0 @@
-TARGET = qjpcodecs
-load(qt_plugin)
-
-CONFIG += warn_on
-DESTDIR = $$QT.core.plugins/codecs
-QT = core
-
-HEADERS = qjpunicode.h \
- qeucjpcodec.h \
- qjiscodec.h \
- qsjiscodec.h
-
-SOURCES = qeucjpcodec.cpp \
- qjiscodec.cpp \
- qsjiscodec.cpp \
- qjpunicode.cpp \
- main.cpp
-
-unix {
- HEADERS += qfontjpcodec.h
- SOURCES += qfontjpcodec.cpp
-}
-
-target.path += $$[QT_INSTALL_PLUGINS]/codecs
-INSTALLS += target
diff --git a/src/plugins/codecs/jp/main.cpp b/src/plugins/codecs/jp/main.cpp
deleted file mode 100644
index e4b22935db..0000000000
--- a/src/plugins/codecs/jp/main.cpp
+++ /dev/null
@@ -1,149 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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 <qtextcodecplugin.h>
-#include <qtextcodec.h>
-#include <qstringlist.h>
-
-#ifndef QT_NO_TEXTCODECPLUGIN
-
-#include "qeucjpcodec.h"
-#include "qjiscodec.h"
-#include "qsjiscodec.h"
-#ifdef Q_OS_UNIX
-#include "qfontjpcodec.h"
-#endif
-
-QT_BEGIN_NAMESPACE
-
-class JPTextCodecs : public QTextCodecPlugin
-{
-public:
- JPTextCodecs() {}
-
- QList<QByteArray> names() const;
- QList<QByteArray> aliases() const;
- QList<int> mibEnums() const;
-
- QTextCodec *createForMib(int);
- QTextCodec *createForName(const QByteArray &);
-};
-
-QList<QByteArray> JPTextCodecs::names() const
-{
- QList<QByteArray> list;
- list += QEucJpCodec::_name();
- list += QJisCodec::_name();
- list += QSjisCodec::_name();
-#ifdef Q_OS_UNIX
- list += QFontJis0201Codec::_name();
- list += QFontJis0208Codec::_name();
-#endif
- return list;
-}
-
-QList<QByteArray> JPTextCodecs::aliases() const
-{
- QList<QByteArray> list;
- list += QEucJpCodec::_aliases();
- list += QJisCodec::_aliases();
- list += QSjisCodec::_aliases();
-#ifdef Q_OS_UNIX
- list += QFontJis0201Codec::_aliases();
- list += QFontJis0208Codec::_aliases();
-#endif
- return list;
-}
-
-QList<int> JPTextCodecs::mibEnums() const
-{
- QList<int> list;
- list += QEucJpCodec::_mibEnum();
- list += QJisCodec::_mibEnum();
- list += QSjisCodec::_mibEnum();
-#ifdef Q_OS_UNIX
- list += QFontJis0201Codec::_mibEnum();
- list += QFontJis0208Codec::_mibEnum();
-#endif
- return list;
-}
-
-QTextCodec *JPTextCodecs::createForMib(int mib)
-{
- if (mib == QEucJpCodec::_mibEnum())
- return new QEucJpCodec;
- if (mib == QJisCodec::_mibEnum())
- return new QJisCodec;
- if (mib == QSjisCodec::_mibEnum())
- return new QSjisCodec;
-#ifdef Q_OS_UNIX
- if (mib == QFontJis0208Codec::_mibEnum())
- return new QFontJis0208Codec;
- if (mib == QFontJis0201Codec::_mibEnum())
- return new QFontJis0201Codec;
-#endif
- return 0;
-}
-
-
-QTextCodec *JPTextCodecs::createForName(const QByteArray &name)
-{
- if (name == QEucJpCodec::_name() || QEucJpCodec::_aliases().contains(name))
- return new QEucJpCodec;
- if (name == QJisCodec::_name() || QJisCodec::_aliases().contains(name))
- return new QJisCodec;
- if (name == QSjisCodec::_name() || QSjisCodec::_aliases().contains(name))
- return new QSjisCodec;
-#ifdef Q_OS_UNIX
- if (name == QFontJis0208Codec::_name() || QFontJis0208Codec::_aliases().contains(name))
- return new QFontJis0208Codec;
- if (name == QFontJis0201Codec::_name() || QFontJis0201Codec::_aliases().contains(name))
- return new QFontJis0201Codec;
-#endif
- return 0;
-}
-
-Q_EXPORT_STATIC_PLUGIN(JPTextCodecs);
-Q_EXPORT_PLUGIN2(qjpcodecs, JPTextCodecs);
-
-QT_END_NAMESPACE
-
-#endif // QT_NO_TEXTCODECPLUGIN
diff --git a/src/plugins/codecs/jp/qeucjpcodec.cpp b/src/plugins/codecs/jp/qeucjpcodec.cpp
deleted file mode 100644
index 4ff555220b..0000000000
--- a/src/plugins/codecs/jp/qeucjpcodec.cpp
+++ /dev/null
@@ -1,261 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-// Most of the code here was originally written by Serika Kurusugawa
-// a.k.a. Junji Takagi, and is included in Qt with the author's permission,
-// and the grateful thanks of the Qt team.
-
-/*! \class QEucJpCodec
- \reentrant
- \internal
-*/
-
-/*
- * Copyright (C) 1999 Serika Kurusugawa, All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include "qeucjpcodec.h"
-
-QT_BEGIN_NAMESPACE
-
-#ifndef QT_NO_TEXTCODEC
-
-static const uchar Ss2 = 0x8e; // Single Shift 2
-static const uchar Ss3 = 0x8f; // Single Shift 3
-
-#define IsKana(c) (((c) >= 0xa1) && ((c) <= 0xdf))
-#define IsEucChar(c) (((c) >= 0xa1) && ((c) <= 0xfe))
-
-#define QValidChar(u) ((u) ? QChar((ushort)(u)) : QChar(QChar::ReplacementCharacter))
-
-/*!
- Constructs a QEucJpCodec.
-*/
-QEucJpCodec::QEucJpCodec() : conv(QJpUnicodeConv::newConverter(QJpUnicodeConv::Default))
-{
-}
-
-/*!
- Destroys the codec.
-*/
-QEucJpCodec::~QEucJpCodec()
-{
- delete (QJpUnicodeConv*)conv;
- conv = 0;
-}
-
-QByteArray QEucJpCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
-{
- char replacement = '?';
- if (state) {
- if (state->flags & ConvertInvalidToNull)
- replacement = 0;
- }
- int invalid = 0;
-
- int rlen = 3*len + 1;
- QByteArray rstr;
- rstr.resize(rlen);
- uchar* cursor = (uchar*)rstr.data();
- for (int i = 0; i < len; i++) {
- QChar ch = uc[i];
- uint j;
- if (ch.unicode() < 0x80) {
- // ASCII
- *cursor++ = ch.cell();
- } else if ((j = conv->unicodeToJisx0201(ch.row(), ch.cell())) != 0) {
- if (j < 0x80) {
- // JIS X 0201 Latin ?
- *cursor++ = j;
- } else {
- // JIS X 0201 Kana
- *cursor++ = Ss2;
- *cursor++ = j;
- }
- } else if ((j = conv->unicodeToJisx0208(ch.row(), ch.cell())) != 0) {
- // JIS X 0208
- *cursor++ = (j >> 8) | 0x80;
- *cursor++ = (j & 0xff) | 0x80;
- } else if ((j = conv->unicodeToJisx0212(ch.row(), ch.cell())) != 0) {
- // JIS X 0212
- *cursor++ = Ss3;
- *cursor++ = (j >> 8) | 0x80;
- *cursor++ = (j & 0xff) | 0x80;
- } else {
- // Error
- *cursor++ = replacement;
- ++invalid;
- }
- }
- rstr.resize(cursor - (uchar*)rstr.constData());
-
- if (state) {
- state->invalidChars += invalid;
- }
- return rstr;
-}
-
-
-QString QEucJpCodec::convertToUnicode(const char* chars, int len, ConverterState *state) const
-{
- uchar buf[2] = {0, 0};
- int nbuf = 0;
- QChar replacement = QChar::ReplacementCharacter;
- if (state) {
- if (state->flags & ConvertInvalidToNull)
- replacement = QChar::Null;
- nbuf = state->remainingChars;
- buf[0] = state->state_data[0];
- buf[1] = state->state_data[1];
- }
- int invalid = 0;
-
- QString result;
- for (int i=0; i<len; i++) {
- uchar ch = chars[i];
- switch (nbuf) {
- case 0:
- if (ch < 0x80) {
- // ASCII
- result += QLatin1Char(ch);
- } else if (ch == Ss2 || ch == Ss3) {
- // JIS X 0201 Kana or JIS X 0212
- buf[0] = ch;
- nbuf = 1;
- } else if (IsEucChar(ch)) {
- // JIS X 0208
- buf[0] = ch;
- nbuf = 1;
- } else {
- // Invalid
- result += replacement;
- ++invalid;
- }
- break;
- case 1:
- if (buf[0] == Ss2) {
- // JIS X 0201 Kana
- if (IsKana(ch)) {
- uint u = conv->jisx0201ToUnicode(ch);
- result += QValidChar(u);
- } else {
- result += replacement;
- ++invalid;
- }
- nbuf = 0;
- } else if (buf[0] == Ss3) {
- // JIS X 0212-1990
- if (IsEucChar(ch)) {
- buf[1] = ch;
- nbuf = 2;
- } else {
- // Error
- result += replacement;
- ++invalid;
- nbuf = 0;
- }
- } else {
- // JIS X 0208-1990
- if (IsEucChar(ch)) {
- uint u = conv->jisx0208ToUnicode(buf[0] & 0x7f, ch & 0x7f);
- result += QValidChar(u);
- } else {
- // Error
- result += replacement;
- ++invalid;
- }
- nbuf = 0;
- }
- break;
- case 2:
- // JIS X 0212
- if (IsEucChar(ch)) {
- uint u = conv->jisx0212ToUnicode(buf[1] & 0x7f, ch & 0x7f);
- result += QValidChar(u);
- } else {
- result += replacement;
- ++invalid;
- }
- nbuf = 0;
- }
- }
- if (state) {
- state->remainingChars = nbuf;
- state->state_data[0] = buf[0];
- state->state_data[1] = buf[1];
- state->invalidChars += invalid;
- }
- return result;
-}
-
-int QEucJpCodec::_mibEnum()
-{
- return 18;
-}
-
-QByteArray QEucJpCodec::_name()
-{
- return "EUC-JP";
-}
-#endif // QT_NO_TEXTCODEC
-
-QT_END_NAMESPACE
diff --git a/src/plugins/codecs/jp/qeucjpcodec.h b/src/plugins/codecs/jp/qeucjpcodec.h
deleted file mode 100644
index af02ed95e4..0000000000
--- a/src/plugins/codecs/jp/qeucjpcodec.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-// Most of the code here was originally written by Serika Kurusugawa
-// a.k.a. Junji Takagi, and is included in Qt with the author's permission,
-// and the grateful thanks of the Qt team.
-
-/*
- * Copyright (C) 1999 Serika Kurusugawa, All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef QEUCJPCODEC_H
-#define QEUCJPCODEC_H
-
-#include "qjpunicode.h"
-#include <QtCore/qtextcodec.h>
-#include <QtCore/qlist.h>
-
-QT_BEGIN_NAMESPACE
-
-#ifndef QT_NO_TEXTCODEC
-
-class QEucJpCodec : public QTextCodec {
-public:
- static QByteArray _name();
- static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
- static int _mibEnum();
-
- QByteArray name() const { return _name(); }
- QList<QByteArray> aliases() const { return _aliases(); }
- int mibEnum() const { return _mibEnum(); }
-
- QString convertToUnicode(const char *, int, ConverterState *) const;
- QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
-
- QEucJpCodec();
- ~QEucJpCodec();
-
-protected:
- const QJpUnicodeConv *conv;
-};
-
-#endif // QT_NO_TEXTCODEC
-
-QT_END_NAMESPACE
-
-#endif // QEUCJPCODEC_H
diff --git a/src/plugins/codecs/jp/qfontjpcodec.cpp b/src/plugins/codecs/jp/qfontjpcodec.cpp
deleted file mode 100644
index 8c9d78087c..0000000000
--- a/src/plugins/codecs/jp/qfontjpcodec.cpp
+++ /dev/null
@@ -1,145 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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 "qfontjpcodec.h"
-
-#include "qjpunicode.h"
-
-QT_BEGIN_NAMESPACE
-
-#ifdef Q_OS_UNIX
-// JIS X 0201
-
-QFontJis0201Codec::QFontJis0201Codec()
-{
-}
-
-QByteArray QFontJis0201Codec::_name()
-{
- return "jisx0201*-0";
-}
-
-int QFontJis0201Codec::_mibEnum()
-{
- return 15;
-}
-
-QByteArray QFontJis0201Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *) const
-{
- QByteArray rstring;
- rstring.resize(len);
- uchar *rdata = (uchar *) rstring.data();
- const QChar *sdata = uc;
- int i = 0;
- for (; i < len; ++i, ++sdata, ++rdata) {
- if (sdata->unicode() < 0x80) {
- *rdata = (uchar) sdata->unicode();
- } else if (sdata->unicode() >= 0xff61 && sdata->unicode() <= 0xff9f) {
- *rdata = (uchar) (sdata->unicode() - 0xff61 + 0xa1);
- } else {
- *rdata = 0;
- }
- }
- return rstring;
-}
-
-QString QFontJis0201Codec::convertToUnicode(const char *, int, ConverterState *) const
-{
- return QString();
-}
-
-// JIS X 0208
-
-QFontJis0208Codec::QFontJis0208Codec()
-{
- convJP = QJpUnicodeConv::newConverter(QJpUnicodeConv::Default);
-}
-
-
-QFontJis0208Codec::~QFontJis0208Codec()
-{
- delete convJP;
- convJP = 0;
-}
-
-
-QByteArray QFontJis0208Codec::_name()
-{
- return "jisx0208*-0";
-}
-
-
-int QFontJis0208Codec::_mibEnum()
-{
- return 63;
-}
-
-
-QString QFontJis0208Codec::convertToUnicode(const char* /*chars*/, int /*len*/, ConverterState *) const
-{
- return QString();
-}
-
-QByteArray QFontJis0208Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *) const
-{
- QByteArray result;
- result.resize(len * 2);
- uchar *rdata = (uchar *) result.data();
- const QChar *ucp = uc;
-
- for (int i = 0; i < len; i++) {
- QChar ch(*ucp++);
- ch = convJP->unicodeToJisx0208(ch.unicode());
-
- if (!ch.isNull()) {
- *rdata++ = ch.row();
- *rdata++ = ch.cell();
- } else {
- *rdata++ = 0;
- *rdata++ = 0;
- }
- }
- return result;
-}
-
-#endif
-
-QT_END_NAMESPACE
diff --git a/src/plugins/codecs/jp/qfontjpcodec.h b/src/plugins/codecs/jp/qfontjpcodec.h
deleted file mode 100644
index 1f577498fb..0000000000
--- a/src/plugins/codecs/jp/qfontjpcodec.h
+++ /dev/null
@@ -1,93 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-#ifndef QFONTJPCODEC_H
-#define QFONTJPCODEC_H
-
-#include <QtCore/qtextcodec.h>
-#include <QtCore/qlist.h>
-
-QT_BEGIN_NAMESPACE
-
-class QJpUnicodeConv;
-
-#ifdef Q_OS_UNIX
-class QFontJis0201Codec : public QTextCodec
-{
-public:
- QFontJis0201Codec();
-
- static QByteArray _name();
- static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
- static int _mibEnum();
-
- QByteArray name() const { return _name(); }
- QList<QByteArray> aliases() const { return _aliases(); }
- int mibEnum() const { return _mibEnum(); }
-
- QByteArray convertFromUnicode(const QChar *uc, int len, ConverterState *) const;
- QString convertToUnicode(const char*, int, ConverterState *) const;
-};
-
-class QFontJis0208Codec : public QTextCodec
-{
-public:
- QFontJis0208Codec();
- ~QFontJis0208Codec();
-
- static QByteArray _name();
- static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
- static int _mibEnum();
-
- QByteArray name() const { return _name(); }
- QList<QByteArray> aliases() const { return _aliases(); }
- int mibEnum() const { return _mibEnum(); }
-
- QString convertToUnicode(const char* /*chars*/, int /*len*/, ConverterState *) const;
- QByteArray convertFromUnicode(const QChar *uc, int len, ConverterState *) const;
-private:
- QJpUnicodeConv *convJP;
-};
-#endif
-
-QT_END_NAMESPACE
-
-#endif // QFONTJPCODEC_H
diff --git a/src/plugins/codecs/jp/qjiscodec.cpp b/src/plugins/codecs/jp/qjiscodec.cpp
deleted file mode 100644
index 99c756e859..0000000000
--- a/src/plugins/codecs/jp/qjiscodec.cpp
+++ /dev/null
@@ -1,367 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-// Most of the code here was originally written by Serika Kurusugawa,
-// a.k.a. Junji Takagi, and is included in Qt with the author's permission
-// and the grateful thanks of the Qt team.
-
-/*! \class QJisCodec
- \reentrant
- \internal
-*/
-
-#include "qjiscodec.h"
-#include "qlist.h"
-
-QT_BEGIN_NAMESPACE
-
-#ifndef QT_NO_TEXTCODEC
-enum {
- Esc = 0x1b,
- So = 0x0e, // Shift Out
- Si = 0x0f, // Shift In
-
- ReverseSolidus = 0x5c,
- YenSign = 0x5c,
- Tilde = 0x7e,
- Overline = 0x7e
-};
-
-#define IsKana(c) (((c) >= 0xa1) && ((c) <= 0xdf))
-#define IsJisChar(c) (((c) >= 0x21) && ((c) <= 0x7e))
-
-#define QValidChar(u) ((u) ? QChar((ushort)(u)) : QChar(QChar::ReplacementCharacter))
-
-enum Iso2022State{ Ascii, MinState = Ascii,
- JISX0201_Latin, JISX0201_Kana,
- JISX0208_1978, JISX0208_1983,
- JISX0212, MaxState = JISX0212,
- UnknownState };
-
-static const char Esc_CHARS[] = "()*+-./";
-
-static const char Esc_Ascii[] = {Esc, '(', 'B', 0 };
-static const char Esc_JISX0201_Latin[] = {Esc, '(', 'J', 0 };
-static const char Esc_JISX0201_Kana[] = {Esc, '(', 'I', 0 };
-static const char Esc_JISX0208_1978[] = {Esc, '$', '@', 0 };
-static const char Esc_JISX0208_1983[] = {Esc, '$', 'B', 0 };
-static const char Esc_JISX0212[] = {Esc, '$', '(', 'D', 0 };
-static const char * const Esc_SEQ[] = { Esc_Ascii,
- Esc_JISX0201_Latin,
- Esc_JISX0201_Kana,
- Esc_JISX0208_1978,
- Esc_JISX0208_1983,
- Esc_JISX0212 };
-
-/*! \internal */
-QJisCodec::QJisCodec() : conv(QJpUnicodeConv::newConverter(QJpUnicodeConv::Default))
-{
-}
-
-
-/*! \internal */
-QJisCodec::~QJisCodec()
-{
- delete (QJpUnicodeConv*)conv;
- conv = 0;
-}
-
-QByteArray QJisCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *cs) const
-{
- char replacement = '?';
- if (cs) {
- if (cs->flags & ConvertInvalidToNull)
- replacement = 0;
- }
- int invalid = 0;
-
- QByteArray result;
- Iso2022State state = Ascii;
- Iso2022State prev = Ascii;
- for (int i = 0; i < len; i++) {
- QChar ch = uc[i];
- uint j;
- if (ch.row() == 0x00 && ch.cell() < 0x80) {
- // Ascii
- if (state != JISX0201_Latin ||
- ch.cell() == ReverseSolidus || ch.cell() == Tilde) {
- state = Ascii;
- }
- j = ch.cell();
- } else if ((j = conv->unicodeToJisx0201(ch.row(), ch.cell())) != 0) {
- if (j < 0x80) {
- // JIS X 0201 Latin
- if (state != Ascii ||
- ch.cell() == YenSign || ch.cell() == Overline) {
- state = JISX0201_Latin;
- }
- } else {
- // JIS X 0201 Kana
- state = JISX0201_Kana;
- j &= 0x7f;
- }
- } else if ((j = conv->unicodeToJisx0208(ch.row(), ch.cell())) != 0) {
- // JIS X 0208
- state = JISX0208_1983;
- } else if ((j = conv->unicodeToJisx0212(ch.row(), ch.cell())) != 0) {
- // JIS X 0212
- state = JISX0212;
- } else {
- // Invalid
- state = UnknownState;
- j = replacement;
- ++invalid;
- }
- if (state != prev) {
- if (state == UnknownState) {
- result += Esc_Ascii;
- } else {
- result += Esc_SEQ[state - MinState];
- }
- prev = state;
- }
- if (j < 0x0100) {
- result += j & 0xff;
- } else {
- result += (j >> 8) & 0xff;
- result += j & 0xff;
- }
- }
- if (prev != Ascii) {
- result += Esc_Ascii;
- }
-
- if (cs) {
- cs->invalidChars += invalid;
- }
- return result;
-}
-
-QString QJisCodec::convertToUnicode(const char* chars, int len, ConverterState *cs) const
-{
- uchar buf[4] = {0, 0, 0, 0};
- int nbuf = 0;
- Iso2022State state = Ascii, prev = Ascii;
- bool esc = false;
- QChar replacement = QChar::ReplacementCharacter;
- if (cs) {
- if (cs->flags & ConvertInvalidToNull)
- replacement = QChar::Null;
- nbuf = cs->remainingChars;
- buf[0] = (cs->state_data[0] >> 24) & 0xff;
- buf[1] = (cs->state_data[0] >> 16) & 0xff;
- buf[2] = (cs->state_data[0] >> 8) & 0xff;
- buf[3] = (cs->state_data[0] >> 0) & 0xff;
- state = (Iso2022State)((cs->state_data[1] >> 0) & 0xff);
- prev = (Iso2022State)((cs->state_data[1] >> 8) & 0xff);
- esc = cs->state_data[2];
- }
- int invalid = 0;
-
- QString result;
- for (int i=0; i<len; i++) {
- uchar ch = chars[i];
- if (esc) {
- // Escape sequence
- state = UnknownState;
- switch (nbuf) {
- case 0:
- if (ch == '$' || strchr(Esc_CHARS, ch)) {
- buf[nbuf++] = ch;
- } else {
- nbuf = 0;
- esc = false;
- }
- break;
- case 1:
- if (buf[0] == '$') {
- if (strchr(Esc_CHARS, ch)) {
- buf[nbuf++] = ch;
- } else {
- switch (ch) {
- case '@':
- state = JISX0208_1978; // Esc $ @
- break;
- case 'B':
- state = JISX0208_1983; // Esc $ B
- break;
- }
- nbuf = 0;
- esc = false;
- }
- } else {
- if (buf[0] == '(') {
- switch (ch) {
- case 'B':
- state = Ascii; // Esc (B
- break;
- case 'I':
- state = JISX0201_Kana; // Esc (I
- break;
- case 'J':
- state = JISX0201_Latin; // Esc (J
- break;
- }
- }
- nbuf = 0;
- esc = false;
- }
- break;
- case 2:
- if (buf[1] == '(') {
- switch (ch) {
- case 'D':
- state = JISX0212; // Esc $ (D
- break;
- }
- }
- nbuf = 0;
- esc = false;
- break;
- }
- } else {
- if (ch == Esc) {
- // Escape sequence
- nbuf = 0;
- esc = true;
- } else if (ch == So) {
- // Shift out
- prev = state;
- state = JISX0201_Kana;
- nbuf = 0;
- } else if (ch == Si) {
- // Shift in
- if (prev == Ascii || prev == JISX0201_Latin) {
- state = prev;
- } else {
- state = Ascii;
- }
- nbuf = 0;
- } else {
- uint u;
- switch (nbuf) {
- case 0:
- switch (state) {
- case Ascii:
- if (ch < 0x80) {
- result += QLatin1Char(ch);
- break;
- }
- /* fall through */
- case JISX0201_Latin:
- u = conv->jisx0201ToUnicode(ch);
- result += QValidChar(u);
- break;
- case JISX0201_Kana:
- u = conv->jisx0201ToUnicode(ch | 0x80);
- result += QValidChar(u);
- break;
- case JISX0208_1978:
- case JISX0208_1983:
- case JISX0212:
- buf[nbuf++] = ch;
- break;
- default:
- result += QChar::ReplacementCharacter;
- break;
- }
- break;
- case 1:
- switch (state) {
- case JISX0208_1978:
- case JISX0208_1983:
- u = conv->jisx0208ToUnicode(buf[0] & 0x7f, ch & 0x7f);
- result += QValidChar(u);
- break;
- case JISX0212:
- u = conv->jisx0212ToUnicode(buf[0] & 0x7f, ch & 0x7f);
- result += QValidChar(u);
- break;
- default:
- result += replacement;
- ++invalid;
- break;
- }
- nbuf = 0;
- break;
- }
- }
- }
- }
-
- if (cs) {
- cs->remainingChars = nbuf;
- cs->invalidChars += invalid;
- cs->state_data[0] = (buf[0] << 24) + (buf[1] << 16) + (buf[2] << 8) + buf[3];
- cs->state_data[1] = (prev << 8) + state;
- cs->state_data[2] = esc;
- }
-
- return result;
-}
-
-
-
-/*! \internal */
-int QJisCodec::_mibEnum()
-{
- return 39;
-}
-
-/*! \internal */
-QByteArray QJisCodec::_name()
-{
- return "ISO-2022-JP";
-}
-
-/*!
- Returns the codec's mime name.
-*/
-QList<QByteArray> QJisCodec::_aliases()
-{
- QList<QByteArray> list;
- list << "JIS7"; // Qt 3 compat
- return list;
-}
-
-#endif // QT_NO_TEXTCODEC
-
-QT_END_NAMESPACE
diff --git a/src/plugins/codecs/jp/qjiscodec.h b/src/plugins/codecs/jp/qjiscodec.h
deleted file mode 100644
index aaf02a90d0..0000000000
--- a/src/plugins/codecs/jp/qjiscodec.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-// Most of the code here was originally written by Serika Kurusugawa
-// a.k.a. Junji Takagi, and is included in Qt with the author's permission,
-// and the grateful thanks of the Qt team.
-
-/*
- * Copyright (C) 1999 Serika Kurusugawa, All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef QJISCODEC_H
-#define QJISCODEC_H
-
-#include "qjpunicode.h"
-#include <QtCore/qtextcodec.h>
-#include <QtCore/qlist.h>
-
-QT_BEGIN_NAMESPACE
-
-#ifndef QT_NO_TEXTCODEC
-
-class QJisCodec : public QTextCodec {
-public:
- static QByteArray _name();
- static QList<QByteArray> _aliases();
- static int _mibEnum();
-
- QByteArray name() const { return _name(); }
- QList<QByteArray> aliases() const { return _aliases(); }
- int mibEnum() const { return _mibEnum(); }
-
- QString convertToUnicode(const char *, int, ConverterState *) const;
- QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
-
- QJisCodec();
- ~QJisCodec();
-
-protected:
- const QJpUnicodeConv *conv;
-};
-
-#endif // QT_NO_TEXTCODEC
-
-QT_END_NAMESPACE
-
-#endif // QJISCODEC_H
diff --git a/src/plugins/codecs/jp/qjpunicode.cpp b/src/plugins/codecs/jp/qjpunicode.cpp
deleted file mode 100644
index feb0f410c1..0000000000
--- a/src/plugins/codecs/jp/qjpunicode.cpp
+++ /dev/null
@@ -1,10700 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-/*! \class QJpUnicodeConv
- \reentrant
- \internal
-*/
-
-#include "qjpunicode.h"
-
-#include "qbytearray.h"
-#include <stdlib.h>
-
-QT_BEGIN_NAMESPACE
-
-#define USE_JISX0212
-
-#define Q_STRICT
-
-#define IsLatin(c) (/*((c) >= 0x00) &&*/ ((c) <= 0x7f))
-#define IsKana(c) (((c) >= 0xa1) && ((c) <= 0xdf))
-#define IsJisChar(c) (((c) >= 0x21) && ((c) <= 0x7e))
-#define IsSjisChar1(c) ((((c) >= 0x81) && ((c) <= 0x9f)) || \
- (((c) >= 0xe0) && ((c) <= 0xfc)))
-#define IsSjisUDC1(c) (((c) >= 0xf0) && ((c) <= 0xfc))
-#define IsSjisChar2(c) (((c) >= 0x40) && ((c) != 0x7f) && ((c) <= 0xfc))
-
-#define IsSjisIBMVDCChar1(c) (((c) >= 0xfa) && ((c) <= 0xfc))
-
-static uint jisx0208ToSjis(uint h, uint l);
-static
-inline uint jisx0208ToSjis(uint jis)
-{
- return jisx0208ToSjis((jis & 0xff00) >> 8, (jis & 0x00ff));
-}
-
-static uint sjisToJisx0208(uint h, uint l);
-#if 0
-static
-inline uint sjisToJisx0208(uint sjis)
-{
- return sjisToJisx0208((sjis & 0xff00) >> 8, (sjis & 0x00ff));
-}
-#endif
-
-static uint jisx0201ToUnicode11(uint h, uint l);
-static uint jisx0208ToUnicode11(uint h, uint l);
-static uint jisx0212ToUnicode11(uint h, uint l);
-
-static uint unicode11ToJisx0201(uint h, uint l);
-static uint unicode11ToJisx0208(uint h, uint l);
-static uint unicode11ToJisx0212(uint h, uint l);
-
-/*
- * Unicode 1.1 conversion.
- */
-
-/*!
- \fn QJpUnicodeConv::QJpUnicodeConv (int r)
- \internal
-*/
-
-
-/*! \internal */
-uint QJpUnicodeConv::asciiToUnicode(uint h, uint l) const
-{
- if ((h == 0) && (l < 0x80)) {
- return l;
- }
- return 0x0000;
-}
-
-/*! \internal */
-uint QJpUnicodeConv::jisx0201ToUnicode(uint h, uint l) const
-{
- if (h == 0) {
- if (IsLatin(l)) {
- return jisx0201LatinToUnicode(h, l);
- } else if (IsKana(l)) {
- return jisx0201KanaToUnicode(h, l);
- }
- }
- return 0x0000;
-}
-
-/*! \internal */
-uint QJpUnicodeConv::jisx0201LatinToUnicode(uint h, uint l) const
-{
- if ((h == 0) && IsLatin(l)) {
- return jisx0201ToUnicode11(h, l);
- }
- return 0x0000;
-}
-
-/*! \internal */
-uint QJpUnicodeConv::jisx0201KanaToUnicode(uint h, uint l) const
-{
- if ((h == 0) && IsKana(l)) {
- return jisx0201ToUnicode11(h, l);
- }
- return 0x0000;
-}
-
-/*! \internal */
-uint QJpUnicodeConv::jisx0208ToUnicode(uint h, uint l) const
-{
- if (rule & UDC){
- if ((0x75 <= h) && (h <= 0x7e) && IsJisChar(l)/*0x21 - 0x7e*/) {
- // User Defined Char (mapped to Private Use Area)
- return 0xe000 + (h - 0x75) * 0x5e + (l - 0x21);
- }
- }
- if ((rule & NEC_VDC) == 0) {
- if ((h == 0x2d) && (IsJisChar(l)/*0x21 - 0x7c*/)) {
- // NEC Vendor Defined Char
- return 0x0000;
- }
- }
- return jisx0208ToUnicode11(h, l);
-}
-
-/*! \internal */
-uint QJpUnicodeConv::jisx0212ToUnicode(uint h, uint l) const
-{
- if (rule & UDC){
- if ((0x75 <= h) && (h <= 0x7e) && IsJisChar(l)/*0x21 - 0x7e*/) {
- // User Defined Char (mapped to Private Use Area)
- return 0xe3ac + (h - 0x75) * 0x5e + (l - 0x21);
- }
- }
- if ((rule & IBM_VDC) == 0){
- if (((h == 0x73) && (0x73 <= l) && (l <= 0x7e)) ||
- ((h == 0x74) && (IsJisChar(l)/*0x21 - 0x7e*/))) {
- // IBM Vendor Defined Char
- return 0x0000;
- }
- }
- return jisx0212ToUnicode11(h, l);
-}
-
-/*! \internal */
-uint QJpUnicodeConv::unicodeToAscii(uint h, uint l) const
-{
- if ((h == 0) && (l < 0x80)) {
- return l;
- }
- return 0x0000;
-}
-
-/*! \internal */
-uint QJpUnicodeConv::unicodeToJisx0201(uint h, uint l) const
-{
- uint jis;
- if ((jis = unicodeToJisx0201Latin(h, l)) != 0) {
- return jis;
- } else if ((jis = unicodeToJisx0201Kana(h, l)) != 0) {
- return jis;
- }
- return 0x0000;
-}
-
-/*! \internal */
-uint QJpUnicodeConv::unicodeToJisx0201Latin(uint h, uint l) const
-{
- uint jis = unicode11ToJisx0201(h, l);
- if (IsLatin(jis)) {
- return jis;
- }
- return 0x0000;
-}
-
-/*! \internal */
-uint QJpUnicodeConv::unicodeToJisx0201Kana(uint h, uint l) const
-{
- uint jis = unicode11ToJisx0201(h, l);
- if (IsKana(jis)) {
- return jis;
- }
- return 0x0000;
-}
-
-/*! \internal */
-uint QJpUnicodeConv::unicodeToJisx0208(uint h, uint l) const
-{
- if (rule & UDC){
- uint unicode = (h << 8) | l;
- if ((0xe000 <= unicode) && (unicode <= 0xe3ab)) {
- // User Defined Char (mapped to Private Use Area)
- unicode -= 0xe000;
- return ((0x75 + unicode / 0x5e) << 8) | (0x21 + unicode % 0x5e);
- }
- }
- uint jis = unicode11ToJisx0208(h, l);
- if ((rule & NEC_VDC) == 0) {
- if ((0x2d21 <= jis) && (jis <= 0x2d7c)) {
- // NEC Vendor Defined Char
- return 0x0000;
- }
- }
- return jis;
-}
-
-/*! \internal */
-uint QJpUnicodeConv::unicodeToJisx0212(uint h, uint l) const
-{
- if (rule & UDC){
- uint unicode = (h << 8) | l;
- if ((0xe3ac <= unicode) && (unicode <= 0xe757)) {
- // User Defined Char (mapped to Private Use Area)
- unicode -= 0xe3ac;
- return ((0x75 + unicode / 0x5e) << 8) | (0x21 + unicode % 0x5e);
- }
- }
- uint jis = unicode11ToJisx0212(h, l);
- if ((rule & IBM_VDC) == 0){
- if (((0x7373 <= jis) && (jis <= 0x737e)) ||
- ((0x7421 <= jis) && (jis <= 0x747e))) {
- // IBM Vendor Defined Char
- return 0x0000;
- }
- }
- return jis;
-}
-
-/*! \internal */
-uint QJpUnicodeConv::sjisToUnicode(uint h, uint l) const
-{
- if (h == 0) {
- return jisx0201ToUnicode(h, l);
- } else if (IsSjisChar1(h) && IsSjisChar2(l)) {
- return jisx0208ToUnicode(sjisToJisx0208(h, l));
- }
- return 0x0000;
-}
-
-/*! \internal */
-uint QJpUnicodeConv::unicodeToSjis(uint h, uint l) const
-{
- uint jis;
- if ((jis = unicodeToJisx0201(h, l)) != 0x0000) {
- return jis;
- } else if ((jis = unicodeToJisx0208(h, l)) != 0x0000) {
- return jisx0208ToSjis(jis);
- } else if ((jis = unicodeToJisx0212(h, l)) != 0x0000) {
- return 0x0000;
- }
- return 0x0000;
-}
-
-/*
- * Unicode 1.1 with JISX0201 conversion.
- */
-
-class QJpUnicodeConv_Unicode_JISX0201 : public QJpUnicodeConv {
-public:
- QJpUnicodeConv_Unicode_JISX0201(int r) : QJpUnicodeConv(r) {}
-
-// uint AsciiToUnicode(uint h, uint l) const;
-// uint Jisx0201ToUnicode(uint h, uint l) const;
-// uint Jisx0201LatinToUnicode(uint h, uint l) const;
-// uint Jisx0201KanaToUnicode(uint h, uint l) const;
-// uint Jisx0208ToUnicode(uint h, uint l) const;
-// uint Jisx0212ToUnicode(uint h, uint l) const;
-
-// uint UnicodeToAscii(uint h, uint l) const;
-// uint UnicodeToJisx0201(uint h, uint l) const;
-// uint UnicodeToJisx0201Latin(uint h, uint l) const;
-// uint UnicodeToJisx0201Kana(uint h, uint l) const;
-// uint UnicodeToJisx0208(uint h, uint l) const;
-// uint UnicodeToJisx0212(uint h, uint l) const;
-};
-
-/*
- * Unicode 1.1 with ASCII conversion.
- */
-
-class QJpUnicodeConv_Unicode_ASCII : public QJpUnicodeConv {
-public:
- QJpUnicodeConv_Unicode_ASCII(int r) : QJpUnicodeConv(r) {}
-
-// uint AsciiToUnicode(uint h, uint l) const;
-// uint Jisx0201ToUnicode(uint h, uint l) const;
-// uint Jisx0201LatinToUnicode(uint h, uint l) const;
-// uint Jisx0201KanaToUnicode(uint h, uint l) const;
- uint jisx0208ToUnicode(uint h, uint l) const;
- uint jisx0212ToUnicode(uint h, uint l) const;
-
-// uint UnicodeToAscii(uint h, uint l) const;
-// uint UnicodeToJisx0201(uint h, uint l) const;
-// uint UnicodeToJisx0201Latin(uint h, uint l) const;
-// uint UnicodeToJisx0201Kana(uint h, uint l) const;
- uint unicodeToJisx0208(uint h, uint l) const;
- uint unicodeToJisx0212(uint h, uint l) const;
-};
-
-uint QJpUnicodeConv_Unicode_ASCII::jisx0208ToUnicode(uint h, uint l) const
-{
- if ((h == 0x21) && (l == 0x40)) {
- return 0xff3c;
- }
- return QJpUnicodeConv::jisx0208ToUnicode(h, l);
-}
-
-uint QJpUnicodeConv_Unicode_ASCII::jisx0212ToUnicode(uint h, uint l) const
-{
- if ((h == 0x22) && (l == 0x37)) {
- return 0xff5e;
- }
- return QJpUnicodeConv::jisx0212ToUnicode(h, l);
-}
-
-uint QJpUnicodeConv_Unicode_ASCII::unicodeToJisx0208(uint h, uint l) const
-{
- if ((h == 0x00) && (l == 0x5c)) {
- return 0x0000;
- }
- return QJpUnicodeConv::unicodeToJisx0208(h, l);
-}
-
-/*! \internal */
-uint QJpUnicodeConv_Unicode_ASCII::unicodeToJisx0212(uint h, uint l) const
-{
- if ((h == 0x00) && (l == 0x7e)) {
- return 0x0000;
- }
- if ((h == 0xff) && (l == 0x5e)) {
- return 0x2237;
- }
- return QJpUnicodeConv::unicodeToJisx0208(h, l);
-}
-
-/*
- * JISX0221 with JISX0201 conversion.
- */
-
-class QJpUnicodeConv_JISX0221_JISX0201 : public QJpUnicodeConv {
-public:
- QJpUnicodeConv_JISX0221_JISX0201(int r) : QJpUnicodeConv(r) {}
-
- uint asciiToUnicode(uint h, uint l) const;
-// uint Jisx0201ToUnicode(uint h, uint l) const;
-// uint Jisx0201LatinToUnicode(uint h, uint l) const;
-// uint Jisx0201KanaToUnicode(uint h, uint l) const;
- uint jisx0208ToUnicode(uint h, uint l) const;
-// uint Jisx0212ToUnicode(uint h, uint l) const;
-
- uint unicodeToAscii(uint h, uint l) const;
-// uint UnicodeToJisx0201(uint h, uint l) const;
-// uint UnicodeToJisx0201Latin(uint h, uint l) const;
-// uint UnicodeToJisx0201Kana(uint h, uint l) const;
- uint unicodeToJisx0208(uint h, uint l) const;
-// uint UnicodeToJisx0212(uint h, uint l) const;
-};
-
-uint QJpUnicodeConv_JISX0221_JISX0201::asciiToUnicode(uint h, uint l) const
-{
- return jisx0201LatinToUnicode(h, l);
-}
-
-uint QJpUnicodeConv_JISX0221_JISX0201::jisx0208ToUnicode(uint h, uint l) const
-{
- if ((h == 0x21) && (l == 0x3d)) {
- return 0x2014;
- }
- return QJpUnicodeConv::jisx0208ToUnicode(h, l);
-}
-
-uint QJpUnicodeConv_JISX0221_JISX0201::unicodeToAscii(uint h, uint l) const
-{
- return unicodeToJisx0201Latin(h, l);
-}
-
-uint QJpUnicodeConv_JISX0221_JISX0201::unicodeToJisx0208(uint h, uint l) const
-{
-#ifdef Q_STRICT
- if ((h == 0x20) && (l == 0x15)) {
- return 0x0000;
- }
-#endif
- if ((h == 0x20) && (l == 0x14)) {
- return 0x213d;
- }
- return QJpUnicodeConv::unicodeToJisx0208(h, l);
-}
-
-/*
- * JISX0221 with ASCII conversion.
- */
-
-class QJpUnicodeConv_JISX0221_ASCII : public QJpUnicodeConv {
-public:
- QJpUnicodeConv_JISX0221_ASCII(int r) : QJpUnicodeConv(r) {}
-
-// uint AsciiToUnicode(uint h, uint l) const;
-// uint Jisx0201ToUnicode(uint h, uint l) const;
- uint jisx0201LatinToUnicode(uint h, uint l) const;
-// uint Jisx0201KanaToUnicode(uint h, uint l) const;
- uint jisx0208ToUnicode(uint h, uint l) const;
- uint jisx0212ToUnicode(uint h, uint l) const;
-
-// uint UnicodeToAscii(uint h, uint l) const;
-// uint UnicodeToJisx0201(uint h, uint l) const;
- uint unicodeToJisx0201Latin(uint h, uint l) const;
-// uint UnicodeToJisx0201Kana(uint h, uint l) const;
- uint unicodeToJisx0208(uint h, uint l) const;
- uint unicodeToJisx0212(uint h, uint l) const;
-};
-
-uint QJpUnicodeConv_JISX0221_ASCII::jisx0201LatinToUnicode(uint h, uint l) const
-{
- return asciiToUnicode(h, l);
-}
-
-uint QJpUnicodeConv_JISX0221_ASCII::jisx0208ToUnicode(uint h, uint l) const
-{
- if (h == 0x21) {
- if (l == 0x31) {
- return 0x203e;
- } else if (l == 0x3d) {
- return 0x02014;
- } else if (l == 0x40) {
- return 0xff3c;
- } else if (l == 0x6f) {
- return 0x00a5;
- }
- }
- return QJpUnicodeConv::jisx0208ToUnicode(h, l);
-}
-
-uint QJpUnicodeConv_JISX0221_ASCII::jisx0212ToUnicode(uint h, uint l) const
-{
- if ((h == 0x22) && (l == 0x37)) {
- return 0xff5e;
- }
- return QJpUnicodeConv::jisx0212ToUnicode(h, l);
-}
-
-uint QJpUnicodeConv_JISX0221_ASCII::unicodeToJisx0201Latin(uint h, uint l) const
-{
- return QJpUnicodeConv::unicodeToAscii(h, l);
-}
-
-uint QJpUnicodeConv_JISX0221_ASCII::unicodeToJisx0208(uint h, uint l) const
-{
-#ifdef Q_STRICT
- if (((h == 0x00) && (l == 0x5c)) ||
- ((h == 0x20) && (l == 0x15)) ||
- ((h == 0xff) && ((l == 0xe3) || (l == 0xe5)))) {
- return 0x0000;
- }
-#else
- if ((h == 0x00) && (l == 0x5c)) {
- return 0x0000;
- }
-#endif
- if ((h == 0x00) && (l == 0xa5)) {
- return 0x216f;
- } else if (h == 0x20) {
- if (l == 0x14) {
- return 0x213d;
- } else if (l == 0x3e) {
- return 0x2131;
- }
- }
- return QJpUnicodeConv::unicodeToJisx0208(h, l);
-}
-
-/*! \internal */
-uint QJpUnicodeConv_JISX0221_ASCII::unicodeToJisx0212(uint h, uint l) const
-{
- if ((h == 0x00) && (l == 0x7e)) {
- return 0x0000;
- }
- if ((h == 0xff) && (l == 0x5e)) {
- return 0x2237;
- }
- return QJpUnicodeConv::unicodeToJisx0212(h, l);
-}
-
-/*
- * Sun Microsystems conversion.
- */
-
-class QJpUnicodeConv_Sun : public QJpUnicodeConv {
-public:
- QJpUnicodeConv_Sun(int r) : QJpUnicodeConv(r) {}
-
-// uint AsciiToUnicode(uint h, uint l) const;
-// uint Jisx0201ToUnicode(uint h, uint l) const;
- uint jisx0201LatinToUnicode(uint h, uint l) const;
-// uint Jisx0201KanaToUnicode(uint h, uint l) const;
- uint jisx0208ToUnicode(uint h, uint l) const;
- uint jisx0212ToUnicode(uint h, uint l) const;
-
- uint unicodeToAscii(uint h, uint l) const;
-// uint UnicodeToJisx0201(uint h, uint l) const;
- uint unicodeToJisx0201Latin(uint h, uint l) const;
-// uint UnicodeToJisx0201Kana(uint h, uint l) const;
- uint unicodeToJisx0208(uint h, uint l) const;
- uint unicodeToJisx0212(uint h, uint l) const;
-};
-
-uint QJpUnicodeConv_Sun::jisx0201LatinToUnicode(uint h, uint l) const
-{
- return asciiToUnicode(h, l);
-}
-
-uint QJpUnicodeConv_Sun::jisx0208ToUnicode(uint h, uint l) const
-{
- if ((h == 0x21) && (l == 0x40)) {
- return 0xff3c;
- }
- return QJpUnicodeConv::jisx0208ToUnicode(h, l);
-}
-
-uint QJpUnicodeConv_Sun::jisx0212ToUnicode(uint h, uint l) const
-{
-#if 1
- // Added by Serika Kususugawa to avoid conflict on U+007c.
- if ((h == 0x22) && (l == 0x37)) {
- return 0xff5e;
- }
-#endif
- return QJpUnicodeConv::jisx0212ToUnicode(h, l);
-}
-
-uint QJpUnicodeConv_Sun::unicodeToAscii(uint h, uint l) const
-{
- if ((h == 0x00) && (l == 0xa5)) {
- return 0x005c;
- } else if ((h == 0x20) && (l == 0x3e)) {
- return 0x007e;
- }
- return QJpUnicodeConv::unicodeToAscii(h, l);
-}
-
-uint QJpUnicodeConv_Sun::unicodeToJisx0201Latin(uint h, uint l) const
-{
- return QJpUnicodeConv::unicodeToAscii(h, l);
-}
-
-uint QJpUnicodeConv_Sun::unicodeToJisx0208(uint h, uint l) const
-{
- if ((h == 0x00) && (l == 0xa5)) {
- return 0x0000;
- } else if ((h == 0x20) && (l == 0x3e)) {
- return 0x0000;
- }
- return QJpUnicodeConv::unicodeToJisx0208(h, l);
-}
-
-/*! \internal */
-uint QJpUnicodeConv_Sun::unicodeToJisx0212(uint h, uint l) const
-{
-#if 1
- // Added by Serika Kususugawa to avoid conflict on U+007c.
- if ((h == 0x00) && (l == 0x7e)) {
- return 0x0000;
- }
- if ((h == 0xff) && (l == 0x5e)) {
- return 0x2237;
- }
-#endif
- return QJpUnicodeConv::unicodeToJisx0212(h, l);
-}
-
-/*
- * Microsoft conversion.
- */
-
-class QJpUnicodeConv_Microsoft : public QJpUnicodeConv {
-public:
- QJpUnicodeConv_Microsoft(int r) : QJpUnicodeConv(r) {}
-
-// uint AsciiToUnicode(uint h, uint l) const;
-// uint Jisx0201ToUnicode(uint h, uint l) const;
- uint jisx0201LatinToUnicode(uint h, uint l) const;
-// uint Jisx0201KanaToUnicode(uint h, uint l) const;
- uint jisx0208ToUnicode(uint h, uint l) const;
- uint jisx0212ToUnicode(uint h, uint l) const;
-
-// uint UnicodeToAscii(uint h, uint l) const;
-// uint UnicodeToJisx0201(uint h, uint l) const;
- uint unicodeToJisx0201Latin(uint h, uint l) const;
-// uint UnicodeToJisx0201Kana(uint h, uint l) const;
- uint unicodeToJisx0208(uint h, uint l) const;
- uint unicodeToJisx0212(uint h, uint l) const;
-};
-
-uint QJpUnicodeConv_Microsoft::jisx0201LatinToUnicode(uint h, uint l) const
-{
- return asciiToUnicode(h, l);
-}
-
-uint QJpUnicodeConv_Microsoft::jisx0208ToUnicode(uint h, uint l) const
-{
- if (h == 0x21) {
- if (l == 0x40) {
- return 0xff3c;
- } else if (l == 0x41) {
- return 0xff5e;
- } else if (l == 0x42) {
- return 0x2225;
- } else if (l == 0x5d) {
- return 0xff0d;
- } else if (l == 0x71) {
- return 0xffe0;
- } else if (l == 0x72) {
- return 0xffe1;
- }
- } else if (h == 0x22) {
- if (l == 0x4c) {
- return 0xffe2;
- }
- }
- return QJpUnicodeConv::jisx0208ToUnicode(h, l);
-}
-
-uint QJpUnicodeConv_Microsoft::jisx0212ToUnicode(uint h, uint l) const
-{
- if (h == 0x22) {
- if (l == 0x37) {
- return 0xff5e;
- } else if (l == 0x43) {
- return 0xffe4;
- }
- }
- return QJpUnicodeConv::jisx0212ToUnicode(h, l);
-}
-
-uint QJpUnicodeConv_Microsoft::unicodeToJisx0201Latin(uint h, uint l) const
-{
- return QJpUnicodeConv::unicodeToAscii(h, l);
-}
-
-uint QJpUnicodeConv_Microsoft::unicodeToJisx0208(uint h, uint l) const
-{
-#ifdef Q_STRICT
- if (((h == 0x00) && ((l == 0x5c) || (l == 0xa2) || (l == 0xa3) || (l == 0xac))) ||
- ((h == 0x20) && (l == 0x16)) ||
- ((h == 0x22) && (l == 0x12)) ||
- ((h == 0x30) && (l == 0x1c))) {
- return 0x0000;
- }
-#else
- if ((h == 0x00) && (l == 0x5c)) {
- return 0x0000;
- }
-#endif
- if ((h == 0x22) && (l == 0x25)) {
- return 0x2142;
- } else if (h == 0xff) {
- if (l == 0x0d) {
- return 0x215d;
- } else if (l == 0xe0) {
- return 0x2171;
- } else if (l == 0xe1) {
- return 0x2172;
- } else if (l == 0xe2) {
- return 0x224c;
- }
- }
- return QJpUnicodeConv::unicodeToJisx0208(h, l);
-}
-
-uint QJpUnicodeConv_Microsoft::unicodeToJisx0212(uint h, uint l) const
-{
-#ifdef Q_STRICT
- if ((h == 0x00) && ((l == 0x7e) || (l == 0xa6))) {
- return 0x0000;
- }
-#else
- if ((h == 0x00) && (l == 0x7e)) {
- return 0x0000;
- }
-#endif
- if (h == 0xff) {
- if (l == 0x5e) {
- return 0x2237;
- } else if (l == 0xe4) {
- return 0x2243;
- }
- }
- return QJpUnicodeConv::unicodeToJisx0212(h, l);
-}
-
-
-/*! \internal */
-QJpUnicodeConv *QJpUnicodeConv::newConverter(int rule)
-{
- QByteArray env = qgetenv("UNICODEMAP_JP");
- if (rule == Default && !env.isNull()) {
- for (int i = 0; i < (int)env.length();) {
- int j = env.indexOf(',', i);
- QByteArray s;
- if (j < 0) {
- s = env.mid(i).trimmed();
- i = env.length();
- } else {
- s = env.mid(i, j - i).trimmed();
- i = j + 1;
- }
- if (qstricmp(s, "unicode-0.9") == 0) {
- rule = (rule & 0xff00) | Unicode;
- } else if (qstricmp(s, "unicode-0201") == 0) {
- rule = (rule & 0xff00) | Unicode_JISX0201;
- } else if (qstricmp(s, "unicode-ascii") == 0) {
- rule = (rule & 0xff00) | Unicode_ASCII;
- } else if (qstricmp(s, "jisx0221-1995") == 0) {
- rule = (rule & 0xff00) | JISX0221_JISX0201;
- } else if ((qstricmp(s, "open-0201") == 0) ||
- (qstricmp(s, "open-19970715-0201") == 0)) {
- rule = (rule & 0xff00) | JISX0221_JISX0201;
- } else if ((qstricmp(s, "open-ascii") == 0) ||
- (qstricmp(s, "open-19970715-ascii") == 0)) {
- rule = (rule & 0xff00) | JISX0221_ASCII;
- } else if ((qstricmp(s, "open-ms") == 0) ||
- (qstricmp(s, "open-19970715-ms") == 0)) {
- rule = (rule & 0xff00) | Microsoft_CP932;
- } else if (qstricmp(s, "cp932") == 0) {
- rule = (rule & 0xff00) | Microsoft_CP932;
- } else if (qstricmp(s, "jdk1.1.7") == 0) {
- rule = (rule & 0xff00) | Sun_JDK117;
- } else if (qstricmp(s, "nec-vdc") == 0) {
- rule = rule | NEC_VDC;
- } else if (qstricmp(s, "ibm-vdc") == 0) {
- rule = rule | IBM_VDC;
- } else if (qstricmp(s, "udc") == 0) {
- rule = rule | UDC;
- }
- }
- }
-
- switch (rule & 0x00ff) {
- case Unicode_JISX0201:
- return new QJpUnicodeConv_Unicode_JISX0201(rule);
- case Unicode_ASCII:
- return new QJpUnicodeConv_Unicode_ASCII(rule);
- case JISX0221_JISX0201:
- return new QJpUnicodeConv_JISX0221_JISX0201(rule);
- case JISX0221_ASCII:
- return new QJpUnicodeConv_JISX0221_ASCII(rule);
- case Sun_JDK117:
- return new QJpUnicodeConv_Sun(rule);
- case Microsoft_CP932:
- return new QJpUnicodeConv_Microsoft(rule);
- default:
- return new QJpUnicodeConv_Unicode_ASCII(rule);
- }
-}
-
-/*
- * JISX0208 <-> ShiftJIS conversion.
- */
-
-static uint jisx0208ToSjis(uint h, uint l)
-{
- if ((0x0021 <= h) && (h <= 0x007e) && (0x0021 <= l) && (l <= 0x007e)) {
- return ((((h - 1) >> 1) + ((h <= 0x5e) ? 0x71 : 0xb1)) << 8) |
- (l + ((h & 1) ? ((l < 0x60) ? 0x1f : 0x20) : 0x7e));
- }
- return 0x0000;
-}
-
-static uint sjisToJisx0208(uint h, uint l)
-{
- if ((((0x81 <= h) && (h <= 0x9f)) || ((0xe0 <= h) && (h <= 0xef))) &&
- ((0x40 <= l) && (l != 0x7f) && (l <= 0xfc))) {
- if (l < 0x9f) {
- return (((h << 1) - ((h <= 0x9f) ? 0x00e1 : 0x0161)) << 8) |
- (l - ((l <= 0x7f) ? 0x1f : 0x20));
- } else {
- return (((h << 1) - ((h <= 0x9f) ? 0x00e1 : 0x0161) + 1) << 8) |
- (l - 0x7e);
- }
- }
- return 0x0000;
-}
-
-/*
- * This function is derived from Unicode 1.1,
- * JIS X 0201 (1976) to Unicode mapping table version 0.9 .
- */
-
-#define JISX0201_YEN_SIGN 0x005c
-#define UNICODE_YEN_SIGN 0x00a5
-
-#define JISX0201_OVERLINE 0x007e
-#define UNICODE_OVERLINE 0x203e
-
-static uint jisx0201ToUnicode11(uint h, uint l)
-{
- if (h == 0x00) {
- if (l < 0x80) {
- if (l == JISX0201_YEN_SIGN) {
- return UNICODE_YEN_SIGN;
- } else if (l == JISX0201_OVERLINE) {
- return UNICODE_OVERLINE;
- } else {
- return l;
- }
- } else if ((0xa1 <= l) && (l <= 0x00df)) {
- return 0xff61 + l - 0x00a1;
- }
- }
- return 0x0000;
-}
-
-/*
- * This function is derived from Unicode 1.1,
- * JIS X 0201 (1976) to Unicode mapping table version 0.9 .
- */
-
-static uint unicode11ToJisx0201(uint h, uint l)
-{
- if ((h == 0x00) && (l < 0x80)) {
- if ((l == JISX0201_YEN_SIGN) ||
- (l == JISX0201_OVERLINE)) {
- return 0x0000;
- }
- return l;
- } else if ((h == 0x00) && (l == 0xa5)) {
- return JISX0201_YEN_SIGN;
- } else if ((h == 0x20) && (l == 0x3e)) {
- return JISX0201_OVERLINE;
- } else if ((h == 0xff) && (0x61 <= l) && (l <= 0x9f)) {
- return 0x00a1 + l - 0x61;
- }
- return 0x0000;
-}
-
-/*
- * This data is derived from Unicode 1.1,
- * JIS X 0208 (1990) to Unicode mapping table version 0.9 .
- * (In addition NEC Vender Defined Char included)
- */
-static unsigned short const jisx0208_to_unicode[] = {
- /* 0x2121 - 0x217e */
- 0x3000, 0x3001, 0x3002, 0xff0c, 0xff0e, 0x30fb, 0xff1a,
- 0xff1b, 0xff1f, 0xff01, 0x309b, 0x309c, 0x00b4, 0xff40, 0x00a8,
- 0xff3e, 0xffe3, 0xff3f, 0x30fd, 0x30fe, 0x309d, 0x309e, 0x3003,
- 0x4edd, 0x3005, 0x3006, 0x3007, 0x30fc, 0x2015, 0x2010, 0xff0f,
- 0x005c, 0x301c, 0x2016, 0xff5c, 0x2026, 0x2025, 0x2018, 0x2019,
- 0x201c, 0x201d, 0xff08, 0xff09, 0x3014, 0x3015, 0xff3b, 0xff3d,
- 0xff5b, 0xff5d, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c, 0x300d,
- 0x300e, 0x300f, 0x3010, 0x3011, 0xff0b, 0xff0d, 0x00b1, 0x00d7,
- 0x00f7, 0xff1d, 0x2260, 0xff1c, 0xff1e, 0x2266, 0x2267, 0x221e,
- 0x2234, 0x2642, 0x2640, 0x00b0, 0x2032, 0x2033, 0x2103, 0xffe5,
- 0xff04, 0x00a2, 0x00a3, 0xff05, 0xff03, 0xff06, 0xff0a, 0xff20,
- 0x00a7, 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7,
- /* 0x2221 - 0x227e */
- 0x25c6, 0x25a1, 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc,
- 0x203b, 0x3012, 0x2192, 0x2190, 0x2191, 0x2193, 0x3013, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282, 0x2283,
- 0x222a, 0x2229, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x2227, 0x2228, 0x00ac, 0x21d2, 0x21d4, 0x2200,
- 0x2203, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x2220, 0x22a5, 0x2312, 0x2202,
- 0x2207, 0x2261, 0x2252, 0x226a, 0x226b, 0x221a, 0x223d, 0x221d,
- 0x2235, 0x222b, 0x222c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x212b, 0x2030, 0x266f, 0x266d, 0x266a, 0x2020,
- 0x2021, 0x00b6, 0x0000, 0x0000, 0x0000, 0x0000, 0x25ef,
- /* 0x2321 - 0x237e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0xff10, 0xff11, 0xff12, 0xff13, 0xff14, 0xff15, 0xff16, 0xff17,
- 0xff18, 0xff19, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0xff21, 0xff22, 0xff23, 0xff24, 0xff25, 0xff26, 0xff27,
- 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c, 0xff2d, 0xff2e, 0xff2f,
- 0xff30, 0xff31, 0xff32, 0xff33, 0xff34, 0xff35, 0xff36, 0xff37,
- 0xff38, 0xff39, 0xff3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0xff41, 0xff42, 0xff43, 0xff44, 0xff45, 0xff46, 0xff47,
- 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c, 0xff4d, 0xff4e, 0xff4f,
- 0xff50, 0xff51, 0xff52, 0xff53, 0xff54, 0xff55, 0xff56, 0xff57,
- 0xff58, 0xff59, 0xff5a, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2421 - 0x247e */
- 0x3041, 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047,
- 0x3048, 0x3049, 0x304a, 0x304b, 0x304c, 0x304d, 0x304e, 0x304f,
- 0x3050, 0x3051, 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057,
- 0x3058, 0x3059, 0x305a, 0x305b, 0x305c, 0x305d, 0x305e, 0x305f,
- 0x3060, 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067,
- 0x3068, 0x3069, 0x306a, 0x306b, 0x306c, 0x306d, 0x306e, 0x306f,
- 0x3070, 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077,
- 0x3078, 0x3079, 0x307a, 0x307b, 0x307c, 0x307d, 0x307e, 0x307f,
- 0x3080, 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087,
- 0x3088, 0x3089, 0x308a, 0x308b, 0x308c, 0x308d, 0x308e, 0x308f,
- 0x3090, 0x3091, 0x3092, 0x3093, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2521 - 0x257e */
- 0x30a1, 0x30a2, 0x30a3, 0x30a4, 0x30a5, 0x30a6, 0x30a7,
- 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac, 0x30ad, 0x30ae, 0x30af,
- 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4, 0x30b5, 0x30b6, 0x30b7,
- 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc, 0x30bd, 0x30be, 0x30bf,
- 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4, 0x30c5, 0x30c6, 0x30c7,
- 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc, 0x30cd, 0x30ce, 0x30cf,
- 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4, 0x30d5, 0x30d6, 0x30d7,
- 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc, 0x30dd, 0x30de, 0x30df,
- 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4, 0x30e5, 0x30e6, 0x30e7,
- 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec, 0x30ed, 0x30ee, 0x30ef,
- 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4, 0x30f5, 0x30f6, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2621 - 0x267e */
- 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
- 0x0398, 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f,
- 0x03a0, 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8,
- 0x03a9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7,
- 0x03b8, 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf,
- 0x03c0, 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8,
- 0x03c9, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2721 - 0x277e */
- 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0401,
- 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c, 0x041d,
- 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425,
- 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c, 0x042d,
- 0x042e, 0x042f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0451,
- 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c, 0x043d,
- 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445,
- 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c, 0x044d,
- 0x044e, 0x044f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2821 - 0x287e */
- 0x2500, 0x2502, 0x250c, 0x2510, 0x2518, 0x2514, 0x251c,
- 0x252c, 0x2524, 0x2534, 0x253c, 0x2501, 0x2503, 0x250f, 0x2513,
- 0x251b, 0x2517, 0x2523, 0x2533, 0x252b, 0x253b, 0x254b, 0x2520,
- 0x252f, 0x2528, 0x2537, 0x253f, 0x251d, 0x2530, 0x2525, 0x2538,
- 0x2542, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2921 - 0x297e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2a21 - 0x2a7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2b21 - 0x2b7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2c21 - 0x2c7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2d21 - 0x2d7e */
- 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466,
- 0x2467, 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e,
- 0x246f, 0x2470, 0x2471, 0x2472, 0x2473, 0x2160, 0x2161, 0x2162,
- 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x0000,
- 0x3349, 0x3314, 0x3322, 0x334d, 0x3318, 0x3327, 0x3303, 0x3336,
- 0x3351, 0x3357, 0x330d, 0x3326, 0x3323, 0x332b, 0x334a, 0x333b,
- 0x339c, 0x339d, 0x339e, 0x338e, 0x338f, 0x33c4, 0x33a1, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x337b,
- 0x301d, 0x301f, 0x2116, 0x33cd, 0x2121, 0x32a4, 0x32a5, 0x32a6,
- 0x32a7, 0x32a8, 0x3231, 0x3232, 0x3239, 0x337e, 0x337d, 0x337c,
- 0x2252, 0x2261, 0x222b, 0x222e, 0x2211, 0x221a, 0x22a5, 0x2220,
- 0x221f, 0x22bf, 0x2235, 0x2229, 0x222a, 0x0000, 0x0000,
- /* 0x2e21 - 0x2e7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2f21 - 0x2f7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x3021 - 0x307e */
- 0x4e9c, 0x5516, 0x5a03, 0x963f, 0x54c0, 0x611b, 0x6328,
- 0x59f6, 0x9022, 0x8475, 0x831c, 0x7a50, 0x60aa, 0x63e1, 0x6e25,
- 0x65ed, 0x8466, 0x82a6, 0x9bf5, 0x6893, 0x5727, 0x65a1, 0x6271,
- 0x5b9b, 0x59d0, 0x867b, 0x98f4, 0x7d62, 0x7dbe, 0x9b8e, 0x6216,
- 0x7c9f, 0x88b7, 0x5b89, 0x5eb5, 0x6309, 0x6697, 0x6848, 0x95c7,
- 0x978d, 0x674f, 0x4ee5, 0x4f0a, 0x4f4d, 0x4f9d, 0x5049, 0x56f2,
- 0x5937, 0x59d4, 0x5a01, 0x5c09, 0x60df, 0x610f, 0x6170, 0x6613,
- 0x6905, 0x70ba, 0x754f, 0x7570, 0x79fb, 0x7dad, 0x7def, 0x80c3,
- 0x840e, 0x8863, 0x8b02, 0x9055, 0x907a, 0x533b, 0x4e95, 0x4ea5,
- 0x57df, 0x80b2, 0x90c1, 0x78ef, 0x4e00, 0x58f1, 0x6ea2, 0x9038,
- 0x7a32, 0x8328, 0x828b, 0x9c2f, 0x5141, 0x5370, 0x54bd, 0x54e1,
- 0x56e0, 0x59fb, 0x5f15, 0x98f2, 0x6deb, 0x80e4, 0x852d,
- /* 0x3121 - 0x317e */
- 0x9662, 0x9670, 0x96a0, 0x97fb, 0x540b, 0x53f3, 0x5b87,
- 0x70cf, 0x7fbd, 0x8fc2, 0x96e8, 0x536f, 0x9d5c, 0x7aba, 0x4e11,
- 0x7893, 0x81fc, 0x6e26, 0x5618, 0x5504, 0x6b1d, 0x851a, 0x9c3b,
- 0x59e5, 0x53a9, 0x6d66, 0x74dc, 0x958f, 0x5642, 0x4e91, 0x904b,
- 0x96f2, 0x834f, 0x990c, 0x53e1, 0x55b6, 0x5b30, 0x5f71, 0x6620,
- 0x66f3, 0x6804, 0x6c38, 0x6cf3, 0x6d29, 0x745b, 0x76c8, 0x7a4e,
- 0x9834, 0x82f1, 0x885b, 0x8a60, 0x92ed, 0x6db2, 0x75ab, 0x76ca,
- 0x99c5, 0x60a6, 0x8b01, 0x8d8a, 0x95b2, 0x698e, 0x53ad, 0x5186,
- 0x5712, 0x5830, 0x5944, 0x5bb4, 0x5ef6, 0x6028, 0x63a9, 0x63f4,
- 0x6cbf, 0x6f14, 0x708e, 0x7114, 0x7159, 0x71d5, 0x733f, 0x7e01,
- 0x8276, 0x82d1, 0x8597, 0x9060, 0x925b, 0x9d1b, 0x5869, 0x65bc,
- 0x6c5a, 0x7525, 0x51f9, 0x592e, 0x5965, 0x5f80, 0x5fdc,
- /* 0x3221 - 0x327e */
- 0x62bc, 0x65fa, 0x6a2a, 0x6b27, 0x6bb4, 0x738b, 0x7fc1,
- 0x8956, 0x9d2c, 0x9d0e, 0x9ec4, 0x5ca1, 0x6c96, 0x837b, 0x5104,
- 0x5c4b, 0x61b6, 0x81c6, 0x6876, 0x7261, 0x4e59, 0x4ffa, 0x5378,
- 0x6069, 0x6e29, 0x7a4f, 0x97f3, 0x4e0b, 0x5316, 0x4eee, 0x4f55,
- 0x4f3d, 0x4fa1, 0x4f73, 0x52a0, 0x53ef, 0x5609, 0x590f, 0x5ac1,
- 0x5bb6, 0x5be1, 0x79d1, 0x6687, 0x679c, 0x67b6, 0x6b4c, 0x6cb3,
- 0x706b, 0x73c2, 0x798d, 0x79be, 0x7a3c, 0x7b87, 0x82b1, 0x82db,
- 0x8304, 0x8377, 0x83ef, 0x83d3, 0x8766, 0x8ab2, 0x5629, 0x8ca8,
- 0x8fe6, 0x904e, 0x971e, 0x868a, 0x4fc4, 0x5ce8, 0x6211, 0x7259,
- 0x753b, 0x81e5, 0x82bd, 0x86fe, 0x8cc0, 0x96c5, 0x9913, 0x99d5,
- 0x4ecb, 0x4f1a, 0x89e3, 0x56de, 0x584a, 0x58ca, 0x5efb, 0x5feb,
- 0x602a, 0x6094, 0x6062, 0x61d0, 0x6212, 0x62d0, 0x6539,
- /* 0x3321 - 0x337e */
- 0x9b41, 0x6666, 0x68b0, 0x6d77, 0x7070, 0x754c, 0x7686,
- 0x7d75, 0x82a5, 0x87f9, 0x958b, 0x968e, 0x8c9d, 0x51f1, 0x52be,
- 0x5916, 0x54b3, 0x5bb3, 0x5d16, 0x6168, 0x6982, 0x6daf, 0x788d,
- 0x84cb, 0x8857, 0x8a72, 0x93a7, 0x9ab8, 0x6d6c, 0x99a8, 0x86d9,
- 0x57a3, 0x67ff, 0x86ce, 0x920e, 0x5283, 0x5687, 0x5404, 0x5ed3,
- 0x62e1, 0x64b9, 0x683c, 0x6838, 0x6bbb, 0x7372, 0x78ba, 0x7a6b,
- 0x899a, 0x89d2, 0x8d6b, 0x8f03, 0x90ed, 0x95a3, 0x9694, 0x9769,
- 0x5b66, 0x5cb3, 0x697d, 0x984d, 0x984e, 0x639b, 0x7b20, 0x6a2b,
- 0x6a7f, 0x68b6, 0x9c0d, 0x6f5f, 0x5272, 0x559d, 0x6070, 0x62ec,
- 0x6d3b, 0x6e07, 0x6ed1, 0x845b, 0x8910, 0x8f44, 0x4e14, 0x9c39,
- 0x53f6, 0x691b, 0x6a3a, 0x9784, 0x682a, 0x515c, 0x7ac3, 0x84b2,
- 0x91dc, 0x938c, 0x565b, 0x9d28, 0x6822, 0x8305, 0x8431,
- /* 0x3421 - 0x347e */
- 0x7ca5, 0x5208, 0x82c5, 0x74e6, 0x4e7e, 0x4f83, 0x51a0,
- 0x5bd2, 0x520a, 0x52d8, 0x52e7, 0x5dfb, 0x559a, 0x582a, 0x59e6,
- 0x5b8c, 0x5b98, 0x5bdb, 0x5e72, 0x5e79, 0x60a3, 0x611f, 0x6163,
- 0x61be, 0x63db, 0x6562, 0x67d1, 0x6853, 0x68fa, 0x6b3e, 0x6b53,
- 0x6c57, 0x6f22, 0x6f97, 0x6f45, 0x74b0, 0x7518, 0x76e3, 0x770b,
- 0x7aff, 0x7ba1, 0x7c21, 0x7de9, 0x7f36, 0x7ff0, 0x809d, 0x8266,
- 0x839e, 0x89b3, 0x8acc, 0x8cab, 0x9084, 0x9451, 0x9593, 0x9591,
- 0x95a2, 0x9665, 0x97d3, 0x9928, 0x8218, 0x4e38, 0x542b, 0x5cb8,
- 0x5dcc, 0x73a9, 0x764c, 0x773c, 0x5ca9, 0x7feb, 0x8d0b, 0x96c1,
- 0x9811, 0x9854, 0x9858, 0x4f01, 0x4f0e, 0x5371, 0x559c, 0x5668,
- 0x57fa, 0x5947, 0x5b09, 0x5bc4, 0x5c90, 0x5e0c, 0x5e7e, 0x5fcc,
- 0x63ee, 0x673a, 0x65d7, 0x65e2, 0x671f, 0x68cb, 0x68c4,
- /* 0x3521 - 0x357e */
- 0x6a5f, 0x5e30, 0x6bc5, 0x6c17, 0x6c7d, 0x757f, 0x7948,
- 0x5b63, 0x7a00, 0x7d00, 0x5fbd, 0x898f, 0x8a18, 0x8cb4, 0x8d77,
- 0x8ecc, 0x8f1d, 0x98e2, 0x9a0e, 0x9b3c, 0x4e80, 0x507d, 0x5100,
- 0x5993, 0x5b9c, 0x622f, 0x6280, 0x64ec, 0x6b3a, 0x72a0, 0x7591,
- 0x7947, 0x7fa9, 0x87fb, 0x8abc, 0x8b70, 0x63ac, 0x83ca, 0x97a0,
- 0x5409, 0x5403, 0x55ab, 0x6854, 0x6a58, 0x8a70, 0x7827, 0x6775,
- 0x9ecd, 0x5374, 0x5ba2, 0x811a, 0x8650, 0x9006, 0x4e18, 0x4e45,
- 0x4ec7, 0x4f11, 0x53ca, 0x5438, 0x5bae, 0x5f13, 0x6025, 0x6551,
- 0x673d, 0x6c42, 0x6c72, 0x6ce3, 0x7078, 0x7403, 0x7a76, 0x7aae,
- 0x7b08, 0x7d1a, 0x7cfe, 0x7d66, 0x65e7, 0x725b, 0x53bb, 0x5c45,
- 0x5de8, 0x62d2, 0x62e0, 0x6319, 0x6e20, 0x865a, 0x8a31, 0x8ddd,
- 0x92f8, 0x6f01, 0x79a6, 0x9b5a, 0x4ea8, 0x4eab, 0x4eac,
- /* 0x3621 - 0x367e */
- 0x4f9b, 0x4fa0, 0x50d1, 0x5147, 0x7af6, 0x5171, 0x51f6,
- 0x5354, 0x5321, 0x537f, 0x53eb, 0x55ac, 0x5883, 0x5ce1, 0x5f37,
- 0x5f4a, 0x602f, 0x6050, 0x606d, 0x631f, 0x6559, 0x6a4b, 0x6cc1,
- 0x72c2, 0x72ed, 0x77ef, 0x80f8, 0x8105, 0x8208, 0x854e, 0x90f7,
- 0x93e1, 0x97ff, 0x9957, 0x9a5a, 0x4ef0, 0x51dd, 0x5c2d, 0x6681,
- 0x696d, 0x5c40, 0x66f2, 0x6975, 0x7389, 0x6850, 0x7c81, 0x50c5,
- 0x52e4, 0x5747, 0x5dfe, 0x9326, 0x65a4, 0x6b23, 0x6b3d, 0x7434,
- 0x7981, 0x79bd, 0x7b4b, 0x7dca, 0x82b9, 0x83cc, 0x887f, 0x895f,
- 0x8b39, 0x8fd1, 0x91d1, 0x541f, 0x9280, 0x4e5d, 0x5036, 0x53e5,
- 0x533a, 0x72d7, 0x7396, 0x77e9, 0x82e6, 0x8eaf, 0x99c6, 0x99c8,
- 0x99d2, 0x5177, 0x611a, 0x865e, 0x55b0, 0x7a7a, 0x5076, 0x5bd3,
- 0x9047, 0x9685, 0x4e32, 0x6adb, 0x91e7, 0x5c51, 0x5c48,
- /* 0x3721 - 0x377e */
- 0x6398, 0x7a9f, 0x6c93, 0x9774, 0x8f61, 0x7aaa, 0x718a,
- 0x9688, 0x7c82, 0x6817, 0x7e70, 0x6851, 0x936c, 0x52f2, 0x541b,
- 0x85ab, 0x8a13, 0x7fa4, 0x8ecd, 0x90e1, 0x5366, 0x8888, 0x7941,
- 0x4fc2, 0x50be, 0x5211, 0x5144, 0x5553, 0x572d, 0x73ea, 0x578b,
- 0x5951, 0x5f62, 0x5f84, 0x6075, 0x6176, 0x6167, 0x61a9, 0x63b2,
- 0x643a, 0x656c, 0x666f, 0x6842, 0x6e13, 0x7566, 0x7a3d, 0x7cfb,
- 0x7d4c, 0x7d99, 0x7e4b, 0x7f6b, 0x830e, 0x834a, 0x86cd, 0x8a08,
- 0x8a63, 0x8b66, 0x8efd, 0x981a, 0x9d8f, 0x82b8, 0x8fce, 0x9be8,
- 0x5287, 0x621f, 0x6483, 0x6fc0, 0x9699, 0x6841, 0x5091, 0x6b20,
- 0x6c7a, 0x6f54, 0x7a74, 0x7d50, 0x8840, 0x8a23, 0x6708, 0x4ef6,
- 0x5039, 0x5026, 0x5065, 0x517c, 0x5238, 0x5263, 0x55a7, 0x570f,
- 0x5805, 0x5acc, 0x5efa, 0x61b2, 0x61f8, 0x62f3, 0x6372,
- /* 0x3821 - 0x387e */
- 0x691c, 0x6a29, 0x727d, 0x72ac, 0x732e, 0x7814, 0x786f,
- 0x7d79, 0x770c, 0x80a9, 0x898b, 0x8b19, 0x8ce2, 0x8ed2, 0x9063,
- 0x9375, 0x967a, 0x9855, 0x9a13, 0x9e78, 0x5143, 0x539f, 0x53b3,
- 0x5e7b, 0x5f26, 0x6e1b, 0x6e90, 0x7384, 0x73fe, 0x7d43, 0x8237,
- 0x8a00, 0x8afa, 0x9650, 0x4e4e, 0x500b, 0x53e4, 0x547c, 0x56fa,
- 0x59d1, 0x5b64, 0x5df1, 0x5eab, 0x5f27, 0x6238, 0x6545, 0x67af,
- 0x6e56, 0x72d0, 0x7cca, 0x88b4, 0x80a1, 0x80e1, 0x83f0, 0x864e,
- 0x8a87, 0x8de8, 0x9237, 0x96c7, 0x9867, 0x9f13, 0x4e94, 0x4e92,
- 0x4f0d, 0x5348, 0x5449, 0x543e, 0x5a2f, 0x5f8c, 0x5fa1, 0x609f,
- 0x68a7, 0x6a8e, 0x745a, 0x7881, 0x8a9e, 0x8aa4, 0x8b77, 0x9190,
- 0x4e5e, 0x9bc9, 0x4ea4, 0x4f7c, 0x4faf, 0x5019, 0x5016, 0x5149,
- 0x516c, 0x529f, 0x52b9, 0x52fe, 0x539a, 0x53e3, 0x5411,
- /* 0x3921 - 0x397e */
- 0x540e, 0x5589, 0x5751, 0x57a2, 0x597d, 0x5b54, 0x5b5d,
- 0x5b8f, 0x5de5, 0x5de7, 0x5df7, 0x5e78, 0x5e83, 0x5e9a, 0x5eb7,
- 0x5f18, 0x6052, 0x614c, 0x6297, 0x62d8, 0x63a7, 0x653b, 0x6602,
- 0x6643, 0x66f4, 0x676d, 0x6821, 0x6897, 0x69cb, 0x6c5f, 0x6d2a,
- 0x6d69, 0x6e2f, 0x6e9d, 0x7532, 0x7687, 0x786c, 0x7a3f, 0x7ce0,
- 0x7d05, 0x7d18, 0x7d5e, 0x7db1, 0x8015, 0x8003, 0x80af, 0x80b1,
- 0x8154, 0x818f, 0x822a, 0x8352, 0x884c, 0x8861, 0x8b1b, 0x8ca2,
- 0x8cfc, 0x90ca, 0x9175, 0x9271, 0x783f, 0x92fc, 0x95a4, 0x964d,
- 0x9805, 0x9999, 0x9ad8, 0x9d3b, 0x525b, 0x52ab, 0x53f7, 0x5408,
- 0x58d5, 0x62f7, 0x6fe0, 0x8c6a, 0x8f5f, 0x9eb9, 0x514b, 0x523b,
- 0x544a, 0x56fd, 0x7a40, 0x9177, 0x9d60, 0x9ed2, 0x7344, 0x6f09,
- 0x8170, 0x7511, 0x5ffd, 0x60da, 0x9aa8, 0x72db, 0x8fbc,
- /* 0x3a21 - 0x3a7e */
- 0x6b64, 0x9803, 0x4eca, 0x56f0, 0x5764, 0x58be, 0x5a5a,
- 0x6068, 0x61c7, 0x660f, 0x6606, 0x6839, 0x68b1, 0x6df7, 0x75d5,
- 0x7d3a, 0x826e, 0x9b42, 0x4e9b, 0x4f50, 0x53c9, 0x5506, 0x5d6f,
- 0x5de6, 0x5dee, 0x67fb, 0x6c99, 0x7473, 0x7802, 0x8a50, 0x9396,
- 0x88df, 0x5750, 0x5ea7, 0x632b, 0x50b5, 0x50ac, 0x518d, 0x6700,
- 0x54c9, 0x585e, 0x59bb, 0x5bb0, 0x5f69, 0x624d, 0x63a1, 0x683d,
- 0x6b73, 0x6e08, 0x707d, 0x91c7, 0x7280, 0x7815, 0x7826, 0x796d,
- 0x658e, 0x7d30, 0x83dc, 0x88c1, 0x8f09, 0x969b, 0x5264, 0x5728,
- 0x6750, 0x7f6a, 0x8ca1, 0x51b4, 0x5742, 0x962a, 0x583a, 0x698a,
- 0x80b4, 0x54b2, 0x5d0e, 0x57fc, 0x7895, 0x9dfa, 0x4f5c, 0x524a,
- 0x548b, 0x643e, 0x6628, 0x6714, 0x67f5, 0x7a84, 0x7b56, 0x7d22,
- 0x932f, 0x685c, 0x9bad, 0x7b39, 0x5319, 0x518a, 0x5237,
- /* 0x3b21 - 0x3b7e */
- 0x5bdf, 0x62f6, 0x64ae, 0x64e6, 0x672d, 0x6bba, 0x85a9,
- 0x96d1, 0x7690, 0x9bd6, 0x634c, 0x9306, 0x9bab, 0x76bf, 0x6652,
- 0x4e09, 0x5098, 0x53c2, 0x5c71, 0x60e8, 0x6492, 0x6563, 0x685f,
- 0x71e6, 0x73ca, 0x7523, 0x7b97, 0x7e82, 0x8695, 0x8b83, 0x8cdb,
- 0x9178, 0x9910, 0x65ac, 0x66ab, 0x6b8b, 0x4ed5, 0x4ed4, 0x4f3a,
- 0x4f7f, 0x523a, 0x53f8, 0x53f2, 0x55e3, 0x56db, 0x58eb, 0x59cb,
- 0x59c9, 0x59ff, 0x5b50, 0x5c4d, 0x5e02, 0x5e2b, 0x5fd7, 0x601d,
- 0x6307, 0x652f, 0x5b5c, 0x65af, 0x65bd, 0x65e8, 0x679d, 0x6b62,
- 0x6b7b, 0x6c0f, 0x7345, 0x7949, 0x79c1, 0x7cf8, 0x7d19, 0x7d2b,
- 0x80a2, 0x8102, 0x81f3, 0x8996, 0x8a5e, 0x8a69, 0x8a66, 0x8a8c,
- 0x8aee, 0x8cc7, 0x8cdc, 0x96cc, 0x98fc, 0x6b6f, 0x4e8b, 0x4f3c,
- 0x4f8d, 0x5150, 0x5b57, 0x5bfa, 0x6148, 0x6301, 0x6642,
- /* 0x3c21 - 0x3c7e */
- 0x6b21, 0x6ecb, 0x6cbb, 0x723e, 0x74bd, 0x75d4, 0x78c1,
- 0x793a, 0x800c, 0x8033, 0x81ea, 0x8494, 0x8f9e, 0x6c50, 0x9e7f,
- 0x5f0f, 0x8b58, 0x9d2b, 0x7afa, 0x8ef8, 0x5b8d, 0x96eb, 0x4e03,
- 0x53f1, 0x57f7, 0x5931, 0x5ac9, 0x5ba4, 0x6089, 0x6e7f, 0x6f06,
- 0x75be, 0x8cea, 0x5b9f, 0x8500, 0x7be0, 0x5072, 0x67f4, 0x829d,
- 0x5c61, 0x854a, 0x7e1e, 0x820e, 0x5199, 0x5c04, 0x6368, 0x8d66,
- 0x659c, 0x716e, 0x793e, 0x7d17, 0x8005, 0x8b1d, 0x8eca, 0x906e,
- 0x86c7, 0x90aa, 0x501f, 0x52fa, 0x5c3a, 0x6753, 0x707c, 0x7235,
- 0x914c, 0x91c8, 0x932b, 0x82e5, 0x5bc2, 0x5f31, 0x60f9, 0x4e3b,
- 0x53d6, 0x5b88, 0x624b, 0x6731, 0x6b8a, 0x72e9, 0x73e0, 0x7a2e,
- 0x816b, 0x8da3, 0x9152, 0x9996, 0x5112, 0x53d7, 0x546a, 0x5bff,
- 0x6388, 0x6a39, 0x7dac, 0x9700, 0x56da, 0x53ce, 0x5468,
- /* 0x3d21 - 0x3d7e */
- 0x5b97, 0x5c31, 0x5dde, 0x4fee, 0x6101, 0x62fe, 0x6d32,
- 0x79c0, 0x79cb, 0x7d42, 0x7e4d, 0x7fd2, 0x81ed, 0x821f, 0x8490,
- 0x8846, 0x8972, 0x8b90, 0x8e74, 0x8f2f, 0x9031, 0x914b, 0x916c,
- 0x96c6, 0x919c, 0x4ec0, 0x4f4f, 0x5145, 0x5341, 0x5f93, 0x620e,
- 0x67d4, 0x6c41, 0x6e0b, 0x7363, 0x7e26, 0x91cd, 0x9283, 0x53d4,
- 0x5919, 0x5bbf, 0x6dd1, 0x795d, 0x7e2e, 0x7c9b, 0x587e, 0x719f,
- 0x51fa, 0x8853, 0x8ff0, 0x4fca, 0x5cfb, 0x6625, 0x77ac, 0x7ae3,
- 0x821c, 0x99ff, 0x51c6, 0x5faa, 0x65ec, 0x696f, 0x6b89, 0x6df3,
- 0x6e96, 0x6f64, 0x76fe, 0x7d14, 0x5de1, 0x9075, 0x9187, 0x9806,
- 0x51e6, 0x521d, 0x6240, 0x6691, 0x66d9, 0x6e1a, 0x5eb6, 0x7dd2,
- 0x7f72, 0x66f8, 0x85af, 0x85f7, 0x8af8, 0x52a9, 0x53d9, 0x5973,
- 0x5e8f, 0x5f90, 0x6055, 0x92e4, 0x9664, 0x50b7, 0x511f,
- /* 0x3e21 - 0x3e7e */
- 0x52dd, 0x5320, 0x5347, 0x53ec, 0x54e8, 0x5546, 0x5531,
- 0x5617, 0x5968, 0x59be, 0x5a3c, 0x5bb5, 0x5c06, 0x5c0f, 0x5c11,
- 0x5c1a, 0x5e84, 0x5e8a, 0x5ee0, 0x5f70, 0x627f, 0x6284, 0x62db,
- 0x638c, 0x6377, 0x6607, 0x660c, 0x662d, 0x6676, 0x677e, 0x68a2,
- 0x6a1f, 0x6a35, 0x6cbc, 0x6d88, 0x6e09, 0x6e58, 0x713c, 0x7126,
- 0x7167, 0x75c7, 0x7701, 0x785d, 0x7901, 0x7965, 0x79f0, 0x7ae0,
- 0x7b11, 0x7ca7, 0x7d39, 0x8096, 0x83d6, 0x848b, 0x8549, 0x885d,
- 0x88f3, 0x8a1f, 0x8a3c, 0x8a54, 0x8a73, 0x8c61, 0x8cde, 0x91a4,
- 0x9266, 0x937e, 0x9418, 0x969c, 0x9798, 0x4e0a, 0x4e08, 0x4e1e,
- 0x4e57, 0x5197, 0x5270, 0x57ce, 0x5834, 0x58cc, 0x5b22, 0x5e38,
- 0x60c5, 0x64fe, 0x6761, 0x6756, 0x6d44, 0x72b6, 0x7573, 0x7a63,
- 0x84b8, 0x8b72, 0x91b8, 0x9320, 0x5631, 0x57f4, 0x98fe,
- /* 0x3f21 - 0x3f7e */
- 0x62ed, 0x690d, 0x6b96, 0x71ed, 0x7e54, 0x8077, 0x8272,
- 0x89e6, 0x98df, 0x8755, 0x8fb1, 0x5c3b, 0x4f38, 0x4fe1, 0x4fb5,
- 0x5507, 0x5a20, 0x5bdd, 0x5be9, 0x5fc3, 0x614e, 0x632f, 0x65b0,
- 0x664b, 0x68ee, 0x699b, 0x6d78, 0x6df1, 0x7533, 0x75b9, 0x771f,
- 0x795e, 0x79e6, 0x7d33, 0x81e3, 0x82af, 0x85aa, 0x89aa, 0x8a3a,
- 0x8eab, 0x8f9b, 0x9032, 0x91dd, 0x9707, 0x4eba, 0x4ec1, 0x5203,
- 0x5875, 0x58ec, 0x5c0b, 0x751a, 0x5c3d, 0x814e, 0x8a0a, 0x8fc5,
- 0x9663, 0x976d, 0x7b25, 0x8acf, 0x9808, 0x9162, 0x56f3, 0x53a8,
- 0x9017, 0x5439, 0x5782, 0x5e25, 0x63a8, 0x6c34, 0x708a, 0x7761,
- 0x7c8b, 0x7fe0, 0x8870, 0x9042, 0x9154, 0x9310, 0x9318, 0x968f,
- 0x745e, 0x9ac4, 0x5d07, 0x5d69, 0x6570, 0x67a2, 0x8da8, 0x96db,
- 0x636e, 0x6749, 0x6919, 0x83c5, 0x9817, 0x96c0, 0x88fe,
- /* 0x4021 - 0x407e */
- 0x6f84, 0x647a, 0x5bf8, 0x4e16, 0x702c, 0x755d, 0x662f,
- 0x51c4, 0x5236, 0x52e2, 0x59d3, 0x5f81, 0x6027, 0x6210, 0x653f,
- 0x6574, 0x661f, 0x6674, 0x68f2, 0x6816, 0x6b63, 0x6e05, 0x7272,
- 0x751f, 0x76db, 0x7cbe, 0x8056, 0x58f0, 0x88fd, 0x897f, 0x8aa0,
- 0x8a93, 0x8acb, 0x901d, 0x9192, 0x9752, 0x9759, 0x6589, 0x7a0e,
- 0x8106, 0x96bb, 0x5e2d, 0x60dc, 0x621a, 0x65a5, 0x6614, 0x6790,
- 0x77f3, 0x7a4d, 0x7c4d, 0x7e3e, 0x810a, 0x8cac, 0x8d64, 0x8de1,
- 0x8e5f, 0x78a9, 0x5207, 0x62d9, 0x63a5, 0x6442, 0x6298, 0x8a2d,
- 0x7a83, 0x7bc0, 0x8aac, 0x96ea, 0x7d76, 0x820c, 0x8749, 0x4ed9,
- 0x5148, 0x5343, 0x5360, 0x5ba3, 0x5c02, 0x5c16, 0x5ddd, 0x6226,
- 0x6247, 0x64b0, 0x6813, 0x6834, 0x6cc9, 0x6d45, 0x6d17, 0x67d3,
- 0x6f5c, 0x714e, 0x717d, 0x65cb, 0x7a7f, 0x7bad, 0x7dda,
- /* 0x4121 - 0x417e */
- 0x7e4a, 0x7fa8, 0x817a, 0x821b, 0x8239, 0x85a6, 0x8a6e,
- 0x8cce, 0x8df5, 0x9078, 0x9077, 0x92ad, 0x9291, 0x9583, 0x9bae,
- 0x524d, 0x5584, 0x6f38, 0x7136, 0x5168, 0x7985, 0x7e55, 0x81b3,
- 0x7cce, 0x564c, 0x5851, 0x5ca8, 0x63aa, 0x66fe, 0x66fd, 0x695a,
- 0x72d9, 0x758f, 0x758e, 0x790e, 0x7956, 0x79df, 0x7c97, 0x7d20,
- 0x7d44, 0x8607, 0x8a34, 0x963b, 0x9061, 0x9f20, 0x50e7, 0x5275,
- 0x53cc, 0x53e2, 0x5009, 0x55aa, 0x58ee, 0x594f, 0x723d, 0x5b8b,
- 0x5c64, 0x531d, 0x60e3, 0x60f3, 0x635c, 0x6383, 0x633f, 0x63bb,
- 0x64cd, 0x65e9, 0x66f9, 0x5de3, 0x69cd, 0x69fd, 0x6f15, 0x71e5,
- 0x4e89, 0x75e9, 0x76f8, 0x7a93, 0x7cdf, 0x7dcf, 0x7d9c, 0x8061,
- 0x8349, 0x8358, 0x846c, 0x84bc, 0x85fb, 0x88c5, 0x8d70, 0x9001,
- 0x906d, 0x9397, 0x971c, 0x9a12, 0x50cf, 0x5897, 0x618e,
- /* 0x4221 - 0x427e */
- 0x81d3, 0x8535, 0x8d08, 0x9020, 0x4fc3, 0x5074, 0x5247,
- 0x5373, 0x606f, 0x6349, 0x675f, 0x6e2c, 0x8db3, 0x901f, 0x4fd7,
- 0x5c5e, 0x8cca, 0x65cf, 0x7d9a, 0x5352, 0x8896, 0x5176, 0x63c3,
- 0x5b58, 0x5b6b, 0x5c0a, 0x640d, 0x6751, 0x905c, 0x4ed6, 0x591a,
- 0x592a, 0x6c70, 0x8a51, 0x553e, 0x5815, 0x59a5, 0x60f0, 0x6253,
- 0x67c1, 0x8235, 0x6955, 0x9640, 0x99c4, 0x9a28, 0x4f53, 0x5806,
- 0x5bfe, 0x8010, 0x5cb1, 0x5e2f, 0x5f85, 0x6020, 0x614b, 0x6234,
- 0x66ff, 0x6cf0, 0x6ede, 0x80ce, 0x817f, 0x82d4, 0x888b, 0x8cb8,
- 0x9000, 0x902e, 0x968a, 0x9edb, 0x9bdb, 0x4ee3, 0x53f0, 0x5927,
- 0x7b2c, 0x918d, 0x984c, 0x9df9, 0x6edd, 0x7027, 0x5353, 0x5544,
- 0x5b85, 0x6258, 0x629e, 0x62d3, 0x6ca2, 0x6fef, 0x7422, 0x8a17,
- 0x9438, 0x6fc1, 0x8afe, 0x8338, 0x51e7, 0x86f8, 0x53ea,
- /* 0x4321 - 0x437e */
- 0x53e9, 0x4f46, 0x9054, 0x8fb0, 0x596a, 0x8131, 0x5dfd,
- 0x7aea, 0x8fbf, 0x68da, 0x8c37, 0x72f8, 0x9c48, 0x6a3d, 0x8ab0,
- 0x4e39, 0x5358, 0x5606, 0x5766, 0x62c5, 0x63a2, 0x65e6, 0x6b4e,
- 0x6de1, 0x6e5b, 0x70ad, 0x77ed, 0x7aef, 0x7baa, 0x7dbb, 0x803d,
- 0x80c6, 0x86cb, 0x8a95, 0x935b, 0x56e3, 0x58c7, 0x5f3e, 0x65ad,
- 0x6696, 0x6a80, 0x6bb5, 0x7537, 0x8ac7, 0x5024, 0x77e5, 0x5730,
- 0x5f1b, 0x6065, 0x667a, 0x6c60, 0x75f4, 0x7a1a, 0x7f6e, 0x81f4,
- 0x8718, 0x9045, 0x99b3, 0x7bc9, 0x755c, 0x7af9, 0x7b51, 0x84c4,
- 0x9010, 0x79e9, 0x7a92, 0x8336, 0x5ae1, 0x7740, 0x4e2d, 0x4ef2,
- 0x5b99, 0x5fe0, 0x62bd, 0x663c, 0x67f1, 0x6ce8, 0x866b, 0x8877,
- 0x8a3b, 0x914e, 0x92f3, 0x99d0, 0x6a17, 0x7026, 0x732a, 0x82e7,
- 0x8457, 0x8caf, 0x4e01, 0x5146, 0x51cb, 0x558b, 0x5bf5,
- /* 0x4421 - 0x447e */
- 0x5e16, 0x5e33, 0x5e81, 0x5f14, 0x5f35, 0x5f6b, 0x5fb4,
- 0x61f2, 0x6311, 0x66a2, 0x671d, 0x6f6e, 0x7252, 0x753a, 0x773a,
- 0x8074, 0x8139, 0x8178, 0x8776, 0x8abf, 0x8adc, 0x8d85, 0x8df3,
- 0x929a, 0x9577, 0x9802, 0x9ce5, 0x52c5, 0x6357, 0x76f4, 0x6715,
- 0x6c88, 0x73cd, 0x8cc3, 0x93ae, 0x9673, 0x6d25, 0x589c, 0x690e,
- 0x69cc, 0x8ffd, 0x939a, 0x75db, 0x901a, 0x585a, 0x6802, 0x63b4,
- 0x69fb, 0x4f43, 0x6f2c, 0x67d8, 0x8fbb, 0x8526, 0x7db4, 0x9354,
- 0x693f, 0x6f70, 0x576a, 0x58f7, 0x5b2c, 0x7d2c, 0x722a, 0x540a,
- 0x91e3, 0x9db4, 0x4ead, 0x4f4e, 0x505c, 0x5075, 0x5243, 0x8c9e,
- 0x5448, 0x5824, 0x5b9a, 0x5e1d, 0x5e95, 0x5ead, 0x5ef7, 0x5f1f,
- 0x608c, 0x62b5, 0x633a, 0x63d0, 0x68af, 0x6c40, 0x7887, 0x798e,
- 0x7a0b, 0x7de0, 0x8247, 0x8a02, 0x8ae6, 0x8e44, 0x9013,
- /* 0x4521 - 0x457e */
- 0x90b8, 0x912d, 0x91d8, 0x9f0e, 0x6ce5, 0x6458, 0x64e2,
- 0x6575, 0x6ef4, 0x7684, 0x7b1b, 0x9069, 0x93d1, 0x6eba, 0x54f2,
- 0x5fb9, 0x64a4, 0x8f4d, 0x8fed, 0x9244, 0x5178, 0x586b, 0x5929,
- 0x5c55, 0x5e97, 0x6dfb, 0x7e8f, 0x751c, 0x8cbc, 0x8ee2, 0x985b,
- 0x70b9, 0x4f1d, 0x6bbf, 0x6fb1, 0x7530, 0x96fb, 0x514e, 0x5410,
- 0x5835, 0x5857, 0x59ac, 0x5c60, 0x5f92, 0x6597, 0x675c, 0x6e21,
- 0x767b, 0x83df, 0x8ced, 0x9014, 0x90fd, 0x934d, 0x7825, 0x783a,
- 0x52aa, 0x5ea6, 0x571f, 0x5974, 0x6012, 0x5012, 0x515a, 0x51ac,
- 0x51cd, 0x5200, 0x5510, 0x5854, 0x5858, 0x5957, 0x5b95, 0x5cf6,
- 0x5d8b, 0x60bc, 0x6295, 0x642d, 0x6771, 0x6843, 0x68bc, 0x68df,
- 0x76d7, 0x6dd8, 0x6e6f, 0x6d9b, 0x706f, 0x71c8, 0x5f53, 0x75d8,
- 0x7977, 0x7b49, 0x7b54, 0x7b52, 0x7cd6, 0x7d71, 0x5230,
- /* 0x4621 - 0x467e */
- 0x8463, 0x8569, 0x85e4, 0x8a0e, 0x8b04, 0x8c46, 0x8e0f,
- 0x9003, 0x900f, 0x9419, 0x9676, 0x982d, 0x9a30, 0x95d8, 0x50cd,
- 0x52d5, 0x540c, 0x5802, 0x5c0e, 0x61a7, 0x649e, 0x6d1e, 0x77b3,
- 0x7ae5, 0x80f4, 0x8404, 0x9053, 0x9285, 0x5ce0, 0x9d07, 0x533f,
- 0x5f97, 0x5fb3, 0x6d9c, 0x7279, 0x7763, 0x79bf, 0x7be4, 0x6bd2,
- 0x72ec, 0x8aad, 0x6803, 0x6a61, 0x51f8, 0x7a81, 0x6934, 0x5c4a,
- 0x9cf6, 0x82eb, 0x5bc5, 0x9149, 0x701e, 0x5678, 0x5c6f, 0x60c7,
- 0x6566, 0x6c8c, 0x8c5a, 0x9041, 0x9813, 0x5451, 0x66c7, 0x920d,
- 0x5948, 0x90a3, 0x5185, 0x4e4d, 0x51ea, 0x8599, 0x8b0e, 0x7058,
- 0x637a, 0x934b, 0x6962, 0x99b4, 0x7e04, 0x7577, 0x5357, 0x6960,
- 0x8edf, 0x96e3, 0x6c5d, 0x4e8c, 0x5c3c, 0x5f10, 0x8fe9, 0x5302,
- 0x8cd1, 0x8089, 0x8679, 0x5eff, 0x65e5, 0x4e73, 0x5165,
- /* 0x4721 - 0x477e */
- 0x5982, 0x5c3f, 0x97ee, 0x4efb, 0x598a, 0x5fcd, 0x8a8d,
- 0x6fe1, 0x79b0, 0x7962, 0x5be7, 0x8471, 0x732b, 0x71b1, 0x5e74,
- 0x5ff5, 0x637b, 0x649a, 0x71c3, 0x7c98, 0x4e43, 0x5efc, 0x4e4b,
- 0x57dc, 0x56a2, 0x60a9, 0x6fc3, 0x7d0d, 0x80fd, 0x8133, 0x81bf,
- 0x8fb2, 0x8997, 0x86a4, 0x5df4, 0x628a, 0x64ad, 0x8987, 0x6777,
- 0x6ce2, 0x6d3e, 0x7436, 0x7834, 0x5a46, 0x7f75, 0x82ad, 0x99ac,
- 0x4ff3, 0x5ec3, 0x62dd, 0x6392, 0x6557, 0x676f, 0x76c3, 0x724c,
- 0x80cc, 0x80ba, 0x8f29, 0x914d, 0x500d, 0x57f9, 0x5a92, 0x6885,
- 0x6973, 0x7164, 0x72fd, 0x8cb7, 0x58f2, 0x8ce0, 0x966a, 0x9019,
- 0x877f, 0x79e4, 0x77e7, 0x8429, 0x4f2f, 0x5265, 0x535a, 0x62cd,
- 0x67cf, 0x6cca, 0x767d, 0x7b94, 0x7c95, 0x8236, 0x8584, 0x8feb,
- 0x66dd, 0x6f20, 0x7206, 0x7e1b, 0x83ab, 0x99c1, 0x9ea6,
- /* 0x4821 - 0x487e */
- 0x51fd, 0x7bb1, 0x7872, 0x7bb8, 0x8087, 0x7b48, 0x6ae8,
- 0x5e61, 0x808c, 0x7551, 0x7560, 0x516b, 0x9262, 0x6e8c, 0x767a,
- 0x9197, 0x9aea, 0x4f10, 0x7f70, 0x629c, 0x7b4f, 0x95a5, 0x9ce9,
- 0x567a, 0x5859, 0x86e4, 0x96bc, 0x4f34, 0x5224, 0x534a, 0x53cd,
- 0x53db, 0x5e06, 0x642c, 0x6591, 0x677f, 0x6c3e, 0x6c4e, 0x7248,
- 0x72af, 0x73ed, 0x7554, 0x7e41, 0x822c, 0x85e9, 0x8ca9, 0x7bc4,
- 0x91c6, 0x7169, 0x9812, 0x98ef, 0x633d, 0x6669, 0x756a, 0x76e4,
- 0x78d0, 0x8543, 0x86ee, 0x532a, 0x5351, 0x5426, 0x5983, 0x5e87,
- 0x5f7c, 0x60b2, 0x6249, 0x6279, 0x62ab, 0x6590, 0x6bd4, 0x6ccc,
- 0x75b2, 0x76ae, 0x7891, 0x79d8, 0x7dcb, 0x7f77, 0x80a5, 0x88ab,
- 0x8ab9, 0x8cbb, 0x907f, 0x975e, 0x98db, 0x6a0b, 0x7c38, 0x5099,
- 0x5c3e, 0x5fae, 0x6787, 0x6bd8, 0x7435, 0x7709, 0x7f8e,
- /* 0x4921 - 0x497e */
- 0x9f3b, 0x67ca, 0x7a17, 0x5339, 0x758b, 0x9aed, 0x5f66,
- 0x819d, 0x83f1, 0x8098, 0x5f3c, 0x5fc5, 0x7562, 0x7b46, 0x903c,
- 0x6867, 0x59eb, 0x5a9b, 0x7d10, 0x767e, 0x8b2c, 0x4ff5, 0x5f6a,
- 0x6a19, 0x6c37, 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8a55, 0x8c79,
- 0x5edf, 0x63cf, 0x75c5, 0x79d2, 0x82d7, 0x9328, 0x92f2, 0x849c,
- 0x86ed, 0x9c2d, 0x54c1, 0x5f6c, 0x658c, 0x6d5c, 0x7015, 0x8ca7,
- 0x8cd3, 0x983b, 0x654f, 0x74f6, 0x4e0d, 0x4ed8, 0x57e0, 0x592b,
- 0x5a66, 0x5bcc, 0x51a8, 0x5e03, 0x5e9c, 0x6016, 0x6276, 0x6577,
- 0x65a7, 0x666e, 0x6d6e, 0x7236, 0x7b26, 0x8150, 0x819a, 0x8299,
- 0x8b5c, 0x8ca0, 0x8ce6, 0x8d74, 0x961c, 0x9644, 0x4fae, 0x64ab,
- 0x6b66, 0x821e, 0x8461, 0x856a, 0x90e8, 0x5c01, 0x6953, 0x98a8,
- 0x847a, 0x8557, 0x4f0f, 0x526f, 0x5fa9, 0x5e45, 0x670d,
- /* 0x4a21 - 0x4a7e */
- 0x798f, 0x8179, 0x8907, 0x8986, 0x6df5, 0x5f17, 0x6255,
- 0x6cb8, 0x4ecf, 0x7269, 0x9b92, 0x5206, 0x543b, 0x5674, 0x58b3,
- 0x61a4, 0x626e, 0x711a, 0x596e, 0x7c89, 0x7cde, 0x7d1b, 0x96f0,
- 0x6587, 0x805e, 0x4e19, 0x4f75, 0x5175, 0x5840, 0x5e63, 0x5e73,
- 0x5f0a, 0x67c4, 0x4e26, 0x853d, 0x9589, 0x965b, 0x7c73, 0x9801,
- 0x50fb, 0x58c1, 0x7656, 0x78a7, 0x5225, 0x77a5, 0x8511, 0x7b86,
- 0x504f, 0x5909, 0x7247, 0x7bc7, 0x7de8, 0x8fba, 0x8fd4, 0x904d,
- 0x4fbf, 0x52c9, 0x5a29, 0x5f01, 0x97ad, 0x4fdd, 0x8217, 0x92ea,
- 0x5703, 0x6355, 0x6b69, 0x752b, 0x88dc, 0x8f14, 0x7a42, 0x52df,
- 0x5893, 0x6155, 0x620a, 0x66ae, 0x6bcd, 0x7c3f, 0x83e9, 0x5023,
- 0x4ff8, 0x5305, 0x5446, 0x5831, 0x5949, 0x5b9d, 0x5cf0, 0x5cef,
- 0x5d29, 0x5e96, 0x62b1, 0x6367, 0x653e, 0x65b9, 0x670b,
- /* 0x4b21 - 0x4b7e */
- 0x6cd5, 0x6ce1, 0x70f9, 0x7832, 0x7e2b, 0x80de, 0x82b3,
- 0x840c, 0x84ec, 0x8702, 0x8912, 0x8a2a, 0x8c4a, 0x90a6, 0x92d2,
- 0x98fd, 0x9cf3, 0x9d6c, 0x4e4f, 0x4ea1, 0x508d, 0x5256, 0x574a,
- 0x59a8, 0x5e3d, 0x5fd8, 0x5fd9, 0x623f, 0x66b4, 0x671b, 0x67d0,
- 0x68d2, 0x5192, 0x7d21, 0x80aa, 0x81a8, 0x8b00, 0x8c8c, 0x8cbf,
- 0x927e, 0x9632, 0x5420, 0x982c, 0x5317, 0x50d5, 0x535c, 0x58a8,
- 0x64b2, 0x6734, 0x7267, 0x7766, 0x7a46, 0x91e6, 0x52c3, 0x6ca1,
- 0x6b86, 0x5800, 0x5e4c, 0x5954, 0x672c, 0x7ffb, 0x51e1, 0x76c6,
- 0x6469, 0x78e8, 0x9b54, 0x9ebb, 0x57cb, 0x59b9, 0x6627, 0x679a,
- 0x6bce, 0x54e9, 0x69d9, 0x5e55, 0x819c, 0x6795, 0x9baa, 0x67fe,
- 0x9c52, 0x685d, 0x4ea6, 0x4fe3, 0x53c8, 0x62b9, 0x672b, 0x6cab,
- 0x8fc4, 0x4fad, 0x7e6d, 0x9ebf, 0x4e07, 0x6162, 0x6e80,
- /* 0x4c21 - 0x4c7e */
- 0x6f2b, 0x8513, 0x5473, 0x672a, 0x9b45, 0x5df3, 0x7b95,
- 0x5cac, 0x5bc6, 0x871c, 0x6e4a, 0x84d1, 0x7a14, 0x8108, 0x5999,
- 0x7c8d, 0x6c11, 0x7720, 0x52d9, 0x5922, 0x7121, 0x725f, 0x77db,
- 0x9727, 0x9d61, 0x690b, 0x5a7f, 0x5a18, 0x51a5, 0x540d, 0x547d,
- 0x660e, 0x76df, 0x8ff7, 0x9298, 0x9cf4, 0x59ea, 0x725d, 0x6ec5,
- 0x514d, 0x68c9, 0x7dbf, 0x7dec, 0x9762, 0x9eba, 0x6478, 0x6a21,
- 0x8302, 0x5984, 0x5b5f, 0x6bdb, 0x731b, 0x76f2, 0x7db2, 0x8017,
- 0x8499, 0x5132, 0x6728, 0x9ed9, 0x76ee, 0x6762, 0x52ff, 0x9905,
- 0x5c24, 0x623b, 0x7c7e, 0x8cb0, 0x554f, 0x60b6, 0x7d0b, 0x9580,
- 0x5301, 0x4e5f, 0x51b6, 0x591c, 0x723a, 0x8036, 0x91ce, 0x5f25,
- 0x77e2, 0x5384, 0x5f79, 0x7d04, 0x85ac, 0x8a33, 0x8e8d, 0x9756,
- 0x67f3, 0x85ae, 0x9453, 0x6109, 0x6108, 0x6cb9, 0x7652,
- /* 0x4d21 - 0x4d7e */
- 0x8aed, 0x8f38, 0x552f, 0x4f51, 0x512a, 0x52c7, 0x53cb,
- 0x5ba5, 0x5e7d, 0x60a0, 0x6182, 0x63d6, 0x6709, 0x67da, 0x6e67,
- 0x6d8c, 0x7336, 0x7337, 0x7531, 0x7950, 0x88d5, 0x8a98, 0x904a,
- 0x9091, 0x90f5, 0x96c4, 0x878d, 0x5915, 0x4e88, 0x4f59, 0x4e0e,
- 0x8a89, 0x8f3f, 0x9810, 0x50ad, 0x5e7c, 0x5996, 0x5bb9, 0x5eb8,
- 0x63da, 0x63fa, 0x64c1, 0x66dc, 0x694a, 0x69d8, 0x6d0b, 0x6eb6,
- 0x7194, 0x7528, 0x7aaf, 0x7f8a, 0x8000, 0x8449, 0x84c9, 0x8981,
- 0x8b21, 0x8e0a, 0x9065, 0x967d, 0x990a, 0x617e, 0x6291, 0x6b32,
- 0x6c83, 0x6d74, 0x7fcc, 0x7ffc, 0x6dc0, 0x7f85, 0x87ba, 0x88f8,
- 0x6765, 0x83b1, 0x983c, 0x96f7, 0x6d1b, 0x7d61, 0x843d, 0x916a,
- 0x4e71, 0x5375, 0x5d50, 0x6b04, 0x6feb, 0x85cd, 0x862d, 0x89a7,
- 0x5229, 0x540f, 0x5c65, 0x674e, 0x68a8, 0x7406, 0x7483,
- /* 0x4e21 - 0x4e7e */
- 0x75e2, 0x88cf, 0x88e1, 0x91cc, 0x96e2, 0x9678, 0x5f8b,
- 0x7387, 0x7acb, 0x844e, 0x63a0, 0x7565, 0x5289, 0x6d41, 0x6e9c,
- 0x7409, 0x7559, 0x786b, 0x7c92, 0x9686, 0x7adc, 0x9f8d, 0x4fb6,
- 0x616e, 0x65c5, 0x865c, 0x4e86, 0x4eae, 0x50da, 0x4e21, 0x51cc,
- 0x5bee, 0x6599, 0x6881, 0x6dbc, 0x731f, 0x7642, 0x77ad, 0x7a1c,
- 0x7ce7, 0x826f, 0x8ad2, 0x907c, 0x91cf, 0x9675, 0x9818, 0x529b,
- 0x7dd1, 0x502b, 0x5398, 0x6797, 0x6dcb, 0x71d0, 0x7433, 0x81e8,
- 0x8f2a, 0x96a3, 0x9c57, 0x9e9f, 0x7460, 0x5841, 0x6d99, 0x7d2f,
- 0x985e, 0x4ee4, 0x4f36, 0x4f8b, 0x51b7, 0x52b1, 0x5dba, 0x601c,
- 0x73b2, 0x793c, 0x82d3, 0x9234, 0x96b7, 0x96f6, 0x970a, 0x9e97,
- 0x9f62, 0x66a6, 0x6b74, 0x5217, 0x52a3, 0x70c8, 0x88c2, 0x5ec9,
- 0x604b, 0x6190, 0x6f23, 0x7149, 0x7c3e, 0x7df4, 0x806f,
- /* 0x4f21 - 0x4f7e */
- 0x84ee, 0x9023, 0x932c, 0x5442, 0x9b6f, 0x6ad3, 0x7089,
- 0x8cc2, 0x8def, 0x9732, 0x52b4, 0x5a41, 0x5eca, 0x5f04, 0x6717,
- 0x697c, 0x6994, 0x6d6a, 0x6f0f, 0x7262, 0x72fc, 0x7bed, 0x8001,
- 0x807e, 0x874b, 0x90ce, 0x516d, 0x9e93, 0x7984, 0x808b, 0x9332,
- 0x8ad6, 0x502d, 0x548c, 0x8a71, 0x6b6a, 0x8cc4, 0x8107, 0x60d1,
- 0x67a0, 0x9df2, 0x4e99, 0x4e98, 0x9c10, 0x8a6b, 0x85c1, 0x8568,
- 0x6900, 0x6e7e, 0x7897, 0x8155, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x5021 - 0x507e */
- 0x5f0c, 0x4e10, 0x4e15, 0x4e2a, 0x4e31, 0x4e36, 0x4e3c,
- 0x4e3f, 0x4e42, 0x4e56, 0x4e58, 0x4e82, 0x4e85, 0x8c6b, 0x4e8a,
- 0x8212, 0x5f0d, 0x4e8e, 0x4e9e, 0x4e9f, 0x4ea0, 0x4ea2, 0x4eb0,
- 0x4eb3, 0x4eb6, 0x4ece, 0x4ecd, 0x4ec4, 0x4ec6, 0x4ec2, 0x4ed7,
- 0x4ede, 0x4eed, 0x4edf, 0x4ef7, 0x4f09, 0x4f5a, 0x4f30, 0x4f5b,
- 0x4f5d, 0x4f57, 0x4f47, 0x4f76, 0x4f88, 0x4f8f, 0x4f98, 0x4f7b,
- 0x4f69, 0x4f70, 0x4f91, 0x4f6f, 0x4f86, 0x4f96, 0x5118, 0x4fd4,
- 0x4fdf, 0x4fce, 0x4fd8, 0x4fdb, 0x4fd1, 0x4fda, 0x4fd0, 0x4fe4,
- 0x4fe5, 0x501a, 0x5028, 0x5014, 0x502a, 0x5025, 0x5005, 0x4f1c,
- 0x4ff6, 0x5021, 0x5029, 0x502c, 0x4ffe, 0x4fef, 0x5011, 0x5006,
- 0x5043, 0x5047, 0x6703, 0x5055, 0x5050, 0x5048, 0x505a, 0x5056,
- 0x506c, 0x5078, 0x5080, 0x509a, 0x5085, 0x50b4, 0x50b2,
- /* 0x5121 - 0x517e */
- 0x50c9, 0x50ca, 0x50b3, 0x50c2, 0x50d6, 0x50de, 0x50e5,
- 0x50ed, 0x50e3, 0x50ee, 0x50f9, 0x50f5, 0x5109, 0x5101, 0x5102,
- 0x5116, 0x5115, 0x5114, 0x511a, 0x5121, 0x513a, 0x5137, 0x513c,
- 0x513b, 0x513f, 0x5140, 0x5152, 0x514c, 0x5154, 0x5162, 0x7af8,
- 0x5169, 0x516a, 0x516e, 0x5180, 0x5182, 0x56d8, 0x518c, 0x5189,
- 0x518f, 0x5191, 0x5193, 0x5195, 0x5196, 0x51a4, 0x51a6, 0x51a2,
- 0x51a9, 0x51aa, 0x51ab, 0x51b3, 0x51b1, 0x51b2, 0x51b0, 0x51b5,
- 0x51bd, 0x51c5, 0x51c9, 0x51db, 0x51e0, 0x8655, 0x51e9, 0x51ed,
- 0x51f0, 0x51f5, 0x51fe, 0x5204, 0x520b, 0x5214, 0x520e, 0x5227,
- 0x522a, 0x522e, 0x5233, 0x5239, 0x524f, 0x5244, 0x524b, 0x524c,
- 0x525e, 0x5254, 0x526a, 0x5274, 0x5269, 0x5273, 0x527f, 0x527d,
- 0x528d, 0x5294, 0x5292, 0x5271, 0x5288, 0x5291, 0x8fa8,
- /* 0x5221 - 0x527e */
- 0x8fa7, 0x52ac, 0x52ad, 0x52bc, 0x52b5, 0x52c1, 0x52cd,
- 0x52d7, 0x52de, 0x52e3, 0x52e6, 0x98ed, 0x52e0, 0x52f3, 0x52f5,
- 0x52f8, 0x52f9, 0x5306, 0x5308, 0x7538, 0x530d, 0x5310, 0x530f,
- 0x5315, 0x531a, 0x5323, 0x532f, 0x5331, 0x5333, 0x5338, 0x5340,
- 0x5346, 0x5345, 0x4e17, 0x5349, 0x534d, 0x51d6, 0x535e, 0x5369,
- 0x536e, 0x5918, 0x537b, 0x5377, 0x5382, 0x5396, 0x53a0, 0x53a6,
- 0x53a5, 0x53ae, 0x53b0, 0x53b6, 0x53c3, 0x7c12, 0x96d9, 0x53df,
- 0x66fc, 0x71ee, 0x53ee, 0x53e8, 0x53ed, 0x53fa, 0x5401, 0x543d,
- 0x5440, 0x542c, 0x542d, 0x543c, 0x542e, 0x5436, 0x5429, 0x541d,
- 0x544e, 0x548f, 0x5475, 0x548e, 0x545f, 0x5471, 0x5477, 0x5470,
- 0x5492, 0x547b, 0x5480, 0x5476, 0x5484, 0x5490, 0x5486, 0x54c7,
- 0x54a2, 0x54b8, 0x54a5, 0x54ac, 0x54c4, 0x54c8, 0x54a8,
- /* 0x5321 - 0x537e */
- 0x54ab, 0x54c2, 0x54a4, 0x54be, 0x54bc, 0x54d8, 0x54e5,
- 0x54e6, 0x550f, 0x5514, 0x54fd, 0x54ee, 0x54ed, 0x54fa, 0x54e2,
- 0x5539, 0x5540, 0x5563, 0x554c, 0x552e, 0x555c, 0x5545, 0x5556,
- 0x5557, 0x5538, 0x5533, 0x555d, 0x5599, 0x5580, 0x54af, 0x558a,
- 0x559f, 0x557b, 0x557e, 0x5598, 0x559e, 0x55ae, 0x557c, 0x5583,
- 0x55a9, 0x5587, 0x55a8, 0x55da, 0x55c5, 0x55df, 0x55c4, 0x55dc,
- 0x55e4, 0x55d4, 0x5614, 0x55f7, 0x5616, 0x55fe, 0x55fd, 0x561b,
- 0x55f9, 0x564e, 0x5650, 0x71df, 0x5634, 0x5636, 0x5632, 0x5638,
- 0x566b, 0x5664, 0x562f, 0x566c, 0x566a, 0x5686, 0x5680, 0x568a,
- 0x56a0, 0x5694, 0x568f, 0x56a5, 0x56ae, 0x56b6, 0x56b4, 0x56c2,
- 0x56bc, 0x56c1, 0x56c3, 0x56c0, 0x56c8, 0x56ce, 0x56d1, 0x56d3,
- 0x56d7, 0x56ee, 0x56f9, 0x5700, 0x56ff, 0x5704, 0x5709,
- /* 0x5421 - 0x547e */
- 0x5708, 0x570b, 0x570d, 0x5713, 0x5718, 0x5716, 0x55c7,
- 0x571c, 0x5726, 0x5737, 0x5738, 0x574e, 0x573b, 0x5740, 0x574f,
- 0x5769, 0x57c0, 0x5788, 0x5761, 0x577f, 0x5789, 0x5793, 0x57a0,
- 0x57b3, 0x57a4, 0x57aa, 0x57b0, 0x57c3, 0x57c6, 0x57d4, 0x57d2,
- 0x57d3, 0x580a, 0x57d6, 0x57e3, 0x580b, 0x5819, 0x581d, 0x5872,
- 0x5821, 0x5862, 0x584b, 0x5870, 0x6bc0, 0x5852, 0x583d, 0x5879,
- 0x5885, 0x58b9, 0x589f, 0x58ab, 0x58ba, 0x58de, 0x58bb, 0x58b8,
- 0x58ae, 0x58c5, 0x58d3, 0x58d1, 0x58d7, 0x58d9, 0x58d8, 0x58e5,
- 0x58dc, 0x58e4, 0x58df, 0x58ef, 0x58fa, 0x58f9, 0x58fb, 0x58fc,
- 0x58fd, 0x5902, 0x590a, 0x5910, 0x591b, 0x68a6, 0x5925, 0x592c,
- 0x592d, 0x5932, 0x5938, 0x593e, 0x7ad2, 0x5955, 0x5950, 0x594e,
- 0x595a, 0x5958, 0x5962, 0x5960, 0x5967, 0x596c, 0x5969,
- /* 0x5521 - 0x557e */
- 0x5978, 0x5981, 0x599d, 0x4f5e, 0x4fab, 0x59a3, 0x59b2,
- 0x59c6, 0x59e8, 0x59dc, 0x598d, 0x59d9, 0x59da, 0x5a25, 0x5a1f,
- 0x5a11, 0x5a1c, 0x5a09, 0x5a1a, 0x5a40, 0x5a6c, 0x5a49, 0x5a35,
- 0x5a36, 0x5a62, 0x5a6a, 0x5a9a, 0x5abc, 0x5abe, 0x5acb, 0x5ac2,
- 0x5abd, 0x5ae3, 0x5ad7, 0x5ae6, 0x5ae9, 0x5ad6, 0x5afa, 0x5afb,
- 0x5b0c, 0x5b0b, 0x5b16, 0x5b32, 0x5ad0, 0x5b2a, 0x5b36, 0x5b3e,
- 0x5b43, 0x5b45, 0x5b40, 0x5b51, 0x5b55, 0x5b5a, 0x5b5b, 0x5b65,
- 0x5b69, 0x5b70, 0x5b73, 0x5b75, 0x5b78, 0x6588, 0x5b7a, 0x5b80,
- 0x5b83, 0x5ba6, 0x5bb8, 0x5bc3, 0x5bc7, 0x5bc9, 0x5bd4, 0x5bd0,
- 0x5be4, 0x5be6, 0x5be2, 0x5bde, 0x5be5, 0x5beb, 0x5bf0, 0x5bf6,
- 0x5bf3, 0x5c05, 0x5c07, 0x5c08, 0x5c0d, 0x5c13, 0x5c20, 0x5c22,
- 0x5c28, 0x5c38, 0x5c39, 0x5c41, 0x5c46, 0x5c4e, 0x5c53,
- /* 0x5621 - 0x567e */
- 0x5c50, 0x5c4f, 0x5b71, 0x5c6c, 0x5c6e, 0x4e62, 0x5c76,
- 0x5c79, 0x5c8c, 0x5c91, 0x5c94, 0x599b, 0x5cab, 0x5cbb, 0x5cb6,
- 0x5cbc, 0x5cb7, 0x5cc5, 0x5cbe, 0x5cc7, 0x5cd9, 0x5ce9, 0x5cfd,
- 0x5cfa, 0x5ced, 0x5d8c, 0x5cea, 0x5d0b, 0x5d15, 0x5d17, 0x5d5c,
- 0x5d1f, 0x5d1b, 0x5d11, 0x5d14, 0x5d22, 0x5d1a, 0x5d19, 0x5d18,
- 0x5d4c, 0x5d52, 0x5d4e, 0x5d4b, 0x5d6c, 0x5d73, 0x5d76, 0x5d87,
- 0x5d84, 0x5d82, 0x5da2, 0x5d9d, 0x5dac, 0x5dae, 0x5dbd, 0x5d90,
- 0x5db7, 0x5dbc, 0x5dc9, 0x5dcd, 0x5dd3, 0x5dd2, 0x5dd6, 0x5ddb,
- 0x5deb, 0x5df2, 0x5df5, 0x5e0b, 0x5e1a, 0x5e19, 0x5e11, 0x5e1b,
- 0x5e36, 0x5e37, 0x5e44, 0x5e43, 0x5e40, 0x5e4e, 0x5e57, 0x5e54,
- 0x5e5f, 0x5e62, 0x5e64, 0x5e47, 0x5e75, 0x5e76, 0x5e7a, 0x9ebc,
- 0x5e7f, 0x5ea0, 0x5ec1, 0x5ec2, 0x5ec8, 0x5ed0, 0x5ecf,
- /* 0x5721 - 0x577e */
- 0x5ed6, 0x5ee3, 0x5edd, 0x5eda, 0x5edb, 0x5ee2, 0x5ee1,
- 0x5ee8, 0x5ee9, 0x5eec, 0x5ef1, 0x5ef3, 0x5ef0, 0x5ef4, 0x5ef8,
- 0x5efe, 0x5f03, 0x5f09, 0x5f5d, 0x5f5c, 0x5f0b, 0x5f11, 0x5f16,
- 0x5f29, 0x5f2d, 0x5f38, 0x5f41, 0x5f48, 0x5f4c, 0x5f4e, 0x5f2f,
- 0x5f51, 0x5f56, 0x5f57, 0x5f59, 0x5f61, 0x5f6d, 0x5f73, 0x5f77,
- 0x5f83, 0x5f82, 0x5f7f, 0x5f8a, 0x5f88, 0x5f91, 0x5f87, 0x5f9e,
- 0x5f99, 0x5f98, 0x5fa0, 0x5fa8, 0x5fad, 0x5fbc, 0x5fd6, 0x5ffb,
- 0x5fe4, 0x5ff8, 0x5ff1, 0x5fdd, 0x60b3, 0x5fff, 0x6021, 0x6060,
- 0x6019, 0x6010, 0x6029, 0x600e, 0x6031, 0x601b, 0x6015, 0x602b,
- 0x6026, 0x600f, 0x603a, 0x605a, 0x6041, 0x606a, 0x6077, 0x605f,
- 0x604a, 0x6046, 0x604d, 0x6063, 0x6043, 0x6064, 0x6042, 0x606c,
- 0x606b, 0x6059, 0x6081, 0x608d, 0x60e7, 0x6083, 0x609a,
- /* 0x5821 - 0x587e */
- 0x6084, 0x609b, 0x6096, 0x6097, 0x6092, 0x60a7, 0x608b,
- 0x60e1, 0x60b8, 0x60e0, 0x60d3, 0x60b4, 0x5ff0, 0x60bd, 0x60c6,
- 0x60b5, 0x60d8, 0x614d, 0x6115, 0x6106, 0x60f6, 0x60f7, 0x6100,
- 0x60f4, 0x60fa, 0x6103, 0x6121, 0x60fb, 0x60f1, 0x610d, 0x610e,
- 0x6147, 0x613e, 0x6128, 0x6127, 0x614a, 0x613f, 0x613c, 0x612c,
- 0x6134, 0x613d, 0x6142, 0x6144, 0x6173, 0x6177, 0x6158, 0x6159,
- 0x615a, 0x616b, 0x6174, 0x616f, 0x6165, 0x6171, 0x615f, 0x615d,
- 0x6153, 0x6175, 0x6199, 0x6196, 0x6187, 0x61ac, 0x6194, 0x619a,
- 0x618a, 0x6191, 0x61ab, 0x61ae, 0x61cc, 0x61ca, 0x61c9, 0x61f7,
- 0x61c8, 0x61c3, 0x61c6, 0x61ba, 0x61cb, 0x7f79, 0x61cd, 0x61e6,
- 0x61e3, 0x61f6, 0x61fa, 0x61f4, 0x61ff, 0x61fd, 0x61fc, 0x61fe,
- 0x6200, 0x6208, 0x6209, 0x620d, 0x620c, 0x6214, 0x621b,
- /* 0x5921 - 0x597e */
- 0x621e, 0x6221, 0x622a, 0x622e, 0x6230, 0x6232, 0x6233,
- 0x6241, 0x624e, 0x625e, 0x6263, 0x625b, 0x6260, 0x6268, 0x627c,
- 0x6282, 0x6289, 0x627e, 0x6292, 0x6293, 0x6296, 0x62d4, 0x6283,
- 0x6294, 0x62d7, 0x62d1, 0x62bb, 0x62cf, 0x62ff, 0x62c6, 0x64d4,
- 0x62c8, 0x62dc, 0x62cc, 0x62ca, 0x62c2, 0x62c7, 0x629b, 0x62c9,
- 0x630c, 0x62ee, 0x62f1, 0x6327, 0x6302, 0x6308, 0x62ef, 0x62f5,
- 0x6350, 0x633e, 0x634d, 0x641c, 0x634f, 0x6396, 0x638e, 0x6380,
- 0x63ab, 0x6376, 0x63a3, 0x638f, 0x6389, 0x639f, 0x63b5, 0x636b,
- 0x6369, 0x63be, 0x63e9, 0x63c0, 0x63c6, 0x63e3, 0x63c9, 0x63d2,
- 0x63f6, 0x63c4, 0x6416, 0x6434, 0x6406, 0x6413, 0x6426, 0x6436,
- 0x651d, 0x6417, 0x6428, 0x640f, 0x6467, 0x646f, 0x6476, 0x644e,
- 0x652a, 0x6495, 0x6493, 0x64a5, 0x64a9, 0x6488, 0x64bc,
- /* 0x5a21 - 0x5a7e */
- 0x64da, 0x64d2, 0x64c5, 0x64c7, 0x64bb, 0x64d8, 0x64c2,
- 0x64f1, 0x64e7, 0x8209, 0x64e0, 0x64e1, 0x62ac, 0x64e3, 0x64ef,
- 0x652c, 0x64f6, 0x64f4, 0x64f2, 0x64fa, 0x6500, 0x64fd, 0x6518,
- 0x651c, 0x6505, 0x6524, 0x6523, 0x652b, 0x6534, 0x6535, 0x6537,
- 0x6536, 0x6538, 0x754b, 0x6548, 0x6556, 0x6555, 0x654d, 0x6558,
- 0x655e, 0x655d, 0x6572, 0x6578, 0x6582, 0x6583, 0x8b8a, 0x659b,
- 0x659f, 0x65ab, 0x65b7, 0x65c3, 0x65c6, 0x65c1, 0x65c4, 0x65cc,
- 0x65d2, 0x65db, 0x65d9, 0x65e0, 0x65e1, 0x65f1, 0x6772, 0x660a,
- 0x6603, 0x65fb, 0x6773, 0x6635, 0x6636, 0x6634, 0x661c, 0x664f,
- 0x6644, 0x6649, 0x6641, 0x665e, 0x665d, 0x6664, 0x6667, 0x6668,
- 0x665f, 0x6662, 0x6670, 0x6683, 0x6688, 0x668e, 0x6689, 0x6684,
- 0x6698, 0x669d, 0x66c1, 0x66b9, 0x66c9, 0x66be, 0x66bc,
- /* 0x5b21 - 0x5b7e */
- 0x66c4, 0x66b8, 0x66d6, 0x66da, 0x66e0, 0x663f, 0x66e6,
- 0x66e9, 0x66f0, 0x66f5, 0x66f7, 0x670f, 0x6716, 0x671e, 0x6726,
- 0x6727, 0x9738, 0x672e, 0x673f, 0x6736, 0x6741, 0x6738, 0x6737,
- 0x6746, 0x675e, 0x6760, 0x6759, 0x6763, 0x6764, 0x6789, 0x6770,
- 0x67a9, 0x677c, 0x676a, 0x678c, 0x678b, 0x67a6, 0x67a1, 0x6785,
- 0x67b7, 0x67ef, 0x67b4, 0x67ec, 0x67b3, 0x67e9, 0x67b8, 0x67e4,
- 0x67de, 0x67dd, 0x67e2, 0x67ee, 0x67b9, 0x67ce, 0x67c6, 0x67e7,
- 0x6a9c, 0x681e, 0x6846, 0x6829, 0x6840, 0x684d, 0x6832, 0x684e,
- 0x68b3, 0x682b, 0x6859, 0x6863, 0x6877, 0x687f, 0x689f, 0x688f,
- 0x68ad, 0x6894, 0x689d, 0x689b, 0x6883, 0x6aae, 0x68b9, 0x6874,
- 0x68b5, 0x68a0, 0x68ba, 0x690f, 0x688d, 0x687e, 0x6901, 0x68ca,
- 0x6908, 0x68d8, 0x6922, 0x6926, 0x68e1, 0x690c, 0x68cd,
- /* 0x5c21 - 0x5c7e */
- 0x68d4, 0x68e7, 0x68d5, 0x6936, 0x6912, 0x6904, 0x68d7,
- 0x68e3, 0x6925, 0x68f9, 0x68e0, 0x68ef, 0x6928, 0x692a, 0x691a,
- 0x6923, 0x6921, 0x68c6, 0x6979, 0x6977, 0x695c, 0x6978, 0x696b,
- 0x6954, 0x697e, 0x696e, 0x6939, 0x6974, 0x693d, 0x6959, 0x6930,
- 0x6961, 0x695e, 0x695d, 0x6981, 0x696a, 0x69b2, 0x69ae, 0x69d0,
- 0x69bf, 0x69c1, 0x69d3, 0x69be, 0x69ce, 0x5be8, 0x69ca, 0x69dd,
- 0x69bb, 0x69c3, 0x69a7, 0x6a2e, 0x6991, 0x69a0, 0x699c, 0x6995,
- 0x69b4, 0x69de, 0x69e8, 0x6a02, 0x6a1b, 0x69ff, 0x6b0a, 0x69f9,
- 0x69f2, 0x69e7, 0x6a05, 0x69b1, 0x6a1e, 0x69ed, 0x6a14, 0x69eb,
- 0x6a0a, 0x6a12, 0x6ac1, 0x6a23, 0x6a13, 0x6a44, 0x6a0c, 0x6a72,
- 0x6a36, 0x6a78, 0x6a47, 0x6a62, 0x6a59, 0x6a66, 0x6a48, 0x6a38,
- 0x6a22, 0x6a90, 0x6a8d, 0x6aa0, 0x6a84, 0x6aa2, 0x6aa3,
- /* 0x5d21 - 0x5d7e */
- 0x6a97, 0x8617, 0x6abb, 0x6ac3, 0x6ac2, 0x6ab8, 0x6ab3,
- 0x6aac, 0x6ade, 0x6ad1, 0x6adf, 0x6aaa, 0x6ada, 0x6aea, 0x6afb,
- 0x6b05, 0x8616, 0x6afa, 0x6b12, 0x6b16, 0x9b31, 0x6b1f, 0x6b38,
- 0x6b37, 0x76dc, 0x6b39, 0x98ee, 0x6b47, 0x6b43, 0x6b49, 0x6b50,
- 0x6b59, 0x6b54, 0x6b5b, 0x6b5f, 0x6b61, 0x6b78, 0x6b79, 0x6b7f,
- 0x6b80, 0x6b84, 0x6b83, 0x6b8d, 0x6b98, 0x6b95, 0x6b9e, 0x6ba4,
- 0x6baa, 0x6bab, 0x6baf, 0x6bb2, 0x6bb1, 0x6bb3, 0x6bb7, 0x6bbc,
- 0x6bc6, 0x6bcb, 0x6bd3, 0x6bdf, 0x6bec, 0x6beb, 0x6bf3, 0x6bef,
- 0x9ebe, 0x6c08, 0x6c13, 0x6c14, 0x6c1b, 0x6c24, 0x6c23, 0x6c5e,
- 0x6c55, 0x6c62, 0x6c6a, 0x6c82, 0x6c8d, 0x6c9a, 0x6c81, 0x6c9b,
- 0x6c7e, 0x6c68, 0x6c73, 0x6c92, 0x6c90, 0x6cc4, 0x6cf1, 0x6cd3,
- 0x6cbd, 0x6cd7, 0x6cc5, 0x6cdd, 0x6cae, 0x6cb1, 0x6cbe,
- /* 0x5e21 - 0x5e7e */
- 0x6cba, 0x6cdb, 0x6cef, 0x6cd9, 0x6cea, 0x6d1f, 0x884d,
- 0x6d36, 0x6d2b, 0x6d3d, 0x6d38, 0x6d19, 0x6d35, 0x6d33, 0x6d12,
- 0x6d0c, 0x6d63, 0x6d93, 0x6d64, 0x6d5a, 0x6d79, 0x6d59, 0x6d8e,
- 0x6d95, 0x6fe4, 0x6d85, 0x6df9, 0x6e15, 0x6e0a, 0x6db5, 0x6dc7,
- 0x6de6, 0x6db8, 0x6dc6, 0x6dec, 0x6dde, 0x6dcc, 0x6de8, 0x6dd2,
- 0x6dc5, 0x6dfa, 0x6dd9, 0x6de4, 0x6dd5, 0x6dea, 0x6dee, 0x6e2d,
- 0x6e6e, 0x6e2e, 0x6e19, 0x6e72, 0x6e5f, 0x6e3e, 0x6e23, 0x6e6b,
- 0x6e2b, 0x6e76, 0x6e4d, 0x6e1f, 0x6e43, 0x6e3a, 0x6e4e, 0x6e24,
- 0x6eff, 0x6e1d, 0x6e38, 0x6e82, 0x6eaa, 0x6e98, 0x6ec9, 0x6eb7,
- 0x6ed3, 0x6ebd, 0x6eaf, 0x6ec4, 0x6eb2, 0x6ed4, 0x6ed5, 0x6e8f,
- 0x6ea5, 0x6ec2, 0x6e9f, 0x6f41, 0x6f11, 0x704c, 0x6eec, 0x6ef8,
- 0x6efe, 0x6f3f, 0x6ef2, 0x6f31, 0x6eef, 0x6f32, 0x6ecc,
- /* 0x5f21 - 0x5f7e */
- 0x6f3e, 0x6f13, 0x6ef7, 0x6f86, 0x6f7a, 0x6f78, 0x6f81,
- 0x6f80, 0x6f6f, 0x6f5b, 0x6ff3, 0x6f6d, 0x6f82, 0x6f7c, 0x6f58,
- 0x6f8e, 0x6f91, 0x6fc2, 0x6f66, 0x6fb3, 0x6fa3, 0x6fa1, 0x6fa4,
- 0x6fb9, 0x6fc6, 0x6faa, 0x6fdf, 0x6fd5, 0x6fec, 0x6fd4, 0x6fd8,
- 0x6ff1, 0x6fee, 0x6fdb, 0x7009, 0x700b, 0x6ffa, 0x7011, 0x7001,
- 0x700f, 0x6ffe, 0x701b, 0x701a, 0x6f74, 0x701d, 0x7018, 0x701f,
- 0x7030, 0x703e, 0x7032, 0x7051, 0x7063, 0x7099, 0x7092, 0x70af,
- 0x70f1, 0x70ac, 0x70b8, 0x70b3, 0x70ae, 0x70df, 0x70cb, 0x70dd,
- 0x70d9, 0x7109, 0x70fd, 0x711c, 0x7119, 0x7165, 0x7155, 0x7188,
- 0x7166, 0x7162, 0x714c, 0x7156, 0x716c, 0x718f, 0x71fb, 0x7184,
- 0x7195, 0x71a8, 0x71ac, 0x71d7, 0x71b9, 0x71be, 0x71d2, 0x71c9,
- 0x71d4, 0x71ce, 0x71e0, 0x71ec, 0x71e7, 0x71f5, 0x71fc,
- /* 0x6021 - 0x607e */
- 0x71f9, 0x71ff, 0x720d, 0x7210, 0x721b, 0x7228, 0x722d,
- 0x722c, 0x7230, 0x7232, 0x723b, 0x723c, 0x723f, 0x7240, 0x7246,
- 0x724b, 0x7258, 0x7274, 0x727e, 0x7282, 0x7281, 0x7287, 0x7292,
- 0x7296, 0x72a2, 0x72a7, 0x72b9, 0x72b2, 0x72c3, 0x72c6, 0x72c4,
- 0x72ce, 0x72d2, 0x72e2, 0x72e0, 0x72e1, 0x72f9, 0x72f7, 0x500f,
- 0x7317, 0x730a, 0x731c, 0x7316, 0x731d, 0x7334, 0x732f, 0x7329,
- 0x7325, 0x733e, 0x734e, 0x734f, 0x9ed8, 0x7357, 0x736a, 0x7368,
- 0x7370, 0x7378, 0x7375, 0x737b, 0x737a, 0x73c8, 0x73b3, 0x73ce,
- 0x73bb, 0x73c0, 0x73e5, 0x73ee, 0x73de, 0x74a2, 0x7405, 0x746f,
- 0x7425, 0x73f8, 0x7432, 0x743a, 0x7455, 0x743f, 0x745f, 0x7459,
- 0x7441, 0x745c, 0x7469, 0x7470, 0x7463, 0x746a, 0x7476, 0x747e,
- 0x748b, 0x749e, 0x74a7, 0x74ca, 0x74cf, 0x74d4, 0x73f1,
- /* 0x6121 - 0x617e */
- 0x74e0, 0x74e3, 0x74e7, 0x74e9, 0x74ee, 0x74f2, 0x74f0,
- 0x74f1, 0x74f8, 0x74f7, 0x7504, 0x7503, 0x7505, 0x750c, 0x750e,
- 0x750d, 0x7515, 0x7513, 0x751e, 0x7526, 0x752c, 0x753c, 0x7544,
- 0x754d, 0x754a, 0x7549, 0x755b, 0x7546, 0x755a, 0x7569, 0x7564,
- 0x7567, 0x756b, 0x756d, 0x7578, 0x7576, 0x7586, 0x7587, 0x7574,
- 0x758a, 0x7589, 0x7582, 0x7594, 0x759a, 0x759d, 0x75a5, 0x75a3,
- 0x75c2, 0x75b3, 0x75c3, 0x75b5, 0x75bd, 0x75b8, 0x75bc, 0x75b1,
- 0x75cd, 0x75ca, 0x75d2, 0x75d9, 0x75e3, 0x75de, 0x75fe, 0x75ff,
- 0x75fc, 0x7601, 0x75f0, 0x75fa, 0x75f2, 0x75f3, 0x760b, 0x760d,
- 0x7609, 0x761f, 0x7627, 0x7620, 0x7621, 0x7622, 0x7624, 0x7634,
- 0x7630, 0x763b, 0x7647, 0x7648, 0x7646, 0x765c, 0x7658, 0x7661,
- 0x7662, 0x7668, 0x7669, 0x766a, 0x7667, 0x766c, 0x7670,
- /* 0x6221 - 0x627e */
- 0x7672, 0x7676, 0x7678, 0x767c, 0x7680, 0x7683, 0x7688,
- 0x768b, 0x768e, 0x7696, 0x7693, 0x7699, 0x769a, 0x76b0, 0x76b4,
- 0x76b8, 0x76b9, 0x76ba, 0x76c2, 0x76cd, 0x76d6, 0x76d2, 0x76de,
- 0x76e1, 0x76e5, 0x76e7, 0x76ea, 0x862f, 0x76fb, 0x7708, 0x7707,
- 0x7704, 0x7729, 0x7724, 0x771e, 0x7725, 0x7726, 0x771b, 0x7737,
- 0x7738, 0x7747, 0x775a, 0x7768, 0x776b, 0x775b, 0x7765, 0x777f,
- 0x777e, 0x7779, 0x778e, 0x778b, 0x7791, 0x77a0, 0x779e, 0x77b0,
- 0x77b6, 0x77b9, 0x77bf, 0x77bc, 0x77bd, 0x77bb, 0x77c7, 0x77cd,
- 0x77d7, 0x77da, 0x77dc, 0x77e3, 0x77ee, 0x77fc, 0x780c, 0x7812,
- 0x7926, 0x7820, 0x792a, 0x7845, 0x788e, 0x7874, 0x7886, 0x787c,
- 0x789a, 0x788c, 0x78a3, 0x78b5, 0x78aa, 0x78af, 0x78d1, 0x78c6,
- 0x78cb, 0x78d4, 0x78be, 0x78bc, 0x78c5, 0x78ca, 0x78ec,
- /* 0x6321 - 0x637e */
- 0x78e7, 0x78da, 0x78fd, 0x78f4, 0x7907, 0x7912, 0x7911,
- 0x7919, 0x792c, 0x792b, 0x7940, 0x7960, 0x7957, 0x795f, 0x795a,
- 0x7955, 0x7953, 0x797a, 0x797f, 0x798a, 0x799d, 0x79a7, 0x9f4b,
- 0x79aa, 0x79ae, 0x79b3, 0x79b9, 0x79ba, 0x79c9, 0x79d5, 0x79e7,
- 0x79ec, 0x79e1, 0x79e3, 0x7a08, 0x7a0d, 0x7a18, 0x7a19, 0x7a20,
- 0x7a1f, 0x7980, 0x7a31, 0x7a3b, 0x7a3e, 0x7a37, 0x7a43, 0x7a57,
- 0x7a49, 0x7a61, 0x7a62, 0x7a69, 0x9f9d, 0x7a70, 0x7a79, 0x7a7d,
- 0x7a88, 0x7a97, 0x7a95, 0x7a98, 0x7a96, 0x7aa9, 0x7ac8, 0x7ab0,
- 0x7ab6, 0x7ac5, 0x7ac4, 0x7abf, 0x9083, 0x7ac7, 0x7aca, 0x7acd,
- 0x7acf, 0x7ad5, 0x7ad3, 0x7ad9, 0x7ada, 0x7add, 0x7ae1, 0x7ae2,
- 0x7ae6, 0x7aed, 0x7af0, 0x7b02, 0x7b0f, 0x7b0a, 0x7b06, 0x7b33,
- 0x7b18, 0x7b19, 0x7b1e, 0x7b35, 0x7b28, 0x7b36, 0x7b50,
- /* 0x6421 - 0x647e */
- 0x7b7a, 0x7b04, 0x7b4d, 0x7b0b, 0x7b4c, 0x7b45, 0x7b75,
- 0x7b65, 0x7b74, 0x7b67, 0x7b70, 0x7b71, 0x7b6c, 0x7b6e, 0x7b9d,
- 0x7b98, 0x7b9f, 0x7b8d, 0x7b9c, 0x7b9a, 0x7b8b, 0x7b92, 0x7b8f,
- 0x7b5d, 0x7b99, 0x7bcb, 0x7bc1, 0x7bcc, 0x7bcf, 0x7bb4, 0x7bc6,
- 0x7bdd, 0x7be9, 0x7c11, 0x7c14, 0x7be6, 0x7be5, 0x7c60, 0x7c00,
- 0x7c07, 0x7c13, 0x7bf3, 0x7bf7, 0x7c17, 0x7c0d, 0x7bf6, 0x7c23,
- 0x7c27, 0x7c2a, 0x7c1f, 0x7c37, 0x7c2b, 0x7c3d, 0x7c4c, 0x7c43,
- 0x7c54, 0x7c4f, 0x7c40, 0x7c50, 0x7c58, 0x7c5f, 0x7c64, 0x7c56,
- 0x7c65, 0x7c6c, 0x7c75, 0x7c83, 0x7c90, 0x7ca4, 0x7cad, 0x7ca2,
- 0x7cab, 0x7ca1, 0x7ca8, 0x7cb3, 0x7cb2, 0x7cb1, 0x7cae, 0x7cb9,
- 0x7cbd, 0x7cc0, 0x7cc5, 0x7cc2, 0x7cd8, 0x7cd2, 0x7cdc, 0x7ce2,
- 0x9b3b, 0x7cef, 0x7cf2, 0x7cf4, 0x7cf6, 0x7cfa, 0x7d06,
- /* 0x6521 - 0x657e */
- 0x7d02, 0x7d1c, 0x7d15, 0x7d0a, 0x7d45, 0x7d4b, 0x7d2e,
- 0x7d32, 0x7d3f, 0x7d35, 0x7d46, 0x7d73, 0x7d56, 0x7d4e, 0x7d72,
- 0x7d68, 0x7d6e, 0x7d4f, 0x7d63, 0x7d93, 0x7d89, 0x7d5b, 0x7d8f,
- 0x7d7d, 0x7d9b, 0x7dba, 0x7dae, 0x7da3, 0x7db5, 0x7dc7, 0x7dbd,
- 0x7dab, 0x7e3d, 0x7da2, 0x7daf, 0x7ddc, 0x7db8, 0x7d9f, 0x7db0,
- 0x7dd8, 0x7ddd, 0x7de4, 0x7dde, 0x7dfb, 0x7df2, 0x7de1, 0x7e05,
- 0x7e0a, 0x7e23, 0x7e21, 0x7e12, 0x7e31, 0x7e1f, 0x7e09, 0x7e0b,
- 0x7e22, 0x7e46, 0x7e66, 0x7e3b, 0x7e35, 0x7e39, 0x7e43, 0x7e37,
- 0x7e32, 0x7e3a, 0x7e67, 0x7e5d, 0x7e56, 0x7e5e, 0x7e59, 0x7e5a,
- 0x7e79, 0x7e6a, 0x7e69, 0x7e7c, 0x7e7b, 0x7e83, 0x7dd5, 0x7e7d,
- 0x8fae, 0x7e7f, 0x7e88, 0x7e89, 0x7e8c, 0x7e92, 0x7e90, 0x7e93,
- 0x7e94, 0x7e96, 0x7e8e, 0x7e9b, 0x7e9c, 0x7f38, 0x7f3a,
- /* 0x6621 - 0x667e */
- 0x7f45, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f50, 0x7f51, 0x7f55,
- 0x7f54, 0x7f58, 0x7f5f, 0x7f60, 0x7f68, 0x7f69, 0x7f67, 0x7f78,
- 0x7f82, 0x7f86, 0x7f83, 0x7f88, 0x7f87, 0x7f8c, 0x7f94, 0x7f9e,
- 0x7f9d, 0x7f9a, 0x7fa3, 0x7faf, 0x7fb2, 0x7fb9, 0x7fae, 0x7fb6,
- 0x7fb8, 0x8b71, 0x7fc5, 0x7fc6, 0x7fca, 0x7fd5, 0x7fd4, 0x7fe1,
- 0x7fe6, 0x7fe9, 0x7ff3, 0x7ff9, 0x98dc, 0x8006, 0x8004, 0x800b,
- 0x8012, 0x8018, 0x8019, 0x801c, 0x8021, 0x8028, 0x803f, 0x803b,
- 0x804a, 0x8046, 0x8052, 0x8058, 0x805a, 0x805f, 0x8062, 0x8068,
- 0x8073, 0x8072, 0x8070, 0x8076, 0x8079, 0x807d, 0x807f, 0x8084,
- 0x8086, 0x8085, 0x809b, 0x8093, 0x809a, 0x80ad, 0x5190, 0x80ac,
- 0x80db, 0x80e5, 0x80d9, 0x80dd, 0x80c4, 0x80da, 0x80d6, 0x8109,
- 0x80ef, 0x80f1, 0x811b, 0x8129, 0x8123, 0x812f, 0x814b,
- /* 0x6721 - 0x677e */
- 0x968b, 0x8146, 0x813e, 0x8153, 0x8151, 0x80fc, 0x8171,
- 0x816e, 0x8165, 0x8166, 0x8174, 0x8183, 0x8188, 0x818a, 0x8180,
- 0x8182, 0x81a0, 0x8195, 0x81a4, 0x81a3, 0x815f, 0x8193, 0x81a9,
- 0x81b0, 0x81b5, 0x81be, 0x81b8, 0x81bd, 0x81c0, 0x81c2, 0x81ba,
- 0x81c9, 0x81cd, 0x81d1, 0x81d9, 0x81d8, 0x81c8, 0x81da, 0x81df,
- 0x81e0, 0x81e7, 0x81fa, 0x81fb, 0x81fe, 0x8201, 0x8202, 0x8205,
- 0x8207, 0x820a, 0x820d, 0x8210, 0x8216, 0x8229, 0x822b, 0x8238,
- 0x8233, 0x8240, 0x8259, 0x8258, 0x825d, 0x825a, 0x825f, 0x8264,
- 0x8262, 0x8268, 0x826a, 0x826b, 0x822e, 0x8271, 0x8277, 0x8278,
- 0x827e, 0x828d, 0x8292, 0x82ab, 0x829f, 0x82bb, 0x82ac, 0x82e1,
- 0x82e3, 0x82df, 0x82d2, 0x82f4, 0x82f3, 0x82fa, 0x8393, 0x8303,
- 0x82fb, 0x82f9, 0x82de, 0x8306, 0x82dc, 0x8309, 0x82d9,
- /* 0x6821 - 0x687e */
- 0x8335, 0x8334, 0x8316, 0x8332, 0x8331, 0x8340, 0x8339,
- 0x8350, 0x8345, 0x832f, 0x832b, 0x8317, 0x8318, 0x8385, 0x839a,
- 0x83aa, 0x839f, 0x83a2, 0x8396, 0x8323, 0x838e, 0x8387, 0x838a,
- 0x837c, 0x83b5, 0x8373, 0x8375, 0x83a0, 0x8389, 0x83a8, 0x83f4,
- 0x8413, 0x83eb, 0x83ce, 0x83fd, 0x8403, 0x83d8, 0x840b, 0x83c1,
- 0x83f7, 0x8407, 0x83e0, 0x83f2, 0x840d, 0x8422, 0x8420, 0x83bd,
- 0x8438, 0x8506, 0x83fb, 0x846d, 0x842a, 0x843c, 0x855a, 0x8484,
- 0x8477, 0x846b, 0x84ad, 0x846e, 0x8482, 0x8469, 0x8446, 0x842c,
- 0x846f, 0x8479, 0x8435, 0x84ca, 0x8462, 0x84b9, 0x84bf, 0x849f,
- 0x84d9, 0x84cd, 0x84bb, 0x84da, 0x84d0, 0x84c1, 0x84c6, 0x84d6,
- 0x84a1, 0x8521, 0x84ff, 0x84f4, 0x8517, 0x8518, 0x852c, 0x851f,
- 0x8515, 0x8514, 0x84fc, 0x8540, 0x8563, 0x8558, 0x8548,
- /* 0x6921 - 0x697e */
- 0x8541, 0x8602, 0x854b, 0x8555, 0x8580, 0x85a4, 0x8588,
- 0x8591, 0x858a, 0x85a8, 0x856d, 0x8594, 0x859b, 0x85ea, 0x8587,
- 0x859c, 0x8577, 0x857e, 0x8590, 0x85c9, 0x85ba, 0x85cf, 0x85b9,
- 0x85d0, 0x85d5, 0x85dd, 0x85e5, 0x85dc, 0x85f9, 0x860a, 0x8613,
- 0x860b, 0x85fe, 0x85fa, 0x8606, 0x8622, 0x861a, 0x8630, 0x863f,
- 0x864d, 0x4e55, 0x8654, 0x865f, 0x8667, 0x8671, 0x8693, 0x86a3,
- 0x86a9, 0x86aa, 0x868b, 0x868c, 0x86b6, 0x86af, 0x86c4, 0x86c6,
- 0x86b0, 0x86c9, 0x8823, 0x86ab, 0x86d4, 0x86de, 0x86e9, 0x86ec,
- 0x86df, 0x86db, 0x86ef, 0x8712, 0x8706, 0x8708, 0x8700, 0x8703,
- 0x86fb, 0x8711, 0x8709, 0x870d, 0x86f9, 0x870a, 0x8734, 0x873f,
- 0x8737, 0x873b, 0x8725, 0x8729, 0x871a, 0x8760, 0x875f, 0x8778,
- 0x874c, 0x874e, 0x8774, 0x8757, 0x8768, 0x876e, 0x8759,
- /* 0x6a21 - 0x6a7e */
- 0x8753, 0x8763, 0x876a, 0x8805, 0x87a2, 0x879f, 0x8782,
- 0x87af, 0x87cb, 0x87bd, 0x87c0, 0x87d0, 0x96d6, 0x87ab, 0x87c4,
- 0x87b3, 0x87c7, 0x87c6, 0x87bb, 0x87ef, 0x87f2, 0x87e0, 0x880f,
- 0x880d, 0x87fe, 0x87f6, 0x87f7, 0x880e, 0x87d2, 0x8811, 0x8816,
- 0x8815, 0x8822, 0x8821, 0x8831, 0x8836, 0x8839, 0x8827, 0x883b,
- 0x8844, 0x8842, 0x8852, 0x8859, 0x885e, 0x8862, 0x886b, 0x8881,
- 0x887e, 0x889e, 0x8875, 0x887d, 0x88b5, 0x8872, 0x8882, 0x8897,
- 0x8892, 0x88ae, 0x8899, 0x88a2, 0x888d, 0x88a4, 0x88b0, 0x88bf,
- 0x88b1, 0x88c3, 0x88c4, 0x88d4, 0x88d8, 0x88d9, 0x88dd, 0x88f9,
- 0x8902, 0x88fc, 0x88f4, 0x88e8, 0x88f2, 0x8904, 0x890c, 0x890a,
- 0x8913, 0x8943, 0x891e, 0x8925, 0x892a, 0x892b, 0x8941, 0x8944,
- 0x893b, 0x8936, 0x8938, 0x894c, 0x891d, 0x8960, 0x895e,
- /* 0x6b21 - 0x6b7e */
- 0x8966, 0x8964, 0x896d, 0x896a, 0x896f, 0x8974, 0x8977,
- 0x897e, 0x8983, 0x8988, 0x898a, 0x8993, 0x8998, 0x89a1, 0x89a9,
- 0x89a6, 0x89ac, 0x89af, 0x89b2, 0x89ba, 0x89bd, 0x89bf, 0x89c0,
- 0x89da, 0x89dc, 0x89dd, 0x89e7, 0x89f4, 0x89f8, 0x8a03, 0x8a16,
- 0x8a10, 0x8a0c, 0x8a1b, 0x8a1d, 0x8a25, 0x8a36, 0x8a41, 0x8a5b,
- 0x8a52, 0x8a46, 0x8a48, 0x8a7c, 0x8a6d, 0x8a6c, 0x8a62, 0x8a85,
- 0x8a82, 0x8a84, 0x8aa8, 0x8aa1, 0x8a91, 0x8aa5, 0x8aa6, 0x8a9a,
- 0x8aa3, 0x8ac4, 0x8acd, 0x8ac2, 0x8ada, 0x8aeb, 0x8af3, 0x8ae7,
- 0x8ae4, 0x8af1, 0x8b14, 0x8ae0, 0x8ae2, 0x8af7, 0x8ade, 0x8adb,
- 0x8b0c, 0x8b07, 0x8b1a, 0x8ae1, 0x8b16, 0x8b10, 0x8b17, 0x8b20,
- 0x8b33, 0x97ab, 0x8b26, 0x8b2b, 0x8b3e, 0x8b28, 0x8b41, 0x8b4c,
- 0x8b4f, 0x8b4e, 0x8b49, 0x8b56, 0x8b5b, 0x8b5a, 0x8b6b,
- /* 0x6c21 - 0x6c7e */
- 0x8b5f, 0x8b6c, 0x8b6f, 0x8b74, 0x8b7d, 0x8b80, 0x8b8c,
- 0x8b8e, 0x8b92, 0x8b93, 0x8b96, 0x8b99, 0x8b9a, 0x8c3a, 0x8c41,
- 0x8c3f, 0x8c48, 0x8c4c, 0x8c4e, 0x8c50, 0x8c55, 0x8c62, 0x8c6c,
- 0x8c78, 0x8c7a, 0x8c82, 0x8c89, 0x8c85, 0x8c8a, 0x8c8d, 0x8c8e,
- 0x8c94, 0x8c7c, 0x8c98, 0x621d, 0x8cad, 0x8caa, 0x8cbd, 0x8cb2,
- 0x8cb3, 0x8cae, 0x8cb6, 0x8cc8, 0x8cc1, 0x8ce4, 0x8ce3, 0x8cda,
- 0x8cfd, 0x8cfa, 0x8cfb, 0x8d04, 0x8d05, 0x8d0a, 0x8d07, 0x8d0f,
- 0x8d0d, 0x8d10, 0x9f4e, 0x8d13, 0x8ccd, 0x8d14, 0x8d16, 0x8d67,
- 0x8d6d, 0x8d71, 0x8d73, 0x8d81, 0x8d99, 0x8dc2, 0x8dbe, 0x8dba,
- 0x8dcf, 0x8dda, 0x8dd6, 0x8dcc, 0x8ddb, 0x8dcb, 0x8dea, 0x8deb,
- 0x8ddf, 0x8de3, 0x8dfc, 0x8e08, 0x8e09, 0x8dff, 0x8e1d, 0x8e1e,
- 0x8e10, 0x8e1f, 0x8e42, 0x8e35, 0x8e30, 0x8e34, 0x8e4a,
- /* 0x6d21 - 0x6d7e */
- 0x8e47, 0x8e49, 0x8e4c, 0x8e50, 0x8e48, 0x8e59, 0x8e64,
- 0x8e60, 0x8e2a, 0x8e63, 0x8e55, 0x8e76, 0x8e72, 0x8e7c, 0x8e81,
- 0x8e87, 0x8e85, 0x8e84, 0x8e8b, 0x8e8a, 0x8e93, 0x8e91, 0x8e94,
- 0x8e99, 0x8eaa, 0x8ea1, 0x8eac, 0x8eb0, 0x8ec6, 0x8eb1, 0x8ebe,
- 0x8ec5, 0x8ec8, 0x8ecb, 0x8edb, 0x8ee3, 0x8efc, 0x8efb, 0x8eeb,
- 0x8efe, 0x8f0a, 0x8f05, 0x8f15, 0x8f12, 0x8f19, 0x8f13, 0x8f1c,
- 0x8f1f, 0x8f1b, 0x8f0c, 0x8f26, 0x8f33, 0x8f3b, 0x8f39, 0x8f45,
- 0x8f42, 0x8f3e, 0x8f4c, 0x8f49, 0x8f46, 0x8f4e, 0x8f57, 0x8f5c,
- 0x8f62, 0x8f63, 0x8f64, 0x8f9c, 0x8f9f, 0x8fa3, 0x8fad, 0x8faf,
- 0x8fb7, 0x8fda, 0x8fe5, 0x8fe2, 0x8fea, 0x8fef, 0x9087, 0x8ff4,
- 0x9005, 0x8ff9, 0x8ffa, 0x9011, 0x9015, 0x9021, 0x900d, 0x901e,
- 0x9016, 0x900b, 0x9027, 0x9036, 0x9035, 0x9039, 0x8ff8,
- /* 0x6e21 - 0x6e7e */
- 0x904f, 0x9050, 0x9051, 0x9052, 0x900e, 0x9049, 0x903e,
- 0x9056, 0x9058, 0x905e, 0x9068, 0x906f, 0x9076, 0x96a8, 0x9072,
- 0x9082, 0x907d, 0x9081, 0x9080, 0x908a, 0x9089, 0x908f, 0x90a8,
- 0x90af, 0x90b1, 0x90b5, 0x90e2, 0x90e4, 0x6248, 0x90db, 0x9102,
- 0x9112, 0x9119, 0x9132, 0x9130, 0x914a, 0x9156, 0x9158, 0x9163,
- 0x9165, 0x9169, 0x9173, 0x9172, 0x918b, 0x9189, 0x9182, 0x91a2,
- 0x91ab, 0x91af, 0x91aa, 0x91b5, 0x91b4, 0x91ba, 0x91c0, 0x91c1,
- 0x91c9, 0x91cb, 0x91d0, 0x91d6, 0x91df, 0x91e1, 0x91db, 0x91fc,
- 0x91f5, 0x91f6, 0x921e, 0x91ff, 0x9214, 0x922c, 0x9215, 0x9211,
- 0x925e, 0x9257, 0x9245, 0x9249, 0x9264, 0x9248, 0x9295, 0x923f,
- 0x924b, 0x9250, 0x929c, 0x9296, 0x9293, 0x929b, 0x925a, 0x92cf,
- 0x92b9, 0x92b7, 0x92e9, 0x930f, 0x92fa, 0x9344, 0x932e,
- /* 0x6f21 - 0x6f7e */
- 0x9319, 0x9322, 0x931a, 0x9323, 0x933a, 0x9335, 0x933b,
- 0x935c, 0x9360, 0x937c, 0x936e, 0x9356, 0x93b0, 0x93ac, 0x93ad,
- 0x9394, 0x93b9, 0x93d6, 0x93d7, 0x93e8, 0x93e5, 0x93d8, 0x93c3,
- 0x93dd, 0x93d0, 0x93c8, 0x93e4, 0x941a, 0x9414, 0x9413, 0x9403,
- 0x9407, 0x9410, 0x9436, 0x942b, 0x9435, 0x9421, 0x943a, 0x9441,
- 0x9452, 0x9444, 0x945b, 0x9460, 0x9462, 0x945e, 0x946a, 0x9229,
- 0x9470, 0x9475, 0x9477, 0x947d, 0x945a, 0x947c, 0x947e, 0x9481,
- 0x947f, 0x9582, 0x9587, 0x958a, 0x9594, 0x9596, 0x9598, 0x9599,
- 0x95a0, 0x95a8, 0x95a7, 0x95ad, 0x95bc, 0x95bb, 0x95b9, 0x95be,
- 0x95ca, 0x6ff6, 0x95c3, 0x95cd, 0x95cc, 0x95d5, 0x95d4, 0x95d6,
- 0x95dc, 0x95e1, 0x95e5, 0x95e2, 0x9621, 0x9628, 0x962e, 0x962f,
- 0x9642, 0x964c, 0x964f, 0x964b, 0x9677, 0x965c, 0x965e,
- /* 0x7021 - 0x707e */
- 0x965d, 0x965f, 0x9666, 0x9672, 0x966c, 0x968d, 0x9698,
- 0x9695, 0x9697, 0x96aa, 0x96a7, 0x96b1, 0x96b2, 0x96b0, 0x96b4,
- 0x96b6, 0x96b8, 0x96b9, 0x96ce, 0x96cb, 0x96c9, 0x96cd, 0x894d,
- 0x96dc, 0x970d, 0x96d5, 0x96f9, 0x9704, 0x9706, 0x9708, 0x9713,
- 0x970e, 0x9711, 0x970f, 0x9716, 0x9719, 0x9724, 0x972a, 0x9730,
- 0x9739, 0x973d, 0x973e, 0x9744, 0x9746, 0x9748, 0x9742, 0x9749,
- 0x975c, 0x9760, 0x9764, 0x9766, 0x9768, 0x52d2, 0x976b, 0x9771,
- 0x9779, 0x9785, 0x977c, 0x9781, 0x977a, 0x9786, 0x978b, 0x978f,
- 0x9790, 0x979c, 0x97a8, 0x97a6, 0x97a3, 0x97b3, 0x97b4, 0x97c3,
- 0x97c6, 0x97c8, 0x97cb, 0x97dc, 0x97ed, 0x9f4f, 0x97f2, 0x7adf,
- 0x97f6, 0x97f5, 0x980f, 0x980c, 0x9838, 0x9824, 0x9821, 0x9837,
- 0x983d, 0x9846, 0x984f, 0x984b, 0x986b, 0x986f, 0x9870,
- /* 0x7121 - 0x717e */
- 0x9871, 0x9874, 0x9873, 0x98aa, 0x98af, 0x98b1, 0x98b6,
- 0x98c4, 0x98c3, 0x98c6, 0x98e9, 0x98eb, 0x9903, 0x9909, 0x9912,
- 0x9914, 0x9918, 0x9921, 0x991d, 0x991e, 0x9924, 0x9920, 0x992c,
- 0x992e, 0x993d, 0x993e, 0x9942, 0x9949, 0x9945, 0x9950, 0x994b,
- 0x9951, 0x9952, 0x994c, 0x9955, 0x9997, 0x9998, 0x99a5, 0x99ad,
- 0x99ae, 0x99bc, 0x99df, 0x99db, 0x99dd, 0x99d8, 0x99d1, 0x99ed,
- 0x99ee, 0x99f1, 0x99f2, 0x99fb, 0x99f8, 0x9a01, 0x9a0f, 0x9a05,
- 0x99e2, 0x9a19, 0x9a2b, 0x9a37, 0x9a45, 0x9a42, 0x9a40, 0x9a43,
- 0x9a3e, 0x9a55, 0x9a4d, 0x9a5b, 0x9a57, 0x9a5f, 0x9a62, 0x9a65,
- 0x9a64, 0x9a69, 0x9a6b, 0x9a6a, 0x9aad, 0x9ab0, 0x9abc, 0x9ac0,
- 0x9acf, 0x9ad1, 0x9ad3, 0x9ad4, 0x9ade, 0x9adf, 0x9ae2, 0x9ae3,
- 0x9ae6, 0x9aef, 0x9aeb, 0x9aee, 0x9af4, 0x9af1, 0x9af7,
- /* 0x7221 - 0x727e */
- 0x9afb, 0x9b06, 0x9b18, 0x9b1a, 0x9b1f, 0x9b22, 0x9b23,
- 0x9b25, 0x9b27, 0x9b28, 0x9b29, 0x9b2a, 0x9b2e, 0x9b2f, 0x9b32,
- 0x9b44, 0x9b43, 0x9b4f, 0x9b4d, 0x9b4e, 0x9b51, 0x9b58, 0x9b74,
- 0x9b93, 0x9b83, 0x9b91, 0x9b96, 0x9b97, 0x9b9f, 0x9ba0, 0x9ba8,
- 0x9bb4, 0x9bc0, 0x9bca, 0x9bb9, 0x9bc6, 0x9bcf, 0x9bd1, 0x9bd2,
- 0x9be3, 0x9be2, 0x9be4, 0x9bd4, 0x9be1, 0x9c3a, 0x9bf2, 0x9bf1,
- 0x9bf0, 0x9c15, 0x9c14, 0x9c09, 0x9c13, 0x9c0c, 0x9c06, 0x9c08,
- 0x9c12, 0x9c0a, 0x9c04, 0x9c2e, 0x9c1b, 0x9c25, 0x9c24, 0x9c21,
- 0x9c30, 0x9c47, 0x9c32, 0x9c46, 0x9c3e, 0x9c5a, 0x9c60, 0x9c67,
- 0x9c76, 0x9c78, 0x9ce7, 0x9cec, 0x9cf0, 0x9d09, 0x9d08, 0x9ceb,
- 0x9d03, 0x9d06, 0x9d2a, 0x9d26, 0x9daf, 0x9d23, 0x9d1f, 0x9d44,
- 0x9d15, 0x9d12, 0x9d41, 0x9d3f, 0x9d3e, 0x9d46, 0x9d48,
- /* 0x7321 - 0x737e */
- 0x9d5d, 0x9d5e, 0x9d64, 0x9d51, 0x9d50, 0x9d59, 0x9d72,
- 0x9d89, 0x9d87, 0x9dab, 0x9d6f, 0x9d7a, 0x9d9a, 0x9da4, 0x9da9,
- 0x9db2, 0x9dc4, 0x9dc1, 0x9dbb, 0x9db8, 0x9dba, 0x9dc6, 0x9dcf,
- 0x9dc2, 0x9dd9, 0x9dd3, 0x9df8, 0x9de6, 0x9ded, 0x9def, 0x9dfd,
- 0x9e1a, 0x9e1b, 0x9e1e, 0x9e75, 0x9e79, 0x9e7d, 0x9e81, 0x9e88,
- 0x9e8b, 0x9e8c, 0x9e92, 0x9e95, 0x9e91, 0x9e9d, 0x9ea5, 0x9ea9,
- 0x9eb8, 0x9eaa, 0x9ead, 0x9761, 0x9ecc, 0x9ece, 0x9ecf, 0x9ed0,
- 0x9ed4, 0x9edc, 0x9ede, 0x9edd, 0x9ee0, 0x9ee5, 0x9ee8, 0x9eef,
- 0x9ef4, 0x9ef6, 0x9ef7, 0x9ef9, 0x9efb, 0x9efc, 0x9efd, 0x9f07,
- 0x9f08, 0x76b7, 0x9f15, 0x9f21, 0x9f2c, 0x9f3e, 0x9f4a, 0x9f52,
- 0x9f54, 0x9f63, 0x9f5f, 0x9f60, 0x9f61, 0x9f66, 0x9f67, 0x9f6c,
- 0x9f6a, 0x9f77, 0x9f72, 0x9f76, 0x9f95, 0x9f9c, 0x9fa0,
- /* 0x7421 - 0x747e */
- 0x582f, 0x69c7, 0x9059, 0x7464, 0x51dc, 0x7199, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7521 - 0x757e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7621 - 0x767e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7721 - 0x777e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7821 - 0x787e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7921 - 0x797e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7a21 - 0x7a7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7b21 - 0x7b7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7c21 - 0x7c7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7d21 - 0x7d7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7e21 - 0x7e7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static uint jisx0208ToUnicode11(uint h, uint l)
-{
- if ((0x0021 <= h) && (h <= 0x007e) && (0x0021 <= l) && (l <= 0x007e)) {
- return jisx0208_to_unicode[(h - 0x0021) * 0x005e + (l - 0x0021)];
- }
- return 0x0000;
-}
-
-/*
- * This data is derived from Unicode 1.1,
- * JIS X 0208 (1990) to Unicode mapping table version 0.9 .
- * (In addition NEC Vender Defined Char included)
- */
-static unsigned short const unicode_to_jisx0208_00[] = {
- /* 0x0000 - 0x00ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x2140, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x2171, 0x2172, 0x0000, 0x0000, 0x0000, 0x2178,
- 0x212f, 0x0000, 0x0000, 0x0000, 0x224c, 0x0000, 0x0000, 0x0000,
- 0x216b, 0x215e, 0x0000, 0x0000, 0x212d, 0x0000, 0x2279, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x215f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2160,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_03[] = {
- /* 0x0300 - 0x03ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x2621, 0x2622, 0x2623, 0x2624, 0x2625, 0x2626, 0x2627,
- 0x2628, 0x2629, 0x262a, 0x262b, 0x262c, 0x262d, 0x262e, 0x262f,
- 0x2630, 0x2631, 0x0000, 0x2632, 0x2633, 0x2634, 0x2635, 0x2636,
- 0x2637, 0x2638, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x2641, 0x2642, 0x2643, 0x2644, 0x2645, 0x2646, 0x2647,
- 0x2648, 0x2649, 0x264a, 0x264b, 0x264c, 0x264d, 0x264e, 0x264f,
- 0x2650, 0x2651, 0x0000, 0x2652, 0x2653, 0x2654, 0x2655, 0x2656,
- 0x2657, 0x2658, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_04[] = {
- /* 0x0400 - 0x04ff */
- 0x0000, 0x2727, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x2721, 0x2722, 0x2723, 0x2724, 0x2725, 0x2726, 0x2728, 0x2729,
- 0x272a, 0x272b, 0x272c, 0x272d, 0x272e, 0x272f, 0x2730, 0x2731,
- 0x2732, 0x2733, 0x2734, 0x2735, 0x2736, 0x2737, 0x2738, 0x2739,
- 0x273a, 0x273b, 0x273c, 0x273d, 0x273e, 0x273f, 0x2740, 0x2741,
- 0x2751, 0x2752, 0x2753, 0x2754, 0x2755, 0x2756, 0x2758, 0x2759,
- 0x275a, 0x275b, 0x275c, 0x275d, 0x275e, 0x275f, 0x2760, 0x2761,
- 0x2762, 0x2763, 0x2764, 0x2765, 0x2766, 0x2767, 0x2768, 0x2769,
- 0x276a, 0x276b, 0x276c, 0x276d, 0x276e, 0x276f, 0x2770, 0x2771,
- 0x0000, 0x2757, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_20[] = {
- /* 0x2000 - 0x20ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x213e, 0x0000, 0x0000, 0x0000, 0x0000, 0x213d, 0x2142, 0x0000,
- 0x2146, 0x2147, 0x0000, 0x0000, 0x2148, 0x2149, 0x0000, 0x0000,
- 0x2277, 0x2278, 0x0000, 0x0000, 0x0000, 0x2145, 0x2144, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x2273, 0x0000, 0x216c, 0x216d, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x2228, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_21[] = {
- /* 0x2100 - 0x21ff */
- 0x0000, 0x0000, 0x0000, 0x216e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d62, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x2d64, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x2272, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x2d35, 0x2d36, 0x2d37, 0x2d38, 0x2d39, 0x2d3a, 0x2d3b, 0x2d3c,
- 0x2d3d, 0x2d3e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x222b, 0x222c, 0x222a, 0x222d, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x224d, 0x0000, 0x224e, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_22[] = {
- /* 0x2200 - 0x22ff */
- 0x224f, 0x0000, 0x225f, 0x2250, 0x0000, 0x0000, 0x0000, 0x2260,
- 0x223a, 0x0000, 0x0000, 0x223b, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x2d74, 0x215d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x2265, 0x0000, 0x0000, 0x2267, 0x2167, 0x2d78,
- 0x225c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x224a,
- 0x224b, 0x2241, 0x2240, 0x2269, 0x226a, 0x0000, 0x2d73, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x2168, 0x2268, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2266, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x2262, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x2162, 0x2261, 0x0000, 0x0000, 0x0000, 0x0000, 0x2165, 0x2166,
- 0x0000, 0x0000, 0x2263, 0x2264, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x223e, 0x223f, 0x0000, 0x0000, 0x223c, 0x223d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x225d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d79,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_23[] = {
- /* 0x2300 - 0x23ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x225e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_24[] = {
- /* 0x2400 - 0x24ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x2d21, 0x2d22, 0x2d23, 0x2d24, 0x2d25, 0x2d26, 0x2d27, 0x2d28,
- 0x2d29, 0x2d2a, 0x2d2b, 0x2d2c, 0x2d2d, 0x2d2e, 0x2d2f, 0x2d30,
- 0x2d31, 0x2d32, 0x2d33, 0x2d34, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_25[] = {
- /* 0x2500 - 0x25ff */
- 0x2821, 0x282c, 0x2822, 0x282d, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x2823, 0x0000, 0x0000, 0x282e,
- 0x2824, 0x0000, 0x0000, 0x282f, 0x2826, 0x0000, 0x0000, 0x2831,
- 0x2825, 0x0000, 0x0000, 0x2830, 0x2827, 0x283c, 0x0000, 0x0000,
- 0x2837, 0x0000, 0x0000, 0x2832, 0x2829, 0x283e, 0x0000, 0x0000,
- 0x2839, 0x0000, 0x0000, 0x2834, 0x2828, 0x0000, 0x0000, 0x2838,
- 0x283d, 0x0000, 0x0000, 0x2833, 0x282a, 0x0000, 0x0000, 0x283a,
- 0x283f, 0x0000, 0x0000, 0x2835, 0x282b, 0x0000, 0x0000, 0x283b,
- 0x0000, 0x0000, 0x2840, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x2836, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x2223, 0x2222, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x2225, 0x2224, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x2227, 0x2226, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2221, 0x217e,
- 0x0000, 0x0000, 0x0000, 0x217b, 0x0000, 0x0000, 0x217d, 0x217c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x227e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_26[] = {
- /* 0x2600 - 0x26ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x217a, 0x2179, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x216a, 0x0000, 0x2169, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x2276, 0x0000, 0x0000, 0x2275, 0x0000, 0x2274,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_30[] = {
- /* 0x3000 - 0x30ff */
- 0x2121, 0x2122, 0x2123, 0x2137, 0x0000, 0x2139, 0x213a, 0x213b,
- 0x2152, 0x2153, 0x2154, 0x2155, 0x2156, 0x2157, 0x2158, 0x2159,
- 0x215a, 0x215b, 0x2229, 0x222e, 0x214c, 0x214d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x2141, 0x2d60, 0x0000, 0x2d61,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x2421, 0x2422, 0x2423, 0x2424, 0x2425, 0x2426, 0x2427,
- 0x2428, 0x2429, 0x242a, 0x242b, 0x242c, 0x242d, 0x242e, 0x242f,
- 0x2430, 0x2431, 0x2432, 0x2433, 0x2434, 0x2435, 0x2436, 0x2437,
- 0x2438, 0x2439, 0x243a, 0x243b, 0x243c, 0x243d, 0x243e, 0x243f,
- 0x2440, 0x2441, 0x2442, 0x2443, 0x2444, 0x2445, 0x2446, 0x2447,
- 0x2448, 0x2449, 0x244a, 0x244b, 0x244c, 0x244d, 0x244e, 0x244f,
- 0x2450, 0x2451, 0x2452, 0x2453, 0x2454, 0x2455, 0x2456, 0x2457,
- 0x2458, 0x2459, 0x245a, 0x245b, 0x245c, 0x245d, 0x245e, 0x245f,
- 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
- 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f,
- 0x2470, 0x2471, 0x2472, 0x2473, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x212b, 0x212c, 0x2135, 0x2136, 0x0000,
- 0x0000, 0x2521, 0x2522, 0x2523, 0x2524, 0x2525, 0x2526, 0x2527,
- 0x2528, 0x2529, 0x252a, 0x252b, 0x252c, 0x252d, 0x252e, 0x252f,
- 0x2530, 0x2531, 0x2532, 0x2533, 0x2534, 0x2535, 0x2536, 0x2537,
- 0x2538, 0x2539, 0x253a, 0x253b, 0x253c, 0x253d, 0x253e, 0x253f,
- 0x2540, 0x2541, 0x2542, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547,
- 0x2548, 0x2549, 0x254a, 0x254b, 0x254c, 0x254d, 0x254e, 0x254f,
- 0x2550, 0x2551, 0x2552, 0x2553, 0x2554, 0x2555, 0x2556, 0x2557,
- 0x2558, 0x2559, 0x255a, 0x255b, 0x255c, 0x255d, 0x255e, 0x255f,
- 0x2560, 0x2561, 0x2562, 0x2563, 0x2564, 0x2565, 0x2566, 0x2567,
- 0x2568, 0x2569, 0x256a, 0x256b, 0x256c, 0x256d, 0x256e, 0x256f,
- 0x2570, 0x2571, 0x2572, 0x2573, 0x2574, 0x2575, 0x2576, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x2126, 0x213c, 0x2133, 0x2134, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_32[] = {
- /* 0x3200 - 0x32ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x2d6a, 0x2d6b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x2d6c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x2d65, 0x2d66, 0x2d67, 0x2d68,
- 0x2d69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_33[] = {
- /* 0x3300 - 0x33ff */
- 0x0000, 0x0000, 0x0000, 0x2d46, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d4a, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x2d41, 0x0000, 0x0000, 0x0000,
- 0x2d44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x2d42, 0x2d4c, 0x0000, 0x0000, 0x2d4b, 0x2d45,
- 0x0000, 0x0000, 0x0000, 0x2d4d, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d47, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x2d4f, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x2d40, 0x2d4e, 0x0000, 0x0000, 0x2d43, 0x0000, 0x0000,
- 0x0000, 0x2d48, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d49,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x2d5f, 0x2d6f, 0x2d6e, 0x2d6d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d53, 0x2d54,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x2d50, 0x2d51, 0x2d52, 0x0000,
- 0x0000, 0x2d56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x2d55, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2d63, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_4e[] = {
- /* 0x4e00 - 0x4eff */
- 0x306c, 0x437a, 0x0000, 0x3c37, 0x0000, 0x0000, 0x0000, 0x4b7c,
- 0x3e66, 0x3b30, 0x3e65, 0x323c, 0x0000, 0x4954, 0x4d3f, 0x0000,
- 0x5022, 0x312f, 0x0000, 0x0000, 0x336e, 0x5023, 0x4024, 0x5242,
- 0x3556, 0x4a3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e67, 0x0000,
- 0x0000, 0x4e3e, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a42, 0x0000,
- 0x0000, 0x0000, 0x5024, 0x0000, 0x0000, 0x4366, 0x0000, 0x0000,
- 0x0000, 0x5025, 0x367a, 0x0000, 0x0000, 0x0000, 0x5026, 0x0000,
- 0x345d, 0x4330, 0x0000, 0x3c67, 0x5027, 0x0000, 0x0000, 0x5028,
- 0x0000, 0x0000, 0x5029, 0x4735, 0x0000, 0x3557, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4737, 0x0000, 0x4663, 0x3843, 0x4b33,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6949, 0x502a, 0x3e68,
- 0x502b, 0x3235, 0x0000, 0x0000, 0x0000, 0x3665, 0x3870, 0x4c69,
- 0x0000, 0x0000, 0x5626, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4d70, 0x0000, 0x467d, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3425, 0x0000,
- 0x3535, 0x0000, 0x502c, 0x0000, 0x0000, 0x502d, 0x4e3b, 0x0000,
- 0x4d3d, 0x4168, 0x502f, 0x3b76, 0x4673, 0x0000, 0x5032, 0x0000,
- 0x0000, 0x313e, 0x385f, 0x0000, 0x385e, 0x3066, 0x0000, 0x0000,
- 0x4f4b, 0x4f4a, 0x0000, 0x3a33, 0x3021, 0x0000, 0x5033, 0x5034,
- 0x5035, 0x4b34, 0x5036, 0x0000, 0x3872, 0x3067, 0x4b72, 0x0000,
- 0x357c, 0x0000, 0x0000, 0x357d, 0x357e, 0x4462, 0x4e3c, 0x0000,
- 0x5037, 0x0000, 0x0000, 0x5038, 0x0000, 0x0000, 0x5039, 0x0000,
- 0x0000, 0x0000, 0x3f4d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3d3a, 0x3f4e, 0x503e, 0x0000, 0x503c, 0x0000, 0x503d, 0x3558,
- 0x0000, 0x0000, 0x3a23, 0x3270, 0x0000, 0x503b, 0x503a, 0x4a29,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3b46, 0x3b45, 0x423e, 0x503f,
- 0x4955, 0x4067, 0x0000, 0x0000, 0x0000, 0x2138, 0x5040, 0x5042,
- 0x0000, 0x0000, 0x0000, 0x4265, 0x4e61, 0x304a, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5041, 0x323e, 0x0000,
- 0x3644, 0x0000, 0x4367, 0x0000, 0x0000, 0x0000, 0x376f, 0x5043,
- 0x0000, 0x0000, 0x0000, 0x4724, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_4f[] = {
- /* 0x4f00 - 0x4fff */
- 0x0000, 0x346b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5044, 0x304b, 0x0000, 0x0000, 0x3860, 0x346c, 0x497a,
- 0x4832, 0x3559, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3271, 0x0000, 0x5067, 0x4541, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x476c,
- 0x5046, 0x0000, 0x0000, 0x0000, 0x483c, 0x0000, 0x4e62, 0x0000,
- 0x3f2d, 0x0000, 0x3b47, 0x0000, 0x3b77, 0x3240, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4451, 0x0000, 0x0000, 0x4322, 0x504a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x304c, 0x4463, 0x3d3b,
- 0x3a34, 0x4d24, 0x0000, 0x424e, 0x0000, 0x323f, 0x0000, 0x5049,
- 0x0000, 0x4d3e, 0x5045, 0x5047, 0x3a6e, 0x5048, 0x5524, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5050, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5053,
- 0x5051, 0x0000, 0x0000, 0x3242, 0x0000, 0x4a3b, 0x504b, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x504f, 0x3873, 0x0000, 0x0000, 0x3b48,
- 0x0000, 0x0000, 0x0000, 0x3426, 0x0000, 0x0000, 0x5054, 0x0000,
- 0x504c, 0x0000, 0x0000, 0x4e63, 0x0000, 0x3b78, 0x0000, 0x504d,
- 0x0000, 0x5052, 0x0000, 0x0000, 0x0000, 0x0000, 0x5055, 0x0000,
- 0x504e, 0x0000, 0x0000, 0x3621, 0x0000, 0x304d, 0x0000, 0x0000,
- 0x3622, 0x3241, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5525, 0x0000, 0x4b79, 0x496e, 0x3874,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f2f, 0x4e37, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a58,
- 0x0000, 0x0000, 0x3738, 0x4225, 0x3264, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3d53, 0x0000, 0x0000, 0x0000, 0x5059, 0x0000,
- 0x505e, 0x505c, 0x0000, 0x0000, 0x5057, 0x0000, 0x0000, 0x422f,
- 0x505a, 0x0000, 0x505d, 0x505b, 0x0000, 0x4a5d, 0x0000, 0x5058,
- 0x0000, 0x3f2e, 0x0000, 0x4b73, 0x505f, 0x5060, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d24, 0x506d,
- 0x0000, 0x0000, 0x0000, 0x4750, 0x0000, 0x4936, 0x5068, 0x0000,
- 0x4a70, 0x0000, 0x3236, 0x0000, 0x0000, 0x0000, 0x506c, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_50[] = {
- /* 0x5000 - 0x50ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5066, 0x506f, 0x0000,
- 0x0000, 0x4152, 0x0000, 0x3844, 0x0000, 0x475c, 0x0000, 0x6047,
- 0x0000, 0x506e, 0x455d, 0x0000, 0x5063, 0x0000, 0x3876, 0x0000,
- 0x0000, 0x3875, 0x5061, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c5a,
- 0x0000, 0x5069, 0x0000, 0x4a6f, 0x434d, 0x5065, 0x3771, 0x0000,
- 0x5062, 0x506a, 0x5064, 0x4e51, 0x506b, 0x4f41, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3666, 0x0000,
- 0x0000, 0x3770, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5070, 0x0000, 0x0000, 0x0000, 0x5071,
- 0x5075, 0x304e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a50,
- 0x5074, 0x0000, 0x0000, 0x0000, 0x0000, 0x5073, 0x5077, 0x0000,
- 0x0000, 0x0000, 0x5076, 0x0000, 0x4464, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3772, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5078, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3c45, 0x0000, 0x4226, 0x4465, 0x3676, 0x0000,
- 0x5079, 0x0000, 0x0000, 0x0000, 0x0000, 0x3536, 0x0000, 0x0000,
- 0x507a, 0x0000, 0x0000, 0x0000, 0x0000, 0x507c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b35, 0x0000, 0x0000,
- 0x0000, 0x3766, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3b31, 0x4877, 0x507b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3a45, 0x4d43, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x507e, 0x5123, 0x507d, 0x3a44, 0x0000, 0x3d7d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3739, 0x0000,
- 0x0000, 0x0000, 0x5124, 0x0000, 0x0000, 0x364f, 0x0000, 0x0000,
- 0x0000, 0x5121, 0x5122, 0x0000, 0x0000, 0x462f, 0x0000, 0x417c,
- 0x0000, 0x3623, 0x0000, 0x0000, 0x0000, 0x4b4d, 0x5125, 0x0000,
- 0x0000, 0x0000, 0x4e3d, 0x0000, 0x0000, 0x0000, 0x5126, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5129, 0x0000, 0x5127, 0x0000, 0x414e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5128, 0x512a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x512c, 0x0000, 0x0000,
- 0x0000, 0x512b, 0x0000, 0x4a48, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_51[] = {
- /* 0x5100 - 0x51ff */
- 0x3537, 0x512e, 0x512f, 0x0000, 0x322f, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x512d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3c74, 0x0000, 0x5132, 0x5131, 0x5130, 0x0000,
- 0x5056, 0x0000, 0x5133, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d7e,
- 0x0000, 0x5134, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4d25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4c59, 0x0000, 0x0000, 0x0000, 0x0000, 0x5136,
- 0x0000, 0x0000, 0x5135, 0x5138, 0x5137, 0x0000, 0x0000, 0x5139,
- 0x513a, 0x3074, 0x0000, 0x3835, 0x373b, 0x3d3c, 0x437b, 0x3624,
- 0x4068, 0x3877, 0x0000, 0x396e, 0x513c, 0x4c48, 0x4546, 0x0000,
- 0x3b79, 0x0000, 0x513b, 0x0000, 0x513d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x455e, 0x0000, 0x3375, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x513e, 0x0000, 0x0000, 0x467e, 0x0000, 0x0000,
- 0x4134, 0x5140, 0x5141, 0x482c, 0x3878, 0x4f3b, 0x5142, 0x0000,
- 0x0000, 0x3626, 0x0000, 0x0000, 0x0000, 0x4a3c, 0x4236, 0x3671,
- 0x4535, 0x0000, 0x0000, 0x0000, 0x3773, 0x0000, 0x0000, 0x0000,
- 0x5143, 0x0000, 0x5144, 0x0000, 0x0000, 0x4662, 0x315f, 0x0000,
- 0x0000, 0x5147, 0x3a7d, 0x0000, 0x5146, 0x3a46, 0x0000, 0x5148,
- 0x666e, 0x5149, 0x4b41, 0x514a, 0x0000, 0x514b, 0x514c, 0x3e69,
- 0x0000, 0x3c4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3427, 0x0000, 0x514f, 0x0000, 0x514d, 0x4c3d, 0x514e, 0x0000,
- 0x495a, 0x5150, 0x5151, 0x5152, 0x455f, 0x0000, 0x0000, 0x0000,
- 0x5156, 0x5154, 0x5155, 0x5153, 0x3a63, 0x5157, 0x4c6a, 0x4e64,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5158, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4028, 0x5159, 0x3d5a, 0x0000,
- 0x0000, 0x515a, 0x0000, 0x437c, 0x4e3f, 0x4560, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5245, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x515b, 0x7425, 0x3645, 0x0000, 0x0000,
- 0x515c, 0x4b5e, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d68, 0x427c,
- 0x0000, 0x515e, 0x4664, 0x0000, 0x0000, 0x515f, 0x0000, 0x0000,
- 0x5160, 0x332e, 0x0000, 0x0000, 0x0000, 0x5161, 0x3627, 0x0000,
- 0x464c, 0x317a, 0x3d50, 0x0000, 0x0000, 0x4821, 0x5162, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_52[] = {
- /* 0x5200 - 0x52ff */
- 0x4561, 0x0000, 0x0000, 0x3f4f, 0x5163, 0x0000, 0x4a2c, 0x405a,
- 0x3422, 0x0000, 0x3429, 0x5164, 0x0000, 0x0000, 0x5166, 0x0000,
- 0x0000, 0x373a, 0x0000, 0x0000, 0x5165, 0x0000, 0x0000, 0x4e73,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d69, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x483d, 0x4a4c, 0x0000, 0x5167,
- 0x0000, 0x4d78, 0x5168, 0x0000, 0x0000, 0x0000, 0x5169, 0x0000,
- 0x457e, 0x0000, 0x0000, 0x516a, 0x0000, 0x0000, 0x4029, 0x3a7e,
- 0x3774, 0x516b, 0x3b49, 0x396f, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4466, 0x516d, 0x0000, 0x0000, 0x4227,
- 0x0000, 0x0000, 0x3a6f, 0x516e, 0x516f, 0x4130, 0x0000, 0x516c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5171, 0x0000, 0x4b36, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3964, 0x0000, 0x0000, 0x5170, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3775, 0x3a5e, 0x476d, 0x0000, 0x0000,
- 0x0000, 0x5174, 0x5172, 0x0000, 0x0000, 0x0000, 0x0000, 0x497b,
- 0x3e6a, 0x517b, 0x3364, 0x5175, 0x5173, 0x414f, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5177, 0x0000, 0x5176,
- 0x0000, 0x0000, 0x0000, 0x3344, 0x0000, 0x0000, 0x0000, 0x3760,
- 0x517c, 0x4e2d, 0x0000, 0x0000, 0x0000, 0x5178, 0x0000, 0x0000,
- 0x0000, 0x517d, 0x517a, 0x0000, 0x5179, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4e4f, 0x0000, 0x0000, 0x0000, 0x3879,
- 0x3243, 0x0000, 0x0000, 0x4e74, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3d75, 0x4558, 0x3965, 0x5222, 0x5223, 0x0000, 0x0000,
- 0x0000, 0x4e65, 0x0000, 0x0000, 0x4f2b, 0x5225, 0x0000, 0x0000,
- 0x0000, 0x387a, 0x0000, 0x0000, 0x5224, 0x0000, 0x332f, 0x0000,
- 0x0000, 0x5226, 0x0000, 0x4b56, 0x0000, 0x443c, 0x0000, 0x4d26,
- 0x0000, 0x4a59, 0x0000, 0x0000, 0x0000, 0x5227, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x7055, 0x0000, 0x0000, 0x4630, 0x0000, 0x5228,
- 0x342a, 0x4c33, 0x0000, 0x0000, 0x0000, 0x3e21, 0x5229, 0x4a67,
- 0x522d, 0x0000, 0x402a, 0x522a, 0x3650, 0x0000, 0x522b, 0x342b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x372e, 0x522e, 0x0000, 0x522f, 0x0000, 0x0000,
- 0x5230, 0x5231, 0x3c5b, 0x0000, 0x0000, 0x0000, 0x387b, 0x4c5e,
-};
-
-static unsigned short const unicode_to_jisx0208_53[] = {
- /* 0x5300 - 0x53ff */
- 0x0000, 0x4c68, 0x4677, 0x0000, 0x0000, 0x4a71, 0x5232, 0x0000,
- 0x5233, 0x0000, 0x0000, 0x0000, 0x0000, 0x5235, 0x0000, 0x5237,
- 0x5236, 0x0000, 0x0000, 0x0000, 0x0000, 0x5238, 0x323d, 0x4b4c,
- 0x0000, 0x3a7c, 0x5239, 0x0000, 0x0000, 0x4159, 0x0000, 0x0000,
- 0x3e22, 0x3629, 0x0000, 0x523a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x485b, 0x0000, 0x0000, 0x0000, 0x0000, 0x523b,
- 0x0000, 0x523c, 0x0000, 0x523d, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x523e, 0x4924, 0x3668, 0x3065, 0x0000, 0x0000, 0x0000, 0x463f,
- 0x523f, 0x3d3d, 0x0000, 0x4069, 0x0000, 0x5241, 0x5240, 0x3e23,
- 0x3861, 0x5243, 0x483e, 0x0000, 0x0000, 0x5244, 0x0000, 0x0000,
- 0x0000, 0x485c, 0x4234, 0x426e, 0x3628, 0x0000, 0x0000, 0x466e,
- 0x4331, 0x0000, 0x476e, 0x0000, 0x4b4e, 0x0000, 0x5246, 0x0000,
- 0x406a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3735, 0x0000,
- 0x0000, 0x5247, 0x0000, 0x0000, 0x0000, 0x0000, 0x5248, 0x312c,
- 0x3075, 0x346d, 0x0000, 0x4228, 0x3551, 0x4d71, 0x0000, 0x524b,
- 0x3237, 0x0000, 0x0000, 0x524a, 0x0000, 0x0000, 0x0000, 0x362a,
- 0x0000, 0x0000, 0x524c, 0x0000, 0x4c71, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x524d, 0x0000,
- 0x4e52, 0x0000, 0x387c, 0x0000, 0x0000, 0x0000, 0x0000, 0x3836,
- 0x524e, 0x0000, 0x0000, 0x0000, 0x0000, 0x5250, 0x524f, 0x0000,
- 0x3f5f, 0x3139, 0x0000, 0x0000, 0x0000, 0x315e, 0x5251, 0x0000,
- 0x5252, 0x0000, 0x0000, 0x3837, 0x0000, 0x0000, 0x5253, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x356e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3b32, 0x5254, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4b74, 0x3a35, 0x355a, 0x4d27, 0x4150, 0x483f, 0x3c7d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3d47, 0x0000, 0x3c68, 0x3c75,
- 0x0000, 0x3d76, 0x0000, 0x4840, 0x0000, 0x0000, 0x0000, 0x5257,
- 0x0000, 0x3143, 0x4151, 0x387d, 0x3845, 0x3667, 0x0000, 0x0000,
- 0x525b, 0x4321, 0x427e, 0x362b, 0x3e24, 0x525c, 0x525a, 0x3244,
- 0x4266, 0x3c38, 0x3b4b, 0x3126, 0x0000, 0x0000, 0x3370, 0x3966,
- 0x3b4a, 0x0000, 0x525d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_54[] = {
- /* 0x5400 - 0x54ff */
- 0x0000, 0x525e, 0x0000, 0x3549, 0x3346, 0x0000, 0x0000, 0x0000,
- 0x3967, 0x3548, 0x445f, 0x3125, 0x4631, 0x4c3e, 0x3921, 0x4d79,
- 0x4547, 0x387e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x372f, 0x0000, 0x5267, 0x0000, 0x3663,
- 0x4b4a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x485d, 0x0000,
- 0x0000, 0x5266, 0x0000, 0x345e, 0x5261, 0x5262, 0x5264, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5265, 0x0000,
- 0x355b, 0x3f61, 0x0000, 0x4a2d, 0x5263, 0x525f, 0x3863, 0x0000,
- 0x5260, 0x0000, 0x4f24, 0x0000, 0x0000, 0x0000, 0x4a72, 0x0000,
- 0x4468, 0x3862, 0x3970, 0x0000, 0x0000, 0x0000, 0x5268, 0x0000,
- 0x0000, 0x465d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x526c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3c7e, 0x0000, 0x3c76, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x526f, 0x526d, 0x0000, 0x4c23, 0x0000, 0x526a, 0x5273, 0x526e,
- 0x0000, 0x0000, 0x0000, 0x5271, 0x3846, 0x4c3f, 0x0000, 0x0000,
- 0x5272, 0x0000, 0x0000, 0x0000, 0x5274, 0x0000, 0x5276, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3a70, 0x4f42, 0x0000, 0x526b, 0x5269,
- 0x5275, 0x0000, 0x5270, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5278, 0x0000, 0x5323, 0x527a, 0x0000, 0x0000,
- 0x527e, 0x0000, 0x0000, 0x5321, 0x527b, 0x0000, 0x0000, 0x533e,
- 0x0000, 0x0000, 0x3a69, 0x3331, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5279, 0x0000, 0x0000, 0x0000, 0x5325, 0x3076, 0x5324, 0x0000,
- 0x3025, 0x494a, 0x5322, 0x0000, 0x527c, 0x0000, 0x0000, 0x5277,
- 0x527d, 0x3a48, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5326, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3077, 0x532f, 0x0000, 0x0000, 0x5327, 0x5328, 0x0000,
- 0x3e25, 0x4b69, 0x0000, 0x0000, 0x0000, 0x532d, 0x532c, 0x0000,
- 0x0000, 0x0000, 0x452f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x532e, 0x0000, 0x0000, 0x532b, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_55[] = {
- /* 0x5500 - 0x55ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3134, 0x0000, 0x3a36, 0x3f30,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5329,
- 0x4562, 0x0000, 0x0000, 0x0000, 0x532a, 0x0000, 0x3022, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5334, 0x4d23,
- 0x0000, 0x3e27, 0x0000, 0x533a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5339, 0x5330, 0x0000, 0x0000, 0x0000, 0x0000, 0x4243, 0x0000,
- 0x5331, 0x0000, 0x0000, 0x0000, 0x426f, 0x5336, 0x3e26, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5333, 0x0000, 0x0000, 0x4c64,
- 0x0000, 0x0000, 0x0000, 0x373c, 0x0000, 0x0000, 0x5337, 0x5338,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5335, 0x533b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5332, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5341, 0x5346, 0x0000, 0x5342, 0x0000,
- 0x533d, 0x0000, 0x0000, 0x5347, 0x4131, 0x0000, 0x0000, 0x5349,
- 0x0000, 0x3922, 0x533f, 0x437d, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5343, 0x533c, 0x342d, 0x0000, 0x346e, 0x3365, 0x5344, 0x5340,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3776,
- 0x534a, 0x5348, 0x4153, 0x354a, 0x362c, 0x0000, 0x5345, 0x0000,
- 0x3674, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3144, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x534e, 0x534c, 0x0000, 0x5427,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5351, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x534b, 0x0000, 0x534f, 0x0000, 0x0000, 0x534d,
- 0x0000, 0x0000, 0x0000, 0x3b4c, 0x5350, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5353,
- 0x0000, 0x5358, 0x0000, 0x0000, 0x0000, 0x5356, 0x5355, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_56[] = {
- /* 0x5600 - 0x56ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4332, 0x0000,
- 0x0000, 0x3245, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5352, 0x0000, 0x5354, 0x3e28,
- 0x3133, 0x0000, 0x0000, 0x5357, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x325e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5362,
- 0x0000, 0x3e7c, 0x535e, 0x0000, 0x535c, 0x0000, 0x535d, 0x0000,
- 0x535f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x313d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4139, 0x0000, 0x5359, 0x0000,
- 0x535a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x337a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5361, 0x0000, 0x0000, 0x0000,
- 0x346f, 0x0000, 0x5364, 0x5360, 0x5363, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4a2e, 0x0000, 0x0000, 0x0000,
- 0x4655, 0x0000, 0x4838, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5366, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5365, 0x3345,
- 0x0000, 0x0000, 0x5367, 0x0000, 0x0000, 0x0000, 0x0000, 0x536a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5369, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5368, 0x0000, 0x4739, 0x0000, 0x0000, 0x536b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x536c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x536e, 0x0000, 0x536d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5370, 0x0000, 0x0000, 0x0000,
- 0x5373, 0x5371, 0x536f, 0x5372, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5374, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5375, 0x0000,
- 0x0000, 0x5376, 0x0000, 0x5377, 0x0000, 0x0000, 0x0000, 0x5378,
- 0x5145, 0x0000, 0x3c7c, 0x3b4d, 0x0000, 0x0000, 0x3273, 0x0000,
- 0x3078, 0x0000, 0x0000, 0x4344, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5379, 0x0000,
- 0x3a24, 0x0000, 0x304f, 0x3f5e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x537a, 0x3847, 0x0000, 0x0000, 0x3971, 0x0000, 0x537c,
-};
-
-static unsigned short const unicode_to_jisx0208_57[] = {
- /* 0x5700 - 0x57ff */
- 0x537b, 0x0000, 0x0000, 0x4a60, 0x537d, 0x0000, 0x0000, 0x0000,
- 0x5421, 0x537e, 0x0000, 0x5422, 0x0000, 0x5423, 0x0000, 0x3777,
- 0x0000, 0x0000, 0x3160, 0x5424, 0x0000, 0x0000, 0x5426, 0x0000,
- 0x5425, 0x0000, 0x0000, 0x0000, 0x5428, 0x0000, 0x0000, 0x455a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5429, 0x3035,
- 0x3a5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x373d, 0x0000, 0x0000,
- 0x434f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x542a,
- 0x542b, 0x0000, 0x0000, 0x542d, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x542e, 0x0000, 0x3a64, 0x0000, 0x0000, 0x0000, 0x0000, 0x3651,
- 0x0000, 0x0000, 0x4b37, 0x0000, 0x0000, 0x0000, 0x542c, 0x542f,
- 0x3a41, 0x3923, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5433, 0x0000, 0x0000, 0x3a25, 0x0000, 0x4333, 0x0000,
- 0x0000, 0x5430, 0x445a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5434,
- 0x0000, 0x0000, 0x3f62, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5432, 0x5435, 0x0000, 0x373f, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5436, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5437, 0x0000, 0x3924, 0x3340, 0x5439, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x543a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x543b, 0x0000, 0x0000, 0x5438, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5431, 0x0000, 0x0000, 0x543c, 0x0000, 0x0000, 0x543d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4b64, 0x0000, 0x0000, 0x3e6b, 0x0000,
- 0x0000, 0x0000, 0x543f, 0x5440, 0x543e, 0x0000, 0x5442, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4738, 0x0000, 0x0000, 0x3068,
- 0x4956, 0x0000, 0x0000, 0x5443, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3e7d, 0x0000, 0x0000, 0x3c39,
- 0x0000, 0x475d, 0x3470, 0x0000, 0x3a6b, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_58[] = {
- /* 0x5800 - 0x58ff */
- 0x4b59, 0x0000, 0x4632, 0x0000, 0x0000, 0x3778, 0x424f, 0x0000,
- 0x0000, 0x0000, 0x5441, 0x5444, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4244, 0x0000, 0x0000,
- 0x0000, 0x5445, 0x0000, 0x0000, 0x0000, 0x5446, 0x0000, 0x0000,
- 0x0000, 0x5448, 0x0000, 0x0000, 0x4469, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x342e, 0x0000, 0x0000, 0x0000, 0x0000, 0x7421,
- 0x3161, 0x4a73, 0x0000, 0x0000, 0x3e6c, 0x4548, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3a66, 0x0000, 0x0000, 0x544e, 0x0000, 0x0000,
- 0x4a3d, 0x4e5d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3274, 0x544a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x413a, 0x544d, 0x0000, 0x4563, 0x0000, 0x0000, 0x4549,
- 0x4564, 0x4839, 0x444d, 0x0000, 0x0000, 0x0000, 0x3a49, 0x0000,
- 0x0000, 0x0000, 0x5449, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3176, 0x0000, 0x4536, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x544b, 0x0000, 0x5447, 0x0000, 0x0000, 0x3f50, 0x0000, 0x0000,
- 0x0000, 0x544f, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d4e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x362d, 0x0000, 0x5450, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4a68, 0x0000, 0x0000, 0x0000, 0x417d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4446, 0x0000, 0x0000, 0x5452,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4b4f, 0x0000, 0x0000, 0x5453, 0x0000, 0x0000, 0x5458, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4a2f, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5457, 0x5451, 0x5454, 0x5456, 0x0000, 0x0000, 0x3a26, 0x0000,
- 0x0000, 0x4a49, 0x0000, 0x0000, 0x0000, 0x5459, 0x0000, 0x4345,
- 0x0000, 0x0000, 0x3275, 0x0000, 0x3e6d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x545b, 0x0000, 0x545a, 0x0000, 0x3968, 0x0000, 0x545c,
- 0x545e, 0x545d, 0x0000, 0x0000, 0x5460, 0x0000, 0x5455, 0x5462,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5461, 0x545f, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3b4e, 0x3f51, 0x0000, 0x4154, 0x5463,
- 0x403c, 0x306d, 0x4764, 0x0000, 0x0000, 0x0000, 0x0000, 0x445b,
- 0x0000, 0x5465, 0x5464, 0x5466, 0x5467, 0x5468, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_59[] = {
- /* 0x5900 - 0x59ff */
- 0x0000, 0x0000, 0x5469, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4a51, 0x546a, 0x0000, 0x0000, 0x0000, 0x0000, 0x3246,
- 0x546b, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d3c, 0x3330, 0x0000,
- 0x5249, 0x3d48, 0x423f, 0x546c, 0x4c6b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4c34, 0x0000, 0x0000, 0x546e, 0x0000, 0x4267,
- 0x0000, 0x4537, 0x4240, 0x4957, 0x546f, 0x5470, 0x317b, 0x0000,
- 0x0000, 0x3c3a, 0x5471, 0x0000, 0x0000, 0x0000, 0x0000, 0x3050,
- 0x5472, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5473, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3162, 0x0000, 0x0000, 0x3471,
- 0x4660, 0x4a74, 0x0000, 0x0000, 0x0000, 0x0000, 0x5477, 0x4155,
- 0x5476, 0x3740, 0x0000, 0x0000, 0x4b5b, 0x5475, 0x0000, 0x4565,
- 0x5479, 0x0000, 0x5478, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x547b, 0x0000, 0x547a, 0x0000, 0x0000, 0x317c, 0x0000, 0x547c,
- 0x3e29, 0x547e, 0x4325, 0x0000, 0x547d, 0x0000, 0x4a33, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3d77, 0x455b, 0x0000, 0x0000, 0x0000,
- 0x5521, 0x0000, 0x0000, 0x0000, 0x0000, 0x3925, 0x0000, 0x0000,
- 0x0000, 0x5522, 0x4721, 0x485e, 0x4c51, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4725, 0x0000, 0x0000, 0x552b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3538, 0x0000, 0x0000, 0x4d45, 0x0000,
- 0x0000, 0x4c2f, 0x0000, 0x562c, 0x0000, 0x5523, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5526, 0x0000, 0x4245, 0x0000, 0x0000,
- 0x4b38, 0x0000, 0x0000, 0x0000, 0x454a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5527, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4b65, 0x0000, 0x3a4a, 0x0000, 0x0000, 0x3e2a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5528, 0x0000,
- 0x0000, 0x3b50, 0x0000, 0x3b4f, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3039, 0x3848, 0x0000, 0x402b, 0x3051, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x552c, 0x552d, 0x0000, 0x552a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3138, 0x342f, 0x0000,
- 0x5529, 0x0000, 0x4c45, 0x4931, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3028, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3079, 0x0000, 0x0000, 0x0000, 0x3b51,
-};
-
-static unsigned short const unicode_to_jisx0208_5a[] = {
- /* 0x5a00 - 0x5aff */
- 0x0000, 0x3052, 0x0000, 0x3023, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5532, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5530, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4c3c, 0x0000, 0x5533, 0x0000, 0x5531, 0x0000, 0x0000, 0x552f,
- 0x3f31, 0x0000, 0x0000, 0x0000, 0x0000, 0x552e, 0x0000, 0x0000,
- 0x0000, 0x4a5a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3864,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5537, 0x5538, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3e2b, 0x0000, 0x0000, 0x0000,
- 0x5534, 0x4f2c, 0x0000, 0x0000, 0x0000, 0x0000, 0x474c, 0x0000,
- 0x0000, 0x5536, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3a27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5539, 0x0000, 0x0000, 0x0000, 0x4958, 0x0000,
- 0x0000, 0x0000, 0x553a, 0x0000, 0x5535, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c3b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x475e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x553b, 0x4932, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x553c, 0x5540, 0x553d, 0x0000,
- 0x0000, 0x3247, 0x553f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3c3b, 0x0000, 0x553e, 0x3779, 0x0000, 0x0000, 0x0000,
- 0x554c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5545, 0x5542,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4364, 0x0000, 0x5541, 0x0000, 0x0000, 0x5543, 0x0000,
- 0x0000, 0x5544, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5546, 0x5547, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_5b[] = {
- /* 0x5b00 - 0x5bff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3472, 0x0000, 0x5549, 0x5548, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x554a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3e6e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x554d, 0x0000, 0x445c, 0x0000, 0x0000, 0x0000,
- 0x3145, 0x0000, 0x554b, 0x0000, 0x0000, 0x0000, 0x554e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x554f, 0x0000,
- 0x5552, 0x0000, 0x0000, 0x5550, 0x0000, 0x5551, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3b52, 0x5553, 0x0000, 0x0000, 0x3926, 0x5554, 0x0000, 0x3b7a,
- 0x4238, 0x0000, 0x5555, 0x5556, 0x3b5a, 0x3927, 0x0000, 0x4c52,
- 0x0000, 0x0000, 0x0000, 0x3528, 0x3849, 0x5557, 0x3358, 0x0000,
- 0x0000, 0x5558, 0x0000, 0x4239, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5559, 0x5623, 0x0000, 0x555a, 0x0000, 0x555b, 0x0000, 0x0000,
- 0x555c, 0x0000, 0x555e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x555f, 0x0000, 0x0000, 0x5560, 0x0000, 0x4270, 0x0000, 0x3127,
- 0x3c69, 0x3042, 0x0000, 0x4157, 0x3430, 0x3c35, 0x0000, 0x3928,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4566, 0x0000, 0x3d21,
- 0x3431, 0x4368, 0x446a, 0x3038, 0x3539, 0x4a75, 0x0000, 0x3c42,
- 0x0000, 0x0000, 0x3552, 0x406b, 0x3c3c, 0x4d28, 0x5561, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x355c, 0x0000,
- 0x3a4b, 0x0000, 0x0000, 0x3332, 0x3163, 0x3e2c, 0x3248, 0x0000,
- 0x5562, 0x4d46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d49,
- 0x0000, 0x0000, 0x3c64, 0x5563, 0x3473, 0x4652, 0x4c29, 0x5564,
- 0x0000, 0x5565, 0x0000, 0x0000, 0x4959, 0x0000, 0x0000, 0x0000,
- 0x5567, 0x0000, 0x3428, 0x3677, 0x5566, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3432, 0x0000, 0x3f32, 0x556b, 0x3b21,
- 0x0000, 0x3249, 0x556a, 0x0000, 0x5568, 0x556c, 0x5569, 0x472b,
- 0x5c4d, 0x3f33, 0x0000, 0x556d, 0x0000, 0x0000, 0x4e40, 0x0000,
- 0x556e, 0x0000, 0x0000, 0x5570, 0x0000, 0x437e, 0x556f, 0x0000,
- 0x4023, 0x0000, 0x3b7b, 0x0000, 0x0000, 0x0000, 0x4250, 0x3c77,
-};
-
-static unsigned short const unicode_to_jisx0208_5c[] = {
- /* 0x5c00 - 0x5cff */
- 0x0000, 0x4975, 0x406c, 0x0000, 0x3c4d, 0x5571, 0x3e2d, 0x5572,
- 0x5573, 0x3053, 0x423a, 0x3f52, 0x0000, 0x5574, 0x4633, 0x3e2e,
- 0x0000, 0x3e2f, 0x0000, 0x5575, 0x0000, 0x0000, 0x406d, 0x0000,
- 0x0000, 0x0000, 0x3e30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5576, 0x0000, 0x5577, 0x0000, 0x4c60, 0x0000, 0x0000, 0x0000,
- 0x5578, 0x0000, 0x0000, 0x0000, 0x0000, 0x3646, 0x0000, 0x0000,
- 0x0000, 0x3d22, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5579, 0x557a, 0x3c5c, 0x3f2c, 0x4674, 0x3f54, 0x4878, 0x4722,
- 0x3649, 0x557b, 0x0000, 0x0000, 0x0000, 0x356f, 0x557c, 0x0000,
- 0x367e, 0x0000, 0x464f, 0x3230, 0x0000, 0x3b53, 0x557d, 0x5622,
- 0x5621, 0x367d, 0x0000, 0x557e, 0x0000, 0x4538, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4230, 0x0000,
- 0x454b, 0x3c48, 0x0000, 0x0000, 0x4158, 0x4d7a, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5624, 0x0000, 0x5625, 0x4656,
- 0x0000, 0x3b33, 0x0000, 0x0000, 0x0000, 0x0000, 0x5627, 0x0000,
- 0x0000, 0x5628, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5629, 0x0000, 0x0000, 0x0000,
- 0x3474, 0x562a, 0x0000, 0x0000, 0x562b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x322c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x413b, 0x3464, 0x0000, 0x562d, 0x4c28, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4252, 0x0000, 0x3359, 0x0000, 0x0000, 0x562f, 0x5631,
- 0x345f, 0x0000, 0x0000, 0x562e, 0x5630, 0x0000, 0x5633, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5632, 0x0000, 0x5634,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5635, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x463d, 0x362e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3265, 0x5636, 0x563b, 0x0000, 0x0000, 0x5639, 0x0000, 0x4a77,
- 0x4a76, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4567, 0x0000,
- 0x0000, 0x0000, 0x5638, 0x3d54, 0x0000, 0x5637, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_5d[] = {
- /* 0x5d00 - 0x5dff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f72,
- 0x0000, 0x0000, 0x0000, 0x563c, 0x0000, 0x0000, 0x3a6a, 0x0000,
- 0x0000, 0x5642, 0x0000, 0x0000, 0x5643, 0x563d, 0x3333, 0x563e,
- 0x5647, 0x5646, 0x5645, 0x5641, 0x0000, 0x0000, 0x0000, 0x5640,
- 0x0000, 0x0000, 0x5644, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4a78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x564b, 0x5648, 0x0000, 0x564a, 0x0000,
- 0x4d72, 0x0000, 0x5649, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x563f, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3f73, 0x0000, 0x0000, 0x564c, 0x0000, 0x0000, 0x3a37,
- 0x0000, 0x0000, 0x0000, 0x564d, 0x0000, 0x0000, 0x564e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5651, 0x0000, 0x5650, 0x0000, 0x0000, 0x564f,
- 0x0000, 0x0000, 0x0000, 0x4568, 0x563a, 0x0000, 0x0000, 0x0000,
- 0x5657, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5653, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5652, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5654, 0x0000, 0x5655, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5658,
- 0x0000, 0x0000, 0x4e66, 0x0000, 0x5659, 0x5656, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x565a, 0x0000, 0x0000, 0x3460, 0x565b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x565d, 0x565c, 0x0000, 0x0000, 0x565e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x565f, 0x0000, 0x406e, 0x3d23, 0x0000,
- 0x0000, 0x3d64, 0x0000, 0x4163, 0x0000, 0x3929, 0x3a38, 0x392a,
- 0x3570, 0x0000, 0x0000, 0x5660, 0x0000, 0x0000, 0x3a39, 0x0000,
- 0x0000, 0x384a, 0x5661, 0x4c26, 0x4743, 0x5662, 0x0000, 0x392b,
- 0x0000, 0x0000, 0x0000, 0x342c, 0x0000, 0x4327, 0x3652, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_5e[] = {
- /* 0x5e00 - 0x5eff */
- 0x0000, 0x0000, 0x3b54, 0x495b, 0x0000, 0x0000, 0x4841, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5663, 0x3475, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5666, 0x0000, 0x0000, 0x0000, 0x0000, 0x4421, 0x0000,
- 0x0000, 0x5665, 0x5664, 0x5667, 0x0000, 0x446b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f63, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3b55, 0x0000, 0x404a, 0x0000, 0x4253,
- 0x3522, 0x0000, 0x0000, 0x4422, 0x0000, 0x0000, 0x5668, 0x5669,
- 0x3e6f, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b39, 0x0000, 0x0000,
- 0x566c, 0x0000, 0x0000, 0x566b, 0x566a, 0x497d, 0x0000, 0x5673,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4b5a, 0x0000, 0x566d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x566f, 0x4b6b, 0x0000, 0x566e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5670,
- 0x0000, 0x4828, 0x5671, 0x4a3e, 0x5672, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3433, 0x4a3f, 0x472f, 0x5674, 0x5675, 0x0000,
- 0x392c, 0x3434, 0x5676, 0x3838, 0x4d44, 0x4d29, 0x3476, 0x5678,
- 0x0000, 0x4423, 0x0000, 0x392d, 0x3e31, 0x0000, 0x0000, 0x485f,
- 0x0000, 0x0000, 0x3e32, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d78,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x446c, 0x4a79, 0x4539,
- 0x0000, 0x0000, 0x392e, 0x0000, 0x495c, 0x0000, 0x0000, 0x0000,
- 0x5679, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4559, 0x3a42,
- 0x0000, 0x0000, 0x0000, 0x384b, 0x0000, 0x446d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3043, 0x3d6e, 0x392f,
- 0x4d47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x567a, 0x567b, 0x4751, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x567c, 0x4e77, 0x4f2d, 0x0000, 0x0000, 0x0000, 0x0000, 0x567e,
- 0x567d, 0x0000, 0x0000, 0x3347, 0x0000, 0x0000, 0x5721, 0x0000,
- 0x0000, 0x0000, 0x5724, 0x5725, 0x0000, 0x5723, 0x0000, 0x4940,
- 0x3e33, 0x5727, 0x5726, 0x5722, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5728, 0x5729, 0x0000, 0x0000, 0x572a, 0x0000, 0x0000, 0x0000,
- 0x572d, 0x572b, 0x0000, 0x572c, 0x572e, 0x0000, 0x3164, 0x446e,
- 0x572f, 0x0000, 0x377a, 0x3276, 0x4736, 0x0000, 0x5730, 0x467b,
-};
-
-static unsigned short const unicode_to_jisx0208_5f[] = {
- /* 0x5f00 - 0x5fff */
- 0x0000, 0x4a5b, 0x0000, 0x5731, 0x4f2e, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5732, 0x4a40, 0x5735, 0x5021, 0x5031, 0x0000, 0x3c30,
- 0x4675, 0x5736, 0x0000, 0x355d, 0x4424, 0x307a, 0x5737, 0x4a26,
- 0x3930, 0x0000, 0x0000, 0x4350, 0x0000, 0x0000, 0x0000, 0x446f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c6f, 0x3839, 0x384c,
- 0x0000, 0x5738, 0x0000, 0x0000, 0x0000, 0x5739, 0x0000, 0x573f,
- 0x0000, 0x3c65, 0x0000, 0x0000, 0x0000, 0x4425, 0x0000, 0x362f,
- 0x573a, 0x0000, 0x0000, 0x0000, 0x492b, 0x0000, 0x4346, 0x0000,
- 0x0000, 0x573b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x573c, 0x0000, 0x3630, 0x0000, 0x573d, 0x0000, 0x573e, 0x0000,
- 0x0000, 0x5740, 0x0000, 0x4576, 0x0000, 0x0000, 0x5741, 0x5742,
- 0x0000, 0x5743, 0x0000, 0x0000, 0x5734, 0x5733, 0x0000, 0x0000,
- 0x0000, 0x5744, 0x3741, 0x0000, 0x0000, 0x0000, 0x4927, 0x0000,
- 0x0000, 0x3a4c, 0x4937, 0x4426, 0x494b, 0x5745, 0x0000, 0x0000,
- 0x3e34, 0x3146, 0x0000, 0x5746, 0x0000, 0x0000, 0x0000, 0x5747,
- 0x0000, 0x4c72, 0x0000, 0x0000, 0x4860, 0x0000, 0x0000, 0x574a,
- 0x317d, 0x402c, 0x5749, 0x5748, 0x3742, 0x4254, 0x0000, 0x574e,
- 0x574c, 0x0000, 0x574b, 0x4e27, 0x3865, 0x0000, 0x0000, 0x0000,
- 0x3d79, 0x574d, 0x454c, 0x3d3e, 0x0000, 0x0000, 0x0000, 0x4640,
- 0x5751, 0x5750, 0x0000, 0x0000, 0x0000, 0x0000, 0x574f, 0x0000,
- 0x5752, 0x3866, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5753, 0x497c, 0x3d5b, 0x0000, 0x0000, 0x5754, 0x4879, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4641, 0x4427, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4530, 0x0000, 0x0000, 0x5755, 0x352b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3f34, 0x0000, 0x492c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3477, 0x4726, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5756, 0x3b56,
- 0x4b3a, 0x4b3b, 0x0000, 0x0000, 0x317e, 0x575b, 0x0000, 0x0000,
- 0x4369, 0x0000, 0x0000, 0x0000, 0x5758, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3277, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x582d, 0x575a, 0x0000, 0x0000, 0x0000, 0x4730, 0x0000, 0x0000,
- 0x5759, 0x0000, 0x0000, 0x5757, 0x0000, 0x397a, 0x0000, 0x575d,
-};
-
-static unsigned short const unicode_to_jisx0208_60[] = {
- /* 0x6000 - 0x60ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5763, 0x5769,
- 0x5761, 0x0000, 0x455c, 0x0000, 0x0000, 0x5766, 0x495d, 0x0000,
- 0x0000, 0x5760, 0x0000, 0x5765, 0x4e67, 0x3b57, 0x0000, 0x0000,
- 0x4255, 0x575e, 0x0000, 0x0000, 0x0000, 0x355e, 0x5768, 0x402d,
- 0x3165, 0x5762, 0x3278, 0x5767, 0x0000, 0x0000, 0x0000, 0x3631,
- 0x0000, 0x5764, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x576a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x576c, 0x5776, 0x5774, 0x0000, 0x0000, 0x5771, 0x0000,
- 0x0000, 0x0000, 0x5770, 0x4e78, 0x0000, 0x5772, 0x0000, 0x0000,
- 0x3632, 0x0000, 0x3931, 0x0000, 0x0000, 0x3d7a, 0x0000, 0x0000,
- 0x0000, 0x5779, 0x576b, 0x0000, 0x0000, 0x0000, 0x0000, 0x576f,
- 0x575f, 0x0000, 0x327a, 0x5773, 0x5775, 0x4351, 0x0000, 0x0000,
- 0x3a28, 0x3238, 0x576d, 0x5778, 0x5777, 0x3633, 0x0000, 0x4229,
- 0x3366, 0x0000, 0x0000, 0x0000, 0x0000, 0x3743, 0x0000, 0x576e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x577a, 0x0000, 0x577d, 0x5821, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3c3d, 0x0000, 0x5827, 0x4470, 0x577b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5825, 0x0000, 0x3279, 0x0000, 0x5823, 0x5824,
- 0x0000, 0x0000, 0x577e, 0x5822, 0x0000, 0x0000, 0x0000, 0x3867,
- 0x4d2a, 0x0000, 0x0000, 0x3435, 0x0000, 0x0000, 0x3159, 0x5826,
- 0x0000, 0x473a, 0x302d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4861, 0x575c, 0x582c, 0x5830, 0x4c65, 0x0000,
- 0x5829, 0x0000, 0x0000, 0x0000, 0x4569, 0x582e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e70, 0x582f, 0x4657,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4f47, 0x0000, 0x582b, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5831, 0x0000, 0x397b, 0x0000, 0x404b, 0x0000, 0x0000, 0x3054,
- 0x582a, 0x5828, 0x0000, 0x415a, 0x0000, 0x0000, 0x0000, 0x577c,
- 0x3b34, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4246, 0x583d, 0x0000, 0x415b, 0x5838, 0x0000, 0x5835, 0x5836,
- 0x0000, 0x3c66, 0x5839, 0x583c, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_61[] = {
- /* 0x6100 - 0x61ff */
- 0x5837, 0x3d25, 0x0000, 0x583a, 0x0000, 0x0000, 0x5834, 0x0000,
- 0x4c7c, 0x4c7b, 0x0000, 0x0000, 0x0000, 0x583e, 0x583f, 0x3055,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5833, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3672, 0x3026, 0x0000, 0x0000, 0x0000, 0x3436,
- 0x0000, 0x583b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5843,
- 0x5842, 0x0000, 0x0000, 0x0000, 0x5847, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5848, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5846, 0x5849, 0x5841, 0x5845,
- 0x0000, 0x0000, 0x584a, 0x0000, 0x584b, 0x0000, 0x0000, 0x5840,
- 0x3b7c, 0x0000, 0x5844, 0x4256, 0x3932, 0x5832, 0x3f35, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5858, 0x0000, 0x4a69, 0x0000, 0x0000,
- 0x584e, 0x584f, 0x5850, 0x0000, 0x0000, 0x5857, 0x0000, 0x5856,
- 0x0000, 0x0000, 0x4b7d, 0x3437, 0x0000, 0x5854, 0x0000, 0x3745,
- 0x3334, 0x0000, 0x0000, 0x5851, 0x0000, 0x0000, 0x4e38, 0x5853,
- 0x3056, 0x5855, 0x0000, 0x584c, 0x5852, 0x5859, 0x3744, 0x584d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d5d, 0x0000,
- 0x0000, 0x0000, 0x4d2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x585c,
- 0x0000, 0x0000, 0x5860, 0x0000, 0x0000, 0x0000, 0x417e, 0x0000,
- 0x4e79, 0x5861, 0x0000, 0x0000, 0x585e, 0x0000, 0x585b, 0x0000,
- 0x0000, 0x585a, 0x585f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4a30, 0x0000, 0x0000, 0x4634,
- 0x0000, 0x3746, 0x0000, 0x5862, 0x585d, 0x0000, 0x5863, 0x0000,
- 0x0000, 0x0000, 0x377b, 0x0000, 0x0000, 0x0000, 0x3231, 0x0000,
- 0x0000, 0x0000, 0x586b, 0x0000, 0x0000, 0x0000, 0x3438, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5869, 0x0000, 0x0000, 0x586a, 0x3a29,
- 0x5868, 0x5866, 0x5865, 0x586c, 0x5864, 0x586e, 0x0000, 0x0000,
- 0x327b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5870, 0x0000, 0x0000, 0x586f, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4428, 0x0000, 0x5873, 0x0000, 0x5871, 0x5867,
- 0x377c, 0x0000, 0x5872, 0x0000, 0x5876, 0x5875, 0x5877, 0x5874,
-};
-
-static unsigned short const unicode_to_jisx0208_62[] = {
- /* 0x6200 - 0x62ff */
- 0x5878, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5879, 0x587a, 0x4a6a, 0x0000, 0x587c, 0x587b, 0x3d3f, 0x0000,
- 0x402e, 0x3266, 0x327c, 0x0000, 0x587d, 0x0000, 0x303f, 0x0000,
- 0x0000, 0x0000, 0x404c, 0x587e, 0x0000, 0x6c43, 0x5921, 0x3761,
- 0x0000, 0x5922, 0x0000, 0x0000, 0x0000, 0x0000, 0x406f, 0x0000,
- 0x0000, 0x0000, 0x5923, 0x0000, 0x0000, 0x0000, 0x5924, 0x353a,
- 0x5925, 0x0000, 0x5926, 0x5927, 0x4257, 0x0000, 0x0000, 0x0000,
- 0x384d, 0x0000, 0x0000, 0x4c61, 0x0000, 0x0000, 0x0000, 0x4b3c,
- 0x3d6a, 0x5928, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4070,
- 0x6e3d, 0x4862, 0x0000, 0x3c6a, 0x0000, 0x3a4d, 0x5929, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4247, 0x0000, 0x4a27, 0x0000, 0x0000,
- 0x4271, 0x0000, 0x0000, 0x592c, 0x0000, 0x0000, 0x592a, 0x0000,
- 0x592d, 0x0000, 0x0000, 0x592b, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x592e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a31, 0x0000,
- 0x0000, 0x3037, 0x0000, 0x0000, 0x0000, 0x0000, 0x495e, 0x0000,
- 0x0000, 0x4863, 0x0000, 0x0000, 0x592f, 0x0000, 0x5932, 0x3e35,
- 0x353b, 0x0000, 0x5930, 0x5937, 0x3e36, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5931, 0x4744, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4d5e, 0x5933, 0x5934, 0x5938, 0x456a, 0x5935, 0x3933,
- 0x405e, 0x0000, 0x0000, 0x5946, 0x4834, 0x0000, 0x4272, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4864, 0x5a2d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4a7a, 0x0000, 0x0000, 0x0000, 0x4471, 0x0000, 0x0000,
- 0x0000, 0x4b75, 0x0000, 0x593b, 0x3221, 0x436a, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5944, 0x0000, 0x0000, 0x4334, 0x593e, 0x5945,
- 0x5940, 0x5947, 0x5943, 0x0000, 0x5942, 0x476f, 0x0000, 0x593c,
- 0x327d, 0x593a, 0x3571, 0x4273, 0x5936, 0x0000, 0x0000, 0x5939,
- 0x3934, 0x405b, 0x0000, 0x3e37, 0x5941, 0x4752, 0x0000, 0x0000,
- 0x3572, 0x3348, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3367, 0x3f21, 0x5949, 0x594e,
- 0x0000, 0x594a, 0x0000, 0x377d, 0x0000, 0x594f, 0x3b22, 0x3969,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d26, 0x593d,
-};
-
-static unsigned short const unicode_to_jisx0208_63[] = {
- /* 0x6300 - 0x63ff */
- 0x0000, 0x3b7d, 0x594c, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b58,
- 0x594d, 0x3044, 0x0000, 0x0000, 0x5948, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4429, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3573, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3634,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x594b,
- 0x3027, 0x0000, 0x0000, 0x3a43, 0x0000, 0x0000, 0x0000, 0x3f36,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4472, 0x0000, 0x0000, 0x4854, 0x5951, 0x415e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x422a, 0x0000, 0x0000, 0x3b2b, 0x5952, 0x0000, 0x5954,
- 0x5950, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a61, 0x0000, 0x443d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x415c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a7b,
- 0x3c4e, 0x5960, 0x0000, 0x595f, 0x0000, 0x0000, 0x3f78, 0x0000,
- 0x0000, 0x0000, 0x377e, 0x0000, 0x0000, 0x0000, 0x5959, 0x3e39,
- 0x0000, 0x0000, 0x4668, 0x4731, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5957, 0x0000, 0x0000, 0x415d, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3c78, 0x595c, 0x0000, 0x0000, 0x3e38, 0x0000, 0x5956, 0x595b,
- 0x0000, 0x0000, 0x4753, 0x0000, 0x0000, 0x0000, 0x5955, 0x0000,
- 0x3721, 0x0000, 0x0000, 0x335d, 0x0000, 0x0000, 0x0000, 0x595d,
- 0x4e2b, 0x3a4e, 0x4335, 0x595a, 0x0000, 0x405c, 0x0000, 0x3935,
- 0x3f64, 0x3166, 0x413c, 0x5958, 0x3545, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3747, 0x0000, 0x444f, 0x595e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x415f, 0x0000, 0x0000, 0x5961, 0x0000,
- 0x5963, 0x0000, 0x0000, 0x4237, 0x5969, 0x0000, 0x5964, 0x0000,
- 0x0000, 0x5966, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4941,
- 0x4473, 0x0000, 0x5967, 0x0000, 0x0000, 0x0000, 0x4d2c, 0x0000,
- 0x0000, 0x0000, 0x4d48, 0x3439, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x302e, 0x0000, 0x5965, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5962, 0x0000, 0x0000, 0x0000, 0x0000, 0x3478, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3167, 0x0000, 0x5968, 0x0000,
- 0x0000, 0x0000, 0x4d49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_64[] = {
- /* 0x6400 - 0x64ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x596c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x423b, 0x0000, 0x5973,
- 0x0000, 0x0000, 0x0000, 0x596d, 0x0000, 0x0000, 0x596a, 0x5971,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5953, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x596e, 0x0000,
- 0x5972, 0x0000, 0x0000, 0x0000, 0x4842, 0x456b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x596b, 0x0000, 0x596f, 0x0000,
- 0x0000, 0x0000, 0x3748, 0x0000, 0x0000, 0x0000, 0x3a71, 0x0000,
- 0x0000, 0x0000, 0x405d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5977, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4526, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5974,
- 0x0000, 0x4b60, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5975,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5976, 0x0000,
- 0x4c4e, 0x0000, 0x4022, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3762, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x597d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3b35, 0x597a, 0x0000, 0x5979, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4732, 0x0000, 0x0000, 0x0000, 0x4635, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4531, 0x597b, 0x0000, 0x0000,
- 0x0000, 0x597c, 0x0000, 0x496f, 0x0000, 0x4745, 0x3b23, 0x0000,
- 0x4071, 0x0000, 0x4b50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3349, 0x0000, 0x5a25, 0x597e, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4d4a, 0x5a27, 0x0000, 0x0000, 0x5a23, 0x0000, 0x5a24,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4160, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5a22, 0x0000, 0x593f, 0x0000, 0x0000, 0x0000,
- 0x5a26, 0x0000, 0x5a21, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5a2b, 0x5a2c, 0x4527, 0x5a2e, 0x0000, 0x0000, 0x3b24, 0x5a29,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x353c, 0x0000, 0x0000, 0x5a2f,
- 0x0000, 0x5a28, 0x5a33, 0x0000, 0x5a32, 0x0000, 0x5a31, 0x0000,
- 0x0000, 0x0000, 0x5a34, 0x0000, 0x0000, 0x5a36, 0x3e71, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_65[] = {
- /* 0x6500 - 0x65ff */
- 0x5a35, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a39, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5a37, 0x0000, 0x0000, 0x0000, 0x5a38, 0x5970, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5a3b, 0x5a3a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5978, 0x5a3c, 0x5a30, 0x0000, 0x0000, 0x3b59,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5a3d, 0x5a3e, 0x5a40, 0x5a3f,
- 0x5a41, 0x327e, 0x0000, 0x3936, 0x0000, 0x0000, 0x4a7c, 0x402f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x384e, 0x0000, 0x0000,
- 0x5a43, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a46, 0x0000, 0x4952,
- 0x0000, 0x355f, 0x0000, 0x0000, 0x0000, 0x5a45, 0x5a44, 0x4754,
- 0x5a47, 0x3635, 0x0000, 0x0000, 0x0000, 0x5a49, 0x5a48, 0x0000,
- 0x0000, 0x0000, 0x343a, 0x3b36, 0x0000, 0x0000, 0x4658, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3749, 0x0000, 0x0000, 0x0000,
- 0x3f74, 0x0000, 0x5a4a, 0x0000, 0x4030, 0x4528, 0x0000, 0x495f,
- 0x5a4b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5a4c, 0x5a4d, 0x0000, 0x0000, 0x0000, 0x4a38,
- 0x555d, 0x4046, 0x0000, 0x0000, 0x494c, 0x0000, 0x3a58, 0x0000,
- 0x4865, 0x4843, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x454d,
- 0x0000, 0x4e41, 0x0000, 0x5a4f, 0x3c50, 0x0000, 0x0000, 0x5a50,
- 0x0000, 0x3036, 0x0000, 0x0000, 0x3654, 0x404d, 0x0000, 0x4960,
- 0x0000, 0x0000, 0x0000, 0x5a51, 0x3b42, 0x4347, 0x0000, 0x3b5b,
- 0x3f37, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a52,
- 0x0000, 0x4a7d, 0x0000, 0x0000, 0x3177, 0x3b5c, 0x0000, 0x0000,
- 0x0000, 0x5a55, 0x0000, 0x5a53, 0x5a56, 0x4e39, 0x5a54, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x407b, 0x5a57, 0x0000, 0x0000, 0x4232,
- 0x0000, 0x0000, 0x5a58, 0x0000, 0x0000, 0x0000, 0x0000, 0x347a,
- 0x0000, 0x5a5a, 0x0000, 0x5a59, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5a5b, 0x5a5c, 0x347b, 0x0000, 0x0000, 0x467c, 0x4336, 0x356c,
- 0x3b5d, 0x4161, 0x0000, 0x0000, 0x3d5c, 0x3030, 0x0000, 0x0000,
- 0x0000, 0x5a5d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3222, 0x5a61, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_66[] = {
- /* 0x6600 - 0x66ff */
- 0x0000, 0x0000, 0x3937, 0x5a60, 0x0000, 0x0000, 0x3a2b, 0x3e3a,
- 0x0000, 0x0000, 0x5a5f, 0x0000, 0x3e3b, 0x0000, 0x4c40, 0x3a2a,
- 0x0000, 0x0000, 0x0000, 0x3057, 0x404e, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5a66, 0x0000, 0x0000, 0x4031,
- 0x3147, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d55, 0x0000, 0x4b66,
- 0x3a72, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e3c, 0x0000, 0x4027,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5a65, 0x5a63, 0x5a64, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x436b, 0x0000, 0x0000, 0x5b26,
- 0x0000, 0x5a6a, 0x3b7e, 0x3938, 0x5a68, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5a69, 0x0000, 0x3f38, 0x0000, 0x0000, 0x0000, 0x5a67,
- 0x0000, 0x0000, 0x3b2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a6c, 0x5a6b, 0x5a70,
- 0x0000, 0x0000, 0x5a71, 0x0000, 0x5a6d, 0x0000, 0x3322, 0x5a6e,
- 0x5a6f, 0x4855, 0x0000, 0x0000, 0x0000, 0x0000, 0x4961, 0x374a,
- 0x5a72, 0x0000, 0x0000, 0x0000, 0x4032, 0x0000, 0x3e3d, 0x0000,
- 0x0000, 0x0000, 0x4352, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3647, 0x0000, 0x5a73, 0x5a77, 0x0000, 0x0000, 0x324b,
- 0x5a74, 0x5a76, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a75, 0x0000,
- 0x0000, 0x3d6b, 0x0000, 0x0000, 0x0000, 0x0000, 0x4348, 0x3045,
- 0x5a78, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a79, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x442a, 0x0000, 0x0000, 0x0000, 0x4e71, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3b43, 0x0000, 0x0000, 0x4a6b, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4b3d, 0x0000, 0x0000, 0x0000,
- 0x5b22, 0x5a7b, 0x0000, 0x0000, 0x5a7e, 0x0000, 0x5a7d, 0x0000,
- 0x0000, 0x5a7a, 0x0000, 0x0000, 0x5b21, 0x0000, 0x0000, 0x465e,
- 0x0000, 0x5a7c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b23, 0x0000,
- 0x0000, 0x3d6c, 0x5b24, 0x0000, 0x4d4b, 0x4778, 0x0000, 0x0000,
- 0x5b25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b27, 0x0000,
- 0x0000, 0x5b28, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5b29, 0x0000, 0x364a, 0x3148, 0x3939, 0x5b2a, 0x0000, 0x5b2b,
- 0x3d71, 0x4162, 0x0000, 0x0000, 0x5258, 0x413e, 0x413d, 0x4258,
-};
-
-static unsigned short const unicode_to_jisx0208_67[] = {
- /* 0x6700 - 0x67ff */
- 0x3a47, 0x0000, 0x0000, 0x5072, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x376e, 0x4d2d, 0x0000, 0x4a7e, 0x0000, 0x497e, 0x0000, 0x5b2c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3a73, 0x443f, 0x5b2d, 0x4f2f,
- 0x0000, 0x0000, 0x0000, 0x4b3e, 0x0000, 0x442b, 0x5b2e, 0x347c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b2f, 0x5b30,
- 0x4c5a, 0x0000, 0x4c24, 0x4b76, 0x4b5c, 0x3b25, 0x5b32, 0x0000,
- 0x0000, 0x3c6b, 0x0000, 0x0000, 0x4b51, 0x0000, 0x5b34, 0x5b37,
- 0x5b36, 0x0000, 0x3479, 0x0000, 0x0000, 0x3560, 0x0000, 0x5b33,
- 0x0000, 0x5b35, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b38, 0x0000,
- 0x0000, 0x3f79, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d7b, 0x3049,
- 0x3a60, 0x423c, 0x0000, 0x3c5d, 0x0000, 0x0000, 0x3e73, 0x0000,
- 0x0000, 0x5b3b, 0x0000, 0x0000, 0x454e, 0x0000, 0x5b39, 0x422b,
- 0x5b3a, 0x3e72, 0x4c5d, 0x5b3c, 0x5b3d, 0x4d68, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5b42, 0x0000, 0x0000, 0x393a, 0x0000, 0x4755,
- 0x5b3f, 0x456c, 0x5a5e, 0x5a62, 0x0000, 0x354f, 0x0000, 0x4747,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5b41, 0x0000, 0x3e3e, 0x4844,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b47, 0x0000, 0x487a,
- 0x0000, 0x5b3e, 0x0000, 0x5b44, 0x5b43, 0x0000, 0x0000, 0x0000,
- 0x404f, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b6d, 0x0000, 0x4e53,
- 0x0000, 0x0000, 0x4b67, 0x0000, 0x324c, 0x3b5e, 0x0000, 0x0000,
- 0x4f48, 0x5b46, 0x3f75, 0x0000, 0x0000, 0x0000, 0x5b45, 0x0000,
- 0x0000, 0x5b40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x384f,
- 0x0000, 0x0000, 0x0000, 0x5b4c, 0x5b4a, 0x0000, 0x324d, 0x5b48,
- 0x5b4e, 0x5b54, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4248, 0x0000, 0x0000, 0x4a41, 0x0000, 0x5b56, 0x0000,
- 0x0000, 0x0000, 0x4922, 0x0000, 0x0000, 0x0000, 0x5b55, 0x4770,
- 0x4b3f, 0x343b, 0x0000, 0x4077, 0x3d40, 0x0000, 0x0000, 0x0000,
- 0x4453, 0x0000, 0x4d2e, 0x0000, 0x0000, 0x5b51, 0x5b50, 0x0000,
- 0x0000, 0x0000, 0x5b52, 0x0000, 0x5b4f, 0x0000, 0x0000, 0x5b57,
- 0x0000, 0x5b4d, 0x0000, 0x0000, 0x5b4b, 0x0000, 0x5b53, 0x5b49,
- 0x0000, 0x436c, 0x0000, 0x4c78, 0x3c46, 0x3a74, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3a3a, 0x0000, 0x0000, 0x4b6f, 0x3341,
-};
-
-static unsigned short const unicode_to_jisx0208_68[] = {
- /* 0x6800 - 0x68ff */
- 0x0000, 0x0000, 0x444e, 0x464a, 0x3149, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4072, 0x0000, 0x0000, 0x4034, 0x372a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b59, 0x0000,
- 0x0000, 0x393b, 0x337c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5b5b, 0x3374, 0x5b61, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5b5e, 0x0000, 0x4073, 0x0000, 0x0000, 0x0000,
- 0x334b, 0x3a2c, 0x0000, 0x0000, 0x334a, 0x3a4f, 0x0000, 0x0000,
- 0x5b5c, 0x3765, 0x374b, 0x456d, 0x0000, 0x0000, 0x5b5a, 0x0000,
- 0x3046, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b5d, 0x5b5f, 0x0000,
- 0x364d, 0x372c, 0x0000, 0x343c, 0x354b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5b62, 0x0000, 0x0000, 0x3a79, 0x4b71, 0x0000, 0x3b37,
- 0x0000, 0x0000, 0x0000, 0x5b63, 0x0000, 0x0000, 0x0000, 0x4930,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5b6f, 0x0000, 0x3233, 0x5b64,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b75, 0x5b65,
- 0x0000, 0x4e42, 0x0000, 0x5b6c, 0x0000, 0x475f, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b74, 0x0000, 0x5b67,
- 0x0000, 0x0000, 0x0000, 0x3034, 0x5b69, 0x0000, 0x0000, 0x393c,
- 0x0000, 0x0000, 0x0000, 0x5b6b, 0x0000, 0x5b6a, 0x0000, 0x5b66,
- 0x5b71, 0x0000, 0x3e3f, 0x0000, 0x0000, 0x0000, 0x546d, 0x3868,
- 0x4d7c, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b68, 0x0000, 0x4474,
- 0x3323, 0x3a2d, 0x0000, 0x5b60, 0x0000, 0x5b70, 0x3361, 0x0000,
- 0x0000, 0x5b6e, 0x5b72, 0x0000, 0x456e, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x347e, 0x0000, 0x5c32, 0x0000,
- 0x0000, 0x4c49, 0x5b77, 0x347d, 0x0000, 0x5b7e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4b40, 0x0000, 0x5c21, 0x5c23, 0x0000, 0x5c27,
- 0x5b79, 0x0000, 0x432a, 0x0000, 0x0000, 0x0000, 0x0000, 0x456f,
- 0x5c2b, 0x5b7c, 0x0000, 0x5c28, 0x0000, 0x0000, 0x0000, 0x5c22,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f39, 0x5c2c,
- 0x0000, 0x0000, 0x4033, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5c2a, 0x343d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_69[] = {
- /* 0x6900 - 0x69ff */
- 0x4f50, 0x5b76, 0x0000, 0x0000, 0x5c26, 0x3058, 0x0000, 0x0000,
- 0x5b78, 0x0000, 0x0000, 0x4c3a, 0x5b7d, 0x3f22, 0x4447, 0x5b73,
- 0x0000, 0x0000, 0x5c25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3f7a, 0x5c2f, 0x3371, 0x3821, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5c31, 0x5b7a, 0x5c30, 0x0000, 0x5c29, 0x5b7b, 0x0000,
- 0x5c2d, 0x0000, 0x5c2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5c3f, 0x0000, 0x0000, 0x0000, 0x464e, 0x0000, 0x5c24, 0x0000,
- 0x0000, 0x5c3b, 0x0000, 0x0000, 0x0000, 0x5c3d, 0x0000, 0x4458,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4d4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4976, 0x5c38, 0x424a, 0x0000, 0x0000,
- 0x0000, 0x5c3e, 0x413f, 0x0000, 0x5c35, 0x5c42, 0x5c41, 0x0000,
- 0x466f, 0x5c40, 0x466a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5c44, 0x5c37, 0x0000, 0x3648, 0x5c3a, 0x3d5d,
- 0x0000, 0x0000, 0x0000, 0x4760, 0x5c3c, 0x364b, 0x0000, 0x5c34,
- 0x5c36, 0x5c33, 0x0000, 0x0000, 0x4f30, 0x335a, 0x5c39, 0x0000,
- 0x0000, 0x5c43, 0x3335, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3a67, 0x0000, 0x0000, 0x0000, 0x315d, 0x0000,
- 0x0000, 0x5c54, 0x0000, 0x0000, 0x4f31, 0x5c57, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3f3a, 0x5c56, 0x0000, 0x0000, 0x0000,
- 0x5c55, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c52,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c46, 0x0000,
- 0x0000, 0x5c63, 0x5c45, 0x0000, 0x5c58, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5c50, 0x0000, 0x0000, 0x5c4b, 0x5c48,
- 0x0000, 0x5c49, 0x0000, 0x5c51, 0x0000, 0x0000, 0x0000, 0x7422,
- 0x0000, 0x0000, 0x5c4e, 0x393d, 0x4448, 0x4164, 0x5c4c, 0x0000,
- 0x5c47, 0x0000, 0x0000, 0x5c4a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4d4d, 0x4b6a, 0x0000, 0x0000, 0x0000, 0x5c4f, 0x5c59, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c61,
- 0x5c5a, 0x0000, 0x0000, 0x5c67, 0x0000, 0x5c65, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5c60, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5c5f, 0x0000, 0x4450, 0x0000, 0x4165, 0x0000, 0x5c5d,
-};
-
-static unsigned short const unicode_to_jisx0208_6a[] = {
- /* 0x6a00 - 0x6aff */
- 0x0000, 0x0000, 0x5c5b, 0x0000, 0x0000, 0x5c62, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5c68, 0x4875, 0x5c6e, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5c69, 0x5c6c, 0x5c66, 0x0000, 0x0000, 0x4374,
- 0x0000, 0x4938, 0x0000, 0x5c5c, 0x0000, 0x0000, 0x5c64, 0x3e40,
- 0x0000, 0x4c4f, 0x5c78, 0x5c6b, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3822, 0x3223, 0x335f, 0x0000, 0x0000, 0x5c53, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e41, 0x5c70, 0x0000,
- 0x5c77, 0x3c79, 0x3372, 0x0000, 0x0000, 0x432e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5c6d, 0x0000, 0x0000, 0x5c72,
- 0x5c76, 0x0000, 0x0000, 0x3636, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x354c, 0x5c74, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3521,
- 0x0000, 0x464b, 0x5c73, 0x0000, 0x0000, 0x0000, 0x5c75, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5c6f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5c71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3360,
- 0x4349, 0x0000, 0x0000, 0x0000, 0x5c7c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c7a, 0x3869, 0x0000,
- 0x5c79, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d21,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5b58, 0x0000, 0x0000, 0x0000,
- 0x5c7b, 0x0000, 0x5c7d, 0x5c7e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5d2c, 0x0000, 0x5d28, 0x0000, 0x5b6d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5d27, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5d26, 0x0000, 0x0000, 0x5d23, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5c6a, 0x5d25, 0x5d24, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5d2a, 0x0000, 0x4f26, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5d2d, 0x367b, 0x0000, 0x0000, 0x5d29, 0x5d2b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4827, 0x0000, 0x5d2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5d32, 0x5d2f, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_6b[] = {
- /* 0x6b00 - 0x6bff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4d73, 0x5d30, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5c5e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5d33, 0x0000, 0x0000, 0x0000, 0x5d34, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3135, 0x0000, 0x5d36,
- 0x3767, 0x3c21, 0x0000, 0x3655, 0x0000, 0x0000, 0x0000, 0x3224,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4d5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d38,
- 0x5d37, 0x5d3a, 0x353d, 0x0000, 0x0000, 0x3656, 0x343e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5d3d, 0x0000, 0x0000, 0x0000, 0x5d3c,
- 0x0000, 0x5d3e, 0x0000, 0x0000, 0x324e, 0x0000, 0x4337, 0x0000,
- 0x5d3f, 0x0000, 0x0000, 0x343f, 0x5d41, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5d40, 0x0000, 0x5d42, 0x0000, 0x0000, 0x0000, 0x5d43,
- 0x0000, 0x5d44, 0x3b5f, 0x4035, 0x3a21, 0x0000, 0x4970, 0x0000,
- 0x0000, 0x4a62, 0x4f44, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b75,
- 0x0000, 0x0000, 0x0000, 0x3a50, 0x4e72, 0x0000, 0x0000, 0x0000,
- 0x5d45, 0x5d46, 0x0000, 0x3b60, 0x0000, 0x0000, 0x0000, 0x5d47,
- 0x5d48, 0x0000, 0x0000, 0x5d4a, 0x5d49, 0x0000, 0x4b58, 0x0000,
- 0x0000, 0x3d5e, 0x3c6c, 0x3b44, 0x0000, 0x5d4b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d4d, 0x3f23, 0x0000,
- 0x5d4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d4e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5d4f, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5d50, 0x5d51, 0x0000, 0x0000, 0x0000, 0x5d52,
- 0x0000, 0x5d54, 0x5d53, 0x5d55, 0x3225, 0x434a, 0x0000, 0x5d56,
- 0x0000, 0x0000, 0x3b26, 0x334c, 0x5d57, 0x0000, 0x0000, 0x4542,
- 0x544c, 0x0000, 0x0000, 0x0000, 0x0000, 0x3523, 0x5d58, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5d59, 0x0000, 0x4a6c, 0x4b68, 0x0000,
- 0x0000, 0x0000, 0x4647, 0x5d5a, 0x4866, 0x0000, 0x0000, 0x0000,
- 0x487b, 0x0000, 0x0000, 0x4c53, 0x0000, 0x0000, 0x0000, 0x5d5b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5d5d, 0x5d5c, 0x0000, 0x0000, 0x5d5f,
- 0x0000, 0x0000, 0x0000, 0x5d5e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_6c[] = {
- /* 0x6c00 - 0x6cff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5d61, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b61,
- 0x0000, 0x4c31, 0x0000, 0x5d62, 0x5d63, 0x0000, 0x0000, 0x3524,
- 0x0000, 0x0000, 0x0000, 0x5d64, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5d66, 0x5d65, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3f65, 0x0000, 0x0000, 0x4939,
- 0x314a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4845, 0x0000,
- 0x4475, 0x3d41, 0x3561, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4846, 0x0000,
- 0x3c2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d68, 0x0000, 0x3440,
- 0x0000, 0x0000, 0x3178, 0x0000, 0x0000, 0x4672, 0x5d67, 0x393e,
- 0x4353, 0x0000, 0x5d69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5d71, 0x0000, 0x5d6a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4241, 0x0000, 0x3562, 0x5d72, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3768, 0x0000, 0x0000, 0x3525, 0x5d70, 0x0000,
- 0x0000, 0x5d6e, 0x5d6b, 0x4d60, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4440, 0x0000, 0x0000, 0x0000, 0x4659, 0x5d6c, 0x0000, 0x0000,
- 0x5d74, 0x0000, 0x5d73, 0x3723, 0x0000, 0x0000, 0x322d, 0x0000,
- 0x0000, 0x3a3b, 0x5d6d, 0x5d6f, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4b57, 0x4274, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4b77, 0x0000, 0x0000, 0x5d7c, 0x0000,
- 0x0000, 0x5d7d, 0x0000, 0x324f, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4a28, 0x4c7d, 0x5e21, 0x3c23, 0x3e42, 0x5d78, 0x5d7e, 0x3168,
- 0x0000, 0x3637, 0x0000, 0x0000, 0x5d75, 0x5d7a, 0x0000, 0x0000,
- 0x0000, 0x4074, 0x4771, 0x0000, 0x4867, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5d77, 0x0000, 0x4b21, 0x0000, 0x5d79,
- 0x0000, 0x5e24, 0x0000, 0x5e22, 0x0000, 0x5d7b, 0x0000, 0x0000,
- 0x0000, 0x4b22, 0x4748, 0x3563, 0x0000, 0x4525, 0x0000, 0x0000,
- 0x436d, 0x0000, 0x5e25, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e23,
- 0x4259, 0x5d76, 0x0000, 0x314b, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_6d[] = {
- /* 0x6d00 - 0x6dff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4d4e, 0x5e30, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5e2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x4076,
- 0x0000, 0x5e2c, 0x0000, 0x4d6c, 0x0000, 0x0000, 0x4636, 0x5e26,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4445, 0x0000, 0x0000,
- 0x0000, 0x314c, 0x393f, 0x5e29, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3d27, 0x5e2e, 0x0000, 0x5e2d, 0x5e28, 0x0000,
- 0x5e2b, 0x0000, 0x0000, 0x3368, 0x0000, 0x5e2a, 0x4749, 0x0000,
- 0x0000, 0x4e2e, 0x0000, 0x0000, 0x3e74, 0x4075, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5e36, 0x5e34, 0x0000, 0x494d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5e31, 0x5e33, 0x0000, 0x313a, 0x0000,
- 0x0000, 0x3940, 0x4f32, 0x0000, 0x333d, 0x0000, 0x4962, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4d61, 0x0000, 0x0000, 0x3324,
- 0x3f3b, 0x5e35, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e3a, 0x0000, 0x0000,
- 0x3e43, 0x0000, 0x0000, 0x0000, 0x4d30, 0x0000, 0x5e37, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5e32, 0x0000, 0x5e38, 0x0000, 0x0000,
- 0x0000, 0x4e5e, 0x0000, 0x4573, 0x4642, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3336,
- 0x0000, 0x0000, 0x3155, 0x0000, 0x0000, 0x5e3e, 0x0000, 0x0000,
- 0x5e41, 0x0000, 0x0000, 0x0000, 0x4e43, 0x0000, 0x0000, 0x0000,
- 0x4d64, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e48, 0x5e42, 0x5e3f,
- 0x0000, 0x0000, 0x0000, 0x4e54, 0x5e45, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3d4a, 0x5e47, 0x0000, 0x0000, 0x5e4c, 0x0000, 0x0000,
- 0x4571, 0x5e4a, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e44, 0x0000,
- 0x0000, 0x4338, 0x0000, 0x0000, 0x5e4b, 0x0000, 0x5e40, 0x0000,
- 0x5e46, 0x0000, 0x5e4d, 0x307c, 0x5e43, 0x0000, 0x5e4e, 0x0000,
- 0x0000, 0x3f3c, 0x0000, 0x3d5f, 0x0000, 0x4a25, 0x0000, 0x3a2e,
- 0x0000, 0x5e3b, 0x5e49, 0x453a, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_6e[] = {
- /* 0x6e00 - 0x6eff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4036, 0x0000, 0x3369,
- 0x3a51, 0x3e44, 0x5e3d, 0x3d42, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x374c, 0x0000, 0x5e3c, 0x0000, 0x0000,
- 0x0000, 0x5e52, 0x3d6d, 0x383a, 0x0000, 0x5e61, 0x0000, 0x5e5b,
- 0x3574, 0x454f, 0x0000, 0x5e56, 0x5e5f, 0x302f, 0x3132, 0x0000,
- 0x0000, 0x3239, 0x0000, 0x5e58, 0x422c, 0x5e4f, 0x5e51, 0x3941,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5e62, 0x0000, 0x5e5d, 0x0000, 0x0000, 0x0000, 0x5e55, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5e5c, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4c2b, 0x0000, 0x0000, 0x5e5a, 0x5e5e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3850, 0x0000,
- 0x3e45, 0x0000, 0x0000, 0x4339, 0x0000, 0x0000, 0x0000, 0x5e54,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d2f,
- 0x0000, 0x0000, 0x0000, 0x5e57, 0x0000, 0x0000, 0x5e50, 0x4572,
- 0x0000, 0x0000, 0x5e53, 0x0000, 0x0000, 0x0000, 0x5e59, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f51, 0x3c3e,
- 0x4b7e, 0x0000, 0x5e63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x482e, 0x0000, 0x0000, 0x5e6f,
- 0x383b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d60, 0x0000,
- 0x5e65, 0x0000, 0x0000, 0x0000, 0x4e2f, 0x3942, 0x0000, 0x5e72,
- 0x0000, 0x0000, 0x306e, 0x0000, 0x0000, 0x5e70, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5e64, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e6a,
- 0x0000, 0x0000, 0x5e6c, 0x0000, 0x0000, 0x0000, 0x4d4f, 0x5e67,
- 0x0000, 0x0000, 0x452e, 0x0000, 0x0000, 0x5e69, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5e71, 0x0000, 0x5e6b, 0x4c47, 0x0000, 0x0000,
- 0x0000, 0x5e66, 0x0000, 0x3c22, 0x5e7e, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x336a, 0x0000, 0x5e68, 0x5e6d, 0x5e6e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x426c, 0x425a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5e76, 0x0000, 0x0000, 0x5e7c,
- 0x0000, 0x0000, 0x5e7a, 0x0000, 0x4529, 0x0000, 0x0000, 0x5f23,
- 0x5e77, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e78, 0x5e60,
-};
-
-static unsigned short const unicode_to_jisx0208_6f[] = {
- /* 0x6f00 - 0x6fff */
- 0x0000, 0x3579, 0x493a, 0x0000, 0x0000, 0x0000, 0x3c3f, 0x0000,
- 0x0000, 0x3977, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f33,
- 0x0000, 0x5e74, 0x0000, 0x5f22, 0x3169, 0x4166, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4779, 0x0000, 0x3441, 0x4e7a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4c21, 0x4452, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5e7b, 0x5e7d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4132, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f21, 0x5e79,
- 0x0000, 0x5e73, 0x0000, 0x0000, 0x0000, 0x3443, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3769, 0x0000, 0x0000, 0x0000,
- 0x5f2f, 0x0000, 0x0000, 0x5f2a, 0x4078, 0x0000, 0x0000, 0x3363,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3d61, 0x0000, 0x5f33, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f2c, 0x442c, 0x5f29,
- 0x4459, 0x0000, 0x0000, 0x0000, 0x5f4c, 0x0000, 0x0000, 0x0000,
- 0x5f26, 0x0000, 0x5f25, 0x0000, 0x5f2e, 0x0000, 0x0000, 0x0000,
- 0x5f28, 0x5f27, 0x5f2d, 0x0000, 0x4021, 0x0000, 0x5f24, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f30, 0x0000,
- 0x0000, 0x5f31, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3442,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5f36, 0x0000, 0x5f35, 0x5f37, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5f3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4543, 0x0000, 0x5f34, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5f38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3763, 0x4279, 0x5f32, 0x473b, 0x0000, 0x0000, 0x5f39, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5f3e, 0x5f3c, 0x0000, 0x0000,
- 0x5f3f, 0x0000, 0x0000, 0x5f42, 0x0000, 0x0000, 0x0000, 0x5f3b,
- 0x396a, 0x4728, 0x0000, 0x0000, 0x5e39, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4d74, 0x5f3d, 0x0000, 0x5f41, 0x4275,
- 0x0000, 0x5f40, 0x0000, 0x5f2b, 0x0000, 0x0000, 0x6f69, 0x0000,
- 0x0000, 0x0000, 0x5f45, 0x0000, 0x0000, 0x0000, 0x5f49, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_70[] = {
- /* 0x7000 - 0x70ff */
- 0x0000, 0x5f47, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5f43, 0x0000, 0x5f44, 0x0000, 0x0000, 0x0000, 0x5f48,
- 0x0000, 0x5f46, 0x0000, 0x0000, 0x0000, 0x494e, 0x0000, 0x0000,
- 0x5f4e, 0x0000, 0x5f4b, 0x5f4a, 0x0000, 0x5f4d, 0x4654, 0x5f4f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4375, 0x426d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4025, 0x0000, 0x0000, 0x0000,
- 0x5f50, 0x0000, 0x5f52, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f51, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5e75, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5f53, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4667, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5f54, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3250, 0x0000, 0x0000, 0x0000, 0x4574,
- 0x3325, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3564, 0x0000, 0x0000, 0x0000, 0x3c5e, 0x3a52, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4f27, 0x3f66, 0x0000, 0x0000, 0x0000, 0x316a, 0x0000,
- 0x0000, 0x0000, 0x5f56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5f55, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5f59, 0x433a, 0x5f5c, 0x5f57,
- 0x0000, 0x0000, 0x0000, 0x5f5b, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5f5a, 0x4540, 0x3059, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4e75, 0x0000, 0x0000, 0x5f5e, 0x0000, 0x0000, 0x0000, 0x3128,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5f60, 0x0000, 0x0000, 0x0000, 0x5f5f, 0x0000, 0x5f5d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5f58, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4b23, 0x0000, 0x0000, 0x0000, 0x5f62, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_71[] = {
- /* 0x7100 - 0x71ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5f61, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x316b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5f64, 0x4a32, 0x0000, 0x5f63, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4c35, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e47, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4133, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3e46, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4e7b, 0x0000, 0x0000, 0x5f6a, 0x0000, 0x4079, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f66, 0x5f6b, 0x0000,
- 0x0000, 0x316c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5f69, 0x0000, 0x4761, 0x5f65, 0x5f68, 0x3e48,
- 0x0000, 0x4851, 0x0000, 0x0000, 0x5f6c, 0x0000, 0x3c51, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x407a, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5f6f, 0x0000, 0x0000, 0x0000,
- 0x5f67, 0x0000, 0x3727, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f6d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4d50, 0x5f70, 0x0000, 0x0000,
- 0x0000, 0x7426, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d4f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5f71, 0x0000, 0x0000, 0x0000, 0x5f72, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x472e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5f74, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f75, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4733, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4575, 0x5f77, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f79, 0x0000,
- 0x4e55, 0x0000, 0x5f76, 0x0000, 0x5f78, 0x316d, 0x0000, 0x5f73,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x535b,
- 0x5f7a, 0x0000, 0x0000, 0x0000, 0x0000, 0x4167, 0x3b38, 0x5f7c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5f7b, 0x3f24, 0x5259, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f7d, 0x0000, 0x0000,
- 0x0000, 0x6021, 0x0000, 0x5f6e, 0x5f7e, 0x0000, 0x0000, 0x6022,
-};
-
-static unsigned short const unicode_to_jisx0208_72[] = {
- /* 0x7200 - 0x72ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x477a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6023, 0x0000, 0x0000,
- 0x6024, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6025, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6026, 0x0000, 0x445e, 0x0000, 0x6028, 0x6027, 0x0000, 0x0000,
- 0x6029, 0x0000, 0x602a, 0x0000, 0x0000, 0x3c5f, 0x4963, 0x0000,
- 0x0000, 0x0000, 0x4c6c, 0x602b, 0x602c, 0x4156, 0x3c24, 0x602d,
- 0x602e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x602f, 0x4a52,
- 0x4847, 0x0000, 0x0000, 0x6030, 0x4757, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x442d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6031, 0x3267, 0x0000, 0x356d, 0x0000, 0x4c46, 0x0000, 0x4c36,
- 0x0000, 0x3234, 0x4f34, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b52,
- 0x0000, 0x4a2a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4037, 0x0000, 0x6032, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4643, 0x0000, 0x0000, 0x0000, 0x3823, 0x6033, 0x0000,
- 0x3a54, 0x6035, 0x6034, 0x0000, 0x0000, 0x0000, 0x0000, 0x6036,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6037, 0x0000, 0x0000, 0x0000, 0x6038, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x353e, 0x0000, 0x6039, 0x0000, 0x0000, 0x0000, 0x0000, 0x603a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3824, 0x0000, 0x0000, 0x4848,
- 0x0000, 0x0000, 0x603c, 0x0000, 0x0000, 0x0000, 0x3e75, 0x0000,
- 0x0000, 0x603b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3638, 0x603d, 0x603f, 0x0000, 0x603e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6040, 0x0000,
- 0x3851, 0x0000, 0x6041, 0x0000, 0x0000, 0x0000, 0x0000, 0x3669,
- 0x0000, 0x4140, 0x0000, 0x397d, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6043, 0x6044, 0x6042, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3c6d, 0x0000, 0x0000, 0x4648, 0x3639, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6046,
- 0x432c, 0x6045, 0x0000, 0x0000, 0x4f35, 0x4762, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_73[] = {
- /* 0x7300 - 0x73ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x604b, 0x6048,
- 0x0000, 0x0000, 0x0000, 0x4c54, 0x604a, 0x604c, 0x0000, 0x4e44,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6050, 0x0000, 0x0000,
- 0x0000, 0x604f, 0x4376, 0x472d, 0x0000, 0x0000, 0x3825, 0x604e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x604d, 0x0000, 0x4d31, 0x4d32,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6051, 0x316e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3976, 0x3b62, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6052, 0x6053,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6055,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3d43, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6057, 0x0000, 0x6056, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6058, 0x0000, 0x334d, 0x0000, 0x0000, 0x605a, 0x0000, 0x0000,
- 0x6059, 0x0000, 0x605c, 0x605b, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x383c, 0x0000, 0x0000, 0x4e28,
- 0x0000, 0x364c, 0x0000, 0x3226, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x366a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3461, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4e68, 0x605e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6061, 0x0000, 0x3251, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x605d, 0x0000, 0x3b39, 0x0000, 0x0000, 0x4441, 0x605f, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6064, 0x0000,
- 0x3c6e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6062, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x373e, 0x0000, 0x0000, 0x4849, 0x6063, 0x0000,
- 0x0000, 0x607e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6069, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x383d, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_74[] = {
- /* 0x7400 - 0x74ff */
- 0x0000, 0x0000, 0x0000, 0x3565, 0x0000, 0x6066, 0x4d7d, 0x0000,
- 0x0000, 0x4e30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4276, 0x0000, 0x0000, 0x6068, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x606a, 0x4e56, 0x3657, 0x487c, 0x474a, 0x0000,
- 0x0000, 0x0000, 0x606b, 0x0000, 0x0000, 0x0000, 0x0000, 0x606d,
- 0x0000, 0x6070, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x606c, 0x0000, 0x0000,
- 0x0000, 0x606f, 0x386a, 0x314d, 0x6071, 0x0000, 0x3f70, 0x606e,
- 0x4e5c, 0x0000, 0x0000, 0x6074, 0x7424, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6072, 0x6075, 0x0000, 0x0000, 0x0000, 0x0000, 0x6067,
- 0x6073, 0x0000, 0x0000, 0x3a3c, 0x0000, 0x0000, 0x6076, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6077, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4d7e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6078, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6079, 0x0000,
- 0x0000, 0x0000, 0x6065, 0x0000, 0x0000, 0x0000, 0x0000, 0x607a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3444, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c25, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x607b, 0x0000, 0x0000, 0x0000, 0x0000, 0x607c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x607d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x313b, 0x0000, 0x0000, 0x0000,
- 0x6121, 0x0000, 0x493b, 0x6122, 0x0000, 0x0000, 0x3424, 0x6123,
- 0x0000, 0x6124, 0x0000, 0x0000, 0x0000, 0x0000, 0x6125, 0x0000,
- 0x6127, 0x6128, 0x6126, 0x0000, 0x0000, 0x0000, 0x4953, 0x612a,
- 0x6129, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_75[] = {
- /* 0x7500 - 0x75ff */
- 0x0000, 0x0000, 0x0000, 0x612c, 0x612b, 0x612d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x612e, 0x6130, 0x612f, 0x0000,
- 0x0000, 0x3979, 0x0000, 0x6132, 0x0000, 0x6131, 0x0000, 0x0000,
- 0x3445, 0x0000, 0x3f53, 0x0000, 0x453c, 0x0000, 0x6133, 0x4038,
- 0x0000, 0x0000, 0x0000, 0x3b3a, 0x0000, 0x3179, 0x6134, 0x0000,
- 0x4d51, 0x0000, 0x0000, 0x4a63, 0x6135, 0x0000, 0x0000, 0x0000,
- 0x4544, 0x4d33, 0x3943, 0x3f3d, 0x0000, 0x0000, 0x0000, 0x434b,
- 0x5234, 0x0000, 0x442e, 0x3268, 0x6136, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6137, 0x0000, 0x613c, 0x0000,
- 0x0000, 0x613a, 0x6139, 0x5a42, 0x3326, 0x6138, 0x0000, 0x305a,
- 0x0000, 0x482a, 0x0000, 0x0000, 0x484a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4e31, 0x613d, 0x613b, 0x435c, 0x4026, 0x0000, 0x0000,
- 0x482b, 0x0000, 0x492d, 0x0000, 0x613f, 0x4e2c, 0x374d, 0x6140,
- 0x0000, 0x613e, 0x4856, 0x6141, 0x0000, 0x6142, 0x0000, 0x0000,
- 0x305b, 0x0000, 0x0000, 0x3e76, 0x6147, 0x0000, 0x6144, 0x466d,
- 0x6143, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3526,
- 0x0000, 0x0000, 0x614a, 0x0000, 0x0000, 0x0000, 0x6145, 0x6146,
- 0x0000, 0x6149, 0x6148, 0x4925, 0x0000, 0x0000, 0x4142, 0x4141,
- 0x0000, 0x353f, 0x0000, 0x0000, 0x614b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x614c, 0x0000, 0x0000, 0x614d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x614f, 0x0000, 0x614e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3156, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6157, 0x4868, 0x6151, 0x0000, 0x6153, 0x0000, 0x0000,
- 0x6155, 0x3f3e, 0x0000, 0x0000, 0x6156, 0x6154, 0x3c40, 0x0000,
- 0x0000, 0x0000, 0x6150, 0x6152, 0x0000, 0x4942, 0x0000, 0x3e49,
- 0x0000, 0x0000, 0x6159, 0x0000, 0x0000, 0x6158, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x615a, 0x0000, 0x3c26, 0x3a2f, 0x0000, 0x0000,
- 0x4577, 0x615b, 0x0000, 0x444b, 0x0000, 0x0000, 0x615d, 0x0000,
- 0x0000, 0x0000, 0x4e21, 0x615c, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4169, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6162, 0x0000, 0x6164, 0x6165, 0x4354, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6163, 0x0000, 0x6160, 0x0000, 0x615e, 0x615f,
-};
-
-static unsigned short const unicode_to_jisx0208_76[] = {
- /* 0x7600 - 0x76ff */
- 0x0000, 0x6161, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6168, 0x0000, 0x6166, 0x0000, 0x6167, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6169,
- 0x616b, 0x616c, 0x616d, 0x0000, 0x616e, 0x0000, 0x0000, 0x616a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6170, 0x0000, 0x0000, 0x0000, 0x616f, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6171, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4e45, 0x0000, 0x0000, 0x0000, 0x6174, 0x6172,
- 0x6173, 0x0000, 0x0000, 0x0000, 0x3462, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4c7e, 0x0000, 0x0000, 0x0000, 0x4a4a, 0x0000,
- 0x6176, 0x0000, 0x0000, 0x0000, 0x6175, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6177, 0x6178, 0x0000, 0x0000, 0x0000, 0x0000, 0x617c,
- 0x6179, 0x617a, 0x617b, 0x0000, 0x617d, 0x0000, 0x0000, 0x0000,
- 0x617e, 0x0000, 0x6221, 0x0000, 0x0000, 0x0000, 0x6222, 0x0000,
- 0x6223, 0x0000, 0x482f, 0x4550, 0x6224, 0x4772, 0x4934, 0x0000,
- 0x6225, 0x0000, 0x0000, 0x6226, 0x452a, 0x0000, 0x3327, 0x3944,
- 0x6227, 0x0000, 0x0000, 0x6228, 0x0000, 0x0000, 0x6229, 0x0000,
- 0x3b29, 0x0000, 0x0000, 0x622b, 0x0000, 0x0000, 0x622a, 0x0000,
- 0x0000, 0x622c, 0x622d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4869, 0x0000,
- 0x622e, 0x0000, 0x0000, 0x0000, 0x622f, 0x0000, 0x0000, 0x7369,
- 0x6230, 0x6231, 0x6232, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b2e,
- 0x0000, 0x0000, 0x6233, 0x4756, 0x0000, 0x0000, 0x4b5f, 0x0000,
- 0x314e, 0x0000, 0x3157, 0x0000, 0x0000, 0x6234, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6236, 0x0000, 0x0000, 0x0000, 0x6235, 0x4570,
- 0x0000, 0x0000, 0x0000, 0x4039, 0x5d39, 0x0000, 0x6237, 0x4c41,
- 0x0000, 0x6238, 0x0000, 0x3446, 0x4857, 0x6239, 0x0000, 0x623a,
- 0x0000, 0x0000, 0x623b, 0x0000, 0x0000, 0x0000, 0x4c5c, 0x0000,
- 0x0000, 0x0000, 0x4c55, 0x0000, 0x443e, 0x0000, 0x0000, 0x0000,
- 0x416a, 0x0000, 0x0000, 0x623d, 0x0000, 0x0000, 0x3d62, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_77[] = {
- /* 0x7700 - 0x77ff */
- 0x0000, 0x3e4a, 0x0000, 0x0000, 0x6240, 0x0000, 0x0000, 0x623f,
- 0x623e, 0x487d, 0x0000, 0x3447, 0x3829, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6246, 0x0000, 0x0000, 0x6243, 0x3f3f,
- 0x4c32, 0x0000, 0x0000, 0x0000, 0x6242, 0x6244, 0x6245, 0x0000,
- 0x0000, 0x6241, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6247,
- 0x6248, 0x0000, 0x442f, 0x0000, 0x3463, 0x0000, 0x0000, 0x0000,
- 0x4365, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6249,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x624a, 0x624d, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3f67, 0x0000, 0x4644, 0x0000, 0x624e, 0x4b53, 0x0000,
- 0x624b, 0x0000, 0x0000, 0x624c, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6251, 0x0000, 0x0000, 0x0000, 0x0000, 0x6250, 0x624f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6253, 0x0000, 0x0000, 0x6252, 0x0000,
- 0x0000, 0x6254, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6256, 0x0000,
- 0x6255, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a4d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3d56, 0x4e46, 0x0000, 0x0000,
- 0x6257, 0x0000, 0x0000, 0x4637, 0x0000, 0x0000, 0x6258, 0x0000,
- 0x0000, 0x6259, 0x0000, 0x625d, 0x625b, 0x625c, 0x0000, 0x625a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x625e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x625f, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6260,
- 0x0000, 0x0000, 0x6261, 0x4c37, 0x6262, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4c70, 0x6263, 0x0000, 0x434e, 0x0000, 0x476a,
- 0x0000, 0x366b, 0x0000, 0x0000, 0x0000, 0x433b, 0x6264, 0x363a,
- 0x0000, 0x0000, 0x0000, 0x4050, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6265, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_78[] = {
- /* 0x7800 - 0x78ff */
- 0x0000, 0x0000, 0x3a3d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6266, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6267, 0x0000, 0x3826, 0x3a55, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6269, 0x0000, 0x0000, 0x0000, 0x0000, 0x4556, 0x3a56, 0x354e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4b24, 0x0000, 0x474b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4557, 0x0000, 0x0000, 0x0000, 0x0000, 0x395c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x626b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e4b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4e32, 0x3945, 0x0000, 0x0000, 0x3827,
- 0x0000, 0x0000, 0x4823, 0x0000, 0x626d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x626f, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x386b, 0x0000, 0x0000, 0x0000, 0x0000, 0x626e, 0x4476,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6271, 0x3337, 0x626c, 0x0000,
- 0x0000, 0x486a, 0x0000, 0x3130, 0x0000, 0x3a6c, 0x0000, 0x4f52,
- 0x0000, 0x0000, 0x6270, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6272, 0x0000, 0x0000, 0x0000, 0x4a4b,
- 0x0000, 0x4059, 0x6274, 0x0000, 0x0000, 0x0000, 0x0000, 0x6275,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6273, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x334e, 0x0000, 0x627b, 0x0000, 0x627a, 0x0000,
- 0x0000, 0x3c27, 0x0000, 0x0000, 0x0000, 0x627c, 0x6277, 0x0000,
- 0x0000, 0x0000, 0x627d, 0x6278, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4858, 0x6276, 0x0000, 0x0000, 0x6279, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6322, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6321,
- 0x4b61, 0x0000, 0x0000, 0x0000, 0x627e, 0x0000, 0x0000, 0x306b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6324, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6323, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_79[] = {
- /* 0x7900 - 0x79ff */
- 0x0000, 0x3e4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6325,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4143, 0x0000,
- 0x0000, 0x6327, 0x6326, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6328, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6268, 0x0000,
- 0x0000, 0x0000, 0x626a, 0x632a, 0x6329, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3c28, 0x0000, 0x4e69, 0x0000, 0x3c52, 0x0000,
- 0x632b, 0x3737, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3540,
- 0x3527, 0x3b63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4d34, 0x0000, 0x0000, 0x6331, 0x0000, 0x6330, 0x4144, 0x632d,
- 0x0000, 0x0000, 0x632f, 0x0000, 0x0000, 0x3d4b, 0x3f40, 0x632e,
- 0x632c, 0x0000, 0x472a, 0x0000, 0x0000, 0x3e4d, 0x0000, 0x0000,
- 0x493c, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a57, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4578,
- 0x0000, 0x0000, 0x6332, 0x0000, 0x0000, 0x0000, 0x0000, 0x6333,
- 0x6349, 0x3658, 0x0000, 0x0000, 0x4f3d, 0x4135, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6334, 0x0000, 0x0000, 0x3252, 0x4477, 0x4a21,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6335, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x357a, 0x6336,
- 0x0000, 0x0000, 0x6338, 0x0000, 0x0000, 0x0000, 0x6339, 0x0000,
- 0x4729, 0x0000, 0x0000, 0x633a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x633b, 0x633c, 0x0000, 0x0000, 0x3659, 0x3253, 0x4645,
- 0x3d28, 0x3b64, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x633d, 0x0000, 0x3d29, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x324a, 0x4943, 0x0000, 0x0000, 0x633e, 0x0000, 0x0000,
- 0x486b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4145,
- 0x0000, 0x6341, 0x0000, 0x6342, 0x4769, 0x0000, 0x3f41, 0x633f,
- 0x0000, 0x4361, 0x0000, 0x0000, 0x6340, 0x0000, 0x0000, 0x0000,
- 0x3e4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x305c, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_7a[] = {
- /* 0x7a00 - 0x7aff */
- 0x3529, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6343, 0x0000, 0x0000, 0x4478, 0x0000, 0x6344, 0x4047, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4c2d, 0x0000, 0x0000, 0x4923,
- 0x6345, 0x6346, 0x4355, 0x0000, 0x4e47, 0x0000, 0x0000, 0x6348,
- 0x6347, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c6f, 0x0000,
- 0x0000, 0x634a, 0x3070, 0x0000, 0x0000, 0x0000, 0x0000, 0x634d,
- 0x0000, 0x0000, 0x0000, 0x634b, 0x3254, 0x374e, 0x634c, 0x3946,
- 0x3972, 0x0000, 0x4a66, 0x634e, 0x0000, 0x0000, 0x4b54, 0x0000,
- 0x0000, 0x6350, 0x0000, 0x0000, 0x0000, 0x4051, 0x314f, 0x323a,
- 0x302c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x634f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6351, 0x6352, 0x3e77, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6353, 0x0000, 0x334f, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6355, 0x0000, 0x0000, 0x0000, 0x376a, 0x0000, 0x3566, 0x0000,
- 0x0000, 0x6356, 0x3675, 0x0000, 0x0000, 0x6357, 0x0000, 0x407c,
- 0x0000, 0x464d, 0x0000, 0x4060, 0x3a75, 0x0000, 0x0000, 0x0000,
- 0x6358, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4362, 0x416b, 0x0000, 0x635a, 0x635c, 0x6359,
- 0x635b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3722,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x635d, 0x3726, 0x0000, 0x0000, 0x0000, 0x3567, 0x4d52,
- 0x635f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6360, 0x0000,
- 0x0000, 0x0000, 0x312e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6363,
- 0x0000, 0x0000, 0x0000, 0x3376, 0x6362, 0x6361, 0x0000, 0x6365,
- 0x635e, 0x0000, 0x6366, 0x4e29, 0x0000, 0x6367, 0x0000, 0x6368,
- 0x0000, 0x0000, 0x5474, 0x636a, 0x0000, 0x6369, 0x0000, 0x0000,
- 0x0000, 0x636b, 0x636c, 0x0000, 0x4e35, 0x636d, 0x0000, 0x706f,
- 0x3e4f, 0x636e, 0x636f, 0x3d57, 0x0000, 0x4638, 0x6370, 0x0000,
- 0x0000, 0x0000, 0x4328, 0x0000, 0x0000, 0x6371, 0x0000, 0x433c,
- 0x6372, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3625, 0x0000,
- 0x513f, 0x435d, 0x3c33, 0x0000, 0x0000, 0x0000, 0x0000, 0x3448,
-};
-
-static unsigned short const unicode_to_jisx0208_7b[] = {
- /* 0x7b00 - 0x7bff */
- 0x0000, 0x0000, 0x6373, 0x0000, 0x6422, 0x0000, 0x6376, 0x0000,
- 0x3568, 0x0000, 0x6375, 0x6424, 0x0000, 0x0000, 0x0000, 0x6374,
- 0x0000, 0x3e50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6378, 0x6379, 0x0000, 0x452b, 0x0000, 0x0000, 0x637a, 0x0000,
- 0x335e, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f5a, 0x4964, 0x0000,
- 0x637c, 0x0000, 0x0000, 0x0000, 0x4268, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6377, 0x0000, 0x637b, 0x637d, 0x0000,
- 0x0000, 0x3a7b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6426, 0x492e, 0x0000,
- 0x4826, 0x4579, 0x0000, 0x365a, 0x6425, 0x6423, 0x0000, 0x4835,
- 0x637e, 0x435e, 0x457b, 0x0000, 0x457a, 0x0000, 0x3a76, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6438, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6428, 0x0000, 0x642a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x642d, 0x0000, 0x642e, 0x0000,
- 0x642b, 0x642c, 0x0000, 0x0000, 0x6429, 0x6427, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a4f, 0x3255,
- 0x0000, 0x0000, 0x0000, 0x6435, 0x0000, 0x6432, 0x0000, 0x6437,
- 0x0000, 0x0000, 0x6436, 0x0000, 0x4773, 0x4c27, 0x0000, 0x3b3b,
- 0x6430, 0x6439, 0x6434, 0x0000, 0x6433, 0x642f, 0x0000, 0x6431,
- 0x0000, 0x3449, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x433d, 0x0000, 0x0000, 0x407d, 0x0000, 0x0000,
- 0x0000, 0x4822, 0x0000, 0x0000, 0x643e, 0x0000, 0x0000, 0x0000,
- 0x4824, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4061, 0x643b, 0x0000, 0x0000, 0x484f, 0x0000, 0x643f, 0x4a53,
- 0x0000, 0x435b, 0x0000, 0x643a, 0x643c, 0x0000, 0x0000, 0x643d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6440, 0x0000, 0x0000,
- 0x3c44, 0x0000, 0x0000, 0x0000, 0x4646, 0x6445, 0x6444, 0x0000,
- 0x0000, 0x6441, 0x0000, 0x0000, 0x0000, 0x4f36, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x644a, 0x0000, 0x0000, 0x644e, 0x644b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_7c[] = {
- /* 0x7c00 - 0x7cff */
- 0x6447, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6448,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x644d, 0x0000, 0x0000,
- 0x0000, 0x6442, 0x5255, 0x6449, 0x6443, 0x0000, 0x0000, 0x644c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6452,
- 0x0000, 0x344a, 0x0000, 0x644f, 0x0000, 0x0000, 0x0000, 0x6450,
- 0x0000, 0x0000, 0x6451, 0x6454, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6453,
- 0x4876, 0x0000, 0x0000, 0x0000, 0x0000, 0x6455, 0x4e7c, 0x4a6d,
- 0x645a, 0x0000, 0x0000, 0x6457, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6456, 0x4052, 0x0000, 0x6459,
- 0x645b, 0x0000, 0x0000, 0x0000, 0x6458, 0x0000, 0x645f, 0x0000,
- 0x645c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x645d,
- 0x6446, 0x0000, 0x0000, 0x0000, 0x645e, 0x6460, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6461, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4a46, 0x0000, 0x6462, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c62, 0x0000,
- 0x0000, 0x364e, 0x3729, 0x6463, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4a34, 0x0000, 0x3f68, 0x0000, 0x4c30, 0x0000, 0x0000,
- 0x6464, 0x0000, 0x4e33, 0x0000, 0x0000, 0x4774, 0x0000, 0x4146,
- 0x4734, 0x0000, 0x0000, 0x3d4d, 0x0000, 0x0000, 0x0000, 0x3040,
- 0x0000, 0x6469, 0x6467, 0x0000, 0x6465, 0x3421, 0x0000, 0x3e51,
- 0x646a, 0x0000, 0x0000, 0x6468, 0x0000, 0x6466, 0x646e, 0x0000,
- 0x0000, 0x646d, 0x646c, 0x646b, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x646f, 0x0000, 0x0000, 0x0000, 0x6470, 0x403a, 0x0000,
- 0x6471, 0x0000, 0x6473, 0x0000, 0x0000, 0x6472, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3852, 0x0000, 0x0000, 0x0000, 0x4138, 0x0000,
- 0x0000, 0x0000, 0x6475, 0x0000, 0x0000, 0x0000, 0x457c, 0x0000,
- 0x6474, 0x0000, 0x0000, 0x0000, 0x6476, 0x0000, 0x4a35, 0x416c,
- 0x3947, 0x0000, 0x6477, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e48,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6479,
- 0x0000, 0x0000, 0x647a, 0x0000, 0x647b, 0x0000, 0x647c, 0x0000,
- 0x3b65, 0x0000, 0x647d, 0x374f, 0x0000, 0x0000, 0x356a, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_7d[] = {
- /* 0x7d00 - 0x7dff */
- 0x352a, 0x0000, 0x6521, 0x0000, 0x4c73, 0x3948, 0x647e, 0x0000,
- 0x0000, 0x0000, 0x6524, 0x4c66, 0x0000, 0x473c, 0x0000, 0x0000,
- 0x4933, 0x0000, 0x0000, 0x0000, 0x3d63, 0x6523, 0x0000, 0x3c53,
- 0x3949, 0x3b66, 0x3569, 0x4a36, 0x6522, 0x0000, 0x0000, 0x0000,
- 0x4147, 0x4b42, 0x3a77, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3b67, 0x445d, 0x0000, 0x6527, 0x4e5f,
- 0x3a59, 0x0000, 0x6528, 0x3f42, 0x0000, 0x652a, 0x0000, 0x0000,
- 0x0000, 0x3e52, 0x3a30, 0x0000, 0x0000, 0x0000, 0x0000, 0x6529,
- 0x0000, 0x0000, 0x3d2a, 0x383e, 0x4148, 0x6525, 0x652b, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6526, 0x3750, 0x0000, 0x652e, 0x6532,
- 0x376b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x652d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6536, 0x0000, 0x0000, 0x394a, 0x0000,
- 0x0000, 0x4d6d, 0x303c, 0x6533, 0x0000, 0x0000, 0x356b, 0x0000,
- 0x6530, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6531, 0x0000,
- 0x0000, 0x457d, 0x652f, 0x652c, 0x0000, 0x3328, 0x4064, 0x0000,
- 0x0000, 0x3828, 0x0000, 0x0000, 0x0000, 0x6538, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6535, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6537,
- 0x0000, 0x0000, 0x0000, 0x6534, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3751, 0x4233, 0x6539, 0x416e, 0x0000, 0x0000, 0x6546,
- 0x0000, 0x0000, 0x6542, 0x653c, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6540, 0x3c7a, 0x305d, 0x653b, 0x6543,
- 0x6547, 0x394b, 0x4c56, 0x0000, 0x4456, 0x653d, 0x0000, 0x0000,
- 0x6545, 0x0000, 0x653a, 0x433e, 0x0000, 0x653f, 0x303d, 0x4c4a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x653e,
- 0x0000, 0x0000, 0x365b, 0x486c, 0x0000, 0x0000, 0x0000, 0x416d,
- 0x0000, 0x4e50, 0x3d6f, 0x0000, 0x0000, 0x656e, 0x0000, 0x0000,
- 0x6548, 0x0000, 0x407e, 0x0000, 0x6544, 0x6549, 0x654b, 0x0000,
- 0x4479, 0x654e, 0x0000, 0x0000, 0x654a, 0x0000, 0x0000, 0x0000,
- 0x4a54, 0x344b, 0x0000, 0x0000, 0x4c4b, 0x0000, 0x0000, 0x305e,
- 0x0000, 0x0000, 0x654d, 0x0000, 0x4e7d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x654c, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_7e[] = {
- /* 0x7e00 - 0x7eff */
- 0x0000, 0x316f, 0x0000, 0x0000, 0x466c, 0x654f, 0x0000, 0x0000,
- 0x0000, 0x6556, 0x6550, 0x6557, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6553, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x477b, 0x0000, 0x0000, 0x3c4a, 0x6555,
- 0x0000, 0x6552, 0x6558, 0x6551, 0x0000, 0x0000, 0x3d44, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4b25, 0x0000, 0x0000, 0x3d4c, 0x0000,
- 0x0000, 0x6554, 0x6560, 0x0000, 0x0000, 0x655c, 0x0000, 0x655f,
- 0x0000, 0x655d, 0x6561, 0x655b, 0x0000, 0x6541, 0x4053, 0x0000,
- 0x0000, 0x484b, 0x0000, 0x655e, 0x0000, 0x0000, 0x6559, 0x0000,
- 0x0000, 0x0000, 0x4121, 0x3752, 0x0000, 0x3d2b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3f25, 0x4136, 0x6564, 0x0000,
- 0x0000, 0x6566, 0x6567, 0x0000, 0x0000, 0x6563, 0x6565, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x655a, 0x6562,
- 0x0000, 0x656a, 0x6569, 0x0000, 0x0000, 0x4b7a, 0x0000, 0x0000,
- 0x372b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6568, 0x0000, 0x656c, 0x656b, 0x656f, 0x0000, 0x6571,
- 0x0000, 0x0000, 0x3b3c, 0x656d, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6572, 0x6573, 0x0000, 0x0000, 0x6574, 0x0000, 0x657a, 0x453b,
- 0x6576, 0x0000, 0x6575, 0x6577, 0x6578, 0x0000, 0x6579, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x657b, 0x657c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_7f[] = {
- /* 0x7f00 - 0x7fff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x344c, 0x0000,
- 0x657d, 0x0000, 0x657e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6621, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6622, 0x6623, 0x6624, 0x0000,
- 0x6625, 0x6626, 0x0000, 0x0000, 0x6628, 0x6627, 0x0000, 0x0000,
- 0x6629, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x662a,
- 0x662b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x662e,
- 0x662c, 0x662d, 0x3a61, 0x3753, 0x0000, 0x0000, 0x4356, 0x0000,
- 0x4833, 0x0000, 0x3d70, 0x0000, 0x0000, 0x474d, 0x0000, 0x486d,
- 0x662f, 0x586d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6630, 0x6632, 0x0000, 0x4d65, 0x6631, 0x6634,
- 0x6633, 0x0000, 0x4d53, 0x0000, 0x6635, 0x0000, 0x487e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6636, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6639, 0x0000, 0x0000, 0x6638, 0x6637, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x663a, 0x3732, 0x0000, 0x0000, 0x0000,
- 0x4122, 0x3541, 0x0000, 0x0000, 0x0000, 0x0000, 0x663e, 0x663b,
- 0x0000, 0x0000, 0x663c, 0x0000, 0x0000, 0x0000, 0x663f, 0x0000,
- 0x6640, 0x663d, 0x0000, 0x0000, 0x0000, 0x3129, 0x0000, 0x0000,
- 0x0000, 0x3227, 0x0000, 0x0000, 0x0000, 0x6642, 0x6643, 0x0000,
- 0x0000, 0x0000, 0x6644, 0x0000, 0x4d62, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3d2c, 0x0000, 0x6646, 0x6645, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3f69, 0x6647, 0x0000, 0x0000, 0x0000, 0x0000, 0x6648, 0x0000,
- 0x0000, 0x6649, 0x0000, 0x3465, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x344d, 0x0000, 0x0000, 0x664a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x664b, 0x0000, 0x4b5d, 0x4d63, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_80[] = {
- /* 0x8000 - 0x80ff */
- 0x4d54, 0x4f37, 0x0000, 0x394d, 0x664e, 0x3c54, 0x664d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x664f, 0x3c29, 0x0000, 0x0000, 0x0000,
- 0x4251, 0x0000, 0x6650, 0x0000, 0x0000, 0x394c, 0x0000, 0x4c57,
- 0x6651, 0x6652, 0x0000, 0x0000, 0x6653, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6654, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6655, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3c2a, 0x0000, 0x0000, 0x4c6d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6657, 0x0000, 0x433f, 0x0000, 0x6656,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6659, 0x0000,
- 0x0000, 0x0000, 0x6658, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x665a, 0x0000, 0x0000, 0x0000, 0x403b, 0x0000,
- 0x665b, 0x0000, 0x665c, 0x0000, 0x0000, 0x0000, 0x4a39, 0x665d,
- 0x0000, 0x416f, 0x665e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x665f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e7e,
- 0x6662, 0x0000, 0x6661, 0x6660, 0x4430, 0x0000, 0x6663, 0x3f26,
- 0x0000, 0x6664, 0x0000, 0x0000, 0x0000, 0x6665, 0x4f38, 0x6666,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6667, 0x6669, 0x6668, 0x4825,
- 0x0000, 0x4679, 0x0000, 0x4f3e, 0x4829, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x666b, 0x0000, 0x0000, 0x3e53, 0x0000,
- 0x492a, 0x0000, 0x666c, 0x666a, 0x0000, 0x344e, 0x0000, 0x0000,
- 0x0000, 0x3854, 0x3b68, 0x0000, 0x0000, 0x486e, 0x0000, 0x0000,
- 0x0000, 0x382a, 0x4b43, 0x0000, 0x666f, 0x666d, 0x0000, 0x394e,
- 0x0000, 0x394f, 0x3069, 0x0000, 0x3a68, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4759, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x305f, 0x6674, 0x0000, 0x4340, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4758, 0x0000, 0x425b, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6676, 0x0000,
- 0x0000, 0x6672, 0x6675, 0x6670, 0x0000, 0x6673, 0x4b26, 0x0000,
- 0x0000, 0x3855, 0x0000, 0x0000, 0x307d, 0x6671, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6678,
- 0x0000, 0x6679, 0x0000, 0x0000, 0x4639, 0x0000, 0x0000, 0x0000,
- 0x363b, 0x0000, 0x0000, 0x0000, 0x6726, 0x473d, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_81[] = {
- /* 0x8100 - 0x81ff */
- 0x0000, 0x0000, 0x3b69, 0x0000, 0x0000, 0x363c, 0x4048, 0x4f46,
- 0x4c2e, 0x6677, 0x4054, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3553, 0x667a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x667c, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x667b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x667d,
- 0x0000, 0x4326, 0x0000, 0x473e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4431, 0x0000, 0x0000, 0x0000, 0x0000, 0x6723, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6722, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x667e, 0x0000, 0x0000, 0x3f55, 0x0000,
- 0x4965, 0x6725, 0x0000, 0x6724, 0x3950, 0x4f53, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6735,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6729, 0x672a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3c70, 0x0000, 0x0000, 0x6728, 0x0000,
- 0x3978, 0x6727, 0x0000, 0x0000, 0x672b, 0x0000, 0x0000, 0x0000,
- 0x4432, 0x4a22, 0x4123, 0x0000, 0x0000, 0x0000, 0x0000, 0x425c,
- 0x672f, 0x0000, 0x6730, 0x672c, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x672d, 0x0000, 0x672e, 0x0000, 0x0000, 0x0000, 0x0000, 0x3951,
- 0x0000, 0x0000, 0x0000, 0x6736, 0x0000, 0x6732, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4966, 0x0000, 0x4b6c, 0x4928, 0x0000, 0x0000,
- 0x6731, 0x0000, 0x0000, 0x6734, 0x6733, 0x0000, 0x0000, 0x0000,
- 0x4b44, 0x6737, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6738, 0x0000, 0x0000, 0x4137, 0x0000, 0x6739, 0x0000, 0x0000,
- 0x673b, 0x0000, 0x673f, 0x0000, 0x0000, 0x673c, 0x673a, 0x473f,
- 0x673d, 0x0000, 0x673e, 0x0000, 0x0000, 0x0000, 0x3232, 0x0000,
- 0x6745, 0x6740, 0x0000, 0x0000, 0x0000, 0x6741, 0x0000, 0x0000,
- 0x0000, 0x6742, 0x0000, 0x4221, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6744, 0x6743, 0x6746, 0x0000, 0x0000, 0x0000, 0x0000, 0x6747,
- 0x6748, 0x0000, 0x0000, 0x3f43, 0x0000, 0x3269, 0x0000, 0x6749,
- 0x4e57, 0x0000, 0x3c2b, 0x0000, 0x0000, 0x3d2d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3b6a, 0x4357, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x674a, 0x674b, 0x3131, 0x0000, 0x674c, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_82[] = {
- /* 0x8200 - 0x82ff */
- 0x0000, 0x674d, 0x674e, 0x0000, 0x0000, 0x674f, 0x0000, 0x6750,
- 0x363d, 0x5a2a, 0x6751, 0x0000, 0x4065, 0x6752, 0x3c4b, 0x0000,
- 0x6753, 0x0000, 0x5030, 0x0000, 0x0000, 0x0000, 0x6754, 0x4a5e,
- 0x345c, 0x0000, 0x0000, 0x4124, 0x3d58, 0x0000, 0x4971, 0x3d2e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6755, 0x3952, 0x6756, 0x484c, 0x0000, 0x6764, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6758, 0x0000, 0x4249, 0x4775, 0x383f,
- 0x6757, 0x4125, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6759, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x447a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x675b, 0x675a, 0x675d, 0x0000, 0x0000, 0x675c, 0x0000, 0x675e,
- 0x0000, 0x0000, 0x6760, 0x0000, 0x675f, 0x0000, 0x344f, 0x0000,
- 0x6761, 0x0000, 0x6762, 0x6763, 0x0000, 0x0000, 0x3a31, 0x4e49,
- 0x0000, 0x6765, 0x3f27, 0x0000, 0x0000, 0x0000, 0x3170, 0x6766,
- 0x6767, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6768, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3072, 0x0000, 0x6769, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x676a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4967, 0x0000, 0x0000, 0x0000, 0x3c47, 0x0000, 0x676c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3329, 0x3032, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x676b, 0x676e, 0x474e, 0x0000, 0x3f44,
- 0x0000, 0x3256, 0x0000, 0x4b27, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x375d, 0x365c, 0x0000, 0x676d, 0x0000, 0x326a, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3423, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3171, 0x6772, 0x4e6a, 0x425d, 0x0000, 0x0000, 0x4944,
- 0x0000, 0x677e, 0x0000, 0x3257, 0x677c, 0x0000, 0x677a, 0x6771,
- 0x0000, 0x676f, 0x0000, 0x6770, 0x0000, 0x3c63, 0x366c, 0x4377,
- 0x0000, 0x0000, 0x0000, 0x4651, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3151, 0x0000, 0x6774, 0x6773, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6779, 0x6775, 0x6778, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_83[] = {
- /* 0x8300 - 0x83ff */
- 0x0000, 0x0000, 0x4c50, 0x6777, 0x3258, 0x337d, 0x677b, 0x0000,
- 0x0000, 0x677d, 0x0000, 0x0000, 0x0000, 0x0000, 0x3754, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6823, 0x682c,
- 0x682d, 0x0000, 0x0000, 0x0000, 0x302b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6834, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3071, 0x0000, 0x0000, 0x682b, 0x0000, 0x0000, 0x0000, 0x682a,
- 0x0000, 0x6825, 0x6824, 0x0000, 0x6822, 0x6821, 0x4363, 0x0000,
- 0x427b, 0x6827, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6826, 0x0000, 0x0000, 0x0000, 0x0000, 0x6829, 0x0000, 0x0000,
- 0x0000, 0x4170, 0x3755, 0x0000, 0x0000, 0x0000, 0x0000, 0x3141,
- 0x6828, 0x0000, 0x3953, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4171, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x683a, 0x0000, 0x683b, 0x0000, 0x3259,
- 0x0000, 0x0000, 0x0000, 0x322e, 0x6838, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x682e, 0x0000, 0x6836,
- 0x0000, 0x683d, 0x6837, 0x0000, 0x0000, 0x0000, 0x6835, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6776, 0x0000, 0x0000, 0x6833, 0x0000,
- 0x0000, 0x0000, 0x682f, 0x0000, 0x0000, 0x0000, 0x3450, 0x6831,
- 0x683c, 0x0000, 0x6832, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x683e, 0x0000, 0x6830, 0x477c, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4d69, 0x0000, 0x0000, 0x0000, 0x6839, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x684f, 0x0000, 0x0000,
- 0x0000, 0x6847, 0x0000, 0x0000, 0x0000, 0x3f7b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3546, 0x0000, 0x365d, 0x0000, 0x6842, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x325b, 0x0000, 0x0000, 0x3e54, 0x0000,
- 0x6845, 0x0000, 0x0000, 0x0000, 0x3a5a, 0x0000, 0x0000, 0x4551,
- 0x684a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4a6e, 0x0000, 0x6841, 0x0000, 0x0000, 0x0000, 0x325a,
- 0x3856, 0x4929, 0x684b, 0x0000, 0x683f, 0x0000, 0x0000, 0x6848,
- 0x0000, 0x0000, 0x0000, 0x6852, 0x0000, 0x6843, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_84[] = {
- /* 0x8400 - 0x84ff */
- 0x0000, 0x0000, 0x0000, 0x6844, 0x463a, 0x0000, 0x0000, 0x6849,
- 0x0000, 0x0000, 0x0000, 0x6846, 0x4b28, 0x684c, 0x3060, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6840, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x684e, 0x0000, 0x684d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x476b, 0x6854, 0x0000, 0x685f, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x337e, 0x0000, 0x0000, 0x0000, 0x6862, 0x0000, 0x0000,
- 0x6850, 0x0000, 0x0000, 0x0000, 0x6855, 0x4d6e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x685e, 0x0000,
- 0x0000, 0x4d55, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e2a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4378,
- 0x0000, 0x0000, 0x0000, 0x336b, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4972, 0x6864, 0x4621, 0x0000, 0x0000, 0x3031, 0x0000,
- 0x0000, 0x685d, 0x0000, 0x6859, 0x4172, 0x6853, 0x685b, 0x6860,
- 0x0000, 0x472c, 0x0000, 0x0000, 0x0000, 0x302a, 0x0000, 0x6858,
- 0x0000, 0x6861, 0x4978, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x685c, 0x0000, 0x6857, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3e55, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3d2f, 0x0000, 0x0000, 0x0000, 0x3c2c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4c58, 0x0000, 0x0000, 0x4947, 0x0000, 0x0000, 0x6867,
- 0x0000, 0x6870, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x685a, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3377, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3e78, 0x6865, 0x0000, 0x686a, 0x4173, 0x0000, 0x0000, 0x6866,
- 0x0000, 0x686d, 0x0000, 0x0000, 0x435f, 0x0000, 0x686e, 0x0000,
- 0x0000, 0x4d56, 0x6863, 0x3338, 0x0000, 0x6869, 0x0000, 0x0000,
- 0x686c, 0x4c2c, 0x0000, 0x0000, 0x0000, 0x0000, 0x686f, 0x0000,
- 0x0000, 0x6868, 0x686b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4b29, 0x0000, 0x4f21, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6873, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x687a, 0x0000, 0x0000, 0x6872,
-};
-
-static unsigned short const unicode_to_jisx0208_85[] = {
- /* 0x8500 - 0x85ff */
- 0x3c43, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6851, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4a4e, 0x0000, 0x4c22, 0x6879, 0x6878, 0x0000, 0x6874,
- 0x6875, 0x0000, 0x3136, 0x0000, 0x0000, 0x0000, 0x0000, 0x6877,
- 0x0000, 0x6871, 0x0000, 0x0000, 0x0000, 0x0000, 0x4455, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6876, 0x307e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4222, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a43, 0x0000, 0x0000,
- 0x687b, 0x6921, 0x0000, 0x4859, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x687e, 0x3e56, 0x3c49, 0x6923, 0x0000, 0x0000, 0x363e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6924, 0x0000, 0x4979,
- 0x687d, 0x0000, 0x6856, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x687c, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4f4f, 0x4622, 0x4973, 0x0000, 0x0000, 0x692b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6931,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6932, 0x0000,
- 0x6925, 0x0000, 0x0000, 0x0000, 0x4776, 0x0000, 0x0000, 0x692f,
- 0x6927, 0x0000, 0x6929, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6933, 0x6928, 0x0000, 0x0000, 0x692c, 0x0000, 0x0000, 0x3172,
- 0x0000, 0x4665, 0x0000, 0x692d, 0x6930, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6926, 0x0000, 0x4126, 0x0000,
- 0x692a, 0x3b27, 0x3f45, 0x3730, 0x4c74, 0x0000, 0x4c79, 0x3d72,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6937, 0x6935, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4f4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6934, 0x0000, 0x0000, 0x0000, 0x4d75, 0x0000, 0x6936,
- 0x6938, 0x0000, 0x0000, 0x0000, 0x0000, 0x6939, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x693c, 0x693a, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4623, 0x693b, 0x0000, 0x0000,
- 0x0000, 0x484d, 0x692e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d73,
- 0x0000, 0x693d, 0x6942, 0x4174, 0x0000, 0x0000, 0x6941, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_86[] = {
- /* 0x8600 - 0x86ff */
- 0x0000, 0x0000, 0x6922, 0x0000, 0x0000, 0x0000, 0x6943, 0x4149,
- 0x0000, 0x0000, 0x693e, 0x6940, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x693f, 0x0000, 0x0000, 0x5d31, 0x5d22,
- 0x0000, 0x0000, 0x6945, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6944, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d76, 0x0000, 0x623c,
- 0x6946, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6947,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6948, 0x3857, 0x0000,
- 0x3554, 0x0000, 0x0000, 0x0000, 0x694a, 0x515d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3575, 0x0000, 0x4e3a, 0x0000, 0x3673, 0x694b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x694c,
- 0x0000, 0x0000, 0x0000, 0x436e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x694d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x467a, 0x0000, 0x303a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3263, 0x6952, 0x6953, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x694e, 0x0000, 0x3b3d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x694f, 0x4742, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6950, 0x6951, 0x695b, 0x0000, 0x0000, 0x0000, 0x6955,
- 0x6958, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6954, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6956, 0x0000, 0x6957, 0x3c58,
- 0x0000, 0x6959, 0x0000, 0x4341, 0x0000, 0x3756, 0x3342, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x695c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x333f, 0x0000, 0x6961, 0x0000, 0x0000, 0x695d, 0x6960,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x483a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x695e, 0x0000, 0x0000, 0x695f, 0x4948, 0x485a, 0x6962,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x427d, 0x696c, 0x0000, 0x6968, 0x0000, 0x0000, 0x326b, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_87[] = {
- /* 0x8700 - 0x87ff */
- 0x6966, 0x0000, 0x4b2a, 0x6967, 0x0000, 0x0000, 0x6964, 0x0000,
- 0x6965, 0x696a, 0x696d, 0x0000, 0x0000, 0x696b, 0x0000, 0x0000,
- 0x0000, 0x6969, 0x6963, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4358, 0x0000, 0x6974, 0x0000, 0x4c2a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6972, 0x0000, 0x0000,
- 0x0000, 0x6973, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x696e, 0x0000, 0x0000, 0x6970,
- 0x0000, 0x0000, 0x0000, 0x6971, 0x0000, 0x0000, 0x0000, 0x696f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4066, 0x0000, 0x4f39, 0x6978, 0x0000, 0x6979, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6a21, 0x0000, 0x3f2a, 0x0000, 0x697b,
- 0x0000, 0x697e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6976,
- 0x6975, 0x0000, 0x0000, 0x6a22, 0x0000, 0x0000, 0x325c, 0x0000,
- 0x697c, 0x0000, 0x6a23, 0x0000, 0x0000, 0x0000, 0x697d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x697a, 0x0000, 0x4433, 0x0000,
- 0x6977, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4768,
- 0x0000, 0x0000, 0x6a27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d3b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a26,
- 0x0000, 0x0000, 0x6a25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6a2e, 0x0000, 0x0000, 0x0000, 0x6a28,
- 0x0000, 0x0000, 0x0000, 0x6a30, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4d66, 0x6a33, 0x0000, 0x6a2a, 0x0000, 0x0000,
- 0x6a2b, 0x0000, 0x0000, 0x0000, 0x6a2f, 0x0000, 0x6a32, 0x6a31,
- 0x0000, 0x0000, 0x0000, 0x6a29, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6a2c, 0x0000, 0x6a3d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6a36, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a34,
- 0x0000, 0x0000, 0x6a35, 0x0000, 0x0000, 0x0000, 0x6a3a, 0x6a3b,
- 0x0000, 0x332a, 0x0000, 0x3542, 0x0000, 0x0000, 0x6a39, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_88[] = {
- /* 0x8800 - 0x88ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a24, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a38, 0x6a3c, 0x6a37,
- 0x0000, 0x6a3e, 0x0000, 0x0000, 0x0000, 0x6a40, 0x6a3f, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6a42, 0x6a41, 0x695a, 0x0000, 0x0000, 0x0000, 0x6a46,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6a43, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a44, 0x0000,
- 0x0000, 0x6a45, 0x0000, 0x6a47, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x376c, 0x0000, 0x6a49, 0x0000, 0x6a48, 0x0000, 0x3d30, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3954, 0x5e27, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6a4a, 0x3d51, 0x0000, 0x0000, 0x0000, 0x3339,
- 0x0000, 0x6a4b, 0x0000, 0x3152, 0x0000, 0x3e57, 0x6a4c, 0x0000,
- 0x0000, 0x3955, 0x6a4d, 0x3061, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x493d, 0x0000, 0x0000, 0x6a4e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3f6a, 0x0000, 0x6a55, 0x0000, 0x0000, 0x6a52, 0x0000, 0x436f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a53, 0x6a50, 0x365e,
- 0x0000, 0x6a4f, 0x6a56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3736, 0x0000, 0x0000, 0x425e, 0x0000, 0x6a5c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6a58, 0x0000, 0x0000, 0x0000, 0x4235, 0x6a57,
- 0x0000, 0x6a5a, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a51, 0x0000,
- 0x0000, 0x0000, 0x6a5b, 0x0000, 0x6a5d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x486f, 0x0000, 0x0000, 0x6a59, 0x0000,
- 0x6a5e, 0x6a60, 0x0000, 0x0000, 0x3853, 0x6a54, 0x0000, 0x3041,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a5f,
- 0x0000, 0x3a5b, 0x4e76, 0x6a61, 0x6a62, 0x4175, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e22,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6a63, 0x4d35, 0x0000, 0x0000,
- 0x6a64, 0x6a65, 0x0000, 0x0000, 0x4a64, 0x6a66, 0x0000, 0x3a40,
- 0x0000, 0x4e23, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6a6b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6a6c, 0x3e58, 0x6a6a, 0x0000, 0x0000, 0x0000,
- 0x4d67, 0x6a67, 0x0000, 0x0000, 0x6a69, 0x403d, 0x3f7e, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_89[] = {
- /* 0x8900 - 0x89ff */
- 0x0000, 0x0000, 0x6a68, 0x0000, 0x6a6d, 0x0000, 0x0000, 0x4a23,
- 0x0000, 0x0000, 0x6a6f, 0x0000, 0x6a6e, 0x0000, 0x0000, 0x0000,
- 0x336c, 0x0000, 0x4b2b, 0x6a70, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a7c, 0x6a72, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a73, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6a74, 0x6a75, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a79, 0x0000,
- 0x6a7a, 0x0000, 0x0000, 0x6a78, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6a76, 0x0000, 0x6a71, 0x6a77, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6a7b, 0x7037, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3228, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a7e, 0x365f,
- 0x6a7d, 0x0000, 0x0000, 0x0000, 0x6b22, 0x0000, 0x6b21, 0x0000,
- 0x0000, 0x0000, 0x6b24, 0x0000, 0x0000, 0x6b23, 0x0000, 0x6b25,
- 0x0000, 0x0000, 0x3d31, 0x0000, 0x6b26, 0x0000, 0x0000, 0x6b27,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b28, 0x403e,
- 0x0000, 0x4d57, 0x0000, 0x6b29, 0x0000, 0x0000, 0x4a24, 0x4746,
- 0x6b2a, 0x0000, 0x6b2b, 0x382b, 0x0000, 0x0000, 0x0000, 0x352c,
- 0x0000, 0x0000, 0x0000, 0x6b2c, 0x0000, 0x0000, 0x3b6b, 0x4741,
- 0x6b2d, 0x0000, 0x3350, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6b2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b30, 0x4d77,
- 0x0000, 0x6b2f, 0x3f46, 0x0000, 0x6b31, 0x0000, 0x0000, 0x6b32,
- 0x0000, 0x0000, 0x6b33, 0x3451, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6b34, 0x0000, 0x0000, 0x6b35, 0x0000, 0x6b36,
- 0x6b37, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3351, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6b38, 0x0000, 0x6b39, 0x6b3a, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3272, 0x0000, 0x0000, 0x3f28, 0x6b3b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6b3c, 0x0000, 0x0000, 0x0000,
- 0x6b3d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_8a[] = {
- /* 0x8a00 - 0x8aff */
- 0x3840, 0x0000, 0x447b, 0x6b3e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3757, 0x0000, 0x3f56, 0x0000, 0x6b41, 0x0000, 0x4624, 0x0000,
- 0x6b40, 0x0000, 0x0000, 0x3731, 0x0000, 0x0000, 0x6b3f, 0x4277,
- 0x352d, 0x0000, 0x0000, 0x6b42, 0x0000, 0x6b43, 0x0000, 0x3e59,
- 0x0000, 0x0000, 0x0000, 0x376d, 0x0000, 0x6b44, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4b2c, 0x0000, 0x0000, 0x405f, 0x0000, 0x0000,
- 0x0000, 0x3576, 0x0000, 0x4c75, 0x414a, 0x0000, 0x6b45, 0x0000,
- 0x0000, 0x0000, 0x3f47, 0x4370, 0x3e5a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6b46, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b49, 0x0000,
- 0x6b4a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3a3e, 0x4242, 0x6b48, 0x0000, 0x3e5b, 0x493e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6b47, 0x0000, 0x0000, 0x3b6c, 0x0000,
- 0x3153, 0x0000, 0x6b4e, 0x3758, 0x0000, 0x0000, 0x3b6e, 0x0000,
- 0x0000, 0x3b6d, 0x0000, 0x4f4d, 0x6b4d, 0x6b4c, 0x4127, 0x0000,
- 0x354d, 0x4f43, 0x333a, 0x3e5c, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6b4b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6b50, 0x0000, 0x6b51, 0x6b4f, 0x0000, 0x3858,
- 0x0000, 0x4d40, 0x0000, 0x0000, 0x3b6f, 0x4727, 0x0000, 0x0000,
- 0x0000, 0x6b54, 0x0000, 0x4040, 0x0000, 0x4342, 0x0000, 0x0000,
- 0x4d36, 0x0000, 0x6b57, 0x0000, 0x0000, 0x0000, 0x386c, 0x0000,
- 0x403f, 0x6b53, 0x0000, 0x6b58, 0x386d, 0x6b55, 0x6b56, 0x0000,
- 0x6b52, 0x0000, 0x0000, 0x0000, 0x4062, 0x4649, 0x0000, 0x0000,
- 0x432f, 0x0000, 0x325d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4870, 0x0000, 0x0000, 0x3543, 0x0000, 0x0000, 0x4434,
- 0x0000, 0x0000, 0x6b5b, 0x0000, 0x6b59, 0x0000, 0x0000, 0x434c,
- 0x0000, 0x0000, 0x0000, 0x4041, 0x3452, 0x6b5a, 0x0000, 0x3f5b,
- 0x0000, 0x0000, 0x4e4a, 0x0000, 0x0000, 0x0000, 0x4f40, 0x0000,
- 0x0000, 0x0000, 0x6b5c, 0x6b67, 0x4435, 0x0000, 0x6b66, 0x0000,
- 0x6b63, 0x6b6b, 0x6b64, 0x0000, 0x6b60, 0x0000, 0x447c, 0x6b5f,
- 0x0000, 0x0000, 0x0000, 0x6b5d, 0x0000, 0x4d21, 0x3b70, 0x0000,
- 0x0000, 0x6b61, 0x0000, 0x6b5e, 0x0000, 0x0000, 0x0000, 0x6b65,
- 0x3d74, 0x0000, 0x3841, 0x0000, 0x0000, 0x0000, 0x427a, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_8b[] = {
- /* 0x8b00 - 0x8bff */
- 0x4b45, 0x315a, 0x3062, 0x0000, 0x4625, 0x0000, 0x0000, 0x6b69,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6b68, 0x0000, 0x4666, 0x0000,
- 0x6b6d, 0x0000, 0x0000, 0x0000, 0x6b62, 0x0000, 0x6b6c, 0x6b6e,
- 0x0000, 0x382c, 0x6b6a, 0x3956, 0x0000, 0x3c55, 0x0000, 0x0000,
- 0x6b6f, 0x4d58, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b72, 0x0000,
- 0x6b75, 0x0000, 0x0000, 0x6b73, 0x4935, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6b70, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3660, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b74, 0x0000,
- 0x0000, 0x6b76, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6b7a, 0x0000, 0x0000, 0x6b77, 0x0000, 0x6b79, 0x6b78,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b7b, 0x0000,
- 0x3c31, 0x0000, 0x6b7d, 0x6b7c, 0x4968, 0x0000, 0x0000, 0x6c21,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3759, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6b7e, 0x6c22, 0x0000, 0x0000, 0x6c23,
- 0x3544, 0x6641, 0x3e79, 0x0000, 0x6c24, 0x0000, 0x0000, 0x386e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c25, 0x0000, 0x0000,
- 0x6c26, 0x0000, 0x0000, 0x3b3e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5a4e, 0x0000, 0x6c27, 0x0000, 0x6c28, 0x0000,
- 0x3d32, 0x0000, 0x6c29, 0x6c2a, 0x0000, 0x0000, 0x6c2b, 0x0000,
- 0x0000, 0x6c2c, 0x6c2d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_8c[] = {
- /* 0x8c00 - 0x8cff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x432b,
- 0x0000, 0x0000, 0x6c2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c30,
- 0x0000, 0x6c2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x4626, 0x0000,
- 0x6c31, 0x0000, 0x4b2d, 0x0000, 0x6c32, 0x0000, 0x6c33, 0x0000,
- 0x6c34, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c35, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x465a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3e5d, 0x6c36, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x396b, 0x502e, 0x6c37, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6c38, 0x493f, 0x6c39, 0x0000, 0x6c41, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6c3a, 0x0000, 0x0000, 0x6c3c, 0x0000, 0x0000,
- 0x0000, 0x6c3b, 0x6c3d, 0x0000, 0x4b46, 0x6c3e, 0x6c3f, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6c40, 0x0000, 0x0000, 0x0000,
- 0x6c42, 0x0000, 0x0000, 0x0000, 0x0000, 0x332d, 0x4467, 0x0000,
- 0x4969, 0x3a62, 0x3957, 0x0000, 0x0000, 0x0000, 0x0000, 0x494f,
- 0x325f, 0x484e, 0x6c45, 0x3453, 0x4055, 0x6c44, 0x6c49, 0x4379,
- 0x4c63, 0x0000, 0x6c47, 0x6c48, 0x352e, 0x0000, 0x6c4a, 0x4763,
- 0x425f, 0x0000, 0x0000, 0x4871, 0x453d, 0x6c46, 0x0000, 0x4b47,
- 0x326c, 0x6c4c, 0x4f28, 0x4442, 0x4f45, 0x0000, 0x0000, 0x3b71,
- 0x6c4b, 0x0000, 0x4231, 0x0000, 0x0000, 0x6c5c, 0x4128, 0x0000,
- 0x0000, 0x4678, 0x0000, 0x4950, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6c4f, 0x3b3f, 0x3b72, 0x0000, 0x3e5e, 0x0000,
- 0x4765, 0x0000, 0x382d, 0x6c4e, 0x6c4d, 0x0000, 0x496a, 0x0000,
- 0x0000, 0x0000, 0x3c41, 0x0000, 0x0000, 0x4552, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6c51, 0x6c52, 0x3958, 0x6c50, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_8d[] = {
- /* 0x8d00 - 0x8dff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6c53, 0x6c54, 0x0000, 0x6c56,
- 0x4223, 0x0000, 0x6c55, 0x3466, 0x0000, 0x6c58, 0x0000, 0x6c57,
- 0x6c59, 0x0000, 0x0000, 0x6c5b, 0x6c5d, 0x0000, 0x6c5e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4056, 0x0000, 0x3c4f, 0x6c5f,
- 0x0000, 0x0000, 0x0000, 0x3352, 0x0000, 0x6c60, 0x0000, 0x0000,
- 0x4176, 0x6c61, 0x0000, 0x6c62, 0x496b, 0x0000, 0x0000, 0x352f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6c63, 0x0000, 0x0000, 0x0000, 0x4436, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x315b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6c64, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3c71, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3f76, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x422d, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6c67, 0x0000, 0x0000, 0x0000, 0x6c66, 0x0000,
- 0x0000, 0x0000, 0x6c65, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6c6d, 0x6c6b, 0x0000, 0x0000, 0x6c68,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c6a, 0x0000,
- 0x0000, 0x0000, 0x6c69, 0x6c6c, 0x0000, 0x3577, 0x0000, 0x6c70,
- 0x0000, 0x4057, 0x0000, 0x6c71, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3859, 0x0000, 0x6c6e, 0x6c6f, 0x0000, 0x0000, 0x0000, 0x4f29,
- 0x0000, 0x0000, 0x0000, 0x4437, 0x0000, 0x4129, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6c72, 0x0000, 0x0000, 0x6c75,
-};
-
-static unsigned short const unicode_to_jisx0208_8e[] = {
- /* 0x8e00 - 0x8eff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6c73, 0x6c74, 0x4d59, 0x0000, 0x0000, 0x0000, 0x0000, 0x4627,
- 0x6c78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c76, 0x6c77, 0x6c79,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6d29, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6c7c, 0x0000, 0x0000, 0x0000, 0x6c7d, 0x6c7b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6c7a, 0x0000, 0x447d, 0x0000, 0x0000, 0x6d21,
- 0x6d25, 0x6d22, 0x6c7e, 0x0000, 0x6d23, 0x0000, 0x0000, 0x0000,
- 0x6d24, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d2b, 0x0000, 0x0000,
- 0x0000, 0x6d26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4058,
- 0x6d28, 0x0000, 0x0000, 0x6d2a, 0x6d27, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6d2d, 0x0000, 0x3d33, 0x0000, 0x6d2c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6d2e, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6d2f, 0x0000, 0x0000, 0x6d32, 0x6d31, 0x0000, 0x6d30,
- 0x0000, 0x0000, 0x6d34, 0x6d33, 0x0000, 0x4c76, 0x0000, 0x0000,
- 0x0000, 0x6d36, 0x0000, 0x6d35, 0x6d37, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6d38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6d3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6d39, 0x3f48, 0x6d3b, 0x0000, 0x0000, 0x366d,
- 0x6d3c, 0x6d3e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d3f, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d40, 0x6d3d, 0x0000,
- 0x6d41, 0x0000, 0x3c56, 0x6d42, 0x3530, 0x3733, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x382e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6d43, 0x0000, 0x0000, 0x0000, 0x4670,
- 0x0000, 0x0000, 0x453e, 0x6d44, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6d47, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3c34, 0x0000, 0x0000, 0x6d46, 0x6d45, 0x375a, 0x6d48, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_8f[] = {
- /* 0x8f00 - 0x8fff */
- 0x0000, 0x0000, 0x0000, 0x3353, 0x0000, 0x6d4a, 0x0000, 0x0000,
- 0x0000, 0x3a5c, 0x6d49, 0x0000, 0x6d52, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6d4c, 0x6d4e, 0x4a65, 0x6d4b, 0x0000, 0x0000,
- 0x0000, 0x6d4d, 0x0000, 0x6d51, 0x6d4f, 0x3531, 0x0000, 0x6d50,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d53, 0x0000,
- 0x0000, 0x475a, 0x4e58, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d34,
- 0x0000, 0x0000, 0x0000, 0x6d54, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4d22, 0x6d56, 0x0000, 0x6d55, 0x0000, 0x0000, 0x6d59, 0x4d41,
- 0x0000, 0x0000, 0x6d58, 0x0000, 0x336d, 0x6d57, 0x6d5c, 0x0000,
- 0x0000, 0x6d5b, 0x0000, 0x0000, 0x6d5a, 0x4532, 0x6d5d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d5e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6d5f, 0x0000, 0x0000, 0x396c,
- 0x0000, 0x3725, 0x6d60, 0x6d61, 0x6d62, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3f49, 0x6d63, 0x0000, 0x3c2d, 0x6d64,
- 0x0000, 0x0000, 0x0000, 0x6d65, 0x0000, 0x0000, 0x0000, 0x5221,
- 0x517e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d66, 0x6570, 0x6d67,
- 0x4324, 0x3f2b, 0x4740, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d68,
- 0x0000, 0x0000, 0x4a55, 0x4454, 0x397e, 0x0000, 0x0000, 0x4329,
- 0x0000, 0x0000, 0x312a, 0x0000, 0x4b78, 0x3f57, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x375e, 0x0000,
- 0x0000, 0x3661, 0x0000, 0x0000, 0x4a56, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6d69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6d6b, 0x0000, 0x0000, 0x6d6a, 0x3260, 0x0000,
- 0x0000, 0x4676, 0x6d6c, 0x4777, 0x0000, 0x4533, 0x0000, 0x6d6d,
- 0x3d52, 0x0000, 0x0000, 0x0000, 0x6d6f, 0x0000, 0x0000, 0x4c42,
- 0x6d7e, 0x6d71, 0x6d72, 0x0000, 0x0000, 0x4449, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_90[] = {
- /* 0x9000 - 0x90ff */
- 0x4260, 0x4177, 0x0000, 0x4628, 0x0000, 0x6d70, 0x3555, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6d79, 0x0000, 0x6d76, 0x6e25, 0x4629,
- 0x4360, 0x6d73, 0x0000, 0x447e, 0x4553, 0x6d74, 0x6d78, 0x3f60,
- 0x0000, 0x4767, 0x444c, 0x0000, 0x0000, 0x4042, 0x6d77, 0x422e,
- 0x4224, 0x6d75, 0x3029, 0x4f22, 0x0000, 0x0000, 0x0000, 0x6d7a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4261, 0x0000,
- 0x0000, 0x3d35, 0x3f4a, 0x0000, 0x0000, 0x6d7c, 0x6d7b, 0x0000,
- 0x306f, 0x6d7d, 0x0000, 0x0000, 0x492f, 0x0000, 0x6e27, 0x0000,
- 0x0000, 0x465b, 0x3f6b, 0x0000, 0x0000, 0x4359, 0x0000, 0x3678,
- 0x0000, 0x6e26, 0x4d37, 0x313f, 0x0000, 0x4a57, 0x3261, 0x6e21,
- 0x6e22, 0x6e23, 0x6e24, 0x463b, 0x4323, 0x3063, 0x6e28, 0x0000,
- 0x6e29, 0x7423, 0x0000, 0x0000, 0x423d, 0x0000, 0x6e2a, 0x0000,
- 0x3173, 0x414c, 0x0000, 0x382f, 0x0000, 0x4d5a, 0x0000, 0x0000,
- 0x6e2b, 0x452c, 0x0000, 0x0000, 0x0000, 0x4178, 0x3c57, 0x6e2c,
- 0x0000, 0x0000, 0x6e2f, 0x0000, 0x0000, 0x3d65, 0x6e2d, 0x412b,
- 0x412a, 0x0000, 0x3064, 0x0000, 0x4e4b, 0x6e31, 0x0000, 0x4872,
- 0x6e33, 0x6e32, 0x6e30, 0x6364, 0x3454, 0x0000, 0x0000, 0x6d6e,
- 0x0000, 0x6e35, 0x6e34, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e36,
- 0x0000, 0x4d38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4661, 0x0000, 0x0000, 0x4b2e, 0x0000,
- 0x6e37, 0x0000, 0x3c59, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e38,
- 0x0000, 0x6e39, 0x0000, 0x0000, 0x0000, 0x6e3a, 0x0000, 0x0000,
- 0x4521, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x306a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3959, 0x0000, 0x0000, 0x0000, 0x4f3a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6e3e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3734, 0x6e3b, 0x0000, 0x6e3c, 0x0000, 0x0000, 0x0000,
- 0x4974, 0x0000, 0x0000, 0x0000, 0x0000, 0x3354, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d39, 0x0000, 0x363f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4554, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_91[] = {
- /* 0x9100 - 0x91ff */
- 0x0000, 0x0000, 0x6e3f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6e40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6e41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4522, 0x0000, 0x0000,
- 0x6e43, 0x0000, 0x6e42, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4653, 0x6e44, 0x3d36, 0x3c60, 0x475b, 0x4371, 0x0000,
- 0x0000, 0x0000, 0x3c72, 0x0000, 0x3f6c, 0x0000, 0x6e45, 0x0000,
- 0x6e46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3f5d, 0x6e47, 0x0000, 0x6e48, 0x0000, 0x0000,
- 0x0000, 0x6e49, 0x4d6f, 0x0000, 0x3d37, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6e4b, 0x6e4a, 0x0000, 0x395a, 0x0000, 0x3973,
- 0x3b40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6e4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d66,
- 0x0000, 0x6e4d, 0x0000, 0x6e4c, 0x0000, 0x4269, 0x0000, 0x0000,
- 0x386f, 0x0000, 0x4043, 0x0000, 0x0000, 0x0000, 0x0000, 0x4830,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3d39, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6e4f, 0x0000, 0x3e5f, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6e52, 0x6e50, 0x0000, 0x0000, 0x0000, 0x6e51,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6e54, 0x6e53, 0x0000, 0x0000,
- 0x3e7a, 0x0000, 0x6e55, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6e56, 0x6e57, 0x0000, 0x0000, 0x0000, 0x0000, 0x4850, 0x3a53,
- 0x3c61, 0x6e58, 0x0000, 0x6e59, 0x4e24, 0x3d45, 0x4c6e, 0x4e4c,
- 0x6e5a, 0x3662, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e5b, 0x0000,
- 0x4523, 0x0000, 0x0000, 0x6e5e, 0x3378, 0x3f4b, 0x0000, 0x6e5c,
- 0x0000, 0x6e5d, 0x0000, 0x4460, 0x0000, 0x0000, 0x4b55, 0x367c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e60, 0x6e61, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6e5f, 0x0000, 0x0000, 0x6e63,
-};
-
-static unsigned short const unicode_to_jisx0208_92[] = {
- /* 0x9200 - 0x92ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x465f, 0x3343, 0x0000,
- 0x0000, 0x6e67, 0x0000, 0x0000, 0x6e64, 0x6e66, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e62, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6f4f, 0x0000, 0x0000, 0x6e65, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4e6b, 0x0000, 0x0000, 0x385a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e6f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4534, 0x6e6a, 0x0000, 0x0000,
- 0x6e6d, 0x6e6b, 0x0000, 0x6e70, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6e71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e69,
- 0x0000, 0x0000, 0x6e76, 0x3174, 0x0000, 0x0000, 0x6e68, 0x0000,
- 0x0000, 0x0000, 0x482d, 0x0000, 0x6e6c, 0x0000, 0x3e60, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x395b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b48, 0x0000,
- 0x3664, 0x0000, 0x0000, 0x3d46, 0x0000, 0x463c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x412d, 0x0000, 0x6e74, 0x0000, 0x6e6e, 0x6e73, 0x0000,
- 0x4c43, 0x0000, 0x4438, 0x6e75, 0x6e72, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x412c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e79,
- 0x0000, 0x6e78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e77,
- 0x0000, 0x0000, 0x4b2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3d7b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6e7a, 0x4a5f, 0x0000, 0x0000, 0x3154, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4946, 0x4372, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3578, 0x0000, 0x6e7c, 0x0000, 0x395d, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_93[] = {
- /* 0x9300 - 0x93ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b2c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6e7b,
- 0x3f6d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3f6e, 0x6f21, 0x6f23, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3e7b, 0x0000, 0x6f22, 0x6f24, 0x0000, 0x0000, 0x3653, 0x0000,
- 0x4945, 0x0000, 0x0000, 0x3c62, 0x4f23, 0x0000, 0x6e7e, 0x3a78,
- 0x0000, 0x0000, 0x4f3f, 0x0000, 0x0000, 0x6f26, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6f25, 0x6f27, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6e7d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4669, 0x0000, 0x4555, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4457, 0x0000, 0x6f2c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4343, 0x6f28, 0x0000, 0x0000, 0x0000,
- 0x6f29, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x372d, 0x0000, 0x6f2b, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3830, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6f2a, 0x0000, 0x3e61, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3379, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6f30, 0x0000, 0x3a3f, 0x4179,
- 0x0000, 0x0000, 0x444a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x333b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6f2e, 0x6f2f, 0x4443, 0x0000,
- 0x6f2d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6f31, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6f37, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6f3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6f39, 0x452d, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f32, 0x6f33,
- 0x6f36, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f38, 0x0000, 0x0000,
- 0x0000, 0x3640, 0x0000, 0x0000, 0x6f3b, 0x6f35, 0x0000, 0x0000,
- 0x6f34, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_94[] = {
- /* 0x9400 - 0x94ff */
- 0x0000, 0x0000, 0x0000, 0x6f3f, 0x0000, 0x0000, 0x0000, 0x6f40,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6f41, 0x0000, 0x0000, 0x6f3e, 0x6f3d, 0x0000, 0x0000, 0x0000,
- 0x3e62, 0x462a, 0x6f3c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6f45, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6f43, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f44, 0x6f42, 0x0000,
- 0x4278, 0x0000, 0x6f46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6f47, 0x0000, 0x0000, 0x6f49, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3455, 0x6f48, 0x4c7a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6f54, 0x6f4a, 0x0000, 0x0000, 0x6f4d, 0x0000,
- 0x6f4b, 0x0000, 0x6f4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6f4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6f50, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f51, 0x0000, 0x6f52,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6f55, 0x6f53, 0x6f56, 0x6f58,
- 0x0000, 0x6f57, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_95[] = {
- /* 0x9500 - 0x95ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4439,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4c67, 0x0000, 0x6f59, 0x412e, 0x0000, 0x0000, 0x0000, 0x6f5a,
- 0x0000, 0x4a44, 0x6f5b, 0x332b, 0x0000, 0x0000, 0x0000, 0x313c,
- 0x0000, 0x3457, 0x0000, 0x3456, 0x6f5c, 0x0000, 0x6f5d, 0x0000,
- 0x6f5e, 0x6f5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6f60, 0x0000, 0x3458, 0x3355, 0x395e, 0x4836, 0x0000, 0x6f62,
- 0x6f61, 0x0000, 0x0000, 0x0000, 0x0000, 0x6f63, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x315c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6f66, 0x0000, 0x6f65, 0x6f64, 0x0000, 0x6f67, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6f6a, 0x0000, 0x0000, 0x0000, 0x3047,
- 0x0000, 0x0000, 0x6f68, 0x0000, 0x6f6c, 0x6f6b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6f6e, 0x6f6d, 0x6f6f, 0x0000,
- 0x462e, 0x0000, 0x0000, 0x0000, 0x6f70, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6f71, 0x6f73, 0x0000, 0x0000, 0x6f72, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_96[] = {
- /* 0x9600 - 0x96ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x496c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6f74, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6f75, 0x0000, 0x3a65, 0x0000, 0x0000, 0x0000, 0x6f76, 0x6f77,
- 0x0000, 0x0000, 0x4b49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x414b, 0x0000, 0x0000, 0x0000, 0x3024,
- 0x424b, 0x0000, 0x6f78, 0x0000, 0x496d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6f7b, 0x6f79, 0x395f, 0x0000, 0x6f7a,
- 0x3842, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4a45, 0x6f7d, 0x7021, 0x6f7e, 0x7022,
- 0x0000, 0x0000, 0x3121, 0x3f58, 0x3d7c, 0x3459, 0x7023, 0x0000,
- 0x0000, 0x0000, 0x4766, 0x0000, 0x7025, 0x0000, 0x0000, 0x0000,
- 0x3122, 0x0000, 0x7024, 0x4444, 0x0000, 0x4e4d, 0x462b, 0x6f7c,
- 0x4e26, 0x0000, 0x3831, 0x0000, 0x0000, 0x4d5b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3679, 0x4e34, 0x0000,
- 0x3728, 0x0000, 0x4262, 0x6721, 0x0000, 0x7026, 0x332c, 0x3f6f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3356, 0x7028, 0x0000, 0x7029,
- 0x7027, 0x3764, 0x0000, 0x3a5d, 0x3e63, 0x0000, 0x0000, 0x0000,
- 0x3123, 0x0000, 0x0000, 0x4e59, 0x0000, 0x0000, 0x0000, 0x702b,
- 0x6e2e, 0x0000, 0x702a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x702e, 0x702c, 0x702d, 0x0000, 0x702f, 0x0000, 0x7030, 0x4e6c,
- 0x7031, 0x7032, 0x0000, 0x4049, 0x483b, 0x0000, 0x0000, 0x0000,
- 0x3f7d, 0x3467, 0x0000, 0x0000, 0x4d3a, 0x326d, 0x3d38, 0x385b,
- 0x0000, 0x7035, 0x0000, 0x7034, 0x3b73, 0x7036, 0x7033, 0x0000,
- 0x0000, 0x3b28, 0x0000, 0x0000, 0x0000, 0x703a, 0x6a2d, 0x0000,
- 0x0000, 0x5256, 0x0000, 0x3f77, 0x7038, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4e25, 0x4671, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x312b, 0x0000, 0x4063, 0x3c36, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4a37, 0x0000, 0x3140, 0x0000, 0x0000, 0x0000, 0x4e6d, 0x4d6b,
- 0x0000, 0x703b, 0x0000, 0x4545, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_97[] = {
- /* 0x9700 - 0x97ff */
- 0x3c7b, 0x0000, 0x0000, 0x0000, 0x703c, 0x0000, 0x703d, 0x3f4c,
- 0x703e, 0x0000, 0x4e6e, 0x0000, 0x0000, 0x7039, 0x7040, 0x7042,
- 0x0000, 0x7041, 0x0000, 0x703f, 0x0000, 0x0000, 0x7043, 0x0000,
- 0x0000, 0x7044, 0x0000, 0x0000, 0x417a, 0x0000, 0x3262, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x7045, 0x0000, 0x0000, 0x4c38,
- 0x0000, 0x0000, 0x7046, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x7047, 0x0000, 0x4f2a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5b31, 0x7048, 0x0000, 0x0000, 0x0000, 0x7049, 0x704a, 0x0000,
- 0x0000, 0x0000, 0x704e, 0x0000, 0x704b, 0x0000, 0x704c, 0x0000,
- 0x704d, 0x704f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4044, 0x0000, 0x0000, 0x0000, 0x4c77, 0x0000,
- 0x0000, 0x4045, 0x0000, 0x0000, 0x7050, 0x0000, 0x4873, 0x0000,
- 0x7051, 0x7353, 0x4c4c, 0x0000, 0x7052, 0x0000, 0x7053, 0x0000,
- 0x7054, 0x3357, 0x0000, 0x7056, 0x0000, 0x3f59, 0x0000, 0x0000,
- 0x0000, 0x7057, 0x0000, 0x0000, 0x3724, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x7058, 0x705c, 0x0000, 0x705a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x705b, 0x0000, 0x0000, 0x3373, 0x7059, 0x705d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x705e, 0x0000, 0x3048, 0x0000, 0x705f,
- 0x7060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3e64, 0x0000, 0x0000, 0x0000, 0x7061, 0x0000, 0x0000, 0x0000,
- 0x3547, 0x0000, 0x0000, 0x7064, 0x0000, 0x0000, 0x7063, 0x0000,
- 0x7062, 0x0000, 0x0000, 0x6b71, 0x0000, 0x4a5c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x7065, 0x7066, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x7067, 0x0000, 0x0000, 0x7068, 0x0000,
- 0x7069, 0x0000, 0x0000, 0x706a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x345a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x706b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x706c, 0x4723, 0x0000,
- 0x0000, 0x0000, 0x706e, 0x323b, 0x0000, 0x7071, 0x7070, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3124, 0x0000, 0x0000, 0x0000, 0x3641,
-};
-
-static unsigned short const unicode_to_jisx0208_98[] = {
- /* 0x9800 - 0x98ff */
- 0x0000, 0x4a47, 0x443a, 0x3a22, 0x0000, 0x3960, 0x3d67, 0x0000,
- 0x3f5c, 0x0000, 0x0000, 0x0000, 0x7073, 0x0000, 0x0000, 0x7072,
- 0x4d42, 0x3468, 0x4852, 0x465c, 0x0000, 0x0000, 0x0000, 0x3f7c,
- 0x4e4e, 0x0000, 0x375b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x7076, 0x0000, 0x0000, 0x7075, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4b4b, 0x462c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3150, 0x0000, 0x0000, 0x7077,
- 0x7074, 0x0000, 0x0000, 0x4951, 0x4d6a, 0x7078, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7079, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x707b, 0x426a, 0x335b, 0x335c, 0x707a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3469, 0x3832, 0x0000, 0x0000,
- 0x346a, 0x0000, 0x0000, 0x453f, 0x0000, 0x0000, 0x4e60, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x385c,
- 0x0000, 0x0000, 0x0000, 0x707c, 0x0000, 0x0000, 0x0000, 0x707d,
- 0x707e, 0x7121, 0x0000, 0x7123, 0x7122, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4977, 0x0000, 0x7124, 0x0000, 0x0000, 0x0000, 0x0000, 0x7125,
- 0x0000, 0x7126, 0x0000, 0x0000, 0x0000, 0x0000, 0x7127, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x7129, 0x7128, 0x0000, 0x712a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4874, 0x664c, 0x0000, 0x0000, 0x3f29,
- 0x0000, 0x0000, 0x3532, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x712b, 0x0000, 0x712c, 0x0000, 0x522c, 0x5d3b, 0x4853,
- 0x0000, 0x0000, 0x307b, 0x0000, 0x303b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3b74, 0x4b30, 0x3e7e, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_99[] = {
- /* 0x9900 - 0x99ff */
- 0x0000, 0x0000, 0x0000, 0x712d, 0x0000, 0x4c5f, 0x0000, 0x0000,
- 0x0000, 0x712e, 0x4d5c, 0x0000, 0x3142, 0x0000, 0x0000, 0x0000,
- 0x3b41, 0x0000, 0x712f, 0x326e, 0x7130, 0x0000, 0x0000, 0x0000,
- 0x7131, 0x0000, 0x0000, 0x0000, 0x0000, 0x7133, 0x7134, 0x0000,
- 0x7136, 0x7132, 0x0000, 0x0000, 0x7135, 0x0000, 0x0000, 0x0000,
- 0x345b, 0x0000, 0x0000, 0x0000, 0x7137, 0x0000, 0x7138, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7139, 0x713a, 0x0000,
- 0x0000, 0x0000, 0x713b, 0x0000, 0x0000, 0x713d, 0x0000, 0x0000,
- 0x0000, 0x713c, 0x0000, 0x713f, 0x7142, 0x0000, 0x0000, 0x0000,
- 0x713e, 0x7140, 0x7141, 0x0000, 0x0000, 0x7143, 0x0000, 0x3642,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c73, 0x7144,
- 0x7145, 0x3961, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7146, 0x0000, 0x0000,
- 0x333e, 0x0000, 0x0000, 0x0000, 0x474f, 0x7147, 0x7148, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x435a, 0x466b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x7149, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x477d, 0x0000, 0x0000, 0x424c, 0x3158, 0x366e, 0x0000,
- 0x366f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4373, 0x714e, 0x3670, 0x0000, 0x0000, 0x326f, 0x0000, 0x0000,
- 0x714d, 0x0000, 0x0000, 0x714b, 0x0000, 0x714c, 0x0000, 0x714a,
- 0x0000, 0x0000, 0x7158, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x714f, 0x7150, 0x0000,
- 0x0000, 0x7151, 0x7152, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x7154, 0x0000, 0x0000, 0x7153, 0x0000, 0x0000, 0x0000, 0x3d59,
-};
-
-static unsigned short const unicode_to_jisx0208_9a[] = {
- /* 0x9a00 - 0x9aff */
- 0x0000, 0x7155, 0x0000, 0x0000, 0x0000, 0x7157, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3533, 0x7156,
- 0x0000, 0x0000, 0x417b, 0x3833, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x7159, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x424d, 0x0000, 0x0000, 0x715a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x462d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x715b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7160, 0x0000,
- 0x715e, 0x0000, 0x715d, 0x715f, 0x0000, 0x715c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7162, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7161, 0x0000, 0x7164,
- 0x0000, 0x0000, 0x3643, 0x7163, 0x0000, 0x0000, 0x0000, 0x7165,
- 0x0000, 0x0000, 0x7166, 0x0000, 0x7168, 0x7167, 0x0000, 0x0000,
- 0x0000, 0x7169, 0x716b, 0x716a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x397c, 0x0000, 0x0000, 0x0000, 0x0000, 0x716c, 0x0000, 0x0000,
- 0x716d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x333c, 0x0000, 0x0000, 0x0000, 0x716e, 0x0000, 0x0000, 0x0000,
- 0x716f, 0x0000, 0x0000, 0x0000, 0x3f71, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7170,
- 0x0000, 0x7171, 0x0000, 0x7172, 0x7173, 0x0000, 0x0000, 0x0000,
- 0x3962, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7174, 0x7175,
- 0x0000, 0x0000, 0x7176, 0x7177, 0x0000, 0x0000, 0x7178, 0x0000,
- 0x0000, 0x0000, 0x4831, 0x717a, 0x0000, 0x4926, 0x717b, 0x7179,
- 0x0000, 0x717d, 0x0000, 0x0000, 0x717c, 0x0000, 0x0000, 0x717e,
- 0x0000, 0x0000, 0x0000, 0x7221, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_9b[] = {
- /* 0x9b00 - 0x9bff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7222, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x7223, 0x0000, 0x7224, 0x0000, 0x0000, 0x0000, 0x0000, 0x7225,
- 0x0000, 0x0000, 0x7226, 0x7227, 0x0000, 0x7228, 0x0000, 0x7229,
- 0x722a, 0x722b, 0x722c, 0x0000, 0x0000, 0x0000, 0x722d, 0x722e,
- 0x0000, 0x5d35, 0x722f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6478, 0x3534, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3321, 0x3a32, 0x7231, 0x7230, 0x4c25, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7233, 0x7234, 0x7232,
- 0x0000, 0x7235, 0x0000, 0x0000, 0x4b62, 0x0000, 0x0000, 0x0000,
- 0x7236, 0x0000, 0x357b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f25,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x7237, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x7239, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x303e, 0x0000,
- 0x0000, 0x723a, 0x4a2b, 0x7238, 0x0000, 0x0000, 0x723b, 0x723c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x723d,
- 0x723e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x723f, 0x0000, 0x4b6e, 0x3b2d, 0x0000, 0x3a7a, 0x412f, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x7240, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x7243, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x7241, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7244, 0x0000,
- 0x0000, 0x3871, 0x7242, 0x0000, 0x0000, 0x0000, 0x0000, 0x7245,
- 0x0000, 0x7246, 0x7247, 0x0000, 0x724b, 0x0000, 0x3b2a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4264, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x724c, 0x7249, 0x7248, 0x724a, 0x0000, 0x0000, 0x0000,
- 0x375f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x7250, 0x724f, 0x724e, 0x0000, 0x0000, 0x3033, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_9c[] = {
- /* 0x9c00 - 0x9cff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x725a, 0x0000, 0x7256, 0x0000,
- 0x7257, 0x7253, 0x7259, 0x0000, 0x7255, 0x3362, 0x0000, 0x0000,
- 0x4f4c, 0x0000, 0x7258, 0x7254, 0x7252, 0x7251, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x725c, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x725f, 0x0000, 0x0000, 0x725e, 0x725d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4949, 0x725b, 0x3073,
- 0x7260, 0x0000, 0x7262, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x336f, 0x724d, 0x3137, 0x0000, 0x0000, 0x7264, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7263, 0x7261,
- 0x432d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4b70, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e5a,
- 0x0000, 0x0000, 0x7265, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x7266, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7267,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7268, 0x0000,
- 0x7269, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x443b, 0x0000, 0x726a,
- 0x0000, 0x4837, 0x0000, 0x726f, 0x726b, 0x0000, 0x0000, 0x0000,
- 0x726c, 0x0000, 0x0000, 0x4b31, 0x4c44, 0x0000, 0x4650, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_9d[] = {
- /* 0x9d00 - 0x9dff */
- 0x0000, 0x0000, 0x0000, 0x7270, 0x0000, 0x0000, 0x7271, 0x463e,
- 0x726e, 0x726d, 0x0000, 0x0000, 0x0000, 0x0000, 0x322a, 0x0000,
- 0x0000, 0x0000, 0x7279, 0x0000, 0x0000, 0x7278, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3175, 0x0000, 0x0000, 0x0000, 0x7276,
- 0x0000, 0x0000, 0x0000, 0x7275, 0x0000, 0x0000, 0x7273, 0x0000,
- 0x337b, 0x0000, 0x7272, 0x3c32, 0x3229, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3963, 0x0000, 0x0000, 0x727c, 0x727b,
- 0x0000, 0x727a, 0x0000, 0x0000, 0x7277, 0x0000, 0x727d, 0x0000,
- 0x727e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x7325, 0x7324, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x7326, 0x0000, 0x0000, 0x312d, 0x7321, 0x7322, 0x0000,
- 0x3974, 0x4c39, 0x0000, 0x0000, 0x7323, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4b32, 0x0000, 0x0000, 0x732b,
- 0x0000, 0x0000, 0x7327, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x732c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7329,
- 0x0000, 0x7328, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x375c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x732d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x732e, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x732f, 0x0000, 0x732a, 0x0000, 0x0000, 0x0000, 0x7274,
- 0x0000, 0x0000, 0x7330, 0x0000, 0x4461, 0x0000, 0x0000, 0x0000,
- 0x7334, 0x0000, 0x7335, 0x7333, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x7332, 0x7338, 0x0000, 0x7331, 0x0000, 0x7336, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7337,
- 0x0000, 0x0000, 0x0000, 0x733a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x7339, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x733c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x733d, 0x0000, 0x733e,
- 0x0000, 0x0000, 0x4f49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x733b, 0x426b, 0x3a6d, 0x0000, 0x0000, 0x733f, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_9e[] = {
- /* 0x9e00 - 0x9eff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x7340, 0x7341, 0x0000, 0x0000, 0x7342, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7343, 0x0000, 0x0000,
- 0x3834, 0x7344, 0x0000, 0x0000, 0x0000, 0x7345, 0x0000, 0x3c2f,
- 0x0000, 0x7346, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x7347, 0x0000, 0x0000, 0x7348, 0x7349, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x734c, 0x734a, 0x4f3c, 0x0000, 0x734b, 0x0000, 0x4e6f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x734d, 0x0000, 0x4e5b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x734e, 0x477e, 0x0000,
- 0x0000, 0x734f, 0x7351, 0x0000, 0x0000, 0x7352, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x7350, 0x396d, 0x4c4d, 0x4b63, 0x5677, 0x0000, 0x5d60, 0x4b7b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x322b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x7354, 0x3550, 0x7355, 0x7356,
- 0x7357, 0x0000, 0x3975, 0x0000, 0x7358, 0x0000, 0x0000, 0x0000,
- 0x6054, 0x4c5b, 0x0000, 0x4263, 0x7359, 0x735b, 0x735a, 0x0000,
- 0x735c, 0x0000, 0x0000, 0x0000, 0x0000, 0x735d, 0x0000, 0x0000,
- 0x735e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x735f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x7360, 0x0000, 0x7361, 0x7362,
- 0x0000, 0x7363, 0x0000, 0x7364, 0x7365, 0x7366, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_9f[] = {
- /* 0x9f00 - 0x9fff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7367,
- 0x7368, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4524, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x385d, 0x0000, 0x736a, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x414d, 0x736b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x736c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4921, 0x0000, 0x0000, 0x736d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x736e, 0x6337, 0x0000, 0x0000, 0x6c5a, 0x706d,
- 0x0000, 0x0000, 0x736f, 0x0000, 0x7370, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7372,
- 0x7373, 0x7374, 0x4e70, 0x7371, 0x0000, 0x0000, 0x7375, 0x7376,
- 0x0000, 0x0000, 0x7378, 0x0000, 0x7377, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x737a, 0x0000, 0x0000, 0x0000, 0x737b, 0x7379,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e36, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x737c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x737d, 0x6354, 0x0000, 0x0000,
- 0x737e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0208_ff[] = {
- /* 0xff00 - 0xffff */
- 0x0000, 0x212a, 0x2149, 0x2174, 0x2170, 0x2173, 0x2175, 0x216d,
- 0x214a, 0x214b, 0x2176, 0x215c, 0x2124, 0x213e, 0x2125, 0x213f,
- 0x2330, 0x2331, 0x2332, 0x2333, 0x2334, 0x2335, 0x2336, 0x2337,
- 0x2338, 0x2339, 0x2127, 0x2128, 0x2163, 0x2161, 0x2164, 0x2129,
- 0x2177, 0x2341, 0x2342, 0x2343, 0x2344, 0x2345, 0x2346, 0x2347,
- 0x2348, 0x2349, 0x234a, 0x234b, 0x234c, 0x234d, 0x234e, 0x234f,
- 0x2350, 0x2351, 0x2352, 0x2353, 0x2354, 0x2355, 0x2356, 0x2357,
- 0x2358, 0x2359, 0x235a, 0x214e, 0x2140, 0x214f, 0x2130, 0x2132,
- 0x212e, 0x2361, 0x2362, 0x2363, 0x2364, 0x2365, 0x2366, 0x2367,
- 0x2368, 0x2369, 0x236a, 0x236b, 0x236c, 0x236d, 0x236e, 0x236f,
- 0x2370, 0x2371, 0x2372, 0x2373, 0x2374, 0x2375, 0x2376, 0x2377,
- 0x2378, 0x2379, 0x237a, 0x2150, 0x2143, 0x2151, 0x2141, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x2131, 0x0000, 0x216f, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const * const unicode_to_jisx0208_map[0x100] = {
- /* 0x00XX - 0x0fXX */
- unicode_to_jisx0208_00,
- 0, 0,
- unicode_to_jisx0208_03,
- unicode_to_jisx0208_04,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* 0x10XX - 0x1fXX */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* 0x20XX - 0x2fXX */
- unicode_to_jisx0208_20,
- unicode_to_jisx0208_21,
- unicode_to_jisx0208_22,
- unicode_to_jisx0208_23,
- unicode_to_jisx0208_24,
- unicode_to_jisx0208_25,
- unicode_to_jisx0208_26,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* 0x30XX - 0x3fXX */
- unicode_to_jisx0208_30,
- 0,
- unicode_to_jisx0208_32,
- unicode_to_jisx0208_33,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* 0x40XX - 0x4fXX */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- unicode_to_jisx0208_4e,
- unicode_to_jisx0208_4f,
- /* 0x50XX - 0x5fXX */
- unicode_to_jisx0208_50,
- unicode_to_jisx0208_51,
- unicode_to_jisx0208_52,
- unicode_to_jisx0208_53,
- unicode_to_jisx0208_54,
- unicode_to_jisx0208_55,
- unicode_to_jisx0208_56,
- unicode_to_jisx0208_57,
- unicode_to_jisx0208_58,
- unicode_to_jisx0208_59,
- unicode_to_jisx0208_5a,
- unicode_to_jisx0208_5b,
- unicode_to_jisx0208_5c,
- unicode_to_jisx0208_5d,
- unicode_to_jisx0208_5e,
- unicode_to_jisx0208_5f,
- /* 0x60XX - 0x6fXX */
- unicode_to_jisx0208_60,
- unicode_to_jisx0208_61,
- unicode_to_jisx0208_62,
- unicode_to_jisx0208_63,
- unicode_to_jisx0208_64,
- unicode_to_jisx0208_65,
- unicode_to_jisx0208_66,
- unicode_to_jisx0208_67,
- unicode_to_jisx0208_68,
- unicode_to_jisx0208_69,
- unicode_to_jisx0208_6a,
- unicode_to_jisx0208_6b,
- unicode_to_jisx0208_6c,
- unicode_to_jisx0208_6d,
- unicode_to_jisx0208_6e,
- unicode_to_jisx0208_6f,
- /* 0x70XX - 0x7fXX */
- unicode_to_jisx0208_70,
- unicode_to_jisx0208_71,
- unicode_to_jisx0208_72,
- unicode_to_jisx0208_73,
- unicode_to_jisx0208_74,
- unicode_to_jisx0208_75,
- unicode_to_jisx0208_76,
- unicode_to_jisx0208_77,
- unicode_to_jisx0208_78,
- unicode_to_jisx0208_79,
- unicode_to_jisx0208_7a,
- unicode_to_jisx0208_7b,
- unicode_to_jisx0208_7c,
- unicode_to_jisx0208_7d,
- unicode_to_jisx0208_7e,
- unicode_to_jisx0208_7f,
- /* 0x80XX - 0x8fXX */
- unicode_to_jisx0208_80,
- unicode_to_jisx0208_81,
- unicode_to_jisx0208_82,
- unicode_to_jisx0208_83,
- unicode_to_jisx0208_84,
- unicode_to_jisx0208_85,
- unicode_to_jisx0208_86,
- unicode_to_jisx0208_87,
- unicode_to_jisx0208_88,
- unicode_to_jisx0208_89,
- unicode_to_jisx0208_8a,
- unicode_to_jisx0208_8b,
- unicode_to_jisx0208_8c,
- unicode_to_jisx0208_8d,
- unicode_to_jisx0208_8e,
- unicode_to_jisx0208_8f,
- /* 0x90XX - 0x9fXX */
- unicode_to_jisx0208_90,
- unicode_to_jisx0208_91,
- unicode_to_jisx0208_92,
- unicode_to_jisx0208_93,
- unicode_to_jisx0208_94,
- unicode_to_jisx0208_95,
- unicode_to_jisx0208_96,
- unicode_to_jisx0208_97,
- unicode_to_jisx0208_98,
- unicode_to_jisx0208_99,
- unicode_to_jisx0208_9a,
- unicode_to_jisx0208_9b,
- unicode_to_jisx0208_9c,
- unicode_to_jisx0208_9d,
- unicode_to_jisx0208_9e,
- unicode_to_jisx0208_9f,
- /* 0xa0XX - 0xafXX */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* 0xb0XX - 0xbfXX */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* 0xc0XX - 0xcfXX */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* 0xd0XX - 0xdfXX */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* 0xe0XX - 0xefXX */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* 0xf0XX - 0xffXX */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- unicode_to_jisx0208_ff,
-};
-
-static uint unicode11ToJisx0208(uint h, uint l)
-{
- unsigned short const *table;
-
- table = unicode_to_jisx0208_map[h];
- if (table != 0) {
- return table[l];
- }
- return 0x0000;
-}
-
-#ifdef USE_JISX0212
-
-/*
- * This data is derived from Unicode 1.1,
- * JIS X 0212 (1990) to Unicode mapping table version 0.9 .
- * (In addition IBM Vender Defined Char included)
- */
-static unsigned short const jisx0212_to_unicode[] = {
- /* 0x2121 - 0x217e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2221 - 0x227e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x02d8,
- 0x02c7, 0x00b8, 0x02d9, 0x02dd, 0x00af, 0x02db, 0x02da, 0x007e,
- 0x0384, 0x0385, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x00a1, 0x00a6, 0x00bf, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x00ba, 0x00aa, 0x00a9, 0x00ae, 0x2122,
- 0x00a4, 0x2116, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2321 - 0x237e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2421 - 0x247e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2521 - 0x257e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2621 - 0x267e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0386, 0x0388, 0x0389, 0x038a, 0x03aa, 0x0000, 0x038c,
- 0x0000, 0x038e, 0x03ab, 0x0000, 0x038f, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x03ac, 0x03ad, 0x03ae, 0x03af, 0x03ca, 0x0390, 0x03cc,
- 0x03c2, 0x03cd, 0x03cb, 0x03b0, 0x03ce, 0x0000, 0x0000,
- /* 0x2721 - 0x277e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
- 0x0408, 0x0409, 0x040a, 0x040b, 0x040c, 0x040e, 0x040f, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
- 0x0458, 0x0459, 0x045a, 0x045b, 0x045c, 0x045e, 0x045f,
- /* 0x2821 - 0x287e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2921 - 0x297e */
- 0x00c6, 0x0110, 0x0000, 0x0126, 0x0000, 0x0132, 0x0000,
- 0x0141, 0x013f, 0x0000, 0x014a, 0x00d8, 0x0152, 0x0000, 0x0166,
- 0x00de, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138,
- 0x0142, 0x0140, 0x0149, 0x014b, 0x00f8, 0x0153, 0x00df, 0x0167,
- 0x00fe, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2a21 - 0x2a7e */
- 0x00c1, 0x00c0, 0x00c4, 0x00c2, 0x0102, 0x01cd, 0x0100,
- 0x0104, 0x00c5, 0x00c3, 0x0106, 0x0108, 0x010c, 0x00c7, 0x010a,
- 0x010e, 0x00c9, 0x00c8, 0x00cb, 0x00ca, 0x011a, 0x0116, 0x0112,
- 0x0118, 0x0000, 0x011c, 0x011e, 0x0122, 0x0120, 0x0124, 0x00cd,
- 0x00cc, 0x00cf, 0x00ce, 0x01cf, 0x0130, 0x012a, 0x012e, 0x0128,
- 0x0134, 0x0136, 0x0139, 0x013d, 0x013b, 0x0143, 0x0147, 0x0145,
- 0x00d1, 0x00d3, 0x00d2, 0x00d6, 0x00d4, 0x01d1, 0x0150, 0x014c,
- 0x00d5, 0x0154, 0x0158, 0x0156, 0x015a, 0x015c, 0x0160, 0x015e,
- 0x0164, 0x0162, 0x00da, 0x00d9, 0x00dc, 0x00db, 0x016c, 0x01d3,
- 0x0170, 0x016a, 0x0172, 0x016e, 0x0168, 0x01d7, 0x01db, 0x01d9,
- 0x01d5, 0x0174, 0x00dd, 0x0178, 0x0176, 0x0179, 0x017d, 0x017b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2b21 - 0x2b7e */
- 0x00e1, 0x00e0, 0x00e4, 0x00e2, 0x0103, 0x01ce, 0x0101,
- 0x0105, 0x00e5, 0x00e3, 0x0107, 0x0109, 0x010d, 0x00e7, 0x010b,
- 0x010f, 0x00e9, 0x00e8, 0x00eb, 0x00ea, 0x011b, 0x0117, 0x0113,
- 0x0119, 0x01f5, 0x011d, 0x011f, 0x0000, 0x0121, 0x0125, 0x00ed,
- 0x00ec, 0x00ef, 0x00ee, 0x01d0, 0x0000, 0x012b, 0x012f, 0x0129,
- 0x0135, 0x0137, 0x013a, 0x013e, 0x013c, 0x0144, 0x0148, 0x0146,
- 0x00f1, 0x00f3, 0x00f2, 0x00f6, 0x00f4, 0x01d2, 0x0151, 0x014d,
- 0x00f5, 0x0155, 0x0159, 0x0157, 0x015b, 0x015d, 0x0161, 0x015f,
- 0x0165, 0x0163, 0x00fa, 0x00f9, 0x00fc, 0x00fb, 0x016d, 0x01d4,
- 0x0171, 0x016b, 0x0173, 0x016f, 0x0169, 0x01d8, 0x01dc, 0x01da,
- 0x01d6, 0x0175, 0x00fd, 0x00ff, 0x0177, 0x017a, 0x017e, 0x017c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2c21 - 0x2c7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2d21 - 0x2d7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2e21 - 0x2e7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x2f21 - 0x2f7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x3021 - 0x307e */
- 0x4e02, 0x4e04, 0x4e05, 0x4e0c, 0x4e12, 0x4e1f, 0x4e23,
- 0x4e24, 0x4e28, 0x4e2b, 0x4e2e, 0x4e2f, 0x4e30, 0x4e35, 0x4e40,
- 0x4e41, 0x4e44, 0x4e47, 0x4e51, 0x4e5a, 0x4e5c, 0x4e63, 0x4e68,
- 0x4e69, 0x4e74, 0x4e75, 0x4e79, 0x4e7f, 0x4e8d, 0x4e96, 0x4e97,
- 0x4e9d, 0x4eaf, 0x4eb9, 0x4ec3, 0x4ed0, 0x4eda, 0x4edb, 0x4ee0,
- 0x4ee1, 0x4ee2, 0x4ee8, 0x4eef, 0x4ef1, 0x4ef3, 0x4ef5, 0x4efd,
- 0x4efe, 0x4eff, 0x4f00, 0x4f02, 0x4f03, 0x4f08, 0x4f0b, 0x4f0c,
- 0x4f12, 0x4f15, 0x4f16, 0x4f17, 0x4f19, 0x4f2e, 0x4f31, 0x4f60,
- 0x4f33, 0x4f35, 0x4f37, 0x4f39, 0x4f3b, 0x4f3e, 0x4f40, 0x4f42,
- 0x4f48, 0x4f49, 0x4f4b, 0x4f4c, 0x4f52, 0x4f54, 0x4f56, 0x4f58,
- 0x4f5f, 0x4f63, 0x4f6a, 0x4f6c, 0x4f6e, 0x4f71, 0x4f77, 0x4f78,
- 0x4f79, 0x4f7a, 0x4f7d, 0x4f7e, 0x4f81, 0x4f82, 0x4f84,
- /* 0x3121 - 0x317e */
- 0x4f85, 0x4f89, 0x4f8a, 0x4f8c, 0x4f8e, 0x4f90, 0x4f92,
- 0x4f93, 0x4f94, 0x4f97, 0x4f99, 0x4f9a, 0x4f9e, 0x4f9f, 0x4fb2,
- 0x4fb7, 0x4fb9, 0x4fbb, 0x4fbc, 0x4fbd, 0x4fbe, 0x4fc0, 0x4fc1,
- 0x4fc5, 0x4fc6, 0x4fc8, 0x4fc9, 0x4fcb, 0x4fcc, 0x4fcd, 0x4fcf,
- 0x4fd2, 0x4fdc, 0x4fe0, 0x4fe2, 0x4ff0, 0x4ff2, 0x4ffc, 0x4ffd,
- 0x4fff, 0x5000, 0x5001, 0x5004, 0x5007, 0x500a, 0x500c, 0x500e,
- 0x5010, 0x5013, 0x5017, 0x5018, 0x501b, 0x501c, 0x501d, 0x501e,
- 0x5022, 0x5027, 0x502e, 0x5030, 0x5032, 0x5033, 0x5035, 0x5040,
- 0x5041, 0x5042, 0x5045, 0x5046, 0x504a, 0x504c, 0x504e, 0x5051,
- 0x5052, 0x5053, 0x5057, 0x5059, 0x505f, 0x5060, 0x5062, 0x5063,
- 0x5066, 0x5067, 0x506a, 0x506d, 0x5070, 0x5071, 0x503b, 0x5081,
- 0x5083, 0x5084, 0x5086, 0x508a, 0x508e, 0x508f, 0x5090,
- /* 0x3221 - 0x327e */
- 0x5092, 0x5093, 0x5094, 0x5096, 0x509b, 0x509c, 0x509e,
- 0x509f, 0x50a0, 0x50a1, 0x50a2, 0x50aa, 0x50af, 0x50b0, 0x50b9,
- 0x50ba, 0x50bd, 0x50c0, 0x50c3, 0x50c4, 0x50c7, 0x50cc, 0x50ce,
- 0x50d0, 0x50d3, 0x50d4, 0x50d8, 0x50dc, 0x50dd, 0x50df, 0x50e2,
- 0x50e4, 0x50e6, 0x50e8, 0x50e9, 0x50ef, 0x50f1, 0x50f6, 0x50fa,
- 0x50fe, 0x5103, 0x5106, 0x5107, 0x5108, 0x510b, 0x510c, 0x510d,
- 0x510e, 0x50f2, 0x5110, 0x5117, 0x5119, 0x511b, 0x511c, 0x511d,
- 0x511e, 0x5123, 0x5127, 0x5128, 0x512c, 0x512d, 0x512f, 0x5131,
- 0x5133, 0x5134, 0x5135, 0x5138, 0x5139, 0x5142, 0x514a, 0x514f,
- 0x5153, 0x5155, 0x5157, 0x5158, 0x515f, 0x5164, 0x5166, 0x517e,
- 0x5183, 0x5184, 0x518b, 0x518e, 0x5198, 0x519d, 0x51a1, 0x51a3,
- 0x51ad, 0x51b8, 0x51ba, 0x51bc, 0x51be, 0x51bf, 0x51c2,
- /* 0x3321 - 0x337e */
- 0x51c8, 0x51cf, 0x51d1, 0x51d2, 0x51d3, 0x51d5, 0x51d8,
- 0x51de, 0x51e2, 0x51e5, 0x51ee, 0x51f2, 0x51f3, 0x51f4, 0x51f7,
- 0x5201, 0x5202, 0x5205, 0x5212, 0x5213, 0x5215, 0x5216, 0x5218,
- 0x5222, 0x5228, 0x5231, 0x5232, 0x5235, 0x523c, 0x5245, 0x5249,
- 0x5255, 0x5257, 0x5258, 0x525a, 0x525c, 0x525f, 0x5260, 0x5261,
- 0x5266, 0x526e, 0x5277, 0x5278, 0x5279, 0x5280, 0x5282, 0x5285,
- 0x528a, 0x528c, 0x5293, 0x5295, 0x5296, 0x5297, 0x5298, 0x529a,
- 0x529c, 0x52a4, 0x52a5, 0x52a6, 0x52a7, 0x52af, 0x52b0, 0x52b6,
- 0x52b7, 0x52b8, 0x52ba, 0x52bb, 0x52bd, 0x52c0, 0x52c4, 0x52c6,
- 0x52c8, 0x52cc, 0x52cf, 0x52d1, 0x52d4, 0x52d6, 0x52db, 0x52dc,
- 0x52e1, 0x52e5, 0x52e8, 0x52e9, 0x52ea, 0x52ec, 0x52f0, 0x52f1,
- 0x52f4, 0x52f6, 0x52f7, 0x5300, 0x5303, 0x530a, 0x530b,
- /* 0x3421 - 0x347e */
- 0x530c, 0x5311, 0x5313, 0x5318, 0x531b, 0x531c, 0x531e,
- 0x531f, 0x5325, 0x5327, 0x5328, 0x5329, 0x532b, 0x532c, 0x532d,
- 0x5330, 0x5332, 0x5335, 0x533c, 0x533d, 0x533e, 0x5342, 0x534c,
- 0x534b, 0x5359, 0x535b, 0x5361, 0x5363, 0x5365, 0x536c, 0x536d,
- 0x5372, 0x5379, 0x537e, 0x5383, 0x5387, 0x5388, 0x538e, 0x5393,
- 0x5394, 0x5399, 0x539d, 0x53a1, 0x53a4, 0x53aa, 0x53ab, 0x53af,
- 0x53b2, 0x53b4, 0x53b5, 0x53b7, 0x53b8, 0x53ba, 0x53bd, 0x53c0,
- 0x53c5, 0x53cf, 0x53d2, 0x53d3, 0x53d5, 0x53da, 0x53dd, 0x53de,
- 0x53e0, 0x53e6, 0x53e7, 0x53f5, 0x5402, 0x5413, 0x541a, 0x5421,
- 0x5427, 0x5428, 0x542a, 0x542f, 0x5431, 0x5434, 0x5435, 0x5443,
- 0x5444, 0x5447, 0x544d, 0x544f, 0x545e, 0x5462, 0x5464, 0x5466,
- 0x5467, 0x5469, 0x546b, 0x546d, 0x546e, 0x5474, 0x547f,
- /* 0x3521 - 0x357e */
- 0x5481, 0x5483, 0x5485, 0x5488, 0x5489, 0x548d, 0x5491,
- 0x5495, 0x5496, 0x549c, 0x549f, 0x54a1, 0x54a6, 0x54a7, 0x54a9,
- 0x54aa, 0x54ad, 0x54ae, 0x54b1, 0x54b7, 0x54b9, 0x54ba, 0x54bb,
- 0x54bf, 0x54c6, 0x54ca, 0x54cd, 0x54ce, 0x54e0, 0x54ea, 0x54ec,
- 0x54ef, 0x54f6, 0x54fc, 0x54fe, 0x54ff, 0x5500, 0x5501, 0x5505,
- 0x5508, 0x5509, 0x550c, 0x550d, 0x550e, 0x5515, 0x552a, 0x552b,
- 0x5532, 0x5535, 0x5536, 0x553b, 0x553c, 0x553d, 0x5541, 0x5547,
- 0x5549, 0x554a, 0x554d, 0x5550, 0x5551, 0x5558, 0x555a, 0x555b,
- 0x555e, 0x5560, 0x5561, 0x5564, 0x5566, 0x557f, 0x5581, 0x5582,
- 0x5586, 0x5588, 0x558e, 0x558f, 0x5591, 0x5592, 0x5593, 0x5594,
- 0x5597, 0x55a3, 0x55a4, 0x55ad, 0x55b2, 0x55bf, 0x55c1, 0x55c3,
- 0x55c6, 0x55c9, 0x55cb, 0x55cc, 0x55ce, 0x55d1, 0x55d2,
- /* 0x3621 - 0x367e */
- 0x55d3, 0x55d7, 0x55d8, 0x55db, 0x55de, 0x55e2, 0x55e9,
- 0x55f6, 0x55ff, 0x5605, 0x5608, 0x560a, 0x560d, 0x560e, 0x560f,
- 0x5610, 0x5611, 0x5612, 0x5619, 0x562c, 0x5630, 0x5633, 0x5635,
- 0x5637, 0x5639, 0x563b, 0x563c, 0x563d, 0x563f, 0x5640, 0x5641,
- 0x5643, 0x5644, 0x5646, 0x5649, 0x564b, 0x564d, 0x564f, 0x5654,
- 0x565e, 0x5660, 0x5661, 0x5662, 0x5663, 0x5666, 0x5669, 0x566d,
- 0x566f, 0x5671, 0x5672, 0x5675, 0x5684, 0x5685, 0x5688, 0x568b,
- 0x568c, 0x5695, 0x5699, 0x569a, 0x569d, 0x569e, 0x569f, 0x56a6,
- 0x56a7, 0x56a8, 0x56a9, 0x56ab, 0x56ac, 0x56ad, 0x56b1, 0x56b3,
- 0x56b7, 0x56be, 0x56c5, 0x56c9, 0x56ca, 0x56cb, 0x56cf, 0x56d0,
- 0x56cc, 0x56cd, 0x56d9, 0x56dc, 0x56dd, 0x56df, 0x56e1, 0x56e4,
- 0x56e5, 0x56e6, 0x56e7, 0x56e8, 0x56f1, 0x56eb, 0x56ed,
- /* 0x3721 - 0x377e */
- 0x56f6, 0x56f7, 0x5701, 0x5702, 0x5707, 0x570a, 0x570c,
- 0x5711, 0x5715, 0x571a, 0x571b, 0x571d, 0x5720, 0x5722, 0x5723,
- 0x5724, 0x5725, 0x5729, 0x572a, 0x572c, 0x572e, 0x572f, 0x5733,
- 0x5734, 0x573d, 0x573e, 0x573f, 0x5745, 0x5746, 0x574c, 0x574d,
- 0x5752, 0x5762, 0x5765, 0x5767, 0x5768, 0x576b, 0x576d, 0x576e,
- 0x576f, 0x5770, 0x5771, 0x5773, 0x5774, 0x5775, 0x5777, 0x5779,
- 0x577a, 0x577b, 0x577c, 0x577e, 0x5781, 0x5783, 0x578c, 0x5794,
- 0x5797, 0x5799, 0x579a, 0x579c, 0x579d, 0x579e, 0x579f, 0x57a1,
- 0x5795, 0x57a7, 0x57a8, 0x57a9, 0x57ac, 0x57b8, 0x57bd, 0x57c7,
- 0x57c8, 0x57cc, 0x57cf, 0x57d5, 0x57dd, 0x57de, 0x57e4, 0x57e6,
- 0x57e7, 0x57e9, 0x57ed, 0x57f0, 0x57f5, 0x57f6, 0x57f8, 0x57fd,
- 0x57fe, 0x57ff, 0x5803, 0x5804, 0x5808, 0x5809, 0x57e1,
- /* 0x3821 - 0x387e */
- 0x580c, 0x580d, 0x581b, 0x581e, 0x581f, 0x5820, 0x5826,
- 0x5827, 0x582d, 0x5832, 0x5839, 0x583f, 0x5849, 0x584c, 0x584d,
- 0x584f, 0x5850, 0x5855, 0x585f, 0x5861, 0x5864, 0x5867, 0x5868,
- 0x5878, 0x587c, 0x587f, 0x5880, 0x5881, 0x5887, 0x5888, 0x5889,
- 0x588a, 0x588c, 0x588d, 0x588f, 0x5890, 0x5894, 0x5896, 0x589d,
- 0x58a0, 0x58a1, 0x58a2, 0x58a6, 0x58a9, 0x58b1, 0x58b2, 0x58c4,
- 0x58bc, 0x58c2, 0x58c8, 0x58cd, 0x58ce, 0x58d0, 0x58d2, 0x58d4,
- 0x58d6, 0x58da, 0x58dd, 0x58e1, 0x58e2, 0x58e9, 0x58f3, 0x5905,
- 0x5906, 0x590b, 0x590c, 0x5912, 0x5913, 0x5914, 0x8641, 0x591d,
- 0x5921, 0x5923, 0x5924, 0x5928, 0x592f, 0x5930, 0x5933, 0x5935,
- 0x5936, 0x593f, 0x5943, 0x5946, 0x5952, 0x5953, 0x5959, 0x595b,
- 0x595d, 0x595e, 0x595f, 0x5961, 0x5963, 0x596b, 0x596d,
- /* 0x3921 - 0x397e */
- 0x596f, 0x5972, 0x5975, 0x5976, 0x5979, 0x597b, 0x597c,
- 0x598b, 0x598c, 0x598e, 0x5992, 0x5995, 0x5997, 0x599f, 0x59a4,
- 0x59a7, 0x59ad, 0x59ae, 0x59af, 0x59b0, 0x59b3, 0x59b7, 0x59ba,
- 0x59bc, 0x59c1, 0x59c3, 0x59c4, 0x59c8, 0x59ca, 0x59cd, 0x59d2,
- 0x59dd, 0x59de, 0x59df, 0x59e3, 0x59e4, 0x59e7, 0x59ee, 0x59ef,
- 0x59f1, 0x59f2, 0x59f4, 0x59f7, 0x5a00, 0x5a04, 0x5a0c, 0x5a0d,
- 0x5a0e, 0x5a12, 0x5a13, 0x5a1e, 0x5a23, 0x5a24, 0x5a27, 0x5a28,
- 0x5a2a, 0x5a2d, 0x5a30, 0x5a44, 0x5a45, 0x5a47, 0x5a48, 0x5a4c,
- 0x5a50, 0x5a55, 0x5a5e, 0x5a63, 0x5a65, 0x5a67, 0x5a6d, 0x5a77,
- 0x5a7a, 0x5a7b, 0x5a7e, 0x5a8b, 0x5a90, 0x5a93, 0x5a96, 0x5a99,
- 0x5a9c, 0x5a9e, 0x5a9f, 0x5aa0, 0x5aa2, 0x5aa7, 0x5aac, 0x5ab1,
- 0x5ab2, 0x5ab3, 0x5ab5, 0x5ab8, 0x5aba, 0x5abb, 0x5abf,
- /* 0x3a21 - 0x3a7e */
- 0x5ac4, 0x5ac6, 0x5ac8, 0x5acf, 0x5ada, 0x5adc, 0x5ae0,
- 0x5ae5, 0x5aea, 0x5aee, 0x5af5, 0x5af6, 0x5afd, 0x5b00, 0x5b01,
- 0x5b08, 0x5b17, 0x5b34, 0x5b19, 0x5b1b, 0x5b1d, 0x5b21, 0x5b25,
- 0x5b2d, 0x5b38, 0x5b41, 0x5b4b, 0x5b4c, 0x5b52, 0x5b56, 0x5b5e,
- 0x5b68, 0x5b6e, 0x5b6f, 0x5b7c, 0x5b7d, 0x5b7e, 0x5b7f, 0x5b81,
- 0x5b84, 0x5b86, 0x5b8a, 0x5b8e, 0x5b90, 0x5b91, 0x5b93, 0x5b94,
- 0x5b96, 0x5ba8, 0x5ba9, 0x5bac, 0x5bad, 0x5baf, 0x5bb1, 0x5bb2,
- 0x5bb7, 0x5bba, 0x5bbc, 0x5bc0, 0x5bc1, 0x5bcd, 0x5bcf, 0x5bd6,
- 0x5bd7, 0x5bd8, 0x5bd9, 0x5bda, 0x5be0, 0x5bef, 0x5bf1, 0x5bf4,
- 0x5bfd, 0x5c0c, 0x5c17, 0x5c1e, 0x5c1f, 0x5c23, 0x5c26, 0x5c29,
- 0x5c2b, 0x5c2c, 0x5c2e, 0x5c30, 0x5c32, 0x5c35, 0x5c36, 0x5c59,
- 0x5c5a, 0x5c5c, 0x5c62, 0x5c63, 0x5c67, 0x5c68, 0x5c69,
- /* 0x3b21 - 0x3b7e */
- 0x5c6d, 0x5c70, 0x5c74, 0x5c75, 0x5c7a, 0x5c7b, 0x5c7c,
- 0x5c7d, 0x5c87, 0x5c88, 0x5c8a, 0x5c8f, 0x5c92, 0x5c9d, 0x5c9f,
- 0x5ca0, 0x5ca2, 0x5ca3, 0x5ca6, 0x5caa, 0x5cb2, 0x5cb4, 0x5cb5,
- 0x5cba, 0x5cc9, 0x5ccb, 0x5cd2, 0x5cdd, 0x5cd7, 0x5cee, 0x5cf1,
- 0x5cf2, 0x5cf4, 0x5d01, 0x5d06, 0x5d0d, 0x5d12, 0x5d2b, 0x5d23,
- 0x5d24, 0x5d26, 0x5d27, 0x5d31, 0x5d34, 0x5d39, 0x5d3d, 0x5d3f,
- 0x5d42, 0x5d43, 0x5d46, 0x5d48, 0x5d55, 0x5d51, 0x5d59, 0x5d4a,
- 0x5d5f, 0x5d60, 0x5d61, 0x5d62, 0x5d64, 0x5d6a, 0x5d6d, 0x5d70,
- 0x5d79, 0x5d7a, 0x5d7e, 0x5d7f, 0x5d81, 0x5d83, 0x5d88, 0x5d8a,
- 0x5d92, 0x5d93, 0x5d94, 0x5d95, 0x5d99, 0x5d9b, 0x5d9f, 0x5da0,
- 0x5da7, 0x5dab, 0x5db0, 0x5db4, 0x5db8, 0x5db9, 0x5dc3, 0x5dc7,
- 0x5dcb, 0x5dd0, 0x5dce, 0x5dd8, 0x5dd9, 0x5de0, 0x5de4,
- /* 0x3c21 - 0x3c7e */
- 0x5de9, 0x5df8, 0x5df9, 0x5e00, 0x5e07, 0x5e0d, 0x5e12,
- 0x5e14, 0x5e15, 0x5e18, 0x5e1f, 0x5e20, 0x5e2e, 0x5e28, 0x5e32,
- 0x5e35, 0x5e3e, 0x5e4b, 0x5e50, 0x5e49, 0x5e51, 0x5e56, 0x5e58,
- 0x5e5b, 0x5e5c, 0x5e5e, 0x5e68, 0x5e6a, 0x5e6b, 0x5e6c, 0x5e6d,
- 0x5e6e, 0x5e70, 0x5e80, 0x5e8b, 0x5e8e, 0x5ea2, 0x5ea4, 0x5ea5,
- 0x5ea8, 0x5eaa, 0x5eac, 0x5eb1, 0x5eb3, 0x5ebd, 0x5ebe, 0x5ebf,
- 0x5ec6, 0x5ecc, 0x5ecb, 0x5ece, 0x5ed1, 0x5ed2, 0x5ed4, 0x5ed5,
- 0x5edc, 0x5ede, 0x5ee5, 0x5eeb, 0x5f02, 0x5f06, 0x5f07, 0x5f08,
- 0x5f0e, 0x5f19, 0x5f1c, 0x5f1d, 0x5f21, 0x5f22, 0x5f23, 0x5f24,
- 0x5f28, 0x5f2b, 0x5f2c, 0x5f2e, 0x5f30, 0x5f34, 0x5f36, 0x5f3b,
- 0x5f3d, 0x5f3f, 0x5f40, 0x5f44, 0x5f45, 0x5f47, 0x5f4d, 0x5f50,
- 0x5f54, 0x5f58, 0x5f5b, 0x5f60, 0x5f63, 0x5f64, 0x5f67,
- /* 0x3d21 - 0x3d7e */
- 0x5f6f, 0x5f72, 0x5f74, 0x5f75, 0x5f78, 0x5f7a, 0x5f7d,
- 0x5f7e, 0x5f89, 0x5f8d, 0x5f8f, 0x5f96, 0x5f9c, 0x5f9d, 0x5fa2,
- 0x5fa7, 0x5fab, 0x5fa4, 0x5fac, 0x5faf, 0x5fb0, 0x5fb1, 0x5fb8,
- 0x5fc4, 0x5fc7, 0x5fc8, 0x5fc9, 0x5fcb, 0x5fd0, 0x5fd1, 0x5fd2,
- 0x5fd3, 0x5fd4, 0x5fde, 0x5fe1, 0x5fe2, 0x5fe8, 0x5fe9, 0x5fea,
- 0x5fec, 0x5fed, 0x5fee, 0x5fef, 0x5ff2, 0x5ff3, 0x5ff6, 0x5ffa,
- 0x5ffc, 0x6007, 0x600a, 0x600d, 0x6013, 0x6014, 0x6017, 0x6018,
- 0x601a, 0x601f, 0x6024, 0x602d, 0x6033, 0x6035, 0x6040, 0x6047,
- 0x6048, 0x6049, 0x604c, 0x6051, 0x6054, 0x6056, 0x6057, 0x605d,
- 0x6061, 0x6067, 0x6071, 0x607e, 0x607f, 0x6082, 0x6086, 0x6088,
- 0x608a, 0x608e, 0x6091, 0x6093, 0x6095, 0x6098, 0x609d, 0x609e,
- 0x60a2, 0x60a4, 0x60a5, 0x60a8, 0x60b0, 0x60b1, 0x60b7,
- /* 0x3e21 - 0x3e7e */
- 0x60bb, 0x60be, 0x60c2, 0x60c4, 0x60c8, 0x60c9, 0x60ca,
- 0x60cb, 0x60ce, 0x60cf, 0x60d4, 0x60d5, 0x60d9, 0x60db, 0x60dd,
- 0x60de, 0x60e2, 0x60e5, 0x60f2, 0x60f5, 0x60f8, 0x60fc, 0x60fd,
- 0x6102, 0x6107, 0x610a, 0x610c, 0x6110, 0x6111, 0x6112, 0x6113,
- 0x6114, 0x6116, 0x6117, 0x6119, 0x611c, 0x611e, 0x6122, 0x612a,
- 0x612b, 0x6130, 0x6131, 0x6135, 0x6136, 0x6137, 0x6139, 0x6141,
- 0x6145, 0x6146, 0x6149, 0x615e, 0x6160, 0x616c, 0x6172, 0x6178,
- 0x617b, 0x617c, 0x617f, 0x6180, 0x6181, 0x6183, 0x6184, 0x618b,
- 0x618d, 0x6192, 0x6193, 0x6197, 0x6198, 0x619c, 0x619d, 0x619f,
- 0x61a0, 0x61a5, 0x61a8, 0x61aa, 0x61ad, 0x61b8, 0x61b9, 0x61bc,
- 0x61c0, 0x61c1, 0x61c2, 0x61ce, 0x61cf, 0x61d5, 0x61dc, 0x61dd,
- 0x61de, 0x61df, 0x61e1, 0x61e2, 0x61e7, 0x61e9, 0x61e5,
- /* 0x3f21 - 0x3f7e */
- 0x61ec, 0x61ed, 0x61ef, 0x6201, 0x6203, 0x6204, 0x6207,
- 0x6213, 0x6215, 0x621c, 0x6220, 0x6222, 0x6223, 0x6227, 0x6229,
- 0x622b, 0x6239, 0x623d, 0x6242, 0x6243, 0x6244, 0x6246, 0x624c,
- 0x6250, 0x6251, 0x6252, 0x6254, 0x6256, 0x625a, 0x625c, 0x6264,
- 0x626d, 0x626f, 0x6273, 0x627a, 0x627d, 0x628d, 0x628e, 0x628f,
- 0x6290, 0x62a6, 0x62a8, 0x62b3, 0x62b6, 0x62b7, 0x62ba, 0x62be,
- 0x62bf, 0x62c4, 0x62ce, 0x62d5, 0x62d6, 0x62da, 0x62ea, 0x62f2,
- 0x62f4, 0x62fc, 0x62fd, 0x6303, 0x6304, 0x630a, 0x630b, 0x630d,
- 0x6310, 0x6313, 0x6316, 0x6318, 0x6329, 0x632a, 0x632d, 0x6335,
- 0x6336, 0x6339, 0x633c, 0x6341, 0x6342, 0x6343, 0x6344, 0x6346,
- 0x634a, 0x634b, 0x634e, 0x6352, 0x6353, 0x6354, 0x6358, 0x635b,
- 0x6365, 0x6366, 0x636c, 0x636d, 0x6371, 0x6374, 0x6375,
- /* 0x4021 - 0x407e */
- 0x6378, 0x637c, 0x637d, 0x637f, 0x6382, 0x6384, 0x6387,
- 0x638a, 0x6390, 0x6394, 0x6395, 0x6399, 0x639a, 0x639e, 0x63a4,
- 0x63a6, 0x63ad, 0x63ae, 0x63af, 0x63bd, 0x63c1, 0x63c5, 0x63c8,
- 0x63ce, 0x63d1, 0x63d3, 0x63d4, 0x63d5, 0x63dc, 0x63e0, 0x63e5,
- 0x63ea, 0x63ec, 0x63f2, 0x63f3, 0x63f5, 0x63f8, 0x63f9, 0x6409,
- 0x640a, 0x6410, 0x6412, 0x6414, 0x6418, 0x641e, 0x6420, 0x6422,
- 0x6424, 0x6425, 0x6429, 0x642a, 0x642f, 0x6430, 0x6435, 0x643d,
- 0x643f, 0x644b, 0x644f, 0x6451, 0x6452, 0x6453, 0x6454, 0x645a,
- 0x645b, 0x645c, 0x645d, 0x645f, 0x6460, 0x6461, 0x6463, 0x646d,
- 0x6473, 0x6474, 0x647b, 0x647d, 0x6485, 0x6487, 0x648f, 0x6490,
- 0x6491, 0x6498, 0x6499, 0x649b, 0x649d, 0x649f, 0x64a1, 0x64a3,
- 0x64a6, 0x64a8, 0x64ac, 0x64b3, 0x64bd, 0x64be, 0x64bf,
- /* 0x4121 - 0x417e */
- 0x64c4, 0x64c9, 0x64ca, 0x64cb, 0x64cc, 0x64ce, 0x64d0,
- 0x64d1, 0x64d5, 0x64d7, 0x64e4, 0x64e5, 0x64e9, 0x64ea, 0x64ed,
- 0x64f0, 0x64f5, 0x64f7, 0x64fb, 0x64ff, 0x6501, 0x6504, 0x6508,
- 0x6509, 0x650a, 0x650f, 0x6513, 0x6514, 0x6516, 0x6519, 0x651b,
- 0x651e, 0x651f, 0x6522, 0x6526, 0x6529, 0x652e, 0x6531, 0x653a,
- 0x653c, 0x653d, 0x6543, 0x6547, 0x6549, 0x6550, 0x6552, 0x6554,
- 0x655f, 0x6560, 0x6567, 0x656b, 0x657a, 0x657d, 0x6581, 0x6585,
- 0x658a, 0x6592, 0x6595, 0x6598, 0x659d, 0x65a0, 0x65a3, 0x65a6,
- 0x65ae, 0x65b2, 0x65b3, 0x65b4, 0x65bf, 0x65c2, 0x65c8, 0x65c9,
- 0x65ce, 0x65d0, 0x65d4, 0x65d6, 0x65d8, 0x65df, 0x65f0, 0x65f2,
- 0x65f4, 0x65f5, 0x65f9, 0x65fe, 0x65ff, 0x6600, 0x6604, 0x6608,
- 0x6609, 0x660d, 0x6611, 0x6612, 0x6615, 0x6616, 0x661d,
- /* 0x4221 - 0x427e */
- 0x661e, 0x6621, 0x6622, 0x6623, 0x6624, 0x6626, 0x6629,
- 0x662a, 0x662b, 0x662c, 0x662e, 0x6630, 0x6631, 0x6633, 0x6639,
- 0x6637, 0x6640, 0x6645, 0x6646, 0x664a, 0x664c, 0x6651, 0x664e,
- 0x6657, 0x6658, 0x6659, 0x665b, 0x665c, 0x6660, 0x6661, 0x66fb,
- 0x666a, 0x666b, 0x666c, 0x667e, 0x6673, 0x6675, 0x667f, 0x6677,
- 0x6678, 0x6679, 0x667b, 0x6680, 0x667c, 0x668b, 0x668c, 0x668d,
- 0x6690, 0x6692, 0x6699, 0x669a, 0x669b, 0x669c, 0x669f, 0x66a0,
- 0x66a4, 0x66ad, 0x66b1, 0x66b2, 0x66b5, 0x66bb, 0x66bf, 0x66c0,
- 0x66c2, 0x66c3, 0x66c8, 0x66cc, 0x66ce, 0x66cf, 0x66d4, 0x66db,
- 0x66df, 0x66e8, 0x66eb, 0x66ec, 0x66ee, 0x66fa, 0x6705, 0x6707,
- 0x670e, 0x6713, 0x6719, 0x671c, 0x6720, 0x6722, 0x6733, 0x673e,
- 0x6745, 0x6747, 0x6748, 0x674c, 0x6754, 0x6755, 0x675d,
- /* 0x4321 - 0x437e */
- 0x6766, 0x676c, 0x676e, 0x6774, 0x6776, 0x677b, 0x6781,
- 0x6784, 0x678e, 0x678f, 0x6791, 0x6793, 0x6796, 0x6798, 0x6799,
- 0x679b, 0x67b0, 0x67b1, 0x67b2, 0x67b5, 0x67bb, 0x67bc, 0x67bd,
- 0x67f9, 0x67c0, 0x67c2, 0x67c3, 0x67c5, 0x67c8, 0x67c9, 0x67d2,
- 0x67d7, 0x67d9, 0x67dc, 0x67e1, 0x67e6, 0x67f0, 0x67f2, 0x67f6,
- 0x67f7, 0x6852, 0x6814, 0x6819, 0x681d, 0x681f, 0x6828, 0x6827,
- 0x682c, 0x682d, 0x682f, 0x6830, 0x6831, 0x6833, 0x683b, 0x683f,
- 0x6844, 0x6845, 0x684a, 0x684c, 0x6855, 0x6857, 0x6858, 0x685b,
- 0x686b, 0x686e, 0x686f, 0x6870, 0x6871, 0x6872, 0x6875, 0x6879,
- 0x687a, 0x687b, 0x687c, 0x6882, 0x6884, 0x6886, 0x6888, 0x6896,
- 0x6898, 0x689a, 0x689c, 0x68a1, 0x68a3, 0x68a5, 0x68a9, 0x68aa,
- 0x68ae, 0x68b2, 0x68bb, 0x68c5, 0x68c8, 0x68cc, 0x68cf,
- /* 0x4421 - 0x447e */
- 0x68d0, 0x68d1, 0x68d3, 0x68d6, 0x68d9, 0x68dc, 0x68dd,
- 0x68e5, 0x68e8, 0x68ea, 0x68eb, 0x68ec, 0x68ed, 0x68f0, 0x68f1,
- 0x68f5, 0x68f6, 0x68fb, 0x68fc, 0x68fd, 0x6906, 0x6909, 0x690a,
- 0x6910, 0x6911, 0x6913, 0x6916, 0x6917, 0x6931, 0x6933, 0x6935,
- 0x6938, 0x693b, 0x6942, 0x6945, 0x6949, 0x694e, 0x6957, 0x695b,
- 0x6963, 0x6964, 0x6965, 0x6966, 0x6968, 0x6969, 0x696c, 0x6970,
- 0x6971, 0x6972, 0x697a, 0x697b, 0x697f, 0x6980, 0x698d, 0x6992,
- 0x6996, 0x6998, 0x69a1, 0x69a5, 0x69a6, 0x69a8, 0x69ab, 0x69ad,
- 0x69af, 0x69b7, 0x69b8, 0x69ba, 0x69bc, 0x69c5, 0x69c8, 0x69d1,
- 0x69d6, 0x69d7, 0x69e2, 0x69e5, 0x69ee, 0x69ef, 0x69f1, 0x69f3,
- 0x69f5, 0x69fe, 0x6a00, 0x6a01, 0x6a03, 0x6a0f, 0x6a11, 0x6a15,
- 0x6a1a, 0x6a1d, 0x6a20, 0x6a24, 0x6a28, 0x6a30, 0x6a32,
- /* 0x4521 - 0x457e */
- 0x6a34, 0x6a37, 0x6a3b, 0x6a3e, 0x6a3f, 0x6a45, 0x6a46,
- 0x6a49, 0x6a4a, 0x6a4e, 0x6a50, 0x6a51, 0x6a52, 0x6a55, 0x6a56,
- 0x6a5b, 0x6a64, 0x6a67, 0x6a6a, 0x6a71, 0x6a73, 0x6a7e, 0x6a81,
- 0x6a83, 0x6a86, 0x6a87, 0x6a89, 0x6a8b, 0x6a91, 0x6a9b, 0x6a9d,
- 0x6a9e, 0x6a9f, 0x6aa5, 0x6aab, 0x6aaf, 0x6ab0, 0x6ab1, 0x6ab4,
- 0x6abd, 0x6abe, 0x6abf, 0x6ac6, 0x6ac9, 0x6ac8, 0x6acc, 0x6ad0,
- 0x6ad4, 0x6ad5, 0x6ad6, 0x6adc, 0x6add, 0x6ae4, 0x6ae7, 0x6aec,
- 0x6af0, 0x6af1, 0x6af2, 0x6afc, 0x6afd, 0x6b02, 0x6b03, 0x6b06,
- 0x6b07, 0x6b09, 0x6b0f, 0x6b10, 0x6b11, 0x6b17, 0x6b1b, 0x6b1e,
- 0x6b24, 0x6b28, 0x6b2b, 0x6b2c, 0x6b2f, 0x6b35, 0x6b36, 0x6b3b,
- 0x6b3f, 0x6b46, 0x6b4a, 0x6b4d, 0x6b52, 0x6b56, 0x6b58, 0x6b5d,
- 0x6b60, 0x6b67, 0x6b6b, 0x6b6e, 0x6b70, 0x6b75, 0x6b7d,
- /* 0x4621 - 0x467e */
- 0x6b7e, 0x6b82, 0x6b85, 0x6b97, 0x6b9b, 0x6b9f, 0x6ba0,
- 0x6ba2, 0x6ba3, 0x6ba8, 0x6ba9, 0x6bac, 0x6bad, 0x6bae, 0x6bb0,
- 0x6bb8, 0x6bb9, 0x6bbd, 0x6bbe, 0x6bc3, 0x6bc4, 0x6bc9, 0x6bcc,
- 0x6bd6, 0x6bda, 0x6be1, 0x6be3, 0x6be6, 0x6be7, 0x6bee, 0x6bf1,
- 0x6bf7, 0x6bf9, 0x6bff, 0x6c02, 0x6c04, 0x6c05, 0x6c09, 0x6c0d,
- 0x6c0e, 0x6c10, 0x6c12, 0x6c19, 0x6c1f, 0x6c26, 0x6c27, 0x6c28,
- 0x6c2c, 0x6c2e, 0x6c33, 0x6c35, 0x6c36, 0x6c3a, 0x6c3b, 0x6c3f,
- 0x6c4a, 0x6c4b, 0x6c4d, 0x6c4f, 0x6c52, 0x6c54, 0x6c59, 0x6c5b,
- 0x6c5c, 0x6c6b, 0x6c6d, 0x6c6f, 0x6c74, 0x6c76, 0x6c78, 0x6c79,
- 0x6c7b, 0x6c85, 0x6c86, 0x6c87, 0x6c89, 0x6c94, 0x6c95, 0x6c97,
- 0x6c98, 0x6c9c, 0x6c9f, 0x6cb0, 0x6cb2, 0x6cb4, 0x6cc2, 0x6cc6,
- 0x6ccd, 0x6ccf, 0x6cd0, 0x6cd1, 0x6cd2, 0x6cd4, 0x6cd6,
- /* 0x4721 - 0x477e */
- 0x6cda, 0x6cdc, 0x6ce0, 0x6ce7, 0x6ce9, 0x6ceb, 0x6cec,
- 0x6cee, 0x6cf2, 0x6cf4, 0x6d04, 0x6d07, 0x6d0a, 0x6d0e, 0x6d0f,
- 0x6d11, 0x6d13, 0x6d1a, 0x6d26, 0x6d27, 0x6d28, 0x6c67, 0x6d2e,
- 0x6d2f, 0x6d31, 0x6d39, 0x6d3c, 0x6d3f, 0x6d57, 0x6d5e, 0x6d5f,
- 0x6d61, 0x6d65, 0x6d67, 0x6d6f, 0x6d70, 0x6d7c, 0x6d82, 0x6d87,
- 0x6d91, 0x6d92, 0x6d94, 0x6d96, 0x6d97, 0x6d98, 0x6daa, 0x6dac,
- 0x6db4, 0x6db7, 0x6db9, 0x6dbd, 0x6dbf, 0x6dc4, 0x6dc8, 0x6dca,
- 0x6dce, 0x6dcf, 0x6dd6, 0x6ddb, 0x6ddd, 0x6ddf, 0x6de0, 0x6de2,
- 0x6de5, 0x6de9, 0x6def, 0x6df0, 0x6df4, 0x6df6, 0x6dfc, 0x6e00,
- 0x6e04, 0x6e1e, 0x6e22, 0x6e27, 0x6e32, 0x6e36, 0x6e39, 0x6e3b,
- 0x6e3c, 0x6e44, 0x6e45, 0x6e48, 0x6e49, 0x6e4b, 0x6e4f, 0x6e51,
- 0x6e52, 0x6e53, 0x6e54, 0x6e57, 0x6e5c, 0x6e5d, 0x6e5e,
- /* 0x4821 - 0x487e */
- 0x6e62, 0x6e63, 0x6e68, 0x6e73, 0x6e7b, 0x6e7d, 0x6e8d,
- 0x6e93, 0x6e99, 0x6ea0, 0x6ea7, 0x6ead, 0x6eae, 0x6eb1, 0x6eb3,
- 0x6ebb, 0x6ebf, 0x6ec0, 0x6ec1, 0x6ec3, 0x6ec7, 0x6ec8, 0x6eca,
- 0x6ecd, 0x6ece, 0x6ecf, 0x6eeb, 0x6eed, 0x6eee, 0x6ef9, 0x6efb,
- 0x6efd, 0x6f04, 0x6f08, 0x6f0a, 0x6f0c, 0x6f0d, 0x6f16, 0x6f18,
- 0x6f1a, 0x6f1b, 0x6f26, 0x6f29, 0x6f2a, 0x6f2f, 0x6f30, 0x6f33,
- 0x6f36, 0x6f3b, 0x6f3c, 0x6f2d, 0x6f4f, 0x6f51, 0x6f52, 0x6f53,
- 0x6f57, 0x6f59, 0x6f5a, 0x6f5d, 0x6f5e, 0x6f61, 0x6f62, 0x6f68,
- 0x6f6c, 0x6f7d, 0x6f7e, 0x6f83, 0x6f87, 0x6f88, 0x6f8b, 0x6f8c,
- 0x6f8d, 0x6f90, 0x6f92, 0x6f93, 0x6f94, 0x6f96, 0x6f9a, 0x6f9f,
- 0x6fa0, 0x6fa5, 0x6fa6, 0x6fa7, 0x6fa8, 0x6fae, 0x6faf, 0x6fb0,
- 0x6fb5, 0x6fb6, 0x6fbc, 0x6fc5, 0x6fc7, 0x6fc8, 0x6fca,
- /* 0x4921 - 0x497e */
- 0x6fda, 0x6fde, 0x6fe8, 0x6fe9, 0x6ff0, 0x6ff5, 0x6ff9,
- 0x6ffc, 0x6ffd, 0x7000, 0x7005, 0x7006, 0x7007, 0x700d, 0x7017,
- 0x7020, 0x7023, 0x702f, 0x7034, 0x7037, 0x7039, 0x703c, 0x7043,
- 0x7044, 0x7048, 0x7049, 0x704a, 0x704b, 0x7054, 0x7055, 0x705d,
- 0x705e, 0x704e, 0x7064, 0x7065, 0x706c, 0x706e, 0x7075, 0x7076,
- 0x707e, 0x7081, 0x7085, 0x7086, 0x7094, 0x7095, 0x7096, 0x7097,
- 0x7098, 0x709b, 0x70a4, 0x70ab, 0x70b0, 0x70b1, 0x70b4, 0x70b7,
- 0x70ca, 0x70d1, 0x70d3, 0x70d4, 0x70d5, 0x70d6, 0x70d8, 0x70dc,
- 0x70e4, 0x70fa, 0x7103, 0x7104, 0x7105, 0x7106, 0x7107, 0x710b,
- 0x710c, 0x710f, 0x711e, 0x7120, 0x712b, 0x712d, 0x712f, 0x7130,
- 0x7131, 0x7138, 0x7141, 0x7145, 0x7146, 0x7147, 0x714a, 0x714b,
- 0x7150, 0x7152, 0x7157, 0x715a, 0x715c, 0x715e, 0x7160,
- /* 0x4a21 - 0x4a7e */
- 0x7168, 0x7179, 0x7180, 0x7185, 0x7187, 0x718c, 0x7192,
- 0x719a, 0x719b, 0x71a0, 0x71a2, 0x71af, 0x71b0, 0x71b2, 0x71b3,
- 0x71ba, 0x71bf, 0x71c0, 0x71c1, 0x71c4, 0x71cb, 0x71cc, 0x71d3,
- 0x71d6, 0x71d9, 0x71da, 0x71dc, 0x71f8, 0x71fe, 0x7200, 0x7207,
- 0x7208, 0x7209, 0x7213, 0x7217, 0x721a, 0x721d, 0x721f, 0x7224,
- 0x722b, 0x722f, 0x7234, 0x7238, 0x7239, 0x7241, 0x7242, 0x7243,
- 0x7245, 0x724e, 0x724f, 0x7250, 0x7253, 0x7255, 0x7256, 0x725a,
- 0x725c, 0x725e, 0x7260, 0x7263, 0x7268, 0x726b, 0x726e, 0x726f,
- 0x7271, 0x7277, 0x7278, 0x727b, 0x727c, 0x727f, 0x7284, 0x7289,
- 0x728d, 0x728e, 0x7293, 0x729b, 0x72a8, 0x72ad, 0x72ae, 0x72b1,
- 0x72b4, 0x72be, 0x72c1, 0x72c7, 0x72c9, 0x72cc, 0x72d5, 0x72d6,
- 0x72d8, 0x72df, 0x72e5, 0x72f3, 0x72f4, 0x72fa, 0x72fb,
- /* 0x4b21 - 0x4b7e */
- 0x72fe, 0x7302, 0x7304, 0x7305, 0x7307, 0x730b, 0x730d,
- 0x7312, 0x7313, 0x7318, 0x7319, 0x731e, 0x7322, 0x7324, 0x7327,
- 0x7328, 0x732c, 0x7331, 0x7332, 0x7335, 0x733a, 0x733b, 0x733d,
- 0x7343, 0x734d, 0x7350, 0x7352, 0x7356, 0x7358, 0x735d, 0x735e,
- 0x735f, 0x7360, 0x7366, 0x7367, 0x7369, 0x736b, 0x736c, 0x736e,
- 0x736f, 0x7371, 0x7377, 0x7379, 0x737c, 0x7380, 0x7381, 0x7383,
- 0x7385, 0x7386, 0x738e, 0x7390, 0x7393, 0x7395, 0x7397, 0x7398,
- 0x739c, 0x739e, 0x739f, 0x73a0, 0x73a2, 0x73a5, 0x73a6, 0x73aa,
- 0x73ab, 0x73ad, 0x73b5, 0x73b7, 0x73b9, 0x73bc, 0x73bd, 0x73bf,
- 0x73c5, 0x73c6, 0x73c9, 0x73cb, 0x73cc, 0x73cf, 0x73d2, 0x73d3,
- 0x73d6, 0x73d9, 0x73dd, 0x73e1, 0x73e3, 0x73e6, 0x73e7, 0x73e9,
- 0x73f4, 0x73f5, 0x73f7, 0x73f9, 0x73fa, 0x73fb, 0x73fd,
- /* 0x4c21 - 0x4c7e */
- 0x73ff, 0x7400, 0x7401, 0x7404, 0x7407, 0x740a, 0x7411,
- 0x741a, 0x741b, 0x7424, 0x7426, 0x7428, 0x7429, 0x742a, 0x742b,
- 0x742c, 0x742d, 0x742e, 0x742f, 0x7430, 0x7431, 0x7439, 0x7440,
- 0x7443, 0x7444, 0x7446, 0x7447, 0x744b, 0x744d, 0x7451, 0x7452,
- 0x7457, 0x745d, 0x7462, 0x7466, 0x7467, 0x7468, 0x746b, 0x746d,
- 0x746e, 0x7471, 0x7472, 0x7480, 0x7481, 0x7485, 0x7486, 0x7487,
- 0x7489, 0x748f, 0x7490, 0x7491, 0x7492, 0x7498, 0x7499, 0x749a,
- 0x749c, 0x749f, 0x74a0, 0x74a1, 0x74a3, 0x74a6, 0x74a8, 0x74a9,
- 0x74aa, 0x74ab, 0x74ae, 0x74af, 0x74b1, 0x74b2, 0x74b5, 0x74b9,
- 0x74bb, 0x74bf, 0x74c8, 0x74c9, 0x74cc, 0x74d0, 0x74d3, 0x74d8,
- 0x74da, 0x74db, 0x74de, 0x74df, 0x74e4, 0x74e8, 0x74ea, 0x74eb,
- 0x74ef, 0x74f4, 0x74fa, 0x74fb, 0x74fc, 0x74ff, 0x7506,
- /* 0x4d21 - 0x4d7e */
- 0x7512, 0x7516, 0x7517, 0x7520, 0x7521, 0x7524, 0x7527,
- 0x7529, 0x752a, 0x752f, 0x7536, 0x7539, 0x753d, 0x753e, 0x753f,
- 0x7540, 0x7543, 0x7547, 0x7548, 0x754e, 0x7550, 0x7552, 0x7557,
- 0x755e, 0x755f, 0x7561, 0x756f, 0x7571, 0x7579, 0x757a, 0x757b,
- 0x757c, 0x757d, 0x757e, 0x7581, 0x7585, 0x7590, 0x7592, 0x7593,
- 0x7595, 0x7599, 0x759c, 0x75a2, 0x75a4, 0x75b4, 0x75ba, 0x75bf,
- 0x75c0, 0x75c1, 0x75c4, 0x75c6, 0x75cc, 0x75ce, 0x75cf, 0x75d7,
- 0x75dc, 0x75df, 0x75e0, 0x75e1, 0x75e4, 0x75e7, 0x75ec, 0x75ee,
- 0x75ef, 0x75f1, 0x75f9, 0x7600, 0x7602, 0x7603, 0x7604, 0x7607,
- 0x7608, 0x760a, 0x760c, 0x760f, 0x7612, 0x7613, 0x7615, 0x7616,
- 0x7619, 0x761b, 0x761c, 0x761d, 0x761e, 0x7623, 0x7625, 0x7626,
- 0x7629, 0x762d, 0x7632, 0x7633, 0x7635, 0x7638, 0x7639,
- /* 0x4e21 - 0x4e7e */
- 0x763a, 0x763c, 0x764a, 0x7640, 0x7641, 0x7643, 0x7644,
- 0x7645, 0x7649, 0x764b, 0x7655, 0x7659, 0x765f, 0x7664, 0x7665,
- 0x766d, 0x766e, 0x766f, 0x7671, 0x7674, 0x7681, 0x7685, 0x768c,
- 0x768d, 0x7695, 0x769b, 0x769c, 0x769d, 0x769f, 0x76a0, 0x76a2,
- 0x76a3, 0x76a4, 0x76a5, 0x76a6, 0x76a7, 0x76a8, 0x76aa, 0x76ad,
- 0x76bd, 0x76c1, 0x76c5, 0x76c9, 0x76cb, 0x76cc, 0x76ce, 0x76d4,
- 0x76d9, 0x76e0, 0x76e6, 0x76e8, 0x76ec, 0x76f0, 0x76f1, 0x76f6,
- 0x76f9, 0x76fc, 0x7700, 0x7706, 0x770a, 0x770e, 0x7712, 0x7714,
- 0x7715, 0x7717, 0x7719, 0x771a, 0x771c, 0x7722, 0x7728, 0x772d,
- 0x772e, 0x772f, 0x7734, 0x7735, 0x7736, 0x7739, 0x773d, 0x773e,
- 0x7742, 0x7745, 0x7746, 0x774a, 0x774d, 0x774e, 0x774f, 0x7752,
- 0x7756, 0x7757, 0x775c, 0x775e, 0x775f, 0x7760, 0x7762,
- /* 0x4f21 - 0x4f7e */
- 0x7764, 0x7767, 0x776a, 0x776c, 0x7770, 0x7772, 0x7773,
- 0x7774, 0x777a, 0x777d, 0x7780, 0x7784, 0x778c, 0x778d, 0x7794,
- 0x7795, 0x7796, 0x779a, 0x779f, 0x77a2, 0x77a7, 0x77aa, 0x77ae,
- 0x77af, 0x77b1, 0x77b5, 0x77be, 0x77c3, 0x77c9, 0x77d1, 0x77d2,
- 0x77d5, 0x77d9, 0x77de, 0x77df, 0x77e0, 0x77e4, 0x77e6, 0x77ea,
- 0x77ec, 0x77f0, 0x77f1, 0x77f4, 0x77f8, 0x77fb, 0x7805, 0x7806,
- 0x7809, 0x780d, 0x780e, 0x7811, 0x781d, 0x7821, 0x7822, 0x7823,
- 0x782d, 0x782e, 0x7830, 0x7835, 0x7837, 0x7843, 0x7844, 0x7847,
- 0x7848, 0x784c, 0x784e, 0x7852, 0x785c, 0x785e, 0x7860, 0x7861,
- 0x7863, 0x7864, 0x7868, 0x786a, 0x786e, 0x787a, 0x787e, 0x788a,
- 0x788f, 0x7894, 0x7898, 0x78a1, 0x789d, 0x789e, 0x789f, 0x78a4,
- 0x78a8, 0x78ac, 0x78ad, 0x78b0, 0x78b1, 0x78b2, 0x78b3,
- /* 0x5021 - 0x507e */
- 0x78bb, 0x78bd, 0x78bf, 0x78c7, 0x78c8, 0x78c9, 0x78cc,
- 0x78ce, 0x78d2, 0x78d3, 0x78d5, 0x78d6, 0x78e4, 0x78db, 0x78df,
- 0x78e0, 0x78e1, 0x78e6, 0x78ea, 0x78f2, 0x78f3, 0x7900, 0x78f6,
- 0x78f7, 0x78fa, 0x78fb, 0x78ff, 0x7906, 0x790c, 0x7910, 0x791a,
- 0x791c, 0x791e, 0x791f, 0x7920, 0x7925, 0x7927, 0x7929, 0x792d,
- 0x7931, 0x7934, 0x7935, 0x793b, 0x793d, 0x793f, 0x7944, 0x7945,
- 0x7946, 0x794a, 0x794b, 0x794f, 0x7951, 0x7954, 0x7958, 0x795b,
- 0x795c, 0x7967, 0x7969, 0x796b, 0x7972, 0x7979, 0x797b, 0x797c,
- 0x797e, 0x798b, 0x798c, 0x7991, 0x7993, 0x7994, 0x7995, 0x7996,
- 0x7998, 0x799b, 0x799c, 0x79a1, 0x79a8, 0x79a9, 0x79ab, 0x79af,
- 0x79b1, 0x79b4, 0x79b8, 0x79bb, 0x79c2, 0x79c4, 0x79c7, 0x79c8,
- 0x79ca, 0x79cf, 0x79d4, 0x79d6, 0x79da, 0x79dd, 0x79de,
- /* 0x5121 - 0x517e */
- 0x79e0, 0x79e2, 0x79e5, 0x79ea, 0x79eb, 0x79ed, 0x79f1,
- 0x79f8, 0x79fc, 0x7a02, 0x7a03, 0x7a07, 0x7a09, 0x7a0a, 0x7a0c,
- 0x7a11, 0x7a15, 0x7a1b, 0x7a1e, 0x7a21, 0x7a27, 0x7a2b, 0x7a2d,
- 0x7a2f, 0x7a30, 0x7a34, 0x7a35, 0x7a38, 0x7a39, 0x7a3a, 0x7a44,
- 0x7a45, 0x7a47, 0x7a48, 0x7a4c, 0x7a55, 0x7a56, 0x7a59, 0x7a5c,
- 0x7a5d, 0x7a5f, 0x7a60, 0x7a65, 0x7a67, 0x7a6a, 0x7a6d, 0x7a75,
- 0x7a78, 0x7a7e, 0x7a80, 0x7a82, 0x7a85, 0x7a86, 0x7a8a, 0x7a8b,
- 0x7a90, 0x7a91, 0x7a94, 0x7a9e, 0x7aa0, 0x7aa3, 0x7aac, 0x7ab3,
- 0x7ab5, 0x7ab9, 0x7abb, 0x7abc, 0x7ac6, 0x7ac9, 0x7acc, 0x7ace,
- 0x7ad1, 0x7adb, 0x7ae8, 0x7ae9, 0x7aeb, 0x7aec, 0x7af1, 0x7af4,
- 0x7afb, 0x7afd, 0x7afe, 0x7b07, 0x7b14, 0x7b1f, 0x7b23, 0x7b27,
- 0x7b29, 0x7b2a, 0x7b2b, 0x7b2d, 0x7b2e, 0x7b2f, 0x7b30,
- /* 0x5221 - 0x527e */
- 0x7b31, 0x7b34, 0x7b3d, 0x7b3f, 0x7b40, 0x7b41, 0x7b47,
- 0x7b4e, 0x7b55, 0x7b60, 0x7b64, 0x7b66, 0x7b69, 0x7b6a, 0x7b6d,
- 0x7b6f, 0x7b72, 0x7b73, 0x7b77, 0x7b84, 0x7b89, 0x7b8e, 0x7b90,
- 0x7b91, 0x7b96, 0x7b9b, 0x7b9e, 0x7ba0, 0x7ba5, 0x7bac, 0x7baf,
- 0x7bb0, 0x7bb2, 0x7bb5, 0x7bb6, 0x7bba, 0x7bbb, 0x7bbc, 0x7bbd,
- 0x7bc2, 0x7bc5, 0x7bc8, 0x7bca, 0x7bd4, 0x7bd6, 0x7bd7, 0x7bd9,
- 0x7bda, 0x7bdb, 0x7be8, 0x7bea, 0x7bf2, 0x7bf4, 0x7bf5, 0x7bf8,
- 0x7bf9, 0x7bfa, 0x7bfc, 0x7bfe, 0x7c01, 0x7c02, 0x7c03, 0x7c04,
- 0x7c06, 0x7c09, 0x7c0b, 0x7c0c, 0x7c0e, 0x7c0f, 0x7c19, 0x7c1b,
- 0x7c20, 0x7c25, 0x7c26, 0x7c28, 0x7c2c, 0x7c31, 0x7c33, 0x7c34,
- 0x7c36, 0x7c39, 0x7c3a, 0x7c46, 0x7c4a, 0x7c55, 0x7c51, 0x7c52,
- 0x7c53, 0x7c59, 0x7c5a, 0x7c5b, 0x7c5c, 0x7c5d, 0x7c5e,
- /* 0x5321 - 0x537e */
- 0x7c61, 0x7c63, 0x7c67, 0x7c69, 0x7c6d, 0x7c6e, 0x7c70,
- 0x7c72, 0x7c79, 0x7c7c, 0x7c7d, 0x7c86, 0x7c87, 0x7c8f, 0x7c94,
- 0x7c9e, 0x7ca0, 0x7ca6, 0x7cb0, 0x7cb6, 0x7cb7, 0x7cba, 0x7cbb,
- 0x7cbc, 0x7cbf, 0x7cc4, 0x7cc7, 0x7cc8, 0x7cc9, 0x7ccd, 0x7ccf,
- 0x7cd3, 0x7cd4, 0x7cd5, 0x7cd7, 0x7cd9, 0x7cda, 0x7cdd, 0x7ce6,
- 0x7ce9, 0x7ceb, 0x7cf5, 0x7d03, 0x7d07, 0x7d08, 0x7d09, 0x7d0f,
- 0x7d11, 0x7d12, 0x7d13, 0x7d16, 0x7d1d, 0x7d1e, 0x7d23, 0x7d26,
- 0x7d2a, 0x7d2d, 0x7d31, 0x7d3c, 0x7d3d, 0x7d3e, 0x7d40, 0x7d41,
- 0x7d47, 0x7d48, 0x7d4d, 0x7d51, 0x7d53, 0x7d57, 0x7d59, 0x7d5a,
- 0x7d5c, 0x7d5d, 0x7d65, 0x7d67, 0x7d6a, 0x7d70, 0x7d78, 0x7d7a,
- 0x7d7b, 0x7d7f, 0x7d81, 0x7d82, 0x7d83, 0x7d85, 0x7d86, 0x7d88,
- 0x7d8b, 0x7d8c, 0x7d8d, 0x7d91, 0x7d96, 0x7d97, 0x7d9d,
- /* 0x5421 - 0x547e */
- 0x7d9e, 0x7da6, 0x7da7, 0x7daa, 0x7db3, 0x7db6, 0x7db7,
- 0x7db9, 0x7dc2, 0x7dc3, 0x7dc4, 0x7dc5, 0x7dc6, 0x7dcc, 0x7dcd,
- 0x7dce, 0x7dd7, 0x7dd9, 0x7e00, 0x7de2, 0x7de5, 0x7de6, 0x7dea,
- 0x7deb, 0x7ded, 0x7df1, 0x7df5, 0x7df6, 0x7df9, 0x7dfa, 0x7e08,
- 0x7e10, 0x7e11, 0x7e15, 0x7e17, 0x7e1c, 0x7e1d, 0x7e20, 0x7e27,
- 0x7e28, 0x7e2c, 0x7e2d, 0x7e2f, 0x7e33, 0x7e36, 0x7e3f, 0x7e44,
- 0x7e45, 0x7e47, 0x7e4e, 0x7e50, 0x7e52, 0x7e58, 0x7e5f, 0x7e61,
- 0x7e62, 0x7e65, 0x7e6b, 0x7e6e, 0x7e6f, 0x7e73, 0x7e78, 0x7e7e,
- 0x7e81, 0x7e86, 0x7e87, 0x7e8a, 0x7e8d, 0x7e91, 0x7e95, 0x7e98,
- 0x7e9a, 0x7e9d, 0x7e9e, 0x7f3c, 0x7f3b, 0x7f3d, 0x7f3e, 0x7f3f,
- 0x7f43, 0x7f44, 0x7f47, 0x7f4f, 0x7f52, 0x7f53, 0x7f5b, 0x7f5c,
- 0x7f5d, 0x7f61, 0x7f63, 0x7f64, 0x7f65, 0x7f66, 0x7f6d,
- /* 0x5521 - 0x557e */
- 0x7f71, 0x7f7d, 0x7f7e, 0x7f7f, 0x7f80, 0x7f8b, 0x7f8d,
- 0x7f8f, 0x7f90, 0x7f91, 0x7f96, 0x7f97, 0x7f9c, 0x7fa1, 0x7fa2,
- 0x7fa6, 0x7faa, 0x7fad, 0x7fb4, 0x7fbc, 0x7fbf, 0x7fc0, 0x7fc3,
- 0x7fc8, 0x7fce, 0x7fcf, 0x7fdb, 0x7fdf, 0x7fe3, 0x7fe5, 0x7fe8,
- 0x7fec, 0x7fee, 0x7fef, 0x7ff2, 0x7ffa, 0x7ffd, 0x7ffe, 0x7fff,
- 0x8007, 0x8008, 0x800a, 0x800d, 0x800e, 0x800f, 0x8011, 0x8013,
- 0x8014, 0x8016, 0x801d, 0x801e, 0x801f, 0x8020, 0x8024, 0x8026,
- 0x802c, 0x802e, 0x8030, 0x8034, 0x8035, 0x8037, 0x8039, 0x803a,
- 0x803c, 0x803e, 0x8040, 0x8044, 0x8060, 0x8064, 0x8066, 0x806d,
- 0x8071, 0x8075, 0x8081, 0x8088, 0x808e, 0x809c, 0x809e, 0x80a6,
- 0x80a7, 0x80ab, 0x80b8, 0x80b9, 0x80c8, 0x80cd, 0x80cf, 0x80d2,
- 0x80d4, 0x80d5, 0x80d7, 0x80d8, 0x80e0, 0x80ed, 0x80ee,
- /* 0x5621 - 0x567e */
- 0x80f0, 0x80f2, 0x80f3, 0x80f6, 0x80f9, 0x80fa, 0x80fe,
- 0x8103, 0x810b, 0x8116, 0x8117, 0x8118, 0x811c, 0x811e, 0x8120,
- 0x8124, 0x8127, 0x812c, 0x8130, 0x8135, 0x813a, 0x813c, 0x8145,
- 0x8147, 0x814a, 0x814c, 0x8152, 0x8157, 0x8160, 0x8161, 0x8167,
- 0x8168, 0x8169, 0x816d, 0x816f, 0x8177, 0x8181, 0x8190, 0x8184,
- 0x8185, 0x8186, 0x818b, 0x818e, 0x8196, 0x8198, 0x819b, 0x819e,
- 0x81a2, 0x81ae, 0x81b2, 0x81b4, 0x81bb, 0x81cb, 0x81c3, 0x81c5,
- 0x81ca, 0x81ce, 0x81cf, 0x81d5, 0x81d7, 0x81db, 0x81dd, 0x81de,
- 0x81e1, 0x81e4, 0x81eb, 0x81ec, 0x81f0, 0x81f1, 0x81f2, 0x81f5,
- 0x81f6, 0x81f8, 0x81f9, 0x81fd, 0x81ff, 0x8200, 0x8203, 0x820f,
- 0x8213, 0x8214, 0x8219, 0x821a, 0x821d, 0x8221, 0x8222, 0x8228,
- 0x8232, 0x8234, 0x823a, 0x8243, 0x8244, 0x8245, 0x8246,
- /* 0x5721 - 0x577e */
- 0x824b, 0x824e, 0x824f, 0x8251, 0x8256, 0x825c, 0x8260,
- 0x8263, 0x8267, 0x826d, 0x8274, 0x827b, 0x827d, 0x827f, 0x8280,
- 0x8281, 0x8283, 0x8284, 0x8287, 0x8289, 0x828a, 0x828e, 0x8291,
- 0x8294, 0x8296, 0x8298, 0x829a, 0x829b, 0x82a0, 0x82a1, 0x82a3,
- 0x82a4, 0x82a7, 0x82a8, 0x82a9, 0x82aa, 0x82ae, 0x82b0, 0x82b2,
- 0x82b4, 0x82b7, 0x82ba, 0x82bc, 0x82be, 0x82bf, 0x82c6, 0x82d0,
- 0x82d5, 0x82da, 0x82e0, 0x82e2, 0x82e4, 0x82e8, 0x82ea, 0x82ed,
- 0x82ef, 0x82f6, 0x82f7, 0x82fd, 0x82fe, 0x8300, 0x8301, 0x8307,
- 0x8308, 0x830a, 0x830b, 0x8354, 0x831b, 0x831d, 0x831e, 0x831f,
- 0x8321, 0x8322, 0x832c, 0x832d, 0x832e, 0x8330, 0x8333, 0x8337,
- 0x833a, 0x833c, 0x833d, 0x8342, 0x8343, 0x8344, 0x8347, 0x834d,
- 0x834e, 0x8351, 0x8355, 0x8356, 0x8357, 0x8370, 0x8378,
- /* 0x5821 - 0x587e */
- 0x837d, 0x837f, 0x8380, 0x8382, 0x8384, 0x8386, 0x838d,
- 0x8392, 0x8394, 0x8395, 0x8398, 0x8399, 0x839b, 0x839c, 0x839d,
- 0x83a6, 0x83a7, 0x83a9, 0x83ac, 0x83be, 0x83bf, 0x83c0, 0x83c7,
- 0x83c9, 0x83cf, 0x83d0, 0x83d1, 0x83d4, 0x83dd, 0x8353, 0x83e8,
- 0x83ea, 0x83f6, 0x83f8, 0x83f9, 0x83fc, 0x8401, 0x8406, 0x840a,
- 0x840f, 0x8411, 0x8415, 0x8419, 0x83ad, 0x842f, 0x8439, 0x8445,
- 0x8447, 0x8448, 0x844a, 0x844d, 0x844f, 0x8451, 0x8452, 0x8456,
- 0x8458, 0x8459, 0x845a, 0x845c, 0x8460, 0x8464, 0x8465, 0x8467,
- 0x846a, 0x8470, 0x8473, 0x8474, 0x8476, 0x8478, 0x847c, 0x847d,
- 0x8481, 0x8485, 0x8492, 0x8493, 0x8495, 0x849e, 0x84a6, 0x84a8,
- 0x84a9, 0x84aa, 0x84af, 0x84b1, 0x84b4, 0x84ba, 0x84bd, 0x84be,
- 0x84c0, 0x84c2, 0x84c7, 0x84c8, 0x84cc, 0x84cf, 0x84d3,
- /* 0x5921 - 0x597e */
- 0x84dc, 0x84e7, 0x84ea, 0x84ef, 0x84f0, 0x84f1, 0x84f2,
- 0x84f7, 0x8532, 0x84fa, 0x84fb, 0x84fd, 0x8502, 0x8503, 0x8507,
- 0x850c, 0x850e, 0x8510, 0x851c, 0x851e, 0x8522, 0x8523, 0x8524,
- 0x8525, 0x8527, 0x852a, 0x852b, 0x852f, 0x8533, 0x8534, 0x8536,
- 0x853f, 0x8546, 0x854f, 0x8550, 0x8551, 0x8552, 0x8553, 0x8556,
- 0x8559, 0x855c, 0x855d, 0x855e, 0x855f, 0x8560, 0x8561, 0x8562,
- 0x8564, 0x856b, 0x856f, 0x8579, 0x857a, 0x857b, 0x857d, 0x857f,
- 0x8581, 0x8585, 0x8586, 0x8589, 0x858b, 0x858c, 0x858f, 0x8593,
- 0x8598, 0x859d, 0x859f, 0x85a0, 0x85a2, 0x85a5, 0x85a7, 0x85b4,
- 0x85b6, 0x85b7, 0x85b8, 0x85bc, 0x85bd, 0x85be, 0x85bf, 0x85c2,
- 0x85c7, 0x85ca, 0x85cb, 0x85ce, 0x85ad, 0x85d8, 0x85da, 0x85df,
- 0x85e0, 0x85e6, 0x85e8, 0x85ed, 0x85f3, 0x85f6, 0x85fc,
- /* 0x5a21 - 0x5a7e */
- 0x85ff, 0x8600, 0x8604, 0x8605, 0x860d, 0x860e, 0x8610,
- 0x8611, 0x8612, 0x8618, 0x8619, 0x861b, 0x861e, 0x8621, 0x8627,
- 0x8629, 0x8636, 0x8638, 0x863a, 0x863c, 0x863d, 0x8640, 0x8642,
- 0x8646, 0x8652, 0x8653, 0x8656, 0x8657, 0x8658, 0x8659, 0x865d,
- 0x8660, 0x8661, 0x8662, 0x8663, 0x8664, 0x8669, 0x866c, 0x866f,
- 0x8675, 0x8676, 0x8677, 0x867a, 0x868d, 0x8691, 0x8696, 0x8698,
- 0x869a, 0x869c, 0x86a1, 0x86a6, 0x86a7, 0x86a8, 0x86ad, 0x86b1,
- 0x86b3, 0x86b4, 0x86b5, 0x86b7, 0x86b8, 0x86b9, 0x86bf, 0x86c0,
- 0x86c1, 0x86c3, 0x86c5, 0x86d1, 0x86d2, 0x86d5, 0x86d7, 0x86da,
- 0x86dc, 0x86e0, 0x86e3, 0x86e5, 0x86e7, 0x8688, 0x86fa, 0x86fc,
- 0x86fd, 0x8704, 0x8705, 0x8707, 0x870b, 0x870e, 0x870f, 0x8710,
- 0x8713, 0x8714, 0x8719, 0x871e, 0x871f, 0x8721, 0x8723,
- /* 0x5b21 - 0x5b7e */
- 0x8728, 0x872e, 0x872f, 0x8731, 0x8732, 0x8739, 0x873a,
- 0x873c, 0x873d, 0x873e, 0x8740, 0x8743, 0x8745, 0x874d, 0x8758,
- 0x875d, 0x8761, 0x8764, 0x8765, 0x876f, 0x8771, 0x8772, 0x877b,
- 0x8783, 0x8784, 0x8785, 0x8786, 0x8787, 0x8788, 0x8789, 0x878b,
- 0x878c, 0x8790, 0x8793, 0x8795, 0x8797, 0x8798, 0x8799, 0x879e,
- 0x87a0, 0x87a3, 0x87a7, 0x87ac, 0x87ad, 0x87ae, 0x87b1, 0x87b5,
- 0x87be, 0x87bf, 0x87c1, 0x87c8, 0x87c9, 0x87ca, 0x87ce, 0x87d5,
- 0x87d6, 0x87d9, 0x87da, 0x87dc, 0x87df, 0x87e2, 0x87e3, 0x87e4,
- 0x87ea, 0x87eb, 0x87ed, 0x87f1, 0x87f3, 0x87f8, 0x87fa, 0x87ff,
- 0x8801, 0x8803, 0x8806, 0x8809, 0x880a, 0x880b, 0x8810, 0x8819,
- 0x8812, 0x8813, 0x8814, 0x8818, 0x881a, 0x881b, 0x881c, 0x881e,
- 0x881f, 0x8828, 0x882d, 0x882e, 0x8830, 0x8832, 0x8835,
- /* 0x5c21 - 0x5c7e */
- 0x883a, 0x883c, 0x8841, 0x8843, 0x8845, 0x8848, 0x8849,
- 0x884a, 0x884b, 0x884e, 0x8851, 0x8855, 0x8856, 0x8858, 0x885a,
- 0x885c, 0x885f, 0x8860, 0x8864, 0x8869, 0x8871, 0x8879, 0x887b,
- 0x8880, 0x8898, 0x889a, 0x889b, 0x889c, 0x889f, 0x88a0, 0x88a8,
- 0x88aa, 0x88ba, 0x88bd, 0x88be, 0x88c0, 0x88ca, 0x88cb, 0x88cc,
- 0x88cd, 0x88ce, 0x88d1, 0x88d2, 0x88d3, 0x88db, 0x88de, 0x88e7,
- 0x88ef, 0x88f0, 0x88f1, 0x88f5, 0x88f7, 0x8901, 0x8906, 0x890d,
- 0x890e, 0x890f, 0x8915, 0x8916, 0x8918, 0x8919, 0x891a, 0x891c,
- 0x8920, 0x8926, 0x8927, 0x8928, 0x8930, 0x8931, 0x8932, 0x8935,
- 0x8939, 0x893a, 0x893e, 0x8940, 0x8942, 0x8945, 0x8946, 0x8949,
- 0x894f, 0x8952, 0x8957, 0x895a, 0x895b, 0x895c, 0x8961, 0x8962,
- 0x8963, 0x896b, 0x896e, 0x8970, 0x8973, 0x8975, 0x897a,
- /* 0x5d21 - 0x5d7e */
- 0x897b, 0x897c, 0x897d, 0x8989, 0x898d, 0x8990, 0x8994,
- 0x8995, 0x899b, 0x899c, 0x899f, 0x89a0, 0x89a5, 0x89b0, 0x89b4,
- 0x89b5, 0x89b6, 0x89b7, 0x89bc, 0x89d4, 0x89d5, 0x89d6, 0x89d7,
- 0x89d8, 0x89e5, 0x89e9, 0x89eb, 0x89ed, 0x89f1, 0x89f3, 0x89f6,
- 0x89f9, 0x89fd, 0x89ff, 0x8a04, 0x8a05, 0x8a07, 0x8a0f, 0x8a11,
- 0x8a12, 0x8a14, 0x8a15, 0x8a1e, 0x8a20, 0x8a22, 0x8a24, 0x8a26,
- 0x8a2b, 0x8a2c, 0x8a2f, 0x8a35, 0x8a37, 0x8a3d, 0x8a3e, 0x8a40,
- 0x8a43, 0x8a45, 0x8a47, 0x8a49, 0x8a4d, 0x8a4e, 0x8a53, 0x8a56,
- 0x8a57, 0x8a58, 0x8a5c, 0x8a5d, 0x8a61, 0x8a65, 0x8a67, 0x8a75,
- 0x8a76, 0x8a77, 0x8a79, 0x8a7a, 0x8a7b, 0x8a7e, 0x8a7f, 0x8a80,
- 0x8a83, 0x8a86, 0x8a8b, 0x8a8f, 0x8a90, 0x8a92, 0x8a96, 0x8a97,
- 0x8a99, 0x8a9f, 0x8aa7, 0x8aa9, 0x8aae, 0x8aaf, 0x8ab3,
- /* 0x5e21 - 0x5e7e */
- 0x8ab6, 0x8ab7, 0x8abb, 0x8abe, 0x8ac3, 0x8ac6, 0x8ac8,
- 0x8ac9, 0x8aca, 0x8ad1, 0x8ad3, 0x8ad4, 0x8ad5, 0x8ad7, 0x8add,
- 0x8adf, 0x8aec, 0x8af0, 0x8af4, 0x8af5, 0x8af6, 0x8afc, 0x8aff,
- 0x8b05, 0x8b06, 0x8b0b, 0x8b11, 0x8b1c, 0x8b1e, 0x8b1f, 0x8b0a,
- 0x8b2d, 0x8b30, 0x8b37, 0x8b3c, 0x8b42, 0x8b43, 0x8b44, 0x8b45,
- 0x8b46, 0x8b48, 0x8b52, 0x8b53, 0x8b54, 0x8b59, 0x8b4d, 0x8b5e,
- 0x8b63, 0x8b6d, 0x8b76, 0x8b78, 0x8b79, 0x8b7c, 0x8b7e, 0x8b81,
- 0x8b84, 0x8b85, 0x8b8b, 0x8b8d, 0x8b8f, 0x8b94, 0x8b95, 0x8b9c,
- 0x8b9e, 0x8b9f, 0x8c38, 0x8c39, 0x8c3d, 0x8c3e, 0x8c45, 0x8c47,
- 0x8c49, 0x8c4b, 0x8c4f, 0x8c51, 0x8c53, 0x8c54, 0x8c57, 0x8c58,
- 0x8c5b, 0x8c5d, 0x8c59, 0x8c63, 0x8c64, 0x8c66, 0x8c68, 0x8c69,
- 0x8c6d, 0x8c73, 0x8c75, 0x8c76, 0x8c7b, 0x8c7e, 0x8c86,
- /* 0x5f21 - 0x5f7e */
- 0x8c87, 0x8c8b, 0x8c90, 0x8c92, 0x8c93, 0x8c99, 0x8c9b,
- 0x8c9c, 0x8ca4, 0x8cb9, 0x8cba, 0x8cc5, 0x8cc6, 0x8cc9, 0x8ccb,
- 0x8ccf, 0x8cd6, 0x8cd5, 0x8cd9, 0x8cdd, 0x8ce1, 0x8ce8, 0x8cec,
- 0x8cef, 0x8cf0, 0x8cf2, 0x8cf5, 0x8cf7, 0x8cf8, 0x8cfe, 0x8cff,
- 0x8d01, 0x8d03, 0x8d09, 0x8d12, 0x8d17, 0x8d1b, 0x8d65, 0x8d69,
- 0x8d6c, 0x8d6e, 0x8d7f, 0x8d82, 0x8d84, 0x8d88, 0x8d8d, 0x8d90,
- 0x8d91, 0x8d95, 0x8d9e, 0x8d9f, 0x8da0, 0x8da6, 0x8dab, 0x8dac,
- 0x8daf, 0x8db2, 0x8db5, 0x8db7, 0x8db9, 0x8dbb, 0x8dc0, 0x8dc5,
- 0x8dc6, 0x8dc7, 0x8dc8, 0x8dca, 0x8dce, 0x8dd1, 0x8dd4, 0x8dd5,
- 0x8dd7, 0x8dd9, 0x8de4, 0x8de5, 0x8de7, 0x8dec, 0x8df0, 0x8dbc,
- 0x8df1, 0x8df2, 0x8df4, 0x8dfd, 0x8e01, 0x8e04, 0x8e05, 0x8e06,
- 0x8e0b, 0x8e11, 0x8e14, 0x8e16, 0x8e20, 0x8e21, 0x8e22,
- /* 0x6021 - 0x607e */
- 0x8e23, 0x8e26, 0x8e27, 0x8e31, 0x8e33, 0x8e36, 0x8e37,
- 0x8e38, 0x8e39, 0x8e3d, 0x8e40, 0x8e41, 0x8e4b, 0x8e4d, 0x8e4e,
- 0x8e4f, 0x8e54, 0x8e5b, 0x8e5c, 0x8e5d, 0x8e5e, 0x8e61, 0x8e62,
- 0x8e69, 0x8e6c, 0x8e6d, 0x8e6f, 0x8e70, 0x8e71, 0x8e79, 0x8e7a,
- 0x8e7b, 0x8e82, 0x8e83, 0x8e89, 0x8e90, 0x8e92, 0x8e95, 0x8e9a,
- 0x8e9b, 0x8e9d, 0x8e9e, 0x8ea2, 0x8ea7, 0x8ea9, 0x8ead, 0x8eae,
- 0x8eb3, 0x8eb5, 0x8eba, 0x8ebb, 0x8ec0, 0x8ec1, 0x8ec3, 0x8ec4,
- 0x8ec7, 0x8ecf, 0x8ed1, 0x8ed4, 0x8edc, 0x8ee8, 0x8eee, 0x8ef0,
- 0x8ef1, 0x8ef7, 0x8ef9, 0x8efa, 0x8eed, 0x8f00, 0x8f02, 0x8f07,
- 0x8f08, 0x8f0f, 0x8f10, 0x8f16, 0x8f17, 0x8f18, 0x8f1e, 0x8f20,
- 0x8f21, 0x8f23, 0x8f25, 0x8f27, 0x8f28, 0x8f2c, 0x8f2d, 0x8f2e,
- 0x8f34, 0x8f35, 0x8f36, 0x8f37, 0x8f3a, 0x8f40, 0x8f41,
- /* 0x6121 - 0x617e */
- 0x8f43, 0x8f47, 0x8f4f, 0x8f51, 0x8f52, 0x8f53, 0x8f54,
- 0x8f55, 0x8f58, 0x8f5d, 0x8f5e, 0x8f65, 0x8f9d, 0x8fa0, 0x8fa1,
- 0x8fa4, 0x8fa5, 0x8fa6, 0x8fb5, 0x8fb6, 0x8fb8, 0x8fbe, 0x8fc0,
- 0x8fc1, 0x8fc6, 0x8fca, 0x8fcb, 0x8fcd, 0x8fd0, 0x8fd2, 0x8fd3,
- 0x8fd5, 0x8fe0, 0x8fe3, 0x8fe4, 0x8fe8, 0x8fee, 0x8ff1, 0x8ff5,
- 0x8ff6, 0x8ffb, 0x8ffe, 0x9002, 0x9004, 0x9008, 0x900c, 0x9018,
- 0x901b, 0x9028, 0x9029, 0x902f, 0x902a, 0x902c, 0x902d, 0x9033,
- 0x9034, 0x9037, 0x903f, 0x9043, 0x9044, 0x904c, 0x905b, 0x905d,
- 0x9062, 0x9066, 0x9067, 0x906c, 0x9070, 0x9074, 0x9079, 0x9085,
- 0x9088, 0x908b, 0x908c, 0x908e, 0x9090, 0x9095, 0x9097, 0x9098,
- 0x9099, 0x909b, 0x90a0, 0x90a1, 0x90a2, 0x90a5, 0x90b0, 0x90b2,
- 0x90b3, 0x90b4, 0x90b6, 0x90bd, 0x90cc, 0x90be, 0x90c3,
- /* 0x6221 - 0x627e */
- 0x90c4, 0x90c5, 0x90c7, 0x90c8, 0x90d5, 0x90d7, 0x90d8,
- 0x90d9, 0x90dc, 0x90dd, 0x90df, 0x90e5, 0x90d2, 0x90f6, 0x90eb,
- 0x90ef, 0x90f0, 0x90f4, 0x90fe, 0x90ff, 0x9100, 0x9104, 0x9105,
- 0x9106, 0x9108, 0x910d, 0x9110, 0x9114, 0x9116, 0x9117, 0x9118,
- 0x911a, 0x911c, 0x911e, 0x9120, 0x9125, 0x9122, 0x9123, 0x9127,
- 0x9129, 0x912e, 0x912f, 0x9131, 0x9134, 0x9136, 0x9137, 0x9139,
- 0x913a, 0x913c, 0x913d, 0x9143, 0x9147, 0x9148, 0x914f, 0x9153,
- 0x9157, 0x9159, 0x915a, 0x915b, 0x9161, 0x9164, 0x9167, 0x916d,
- 0x9174, 0x9179, 0x917a, 0x917b, 0x9181, 0x9183, 0x9185, 0x9186,
- 0x918a, 0x918e, 0x9191, 0x9193, 0x9194, 0x9195, 0x9198, 0x919e,
- 0x91a1, 0x91a6, 0x91a8, 0x91ac, 0x91ad, 0x91ae, 0x91b0, 0x91b1,
- 0x91b2, 0x91b3, 0x91b6, 0x91bb, 0x91bc, 0x91bd, 0x91bf,
- /* 0x6321 - 0x637e */
- 0x91c2, 0x91c3, 0x91c5, 0x91d3, 0x91d4, 0x91d7, 0x91d9,
- 0x91da, 0x91de, 0x91e4, 0x91e5, 0x91e9, 0x91ea, 0x91ec, 0x91ed,
- 0x91ee, 0x91ef, 0x91f0, 0x91f1, 0x91f7, 0x91f9, 0x91fb, 0x91fd,
- 0x9200, 0x9201, 0x9204, 0x9205, 0x9206, 0x9207, 0x9209, 0x920a,
- 0x920c, 0x9210, 0x9212, 0x9213, 0x9216, 0x9218, 0x921c, 0x921d,
- 0x9223, 0x9224, 0x9225, 0x9226, 0x9228, 0x922e, 0x922f, 0x9230,
- 0x9233, 0x9235, 0x9236, 0x9238, 0x9239, 0x923a, 0x923c, 0x923e,
- 0x9240, 0x9242, 0x9243, 0x9246, 0x9247, 0x924a, 0x924d, 0x924e,
- 0x924f, 0x9251, 0x9258, 0x9259, 0x925c, 0x925d, 0x9260, 0x9261,
- 0x9265, 0x9267, 0x9268, 0x9269, 0x926e, 0x926f, 0x9270, 0x9275,
- 0x9276, 0x9277, 0x9278, 0x9279, 0x927b, 0x927c, 0x927d, 0x927f,
- 0x9288, 0x9289, 0x928a, 0x928d, 0x928e, 0x9292, 0x9297,
- /* 0x6421 - 0x647e */
- 0x9299, 0x929f, 0x92a0, 0x92a4, 0x92a5, 0x92a7, 0x92a8,
- 0x92ab, 0x92af, 0x92b2, 0x92b6, 0x92b8, 0x92ba, 0x92bb, 0x92bc,
- 0x92bd, 0x92bf, 0x92c0, 0x92c1, 0x92c2, 0x92c3, 0x92c5, 0x92c6,
- 0x92c7, 0x92c8, 0x92cb, 0x92cc, 0x92cd, 0x92ce, 0x92d0, 0x92d3,
- 0x92d5, 0x92d7, 0x92d8, 0x92d9, 0x92dc, 0x92dd, 0x92df, 0x92e0,
- 0x92e1, 0x92e3, 0x92e5, 0x92e7, 0x92e8, 0x92ec, 0x92ee, 0x92f0,
- 0x92f9, 0x92fb, 0x92ff, 0x9300, 0x9302, 0x9308, 0x930d, 0x9311,
- 0x9314, 0x9315, 0x931c, 0x931d, 0x931e, 0x931f, 0x9321, 0x9324,
- 0x9325, 0x9327, 0x9329, 0x932a, 0x9333, 0x9334, 0x9336, 0x9337,
- 0x9347, 0x9348, 0x9349, 0x9350, 0x9351, 0x9352, 0x9355, 0x9357,
- 0x9358, 0x935a, 0x935e, 0x9364, 0x9365, 0x9367, 0x9369, 0x936a,
- 0x936d, 0x936f, 0x9370, 0x9371, 0x9373, 0x9374, 0x9376,
- /* 0x6521 - 0x657e */
- 0x937a, 0x937d, 0x937f, 0x9380, 0x9381, 0x9382, 0x9388,
- 0x938a, 0x938b, 0x938d, 0x938f, 0x9392, 0x9395, 0x9398, 0x939b,
- 0x939e, 0x93a1, 0x93a3, 0x93a4, 0x93a6, 0x93a8, 0x93ab, 0x93b4,
- 0x93b5, 0x93b6, 0x93ba, 0x93a9, 0x93c1, 0x93c4, 0x93c5, 0x93c6,
- 0x93c7, 0x93c9, 0x93ca, 0x93cb, 0x93cc, 0x93cd, 0x93d3, 0x93d9,
- 0x93dc, 0x93de, 0x93df, 0x93e2, 0x93e6, 0x93e7, 0x93f9, 0x93f7,
- 0x93f8, 0x93fa, 0x93fb, 0x93fd, 0x9401, 0x9402, 0x9404, 0x9408,
- 0x9409, 0x940d, 0x940e, 0x940f, 0x9415, 0x9416, 0x9417, 0x941f,
- 0x942e, 0x942f, 0x9431, 0x9432, 0x9433, 0x9434, 0x943b, 0x943f,
- 0x943d, 0x9443, 0x9445, 0x9448, 0x944a, 0x944c, 0x9455, 0x9459,
- 0x945c, 0x945f, 0x9461, 0x9463, 0x9468, 0x946b, 0x946d, 0x946e,
- 0x946f, 0x9471, 0x9472, 0x9484, 0x9483, 0x9578, 0x9579,
- /* 0x6621 - 0x667e */
- 0x957e, 0x9584, 0x9588, 0x958c, 0x958d, 0x958e, 0x959d,
- 0x959e, 0x959f, 0x95a1, 0x95a6, 0x95a9, 0x95ab, 0x95ac, 0x95b4,
- 0x95b6, 0x95ba, 0x95bd, 0x95bf, 0x95c6, 0x95c8, 0x95c9, 0x95cb,
- 0x95d0, 0x95d1, 0x95d2, 0x95d3, 0x95d9, 0x95da, 0x95dd, 0x95de,
- 0x95df, 0x95e0, 0x95e4, 0x95e6, 0x961d, 0x961e, 0x9622, 0x9624,
- 0x9625, 0x9626, 0x962c, 0x9631, 0x9633, 0x9637, 0x9638, 0x9639,
- 0x963a, 0x963c, 0x963d, 0x9641, 0x9652, 0x9654, 0x9656, 0x9657,
- 0x9658, 0x9661, 0x966e, 0x9674, 0x967b, 0x967c, 0x967e, 0x967f,
- 0x9681, 0x9682, 0x9683, 0x9684, 0x9689, 0x9691, 0x9696, 0x969a,
- 0x969d, 0x969f, 0x96a4, 0x96a5, 0x96a6, 0x96a9, 0x96ae, 0x96af,
- 0x96b3, 0x96ba, 0x96ca, 0x96d2, 0x5db2, 0x96d8, 0x96da, 0x96dd,
- 0x96de, 0x96df, 0x96e9, 0x96ef, 0x96f1, 0x96fa, 0x9702,
- /* 0x6721 - 0x677e */
- 0x9703, 0x9705, 0x9709, 0x971a, 0x971b, 0x971d, 0x9721,
- 0x9722, 0x9723, 0x9728, 0x9731, 0x9733, 0x9741, 0x9743, 0x974a,
- 0x974e, 0x974f, 0x9755, 0x9757, 0x9758, 0x975a, 0x975b, 0x9763,
- 0x9767, 0x976a, 0x976e, 0x9773, 0x9776, 0x9777, 0x9778, 0x977b,
- 0x977d, 0x977f, 0x9780, 0x9789, 0x9795, 0x9796, 0x9797, 0x9799,
- 0x979a, 0x979e, 0x979f, 0x97a2, 0x97ac, 0x97ae, 0x97b1, 0x97b2,
- 0x97b5, 0x97b6, 0x97b8, 0x97b9, 0x97ba, 0x97bc, 0x97be, 0x97bf,
- 0x97c1, 0x97c4, 0x97c5, 0x97c7, 0x97c9, 0x97ca, 0x97cc, 0x97cd,
- 0x97ce, 0x97d0, 0x97d1, 0x97d4, 0x97d7, 0x97d8, 0x97d9, 0x97dd,
- 0x97de, 0x97e0, 0x97db, 0x97e1, 0x97e4, 0x97ef, 0x97f1, 0x97f4,
- 0x97f7, 0x97f8, 0x97fa, 0x9807, 0x980a, 0x9819, 0x980d, 0x980e,
- 0x9814, 0x9816, 0x981c, 0x981e, 0x9820, 0x9823, 0x9826,
- /* 0x6821 - 0x687e */
- 0x982b, 0x982e, 0x982f, 0x9830, 0x9832, 0x9833, 0x9835,
- 0x9825, 0x983e, 0x9844, 0x9847, 0x984a, 0x9851, 0x9852, 0x9853,
- 0x9856, 0x9857, 0x9859, 0x985a, 0x9862, 0x9863, 0x9865, 0x9866,
- 0x986a, 0x986c, 0x98ab, 0x98ad, 0x98ae, 0x98b0, 0x98b4, 0x98b7,
- 0x98b8, 0x98ba, 0x98bb, 0x98bf, 0x98c2, 0x98c5, 0x98c8, 0x98cc,
- 0x98e1, 0x98e3, 0x98e5, 0x98e6, 0x98e7, 0x98ea, 0x98f3, 0x98f6,
- 0x9902, 0x9907, 0x9908, 0x9911, 0x9915, 0x9916, 0x9917, 0x991a,
- 0x991b, 0x991c, 0x991f, 0x9922, 0x9926, 0x9927, 0x992b, 0x9931,
- 0x9932, 0x9933, 0x9934, 0x9935, 0x9939, 0x993a, 0x993b, 0x993c,
- 0x9940, 0x9941, 0x9946, 0x9947, 0x9948, 0x994d, 0x994e, 0x9954,
- 0x9958, 0x9959, 0x995b, 0x995c, 0x995e, 0x995f, 0x9960, 0x999b,
- 0x999d, 0x999f, 0x99a6, 0x99b0, 0x99b1, 0x99b2, 0x99b5,
- /* 0x6921 - 0x697e */
- 0x99b9, 0x99ba, 0x99bd, 0x99bf, 0x99c3, 0x99c9, 0x99d3,
- 0x99d4, 0x99d9, 0x99da, 0x99dc, 0x99de, 0x99e7, 0x99ea, 0x99eb,
- 0x99ec, 0x99f0, 0x99f4, 0x99f5, 0x99f9, 0x99fd, 0x99fe, 0x9a02,
- 0x9a03, 0x9a04, 0x9a0b, 0x9a0c, 0x9a10, 0x9a11, 0x9a16, 0x9a1e,
- 0x9a20, 0x9a22, 0x9a23, 0x9a24, 0x9a27, 0x9a2d, 0x9a2e, 0x9a33,
- 0x9a35, 0x9a36, 0x9a38, 0x9a47, 0x9a41, 0x9a44, 0x9a4a, 0x9a4b,
- 0x9a4c, 0x9a4e, 0x9a51, 0x9a54, 0x9a56, 0x9a5d, 0x9aaa, 0x9aac,
- 0x9aae, 0x9aaf, 0x9ab2, 0x9ab4, 0x9ab5, 0x9ab6, 0x9ab9, 0x9abb,
- 0x9abe, 0x9abf, 0x9ac1, 0x9ac3, 0x9ac6, 0x9ac8, 0x9ace, 0x9ad0,
- 0x9ad2, 0x9ad5, 0x9ad6, 0x9ad7, 0x9adb, 0x9adc, 0x9ae0, 0x9ae4,
- 0x9ae5, 0x9ae7, 0x9ae9, 0x9aec, 0x9af2, 0x9af3, 0x9af5, 0x9af9,
- 0x9afa, 0x9afd, 0x9aff, 0x9b00, 0x9b01, 0x9b02, 0x9b03,
- /* 0x6a21 - 0x6a7e */
- 0x9b04, 0x9b05, 0x9b08, 0x9b09, 0x9b0b, 0x9b0c, 0x9b0d,
- 0x9b0e, 0x9b10, 0x9b12, 0x9b16, 0x9b19, 0x9b1b, 0x9b1c, 0x9b20,
- 0x9b26, 0x9b2b, 0x9b2d, 0x9b33, 0x9b34, 0x9b35, 0x9b37, 0x9b39,
- 0x9b3a, 0x9b3d, 0x9b48, 0x9b4b, 0x9b4c, 0x9b55, 0x9b56, 0x9b57,
- 0x9b5b, 0x9b5e, 0x9b61, 0x9b63, 0x9b65, 0x9b66, 0x9b68, 0x9b6a,
- 0x9b6b, 0x9b6c, 0x9b6d, 0x9b6e, 0x9b73, 0x9b75, 0x9b77, 0x9b78,
- 0x9b79, 0x9b7f, 0x9b80, 0x9b84, 0x9b85, 0x9b86, 0x9b87, 0x9b89,
- 0x9b8a, 0x9b8b, 0x9b8d, 0x9b8f, 0x9b90, 0x9b94, 0x9b9a, 0x9b9d,
- 0x9b9e, 0x9ba6, 0x9ba7, 0x9ba9, 0x9bac, 0x9bb0, 0x9bb1, 0x9bb2,
- 0x9bb7, 0x9bb8, 0x9bbb, 0x9bbc, 0x9bbe, 0x9bbf, 0x9bc1, 0x9bc7,
- 0x9bc8, 0x9bce, 0x9bd0, 0x9bd7, 0x9bd8, 0x9bdd, 0x9bdf, 0x9be5,
- 0x9be7, 0x9bea, 0x9beb, 0x9bef, 0x9bf3, 0x9bf7, 0x9bf8,
- /* 0x6b21 - 0x6b7e */
- 0x9bf9, 0x9bfa, 0x9bfd, 0x9bff, 0x9c00, 0x9c02, 0x9c0b,
- 0x9c0f, 0x9c11, 0x9c16, 0x9c18, 0x9c19, 0x9c1a, 0x9c1c, 0x9c1e,
- 0x9c22, 0x9c23, 0x9c26, 0x9c27, 0x9c28, 0x9c29, 0x9c2a, 0x9c31,
- 0x9c35, 0x9c36, 0x9c37, 0x9c3d, 0x9c41, 0x9c43, 0x9c44, 0x9c45,
- 0x9c49, 0x9c4a, 0x9c4e, 0x9c4f, 0x9c50, 0x9c53, 0x9c54, 0x9c56,
- 0x9c58, 0x9c5b, 0x9c5d, 0x9c5e, 0x9c5f, 0x9c63, 0x9c69, 0x9c6a,
- 0x9c5c, 0x9c6b, 0x9c68, 0x9c6e, 0x9c70, 0x9c72, 0x9c75, 0x9c77,
- 0x9c7b, 0x9ce6, 0x9cf2, 0x9cf7, 0x9cf9, 0x9d0b, 0x9d02, 0x9d11,
- 0x9d17, 0x9d18, 0x9d1c, 0x9d1d, 0x9d1e, 0x9d2f, 0x9d30, 0x9d32,
- 0x9d33, 0x9d34, 0x9d3a, 0x9d3c, 0x9d45, 0x9d3d, 0x9d42, 0x9d43,
- 0x9d47, 0x9d4a, 0x9d53, 0x9d54, 0x9d5f, 0x9d63, 0x9d62, 0x9d65,
- 0x9d69, 0x9d6a, 0x9d6b, 0x9d70, 0x9d76, 0x9d77, 0x9d7b,
- /* 0x6c21 - 0x6c7e */
- 0x9d7c, 0x9d7e, 0x9d83, 0x9d84, 0x9d86, 0x9d8a, 0x9d8d,
- 0x9d8e, 0x9d92, 0x9d93, 0x9d95, 0x9d96, 0x9d97, 0x9d98, 0x9da1,
- 0x9daa, 0x9dac, 0x9dae, 0x9db1, 0x9db5, 0x9db9, 0x9dbc, 0x9dbf,
- 0x9dc3, 0x9dc7, 0x9dc9, 0x9dca, 0x9dd4, 0x9dd5, 0x9dd6, 0x9dd7,
- 0x9dda, 0x9dde, 0x9ddf, 0x9de0, 0x9de5, 0x9de7, 0x9de9, 0x9deb,
- 0x9dee, 0x9df0, 0x9df3, 0x9df4, 0x9dfe, 0x9e0a, 0x9e02, 0x9e07,
- 0x9e0e, 0x9e10, 0x9e11, 0x9e12, 0x9e15, 0x9e16, 0x9e19, 0x9e1c,
- 0x9e1d, 0x9e7a, 0x9e7b, 0x9e7c, 0x9e80, 0x9e82, 0x9e83, 0x9e84,
- 0x9e85, 0x9e87, 0x9e8e, 0x9e8f, 0x9e96, 0x9e98, 0x9e9b, 0x9e9e,
- 0x9ea4, 0x9ea8, 0x9eac, 0x9eae, 0x9eaf, 0x9eb0, 0x9eb3, 0x9eb4,
- 0x9eb5, 0x9ec6, 0x9ec8, 0x9ecb, 0x9ed5, 0x9edf, 0x9ee4, 0x9ee7,
- 0x9eec, 0x9eed, 0x9eee, 0x9ef0, 0x9ef1, 0x9ef2, 0x9ef5,
- /* 0x6d21 - 0x6d7e */
- 0x9ef8, 0x9eff, 0x9f02, 0x9f03, 0x9f09, 0x9f0f, 0x9f10,
- 0x9f11, 0x9f12, 0x9f14, 0x9f16, 0x9f17, 0x9f19, 0x9f1a, 0x9f1b,
- 0x9f1f, 0x9f22, 0x9f26, 0x9f2a, 0x9f2b, 0x9f2f, 0x9f31, 0x9f32,
- 0x9f34, 0x9f37, 0x9f39, 0x9f3a, 0x9f3c, 0x9f3d, 0x9f3f, 0x9f41,
- 0x9f43, 0x9f44, 0x9f45, 0x9f46, 0x9f47, 0x9f53, 0x9f55, 0x9f56,
- 0x9f57, 0x9f58, 0x9f5a, 0x9f5d, 0x9f5e, 0x9f68, 0x9f69, 0x9f6d,
- 0x9f6e, 0x9f6f, 0x9f70, 0x9f71, 0x9f73, 0x9f75, 0x9f7a, 0x9f7d,
- 0x9f8f, 0x9f90, 0x9f91, 0x9f92, 0x9f94, 0x9f96, 0x9f97, 0x9f9e,
- 0x9fa1, 0x9fa2, 0x9fa3, 0x9fa5, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x6e21 - 0x6e7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x6f21 - 0x6f7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7021 - 0x707e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7121 - 0x717e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7221 - 0x727e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7321 - 0x737e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x2170, 0x2171, 0x2172, 0x2173, 0x2174,
- 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x2160, 0x2161,
- /* 0x7421 - 0x747e */
- 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
- 0x2169, 0xff07, 0xff02, 0x3231, 0x2116, 0x2121, 0x70bb, 0x4efc,
- 0x50f4, 0x51ec, 0x5307, 0x5324, 0xfa0e, 0x548a, 0x5759, 0xfa0f,
- 0xfa10, 0x589e, 0x5bec, 0x5cf5, 0x5d53, 0xfa11, 0x5fb7, 0x6085,
- 0x6120, 0x654e, 0x663b, 0x6665, 0xfa12, 0xf929, 0x6801, 0xfa13,
- 0xfa14, 0x6a6b, 0x6ae2, 0x6df8, 0x6df2, 0x7028, 0xfa15, 0xfa16,
- 0x7501, 0x7682, 0x769e, 0xfa17, 0x7930, 0xfa18, 0xfa19, 0xfa1a,
- 0xfa1b, 0x7ae7, 0xfa1c, 0xfa1d, 0x7da0, 0x7dd6, 0xfa1e, 0x8362,
- 0xfa1f, 0x85b0, 0xfa20, 0xfa21, 0x8807, 0xfa22, 0x8b7f, 0x8cf4,
- 0x8d76, 0xfa23, 0xfa24, 0xfa25, 0x90de, 0xfa26, 0x9115, 0xfa27,
- 0xfa28, 0x9592, 0xf9dc, 0xfa29, 0x973b, 0x974d, 0x9751, 0xfa2a,
- 0xfa2b, 0xfa2c, 0x999e, 0x9ad9, 0x9b72, 0xfa2d, 0x9ed1,
- /* 0x7521 - 0x757e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7621 - 0x767e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7721 - 0x777e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7821 - 0x787e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7921 - 0x797e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7a21 - 0x7a7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7b21 - 0x7b7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7c21 - 0x7c7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7d21 - 0x7d7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- /* 0x7e21 - 0x7e7e */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-#endif
-
-#ifdef USE_JISX0212
-static uint jisx0212ToUnicode11(uint h, uint l)
-{
- if ((0x0021 <= h) && (h <= 0x007e) && (0x0021 <= l) && (l <= 0x007e)) {
- return jisx0212_to_unicode[(h - 0x0021) * 0x005e + (l - 0x0021)];
- }
- return 0x0000;
-}
-#else
-static uint jisx0212ToUnicode11(uint h, uint l)
-{
- return 0x0000;
-}
-#endif
-
-#ifdef USE_JISX0212
-
-/*
- * This data is derived from Unicode 1.1,
- * JIS X 0212 (1990) to Unicode mapping table version 0.9 .
- * (In addition IBM Vender Defined Char included)
- */
-static unsigned short const unicode_to_jisx0212_00[] = {
- /* 0x0000 - 0x00ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2237, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x2242, 0x0000, 0x0000, 0x2270, 0x0000, 0x2243, 0x0000,
- 0x0000, 0x226d, 0x226c, 0x0000, 0x0000, 0x0000, 0x226e, 0x2234,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x2231, 0x0000, 0x226b, 0x0000, 0x0000, 0x0000, 0x0000, 0x2244,
- 0x2a22, 0x2a21, 0x2a24, 0x2a2a, 0x2a23, 0x2a29, 0x2921, 0x2a2e,
- 0x2a32, 0x2a31, 0x2a34, 0x2a33, 0x2a40, 0x2a3f, 0x2a42, 0x2a41,
- 0x0000, 0x2a50, 0x2a52, 0x2a51, 0x2a54, 0x2a58, 0x2a53, 0x0000,
- 0x292c, 0x2a63, 0x2a62, 0x2a65, 0x2a64, 0x2a72, 0x2930, 0x294e,
- 0x2b22, 0x2b21, 0x2b24, 0x2b2a, 0x2b23, 0x2b29, 0x2941, 0x2b2e,
- 0x2b32, 0x2b31, 0x2b34, 0x2b33, 0x2b40, 0x2b3f, 0x2b42, 0x2b41,
- 0x2943, 0x2b50, 0x2b52, 0x2b51, 0x2b54, 0x2b58, 0x2b53, 0x0000,
- 0x294c, 0x2b63, 0x2b62, 0x2b65, 0x2b64, 0x2b72, 0x2950, 0x2b73,
-};
-
-static unsigned short const unicode_to_jisx0212_01[] = {
- /* 0x0100 - 0x01ff */
- 0x2a27, 0x2b27, 0x2a25, 0x2b25, 0x2a28, 0x2b28, 0x2a2b, 0x2b2b,
- 0x2a2c, 0x2b2c, 0x2a2f, 0x2b2f, 0x2a2d, 0x2b2d, 0x2a30, 0x2b30,
- 0x2922, 0x2942, 0x2a37, 0x2b37, 0x0000, 0x0000, 0x2a36, 0x2b36,
- 0x2a38, 0x2b38, 0x2a35, 0x2b35, 0x2a3a, 0x2b3a, 0x2a3b, 0x2b3b,
- 0x2a3d, 0x2b3d, 0x2a3c, 0x0000, 0x2a3e, 0x2b3e, 0x2924, 0x2944,
- 0x2a47, 0x2b47, 0x2a45, 0x2b45, 0x0000, 0x0000, 0x2a46, 0x2b46,
- 0x2a44, 0x2945, 0x2926, 0x2946, 0x2a48, 0x2b48, 0x2a49, 0x2b49,
- 0x2947, 0x2a4a, 0x2b4a, 0x2a4c, 0x2b4c, 0x2a4b, 0x2b4b, 0x2929,
- 0x2949, 0x2928, 0x2948, 0x2a4d, 0x2b4d, 0x2a4f, 0x2b4f, 0x2a4e,
- 0x2b4e, 0x294a, 0x292b, 0x294b, 0x2a57, 0x2b57, 0x0000, 0x0000,
- 0x2a56, 0x2b56, 0x292d, 0x294d, 0x2a59, 0x2b59, 0x2a5b, 0x2b5b,
- 0x2a5a, 0x2b5a, 0x2a5c, 0x2b5c, 0x2a5d, 0x2b5d, 0x2a5f, 0x2b5f,
- 0x2a5e, 0x2b5e, 0x2a61, 0x2b61, 0x2a60, 0x2b60, 0x292f, 0x294f,
- 0x2a6c, 0x2b6c, 0x2a69, 0x2b69, 0x2a66, 0x2b66, 0x2a6b, 0x2b6b,
- 0x2a68, 0x2b68, 0x2a6a, 0x2b6a, 0x2a71, 0x2b71, 0x2a74, 0x2b74,
- 0x2a73, 0x2a75, 0x2b75, 0x2a77, 0x2b77, 0x2a76, 0x2b76, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2a26, 0x2b26, 0x2a43,
- 0x2b43, 0x2a55, 0x2b55, 0x2a67, 0x2b67, 0x2a70, 0x2b70, 0x2a6d,
- 0x2b6d, 0x2a6f, 0x2b6f, 0x2a6e, 0x2b6e, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2b39, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_02[] = {
- /* 0x0200 - 0x02ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2230,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x222f, 0x2232, 0x2236, 0x2235, 0x0000, 0x2233, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_03[] = {
- /* 0x0300 - 0x03ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x2238, 0x2239, 0x2661, 0x0000,
- 0x2662, 0x2663, 0x2664, 0x0000, 0x2667, 0x0000, 0x2669, 0x266c,
- 0x2676, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x2665, 0x266a, 0x2671, 0x2672, 0x2673, 0x2674,
- 0x267b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x2678, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x2675, 0x267a, 0x2677, 0x2679, 0x267c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_04[] = {
- /* 0x0400 - 0x04ff */
- 0x0000, 0x0000, 0x2742, 0x2743, 0x2744, 0x2745, 0x2746, 0x2747,
- 0x2748, 0x2749, 0x274a, 0x274b, 0x274c, 0x0000, 0x274d, 0x274e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x2772, 0x2773, 0x2774, 0x2775, 0x2776, 0x2777,
- 0x2778, 0x2779, 0x277a, 0x277b, 0x277c, 0x0000, 0x277d, 0x277e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_21[] = {
- /* 0x2100 - 0x21ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2271, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x742d, 0x226f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x737d, 0x737e, 0x7421, 0x7422, 0x7423, 0x7424, 0x7425, 0x7426,
- 0x7427, 0x7428, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x7373, 0x7374, 0x7375, 0x7376, 0x7377, 0x7378, 0x7379, 0x737a,
- 0x737b, 0x737c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_32[] = {
- /* 0x3200 - 0x32ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x742b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_4e[] = {
- /* 0x4e00 - 0x4eff */
- 0x0000, 0x0000, 0x3021, 0x0000, 0x3022, 0x3023, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3024, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3025, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3026,
- 0x0000, 0x0000, 0x0000, 0x3027, 0x3028, 0x0000, 0x0000, 0x0000,
- 0x3029, 0x0000, 0x0000, 0x302a, 0x0000, 0x0000, 0x302b, 0x302c,
- 0x302d, 0x0000, 0x0000, 0x0000, 0x0000, 0x302e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x302f, 0x3030, 0x0000, 0x0000, 0x3031, 0x0000, 0x0000, 0x3032,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3033, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3034, 0x0000, 0x3035, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3036, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3037, 0x3038, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3039, 0x303a, 0x0000, 0x0000,
- 0x0000, 0x303b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x303c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x303d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x303e, 0x303f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3040, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3041,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3042, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3043, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3044, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3045, 0x3046, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3047, 0x3048, 0x3049, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x304a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x304b,
- 0x0000, 0x304c, 0x0000, 0x304d, 0x0000, 0x304e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x742f, 0x304f, 0x3050, 0x3051,
-};
-
-static unsigned short const unicode_to_jisx0212_4f[] = {
- /* 0x4f00 - 0x4fff */
- 0x3052, 0x0000, 0x3053, 0x3054, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3055, 0x0000, 0x0000, 0x3056, 0x3057, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3058, 0x0000, 0x0000, 0x3059, 0x305a, 0x305b,
- 0x0000, 0x305c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x305d, 0x0000,
- 0x0000, 0x305e, 0x0000, 0x3060, 0x0000, 0x3061, 0x0000, 0x3062,
- 0x0000, 0x3063, 0x0000, 0x3064, 0x0000, 0x0000, 0x3065, 0x0000,
- 0x3066, 0x0000, 0x3067, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3068, 0x3069, 0x0000, 0x306a, 0x306b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x306c, 0x0000, 0x306d, 0x0000, 0x306e, 0x0000,
- 0x306f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3070,
- 0x305f, 0x0000, 0x0000, 0x3071, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3072, 0x0000, 0x3073, 0x0000, 0x3074, 0x0000,
- 0x0000, 0x3075, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3076,
- 0x3077, 0x3078, 0x3079, 0x0000, 0x0000, 0x307a, 0x307b, 0x0000,
- 0x0000, 0x307c, 0x307d, 0x0000, 0x307e, 0x3121, 0x0000, 0x0000,
- 0x0000, 0x3122, 0x3123, 0x0000, 0x3124, 0x0000, 0x3125, 0x0000,
- 0x3126, 0x0000, 0x3127, 0x3128, 0x3129, 0x0000, 0x0000, 0x312a,
- 0x0000, 0x312b, 0x312c, 0x0000, 0x0000, 0x0000, 0x312d, 0x312e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x312f, 0x0000, 0x0000, 0x0000, 0x0000, 0x3130,
- 0x0000, 0x3131, 0x0000, 0x3132, 0x3133, 0x3134, 0x3135, 0x0000,
- 0x3136, 0x3137, 0x0000, 0x0000, 0x0000, 0x3138, 0x3139, 0x0000,
- 0x313a, 0x313b, 0x0000, 0x313c, 0x313d, 0x313e, 0x0000, 0x313f,
- 0x0000, 0x0000, 0x3140, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3141, 0x0000, 0x0000, 0x0000,
- 0x3142, 0x0000, 0x3143, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3144, 0x0000, 0x3145, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3146, 0x3147, 0x0000, 0x3148,
-};
-
-static unsigned short const unicode_to_jisx0212_50[] = {
- /* 0x5000 - 0x50ff */
- 0x3149, 0x314a, 0x0000, 0x0000, 0x314b, 0x0000, 0x0000, 0x314c,
- 0x0000, 0x0000, 0x314d, 0x0000, 0x314e, 0x0000, 0x314f, 0x0000,
- 0x3150, 0x0000, 0x0000, 0x3151, 0x0000, 0x0000, 0x0000, 0x3152,
- 0x3153, 0x0000, 0x0000, 0x3154, 0x3155, 0x3156, 0x3157, 0x0000,
- 0x0000, 0x0000, 0x3158, 0x0000, 0x0000, 0x0000, 0x0000, 0x3159,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x315a, 0x0000,
- 0x315b, 0x0000, 0x315c, 0x315d, 0x0000, 0x315e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3176, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x315f, 0x3160, 0x3161, 0x0000, 0x0000, 0x3162, 0x3163, 0x0000,
- 0x0000, 0x0000, 0x3164, 0x0000, 0x3165, 0x0000, 0x3166, 0x0000,
- 0x0000, 0x3167, 0x3168, 0x3169, 0x0000, 0x0000, 0x0000, 0x316a,
- 0x0000, 0x316b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x316c,
- 0x316d, 0x0000, 0x316e, 0x316f, 0x0000, 0x0000, 0x3170, 0x3171,
- 0x0000, 0x0000, 0x3172, 0x0000, 0x0000, 0x3173, 0x0000, 0x0000,
- 0x3174, 0x3175, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3177, 0x0000, 0x3178, 0x3179, 0x0000, 0x317a, 0x0000,
- 0x0000, 0x0000, 0x317b, 0x0000, 0x0000, 0x0000, 0x317c, 0x317d,
- 0x317e, 0x0000, 0x3221, 0x3222, 0x3223, 0x0000, 0x3224, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3225, 0x3226, 0x0000, 0x3227, 0x3228,
- 0x3229, 0x322a, 0x322b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x322c, 0x0000, 0x0000, 0x0000, 0x0000, 0x322d,
- 0x322e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x322f, 0x3230, 0x0000, 0x0000, 0x3231, 0x0000, 0x0000,
- 0x3232, 0x0000, 0x0000, 0x3233, 0x3234, 0x0000, 0x0000, 0x3235,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3236, 0x0000, 0x3237, 0x0000,
- 0x3238, 0x0000, 0x0000, 0x3239, 0x323a, 0x0000, 0x0000, 0x0000,
- 0x323b, 0x0000, 0x0000, 0x0000, 0x323c, 0x323d, 0x0000, 0x323e,
- 0x0000, 0x0000, 0x323f, 0x0000, 0x3240, 0x0000, 0x3241, 0x0000,
- 0x3242, 0x3243, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3244,
- 0x0000, 0x3245, 0x3251, 0x0000, 0x7430, 0x0000, 0x3246, 0x0000,
- 0x0000, 0x0000, 0x3247, 0x0000, 0x0000, 0x0000, 0x3248, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_51[] = {
- /* 0x5100 - 0x51ff */
- 0x0000, 0x0000, 0x0000, 0x3249, 0x0000, 0x0000, 0x324a, 0x324b,
- 0x324c, 0x0000, 0x0000, 0x324d, 0x324e, 0x324f, 0x3250, 0x0000,
- 0x3252, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3253,
- 0x0000, 0x3254, 0x0000, 0x3255, 0x3256, 0x3257, 0x3258, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3259, 0x0000, 0x0000, 0x0000, 0x325a,
- 0x325b, 0x0000, 0x0000, 0x0000, 0x325c, 0x325d, 0x0000, 0x325e,
- 0x0000, 0x325f, 0x0000, 0x3260, 0x3261, 0x3262, 0x0000, 0x0000,
- 0x3263, 0x3264, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3265, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3266, 0x0000, 0x0000, 0x0000, 0x0000, 0x3267,
- 0x0000, 0x0000, 0x0000, 0x3268, 0x0000, 0x3269, 0x0000, 0x326a,
- 0x326b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x326c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x326d, 0x0000, 0x326e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x326f, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3270, 0x3271, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3272, 0x0000, 0x0000, 0x3273, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3274, 0x0000, 0x0000, 0x0000, 0x0000, 0x3275, 0x0000, 0x0000,
- 0x0000, 0x3276, 0x0000, 0x3277, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3278, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3279, 0x0000, 0x327a, 0x0000, 0x327b, 0x0000, 0x327c, 0x327d,
- 0x0000, 0x0000, 0x327e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3321, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3322,
- 0x0000, 0x3323, 0x3324, 0x3325, 0x0000, 0x3326, 0x0000, 0x0000,
- 0x3327, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3328, 0x0000,
- 0x0000, 0x0000, 0x3329, 0x0000, 0x0000, 0x332a, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x7431, 0x0000, 0x332b, 0x0000,
- 0x0000, 0x0000, 0x332c, 0x332d, 0x332e, 0x0000, 0x0000, 0x332f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_52[] = {
- /* 0x5200 - 0x52ff */
- 0x0000, 0x3330, 0x3331, 0x0000, 0x0000, 0x3332, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3333, 0x3334, 0x0000, 0x3335, 0x3336, 0x0000,
- 0x3337, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3338, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3339, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x333a, 0x333b, 0x0000, 0x0000, 0x333c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x333d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x333e, 0x0000, 0x0000,
- 0x0000, 0x333f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3340, 0x0000, 0x3341,
- 0x3342, 0x0000, 0x3343, 0x0000, 0x3344, 0x0000, 0x0000, 0x3345,
- 0x3346, 0x3347, 0x0000, 0x0000, 0x0000, 0x0000, 0x3348, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3349, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x334a,
- 0x334b, 0x334c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x334d, 0x0000, 0x334e, 0x0000, 0x0000, 0x334f, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3350, 0x0000, 0x3351, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3352, 0x0000, 0x3353, 0x3354, 0x3355,
- 0x3356, 0x0000, 0x3357, 0x0000, 0x3358, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3359, 0x335a, 0x335b, 0x335c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x335d,
- 0x335e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x335f, 0x3360,
- 0x3361, 0x0000, 0x3362, 0x3363, 0x0000, 0x3364, 0x0000, 0x0000,
- 0x3365, 0x0000, 0x0000, 0x0000, 0x3366, 0x0000, 0x3367, 0x0000,
- 0x3368, 0x0000, 0x0000, 0x0000, 0x3369, 0x0000, 0x0000, 0x336a,
- 0x0000, 0x336b, 0x0000, 0x0000, 0x336c, 0x0000, 0x336d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x336e, 0x336f, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3370, 0x0000, 0x0000, 0x0000, 0x3371, 0x0000, 0x0000,
- 0x3372, 0x3373, 0x3374, 0x0000, 0x3375, 0x0000, 0x0000, 0x0000,
- 0x3376, 0x3377, 0x0000, 0x0000, 0x3378, 0x0000, 0x3379, 0x337a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_53[] = {
- /* 0x5300 - 0x53ff */
- 0x337b, 0x0000, 0x0000, 0x337c, 0x0000, 0x0000, 0x0000, 0x7432,
- 0x0000, 0x0000, 0x337d, 0x337e, 0x3421, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3422, 0x0000, 0x3423, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3424, 0x0000, 0x0000, 0x3425, 0x3426, 0x0000, 0x3427, 0x3428,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x7433, 0x3429, 0x0000, 0x342a,
- 0x342b, 0x342c, 0x0000, 0x342d, 0x342e, 0x342f, 0x0000, 0x0000,
- 0x3430, 0x0000, 0x3431, 0x0000, 0x0000, 0x3432, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3433, 0x3434, 0x3435, 0x0000,
- 0x0000, 0x0000, 0x3436, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3438, 0x3437, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3439, 0x0000, 0x343a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x343b, 0x0000, 0x343c, 0x0000, 0x343d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x343e, 0x343f, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3440, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3441, 0x0000, 0x0000, 0x0000, 0x0000, 0x3442, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3443, 0x0000, 0x0000, 0x0000, 0x3444,
- 0x3445, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3446, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3447, 0x3448, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3449, 0x0000, 0x0000, 0x0000, 0x344a, 0x0000, 0x0000,
- 0x0000, 0x344b, 0x0000, 0x0000, 0x344c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x344d, 0x344e, 0x0000, 0x0000, 0x0000, 0x344f,
- 0x0000, 0x0000, 0x3450, 0x0000, 0x3451, 0x3452, 0x0000, 0x3453,
- 0x3454, 0x0000, 0x3455, 0x0000, 0x0000, 0x3456, 0x0000, 0x0000,
- 0x3457, 0x0000, 0x0000, 0x0000, 0x0000, 0x3458, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3459,
- 0x0000, 0x0000, 0x345a, 0x345b, 0x0000, 0x345c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x345d, 0x0000, 0x0000, 0x345e, 0x345f, 0x0000,
- 0x3460, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3461, 0x3462,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3463, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_54[] = {
- /* 0x5400 - 0x54ff */
- 0x0000, 0x0000, 0x3464, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3465, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3466, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3467, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3468,
- 0x3469, 0x0000, 0x346a, 0x0000, 0x0000, 0x0000, 0x0000, 0x346b,
- 0x0000, 0x346c, 0x0000, 0x0000, 0x346d, 0x346e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x346f, 0x3470, 0x0000, 0x0000, 0x3471,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3472, 0x0000, 0x3473,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3474, 0x0000,
- 0x0000, 0x0000, 0x3475, 0x0000, 0x3476, 0x0000, 0x3477, 0x3478,
- 0x0000, 0x3479, 0x0000, 0x347a, 0x0000, 0x347b, 0x347c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x347d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x347e,
- 0x0000, 0x3521, 0x0000, 0x3522, 0x0000, 0x3523, 0x0000, 0x0000,
- 0x3524, 0x3525, 0x7435, 0x0000, 0x0000, 0x3526, 0x0000, 0x0000,
- 0x0000, 0x3527, 0x0000, 0x0000, 0x0000, 0x3528, 0x3529, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x352a, 0x0000, 0x0000, 0x352b,
- 0x0000, 0x352c, 0x0000, 0x0000, 0x0000, 0x0000, 0x352d, 0x352e,
- 0x0000, 0x352f, 0x3530, 0x0000, 0x0000, 0x3531, 0x3532, 0x0000,
- 0x0000, 0x3533, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3534,
- 0x0000, 0x3535, 0x3536, 0x3537, 0x0000, 0x0000, 0x0000, 0x3538,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3539, 0x0000,
- 0x0000, 0x0000, 0x353a, 0x0000, 0x0000, 0x353b, 0x353c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x353d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x353e, 0x0000, 0x353f, 0x0000, 0x0000, 0x3540,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3541, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3542, 0x0000, 0x3543, 0x3544,
-};
-
-static unsigned short const unicode_to_jisx0212_55[] = {
- /* 0x5500 - 0x55ff */
- 0x3545, 0x3546, 0x0000, 0x0000, 0x0000, 0x3547, 0x0000, 0x0000,
- 0x3548, 0x3549, 0x0000, 0x0000, 0x354a, 0x354b, 0x354c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x354d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x354e, 0x354f, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3550, 0x0000, 0x0000, 0x3551, 0x3552, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3553, 0x3554, 0x3555, 0x0000, 0x0000,
- 0x0000, 0x3556, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3557,
- 0x0000, 0x3558, 0x3559, 0x0000, 0x0000, 0x355a, 0x0000, 0x0000,
- 0x355b, 0x355c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x355d, 0x0000, 0x355e, 0x355f, 0x0000, 0x0000, 0x3560, 0x0000,
- 0x3561, 0x3562, 0x0000, 0x0000, 0x3563, 0x0000, 0x3564, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3565,
- 0x0000, 0x3566, 0x3567, 0x0000, 0x0000, 0x0000, 0x3568, 0x0000,
- 0x3569, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x356a, 0x356b,
- 0x0000, 0x356c, 0x356d, 0x356e, 0x356f, 0x0000, 0x0000, 0x3570,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3571, 0x3572, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3573, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3574, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3575,
- 0x0000, 0x3576, 0x0000, 0x3577, 0x0000, 0x0000, 0x3578, 0x0000,
- 0x0000, 0x3579, 0x0000, 0x357a, 0x357b, 0x0000, 0x357c, 0x0000,
- 0x0000, 0x357d, 0x357e, 0x3621, 0x0000, 0x0000, 0x0000, 0x3622,
- 0x3623, 0x0000, 0x0000, 0x3624, 0x0000, 0x0000, 0x3625, 0x0000,
- 0x0000, 0x0000, 0x3626, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3627, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3628, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3629,
-};
-
-static unsigned short const unicode_to_jisx0212_56[] = {
- /* 0x5600 - 0x56ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x362a, 0x0000, 0x0000,
- 0x362b, 0x0000, 0x362c, 0x0000, 0x0000, 0x362d, 0x362e, 0x362f,
- 0x3630, 0x3631, 0x3632, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3633, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3634, 0x0000, 0x0000, 0x0000,
- 0x3635, 0x0000, 0x0000, 0x3636, 0x0000, 0x3637, 0x0000, 0x3638,
- 0x0000, 0x3639, 0x0000, 0x363a, 0x363b, 0x363c, 0x0000, 0x363d,
- 0x363e, 0x363f, 0x0000, 0x3640, 0x3641, 0x0000, 0x3642, 0x0000,
- 0x0000, 0x3643, 0x0000, 0x3644, 0x0000, 0x3645, 0x0000, 0x3646,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3647, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3648, 0x0000,
- 0x3649, 0x364a, 0x364b, 0x364c, 0x0000, 0x0000, 0x364d, 0x0000,
- 0x0000, 0x364e, 0x0000, 0x0000, 0x0000, 0x364f, 0x0000, 0x3650,
- 0x0000, 0x3651, 0x3652, 0x0000, 0x0000, 0x3653, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3654, 0x3655, 0x0000, 0x0000,
- 0x3656, 0x0000, 0x0000, 0x3657, 0x3658, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3659, 0x0000, 0x0000,
- 0x0000, 0x365a, 0x365b, 0x0000, 0x0000, 0x365c, 0x365d, 0x365e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x365f, 0x3660,
- 0x3661, 0x3662, 0x0000, 0x3663, 0x3664, 0x3665, 0x0000, 0x0000,
- 0x0000, 0x3666, 0x0000, 0x3667, 0x0000, 0x0000, 0x0000, 0x3668,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3669, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x366a, 0x0000, 0x0000,
- 0x0000, 0x366b, 0x366c, 0x366d, 0x3670, 0x3671, 0x0000, 0x366e,
- 0x366f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3672, 0x0000, 0x0000, 0x3673, 0x3674, 0x0000, 0x3675,
- 0x0000, 0x3676, 0x0000, 0x0000, 0x3677, 0x3678, 0x3679, 0x367a,
- 0x367b, 0x0000, 0x0000, 0x367d, 0x0000, 0x367e, 0x0000, 0x0000,
- 0x0000, 0x367c, 0x0000, 0x0000, 0x0000, 0x0000, 0x3721, 0x3722,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_57[] = {
- /* 0x5700 - 0x57ff */
- 0x0000, 0x3723, 0x3724, 0x0000, 0x0000, 0x0000, 0x0000, 0x3725,
- 0x0000, 0x0000, 0x3726, 0x0000, 0x3727, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3728, 0x0000, 0x0000, 0x0000, 0x3729, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x372a, 0x372b, 0x0000, 0x372c, 0x0000, 0x0000,
- 0x372d, 0x0000, 0x372e, 0x372f, 0x3730, 0x3731, 0x0000, 0x0000,
- 0x0000, 0x3732, 0x3733, 0x0000, 0x3734, 0x0000, 0x3735, 0x3736,
- 0x0000, 0x0000, 0x0000, 0x3737, 0x3738, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3739, 0x373a, 0x373b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x373c, 0x373d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x373e, 0x373f, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3740, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x7436, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3741, 0x0000, 0x0000, 0x3742, 0x0000, 0x3743,
- 0x3744, 0x0000, 0x0000, 0x3745, 0x0000, 0x3746, 0x3747, 0x3748,
- 0x3749, 0x374a, 0x0000, 0x374b, 0x374c, 0x374d, 0x0000, 0x374e,
- 0x0000, 0x374f, 0x3750, 0x3751, 0x3752, 0x0000, 0x3753, 0x0000,
- 0x0000, 0x3754, 0x0000, 0x3755, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3756, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3757, 0x3760, 0x0000, 0x3758,
- 0x0000, 0x3759, 0x375a, 0x0000, 0x375b, 0x375c, 0x375d, 0x375e,
- 0x0000, 0x375f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3761,
- 0x3762, 0x3763, 0x0000, 0x0000, 0x3764, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3765, 0x0000, 0x0000, 0x0000, 0x0000, 0x3766, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3767,
- 0x3768, 0x0000, 0x0000, 0x0000, 0x3769, 0x0000, 0x0000, 0x376a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x376b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x376c, 0x376d, 0x0000,
- 0x0000, 0x377e, 0x0000, 0x0000, 0x376e, 0x0000, 0x376f, 0x3770,
- 0x0000, 0x3771, 0x0000, 0x0000, 0x0000, 0x3772, 0x0000, 0x0000,
- 0x3773, 0x0000, 0x0000, 0x0000, 0x0000, 0x3774, 0x3775, 0x0000,
- 0x3776, 0x0000, 0x0000, 0x0000, 0x0000, 0x3777, 0x3778, 0x3779,
-};
-
-static unsigned short const unicode_to_jisx0212_58[] = {
- /* 0x5800 - 0x58ff */
- 0x0000, 0x0000, 0x0000, 0x377a, 0x377b, 0x0000, 0x0000, 0x0000,
- 0x377c, 0x377d, 0x0000, 0x0000, 0x3821, 0x3822, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3823, 0x0000, 0x0000, 0x3824, 0x3825,
- 0x3826, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3827, 0x3828,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3829, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x382a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x382b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x382c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x382d, 0x0000, 0x0000, 0x382e, 0x382f, 0x0000, 0x3830,
- 0x3831, 0x0000, 0x0000, 0x0000, 0x0000, 0x3832, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3833,
- 0x0000, 0x3834, 0x0000, 0x0000, 0x3835, 0x0000, 0x0000, 0x3836,
- 0x3837, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3838, 0x0000, 0x0000, 0x0000, 0x3839, 0x0000, 0x0000, 0x383a,
- 0x383b, 0x383c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x383d,
- 0x383e, 0x383f, 0x3840, 0x0000, 0x3841, 0x3842, 0x0000, 0x3843,
- 0x3844, 0x0000, 0x0000, 0x0000, 0x3845, 0x0000, 0x3846, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3847, 0x7439, 0x0000,
- 0x3848, 0x3849, 0x384a, 0x0000, 0x0000, 0x0000, 0x384b, 0x0000,
- 0x0000, 0x384c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x384d, 0x384e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3850, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3851, 0x0000, 0x384f, 0x0000, 0x0000, 0x0000,
- 0x3852, 0x0000, 0x0000, 0x0000, 0x0000, 0x3853, 0x3854, 0x0000,
- 0x3855, 0x0000, 0x3856, 0x0000, 0x3857, 0x0000, 0x3858, 0x0000,
- 0x0000, 0x0000, 0x3859, 0x0000, 0x0000, 0x385a, 0x0000, 0x0000,
- 0x0000, 0x385b, 0x385c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x385d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x385e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_59[] = {
- /* 0x5900 - 0x59ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x385f, 0x3860, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3861, 0x3862, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3863, 0x3864, 0x3865, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3867, 0x0000, 0x0000,
- 0x0000, 0x3868, 0x0000, 0x3869, 0x386a, 0x0000, 0x0000, 0x0000,
- 0x386b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x386c,
- 0x386d, 0x0000, 0x0000, 0x386e, 0x0000, 0x386f, 0x3870, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3871,
- 0x0000, 0x0000, 0x0000, 0x3872, 0x0000, 0x0000, 0x3873, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3874, 0x3875, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3876, 0x0000, 0x3877, 0x0000, 0x3878, 0x3879, 0x387a,
- 0x0000, 0x387b, 0x0000, 0x387c, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x387d, 0x0000, 0x387e, 0x0000, 0x3921,
- 0x0000, 0x0000, 0x3922, 0x0000, 0x0000, 0x3923, 0x3924, 0x0000,
- 0x0000, 0x3925, 0x0000, 0x3926, 0x3927, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3928, 0x3929, 0x0000, 0x392a, 0x0000,
- 0x0000, 0x0000, 0x392b, 0x0000, 0x0000, 0x392c, 0x0000, 0x392d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x392e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x392f, 0x0000, 0x0000, 0x3930,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3931, 0x3932, 0x3933,
- 0x3934, 0x0000, 0x0000, 0x3935, 0x0000, 0x0000, 0x0000, 0x3936,
- 0x0000, 0x0000, 0x3937, 0x0000, 0x3938, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3939, 0x0000, 0x393a, 0x393b, 0x0000, 0x0000, 0x0000,
- 0x393c, 0x0000, 0x393d, 0x0000, 0x0000, 0x393e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x393f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3940, 0x3941, 0x3942,
- 0x0000, 0x0000, 0x0000, 0x3943, 0x3944, 0x0000, 0x0000, 0x3945,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3946, 0x3947,
- 0x0000, 0x3948, 0x3949, 0x0000, 0x394a, 0x0000, 0x0000, 0x394b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_5a[] = {
- /* 0x5a00 - 0x5aff */
- 0x394c, 0x0000, 0x0000, 0x0000, 0x394d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x394e, 0x394f, 0x3950, 0x0000,
- 0x0000, 0x0000, 0x3951, 0x3952, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3953, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3954, 0x3955, 0x0000, 0x0000, 0x3956,
- 0x3957, 0x0000, 0x3958, 0x0000, 0x0000, 0x3959, 0x0000, 0x0000,
- 0x395a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x395b, 0x395c, 0x0000, 0x395d,
- 0x395e, 0x0000, 0x0000, 0x0000, 0x395f, 0x0000, 0x0000, 0x0000,
- 0x3960, 0x0000, 0x0000, 0x0000, 0x0000, 0x3961, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3962, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3963, 0x0000, 0x3964, 0x0000, 0x3965,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3966, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3967,
- 0x0000, 0x0000, 0x3968, 0x3969, 0x0000, 0x0000, 0x396a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x396b, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x396c, 0x0000, 0x0000, 0x396d, 0x0000, 0x0000, 0x396e, 0x0000,
- 0x0000, 0x396f, 0x0000, 0x0000, 0x3970, 0x0000, 0x3971, 0x3972,
- 0x3973, 0x0000, 0x3974, 0x0000, 0x0000, 0x0000, 0x0000, 0x3975,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3976, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3977, 0x3978, 0x3979, 0x0000, 0x397a, 0x0000, 0x0000,
- 0x397b, 0x0000, 0x397c, 0x397d, 0x0000, 0x0000, 0x0000, 0x397e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3a21, 0x0000, 0x3a22, 0x0000,
- 0x3a23, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a24,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3a25, 0x0000, 0x3a26, 0x0000, 0x0000, 0x0000,
- 0x3a27, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a28, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3a29, 0x0000, 0x0000, 0x0000, 0x3a2a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a2b, 0x3a2c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a2d, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_5b[] = {
- /* 0x5b00 - 0x5bff */
- 0x3a2e, 0x3a2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3a30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a31,
- 0x0000, 0x3a33, 0x0000, 0x3a34, 0x0000, 0x3a35, 0x0000, 0x0000,
- 0x0000, 0x3a36, 0x0000, 0x0000, 0x0000, 0x3a37, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a38, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3a32, 0x0000, 0x0000, 0x0000,
- 0x3a39, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3a3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3a3b, 0x3a3c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3a3d, 0x0000, 0x0000, 0x0000, 0x3a3e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a3f, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3a40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a41, 0x3a42,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3a43, 0x3a44, 0x3a45, 0x3a46,
- 0x0000, 0x3a47, 0x0000, 0x0000, 0x3a48, 0x0000, 0x3a49, 0x0000,
- 0x0000, 0x0000, 0x3a4a, 0x0000, 0x0000, 0x0000, 0x3a4b, 0x0000,
- 0x3a4c, 0x3a4d, 0x0000, 0x3a4e, 0x3a4f, 0x0000, 0x3a50, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3a51, 0x3a52, 0x0000, 0x0000, 0x3a53, 0x3a54, 0x0000, 0x3a55,
- 0x0000, 0x3a56, 0x3a57, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a58,
- 0x0000, 0x0000, 0x3a59, 0x0000, 0x3a5a, 0x0000, 0x0000, 0x0000,
- 0x3a5b, 0x3a5c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a5d, 0x0000, 0x3a5e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a5f, 0x3a60,
- 0x3a61, 0x3a62, 0x3a63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3a64, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x743a, 0x0000, 0x0000, 0x3a65,
- 0x0000, 0x3a66, 0x0000, 0x0000, 0x3a67, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a68, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_5c[] = {
- /* 0x5c00 - 0x5cff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3a69, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a6a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3a6b, 0x3a6c,
- 0x0000, 0x0000, 0x0000, 0x3a6d, 0x0000, 0x0000, 0x3a6e, 0x0000,
- 0x0000, 0x3a6f, 0x0000, 0x3a70, 0x3a71, 0x0000, 0x3a72, 0x0000,
- 0x3a73, 0x0000, 0x3a74, 0x0000, 0x0000, 0x3a75, 0x3a76, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3a77, 0x3a78, 0x0000, 0x3a79, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3a7a, 0x3a7b, 0x0000, 0x0000, 0x0000, 0x3a7c,
- 0x3a7d, 0x3a7e, 0x0000, 0x0000, 0x0000, 0x3b21, 0x0000, 0x0000,
- 0x3b22, 0x0000, 0x0000, 0x0000, 0x3b23, 0x3b24, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3b25, 0x3b26, 0x3b27, 0x3b28, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b29,
- 0x3b2a, 0x0000, 0x3b2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b2c,
- 0x0000, 0x0000, 0x3b2d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b2e, 0x0000, 0x3b2f,
- 0x3b30, 0x0000, 0x3b31, 0x3b32, 0x0000, 0x0000, 0x3b33, 0x0000,
- 0x0000, 0x0000, 0x3b34, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3b35, 0x0000, 0x3b36, 0x3b37, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3b38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3b39, 0x0000, 0x3b3a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3b3b, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b3d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b3c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b3e, 0x0000,
- 0x0000, 0x3b3f, 0x3b40, 0x0000, 0x3b41, 0x743b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_5d[] = {
- /* 0x5d00 - 0x5dff */
- 0x0000, 0x3b42, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b43, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b44, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3b45, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3b47, 0x3b48, 0x0000, 0x3b49, 0x3b4a,
- 0x0000, 0x0000, 0x0000, 0x3b46, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3b4b, 0x0000, 0x0000, 0x3b4c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3b4d, 0x0000, 0x0000, 0x0000, 0x3b4e, 0x0000, 0x3b4f,
- 0x0000, 0x0000, 0x3b50, 0x3b51, 0x0000, 0x0000, 0x3b52, 0x0000,
- 0x3b53, 0x0000, 0x3b57, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3b55, 0x0000, 0x743c, 0x0000, 0x3b54, 0x0000, 0x0000,
- 0x0000, 0x3b56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b58,
- 0x3b59, 0x3b5a, 0x3b5b, 0x0000, 0x3b5c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3b5d, 0x0000, 0x0000, 0x3b5e, 0x0000, 0x0000,
- 0x3b5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3b60, 0x3b61, 0x0000, 0x0000, 0x0000, 0x3b62, 0x3b63,
- 0x0000, 0x3b64, 0x0000, 0x3b65, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3b66, 0x0000, 0x3b67, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3b68, 0x3b69, 0x3b6a, 0x3b6b, 0x0000, 0x0000,
- 0x0000, 0x3b6c, 0x0000, 0x3b6d, 0x0000, 0x0000, 0x0000, 0x3b6e,
- 0x3b6f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3b70,
- 0x0000, 0x0000, 0x0000, 0x3b71, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3b72, 0x0000, 0x6674, 0x0000, 0x3b73, 0x0000, 0x0000, 0x0000,
- 0x3b74, 0x3b75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3b76, 0x0000, 0x0000, 0x0000, 0x3b77,
- 0x0000, 0x0000, 0x0000, 0x3b78, 0x0000, 0x0000, 0x3b7a, 0x0000,
- 0x3b79, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3b7b, 0x3b7c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3b7d, 0x0000, 0x0000, 0x0000, 0x3b7e, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3c21, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3c22, 0x3c23, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_5e[] = {
- /* 0x5e00 - 0x5eff */
- 0x3c24, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c25,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c26, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3c27, 0x0000, 0x3c28, 0x3c29, 0x0000, 0x0000,
- 0x3c2a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c2b,
- 0x3c2c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3c2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c2d, 0x0000,
- 0x0000, 0x0000, 0x3c2f, 0x0000, 0x0000, 0x3c30, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c31, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3c34, 0x0000, 0x3c32, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3c33, 0x3c35, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c36, 0x0000,
- 0x3c37, 0x0000, 0x0000, 0x3c38, 0x3c39, 0x0000, 0x3c3a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3c3b, 0x0000, 0x3c3c, 0x3c3d, 0x3c3e, 0x3c3f, 0x3c40, 0x0000,
- 0x3c41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3c42, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3c43, 0x0000, 0x0000, 0x3c44, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3c45, 0x0000, 0x3c46, 0x3c47, 0x0000, 0x0000,
- 0x3c48, 0x0000, 0x3c49, 0x0000, 0x3c4a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3c4b, 0x0000, 0x3c4c, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c4d, 0x3c4e, 0x3c4f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c50, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3c52, 0x3c51, 0x0000, 0x3c53, 0x0000,
- 0x0000, 0x3c54, 0x3c55, 0x0000, 0x3c56, 0x3c57, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3c58, 0x0000, 0x3c59, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c5a, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3c5b, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_5f[] = {
- /* 0x5f00 - 0x5fff */
- 0x0000, 0x0000, 0x3c5c, 0x0000, 0x0000, 0x0000, 0x3c5d, 0x3c5e,
- 0x3c5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c60, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3c61, 0x0000, 0x0000, 0x3c62, 0x3c63, 0x0000, 0x0000,
- 0x0000, 0x3c64, 0x3c65, 0x3c66, 0x3c67, 0x0000, 0x0000, 0x0000,
- 0x3c68, 0x0000, 0x0000, 0x3c69, 0x3c6a, 0x0000, 0x3c6b, 0x0000,
- 0x3c6c, 0x0000, 0x0000, 0x0000, 0x3c6d, 0x0000, 0x3c6e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3c6f, 0x0000, 0x3c70, 0x0000, 0x3c71,
- 0x3c72, 0x0000, 0x0000, 0x0000, 0x3c73, 0x3c74, 0x0000, 0x3c75,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3c76, 0x0000, 0x0000,
- 0x3c77, 0x0000, 0x0000, 0x0000, 0x3c78, 0x0000, 0x0000, 0x0000,
- 0x3c79, 0x0000, 0x0000, 0x3c7a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3c7b, 0x0000, 0x0000, 0x3c7c, 0x3c7d, 0x0000, 0x0000, 0x3c7e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d21,
- 0x0000, 0x0000, 0x3d22, 0x0000, 0x3d23, 0x3d24, 0x0000, 0x0000,
- 0x3d25, 0x0000, 0x3d26, 0x0000, 0x0000, 0x3d27, 0x3d28, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3d29, 0x0000, 0x0000, 0x0000, 0x3d2a, 0x0000, 0x3d2b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d2c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3d2d, 0x3d2e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3d2f, 0x0000, 0x3d32, 0x0000, 0x0000, 0x3d30,
- 0x0000, 0x0000, 0x0000, 0x3d31, 0x3d33, 0x0000, 0x0000, 0x3d34,
- 0x3d35, 0x3d36, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x743e,
- 0x3d37, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3d38, 0x0000, 0x0000, 0x3d39,
- 0x3d3a, 0x3d3b, 0x0000, 0x3d3c, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3d3d, 0x3d3e, 0x3d3f, 0x3d40, 0x3d41, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d42, 0x0000,
- 0x0000, 0x3d43, 0x3d44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3d45, 0x3d46, 0x3d47, 0x0000, 0x3d48, 0x3d49, 0x3d4a, 0x3d4b,
- 0x0000, 0x0000, 0x3d4c, 0x3d4d, 0x0000, 0x0000, 0x3d4e, 0x0000,
- 0x0000, 0x0000, 0x3d4f, 0x0000, 0x3d50, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_60[] = {
- /* 0x6000 - 0x60ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d51,
- 0x0000, 0x0000, 0x3d52, 0x0000, 0x0000, 0x3d53, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3d54, 0x3d55, 0x0000, 0x0000, 0x3d56,
- 0x3d57, 0x0000, 0x3d58, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d59,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3d5a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d5b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3d5c, 0x0000, 0x3d5d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3d5e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d5f,
- 0x3d60, 0x3d61, 0x0000, 0x0000, 0x3d62, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3d63, 0x0000, 0x0000, 0x3d64, 0x0000, 0x3d65, 0x3d66,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d67, 0x0000, 0x0000,
- 0x0000, 0x3d68, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d69,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3d6a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d6b, 0x3d6c,
- 0x0000, 0x0000, 0x3d6d, 0x0000, 0x0000, 0x743f, 0x3d6e, 0x0000,
- 0x3d6f, 0x0000, 0x3d70, 0x0000, 0x0000, 0x0000, 0x3d71, 0x0000,
- 0x0000, 0x3d72, 0x0000, 0x3d73, 0x0000, 0x3d74, 0x0000, 0x0000,
- 0x3d75, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d76, 0x3d77, 0x0000,
- 0x0000, 0x0000, 0x3d78, 0x0000, 0x3d79, 0x3d7a, 0x0000, 0x0000,
- 0x3d7b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3d7c, 0x3d7d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3d7e,
- 0x0000, 0x0000, 0x0000, 0x3e21, 0x0000, 0x0000, 0x3e22, 0x0000,
- 0x0000, 0x0000, 0x3e23, 0x0000, 0x3e24, 0x0000, 0x0000, 0x0000,
- 0x3e25, 0x3e26, 0x3e27, 0x3e28, 0x0000, 0x0000, 0x3e29, 0x3e2a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3e2b, 0x3e2c, 0x0000, 0x0000,
- 0x0000, 0x3e2d, 0x0000, 0x3e2e, 0x0000, 0x3e2f, 0x3e30, 0x0000,
- 0x0000, 0x0000, 0x3e31, 0x0000, 0x0000, 0x3e32, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3e33, 0x0000, 0x0000, 0x3e34, 0x0000, 0x0000,
- 0x3e35, 0x0000, 0x0000, 0x0000, 0x3e36, 0x3e37, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_61[] = {
- /* 0x6100 - 0x61ff */
- 0x0000, 0x0000, 0x3e38, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e39,
- 0x0000, 0x0000, 0x3e3a, 0x0000, 0x3e3b, 0x0000, 0x0000, 0x0000,
- 0x3e3c, 0x3e3d, 0x3e3e, 0x3e3f, 0x3e40, 0x0000, 0x3e41, 0x3e42,
- 0x0000, 0x3e43, 0x0000, 0x0000, 0x3e44, 0x0000, 0x3e45, 0x0000,
- 0x7440, 0x0000, 0x3e46, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3e47, 0x3e48, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3e49, 0x3e4a, 0x0000, 0x0000, 0x0000, 0x3e4b, 0x3e4c, 0x3e4d,
- 0x0000, 0x3e4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3e4f, 0x0000, 0x0000, 0x0000, 0x3e50, 0x3e51, 0x0000,
- 0x0000, 0x3e52, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e53, 0x0000,
- 0x3e54, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3e55, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3e56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3e57, 0x0000, 0x0000, 0x3e58, 0x3e59, 0x0000, 0x0000, 0x3e5a,
- 0x3e5b, 0x3e5c, 0x0000, 0x3e5d, 0x3e5e, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3e5f, 0x0000, 0x3e60, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3e61, 0x3e62, 0x0000, 0x0000, 0x0000, 0x3e63,
- 0x3e64, 0x0000, 0x0000, 0x0000, 0x3e65, 0x3e66, 0x0000, 0x3e67,
- 0x3e68, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e69, 0x0000, 0x0000,
- 0x3e6a, 0x0000, 0x3e6b, 0x0000, 0x0000, 0x3e6c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x3e6d, 0x3e6e, 0x0000, 0x0000, 0x3e6f, 0x0000, 0x0000, 0x0000,
- 0x3e70, 0x3e71, 0x3e72, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e73, 0x3e74,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3e75, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3e76, 0x3e77, 0x3e78, 0x3e79,
- 0x0000, 0x3e7a, 0x3e7b, 0x0000, 0x0000, 0x3e7e, 0x0000, 0x3e7c,
- 0x0000, 0x3e7d, 0x0000, 0x0000, 0x3f21, 0x3f22, 0x0000, 0x3f23,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_62[] = {
- /* 0x6200 - 0x62ff */
- 0x0000, 0x3f24, 0x0000, 0x3f25, 0x3f26, 0x0000, 0x0000, 0x3f27,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3f28, 0x0000, 0x3f29, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3f2a, 0x0000, 0x0000, 0x0000,
- 0x3f2b, 0x0000, 0x3f2c, 0x3f2d, 0x0000, 0x0000, 0x0000, 0x3f2e,
- 0x0000, 0x3f2f, 0x0000, 0x3f30, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3f31, 0x0000, 0x0000, 0x0000, 0x3f32, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3f33, 0x3f34, 0x3f35, 0x0000, 0x3f36, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3f37, 0x0000, 0x0000, 0x0000,
- 0x3f38, 0x3f39, 0x3f3a, 0x0000, 0x3f3b, 0x0000, 0x3f3c, 0x0000,
- 0x0000, 0x0000, 0x3f3d, 0x0000, 0x3f3e, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3f3f, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f40, 0x0000, 0x3f41,
- 0x0000, 0x0000, 0x0000, 0x3f42, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3f43, 0x0000, 0x0000, 0x3f44, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f45, 0x3f46, 0x3f47,
- 0x3f48, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f49, 0x0000,
- 0x3f4a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x3f4b, 0x0000, 0x0000, 0x3f4c, 0x3f4d,
- 0x0000, 0x0000, 0x3f4e, 0x0000, 0x0000, 0x0000, 0x3f4f, 0x3f50,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3f51, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f52, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f53, 0x3f54, 0x0000,
- 0x0000, 0x0000, 0x3f55, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3f56, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3f57, 0x0000, 0x3f58, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3f59, 0x3f5a, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_63[] = {
- /* 0x6300 - 0x63ff */
- 0x0000, 0x0000, 0x0000, 0x3f5b, 0x3f5c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x3f5d, 0x3f5e, 0x0000, 0x3f5f, 0x0000, 0x0000,
- 0x3f60, 0x0000, 0x0000, 0x3f61, 0x0000, 0x0000, 0x3f62, 0x0000,
- 0x3f63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3f64, 0x3f65, 0x0000, 0x0000, 0x3f66, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f67, 0x3f68, 0x0000,
- 0x0000, 0x3f69, 0x0000, 0x0000, 0x3f6a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x3f6b, 0x3f6c, 0x3f6d, 0x3f6e, 0x0000, 0x3f6f, 0x0000,
- 0x0000, 0x0000, 0x3f70, 0x3f71, 0x0000, 0x0000, 0x3f72, 0x0000,
- 0x0000, 0x0000, 0x3f73, 0x3f74, 0x3f75, 0x0000, 0x0000, 0x0000,
- 0x3f76, 0x0000, 0x0000, 0x3f77, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x3f78, 0x3f79, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3f7a, 0x3f7b, 0x0000, 0x0000,
- 0x0000, 0x3f7c, 0x0000, 0x0000, 0x3f7d, 0x3f7e, 0x0000, 0x0000,
- 0x4021, 0x0000, 0x0000, 0x0000, 0x4022, 0x4023, 0x0000, 0x4024,
- 0x0000, 0x0000, 0x4025, 0x0000, 0x4026, 0x0000, 0x0000, 0x4027,
- 0x0000, 0x0000, 0x4028, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4029, 0x0000, 0x0000, 0x0000, 0x402a, 0x402b, 0x0000, 0x0000,
- 0x0000, 0x402c, 0x402d, 0x0000, 0x0000, 0x0000, 0x402e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x402f, 0x0000, 0x4030, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4031, 0x4032, 0x4033,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4034, 0x0000, 0x0000,
- 0x0000, 0x4035, 0x0000, 0x0000, 0x0000, 0x4036, 0x0000, 0x0000,
- 0x4037, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4038, 0x0000,
- 0x0000, 0x4039, 0x0000, 0x403a, 0x403b, 0x403c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x403d, 0x0000, 0x0000, 0x0000,
- 0x403e, 0x0000, 0x0000, 0x0000, 0x0000, 0x403f, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4040, 0x0000, 0x4041, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4042, 0x4043, 0x0000, 0x4044, 0x0000, 0x0000,
- 0x4045, 0x4046, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_64[] = {
- /* 0x6400 - 0x64ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4047, 0x4048, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4049, 0x0000, 0x404a, 0x0000, 0x404b, 0x0000, 0x0000, 0x0000,
- 0x404c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x404d, 0x0000,
- 0x404e, 0x0000, 0x404f, 0x0000, 0x4050, 0x4051, 0x0000, 0x0000,
- 0x0000, 0x4052, 0x4053, 0x0000, 0x0000, 0x0000, 0x0000, 0x4054,
- 0x4055, 0x0000, 0x0000, 0x0000, 0x0000, 0x4056, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4057, 0x0000, 0x4058,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4059, 0x0000, 0x0000, 0x0000, 0x405a,
- 0x0000, 0x405b, 0x405c, 0x405d, 0x405e, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x405f, 0x4060, 0x4061, 0x4062, 0x0000, 0x4063,
- 0x4064, 0x4065, 0x0000, 0x4066, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4067, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4068, 0x4069, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x406a, 0x0000, 0x406b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x406c, 0x0000, 0x406d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x406e,
- 0x406f, 0x4070, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4071, 0x4072, 0x0000, 0x4073, 0x0000, 0x4074, 0x0000, 0x4075,
- 0x0000, 0x4076, 0x0000, 0x4077, 0x0000, 0x0000, 0x4078, 0x0000,
- 0x4079, 0x0000, 0x0000, 0x0000, 0x407a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x407b, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x407c, 0x407d, 0x407e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4121, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4122, 0x4123, 0x4124, 0x4125, 0x0000, 0x4126, 0x0000,
- 0x4127, 0x4128, 0x0000, 0x0000, 0x0000, 0x4129, 0x0000, 0x412a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x412b, 0x412c, 0x0000, 0x0000,
- 0x0000, 0x412d, 0x412e, 0x0000, 0x0000, 0x412f, 0x0000, 0x0000,
- 0x4130, 0x0000, 0x0000, 0x0000, 0x0000, 0x4131, 0x0000, 0x4132,
- 0x0000, 0x0000, 0x0000, 0x4133, 0x0000, 0x0000, 0x0000, 0x4134,
-};
-
-static unsigned short const unicode_to_jisx0212_65[] = {
- /* 0x6500 - 0x65ff */
- 0x0000, 0x4135, 0x0000, 0x0000, 0x4136, 0x0000, 0x0000, 0x0000,
- 0x4137, 0x4138, 0x4139, 0x0000, 0x0000, 0x0000, 0x0000, 0x413a,
- 0x0000, 0x0000, 0x0000, 0x413b, 0x413c, 0x0000, 0x413d, 0x0000,
- 0x0000, 0x413e, 0x0000, 0x413f, 0x0000, 0x0000, 0x4140, 0x4141,
- 0x0000, 0x0000, 0x4142, 0x0000, 0x0000, 0x0000, 0x4143, 0x0000,
- 0x0000, 0x4144, 0x0000, 0x0000, 0x0000, 0x0000, 0x4145, 0x0000,
- 0x0000, 0x4146, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4147, 0x0000, 0x4148, 0x4149, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x414a, 0x0000, 0x0000, 0x0000, 0x414b,
- 0x0000, 0x414c, 0x0000, 0x0000, 0x0000, 0x0000, 0x7441, 0x0000,
- 0x414d, 0x0000, 0x414e, 0x0000, 0x414f, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4150,
- 0x4151, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4152,
- 0x0000, 0x0000, 0x0000, 0x4153, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4154, 0x0000, 0x0000, 0x4155, 0x0000, 0x0000,
- 0x0000, 0x4156, 0x0000, 0x0000, 0x0000, 0x4157, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4158, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4159, 0x0000, 0x0000, 0x415a, 0x0000, 0x0000,
- 0x415b, 0x0000, 0x0000, 0x0000, 0x0000, 0x415c, 0x0000, 0x0000,
- 0x415d, 0x0000, 0x0000, 0x415e, 0x0000, 0x0000, 0x415f, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4160, 0x0000,
- 0x0000, 0x0000, 0x4161, 0x4162, 0x4163, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4164,
- 0x0000, 0x0000, 0x4165, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4166, 0x4167, 0x0000, 0x0000, 0x0000, 0x0000, 0x4168, 0x0000,
- 0x4169, 0x0000, 0x0000, 0x0000, 0x416a, 0x0000, 0x416b, 0x0000,
- 0x416c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x416d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x416e, 0x0000, 0x416f, 0x0000, 0x4170, 0x4171, 0x0000, 0x0000,
- 0x0000, 0x4172, 0x0000, 0x0000, 0x0000, 0x0000, 0x4173, 0x4174,
-};
-
-static unsigned short const unicode_to_jisx0212_66[] = {
- /* 0x6600 - 0x66ff */
- 0x4175, 0x0000, 0x0000, 0x0000, 0x4176, 0x0000, 0x0000, 0x0000,
- 0x4177, 0x4178, 0x0000, 0x0000, 0x0000, 0x4179, 0x0000, 0x0000,
- 0x0000, 0x417a, 0x417b, 0x0000, 0x0000, 0x417c, 0x417d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x417e, 0x4221, 0x0000,
- 0x0000, 0x4222, 0x4223, 0x4224, 0x4225, 0x0000, 0x4226, 0x0000,
- 0x0000, 0x4227, 0x4228, 0x4229, 0x422a, 0x0000, 0x422b, 0x0000,
- 0x422c, 0x422d, 0x0000, 0x422e, 0x0000, 0x0000, 0x0000, 0x4230,
- 0x0000, 0x422f, 0x0000, 0x7442, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4231, 0x0000, 0x0000, 0x0000, 0x0000, 0x4232, 0x4233, 0x0000,
- 0x0000, 0x0000, 0x4234, 0x0000, 0x4235, 0x0000, 0x4237, 0x0000,
- 0x0000, 0x4236, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4238,
- 0x4239, 0x423a, 0x0000, 0x423b, 0x423c, 0x0000, 0x0000, 0x0000,
- 0x423d, 0x423e, 0x0000, 0x0000, 0x0000, 0x7443, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4240, 0x4241, 0x4242, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4244, 0x0000, 0x4245, 0x0000, 0x4247,
- 0x4248, 0x4249, 0x0000, 0x424a, 0x424c, 0x0000, 0x4243, 0x4246,
- 0x424b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x424d, 0x424e, 0x424f, 0x0000, 0x0000,
- 0x4250, 0x0000, 0x4251, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4252, 0x4253, 0x4254, 0x4255, 0x0000, 0x0000, 0x4256,
- 0x4257, 0x0000, 0x0000, 0x0000, 0x4258, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4259, 0x0000, 0x0000,
- 0x0000, 0x425a, 0x425b, 0x0000, 0x0000, 0x425c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x425d, 0x0000, 0x0000, 0x0000, 0x425e,
- 0x425f, 0x0000, 0x4260, 0x4261, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4262, 0x0000, 0x0000, 0x0000, 0x4263, 0x0000, 0x4264, 0x4265,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4266, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4267, 0x0000, 0x0000, 0x0000, 0x4268,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4269, 0x0000, 0x0000, 0x426a, 0x426b, 0x0000, 0x426c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x426d, 0x423f, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_67[] = {
- /* 0x6700 - 0x67ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x426e, 0x0000, 0x426f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4270, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4271, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4272, 0x0000, 0x0000, 0x4273, 0x0000, 0x0000, 0x0000,
- 0x4274, 0x0000, 0x4275, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4276, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4277, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4278, 0x0000, 0x4279,
- 0x427a, 0x0000, 0x0000, 0x0000, 0x427b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x427c, 0x427d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x427e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4321, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4322, 0x0000, 0x4323, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4324, 0x0000, 0x4325, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4326, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4327, 0x0000, 0x0000, 0x4328, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4329, 0x432a,
- 0x0000, 0x432b, 0x0000, 0x432c, 0x0000, 0x0000, 0x432d, 0x0000,
- 0x432e, 0x432f, 0x0000, 0x4330, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4331, 0x4332, 0x4333, 0x0000, 0x0000, 0x4334, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4335, 0x4336, 0x4337, 0x0000, 0x0000,
- 0x4339, 0x0000, 0x433a, 0x433b, 0x0000, 0x433c, 0x0000, 0x0000,
- 0x433d, 0x433e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x433f, 0x0000, 0x0000, 0x0000, 0x0000, 0x4340,
- 0x0000, 0x4341, 0x0000, 0x0000, 0x4342, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4343, 0x0000, 0x0000, 0x0000, 0x0000, 0x4344, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4345, 0x0000, 0x4346, 0x0000, 0x0000, 0x0000, 0x4347, 0x4348,
- 0x0000, 0x4338, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_68[] = {
- /* 0x6800 - 0x68ff */
- 0x0000, 0x7446, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x434a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x434b, 0x0000, 0x0000, 0x0000, 0x434c, 0x0000, 0x434d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x434f,
- 0x434e, 0x0000, 0x0000, 0x0000, 0x4350, 0x4351, 0x0000, 0x4352,
- 0x4353, 0x4354, 0x0000, 0x4355, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4356, 0x0000, 0x0000, 0x0000, 0x4357,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4358, 0x4359, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x435a, 0x0000, 0x435b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4349, 0x0000, 0x0000, 0x435c, 0x0000, 0x435d,
- 0x435e, 0x0000, 0x0000, 0x435f, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4360, 0x0000, 0x0000, 0x4361, 0x4362,
- 0x4363, 0x4364, 0x4365, 0x0000, 0x0000, 0x4366, 0x0000, 0x0000,
- 0x0000, 0x4367, 0x4368, 0x4369, 0x436a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x436b, 0x0000, 0x436c, 0x0000, 0x436d, 0x0000,
- 0x436e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x436f, 0x0000,
- 0x4370, 0x0000, 0x4371, 0x0000, 0x4372, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4373, 0x0000, 0x4374, 0x0000, 0x4375, 0x0000, 0x0000,
- 0x0000, 0x4376, 0x4377, 0x0000, 0x0000, 0x0000, 0x4378, 0x0000,
- 0x0000, 0x0000, 0x4379, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x437a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x437b, 0x0000, 0x0000,
- 0x437c, 0x0000, 0x0000, 0x0000, 0x437d, 0x0000, 0x0000, 0x437e,
- 0x4421, 0x4422, 0x0000, 0x4423, 0x0000, 0x0000, 0x4424, 0x0000,
- 0x0000, 0x4425, 0x0000, 0x0000, 0x4426, 0x4427, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4428, 0x0000, 0x0000,
- 0x4429, 0x0000, 0x442a, 0x442b, 0x442c, 0x442d, 0x0000, 0x0000,
- 0x442e, 0x442f, 0x0000, 0x0000, 0x0000, 0x4430, 0x4431, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4432, 0x4433, 0x4434, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_69[] = {
- /* 0x6900 - 0x69ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4435, 0x0000,
- 0x0000, 0x4436, 0x4437, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4438, 0x4439, 0x0000, 0x443a, 0x0000, 0x0000, 0x443b, 0x443c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x443d, 0x0000, 0x443e, 0x0000, 0x443f, 0x0000, 0x0000,
- 0x4440, 0x0000, 0x0000, 0x4441, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4442, 0x0000, 0x0000, 0x4443, 0x0000, 0x0000,
- 0x0000, 0x4444, 0x0000, 0x0000, 0x0000, 0x0000, 0x4445, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4446,
- 0x0000, 0x0000, 0x0000, 0x4447, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4448, 0x4449, 0x444a, 0x444b, 0x0000,
- 0x444c, 0x444d, 0x0000, 0x0000, 0x444e, 0x0000, 0x0000, 0x0000,
- 0x444f, 0x4450, 0x4451, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4452, 0x4453, 0x0000, 0x0000, 0x0000, 0x4454,
- 0x4455, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4456, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4457, 0x0000, 0x0000, 0x0000, 0x4458, 0x0000,
- 0x4459, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x445a, 0x0000, 0x0000, 0x0000, 0x445b, 0x445c, 0x0000,
- 0x445d, 0x0000, 0x0000, 0x445e, 0x0000, 0x445f, 0x0000, 0x4460,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4461,
- 0x4462, 0x0000, 0x4463, 0x0000, 0x4464, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4465, 0x0000, 0x0000,
- 0x4466, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4467, 0x0000, 0x0000, 0x0000, 0x0000, 0x4468, 0x4469,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x446a, 0x0000, 0x0000, 0x446b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x446c, 0x446d,
- 0x0000, 0x446e, 0x0000, 0x446f, 0x0000, 0x4470, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4471, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_6a[] = {
- /* 0x6a00 - 0x6aff */
- 0x4472, 0x4473, 0x0000, 0x4474, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4475,
- 0x0000, 0x4476, 0x0000, 0x0000, 0x0000, 0x4477, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4478, 0x0000, 0x0000, 0x4479, 0x0000, 0x0000,
- 0x447a, 0x0000, 0x0000, 0x0000, 0x447b, 0x0000, 0x0000, 0x0000,
- 0x447c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x447d, 0x0000, 0x447e, 0x0000, 0x4521, 0x0000, 0x0000, 0x4522,
- 0x0000, 0x0000, 0x0000, 0x4523, 0x0000, 0x0000, 0x4524, 0x4525,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4526, 0x4527, 0x0000,
- 0x0000, 0x4528, 0x4529, 0x0000, 0x0000, 0x0000, 0x452a, 0x0000,
- 0x452b, 0x452c, 0x452d, 0x0000, 0x0000, 0x452e, 0x452f, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4530, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4531, 0x0000, 0x0000, 0x4532,
- 0x0000, 0x0000, 0x4533, 0x7449, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4534, 0x0000, 0x4535, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4536, 0x0000,
- 0x0000, 0x4537, 0x0000, 0x4538, 0x0000, 0x0000, 0x4539, 0x453a,
- 0x0000, 0x453b, 0x0000, 0x453c, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x453d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x453e, 0x0000, 0x453f, 0x4540, 0x4541,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4542, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4543, 0x0000, 0x0000, 0x0000, 0x4544,
- 0x4545, 0x4546, 0x0000, 0x0000, 0x4547, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4548, 0x4549, 0x454a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x454b, 0x0000,
- 0x454d, 0x454c, 0x0000, 0x0000, 0x454e, 0x0000, 0x0000, 0x0000,
- 0x454f, 0x0000, 0x0000, 0x0000, 0x4550, 0x4551, 0x4552, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4553, 0x4554, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x744a, 0x0000, 0x4555, 0x0000, 0x0000, 0x4556,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4557, 0x0000, 0x0000, 0x0000,
- 0x4558, 0x4559, 0x455a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x455b, 0x455c, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_6b[] = {
- /* 0x6b00 - 0x6bff */
- 0x0000, 0x0000, 0x455d, 0x455e, 0x0000, 0x0000, 0x455f, 0x4560,
- 0x0000, 0x4561, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4562,
- 0x4563, 0x4564, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4565,
- 0x0000, 0x0000, 0x0000, 0x4566, 0x0000, 0x0000, 0x4567, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4568, 0x0000, 0x0000, 0x0000,
- 0x4569, 0x0000, 0x0000, 0x456a, 0x456b, 0x0000, 0x0000, 0x456c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x456d, 0x456e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x456f, 0x0000, 0x0000, 0x0000, 0x4570,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4571, 0x0000,
- 0x0000, 0x0000, 0x4572, 0x0000, 0x0000, 0x4573, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4574, 0x0000, 0x0000, 0x0000, 0x4575, 0x0000,
- 0x4576, 0x0000, 0x0000, 0x0000, 0x0000, 0x4577, 0x0000, 0x0000,
- 0x4578, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4579,
- 0x0000, 0x0000, 0x0000, 0x457a, 0x0000, 0x0000, 0x457b, 0x0000,
- 0x457c, 0x0000, 0x0000, 0x0000, 0x0000, 0x457d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x457e, 0x4621, 0x0000,
- 0x0000, 0x0000, 0x4622, 0x0000, 0x0000, 0x4623, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4624,
- 0x0000, 0x0000, 0x0000, 0x4625, 0x0000, 0x0000, 0x0000, 0x4626,
- 0x4627, 0x0000, 0x4628, 0x4629, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x462a, 0x462b, 0x0000, 0x0000, 0x462c, 0x462d, 0x462e, 0x0000,
- 0x462f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4630, 0x4631, 0x0000, 0x0000, 0x0000, 0x4632, 0x4633, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4634, 0x4635, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4636, 0x0000, 0x0000, 0x4637, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4638, 0x0000,
- 0x0000, 0x0000, 0x4639, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x463a, 0x0000, 0x463b, 0x0000, 0x0000, 0x463c, 0x463d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x463e, 0x0000,
- 0x0000, 0x463f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4640,
- 0x0000, 0x4641, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4642,
-};
-
-static unsigned short const unicode_to_jisx0212_6c[] = {
- /* 0x6c00 - 0x6cff */
- 0x0000, 0x0000, 0x4643, 0x0000, 0x4644, 0x4645, 0x0000, 0x0000,
- 0x0000, 0x4646, 0x0000, 0x0000, 0x0000, 0x4647, 0x4648, 0x0000,
- 0x4649, 0x0000, 0x464a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x464b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x464c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x464d, 0x464e,
- 0x464f, 0x0000, 0x0000, 0x0000, 0x4650, 0x0000, 0x4651, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4652, 0x0000, 0x4653, 0x4654, 0x0000,
- 0x0000, 0x0000, 0x4655, 0x4656, 0x0000, 0x0000, 0x0000, 0x4657,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4658, 0x4659, 0x0000, 0x465a, 0x0000, 0x465b,
- 0x0000, 0x0000, 0x465c, 0x0000, 0x465d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x465e, 0x0000, 0x465f, 0x4660, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4736,
- 0x0000, 0x0000, 0x0000, 0x4661, 0x0000, 0x4662, 0x0000, 0x4663,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4664, 0x0000, 0x4665, 0x0000,
- 0x4666, 0x4667, 0x0000, 0x4668, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4669, 0x466a, 0x466b,
- 0x0000, 0x466c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x466d, 0x466e, 0x0000, 0x466f,
- 0x4670, 0x0000, 0x0000, 0x0000, 0x4671, 0x0000, 0x0000, 0x4672,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4673, 0x0000, 0x4674, 0x0000, 0x4675, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4676, 0x0000, 0x0000, 0x0000, 0x4677, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4678, 0x0000, 0x4679,
- 0x467a, 0x467b, 0x467c, 0x0000, 0x467d, 0x0000, 0x467e, 0x0000,
- 0x0000, 0x0000, 0x4721, 0x0000, 0x4722, 0x0000, 0x0000, 0x0000,
- 0x4723, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4724,
- 0x0000, 0x4725, 0x0000, 0x4726, 0x4727, 0x0000, 0x4728, 0x0000,
- 0x0000, 0x0000, 0x4729, 0x0000, 0x472a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_6d[] = {
- /* 0x6d00 - 0x6dff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x472b, 0x0000, 0x0000, 0x472c,
- 0x0000, 0x0000, 0x472d, 0x0000, 0x0000, 0x0000, 0x472e, 0x472f,
- 0x0000, 0x4730, 0x0000, 0x4731, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4732, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4733, 0x4734,
- 0x4735, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4737, 0x4738,
- 0x0000, 0x4739, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x473a, 0x0000, 0x0000, 0x473b, 0x0000, 0x0000, 0x473c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x473d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x473e, 0x473f,
- 0x0000, 0x4740, 0x0000, 0x0000, 0x0000, 0x4741, 0x0000, 0x4742,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4743,
- 0x4744, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4745, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4746, 0x0000, 0x0000, 0x0000, 0x0000, 0x4747,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4748, 0x4749, 0x0000, 0x474a, 0x0000, 0x474b, 0x474c,
- 0x474d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x474e, 0x0000, 0x474f, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4750, 0x0000, 0x0000, 0x4751,
- 0x0000, 0x4752, 0x0000, 0x0000, 0x0000, 0x4753, 0x0000, 0x4754,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4755, 0x0000, 0x0000, 0x0000,
- 0x4756, 0x0000, 0x4757, 0x0000, 0x0000, 0x0000, 0x4758, 0x4759,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x475a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x475b, 0x0000, 0x475c, 0x0000, 0x475d,
- 0x475e, 0x0000, 0x475f, 0x0000, 0x0000, 0x4760, 0x0000, 0x0000,
- 0x0000, 0x4761, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4762,
- 0x4763, 0x0000, 0x744c, 0x0000, 0x4764, 0x0000, 0x4765, 0x0000,
- 0x744b, 0x0000, 0x0000, 0x0000, 0x4766, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_6e[] = {
- /* 0x6e00 - 0x6eff */
- 0x4767, 0x0000, 0x0000, 0x0000, 0x4768, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4769, 0x0000,
- 0x0000, 0x0000, 0x476a, 0x0000, 0x0000, 0x0000, 0x0000, 0x476b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x476c, 0x0000, 0x0000, 0x0000, 0x476d, 0x0000,
- 0x0000, 0x476e, 0x0000, 0x476f, 0x4770, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4771, 0x4772, 0x0000, 0x0000,
- 0x4773, 0x4774, 0x0000, 0x4775, 0x0000, 0x0000, 0x0000, 0x4776,
- 0x0000, 0x4777, 0x4778, 0x4779, 0x477a, 0x0000, 0x0000, 0x477b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x477c, 0x477d, 0x477e, 0x0000,
- 0x0000, 0x0000, 0x4821, 0x4822, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4823, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4824, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4825, 0x0000, 0x4826, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4827, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4828, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4829, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x482a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x482b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x482c, 0x482d, 0x0000,
- 0x0000, 0x482e, 0x0000, 0x482f, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4830, 0x0000, 0x0000, 0x0000, 0x4831,
- 0x4832, 0x4833, 0x0000, 0x4834, 0x0000, 0x0000, 0x0000, 0x4835,
- 0x4836, 0x0000, 0x4837, 0x0000, 0x0000, 0x4838, 0x4839, 0x483a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x483b, 0x0000, 0x483c, 0x483d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x483e, 0x0000, 0x483f, 0x0000, 0x4840, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_6f[] = {
- /* 0x6f00 - 0x6fff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4841, 0x0000, 0x0000, 0x0000,
- 0x4842, 0x0000, 0x4843, 0x0000, 0x4844, 0x4845, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4846, 0x0000,
- 0x4847, 0x0000, 0x4848, 0x4849, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x484a, 0x0000,
- 0x0000, 0x484b, 0x484c, 0x0000, 0x0000, 0x4853, 0x0000, 0x484d,
- 0x484e, 0x0000, 0x0000, 0x484f, 0x0000, 0x0000, 0x4850, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4851, 0x4852, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4854,
- 0x0000, 0x4855, 0x4856, 0x4857, 0x0000, 0x0000, 0x0000, 0x4858,
- 0x0000, 0x4859, 0x485a, 0x0000, 0x0000, 0x485b, 0x485c, 0x0000,
- 0x0000, 0x485d, 0x485e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x485f, 0x0000, 0x0000, 0x0000, 0x4860, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4861, 0x4862, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4863, 0x0000, 0x0000, 0x0000, 0x4864,
- 0x4865, 0x0000, 0x0000, 0x4866, 0x4867, 0x4868, 0x0000, 0x0000,
- 0x4869, 0x0000, 0x486a, 0x486b, 0x486c, 0x0000, 0x486d, 0x0000,
- 0x0000, 0x0000, 0x486e, 0x0000, 0x0000, 0x0000, 0x0000, 0x486f,
- 0x4870, 0x0000, 0x0000, 0x0000, 0x0000, 0x4871, 0x4872, 0x4873,
- 0x4874, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4875, 0x4876,
- 0x4877, 0x0000, 0x0000, 0x0000, 0x0000, 0x4878, 0x4879, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x487a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x487b, 0x0000, 0x487c,
- 0x487d, 0x0000, 0x487e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4921, 0x0000, 0x0000, 0x0000, 0x4922, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4923, 0x4924, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4925, 0x0000, 0x0000, 0x0000, 0x0000, 0x4926, 0x0000, 0x0000,
- 0x0000, 0x4927, 0x0000, 0x0000, 0x4928, 0x4929, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_70[] = {
- /* 0x7000 - 0x70ff */
- 0x492a, 0x0000, 0x0000, 0x0000, 0x0000, 0x492b, 0x492c, 0x492d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x492e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x492f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4930, 0x0000, 0x0000, 0x4931, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x744d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4932,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4933, 0x0000, 0x0000, 0x4934,
- 0x0000, 0x4935, 0x0000, 0x0000, 0x4936, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4937, 0x4938, 0x0000, 0x0000, 0x0000,
- 0x4939, 0x493a, 0x493b, 0x493c, 0x0000, 0x0000, 0x4941, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x493d, 0x493e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x493f, 0x4940, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4942, 0x4943, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4944, 0x0000, 0x4945, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4946, 0x4947, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4948, 0x0000,
- 0x0000, 0x4949, 0x0000, 0x0000, 0x0000, 0x494a, 0x494b, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x494c, 0x494d, 0x494e, 0x494f,
- 0x4950, 0x0000, 0x0000, 0x4951, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4952, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4953, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4954, 0x4955, 0x0000, 0x0000, 0x4956, 0x0000, 0x0000, 0x4957,
- 0x0000, 0x0000, 0x0000, 0x742e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4958, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4959, 0x0000, 0x495a, 0x495b, 0x495c, 0x495d, 0x0000,
- 0x495e, 0x0000, 0x0000, 0x0000, 0x495f, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4960, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4961, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_71[] = {
- /* 0x7100 - 0x71ff */
- 0x0000, 0x0000, 0x0000, 0x4962, 0x4963, 0x4964, 0x4965, 0x4966,
- 0x0000, 0x0000, 0x0000, 0x4967, 0x4968, 0x0000, 0x0000, 0x4969,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x496a, 0x0000,
- 0x496b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x496c, 0x0000, 0x496d, 0x0000, 0x496e,
- 0x496f, 0x4970, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4971, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4972, 0x0000, 0x0000, 0x0000, 0x4973, 0x4974, 0x4975,
- 0x0000, 0x0000, 0x4976, 0x4977, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4978, 0x0000, 0x4979, 0x0000, 0x0000, 0x0000, 0x0000, 0x497a,
- 0x0000, 0x0000, 0x497b, 0x0000, 0x497c, 0x0000, 0x497d, 0x0000,
- 0x497e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4a21, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4a22, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4a23, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a24, 0x0000, 0x4a25,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4a26, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4a27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4a28, 0x4a29, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4a2a, 0x0000, 0x4a2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a2c,
- 0x4a2d, 0x0000, 0x4a2e, 0x4a2f, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4a30, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a31,
- 0x4a32, 0x4a33, 0x0000, 0x0000, 0x4a34, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4a35, 0x4a36, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4a37, 0x0000, 0x0000, 0x4a38, 0x0000,
- 0x0000, 0x4a39, 0x4a3a, 0x0000, 0x4a3b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4a3c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a3d, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_72[] = {
- /* 0x7200 - 0x72ff */
- 0x4a3e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a3f,
- 0x4a40, 0x4a41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4a42, 0x0000, 0x0000, 0x0000, 0x4a43,
- 0x0000, 0x0000, 0x4a44, 0x0000, 0x0000, 0x4a45, 0x0000, 0x4a46,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4a47, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4a48, 0x0000, 0x0000, 0x0000, 0x4a49,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4a4a, 0x0000, 0x0000, 0x0000,
- 0x4a4b, 0x4a4c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4a4d, 0x4a4e, 0x4a4f, 0x0000, 0x4a50, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a51, 0x4a52,
- 0x4a53, 0x0000, 0x0000, 0x4a54, 0x0000, 0x4a55, 0x4a56, 0x0000,
- 0x0000, 0x0000, 0x4a57, 0x0000, 0x4a58, 0x0000, 0x4a59, 0x0000,
- 0x4a5a, 0x0000, 0x0000, 0x4a5b, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4a5c, 0x0000, 0x0000, 0x4a5d, 0x0000, 0x0000, 0x4a5e, 0x4a5f,
- 0x0000, 0x4a60, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a61,
- 0x4a62, 0x0000, 0x0000, 0x4a63, 0x4a64, 0x0000, 0x0000, 0x4a65,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4a66, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4a67, 0x0000, 0x0000, 0x0000, 0x4a68, 0x4a69, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4a6a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4a6b, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4a6c, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a6d, 0x4a6e, 0x0000,
- 0x0000, 0x4a6f, 0x0000, 0x0000, 0x4a70, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a71, 0x0000,
- 0x0000, 0x4a72, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a73,
- 0x0000, 0x4a74, 0x0000, 0x0000, 0x4a75, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a76, 0x4a77, 0x0000,
- 0x4a78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a79,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4a7a, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4a7b, 0x4a7c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4a7d, 0x4a7e, 0x0000, 0x0000, 0x4b21, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_73[] = {
- /* 0x7300 - 0x73ff */
- 0x0000, 0x0000, 0x4b22, 0x0000, 0x4b23, 0x4b24, 0x0000, 0x4b25,
- 0x0000, 0x0000, 0x0000, 0x4b26, 0x0000, 0x4b27, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4b28, 0x4b29, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4b2a, 0x4b2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b2c, 0x0000,
- 0x0000, 0x0000, 0x4b2d, 0x0000, 0x4b2e, 0x0000, 0x0000, 0x4b2f,
- 0x4b30, 0x0000, 0x0000, 0x0000, 0x4b31, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4b32, 0x4b33, 0x0000, 0x0000, 0x4b34, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4b35, 0x4b36, 0x0000, 0x4b37, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4b38, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b39, 0x0000, 0x0000,
- 0x4b3a, 0x0000, 0x4b3b, 0x0000, 0x0000, 0x0000, 0x4b3c, 0x0000,
- 0x4b3d, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b3e, 0x4b3f, 0x4b40,
- 0x4b41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b42, 0x4b43,
- 0x0000, 0x4b44, 0x0000, 0x4b45, 0x4b46, 0x0000, 0x4b47, 0x4b48,
- 0x0000, 0x4b49, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b4a,
- 0x0000, 0x4b4b, 0x0000, 0x0000, 0x4b4c, 0x0000, 0x0000, 0x0000,
- 0x4b4d, 0x4b4e, 0x0000, 0x4b4f, 0x0000, 0x4b50, 0x4b51, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b52, 0x0000,
- 0x4b53, 0x0000, 0x0000, 0x4b54, 0x0000, 0x4b55, 0x0000, 0x4b56,
- 0x4b57, 0x0000, 0x0000, 0x0000, 0x4b58, 0x0000, 0x4b59, 0x4b5a,
- 0x4b5b, 0x0000, 0x4b5c, 0x0000, 0x0000, 0x4b5d, 0x4b5e, 0x0000,
- 0x0000, 0x0000, 0x4b5f, 0x4b60, 0x0000, 0x4b61, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b62, 0x0000, 0x4b63,
- 0x0000, 0x4b64, 0x0000, 0x0000, 0x4b65, 0x4b66, 0x0000, 0x4b67,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4b68, 0x4b69, 0x0000,
- 0x0000, 0x4b6a, 0x0000, 0x4b6b, 0x4b6c, 0x0000, 0x0000, 0x4b6d,
- 0x0000, 0x0000, 0x4b6e, 0x4b6f, 0x0000, 0x0000, 0x4b70, 0x0000,
- 0x0000, 0x4b71, 0x0000, 0x0000, 0x0000, 0x4b72, 0x0000, 0x0000,
- 0x0000, 0x4b73, 0x0000, 0x4b74, 0x0000, 0x0000, 0x4b75, 0x4b76,
- 0x0000, 0x4b77, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4b78, 0x4b79, 0x0000, 0x4b7a,
- 0x0000, 0x4b7b, 0x4b7c, 0x4b7d, 0x0000, 0x4b7e, 0x0000, 0x4c21,
-};
-
-static unsigned short const unicode_to_jisx0212_74[] = {
- /* 0x7400 - 0x74ff */
- 0x4c22, 0x4c23, 0x0000, 0x0000, 0x4c24, 0x0000, 0x0000, 0x4c25,
- 0x0000, 0x0000, 0x4c26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4c27, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4c28, 0x4c29, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4c2a, 0x0000, 0x4c2b, 0x0000,
- 0x4c2c, 0x4c2d, 0x4c2e, 0x4c2f, 0x4c30, 0x4c31, 0x4c32, 0x4c33,
- 0x4c34, 0x4c35, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4c36, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4c37, 0x0000, 0x0000, 0x4c38, 0x4c39, 0x0000, 0x4c3a, 0x4c3b,
- 0x0000, 0x0000, 0x0000, 0x4c3c, 0x0000, 0x4c3d, 0x0000, 0x0000,
- 0x0000, 0x4c3e, 0x4c3f, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c40,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c41, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4c42, 0x0000, 0x0000, 0x0000, 0x4c43, 0x4c44,
- 0x4c45, 0x0000, 0x0000, 0x4c46, 0x0000, 0x4c47, 0x4c48, 0x0000,
- 0x0000, 0x4c49, 0x4c4a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4c4b, 0x4c4c, 0x0000, 0x0000, 0x0000, 0x4c4d, 0x4c4e, 0x4c4f,
- 0x0000, 0x4c50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c51,
- 0x4c52, 0x4c53, 0x4c54, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4c55, 0x4c56, 0x4c57, 0x0000, 0x4c58, 0x0000, 0x0000, 0x4c59,
- 0x4c5a, 0x4c5b, 0x0000, 0x4c5c, 0x0000, 0x0000, 0x4c5d, 0x0000,
- 0x4c5e, 0x4c5f, 0x4c60, 0x4c61, 0x0000, 0x0000, 0x4c62, 0x4c63,
- 0x0000, 0x4c64, 0x4c65, 0x0000, 0x0000, 0x4c66, 0x0000, 0x0000,
- 0x0000, 0x4c67, 0x0000, 0x4c68, 0x0000, 0x0000, 0x0000, 0x4c69,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4c6a, 0x4c6b, 0x0000, 0x0000, 0x4c6c, 0x0000, 0x0000, 0x0000,
- 0x4c6d, 0x0000, 0x0000, 0x4c6e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4c6f, 0x0000, 0x4c70, 0x4c71, 0x0000, 0x0000, 0x4c72, 0x4c73,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4c74, 0x0000, 0x0000, 0x0000,
- 0x4c75, 0x0000, 0x4c76, 0x4c77, 0x0000, 0x0000, 0x0000, 0x4c78,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4c79, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4c7a, 0x4c7b, 0x4c7c, 0x0000, 0x0000, 0x4c7d,
-};
-
-static unsigned short const unicode_to_jisx0212_75[] = {
- /* 0x7500 - 0x75ff */
- 0x0000, 0x7450, 0x0000, 0x0000, 0x0000, 0x0000, 0x4c7e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4d21, 0x0000, 0x0000, 0x0000, 0x4d22, 0x4d23,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4d24, 0x4d25, 0x0000, 0x0000, 0x4d26, 0x0000, 0x0000, 0x4d27,
- 0x0000, 0x4d28, 0x4d29, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d2a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d2b, 0x0000,
- 0x0000, 0x4d2c, 0x0000, 0x0000, 0x0000, 0x4d2d, 0x4d2e, 0x4d2f,
- 0x4d30, 0x0000, 0x0000, 0x4d31, 0x0000, 0x0000, 0x0000, 0x4d32,
- 0x4d33, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d34, 0x0000,
- 0x4d35, 0x0000, 0x4d36, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d37,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d38, 0x4d39,
- 0x0000, 0x4d3a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d3b,
- 0x0000, 0x4d3c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4d3d, 0x4d3e, 0x4d3f, 0x4d40, 0x4d41, 0x4d42, 0x0000,
- 0x0000, 0x4d43, 0x0000, 0x0000, 0x0000, 0x4d44, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4d45, 0x0000, 0x4d46, 0x4d47, 0x0000, 0x4d48, 0x0000, 0x0000,
- 0x0000, 0x4d49, 0x0000, 0x0000, 0x4d4a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4d4b, 0x0000, 0x4d4c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4d4d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4d4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d4f,
- 0x4d50, 0x4d51, 0x0000, 0x0000, 0x4d52, 0x0000, 0x4d53, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4d54, 0x0000, 0x4d55, 0x4d56,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4d57,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4d58, 0x0000, 0x0000, 0x4d59,
- 0x4d5a, 0x4d5b, 0x0000, 0x0000, 0x4d5c, 0x0000, 0x0000, 0x4d5d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4d5e, 0x0000, 0x4d5f, 0x4d60,
- 0x0000, 0x4d61, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4d62, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_76[] = {
- /* 0x7600 - 0x76ff */
- 0x4d63, 0x0000, 0x4d64, 0x4d65, 0x4d66, 0x0000, 0x0000, 0x4d67,
- 0x4d68, 0x0000, 0x4d69, 0x0000, 0x4d6a, 0x0000, 0x0000, 0x4d6b,
- 0x0000, 0x0000, 0x4d6c, 0x4d6d, 0x0000, 0x4d6e, 0x4d6f, 0x0000,
- 0x0000, 0x4d70, 0x0000, 0x4d71, 0x4d72, 0x4d73, 0x4d74, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4d75, 0x0000, 0x4d76, 0x4d77, 0x0000,
- 0x0000, 0x4d78, 0x0000, 0x0000, 0x0000, 0x4d79, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4d7a, 0x4d7b, 0x0000, 0x4d7c, 0x0000, 0x0000,
- 0x4d7d, 0x4d7e, 0x4e21, 0x0000, 0x4e22, 0x0000, 0x0000, 0x0000,
- 0x4e24, 0x4e25, 0x0000, 0x4e26, 0x4e27, 0x4e28, 0x0000, 0x0000,
- 0x0000, 0x4e29, 0x4e23, 0x4e2a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e2b, 0x0000, 0x0000,
- 0x0000, 0x4e2c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e2d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4e2e, 0x4e2f, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e30, 0x4e31, 0x4e32,
- 0x0000, 0x4e33, 0x0000, 0x0000, 0x4e34, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4e35, 0x7451, 0x0000, 0x0000, 0x4e36, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4e37, 0x4e38, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e39, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4e3a, 0x4e3b, 0x4e3c, 0x7452, 0x4e3d,
- 0x4e3e, 0x0000, 0x4e3f, 0x4e40, 0x4e41, 0x4e42, 0x4e43, 0x4e44,
- 0x4e45, 0x0000, 0x4e46, 0x0000, 0x0000, 0x4e47, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e48, 0x0000, 0x0000,
- 0x0000, 0x4e49, 0x0000, 0x0000, 0x0000, 0x4e4a, 0x0000, 0x0000,
- 0x0000, 0x4e4b, 0x0000, 0x4e4c, 0x4e4d, 0x0000, 0x4e4e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4e4f, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4e50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4e51, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e52, 0x0000,
- 0x4e53, 0x0000, 0x0000, 0x0000, 0x4e54, 0x0000, 0x0000, 0x0000,
- 0x4e55, 0x4e56, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e57, 0x0000,
- 0x0000, 0x4e58, 0x0000, 0x0000, 0x4e59, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_77[] = {
- /* 0x7700 - 0x77ff */
- 0x4e5a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e5b, 0x0000,
- 0x0000, 0x0000, 0x4e5c, 0x0000, 0x0000, 0x0000, 0x4e5d, 0x0000,
- 0x0000, 0x0000, 0x4e5e, 0x0000, 0x4e5f, 0x4e60, 0x0000, 0x4e61,
- 0x0000, 0x4e62, 0x4e63, 0x0000, 0x4e64, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4e65, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x4e66, 0x0000, 0x0000, 0x0000, 0x0000, 0x4e67, 0x4e68, 0x4e69,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4e6a, 0x4e6b, 0x4e6c, 0x0000,
- 0x0000, 0x4e6d, 0x0000, 0x0000, 0x0000, 0x4e6e, 0x4e6f, 0x0000,
- 0x0000, 0x0000, 0x4e70, 0x0000, 0x0000, 0x4e71, 0x4e72, 0x0000,
- 0x0000, 0x0000, 0x4e73, 0x0000, 0x0000, 0x4e74, 0x4e75, 0x4e76,
- 0x0000, 0x0000, 0x4e77, 0x0000, 0x0000, 0x0000, 0x4e78, 0x4e79,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4e7a, 0x0000, 0x4e7b, 0x4e7c,
- 0x4e7d, 0x0000, 0x4e7e, 0x0000, 0x4f21, 0x0000, 0x0000, 0x4f22,
- 0x0000, 0x0000, 0x4f23, 0x0000, 0x4f24, 0x0000, 0x0000, 0x0000,
- 0x4f25, 0x0000, 0x4f26, 0x4f27, 0x4f28, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4f29, 0x0000, 0x0000, 0x4f2a, 0x0000, 0x0000,
- 0x4f2b, 0x0000, 0x0000, 0x0000, 0x4f2c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4f2d, 0x4f2e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4f2f, 0x4f30, 0x4f31, 0x0000,
- 0x0000, 0x0000, 0x4f32, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f33,
- 0x0000, 0x0000, 0x4f34, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f35,
- 0x0000, 0x0000, 0x4f36, 0x0000, 0x0000, 0x0000, 0x4f37, 0x4f38,
- 0x0000, 0x4f39, 0x0000, 0x0000, 0x0000, 0x4f3a, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f3b, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4f3c, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4f3d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x4f3e, 0x4f3f, 0x0000, 0x0000, 0x4f40, 0x0000, 0x0000,
- 0x0000, 0x4f41, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f42, 0x4f43,
- 0x4f44, 0x0000, 0x0000, 0x0000, 0x4f45, 0x0000, 0x4f46, 0x0000,
- 0x0000, 0x0000, 0x4f47, 0x0000, 0x4f48, 0x0000, 0x0000, 0x0000,
- 0x4f49, 0x4f4a, 0x0000, 0x0000, 0x4f4b, 0x0000, 0x0000, 0x0000,
- 0x4f4c, 0x0000, 0x0000, 0x4f4d, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_78[] = {
- /* 0x7800 - 0x78ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f4e, 0x4f4f, 0x0000,
- 0x0000, 0x4f50, 0x0000, 0x0000, 0x0000, 0x4f51, 0x4f52, 0x0000,
- 0x0000, 0x4f53, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f54, 0x0000, 0x0000,
- 0x0000, 0x4f55, 0x4f56, 0x4f57, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f58, 0x4f59, 0x0000,
- 0x4f5a, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f5b, 0x0000, 0x4f5c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x4f5d, 0x4f5e, 0x0000, 0x0000, 0x4f5f,
- 0x4f60, 0x0000, 0x0000, 0x0000, 0x4f61, 0x0000, 0x4f62, 0x0000,
- 0x0000, 0x0000, 0x4f63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4f64, 0x0000, 0x4f65, 0x0000,
- 0x4f66, 0x4f67, 0x0000, 0x4f68, 0x4f69, 0x0000, 0x0000, 0x0000,
- 0x4f6a, 0x0000, 0x4f6b, 0x0000, 0x0000, 0x0000, 0x4f6c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4f6d, 0x0000, 0x0000, 0x0000, 0x4f6e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x4f6f, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f70,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x4f71, 0x0000, 0x0000, 0x0000,
- 0x4f72, 0x0000, 0x0000, 0x0000, 0x0000, 0x4f74, 0x4f75, 0x4f76,
- 0x0000, 0x4f73, 0x0000, 0x0000, 0x4f77, 0x0000, 0x0000, 0x0000,
- 0x4f78, 0x0000, 0x0000, 0x0000, 0x4f79, 0x4f7a, 0x0000, 0x0000,
- 0x4f7b, 0x4f7c, 0x4f7d, 0x4f7e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5021, 0x0000, 0x5022, 0x0000, 0x5023,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5024,
- 0x5025, 0x5026, 0x0000, 0x0000, 0x5027, 0x0000, 0x5028, 0x0000,
- 0x0000, 0x0000, 0x5029, 0x502a, 0x0000, 0x502b, 0x502c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x502e, 0x0000, 0x0000, 0x0000, 0x502f,
- 0x5030, 0x5031, 0x0000, 0x0000, 0x502d, 0x0000, 0x5032, 0x0000,
- 0x0000, 0x0000, 0x5033, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5034, 0x5035, 0x0000, 0x0000, 0x5037, 0x5038,
- 0x0000, 0x0000, 0x5039, 0x503a, 0x0000, 0x0000, 0x0000, 0x503b,
-};
-
-static unsigned short const unicode_to_jisx0212_79[] = {
- /* 0x7900 - 0x79ff */
- 0x5036, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x503c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x503d, 0x0000, 0x0000, 0x0000,
- 0x503e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x503f, 0x0000, 0x5040, 0x0000, 0x5041, 0x5042,
- 0x5043, 0x0000, 0x0000, 0x0000, 0x0000, 0x5044, 0x0000, 0x5045,
- 0x0000, 0x5046, 0x0000, 0x0000, 0x0000, 0x5047, 0x0000, 0x0000,
- 0x7454, 0x5048, 0x0000, 0x0000, 0x5049, 0x504a, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x504b, 0x0000, 0x504c, 0x0000, 0x504d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x504e, 0x504f, 0x5050, 0x0000,
- 0x0000, 0x0000, 0x5051, 0x5052, 0x0000, 0x0000, 0x0000, 0x5053,
- 0x0000, 0x5054, 0x0000, 0x0000, 0x5055, 0x0000, 0x0000, 0x0000,
- 0x5056, 0x0000, 0x0000, 0x5057, 0x5058, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5059,
- 0x0000, 0x505a, 0x0000, 0x505b, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x505c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x505d, 0x0000, 0x505e, 0x505f, 0x0000, 0x5060, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5061, 0x5062, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5063, 0x0000, 0x5064, 0x5065, 0x5066, 0x5067, 0x0000,
- 0x5068, 0x0000, 0x0000, 0x5069, 0x506a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x506b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x506c, 0x506d, 0x0000, 0x506e, 0x0000, 0x0000, 0x0000, 0x506f,
- 0x0000, 0x5070, 0x0000, 0x0000, 0x5071, 0x0000, 0x0000, 0x0000,
- 0x5072, 0x0000, 0x0000, 0x5073, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5074, 0x0000, 0x5075, 0x0000, 0x0000, 0x5076,
- 0x5077, 0x0000, 0x5078, 0x0000, 0x0000, 0x0000, 0x0000, 0x5079,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x507a, 0x0000, 0x507b, 0x0000,
- 0x0000, 0x0000, 0x507c, 0x0000, 0x0000, 0x507d, 0x507e, 0x0000,
- 0x5121, 0x0000, 0x5122, 0x0000, 0x0000, 0x5123, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5124, 0x5125, 0x0000, 0x5126, 0x0000, 0x0000,
- 0x0000, 0x5127, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5128, 0x0000, 0x0000, 0x0000, 0x5129, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_7a[] = {
- /* 0x7a00 - 0x7aff */
- 0x0000, 0x0000, 0x512a, 0x512b, 0x0000, 0x0000, 0x0000, 0x512c,
- 0x0000, 0x512d, 0x512e, 0x0000, 0x512f, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5130, 0x0000, 0x0000, 0x0000, 0x5131, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5132, 0x0000, 0x0000, 0x5133, 0x0000,
- 0x0000, 0x5134, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5135,
- 0x0000, 0x0000, 0x0000, 0x5136, 0x0000, 0x5137, 0x0000, 0x5138,
- 0x5139, 0x0000, 0x0000, 0x0000, 0x513a, 0x513b, 0x0000, 0x0000,
- 0x513c, 0x513d, 0x513e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x513f, 0x5140, 0x0000, 0x5141,
- 0x5142, 0x0000, 0x0000, 0x0000, 0x5143, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5144, 0x5145, 0x0000,
- 0x0000, 0x5146, 0x0000, 0x0000, 0x5147, 0x5148, 0x0000, 0x5149,
- 0x514a, 0x0000, 0x0000, 0x0000, 0x0000, 0x514b, 0x0000, 0x514c,
- 0x0000, 0x0000, 0x514d, 0x0000, 0x0000, 0x514e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x514f, 0x0000, 0x0000,
- 0x5150, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5151, 0x0000,
- 0x5152, 0x0000, 0x5153, 0x0000, 0x0000, 0x5154, 0x5155, 0x0000,
- 0x0000, 0x0000, 0x5156, 0x5157, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5158, 0x5159, 0x0000, 0x0000, 0x515a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x515b, 0x0000,
- 0x515c, 0x0000, 0x0000, 0x515d, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x515e, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x515f, 0x0000, 0x5160, 0x0000, 0x0000,
- 0x0000, 0x5161, 0x0000, 0x5162, 0x5163, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5164, 0x0000,
- 0x0000, 0x5165, 0x0000, 0x0000, 0x5166, 0x0000, 0x5167, 0x0000,
- 0x0000, 0x5168, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5169, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7459,
- 0x516a, 0x516b, 0x0000, 0x516c, 0x516d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x516e, 0x0000, 0x0000, 0x516f, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5170, 0x0000, 0x5171, 0x5172, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_7b[] = {
- /* 0x7b00 - 0x7bff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5173,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5174, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5175,
- 0x0000, 0x0000, 0x0000, 0x5176, 0x0000, 0x0000, 0x0000, 0x5177,
- 0x0000, 0x5178, 0x5179, 0x517a, 0x0000, 0x517b, 0x517c, 0x517d,
- 0x517e, 0x5221, 0x0000, 0x0000, 0x5222, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5223, 0x0000, 0x5224,
- 0x5225, 0x5226, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5227,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5228, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5229, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x522a, 0x0000, 0x0000, 0x0000, 0x522b, 0x0000, 0x522c, 0x0000,
- 0x0000, 0x522d, 0x522e, 0x0000, 0x0000, 0x522f, 0x0000, 0x5230,
- 0x0000, 0x0000, 0x5231, 0x5232, 0x0000, 0x0000, 0x0000, 0x5233,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5234, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5235, 0x0000, 0x0000, 0x0000, 0x0000, 0x5236, 0x0000,
- 0x5237, 0x5238, 0x0000, 0x0000, 0x0000, 0x0000, 0x5239, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x523a, 0x0000, 0x0000, 0x523b, 0x0000,
- 0x523c, 0x0000, 0x0000, 0x0000, 0x0000, 0x523d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x523e, 0x0000, 0x0000, 0x523f,
- 0x5240, 0x0000, 0x5241, 0x0000, 0x0000, 0x5242, 0x5243, 0x0000,
- 0x0000, 0x0000, 0x5244, 0x5245, 0x5246, 0x5247, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5248, 0x0000, 0x0000, 0x5249, 0x0000, 0x0000,
- 0x524a, 0x0000, 0x524b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x524c, 0x0000, 0x524d, 0x524e,
- 0x0000, 0x524f, 0x5250, 0x5251, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5252, 0x0000, 0x5253, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5254, 0x0000, 0x5255, 0x5256, 0x0000, 0x0000,
- 0x5257, 0x5258, 0x5259, 0x0000, 0x525a, 0x0000, 0x525b, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_7c[] = {
- /* 0x7c00 - 0x7cff */
- 0x0000, 0x525c, 0x525d, 0x525e, 0x525f, 0x0000, 0x5260, 0x0000,
- 0x0000, 0x5261, 0x0000, 0x5262, 0x5263, 0x0000, 0x5264, 0x5265,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5266, 0x0000, 0x5267, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5268, 0x0000, 0x0000, 0x0000, 0x0000, 0x5269, 0x526a, 0x0000,
- 0x526b, 0x0000, 0x0000, 0x0000, 0x526c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x526d, 0x0000, 0x526e, 0x526f, 0x0000, 0x5270, 0x0000,
- 0x0000, 0x5271, 0x5272, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5273, 0x0000,
- 0x0000, 0x0000, 0x5274, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5276, 0x5277, 0x5278, 0x0000, 0x5275, 0x0000, 0x0000,
- 0x0000, 0x5279, 0x527a, 0x527b, 0x527c, 0x527d, 0x527e, 0x0000,
- 0x0000, 0x5321, 0x0000, 0x5322, 0x0000, 0x0000, 0x0000, 0x5323,
- 0x0000, 0x5324, 0x0000, 0x0000, 0x0000, 0x5325, 0x5326, 0x0000,
- 0x5327, 0x0000, 0x5328, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5329, 0x0000, 0x0000, 0x532a, 0x532b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x532c, 0x532d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x532e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x532f, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5330, 0x0000,
- 0x5331, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5332, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5333, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5334, 0x5335,
- 0x0000, 0x0000, 0x5336, 0x5337, 0x5338, 0x0000, 0x0000, 0x5339,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x533a, 0x0000, 0x0000, 0x533b,
- 0x533c, 0x533d, 0x0000, 0x0000, 0x0000, 0x533e, 0x0000, 0x533f,
- 0x0000, 0x0000, 0x0000, 0x5340, 0x5341, 0x5342, 0x0000, 0x5343,
- 0x0000, 0x5344, 0x5345, 0x0000, 0x0000, 0x5346, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5347, 0x0000,
- 0x0000, 0x5348, 0x0000, 0x5349, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x534a, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_7d[] = {
- /* 0x7d00 - 0x7dff */
- 0x0000, 0x0000, 0x0000, 0x534b, 0x0000, 0x0000, 0x0000, 0x534c,
- 0x534d, 0x534e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x534f,
- 0x0000, 0x5350, 0x5351, 0x5352, 0x0000, 0x0000, 0x5353, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5354, 0x5355, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5356, 0x0000, 0x0000, 0x5357, 0x0000,
- 0x0000, 0x0000, 0x5358, 0x0000, 0x0000, 0x5359, 0x0000, 0x0000,
- 0x0000, 0x535a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x535b, 0x535c, 0x535d, 0x0000,
- 0x535e, 0x535f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5360,
- 0x5361, 0x0000, 0x0000, 0x0000, 0x0000, 0x5362, 0x0000, 0x0000,
- 0x0000, 0x5363, 0x0000, 0x5364, 0x0000, 0x0000, 0x0000, 0x5365,
- 0x0000, 0x5366, 0x5367, 0x0000, 0x5368, 0x5369, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x536a, 0x0000, 0x536b,
- 0x0000, 0x0000, 0x536c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x536d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x536e, 0x0000, 0x536f, 0x5370, 0x0000, 0x0000, 0x0000, 0x5371,
- 0x0000, 0x5372, 0x5373, 0x5374, 0x0000, 0x5375, 0x5376, 0x0000,
- 0x5377, 0x0000, 0x0000, 0x5378, 0x5379, 0x537a, 0x0000, 0x0000,
- 0x0000, 0x537b, 0x0000, 0x0000, 0x0000, 0x0000, 0x537c, 0x537d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x537e, 0x5421, 0x0000,
- 0x745c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5422, 0x5423,
- 0x0000, 0x0000, 0x5424, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5425, 0x0000, 0x0000, 0x5426, 0x5427,
- 0x0000, 0x5428, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5429, 0x542a, 0x542b, 0x542c, 0x542d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x542e, 0x542f, 0x5430, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x745d, 0x5431,
- 0x0000, 0x5432, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5434, 0x0000, 0x0000, 0x5435, 0x5436, 0x0000,
- 0x0000, 0x0000, 0x5437, 0x5438, 0x0000, 0x5439, 0x0000, 0x0000,
- 0x0000, 0x543a, 0x0000, 0x0000, 0x0000, 0x543b, 0x543c, 0x0000,
- 0x0000, 0x543d, 0x543e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_7e[] = {
- /* 0x7e00 - 0x7eff */
- 0x5433, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x543f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5440, 0x5441, 0x0000, 0x0000, 0x0000, 0x5442, 0x0000, 0x5443,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5444, 0x5445, 0x0000, 0x0000,
- 0x5446, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5447,
- 0x5448, 0x0000, 0x0000, 0x0000, 0x5449, 0x544a, 0x0000, 0x544b,
- 0x0000, 0x0000, 0x0000, 0x544c, 0x0000, 0x0000, 0x544d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x544e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x544f, 0x5450, 0x0000, 0x5451,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5452, 0x0000,
- 0x5453, 0x0000, 0x5454, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5455, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5456,
- 0x0000, 0x5457, 0x5458, 0x0000, 0x0000, 0x5459, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x545a, 0x0000, 0x0000, 0x545b, 0x545c,
- 0x0000, 0x0000, 0x0000, 0x545d, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x545e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x545f, 0x0000,
- 0x0000, 0x5460, 0x0000, 0x0000, 0x0000, 0x0000, 0x5461, 0x5462,
- 0x0000, 0x0000, 0x5463, 0x0000, 0x0000, 0x5464, 0x0000, 0x0000,
- 0x0000, 0x5465, 0x0000, 0x0000, 0x0000, 0x5466, 0x0000, 0x0000,
- 0x5467, 0x0000, 0x5468, 0x0000, 0x0000, 0x5469, 0x546a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_7f[] = {
- /* 0x7f00 - 0x7fff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x546c, 0x546b, 0x546d, 0x546e, 0x546f,
- 0x0000, 0x0000, 0x0000, 0x5470, 0x5471, 0x0000, 0x0000, 0x5472,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5473,
- 0x0000, 0x0000, 0x5474, 0x5475, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5476, 0x5477, 0x5478, 0x0000, 0x0000,
- 0x0000, 0x5479, 0x0000, 0x547a, 0x547b, 0x547c, 0x547d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x547e, 0x0000, 0x0000,
- 0x0000, 0x5521, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5522, 0x5523, 0x5524,
- 0x5525, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5526, 0x0000, 0x5527, 0x0000, 0x5528,
- 0x5529, 0x552a, 0x0000, 0x0000, 0x0000, 0x0000, 0x552b, 0x552c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x552d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x552e, 0x552f, 0x0000, 0x0000, 0x0000, 0x5530, 0x0000,
- 0x0000, 0x0000, 0x5531, 0x0000, 0x0000, 0x5532, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5533, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5534, 0x0000, 0x0000, 0x5535,
- 0x5536, 0x0000, 0x0000, 0x5537, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5538, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5539, 0x553a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x553b, 0x0000, 0x0000, 0x0000, 0x553c,
- 0x0000, 0x0000, 0x0000, 0x553d, 0x0000, 0x553e, 0x0000, 0x0000,
- 0x553f, 0x0000, 0x0000, 0x0000, 0x5540, 0x0000, 0x5541, 0x5542,
- 0x0000, 0x0000, 0x5543, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5544, 0x0000, 0x0000, 0x5545, 0x5546, 0x5547,
-};
-
-static unsigned short const unicode_to_jisx0212_80[] = {
- /* 0x8000 - 0x80ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5548,
- 0x5549, 0x0000, 0x554a, 0x0000, 0x0000, 0x554b, 0x554c, 0x554d,
- 0x0000, 0x554e, 0x0000, 0x554f, 0x5550, 0x0000, 0x5551, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5552, 0x5553, 0x5554,
- 0x5555, 0x0000, 0x0000, 0x0000, 0x5556, 0x0000, 0x5557, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5558, 0x0000, 0x5559, 0x0000,
- 0x555a, 0x0000, 0x0000, 0x0000, 0x555b, 0x555c, 0x0000, 0x555d,
- 0x0000, 0x555e, 0x555f, 0x0000, 0x5560, 0x0000, 0x5561, 0x0000,
- 0x5562, 0x0000, 0x0000, 0x0000, 0x5563, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5564, 0x0000, 0x0000, 0x0000, 0x5565, 0x0000, 0x5566, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5567, 0x0000, 0x0000,
- 0x0000, 0x5568, 0x0000, 0x0000, 0x0000, 0x5569, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x556a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x556b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x556c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x556d, 0x0000, 0x556e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x556f, 0x5570,
- 0x0000, 0x0000, 0x0000, 0x5571, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5572, 0x5573, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5574, 0x0000, 0x0000, 0x0000, 0x0000, 0x5575, 0x0000, 0x5576,
- 0x0000, 0x0000, 0x5577, 0x0000, 0x5578, 0x5579, 0x0000, 0x557a,
- 0x557b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x557c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x557d, 0x557e, 0x0000,
- 0x5621, 0x0000, 0x5622, 0x5623, 0x0000, 0x0000, 0x5624, 0x0000,
- 0x0000, 0x5625, 0x5626, 0x0000, 0x0000, 0x0000, 0x5627, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_81[] = {
- /* 0x8100 - 0x81ff */
- 0x0000, 0x0000, 0x0000, 0x5628, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5629, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x562a, 0x562b,
- 0x562c, 0x0000, 0x0000, 0x0000, 0x562d, 0x0000, 0x562e, 0x0000,
- 0x562f, 0x0000, 0x0000, 0x0000, 0x5630, 0x0000, 0x0000, 0x5631,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5632, 0x0000, 0x0000, 0x0000,
- 0x5633, 0x0000, 0x0000, 0x0000, 0x0000, 0x5634, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5635, 0x0000, 0x5636, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5637, 0x0000, 0x5638,
- 0x0000, 0x0000, 0x5639, 0x0000, 0x563a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x563b, 0x0000, 0x0000, 0x0000, 0x0000, 0x563c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x563d, 0x563e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x563f,
- 0x5640, 0x5641, 0x0000, 0x0000, 0x0000, 0x5642, 0x0000, 0x5643,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5644,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5645, 0x0000, 0x0000, 0x5647, 0x5648, 0x5649, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x564a, 0x0000, 0x0000, 0x564b, 0x0000,
- 0x5646, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x564c, 0x0000,
- 0x564d, 0x0000, 0x0000, 0x564e, 0x0000, 0x0000, 0x564f, 0x0000,
- 0x0000, 0x0000, 0x5650, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5651, 0x0000,
- 0x0000, 0x0000, 0x5652, 0x0000, 0x5653, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5654, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5656, 0x0000, 0x5657, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5658, 0x5655, 0x0000, 0x0000, 0x5659, 0x565a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x565b, 0x0000, 0x565c,
- 0x0000, 0x0000, 0x0000, 0x565d, 0x0000, 0x565e, 0x565f, 0x0000,
- 0x0000, 0x5660, 0x0000, 0x0000, 0x5661, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5662, 0x5663, 0x0000, 0x0000, 0x0000,
- 0x5664, 0x5665, 0x5666, 0x0000, 0x0000, 0x5667, 0x5668, 0x0000,
- 0x5669, 0x566a, 0x0000, 0x0000, 0x0000, 0x566b, 0x0000, 0x566c,
-};
-
-static unsigned short const unicode_to_jisx0212_82[] = {
- /* 0x8200 - 0x82ff */
- 0x566d, 0x0000, 0x0000, 0x566e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x566f,
- 0x0000, 0x0000, 0x0000, 0x5670, 0x5671, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5672, 0x5673, 0x0000, 0x0000, 0x5674, 0x0000, 0x0000,
- 0x0000, 0x5675, 0x5676, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5677, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5678, 0x0000, 0x5679, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x567a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x567b, 0x567c, 0x567d, 0x567e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5721, 0x0000, 0x0000, 0x5722, 0x5723,
- 0x0000, 0x5724, 0x0000, 0x0000, 0x0000, 0x0000, 0x5725, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5726, 0x0000, 0x0000, 0x0000,
- 0x5727, 0x0000, 0x0000, 0x5728, 0x0000, 0x0000, 0x0000, 0x5729,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x572a, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x572b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x572c, 0x0000, 0x572d, 0x0000, 0x572e,
- 0x572f, 0x5730, 0x0000, 0x5731, 0x5732, 0x0000, 0x0000, 0x5733,
- 0x0000, 0x5734, 0x5735, 0x0000, 0x0000, 0x0000, 0x5736, 0x0000,
- 0x0000, 0x5737, 0x0000, 0x0000, 0x5738, 0x0000, 0x5739, 0x0000,
- 0x573a, 0x0000, 0x573b, 0x573c, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x573d, 0x573e, 0x0000, 0x573f, 0x5740, 0x0000, 0x0000, 0x5741,
- 0x5742, 0x5743, 0x5744, 0x0000, 0x0000, 0x0000, 0x5745, 0x0000,
- 0x5746, 0x0000, 0x5747, 0x0000, 0x5748, 0x0000, 0x0000, 0x5749,
- 0x0000, 0x0000, 0x574a, 0x0000, 0x574b, 0x0000, 0x574c, 0x574d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x574e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x574f, 0x0000, 0x0000, 0x0000, 0x0000, 0x5750, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5751, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5752, 0x0000, 0x5753, 0x0000, 0x5754, 0x0000, 0x0000, 0x0000,
- 0x5755, 0x0000, 0x5756, 0x0000, 0x0000, 0x5757, 0x0000, 0x5758,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5759, 0x575a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x575b, 0x575c, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_83[] = {
- /* 0x8300 - 0x83ff */
- 0x575d, 0x575e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x575f,
- 0x5760, 0x0000, 0x5761, 0x5762, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5764, 0x0000, 0x5765, 0x5766, 0x5767,
- 0x0000, 0x5768, 0x5769, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x576a, 0x576b, 0x576c, 0x0000,
- 0x576d, 0x0000, 0x0000, 0x576e, 0x0000, 0x0000, 0x0000, 0x576f,
- 0x0000, 0x0000, 0x5770, 0x0000, 0x5771, 0x5772, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5773, 0x5774, 0x5775, 0x0000, 0x0000, 0x5776,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5777, 0x5778, 0x0000,
- 0x0000, 0x5779, 0x0000, 0x583e, 0x5763, 0x577a, 0x577b, 0x577c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x745f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x577d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x577e, 0x0000, 0x0000, 0x0000, 0x0000, 0x5821, 0x0000, 0x5822,
- 0x5823, 0x0000, 0x5824, 0x0000, 0x5825, 0x0000, 0x5826, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5827, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5828, 0x0000, 0x5829, 0x582a, 0x0000, 0x0000,
- 0x582b, 0x582c, 0x0000, 0x582d, 0x582e, 0x582f, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5830, 0x5831,
- 0x0000, 0x5832, 0x0000, 0x0000, 0x5833, 0x584c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5834, 0x5835,
- 0x5836, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5837,
- 0x0000, 0x5838, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5839,
- 0x583a, 0x583b, 0x0000, 0x0000, 0x583c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x583d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x583f, 0x0000, 0x5840, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5841, 0x0000,
- 0x5842, 0x5843, 0x0000, 0x0000, 0x5844, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_84[] = {
- /* 0x8400 - 0x84ff */
- 0x0000, 0x5845, 0x0000, 0x0000, 0x0000, 0x0000, 0x5846, 0x0000,
- 0x0000, 0x0000, 0x5847, 0x0000, 0x0000, 0x0000, 0x0000, 0x5848,
- 0x0000, 0x5849, 0x0000, 0x0000, 0x0000, 0x584a, 0x0000, 0x0000,
- 0x0000, 0x584b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x584d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x584e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x584f, 0x0000, 0x5850,
- 0x5851, 0x0000, 0x5852, 0x0000, 0x0000, 0x5853, 0x0000, 0x5854,
- 0x0000, 0x5855, 0x5856, 0x0000, 0x0000, 0x0000, 0x5857, 0x0000,
- 0x5858, 0x5859, 0x585a, 0x0000, 0x585b, 0x0000, 0x0000, 0x0000,
- 0x585c, 0x0000, 0x0000, 0x0000, 0x585d, 0x585e, 0x0000, 0x585f,
- 0x0000, 0x0000, 0x5860, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5861, 0x0000, 0x0000, 0x5862, 0x5863, 0x0000, 0x5864, 0x0000,
- 0x5865, 0x0000, 0x0000, 0x0000, 0x5866, 0x5867, 0x0000, 0x0000,
- 0x0000, 0x5868, 0x0000, 0x0000, 0x0000, 0x5869, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x586a, 0x586b, 0x0000, 0x586c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x586d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x586e, 0x0000,
- 0x586f, 0x5870, 0x5871, 0x0000, 0x0000, 0x0000, 0x0000, 0x5872,
- 0x0000, 0x5873, 0x0000, 0x0000, 0x5874, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5875, 0x0000, 0x0000, 0x5876, 0x5877, 0x0000,
- 0x5878, 0x0000, 0x5879, 0x0000, 0x0000, 0x0000, 0x0000, 0x587a,
- 0x587b, 0x0000, 0x0000, 0x0000, 0x587c, 0x0000, 0x0000, 0x587d,
- 0x0000, 0x0000, 0x0000, 0x587e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5921, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5922,
- 0x0000, 0x0000, 0x5923, 0x0000, 0x0000, 0x0000, 0x0000, 0x5924,
- 0x5925, 0x5926, 0x5927, 0x0000, 0x0000, 0x0000, 0x0000, 0x5928,
- 0x0000, 0x0000, 0x592a, 0x592b, 0x0000, 0x592c, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_85[] = {
- /* 0x8500 - 0x85ff */
- 0x0000, 0x0000, 0x592d, 0x592e, 0x0000, 0x0000, 0x0000, 0x592f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5930, 0x0000, 0x5931, 0x0000,
- 0x5932, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5933, 0x0000, 0x5934, 0x0000,
- 0x0000, 0x0000, 0x5935, 0x5936, 0x5937, 0x5938, 0x0000, 0x5939,
- 0x0000, 0x0000, 0x593a, 0x593b, 0x0000, 0x0000, 0x0000, 0x593c,
- 0x0000, 0x0000, 0x5929, 0x593d, 0x593e, 0x0000, 0x593f, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5940,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5941, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5942,
- 0x5943, 0x5944, 0x5945, 0x5946, 0x0000, 0x0000, 0x5947, 0x0000,
- 0x0000, 0x5948, 0x0000, 0x0000, 0x5949, 0x594a, 0x594b, 0x594c,
- 0x594d, 0x594e, 0x594f, 0x0000, 0x5950, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5951, 0x0000, 0x0000, 0x0000, 0x5952,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5953, 0x5954, 0x5955, 0x0000, 0x5956, 0x0000, 0x5957,
- 0x0000, 0x5958, 0x0000, 0x0000, 0x0000, 0x5959, 0x595a, 0x0000,
- 0x0000, 0x595b, 0x0000, 0x595c, 0x595d, 0x0000, 0x0000, 0x595e,
- 0x0000, 0x0000, 0x0000, 0x595f, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5960, 0x0000, 0x0000, 0x0000, 0x0000, 0x5961, 0x0000, 0x5962,
- 0x5963, 0x0000, 0x5964, 0x0000, 0x0000, 0x5965, 0x0000, 0x5966,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5974, 0x0000, 0x0000,
- 0x7461, 0x0000, 0x0000, 0x0000, 0x5967, 0x0000, 0x5968, 0x5969,
- 0x596a, 0x0000, 0x0000, 0x0000, 0x596b, 0x596c, 0x596d, 0x596e,
- 0x0000, 0x0000, 0x596f, 0x0000, 0x0000, 0x0000, 0x0000, 0x5970,
- 0x0000, 0x0000, 0x5971, 0x5972, 0x0000, 0x0000, 0x5973, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5975, 0x0000, 0x5976, 0x0000, 0x0000, 0x0000, 0x0000, 0x5977,
- 0x5978, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5979, 0x0000,
- 0x597a, 0x0000, 0x0000, 0x0000, 0x0000, 0x597b, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x597c, 0x0000, 0x0000, 0x597d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x597e, 0x0000, 0x0000, 0x5a21,
-};
-
-static unsigned short const unicode_to_jisx0212_86[] = {
- /* 0x8600 - 0x86ff */
- 0x5a22, 0x0000, 0x0000, 0x0000, 0x5a23, 0x5a24, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a25, 0x5a26, 0x0000,
- 0x5a27, 0x5a28, 0x5a29, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5a2a, 0x5a2b, 0x0000, 0x5a2c, 0x0000, 0x0000, 0x5a2d, 0x0000,
- 0x0000, 0x5a2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a2f,
- 0x0000, 0x5a30, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a31, 0x0000,
- 0x5a32, 0x0000, 0x5a33, 0x0000, 0x5a34, 0x5a35, 0x0000, 0x0000,
- 0x5a36, 0x3866, 0x5a37, 0x0000, 0x0000, 0x0000, 0x5a38, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5a39, 0x5a3a, 0x0000, 0x0000, 0x5a3b, 0x5a3c,
- 0x5a3d, 0x5a3e, 0x0000, 0x0000, 0x0000, 0x5a3f, 0x0000, 0x0000,
- 0x5a40, 0x5a41, 0x5a42, 0x5a43, 0x5a44, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5a45, 0x0000, 0x0000, 0x5a46, 0x0000, 0x0000, 0x5a47,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a48, 0x5a49, 0x5a4a,
- 0x0000, 0x0000, 0x5a4b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5a6d, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a4c, 0x0000, 0x0000,
- 0x0000, 0x5a4d, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a4e, 0x0000,
- 0x5a4f, 0x0000, 0x5a50, 0x0000, 0x5a51, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5a52, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a53, 0x5a54,
- 0x5a55, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a56, 0x0000, 0x0000,
- 0x0000, 0x5a57, 0x0000, 0x5a58, 0x5a59, 0x5a5a, 0x0000, 0x5a5b,
- 0x5a5c, 0x5a5d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a5e,
- 0x5a5f, 0x5a60, 0x0000, 0x5a61, 0x0000, 0x5a62, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5a63, 0x5a64, 0x0000, 0x0000, 0x5a65, 0x0000, 0x5a66,
- 0x0000, 0x0000, 0x5a67, 0x0000, 0x5a68, 0x0000, 0x0000, 0x0000,
- 0x5a69, 0x0000, 0x0000, 0x5a6a, 0x0000, 0x5a6b, 0x0000, 0x5a6c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5a6e, 0x0000, 0x5a6f, 0x5a70, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_87[] = {
- /* 0x8700 - 0x87ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5a71, 0x5a72, 0x0000, 0x5a73,
- 0x0000, 0x0000, 0x0000, 0x5a74, 0x0000, 0x0000, 0x5a75, 0x5a76,
- 0x5a77, 0x0000, 0x0000, 0x5a78, 0x5a79, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5a7a, 0x0000, 0x0000, 0x0000, 0x0000, 0x5a7b, 0x5a7c,
- 0x0000, 0x5a7d, 0x0000, 0x5a7e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5b21, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b22, 0x5b23,
- 0x0000, 0x5b24, 0x5b25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5b26, 0x5b27, 0x0000, 0x5b28, 0x5b29, 0x5b2a, 0x0000,
- 0x5b2b, 0x0000, 0x0000, 0x5b2c, 0x0000, 0x5b2d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b2e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5b2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b30, 0x0000, 0x0000,
- 0x0000, 0x5b31, 0x0000, 0x0000, 0x5b32, 0x5b33, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b34,
- 0x0000, 0x5b35, 0x5b36, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5b37, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5b38, 0x5b39, 0x5b3a, 0x5b3b, 0x5b3c,
- 0x5b3d, 0x5b3e, 0x0000, 0x5b3f, 0x5b40, 0x0000, 0x0000, 0x0000,
- 0x5b41, 0x0000, 0x0000, 0x5b42, 0x0000, 0x5b43, 0x0000, 0x5b44,
- 0x5b45, 0x5b46, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b47, 0x0000,
- 0x5b48, 0x0000, 0x0000, 0x5b49, 0x0000, 0x0000, 0x0000, 0x5b4a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5b4b, 0x5b4c, 0x5b4d, 0x0000,
- 0x0000, 0x5b4e, 0x0000, 0x0000, 0x0000, 0x5b4f, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b50, 0x5b51,
- 0x0000, 0x5b52, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5b53, 0x5b54, 0x5b55, 0x0000, 0x0000, 0x0000, 0x5b56, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b57, 0x5b58, 0x0000,
- 0x0000, 0x5b59, 0x5b5a, 0x0000, 0x5b5b, 0x0000, 0x0000, 0x5b5c,
- 0x0000, 0x0000, 0x5b5d, 0x5b5e, 0x5b5f, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5b60, 0x5b61, 0x0000, 0x5b62, 0x0000, 0x0000,
- 0x0000, 0x5b63, 0x0000, 0x5b64, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5b65, 0x0000, 0x5b66, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b67,
-};
-
-static unsigned short const unicode_to_jisx0212_88[] = {
- /* 0x8800 - 0x88ff */
- 0x0000, 0x5b68, 0x0000, 0x5b69, 0x0000, 0x0000, 0x5b6a, 0x7464,
- 0x0000, 0x5b6b, 0x5b6c, 0x5b6d, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5b6e, 0x0000, 0x5b70, 0x5b71, 0x5b72, 0x0000, 0x0000, 0x0000,
- 0x5b73, 0x5b6f, 0x5b74, 0x5b75, 0x5b76, 0x0000, 0x5b77, 0x5b78,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5b79, 0x0000, 0x0000, 0x0000, 0x0000, 0x5b7a, 0x5b7b, 0x0000,
- 0x5b7c, 0x0000, 0x5b7d, 0x0000, 0x0000, 0x5b7e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5c21, 0x0000, 0x5c22, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5c23, 0x0000, 0x5c24, 0x0000, 0x5c25, 0x0000, 0x0000,
- 0x5c26, 0x5c27, 0x5c28, 0x5c29, 0x0000, 0x0000, 0x5c2a, 0x0000,
- 0x0000, 0x5c2b, 0x0000, 0x0000, 0x0000, 0x5c2c, 0x5c2d, 0x0000,
- 0x5c2e, 0x0000, 0x5c2f, 0x0000, 0x5c30, 0x0000, 0x0000, 0x5c31,
- 0x5c32, 0x0000, 0x0000, 0x0000, 0x5c33, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5c34, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5c35, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5c36, 0x0000, 0x5c37, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5c38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5c39, 0x0000, 0x5c3a, 0x5c3b, 0x5c3c, 0x0000, 0x0000, 0x5c3d,
- 0x5c3e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5c3f, 0x0000, 0x5c40, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5c41, 0x0000, 0x0000, 0x5c42, 0x5c43, 0x0000,
- 0x5c44, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5c45, 0x5c46, 0x5c47, 0x5c48, 0x5c49, 0x0000,
- 0x0000, 0x5c4a, 0x5c4b, 0x5c4c, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5c4d, 0x0000, 0x0000, 0x5c4e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c4f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c50,
- 0x5c51, 0x5c52, 0x0000, 0x0000, 0x0000, 0x5c53, 0x0000, 0x5c54,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_89[] = {
- /* 0x8900 - 0x89ff */
- 0x0000, 0x5c55, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c56, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c57, 0x5c58, 0x5c59,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c5a, 0x5c5b, 0x0000,
- 0x5c5c, 0x5c5d, 0x5c5e, 0x0000, 0x5c5f, 0x0000, 0x0000, 0x0000,
- 0x5c60, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c61, 0x5c62,
- 0x5c63, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5c64, 0x5c65, 0x5c66, 0x0000, 0x0000, 0x5c67, 0x0000, 0x0000,
- 0x0000, 0x5c68, 0x5c69, 0x0000, 0x0000, 0x0000, 0x5c6a, 0x0000,
- 0x5c6b, 0x0000, 0x5c6c, 0x0000, 0x0000, 0x5c6d, 0x5c6e, 0x0000,
- 0x0000, 0x5c6f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c70,
- 0x0000, 0x0000, 0x5c71, 0x0000, 0x0000, 0x0000, 0x0000, 0x5c72,
- 0x0000, 0x0000, 0x5c73, 0x5c74, 0x5c75, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5c76, 0x5c77, 0x5c78, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5c79, 0x0000, 0x0000, 0x5c7a, 0x0000,
- 0x5c7b, 0x0000, 0x0000, 0x5c7c, 0x0000, 0x5c7d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5c7e, 0x5d21, 0x5d22, 0x5d23, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5d24, 0x0000, 0x0000, 0x0000, 0x5d25, 0x0000, 0x0000,
- 0x5d26, 0x0000, 0x0000, 0x0000, 0x5d27, 0x5d28, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5d29, 0x5d2a, 0x0000, 0x0000, 0x5d2b,
- 0x5d2c, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d2d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5d2e, 0x0000, 0x0000, 0x0000, 0x5d2f, 0x5d30, 0x5d31, 0x5d32,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5d33, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5d34, 0x5d35, 0x5d36, 0x5d37,
- 0x5d38, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d39, 0x0000, 0x0000,
- 0x0000, 0x5d3a, 0x0000, 0x5d3b, 0x0000, 0x5d3c, 0x0000, 0x0000,
- 0x0000, 0x5d3d, 0x0000, 0x5d3e, 0x0000, 0x0000, 0x5d3f, 0x0000,
- 0x0000, 0x5d40, 0x0000, 0x0000, 0x0000, 0x5d41, 0x0000, 0x5d42,
-};
-
-static unsigned short const unicode_to_jisx0212_8a[] = {
- /* 0x8a00 - 0x8aff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5d43, 0x5d44, 0x0000, 0x5d45,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d46,
- 0x0000, 0x5d47, 0x5d48, 0x0000, 0x5d49, 0x5d4a, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d4b, 0x0000,
- 0x5d4c, 0x0000, 0x5d4d, 0x0000, 0x5d4e, 0x0000, 0x5d4f, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5d50, 0x5d51, 0x0000, 0x0000, 0x5d52,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d53, 0x0000, 0x5d54,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d55, 0x5d56, 0x0000,
- 0x5d57, 0x0000, 0x0000, 0x5d58, 0x0000, 0x5d59, 0x0000, 0x5d5a,
- 0x0000, 0x5d5b, 0x0000, 0x0000, 0x0000, 0x5d5c, 0x5d5d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5d5e, 0x0000, 0x0000, 0x5d5f, 0x5d60,
- 0x5d61, 0x0000, 0x0000, 0x0000, 0x5d62, 0x5d63, 0x0000, 0x0000,
- 0x0000, 0x5d64, 0x0000, 0x0000, 0x0000, 0x5d65, 0x0000, 0x5d66,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d67, 0x5d68, 0x5d69,
- 0x0000, 0x5d6a, 0x5d6b, 0x5d6c, 0x0000, 0x0000, 0x5d6d, 0x5d6e,
- 0x5d6f, 0x0000, 0x0000, 0x5d70, 0x0000, 0x0000, 0x5d71, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5d72, 0x0000, 0x0000, 0x0000, 0x5d73,
- 0x5d74, 0x0000, 0x5d75, 0x0000, 0x0000, 0x0000, 0x5d76, 0x5d77,
- 0x0000, 0x5d78, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d79,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d7a,
- 0x0000, 0x5d7b, 0x0000, 0x0000, 0x0000, 0x0000, 0x5d7c, 0x5d7d,
- 0x0000, 0x0000, 0x0000, 0x5d7e, 0x0000, 0x0000, 0x5e21, 0x5e22,
- 0x0000, 0x0000, 0x0000, 0x5e23, 0x0000, 0x0000, 0x5e24, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5e25, 0x0000, 0x0000, 0x5e26, 0x0000,
- 0x5e27, 0x5e28, 0x5e29, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5e2a, 0x0000, 0x5e2b, 0x5e2c, 0x5e2d, 0x0000, 0x5e2e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e2f, 0x0000, 0x5e30,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5e31, 0x0000, 0x0000, 0x0000,
- 0x5e32, 0x0000, 0x0000, 0x0000, 0x5e33, 0x5e34, 0x5e35, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5e36, 0x0000, 0x0000, 0x5e37,
-};
-
-static unsigned short const unicode_to_jisx0212_8b[] = {
- /* 0x8b00 - 0x8bff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e38, 0x5e39, 0x0000,
- 0x0000, 0x0000, 0x5e3f, 0x5e3a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5e3b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5e3c, 0x0000, 0x5e3d, 0x5e3e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e40, 0x0000, 0x0000,
- 0x5e41, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e42,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5e43, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5e44, 0x5e45, 0x5e46, 0x5e47, 0x5e48, 0x0000,
- 0x5e49, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e4e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5e4a, 0x5e4b, 0x5e4c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5e4d, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e4f, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5e50, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e51, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e52, 0x0000,
- 0x5e53, 0x5e54, 0x0000, 0x0000, 0x5e55, 0x0000, 0x5e56, 0x7466,
- 0x0000, 0x5e57, 0x0000, 0x0000, 0x5e58, 0x5e59, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5e5a, 0x0000, 0x5e5b, 0x0000, 0x5e5c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5e5d, 0x5e5e, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5e5f, 0x0000, 0x5e60, 0x5e61,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_8c[] = {
- /* 0x8c00 - 0x8cff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5e62, 0x5e63, 0x0000, 0x0000, 0x0000, 0x5e64, 0x5e65, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e66, 0x0000, 0x5e67,
- 0x0000, 0x5e68, 0x0000, 0x5e69, 0x0000, 0x0000, 0x0000, 0x5e6a,
- 0x0000, 0x5e6b, 0x0000, 0x5e6c, 0x5e6d, 0x0000, 0x0000, 0x5e6e,
- 0x5e6f, 0x5e72, 0x0000, 0x5e70, 0x0000, 0x5e71, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5e73, 0x5e74, 0x0000, 0x5e75, 0x0000,
- 0x5e76, 0x5e77, 0x0000, 0x0000, 0x0000, 0x5e78, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5e79, 0x0000, 0x5e7a, 0x5e7b, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5e7c, 0x0000, 0x0000, 0x5e7d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5e7e, 0x5f21,
- 0x0000, 0x0000, 0x0000, 0x5f22, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5f23, 0x0000, 0x5f24, 0x5f25, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5f26, 0x0000, 0x5f27, 0x5f28, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5f29, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5f2a, 0x5f2b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f2c, 0x5f2d, 0x0000,
- 0x0000, 0x5f2e, 0x0000, 0x5f2f, 0x0000, 0x0000, 0x0000, 0x5f30,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f32, 0x5f31, 0x0000,
- 0x0000, 0x5f33, 0x0000, 0x0000, 0x0000, 0x5f34, 0x0000, 0x0000,
- 0x0000, 0x5f35, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5f36, 0x0000, 0x0000, 0x0000, 0x5f37, 0x0000, 0x0000, 0x5f38,
- 0x5f39, 0x0000, 0x5f3a, 0x0000, 0x7467, 0x5f3b, 0x0000, 0x5f3c,
- 0x5f3d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f3e, 0x5f3f,
-};
-
-static unsigned short const unicode_to_jisx0212_8d[] = {
- /* 0x8d00 - 0x8dff */
- 0x0000, 0x5f40, 0x0000, 0x5f41, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5f42, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x5f43, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f44,
- 0x0000, 0x0000, 0x0000, 0x5f45, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f46, 0x0000, 0x0000,
- 0x0000, 0x5f47, 0x0000, 0x0000, 0x5f48, 0x0000, 0x5f49, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7468, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f4a,
- 0x0000, 0x0000, 0x5f4b, 0x0000, 0x5f4c, 0x0000, 0x0000, 0x0000,
- 0x5f4d, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f4e, 0x0000, 0x0000,
- 0x5f4f, 0x5f50, 0x0000, 0x0000, 0x0000, 0x5f51, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f52, 0x5f53,
- 0x5f54, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f55, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5f56, 0x5f57, 0x0000, 0x0000, 0x5f58,
- 0x0000, 0x0000, 0x5f59, 0x0000, 0x0000, 0x5f5a, 0x0000, 0x5f5b,
- 0x0000, 0x5f5c, 0x0000, 0x5f5d, 0x5f6f, 0x0000, 0x0000, 0x0000,
- 0x5f5e, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f5f, 0x5f60, 0x5f61,
- 0x5f62, 0x0000, 0x5f63, 0x0000, 0x0000, 0x0000, 0x5f64, 0x0000,
- 0x0000, 0x5f65, 0x0000, 0x0000, 0x5f66, 0x5f67, 0x0000, 0x5f68,
- 0x0000, 0x5f69, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5f6a, 0x5f6b, 0x0000, 0x5f6c,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x5f6d, 0x0000, 0x0000, 0x0000,
- 0x5f6e, 0x5f70, 0x5f71, 0x0000, 0x5f72, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x5f73, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_8e[] = {
- /* 0x8e00 - 0x8eff */
- 0x0000, 0x5f74, 0x0000, 0x0000, 0x5f75, 0x5f76, 0x5f77, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x5f78, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x5f79, 0x0000, 0x0000, 0x5f7a, 0x0000, 0x5f7b, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x5f7c, 0x5f7d, 0x5f7e, 0x6021, 0x0000, 0x0000, 0x6022, 0x6023,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6024, 0x0000, 0x6025, 0x0000, 0x0000, 0x6026, 0x6027,
- 0x6028, 0x6029, 0x0000, 0x0000, 0x0000, 0x602a, 0x0000, 0x0000,
- 0x602b, 0x602c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x602d, 0x0000, 0x602e, 0x602f, 0x6030,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6031, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6032, 0x6033, 0x6034, 0x6035, 0x0000,
- 0x0000, 0x6036, 0x6037, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6038, 0x0000, 0x0000, 0x6039, 0x603a, 0x0000, 0x603b,
- 0x603c, 0x603d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x603e, 0x603f, 0x6040, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6041, 0x6042, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6043, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6044, 0x0000, 0x6045, 0x0000, 0x0000, 0x6046, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6047, 0x6048, 0x0000, 0x6049, 0x604a, 0x0000,
- 0x0000, 0x0000, 0x604b, 0x0000, 0x0000, 0x0000, 0x0000, 0x604c,
- 0x0000, 0x604d, 0x0000, 0x0000, 0x0000, 0x604e, 0x604f, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6050, 0x0000, 0x6051, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6052, 0x6053, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6054, 0x6055, 0x0000, 0x6056, 0x6057, 0x0000, 0x0000, 0x6058,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6059,
- 0x0000, 0x605a, 0x0000, 0x0000, 0x605b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x605c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x605d, 0x0000, 0x0000, 0x0000, 0x0000, 0x6064, 0x605e, 0x0000,
- 0x605f, 0x6060, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6061,
- 0x0000, 0x6062, 0x6063, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_8f[] = {
- /* 0x8f00 - 0x8fff */
- 0x6065, 0x0000, 0x6066, 0x0000, 0x0000, 0x0000, 0x0000, 0x6067,
- 0x6068, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6069,
- 0x606a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x606b, 0x606c,
- 0x606d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x606e, 0x0000,
- 0x606f, 0x6070, 0x0000, 0x6071, 0x0000, 0x6072, 0x0000, 0x6073,
- 0x6074, 0x0000, 0x0000, 0x0000, 0x6075, 0x6076, 0x6077, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6078, 0x6079, 0x607a, 0x607b,
- 0x0000, 0x0000, 0x607c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x607d, 0x607e, 0x0000, 0x6121, 0x0000, 0x0000, 0x0000, 0x6122,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6123,
- 0x0000, 0x6124, 0x6125, 0x6126, 0x6127, 0x6128, 0x0000, 0x0000,
- 0x6129, 0x0000, 0x0000, 0x0000, 0x0000, 0x612a, 0x612b, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x612c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x612d, 0x0000, 0x0000,
- 0x612e, 0x612f, 0x0000, 0x0000, 0x6130, 0x6131, 0x6132, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6133, 0x6134, 0x0000,
- 0x6135, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6136, 0x0000,
- 0x6137, 0x6138, 0x0000, 0x0000, 0x0000, 0x0000, 0x6139, 0x0000,
- 0x0000, 0x0000, 0x613a, 0x613b, 0x0000, 0x613c, 0x0000, 0x0000,
- 0x613d, 0x0000, 0x613e, 0x613f, 0x0000, 0x6140, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6141, 0x0000, 0x0000, 0x6142, 0x6143, 0x0000, 0x0000, 0x0000,
- 0x6144, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6145, 0x0000,
- 0x0000, 0x6146, 0x0000, 0x0000, 0x0000, 0x6147, 0x6148, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6149, 0x0000, 0x0000, 0x614a, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_90[] = {
- /* 0x9000 - 0x90ff */
- 0x0000, 0x0000, 0x614b, 0x0000, 0x614c, 0x0000, 0x0000, 0x0000,
- 0x614d, 0x0000, 0x0000, 0x0000, 0x614e, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x614f, 0x0000, 0x0000, 0x6150, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6151, 0x6152, 0x6154, 0x0000, 0x6155, 0x6156, 0x0000, 0x6153,
- 0x0000, 0x0000, 0x0000, 0x6157, 0x6158, 0x0000, 0x0000, 0x6159,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x615a,
- 0x0000, 0x0000, 0x0000, 0x615b, 0x615c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x615d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x615e, 0x0000, 0x615f, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6160, 0x0000, 0x0000, 0x0000, 0x6161, 0x6162,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6163, 0x0000, 0x0000, 0x0000,
- 0x6164, 0x0000, 0x0000, 0x0000, 0x6165, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6166, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6167, 0x0000, 0x0000,
- 0x6168, 0x0000, 0x0000, 0x6169, 0x616a, 0x0000, 0x616b, 0x0000,
- 0x616c, 0x0000, 0x0000, 0x0000, 0x0000, 0x616d, 0x0000, 0x616e,
- 0x616f, 0x6170, 0x0000, 0x6171, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6172, 0x6173, 0x6174, 0x0000, 0x0000, 0x6175, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6176, 0x0000, 0x6177, 0x6178, 0x6179, 0x0000, 0x617a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x617b, 0x617d, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x617e, 0x6221, 0x6222, 0x0000, 0x6223,
- 0x6224, 0x0000, 0x0000, 0x0000, 0x617c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x622d, 0x0000, 0x0000, 0x6225, 0x0000, 0x6226,
- 0x6227, 0x6228, 0x0000, 0x0000, 0x6229, 0x622a, 0x746c, 0x622b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x622c, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x622f, 0x0000, 0x0000, 0x0000, 0x6230,
- 0x6231, 0x0000, 0x0000, 0x0000, 0x6232, 0x0000, 0x622e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6233, 0x6234,
-};
-
-static unsigned short const unicode_to_jisx0212_91[] = {
- /* 0x9100 - 0x91ff */
- 0x6235, 0x0000, 0x0000, 0x0000, 0x6236, 0x6237, 0x6238, 0x0000,
- 0x6239, 0x0000, 0x0000, 0x0000, 0x0000, 0x623a, 0x0000, 0x0000,
- 0x623b, 0x0000, 0x0000, 0x0000, 0x623c, 0x746e, 0x623d, 0x623e,
- 0x623f, 0x0000, 0x6240, 0x0000, 0x6241, 0x0000, 0x6242, 0x0000,
- 0x6243, 0x0000, 0x6245, 0x6246, 0x0000, 0x6244, 0x0000, 0x6247,
- 0x0000, 0x6248, 0x0000, 0x0000, 0x0000, 0x0000, 0x6249, 0x624a,
- 0x0000, 0x624b, 0x0000, 0x0000, 0x624c, 0x0000, 0x624d, 0x624e,
- 0x0000, 0x624f, 0x6250, 0x0000, 0x6251, 0x6252, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6253, 0x0000, 0x0000, 0x0000, 0x6254,
- 0x6255, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6256,
- 0x0000, 0x0000, 0x0000, 0x6257, 0x0000, 0x0000, 0x0000, 0x6258,
- 0x0000, 0x6259, 0x625a, 0x625b, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x625c, 0x0000, 0x0000, 0x625d, 0x0000, 0x0000, 0x625e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x625f, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6260, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6261, 0x6262, 0x6263, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6264, 0x0000, 0x6265, 0x0000, 0x6266, 0x6267, 0x0000,
- 0x0000, 0x0000, 0x6268, 0x0000, 0x0000, 0x0000, 0x6269, 0x0000,
- 0x0000, 0x626a, 0x0000, 0x626b, 0x626c, 0x626d, 0x0000, 0x0000,
- 0x626e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x626f, 0x0000,
- 0x0000, 0x6270, 0x0000, 0x0000, 0x0000, 0x0000, 0x6271, 0x0000,
- 0x6272, 0x0000, 0x0000, 0x0000, 0x6273, 0x6274, 0x6275, 0x0000,
- 0x6276, 0x6277, 0x6278, 0x6279, 0x0000, 0x0000, 0x627a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x627b, 0x627c, 0x627d, 0x0000, 0x627e,
- 0x0000, 0x0000, 0x6321, 0x6322, 0x0000, 0x6323, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6324, 0x6325, 0x0000, 0x0000, 0x6326,
- 0x0000, 0x6327, 0x6328, 0x0000, 0x0000, 0x0000, 0x6329, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x632a, 0x632b, 0x0000, 0x0000,
- 0x0000, 0x632c, 0x632d, 0x0000, 0x632e, 0x632f, 0x6330, 0x6331,
- 0x6332, 0x6333, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6334,
- 0x0000, 0x6335, 0x0000, 0x6336, 0x0000, 0x6337, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_92[] = {
- /* 0x9200 - 0x92ff */
- 0x6338, 0x6339, 0x0000, 0x0000, 0x633a, 0x633b, 0x633c, 0x633d,
- 0x0000, 0x633e, 0x633f, 0x0000, 0x6340, 0x0000, 0x0000, 0x0000,
- 0x6341, 0x0000, 0x6342, 0x6343, 0x0000, 0x0000, 0x6344, 0x0000,
- 0x6345, 0x0000, 0x0000, 0x0000, 0x6346, 0x6347, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6348, 0x6349, 0x634a, 0x634b, 0x0000,
- 0x634c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x634d, 0x634e,
- 0x634f, 0x0000, 0x0000, 0x6350, 0x0000, 0x6351, 0x6352, 0x0000,
- 0x6353, 0x6354, 0x6355, 0x0000, 0x6356, 0x0000, 0x6357, 0x0000,
- 0x6358, 0x0000, 0x6359, 0x635a, 0x0000, 0x0000, 0x635b, 0x635c,
- 0x0000, 0x0000, 0x635d, 0x0000, 0x0000, 0x635e, 0x635f, 0x6360,
- 0x0000, 0x6361, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6362, 0x6363, 0x0000, 0x0000, 0x6364, 0x6365, 0x0000, 0x0000,
- 0x6366, 0x6367, 0x0000, 0x0000, 0x0000, 0x6368, 0x0000, 0x6369,
- 0x636a, 0x636b, 0x0000, 0x0000, 0x0000, 0x0000, 0x636c, 0x636d,
- 0x636e, 0x0000, 0x0000, 0x0000, 0x0000, 0x636f, 0x6370, 0x6371,
- 0x6372, 0x6373, 0x0000, 0x6374, 0x6375, 0x6376, 0x0000, 0x6377,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6378, 0x6379, 0x637a, 0x0000, 0x0000, 0x637b, 0x637c, 0x0000,
- 0x0000, 0x0000, 0x637d, 0x0000, 0x0000, 0x0000, 0x0000, 0x637e,
- 0x0000, 0x6421, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6422,
- 0x6423, 0x0000, 0x0000, 0x0000, 0x6424, 0x6425, 0x0000, 0x6426,
- 0x6427, 0x0000, 0x0000, 0x6428, 0x0000, 0x0000, 0x0000, 0x6429,
- 0x0000, 0x0000, 0x642a, 0x0000, 0x0000, 0x0000, 0x642b, 0x0000,
- 0x642c, 0x0000, 0x642d, 0x642e, 0x642f, 0x6430, 0x0000, 0x6431,
- 0x6432, 0x6433, 0x6434, 0x6435, 0x0000, 0x6436, 0x6437, 0x6438,
- 0x6439, 0x0000, 0x0000, 0x643a, 0x643b, 0x643c, 0x643d, 0x0000,
- 0x643e, 0x0000, 0x0000, 0x643f, 0x0000, 0x6440, 0x0000, 0x6441,
- 0x6442, 0x6443, 0x0000, 0x0000, 0x6444, 0x6445, 0x0000, 0x6446,
- 0x6447, 0x6448, 0x0000, 0x6449, 0x0000, 0x644a, 0x0000, 0x644b,
- 0x644c, 0x0000, 0x0000, 0x0000, 0x644d, 0x0000, 0x644e, 0x0000,
- 0x644f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6450, 0x0000, 0x6451, 0x0000, 0x0000, 0x0000, 0x6452,
-};
-
-static unsigned short const unicode_to_jisx0212_93[] = {
- /* 0x9300 - 0x93ff */
- 0x6453, 0x0000, 0x6454, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6455, 0x0000, 0x0000, 0x0000, 0x0000, 0x6456, 0x0000, 0x0000,
- 0x0000, 0x6457, 0x0000, 0x0000, 0x6458, 0x6459, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x645a, 0x645b, 0x645c, 0x645d,
- 0x0000, 0x645e, 0x0000, 0x0000, 0x645f, 0x6460, 0x0000, 0x6461,
- 0x0000, 0x6462, 0x6463, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6464, 0x6465, 0x0000, 0x6466, 0x6467,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6468,
- 0x6469, 0x646a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x646b, 0x646c, 0x646d, 0x0000, 0x0000, 0x646e, 0x0000, 0x646f,
- 0x6470, 0x0000, 0x6471, 0x0000, 0x0000, 0x0000, 0x6472, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6473, 0x6474, 0x0000, 0x6475,
- 0x0000, 0x6476, 0x6477, 0x0000, 0x0000, 0x6478, 0x0000, 0x6479,
- 0x647a, 0x647b, 0x0000, 0x647c, 0x647d, 0x0000, 0x647e, 0x0000,
- 0x0000, 0x0000, 0x6521, 0x0000, 0x0000, 0x6522, 0x0000, 0x6523,
- 0x6524, 0x6525, 0x6526, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6527, 0x0000, 0x6528, 0x6529, 0x0000, 0x652a, 0x0000, 0x652b,
- 0x0000, 0x0000, 0x652c, 0x0000, 0x0000, 0x652d, 0x0000, 0x0000,
- 0x652e, 0x0000, 0x0000, 0x652f, 0x0000, 0x0000, 0x6530, 0x0000,
- 0x0000, 0x6531, 0x0000, 0x6532, 0x6533, 0x0000, 0x6534, 0x0000,
- 0x6535, 0x653b, 0x0000, 0x6536, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6537, 0x6538, 0x6539, 0x0000,
- 0x0000, 0x0000, 0x653a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x653c, 0x0000, 0x0000, 0x653d, 0x653e, 0x653f, 0x6540,
- 0x0000, 0x6541, 0x6542, 0x6543, 0x6544, 0x6545, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6546, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6547, 0x0000, 0x0000, 0x6548, 0x0000, 0x6549, 0x654a,
- 0x0000, 0x0000, 0x654b, 0x0000, 0x0000, 0x0000, 0x654c, 0x654d,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x654f,
- 0x6550, 0x654e, 0x6551, 0x6552, 0x0000, 0x6553, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_94[] = {
- /* 0x9400 - 0x94ff */
- 0x0000, 0x6554, 0x6555, 0x0000, 0x6556, 0x0000, 0x0000, 0x0000,
- 0x6557, 0x6558, 0x0000, 0x0000, 0x0000, 0x6559, 0x655a, 0x655b,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x655c, 0x655d, 0x655e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x655f,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6560, 0x6561,
- 0x0000, 0x6562, 0x6563, 0x6564, 0x6565, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6566, 0x0000, 0x6568, 0x0000, 0x6567,
- 0x0000, 0x0000, 0x0000, 0x6569, 0x0000, 0x656a, 0x0000, 0x0000,
- 0x656b, 0x0000, 0x656c, 0x0000, 0x656d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x656e, 0x0000, 0x0000,
- 0x0000, 0x656f, 0x0000, 0x0000, 0x6570, 0x0000, 0x0000, 0x6571,
- 0x0000, 0x6572, 0x0000, 0x6573, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6574, 0x0000, 0x0000, 0x6575, 0x0000, 0x6576, 0x6577, 0x6578,
- 0x0000, 0x6579, 0x657a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x657c, 0x657b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_95[] = {
- /* 0x9500 - 0x95ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x657d, 0x657e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6621, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6622, 0x0000, 0x0000, 0x0000,
- 0x6623, 0x0000, 0x0000, 0x0000, 0x6624, 0x6625, 0x6626, 0x0000,
- 0x0000, 0x0000, 0x7471, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6627, 0x6628, 0x6629,
- 0x0000, 0x662a, 0x0000, 0x0000, 0x0000, 0x0000, 0x662b, 0x0000,
- 0x0000, 0x662c, 0x0000, 0x662d, 0x662e, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x662f, 0x0000, 0x6630, 0x0000,
- 0x0000, 0x0000, 0x6631, 0x0000, 0x0000, 0x6632, 0x0000, 0x6633,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6634, 0x0000,
- 0x6635, 0x6636, 0x0000, 0x6637, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6638, 0x6639, 0x663a, 0x663b, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x663c, 0x663d, 0x0000, 0x0000, 0x663e, 0x663f, 0x6640,
- 0x6641, 0x0000, 0x0000, 0x0000, 0x6642, 0x0000, 0x6643, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_96[] = {
- /* 0x9600 - 0x96ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6644, 0x6645, 0x0000,
- 0x0000, 0x0000, 0x6646, 0x0000, 0x6647, 0x6648, 0x6649, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x664a, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x664b, 0x0000, 0x664c, 0x0000, 0x0000, 0x0000, 0x664d,
- 0x664e, 0x664f, 0x6650, 0x0000, 0x6651, 0x6652, 0x0000, 0x0000,
- 0x0000, 0x6653, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6654, 0x0000, 0x6655, 0x0000, 0x6656, 0x6657,
- 0x6658, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6659, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x665a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x665b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x665c, 0x665d, 0x0000, 0x665e, 0x665f,
- 0x0000, 0x6660, 0x6661, 0x6662, 0x6663, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6664, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6665, 0x0000, 0x0000, 0x0000, 0x0000, 0x6666, 0x0000,
- 0x0000, 0x0000, 0x6667, 0x0000, 0x0000, 0x6668, 0x0000, 0x6669,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x666a, 0x666b, 0x666c, 0x0000,
- 0x0000, 0x666d, 0x0000, 0x0000, 0x0000, 0x0000, 0x666e, 0x666f,
- 0x0000, 0x0000, 0x0000, 0x6670, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6671, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6672, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6673, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6675, 0x0000, 0x6676, 0x0000, 0x0000, 0x6677, 0x6678, 0x6679,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x667a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x667b,
- 0x0000, 0x667c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x667d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_97[] = {
- /* 0x9700 - 0x97ff */
- 0x0000, 0x0000, 0x667e, 0x6721, 0x0000, 0x6722, 0x0000, 0x0000,
- 0x0000, 0x6723, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6724, 0x6725, 0x0000, 0x6726, 0x0000, 0x0000,
- 0x0000, 0x6727, 0x6728, 0x6729, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x672a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x672b, 0x0000, 0x672c, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x7474, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x672d, 0x0000, 0x672e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x672f, 0x0000, 0x0000, 0x7475, 0x6730, 0x6731,
- 0x0000, 0x7476, 0x0000, 0x0000, 0x0000, 0x6732, 0x0000, 0x6733,
- 0x6734, 0x0000, 0x6735, 0x6736, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6737, 0x0000, 0x0000, 0x0000, 0x6738,
- 0x0000, 0x0000, 0x6739, 0x0000, 0x0000, 0x0000, 0x673a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x673b, 0x0000, 0x0000, 0x673c, 0x673d,
- 0x673e, 0x0000, 0x0000, 0x673f, 0x0000, 0x6740, 0x0000, 0x6741,
- 0x6742, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6743, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6744, 0x6745, 0x6746,
- 0x0000, 0x6747, 0x6748, 0x0000, 0x0000, 0x0000, 0x6749, 0x674a,
- 0x0000, 0x0000, 0x674b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x674c, 0x0000, 0x674d, 0x0000,
- 0x0000, 0x674e, 0x674f, 0x0000, 0x0000, 0x6750, 0x6751, 0x0000,
- 0x6752, 0x6753, 0x6754, 0x0000, 0x6755, 0x0000, 0x6756, 0x6757,
- 0x0000, 0x6758, 0x0000, 0x0000, 0x6759, 0x675a, 0x0000, 0x675b,
- 0x0000, 0x675c, 0x675d, 0x0000, 0x675e, 0x675f, 0x6760, 0x0000,
- 0x6761, 0x6762, 0x0000, 0x0000, 0x6763, 0x0000, 0x0000, 0x6764,
- 0x6765, 0x6766, 0x0000, 0x676a, 0x0000, 0x6767, 0x6768, 0x0000,
- 0x6769, 0x676b, 0x0000, 0x0000, 0x676c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x676d,
- 0x0000, 0x676e, 0x0000, 0x0000, 0x676f, 0x0000, 0x0000, 0x6770,
- 0x6771, 0x0000, 0x6772, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_98[] = {
- /* 0x9800 - 0x98ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6773,
- 0x0000, 0x0000, 0x6774, 0x0000, 0x0000, 0x6776, 0x6777, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6778, 0x0000, 0x6779, 0x0000,
- 0x0000, 0x6775, 0x0000, 0x0000, 0x677a, 0x0000, 0x677b, 0x0000,
- 0x677c, 0x0000, 0x0000, 0x677d, 0x0000, 0x6828, 0x677e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6821, 0x0000, 0x0000, 0x6822, 0x6823,
- 0x6824, 0x0000, 0x6825, 0x6826, 0x0000, 0x6827, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6829, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x682a, 0x0000, 0x0000, 0x682b,
- 0x0000, 0x0000, 0x682c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x682d, 0x682e, 0x682f, 0x0000, 0x0000, 0x6830, 0x6831,
- 0x0000, 0x6832, 0x6833, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6834, 0x6835, 0x0000, 0x6836, 0x6837, 0x0000,
- 0x0000, 0x0000, 0x6838, 0x0000, 0x6839, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x683a, 0x0000, 0x683b, 0x683c, 0x0000,
- 0x683d, 0x0000, 0x0000, 0x0000, 0x683e, 0x0000, 0x0000, 0x683f,
- 0x6840, 0x0000, 0x6841, 0x6842, 0x0000, 0x0000, 0x0000, 0x6843,
- 0x0000, 0x0000, 0x6844, 0x0000, 0x0000, 0x6845, 0x0000, 0x0000,
- 0x6846, 0x0000, 0x0000, 0x0000, 0x6847, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6848, 0x0000, 0x6849, 0x0000, 0x684a, 0x684b, 0x684c,
- 0x0000, 0x0000, 0x684d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x684e, 0x0000, 0x0000, 0x684f, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_99[] = {
- /* 0x9900 - 0x99ff */
- 0x0000, 0x0000, 0x6850, 0x0000, 0x0000, 0x0000, 0x0000, 0x6851,
- 0x6852, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6853, 0x0000, 0x0000, 0x0000, 0x6854, 0x6855, 0x6856,
- 0x0000, 0x0000, 0x6857, 0x6858, 0x6859, 0x0000, 0x0000, 0x685a,
- 0x0000, 0x0000, 0x685b, 0x0000, 0x0000, 0x0000, 0x685c, 0x685d,
- 0x0000, 0x0000, 0x0000, 0x685e, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x685f, 0x6860, 0x6861, 0x6862, 0x6863, 0x0000, 0x0000,
- 0x0000, 0x6864, 0x6865, 0x6866, 0x6867, 0x0000, 0x0000, 0x0000,
- 0x6868, 0x6869, 0x0000, 0x0000, 0x0000, 0x0000, 0x686a, 0x686b,
- 0x686c, 0x0000, 0x0000, 0x0000, 0x0000, 0x686d, 0x686e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x686f, 0x0000, 0x0000, 0x0000,
- 0x6870, 0x6871, 0x0000, 0x6872, 0x6873, 0x0000, 0x6874, 0x6875,
- 0x6876, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6877, 0x0000, 0x6878, 0x747a, 0x6879,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x687a, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x687b, 0x687c, 0x687d, 0x0000, 0x0000, 0x687e, 0x0000, 0x0000,
- 0x0000, 0x6921, 0x6922, 0x0000, 0x0000, 0x6923, 0x0000, 0x6924,
- 0x0000, 0x0000, 0x0000, 0x6925, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6926, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6927, 0x6928, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6929, 0x692a, 0x0000, 0x692b, 0x0000, 0x692c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x692d,
- 0x0000, 0x0000, 0x692e, 0x692f, 0x6930, 0x0000, 0x0000, 0x0000,
- 0x6931, 0x0000, 0x0000, 0x0000, 0x6932, 0x6933, 0x0000, 0x0000,
- 0x0000, 0x6934, 0x0000, 0x0000, 0x0000, 0x6935, 0x6936, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_9a[] = {
- /* 0x9a00 - 0x9aff */
- 0x0000, 0x0000, 0x6937, 0x6938, 0x6939, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x693a, 0x693b, 0x0000, 0x0000, 0x0000,
- 0x693c, 0x693d, 0x0000, 0x0000, 0x0000, 0x0000, 0x693e, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x693f, 0x0000,
- 0x6940, 0x0000, 0x6941, 0x6942, 0x6943, 0x0000, 0x0000, 0x6944,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6945, 0x6946, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6947, 0x0000, 0x6948, 0x6949, 0x0000,
- 0x694a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x694c, 0x0000, 0x0000, 0x694d, 0x0000, 0x0000, 0x694b,
- 0x0000, 0x0000, 0x694e, 0x694f, 0x6950, 0x0000, 0x6951, 0x0000,
- 0x0000, 0x6952, 0x0000, 0x0000, 0x6953, 0x0000, 0x6954, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6955, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6956, 0x0000, 0x6957, 0x0000, 0x6958, 0x6959,
- 0x0000, 0x0000, 0x695a, 0x0000, 0x695b, 0x695c, 0x695d, 0x0000,
- 0x0000, 0x695e, 0x0000, 0x695f, 0x0000, 0x0000, 0x6960, 0x6961,
- 0x0000, 0x6962, 0x0000, 0x6963, 0x0000, 0x0000, 0x6964, 0x0000,
- 0x6965, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6966, 0x0000,
- 0x6967, 0x0000, 0x6968, 0x0000, 0x0000, 0x6969, 0x696a, 0x696b,
- 0x0000, 0x747b, 0x0000, 0x696c, 0x696d, 0x0000, 0x0000, 0x0000,
- 0x696e, 0x0000, 0x0000, 0x0000, 0x696f, 0x6970, 0x0000, 0x6971,
- 0x0000, 0x6972, 0x0000, 0x0000, 0x6973, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6974, 0x6975, 0x0000, 0x6976, 0x0000, 0x0000,
- 0x0000, 0x6977, 0x6978, 0x0000, 0x0000, 0x6979, 0x0000, 0x697a,
-};
-
-static unsigned short const unicode_to_jisx0212_9b[] = {
- /* 0x9b00 - 0x9bff */
- 0x697b, 0x697c, 0x697d, 0x697e, 0x6a21, 0x6a22, 0x0000, 0x0000,
- 0x6a23, 0x6a24, 0x0000, 0x6a25, 0x6a26, 0x6a27, 0x6a28, 0x0000,
- 0x6a29, 0x0000, 0x6a2a, 0x0000, 0x0000, 0x0000, 0x6a2b, 0x0000,
- 0x0000, 0x6a2c, 0x0000, 0x6a2d, 0x6a2e, 0x0000, 0x0000, 0x0000,
- 0x6a2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a30, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6a31, 0x0000, 0x6a32, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6a33, 0x6a34, 0x6a35, 0x0000, 0x6a36,
- 0x0000, 0x6a37, 0x6a38, 0x0000, 0x0000, 0x6a39, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6a3a, 0x0000, 0x0000, 0x6a3b, 0x6a3c, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a3d, 0x6a3e, 0x6a3f,
- 0x0000, 0x0000, 0x0000, 0x6a40, 0x0000, 0x0000, 0x6a41, 0x0000,
- 0x0000, 0x6a42, 0x0000, 0x6a43, 0x0000, 0x6a44, 0x6a45, 0x0000,
- 0x6a46, 0x0000, 0x6a47, 0x6a48, 0x6a49, 0x6a4a, 0x6a4b, 0x0000,
- 0x0000, 0x0000, 0x747c, 0x6a4c, 0x0000, 0x6a4d, 0x0000, 0x6a4e,
- 0x6a4f, 0x6a50, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a51,
- 0x6a52, 0x0000, 0x0000, 0x0000, 0x6a53, 0x6a54, 0x6a55, 0x6a56,
- 0x0000, 0x6a57, 0x6a58, 0x6a59, 0x0000, 0x6a5a, 0x0000, 0x6a5b,
- 0x6a5c, 0x0000, 0x0000, 0x0000, 0x6a5d, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6a5e, 0x0000, 0x0000, 0x6a5f, 0x6a60, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a61, 0x6a62,
- 0x0000, 0x6a63, 0x0000, 0x0000, 0x6a64, 0x0000, 0x0000, 0x0000,
- 0x6a65, 0x6a66, 0x6a67, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a68,
- 0x6a69, 0x0000, 0x0000, 0x6a6a, 0x6a6b, 0x0000, 0x6a6c, 0x6a6d,
- 0x0000, 0x6a6e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a6f,
- 0x6a70, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a71, 0x0000,
- 0x6a72, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a73,
- 0x6a74, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a75, 0x0000, 0x6a76,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6a77, 0x0000, 0x6a78,
- 0x0000, 0x0000, 0x6a79, 0x6a7a, 0x0000, 0x0000, 0x0000, 0x6a7b,
- 0x0000, 0x0000, 0x0000, 0x6a7c, 0x0000, 0x0000, 0x0000, 0x6a7d,
- 0x6a7e, 0x6b21, 0x6b22, 0x0000, 0x0000, 0x6b23, 0x0000, 0x6b24,
-};
-
-static unsigned short const unicode_to_jisx0212_9c[] = {
- /* 0x9c00 - 0x9cff */
- 0x6b25, 0x0000, 0x6b26, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6b27, 0x0000, 0x0000, 0x0000, 0x6b28,
- 0x0000, 0x6b29, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b2a, 0x0000,
- 0x6b2b, 0x6b2c, 0x6b2d, 0x0000, 0x6b2e, 0x0000, 0x6b2f, 0x0000,
- 0x0000, 0x0000, 0x6b30, 0x6b31, 0x0000, 0x0000, 0x6b32, 0x6b33,
- 0x6b34, 0x6b35, 0x6b36, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6b37, 0x0000, 0x0000, 0x0000, 0x6b38, 0x6b39, 0x6b3a,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b3b, 0x0000, 0x0000,
- 0x0000, 0x6b3c, 0x0000, 0x6b3d, 0x6b3e, 0x6b3f, 0x0000, 0x0000,
- 0x0000, 0x6b40, 0x6b41, 0x0000, 0x0000, 0x0000, 0x6b42, 0x6b43,
- 0x6b44, 0x0000, 0x0000, 0x6b45, 0x6b46, 0x0000, 0x6b47, 0x0000,
- 0x6b48, 0x0000, 0x0000, 0x6b49, 0x6b50, 0x6b4a, 0x6b4b, 0x6b4c,
- 0x0000, 0x0000, 0x0000, 0x6b4d, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6b52, 0x6b4e, 0x6b4f, 0x6b51, 0x0000, 0x0000, 0x6b53, 0x0000,
- 0x6b54, 0x0000, 0x6b55, 0x0000, 0x0000, 0x6b56, 0x0000, 0x6b57,
- 0x0000, 0x0000, 0x0000, 0x6b58, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b59, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6b5a, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b5b,
- 0x0000, 0x6b5c, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_9d[] = {
- /* 0x9d00 - 0x9dff */
- 0x0000, 0x0000, 0x6b5e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6b5d, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6b5f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b60,
- 0x6b61, 0x0000, 0x0000, 0x0000, 0x6b62, 0x6b63, 0x6b64, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b65,
- 0x6b66, 0x0000, 0x6b67, 0x6b68, 0x6b69, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6b6a, 0x0000, 0x6b6b, 0x6b6d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6b6e, 0x6b6f, 0x0000, 0x6b6c, 0x0000, 0x6b70,
- 0x0000, 0x0000, 0x6b71, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6b72, 0x6b73, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b74,
- 0x0000, 0x0000, 0x6b76, 0x6b75, 0x0000, 0x6b77, 0x0000, 0x0000,
- 0x0000, 0x6b78, 0x6b79, 0x6b7a, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6b7b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6b7c, 0x6b7d,
- 0x0000, 0x0000, 0x0000, 0x6b7e, 0x6c21, 0x0000, 0x6c22, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6c23, 0x6c24, 0x0000, 0x6c25, 0x0000,
- 0x0000, 0x0000, 0x6c26, 0x0000, 0x0000, 0x6c27, 0x6c28, 0x0000,
- 0x0000, 0x0000, 0x6c29, 0x6c2a, 0x0000, 0x6c2b, 0x6c2c, 0x6c2d,
- 0x6c2e, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6c2f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6c30, 0x0000, 0x6c31, 0x0000, 0x6c32, 0x0000,
- 0x0000, 0x6c33, 0x0000, 0x0000, 0x0000, 0x6c34, 0x0000, 0x0000,
- 0x0000, 0x6c35, 0x0000, 0x0000, 0x6c36, 0x0000, 0x0000, 0x6c37,
- 0x0000, 0x0000, 0x0000, 0x6c38, 0x0000, 0x0000, 0x0000, 0x6c39,
- 0x0000, 0x6c3a, 0x6c3b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6c3c, 0x6c3d, 0x6c3e, 0x6c3f,
- 0x0000, 0x0000, 0x6c40, 0x0000, 0x0000, 0x0000, 0x6c41, 0x6c42,
- 0x6c43, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c44, 0x0000, 0x6c45,
- 0x0000, 0x6c46, 0x0000, 0x6c47, 0x0000, 0x0000, 0x6c48, 0x0000,
- 0x6c49, 0x0000, 0x0000, 0x6c4a, 0x6c4b, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c4c, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_9e[] = {
- /* 0x9e00 - 0x9eff */
- 0x0000, 0x0000, 0x6c4e, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c4f,
- 0x0000, 0x0000, 0x6c4d, 0x0000, 0x0000, 0x0000, 0x6c50, 0x0000,
- 0x6c51, 0x6c52, 0x6c53, 0x0000, 0x0000, 0x6c54, 0x6c55, 0x0000,
- 0x0000, 0x6c56, 0x0000, 0x0000, 0x6c57, 0x6c58, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6c59, 0x6c5a, 0x6c5b, 0x0000, 0x0000, 0x0000,
- 0x6c5c, 0x0000, 0x6c5d, 0x6c5e, 0x6c5f, 0x6c60, 0x0000, 0x6c61,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c62, 0x6c63,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c64, 0x0000,
- 0x6c65, 0x0000, 0x0000, 0x6c66, 0x0000, 0x0000, 0x6c67, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6c68, 0x0000, 0x0000, 0x0000,
- 0x6c69, 0x0000, 0x0000, 0x0000, 0x6c6a, 0x0000, 0x6c6b, 0x6c6c,
- 0x6c6d, 0x0000, 0x0000, 0x6c6e, 0x6c6f, 0x6c70, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c71, 0x0000,
- 0x6c72, 0x0000, 0x0000, 0x6c73, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x747e, 0x0000, 0x0000, 0x0000, 0x6c74, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6c75,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6c76, 0x0000, 0x0000, 0x6c77,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x6c78, 0x6c79, 0x6c7a, 0x0000,
- 0x6c7b, 0x6c7c, 0x6c7d, 0x0000, 0x0000, 0x6c7e, 0x0000, 0x0000,
- 0x6d21, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d22,
-};
-
-static unsigned short const unicode_to_jisx0212_9f[] = {
- /* 0x9f00 - 0x9fff */
- 0x0000, 0x0000, 0x6d23, 0x6d24, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x6d25, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d26,
- 0x6d27, 0x6d28, 0x6d29, 0x0000, 0x6d2a, 0x0000, 0x6d2b, 0x6d2c,
- 0x0000, 0x6d2d, 0x6d2e, 0x6d2f, 0x0000, 0x0000, 0x0000, 0x6d30,
- 0x0000, 0x0000, 0x6d31, 0x0000, 0x0000, 0x0000, 0x6d32, 0x0000,
- 0x0000, 0x0000, 0x6d33, 0x6d34, 0x0000, 0x0000, 0x0000, 0x6d35,
- 0x0000, 0x6d36, 0x6d37, 0x0000, 0x6d38, 0x0000, 0x0000, 0x6d39,
- 0x0000, 0x6d3a, 0x6d3b, 0x0000, 0x6d3c, 0x6d3d, 0x0000, 0x6d3e,
- 0x0000, 0x6d3f, 0x0000, 0x6d40, 0x6d41, 0x6d42, 0x6d43, 0x6d44,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x6d45, 0x0000, 0x6d46, 0x6d47, 0x6d48,
- 0x6d49, 0x0000, 0x6d4a, 0x0000, 0x0000, 0x6d4b, 0x6d4c, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x6d4d, 0x6d4e, 0x0000, 0x0000, 0x0000, 0x6d4f, 0x6d50, 0x6d51,
- 0x6d52, 0x6d53, 0x0000, 0x6d54, 0x0000, 0x6d55, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x6d56, 0x0000, 0x0000, 0x6d57, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d58,
- 0x6d59, 0x6d5a, 0x6d5b, 0x0000, 0x6d5c, 0x0000, 0x6d5d, 0x6d5e,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x6d5f, 0x0000,
- 0x0000, 0x6d60, 0x6d61, 0x6d62, 0x0000, 0x6d63, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_f9[] = {
- /* 0xf900 - 0xf9ff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x7445, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x7472, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_fa[] = {
- /* 0xfa00 - 0xfaff */
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x7434, 0x7437,
- 0x7438, 0x743d, 0x7444, 0x7447, 0x7448, 0x744e, 0x744f, 0x7453,
- 0x7455, 0x7456, 0x7457, 0x7458, 0x745a, 0x745b, 0x745e, 0x7460,
- 0x7462, 0x7463, 0x7465, 0x7469, 0x746a, 0x746b, 0x746d, 0x746f,
- 0x7470, 0x7473, 0x7477, 0x7478, 0x7479, 0x747d, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const unicode_to_jisx0212_ff[] = {
- /* 0xff00 - 0xffff */
- 0x0000, 0x0000, 0x742a, 0x0000, 0x0000, 0x0000, 0x0000, 0x7429,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
-};
-
-static unsigned short const * const unicode_to_jisx0212_map[0x100] = {
- /* 0x00XX - 0x0fXX */
- unicode_to_jisx0212_00,
- unicode_to_jisx0212_01,
- unicode_to_jisx0212_02,
- unicode_to_jisx0212_03,
- unicode_to_jisx0212_04,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* 0x10XX - 0x1fXX */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* 0x20XX - 0x2fXX */
- 0,
- unicode_to_jisx0212_21,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* 0x30XX - 0x3fXX */
- 0, 0,
- unicode_to_jisx0212_32,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* 0x40XX - 0x4fXX */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- unicode_to_jisx0212_4e,
- unicode_to_jisx0212_4f,
- /* 0x50XX - 0x5fXX */
- unicode_to_jisx0212_50,
- unicode_to_jisx0212_51,
- unicode_to_jisx0212_52,
- unicode_to_jisx0212_53,
- unicode_to_jisx0212_54,
- unicode_to_jisx0212_55,
- unicode_to_jisx0212_56,
- unicode_to_jisx0212_57,
- unicode_to_jisx0212_58,
- unicode_to_jisx0212_59,
- unicode_to_jisx0212_5a,
- unicode_to_jisx0212_5b,
- unicode_to_jisx0212_5c,
- unicode_to_jisx0212_5d,
- unicode_to_jisx0212_5e,
- unicode_to_jisx0212_5f,
- /* 0x60XX - 0x6fXX */
- unicode_to_jisx0212_60,
- unicode_to_jisx0212_61,
- unicode_to_jisx0212_62,
- unicode_to_jisx0212_63,
- unicode_to_jisx0212_64,
- unicode_to_jisx0212_65,
- unicode_to_jisx0212_66,
- unicode_to_jisx0212_67,
- unicode_to_jisx0212_68,
- unicode_to_jisx0212_69,
- unicode_to_jisx0212_6a,
- unicode_to_jisx0212_6b,
- unicode_to_jisx0212_6c,
- unicode_to_jisx0212_6d,
- unicode_to_jisx0212_6e,
- unicode_to_jisx0212_6f,
- /* 0x70XX - 0x7fXX */
- unicode_to_jisx0212_70,
- unicode_to_jisx0212_71,
- unicode_to_jisx0212_72,
- unicode_to_jisx0212_73,
- unicode_to_jisx0212_74,
- unicode_to_jisx0212_75,
- unicode_to_jisx0212_76,
- unicode_to_jisx0212_77,
- unicode_to_jisx0212_78,
- unicode_to_jisx0212_79,
- unicode_to_jisx0212_7a,
- unicode_to_jisx0212_7b,
- unicode_to_jisx0212_7c,
- unicode_to_jisx0212_7d,
- unicode_to_jisx0212_7e,
- unicode_to_jisx0212_7f,
- /* 0x80XX - 0x8fXX */
- unicode_to_jisx0212_80,
- unicode_to_jisx0212_81,
- unicode_to_jisx0212_82,
- unicode_to_jisx0212_83,
- unicode_to_jisx0212_84,
- unicode_to_jisx0212_85,
- unicode_to_jisx0212_86,
- unicode_to_jisx0212_87,
- unicode_to_jisx0212_88,
- unicode_to_jisx0212_89,
- unicode_to_jisx0212_8a,
- unicode_to_jisx0212_8b,
- unicode_to_jisx0212_8c,
- unicode_to_jisx0212_8d,
- unicode_to_jisx0212_8e,
- unicode_to_jisx0212_8f,
- /* 0x90XX - 0x9fXX */
- unicode_to_jisx0212_90,
- unicode_to_jisx0212_91,
- unicode_to_jisx0212_92,
- unicode_to_jisx0212_93,
- unicode_to_jisx0212_94,
- unicode_to_jisx0212_95,
- unicode_to_jisx0212_96,
- unicode_to_jisx0212_97,
- unicode_to_jisx0212_98,
- unicode_to_jisx0212_99,
- unicode_to_jisx0212_9a,
- unicode_to_jisx0212_9b,
- unicode_to_jisx0212_9c,
- unicode_to_jisx0212_9d,
- unicode_to_jisx0212_9e,
- unicode_to_jisx0212_9f,
- /* 0xa0XX - 0xafXX */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* 0xb0XX - 0xbfXX */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* 0xc0XX - 0xcfXX */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* 0xd0XX - 0xdfXX */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* 0xe0XX - 0xefXX */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- /* 0xf0XX - 0xffXX */
- 0, 0, 0, 0, 0, 0, 0, 0, 0,
- unicode_to_jisx0212_f9,
- unicode_to_jisx0212_fa,
- 0, 0, 0, 0,
- unicode_to_jisx0212_ff,
-};
-
-#endif
-
-#ifdef USE_JISX0212
-static uint unicode11ToJisx0212(uint h, uint l)
-{
- unsigned short const *table;
-
- table = unicode_to_jisx0212_map[h];
- if (table != 0) {
- return table[l];
- }
- return 0x0000;
-}
-#else
-static uint unicode11ToJisx0212(uint h, uint l)
-{
- return 0x0000;
-}
-#endif
-
-static unsigned short const sjis208ibmvdc_unicode[] = {
- /*0xfa40 -0xfafc*/
- 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
- 0x2178, 0x2179, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165,
- 0x2166, 0x2167, 0x2168, 0x2169, 0xffe2, 0xffe4, 0xff07, 0xff02,
- 0x3231, 0x2116, 0x2121, 0x2235, 0x7e8a, 0x891c, 0x9348, 0x9288,
- 0x84dc, 0x4fc9, 0x70bb, 0x6631, 0x68c8, 0x92f9, 0x66fb, 0x5f45,
- 0x4e28, 0x4ee1, 0x4efc, 0x4f00, 0x4f03, 0x4f39, 0x4f56, 0x4f92,
- 0x4f8a, 0x4f9a, 0x4f94, 0x4fcd, 0x5040, 0x5022, 0x4fff, 0x501e,
- 0x5046, 0x5070, 0x5042, 0x5094, 0x50f4, 0x50d8, 0x514a, 0x30fb,
- 0x5164, 0x519d, 0x51be, 0x51ec, 0x5215, 0x529c, 0x52a6, 0x52c0,
- 0x52db, 0x5300, 0x5307, 0x5324, 0x5372, 0x5393, 0x53b2, 0x53dd,
- 0xfa0e, 0x549c, 0x548a, 0x54a9, 0x54ff, 0x5586, 0x5759, 0x5765,
- 0x57ac, 0x57c8, 0x57c7, 0xfa0f, 0xfa10, 0x589e, 0x58b2, 0x590b,
- 0x5953, 0x595b, 0x595d, 0x5963, 0x59a4, 0x59ba, 0x5b56, 0x5bc0,
- 0x752f, 0x5bd8, 0x5bec, 0x5c1e, 0x5ca6, 0x5cba, 0x5cf5, 0x5d27,
- 0x5d53, 0xfa11, 0x5d42, 0x5d6d, 0x5db8, 0x5db9, 0x5dd0, 0x5f21,
- 0x5f34, 0x5f67, 0x5fb7, 0x5fde, 0x605d, 0x6085, 0x608a, 0x60de,
- 0x60d5, 0x6120, 0x60f2, 0x6111, 0x6137, 0x6130, 0x6198, 0x6213,
- 0x62a6, 0x63f5, 0x6460, 0x649d, 0x64ce, 0x654e, 0x6600, 0x6615,
- 0x663b, 0x6609, 0x662e, 0x661e, 0x6624, 0x6665, 0x6657, 0x6659,
- 0xfa12, 0x6673, 0x6699, 0x66a0, 0x66b2, 0x66bf, 0x66fa, 0x670e,
- 0xf929, 0x6766, 0x67bb, 0x6852, 0x67c0, 0x6801, 0x6844, 0x68cf,
- 0xfa13, 0x6968, 0xfa14, 0x6998, 0x69e2, 0x6a30, 0x6a6b, 0x6a46,
- 0x6a73, 0x6a7e, 0x6ae2, 0x6ae4, 0x6bd6, 0x6c3f, 0x6c5c, 0x6c86,
- 0x6c6f, 0x6cda, 0x6d04, 0x6d87, 0x6d6f,
- /*0xfb40 -0xfbfc*/
- 0x6d96, 0x6dac, 0x6dcf, 0x6df8, 0x6df2, 0x6dfc, 0x6e39, 0x6e5c,
- 0x6e27, 0x6e3c, 0x6ebf, 0x6f88, 0x6fb5, 0x6ff5, 0x7005, 0x7007,
- 0x7028, 0x7085, 0x70ab, 0x710f, 0x7104, 0x715c, 0x7146, 0x7147,
- 0xfa15, 0x71c1, 0x71fe, 0x72b1, 0x72be, 0x7324, 0xfa16, 0x7377,
- 0x73bd, 0x73c9, 0x73d6, 0x73e3, 0x73d2, 0x7407, 0x73f5, 0x7426,
- 0x742a, 0x7429, 0x742e, 0x7462, 0x7489, 0x749f, 0x7501, 0x756f,
- 0x7682, 0x769c, 0x769e, 0x769b, 0x76a6, 0xfa17, 0x7746, 0x52af,
- 0x7821, 0x784e, 0x7864, 0x787a, 0x7930, 0xfa18, 0xfa19, 0x30fb,
- 0xfa1a, 0x7994, 0xfa1b, 0x799b, 0x7ad1, 0x7ae7, 0xfa1c, 0x7aeb,
- 0x7b9e, 0xfa1d, 0x7d48, 0x7d5c, 0x7db7, 0x7da0, 0x7dd6, 0x7e52,
- 0x7f47, 0x7fa1, 0xfa1e, 0x8301, 0x8362, 0x837f, 0x83c7, 0x83f6,
- 0x8448, 0x84b4, 0x8553, 0x8559, 0x856b, 0xfa1f, 0x85b0, 0xfa20,
- 0xfa21, 0x8807, 0x88f5, 0x8a12, 0x8a37, 0x8a79, 0x8aa7, 0x8abe,
- 0x8adf, 0xfa22, 0x8af6, 0x8b53, 0x8b7f, 0x8cf0, 0x8cf4, 0x8d12,
- 0x8d76, 0xfa23, 0x8ecf, 0xfa24, 0xfa25, 0x9067, 0x90de, 0xfa26,
- 0x9115, 0x9127, 0x91da, 0x91d7, 0x91de, 0x91ed, 0x91ee, 0x91e4,
- 0x91e5, 0x9206, 0x9210, 0x920a, 0x923a, 0x9240, 0x923c, 0x924e,
- 0x9259, 0x9251, 0x9239, 0x9267, 0x92a7, 0x9277, 0x9278, 0x92e7,
- 0x92d7, 0x92d9, 0x92d0, 0xfa27, 0x92d5, 0x92e0, 0x92d3, 0x9325,
- 0x9321, 0x92fb, 0xfa28, 0x931e, 0x92ff, 0x931d, 0x9302, 0x9370,
- 0x9357, 0x93a4, 0x93c6, 0x93de, 0x93f8, 0x9431, 0x9445, 0x9448,
- 0x9592, 0xf9dc, 0xfa29, 0x969d, 0x96af, 0x9733, 0x973b, 0x9743,
- 0x974d, 0x974f, 0x9751, 0x9755, 0x9857, 0x9865, 0xfa2a, 0xfa2b,
- 0x9927, 0xfa2c, 0x999e, 0x9a4e, 0x9ad9,
- /*0xfc40 -0xfc4b*/
- 0x9adc, 0x9b75, 0x9b72, 0x9b8f, 0x9bb1, 0x9bbb, 0x9c00, 0x9d70,
- 0x9d6b, 0xfa2d, 0x9e19, 0x9ed1, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
-};
-
-uint QJpUnicodeConv::sjisibmvdcToUnicode(uint h, uint l) const
-{
- if (((rule & IBM_VDC) || (rule & Microsoft_CP932)) && IsSjisIBMVDCChar1(h))
- return sjis208ibmvdc_unicode[((h - 0x00fa)*189 + (l-0x0040))];
- else
- return 0;
-}
-
-uint QJpUnicodeConv::unicodeToSjisibmvdc(uint h, uint l) const
-{
- if ((rule & IBM_VDC) || (rule & Microsoft_CP932)) {
- uint u = (h<<8) | l;
- //since there is no direct mapping, do a linear search
- for (uint i =0; i<sizeof(sjis208ibmvdc_unicode)/sizeof(short) ; i++) {
- //the table has zeros after 0xfc4b
- if (!sjis208ibmvdc_unicode[i])
- return 0;
- if (u==sjis208ibmvdc_unicode[i]){
- return (((0x00fa +(i/189))<<8) | (0x0040+(i%189)));
- }
- }
- }
- return 0;
-}
-
-static unsigned short const cp932_87_unicode[] = {
- /*0x8740 -0x879c*/
- 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
- 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x246f,
- 0x2470, 0x2471, 0x2472, 0x2473, 0x2160, 0x2161, 0x2162, 0x2163,
- 0x2164, 0x2165, 0x2166, 0x2167, 0x2168, 0x2169, 0x0000, 0x3349,
- 0x3314, 0x3322, 0x334d, 0x3318, 0x3327, 0x3303, 0x3336, 0x3351,
- 0x3357, 0x330d, 0x3326, 0x3323, 0x332b, 0x334a, 0x333b, 0x339c,
- 0x339d, 0x339e, 0x338e, 0x338f, 0x33c4, 0x33a1, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x337b, 0x0000,
- 0x301d, 0x301f, 0x2116, 0x33cd, 0x2121, 0x32a4, 0x32a5, 0x32a6,
- 0x32a7, 0x32a8, 0x3231, 0x3232, 0x3239, 0x337e, 0x337d, 0x337c,
- 0x2252, 0x2261, 0x222b, 0x222e, 0x2211, 0x221a, 0x22a5, 0x2220,
- 0x221f, 0x22bf, 0x2235, 0x2229, 0x222a
-};
-
-static unsigned short const cp932_ed_ee_unicode[] = {
- /*0xed40-0xedfc*/
- 0x7e8a, 0x891c, 0x9348, 0x9288, 0x84dc, 0x4fc9, 0x70bb, 0x6631,
- 0x68c8, 0x92f9, 0x66fb, 0x5f45, 0x4e28, 0x4ee1, 0x4efc, 0x4f00,
- 0x4f03, 0x4f39, 0x4f56, 0x4f92, 0x4f8a, 0x4f9a, 0x4f94, 0x4fcd,
- 0x5040, 0x5022, 0x4fff, 0x501e, 0x5046, 0x5070, 0x5042, 0x5094,
- 0x50f4, 0x50d8, 0x514a, 0x5164, 0x519d, 0x51be, 0x51ec, 0x5215,
- 0x529c, 0x52a6, 0x52c0, 0x52db, 0x5300, 0x5307, 0x5324, 0x5372,
- 0x5393, 0x53b2, 0x53dd, 0xfa0e, 0x549c, 0x548a, 0x54a9, 0x54ff,
- 0x5586, 0x5759, 0x5765, 0x57ac, 0x57c8, 0x57c7, 0xfa0f, 0x0000,
- 0xfa10, 0x589e, 0x58b2, 0x590b, 0x5953, 0x595b, 0x595d, 0x5963,
- 0x59a4, 0x59ba, 0x5b56, 0x5bc0, 0x752f, 0x5bd8, 0x5bec, 0x5c1e,
- 0x5ca6, 0x5cba, 0x5cf5, 0x5d27, 0x5d53, 0xfa11, 0x5d42, 0x5d6d,
- 0x5db8, 0x5db9, 0x5dd0, 0x5f21, 0x5f34, 0x5f67, 0x5fb7, 0x5fde,
- 0x605d, 0x6085, 0x608a, 0x60de, 0x60d5, 0x6120, 0x60f2, 0x6111,
- 0x6137, 0x6130, 0x6198, 0x6213, 0x62a6, 0x63f5, 0x6460, 0x649d,
- 0x64ce, 0x654e, 0x6600, 0x6615, 0x663b, 0x6609, 0x662e, 0x661e,
- 0x6624, 0x6665, 0x6657, 0x6659, 0xfa12, 0x6673, 0x6699, 0x66a0,
- 0x66b2, 0x66bf, 0x66fa, 0x670e, 0xf929, 0x6766, 0x67bb, 0x6852,
- 0x67c0, 0x6801, 0x6844, 0x68cf, 0xfa13, 0x6968, 0xfa14, 0x6998,
- 0x69e2, 0x6a30, 0x6a6b, 0x6a46, 0x6a73, 0x6a7e, 0x6ae2, 0x6ae4,
- 0x6bd6, 0x6c3f, 0x6c5c, 0x6c86, 0x6c6f, 0x6cda, 0x6d04, 0x6d87,
- 0x6d6f, 0x6d96, 0x6dac, 0x6dcf, 0x6df8, 0x6df2, 0x6dfc, 0x6e39,
- 0x6e5c, 0x6e27, 0x6e3c, 0x6ebf, 0x6f88, 0x6fb5, 0x6ff5, 0x7005,
- 0x7007, 0x7028, 0x7085, 0x70ab, 0x710f, 0x7104, 0x715c, 0x7146,
- 0x7147, 0xfa15, 0x71c1, 0x71fe, 0x72b1,
- /*0xee40-0xeefc*/
- 0x72be, 0x7324, 0xfa16, 0x7377, 0x73bd, 0x73c9, 0x73d6, 0x73e3,
- 0x73d2, 0x7407, 0x73f5, 0x7426, 0x742a, 0x7429, 0x742e, 0x7462,
- 0x7489, 0x749f, 0x7501, 0x756f, 0x7682, 0x769c, 0x769e, 0x769b,
- 0x76a6, 0xfa17, 0x7746, 0x52af, 0x7821, 0x784e, 0x7864, 0x787a,
- 0x7930, 0xfa18, 0xfa19, 0xfa1a, 0x7994, 0xfa1b, 0x799b, 0x7ad1,
- 0x7ae7, 0xfa1c, 0x7aeb, 0x7b9e, 0xfa1d, 0x7d48, 0x7d5c, 0x7db7,
- 0x7da0, 0x7dd6, 0x7e52, 0x7f47, 0x7fa1, 0xfa1e, 0x8301, 0x8362,
- 0x837f, 0x83c7, 0x83f6, 0x8448, 0x84b4, 0x8553, 0x8559, 0x0000,
- 0x856b, 0xfa1f, 0x85b0, 0xfa20, 0xfa21, 0x8807, 0x88f5, 0x8a12,
- 0x8a37, 0x8a79, 0x8aa7, 0x8abe, 0x8adf, 0xfa22, 0x8af6, 0x8b53,
- 0x8b7f, 0x8cf0, 0x8cf4, 0x8d12, 0x8d76, 0xfa23, 0x8ecf, 0xfa24,
- 0xfa25, 0x9067, 0x90de, 0xfa26, 0x9115, 0x9127, 0x91da, 0x91d7,
- 0x91de, 0x91ed, 0x91ee, 0x91e4, 0x91e5, 0x9206, 0x9210, 0x920a,
- 0x923a, 0x9240, 0x923c, 0x924e, 0x9259, 0x9251, 0x9239, 0x9267,
- 0x92a7, 0x9277, 0x9278, 0x92e7, 0x92d7, 0x92d9, 0x92d0, 0xfa27,
- 0x92d5, 0x92e0, 0x92d3, 0x9325, 0x9321, 0x92fb, 0xfa28, 0x931e,
- 0x92ff, 0x931d, 0x9302, 0x9370, 0x9357, 0x93a4, 0x93c6, 0x93de,
- 0x93f8, 0x9431, 0x9445, 0x9448, 0x9592, 0xf9dc, 0xfa29, 0x969d,
- 0x96af, 0x9733, 0x973b, 0x9743, 0x974d, 0x974f, 0x9751, 0x9755,
- 0x9857, 0x9865, 0xfa2a, 0xfa2b, 0x9927, 0xfa2c, 0x999e, 0x9a4e,
- 0x9ad9, 0x9adc, 0x9b75, 0x9b72, 0x9b8f, 0x9bb1, 0x9bbb, 0x9c00,
- 0x9d70, 0x9d6b, 0xfa2d, 0x9e19, 0x9ed1, 0x0000, 0x0000, 0x2170,
- 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178,
- 0x2179, 0xffe2, 0xffe4, 0xff07, 0xff02
-};
-
-uint QJpUnicodeConv::cp932ToUnicode(uint h, uint l) const
-{
- if (rule & Microsoft_CP932) {
- if (h == 0x0087 && (l >= 0x0040 && l <= 0x009c))
- return cp932_87_unicode[l-0x0040];
- else if ((h == 0x00ed || h == 0x00ee) && (l >= 0x0040 && l <= 0x00fc))
- return cp932_ed_ee_unicode[((h - 0x00ed)*189 + (l-0x0040))];
- }
- return 0;
-}
-
-uint QJpUnicodeConv::unicodeToCp932(uint h, uint l) const
-{
- if ((rule & Microsoft_CP932)) {
- uint u = (h<<8) | l;
- //since there is no direct mapping, do a linear search
- for (uint i =0; i<sizeof(cp932_87_unicode)/sizeof(short) ; i++) {
- //the table has zeros for some characters
- if (!cp932_87_unicode[i])
- return 0;
- if (u == cp932_87_unicode[i]){
- return ((0x0087<<8) | (0x0040+i));
- }
- }
- for (uint j =0; j<sizeof(cp932_ed_ee_unicode)/sizeof(short) ; j++) {
- if (!cp932_ed_ee_unicode[j])
- return 0;
- if (u==cp932_ed_ee_unicode[j]){
- return (((0x00ed +(j/189))<<8) | (0x0040+(j%189)));
- }
- }
- }
- return 0;
-}
-
-// and now for the inlines:
-
-/*! \fn uint QJpUnicodeConv::asciiToUnicode (uint ascii) const
-
-\internal
-*/
-
-/*! \fn uint QJpUnicodeConv::jisx0201ToUnicode (uint jis) const
-
-\internal
-*/
-
-/*! \fn uint QJpUnicodeConv::jisx0201LatinToUnicode (uint jis) const
-
-\internal
-*/
-
-/*! \fn uint QJpUnicodeConv::jisx0201KanaToUnicode (uint jis) const
-
-\internal
-*/
-
-/*! \fn uint QJpUnicodeConv::jisx0208ToUnicode (uint jis) const
-
-\internal
-*/
-
-/*! \fn uint QJpUnicodeConv::jisx0212ToUnicode (uint jis) const
-
-\internal
-*/
-
-/*! \fn uint QJpUnicodeConv::unicodeToAscii (uint unicode) const
-
-\internal
-*/
-
-/*! \fn uint QJpUnicodeConv::unicodeToJisx0201 (uint unicode) const
-
-\internal
-*/
-
-/*! \fn uint QJpUnicodeConv::unicodeToJisx0201Latin (uint unicode) const
-
-\internal
-*/
-
-/*! \fn uint QJpUnicodeConv::unicodeToJisx0201Kana (uint unicode) const
-
-\internal
-*/
-
-/*! \fn uint QJpUnicodeConv::unicodeToJisx0208 (uint unicode) const
-
-\internal
-*/
-
-/*! \fn uint QJpUnicodeConv::unicodeToJisx0212 (uint unicode) const
-
-\internal
-*/
-
-/*! \fn uint QJpUnicodeConv::sjisToUnicode (uint sjis) const
-
-\internal
-*/
-
-/*! \fn uint QJpUnicodeConv::unicodeToSjis (uint unicode) const
-
-\internal
-*/
-
-QT_END_NAMESPACE
diff --git a/src/plugins/codecs/jp/qjpunicode.h b/src/plugins/codecs/jp/qjpunicode.h
deleted file mode 100644
index 069f49a137..0000000000
--- a/src/plugins/codecs/jp/qjpunicode.h
+++ /dev/null
@@ -1,174 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-// Most of the code here was originally written by Serika Kurusugawa
-// a.k.a. Junji Takagi, and is included in Qt with the author's permission,
-// and the grateful thanks of the Qt team.
-
-/*
- * Copyright (C) 1999 Serika Kurusugawa, All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef QJPUNICODE_H
-#define QJPUNICODE_H
-
-#include <QtCore/qglobal.h>
-
-QT_BEGIN_NAMESPACE
-
-class QJpUnicodeConv {
-public:
- virtual ~QJpUnicodeConv() {}
- enum Rules {
- // "ASCII" is ANSI X.3.4-1986, a.k.a. US-ASCII here.
- Default = 0x0000,
-
- Unicode = 0x0001,
- Unicode_JISX0201 = 0x0001,
- Unicode_ASCII = 0x0002,
- JISX0221_JISX0201 = 0x0003,
- JISX0221_ASCII = 0x0004,
- Sun_JDK117 = 0x0005,
- Microsoft_CP932 = 0x0006,
-
- NEC_VDC = 0x0100, // NEC Vender Defined Char
- UDC = 0x0200, // User Defined Char
- IBM_VDC = 0x0400 // IBM Vender Defined Char
- };
- static QJpUnicodeConv *newConverter(int rule);
-
- virtual uint asciiToUnicode(uint h, uint l) const;
- /*virtual*/ uint jisx0201ToUnicode(uint h, uint l) const;
- virtual uint jisx0201LatinToUnicode(uint h, uint l) const;
- /*virtual*/ uint jisx0201KanaToUnicode(uint h, uint l) const;
- virtual uint jisx0208ToUnicode(uint h, uint l) const;
- virtual uint jisx0212ToUnicode(uint h, uint l) const;
-
- uint asciiToUnicode(uint ascii) const {
- return asciiToUnicode((ascii & 0xff00) >> 8, (ascii & 0x00ff));
- }
- uint jisx0201ToUnicode(uint jis) const {
- return jisx0201ToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff));
- }
- uint jisx0201LatinToUnicode(uint jis) const {
- return jisx0201LatinToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff));
- }
- uint jisx0201KanaToUnicode(uint jis) const {
- return jisx0201KanaToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff));
- }
- uint jisx0208ToUnicode(uint jis) const {
- return jisx0208ToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff));
- }
- uint jisx0212ToUnicode(uint jis) const {
- return jisx0212ToUnicode((jis & 0xff00) >> 8, (jis & 0x00ff));
- }
-
- virtual uint unicodeToAscii(uint h, uint l) const;
- /*virtual*/ uint unicodeToJisx0201(uint h, uint l) const;
- virtual uint unicodeToJisx0201Latin(uint h, uint l) const;
- /*virtual*/ uint unicodeToJisx0201Kana(uint h, uint l) const;
- virtual uint unicodeToJisx0208(uint h, uint l) const;
- virtual uint unicodeToJisx0212(uint h, uint l) const;
-
- uint unicodeToAscii(uint unicode) const {
- return unicodeToAscii((unicode & 0xff00) >> 8, (unicode & 0x00ff));
- }
- uint unicodeToJisx0201(uint unicode) const {
- return unicodeToJisx0201((unicode & 0xff00) >> 8, (unicode & 0x00ff));
- }
- uint unicodeToJisx0201Latin(uint unicode) const {
- return unicodeToJisx0201Latin((unicode & 0xff00) >> 8, (unicode & 0x00ff));
- }
- uint unicodeToJisx0201Kana(uint unicode) const {
- return unicodeToJisx0201Kana((unicode & 0xff00) >> 8, (unicode & 0x00ff));
- }
- uint unicodeToJisx0208(uint unicode) const {
- return unicodeToJisx0208((unicode & 0xff00) >> 8, (unicode & 0x00ff));
- }
- uint unicodeToJisx0212(uint unicode) const {
- return unicodeToJisx0212((unicode & 0xff00) >> 8, (unicode & 0x00ff));
- }
-
- uint sjisToUnicode(uint h, uint l) const;
- uint unicodeToSjis(uint h, uint l) const;
- uint sjisibmvdcToUnicode(uint h, uint l) const;
- uint unicodeToSjisibmvdc(uint h, uint l) const;
- uint cp932ToUnicode(uint h, uint l) const;
- uint unicodeToCp932(uint h, uint l) const;
-
- uint sjisToUnicode(uint sjis) const {
- return sjisToUnicode((sjis & 0xff00) >> 8, (sjis & 0x00ff));
- }
- uint unicodeToSjis(uint unicode) const {
- return unicodeToSjis((unicode & 0xff00) >> 8, (unicode & 0x00ff));
- }
-
-protected:
- explicit QJpUnicodeConv(int r) : rule(r) {}
-
-private:
- int rule;
-};
-
-QT_END_NAMESPACE
-
-#endif // QJPUNICODE_H
diff --git a/src/plugins/codecs/jp/qsjiscodec.cpp b/src/plugins/codecs/jp/qsjiscodec.cpp
deleted file mode 100644
index ac89b333c4..0000000000
--- a/src/plugins/codecs/jp/qsjiscodec.cpp
+++ /dev/null
@@ -1,229 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-// Most of the code here was originally written by Serika Kurusugawa
-// a.k.a. Junji Takagi, and is included in Qt with the author's permission,
-// and the grateful thanks of the Qt team.
-
-/*! \class QSjisCodec
- \reentrant
- \internal
-*/
-
-#include "qsjiscodec.h"
-#include "qlist.h"
-
-QT_BEGIN_NAMESPACE
-
-#ifndef QT_NO_TEXTCODEC
-enum {
- Esc = 0x1b
-};
-
-#define IsKana(c) (((c) >= 0xa1) && ((c) <= 0xdf))
-#define IsSjisChar1(c) ((((c) >= 0x81) && ((c) <= 0x9f)) || \
- (((c) >= 0xe0) && ((c) <= 0xfc)))
-#define IsSjisChar2(c) (((c) >= 0x40) && ((c) != 0x7f) && ((c) <= 0xfc))
-#define IsUserDefinedChar1(c) (((c) >= 0xf0) && ((c) <= 0xfc))
-
-#define QValidChar(u) ((u) ? QChar((ushort)(u)) : QChar(QChar::ReplacementCharacter))
-
-/*!
- Creates a Shift-JIS codec. Note that this is done automatically by
- the QApplication, you do not need construct your own.
-*/
-QSjisCodec::QSjisCodec() : conv(QJpUnicodeConv::newConverter(QJpUnicodeConv::Default))
-{
-}
-
-
-/*!
- Destroys the Shift-JIS codec.
-*/
-QSjisCodec::~QSjisCodec()
-{
- delete (QJpUnicodeConv*)conv;
- conv = 0;
-}
-
-
-QByteArray QSjisCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
-{
- char replacement = '?';
- if (state) {
- if (state->flags & ConvertInvalidToNull)
- replacement = 0;
- }
- int invalid = 0;
-
- int rlen = 2*len + 1;
- QByteArray rstr;
- rstr.resize(rlen);
- uchar* cursor = (uchar*)rstr.data();
- for (int i = 0; i < len; i++) {
- QChar ch = uc[i];
- uint j;
- if (ch.row() == 0x00 && ch.cell() < 0x80) {
- // ASCII
- *cursor++ = ch.cell();
- } else if ((j = conv->unicodeToJisx0201(ch.row(), ch.cell())) != 0) {
- // JIS X 0201 Latin or JIS X 0201 Kana
- *cursor++ = j;
- } else if ((j = conv->unicodeToSjis(ch.row(), ch.cell())) != 0) {
- // JIS X 0208
- *cursor++ = (j >> 8);
- *cursor++ = (j & 0xff);
- } else if ((j = conv->unicodeToSjisibmvdc(ch.row(), ch.cell())) != 0) {
- // JIS X 0208 IBM VDC
- *cursor++ = (j >> 8);
- *cursor++ = (j & 0xff);
- } else if ((j = conv->unicodeToCp932(ch.row(), ch.cell())) != 0) {
- // CP932 (for lead bytes 87, ee & ed)
- *cursor++ = (j >> 8);
- *cursor++ = (j & 0xff);
- } else if ((j = conv->unicodeToJisx0212(ch.row(), ch.cell())) != 0) {
- // JIS X 0212 (can't be encoded in ShiftJIS !)
- *cursor++ = 0x81; // white square
- *cursor++ = 0xa0; // white square
- } else {
- // Error
- *cursor++ = replacement;
- ++invalid;
- }
- }
- rstr.resize(cursor - (const uchar*)rstr.constData());
-
- if (state) {
- state->invalidChars += invalid;
- }
- return rstr;
-}
-
-QString QSjisCodec::convertToUnicode(const char* chars, int len, ConverterState *state) const
-{
- uchar buf[1] = {0};
- int nbuf = 0;
- QChar replacement = QChar::ReplacementCharacter;
- if (state) {
- if (state->flags & ConvertInvalidToNull)
- replacement = QChar::Null;
- nbuf = state->remainingChars;
- buf[0] = state->state_data[0];
- }
- int invalid = 0;
- uint u= 0;
- QString result;
- for (int i=0; i<len; i++) {
- uchar ch = chars[i];
- switch (nbuf) {
- case 0:
- if (ch < 0x80) {
- result += QValidChar(ch);
- } else if (IsKana(ch)) {
- // JIS X 0201 Latin or JIS X 0201 Kana
- u = conv->jisx0201ToUnicode(ch);
- result += QValidChar(u);
- } else if (IsSjisChar1(ch)) {
- // JIS X 0208
- buf[0] = ch;
- nbuf = 1;
- } else {
- // Invalid
- result += replacement;
- ++invalid;
- }
- break;
- case 1:
- // JIS X 0208
- if (IsSjisChar2(ch)) {
- if ((u = conv->sjisibmvdcToUnicode(buf[0], ch))) {
- result += QValidChar(u);
- } else if ((u = conv->cp932ToUnicode(buf[0], ch))) {
- result += QValidChar(u);
- }
- else if (IsUserDefinedChar1(buf[0])) {
- result += QChar::ReplacementCharacter;
- } else {
- u = conv->sjisToUnicode(buf[0], ch);
- result += QValidChar(u);
- }
- } else {
- // Invalid
- result += replacement;
- ++invalid;
- }
- nbuf = 0;
- break;
- }
- }
-
- if (state) {
- state->remainingChars = nbuf;
- state->state_data[0] = buf[0];
- state->invalidChars += invalid;
- }
- return result;
-}
-
-
-int QSjisCodec::_mibEnum()
-{
- return 17;
-}
-
-QByteArray QSjisCodec::_name()
-{
- return "Shift_JIS";
-}
-
-/*!
- Returns the codec's mime name.
-*/
-QList<QByteArray> QSjisCodec::_aliases()
-{
- QList<QByteArray> list;
- list << "SJIS" // Qt 3 compat
- << "MS_Kanji";
- return list;
-}
-#endif // QT_NO_TEXTCODEC
-
-QT_END_NAMESPACE
diff --git a/src/plugins/codecs/jp/qsjiscodec.h b/src/plugins/codecs/jp/qsjiscodec.h
deleted file mode 100644
index c56a103366..0000000000
--- a/src/plugins/codecs/jp/qsjiscodec.h
+++ /dev/null
@@ -1,106 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-// Most of the code here was originally written by Serika Kurusugawa
-// a.k.a. Junji Takagi, and is included in Qt with the author's permission,
-// and the grateful thanks of the Qt team.
-
-/*
- * Copyright (C) 1999 Serika Kurusugawa, All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef QSJISCODEC_H
-#define QSJISCODEC_H
-
-#include "qjpunicode.h"
-#include <QtCore/qtextcodec.h>
-#include <QtCore/qlist.h>
-
-QT_BEGIN_NAMESPACE
-
-#ifndef QT_NO_TEXTCODEC
-
-class QSjisCodec : public QTextCodec {
-public:
- static QByteArray _name();
- static QList<QByteArray> _aliases();
- static int _mibEnum();
-
- QByteArray name() const { return _name(); }
- QList<QByteArray> aliases() const { return _aliases(); }
- int mibEnum() const { return _mibEnum(); }
-
- QString convertToUnicode(const char *, int, ConverterState *) const;
- QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
-
- QSjisCodec();
- ~QSjisCodec();
-
-protected:
- const QJpUnicodeConv *conv;
-};
-
-#endif // QT_NO_TEXTCODEC
-
-QT_END_NAMESPACE
-
-#endif // QSJISCODEC_H
diff --git a/src/plugins/codecs/kr/cp949codetbl.h b/src/plugins/codecs/kr/cp949codetbl.h
deleted file mode 100644
index 25723c7999..0000000000
--- a/src/plugins/codecs/kr/cp949codetbl.h
+++ /dev/null
@@ -1,637 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-#ifndef CP949CODETBL_H
-#define CP494CODETBL_H
-
-static const unsigned short cp949_icode_to_unicode[] = {
-0xac02, 0xac03, 0xac05, 0xac06, 0xac0b, 0xac0c, 0xac0d, 0xac0e, 0xac0f, 0xac18, 0xac1e, 0xac1f, 0xac21, 0xac22, 0xac23,
-0xac25, 0xac26, 0xac27, 0xac28, 0xac29, 0xac2a, 0xac2b, 0xac2e, 0xac32, 0xac33, 0xac34, 0xac35, 0xac36, 0xac37, 0xac3a,
-0xac3b, 0xac3d, 0xac3e, 0xac3f, 0xac41, 0xac42, 0xac43, 0xac44, 0xac45, 0xac46, 0xac47, 0xac48, 0xac49, 0xac4a, 0xac4c,
-0xac4e, 0xac4f, 0xac50, 0xac51, 0xac52, 0xac53, 0xac55, 0xac56, 0xac57, 0xac59, 0xac5a, 0xac5b, 0xac5d, 0xac5e, 0xac5f,
-0xac60, 0xac61, 0xac62, 0xac63, 0xac64, 0xac65, 0xac66, 0xac67, 0xac68, 0xac69, 0xac6a, 0xac6b, 0xac6c, 0xac6d, 0xac6e,
-0xac6f, 0xac72, 0xac73, 0xac75, 0xac76, 0xac79, 0xac7b, 0xac7c, 0xac7d, 0xac7e, 0xac7f, 0xac82, 0xac87, 0xac88, 0xac8d,
-0xac8e, 0xac8f, 0xac91, 0xac92, 0xac93, 0xac95, 0xac96, 0xac97, 0xac98, 0xac99, 0xac9a, 0xac9b, 0xac9e, 0xaca2, 0xaca3,
-0xaca4, 0xaca5, 0xaca6, 0xaca7, 0xacab, 0xacad, 0xacae, 0xacb1, 0xacb2, 0xacb3, 0xacb4, 0xacb5, 0xacb6, 0xacb7, 0xacba,
-0xacbe, 0xacbf, 0xacc0, 0xacc2, 0xacc3, 0xacc5, 0xacc6, 0xacc7, 0xacc9, 0xacca, 0xaccb, 0xaccd, 0xacce, 0xaccf, 0xacd0,
-0xacd1, 0xacd2, 0xacd3, 0xacd4, 0xacd6, 0xacd8, 0xacd9, 0xacda, 0xacdb, 0xacdc, 0xacdd, 0xacde, 0xacdf, 0xace2, 0xace3,
-0xace5, 0xace6, 0xace9, 0xaceb, 0xaced, 0xacee, 0xacf2, 0xacf4, 0xacf7, 0xacf8, 0xacf9, 0xacfa, 0xacfb, 0xacfe, 0xacff,
-0xad01, 0xad02, 0xad03, 0xad05, 0xad07, 0xad08, 0xad09, 0xad0a, 0xad0b, 0xad0e, 0xad10, 0xad12, 0xad13, 0xad14, 0xad15,
-0xad16, 0xad17, 0xad19, 0xad1a, 0xad1b, 0xad1d, 0xad1e, 0xad1f, 0xad21, 0xad22, 0xad23, 0xad24, 0xad25, 0xad26, 0xad27,
-0xad28, 0xad2a, 0xad2b, 0xad2e, 0xad2f, 0xad30, 0xad31, 0xad32, 0xad33, 0xad36, 0xad37, 0xad39, 0xad3a, 0xad3b, 0xad3d,
-0xad3e, 0xad3f, 0xad40, 0xad41, 0xad42, 0xad43, 0xad46, 0xad48, 0xad4a, 0xad4b, 0xad4c, 0xad4d, 0xad4e, 0xad4f, 0xad51,
-0xad52, 0xad53, 0xad55, 0xad56, 0xad57, 0xad59, 0xad5a, 0xad5b, 0xad5c, 0xad5d, 0xad5e, 0xad5f, 0xad60, 0xad62, 0xad64,
-0xad65, 0xad66, 0xad67, 0xad68, 0xad69, 0xad6a, 0xad6b, 0xad6e, 0xad6f, 0xad71, 0xad72, 0xad77, 0xad78, 0xad79, 0xad7a,
-0xad7e, 0xad80, 0xad83, 0xad84, 0xad85, 0xad86, 0xad87, 0xad8a, 0xad8b, 0xad8d, 0xad8e, 0xad8f, 0xad91, 0xad92, 0xad93,
-0xad94, 0xad95, 0xad96, 0xad97, 0xad98, 0xad99, 0xad9a, 0xad9b, 0xad9e, 0xad9f, 0xada0, 0xada1, 0xada2, 0xada3, 0xada5,
-0xada6, 0xada7, 0xada8, 0xada9, 0xadaa, 0xadab, 0xadac, 0xadad, 0xadae, 0xadaf, 0xadb0, 0xadb1, 0xadb2, 0xadb3, 0xadb4,
-0xadb5, 0xadb6, 0xadb8, 0xadb9, 0xadba, 0xadbb, 0xadbc, 0xadbd, 0xadbe, 0xadbf, 0xadc2, 0xadc3, 0xadc5, 0xadc6, 0xadc7,
-0xadc9, 0xadca, 0xadcb, 0xadcc, 0xadcd, 0xadce, 0xadcf, 0xadd2, 0xadd4, 0xadd5, 0xadd6, 0xadd7, 0xadd8, 0xadd9, 0xadda,
-0xaddb, 0xaddd, 0xadde, 0xaddf, 0xade1, 0xade2, 0xade3, 0xade5, 0xade6, 0xade7, 0xade8, 0xade9, 0xadea, 0xadeb, 0xadec,
-0xaded, 0xadee, 0xadef, 0xadf0, 0xadf1, 0xadf2, 0xadf3, 0xadf4, 0xadf5, 0xadf6, 0xadf7, 0xadfa, 0xadfb, 0xadfd, 0xadfe,
-0xae02, 0xae03, 0xae04, 0xae05, 0xae06, 0xae07, 0xae0a, 0xae0c, 0xae0e, 0xae0f, 0xae10, 0xae11, 0xae12, 0xae13, 0xae15,
-0xae16, 0xae17, 0xae18, 0xae19, 0xae1a, 0xae1b, 0xae1c, 0xae1d, 0xae1e, 0xae1f, 0xae20, 0xae21, 0xae22, 0xae23, 0xae24,
-0xae25, 0xae26, 0xae27, 0xae28, 0xae29, 0xae2a, 0xae2b, 0xae2c, 0xae2d, 0xae2e, 0xae2f, 0xae32, 0xae33, 0xae35, 0xae36,
-0xae39, 0xae3b, 0xae3c, 0xae3d, 0xae3e, 0xae3f, 0xae42, 0xae44, 0xae47, 0xae48, 0xae49, 0xae4b, 0xae4f, 0xae51, 0xae52,
-0xae53, 0xae55, 0xae57, 0xae58, 0xae59, 0xae5a, 0xae5b, 0xae5e, 0xae62, 0xae63, 0xae64, 0xae66, 0xae67, 0xae6a, 0xae6b,
-0xae6d, 0xae6e, 0xae6f, 0xae71, 0xae72, 0xae73, 0xae74, 0xae75, 0xae76, 0xae77, 0xae7a, 0xae7e, 0xae7f, 0xae80, 0xae81,
-0xae82, 0xae83, 0xae86, 0xae87, 0xae88, 0xae89, 0xae8a, 0xae8b, 0xae8d, 0xae8e, 0xae8f, 0xae90, 0xae91, 0xae92, 0xae93,
-0xae94, 0xae95, 0xae96, 0xae97, 0xae98, 0xae99, 0xae9a, 0xae9b, 0xae9c, 0xae9d, 0xae9e, 0xae9f, 0xaea0, 0xaea1, 0xaea2,
-0xaea3, 0xaea4, 0xaea5, 0xaea6, 0xaea7, 0xaea8, 0xaea9, 0xaeaa, 0xaeab, 0xaeac, 0xaead, 0xaeae, 0xaeaf, 0xaeb0, 0xaeb1,
-0xaeb2, 0xaeb3, 0xaeb4, 0xaeb5, 0xaeb6, 0xaeb7, 0xaeb8, 0xaeb9, 0xaeba, 0xaebb, 0xaebf, 0xaec1, 0xaec2, 0xaec3, 0xaec5,
-0xaec6, 0xaec7, 0xaec8, 0xaec9, 0xaeca, 0xaecb, 0xaece, 0xaed2, 0xaed3, 0xaed4, 0xaed5, 0xaed6, 0xaed7, 0xaeda, 0xaedb,
-0xaedd, 0xaede, 0xaedf, 0xaee0, 0xaee1, 0xaee2, 0xaee3, 0xaee4, 0xaee5, 0xaee6, 0xaee7, 0xaee9, 0xaeea, 0xaeec, 0xaeee,
-0xaeef, 0xaef0, 0xaef1, 0xaef2, 0xaef3, 0xaef5, 0xaef6, 0xaef7, 0xaef9, 0xaefa, 0xaefb, 0xaefd, 0xaefe, 0xaeff, 0xaf00,
-0xaf01, 0xaf02, 0xaf03, 0xaf04, 0xaf05, 0xaf06, 0xaf09, 0xaf0a, 0xaf0b, 0xaf0c, 0xaf0e, 0xaf0f, 0xaf11, 0xaf12, 0xaf13,
-0xaf14, 0xaf15, 0xaf16, 0xaf17, 0xaf18, 0xaf19, 0xaf1a, 0xaf1b, 0xaf1c, 0xaf1d, 0xaf1e, 0xaf1f, 0xaf20, 0xaf21, 0xaf22,
-0xaf23, 0xaf24, 0xaf25, 0xaf26, 0xaf27, 0xaf28, 0xaf29, 0xaf2a, 0xaf2b, 0xaf2e, 0xaf2f, 0xaf31, 0xaf33, 0xaf35, 0xaf36,
-0xaf37, 0xaf38, 0xaf39, 0xaf3a, 0xaf3b, 0xaf3e, 0xaf40, 0xaf44, 0xaf45, 0xaf46, 0xaf47, 0xaf4a, 0xaf4b, 0xaf4c, 0xaf4d,
-0xaf4e, 0xaf4f, 0xaf51, 0xaf52, 0xaf53, 0xaf54, 0xaf55, 0xaf56, 0xaf57, 0xaf58, 0xaf59, 0xaf5a, 0xaf5b, 0xaf5e, 0xaf5f,
-0xaf60, 0xaf61, 0xaf62, 0xaf63, 0xaf66, 0xaf67, 0xaf68, 0xaf69, 0xaf6a, 0xaf6b, 0xaf6c, 0xaf6d, 0xaf6e, 0xaf6f, 0xaf70,
-0xaf71, 0xaf72, 0xaf73, 0xaf74, 0xaf75, 0xaf76, 0xaf77, 0xaf78, 0xaf7a, 0xaf7b, 0xaf7c, 0xaf7d, 0xaf7e, 0xaf7f, 0xaf81,
-0xaf82, 0xaf83, 0xaf85, 0xaf86, 0xaf87, 0xaf89, 0xaf8a, 0xaf8b, 0xaf8c, 0xaf8d, 0xaf8e, 0xaf8f, 0xaf92, 0xaf93, 0xaf94,
-0xaf96, 0xaf97, 0xaf98, 0xaf99, 0xaf9a, 0xaf9b, 0xaf9d, 0xaf9e, 0xaf9f, 0xafa0, 0xafa1, 0xafa2, 0xafa3, 0xafa4, 0xafa5,
-0xafa6, 0xafa7, 0xafa8, 0xafa9, 0xafaa, 0xafab, 0xafac, 0xafad, 0xafae, 0xafaf, 0xafb0, 0xafb1, 0xafb2, 0xafb3, 0xafb4,
-0xafb5, 0xafb6, 0xafb7, 0xafba, 0xafbb, 0xafbd, 0xafbe, 0xafbf, 0xafc1, 0xafc2, 0xafc3, 0xafc4, 0xafc5, 0xafc6, 0xafca,
-0xafcc, 0xafcf, 0xafd0, 0xafd1, 0xafd2, 0xafd3, 0xafd5, 0xafd6, 0xafd7, 0xafd8, 0xafd9, 0xafda, 0xafdb, 0xafdd, 0xafde,
-0xafdf, 0xafe0, 0xafe1, 0xafe2, 0xafe3, 0xafe4, 0xafe5, 0xafe6, 0xafe7, 0xafea, 0xafeb, 0xafec, 0xafed, 0xafee, 0xafef,
-0xaff2, 0xaff3, 0xaff5, 0xaff6, 0xaff7, 0xaff9, 0xaffa, 0xaffb, 0xaffc, 0xaffd, 0xaffe, 0xafff, 0xb002, 0xb003, 0xb005,
-0xb006, 0xb007, 0xb008, 0xb009, 0xb00a, 0xb00b, 0xb00d, 0xb00e, 0xb00f, 0xb011, 0xb012, 0xb013, 0xb015, 0xb016, 0xb017,
-0xb018, 0xb019, 0xb01a, 0xb01b, 0xb01e, 0xb01f, 0xb020, 0xb021, 0xb022, 0xb023, 0xb024, 0xb025, 0xb026, 0xb027, 0xb029,
-0xb02a, 0xb02b, 0xb02c, 0xb02d, 0xb02e, 0xb02f, 0xb030, 0xb031, 0xb032, 0xb033, 0xb034, 0xb035, 0xb036, 0xb037, 0xb038,
-0xb039, 0xb03a, 0xb03b, 0xb03c, 0xb03d, 0xb03e, 0xb03f, 0xb040, 0xb041, 0xb042, 0xb043, 0xb046, 0xb047, 0xb049, 0xb04b,
-0xb04d, 0xb04f, 0xb050, 0xb051, 0xb052, 0xb056, 0xb058, 0xb05a, 0xb05b, 0xb05c, 0xb05e, 0xb05f, 0xb060, 0xb061, 0xb062,
-0xb063, 0xb064, 0xb065, 0xb066, 0xb067, 0xb068, 0xb069, 0xb06a, 0xb06b, 0xb06c, 0xb06d, 0xb06e, 0xb06f, 0xb070, 0xb071,
-0xb072, 0xb073, 0xb074, 0xb075, 0xb076, 0xb077, 0xb078, 0xb079, 0xb07a, 0xb07b, 0xb07e, 0xb07f, 0xb081, 0xb082, 0xb083,
-0xb085, 0xb086, 0xb087, 0xb088, 0xb089, 0xb08a, 0xb08b, 0xb08e, 0xb090, 0xb092, 0xb093, 0xb094, 0xb095, 0xb096, 0xb097,
-0xb09b, 0xb09d, 0xb09e, 0xb0a3, 0xb0a4, 0xb0a5, 0xb0a6, 0xb0a7, 0xb0aa, 0xb0b0, 0xb0b2, 0xb0b6, 0xb0b7, 0xb0b9, 0xb0ba,
-0xb0bb, 0xb0bd, 0xb0be, 0xb0bf, 0xb0c0, 0xb0c1, 0xb0c2, 0xb0c3, 0xb0c6, 0xb0ca, 0xb0cb, 0xb0cc, 0xb0cd, 0xb0ce, 0xb0cf,
-0xb0d2, 0xb0d3, 0xb0d5, 0xb0d6, 0xb0d7, 0xb0d9, 0xb0da, 0xb0db, 0xb0dc, 0xb0dd, 0xb0de, 0xb0df, 0xb0e1, 0xb0e2, 0xb0e3,
-0xb0e4, 0xb0e6, 0xb0e7, 0xb0e8, 0xb0e9, 0xb0ea, 0xb0eb, 0xb0ec, 0xb0ed, 0xb0ee, 0xb0ef, 0xb0f0, 0xb0f1, 0xb0f2, 0xb0f3,
-0xb0f4, 0xb0f5, 0xb0f6, 0xb0f7, 0xb0f8, 0xb0f9, 0xb0fa, 0xb0fb, 0xb0fc, 0xb0fd, 0xb0fe, 0xb0ff, 0xb100, 0xb101, 0xb102,
-0xb103, 0xb104, 0xb105, 0xb106, 0xb107, 0xb10a, 0xb10d, 0xb10e, 0xb10f, 0xb111, 0xb114, 0xb115, 0xb116, 0xb117, 0xb11a,
-0xb11e, 0xb11f, 0xb120, 0xb121, 0xb122, 0xb126, 0xb127, 0xb129, 0xb12a, 0xb12b, 0xb12d, 0xb12e, 0xb12f, 0xb130, 0xb131,
-0xb132, 0xb133, 0xb136, 0xb13a, 0xb13b, 0xb13c, 0xb13d, 0xb13e, 0xb13f, 0xb142, 0xb143, 0xb145, 0xb146, 0xb147, 0xb149,
-0xb14a, 0xb14b, 0xb14c, 0xb14d, 0xb14e, 0xb14f, 0xb152, 0xb153, 0xb156, 0xb157, 0xb159, 0xb15a, 0xb15b, 0xb15d, 0xb15e,
-0xb15f, 0xb161, 0xb162, 0xb163, 0xb164, 0xb165, 0xb166, 0xb167, 0xb168, 0xb169, 0xb16a, 0xb16b, 0xb16c, 0xb16d, 0xb16e,
-0xb16f, 0xb170, 0xb171, 0xb172, 0xb173, 0xb174, 0xb175, 0xb176, 0xb177, 0xb17a, 0xb17b, 0xb17d, 0xb17e, 0xb17f, 0xb181,
-0xb183, 0xb184, 0xb185, 0xb186, 0xb187, 0xb18a, 0xb18c, 0xb18e, 0xb18f, 0xb190, 0xb191, 0xb195, 0xb196, 0xb197, 0xb199,
-0xb19a, 0xb19b, 0xb19d, 0xb19e, 0xb19f, 0xb1a0, 0xb1a1, 0xb1a2, 0xb1a3, 0xb1a4, 0xb1a5, 0xb1a6, 0xb1a7, 0xb1a9, 0xb1aa,
-0xb1ab, 0xb1ac, 0xb1ad, 0xb1ae, 0xb1af, 0xb1b0, 0xb1b1, 0xb1b2, 0xb1b3, 0xb1b4, 0xb1b5, 0xb1b6, 0xb1b7, 0xb1b8, 0xb1b9,
-0xb1ba, 0xb1bb, 0xb1bc, 0xb1bd, 0xb1be, 0xb1bf, 0xb1c0, 0xb1c1, 0xb1c2, 0xb1c3, 0xb1c4, 0xb1c5, 0xb1c6, 0xb1c7, 0xb1c8,
-0xb1c9, 0xb1ca, 0xb1cb, 0xb1cd, 0xb1ce, 0xb1cf, 0xb1d1, 0xb1d2, 0xb1d3, 0xb1d5, 0xb1d6, 0xb1d7, 0xb1d8, 0xb1d9, 0xb1da,
-0xb1db, 0xb1de, 0xb1e0, 0xb1e1, 0xb1e2, 0xb1e3, 0xb1e4, 0xb1e5, 0xb1e6, 0xb1e7, 0xb1ea, 0xb1eb, 0xb1ed, 0xb1ee, 0xb1ef,
-0xb1f1, 0xb1f2, 0xb1f3, 0xb1f4, 0xb1f5, 0xb1f6, 0xb1f7, 0xb1f8, 0xb1fa, 0xb1fc, 0xb1fe, 0xb1ff, 0xb200, 0xb201, 0xb202,
-0xb203, 0xb206, 0xb207, 0xb209, 0xb20a, 0xb20d, 0xb20e, 0xb20f, 0xb210, 0xb211, 0xb212, 0xb213, 0xb216, 0xb218, 0xb21a,
-0xb21b, 0xb21c, 0xb21d, 0xb21e, 0xb21f, 0xb221, 0xb222, 0xb223, 0xb224, 0xb225, 0xb226, 0xb227, 0xb228, 0xb229, 0xb22a,
-0xb22b, 0xb22c, 0xb22d, 0xb22e, 0xb22f, 0xb230, 0xb231, 0xb232, 0xb233, 0xb235, 0xb236, 0xb237, 0xb238, 0xb239, 0xb23a,
-0xb23b, 0xb23d, 0xb23e, 0xb23f, 0xb240, 0xb241, 0xb242, 0xb243, 0xb244, 0xb245, 0xb246, 0xb247, 0xb248, 0xb249, 0xb24a,
-0xb24b, 0xb24c, 0xb24d, 0xb24e, 0xb24f, 0xb250, 0xb251, 0xb252, 0xb253, 0xb254, 0xb255, 0xb256, 0xb257, 0xb259, 0xb25a,
-0xb25b, 0xb25d, 0xb25e, 0xb25f, 0xb261, 0xb262, 0xb263, 0xb264, 0xb265, 0xb266, 0xb267, 0xb26a, 0xb26b, 0xb26c, 0xb26d,
-0xb26e, 0xb26f, 0xb270, 0xb271, 0xb272, 0xb273, 0xb276, 0xb277, 0xb278, 0xb279, 0xb27a, 0xb27b, 0xb27d, 0xb27e, 0xb27f,
-0xb280, 0xb281, 0xb282, 0xb283, 0xb286, 0xb287, 0xb288, 0xb28a, 0xb28b, 0xb28c, 0xb28d, 0xb28e, 0xb28f, 0xb292, 0xb293,
-0xb295, 0xb296, 0xb297, 0xb29b, 0xb29c, 0xb29d, 0xb29e, 0xb29f, 0xb2a2, 0xb2a4, 0xb2a7, 0xb2a8, 0xb2a9, 0xb2ab, 0xb2ad,
-0xb2ae, 0xb2af, 0xb2b1, 0xb2b2, 0xb2b3, 0xb2b5, 0xb2b6, 0xb2b7, 0xb2b8, 0xb2b9, 0xb2ba, 0xb2bb, 0xb2bc, 0xb2bd, 0xb2be,
-0xb2bf, 0xb2c0, 0xb2c1, 0xb2c2, 0xb2c3, 0xb2c4, 0xb2c5, 0xb2c6, 0xb2c7, 0xb2ca, 0xb2cb, 0xb2cd, 0xb2ce, 0xb2cf, 0xb2d1,
-0xb2d3, 0xb2d4, 0xb2d5, 0xb2d6, 0xb2d7, 0xb2da, 0xb2dc, 0xb2de, 0xb2df, 0xb2e0, 0xb2e1, 0xb2e3, 0xb2e7, 0xb2e9, 0xb2ea,
-0xb2f0, 0xb2f1, 0xb2f2, 0xb2f6, 0xb2fc, 0xb2fd, 0xb2fe, 0xb302, 0xb303, 0xb305, 0xb306, 0xb307, 0xb309, 0xb30a, 0xb30b,
-0xb30c, 0xb30d, 0xb30e, 0xb30f, 0xb312, 0xb316, 0xb317, 0xb318, 0xb319, 0xb31a, 0xb31b, 0xb31d, 0xb31e, 0xb31f, 0xb320,
-0xb321, 0xb322, 0xb323, 0xb324, 0xb325, 0xb326, 0xb327, 0xb328, 0xb329, 0xb32a, 0xb32b, 0xb32c, 0xb32d, 0xb32e, 0xb32f,
-0xb330, 0xb331, 0xb332, 0xb333, 0xb334, 0xb335, 0xb336, 0xb337, 0xb338, 0xb339, 0xb33a, 0xb33b, 0xb33c, 0xb33d, 0xb33e,
-0xb33f, 0xb340, 0xb341, 0xb342, 0xb343, 0xb344, 0xb345, 0xb346, 0xb347, 0xb348, 0xb349, 0xb34a, 0xb34b, 0xb34c, 0xb34d,
-0xb34e, 0xb34f, 0xb350, 0xb351, 0xb352, 0xb353, 0xb357, 0xb359, 0xb35a, 0xb35d, 0xb360, 0xb361, 0xb362, 0xb363, 0xb366,
-0xb368, 0xb36a, 0xb36c, 0xb36d, 0xb36f, 0xb372, 0xb373, 0xb375, 0xb376, 0xb377, 0xb379, 0xb37a, 0xb37b, 0xb37c, 0xb37d,
-0xb37e, 0xb37f, 0xb382, 0xb386, 0xb387, 0xb388, 0xb389, 0xb38a, 0xb38b, 0xb38d, 0xb38e, 0xb38f, 0xb391, 0xb392, 0xb393,
-0xb395, 0xb396, 0xb397, 0xb398, 0xb399, 0xb39a, 0xb39b, 0xb39c, 0xb39d, 0xb39e, 0xb39f, 0xb3a2, 0xb3a3, 0xb3a4, 0xb3a5,
-0xb3a6, 0xb3a7, 0xb3a9, 0xb3aa, 0xb3ab, 0xb3ad, 0xb3ae, 0xb3af, 0xb3b0, 0xb3b1, 0xb3b2, 0xb3b3, 0xb3b4, 0xb3b5, 0xb3b6,
-0xb3b7, 0xb3b8, 0xb3b9, 0xb3ba, 0xb3bb, 0xb3bc, 0xb3bd, 0xb3be, 0xb3bf, 0xb3c0, 0xb3c1, 0xb3c2, 0xb3c3, 0xb3c6, 0xb3c7,
-0xb3c9, 0xb3ca, 0xb3cd, 0xb3cf, 0xb3d1, 0xb3d2, 0xb3d3, 0xb3d6, 0xb3d8, 0xb3da, 0xb3dc, 0xb3de, 0xb3df, 0xb3e1, 0xb3e2,
-0xb3e3, 0xb3e5, 0xb3e6, 0xb3e7, 0xb3e9, 0xb3ea, 0xb3eb, 0xb3ec, 0xb3ed, 0xb3ee, 0xb3ef, 0xb3f0, 0xb3f1, 0xb3f2, 0xb3f3,
-0xb3f4, 0xb3f5, 0xb3f6, 0xb3f7, 0xb3f8, 0xb3f9, 0xb3fa, 0xb3fb, 0xb3fd, 0xb3fe, 0xb3ff, 0xb400, 0xb401, 0xb402, 0xb403,
-0xb404, 0xb405, 0xb406, 0xb407, 0xb408, 0xb409, 0xb40a, 0xb40b, 0xb40c, 0xb40d, 0xb40e, 0xb40f, 0xb411, 0xb412, 0xb413,
-0xb414, 0xb415, 0xb416, 0xb417, 0xb419, 0xb41a, 0xb41b, 0xb41d, 0xb41e, 0xb41f, 0xb421, 0xb422, 0xb423, 0xb424, 0xb425,
-0xb426, 0xb427, 0xb42a, 0xb42c, 0xb42d, 0xb42e, 0xb42f, 0xb430, 0xb431, 0xb432, 0xb433, 0xb435, 0xb436, 0xb437, 0xb438,
-0xb439, 0xb43a, 0xb43b, 0xb43c, 0xb43d, 0xb43e, 0xb43f, 0xb440, 0xb441, 0xb442, 0xb443, 0xb444, 0xb445, 0xb446, 0xb447,
-0xb448, 0xb449, 0xb44a, 0xb44b, 0xb44c, 0xb44d, 0xb44e, 0xb44f, 0xb452, 0xb453, 0xb455, 0xb456, 0xb457, 0xb459, 0xb45a,
-0xb45b, 0xb45c, 0xb45d, 0xb45e, 0xb45f, 0xb462, 0xb464, 0xb466, 0xb467, 0xb468, 0xb469, 0xb46a, 0xb46b, 0xb46d, 0xb46e,
-0xb46f, 0xb470, 0xb471, 0xb472, 0xb473, 0xb474, 0xb475, 0xb476, 0xb477, 0xb478, 0xb479, 0xb47a, 0xb47b, 0xb47c, 0xb47d,
-0xb47e, 0xb47f, 0xb481, 0xb482, 0xb483, 0xb484, 0xb485, 0xb486, 0xb487, 0xb489, 0xb48a, 0xb48b, 0xb48c, 0xb48d, 0xb48e,
-0xb48f, 0xb490, 0xb491, 0xb492, 0xb493, 0xb494, 0xb495, 0xb496, 0xb497, 0xb498, 0xb499, 0xb49a, 0xb49b, 0xb49c, 0xb49e,
-0xb49f, 0xb4a0, 0xb4a1, 0xb4a2, 0xb4a3, 0xb4a5, 0xb4a6, 0xb4a7, 0xb4a9, 0xb4aa, 0xb4ab, 0xb4ad, 0xb4ae, 0xb4af, 0xb4b0,
-0xb4b1, 0xb4b2, 0xb4b3, 0xb4b4, 0xb4b6, 0xb4b8, 0xb4ba, 0xb4bb, 0xb4bc, 0xb4bd, 0xb4be, 0xb4bf, 0xb4c1, 0xb4c2, 0xb4c3,
-0xb4c5, 0xb4c6, 0xb4c7, 0xb4c9, 0xb4ca, 0xb4cb, 0xb4cc, 0xb4cd, 0xb4ce, 0xb4cf, 0xb4d1, 0xb4d2, 0xb4d3, 0xb4d4, 0xb4d6,
-0xb4d7, 0xb4d8, 0xb4d9, 0xb4da, 0xb4db, 0xb4de, 0xb4df, 0xb4e1, 0xb4e2, 0xb4e5, 0xb4e7, 0xb4e8, 0xb4e9, 0xb4ea, 0xb4eb,
-0xb4ee, 0xb4f0, 0xb4f2, 0xb4f3, 0xb4f4, 0xb4f5, 0xb4f6, 0xb4f7, 0xb4f9, 0xb4fa, 0xb4fb, 0xb4fc, 0xb4fd, 0xb4fe, 0xb4ff,
-0xb500, 0xb501, 0xb502, 0xb503, 0xb504, 0xb505, 0xb506, 0xb507, 0xb508, 0xb509, 0xb50a, 0xb50b, 0xb50c, 0xb50d, 0xb50e,
-0xb50f, 0xb510, 0xb511, 0xb512, 0xb513, 0xb516, 0xb517, 0xb519, 0xb51a, 0xb51d, 0xb51e, 0xb51f, 0xb520, 0xb521, 0xb522,
-0xb523, 0xb526, 0xb52b, 0xb52c, 0xb52d, 0xb52e, 0xb52f, 0xb532, 0xb533, 0xb535, 0xb536, 0xb537, 0xb539, 0xb53a, 0xb53b,
-0xb53c, 0xb53d, 0xb53e, 0xb53f, 0xb542, 0xb546, 0xb547, 0xb548, 0xb549, 0xb54a, 0xb54e, 0xb54f, 0xb551, 0xb552, 0xb553,
-0xb555, 0xb556, 0xb557, 0xb558, 0xb559, 0xb55a, 0xb55b, 0xb55e, 0xb562, 0xb563, 0xb564, 0xb565, 0xb566, 0xb567, 0xb568,
-0xb569, 0xb56a, 0xb56b, 0xb56c, 0xb56d, 0xb56e, 0xb56f, 0xb570, 0xb571, 0xb572, 0xb573, 0xb574, 0xb575, 0xb576, 0xb577,
-0xb578, 0xb579, 0xb57a, 0xb57b, 0xb57c, 0xb57d, 0xb57e, 0xb57f, 0xb580, 0xb581, 0xb582, 0xb583, 0xb584, 0xb585, 0xb586,
-0xb587, 0xb588, 0xb589, 0xb58a, 0xb58b, 0xb58c, 0xb58d, 0xb58e, 0xb58f, 0xb590, 0xb591, 0xb592, 0xb593, 0xb594, 0xb595,
-0xb596, 0xb597, 0xb598, 0xb599, 0xb59a, 0xb59b, 0xb59c, 0xb59d, 0xb59e, 0xb59f, 0xb5a2, 0xb5a3, 0xb5a5, 0xb5a6, 0xb5a7,
-0xb5a9, 0xb5ac, 0xb5ad, 0xb5ae, 0xb5af, 0xb5b2, 0xb5b6, 0xb5b7, 0xb5b8, 0xb5b9, 0xb5ba, 0xb5be, 0xb5bf, 0xb5c1, 0xb5c2,
-0xb5c3, 0xb5c5, 0xb5c6, 0xb5c7, 0xb5c8, 0xb5c9, 0xb5ca, 0xb5cb, 0xb5ce, 0xb5d2, 0xb5d3, 0xb5d4, 0xb5d5, 0xb5d6, 0xb5d7,
-0xb5d9, 0xb5da, 0xb5db, 0xb5dc, 0xb5dd, 0xb5de, 0xb5df, 0xb5e0, 0xb5e1, 0xb5e2, 0xb5e3, 0xb5e4, 0xb5e5, 0xb5e6, 0xb5e7,
-0xb5e8, 0xb5e9, 0xb5ea, 0xb5eb, 0xb5ed, 0xb5ee, 0xb5ef, 0xb5f0, 0xb5f1, 0xb5f2, 0xb5f3, 0xb5f4, 0xb5f5, 0xb5f6, 0xb5f7,
-0xb5f8, 0xb5f9, 0xb5fa, 0xb5fb, 0xb5fc, 0xb5fd, 0xb5fe, 0xb5ff, 0xb600, 0xb601, 0xb602, 0xb603, 0xb604, 0xb605, 0xb606,
-0xb607, 0xb608, 0xb609, 0xb60a, 0xb60b, 0xb60c, 0xb60d, 0xb60e, 0xb60f, 0xb612, 0xb613, 0xb615, 0xb616, 0xb617, 0xb619,
-0xb61a, 0xb61b, 0xb61c, 0xb61d, 0xb61e, 0xb61f, 0xb620, 0xb621, 0xb622, 0xb623, 0xb624, 0xb626, 0xb627, 0xb628, 0xb629,
-0xb62a, 0xb62b, 0xb62d, 0xb62e, 0xb62f, 0xb630, 0xb631, 0xb632, 0xb633, 0xb635, 0xb636, 0xb637, 0xb638, 0xb639, 0xb63a,
-0xb63b, 0xb63c, 0xb63d, 0xb63e, 0xb63f, 0xb640, 0xb641, 0xb642, 0xb643, 0xb644, 0xb645, 0xb646, 0xb647, 0xb649, 0xb64a,
-0xb64b, 0xb64c, 0xb64d, 0xb64e, 0xb64f, 0xb650, 0xb651, 0xb652, 0xb653, 0xb654, 0xb655, 0xb656, 0xb657, 0xb658, 0xb659,
-0xb65a, 0xb65b, 0xb65c, 0xb65d, 0xb65e, 0xb65f, 0xb660, 0xb661, 0xb662, 0xb663, 0xb665, 0xb666, 0xb667, 0xb669, 0xb66a,
-0xb66b, 0xb66c, 0xb66d, 0xb66e, 0xb66f, 0xb670, 0xb671, 0xb672, 0xb673, 0xb674, 0xb675, 0xb676, 0xb677, 0xb678, 0xb679,
-0xb67a, 0xb67b, 0xb67c, 0xb67d, 0xb67e, 0xb67f, 0xb680, 0xb681, 0xb682, 0xb683, 0xb684, 0xb685, 0xb686, 0xb687, 0xb688,
-0xb689, 0xb68a, 0xb68b, 0xb68c, 0xb68d, 0xb68e, 0xb68f, 0xb690, 0xb691, 0xb692, 0xb693, 0xb694, 0xb695, 0xb696, 0xb697,
-0xb698, 0xb699, 0xb69a, 0xb69b, 0xb69e, 0xb69f, 0xb6a1, 0xb6a2, 0xb6a3, 0xb6a5, 0xb6a6, 0xb6a7, 0xb6a8, 0xb6a9, 0xb6aa,
-0xb6ad, 0xb6ae, 0xb6af, 0xb6b0, 0xb6b2, 0xb6b3, 0xb6b4, 0xb6b5, 0xb6b6, 0xb6b7, 0xb6b8, 0xb6b9, 0xb6ba, 0xb6bb, 0xb6bc,
-0xb6bd, 0xb6be, 0xb6bf, 0xb6c0, 0xb6c1, 0xb6c2, 0xb6c3, 0xb6c4, 0xb6c5, 0xb6c6, 0xb6c7, 0xb6c8, 0xb6c9, 0xb6ca, 0xb6cb,
-0xb6cc, 0xb6cd, 0xb6ce, 0xb6cf, 0xb6d0, 0xb6d1, 0xb6d2, 0xb6d3, 0xb6d5, 0xb6d6, 0xb6d7, 0xb6d8, 0xb6d9, 0xb6da, 0xb6db,
-0xb6dc, 0xb6dd, 0xb6de, 0xb6df, 0xb6e0, 0xb6e1, 0xb6e2, 0xb6e3, 0xb6e4, 0xb6e5, 0xb6e6, 0xb6e7, 0xb6e8, 0xb6e9, 0xb6ea,
-0xb6eb, 0xb6ec, 0xb6ed, 0xb6ee, 0xb6ef, 0xb6f1, 0xb6f2, 0xb6f3, 0xb6f5, 0xb6f6, 0xb6f7, 0xb6f9, 0xb6fa, 0xb6fb, 0xb6fc,
-0xb6fd, 0xb6fe, 0xb6ff, 0xb702, 0xb703, 0xb704, 0xb706, 0xb707, 0xb708, 0xb709, 0xb70a, 0xb70b, 0xb70c, 0xb70d, 0xb70e,
-0xb70f, 0xb710, 0xb711, 0xb712, 0xb713, 0xb714, 0xb715, 0xb716, 0xb717, 0xb718, 0xb719, 0xb71a, 0xb71b, 0xb71c, 0xb71d,
-0xb71e, 0xb71f, 0xb720, 0xb721, 0xb722, 0xb723, 0xb724, 0xb725, 0xb726, 0xb727, 0xb72a, 0xb72b, 0xb72d, 0xb72e, 0xb731,
-0xb732, 0xb733, 0xb734, 0xb735, 0xb736, 0xb737, 0xb73a, 0xb73c, 0xb73d, 0xb73e, 0xb73f, 0xb740, 0xb741, 0xb742, 0xb743,
-0xb745, 0xb746, 0xb747, 0xb749, 0xb74a, 0xb74b, 0xb74d, 0xb74e, 0xb74f, 0xb750, 0xb751, 0xb752, 0xb753, 0xb756, 0xb757,
-0xb758, 0xb759, 0xb75a, 0xb75b, 0xb75c, 0xb75d, 0xb75e, 0xb75f, 0xb761, 0xb762, 0xb763, 0xb765, 0xb766, 0xb767, 0xb769,
-0xb76a, 0xb76b, 0xb76c, 0xb76d, 0xb76e, 0xb76f, 0xb772, 0xb774, 0xb776, 0xb777, 0xb778, 0xb779, 0xb77a, 0xb77b, 0xb77e,
-0xb77f, 0xb781, 0xb782, 0xb783, 0xb785, 0xb786, 0xb787, 0xb788, 0xb789, 0xb78a, 0xb78b, 0xb78e, 0xb793, 0xb794, 0xb795,
-0xb79a, 0xb79b, 0xb79d, 0xb79e, 0xb79f, 0xb7a1, 0xb7a2, 0xb7a3, 0xb7a4, 0xb7a5, 0xb7a6, 0xb7a7, 0xb7aa, 0xb7ae, 0xb7af,
-0xb7b0, 0xb7b1, 0xb7b2, 0xb7b3, 0xb7b6, 0xb7b7, 0xb7b9, 0xb7ba, 0xb7bb, 0xb7bc, 0xb7bd, 0xb7be, 0xb7bf, 0xb7c0, 0xb7c1,
-0xb7c2, 0xb7c3, 0xb7c4, 0xb7c5, 0xb7c6, 0xb7c8, 0xb7ca, 0xb7cb, 0xb7cc, 0xb7cd, 0xb7ce, 0xb7cf, 0xb7d0, 0xb7d1, 0xb7d2,
-0xb7d3, 0xb7d4, 0xb7d5, 0xb7d6, 0xb7d7, 0xb7d8, 0xb7d9, 0xb7da, 0xb7db, 0xb7dc, 0xb7dd, 0xb7de, 0xb7df, 0xb7e0, 0xb7e1,
-0xb7e2, 0xb7e3, 0xb7e4, 0xb7e5, 0xb7e6, 0xb7e7, 0xb7e8, 0xb7e9, 0xb7ea, 0xb7eb, 0xb7ee, 0xb7ef, 0xb7f1, 0xb7f2, 0xb7f3,
-0xb7f5, 0xb7f6, 0xb7f7, 0xb7f8, 0xb7f9, 0xb7fa, 0xb7fb, 0xb7fe, 0xb802, 0xb803, 0xb804, 0xb805, 0xb806, 0xb80a, 0xb80b,
-0xb80d, 0xb80e, 0xb80f, 0xb811, 0xb812, 0xb813, 0xb814, 0xb815, 0xb816, 0xb817, 0xb81a, 0xb81c, 0xb81e, 0xb81f, 0xb820,
-0xb821, 0xb822, 0xb823, 0xb826, 0xb827, 0xb829, 0xb82a, 0xb82b, 0xb82d, 0xb82e, 0xb82f, 0xb830, 0xb831, 0xb832, 0xb833,
-0xb836, 0xb83a, 0xb83b, 0xb83c, 0xb83d, 0xb83e, 0xb83f, 0xb841, 0xb842, 0xb843, 0xb845, 0xb846, 0xb847, 0xb848, 0xb849,
-0xb84a, 0xb84b, 0xb84c, 0xb84d, 0xb84e, 0xb84f, 0xb850, 0xb852, 0xb854, 0xb855, 0xb856, 0xb857, 0xb858, 0xb859, 0xb85a,
-0xb85b, 0xb85e, 0xb85f, 0xb861, 0xb862, 0xb863, 0xb865, 0xb866, 0xb867, 0xb868, 0xb869, 0xb86a, 0xb86b, 0xb86e, 0xb870,
-0xb872, 0xb873, 0xb874, 0xb875, 0xb876, 0xb877, 0xb879, 0xb87a, 0xb87b, 0xb87d, 0xb87e, 0xb87f, 0xb880, 0xb881, 0xb882,
-0xb883, 0xb884, 0xb885, 0xb886, 0xb887, 0xb888, 0xb889, 0xb88a, 0xb88b, 0xb88c, 0xb88e, 0xb88f, 0xb890, 0xb891, 0xb892,
-0xb893, 0xb894, 0xb895, 0xb896, 0xb897, 0xb898, 0xb899, 0xb89a, 0xb89b, 0xb89c, 0xb89d, 0xb89e, 0xb89f, 0xb8a0, 0xb8a1,
-0xb8a2, 0xb8a3, 0xb8a4, 0xb8a5, 0xb8a6, 0xb8a7, 0xb8a9, 0xb8aa, 0xb8ab, 0xb8ac, 0xb8ad, 0xb8ae, 0xb8af, 0xb8b1, 0xb8b2,
-0xb8b3, 0xb8b5, 0xb8b6, 0xb8b7, 0xb8b9, 0xb8ba, 0xb8bb, 0xb8bc, 0xb8bd, 0xb8be, 0xb8bf, 0xb8c2, 0xb8c4, 0xb8c6, 0xb8c7,
-0xb8c8, 0xb8c9, 0xb8ca, 0xb8cb, 0xb8cd, 0xb8ce, 0xb8cf, 0xb8d1, 0xb8d2, 0xb8d3, 0xb8d5, 0xb8d6, 0xb8d7, 0xb8d8, 0xb8d9,
-0xb8da, 0xb8db, 0xb8dc, 0xb8de, 0xb8e0, 0xb8e2, 0xb8e3, 0xb8e4, 0xb8e5, 0xb8e6, 0xb8e7, 0xb8ea, 0xb8eb, 0xb8ed, 0xb8ee,
-0xb8ef, 0xb8f1, 0xb8f2, 0xb8f3, 0xb8f4, 0xb8f5, 0xb8f6, 0xb8f7, 0xb8fa, 0xb8fc, 0xb8fe, 0xb8ff, 0xb900, 0xb901, 0xb902,
-0xb903, 0xb905, 0xb906, 0xb907, 0xb908, 0xb909, 0xb90a, 0xb90b, 0xb90c, 0xb90d, 0xb90e, 0xb90f, 0xb910, 0xb911, 0xb912,
-0xb913, 0xb914, 0xb915, 0xb916, 0xb917, 0xb919, 0xb91a, 0xb91b, 0xb91c, 0xb91d, 0xb91e, 0xb91f, 0xb921, 0xb922, 0xb923,
-0xb924, 0xb925, 0xb926, 0xb927, 0xb928, 0xb929, 0xb92a, 0xb92b, 0xb92c, 0xb92d, 0xb92e, 0xb92f, 0xb930, 0xb931, 0xb932,
-0xb933, 0xb934, 0xb935, 0xb936, 0xb937, 0xb938, 0xb939, 0xb93a, 0xb93b, 0xb93e, 0xb93f, 0xb941, 0xb942, 0xb943, 0xb945,
-0xb946, 0xb947, 0xb948, 0xb949, 0xb94a, 0xb94b, 0xb94d, 0xb94e, 0xb950, 0xb952, 0xb953, 0xb954, 0xb955, 0xb956, 0xb957,
-0xb95a, 0xb95b, 0xb95d, 0xb95e, 0xb95f, 0xb961, 0xb962, 0xb963, 0xb964, 0xb965, 0xb966, 0xb967, 0xb96a, 0xb96c, 0xb96e,
-0xb96f, 0xb970, 0xb971, 0xb972, 0xb973, 0xb976, 0xb977, 0xb979, 0xb97a, 0xb97b, 0xb97d, 0xb97e, 0xb97f, 0xb980, 0xb981,
-0xb982, 0xb983, 0xb986, 0xb988, 0xb98b, 0xb98c, 0xb98f, 0xb990, 0xb991, 0xb992, 0xb993, 0xb994, 0xb995, 0xb996, 0xb997,
-0xb998, 0xb999, 0xb99a, 0xb99b, 0xb99c, 0xb99d, 0xb99e, 0xb99f, 0xb9a0, 0xb9a1, 0xb9a2, 0xb9a3, 0xb9a4, 0xb9a5, 0xb9a6,
-0xb9a7, 0xb9a8, 0xb9a9, 0xb9aa, 0xb9ab, 0xb9ae, 0xb9af, 0xb9b1, 0xb9b2, 0xb9b3, 0xb9b5, 0xb9b6, 0xb9b7, 0xb9b8, 0xb9b9,
-0xb9ba, 0xb9bb, 0xb9be, 0xb9c0, 0xb9c2, 0xb9c3, 0xb9c4, 0xb9c5, 0xb9c6, 0xb9c7, 0xb9ca, 0xb9cb, 0xb9cd, 0xb9d3, 0xb9d4,
-0xb9d5, 0xb9d6, 0xb9d7, 0xb9da, 0xb9dc, 0xb9df, 0xb9e0, 0xb9e2, 0xb9e6, 0xb9e7, 0xb9e9, 0xb9ea, 0xb9eb, 0xb9ed, 0xb9ee,
-0xb9ef, 0xb9f0, 0xb9f1, 0xb9f2, 0xb9f3, 0xb9f6, 0xb9fb, 0xb9fc, 0xb9fd, 0xb9fe, 0xb9ff, 0xba02, 0xba03, 0xba04, 0xba05,
-0xba06, 0xba07, 0xba09, 0xba0a, 0xba0b, 0xba0c, 0xba0d, 0xba0e, 0xba0f, 0xba10, 0xba11, 0xba12, 0xba13, 0xba14, 0xba16,
-0xba17, 0xba18, 0xba19, 0xba1a, 0xba1b, 0xba1c, 0xba1d, 0xba1e, 0xba1f, 0xba20, 0xba21, 0xba22, 0xba23, 0xba24, 0xba25,
-0xba26, 0xba27, 0xba28, 0xba29, 0xba2a, 0xba2b, 0xba2c, 0xba2d, 0xba2e, 0xba2f, 0xba30, 0xba31, 0xba32, 0xba33, 0xba34,
-0xba35, 0xba36, 0xba37, 0xba3a, 0xba3b, 0xba3d, 0xba3e, 0xba3f, 0xba41, 0xba43, 0xba44, 0xba45, 0xba46, 0xba47, 0xba4a,
-0xba4c, 0xba4f, 0xba50, 0xba51, 0xba52, 0xba56, 0xba57, 0xba59, 0xba5a, 0xba5b, 0xba5d, 0xba5e, 0xba5f, 0xba60, 0xba61,
-0xba62, 0xba63, 0xba66, 0xba6a, 0xba6b, 0xba6c, 0xba6d, 0xba6e, 0xba6f, 0xba72, 0xba73, 0xba75, 0xba76, 0xba77, 0xba79,
-0xba7a, 0xba7b, 0xba7c, 0xba7d, 0xba7e, 0xba7f, 0xba80, 0xba81, 0xba82, 0xba86, 0xba88, 0xba89, 0xba8a, 0xba8b, 0xba8d,
-0xba8e, 0xba8f, 0xba90, 0xba91, 0xba92, 0xba93, 0xba94, 0xba95, 0xba96, 0xba97, 0xba98, 0xba99, 0xba9a, 0xba9b, 0xba9c,
-0xba9d, 0xba9e, 0xba9f, 0xbaa0, 0xbaa1, 0xbaa2, 0xbaa3, 0xbaa4, 0xbaa5, 0xbaa6, 0xbaa7, 0xbaaa, 0xbaad, 0xbaae, 0xbaaf,
-0xbab1, 0xbab3, 0xbab4, 0xbab5, 0xbab6, 0xbab7, 0xbaba, 0xbabc, 0xbabe, 0xbabf, 0xbac0, 0xbac1, 0xbac2, 0xbac3, 0xbac5,
-0xbac6, 0xbac7, 0xbac9, 0xbaca, 0xbacb, 0xbacc, 0xbacd, 0xbace, 0xbacf, 0xbad0, 0xbad1, 0xbad2, 0xbad3, 0xbad4, 0xbad5,
-0xbad6, 0xbad7, 0xbada, 0xbadb, 0xbadc, 0xbadd, 0xbade, 0xbadf, 0xbae0, 0xbae1, 0xbae2, 0xbae3, 0xbae4, 0xbae5, 0xbae6,
-0xbae7, 0xbae8, 0xbae9, 0xbaea, 0xbaeb, 0xbaec, 0xbaed, 0xbaee, 0xbaef, 0xbaf0, 0xbaf1, 0xbaf2, 0xbaf3, 0xbaf4, 0xbaf5,
-0xbaf6, 0xbaf7, 0xbaf8, 0xbaf9, 0xbafa, 0xbafb, 0xbafd, 0xbafe, 0xbaff, 0xbb01, 0xbb02, 0xbb03, 0xbb05, 0xbb06, 0xbb07,
-0xbb08, 0xbb09, 0xbb0a, 0xbb0b, 0xbb0c, 0xbb0e, 0xbb10, 0xbb12, 0xbb13, 0xbb14, 0xbb15, 0xbb16, 0xbb17, 0xbb19, 0xbb1a,
-0xbb1b, 0xbb1d, 0xbb1e, 0xbb1f, 0xbb21, 0xbb22, 0xbb23, 0xbb24, 0xbb25, 0xbb26, 0xbb27, 0xbb28, 0xbb2a, 0xbb2c, 0xbb2d,
-0xbb2e, 0xbb2f, 0xbb30, 0xbb31, 0xbb32, 0xbb33, 0xbb37, 0xbb39, 0xbb3a, 0xbb3f, 0xbb40, 0xbb41, 0xbb42, 0xbb43, 0xbb46,
-0xbb48, 0xbb4a, 0xbb4b, 0xbb4c, 0xbb4e, 0xbb51, 0xbb52, 0xbb53, 0xbb55, 0xbb56, 0xbb57, 0xbb59, 0xbb5a, 0xbb5b, 0xbb5c,
-0xbb5d, 0xbb5e, 0xbb5f, 0xbb60, 0xbb62, 0xbb64, 0xbb65, 0xbb66, 0xbb67, 0xbb68, 0xbb69, 0xbb6a, 0xbb6b, 0xbb6d, 0xbb6e,
-0xbb6f, 0xbb70, 0xbb71, 0xbb72, 0xbb73, 0xbb74, 0xbb75, 0xbb76, 0xbb77, 0xbb78, 0xbb79, 0xbb7a, 0xbb7b, 0xbb7c, 0xbb7d,
-0xbb7e, 0xbb7f, 0xbb80, 0xbb81, 0xbb82, 0xbb83, 0xbb84, 0xbb85, 0xbb86, 0xbb87, 0xbb89, 0xbb8a, 0xbb8b, 0xbb8d, 0xbb8e,
-0xbb8f, 0xbb91, 0xbb92, 0xbb93, 0xbb94, 0xbb95, 0xbb96, 0xbb97, 0xbb98, 0xbb99, 0xbb9a, 0xbb9b, 0xbb9c, 0xbb9d, 0xbb9e,
-0xbb9f, 0xbba0, 0xbba1, 0xbba2, 0xbba3, 0xbba5, 0xbba6, 0xbba7, 0xbba9, 0xbbaa, 0xbbab, 0xbbad, 0xbbae, 0xbbaf, 0xbbb0,
-0xbbb1, 0xbbb2, 0xbbb3, 0xbbb5, 0xbbb6, 0xbbb8, 0xbbb9, 0xbbba, 0xbbbb, 0xbbbc, 0xbbbd, 0xbbbe, 0xbbbf, 0xbbc1, 0xbbc2,
-0xbbc3, 0xbbc5, 0xbbc6, 0xbbc7, 0xbbc9, 0xbbca, 0xbbcb, 0xbbcc, 0xbbcd, 0xbbce, 0xbbcf, 0xbbd1, 0xbbd2, 0xbbd4, 0xbbd5,
-0xbbd6, 0xbbd7, 0xbbd8, 0xbbd9, 0xbbda, 0xbbdb, 0xbbdc, 0xbbdd, 0xbbde, 0xbbdf, 0xbbe0, 0xbbe1, 0xbbe2, 0xbbe3, 0xbbe4,
-0xbbe5, 0xbbe6, 0xbbe7, 0xbbe8, 0xbbe9, 0xbbea, 0xbbeb, 0xbbec, 0xbbed, 0xbbee, 0xbbef, 0xbbf0, 0xbbf1, 0xbbf2, 0xbbf3,
-0xbbf4, 0xbbf5, 0xbbf6, 0xbbf7, 0xbbfa, 0xbbfb, 0xbbfd, 0xbbfe, 0xbc01, 0xbc03, 0xbc04, 0xbc05, 0xbc06, 0xbc07, 0xbc0a,
-0xbc0e, 0xbc10, 0xbc12, 0xbc13, 0xbc19, 0xbc1a, 0xbc20, 0xbc21, 0xbc22, 0xbc23, 0xbc26, 0xbc28, 0xbc2a, 0xbc2b, 0xbc2c,
-0xbc2e, 0xbc2f, 0xbc32, 0xbc33, 0xbc35, 0xbc36, 0xbc37, 0xbc39, 0xbc3a, 0xbc3b, 0xbc3c, 0xbc3d, 0xbc3e, 0xbc3f, 0xbc42,
-0xbc46, 0xbc47, 0xbc48, 0xbc4a, 0xbc4b, 0xbc4e, 0xbc4f, 0xbc51, 0xbc52, 0xbc53, 0xbc54, 0xbc55, 0xbc56, 0xbc57, 0xbc58,
-0xbc59, 0xbc5a, 0xbc5b, 0xbc5c, 0xbc5e, 0xbc5f, 0xbc60, 0xbc61, 0xbc62, 0xbc63, 0xbc64, 0xbc65, 0xbc66, 0xbc67, 0xbc68,
-0xbc69, 0xbc6a, 0xbc6b, 0xbc6c, 0xbc6d, 0xbc6e, 0xbc6f, 0xbc70, 0xbc71, 0xbc72, 0xbc73, 0xbc74, 0xbc75, 0xbc76, 0xbc77,
-0xbc78, 0xbc79, 0xbc7a, 0xbc7b, 0xbc7c, 0xbc7d, 0xbc7e, 0xbc7f, 0xbc80, 0xbc81, 0xbc82, 0xbc83, 0xbc86, 0xbc87, 0xbc89,
-0xbc8a, 0xbc8d, 0xbc8f, 0xbc90, 0xbc91, 0xbc92, 0xbc93, 0xbc96, 0xbc98, 0xbc9b, 0xbc9c, 0xbc9d, 0xbc9e, 0xbc9f, 0xbca2,
-0xbca3, 0xbca5, 0xbca6, 0xbca9, 0xbcaa, 0xbcab, 0xbcac, 0xbcad, 0xbcae, 0xbcaf, 0xbcb2, 0xbcb6, 0xbcb7, 0xbcb8, 0xbcb9,
-0xbcba, 0xbcbb, 0xbcbe, 0xbcbf, 0xbcc1, 0xbcc2, 0xbcc3, 0xbcc5, 0xbcc6, 0xbcc7, 0xbcc8, 0xbcc9, 0xbcca, 0xbccb, 0xbccc,
-0xbcce, 0xbcd2, 0xbcd3, 0xbcd4, 0xbcd6, 0xbcd7, 0xbcd9, 0xbcda, 0xbcdb, 0xbcdd, 0xbcde, 0xbcdf, 0xbce0, 0xbce1, 0xbce2,
-0xbce3, 0xbce4, 0xbce5, 0xbce6, 0xbce7, 0xbce8, 0xbce9, 0xbcea, 0xbceb, 0xbcec, 0xbced, 0xbcee, 0xbcef, 0xbcf0, 0xbcf1,
-0xbcf2, 0xbcf3, 0xbcf7, 0xbcf9, 0xbcfa, 0xbcfb, 0xbcfd, 0xbcfe, 0xbcff, 0xbd00, 0xbd01, 0xbd02, 0xbd03, 0xbd06, 0xbd08,
-0xbd0a, 0xbd0b, 0xbd0c, 0xbd0d, 0xbd0e, 0xbd0f, 0xbd11, 0xbd12, 0xbd13, 0xbd15, 0xbd16, 0xbd17, 0xbd18, 0xbd19, 0xbd1a,
-0xbd1b, 0xbd1c, 0xbd1d, 0xbd1e, 0xbd1f, 0xbd20, 0xbd21, 0xbd22, 0xbd23, 0xbd25, 0xbd26, 0xbd27, 0xbd28, 0xbd29, 0xbd2a,
-0xbd2b, 0xbd2d, 0xbd2e, 0xbd2f, 0xbd30, 0xbd31, 0xbd32, 0xbd33, 0xbd34, 0xbd35, 0xbd36, 0xbd37, 0xbd38, 0xbd39, 0xbd3a,
-0xbd3b, 0xbd3c, 0xbd3d, 0xbd3e, 0xbd3f, 0xbd41, 0xbd42, 0xbd43, 0xbd44, 0xbd45, 0xbd46, 0xbd47, 0xbd4a, 0xbd4b, 0xbd4d,
-0xbd4e, 0xbd4f, 0xbd51, 0xbd52, 0xbd53, 0xbd54, 0xbd55, 0xbd56, 0xbd57, 0xbd5a, 0xbd5b, 0xbd5c, 0xbd5d, 0xbd5e, 0xbd5f,
-0xbd60, 0xbd61, 0xbd62, 0xbd63, 0xbd65, 0xbd66, 0xbd67, 0xbd69, 0xbd6a, 0xbd6b, 0xbd6c, 0xbd6d, 0xbd6e, 0xbd6f, 0xbd70,
-0xbd71, 0xbd72, 0xbd73, 0xbd74, 0xbd75, 0xbd76, 0xbd77, 0xbd78, 0xbd79, 0xbd7a, 0xbd7b, 0xbd7c, 0xbd7d, 0xbd7e, 0xbd7f,
-0xbd82, 0xbd83, 0xbd85, 0xbd86, 0xbd8b, 0xbd8c, 0xbd8d, 0xbd8e, 0xbd8f, 0xbd92, 0xbd94, 0xbd96, 0xbd97, 0xbd98, 0xbd9b,
-0xbd9d, 0xbd9e, 0xbd9f, 0xbda0, 0xbda1, 0xbda2, 0xbda3, 0xbda5, 0xbda6, 0xbda7, 0xbda8, 0xbda9, 0xbdaa, 0xbdab, 0xbdac,
-0xbdad, 0xbdae, 0xbdaf, 0xbdb1, 0xbdb2, 0xbdb3, 0xbdb4, 0xbdb5, 0xbdb6, 0xbdb7, 0xbdb9, 0xbdba, 0xbdbb, 0xbdbc, 0xbdbd,
-0xbdbe, 0xbdbf, 0xbdc0, 0xbdc1, 0xbdc2, 0xbdc3, 0xbdc4, 0xbdc5, 0xbdc6, 0xbdc7, 0xbdc8, 0xbdc9, 0xbdca, 0xbdcb, 0xbdcc,
-0xbdcd, 0xbdce, 0xbdcf, 0xbdd0, 0xbdd1, 0xbdd2, 0xbdd3, 0xbdd6, 0xbdd7, 0xbdd9, 0xbdda, 0xbddb, 0xbddd, 0xbdde, 0xbddf,
-0xbde0, 0xbde1, 0xbde2, 0xbde3, 0xbde4, 0xbde5, 0xbde6, 0xbde7, 0xbde8, 0xbdea, 0xbdeb, 0xbdec, 0xbded, 0xbdee, 0xbdef,
-0xbdf1, 0xbdf2, 0xbdf3, 0xbdf5, 0xbdf6, 0xbdf7, 0xbdf9, 0xbdfa, 0xbdfb, 0xbdfc, 0xbdfd, 0xbdfe, 0xbdff, 0xbe01, 0xbe02,
-0xbe04, 0xbe06, 0xbe07, 0xbe08, 0xbe09, 0xbe0a, 0xbe0b, 0xbe0e, 0xbe0f, 0xbe11, 0xbe12, 0xbe13, 0xbe15, 0xbe16, 0xbe17,
-0xbe18, 0xbe19, 0xbe1a, 0xbe1b, 0xbe1e, 0xbe20, 0xbe21, 0xbe22, 0xbe23, 0xbe24, 0xbe25, 0xbe26, 0xbe27, 0xbe28, 0xbe29,
-0xbe2a, 0xbe2b, 0xbe2c, 0xbe2d, 0xbe2e, 0xbe2f, 0xbe30, 0xbe31, 0xbe32, 0xbe33, 0xbe34, 0xbe35, 0xbe36, 0xbe37, 0xbe38,
-0xbe39, 0xbe3a, 0xbe3b, 0xbe3c, 0xbe3d, 0xbe3e, 0xbe3f, 0xbe40, 0xbe41, 0xbe42, 0xbe43, 0xbe46, 0xbe47, 0xbe49, 0xbe4a,
-0xbe4b, 0xbe4d, 0xbe4f, 0xbe50, 0xbe51, 0xbe52, 0xbe53, 0xbe56, 0xbe58, 0xbe5c, 0xbe5d, 0xbe5e, 0xbe5f, 0xbe62, 0xbe63,
-0xbe65, 0xbe66, 0xbe67, 0xbe69, 0xbe6b, 0xbe6c, 0xbe6d, 0xbe6e, 0xbe6f, 0xbe72, 0xbe76, 0xbe77, 0xbe78, 0xbe79, 0xbe7a,
-0xbe7e, 0xbe7f, 0xbe81, 0xbe82, 0xbe83, 0xbe85, 0xbe86, 0xbe87, 0xbe88, 0xbe89, 0xbe8a, 0xbe8b, 0xbe8e, 0xbe92, 0xbe93,
-0xbe94, 0xbe95, 0xbe96, 0xbe97, 0xbe9a, 0xbe9b, 0xbe9c, 0xbe9d, 0xbe9e, 0xbe9f, 0xbea0, 0xbea1, 0xbea2, 0xbea3, 0xbea4,
-0xbea5, 0xbea6, 0xbea7, 0xbea9, 0xbeaa, 0xbeab, 0xbeac, 0xbead, 0xbeae, 0xbeaf, 0xbeb0, 0xbeb1, 0xbeb2, 0xbeb3, 0xbeb4,
-0xbeb5, 0xbeb6, 0xbeb7, 0xbeb8, 0xbeb9, 0xbeba, 0xbebb, 0xbebc, 0xbebd, 0xbebe, 0xbebf, 0xbec0, 0xbec1, 0xbec2, 0xbec3,
-0xbec4, 0xbec5, 0xbec6, 0xbec7, 0xbec8, 0xbec9, 0xbeca, 0xbecb, 0xbecc, 0xbecd, 0xbece, 0xbecf, 0xbed2, 0xbed3, 0xbed5,
-0xbed6, 0xbed9, 0xbeda, 0xbedb, 0xbedc, 0xbedd, 0xbede, 0xbedf, 0xbee1, 0xbee2, 0xbee6, 0xbee7, 0xbee8, 0xbee9, 0xbeea,
-0xbeeb, 0xbeed, 0xbeee, 0xbeef, 0xbef0, 0xbef1, 0xbef2, 0xbef3, 0xbef4, 0xbef5, 0xbef6, 0xbef7, 0xbef8, 0xbef9, 0xbefa,
-0xbefb, 0xbefc, 0xbefd, 0xbefe, 0xbeff, 0xbf00, 0xbf02, 0xbf03, 0xbf04, 0xbf05, 0xbf06, 0xbf07, 0xbf0a, 0xbf0b, 0xbf0c,
-0xbf0d, 0xbf0e, 0xbf0f, 0xbf10, 0xbf11, 0xbf12, 0xbf13, 0xbf14, 0xbf15, 0xbf16, 0xbf17, 0xbf1a, 0xbf1e, 0xbf1f, 0xbf20,
-0xbf21, 0xbf22, 0xbf23, 0xbf24, 0xbf25, 0xbf26, 0xbf27, 0xbf28, 0xbf29, 0xbf2a, 0xbf2b, 0xbf2c, 0xbf2d, 0xbf2e, 0xbf2f,
-0xbf30, 0xbf31, 0xbf32, 0xbf33, 0xbf34, 0xbf35, 0xbf36, 0xbf37, 0xbf38, 0xbf39, 0xbf3a, 0xbf3b, 0xbf3c, 0xbf3d, 0xbf3e,
-0xbf3f, 0xbf42, 0xbf43, 0xbf45, 0xbf46, 0xbf47, 0xbf49, 0xbf4a, 0xbf4b, 0xbf4c, 0xbf4d, 0xbf4e, 0xbf4f, 0xbf52, 0xbf53,
-0xbf54, 0xbf56, 0xbf57, 0xbf58, 0xbf59, 0xbf5a, 0xbf5b, 0xbf5c, 0xbf5d, 0xbf5e, 0xbf5f, 0xbf60, 0xbf61, 0xbf62, 0xbf63,
-0xbf64, 0xbf65, 0xbf66, 0xbf67, 0xbf68, 0xbf69, 0xbf6a, 0xbf6b, 0xbf6c, 0xbf6d, 0xbf6e, 0xbf6f, 0xbf70, 0xbf71, 0xbf72,
-0xbf73, 0xbf74, 0xbf75, 0xbf76, 0xbf77, 0xbf78, 0xbf79, 0xbf7a, 0xbf7b, 0xbf7c, 0xbf7d, 0xbf7e, 0xbf7f, 0xbf80, 0xbf81,
-0xbf82, 0xbf83, 0xbf84, 0xbf85, 0xbf86, 0xbf87, 0xbf88, 0xbf89, 0xbf8a, 0xbf8b, 0xbf8c, 0xbf8d, 0xbf8e, 0xbf8f, 0xbf90,
-0xbf91, 0xbf92, 0xbf93, 0xbf95, 0xbf96, 0xbf97, 0xbf98, 0xbf99, 0xbf9a, 0xbf9b, 0xbf9c, 0xbf9d, 0xbf9e, 0xbf9f, 0xbfa0,
-0xbfa1, 0xbfa2, 0xbfa3, 0xbfa4, 0xbfa5, 0xbfa6, 0xbfa7, 0xbfa8, 0xbfa9, 0xbfaa, 0xbfab, 0xbfac, 0xbfad, 0xbfae, 0xbfaf,
-0xbfb1, 0xbfb2, 0xbfb3, 0xbfb4, 0xbfb5, 0xbfb6, 0xbfb7, 0xbfb8, 0xbfb9, 0xbfba, 0xbfbb, 0xbfbc, 0xbfbd, 0xbfbe, 0xbfbf,
-0xbfc0, 0xbfc1, 0xbfc2, 0xbfc3, 0xbfc4, 0xbfc6, 0xbfc7, 0xbfc8, 0xbfc9, 0xbfca, 0xbfcb, 0xbfce, 0xbfcf, 0xbfd1, 0xbfd2,
-0xbfd3, 0xbfd5, 0xbfd6, 0xbfd7, 0xbfd8, 0xbfd9, 0xbfda, 0xbfdb, 0xbfdd, 0xbfde, 0xbfe0, 0xbfe2, 0xbfe3, 0xbfe4, 0xbfe5,
-0xbfe6, 0xbfe7, 0xbfe8, 0xbfe9, 0xbfea, 0xbfeb, 0xbfec, 0xbfed, 0xbfee, 0xbfef, 0xbff0, 0xbff1, 0xbff2, 0xbff3, 0xbff4,
-0xbff5, 0xbff6, 0xbff7, 0xbff8, 0xbff9, 0xbffa, 0xbffb, 0xbffc, 0xbffd, 0xbffe, 0xbfff, 0xc000, 0xc001, 0xc002, 0xc003,
-0xc004, 0xc005, 0xc006, 0xc007, 0xc008, 0xc009, 0xc00a, 0xc00b, 0xc00c, 0xc00d, 0xc00e, 0xc00f, 0xc010, 0xc011, 0xc012,
-0xc013, 0xc014, 0xc015, 0xc016, 0xc017, 0xc018, 0xc019, 0xc01a, 0xc01b, 0xc01c, 0xc01d, 0xc01e, 0xc01f, 0xc020, 0xc021,
-0xc022, 0xc023, 0xc024, 0xc025, 0xc026, 0xc027, 0xc028, 0xc029, 0xc02a, 0xc02b, 0xc02c, 0xc02d, 0xc02e, 0xc02f, 0xc030,
-0xc031, 0xc032, 0xc033, 0xc034, 0xc035, 0xc036, 0xc037, 0xc038, 0xc039, 0xc03a, 0xc03b, 0xc03d, 0xc03e, 0xc03f, 0xc040,
-0xc041, 0xc042, 0xc043, 0xc044, 0xc045, 0xc046, 0xc047, 0xc048, 0xc049, 0xc04a, 0xc04b, 0xc04c, 0xc04d, 0xc04e, 0xc04f,
-0xc050, 0xc052, 0xc053, 0xc054, 0xc055, 0xc056, 0xc057, 0xc059, 0xc05a, 0xc05b, 0xc05d, 0xc05e, 0xc05f, 0xc061, 0xc062,
-0xc063, 0xc064, 0xc065, 0xc066, 0xc067, 0xc06a, 0xc06b, 0xc06c, 0xc06d, 0xc06e, 0xc06f, 0xc070, 0xc071, 0xc072, 0xc073,
-0xc074, 0xc075, 0xc076, 0xc077, 0xc078, 0xc079, 0xc07a, 0xc07b, 0xc07c, 0xc07d, 0xc07e, 0xc07f, 0xc080, 0xc081, 0xc082,
-0xc083, 0xc084, 0xc085, 0xc086, 0xc087, 0xc088, 0xc089, 0xc08a, 0xc08b, 0xc08c, 0xc08d, 0xc08e, 0xc08f, 0xc092, 0xc093,
-0xc095, 0xc096, 0xc097, 0xc099, 0xc09a, 0xc09b, 0xc09c, 0xc09d, 0xc09e, 0xc09f, 0xc0a2, 0xc0a4, 0xc0a6, 0xc0a7, 0xc0a8,
-0xc0a9, 0xc0aa, 0xc0ab, 0xc0ae, 0xc0b1, 0xc0b2, 0xc0b7, 0xc0b8, 0xc0b9, 0xc0ba, 0xc0bb, 0xc0be, 0xc0c2, 0xc0c3, 0xc0c4,
-0xc0c6, 0xc0c7, 0xc0ca, 0xc0cb, 0xc0cd, 0xc0ce, 0xc0cf, 0xc0d1, 0xc0d2, 0xc0d3, 0xc0d4, 0xc0d5, 0xc0d6, 0xc0d7, 0xc0da,
-0xc0de, 0xc0df, 0xc0e0, 0xc0e1, 0xc0e2, 0xc0e3, 0xc0e6, 0xc0e7, 0xc0e9, 0xc0ea, 0xc0eb, 0xc0ed, 0xc0ee, 0xc0ef, 0xc0f0,
-0xc0f1, 0xc0f2, 0xc0f3, 0xc0f6, 0xc0f8, 0xc0fa, 0xc0fb, 0xc0fc, 0xc0fd, 0xc0fe, 0xc0ff, 0xc101, 0xc102, 0xc103, 0xc105,
-0xc106, 0xc107, 0xc109, 0xc10a, 0xc10b, 0xc10c, 0xc10d, 0xc10e, 0xc10f, 0xc111, 0xc112, 0xc113, 0xc114, 0xc116, 0xc117,
-0xc118, 0xc119, 0xc11a, 0xc11b, 0xc121, 0xc122, 0xc125, 0xc128, 0xc129, 0xc12a, 0xc12b, 0xc12e, 0xc132, 0xc133, 0xc134,
-0xc135, 0xc137, 0xc13a, 0xc13b, 0xc13d, 0xc13e, 0xc13f, 0xc141, 0xc142, 0xc143, 0xc144, 0xc145, 0xc146, 0xc147, 0xc14a,
-0xc14e, 0xc14f, 0xc150, 0xc151, 0xc152, 0xc153, 0xc156, 0xc157, 0xc159, 0xc15a, 0xc15b, 0xc15d, 0xc15e, 0xc15f, 0xc160,
-0xc161, 0xc162, 0xc163, 0xc166, 0xc16a, 0xc16b, 0xc16c, 0xc16d, 0xc16e, 0xc16f, 0xc171, 0xc172, 0xc173, 0xc175, 0xc176,
-0xc177, 0xc179, 0xc17a, 0xc17b, 0xc17c, 0xc17d, 0xc17e, 0xc17f, 0xc180, 0xc181, 0xc182, 0xc183, 0xc184, 0xc186, 0xc187,
-0xc188, 0xc189, 0xc18a, 0xc18b, 0xc18f, 0xc191, 0xc192, 0xc193, 0xc195, 0xc197, 0xc198, 0xc199, 0xc19a, 0xc19b, 0xc19e,
-0xc1a0, 0xc1a2, 0xc1a3, 0xc1a4, 0xc1a6, 0xc1a7, 0xc1aa, 0xc1ab, 0xc1ad, 0xc1ae, 0xc1af, 0xc1b1, 0xc1b2, 0xc1b3, 0xc1b4,
-0xc1b5, 0xc1b6, 0xc1b7, 0xc1b8, 0xc1b9, 0xc1ba, 0xc1bb, 0xc1bc, 0xc1be, 0xc1bf, 0xc1c0, 0xc1c1, 0xc1c2, 0xc1c3, 0xc1c5,
-0xc1c6, 0xc1c7, 0xc1c9, 0xc1ca, 0xc1cb, 0xc1cd, 0xc1ce, 0xc1cf, 0xc1d0, 0xc1d1, 0xc1d2, 0xc1d3, 0xc1d5, 0xc1d6, 0xc1d9,
-0xc1da, 0xc1db, 0xc1dc, 0xc1dd, 0xc1de, 0xc1df, 0xc1e1, 0xc1e2, 0xc1e3, 0xc1e5, 0xc1e6, 0xc1e7, 0xc1e9, 0xc1ea, 0xc1eb,
-0xc1ec, 0xc1ed, 0xc1ee, 0xc1ef, 0xc1f2, 0xc1f4, 0xc1f5, 0xc1f6, 0xc1f7, 0xc1f8, 0xc1f9, 0xc1fa, 0xc1fb, 0xc1fe, 0xc1ff,
-0xc201, 0xc202, 0xc203, 0xc205, 0xc206, 0xc207, 0xc208, 0xc209, 0xc20a, 0xc20b, 0xc20e, 0xc210, 0xc212, 0xc213, 0xc214,
-0xc215, 0xc216, 0xc217, 0xc21a, 0xc21b, 0xc21d, 0xc21e, 0xc221, 0xc222, 0xc223, 0xc224, 0xc225, 0xc226, 0xc227, 0xc22a,
-0xc22c, 0xc22e, 0xc230, 0xc233, 0xc235, 0xc236, 0xc237, 0xc238, 0xc239, 0xc23a, 0xc23b, 0xc23c, 0xc23d, 0xc23e, 0xc23f,
-0xc240, 0xc241, 0xc242, 0xc243, 0xc244, 0xc245, 0xc246, 0xc247, 0xc249, 0xc24a, 0xc24b, 0xc24c, 0xc24d, 0xc24e, 0xc24f,
-0xc252, 0xc253, 0xc255, 0xc256, 0xc257, 0xc259, 0xc25a, 0xc25b, 0xc25c, 0xc25d, 0xc25e, 0xc25f, 0xc261, 0xc262, 0xc263,
-0xc264, 0xc266, 0xc267, 0xc268, 0xc269, 0xc26a, 0xc26b, 0xc26e, 0xc26f, 0xc271, 0xc272, 0xc273, 0xc275, 0xc276, 0xc277,
-0xc278, 0xc279, 0xc27a, 0xc27b, 0xc27e, 0xc280, 0xc282, 0xc283, 0xc284, 0xc285, 0xc286, 0xc287, 0xc28a, 0xc28b, 0xc28c,
-0xc28d, 0xc28e, 0xc28f, 0xc291, 0xc292, 0xc293, 0xc294, 0xc295, 0xc296, 0xc297, 0xc299, 0xc29a, 0xc29c, 0xc29e, 0xc29f,
-0xc2a0, 0xc2a1, 0xc2a2, 0xc2a3, 0xc2a6, 0xc2a7, 0xc2a9, 0xc2aa, 0xc2ab, 0xc2ae, 0xc2af, 0xc2b0, 0xc2b1, 0xc2b2, 0xc2b3,
-0xc2b6, 0xc2b8, 0xc2ba, 0xc2bb, 0xc2bc, 0xc2bd, 0xc2be, 0xc2bf, 0xc2c0, 0xc2c1, 0xc2c2, 0xc2c3, 0xc2c4, 0xc2c5, 0xc2c6,
-0xc2c7, 0xc2c8, 0xc2c9, 0xc2ca, 0xc2cb, 0xc2cc, 0xc2cd, 0xc2ce, 0xc2cf, 0xc2d0, 0xc2d1, 0xc2d2, 0xc2d3, 0xc2d4, 0xc2d5,
-0xc2d6, 0xc2d7, 0xc2d8, 0xc2d9, 0xc2da, 0xc2db, 0xc2de, 0xc2df, 0xc2e1, 0xc2e2, 0xc2e5, 0xc2e6, 0xc2e7, 0xc2e8, 0xc2e9,
-0xc2ea, 0xc2ee, 0xc2f0, 0xc2f2, 0xc2f3, 0xc2f4, 0xc2f5, 0xc2f7, 0xc2fa, 0xc2fd, 0xc2fe, 0xc2ff, 0xc301, 0xc302, 0xc303,
-0xc304, 0xc305, 0xc306, 0xc307, 0xc30a, 0xc30b, 0xc30e, 0xc30f, 0xc310, 0xc311, 0xc312, 0xc316, 0xc317, 0xc319, 0xc31a,
-0xc31b, 0xc31d, 0xc31e, 0xc31f, 0xc320, 0xc321, 0xc322, 0xc323, 0xc326, 0xc327, 0xc32a, 0xc32b, 0xc32c, 0xc32d, 0xc32e,
-0xc32f, 0xc330, 0xc331, 0xc332, 0xc333, 0xc334, 0xc335, 0xc336, 0xc337, 0xc338, 0xc339, 0xc33a, 0xc33b, 0xc33c, 0xc33d,
-0xc33e, 0xc33f, 0xc340, 0xc341, 0xc342, 0xc343, 0xc344, 0xc346, 0xc347, 0xc348, 0xc349, 0xc34a, 0xc34b, 0xc34c, 0xc34d,
-0xc34e, 0xc34f, 0xc350, 0xc351, 0xc352, 0xc353, 0xc354, 0xc355, 0xc356, 0xc357, 0xc358, 0xc359, 0xc35a, 0xc35b, 0xc35c,
-0xc35d, 0xc35e, 0xc35f, 0xc360, 0xc361, 0xc362, 0xc363, 0xc364, 0xc365, 0xc366, 0xc367, 0xc36a, 0xc36b, 0xc36d, 0xc36e,
-0xc36f, 0xc371, 0xc373, 0xc374, 0xc375, 0xc376, 0xc377, 0xc37a, 0xc37b, 0xc37e, 0xc37f, 0xc380, 0xc381, 0xc382, 0xc383,
-0xc385, 0xc386, 0xc387, 0xc389, 0xc38a, 0xc38b, 0xc38d, 0xc38e, 0xc38f, 0xc390, 0xc391, 0xc392, 0xc393, 0xc394, 0xc395,
-0xc396, 0xc397, 0xc398, 0xc399, 0xc39a, 0xc39b, 0xc39c, 0xc39d, 0xc39e, 0xc39f, 0xc3a0, 0xc3a1, 0xc3a2, 0xc3a3, 0xc3a4,
-0xc3a5, 0xc3a6, 0xc3a7, 0xc3a8, 0xc3a9, 0xc3aa, 0xc3ab, 0xc3ac, 0xc3ad, 0xc3ae, 0xc3af, 0xc3b0, 0xc3b1, 0xc3b2, 0xc3b3,
-0xc3b4, 0xc3b5, 0xc3b6, 0xc3b7, 0xc3b8, 0xc3b9, 0xc3ba, 0xc3bb, 0xc3bc, 0xc3bd, 0xc3be, 0xc3bf, 0xc3c1, 0xc3c2, 0xc3c3,
-0xc3c4, 0xc3c5, 0xc3c6, 0xc3c7, 0xc3c8, 0xc3c9, 0xc3ca, 0xc3cb, 0xc3cc, 0xc3cd, 0xc3ce, 0xc3cf, 0xc3d0, 0xc3d1, 0xc3d2,
-0xc3d3, 0xc3d4, 0xc3d5, 0xc3d6, 0xc3d7, 0xc3da, 0xc3db, 0xc3dd, 0xc3de, 0xc3e1, 0xc3e3, 0xc3e4, 0xc3e5, 0xc3e6, 0xc3e7,
-0xc3ea, 0xc3eb, 0xc3ec, 0xc3ee, 0xc3ef, 0xc3f0, 0xc3f1, 0xc3f2, 0xc3f3, 0xc3f6, 0xc3f7, 0xc3f9, 0xc3fa, 0xc3fb, 0xc3fc,
-0xc3fd, 0xc3fe, 0xc3ff, 0xc400, 0xc401, 0xc402, 0xc403, 0xc404, 0xc405, 0xc406, 0xc407, 0xc409, 0xc40a, 0xc40b, 0xc40c,
-0xc40d, 0xc40e, 0xc40f, 0xc411, 0xc412, 0xc413, 0xc414, 0xc415, 0xc416, 0xc417, 0xc418, 0xc419, 0xc41a, 0xc41b, 0xc41c,
-0xc41d, 0xc41e, 0xc41f, 0xc420, 0xc421, 0xc422, 0xc423, 0xc425, 0xc426, 0xc427, 0xc428, 0xc429, 0xc42a, 0xc42b, 0xc42d,
-0xc42e, 0xc42f, 0xc431, 0xc432, 0xc433, 0xc435, 0xc436, 0xc437, 0xc438, 0xc439, 0xc43a, 0xc43b, 0xc43e, 0xc43f, 0xc440,
-0xc441, 0xc442, 0xc443, 0xc444, 0xc445, 0xc446, 0xc447, 0xc449, 0xc44a, 0xc44b, 0xc44c, 0xc44d, 0xc44e, 0xc44f, 0xc450,
-0xc451, 0xc452, 0xc453, 0xc454, 0xc455, 0xc456, 0xc457, 0xc458, 0xc459, 0xc45a, 0xc45b, 0xc45c, 0xc45d, 0xc45e, 0xc45f,
-0xc460, 0xc461, 0xc462, 0xc463, 0xc466, 0xc467, 0xc469, 0xc46a, 0xc46b, 0xc46d, 0xc46e, 0xc46f, 0xc470, 0xc471, 0xc472,
-0xc473, 0xc476, 0xc477, 0xc478, 0xc47a, 0xc47b, 0xc47c, 0xc47d, 0xc47e, 0xc47f, 0xc481, 0xc482, 0xc483, 0xc484, 0xc485,
-0xc486, 0xc487, 0xc488, 0xc489, 0xc48a, 0xc48b, 0xc48c, 0xc48d, 0xc48e, 0xc48f, 0xc490, 0xc491, 0xc492, 0xc493, 0xc495,
-0xc496, 0xc497, 0xc498, 0xc499, 0xc49a, 0xc49b, 0xc49d, 0xc49e, 0xc49f, 0xc4a0, 0xc4a1, 0xc4a2, 0xc4a3, 0xc4a4, 0xc4a5,
-0xc4a6, 0xc4a7, 0xc4a8, 0xc4a9, 0xc4aa, 0xc4ab, 0xc4ac, 0xc4ad, 0xc4ae, 0xc4af, 0xc4b0, 0xc4b1, 0xc4b2, 0xc4b3, 0xc4b4,
-0xc4b5, 0xc4b6, 0xc4b7, 0xc4b9, 0xc4ba, 0xc4bb, 0xc4bd, 0xc4be, 0xc4bf, 0xc4c0, 0xc4c1, 0xc4c2, 0xc4c3, 0xc4c4, 0xc4c5,
-0xc4c6, 0xc4c7, 0xc4c8, 0xc4c9, 0xc4ca, 0xc4cb, 0xc4cc, 0xc4cd, 0xc4ce, 0xc4cf, 0xc4d0, 0xc4d1, 0xc4d2, 0xc4d3, 0xc4d4,
-0xc4d5, 0xc4d6, 0xc4d7, 0xc4d8, 0xc4d9, 0xc4da, 0xc4db, 0xc4dc, 0xc4dd, 0xc4de, 0xc4df, 0xc4e0, 0xc4e1, 0xc4e2, 0xc4e3,
-0xc4e4, 0xc4e5, 0xc4e6, 0xc4e7, 0xc4e8, 0xc4ea, 0xc4eb, 0xc4ec, 0xc4ed, 0xc4ee, 0xc4ef, 0xc4f2, 0xc4f3, 0xc4f5, 0xc4f6,
-0xc4f7, 0xc4f9, 0xc4fb, 0xc4fc, 0xc4fd, 0xc4fe, 0xc502, 0xc503, 0xc504, 0xc505, 0xc506, 0xc507, 0xc508, 0xc509, 0xc50a,
-0xc50b, 0xc50d, 0xc50e, 0xc50f, 0xc511, 0xc512, 0xc513, 0xc515, 0xc516, 0xc517, 0xc518, 0xc519, 0xc51a, 0xc51b, 0xc51d,
-0xc51e, 0xc51f, 0xc520, 0xc521, 0xc522, 0xc523, 0xc524, 0xc525, 0xc526, 0xc527, 0xc52a, 0xc52b, 0xc52d, 0xc52e, 0xc52f,
-0xc531, 0xc532, 0xc533, 0xc534, 0xc535, 0xc536, 0xc537, 0xc53a, 0xc53c, 0xc53e, 0xc53f, 0xc540, 0xc541, 0xc542, 0xc543,
-0xc546, 0xc547, 0xc54b, 0xc54f, 0xc550, 0xc551, 0xc552, 0xc556, 0xc55a, 0xc55b, 0xc55c, 0xc55f, 0xc562, 0xc563, 0xc565,
-0xc566, 0xc567, 0xc569, 0xc56a, 0xc56b, 0xc56c, 0xc56d, 0xc56e, 0xc56f, 0xc572, 0xc576, 0xc577, 0xc578, 0xc579, 0xc57a,
-0xc57b, 0xc57e, 0xc57f, 0xc581, 0xc582, 0xc583, 0xc585, 0xc586, 0xc588, 0xc589, 0xc58a, 0xc58b, 0xc58e, 0xc590, 0xc592,
-0xc593, 0xc594, 0xc596, 0xc599, 0xc59a, 0xc59b, 0xc59d, 0xc59e, 0xc59f, 0xc5a1, 0xc5a2, 0xc5a3, 0xc5a4, 0xc5a5, 0xc5a6,
-0xc5a7, 0xc5a8, 0xc5aa, 0xc5ab, 0xc5ac, 0xc5ad, 0xc5ae, 0xc5af, 0xc5b0, 0xc5b1, 0xc5b2, 0xc5b3, 0xc5b6, 0xc5b7, 0xc5ba,
-0xc5bf, 0xc5c0, 0xc5c1, 0xc5c2, 0xc5c3, 0xc5cb, 0xc5cd, 0xc5cf, 0xc5d2, 0xc5d3, 0xc5d5, 0xc5d6, 0xc5d7, 0xc5d9, 0xc5da,
-0xc5db, 0xc5dc, 0xc5dd, 0xc5de, 0xc5df, 0xc5e2, 0xc5e4, 0xc5e6, 0xc5e7, 0xc5e8, 0xc5e9, 0xc5ea, 0xc5eb, 0xc5ef, 0xc5f1,
-0xc5f2, 0xc5f3, 0xc5f5, 0xc5f8, 0xc5f9, 0xc5fa, 0xc5fb, 0xc602, 0xc603, 0xc604, 0xc609, 0xc60a, 0xc60b, 0xc60d, 0xc60e,
-0xc60f, 0xc611, 0xc612, 0xc613, 0xc614, 0xc615, 0xc616, 0xc617, 0xc61a, 0xc61d, 0xc61e, 0xc61f, 0xc620, 0xc621, 0xc622,
-0xc623, 0xc626, 0xc627, 0xc629, 0xc62a, 0xc62b, 0xc62f, 0xc631, 0xc632, 0xc636, 0xc638, 0xc63a, 0xc63c, 0xc63d, 0xc63e,
-0xc63f, 0xc642, 0xc643, 0xc645, 0xc646, 0xc647, 0xc649, 0xc64a, 0xc64b, 0xc64c, 0xc64d, 0xc64e, 0xc64f, 0xc652, 0xc656,
-0xc657, 0xc658, 0xc659, 0xc65a, 0xc65b, 0xc65e, 0xc65f, 0xc661, 0xc662, 0xc663, 0xc664, 0xc665, 0xc666, 0xc667, 0xc668,
-0xc669, 0xc66a, 0xc66b, 0xc66d, 0xc66e, 0xc670, 0xc672, 0xc673, 0xc674, 0xc675, 0xc676, 0xc677, 0xc67a, 0xc67b, 0xc67d,
-0xc67e, 0xc67f, 0xc681, 0xc682, 0xc683, 0xc684, 0xc685, 0xc686, 0xc687, 0xc68a, 0xc68c, 0xc68e, 0xc68f, 0xc690, 0xc691,
-0xc692, 0xc693, 0xc696, 0xc697, 0xc699, 0xc69a, 0xc69b, 0xc69d, 0xc69e, 0xc69f, 0xc6a0, 0xc6a1, 0xc6a2, 0xc6a3, 0xc6a6,
-0xc6a8, 0xc6aa, 0xc6ab, 0xc6ac, 0xc6ad, 0xc6ae, 0xc6af, 0xc6b2, 0xc6b3, 0xc6b5, 0xc6b6, 0xc6b7, 0xc6bb, 0xc6bc, 0xc6bd,
-0xc6be, 0xc6bf, 0xc6c2, 0xc6c4, 0xc6c6, 0xc6c7, 0xc6c8, 0xc6c9, 0xc6ca, 0xc6cb, 0xc6ce, 0xc6cf, 0xc6d1, 0xc6d2, 0xc6d3,
-0xc6d5, 0xc6d6, 0xc6d7, 0xc6d8, 0xc6d9, 0xc6da, 0xc6db, 0xc6de, 0xc6df, 0xc6e2, 0xc6e3, 0xc6e4, 0xc6e5, 0xc6e6, 0xc6e7,
-0xc6ea, 0xc6eb, 0xc6ed, 0xc6ee, 0xc6ef, 0xc6f1, 0xc6f2, 0xc6f3, 0xc6f4, 0xc6f5, 0xc6f6, 0xc6f7, 0xc6fa, 0xc6fb, 0xc6fc,
-0xc6fe, 0xc6ff, 0xc700, 0xc701, 0xc702, 0xc703, 0xc706, 0xc707, 0xc709, 0xc70a, 0xc70b, 0xc70d, 0xc70e, 0xc70f, 0xc710,
-0xc711, 0xc712, 0xc713, 0xc716, 0xc718, 0xc71a, 0xc71b, 0xc71c, 0xc71d, 0xc71e, 0xc71f, 0xc722, 0xc723, 0xc725, 0xc726,
-0xc727, 0xc729, 0xc72a, 0xc72b, 0xc72c, 0xc72d, 0xc72e, 0xc72f, 0xc732, 0xc734, 0xc736, 0xc738, 0xc739, 0xc73a, 0xc73b,
-0xc73e, 0xc73f, 0xc741, 0xc742, 0xc743, 0xc745, 0xc746, 0xc747, 0xc748, 0xc749, 0xc74b, 0xc74e, 0xc750, 0xc759, 0xc75a,
-0xc75b, 0xc75d, 0xc75e, 0xc75f, 0xc761, 0xc762, 0xc763, 0xc764, 0xc765, 0xc766, 0xc767, 0xc769, 0xc76a, 0xc76c, 0xc76d,
-0xc76e, 0xc76f, 0xc770, 0xc771, 0xc772, 0xc773, 0xc776, 0xc777, 0xc779, 0xc77a, 0xc77b, 0xc77f, 0xc780, 0xc781, 0xc782,
-0xc786, 0xc78b, 0xc78c, 0xc78d, 0xc78f, 0xc792, 0xc793, 0xc795, 0xc799, 0xc79b, 0xc79c, 0xc79d, 0xc79e, 0xc79f, 0xc7a2,
-0xc7a7, 0xc7a8, 0xc7a9, 0xc7aa, 0xc7ab, 0xc7ae, 0xc7af, 0xc7b1, 0xc7b2, 0xc7b3, 0xc7b5, 0xc7b6, 0xc7b7, 0xc7b8, 0xc7b9,
-0xc7ba, 0xc7bb, 0xc7be, 0xc7c2, 0xc7c3, 0xc7c4, 0xc7c5, 0xc7c6, 0xc7c7, 0xc7ca, 0xc7cb, 0xc7cd, 0xc7cf, 0xc7d1, 0xc7d2,
-0xc7d3, 0xc7d4, 0xc7d5, 0xc7d6, 0xc7d7, 0xc7d9, 0xc7da, 0xc7db, 0xc7dc, 0xc7de, 0xc7df, 0xc7e0, 0xc7e1, 0xc7e2, 0xc7e3,
-0xc7e5, 0xc7e6, 0xc7e7, 0xc7e9, 0xc7ea, 0xc7eb, 0xc7ed, 0xc7ee, 0xc7ef, 0xc7f0, 0xc7f1, 0xc7f2, 0xc7f3, 0xc7f4, 0xc7f5,
-0xc7f6, 0xc7f7, 0xc7f8, 0xc7f9, 0xc7fa, 0xc7fb, 0xc7fc, 0xc7fd, 0xc7fe, 0xc7ff, 0xc802, 0xc803, 0xc805, 0xc806, 0xc807,
-0xc809, 0xc80b, 0xc80c, 0xc80d, 0xc80e, 0xc80f, 0xc812, 0xc814, 0xc817, 0xc818, 0xc819, 0xc81a, 0xc81b, 0xc81e, 0xc81f,
-0xc821, 0xc822, 0xc823, 0xc825, 0xc826, 0xc827, 0xc828, 0xc829, 0xc82a, 0xc82b, 0xc82e, 0xc830, 0xc832, 0xc833, 0xc834,
-0xc835, 0xc836, 0xc837, 0xc839, 0xc83a, 0xc83b, 0xc83d, 0xc83e, 0xc83f, 0xc841, 0xc842, 0xc843, 0xc844, 0xc845, 0xc846,
-0xc847, 0xc84a, 0xc84b, 0xc84e, 0xc84f, 0xc850, 0xc851, 0xc852, 0xc853, 0xc855, 0xc856, 0xc857, 0xc858, 0xc859, 0xc85a,
-0xc85b, 0xc85c, 0xc85d, 0xc85e, 0xc85f, 0xc860, 0xc861, 0xc862, 0xc863, 0xc864, 0xc865, 0xc866, 0xc867, 0xc868, 0xc869,
-0xc86a, 0xc86b, 0xc86c, 0xc86d, 0xc86e, 0xc86f, 0xc872, 0xc873, 0xc875, 0xc876, 0xc877, 0xc879, 0xc87b, 0xc87c, 0xc87d,
-0xc87e, 0xc87f, 0xc882, 0xc884, 0xc888, 0xc889, 0xc88a, 0xc88e, 0xc88f, 0xc890, 0xc891, 0xc892, 0xc893, 0xc895, 0xc896,
-0xc897, 0xc898, 0xc899, 0xc89a, 0xc89b, 0xc89c, 0xc89e, 0xc8a0, 0xc8a2, 0xc8a3, 0xc8a4, 0xc8a5, 0xc8a6, 0xc8a7, 0xc8a9,
-0xc8aa, 0xc8ab, 0xc8ac, 0xc8ad, 0xc8ae, 0xc8af, 0xc8b0, 0xc8b1, 0xc8b2, 0xc8b3, 0xc8b4, 0xc8b5, 0xc8b6, 0xc8b7, 0xc8b8,
-0xc8b9, 0xc8ba, 0xc8bb, 0xc8be, 0xc8bf, 0xc8c0, 0xc8c1, 0xc8c2, 0xc8c3, 0xc8c5, 0xc8c6, 0xc8c7, 0xc8c9, 0xc8ca, 0xc8cb,
-0xc8cd, 0xc8ce, 0xc8cf, 0xc8d0, 0xc8d1, 0xc8d2, 0xc8d3, 0xc8d6, 0xc8d8, 0xc8da, 0xc8db, 0xc8dc, 0xc8dd, 0xc8de, 0xc8df,
-0xc8e2, 0xc8e3, 0xc8e5, 0xc8e6, 0xc8e7, 0xc8e8, 0xc8e9, 0xc8ea, 0xc8eb, 0xc8ec, 0xc8ed, 0xc8ee, 0xc8ef, 0xc8f0, 0xc8f1,
-0xc8f2, 0xc8f3, 0xc8f4, 0xc8f6, 0xc8f7, 0xc8f8, 0xc8f9, 0xc8fa, 0xc8fb, 0xc8fe, 0xc8ff, 0xc901, 0xc902, 0xc903, 0xc907,
-0xc908, 0xc909, 0xc90a, 0xc90b, 0xc90e, 0xc910, 0xc912, 0xc913, 0xc914, 0xc915, 0xc916, 0xc917, 0xc919, 0xc91a, 0xc91b,
-0xc91c, 0xc91d, 0xc91e, 0xc91f, 0xc920, 0xc921, 0xc922, 0xc923, 0xc924, 0xc925, 0xc926, 0xc927, 0xc928, 0xc929, 0xc92a,
-0xc92b, 0xc92d, 0xc92e, 0xc92f, 0xc930, 0xc931, 0xc932, 0xc933, 0xc935, 0xc936, 0xc937, 0xc938, 0xc939, 0xc93a, 0xc93b,
-0xc93c, 0xc93d, 0xc93e, 0xc93f, 0xc940, 0xc941, 0xc942, 0xc943, 0xc944, 0xc945, 0xc946, 0xc947, 0xc948, 0xc949, 0xc94a,
-0xc94b, 0xc94c, 0xc94d, 0xc94e, 0xc94f, 0xc952, 0xc953, 0xc955, 0xc956, 0xc957, 0xc959, 0xc95a, 0xc95b, 0xc95c, 0xc95d,
-0xc95e, 0xc95f, 0xc962, 0xc964, 0xc965, 0xc966, 0xc967, 0xc968, 0xc969, 0xc96a, 0xc96b, 0xc96d, 0xc96e, 0xc96f, 0xc971,
-0xc972, 0xc973, 0xc975, 0xc976, 0xc977, 0xc978, 0xc979, 0xc97a, 0xc97b, 0xc97d, 0xc97e, 0xc97f, 0xc980, 0xc981, 0xc982,
-0xc983, 0xc984, 0xc985, 0xc986, 0xc987, 0xc98a, 0xc98b, 0xc98d, 0xc98e, 0xc98f, 0xc991, 0xc992, 0xc993, 0xc994, 0xc995,
-0xc996, 0xc997, 0xc99a, 0xc99c, 0xc99e, 0xc99f, 0xc9a0, 0xc9a1, 0xc9a2, 0xc9a3, 0xc9a4, 0xc9a5, 0xc9a6, 0xc9a7, 0xc9a8,
-0xc9a9, 0xc9aa, 0xc9ab, 0xc9ac, 0xc9ad, 0xc9ae, 0xc9af, 0xc9b0, 0xc9b1, 0xc9b2, 0xc9b3, 0xc9b4, 0xc9b5, 0xc9b6, 0xc9b7,
-0xc9b8, 0xc9b9, 0xc9ba, 0xc9bb, 0xc9bc, 0xc9bd, 0xc9be, 0xc9bf, 0xc9c2, 0xc9c3, 0xc9c5, 0xc9c6, 0xc9c9, 0xc9cb, 0xc9cc,
-0xc9cd, 0xc9ce, 0xc9cf, 0xc9d2, 0xc9d4, 0xc9d7, 0xc9d8, 0xc9db, 0xc9de, 0xc9df, 0xc9e1, 0xc9e3, 0xc9e5, 0xc9e6, 0xc9e8,
-0xc9e9, 0xc9ea, 0xc9eb, 0xc9ee, 0xc9f2, 0xc9f3, 0xc9f4, 0xc9f5, 0xc9f6, 0xc9f7, 0xc9fa, 0xc9fb, 0xc9fd, 0xc9fe, 0xc9ff,
-0xca01, 0xca02, 0xca03, 0xca04, 0xca05, 0xca06, 0xca07, 0xca0a, 0xca0e, 0xca0f, 0xca10, 0xca11, 0xca12, 0xca13, 0xca15,
-0xca16, 0xca17, 0xca19, 0xca1a, 0xca1b, 0xca1c, 0xca1d, 0xca1e, 0xca1f, 0xca20, 0xca21, 0xca22, 0xca23, 0xca24, 0xca25,
-0xca26, 0xca27, 0xca28, 0xca2a, 0xca2b, 0xca2c, 0xca2d, 0xca2e, 0xca2f, 0xca30, 0xca31, 0xca32, 0xca33, 0xca34, 0xca35,
-0xca36, 0xca37, 0xca38, 0xca39, 0xca3a, 0xca3b, 0xca3c, 0xca3d, 0xca3e, 0xca3f, 0xca40, 0xca41, 0xca42, 0xca43, 0xca44,
-0xca45, 0xca46, 0xca47, 0xca48, 0xca49, 0xca4a, 0xca4b, 0xca4e, 0xca4f, 0xca51, 0xca52, 0xca53, 0xca55, 0xca56, 0xca57,
-0xca58, 0xca59, 0xca5a, 0xca5b, 0xca5e, 0xca62, 0xca63, 0xca64, 0xca65, 0xca66, 0xca67, 0xca69, 0xca6a, 0xca6b, 0xca6c,
-0xca6d, 0xca6e, 0xca6f, 0xca70, 0xca71, 0xca72, 0xca73, 0xca74, 0xca75, 0xca76, 0xca77, 0xca78, 0xca79, 0xca7a, 0xca7b,
-0xca7c, 0xca7e, 0xca7f, 0xca80, 0xca81, 0xca82, 0xca83, 0xca85, 0xca86, 0xca87, 0xca88, 0xca89, 0xca8a, 0xca8b, 0xca8c,
-0xca8d, 0xca8e, 0xca8f, 0xca90, 0xca91, 0xca92, 0xca93, 0xca94, 0xca95, 0xca96, 0xca97, 0xca99, 0xca9a, 0xca9b, 0xca9c,
-0xca9d, 0xca9e, 0xca9f, 0xcaa0, 0xcaa1, 0xcaa2, 0xcaa3, 0xcaa4, 0xcaa5, 0xcaa6, 0xcaa7, 0xcaa8, 0xcaa9, 0xcaaa, 0xcaab,
-0xcaac, 0xcaad, 0xcaae, 0xcaaf, 0xcab0, 0xcab1, 0xcab2, 0xcab3, 0xcab4, 0xcab5, 0xcab6, 0xcab7, 0xcab8, 0xcab9, 0xcaba,
-0xcabb, 0xcabe, 0xcabf, 0xcac1, 0xcac2, 0xcac3, 0xcac5, 0xcac6, 0xcac7, 0xcac8, 0xcac9, 0xcaca, 0xcacb, 0xcace, 0xcad0,
-0xcad2, 0xcad4, 0xcad5, 0xcad6, 0xcad7, 0xcada, 0xcadb, 0xcadc, 0xcadd, 0xcade, 0xcadf, 0xcae1, 0xcae2, 0xcae3, 0xcae4,
-0xcae5, 0xcae6, 0xcae7, 0xcae8, 0xcae9, 0xcaea, 0xcaeb, 0xcaed, 0xcaee, 0xcaef, 0xcaf0, 0xcaf1, 0xcaf2, 0xcaf3, 0xcaf5,
-0xcaf6, 0xcaf7, 0xcaf8, 0xcaf9, 0xcafa, 0xcafb, 0xcafc, 0xcafd, 0xcafe, 0xcaff, 0xcb00, 0xcb01, 0xcb02, 0xcb03, 0xcb04,
-0xcb05, 0xcb06, 0xcb07, 0xcb09, 0xcb0a, 0xcb0b, 0xcb0c, 0xcb0d, 0xcb0e, 0xcb0f, 0xcb11, 0xcb12, 0xcb13, 0xcb15, 0xcb16,
-0xcb17, 0xcb19, 0xcb1a, 0xcb1b, 0xcb1c, 0xcb1d, 0xcb1e, 0xcb1f, 0xcb22, 0xcb23, 0xcb24, 0xcb25, 0xcb26, 0xcb27, 0xcb28,
-0xcb29, 0xcb2a, 0xcb2b, 0xcb2c, 0xcb2d, 0xcb2e, 0xcb2f, 0xcb30, 0xcb31, 0xcb32, 0xcb33, 0xcb34, 0xcb35, 0xcb36, 0xcb37,
-0xcb38, 0xcb39, 0xcb3a, 0xcb3b, 0xcb3c, 0xcb3d, 0xcb3e, 0xcb3f, 0xcb40, 0xcb42, 0xcb43, 0xcb44, 0xcb45, 0xcb46, 0xcb47,
-0xcb4a, 0xcb4b, 0xcb4d, 0xcb4e, 0xcb4f, 0xcb51, 0xcb52, 0xcb53, 0xcb54, 0xcb55, 0xcb56, 0xcb57, 0xcb5a, 0xcb5b, 0xcb5c,
-0xcb5e, 0xcb5f, 0xcb60, 0xcb61, 0xcb62, 0xcb63, 0xcb65, 0xcb66, 0xcb67, 0xcb68, 0xcb69, 0xcb6a, 0xcb6b, 0xcb6c, 0xcb6d,
-0xcb6e, 0xcb6f, 0xcb70, 0xcb71, 0xcb72, 0xcb73, 0xcb74, 0xcb75, 0xcb76, 0xcb77, 0xcb7a, 0xcb7b, 0xcb7c, 0xcb7d, 0xcb7e,
-0xcb7f, 0xcb80, 0xcb81, 0xcb82, 0xcb83, 0xcb84, 0xcb85, 0xcb86, 0xcb87, 0xcb88, 0xcb89, 0xcb8a, 0xcb8b, 0xcb8c, 0xcb8d,
-0xcb8e, 0xcb8f, 0xcb90, 0xcb91, 0xcb92, 0xcb93, 0xcb94, 0xcb95, 0xcb96, 0xcb97, 0xcb98, 0xcb99, 0xcb9a, 0xcb9b, 0xcb9d,
-0xcb9e, 0xcb9f, 0xcba0, 0xcba1, 0xcba2, 0xcba3, 0xcba4, 0xcba5, 0xcba6, 0xcba7, 0xcba8, 0xcba9, 0xcbaa, 0xcbab, 0xcbac,
-0xcbad, 0xcbae, 0xcbaf, 0xcbb0, 0xcbb1, 0xcbb2, 0xcbb3, 0xcbb4, 0xcbb5, 0xcbb6, 0xcbb7, 0xcbb9, 0xcbba, 0xcbbb, 0xcbbc,
-0xcbbd, 0xcbbe, 0xcbbf, 0xcbc0, 0xcbc1, 0xcbc2, 0xcbc3, 0xcbc4, 0xcbc5, 0xcbc6, 0xcbc7, 0xcbc8, 0xcbc9, 0xcbca, 0xcbcb,
-0xcbcc, 0xcbcd, 0xcbce, 0xcbcf, 0xcbd0, 0xcbd1, 0xcbd2, 0xcbd3, 0xcbd5, 0xcbd6, 0xcbd7, 0xcbd8, 0xcbd9, 0xcbda, 0xcbdb,
-0xcbdc, 0xcbdd, 0xcbde, 0xcbdf, 0xcbe0, 0xcbe1, 0xcbe2, 0xcbe3, 0xcbe5, 0xcbe6, 0xcbe8, 0xcbea, 0xcbeb, 0xcbec, 0xcbed,
-0xcbee, 0xcbef, 0xcbf0, 0xcbf1, 0xcbf2, 0xcbf3, 0xcbf4, 0xcbf5, 0xcbf6, 0xcbf7, 0xcbf8, 0xcbf9, 0xcbfa, 0xcbfb, 0xcbfc,
-0xcbfd, 0xcbfe, 0xcbff, 0xcc00, 0xcc01, 0xcc02, 0xcc03, 0xcc04, 0xcc05, 0xcc06, 0xcc07, 0xcc08, 0xcc09, 0xcc0a, 0xcc0b,
-0xcc0e, 0xcc0f, 0xcc11, 0xcc12, 0xcc13, 0xcc15, 0xcc16, 0xcc17, 0xcc18, 0xcc19, 0xcc1a, 0xcc1b, 0xcc1e, 0xcc1f, 0xcc20,
-0xcc23, 0xcc24, 0xcc25, 0xcc26, 0xcc2a, 0xcc2b, 0xcc2d, 0xcc2f, 0xcc31, 0xcc32, 0xcc33, 0xcc34, 0xcc35, 0xcc36, 0xcc37,
-0xcc3a, 0xcc3f, 0xcc40, 0xcc41, 0xcc42, 0xcc43, 0xcc46, 0xcc47, 0xcc49, 0xcc4a, 0xcc4b, 0xcc4d, 0xcc4e, 0xcc4f, 0xcc50,
-0xcc51, 0xcc52, 0xcc53, 0xcc56, 0xcc5a, 0xcc5b, 0xcc5c, 0xcc5d, 0xcc5e, 0xcc5f, 0xcc61, 0xcc62, 0xcc63, 0xcc65, 0xcc67,
-0xcc69, 0xcc6a, 0xcc6b, 0xcc6c, 0xcc6d, 0xcc6e, 0xcc6f, 0xcc71, 0xcc72, 0xcc73, 0xcc74, 0xcc76, 0xcc77, 0xcc78, 0xcc79,
-0xcc7a, 0xcc7b, 0xcc7c, 0xcc7d, 0xcc7e, 0xcc7f, 0xcc80, 0xcc81, 0xcc82, 0xcc83, 0xcc84, 0xcc85, 0xcc86, 0xcc87, 0xcc88,
-0xcc89, 0xcc8a, 0xcc8b, 0xcc8c, 0xcc8d, 0xcc8e, 0xcc8f, 0xcc90, 0xcc91, 0xcc92, 0xcc93, 0xcc94, 0xcc95, 0xcc96, 0xcc97,
-0xcc9a, 0xcc9b, 0xcc9d, 0xcc9e, 0xcc9f, 0xcca1, 0xcca2, 0xcca3, 0xcca4, 0xcca5, 0xcca6, 0xcca7, 0xccaa, 0xccae, 0xccaf,
-0xccb0, 0xccb1, 0xccb2, 0xccb3, 0xccb6, 0xccb7, 0xccb9, 0xccba, 0xccbb, 0xccbd, 0xccbe, 0xccbf, 0xccc0, 0xccc1, 0xccc2,
-0xccc3, 0xccc6, 0xccc8, 0xccca, 0xcccb, 0xcccc, 0xcccd, 0xccce, 0xcccf, 0xccd1, 0xccd2, 0xccd3, 0xccd5, 0xccd6, 0xccd7,
-0xccd8, 0xccd9, 0xccda, 0xccdb, 0xccdc, 0xccdd, 0xccde, 0xccdf, 0xcce0, 0xcce1, 0xcce2, 0xcce3, 0xcce5, 0xcce6, 0xcce7,
-0xcce8, 0xcce9, 0xccea, 0xcceb, 0xcced, 0xccee, 0xccef, 0xccf1, 0xccf2, 0xccf3, 0xccf4, 0xccf5, 0xccf6, 0xccf7, 0xccf8,
-0xccf9, 0xccfa, 0xccfb, 0xccfc, 0xccfd, 0xccfe, 0xccff, 0xcd00, 0xcd02, 0xcd03, 0xcd04, 0xcd05, 0xcd06, 0xcd07, 0xcd0a,
-0xcd0b, 0xcd0d, 0xcd0e, 0xcd0f, 0xcd11, 0xcd12, 0xcd13, 0xcd14, 0xcd15, 0xcd16, 0xcd17, 0xcd1a, 0xcd1c, 0xcd1e, 0xcd1f,
-0xcd20, 0xcd21, 0xcd22, 0xcd23, 0xcd25, 0xcd26, 0xcd27, 0xcd29, 0xcd2a, 0xcd2b, 0xcd2d, 0xcd2e, 0xcd2f, 0xcd30, 0xcd31,
-0xcd32, 0xcd33, 0xcd34, 0xcd35, 0xcd36, 0xcd37, 0xcd38, 0xcd3a, 0xcd3b, 0xcd3c, 0xcd3d, 0xcd3e, 0xcd3f, 0xcd40, 0xcd41,
-0xcd42, 0xcd43, 0xcd44, 0xcd45, 0xcd46, 0xcd47, 0xcd48, 0xcd49, 0xcd4a, 0xcd4b, 0xcd4c, 0xcd4d, 0xcd4e, 0xcd4f, 0xcd50,
-0xcd51, 0xcd52, 0xcd53, 0xcd54, 0xcd55, 0xcd56, 0xcd57, 0xcd58, 0xcd59, 0xcd5a, 0xcd5b, 0xcd5d, 0xcd5e, 0xcd5f, 0xcd61,
-0xcd62, 0xcd63, 0xcd65, 0xcd66, 0xcd67, 0xcd68, 0xcd69, 0xcd6a, 0xcd6b, 0xcd6e, 0xcd70, 0xcd72, 0xcd73, 0xcd74, 0xcd75,
-0xcd76, 0xcd77, 0xcd79, 0xcd7a, 0xcd7b, 0xcd7c, 0xcd7d, 0xcd7e, 0xcd7f, 0xcd80, 0xcd81, 0xcd82, 0xcd83, 0xcd84, 0xcd85,
-0xcd86, 0xcd87, 0xcd89, 0xcd8a, 0xcd8b, 0xcd8c, 0xcd8d, 0xcd8e, 0xcd8f, 0xcd90, 0xcd91, 0xcd92, 0xcd93, 0xcd96, 0xcd97,
-0xcd99, 0xcd9a, 0xcd9b, 0xcd9d, 0xcd9e, 0xcd9f, 0xcda0, 0xcda1, 0xcda2, 0xcda3, 0xcda6, 0xcda8, 0xcdaa, 0xcdab, 0xcdac,
-0xcdad, 0xcdae, 0xcdaf, 0xcdb1, 0xcdb2, 0xcdb3, 0xcdb4, 0xcdb5, 0xcdb6, 0xcdb7, 0xcdb8, 0xcdb9, 0xcdba, 0xcdbb, 0xcdbc,
-0xcdbd, 0xcdbe, 0xcdbf, 0xcdc0, 0xcdc1, 0xcdc2, 0xcdc3, 0xcdc5, 0xcdc6, 0xcdc7, 0xcdc8, 0xcdc9, 0xcdca, 0xcdcb, 0xcdcd,
-0xcdce, 0xcdcf, 0xcdd1, 0xcdd2, 0xcdd3, 0xcdd4, 0xcdd5, 0xcdd6, 0xcdd7, 0xcdd8, 0xcdd9, 0xcdda, 0xcddb, 0xcddc, 0xcddd,
-0xcdde, 0xcddf, 0xcde0, 0xcde1, 0xcde2, 0xcde3, 0xcde4, 0xcde5, 0xcde6, 0xcde7, 0xcde9, 0xcdea, 0xcdeb, 0xcded, 0xcdee,
-0xcdef, 0xcdf1, 0xcdf2, 0xcdf3, 0xcdf4, 0xcdf5, 0xcdf6, 0xcdf7, 0xcdfa, 0xcdfc, 0xcdfe, 0xcdff, 0xce00, 0xce01, 0xce02,
-0xce03, 0xce05, 0xce06, 0xce07, 0xce09, 0xce0a, 0xce0b, 0xce0d, 0xce0e, 0xce0f, 0xce10, 0xce11, 0xce12, 0xce13, 0xce15,
-0xce16, 0xce17, 0xce18, 0xce1a, 0xce1b, 0xce1c, 0xce1d, 0xce1e, 0xce1f, 0xce22, 0xce23, 0xce25, 0xce26, 0xce27, 0xce29,
-0xce2a, 0xce2b, 0xce2c, 0xce2d, 0xce2e, 0xce2f, 0xce32, 0xce34, 0xce36, 0xce37, 0xce38, 0xce39, 0xce3a, 0xce3b, 0xce3c,
-0xce3d, 0xce3e, 0xce3f, 0xce40, 0xce41, 0xce42, 0xce43, 0xce44, 0xce45, 0xce46, 0xce47, 0xce48, 0xce49, 0xce4a, 0xce4b,
-0xce4c, 0xce4d, 0xce4e, 0xce4f, 0xce50, 0xce51, 0xce52, 0xce53, 0xce54, 0xce55, 0xce56, 0xce57, 0xce5a, 0xce5b, 0xce5d,
-0xce5e, 0xce62, 0xce63, 0xce64, 0xce65, 0xce66, 0xce67, 0xce6a, 0xce6c, 0xce6e, 0xce6f, 0xce70, 0xce71, 0xce72, 0xce73,
-0xce76, 0xce77, 0xce79, 0xce7a, 0xce7b, 0xce7d, 0xce7e, 0xce7f, 0xce80, 0xce81, 0xce82, 0xce83, 0xce86, 0xce88, 0xce8a,
-0xce8b, 0xce8c, 0xce8d, 0xce8e, 0xce8f, 0xce92, 0xce93, 0xce95, 0xce96, 0xce97, 0xce99, 0xce9a, 0xce9b, 0xce9c, 0xce9d,
-0xce9e, 0xce9f, 0xcea2, 0xcea6, 0xcea7, 0xcea8, 0xcea9, 0xceaa, 0xceab, 0xceae, 0xceaf, 0xceb0, 0xceb1, 0xceb2, 0xceb3,
-0xceb4, 0xceb5, 0xceb6, 0xceb7, 0xceb8, 0xceb9, 0xceba, 0xcebb, 0xcebc, 0xcebd, 0xcebe, 0xcebf, 0xcec0, 0xcec2, 0xcec3,
-0xcec4, 0xcec5, 0xcec6, 0xcec7, 0xcec8, 0xcec9, 0xceca, 0xcecb, 0xcecc, 0xcecd, 0xcece, 0xcecf, 0xced0, 0xced1, 0xced2,
-0xced3, 0xced4, 0xced5, 0xced6, 0xced7, 0xced8, 0xced9, 0xceda, 0xcedb, 0xcedc, 0xcedd, 0xcede, 0xcedf, 0xcee0, 0xcee1,
-0xcee2, 0xcee3, 0xcee6, 0xcee7, 0xcee9, 0xceea, 0xceed, 0xceee, 0xceef, 0xcef0, 0xcef1, 0xcef2, 0xcef3, 0xcef6, 0xcefa,
-0xcefb, 0xcefc, 0xcefd, 0xcefe, 0xceff, 0xcf02, 0xcf03, 0xcf05, 0xcf06, 0xcf07, 0xcf09, 0xcf0a, 0xcf0b, 0xcf0c, 0xcf0d,
-0xcf0e, 0xcf0f, 0xcf12, 0xcf14, 0xcf16, 0xcf17, 0xcf18, 0xcf19, 0xcf1a, 0xcf1b, 0xcf1d, 0xcf1e, 0xcf1f, 0xcf21, 0xcf22,
-0xcf23, 0xcf25, 0xcf26, 0xcf27, 0xcf28, 0xcf29, 0xcf2a, 0xcf2b, 0xcf2e, 0xcf32, 0xcf33, 0xcf34, 0xcf35, 0xcf36, 0xcf37,
-0xcf39, 0xcf3a, 0xcf3b, 0xcf3c, 0xcf3d, 0xcf3e, 0xcf3f, 0xcf40, 0xcf41, 0xcf42, 0xcf43, 0xcf44, 0xcf45, 0xcf46, 0xcf47,
-0xcf48, 0xcf49, 0xcf4a, 0xcf4b, 0xcf4c, 0xcf4d, 0xcf4e, 0xcf4f, 0xcf50, 0xcf51, 0xcf52, 0xcf53, 0xcf56, 0xcf57, 0xcf59,
-0xcf5a, 0xcf5b, 0xcf5d, 0xcf5e, 0xcf5f, 0xcf60, 0xcf61, 0xcf62, 0xcf63, 0xcf66, 0xcf68, 0xcf6a, 0xcf6b, 0xcf6c, 0xcf6d,
-0xcf6e, 0xcf6f, 0xcf72, 0xcf73, 0xcf75, 0xcf76, 0xcf77, 0xcf79, 0xcf7a, 0xcf7b, 0xcf7c, 0xcf7d, 0xcf7e, 0xcf7f, 0xcf81,
-0xcf82, 0xcf83, 0xcf84, 0xcf86, 0xcf87, 0xcf88, 0xcf89, 0xcf8a, 0xcf8b, 0xcf8d, 0xcf8e, 0xcf8f, 0xcf90, 0xcf91, 0xcf92,
-0xcf93, 0xcf94, 0xcf95, 0xcf96, 0xcf97, 0xcf98, 0xcf99, 0xcf9a, 0xcf9b, 0xcf9c, 0xcf9d, 0xcf9e, 0xcf9f, 0xcfa0, 0xcfa2,
-0xcfa3, 0xcfa4, 0xcfa5, 0xcfa6, 0xcfa7, 0xcfa9, 0xcfaa, 0xcfab, 0xcfac, 0xcfad, 0xcfae, 0xcfaf, 0xcfb1, 0xcfb2, 0xcfb3,
-0xcfb4, 0xcfb5, 0xcfb6, 0xcfb7, 0xcfb8, 0xcfb9, 0xcfba, 0xcfbb, 0xcfbc, 0xcfbd, 0xcfbe, 0xcfbf, 0xcfc0, 0xcfc1, 0xcfc2,
-0xcfc3, 0xcfc5, 0xcfc6, 0xcfc7, 0xcfc8, 0xcfc9, 0xcfca, 0xcfcb, 0xcfcc, 0xcfcd, 0xcfce, 0xcfcf, 0xcfd0, 0xcfd1, 0xcfd2,
-0xcfd3, 0xcfd4, 0xcfd5, 0xcfd6, 0xcfd7, 0xcfd8, 0xcfd9, 0xcfda, 0xcfdb, 0xcfdc, 0xcfdd, 0xcfde, 0xcfdf, 0xcfe2, 0xcfe3,
-0xcfe5, 0xcfe6, 0xcfe7, 0xcfe9, 0xcfea, 0xcfeb, 0xcfec, 0xcfed, 0xcfee, 0xcfef, 0xcff2, 0xcff4, 0xcff6, 0xcff7, 0xcff8,
-0xcff9, 0xcffa, 0xcffb, 0xcffd, 0xcffe, 0xcfff, 0xd001, 0xd002, 0xd003, 0xd005, 0xd006, 0xd007, 0xd008, 0xd009, 0xd00a,
-0xd00b, 0xd00c, 0xd00d, 0xd00e, 0xd00f, 0xd010, 0xd012, 0xd013, 0xd014, 0xd015, 0xd016, 0xd017, 0xd019, 0xd01a, 0xd01b,
-0xd01c, 0xd01d, 0xd01e, 0xd01f, 0xd020, 0xd021, 0xd022, 0xd023, 0xd024, 0xd025, 0xd026, 0xd027, 0xd028, 0xd029, 0xd02a,
-0xd02b, 0xd02c, 0xd02e, 0xd02f, 0xd030, 0xd031, 0xd032, 0xd033, 0xd036, 0xd037, 0xd039, 0xd03a, 0xd03b, 0xd03d, 0xd03e,
-0xd03f, 0xd040, 0xd041, 0xd042, 0xd043, 0xd046, 0xd048, 0xd04a, 0xd04b, 0xd04c, 0xd04d, 0xd04e, 0xd04f, 0xd051, 0xd052,
-0xd053, 0xd055, 0xd056, 0xd057, 0xd059, 0xd05a, 0xd05b, 0xd05c, 0xd05d, 0xd05e, 0xd05f, 0xd061, 0xd062, 0xd063, 0xd064,
-0xd065, 0xd066, 0xd067, 0xd068, 0xd069, 0xd06a, 0xd06b, 0xd06e, 0xd06f, 0xd071, 0xd072, 0xd073, 0xd075, 0xd076, 0xd077,
-0xd078, 0xd079, 0xd07a, 0xd07b, 0xd07e, 0xd07f, 0xd080, 0xd082, 0xd083, 0xd084, 0xd085, 0xd086, 0xd087, 0xd088, 0xd089,
-0xd08a, 0xd08b, 0xd08c, 0xd08d, 0xd08e, 0xd08f, 0xd090, 0xd091, 0xd092, 0xd093, 0xd094, 0xd095, 0xd096, 0xd097, 0xd098,
-0xd099, 0xd09a, 0xd09b, 0xd09c, 0xd09d, 0xd09e, 0xd09f, 0xd0a0, 0xd0a1, 0xd0a2, 0xd0a3, 0xd0a6, 0xd0a7, 0xd0a9, 0xd0aa,
-0xd0ab, 0xd0ad, 0xd0ae, 0xd0af, 0xd0b0, 0xd0b1, 0xd0b2, 0xd0b3, 0xd0b6, 0xd0b8, 0xd0ba, 0xd0bb, 0xd0bc, 0xd0bd, 0xd0be,
-0xd0bf, 0xd0c2, 0xd0c3, 0xd0c5, 0xd0c6, 0xd0c7, 0xd0ca, 0xd0cb, 0xd0cc, 0xd0cd, 0xd0ce, 0xd0cf, 0xd0d2, 0xd0d6, 0xd0d7,
-0xd0d8, 0xd0d9, 0xd0da, 0xd0db, 0xd0de, 0xd0df, 0xd0e1, 0xd0e2, 0xd0e3, 0xd0e5, 0xd0e6, 0xd0e7, 0xd0e8, 0xd0e9, 0xd0ea,
-0xd0eb, 0xd0ee, 0xd0f2, 0xd0f3, 0xd0f4, 0xd0f5, 0xd0f6, 0xd0f7, 0xd0f9, 0xd0fa, 0xd0fb, 0xd0fc, 0xd0fd, 0xd0fe, 0xd0ff,
-0xd100, 0xd101, 0xd102, 0xd103, 0xd104, 0xd105, 0xd106, 0xd107, 0xd108, 0xd109, 0xd10a, 0xd10b, 0xd10c, 0xd10e, 0xd10f,
-0xd110, 0xd111, 0xd112, 0xd113, 0xd114, 0xd115, 0xd116, 0xd117, 0xd118, 0xd119, 0xd11a, 0xd11b, 0xd11c, 0xd11d, 0xd11e,
-0xd11f, 0xd120, 0xd121, 0xd122, 0xd123, 0xd124, 0xd125, 0xd126, 0xd127, 0xd128, 0xd129, 0xd12a, 0xd12b, 0xd12c, 0xd12d,
-0xd12e, 0xd12f, 0xd132, 0xd133, 0xd135, 0xd136, 0xd137, 0xd139, 0xd13b, 0xd13c, 0xd13d, 0xd13e, 0xd13f, 0xd142, 0xd146,
-0xd147, 0xd148, 0xd149, 0xd14a, 0xd14b, 0xd14e, 0xd14f, 0xd151, 0xd152, 0xd153, 0xd155, 0xd156, 0xd157, 0xd158, 0xd159,
-0xd15a, 0xd15b, 0xd15e, 0xd160, 0xd162, 0xd163, 0xd164, 0xd165, 0xd166, 0xd167, 0xd169, 0xd16a, 0xd16b, 0xd16d, 0xd16e,
-0xd16f, 0xd170, 0xd171, 0xd172, 0xd173, 0xd174, 0xd175, 0xd176, 0xd177, 0xd178, 0xd179, 0xd17a, 0xd17b, 0xd17d, 0xd17e,
-0xd17f, 0xd180, 0xd181, 0xd182, 0xd183, 0xd185, 0xd186, 0xd187, 0xd189, 0xd18a, 0xd18b, 0xd18c, 0xd18d, 0xd18e, 0xd18f,
-0xd190, 0xd191, 0xd192, 0xd193, 0xd194, 0xd195, 0xd196, 0xd197, 0xd198, 0xd199, 0xd19a, 0xd19b, 0xd19c, 0xd19d, 0xd19e,
-0xd19f, 0xd1a2, 0xd1a3, 0xd1a5, 0xd1a6, 0xd1a7, 0xd1a9, 0xd1aa, 0xd1ab, 0xd1ac, 0xd1ad, 0xd1ae, 0xd1af, 0xd1b2, 0xd1b4,
-0xd1b6, 0xd1b7, 0xd1b8, 0xd1b9, 0xd1bb, 0xd1bd, 0xd1be, 0xd1bf, 0xd1c1, 0xd1c2, 0xd1c3, 0xd1c4, 0xd1c5, 0xd1c6, 0xd1c7,
-0xd1c8, 0xd1c9, 0xd1ca, 0xd1cb, 0xd1cc, 0xd1cd, 0xd1ce, 0xd1cf, 0xd1d0, 0xd1d1, 0xd1d2, 0xd1d3, 0xd1d4, 0xd1d5, 0xd1d6,
-0xd1d7, 0xd1d9, 0xd1da, 0xd1db, 0xd1dc, 0xd1dd, 0xd1de, 0xd1df, 0xd1e0, 0xd1e1, 0xd1e2, 0xd1e3, 0xd1e4, 0xd1e5, 0xd1e6,
-0xd1e7, 0xd1e8, 0xd1e9, 0xd1ea, 0xd1eb, 0xd1ec, 0xd1ed, 0xd1ee, 0xd1ef, 0xd1f0, 0xd1f1, 0xd1f2, 0xd1f3, 0xd1f5, 0xd1f6,
-0xd1f7, 0xd1f9, 0xd1fa, 0xd1fb, 0xd1fc, 0xd1fd, 0xd1fe, 0xd1ff, 0xd200, 0xd201, 0xd202, 0xd203, 0xd204, 0xd205, 0xd206,
-0xd208, 0xd20a, 0xd20b, 0xd20c, 0xd20d, 0xd20e, 0xd20f, 0xd211, 0xd212, 0xd213, 0xd214, 0xd215, 0xd216, 0xd217, 0xd218,
-0xd219, 0xd21a, 0xd21b, 0xd21c, 0xd21d, 0xd21e, 0xd21f, 0xd220, 0xd221, 0xd222, 0xd223, 0xd224, 0xd225, 0xd226, 0xd227,
-0xd228, 0xd229, 0xd22a, 0xd22b, 0xd22e, 0xd22f, 0xd231, 0xd232, 0xd233, 0xd235, 0xd236, 0xd237, 0xd238, 0xd239, 0xd23a,
-0xd23b, 0xd23e, 0xd240, 0xd242, 0xd243, 0xd244, 0xd245, 0xd246, 0xd247, 0xd249, 0xd24a, 0xd24b, 0xd24c, 0xd24d, 0xd24e,
-0xd24f, 0xd250, 0xd251, 0xd252, 0xd253, 0xd254, 0xd255, 0xd256, 0xd257, 0xd258, 0xd259, 0xd25a, 0xd25b, 0xd25d, 0xd25e,
-0xd25f, 0xd260, 0xd261, 0xd262, 0xd263, 0xd265, 0xd266, 0xd267, 0xd268, 0xd269, 0xd26a, 0xd26b, 0xd26c, 0xd26d, 0xd26e,
-0xd26f, 0xd270, 0xd271, 0xd272, 0xd273, 0xd274, 0xd275, 0xd276, 0xd277, 0xd278, 0xd279, 0xd27a, 0xd27b, 0xd27c, 0xd27d,
-0xd27e, 0xd27f, 0xd282, 0xd283, 0xd285, 0xd286, 0xd287, 0xd289, 0xd28a, 0xd28b, 0xd28c, 0xd28d, 0xd28e, 0xd28f, 0xd292,
-0xd293, 0xd294, 0xd296, 0xd297, 0xd298, 0xd299, 0xd29a, 0xd29b, 0xd29d, 0xd29e, 0xd29f, 0xd2a1, 0xd2a2, 0xd2a3, 0xd2a5,
-0xd2a6, 0xd2a7, 0xd2a8, 0xd2a9, 0xd2aa, 0xd2ab, 0xd2ad, 0xd2ae, 0xd2af, 0xd2b0, 0xd2b2, 0xd2b3, 0xd2b4, 0xd2b5, 0xd2b6,
-0xd2b7, 0xd2ba, 0xd2bb, 0xd2bd, 0xd2be, 0xd2c1, 0xd2c3, 0xd2c4, 0xd2c5, 0xd2c6, 0xd2c7, 0xd2ca, 0xd2cc, 0xd2cd, 0xd2ce,
-0xd2cf, 0xd2d0, 0xd2d1, 0xd2d2, 0xd2d3, 0xd2d5, 0xd2d6, 0xd2d7, 0xd2d9, 0xd2da, 0xd2db, 0xd2dd, 0xd2de, 0xd2df, 0xd2e0,
-0xd2e1, 0xd2e2, 0xd2e3, 0xd2e6, 0xd2e7, 0xd2e8, 0xd2e9, 0xd2ea, 0xd2eb, 0xd2ec, 0xd2ed, 0xd2ee, 0xd2ef, 0xd2f2, 0xd2f3,
-0xd2f5, 0xd2f6, 0xd2f7, 0xd2f9, 0xd2fa, 0xd2fb, 0xd2fc, 0xd2fd, 0xd2fe, 0xd2ff, 0xd302, 0xd304, 0xd306, 0xd307, 0xd308,
-0xd309, 0xd30a, 0xd30b, 0xd30f, 0xd311, 0xd312, 0xd313, 0xd315, 0xd317, 0xd318, 0xd319, 0xd31a, 0xd31b, 0xd31e, 0xd322,
-0xd323, 0xd324, 0xd326, 0xd327, 0xd32a, 0xd32b, 0xd32d, 0xd32e, 0xd32f, 0xd331, 0xd332, 0xd333, 0xd334, 0xd335, 0xd336,
-0xd337, 0xd33a, 0xd33e, 0xd33f, 0xd340, 0xd341, 0xd342, 0xd343, 0xd346, 0xd347, 0xd348, 0xd349, 0xd34a, 0xd34b, 0xd34c,
-0xd34d, 0xd34e, 0xd34f, 0xd350, 0xd351, 0xd352, 0xd353, 0xd354, 0xd355, 0xd356, 0xd357, 0xd358, 0xd359, 0xd35a, 0xd35b,
-0xd35c, 0xd35d, 0xd35e, 0xd35f, 0xd360, 0xd361, 0xd362, 0xd363, 0xd364, 0xd365, 0xd366, 0xd367, 0xd368, 0xd369, 0xd36a,
-0xd36b, 0xd36c, 0xd36d, 0xd36e, 0xd36f, 0xd370, 0xd371, 0xd372, 0xd373, 0xd374, 0xd375, 0xd376, 0xd377, 0xd378, 0xd379,
-0xd37a, 0xd37b, 0xd37e, 0xd37f, 0xd381, 0xd382, 0xd383, 0xd385, 0xd386, 0xd387, 0xd388, 0xd389, 0xd38a, 0xd38b, 0xd38e,
-0xd392, 0xd393, 0xd394, 0xd395, 0xd396, 0xd397, 0xd39a, 0xd39b, 0xd39d, 0xd39e, 0xd39f, 0xd3a1, 0xd3a2, 0xd3a3, 0xd3a4,
-0xd3a5, 0xd3a6, 0xd3a7, 0xd3aa, 0xd3ac, 0xd3ae, 0xd3af, 0xd3b0, 0xd3b1, 0xd3b2, 0xd3b3, 0xd3b5, 0xd3b6, 0xd3b7, 0xd3b9,
-0xd3ba, 0xd3bb, 0xd3bd, 0xd3be, 0xd3bf, 0xd3c0, 0xd3c1, 0xd3c2, 0xd3c3, 0xd3c6, 0xd3c7, 0xd3ca, 0xd3cb, 0xd3cc, 0xd3cd,
-0xd3ce, 0xd3cf, 0xd3d1, 0xd3d2, 0xd3d3, 0xd3d4, 0xd3d5, 0xd3d6, 0xd3d7, 0xd3d9, 0xd3da, 0xd3db, 0xd3dc, 0xd3dd, 0xd3de,
-0xd3df, 0xd3e0, 0xd3e2, 0xd3e4, 0xd3e5, 0xd3e6, 0xd3e7, 0xd3e8, 0xd3e9, 0xd3ea, 0xd3eb, 0xd3ee, 0xd3ef, 0xd3f1, 0xd3f2,
-0xd3f3, 0xd3f5, 0xd3f6, 0xd3f7, 0xd3f8, 0xd3f9, 0xd3fa, 0xd3fb, 0xd3fe, 0xd400, 0xd402, 0xd403, 0xd404, 0xd405, 0xd406,
-0xd407, 0xd409, 0xd40a, 0xd40b, 0xd40c, 0xd40d, 0xd40e, 0xd40f, 0xd410, 0xd411, 0xd412, 0xd413, 0xd414, 0xd415, 0xd416,
-0xd417, 0xd418, 0xd419, 0xd41a, 0xd41b, 0xd41c, 0xd41e, 0xd41f, 0xd420, 0xd421, 0xd422, 0xd423, 0xd424, 0xd425, 0xd426,
-0xd427, 0xd428, 0xd429, 0xd42a, 0xd42b, 0xd42c, 0xd42d, 0xd42e, 0xd42f, 0xd430, 0xd431, 0xd432, 0xd433, 0xd434, 0xd435,
-0xd436, 0xd437, 0xd438, 0xd439, 0xd43a, 0xd43b, 0xd43c, 0xd43d, 0xd43e, 0xd43f, 0xd441, 0xd442, 0xd443, 0xd445, 0xd446,
-0xd447, 0xd448, 0xd449, 0xd44a, 0xd44b, 0xd44c, 0xd44d, 0xd44e, 0xd44f, 0xd450, 0xd451, 0xd452, 0xd453, 0xd454, 0xd455,
-0xd456, 0xd457, 0xd458, 0xd459, 0xd45a, 0xd45b, 0xd45d, 0xd45e, 0xd45f, 0xd461, 0xd462, 0xd463, 0xd465, 0xd466, 0xd467,
-0xd468, 0xd469, 0xd46a, 0xd46b, 0xd46c, 0xd46e, 0xd470, 0xd471, 0xd472, 0xd473, 0xd474, 0xd475, 0xd476, 0xd477, 0xd47a,
-0xd47b, 0xd47d, 0xd47e, 0xd481, 0xd483, 0xd484, 0xd485, 0xd486, 0xd487, 0xd48a, 0xd48c, 0xd48e, 0xd48f, 0xd490, 0xd491,
-0xd492, 0xd493, 0xd495, 0xd496, 0xd497, 0xd498, 0xd499, 0xd49a, 0xd49b, 0xd49c, 0xd49d, 0xd49e, 0xd49f, 0xd4a0, 0xd4a1,
-0xd4a2, 0xd4a3, 0xd4a4, 0xd4a5, 0xd4a6, 0xd4a7, 0xd4a8, 0xd4aa, 0xd4ab, 0xd4ac, 0xd4ad, 0xd4ae, 0xd4af, 0xd4b0, 0xd4b1,
-0xd4b2, 0xd4b3, 0xd4b4, 0xd4b5, 0xd4b6, 0xd4b7, 0xd4b8, 0xd4b9, 0xd4ba, 0xd4bb, 0xd4bc, 0xd4bd, 0xd4be, 0xd4bf, 0xd4c0,
-0xd4c1, 0xd4c2, 0xd4c3, 0xd4c4, 0xd4c5, 0xd4c6, 0xd4c7, 0xd4c8, 0xd4c9, 0xd4ca, 0xd4cb, 0xd4cd, 0xd4ce, 0xd4cf, 0xd4d1,
-0xd4d2, 0xd4d3, 0xd4d5, 0xd4d6, 0xd4d7, 0xd4d8, 0xd4d9, 0xd4da, 0xd4db, 0xd4dd, 0xd4de, 0xd4e0, 0xd4e1, 0xd4e2, 0xd4e3,
-0xd4e4, 0xd4e5, 0xd4e6, 0xd4e7, 0xd4e9, 0xd4ea, 0xd4eb, 0xd4ed, 0xd4ee, 0xd4ef, 0xd4f1, 0xd4f2, 0xd4f3, 0xd4f4, 0xd4f5,
-0xd4f6, 0xd4f7, 0xd4f9, 0xd4fa, 0xd4fc, 0xd4fe, 0xd4ff, 0xd500, 0xd501, 0xd502, 0xd503, 0xd505, 0xd506, 0xd507, 0xd509,
-0xd50a, 0xd50b, 0xd50d, 0xd50e, 0xd50f, 0xd510, 0xd511, 0xd512, 0xd513, 0xd516, 0xd518, 0xd519, 0xd51a, 0xd51b, 0xd51c,
-0xd51d, 0xd51e, 0xd51f, 0xd520, 0xd521, 0xd522, 0xd523, 0xd524, 0xd525, 0xd526, 0xd527, 0xd528, 0xd529, 0xd52a, 0xd52b,
-0xd52c, 0xd52d, 0xd52e, 0xd52f, 0xd530, 0xd531, 0xd532, 0xd533, 0xd534, 0xd535, 0xd536, 0xd537, 0xd538, 0xd539, 0xd53a,
-0xd53b, 0xd53e, 0xd53f, 0xd541, 0xd542, 0xd543, 0xd545, 0xd546, 0xd547, 0xd548, 0xd549, 0xd54a, 0xd54b, 0xd54e, 0xd550,
-0xd552, 0xd553, 0xd554, 0xd555, 0xd556, 0xd557, 0xd55a, 0xd55b, 0xd55d, 0xd55e, 0xd55f, 0xd561, 0xd562, 0xd563, 0xd564,
-0xd566, 0xd567, 0xd56a, 0xd56c, 0xd56e, 0xd56f, 0xd570, 0xd571, 0xd572, 0xd573, 0xd576, 0xd577, 0xd579, 0xd57a, 0xd57b,
-0xd57d, 0xd57e, 0xd57f, 0xd580, 0xd581, 0xd582, 0xd583, 0xd586, 0xd58a, 0xd58b, 0xd58c, 0xd58d, 0xd58e, 0xd58f, 0xd591,
-0xd592, 0xd593, 0xd594, 0xd595, 0xd596, 0xd597, 0xd598, 0xd599, 0xd59a, 0xd59b, 0xd59c, 0xd59d, 0xd59e, 0xd59f, 0xd5a0,
-0xd5a1, 0xd5a2, 0xd5a3, 0xd5a4, 0xd5a6, 0xd5a7, 0xd5a8, 0xd5a9, 0xd5aa, 0xd5ab, 0xd5ac, 0xd5ad, 0xd5ae, 0xd5af, 0xd5b0,
-0xd5b1, 0xd5b2, 0xd5b3, 0xd5b4, 0xd5b5, 0xd5b6, 0xd5b7, 0xd5b8, 0xd5b9, 0xd5ba, 0xd5bb, 0xd5bc, 0xd5bd, 0xd5be, 0xd5bf,
-0xd5c0, 0xd5c1, 0xd5c2, 0xd5c3, 0xd5c4, 0xd5c5, 0xd5c6, 0xd5c7, 0xd5ca, 0xd5cb, 0xd5cd, 0xd5ce, 0xd5cf, 0xd5d1, 0xd5d3,
-0xd5d4, 0xd5d5, 0xd5d6, 0xd5d7, 0xd5da, 0xd5dc, 0xd5de, 0xd5df, 0xd5e0, 0xd5e1, 0xd5e2, 0xd5e3, 0xd5e6, 0xd5e7, 0xd5e9,
-0xd5ea, 0xd5eb, 0xd5ed, 0xd5ee, 0xd5ef, 0xd5f0, 0xd5f1, 0xd5f2, 0xd5f3, 0xd5f6, 0xd5f8, 0xd5fa, 0xd5fb, 0xd5fc, 0xd5fd,
-0xd5fe, 0xd5ff, 0xd602, 0xd603, 0xd605, 0xd606, 0xd607, 0xd609, 0xd60a, 0xd60b, 0xd60c, 0xd60d, 0xd60e, 0xd60f, 0xd612,
-0xd616, 0xd617, 0xd618, 0xd619, 0xd61a, 0xd61b, 0xd61d, 0xd61e, 0xd61f, 0xd621, 0xd622, 0xd623, 0xd625, 0xd626, 0xd627,
-0xd628, 0xd629, 0xd62a, 0xd62b, 0xd62c, 0xd62e, 0xd62f, 0xd630, 0xd631, 0xd632, 0xd633, 0xd634, 0xd635, 0xd636, 0xd637,
-0xd63a, 0xd63b, 0xd63d, 0xd63e, 0xd63f, 0xd641, 0xd642, 0xd643, 0xd644, 0xd646, 0xd647, 0xd64a, 0xd64c, 0xd64e, 0xd64f,
-0xd650, 0xd652, 0xd653, 0xd656, 0xd657, 0xd659, 0xd65a, 0xd65b, 0xd65d, 0xd65e, 0xd65f, 0xd660, 0xd661, 0xd662, 0xd663,
-0xd664, 0xd665, 0xd666, 0xd668, 0xd66a, 0xd66b, 0xd66c, 0xd66d, 0xd66e, 0xd66f, 0xd672, 0xd673, 0xd675, 0xd676, 0xd677,
-0xd678, 0xd679, 0xd67a, 0xd67b, 0xd67c, 0xd67d, 0xd67e, 0xd67f, 0xd680, 0xd681, 0xd682, 0xd684, 0xd686, 0xd687, 0xd688,
-0xd689, 0xd68a, 0xd68b, 0xd68e, 0xd68f, 0xd691, 0xd692, 0xd693, 0xd695, 0xd696, 0xd697, 0xd698, 0xd699, 0xd69a, 0xd69b,
-0xd69c, 0xd69e, 0xd6a0, 0xd6a2, 0xd6a3, 0xd6a4, 0xd6a5, 0xd6a6, 0xd6a7, 0xd6a9, 0xd6aa, 0xd6ab, 0xd6ad, 0xd6ae, 0xd6af,
-0xd6b1, 0xd6b2, 0xd6b3, 0xd6b4, 0xd6b5, 0xd6b6, 0xd6b7, 0xd6b8, 0xd6ba, 0xd6bc, 0xd6bd, 0xd6be, 0xd6bf, 0xd6c0, 0xd6c1,
-0xd6c2, 0xd6c3, 0xd6c6, 0xd6c7, 0xd6c9, 0xd6ca, 0xd6cb, 0xd6cd, 0xd6ce, 0xd6cf, 0xd6d0, 0xd6d2, 0xd6d3, 0xd6d5, 0xd6d6,
-0xd6d8, 0xd6da, 0xd6db, 0xd6dc, 0xd6dd, 0xd6de, 0xd6df, 0xd6e1, 0xd6e2, 0xd6e3, 0xd6e5, 0xd6e6, 0xd6e7, 0xd6e9, 0xd6ea,
-0xd6eb, 0xd6ec, 0xd6ed, 0xd6ee, 0xd6ef, 0xd6f1, 0xd6f2, 0xd6f3, 0xd6f4, 0xd6f6, 0xd6f7, 0xd6f8, 0xd6f9, 0xd6fa, 0xd6fb,
-0xd6fe, 0xd6ff, 0xd701, 0xd702, 0xd703, 0xd705, 0xd706, 0xd707, 0xd708, 0xd709, 0xd70a, 0xd70b, 0xd70c, 0xd70d, 0xd70e,
-0xd70f, 0xd710, 0xd712, 0xd713, 0xd714, 0xd715, 0xd716, 0xd717, 0xd71a, 0xd71b, 0xd71d, 0xd71e, 0xd71f, 0xd721, 0xd722,
-0xd723, 0xd724, 0xd725, 0xd726, 0xd727, 0xd72a, 0xd72c, 0xd72e, 0xd72f, 0xd730, 0xd731, 0xd732, 0xd733, 0xd736, 0xd737,
-0xd739, 0xd73a, 0xd73b, 0xd73d, 0xd73e, 0xd73f, 0xd740, 0xd741, 0xd742, 0xd743, 0xd745, 0xd746, 0xd748, 0xd74a, 0xd74b,
-0xd74c, 0xd74d, 0xd74e, 0xd74f, 0xd752, 0xd753, 0xd755, 0xd75a, 0xd75b, 0xd75c, 0xd75d, 0xd75e, 0xd75f, 0xd762, 0xd764,
-0xd766, 0xd767, 0xd768, 0xd76a, 0xd76b, 0xd76d, 0xd76e, 0xd76f, 0xd771, 0xd772, 0xd773, 0xd775, 0xd776, 0xd777, 0xd778,
-0xd779, 0xd77a, 0xd77b, 0xd77e, 0xd77f, 0xd780, 0xd782, 0xd783, 0xd784, 0xd785, 0xd786, 0xd787, 0xd78a, 0xd78b, 0xd78d,
-0xd78e, 0xd78f, 0xd791, 0xd792, 0xd793, 0xd794, 0xd795, 0xd796, 0xd797, 0xd79a, 0xd79c, 0xd79e, 0xd79f, 0xd7a0, 0xd7a1,
-0xd7a2, 0xd7a3
-};
-
-#endif // CP494CODETBL_H
diff --git a/src/plugins/codecs/kr/kr.pro b/src/plugins/codecs/kr/kr.pro
deleted file mode 100644
index 6c0ea3d415..0000000000
--- a/src/plugins/codecs/kr/kr.pro
+++ /dev/null
@@ -1,18 +0,0 @@
-TARGET = qkrcodecs
-load(qt_plugin)
-
-CONFIG += warn_on
-DESTDIR = $$QT.core.plugins/codecs
-QT = core
-
-HEADERS = qeuckrcodec.h \
- cp949codetbl.h
-SOURCES = qeuckrcodec.cpp \
- main.cpp
-
-wince*: {
- SOURCES += ../../../corelib/kernel/qfunctions_wince.cpp
-}
-
-target.path += $$[QT_INSTALL_PLUGINS]/codecs
-INSTALLS += target
diff --git a/src/plugins/codecs/kr/main.cpp b/src/plugins/codecs/kr/main.cpp
deleted file mode 100644
index 16c49b6eea..0000000000
--- a/src/plugins/codecs/kr/main.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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 <qtextcodecplugin.h>
-#include <qtextcodec.h>
-#include <qstringlist.h>
-
-#include "qeuckrcodec.h"
-
-QT_BEGIN_NAMESPACE
-
-#ifndef QT_NO_TEXTCODECPLUGIN
-
-class KRTextCodecs : public QTextCodecPlugin
-{
-public:
- KRTextCodecs() {}
-
- QList<QByteArray> names() const;
- QList<QByteArray> aliases() const;
- QList<int> mibEnums() const;
-
- QTextCodec *createForMib(int);
- QTextCodec *createForName(const QByteArray &);
-};
-
-QList<QByteArray> KRTextCodecs::names() const
-{
- QList<QByteArray> list;
- list += QEucKrCodec::_name();
-#ifdef Q_OS_UNIX
- list += QFontKsc5601Codec::_name();
-#endif
- list += QCP949Codec::_name();
- return list;
-}
-
-QList<QByteArray> KRTextCodecs::aliases() const
-{
- QList<QByteArray> list;
- list += QEucKrCodec::_aliases();
-#ifdef Q_OS_UNIX
- list += QFontKsc5601Codec::_aliases();
-#endif
- list += QCP949Codec::_aliases();
- return list;
-}
-
-QList<int> KRTextCodecs::mibEnums() const
-{
- QList<int> list;
- list += QEucKrCodec::_mibEnum();
-#ifdef Q_OS_UNIX
- list += QFontKsc5601Codec::_mibEnum();
-#endif
- list += QCP949Codec::_mibEnum();
- return list;
-}
-
-QTextCodec *KRTextCodecs::createForMib(int mib)
-{
- if (mib == QEucKrCodec::_mibEnum())
- return new QEucKrCodec;
-#ifdef Q_OS_UNIX
- if (mib == QFontKsc5601Codec::_mibEnum())
- return new QFontKsc5601Codec;
-#endif
- if (mib == QCP949Codec::_mibEnum())
- return new QCP949Codec;
- return 0;
-}
-
-
-QTextCodec *KRTextCodecs::createForName(const QByteArray &name)
-{
- if (name == QEucKrCodec::_name() || QEucKrCodec::_aliases().contains(name))
- return new QEucKrCodec;
-#ifdef Q_OS_UNIX
- if (name == QFontKsc5601Codec::_name() || QFontKsc5601Codec::_aliases().contains(name))
- return new QFontKsc5601Codec;
-#endif
- if (name == QCP949Codec::_name() || QCP949Codec::_aliases().contains(name))
- return new QCP949Codec;
- return 0;
-}
-
-
-Q_EXPORT_STATIC_PLUGIN(KRTextCodecs);
-Q_EXPORT_PLUGIN2(qkrcodecs, KRTextCodecs);
-
-#endif // QT_NO_TEXTCODECPLUGIN
-
-QT_END_NAMESPACE
diff --git a/src/plugins/codecs/kr/qeuckrcodec.cpp b/src/plugins/codecs/kr/qeuckrcodec.cpp
deleted file mode 100644
index 979b9bb8bc..0000000000
--- a/src/plugins/codecs/kr/qeuckrcodec.cpp
+++ /dev/null
@@ -1,3571 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-// Most of the cp949 code was originally written by Joon-Kyu Park, and is included
-// in Qt with the author's permission and the grateful thanks of the Qt team.
-
-/*! \class QEucKrCodec
- \reentrant
- \internal
-*/
-
-/*!
- \class QCP949Codec
- \internal
- \brief The QCP949Codec class handles encoding and decoding of text in CP949 encoding.
-
- CP949 stands for code page 949, default code page for Korean text on Windows.
-*/
-
-/* these must be made \internal
- virtual int mibEnum() const;
- const char* name() const;
-
- QTextDecoder* makeDecoder() const;
-
- QByteArray fromUnicode(const QString& uc, int& lenInOut) const;
- QString toUnicode(const char* chars, int len) const;
-*/
-
-#include "qeuckrcodec.h"
-#include "cp949codetbl.h"
-
-QT_BEGIN_NAMESPACE
-
-#ifndef QT_NO_TEXTCODEC
-unsigned int qt_Ksc5601ToUnicode(unsigned int code);
-
-unsigned int qt_UnicodeToKsc5601(unsigned int unicode);
-
-#define IsEucChar(c) (((c) >= 0xa1) && ((c) <= 0xfe))
-#define IsCP949Char(c) (((c) >= 0x81) && ((c) <= 0xa0))
-#define QValidChar(u) ((u) ? QChar((ushort)(u)) : QChar(QChar::ReplacementCharacter))
-
-/*!
- \reimp
-*/
-
-QByteArray QEucKrCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
-{
- char replacement = '?';
- if (state) {
- if (state->flags & ConvertInvalidToNull)
- replacement = 0;
- }
- int invalid = 0;
-
- int rlen = 2*len + 1;
- QByteArray rstr;
- rstr.resize(rlen);
- uchar* cursor = (uchar*)rstr.data();
- for (int i = 0; i < len; i++) {
- unsigned short ch = uc[i].unicode();
- uint j;
- if (ch < 0x80) {
- // ASCII
- *cursor++ = ch;
- } else if ((j = qt_UnicodeToKsc5601(ch))) {
- // KSC 5601
- *cursor++ = (j >> 8) | 0x80;
- *cursor++ = (j & 0xff) | 0x80;
- } else {
- // Error
- *cursor++ = replacement;
- ++invalid;
- }
- }
- rstr.resize(cursor - (uchar*)rstr.constData());
-
- if (state) {
- state->invalidChars += invalid;
- }
- return rstr;
-}
-
-QString QEucKrCodec::convertToUnicode(const char* chars, int len, ConverterState *state) const
-{
- uchar buf[2] = {0, 0};
- int nbuf = 0;
- QChar replacement = QChar::ReplacementCharacter;
- if (state) {
- if (state->flags & ConvertInvalidToNull)
- replacement = QChar::Null;
- nbuf = state->remainingChars;
- buf[0] = state->state_data[0];
- buf[1] = state->state_data[1];
- }
- int invalid = 0;
-
- QString result;
- for (int i=0; i<len; i++) {
- uchar ch = chars[i];
- if (ch == 0)
- break;
- switch (nbuf) {
- case 0:
- if (ch < 0x80) {
- // ASCII
- result += QLatin1Char(ch);
- } else if (IsEucChar(ch)) {
- // KSC 5601
- buf[0] = ch;
- nbuf = 1;
- } else {
- // Invalid
- result += replacement;
- ++invalid;
- }
- break;
- case 1:
- // KSC 5601
- if (IsEucChar(ch)) {
- uint u = qt_Ksc5601ToUnicode((buf[0] << 8) | ch);
- result += QValidChar(u);
- } else {
- // Error
- result += replacement;
- ++invalid;
- }
- nbuf = 0;
- break;
- }
- }
-
- if (state) {
- state->remainingChars = nbuf;
- state->state_data[0] = buf[0];
- state->state_data[1] = buf[1];
- state->invalidChars += invalid;
- }
- return result;
-}
-
-int QEucKrCodec::_mibEnum()
-{
- return 38;
-}
-
-QByteArray QEucKrCodec::_name()
-{
- return "EUC-KR";
-}
-
-
-#ifdef Q_OS_UNIX
-QFontKsc5601Codec::QFontKsc5601Codec()
-{
-}
-
-
-QByteArray QFontKsc5601Codec::_name()
-{
- return "ksc5601.1987-0";
-}
-
-
-int QFontKsc5601Codec::_mibEnum()
-{
- return 36;
-}
-
-
-QString QFontKsc5601Codec::convertToUnicode(const char*, int, ConverterState *) const
-{
- return QString();
-}
-
-QByteArray QFontKsc5601Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *) const
-{
- QByteArray result;
- result.resize(len * 2);
- uchar *rdata = (uchar *) result.data();
- const QChar *ucp = uc;
-
- for (int i = 0; i < len; i++) {
- QChar ch(*ucp++);
- ch = qt_UnicodeToKsc5601(ch.unicode());
-
- if (! ch.isNull()) {
- *rdata++ = ch.row() & 0x7f ;
- *rdata++ = ch.cell() & 0x7f;
- } else {
- //white square
- *rdata++ = 0x21;
- *rdata++ = 0x60;
- }
- }
-
- return result;
-}
-#endif // Q_OS_UNIX
-
-// code converter wrapper
-
-static unsigned short ksc2unicode (unsigned short code);
-
-static unsigned short unicode2ksc (unsigned short code);
-
-unsigned int qt_Ksc5601ToUnicode(unsigned int code)
-{
-#if 0
- printf("qt_Ksc5601ToUnicode : code = %x, unicode = %x\n",
- code, ksc2unicode((unsigned short)code));
-#endif
- return ksc2unicode((unsigned short)code);
-}
-
-unsigned int qt_UnicodeToKsc5601(unsigned int unicode)
-{
-#if 0
- printf("qt_UnicodeToKsc5601 : unicode = %x, %x\n",
- unicode, unicode2ksc((unsigned short)unicode));
-#endif
- return unicode2ksc((unsigned short)unicode);
-}
-
-/* Table including ksc5601 hangul to unicode */
-static const unsigned short ksc5601_hangul_to_unicode[2350]=
-{
- 0xac00, 0xac01, 0xac04, 0xac07, 0xac08, 0xac09, 0xac0a, 0xac10,
- 0xac11, 0xac12, 0xac13, 0xac14, 0xac15, 0xac16, 0xac17, 0xac19,
- 0xac1a, 0xac1b, 0xac1c, 0xac1d, 0xac20, 0xac24, 0xac2c, 0xac2d,
- 0xac2f, 0xac30, 0xac31, 0xac38, 0xac39, 0xac3c, 0xac40, 0xac4b,
- 0xac4d, 0xac54, 0xac58, 0xac5c, 0xac70, 0xac71, 0xac74, 0xac77,
- 0xac78, 0xac7a, 0xac80, 0xac81, 0xac83, 0xac84, 0xac85, 0xac86,
- 0xac89, 0xac8a, 0xac8b, 0xac8c, 0xac90, 0xac94, 0xac9c, 0xac9d,
- 0xac9f, 0xaca0, 0xaca1, 0xaca8, 0xaca9, 0xacaa, 0xacac, 0xacaf,
- 0xacb0, 0xacb8, 0xacb9, 0xacbb, 0xacbc, 0xacbd, 0xacc1, 0xacc4,
- 0xacc8, 0xaccc, 0xacd5, 0xacd7, 0xace0, 0xace1, 0xace4, 0xace7,
- 0xace8, 0xacea, 0xacec, 0xacef, 0xacf0, 0xacf1, 0xacf3, 0xacf5,
- 0xacf6, 0xacfc, 0xacfd, 0xad00, 0xad04, 0xad06, 0xad0c, 0xad0d,
- 0xad0f, 0xad11, 0xad18, 0xad1c, 0xad20, 0xad29, 0xad2c, 0xad2d,
- 0xad34, 0xad35, 0xad38, 0xad3c, 0xad44, 0xad45, 0xad47, 0xad49,
- 0xad50, 0xad54, 0xad58, 0xad61, 0xad63, 0xad6c, 0xad6d, 0xad70,
- 0xad73, 0xad74, 0xad75, 0xad76, 0xad7b, 0xad7c, 0xad7d, 0xad7f,
- 0xad81, 0xad82, 0xad88, 0xad89, 0xad8c, 0xad90, 0xad9c, 0xad9d,
- 0xada4, 0xadb7, 0xadc0, 0xadc1, 0xadc4, 0xadc8, 0xadd0, 0xadd1,
- 0xadd3, 0xaddc, 0xade0, 0xade4, 0xadf8, 0xadf9, 0xadfc, 0xadff,
- 0xae00, 0xae01, 0xae08, 0xae09, 0xae0b, 0xae0d, 0xae14, 0xae30,
- 0xae31, 0xae34, 0xae37, 0xae38, 0xae3a, 0xae40, 0xae41, 0xae43,
- 0xae45, 0xae46, 0xae4a, 0xae4c, 0xae4d, 0xae4e, 0xae50, 0xae54,
- 0xae56, 0xae5c, 0xae5d, 0xae5f, 0xae60, 0xae61, 0xae65, 0xae68,
- 0xae69, 0xae6c, 0xae70, 0xae78, 0xae79, 0xae7b, 0xae7c, 0xae7d,
- 0xae84, 0xae85, 0xae8c, 0xaebc, 0xaebd, 0xaebe, 0xaec0, 0xaec4,
- 0xaecc, 0xaecd, 0xaecf, 0xaed0, 0xaed1, 0xaed8, 0xaed9, 0xaedc,
- 0xaee8, 0xaeeb, 0xaeed, 0xaef4, 0xaef8, 0xaefc, 0xaf07, 0xaf08,
- 0xaf0d, 0xaf10, 0xaf2c, 0xaf2d, 0xaf30, 0xaf32, 0xaf34, 0xaf3c,
- 0xaf3d, 0xaf3f, 0xaf41, 0xaf42, 0xaf43, 0xaf48, 0xaf49, 0xaf50,
- 0xaf5c, 0xaf5d, 0xaf64, 0xaf65, 0xaf79, 0xaf80, 0xaf84, 0xaf88,
- 0xaf90, 0xaf91, 0xaf95, 0xaf9c, 0xafb8, 0xafb9, 0xafbc, 0xafc0,
- 0xafc7, 0xafc8, 0xafc9, 0xafcb, 0xafcd, 0xafce, 0xafd4, 0xafdc,
- 0xafe8, 0xafe9, 0xaff0, 0xaff1, 0xaff4, 0xaff8, 0xb000, 0xb001,
- 0xb004, 0xb00c, 0xb010, 0xb014, 0xb01c, 0xb01d, 0xb028, 0xb044,
- 0xb045, 0xb048, 0xb04a, 0xb04c, 0xb04e, 0xb053, 0xb054, 0xb055,
- 0xb057, 0xb059, 0xb05d, 0xb07c, 0xb07d, 0xb080, 0xb084, 0xb08c,
- 0xb08d, 0xb08f, 0xb091, 0xb098, 0xb099, 0xb09a, 0xb09c, 0xb09f,
- 0xb0a0, 0xb0a1, 0xb0a2, 0xb0a8, 0xb0a9, 0xb0ab, 0xb0ac, 0xb0ad,
- 0xb0ae, 0xb0af, 0xb0b1, 0xb0b3, 0xb0b4, 0xb0b5, 0xb0b8, 0xb0bc,
- 0xb0c4, 0xb0c5, 0xb0c7, 0xb0c8, 0xb0c9, 0xb0d0, 0xb0d1, 0xb0d4,
- 0xb0d8, 0xb0e0, 0xb0e5, 0xb108, 0xb109, 0xb10b, 0xb10c, 0xb110,
- 0xb112, 0xb113, 0xb118, 0xb119, 0xb11b, 0xb11c, 0xb11d, 0xb123,
- 0xb124, 0xb125, 0xb128, 0xb12c, 0xb134, 0xb135, 0xb137, 0xb138,
- 0xb139, 0xb140, 0xb141, 0xb144, 0xb148, 0xb150, 0xb151, 0xb154,
- 0xb155, 0xb158, 0xb15c, 0xb160, 0xb178, 0xb179, 0xb17c, 0xb180,
- 0xb182, 0xb188, 0xb189, 0xb18b, 0xb18d, 0xb192, 0xb193, 0xb194,
- 0xb198, 0xb19c, 0xb1a8, 0xb1cc, 0xb1d0, 0xb1d4, 0xb1dc, 0xb1dd,
- 0xb1df, 0xb1e8, 0xb1e9, 0xb1ec, 0xb1f0, 0xb1f9, 0xb1fb, 0xb1fd,
- 0xb204, 0xb205, 0xb208, 0xb20b, 0xb20c, 0xb214, 0xb215, 0xb217,
- 0xb219, 0xb220, 0xb234, 0xb23c, 0xb258, 0xb25c, 0xb260, 0xb268,
- 0xb269, 0xb274, 0xb275, 0xb27c, 0xb284, 0xb285, 0xb289, 0xb290,
- 0xb291, 0xb294, 0xb298, 0xb299, 0xb29a, 0xb2a0, 0xb2a1, 0xb2a3,
- 0xb2a5, 0xb2a6, 0xb2aa, 0xb2ac, 0xb2b0, 0xb2b4, 0xb2c8, 0xb2c9,
- 0xb2cc, 0xb2d0, 0xb2d2, 0xb2d8, 0xb2d9, 0xb2db, 0xb2dd, 0xb2e2,
- 0xb2e4, 0xb2e5, 0xb2e6, 0xb2e8, 0xb2eb, 0xb2ec, 0xb2ed, 0xb2ee,
- 0xb2ef, 0xb2f3, 0xb2f4, 0xb2f5, 0xb2f7, 0xb2f8, 0xb2f9, 0xb2fa,
- 0xb2fb, 0xb2ff, 0xb300, 0xb301, 0xb304, 0xb308, 0xb310, 0xb311,
- 0xb313, 0xb314, 0xb315, 0xb31c, 0xb354, 0xb355, 0xb356, 0xb358,
- 0xb35b, 0xb35c, 0xb35e, 0xb35f, 0xb364, 0xb365, 0xb367, 0xb369,
- 0xb36b, 0xb36e, 0xb370, 0xb371, 0xb374, 0xb378, 0xb380, 0xb381,
- 0xb383, 0xb384, 0xb385, 0xb38c, 0xb390, 0xb394, 0xb3a0, 0xb3a1,
- 0xb3a8, 0xb3ac, 0xb3c4, 0xb3c5, 0xb3c8, 0xb3cb, 0xb3cc, 0xb3ce,
- 0xb3d0, 0xb3d4, 0xb3d5, 0xb3d7, 0xb3d9, 0xb3db, 0xb3dd, 0xb3e0,
- 0xb3e4, 0xb3e8, 0xb3fc, 0xb410, 0xb418, 0xb41c, 0xb420, 0xb428,
- 0xb429, 0xb42b, 0xb434, 0xb450, 0xb451, 0xb454, 0xb458, 0xb460,
- 0xb461, 0xb463, 0xb465, 0xb46c, 0xb480, 0xb488, 0xb49d, 0xb4a4,
- 0xb4a8, 0xb4ac, 0xb4b5, 0xb4b7, 0xb4b9, 0xb4c0, 0xb4c4, 0xb4c8,
- 0xb4d0, 0xb4d5, 0xb4dc, 0xb4dd, 0xb4e0, 0xb4e3, 0xb4e4, 0xb4e6,
- 0xb4ec, 0xb4ed, 0xb4ef, 0xb4f1, 0xb4f8, 0xb514, 0xb515, 0xb518,
- 0xb51b, 0xb51c, 0xb524, 0xb525, 0xb527, 0xb528, 0xb529, 0xb52a,
- 0xb530, 0xb531, 0xb534, 0xb538, 0xb540, 0xb541, 0xb543, 0xb544,
- 0xb545, 0xb54b, 0xb54c, 0xb54d, 0xb550, 0xb554, 0xb55c, 0xb55d,
- 0xb55f, 0xb560, 0xb561, 0xb5a0, 0xb5a1, 0xb5a4, 0xb5a8, 0xb5aa,
- 0xb5ab, 0xb5b0, 0xb5b1, 0xb5b3, 0xb5b4, 0xb5b5, 0xb5bb, 0xb5bc,
- 0xb5bd, 0xb5c0, 0xb5c4, 0xb5cc, 0xb5cd, 0xb5cf, 0xb5d0, 0xb5d1,
- 0xb5d8, 0xb5ec, 0xb610, 0xb611, 0xb614, 0xb618, 0xb625, 0xb62c,
- 0xb634, 0xb648, 0xb664, 0xb668, 0xb69c, 0xb69d, 0xb6a0, 0xb6a4,
- 0xb6ab, 0xb6ac, 0xb6b1, 0xb6d4, 0xb6f0, 0xb6f4, 0xb6f8, 0xb700,
- 0xb701, 0xb705, 0xb728, 0xb729, 0xb72c, 0xb72f, 0xb730, 0xb738,
- 0xb739, 0xb73b, 0xb744, 0xb748, 0xb74c, 0xb754, 0xb755, 0xb760,
- 0xb764, 0xb768, 0xb770, 0xb771, 0xb773, 0xb775, 0xb77c, 0xb77d,
- 0xb780, 0xb784, 0xb78c, 0xb78d, 0xb78f, 0xb790, 0xb791, 0xb792,
- 0xb796, 0xb797, 0xb798, 0xb799, 0xb79c, 0xb7a0, 0xb7a8, 0xb7a9,
- 0xb7ab, 0xb7ac, 0xb7ad, 0xb7b4, 0xb7b5, 0xb7b8, 0xb7c7, 0xb7c9,
- 0xb7ec, 0xb7ed, 0xb7f0, 0xb7f4, 0xb7fc, 0xb7fd, 0xb7ff, 0xb800,
- 0xb801, 0xb807, 0xb808, 0xb809, 0xb80c, 0xb810, 0xb818, 0xb819,
- 0xb81b, 0xb81d, 0xb824, 0xb825, 0xb828, 0xb82c, 0xb834, 0xb835,
- 0xb837, 0xb838, 0xb839, 0xb840, 0xb844, 0xb851, 0xb853, 0xb85c,
- 0xb85d, 0xb860, 0xb864, 0xb86c, 0xb86d, 0xb86f, 0xb871, 0xb878,
- 0xb87c, 0xb88d, 0xb8a8, 0xb8b0, 0xb8b4, 0xb8b8, 0xb8c0, 0xb8c1,
- 0xb8c3, 0xb8c5, 0xb8cc, 0xb8d0, 0xb8d4, 0xb8dd, 0xb8df, 0xb8e1,
- 0xb8e8, 0xb8e9, 0xb8ec, 0xb8f0, 0xb8f8, 0xb8f9, 0xb8fb, 0xb8fd,
- 0xb904, 0xb918, 0xb920, 0xb93c, 0xb93d, 0xb940, 0xb944, 0xb94c,
- 0xb94f, 0xb951, 0xb958, 0xb959, 0xb95c, 0xb960, 0xb968, 0xb969,
- 0xb96b, 0xb96d, 0xb974, 0xb975, 0xb978, 0xb97c, 0xb984, 0xb985,
- 0xb987, 0xb989, 0xb98a, 0xb98d, 0xb98e, 0xb9ac, 0xb9ad, 0xb9b0,
- 0xb9b4, 0xb9bc, 0xb9bd, 0xb9bf, 0xb9c1, 0xb9c8, 0xb9c9, 0xb9cc,
- 0xb9ce, 0xb9cf, 0xb9d0, 0xb9d1, 0xb9d2, 0xb9d8, 0xb9d9, 0xb9db,
- 0xb9dd, 0xb9de, 0xb9e1, 0xb9e3, 0xb9e4, 0xb9e5, 0xb9e8, 0xb9ec,
- 0xb9f4, 0xb9f5, 0xb9f7, 0xb9f8, 0xb9f9, 0xb9fa, 0xba00, 0xba01,
- 0xba08, 0xba15, 0xba38, 0xba39, 0xba3c, 0xba40, 0xba42, 0xba48,
- 0xba49, 0xba4b, 0xba4d, 0xba4e, 0xba53, 0xba54, 0xba55, 0xba58,
- 0xba5c, 0xba64, 0xba65, 0xba67, 0xba68, 0xba69, 0xba70, 0xba71,
- 0xba74, 0xba78, 0xba83, 0xba84, 0xba85, 0xba87, 0xba8c, 0xbaa8,
- 0xbaa9, 0xbaab, 0xbaac, 0xbab0, 0xbab2, 0xbab8, 0xbab9, 0xbabb,
- 0xbabd, 0xbac4, 0xbac8, 0xbad8, 0xbad9, 0xbafc, 0xbb00, 0xbb04,
- 0xbb0d, 0xbb0f, 0xbb11, 0xbb18, 0xbb1c, 0xbb20, 0xbb29, 0xbb2b,
- 0xbb34, 0xbb35, 0xbb36, 0xbb38, 0xbb3b, 0xbb3c, 0xbb3d, 0xbb3e,
- 0xbb44, 0xbb45, 0xbb47, 0xbb49, 0xbb4d, 0xbb4f, 0xbb50, 0xbb54,
- 0xbb58, 0xbb61, 0xbb63, 0xbb6c, 0xbb88, 0xbb8c, 0xbb90, 0xbba4,
- 0xbba8, 0xbbac, 0xbbb4, 0xbbb7, 0xbbc0, 0xbbc4, 0xbbc8, 0xbbd0,
- 0xbbd3, 0xbbf8, 0xbbf9, 0xbbfc, 0xbbff, 0xbc00, 0xbc02, 0xbc08,
- 0xbc09, 0xbc0b, 0xbc0c, 0xbc0d, 0xbc0f, 0xbc11, 0xbc14, 0xbc15,
- 0xbc16, 0xbc17, 0xbc18, 0xbc1b, 0xbc1c, 0xbc1d, 0xbc1e, 0xbc1f,
- 0xbc24, 0xbc25, 0xbc27, 0xbc29, 0xbc2d, 0xbc30, 0xbc31, 0xbc34,
- 0xbc38, 0xbc40, 0xbc41, 0xbc43, 0xbc44, 0xbc45, 0xbc49, 0xbc4c,
- 0xbc4d, 0xbc50, 0xbc5d, 0xbc84, 0xbc85, 0xbc88, 0xbc8b, 0xbc8c,
- 0xbc8e, 0xbc94, 0xbc95, 0xbc97, 0xbc99, 0xbc9a, 0xbca0, 0xbca1,
- 0xbca4, 0xbca7, 0xbca8, 0xbcb0, 0xbcb1, 0xbcb3, 0xbcb4, 0xbcb5,
- 0xbcbc, 0xbcbd, 0xbcc0, 0xbcc4, 0xbccd, 0xbccf, 0xbcd0, 0xbcd1,
- 0xbcd5, 0xbcd8, 0xbcdc, 0xbcf4, 0xbcf5, 0xbcf6, 0xbcf8, 0xbcfc,
- 0xbd04, 0xbd05, 0xbd07, 0xbd09, 0xbd10, 0xbd14, 0xbd24, 0xbd2c,
- 0xbd40, 0xbd48, 0xbd49, 0xbd4c, 0xbd50, 0xbd58, 0xbd59, 0xbd64,
- 0xbd68, 0xbd80, 0xbd81, 0xbd84, 0xbd87, 0xbd88, 0xbd89, 0xbd8a,
- 0xbd90, 0xbd91, 0xbd93, 0xbd95, 0xbd99, 0xbd9a, 0xbd9c, 0xbda4,
- 0xbdb0, 0xbdb8, 0xbdd4, 0xbdd5, 0xbdd8, 0xbddc, 0xbde9, 0xbdf0,
- 0xbdf4, 0xbdf8, 0xbe00, 0xbe03, 0xbe05, 0xbe0c, 0xbe0d, 0xbe10,
- 0xbe14, 0xbe1c, 0xbe1d, 0xbe1f, 0xbe44, 0xbe45, 0xbe48, 0xbe4c,
- 0xbe4e, 0xbe54, 0xbe55, 0xbe57, 0xbe59, 0xbe5a, 0xbe5b, 0xbe60,
- 0xbe61, 0xbe64, 0xbe68, 0xbe6a, 0xbe70, 0xbe71, 0xbe73, 0xbe74,
- 0xbe75, 0xbe7b, 0xbe7c, 0xbe7d, 0xbe80, 0xbe84, 0xbe8c, 0xbe8d,
- 0xbe8f, 0xbe90, 0xbe91, 0xbe98, 0xbe99, 0xbea8, 0xbed0, 0xbed1,
- 0xbed4, 0xbed7, 0xbed8, 0xbee0, 0xbee3, 0xbee4, 0xbee5, 0xbeec,
- 0xbf01, 0xbf08, 0xbf09, 0xbf18, 0xbf19, 0xbf1b, 0xbf1c, 0xbf1d,
- 0xbf40, 0xbf41, 0xbf44, 0xbf48, 0xbf50, 0xbf51, 0xbf55, 0xbf94,
- 0xbfb0, 0xbfc5, 0xbfcc, 0xbfcd, 0xbfd0, 0xbfd4, 0xbfdc, 0xbfdf,
- 0xbfe1, 0xc03c, 0xc051, 0xc058, 0xc05c, 0xc060, 0xc068, 0xc069,
- 0xc090, 0xc091, 0xc094, 0xc098, 0xc0a0, 0xc0a1, 0xc0a3, 0xc0a5,
- 0xc0ac, 0xc0ad, 0xc0af, 0xc0b0, 0xc0b3, 0xc0b4, 0xc0b5, 0xc0b6,
- 0xc0bc, 0xc0bd, 0xc0bf, 0xc0c0, 0xc0c1, 0xc0c5, 0xc0c8, 0xc0c9,
- 0xc0cc, 0xc0d0, 0xc0d8, 0xc0d9, 0xc0db, 0xc0dc, 0xc0dd, 0xc0e4,
- 0xc0e5, 0xc0e8, 0xc0ec, 0xc0f4, 0xc0f5, 0xc0f7, 0xc0f9, 0xc100,
- 0xc104, 0xc108, 0xc110, 0xc115, 0xc11c, 0xc11d, 0xc11e, 0xc11f,
- 0xc120, 0xc123, 0xc124, 0xc126, 0xc127, 0xc12c, 0xc12d, 0xc12f,
- 0xc130, 0xc131, 0xc136, 0xc138, 0xc139, 0xc13c, 0xc140, 0xc148,
- 0xc149, 0xc14b, 0xc14c, 0xc14d, 0xc154, 0xc155, 0xc158, 0xc15c,
- 0xc164, 0xc165, 0xc167, 0xc168, 0xc169, 0xc170, 0xc174, 0xc178,
- 0xc185, 0xc18c, 0xc18d, 0xc18e, 0xc190, 0xc194, 0xc196, 0xc19c,
- 0xc19d, 0xc19f, 0xc1a1, 0xc1a5, 0xc1a8, 0xc1a9, 0xc1ac, 0xc1b0,
- 0xc1bd, 0xc1c4, 0xc1c8, 0xc1cc, 0xc1d4, 0xc1d7, 0xc1d8, 0xc1e0,
- 0xc1e4, 0xc1e8, 0xc1f0, 0xc1f1, 0xc1f3, 0xc1fc, 0xc1fd, 0xc200,
- 0xc204, 0xc20c, 0xc20d, 0xc20f, 0xc211, 0xc218, 0xc219, 0xc21c,
- 0xc21f, 0xc220, 0xc228, 0xc229, 0xc22b, 0xc22d, 0xc22f, 0xc231,
- 0xc232, 0xc234, 0xc248, 0xc250, 0xc251, 0xc254, 0xc258, 0xc260,
- 0xc265, 0xc26c, 0xc26d, 0xc270, 0xc274, 0xc27c, 0xc27d, 0xc27f,
- 0xc281, 0xc288, 0xc289, 0xc290, 0xc298, 0xc29b, 0xc29d, 0xc2a4,
- 0xc2a5, 0xc2a8, 0xc2ac, 0xc2ad, 0xc2b4, 0xc2b5, 0xc2b7, 0xc2b9,
- 0xc2dc, 0xc2dd, 0xc2e0, 0xc2e3, 0xc2e4, 0xc2eb, 0xc2ec, 0xc2ed,
- 0xc2ef, 0xc2f1, 0xc2f6, 0xc2f8, 0xc2f9, 0xc2fb, 0xc2fc, 0xc300,
- 0xc308, 0xc309, 0xc30c, 0xc30d, 0xc313, 0xc314, 0xc315, 0xc318,
- 0xc31c, 0xc324, 0xc325, 0xc328, 0xc329, 0xc345, 0xc368, 0xc369,
- 0xc36c, 0xc370, 0xc372, 0xc378, 0xc379, 0xc37c, 0xc37d, 0xc384,
- 0xc388, 0xc38c, 0xc3c0, 0xc3d8, 0xc3d9, 0xc3dc, 0xc3df, 0xc3e0,
- 0xc3e2, 0xc3e8, 0xc3e9, 0xc3ed, 0xc3f4, 0xc3f5, 0xc3f8, 0xc408,
- 0xc410, 0xc424, 0xc42c, 0xc430, 0xc434, 0xc43c, 0xc43d, 0xc448,
- 0xc464, 0xc465, 0xc468, 0xc46c, 0xc474, 0xc475, 0xc479, 0xc480,
- 0xc494, 0xc49c, 0xc4b8, 0xc4bc, 0xc4e9, 0xc4f0, 0xc4f1, 0xc4f4,
- 0xc4f8, 0xc4fa, 0xc4ff, 0xc500, 0xc501, 0xc50c, 0xc510, 0xc514,
- 0xc51c, 0xc528, 0xc529, 0xc52c, 0xc530, 0xc538, 0xc539, 0xc53b,
- 0xc53d, 0xc544, 0xc545, 0xc548, 0xc549, 0xc54a, 0xc54c, 0xc54d,
- 0xc54e, 0xc553, 0xc554, 0xc555, 0xc557, 0xc558, 0xc559, 0xc55d,
- 0xc55e, 0xc560, 0xc561, 0xc564, 0xc568, 0xc570, 0xc571, 0xc573,
- 0xc574, 0xc575, 0xc57c, 0xc57d, 0xc580, 0xc584, 0xc587, 0xc58c,
- 0xc58d, 0xc58f, 0xc591, 0xc595, 0xc597, 0xc598, 0xc59c, 0xc5a0,
- 0xc5a9, 0xc5b4, 0xc5b5, 0xc5b8, 0xc5b9, 0xc5bb, 0xc5bc, 0xc5bd,
- 0xc5be, 0xc5c4, 0xc5c5, 0xc5c6, 0xc5c7, 0xc5c8, 0xc5c9, 0xc5ca,
- 0xc5cc, 0xc5ce, 0xc5d0, 0xc5d1, 0xc5d4, 0xc5d8, 0xc5e0, 0xc5e1,
- 0xc5e3, 0xc5e5, 0xc5ec, 0xc5ed, 0xc5ee, 0xc5f0, 0xc5f4, 0xc5f6,
- 0xc5f7, 0xc5fc, 0xc5fd, 0xc5fe, 0xc5ff, 0xc600, 0xc601, 0xc605,
- 0xc606, 0xc607, 0xc608, 0xc60c, 0xc610, 0xc618, 0xc619, 0xc61b,
- 0xc61c, 0xc624, 0xc625, 0xc628, 0xc62c, 0xc62d, 0xc62e, 0xc630,
- 0xc633, 0xc634, 0xc635, 0xc637, 0xc639, 0xc63b, 0xc640, 0xc641,
- 0xc644, 0xc648, 0xc650, 0xc651, 0xc653, 0xc654, 0xc655, 0xc65c,
- 0xc65d, 0xc660, 0xc66c, 0xc66f, 0xc671, 0xc678, 0xc679, 0xc67c,
- 0xc680, 0xc688, 0xc689, 0xc68b, 0xc68d, 0xc694, 0xc695, 0xc698,
- 0xc69c, 0xc6a4, 0xc6a5, 0xc6a7, 0xc6a9, 0xc6b0, 0xc6b1, 0xc6b4,
- 0xc6b8, 0xc6b9, 0xc6ba, 0xc6c0, 0xc6c1, 0xc6c3, 0xc6c5, 0xc6cc,
- 0xc6cd, 0xc6d0, 0xc6d4, 0xc6dc, 0xc6dd, 0xc6e0, 0xc6e1, 0xc6e8,
- 0xc6e9, 0xc6ec, 0xc6f0, 0xc6f8, 0xc6f9, 0xc6fd, 0xc704, 0xc705,
- 0xc708, 0xc70c, 0xc714, 0xc715, 0xc717, 0xc719, 0xc720, 0xc721,
- 0xc724, 0xc728, 0xc730, 0xc731, 0xc733, 0xc735, 0xc737, 0xc73c,
- 0xc73d, 0xc740, 0xc744, 0xc74a, 0xc74c, 0xc74d, 0xc74f, 0xc751,
- 0xc752, 0xc753, 0xc754, 0xc755, 0xc756, 0xc757, 0xc758, 0xc75c,
- 0xc760, 0xc768, 0xc76b, 0xc774, 0xc775, 0xc778, 0xc77c, 0xc77d,
- 0xc77e, 0xc783, 0xc784, 0xc785, 0xc787, 0xc788, 0xc789, 0xc78a,
- 0xc78e, 0xc790, 0xc791, 0xc794, 0xc796, 0xc797, 0xc798, 0xc79a,
- 0xc7a0, 0xc7a1, 0xc7a3, 0xc7a4, 0xc7a5, 0xc7a6, 0xc7ac, 0xc7ad,
- 0xc7b0, 0xc7b4, 0xc7bc, 0xc7bd, 0xc7bf, 0xc7c0, 0xc7c1, 0xc7c8,
- 0xc7c9, 0xc7cc, 0xc7ce, 0xc7d0, 0xc7d8, 0xc7dd, 0xc7e4, 0xc7e8,
- 0xc7ec, 0xc800, 0xc801, 0xc804, 0xc808, 0xc80a, 0xc810, 0xc811,
- 0xc813, 0xc815, 0xc816, 0xc81c, 0xc81d, 0xc820, 0xc824, 0xc82c,
- 0xc82d, 0xc82f, 0xc831, 0xc838, 0xc83c, 0xc840, 0xc848, 0xc849,
- 0xc84c, 0xc84d, 0xc854, 0xc870, 0xc871, 0xc874, 0xc878, 0xc87a,
- 0xc880, 0xc881, 0xc883, 0xc885, 0xc886, 0xc887, 0xc88b, 0xc88c,
- 0xc88d, 0xc894, 0xc89d, 0xc89f, 0xc8a1, 0xc8a8, 0xc8bc, 0xc8bd,
- 0xc8c4, 0xc8c8, 0xc8cc, 0xc8d4, 0xc8d5, 0xc8d7, 0xc8d9, 0xc8e0,
- 0xc8e1, 0xc8e4, 0xc8f5, 0xc8fc, 0xc8fd, 0xc900, 0xc904, 0xc905,
- 0xc906, 0xc90c, 0xc90d, 0xc90f, 0xc911, 0xc918, 0xc92c, 0xc934,
- 0xc950, 0xc951, 0xc954, 0xc958, 0xc960, 0xc961, 0xc963, 0xc96c,
- 0xc970, 0xc974, 0xc97c, 0xc988, 0xc989, 0xc98c, 0xc990, 0xc998,
- 0xc999, 0xc99b, 0xc99d, 0xc9c0, 0xc9c1, 0xc9c4, 0xc9c7, 0xc9c8,
- 0xc9ca, 0xc9d0, 0xc9d1, 0xc9d3, 0xc9d5, 0xc9d6, 0xc9d9, 0xc9da,
- 0xc9dc, 0xc9dd, 0xc9e0, 0xc9e2, 0xc9e4, 0xc9e7, 0xc9ec, 0xc9ed,
- 0xc9ef, 0xc9f0, 0xc9f1, 0xc9f8, 0xc9f9, 0xc9fc, 0xca00, 0xca08,
- 0xca09, 0xca0b, 0xca0c, 0xca0d, 0xca14, 0xca18, 0xca29, 0xca4c,
- 0xca4d, 0xca50, 0xca54, 0xca5c, 0xca5d, 0xca5f, 0xca60, 0xca61,
- 0xca68, 0xca7d, 0xca84, 0xca98, 0xcabc, 0xcabd, 0xcac0, 0xcac4,
- 0xcacc, 0xcacd, 0xcacf, 0xcad1, 0xcad3, 0xcad8, 0xcad9, 0xcae0,
- 0xcaec, 0xcaf4, 0xcb08, 0xcb10, 0xcb14, 0xcb18, 0xcb20, 0xcb21,
- 0xcb41, 0xcb48, 0xcb49, 0xcb4c, 0xcb50, 0xcb58, 0xcb59, 0xcb5d,
- 0xcb64, 0xcb78, 0xcb79, 0xcb9c, 0xcbb8, 0xcbd4, 0xcbe4, 0xcbe7,
- 0xcbe9, 0xcc0c, 0xcc0d, 0xcc10, 0xcc14, 0xcc1c, 0xcc1d, 0xcc21,
- 0xcc22, 0xcc27, 0xcc28, 0xcc29, 0xcc2c, 0xcc2e, 0xcc30, 0xcc38,
- 0xcc39, 0xcc3b, 0xcc3c, 0xcc3d, 0xcc3e, 0xcc44, 0xcc45, 0xcc48,
- 0xcc4c, 0xcc54, 0xcc55, 0xcc57, 0xcc58, 0xcc59, 0xcc60, 0xcc64,
- 0xcc66, 0xcc68, 0xcc70, 0xcc75, 0xcc98, 0xcc99, 0xcc9c, 0xcca0,
- 0xcca8, 0xcca9, 0xccab, 0xccac, 0xccad, 0xccb4, 0xccb5, 0xccb8,
- 0xccbc, 0xccc4, 0xccc5, 0xccc7, 0xccc9, 0xccd0, 0xccd4, 0xcce4,
- 0xccec, 0xccf0, 0xcd01, 0xcd08, 0xcd09, 0xcd0c, 0xcd10, 0xcd18,
- 0xcd19, 0xcd1b, 0xcd1d, 0xcd24, 0xcd28, 0xcd2c, 0xcd39, 0xcd5c,
- 0xcd60, 0xcd64, 0xcd6c, 0xcd6d, 0xcd6f, 0xcd71, 0xcd78, 0xcd88,
- 0xcd94, 0xcd95, 0xcd98, 0xcd9c, 0xcda4, 0xcda5, 0xcda7, 0xcda9,
- 0xcdb0, 0xcdc4, 0xcdcc, 0xcdd0, 0xcde8, 0xcdec, 0xcdf0, 0xcdf8,
- 0xcdf9, 0xcdfb, 0xcdfd, 0xce04, 0xce08, 0xce0c, 0xce14, 0xce19,
- 0xce20, 0xce21, 0xce24, 0xce28, 0xce30, 0xce31, 0xce33, 0xce35,
- 0xce58, 0xce59, 0xce5c, 0xce5f, 0xce60, 0xce61, 0xce68, 0xce69,
- 0xce6b, 0xce6d, 0xce74, 0xce75, 0xce78, 0xce7c, 0xce84, 0xce85,
- 0xce87, 0xce89, 0xce90, 0xce91, 0xce94, 0xce98, 0xcea0, 0xcea1,
- 0xcea3, 0xcea4, 0xcea5, 0xceac, 0xcead, 0xcec1, 0xcee4, 0xcee5,
- 0xcee8, 0xceeb, 0xceec, 0xcef4, 0xcef5, 0xcef7, 0xcef8, 0xcef9,
- 0xcf00, 0xcf01, 0xcf04, 0xcf08, 0xcf10, 0xcf11, 0xcf13, 0xcf15,
- 0xcf1c, 0xcf20, 0xcf24, 0xcf2c, 0xcf2d, 0xcf2f, 0xcf30, 0xcf31,
- 0xcf38, 0xcf54, 0xcf55, 0xcf58, 0xcf5c, 0xcf64, 0xcf65, 0xcf67,
- 0xcf69, 0xcf70, 0xcf71, 0xcf74, 0xcf78, 0xcf80, 0xcf85, 0xcf8c,
- 0xcfa1, 0xcfa8, 0xcfb0, 0xcfc4, 0xcfe0, 0xcfe1, 0xcfe4, 0xcfe8,
- 0xcff0, 0xcff1, 0xcff3, 0xcff5, 0xcffc, 0xd000, 0xd004, 0xd011,
- 0xd018, 0xd02d, 0xd034, 0xd035, 0xd038, 0xd03c, 0xd044, 0xd045,
- 0xd047, 0xd049, 0xd050, 0xd054, 0xd058, 0xd060, 0xd06c, 0xd06d,
- 0xd070, 0xd074, 0xd07c, 0xd07d, 0xd081, 0xd0a4, 0xd0a5, 0xd0a8,
- 0xd0ac, 0xd0b4, 0xd0b5, 0xd0b7, 0xd0b9, 0xd0c0, 0xd0c1, 0xd0c4,
- 0xd0c8, 0xd0c9, 0xd0d0, 0xd0d1, 0xd0d3, 0xd0d4, 0xd0d5, 0xd0dc,
- 0xd0dd, 0xd0e0, 0xd0e4, 0xd0ec, 0xd0ed, 0xd0ef, 0xd0f0, 0xd0f1,
- 0xd0f8, 0xd10d, 0xd130, 0xd131, 0xd134, 0xd138, 0xd13a, 0xd140,
- 0xd141, 0xd143, 0xd144, 0xd145, 0xd14c, 0xd14d, 0xd150, 0xd154,
- 0xd15c, 0xd15d, 0xd15f, 0xd161, 0xd168, 0xd16c, 0xd17c, 0xd184,
- 0xd188, 0xd1a0, 0xd1a1, 0xd1a4, 0xd1a8, 0xd1b0, 0xd1b1, 0xd1b3,
- 0xd1b5, 0xd1ba, 0xd1bc, 0xd1c0, 0xd1d8, 0xd1f4, 0xd1f8, 0xd207,
- 0xd209, 0xd210, 0xd22c, 0xd22d, 0xd230, 0xd234, 0xd23c, 0xd23d,
- 0xd23f, 0xd241, 0xd248, 0xd25c, 0xd264, 0xd280, 0xd281, 0xd284,
- 0xd288, 0xd290, 0xd291, 0xd295, 0xd29c, 0xd2a0, 0xd2a4, 0xd2ac,
- 0xd2b1, 0xd2b8, 0xd2b9, 0xd2bc, 0xd2bf, 0xd2c0, 0xd2c2, 0xd2c8,
- 0xd2c9, 0xd2cb, 0xd2d4, 0xd2d8, 0xd2dc, 0xd2e4, 0xd2e5, 0xd2f0,
- 0xd2f1, 0xd2f4, 0xd2f8, 0xd300, 0xd301, 0xd303, 0xd305, 0xd30c,
- 0xd30d, 0xd30e, 0xd310, 0xd314, 0xd316, 0xd31c, 0xd31d, 0xd31f,
- 0xd320, 0xd321, 0xd325, 0xd328, 0xd329, 0xd32c, 0xd330, 0xd338,
- 0xd339, 0xd33b, 0xd33c, 0xd33d, 0xd344, 0xd345, 0xd37c, 0xd37d,
- 0xd380, 0xd384, 0xd38c, 0xd38d, 0xd38f, 0xd390, 0xd391, 0xd398,
- 0xd399, 0xd39c, 0xd3a0, 0xd3a8, 0xd3a9, 0xd3ab, 0xd3ad, 0xd3b4,
- 0xd3b8, 0xd3bc, 0xd3c4, 0xd3c5, 0xd3c8, 0xd3c9, 0xd3d0, 0xd3d8,
- 0xd3e1, 0xd3e3, 0xd3ec, 0xd3ed, 0xd3f0, 0xd3f4, 0xd3fc, 0xd3fd,
- 0xd3ff, 0xd401, 0xd408, 0xd41d, 0xd440, 0xd444, 0xd45c, 0xd460,
- 0xd464, 0xd46d, 0xd46f, 0xd478, 0xd479, 0xd47c, 0xd47f, 0xd480,
- 0xd482, 0xd488, 0xd489, 0xd48b, 0xd48d, 0xd494, 0xd4a9, 0xd4cc,
- 0xd4d0, 0xd4d4, 0xd4dc, 0xd4df, 0xd4e8, 0xd4ec, 0xd4f0, 0xd4f8,
- 0xd4fb, 0xd4fd, 0xd504, 0xd508, 0xd50c, 0xd514, 0xd515, 0xd517,
- 0xd53c, 0xd53d, 0xd540, 0xd544, 0xd54c, 0xd54d, 0xd54f, 0xd551,
- 0xd558, 0xd559, 0xd55c, 0xd560, 0xd565, 0xd568, 0xd569, 0xd56b,
- 0xd56d, 0xd574, 0xd575, 0xd578, 0xd57c, 0xd584, 0xd585, 0xd587,
- 0xd588, 0xd589, 0xd590, 0xd5a5, 0xd5c8, 0xd5c9, 0xd5cc, 0xd5d0,
- 0xd5d2, 0xd5d8, 0xd5d9, 0xd5db, 0xd5dd, 0xd5e4, 0xd5e5, 0xd5e8,
- 0xd5ec, 0xd5f4, 0xd5f5, 0xd5f7, 0xd5f9, 0xd600, 0xd601, 0xd604,
- 0xd608, 0xd610, 0xd611, 0xd613, 0xd614, 0xd615, 0xd61c, 0xd620,
- 0xd624, 0xd62d, 0xd638, 0xd639, 0xd63c, 0xd640, 0xd645, 0xd648,
- 0xd649, 0xd64b, 0xd64d, 0xd651, 0xd654, 0xd655, 0xd658, 0xd65c,
- 0xd667, 0xd669, 0xd670, 0xd671, 0xd674, 0xd683, 0xd685, 0xd68c,
- 0xd68d, 0xd690, 0xd694, 0xd69d, 0xd69f, 0xd6a1, 0xd6a8, 0xd6ac,
- 0xd6b0, 0xd6b9, 0xd6bb, 0xd6c4, 0xd6c5, 0xd6c8, 0xd6cc, 0xd6d1,
- 0xd6d4, 0xd6d7, 0xd6d9, 0xd6e0, 0xd6e4, 0xd6e8, 0xd6f0, 0xd6f5,
- 0xd6fc, 0xd6fd, 0xd700, 0xd704, 0xd711, 0xd718, 0xd719, 0xd71c,
- 0xd720, 0xd728, 0xd729, 0xd72b, 0xd72d, 0xd734, 0xd735, 0xd738,
- 0xd73c, 0xd744, 0xd747, 0xd749, 0xd750, 0xd751, 0xd754, 0xd756,
- 0xd757, 0xd758, 0xd759, 0xd760, 0xd761, 0xd763, 0xd765, 0xd769,
- 0xd76c, 0xd770, 0xd774, 0xd77c, 0xd77d, 0xd781, 0xd788, 0xd789,
- 0xd78c, 0xd790, 0xd798, 0xd799, 0xd79b, 0xd79d
-};
-
-/* Table including ksc5601 symbol to unicode */
-static const unsigned short ksc5601_symbol_to_unicode[1115]=
-{
- 0x3000, 0x3001, 0x3002, 0x00b7, 0x2025, 0x2026, 0x00a8, 0x3003,
- 0x00ad, 0x2015, 0x2225, 0xff3c, 0x223c, 0x2018, 0x2019, 0x201c,
- 0x201d, 0x3014, 0x3015, 0x3008, 0x3009, 0x300a, 0x300b, 0x300c,
- 0x300d, 0x300e, 0x300f, 0x3010, 0x3011, 0x00b1, 0x00d7, 0x00f7,
- 0x2260, 0x2264, 0x2265, 0x221e, 0x2234, 0x00b0, 0x2032, 0x2033,
- 0x2103, 0x212b, 0xffe0, 0xffe1, 0xffe5, 0x2642, 0x2640, 0x2220,
- 0x22a5, 0x2312, 0x2202, 0x2207, 0x2261, 0x2252, 0x00a7, 0x203b,
- 0x2606, 0x2605, 0x25cb, 0x25cf, 0x25ce, 0x25c7, 0x25c6, 0x25a1,
- 0x25a0, 0x25b3, 0x25b2, 0x25bd, 0x25bc, 0x2192, 0x2190, 0x2191,
- 0x2193, 0x2194, 0x3013, 0x226a, 0x226b, 0x221a, 0x223d, 0x221d,
- 0x2235, 0x222b, 0x222c, 0x2208, 0x220b, 0x2286, 0x2287, 0x2282,
- 0x2283, 0x222a, 0x2229, 0x2227, 0x2228, 0xffe2, 0x21d2, 0x21d4,
- 0x2200, 0x2203, 0x00b4, 0xff5e, 0x02c7, 0x02d8, 0x02dd, 0x02da,
- 0x02d9, 0x00b8, 0x02db, 0x00a1, 0x00bf, 0x02d0, 0x222e, 0x2211,
- 0x220f, 0x00a4, 0x2109, 0x2030, 0x25c1, 0x25c0, 0x25b7, 0x25b6,
- 0x2664, 0x2660, 0x2661, 0x2665, 0x2667, 0x2663, 0x2299, 0x25c8,
- 0x25a3, 0x25d0, 0x25d1, 0x2592, 0x25a4, 0x25a5, 0x25a8, 0x25a7,
- 0x25a6, 0x25a9, 0x2668, 0x260f, 0x260e, 0x261c, 0x261e, 0x00b6,
- 0x2020, 0x2021, 0x2195, 0x2197, 0x2199, 0x2196, 0x2198, 0x266d,
- 0x2669, 0x266a, 0x266c, 0x327f, 0x321c, 0x2116, 0x33c7, 0x2122,
- 0x33c2, 0x33d8, 0x2121, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0xff01, 0xff02, 0xff03, 0xff04,
- 0xff05, 0xff06, 0xff07, 0xff08, 0xff09, 0xff0a, 0xff0b, 0xff0c,
- 0xff0d, 0xff0e, 0xff0f, 0xff10, 0xff11, 0xff12, 0xff13, 0xff14,
- 0xff15, 0xff16, 0xff17, 0xff18, 0xff19, 0xff1a, 0xff1b, 0xff1c,
- 0xff1d, 0xff1e, 0xff1f, 0xff20, 0xff21, 0xff22, 0xff23, 0xff24,
- 0xff25, 0xff26, 0xff27, 0xff28, 0xff29, 0xff2a, 0xff2b, 0xff2c,
- 0xff2d, 0xff2e, 0xff2f, 0xff30, 0xff31, 0xff32, 0xff33, 0xff34,
- 0xff35, 0xff36, 0xff37, 0xff38, 0xff39, 0xff3a, 0xff3b, 0xffe6,
- 0xff3d, 0xff3e, 0xff3f, 0xff40, 0xff41, 0xff42, 0xff43, 0xff44,
- 0xff45, 0xff46, 0xff47, 0xff48, 0xff49, 0xff4a, 0xff4b, 0xff4c,
- 0xff4d, 0xff4e, 0xff4f, 0xff50, 0xff51, 0xff52, 0xff53, 0xff54,
- 0xff55, 0xff56, 0xff57, 0xff58, 0xff59, 0xff5a, 0xff5b, 0xff5c,
- 0xff5d, 0xffe3, 0x3131, 0x3132, 0x3133, 0x3134, 0x3135, 0x3136,
- 0x3137, 0x3138, 0x3139, 0x313a, 0x313b, 0x313c, 0x313d, 0x313e,
- 0x313f, 0x3140, 0x3141, 0x3142, 0x3143, 0x3144, 0x3145, 0x3146,
- 0x3147, 0x3148, 0x3149, 0x314a, 0x314b, 0x314c, 0x314d, 0x314e,
- 0x314f, 0x3150, 0x3151, 0x3152, 0x3153, 0x3154, 0x3155, 0x3156,
- 0x3157, 0x3158, 0x3159, 0x315a, 0x315b, 0x315c, 0x315d, 0x315e,
- 0x315f, 0x3160, 0x3161, 0x3162, 0x3163, 0x3164, 0x3165, 0x3166,
- 0x3167, 0x3168, 0x3169, 0x316a, 0x316b, 0x316c, 0x316d, 0x316e,
- 0x316f, 0x3170, 0x3171, 0x3172, 0x3173, 0x3174, 0x3175, 0x3176,
- 0x3177, 0x3178, 0x3179, 0x317a, 0x317b, 0x317c, 0x317d, 0x317e,
- 0x317f, 0x3180, 0x3181, 0x3182, 0x3183, 0x3184, 0x3185, 0x3186,
- 0x3187, 0x3188, 0x3189, 0x318a, 0x318b, 0x318c, 0x318d, 0x318e,
- 0x2170, 0x2171, 0x2172, 0x2173, 0x2174, 0x2175, 0x2176, 0x2177,
- 0x2178, 0x2179, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2160,
- 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166, 0x2167, 0x2168,
- 0x2169, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397, 0x0398,
- 0x0399, 0x039a, 0x039b, 0x039c, 0x039d, 0x039e, 0x039f, 0x03a0,
- 0x03a1, 0x03a3, 0x03a4, 0x03a5, 0x03a6, 0x03a7, 0x03a8, 0x03a9,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x03b1, 0x03b2, 0x03b3, 0x03b4, 0x03b5, 0x03b6, 0x03b7, 0x03b8,
- 0x03b9, 0x03ba, 0x03bb, 0x03bc, 0x03bd, 0x03be, 0x03bf, 0x03c0,
- 0x03c1, 0x03c3, 0x03c4, 0x03c5, 0x03c6, 0x03c7, 0x03c8, 0x03c9,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x2500, 0x2502,
- 0x250c, 0x2510, 0x2518, 0x2514, 0x251c, 0x252c, 0x2524, 0x2534,
- 0x253c, 0x2501, 0x2503, 0x250f, 0x2513, 0x251b, 0x2517, 0x2523,
- 0x2533, 0x252b, 0x253b, 0x254b, 0x2520, 0x252f, 0x2528, 0x2537,
- 0x253f, 0x251d, 0x2530, 0x2525, 0x2538, 0x2542, 0x2512, 0x2511,
- 0x251a, 0x2519, 0x2516, 0x2515, 0x250e, 0x250d, 0x251e, 0x251f,
- 0x2521, 0x2522, 0x2526, 0x2527, 0x2529, 0x252a, 0x252d, 0x252e,
- 0x2531, 0x2532, 0x2535, 0x2536, 0x2539, 0x253a, 0x253d, 0x253e,
- 0x2540, 0x2541, 0x2543, 0x2544, 0x2545, 0x2546, 0x2547, 0x2548,
- 0x2549, 0x254a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x3395, 0x3396, 0x3397, 0x2113,
- 0x3398, 0x33c4, 0x33a3, 0x33a4, 0x33a5, 0x33a6, 0x3399, 0x339a,
- 0x339b, 0x339c, 0x339d, 0x339e, 0x339f, 0x33a0, 0x33a1, 0x33a2,
- 0x33ca, 0x338d, 0x338e, 0x338f, 0x33cf, 0x3388, 0x3389, 0x33c8,
- 0x33a7, 0x33a8, 0x33b0, 0x33b1, 0x33b2, 0x33b3, 0x33b4, 0x33b5,
- 0x33b6, 0x33b7, 0x33b8, 0x33b9, 0x3380, 0x3381, 0x3382, 0x3383,
- 0x3384, 0x33ba, 0x33bb, 0x33bc, 0x33bd, 0x33be, 0x33bf, 0x3390,
- 0x3391, 0x3392, 0x3393, 0x3394, 0x2126, 0x33c0, 0x33c1, 0x338a,
- 0x338b, 0x338c, 0x33d6, 0x33c5, 0x33ad, 0x33ae, 0x33af, 0x33db,
- 0x33a9, 0x33aa, 0x33ab, 0x33ac, 0x33dd, 0x33d0, 0x33d3, 0x33c3,
- 0x33c9, 0x33dc, 0x33c6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x00c6, 0x00d0, 0x00aa, 0x0126, 0x0000, 0x0132,
- 0x0000, 0x013f, 0x0141, 0x00d8, 0x0152, 0x00ba, 0x00de, 0x0166,
- 0x014a, 0x0000, 0x3260, 0x3261, 0x3262, 0x3263, 0x3264, 0x3265,
- 0x3266, 0x3267, 0x3268, 0x3269, 0x326a, 0x326b, 0x326c, 0x326d,
- 0x326e, 0x326f, 0x3270, 0x3271, 0x3272, 0x3273, 0x3274, 0x3275,
- 0x3276, 0x3277, 0x3278, 0x3279, 0x327a, 0x327b, 0x24d0, 0x24d1,
- 0x24d2, 0x24d3, 0x24d4, 0x24d5, 0x24d6, 0x24d7, 0x24d8, 0x24d9,
- 0x24da, 0x24db, 0x24dc, 0x24dd, 0x24de, 0x24df, 0x24e0, 0x24e1,
- 0x24e2, 0x24e3, 0x24e4, 0x24e5, 0x24e6, 0x24e7, 0x24e8, 0x24e9,
- 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466, 0x2467,
- 0x2468, 0x2469, 0x246a, 0x246b, 0x246c, 0x246d, 0x246e, 0x00bd,
- 0x2153, 0x2154, 0x00bc, 0x00be, 0x215b, 0x215c, 0x215d, 0x215e,
- 0x00e6, 0x0111, 0x00f0, 0x0127, 0x0131, 0x0133, 0x0138, 0x0140,
- 0x0142, 0x00f8, 0x0153, 0x00df, 0x00fe, 0x0167, 0x014b, 0x0149,
- 0x3200, 0x3201, 0x3202, 0x3203, 0x3204, 0x3205, 0x3206, 0x3207,
- 0x3208, 0x3209, 0x320a, 0x320b, 0x320c, 0x320d, 0x320e, 0x320f,
- 0x3210, 0x3211, 0x3212, 0x3213, 0x3214, 0x3215, 0x3216, 0x3217,
- 0x3218, 0x3219, 0x321a, 0x321b, 0x249c, 0x249d, 0x249e, 0x249f,
- 0x24a0, 0x24a1, 0x24a2, 0x24a3, 0x24a4, 0x24a5, 0x24a6, 0x24a7,
- 0x24a8, 0x24a9, 0x24aa, 0x24ab, 0x24ac, 0x24ad, 0x24ae, 0x24af,
- 0x24b0, 0x24b1, 0x24b2, 0x24b3, 0x24b4, 0x24b5, 0x2474, 0x2475,
- 0x2476, 0x2477, 0x2478, 0x2479, 0x247a, 0x247b, 0x247c, 0x247d,
- 0x247e, 0x247f, 0x2480, 0x2481, 0x2482, 0x00b9, 0x00b2, 0x00b3,
- 0x2074, 0x207f, 0x2081, 0x2082, 0x2083, 0x2084, 0x3041, 0x3042,
- 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049, 0x304a,
- 0x304b, 0x304c, 0x304d, 0x304e, 0x304f, 0x3050, 0x3051, 0x3052,
- 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058, 0x3059, 0x305a,
- 0x305b, 0x305c, 0x305d, 0x305e, 0x305f, 0x3060, 0x3061, 0x3062,
- 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068, 0x3069, 0x306a,
- 0x306b, 0x306c, 0x306d, 0x306e, 0x306f, 0x3070, 0x3071, 0x3072,
- 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078, 0x3079, 0x307a,
- 0x307b, 0x307c, 0x307d, 0x307e, 0x307f, 0x3080, 0x3081, 0x3082,
- 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088, 0x3089, 0x308a,
- 0x308b, 0x308c, 0x308d, 0x308e, 0x308f, 0x3090, 0x3091, 0x3092,
- 0x3093, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x30a1, 0x30a2, 0x30a3, 0x30a4,
- 0x30a5, 0x30a6, 0x30a7, 0x30a8, 0x30a9, 0x30aa, 0x30ab, 0x30ac,
- 0x30ad, 0x30ae, 0x30af, 0x30b0, 0x30b1, 0x30b2, 0x30b3, 0x30b4,
- 0x30b5, 0x30b6, 0x30b7, 0x30b8, 0x30b9, 0x30ba, 0x30bb, 0x30bc,
- 0x30bd, 0x30be, 0x30bf, 0x30c0, 0x30c1, 0x30c2, 0x30c3, 0x30c4,
- 0x30c5, 0x30c6, 0x30c7, 0x30c8, 0x30c9, 0x30ca, 0x30cb, 0x30cc,
- 0x30cd, 0x30ce, 0x30cf, 0x30d0, 0x30d1, 0x30d2, 0x30d3, 0x30d4,
- 0x30d5, 0x30d6, 0x30d7, 0x30d8, 0x30d9, 0x30da, 0x30db, 0x30dc,
- 0x30dd, 0x30de, 0x30df, 0x30e0, 0x30e1, 0x30e2, 0x30e3, 0x30e4,
- 0x30e5, 0x30e6, 0x30e7, 0x30e8, 0x30e9, 0x30ea, 0x30eb, 0x30ec,
- 0x30ed, 0x30ee, 0x30ef, 0x30f0, 0x30f1, 0x30f2, 0x30f3, 0x30f4,
- 0x30f5, 0x30f6, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415,
- 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041a, 0x041b, 0x041c,
- 0x041d, 0x041e, 0x041f, 0x0420, 0x0421, 0x0422, 0x0423, 0x0424,
- 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042a, 0x042b, 0x042c,
- 0x042d, 0x042e, 0x042f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
- 0x0000, 0x0000, 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435,
- 0x0451, 0x0436, 0x0437, 0x0438, 0x0439, 0x043a, 0x043b, 0x043c,
- 0x043d, 0x043e, 0x043f, 0x0440, 0x0441, 0x0442, 0x0443, 0x0444,
- 0x0445, 0x0446, 0x0447, 0x0448, 0x0449, 0x044a, 0x044b, 0x044c,
- 0x044d, 0x044e, 0x044f
-};
-
-struct map
-{
- unsigned short unicode;
- unsigned short kscode;
-};
-
-/* Map Table including unicode to ksc5601 symbol */
-static const struct map unicode_to_ksc5601_symbol[986]=
-{
- {0x00a1, 0x222e}, {0x00a4, 0x2234}, {0x00a7, 0x2157},
- {0x00a8, 0x2127}, {0x00aa, 0x2823}, {0x00ad, 0x2129},
- {0x00b0, 0x2146}, {0x00b1, 0x213e}, {0x00b2, 0x2977},
- {0x00b3, 0x2978}, {0x00b4, 0x2225}, {0x00b6, 0x2252},
- {0x00b7, 0x2124}, {0x00b8, 0x222c}, {0x00b9, 0x2976},
- {0x00ba, 0x282c}, {0x00bc, 0x2879}, {0x00bd, 0x2876},
- {0x00be, 0x287a}, {0x00bf, 0x222f}, {0x00c6, 0x2821},
- {0x00d0, 0x2822}, {0x00d7, 0x213f}, {0x00d8, 0x282a},
- {0x00de, 0x282d}, {0x00df, 0x292c}, {0x00e6, 0x2921},
- {0x00f0, 0x2923}, {0x00f7, 0x2140}, {0x00f8, 0x292a},
- {0x00fe, 0x292d}, {0x0111, 0x2922}, {0x0126, 0x2824},
- {0x0127, 0x2924}, {0x0131, 0x2925}, {0x0132, 0x2826},
- {0x0133, 0x2926}, {0x0138, 0x2927}, {0x013f, 0x2828},
- {0x0140, 0x2928}, {0x0141, 0x2829}, {0x0142, 0x2929},
- {0x0149, 0x2930}, {0x014a, 0x282f}, {0x014b, 0x292f},
- {0x0152, 0x282b}, {0x0153, 0x292b}, {0x0166, 0x282e},
- {0x0167, 0x292e}, {0x02c7, 0x2227}, {0x02d0, 0x2230},
- {0x02d8, 0x2228}, {0x02d9, 0x222b}, {0x02da, 0x222a},
- {0x02db, 0x222d}, {0x02dd, 0x2229}, {0x0391, 0x2541},
- {0x0392, 0x2542}, {0x0393, 0x2543}, {0x0394, 0x2544},
- {0x0395, 0x2545}, {0x0396, 0x2546}, {0x0397, 0x2547},
- {0x0398, 0x2548}, {0x0399, 0x2549}, {0x039a, 0x254a},
- {0x039b, 0x254b}, {0x039c, 0x254c}, {0x039d, 0x254d},
- {0x039e, 0x254e}, {0x039f, 0x254f}, {0x03a0, 0x2550},
- {0x03a1, 0x2551}, {0x03a3, 0x2552}, {0x03a4, 0x2553},
- {0x03a5, 0x2554}, {0x03a6, 0x2555}, {0x03a7, 0x2556},
- {0x03a8, 0x2557}, {0x03a9, 0x2558}, {0x03b1, 0x2561},
- {0x03b2, 0x2562}, {0x03b3, 0x2563}, {0x03b4, 0x2564},
- {0x03b5, 0x2565}, {0x03b6, 0x2566}, {0x03b7, 0x2567},
- {0x03b8, 0x2568}, {0x03b9, 0x2569}, {0x03ba, 0x256a},
- {0x03bb, 0x256b}, {0x03bc, 0x256c}, {0x03bd, 0x256d},
- {0x03be, 0x256e}, {0x03bf, 0x256f}, {0x03c0, 0x2570},
- {0x03c1, 0x2571}, {0x03c3, 0x2572}, {0x03c4, 0x2573},
- {0x03c5, 0x2574}, {0x03c6, 0x2575}, {0x03c7, 0x2576},
- {0x03c8, 0x2577}, {0x03c9, 0x2578}, {0x0401, 0x2c27},
- {0x0410, 0x2c21}, {0x0411, 0x2c22}, {0x0412, 0x2c23},
- {0x0413, 0x2c24}, {0x0414, 0x2c25}, {0x0415, 0x2c26},
- {0x0416, 0x2c28}, {0x0417, 0x2c29}, {0x0418, 0x2c2a},
- {0x0419, 0x2c2b}, {0x041a, 0x2c2c}, {0x041b, 0x2c2d},
- {0x041c, 0x2c2e}, {0x041d, 0x2c2f}, {0x041e, 0x2c30},
- {0x041f, 0x2c31}, {0x0420, 0x2c32}, {0x0421, 0x2c33},
- {0x0422, 0x2c34}, {0x0423, 0x2c35}, {0x0424, 0x2c36},
- {0x0425, 0x2c37}, {0x0426, 0x2c38}, {0x0427, 0x2c39},
- {0x0428, 0x2c3a}, {0x0429, 0x2c3b}, {0x042a, 0x2c3c},
- {0x042b, 0x2c3d}, {0x042c, 0x2c3e}, {0x042d, 0x2c3f},
- {0x042e, 0x2c40}, {0x042f, 0x2c41}, {0x0430, 0x2c51},
- {0x0431, 0x2c52}, {0x0432, 0x2c53}, {0x0433, 0x2c54},
- {0x0434, 0x2c55}, {0x0435, 0x2c56}, {0x0436, 0x2c58},
- {0x0437, 0x2c59}, {0x0438, 0x2c5a}, {0x0439, 0x2c5b},
- {0x043a, 0x2c5c}, {0x043b, 0x2c5d}, {0x043c, 0x2c5e},
- {0x043d, 0x2c5f}, {0x043e, 0x2c60}, {0x043f, 0x2c61},
- {0x0440, 0x2c62}, {0x0441, 0x2c63}, {0x0442, 0x2c64},
- {0x0443, 0x2c65}, {0x0444, 0x2c66}, {0x0445, 0x2c67},
- {0x0446, 0x2c68}, {0x0447, 0x2c69}, {0x0448, 0x2c6a},
- {0x0449, 0x2c6b}, {0x044a, 0x2c6c}, {0x044b, 0x2c6d},
- {0x044c, 0x2c6e}, {0x044d, 0x2c6f}, {0x044e, 0x2c70},
- {0x044f, 0x2c71}, {0x0451, 0x2c57}, {0x2015, 0x212a},
- {0x2018, 0x212e}, {0x2019, 0x212f}, {0x201c, 0x2130},
- {0x201d, 0x2131}, {0x2020, 0x2253}, {0x2021, 0x2254},
- {0x2025, 0x2125}, {0x2026, 0x2126}, {0x2030, 0x2236},
- {0x2032, 0x2147}, {0x2033, 0x2148}, {0x203b, 0x2158},
- {0x2074, 0x2979}, {0x207f, 0x297a}, {0x2081, 0x297b},
- {0x2082, 0x297c}, {0x2083, 0x297d}, {0x2084, 0x297e},
- {0x2103, 0x2149}, {0x2109, 0x2235}, {0x2113, 0x2724},
- {0x2116, 0x2260}, {0x2121, 0x2265}, {0x2122, 0x2262},
- {0x2126, 0x2759}, {0x212b, 0x214a}, {0x2153, 0x2877},
- {0x2154, 0x2878}, {0x215b, 0x287b}, {0x215c, 0x287c},
- {0x215d, 0x287d}, {0x215e, 0x287e}, {0x2160, 0x2530},
- {0x2161, 0x2531}, {0x2162, 0x2532}, {0x2163, 0x2533},
- {0x2164, 0x2534}, {0x2165, 0x2535}, {0x2166, 0x2536},
- {0x2167, 0x2537}, {0x2168, 0x2538}, {0x2169, 0x2539},
- {0x2170, 0x2521}, {0x2171, 0x2522}, {0x2172, 0x2523},
- {0x2173, 0x2524}, {0x2174, 0x2525}, {0x2175, 0x2526},
- {0x2176, 0x2527}, {0x2177, 0x2528}, {0x2178, 0x2529},
- {0x2179, 0x252a}, {0x2190, 0x2167}, {0x2191, 0x2168},
- {0x2192, 0x2166}, {0x2193, 0x2169}, {0x2194, 0x216a},
- {0x2195, 0x2255}, {0x2196, 0x2258}, {0x2197, 0x2256},
- {0x2198, 0x2259}, {0x2199, 0x2257}, {0x21d2, 0x2221},
- {0x21d4, 0x2222}, {0x2200, 0x2223}, {0x2202, 0x2153},
- {0x2203, 0x2224}, {0x2207, 0x2154}, {0x2208, 0x2174},
- {0x220b, 0x2175}, {0x220f, 0x2233}, {0x2211, 0x2232},
- {0x221a, 0x216e}, {0x221d, 0x2170}, {0x221e, 0x2144},
- {0x2220, 0x2150}, {0x2225, 0x212b}, {0x2227, 0x217c},
- {0x2228, 0x217d}, {0x2229, 0x217b}, {0x222a, 0x217a},
- {0x222b, 0x2172}, {0x222c, 0x2173}, {0x222e, 0x2231},
- {0x2234, 0x2145}, {0x2235, 0x2171}, {0x223c, 0x212d},
- {0x223d, 0x216f}, {0x2252, 0x2156}, {0x2260, 0x2141},
- {0x2261, 0x2155}, {0x2264, 0x2142}, {0x2265, 0x2143},
- {0x226a, 0x216c}, {0x226b, 0x216d}, {0x2282, 0x2178},
- {0x2283, 0x2179}, {0x2286, 0x2176}, {0x2287, 0x2177},
- {0x2299, 0x2241}, {0x22a5, 0x2151}, {0x2312, 0x2152},
- {0x2460, 0x2867}, {0x2461, 0x2868}, {0x2462, 0x2869},
- {0x2463, 0x286a}, {0x2464, 0x286b}, {0x2465, 0x286c},
- {0x2466, 0x286d}, {0x2467, 0x286e}, {0x2468, 0x286f},
- {0x2469, 0x2870}, {0x246a, 0x2871}, {0x246b, 0x2872},
- {0x246c, 0x2873}, {0x246d, 0x2874}, {0x246e, 0x2875},
- {0x2474, 0x2967}, {0x2475, 0x2968}, {0x2476, 0x2969},
- {0x2477, 0x296a}, {0x2478, 0x296b}, {0x2479, 0x296c},
- {0x247a, 0x296d}, {0x247b, 0x296e}, {0x247c, 0x296f},
- {0x247d, 0x2970}, {0x247e, 0x2971}, {0x247f, 0x2972},
- {0x2480, 0x2973}, {0x2481, 0x2974}, {0x2482, 0x2975},
- {0x249c, 0x294d}, {0x249d, 0x294e}, {0x249e, 0x294f},
- {0x249f, 0x2950}, {0x24a0, 0x2951}, {0x24a1, 0x2952},
- {0x24a2, 0x2953}, {0x24a3, 0x2954}, {0x24a4, 0x2955},
- {0x24a5, 0x2956}, {0x24a6, 0x2957}, {0x24a7, 0x2958},
- {0x24a8, 0x2959}, {0x24a9, 0x295a}, {0x24aa, 0x295b},
- {0x24ab, 0x295c}, {0x24ac, 0x295d}, {0x24ad, 0x295e},
- {0x24ae, 0x295f}, {0x24af, 0x2960}, {0x24b0, 0x2961},
- {0x24b1, 0x2962}, {0x24b2, 0x2963}, {0x24b3, 0x2964},
- {0x24b4, 0x2965}, {0x24b5, 0x2966}, {0x24d0, 0x284d},
- {0x24d1, 0x284e}, {0x24d2, 0x284f}, {0x24d3, 0x2850},
- {0x24d4, 0x2851}, {0x24d5, 0x2852}, {0x24d6, 0x2853},
- {0x24d7, 0x2854}, {0x24d8, 0x2855}, {0x24d9, 0x2856},
- {0x24da, 0x2857}, {0x24db, 0x2858}, {0x24dc, 0x2859},
- {0x24dd, 0x285a}, {0x24de, 0x285b}, {0x24df, 0x285c},
- {0x24e0, 0x285d}, {0x24e1, 0x285e}, {0x24e2, 0x285f},
- {0x24e3, 0x2860}, {0x24e4, 0x2861}, {0x24e5, 0x2862},
- {0x24e6, 0x2863}, {0x24e7, 0x2864}, {0x24e8, 0x2865},
- {0x24e9, 0x2866}, {0x2500, 0x2621}, {0x2501, 0x262c},
- {0x2502, 0x2622}, {0x2503, 0x262d}, {0x250c, 0x2623},
- {0x250d, 0x2648}, {0x250e, 0x2647}, {0x250f, 0x262e},
- {0x2510, 0x2624}, {0x2511, 0x2642}, {0x2512, 0x2641},
- {0x2513, 0x262f}, {0x2514, 0x2626}, {0x2515, 0x2646},
- {0x2516, 0x2645}, {0x2517, 0x2631}, {0x2518, 0x2625},
- {0x2519, 0x2644}, {0x251a, 0x2643}, {0x251b, 0x2630},
- {0x251c, 0x2627}, {0x251d, 0x263c}, {0x251e, 0x2649},
- {0x251f, 0x264a}, {0x2520, 0x2637}, {0x2521, 0x264b},
- {0x2522, 0x264c}, {0x2523, 0x2632}, {0x2524, 0x2629},
- {0x2525, 0x263e}, {0x2526, 0x264d}, {0x2527, 0x264e},
- {0x2528, 0x2639}, {0x2529, 0x264f}, {0x252a, 0x2650},
- {0x252b, 0x2634}, {0x252c, 0x2628}, {0x252d, 0x2651},
- {0x252e, 0x2652}, {0x252f, 0x2638}, {0x2530, 0x263d},
- {0x2531, 0x2653}, {0x2532, 0x2654}, {0x2533, 0x2633},
- {0x2534, 0x262a}, {0x2535, 0x2655}, {0x2536, 0x2656},
- {0x2537, 0x263a}, {0x2538, 0x263f}, {0x2539, 0x2657},
- {0x253a, 0x2658}, {0x253b, 0x2635}, {0x253c, 0x262b},
- {0x253d, 0x2659}, {0x253e, 0x265a}, {0x253f, 0x263b},
- {0x2540, 0x265b}, {0x2541, 0x265c}, {0x2542, 0x2640},
- {0x2543, 0x265d}, {0x2544, 0x265e}, {0x2545, 0x265f},
- {0x2546, 0x2660}, {0x2547, 0x2661}, {0x2548, 0x2662},
- {0x2549, 0x2663}, {0x254a, 0x2664}, {0x254b, 0x2636},
- {0x2592, 0x2246}, {0x25a0, 0x2161}, {0x25a1, 0x2160},
- {0x25a3, 0x2243}, {0x25a4, 0x2247}, {0x25a5, 0x2248},
- {0x25a6, 0x224b}, {0x25a7, 0x224a}, {0x25a8, 0x2249},
- {0x25a9, 0x224c}, {0x25b2, 0x2163}, {0x25b3, 0x2162},
- {0x25b6, 0x223a}, {0x25b7, 0x2239}, {0x25bc, 0x2165},
- {0x25bd, 0x2164}, {0x25c0, 0x2238}, {0x25c1, 0x2237},
- {0x25c6, 0x215f}, {0x25c7, 0x215e}, {0x25c8, 0x2242},
- {0x25cb, 0x215b}, {0x25ce, 0x215d}, {0x25cf, 0x215c},
- {0x25d0, 0x2244}, {0x25d1, 0x2245}, {0x2605, 0x215a},
- {0x2606, 0x2159}, {0x260e, 0x224f}, {0x260f, 0x224e},
- {0x261c, 0x2250}, {0x261e, 0x2251}, {0x2640, 0x214f},
- {0x2642, 0x214e}, {0x2660, 0x223c}, {0x2661, 0x223d},
- {0x2663, 0x2240}, {0x2664, 0x223b}, {0x2665, 0x223e},
- {0x2667, 0x223f}, {0x2668, 0x224d}, {0x2669, 0x225b},
- {0x266a, 0x225c}, {0x266c, 0x225d}, {0x266d, 0x225a},
- {0x3000, 0x2121}, {0x3001, 0x2122}, {0x3002, 0x2123},
- {0x3003, 0x2128}, {0x3008, 0x2134}, {0x3009, 0x2135},
- {0x300a, 0x2136}, {0x300b, 0x2137}, {0x300c, 0x2138},
- {0x300d, 0x2139}, {0x300e, 0x213a}, {0x300f, 0x213b},
- {0x3010, 0x213c}, {0x3011, 0x213d}, {0x3013, 0x216b},
- {0x3014, 0x2132}, {0x3015, 0x2133}, {0x3041, 0x2a21},
- {0x3042, 0x2a22}, {0x3043, 0x2a23}, {0x3044, 0x2a24},
- {0x3045, 0x2a25}, {0x3046, 0x2a26}, {0x3047, 0x2a27},
- {0x3048, 0x2a28}, {0x3049, 0x2a29}, {0x304a, 0x2a2a},
- {0x304b, 0x2a2b}, {0x304c, 0x2a2c}, {0x304d, 0x2a2d},
- {0x304e, 0x2a2e}, {0x304f, 0x2a2f}, {0x3050, 0x2a30},
- {0x3051, 0x2a31}, {0x3052, 0x2a32}, {0x3053, 0x2a33},
- {0x3054, 0x2a34}, {0x3055, 0x2a35}, {0x3056, 0x2a36},
- {0x3057, 0x2a37}, {0x3058, 0x2a38}, {0x3059, 0x2a39},
- {0x305a, 0x2a3a}, {0x305b, 0x2a3b}, {0x305c, 0x2a3c},
- {0x305d, 0x2a3d}, {0x305e, 0x2a3e}, {0x305f, 0x2a3f},
- {0x3060, 0x2a40}, {0x3061, 0x2a41}, {0x3062, 0x2a42},
- {0x3063, 0x2a43}, {0x3064, 0x2a44}, {0x3065, 0x2a45},
- {0x3066, 0x2a46}, {0x3067, 0x2a47}, {0x3068, 0x2a48},
- {0x3069, 0x2a49}, {0x306a, 0x2a4a}, {0x306b, 0x2a4b},
- {0x306c, 0x2a4c}, {0x306d, 0x2a4d}, {0x306e, 0x2a4e},
- {0x306f, 0x2a4f}, {0x3070, 0x2a50}, {0x3071, 0x2a51},
- {0x3072, 0x2a52}, {0x3073, 0x2a53}, {0x3074, 0x2a54},
- {0x3075, 0x2a55}, {0x3076, 0x2a56}, {0x3077, 0x2a57},
- {0x3078, 0x2a58}, {0x3079, 0x2a59}, {0x307a, 0x2a5a},
- {0x307b, 0x2a5b}, {0x307c, 0x2a5c}, {0x307d, 0x2a5d},
- {0x307e, 0x2a5e}, {0x307f, 0x2a5f}, {0x3080, 0x2a60},
- {0x3081, 0x2a61}, {0x3082, 0x2a62}, {0x3083, 0x2a63},
- {0x3084, 0x2a64}, {0x3085, 0x2a65}, {0x3086, 0x2a66},
- {0x3087, 0x2a67}, {0x3088, 0x2a68}, {0x3089, 0x2a69},
- {0x308a, 0x2a6a}, {0x308b, 0x2a6b}, {0x308c, 0x2a6c},
- {0x308d, 0x2a6d}, {0x308e, 0x2a6e}, {0x308f, 0x2a6f},
- {0x3090, 0x2a70}, {0x3091, 0x2a71}, {0x3092, 0x2a72},
- {0x3093, 0x2a73}, {0x30a1, 0x2b21}, {0x30a2, 0x2b22},
- {0x30a3, 0x2b23}, {0x30a4, 0x2b24}, {0x30a5, 0x2b25},
- {0x30a6, 0x2b26}, {0x30a7, 0x2b27}, {0x30a8, 0x2b28},
- {0x30a9, 0x2b29}, {0x30aa, 0x2b2a}, {0x30ab, 0x2b2b},
- {0x30ac, 0x2b2c}, {0x30ad, 0x2b2d}, {0x30ae, 0x2b2e},
- {0x30af, 0x2b2f}, {0x30b0, 0x2b30}, {0x30b1, 0x2b31},
- {0x30b2, 0x2b32}, {0x30b3, 0x2b33}, {0x30b4, 0x2b34},
- {0x30b5, 0x2b35}, {0x30b6, 0x2b36}, {0x30b7, 0x2b37},
- {0x30b8, 0x2b38}, {0x30b9, 0x2b39}, {0x30ba, 0x2b3a},
- {0x30bb, 0x2b3b}, {0x30bc, 0x2b3c}, {0x30bd, 0x2b3d},
- {0x30be, 0x2b3e}, {0x30bf, 0x2b3f}, {0x30c0, 0x2b40},
- {0x30c1, 0x2b41}, {0x30c2, 0x2b42}, {0x30c3, 0x2b43},
- {0x30c4, 0x2b44}, {0x30c5, 0x2b45}, {0x30c6, 0x2b46},
- {0x30c7, 0x2b47}, {0x30c8, 0x2b48}, {0x30c9, 0x2b49},
- {0x30ca, 0x2b4a}, {0x30cb, 0x2b4b}, {0x30cc, 0x2b4c},
- {0x30cd, 0x2b4d}, {0x30ce, 0x2b4e}, {0x30cf, 0x2b4f},
- {0x30d0, 0x2b50}, {0x30d1, 0x2b51}, {0x30d2, 0x2b52},
- {0x30d3, 0x2b53}, {0x30d4, 0x2b54}, {0x30d5, 0x2b55},
- {0x30d6, 0x2b56}, {0x30d7, 0x2b57}, {0x30d8, 0x2b58},
- {0x30d9, 0x2b59}, {0x30da, 0x2b5a}, {0x30db, 0x2b5b},
- {0x30dc, 0x2b5c}, {0x30dd, 0x2b5d}, {0x30de, 0x2b5e},
- {0x30df, 0x2b5f}, {0x30e0, 0x2b60}, {0x30e1, 0x2b61},
- {0x30e2, 0x2b62}, {0x30e3, 0x2b63}, {0x30e4, 0x2b64},
- {0x30e5, 0x2b65}, {0x30e6, 0x2b66}, {0x30e7, 0x2b67},
- {0x30e8, 0x2b68}, {0x30e9, 0x2b69}, {0x30ea, 0x2b6a},
- {0x30eb, 0x2b6b}, {0x30ec, 0x2b6c}, {0x30ed, 0x2b6d},
- {0x30ee, 0x2b6e}, {0x30ef, 0x2b6f}, {0x30f0, 0x2b70},
- {0x30f1, 0x2b71}, {0x30f2, 0x2b72}, {0x30f3, 0x2b73},
- {0x30f4, 0x2b74}, {0x30f5, 0x2b75}, {0x30f6, 0x2b76},
- {0x3131, 0x2421}, {0x3132, 0x2422}, {0x3133, 0x2423},
- {0x3134, 0x2424}, {0x3135, 0x2425}, {0x3136, 0x2426},
- {0x3137, 0x2427}, {0x3138, 0x2428}, {0x3139, 0x2429},
- {0x313a, 0x242a}, {0x313b, 0x242b}, {0x313c, 0x242c},
- {0x313d, 0x242d}, {0x313e, 0x242e}, {0x313f, 0x242f},
- {0x3140, 0x2430}, {0x3141, 0x2431}, {0x3142, 0x2432},
- {0x3143, 0x2433}, {0x3144, 0x2434}, {0x3145, 0x2435},
- {0x3146, 0x2436}, {0x3147, 0x2437}, {0x3148, 0x2438},
- {0x3149, 0x2439}, {0x314a, 0x243a}, {0x314b, 0x243b},
- {0x314c, 0x243c}, {0x314d, 0x243d}, {0x314e, 0x243e},
- {0x314f, 0x243f}, {0x3150, 0x2440}, {0x3151, 0x2441},
- {0x3152, 0x2442}, {0x3153, 0x2443}, {0x3154, 0x2444},
- {0x3155, 0x2445}, {0x3156, 0x2446}, {0x3157, 0x2447},
- {0x3158, 0x2448}, {0x3159, 0x2449}, {0x315a, 0x244a},
- {0x315b, 0x244b}, {0x315c, 0x244c}, {0x315d, 0x244d},
- {0x315e, 0x244e}, {0x315f, 0x244f}, {0x3160, 0x2450},
- {0x3161, 0x2451}, {0x3162, 0x2452}, {0x3163, 0x2453},
- {0x3164, 0x2454}, {0x3165, 0x2455}, {0x3166, 0x2456},
- {0x3167, 0x2457}, {0x3168, 0x2458}, {0x3169, 0x2459},
- {0x316a, 0x245a}, {0x316b, 0x245b}, {0x316c, 0x245c},
- {0x316d, 0x245d}, {0x316e, 0x245e}, {0x316f, 0x245f},
- {0x3170, 0x2460}, {0x3171, 0x2461}, {0x3172, 0x2462},
- {0x3173, 0x2463}, {0x3174, 0x2464}, {0x3175, 0x2465},
- {0x3176, 0x2466}, {0x3177, 0x2467}, {0x3178, 0x2468},
- {0x3179, 0x2469}, {0x317a, 0x246a}, {0x317b, 0x246b},
- {0x317c, 0x246c}, {0x317d, 0x246d}, {0x317e, 0x246e},
- {0x317f, 0x246f}, {0x3180, 0x2470}, {0x3181, 0x2471},
- {0x3182, 0x2472}, {0x3183, 0x2473}, {0x3184, 0x2474},
- {0x3185, 0x2475}, {0x3186, 0x2476}, {0x3187, 0x2477},
- {0x3188, 0x2478}, {0x3189, 0x2479}, {0x318a, 0x247a},
- {0x318b, 0x247b}, {0x318c, 0x247c}, {0x318d, 0x247d},
- {0x318e, 0x247e}, {0x3200, 0x2931}, {0x3201, 0x2932},
- {0x3202, 0x2933}, {0x3203, 0x2934}, {0x3204, 0x2935},
- {0x3205, 0x2936}, {0x3206, 0x2937}, {0x3207, 0x2938},
- {0x3208, 0x2939}, {0x3209, 0x293a}, {0x320a, 0x293b},
- {0x320b, 0x293c}, {0x320c, 0x293d}, {0x320d, 0x293e},
- {0x320e, 0x293f}, {0x320f, 0x2940}, {0x3210, 0x2941},
- {0x3211, 0x2942}, {0x3212, 0x2943}, {0x3213, 0x2944},
- {0x3214, 0x2945}, {0x3215, 0x2946}, {0x3216, 0x2947},
- {0x3217, 0x2948}, {0x3218, 0x2949}, {0x3219, 0x294a},
- {0x321a, 0x294b}, {0x321b, 0x294c}, {0x321c, 0x225f},
- {0x3260, 0x2831}, {0x3261, 0x2832}, {0x3262, 0x2833},
- {0x3263, 0x2834}, {0x3264, 0x2835}, {0x3265, 0x2836},
- {0x3266, 0x2837}, {0x3267, 0x2838}, {0x3268, 0x2839},
- {0x3269, 0x283a}, {0x326a, 0x283b}, {0x326b, 0x283c},
- {0x326c, 0x283d}, {0x326d, 0x283e}, {0x326e, 0x283f},
- {0x326f, 0x2840}, {0x3270, 0x2841}, {0x3271, 0x2842},
- {0x3272, 0x2843}, {0x3273, 0x2844}, {0x3274, 0x2845},
- {0x3275, 0x2846}, {0x3276, 0x2847}, {0x3277, 0x2848},
- {0x3278, 0x2849}, {0x3279, 0x284a}, {0x327a, 0x284b},
- {0x327b, 0x284c}, {0x327f, 0x225e}, {0x3380, 0x2749},
- {0x3381, 0x274a}, {0x3382, 0x274b}, {0x3383, 0x274c},
- {0x3384, 0x274d}, {0x3388, 0x273a}, {0x3389, 0x273b},
- {0x338a, 0x275c}, {0x338b, 0x275d}, {0x338c, 0x275e},
- {0x338d, 0x2736}, {0x338e, 0x2737}, {0x338f, 0x2738},
- {0x3390, 0x2754}, {0x3391, 0x2755}, {0x3392, 0x2756},
- {0x3393, 0x2757}, {0x3394, 0x2758}, {0x3395, 0x2721},
- {0x3396, 0x2722}, {0x3397, 0x2723}, {0x3398, 0x2725},
- {0x3399, 0x272b}, {0x339a, 0x272c}, {0x339b, 0x272d},
- {0x339c, 0x272e}, {0x339d, 0x272f}, {0x339e, 0x2730},
- {0x339f, 0x2731}, {0x33a0, 0x2732}, {0x33a1, 0x2733},
- {0x33a2, 0x2734}, {0x33a3, 0x2727}, {0x33a4, 0x2728},
- {0x33a5, 0x2729}, {0x33a6, 0x272a}, {0x33a7, 0x273d},
- {0x33a8, 0x273e}, {0x33a9, 0x2765}, {0x33aa, 0x2766},
- {0x33ab, 0x2767}, {0x33ac, 0x2768}, {0x33ad, 0x2761},
- {0x33ae, 0x2762}, {0x33af, 0x2763}, {0x33b0, 0x273f},
- {0x33b1, 0x2740}, {0x33b2, 0x2741}, {0x33b3, 0x2742},
- {0x33b4, 0x2743}, {0x33b5, 0x2744}, {0x33b6, 0x2745},
- {0x33b7, 0x2746}, {0x33b8, 0x2747}, {0x33b9, 0x2748},
- {0x33ba, 0x274e}, {0x33bb, 0x274f}, {0x33bc, 0x2750},
- {0x33bd, 0x2751}, {0x33be, 0x2752}, {0x33bf, 0x2753},
- {0x33c0, 0x275a}, {0x33c1, 0x275b}, {0x33c2, 0x2263},
- {0x33c3, 0x276c}, {0x33c4, 0x2726}, {0x33c5, 0x2760},
- {0x33c6, 0x276f}, {0x33c7, 0x2261}, {0x33c8, 0x273c},
- {0x33c9, 0x276d}, {0x33ca, 0x2735}, {0x33cf, 0x2739},
- {0x33d0, 0x276a}, {0x33d3, 0x276b}, {0x33d6, 0x275f},
- {0x33d8, 0x2264}, {0x33db, 0x2764}, {0x33dc, 0x276e},
- {0x33dd, 0x2769}, {0xff01, 0x2321}, {0xff02, 0x2322},
- {0xff03, 0x2323}, {0xff04, 0x2324}, {0xff05, 0x2325},
- {0xff06, 0x2326}, {0xff07, 0x2327}, {0xff08, 0x2328},
- {0xff09, 0x2329}, {0xff0a, 0x232a}, {0xff0b, 0x232b},
- {0xff0c, 0x232c}, {0xff0d, 0x232d}, {0xff0e, 0x232e},
- {0xff0f, 0x232f}, {0xff10, 0x2330}, {0xff11, 0x2331},
- {0xff12, 0x2332}, {0xff13, 0x2333}, {0xff14, 0x2334},
- {0xff15, 0x2335}, {0xff16, 0x2336}, {0xff17, 0x2337},
- {0xff18, 0x2338}, {0xff19, 0x2339}, {0xff1a, 0x233a},
- {0xff1b, 0x233b}, {0xff1c, 0x233c}, {0xff1d, 0x233d},
- {0xff1e, 0x233e}, {0xff1f, 0x233f}, {0xff20, 0x2340},
- {0xff21, 0x2341}, {0xff22, 0x2342}, {0xff23, 0x2343},
- {0xff24, 0x2344}, {0xff25, 0x2345}, {0xff26, 0x2346},
- {0xff27, 0x2347}, {0xff28, 0x2348}, {0xff29, 0x2349},
- {0xff2a, 0x234a}, {0xff2b, 0x234b}, {0xff2c, 0x234c},
- {0xff2d, 0x234d}, {0xff2e, 0x234e}, {0xff2f, 0x234f},
- {0xff30, 0x2350}, {0xff31, 0x2351}, {0xff32, 0x2352},
- {0xff33, 0x2353}, {0xff34, 0x2354}, {0xff35, 0x2355},
- {0xff36, 0x2356}, {0xff37, 0x2357}, {0xff38, 0x2358},
- {0xff39, 0x2359}, {0xff3a, 0x235a}, {0xff3b, 0x235b},
- {0xff3c, 0x212c}, {0xff3d, 0x235d}, {0xff3e, 0x235e},
- {0xff3f, 0x235f}, {0xff40, 0x2360}, {0xff41, 0x2361},
- {0xff42, 0x2362}, {0xff43, 0x2363}, {0xff44, 0x2364},
- {0xff45, 0x2365}, {0xff46, 0x2366}, {0xff47, 0x2367},
- {0xff48, 0x2368}, {0xff49, 0x2369}, {0xff4a, 0x236a},
- {0xff4b, 0x236b}, {0xff4c, 0x236c}, {0xff4d, 0x236d},
- {0xff4e, 0x236e}, {0xff4f, 0x236f}, {0xff50, 0x2370},
- {0xff51, 0x2371}, {0xff52, 0x2372}, {0xff53, 0x2373},
- {0xff54, 0x2374}, {0xff55, 0x2375}, {0xff56, 0x2376},
- {0xff57, 0x2377}, {0xff58, 0x2378}, {0xff59, 0x2379},
- {0xff5a, 0x237a}, {0xff5b, 0x237b}, {0xff5c, 0x237c},
- {0xff5d, 0x237d}, {0xff5e, 0x2226}, {0xffe0, 0x214b},
- {0xffe1, 0x214c}, {0xffe2, 0x217e}, {0xffe3, 0x237e},
- {0xffe5, 0x214d}, {0xffe6, 0x235c}
-};
-
-/* Table including ksc5601 hanja to unicode */
-static const unsigned short ksc5601_hanja_to_unicode[4888]=
-{
- 0x4f3d, 0x4f73, 0x5047, 0x50f9, 0x52a0, 0x53ef, 0x5475, 0x54e5,
- 0x5609, 0x5ac1, 0x5bb6, 0x6687, 0x67b6, 0x67b7, 0x67ef, 0x6b4c,
- 0x73c2, 0x75c2, 0x7a3c, 0x82db, 0x8304, 0x8857, 0x8888, 0x8a36,
- 0x8cc8, 0x8dcf, 0x8efb, 0x8fe6, 0x99d5, 0x523b, 0x5374, 0x5404,
- 0x606a, 0x6164, 0x6bbc, 0x73cf, 0x811a, 0x89ba, 0x89d2, 0x95a3,
- 0x4f83, 0x520a, 0x58be, 0x5978, 0x59e6, 0x5e72, 0x5e79, 0x61c7,
- 0x63c0, 0x6746, 0x67ec, 0x687f, 0x6f97, 0x764e, 0x770b, 0x78f5,
- 0x7a08, 0x7aff, 0x7c21, 0x809d, 0x826e, 0x8271, 0x8aeb, 0x9593,
- 0x4e6b, 0x559d, 0x66f7, 0x6e34, 0x78a3, 0x7aed, 0x845b, 0x8910,
- 0x874e, 0x97a8, 0x52d8, 0x574e, 0x582a, 0x5d4c, 0x611f, 0x61be,
- 0x6221, 0x6562, 0x67d1, 0x6a44, 0x6e1b, 0x7518, 0x75b3, 0x76e3,
- 0x77b0, 0x7d3a, 0x90af, 0x9451, 0x9452, 0x9f95, 0x5323, 0x5cac,
- 0x7532, 0x80db, 0x9240, 0x9598, 0x525b, 0x5808, 0x59dc, 0x5ca1,
- 0x5d17, 0x5eb7, 0x5f3a, 0x5f4a, 0x6177, 0x6c5f, 0x757a, 0x7586,
- 0x7ce0, 0x7d73, 0x7db1, 0x7f8c, 0x8154, 0x8221, 0x8591, 0x8941,
- 0x8b1b, 0x92fc, 0x964d, 0x9c47, 0x4ecb, 0x4ef7, 0x500b, 0x51f1,
- 0x584f, 0x6137, 0x613e, 0x6168, 0x6539, 0x69ea, 0x6f11, 0x75a5,
- 0x7686, 0x76d6, 0x7b87, 0x82a5, 0x84cb, 0xf900, 0x93a7, 0x958b,
- 0x5580, 0x5ba2, 0x5751, 0xf901, 0x7cb3, 0x7fb9, 0x91b5, 0x5028,
- 0x53bb, 0x5c45, 0x5de8, 0x62d2, 0x636e, 0x64da, 0x64e7, 0x6e20,
- 0x70ac, 0x795b, 0x8ddd, 0x8e1e, 0xf902, 0x907d, 0x9245, 0x92f8,
- 0x4e7e, 0x4ef6, 0x5065, 0x5dfe, 0x5efa, 0x6106, 0x6957, 0x8171,
- 0x8654, 0x8e47, 0x9375, 0x9a2b, 0x4e5e, 0x5091, 0x6770, 0x6840,
- 0x5109, 0x528d, 0x5292, 0x6aa2, 0x77bc, 0x9210, 0x9ed4, 0x52ab,
- 0x602f, 0x8ff2, 0x5048, 0x61a9, 0x63ed, 0x64ca, 0x683c, 0x6a84,
- 0x6fc0, 0x8188, 0x89a1, 0x9694, 0x5805, 0x727d, 0x72ac, 0x7504,
- 0x7d79, 0x7e6d, 0x80a9, 0x898b, 0x8b74, 0x9063, 0x9d51, 0x6289,
- 0x6c7a, 0x6f54, 0x7d50, 0x7f3a, 0x8a23, 0x517c, 0x614a, 0x7b9d,
- 0x8b19, 0x9257, 0x938c, 0x4eac, 0x4fd3, 0x501e, 0x50be, 0x5106,
- 0x52c1, 0x52cd, 0x537f, 0x5770, 0x5883, 0x5e9a, 0x5f91, 0x6176,
- 0x61ac, 0x64ce, 0x656c, 0x666f, 0x66bb, 0x66f4, 0x6897, 0x6d87,
- 0x7085, 0x70f1, 0x749f, 0x74a5, 0x74ca, 0x75d9, 0x786c, 0x78ec,
- 0x7adf, 0x7af6, 0x7d45, 0x7d93, 0x8015, 0x803f, 0x811b, 0x8396,
- 0x8b66, 0x8f15, 0x9015, 0x93e1, 0x9803, 0x9838, 0x9a5a, 0x9be8,
- 0x4fc2, 0x5553, 0x583a, 0x5951, 0x5b63, 0x5c46, 0x60b8, 0x6212,
- 0x6842, 0x68b0, 0x68e8, 0x6eaa, 0x754c, 0x7678, 0x78ce, 0x7a3d,
- 0x7cfb, 0x7e6b, 0x7e7c, 0x8a08, 0x8aa1, 0x8c3f, 0x968e, 0x9dc4,
- 0x53e4, 0x53e9, 0x544a, 0x5471, 0x56fa, 0x59d1, 0x5b64, 0x5c3b,
- 0x5eab, 0x62f7, 0x6537, 0x6545, 0x6572, 0x66a0, 0x67af, 0x69c1,
- 0x6cbd, 0x75fc, 0x7690, 0x777e, 0x7a3f, 0x7f94, 0x8003, 0x80a1,
- 0x818f, 0x82e6, 0x82fd, 0x83f0, 0x85c1, 0x8831, 0x88b4, 0x8aa5,
- 0xf903, 0x8f9c, 0x932e, 0x96c7, 0x9867, 0x9ad8, 0x9f13, 0x54ed,
- 0x659b, 0x66f2, 0x688f, 0x7a40, 0x8c37, 0x9d60, 0x56f0, 0x5764,
- 0x5d11, 0x6606, 0x68b1, 0x68cd, 0x6efe, 0x7428, 0x889e, 0x9be4,
- 0x6c68, 0xf904, 0x9aa8, 0x4f9b, 0x516c, 0x5171, 0x529f, 0x5b54,
- 0x5de5, 0x6050, 0x606d, 0x62f1, 0x63a7, 0x653b, 0x73d9, 0x7a7a,
- 0x86a3, 0x8ca2, 0x978f, 0x4e32, 0x5be1, 0x6208, 0x679c, 0x74dc,
- 0x79d1, 0x83d3, 0x8a87, 0x8ab2, 0x8de8, 0x904e, 0x934b, 0x9846,
- 0x5ed3, 0x69e8, 0x85ff, 0x90ed, 0xf905, 0x51a0, 0x5b98, 0x5bec,
- 0x6163, 0x68fa, 0x6b3e, 0x704c, 0x742f, 0x74d8, 0x7ba1, 0x7f50,
- 0x83c5, 0x89c0, 0x8cab, 0x95dc, 0x9928, 0x522e, 0x605d, 0x62ec,
- 0x9002, 0x4f8a, 0x5149, 0x5321, 0x58d9, 0x5ee3, 0x66e0, 0x6d38,
- 0x709a, 0x72c2, 0x73d6, 0x7b50, 0x80f1, 0x945b, 0x5366, 0x639b,
- 0x7f6b, 0x4e56, 0x5080, 0x584a, 0x58de, 0x602a, 0x6127, 0x62d0,
- 0x69d0, 0x9b41, 0x5b8f, 0x7d18, 0x80b1, 0x8f5f, 0x4ea4, 0x50d1,
- 0x54ac, 0x55ac, 0x5b0c, 0x5da0, 0x5de7, 0x652a, 0x654e, 0x6821,
- 0x6a4b, 0x72e1, 0x768e, 0x77ef, 0x7d5e, 0x7ff9, 0x81a0, 0x854e,
- 0x86df, 0x8f03, 0x8f4e, 0x90ca, 0x9903, 0x9a55, 0x9bab, 0x4e18,
- 0x4e45, 0x4e5d, 0x4ec7, 0x4ff1, 0x5177, 0x52fe, 0x5340, 0x53e3,
- 0x53e5, 0x548e, 0x5614, 0x5775, 0x57a2, 0x5bc7, 0x5d87, 0x5ed0,
- 0x61fc, 0x62d8, 0x6551, 0x67b8, 0x67e9, 0x69cb, 0x6b50, 0x6bc6,
- 0x6bec, 0x6c42, 0x6e9d, 0x7078, 0x72d7, 0x7396, 0x7403, 0x77bf,
- 0x77e9, 0x7a76, 0x7d7f, 0x8009, 0x81fc, 0x8205, 0x820a, 0x82df,
- 0x8862, 0x8b33, 0x8cfc, 0x8ec0, 0x9011, 0x90b1, 0x9264, 0x92b6,
- 0x99d2, 0x9a45, 0x9ce9, 0x9dd7, 0x9f9c, 0x570b, 0x5c40, 0x83ca,
- 0x97a0, 0x97ab, 0x9eb4, 0x541b, 0x7a98, 0x7fa4, 0x88d9, 0x8ecd,
- 0x90e1, 0x5800, 0x5c48, 0x6398, 0x7a9f, 0x5bae, 0x5f13, 0x7a79,
- 0x7aae, 0x828e, 0x8eac, 0x5026, 0x5238, 0x52f8, 0x5377, 0x5708,
- 0x62f3, 0x6372, 0x6b0a, 0x6dc3, 0x7737, 0x53a5, 0x7357, 0x8568,
- 0x8e76, 0x95d5, 0x673a, 0x6ac3, 0x6f70, 0x8a6d, 0x8ecc, 0x994b,
- 0xf906, 0x6677, 0x6b78, 0x8cb4, 0x9b3c, 0xf907, 0x53eb, 0x572d,
- 0x594e, 0x63c6, 0x69fb, 0x73ea, 0x7845, 0x7aba, 0x7ac5, 0x7cfe,
- 0x8475, 0x898f, 0x8d73, 0x9035, 0x95a8, 0x52fb, 0x5747, 0x7547,
- 0x7b60, 0x83cc, 0x921e, 0xf908, 0x6a58, 0x514b, 0x524b, 0x5287,
- 0x621f, 0x68d8, 0x6975, 0x9699, 0x50c5, 0x52a4, 0x52e4, 0x61c3,
- 0x65a4, 0x6839, 0x69ff, 0x747e, 0x7b4b, 0x82b9, 0x83eb, 0x89b2,
- 0x8b39, 0x8fd1, 0x9949, 0xf909, 0x4eca, 0x5997, 0x64d2, 0x6611,
- 0x6a8e, 0x7434, 0x7981, 0x79bd, 0x82a9, 0x887e, 0x887f, 0x895f,
- 0xf90a, 0x9326, 0x4f0b, 0x53ca, 0x6025, 0x6271, 0x6c72, 0x7d1a,
- 0x7d66, 0x4e98, 0x5162, 0x77dc, 0x80af, 0x4f01, 0x4f0e, 0x5176,
- 0x5180, 0x55dc, 0x5668, 0x573b, 0x57fa, 0x57fc, 0x5914, 0x5947,
- 0x5993, 0x5bc4, 0x5c90, 0x5d0e, 0x5df1, 0x5e7e, 0x5fcc, 0x6280,
- 0x65d7, 0x65e3, 0x671e, 0x671f, 0x675e, 0x68cb, 0x68c4, 0x6a5f,
- 0x6b3a, 0x6c23, 0x6c7d, 0x6c82, 0x6dc7, 0x7398, 0x7426, 0x742a,
- 0x7482, 0x74a3, 0x7578, 0x757f, 0x7881, 0x78ef, 0x7941, 0x7947,
- 0x7948, 0x797a, 0x7b95, 0x7d00, 0x7dba, 0x7f88, 0x8006, 0x802d,
- 0x808c, 0x8a18, 0x8b4f, 0x8c48, 0x8d77, 0x9321, 0x9324, 0x98e2,
- 0x9951, 0x9a0e, 0x9a0f, 0x9a65, 0x9e92, 0x7dca, 0x4f76, 0x5409,
- 0x62ee, 0x6854, 0x91d1, 0x55ab, 0x513a, 0xf90b, 0xf90c, 0x5a1c,
- 0x61e6, 0xf90d, 0x62cf, 0x62ff, 0xf90e, 0xf90f, 0xf910, 0xf911,
- 0xf912, 0xf913, 0x90a3, 0xf914, 0xf915, 0xf916, 0xf917, 0xf918,
- 0x8afe, 0xf919, 0xf91a, 0xf91b, 0xf91c, 0x6696, 0xf91d, 0x7156,
- 0xf91e, 0xf91f, 0x96e3, 0xf920, 0x634f, 0x637a, 0x5357, 0xf921,
- 0x678f, 0x6960, 0x6e73, 0xf922, 0x7537, 0xf923, 0xf924, 0xf925,
- 0x7d0d, 0xf926, 0xf927, 0x8872, 0x56ca, 0x5a18, 0xf928, 0xf929,
- 0xf92a, 0xf92b, 0xf92c, 0x4e43, 0xf92d, 0x5167, 0x5948, 0x67f0,
- 0x8010, 0xf92e, 0x5973, 0x5e74, 0x649a, 0x79ca, 0x5ff5, 0x606c,
- 0x62c8, 0x637b, 0x5be7, 0x5bd7, 0x52aa, 0xf92f, 0x5974, 0x5f29,
- 0x6012, 0xf930, 0xf931, 0xf932, 0x7459, 0xf933, 0xf934, 0xf935,
- 0xf936, 0xf937, 0xf938, 0x99d1, 0xf939, 0xf93a, 0xf93b, 0xf93c,
- 0xf93d, 0xf93e, 0xf93f, 0xf940, 0xf941, 0xf942, 0xf943, 0x6fc3,
- 0xf944, 0xf945, 0x81bf, 0x8fb2, 0x60f1, 0xf946, 0xf947, 0x8166,
- 0xf948, 0xf949, 0x5c3f, 0xf94a, 0xf94b, 0xf94c, 0xf94d, 0xf94e,
- 0xf94f, 0xf950, 0xf951, 0x5ae9, 0x8a25, 0x677b, 0x7d10, 0xf952,
- 0xf953, 0xf954, 0xf955, 0xf956, 0xf957, 0x80fd, 0xf958, 0xf959,
- 0x5c3c, 0x6ce5, 0x533f, 0x6eba, 0x591a, 0x8336, 0x4e39, 0x4eb6,
- 0x4f46, 0x55ae, 0x5718, 0x58c7, 0x5f56, 0x65b7, 0x65e6, 0x6a80,
- 0x6bb5, 0x6e4d, 0x77ed, 0x7aef, 0x7c1e, 0x7dde, 0x86cb, 0x8892,
- 0x9132, 0x935b, 0x64bb, 0x6fbe, 0x737a, 0x75b8, 0x9054, 0x5556,
- 0x574d, 0x61ba, 0x64d4, 0x66c7, 0x6de1, 0x6e5b, 0x6f6d, 0x6fb9,
- 0x75f0, 0x8043, 0x81bd, 0x8541, 0x8983, 0x8ac7, 0x8b5a, 0x931f,
- 0x6c93, 0x7553, 0x7b54, 0x8e0f, 0x905d, 0x5510, 0x5802, 0x5858,
- 0x5e62, 0x6207, 0x649e, 0x68e0, 0x7576, 0x7cd6, 0x87b3, 0x9ee8,
- 0x4ee3, 0x5788, 0x576e, 0x5927, 0x5c0d, 0x5cb1, 0x5e36, 0x5f85,
- 0x6234, 0x64e1, 0x73b3, 0x81fa, 0x888b, 0x8cb8, 0x968a, 0x9edb,
- 0x5b85, 0x5fb7, 0x60b3, 0x5012, 0x5200, 0x5230, 0x5716, 0x5835,
- 0x5857, 0x5c0e, 0x5c60, 0x5cf6, 0x5d8b, 0x5ea6, 0x5f92, 0x60bc,
- 0x6311, 0x6389, 0x6417, 0x6843, 0x68f9, 0x6ac2, 0x6dd8, 0x6e21,
- 0x6ed4, 0x6fe4, 0x71fe, 0x76dc, 0x7779, 0x79b1, 0x7a3b, 0x8404,
- 0x89a9, 0x8ced, 0x8df3, 0x8e48, 0x9003, 0x9014, 0x9053, 0x90fd,
- 0x934d, 0x9676, 0x97dc, 0x6bd2, 0x7006, 0x7258, 0x72a2, 0x7368,
- 0x7763, 0x79bf, 0x7be4, 0x7e9b, 0x8b80, 0x58a9, 0x60c7, 0x6566,
- 0x65fd, 0x66be, 0x6c8c, 0x711e, 0x71c9, 0x8c5a, 0x9813, 0x4e6d,
- 0x7a81, 0x4edd, 0x51ac, 0x51cd, 0x52d5, 0x540c, 0x61a7, 0x6771,
- 0x6850, 0x68df, 0x6d1e, 0x6f7c, 0x75bc, 0x77b3, 0x7ae5, 0x80f4,
- 0x8463, 0x9285, 0x515c, 0x6597, 0x675c, 0x6793, 0x75d8, 0x7ac7,
- 0x8373, 0xf95a, 0x8c46, 0x9017, 0x982d, 0x5c6f, 0x81c0, 0x829a,
- 0x9041, 0x906f, 0x920d, 0x5f97, 0x5d9d, 0x6a59, 0x71c8, 0x767b,
- 0x7b49, 0x85e4, 0x8b04, 0x9127, 0x9a30, 0x5587, 0x61f6, 0xf95b,
- 0x7669, 0x7f85, 0x863f, 0x87ba, 0x88f8, 0x908f, 0xf95c, 0x6d1b,
- 0x70d9, 0x73de, 0x7d61, 0x843d, 0xf95d, 0x916a, 0x99f1, 0xf95e,
- 0x4e82, 0x5375, 0x6b04, 0x6b12, 0x703e, 0x721b, 0x862d, 0x9e1e,
- 0x524c, 0x8fa3, 0x5d50, 0x64e5, 0x652c, 0x6b16, 0x6feb, 0x7c43,
- 0x7e9c, 0x85cd, 0x8964, 0x89bd, 0x62c9, 0x81d8, 0x881f, 0x5eca,
- 0x6717, 0x6d6a, 0x72fc, 0x7405, 0x746f, 0x8782, 0x90de, 0x4f86,
- 0x5d0d, 0x5fa0, 0x840a, 0x51b7, 0x63a0, 0x7565, 0x4eae, 0x5006,
- 0x5169, 0x51c9, 0x6881, 0x6a11, 0x7cae, 0x7cb1, 0x7ce7, 0x826f,
- 0x8ad2, 0x8f1b, 0x91cf, 0x4fb6, 0x5137, 0x52f5, 0x5442, 0x5eec,
- 0x616e, 0x623e, 0x65c5, 0x6ada, 0x6ffe, 0x792a, 0x85dc, 0x8823,
- 0x95ad, 0x9a62, 0x9a6a, 0x9e97, 0x9ece, 0x529b, 0x66c6, 0x6b77,
- 0x701d, 0x792b, 0x8f62, 0x9742, 0x6190, 0x6200, 0x6523, 0x6f23,
- 0x7149, 0x7489, 0x7df4, 0x806f, 0x84ee, 0x8f26, 0x9023, 0x934a,
- 0x51bd, 0x5217, 0x52a3, 0x6d0c, 0x70c8, 0x88c2, 0x5ec9, 0x6582,
- 0x6bae, 0x6fc2, 0x7c3e, 0x7375, 0x4ee4, 0x4f36, 0x56f9, 0xf95f,
- 0x5cba, 0x5dba, 0x601c, 0x73b2, 0x7b2d, 0x7f9a, 0x7fce, 0x8046,
- 0x901e, 0x9234, 0x96f6, 0x9748, 0x9818, 0x9f61, 0x4f8b, 0x6fa7,
- 0x79ae, 0x91b4, 0x96b7, 0x52de, 0xf960, 0x6488, 0x64c4, 0x6ad3,
- 0x6f5e, 0x7018, 0x7210, 0x76e7, 0x8001, 0x8606, 0x865c, 0x8def,
- 0x8f05, 0x9732, 0x9b6f, 0x9dfa, 0x9e75, 0x788c, 0x797f, 0x7da0,
- 0x83c9, 0x9304, 0x9e7f, 0x9e93, 0x8ad6, 0x58df, 0x5f04, 0x6727,
- 0x7027, 0x74cf, 0x7c60, 0x807e, 0x5121, 0x7028, 0x7262, 0x78ca,
- 0x8cc2, 0x8cda, 0x8cf4, 0x96f7, 0x4e86, 0x50da, 0x5bee, 0x5ed6,
- 0x6599, 0x71ce, 0x7642, 0x77ad, 0x804a, 0x84fc, 0x907c, 0x9b27,
- 0x9f8d, 0x58d8, 0x5a41, 0x5c62, 0x6a13, 0x6dda, 0x6f0f, 0x763b,
- 0x7d2f, 0x7e37, 0x851e, 0x8938, 0x93e4, 0x964b, 0x5289, 0x65d2,
- 0x67f3, 0x69b4, 0x6d41, 0x6e9c, 0x700f, 0x7409, 0x7460, 0x7559,
- 0x7624, 0x786b, 0x8b2c, 0x985e, 0x516d, 0x622e, 0x9678, 0x4f96,
- 0x502b, 0x5d19, 0x6dea, 0x7db8, 0x8f2a, 0x5f8b, 0x6144, 0x6817,
- 0xf961, 0x9686, 0x52d2, 0x808b, 0x51dc, 0x51cc, 0x695e, 0x7a1c,
- 0x7dbe, 0x83f1, 0x9675, 0x4fda, 0x5229, 0x5398, 0x540f, 0x550e,
- 0x5c65, 0x60a7, 0x674e, 0x68a8, 0x6d6c, 0x7281, 0x72f8, 0x7406,
- 0x7483, 0xf962, 0x75e2, 0x7c6c, 0x7f79, 0x7fb8, 0x8389, 0x88cf,
- 0x88e1, 0x91cc, 0x91d0, 0x96e2, 0x9bc9, 0x541d, 0x6f7e, 0x71d0,
- 0x7498, 0x85fa, 0x8eaa, 0x96a3, 0x9c57, 0x9e9f, 0x6797, 0x6dcb,
- 0x7433, 0x81e8, 0x9716, 0x782c, 0x7acb, 0x7b20, 0x7c92, 0x6469,
- 0x746a, 0x75f2, 0x78bc, 0x78e8, 0x99ac, 0x9b54, 0x9ebb, 0x5bde,
- 0x5e55, 0x6f20, 0x819c, 0x83ab, 0x9088, 0x4e07, 0x534d, 0x5a29,
- 0x5dd2, 0x5f4e, 0x6162, 0x633d, 0x6669, 0x66fc, 0x6eff, 0x6f2b,
- 0x7063, 0x779e, 0x842c, 0x8513, 0x883b, 0x8f13, 0x9945, 0x9c3b,
- 0x551c, 0x62b9, 0x672b, 0x6cab, 0x8309, 0x896a, 0x977a, 0x4ea1,
- 0x5984, 0x5fd8, 0x5fd9, 0x671b, 0x7db2, 0x7f54, 0x8292, 0x832b,
- 0x83bd, 0x8f1e, 0x9099, 0x57cb, 0x59b9, 0x5a92, 0x5bd0, 0x6627,
- 0x679a, 0x6885, 0x6bcf, 0x7164, 0x7f75, 0x8cb7, 0x8ce3, 0x9081,
- 0x9b45, 0x8108, 0x8c8a, 0x964c, 0x9a40, 0x9ea5, 0x5b5f, 0x6c13,
- 0x731b, 0x76f2, 0x76df, 0x840c, 0x51aa, 0x8993, 0x514d, 0x5195,
- 0x52c9, 0x68c9, 0x6c94, 0x7704, 0x7720, 0x7dbf, 0x7dec, 0x9762,
- 0x9eb5, 0x6ec5, 0x8511, 0x51a5, 0x540d, 0x547d, 0x660e, 0x669d,
- 0x6927, 0x6e9f, 0x76bf, 0x7791, 0x8317, 0x84c2, 0x879f, 0x9169,
- 0x9298, 0x9cf4, 0x8882, 0x4fae, 0x5192, 0x52df, 0x59c6, 0x5e3d,
- 0x6155, 0x6478, 0x6479, 0x66ae, 0x67d0, 0x6a21, 0x6bcd, 0x6bdb,
- 0x725f, 0x7261, 0x7441, 0x7738, 0x77db, 0x8017, 0x82bc, 0x8305,
- 0x8b00, 0x8b28, 0x8c8c, 0x6728, 0x6c90, 0x7267, 0x76ee, 0x7766,
- 0x7a46, 0x9da9, 0x6b7f, 0x6c92, 0x5922, 0x6726, 0x8499, 0x536f,
- 0x5893, 0x5999, 0x5edf, 0x63cf, 0x6634, 0x6773, 0x6e3a, 0x732b,
- 0x7ad7, 0x82d7, 0x9328, 0x52d9, 0x5deb, 0x61ae, 0x61cb, 0x620a,
- 0x62c7, 0x64ab, 0x65e0, 0x6959, 0x6b66, 0x6bcb, 0x7121, 0x73f7,
- 0x755d, 0x7e46, 0x821e, 0x8302, 0x856a, 0x8aa3, 0x8cbf, 0x9727,
- 0x9d61, 0x58a8, 0x9ed8, 0x5011, 0x520e, 0x543b, 0x554f, 0x6587,
- 0x6c76, 0x7d0a, 0x7d0b, 0x805e, 0x868a, 0x9580, 0x96ef, 0x52ff,
- 0x6c95, 0x7269, 0x5473, 0x5a9a, 0x5c3e, 0x5d4b, 0x5f4c, 0x5fae,
- 0x672a, 0x68b6, 0x6963, 0x6e3c, 0x6e44, 0x7709, 0x7c73, 0x7f8e,
- 0x8587, 0x8b0e, 0x8ff7, 0x9761, 0x9ef4, 0x5cb7, 0x60b6, 0x610d,
- 0x61ab, 0x654f, 0x65fb, 0x65fc, 0x6c11, 0x6cef, 0x739f, 0x73c9,
- 0x7de1, 0x9594, 0x5bc6, 0x871c, 0x8b10, 0x525d, 0x535a, 0x62cd,
- 0x640f, 0x64b2, 0x6734, 0x6a38, 0x6cca, 0x73c0, 0x749e, 0x7b94,
- 0x7c95, 0x7e1b, 0x818a, 0x8236, 0x8584, 0x8feb, 0x96f9, 0x99c1,
- 0x4f34, 0x534a, 0x53cd, 0x53db, 0x62cc, 0x642c, 0x6500, 0x6591,
- 0x69c3, 0x6cee, 0x6f58, 0x73ed, 0x7554, 0x7622, 0x76e4, 0x76fc,
- 0x78d0, 0x78fb, 0x792c, 0x7d46, 0x822c, 0x87e0, 0x8fd4, 0x9812,
- 0x98ef, 0x52c3, 0x62d4, 0x64a5, 0x6e24, 0x6f51, 0x767c, 0x8dcb,
- 0x91b1, 0x9262, 0x9aee, 0x9b43, 0x5023, 0x508d, 0x574a, 0x59a8,
- 0x5c28, 0x5e47, 0x5f77, 0x623f, 0x653e, 0x65b9, 0x65c1, 0x6609,
- 0x678b, 0x699c, 0x6ec2, 0x78c5, 0x7d21, 0x80aa, 0x8180, 0x822b,
- 0x82b3, 0x84a1, 0x868c, 0x8a2a, 0x8b17, 0x90a6, 0x9632, 0x9f90,
- 0x500d, 0x4ff3, 0xf963, 0x57f9, 0x5f98, 0x62dc, 0x6392, 0x676f,
- 0x6e43, 0x7119, 0x76c3, 0x80cc, 0x80da, 0x88f4, 0x88f5, 0x8919,
- 0x8ce0, 0x8f29, 0x914d, 0x966a, 0x4f2f, 0x4f70, 0x5e1b, 0x67cf,
- 0x6822, 0x767d, 0x767e, 0x9b44, 0x5e61, 0x6a0a, 0x7169, 0x71d4,
- 0x756a, 0xf964, 0x7e41, 0x8543, 0x85e9, 0x98dc, 0x4f10, 0x7b4f,
- 0x7f70, 0x95a5, 0x51e1, 0x5e06, 0x68b5, 0x6c3e, 0x6c4e, 0x6cdb,
- 0x72af, 0x7bc4, 0x8303, 0x6cd5, 0x743a, 0x50fb, 0x5288, 0x58c1,
- 0x64d8, 0x6a97, 0x74a7, 0x7656, 0x78a7, 0x8617, 0x95e2, 0x9739,
- 0xf965, 0x535e, 0x5f01, 0x8b8a, 0x8fa8, 0x8faf, 0x908a, 0x5225,
- 0x77a5, 0x9c49, 0x9f08, 0x4e19, 0x5002, 0x5175, 0x5c5b, 0x5e77,
- 0x661e, 0x663a, 0x67c4, 0x68c5, 0x70b3, 0x7501, 0x75c5, 0x79c9,
- 0x7add, 0x8f27, 0x9920, 0x9a08, 0x4fdd, 0x5821, 0x5831, 0x5bf6,
- 0x666e, 0x6b65, 0x6d11, 0x6e7a, 0x6f7d, 0x73e4, 0x752b, 0x83e9,
- 0x88dc, 0x8913, 0x8b5c, 0x8f14, 0x4f0f, 0x50d5, 0x5310, 0x535c,
- 0x5b93, 0x5fa9, 0x670d, 0x798f, 0x8179, 0x832f, 0x8514, 0x8907,
- 0x8986, 0x8f39, 0x8f3b, 0x99a5, 0x9c12, 0x672c, 0x4e76, 0x4ff8,
- 0x5949, 0x5c01, 0x5cef, 0x5cf0, 0x6367, 0x68d2, 0x70fd, 0x71a2,
- 0x742b, 0x7e2b, 0x84ec, 0x8702, 0x9022, 0x92d2, 0x9cf3, 0x4e0d,
- 0x4ed8, 0x4fef, 0x5085, 0x5256, 0x526f, 0x5426, 0x5490, 0x57e0,
- 0x592b, 0x5a66, 0x5b5a, 0x5b75, 0x5bcc, 0x5e9c, 0xf966, 0x6276,
- 0x6577, 0x65a7, 0x6d6e, 0x6ea5, 0x7236, 0x7b26, 0x7c3f, 0x7f36,
- 0x8150, 0x8151, 0x819a, 0x8240, 0x8299, 0x83a9, 0x8a03, 0x8ca0,
- 0x8ce6, 0x8cfb, 0x8d74, 0x8dba, 0x90e8, 0x91dc, 0x961c, 0x9644,
- 0x99d9, 0x9ce7, 0x5317, 0x5206, 0x5429, 0x5674, 0x58b3, 0x5954,
- 0x596e, 0x5fff, 0x61a4, 0x626e, 0x6610, 0x6c7e, 0x711a, 0x76c6,
- 0x7c89, 0x7cde, 0x7d1b, 0x82ac, 0x8cc1, 0x96f0, 0xf967, 0x4f5b,
- 0x5f17, 0x5f7f, 0x62c2, 0x5d29, 0x670b, 0x68da, 0x787c, 0x7e43,
- 0x9d6c, 0x4e15, 0x5099, 0x5315, 0x532a, 0x5351, 0x5983, 0x5a62,
- 0x5e87, 0x60b2, 0x618a, 0x6249, 0x6279, 0x6590, 0x6787, 0x69a7,
- 0x6bd4, 0x6bd6, 0x6bd7, 0x6bd8, 0x6cb8, 0xf968, 0x7435, 0x75fa,
- 0x7812, 0x7891, 0x79d5, 0x79d8, 0x7c83, 0x7dcb, 0x7fe1, 0x80a5,
- 0x813e, 0x81c2, 0x83f2, 0x871a, 0x88e8, 0x8ab9, 0x8b6c, 0x8cbb,
- 0x9119, 0x975e, 0x98db, 0x9f3b, 0x56ac, 0x5b2a, 0x5f6c, 0x658c,
- 0x6ab3, 0x6baf, 0x6d5c, 0x6ff1, 0x7015, 0x725d, 0x73ad, 0x8ca7,
- 0x8cd3, 0x983b, 0x6191, 0x6c37, 0x8058, 0x9a01, 0x4e4d, 0x4e8b,
- 0x4e9b, 0x4ed5, 0x4f3a, 0x4f3c, 0x4f7f, 0x4fdf, 0x50ff, 0x53f2,
- 0x53f8, 0x5506, 0x55e3, 0x56db, 0x58eb, 0x5962, 0x5a11, 0x5beb,
- 0x5bfa, 0x5c04, 0x5df3, 0x5e2b, 0x5f99, 0x601d, 0x6368, 0x659c,
- 0x65af, 0x67f6, 0x67fb, 0x68ad, 0x6b7b, 0x6c99, 0x6cd7, 0x6e23,
- 0x7009, 0x7345, 0x7802, 0x793e, 0x7940, 0x7960, 0x79c1, 0x7be9,
- 0x7d17, 0x7d72, 0x8086, 0x820d, 0x838e, 0x84d1, 0x86c7, 0x88df,
- 0x8a50, 0x8a5e, 0x8b1d, 0x8cdc, 0x8d66, 0x8fad, 0x90aa, 0x98fc,
- 0x99df, 0x9e9d, 0x524a, 0xf969, 0x6714, 0xf96a, 0x5098, 0x522a,
- 0x5c71, 0x6563, 0x6c55, 0x73ca, 0x7523, 0x759d, 0x7b97, 0x849c,
- 0x9178, 0x9730, 0x4e77, 0x6492, 0x6bba, 0x715e, 0x85a9, 0x4e09,
- 0xf96b, 0x6749, 0x68ee, 0x6e17, 0x829f, 0x8518, 0x886b, 0x63f7,
- 0x6f81, 0x9212, 0x98af, 0x4e0a, 0x50b7, 0x50cf, 0x511f, 0x5546,
- 0x55aa, 0x5617, 0x5b40, 0x5c19, 0x5ce0, 0x5e38, 0x5e8a, 0x5ea0,
- 0x5ec2, 0x60f3, 0x6851, 0x6a61, 0x6e58, 0x723d, 0x7240, 0x72c0,
- 0x76f8, 0x7965, 0x7bb1, 0x7fd4, 0x88f3, 0x89f4, 0x8a73, 0x8c61,
- 0x8cde, 0x971c, 0x585e, 0x74bd, 0x8cfd, 0x55c7, 0xf96c, 0x7a61,
- 0x7d22, 0x8272, 0x7272, 0x751f, 0x7525, 0xf96d, 0x7b19, 0x5885,
- 0x58fb, 0x5dbc, 0x5e8f, 0x5eb6, 0x5f90, 0x6055, 0x6292, 0x637f,
- 0x654d, 0x6691, 0x66d9, 0x66f8, 0x6816, 0x68f2, 0x7280, 0x745e,
- 0x7b6e, 0x7d6e, 0x7dd6, 0x7f72, 0x80e5, 0x8212, 0x85af, 0x897f,
- 0x8a93, 0x901d, 0x92e4, 0x9ecd, 0x9f20, 0x5915, 0x596d, 0x5e2d,
- 0x60dc, 0x6614, 0x6673, 0x6790, 0x6c50, 0x6dc5, 0x6f5f, 0x77f3,
- 0x78a9, 0x84c6, 0x91cb, 0x932b, 0x4ed9, 0x50ca, 0x5148, 0x5584,
- 0x5b0b, 0x5ba3, 0x6247, 0x657e, 0x65cb, 0x6e32, 0x717d, 0x7401,
- 0x7444, 0x7487, 0x74bf, 0x766c, 0x79aa, 0x7dda, 0x7e55, 0x7fa8,
- 0x817a, 0x81b3, 0x8239, 0x861a, 0x87ec, 0x8a75, 0x8de3, 0x9078,
- 0x9291, 0x9425, 0x994d, 0x9bae, 0x5368, 0x5c51, 0x6954, 0x6cc4,
- 0x6d29, 0x6e2b, 0x820c, 0x859b, 0x893b, 0x8a2d, 0x8aaa, 0x96ea,
- 0x9f67, 0x5261, 0x66b9, 0x6bb2, 0x7e96, 0x87fe, 0x8d0d, 0x9583,
- 0x965d, 0x651d, 0x6d89, 0x71ee, 0xf96e, 0x57ce, 0x59d3, 0x5bac,
- 0x6027, 0x60fa, 0x6210, 0x661f, 0x665f, 0x7329, 0x73f9, 0x76db,
- 0x7701, 0x7b6c, 0x8056, 0x8072, 0x8165, 0x8aa0, 0x9192, 0x4e16,
- 0x52e2, 0x6b72, 0x6d17, 0x7a05, 0x7b39, 0x7d30, 0xf96f, 0x8cb0,
- 0x53ec, 0x562f, 0x5851, 0x5bb5, 0x5c0f, 0x5c11, 0x5de2, 0x6240,
- 0x6383, 0x6414, 0x662d, 0x68b3, 0x6cbc, 0x6d88, 0x6eaf, 0x701f,
- 0x70a4, 0x71d2, 0x7526, 0x758f, 0x758e, 0x7619, 0x7b11, 0x7be0,
- 0x7c2b, 0x7d20, 0x7d39, 0x852c, 0x856d, 0x8607, 0x8a34, 0x900d,
- 0x9061, 0x90b5, 0x92b7, 0x97f6, 0x9a37, 0x4fd7, 0x5c6c, 0x675f,
- 0x6d91, 0x7c9f, 0x7e8c, 0x8b16, 0x8d16, 0x901f, 0x5b6b, 0x5dfd,
- 0x640d, 0x84c0, 0x905c, 0x98e1, 0x7387, 0x5b8b, 0x609a, 0x677e,
- 0x6dde, 0x8a1f, 0x8aa6, 0x9001, 0x980c, 0x5237, 0xf970, 0x7051,
- 0x788e, 0x9396, 0x8870, 0x91d7, 0x4fee, 0x53d7, 0x55fd, 0x56da,
- 0x5782, 0x58fd, 0x5ac2, 0x5b88, 0x5cab, 0x5cc0, 0x5e25, 0x6101,
- 0x620d, 0x624b, 0x6388, 0x641c, 0x6536, 0x6578, 0x6a39, 0x6b8a,
- 0x6c34, 0x6d19, 0x6f31, 0x71e7, 0x72e9, 0x7378, 0x7407, 0x74b2,
- 0x7626, 0x7761, 0x79c0, 0x7a57, 0x7aea, 0x7cb9, 0x7d8f, 0x7dac,
- 0x7e61, 0x7f9e, 0x8129, 0x8331, 0x8490, 0x84da, 0x85ea, 0x8896,
- 0x8ab0, 0x8b90, 0x8f38, 0x9042, 0x9083, 0x916c, 0x9296, 0x92b9,
- 0x968b, 0x96a7, 0x96a8, 0x96d6, 0x9700, 0x9808, 0x9996, 0x9ad3,
- 0x9b1a, 0x53d4, 0x587e, 0x5919, 0x5b70, 0x5bbf, 0x6dd1, 0x6f5a,
- 0x719f, 0x7421, 0x74b9, 0x8085, 0x83fd, 0x5de1, 0x5f87, 0x5faa,
- 0x6042, 0x65ec, 0x6812, 0x696f, 0x6a53, 0x6b89, 0x6d35, 0x6df3,
- 0x73e3, 0x76fe, 0x77ac, 0x7b4d, 0x7d14, 0x8123, 0x821c, 0x8340,
- 0x84f4, 0x8563, 0x8a62, 0x8ac4, 0x9187, 0x931e, 0x9806, 0x99b4,
- 0x620c, 0x8853, 0x8ff0, 0x9265, 0x5d07, 0x5d27, 0x5d69, 0x745f,
- 0x819d, 0x8768, 0x6fd5, 0x62fe, 0x7fd2, 0x8936, 0x8972, 0x4e1e,
- 0x4e58, 0x50e7, 0x52dd, 0x5347, 0x627f, 0x6607, 0x7e69, 0x8805,
- 0x965e, 0x4f8d, 0x5319, 0x5636, 0x59cb, 0x5aa4, 0x5c38, 0x5c4e,
- 0x5c4d, 0x5e02, 0x5f11, 0x6043, 0x65bd, 0x662f, 0x6642, 0x67be,
- 0x67f4, 0x731c, 0x77e2, 0x793a, 0x7fc5, 0x8494, 0x84cd, 0x8996,
- 0x8a66, 0x8a69, 0x8ae1, 0x8c55, 0x8c7a, 0x57f4, 0x5bd4, 0x5f0f,
- 0x606f, 0x62ed, 0x690d, 0x6b96, 0x6e5c, 0x7184, 0x7bd2, 0x8755,
- 0x8b58, 0x8efe, 0x98df, 0x98fe, 0x4f38, 0x4f81, 0x4fe1, 0x547b,
- 0x5a20, 0x5bb8, 0x613c, 0x65b0, 0x6668, 0x71fc, 0x7533, 0x795e,
- 0x7d33, 0x814e, 0x81e3, 0x8398, 0x85aa, 0x85ce, 0x8703, 0x8a0a,
- 0x8eab, 0x8f9b, 0xf971, 0x8fc5, 0x5931, 0x5ba4, 0x5be6, 0x6089,
- 0x5be9, 0x5c0b, 0x5fc3, 0x6c81, 0xf972, 0x6df1, 0x700b, 0x751a,
- 0x82af, 0x8af6, 0x4ec0, 0x5341, 0xf973, 0x96d9, 0x6c0f, 0x4e9e,
- 0x4fc4, 0x5152, 0x555e, 0x5a25, 0x5ce8, 0x6211, 0x7259, 0x82bd,
- 0x83aa, 0x86fe, 0x8859, 0x8a1d, 0x963f, 0x96c5, 0x9913, 0x9d09,
- 0x9d5d, 0x580a, 0x5cb3, 0x5dbd, 0x5e44, 0x60e1, 0x6115, 0x63e1,
- 0x6a02, 0x6e25, 0x9102, 0x9354, 0x984e, 0x9c10, 0x9f77, 0x5b89,
- 0x5cb8, 0x6309, 0x664f, 0x6848, 0x773c, 0x96c1, 0x978d, 0x9854,
- 0x9b9f, 0x65a1, 0x8b01, 0x8ecb, 0x95bc, 0x5535, 0x5ca9, 0x5dd6,
- 0x5eb5, 0x6697, 0x764c, 0x83f4, 0x95c7, 0x58d3, 0x62bc, 0x72ce,
- 0x9d28, 0x4ef0, 0x592e, 0x600f, 0x663b, 0x6b83, 0x79e7, 0x9d26,
- 0x5393, 0x54c0, 0x57c3, 0x5d16, 0x611b, 0x66d6, 0x6daf, 0x788d,
- 0x827e, 0x9698, 0x9744, 0x5384, 0x627c, 0x6396, 0x6db2, 0x7e0a,
- 0x814b, 0x984d, 0x6afb, 0x7f4c, 0x9daf, 0x9e1a, 0x4e5f, 0x503b,
- 0x51b6, 0x591c, 0x60f9, 0x63f6, 0x6930, 0x723a, 0x8036, 0xf974,
- 0x91ce, 0x5f31, 0xf975, 0xf976, 0x7d04, 0x82e5, 0x846f, 0x84bb,
- 0x85e5, 0x8e8d, 0xf977, 0x4f6f, 0xf978, 0xf979, 0x58e4, 0x5b43,
- 0x6059, 0x63da, 0x6518, 0x656d, 0x6698, 0xf97a, 0x694a, 0x6a23,
- 0x6d0b, 0x7001, 0x716c, 0x75d2, 0x760d, 0x79b3, 0x7a70, 0xf97b,
- 0x7f8a, 0xf97c, 0x8944, 0xf97d, 0x8b93, 0x91c0, 0x967d, 0xf97e,
- 0x990a, 0x5704, 0x5fa1, 0x65bc, 0x6f01, 0x7600, 0x79a6, 0x8a9e,
- 0x99ad, 0x9b5a, 0x9f6c, 0x5104, 0x61b6, 0x6291, 0x6a8d, 0x81c6,
- 0x5043, 0x5830, 0x5f66, 0x7109, 0x8a00, 0x8afa, 0x5b7c, 0x8616,
- 0x4ffa, 0x513c, 0x56b4, 0x5944, 0x63a9, 0x6df9, 0x5daa, 0x696d,
- 0x5186, 0x4e88, 0x4f59, 0xf97f, 0xf980, 0xf981, 0x5982, 0xf982,
- 0xf983, 0x6b5f, 0x6c5d, 0xf984, 0x74b5, 0x7916, 0xf985, 0x8207,
- 0x8245, 0x8339, 0x8f3f, 0x8f5d, 0xf986, 0x9918, 0xf987, 0xf988,
- 0xf989, 0x4ea6, 0xf98a, 0x57df, 0x5f79, 0x6613, 0xf98b, 0xf98c,
- 0x75ab, 0x7e79, 0x8b6f, 0xf98d, 0x9006, 0x9a5b, 0x56a5, 0x5827,
- 0x59f8, 0x5a1f, 0x5bb4, 0xf98e, 0x5ef6, 0xf98f, 0xf990, 0x6350,
- 0x633b, 0xf991, 0x693d, 0x6c87, 0x6cbf, 0x6d8e, 0x6d93, 0x6df5,
- 0x6f14, 0xf992, 0x70df, 0x7136, 0x7159, 0xf993, 0x71c3, 0x71d5,
- 0xf994, 0x784f, 0x786f, 0xf995, 0x7b75, 0x7de3, 0xf996, 0x7e2f,
- 0xf997, 0x884d, 0x8edf, 0xf998, 0xf999, 0xf99a, 0x925b, 0xf99b,
- 0x9cf6, 0xf99c, 0xf99d, 0xf99e, 0x6085, 0x6d85, 0xf99f, 0x71b1,
- 0xf9a0, 0xf9a1, 0x95b1, 0x53ad, 0xf9a2, 0xf9a3, 0xf9a4, 0x67d3,
- 0xf9a5, 0x708e, 0x7130, 0x7430, 0x8276, 0x82d2, 0xf9a6, 0x95bb,
- 0x9ae5, 0x9e7d, 0x66c4, 0xf9a7, 0x71c1, 0x8449, 0xf9a8, 0xf9a9,
- 0x584b, 0xf9aa, 0xf9ab, 0x5db8, 0x5f71, 0xf9ac, 0x6620, 0x668e,
- 0x6979, 0x69ae, 0x6c38, 0x6cf3, 0x6e36, 0x6f41, 0x6fda, 0x701b,
- 0x702f, 0x7150, 0x71df, 0x7370, 0xf9ad, 0x745b, 0xf9ae, 0x74d4,
- 0x76c8, 0x7a4e, 0x7e93, 0xf9af, 0xf9b0, 0x82f1, 0x8a60, 0x8fce,
- 0xf9b1, 0x9348, 0xf9b2, 0x9719, 0xf9b3, 0xf9b4, 0x4e42, 0x502a,
- 0xf9b5, 0x5208, 0x53e1, 0x66f3, 0x6c6d, 0x6fca, 0x730a, 0x777f,
- 0x7a62, 0x82ae, 0x85dd, 0x8602, 0xf9b6, 0x88d4, 0x8a63, 0x8b7d,
- 0x8c6b, 0xf9b7, 0x92b3, 0xf9b8, 0x9713, 0x9810, 0x4e94, 0x4f0d,
- 0x4fc9, 0x50b2, 0x5348, 0x543e, 0x5433, 0x55da, 0x5862, 0x58ba,
- 0x5967, 0x5a1b, 0x5be4, 0x609f, 0xf9b9, 0x61ca, 0x6556, 0x65ff,
- 0x6664, 0x68a7, 0x6c5a, 0x6fb3, 0x70cf, 0x71ac, 0x7352, 0x7b7d,
- 0x8708, 0x8aa4, 0x9c32, 0x9f07, 0x5c4b, 0x6c83, 0x7344, 0x7389,
- 0x923a, 0x6eab, 0x7465, 0x761f, 0x7a69, 0x7e15, 0x860a, 0x5140,
- 0x58c5, 0x64c1, 0x74ee, 0x7515, 0x7670, 0x7fc1, 0x9095, 0x96cd,
- 0x9954, 0x6e26, 0x74e6, 0x7aa9, 0x7aaa, 0x81e5, 0x86d9, 0x8778,
- 0x8a1b, 0x5a49, 0x5b8c, 0x5b9b, 0x68a1, 0x6900, 0x6d63, 0x73a9,
- 0x7413, 0x742c, 0x7897, 0x7de9, 0x7feb, 0x8118, 0x8155, 0x839e,
- 0x8c4c, 0x962e, 0x9811, 0x66f0, 0x5f80, 0x65fa, 0x6789, 0x6c6a,
- 0x738b, 0x502d, 0x5a03, 0x6b6a, 0x77ee, 0x5916, 0x5d6c, 0x5dcd,
- 0x7325, 0x754f, 0xf9ba, 0xf9bb, 0x50e5, 0x51f9, 0x582f, 0x592d,
- 0x5996, 0x59da, 0x5be5, 0xf9bc, 0xf9bd, 0x5da2, 0x62d7, 0x6416,
- 0x6493, 0x64fe, 0xf9be, 0x66dc, 0xf9bf, 0x6a48, 0xf9c0, 0x71ff,
- 0x7464, 0xf9c1, 0x7a88, 0x7aaf, 0x7e47, 0x7e5e, 0x8000, 0x8170,
- 0xf9c2, 0x87ef, 0x8981, 0x8b20, 0x9059, 0xf9c3, 0x9080, 0x9952,
- 0x617e, 0x6b32, 0x6d74, 0x7e1f, 0x8925, 0x8fb1, 0x4fd1, 0x50ad,
- 0x5197, 0x52c7, 0x57c7, 0x5889, 0x5bb9, 0x5eb8, 0x6142, 0x6995,
- 0x6d8c, 0x6e67, 0x6eb6, 0x7194, 0x7462, 0x7528, 0x752c, 0x8073,
- 0x8338, 0x84c9, 0x8e0a, 0x9394, 0x93de, 0xf9c4, 0x4e8e, 0x4f51,
- 0x5076, 0x512a, 0x53c8, 0x53cb, 0x53f3, 0x5b87, 0x5bd3, 0x5c24,
- 0x611a, 0x6182, 0x65f4, 0x725b, 0x7397, 0x7440, 0x76c2, 0x7950,
- 0x7991, 0x79b9, 0x7d06, 0x7fbd, 0x828b, 0x85d5, 0x865e, 0x8fc2,
- 0x9047, 0x90f5, 0x91ea, 0x9685, 0x96e8, 0x96e9, 0x52d6, 0x5f67,
- 0x65ed, 0x6631, 0x682f, 0x715c, 0x7a36, 0x90c1, 0x980a, 0x4e91,
- 0xf9c5, 0x6a52, 0x6b9e, 0x6f90, 0x7189, 0x8018, 0x82b8, 0x8553,
- 0x904b, 0x9695, 0x96f2, 0x97fb, 0x851a, 0x9b31, 0x4e90, 0x718a,
- 0x96c4, 0x5143, 0x539f, 0x54e1, 0x5713, 0x5712, 0x57a3, 0x5a9b,
- 0x5ac4, 0x5bc3, 0x6028, 0x613f, 0x63f4, 0x6c85, 0x6d39, 0x6e72,
- 0x6e90, 0x7230, 0x733f, 0x7457, 0x82d1, 0x8881, 0x8f45, 0x9060,
- 0xf9c6, 0x9662, 0x9858, 0x9d1b, 0x6708, 0x8d8a, 0x925e, 0x4f4d,
- 0x5049, 0x50de, 0x5371, 0x570d, 0x59d4, 0x5a01, 0x5c09, 0x6170,
- 0x6690, 0x6e2d, 0x7232, 0x744b, 0x7def, 0x80c3, 0x840e, 0x8466,
- 0x853f, 0x875f, 0x885b, 0x8918, 0x8b02, 0x9055, 0x97cb, 0x9b4f,
- 0x4e73, 0x4f91, 0x5112, 0x516a, 0xf9c7, 0x552f, 0x55a9, 0x5b7a,
- 0x5ba5, 0x5e7c, 0x5e7d, 0x5ebe, 0x60a0, 0x60df, 0x6108, 0x6109,
- 0x63c4, 0x6538, 0x6709, 0xf9c8, 0x67d4, 0x67da, 0xf9c9, 0x6961,
- 0x6962, 0x6cb9, 0x6d27, 0xf9ca, 0x6e38, 0xf9cb, 0x6fe1, 0x7336,
- 0x7337, 0xf9cc, 0x745c, 0x7531, 0xf9cd, 0x7652, 0xf9ce, 0xf9cf,
- 0x7dad, 0x81fe, 0x8438, 0x88d5, 0x8a98, 0x8adb, 0x8aed, 0x8e30,
- 0x8e42, 0x904a, 0x903e, 0x907a, 0x9149, 0x91c9, 0x936e, 0xf9d0,
- 0xf9d1, 0x5809, 0xf9d2, 0x6bd3, 0x8089, 0x80b2, 0xf9d3, 0xf9d4,
- 0x5141, 0x596b, 0x5c39, 0xf9d5, 0xf9d6, 0x6f64, 0x73a7, 0x80e4,
- 0x8d07, 0xf9d7, 0x9217, 0x958f, 0xf9d8, 0xf9d9, 0xf9da, 0xf9db,
- 0x807f, 0x620e, 0x701c, 0x7d68, 0x878d, 0xf9dc, 0x57a0, 0x6069,
- 0x6147, 0x6bb7, 0x8abe, 0x9280, 0x96b1, 0x4e59, 0x541f, 0x6deb,
- 0x852d, 0x9670, 0x97f3, 0x98ee, 0x63d6, 0x6ce3, 0x9091, 0x51dd,
- 0x61c9, 0x81ba, 0x9df9, 0x4f9d, 0x501a, 0x5100, 0x5b9c, 0x610f,
- 0x61ff, 0x64ec, 0x6905, 0x6bc5, 0x7591, 0x77e3, 0x7fa9, 0x8264,
- 0x858f, 0x87fb, 0x8863, 0x8abc, 0x8b70, 0x91ab, 0x4e8c, 0x4ee5,
- 0x4f0a, 0xf9dd, 0xf9de, 0x5937, 0x59e8, 0xf9df, 0x5df2, 0x5f1b,
- 0x5f5b, 0x6021, 0xf9e0, 0xf9e1, 0xf9e2, 0xf9e3, 0x723e, 0x73e5,
- 0xf9e4, 0x7570, 0x75cd, 0xf9e5, 0x79fb, 0xf9e6, 0x800c, 0x8033,
- 0x8084, 0x82e1, 0x8351, 0xf9e7, 0xf9e8, 0x8cbd, 0x8cb3, 0x9087,
- 0xf9e9, 0xf9ea, 0x98f4, 0x990c, 0xf9eb, 0xf9ec, 0x7037, 0x76ca,
- 0x7fca, 0x7fcc, 0x7ffc, 0x8b1a, 0x4eba, 0x4ec1, 0x5203, 0x5370,
- 0xf9ed, 0x54bd, 0x56e0, 0x59fb, 0x5bc5, 0x5f15, 0x5fcd, 0x6e6e,
- 0xf9ee, 0xf9ef, 0x7d6a, 0x8335, 0xf9f0, 0x8693, 0x8a8d, 0xf9f1,
- 0x976d, 0x9777, 0xf9f2, 0xf9f3, 0x4e00, 0x4f5a, 0x4f7e, 0x58f9,
- 0x65e5, 0x6ea2, 0x9038, 0x93b0, 0x99b9, 0x4efb, 0x58ec, 0x598a,
- 0x59d9, 0x6041, 0xf9f4, 0xf9f5, 0x7a14, 0xf9f6, 0x834f, 0x8cc3,
- 0x5165, 0x5344, 0xf9f7, 0xf9f8, 0xf9f9, 0x4ecd, 0x5269, 0x5b55,
- 0x82bf, 0x4ed4, 0x523a, 0x54a8, 0x59c9, 0x59ff, 0x5b50, 0x5b57,
- 0x5b5c, 0x6063, 0x6148, 0x6ecb, 0x7099, 0x716e, 0x7386, 0x74f7,
- 0x75b5, 0x78c1, 0x7d2b, 0x8005, 0x81ea, 0x8328, 0x8517, 0x85c9,
- 0x8aee, 0x8cc7, 0x96cc, 0x4f5c, 0x52fa, 0x56bc, 0x65ab, 0x6628,
- 0x707c, 0x70b8, 0x7235, 0x7dbd, 0x828d, 0x914c, 0x96c0, 0x9d72,
- 0x5b71, 0x68e7, 0x6b98, 0x6f7a, 0x76de, 0x5c91, 0x66ab, 0x6f5b,
- 0x7bb4, 0x7c2a, 0x8836, 0x96dc, 0x4e08, 0x4ed7, 0x5320, 0x5834,
- 0x58bb, 0x58ef, 0x596c, 0x5c07, 0x5e33, 0x5e84, 0x5f35, 0x638c,
- 0x66b2, 0x6756, 0x6a1f, 0x6aa3, 0x6b0c, 0x6f3f, 0x7246, 0xf9fa,
- 0x7350, 0x748b, 0x7ae0, 0x7ca7, 0x8178, 0x81df, 0x81e7, 0x838a,
- 0x846c, 0x8523, 0x8594, 0x85cf, 0x88dd, 0x8d13, 0x91ac, 0x9577,
- 0x969c, 0x518d, 0x54c9, 0x5728, 0x5bb0, 0x624d, 0x6750, 0x683d,
- 0x6893, 0x6e3d, 0x6ed3, 0x707d, 0x7e21, 0x88c1, 0x8ca1, 0x8f09,
- 0x9f4b, 0x9f4e, 0x722d, 0x7b8f, 0x8acd, 0x931a, 0x4f47, 0x4f4e,
- 0x5132, 0x5480, 0x59d0, 0x5e95, 0x62b5, 0x6775, 0x696e, 0x6a17,
- 0x6cae, 0x6e1a, 0x72d9, 0x732a, 0x75bd, 0x7bb8, 0x7d35, 0x82e7,
- 0x83f9, 0x8457, 0x85f7, 0x8a5b, 0x8caf, 0x8e87, 0x9019, 0x90b8,
- 0x96ce, 0x9f5f, 0x52e3, 0x540a, 0x5ae1, 0x5bc2, 0x6458, 0x6575,
- 0x6ef4, 0x72c4, 0xf9fb, 0x7684, 0x7a4d, 0x7b1b, 0x7c4d, 0x7e3e,
- 0x7fdf, 0x837b, 0x8b2b, 0x8cca, 0x8d64, 0x8de1, 0x8e5f, 0x8fea,
- 0x8ff9, 0x9069, 0x93d1, 0x4f43, 0x4f7a, 0x50b3, 0x5168, 0x5178,
- 0x524d, 0x526a, 0x5861, 0x587c, 0x5960, 0x5c08, 0x5c55, 0x5edb,
- 0x609b, 0x6230, 0x6813, 0x6bbf, 0x6c08, 0x6fb1, 0x714e, 0x7420,
- 0x7530, 0x7538, 0x7551, 0x7672, 0x7b4c, 0x7b8b, 0x7bad, 0x7bc6,
- 0x7e8f, 0x8a6e, 0x8f3e, 0x8f49, 0x923f, 0x9293, 0x9322, 0x942b,
- 0x96fb, 0x985a, 0x986b, 0x991e, 0x5207, 0x622a, 0x6298, 0x6d59,
- 0x7664, 0x7aca, 0x7bc0, 0x7d76, 0x5360, 0x5cbe, 0x5e97, 0x6f38,
- 0x70b9, 0x7c98, 0x9711, 0x9b8e, 0x9ede, 0x63a5, 0x647a, 0x8776,
- 0x4e01, 0x4e95, 0x4ead, 0x505c, 0x5075, 0x5448, 0x59c3, 0x5b9a,
- 0x5e40, 0x5ead, 0x5ef7, 0x5f81, 0x60c5, 0x633a, 0x653f, 0x6574,
- 0x65cc, 0x6676, 0x6678, 0x67fe, 0x6968, 0x6a89, 0x6b63, 0x6c40,
- 0x6dc0, 0x6de8, 0x6e1f, 0x6e5e, 0x701e, 0x70a1, 0x738e, 0x73fd,
- 0x753a, 0x775b, 0x7887, 0x798e, 0x7a0b, 0x7a7d, 0x7cbe, 0x7d8e,
- 0x8247, 0x8a02, 0x8aea, 0x8c9e, 0x912d, 0x914a, 0x91d8, 0x9266,
- 0x92cc, 0x9320, 0x9706, 0x9756, 0x975c, 0x9802, 0x9f0e, 0x5236,
- 0x5291, 0x557c, 0x5824, 0x5e1d, 0x5f1f, 0x608c, 0x63d0, 0x68af,
- 0x6fdf, 0x796d, 0x7b2c, 0x81cd, 0x85ba, 0x88fd, 0x8af8, 0x8e44,
- 0x918d, 0x9664, 0x969b, 0x973d, 0x984c, 0x9f4a, 0x4fce, 0x5146,
- 0x51cb, 0x52a9, 0x5632, 0x5f14, 0x5f6b, 0x63aa, 0x64cd, 0x65e9,
- 0x6641, 0x66fa, 0x66f9, 0x671d, 0x689d, 0x68d7, 0x69fd, 0x6f15,
- 0x6f6e, 0x7167, 0x71e5, 0x722a, 0x74aa, 0x773a, 0x7956, 0x795a,
- 0x79df, 0x7a20, 0x7a95, 0x7c97, 0x7cdf, 0x7d44, 0x7e70, 0x8087,
- 0x85fb, 0x86a4, 0x8a54, 0x8abf, 0x8d99, 0x8e81, 0x9020, 0x906d,
- 0x91e3, 0x963b, 0x96d5, 0x9ce5, 0x65cf, 0x7c07, 0x8db3, 0x93c3,
- 0x5b58, 0x5c0a, 0x5352, 0x62d9, 0x731d, 0x5027, 0x5b97, 0x5f9e,
- 0x60b0, 0x616b, 0x68d5, 0x6dd9, 0x742e, 0x7a2e, 0x7d42, 0x7d9c,
- 0x7e31, 0x816b, 0x8e2a, 0x8e35, 0x937e, 0x9418, 0x4f50, 0x5750,
- 0x5de6, 0x5ea7, 0x632b, 0x7f6a, 0x4e3b, 0x4f4f, 0x4f8f, 0x505a,
- 0x59dd, 0x80c4, 0x546a, 0x5468, 0x55fe, 0x594f, 0x5b99, 0x5dde,
- 0x5eda, 0x665d, 0x6731, 0x67f1, 0x682a, 0x6ce8, 0x6d32, 0x6e4a,
- 0x6f8d, 0x70b7, 0x73e0, 0x7587, 0x7c4c, 0x7d02, 0x7d2c, 0x7da2,
- 0x821f, 0x86db, 0x8a3b, 0x8a85, 0x8d70, 0x8e8a, 0x8f33, 0x9031,
- 0x914e, 0x9152, 0x9444, 0x99d0, 0x7af9, 0x7ca5, 0x4fca, 0x5101,
- 0x51c6, 0x57c8, 0x5bef, 0x5cfb, 0x6659, 0x6a3d, 0x6d5a, 0x6e96,
- 0x6fec, 0x710c, 0x756f, 0x7ae3, 0x8822, 0x9021, 0x9075, 0x96cb,
- 0x99ff, 0x8301, 0x4e2d, 0x4ef2, 0x8846, 0x91cd, 0x537d, 0x6adb,
- 0x696b, 0x6c41, 0x847a, 0x589e, 0x618e, 0x66fe, 0x62ef, 0x70dd,
- 0x7511, 0x75c7, 0x7e52, 0x84b8, 0x8b49, 0x8d08, 0x4e4b, 0x53ea,
- 0x54ab, 0x5730, 0x5740, 0x5fd7, 0x6301, 0x6307, 0x646f, 0x652f,
- 0x65e8, 0x667a, 0x679d, 0x67b3, 0x6b62, 0x6c60, 0x6c9a, 0x6f2c,
- 0x77e5, 0x7825, 0x7949, 0x7957, 0x7d19, 0x80a2, 0x8102, 0x81f3,
- 0x829d, 0x82b7, 0x8718, 0x8a8c, 0xf9fc, 0x8d04, 0x8dbe, 0x9072,
- 0x76f4, 0x7a19, 0x7a37, 0x7e54, 0x8077, 0x5507, 0x55d4, 0x5875,
- 0x632f, 0x6422, 0x6649, 0x664b, 0x686d, 0x699b, 0x6b84, 0x6d25,
- 0x6eb1, 0x73cd, 0x7468, 0x74a1, 0x755b, 0x75b9, 0x76e1, 0x771e,
- 0x778b, 0x79e6, 0x7e09, 0x7e1d, 0x81fb, 0x852f, 0x8897, 0x8a3a,
- 0x8cd1, 0x8eeb, 0x8fb0, 0x9032, 0x93ad, 0x9663, 0x9673, 0x9707,
- 0x4f84, 0x53f1, 0x59ea, 0x5ac9, 0x5e19, 0x684e, 0x74c6, 0x75be,
- 0x79e9, 0x7a92, 0x81a3, 0x86ed, 0x8cea, 0x8dcc, 0x8fed, 0x659f,
- 0x6715, 0xf9fd, 0x57f7, 0x6f57, 0x7ddd, 0x8f2f, 0x93f6, 0x96c6,
- 0x5fb5, 0x61f2, 0x6f84, 0x4e14, 0x4f98, 0x501f, 0x53c9, 0x55df,
- 0x5d6f, 0x5dee, 0x6b21, 0x6b64, 0x78cb, 0x7b9a, 0xf9fe, 0x8e49,
- 0x8eca, 0x906e, 0x6349, 0x643e, 0x7740, 0x7a84, 0x932f, 0x947f,
- 0x9f6a, 0x64b0, 0x6faf, 0x71e6, 0x74a8, 0x74da, 0x7ac4, 0x7c12,
- 0x7e82, 0x7cb2, 0x7e98, 0x8b9a, 0x8d0a, 0x947d, 0x9910, 0x994c,
- 0x5239, 0x5bdf, 0x64e6, 0x672d, 0x7d2e, 0x50ed, 0x53c3, 0x5879,
- 0x6158, 0x6159, 0x61fa, 0x65ac, 0x7ad9, 0x8b92, 0x8b96, 0x5009,
- 0x5021, 0x5275, 0x5531, 0x5a3c, 0x5ee0, 0x5f70, 0x6134, 0x655e,
- 0x660c, 0x6636, 0x66a2, 0x69cd, 0x6ec4, 0x6f32, 0x7316, 0x7621,
- 0x7a93, 0x8139, 0x8259, 0x83d6, 0x84bc, 0x50b5, 0x57f0, 0x5bc0,
- 0x5be8, 0x5f69, 0x63a1, 0x7826, 0x7db5, 0x83dc, 0x8521, 0x91c7,
- 0x91f5, 0x518a, 0x67f5, 0x7b56, 0x8cac, 0x51c4, 0x59bb, 0x60bd,
- 0x8655, 0x501c, 0xf9ff, 0x5254, 0x5c3a, 0x617d, 0x621a, 0x62d3,
- 0x64f2, 0x65a5, 0x6ecc, 0x7620, 0x810a, 0x8e60, 0x965f, 0x96bb,
- 0x4edf, 0x5343, 0x5598, 0x5929, 0x5ddd, 0x64c5, 0x6cc9, 0x6dfa,
- 0x7394, 0x7a7f, 0x821b, 0x85a6, 0x8ce4, 0x8e10, 0x9077, 0x91e7,
- 0x95e1, 0x9621, 0x97c6, 0x51f8, 0x54f2, 0x5586, 0x5fb9, 0x64a4,
- 0x6f88, 0x7db4, 0x8f1f, 0x8f4d, 0x9435, 0x50c9, 0x5c16, 0x6cbe,
- 0x6dfb, 0x751b, 0x77bb, 0x7c3d, 0x7c64, 0x8a79, 0x8ac2, 0x581e,
- 0x59be, 0x5e16, 0x6377, 0x7252, 0x758a, 0x776b, 0x8adc, 0x8cbc,
- 0x8f12, 0x5ef3, 0x6674, 0x6df8, 0x807d, 0x83c1, 0x8acb, 0x9751,
- 0x9bd6, 0xfa00, 0x5243, 0x66ff, 0x6d95, 0x6eef, 0x7de0, 0x8ae6,
- 0x902e, 0x905e, 0x9ad4, 0x521d, 0x527f, 0x54e8, 0x6194, 0x6284,
- 0x62db, 0x68a2, 0x6912, 0x695a, 0x6a35, 0x7092, 0x7126, 0x785d,
- 0x7901, 0x790e, 0x79d2, 0x7a0d, 0x8096, 0x8278, 0x82d5, 0x8349,
- 0x8549, 0x8c82, 0x8d85, 0x9162, 0x918b, 0x91ae, 0x4fc3, 0x56d1,
- 0x71ed, 0x77d7, 0x8700, 0x89f8, 0x5bf8, 0x5fd6, 0x6751, 0x90a8,
- 0x53e2, 0x585a, 0x5bf5, 0x60a4, 0x6181, 0x6460, 0x7e3d, 0x8070,
- 0x8525, 0x9283, 0x64ae, 0x50ac, 0x5d14, 0x6700, 0x589c, 0x62bd,
- 0x63a8, 0x690e, 0x6978, 0x6a1e, 0x6e6b, 0x76ba, 0x79cb, 0x82bb,
- 0x8429, 0x8acf, 0x8da8, 0x8ffd, 0x9112, 0x914b, 0x919c, 0x9310,
- 0x9318, 0x939a, 0x96db, 0x9a36, 0x9c0d, 0x4e11, 0x755c, 0x795d,
- 0x7afa, 0x7b51, 0x7bc9, 0x7e2e, 0x84c4, 0x8e59, 0x8e74, 0x8ef8,
- 0x9010, 0x6625, 0x693f, 0x7443, 0x51fa, 0x672e, 0x9edc, 0x5145,
- 0x5fe0, 0x6c96, 0x87f2, 0x885d, 0x8877, 0x60b4, 0x81b5, 0x8403,
- 0x8d05, 0x53d6, 0x5439, 0x5634, 0x5a36, 0x5c31, 0x708a, 0x7fe0,
- 0x805a, 0x8106, 0x81ed, 0x8da3, 0x9189, 0x9a5f, 0x9df2, 0x5074,
- 0x4ec4, 0x53a0, 0x60fb, 0x6e2c, 0x5c64, 0x4f88, 0x5024, 0x55e4,
- 0x5cd9, 0x5e5f, 0x6065, 0x6894, 0x6cbb, 0x6dc4, 0x71be, 0x75d4,
- 0x75f4, 0x7661, 0x7a1a, 0x7a49, 0x7dc7, 0x7dfb, 0x7f6e, 0x81f4,
- 0x86a9, 0x8f1c, 0x96c9, 0x99b3, 0x9f52, 0x5247, 0x52c5, 0x98ed,
- 0x89aa, 0x4e03, 0x67d2, 0x6f06, 0x4fb5, 0x5be2, 0x6795, 0x6c88,
- 0x6d78, 0x741b, 0x7827, 0x91dd, 0x937c, 0x87c4, 0x79e4, 0x7a31,
- 0x5feb, 0x4ed6, 0x54a4, 0x553e, 0x58ae, 0x59a5, 0x60f0, 0x6253,
- 0x62d6, 0x6736, 0x6955, 0x8235, 0x9640, 0x99b1, 0x99dd, 0x502c,
- 0x5353, 0x5544, 0x577c, 0xfa01, 0x6258, 0xfa02, 0x64e2, 0x666b,
- 0x67dd, 0x6fc1, 0x6fef, 0x7422, 0x7438, 0x8a17, 0x9438, 0x5451,
- 0x5606, 0x5766, 0x5f48, 0x619a, 0x6b4e, 0x7058, 0x70ad, 0x7dbb,
- 0x8a95, 0x596a, 0x812b, 0x63a2, 0x7708, 0x803d, 0x8caa, 0x5854,
- 0x642d, 0x69bb, 0x5b95, 0x5e11, 0x6e6f, 0xfa03, 0x8569, 0x514c,
- 0x53f0, 0x592a, 0x6020, 0x614b, 0x6b86, 0x6c70, 0x6cf0, 0x7b1e,
- 0x80ce, 0x82d4, 0x8dc6, 0x90b0, 0x98b1, 0xfa04, 0x64c7, 0x6fa4,
- 0x6491, 0x6504, 0x514e, 0x5410, 0x571f, 0x8a0e, 0x615f, 0x6876,
- 0xfa05, 0x75db, 0x7b52, 0x7d71, 0x901a, 0x5806, 0x69cc, 0x817f,
- 0x892a, 0x9000, 0x9839, 0x5078, 0x5957, 0x59ac, 0x6295, 0x900f,
- 0x9b2a, 0x615d, 0x7279, 0x95d6, 0x5761, 0x5a46, 0x5df4, 0x628a,
- 0x64ad, 0x64fa, 0x6777, 0x6ce2, 0x6d3e, 0x722c, 0x7436, 0x7834,
- 0x7f77, 0x82ad, 0x8ddb, 0x9817, 0x5224, 0x5742, 0x677f, 0x7248,
- 0x74e3, 0x8ca9, 0x8fa6, 0x9211, 0x962a, 0x516b, 0x53ed, 0x634c,
- 0x4f69, 0x5504, 0x6096, 0x6557, 0x6c9b, 0x6d7f, 0x724c, 0x72fd,
- 0x7a17, 0x8987, 0x8c9d, 0x5f6d, 0x6f8e, 0x70f9, 0x81a8, 0x610e,
- 0x4fbf, 0x504f, 0x6241, 0x7247, 0x7bc7, 0x7de8, 0x7fe9, 0x904d,
- 0x97ad, 0x9a19, 0x8cb6, 0x576a, 0x5e73, 0x67b0, 0x840d, 0x8a55,
- 0x5420, 0x5b16, 0x5e63, 0x5ee2, 0x5f0a, 0x6583, 0x80ba, 0x853d,
- 0x9589, 0x965b, 0x4f48, 0x5305, 0x530d, 0x530f, 0x5486, 0x54fa,
- 0x5703, 0x5e03, 0x6016, 0x629b, 0x62b1, 0x6355, 0xfa06, 0x6ce1,
- 0x6d66, 0x75b1, 0x7832, 0x80de, 0x812f, 0x82de, 0x8461, 0x84b2,
- 0x888d, 0x8912, 0x900b, 0x92ea, 0x98fd, 0x9b91, 0x5e45, 0x66b4,
- 0x66dd, 0x7011, 0x7206, 0xfa07, 0x4ff5, 0x527d, 0x5f6a, 0x6153,
- 0x6753, 0x6a19, 0x6f02, 0x74e2, 0x7968, 0x8868, 0x8c79, 0x98c7,
- 0x98c4, 0x9a43, 0x54c1, 0x7a1f, 0x6953, 0x8af7, 0x8c4a, 0x98a8,
- 0x99ae, 0x5f7c, 0x62ab, 0x75b2, 0x76ae, 0x88ab, 0x907f, 0x9642,
- 0x5339, 0x5f3c, 0x5fc5, 0x6ccc, 0x73cc, 0x7562, 0x758b, 0x7b46,
- 0x82fe, 0x999d, 0x4e4f, 0x903c, 0x4e0b, 0x4f55, 0x53a6, 0x590f,
- 0x5ec8, 0x6630, 0x6cb3, 0x7455, 0x8377, 0x8766, 0x8cc0, 0x9050,
- 0x971e, 0x9c15, 0x58d1, 0x5b78, 0x8650, 0x8b14, 0x9db4, 0x5bd2,
- 0x6068, 0x608d, 0x65f1, 0x6c57, 0x6f22, 0x6fa3, 0x701a, 0x7f55,
- 0x7ff0, 0x9591, 0x9592, 0x9650, 0x97d3, 0x5272, 0x8f44, 0x51fd,
- 0x542b, 0x54b8, 0x5563, 0x558a, 0x6abb, 0x6db5, 0x7dd8, 0x8266,
- 0x929c, 0x9677, 0x9e79, 0x5408, 0x54c8, 0x76d2, 0x86e4, 0x95a4,
- 0x95d4, 0x965c, 0x4ea2, 0x4f09, 0x59ee, 0x5ae6, 0x5df7, 0x6052,
- 0x6297, 0x676d, 0x6841, 0x6c86, 0x6e2f, 0x7f38, 0x809b, 0x822a,
- 0xfa08, 0xfa09, 0x9805, 0x4ea5, 0x5055, 0x54b3, 0x5793, 0x595a,
- 0x5b69, 0x5bb3, 0x61c8, 0x6977, 0x6d77, 0x7023, 0x87f9, 0x89e3,
- 0x8a72, 0x8ae7, 0x9082, 0x99ed, 0x9ab8, 0x52be, 0x6838, 0x5016,
- 0x5e78, 0x674f, 0x8347, 0x884c, 0x4eab, 0x5411, 0x56ae, 0x73e6,
- 0x9115, 0x97ff, 0x9909, 0x9957, 0x9999, 0x5653, 0x589f, 0x865b,
- 0x8a31, 0x61b2, 0x6af6, 0x737b, 0x8ed2, 0x6b47, 0x96aa, 0x9a57,
- 0x5955, 0x7200, 0x8d6b, 0x9769, 0x4fd4, 0x5cf4, 0x5f26, 0x61f8,
- 0x665b, 0x6ceb, 0x70ab, 0x7384, 0x73b9, 0x73fe, 0x7729, 0x774d,
- 0x7d43, 0x7d62, 0x7e23, 0x8237, 0x8852, 0xfa0a, 0x8ce2, 0x9249,
- 0x986f, 0x5b51, 0x7a74, 0x8840, 0x9801, 0x5acc, 0x4fe0, 0x5354,
- 0x593e, 0x5cfd, 0x633e, 0x6d79, 0x72f9, 0x8105, 0x8107, 0x83a2,
- 0x92cf, 0x9830, 0x4ea8, 0x5144, 0x5211, 0x578b, 0x5f62, 0x6cc2,
- 0x6ece, 0x7005, 0x7050, 0x70af, 0x7192, 0x73e9, 0x7469, 0x834a,
- 0x87a2, 0x8861, 0x9008, 0x90a2, 0x93a3, 0x99a8, 0x516e, 0x5f57,
- 0x60e0, 0x6167, 0x66b3, 0x8559, 0x8e4a, 0x91af, 0x978b, 0x4e4e,
- 0x4e92, 0x547c, 0x58d5, 0x58fa, 0x597d, 0x5cb5, 0x5f27, 0x6236,
- 0x6248, 0x660a, 0x6667, 0x6beb, 0x6d69, 0x6dcf, 0x6e56, 0x6ef8,
- 0x6f94, 0x6fe0, 0x6fe9, 0x705d, 0x72d0, 0x7425, 0x745a, 0x74e0,
- 0x7693, 0x795c, 0x7cca, 0x7e1e, 0x80e1, 0x82a6, 0x846b, 0x84bf,
- 0x864e, 0x865f, 0x8774, 0x8b77, 0x8c6a, 0x93ac, 0x9800, 0x9865,
- 0x60d1, 0x6216, 0x9177, 0x5a5a, 0x660f, 0x6df7, 0x6e3e, 0x743f,
- 0x9b42, 0x5ffd, 0x60da, 0x7b0f, 0x54c4, 0x5f18, 0x6c5e, 0x6cd3,
- 0x6d2a, 0x70d8, 0x7d05, 0x8679, 0x8a0c, 0x9d3b, 0x5316, 0x548c,
- 0x5b05, 0x6a3a, 0x706b, 0x7575, 0x798d, 0x79be, 0x82b1, 0x83ef,
- 0x8a71, 0x8b41, 0x8ca8, 0x9774, 0xfa0b, 0x64f4, 0x652b, 0x78ba,
- 0x78bb, 0x7a6b, 0x4e38, 0x559a, 0x5950, 0x5ba6, 0x5e7b, 0x60a3,
- 0x63db, 0x6b61, 0x6665, 0x6853, 0x6e19, 0x7165, 0x74b0, 0x7d08,
- 0x9084, 0x9a69, 0x9c25, 0x6d3b, 0x6ed1, 0x733e, 0x8c41, 0x95ca,
- 0x51f0, 0x5e4c, 0x5fa8, 0x604d, 0x60f6, 0x6130, 0x614c, 0x6643,
- 0x6644, 0x69a5, 0x6cc1, 0x6e5f, 0x6ec9, 0x6f62, 0x714c, 0x749c,
- 0x7687, 0x7bc1, 0x7c27, 0x8352, 0x8757, 0x9051, 0x968d, 0x9ec3,
- 0x532f, 0x56de, 0x5efb, 0x5f8a, 0x6062, 0x6094, 0x61f7, 0x6666,
- 0x6703, 0x6a9c, 0x6dee, 0x6fae, 0x7070, 0x736a, 0x7e6a, 0x81be,
- 0x8334, 0x86d4, 0x8aa8, 0x8cc4, 0x5283, 0x7372, 0x5b96, 0x6a6b,
- 0x9404, 0x54ee, 0x5686, 0x5b5d, 0x6548, 0x6585, 0x66c9, 0x689f,
- 0x6d8d, 0x6dc6, 0x723b, 0x80b4, 0x9175, 0x9a4d, 0x4faf, 0x5019,
- 0x539a, 0x540e, 0x543c, 0x5589, 0x55c5, 0x5e3f, 0x5f8c, 0x673d,
- 0x7166, 0x73dd, 0x9005, 0x52db, 0x52f3, 0x5864, 0x58ce, 0x7104,
- 0x718f, 0x71fb, 0x85b0, 0x8a13, 0x6688, 0x85a8, 0x55a7, 0x6684,
- 0x714a, 0x8431, 0x5349, 0x5599, 0x6bc1, 0x5f59, 0x5fbd, 0x63ee,
- 0x6689, 0x7147, 0x8af1, 0x8f1d, 0x9ebe, 0x4f11, 0x643a, 0x70cb,
- 0x7566, 0x8667, 0x6064, 0x8b4e, 0x9df8, 0x5147, 0x51f6, 0x5308,
- 0x6d36, 0x80f8, 0x9ed1, 0x6615, 0x6b23, 0x7098, 0x75d5, 0x5403,
- 0x5c79, 0x7d07, 0x8a16, 0x6b20, 0x6b3d, 0x6b46, 0x5438, 0x6070,
- 0x6d3d, 0x7fd5, 0x8208, 0x50d6, 0x51de, 0x559c, 0x566b, 0x56cd,
- 0x59ec, 0x5b09, 0x5e0c, 0x6199, 0x6198, 0x6231, 0x665e, 0x66e6,
- 0x7199, 0x71b9, 0x71ba, 0x72a7, 0x79a7, 0x7a00, 0x7fb2, 0x8a70
-};
-
-/* Map Table including unicode to ksc5601 hanja */
-static const struct map unicode_to_ksc5601_hanja[4888]=
-{
- {0x4e00, 0x6c69}, {0x4e01, 0x6f4b}, {0x4e03, 0x7652},
- {0x4e07, 0x5832}, {0x4e08, 0x6d5b}, {0x4e09, 0x5f32},
- {0x4e0a, 0x5f3e}, {0x4e0b, 0x793b}, {0x4e0d, 0x5c74},
- {0x4e11, 0x7564}, {0x4e14, 0x7326}, {0x4e15, 0x5d60},
- {0x4e16, 0x6126}, {0x4e18, 0x4e78}, {0x4e19, 0x5c30},
- {0x4e1e, 0x632a}, {0x4e2d, 0x7169}, {0x4e32, 0x4d7a},
- {0x4e38, 0x7c2f}, {0x4e39, 0x5321}, {0x4e3b, 0x712b},
- {0x4e42, 0x6751}, {0x4e43, 0x522c}, {0x4e45, 0x4e79},
- {0x4e4b, 0x717d}, {0x4e4d, 0x5e3f}, {0x4e4e, 0x7b3a},
- {0x4e4f, 0x7939}, {0x4e56, 0x4e52}, {0x4e58, 0x632b},
- {0x4e59, 0x6b60}, {0x4e5d, 0x4e7a}, {0x4e5e, 0x4b77},
- {0x4e5f, 0x6525}, {0x4e6b, 0x4a61}, {0x4e6d, 0x544c},
- {0x4e73, 0x6a61}, {0x4e76, 0x5c63}, {0x4e77, 0x5f2d},
- {0x4e7e, 0x4b6b}, {0x4e82, 0x552f}, {0x4e86, 0x5675},
- {0x4e88, 0x6578}, {0x4e8b, 0x5e40}, {0x4e8c, 0x6c23},
- {0x4e8e, 0x694d}, {0x4e90, 0x6a27}, {0x4e91, 0x6976},
- {0x4e92, 0x7b3b}, {0x4e94, 0x6769}, {0x4e95, 0x6f4c},
- {0x4e98, 0x5066}, {0x4e9b, 0x5e41}, {0x4e9e, 0x642c},
- {0x4ea1, 0x584c}, {0x4ea2, 0x7971}, {0x4ea4, 0x4e5f},
- {0x4ea5, 0x7a24}, {0x4ea6, 0x6632}, {0x4ea8, 0x7a7b},
- {0x4eab, 0x7a3d}, {0x4eac, 0x4c48}, {0x4ead, 0x6f4d},
- {0x4eae, 0x5555}, {0x4eb6, 0x5322}, {0x4eba, 0x6c51},
- {0x4ec0, 0x6427}, {0x4ec1, 0x6c52}, {0x4ec4, 0x7631},
- {0x4ec7, 0x4e7b}, {0x4eca, 0x5051}, {0x4ecb, 0x4b3f},
- {0x4ecd, 0x6d24}, {0x4ed4, 0x6d28}, {0x4ed5, 0x5e42},
- {0x4ed6, 0x7662}, {0x4ed7, 0x6d5c}, {0x4ed8, 0x5c75},
- {0x4ed9, 0x6039}, {0x4edd, 0x544e}, {0x4edf, 0x7435},
- {0x4ee3, 0x535b}, {0x4ee4, 0x5635}, {0x4ee5, 0x6c24},
- {0x4ef0, 0x6466}, {0x4ef2, 0x716a}, {0x4ef6, 0x4b6c},
- {0x4ef7, 0x4b40}, {0x4efb, 0x6c72}, {0x4f01, 0x506a},
- {0x4f09, 0x7972}, {0x4f0a, 0x6c25}, {0x4f0b, 0x505f},
- {0x4f0d, 0x676a}, {0x4f0e, 0x506b}, {0x4f0f, 0x5c51},
- {0x4f10, 0x5b69}, {0x4f11, 0x7d4c}, {0x4f2f, 0x5b57},
- {0x4f34, 0x5a61}, {0x4f36, 0x5636}, {0x4f38, 0x635f},
- {0x4f3a, 0x5e43}, {0x4f3c, 0x5e44}, {0x4f3d, 0x4a21},
- {0x4f43, 0x6e6c}, {0x4f46, 0x5323}, {0x4f47, 0x6e37},
- {0x4f48, 0x784f}, {0x4f4d, 0x6a48}, {0x4f4e, 0x6e38},
- {0x4f4f, 0x712c}, {0x4f50, 0x7125}, {0x4f51, 0x694e},
- {0x4f55, 0x793c}, {0x4f59, 0x6579}, {0x4f5a, 0x6c6a},
- {0x4f5b, 0x5d56}, {0x4f5c, 0x6d42}, {0x4f69, 0x7825},
- {0x4f6f, 0x653a}, {0x4f70, 0x5b58}, {0x4f73, 0x4a22},
- {0x4f76, 0x514d}, {0x4f7a, 0x6e6d}, {0x4f7e, 0x6c6b},
- {0x4f7f, 0x5e45}, {0x4f81, 0x6360}, {0x4f83, 0x4a49},
- {0x4f84, 0x7269}, {0x4f86, 0x554e}, {0x4f88, 0x7636},
- {0x4f8a, 0x4e42}, {0x4f8b, 0x5647}, {0x4f8d, 0x6334},
- {0x4f8f, 0x712d}, {0x4f91, 0x6a62}, {0x4f96, 0x5742},
- {0x4f98, 0x7327}, {0x4f9b, 0x4d6a}, {0x4f9d, 0x6b6e},
- {0x4fae, 0x5932}, {0x4faf, 0x7d25}, {0x4fb5, 0x7655},
- {0x4fb6, 0x5562}, {0x4fbf, 0x7835}, {0x4fc2, 0x4c75},
- {0x4fc3, 0x7535}, {0x4fc4, 0x642d}, {0x4fc9, 0x676b},
- {0x4fca, 0x7155}, {0x4fce, 0x703b}, {0x4fd1, 0x6935},
- {0x4fd3, 0x4c49}, {0x4fd4, 0x7a55}, {0x4fd7, 0x6154},
- {0x4fda, 0x5756}, {0x4fdd, 0x5c41}, {0x4fdf, 0x5e46},
- {0x4fe0, 0x7a6f}, {0x4fe1, 0x6361}, {0x4fee, 0x6173},
- {0x4fef, 0x5c76}, {0x4ff1, 0x4e7c}, {0x4ff3, 0x5b44},
- {0x4ff5, 0x7871}, {0x4ff8, 0x5c64}, {0x4ffa, 0x656f},
- {0x5002, 0x5c31}, {0x5006, 0x5556}, {0x5009, 0x735a},
- {0x500b, 0x4b41}, {0x500d, 0x5b43}, {0x5011, 0x597a},
- {0x5012, 0x536e}, {0x5016, 0x7a38}, {0x5019, 0x7d26},
- {0x501a, 0x6b6f}, {0x501c, 0x7426}, {0x501e, 0x4c4a},
- {0x501f, 0x7328}, {0x5021, 0x735b}, {0x5023, 0x5b27},
- {0x5024, 0x7637}, {0x5026, 0x4f66}, {0x5027, 0x7072},
- {0x5028, 0x4b5a}, {0x502a, 0x6752}, {0x502b, 0x5743},
- {0x502c, 0x7670}, {0x502d, 0x685e}, {0x503b, 0x6526},
- {0x5043, 0x6567}, {0x5047, 0x4a23}, {0x5048, 0x4c27},
- {0x5049, 0x6a49}, {0x504f, 0x7836}, {0x5055, 0x7a25},
- {0x505a, 0x712e}, {0x505c, 0x6f4e}, {0x5065, 0x4b6d},
- {0x5074, 0x7630}, {0x5075, 0x6f4f}, {0x5076, 0x694f},
- {0x5078, 0x775e}, {0x5080, 0x4e53}, {0x5085, 0x5c77},
- {0x508d, 0x5b28}, {0x5091, 0x4b78}, {0x5098, 0x5f21},
- {0x5099, 0x5d61}, {0x50ac, 0x754a}, {0x50ad, 0x6936},
- {0x50b2, 0x676c}, {0x50b3, 0x6e6e}, {0x50b5, 0x7370},
- {0x50b7, 0x5f3f}, {0x50be, 0x4c4b}, {0x50c5, 0x5041},
- {0x50c9, 0x7452}, {0x50ca, 0x603a}, {0x50cf, 0x5f40},
- {0x50d1, 0x4e60}, {0x50d5, 0x5c52}, {0x50d6, 0x7d6a},
- {0x50da, 0x5676}, {0x50de, 0x6a4a}, {0x50e5, 0x6869},
- {0x50e7, 0x632c}, {0x50ed, 0x7350}, {0x50f9, 0x4a24},
- {0x50fb, 0x5b78}, {0x50ff, 0x5e47}, {0x5100, 0x6b70},
- {0x5101, 0x7156}, {0x5104, 0x6562}, {0x5106, 0x4c4c},
- {0x5109, 0x4b7b}, {0x5112, 0x6a63}, {0x511f, 0x5f41},
- {0x5121, 0x566d}, {0x512a, 0x6950}, {0x5132, 0x6e39},
- {0x5137, 0x5563}, {0x513a, 0x5153}, {0x513c, 0x6570},
- {0x5140, 0x6834}, {0x5141, 0x6b43}, {0x5143, 0x6a2a},
- {0x5144, 0x7a7c}, {0x5145, 0x7576}, {0x5146, 0x703c},
- {0x5147, 0x7d54}, {0x5148, 0x603b}, {0x5149, 0x4e43},
- {0x514b, 0x503a}, {0x514c, 0x773a}, {0x514d, 0x5873},
- {0x514e, 0x774d}, {0x5152, 0x642e}, {0x515c, 0x545f},
- {0x5162, 0x5067}, {0x5165, 0x6c7d}, {0x5167, 0x522e},
- {0x5168, 0x6e6f}, {0x5169, 0x5557}, {0x516a, 0x6a64},
- {0x516b, 0x7822}, {0x516c, 0x4d6b}, {0x516d, 0x573f},
- {0x516e, 0x7b31}, {0x5171, 0x4d6c}, {0x5175, 0x5c32},
- {0x5176, 0x506c}, {0x5177, 0x4e7d}, {0x5178, 0x6e70},
- {0x517c, 0x4c42}, {0x5180, 0x506d}, {0x5186, 0x6577},
- {0x518a, 0x737c}, {0x518d, 0x6e22}, {0x5192, 0x5933},
- {0x5195, 0x5874}, {0x5197, 0x6937}, {0x51a0, 0x4e2e},
- {0x51a5, 0x5922}, {0x51aa, 0x5871}, {0x51ac, 0x544f},
- {0x51b6, 0x6527}, {0x51b7, 0x5552}, {0x51bd, 0x5629},
- {0x51c4, 0x7422}, {0x51c6, 0x7157}, {0x51c9, 0x5558},
- {0x51cb, 0x703d}, {0x51cc, 0x5750}, {0x51cd, 0x5450},
- {0x51dc, 0x574f}, {0x51dd, 0x6b6a}, {0x51de, 0x7d6b},
- {0x51e1, 0x5b6d}, {0x51f0, 0x7c45}, {0x51f1, 0x4b42},
- {0x51f6, 0x7d55}, {0x51f8, 0x7448}, {0x51f9, 0x686a},
- {0x51fa, 0x7573}, {0x51fd, 0x795e}, {0x5200, 0x536f},
- {0x5203, 0x6c53}, {0x5206, 0x5d42}, {0x5207, 0x6f37},
- {0x5208, 0x6754}, {0x520a, 0x4a4a}, {0x520e, 0x597b},
- {0x5211, 0x7a7d}, {0x5217, 0x562a}, {0x521d, 0x7478},
- {0x5224, 0x7777}, {0x5225, 0x5c2c}, {0x5229, 0x5757},
- {0x522a, 0x5f22}, {0x522e, 0x4e3e}, {0x5230, 0x5370},
- {0x5236, 0x7024}, {0x5237, 0x616c}, {0x5238, 0x4f67},
- {0x5239, 0x734b}, {0x523a, 0x6d29}, {0x523b, 0x4a3e},
- {0x5243, 0x746f}, {0x5247, 0x764e}, {0x524a, 0x5e7b},
- {0x524b, 0x503b}, {0x524c, 0x5537}, {0x524d, 0x6e71},
- {0x5254, 0x7428}, {0x5256, 0x5c78}, {0x525b, 0x4b27},
- {0x525d, 0x5a4e}, {0x5261, 0x6066}, {0x5269, 0x6d25},
- {0x526a, 0x6e72}, {0x526f, 0x5c79}, {0x5272, 0x795c},
- {0x5275, 0x735c}, {0x527d, 0x7872}, {0x527f, 0x7479},
- {0x5283, 0x7c71}, {0x5287, 0x503c}, {0x5288, 0x5b79},
- {0x5289, 0x5731}, {0x528d, 0x4b7c}, {0x5291, 0x7025},
- {0x5292, 0x4b7d}, {0x529b, 0x5574}, {0x529f, 0x4d6d},
- {0x52a0, 0x4a25}, {0x52a3, 0x562b}, {0x52a4, 0x5042},
- {0x52a9, 0x703e}, {0x52aa, 0x523d}, {0x52ab, 0x4c24},
- {0x52be, 0x7a36}, {0x52c1, 0x4c4d}, {0x52c3, 0x5a7a},
- {0x52c5, 0x764f}, {0x52c7, 0x6938}, {0x52c9, 0x5875},
- {0x52cd, 0x4c4e}, {0x52d2, 0x574d}, {0x52d5, 0x5451},
- {0x52d6, 0x696d}, {0x52d8, 0x4a6b}, {0x52d9, 0x5962},
- {0x52db, 0x7d32}, {0x52dd, 0x632d}, {0x52de, 0x564c},
- {0x52df, 0x5934}, {0x52e2, 0x6127}, {0x52e3, 0x6e53},
- {0x52e4, 0x5043}, {0x52f3, 0x7d33}, {0x52f5, 0x5564},
- {0x52f8, 0x4f68}, {0x52fa, 0x6d43}, {0x52fb, 0x5032},
- {0x52fe, 0x4e7e}, {0x52ff, 0x5a28}, {0x5305, 0x7850},
- {0x5308, 0x7d56}, {0x530d, 0x7851}, {0x530f, 0x7852},
- {0x5310, 0x5c53}, {0x5315, 0x5d62}, {0x5316, 0x7b79},
- {0x5317, 0x5d41}, {0x5319, 0x6335}, {0x5320, 0x6d5d},
- {0x5321, 0x4e44}, {0x5323, 0x4b21}, {0x532a, 0x5d63},
- {0x532f, 0x7c5d}, {0x5339, 0x792f}, {0x533f, 0x527b},
- {0x5340, 0x4f21}, {0x5341, 0x6428}, {0x5343, 0x7436},
- {0x5344, 0x6c7e}, {0x5347, 0x632e}, {0x5348, 0x676d},
- {0x5349, 0x7d41}, {0x534a, 0x5a62}, {0x534d, 0x5833},
- {0x5351, 0x5d64}, {0x5352, 0x706f}, {0x5353, 0x7671},
- {0x5354, 0x7a70}, {0x5357, 0x5175}, {0x535a, 0x5a4f},
- {0x535c, 0x5c54}, {0x535e, 0x5c26}, {0x5360, 0x6f3f},
- {0x5366, 0x4e4f}, {0x5368, 0x6059}, {0x536f, 0x5956},
- {0x5370, 0x6c54}, {0x5371, 0x6a4b}, {0x5374, 0x4a3f},
- {0x5375, 0x5530}, {0x5377, 0x4f69}, {0x537d, 0x716d},
- {0x537f, 0x4c4f}, {0x5384, 0x6478}, {0x5393, 0x646d},
- {0x5398, 0x5758}, {0x539a, 0x7d27}, {0x539f, 0x6a2b},
- {0x53a0, 0x7632}, {0x53a5, 0x4f70}, {0x53a6, 0x793d},
- {0x53ad, 0x6674}, {0x53bb, 0x4b5b}, {0x53c3, 0x7351},
- {0x53c8, 0x6951}, {0x53c9, 0x7329}, {0x53ca, 0x5060},
- {0x53cb, 0x6952}, {0x53cd, 0x5a63}, {0x53d4, 0x6252},
- {0x53d6, 0x7622}, {0x53d7, 0x6174}, {0x53db, 0x5a64},
- {0x53e1, 0x6755}, {0x53e2, 0x753f}, {0x53e3, 0x4f22},
- {0x53e4, 0x4d2f}, {0x53e5, 0x4f23}, {0x53e9, 0x4d30},
- {0x53ea, 0x717e}, {0x53eb, 0x5023}, {0x53ec, 0x612f},
- {0x53ed, 0x7823}, {0x53ef, 0x4a26}, {0x53f0, 0x773b},
- {0x53f1, 0x726a}, {0x53f2, 0x5e48}, {0x53f3, 0x6953},
- {0x53f8, 0x5e49}, {0x5403, 0x7d5e}, {0x5404, 0x4a40},
- {0x5408, 0x796a}, {0x5409, 0x514e}, {0x540a, 0x6e54},
- {0x540c, 0x5452}, {0x540d, 0x5923}, {0x540e, 0x7d28},
- {0x540f, 0x5759}, {0x5410, 0x774e}, {0x5411, 0x7a3e},
- {0x541b, 0x4f56}, {0x541d, 0x5770}, {0x541f, 0x6b61},
- {0x5420, 0x7845}, {0x5426, 0x5c7a}, {0x5429, 0x5d43},
- {0x542b, 0x795f}, {0x5433, 0x676f}, {0x5438, 0x7d65},
- {0x5439, 0x7623}, {0x543b, 0x597c}, {0x543c, 0x7d29},
- {0x543e, 0x676e}, {0x5442, 0x5565}, {0x5448, 0x6f50},
- {0x544a, 0x4d31}, {0x5451, 0x7722}, {0x5468, 0x7132},
- {0x546a, 0x7131}, {0x5471, 0x4d32}, {0x5473, 0x5a2b},
- {0x5475, 0x4a27}, {0x547b, 0x6362}, {0x547c, 0x7b3c},
- {0x547d, 0x5924}, {0x5480, 0x6e3a}, {0x5486, 0x7853},
- {0x548c, 0x7b7a}, {0x548e, 0x4f24}, {0x5490, 0x5c7b},
- {0x54a4, 0x7663}, {0x54a8, 0x6d2a}, {0x54ab, 0x7221},
- {0x54ac, 0x4e61}, {0x54b3, 0x7a26}, {0x54b8, 0x7960},
- {0x54bd, 0x6c56}, {0x54c0, 0x646e}, {0x54c1, 0x7921},
- {0x54c4, 0x7b6f}, {0x54c8, 0x796b}, {0x54c9, 0x6e23},
- {0x54e1, 0x6a2c}, {0x54e5, 0x4a28}, {0x54e8, 0x747a},
- {0x54ed, 0x4d56}, {0x54ee, 0x7c76}, {0x54f2, 0x7449},
- {0x54fa, 0x7854}, {0x5504, 0x7826}, {0x5506, 0x5e4a},
- {0x5507, 0x7246}, {0x550e, 0x575a}, {0x5510, 0x5350},
- {0x551c, 0x5845}, {0x552f, 0x6a66}, {0x5531, 0x735d},
- {0x5535, 0x645a}, {0x553e, 0x7664}, {0x5544, 0x7672},
- {0x5546, 0x5f42}, {0x554f, 0x597d}, {0x5553, 0x4c76},
- {0x5556, 0x533a}, {0x555e, 0x642f}, {0x5563, 0x7961},
- {0x557c, 0x7026}, {0x5580, 0x4b53}, {0x5584, 0x603c},
- {0x5586, 0x744a}, {0x5587, 0x547a}, {0x5589, 0x7d2a},
- {0x558a, 0x7962}, {0x5598, 0x7437}, {0x5599, 0x7d42},
- {0x559a, 0x7c30}, {0x559c, 0x7d6c}, {0x559d, 0x4a62},
- {0x55a7, 0x7d3d}, {0x55a9, 0x6a67}, {0x55aa, 0x5f43},
- {0x55ab, 0x5152}, {0x55ac, 0x4e62}, {0x55ae, 0x5324},
- {0x55c5, 0x7d2b}, {0x55c7, 0x5f60}, {0x55d4, 0x7247},
- {0x55da, 0x6770}, {0x55dc, 0x506e}, {0x55df, 0x732a},
- {0x55e3, 0x5e4b}, {0x55e4, 0x7638}, {0x55fd, 0x6175},
- {0x55fe, 0x7133}, {0x5606, 0x7723}, {0x5609, 0x4a29},
- {0x5614, 0x4f25}, {0x5617, 0x5f44}, {0x562f, 0x6130},
- {0x5632, 0x703f}, {0x5634, 0x7624}, {0x5636, 0x6336},
- {0x5653, 0x7a46}, {0x5668, 0x506f}, {0x566b, 0x7d6d},
- {0x5674, 0x5d44}, {0x5686, 0x7c77}, {0x56a5, 0x663f},
- {0x56ac, 0x5e2d}, {0x56ae, 0x7a3f}, {0x56b4, 0x6571},
- {0x56bc, 0x6d44}, {0x56ca, 0x5225}, {0x56cd, 0x7d6e},
- {0x56d1, 0x7536}, {0x56da, 0x6176}, {0x56db, 0x5e4c},
- {0x56de, 0x7c5e}, {0x56e0, 0x6c57}, {0x56f0, 0x4d5d},
- {0x56f9, 0x5637}, {0x56fa, 0x4d33}, {0x5703, 0x7855},
- {0x5704, 0x6558}, {0x5708, 0x4f6a}, {0x570b, 0x4f50},
- {0x570d, 0x6a4c}, {0x5712, 0x6a2e}, {0x5713, 0x6a2d},
- {0x5716, 0x5371}, {0x5718, 0x5325}, {0x571f, 0x774f},
- {0x5728, 0x6e24}, {0x572d, 0x5024}, {0x5730, 0x7222},
- {0x573b, 0x5070}, {0x5740, 0x7223}, {0x5742, 0x7778},
- {0x5747, 0x5033}, {0x574a, 0x5b29}, {0x574d, 0x533b},
- {0x574e, 0x4a6c}, {0x5750, 0x7126}, {0x5751, 0x4b55},
- {0x5761, 0x7767}, {0x5764, 0x4d5e}, {0x5766, 0x7724},
- {0x576a, 0x7840}, {0x576e, 0x535d}, {0x5770, 0x4c50},
- {0x5775, 0x4f26}, {0x577c, 0x7673}, {0x5782, 0x6177},
- {0x5788, 0x535c}, {0x578b, 0x7a7e}, {0x5793, 0x7a27},
- {0x57a0, 0x6b59}, {0x57a2, 0x4f27}, {0x57a3, 0x6a2f},
- {0x57c3, 0x646f}, {0x57c7, 0x6939}, {0x57c8, 0x7158},
- {0x57cb, 0x5858}, {0x57ce, 0x6072}, {0x57df, 0x6634},
- {0x57e0, 0x5c7c}, {0x57f0, 0x7371}, {0x57f4, 0x6350},
- {0x57f7, 0x727b}, {0x57f9, 0x5b46}, {0x57fa, 0x5071},
- {0x57fc, 0x5072}, {0x5800, 0x4f5c}, {0x5802, 0x5351},
- {0x5805, 0x4c31}, {0x5806, 0x7758}, {0x5808, 0x4b28},
- {0x5809, 0x6b3c}, {0x580a, 0x643e}, {0x581e, 0x745c},
- {0x5821, 0x5c42}, {0x5824, 0x7027}, {0x5827, 0x6640},
- {0x582a, 0x4a6d}, {0x582f, 0x686b}, {0x5830, 0x6568},
- {0x5831, 0x5c43}, {0x5834, 0x6d5e}, {0x5835, 0x5372},
- {0x583a, 0x4c77}, {0x584a, 0x4e54}, {0x584b, 0x672b},
- {0x584f, 0x4b43}, {0x5851, 0x6131}, {0x5854, 0x7732},
- {0x5857, 0x5373}, {0x5858, 0x5352}, {0x585a, 0x7540},
- {0x585e, 0x5f5d}, {0x5861, 0x6e73}, {0x5862, 0x6771},
- {0x5864, 0x7d34}, {0x5875, 0x7248}, {0x5879, 0x7352},
- {0x587c, 0x6e74}, {0x587e, 0x6253}, {0x5883, 0x4c51},
- {0x5885, 0x5f6a}, {0x5889, 0x693a}, {0x5893, 0x5957},
- {0x589c, 0x754d}, {0x589e, 0x7172}, {0x589f, 0x7a47},
- {0x58a8, 0x5978}, {0x58a9, 0x5442}, {0x58ae, 0x7665},
- {0x58b3, 0x5d45}, {0x58ba, 0x6772}, {0x58bb, 0x6d5f},
- {0x58be, 0x4a4b}, {0x58c1, 0x5b7a}, {0x58c5, 0x6835},
- {0x58c7, 0x5326}, {0x58ce, 0x7d35}, {0x58d1, 0x7949},
- {0x58d3, 0x6462}, {0x58d5, 0x7b3d}, {0x58d8, 0x5724},
- {0x58d9, 0x4e45}, {0x58de, 0x4e55}, {0x58df, 0x5666},
- {0x58e4, 0x653d}, {0x58eb, 0x5e4d}, {0x58ec, 0x6c73},
- {0x58ef, 0x6d60}, {0x58f9, 0x6c6c}, {0x58fa, 0x7b3e},
- {0x58fb, 0x5f6b}, {0x58fd, 0x6178}, {0x590f, 0x793e},
- {0x5914, 0x5073}, {0x5915, 0x602a}, {0x5916, 0x6862},
- {0x5919, 0x6254}, {0x591a, 0x527d}, {0x591c, 0x6528},
- {0x5922, 0x5953}, {0x5927, 0x535e}, {0x5929, 0x7438},
- {0x592a, 0x773c}, {0x592b, 0x5c7d}, {0x592d, 0x686c},
- {0x592e, 0x6467}, {0x5931, 0x6377}, {0x5937, 0x6c28},
- {0x593e, 0x7a71}, {0x5944, 0x6572}, {0x5947, 0x5074},
- {0x5948, 0x522f}, {0x5949, 0x5c65}, {0x594e, 0x5025},
- {0x594f, 0x7134}, {0x5950, 0x7c31}, {0x5951, 0x4c78},
- {0x5954, 0x5d46}, {0x5955, 0x7a51}, {0x5957, 0x775f},
- {0x595a, 0x7a28}, {0x5960, 0x6e75}, {0x5962, 0x5e4e},
- {0x5967, 0x6773}, {0x596a, 0x772c}, {0x596b, 0x6b44},
- {0x596c, 0x6d61}, {0x596d, 0x602b}, {0x596e, 0x5d47},
- {0x5973, 0x5233}, {0x5974, 0x523f}, {0x5978, 0x4a4c},
- {0x597d, 0x7b3f}, {0x5982, 0x657d}, {0x5983, 0x5d65},
- {0x5984, 0x584d}, {0x598a, 0x6c74}, {0x5993, 0x5075},
- {0x5996, 0x686d}, {0x5997, 0x5052}, {0x5999, 0x5958},
- {0x59a5, 0x7666}, {0x59a8, 0x5b2a}, {0x59ac, 0x7760},
- {0x59b9, 0x5859}, {0x59bb, 0x7423}, {0x59be, 0x745d},
- {0x59c3, 0x6f51}, {0x59c6, 0x5935}, {0x59c9, 0x6d2b},
- {0x59cb, 0x6337}, {0x59d0, 0x6e3b}, {0x59d1, 0x4d34},
- {0x59d3, 0x6073}, {0x59d4, 0x6a4d}, {0x59d9, 0x6c75},
- {0x59da, 0x686e}, {0x59dc, 0x4b29}, {0x59dd, 0x712f},
- {0x59e6, 0x4a4d}, {0x59e8, 0x6c29}, {0x59ea, 0x726b},
- {0x59ec, 0x7d6f}, {0x59ee, 0x7973}, {0x59f8, 0x6641},
- {0x59fb, 0x6c58}, {0x59ff, 0x6d2c}, {0x5a01, 0x6a4e},
- {0x5a03, 0x685f}, {0x5a11, 0x5e4f}, {0x5a18, 0x5226},
- {0x5a1b, 0x6774}, {0x5a1c, 0x5156}, {0x5a1f, 0x6642},
- {0x5a20, 0x6363}, {0x5a25, 0x6430}, {0x5a29, 0x5834},
- {0x5a36, 0x7625}, {0x5a3c, 0x735e}, {0x5a41, 0x5725},
- {0x5a46, 0x7768}, {0x5a49, 0x6846}, {0x5a5a, 0x7b66},
- {0x5a62, 0x5d66}, {0x5a66, 0x5c7e}, {0x5a92, 0x585a},
- {0x5a9a, 0x5a2c}, {0x5a9b, 0x6a30}, {0x5aa4, 0x6338},
- {0x5ac1, 0x4a2a}, {0x5ac2, 0x6179}, {0x5ac4, 0x6a31},
- {0x5ac9, 0x726c}, {0x5acc, 0x7a6e}, {0x5ae1, 0x6e55},
- {0x5ae6, 0x7974}, {0x5ae9, 0x526c}, {0x5b05, 0x7b7b},
- {0x5b09, 0x7d70}, {0x5b0b, 0x603d}, {0x5b0c, 0x4e63},
- {0x5b16, 0x7846}, {0x5b2a, 0x5e2e}, {0x5b40, 0x5f45},
- {0x5b43, 0x653e}, {0x5b50, 0x6d2d}, {0x5b51, 0x7a6a},
- {0x5b54, 0x4d6e}, {0x5b55, 0x6d26}, {0x5b57, 0x6d2e},
- {0x5b58, 0x706d}, {0x5b5a, 0x5d21}, {0x5b5c, 0x6d2f},
- {0x5b5d, 0x7c78}, {0x5b5f, 0x586b}, {0x5b63, 0x4c79},
- {0x5b64, 0x4d35}, {0x5b69, 0x7a29}, {0x5b6b, 0x615d},
- {0x5b70, 0x6255}, {0x5b71, 0x6d4f}, {0x5b75, 0x5d22},
- {0x5b78, 0x794a}, {0x5b7a, 0x6a68}, {0x5b7c, 0x656d},
- {0x5b85, 0x536b}, {0x5b87, 0x6954}, {0x5b88, 0x617a},
- {0x5b89, 0x644c}, {0x5b8b, 0x6164}, {0x5b8c, 0x6847},
- {0x5b8f, 0x4e5b}, {0x5b93, 0x5c55}, {0x5b95, 0x7735},
- {0x5b96, 0x7c73}, {0x5b97, 0x7073}, {0x5b98, 0x4e2f},
- {0x5b99, 0x7135}, {0x5b9a, 0x6f52}, {0x5b9b, 0x6848},
- {0x5b9c, 0x6b71}, {0x5ba2, 0x4b54}, {0x5ba3, 0x603e},
- {0x5ba4, 0x6378}, {0x5ba5, 0x6a69}, {0x5ba6, 0x7c32},
- {0x5bac, 0x6074}, {0x5bae, 0x4f60}, {0x5bb0, 0x6e25},
- {0x5bb3, 0x7a2a}, {0x5bb4, 0x6643}, {0x5bb5, 0x6132},
- {0x5bb6, 0x4a2b}, {0x5bb8, 0x6364}, {0x5bb9, 0x693b},
- {0x5bbf, 0x6256}, {0x5bc0, 0x7372}, {0x5bc2, 0x6e56},
- {0x5bc3, 0x6a32}, {0x5bc4, 0x5076}, {0x5bc5, 0x6c59},
- {0x5bc6, 0x5a4b}, {0x5bc7, 0x4f28}, {0x5bcc, 0x5d23},
- {0x5bd0, 0x585b}, {0x5bd2, 0x794e}, {0x5bd3, 0x6955},
- {0x5bd4, 0x6351}, {0x5bd7, 0x523c}, {0x5bde, 0x582c},
- {0x5bdf, 0x734c}, {0x5be1, 0x4d7b}, {0x5be2, 0x7656},
- {0x5be4, 0x6775}, {0x5be5, 0x686f}, {0x5be6, 0x6379},
- {0x5be7, 0x523b}, {0x5be8, 0x7373}, {0x5be9, 0x637b},
- {0x5beb, 0x5e50}, {0x5bec, 0x4e30}, {0x5bee, 0x5677},
- {0x5bef, 0x7159}, {0x5bf5, 0x7541}, {0x5bf6, 0x5c44},
- {0x5bf8, 0x753b}, {0x5bfa, 0x5e51}, {0x5c01, 0x5c66},
- {0x5c04, 0x5e52}, {0x5c07, 0x6d62}, {0x5c08, 0x6e76},
- {0x5c09, 0x6a4f}, {0x5c0a, 0x706e}, {0x5c0b, 0x637c},
- {0x5c0d, 0x535f}, {0x5c0e, 0x5374}, {0x5c0f, 0x6133},
- {0x5c11, 0x6134}, {0x5c16, 0x7453}, {0x5c19, 0x5f46},
- {0x5c24, 0x6956}, {0x5c28, 0x5b2b}, {0x5c31, 0x7626},
- {0x5c38, 0x6339}, {0x5c39, 0x6b45}, {0x5c3a, 0x7429},
- {0x5c3b, 0x4d36}, {0x5c3c, 0x5279}, {0x5c3e, 0x5a2d},
- {0x5c3f, 0x5263}, {0x5c40, 0x4f51}, {0x5c45, 0x4b5c},
- {0x5c46, 0x4c7a}, {0x5c48, 0x4f5d}, {0x5c4b, 0x6829},
- {0x5c4d, 0x633b}, {0x5c4e, 0x633a}, {0x5c51, 0x605a},
- {0x5c55, 0x6e77}, {0x5c5b, 0x5c33}, {0x5c60, 0x5375},
- {0x5c62, 0x5726}, {0x5c64, 0x7635}, {0x5c65, 0x575b},
- {0x5c6c, 0x6155}, {0x5c6f, 0x546a}, {0x5c71, 0x5f23},
- {0x5c79, 0x7d5f}, {0x5c90, 0x5077}, {0x5c91, 0x6d54},
- {0x5ca1, 0x4b2a}, {0x5ca9, 0x645b}, {0x5cab, 0x617b},
- {0x5cac, 0x4b22}, {0x5cb1, 0x5360}, {0x5cb3, 0x643f},
- {0x5cb5, 0x7b40}, {0x5cb7, 0x5a3e}, {0x5cb8, 0x644d},
- {0x5cba, 0x5639}, {0x5cbe, 0x6f40}, {0x5cc0, 0x617c},
- {0x5cd9, 0x7639}, {0x5ce0, 0x5f47}, {0x5ce8, 0x6431},
- {0x5cef, 0x5c67}, {0x5cf0, 0x5c68}, {0x5cf4, 0x7a56},
- {0x5cf6, 0x5376}, {0x5cfb, 0x715a}, {0x5cfd, 0x7a72},
- {0x5d07, 0x627d}, {0x5d0d, 0x554f}, {0x5d0e, 0x5078},
- {0x5d11, 0x4d5f}, {0x5d14, 0x754b}, {0x5d16, 0x6470},
- {0x5d17, 0x4b2b}, {0x5d19, 0x5744}, {0x5d27, 0x627e},
- {0x5d29, 0x5d5a}, {0x5d4b, 0x5a2e}, {0x5d4c, 0x4a6e},
- {0x5d50, 0x5539}, {0x5d69, 0x6321}, {0x5d6c, 0x6863},
- {0x5d6f, 0x732b}, {0x5d87, 0x4f29}, {0x5d8b, 0x5377},
- {0x5d9d, 0x5471}, {0x5da0, 0x4e64}, {0x5da2, 0x6872},
- {0x5daa, 0x6575}, {0x5db8, 0x672e}, {0x5dba, 0x563a},
- {0x5dbc, 0x5f6c}, {0x5dbd, 0x6440}, {0x5dcd, 0x6864},
- {0x5dd2, 0x5835}, {0x5dd6, 0x645c}, {0x5ddd, 0x7439},
- {0x5dde, 0x7136}, {0x5de1, 0x625e}, {0x5de2, 0x6135},
- {0x5de5, 0x4d6f}, {0x5de6, 0x7127}, {0x5de7, 0x4e65},
- {0x5de8, 0x4b5d}, {0x5deb, 0x5963}, {0x5dee, 0x732c},
- {0x5df1, 0x5079}, {0x5df2, 0x6c2b}, {0x5df3, 0x5e53},
- {0x5df4, 0x7769}, {0x5df7, 0x7975}, {0x5dfd, 0x615e},
- {0x5dfe, 0x4b6e}, {0x5e02, 0x633c}, {0x5e03, 0x7856},
- {0x5e06, 0x5b6e}, {0x5e0c, 0x7d71}, {0x5e11, 0x7736},
- {0x5e16, 0x745e}, {0x5e19, 0x726d}, {0x5e1b, 0x5b59},
- {0x5e1d, 0x7028}, {0x5e25, 0x617d}, {0x5e2b, 0x5e54},
- {0x5e2d, 0x602c}, {0x5e33, 0x6d63}, {0x5e36, 0x5361},
- {0x5e38, 0x5f48}, {0x5e3d, 0x5936}, {0x5e3f, 0x7d2c},
- {0x5e40, 0x6f53}, {0x5e44, 0x6441}, {0x5e45, 0x786b},
- {0x5e47, 0x5b2c}, {0x5e4c, 0x7c46}, {0x5e55, 0x582d},
- {0x5e5f, 0x763a}, {0x5e61, 0x5b5f}, {0x5e62, 0x5353},
- {0x5e63, 0x7847}, {0x5e72, 0x4a4e}, {0x5e73, 0x7841},
- {0x5e74, 0x5234}, {0x5e77, 0x5c34}, {0x5e78, 0x7a39},
- {0x5e79, 0x4a4f}, {0x5e7b, 0x7c33}, {0x5e7c, 0x6a6a},
- {0x5e7d, 0x6a6b}, {0x5e7e, 0x507a}, {0x5e84, 0x6d64},
- {0x5e87, 0x5d67}, {0x5e8a, 0x5f49}, {0x5e8f, 0x5f6d},
- {0x5e95, 0x6e3c}, {0x5e97, 0x6f41}, {0x5e9a, 0x4c52},
- {0x5e9c, 0x5d24}, {0x5ea0, 0x5f4a}, {0x5ea6, 0x5378},
- {0x5ea7, 0x7128}, {0x5eab, 0x4d37}, {0x5ead, 0x6f54},
- {0x5eb5, 0x645d}, {0x5eb6, 0x5f6e}, {0x5eb7, 0x4b2c},
- {0x5eb8, 0x693c}, {0x5ebe, 0x6a6c}, {0x5ec2, 0x5f4b},
- {0x5ec8, 0x793f}, {0x5ec9, 0x562f}, {0x5eca, 0x5546},
- {0x5ed0, 0x4f2a}, {0x5ed3, 0x4e29}, {0x5ed6, 0x5678},
- {0x5eda, 0x7137}, {0x5edb, 0x6e78}, {0x5edf, 0x5959},
- {0x5ee0, 0x735f}, {0x5ee2, 0x7848}, {0x5ee3, 0x4e46},
- {0x5eec, 0x5566}, {0x5ef3, 0x7466}, {0x5ef6, 0x6645},
- {0x5ef7, 0x6f55}, {0x5efa, 0x4b6f}, {0x5efb, 0x7c5f},
- {0x5f01, 0x5c27}, {0x5f04, 0x5667}, {0x5f0a, 0x7849},
- {0x5f0f, 0x6352}, {0x5f11, 0x633d}, {0x5f13, 0x4f61},
- {0x5f14, 0x7040}, {0x5f15, 0x6c5a}, {0x5f17, 0x5d57},
- {0x5f18, 0x7b70}, {0x5f1b, 0x6c2c}, {0x5f1f, 0x7029},
- {0x5f26, 0x7a57}, {0x5f27, 0x7b41}, {0x5f29, 0x5240},
- {0x5f31, 0x6530}, {0x5f35, 0x6d65}, {0x5f3a, 0x4b2d},
- {0x5f3c, 0x7930}, {0x5f48, 0x7725}, {0x5f4a, 0x4b2e},
- {0x5f4c, 0x5a2f}, {0x5f4e, 0x5836}, {0x5f56, 0x5327},
- {0x5f57, 0x7b32}, {0x5f59, 0x7d44}, {0x5f5b, 0x6c2d},
- {0x5f62, 0x7b21}, {0x5f66, 0x6569}, {0x5f67, 0x696e},
- {0x5f69, 0x7374}, {0x5f6a, 0x7873}, {0x5f6b, 0x7041},
- {0x5f6c, 0x5e2f}, {0x5f6d, 0x7830}, {0x5f70, 0x7360},
- {0x5f71, 0x672f}, {0x5f77, 0x5b2d}, {0x5f79, 0x6635},
- {0x5f7c, 0x7928}, {0x5f7f, 0x5d58}, {0x5f80, 0x6859},
- {0x5f81, 0x6f56}, {0x5f85, 0x5362}, {0x5f87, 0x625f},
- {0x5f8a, 0x7c60}, {0x5f8b, 0x5748}, {0x5f8c, 0x7d2d},
- {0x5f90, 0x5f6f}, {0x5f91, 0x4c53}, {0x5f92, 0x5379},
- {0x5f97, 0x5470}, {0x5f98, 0x5b47}, {0x5f99, 0x5e55},
- {0x5f9e, 0x7074}, {0x5fa0, 0x5550}, {0x5fa1, 0x6559},
- {0x5fa8, 0x7c47}, {0x5fa9, 0x5c56}, {0x5faa, 0x6260},
- {0x5fae, 0x5a30}, {0x5fb5, 0x7323}, {0x5fb7, 0x536c},
- {0x5fb9, 0x744b}, {0x5fbd, 0x7d45}, {0x5fc3, 0x637d},
- {0x5fc5, 0x7931}, {0x5fcc, 0x507b}, {0x5fcd, 0x6c5b},
- {0x5fd6, 0x753c}, {0x5fd7, 0x7224}, {0x5fd8, 0x584e},
- {0x5fd9, 0x584f}, {0x5fe0, 0x7577}, {0x5feb, 0x7661},
- {0x5ff5, 0x5237}, {0x5ffd, 0x7b6c}, {0x5fff, 0x5d48},
- {0x600f, 0x6468}, {0x6012, 0x5241}, {0x6016, 0x7857},
- {0x601c, 0x563b}, {0x601d, 0x5e56}, {0x6020, 0x773d},
- {0x6021, 0x6c2e}, {0x6025, 0x5061}, {0x6027, 0x6075},
- {0x6028, 0x6a33}, {0x602a, 0x4e56}, {0x602f, 0x4c25},
- {0x6041, 0x6c76}, {0x6042, 0x6261}, {0x6043, 0x633e},
- {0x604d, 0x7c48}, {0x6050, 0x4d70}, {0x6052, 0x7976},
- {0x6055, 0x5f70}, {0x6059, 0x653f}, {0x605d, 0x4e3f},
- {0x6062, 0x7c61}, {0x6063, 0x6d30}, {0x6064, 0x7d51},
- {0x6065, 0x763b}, {0x6068, 0x794f}, {0x6069, 0x6b5a},
- {0x606a, 0x4a41}, {0x606c, 0x5238}, {0x606d, 0x4d71},
- {0x606f, 0x6353}, {0x6070, 0x7d66}, {0x6085, 0x666d},
- {0x6089, 0x637a}, {0x608c, 0x702a}, {0x608d, 0x7950},
- {0x6094, 0x7c62}, {0x6096, 0x7827}, {0x609a, 0x6165},
- {0x609b, 0x6e79}, {0x609f, 0x6776}, {0x60a0, 0x6a6d},
- {0x60a3, 0x7c34}, {0x60a4, 0x7542}, {0x60a7, 0x575c},
- {0x60b0, 0x7075}, {0x60b2, 0x5d68}, {0x60b3, 0x536d},
- {0x60b4, 0x757c}, {0x60b6, 0x5a3f}, {0x60b8, 0x4c7b},
- {0x60bc, 0x537a}, {0x60bd, 0x7424}, {0x60c5, 0x6f57},
- {0x60c7, 0x5443}, {0x60d1, 0x7b63}, {0x60da, 0x7b6d},
- {0x60dc, 0x602d}, {0x60df, 0x6a6e}, {0x60e0, 0x7b33},
- {0x60e1, 0x6442}, {0x60f0, 0x7667}, {0x60f1, 0x525d},
- {0x60f3, 0x5f4c}, {0x60f6, 0x7c49}, {0x60f9, 0x6529},
- {0x60fa, 0x6076}, {0x60fb, 0x7633}, {0x6101, 0x617e},
- {0x6106, 0x4b70}, {0x6108, 0x6a6f}, {0x6109, 0x6a70},
- {0x610d, 0x5a40}, {0x610e, 0x7834}, {0x610f, 0x6b72},
- {0x6115, 0x6443}, {0x611a, 0x6957}, {0x611b, 0x6471},
- {0x611f, 0x4a6f}, {0x6127, 0x4e57}, {0x6130, 0x7c4a},
- {0x6134, 0x7361}, {0x6137, 0x4b44}, {0x613c, 0x6365},
- {0x613e, 0x4b45}, {0x613f, 0x6a34}, {0x6142, 0x693d},
- {0x6144, 0x5749}, {0x6147, 0x6b5b}, {0x6148, 0x6d31},
- {0x614a, 0x4c43}, {0x614b, 0x773e}, {0x614c, 0x7c4b},
- {0x6153, 0x7874}, {0x6155, 0x5937}, {0x6158, 0x7353},
- {0x6159, 0x7354}, {0x615d, 0x7764}, {0x615f, 0x7751},
- {0x6162, 0x5837}, {0x6163, 0x4e31}, {0x6164, 0x4a42},
- {0x6167, 0x7b34}, {0x6168, 0x4b46}, {0x616b, 0x7076},
- {0x616e, 0x5567}, {0x6170, 0x6a50}, {0x6176, 0x4c54},
- {0x6177, 0x4b2f}, {0x617d, 0x742a}, {0x617e, 0x692f},
- {0x6181, 0x7543}, {0x6182, 0x6958}, {0x618a, 0x5d69},
- {0x618e, 0x7173}, {0x6190, 0x557b}, {0x6191, 0x5e3b},
- {0x6194, 0x747b}, {0x6198, 0x7d73}, {0x6199, 0x7d72},
- {0x619a, 0x7726}, {0x61a4, 0x5d49}, {0x61a7, 0x5453},
- {0x61a9, 0x4c28}, {0x61ab, 0x5a41}, {0x61ac, 0x4c55},
- {0x61ae, 0x5964}, {0x61b2, 0x7a4a}, {0x61b6, 0x6563},
- {0x61ba, 0x533c}, {0x61be, 0x4a70}, {0x61c3, 0x5044},
- {0x61c7, 0x4a50}, {0x61c8, 0x7a2b}, {0x61c9, 0x6b6b},
- {0x61ca, 0x6778}, {0x61cb, 0x5965}, {0x61e6, 0x5157},
- {0x61f2, 0x7324}, {0x61f6, 0x547b}, {0x61f7, 0x7c63},
- {0x61f8, 0x7a58}, {0x61fa, 0x7355}, {0x61fc, 0x4f2b},
- {0x61ff, 0x6b73}, {0x6200, 0x557c}, {0x6207, 0x5354},
- {0x6208, 0x4d7c}, {0x620a, 0x5966}, {0x620c, 0x6279},
- {0x620d, 0x6221}, {0x620e, 0x6b54}, {0x6210, 0x6077},
- {0x6211, 0x6432}, {0x6212, 0x4c7c}, {0x6216, 0x7b64},
- {0x621a, 0x742b}, {0x621f, 0x503d}, {0x6221, 0x4a71},
- {0x622a, 0x6f38}, {0x622e, 0x5740}, {0x6230, 0x6e7a},
- {0x6231, 0x7d74}, {0x6234, 0x5363}, {0x6236, 0x7b42},
- {0x623e, 0x5568}, {0x623f, 0x5b2e}, {0x6240, 0x6136},
- {0x6241, 0x7837}, {0x6247, 0x603f}, {0x6248, 0x7b43},
- {0x6249, 0x5d6a}, {0x624b, 0x6222}, {0x624d, 0x6e26},
- {0x6253, 0x7668}, {0x6258, 0x7675}, {0x626e, 0x5d4a},
- {0x6271, 0x5062}, {0x6276, 0x5d26}, {0x6279, 0x5d6b},
- {0x627c, 0x6479}, {0x627f, 0x632f}, {0x6280, 0x507c},
- {0x6284, 0x747c}, {0x6289, 0x4c3c}, {0x628a, 0x776a},
- {0x6291, 0x6564}, {0x6292, 0x5f71}, {0x6295, 0x7761},
- {0x6297, 0x7977}, {0x6298, 0x6f39}, {0x629b, 0x7858},
- {0x62ab, 0x7929}, {0x62b1, 0x7859}, {0x62b5, 0x6e3d},
- {0x62b9, 0x5846}, {0x62bc, 0x6463}, {0x62bd, 0x754e},
- {0x62c2, 0x5d59}, {0x62c7, 0x5967}, {0x62c8, 0x5239},
- {0x62c9, 0x5543}, {0x62cc, 0x5a65}, {0x62cd, 0x5a50},
- {0x62cf, 0x5159}, {0x62d0, 0x4e58}, {0x62d2, 0x4b5e},
- {0x62d3, 0x742c}, {0x62d4, 0x5a7b}, {0x62d6, 0x7669},
- {0x62d7, 0x6873}, {0x62d8, 0x4f2c}, {0x62d9, 0x7070},
- {0x62db, 0x747d}, {0x62dc, 0x5b48}, {0x62ec, 0x4e40},
- {0x62ed, 0x6354}, {0x62ee, 0x514f}, {0x62ef, 0x7175},
- {0x62f1, 0x4d72}, {0x62f3, 0x4f6b}, {0x62f7, 0x4d38},
- {0x62fe, 0x6326}, {0x62ff, 0x515a}, {0x6301, 0x7225},
- {0x6307, 0x7226}, {0x6309, 0x644e}, {0x6311, 0x537b},
- {0x632b, 0x7129}, {0x632f, 0x7249}, {0x633a, 0x6f58},
- {0x633b, 0x6649}, {0x633d, 0x5838}, {0x633e, 0x7a73},
- {0x6349, 0x7335}, {0x634c, 0x7824}, {0x634f, 0x5173},
- {0x6350, 0x6648}, {0x6355, 0x785a}, {0x6367, 0x5c69},
- {0x6368, 0x5e57}, {0x636e, 0x4b5f}, {0x6372, 0x4f6c},
- {0x6377, 0x745f}, {0x637a, 0x5174}, {0x637b, 0x523a},
- {0x637f, 0x5f72}, {0x6383, 0x6137}, {0x6388, 0x6223},
- {0x6389, 0x537c}, {0x638c, 0x6d66}, {0x6392, 0x5b49},
- {0x6396, 0x647a}, {0x6398, 0x4f5e}, {0x639b, 0x4e50},
- {0x63a0, 0x5553}, {0x63a1, 0x7375}, {0x63a2, 0x772e},
- {0x63a5, 0x6f48}, {0x63a7, 0x4d73}, {0x63a8, 0x754f},
- {0x63a9, 0x6573}, {0x63aa, 0x7042}, {0x63c0, 0x4a51},
- {0x63c4, 0x6a71}, {0x63c6, 0x5026}, {0x63cf, 0x595a},
- {0x63d0, 0x702b}, {0x63d6, 0x6b67}, {0x63da, 0x6540},
- {0x63db, 0x7c35}, {0x63e1, 0x6444}, {0x63ed, 0x4c29},
- {0x63ee, 0x7d46}, {0x63f4, 0x6a35}, {0x63f6, 0x652a},
- {0x63f7, 0x5f3a}, {0x640d, 0x615f}, {0x640f, 0x5a51},
- {0x6414, 0x6138}, {0x6416, 0x6874}, {0x6417, 0x537d},
- {0x641c, 0x6224}, {0x6422, 0x724a}, {0x642c, 0x5a66},
- {0x642d, 0x7733}, {0x643a, 0x7d4d}, {0x643e, 0x7336},
- {0x6458, 0x6e57}, {0x6460, 0x7544}, {0x6469, 0x5824},
- {0x646f, 0x7227}, {0x6478, 0x5938}, {0x6479, 0x5939},
- {0x647a, 0x6f49}, {0x6488, 0x564e}, {0x6491, 0x774b},
- {0x6492, 0x5f2e}, {0x6493, 0x6875}, {0x649a, 0x5235},
- {0x649e, 0x5355}, {0x64a4, 0x744c}, {0x64a5, 0x5a7c},
- {0x64ab, 0x5968}, {0x64ad, 0x776b}, {0x64ae, 0x7549},
- {0x64b0, 0x733c}, {0x64b2, 0x5a52}, {0x64bb, 0x5335},
- {0x64c1, 0x6836}, {0x64c4, 0x564f}, {0x64c5, 0x743a},
- {0x64c7, 0x7749}, {0x64ca, 0x4c2a}, {0x64cd, 0x7043},
- {0x64ce, 0x4c56}, {0x64d2, 0x5053}, {0x64d4, 0x533d},
- {0x64d8, 0x5b7b}, {0x64da, 0x4b60}, {0x64e1, 0x5364},
- {0x64e2, 0x7677}, {0x64e5, 0x553a}, {0x64e6, 0x734d},
- {0x64e7, 0x4b61}, {0x64ec, 0x6b74}, {0x64f2, 0x742d},
- {0x64f4, 0x7c2a}, {0x64fa, 0x776c}, {0x64fe, 0x6876},
- {0x6500, 0x5a67}, {0x6504, 0x774c}, {0x6518, 0x6541},
- {0x651d, 0x606e}, {0x6523, 0x557d}, {0x652a, 0x4e66},
- {0x652b, 0x7c2b}, {0x652c, 0x553b}, {0x652f, 0x7228},
- {0x6536, 0x6225}, {0x6537, 0x4d39}, {0x6538, 0x6a72},
- {0x6539, 0x4b47}, {0x653b, 0x4d74}, {0x653e, 0x5b2f},
- {0x653f, 0x6f59}, {0x6545, 0x4d3a}, {0x6548, 0x7c79},
- {0x654d, 0x5f73}, {0x654e, 0x4e67}, {0x654f, 0x5a42},
- {0x6551, 0x4f2d}, {0x6556, 0x6779}, {0x6557, 0x7828},
- {0x655e, 0x7362}, {0x6562, 0x4a72}, {0x6563, 0x5f24},
- {0x6566, 0x5444}, {0x656c, 0x4c57}, {0x656d, 0x6542},
- {0x6572, 0x4d3b}, {0x6574, 0x6f5a}, {0x6575, 0x6e58},
- {0x6577, 0x5d27}, {0x6578, 0x6226}, {0x657e, 0x6040},
- {0x6582, 0x5630}, {0x6583, 0x784a}, {0x6585, 0x7c7a},
- {0x6587, 0x597e}, {0x658c, 0x5e30}, {0x6590, 0x5d6c},
- {0x6591, 0x5a68}, {0x6597, 0x5460}, {0x6599, 0x5679},
- {0x659b, 0x4d57}, {0x659c, 0x5e58}, {0x659f, 0x7278},
- {0x65a1, 0x6456}, {0x65a4, 0x5045}, {0x65a5, 0x742e},
- {0x65a7, 0x5d28}, {0x65ab, 0x6d45}, {0x65ac, 0x7356},
- {0x65af, 0x5e59}, {0x65b0, 0x6366}, {0x65b7, 0x5328},
- {0x65b9, 0x5b30}, {0x65bc, 0x655a}, {0x65bd, 0x633f},
- {0x65c1, 0x5b31}, {0x65c5, 0x5569}, {0x65cb, 0x6041},
- {0x65cc, 0x6f5b}, {0x65cf, 0x7069}, {0x65d2, 0x5732},
- {0x65d7, 0x507d}, {0x65e0, 0x5969}, {0x65e3, 0x507e},
- {0x65e5, 0x6c6d}, {0x65e6, 0x5329}, {0x65e8, 0x7229},
- {0x65e9, 0x7044}, {0x65ec, 0x6262}, {0x65ed, 0x696f},
- {0x65f1, 0x7951}, {0x65f4, 0x6959}, {0x65fa, 0x685a},
- {0x65fb, 0x5a43}, {0x65fc, 0x5a44}, {0x65fd, 0x5445},
- {0x65ff, 0x677a}, {0x6606, 0x4d60}, {0x6607, 0x6330},
- {0x6609, 0x5b32}, {0x660a, 0x7b44}, {0x660c, 0x7363},
- {0x660e, 0x5925}, {0x660f, 0x7b67}, {0x6610, 0x5d4b},
- {0x6611, 0x5054}, {0x6613, 0x6636}, {0x6614, 0x602e},
- {0x6615, 0x7d5a}, {0x661e, 0x5c35}, {0x661f, 0x6078},
- {0x6620, 0x6731}, {0x6625, 0x7570}, {0x6627, 0x585c},
- {0x6628, 0x6d46}, {0x662d, 0x6139}, {0x662f, 0x6340},
- {0x6630, 0x7940}, {0x6631, 0x6970}, {0x6634, 0x595b},
- {0x6636, 0x7364}, {0x663a, 0x5c36}, {0x663b, 0x6469},
- {0x6641, 0x7045}, {0x6642, 0x6341}, {0x6643, 0x7c4c},
- {0x6644, 0x7c4d}, {0x6649, 0x724b}, {0x664b, 0x724c},
- {0x664f, 0x644f}, {0x6659, 0x715b}, {0x665b, 0x7a59},
- {0x665d, 0x7138}, {0x665e, 0x7d75}, {0x665f, 0x6079},
- {0x6664, 0x677b}, {0x6665, 0x7c37}, {0x6666, 0x7c64},
- {0x6667, 0x7b45}, {0x6668, 0x6367}, {0x6669, 0x5839},
- {0x666b, 0x7678}, {0x666e, 0x5c45}, {0x666f, 0x4c58},
- {0x6673, 0x602f}, {0x6674, 0x7467}, {0x6676, 0x6f5c},
- {0x6677, 0x4f7c}, {0x6678, 0x6f5d}, {0x667a, 0x722a},
- {0x6684, 0x7d3e}, {0x6687, 0x4a2c}, {0x6688, 0x7d3b},
- {0x6689, 0x7d47}, {0x668e, 0x6732}, {0x6690, 0x6a51},
- {0x6691, 0x5f74}, {0x6696, 0x516c}, {0x6697, 0x645e},
- {0x6698, 0x6543}, {0x669d, 0x5926}, {0x66a0, 0x4d3c},
- {0x66a2, 0x7365}, {0x66ab, 0x6d55}, {0x66ae, 0x593a},
- {0x66b2, 0x6d67}, {0x66b3, 0x7b35}, {0x66b4, 0x786c},
- {0x66b9, 0x6067}, {0x66bb, 0x4c59}, {0x66be, 0x5446},
- {0x66c4, 0x6725}, {0x66c6, 0x5575}, {0x66c7, 0x533e},
- {0x66c9, 0x7c7b}, {0x66d6, 0x6472}, {0x66d9, 0x5f75},
- {0x66dc, 0x6878}, {0x66dd, 0x786d}, {0x66e0, 0x4e47},
- {0x66e6, 0x7d76}, {0x66f0, 0x6858}, {0x66f2, 0x4d58},
- {0x66f3, 0x6756}, {0x66f4, 0x4c5a}, {0x66f7, 0x4a63},
- {0x66f8, 0x5f76}, {0x66f9, 0x7047}, {0x66fa, 0x7046},
- {0x66fc, 0x583a}, {0x66fe, 0x7174}, {0x66ff, 0x7470},
- {0x6700, 0x754c}, {0x6703, 0x7c65}, {0x6708, 0x6a45},
- {0x6709, 0x6a73}, {0x670b, 0x5d5b}, {0x670d, 0x5c57},
- {0x6714, 0x5e7d}, {0x6715, 0x7279}, {0x6717, 0x5547},
- {0x671b, 0x5850}, {0x671d, 0x7048}, {0x671e, 0x5121},
- {0x671f, 0x5122}, {0x6726, 0x5954}, {0x6727, 0x5668},
- {0x6728, 0x594a}, {0x672a, 0x5a31}, {0x672b, 0x5847},
- {0x672c, 0x5c62}, {0x672d, 0x734e}, {0x672e, 0x7574},
- {0x6731, 0x7139}, {0x6734, 0x5a53}, {0x6736, 0x766a},
- {0x673a, 0x4f75}, {0x673d, 0x7d2e}, {0x6746, 0x4a52},
- {0x6749, 0x5f34}, {0x674e, 0x575d}, {0x674f, 0x7a3a},
- {0x6750, 0x6e27}, {0x6751, 0x753d}, {0x6753, 0x7875},
- {0x6756, 0x6d68}, {0x675c, 0x5461}, {0x675e, 0x5123},
- {0x675f, 0x6156}, {0x676d, 0x7978}, {0x676f, 0x5b4a},
- {0x6770, 0x4b79}, {0x6771, 0x5454}, {0x6773, 0x595c},
- {0x6775, 0x6e3e}, {0x6777, 0x776d}, {0x677b, 0x526e},
- {0x677e, 0x6166}, {0x677f, 0x7779}, {0x6787, 0x5d6d},
- {0x6789, 0x685b}, {0x678b, 0x5b33}, {0x678f, 0x5177},
- {0x6790, 0x6030}, {0x6793, 0x5462}, {0x6795, 0x7657},
- {0x6797, 0x5779}, {0x679a, 0x585d}, {0x679c, 0x4d7d},
- {0x679d, 0x722b}, {0x67af, 0x4d3d}, {0x67b0, 0x7842},
- {0x67b3, 0x722c}, {0x67b6, 0x4a2d}, {0x67b7, 0x4a2e},
- {0x67b8, 0x4f2e}, {0x67be, 0x6342}, {0x67c4, 0x5c37},
- {0x67cf, 0x5b5a}, {0x67d0, 0x593b}, {0x67d1, 0x4a73},
- {0x67d2, 0x7653}, {0x67d3, 0x6678}, {0x67d4, 0x6a75},
- {0x67da, 0x6a76}, {0x67dd, 0x7679}, {0x67e9, 0x4f2f},
- {0x67ec, 0x4a53}, {0x67ef, 0x4a2f}, {0x67f0, 0x5230},
- {0x67f1, 0x713a}, {0x67f3, 0x5733}, {0x67f4, 0x6343},
- {0x67f5, 0x737d}, {0x67f6, 0x5e5a}, {0x67fb, 0x5e5b},
- {0x67fe, 0x6f5e}, {0x6812, 0x6263}, {0x6813, 0x6e7b},
- {0x6816, 0x5f77}, {0x6817, 0x574a}, {0x6821, 0x4e68},
- {0x6822, 0x5b5b}, {0x682a, 0x713b}, {0x682f, 0x6971},
- {0x6838, 0x7a37}, {0x6839, 0x5046}, {0x683c, 0x4c2b},
- {0x683d, 0x6e28}, {0x6840, 0x4b7a}, {0x6841, 0x7979},
- {0x6842, 0x4c7d}, {0x6843, 0x537e}, {0x6848, 0x6450},
- {0x684e, 0x726e}, {0x6850, 0x5455}, {0x6851, 0x5f4d},
- {0x6853, 0x7c38}, {0x6854, 0x5150}, {0x686d, 0x724d},
- {0x6876, 0x7752}, {0x687f, 0x4a54}, {0x6881, 0x5559},
- {0x6885, 0x585e}, {0x688f, 0x4d59}, {0x6893, 0x6e29},
- {0x6894, 0x763c}, {0x6897, 0x4c5b}, {0x689d, 0x7049},
- {0x689f, 0x7c7c}, {0x68a1, 0x6849}, {0x68a2, 0x747e},
- {0x68a7, 0x677c}, {0x68a8, 0x575e}, {0x68ad, 0x5e5c},
- {0x68af, 0x702c}, {0x68b0, 0x4c7e}, {0x68b1, 0x4d61},
- {0x68b3, 0x613a}, {0x68b5, 0x5b6f}, {0x68b6, 0x5a32},
- {0x68c4, 0x5125}, {0x68c5, 0x5c38}, {0x68c9, 0x5876},
- {0x68cb, 0x5124}, {0x68cd, 0x4d62}, {0x68d2, 0x5c6a},
- {0x68d5, 0x7077}, {0x68d7, 0x704a}, {0x68d8, 0x503e},
- {0x68da, 0x5d5c}, {0x68df, 0x5456}, {0x68e0, 0x5356},
- {0x68e7, 0x6d50}, {0x68e8, 0x4d21}, {0x68ee, 0x5f35},
- {0x68f2, 0x5f78}, {0x68f9, 0x5421}, {0x68fa, 0x4e32},
- {0x6900, 0x684a}, {0x6905, 0x6b75}, {0x690d, 0x6355},
- {0x690e, 0x7550}, {0x6912, 0x7521}, {0x6927, 0x5927},
- {0x6930, 0x652b}, {0x693d, 0x664b}, {0x693f, 0x7571},
- {0x694a, 0x6545}, {0x6953, 0x7923}, {0x6954, 0x605b},
- {0x6955, 0x766b}, {0x6957, 0x4b71}, {0x6959, 0x596a},
- {0x695a, 0x7522}, {0x695e, 0x5751}, {0x6960, 0x5178},
- {0x6961, 0x6a78}, {0x6962, 0x6a79}, {0x6963, 0x5a33},
- {0x6968, 0x6f5f}, {0x696b, 0x716f}, {0x696d, 0x6576},
- {0x696e, 0x6e3f}, {0x696f, 0x6264}, {0x6975, 0x503f},
- {0x6977, 0x7a2c}, {0x6978, 0x7551}, {0x6979, 0x6733},
- {0x6995, 0x693e}, {0x699b, 0x724e}, {0x699c, 0x5b34},
- {0x69a5, 0x7c4e}, {0x69a7, 0x5d6e}, {0x69ae, 0x6734},
- {0x69b4, 0x5734}, {0x69bb, 0x7734}, {0x69c1, 0x4d3e},
- {0x69c3, 0x5a69}, {0x69cb, 0x4f30}, {0x69cc, 0x7759},
- {0x69cd, 0x7366}, {0x69d0, 0x4e59}, {0x69e8, 0x4e2a},
- {0x69ea, 0x4b48}, {0x69fb, 0x5027}, {0x69fd, 0x704b},
- {0x69ff, 0x5047}, {0x6a02, 0x6445}, {0x6a0a, 0x5b60},
- {0x6a11, 0x555a}, {0x6a13, 0x5727}, {0x6a17, 0x6e40},
- {0x6a19, 0x7876}, {0x6a1e, 0x7552}, {0x6a1f, 0x6d69},
- {0x6a21, 0x593c}, {0x6a23, 0x6546}, {0x6a35, 0x7523},
- {0x6a38, 0x5a54}, {0x6a39, 0x6227}, {0x6a3a, 0x7b7c},
- {0x6a3d, 0x715c}, {0x6a44, 0x4a74}, {0x6a48, 0x687a},
- {0x6a4b, 0x4e69}, {0x6a52, 0x6978}, {0x6a53, 0x6265},
- {0x6a58, 0x5039}, {0x6a59, 0x5472}, {0x6a5f, 0x5126},
- {0x6a61, 0x5f4e}, {0x6a6b, 0x7c74}, {0x6a80, 0x532a},
- {0x6a84, 0x4c2c}, {0x6a89, 0x6f60}, {0x6a8d, 0x6565},
- {0x6a8e, 0x5055}, {0x6a97, 0x5b7c}, {0x6a9c, 0x7c66},
- {0x6aa2, 0x4b7e}, {0x6aa3, 0x6d6a}, {0x6ab3, 0x5e31},
- {0x6abb, 0x7963}, {0x6ac2, 0x5422}, {0x6ac3, 0x4f76},
- {0x6ad3, 0x5650}, {0x6ada, 0x556a}, {0x6adb, 0x716e},
- {0x6af6, 0x7a4b}, {0x6afb, 0x6521}, {0x6b04, 0x5531},
- {0x6b0a, 0x4f6d}, {0x6b0c, 0x6d6b}, {0x6b12, 0x5532},
- {0x6b16, 0x553c}, {0x6b20, 0x7d62}, {0x6b21, 0x732d},
- {0x6b23, 0x7d5b}, {0x6b32, 0x6930}, {0x6b3a, 0x5127},
- {0x6b3d, 0x7d63}, {0x6b3e, 0x4e33}, {0x6b46, 0x7d64},
- {0x6b47, 0x7a4e}, {0x6b4c, 0x4a30}, {0x6b4e, 0x7727},
- {0x6b50, 0x4f31}, {0x6b5f, 0x6622}, {0x6b61, 0x7c36},
- {0x6b62, 0x722d}, {0x6b63, 0x6f61}, {0x6b64, 0x732e},
- {0x6b65, 0x5c46}, {0x6b66, 0x596b}, {0x6b6a, 0x6860},
- {0x6b72, 0x6128}, {0x6b77, 0x5576}, {0x6b78, 0x4f7d},
- {0x6b7b, 0x5e5d}, {0x6b7f, 0x5951}, {0x6b83, 0x646a},
- {0x6b84, 0x724f}, {0x6b86, 0x773f}, {0x6b89, 0x6266},
- {0x6b8a, 0x6228}, {0x6b96, 0x6356}, {0x6b98, 0x6d51},
- {0x6b9e, 0x6979}, {0x6bae, 0x5631}, {0x6baf, 0x5e32},
- {0x6bb2, 0x6068}, {0x6bb5, 0x532b}, {0x6bb7, 0x6b5c},
- {0x6bba, 0x5f2f}, {0x6bbc, 0x4a43}, {0x6bbf, 0x6e7c},
- {0x6bc1, 0x7d43}, {0x6bc5, 0x6b76}, {0x6bc6, 0x4f32},
- {0x6bcb, 0x596c}, {0x6bcd, 0x593d}, {0x6bcf, 0x585f},
- {0x6bd2, 0x5438}, {0x6bd3, 0x6b3e}, {0x6bd4, 0x5d6f},
- {0x6bd6, 0x5d70}, {0x6bd7, 0x5d71}, {0x6bd8, 0x5d72},
- {0x6bdb, 0x593e}, {0x6beb, 0x7b46}, {0x6bec, 0x4f33},
- {0x6c08, 0x6e7d}, {0x6c0f, 0x642b}, {0x6c11, 0x5a45},
- {0x6c13, 0x586c}, {0x6c23, 0x5128}, {0x6c34, 0x6229},
- {0x6c37, 0x5e3c}, {0x6c38, 0x6735}, {0x6c3e, 0x5b70},
- {0x6c40, 0x6f62}, {0x6c41, 0x7170}, {0x6c42, 0x4f34},
- {0x6c4e, 0x5b71}, {0x6c50, 0x6031}, {0x6c55, 0x5f25},
- {0x6c57, 0x7952}, {0x6c5a, 0x677d}, {0x6c5d, 0x6623},
- {0x6c5e, 0x7b71}, {0x6c5f, 0x4b30}, {0x6c60, 0x722e},
- {0x6c68, 0x4d67}, {0x6c6a, 0x685c}, {0x6c6d, 0x6757},
- {0x6c70, 0x7740}, {0x6c72, 0x5063}, {0x6c76, 0x5a21},
- {0x6c7a, 0x4c3d}, {0x6c7d, 0x5129}, {0x6c7e, 0x5d4c},
- {0x6c81, 0x637e}, {0x6c82, 0x512a}, {0x6c83, 0x682a},
- {0x6c85, 0x6a36}, {0x6c86, 0x797a}, {0x6c87, 0x664c},
- {0x6c88, 0x7658}, {0x6c8c, 0x5447}, {0x6c90, 0x594b},
- {0x6c92, 0x5952}, {0x6c93, 0x534b}, {0x6c94, 0x5877},
- {0x6c95, 0x5a29}, {0x6c96, 0x7578}, {0x6c99, 0x5e5e},
- {0x6c9a, 0x722f}, {0x6c9b, 0x7829}, {0x6cab, 0x5848},
- {0x6cae, 0x6e41}, {0x6cb3, 0x7941}, {0x6cb8, 0x5d73},
- {0x6cb9, 0x6a7a}, {0x6cbb, 0x763d}, {0x6cbc, 0x613b},
- {0x6cbd, 0x4d3f}, {0x6cbe, 0x7454}, {0x6cbf, 0x664d},
- {0x6cc1, 0x7c4f}, {0x6cc2, 0x7b22}, {0x6cc4, 0x605c},
- {0x6cc9, 0x743b}, {0x6cca, 0x5a55}, {0x6ccc, 0x7932},
- {0x6cd3, 0x7b72}, {0x6cd5, 0x5b76}, {0x6cd7, 0x5e5f},
- {0x6cdb, 0x5b72}, {0x6ce1, 0x785c}, {0x6ce2, 0x776e},
- {0x6ce3, 0x6b68}, {0x6ce5, 0x527a}, {0x6ce8, 0x713c},
- {0x6ceb, 0x7a5a}, {0x6cee, 0x5a6a}, {0x6cef, 0x5a46},
- {0x6cf0, 0x7741}, {0x6cf3, 0x6736}, {0x6d0b, 0x6547},
- {0x6d0c, 0x562c}, {0x6d11, 0x5c47}, {0x6d17, 0x6129},
- {0x6d19, 0x622a}, {0x6d1b, 0x5526}, {0x6d1e, 0x5457},
- {0x6d25, 0x7250}, {0x6d27, 0x6a7b}, {0x6d29, 0x605d},
- {0x6d2a, 0x7b73}, {0x6d32, 0x713d}, {0x6d35, 0x6267},
- {0x6d36, 0x7d57}, {0x6d38, 0x4e48}, {0x6d39, 0x6a37},
- {0x6d3b, 0x7c40}, {0x6d3d, 0x7d67}, {0x6d3e, 0x776f},
- {0x6d41, 0x5735}, {0x6d59, 0x6f3a}, {0x6d5a, 0x715d},
- {0x6d5c, 0x5e33}, {0x6d63, 0x684b}, {0x6d66, 0x785d},
- {0x6d69, 0x7b47}, {0x6d6a, 0x5548}, {0x6d6c, 0x575f},
- {0x6d6e, 0x5d29}, {0x6d74, 0x6931}, {0x6d77, 0x7a2d},
- {0x6d78, 0x7659}, {0x6d79, 0x7a74}, {0x6d7f, 0x782a},
- {0x6d85, 0x666e}, {0x6d87, 0x4c5c}, {0x6d88, 0x613c},
- {0x6d89, 0x606f}, {0x6d8c, 0x693f}, {0x6d8d, 0x7c7d},
- {0x6d8e, 0x664e}, {0x6d91, 0x6157}, {0x6d93, 0x664f},
- {0x6d95, 0x7471}, {0x6daf, 0x6473}, {0x6db2, 0x647b},
- {0x6db5, 0x7964}, {0x6dc0, 0x6f63}, {0x6dc3, 0x4f6e},
- {0x6dc4, 0x763e}, {0x6dc5, 0x6032}, {0x6dc6, 0x7c7e},
- {0x6dc7, 0x512b}, {0x6dcb, 0x577a}, {0x6dcf, 0x7b48},
- {0x6dd1, 0x6257}, {0x6dd8, 0x5423}, {0x6dd9, 0x7078},
- {0x6dda, 0x5728}, {0x6dde, 0x6167}, {0x6de1, 0x533f},
- {0x6de8, 0x6f64}, {0x6dea, 0x5745}, {0x6deb, 0x6b62},
- {0x6dee, 0x7c67}, {0x6df1, 0x6422}, {0x6df3, 0x6268},
- {0x6df5, 0x6650}, {0x6df7, 0x7b68}, {0x6df8, 0x7468},
- {0x6df9, 0x6574}, {0x6dfa, 0x743c}, {0x6dfb, 0x7455},
- {0x6e17, 0x5f36}, {0x6e19, 0x7c39}, {0x6e1a, 0x6e42},
- {0x6e1b, 0x4a75}, {0x6e1f, 0x6f65}, {0x6e20, 0x4b62},
- {0x6e21, 0x5424}, {0x6e23, 0x5e60}, {0x6e24, 0x5a7d},
- {0x6e25, 0x6446}, {0x6e26, 0x683e}, {0x6e2b, 0x605e},
- {0x6e2c, 0x7634}, {0x6e2d, 0x6a52}, {0x6e2f, 0x797b},
- {0x6e32, 0x6042}, {0x6e34, 0x4a64}, {0x6e36, 0x6737},
- {0x6e38, 0x6a7d}, {0x6e3a, 0x595d}, {0x6e3c, 0x5a34},
- {0x6e3d, 0x6e2a}, {0x6e3e, 0x7b69}, {0x6e43, 0x5b4b},
- {0x6e44, 0x5a35}, {0x6e4a, 0x713e}, {0x6e4d, 0x532c},
- {0x6e56, 0x7b49}, {0x6e58, 0x5f4f}, {0x6e5b, 0x5340},
- {0x6e5c, 0x6357}, {0x6e5e, 0x6f66}, {0x6e5f, 0x7c50},
- {0x6e67, 0x6940}, {0x6e6b, 0x7553}, {0x6e6e, 0x6c5c},
- {0x6e6f, 0x7737}, {0x6e72, 0x6a38}, {0x6e73, 0x5179},
- {0x6e7a, 0x5c48}, {0x6e90, 0x6a39}, {0x6e96, 0x715e},
- {0x6e9c, 0x5736}, {0x6e9d, 0x4f35}, {0x6e9f, 0x5928},
- {0x6ea2, 0x6c6e}, {0x6ea5, 0x5d2a}, {0x6eaa, 0x4d22},
- {0x6eab, 0x682e}, {0x6eaf, 0x613d}, {0x6eb1, 0x7251},
- {0x6eb6, 0x6941}, {0x6eba, 0x527c}, {0x6ec2, 0x5b35},
- {0x6ec4, 0x7367}, {0x6ec5, 0x587e}, {0x6ec9, 0x7c51},
- {0x6ecb, 0x6d32}, {0x6ecc, 0x742f}, {0x6ece, 0x7b23},
- {0x6ed1, 0x7c41}, {0x6ed3, 0x6e2b}, {0x6ed4, 0x5425},
- {0x6eef, 0x7472}, {0x6ef4, 0x6e59}, {0x6ef8, 0x7b4a},
- {0x6efe, 0x4d63}, {0x6eff, 0x583b}, {0x6f01, 0x655b},
- {0x6f02, 0x7877}, {0x6f06, 0x7654}, {0x6f0f, 0x5729},
- {0x6f11, 0x4b49}, {0x6f14, 0x6651}, {0x6f15, 0x704c},
- {0x6f20, 0x582e}, {0x6f22, 0x7953}, {0x6f23, 0x557e},
- {0x6f2b, 0x583c}, {0x6f2c, 0x7230}, {0x6f31, 0x622b},
- {0x6f32, 0x7368}, {0x6f38, 0x6f42}, {0x6f3f, 0x6d6c},
- {0x6f41, 0x6738}, {0x6f51, 0x5a7e}, {0x6f54, 0x4c3e},
- {0x6f57, 0x727c}, {0x6f58, 0x5a6b}, {0x6f5a, 0x6258},
- {0x6f5b, 0x6d56}, {0x6f5e, 0x5651}, {0x6f5f, 0x6033},
- {0x6f62, 0x7c52}, {0x6f64, 0x6b48}, {0x6f6d, 0x5341},
- {0x6f6e, 0x704d}, {0x6f70, 0x4f77}, {0x6f7a, 0x6d52},
- {0x6f7c, 0x5458}, {0x6f7d, 0x5c49}, {0x6f7e, 0x5771},
- {0x6f81, 0x5f3b}, {0x6f84, 0x7325}, {0x6f88, 0x744d},
- {0x6f8d, 0x713f}, {0x6f8e, 0x7831}, {0x6f90, 0x697a},
- {0x6f94, 0x7b4b}, {0x6f97, 0x4a55}, {0x6fa3, 0x7954},
- {0x6fa4, 0x774a}, {0x6fa7, 0x5648}, {0x6fae, 0x7c68},
- {0x6faf, 0x733d}, {0x6fb1, 0x6e7e}, {0x6fb3, 0x677e},
- {0x6fb9, 0x5342}, {0x6fbe, 0x5336}, {0x6fc0, 0x4c2d},
- {0x6fc1, 0x767a}, {0x6fc2, 0x5632}, {0x6fc3, 0x5258},
- {0x6fca, 0x6758}, {0x6fd5, 0x6325}, {0x6fda, 0x6739},
- {0x6fdf, 0x702d}, {0x6fe0, 0x7b4c}, {0x6fe1, 0x6b21},
- {0x6fe4, 0x5426}, {0x6fe9, 0x7b4d}, {0x6feb, 0x553d},
- {0x6fec, 0x715f}, {0x6fef, 0x767b}, {0x6ff1, 0x5e34},
- {0x6ffe, 0x556b}, {0x7001, 0x6548}, {0x7005, 0x7b24},
- {0x7006, 0x5439}, {0x7009, 0x5e61}, {0x700b, 0x6423},
- {0x700f, 0x5737}, {0x7011, 0x786e}, {0x7015, 0x5e35},
- {0x7018, 0x5652}, {0x701a, 0x7955}, {0x701b, 0x673a},
- {0x701c, 0x6b55}, {0x701d, 0x5577}, {0x701e, 0x6f67},
- {0x701f, 0x613e}, {0x7023, 0x7a2e}, {0x7027, 0x5669},
- {0x7028, 0x566e}, {0x702f, 0x673b}, {0x7037, 0x6c4b},
- {0x703e, 0x5533}, {0x704c, 0x4e34}, {0x7050, 0x7b25},
- {0x7051, 0x616e}, {0x7058, 0x7728}, {0x705d, 0x7b4e},
- {0x7063, 0x583d}, {0x706b, 0x7b7d}, {0x7070, 0x7c69},
- {0x7078, 0x4f36}, {0x707c, 0x6d47}, {0x707d, 0x6e2c},
- {0x7085, 0x4c5d}, {0x708a, 0x7627}, {0x708e, 0x667a},
- {0x7092, 0x7524}, {0x7098, 0x7d5c}, {0x7099, 0x6d33},
- {0x709a, 0x4e49}, {0x70a1, 0x6f68}, {0x70a4, 0x613f},
- {0x70ab, 0x7a5b}, {0x70ac, 0x4b63}, {0x70ad, 0x7729},
- {0x70af, 0x7b26}, {0x70b3, 0x5c39}, {0x70b7, 0x7140},
- {0x70b8, 0x6d48}, {0x70b9, 0x6f43}, {0x70c8, 0x562d},
- {0x70cb, 0x7d4e}, {0x70cf, 0x6821}, {0x70d8, 0x7b74},
- {0x70d9, 0x5527}, {0x70dd, 0x7176}, {0x70df, 0x6653},
- {0x70f1, 0x4c5e}, {0x70f9, 0x7832}, {0x70fd, 0x5c6b},
- {0x7104, 0x7d36}, {0x7109, 0x656a}, {0x710c, 0x7160},
- {0x7119, 0x5b4c}, {0x711a, 0x5d4d}, {0x711e, 0x5448},
- {0x7121, 0x596d}, {0x7126, 0x7525}, {0x7130, 0x667b},
- {0x7136, 0x6654}, {0x7147, 0x7d48}, {0x7149, 0x5621},
- {0x714a, 0x7d3f}, {0x714c, 0x7c53}, {0x714e, 0x6f21},
- {0x7150, 0x673c}, {0x7156, 0x516e}, {0x7159, 0x6655},
- {0x715c, 0x6972}, {0x715e, 0x5f30}, {0x7164, 0x5860},
- {0x7165, 0x7c3a}, {0x7166, 0x7d2f}, {0x7167, 0x704e},
- {0x7169, 0x5b61}, {0x716c, 0x6549}, {0x716e, 0x6d34},
- {0x717d, 0x6043}, {0x7184, 0x6358}, {0x7189, 0x697b},
- {0x718a, 0x6a28}, {0x718f, 0x7d37}, {0x7192, 0x7b27},
- {0x7194, 0x6942}, {0x7199, 0x7d77}, {0x719f, 0x6259},
- {0x71a2, 0x5c6c}, {0x71ac, 0x6822}, {0x71b1, 0x6670},
- {0x71b9, 0x7d78}, {0x71ba, 0x7d79}, {0x71be, 0x763f},
- {0x71c1, 0x6727}, {0x71c3, 0x6657}, {0x71c8, 0x5473},
- {0x71c9, 0x5449}, {0x71ce, 0x567a}, {0x71d0, 0x5772},
- {0x71d2, 0x6140}, {0x71d4, 0x5b62}, {0x71d5, 0x6658},
- {0x71df, 0x673d}, {0x71e5, 0x704f}, {0x71e6, 0x733e},
- {0x71e7, 0x622c}, {0x71ed, 0x7537}, {0x71ee, 0x6070},
- {0x71fb, 0x7d38}, {0x71fc, 0x6368}, {0x71fe, 0x5427},
- {0x71ff, 0x687c}, {0x7200, 0x7a52}, {0x7206, 0x786f},
- {0x7210, 0x5653}, {0x721b, 0x5534}, {0x722a, 0x7050},
- {0x722c, 0x7770}, {0x722d, 0x6e33}, {0x7230, 0x6a3a},
- {0x7232, 0x6a53}, {0x7235, 0x6d49}, {0x7236, 0x5d2b},
- {0x723a, 0x652c}, {0x723b, 0x7d21}, {0x723d, 0x5f50},
- {0x723e, 0x6c33}, {0x7240, 0x5f51}, {0x7246, 0x6d6d},
- {0x7247, 0x7838}, {0x7248, 0x777a}, {0x724c, 0x782b},
- {0x7252, 0x7460}, {0x7258, 0x543a}, {0x7259, 0x6433},
- {0x725b, 0x695a}, {0x725d, 0x5e36}, {0x725f, 0x593f},
- {0x7261, 0x5940}, {0x7262, 0x566f}, {0x7267, 0x594c},
- {0x7269, 0x5a2a}, {0x7272, 0x5f65}, {0x7279, 0x7765},
- {0x727d, 0x4c32}, {0x7280, 0x5f79}, {0x7281, 0x5760},
- {0x72a2, 0x543b}, {0x72a7, 0x7d7a}, {0x72ac, 0x4c33},
- {0x72af, 0x5b73}, {0x72c0, 0x5f52}, {0x72c2, 0x4e4a},
- {0x72c4, 0x6e5a}, {0x72ce, 0x6464}, {0x72d0, 0x7b4f},
- {0x72d7, 0x4f37}, {0x72d9, 0x6e43}, {0x72e1, 0x4e6a},
- {0x72e9, 0x622d}, {0x72f8, 0x5761}, {0x72f9, 0x7a75},
- {0x72fc, 0x5549}, {0x72fd, 0x782c}, {0x730a, 0x6759},
- {0x7316, 0x7369}, {0x731b, 0x586d}, {0x731c, 0x6344},
- {0x731d, 0x7071}, {0x7325, 0x6865}, {0x7329, 0x607a},
- {0x732a, 0x6e44}, {0x732b, 0x595e}, {0x7336, 0x6b22},
- {0x7337, 0x6b23}, {0x733e, 0x7c42}, {0x733f, 0x6a3b},
- {0x7344, 0x682b}, {0x7345, 0x5e62}, {0x7350, 0x6d6f},
- {0x7352, 0x6823}, {0x7357, 0x4f71}, {0x7368, 0x543c},
- {0x736a, 0x7c6a}, {0x7370, 0x673e}, {0x7372, 0x7c72},
- {0x7375, 0x5634}, {0x7378, 0x622e}, {0x737a, 0x5337},
- {0x737b, 0x7a4c}, {0x7384, 0x7a5c}, {0x7386, 0x6d35},
- {0x7387, 0x6163}, {0x7389, 0x682c}, {0x738b, 0x685d},
- {0x738e, 0x6f69}, {0x7394, 0x743d}, {0x7396, 0x4f38},
- {0x7397, 0x695b}, {0x7398, 0x512c}, {0x739f, 0x5a47},
- {0x73a7, 0x6b49}, {0x73a9, 0x684c}, {0x73ad, 0x5e37},
- {0x73b2, 0x563c}, {0x73b3, 0x5365}, {0x73b9, 0x7a5d},
- {0x73c0, 0x5a56}, {0x73c2, 0x4a31}, {0x73c9, 0x5a48},
- {0x73ca, 0x5f26}, {0x73cc, 0x7933}, {0x73cd, 0x7252},
- {0x73cf, 0x4a44}, {0x73d6, 0x4e4b}, {0x73d9, 0x4d75},
- {0x73dd, 0x7d30}, {0x73de, 0x5528}, {0x73e0, 0x7141},
- {0x73e3, 0x6269}, {0x73e4, 0x5c4a}, {0x73e5, 0x6c34},
- {0x73e6, 0x7a40}, {0x73e9, 0x7b28}, {0x73ea, 0x5028},
- {0x73ed, 0x5a6c}, {0x73f7, 0x596e}, {0x73f9, 0x607b},
- {0x73fd, 0x6f6a}, {0x73fe, 0x7a5e}, {0x7401, 0x6044},
- {0x7403, 0x4f39}, {0x7405, 0x554a}, {0x7406, 0x5762},
- {0x7407, 0x622f}, {0x7409, 0x5738}, {0x7413, 0x684d},
- {0x741b, 0x765a}, {0x7420, 0x6f22}, {0x7421, 0x625a},
- {0x7422, 0x767c}, {0x7425, 0x7b50}, {0x7426, 0x512d},
- {0x7428, 0x4d64}, {0x742a, 0x512e}, {0x742b, 0x5c6d},
- {0x742c, 0x684e}, {0x742e, 0x7079}, {0x742f, 0x4e35},
- {0x7430, 0x667c}, {0x7433, 0x577b}, {0x7434, 0x5056},
- {0x7435, 0x5d75}, {0x7436, 0x7771}, {0x7438, 0x767d},
- {0x743a, 0x5b77}, {0x743f, 0x7b6a}, {0x7440, 0x695c},
- {0x7441, 0x5941}, {0x7443, 0x7572}, {0x7444, 0x6045},
- {0x744b, 0x6a54}, {0x7455, 0x7942}, {0x7457, 0x6a3c},
- {0x7459, 0x5245}, {0x745a, 0x7b51}, {0x745b, 0x6740},
- {0x745c, 0x6b25}, {0x745e, 0x5f7a}, {0x745f, 0x6322},
- {0x7460, 0x5739}, {0x7462, 0x6943}, {0x7464, 0x687d},
- {0x7465, 0x682f}, {0x7468, 0x7253}, {0x7469, 0x7b29},
- {0x746a, 0x5825}, {0x746f, 0x554b}, {0x747e, 0x5048},
- {0x7482, 0x512f}, {0x7483, 0x5763}, {0x7487, 0x6046},
- {0x7489, 0x5622}, {0x748b, 0x6d70}, {0x7498, 0x5773},
- {0x749c, 0x7c54}, {0x749e, 0x5a57}, {0x749f, 0x4c5f},
- {0x74a1, 0x7254}, {0x74a3, 0x5130}, {0x74a5, 0x4c60},
- {0x74a7, 0x5b7d}, {0x74a8, 0x733f}, {0x74aa, 0x7051},
- {0x74b0, 0x7c3b}, {0x74b2, 0x6230}, {0x74b5, 0x6625},
- {0x74b9, 0x625b}, {0x74bd, 0x5f5e}, {0x74bf, 0x6047},
- {0x74c6, 0x726f}, {0x74ca, 0x4c61}, {0x74cf, 0x566a},
- {0x74d4, 0x6742}, {0x74d8, 0x4e36}, {0x74da, 0x7340},
- {0x74dc, 0x4d7e}, {0x74e0, 0x7b52}, {0x74e2, 0x7878},
- {0x74e3, 0x777b}, {0x74e6, 0x683f}, {0x74ee, 0x6837},
- {0x74f7, 0x6d36}, {0x7501, 0x5c3a}, {0x7504, 0x4c34},
- {0x7511, 0x7177}, {0x7515, 0x6838}, {0x7518, 0x4a76},
- {0x751a, 0x6424}, {0x751b, 0x7456}, {0x751f, 0x5f66},
- {0x7523, 0x5f27}, {0x7525, 0x5f67}, {0x7526, 0x6141},
- {0x7528, 0x6944}, {0x752b, 0x5c4b}, {0x752c, 0x6945},
- {0x7530, 0x6f23}, {0x7531, 0x6b26}, {0x7532, 0x4b23},
- {0x7533, 0x6369}, {0x7537, 0x517b}, {0x7538, 0x6f24},
- {0x753a, 0x6f6b}, {0x7547, 0x5034}, {0x754c, 0x4d23},
- {0x754f, 0x6866}, {0x7551, 0x6f25}, {0x7553, 0x534c},
- {0x7554, 0x5a6d}, {0x7559, 0x573a}, {0x755b, 0x7255},
- {0x755c, 0x7565}, {0x755d, 0x596f}, {0x7562, 0x7934},
- {0x7565, 0x5554}, {0x7566, 0x7d4f}, {0x756a, 0x5b63},
- {0x756f, 0x7161}, {0x7570, 0x6c36}, {0x7575, 0x7b7e},
- {0x7576, 0x5357}, {0x7578, 0x5131}, {0x757a, 0x4b31},
- {0x757f, 0x5132}, {0x7586, 0x4b32}, {0x7587, 0x7142},
- {0x758a, 0x7461}, {0x758b, 0x7935}, {0x758e, 0x6143},
- {0x758f, 0x6142}, {0x7591, 0x6b77}, {0x759d, 0x5f28},
- {0x75a5, 0x4b4a}, {0x75ab, 0x6639}, {0x75b1, 0x785e},
- {0x75b2, 0x792a}, {0x75b3, 0x4a77}, {0x75b5, 0x6d37},
- {0x75b8, 0x5338}, {0x75b9, 0x7256}, {0x75bc, 0x5459},
- {0x75bd, 0x6e45}, {0x75be, 0x7270}, {0x75c2, 0x4a32},
- {0x75c5, 0x5c3b}, {0x75c7, 0x7178}, {0x75cd, 0x6c37},
- {0x75d2, 0x654a}, {0x75d4, 0x7640}, {0x75d5, 0x7d5d},
- {0x75d8, 0x5463}, {0x75d9, 0x4c62}, {0x75db, 0x7754},
- {0x75e2, 0x5765}, {0x75f0, 0x5343}, {0x75f2, 0x5826},
- {0x75f4, 0x7641}, {0x75fa, 0x5d76}, {0x75fc, 0x4d40},
- {0x7600, 0x655c}, {0x760d, 0x654b}, {0x7619, 0x6144},
- {0x761f, 0x6830}, {0x7620, 0x7430}, {0x7621, 0x736a},
- {0x7622, 0x5a6e}, {0x7624, 0x573b}, {0x7626, 0x6231},
- {0x763b, 0x572a}, {0x7642, 0x567b}, {0x764c, 0x645f},
- {0x764e, 0x4a56}, {0x7652, 0x6b28}, {0x7656, 0x5b7e},
- {0x7661, 0x7642}, {0x7664, 0x6f3b}, {0x7669, 0x547d},
- {0x766c, 0x6048}, {0x7670, 0x6839}, {0x7672, 0x6f26},
- {0x7678, 0x4d24}, {0x767b, 0x5474}, {0x767c, 0x5b21},
- {0x767d, 0x5b5c}, {0x767e, 0x5b5d}, {0x7684, 0x6e5c},
- {0x7686, 0x4b4b}, {0x7687, 0x7c55}, {0x768e, 0x4e6b},
- {0x7690, 0x4d41}, {0x7693, 0x7b53}, {0x76ae, 0x792b},
- {0x76ba, 0x7554}, {0x76bf, 0x5929}, {0x76c2, 0x695d},
- {0x76c3, 0x5b4d}, {0x76c6, 0x5d4e}, {0x76c8, 0x6743},
- {0x76ca, 0x6c4c}, {0x76d2, 0x796c}, {0x76d6, 0x4b4c},
- {0x76db, 0x607c}, {0x76dc, 0x5428}, {0x76de, 0x6d53},
- {0x76df, 0x586f}, {0x76e1, 0x7257}, {0x76e3, 0x4a78},
- {0x76e4, 0x5a6f}, {0x76e7, 0x5654}, {0x76ee, 0x594d},
- {0x76f2, 0x586e}, {0x76f4, 0x7241}, {0x76f8, 0x5f53},
- {0x76fc, 0x5a70}, {0x76fe, 0x626a}, {0x7701, 0x607d},
- {0x7704, 0x5878}, {0x7708, 0x772f}, {0x7709, 0x5a36},
- {0x770b, 0x4a57}, {0x771e, 0x7258}, {0x7720, 0x5879},
- {0x7729, 0x7a5f}, {0x7737, 0x4f6f}, {0x7738, 0x5942},
- {0x773a, 0x7052}, {0x773c, 0x6451}, {0x7740, 0x7337},
- {0x774d, 0x7a60}, {0x775b, 0x6f6c}, {0x7761, 0x6232},
- {0x7763, 0x543d}, {0x7766, 0x594e}, {0x776b, 0x7462},
- {0x7779, 0x5429}, {0x777e, 0x4d42}, {0x777f, 0x675a},
- {0x778b, 0x7259}, {0x7791, 0x592a}, {0x779e, 0x583e},
- {0x77a5, 0x5c2d}, {0x77ac, 0x626b}, {0x77ad, 0x567c},
- {0x77b0, 0x4a79}, {0x77b3, 0x545a}, {0x77bb, 0x7457},
- {0x77bc, 0x4c21}, {0x77bf, 0x4f3a}, {0x77d7, 0x7538},
- {0x77db, 0x5943}, {0x77dc, 0x5068}, {0x77e2, 0x6345},
- {0x77e3, 0x6b78}, {0x77e5, 0x7231}, {0x77e9, 0x4f3b},
- {0x77ed, 0x532d}, {0x77ee, 0x6861}, {0x77ef, 0x4e6c},
- {0x77f3, 0x6034}, {0x7802, 0x5e63}, {0x7812, 0x5d77},
- {0x7825, 0x7232}, {0x7826, 0x7376}, {0x7827, 0x765b},
- {0x782c, 0x577e}, {0x7832, 0x785f}, {0x7834, 0x7772},
- {0x7845, 0x5029}, {0x784f, 0x665a}, {0x785d, 0x7526},
- {0x786b, 0x573c}, {0x786c, 0x4c63}, {0x786f, 0x665b},
- {0x787c, 0x5d5d}, {0x7881, 0x5133}, {0x7887, 0x6f6d},
- {0x788c, 0x565e}, {0x788d, 0x6474}, {0x788e, 0x616f},
- {0x7891, 0x5d78}, {0x7897, 0x684f}, {0x78a3, 0x4a65},
- {0x78a7, 0x5c21}, {0x78a9, 0x6035}, {0x78ba, 0x7c2c},
- {0x78bb, 0x7c2d}, {0x78bc, 0x5827}, {0x78c1, 0x6d38},
- {0x78c5, 0x5b36}, {0x78ca, 0x5670}, {0x78cb, 0x732f},
- {0x78ce, 0x4d25}, {0x78d0, 0x5a71}, {0x78e8, 0x5828},
- {0x78ec, 0x4c64}, {0x78ef, 0x5134}, {0x78f5, 0x4a58},
- {0x78fb, 0x5a72}, {0x7901, 0x7527}, {0x790e, 0x7528},
- {0x7916, 0x6626}, {0x792a, 0x556c}, {0x792b, 0x5578},
- {0x792c, 0x5a73}, {0x793a, 0x6346}, {0x793e, 0x5e64},
- {0x7940, 0x5e65}, {0x7941, 0x5135}, {0x7947, 0x5136},
- {0x7948, 0x5137}, {0x7949, 0x7233}, {0x7950, 0x695e},
- {0x7956, 0x7053}, {0x7957, 0x7234}, {0x795a, 0x7054},
- {0x795b, 0x4b64}, {0x795c, 0x7b54}, {0x795d, 0x7566},
- {0x795e, 0x636a}, {0x7960, 0x5e66}, {0x7965, 0x5f54},
- {0x7968, 0x7879}, {0x796d, 0x702e}, {0x797a, 0x5138},
- {0x797f, 0x565f}, {0x7981, 0x5057}, {0x798d, 0x7c21},
- {0x798e, 0x6f6e}, {0x798f, 0x5c58}, {0x7991, 0x695f},
- {0x79a6, 0x655d}, {0x79a7, 0x7d7b}, {0x79aa, 0x6049},
- {0x79ae, 0x5649}, {0x79b1, 0x542a}, {0x79b3, 0x654c},
- {0x79b9, 0x6960}, {0x79bd, 0x5058}, {0x79be, 0x7c22},
- {0x79bf, 0x543e}, {0x79c0, 0x6233}, {0x79c1, 0x5e67},
- {0x79c9, 0x5c3c}, {0x79ca, 0x5236}, {0x79cb, 0x7555},
- {0x79d1, 0x4e21}, {0x79d2, 0x7529}, {0x79d5, 0x5d79},
- {0x79d8, 0x5d7a}, {0x79df, 0x7055}, {0x79e4, 0x765f},
- {0x79e6, 0x725a}, {0x79e7, 0x646b}, {0x79e9, 0x7271},
- {0x79fb, 0x6c39}, {0x7a00, 0x7d7c}, {0x7a05, 0x612a},
- {0x7a08, 0x4a59}, {0x7a0b, 0x6f6f}, {0x7a0d, 0x752a},
- {0x7a14, 0x6c79}, {0x7a17, 0x782d}, {0x7a19, 0x7242},
- {0x7a1a, 0x7643}, {0x7a1c, 0x5752}, {0x7a1f, 0x7922},
- {0x7a20, 0x7056}, {0x7a2e, 0x707a}, {0x7a31, 0x7660},
- {0x7a36, 0x6973}, {0x7a37, 0x7243}, {0x7a3b, 0x542b},
- {0x7a3c, 0x4a33}, {0x7a3d, 0x4d26}, {0x7a3f, 0x4d43},
- {0x7a40, 0x4d5a}, {0x7a46, 0x594f}, {0x7a49, 0x7644},
- {0x7a4d, 0x6e5d}, {0x7a4e, 0x6744}, {0x7a57, 0x6234},
- {0x7a61, 0x5f62}, {0x7a62, 0x675b}, {0x7a69, 0x6831},
- {0x7a6b, 0x7c2e}, {0x7a70, 0x654d}, {0x7a74, 0x7a6b},
- {0x7a76, 0x4f3c}, {0x7a79, 0x4f62}, {0x7a7a, 0x4d76},
- {0x7a7d, 0x6f70}, {0x7a7f, 0x743e}, {0x7a81, 0x544d},
- {0x7a84, 0x7338}, {0x7a88, 0x6921}, {0x7a92, 0x7272},
- {0x7a93, 0x736b}, {0x7a95, 0x7057}, {0x7a98, 0x4f57},
- {0x7a9f, 0x4f5f}, {0x7aa9, 0x6840}, {0x7aaa, 0x6841},
- {0x7aae, 0x4f63}, {0x7aaf, 0x6922}, {0x7aba, 0x502a},
- {0x7ac4, 0x7341}, {0x7ac5, 0x502b}, {0x7ac7, 0x5464},
- {0x7aca, 0x6f3c}, {0x7acb, 0x5821}, {0x7ad7, 0x595f},
- {0x7ad9, 0x7357}, {0x7add, 0x5c3d}, {0x7adf, 0x4c65},
- {0x7ae0, 0x6d71}, {0x7ae3, 0x7162}, {0x7ae5, 0x545b},
- {0x7aea, 0x6235}, {0x7aed, 0x4a66}, {0x7aef, 0x532e},
- {0x7af6, 0x4c66}, {0x7af9, 0x7153}, {0x7afa, 0x7567},
- {0x7aff, 0x4a5a}, {0x7b0f, 0x7b6e}, {0x7b11, 0x6145},
- {0x7b19, 0x5f69}, {0x7b1b, 0x6e5e}, {0x7b1e, 0x7742},
- {0x7b20, 0x5822}, {0x7b26, 0x5d2c}, {0x7b2c, 0x702f},
- {0x7b2d, 0x563d}, {0x7b39, 0x612b}, {0x7b46, 0x7936},
- {0x7b49, 0x5475}, {0x7b4b, 0x5049}, {0x7b4c, 0x6f27},
- {0x7b4d, 0x626c}, {0x7b4f, 0x5b6a}, {0x7b50, 0x4e4c},
- {0x7b51, 0x7568}, {0x7b52, 0x7755}, {0x7b54, 0x534d},
- {0x7b56, 0x737e}, {0x7b60, 0x5035}, {0x7b6c, 0x607e},
- {0x7b6e, 0x5f7b}, {0x7b75, 0x665d}, {0x7b7d, 0x6824},
- {0x7b87, 0x4b4d}, {0x7b8b, 0x6f28}, {0x7b8f, 0x6e34},
- {0x7b94, 0x5a58}, {0x7b95, 0x5139}, {0x7b97, 0x5f29},
- {0x7b9a, 0x7330}, {0x7b9d, 0x4c44}, {0x7ba1, 0x4e37},
- {0x7bad, 0x6f29}, {0x7bb1, 0x5f55}, {0x7bb4, 0x6d57},
- {0x7bb8, 0x6e46}, {0x7bc0, 0x6f3d}, {0x7bc1, 0x7c56},
- {0x7bc4, 0x5b74}, {0x7bc6, 0x6f2a}, {0x7bc7, 0x7839},
- {0x7bc9, 0x7569}, {0x7bd2, 0x6359}, {0x7be0, 0x6146},
- {0x7be4, 0x543f}, {0x7be9, 0x5e68}, {0x7c07, 0x706a},
- {0x7c12, 0x7342}, {0x7c1e, 0x532f}, {0x7c21, 0x4a5b},
- {0x7c27, 0x7c57}, {0x7c2a, 0x6d58}, {0x7c2b, 0x6147},
- {0x7c3d, 0x7458}, {0x7c3e, 0x5633}, {0x7c3f, 0x5d2d},
- {0x7c43, 0x553e}, {0x7c4c, 0x7143}, {0x7c4d, 0x6e5f},
- {0x7c60, 0x566b}, {0x7c64, 0x7459}, {0x7c6c, 0x5766},
- {0x7c73, 0x5a37}, {0x7c83, 0x5d7b}, {0x7c89, 0x5d4f},
- {0x7c92, 0x5823}, {0x7c95, 0x5a59}, {0x7c97, 0x7058},
- {0x7c98, 0x6f44}, {0x7c9f, 0x6158}, {0x7ca5, 0x7154},
- {0x7ca7, 0x6d72}, {0x7cae, 0x555b}, {0x7cb1, 0x555c},
- {0x7cb2, 0x7344}, {0x7cb3, 0x4b57}, {0x7cb9, 0x6236},
- {0x7cbe, 0x6f71}, {0x7cca, 0x7b55}, {0x7cd6, 0x5358},
- {0x7cde, 0x5d50}, {0x7cdf, 0x7059}, {0x7ce0, 0x4b33},
- {0x7ce7, 0x555d}, {0x7cfb, 0x4d27}, {0x7cfe, 0x502c},
- {0x7d00, 0x513a}, {0x7d02, 0x7144}, {0x7d04, 0x6533},
- {0x7d05, 0x7b75}, {0x7d06, 0x6961}, {0x7d07, 0x7d60},
- {0x7d08, 0x7c3c}, {0x7d0a, 0x5a22}, {0x7d0b, 0x5a23},
- {0x7d0d, 0x5221}, {0x7d10, 0x526f}, {0x7d14, 0x626d},
- {0x7d17, 0x5e69}, {0x7d18, 0x4e5c}, {0x7d19, 0x7235},
- {0x7d1a, 0x5064}, {0x7d1b, 0x5d51}, {0x7d20, 0x6148},
- {0x7d21, 0x5b37}, {0x7d22, 0x5f63}, {0x7d2b, 0x6d39},
- {0x7d2c, 0x7145}, {0x7d2e, 0x734f}, {0x7d2f, 0x572b},
- {0x7d30, 0x612c}, {0x7d33, 0x636b}, {0x7d35, 0x6e47},
- {0x7d39, 0x6149}, {0x7d3a, 0x4a7a}, {0x7d42, 0x707b},
- {0x7d43, 0x7a61}, {0x7d44, 0x705a}, {0x7d45, 0x4c67},
- {0x7d46, 0x5a74}, {0x7d50, 0x4c3f}, {0x7d5e, 0x4e6d},
- {0x7d61, 0x5529}, {0x7d62, 0x7a62}, {0x7d66, 0x5065},
- {0x7d68, 0x6b56}, {0x7d6a, 0x6c5f}, {0x7d6e, 0x5f7c},
- {0x7d71, 0x7756}, {0x7d72, 0x5e6a}, {0x7d73, 0x4b34},
- {0x7d76, 0x6f3e}, {0x7d79, 0x4c35}, {0x7d7f, 0x4f3d},
- {0x7d8e, 0x6f72}, {0x7d8f, 0x6237}, {0x7d93, 0x4c68},
- {0x7d9c, 0x707c}, {0x7da0, 0x5660}, {0x7da2, 0x7146},
- {0x7dac, 0x6238}, {0x7dad, 0x6b2b}, {0x7db1, 0x4b35},
- {0x7db2, 0x5851}, {0x7db4, 0x744e}, {0x7db5, 0x7377},
- {0x7db8, 0x5746}, {0x7dba, 0x513b}, {0x7dbb, 0x772a},
- {0x7dbd, 0x6d4a}, {0x7dbe, 0x5753}, {0x7dbf, 0x587a},
- {0x7dc7, 0x7645}, {0x7dca, 0x514c}, {0x7dcb, 0x5d7c},
- {0x7dd6, 0x5f7d}, {0x7dd8, 0x7965}, {0x7dda, 0x604a},
- {0x7ddd, 0x727d}, {0x7dde, 0x5330}, {0x7de0, 0x7473},
- {0x7de1, 0x5a49}, {0x7de3, 0x665e}, {0x7de8, 0x783a},
- {0x7de9, 0x6850}, {0x7dec, 0x587b}, {0x7def, 0x6a55},
- {0x7df4, 0x5623}, {0x7dfb, 0x7646}, {0x7e09, 0x725b},
- {0x7e0a, 0x647c}, {0x7e15, 0x6832}, {0x7e1b, 0x5a5a},
- {0x7e1d, 0x725c}, {0x7e1e, 0x7b56}, {0x7e1f, 0x6932},
- {0x7e21, 0x6e2d}, {0x7e23, 0x7a63}, {0x7e2b, 0x5c6e},
- {0x7e2e, 0x756a}, {0x7e2f, 0x6660}, {0x7e31, 0x707d},
- {0x7e37, 0x572c}, {0x7e3d, 0x7545}, {0x7e3e, 0x6e60},
- {0x7e41, 0x5b65}, {0x7e43, 0x5d5e}, {0x7e46, 0x5970},
- {0x7e47, 0x6923}, {0x7e52, 0x7179}, {0x7e54, 0x7244},
- {0x7e55, 0x604b}, {0x7e5e, 0x6924}, {0x7e61, 0x6239},
- {0x7e69, 0x6331}, {0x7e6a, 0x7c6b}, {0x7e6b, 0x4d28},
- {0x7e6d, 0x4c36}, {0x7e70, 0x705b}, {0x7e79, 0x663a},
- {0x7e7c, 0x4d29}, {0x7e82, 0x7343}, {0x7e8c, 0x6159},
- {0x7e8f, 0x6f2b}, {0x7e93, 0x6745}, {0x7e96, 0x6069},
- {0x7e98, 0x7345}, {0x7e9b, 0x5440}, {0x7e9c, 0x553f},
- {0x7f36, 0x5d2e}, {0x7f38, 0x797c}, {0x7f3a, 0x4c40},
- {0x7f4c, 0x6522}, {0x7f50, 0x4e38}, {0x7f54, 0x5852},
- {0x7f55, 0x7956}, {0x7f6a, 0x712a}, {0x7f6b, 0x4e51},
- {0x7f6e, 0x7647}, {0x7f70, 0x5b6b}, {0x7f72, 0x5f7e},
- {0x7f75, 0x5861}, {0x7f77, 0x7773}, {0x7f79, 0x5767},
- {0x7f85, 0x547e}, {0x7f88, 0x513c}, {0x7f8a, 0x654f},
- {0x7f8c, 0x4b36}, {0x7f8e, 0x5a38}, {0x7f94, 0x4d44},
- {0x7f9a, 0x563e}, {0x7f9e, 0x623a}, {0x7fa4, 0x4f58},
- {0x7fa8, 0x604c}, {0x7fa9, 0x6b79}, {0x7fb2, 0x7d7d},
- {0x7fb8, 0x5768}, {0x7fb9, 0x4b58}, {0x7fbd, 0x6962},
- {0x7fc1, 0x683a}, {0x7fc5, 0x6347}, {0x7fca, 0x6c4d},
- {0x7fcc, 0x6c4e}, {0x7fce, 0x563f}, {0x7fd2, 0x6327},
- {0x7fd4, 0x5f56}, {0x7fd5, 0x7d68}, {0x7fdf, 0x6e61},
- {0x7fe0, 0x7628}, {0x7fe1, 0x5d7d}, {0x7fe9, 0x783b},
- {0x7feb, 0x6851}, {0x7ff0, 0x7957}, {0x7ff9, 0x4e6e},
- {0x7ffc, 0x6c4f}, {0x8000, 0x6925}, {0x8001, 0x5655},
- {0x8003, 0x4d45}, {0x8005, 0x6d3a}, {0x8006, 0x513d},
- {0x8009, 0x4f3e}, {0x800c, 0x6c3b}, {0x8010, 0x5231},
- {0x8015, 0x4c69}, {0x8017, 0x5944}, {0x8018, 0x697c},
- {0x802d, 0x513e}, {0x8033, 0x6c3c}, {0x8036, 0x652d},
- {0x803d, 0x7730}, {0x803f, 0x4c6a}, {0x8043, 0x5344},
- {0x8046, 0x5640}, {0x804a, 0x567d}, {0x8056, 0x6121},
- {0x8058, 0x5e3d}, {0x805a, 0x7629}, {0x805e, 0x5a24},
- {0x806f, 0x5624}, {0x8070, 0x7546}, {0x8072, 0x6122},
- {0x8073, 0x6946}, {0x8077, 0x7245}, {0x807d, 0x7469},
- {0x807e, 0x566c}, {0x807f, 0x6b53}, {0x8084, 0x6c3d},
- {0x8085, 0x625c}, {0x8086, 0x5e6b}, {0x8087, 0x705c},
- {0x8089, 0x6b3f}, {0x808b, 0x574e}, {0x808c, 0x513f},
- {0x8096, 0x752b}, {0x809b, 0x797d}, {0x809d, 0x4a5c},
- {0x80a1, 0x4d46}, {0x80a2, 0x7236}, {0x80a5, 0x5d7e},
- {0x80a9, 0x4c37}, {0x80aa, 0x5b38}, {0x80af, 0x5069},
- {0x80b1, 0x4e5d}, {0x80b2, 0x6b40}, {0x80b4, 0x7d22},
- {0x80ba, 0x784b}, {0x80c3, 0x6a56}, {0x80c4, 0x7130},
- {0x80cc, 0x5b4e}, {0x80ce, 0x7743}, {0x80da, 0x5b4f},
- {0x80db, 0x4b24}, {0x80de, 0x7860}, {0x80e1, 0x7b57},
- {0x80e4, 0x6b4a}, {0x80e5, 0x6021}, {0x80f1, 0x4e4d},
- {0x80f4, 0x545c}, {0x80f8, 0x7d58}, {0x80fd, 0x5276},
- {0x8102, 0x7237}, {0x8105, 0x7a76}, {0x8106, 0x762a},
- {0x8107, 0x7a77}, {0x8108, 0x5866}, {0x810a, 0x7431},
- {0x8118, 0x6852}, {0x811a, 0x4a45}, {0x811b, 0x4c6b},
- {0x8123, 0x626e}, {0x8129, 0x623b}, {0x812b, 0x772d},
- {0x812f, 0x7861}, {0x8139, 0x736c}, {0x813e, 0x5e21},
- {0x814b, 0x647d}, {0x814e, 0x636c}, {0x8150, 0x5d2f},
- {0x8151, 0x5d30}, {0x8154, 0x4b37}, {0x8155, 0x6853},
- {0x8165, 0x6123}, {0x8166, 0x5260}, {0x816b, 0x707e},
- {0x8170, 0x6926}, {0x8171, 0x4b72}, {0x8178, 0x6d73},
- {0x8179, 0x5c59}, {0x817a, 0x604d}, {0x817f, 0x775a},
- {0x8180, 0x5b39}, {0x8188, 0x4c2e}, {0x818a, 0x5a5b},
- {0x818f, 0x4d47}, {0x819a, 0x5d31}, {0x819c, 0x582f},
- {0x819d, 0x6323}, {0x81a0, 0x4e6f}, {0x81a3, 0x7273},
- {0x81a8, 0x7833}, {0x81b3, 0x604e}, {0x81b5, 0x757d},
- {0x81ba, 0x6b6c}, {0x81bd, 0x5345}, {0x81be, 0x7c6c},
- {0x81bf, 0x525b}, {0x81c0, 0x546b}, {0x81c2, 0x5e22},
- {0x81c6, 0x6566}, {0x81cd, 0x7030}, {0x81d8, 0x5544},
- {0x81df, 0x6d74}, {0x81e3, 0x636d}, {0x81e5, 0x6842},
- {0x81e7, 0x6d75}, {0x81e8, 0x577c}, {0x81ea, 0x6d3b},
- {0x81ed, 0x762b}, {0x81f3, 0x7238}, {0x81f4, 0x7648},
- {0x81fa, 0x5366}, {0x81fb, 0x725d}, {0x81fc, 0x4f3f},
- {0x81fe, 0x6b2c}, {0x8205, 0x4f40}, {0x8207, 0x6628},
- {0x8208, 0x7d69}, {0x820a, 0x4f41}, {0x820c, 0x605f},
- {0x820d, 0x5e6c}, {0x8212, 0x6022}, {0x821b, 0x743f},
- {0x821c, 0x626f}, {0x821e, 0x5971}, {0x821f, 0x7147},
- {0x8221, 0x4b38}, {0x822a, 0x797e}, {0x822b, 0x5b3a},
- {0x822c, 0x5a75}, {0x8235, 0x766c}, {0x8236, 0x5a5c},
- {0x8237, 0x7a64}, {0x8239, 0x604f}, {0x8240, 0x5d32},
- {0x8245, 0x6629}, {0x8247, 0x6f73}, {0x8259, 0x736d},
- {0x8264, 0x6b7a}, {0x8266, 0x7966}, {0x826e, 0x4a5d},
- {0x826f, 0x555e}, {0x8271, 0x4a5e}, {0x8272, 0x5f64},
- {0x8276, 0x667d}, {0x8278, 0x752c}, {0x827e, 0x6475},
- {0x828b, 0x6963}, {0x828d, 0x6d4b}, {0x828e, 0x4f64},
- {0x8292, 0x5853}, {0x8299, 0x5d33}, {0x829a, 0x546c},
- {0x829d, 0x7239}, {0x829f, 0x5f37}, {0x82a5, 0x4b4e},
- {0x82a6, 0x7b58}, {0x82a9, 0x5059}, {0x82ac, 0x5d52},
- {0x82ad, 0x7774}, {0x82ae, 0x675c}, {0x82af, 0x6425},
- {0x82b1, 0x7c23}, {0x82b3, 0x5b3b}, {0x82b7, 0x723a},
- {0x82b8, 0x697d}, {0x82b9, 0x504a}, {0x82bb, 0x7556},
- {0x82bc, 0x5945}, {0x82bd, 0x6434}, {0x82bf, 0x6d27},
- {0x82d1, 0x6a3d}, {0x82d2, 0x667e}, {0x82d4, 0x7744},
- {0x82d5, 0x752d}, {0x82d7, 0x5960}, {0x82db, 0x4a34},
- {0x82de, 0x7862}, {0x82df, 0x4f42}, {0x82e1, 0x6c3e},
- {0x82e5, 0x6534}, {0x82e6, 0x4d48}, {0x82e7, 0x6e48},
- {0x82f1, 0x6748}, {0x82fd, 0x4d49}, {0x82fe, 0x7937},
- {0x8301, 0x7168}, {0x8302, 0x5972}, {0x8303, 0x5b75},
- {0x8304, 0x4a35}, {0x8305, 0x5946}, {0x8309, 0x5849},
- {0x8317, 0x592b}, {0x8328, 0x6d3c}, {0x832b, 0x5854},
- {0x832f, 0x5c5a}, {0x8331, 0x623c}, {0x8334, 0x7c6d},
- {0x8335, 0x6c60}, {0x8336, 0x527e}, {0x8338, 0x6947},
- {0x8339, 0x662a}, {0x8340, 0x6270}, {0x8347, 0x7a3b},
- {0x8349, 0x752e}, {0x834a, 0x7b2a}, {0x834f, 0x6c7b},
- {0x8351, 0x6c3f}, {0x8352, 0x7c58}, {0x8373, 0x5465},
- {0x8377, 0x7943}, {0x837b, 0x6e62}, {0x8389, 0x5769},
- {0x838a, 0x6d76}, {0x838e, 0x5e6d}, {0x8396, 0x4c6c},
- {0x8398, 0x636e}, {0x839e, 0x6854}, {0x83a2, 0x7a78},
- {0x83a9, 0x5d34}, {0x83aa, 0x6435}, {0x83ab, 0x5830},
- {0x83bd, 0x5855}, {0x83c1, 0x746a}, {0x83c5, 0x4e39},
- {0x83c9, 0x5661}, {0x83ca, 0x4f52}, {0x83cc, 0x5036},
- {0x83d3, 0x4e22}, {0x83d6, 0x736e}, {0x83dc, 0x7378},
- {0x83e9, 0x5c4c}, {0x83eb, 0x504b}, {0x83ef, 0x7c24},
- {0x83f0, 0x4d4a}, {0x83f1, 0x5754}, {0x83f2, 0x5e23},
- {0x83f4, 0x6460}, {0x83f9, 0x6e49}, {0x83fd, 0x625d},
- {0x8403, 0x757e}, {0x8404, 0x542c}, {0x840a, 0x5551},
- {0x840c, 0x5870}, {0x840d, 0x7843}, {0x840e, 0x6a57},
- {0x8429, 0x7557}, {0x842c, 0x583f}, {0x8431, 0x7d40},
- {0x8438, 0x6b2d}, {0x843d, 0x552a}, {0x8449, 0x6728},
- {0x8457, 0x6e4a}, {0x845b, 0x4a67}, {0x8461, 0x7863},
- {0x8463, 0x545d}, {0x8466, 0x6a58}, {0x846b, 0x7b59},
- {0x846c, 0x6d77}, {0x846f, 0x6535}, {0x8475, 0x502d},
- {0x847a, 0x7171}, {0x8490, 0x623d}, {0x8494, 0x6348},
- {0x8499, 0x5955}, {0x849c, 0x5f2a}, {0x84a1, 0x5b3c},
- {0x84b2, 0x7864}, {0x84b8, 0x717a}, {0x84bb, 0x6536},
- {0x84bc, 0x736f}, {0x84bf, 0x7b5a}, {0x84c0, 0x6160},
- {0x84c2, 0x592c}, {0x84c4, 0x756b}, {0x84c6, 0x6036},
- {0x84c9, 0x6948}, {0x84cb, 0x4b4f}, {0x84cd, 0x6349},
- {0x84d1, 0x5e6e}, {0x84da, 0x623e}, {0x84ec, 0x5c6f},
- {0x84ee, 0x5625}, {0x84f4, 0x6271}, {0x84fc, 0x567e},
- {0x8511, 0x5921}, {0x8513, 0x5840}, {0x8514, 0x5c5b},
- {0x8517, 0x6d3d}, {0x8518, 0x5f38}, {0x851a, 0x6a25},
- {0x851e, 0x572d}, {0x8521, 0x7379}, {0x8523, 0x6d78},
- {0x8525, 0x7547}, {0x852c, 0x614a}, {0x852d, 0x6b63},
- {0x852f, 0x725e}, {0x853d, 0x784c}, {0x853f, 0x6a59},
- {0x8541, 0x5346}, {0x8543, 0x5b66}, {0x8549, 0x752f},
- {0x854e, 0x4e70}, {0x8553, 0x697e}, {0x8559, 0x7b36},
- {0x8563, 0x6272}, {0x8568, 0x4f72}, {0x8569, 0x7739},
- {0x856a, 0x5973}, {0x856d, 0x614b}, {0x8584, 0x5a5d},
- {0x8587, 0x5a39}, {0x858f, 0x6b7b}, {0x8591, 0x4b39},
- {0x8594, 0x6d79}, {0x859b, 0x6060}, {0x85a6, 0x7440},
- {0x85a8, 0x7d3c}, {0x85a9, 0x5f31}, {0x85aa, 0x636f},
- {0x85af, 0x6023}, {0x85b0, 0x7d39}, {0x85ba, 0x7031},
- {0x85c1, 0x4d4b}, {0x85c9, 0x6d3e}, {0x85cd, 0x5540},
- {0x85ce, 0x6370}, {0x85cf, 0x6d7a}, {0x85d5, 0x6964},
- {0x85dc, 0x556d}, {0x85dd, 0x675d}, {0x85e4, 0x5476},
- {0x85e5, 0x6537}, {0x85e9, 0x5b67}, {0x85ea, 0x623f},
- {0x85f7, 0x6e4b}, {0x85fa, 0x5774}, {0x85fb, 0x705d},
- {0x85ff, 0x4e2b}, {0x8602, 0x675e}, {0x8606, 0x5656},
- {0x8607, 0x614c}, {0x860a, 0x6833}, {0x8616, 0x656e},
- {0x8617, 0x5c22}, {0x861a, 0x6050}, {0x862d, 0x5535},
- {0x863f, 0x5521}, {0x864e, 0x7b5b}, {0x8650, 0x794b},
- {0x8654, 0x4b73}, {0x8655, 0x7425}, {0x865b, 0x7a48},
- {0x865c, 0x5657}, {0x865e, 0x6965}, {0x865f, 0x7b5c},
- {0x8667, 0x7d50}, {0x8679, 0x7b76}, {0x868a, 0x5a25},
- {0x868c, 0x5b3d}, {0x8693, 0x6c62}, {0x86a3, 0x4d77},
- {0x86a4, 0x705e}, {0x86a9, 0x7649}, {0x86c7, 0x5e6f},
- {0x86cb, 0x5331}, {0x86d4, 0x7c6e}, {0x86d9, 0x6843},
- {0x86db, 0x7148}, {0x86df, 0x4e71}, {0x86e4, 0x796d},
- {0x86ed, 0x7274}, {0x86fe, 0x6436}, {0x8700, 0x7539},
- {0x8702, 0x5c70}, {0x8703, 0x6371}, {0x8708, 0x6825},
- {0x8718, 0x723b}, {0x871a, 0x5e24}, {0x871c, 0x5a4c},
- {0x874e, 0x4a69}, {0x8755, 0x635a}, {0x8757, 0x7c59},
- {0x875f, 0x6a5a}, {0x8766, 0x7944}, {0x8768, 0x6324},
- {0x8774, 0x7b5d}, {0x8776, 0x6f4a}, {0x8778, 0x6844},
- {0x8782, 0x554c}, {0x878d, 0x6b57}, {0x879f, 0x592d},
- {0x87a2, 0x7b2b}, {0x87b3, 0x5359}, {0x87ba, 0x5522},
- {0x87c4, 0x765e}, {0x87e0, 0x5a76}, {0x87ec, 0x6051},
- {0x87ef, 0x6928}, {0x87f2, 0x7579}, {0x87f9, 0x7a2f},
- {0x87fb, 0x6b7c}, {0x87fe, 0x606a}, {0x8805, 0x6332},
- {0x881f, 0x5545}, {0x8822, 0x7163}, {0x8823, 0x556e},
- {0x8831, 0x4d4c}, {0x8836, 0x6d59}, {0x883b, 0x5841},
- {0x8840, 0x7a6c}, {0x8846, 0x716b}, {0x884c, 0x7a3c},
- {0x884d, 0x6662}, {0x8852, 0x7a65}, {0x8853, 0x627a},
- {0x8857, 0x4a36}, {0x8859, 0x6437}, {0x885b, 0x6a5b},
- {0x885d, 0x757a}, {0x8861, 0x7b2c}, {0x8862, 0x4f43},
- {0x8863, 0x6b7d}, {0x8868, 0x787a}, {0x886b, 0x5f39},
- {0x8870, 0x6171}, {0x8872, 0x5224}, {0x8877, 0x757b},
- {0x887e, 0x505a}, {0x887f, 0x505b}, {0x8881, 0x6a3e},
- {0x8882, 0x5931}, {0x8888, 0x4a37}, {0x888b, 0x5367},
- {0x888d, 0x7865}, {0x8892, 0x5332}, {0x8896, 0x6240},
- {0x8897, 0x725f}, {0x889e, 0x4d65}, {0x88ab, 0x792c},
- {0x88b4, 0x4d4d}, {0x88c1, 0x6e2e}, {0x88c2, 0x562e},
- {0x88cf, 0x576a}, {0x88d4, 0x6760}, {0x88d5, 0x6b2e},
- {0x88d9, 0x4f59}, {0x88dc, 0x5c4d}, {0x88dd, 0x6d7b},
- {0x88df, 0x5e70}, {0x88e1, 0x576b}, {0x88e8, 0x5e25},
- {0x88f3, 0x5f57}, {0x88f4, 0x5b50}, {0x88f5, 0x5b51},
- {0x88f8, 0x5523}, {0x88fd, 0x7032}, {0x8907, 0x5c5c},
- {0x8910, 0x4a68}, {0x8912, 0x7866}, {0x8913, 0x5c4e},
- {0x8918, 0x6a5c}, {0x8919, 0x5b52}, {0x8925, 0x6933},
- {0x892a, 0x775b}, {0x8936, 0x6328}, {0x8938, 0x572e},
- {0x893b, 0x6061}, {0x8941, 0x4b3a}, {0x8944, 0x6551},
- {0x895f, 0x505c}, {0x8964, 0x5541}, {0x896a, 0x584a},
- {0x8972, 0x6329}, {0x897f, 0x6024}, {0x8981, 0x6929},
- {0x8983, 0x5347}, {0x8986, 0x5c5d}, {0x8987, 0x782e},
- {0x898b, 0x4c38}, {0x898f, 0x502e}, {0x8993, 0x5872},
- {0x8996, 0x634a}, {0x89a1, 0x4c2f}, {0x89a9, 0x542d},
- {0x89aa, 0x7651}, {0x89b2, 0x504c}, {0x89ba, 0x4a46},
- {0x89bd, 0x5542}, {0x89c0, 0x4e3a}, {0x89d2, 0x4a47},
- {0x89e3, 0x7a30}, {0x89f4, 0x5f58}, {0x89f8, 0x753a},
- {0x8a00, 0x656b}, {0x8a02, 0x6f74}, {0x8a03, 0x5d35},
- {0x8a08, 0x4d2a}, {0x8a0a, 0x6372}, {0x8a0c, 0x7b77},
- {0x8a0e, 0x7750}, {0x8a13, 0x7d3a}, {0x8a16, 0x7d61},
- {0x8a17, 0x767e}, {0x8a18, 0x5140}, {0x8a1b, 0x6845},
- {0x8a1d, 0x6438}, {0x8a1f, 0x6168}, {0x8a23, 0x4c41},
- {0x8a25, 0x526d}, {0x8a2a, 0x5b3e}, {0x8a2d, 0x6062},
- {0x8a31, 0x7a49}, {0x8a34, 0x614d}, {0x8a36, 0x4a38},
- {0x8a3a, 0x7260}, {0x8a3b, 0x7149}, {0x8a50, 0x5e71},
- {0x8a54, 0x705f}, {0x8a55, 0x7844}, {0x8a5b, 0x6e4c},
- {0x8a5e, 0x5e72}, {0x8a60, 0x6749}, {0x8a62, 0x6273},
- {0x8a63, 0x6761}, {0x8a66, 0x634b}, {0x8a69, 0x634c},
- {0x8a6d, 0x4f78}, {0x8a6e, 0x6f2c}, {0x8a70, 0x7d7e},
- {0x8a71, 0x7c25}, {0x8a72, 0x7a31}, {0x8a73, 0x5f59},
- {0x8a75, 0x6052}, {0x8a79, 0x745a}, {0x8a85, 0x714a},
- {0x8a87, 0x4e23}, {0x8a8c, 0x723c}, {0x8a8d, 0x6c63},
- {0x8a93, 0x6025}, {0x8a95, 0x772b}, {0x8a98, 0x6b2f},
- {0x8a9e, 0x655e}, {0x8aa0, 0x6124}, {0x8aa1, 0x4d2b},
- {0x8aa3, 0x5974}, {0x8aa4, 0x6826}, {0x8aa5, 0x4d4e},
- {0x8aa6, 0x6169}, {0x8aa8, 0x7c6f}, {0x8aaa, 0x6063},
- {0x8ab0, 0x6241}, {0x8ab2, 0x4e24}, {0x8ab9, 0x5e26},
- {0x8abc, 0x6b7e}, {0x8abe, 0x6b5d}, {0x8abf, 0x7060},
- {0x8ac2, 0x745b}, {0x8ac4, 0x6274}, {0x8ac7, 0x5348},
- {0x8acb, 0x746b}, {0x8acd, 0x6e35}, {0x8acf, 0x7558},
- {0x8ad2, 0x555f}, {0x8ad6, 0x5665}, {0x8adb, 0x6b30},
- {0x8adc, 0x7463}, {0x8ae1, 0x634d}, {0x8ae6, 0x7474},
- {0x8ae7, 0x7a32}, {0x8aea, 0x6f75}, {0x8aeb, 0x4a5f},
- {0x8aed, 0x6b31}, {0x8aee, 0x6d3f}, {0x8af1, 0x7d49},
- {0x8af6, 0x6426}, {0x8af7, 0x7924}, {0x8af8, 0x7033},
- {0x8afa, 0x656c}, {0x8afe, 0x5167}, {0x8b00, 0x5947},
- {0x8b01, 0x6457}, {0x8b02, 0x6a5d}, {0x8b04, 0x5477},
- {0x8b0e, 0x5a3a}, {0x8b10, 0x5a4d}, {0x8b14, 0x794c},
- {0x8b16, 0x615a}, {0x8b17, 0x5b3f}, {0x8b19, 0x4c45},
- {0x8b1a, 0x6c50}, {0x8b1b, 0x4b3b}, {0x8b1d, 0x5e73},
- {0x8b20, 0x692a}, {0x8b28, 0x5948}, {0x8b2b, 0x6e63},
- {0x8b2c, 0x573d}, {0x8b33, 0x4f44}, {0x8b39, 0x504d},
- {0x8b41, 0x7c26}, {0x8b49, 0x717b}, {0x8b4e, 0x7d52},
- {0x8b4f, 0x5141}, {0x8b58, 0x635b}, {0x8b5a, 0x5349},
- {0x8b5c, 0x5c4f}, {0x8b66, 0x4c6d}, {0x8b6c, 0x5e27},
- {0x8b6f, 0x663b}, {0x8b70, 0x6c21}, {0x8b74, 0x4c39},
- {0x8b77, 0x7b5e}, {0x8b7d, 0x6762}, {0x8b80, 0x5441},
- {0x8b8a, 0x5c28}, {0x8b90, 0x6242}, {0x8b92, 0x7358},
- {0x8b93, 0x6553}, {0x8b96, 0x7359}, {0x8b9a, 0x7346},
- {0x8c37, 0x4d5b}, {0x8c3f, 0x4d2c}, {0x8c41, 0x7c43},
- {0x8c46, 0x5467}, {0x8c48, 0x5142}, {0x8c4a, 0x7925},
- {0x8c4c, 0x6855}, {0x8c55, 0x634e}, {0x8c5a, 0x544a},
- {0x8c61, 0x5f5a}, {0x8c6a, 0x7b5f}, {0x8c6b, 0x6763},
- {0x8c79, 0x787b}, {0x8c7a, 0x634f}, {0x8c82, 0x7530},
- {0x8c8a, 0x5867}, {0x8c8c, 0x5949}, {0x8c9d, 0x782f},
- {0x8c9e, 0x6f76}, {0x8ca0, 0x5d36}, {0x8ca1, 0x6e2f},
- {0x8ca2, 0x4d78}, {0x8ca7, 0x5e38}, {0x8ca8, 0x7c27},
- {0x8ca9, 0x777c}, {0x8caa, 0x7731}, {0x8cab, 0x4e3b},
- {0x8cac, 0x7421}, {0x8caf, 0x6e4d}, {0x8cb0, 0x612e},
- {0x8cb3, 0x6c43}, {0x8cb4, 0x4f7e}, {0x8cb6, 0x783f},
- {0x8cb7, 0x5862}, {0x8cb8, 0x5368}, {0x8cbb, 0x5e28},
- {0x8cbc, 0x7464}, {0x8cbd, 0x6c42}, {0x8cbf, 0x5975},
- {0x8cc0, 0x7945}, {0x8cc1, 0x5d53}, {0x8cc2, 0x5671},
- {0x8cc3, 0x6c7c}, {0x8cc4, 0x7c70}, {0x8cc7, 0x6d40},
- {0x8cc8, 0x4a39}, {0x8cca, 0x6e64}, {0x8cd1, 0x7261},
- {0x8cd3, 0x5e39}, {0x8cda, 0x5672}, {0x8cdc, 0x5e74},
- {0x8cde, 0x5f5b}, {0x8ce0, 0x5b53}, {0x8ce2, 0x7a67},
- {0x8ce3, 0x5863}, {0x8ce4, 0x7441}, {0x8ce6, 0x5d37},
- {0x8cea, 0x7275}, {0x8ced, 0x542e}, {0x8cf4, 0x5673},
- {0x8cfb, 0x5d38}, {0x8cfc, 0x4f45}, {0x8cfd, 0x5f5f},
- {0x8d04, 0x723e}, {0x8d05, 0x7621}, {0x8d07, 0x6b4b},
- {0x8d08, 0x717c}, {0x8d0a, 0x7347}, {0x8d0d, 0x606b},
- {0x8d13, 0x6d7c}, {0x8d16, 0x615b}, {0x8d64, 0x6e65},
- {0x8d66, 0x5e75}, {0x8d6b, 0x7a53}, {0x8d70, 0x714b},
- {0x8d73, 0x502f}, {0x8d74, 0x5d39}, {0x8d77, 0x5143},
- {0x8d85, 0x7531}, {0x8d8a, 0x6a46}, {0x8d99, 0x7061},
- {0x8da3, 0x762c}, {0x8da8, 0x7559}, {0x8db3, 0x706b},
- {0x8dba, 0x5d3a}, {0x8dbe, 0x723f}, {0x8dc6, 0x7745},
- {0x8dcb, 0x5b22}, {0x8dcc, 0x7276}, {0x8dcf, 0x4a3a},
- {0x8ddb, 0x7775}, {0x8ddd, 0x4b65}, {0x8de1, 0x6e66},
- {0x8de3, 0x6053}, {0x8de8, 0x4e25}, {0x8def, 0x5658},
- {0x8df3, 0x542f}, {0x8e0a, 0x6949}, {0x8e0f, 0x534e},
- {0x8e10, 0x7442}, {0x8e1e, 0x4b66}, {0x8e2a, 0x7121},
- {0x8e30, 0x6b32}, {0x8e35, 0x7122}, {0x8e42, 0x6b33},
- {0x8e44, 0x7034}, {0x8e47, 0x4b74}, {0x8e48, 0x5430},
- {0x8e49, 0x7332}, {0x8e4a, 0x7b37}, {0x8e59, 0x756c},
- {0x8e5f, 0x6e67}, {0x8e60, 0x7432}, {0x8e74, 0x756d},
- {0x8e76, 0x4f73}, {0x8e81, 0x7062}, {0x8e87, 0x6e4e},
- {0x8e8a, 0x714c}, {0x8e8d, 0x6538}, {0x8eaa, 0x5775},
- {0x8eab, 0x6373}, {0x8eac, 0x4f65}, {0x8ec0, 0x4f46},
- {0x8eca, 0x7333}, {0x8ecb, 0x6458}, {0x8ecc, 0x4f79},
- {0x8ecd, 0x4f5a}, {0x8ed2, 0x7a4d}, {0x8edf, 0x6663},
- {0x8eeb, 0x7262}, {0x8ef8, 0x756e}, {0x8efb, 0x4a3b},
- {0x8efe, 0x635c}, {0x8f03, 0x4e72}, {0x8f05, 0x5659},
- {0x8f09, 0x6e30}, {0x8f12, 0x7465}, {0x8f13, 0x5842},
- {0x8f14, 0x5c50}, {0x8f15, 0x4c6e}, {0x8f1b, 0x5560},
- {0x8f1c, 0x764a}, {0x8f1d, 0x7d4a}, {0x8f1e, 0x5856},
- {0x8f1f, 0x744f}, {0x8f26, 0x5626}, {0x8f27, 0x5c3e},
- {0x8f29, 0x5b54}, {0x8f2a, 0x5747}, {0x8f2f, 0x727e},
- {0x8f33, 0x714d}, {0x8f38, 0x6243}, {0x8f39, 0x5c5e},
- {0x8f3b, 0x5c5f}, {0x8f3e, 0x6f2d}, {0x8f3f, 0x662b},
- {0x8f44, 0x795d}, {0x8f45, 0x6a3f}, {0x8f49, 0x6f2e},
- {0x8f4d, 0x7450}, {0x8f4e, 0x4e73}, {0x8f5d, 0x662c},
- {0x8f5f, 0x4e5e}, {0x8f62, 0x5579}, {0x8f9b, 0x6374},
- {0x8f9c, 0x4d50}, {0x8fa3, 0x5538}, {0x8fa6, 0x777d},
- {0x8fa8, 0x5c29}, {0x8fad, 0x5e76}, {0x8faf, 0x5c2a},
- {0x8fb0, 0x7263}, {0x8fb1, 0x6934}, {0x8fb2, 0x525c},
- {0x8fc2, 0x6966}, {0x8fc5, 0x6376}, {0x8fce, 0x674a},
- {0x8fd1, 0x504e}, {0x8fd4, 0x5a77}, {0x8fe6, 0x4a3c},
- {0x8fea, 0x6e68}, {0x8feb, 0x5a5e}, {0x8fed, 0x7277},
- {0x8ff0, 0x627b}, {0x8ff2, 0x4c26}, {0x8ff7, 0x5a3b},
- {0x8ff9, 0x6e69}, {0x8ffd, 0x755a}, {0x9000, 0x775c},
- {0x9001, 0x616a}, {0x9002, 0x4e41}, {0x9003, 0x5431},
- {0x9005, 0x7d31}, {0x9006, 0x663d}, {0x9008, 0x7b2d},
- {0x900b, 0x7867}, {0x900d, 0x614e}, {0x900f, 0x7762},
- {0x9010, 0x756f}, {0x9011, 0x4f47}, {0x9014, 0x5432},
- {0x9015, 0x4c6f}, {0x9017, 0x5468}, {0x9019, 0x6e4f},
- {0x901a, 0x7757}, {0x901d, 0x6026}, {0x901e, 0x5641},
- {0x901f, 0x615c}, {0x9020, 0x7063}, {0x9021, 0x7164},
- {0x9022, 0x5c71}, {0x9023, 0x5627}, {0x902e, 0x7475},
- {0x9031, 0x714e}, {0x9032, 0x7264}, {0x9035, 0x5030},
- {0x9038, 0x6c6f}, {0x903c, 0x793a}, {0x903e, 0x6b35},
- {0x9041, 0x546d}, {0x9042, 0x6244}, {0x9047, 0x6967},
- {0x904a, 0x6b34}, {0x904b, 0x6a21}, {0x904d, 0x783c},
- {0x904e, 0x4e26}, {0x9050, 0x7946}, {0x9051, 0x7c5a},
- {0x9053, 0x5433}, {0x9054, 0x5339}, {0x9055, 0x6a5e},
- {0x9059, 0x692b}, {0x905c, 0x6161}, {0x905d, 0x534f},
- {0x905e, 0x7476}, {0x9060, 0x6a40}, {0x9061, 0x614f},
- {0x9063, 0x4c3a}, {0x9069, 0x6e6a}, {0x906d, 0x7064},
- {0x906e, 0x7334}, {0x906f, 0x546e}, {0x9072, 0x7240},
- {0x9075, 0x7165}, {0x9077, 0x7443}, {0x9078, 0x6054},
- {0x907a, 0x6b36}, {0x907c, 0x5721}, {0x907d, 0x4b68},
- {0x907f, 0x792d}, {0x9080, 0x692d}, {0x9081, 0x5864},
- {0x9082, 0x7a33}, {0x9083, 0x6245}, {0x9084, 0x7c3d},
- {0x9087, 0x6c44}, {0x9088, 0x5831}, {0x908a, 0x5c2b},
- {0x908f, 0x5524}, {0x9091, 0x6b69}, {0x9095, 0x683b},
- {0x9099, 0x5857}, {0x90a2, 0x7b2e}, {0x90a3, 0x5161},
- {0x90a6, 0x5b40}, {0x90a8, 0x753e}, {0x90aa, 0x5e77},
- {0x90af, 0x4a7b}, {0x90b0, 0x7746}, {0x90b1, 0x4f48},
- {0x90b5, 0x6150}, {0x90b8, 0x6e50}, {0x90c1, 0x6974},
- {0x90ca, 0x4e74}, {0x90de, 0x554d}, {0x90e1, 0x4f5b},
- {0x90e8, 0x5d3b}, {0x90ed, 0x4e2c}, {0x90f5, 0x6968},
- {0x90fd, 0x5434}, {0x9102, 0x6447}, {0x9112, 0x755b},
- {0x9115, 0x7a41}, {0x9119, 0x5e29}, {0x9127, 0x5478},
- {0x912d, 0x6f77}, {0x9132, 0x5333}, {0x9149, 0x6b37},
- {0x914a, 0x6f78}, {0x914b, 0x755c}, {0x914c, 0x6d4c},
- {0x914d, 0x5b55}, {0x914e, 0x714f}, {0x9152, 0x7150},
- {0x9162, 0x7532}, {0x9169, 0x592e}, {0x916a, 0x552c},
- {0x916c, 0x6246}, {0x9175, 0x7d23}, {0x9177, 0x7b65},
- {0x9178, 0x5f2b}, {0x9187, 0x6275}, {0x9189, 0x762d},
- {0x918b, 0x7533}, {0x918d, 0x7035}, {0x9192, 0x6125},
- {0x919c, 0x755d}, {0x91ab, 0x6c22}, {0x91ac, 0x6d7d},
- {0x91ae, 0x7534}, {0x91af, 0x7b38}, {0x91b1, 0x5b23},
- {0x91b4, 0x564a}, {0x91b5, 0x4b59}, {0x91c0, 0x6554},
- {0x91c7, 0x737a}, {0x91c9, 0x6b38}, {0x91cb, 0x6037},
- {0x91cc, 0x576c}, {0x91cd, 0x716c}, {0x91ce, 0x652f},
- {0x91cf, 0x5561}, {0x91d0, 0x576d}, {0x91d1, 0x5151},
- {0x91d7, 0x6172}, {0x91d8, 0x6f79}, {0x91dc, 0x5d3c},
- {0x91dd, 0x765c}, {0x91e3, 0x7065}, {0x91e7, 0x7444},
- {0x91ea, 0x6969}, {0x91f5, 0x737b}, {0x920d, 0x546f},
- {0x9210, 0x4c22}, {0x9211, 0x777e}, {0x9212, 0x5f3c},
- {0x9217, 0x6b4d}, {0x921e, 0x5037}, {0x9234, 0x5642},
- {0x923a, 0x682d}, {0x923f, 0x6f2f}, {0x9240, 0x4b25},
- {0x9245, 0x4b69}, {0x9249, 0x7a68}, {0x9257, 0x4c46},
- {0x925b, 0x6667}, {0x925e, 0x6a47}, {0x9262, 0x5b24},
- {0x9264, 0x4f49}, {0x9265, 0x627c}, {0x9266, 0x6f7a},
- {0x9280, 0x6b5e}, {0x9283, 0x7548}, {0x9285, 0x545e},
- {0x9291, 0x6055}, {0x9293, 0x6f30}, {0x9296, 0x6247},
- {0x9298, 0x592f}, {0x929c, 0x7967}, {0x92b3, 0x6765},
- {0x92b6, 0x4f4a}, {0x92b7, 0x6151}, {0x92b9, 0x6248},
- {0x92cc, 0x6f7b}, {0x92cf, 0x7a79}, {0x92d2, 0x5c72},
- {0x92e4, 0x6027}, {0x92ea, 0x7868}, {0x92f8, 0x4b6a},
- {0x92fc, 0x4b3c}, {0x9304, 0x5662}, {0x9310, 0x755e},
- {0x9318, 0x755f}, {0x931a, 0x6e36}, {0x931e, 0x6276},
- {0x931f, 0x534a}, {0x9320, 0x6f7c}, {0x9321, 0x5144},
- {0x9322, 0x6f31}, {0x9324, 0x5145}, {0x9326, 0x505e},
- {0x9328, 0x5961}, {0x932b, 0x6038}, {0x932e, 0x4d51},
- {0x932f, 0x7339}, {0x9348, 0x674c}, {0x934a, 0x5628},
- {0x934b, 0x4e27}, {0x934d, 0x5435}, {0x9354, 0x6448},
- {0x935b, 0x5334}, {0x936e, 0x6b39}, {0x9375, 0x4b75},
- {0x937c, 0x765d}, {0x937e, 0x7123}, {0x938c, 0x4c47},
- {0x9394, 0x694a}, {0x9396, 0x6170}, {0x939a, 0x7560},
- {0x93a3, 0x7b2f}, {0x93a7, 0x4b51}, {0x93ac, 0x7b60},
- {0x93ad, 0x7265}, {0x93b0, 0x6c70}, {0x93c3, 0x706c},
- {0x93d1, 0x6e6b}, {0x93de, 0x694b}, {0x93e1, 0x4c70},
- {0x93e4, 0x572f}, {0x93f6, 0x7321}, {0x9404, 0x7c75},
- {0x9418, 0x7124}, {0x9425, 0x6056}, {0x942b, 0x6f32},
- {0x9435, 0x7451}, {0x9438, 0x7721}, {0x9444, 0x7151},
- {0x9451, 0x4a7c}, {0x9452, 0x4a7d}, {0x945b, 0x4e4e},
- {0x947d, 0x7348}, {0x947f, 0x733a}, {0x9577, 0x6d7e},
- {0x9580, 0x5a26}, {0x9583, 0x606c}, {0x9589, 0x784d},
- {0x958b, 0x4b52}, {0x958f, 0x6b4e}, {0x9591, 0x7958},
- {0x9592, 0x7959}, {0x9593, 0x4a60}, {0x9594, 0x5a4a},
- {0x9598, 0x4b26}, {0x95a3, 0x4a48}, {0x95a4, 0x796e},
- {0x95a5, 0x5b6c}, {0x95a8, 0x5031}, {0x95ad, 0x556f},
- {0x95b1, 0x6673}, {0x95bb, 0x6722}, {0x95bc, 0x6459},
- {0x95c7, 0x6461}, {0x95ca, 0x7c44}, {0x95d4, 0x796f},
- {0x95d5, 0x4f74}, {0x95d6, 0x7766}, {0x95dc, 0x4e3c},
- {0x95e1, 0x7445}, {0x95e2, 0x5c23}, {0x961c, 0x5d3d},
- {0x9621, 0x7446}, {0x962a, 0x7821}, {0x962e, 0x6856},
- {0x9632, 0x5b41}, {0x963b, 0x7066}, {0x963f, 0x6439},
- {0x9640, 0x766d}, {0x9642, 0x792e}, {0x9644, 0x5d3e},
- {0x964b, 0x5730}, {0x964c, 0x5868}, {0x964d, 0x4b3d},
- {0x9650, 0x795a}, {0x965b, 0x784e}, {0x965c, 0x7970},
- {0x965d, 0x606d}, {0x965e, 0x6333}, {0x965f, 0x7433},
- {0x9662, 0x6a42}, {0x9663, 0x7266}, {0x9664, 0x7036},
- {0x966a, 0x5b56}, {0x9670, 0x6b64}, {0x9673, 0x7267},
- {0x9675, 0x5755}, {0x9676, 0x5436}, {0x9677, 0x7968},
- {0x9678, 0x5741}, {0x967d, 0x6555}, {0x9685, 0x696a},
- {0x9686, 0x574c}, {0x968a, 0x5369}, {0x968b, 0x6249},
- {0x968d, 0x7c5b}, {0x968e, 0x4d2d}, {0x9694, 0x4c30},
- {0x9695, 0x6a22}, {0x9698, 0x6476}, {0x9699, 0x5040},
- {0x969b, 0x7037}, {0x969c, 0x6e21}, {0x96a3, 0x5776},
- {0x96a7, 0x624a}, {0x96a8, 0x624b}, {0x96aa, 0x7a4f},
- {0x96b1, 0x6b5f}, {0x96b7, 0x564b}, {0x96bb, 0x7434},
- {0x96c0, 0x6d4d}, {0x96c1, 0x6452}, {0x96c4, 0x6a29},
- {0x96c5, 0x643a}, {0x96c6, 0x7322}, {0x96c7, 0x4d52},
- {0x96c9, 0x764b}, {0x96cb, 0x7166}, {0x96cc, 0x6d41},
- {0x96cd, 0x683c}, {0x96ce, 0x6e51}, {0x96d5, 0x7067},
- {0x96d6, 0x624c}, {0x96d9, 0x642a}, {0x96db, 0x7561},
- {0x96dc, 0x6d5a}, {0x96e2, 0x576e}, {0x96e3, 0x5171},
- {0x96e8, 0x696b}, {0x96e9, 0x696c}, {0x96ea, 0x6064},
- {0x96ef, 0x5a27}, {0x96f0, 0x5d54}, {0x96f2, 0x6a23},
- {0x96f6, 0x5643}, {0x96f7, 0x5674}, {0x96f9, 0x5a5f},
- {0x96fb, 0x6f33}, {0x9700, 0x624d}, {0x9706, 0x6f7d},
- {0x9707, 0x7268}, {0x9711, 0x6f45}, {0x9713, 0x6767},
- {0x9716, 0x577d}, {0x9719, 0x674e}, {0x971c, 0x5f5c},
- {0x971e, 0x7947}, {0x9727, 0x5976}, {0x9730, 0x5f2c},
- {0x9732, 0x565a}, {0x9739, 0x5c24}, {0x973d, 0x7038},
- {0x9742, 0x557a}, {0x9744, 0x6477}, {0x9748, 0x5644},
- {0x9751, 0x746c}, {0x9756, 0x6f7e}, {0x975c, 0x7021},
- {0x975e, 0x5e2a}, {0x9761, 0x5a3c}, {0x9762, 0x587c},
- {0x9769, 0x7a54}, {0x976d, 0x6c65}, {0x9774, 0x7c28},
- {0x9777, 0x6c66}, {0x977a, 0x584b}, {0x978b, 0x7b39},
- {0x978d, 0x6453}, {0x978f, 0x4d79}, {0x97a0, 0x4f53},
- {0x97a8, 0x4a6a}, {0x97ab, 0x4f54}, {0x97ad, 0x783d},
- {0x97c6, 0x7447}, {0x97cb, 0x6a5f}, {0x97d3, 0x795b},
- {0x97dc, 0x5437}, {0x97f3, 0x6b65}, {0x97f6, 0x6152},
- {0x97fb, 0x6a24}, {0x97ff, 0x7a42}, {0x9800, 0x7b61},
- {0x9801, 0x7a6d}, {0x9802, 0x7022}, {0x9803, 0x4c71},
- {0x9805, 0x7a23}, {0x9806, 0x6277}, {0x9808, 0x624e},
- {0x980a, 0x6975}, {0x980c, 0x616b}, {0x9810, 0x6768},
- {0x9811, 0x6857}, {0x9812, 0x5a78}, {0x9813, 0x544b},
- {0x9817, 0x7776}, {0x9818, 0x5645}, {0x982d, 0x5469},
- {0x9830, 0x7a7a}, {0x9838, 0x4c72}, {0x9839, 0x775d},
- {0x983b, 0x5e3a}, {0x9846, 0x4e28}, {0x984c, 0x7039},
- {0x984d, 0x647e}, {0x984e, 0x6449}, {0x9854, 0x6454},
- {0x9858, 0x6a43}, {0x985a, 0x6f34}, {0x985e, 0x573e},
- {0x9865, 0x7b62}, {0x9867, 0x4d53}, {0x986b, 0x6f35},
- {0x986f, 0x7a69}, {0x98a8, 0x7926}, {0x98af, 0x5f3d},
- {0x98b1, 0x7747}, {0x98c4, 0x787d}, {0x98c7, 0x787c},
- {0x98db, 0x5e2b}, {0x98dc, 0x5b68}, {0x98df, 0x635d},
- {0x98e1, 0x6162}, {0x98e2, 0x5146}, {0x98ed, 0x7650},
- {0x98ee, 0x6b66}, {0x98ef, 0x5a79}, {0x98f4, 0x6c47},
- {0x98fc, 0x5e78}, {0x98fd, 0x7869}, {0x98fe, 0x635e},
- {0x9903, 0x4e75}, {0x9909, 0x7a43}, {0x990a, 0x6557},
- {0x990c, 0x6c48}, {0x9910, 0x7349}, {0x9913, 0x643b},
- {0x9918, 0x662e}, {0x991e, 0x6f36}, {0x9920, 0x5c3f},
- {0x9928, 0x4e3d}, {0x9945, 0x5843}, {0x9949, 0x504f},
- {0x994b, 0x4f7a}, {0x994c, 0x734a}, {0x994d, 0x6057},
- {0x9951, 0x5147}, {0x9952, 0x692e}, {0x9954, 0x683d},
- {0x9957, 0x7a44}, {0x9996, 0x624f}, {0x9999, 0x7a45},
- {0x999d, 0x7938}, {0x99a5, 0x5c60}, {0x99a8, 0x7b30},
- {0x99ac, 0x5829}, {0x99ad, 0x655f}, {0x99ae, 0x7927},
- {0x99b1, 0x766e}, {0x99b3, 0x764c}, {0x99b4, 0x6278},
- {0x99b9, 0x6c71}, {0x99c1, 0x5a60}, {0x99d0, 0x7152},
- {0x99d1, 0x524c}, {0x99d2, 0x4f4b}, {0x99d5, 0x4a3d},
- {0x99d9, 0x5d3f}, {0x99dd, 0x766f}, {0x99df, 0x5e79},
- {0x99ed, 0x7a34}, {0x99f1, 0x552d}, {0x99ff, 0x7167},
- {0x9a01, 0x5e3e}, {0x9a08, 0x5c40}, {0x9a0e, 0x5148},
- {0x9a0f, 0x5149}, {0x9a19, 0x783e}, {0x9a2b, 0x4b76},
- {0x9a30, 0x5479}, {0x9a36, 0x7562}, {0x9a37, 0x6153},
- {0x9a40, 0x5869}, {0x9a43, 0x787e}, {0x9a45, 0x4f4c},
- {0x9a4d, 0x7d24}, {0x9a55, 0x4e76}, {0x9a57, 0x7a50},
- {0x9a5a, 0x4c73}, {0x9a5b, 0x663e}, {0x9a5f, 0x762e},
- {0x9a62, 0x5570}, {0x9a65, 0x514a}, {0x9a69, 0x7c3e},
- {0x9a6a, 0x5571}, {0x9aa8, 0x4d69}, {0x9ab8, 0x7a35},
- {0x9ad3, 0x6250}, {0x9ad4, 0x7477}, {0x9ad8, 0x4d54},
- {0x9ae5, 0x6723}, {0x9aee, 0x5b25}, {0x9b1a, 0x6251},
- {0x9b27, 0x5722}, {0x9b2a, 0x7763}, {0x9b31, 0x6a26},
- {0x9b3c, 0x5021}, {0x9b41, 0x4e5a}, {0x9b42, 0x7b6b},
- {0x9b43, 0x5b26}, {0x9b44, 0x5b5e}, {0x9b45, 0x5865},
- {0x9b4f, 0x6a60}, {0x9b54, 0x582a}, {0x9b5a, 0x6560},
- {0x9b6f, 0x565b}, {0x9b8e, 0x6f46}, {0x9b91, 0x786a},
- {0x9b9f, 0x6455}, {0x9bab, 0x4e77}, {0x9bae, 0x6058},
- {0x9bc9, 0x576f}, {0x9bd6, 0x746d}, {0x9be4, 0x4d66},
- {0x9be8, 0x4c74}, {0x9c0d, 0x7563}, {0x9c10, 0x644a},
- {0x9c12, 0x5c61}, {0x9c15, 0x7948}, {0x9c25, 0x7c3f},
- {0x9c32, 0x6827}, {0x9c3b, 0x5844}, {0x9c47, 0x4b3e},
- {0x9c49, 0x5c2e}, {0x9c57, 0x5777}, {0x9ce5, 0x7068},
- {0x9ce7, 0x5d40}, {0x9ce9, 0x4f4d}, {0x9cf3, 0x5c73},
- {0x9cf4, 0x5930}, {0x9cf6, 0x6669}, {0x9d09, 0x643c},
- {0x9d1b, 0x6a44}, {0x9d26, 0x646c}, {0x9d28, 0x6465},
- {0x9d3b, 0x7b78}, {0x9d51, 0x4c3b}, {0x9d5d, 0x643d},
- {0x9d60, 0x4d5c}, {0x9d61, 0x5977}, {0x9d6c, 0x5d5f},
- {0x9d72, 0x6d4e}, {0x9da9, 0x5950}, {0x9daf, 0x6523},
- {0x9db4, 0x794d}, {0x9dc4, 0x4d2e}, {0x9dd7, 0x4f4e},
- {0x9df2, 0x762f}, {0x9df8, 0x7d53}, {0x9df9, 0x6b6d},
- {0x9dfa, 0x565c}, {0x9e1a, 0x6524}, {0x9e1e, 0x5536},
- {0x9e75, 0x565d}, {0x9e79, 0x7969}, {0x9e7d, 0x6724},
- {0x9e7f, 0x5663}, {0x9e92, 0x514b}, {0x9e93, 0x5664},
- {0x9e97, 0x5572}, {0x9e9d, 0x5e7a}, {0x9e9f, 0x5778},
- {0x9ea5, 0x586a}, {0x9eb4, 0x4f55}, {0x9eb5, 0x587d},
- {0x9ebb, 0x582b}, {0x9ebe, 0x7d4b}, {0x9ec3, 0x7c5c},
- {0x9ecd, 0x6028}, {0x9ece, 0x5573}, {0x9ed1, 0x7d59},
- {0x9ed4, 0x4c23}, {0x9ed8, 0x5979}, {0x9edb, 0x536a},
- {0x9edc, 0x7575}, {0x9ede, 0x6f47}, {0x9ee8, 0x535a},
- {0x9ef4, 0x5a3d}, {0x9f07, 0x6828}, {0x9f08, 0x5c2f},
- {0x9f0e, 0x7023}, {0x9f13, 0x4d55}, {0x9f20, 0x6029},
- {0x9f3b, 0x5e2c}, {0x9f4a, 0x703a}, {0x9f4b, 0x6e31},
- {0x9f4e, 0x6e32}, {0x9f52, 0x764d}, {0x9f5f, 0x6e52},
- {0x9f61, 0x5646}, {0x9f67, 0x6065}, {0x9f6a, 0x733b},
- {0x9f6c, 0x6561}, {0x9f77, 0x644b}, {0x9f8d, 0x5723},
- {0x9f90, 0x5b42}, {0x9f95, 0x4a7e}, {0x9f9c, 0x4f4f},
- {0xf900, 0x4b50}, {0xf901, 0x4b56}, {0xf902, 0x4b67},
- {0xf903, 0x4d4f}, {0xf904, 0x4d68}, {0xf905, 0x4e2d},
- {0xf906, 0x4f7b}, {0xf907, 0x5022}, {0xf908, 0x5038},
- {0xf909, 0x5050}, {0xf90a, 0x505d}, {0xf90b, 0x5154},
- {0xf90c, 0x5155}, {0xf90d, 0x5158}, {0xf90e, 0x515b},
- {0xf90f, 0x515c}, {0xf910, 0x515d}, {0xf911, 0x515e},
- {0xf912, 0x515f}, {0xf913, 0x5160}, {0xf914, 0x5162},
- {0xf915, 0x5163}, {0xf916, 0x5164}, {0xf917, 0x5165},
- {0xf918, 0x5166}, {0xf919, 0x5168}, {0xf91a, 0x5169},
- {0xf91b, 0x516a}, {0xf91c, 0x516b}, {0xf91d, 0x516d},
- {0xf91e, 0x516f}, {0xf91f, 0x5170}, {0xf920, 0x5172},
- {0xf921, 0x5176}, {0xf922, 0x517a}, {0xf923, 0x517c},
- {0xf924, 0x517d}, {0xf925, 0x517e}, {0xf926, 0x5222},
- {0xf927, 0x5223}, {0xf928, 0x5227}, {0xf929, 0x5228},
- {0xf92a, 0x5229}, {0xf92b, 0x522a}, {0xf92c, 0x522b},
- {0xf92d, 0x522d}, {0xf92e, 0x5232}, {0xf92f, 0x523e},
- {0xf930, 0x5242}, {0xf931, 0x5243}, {0xf932, 0x5244},
- {0xf933, 0x5246}, {0xf934, 0x5247}, {0xf935, 0x5248},
- {0xf936, 0x5249}, {0xf937, 0x524a}, {0xf938, 0x524b},
- {0xf939, 0x524d}, {0xf93a, 0x524e}, {0xf93b, 0x524f},
- {0xf93c, 0x5250}, {0xf93d, 0x5251}, {0xf93e, 0x5252},
- {0xf93f, 0x5253}, {0xf940, 0x5254}, {0xf941, 0x5255},
- {0xf942, 0x5256}, {0xf943, 0x5257}, {0xf944, 0x5259},
- {0xf945, 0x525a}, {0xf946, 0x525e}, {0xf947, 0x525f},
- {0xf948, 0x5261}, {0xf949, 0x5262}, {0xf94a, 0x5264},
- {0xf94b, 0x5265}, {0xf94c, 0x5266}, {0xf94d, 0x5267},
- {0xf94e, 0x5268}, {0xf94f, 0x5269}, {0xf950, 0x526a},
- {0xf951, 0x526b}, {0xf952, 0x5270}, {0xf953, 0x5271},
- {0xf954, 0x5272}, {0xf955, 0x5273}, {0xf956, 0x5274},
- {0xf957, 0x5275}, {0xf958, 0x5277}, {0xf959, 0x5278},
- {0xf95a, 0x5466}, {0xf95b, 0x547c}, {0xf95c, 0x5525},
- {0xf95d, 0x552b}, {0xf95e, 0x552e}, {0xf95f, 0x5638},
- {0xf960, 0x564d}, {0xf961, 0x574b}, {0xf962, 0x5764},
- {0xf963, 0x5b45}, {0xf964, 0x5b64}, {0xf965, 0x5c25},
- {0xf966, 0x5d25}, {0xf967, 0x5d55}, {0xf968, 0x5d74},
- {0xf969, 0x5e7c}, {0xf96a, 0x5e7e}, {0xf96b, 0x5f33},
- {0xf96c, 0x5f61}, {0xf96d, 0x5f68}, {0xf96e, 0x6071},
- {0xf96f, 0x612d}, {0xf970, 0x616d}, {0xf971, 0x6375},
- {0xf972, 0x6421}, {0xf973, 0x6429}, {0xf974, 0x652e},
- {0xf975, 0x6531}, {0xf976, 0x6532}, {0xf977, 0x6539},
- {0xf978, 0x653b}, {0xf979, 0x653c}, {0xf97a, 0x6544},
- {0xf97b, 0x654e}, {0xf97c, 0x6550}, {0xf97d, 0x6552},
- {0xf97e, 0x6556}, {0xf97f, 0x657a}, {0xf980, 0x657b},
- {0xf981, 0x657c}, {0xf982, 0x657e}, {0xf983, 0x6621},
- {0xf984, 0x6624}, {0xf985, 0x6627}, {0xf986, 0x662d},
- {0xf987, 0x662f}, {0xf988, 0x6630}, {0xf989, 0x6631},
- {0xf98a, 0x6633}, {0xf98b, 0x6637}, {0xf98c, 0x6638},
- {0xf98d, 0x663c}, {0xf98e, 0x6644}, {0xf98f, 0x6646},
- {0xf990, 0x6647}, {0xf991, 0x664a}, {0xf992, 0x6652},
- {0xf993, 0x6656}, {0xf994, 0x6659}, {0xf995, 0x665c},
- {0xf996, 0x665f}, {0xf997, 0x6661}, {0xf998, 0x6664},
- {0xf999, 0x6665}, {0xf99a, 0x6666}, {0xf99b, 0x6668},
- {0xf99c, 0x666a}, {0xf99d, 0x666b}, {0xf99e, 0x666c},
- {0xf99f, 0x666f}, {0xf9a0, 0x6671}, {0xf9a1, 0x6672},
- {0xf9a2, 0x6675}, {0xf9a3, 0x6676}, {0xf9a4, 0x6677},
- {0xf9a5, 0x6679}, {0xf9a6, 0x6721}, {0xf9a7, 0x6726},
- {0xf9a8, 0x6729}, {0xf9a9, 0x672a}, {0xf9aa, 0x672c},
- {0xf9ab, 0x672d}, {0xf9ac, 0x6730}, {0xf9ad, 0x673f},
- {0xf9ae, 0x6741}, {0xf9af, 0x6746}, {0xf9b0, 0x6747},
- {0xf9b1, 0x674b}, {0xf9b2, 0x674d}, {0xf9b3, 0x674f},
- {0xf9b4, 0x6750}, {0xf9b5, 0x6753}, {0xf9b6, 0x675f},
- {0xf9b7, 0x6764}, {0xf9b8, 0x6766}, {0xf9b9, 0x6777},
- {0xf9ba, 0x6867}, {0xf9bb, 0x6868}, {0xf9bc, 0x6870},
- {0xf9bd, 0x6871}, {0xf9be, 0x6877}, {0xf9bf, 0x6879},
- {0xf9c0, 0x687b}, {0xf9c1, 0x687e}, {0xf9c2, 0x6927},
- {0xf9c3, 0x692c}, {0xf9c4, 0x694c}, {0xf9c5, 0x6977},
- {0xf9c6, 0x6a41}, {0xf9c7, 0x6a65}, {0xf9c8, 0x6a74},
- {0xf9c9, 0x6a77}, {0xf9ca, 0x6a7c}, {0xf9cb, 0x6a7e},
- {0xf9cc, 0x6b24}, {0xf9cd, 0x6b27}, {0xf9ce, 0x6b29},
- {0xf9cf, 0x6b2a}, {0xf9d0, 0x6b3a}, {0xf9d1, 0x6b3b},
- {0xf9d2, 0x6b3d}, {0xf9d3, 0x6b41}, {0xf9d4, 0x6b42},
- {0xf9d5, 0x6b46}, {0xf9d6, 0x6b47}, {0xf9d7, 0x6b4c},
- {0xf9d8, 0x6b4f}, {0xf9d9, 0x6b50}, {0xf9da, 0x6b51},
- {0xf9db, 0x6b52}, {0xf9dc, 0x6b58}, {0xf9dd, 0x6c26},
- {0xf9de, 0x6c27}, {0xf9df, 0x6c2a}, {0xf9e0, 0x6c2f},
- {0xf9e1, 0x6c30}, {0xf9e2, 0x6c31}, {0xf9e3, 0x6c32},
- {0xf9e4, 0x6c35}, {0xf9e5, 0x6c38}, {0xf9e6, 0x6c3a},
- {0xf9e7, 0x6c40}, {0xf9e8, 0x6c41}, {0xf9e9, 0x6c45},
- {0xf9ea, 0x6c46}, {0xf9eb, 0x6c49}, {0xf9ec, 0x6c4a},
- {0xf9ed, 0x6c55}, {0xf9ee, 0x6c5d}, {0xf9ef, 0x6c5e},
- {0xf9f0, 0x6c61}, {0xf9f1, 0x6c64}, {0xf9f2, 0x6c67},
- {0xf9f3, 0x6c68}, {0xf9f4, 0x6c77}, {0xf9f5, 0x6c78},
- {0xf9f6, 0x6c7a}, {0xf9f7, 0x6d21}, {0xf9f8, 0x6d22},
- {0xf9f9, 0x6d23}, {0xf9fa, 0x6d6e}, {0xf9fb, 0x6e5b},
- {0xf9fc, 0x723d}, {0xf9fd, 0x727a}, {0xf9fe, 0x7331},
- {0xf9ff, 0x7427}, {0xfa00, 0x746e}, {0xfa01, 0x7674},
- {0xfa02, 0x7676}, {0xfa03, 0x7738}, {0xfa04, 0x7748},
- {0xfa05, 0x7753}, {0xfa06, 0x785b}, {0xfa07, 0x7870},
- {0xfa08, 0x7a21}, {0xfa09, 0x7a22}, {0xfa0a, 0x7a66},
- {0xfa0b, 0x7c29}
-};
-
-
-static unsigned short ksc2unicode(unsigned short code)
-{
- int ch1 = code >> 8;
- int ch2 = code & 0x00ff;
- int idx;
-
- if (ch1 < 0x80 || (ch1 - 0x80) <= 0x20 || (ch1 - 0x80) >= 0x7e
- || (ch1 - 0x80) == 0x49)
- return 0;
-
- if (ch2 < 0x80 || (ch2 - 0x80) <= 0x20 || (ch2 - 0x80) >= 0x7f)
- return 0;
-
- idx = (ch1 - 0x80 - 0x21) * 94 + (ch2 - 0x80 - 0x21);
-
- /* Hangul : row 16 - row 40 : 1410 = 15 * 94 ,
- 3760 = 40 * 94 */
- if (idx >= 1410 && idx < 1410 + 2350)
- return ksc5601_hangul_to_unicode[idx - 1410];
-
- else if (idx >= 3854)
- /* Hanja : row 42 - row 93 : 3854 = 94 * (42-1) */
- return ksc5601_hanja_to_unicode[idx - 3854];
-
- else if(idx <= 1114)
- return ksc5601_symbol_to_unicode[idx];
-
- return 0;
-}
-
-static unsigned short unicode2ksc(unsigned short unicode)
-{
- int lo, hi, mid, c2;
- unsigned char s[2];
-
- lo = mid = c2 = 0;
-
- if (unicode >= 0xac00 && unicode <= 0xd7a3) {
- // Hangul
- hi = 2349;
-
- while (lo <= hi) { // binary search
- mid = (lo + hi) / 2;
- c2 = ksc5601_hangul_to_unicode[mid];
- if(unicode < c2)
- hi = mid - 1;
- else if(unicode > c2)
- lo = mid + 1;
- else { // unicode == c2
- s[0] = (mid / 94) + 0x30;
- s[1] = (mid % 94) + 0x21;
-
- return ((s[0] << 8) | s[1]);
- }
- }
- } else if ((unicode >= 0x4e00 && unicode <= 0x9fff)
- || (unicode >= 0xf900 && unicode <= 0xfa0b)) {
- // Hanja
- hi = 4887;
-
- while (lo <= hi) { // binary search
- mid = (lo + hi) / 2;
- c2 = unicode_to_ksc5601_hanja[mid].unicode;
- if(unicode < c2)
- hi = mid - 1;
- else if(unicode > c2)
- lo = mid + 1;
- else { // unicode == c2
- return unicode_to_ksc5601_hanja[mid].kscode;
- }
- }
- } else {
- // Symbol
- hi = 985;
-
- while (lo <= hi) { // binary search
- mid = (lo + hi) / 2;
- c2 = unicode_to_ksc5601_symbol[mid].unicode;
- if(unicode < c2)
- hi = mid - 1;
- else if(unicode > c2)
- lo = mid + 1;
- else { // unicode == c2
- return unicode_to_ksc5601_symbol[mid].kscode;
- }
- }
- }
- return 0;
-}
-
-int QCP949Codec::_mibEnum()
-{
- return -949; // CP949 has no MIBenum. So we have to use fake value.
-}
-
-QByteArray QCP949Codec::_name()
-{
- return "cp949";
-}
-
-/*!
- \reimp
-*/
-QByteArray QCP949Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
-{
- char replacement = '?';
- if (state) {
- if (state->flags & ConvertInvalidToNull)
- replacement = 0;
- }
- int invalid = 0;
-
- int rlen = 2*len + 1;
- QByteArray rstr;
- rstr.resize(rlen);
- uchar* cursor = (uchar*)rstr.data();
- for (int i = 0; i < len; i++) {
- unsigned short ch = uc[i].unicode();
- uint j;
- if (ch < 0x80) {
- // ASCII
- *cursor++ = ch;
- } else if ((j = qt_UnicodeToKsc5601(ch))) {
- // KSC 5601
- *cursor++ = (j >> 8) | 0x80;
- *cursor++ = (j & 0xff) | 0x80;
- } else {
- const unsigned short *ptr = qBinaryFind(cp949_icode_to_unicode, cp949_icode_to_unicode + 8822, ch);
- if (ptr == cp949_icode_to_unicode + 8822) {
- // Error
- *cursor++ = replacement;
- ++invalid;
- }
- else {
- // The table 'cp949_icode_to_unicode' contains following
- // 1. Elements of row 81-a0 (32 rows) consisting of 178 elements each.
- // 2. Elements of row a1-fe not in EUC-KR consisting of 84 elements each.
- // On each row the elements are distributed (41-5A), (61-7A), (81-FE) in order.
- // http://www.microsoft.com/globaldev/reference/dbcs/949.mspx
-
- // find the position of the current unicode in the table.
- int internal_code = ptr - cp949_icode_to_unicode;
-
- int row, column;
- if(internal_code < 32 * 178) {
- // code between row 81-a0
- row = internal_code / 178;
- column = internal_code % 178;
- }
- else {
- // code between a1-fe
- internal_code -= 3008;
- row = internal_code / 84;
- column = internal_code % 84;
- }
-
- unsigned char first, second;
- first = row + 0x81;
-
- if(column < 26)
- second = column + 0x41; // between 41-5A
- else if(column < 52)
- second = column - 26 + 0x61; // between 61-7A
- else
- second = column - 52 + 0x81; // between 81-FE
-
- *cursor++ = first;
- *cursor++ = second;
- }
- }
- }
- rstr.resize(cursor - (uchar*)rstr.constData());
-
- if (state) {
- state->invalidChars += invalid;
- }
- return rstr;
-}
-
-/*!
- \reimp
-*/
-QString QCP949Codec::convertToUnicode(const char* chars, int len, ConverterState *state) const
-{
- uchar buf[2] = {0, 0};
- int nbuf = 0;
- QChar replacement = QChar::ReplacementCharacter;
- if (state) {
- if (state->flags & ConvertInvalidToNull)
- replacement = QChar::Null;
- nbuf = state->remainingChars;
- buf[0] = state->state_data[0];
- buf[1] = state->state_data[1];
- }
- int invalid = 0;
-
- QString result;
- for (int i=0; i<len; i++) {
- uchar ch = chars[i];
- if (ch == 0)
- break;
- switch (nbuf) {
- case 0:
- if (ch < 0x80) {
- // ASCII
- result += QLatin1Char(ch);
- } else if (IsEucChar(ch)) {
- // KSC 5601
- buf[0] = ch;
- nbuf = 1;
- } else if (IsCP949Char(ch)){
- buf[0] = ch;
- nbuf = 1;
- } else {
- // Invalid
- result += replacement;
- ++invalid;
- }
- break;
- case 1:
- // KSC 5601
- if (IsEucChar(ch) && !IsCP949Char(buf[0])) {
- uint u = qt_Ksc5601ToUnicode((buf[0] << 8) | ch);
- result += QValidChar(u);
- } else {
- // Rest of CP949
- int row, column;
- nbuf = 0;
- row = buf[0] - 0x81;
- if (0x41 <= ch && ch <= 0x5a)
- column = ch - 0x41;
- else if (0x61 <= ch && ch <= 0x7a)
- column = ch - 0x61 + 26;
- else if (0x81 <= ch && ch <= 0xfe)
- column = ch - 0x81 + 52;
- else {
- result += replacement;
- ++invalid;
- break;
- }
-
- int internal_code;
- if (row < 32)
- internal_code = row * 178 + column;
- else
- internal_code = 3008 + row * 84 + column;
- // check whether the conversion avialble in the table.
- if (internal_code < 0 || internal_code >= 8822) {
- result += replacement;
- ++invalid;
- break;
- }
- else
- result += QValidChar(cp949_icode_to_unicode[internal_code]);
- }
- nbuf = 0;
- break;
- }
- }
-
- if (state) {
- state->remainingChars = nbuf;
- state->state_data[0] = buf[0];
- state->state_data[1] = buf[1];
- state->invalidChars += invalid;
- }
- return result;
-}
-
-#endif // QT_NO_TEXTCODEC
-
-QT_END_NAMESPACE
diff --git a/src/plugins/codecs/kr/qeuckrcodec.h b/src/plugins/codecs/kr/qeuckrcodec.h
deleted file mode 100644
index d5be33e74b..0000000000
--- a/src/plugins/codecs/kr/qeuckrcodec.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-/*
- * Copyright (C) 1999-2000 Mizi Research Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef QEUCKRCODEC_H
-#define QEUCKRCODEC_H
-
-#include <QtCore/qtextcodec.h>
-#include <QtCore/qlist.h>
-
-QT_BEGIN_NAMESPACE
-
-#ifndef QT_NO_TEXTCODEC
-
-class QEucKrCodec : public QTextCodec {
-public:
- static QByteArray _name();
- static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
- static int _mibEnum();
-
- QByteArray name() const { return _name(); }
- QList<QByteArray> aliases() const { return _aliases(); }
- int mibEnum() const { return _mibEnum(); }
-
- QString convertToUnicode(const char *, int, ConverterState *) const;
- QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
-};
-
-class QCP949Codec : public QTextCodec {
-public:
- static QByteArray _name();
- static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
- static int _mibEnum();
-
- QByteArray name() const { return _name(); }
- QList<QByteArray> aliases() const { return _aliases(); }
- int mibEnum() const { return _mibEnum(); }
-
- QString convertToUnicode(const char *, int, ConverterState *) const;
- QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
-};
-
-#ifdef Q_OS_UNIX
-class QFontKsc5601Codec : public QTextCodec
-{
-public:
- QFontKsc5601Codec();
-
- static QByteArray _name();
- static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
- static int _mibEnum();
-
- QByteArray name() const { return _name(); }
- QList<QByteArray> aliases() const { return _aliases(); }
- int mibEnum() const { return _mibEnum(); }
-
- QString convertToUnicode(const char *, int, ConverterState *) const;
- QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
-
-};
-#endif
-
-#endif // QT_NO_TEXTCODEC
-
-QT_END_NAMESPACE
-
-#endif // QEUCKRCODEC_H
diff --git a/src/plugins/codecs/tw/main.cpp b/src/plugins/codecs/tw/main.cpp
deleted file mode 100644
index 159752cc26..0000000000
--- a/src/plugins/codecs/tw/main.cpp
+++ /dev/null
@@ -1,138 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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 <qtextcodecplugin.h>
-#include <qtextcodec.h>
-#include <qstringlist.h>
-
-#ifndef QT_NO_TEXTCODECPLUGIN
-
-#include "qbig5codec.h"
-
-QT_BEGIN_NAMESPACE
-
-class TWTextCodecs : public QTextCodecPlugin
-{
-public:
- TWTextCodecs() {}
-
- QList<QByteArray> names() const;
- QList<QByteArray> aliases() const;
- QList<int> mibEnums() const;
-
- QTextCodec *createForMib(int);
- QTextCodec *createForName(const QByteArray &);
-};
-
-QList<QByteArray> TWTextCodecs::names() const
-{
- QList<QByteArray> list;
- list += QBig5Codec::_name();
- list += QBig5hkscsCodec::_name();
-#ifdef Q_OS_UNIX
- list += QFontBig5Codec::_name();
- list += QFontBig5hkscsCodec::_name();
-#endif
- return list;
-}
-
-QList<QByteArray> TWTextCodecs::aliases() const
-{
- QList<QByteArray> list;
- list += QBig5Codec::_aliases();
- list += QBig5hkscsCodec::_aliases();
-#ifdef Q_OS_UNIX
- list += QFontBig5Codec::_aliases();
- list += QFontBig5hkscsCodec::_aliases();
-#endif
- return list;
-}
-
-QList<int> TWTextCodecs::mibEnums() const
-{
- QList<int> list;
- list += QBig5Codec::_mibEnum();
- list += QBig5hkscsCodec::_mibEnum();
-#ifdef Q_OS_UNIX
- list += QFontBig5Codec::_mibEnum();
- list += QFontBig5hkscsCodec::_mibEnum();
-#endif
- return list;
-}
-
-QTextCodec *TWTextCodecs::createForMib(int mib)
-{
- if (mib == QBig5Codec::_mibEnum())
- return new QBig5Codec;
- if (mib == QBig5hkscsCodec::_mibEnum())
- return new QBig5hkscsCodec;
-#ifdef Q_OS_UNIX
- if (mib == QFontBig5hkscsCodec::_mibEnum())
- return new QFontBig5hkscsCodec;
- if (mib == QFontBig5Codec::_mibEnum())
- return new QFontBig5Codec;
-#endif
- return 0;
-}
-
-
-QTextCodec *TWTextCodecs::createForName(const QByteArray &name)
-{
- if (name == QBig5Codec::_name() || QBig5Codec::_aliases().contains(name))
- return new QBig5Codec;
- if (name == QBig5hkscsCodec::_name() || QBig5hkscsCodec::_aliases().contains(name))
- return new QBig5hkscsCodec;
-#ifdef Q_OS_UNIX
- if (name == QFontBig5hkscsCodec::_name() || QFontBig5hkscsCodec::_aliases().contains(name))
- return new QFontBig5hkscsCodec;
- if (name == QFontBig5Codec::_name() || QFontBig5Codec::_aliases().contains(name))
- return new QFontBig5Codec;
-#endif
- return 0;
-}
-
-
-Q_EXPORT_STATIC_PLUGIN(TWTextCodecs);
-Q_EXPORT_PLUGIN2(qtwcodecs, TWTextCodecs);
-
-#endif // QT_NO_TEXTCODECPLUGIN
-
-QT_END_NAMESPACE
diff --git a/src/plugins/codecs/tw/qbig5codec.cpp b/src/plugins/codecs/tw/qbig5codec.cpp
deleted file mode 100644
index f337dd8d8a..0000000000
--- a/src/plugins/codecs/tw/qbig5codec.cpp
+++ /dev/null
@@ -1,12788 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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 "qbig5codec.h"
-
-QT_BEGIN_NAMESPACE
-
-#ifndef QT_NO_TEXTCODEC
-static int qt_Big5hkscsToUnicode(const uchar *s, uint *pwc);
-static int qt_UnicodeToBig5hkscs(uint wc, uchar *r);
-
-#define InRange(c, lower, upper) (((c) >= (lower)) && ((c) <= (upper)))
-#define IsLatin(c) ((c) < 0x80)
-#define IsFirstByte(c) (InRange((c), 0x81, 0xFE))
-#define IsSecondByteRange1(c) (InRange((c), 0x40, 0x7E))
-#define IsSecondByteRange2(c) (InRange((c), 0xA1, 0xFE))
-#define IsSecondByte(c) (IsSecondByteRange1(c) || IsSecondByteRange2(c))
-
-#define QValidChar(u) ((u) ? QChar((ushort)(u)) : QChar(QChar::ReplacementCharacter))
-
-
-int QBig5Codec::_mibEnum()
-{
- return 2026;
-}
-
-QByteArray QBig5Codec::_name()
-{
- return "Big5";
-}
-
-struct B5Map {
- ushort x;
- ushort y;
-};
-
-struct B5Index {
- const B5Map * table;
- ushort tableSize;
-};
-
-// Big 5 to Unicode maping tables.
-// Tables are in sorted order on X(all table together) & Y(individually)
-static const B5Map b5_8140_to_uc_map[] = {
- /* 0x8140 - 0x8DFE */
- {0x8140,0xeeb8}, {0x8141,0xeeb9}, {0x8142,0xeeba}, {0x8143,0xeebb},
- {0x8144,0xeebc}, {0x8145,0xeebd}, {0x8146,0xeebe}, {0x8147,0xeebf},
- {0x8148,0xeec0}, {0x8149,0xeec1}, {0x814a,0xeec2}, {0x814b,0xeec3},
- {0x814c,0xeec4}, {0x814d,0xeec5}, {0x814e,0xeec6}, {0x814f,0xeec7},
- {0x8150,0xeec8}, {0x8151,0xeec9}, {0x8152,0xeeca}, {0x8153,0xeecb},
- {0x8154,0xeecc}, {0x8155,0xeecd}, {0x8156,0xeece}, {0x8157,0xeecf},
- {0x8158,0xeed0}, {0x8159,0xeed1}, {0x815a,0xeed2}, {0x815b,0xeed3},
- {0x815c,0xeed4}, {0x815d,0xeed5}, {0x815e,0xeed6}, {0x815f,0xeed7},
- {0x8160,0xeed8}, {0x8161,0xeed9}, {0x8162,0xeeda}, {0x8163,0xeedb},
- {0x8164,0xeedc}, {0x8165,0xeedd}, {0x8166,0xeede}, {0x8167,0xeedf},
- {0x8168,0xeee0}, {0x8169,0xeee1}, {0x816a,0xeee2}, {0x816b,0xeee3},
- {0x816c,0xeee4}, {0x816d,0xeee5}, {0x816e,0xeee6}, {0x816f,0xeee7},
- {0x8170,0xeee8}, {0x8171,0xeee9}, {0x8172,0xeeea}, {0x8173,0xeeeb},
- {0x8174,0xeeec}, {0x8175,0xeeed}, {0x8176,0xeeee}, {0x8177,0xeeef},
- {0x8178,0xeef0}, {0x8179,0xeef1}, {0x817a,0xeef2}, {0x817b,0xeef3},
- {0x817c,0xeef4}, {0x817d,0xeef5}, {0x817e,0xeef6}, {0x81a1,0xeef7},
- {0x81a2,0xeef8}, {0x81a3,0xeef9}, {0x81a4,0xeefa}, {0x81a5,0xeefb},
- {0x81a6,0xeefc}, {0x81a7,0xeefd}, {0x81a8,0xeefe}, {0x81a9,0xeeff},
- {0x81aa,0xef00}, {0x81ab,0xef01}, {0x81ac,0xef02}, {0x81ad,0xef03},
- {0x81ae,0xef04}, {0x81af,0xef05}, {0x81b0,0xef06}, {0x81b1,0xef07},
- {0x81b2,0xef08}, {0x81b3,0xef09}, {0x81b4,0xef0a}, {0x81b5,0xef0b},
- {0x81b6,0xef0c}, {0x81b7,0xef0d}, {0x81b8,0xef0e}, {0x81b9,0xef0f},
- {0x81ba,0xef10}, {0x81bb,0xef11}, {0x81bc,0xef12}, {0x81bd,0xef13},
- {0x81be,0xef14}, {0x81bf,0xef15}, {0x81c0,0xef16}, {0x81c1,0xef17},
- {0x81c2,0xef18}, {0x81c3,0xef19}, {0x81c4,0xef1a}, {0x81c5,0xef1b},
- {0x81c6,0xef1c}, {0x81c7,0xef1d}, {0x81c8,0xef1e}, {0x81c9,0xef1f},
- {0x81ca,0xef20}, {0x81cb,0xef21}, {0x81cc,0xef22}, {0x81cd,0xef23},
- {0x81ce,0xef24}, {0x81cf,0xef25}, {0x81d0,0xef26}, {0x81d1,0xef27},
- {0x81d2,0xef28}, {0x81d3,0xef29}, {0x81d4,0xef2a}, {0x81d5,0xef2b},
- {0x81d6,0xef2c}, {0x81d7,0xef2d}, {0x81d8,0xef2e}, {0x81d9,0xef2f},
- {0x81da,0xef30}, {0x81db,0xef31}, {0x81dc,0xef32}, {0x81dd,0xef33},
- {0x81de,0xef34}, {0x81df,0xef35}, {0x81e0,0xef36}, {0x81e1,0xef37},
- {0x81e2,0xef38}, {0x81e3,0xef39}, {0x81e4,0xef3a}, {0x81e5,0xef3b},
- {0x81e6,0xef3c}, {0x81e7,0xef3d}, {0x81e8,0xef3e}, {0x81e9,0xef3f},
- {0x81ea,0xef40}, {0x81eb,0xef41}, {0x81ec,0xef42}, {0x81ed,0xef43},
- {0x81ee,0xef44}, {0x81ef,0xef45}, {0x81f0,0xef46}, {0x81f1,0xef47},
- {0x81f2,0xef48}, {0x81f3,0xef49}, {0x81f4,0xef4a}, {0x81f5,0xef4b},
- {0x81f6,0xef4c}, {0x81f7,0xef4d}, {0x81f8,0xef4e}, {0x81f9,0xef4f},
- {0x81fa,0xef50}, {0x81fb,0xef51}, {0x81fc,0xef52}, {0x81fd,0xef53},
- {0x81fe,0xef54}, {0x8240,0xef55}, {0x8241,0xef56}, {0x8242,0xef57},
- {0x8243,0xef58}, {0x8244,0xef59}, {0x8245,0xef5a}, {0x8246,0xef5b},
- {0x8247,0xef5c}, {0x8248,0xef5d}, {0x8249,0xef5e}, {0x824a,0xef5f},
- {0x824b,0xef60}, {0x824c,0xef61}, {0x824d,0xef62}, {0x824e,0xef63},
- {0x824f,0xef64}, {0x8250,0xef65}, {0x8251,0xef66}, {0x8252,0xef67},
- {0x8253,0xef68}, {0x8254,0xef69}, {0x8255,0xef6a}, {0x8256,0xef6b},
- {0x8257,0xef6c}, {0x8258,0xef6d}, {0x8259,0xef6e}, {0x825a,0xef6f},
- {0x825b,0xef70}, {0x825c,0xef71}, {0x825d,0xef72}, {0x825e,0xef73},
- {0x825f,0xef74}, {0x8260,0xef75}, {0x8261,0xef76}, {0x8262,0xef77},
- {0x8263,0xef78}, {0x8264,0xef79}, {0x8265,0xef7a}, {0x8266,0xef7b},
- {0x8267,0xef7c}, {0x8268,0xef7d}, {0x8269,0xef7e}, {0x826a,0xef7f},
- {0x826b,0xef80}, {0x826c,0xef81}, {0x826d,0xef82}, {0x826e,0xef83},
- {0x826f,0xef84}, {0x8270,0xef85}, {0x8271,0xef86}, {0x8272,0xef87},
- {0x8273,0xef88}, {0x8274,0xef89}, {0x8275,0xef8a}, {0x8276,0xef8b},
- {0x8277,0xef8c}, {0x8278,0xef8d}, {0x8279,0xef8e}, {0x827a,0xef8f},
- {0x827b,0xef90}, {0x827c,0xef91}, {0x827d,0xef92}, {0x827e,0xef93},
- {0x82a1,0xef94}, {0x82a2,0xef95}, {0x82a3,0xef96}, {0x82a4,0xef97},
- {0x82a5,0xef98}, {0x82a6,0xef99}, {0x82a7,0xef9a}, {0x82a8,0xef9b},
- {0x82a9,0xef9c}, {0x82aa,0xef9d}, {0x82ab,0xef9e}, {0x82ac,0xef9f},
- {0x82ad,0xefa0}, {0x82ae,0xefa1}, {0x82af,0xefa2}, {0x82b0,0xefa3},
- {0x82b1,0xefa4}, {0x82b2,0xefa5}, {0x82b3,0xefa6}, {0x82b4,0xefa7},
- {0x82b5,0xefa8}, {0x82b6,0xefa9}, {0x82b7,0xefaa}, {0x82b8,0xefab},
- {0x82b9,0xefac}, {0x82ba,0xefad}, {0x82bb,0xefae}, {0x82bc,0xefaf},
- {0x82bd,0xefb0}, {0x82be,0xefb1}, {0x82bf,0xefb2}, {0x82c0,0xefb3},
- {0x82c1,0xefb4}, {0x82c2,0xefb5}, {0x82c3,0xefb6}, {0x82c4,0xefb7},
- {0x82c5,0xefb8}, {0x82c6,0xefb9}, {0x82c7,0xefba}, {0x82c8,0xefbb},
- {0x82c9,0xefbc}, {0x82ca,0xefbd}, {0x82cb,0xefbe}, {0x82cc,0xefbf},
- {0x82cd,0xefc0}, {0x82ce,0xefc1}, {0x82cf,0xefc2}, {0x82d0,0xefc3},
- {0x82d1,0xefc4}, {0x82d2,0xefc5}, {0x82d3,0xefc6}, {0x82d4,0xefc7},
- {0x82d5,0xefc8}, {0x82d6,0xefc9}, {0x82d7,0xefca}, {0x82d8,0xefcb},
- {0x82d9,0xefcc}, {0x82da,0xefcd}, {0x82db,0xefce}, {0x82dc,0xefcf},
- {0x82dd,0xefd0}, {0x82de,0xefd1}, {0x82df,0xefd2}, {0x82e0,0xefd3},
- {0x82e1,0xefd4}, {0x82e2,0xefd5}, {0x82e3,0xefd6}, {0x82e4,0xefd7},
- {0x82e5,0xefd8}, {0x82e6,0xefd9}, {0x82e7,0xefda}, {0x82e8,0xefdb},
- {0x82e9,0xefdc}, {0x82ea,0xefdd}, {0x82eb,0xefde}, {0x82ec,0xefdf},
- {0x82ed,0xefe0}, {0x82ee,0xefe1}, {0x82ef,0xefe2}, {0x82f0,0xefe3},
- {0x82f1,0xefe4}, {0x82f2,0xefe5}, {0x82f3,0xefe6}, {0x82f4,0xefe7},
- {0x82f5,0xefe8}, {0x82f6,0xefe9}, {0x82f7,0xefea}, {0x82f8,0xefeb},
- {0x82f9,0xefec}, {0x82fa,0xefed}, {0x82fb,0xefee}, {0x82fc,0xefef},
- {0x82fd,0xeff0}, {0x82fe,0xeff1}, {0x8340,0xeff2}, {0x8341,0xeff3},
- {0x8342,0xeff4}, {0x8343,0xeff5}, {0x8344,0xeff6}, {0x8345,0xeff7},
- {0x8346,0xeff8}, {0x8347,0xeff9}, {0x8348,0xeffa}, {0x8349,0xeffb},
- {0x834a,0xeffc}, {0x834b,0xeffd}, {0x834c,0xeffe}, {0x834d,0xefff},
- {0x834e,0xf000}, {0x834f,0xf001}, {0x8350,0xf002}, {0x8351,0xf003},
- {0x8352,0xf004}, {0x8353,0xf005}, {0x8354,0xf006}, {0x8355,0xf007},
- {0x8356,0xf008}, {0x8357,0xf009}, {0x8358,0xf00a}, {0x8359,0xf00b},
- {0x835a,0xf00c}, {0x835b,0xf00d}, {0x835c,0xf00e}, {0x835d,0xf00f},
- {0x835e,0xf010}, {0x835f,0xf011}, {0x8360,0xf012}, {0x8361,0xf013},
- {0x8362,0xf014}, {0x8363,0xf015}, {0x8364,0xf016}, {0x8365,0xf017},
- {0x8366,0xf018}, {0x8367,0xf019}, {0x8368,0xf01a}, {0x8369,0xf01b},
- {0x836a,0xf01c}, {0x836b,0xf01d}, {0x836c,0xf01e}, {0x836d,0xf01f},
- {0x836e,0xf020}, {0x836f,0xf021}, {0x8370,0xf022}, {0x8371,0xf023},
- {0x8372,0xf024}, {0x8373,0xf025}, {0x8374,0xf026}, {0x8375,0xf027},
- {0x8376,0xf028}, {0x8377,0xf029}, {0x8378,0xf02a}, {0x8379,0xf02b},
- {0x837a,0xf02c}, {0x837b,0xf02d}, {0x837c,0xf02e}, {0x837d,0xf02f},
- {0x837e,0xf030}, {0x83a1,0xf031}, {0x83a2,0xf032}, {0x83a3,0xf033},
- {0x83a4,0xf034}, {0x83a5,0xf035}, {0x83a6,0xf036}, {0x83a7,0xf037},
- {0x83a8,0xf038}, {0x83a9,0xf039}, {0x83aa,0xf03a}, {0x83ab,0xf03b},
- {0x83ac,0xf03c}, {0x83ad,0xf03d}, {0x83ae,0xf03e}, {0x83af,0xf03f},
- {0x83b0,0xf040}, {0x83b1,0xf041}, {0x83b2,0xf042}, {0x83b3,0xf043},
- {0x83b4,0xf044}, {0x83b5,0xf045}, {0x83b6,0xf046}, {0x83b7,0xf047},
- {0x83b8,0xf048}, {0x83b9,0xf049}, {0x83ba,0xf04a}, {0x83bb,0xf04b},
- {0x83bc,0xf04c}, {0x83bd,0xf04d}, {0x83be,0xf04e}, {0x83bf,0xf04f},
- {0x83c0,0xf050}, {0x83c1,0xf051}, {0x83c2,0xf052}, {0x83c3,0xf053},
- {0x83c4,0xf054}, {0x83c5,0xf055}, {0x83c6,0xf056}, {0x83c7,0xf057},
- {0x83c8,0xf058}, {0x83c9,0xf059}, {0x83ca,0xf05a}, {0x83cb,0xf05b},
- {0x83cc,0xf05c}, {0x83cd,0xf05d}, {0x83ce,0xf05e}, {0x83cf,0xf05f},
- {0x83d0,0xf060}, {0x83d1,0xf061}, {0x83d2,0xf062}, {0x83d3,0xf063},
- {0x83d4,0xf064}, {0x83d5,0xf065}, {0x83d6,0xf066}, {0x83d7,0xf067},
- {0x83d8,0xf068}, {0x83d9,0xf069}, {0x83da,0xf06a}, {0x83db,0xf06b},
- {0x83dc,0xf06c}, {0x83dd,0xf06d}, {0x83de,0xf06e}, {0x83df,0xf06f},
- {0x83e0,0xf070}, {0x83e1,0xf071}, {0x83e2,0xf072}, {0x83e3,0xf073},
- {0x83e4,0xf074}, {0x83e5,0xf075}, {0x83e6,0xf076}, {0x83e7,0xf077},
- {0x83e8,0xf078}, {0x83e9,0xf079}, {0x83ea,0xf07a}, {0x83eb,0xf07b},
- {0x83ec,0xf07c}, {0x83ed,0xf07d}, {0x83ee,0xf07e}, {0x83ef,0xf07f},
- {0x83f0,0xf080}, {0x83f1,0xf081}, {0x83f2,0xf082}, {0x83f3,0xf083},
- {0x83f4,0xf084}, {0x83f5,0xf085}, {0x83f6,0xf086}, {0x83f7,0xf087},
- {0x83f8,0xf088}, {0x83f9,0xf089}, {0x83fa,0xf08a}, {0x83fb,0xf08b},
- {0x83fc,0xf08c}, {0x83fd,0xf08d}, {0x83fe,0xf08e}, {0x8440,0xf08f},
- {0x8441,0xf090}, {0x8442,0xf091}, {0x8443,0xf092}, {0x8444,0xf093},
- {0x8445,0xf094}, {0x8446,0xf095}, {0x8447,0xf096}, {0x8448,0xf097},
- {0x8449,0xf098}, {0x844a,0xf099}, {0x844b,0xf09a}, {0x844c,0xf09b},
- {0x844d,0xf09c}, {0x844e,0xf09d}, {0x844f,0xf09e}, {0x8450,0xf09f},
- {0x8451,0xf0a0}, {0x8452,0xf0a1}, {0x8453,0xf0a2}, {0x8454,0xf0a3},
- {0x8455,0xf0a4}, {0x8456,0xf0a5}, {0x8457,0xf0a6}, {0x8458,0xf0a7},
- {0x8459,0xf0a8}, {0x845a,0xf0a9}, {0x845b,0xf0aa}, {0x845c,0xf0ab},
- {0x845d,0xf0ac}, {0x845e,0xf0ad}, {0x845f,0xf0ae}, {0x8460,0xf0af},
- {0x8461,0xf0b0}, {0x8462,0xf0b1}, {0x8463,0xf0b2}, {0x8464,0xf0b3},
- {0x8465,0xf0b4}, {0x8466,0xf0b5}, {0x8467,0xf0b6}, {0x8468,0xf0b7},
- {0x8469,0xf0b8}, {0x846a,0xf0b9}, {0x846b,0xf0ba}, {0x846c,0xf0bb},
- {0x846d,0xf0bc}, {0x846e,0xf0bd}, {0x846f,0xf0be}, {0x8470,0xf0bf},
- {0x8471,0xf0c0}, {0x8472,0xf0c1}, {0x8473,0xf0c2}, {0x8474,0xf0c3},
- {0x8475,0xf0c4}, {0x8476,0xf0c5}, {0x8477,0xf0c6}, {0x8478,0xf0c7},
- {0x8479,0xf0c8}, {0x847a,0xf0c9}, {0x847b,0xf0ca}, {0x847c,0xf0cb},
- {0x847d,0xf0cc}, {0x847e,0xf0cd}, {0x84a1,0xf0ce}, {0x84a2,0xf0cf},
- {0x84a3,0xf0d0}, {0x84a4,0xf0d1}, {0x84a5,0xf0d2}, {0x84a6,0xf0d3},
- {0x84a7,0xf0d4}, {0x84a8,0xf0d5}, {0x84a9,0xf0d6}, {0x84aa,0xf0d7},
- {0x84ab,0xf0d8}, {0x84ac,0xf0d9}, {0x84ad,0xf0da}, {0x84ae,0xf0db},
- {0x84af,0xf0dc}, {0x84b0,0xf0dd}, {0x84b1,0xf0de}, {0x84b2,0xf0df},
- {0x84b3,0xf0e0}, {0x84b4,0xf0e1}, {0x84b5,0xf0e2}, {0x84b6,0xf0e3},
- {0x84b7,0xf0e4}, {0x84b8,0xf0e5}, {0x84b9,0xf0e6}, {0x84ba,0xf0e7},
- {0x84bb,0xf0e8}, {0x84bc,0xf0e9}, {0x84bd,0xf0ea}, {0x84be,0xf0eb},
- {0x84bf,0xf0ec}, {0x84c0,0xf0ed}, {0x84c1,0xf0ee}, {0x84c2,0xf0ef},
- {0x84c3,0xf0f0}, {0x84c4,0xf0f1}, {0x84c5,0xf0f2}, {0x84c6,0xf0f3},
- {0x84c7,0xf0f4}, {0x84c8,0xf0f5}, {0x84c9,0xf0f6}, {0x84ca,0xf0f7},
- {0x84cb,0xf0f8}, {0x84cc,0xf0f9}, {0x84cd,0xf0fa}, {0x84ce,0xf0fb},
- {0x84cf,0xf0fc}, {0x84d0,0xf0fd}, {0x84d1,0xf0fe}, {0x84d2,0xf0ff},
- {0x84d3,0xf100}, {0x84d4,0xf101}, {0x84d5,0xf102}, {0x84d6,0xf103},
- {0x84d7,0xf104}, {0x84d8,0xf105}, {0x84d9,0xf106}, {0x84da,0xf107},
- {0x84db,0xf108}, {0x84dc,0xf109}, {0x84dd,0xf10a}, {0x84de,0xf10b},
- {0x84df,0xf10c}, {0x84e0,0xf10d}, {0x84e1,0xf10e}, {0x84e2,0xf10f},
- {0x84e3,0xf110}, {0x84e4,0xf111}, {0x84e5,0xf112}, {0x84e6,0xf113},
- {0x84e7,0xf114}, {0x84e8,0xf115}, {0x84e9,0xf116}, {0x84ea,0xf117},
- {0x84eb,0xf118}, {0x84ec,0xf119}, {0x84ed,0xf11a}, {0x84ee,0xf11b},
- {0x84ef,0xf11c}, {0x84f0,0xf11d}, {0x84f1,0xf11e}, {0x84f2,0xf11f},
- {0x84f3,0xf120}, {0x84f4,0xf121}, {0x84f5,0xf122}, {0x84f6,0xf123},
- {0x84f7,0xf124}, {0x84f8,0xf125}, {0x84f9,0xf126}, {0x84fa,0xf127},
- {0x84fb,0xf128}, {0x84fc,0xf129}, {0x84fd,0xf12a}, {0x84fe,0xf12b},
- {0x8540,0xf12c}, {0x8541,0xf12d}, {0x8542,0xf12e}, {0x8543,0xf12f},
- {0x8544,0xf130}, {0x8545,0xf131}, {0x8546,0xf132}, {0x8547,0xf133},
- {0x8548,0xf134}, {0x8549,0xf135}, {0x854a,0xf136}, {0x854b,0xf137},
- {0x854c,0xf138}, {0x854d,0xf139}, {0x854e,0xf13a}, {0x854f,0xf13b},
- {0x8550,0xf13c}, {0x8551,0xf13d}, {0x8552,0xf13e}, {0x8553,0xf13f},
- {0x8554,0xf140}, {0x8555,0xf141}, {0x8556,0xf142}, {0x8557,0xf143},
- {0x8558,0xf144}, {0x8559,0xf145}, {0x855a,0xf146}, {0x855b,0xf147},
- {0x855c,0xf148}, {0x855d,0xf149}, {0x855e,0xf14a}, {0x855f,0xf14b},
- {0x8560,0xf14c}, {0x8561,0xf14d}, {0x8562,0xf14e}, {0x8563,0xf14f},
- {0x8564,0xf150}, {0x8565,0xf151}, {0x8566,0xf152}, {0x8567,0xf153},
- {0x8568,0xf154}, {0x8569,0xf155}, {0x856a,0xf156}, {0x856b,0xf157},
- {0x856c,0xf158}, {0x856d,0xf159}, {0x856e,0xf15a}, {0x856f,0xf15b},
- {0x8570,0xf15c}, {0x8571,0xf15d}, {0x8572,0xf15e}, {0x8573,0xf15f},
- {0x8574,0xf160}, {0x8575,0xf161}, {0x8576,0xf162}, {0x8577,0xf163},
- {0x8578,0xf164}, {0x8579,0xf165}, {0x857a,0xf166}, {0x857b,0xf167},
- {0x857c,0xf168}, {0x857d,0xf169}, {0x857e,0xf16a}, {0x85a1,0xf16b},
- {0x85a2,0xf16c}, {0x85a3,0xf16d}, {0x85a4,0xf16e}, {0x85a5,0xf16f},
- {0x85a6,0xf170}, {0x85a7,0xf171}, {0x85a8,0xf172}, {0x85a9,0xf173},
- {0x85aa,0xf174}, {0x85ab,0xf175}, {0x85ac,0xf176}, {0x85ad,0xf177},
- {0x85ae,0xf178}, {0x85af,0xf179}, {0x85b0,0xf17a}, {0x85b1,0xf17b},
- {0x85b2,0xf17c}, {0x85b3,0xf17d}, {0x85b4,0xf17e}, {0x85b5,0xf17f},
- {0x85b6,0xf180}, {0x85b7,0xf181}, {0x85b8,0xf182}, {0x85b9,0xf183},
- {0x85ba,0xf184}, {0x85bb,0xf185}, {0x85bc,0xf186}, {0x85bd,0xf187},
- {0x85be,0xf188}, {0x85bf,0xf189}, {0x85c0,0xf18a}, {0x85c1,0xf18b},
- {0x85c2,0xf18c}, {0x85c3,0xf18d}, {0x85c4,0xf18e}, {0x85c5,0xf18f},
- {0x85c6,0xf190}, {0x85c7,0xf191}, {0x85c8,0xf192}, {0x85c9,0xf193},
- {0x85ca,0xf194}, {0x85cb,0xf195}, {0x85cc,0xf196}, {0x85cd,0xf197},
- {0x85ce,0xf198}, {0x85cf,0xf199}, {0x85d0,0xf19a}, {0x85d1,0xf19b},
- {0x85d2,0xf19c}, {0x85d3,0xf19d}, {0x85d4,0xf19e}, {0x85d5,0xf19f},
- {0x85d6,0xf1a0}, {0x85d7,0xf1a1}, {0x85d8,0xf1a2}, {0x85d9,0xf1a3},
- {0x85da,0xf1a4}, {0x85db,0xf1a5}, {0x85dc,0xf1a6}, {0x85dd,0xf1a7},
- {0x85de,0xf1a8}, {0x85df,0xf1a9}, {0x85e0,0xf1aa}, {0x85e1,0xf1ab},
- {0x85e2,0xf1ac}, {0x85e3,0xf1ad}, {0x85e4,0xf1ae}, {0x85e5,0xf1af},
- {0x85e6,0xf1b0}, {0x85e7,0xf1b1}, {0x85e8,0xf1b2}, {0x85e9,0xf1b3},
- {0x85ea,0xf1b4}, {0x85eb,0xf1b5}, {0x85ec,0xf1b6}, {0x85ed,0xf1b7},
- {0x85ee,0xf1b8}, {0x85ef,0xf1b9}, {0x85f0,0xf1ba}, {0x85f1,0xf1bb},
- {0x85f2,0xf1bc}, {0x85f3,0xf1bd}, {0x85f4,0xf1be}, {0x85f5,0xf1bf},
- {0x85f6,0xf1c0}, {0x85f7,0xf1c1}, {0x85f8,0xf1c2}, {0x85f9,0xf1c3},
- {0x85fa,0xf1c4}, {0x85fb,0xf1c5}, {0x85fc,0xf1c6}, {0x85fd,0xf1c7},
- {0x85fe,0xf1c8}, {0x8640,0xf1c9}, {0x8641,0xf1ca}, {0x8642,0xf1cb},
- {0x8643,0xf1cc}, {0x8644,0xf1cd}, {0x8645,0xf1ce}, {0x8646,0xf1cf},
- {0x8647,0xf1d0}, {0x8648,0xf1d1}, {0x8649,0xf1d2}, {0x864a,0xf1d3},
- {0x864b,0xf1d4}, {0x864c,0xf1d5}, {0x864d,0xf1d6}, {0x864e,0xf1d7},
- {0x864f,0xf1d8}, {0x8650,0xf1d9}, {0x8651,0xf1da}, {0x8652,0xf1db},
- {0x8653,0xf1dc}, {0x8654,0xf1dd}, {0x8655,0xf1de}, {0x8656,0xf1df},
- {0x8657,0xf1e0}, {0x8658,0xf1e1}, {0x8659,0xf1e2}, {0x865a,0xf1e3},
- {0x865b,0xf1e4}, {0x865c,0xf1e5}, {0x865d,0xf1e6}, {0x865e,0xf1e7},
- {0x865f,0xf1e8}, {0x8660,0xf1e9}, {0x8661,0xf1ea}, {0x8662,0xf1eb},
- {0x8663,0xf1ec}, {0x8664,0xf1ed}, {0x8665,0xf1ee}, {0x8666,0xf1ef},
- {0x8667,0xf1f0}, {0x8668,0xf1f1}, {0x8669,0xf1f2}, {0x866a,0xf1f3},
- {0x866b,0xf1f4}, {0x866c,0xf1f5}, {0x866d,0xf1f6}, {0x866e,0xf1f7},
- {0x866f,0xf1f8}, {0x8670,0xf1f9}, {0x8671,0xf1fa}, {0x8672,0xf1fb},
- {0x8673,0xf1fc}, {0x8674,0xf1fd}, {0x8675,0xf1fe}, {0x8676,0xf1ff},
- {0x8677,0xf200}, {0x8678,0xf201}, {0x8679,0xf202}, {0x867a,0xf203},
- {0x867b,0xf204}, {0x867c,0xf205}, {0x867d,0xf206}, {0x867e,0xf207},
- {0x86a1,0xf208}, {0x86a2,0xf209}, {0x86a3,0xf20a}, {0x86a4,0xf20b},
- {0x86a5,0xf20c}, {0x86a6,0xf20d}, {0x86a7,0xf20e}, {0x86a8,0xf20f},
- {0x86a9,0xf210}, {0x86aa,0xf211}, {0x86ab,0xf212}, {0x86ac,0xf213},
- {0x86ad,0xf214}, {0x86ae,0xf215}, {0x86af,0xf216}, {0x86b0,0xf217},
- {0x86b1,0xf218}, {0x86b2,0xf219}, {0x86b3,0xf21a}, {0x86b4,0xf21b},
- {0x86b5,0xf21c}, {0x86b6,0xf21d}, {0x86b7,0xf21e}, {0x86b8,0xf21f},
- {0x86b9,0xf220}, {0x86ba,0xf221}, {0x86bb,0xf222}, {0x86bc,0xf223},
- {0x86bd,0xf224}, {0x86be,0xf225}, {0x86bf,0xf226}, {0x86c0,0xf227},
- {0x86c1,0xf228}, {0x86c2,0xf229}, {0x86c3,0xf22a}, {0x86c4,0xf22b},
- {0x86c5,0xf22c}, {0x86c6,0xf22d}, {0x86c7,0xf22e}, {0x86c8,0xf22f},
- {0x86c9,0xf230}, {0x86ca,0xf231}, {0x86cb,0xf232}, {0x86cc,0xf233},
- {0x86cd,0xf234}, {0x86ce,0xf235}, {0x86cf,0xf236}, {0x86d0,0xf237},
- {0x86d1,0xf238}, {0x86d2,0xf239}, {0x86d3,0xf23a}, {0x86d4,0xf23b},
- {0x86d5,0xf23c}, {0x86d6,0xf23d}, {0x86d7,0xf23e}, {0x86d8,0xf23f},
- {0x86d9,0xf240}, {0x86da,0xf241}, {0x86db,0xf242}, {0x86dc,0xf243},
- {0x86dd,0xf244}, {0x86de,0xf245}, {0x86df,0xf246}, {0x86e0,0xf247},
- {0x86e1,0xf248}, {0x86e2,0xf249}, {0x86e3,0xf24a}, {0x86e4,0xf24b},
- {0x86e5,0xf24c}, {0x86e6,0xf24d}, {0x86e7,0xf24e}, {0x86e8,0xf24f},
- {0x86e9,0xf250}, {0x86ea,0xf251}, {0x86eb,0xf252}, {0x86ec,0xf253},
- {0x86ed,0xf254}, {0x86ee,0xf255}, {0x86ef,0xf256}, {0x86f0,0xf257},
- {0x86f1,0xf258}, {0x86f2,0xf259}, {0x86f3,0xf25a}, {0x86f4,0xf25b},
- {0x86f5,0xf25c}, {0x86f6,0xf25d}, {0x86f7,0xf25e}, {0x86f8,0xf25f},
- {0x86f9,0xf260}, {0x86fa,0xf261}, {0x86fb,0xf262}, {0x86fc,0xf263},
- {0x86fd,0xf264}, {0x86fe,0xf265}, {0x8740,0xf266}, {0x8741,0xf267},
- {0x8742,0xf268}, {0x8743,0xf269}, {0x8744,0xf26a}, {0x8745,0xf26b},
- {0x8746,0xf26c}, {0x8747,0xf26d}, {0x8748,0xf26e}, {0x8749,0xf26f},
- {0x874a,0xf270}, {0x874b,0xf271}, {0x874c,0xf272}, {0x874d,0xf273},
- {0x874e,0xf274}, {0x874f,0xf275}, {0x8750,0xf276}, {0x8751,0xf277},
- {0x8752,0xf278}, {0x8753,0xf279}, {0x8754,0xf27a}, {0x8755,0xf27b},
- {0x8756,0xf27c}, {0x8757,0xf27d}, {0x8758,0xf27e}, {0x8759,0xf27f},
- {0x875a,0xf280}, {0x875b,0xf281}, {0x875c,0xf282}, {0x875d,0xf283},
- {0x875e,0xf284}, {0x875f,0xf285}, {0x8760,0xf286}, {0x8761,0xf287},
- {0x8762,0xf288}, {0x8763,0xf289}, {0x8764,0xf28a}, {0x8765,0xf28b},
- {0x8766,0xf28c}, {0x8767,0xf28d}, {0x8768,0xf28e}, {0x8769,0xf28f},
- {0x876a,0xf290}, {0x876b,0xf291}, {0x876c,0xf292}, {0x876d,0xf293},
- {0x876e,0xf294}, {0x876f,0xf295}, {0x8770,0xf296}, {0x8771,0xf297},
- {0x8772,0xf298}, {0x8773,0xf299}, {0x8774,0xf29a}, {0x8775,0xf29b},
- {0x8776,0xf29c}, {0x8777,0xf29d}, {0x8778,0xf29e}, {0x8779,0xf29f},
- {0x877a,0xf2a0}, {0x877b,0xf2a1}, {0x877c,0xf2a2}, {0x877d,0xf2a3},
- {0x877e,0xf2a4}, {0x87a1,0xf2a5}, {0x87a2,0xf2a6}, {0x87a3,0xf2a7},
- {0x87a4,0xf2a8}, {0x87a5,0xf2a9}, {0x87a6,0xf2aa}, {0x87a7,0xf2ab},
- {0x87a8,0xf2ac}, {0x87a9,0xf2ad}, {0x87aa,0xf2ae}, {0x87ab,0xf2af},
- {0x87ac,0xf2b0}, {0x87ad,0xf2b1}, {0x87ae,0xf2b2}, {0x87af,0xf2b3},
- {0x87b0,0xf2b4}, {0x87b1,0xf2b5}, {0x87b2,0xf2b6}, {0x87b3,0xf2b7},
- {0x87b4,0xf2b8}, {0x87b5,0xf2b9}, {0x87b6,0xf2ba}, {0x87b7,0xf2bb},
- {0x87b8,0xf2bc}, {0x87b9,0xf2bd}, {0x87ba,0xf2be}, {0x87bb,0xf2bf},
- {0x87bc,0xf2c0}, {0x87bd,0xf2c1}, {0x87be,0xf2c2}, {0x87bf,0xf2c3},
- {0x87c0,0xf2c4}, {0x87c1,0xf2c5}, {0x87c2,0xf2c6}, {0x87c3,0xf2c7},
- {0x87c4,0xf2c8}, {0x87c5,0xf2c9}, {0x87c6,0xf2ca}, {0x87c7,0xf2cb},
- {0x87c8,0xf2cc}, {0x87c9,0xf2cd}, {0x87ca,0xf2ce}, {0x87cb,0xf2cf},
- {0x87cc,0xf2d0}, {0x87cd,0xf2d1}, {0x87ce,0xf2d2}, {0x87cf,0xf2d3},
- {0x87d0,0xf2d4}, {0x87d1,0xf2d5}, {0x87d2,0xf2d6}, {0x87d3,0xf2d7},
- {0x87d4,0xf2d8}, {0x87d5,0xf2d9}, {0x87d6,0xf2da}, {0x87d7,0xf2db},
- {0x87d8,0xf2dc}, {0x87d9,0xf2dd}, {0x87da,0xf2de}, {0x87db,0xf2df},
- {0x87dc,0xf2e0}, {0x87dd,0xf2e1}, {0x87de,0xf2e2}, {0x87df,0xf2e3},
- {0x87e0,0xf2e4}, {0x87e1,0xf2e5}, {0x87e2,0xf2e6}, {0x87e3,0xf2e7},
- {0x87e4,0xf2e8}, {0x87e5,0xf2e9}, {0x87e6,0xf2ea}, {0x87e7,0xf2eb},
- {0x87e8,0xf2ec}, {0x87e9,0xf2ed}, {0x87ea,0xf2ee}, {0x87eb,0xf2ef},
- {0x87ec,0xf2f0}, {0x87ed,0xf2f1}, {0x87ee,0xf2f2}, {0x87ef,0xf2f3},
- {0x87f0,0xf2f4}, {0x87f1,0xf2f5}, {0x87f2,0xf2f6}, {0x87f3,0xf2f7},
- {0x87f4,0xf2f8}, {0x87f5,0xf2f9}, {0x87f6,0xf2fa}, {0x87f7,0xf2fb},
- {0x87f8,0xf2fc}, {0x87f9,0xf2fd}, {0x87fa,0xf2fe}, {0x87fb,0xf2ff},
- {0x87fc,0xf300}, {0x87fd,0xf301}, {0x87fe,0xf302}, {0x8840,0xf303},
- {0x8841,0xf304}, {0x8842,0xf305}, {0x8843,0xf306}, {0x8844,0xf307},
- {0x8845,0xf308}, {0x8846,0xf309}, {0x8847,0xf30a}, {0x8848,0xf30b},
- {0x8849,0xf30c}, {0x884a,0xf30d}, {0x884b,0xf30e}, {0x884c,0xf30f},
- {0x884d,0xf310}, {0x884e,0xf311}, {0x884f,0xf312}, {0x8850,0xf313},
- {0x8851,0xf314}, {0x8852,0xf315}, {0x8853,0xf316}, {0x8854,0xf317},
- {0x8855,0xf318}, {0x8856,0xf319}, {0x8857,0xf31a}, {0x8858,0xf31b},
- {0x8859,0xf31c}, {0x885a,0xf31d}, {0x885b,0xf31e}, {0x885c,0xf31f},
- {0x885d,0xf320}, {0x885e,0xf321}, {0x885f,0xf322}, {0x8860,0xf323},
- {0x8861,0xf324}, {0x8862,0xf325}, {0x8863,0xf326}, {0x8864,0xf327},
- {0x8865,0xf328}, {0x8866,0xf329}, {0x8867,0xf32a}, {0x8868,0xf32b},
- {0x8869,0xf32c}, {0x886a,0xf32d}, {0x886b,0xf32e}, {0x886c,0xf32f},
- {0x886d,0xf330}, {0x886e,0xf331}, {0x886f,0xf332}, {0x8870,0xf333},
- {0x8871,0xf334}, {0x8872,0xf335}, {0x8873,0xf336}, {0x8874,0xf337},
- {0x8875,0xf338}, {0x8876,0xf339}, {0x8877,0xf33a}, {0x8878,0xf33b},
- {0x8879,0xf33c}, {0x887a,0xf33d}, {0x887b,0xf33e}, {0x887c,0xf33f},
- {0x887d,0xf340}, {0x887e,0xf341}, {0x88a1,0xf342}, {0x88a2,0xf343},
- {0x88a3,0xf344}, {0x88a4,0xf345}, {0x88a5,0xf346}, {0x88a6,0xf347},
- {0x88a7,0xf348}, {0x88a8,0xf349}, {0x88a9,0xf34a}, {0x88aa,0xf34b},
- {0x88ab,0xf34c}, {0x88ac,0xf34d}, {0x88ad,0xf34e}, {0x88ae,0xf34f},
- {0x88af,0xf350}, {0x88b0,0xf351}, {0x88b1,0xf352}, {0x88b2,0xf353},
- {0x88b3,0xf354}, {0x88b4,0xf355}, {0x88b5,0xf356}, {0x88b6,0xf357},
- {0x88b7,0xf358}, {0x88b8,0xf359}, {0x88b9,0xf35a}, {0x88ba,0xf35b},
- {0x88bb,0xf35c}, {0x88bc,0xf35d}, {0x88bd,0xf35e}, {0x88be,0xf35f},
- {0x88bf,0xf360}, {0x88c0,0xf361}, {0x88c1,0xf362}, {0x88c2,0xf363},
- {0x88c3,0xf364}, {0x88c4,0xf365}, {0x88c5,0xf366}, {0x88c6,0xf367},
- {0x88c7,0xf368}, {0x88c8,0xf369}, {0x88c9,0xf36a}, {0x88ca,0xf36b},
- {0x88cb,0xf36c}, {0x88cc,0xf36d}, {0x88cd,0xf36e}, {0x88ce,0xf36f},
- {0x88cf,0xf370}, {0x88d0,0xf371}, {0x88d1,0xf372}, {0x88d2,0xf373},
- {0x88d3,0xf374}, {0x88d4,0xf375}, {0x88d5,0xf376}, {0x88d6,0xf377},
- {0x88d7,0xf378}, {0x88d8,0xf379}, {0x88d9,0xf37a}, {0x88da,0xf37b},
- {0x88db,0xf37c}, {0x88dc,0xf37d}, {0x88dd,0xf37e}, {0x88de,0xf37f},
- {0x88df,0xf380}, {0x88e0,0xf381}, {0x88e1,0xf382}, {0x88e2,0xf383},
- {0x88e3,0xf384}, {0x88e4,0xf385}, {0x88e5,0xf386}, {0x88e6,0xf387},
- {0x88e7,0xf388}, {0x88e8,0xf389}, {0x88e9,0xf38a}, {0x88ea,0xf38b},
- {0x88eb,0xf38c}, {0x88ec,0xf38d}, {0x88ed,0xf38e}, {0x88ee,0xf38f},
- {0x88ef,0xf390}, {0x88f0,0xf391}, {0x88f1,0xf392}, {0x88f2,0xf393},
- {0x88f3,0xf394}, {0x88f4,0xf395}, {0x88f5,0xf396}, {0x88f6,0xf397},
- {0x88f7,0xf398}, {0x88f8,0xf399}, {0x88f9,0xf39a}, {0x88fa,0xf39b},
- {0x88fb,0xf39c}, {0x88fc,0xf39d}, {0x88fd,0xf39e}, {0x88fe,0xf39f},
- {0x8940,0xf3a0}, {0x8941,0xf3a1}, {0x8942,0xf3a2}, {0x8943,0xf3a3},
- {0x8944,0xf3a4}, {0x8945,0xf3a5}, {0x8946,0xf3a6}, {0x8947,0xf3a7},
- {0x8948,0xf3a8}, {0x8949,0xf3a9}, {0x894a,0xf3aa}, {0x894b,0xf3ab},
- {0x894c,0xf3ac}, {0x894d,0xf3ad}, {0x894e,0xf3ae}, {0x894f,0xf3af},
- {0x8950,0xf3b0}, {0x8951,0xf3b1}, {0x8952,0xf3b2}, {0x8953,0xf3b3},
- {0x8954,0xf3b4}, {0x8955,0xf3b5}, {0x8956,0xf3b6}, {0x8957,0xf3b7},
- {0x8958,0xf3b8}, {0x8959,0xf3b9}, {0x895a,0xf3ba}, {0x895b,0xf3bb},
- {0x895c,0xf3bc}, {0x895d,0xf3bd}, {0x895e,0xf3be}, {0x895f,0xf3bf},
- {0x8960,0xf3c0}, {0x8961,0xf3c1}, {0x8962,0xf3c2}, {0x8963,0xf3c3},
- {0x8964,0xf3c4}, {0x8965,0xf3c5}, {0x8966,0xf3c6}, {0x8967,0xf3c7},
- {0x8968,0xf3c8}, {0x8969,0xf3c9}, {0x896a,0xf3ca}, {0x896b,0xf3cb},
- {0x896c,0xf3cc}, {0x896d,0xf3cd}, {0x896e,0xf3ce}, {0x896f,0xf3cf},
- {0x8970,0xf3d0}, {0x8971,0xf3d1}, {0x8972,0xf3d2}, {0x8973,0xf3d3},
- {0x8974,0xf3d4}, {0x8975,0xf3d5}, {0x8976,0xf3d6}, {0x8977,0xf3d7},
- {0x8978,0xf3d8}, {0x8979,0xf3d9}, {0x897a,0xf3da}, {0x897b,0xf3db},
- {0x897c,0xf3dc}, {0x897d,0xf3dd}, {0x897e,0xf3de}, {0x89a1,0xf3df},
- {0x89a2,0xf3e0}, {0x89a3,0xf3e1}, {0x89a4,0xf3e2}, {0x89a5,0xf3e3},
- {0x89a6,0xf3e4}, {0x89a7,0xf3e5}, {0x89a8,0xf3e6}, {0x89a9,0xf3e7},
- {0x89aa,0xf3e8}, {0x89ab,0xf3e9}, {0x89ac,0xf3ea}, {0x89ad,0xf3eb},
- {0x89ae,0xf3ec}, {0x89af,0xf3ed}, {0x89b0,0xf3ee}, {0x89b1,0xf3ef},
- {0x89b2,0xf3f0}, {0x89b3,0xf3f1}, {0x89b4,0xf3f2}, {0x89b5,0xf3f3},
- {0x89b6,0xf3f4}, {0x89b7,0xf3f5}, {0x89b8,0xf3f6}, {0x89b9,0xf3f7},
- {0x89ba,0xf3f8}, {0x89bb,0xf3f9}, {0x89bc,0xf3fa}, {0x89bd,0xf3fb},
- {0x89be,0xf3fc}, {0x89bf,0xf3fd}, {0x89c0,0xf3fe}, {0x89c1,0xf3ff},
- {0x89c2,0xf400}, {0x89c3,0xf401}, {0x89c4,0xf402}, {0x89c5,0xf403},
- {0x89c6,0xf404}, {0x89c7,0xf405}, {0x89c8,0xf406}, {0x89c9,0xf407},
- {0x89ca,0xf408}, {0x89cb,0xf409}, {0x89cc,0xf40a}, {0x89cd,0xf40b},
- {0x89ce,0xf40c}, {0x89cf,0xf40d}, {0x89d0,0xf40e}, {0x89d1,0xf40f},
- {0x89d2,0xf410}, {0x89d3,0xf411}, {0x89d4,0xf412}, {0x89d5,0xf413},
- {0x89d6,0xf414}, {0x89d7,0xf415}, {0x89d8,0xf416}, {0x89d9,0xf417},
- {0x89da,0xf418}, {0x89db,0xf419}, {0x89dc,0xf41a}, {0x89dd,0xf41b},
- {0x89de,0xf41c}, {0x89df,0xf41d}, {0x89e0,0xf41e}, {0x89e1,0xf41f},
- {0x89e2,0xf420}, {0x89e3,0xf421}, {0x89e4,0xf422}, {0x89e5,0xf423},
- {0x89e6,0xf424}, {0x89e7,0xf425}, {0x89e8,0xf426}, {0x89e9,0xf427},
- {0x89ea,0xf428}, {0x89eb,0xf429}, {0x89ec,0xf42a}, {0x89ed,0xf42b},
- {0x89ee,0xf42c}, {0x89ef,0xf42d}, {0x89f0,0xf42e}, {0x89f1,0xf42f},
- {0x89f2,0xf430}, {0x89f3,0xf431}, {0x89f4,0xf432}, {0x89f5,0xf433},
- {0x89f6,0xf434}, {0x89f7,0xf435}, {0x89f8,0xf436}, {0x89f9,0xf437},
- {0x89fa,0xf438}, {0x89fb,0xf439}, {0x89fc,0xf43a}, {0x89fd,0xf43b},
- {0x89fe,0xf43c}, {0x8a40,0xf43d}, {0x8a41,0xf43e}, {0x8a42,0xf43f},
- {0x8a43,0xf440}, {0x8a44,0xf441}, {0x8a45,0xf442}, {0x8a46,0xf443},
- {0x8a47,0xf444}, {0x8a48,0xf445}, {0x8a49,0xf446}, {0x8a4a,0xf447},
- {0x8a4b,0xf448}, {0x8a4c,0xf449}, {0x8a4d,0xf44a}, {0x8a4e,0xf44b},
- {0x8a4f,0xf44c}, {0x8a50,0xf44d}, {0x8a51,0xf44e}, {0x8a52,0xf44f},
- {0x8a53,0xf450}, {0x8a54,0xf451}, {0x8a55,0xf452}, {0x8a56,0xf453},
- {0x8a57,0xf454}, {0x8a58,0xf455}, {0x8a59,0xf456}, {0x8a5a,0xf457},
- {0x8a5b,0xf458}, {0x8a5c,0xf459}, {0x8a5d,0xf45a}, {0x8a5e,0xf45b},
- {0x8a5f,0xf45c}, {0x8a60,0xf45d}, {0x8a61,0xf45e}, {0x8a62,0xf45f},
- {0x8a63,0xf460}, {0x8a64,0xf461}, {0x8a65,0xf462}, {0x8a66,0xf463},
- {0x8a67,0xf464}, {0x8a68,0xf465}, {0x8a69,0xf466}, {0x8a6a,0xf467},
- {0x8a6b,0xf468}, {0x8a6c,0xf469}, {0x8a6d,0xf46a}, {0x8a6e,0xf46b},
- {0x8a6f,0xf46c}, {0x8a70,0xf46d}, {0x8a71,0xf46e}, {0x8a72,0xf46f},
- {0x8a73,0xf470}, {0x8a74,0xf471}, {0x8a75,0xf472}, {0x8a76,0xf473},
- {0x8a77,0xf474}, {0x8a78,0xf475}, {0x8a79,0xf476}, {0x8a7a,0xf477},
- {0x8a7b,0xf478}, {0x8a7c,0xf479}, {0x8a7d,0xf47a}, {0x8a7e,0xf47b},
- {0x8aa1,0xf47c}, {0x8aa2,0xf47d}, {0x8aa3,0xf47e}, {0x8aa4,0xf47f},
- {0x8aa5,0xf480}, {0x8aa6,0xf481}, {0x8aa7,0xf482}, {0x8aa8,0xf483},
- {0x8aa9,0xf484}, {0x8aaa,0xf485}, {0x8aab,0xf486}, {0x8aac,0xf487},
- {0x8aad,0xf488}, {0x8aae,0xf489}, {0x8aaf,0xf48a}, {0x8ab0,0xf48b},
- {0x8ab1,0xf48c}, {0x8ab2,0xf48d}, {0x8ab3,0xf48e}, {0x8ab4,0xf48f},
- {0x8ab5,0xf490}, {0x8ab6,0xf491}, {0x8ab7,0xf492}, {0x8ab8,0xf493},
- {0x8ab9,0xf494}, {0x8aba,0xf495}, {0x8abb,0xf496}, {0x8abc,0xf497},
- {0x8abd,0xf498}, {0x8abe,0xf499}, {0x8abf,0xf49a}, {0x8ac0,0xf49b},
- {0x8ac1,0xf49c}, {0x8ac2,0xf49d}, {0x8ac3,0xf49e}, {0x8ac4,0xf49f},
- {0x8ac5,0xf4a0}, {0x8ac6,0xf4a1}, {0x8ac7,0xf4a2}, {0x8ac8,0xf4a3},
- {0x8ac9,0xf4a4}, {0x8aca,0xf4a5}, {0x8acb,0xf4a6}, {0x8acc,0xf4a7},
- {0x8acd,0xf4a8}, {0x8ace,0xf4a9}, {0x8acf,0xf4aa}, {0x8ad0,0xf4ab},
- {0x8ad1,0xf4ac}, {0x8ad2,0xf4ad}, {0x8ad3,0xf4ae}, {0x8ad4,0xf4af},
- {0x8ad5,0xf4b0}, {0x8ad6,0xf4b1}, {0x8ad7,0xf4b2}, {0x8ad8,0xf4b3},
- {0x8ad9,0xf4b4}, {0x8ada,0xf4b5}, {0x8adb,0xf4b6}, {0x8adc,0xf4b7},
- {0x8add,0xf4b8}, {0x8ade,0xf4b9}, {0x8adf,0xf4ba}, {0x8ae0,0xf4bb},
- {0x8ae1,0xf4bc}, {0x8ae2,0xf4bd}, {0x8ae3,0xf4be}, {0x8ae4,0xf4bf},
- {0x8ae5,0xf4c0}, {0x8ae6,0xf4c1}, {0x8ae7,0xf4c2}, {0x8ae8,0xf4c3},
- {0x8ae9,0xf4c4}, {0x8aea,0xf4c5}, {0x8aeb,0xf4c6}, {0x8aec,0xf4c7},
- {0x8aed,0xf4c8}, {0x8aee,0xf4c9}, {0x8aef,0xf4ca}, {0x8af0,0xf4cb},
- {0x8af1,0xf4cc}, {0x8af2,0xf4cd}, {0x8af3,0xf4ce}, {0x8af4,0xf4cf},
- {0x8af5,0xf4d0}, {0x8af6,0xf4d1}, {0x8af7,0xf4d2}, {0x8af8,0xf4d3},
- {0x8af9,0xf4d4}, {0x8afa,0xf4d5}, {0x8afb,0xf4d6}, {0x8afc,0xf4d7},
- {0x8afd,0xf4d8}, {0x8afe,0xf4d9}, {0x8b40,0xf4da}, {0x8b41,0xf4db},
- {0x8b42,0xf4dc}, {0x8b43,0xf4dd}, {0x8b44,0xf4de}, {0x8b45,0xf4df},
- {0x8b46,0xf4e0}, {0x8b47,0xf4e1}, {0x8b48,0xf4e2}, {0x8b49,0xf4e3},
- {0x8b4a,0xf4e4}, {0x8b4b,0xf4e5}, {0x8b4c,0xf4e6}, {0x8b4d,0xf4e7},
- {0x8b4e,0xf4e8}, {0x8b4f,0xf4e9}, {0x8b50,0xf4ea}, {0x8b51,0xf4eb},
- {0x8b52,0xf4ec}, {0x8b53,0xf4ed}, {0x8b54,0xf4ee}, {0x8b55,0xf4ef},
- {0x8b56,0xf4f0}, {0x8b57,0xf4f1}, {0x8b58,0xf4f2}, {0x8b59,0xf4f3},
- {0x8b5a,0xf4f4}, {0x8b5b,0xf4f5}, {0x8b5c,0xf4f6}, {0x8b5d,0xf4f7},
- {0x8b5e,0xf4f8}, {0x8b5f,0xf4f9}, {0x8b60,0xf4fa}, {0x8b61,0xf4fb},
- {0x8b62,0xf4fc}, {0x8b63,0xf4fd}, {0x8b64,0xf4fe}, {0x8b65,0xf4ff},
- {0x8b66,0xf500}, {0x8b67,0xf501}, {0x8b68,0xf502}, {0x8b69,0xf503},
- {0x8b6a,0xf504}, {0x8b6b,0xf505}, {0x8b6c,0xf506}, {0x8b6d,0xf507},
- {0x8b6e,0xf508}, {0x8b6f,0xf509}, {0x8b70,0xf50a}, {0x8b71,0xf50b},
- {0x8b72,0xf50c}, {0x8b73,0xf50d}, {0x8b74,0xf50e}, {0x8b75,0xf50f},
- {0x8b76,0xf510}, {0x8b77,0xf511}, {0x8b78,0xf512}, {0x8b79,0xf513},
- {0x8b7a,0xf514}, {0x8b7b,0xf515}, {0x8b7c,0xf516}, {0x8b7d,0xf517},
- {0x8b7e,0xf518}, {0x8ba1,0xf519}, {0x8ba2,0xf51a}, {0x8ba3,0xf51b},
- {0x8ba4,0xf51c}, {0x8ba5,0xf51d}, {0x8ba6,0xf51e}, {0x8ba7,0xf51f},
- {0x8ba8,0xf520}, {0x8ba9,0xf521}, {0x8baa,0xf522}, {0x8bab,0xf523},
- {0x8bac,0xf524}, {0x8bad,0xf525}, {0x8bae,0xf526}, {0x8baf,0xf527},
- {0x8bb0,0xf528}, {0x8bb1,0xf529}, {0x8bb2,0xf52a}, {0x8bb3,0xf52b},
- {0x8bb4,0xf52c}, {0x8bb5,0xf52d}, {0x8bb6,0xf52e}, {0x8bb7,0xf52f},
- {0x8bb8,0xf530}, {0x8bb9,0xf531}, {0x8bba,0xf532}, {0x8bbb,0xf533},
- {0x8bbc,0xf534}, {0x8bbd,0xf535}, {0x8bbe,0xf536}, {0x8bbf,0xf537},
- {0x8bc0,0xf538}, {0x8bc1,0xf539}, {0x8bc2,0xf53a}, {0x8bc3,0xf53b},
- {0x8bc4,0xf53c}, {0x8bc5,0xf53d}, {0x8bc6,0xf53e}, {0x8bc7,0xf53f},
- {0x8bc8,0xf540}, {0x8bc9,0xf541}, {0x8bca,0xf542}, {0x8bcb,0xf543},
- {0x8bcc,0xf544}, {0x8bcd,0xf545}, {0x8bce,0xf546}, {0x8bcf,0xf547},
- {0x8bd0,0xf548}, {0x8bd1,0xf549}, {0x8bd2,0xf54a}, {0x8bd3,0xf54b},
- {0x8bd4,0xf54c}, {0x8bd5,0xf54d}, {0x8bd6,0xf54e}, {0x8bd7,0xf54f},
- {0x8bd8,0xf550}, {0x8bd9,0xf551}, {0x8bda,0xf552}, {0x8bdb,0xf553},
- {0x8bdc,0xf554}, {0x8bdd,0xf555}, {0x8bde,0xf556}, {0x8bdf,0xf557},
- {0x8be0,0xf558}, {0x8be1,0xf559}, {0x8be2,0xf55a}, {0x8be3,0xf55b},
- {0x8be4,0xf55c}, {0x8be5,0xf55d}, {0x8be6,0xf55e}, {0x8be7,0xf55f},
- {0x8be8,0xf560}, {0x8be9,0xf561}, {0x8bea,0xf562}, {0x8beb,0xf563},
- {0x8bec,0xf564}, {0x8bed,0xf565}, {0x8bee,0xf566}, {0x8bef,0xf567},
- {0x8bf0,0xf568}, {0x8bf1,0xf569}, {0x8bf2,0xf56a}, {0x8bf3,0xf56b},
- {0x8bf4,0xf56c}, {0x8bf5,0xf56d}, {0x8bf6,0xf56e}, {0x8bf7,0xf56f},
- {0x8bf8,0xf570}, {0x8bf9,0xf571}, {0x8bfa,0xf572}, {0x8bfb,0xf573},
- {0x8bfc,0xf574}, {0x8bfd,0xf575}, {0x8bfe,0xf576}, {0x8c40,0xf577},
- {0x8c41,0xf578}, {0x8c42,0xf579}, {0x8c43,0xf57a}, {0x8c44,0xf57b},
- {0x8c45,0xf57c}, {0x8c46,0xf57d}, {0x8c47,0xf57e}, {0x8c48,0xf57f},
- {0x8c49,0xf580}, {0x8c4a,0xf581}, {0x8c4b,0xf582}, {0x8c4c,0xf583},
- {0x8c4d,0xf584}, {0x8c4e,0xf585}, {0x8c4f,0xf586}, {0x8c50,0xf587},
- {0x8c51,0xf588}, {0x8c52,0xf589}, {0x8c53,0xf58a}, {0x8c54,0xf58b},
- {0x8c55,0xf58c}, {0x8c56,0xf58d}, {0x8c57,0xf58e}, {0x8c58,0xf58f},
- {0x8c59,0xf590}, {0x8c5a,0xf591}, {0x8c5b,0xf592}, {0x8c5c,0xf593},
- {0x8c5d,0xf594}, {0x8c5e,0xf595}, {0x8c5f,0xf596}, {0x8c60,0xf597},
- {0x8c61,0xf598}, {0x8c62,0xf599}, {0x8c63,0xf59a}, {0x8c64,0xf59b},
- {0x8c65,0xf59c}, {0x8c66,0xf59d}, {0x8c67,0xf59e}, {0x8c68,0xf59f},
- {0x8c69,0xf5a0}, {0x8c6a,0xf5a1}, {0x8c6b,0xf5a2}, {0x8c6c,0xf5a3},
- {0x8c6d,0xf5a4}, {0x8c6e,0xf5a5}, {0x8c6f,0xf5a6}, {0x8c70,0xf5a7},
- {0x8c71,0xf5a8}, {0x8c72,0xf5a9}, {0x8c73,0xf5aa}, {0x8c74,0xf5ab},
- {0x8c75,0xf5ac}, {0x8c76,0xf5ad}, {0x8c77,0xf5ae}, {0x8c78,0xf5af},
- {0x8c79,0xf5b0}, {0x8c7a,0xf5b1}, {0x8c7b,0xf5b2}, {0x8c7c,0xf5b3},
- {0x8c7d,0xf5b4}, {0x8c7e,0xf5b5}, {0x8ca1,0xf5b6}, {0x8ca2,0xf5b7},
- {0x8ca3,0xf5b8}, {0x8ca4,0xf5b9}, {0x8ca5,0xf5ba}, {0x8ca6,0xf5bb},
- {0x8ca7,0xf5bc}, {0x8ca8,0xf5bd}, {0x8ca9,0xf5be}, {0x8caa,0xf5bf},
- {0x8cab,0xf5c0}, {0x8cac,0xf5c1}, {0x8cad,0xf5c2}, {0x8cae,0xf5c3},
- {0x8caf,0xf5c4}, {0x8cb0,0xf5c5}, {0x8cb1,0xf5c6}, {0x8cb2,0xf5c7},
- {0x8cb3,0xf5c8}, {0x8cb4,0xf5c9}, {0x8cb5,0xf5ca}, {0x8cb6,0xf5cb},
- {0x8cb7,0xf5cc}, {0x8cb8,0xf5cd}, {0x8cb9,0xf5ce}, {0x8cba,0xf5cf},
- {0x8cbb,0xf5d0}, {0x8cbc,0xf5d1}, {0x8cbd,0xf5d2}, {0x8cbe,0xf5d3},
- {0x8cbf,0xf5d4}, {0x8cc0,0xf5d5}, {0x8cc1,0xf5d6}, {0x8cc2,0xf5d7},
- {0x8cc3,0xf5d8}, {0x8cc4,0xf5d9}, {0x8cc5,0xf5da}, {0x8cc6,0xf5db},
- {0x8cc7,0xf5dc}, {0x8cc8,0xf5dd}, {0x8cc9,0xf5de}, {0x8cca,0xf5df},
- {0x8ccb,0xf5e0}, {0x8ccc,0xf5e1}, {0x8ccd,0xf5e2}, {0x8cce,0xf5e3},
- {0x8ccf,0xf5e4}, {0x8cd0,0xf5e5}, {0x8cd1,0xf5e6}, {0x8cd2,0xf5e7},
- {0x8cd3,0xf5e8}, {0x8cd4,0xf5e9}, {0x8cd5,0xf5ea}, {0x8cd6,0xf5eb},
- {0x8cd7,0xf5ec}, {0x8cd8,0xf5ed}, {0x8cd9,0xf5ee}, {0x8cda,0xf5ef},
- {0x8cdb,0xf5f0}, {0x8cdc,0xf5f1}, {0x8cdd,0xf5f2}, {0x8cde,0xf5f3},
- {0x8cdf,0xf5f4}, {0x8ce0,0xf5f5}, {0x8ce1,0xf5f6}, {0x8ce2,0xf5f7},
- {0x8ce3,0xf5f8}, {0x8ce4,0xf5f9}, {0x8ce5,0xf5fa}, {0x8ce6,0xf5fb},
- {0x8ce7,0xf5fc}, {0x8ce8,0xf5fd}, {0x8ce9,0xf5fe}, {0x8cea,0xf5ff},
- {0x8ceb,0xf600}, {0x8cec,0xf601}, {0x8ced,0xf602}, {0x8cee,0xf603},
- {0x8cef,0xf604}, {0x8cf0,0xf605}, {0x8cf1,0xf606}, {0x8cf2,0xf607},
- {0x8cf3,0xf608}, {0x8cf4,0xf609}, {0x8cf5,0xf60a}, {0x8cf6,0xf60b},
- {0x8cf7,0xf60c}, {0x8cf8,0xf60d}, {0x8cf9,0xf60e}, {0x8cfa,0xf60f},
- {0x8cfb,0xf610}, {0x8cfc,0xf611}, {0x8cfd,0xf612}, {0x8cfe,0xf613},
- {0x8d40,0xf614}, {0x8d41,0xf615}, {0x8d42,0xf616}, {0x8d43,0xf617},
- {0x8d44,0xf618}, {0x8d45,0xf619}, {0x8d46,0xf61a}, {0x8d47,0xf61b},
- {0x8d48,0xf61c}, {0x8d49,0xf61d}, {0x8d4a,0xf61e}, {0x8d4b,0xf61f},
- {0x8d4c,0xf620}, {0x8d4d,0xf621}, {0x8d4e,0xf622}, {0x8d4f,0xf623},
- {0x8d50,0xf624}, {0x8d51,0xf625}, {0x8d52,0xf626}, {0x8d53,0xf627},
- {0x8d54,0xf628}, {0x8d55,0xf629}, {0x8d56,0xf62a}, {0x8d57,0xf62b},
- {0x8d58,0xf62c}, {0x8d59,0xf62d}, {0x8d5a,0xf62e}, {0x8d5b,0xf62f},
- {0x8d5c,0xf630}, {0x8d5d,0xf631}, {0x8d5e,0xf632}, {0x8d5f,0xf633},
- {0x8d60,0xf634}, {0x8d61,0xf635}, {0x8d62,0xf636}, {0x8d63,0xf637},
- {0x8d64,0xf638}, {0x8d65,0xf639}, {0x8d66,0xf63a}, {0x8d67,0xf63b},
- {0x8d68,0xf63c}, {0x8d69,0xf63d}, {0x8d6a,0xf63e}, {0x8d6b,0xf63f},
- {0x8d6c,0xf640}, {0x8d6d,0xf641}, {0x8d6e,0xf642}, {0x8d6f,0xf643},
- {0x8d70,0xf644}, {0x8d71,0xf645}, {0x8d72,0xf646}, {0x8d73,0xf647},
- {0x8d74,0xf648}, {0x8d75,0xf649}, {0x8d76,0xf64a}, {0x8d77,0xf64b},
- {0x8d78,0xf64c}, {0x8d79,0xf64d}, {0x8d7a,0xf64e}, {0x8d7b,0xf64f},
- {0x8d7c,0xf650}, {0x8d7d,0xf651}, {0x8d7e,0xf652}, {0x8da1,0xf653},
- {0x8da2,0xf654}, {0x8da3,0xf655}, {0x8da4,0xf656}, {0x8da5,0xf657},
- {0x8da6,0xf658}, {0x8da7,0xf659}, {0x8da8,0xf65a}, {0x8da9,0xf65b},
- {0x8daa,0xf65c}, {0x8dab,0xf65d}, {0x8dac,0xf65e}, {0x8dad,0xf65f},
- {0x8dae,0xf660}, {0x8daf,0xf661}, {0x8db0,0xf662}, {0x8db1,0xf663},
- {0x8db2,0xf664}, {0x8db3,0xf665}, {0x8db4,0xf666}, {0x8db5,0xf667},
- {0x8db6,0xf668}, {0x8db7,0xf669}, {0x8db8,0xf66a}, {0x8db9,0xf66b},
- {0x8dba,0xf66c}, {0x8dbb,0xf66d}, {0x8dbc,0xf66e}, {0x8dbd,0xf66f},
- {0x8dbe,0xf670}, {0x8dbf,0xf671}, {0x8dc0,0xf672}, {0x8dc1,0xf673},
- {0x8dc2,0xf674}, {0x8dc3,0xf675}, {0x8dc4,0xf676}, {0x8dc5,0xf677},
- {0x8dc6,0xf678}, {0x8dc7,0xf679}, {0x8dc8,0xf67a}, {0x8dc9,0xf67b},
- {0x8dca,0xf67c}, {0x8dcb,0xf67d}, {0x8dcc,0xf67e}, {0x8dcd,0xf67f},
- {0x8dce,0xf680}, {0x8dcf,0xf681}, {0x8dd0,0xf682}, {0x8dd1,0xf683},
- {0x8dd2,0xf684}, {0x8dd3,0xf685}, {0x8dd4,0xf686}, {0x8dd5,0xf687},
- {0x8dd6,0xf688}, {0x8dd7,0xf689}, {0x8dd8,0xf68a}, {0x8dd9,0xf68b},
- {0x8dda,0xf68c}, {0x8ddb,0xf68d}, {0x8ddc,0xf68e}, {0x8ddd,0xf68f},
- {0x8dde,0xf690}, {0x8ddf,0xf691}, {0x8de0,0xf692}, {0x8de1,0xf693},
- {0x8de2,0xf694}, {0x8de3,0xf695}, {0x8de4,0xf696}, {0x8de5,0xf697},
- {0x8de6,0xf698}, {0x8de7,0xf699}, {0x8de8,0xf69a}, {0x8de9,0xf69b},
- {0x8dea,0xf69c}, {0x8deb,0xf69d}, {0x8dec,0xf69e}, {0x8ded,0xf69f},
- {0x8dee,0xf6a0}, {0x8def,0xf6a1}, {0x8df0,0xf6a2}, {0x8df1,0xf6a3},
- {0x8df2,0xf6a4}, {0x8df3,0xf6a5}, {0x8df4,0xf6a6}, {0x8df5,0xf6a7},
- {0x8df6,0xf6a8}, {0x8df7,0xf6a9}, {0x8df8,0xf6aa}, {0x8df9,0xf6ab},
- {0x8dfa,0xf6ac}, {0x8dfb,0xf6ad}, {0x8dfc,0xf6ae}, {0x8dfd,0xf6af},
- {0x8dfe,0xf6b0}
-};
-static const B5Map b5_8E40_to_uc_map[] = {
- /* 0x8E40 - 0xA0FE */
- {0x8e40,0xe311}, {0x8e41,0xe312}, {0x8e42,0xe313}, {0x8e43,0xe314},
- {0x8e44,0xe315}, {0x8e45,0xe316}, {0x8e46,0xe317}, {0x8e47,0xe318},
- {0x8e48,0xe319}, {0x8e49,0xe31a}, {0x8e4a,0xe31b}, {0x8e4b,0xe31c},
- {0x8e4c,0xe31d}, {0x8e4d,0xe31e}, {0x8e4e,0xe31f}, {0x8e4f,0xe320},
- {0x8e50,0xe321}, {0x8e51,0xe322}, {0x8e52,0xe323}, {0x8e53,0xe324},
- {0x8e54,0xe325}, {0x8e55,0xe326}, {0x8e56,0xe327}, {0x8e57,0xe328},
- {0x8e58,0xe329}, {0x8e59,0xe32a}, {0x8e5a,0xe32b}, {0x8e5b,0xe32c},
- {0x8e5c,0xe32d}, {0x8e5d,0xe32e}, {0x8e5e,0xe32f}, {0x8e5f,0xe330},
- {0x8e60,0xe331}, {0x8e61,0xe332}, {0x8e62,0xe333}, {0x8e63,0xe334},
- {0x8e64,0xe335}, {0x8e65,0xe336}, {0x8e66,0xe337}, {0x8e67,0xe338},
- {0x8e68,0xe339}, {0x8e69,0xe33a}, {0x8e6a,0xe33b}, {0x8e6b,0xe33c},
- {0x8e6c,0xe33d}, {0x8e6d,0xe33e}, {0x8e6e,0xe33f}, {0x8e6f,0xe340},
- {0x8e70,0xe341}, {0x8e71,0xe342}, {0x8e72,0xe343}, {0x8e73,0xe344},
- {0x8e74,0xe345}, {0x8e75,0xe346}, {0x8e76,0xe347}, {0x8e77,0xe348},
- {0x8e78,0xe349}, {0x8e79,0xe34a}, {0x8e7a,0xe34b}, {0x8e7b,0xe34c},
- {0x8e7c,0xe34d}, {0x8e7d,0xe34e}, {0x8e7e,0xe34f}, {0x8ea1,0xe350},
- {0x8ea2,0xe351}, {0x8ea3,0xe352}, {0x8ea4,0xe353}, {0x8ea5,0xe354},
- {0x8ea6,0xe355}, {0x8ea7,0xe356}, {0x8ea8,0xe357}, {0x8ea9,0xe358},
- {0x8eaa,0xe359}, {0x8eab,0xe35a}, {0x8eac,0xe35b}, {0x8ead,0xe35c},
- {0x8eae,0xe35d}, {0x8eaf,0xe35e}, {0x8eb0,0xe35f}, {0x8eb1,0xe360},
- {0x8eb2,0xe361}, {0x8eb3,0xe362}, {0x8eb4,0xe363}, {0x8eb5,0xe364},
- {0x8eb6,0xe365}, {0x8eb7,0xe366}, {0x8eb8,0xe367}, {0x8eb9,0xe368},
- {0x8eba,0xe369}, {0x8ebb,0xe36a}, {0x8ebc,0xe36b}, {0x8ebd,0xe36c},
- {0x8ebe,0xe36d}, {0x8ebf,0xe36e}, {0x8ec0,0xe36f}, {0x8ec1,0xe370},
- {0x8ec2,0xe371}, {0x8ec3,0xe372}, {0x8ec4,0xe373}, {0x8ec5,0xe374},
- {0x8ec6,0xe375}, {0x8ec7,0xe376}, {0x8ec8,0xe377}, {0x8ec9,0xe378},
- {0x8eca,0xe379}, {0x8ecb,0xe37a}, {0x8ecc,0xe37b}, {0x8ecd,0xe37c},
- {0x8ece,0xe37d}, {0x8ecf,0xe37e}, {0x8ed0,0xe37f}, {0x8ed1,0xe380},
- {0x8ed2,0xe381}, {0x8ed3,0xe382}, {0x8ed4,0xe383}, {0x8ed5,0xe384},
- {0x8ed6,0xe385}, {0x8ed7,0xe386}, {0x8ed8,0xe387}, {0x8ed9,0xe388},
- {0x8eda,0xe389}, {0x8edb,0xe38a}, {0x8edc,0xe38b}, {0x8edd,0xe38c},
- {0x8ede,0xe38d}, {0x8edf,0xe38e}, {0x8ee0,0xe38f}, {0x8ee1,0xe390},
- {0x8ee2,0xe391}, {0x8ee3,0xe392}, {0x8ee4,0xe393}, {0x8ee5,0xe394},
- {0x8ee6,0xe395}, {0x8ee7,0xe396}, {0x8ee8,0xe397}, {0x8ee9,0xe398},
- {0x8eea,0xe399}, {0x8eeb,0xe39a}, {0x8eec,0xe39b}, {0x8eed,0xe39c},
- {0x8eee,0xe39d}, {0x8eef,0xe39e}, {0x8ef0,0xe39f}, {0x8ef1,0xe3a0},
- {0x8ef2,0xe3a1}, {0x8ef3,0xe3a2}, {0x8ef4,0xe3a3}, {0x8ef5,0xe3a4},
- {0x8ef6,0xe3a5}, {0x8ef7,0xe3a6}, {0x8ef8,0xe3a7}, {0x8ef9,0xe3a8},
- {0x8efa,0xe3a9}, {0x8efb,0xe3aa}, {0x8efc,0xe3ab}, {0x8efd,0xe3ac},
- {0x8efe,0xe3ad}, {0x8f40,0xe3ae}, {0x8f41,0xe3af}, {0x8f42,0xe3b0},
- {0x8f43,0xe3b1}, {0x8f44,0xe3b2}, {0x8f45,0xe3b3}, {0x8f46,0xe3b4},
- {0x8f47,0xe3b5}, {0x8f48,0xe3b6}, {0x8f49,0xe3b7}, {0x8f4a,0xe3b8},
- {0x8f4b,0xe3b9}, {0x8f4c,0xe3ba}, {0x8f4d,0xe3bb}, {0x8f4e,0xe3bc},
- {0x8f4f,0xe3bd}, {0x8f50,0xe3be}, {0x8f51,0xe3bf}, {0x8f52,0xe3c0},
- {0x8f53,0xe3c1}, {0x8f54,0xe3c2}, {0x8f55,0xe3c3}, {0x8f56,0xe3c4},
- {0x8f57,0xe3c5}, {0x8f58,0xe3c6}, {0x8f59,0xe3c7}, {0x8f5a,0xe3c8},
- {0x8f5b,0xe3c9}, {0x8f5c,0xe3ca}, {0x8f5d,0xe3cb}, {0x8f5e,0xe3cc},
- {0x8f5f,0xe3cd}, {0x8f60,0xe3ce}, {0x8f61,0xe3cf}, {0x8f62,0xe3d0},
- {0x8f63,0xe3d1}, {0x8f64,0xe3d2}, {0x8f65,0xe3d3}, {0x8f66,0xe3d4},
- {0x8f67,0xe3d5}, {0x8f68,0xe3d6}, {0x8f69,0xe3d7}, {0x8f6a,0xe3d8},
- {0x8f6b,0xe3d9}, {0x8f6c,0xe3da}, {0x8f6d,0xe3db}, {0x8f6e,0xe3dc},
- {0x8f6f,0xe3dd}, {0x8f70,0xe3de}, {0x8f71,0xe3df}, {0x8f72,0xe3e0},
- {0x8f73,0xe3e1}, {0x8f74,0xe3e2}, {0x8f75,0xe3e3}, {0x8f76,0xe3e4},
- {0x8f77,0xe3e5}, {0x8f78,0xe3e6}, {0x8f79,0xe3e7}, {0x8f7a,0xe3e8},
- {0x8f7b,0xe3e9}, {0x8f7c,0xe3ea}, {0x8f7d,0xe3eb}, {0x8f7e,0xe3ec},
- {0x8fa1,0xe3ed}, {0x8fa2,0xe3ee}, {0x8fa3,0xe3ef}, {0x8fa4,0xe3f0},
- {0x8fa5,0xe3f1}, {0x8fa6,0xe3f2}, {0x8fa7,0xe3f3}, {0x8fa8,0xe3f4},
- {0x8fa9,0xe3f5}, {0x8faa,0xe3f6}, {0x8fab,0xe3f7}, {0x8fac,0xe3f8},
- {0x8fad,0xe3f9}, {0x8fae,0xe3fa}, {0x8faf,0xe3fb}, {0x8fb0,0xe3fc},
- {0x8fb1,0xe3fd}, {0x8fb2,0xe3fe}, {0x8fb3,0xe3ff}, {0x8fb4,0xe400},
- {0x8fb5,0xe401}, {0x8fb6,0xe402}, {0x8fb7,0xe403}, {0x8fb8,0xe404},
- {0x8fb9,0xe405}, {0x8fba,0xe406}, {0x8fbb,0xe407}, {0x8fbc,0xe408},
- {0x8fbd,0xe409}, {0x8fbe,0xe40a}, {0x8fbf,0xe40b}, {0x8fc0,0xe40c},
- {0x8fc1,0xe40d}, {0x8fc2,0xe40e}, {0x8fc3,0xe40f}, {0x8fc4,0xe410},
- {0x8fc5,0xe411}, {0x8fc6,0xe412}, {0x8fc7,0xe413}, {0x8fc8,0xe414},
- {0x8fc9,0xe415}, {0x8fca,0xe416}, {0x8fcb,0xe417}, {0x8fcc,0xe418},
- {0x8fcd,0xe419}, {0x8fce,0xe41a}, {0x8fcf,0xe41b}, {0x8fd0,0xe41c},
- {0x8fd1,0xe41d}, {0x8fd2,0xe41e}, {0x8fd3,0xe41f}, {0x8fd4,0xe420},
- {0x8fd5,0xe421}, {0x8fd6,0xe422}, {0x8fd7,0xe423}, {0x8fd8,0xe424},
- {0x8fd9,0xe425}, {0x8fda,0xe426}, {0x8fdb,0xe427}, {0x8fdc,0xe428},
- {0x8fdd,0xe429}, {0x8fde,0xe42a}, {0x8fdf,0xe42b}, {0x8fe0,0xe42c},
- {0x8fe1,0xe42d}, {0x8fe2,0xe42e}, {0x8fe3,0xe42f}, {0x8fe4,0xe430},
- {0x8fe5,0xe431}, {0x8fe6,0xe432}, {0x8fe7,0xe433}, {0x8fe8,0xe434},
- {0x8fe9,0xe435}, {0x8fea,0xe436}, {0x8feb,0xe437}, {0x8fec,0xe438},
- {0x8fed,0xe439}, {0x8fee,0xe43a}, {0x8fef,0xe43b}, {0x8ff0,0xe43c},
- {0x8ff1,0xe43d}, {0x8ff2,0xe43e}, {0x8ff3,0xe43f}, {0x8ff4,0xe440},
- {0x8ff5,0xe441}, {0x8ff6,0xe442}, {0x8ff7,0xe443}, {0x8ff8,0xe444},
- {0x8ff9,0xe445}, {0x8ffa,0xe446}, {0x8ffb,0xe447}, {0x8ffc,0xe448},
- {0x8ffd,0xe449}, {0x8ffe,0xe44a}, {0x9040,0xe44b}, {0x9041,0xe44c},
- {0x9042,0xe44d}, {0x9043,0xe44e}, {0x9044,0xe44f}, {0x9045,0xe450},
- {0x9046,0xe451}, {0x9047,0xe452}, {0x9048,0xe453}, {0x9049,0xe454},
- {0x904a,0xe455}, {0x904b,0xe456}, {0x904c,0xe457}, {0x904d,0xe458},
- {0x904e,0xe459}, {0x904f,0xe45a}, {0x9050,0xe45b}, {0x9051,0xe45c},
- {0x9052,0xe45d}, {0x9053,0xe45e}, {0x9054,0xe45f}, {0x9055,0xe460},
- {0x9056,0xe461}, {0x9057,0xe462}, {0x9058,0xe463}, {0x9059,0xe464},
- {0x905a,0xe465}, {0x905b,0xe466}, {0x905c,0xe467}, {0x905d,0xe468},
- {0x905e,0xe469}, {0x905f,0xe46a}, {0x9060,0xe46b}, {0x9061,0xe46c},
- {0x9062,0xe46d}, {0x9063,0xe46e}, {0x9064,0xe46f}, {0x9065,0xe470},
- {0x9066,0xe471}, {0x9067,0xe472}, {0x9068,0xe473}, {0x9069,0xe474},
- {0x906a,0xe475}, {0x906b,0xe476}, {0x906c,0xe477}, {0x906d,0xe478},
- {0x906e,0xe479}, {0x906f,0xe47a}, {0x9070,0xe47b}, {0x9071,0xe47c},
- {0x9072,0xe47d}, {0x9073,0xe47e}, {0x9074,0xe47f}, {0x9075,0xe480},
- {0x9076,0xe481}, {0x9077,0xe482}, {0x9078,0xe483}, {0x9079,0xe484},
- {0x907a,0xe485}, {0x907b,0xe486}, {0x907c,0xe487}, {0x907d,0xe488},
- {0x907e,0xe489}, {0x90a1,0xe48a}, {0x90a2,0xe48b}, {0x90a3,0xe48c},
- {0x90a4,0xe48d}, {0x90a5,0xe48e}, {0x90a6,0xe48f}, {0x90a7,0xe490},
- {0x90a8,0xe491}, {0x90a9,0xe492}, {0x90aa,0xe493}, {0x90ab,0xe494},
- {0x90ac,0xe495}, {0x90ad,0xe496}, {0x90ae,0xe497}, {0x90af,0xe498},
- {0x90b0,0xe499}, {0x90b1,0xe49a}, {0x90b2,0xe49b}, {0x90b3,0xe49c},
- {0x90b4,0xe49d}, {0x90b5,0xe49e}, {0x90b6,0xe49f}, {0x90b7,0xe4a0},
- {0x90b8,0xe4a1}, {0x90b9,0xe4a2}, {0x90ba,0xe4a3}, {0x90bb,0xe4a4},
- {0x90bc,0xe4a5}, {0x90bd,0xe4a6}, {0x90be,0xe4a7}, {0x90bf,0xe4a8},
- {0x90c0,0xe4a9}, {0x90c1,0xe4aa}, {0x90c2,0xe4ab}, {0x90c3,0xe4ac},
- {0x90c4,0xe4ad}, {0x90c5,0xe4ae}, {0x90c6,0xe4af}, {0x90c7,0xe4b0},
- {0x90c8,0xe4b1}, {0x90c9,0xe4b2}, {0x90ca,0xe4b3}, {0x90cb,0xe4b4},
- {0x90cc,0xe4b5}, {0x90cd,0xe4b6}, {0x90ce,0xe4b7}, {0x90cf,0xe4b8},
- {0x90d0,0xe4b9}, {0x90d1,0xe4ba}, {0x90d2,0xe4bb}, {0x90d3,0xe4bc},
- {0x90d4,0xe4bd}, {0x90d5,0xe4be}, {0x90d6,0xe4bf}, {0x90d7,0xe4c0},
- {0x90d8,0xe4c1}, {0x90d9,0xe4c2}, {0x90da,0xe4c3}, {0x90db,0xe4c4},
- {0x90dc,0xe4c5}, {0x90dd,0xe4c6}, {0x90de,0xe4c7}, {0x90df,0xe4c8},
- {0x90e0,0xe4c9}, {0x90e1,0xe4ca}, {0x90e2,0xe4cb}, {0x90e3,0xe4cc},
- {0x90e4,0xe4cd}, {0x90e5,0xe4ce}, {0x90e6,0xe4cf}, {0x90e7,0xe4d0},
- {0x90e8,0xe4d1}, {0x90e9,0xe4d2}, {0x90ea,0xe4d3}, {0x90eb,0xe4d4},
- {0x90ec,0xe4d5}, {0x90ed,0xe4d6}, {0x90ee,0xe4d7}, {0x90ef,0xe4d8},
- {0x90f0,0xe4d9}, {0x90f1,0xe4da}, {0x90f2,0xe4db}, {0x90f3,0xe4dc},
- {0x90f4,0xe4dd}, {0x90f5,0xe4de}, {0x90f6,0xe4df}, {0x90f7,0xe4e0},
- {0x90f8,0xe4e1}, {0x90f9,0xe4e2}, {0x90fa,0xe4e3}, {0x90fb,0xe4e4},
- {0x90fc,0xe4e5}, {0x90fd,0xe4e6}, {0x90fe,0xe4e7}, {0x9140,0xe4e8},
- {0x9141,0xe4e9}, {0x9142,0xe4ea}, {0x9143,0xe4eb}, {0x9144,0xe4ec},
- {0x9145,0xe4ed}, {0x9146,0xe4ee}, {0x9147,0xe4ef}, {0x9148,0xe4f0},
- {0x9149,0xe4f1}, {0x914a,0xe4f2}, {0x914b,0xe4f3}, {0x914c,0xe4f4},
- {0x914d,0xe4f5}, {0x914e,0xe4f6}, {0x914f,0xe4f7}, {0x9150,0xe4f8},
- {0x9151,0xe4f9}, {0x9152,0xe4fa}, {0x9153,0xe4fb}, {0x9154,0xe4fc},
- {0x9155,0xe4fd}, {0x9156,0xe4fe}, {0x9157,0xe4ff}, {0x9158,0xe500},
- {0x9159,0xe501}, {0x915a,0xe502}, {0x915b,0xe503}, {0x915c,0xe504},
- {0x915d,0xe505}, {0x915e,0xe506}, {0x915f,0xe507}, {0x9160,0xe508},
- {0x9161,0xe509}, {0x9162,0xe50a}, {0x9163,0xe50b}, {0x9164,0xe50c},
- {0x9165,0xe50d}, {0x9166,0xe50e}, {0x9167,0xe50f}, {0x9168,0xe510},
- {0x9169,0xe511}, {0x916a,0xe512}, {0x916b,0xe513}, {0x916c,0xe514},
- {0x916d,0xe515}, {0x916e,0xe516}, {0x916f,0xe517}, {0x9170,0xe518},
- {0x9171,0xe519}, {0x9172,0xe51a}, {0x9173,0xe51b}, {0x9174,0xe51c},
- {0x9175,0xe51d}, {0x9176,0xe51e}, {0x9177,0xe51f}, {0x9178,0xe520},
- {0x9179,0xe521}, {0x917a,0xe522}, {0x917b,0xe523}, {0x917c,0xe524},
- {0x917d,0xe525}, {0x917e,0xe526}, {0x91a1,0xe527}, {0x91a2,0xe528},
- {0x91a3,0xe529}, {0x91a4,0xe52a}, {0x91a5,0xe52b}, {0x91a6,0xe52c},
- {0x91a7,0xe52d}, {0x91a8,0xe52e}, {0x91a9,0xe52f}, {0x91aa,0xe530},
- {0x91ab,0xe531}, {0x91ac,0xe532}, {0x91ad,0xe533}, {0x91ae,0xe534},
- {0x91af,0xe535}, {0x91b0,0xe536}, {0x91b1,0xe537}, {0x91b2,0xe538},
- {0x91b3,0xe539}, {0x91b4,0xe53a}, {0x91b5,0xe53b}, {0x91b6,0xe53c},
- {0x91b7,0xe53d}, {0x91b8,0xe53e}, {0x91b9,0xe53f}, {0x91ba,0xe540},
- {0x91bb,0xe541}, {0x91bc,0xe542}, {0x91bd,0xe543}, {0x91be,0xe544},
- {0x91bf,0xe545}, {0x91c0,0xe546}, {0x91c1,0xe547}, {0x91c2,0xe548},
- {0x91c3,0xe549}, {0x91c4,0xe54a}, {0x91c5,0xe54b}, {0x91c6,0xe54c},
- {0x91c7,0xe54d}, {0x91c8,0xe54e}, {0x91c9,0xe54f}, {0x91ca,0xe550},
- {0x91cb,0xe551}, {0x91cc,0xe552}, {0x91cd,0xe553}, {0x91ce,0xe554},
- {0x91cf,0xe555}, {0x91d0,0xe556}, {0x91d1,0xe557}, {0x91d2,0xe558},
- {0x91d3,0xe559}, {0x91d4,0xe55a}, {0x91d5,0xe55b}, {0x91d6,0xe55c},
- {0x91d7,0xe55d}, {0x91d8,0xe55e}, {0x91d9,0xe55f}, {0x91da,0xe560},
- {0x91db,0xe561}, {0x91dc,0xe562}, {0x91dd,0xe563}, {0x91de,0xe564},
- {0x91df,0xe565}, {0x91e0,0xe566}, {0x91e1,0xe567}, {0x91e2,0xe568},
- {0x91e3,0xe569}, {0x91e4,0xe56a}, {0x91e5,0xe56b}, {0x91e6,0xe56c},
- {0x91e7,0xe56d}, {0x91e8,0xe56e}, {0x91e9,0xe56f}, {0x91ea,0xe570},
- {0x91eb,0xe571}, {0x91ec,0xe572}, {0x91ed,0xe573}, {0x91ee,0xe574},
- {0x91ef,0xe575}, {0x91f0,0xe576}, {0x91f1,0xe577}, {0x91f2,0xe578},
- {0x91f3,0xe579}, {0x91f4,0xe57a}, {0x91f5,0xe57b}, {0x91f6,0xe57c},
- {0x91f7,0xe57d}, {0x91f8,0xe57e}, {0x91f9,0xe57f}, {0x91fa,0xe580},
- {0x91fb,0xe581}, {0x91fc,0xe582}, {0x91fd,0xe583}, {0x91fe,0xe584},
- {0x9240,0xe585}, {0x9241,0xe586}, {0x9242,0xe587}, {0x9243,0xe588},
- {0x9244,0xe589}, {0x9245,0xe58a}, {0x9246,0xe58b}, {0x9247,0xe58c},
- {0x9248,0xe58d}, {0x9249,0xe58e}, {0x924a,0xe58f}, {0x924b,0xe590},
- {0x924c,0xe591}, {0x924d,0xe592}, {0x924e,0xe593}, {0x924f,0xe594},
- {0x9250,0xe595}, {0x9251,0xe596}, {0x9252,0xe597}, {0x9253,0xe598},
- {0x9254,0xe599}, {0x9255,0xe59a}, {0x9256,0xe59b}, {0x9257,0xe59c},
- {0x9258,0xe59d}, {0x9259,0xe59e}, {0x925a,0xe59f}, {0x925b,0xe5a0},
- {0x925c,0xe5a1}, {0x925d,0xe5a2}, {0x925e,0xe5a3}, {0x925f,0xe5a4},
- {0x9260,0xe5a5}, {0x9261,0xe5a6}, {0x9262,0xe5a7}, {0x9263,0xe5a8},
- {0x9264,0xe5a9}, {0x9265,0xe5aa}, {0x9266,0xe5ab}, {0x9267,0xe5ac},
- {0x9268,0xe5ad}, {0x9269,0xe5ae}, {0x926a,0xe5af}, {0x926b,0xe5b0},
- {0x926c,0xe5b1}, {0x926d,0xe5b2}, {0x926e,0xe5b3}, {0x926f,0xe5b4},
- {0x9270,0xe5b5}, {0x9271,0xe5b6}, {0x9272,0xe5b7}, {0x9273,0xe5b8},
- {0x9274,0xe5b9}, {0x9275,0xe5ba}, {0x9276,0xe5bb}, {0x9277,0xe5bc},
- {0x9278,0xe5bd}, {0x9279,0xe5be}, {0x927a,0xe5bf}, {0x927b,0xe5c0},
- {0x927c,0xe5c1}, {0x927d,0xe5c2}, {0x927e,0xe5c3}, {0x92a1,0xe5c4},
- {0x92a2,0xe5c5}, {0x92a3,0xe5c6}, {0x92a4,0xe5c7}, {0x92a5,0xe5c8},
- {0x92a6,0xe5c9}, {0x92a7,0xe5ca}, {0x92a8,0xe5cb}, {0x92a9,0xe5cc},
- {0x92aa,0xe5cd}, {0x92ab,0xe5ce}, {0x92ac,0xe5cf}, {0x92ad,0xe5d0},
- {0x92ae,0xe5d1}, {0x92af,0xe5d2}, {0x92b0,0xe5d3}, {0x92b1,0xe5d4},
- {0x92b2,0xe5d5}, {0x92b3,0xe5d6}, {0x92b4,0xe5d7}, {0x92b5,0xe5d8},
- {0x92b6,0xe5d9}, {0x92b7,0xe5da}, {0x92b8,0xe5db}, {0x92b9,0xe5dc},
- {0x92ba,0xe5dd}, {0x92bb,0xe5de}, {0x92bc,0xe5df}, {0x92bd,0xe5e0},
- {0x92be,0xe5e1}, {0x92bf,0xe5e2}, {0x92c0,0xe5e3}, {0x92c1,0xe5e4},
- {0x92c2,0xe5e5}, {0x92c3,0xe5e6}, {0x92c4,0xe5e7}, {0x92c5,0xe5e8},
- {0x92c6,0xe5e9}, {0x92c7,0xe5ea}, {0x92c8,0xe5eb}, {0x92c9,0xe5ec},
- {0x92ca,0xe5ed}, {0x92cb,0xe5ee}, {0x92cc,0xe5ef}, {0x92cd,0xe5f0},
- {0x92ce,0xe5f1}, {0x92cf,0xe5f2}, {0x92d0,0xe5f3}, {0x92d1,0xe5f4},
- {0x92d2,0xe5f5}, {0x92d3,0xe5f6}, {0x92d4,0xe5f7}, {0x92d5,0xe5f8},
- {0x92d6,0xe5f9}, {0x92d7,0xe5fa}, {0x92d8,0xe5fb}, {0x92d9,0xe5fc},
- {0x92da,0xe5fd}, {0x92db,0xe5fe}, {0x92dc,0xe5ff}, {0x92dd,0xe600},
- {0x92de,0xe601}, {0x92df,0xe602}, {0x92e0,0xe603}, {0x92e1,0xe604},
- {0x92e2,0xe605}, {0x92e3,0xe606}, {0x92e4,0xe607}, {0x92e5,0xe608},
- {0x92e6,0xe609}, {0x92e7,0xe60a}, {0x92e8,0xe60b}, {0x92e9,0xe60c},
- {0x92ea,0xe60d}, {0x92eb,0xe60e}, {0x92ec,0xe60f}, {0x92ed,0xe610},
- {0x92ee,0xe611}, {0x92ef,0xe612}, {0x92f0,0xe613}, {0x92f1,0xe614},
- {0x92f2,0xe615}, {0x92f3,0xe616}, {0x92f4,0xe617}, {0x92f5,0xe618},
- {0x92f6,0xe619}, {0x92f7,0xe61a}, {0x92f8,0xe61b}, {0x92f9,0xe61c},
- {0x92fa,0xe61d}, {0x92fb,0xe61e}, {0x92fc,0xe61f}, {0x92fd,0xe620},
- {0x92fe,0xe621}, {0x9340,0xe622}, {0x9341,0xe623}, {0x9342,0xe624},
- {0x9343,0xe625}, {0x9344,0xe626}, {0x9345,0xe627}, {0x9346,0xe628},
- {0x9347,0xe629}, {0x9348,0xe62a}, {0x9349,0xe62b}, {0x934a,0xe62c},
- {0x934b,0xe62d}, {0x934c,0xe62e}, {0x934d,0xe62f}, {0x934e,0xe630},
- {0x934f,0xe631}, {0x9350,0xe632}, {0x9351,0xe633}, {0x9352,0xe634},
- {0x9353,0xe635}, {0x9354,0xe636}, {0x9355,0xe637}, {0x9356,0xe638},
- {0x9357,0xe639}, {0x9358,0xe63a}, {0x9359,0xe63b}, {0x935a,0xe63c},
- {0x935b,0xe63d}, {0x935c,0xe63e}, {0x935d,0xe63f}, {0x935e,0xe640},
- {0x935f,0xe641}, {0x9360,0xe642}, {0x9361,0xe643}, {0x9362,0xe644},
- {0x9363,0xe645}, {0x9364,0xe646}, {0x9365,0xe647}, {0x9366,0xe648},
- {0x9367,0xe649}, {0x9368,0xe64a}, {0x9369,0xe64b}, {0x936a,0xe64c},
- {0x936b,0xe64d}, {0x936c,0xe64e}, {0x936d,0xe64f}, {0x936e,0xe650},
- {0x936f,0xe651}, {0x9370,0xe652}, {0x9371,0xe653}, {0x9372,0xe654},
- {0x9373,0xe655}, {0x9374,0xe656}, {0x9375,0xe657}, {0x9376,0xe658},
- {0x9377,0xe659}, {0x9378,0xe65a}, {0x9379,0xe65b}, {0x937a,0xe65c},
- {0x937b,0xe65d}, {0x937c,0xe65e}, {0x937d,0xe65f}, {0x937e,0xe660},
- {0x93a1,0xe661}, {0x93a2,0xe662}, {0x93a3,0xe663}, {0x93a4,0xe664},
- {0x93a5,0xe665}, {0x93a6,0xe666}, {0x93a7,0xe667}, {0x93a8,0xe668},
- {0x93a9,0xe669}, {0x93aa,0xe66a}, {0x93ab,0xe66b}, {0x93ac,0xe66c},
- {0x93ad,0xe66d}, {0x93ae,0xe66e}, {0x93af,0xe66f}, {0x93b0,0xe670},
- {0x93b1,0xe671}, {0x93b2,0xe672}, {0x93b3,0xe673}, {0x93b4,0xe674},
- {0x93b5,0xe675}, {0x93b6,0xe676}, {0x93b7,0xe677}, {0x93b8,0xe678},
- {0x93b9,0xe679}, {0x93ba,0xe67a}, {0x93bb,0xe67b}, {0x93bc,0xe67c},
- {0x93bd,0xe67d}, {0x93be,0xe67e}, {0x93bf,0xe67f}, {0x93c0,0xe680},
- {0x93c1,0xe681}, {0x93c2,0xe682}, {0x93c3,0xe683}, {0x93c4,0xe684},
- {0x93c5,0xe685}, {0x93c6,0xe686}, {0x93c7,0xe687}, {0x93c8,0xe688},
- {0x93c9,0xe689}, {0x93ca,0xe68a}, {0x93cb,0xe68b}, {0x93cc,0xe68c},
- {0x93cd,0xe68d}, {0x93ce,0xe68e}, {0x93cf,0xe68f}, {0x93d0,0xe690},
- {0x93d1,0xe691}, {0x93d2,0xe692}, {0x93d3,0xe693}, {0x93d4,0xe694},
- {0x93d5,0xe695}, {0x93d6,0xe696}, {0x93d7,0xe697}, {0x93d8,0xe698},
- {0x93d9,0xe699}, {0x93da,0xe69a}, {0x93db,0xe69b}, {0x93dc,0xe69c},
- {0x93dd,0xe69d}, {0x93de,0xe69e}, {0x93df,0xe69f}, {0x93e0,0xe6a0},
- {0x93e1,0xe6a1}, {0x93e2,0xe6a2}, {0x93e3,0xe6a3}, {0x93e4,0xe6a4},
- {0x93e5,0xe6a5}, {0x93e6,0xe6a6}, {0x93e7,0xe6a7}, {0x93e8,0xe6a8},
- {0x93e9,0xe6a9}, {0x93ea,0xe6aa}, {0x93eb,0xe6ab}, {0x93ec,0xe6ac},
- {0x93ed,0xe6ad}, {0x93ee,0xe6ae}, {0x93ef,0xe6af}, {0x93f0,0xe6b0},
- {0x93f1,0xe6b1}, {0x93f2,0xe6b2}, {0x93f3,0xe6b3}, {0x93f4,0xe6b4},
- {0x93f5,0xe6b5}, {0x93f6,0xe6b6}, {0x93f7,0xe6b7}, {0x93f8,0xe6b8},
- {0x93f9,0xe6b9}, {0x93fa,0xe6ba}, {0x93fb,0xe6bb}, {0x93fc,0xe6bc},
- {0x93fd,0xe6bd}, {0x93fe,0xe6be}, {0x9440,0xe6bf}, {0x9441,0xe6c0},
- {0x9442,0xe6c1}, {0x9443,0xe6c2}, {0x9444,0xe6c3}, {0x9445,0xe6c4},
- {0x9446,0xe6c5}, {0x9447,0xe6c6}, {0x9448,0xe6c7}, {0x9449,0xe6c8},
- {0x944a,0xe6c9}, {0x944b,0xe6ca}, {0x944c,0xe6cb}, {0x944d,0xe6cc},
- {0x944e,0xe6cd}, {0x944f,0xe6ce}, {0x9450,0xe6cf}, {0x9451,0xe6d0},
- {0x9452,0xe6d1}, {0x9453,0xe6d2}, {0x9454,0xe6d3}, {0x9455,0xe6d4},
- {0x9456,0xe6d5}, {0x9457,0xe6d6}, {0x9458,0xe6d7}, {0x9459,0xe6d8},
- {0x945a,0xe6d9}, {0x945b,0xe6da}, {0x945c,0xe6db}, {0x945d,0xe6dc},
- {0x945e,0xe6dd}, {0x945f,0xe6de}, {0x9460,0xe6df}, {0x9461,0xe6e0},
- {0x9462,0xe6e1}, {0x9463,0xe6e2}, {0x9464,0xe6e3}, {0x9465,0xe6e4},
- {0x9466,0xe6e5}, {0x9467,0xe6e6}, {0x9468,0xe6e7}, {0x9469,0xe6e8},
- {0x946a,0xe6e9}, {0x946b,0xe6ea}, {0x946c,0xe6eb}, {0x946d,0xe6ec},
- {0x946e,0xe6ed}, {0x946f,0xe6ee}, {0x9470,0xe6ef}, {0x9471,0xe6f0},
- {0x9472,0xe6f1}, {0x9473,0xe6f2}, {0x9474,0xe6f3}, {0x9475,0xe6f4},
- {0x9476,0xe6f5}, {0x9477,0xe6f6}, {0x9478,0xe6f7}, {0x9479,0xe6f8},
- {0x947a,0xe6f9}, {0x947b,0xe6fa}, {0x947c,0xe6fb}, {0x947d,0xe6fc},
- {0x947e,0xe6fd}, {0x94a1,0xe6fe}, {0x94a2,0xe6ff}, {0x94a3,0xe700},
- {0x94a4,0xe701}, {0x94a5,0xe702}, {0x94a6,0xe703}, {0x94a7,0xe704},
- {0x94a8,0xe705}, {0x94a9,0xe706}, {0x94aa,0xe707}, {0x94ab,0xe708},
- {0x94ac,0xe709}, {0x94ad,0xe70a}, {0x94ae,0xe70b}, {0x94af,0xe70c},
- {0x94b0,0xe70d}, {0x94b1,0xe70e}, {0x94b2,0xe70f}, {0x94b3,0xe710},
- {0x94b4,0xe711}, {0x94b5,0xe712}, {0x94b6,0xe713}, {0x94b7,0xe714},
- {0x94b8,0xe715}, {0x94b9,0xe716}, {0x94ba,0xe717}, {0x94bb,0xe718},
- {0x94bc,0xe719}, {0x94bd,0xe71a}, {0x94be,0xe71b}, {0x94bf,0xe71c},
- {0x94c0,0xe71d}, {0x94c1,0xe71e}, {0x94c2,0xe71f}, {0x94c3,0xe720},
- {0x94c4,0xe721}, {0x94c5,0xe722}, {0x94c6,0xe723}, {0x94c7,0xe724},
- {0x94c8,0xe725}, {0x94c9,0xe726}, {0x94ca,0xe727}, {0x94cb,0xe728},
- {0x94cc,0xe729}, {0x94cd,0xe72a}, {0x94ce,0xe72b}, {0x94cf,0xe72c},
- {0x94d0,0xe72d}, {0x94d1,0xe72e}, {0x94d2,0xe72f}, {0x94d3,0xe730},
- {0x94d4,0xe731}, {0x94d5,0xe732}, {0x94d6,0xe733}, {0x94d7,0xe734},
- {0x94d8,0xe735}, {0x94d9,0xe736}, {0x94da,0xe737}, {0x94db,0xe738},
- {0x94dc,0xe739}, {0x94dd,0xe73a}, {0x94de,0xe73b}, {0x94df,0xe73c},
- {0x94e0,0xe73d}, {0x94e1,0xe73e}, {0x94e2,0xe73f}, {0x94e3,0xe740},
- {0x94e4,0xe741}, {0x94e5,0xe742}, {0x94e6,0xe743}, {0x94e7,0xe744},
- {0x94e8,0xe745}, {0x94e9,0xe746}, {0x94ea,0xe747}, {0x94eb,0xe748},
- {0x94ec,0xe749}, {0x94ed,0xe74a}, {0x94ee,0xe74b}, {0x94ef,0xe74c},
- {0x94f0,0xe74d}, {0x94f1,0xe74e}, {0x94f2,0xe74f}, {0x94f3,0xe750},
- {0x94f4,0xe751}, {0x94f5,0xe752}, {0x94f6,0xe753}, {0x94f7,0xe754},
- {0x94f8,0xe755}, {0x94f9,0xe756}, {0x94fa,0xe757}, {0x94fb,0xe758},
- {0x94fc,0xe759}, {0x94fd,0xe75a}, {0x94fe,0xe75b}, {0x9540,0xe75c},
- {0x9541,0xe75d}, {0x9542,0xe75e}, {0x9543,0xe75f}, {0x9544,0xe760},
- {0x9545,0xe761}, {0x9546,0xe762}, {0x9547,0xe763}, {0x9548,0xe764},
- {0x9549,0xe765}, {0x954a,0xe766}, {0x954b,0xe767}, {0x954c,0xe768},
- {0x954d,0xe769}, {0x954e,0xe76a}, {0x954f,0xe76b}, {0x9550,0xe76c},
- {0x9551,0xe76d}, {0x9552,0xe76e}, {0x9553,0xe76f}, {0x9554,0xe770},
- {0x9555,0xe771}, {0x9556,0xe772}, {0x9557,0xe773}, {0x9558,0xe774},
- {0x9559,0xe775}, {0x955a,0xe776}, {0x955b,0xe777}, {0x955c,0xe778},
- {0x955d,0xe779}, {0x955e,0xe77a}, {0x955f,0xe77b}, {0x9560,0xe77c},
- {0x9561,0xe77d}, {0x9562,0xe77e}, {0x9563,0xe77f}, {0x9564,0xe780},
- {0x9565,0xe781}, {0x9566,0xe782}, {0x9567,0xe783}, {0x9568,0xe784},
- {0x9569,0xe785}, {0x956a,0xe786}, {0x956b,0xe787}, {0x956c,0xe788},
- {0x956d,0xe789}, {0x956e,0xe78a}, {0x956f,0xe78b}, {0x9570,0xe78c},
- {0x9571,0xe78d}, {0x9572,0xe78e}, {0x9573,0xe78f}, {0x9574,0xe790},
- {0x9575,0xe791}, {0x9576,0xe792}, {0x9577,0xe793}, {0x9578,0xe794},
- {0x9579,0xe795}, {0x957a,0xe796}, {0x957b,0xe797}, {0x957c,0xe798},
- {0x957d,0xe799}, {0x957e,0xe79a}, {0x95a1,0xe79b}, {0x95a2,0xe79c},
- {0x95a3,0xe79d}, {0x95a4,0xe79e}, {0x95a5,0xe79f}, {0x95a6,0xe7a0},
- {0x95a7,0xe7a1}, {0x95a8,0xe7a2}, {0x95a9,0xe7a3}, {0x95aa,0xe7a4},
- {0x95ab,0xe7a5}, {0x95ac,0xe7a6}, {0x95ad,0xe7a7}, {0x95ae,0xe7a8},
- {0x95af,0xe7a9}, {0x95b0,0xe7aa}, {0x95b1,0xe7ab}, {0x95b2,0xe7ac},
- {0x95b3,0xe7ad}, {0x95b4,0xe7ae}, {0x95b5,0xe7af}, {0x95b6,0xe7b0},
- {0x95b7,0xe7b1}, {0x95b8,0xe7b2}, {0x95b9,0xe7b3}, {0x95ba,0xe7b4},
- {0x95bb,0xe7b5}, {0x95bc,0xe7b6}, {0x95bd,0xe7b7}, {0x95be,0xe7b8},
- {0x95bf,0xe7b9}, {0x95c0,0xe7ba}, {0x95c1,0xe7bb}, {0x95c2,0xe7bc},
- {0x95c3,0xe7bd}, {0x95c4,0xe7be}, {0x95c5,0xe7bf}, {0x95c6,0xe7c0},
- {0x95c7,0xe7c1}, {0x95c8,0xe7c2}, {0x95c9,0xe7c3}, {0x95ca,0xe7c4},
- {0x95cb,0xe7c5}, {0x95cc,0xe7c6}, {0x95cd,0xe7c7}, {0x95ce,0xe7c8},
- {0x95cf,0xe7c9}, {0x95d0,0xe7ca}, {0x95d1,0xe7cb}, {0x95d2,0xe7cc},
- {0x95d3,0xe7cd}, {0x95d4,0xe7ce}, {0x95d5,0xe7cf}, {0x95d6,0xe7d0},
- {0x95d7,0xe7d1}, {0x95d8,0xe7d2}, {0x95d9,0xe7d3}, {0x95da,0xe7d4},
- {0x95db,0xe7d5}, {0x95dc,0xe7d6}, {0x95dd,0xe7d7}, {0x95de,0xe7d8},
- {0x95df,0xe7d9}, {0x95e0,0xe7da}, {0x95e1,0xe7db}, {0x95e2,0xe7dc},
- {0x95e3,0xe7dd}, {0x95e4,0xe7de}, {0x95e5,0xe7df}, {0x95e6,0xe7e0},
- {0x95e7,0xe7e1}, {0x95e8,0xe7e2}, {0x95e9,0xe7e3}, {0x95ea,0xe7e4},
- {0x95eb,0xe7e5}, {0x95ec,0xe7e6}, {0x95ed,0xe7e7}, {0x95ee,0xe7e8},
- {0x95ef,0xe7e9}, {0x95f0,0xe7ea}, {0x95f1,0xe7eb}, {0x95f2,0xe7ec},
- {0x95f3,0xe7ed}, {0x95f4,0xe7ee}, {0x95f5,0xe7ef}, {0x95f6,0xe7f0},
- {0x95f7,0xe7f1}, {0x95f8,0xe7f2}, {0x95f9,0xe7f3}, {0x95fa,0xe7f4},
- {0x95fb,0xe7f5}, {0x95fc,0xe7f6}, {0x95fd,0xe7f7}, {0x95fe,0xe7f8},
- {0x9640,0xe7f9}, {0x9641,0xe7fa}, {0x9642,0xe7fb}, {0x9643,0xe7fc},
- {0x9644,0xe7fd}, {0x9645,0xe7fe}, {0x9646,0xe7ff}, {0x9647,0xe800},
- {0x9648,0xe801}, {0x9649,0xe802}, {0x964a,0xe803}, {0x964b,0xe804},
- {0x964c,0xe805}, {0x964d,0xe806}, {0x964e,0xe807}, {0x964f,0xe808},
- {0x9650,0xe809}, {0x9651,0xe80a}, {0x9652,0xe80b}, {0x9653,0xe80c},
- {0x9654,0xe80d}, {0x9655,0xe80e}, {0x9656,0xe80f}, {0x9657,0xe810},
- {0x9658,0xe811}, {0x9659,0xe812}, {0x965a,0xe813}, {0x965b,0xe814},
- {0x965c,0xe815}, {0x965d,0xe816}, {0x965e,0xe817}, {0x965f,0xe818},
- {0x9660,0xe819}, {0x9661,0xe81a}, {0x9662,0xe81b}, {0x9663,0xe81c},
- {0x9664,0xe81d}, {0x9665,0xe81e}, {0x9666,0xe81f}, {0x9667,0xe820},
- {0x9668,0xe821}, {0x9669,0xe822}, {0x966a,0xe823}, {0x966b,0xe824},
- {0x966c,0xe825}, {0x966d,0xe826}, {0x966e,0xe827}, {0x966f,0xe828},
- {0x9670,0xe829}, {0x9671,0xe82a}, {0x9672,0xe82b}, {0x9673,0xe82c},
- {0x9674,0xe82d}, {0x9675,0xe82e}, {0x9676,0xe82f}, {0x9677,0xe830},
- {0x9678,0xe831}, {0x9679,0xe832}, {0x967a,0xe833}, {0x967b,0xe834},
- {0x967c,0xe835}, {0x967d,0xe836}, {0x967e,0xe837}, {0x96a1,0xe838},
- {0x96a2,0xe839}, {0x96a3,0xe83a}, {0x96a4,0xe83b}, {0x96a5,0xe83c},
- {0x96a6,0xe83d}, {0x96a7,0xe83e}, {0x96a8,0xe83f}, {0x96a9,0xe840},
- {0x96aa,0xe841}, {0x96ab,0xe842}, {0x96ac,0xe843}, {0x96ad,0xe844},
- {0x96ae,0xe845}, {0x96af,0xe846}, {0x96b0,0xe847}, {0x96b1,0xe848},
- {0x96b2,0xe849}, {0x96b3,0xe84a}, {0x96b4,0xe84b}, {0x96b5,0xe84c},
- {0x96b6,0xe84d}, {0x96b7,0xe84e}, {0x96b8,0xe84f}, {0x96b9,0xe850},
- {0x96ba,0xe851}, {0x96bb,0xe852}, {0x96bc,0xe853}, {0x96bd,0xe854},
- {0x96be,0xe855}, {0x96bf,0xe856}, {0x96c0,0xe857}, {0x96c1,0xe858},
- {0x96c2,0xe859}, {0x96c3,0xe85a}, {0x96c4,0xe85b}, {0x96c5,0xe85c},
- {0x96c6,0xe85d}, {0x96c7,0xe85e}, {0x96c8,0xe85f}, {0x96c9,0xe860},
- {0x96ca,0xe861}, {0x96cb,0xe862}, {0x96cc,0xe863}, {0x96cd,0xe864},
- {0x96ce,0xe865}, {0x96cf,0xe866}, {0x96d0,0xe867}, {0x96d1,0xe868},
- {0x96d2,0xe869}, {0x96d3,0xe86a}, {0x96d4,0xe86b}, {0x96d5,0xe86c},
- {0x96d6,0xe86d}, {0x96d7,0xe86e}, {0x96d8,0xe86f}, {0x96d9,0xe870},
- {0x96da,0xe871}, {0x96db,0xe872}, {0x96dc,0xe873}, {0x96dd,0xe874},
- {0x96de,0xe875}, {0x96df,0xe876}, {0x96e0,0xe877}, {0x96e1,0xe878},
- {0x96e2,0xe879}, {0x96e3,0xe87a}, {0x96e4,0xe87b}, {0x96e5,0xe87c},
- {0x96e6,0xe87d}, {0x96e7,0xe87e}, {0x96e8,0xe87f}, {0x96e9,0xe880},
- {0x96ea,0xe881}, {0x96eb,0xe882}, {0x96ec,0xe883}, {0x96ed,0xe884},
- {0x96ee,0xe885}, {0x96ef,0xe886}, {0x96f0,0xe887}, {0x96f1,0xe888},
- {0x96f2,0xe889}, {0x96f3,0xe88a}, {0x96f4,0xe88b}, {0x96f5,0xe88c},
- {0x96f6,0xe88d}, {0x96f7,0xe88e}, {0x96f8,0xe88f}, {0x96f9,0xe890},
- {0x96fa,0xe891}, {0x96fb,0xe892}, {0x96fc,0xe893}, {0x96fd,0xe894},
- {0x96fe,0xe895}, {0x9740,0xe896}, {0x9741,0xe897}, {0x9742,0xe898},
- {0x9743,0xe899}, {0x9744,0xe89a}, {0x9745,0xe89b}, {0x9746,0xe89c},
- {0x9747,0xe89d}, {0x9748,0xe89e}, {0x9749,0xe89f}, {0x974a,0xe8a0},
- {0x974b,0xe8a1}, {0x974c,0xe8a2}, {0x974d,0xe8a3}, {0x974e,0xe8a4},
- {0x974f,0xe8a5}, {0x9750,0xe8a6}, {0x9751,0xe8a7}, {0x9752,0xe8a8},
- {0x9753,0xe8a9}, {0x9754,0xe8aa}, {0x9755,0xe8ab}, {0x9756,0xe8ac},
- {0x9757,0xe8ad}, {0x9758,0xe8ae}, {0x9759,0xe8af}, {0x975a,0xe8b0},
- {0x975b,0xe8b1}, {0x975c,0xe8b2}, {0x975d,0xe8b3}, {0x975e,0xe8b4},
- {0x975f,0xe8b5}, {0x9760,0xe8b6}, {0x9761,0xe8b7}, {0x9762,0xe8b8},
- {0x9763,0xe8b9}, {0x9764,0xe8ba}, {0x9765,0xe8bb}, {0x9766,0xe8bc},
- {0x9767,0xe8bd}, {0x9768,0xe8be}, {0x9769,0xe8bf}, {0x976a,0xe8c0},
- {0x976b,0xe8c1}, {0x976c,0xe8c2}, {0x976d,0xe8c3}, {0x976e,0xe8c4},
- {0x976f,0xe8c5}, {0x9770,0xe8c6}, {0x9771,0xe8c7}, {0x9772,0xe8c8},
- {0x9773,0xe8c9}, {0x9774,0xe8ca}, {0x9775,0xe8cb}, {0x9776,0xe8cc},
- {0x9777,0xe8cd}, {0x9778,0xe8ce}, {0x9779,0xe8cf}, {0x977a,0xe8d0},
- {0x977b,0xe8d1}, {0x977c,0xe8d2}, {0x977d,0xe8d3}, {0x977e,0xe8d4},
- {0x97a1,0xe8d5}, {0x97a2,0xe8d6}, {0x97a3,0xe8d7}, {0x97a4,0xe8d8},
- {0x97a5,0xe8d9}, {0x97a6,0xe8da}, {0x97a7,0xe8db}, {0x97a8,0xe8dc},
- {0x97a9,0xe8dd}, {0x97aa,0xe8de}, {0x97ab,0xe8df}, {0x97ac,0xe8e0},
- {0x97ad,0xe8e1}, {0x97ae,0xe8e2}, {0x97af,0xe8e3}, {0x97b0,0xe8e4},
- {0x97b1,0xe8e5}, {0x97b2,0xe8e6}, {0x97b3,0xe8e7}, {0x97b4,0xe8e8},
- {0x97b5,0xe8e9}, {0x97b6,0xe8ea}, {0x97b7,0xe8eb}, {0x97b8,0xe8ec},
- {0x97b9,0xe8ed}, {0x97ba,0xe8ee}, {0x97bb,0xe8ef}, {0x97bc,0xe8f0},
- {0x97bd,0xe8f1}, {0x97be,0xe8f2}, {0x97bf,0xe8f3}, {0x97c0,0xe8f4},
- {0x97c1,0xe8f5}, {0x97c2,0xe8f6}, {0x97c3,0xe8f7}, {0x97c4,0xe8f8},
- {0x97c5,0xe8f9}, {0x97c6,0xe8fa}, {0x97c7,0xe8fb}, {0x97c8,0xe8fc},
- {0x97c9,0xe8fd}, {0x97ca,0xe8fe}, {0x97cb,0xe8ff}, {0x97cc,0xe900},
- {0x97cd,0xe901}, {0x97ce,0xe902}, {0x97cf,0xe903}, {0x97d0,0xe904},
- {0x97d1,0xe905}, {0x97d2,0xe906}, {0x97d3,0xe907}, {0x97d4,0xe908},
- {0x97d5,0xe909}, {0x97d6,0xe90a}, {0x97d7,0xe90b}, {0x97d8,0xe90c},
- {0x97d9,0xe90d}, {0x97da,0xe90e}, {0x97db,0xe90f}, {0x97dc,0xe910},
- {0x97dd,0xe911}, {0x97de,0xe912}, {0x97df,0xe913}, {0x97e0,0xe914},
- {0x97e1,0xe915}, {0x97e2,0xe916}, {0x97e3,0xe917}, {0x97e4,0xe918},
- {0x97e5,0xe919}, {0x97e6,0xe91a}, {0x97e7,0xe91b}, {0x97e8,0xe91c},
- {0x97e9,0xe91d}, {0x97ea,0xe91e}, {0x97eb,0xe91f}, {0x97ec,0xe920},
- {0x97ed,0xe921}, {0x97ee,0xe922}, {0x97ef,0xe923}, {0x97f0,0xe924},
- {0x97f1,0xe925}, {0x97f2,0xe926}, {0x97f3,0xe927}, {0x97f4,0xe928},
- {0x97f5,0xe929}, {0x97f6,0xe92a}, {0x97f7,0xe92b}, {0x97f8,0xe92c},
- {0x97f9,0xe92d}, {0x97fa,0xe92e}, {0x97fb,0xe92f}, {0x97fc,0xe930},
- {0x97fd,0xe931}, {0x97fe,0xe932}, {0x9840,0xe933}, {0x9841,0xe934},
- {0x9842,0xe935}, {0x9843,0xe936}, {0x9844,0xe937}, {0x9845,0xe938},
- {0x9846,0xe939}, {0x9847,0xe93a}, {0x9848,0xe93b}, {0x9849,0xe93c},
- {0x984a,0xe93d}, {0x984b,0xe93e}, {0x984c,0xe93f}, {0x984d,0xe940},
- {0x984e,0xe941}, {0x984f,0xe942}, {0x9850,0xe943}, {0x9851,0xe944},
- {0x9852,0xe945}, {0x9853,0xe946}, {0x9854,0xe947}, {0x9855,0xe948},
- {0x9856,0xe949}, {0x9857,0xe94a}, {0x9858,0xe94b}, {0x9859,0xe94c},
- {0x985a,0xe94d}, {0x985b,0xe94e}, {0x985c,0xe94f}, {0x985d,0xe950},
- {0x985e,0xe951}, {0x985f,0xe952}, {0x9860,0xe953}, {0x9861,0xe954},
- {0x9862,0xe955}, {0x9863,0xe956}, {0x9864,0xe957}, {0x9865,0xe958},
- {0x9866,0xe959}, {0x9867,0xe95a}, {0x9868,0xe95b}, {0x9869,0xe95c},
- {0x986a,0xe95d}, {0x986b,0xe95e}, {0x986c,0xe95f}, {0x986d,0xe960},
- {0x986e,0xe961}, {0x986f,0xe962}, {0x9870,0xe963}, {0x9871,0xe964},
- {0x9872,0xe965}, {0x9873,0xe966}, {0x9874,0xe967}, {0x9875,0xe968},
- {0x9876,0xe969}, {0x9877,0xe96a}, {0x9878,0xe96b}, {0x9879,0xe96c},
- {0x987a,0xe96d}, {0x987b,0xe96e}, {0x987c,0xe96f}, {0x987d,0xe970},
- {0x987e,0xe971}, {0x98a1,0xe972}, {0x98a2,0xe973}, {0x98a3,0xe974},
- {0x98a4,0xe975}, {0x98a5,0xe976}, {0x98a6,0xe977}, {0x98a7,0xe978},
- {0x98a8,0xe979}, {0x98a9,0xe97a}, {0x98aa,0xe97b}, {0x98ab,0xe97c},
- {0x98ac,0xe97d}, {0x98ad,0xe97e}, {0x98ae,0xe97f}, {0x98af,0xe980},
- {0x98b0,0xe981}, {0x98b1,0xe982}, {0x98b2,0xe983}, {0x98b3,0xe984},
- {0x98b4,0xe985}, {0x98b5,0xe986}, {0x98b6,0xe987}, {0x98b7,0xe988},
- {0x98b8,0xe989}, {0x98b9,0xe98a}, {0x98ba,0xe98b}, {0x98bb,0xe98c},
- {0x98bc,0xe98d}, {0x98bd,0xe98e}, {0x98be,0xe98f}, {0x98bf,0xe990},
- {0x98c0,0xe991}, {0x98c1,0xe992}, {0x98c2,0xe993}, {0x98c3,0xe994},
- {0x98c4,0xe995}, {0x98c5,0xe996}, {0x98c6,0xe997}, {0x98c7,0xe998},
- {0x98c8,0xe999}, {0x98c9,0xe99a}, {0x98ca,0xe99b}, {0x98cb,0xe99c},
- {0x98cc,0xe99d}, {0x98cd,0xe99e}, {0x98ce,0xe99f}, {0x98cf,0xe9a0},
- {0x98d0,0xe9a1}, {0x98d1,0xe9a2}, {0x98d2,0xe9a3}, {0x98d3,0xe9a4},
- {0x98d4,0xe9a5}, {0x98d5,0xe9a6}, {0x98d6,0xe9a7}, {0x98d7,0xe9a8},
- {0x98d8,0xe9a9}, {0x98d9,0xe9aa}, {0x98da,0xe9ab}, {0x98db,0xe9ac},
- {0x98dc,0xe9ad}, {0x98dd,0xe9ae}, {0x98de,0xe9af}, {0x98df,0xe9b0},
- {0x98e0,0xe9b1}, {0x98e1,0xe9b2}, {0x98e2,0xe9b3}, {0x98e3,0xe9b4},
- {0x98e4,0xe9b5}, {0x98e5,0xe9b6}, {0x98e6,0xe9b7}, {0x98e7,0xe9b8},
- {0x98e8,0xe9b9}, {0x98e9,0xe9ba}, {0x98ea,0xe9bb}, {0x98eb,0xe9bc},
- {0x98ec,0xe9bd}, {0x98ed,0xe9be}, {0x98ee,0xe9bf}, {0x98ef,0xe9c0},
- {0x98f0,0xe9c1}, {0x98f1,0xe9c2}, {0x98f2,0xe9c3}, {0x98f3,0xe9c4},
- {0x98f4,0xe9c5}, {0x98f5,0xe9c6}, {0x98f6,0xe9c7}, {0x98f7,0xe9c8},
- {0x98f8,0xe9c9}, {0x98f9,0xe9ca}, {0x98fa,0xe9cb}, {0x98fb,0xe9cc},
- {0x98fc,0xe9cd}, {0x98fd,0xe9ce}, {0x98fe,0xe9cf}, {0x9940,0xe9d0},
- {0x9941,0xe9d1}, {0x9942,0xe9d2}, {0x9943,0xe9d3}, {0x9944,0xe9d4},
- {0x9945,0xe9d5}, {0x9946,0xe9d6}, {0x9947,0xe9d7}, {0x9948,0xe9d8},
- {0x9949,0xe9d9}, {0x994a,0xe9da}, {0x994b,0xe9db}, {0x994c,0xe9dc},
- {0x994d,0xe9dd}, {0x994e,0xe9de}, {0x994f,0xe9df}, {0x9950,0xe9e0},
- {0x9951,0xe9e1}, {0x9952,0xe9e2}, {0x9953,0xe9e3}, {0x9954,0xe9e4},
- {0x9955,0xe9e5}, {0x9956,0xe9e6}, {0x9957,0xe9e7}, {0x9958,0xe9e8},
- {0x9959,0xe9e9}, {0x995a,0xe9ea}, {0x995b,0xe9eb}, {0x995c,0xe9ec},
- {0x995d,0xe9ed}, {0x995e,0xe9ee}, {0x995f,0xe9ef}, {0x9960,0xe9f0},
- {0x9961,0xe9f1}, {0x9962,0xe9f2}, {0x9963,0xe9f3}, {0x9964,0xe9f4},
- {0x9965,0xe9f5}, {0x9966,0xe9f6}, {0x9967,0xe9f7}, {0x9968,0xe9f8},
- {0x9969,0xe9f9}, {0x996a,0xe9fa}, {0x996b,0xe9fb}, {0x996c,0xe9fc},
- {0x996d,0xe9fd}, {0x996e,0xe9fe}, {0x996f,0xe9ff}, {0x9970,0xea00},
- {0x9971,0xea01}, {0x9972,0xea02}, {0x9973,0xea03}, {0x9974,0xea04},
- {0x9975,0xea05}, {0x9976,0xea06}, {0x9977,0xea07}, {0x9978,0xea08},
- {0x9979,0xea09}, {0x997a,0xea0a}, {0x997b,0xea0b}, {0x997c,0xea0c},
- {0x997d,0xea0d}, {0x997e,0xea0e}, {0x99a1,0xea0f}, {0x99a2,0xea10},
- {0x99a3,0xea11}, {0x99a4,0xea12}, {0x99a5,0xea13}, {0x99a6,0xea14},
- {0x99a7,0xea15}, {0x99a8,0xea16}, {0x99a9,0xea17}, {0x99aa,0xea18},
- {0x99ab,0xea19}, {0x99ac,0xea1a}, {0x99ad,0xea1b}, {0x99ae,0xea1c},
- {0x99af,0xea1d}, {0x99b0,0xea1e}, {0x99b1,0xea1f}, {0x99b2,0xea20},
- {0x99b3,0xea21}, {0x99b4,0xea22}, {0x99b5,0xea23}, {0x99b6,0xea24},
- {0x99b7,0xea25}, {0x99b8,0xea26}, {0x99b9,0xea27}, {0x99ba,0xea28},
- {0x99bb,0xea29}, {0x99bc,0xea2a}, {0x99bd,0xea2b}, {0x99be,0xea2c},
- {0x99bf,0xea2d}, {0x99c0,0xea2e}, {0x99c1,0xea2f}, {0x99c2,0xea30},
- {0x99c3,0xea31}, {0x99c4,0xea32}, {0x99c5,0xea33}, {0x99c6,0xea34},
- {0x99c7,0xea35}, {0x99c8,0xea36}, {0x99c9,0xea37}, {0x99ca,0xea38},
- {0x99cb,0xea39}, {0x99cc,0xea3a}, {0x99cd,0xea3b}, {0x99ce,0xea3c},
- {0x99cf,0xea3d}, {0x99d0,0xea3e}, {0x99d1,0xea3f}, {0x99d2,0xea40},
- {0x99d3,0xea41}, {0x99d4,0xea42}, {0x99d5,0xea43}, {0x99d6,0xea44},
- {0x99d7,0xea45}, {0x99d8,0xea46}, {0x99d9,0xea47}, {0x99da,0xea48},
- {0x99db,0xea49}, {0x99dc,0xea4a}, {0x99dd,0xea4b}, {0x99de,0xea4c},
- {0x99df,0xea4d}, {0x99e0,0xea4e}, {0x99e1,0xea4f}, {0x99e2,0xea50},
- {0x99e3,0xea51}, {0x99e4,0xea52}, {0x99e5,0xea53}, {0x99e6,0xea54},
- {0x99e7,0xea55}, {0x99e8,0xea56}, {0x99e9,0xea57}, {0x99ea,0xea58},
- {0x99eb,0xea59}, {0x99ec,0xea5a}, {0x99ed,0xea5b}, {0x99ee,0xea5c},
- {0x99ef,0xea5d}, {0x99f0,0xea5e}, {0x99f1,0xea5f}, {0x99f2,0xea60},
- {0x99f3,0xea61}, {0x99f4,0xea62}, {0x99f5,0xea63}, {0x99f6,0xea64},
- {0x99f7,0xea65}, {0x99f8,0xea66}, {0x99f9,0xea67}, {0x99fa,0xea68},
- {0x99fb,0xea69}, {0x99fc,0xea6a}, {0x99fd,0xea6b}, {0x99fe,0xea6c},
- {0x9a40,0xea6d}, {0x9a41,0xea6e}, {0x9a42,0xea6f}, {0x9a43,0xea70},
- {0x9a44,0xea71}, {0x9a45,0xea72}, {0x9a46,0xea73}, {0x9a47,0xea74},
- {0x9a48,0xea75}, {0x9a49,0xea76}, {0x9a4a,0xea77}, {0x9a4b,0xea78},
- {0x9a4c,0xea79}, {0x9a4d,0xea7a}, {0x9a4e,0xea7b}, {0x9a4f,0xea7c},
- {0x9a50,0xea7d}, {0x9a51,0xea7e}, {0x9a52,0xea7f}, {0x9a53,0xea80},
- {0x9a54,0xea81}, {0x9a55,0xea82}, {0x9a56,0xea83}, {0x9a57,0xea84},
- {0x9a58,0xea85}, {0x9a59,0xea86}, {0x9a5a,0xea87}, {0x9a5b,0xea88},
- {0x9a5c,0xea89}, {0x9a5d,0xea8a}, {0x9a5e,0xea8b}, {0x9a5f,0xea8c},
- {0x9a60,0xea8d}, {0x9a61,0xea8e}, {0x9a62,0xea8f}, {0x9a63,0xea90},
- {0x9a64,0xea91}, {0x9a65,0xea92}, {0x9a66,0xea93}, {0x9a67,0xea94},
- {0x9a68,0xea95}, {0x9a69,0xea96}, {0x9a6a,0xea97}, {0x9a6b,0xea98},
- {0x9a6c,0xea99}, {0x9a6d,0xea9a}, {0x9a6e,0xea9b}, {0x9a6f,0xea9c},
- {0x9a70,0xea9d}, {0x9a71,0xea9e}, {0x9a72,0xea9f}, {0x9a73,0xeaa0},
- {0x9a74,0xeaa1}, {0x9a75,0xeaa2}, {0x9a76,0xeaa3}, {0x9a77,0xeaa4},
- {0x9a78,0xeaa5}, {0x9a79,0xeaa6}, {0x9a7a,0xeaa7}, {0x9a7b,0xeaa8},
- {0x9a7c,0xeaa9}, {0x9a7d,0xeaaa}, {0x9a7e,0xeaab}, {0x9aa1,0xeaac},
- {0x9aa2,0xeaad}, {0x9aa3,0xeaae}, {0x9aa4,0xeaaf}, {0x9aa5,0xeab0},
- {0x9aa6,0xeab1}, {0x9aa7,0xeab2}, {0x9aa8,0xeab3}, {0x9aa9,0xeab4},
- {0x9aaa,0xeab5}, {0x9aab,0xeab6}, {0x9aac,0xeab7}, {0x9aad,0xeab8},
- {0x9aae,0xeab9}, {0x9aaf,0xeaba}, {0x9ab0,0xeabb}, {0x9ab1,0xeabc},
- {0x9ab2,0xeabd}, {0x9ab3,0xeabe}, {0x9ab4,0xeabf}, {0x9ab5,0xeac0},
- {0x9ab6,0xeac1}, {0x9ab7,0xeac2}, {0x9ab8,0xeac3}, {0x9ab9,0xeac4},
- {0x9aba,0xeac5}, {0x9abb,0xeac6}, {0x9abc,0xeac7}, {0x9abd,0xeac8},
- {0x9abe,0xeac9}, {0x9abf,0xeaca}, {0x9ac0,0xeacb}, {0x9ac1,0xeacc},
- {0x9ac2,0xeacd}, {0x9ac3,0xeace}, {0x9ac4,0xeacf}, {0x9ac5,0xead0},
- {0x9ac6,0xead1}, {0x9ac7,0xead2}, {0x9ac8,0xead3}, {0x9ac9,0xead4},
- {0x9aca,0xead5}, {0x9acb,0xead6}, {0x9acc,0xead7}, {0x9acd,0xead8},
- {0x9ace,0xead9}, {0x9acf,0xeada}, {0x9ad0,0xeadb}, {0x9ad1,0xeadc},
- {0x9ad2,0xeadd}, {0x9ad3,0xeade}, {0x9ad4,0xeadf}, {0x9ad5,0xeae0},
- {0x9ad6,0xeae1}, {0x9ad7,0xeae2}, {0x9ad8,0xeae3}, {0x9ad9,0xeae4},
- {0x9ada,0xeae5}, {0x9adb,0xeae6}, {0x9adc,0xeae7}, {0x9add,0xeae8},
- {0x9ade,0xeae9}, {0x9adf,0xeaea}, {0x9ae0,0xeaeb}, {0x9ae1,0xeaec},
- {0x9ae2,0xeaed}, {0x9ae3,0xeaee}, {0x9ae4,0xeaef}, {0x9ae5,0xeaf0},
- {0x9ae6,0xeaf1}, {0x9ae7,0xeaf2}, {0x9ae8,0xeaf3}, {0x9ae9,0xeaf4},
- {0x9aea,0xeaf5}, {0x9aeb,0xeaf6}, {0x9aec,0xeaf7}, {0x9aed,0xeaf8},
- {0x9aee,0xeaf9}, {0x9aef,0xeafa}, {0x9af0,0xeafb}, {0x9af1,0xeafc},
- {0x9af2,0xeafd}, {0x9af3,0xeafe}, {0x9af4,0xeaff}, {0x9af5,0xeb00},
- {0x9af6,0xeb01}, {0x9af7,0xeb02}, {0x9af8,0xeb03}, {0x9af9,0xeb04},
- {0x9afa,0xeb05}, {0x9afb,0xeb06}, {0x9afc,0xeb07}, {0x9afd,0xeb08},
- {0x9afe,0xeb09}, {0x9b40,0xeb0a}, {0x9b41,0xeb0b}, {0x9b42,0xeb0c},
- {0x9b43,0xeb0d}, {0x9b44,0xeb0e}, {0x9b45,0xeb0f}, {0x9b46,0xeb10},
- {0x9b47,0xeb11}, {0x9b48,0xeb12}, {0x9b49,0xeb13}, {0x9b4a,0xeb14},
- {0x9b4b,0xeb15}, {0x9b4c,0xeb16}, {0x9b4d,0xeb17}, {0x9b4e,0xeb18},
- {0x9b4f,0xeb19}, {0x9b50,0xeb1a}, {0x9b51,0xeb1b}, {0x9b52,0xeb1c},
- {0x9b53,0xeb1d}, {0x9b54,0xeb1e}, {0x9b55,0xeb1f}, {0x9b56,0xeb20},
- {0x9b57,0xeb21}, {0x9b58,0xeb22}, {0x9b59,0xeb23}, {0x9b5a,0xeb24},
- {0x9b5b,0xeb25}, {0x9b5c,0xeb26}, {0x9b5d,0xeb27}, {0x9b5e,0xeb28},
- {0x9b5f,0xeb29}, {0x9b60,0xeb2a}, {0x9b61,0xeb2b}, {0x9b62,0xeb2c},
- {0x9b63,0xeb2d}, {0x9b64,0xeb2e}, {0x9b65,0xeb2f}, {0x9b66,0xeb30},
- {0x9b67,0xeb31}, {0x9b68,0xeb32}, {0x9b69,0xeb33}, {0x9b6a,0xeb34},
- {0x9b6b,0xeb35}, {0x9b6c,0xeb36}, {0x9b6d,0xeb37}, {0x9b6e,0xeb38},
- {0x9b6f,0xeb39}, {0x9b70,0xeb3a}, {0x9b71,0xeb3b}, {0x9b72,0xeb3c},
- {0x9b73,0xeb3d}, {0x9b74,0xeb3e}, {0x9b75,0xeb3f}, {0x9b76,0xeb40},
- {0x9b77,0xeb41}, {0x9b78,0xeb42}, {0x9b79,0xeb43}, {0x9b7a,0xeb44},
- {0x9b7b,0xeb45}, {0x9b7c,0xeb46}, {0x9b7d,0xeb47}, {0x9b7e,0xeb48},
- {0x9ba1,0xeb49}, {0x9ba2,0xeb4a}, {0x9ba3,0xeb4b}, {0x9ba4,0xeb4c},
- {0x9ba5,0xeb4d}, {0x9ba6,0xeb4e}, {0x9ba7,0xeb4f}, {0x9ba8,0xeb50},
- {0x9ba9,0xeb51}, {0x9baa,0xeb52}, {0x9bab,0xeb53}, {0x9bac,0xeb54},
- {0x9bad,0xeb55}, {0x9bae,0xeb56}, {0x9baf,0xeb57}, {0x9bb0,0xeb58},
- {0x9bb1,0xeb59}, {0x9bb2,0xeb5a}, {0x9bb3,0xeb5b}, {0x9bb4,0xeb5c},
- {0x9bb5,0xeb5d}, {0x9bb6,0xeb5e}, {0x9bb7,0xeb5f}, {0x9bb8,0xeb60},
- {0x9bb9,0xeb61}, {0x9bba,0xeb62}, {0x9bbb,0xeb63}, {0x9bbc,0xeb64},
- {0x9bbd,0xeb65}, {0x9bbe,0xeb66}, {0x9bbf,0xeb67}, {0x9bc0,0xeb68},
- {0x9bc1,0xeb69}, {0x9bc2,0xeb6a}, {0x9bc3,0xeb6b}, {0x9bc4,0xeb6c},
- {0x9bc5,0xeb6d}, {0x9bc6,0xeb6e}, {0x9bc7,0xeb6f}, {0x9bc8,0xeb70},
- {0x9bc9,0xeb71}, {0x9bca,0xeb72}, {0x9bcb,0xeb73}, {0x9bcc,0xeb74},
- {0x9bcd,0xeb75}, {0x9bce,0xeb76}, {0x9bcf,0xeb77}, {0x9bd0,0xeb78},
- {0x9bd1,0xeb79}, {0x9bd2,0xeb7a}, {0x9bd3,0xeb7b}, {0x9bd4,0xeb7c},
- {0x9bd5,0xeb7d}, {0x9bd6,0xeb7e}, {0x9bd7,0xeb7f}, {0x9bd8,0xeb80},
- {0x9bd9,0xeb81}, {0x9bda,0xeb82}, {0x9bdb,0xeb83}, {0x9bdc,0xeb84},
- {0x9bdd,0xeb85}, {0x9bde,0xeb86}, {0x9bdf,0xeb87}, {0x9be0,0xeb88},
- {0x9be1,0xeb89}, {0x9be2,0xeb8a}, {0x9be3,0xeb8b}, {0x9be4,0xeb8c},
- {0x9be5,0xeb8d}, {0x9be6,0xeb8e}, {0x9be7,0xeb8f}, {0x9be8,0xeb90},
- {0x9be9,0xeb91}, {0x9bea,0xeb92}, {0x9beb,0xeb93}, {0x9bec,0xeb94},
- {0x9bed,0xeb95}, {0x9bee,0xeb96}, {0x9bef,0xeb97}, {0x9bf0,0xeb98},
- {0x9bf1,0xeb99}, {0x9bf2,0xeb9a}, {0x9bf3,0xeb9b}, {0x9bf4,0xeb9c},
- {0x9bf5,0xeb9d}, {0x9bf6,0xeb9e}, {0x9bf7,0xeb9f}, {0x9bf8,0xeba0},
- {0x9bf9,0xeba1}, {0x9bfa,0xeba2}, {0x9bfb,0xeba3}, {0x9bfc,0xeba4},
- {0x9bfd,0xeba5}, {0x9bfe,0xeba6}, {0x9c40,0xeba7}, {0x9c41,0xeba8},
- {0x9c42,0xeba9}, {0x9c43,0xebaa}, {0x9c44,0xebab}, {0x9c45,0xebac},
- {0x9c46,0xebad}, {0x9c47,0xebae}, {0x9c48,0xebaf}, {0x9c49,0xebb0},
- {0x9c4a,0xebb1}, {0x9c4b,0xebb2}, {0x9c4c,0xebb3}, {0x9c4d,0xebb4},
- {0x9c4e,0xebb5}, {0x9c4f,0xebb6}, {0x9c50,0xebb7}, {0x9c51,0xebb8},
- {0x9c52,0xebb9}, {0x9c53,0xebba}, {0x9c54,0xebbb}, {0x9c55,0xebbc},
- {0x9c56,0xebbd}, {0x9c57,0xebbe}, {0x9c58,0xebbf}, {0x9c59,0xebc0},
- {0x9c5a,0xebc1}, {0x9c5b,0xebc2}, {0x9c5c,0xebc3}, {0x9c5d,0xebc4},
- {0x9c5e,0xebc5}, {0x9c5f,0xebc6}, {0x9c60,0xebc7}, {0x9c61,0xebc8},
- {0x9c62,0xebc9}, {0x9c63,0xebca}, {0x9c64,0xebcb}, {0x9c65,0xebcc},
- {0x9c66,0xebcd}, {0x9c67,0xebce}, {0x9c68,0xebcf}, {0x9c69,0xebd0},
- {0x9c6a,0xebd1}, {0x9c6b,0xebd2}, {0x9c6c,0xebd3}, {0x9c6d,0xebd4},
- {0x9c6e,0xebd5}, {0x9c6f,0xebd6}, {0x9c70,0xebd7}, {0x9c71,0xebd8},
- {0x9c72,0xebd9}, {0x9c73,0xebda}, {0x9c74,0xebdb}, {0x9c75,0xebdc},
- {0x9c76,0xebdd}, {0x9c77,0xebde}, {0x9c78,0xebdf}, {0x9c79,0xebe0},
- {0x9c7a,0xebe1}, {0x9c7b,0xebe2}, {0x9c7c,0xebe3}, {0x9c7d,0xebe4},
- {0x9c7e,0xebe5}, {0x9ca1,0xebe6}, {0x9ca2,0xebe7}, {0x9ca3,0xebe8},
- {0x9ca4,0xebe9}, {0x9ca5,0xebea}, {0x9ca6,0xebeb}, {0x9ca7,0xebec},
- {0x9ca8,0xebed}, {0x9ca9,0xebee}, {0x9caa,0xebef}, {0x9cab,0xebf0},
- {0x9cac,0xebf1}, {0x9cad,0xebf2}, {0x9cae,0xebf3}, {0x9caf,0xebf4},
- {0x9cb0,0xebf5}, {0x9cb1,0xebf6}, {0x9cb2,0xebf7}, {0x9cb3,0xebf8},
- {0x9cb4,0xebf9}, {0x9cb5,0xebfa}, {0x9cb6,0xebfb}, {0x9cb7,0xebfc},
- {0x9cb8,0xebfd}, {0x9cb9,0xebfe}, {0x9cba,0xebff}, {0x9cbb,0xec00},
- {0x9cbc,0xec01}, {0x9cbd,0xec02}, {0x9cbe,0xec03}, {0x9cbf,0xec04},
- {0x9cc0,0xec05}, {0x9cc1,0xec06}, {0x9cc2,0xec07}, {0x9cc3,0xec08},
- {0x9cc4,0xec09}, {0x9cc5,0xec0a}, {0x9cc6,0xec0b}, {0x9cc7,0xec0c},
- {0x9cc8,0xec0d}, {0x9cc9,0xec0e}, {0x9cca,0xec0f}, {0x9ccb,0xec10},
- {0x9ccc,0xec11}, {0x9ccd,0xec12}, {0x9cce,0xec13}, {0x9ccf,0xec14},
- {0x9cd0,0xec15}, {0x9cd1,0xec16}, {0x9cd2,0xec17}, {0x9cd3,0xec18},
- {0x9cd4,0xec19}, {0x9cd5,0xec1a}, {0x9cd6,0xec1b}, {0x9cd7,0xec1c},
- {0x9cd8,0xec1d}, {0x9cd9,0xec1e}, {0x9cda,0xec1f}, {0x9cdb,0xec20},
- {0x9cdc,0xec21}, {0x9cdd,0xec22}, {0x9cde,0xec23}, {0x9cdf,0xec24},
- {0x9ce0,0xec25}, {0x9ce1,0xec26}, {0x9ce2,0xec27}, {0x9ce3,0xec28},
- {0x9ce4,0xec29}, {0x9ce5,0xec2a}, {0x9ce6,0xec2b}, {0x9ce7,0xec2c},
- {0x9ce8,0xec2d}, {0x9ce9,0xec2e}, {0x9cea,0xec2f}, {0x9ceb,0xec30},
- {0x9cec,0xec31}, {0x9ced,0xec32}, {0x9cee,0xec33}, {0x9cef,0xec34},
- {0x9cf0,0xec35}, {0x9cf1,0xec36}, {0x9cf2,0xec37}, {0x9cf3,0xec38},
- {0x9cf4,0xec39}, {0x9cf5,0xec3a}, {0x9cf6,0xec3b}, {0x9cf7,0xec3c},
- {0x9cf8,0xec3d}, {0x9cf9,0xec3e}, {0x9cfa,0xec3f}, {0x9cfb,0xec40},
- {0x9cfc,0xec41}, {0x9cfd,0xec42}, {0x9cfe,0xec43}, {0x9d40,0xec44},
- {0x9d41,0xec45}, {0x9d42,0xec46}, {0x9d43,0xec47}, {0x9d44,0xec48},
- {0x9d45,0xec49}, {0x9d46,0xec4a}, {0x9d47,0xec4b}, {0x9d48,0xec4c},
- {0x9d49,0xec4d}, {0x9d4a,0xec4e}, {0x9d4b,0xec4f}, {0x9d4c,0xec50},
- {0x9d4d,0xec51}, {0x9d4e,0xec52}, {0x9d4f,0xec53}, {0x9d50,0xec54},
- {0x9d51,0xec55}, {0x9d52,0xec56}, {0x9d53,0xec57}, {0x9d54,0xec58},
- {0x9d55,0xec59}, {0x9d56,0xec5a}, {0x9d57,0xec5b}, {0x9d58,0xec5c},
- {0x9d59,0xec5d}, {0x9d5a,0xec5e}, {0x9d5b,0xec5f}, {0x9d5c,0xec60},
- {0x9d5d,0xec61}, {0x9d5e,0xec62}, {0x9d5f,0xec63}, {0x9d60,0xec64},
- {0x9d61,0xec65}, {0x9d62,0xec66}, {0x9d63,0xec67}, {0x9d64,0xec68},
- {0x9d65,0xec69}, {0x9d66,0xec6a}, {0x9d67,0xec6b}, {0x9d68,0xec6c},
- {0x9d69,0xec6d}, {0x9d6a,0xec6e}, {0x9d6b,0xec6f}, {0x9d6c,0xec70},
- {0x9d6d,0xec71}, {0x9d6e,0xec72}, {0x9d6f,0xec73}, {0x9d70,0xec74},
- {0x9d71,0xec75}, {0x9d72,0xec76}, {0x9d73,0xec77}, {0x9d74,0xec78},
- {0x9d75,0xec79}, {0x9d76,0xec7a}, {0x9d77,0xec7b}, {0x9d78,0xec7c},
- {0x9d79,0xec7d}, {0x9d7a,0xec7e}, {0x9d7b,0xec7f}, {0x9d7c,0xec80},
- {0x9d7d,0xec81}, {0x9d7e,0xec82}, {0x9da1,0xec83}, {0x9da2,0xec84},
- {0x9da3,0xec85}, {0x9da4,0xec86}, {0x9da5,0xec87}, {0x9da6,0xec88},
- {0x9da7,0xec89}, {0x9da8,0xec8a}, {0x9da9,0xec8b}, {0x9daa,0xec8c},
- {0x9dab,0xec8d}, {0x9dac,0xec8e}, {0x9dad,0xec8f}, {0x9dae,0xec90},
- {0x9daf,0xec91}, {0x9db0,0xec92}, {0x9db1,0xec93}, {0x9db2,0xec94},
- {0x9db3,0xec95}, {0x9db4,0xec96}, {0x9db5,0xec97}, {0x9db6,0xec98},
- {0x9db7,0xec99}, {0x9db8,0xec9a}, {0x9db9,0xec9b}, {0x9dba,0xec9c},
- {0x9dbb,0xec9d}, {0x9dbc,0xec9e}, {0x9dbd,0xec9f}, {0x9dbe,0xeca0},
- {0x9dbf,0xeca1}, {0x9dc0,0xeca2}, {0x9dc1,0xeca3}, {0x9dc2,0xeca4},
- {0x9dc3,0xeca5}, {0x9dc4,0xeca6}, {0x9dc5,0xeca7}, {0x9dc6,0xeca8},
- {0x9dc7,0xeca9}, {0x9dc8,0xecaa}, {0x9dc9,0xecab}, {0x9dca,0xecac},
- {0x9dcb,0xecad}, {0x9dcc,0xecae}, {0x9dcd,0xecaf}, {0x9dce,0xecb0},
- {0x9dcf,0xecb1}, {0x9dd0,0xecb2}, {0x9dd1,0xecb3}, {0x9dd2,0xecb4},
- {0x9dd3,0xecb5}, {0x9dd4,0xecb6}, {0x9dd5,0xecb7}, {0x9dd6,0xecb8},
- {0x9dd7,0xecb9}, {0x9dd8,0xecba}, {0x9dd9,0xecbb}, {0x9dda,0xecbc},
- {0x9ddb,0xecbd}, {0x9ddc,0xecbe}, {0x9ddd,0xecbf}, {0x9dde,0xecc0},
- {0x9ddf,0xecc1}, {0x9de0,0xecc2}, {0x9de1,0xecc3}, {0x9de2,0xecc4},
- {0x9de3,0xecc5}, {0x9de4,0xecc6}, {0x9de5,0xecc7}, {0x9de6,0xecc8},
- {0x9de7,0xecc9}, {0x9de8,0xecca}, {0x9de9,0xeccb}, {0x9dea,0xeccc},
- {0x9deb,0xeccd}, {0x9dec,0xecce}, {0x9ded,0xeccf}, {0x9dee,0xecd0},
- {0x9def,0xecd1}, {0x9df0,0xecd2}, {0x9df1,0xecd3}, {0x9df2,0xecd4},
- {0x9df3,0xecd5}, {0x9df4,0xecd6}, {0x9df5,0xecd7}, {0x9df6,0xecd8},
- {0x9df7,0xecd9}, {0x9df8,0xecda}, {0x9df9,0xecdb}, {0x9dfa,0xecdc},
- {0x9dfb,0xecdd}, {0x9dfc,0xecde}, {0x9dfd,0xecdf}, {0x9dfe,0xece0},
- {0x9e40,0xece1}, {0x9e41,0xece2}, {0x9e42,0xece3}, {0x9e43,0xece4},
- {0x9e44,0xece5}, {0x9e45,0xece6}, {0x9e46,0xece7}, {0x9e47,0xece8},
- {0x9e48,0xece9}, {0x9e49,0xecea}, {0x9e4a,0xeceb}, {0x9e4b,0xecec},
- {0x9e4c,0xeced}, {0x9e4d,0xecee}, {0x9e4e,0xecef}, {0x9e4f,0xecf0},
- {0x9e50,0xecf1}, {0x9e51,0xecf2}, {0x9e52,0xecf3}, {0x9e53,0xecf4},
- {0x9e54,0xecf5}, {0x9e55,0xecf6}, {0x9e56,0xecf7}, {0x9e57,0xecf8},
- {0x9e58,0xecf9}, {0x9e59,0xecfa}, {0x9e5a,0xecfb}, {0x9e5b,0xecfc},
- {0x9e5c,0xecfd}, {0x9e5d,0xecfe}, {0x9e5e,0xecff}, {0x9e5f,0xed00},
- {0x9e60,0xed01}, {0x9e61,0xed02}, {0x9e62,0xed03}, {0x9e63,0xed04},
- {0x9e64,0xed05}, {0x9e65,0xed06}, {0x9e66,0xed07}, {0x9e67,0xed08},
- {0x9e68,0xed09}, {0x9e69,0xed0a}, {0x9e6a,0xed0b}, {0x9e6b,0xed0c},
- {0x9e6c,0xed0d}, {0x9e6d,0xed0e}, {0x9e6e,0xed0f}, {0x9e6f,0xed10},
- {0x9e70,0xed11}, {0x9e71,0xed12}, {0x9e72,0xed13}, {0x9e73,0xed14},
- {0x9e74,0xed15}, {0x9e75,0xed16}, {0x9e76,0xed17}, {0x9e77,0xed18},
- {0x9e78,0xed19}, {0x9e79,0xed1a}, {0x9e7a,0xed1b}, {0x9e7b,0xed1c},
- {0x9e7c,0xed1d}, {0x9e7d,0xed1e}, {0x9e7e,0xed1f}, {0x9ea1,0xed20},
- {0x9ea2,0xed21}, {0x9ea3,0xed22}, {0x9ea4,0xed23}, {0x9ea5,0xed24},
- {0x9ea6,0xed25}, {0x9ea7,0xed26}, {0x9ea8,0xed27}, {0x9ea9,0xed28},
- {0x9eaa,0xed29}, {0x9eab,0xed2a}, {0x9eac,0xed2b}, {0x9ead,0xed2c},
- {0x9eae,0xed2d}, {0x9eaf,0xed2e}, {0x9eb0,0xed2f}, {0x9eb1,0xed30},
- {0x9eb2,0xed31}, {0x9eb3,0xed32}, {0x9eb4,0xed33}, {0x9eb5,0xed34},
- {0x9eb6,0xed35}, {0x9eb7,0xed36}, {0x9eb8,0xed37}, {0x9eb9,0xed38},
- {0x9eba,0xed39}, {0x9ebb,0xed3a}, {0x9ebc,0xed3b}, {0x9ebd,0xed3c},
- {0x9ebe,0xed3d}, {0x9ebf,0xed3e}, {0x9ec0,0xed3f}, {0x9ec1,0xed40},
- {0x9ec2,0xed41}, {0x9ec3,0xed42}, {0x9ec4,0xed43}, {0x9ec5,0xed44},
- {0x9ec6,0xed45}, {0x9ec7,0xed46}, {0x9ec8,0xed47}, {0x9ec9,0xed48},
- {0x9eca,0xed49}, {0x9ecb,0xed4a}, {0x9ecc,0xed4b}, {0x9ecd,0xed4c},
- {0x9ece,0xed4d}, {0x9ecf,0xed4e}, {0x9ed0,0xed4f}, {0x9ed1,0xed50},
- {0x9ed2,0xed51}, {0x9ed3,0xed52}, {0x9ed4,0xed53}, {0x9ed5,0xed54},
- {0x9ed6,0xed55}, {0x9ed7,0xed56}, {0x9ed8,0xed57}, {0x9ed9,0xed58},
- {0x9eda,0xed59}, {0x9edb,0xed5a}, {0x9edc,0xed5b}, {0x9edd,0xed5c},
- {0x9ede,0xed5d}, {0x9edf,0xed5e}, {0x9ee0,0xed5f}, {0x9ee1,0xed60},
- {0x9ee2,0xed61}, {0x9ee3,0xed62}, {0x9ee4,0xed63}, {0x9ee5,0xed64},
- {0x9ee6,0xed65}, {0x9ee7,0xed66}, {0x9ee8,0xed67}, {0x9ee9,0xed68},
- {0x9eea,0xed69}, {0x9eeb,0xed6a}, {0x9eec,0xed6b}, {0x9eed,0xed6c},
- {0x9eee,0xed6d}, {0x9eef,0xed6e}, {0x9ef0,0xed6f}, {0x9ef1,0xed70},
- {0x9ef2,0xed71}, {0x9ef3,0xed72}, {0x9ef4,0xed73}, {0x9ef5,0xed74},
- {0x9ef6,0xed75}, {0x9ef7,0xed76}, {0x9ef8,0xed77}, {0x9ef9,0xed78},
- {0x9efa,0xed79}, {0x9efb,0xed7a}, {0x9efc,0xed7b}, {0x9efd,0xed7c},
- {0x9efe,0xed7d}, {0x9f40,0xed7e}, {0x9f41,0xed7f}, {0x9f42,0xed80},
- {0x9f43,0xed81}, {0x9f44,0xed82}, {0x9f45,0xed83}, {0x9f46,0xed84},
- {0x9f47,0xed85}, {0x9f48,0xed86}, {0x9f49,0xed87}, {0x9f4a,0xed88},
- {0x9f4b,0xed89}, {0x9f4c,0xed8a}, {0x9f4d,0xed8b}, {0x9f4e,0xed8c},
- {0x9f4f,0xed8d}, {0x9f50,0xed8e}, {0x9f51,0xed8f}, {0x9f52,0xed90},
- {0x9f53,0xed91}, {0x9f54,0xed92}, {0x9f55,0xed93}, {0x9f56,0xed94},
- {0x9f57,0xed95}, {0x9f58,0xed96}, {0x9f59,0xed97}, {0x9f5a,0xed98},
- {0x9f5b,0xed99}, {0x9f5c,0xed9a}, {0x9f5d,0xed9b}, {0x9f5e,0xed9c},
- {0x9f5f,0xed9d}, {0x9f60,0xed9e}, {0x9f61,0xed9f}, {0x9f62,0xeda0},
- {0x9f63,0xeda1}, {0x9f64,0xeda2}, {0x9f65,0xeda3}, {0x9f66,0xeda4},
- {0x9f67,0xeda5}, {0x9f68,0xeda6}, {0x9f69,0xeda7}, {0x9f6a,0xeda8},
- {0x9f6b,0xeda9}, {0x9f6c,0xedaa}, {0x9f6d,0xedab}, {0x9f6e,0xedac},
- {0x9f6f,0xedad}, {0x9f70,0xedae}, {0x9f71,0xedaf}, {0x9f72,0xedb0},
- {0x9f73,0xedb1}, {0x9f74,0xedb2}, {0x9f75,0xedb3}, {0x9f76,0xedb4},
- {0x9f77,0xedb5}, {0x9f78,0xedb6}, {0x9f79,0xedb7}, {0x9f7a,0xedb8},
- {0x9f7b,0xedb9}, {0x9f7c,0xedba}, {0x9f7d,0xedbb}, {0x9f7e,0xedbc},
- {0x9fa1,0xedbd}, {0x9fa2,0xedbe}, {0x9fa3,0xedbf}, {0x9fa4,0xedc0},
- {0x9fa5,0xedc1}, {0x9fa6,0xedc2}, {0x9fa7,0xedc3}, {0x9fa8,0xedc4},
- {0x9fa9,0xedc5}, {0x9faa,0xedc6}, {0x9fab,0xedc7}, {0x9fac,0xedc8},
- {0x9fad,0xedc9}, {0x9fae,0xedca}, {0x9faf,0xedcb}, {0x9fb0,0xedcc},
- {0x9fb1,0xedcd}, {0x9fb2,0xedce}, {0x9fb3,0xedcf}, {0x9fb4,0xedd0},
- {0x9fb5,0xedd1}, {0x9fb6,0xedd2}, {0x9fb7,0xedd3}, {0x9fb8,0xedd4},
- {0x9fb9,0xedd5}, {0x9fba,0xedd6}, {0x9fbb,0xedd7}, {0x9fbc,0xedd8},
- {0x9fbd,0xedd9}, {0x9fbe,0xedda}, {0x9fbf,0xeddb}, {0x9fc0,0xeddc},
- {0x9fc1,0xeddd}, {0x9fc2,0xedde}, {0x9fc3,0xeddf}, {0x9fc4,0xede0},
- {0x9fc5,0xede1}, {0x9fc6,0xede2}, {0x9fc7,0xede3}, {0x9fc8,0xede4},
- {0x9fc9,0xede5}, {0x9fca,0xede6}, {0x9fcb,0xede7}, {0x9fcc,0xede8},
- {0x9fcd,0xede9}, {0x9fce,0xedea}, {0x9fcf,0xedeb}, {0x9fd0,0xedec},
- {0x9fd1,0xeded}, {0x9fd2,0xedee}, {0x9fd3,0xedef}, {0x9fd4,0xedf0},
- {0x9fd5,0xedf1}, {0x9fd6,0xedf2}, {0x9fd7,0xedf3}, {0x9fd8,0xedf4},
- {0x9fd9,0xedf5}, {0x9fda,0xedf6}, {0x9fdb,0xedf7}, {0x9fdc,0xedf8},
- {0x9fdd,0xedf9}, {0x9fde,0xedfa}, {0x9fdf,0xedfb}, {0x9fe0,0xedfc},
- {0x9fe1,0xedfd}, {0x9fe2,0xedfe}, {0x9fe3,0xedff}, {0x9fe4,0xee00},
- {0x9fe5,0xee01}, {0x9fe6,0xee02}, {0x9fe7,0xee03}, {0x9fe8,0xee04},
- {0x9fe9,0xee05}, {0x9fea,0xee06}, {0x9feb,0xee07}, {0x9fec,0xee08},
- {0x9fed,0xee09}, {0x9fee,0xee0a}, {0x9fef,0xee0b}, {0x9ff0,0xee0c},
- {0x9ff1,0xee0d}, {0x9ff2,0xee0e}, {0x9ff3,0xee0f}, {0x9ff4,0xee10},
- {0x9ff5,0xee11}, {0x9ff6,0xee12}, {0x9ff7,0xee13}, {0x9ff8,0xee14},
- {0x9ff9,0xee15}, {0x9ffa,0xee16}, {0x9ffb,0xee17}, {0x9ffc,0xee18},
- {0x9ffd,0xee19}, {0x9ffe,0xee1a}, {0xa040,0xee1b}, {0xa041,0xee1c},
- {0xa042,0xee1d}, {0xa043,0xee1e}, {0xa044,0xee1f}, {0xa045,0xee20},
- {0xa046,0xee21}, {0xa047,0xee22}, {0xa048,0xee23}, {0xa049,0xee24},
- {0xa04a,0xee25}, {0xa04b,0xee26}, {0xa04c,0xee27}, {0xa04d,0xee28},
- {0xa04e,0xee29}, {0xa04f,0xee2a}, {0xa050,0xee2b}, {0xa051,0xee2c},
- {0xa052,0xee2d}, {0xa053,0xee2e}, {0xa054,0xee2f}, {0xa055,0xee30},
- {0xa056,0xee31}, {0xa057,0xee32}, {0xa058,0xee33}, {0xa059,0xee34},
- {0xa05a,0xee35}, {0xa05b,0xee36}, {0xa05c,0xee37}, {0xa05d,0xee38},
- {0xa05e,0xee39}, {0xa05f,0xee3a}, {0xa060,0xee3b}, {0xa061,0xee3c},
- {0xa062,0xee3d}, {0xa063,0xee3e}, {0xa064,0xee3f}, {0xa065,0xee40},
- {0xa066,0xee41}, {0xa067,0xee42}, {0xa068,0xee43}, {0xa069,0xee44},
- {0xa06a,0xee45}, {0xa06b,0xee46}, {0xa06c,0xee47}, {0xa06d,0xee48},
- {0xa06e,0xee49}, {0xa06f,0xee4a}, {0xa070,0xee4b}, {0xa071,0xee4c},
- {0xa072,0xee4d}, {0xa073,0xee4e}, {0xa074,0xee4f}, {0xa075,0xee50},
- {0xa076,0xee51}, {0xa077,0xee52}, {0xa078,0xee53}, {0xa079,0xee54},
- {0xa07a,0xee55}, {0xa07b,0xee56}, {0xa07c,0xee57}, {0xa07d,0xee58},
- {0xa07e,0xee59}, {0xa0a1,0xee5a}, {0xa0a2,0xee5b}, {0xa0a3,0xee5c},
- {0xa0a4,0xee5d}, {0xa0a5,0xee5e}, {0xa0a6,0xee5f}, {0xa0a7,0xee60},
- {0xa0a8,0xee61}, {0xa0a9,0xee62}, {0xa0aa,0xee63}, {0xa0ab,0xee64},
- {0xa0ac,0xee65}, {0xa0ad,0xee66}, {0xa0ae,0xee67}, {0xa0af,0xee68},
- {0xa0b0,0xee69}, {0xa0b1,0xee6a}, {0xa0b2,0xee6b}, {0xa0b3,0xee6c},
- {0xa0b4,0xee6d}, {0xa0b5,0xee6e}, {0xa0b6,0xee6f}, {0xa0b7,0xee70},
- {0xa0b8,0xee71}, {0xa0b9,0xee72}, {0xa0ba,0xee73}, {0xa0bb,0xee74},
- {0xa0bc,0xee75}, {0xa0bd,0xee76}, {0xa0be,0xee77}, {0xa0bf,0xee78},
- {0xa0c0,0xee79}, {0xa0c1,0xee7a}, {0xa0c2,0xee7b}, {0xa0c3,0xee7c},
- {0xa0c4,0xee7d}, {0xa0c5,0xee7e}, {0xa0c6,0xee7f}, {0xa0c7,0xee80},
- {0xa0c8,0xee81}, {0xa0c9,0xee82}, {0xa0ca,0xee83}, {0xa0cb,0xee84},
- {0xa0cc,0xee85}, {0xa0cd,0xee86}, {0xa0ce,0xee87}, {0xa0cf,0xee88},
- {0xa0d0,0xee89}, {0xa0d1,0xee8a}, {0xa0d2,0xee8b}, {0xa0d3,0xee8c},
- {0xa0d4,0xee8d}, {0xa0d5,0xee8e}, {0xa0d6,0xee8f}, {0xa0d7,0xee90},
- {0xa0d8,0xee91}, {0xa0d9,0xee92}, {0xa0da,0xee93}, {0xa0db,0xee94},
- {0xa0dc,0xee95}, {0xa0dd,0xee96}, {0xa0de,0xee97}, {0xa0df,0xee98},
- {0xa0e0,0xee99}, {0xa0e1,0xee9a}, {0xa0e2,0xee9b}, {0xa0e3,0xee9c},
- {0xa0e4,0xee9d}, {0xa0e5,0xee9e}, {0xa0e6,0xee9f}, {0xa0e7,0xeea0},
- {0xa0e8,0xeea1}, {0xa0e9,0xeea2}, {0xa0ea,0xeea3}, {0xa0eb,0xeea4},
- {0xa0ec,0xeea5}, {0xa0ed,0xeea6}, {0xa0ee,0xeea7}, {0xa0ef,0xeea8},
- {0xa0f0,0xeea9}, {0xa0f1,0xeeaa}, {0xa0f2,0xeeab}, {0xa0f3,0xeeac},
- {0xa0f4,0xeead}, {0xa0f5,0xeeae}, {0xa0f6,0xeeaf}, {0xa0f7,0xeeb0},
- {0xa0f8,0xeeb1}, {0xa0f9,0xeeb2}, {0xa0fa,0xeeb3}, {0xa0fb,0xeeb4},
- {0xa0fc,0xeeb5}, {0xa0fd,0xeeb6}, {0xa0fe,0xeeb7}
-};
-static const B5Map b5_C6A1_to_uc_map[] = {
- /* 0xC6A1 - 0xC8FE */
- {0xc6a1,0xf6b1}, {0xc6a2,0xf6b2}, {0xc6a3,0xf6b3}, {0xc6a4,0xf6b4},
- {0xc6a5,0xf6b5}, {0xc6a6,0xf6b6}, {0xc6a7,0xf6b7}, {0xc6a8,0xf6b8},
- {0xc6a9,0xf6b9}, {0xc6aa,0xf6ba}, {0xc6ab,0xf6bb}, {0xc6ac,0xf6bc},
- {0xc6ad,0xf6bd}, {0xc6ae,0xf6be}, {0xc6af,0xf6bf}, {0xc6b0,0xf6c0},
- {0xc6b1,0xf6c1}, {0xc6b2,0xf6c2}, {0xc6b3,0xf6c3}, {0xc6b4,0xf6c4},
- {0xc6b5,0xf6c5}, {0xc6b6,0xf6c6}, {0xc6b7,0xf6c7}, {0xc6b8,0xf6c8},
- {0xc6b9,0xf6c9}, {0xc6ba,0xf6ca}, {0xc6bb,0xf6cb}, {0xc6bc,0xf6cc},
- {0xc6bd,0xf6cd}, {0xc6be,0xf6ce}, {0xc6bf,0xf6cf}, {0xc6c0,0xf6d0},
- {0xc6c1,0xf6d1}, {0xc6c2,0xf6d2}, {0xc6c3,0xf6d3}, {0xc6c4,0xf6d4},
- {0xc6c5,0xf6d5}, {0xc6c6,0xf6d6}, {0xc6c7,0xf6d7}, {0xc6c8,0xf6d8},
- {0xc6c9,0xf6d9}, {0xc6ca,0xf6da}, {0xc6cb,0xf6db}, {0xc6cc,0xf6dc},
- {0xc6cd,0xf6dd}, {0xc6ce,0xf6de}, {0xc6cf,0xf6df}, {0xc6d0,0xf6e0},
- {0xc6d1,0xf6e1}, {0xc6d2,0xf6e2}, {0xc6d3,0xf6e3}, {0xc6d4,0xf6e4},
- {0xc6d5,0xf6e5}, {0xc6d6,0xf6e6}, {0xc6d7,0xf6e7}, {0xc6d8,0xf6e8},
- {0xc6d9,0xf6e9}, {0xc6da,0xf6ea}, {0xc6db,0xf6eb}, {0xc6dc,0xf6ec},
- {0xc6dd,0xf6ed}, {0xc6de,0xf6ee}, {0xc6df,0xf6ef}, {0xc6e0,0xf6f0},
- {0xc6e1,0xf6f1}, {0xc6e2,0xf6f2}, {0xc6e3,0xf6f3}, {0xc6e4,0xf6f4},
- {0xc6e5,0xf6f5}, {0xc6e6,0xf6f6}, {0xc6e7,0xf6f7}, {0xc6e8,0xf6f8},
- {0xc6e9,0xf6f9}, {0xc6ea,0xf6fa}, {0xc6eb,0xf6fb}, {0xc6ec,0xf6fc},
- {0xc6ed,0xf6fd}, {0xc6ee,0xf6fe}, {0xc6ef,0xf6ff}, {0xc6f0,0xf700},
- {0xc6f1,0xf701}, {0xc6f2,0xf702}, {0xc6f3,0xf703}, {0xc6f4,0xf704},
- {0xc6f5,0xf705}, {0xc6f6,0xf706}, {0xc6f7,0xf707}, {0xc6f8,0xf708},
- {0xc6f9,0xf709}, {0xc6fa,0xf70a}, {0xc6fb,0xf70b}, {0xc6fc,0xf70c},
- {0xc6fd,0xf70d}, {0xc6fe,0xf70e}, {0xc740,0xf70f}, {0xc741,0xf710},
- {0xc742,0xf711}, {0xc743,0xf712}, {0xc744,0xf713}, {0xc745,0xf714},
- {0xc746,0xf715}, {0xc747,0xf716}, {0xc748,0xf717}, {0xc749,0xf718},
- {0xc74a,0xf719}, {0xc74b,0xf71a}, {0xc74c,0xf71b}, {0xc74d,0xf71c},
- {0xc74e,0xf71d}, {0xc74f,0xf71e}, {0xc750,0xf71f}, {0xc751,0xf720},
- {0xc752,0xf721}, {0xc753,0xf722}, {0xc754,0xf723}, {0xc755,0xf724},
- {0xc756,0xf725}, {0xc757,0xf726}, {0xc758,0xf727}, {0xc759,0xf728},
- {0xc75a,0xf729}, {0xc75b,0xf72a}, {0xc75c,0xf72b}, {0xc75d,0xf72c},
- {0xc75e,0xf72d}, {0xc75f,0xf72e}, {0xc760,0xf72f}, {0xc761,0xf730},
- {0xc762,0xf731}, {0xc763,0xf732}, {0xc764,0xf733}, {0xc765,0xf734},
- {0xc766,0xf735}, {0xc767,0xf736}, {0xc768,0xf737}, {0xc769,0xf738},
- {0xc76a,0xf739}, {0xc76b,0xf73a}, {0xc76c,0xf73b}, {0xc76d,0xf73c},
- {0xc76e,0xf73d}, {0xc76f,0xf73e}, {0xc770,0xf73f}, {0xc771,0xf740},
- {0xc772,0xf741}, {0xc773,0xf742}, {0xc774,0xf743}, {0xc775,0xf744},
- {0xc776,0xf745}, {0xc777,0xf746}, {0xc778,0xf747}, {0xc779,0xf748},
- {0xc77a,0xf749}, {0xc77b,0xf74a}, {0xc77c,0xf74b}, {0xc77d,0xf74c},
- {0xc77e,0xf74d}, {0xc7a1,0xf74e}, {0xc7a2,0xf74f}, {0xc7a3,0xf750},
- {0xc7a4,0xf751}, {0xc7a5,0xf752}, {0xc7a6,0xf753}, {0xc7a7,0xf754},
- {0xc7a8,0xf755}, {0xc7a9,0xf756}, {0xc7aa,0xf757}, {0xc7ab,0xf758},
- {0xc7ac,0xf759}, {0xc7ad,0xf75a}, {0xc7ae,0xf75b}, {0xc7af,0xf75c},
- {0xc7b0,0xf75d}, {0xc7b1,0xf75e}, {0xc7b2,0xf75f}, {0xc7b3,0xf760},
- {0xc7b4,0xf761}, {0xc7b5,0xf762}, {0xc7b6,0xf763}, {0xc7b7,0xf764},
- {0xc7b8,0xf765}, {0xc7b9,0xf766}, {0xc7ba,0xf767}, {0xc7bb,0xf768},
- {0xc7bc,0xf769}, {0xc7bd,0xf76a}, {0xc7be,0xf76b}, {0xc7bf,0xf76c},
- {0xc7c0,0xf76d}, {0xc7c1,0xf76e}, {0xc7c2,0xf76f}, {0xc7c3,0xf770},
- {0xc7c4,0xf771}, {0xc7c5,0xf772}, {0xc7c6,0xf773}, {0xc7c7,0xf774},
- {0xc7c8,0xf775}, {0xc7c9,0xf776}, {0xc7ca,0xf777}, {0xc7cb,0xf778},
- {0xc7cc,0xf779}, {0xc7cd,0xf77a}, {0xc7ce,0xf77b}, {0xc7cf,0xf77c},
- {0xc7d0,0xf77d}, {0xc7d1,0xf77e}, {0xc7d2,0xf77f}, {0xc7d3,0xf780},
- {0xc7d4,0xf781}, {0xc7d5,0xf782}, {0xc7d6,0xf783}, {0xc7d7,0xf784},
- {0xc7d8,0xf785}, {0xc7d9,0xf786}, {0xc7da,0xf787}, {0xc7db,0xf788},
- {0xc7dc,0xf789}, {0xc7dd,0xf78a}, {0xc7de,0xf78b}, {0xc7df,0xf78c},
- {0xc7e0,0xf78d}, {0xc7e1,0xf78e}, {0xc7e2,0xf78f}, {0xc7e3,0xf790},
- {0xc7e4,0xf791}, {0xc7e5,0xf792}, {0xc7e6,0xf793}, {0xc7e7,0xf794},
- {0xc7e8,0xf795}, {0xc7e9,0xf796}, {0xc7ea,0xf797}, {0xc7eb,0xf798},
- {0xc7ec,0xf799}, {0xc7ed,0xf79a}, {0xc7ee,0xf79b}, {0xc7ef,0xf79c},
- {0xc7f0,0xf79d}, {0xc7f1,0xf79e}, {0xc7f2,0xf79f}, {0xc7f3,0xf7a0},
- {0xc7f4,0xf7a1}, {0xc7f5,0xf7a2}, {0xc7f6,0xf7a3}, {0xc7f7,0xf7a4},
- {0xc7f8,0xf7a5}, {0xc7f9,0xf7a6}, {0xc7fa,0xf7a7}, {0xc7fb,0xf7a8},
- {0xc7fc,0xf7a9}, {0xc7fd,0xf7aa}, {0xc7fe,0xf7ab}, {0xc840,0xf7ac},
- {0xc841,0xf7ad}, {0xc842,0xf7ae}, {0xc843,0xf7af}, {0xc844,0xf7b0},
- {0xc845,0xf7b1}, {0xc846,0xf7b2}, {0xc847,0xf7b3}, {0xc848,0xf7b4},
- {0xc849,0xf7b5}, {0xc84a,0xf7b6}, {0xc84b,0xf7b7}, {0xc84c,0xf7b8},
- {0xc84d,0xf7b9}, {0xc84e,0xf7ba}, {0xc84f,0xf7bb}, {0xc850,0xf7bc},
- {0xc851,0xf7bd}, {0xc852,0xf7be}, {0xc853,0xf7bf}, {0xc854,0xf7c0},
- {0xc855,0xf7c1}, {0xc856,0xf7c2}, {0xc857,0xf7c3}, {0xc858,0xf7c4},
- {0xc859,0xf7c5}, {0xc85a,0xf7c6}, {0xc85b,0xf7c7}, {0xc85c,0xf7c8},
- {0xc85d,0xf7c9}, {0xc85e,0xf7ca}, {0xc85f,0xf7cb}, {0xc860,0xf7cc},
- {0xc861,0xf7cd}, {0xc862,0xf7ce}, {0xc863,0xf7cf}, {0xc864,0xf7d0},
- {0xc865,0xf7d1}, {0xc866,0xf7d2}, {0xc867,0xf7d3}, {0xc868,0xf7d4},
- {0xc869,0xf7d5}, {0xc86a,0xf7d6}, {0xc86b,0xf7d7}, {0xc86c,0xf7d8},
- {0xc86d,0xf7d9}, {0xc86e,0xf7da}, {0xc86f,0xf7db}, {0xc870,0xf7dc},
- {0xc871,0xf7dd}, {0xc872,0xf7de}, {0xc873,0xf7df}, {0xc874,0xf7e0},
- {0xc875,0xf7e1}, {0xc876,0xf7e2}, {0xc877,0xf7e3}, {0xc878,0xf7e4},
- {0xc879,0xf7e5}, {0xc87a,0xf7e6}, {0xc87b,0xf7e7}, {0xc87c,0xf7e8},
- {0xc87d,0xf7e9}, {0xc87e,0xf7ea}, {0xc8a1,0xf7eb}, {0xc8a2,0xf7ec},
- {0xc8a3,0xf7ed}, {0xc8a4,0xf7ee}, {0xc8a5,0xf7ef}, {0xc8a6,0xf7f0},
- {0xc8a7,0xf7f1}, {0xc8a8,0xf7f2}, {0xc8a9,0xf7f3}, {0xc8aa,0xf7f4},
- {0xc8ab,0xf7f5}, {0xc8ac,0xf7f6}, {0xc8ad,0xf7f7}, {0xc8ae,0xf7f8},
- {0xc8af,0xf7f9}, {0xc8b0,0xf7fa}, {0xc8b1,0xf7fb}, {0xc8b2,0xf7fc},
- {0xc8b3,0xf7fd}, {0xc8b4,0xf7fe}, {0xc8b5,0xf7ff}, {0xc8b6,0xf800},
- {0xc8b7,0xf801}, {0xc8b8,0xf802}, {0xc8b9,0xf803}, {0xc8ba,0xf804},
- {0xc8bb,0xf805}, {0xc8bc,0xf806}, {0xc8bd,0xf807}, {0xc8be,0xf808},
- {0xc8bf,0xf809}, {0xc8c0,0xf80a}, {0xc8c1,0xf80b}, {0xc8c2,0xf80c},
- {0xc8c3,0xf80d}, {0xc8c4,0xf80e}, {0xc8c5,0xf80f}, {0xc8c6,0xf810},
- {0xc8c7,0xf811}, {0xc8c8,0xf812}, {0xc8c9,0xf813}, {0xc8ca,0xf814},
- {0xc8cb,0xf815}, {0xc8cc,0xf816}, {0xc8cd,0xf817}, {0xc8ce,0xf818},
- {0xc8cf,0xf819}, {0xc8d0,0xf81a}, {0xc8d1,0xf81b}, {0xc8d2,0xf81c},
- {0xc8d3,0xf81d}, {0xc8d4,0xf81e}, {0xc8d5,0xf81f}, {0xc8d6,0xf820},
- {0xc8d7,0xf821}, {0xc8d8,0xf822}, {0xc8d9,0xf823}, {0xc8da,0xf824},
- {0xc8db,0xf825}, {0xc8dc,0xf826}, {0xc8dd,0xf827}, {0xc8de,0xf828},
- {0xc8df,0xf829}, {0xc8e0,0xf82a}, {0xc8e1,0xf82b}, {0xc8e2,0xf82c},
- {0xc8e3,0xf82d}, {0xc8e4,0xf82e}, {0xc8e5,0xf82f}, {0xc8e6,0xf830},
- {0xc8e7,0xf831}, {0xc8e8,0xf832}, {0xc8e9,0xf833}, {0xc8ea,0xf834},
- {0xc8eb,0xf835}, {0xc8ec,0xf836}, {0xc8ed,0xf837}, {0xc8ee,0xf838},
- {0xc8ef,0xf839}, {0xc8f0,0xf83a}, {0xc8f1,0xf83b}, {0xc8f2,0xf83c},
- {0xc8f3,0xf83d}, {0xc8f4,0xf83e}, {0xc8f5,0xf83f}, {0xc8f6,0xf840},
- {0xc8f7,0xf841}, {0xc8f8,0xf842}, {0xc8f9,0xf843}, {0xc8fa,0xf844},
- {0xc8fb,0xf845}, {0xc8fc,0xf846}, {0xc8fd,0xf847}, {0xc8fe,0xf848}
-};
-//This table is for values 0xFA40 - 0xFEFE also includes 0xf9fe
-static const B5Map b5_FA40_to_uc_map[] = {
- {0xf9fe,0x2593},
- /* 0xFA40 - 0xFEFE */
- {0xfa40,0xe000}, {0xfa41,0xe001}, {0xfa42,0xe002}, {0xfa43,0xe003},
- {0xfa44,0xe004}, {0xfa45,0xe005}, {0xfa46,0xe006}, {0xfa47,0xe007},
- {0xfa48,0xe008}, {0xfa49,0xe009}, {0xfa4a,0xe00a}, {0xfa4b,0xe00b},
- {0xfa4c,0xe00c}, {0xfa4d,0xe00d}, {0xfa4e,0xe00e}, {0xfa4f,0xe00f},
- {0xfa50,0xe010}, {0xfa51,0xe011}, {0xfa52,0xe012}, {0xfa53,0xe013},
- {0xfa54,0xe014}, {0xfa55,0xe015}, {0xfa56,0xe016}, {0xfa57,0xe017},
- {0xfa58,0xe018}, {0xfa59,0xe019}, {0xfa5a,0xe01a}, {0xfa5b,0xe01b},
- {0xfa5c,0xe01c}, {0xfa5d,0xe01d}, {0xfa5e,0xe01e}, {0xfa5f,0xe01f},
- {0xfa60,0xe020}, {0xfa61,0xe021}, {0xfa62,0xe022}, {0xfa63,0xe023},
- {0xfa64,0xe024}, {0xfa65,0xe025}, {0xfa66,0xe026}, {0xfa67,0xe027},
- {0xfa68,0xe028}, {0xfa69,0xe029}, {0xfa6a,0xe02a}, {0xfa6b,0xe02b},
- {0xfa6c,0xe02c}, {0xfa6d,0xe02d}, {0xfa6e,0xe02e}, {0xfa6f,0xe02f},
- {0xfa70,0xe030}, {0xfa71,0xe031}, {0xfa72,0xe032}, {0xfa73,0xe033},
- {0xfa74,0xe034}, {0xfa75,0xe035}, {0xfa76,0xe036}, {0xfa77,0xe037},
- {0xfa78,0xe038}, {0xfa79,0xe039}, {0xfa7a,0xe03a}, {0xfa7b,0xe03b},
- {0xfa7c,0xe03c}, {0xfa7d,0xe03d}, {0xfa7e,0xe03e}, {0xfaa1,0xe03f},
- {0xfaa2,0xe040}, {0xfaa3,0xe041}, {0xfaa4,0xe042}, {0xfaa5,0xe043},
- {0xfaa6,0xe044}, {0xfaa7,0xe045}, {0xfaa8,0xe046}, {0xfaa9,0xe047},
- {0xfaaa,0xe048}, {0xfaab,0xe049}, {0xfaac,0xe04a}, {0xfaad,0xe04b},
- {0xfaae,0xe04c}, {0xfaaf,0xe04d}, {0xfab0,0xe04e}, {0xfab1,0xe04f},
- {0xfab2,0xe050}, {0xfab3,0xe051}, {0xfab4,0xe052}, {0xfab5,0xe053},
- {0xfab6,0xe054}, {0xfab7,0xe055}, {0xfab8,0xe056}, {0xfab9,0xe057},
- {0xfaba,0xe058}, {0xfabb,0xe059}, {0xfabc,0xe05a}, {0xfabd,0xe05b},
- {0xfabe,0xe05c}, {0xfabf,0xe05d}, {0xfac0,0xe05e}, {0xfac1,0xe05f},
- {0xfac2,0xe060}, {0xfac3,0xe061}, {0xfac4,0xe062}, {0xfac5,0xe063},
- {0xfac6,0xe064}, {0xfac7,0xe065}, {0xfac8,0xe066}, {0xfac9,0xe067},
- {0xfaca,0xe068}, {0xfacb,0xe069}, {0xfacc,0xe06a}, {0xfacd,0xe06b},
- {0xface,0xe06c}, {0xfacf,0xe06d}, {0xfad0,0xe06e}, {0xfad1,0xe06f},
- {0xfad2,0xe070}, {0xfad3,0xe071}, {0xfad4,0xe072}, {0xfad5,0xe073},
- {0xfad6,0xe074}, {0xfad7,0xe075}, {0xfad8,0xe076}, {0xfad9,0xe077},
- {0xfada,0xe078}, {0xfadb,0xe079}, {0xfadc,0xe07a}, {0xfadd,0xe07b},
- {0xfade,0xe07c}, {0xfadf,0xe07d}, {0xfae0,0xe07e}, {0xfae1,0xe07f},
- {0xfae2,0xe080}, {0xfae3,0xe081}, {0xfae4,0xe082}, {0xfae5,0xe083},
- {0xfae6,0xe084}, {0xfae7,0xe085}, {0xfae8,0xe086}, {0xfae9,0xe087},
- {0xfaea,0xe088}, {0xfaeb,0xe089}, {0xfaec,0xe08a}, {0xfaed,0xe08b},
- {0xfaee,0xe08c}, {0xfaef,0xe08d}, {0xfaf0,0xe08e}, {0xfaf1,0xe08f},
- {0xfaf2,0xe090}, {0xfaf3,0xe091}, {0xfaf4,0xe092}, {0xfaf5,0xe093},
- {0xfaf6,0xe094}, {0xfaf7,0xe095}, {0xfaf8,0xe096}, {0xfaf9,0xe097},
- {0xfafa,0xe098}, {0xfafb,0xe099}, {0xfafc,0xe09a}, {0xfafd,0xe09b},
- {0xfafe,0xe09c}, {0xfb40,0xe09d}, {0xfb41,0xe09e}, {0xfb42,0xe09f},
- {0xfb43,0xe0a0}, {0xfb44,0xe0a1}, {0xfb45,0xe0a2}, {0xfb46,0xe0a3},
- {0xfb47,0xe0a4}, {0xfb48,0xe0a5}, {0xfb49,0xe0a6}, {0xfb4a,0xe0a7},
- {0xfb4b,0xe0a8}, {0xfb4c,0xe0a9}, {0xfb4d,0xe0aa}, {0xfb4e,0xe0ab},
- {0xfb4f,0xe0ac}, {0xfb50,0xe0ad}, {0xfb51,0xe0ae}, {0xfb52,0xe0af},
- {0xfb53,0xe0b0}, {0xfb54,0xe0b1}, {0xfb55,0xe0b2}, {0xfb56,0xe0b3},
- {0xfb57,0xe0b4}, {0xfb58,0xe0b5}, {0xfb59,0xe0b6}, {0xfb5a,0xe0b7},
- {0xfb5b,0xe0b8}, {0xfb5c,0xe0b9}, {0xfb5d,0xe0ba}, {0xfb5e,0xe0bb},
- {0xfb5f,0xe0bc}, {0xfb60,0xe0bd}, {0xfb61,0xe0be}, {0xfb62,0xe0bf},
- {0xfb63,0xe0c0}, {0xfb64,0xe0c1}, {0xfb65,0xe0c2}, {0xfb66,0xe0c3},
- {0xfb67,0xe0c4}, {0xfb68,0xe0c5}, {0xfb69,0xe0c6}, {0xfb6a,0xe0c7},
- {0xfb6b,0xe0c8}, {0xfb6c,0xe0c9}, {0xfb6d,0xe0ca}, {0xfb6e,0xe0cb},
- {0xfb6f,0xe0cc}, {0xfb70,0xe0cd}, {0xfb71,0xe0ce}, {0xfb72,0xe0cf},
- {0xfb73,0xe0d0}, {0xfb74,0xe0d1}, {0xfb75,0xe0d2}, {0xfb76,0xe0d3},
- {0xfb77,0xe0d4}, {0xfb78,0xe0d5}, {0xfb79,0xe0d6}, {0xfb7a,0xe0d7},
- {0xfb7b,0xe0d8}, {0xfb7c,0xe0d9}, {0xfb7d,0xe0da}, {0xfb7e,0xe0db},
- {0xfba1,0xe0dc}, {0xfba2,0xe0dd}, {0xfba3,0xe0de}, {0xfba4,0xe0df},
- {0xfba5,0xe0e0}, {0xfba6,0xe0e1}, {0xfba7,0xe0e2}, {0xfba8,0xe0e3},
- {0xfba9,0xe0e4}, {0xfbaa,0xe0e5}, {0xfbab,0xe0e6}, {0xfbac,0xe0e7},
- {0xfbad,0xe0e8}, {0xfbae,0xe0e9}, {0xfbaf,0xe0ea}, {0xfbb0,0xe0eb},
- {0xfbb1,0xe0ec}, {0xfbb2,0xe0ed}, {0xfbb3,0xe0ee}, {0xfbb4,0xe0ef},
- {0xfbb5,0xe0f0}, {0xfbb6,0xe0f1}, {0xfbb7,0xe0f2}, {0xfbb8,0xe0f3},
- {0xfbb9,0xe0f4}, {0xfbba,0xe0f5}, {0xfbbb,0xe0f6}, {0xfbbc,0xe0f7},
- {0xfbbd,0xe0f8}, {0xfbbe,0xe0f9}, {0xfbbf,0xe0fa}, {0xfbc0,0xe0fb},
- {0xfbc1,0xe0fc}, {0xfbc2,0xe0fd}, {0xfbc3,0xe0fe}, {0xfbc4,0xe0ff},
- {0xfbc5,0xe100}, {0xfbc6,0xe101}, {0xfbc7,0xe102}, {0xfbc8,0xe103},
- {0xfbc9,0xe104}, {0xfbca,0xe105}, {0xfbcb,0xe106}, {0xfbcc,0xe107},
- {0xfbcd,0xe108}, {0xfbce,0xe109}, {0xfbcf,0xe10a}, {0xfbd0,0xe10b},
- {0xfbd1,0xe10c}, {0xfbd2,0xe10d}, {0xfbd3,0xe10e}, {0xfbd4,0xe10f},
- {0xfbd5,0xe110}, {0xfbd6,0xe111}, {0xfbd7,0xe112}, {0xfbd8,0xe113},
- {0xfbd9,0xe114}, {0xfbda,0xe115}, {0xfbdb,0xe116}, {0xfbdc,0xe117},
- {0xfbdd,0xe118}, {0xfbde,0xe119}, {0xfbdf,0xe11a}, {0xfbe0,0xe11b},
- {0xfbe1,0xe11c}, {0xfbe2,0xe11d}, {0xfbe3,0xe11e}, {0xfbe4,0xe11f},
- {0xfbe5,0xe120}, {0xfbe6,0xe121}, {0xfbe7,0xe122}, {0xfbe8,0xe123},
- {0xfbe9,0xe124}, {0xfbea,0xe125}, {0xfbeb,0xe126}, {0xfbec,0xe127},
- {0xfbed,0xe128}, {0xfbee,0xe129}, {0xfbef,0xe12a}, {0xfbf0,0xe12b},
- {0xfbf1,0xe12c}, {0xfbf2,0xe12d}, {0xfbf3,0xe12e}, {0xfbf4,0xe12f},
- {0xfbf5,0xe130}, {0xfbf6,0xe131}, {0xfbf7,0xe132}, {0xfbf8,0xe133},
- {0xfbf9,0xe134}, {0xfbfa,0xe135}, {0xfbfb,0xe136}, {0xfbfc,0xe137},
- {0xfbfd,0xe138}, {0xfbfe,0xe139}, {0xfc40,0xe13a}, {0xfc41,0xe13b},
- {0xfc42,0xe13c}, {0xfc43,0xe13d}, {0xfc44,0xe13e}, {0xfc45,0xe13f},
- {0xfc46,0xe140}, {0xfc47,0xe141}, {0xfc48,0xe142}, {0xfc49,0xe143},
- {0xfc4a,0xe144}, {0xfc4b,0xe145}, {0xfc4c,0xe146}, {0xfc4d,0xe147},
- {0xfc4e,0xe148}, {0xfc4f,0xe149}, {0xfc50,0xe14a}, {0xfc51,0xe14b},
- {0xfc52,0xe14c}, {0xfc53,0xe14d}, {0xfc54,0xe14e}, {0xfc55,0xe14f},
- {0xfc56,0xe150}, {0xfc57,0xe151}, {0xfc58,0xe152}, {0xfc59,0xe153},
- {0xfc5a,0xe154}, {0xfc5b,0xe155}, {0xfc5c,0xe156}, {0xfc5d,0xe157},
- {0xfc5e,0xe158}, {0xfc5f,0xe159}, {0xfc60,0xe15a}, {0xfc61,0xe15b},
- {0xfc62,0xe15c}, {0xfc63,0xe15d}, {0xfc64,0xe15e}, {0xfc65,0xe15f},
- {0xfc66,0xe160}, {0xfc67,0xe161}, {0xfc68,0xe162}, {0xfc69,0xe163},
- {0xfc6a,0xe164}, {0xfc6b,0xe165}, {0xfc6c,0xe166}, {0xfc6d,0xe167},
- {0xfc6e,0xe168}, {0xfc6f,0xe169}, {0xfc70,0xe16a}, {0xfc71,0xe16b},
- {0xfc72,0xe16c}, {0xfc73,0xe16d}, {0xfc74,0xe16e}, {0xfc75,0xe16f},
- {0xfc76,0xe170}, {0xfc77,0xe171}, {0xfc78,0xe172}, {0xfc79,0xe173},
- {0xfc7a,0xe174}, {0xfc7b,0xe175}, {0xfc7c,0xe176}, {0xfc7d,0xe177},
- {0xfc7e,0xe178}, {0xfca1,0xe179}, {0xfca2,0xe17a}, {0xfca3,0xe17b},
- {0xfca4,0xe17c}, {0xfca5,0xe17d}, {0xfca6,0xe17e}, {0xfca7,0xe17f},
- {0xfca8,0xe180}, {0xfca9,0xe181}, {0xfcaa,0xe182}, {0xfcab,0xe183},
- {0xfcac,0xe184}, {0xfcad,0xe185}, {0xfcae,0xe186}, {0xfcaf,0xe187},
- {0xfcb0,0xe188}, {0xfcb1,0xe189}, {0xfcb2,0xe18a}, {0xfcb3,0xe18b},
- {0xfcb4,0xe18c}, {0xfcb5,0xe18d}, {0xfcb6,0xe18e}, {0xfcb7,0xe18f},
- {0xfcb8,0xe190}, {0xfcb9,0xe191}, {0xfcba,0xe192}, {0xfcbb,0xe193},
- {0xfcbc,0xe194}, {0xfcbd,0xe195}, {0xfcbe,0xe196}, {0xfcbf,0xe197},
- {0xfcc0,0xe198}, {0xfcc1,0xe199}, {0xfcc2,0xe19a}, {0xfcc3,0xe19b},
- {0xfcc4,0xe19c}, {0xfcc5,0xe19d}, {0xfcc6,0xe19e}, {0xfcc7,0xe19f},
- {0xfcc8,0xe1a0}, {0xfcc9,0xe1a1}, {0xfcca,0xe1a2}, {0xfccb,0xe1a3},
- {0xfccc,0xe1a4}, {0xfccd,0xe1a5}, {0xfcce,0xe1a6}, {0xfccf,0xe1a7},
- {0xfcd0,0xe1a8}, {0xfcd1,0xe1a9}, {0xfcd2,0xe1aa}, {0xfcd3,0xe1ab},
- {0xfcd4,0xe1ac}, {0xfcd5,0xe1ad}, {0xfcd6,0xe1ae}, {0xfcd7,0xe1af},
- {0xfcd8,0xe1b0}, {0xfcd9,0xe1b1}, {0xfcda,0xe1b2}, {0xfcdb,0xe1b3},
- {0xfcdc,0xe1b4}, {0xfcdd,0xe1b5}, {0xfcde,0xe1b6}, {0xfcdf,0xe1b7},
- {0xfce0,0xe1b8}, {0xfce1,0xe1b9}, {0xfce2,0xe1ba}, {0xfce3,0xe1bb},
- {0xfce4,0xe1bc}, {0xfce5,0xe1bd}, {0xfce6,0xe1be}, {0xfce7,0xe1bf},
- {0xfce8,0xe1c0}, {0xfce9,0xe1c1}, {0xfcea,0xe1c2}, {0xfceb,0xe1c3},
- {0xfcec,0xe1c4}, {0xfced,0xe1c5}, {0xfcee,0xe1c6}, {0xfcef,0xe1c7},
- {0xfcf0,0xe1c8}, {0xfcf1,0xe1c9}, {0xfcf2,0xe1ca}, {0xfcf3,0xe1cb},
- {0xfcf4,0xe1cc}, {0xfcf5,0xe1cd}, {0xfcf6,0xe1ce}, {0xfcf7,0xe1cf},
- {0xfcf8,0xe1d0}, {0xfcf9,0xe1d1}, {0xfcfa,0xe1d2}, {0xfcfb,0xe1d3},
- {0xfcfc,0xe1d4}, {0xfcfd,0xe1d5}, {0xfcfe,0xe1d6}, {0xfd40,0xe1d7},
- {0xfd41,0xe1d8}, {0xfd42,0xe1d9}, {0xfd43,0xe1da}, {0xfd44,0xe1db},
- {0xfd45,0xe1dc}, {0xfd46,0xe1dd}, {0xfd47,0xe1de}, {0xfd48,0xe1df},
- {0xfd49,0xe1e0}, {0xfd4a,0xe1e1}, {0xfd4b,0xe1e2}, {0xfd4c,0xe1e3},
- {0xfd4d,0xe1e4}, {0xfd4e,0xe1e5}, {0xfd4f,0xe1e6}, {0xfd50,0xe1e7},
- {0xfd51,0xe1e8}, {0xfd52,0xe1e9}, {0xfd53,0xe1ea}, {0xfd54,0xe1eb},
- {0xfd55,0xe1ec}, {0xfd56,0xe1ed}, {0xfd57,0xe1ee}, {0xfd58,0xe1ef},
- {0xfd59,0xe1f0}, {0xfd5a,0xe1f1}, {0xfd5b,0xe1f2}, {0xfd5c,0xe1f3},
- {0xfd5d,0xe1f4}, {0xfd5e,0xe1f5}, {0xfd5f,0xe1f6}, {0xfd60,0xe1f7},
- {0xfd61,0xe1f8}, {0xfd62,0xe1f9}, {0xfd63,0xe1fa}, {0xfd64,0xe1fb},
- {0xfd65,0xe1fc}, {0xfd66,0xe1fd}, {0xfd67,0xe1fe}, {0xfd68,0xe1ff},
- {0xfd69,0xe200}, {0xfd6a,0xe201}, {0xfd6b,0xe202}, {0xfd6c,0xe203},
- {0xfd6d,0xe204}, {0xfd6e,0xe205}, {0xfd6f,0xe206}, {0xfd70,0xe207},
- {0xfd71,0xe208}, {0xfd72,0xe209}, {0xfd73,0xe20a}, {0xfd74,0xe20b},
- {0xfd75,0xe20c}, {0xfd76,0xe20d}, {0xfd77,0xe20e}, {0xfd78,0xe20f},
- {0xfd79,0xe210}, {0xfd7a,0xe211}, {0xfd7b,0xe212}, {0xfd7c,0xe213},
- {0xfd7d,0xe214}, {0xfd7e,0xe215}, {0xfda1,0xe216}, {0xfda2,0xe217},
- {0xfda3,0xe218}, {0xfda4,0xe219}, {0xfda5,0xe21a}, {0xfda6,0xe21b},
- {0xfda7,0xe21c}, {0xfda8,0xe21d}, {0xfda9,0xe21e}, {0xfdaa,0xe21f},
- {0xfdab,0xe220}, {0xfdac,0xe221}, {0xfdad,0xe222}, {0xfdae,0xe223},
- {0xfdaf,0xe224}, {0xfdb0,0xe225}, {0xfdb1,0xe226}, {0xfdb2,0xe227},
- {0xfdb3,0xe228}, {0xfdb4,0xe229}, {0xfdb5,0xe22a}, {0xfdb6,0xe22b},
- {0xfdb7,0xe22c}, {0xfdb8,0xe22d}, {0xfdb9,0xe22e}, {0xfdba,0xe22f},
- {0xfdbb,0xe230}, {0xfdbc,0xe231}, {0xfdbd,0xe232}, {0xfdbe,0xe233},
- {0xfdbf,0xe234}, {0xfdc0,0xe235}, {0xfdc1,0xe236}, {0xfdc2,0xe237},
- {0xfdc3,0xe238}, {0xfdc4,0xe239}, {0xfdc5,0xe23a}, {0xfdc6,0xe23b},
- {0xfdc7,0xe23c}, {0xfdc8,0xe23d}, {0xfdc9,0xe23e}, {0xfdca,0xe23f},
- {0xfdcb,0xe240}, {0xfdcc,0xe241}, {0xfdcd,0xe242}, {0xfdce,0xe243},
- {0xfdcf,0xe244}, {0xfdd0,0xe245}, {0xfdd1,0xe246}, {0xfdd2,0xe247},
- {0xfdd3,0xe248}, {0xfdd4,0xe249}, {0xfdd5,0xe24a}, {0xfdd6,0xe24b},
- {0xfdd7,0xe24c}, {0xfdd8,0xe24d}, {0xfdd9,0xe24e}, {0xfdda,0xe24f},
- {0xfddb,0xe250}, {0xfddc,0xe251}, {0xfddd,0xe252}, {0xfdde,0xe253},
- {0xfddf,0xe254}, {0xfde0,0xe255}, {0xfde1,0xe256}, {0xfde2,0xe257},
- {0xfde3,0xe258}, {0xfde4,0xe259}, {0xfde5,0xe25a}, {0xfde6,0xe25b},
- {0xfde7,0xe25c}, {0xfde8,0xe25d}, {0xfde9,0xe25e}, {0xfdea,0xe25f},
- {0xfdeb,0xe260}, {0xfdec,0xe261}, {0xfded,0xe262}, {0xfdee,0xe263},
- {0xfdef,0xe264}, {0xfdf0,0xe265}, {0xfdf1,0xe266}, {0xfdf2,0xe267},
- {0xfdf3,0xe268}, {0xfdf4,0xe269}, {0xfdf5,0xe26a}, {0xfdf6,0xe26b},
- {0xfdf7,0xe26c}, {0xfdf8,0xe26d}, {0xfdf9,0xe26e}, {0xfdfa,0xe26f},
- {0xfdfb,0xe270}, {0xfdfc,0xe271}, {0xfdfd,0xe272}, {0xfdfe,0xe273},
- {0xfe40,0xe274}, {0xfe41,0xe275}, {0xfe42,0xe276}, {0xfe43,0xe277},
- {0xfe44,0xe278}, {0xfe45,0xe279}, {0xfe46,0xe27a}, {0xfe47,0xe27b},
- {0xfe48,0xe27c}, {0xfe49,0xe27d}, {0xfe4a,0xe27e}, {0xfe4b,0xe27f},
- {0xfe4c,0xe280}, {0xfe4d,0xe281}, {0xfe4e,0xe282}, {0xfe4f,0xe283},
- {0xfe50,0xe284}, {0xfe51,0xe285}, {0xfe52,0xe286}, {0xfe53,0xe287},
- {0xfe54,0xe288}, {0xfe55,0xe289}, {0xfe56,0xe28a}, {0xfe57,0xe28b},
- {0xfe58,0xe28c}, {0xfe59,0xe28d}, {0xfe5a,0xe28e}, {0xfe5b,0xe28f},
- {0xfe5c,0xe290}, {0xfe5d,0xe291}, {0xfe5e,0xe292}, {0xfe5f,0xe293},
- {0xfe60,0xe294}, {0xfe61,0xe295}, {0xfe62,0xe296}, {0xfe63,0xe297},
- {0xfe64,0xe298}, {0xfe65,0xe299}, {0xfe66,0xe29a}, {0xfe67,0xe29b},
- {0xfe68,0xe29c}, {0xfe69,0xe29d}, {0xfe6a,0xe29e}, {0xfe6b,0xe29f},
- {0xfe6c,0xe2a0}, {0xfe6d,0xe2a1}, {0xfe6e,0xe2a2}, {0xfe6f,0xe2a3},
- {0xfe70,0xe2a4}, {0xfe71,0xe2a5}, {0xfe72,0xe2a6}, {0xfe73,0xe2a7},
- {0xfe74,0xe2a8}, {0xfe75,0xe2a9}, {0xfe76,0xe2aa}, {0xfe77,0xe2ab},
- {0xfe78,0xe2ac}, {0xfe79,0xe2ad}, {0xfe7a,0xe2ae}, {0xfe7b,0xe2af},
- {0xfe7c,0xe2b0}, {0xfe7d,0xe2b1}, {0xfe7e,0xe2b2}, {0xfea1,0xe2b3},
- {0xfea2,0xe2b4}, {0xfea3,0xe2b5}, {0xfea4,0xe2b6}, {0xfea5,0xe2b7},
- {0xfea6,0xe2b8}, {0xfea7,0xe2b9}, {0xfea8,0xe2ba}, {0xfea9,0xe2bb},
- {0xfeaa,0xe2bc}, {0xfeab,0xe2bd}, {0xfeac,0xe2be}, {0xfead,0xe2bf},
- {0xfeae,0xe2c0}, {0xfeaf,0xe2c1}, {0xfeb0,0xe2c2}, {0xfeb1,0xe2c3},
- {0xfeb2,0xe2c4}, {0xfeb3,0xe2c5}, {0xfeb4,0xe2c6}, {0xfeb5,0xe2c7},
- {0xfeb6,0xe2c8}, {0xfeb7,0xe2c9}, {0xfeb8,0xe2ca}, {0xfeb9,0xe2cb},
- {0xfeba,0xe2cc}, {0xfebb,0xe2cd}, {0xfebc,0xe2ce}, {0xfebd,0xe2cf},
- {0xfebe,0xe2d0}, {0xfebf,0xe2d1}, {0xfec0,0xe2d2}, {0xfec1,0xe2d3},
- {0xfec2,0xe2d4}, {0xfec3,0xe2d5}, {0xfec4,0xe2d6}, {0xfec5,0xe2d7},
- {0xfec6,0xe2d8}, {0xfec7,0xe2d9}, {0xfec8,0xe2da}, {0xfec9,0xe2db},
- {0xfeca,0xe2dc}, {0xfecb,0xe2dd}, {0xfecc,0xe2de}, {0xfecd,0xe2df},
- {0xfece,0xe2e0}, {0xfecf,0xe2e1}, {0xfed0,0xe2e2}, {0xfed1,0xe2e3},
- {0xfed2,0xe2e4}, {0xfed3,0xe2e5}, {0xfed4,0xe2e6}, {0xfed5,0xe2e7},
- {0xfed6,0xe2e8}, {0xfed7,0xe2e9}, {0xfed8,0xe2ea}, {0xfed9,0xe2eb},
- {0xfeda,0xe2ec}, {0xfedb,0xe2ed}, {0xfedc,0xe2ee}, {0xfedd,0xe2ef},
- {0xfede,0xe2f0}, {0xfedf,0xe2f1}, {0xfee0,0xe2f2}, {0xfee1,0xe2f3},
- {0xfee2,0xe2f4}, {0xfee3,0xe2f5}, {0xfee4,0xe2f6}, {0xfee5,0xe2f7},
- {0xfee6,0xe2f8}, {0xfee7,0xe2f9}, {0xfee8,0xe2fa}, {0xfee9,0xe2fb},
- {0xfeea,0xe2fc}, {0xfeeb,0xe2fd}, {0xfeec,0xe2fe}, {0xfeed,0xe2ff},
- {0xfeee,0xe300}, {0xfeef,0xe301}, {0xfef0,0xe302}, {0xfef1,0xe303},
- {0xfef2,0xe304}, {0xfef3,0xe305}, {0xfef4,0xe306}, {0xfef5,0xe307},
- {0xfef6,0xe308}, {0xfef7,0xe309}, {0xfef8,0xe30a}, {0xfef9,0xe30b},
- {0xfefa,0xe30c}, {0xfefb,0xe30d}, {0xfefc,0xe30e}, {0xfefd,0xe30f},
- {0xfefe,0xe310}
-};
-
-static const B5Map uc_to_b5_map[] = {
- {0xa2a4,0x2550}, {0xa2a5,0x255e}, {0xa2a7,0x2561}, {0xa2a6,0x256a},
- {0xa27e,0x256d}, {0xa2a1,0x256e}, {0xa2a3,0x256f}, {0xa2a2,0x2570}
-};
-
-//All the tables are sorted on both x and y, so can be used for binary search
-static B5Index b5_map_table[5] = {
- {b5_8140_to_uc_map , sizeof(b5_8140_to_uc_map)/sizeof(B5Map)},
- {b5_8E40_to_uc_map , sizeof(b5_8E40_to_uc_map)/sizeof(B5Map)},
- {b5_C6A1_to_uc_map , sizeof(b5_C6A1_to_uc_map)/sizeof(B5Map)},
- {b5_FA40_to_uc_map , sizeof(b5_FA40_to_uc_map)/sizeof(B5Map)},
- {uc_to_b5_map , sizeof(uc_to_b5_map)/sizeof(B5Map)}
-};
-
-static int qt_Big5ToUnicode(const uchar *buf, uint *u)
-{
- //for this conversion only first 4 tables are used.
- for(int i = 0; i < 4; i++) {
- int start = 0;
- int end = b5_map_table[i].tableSize - 1;
-
- uint b5 = (buf[0] << 8) + buf[1];
- while (start <= end) {
- int middle = (end + start + 1)/2;
- if (b5_map_table[i].table[middle].x == b5) {
- *u = b5_map_table[i].table[middle].y;
- return 2;
- } else if (b5_map_table[i].table[middle].x > b5) {
- end = middle - 1;
- } else {
- start = middle + 1;
- }
- }
- }
- return qt_Big5hkscsToUnicode(buf, u);
-}
-
-static int qt_UnicodeToBig5(ushort ch, uchar *buf)
-{
- //all the tables are individually sorted on Y
- for(int i = 0; i < 5; i++) {
- int start = 0;
- int end = b5_map_table[i].tableSize - 1;
-
- while (start <= end) {
- int middle = (end + start + 1)/2;
- if (b5_map_table[i].table[middle].y == ch) {
- buf[0] = b5_map_table[i].table[middle].x >> 8;
- buf[1] = b5_map_table[i].table[middle].x & 0xff;
- return 2;
- } else if (b5_map_table[i].table[middle].y > ch) {
- end = middle - 1;
- } else {
- start = middle + 1;
- }
- }
- }
- return qt_UnicodeToBig5hkscs(ch, buf);
-}
-
-QString QBig5Codec::convertToUnicode(const char* chars, int len, ConverterState *state) const
-{
- QChar replacement = QChar::ReplacementCharacter;
- uchar buf[2] = {0};
- int nbuf = 0;
- if (state) {
- if (state->flags & ConvertInvalidToNull)
- replacement = QChar::Null;
- nbuf = state->remainingChars;
- buf[0] = state->state_data[0];
- buf[1] = state->state_data[1];
- }
- int invalid = 0;
-
- //qDebug("QBig5Codec::toUnicode(const char* chars = \"%s\", int len = %d)", chars, len);
- QString result;
- for (int i=0; i<len; i++) {
- uchar ch = chars[i];
- switch (nbuf) {
- case 0:
- if (IsLatin(ch)) {
- // ASCII
- result += QLatin1Char(ch);
- } else if (IsFirstByte(ch)) {
- // Big5-ETen
- buf[0] = ch;
- nbuf = 1;
- } else {
- // Invalid
- result += replacement;
- ++invalid;
- }
- break;
- case 1:
- if (IsSecondByte(ch)) {
- // Big5-ETen
- uint u;
- buf[1] = ch;
- if (qt_Big5ToUnicode(buf, &u) == 2)
- result += QValidChar(u);
- else {
- // Error
- result += replacement;
- ++invalid;
- }
- } else {
- // Error
- result += replacement;
- ++invalid;
- }
- nbuf = 0;
- break;
- }
- }
- if (state) {
- state->remainingChars = nbuf;
- state->state_data[0] = buf[0];
- state->state_data[1] = buf[1];
- state->invalidChars += invalid;
- }
- return result;
-}
-
-QByteArray QBig5Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
-{
- char replacement = '?';
- if (state) {
- if (state->flags & ConvertInvalidToNull)
- replacement = 0;
- }
-
- int invalid = 0;
-
- int rlen = 2*len + 1;
- QByteArray rstr;
- rstr.resize(rlen);
-
- uchar* cursor = (uchar*)rstr.data();
- for (int i=0; i<len; i++) {
- ushort ch = uc[i].unicode();
- uchar c[2];
- if (ch < 0x80) {
- // ASCII
- *cursor++ = ch;
- } else if (qt_UnicodeToBig5(ch, c) == 2 && c[0] >= 0xa1 && c[0] <= 0xf9) {
- *cursor++ = c[0];
- *cursor++ = c[1];
- } else {
- *cursor++ = replacement;
- ++invalid;
- }
- }
- rstr.resize(cursor - (uchar*)rstr.constData());
-
- if (state) {
- state->invalidChars += invalid;
- }
- return rstr;
-}
-
-QList<QByteArray> QBig5Codec::_aliases()
-{
- QList<QByteArray> aliases;
- aliases += "Big5-ETen";
- aliases += "CP950";
- return aliases;
-}
-
-int QBig5hkscsCodec::_mibEnum()
-{
- return 2101;
-}
-
-
-QByteArray QBig5hkscsCodec::_name()
-{
- return "Big5-HKSCS";
-}
-
-
-QString QBig5hkscsCodec::convertToUnicode(const char* chars, int len, ConverterState *state) const
-{
- uchar buf[2] = {0};
- int nbuf = 0;
- QChar replacement = QChar::ReplacementCharacter;
- if (state) {
- if (state->flags & ConvertInvalidToNull)
- replacement = QChar::Null;
- nbuf = state->remainingChars;
- buf[0] = state->state_data[0];
- buf[1] = state->state_data[1];
- }
- int invalid = 0;
-
- //qDebug("QBig5hkscsCodec::toUnicode(const char* chars = \"%s\", int len = %d)", chars, len);
- QString result;
- for (int i=0; i<len; i++) {
- uchar ch = chars[i];
- switch (nbuf) {
- case 0:
- if (IsLatin(ch)) {
- // ASCII
- result += QLatin1Char(ch);
- } else if (IsFirstByte(ch)) {
- // Big5-HKSCS
- buf[0] = ch;
- nbuf = 1;
- } else {
- // Invalid
- result += replacement;
- ++invalid;
- }
- break;
- case 1:
- if (IsSecondByte(ch)) {
- // Big5-HKSCS
- uint u;
- buf[1] = ch;
- if (qt_Big5hkscsToUnicode(buf, &u) == 2)
- result += QValidChar(u);
- else {
- // Error
- result += replacement;
- ++invalid;
- }
- } else {
- // Error
- result += replacement;
- ++invalid;
- }
- nbuf = 0;
- break;
- }
- }
- if (state) {
- state->remainingChars = nbuf;
- state->state_data[0] = buf[0];
- state->state_data[1] = buf[1];
- state->invalidChars += invalid;
- }
- return result;
-}
-
-
-QByteArray QBig5hkscsCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *state) const
-{
- char replacement = '?';
- if (state) {
- if (state->flags & ConvertInvalidToNull)
- replacement = 0;
- }
-
- int invalid = 0;
-
- int rlen = 2*len + 1;
- QByteArray rstr;
- rstr.resize(rlen);
- uchar* cursor = (uchar*)rstr.data();
- for (int i = 0; i < len; i++) {
- unsigned short ch = uc[i].unicode();
- uchar c[2];
- if (ch < 0x80) {
- // ASCII
- *cursor++ = ch;
- } else if (qt_UnicodeToBig5hkscs(ch, c) == 2) {
- // Big5-HKSCS
- *cursor++ = c[0];
- *cursor++ = c[1];
- } else {
- // Error
- *cursor++ = replacement;
- }
- }
- rstr.resize(cursor - (uchar*)rstr.constData());
-
- if (state) {
- state->invalidChars += invalid;
- }
- return rstr;
-}
-
-
-
-#ifdef Q_OS_UNIX
-QFontBig5Codec::QFontBig5Codec()
-{
- //qDebug("QFontBig5Codec::QFontBig5Codec()");
-}
-
-
-QByteArray QFontBig5Codec::_name()
-{
- //qDebug("QFontBig5Codec::name() = \"big5-0\"");
- return "big5-0";
-}
-
-
-int QFontBig5Codec::_mibEnum()
-{
- //qDebug("QFontBig5Codec::mibEnum() = -2026");
- return -2026;
-}
-
-
-QString QFontBig5Codec::convertToUnicode(const char* /*chars*/, int /*len*/, ConverterState *) const
-{
- return QString();
-}
-
-QByteArray QFontBig5Codec::convertFromUnicode(const QChar *uc, int len, ConverterState *) const
-{
- //qDebug("QFontBig5Codec::fromUnicode(const QString& uc, int& lenInOut = %d)", lenInOut);
- QByteArray result;
- result.resize(len * 2);
- uchar *rdata = (uchar *) result.data();
- const QChar *ucp = uc;
-
- for (int i = 0; i < len; i++) {
- QChar ch(*ucp++);
- uchar c[2];
-
-#if 0
- if (ch.row() == 0) {
- if (ch.cell() == ' ')
- ch = QChar(0x3000);
- else if (ch.cell() > ' ' && ch.cell() < 127)
- ch = QChar(ch.cell()-' ', 255);
- }
-#endif
- if (qt_UnicodeToBig5hkscs(ch.unicode(), c) == 2 &&
- c[0] >= 0xa1 && c[0] <= 0xf9) {
- *rdata++ = c[0];
- *rdata++ = c[1];
- } else {
- *rdata++ = 0;
- *rdata++ = 0;
- }
- }
- return result;
-}
-
-
-
-QFontBig5hkscsCodec::QFontBig5hkscsCodec()
-{
- //qDebug("QFontBig5hkscsCodec::QFontBig5hkscsCodec()");
-}
-
-
-QByteArray QFontBig5hkscsCodec::_name()
-{
- //qDebug("QFontBig5hkscsCodec::name() = \"big5hkscs-0\"");
- return "big5hkscs-0";
-}
-
-
-int QFontBig5hkscsCodec::_mibEnum()
-{
- //qDebug("QFontBig5hkscsCodec::mibEnum() = -2101");
- return -2101;
-}
-
-
-QString QFontBig5hkscsCodec::convertToUnicode(const char* /*chars*/, int /*len*/, ConverterState *) const
-{
- return QString();
-}
-
-QByteArray QFontBig5hkscsCodec::convertFromUnicode(const QChar *uc, int len, ConverterState *) const
-{
- //qDebug("QFontBig5hkscsCodec::fromUnicode(const QString& uc, int& lenInOut = %d)", lenInOut);
- QByteArray result;
- result.resize(len * 2);
- uchar *rdata = (uchar *) result.data();
- const QChar *ucp = uc;
-
- for (int i = 0; i < len; i++) {
- QChar ch(*ucp++);
- uchar c[2];
-
-#if 0
- if (ch.row() == 0) {
- if (ch.cell() == ' ')
- ch = QChar(0x3000);
- else if (ch.cell() > ' ' && ch.cell() < 127)
- ch = QChar(ch.cell()-' ', 255);
- }
-#endif
- if (qt_UnicodeToBig5hkscs(ch.unicode(), c) == 2) {
- *rdata++ = c[0];
- *rdata++ = c[1];
- } else {
- //white square
- *rdata++ = 0;
- *rdata++ = 0;
- }
- }
- return result;
-}
-
-
-#endif // Q_OS_UNIX
-
-/* ====================================================================== */
-
-/*
- * big5hkscs to ucs4 convert routing
- */
-
-static ushort const big5hkscs_to_ucs[] = {
- /* Big5-HKSCS 0x8140 .. 0x817E */
- 0xEEB8, 0xEEB9, 0xEEBA, 0xEEBB, 0xEEBC, 0xEEBD, 0xEEBE, 0xEEBF,
- 0xEEC0, 0xEEC1, 0xEEC2, 0xEEC3, 0xEEC4, 0xEEC5, 0xEEC6, 0xEEC7,
- 0xEEC8, 0xEEC9, 0xEECA, 0xEECB, 0xEECC, 0xEECD, 0xEECE, 0xEECF,
- 0xEED0, 0xEED1, 0xEED2, 0xEED3, 0xEED4, 0xEED5, 0xEED6, 0xEED7,
- 0xEED8, 0xEED9, 0xEEDA, 0xEEDB, 0xEEDC, 0xEEDD, 0xEEDE, 0xEEDF,
- 0xEEE0, 0xEEE1, 0xEEE2, 0xEEE3, 0xEEE4, 0xEEE5, 0xEEE6, 0xEEE7,
- 0xEEE8, 0xEEE9, 0xEEEA, 0xEEEB, 0xEEEC, 0xEEED, 0xEEEE, 0xEEEF,
- 0xEEF0, 0xEEF1, 0xEEF2, 0xEEF3, 0xEEF4, 0xEEF5, 0xEEF6,
- /* Big5-HKSCS 0x81A1 .. 0x81FE */
- 0xEEF7, 0xEEF8, 0xEEF9, 0xEEFA, 0xEEFB, 0xEEFC, 0xEEFD,
- 0xEEFE, 0xEEFF, 0xEF00, 0xEF01, 0xEF02, 0xEF03, 0xEF04, 0xEF05,
- 0xEF06, 0xEF07, 0xEF08, 0xEF09, 0xEF0A, 0xEF0B, 0xEF0C, 0xEF0D,
- 0xEF0E, 0xEF0F, 0xEF10, 0xEF11, 0xEF12, 0xEF13, 0xEF14, 0xEF15,
- 0xEF16, 0xEF17, 0xEF18, 0xEF19, 0xEF1A, 0xEF1B, 0xEF1C, 0xEF1D,
- 0xEF1E, 0xEF1F, 0xEF20, 0xEF21, 0xEF22, 0xEF23, 0xEF24, 0xEF25,
- 0xEF26, 0xEF27, 0xEF28, 0xEF29, 0xEF2A, 0xEF2B, 0xEF2C, 0xEF2D,
- 0xEF2E, 0xEF2F, 0xEF30, 0xEF31, 0xEF32, 0xEF33, 0xEF34, 0xEF35,
- 0xEF36, 0xEF37, 0xEF38, 0xEF39, 0xEF3A, 0xEF3B, 0xEF3C, 0xEF3D,
- 0xEF3E, 0xEF3F, 0xEF40, 0xEF41, 0xEF42, 0xEF43, 0xEF44, 0xEF45,
- 0xEF46, 0xEF47, 0xEF48, 0xEF49, 0xEF4A, 0xEF4B, 0xEF4C, 0xEF4D,
- 0xEF4E, 0xEF4F, 0xEF50, 0xEF51, 0xEF52, 0xEF53, 0xEF54,
- /* Big5-HKSCS 0x8240 .. 0x827E */
- 0xEF55, 0xEF56, 0xEF57, 0xEF58, 0xEF59, 0xEF5A, 0xEF5B, 0xEF5C,
- 0xEF5D, 0xEF5E, 0xEF5F, 0xEF60, 0xEF61, 0xEF62, 0xEF63, 0xEF64,
- 0xEF65, 0xEF66, 0xEF67, 0xEF68, 0xEF69, 0xEF6A, 0xEF6B, 0xEF6C,
- 0xEF6D, 0xEF6E, 0xEF6F, 0xEF70, 0xEF71, 0xEF72, 0xEF73, 0xEF74,
- 0xEF75, 0xEF76, 0xEF77, 0xEF78, 0xEF79, 0xEF7A, 0xEF7B, 0xEF7C,
- 0xEF7D, 0xEF7E, 0xEF7F, 0xEF80, 0xEF81, 0xEF82, 0xEF83, 0xEF84,
- 0xEF85, 0xEF86, 0xEF87, 0xEF88, 0xEF89, 0xEF8A, 0xEF8B, 0xEF8C,
- 0xEF8D, 0xEF8E, 0xEF8F, 0xEF90, 0xEF91, 0xEF92, 0xEF93,
- /* Big5-HKSCS 0x82A1 .. 0x82FE */
- 0xEF94, 0xEF95, 0xEF96, 0xEF97, 0xEF98, 0xEF99, 0xEF9A,
- 0xEF9B, 0xEF9C, 0xEF9D, 0xEF9E, 0xEF9F, 0xEFA0, 0xEFA1, 0xEFA2,
- 0xEFA3, 0xEFA4, 0xEFA5, 0xEFA6, 0xEFA7, 0xEFA8, 0xEFA9, 0xEFAA,
- 0xEFAB, 0xEFAC, 0xEFAD, 0xEFAE, 0xEFAF, 0xEFB0, 0xEFB1, 0xEFB2,
- 0xEFB3, 0xEFB4, 0xEFB5, 0xEFB6, 0xEFB7, 0xEFB8, 0xEFB9, 0xEFBA,
- 0xEFBB, 0xEFBC, 0xEFBD, 0xEFBE, 0xEFBF, 0xEFC0, 0xEFC1, 0xEFC2,
- 0xEFC3, 0xEFC4, 0xEFC5, 0xEFC6, 0xEFC7, 0xEFC8, 0xEFC9, 0xEFCA,
- 0xEFCB, 0xEFCC, 0xEFCD, 0xEFCE, 0xEFCF, 0xEFD0, 0xEFD1, 0xEFD2,
- 0xEFD3, 0xEFD4, 0xEFD5, 0xEFD6, 0xEFD7, 0xEFD8, 0xEFD9, 0xEFDA,
- 0xEFDB, 0xEFDC, 0xEFDD, 0xEFDE, 0xEFDF, 0xEFE0, 0xEFE1, 0xEFE2,
- 0xEFE3, 0xEFE4, 0xEFE5, 0xEFE6, 0xEFE7, 0xEFE8, 0xEFE9, 0xEFEA,
- 0xEFEB, 0xEFEC, 0xEFED, 0xEFEE, 0xEFEF, 0xEFF0, 0xEFF1,
- /* Big5-HKSCS 0x8340 .. 0x837E */
- 0xEFF2, 0xEFF3, 0xEFF4, 0xEFF5, 0xEFF6, 0xEFF7, 0xEFF8, 0xEFF9,
- 0xEFFA, 0xEFFB, 0xEFFC, 0xEFFD, 0xEFFE, 0xEFFF, 0xF000, 0xF001,
- 0xF002, 0xF003, 0xF004, 0xF005, 0xF006, 0xF007, 0xF008, 0xF009,
- 0xF00A, 0xF00B, 0xF00C, 0xF00D, 0xF00E, 0xF00F, 0xF010, 0xF011,
- 0xF012, 0xF013, 0xF014, 0xF015, 0xF016, 0xF017, 0xF018, 0xF019,
- 0xF01A, 0xF01B, 0xF01C, 0xF01D, 0xF01E, 0xF01F, 0xF020, 0xF021,
- 0xF022, 0xF023, 0xF024, 0xF025, 0xF026, 0xF027, 0xF028, 0xF029,
- 0xF02A, 0xF02B, 0xF02C, 0xF02D, 0xF02E, 0xF02F, 0xF030,
- /* Big5-HKSCS 0x83A1 .. 0x83FE */
- 0xF031, 0xF032, 0xF033, 0xF034, 0xF035, 0xF036, 0xF037,
- 0xF038, 0xF039, 0xF03A, 0xF03B, 0xF03C, 0xF03D, 0xF03E, 0xF03F,
- 0xF040, 0xF041, 0xF042, 0xF043, 0xF044, 0xF045, 0xF046, 0xF047,
- 0xF048, 0xF049, 0xF04A, 0xF04B, 0xF04C, 0xF04D, 0xF04E, 0xF04F,
- 0xF050, 0xF051, 0xF052, 0xF053, 0xF054, 0xF055, 0xF056, 0xF057,
- 0xF058, 0xF059, 0xF05A, 0xF05B, 0xF05C, 0xF05D, 0xF05E, 0xF05F,
- 0xF060, 0xF061, 0xF062, 0xF063, 0xF064, 0xF065, 0xF066, 0xF067,
- 0xF068, 0xF069, 0xF06A, 0xF06B, 0xF06C, 0xF06D, 0xF06E, 0xF06F,
- 0xF070, 0xF071, 0xF072, 0xF073, 0xF074, 0xF075, 0xF076, 0xF077,
- 0xF078, 0xF079, 0xF07A, 0xF07B, 0xF07C, 0xF07D, 0xF07E, 0xF07F,
- 0xF080, 0xF081, 0xF082, 0xF083, 0xF084, 0xF085, 0xF086, 0xF087,
- 0xF088, 0xF089, 0xF08A, 0xF08B, 0xF08C, 0xF08D, 0xF08E,
- /* Big5-HKSCS 0x8440 .. 0x847E */
- 0xF08F, 0xF090, 0xF091, 0xF092, 0xF093, 0xF094, 0xF095, 0xF096,
- 0xF097, 0xF098, 0xF099, 0xF09A, 0xF09B, 0xF09C, 0xF09D, 0xF09E,
- 0xF09F, 0xF0A0, 0xF0A1, 0xF0A2, 0xF0A3, 0xF0A4, 0xF0A5, 0xF0A6,
- 0xF0A7, 0xF0A8, 0xF0A9, 0xF0AA, 0xF0AB, 0xF0AC, 0xF0AD, 0xF0AE,
- 0xF0AF, 0xF0B0, 0xF0B1, 0xF0B2, 0xF0B3, 0xF0B4, 0xF0B5, 0xF0B6,
- 0xF0B7, 0xF0B8, 0xF0B9, 0xF0BA, 0xF0BB, 0xF0BC, 0xF0BD, 0xF0BE,
- 0xF0BF, 0xF0C0, 0xF0C1, 0xF0C2, 0xF0C3, 0xF0C4, 0xF0C5, 0xF0C6,
- 0xF0C7, 0xF0C8, 0xF0C9, 0xF0CA, 0xF0CB, 0xF0CC, 0xF0CD,
- /* Big5-HKSCS 0x84A1 .. 0x84FE */
- 0xF0CE, 0xF0CF, 0xF0D0, 0xF0D1, 0xF0D2, 0xF0D3, 0xF0D4,
- 0xF0D5, 0xF0D6, 0xF0D7, 0xF0D8, 0xF0D9, 0xF0DA, 0xF0DB, 0xF0DC,
- 0xF0DD, 0xF0DE, 0xF0DF, 0xF0E0, 0xF0E1, 0xF0E2, 0xF0E3, 0xF0E4,
- 0xF0E5, 0xF0E6, 0xF0E7, 0xF0E8, 0xF0E9, 0xF0EA, 0xF0EB, 0xF0EC,
- 0xF0ED, 0xF0EE, 0xF0EF, 0xF0F0, 0xF0F1, 0xF0F2, 0xF0F3, 0xF0F4,
- 0xF0F5, 0xF0F6, 0xF0F7, 0xF0F8, 0xF0F9, 0xF0FA, 0xF0FB, 0xF0FC,
- 0xF0FD, 0xF0FE, 0xF0FF, 0xF100, 0xF101, 0xF102, 0xF103, 0xF104,
- 0xF105, 0xF106, 0xF107, 0xF108, 0xF109, 0xF10A, 0xF10B, 0xF10C,
- 0xF10D, 0xF10E, 0xF10F, 0xF110, 0xF111, 0xF112, 0xF113, 0xF114,
- 0xF115, 0xF116, 0xF117, 0xF118, 0xF119, 0xF11A, 0xF11B, 0xF11C,
- 0xF11D, 0xF11E, 0xF11F, 0xF120, 0xF121, 0xF122, 0xF123, 0xF124,
- 0xF125, 0xF126, 0xF127, 0xF128, 0xF129, 0xF12A, 0xF12B,
- /* Big5-HKSCS 0x8540 .. 0x857E */
- 0xF12C, 0xF12D, 0xF12E, 0xF12F, 0xF130, 0xF131, 0xF132, 0xF133,
- 0xF134, 0xF135, 0xF136, 0xF137, 0xF138, 0xF139, 0xF13A, 0xF13B,
- 0xF13C, 0xF13D, 0xF13E, 0xF13F, 0xF140, 0xF141, 0xF142, 0xF143,
- 0xF144, 0xF145, 0xF146, 0xF147, 0xF148, 0xF149, 0xF14A, 0xF14B,
- 0xF14C, 0xF14D, 0xF14E, 0xF14F, 0xF150, 0xF151, 0xF152, 0xF153,
- 0xF154, 0xF155, 0xF156, 0xF157, 0xF158, 0xF159, 0xF15A, 0xF15B,
- 0xF15C, 0xF15D, 0xF15E, 0xF15F, 0xF160, 0xF161, 0xF162, 0xF163,
- 0xF164, 0xF165, 0xF166, 0xF167, 0xF168, 0xF169, 0xF16A,
- /* Big5-HKSCS 0x85A1 .. 0x85FE */
- 0xF16B, 0xF16C, 0xF16D, 0xF16E, 0xF16F, 0xF170, 0xF171,
- 0xF172, 0xF173, 0xF174, 0xF175, 0xF176, 0xF177, 0xF178, 0xF179,
- 0xF17A, 0xF17B, 0xF17C, 0xF17D, 0xF17E, 0xF17F, 0xF180, 0xF181,
- 0xF182, 0xF183, 0xF184, 0xF185, 0xF186, 0xF187, 0xF188, 0xF189,
- 0xF18A, 0xF18B, 0xF18C, 0xF18D, 0xF18E, 0xF18F, 0xF190, 0xF191,
- 0xF192, 0xF193, 0xF194, 0xF195, 0xF196, 0xF197, 0xF198, 0xF199,
- 0xF19A, 0xF19B, 0xF19C, 0xF19D, 0xF19E, 0xF19F, 0xF1A0, 0xF1A1,
- 0xF1A2, 0xF1A3, 0xF1A4, 0xF1A5, 0xF1A6, 0xF1A7, 0xF1A8, 0xF1A9,
- 0xF1AA, 0xF1AB, 0xF1AC, 0xF1AD, 0xF1AE, 0xF1AF, 0xF1B0, 0xF1B1,
- 0xF1B2, 0xF1B3, 0xF1B4, 0xF1B5, 0xF1B6, 0xF1B7, 0xF1B8, 0xF1B9,
- 0xF1BA, 0xF1BB, 0xF1BC, 0xF1BD, 0xF1BE, 0xF1BF, 0xF1C0, 0xF1C1,
- 0xF1C2, 0xF1C3, 0xF1C4, 0xF1C5, 0xF1C6, 0xF1C7, 0xF1C8,
- /* Big5-HKSCS 0x8640 .. 0x867E */
- 0xF1C9, 0xF1CA, 0xF1CB, 0xF1CC, 0xF1CD, 0xF1CE, 0xF1CF, 0xF1D0,
- 0xF1D1, 0xF1D2, 0xF1D3, 0xF1D4, 0xF1D5, 0xF1D6, 0xF1D7, 0xF1D8,
- 0xF1D9, 0xF1DA, 0xF1DB, 0xF1DC, 0xF1DD, 0xF1DE, 0xF1DF, 0xF1E0,
- 0xF1E1, 0xF1E2, 0xF1E3, 0xF1E4, 0xF1E5, 0xF1E6, 0xF1E7, 0xF1E8,
- 0xF1E9, 0xF1EA, 0xF1EB, 0xF1EC, 0xF1ED, 0xF1EE, 0xF1EF, 0xF1F0,
- 0xF1F1, 0xF1F2, 0xF1F3, 0xF1F4, 0xF1F5, 0xF1F6, 0xF1F7, 0xF1F8,
- 0xF1F9, 0xF1FA, 0xF1FB, 0xF1FC, 0xF1FD, 0xF1FE, 0xF1FF, 0xF200,
- 0xF201, 0xF202, 0xF203, 0xF204, 0xF205, 0xF206, 0xF207,
- /* Big5-HKSCS 0x86A1 .. 0x86FE */
- 0xF208, 0xF209, 0xF20A, 0xF20B, 0xF20C, 0xF20D, 0xF20E,
- 0xF20F, 0xF210, 0xF211, 0xF212, 0xF213, 0xF214, 0xF215, 0xF216,
- 0xF217, 0xF218, 0xF219, 0xF21A, 0xF21B, 0xF21C, 0xF21D, 0xF21E,
- 0xF21F, 0xF220, 0xF221, 0xF222, 0xF223, 0xF224, 0xF225, 0xF226,
- 0xF227, 0xF228, 0xF229, 0xF22A, 0xF22B, 0xF22C, 0xF22D, 0xF22E,
- 0xF22F, 0xF230, 0xF231, 0xF232, 0xF233, 0xF234, 0xF235, 0xF236,
- 0xF237, 0xF238, 0xF239, 0xF23A, 0xF23B, 0xF23C, 0xF23D, 0xF23E,
- 0xF23F, 0xF240, 0xF241, 0xF242, 0xF243, 0xF244, 0xF245, 0xF246,
- 0xF247, 0xF248, 0xF249, 0xF24A, 0xF24B, 0xF24C, 0xF24D, 0xF24E,
- 0xF24F, 0xF250, 0xF251, 0xF252, 0xF253, 0xF254, 0xF255, 0xF256,
- 0xF257, 0xF258, 0xF259, 0xF25A, 0xF25B, 0xF25C, 0xF25D, 0xF25E,
- 0xF25F, 0xF260, 0xF261, 0xF262, 0xF263, 0xF264, 0xF265,
- /* Big5-HKSCS 0x8740 .. 0x877E */
- 0xF266, 0xF267, 0xF268, 0xF269, 0xF26A, 0xF26B, 0xF26C, 0xF26D,
- 0xF26E, 0xF26F, 0xF270, 0xF271, 0xF272, 0xF273, 0xF274, 0xF275,
- 0xF276, 0xF277, 0xF278, 0xF279, 0xF27A, 0xF27B, 0xF27C, 0xF27D,
- 0xF27E, 0xF27F, 0xF280, 0xF281, 0xF282, 0xF283, 0xF284, 0xF285,
- 0xF286, 0xF287, 0xF288, 0xF289, 0xF28A, 0xF28B, 0xF28C, 0xF28D,
- 0xF28E, 0xF28F, 0xF290, 0xF291, 0xF292, 0xF293, 0xF294, 0xF295,
- 0xF296, 0xF297, 0xF298, 0xF299, 0xF29A, 0xF29B, 0xF29C, 0xF29D,
- 0xF29E, 0xF29F, 0xF2A0, 0xF2A1, 0xF2A2, 0xF2A3, 0xF2A4,
- /* Big5-HKSCS 0x87A1 .. 0x87FE */
- 0xF2A5, 0xF2A6, 0xF2A7, 0xF2A8, 0xF2A9, 0xF2AA, 0xF2AB,
- 0xF2AC, 0xF2AD, 0xF2AE, 0xF2AF, 0xF2B0, 0xF2B1, 0xF2B2, 0xF2B3,
- 0xF2B4, 0xF2B5, 0xF2B6, 0xF2B7, 0xF2B8, 0xF2B9, 0xF2BA, 0xF2BB,
- 0xF2BC, 0xF2BD, 0xF2BE, 0xF2BF, 0xF2C0, 0xF2C1, 0xF2C2, 0xF2C3,
- 0xF2C4, 0xF2C5, 0xF2C6, 0xF2C7, 0xF2C8, 0xF2C9, 0xF2CA, 0xF2CB,
- 0xF2CC, 0xF2CD, 0xF2CE, 0xF2CF, 0xF2D0, 0xF2D1, 0xF2D2, 0xF2D3,
- 0xF2D4, 0xF2D5, 0xF2D6, 0xF2D7, 0xF2D8, 0xF2D9, 0xF2DA, 0xF2DB,
- 0xF2DC, 0xF2DD, 0xF2DE, 0xF2DF, 0xF2E0, 0xF2E1, 0xF2E2, 0xF2E3,
- 0xF2E4, 0xF2E5, 0xF2E6, 0xF2E7, 0xF2E8, 0xF2E9, 0xF2EA, 0xF2EB,
- 0xF2EC, 0xF2ED, 0xF2EE, 0xF2EF, 0xF2F0, 0xF2F1, 0xF2F2, 0xF2F3,
- 0xF2F4, 0xF2F5, 0xF2F6, 0xF2F7, 0xF2F8, 0xF2F9, 0xF2FA, 0xF2FB,
- 0xF2FC, 0xF2FD, 0xF2FE, 0xF2FF, 0xF300, 0xF301, 0xF302,
- /* Big5-HKSCS 0x8840 .. 0x887E */
- 0xF303, 0xF304, 0xF305, 0xF306, 0xF307, 0xF308, 0xF309, 0xF30A,
- 0xF30B, 0xF30C, 0xF30D, 0xF30E, 0xF30F, 0xF310, 0xF311, 0xF312,
- 0xF313, 0xF314, 0xF315, 0xF316, 0xF317, 0xF318, 0x0100, 0x00C1,
- 0x01CD, 0x00C0, 0x0112, 0x00C9, 0x011A, 0x00C8, 0x014C, 0x00D3,
- 0x01D1, 0x00D2, 0xF325, 0x1EBE, 0xF327, 0x1EC0, 0x00CA, 0x0101,
- 0x00E1, 0x01CE, 0x00E0, 0x0251, 0x0113, 0x00E9, 0x011B, 0x00E8,
- 0x012B, 0x00ED, 0x01D0, 0x00EC, 0x014D, 0x00F3, 0x01D2, 0x00F2,
- 0x016B, 0x00FA, 0x01D4, 0x00F9, 0x01D6, 0x01D8, 0x01DA,
- /* Big5-HKSCS 0x88A1 .. 0x88FE */
- 0x01DC, 0x00FC, 0xF344, 0x1EBF, 0xF346, 0x1EC1, 0x00EA,
- 0x0261, 0xF34A, 0xF34B, 0xF34C, 0xF34D, 0xF34E, 0xF34F, 0xF350,
- 0xF351, 0xF352, 0xF353, 0xF354, 0xF355, 0xF356, 0xF357, 0xF358,
- 0xF359, 0xF35A, 0xF35B, 0xF35C, 0xF35D, 0xF35E, 0xF35F, 0xF360,
- 0xF361, 0xF362, 0xF363, 0xF364, 0xF365, 0xF366, 0xF367, 0xF368,
- 0xF369, 0xF36A, 0xF36B, 0xF36C, 0xF36D, 0xF36E, 0xF36F, 0xF370,
- 0xF371, 0xF372, 0xF373, 0xF374, 0xF375, 0xF376, 0xF377, 0xF378,
- 0xF379, 0xF37A, 0xF37B, 0xF37C, 0xF37D, 0xF37E, 0xF37F, 0xF380,
- 0xF381, 0xF382, 0xF383, 0xF384, 0xF385, 0xF386, 0xF387, 0xF388,
- 0xF389, 0xF38A, 0xF38B, 0xF38C, 0xF38D, 0xF38E, 0xF38F, 0xF390,
- 0xF391, 0xF392, 0xF393, 0xF394, 0xF395, 0xF396, 0xF397, 0xF398,
- 0xF399, 0xF39A, 0xF39B, 0xF39C, 0xF39D, 0xF39E, 0xF39F,
- /* Big5-HKSCS 0x8940 .. 0x897E */
- 0xF3A0, 0xF3A1, 0xF3A2, 0x650A, 0xF3A4, 0xF3A5, 0x4E3D, 0x6EDD,
- 0x9D4E, 0x91DF, 0xF3AA, 0xF3AB, 0xF3AC, 0x6491, 0x4F1A, 0x4F28,
- 0x4FA8, 0x5156, 0x5174, 0x519C, 0x51E4, 0x52A1, 0x52A8, 0x533B,
- 0x534E, 0x53D1, 0x53D8, 0x56E2, 0x58F0, 0x5904, 0x5907, 0x5932,
- 0x5934, 0x5B66, 0x5B9E, 0x5B9F, 0x5C9A, 0x5E86, 0x603B, 0x6589,
- 0x67FE, 0x6804, 0x6865, 0x6D4E, 0x70BC, 0x7535, 0x7EA4, 0x7EAC,
- 0x7EBA, 0x7EC7, 0x7ECF, 0x7EDF, 0x7F06, 0x7F37, 0x827A, 0x82CF,
- 0x836F, 0x89C6, 0x8BBE, 0x8BE2, 0x8F66, 0x8F67, 0x8F6E,
- /* Big5-HKSCS 0x89A1 .. 0x89FE */
- 0x7411, 0x7CFC, 0x7DCD, 0x6946, 0x7AC9, 0x5227, 0xF3E5,
- 0xF3E6, 0xF3E7, 0xF3E8, 0x918C, 0x78B8, 0x915E, 0x80BC, 0xF3ED,
- 0x8D0B, 0x80F6, 0xF3F0, 0xF3F1, 0xF3F2, 0x809F, 0x9EC7, 0x4CCD,
- 0x9DC9, 0x9E0C, 0x4C3E, 0xF3F9, 0xF3FA, 0x9E0A, 0xF3FC, 0x35C1,
- 0xF3FE, 0x6E9A, 0x823E, 0x7519, 0xF402, 0x4911, 0x9A6C, 0x9A8F,
- 0x9F99, 0x7987, 0xF408, 0xF409, 0xF40A, 0xF40B, 0x4E24, 0x4E81,
- 0x4E80, 0x4E87, 0x4EBF, 0x4EEB, 0x4F37, 0x344C, 0x4FBD, 0x3E48,
- 0x5003, 0x5088, 0x347D, 0x3493, 0x34A5, 0x5186, 0x5905, 0x51DB,
- 0x51FC, 0x5205, 0x4E89, 0x5279, 0x5290, 0x5327, 0x35C7, 0x53A9,
- 0x3551, 0x53B0, 0x3553, 0x53C2, 0x5423, 0x356D, 0x3572, 0x3681,
- 0x5493, 0x54A3, 0x54B4, 0x54B9, 0x54D0, 0x54EF, 0x5518, 0x5523,
- 0x5528, 0x3598, 0x553F, 0x35A5, 0x35BF, 0x55D7, 0x35C5,
- /* Big5-HKSCS 0x8A40 .. 0x8A7E */
- 0xF43D, 0x5525, 0xF43F, 0xF440, 0xF441, 0xF442, 0x5590, 0xF444,
- 0x39EC, 0xF446, 0x8E46, 0xF448, 0xF449, 0x4053, 0xF44B, 0x777A,
- 0xF44D, 0x3A34, 0x47D5, 0xF450, 0xF451, 0xF452, 0x64DD, 0xF454,
- 0xF455, 0xF456, 0xF457, 0x648D, 0x8E7E, 0xF45A, 0xF45B, 0xF45C,
- 0xF45D, 0xF45E, 0xF45F, 0xF460, 0xF461, 0xF462, 0xF463, 0x47F4,
- 0xF465, 0xF466, 0x9AB2, 0x3A67, 0xF469, 0x3FED, 0x3506, 0xF46C,
- 0xF46D, 0xF46E, 0xF46F, 0x9D6E, 0x9815, 0xF472, 0x43D9, 0xF474,
- 0x64B4, 0x54E3, 0xF477, 0xF478, 0xF479, 0x39FB, 0xF47B,
- /* Big5-HKSCS 0x8AA1 .. 0x8AFE */
- 0xF47C, 0xF47D, 0xF47E, 0x64EA, 0xF480, 0xF481, 0x8E68,
- 0xF483, 0xF484, 0xF485, 0xF486, 0x480B, 0xF488, 0x3FFA, 0x5873,
- 0xF48B, 0xF48C, 0xF48D, 0xF48E, 0xF48F, 0xF490, 0xF491, 0x5579,
- 0x40BB, 0x43BA, 0xF495, 0x4AB4, 0xF497, 0xF498, 0x81AA, 0x98F5,
- 0xF49B, 0x6379, 0x39FE, 0xF49E, 0x8DC0, 0x56A1, 0x647C, 0x3E43,
- 0xF4A3, 0xF4A4, 0xF4A5, 0xF4A6, 0xF4A7, 0xF4A8, 0xF4A9, 0xF4AA,
- 0x3992, 0x3A06, 0xF4AD, 0x3578, 0xF4AF, 0xF4B0, 0x5652, 0xF4B2,
- 0xF4B3, 0xF4B4, 0x34BC, 0x6C3D, 0xF4B7, 0xF4B8, 0xF4B9, 0xF4BA,
- 0xF4BB, 0xF4BC, 0xF4BD, 0xF4BE, 0xF4BF, 0xF4C0, 0xF4C1, 0x7F93,
- 0xF4C3, 0xF4C4, 0xF4C5, 0x35FB, 0xF4C7, 0xF4C8, 0xF4C9, 0xF4CA,
- 0x3F93, 0xF4CC, 0xF4CD, 0xF4CE, 0xF4CF, 0xF4D0, 0xF4D1, 0xF4D2,
- 0xF4D3, 0xF4D4, 0xF4D5, 0x3FF9, 0xF4D7, 0x6432, 0xF4D9,
- /* Big5-HKSCS 0x8B40 .. 0x8B7E */
- 0xF4DA, 0xF4DB, 0xF4DC, 0xF4DD, 0xF4DE, 0xF4DF, 0xF4E0, 0x3A18,
- 0xF4E2, 0xF4E3, 0xF4E4, 0xF4E5, 0xF4E6, 0xF4E7, 0xF4E8, 0xF4E9,
- 0x95AA, 0x54CC, 0x82C4, 0x55B9, 0xF4EE, 0xF4EF, 0x9C26, 0x9AB6,
- 0xF4F2, 0xF4F3, 0x7140, 0x816D, 0x80EC, 0x5C1C, 0xF4F8, 0x8134,
- 0x3797, 0x535F, 0xF4FC, 0x91B6, 0xF4FE, 0xF4FF, 0xF500, 0xF501,
- 0x35DD, 0xF503, 0x3609, 0xF505, 0x56AF, 0xF507, 0xF508, 0xF509,
- 0xF50A, 0xF50B, 0xF50C, 0xF50D, 0xF50E, 0xF50F, 0xF510, 0xF511,
- 0x5A54, 0xF513, 0xF514, 0xF515, 0xF516, 0x579C, 0xF518,
- /* Big5-HKSCS 0x8BA1 .. 0x8BFE */
- 0xF519, 0xF51A, 0xF51B, 0xF51C, 0xF51D, 0x3703, 0xF51F,
- 0xF520, 0xF521, 0xF522, 0xF523, 0xF524, 0xF525, 0xF526, 0x5899,
- 0x5268, 0x361A, 0xF52A, 0x7BB2, 0x5B68, 0x4800, 0x4B2C, 0x9F27,
- 0x49E7, 0x9C1F, 0x9B8D, 0xF533, 0xF534, 0x55FB, 0x35F2, 0x5689,
- 0x4E28, 0x5902, 0xF53A, 0xF53B, 0x9751, 0xF53D, 0x4E5B, 0x4EBB,
- 0x353E, 0x5C23, 0x5F51, 0x5FC4, 0x38FA, 0x624C, 0x6535, 0x6B7A,
- 0x6C35, 0x6C3A, 0x706C, 0x722B, 0x4E2C, 0x72AD, 0xF54E, 0x7F52,
- 0x793B, 0x7CF9, 0x7F53, 0xF553, 0x34C1, 0xF555, 0xF556, 0x8002,
- 0x8080, 0xF559, 0xF55A, 0x535D, 0x8864, 0x89C1, 0xF55E, 0x8BA0,
- 0x8D1D, 0x9485, 0x9578, 0x957F, 0x95E8, 0xF565, 0x97E6, 0x9875,
- 0x98CE, 0x98DE, 0x9963, 0xF56B, 0x9C7C, 0x9E1F, 0x9EC4, 0x6B6F,
- 0xF907, 0x4E37, 0xF572, 0x961D, 0x6237, 0x94A2, 0xF576,
- /* Big5-HKSCS 0x8C40 .. 0x8C7E */
- 0x503B, 0x6DFE, 0xF579, 0xF57A, 0x3DC9, 0x888F, 0xF57D, 0x7077,
- 0x5CF5, 0x4B20, 0xF581, 0x3559, 0xF583, 0x6122, 0xF585, 0x8FA7,
- 0x91F6, 0x7191, 0x6719, 0x73BA, 0xF58B, 0xF58C, 0x3C8B, 0xF58E,
- 0x4B10, 0x78E4, 0x7402, 0x51AE, 0xF593, 0x4009, 0x6A63, 0xF596,
- 0x4223, 0x860F, 0xF599, 0x7A2A, 0xF59B, 0xF59C, 0x9755, 0x704D,
- 0x5324, 0xF5A0, 0x93F4, 0x76D9, 0xF5A3, 0xF5A4, 0x77DD, 0x4EA3,
- 0x4FF0, 0x50BC, 0x4E2F, 0x4F17, 0xF5AB, 0x5434, 0x7D8B, 0x5892,
- 0x58D0, 0xF5B0, 0x5E92, 0x5E99, 0x5FC2, 0xF5B4, 0x658B,
- /* Big5-HKSCS 0x8CA1 .. 0x8CFE */
- 0xF5B6, 0x6919, 0x6A43, 0xF5B9, 0x6CFF, 0xF5BB, 0x7200,
- 0xF5BD, 0x738C, 0x3EDB, 0xF5C0, 0x5B15, 0x74B9, 0x8B83, 0xF5C4,
- 0xF5C5, 0x7A93, 0x7BEC, 0x7CC3, 0x7E6C, 0x82F8, 0x8597, 0xF5CC,
- 0x8890, 0xF5CE, 0x8EB9, 0xF5D0, 0x8FCF, 0x855F, 0x99E0, 0x9221,
- 0xF5D5, 0xF5D6, 0xF5D7, 0x4071, 0x42A2, 0x5A1A, 0xF5DB, 0xF5DC,
- 0xF5DD, 0x9868, 0x676B, 0x4276, 0x573D, 0xF5E2, 0x85D6, 0xF5E4,
- 0x82BF, 0xF5E6, 0x4C81, 0xF5E8, 0x5D7B, 0xF5EA, 0xF5EB, 0xF5EC,
- 0xF5ED, 0x5B96, 0xF5EF, 0xF5F0, 0x7E5B, 0xF5F2, 0xF5F3, 0xF5F4,
- 0xF5F5, 0xF5F6, 0xF5F7, 0xF5F8, 0xF5F9, 0xF5FA, 0xF5FB, 0xF5FC,
- 0xF5FD, 0xF5FE, 0xF5FF, 0xF600, 0xF601, 0xF602, 0xF603, 0xF604,
- 0xF605, 0xF606, 0xF607, 0xF608, 0xF609, 0xF60A, 0xF60B, 0xF60C,
- 0xF60D, 0xF60E, 0xF60F, 0xF610, 0xF611, 0xF612, 0xF613,
- /* Big5-HKSCS 0x8D40 .. 0x8D7E */
- 0xF614, 0xF615, 0xF616, 0xF617, 0xF618, 0xF619, 0xF61A, 0xF61B,
- 0xF61C, 0xF61D, 0xF61E, 0xF61F, 0xF620, 0xF621, 0xF622, 0xF623,
- 0xF624, 0xF625, 0xF626, 0xF627, 0xF628, 0xF629, 0xF62A, 0xF62B,
- 0xF62C, 0xF62D, 0xF62E, 0xF62F, 0xF630, 0xF631, 0xF632, 0xF633,
- 0x5D3E, 0x5D48, 0x5D56, 0x3DFC, 0x380F, 0x5DA4, 0x5DB9, 0x3820,
- 0x3838, 0x5E42, 0x5EBD, 0x5F25, 0x5F83, 0x3908, 0x3914, 0x393F,
- 0x394D, 0x60D7, 0x613D, 0x5CE5, 0x3989, 0x61B7, 0x61B9, 0x61CF,
- 0x39B8, 0x622C, 0x6290, 0x62E5, 0x6318, 0x39F8, 0x56B1,
- /* Big5-HKSCS 0x8DA1 .. 0x8DFE */
- 0x3A03, 0x63E2, 0x63FB, 0x6407, 0x645A, 0x3A4B, 0x64C0,
- 0x5D15, 0x5621, 0x9F9F, 0x3A97, 0x6586, 0x3ABD, 0x65FF, 0x6653,
- 0x3AF2, 0x6692, 0x3B22, 0x6716, 0x3B42, 0x67A4, 0x6800, 0x3B58,
- 0x684A, 0x6884, 0x3B72, 0x3B71, 0x3B7B, 0x6909, 0x6943, 0x725C,
- 0x6964, 0x699F, 0x6985, 0x3BBC, 0x69D6, 0x3BDD, 0x6A65, 0x6A74,
- 0x6A71, 0x6A82, 0x3BEC, 0x6A99, 0x3BF2, 0x6AAB, 0x6AB5, 0x6AD4,
- 0x6AF6, 0x6B81, 0x6BC1, 0x6BEA, 0x6C75, 0x6CAA, 0x3CCB, 0x6D02,
- 0x6D06, 0x6D26, 0x6D81, 0x3CEF, 0x6DA4, 0x6DB1, 0x6E15, 0x6E18,
- 0x6E29, 0x6E86, 0xF694, 0x6EBB, 0x6EE2, 0x6EDA, 0x9F7F, 0x6EE8,
- 0x6EE9, 0x6F24, 0x6F34, 0x3D46, 0xF69E, 0x6F81, 0x6FBE, 0x3D6A,
- 0x3D75, 0x71B7, 0x5C99, 0x3D8A, 0x702C, 0x3D91, 0x7050, 0x7054,
- 0x706F, 0x707F, 0x7089, 0xF6AD, 0x43C1, 0x35F1, 0xF6B0,
- /* Big5-HKSCS 0x8E40 .. 0x8E7E */
- 0xE311, 0x57BE, 0xE313, 0x713E, 0xE315, 0x364E, 0x69A2, 0xE318,
- 0x5B74, 0x7A49, 0xE31B, 0xE31C, 0x7A65, 0x7A7D, 0xE31F, 0x7ABB,
- 0x7AB0, 0x7AC2, 0x7AC3, 0x71D1, 0xE325, 0x41CA, 0x7ADA, 0x7ADD,
- 0x7AEA, 0x41EF, 0x54B2, 0xE32C, 0x7B0B, 0x7B55, 0x7B29, 0xE330,
- 0xE331, 0x7BA2, 0x7B6F, 0x839C, 0xE335, 0xE336, 0x7BD0, 0x8421,
- 0x7B92, 0x7BB8, 0xE33B, 0x3DAD, 0xE33D, 0x8492, 0x7BFA, 0x7C06,
- 0x7C35, 0xE342, 0x7C44, 0x7C83, 0xE345, 0x7CA6, 0x667D, 0xE348,
- 0x7CC9, 0x7CC7, 0x7CE6, 0x7C74, 0x7CF3, 0x7CF5, 0x7CCE,
- /* Big5-HKSCS 0x8EA1 .. 0x8EFE */
- 0x7E67, 0x451D, 0xE352, 0x7D5D, 0xE354, 0x748D, 0x7D89,
- 0x7DAB, 0x7135, 0x7DB3, 0x7DD2, 0xE35B, 0xE35C, 0x7DE4, 0x3D13,
- 0x7DF5, 0xE360, 0x7DE5, 0xE362, 0x7E1D, 0xE364, 0xE365, 0x7E6E,
- 0x7E92, 0x432B, 0x946C, 0x7E27, 0x7F40, 0x7F41, 0x7F47, 0x7936,
- 0xE36F, 0x99E1, 0x7F97, 0xE372, 0x7FA3, 0xE374, 0xE375, 0x455C,
- 0xE377, 0x4503, 0xE379, 0x7FFA, 0xE37B, 0x8005, 0x8008, 0x801D,
- 0x8028, 0x802F, 0xE381, 0xE382, 0x803B, 0x803C, 0x8061, 0xE386,
- 0x4989, 0xE388, 0xE389, 0xE38A, 0x6725, 0x80A7, 0xE38D, 0x8107,
- 0x811A, 0x58B0, 0xE391, 0x6C7F, 0xE393, 0xE394, 0x64E7, 0xE396,
- 0x8218, 0xE398, 0x6A53, 0xE39A, 0xE39B, 0x447A, 0x8229, 0xE39E,
- 0xE39F, 0xE3A0, 0x4FF9, 0xE3A2, 0x84E2, 0x8362, 0xE3A5, 0xE3A6,
- 0xE3A7, 0xE3A8, 0xE3A9, 0x82AA, 0x691B, 0xE3AC, 0x41DB,
- /* Big5-HKSCS 0x8F40 .. 0x8F7E */
- 0x854B, 0x82D0, 0x831A, 0xE3B1, 0xE3B2, 0x36C1, 0xE3B4, 0xE3B5,
- 0x827B, 0x82E2, 0x8318, 0xE3B9, 0xE3BA, 0xE3BB, 0xE3BC, 0xE3BD,
- 0x3DBF, 0x831D, 0x55EC, 0x8385, 0x450B, 0xE3C3, 0x83AC, 0x83C1,
- 0x83D3, 0x347E, 0xE3C8, 0x6A57, 0x855A, 0x3496, 0xE3CC, 0xE3CD,
- 0x8458, 0xE3CF, 0x8471, 0x3DD3, 0x44E4, 0x6AA7, 0x844A, 0xE3D5,
- 0x7958, 0x84A8, 0xE3D8, 0xE3D9, 0xE3DA, 0x84DE, 0x840F, 0x8391,
- 0x44A0, 0x8493, 0x84E4, 0xE3E1, 0x4240, 0xE3E3, 0x4543, 0x8534,
- 0x5AF2, 0xE3E7, 0x4527, 0x8573, 0x4516, 0x67BF, 0x8616,
- /* Big5-HKSCS 0x8FA1 .. 0x8FFE */
- 0xE3ED, 0xE3EE, 0x85C1, 0xE3F0, 0x8602, 0xE3F2, 0xE3F3,
- 0xE3F4, 0x456A, 0x8628, 0x3648, 0xE3F8, 0x53F7, 0xE3FA, 0x867E,
- 0x8771, 0xE3FD, 0x87EE, 0xE3FF, 0x87B1, 0x87DA, 0x880F, 0x5661,
- 0x866C, 0x6856, 0x460F, 0x8845, 0x8846, 0xE409, 0xE40A, 0xE40B,
- 0x885E, 0x889C, 0x465B, 0x88B4, 0x88B5, 0x63C1, 0x88C5, 0x7777,
- 0xE414, 0x8987, 0x898A, 0x89A6, 0x89A9, 0x89A7, 0x89BC, 0xE41B,
- 0x89E7, 0xE41D, 0xE41E, 0x8A9C, 0x7793, 0x91FE, 0x8A90, 0xE423,
- 0x7AE9, 0xE425, 0xE426, 0x4713, 0xE428, 0x717C, 0x8B0C, 0x8B1F,
- 0xE42C, 0xE42D, 0x8B3F, 0x8B4C, 0x8B4D, 0x8AA9, 0xE432, 0x8B90,
- 0x8B9B, 0x8AAF, 0xE436, 0x4615, 0x884F, 0x8C9B, 0xE43A, 0xE43B,
- 0xE43C, 0x3725, 0xE43E, 0x8CD6, 0xE440, 0xE441, 0x8D12, 0x8D03,
- 0xE444, 0x8CDB, 0x705C, 0x8D11, 0xE448, 0x3ED0, 0x8D77,
- /* Big5-HKSCS 0x9040 .. 0x907E */
- 0x8DA9, 0xE44C, 0xE44D, 0xE44E, 0x3B7C, 0xE450, 0xE451, 0x7AE7,
- 0x8EAD, 0x8EB6, 0x8EC3, 0x92D4, 0x8F19, 0x8F2D, 0xE459, 0xE45A,
- 0x8FA5, 0x9303, 0xE45D, 0xE45E, 0x8FB3, 0x492A, 0xE461, 0xE462,
- 0xE463, 0x5EF8, 0xE465, 0x8FF9, 0xE467, 0xE468, 0xE469, 0xE46A,
- 0x3980, 0xE46C, 0x9037, 0xE46E, 0xE46F, 0x9061, 0xE471, 0xE472,
- 0x90A8, 0xE474, 0x90C4, 0xE476, 0x90AE, 0x90FD, 0x9167, 0x3AF0,
- 0x91A9, 0x91C4, 0x7CAC, 0xE47E, 0xE47F, 0x920E, 0x6C9F, 0x9241,
- 0x9262, 0xE484, 0x92B9, 0xE486, 0xE487, 0xE488, 0xE489,
- /* Big5-HKSCS 0x90A1 .. 0x90FE */
- 0xE48A, 0x932C, 0x936B, 0xE48D, 0xE48E, 0x708F, 0x5AC3,
- 0xE491, 0xE492, 0x4965, 0x9244, 0xE495, 0xE496, 0xE497, 0x9373,
- 0x945B, 0x8EBC, 0x9585, 0x95A6, 0x9426, 0x95A0, 0x6FF6, 0x42B9,
- 0xE4A1, 0xE4A2, 0xE4A3, 0xE4A4, 0x49DF, 0x6C1C, 0x967B, 0x9696,
- 0x416C, 0x96A3, 0xE4AB, 0x61DA, 0x96B6, 0x78F5, 0xE4AF, 0x96BD,
- 0x53CC, 0x49A1, 0xE4B3, 0xE4B4, 0xE4B5, 0xE4B6, 0xE4B7, 0xE4B8,
- 0xE4B9, 0xE4BA, 0x9731, 0x8642, 0x9736, 0x4A0F, 0x453D, 0x4585,
- 0xE4C1, 0x7075, 0x5B41, 0x971B, 0x975C, 0xE4C6, 0x9757, 0x5B4A,
- 0xE4C9, 0x975F, 0x9425, 0x50D0, 0xE4CD, 0xE4CE, 0x9789, 0x979F,
- 0x97B1, 0x97BE, 0x97C0, 0x97D2, 0x97E0, 0xE4D6, 0x97EE, 0x741C,
- 0xE4D9, 0x97FF, 0x97F5, 0xE4DC, 0xE4DD, 0x4AD1, 0x9834, 0x9833,
- 0x984B, 0x9866, 0x3B0E, 0xE4E4, 0x3D51, 0xE4E6, 0xE4E7,
- /* Big5-HKSCS 0x9140 .. 0x917E */
- 0xE4E8, 0x98CA, 0x98B7, 0x98C8, 0x98C7, 0x4AFF, 0xE4EE, 0xE4EF,
- 0x55B0, 0x98E1, 0x98E6, 0x98EC, 0x9378, 0x9939, 0xE4F6, 0x4B72,
- 0xE4F8, 0xE4F9, 0x99F5, 0x9A0C, 0x9A3B, 0x9A10, 0x9A58, 0xE4FF,
- 0x36C4, 0xE501, 0xE502, 0x9AE0, 0x9AE2, 0xE505, 0x9AF4, 0x4C0E,
- 0x9B14, 0x9B2D, 0xE50A, 0x5034, 0x9B34, 0xE50D, 0x38C3, 0xE50F,
- 0x9B50, 0x9B40, 0xE512, 0x5A45, 0xE514, 0x9B8E, 0xE516, 0x9C02,
- 0x9BFF, 0x9C0C, 0xE51A, 0x9DD4, 0xE51C, 0xE51D, 0xE51E, 0xE51F,
- 0xE520, 0xE521, 0x9D7E, 0x9D83, 0xE524, 0x9E0E, 0x6888,
- /* Big5-HKSCS 0x91A1 .. 0x91FE */
- 0x9DC4, 0xE528, 0xE529, 0xE52A, 0xE52B, 0xE52C, 0x9D39,
- 0xE52E, 0xE52F, 0x9E90, 0x9E95, 0x9E9E, 0x9EA2, 0x4D34, 0x9EAA,
- 0x9EAF, 0xE537, 0x9EC1, 0x3B60, 0x39E5, 0x3D1D, 0x4F32, 0x37BE,
- 0xE53E, 0x9F02, 0x9F08, 0x4B96, 0x9424, 0xE543, 0x9F17, 0x9F16,
- 0x9F39, 0x569F, 0x568A, 0x9F45, 0x99B8, 0xE54B, 0x97F2, 0x847F,
- 0x9F62, 0x9F69, 0x7ADC, 0x9F8E, 0x7216, 0x4BBE, 0xE554, 0xE555,
- 0x7177, 0xE557, 0xE558, 0xE559, 0x739E, 0xE55B, 0xE55C, 0x799F,
- 0xE55E, 0xE55F, 0x9369, 0x93F3, 0xE562, 0x92EC, 0x9381, 0x93CB,
- 0xE566, 0xE567, 0x7217, 0x3EEB, 0x7772, 0x7A43, 0x70D0, 0xE56D,
- 0xE56E, 0x717E, 0xE570, 0x70A3, 0xE572, 0xE573, 0x3EC7, 0xE575,
- 0xE576, 0xE577, 0x3722, 0xE579, 0xE57A, 0x36E1, 0xE57C, 0xE57D,
- 0xE57E, 0x3723, 0xE580, 0x575B, 0xE582, 0xE583, 0xE584,
- /* Big5-HKSCS 0x9240 .. 0x927E */
- 0xE585, 0xE586, 0x8503, 0xE588, 0x8503, 0x8455, 0xE58B, 0xE58C,
- 0xE58D, 0xE58E, 0xE58F, 0xE590, 0x44F4, 0xE592, 0xE593, 0xE594,
- 0x67F9, 0x3733, 0x3C15, 0x3DE7, 0x586C, 0xE59A, 0x6810, 0x4057,
- 0xE59D, 0xE59E, 0xE59F, 0xE5A0, 0xE5A1, 0x54CB, 0x569E, 0xE5A4,
- 0x5692, 0xE5A6, 0xE5A7, 0xE5A8, 0x93C6, 0xE5AA, 0x939C, 0x4EF8,
- 0x512B, 0x3819, 0xE5AF, 0x4EBC, 0xE5B1, 0xE5B2, 0x4F4B, 0x4F8A,
- 0xE5B5, 0x5A68, 0xE5B7, 0xE5B8, 0x3999, 0xE5BA, 0xE5BB, 0x3435,
- 0x4F29, 0xE5BE, 0xE5BF, 0xE5C0, 0x8ADA, 0xE5C2, 0x4E98,
- /* Big5-HKSCS 0x92A1 .. 0x92FE */
- 0x50CD, 0x510D, 0x4FA2, 0x4F03, 0xE5C8, 0xE5C9, 0x4F42,
- 0x502E, 0x506C, 0x5081, 0x4FCC, 0x4FE5, 0x5058, 0x50FC, 0x5159,
- 0x515B, 0x515D, 0x515E, 0x6E76, 0xE5D7, 0xE5D8, 0xE5D9, 0x6D72,
- 0xE5DB, 0xE5DC, 0x51A8, 0x51C3, 0xE5DF, 0x44DD, 0xE5E1, 0xE5E2,
- 0xE5E3, 0x8D7A, 0xE5E5, 0xE5E6, 0x5259, 0x52A4, 0xE5E9, 0x52E1,
- 0x936E, 0x467A, 0x718C, 0xE5EE, 0xE5EF, 0xE5F0, 0xE5F1, 0x69D1,
- 0xE5F3, 0x7479, 0x3EDE, 0x7499, 0x7414, 0x7456, 0x7398, 0x4B8E,
- 0xE5FB, 0xE5FC, 0x53D0, 0x3584, 0x720F, 0xE600, 0x55B4, 0xE602,
- 0x54CD, 0xE604, 0x571D, 0x925D, 0x96F4, 0x9366, 0x57DD, 0x578D,
- 0x577F, 0x363E, 0x58CB, 0x5A99, 0xE60F, 0xE610, 0xE611, 0xE612,
- 0x5A2C, 0x59B8, 0x928F, 0x5A7E, 0x5ACF, 0x5A12, 0xE619, 0xE61A,
- 0xE61B, 0xE61C, 0x36F5, 0x6D05, 0x7443, 0x5A21, 0xE621,
- /* Big5-HKSCS 0x9340 .. 0x937E */
- 0x5A81, 0xE623, 0xE624, 0x93E0, 0x748C, 0xE627, 0x7105, 0x4972,
- 0x9408, 0xE62B, 0x93BD, 0x37A0, 0x5C1E, 0x5C9E, 0x5E5E, 0x5E48,
- 0xE632, 0xE633, 0xE634, 0x5ECD, 0x5B4F, 0xE637, 0xE638, 0x3701,
- 0xE63A, 0x36DD, 0xE63C, 0x36D3, 0x812A, 0xE63F, 0xE640, 0xE641,
- 0xE642, 0x5F0C, 0x5F0E, 0xE645, 0xE646, 0x5A6B, 0xE648, 0x5B44,
- 0x8614, 0xE64B, 0x8860, 0x607E, 0xE64E, 0xE64F, 0x5FDB, 0x3EB8,
- 0xE652, 0xE653, 0xE654, 0xE655, 0x61C0, 0xE657, 0xE658, 0xE659,
- 0x6199, 0x6198, 0x6075, 0xE65D, 0xE65E, 0xE65F, 0xE660,
- /* Big5-HKSCS 0x93A1 .. 0x93FE */
- 0x6471, 0xE662, 0xE663, 0x3A29, 0xE665, 0xE666, 0xE667,
- 0xE668, 0x6337, 0xE66A, 0x64B6, 0x6331, 0x63D1, 0xE66E, 0xE66F,
- 0x62A4, 0xE671, 0x643B, 0x656B, 0x6972, 0x3BF4, 0xE676, 0xE677,
- 0xE678, 0xE679, 0x550D, 0xE67B, 0xE67C, 0xE67D, 0x66CE, 0xE67F,
- 0xE680, 0x3AE0, 0x4190, 0xE683, 0xE684, 0xE685, 0xE686, 0xE687,
- 0xE688, 0x78EE, 0xE68A, 0xE68B, 0xE68C, 0x3464, 0xE68E, 0xE68F,
- 0xE690, 0x668E, 0xE692, 0x666B, 0x4B93, 0x6630, 0xE696, 0xE697,
- 0x6663, 0xE699, 0xE69A, 0x661E, 0xE69C, 0x38D1, 0xE69E, 0xE69F,
- 0x3B99, 0xE6A1, 0xE6A2, 0x74D0, 0x3B96, 0x678F, 0xE6A6, 0x68B6,
- 0x681E, 0x3BC4, 0x6ABE, 0x3863, 0xE6AC, 0xE6AD, 0x6A33, 0x6A52,
- 0x6AC9, 0x6B05, 0xE6B2, 0x6511, 0x6898, 0x6A4C, 0x3BD7, 0x6A7A,
- 0x6B57, 0xE6B9, 0xE6BA, 0x93A0, 0x92F2, 0xE6BD, 0xE6BE,
- /* Big5-HKSCS 0x9440 .. 0x947E */
- 0x9289, 0xE6C0, 0xE6C1, 0x9467, 0x6DA5, 0x6F0B, 0xE6C5, 0x6D67,
- 0xE6C7, 0x3D8F, 0x6E04, 0xE6CA, 0x5A3D, 0x6E0A, 0x5847, 0x6D24,
- 0x7842, 0x713B, 0xE6D1, 0xE6D2, 0x70F1, 0x7250, 0x7287, 0x7294,
- 0xE6D7, 0xE6D8, 0x5179, 0xE6DA, 0xE6DB, 0x747A, 0xE6DD, 0xE6DE,
- 0xE6DF, 0xE6E0, 0xE6E1, 0x3F06, 0x3EB1, 0xE6E4, 0xE6E5, 0xE6E6,
- 0x60A7, 0x3EF3, 0x74CC, 0x743C, 0x9387, 0x7437, 0x449F, 0xE6EE,
- 0x4551, 0x7583, 0x3F63, 0xE6F2, 0xE6F3, 0x3F58, 0x7555, 0x7673,
- 0xE6F7, 0x3B19, 0x7468, 0xE6FA, 0xE6FB, 0xE6FC, 0x3AFB,
- /* Big5-HKSCS 0x94A1 .. 0x94FE */
- 0x3DCD, 0xE6FF, 0x3EFF, 0xE701, 0xE702, 0x91FA, 0x5732,
- 0x9342, 0xE706, 0xE707, 0x50DF, 0xE709, 0xE70A, 0x7778, 0xE70C,
- 0x770E, 0x770F, 0x777B, 0xE710, 0xE711, 0x3A5E, 0xE713, 0x7438,
- 0x749B, 0x3EBF, 0xE717, 0xE718, 0x40C8, 0xE71A, 0xE71B, 0x9307,
- 0xE71D, 0x781E, 0x788D, 0x7888, 0x78D2, 0x73D0, 0x7959, 0xE724,
- 0xE725, 0x410E, 0x799B, 0x8496, 0x79A5, 0x6A2D, 0xE72B, 0x7A3A,
- 0x79F4, 0x416E, 0xE72F, 0x4132, 0x9235, 0x79F1, 0xE733, 0xE734,
- 0xE735, 0xE736, 0xE737, 0x3597, 0x556B, 0x3570, 0x36AA, 0xE73C,
- 0xE73D, 0x7AE2, 0x5A59, 0xE740, 0xE741, 0xE742, 0x5A0D, 0xE744,
- 0x78F0, 0x5A2A, 0xE747, 0x7AFE, 0x41F9, 0x7C5D, 0x7C6D, 0x4211,
- 0xE74D, 0xE74E, 0xE74F, 0x7CCD, 0xE751, 0xE752, 0x7C8E, 0x7C7C,
- 0x7CAE, 0x6AB2, 0x7DDC, 0x7E07, 0x7DD3, 0x7F4E, 0xE75B,
- /* Big5-HKSCS 0x9540 .. 0x957E */
- 0xE75C, 0xE75D, 0x7D97, 0xE75F, 0x426A, 0xE761, 0xE762, 0x67D6,
- 0xE764, 0xE765, 0x57C4, 0xE767, 0xE768, 0xE769, 0x7FDD, 0x7B27,
- 0xE76C, 0xE76D, 0xE76E, 0x7B0C, 0xE770, 0x99E6, 0x8645, 0x9A63,
- 0x6A1C, 0xE775, 0x39E2, 0xE777, 0xE778, 0x9A1F, 0xE77A, 0x8480,
- 0xE77C, 0xE77D, 0x44EA, 0x8137, 0x4402, 0x80C6, 0x8109, 0x8142,
- 0xE784, 0x98C3, 0xE786, 0x8262, 0x8265, 0xE789, 0x8453, 0xE78B,
- 0x8610, 0xE78D, 0x5A86, 0x417F, 0xE790, 0x5B2B, 0xE792, 0x5AE4,
- 0xE794, 0x86A0, 0xE796, 0xE797, 0x882D, 0xE799, 0x5A02,
- /* Big5-HKSCS 0x95A1 .. 0x95FE */
- 0x886E, 0x4F45, 0x8887, 0x88BF, 0x88E6, 0x8965, 0x894D,
- 0xE7A2, 0x8954, 0xE7A4, 0xE7A5, 0xE7A6, 0xE7A7, 0xE7A8, 0xE7A9,
- 0x3EAD, 0x84A3, 0x46F5, 0x46CF, 0x37F2, 0x8A3D, 0x8A1C, 0xE7B1,
- 0x5F4D, 0x922B, 0xE7B4, 0x65D4, 0x7129, 0x70C4, 0xE7B8, 0x9D6D,
- 0x8C9F, 0x8CE9, 0xE7BC, 0x599A, 0x77C3, 0x59F0, 0x436E, 0x36D4,
- 0x8E2A, 0x8EA7, 0xE7C4, 0x8F30, 0x8F4A, 0x42F4, 0x6C58, 0x6FBB,
- 0xE7CA, 0x489B, 0x6F79, 0x6E8B, 0xE7CE, 0x9BE9, 0x36B5, 0xE7D1,
- 0x90BB, 0x9097, 0x5571, 0x4906, 0x91BB, 0x9404, 0xE7D8, 0x4062,
- 0xE7DA, 0x9427, 0xE7DC, 0xE7DD, 0x84E5, 0x8A2B, 0x9599, 0x95A7,
- 0x9597, 0x9596, 0xE7E4, 0x7445, 0x3EC2, 0xE7E7, 0xE7E8, 0xE7E9,
- 0x3EE7, 0xE7EB, 0x968F, 0xE7ED, 0xE7EE, 0xE7EF, 0x3ECC, 0xE7F1,
- 0xE7F2, 0xE7F3, 0x7412, 0x746B, 0x3EFC, 0x9741, 0xE7F8,
- /* Big5-HKSCS 0x9640 .. 0x967E */
- 0x6847, 0x4A1D, 0xE7FB, 0xE7FC, 0x975D, 0x9368, 0xE7FF, 0xE800,
- 0xE801, 0xE802, 0x92BA, 0x5B11, 0x8B69, 0x493C, 0x73F9, 0xE808,
- 0x979B, 0x9771, 0x9938, 0xE80C, 0x5DC1, 0xE80E, 0xE80F, 0x981F,
- 0xE811, 0x92F6, 0xE813, 0x91E5, 0x44C0, 0xE816, 0xE817, 0xE818,
- 0x98DC, 0xE81A, 0x3F00, 0x922A, 0x4925, 0x8414, 0x993B, 0x994D,
- 0xE821, 0x3DFD, 0x999B, 0x4B6F, 0x99AA, 0x9A5C, 0xE827, 0xE828,
- 0x6A8F, 0x9A21, 0x5AFE, 0x9A2F, 0xE82D, 0x4B90, 0xE82F, 0x99BC,
- 0x4BBD, 0x4B97, 0x937D, 0x5872, 0xE835, 0x5822, 0xE837,
- /* Big5-HKSCS 0x96A1 .. 0x96FE */
- 0xE838, 0x7844, 0xE83A, 0xE83B, 0x68C5, 0x3D7D, 0x9458,
- 0x3927, 0x6150, 0xE841, 0xE842, 0x6107, 0x9C4F, 0x9C53, 0x9C7B,
- 0x9C35, 0x9C10, 0x9B7F, 0x9BCF, 0xE84B, 0x9B9F, 0xE84D, 0xE84E,
- 0x9D21, 0x4CAE, 0xE851, 0x9E18, 0x4CB0, 0x9D0C, 0xE855, 0xE856,
- 0xE857, 0xE858, 0x9DA5, 0x84BD, 0xE85B, 0xE85C, 0xE85D, 0x85FC,
- 0x4533, 0xE860, 0xE861, 0xE862, 0x8420, 0x85EE, 0xE865, 0xE866,
- 0xE867, 0x79E2, 0xE869, 0xE86A, 0x492D, 0xE86C, 0x3D62, 0x93DB,
- 0x92BE, 0x9348, 0xE871, 0x78B9, 0x9277, 0x944D, 0x4FE4, 0x3440,
- 0x9064, 0xE878, 0x783D, 0x7854, 0x78B6, 0x784B, 0xE87D, 0xE87E,
- 0xE87F, 0x369A, 0x4F72, 0x6FDA, 0x6FD9, 0x701E, 0x701E, 0x5414,
- 0xE887, 0x57BB, 0x58F3, 0x578A, 0x9D16, 0x57D7, 0x7134, 0x34AF,
- 0xE88F, 0x71EB, 0xE891, 0xE892, 0x5B28, 0xE894, 0xE895,
- /* Big5-HKSCS 0x9740 .. 0x977E */
- 0x610C, 0x5ACE, 0x5A0B, 0x42BC, 0xE89A, 0x372C, 0x4B7B, 0xE89D,
- 0x93BB, 0x93B8, 0xE8A0, 0xE8A1, 0x8472, 0xE8A3, 0xE8A4, 0xE8A5,
- 0xE8A6, 0xE8A7, 0x5994, 0xE8A9, 0xE8AA, 0x7DA8, 0xE8AC, 0xE8AD,
- 0xE8AE, 0xE8AF, 0xE8B0, 0x92E5, 0x73E2, 0x3EE9, 0x74B4, 0xE8B5,
- 0xE8B6, 0x3EE1, 0xE8B8, 0x6AD8, 0x73F3, 0x73FB, 0x3ED6, 0xE8BD,
- 0xE8BE, 0xE8BF, 0xE8C0, 0xE8C1, 0xE8C2, 0xE8C3, 0x7448, 0xE8C5,
- 0x70A5, 0xE8C7, 0x9284, 0x73E6, 0x935F, 0xE8CB, 0x9331, 0xE8CD,
- 0xE8CE, 0x9386, 0xE8D0, 0xE8D1, 0x4935, 0xE8D3, 0x716B,
- /* Big5-HKSCS 0x97A1 .. 0x97FE */
- 0xE8D5, 0xE8D6, 0x56A4, 0xE8D8, 0xE8D9, 0xE8DA, 0x5502,
- 0x79C4, 0xE8DD, 0x7DFE, 0xE8DF, 0xE8E0, 0xE8E1, 0x452E, 0x9401,
- 0x370A, 0xE8E5, 0xE8E6, 0x59B0, 0xE8E8, 0xE8E9, 0xE8EA, 0x5AA1,
- 0x36E2, 0xE8ED, 0x36B0, 0x925F, 0x5A79, 0xE8F1, 0xE8F2, 0x9374,
- 0x3CCD, 0xE8F5, 0x4A96, 0x398A, 0x50F4, 0x3D69, 0x3D4C, 0xE8FB,
- 0x7175, 0x42FB, 0xE8FE, 0x6E0F, 0xE900, 0x44EB, 0x6D57, 0xE903,
- 0x7067, 0x6CAF, 0x3CD6, 0xE907, 0xE908, 0x6E02, 0x6F0C, 0x3D6F,
- 0xE90C, 0x7551, 0x36BC, 0x34C8, 0x4680, 0x3EDA, 0x4871, 0x59C4,
- 0x926E, 0x493E, 0x8F41, 0xE917, 0xE918, 0x5812, 0x57C8, 0x36D6,
- 0xE91C, 0x70FE, 0xE91E, 0xE91F, 0xE920, 0xE921, 0xE922, 0x68B9,
- 0x6967, 0xE925, 0xE926, 0xE927, 0xE928, 0xE929, 0xE92A, 0xE92B,
- 0xE92C, 0x6A1A, 0xE92E, 0xE92F, 0x843E, 0x44DF, 0x44CE,
- /* Big5-HKSCS 0x9840 .. 0x987E */
- 0xE933, 0xE934, 0xE935, 0xE936, 0x6F17, 0xE938, 0x833D, 0xE93A,
- 0x83ED, 0xE93C, 0xE93D, 0xE93E, 0x5989, 0x5A82, 0xE941, 0x5A61,
- 0x5A71, 0xE944, 0xE945, 0x372D, 0x59EF, 0xE948, 0x36C7, 0x718E,
- 0x9390, 0x669A, 0xE94D, 0x5A6E, 0x5A2B, 0xE950, 0x6A2B, 0xE952,
- 0xE953, 0xE954, 0xE955, 0x711D, 0xE957, 0xE958, 0x4FB0, 0xE95A,
- 0x5CC2, 0xE95C, 0xE95D, 0xE95E, 0x6A0C, 0xE960, 0xE961, 0x70A6,
- 0x7133, 0xE964, 0x3DA5, 0x6CDF, 0xE967, 0xE968, 0x7E65, 0x59EB,
- 0x5D2F, 0x3DF3, 0x5F5C, 0xE96E, 0xE96F, 0x7DA4, 0x8426,
- /* Big5-HKSCS 0x98A1 .. 0x98FE */
- 0x5485, 0xE973, 0xE974, 0xE975, 0x577E, 0xE977, 0xE978,
- 0x3FE5, 0xE97A, 0xE97B, 0x7003, 0xE97D, 0x5D70, 0x738F, 0x7CD3,
- 0xE981, 0xE982, 0x4FC8, 0x7FE7, 0x72CD, 0x7310, 0xE987, 0x7338,
- 0x7339, 0xE98A, 0x7341, 0x7348, 0x3EA9, 0xE98E, 0x906C, 0x71F5,
- 0xE991, 0x73E1, 0x81F6, 0x3ECA, 0x770C, 0x3ED1, 0x6CA2, 0x56FD,
- 0x7419, 0x741E, 0x741F, 0x3EE2, 0x3EF0, 0x3EF4, 0x3EFA, 0x74D3,
- 0x3F0E, 0x3F53, 0x7542, 0x756D, 0x7572, 0x758D, 0x3F7C, 0x75C8,
- 0x75DC, 0x3FC0, 0x764D, 0x3FD7, 0x7674, 0x3FDC, 0x767A, 0xE9B0,
- 0x7188, 0x5623, 0x8980, 0x5869, 0x401D, 0x7743, 0x4039, 0x6761,
- 0x4045, 0x35DB, 0x7798, 0x406A, 0x406F, 0x5C5E, 0x77BE, 0x77CB,
- 0x58F2, 0x7818, 0x70B9, 0x781C, 0x40A8, 0x7839, 0x7847, 0x7851,
- 0x7866, 0x8448, 0xE9CB, 0x7933, 0x6803, 0x7932, 0x4103,
- /* Big5-HKSCS 0x9940 .. 0x997E */
- 0x4109, 0x7991, 0x7999, 0x8FBB, 0x7A06, 0x8FBC, 0x4167, 0x7A91,
- 0x41B2, 0x7ABC, 0x8279, 0x41C4, 0x7ACF, 0x7ADB, 0x41CF, 0x4E21,
- 0x7B62, 0x7B6C, 0x7B7B, 0x7C12, 0x7C1B, 0x4260, 0x427A, 0x7C7B,
- 0x7C9C, 0x428C, 0x7CB8, 0x4294, 0x7CED, 0x8F93, 0x70C0, 0xE9EF,
- 0x7DCF, 0x7DD4, 0x7DD0, 0x7DFD, 0x7FAE, 0x7FB4, 0x729F, 0x4397,
- 0x8020, 0x8025, 0x7B39, 0x802E, 0x8031, 0x8054, 0x3DCC, 0x57B4,
- 0x70A0, 0x80B7, 0x80E9, 0x43ED, 0x810C, 0x732A, 0x810E, 0x8112,
- 0x7560, 0x8114, 0x4401, 0x3B39, 0x8156, 0x8159, 0x815A,
- /* Big5-HKSCS 0x99A1 .. 0x99FE */
- 0x4413, 0x583A, 0x817C, 0x8184, 0x4425, 0x8193, 0x442D,
- 0x81A5, 0x57EF, 0x81C1, 0x81E4, 0x8254, 0x448F, 0x82A6, 0x8276,
- 0x82CA, 0x82D8, 0x82FF, 0x44B0, 0x8357, 0x9669, 0x698A, 0x8405,
- 0x70F5, 0x8464, 0x60E3, 0x8488, 0x4504, 0x84BE, 0x84E1, 0x84F8,
- 0x8510, 0x8538, 0x8552, 0x453B, 0x856F, 0x8570, 0x85E0, 0x4577,
- 0x8672, 0x8692, 0x86B2, 0x86EF, 0x9645, 0x878B, 0x4606, 0x4617,
- 0x88AE, 0x88FF, 0x8924, 0x8947, 0x8991, 0xEA43, 0x8A29, 0x8A38,
- 0x8A94, 0x8AB4, 0x8C51, 0x8CD4, 0x8CF2, 0x8D1C, 0x4798, 0x585F,
- 0x8DC3, 0x47ED, 0x4EEE, 0x8E3A, 0x55D8, 0x5754, 0x8E71, 0x55F5,
- 0x8EB0, 0x4837, 0x8ECE, 0x8EE2, 0x8EE4, 0x8EED, 0x8EF2, 0x8FB7,
- 0x8FC1, 0x8FCA, 0x8FCC, 0x9033, 0x99C4, 0x48AD, 0x98E0, 0x9213,
- 0x491E, 0x9228, 0x9258, 0x926B, 0x92B1, 0x92AE, 0x92BF,
- /* Big5-HKSCS 0x9A40 .. 0x9A7E */
- 0x92E3, 0x92EB, 0x92F3, 0x92F4, 0x92FD, 0x9343, 0x9384, 0x93AD,
- 0x4945, 0x4951, 0x9EBF, 0x9417, 0x5301, 0x941D, 0x942D, 0x943E,
- 0x496A, 0x9454, 0x9479, 0x952D, 0x95A2, 0x49A7, 0x95F4, 0x9633,
- 0x49E5, 0x67A0, 0x4A24, 0x9740, 0x4A35, 0x97B2, 0x97C2, 0x5654,
- 0x4AE4, 0x60E8, 0x98B9, 0x4B19, 0x98F1, 0x5844, 0x990E, 0x9919,
- 0x51B4, 0x991C, 0x9937, 0x9942, 0x995D, 0x9962, 0x4B70, 0x99C5,
- 0x4B9D, 0x9A3C, 0x9B0F, 0x7A83, 0x9B69, 0x9B81, 0x9BDD, 0x9BF1,
- 0x9BF4, 0x4C6D, 0x9C20, 0x376F, 0xEAA9, 0x9D49, 0x9C3A,
- /* Big5-HKSCS 0x9AA1 .. 0x9AFE */
- 0x9EFE, 0x5650, 0x9D93, 0x9DBD, 0x9DC0, 0x9DFC, 0x94F6,
- 0x8FB6, 0x9E7B, 0x9EAC, 0x9EB1, 0x9EBD, 0x9EC6, 0x94DC, 0x9EE2,
- 0x9EF1, 0x9EF8, 0x7AC8, 0x9F44, 0xEABF, 0xEAC0, 0xEAC1, 0x691A,
- 0x94C3, 0x59AC, 0xEAC5, 0x5840, 0x94C1, 0x37B9, 0xEAC9, 0xEACA,
- 0xEACB, 0xEACC, 0x5757, 0x7173, 0xEACF, 0xEAD0, 0xEAD1, 0x546A,
- 0xEAD3, 0xEAD4, 0x549E, 0xEAD6, 0xEAD7, 0xEAD8, 0xEAD9, 0xEADA,
- 0x60E7, 0xEADC, 0x567A, 0xEADE, 0xEADF, 0xEAE0, 0xEAE1, 0xEAE2,
- 0xEAE3, 0x6955, 0x9C2F, 0x87A5, 0xEAE7, 0xEAE8, 0xEAE9, 0xEAEA,
- 0xEAEB, 0xEAEC, 0x5C20, 0xEAEE, 0x5E0B, 0xEAF0, 0xEAF1, 0xEAF2,
- 0x671E, 0xEAF4, 0xEAF5, 0xEAF6, 0x3647, 0xEAF8, 0xEAF9, 0xEAFA,
- 0xEAFB, 0x5364, 0x84AD, 0xEAFE, 0xEAFF, 0xEB00, 0x8B81, 0xEB02,
- 0xEB03, 0xEB04, 0xEB05, 0x4E78, 0x70BB, 0xEB08, 0xEB09,
- /* Big5-HKSCS 0x9B40 .. 0x9B7E */
- 0xEB0A, 0xEB0B, 0xEB0C, 0xEB0D, 0xEB0E, 0xEB0F, 0x62C3, 0xEB11,
- 0xEB12, 0x7198, 0x6855, 0xEB15, 0x69E9, 0x36C8, 0xEB18, 0xEB19,
- 0xEB1A, 0xEB1B, 0xEB1C, 0xEB1D, 0x82FD, 0xEB1F, 0xEB20, 0xEB21,
- 0x89A5, 0xEB23, 0x8FA0, 0xEB25, 0x97B8, 0xEB27, 0x9847, 0x9ABD,
- 0xEB2A, 0xEB2B, 0xEB2C, 0xEB2D, 0xEB2E, 0xEB2F, 0xEB30, 0xEB31,
- 0xEB32, 0xEB33, 0xEB34, 0xEB35, 0xEB36, 0xEB37, 0xEB38, 0xEB39,
- 0x5FB1, 0x6648, 0x66BF, 0xEB3D, 0xEB3E, 0xEB3F, 0x7201, 0xEB41,
- 0x77D7, 0xEB43, 0xEB44, 0x7E87, 0xEB46, 0x58B5, 0x670E,
- /* Big5-HKSCS 0x9BA1 .. 0x9BFE */
- 0x6918, 0xEB4A, 0xEB4B, 0xEB4C, 0xEB4D, 0xEB4E, 0xEB4F,
- 0xEB50, 0x48D0, 0x4AB8, 0xEB53, 0xEB54, 0xEB55, 0xEB56, 0xEB57,
- 0xEB58, 0xEB59, 0xEB5A, 0xEB5B, 0x51D2, 0xEB5D, 0x599F, 0xEB5F,
- 0x3BBE, 0xEB61, 0xEB62, 0xEB63, 0x5788, 0xEB65, 0x399B, 0xEB67,
- 0xEB68, 0xEB69, 0x3762, 0xEB6B, 0x8B5E, 0xEB6D, 0x99D6, 0xEB6F,
- 0xEB70, 0xEB71, 0x7209, 0xEB73, 0xEB74, 0x5965, 0xEB76, 0xEB77,
- 0xEB78, 0x8EDA, 0xEB7A, 0x528F, 0x573F, 0x7171, 0xEB7E, 0xEB7F,
- 0xEB80, 0xEB81, 0x55BC, 0xEB83, 0xEB84, 0xEB85, 0x91D4, 0x3473,
- 0xEB88, 0xEB89, 0xEB8A, 0x4718, 0xEB8C, 0xEB8D, 0xEB8E, 0xEB8F,
- 0xEB90, 0x5066, 0x34FB, 0xEB93, 0x60DE, 0xEB95, 0x477C, 0xEB97,
- 0xEB98, 0xEB99, 0xEB9A, 0xEB9B, 0x57A1, 0x7151, 0x6FB6, 0xEB9F,
- 0xEBA0, 0x9056, 0xEBA2, 0xEBA3, 0x8B62, 0xEBA5, 0xEBA6,
- /* Big5-HKSCS 0x9C40 .. 0x9C7E */
- 0x5D5B, 0xEBA8, 0x8F36, 0xEBAA, 0xEBAB, 0x8AEA, 0xEBAD, 0xEBAE,
- 0xEBAF, 0xEBB0, 0x4BC0, 0xEBB2, 0xEBB3, 0xEBB4, 0x9465, 0xEBB6,
- 0x6195, 0x5A27, 0xEBB9, 0x4FBB, 0x56B9, 0xEBBC, 0xEBBD, 0x4E6A,
- 0xEBBF, 0x9656, 0x6D8F, 0xEBC2, 0x3618, 0x8977, 0xEBC5, 0xEBC6,
- 0xEBC7, 0xEBC8, 0x71DF, 0xEBCA, 0x7B42, 0xEBCC, 0xEBCD, 0xEBCE,
- 0x9104, 0xEBD0, 0x7A45, 0x9DF0, 0xEBD3, 0x9A26, 0xEBD5, 0x365F,
- 0xEBD7, 0xEBD8, 0x7983, 0xEBDA, 0xEBDB, 0x5D2C, 0xEBDD, 0x83CF,
- 0xEBDF, 0x46D0, 0xEBE1, 0x753B, 0x8865, 0xEBE4, 0x58B6,
- /* Big5-HKSCS 0x9CA1 .. 0x9CFE */
- 0x371C, 0xEBE7, 0xEBE8, 0xEBE9, 0x3C54, 0xEBEB, 0xEBEC,
- 0x9281, 0xEBEE, 0xEBEF, 0x9330, 0xEBF1, 0xEBF2, 0x6C39, 0x949F,
- 0xEBF5, 0xEBF6, 0x8827, 0x88F5, 0xEBF9, 0xEBFA, 0xEBFB, 0x6EB8,
- 0xEBFD, 0xEBFE, 0x39A4, 0x36B9, 0x5C10, 0x79E3, 0x453F, 0x66B6,
- 0xEC05, 0xEC06, 0x8943, 0xEC08, 0xEC09, 0x56D6, 0x40DF, 0xEC0C,
- 0x39A1, 0xEC0E, 0xEC0F, 0xEC10, 0x71AD, 0x8366, 0xEC13, 0xEC14,
- 0x5A67, 0x4CB7, 0xEC17, 0xEC18, 0xEC19, 0xEC1A, 0xEC1B, 0xEC1C,
- 0xEC1D, 0x7B43, 0x797E, 0xEC20, 0x6FB5, 0xEC22, 0x6A03, 0xEC24,
- 0x53A2, 0xEC26, 0x93BF, 0x6836, 0x975D, 0xEC2A, 0xEC2B, 0xEC2C,
- 0xEC2D, 0xEC2E, 0xEC2F, 0x5D85, 0xEC31, 0xEC32, 0x5715, 0x9823,
- 0xEC35, 0x5DAB, 0xEC37, 0x65BE, 0x69D5, 0x53D2, 0xEC3B, 0xEC3C,
- 0x3C11, 0x6736, 0xEC3F, 0xEC40, 0xEC41, 0xEC42, 0xEC43,
- /* Big5-HKSCS 0x9D40 .. 0x9D7E */
- 0xEC44, 0xEC45, 0xEC46, 0xEC47, 0xEC48, 0xEC49, 0x35CA, 0xEC4B,
- 0xEC4C, 0x48FA, 0x63E6, 0xEC4F, 0x7808, 0x9255, 0xEC52, 0x43F2,
- 0xEC54, 0x43DF, 0xEC56, 0xEC57, 0xEC58, 0x59F8, 0xEC5A, 0x8F0B,
- 0xEC5C, 0xEC5D, 0x7B51, 0xEC5F, 0xEC60, 0x3DF7, 0xEC62, 0xEC63,
- 0x8FD0, 0x728F, 0x568B, 0xEC67, 0xEC68, 0xEC69, 0xEC6A, 0xEC6B,
- 0xEC6C, 0xEC6D, 0xEC6E, 0xEC6F, 0xEC70, 0xEC71, 0xEC72, 0xEC73,
- 0x7E9F, 0xEC75, 0xEC76, 0x4CA4, 0x9547, 0xEC79, 0x71A2, 0xEC7B,
- 0x4D91, 0x9012, 0xEC7E, 0x4D9C, 0xEC80, 0x8FBE, 0x55C1,
- /* Big5-HKSCS 0x9DA1 .. 0x9DFE */
- 0x8FBA, 0xEC84, 0x8FB9, 0xEC86, 0x4509, 0x7E7F, 0x6F56,
- 0x6AB1, 0x4EEA, 0x34E4, 0xEC8D, 0xEC8E, 0x373A, 0x8E80, 0xEC91,
- 0xEC92, 0xEC93, 0xEC94, 0xEC95, 0xEC96, 0x3DEB, 0xEC98, 0xEC99,
- 0xEC9A, 0xEC9B, 0x4E9A, 0xEC9D, 0xEC9E, 0x56BF, 0xECA0, 0x8E0E,
- 0x5B6D, 0xECA3, 0xECA4, 0x63DE, 0x62D0, 0xECA7, 0xECA8, 0x6530,
- 0x562D, 0xECAB, 0x541A, 0xECAD, 0x3DC6, 0xECAF, 0x4C7D, 0x5622,
- 0x561E, 0x7F49, 0xECB4, 0x5975, 0xECB6, 0x8770, 0x4E1C, 0xECB9,
- 0xECBA, 0xECBB, 0x8117, 0x9D5E, 0x8D18, 0x763B, 0x9C45, 0x764E,
- 0x77B9, 0x9345, 0x5432, 0x8148, 0x82F7, 0x5625, 0x8132, 0x8418,
- 0x80BD, 0x55EA, 0x7962, 0x5643, 0x5416, 0xECCF, 0x35CE, 0x5605,
- 0x55F1, 0x66F1, 0xECD4, 0x362D, 0x7534, 0x55F0, 0x55BA, 0x5497,
- 0x5572, 0xECDB, 0xECDC, 0x5ED0, 0xECDE, 0xECDF, 0xECE0,
- /* Big5-HKSCS 0x9E40 .. 0x9E7E */
- 0xECE1, 0x9EAB, 0x7D5A, 0x55DE, 0xECE5, 0x629D, 0x976D, 0x5494,
- 0x8CCD, 0x71F6, 0x9176, 0x63FC, 0x63B9, 0x63FE, 0x5569, 0xECF0,
- 0x9C72, 0xECF2, 0x519A, 0x34DF, 0xECF5, 0x51A7, 0x544D, 0x551E,
- 0x5513, 0x7666, 0x8E2D, 0xECFC, 0x75B1, 0x80B6, 0x8804, 0x8786,
- 0x88C7, 0x81B6, 0x841C, 0xED04, 0x44EC, 0x7304, 0xED07, 0x5B90,
- 0x830B, 0xED0A, 0x567B, 0xED0C, 0xED0D, 0xED0E, 0xED0F, 0xED10,
- 0xED11, 0x9170, 0xED13, 0x9208, 0xED15, 0xED16, 0xED17, 0xED18,
- 0x7266, 0xED1A, 0x474E, 0xED1C, 0xED1D, 0xED1E, 0x40FA,
- /* Big5-HKSCS 0x9EA1 .. 0x9EFE */
- 0x9C5D, 0x651F, 0xED22, 0x48F3, 0xED24, 0xED25, 0xED26,
- 0xED27, 0x6062, 0xED29, 0xED2A, 0xED2B, 0xED2C, 0xED2D, 0x71A3,
- 0x7E8E, 0x9D50, 0x4E1A, 0x4E04, 0x3577, 0x5B0D, 0x6CB2, 0x5367,
- 0x36AC, 0x39DC, 0x537D, 0x36A5, 0xED3B, 0x589A, 0xED3D, 0x822D,
- 0x544B, 0x57AA, 0xED41, 0xED42, 0xED43, 0x3A52, 0xED45, 0x7374,
- 0xED47, 0x4D09, 0x9BED, 0xED4A, 0xED4B, 0x4C5B, 0xED4D, 0xED4E,
- 0xED4F, 0x845C, 0xED51, 0xED52, 0xED53, 0xED54, 0x632E, 0x7D25,
- 0xED57, 0xED58, 0x3A2A, 0x9008, 0x52CC, 0x3E74, 0x367A, 0x45E9,
- 0xED5F, 0x7640, 0x5AF0, 0xED62, 0x787A, 0x47B6, 0x58A7, 0x40BF,
- 0x567C, 0x9B8B, 0x5D74, 0x7654, 0xED6B, 0x9E85, 0x4CE1, 0x75F9,
- 0x37FB, 0x6119, 0xED71, 0xED72, 0xED73, 0x565D, 0xED75, 0x57A7,
- 0xED77, 0xED78, 0x5234, 0xED7A, 0x35AD, 0x6C4A, 0x9D7C,
- /* Big5-HKSCS 0x9F40 .. 0x9F7E */
- 0x7C56, 0x9B39, 0x57DE, 0xED81, 0x5C53, 0x64D3, 0xED84, 0xED85,
- 0xED86, 0x86AD, 0xED88, 0xED89, 0xED8A, 0xED8B, 0xED8C, 0x51FE,
- 0xED8E, 0x5D8E, 0x9703, 0xED91, 0x9E81, 0x904C, 0x7B1F, 0x9B02,
- 0x5CD1, 0x7BA3, 0x6268, 0x6335, 0x9AFF, 0x7BCF, 0x9B2A, 0x7C7E,
- 0x9B2E, 0x7C42, 0x7C86, 0x9C15, 0x7BFC, 0x9B09, 0x9F17, 0x9C1B,
- 0xEDA6, 0x9F5A, 0x5573, 0x5BC3, 0x4FFD, 0x9E98, 0x4FF2, 0x5260,
- 0x3E06, 0x52D1, 0x5767, 0x5056, 0x59B7, 0x5E12, 0x97C8, 0x9DAB,
- 0x8F5C, 0x5469, 0x97B4, 0x9940, 0x97BA, 0x532C, 0x6130,
- /* Big5-HKSCS 0x9FA1 .. 0x9FFE */
- 0x692C, 0x53DA, 0x9C0A, 0x9D02, 0x4C3B, 0x9641, 0x6980,
- 0x50A6, 0x7546, 0xEDC6, 0x99DA, 0x5273, 0xEDC9, 0x9159, 0x9681,
- 0x915C, 0xEDCD, 0x9151, 0xEDCF, 0x637F, 0xEDD1, 0x6ACA, 0x5611,
- 0x918E, 0x757A, 0x6285, 0xEDD7, 0x734F, 0x7C70, 0xEDDA, 0xEDDB,
- 0xEDDC, 0xEDDD, 0x76D6, 0x9B9D, 0x4E2A, 0xEDE1, 0x83BE, 0x8842,
- 0xEDE4, 0x5C4A, 0x69C0, 0x50ED, 0x577A, 0x521F, 0x5DF5, 0x4ECE,
- 0x6C31, 0xEDED, 0x4F39, 0x549C, 0x54DA, 0x529A, 0x8D82, 0x35FE,
- 0x5F0C, 0x35F3, 0xEDF6, 0x6B52, 0x917C, 0x9FA5, 0x9B97, 0x982E,
- 0x98B4, 0x9ABA, 0x9EA8, 0x9E84, 0x717A, 0x7B14, 0xEE02, 0x6BFA,
- 0x8818, 0x7F78, 0xEE06, 0x5620, 0xEE08, 0x8E77, 0x9F53, 0xEE0B,
- 0x8DD4, 0x8E4F, 0x9E1C, 0x8E01, 0x6282, 0xEE11, 0x8E28, 0x8E75,
- 0x7AD3, 0xEE15, 0x7A3E, 0x78D8, 0x6CEA, 0x8A67, 0x7607,
- /* Big5-HKSCS 0xA040 .. 0xA07E */
- 0xEE1B, 0x9F26, 0x6CCE, 0x87D6, 0x75C3, 0xEE20, 0x7853, 0xEE22,
- 0x8D0C, 0x72E2, 0x7371, 0x8B2D, 0x7302, 0x74F1, 0x8CEB, 0xEE2A,
- 0x862F, 0x5FBA, 0x88A0, 0x44B7, 0xEE2F, 0xEE30, 0xEE31, 0xEE32,
- 0x8A7E, 0xEE34, 0xEE35, 0x60FD, 0x7667, 0x9AD7, 0x9D44, 0x936E,
- 0x9B8F, 0x87F5, 0xEE3D, 0x880F, 0x8CF7, 0x732C, 0x9721, 0x9BB0,
- 0x35D6, 0x72B2, 0x4C07, 0x7C51, 0x994A, 0xEE48, 0x6159, 0x4C04,
- 0x9E96, 0x617D, 0xEE4D, 0x575F, 0x616F, 0x62A6, 0x6239, 0x62CE,
- 0x3A5C, 0x61E2, 0x53AA, 0xEE56, 0x6364, 0x6802, 0x35D2,
- /* Big5-HKSCS 0xA0A1 .. 0xA0FE */
- 0x5D57, 0xEE5B, 0x8FDA, 0xEE5D, 0xEE5E, 0x50D9, 0xEE60,
- 0x7906, 0x5332, 0x9638, 0xEE64, 0x4065, 0xEE66, 0x77FE, 0xEE68,
- 0x7CC2, 0xEE6A, 0x7CDA, 0x7A2D, 0x8066, 0x8063, 0x7D4D, 0x7505,
- 0x74F2, 0x8994, 0x821A, 0x670C, 0x8062, 0xEE76, 0x805B, 0x74F0,
- 0x8103, 0x7724, 0x8989, 0xEE7C, 0x7553, 0xEE7E, 0x87A9, 0x87CE,
- 0x81C8, 0x878C, 0x8A49, 0x8CAD, 0x8B43, 0x772B, 0x74F8, 0x84DA,
- 0x3635, 0x69B2, 0x8DA6, 0xEE8C, 0x89A9, 0x7468, 0x6DB9, 0x87C1,
- 0xEE91, 0x74E7, 0x3DDB, 0x7176, 0x60A4, 0x619C, 0x3CD1, 0x7162,
- 0x6077, 0xEE9A, 0x7F71, 0xEE9C, 0x7250, 0x60E9, 0x4B7E, 0x5220,
- 0x3C18, 0xEEA2, 0xEEA3, 0xEEA4, 0xEEA5, 0xEEA6, 0xEEA7, 0xEEA8,
- 0xEEA9, 0xEEAA, 0x5CC1, 0xEEAC, 0xEEAD, 0xEEAE, 0xEEAF, 0xEEB0,
- 0xEEB1, 0x4562, 0x5B1F, 0xEEB4, 0x9F50, 0x9EA6, 0xEEB7,
- /* Big5-HKSCS 0xA140 .. 0xA17E */
- 0x3000, 0xFF0C, 0x3001, 0x3002, 0xFF0E, 0x2027, 0xFF1B, 0xFF1A,
- 0xFF1F, 0xFF01, 0xFE30, 0x2026, 0x2025, 0xFE50, 0xFE51, 0xFE52,
- 0x00B7, 0xFE54, 0xFE55, 0xFE56, 0xFE57, 0xFF5C, 0x2013, 0xFE31,
- 0x2014, 0xFE33, 0x2574, 0xFE34, 0xFE4F, 0xFF08, 0xFF09, 0xFE35,
- 0xFE36, 0xFF5B, 0xFF5D, 0xFE37, 0xFE38, 0x3014, 0x3015, 0xFE39,
- 0xFE3A, 0x3010, 0x3011, 0xFE3B, 0xFE3C, 0x300A, 0x300B, 0xFE3D,
- 0xFE3E, 0x3008, 0x3009, 0xFE3F, 0xFE40, 0x300C, 0x300D, 0xFE41,
- 0xFE42, 0x300E, 0x300F, 0xFE43, 0xFE44, 0xFE59, 0xFE5A,
- /* Big5-HKSCS 0xA1A1 .. 0xA1FE */
- 0xFE5B, 0xFE5C, 0xFE5D, 0xFE5E, 0x2018, 0x2019, 0x201C,
- 0x201D, 0x301D, 0x301E, 0x2035, 0x2032, 0xFF03, 0xFF06, 0xFF0A,
- 0x203B, 0x00A7, 0x3003, 0x25CB, 0x25CF, 0x25B3, 0x25B2, 0x25CE,
- 0x2606, 0x2605, 0x25C7, 0x25C6, 0x25A1, 0x25A0, 0x25BD, 0x25BC,
- 0x32A3, 0x2105, 0x00AF, 0xFFE3, 0xFF3F, 0x02CD, 0xFE49, 0xFE4A,
- 0xFE4D, 0xFE4E, 0xFE4B, 0xFE4C, 0xFE5F, 0xFE60, 0xFE61, 0xFF0B,
- 0xFF0D, 0x00D7, 0x00F7, 0x00B1, 0x221A, 0xFF1C, 0xFF1E, 0xFF1D,
- 0x2266, 0x2267, 0x2260, 0x221E, 0x2252, 0x2261, 0xFE62, 0xFE63,
- 0xFE64, 0xFE65, 0xFE66, 0xFF5E, 0x2229, 0x222A, 0x22A5, 0x2220,
- 0x221F, 0x22BF, 0x33D2, 0x33D1, 0x222B, 0x222E, 0x2235, 0x2234,
- 0x2640, 0x2642, 0x2295, 0x2299, 0x2191, 0x2193, 0x2190, 0x2192,
- 0x2196, 0x2197, 0x2199, 0x2198, 0x2225, 0x2223, 0xFF0F,
- /* Big5-HKSCS 0xA240 .. 0xA27E */
- 0xFF3C, 0x2215, 0xFE68, 0xFF04, 0xFFE5, 0x3012, 0xFFE0, 0xFFE1,
- 0xFF05, 0xFF20, 0x2103, 0x2109, 0xFE69, 0xFE6A, 0xFE6B, 0x33D5,
- 0x339C, 0x339D, 0x339E, 0x33CE, 0x33A1, 0x338E, 0x338F, 0x33C4,
- 0x00B0, 0x5159, 0x515B, 0x515E, 0x515D, 0x5161, 0x5163, 0x55E7,
- 0x74E9, 0x7CCE, 0x2581, 0x2582, 0x2583, 0x2584, 0x2585, 0x2586,
- 0x2587, 0x2588, 0x258F, 0x258E, 0x258D, 0x258C, 0x258B, 0x258A,
- 0x2589, 0x253C, 0x2534, 0x252C, 0x2524, 0x251C, 0x2594, 0x2500,
- 0x2502, 0x2595, 0x250C, 0x2510, 0x2514, 0x2518, 0x256D,
- /* Big5-HKSCS 0xA2A1 .. 0xA2FE */
- 0x256E, 0x2570, 0x256F, 0x2550, 0x255E, 0x256A, 0x2561,
- 0x25E2, 0x25E3, 0x25E5, 0x25E4, 0x2571, 0x2572, 0x2573, 0xFF10,
- 0xFF11, 0xFF12, 0xFF13, 0xFF14, 0xFF15, 0xFF16, 0xFF17, 0xFF18,
- 0xFF19, 0x2160, 0x2161, 0x2162, 0x2163, 0x2164, 0x2165, 0x2166,
- 0x2167, 0x2168, 0x2169, 0x3021, 0x3022, 0x3023, 0x3024, 0x3025,
- 0x3026, 0x3027, 0x3028, 0x3029, 0x5341, 0x5344, 0x5345, 0xFF21,
- 0xFF22, 0xFF23, 0xFF24, 0xFF25, 0xFF26, 0xFF27, 0xFF28, 0xFF29,
- 0xFF2A, 0xFF2B, 0xFF2C, 0xFF2D, 0xFF2E, 0xFF2F, 0xFF30, 0xFF31,
- 0xFF32, 0xFF33, 0xFF34, 0xFF35, 0xFF36, 0xFF37, 0xFF38, 0xFF39,
- 0xFF3A, 0xFF41, 0xFF42, 0xFF43, 0xFF44, 0xFF45, 0xFF46, 0xFF47,
- 0xFF48, 0xFF49, 0xFF4A, 0xFF4B, 0xFF4C, 0xFF4D, 0xFF4E, 0xFF4F,
- 0xFF50, 0xFF51, 0xFF52, 0xFF53, 0xFF54, 0xFF55, 0xFF56,
- /* Big5-HKSCS 0xA340 .. 0xA37E */
- 0xFF57, 0xFF58, 0xFF59, 0xFF5A, 0x0391, 0x0392, 0x0393, 0x0394,
- 0x0395, 0x0396, 0x0397, 0x0398, 0x0399, 0x039A, 0x039B, 0x039C,
- 0x039D, 0x039E, 0x039F, 0x03A0, 0x03A1, 0x03A3, 0x03A4, 0x03A5,
- 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03B1, 0x03B2, 0x03B3, 0x03B4,
- 0x03B5, 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC,
- 0x03BD, 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C4, 0x03C5,
- 0x03C6, 0x03C7, 0x03C8, 0x03C9, 0x3105, 0x3106, 0x3107, 0x3108,
- 0x3109, 0x310A, 0x310B, 0x310C, 0x310D, 0x310E, 0x310F,
- /* Big5-HKSCS 0xA3A1 .. 0xA3FE */
- 0x3110, 0x3111, 0x3112, 0x3113, 0x3114, 0x3115, 0x3116,
- 0x3117, 0x3118, 0x3119, 0x311A, 0x311B, 0x311C, 0x311D, 0x311E,
- 0x311F, 0x3120, 0x3121, 0x3122, 0x3123, 0x3124, 0x3125, 0x3126,
- 0x3127, 0x3128, 0x3129, 0x02D9, 0x02C9, 0x02CA, 0x02C7, 0x02CB,
- 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
- 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
- 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
- 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
- 0xFFFD, 0x20AC, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
- 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
- 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
- 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
- /* Big5-HKSCS 0xA440 .. 0xA47E */
- 0x4E00, 0x4E59, 0x4E01, 0x4E03, 0x4E43, 0x4E5D, 0x4E86, 0x4E8C,
- 0x4EBA, 0x513F, 0x5165, 0x516B, 0x51E0, 0x5200, 0x5201, 0x529B,
- 0x5315, 0x5341, 0x535C, 0x53C8, 0x4E09, 0x4E0B, 0x4E08, 0x4E0A,
- 0x4E2B, 0x4E38, 0x51E1, 0x4E45, 0x4E48, 0x4E5F, 0x4E5E, 0x4E8E,
- 0x4EA1, 0x5140, 0x5203, 0x52FA, 0x5343, 0x53C9, 0x53E3, 0x571F,
- 0x58EB, 0x5915, 0x5927, 0x5973, 0x5B50, 0x5B51, 0x5B53, 0x5BF8,
- 0x5C0F, 0x5C22, 0x5C38, 0x5C71, 0x5DDD, 0x5DE5, 0x5DF1, 0x5DF2,
- 0x5DF3, 0x5DFE, 0x5E72, 0x5EFE, 0x5F0B, 0x5F13, 0x624D,
- /* Big5-HKSCS 0xA4A1 .. 0xA4FE */
- 0x4E11, 0x4E10, 0x4E0D, 0x4E2D, 0x4E30, 0x4E39, 0x4E4B,
- 0x5C39, 0x4E88, 0x4E91, 0x4E95, 0x4E92, 0x4E94, 0x4EA2, 0x4EC1,
- 0x4EC0, 0x4EC3, 0x4EC6, 0x4EC7, 0x4ECD, 0x4ECA, 0x4ECB, 0x4EC4,
- 0x5143, 0x5141, 0x5167, 0x516D, 0x516E, 0x516C, 0x5197, 0x51F6,
- 0x5206, 0x5207, 0x5208, 0x52FB, 0x52FE, 0x52FF, 0x5316, 0x5339,
- 0x5348, 0x5347, 0x5345, 0x535E, 0x5384, 0x53CB, 0x53CA, 0x53CD,
- 0x58EC, 0x5929, 0x592B, 0x592A, 0x592D, 0x5B54, 0x5C11, 0x5C24,
- 0x5C3A, 0x5C6F, 0x5DF4, 0x5E7B, 0x5EFF, 0x5F14, 0x5F15, 0x5FC3,
- 0x6208, 0x6236, 0x624B, 0x624E, 0x652F, 0x6587, 0x6597, 0x65A4,
- 0x65B9, 0x65E5, 0x66F0, 0x6708, 0x6728, 0x6B20, 0x6B62, 0x6B79,
- 0x6BCB, 0x6BD4, 0x6BDB, 0x6C0F, 0x6C34, 0x706B, 0x722A, 0x7236,
- 0x723B, 0x7247, 0x7259, 0x725B, 0x72AC, 0x738B, 0x4E19,
- /* Big5-HKSCS 0xA540 .. 0xA57E */
- 0x4E16, 0x4E15, 0x4E14, 0x4E18, 0x4E3B, 0x4E4D, 0x4E4F, 0x4E4E,
- 0x4EE5, 0x4ED8, 0x4ED4, 0x4ED5, 0x4ED6, 0x4ED7, 0x4EE3, 0x4EE4,
- 0x4ED9, 0x4EDE, 0x5145, 0x5144, 0x5189, 0x518A, 0x51AC, 0x51F9,
- 0x51FA, 0x51F8, 0x520A, 0x52A0, 0x529F, 0x5305, 0x5306, 0x5317,
- 0x531D, 0x4EDF, 0x534A, 0x5349, 0x5361, 0x5360, 0x536F, 0x536E,
- 0x53BB, 0x53EF, 0x53E4, 0x53F3, 0x53EC, 0x53EE, 0x53E9, 0x53E8,
- 0x53FC, 0x53F8, 0x53F5, 0x53EB, 0x53E6, 0x53EA, 0x53F2, 0x53F1,
- 0x53F0, 0x53E5, 0x53ED, 0x53FB, 0x56DB, 0x56DA, 0x5916,
- /* Big5-HKSCS 0xA5A1 .. 0xA5FE */
- 0x592E, 0x5931, 0x5974, 0x5976, 0x5B55, 0x5B83, 0x5C3C,
- 0x5DE8, 0x5DE7, 0x5DE6, 0x5E02, 0x5E03, 0x5E73, 0x5E7C, 0x5F01,
- 0x5F18, 0x5F17, 0x5FC5, 0x620A, 0x6253, 0x6254, 0x6252, 0x6251,
- 0x65A5, 0x65E6, 0x672E, 0x672C, 0x672A, 0x672B, 0x672D, 0x6B63,
- 0x6BCD, 0x6C11, 0x6C10, 0x6C38, 0x6C41, 0x6C40, 0x6C3E, 0x72AF,
- 0x7384, 0x7389, 0x74DC, 0x74E6, 0x7518, 0x751F, 0x7528, 0x7529,
- 0x7530, 0x7531, 0x7532, 0x7533, 0x758B, 0x767D, 0x76AE, 0x76BF,
- 0x76EE, 0x77DB, 0x77E2, 0x77F3, 0x793A, 0x79BE, 0x7A74, 0x7ACB,
- 0x4E1E, 0x4E1F, 0x4E52, 0x4E53, 0x4E69, 0x4E99, 0x4EA4, 0x4EA6,
- 0x4EA5, 0x4EFF, 0x4F09, 0x4F19, 0x4F0A, 0x4F15, 0x4F0D, 0x4F10,
- 0x4F11, 0x4F0F, 0x4EF2, 0x4EF6, 0x4EFB, 0x4EF0, 0x4EF3, 0x4EFD,
- 0x4F01, 0x4F0B, 0x5149, 0x5147, 0x5146, 0x5148, 0x5168,
- /* Big5-HKSCS 0xA640 .. 0xA67E */
- 0x5171, 0x518D, 0x51B0, 0x5217, 0x5211, 0x5212, 0x520E, 0x5216,
- 0x52A3, 0x5308, 0x5321, 0x5320, 0x5370, 0x5371, 0x5409, 0x540F,
- 0x540C, 0x540A, 0x5410, 0x5401, 0x540B, 0x5404, 0x5411, 0x540D,
- 0x5408, 0x5403, 0x540E, 0x5406, 0x5412, 0x56E0, 0x56DE, 0x56DD,
- 0x5733, 0x5730, 0x5728, 0x572D, 0x572C, 0x572F, 0x5729, 0x5919,
- 0x591A, 0x5937, 0x5938, 0x5984, 0x5978, 0x5983, 0x597D, 0x5979,
- 0x5982, 0x5981, 0x5B57, 0x5B58, 0x5B87, 0x5B88, 0x5B85, 0x5B89,
- 0x5BFA, 0x5C16, 0x5C79, 0x5DDE, 0x5E06, 0x5E76, 0x5E74,
- /* Big5-HKSCS 0xA6A1 .. 0xA6FE */
- 0x5F0F, 0x5F1B, 0x5FD9, 0x5FD6, 0x620E, 0x620C, 0x620D,
- 0x6210, 0x6263, 0x625B, 0x6258, 0x6536, 0x65E9, 0x65E8, 0x65EC,
- 0x65ED, 0x66F2, 0x66F3, 0x6709, 0x673D, 0x6734, 0x6731, 0x6735,
- 0x6B21, 0x6B64, 0x6B7B, 0x6C16, 0x6C5D, 0x6C57, 0x6C59, 0x6C5F,
- 0x6C60, 0x6C50, 0x6C55, 0x6C61, 0x6C5B, 0x6C4D, 0x6C4E, 0x7070,
- 0x725F, 0x725D, 0x767E, 0x7AF9, 0x7C73, 0x7CF8, 0x7F36, 0x7F8A,
- 0x7FBD, 0x8001, 0x8003, 0x800C, 0x8012, 0x8033, 0x807F, 0x8089,
- 0x808B, 0x808C, 0x81E3, 0x81EA, 0x81F3, 0x81FC, 0x820C, 0x821B,
- 0x821F, 0x826E, 0x8272, 0x827E, 0x866B, 0x8840, 0x884C, 0x8863,
- 0x897F, 0x9621, 0x4E32, 0x4EA8, 0x4F4D, 0x4F4F, 0x4F47, 0x4F57,
- 0x4F5E, 0x4F34, 0x4F5B, 0x4F55, 0x4F30, 0x4F50, 0x4F51, 0x4F3D,
- 0x4F3A, 0x4F38, 0x4F43, 0x4F54, 0x4F3C, 0x4F46, 0x4F63,
- /* Big5-HKSCS 0xA740 .. 0xA77E */
- 0x4F5C, 0x4F60, 0x4F2F, 0x4F4E, 0x4F36, 0x4F59, 0x4F5D, 0x4F48,
- 0x4F5A, 0x514C, 0x514B, 0x514D, 0x5175, 0x51B6, 0x51B7, 0x5225,
- 0x5224, 0x5229, 0x522A, 0x5228, 0x52AB, 0x52A9, 0x52AA, 0x52AC,
- 0x5323, 0x5373, 0x5375, 0x541D, 0x542D, 0x541E, 0x543E, 0x5426,
- 0x544E, 0x5427, 0x5446, 0x5443, 0x5433, 0x5448, 0x5442, 0x541B,
- 0x5429, 0x544A, 0x5439, 0x543B, 0x5438, 0x542E, 0x5435, 0x5436,
- 0x5420, 0x543C, 0x5440, 0x5431, 0x542B, 0x541F, 0x542C, 0x56EA,
- 0x56F0, 0x56E4, 0x56EB, 0x574A, 0x5751, 0x5740, 0x574D,
- /* Big5-HKSCS 0xA7A1 .. 0xA7FE */
- 0x5747, 0x574E, 0x573E, 0x5750, 0x574F, 0x573B, 0x58EF,
- 0x593E, 0x599D, 0x5992, 0x59A8, 0x599E, 0x59A3, 0x5999, 0x5996,
- 0x598D, 0x59A4, 0x5993, 0x598A, 0x59A5, 0x5B5D, 0x5B5C, 0x5B5A,
- 0x5B5B, 0x5B8C, 0x5B8B, 0x5B8F, 0x5C2C, 0x5C40, 0x5C41, 0x5C3F,
- 0x5C3E, 0x5C90, 0x5C91, 0x5C94, 0x5C8C, 0x5DEB, 0x5E0C, 0x5E8F,
- 0x5E87, 0x5E8A, 0x5EF7, 0x5F04, 0x5F1F, 0x5F64, 0x5F62, 0x5F77,
- 0x5F79, 0x5FD8, 0x5FCC, 0x5FD7, 0x5FCD, 0x5FF1, 0x5FEB, 0x5FF8,
- 0x5FEA, 0x6212, 0x6211, 0x6284, 0x6297, 0x6296, 0x6280, 0x6276,
- 0x6289, 0x626D, 0x628A, 0x627C, 0x627E, 0x6279, 0x6273, 0x6292,
- 0x626F, 0x6298, 0x626E, 0x6295, 0x6293, 0x6291, 0x6286, 0x6539,
- 0x653B, 0x6538, 0x65F1, 0x66F4, 0x675F, 0x674E, 0x674F, 0x6750,
- 0x6751, 0x675C, 0x6756, 0x675E, 0x6749, 0x6746, 0x6760,
- /* Big5-HKSCS 0xA840 .. 0xA87E */
- 0x6753, 0x6757, 0x6B65, 0x6BCF, 0x6C42, 0x6C5E, 0x6C99, 0x6C81,
- 0x6C88, 0x6C89, 0x6C85, 0x6C9B, 0x6C6A, 0x6C7A, 0x6C90, 0x6C70,
- 0x6C8C, 0x6C68, 0x6C96, 0x6C92, 0x6C7D, 0x6C83, 0x6C72, 0x6C7E,
- 0x6C74, 0x6C86, 0x6C76, 0x6C8D, 0x6C94, 0x6C98, 0x6C82, 0x7076,
- 0x707C, 0x707D, 0x7078, 0x7262, 0x7261, 0x7260, 0x72C4, 0x72C2,
- 0x7396, 0x752C, 0x752B, 0x7537, 0x7538, 0x7682, 0x76EF, 0x77E3,
- 0x79C1, 0x79C0, 0x79BF, 0x7A76, 0x7CFB, 0x7F55, 0x8096, 0x8093,
- 0x809D, 0x8098, 0x809B, 0x809A, 0x80B2, 0x826F, 0x8292,
- /* Big5-HKSCS 0xA8A1 .. 0xA8FE */
- 0x828B, 0x828D, 0x898B, 0x89D2, 0x8A00, 0x8C37, 0x8C46,
- 0x8C55, 0x8C9D, 0x8D64, 0x8D70, 0x8DB3, 0x8EAB, 0x8ECA, 0x8F9B,
- 0x8FB0, 0x8FC2, 0x8FC6, 0x8FC5, 0x8FC4, 0x5DE1, 0x9091, 0x90A2,
- 0x90AA, 0x90A6, 0x90A3, 0x9149, 0x91C6, 0x91CC, 0x9632, 0x962E,
- 0x9631, 0x962A, 0x962C, 0x4E26, 0x4E56, 0x4E73, 0x4E8B, 0x4E9B,
- 0x4E9E, 0x4EAB, 0x4EAC, 0x4F6F, 0x4F9D, 0x4F8D, 0x4F73, 0x4F7F,
- 0x4F6C, 0x4F9B, 0x4F8B, 0x4F86, 0x4F83, 0x4F70, 0x4F75, 0x4F88,
- 0x4F69, 0x4F7B, 0x4F96, 0x4F7E, 0x4F8F, 0x4F91, 0x4F7A, 0x5154,
- 0x5152, 0x5155, 0x5169, 0x5177, 0x5176, 0x5178, 0x51BD, 0x51FD,
- 0x523B, 0x5238, 0x5237, 0x523A, 0x5230, 0x522E, 0x5236, 0x5241,
- 0x52BE, 0x52BB, 0x5352, 0x5354, 0x5353, 0x5351, 0x5366, 0x5377,
- 0x5378, 0x5379, 0x53D6, 0x53D4, 0x53D7, 0x5473, 0x5475,
- /* Big5-HKSCS 0xA940 .. 0xA97E */
- 0x5496, 0x5478, 0x5495, 0x5480, 0x547B, 0x5477, 0x5484, 0x5492,
- 0x5486, 0x547C, 0x5490, 0x5471, 0x5476, 0x548C, 0x549A, 0x5462,
- 0x5468, 0x548B, 0x547D, 0x548E, 0x56FA, 0x5783, 0x5777, 0x576A,
- 0x5769, 0x5761, 0x5766, 0x5764, 0x577C, 0x591C, 0x5949, 0x5947,
- 0x5948, 0x5944, 0x5954, 0x59BE, 0x59BB, 0x59D4, 0x59B9, 0x59AE,
- 0x59D1, 0x59C6, 0x59D0, 0x59CD, 0x59CB, 0x59D3, 0x59CA, 0x59AF,
- 0x59B3, 0x59D2, 0x59C5, 0x5B5F, 0x5B64, 0x5B63, 0x5B97, 0x5B9A,
- 0x5B98, 0x5B9C, 0x5B99, 0x5B9B, 0x5C1A, 0x5C48, 0x5C45,
- /* Big5-HKSCS 0xA9A1 .. 0xA9FE */
- 0x5C46, 0x5CB7, 0x5CA1, 0x5CB8, 0x5CA9, 0x5CAB, 0x5CB1,
- 0x5CB3, 0x5E18, 0x5E1A, 0x5E16, 0x5E15, 0x5E1B, 0x5E11, 0x5E78,
- 0x5E9A, 0x5E97, 0x5E9C, 0x5E95, 0x5E96, 0x5EF6, 0x5F26, 0x5F27,
- 0x5F29, 0x5F80, 0x5F81, 0x5F7F, 0x5F7C, 0x5FDD, 0x5FE0, 0x5FFD,
- 0x5FF5, 0x5FFF, 0x600F, 0x6014, 0x602F, 0x6035, 0x6016, 0x602A,
- 0x6015, 0x6021, 0x6027, 0x6029, 0x602B, 0x601B, 0x6216, 0x6215,
- 0x623F, 0x623E, 0x6240, 0x627F, 0x62C9, 0x62CC, 0x62C4, 0x62BF,
- 0x62C2, 0x62B9, 0x62D2, 0x62DB, 0x62AB, 0x62D3, 0x62D4, 0x62CB,
- 0x62C8, 0x62A8, 0x62BD, 0x62BC, 0x62D0, 0x62D9, 0x62C7, 0x62CD,
- 0x62B5, 0x62DA, 0x62B1, 0x62D8, 0x62D6, 0x62D7, 0x62C6, 0x62AC,
- 0x62CE, 0x653E, 0x65A7, 0x65BC, 0x65FA, 0x6614, 0x6613, 0x660C,
- 0x6606, 0x6602, 0x660E, 0x6600, 0x660F, 0x6615, 0x660A,
- /* Big5-HKSCS 0xAA40 .. 0xAA7E */
- 0x6607, 0x670D, 0x670B, 0x676D, 0x678B, 0x6795, 0x6771, 0x679C,
- 0x6773, 0x6777, 0x6787, 0x679D, 0x6797, 0x676F, 0x6770, 0x677F,
- 0x6789, 0x677E, 0x6790, 0x6775, 0x679A, 0x6793, 0x677C, 0x676A,
- 0x6772, 0x6B23, 0x6B66, 0x6B67, 0x6B7F, 0x6C13, 0x6C1B, 0x6CE3,
- 0x6CE8, 0x6CF3, 0x6CB1, 0x6CCC, 0x6CE5, 0x6CB3, 0x6CBD, 0x6CBE,
- 0x6CBC, 0x6CE2, 0x6CAB, 0x6CD5, 0x6CD3, 0x6CB8, 0x6CC4, 0x6CB9,
- 0x6CC1, 0x6CAE, 0x6CD7, 0x6CC5, 0x6CF1, 0x6CBF, 0x6CBB, 0x6CE1,
- 0x6CDB, 0x6CCA, 0x6CAC, 0x6CEF, 0x6CDC, 0x6CD6, 0x6CE0,
- /* Big5-HKSCS 0xAAA1 .. 0xAAFE */
- 0x7095, 0x708E, 0x7092, 0x708A, 0x7099, 0x722C, 0x722D,
- 0x7238, 0x7248, 0x7267, 0x7269, 0x72C0, 0x72CE, 0x72D9, 0x72D7,
- 0x72D0, 0x73A9, 0x73A8, 0x739F, 0x73AB, 0x73A5, 0x753D, 0x759D,
- 0x7599, 0x759A, 0x7684, 0x76C2, 0x76F2, 0x76F4, 0x77E5, 0x77FD,
- 0x793E, 0x7940, 0x7941, 0x79C9, 0x79C8, 0x7A7A, 0x7A79, 0x7AFA,
- 0x7CFE, 0x7F54, 0x7F8C, 0x7F8B, 0x8005, 0x80BA, 0x80A5, 0x80A2,
- 0x80B1, 0x80A1, 0x80AB, 0x80A9, 0x80B4, 0x80AA, 0x80AF, 0x81E5,
- 0x81FE, 0x820D, 0x82B3, 0x829D, 0x8299, 0x82AD, 0x82BD, 0x829F,
- 0x82B9, 0x82B1, 0x82AC, 0x82A5, 0x82AF, 0x82B8, 0x82A3, 0x82B0,
- 0x82BE, 0x82B7, 0x864E, 0x8671, 0x521D, 0x8868, 0x8ECB, 0x8FCE,
- 0x8FD4, 0x8FD1, 0x90B5, 0x90B8, 0x90B1, 0x90B6, 0x91C7, 0x91D1,
- 0x9577, 0x9580, 0x961C, 0x9640, 0x963F, 0x963B, 0x9644,
- /* Big5-HKSCS 0xAB40 .. 0xAB7E */
- 0x9642, 0x96B9, 0x96E8, 0x9752, 0x975E, 0x4E9F, 0x4EAD, 0x4EAE,
- 0x4FE1, 0x4FB5, 0x4FAF, 0x4FBF, 0x4FE0, 0x4FD1, 0x4FCF, 0x4FDD,
- 0x4FC3, 0x4FB6, 0x4FD8, 0x4FDF, 0x4FCA, 0x4FD7, 0x4FAE, 0x4FD0,
- 0x4FC4, 0x4FC2, 0x4FDA, 0x4FCE, 0x4FDE, 0x4FB7, 0x5157, 0x5192,
- 0x5191, 0x51A0, 0x524E, 0x5243, 0x524A, 0x524D, 0x524C, 0x524B,
- 0x5247, 0x52C7, 0x52C9, 0x52C3, 0x52C1, 0x530D, 0x5357, 0x537B,
- 0x539A, 0x53DB, 0x54AC, 0x54C0, 0x54A8, 0x54CE, 0x54C9, 0x54B8,
- 0x54A6, 0x54B3, 0x54C7, 0x54C2, 0x54BD, 0x54AA, 0x54C1,
- /* Big5-HKSCS 0xABA1 .. 0xABFE */
- 0x54C4, 0x54C8, 0x54AF, 0x54AB, 0x54B1, 0x54BB, 0x54A9,
- 0x54A7, 0x54BF, 0x56FF, 0x5782, 0x578B, 0x57A0, 0x57A3, 0x57A2,
- 0x57CE, 0x57AE, 0x5793, 0x5955, 0x5951, 0x594F, 0x594E, 0x5950,
- 0x59DC, 0x59D8, 0x59FF, 0x59E3, 0x59E8, 0x5A03, 0x59E5, 0x59EA,
- 0x59DA, 0x59E6, 0x5A01, 0x59FB, 0x5B69, 0x5BA3, 0x5BA6, 0x5BA4,
- 0x5BA2, 0x5BA5, 0x5C01, 0x5C4E, 0x5C4F, 0x5C4D, 0x5C4B, 0x5CD9,
- 0x5CD2, 0x5DF7, 0x5E1D, 0x5E25, 0x5E1F, 0x5E7D, 0x5EA0, 0x5EA6,
- 0x5EFA, 0x5F08, 0x5F2D, 0x5F65, 0x5F88, 0x5F85, 0x5F8A, 0x5F8B,
- 0x5F87, 0x5F8C, 0x5F89, 0x6012, 0x601D, 0x6020, 0x6025, 0x600E,
- 0x6028, 0x604D, 0x6070, 0x6068, 0x6062, 0x6046, 0x6043, 0x606C,
- 0x606B, 0x606A, 0x6064, 0x6241, 0x62DC, 0x6316, 0x6309, 0x62FC,
- 0x62ED, 0x6301, 0x62EE, 0x62FD, 0x6307, 0x62F1, 0x62F7,
- /* Big5-HKSCS 0xAC40 .. 0xAC7E */
- 0x62EF, 0x62EC, 0x62FE, 0x62F4, 0x6311, 0x6302, 0x653F, 0x6545,
- 0x65AB, 0x65BD, 0x65E2, 0x6625, 0x662D, 0x6620, 0x6627, 0x662F,
- 0x661F, 0x6628, 0x6631, 0x6624, 0x66F7, 0x67FF, 0x67D3, 0x67F1,
- 0x67D4, 0x67D0, 0x67EC, 0x67B6, 0x67AF, 0x67F5, 0x67E9, 0x67EF,
- 0x67C4, 0x67D1, 0x67B4, 0x67DA, 0x67E5, 0x67B8, 0x67CF, 0x67DE,
- 0x67F3, 0x67B0, 0x67D9, 0x67E2, 0x67DD, 0x67D2, 0x6B6A, 0x6B83,
- 0x6B86, 0x6BB5, 0x6BD2, 0x6BD7, 0x6C1F, 0x6CC9, 0x6D0B, 0x6D32,
- 0x6D2A, 0x6D41, 0x6D25, 0x6D0C, 0x6D31, 0x6D1E, 0x6D17,
- /* Big5-HKSCS 0xACA1 .. 0xACFE */
- 0x6D3B, 0x6D3D, 0x6D3E, 0x6D36, 0x6D1B, 0x6CF5, 0x6D39,
- 0x6D27, 0x6D38, 0x6D29, 0x6D2E, 0x6D35, 0x6D0E, 0x6D2B, 0x70AB,
- 0x70BA, 0x70B3, 0x70AC, 0x70AF, 0x70AD, 0x70B8, 0x70AE, 0x70A4,
- 0x7230, 0x7272, 0x726F, 0x7274, 0x72E9, 0x72E0, 0x72E1, 0x73B7,
- 0x73CA, 0x73BB, 0x73B2, 0x73CD, 0x73C0, 0x73B3, 0x751A, 0x752D,
- 0x754F, 0x754C, 0x754E, 0x754B, 0x75AB, 0x75A4, 0x75A5, 0x75A2,
- 0x75A3, 0x7678, 0x7686, 0x7687, 0x7688, 0x76C8, 0x76C6, 0x76C3,
- 0x76C5, 0x7701, 0x76F9, 0x76F8, 0x7709, 0x770B, 0x76FE, 0x76FC,
- 0x7707, 0x77DC, 0x7802, 0x7814, 0x780C, 0x780D, 0x7946, 0x7949,
- 0x7948, 0x7947, 0x79B9, 0x79BA, 0x79D1, 0x79D2, 0x79CB, 0x7A7F,
- 0x7A81, 0x7AFF, 0x7AFD, 0x7C7D, 0x7D02, 0x7D05, 0x7D00, 0x7D09,
- 0x7D07, 0x7D04, 0x7D06, 0x7F38, 0x7F8E, 0x7FBF, 0x8004,
- /* Big5-HKSCS 0xAD40 .. 0xAD7E */
- 0x8010, 0x800D, 0x8011, 0x8036, 0x80D6, 0x80E5, 0x80DA, 0x80C3,
- 0x80C4, 0x80CC, 0x80E1, 0x80DB, 0x80CE, 0x80DE, 0x80E4, 0x80DD,
- 0x81F4, 0x8222, 0x82E7, 0x8303, 0x8305, 0x82E3, 0x82DB, 0x82E6,
- 0x8304, 0x82E5, 0x8302, 0x8309, 0x82D2, 0x82D7, 0x82F1, 0x8301,
- 0x82DC, 0x82D4, 0x82D1, 0x82DE, 0x82D3, 0x82DF, 0x82EF, 0x8306,
- 0x8650, 0x8679, 0x867B, 0x867A, 0x884D, 0x886B, 0x8981, 0x89D4,
- 0x8A08, 0x8A02, 0x8A03, 0x8C9E, 0x8CA0, 0x8D74, 0x8D73, 0x8DB4,
- 0x8ECD, 0x8ECC, 0x8FF0, 0x8FE6, 0x8FE2, 0x8FEA, 0x8FE5,
- /* Big5-HKSCS 0xADA1 .. 0xADFE */
- 0x8FED, 0x8FEB, 0x8FE4, 0x8FE8, 0x90CA, 0x90CE, 0x90C1,
- 0x90C3, 0x914B, 0x914A, 0x91CD, 0x9582, 0x9650, 0x964B, 0x964C,
- 0x964D, 0x9762, 0x9769, 0x97CB, 0x97ED, 0x97F3, 0x9801, 0x98A8,
- 0x98DB, 0x98DF, 0x9996, 0x9999, 0x4E58, 0x4EB3, 0x500C, 0x500D,
- 0x5023, 0x4FEF, 0x5026, 0x5025, 0x4FF8, 0x5029, 0x5016, 0x5006,
- 0x503C, 0x501F, 0x501A, 0x5012, 0x5011, 0x4FFA, 0x5000, 0x5014,
- 0x5028, 0x4FF1, 0x5021, 0x500B, 0x5019, 0x5018, 0x4FF3, 0x4FEE,
- 0x502D, 0x502A, 0x4FFE, 0x502B, 0x5009, 0x517C, 0x51A4, 0x51A5,
- 0x51A2, 0x51CD, 0x51CC, 0x51C6, 0x51CB, 0x5256, 0x525C, 0x5254,
- 0x525B, 0x525D, 0x532A, 0x537F, 0x539F, 0x539D, 0x53DF, 0x54E8,
- 0x5510, 0x5501, 0x5537, 0x54FC, 0x54E5, 0x54F2, 0x5506, 0x54FA,
- 0x5514, 0x54E9, 0x54ED, 0x54E1, 0x5509, 0x54EE, 0x54EA,
- /* Big5-HKSCS 0xAE40 .. 0xAE7E */
- 0x54E6, 0x5527, 0x5507, 0x54FD, 0x550F, 0x5703, 0x5704, 0x57C2,
- 0x57D4, 0x57CB, 0x57C3, 0x5809, 0x590F, 0x5957, 0x5958, 0x595A,
- 0x5A11, 0x5A18, 0x5A1C, 0x5A1F, 0x5A1B, 0x5A13, 0x59EC, 0x5A20,
- 0x5A23, 0x5A29, 0x5A25, 0x5A0C, 0x5A09, 0x5B6B, 0x5C58, 0x5BB0,
- 0x5BB3, 0x5BB6, 0x5BB4, 0x5BAE, 0x5BB5, 0x5BB9, 0x5BB8, 0x5C04,
- 0x5C51, 0x5C55, 0x5C50, 0x5CED, 0x5CFD, 0x5CFB, 0x5CEA, 0x5CE8,
- 0x5CF0, 0x5CF6, 0x5D01, 0x5CF4, 0x5DEE, 0x5E2D, 0x5E2B, 0x5EAB,
- 0x5EAD, 0x5EA7, 0x5F31, 0x5F92, 0x5F91, 0x5F90, 0x6059,
- /* Big5-HKSCS 0xAEA1 .. 0xAEFE */
- 0x6063, 0x6065, 0x6050, 0x6055, 0x606D, 0x6069, 0x606F,
- 0x6084, 0x609F, 0x609A, 0x608D, 0x6094, 0x608C, 0x6085, 0x6096,
- 0x6247, 0x62F3, 0x6308, 0x62FF, 0x634E, 0x633E, 0x632F, 0x6355,
- 0x6342, 0x6346, 0x634F, 0x6349, 0x633A, 0x6350, 0x633D, 0x632A,
- 0x632B, 0x6328, 0x634D, 0x634C, 0x6548, 0x6549, 0x6599, 0x65C1,
- 0x65C5, 0x6642, 0x6649, 0x664F, 0x6643, 0x6652, 0x664C, 0x6645,
- 0x6641, 0x66F8, 0x6714, 0x6715, 0x6717, 0x6821, 0x6838, 0x6848,
- 0x6846, 0x6853, 0x6839, 0x6842, 0x6854, 0x6829, 0x68B3, 0x6817,
- 0x684C, 0x6851, 0x683D, 0x67F4, 0x6850, 0x6840, 0x683C, 0x6843,
- 0x682A, 0x6845, 0x6813, 0x6818, 0x6841, 0x6B8A, 0x6B89, 0x6BB7,
- 0x6C23, 0x6C27, 0x6C28, 0x6C26, 0x6C24, 0x6CF0, 0x6D6A, 0x6D95,
- 0x6D88, 0x6D87, 0x6D66, 0x6D78, 0x6D77, 0x6D59, 0x6D93,
- /* Big5-HKSCS 0xAF40 .. 0xAF7E */
- 0x6D6C, 0x6D89, 0x6D6E, 0x6D5A, 0x6D74, 0x6D69, 0x6D8C, 0x6D8A,
- 0x6D79, 0x6D85, 0x6D65, 0x6D94, 0x70CA, 0x70D8, 0x70E4, 0x70D9,
- 0x70C8, 0x70CF, 0x7239, 0x7279, 0x72FC, 0x72F9, 0x72FD, 0x72F8,
- 0x72F7, 0x7386, 0x73ED, 0x7409, 0x73EE, 0x73E0, 0x73EA, 0x73DE,
- 0x7554, 0x755D, 0x755C, 0x755A, 0x7559, 0x75BE, 0x75C5, 0x75C7,
- 0x75B2, 0x75B3, 0x75BD, 0x75BC, 0x75B9, 0x75C2, 0x75B8, 0x768B,
- 0x76B0, 0x76CA, 0x76CD, 0x76CE, 0x7729, 0x771F, 0x7720, 0x7728,
- 0x77E9, 0x7830, 0x7827, 0x7838, 0x781D, 0x7834, 0x7837,
- /* Big5-HKSCS 0xAFA1 .. 0xAFFE */
- 0x7825, 0x782D, 0x7820, 0x781F, 0x7832, 0x7955, 0x7950,
- 0x7960, 0x795F, 0x7956, 0x795E, 0x795D, 0x7957, 0x795A, 0x79E4,
- 0x79E3, 0x79E7, 0x79DF, 0x79E6, 0x79E9, 0x79D8, 0x7A84, 0x7A88,
- 0x7AD9, 0x7B06, 0x7B11, 0x7C89, 0x7D21, 0x7D17, 0x7D0B, 0x7D0A,
- 0x7D20, 0x7D22, 0x7D14, 0x7D10, 0x7D15, 0x7D1A, 0x7D1C, 0x7D0D,
- 0x7D19, 0x7D1B, 0x7F3A, 0x7F5F, 0x7F94, 0x7FC5, 0x7FC1, 0x8006,
- 0x8018, 0x8015, 0x8019, 0x8017, 0x803D, 0x803F, 0x80F1, 0x8102,
- 0x80F0, 0x8105, 0x80ED, 0x80F4, 0x8106, 0x80F8, 0x80F3, 0x8108,
- 0x80FD, 0x810A, 0x80FC, 0x80EF, 0x81ED, 0x81EC, 0x8200, 0x8210,
- 0x822A, 0x822B, 0x8228, 0x822C, 0x82BB, 0x832B, 0x8352, 0x8354,
- 0x834A, 0x8338, 0x8350, 0x8349, 0x8335, 0x8334, 0x834F, 0x8332,
- 0x8339, 0x8336, 0x8317, 0x8340, 0x8331, 0x8328, 0x8343,
- /* Big5-HKSCS 0xB040 .. 0xB07E */
- 0x8654, 0x868A, 0x86AA, 0x8693, 0x86A4, 0x86A9, 0x868C, 0x86A3,
- 0x869C, 0x8870, 0x8877, 0x8881, 0x8882, 0x887D, 0x8879, 0x8A18,
- 0x8A10, 0x8A0E, 0x8A0C, 0x8A15, 0x8A0A, 0x8A17, 0x8A13, 0x8A16,
- 0x8A0F, 0x8A11, 0x8C48, 0x8C7A, 0x8C79, 0x8CA1, 0x8CA2, 0x8D77,
- 0x8EAC, 0x8ED2, 0x8ED4, 0x8ECF, 0x8FB1, 0x9001, 0x9006, 0x8FF7,
- 0x9000, 0x8FFA, 0x8FF4, 0x9003, 0x8FFD, 0x9005, 0x8FF8, 0x9095,
- 0x90E1, 0x90DD, 0x90E2, 0x9152, 0x914D, 0x914C, 0x91D8, 0x91DD,
- 0x91D7, 0x91DC, 0x91D9, 0x9583, 0x9662, 0x9663, 0x9661,
- /* Big5-HKSCS 0xB0A1 .. 0xB0FE */
- 0x965B, 0x965D, 0x9664, 0x9658, 0x965E, 0x96BB, 0x98E2,
- 0x99AC, 0x9AA8, 0x9AD8, 0x9B25, 0x9B32, 0x9B3C, 0x4E7E, 0x507A,
- 0x507D, 0x505C, 0x5047, 0x5043, 0x504C, 0x505A, 0x5049, 0x5065,
- 0x5076, 0x504E, 0x5055, 0x5075, 0x5074, 0x5077, 0x504F, 0x500F,
- 0x506F, 0x506D, 0x515C, 0x5195, 0x51F0, 0x526A, 0x526F, 0x52D2,
- 0x52D9, 0x52D8, 0x52D5, 0x5310, 0x530F, 0x5319, 0x533F, 0x5340,
- 0x533E, 0x53C3, 0x66FC, 0x5546, 0x556A, 0x5566, 0x5544, 0x555E,
- 0x5561, 0x5543, 0x554A, 0x5531, 0x5556, 0x554F, 0x5555, 0x552F,
- 0x5564, 0x5538, 0x552E, 0x555C, 0x552C, 0x5563, 0x5533, 0x5541,
- 0x5557, 0x5708, 0x570B, 0x5709, 0x57DF, 0x5805, 0x580A, 0x5806,
- 0x57E0, 0x57E4, 0x57FA, 0x5802, 0x5835, 0x57F7, 0x57F9, 0x5920,
- 0x5962, 0x5A36, 0x5A41, 0x5A49, 0x5A66, 0x5A6A, 0x5A40,
- /* Big5-HKSCS 0xB140 .. 0xB17E */
- 0x5A3C, 0x5A62, 0x5A5A, 0x5A46, 0x5A4A, 0x5B70, 0x5BC7, 0x5BC5,
- 0x5BC4, 0x5BC2, 0x5BBF, 0x5BC6, 0x5C09, 0x5C08, 0x5C07, 0x5C60,
- 0x5C5C, 0x5C5D, 0x5D07, 0x5D06, 0x5D0E, 0x5D1B, 0x5D16, 0x5D22,
- 0x5D11, 0x5D29, 0x5D14, 0x5D19, 0x5D24, 0x5D27, 0x5D17, 0x5DE2,
- 0x5E38, 0x5E36, 0x5E33, 0x5E37, 0x5EB7, 0x5EB8, 0x5EB6, 0x5EB5,
- 0x5EBE, 0x5F35, 0x5F37, 0x5F57, 0x5F6C, 0x5F69, 0x5F6B, 0x5F97,
- 0x5F99, 0x5F9E, 0x5F98, 0x5FA1, 0x5FA0, 0x5F9C, 0x607F, 0x60A3,
- 0x6089, 0x60A0, 0x60A8, 0x60CB, 0x60B4, 0x60E6, 0x60BD,
- /* Big5-HKSCS 0xB1A1 .. 0xB1FE */
- 0x60C5, 0x60BB, 0x60B5, 0x60DC, 0x60BC, 0x60D8, 0x60D5,
- 0x60C6, 0x60DF, 0x60B8, 0x60DA, 0x60C7, 0x621A, 0x621B, 0x6248,
- 0x63A0, 0x63A7, 0x6372, 0x6396, 0x63A2, 0x63A5, 0x6377, 0x6367,
- 0x6398, 0x63AA, 0x6371, 0x63A9, 0x6389, 0x6383, 0x639B, 0x636B,
- 0x63A8, 0x6384, 0x6388, 0x6399, 0x63A1, 0x63AC, 0x6392, 0x638F,
- 0x6380, 0x637B, 0x6369, 0x6368, 0x637A, 0x655D, 0x6556, 0x6551,
- 0x6559, 0x6557, 0x555F, 0x654F, 0x6558, 0x6555, 0x6554, 0x659C,
- 0x659B, 0x65AC, 0x65CF, 0x65CB, 0x65CC, 0x65CE, 0x665D, 0x665A,
- 0x6664, 0x6668, 0x6666, 0x665E, 0x66F9, 0x52D7, 0x671B, 0x6881,
- 0x68AF, 0x68A2, 0x6893, 0x68B5, 0x687F, 0x6876, 0x68B1, 0x68A7,
- 0x6897, 0x68B0, 0x6883, 0x68C4, 0x68AD, 0x6886, 0x6885, 0x6894,
- 0x689D, 0x68A8, 0x689F, 0x68A1, 0x6882, 0x6B32, 0x6BBA,
- /* Big5-HKSCS 0xB240 .. 0xB27E */
- 0x6BEB, 0x6BEC, 0x6C2B, 0x6D8E, 0x6DBC, 0x6DF3, 0x6DD9, 0x6DB2,
- 0x6DE1, 0x6DCC, 0x6DE4, 0x6DFB, 0x6DFA, 0x6E05, 0x6DC7, 0x6DCB,
- 0x6DAF, 0x6DD1, 0x6DAE, 0x6DDE, 0x6DF9, 0x6DB8, 0x6DF7, 0x6DF5,
- 0x6DC5, 0x6DD2, 0x6E1A, 0x6DB5, 0x6DDA, 0x6DEB, 0x6DD8, 0x6DEA,
- 0x6DF1, 0x6DEE, 0x6DE8, 0x6DC6, 0x6DC4, 0x6DAA, 0x6DEC, 0x6DBF,
- 0x6DE6, 0x70F9, 0x7109, 0x710A, 0x70FD, 0x70EF, 0x723D, 0x727D,
- 0x7281, 0x731C, 0x731B, 0x7316, 0x7313, 0x7319, 0x7387, 0x7405,
- 0x740A, 0x7403, 0x7406, 0x73FE, 0x740D, 0x74E0, 0x74F6,
- /* Big5-HKSCS 0xB2A1 .. 0xB2FE */
- 0x74F7, 0x751C, 0x7522, 0x7565, 0x7566, 0x7562, 0x7570,
- 0x758F, 0x75D4, 0x75D5, 0x75B5, 0x75CA, 0x75CD, 0x768E, 0x76D4,
- 0x76D2, 0x76DB, 0x7737, 0x773E, 0x773C, 0x7736, 0x7738, 0x773A,
- 0x786B, 0x7843, 0x784E, 0x7965, 0x7968, 0x796D, 0x79FB, 0x7A92,
- 0x7A95, 0x7B20, 0x7B28, 0x7B1B, 0x7B2C, 0x7B26, 0x7B19, 0x7B1E,
- 0x7B2E, 0x7C92, 0x7C97, 0x7C95, 0x7D46, 0x7D43, 0x7D71, 0x7D2E,
- 0x7D39, 0x7D3C, 0x7D40, 0x7D30, 0x7D33, 0x7D44, 0x7D2F, 0x7D42,
- 0x7D32, 0x7D31, 0x7F3D, 0x7F9E, 0x7F9A, 0x7FCC, 0x7FCE, 0x7FD2,
- 0x801C, 0x804A, 0x8046, 0x812F, 0x8116, 0x8123, 0x812B, 0x8129,
- 0x8130, 0x8124, 0x8202, 0x8235, 0x8237, 0x8236, 0x8239, 0x838E,
- 0x839E, 0x8398, 0x8378, 0x83A2, 0x8396, 0x83BD, 0x83AB, 0x8392,
- 0x838A, 0x8393, 0x8389, 0x83A0, 0x8377, 0x837B, 0x837C,
- /* Big5-HKSCS 0xB340 .. 0xB37E */
- 0x8386, 0x83A7, 0x8655, 0x5F6A, 0x86C7, 0x86C0, 0x86B6, 0x86C4,
- 0x86B5, 0x86C6, 0x86CB, 0x86B1, 0x86AF, 0x86C9, 0x8853, 0x889E,
- 0x8888, 0x88AB, 0x8892, 0x8896, 0x888D, 0x888B, 0x8993, 0x898F,
- 0x8A2A, 0x8A1D, 0x8A23, 0x8A25, 0x8A31, 0x8A2D, 0x8A1F, 0x8A1B,
- 0x8A22, 0x8C49, 0x8C5A, 0x8CA9, 0x8CAC, 0x8CAB, 0x8CA8, 0x8CAA,
- 0x8CA7, 0x8D67, 0x8D66, 0x8DBE, 0x8DBA, 0x8EDB, 0x8EDF, 0x9019,
- 0x900D, 0x901A, 0x9017, 0x9023, 0x901F, 0x901D, 0x9010, 0x9015,
- 0x901E, 0x9020, 0x900F, 0x9022, 0x9016, 0x901B, 0x9014,
- /* Big5-HKSCS 0xB3A1 .. 0xB3FE */
- 0x90E8, 0x90ED, 0x90FD, 0x9157, 0x91CE, 0x91F5, 0x91E6,
- 0x91E3, 0x91E7, 0x91ED, 0x91E9, 0x9589, 0x966A, 0x9675, 0x9673,
- 0x9678, 0x9670, 0x9674, 0x9676, 0x9677, 0x966C, 0x96C0, 0x96EA,
- 0x96E9, 0x7AE0, 0x7ADF, 0x9802, 0x9803, 0x9B5A, 0x9CE5, 0x9E75,
- 0x9E7F, 0x9EA5, 0x9EBB, 0x50A2, 0x508D, 0x5085, 0x5099, 0x5091,
- 0x5080, 0x5096, 0x5098, 0x509A, 0x6700, 0x51F1, 0x5272, 0x5274,
- 0x5275, 0x5269, 0x52DE, 0x52DD, 0x52DB, 0x535A, 0x53A5, 0x557B,
- 0x5580, 0x55A7, 0x557C, 0x558A, 0x559D, 0x5598, 0x5582, 0x559C,
- 0x55AA, 0x5594, 0x5587, 0x558B, 0x5583, 0x55B3, 0x55AE, 0x559F,
- 0x553E, 0x55B2, 0x559A, 0x55BB, 0x55AC, 0x55B1, 0x557E, 0x5589,
- 0x55AB, 0x5599, 0x570D, 0x582F, 0x582A, 0x5834, 0x5824, 0x5830,
- 0x5831, 0x5821, 0x581D, 0x5820, 0x58F9, 0x58FA, 0x5960,
- /* Big5-HKSCS 0xB440 .. 0xB47E */
- 0x5A77, 0x5A9A, 0x5A7F, 0x5A92, 0x5A9B, 0x5AA7, 0x5B73, 0x5B71,
- 0x5BD2, 0x5BCC, 0x5BD3, 0x5BD0, 0x5C0A, 0x5C0B, 0x5C31, 0x5D4C,
- 0x5D50, 0x5D34, 0x5D47, 0x5DFD, 0x5E45, 0x5E3D, 0x5E40, 0x5E43,
- 0x5E7E, 0x5ECA, 0x5EC1, 0x5EC2, 0x5EC4, 0x5F3C, 0x5F6D, 0x5FA9,
- 0x5FAA, 0x5FA8, 0x60D1, 0x60E1, 0x60B2, 0x60B6, 0x60E0, 0x611C,
- 0x6123, 0x60FA, 0x6115, 0x60F0, 0x60FB, 0x60F4, 0x6168, 0x60F1,
- 0x610E, 0x60F6, 0x6109, 0x6100, 0x6112, 0x621F, 0x6249, 0x63A3,
- 0x638C, 0x63CF, 0x63C0, 0x63E9, 0x63C9, 0x63C6, 0x63CD,
- /* Big5-HKSCS 0xB4A1 .. 0xB4FE */
- 0x63D2, 0x63E3, 0x63D0, 0x63E1, 0x63D6, 0x63ED, 0x63EE,
- 0x6376, 0x63F4, 0x63EA, 0x63DB, 0x6452, 0x63DA, 0x63F9, 0x655E,
- 0x6566, 0x6562, 0x6563, 0x6591, 0x6590, 0x65AF, 0x666E, 0x6670,
- 0x6674, 0x6676, 0x666F, 0x6691, 0x667A, 0x667E, 0x6677, 0x66FE,
- 0x66FF, 0x671F, 0x671D, 0x68FA, 0x68D5, 0x68E0, 0x68D8, 0x68D7,
- 0x6905, 0x68DF, 0x68F5, 0x68EE, 0x68E7, 0x68F9, 0x68D2, 0x68F2,
- 0x68E3, 0x68CB, 0x68CD, 0x690D, 0x6912, 0x690E, 0x68C9, 0x68DA,
- 0x696E, 0x68FB, 0x6B3E, 0x6B3A, 0x6B3D, 0x6B98, 0x6B96, 0x6BBC,
- 0x6BEF, 0x6C2E, 0x6C2F, 0x6C2C, 0x6E2F, 0x6E38, 0x6E54, 0x6E21,
- 0x6E32, 0x6E67, 0x6E4A, 0x6E20, 0x6E25, 0x6E23, 0x6E1B, 0x6E5B,
- 0x6E58, 0x6E24, 0x6E56, 0x6E6E, 0x6E2D, 0x6E26, 0x6E6F, 0x6E34,
- 0x6E4D, 0x6E3A, 0x6E2C, 0x6E43, 0x6E1D, 0x6E3E, 0x6ECB,
- /* Big5-HKSCS 0xB540 .. 0xB57E */
- 0x6E89, 0x6E19, 0x6E4E, 0x6E63, 0x6E44, 0x6E72, 0x6E69, 0x6E5F,
- 0x7119, 0x711A, 0x7126, 0x7130, 0x7121, 0x7136, 0x716E, 0x711C,
- 0x724C, 0x7284, 0x7280, 0x7336, 0x7325, 0x7334, 0x7329, 0x743A,
- 0x742A, 0x7433, 0x7422, 0x7425, 0x7435, 0x7436, 0x7434, 0x742F,
- 0x741B, 0x7426, 0x7428, 0x7525, 0x7526, 0x756B, 0x756A, 0x75E2,
- 0x75DB, 0x75E3, 0x75D9, 0x75D8, 0x75DE, 0x75E0, 0x767B, 0x767C,
- 0x7696, 0x7693, 0x76B4, 0x76DC, 0x774F, 0x77ED, 0x785D, 0x786C,
- 0x786F, 0x7A0D, 0x7A08, 0x7A0B, 0x7A05, 0x7A00, 0x7A98,
- /* Big5-HKSCS 0xB5A1 .. 0xB5FE */
- 0x7A97, 0x7A96, 0x7AE5, 0x7AE3, 0x7B49, 0x7B56, 0x7B46,
- 0x7B50, 0x7B52, 0x7B54, 0x7B4D, 0x7B4B, 0x7B4F, 0x7B51, 0x7C9F,
- 0x7CA5, 0x7D5E, 0x7D50, 0x7D68, 0x7D55, 0x7D2B, 0x7D6E, 0x7D72,
- 0x7D61, 0x7D66, 0x7D62, 0x7D70, 0x7D73, 0x5584, 0x7FD4, 0x7FD5,
- 0x800B, 0x8052, 0x8085, 0x8155, 0x8154, 0x814B, 0x8151, 0x814E,
- 0x8139, 0x8146, 0x813E, 0x814C, 0x8153, 0x8174, 0x8212, 0x821C,
- 0x83E9, 0x8403, 0x83F8, 0x840D, 0x83E0, 0x83C5, 0x840B, 0x83C1,
- 0x83EF, 0x83F1, 0x83F4, 0x8457, 0x840A, 0x83F0, 0x840C, 0x83CC,
- 0x83FD, 0x83F2, 0x83CA, 0x8438, 0x840E, 0x8404, 0x83DC, 0x8407,
- 0x83D4, 0x83DF, 0x865B, 0x86DF, 0x86D9, 0x86ED, 0x86D4, 0x86DB,
- 0x86E4, 0x86D0, 0x86DE, 0x8857, 0x88C1, 0x88C2, 0x88B1, 0x8983,
- 0x8996, 0x8A3B, 0x8A60, 0x8A55, 0x8A5E, 0x8A3C, 0x8A41,
- /* Big5-HKSCS 0xB640 .. 0xB67E */
- 0x8A54, 0x8A5B, 0x8A50, 0x8A46, 0x8A34, 0x8A3A, 0x8A36, 0x8A56,
- 0x8C61, 0x8C82, 0x8CAF, 0x8CBC, 0x8CB3, 0x8CBD, 0x8CC1, 0x8CBB,
- 0x8CC0, 0x8CB4, 0x8CB7, 0x8CB6, 0x8CBF, 0x8CB8, 0x8D8A, 0x8D85,
- 0x8D81, 0x8DCE, 0x8DDD, 0x8DCB, 0x8DDA, 0x8DD1, 0x8DCC, 0x8DDB,
- 0x8DC6, 0x8EFB, 0x8EF8, 0x8EFC, 0x8F9C, 0x902E, 0x9035, 0x9031,
- 0x9038, 0x9032, 0x9036, 0x9102, 0x90F5, 0x9109, 0x90FE, 0x9163,
- 0x9165, 0x91CF, 0x9214, 0x9215, 0x9223, 0x9209, 0x921E, 0x920D,
- 0x9210, 0x9207, 0x9211, 0x9594, 0x958F, 0x958B, 0x9591,
- /* Big5-HKSCS 0xB6A1 .. 0xB6FE */
- 0x9593, 0x9592, 0x958E, 0x968A, 0x968E, 0x968B, 0x967D,
- 0x9685, 0x9686, 0x968D, 0x9672, 0x9684, 0x96C1, 0x96C5, 0x96C4,
- 0x96C6, 0x96C7, 0x96EF, 0x96F2, 0x97CC, 0x9805, 0x9806, 0x9808,
- 0x98E7, 0x98EA, 0x98EF, 0x98E9, 0x98F2, 0x98ED, 0x99AE, 0x99AD,
- 0x9EC3, 0x9ECD, 0x9ED1, 0x4E82, 0x50AD, 0x50B5, 0x50B2, 0x50B3,
- 0x50C5, 0x50BE, 0x50AC, 0x50B7, 0x50BB, 0x50AF, 0x50C7, 0x527F,
- 0x5277, 0x527D, 0x52DF, 0x52E6, 0x52E4, 0x52E2, 0x52E3, 0x532F,
- 0x55DF, 0x55E8, 0x55D3, 0x55E6, 0x55CE, 0x55DC, 0x55C7, 0x55D1,
- 0x55E3, 0x55E4, 0x55EF, 0x55DA, 0x55E1, 0x55C5, 0x55C6, 0x55E5,
- 0x55C9, 0x5712, 0x5713, 0x585E, 0x5851, 0x5858, 0x5857, 0x585A,
- 0x5854, 0x586B, 0x584C, 0x586D, 0x584A, 0x5862, 0x5852, 0x584B,
- 0x5967, 0x5AC1, 0x5AC9, 0x5ACC, 0x5ABE, 0x5ABD, 0x5ABC,
- /* Big5-HKSCS 0xB740 .. 0xB77E */
- 0x5AB3, 0x5AC2, 0x5AB2, 0x5D69, 0x5D6F, 0x5E4C, 0x5E79, 0x5EC9,
- 0x5EC8, 0x5F12, 0x5F59, 0x5FAC, 0x5FAE, 0x611A, 0x610F, 0x6148,
- 0x611F, 0x60F3, 0x611B, 0x60F9, 0x6101, 0x6108, 0x614E, 0x614C,
- 0x6144, 0x614D, 0x613E, 0x6134, 0x6127, 0x610D, 0x6106, 0x6137,
- 0x6221, 0x6222, 0x6413, 0x643E, 0x641E, 0x642A, 0x642D, 0x643D,
- 0x642C, 0x640F, 0x641C, 0x6414, 0x640D, 0x6436, 0x6416, 0x6417,
- 0x6406, 0x656C, 0x659F, 0x65B0, 0x6697, 0x6689, 0x6687, 0x6688,
- 0x6696, 0x6684, 0x6698, 0x668D, 0x6703, 0x6994, 0x696D,
- /* Big5-HKSCS 0xB7A1 .. 0xB7FE */
- 0x695A, 0x6977, 0x6960, 0x6954, 0x6975, 0x6930, 0x6982,
- 0x694A, 0x6968, 0x696B, 0x695E, 0x6953, 0x6979, 0x6986, 0x695D,
- 0x6963, 0x695B, 0x6B47, 0x6B72, 0x6BC0, 0x6BBF, 0x6BD3, 0x6BFD,
- 0x6EA2, 0x6EAF, 0x6ED3, 0x6EB6, 0x6EC2, 0x6E90, 0x6E9D, 0x6EC7,
- 0x6EC5, 0x6EA5, 0x6E98, 0x6EBC, 0x6EBA, 0x6EAB, 0x6ED1, 0x6E96,
- 0x6E9C, 0x6EC4, 0x6ED4, 0x6EAA, 0x6EA7, 0x6EB4, 0x714E, 0x7159,
- 0x7169, 0x7164, 0x7149, 0x7167, 0x715C, 0x716C, 0x7166, 0x714C,
- 0x7165, 0x715E, 0x7146, 0x7168, 0x7156, 0x723A, 0x7252, 0x7337,
- 0x7345, 0x733F, 0x733E, 0x746F, 0x745A, 0x7455, 0x745F, 0x745E,
- 0x7441, 0x743F, 0x7459, 0x745B, 0x745C, 0x7576, 0x7578, 0x7600,
- 0x75F0, 0x7601, 0x75F2, 0x75F1, 0x75FA, 0x75FF, 0x75F4, 0x75F3,
- 0x76DE, 0x76DF, 0x775B, 0x776B, 0x7766, 0x775E, 0x7763,
- /* Big5-HKSCS 0xB840 .. 0xB87E */
- 0x7779, 0x776A, 0x776C, 0x775C, 0x7765, 0x7768, 0x7762, 0x77EE,
- 0x788E, 0x78B0, 0x7897, 0x7898, 0x788C, 0x7889, 0x787C, 0x7891,
- 0x7893, 0x787F, 0x797A, 0x797F, 0x7981, 0x842C, 0x79BD, 0x7A1C,
- 0x7A1A, 0x7A20, 0x7A14, 0x7A1F, 0x7A1E, 0x7A9F, 0x7AA0, 0x7B77,
- 0x7BC0, 0x7B60, 0x7B6E, 0x7B67, 0x7CB1, 0x7CB3, 0x7CB5, 0x7D93,
- 0x7D79, 0x7D91, 0x7D81, 0x7D8F, 0x7D5B, 0x7F6E, 0x7F69, 0x7F6A,
- 0x7F72, 0x7FA9, 0x7FA8, 0x7FA4, 0x8056, 0x8058, 0x8086, 0x8084,
- 0x8171, 0x8170, 0x8178, 0x8165, 0x816E, 0x8173, 0x816B,
- /* Big5-HKSCS 0xB8A1 .. 0xB8FE */
- 0x8179, 0x817A, 0x8166, 0x8205, 0x8247, 0x8482, 0x8477,
- 0x843D, 0x8431, 0x8475, 0x8466, 0x846B, 0x8449, 0x846C, 0x845B,
- 0x843C, 0x8435, 0x8461, 0x8463, 0x8469, 0x846D, 0x8446, 0x865E,
- 0x865C, 0x865F, 0x86F9, 0x8713, 0x8708, 0x8707, 0x8700, 0x86FE,
- 0x86FB, 0x8702, 0x8703, 0x8706, 0x870A, 0x8859, 0x88DF, 0x88D4,
- 0x88D9, 0x88DC, 0x88D8, 0x88DD, 0x88E1, 0x88CA, 0x88D5, 0x88D2,
- 0x899C, 0x89E3, 0x8A6B, 0x8A72, 0x8A73, 0x8A66, 0x8A69, 0x8A70,
- 0x8A87, 0x8A7C, 0x8A63, 0x8AA0, 0x8A71, 0x8A85, 0x8A6D, 0x8A62,
- 0x8A6E, 0x8A6C, 0x8A79, 0x8A7B, 0x8A3E, 0x8A68, 0x8C62, 0x8C8A,
- 0x8C89, 0x8CCA, 0x8CC7, 0x8CC8, 0x8CC4, 0x8CB2, 0x8CC3, 0x8CC2,
- 0x8CC5, 0x8DE1, 0x8DDF, 0x8DE8, 0x8DEF, 0x8DF3, 0x8DFA, 0x8DEA,
- 0x8DE4, 0x8DE6, 0x8EB2, 0x8F03, 0x8F09, 0x8EFE, 0x8F0A,
- /* Big5-HKSCS 0xB940 .. 0xB97E */
- 0x8F9F, 0x8FB2, 0x904B, 0x904A, 0x9053, 0x9042, 0x9054, 0x903C,
- 0x9055, 0x9050, 0x9047, 0x904F, 0x904E, 0x904D, 0x9051, 0x903E,
- 0x9041, 0x9112, 0x9117, 0x916C, 0x916A, 0x9169, 0x91C9, 0x9237,
- 0x9257, 0x9238, 0x923D, 0x9240, 0x923E, 0x925B, 0x924B, 0x9264,
- 0x9251, 0x9234, 0x9249, 0x924D, 0x9245, 0x9239, 0x923F, 0x925A,
- 0x9598, 0x9698, 0x9694, 0x9695, 0x96CD, 0x96CB, 0x96C9, 0x96CA,
- 0x96F7, 0x96FB, 0x96F9, 0x96F6, 0x9756, 0x9774, 0x9776, 0x9810,
- 0x9811, 0x9813, 0x980A, 0x9812, 0x980C, 0x98FC, 0x98F4,
- /* Big5-HKSCS 0xB9A1 .. 0xB9FE */
- 0x98FD, 0x98FE, 0x99B3, 0x99B1, 0x99B4, 0x9AE1, 0x9CE9,
- 0x9E82, 0x9F0E, 0x9F13, 0x9F20, 0x50E7, 0x50EE, 0x50E5, 0x50D6,
- 0x50ED, 0x50DA, 0x50D5, 0x50CF, 0x50D1, 0x50F1, 0x50CE, 0x50E9,
- 0x5162, 0x51F3, 0x5283, 0x5282, 0x5331, 0x53AD, 0x55FE, 0x5600,
- 0x561B, 0x5617, 0x55FD, 0x5614, 0x5606, 0x5609, 0x560D, 0x560E,
- 0x55F7, 0x5616, 0x561F, 0x5608, 0x5610, 0x55F6, 0x5718, 0x5716,
- 0x5875, 0x587E, 0x5883, 0x5893, 0x588A, 0x5879, 0x5885, 0x587D,
- 0x58FD, 0x5925, 0x5922, 0x5924, 0x596A, 0x5969, 0x5AE1, 0x5AE6,
- 0x5AE9, 0x5AD7, 0x5AD6, 0x5AD8, 0x5AE3, 0x5B75, 0x5BDE, 0x5BE7,
- 0x5BE1, 0x5BE5, 0x5BE6, 0x5BE8, 0x5BE2, 0x5BE4, 0x5BDF, 0x5C0D,
- 0x5C62, 0x5D84, 0x5D87, 0x5E5B, 0x5E63, 0x5E55, 0x5E57, 0x5E54,
- 0x5ED3, 0x5ED6, 0x5F0A, 0x5F46, 0x5F70, 0x5FB9, 0x6147,
- /* Big5-HKSCS 0xBA40 .. 0xBA7E */
- 0x613F, 0x614B, 0x6177, 0x6162, 0x6163, 0x615F, 0x615A, 0x6158,
- 0x6175, 0x622A, 0x6487, 0x6458, 0x6454, 0x64A4, 0x6478, 0x645F,
- 0x647A, 0x6451, 0x6467, 0x6434, 0x646D, 0x647B, 0x6572, 0x65A1,
- 0x65D7, 0x65D6, 0x66A2, 0x66A8, 0x669D, 0x699C, 0x69A8, 0x6995,
- 0x69C1, 0x69AE, 0x69D3, 0x69CB, 0x699B, 0x69B7, 0x69BB, 0x69AB,
- 0x69B4, 0x69D0, 0x69CD, 0x69AD, 0x69CC, 0x69A6, 0x69C3, 0x69A3,
- 0x6B49, 0x6B4C, 0x6C33, 0x6F33, 0x6F14, 0x6EFE, 0x6F13, 0x6EF4,
- 0x6F29, 0x6F3E, 0x6F20, 0x6F2C, 0x6F0F, 0x6F02, 0x6F22,
- /* Big5-HKSCS 0xBAA1 .. 0xBAFE */
- 0x6EFF, 0x6EEF, 0x6F06, 0x6F31, 0x6F38, 0x6F32, 0x6F23,
- 0x6F15, 0x6F2B, 0x6F2F, 0x6F88, 0x6F2A, 0x6EEC, 0x6F01, 0x6EF2,
- 0x6ECC, 0x6EF7, 0x7194, 0x7199, 0x717D, 0x718A, 0x7184, 0x7192,
- 0x723E, 0x7292, 0x7296, 0x7344, 0x7350, 0x7464, 0x7463, 0x746A,
- 0x7470, 0x746D, 0x7504, 0x7591, 0x7627, 0x760D, 0x760B, 0x7609,
- 0x7613, 0x76E1, 0x76E3, 0x7784, 0x777D, 0x777F, 0x7761, 0x78C1,
- 0x789F, 0x78A7, 0x78B3, 0x78A9, 0x78A3, 0x798E, 0x798F, 0x798D,
- 0x7A2E, 0x7A31, 0x7AAA, 0x7AA9, 0x7AED, 0x7AEF, 0x7BA1, 0x7B95,
- 0x7B8B, 0x7B75, 0x7B97, 0x7B9D, 0x7B94, 0x7B8F, 0x7BB8, 0x7B87,
- 0x7B84, 0x7CB9, 0x7CBD, 0x7CBE, 0x7DBB, 0x7DB0, 0x7D9C, 0x7DBD,
- 0x7DBE, 0x7DA0, 0x7DCA, 0x7DB4, 0x7DB2, 0x7DB1, 0x7DBA, 0x7DA2,
- 0x7DBF, 0x7DB5, 0x7DB8, 0x7DAD, 0x7DD2, 0x7DC7, 0x7DAC,
- /* Big5-HKSCS 0xBB40 .. 0xBB7E */
- 0x7F70, 0x7FE0, 0x7FE1, 0x7FDF, 0x805E, 0x805A, 0x8087, 0x8150,
- 0x8180, 0x818F, 0x8188, 0x818A, 0x817F, 0x8182, 0x81E7, 0x81FA,
- 0x8207, 0x8214, 0x821E, 0x824B, 0x84C9, 0x84BF, 0x84C6, 0x84C4,
- 0x8499, 0x849E, 0x84B2, 0x849C, 0x84CB, 0x84B8, 0x84C0, 0x84D3,
- 0x8490, 0x84BC, 0x84D1, 0x84CA, 0x873F, 0x871C, 0x873B, 0x8722,
- 0x8725, 0x8734, 0x8718, 0x8755, 0x8737, 0x8729, 0x88F3, 0x8902,
- 0x88F4, 0x88F9, 0x88F8, 0x88FD, 0x88E8, 0x891A, 0x88EF, 0x8AA6,
- 0x8A8C, 0x8A9E, 0x8AA3, 0x8A8D, 0x8AA1, 0x8A93, 0x8AA4,
- /* Big5-HKSCS 0xBBA1 .. 0xBBFE */
- 0x8AAA, 0x8AA5, 0x8AA8, 0x8A98, 0x8A91, 0x8A9A, 0x8AA7,
- 0x8C6A, 0x8C8D, 0x8C8C, 0x8CD3, 0x8CD1, 0x8CD2, 0x8D6B, 0x8D99,
- 0x8D95, 0x8DFC, 0x8F14, 0x8F12, 0x8F15, 0x8F13, 0x8FA3, 0x9060,
- 0x9058, 0x905C, 0x9063, 0x9059, 0x905E, 0x9062, 0x905D, 0x905B,
- 0x9119, 0x9118, 0x911E, 0x9175, 0x9178, 0x9177, 0x9174, 0x9278,
- 0x9280, 0x9285, 0x9298, 0x9296, 0x927B, 0x9293, 0x929C, 0x92A8,
- 0x927C, 0x9291, 0x95A1, 0x95A8, 0x95A9, 0x95A3, 0x95A5, 0x95A4,
- 0x9699, 0x969C, 0x969B, 0x96CC, 0x96D2, 0x9700, 0x977C, 0x9785,
- 0x97F6, 0x9817, 0x9818, 0x98AF, 0x98B1, 0x9903, 0x9905, 0x990C,
- 0x9909, 0x99C1, 0x9AAF, 0x9AB0, 0x9AE6, 0x9B41, 0x9B42, 0x9CF4,
- 0x9CF6, 0x9CF3, 0x9EBC, 0x9F3B, 0x9F4A, 0x5104, 0x5100, 0x50FB,
- 0x50F5, 0x50F9, 0x5102, 0x5108, 0x5109, 0x5105, 0x51DC,
- /* Big5-HKSCS 0xBC40 .. 0xBC7E */
- 0x5287, 0x5288, 0x5289, 0x528D, 0x528A, 0x52F0, 0x53B2, 0x562E,
- 0x563B, 0x5639, 0x5632, 0x563F, 0x5634, 0x5629, 0x5653, 0x564E,
- 0x5657, 0x5674, 0x5636, 0x562F, 0x5630, 0x5880, 0x589F, 0x589E,
- 0x58B3, 0x589C, 0x58AE, 0x58A9, 0x58A6, 0x596D, 0x5B09, 0x5AFB,
- 0x5B0B, 0x5AF5, 0x5B0C, 0x5B08, 0x5BEE, 0x5BEC, 0x5BE9, 0x5BEB,
- 0x5C64, 0x5C65, 0x5D9D, 0x5D94, 0x5E62, 0x5E5F, 0x5E61, 0x5EE2,
- 0x5EDA, 0x5EDF, 0x5EDD, 0x5EE3, 0x5EE0, 0x5F48, 0x5F71, 0x5FB7,
- 0x5FB5, 0x6176, 0x6167, 0x616E, 0x615D, 0x6155, 0x6182,
- /* Big5-HKSCS 0xBCA1 .. 0xBCFE */
- 0x617C, 0x6170, 0x616B, 0x617E, 0x61A7, 0x6190, 0x61AB,
- 0x618E, 0x61AC, 0x619A, 0x61A4, 0x6194, 0x61AE, 0x622E, 0x6469,
- 0x646F, 0x6479, 0x649E, 0x64B2, 0x6488, 0x6490, 0x64B0, 0x64A5,
- 0x6493, 0x6495, 0x64A9, 0x6492, 0x64AE, 0x64AD, 0x64AB, 0x649A,
- 0x64AC, 0x6499, 0x64A2, 0x64B3, 0x6575, 0x6577, 0x6578, 0x66AE,
- 0x66AB, 0x66B4, 0x66B1, 0x6A23, 0x6A1F, 0x69E8, 0x6A01, 0x6A1E,
- 0x6A19, 0x69FD, 0x6A21, 0x6A13, 0x6A0A, 0x69F3, 0x6A02, 0x6A05,
- 0x69ED, 0x6A11, 0x6B50, 0x6B4E, 0x6BA4, 0x6BC5, 0x6BC6, 0x6F3F,
- 0x6F7C, 0x6F84, 0x6F51, 0x6F66, 0x6F54, 0x6F86, 0x6F6D, 0x6F5B,
- 0x6F78, 0x6F6E, 0x6F8E, 0x6F7A, 0x6F70, 0x6F64, 0x6F97, 0x6F58,
- 0x6ED5, 0x6F6F, 0x6F60, 0x6F5F, 0x719F, 0x71AC, 0x71B1, 0x71A8,
- 0x7256, 0x729B, 0x734E, 0x7357, 0x7469, 0x748B, 0x7483,
- /* Big5-HKSCS 0xBD40 .. 0xBD7E */
- 0x747E, 0x7480, 0x757F, 0x7620, 0x7629, 0x761F, 0x7624, 0x7626,
- 0x7621, 0x7622, 0x769A, 0x76BA, 0x76E4, 0x778E, 0x7787, 0x778C,
- 0x7791, 0x778B, 0x78CB, 0x78C5, 0x78BA, 0x78CA, 0x78BE, 0x78D5,
- 0x78BC, 0x78D0, 0x7A3F, 0x7A3C, 0x7A40, 0x7A3D, 0x7A37, 0x7A3B,
- 0x7AAF, 0x7AAE, 0x7BAD, 0x7BB1, 0x7BC4, 0x7BB4, 0x7BC6, 0x7BC7,
- 0x7BC1, 0x7BA0, 0x7BCC, 0x7CCA, 0x7DE0, 0x7DF4, 0x7DEF, 0x7DFB,
- 0x7DD8, 0x7DEC, 0x7DDD, 0x7DE8, 0x7DE3, 0x7DDA, 0x7DDE, 0x7DE9,
- 0x7D9E, 0x7DD9, 0x7DF2, 0x7DF9, 0x7F75, 0x7F77, 0x7FAF,
- /* Big5-HKSCS 0xBDA1 .. 0xBDFE */
- 0x7FE9, 0x8026, 0x819B, 0x819C, 0x819D, 0x81A0, 0x819A,
- 0x8198, 0x8517, 0x853D, 0x851A, 0x84EE, 0x852C, 0x852D, 0x8513,
- 0x8511, 0x8523, 0x8521, 0x8514, 0x84EC, 0x8525, 0x84FF, 0x8506,
- 0x8782, 0x8774, 0x8776, 0x8760, 0x8766, 0x8778, 0x8768, 0x8759,
- 0x8757, 0x874C, 0x8753, 0x885B, 0x885D, 0x8910, 0x8907, 0x8912,
- 0x8913, 0x8915, 0x890A, 0x8ABC, 0x8AD2, 0x8AC7, 0x8AC4, 0x8A95,
- 0x8ACB, 0x8AF8, 0x8AB2, 0x8AC9, 0x8AC2, 0x8ABF, 0x8AB0, 0x8AD6,
- 0x8ACD, 0x8AB6, 0x8AB9, 0x8ADB, 0x8C4C, 0x8C4E, 0x8C6C, 0x8CE0,
- 0x8CDE, 0x8CE6, 0x8CE4, 0x8CEC, 0x8CED, 0x8CE2, 0x8CE3, 0x8CDC,
- 0x8CEA, 0x8CE1, 0x8D6D, 0x8D9F, 0x8DA3, 0x8E2B, 0x8E10, 0x8E1D,
- 0x8E22, 0x8E0F, 0x8E29, 0x8E1F, 0x8E21, 0x8E1E, 0x8EBA, 0x8F1D,
- 0x8F1B, 0x8F1F, 0x8F29, 0x8F26, 0x8F2A, 0x8F1C, 0x8F1E,
- /* Big5-HKSCS 0xBE40 .. 0xBE7E */
- 0x8F25, 0x9069, 0x906E, 0x9068, 0x906D, 0x9077, 0x9130, 0x912D,
- 0x9127, 0x9131, 0x9187, 0x9189, 0x918B, 0x9183, 0x92C5, 0x92BB,
- 0x92B7, 0x92EA, 0x92AC, 0x92E4, 0x92C1, 0x92B3, 0x92BC, 0x92D2,
- 0x92C7, 0x92F0, 0x92B2, 0x95AD, 0x95B1, 0x9704, 0x9706, 0x9707,
- 0x9709, 0x9760, 0x978D, 0x978B, 0x978F, 0x9821, 0x982B, 0x981C,
- 0x98B3, 0x990A, 0x9913, 0x9912, 0x9918, 0x99DD, 0x99D0, 0x99DF,
- 0x99DB, 0x99D1, 0x99D5, 0x99D2, 0x99D9, 0x9AB7, 0x9AEE, 0x9AEF,
- 0x9B27, 0x9B45, 0x9B44, 0x9B77, 0x9B6F, 0x9D06, 0x9D09,
- /* Big5-HKSCS 0xBEA1 .. 0xBEFE */
- 0x9D03, 0x9EA9, 0x9EBE, 0x9ECE, 0x58A8, 0x9F52, 0x5112,
- 0x5118, 0x5114, 0x5110, 0x5115, 0x5180, 0x51AA, 0x51DD, 0x5291,
- 0x5293, 0x52F3, 0x5659, 0x566B, 0x5679, 0x5669, 0x5664, 0x5678,
- 0x566A, 0x5668, 0x5665, 0x5671, 0x566F, 0x566C, 0x5662, 0x5676,
- 0x58C1, 0x58BE, 0x58C7, 0x58C5, 0x596E, 0x5B1D, 0x5B34, 0x5B78,
- 0x5BF0, 0x5C0E, 0x5F4A, 0x61B2, 0x6191, 0x61A9, 0x618A, 0x61CD,
- 0x61B6, 0x61BE, 0x61CA, 0x61C8, 0x6230, 0x64C5, 0x64C1, 0x64CB,
- 0x64BB, 0x64BC, 0x64DA, 0x64C4, 0x64C7, 0x64C2, 0x64CD, 0x64BF,
- 0x64D2, 0x64D4, 0x64BE, 0x6574, 0x66C6, 0x66C9, 0x66B9, 0x66C4,
- 0x66C7, 0x66B8, 0x6A3D, 0x6A38, 0x6A3A, 0x6A59, 0x6A6B, 0x6A58,
- 0x6A39, 0x6A44, 0x6A62, 0x6A61, 0x6A4B, 0x6A47, 0x6A35, 0x6A5F,
- 0x6A48, 0x6B59, 0x6B77, 0x6C05, 0x6FC2, 0x6FB1, 0x6FA1,
- /* Big5-HKSCS 0xBF40 .. 0xBF7E */
- 0x6FC3, 0x6FA4, 0x6FC1, 0x6FA7, 0x6FB3, 0x6FC0, 0x6FB9, 0x6FB6,
- 0x6FA6, 0x6FA0, 0x6FB4, 0x71BE, 0x71C9, 0x71D0, 0x71D2, 0x71C8,
- 0x71D5, 0x71B9, 0x71CE, 0x71D9, 0x71DC, 0x71C3, 0x71C4, 0x7368,
- 0x749C, 0x74A3, 0x7498, 0x749F, 0x749E, 0x74E2, 0x750C, 0x750D,
- 0x7634, 0x7638, 0x763A, 0x76E7, 0x76E5, 0x77A0, 0x779E, 0x779F,
- 0x77A5, 0x78E8, 0x78DA, 0x78EC, 0x78E7, 0x79A6, 0x7A4D, 0x7A4E,
- 0x7A46, 0x7A4C, 0x7A4B, 0x7ABA, 0x7BD9, 0x7C11, 0x7BC9, 0x7BE4,
- 0x7BDB, 0x7BE1, 0x7BE9, 0x7BE6, 0x7CD5, 0x7CD6, 0x7E0A,
- /* Big5-HKSCS 0xBFA1 .. 0xBFFE */
- 0x7E11, 0x7E08, 0x7E1B, 0x7E23, 0x7E1E, 0x7E1D, 0x7E09,
- 0x7E10, 0x7F79, 0x7FB2, 0x7FF0, 0x7FF1, 0x7FEE, 0x8028, 0x81B3,
- 0x81A9, 0x81A8, 0x81FB, 0x8208, 0x8258, 0x8259, 0x854A, 0x8559,
- 0x8548, 0x8568, 0x8569, 0x8543, 0x8549, 0x856D, 0x856A, 0x855E,
- 0x8783, 0x879F, 0x879E, 0x87A2, 0x878D, 0x8861, 0x892A, 0x8932,
- 0x8925, 0x892B, 0x8921, 0x89AA, 0x89A6, 0x8AE6, 0x8AFA, 0x8AEB,
- 0x8AF1, 0x8B00, 0x8ADC, 0x8AE7, 0x8AEE, 0x8AFE, 0x8B01, 0x8B02,
- 0x8AF7, 0x8AED, 0x8AF3, 0x8AF6, 0x8AFC, 0x8C6B, 0x8C6D, 0x8C93,
- 0x8CF4, 0x8E44, 0x8E31, 0x8E34, 0x8E42, 0x8E39, 0x8E35, 0x8F3B,
- 0x8F2F, 0x8F38, 0x8F33, 0x8FA8, 0x8FA6, 0x9075, 0x9074, 0x9078,
- 0x9072, 0x907C, 0x907A, 0x9134, 0x9192, 0x9320, 0x9336, 0x92F8,
- 0x9333, 0x932F, 0x9322, 0x92FC, 0x932B, 0x9304, 0x931A,
- /* Big5-HKSCS 0xC040 .. 0xC07E */
- 0x9310, 0x9326, 0x9321, 0x9315, 0x932E, 0x9319, 0x95BB, 0x96A7,
- 0x96A8, 0x96AA, 0x96D5, 0x970E, 0x9711, 0x9716, 0x970D, 0x9713,
- 0x970F, 0x975B, 0x975C, 0x9766, 0x9798, 0x9830, 0x9838, 0x983B,
- 0x9837, 0x982D, 0x9839, 0x9824, 0x9910, 0x9928, 0x991E, 0x991B,
- 0x9921, 0x991A, 0x99ED, 0x99E2, 0x99F1, 0x9AB8, 0x9ABC, 0x9AFB,
- 0x9AED, 0x9B28, 0x9B91, 0x9D15, 0x9D23, 0x9D26, 0x9D28, 0x9D12,
- 0x9D1B, 0x9ED8, 0x9ED4, 0x9F8D, 0x9F9C, 0x512A, 0x511F, 0x5121,
- 0x5132, 0x52F5, 0x568E, 0x5680, 0x5690, 0x5685, 0x5687,
- /* Big5-HKSCS 0xC0A1 .. 0xC0FE */
- 0x568F, 0x58D5, 0x58D3, 0x58D1, 0x58CE, 0x5B30, 0x5B2A,
- 0x5B24, 0x5B7A, 0x5C37, 0x5C68, 0x5DBC, 0x5DBA, 0x5DBD, 0x5DB8,
- 0x5E6B, 0x5F4C, 0x5FBD, 0x61C9, 0x61C2, 0x61C7, 0x61E6, 0x61CB,
- 0x6232, 0x6234, 0x64CE, 0x64CA, 0x64D8, 0x64E0, 0x64F0, 0x64E6,
- 0x64EC, 0x64F1, 0x64E2, 0x64ED, 0x6582, 0x6583, 0x66D9, 0x66D6,
- 0x6A80, 0x6A94, 0x6A84, 0x6AA2, 0x6A9C, 0x6ADB, 0x6AA3, 0x6A7E,
- 0x6A97, 0x6A90, 0x6AA0, 0x6B5C, 0x6BAE, 0x6BDA, 0x6C08, 0x6FD8,
- 0x6FF1, 0x6FDF, 0x6FE0, 0x6FDB, 0x6FE4, 0x6FEB, 0x6FEF, 0x6F80,
- 0x6FEC, 0x6FE1, 0x6FE9, 0x6FD5, 0x6FEE, 0x6FF0, 0x71E7, 0x71DF,
- 0x71EE, 0x71E6, 0x71E5, 0x71ED, 0x71EC, 0x71F4, 0x71E0, 0x7235,
- 0x7246, 0x7370, 0x7372, 0x74A9, 0x74B0, 0x74A6, 0x74A8, 0x7646,
- 0x7642, 0x764C, 0x76EA, 0x77B3, 0x77AA, 0x77B0, 0x77AC,
- /* Big5-HKSCS 0xC140 .. 0xC17E */
- 0x77A7, 0x77AD, 0x77EF, 0x78F7, 0x78FA, 0x78F4, 0x78EF, 0x7901,
- 0x79A7, 0x79AA, 0x7A57, 0x7ABF, 0x7C07, 0x7C0D, 0x7BFE, 0x7BF7,
- 0x7C0C, 0x7BE0, 0x7CE0, 0x7CDC, 0x7CDE, 0x7CE2, 0x7CDF, 0x7CD9,
- 0x7CDD, 0x7E2E, 0x7E3E, 0x7E46, 0x7E37, 0x7E32, 0x7E43, 0x7E2B,
- 0x7E3D, 0x7E31, 0x7E45, 0x7E41, 0x7E34, 0x7E39, 0x7E48, 0x7E35,
- 0x7E3F, 0x7E2F, 0x7F44, 0x7FF3, 0x7FFC, 0x8071, 0x8072, 0x8070,
- 0x806F, 0x8073, 0x81C6, 0x81C3, 0x81BA, 0x81C2, 0x81C0, 0x81BF,
- 0x81BD, 0x81C9, 0x81BE, 0x81E8, 0x8209, 0x8271, 0x85AA,
- /* Big5-HKSCS 0xC1A1 .. 0xC1FE */
- 0x8584, 0x857E, 0x859C, 0x8591, 0x8594, 0x85AF, 0x859B,
- 0x8587, 0x85A8, 0x858A, 0x8667, 0x87C0, 0x87D1, 0x87B3, 0x87D2,
- 0x87C6, 0x87AB, 0x87BB, 0x87BA, 0x87C8, 0x87CB, 0x893B, 0x8936,
- 0x8944, 0x8938, 0x893D, 0x89AC, 0x8B0E, 0x8B17, 0x8B19, 0x8B1B,
- 0x8B0A, 0x8B20, 0x8B1D, 0x8B04, 0x8B10, 0x8C41, 0x8C3F, 0x8C73,
- 0x8CFA, 0x8CFD, 0x8CFC, 0x8CF8, 0x8CFB, 0x8DA8, 0x8E49, 0x8E4B,
- 0x8E48, 0x8E4A, 0x8F44, 0x8F3E, 0x8F42, 0x8F45, 0x8F3F, 0x907F,
- 0x907D, 0x9084, 0x9081, 0x9082, 0x9080, 0x9139, 0x91A3, 0x919E,
- 0x919C, 0x934D, 0x9382, 0x9328, 0x9375, 0x934A, 0x9365, 0x934B,
- 0x9318, 0x937E, 0x936C, 0x935B, 0x9370, 0x935A, 0x9354, 0x95CA,
- 0x95CB, 0x95CC, 0x95C8, 0x95C6, 0x96B1, 0x96B8, 0x96D6, 0x971C,
- 0x971E, 0x97A0, 0x97D3, 0x9846, 0x98B6, 0x9935, 0x9A01,
- /* Big5-HKSCS 0xC240 .. 0xC27E */
- 0x99FF, 0x9BAE, 0x9BAB, 0x9BAA, 0x9BAD, 0x9D3B, 0x9D3F, 0x9E8B,
- 0x9ECF, 0x9EDE, 0x9EDC, 0x9EDD, 0x9EDB, 0x9F3E, 0x9F4B, 0x53E2,
- 0x5695, 0x56AE, 0x58D9, 0x58D8, 0x5B38, 0x5F5D, 0x61E3, 0x6233,
- 0x64F4, 0x64F2, 0x64FE, 0x6506, 0x64FA, 0x64FB, 0x64F7, 0x65B7,
- 0x66DC, 0x6726, 0x6AB3, 0x6AAC, 0x6AC3, 0x6ABB, 0x6AB8, 0x6AC2,
- 0x6AAE, 0x6AAF, 0x6B5F, 0x6B78, 0x6BAF, 0x7009, 0x700B, 0x6FFE,
- 0x7006, 0x6FFA, 0x7011, 0x700F, 0x71FB, 0x71FC, 0x71FE, 0x71F8,
- 0x7377, 0x7375, 0x74A7, 0x74BF, 0x7515, 0x7656, 0x7658,
- /* Big5-HKSCS 0xC2A1 .. 0xC2FE */
- 0x7652, 0x77BD, 0x77BF, 0x77BB, 0x77BC, 0x790E, 0x79AE,
- 0x7A61, 0x7A62, 0x7A60, 0x7AC4, 0x7AC5, 0x7C2B, 0x7C27, 0x7C2A,
- 0x7C1E, 0x7C23, 0x7C21, 0x7CE7, 0x7E54, 0x7E55, 0x7E5E, 0x7E5A,
- 0x7E61, 0x7E52, 0x7E59, 0x7F48, 0x7FF9, 0x7FFB, 0x8077, 0x8076,
- 0x81CD, 0x81CF, 0x820A, 0x85CF, 0x85A9, 0x85CD, 0x85D0, 0x85C9,
- 0x85B0, 0x85BA, 0x85B9, 0x85A6, 0x87EF, 0x87EC, 0x87F2, 0x87E0,
- 0x8986, 0x89B2, 0x89F4, 0x8B28, 0x8B39, 0x8B2C, 0x8B2B, 0x8C50,
- 0x8D05, 0x8E59, 0x8E63, 0x8E66, 0x8E64, 0x8E5F, 0x8E55, 0x8EC0,
- 0x8F49, 0x8F4D, 0x9087, 0x9083, 0x9088, 0x91AB, 0x91AC, 0x91D0,
- 0x9394, 0x938A, 0x9396, 0x93A2, 0x93B3, 0x93AE, 0x93AC, 0x93B0,
- 0x9398, 0x939A, 0x9397, 0x95D4, 0x95D6, 0x95D0, 0x95D5, 0x96E2,
- 0x96DC, 0x96D9, 0x96DB, 0x96DE, 0x9724, 0x97A3, 0x97A6,
- /* Big5-HKSCS 0xC340 .. 0xC37E */
- 0x97AD, 0x97F9, 0x984D, 0x984F, 0x984C, 0x984E, 0x9853, 0x98BA,
- 0x993E, 0x993F, 0x993D, 0x992E, 0x99A5, 0x9A0E, 0x9AC1, 0x9B03,
- 0x9B06, 0x9B4F, 0x9B4E, 0x9B4D, 0x9BCA, 0x9BC9, 0x9BFD, 0x9BC8,
- 0x9BC0, 0x9D51, 0x9D5D, 0x9D60, 0x9EE0, 0x9F15, 0x9F2C, 0x5133,
- 0x56A5, 0x58DE, 0x58DF, 0x58E2, 0x5BF5, 0x9F90, 0x5EEC, 0x61F2,
- 0x61F7, 0x61F6, 0x61F5, 0x6500, 0x650F, 0x66E0, 0x66DD, 0x6AE5,
- 0x6ADD, 0x6ADA, 0x6AD3, 0x701B, 0x701F, 0x7028, 0x701A, 0x701D,
- 0x7015, 0x7018, 0x7206, 0x720D, 0x7258, 0x72A2, 0x7378,
- /* Big5-HKSCS 0xC3A1 .. 0xC3FE */
- 0x737A, 0x74BD, 0x74CA, 0x74E3, 0x7587, 0x7586, 0x765F,
- 0x7661, 0x77C7, 0x7919, 0x79B1, 0x7A6B, 0x7A69, 0x7C3E, 0x7C3F,
- 0x7C38, 0x7C3D, 0x7C37, 0x7C40, 0x7E6B, 0x7E6D, 0x7E79, 0x7E69,
- 0x7E6A, 0x7F85, 0x7E73, 0x7FB6, 0x7FB9, 0x7FB8, 0x81D8, 0x85E9,
- 0x85DD, 0x85EA, 0x85D5, 0x85E4, 0x85E5, 0x85F7, 0x87FB, 0x8805,
- 0x880D, 0x87F9, 0x87FE, 0x8960, 0x895F, 0x8956, 0x895E, 0x8B41,
- 0x8B5C, 0x8B58, 0x8B49, 0x8B5A, 0x8B4E, 0x8B4F, 0x8B46, 0x8B59,
- 0x8D08, 0x8D0A, 0x8E7C, 0x8E72, 0x8E87, 0x8E76, 0x8E6C, 0x8E7A,
- 0x8E74, 0x8F54, 0x8F4E, 0x8FAD, 0x908A, 0x908B, 0x91B1, 0x91AE,
- 0x93E1, 0x93D1, 0x93DF, 0x93C3, 0x93C8, 0x93DC, 0x93DD, 0x93D6,
- 0x93E2, 0x93CD, 0x93D8, 0x93E4, 0x93D7, 0x93E8, 0x95DC, 0x96B4,
- 0x96E3, 0x972A, 0x9727, 0x9761, 0x97DC, 0x97FB, 0x985E,
- /* Big5-HKSCS 0xC440 .. 0xC47E */
- 0x9858, 0x985B, 0x98BC, 0x9945, 0x9949, 0x9A16, 0x9A19, 0x9B0D,
- 0x9BE8, 0x9BE7, 0x9BD6, 0x9BDB, 0x9D89, 0x9D61, 0x9D72, 0x9D6A,
- 0x9D6C, 0x9E92, 0x9E97, 0x9E93, 0x9EB4, 0x52F8, 0x56A8, 0x56B7,
- 0x56B6, 0x56B4, 0x56BC, 0x58E4, 0x5B40, 0x5B43, 0x5B7D, 0x5BF6,
- 0x5DC9, 0x61F8, 0x61FA, 0x6518, 0x6514, 0x6519, 0x66E6, 0x6727,
- 0x6AEC, 0x703E, 0x7030, 0x7032, 0x7210, 0x737B, 0x74CF, 0x7662,
- 0x7665, 0x7926, 0x792A, 0x792C, 0x792B, 0x7AC7, 0x7AF6, 0x7C4C,
- 0x7C43, 0x7C4D, 0x7CEF, 0x7CF0, 0x8FAE, 0x7E7D, 0x7E7C,
- /* Big5-HKSCS 0xC4A1 .. 0xC4FE */
- 0x7E82, 0x7F4C, 0x8000, 0x81DA, 0x8266, 0x85FB, 0x85F9,
- 0x8611, 0x85FA, 0x8606, 0x860B, 0x8607, 0x860A, 0x8814, 0x8815,
- 0x8964, 0x89BA, 0x89F8, 0x8B70, 0x8B6C, 0x8B66, 0x8B6F, 0x8B5F,
- 0x8B6B, 0x8D0F, 0x8D0D, 0x8E89, 0x8E81, 0x8E85, 0x8E82, 0x91B4,
- 0x91CB, 0x9418, 0x9403, 0x93FD, 0x95E1, 0x9730, 0x98C4, 0x9952,
- 0x9951, 0x99A8, 0x9A2B, 0x9A30, 0x9A37, 0x9A35, 0x9C13, 0x9C0D,
- 0x9E79, 0x9EB5, 0x9EE8, 0x9F2F, 0x9F5F, 0x9F63, 0x9F61, 0x5137,
- 0x5138, 0x56C1, 0x56C0, 0x56C2, 0x5914, 0x5C6C, 0x5DCD, 0x61FC,
- 0x61FE, 0x651D, 0x651C, 0x6595, 0x66E9, 0x6AFB, 0x6B04, 0x6AFA,
- 0x6BB2, 0x704C, 0x721B, 0x72A7, 0x74D6, 0x74D4, 0x7669, 0x77D3,
- 0x7C50, 0x7E8F, 0x7E8C, 0x7FBC, 0x8617, 0x862D, 0x861A, 0x8823,
- 0x8822, 0x8821, 0x881F, 0x896A, 0x896C, 0x89BD, 0x8B74,
- /* Big5-HKSCS 0xC540 .. 0xC57E */
- 0x8B77, 0x8B7D, 0x8D13, 0x8E8A, 0x8E8D, 0x8E8B, 0x8F5F, 0x8FAF,
- 0x91BA, 0x942E, 0x9433, 0x9435, 0x943A, 0x9438, 0x9432, 0x942B,
- 0x95E2, 0x9738, 0x9739, 0x9732, 0x97FF, 0x9867, 0x9865, 0x9957,
- 0x9A45, 0x9A43, 0x9A40, 0x9A3E, 0x9ACF, 0x9B54, 0x9B51, 0x9C2D,
- 0x9C25, 0x9DAF, 0x9DB4, 0x9DC2, 0x9DB8, 0x9E9D, 0x9EEF, 0x9F19,
- 0x9F5C, 0x9F66, 0x9F67, 0x513C, 0x513B, 0x56C8, 0x56CA, 0x56C9,
- 0x5B7F, 0x5DD4, 0x5DD2, 0x5F4E, 0x61FF, 0x6524, 0x6B0A, 0x6B61,
- 0x7051, 0x7058, 0x7380, 0x74E4, 0x758A, 0x766E, 0x766C,
- /* Big5-HKSCS 0xC5A1 .. 0xC5FE */
- 0x79B3, 0x7C60, 0x7C5F, 0x807E, 0x807D, 0x81DF, 0x8972,
- 0x896F, 0x89FC, 0x8B80, 0x8D16, 0x8D17, 0x8E91, 0x8E93, 0x8F61,
- 0x9148, 0x9444, 0x9451, 0x9452, 0x973D, 0x973E, 0x97C3, 0x97C1,
- 0x986B, 0x9955, 0x9A55, 0x9A4D, 0x9AD2, 0x9B1A, 0x9C49, 0x9C31,
- 0x9C3E, 0x9C3B, 0x9DD3, 0x9DD7, 0x9F34, 0x9F6C, 0x9F6A, 0x9F94,
- 0x56CC, 0x5DD6, 0x6200, 0x6523, 0x652B, 0x652A, 0x66EC, 0x6B10,
- 0x74DA, 0x7ACA, 0x7C64, 0x7C63, 0x7C65, 0x7E93, 0x7E96, 0x7E94,
- 0x81E2, 0x8638, 0x863F, 0x8831, 0x8B8A, 0x9090, 0x908F, 0x9463,
- 0x9460, 0x9464, 0x9768, 0x986F, 0x995C, 0x9A5A, 0x9A5B, 0x9A57,
- 0x9AD3, 0x9AD4, 0x9AD1, 0x9C54, 0x9C57, 0x9C56, 0x9DE5, 0x9E9F,
- 0x9EF4, 0x56D1, 0x58E9, 0x652C, 0x705E, 0x7671, 0x7672, 0x77D7,
- 0x7F50, 0x7F88, 0x8836, 0x8839, 0x8862, 0x8B93, 0x8B92,
- /* Big5-HKSCS 0xC640 .. 0xC67E */
- 0x8B96, 0x8277, 0x8D1B, 0x91C0, 0x946A, 0x9742, 0x9748, 0x9744,
- 0x97C6, 0x9870, 0x9A5F, 0x9B22, 0x9B58, 0x9C5F, 0x9DF9, 0x9DFA,
- 0x9E7C, 0x9E7D, 0x9F07, 0x9F77, 0x9F72, 0x5EF3, 0x6B16, 0x7063,
- 0x7C6C, 0x7C6E, 0x883B, 0x89C0, 0x8EA1, 0x91C1, 0x9472, 0x9470,
- 0x9871, 0x995E, 0x9AD6, 0x9B23, 0x9ECC, 0x7064, 0x77DA, 0x8B9A,
- 0x9477, 0x97C9, 0x9A62, 0x9A65, 0x7E9C, 0x8B9C, 0x8EAA, 0x91C5,
- 0x947D, 0x947E, 0x947C, 0x9C77, 0x9C78, 0x9EF7, 0x8C54, 0x947F,
- 0x9E1A, 0x7228, 0x9A6A, 0x9B31, 0x9E1B, 0x9E1E, 0x7C72,
- /* Big5-HKSCS 0xC6A1 .. 0xC6FE */
- 0x2460, 0x2461, 0x2462, 0x2463, 0x2464, 0x2465, 0x2466,
- 0x2467, 0x2468, 0x2469, 0x2474, 0x2475, 0x2476, 0x2477, 0x2478,
- 0x2479, 0x247A, 0x247B, 0x247C, 0x247D, 0x2170, 0x2171, 0x2172,
- 0x2173, 0x2174, 0x2175, 0x2176, 0x2177, 0x2178, 0x2179, 0x4E36,
- 0x4E3F, 0x4E85, 0x4EA0, 0x5182, 0x5196, 0x51AB, 0x52F9, 0x5338,
- 0x5369, 0x53B6, 0x590A, 0x5B80, 0x5DDB, 0x2F33, 0x5E7F, 0xF6DF,
- 0x5F50, 0x5F61, 0x6534, 0xF6E3, 0x7592, 0xF6E5, 0x8FB5, 0xF6E7,
- 0x00A8, 0x02C6, 0x30FD, 0x30FE, 0x309D, 0x309E, 0xF6EE, 0xF6EF,
- 0x3005, 0x3006, 0x3007, 0x30FC, 0xFF3B, 0xFF3D, 0x273D, 0x3041,
- 0x3042, 0x3043, 0x3044, 0x3045, 0x3046, 0x3047, 0x3048, 0x3049,
- 0x304A, 0x304B, 0x304C, 0x304D, 0x304E, 0x304F, 0x3050, 0x3051,
- 0x3052, 0x3053, 0x3054, 0x3055, 0x3056, 0x3057, 0x3058,
- /* Big5-HKSCS 0xC740 .. 0xC77E */
- 0x3059, 0x305A, 0x305B, 0x305C, 0x305D, 0x305E, 0x305F, 0x3060,
- 0x3061, 0x3062, 0x3063, 0x3064, 0x3065, 0x3066, 0x3067, 0x3068,
- 0x3069, 0x306A, 0x306B, 0x306C, 0x306D, 0x306E, 0x306F, 0x3070,
- 0x3071, 0x3072, 0x3073, 0x3074, 0x3075, 0x3076, 0x3077, 0x3078,
- 0x3079, 0x307A, 0x307B, 0x307C, 0x307D, 0x307E, 0x307F, 0x3080,
- 0x3081, 0x3082, 0x3083, 0x3084, 0x3085, 0x3086, 0x3087, 0x3088,
- 0x3089, 0x308A, 0x308B, 0x308C, 0x308D, 0x308E, 0x308F, 0x3090,
- 0x3091, 0x3092, 0x3093, 0x30A1, 0x30A2, 0x30A3, 0x30A4,
- /* Big5-HKSCS 0xC7A1 .. 0xC7FE */
- 0x30A5, 0x30A6, 0x30A7, 0x30A8, 0x30A9, 0x30AA, 0x30AB,
- 0x30AC, 0x30AD, 0x30AE, 0x30AF, 0x30B0, 0x30B1, 0x30B2, 0x30B3,
- 0x30B4, 0x30B5, 0x30B6, 0x30B7, 0x30B8, 0x30B9, 0x30BA, 0x30BB,
- 0x30BC, 0x30BD, 0x30BE, 0x30BF, 0x30C0, 0x30C1, 0x30C2, 0x30C3,
- 0x30C4, 0x30C5, 0x30C6, 0x30C7, 0x30C8, 0x30C9, 0x30CA, 0x30CB,
- 0x30CC, 0x30CD, 0x30CE, 0x30CF, 0x30D0, 0x30D1, 0x30D2, 0x30D3,
- 0x30D4, 0x30D5, 0x30D6, 0x30D7, 0x30D8, 0x30D9, 0x30DA, 0x30DB,
- 0x30DC, 0x30DD, 0x30DE, 0x30DF, 0x30E0, 0x30E1, 0x30E2, 0x30E3,
- 0x30E4, 0x30E5, 0x30E6, 0x30E7, 0x30E8, 0x30E9, 0x30EA, 0x30EB,
- 0x30EC, 0x30ED, 0x30EE, 0x30EF, 0x30F0, 0x30F1, 0x30F2, 0x30F3,
- 0x30F4, 0x30F5, 0x30F6, 0x0410, 0x0411, 0x0412, 0x0413, 0x0414,
- 0x0415, 0x0401, 0x0416, 0x0417, 0x0418, 0x0419, 0x041A,
- /* Big5-HKSCS 0xC840 .. 0xC87E */
- 0x041B, 0x041C, 0x041D, 0x041E, 0x041F, 0x0420, 0x0421, 0x0422,
- 0x0423, 0x0424, 0x0425, 0x0426, 0x0427, 0x0428, 0x0429, 0x042A,
- 0x042B, 0x042C, 0x042D, 0x042E, 0x042F, 0x0430, 0x0431, 0x0432,
- 0x0433, 0x0434, 0x0435, 0x0451, 0x0436, 0x0437, 0x0438, 0x0439,
- 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F, 0x0440, 0x0441,
- 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447, 0x0448, 0x0449,
- 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F, 0x21E7, 0x21B8,
- 0x21B9, 0xF7E5, 0xF7E6, 0x4E5A, 0xF7E8, 0x5202, 0xF7EA,
- /* Big5-HKSCS 0xC8A1 .. 0xC8FE */
- 0xF7EB, 0x5188, 0xF7ED, 0xF7EE, 0xF7EF, 0xF7F0, 0xF7F1,
- 0xF7F2, 0xF7F3, 0xF7F4, 0xF7F5, 0xF7F6, 0xF7F7, 0xF7F8, 0xF7F9,
- 0xF7FA, 0xF7FB, 0xF7FC, 0xF7FD, 0xF7FE, 0xF7FF, 0xF800, 0xF801,
- 0xF802, 0xF803, 0xF804, 0xF805, 0xF806, 0xF807, 0xF808, 0xF809,
- 0xF80A, 0xF80B, 0xF80C, 0xF80D, 0xF80E, 0xF80F, 0xF810, 0xF811,
- 0xF812, 0xF813, 0xF814, 0xF815, 0xF816, 0xFFE2, 0xFFE4, 0xFF07,
- 0xFF02, 0x3231, 0x2116, 0x2121, 0x309B, 0x309C, 0x2E80, 0x2E84,
- 0x2E86, 0x2E87, 0x2E88, 0x2E8A, 0x2E8C, 0x2E8D, 0x2E95, 0x2E9C,
- 0x2E9D, 0x2EA5, 0x2EA7, 0x2EAA, 0x2EAC, 0x2EAE, 0x2EB6, 0x2EBC,
- 0x2EBE, 0x2EC6, 0x2ECA, 0x2ECC, 0x2ECD, 0x2ECF, 0x2ED6, 0x2ED7,
- 0x2EDE, 0x2EE3, 0xF83C, 0xF83D, 0xF83E, 0x0283, 0x0250, 0x025B,
- 0x0254, 0x0275, 0x0153, 0x00F8, 0x014B, 0x028A, 0x026A,
- /* Big5-HKSCS 0xC940 .. 0xC97E */
- 0x4E42, 0x4E5C, 0x51F5, 0x531A, 0x5382, 0x4E07, 0x4E0C, 0x4E47,
- 0x4E8D, 0x56D7, 0xFA0C, 0x5C6E, 0x5F73, 0x4E0F, 0x5187, 0x4E0E,
- 0x4E2E, 0x4E93, 0x4EC2, 0x4EC9, 0x4EC8, 0x5198, 0x52FC, 0x536C,
- 0x53B9, 0x5720, 0x5903, 0x592C, 0x5C10, 0x5DFF, 0x65E1, 0x6BB3,
- 0x6BCC, 0x6C14, 0x723F, 0x4E31, 0x4E3C, 0x4EE8, 0x4EDC, 0x4EE9,
- 0x4EE1, 0x4EDD, 0x4EDA, 0x520C, 0x531C, 0x534C, 0x5722, 0x5723,
- 0x5917, 0x592F, 0x5B81, 0x5B84, 0x5C12, 0x5C3B, 0x5C74, 0x5C73,
- 0x5E04, 0x5E80, 0x5E82, 0x5FC9, 0x6209, 0x6250, 0x6C15,
- /* Big5-HKSCS 0xC9A1 .. 0xC9FE */
- 0x6C36, 0x6C43, 0x6C3F, 0x6C3B, 0x72AE, 0x72B0, 0x738A,
- 0x79B8, 0x808A, 0x961E, 0x4F0E, 0x4F18, 0x4F2C, 0x4EF5, 0x4F14,
- 0x4EF1, 0x4F00, 0x4EF7, 0x4F08, 0x4F1D, 0x4F02, 0x4F05, 0x4F22,
- 0x4F13, 0x4F04, 0x4EF4, 0x4F12, 0x51B1, 0x5213, 0x5209, 0x5210,
- 0x52A6, 0x5322, 0x531F, 0x534D, 0x538A, 0x5407, 0x56E1, 0x56DF,
- 0x572E, 0x572A, 0x5734, 0x593C, 0x5980, 0x597C, 0x5985, 0x597B,
- 0x597E, 0x5977, 0x597F, 0x5B56, 0x5C15, 0x5C25, 0x5C7C, 0x5C7A,
- 0x5C7B, 0x5C7E, 0x5DDF, 0x5E75, 0x5E84, 0x5F02, 0x5F1A, 0x5F74,
- 0x5FD5, 0x5FD4, 0x5FCF, 0x625C, 0x625E, 0x6264, 0x6261, 0x6266,
- 0x6262, 0x6259, 0x6260, 0x625A, 0x6265, 0x65EF, 0x65EE, 0x673E,
- 0x6739, 0x6738, 0x673B, 0x673A, 0x673F, 0x673C, 0x6733, 0x6C18,
- 0x6C46, 0x6C52, 0x6C5C, 0x6C4F, 0x6C4A, 0x6C54, 0x6C4B,
- /* Big5-HKSCS 0xCA40 .. 0xCA7E */
- 0x6C4C, 0x7071, 0x725E, 0x72B4, 0x72B5, 0x738E, 0x752A, 0x767F,
- 0x7A75, 0x7F51, 0x8278, 0x827C, 0x8280, 0x827D, 0x827F, 0x864D,
- 0x897E, 0x9099, 0x9097, 0x9098, 0x909B, 0x9094, 0x9622, 0x9624,
- 0x9620, 0x9623, 0x4F56, 0x4F3B, 0x4F62, 0x4F49, 0x4F53, 0x4F64,
- 0x4F3E, 0x4F67, 0x4F52, 0x4F5F, 0x4F41, 0x4F58, 0x4F2D, 0x4F33,
- 0x4F3F, 0x4F61, 0x518F, 0x51B9, 0x521C, 0x521E, 0x5221, 0x52AD,
- 0x52AE, 0x5309, 0x5363, 0x5372, 0x538E, 0x538F, 0x5430, 0x5437,
- 0x542A, 0x5454, 0x5445, 0x5419, 0x541C, 0x5425, 0x5418,
- /* Big5-HKSCS 0xCAA1 .. 0xCAFE */
- 0x543D, 0x544F, 0x5441, 0x5428, 0x5424, 0x5447, 0x56EE,
- 0x56E7, 0x56E5, 0x5741, 0x5745, 0x574C, 0x5749, 0x574B, 0x5752,
- 0x5906, 0x5940, 0x59A6, 0x5998, 0x59A0, 0x5997, 0x598E, 0x59A2,
- 0x5990, 0x598F, 0x59A7, 0x59A1, 0x5B8E, 0x5B92, 0x5C28, 0x5C2A,
- 0x5C8D, 0x5C8F, 0x5C88, 0x5C8B, 0x5C89, 0x5C92, 0x5C8A, 0x5C86,
- 0x5C93, 0x5C95, 0x5DE0, 0x5E0A, 0x5E0E, 0x5E8B, 0x5E89, 0x5E8C,
- 0x5E88, 0x5E8D, 0x5F05, 0x5F1D, 0x5F78, 0x5F76, 0x5FD2, 0x5FD1,
- 0x5FD0, 0x5FED, 0x5FE8, 0x5FEE, 0x5FF3, 0x5FE1, 0x5FE4, 0x5FE3,
- 0x5FFA, 0x5FEF, 0x5FF7, 0x5FFB, 0x6000, 0x5FF4, 0x623A, 0x6283,
- 0x628C, 0x628E, 0x628F, 0x6294, 0x6287, 0x6271, 0x627B, 0x627A,
- 0x6270, 0x6281, 0x6288, 0x6277, 0x627D, 0x6272, 0x6274, 0x6537,
- 0x65F0, 0x65F4, 0x65F3, 0x65F2, 0x65F5, 0x6745, 0x6747,
- /* Big5-HKSCS 0xCB40 .. 0xCB7E */
- 0x6759, 0x6755, 0x674C, 0x6748, 0x675D, 0x674D, 0x675A, 0x674B,
- 0x6BD0, 0x6C19, 0x6C1A, 0x6C78, 0x6C67, 0x6C6B, 0x6C84, 0x6C8B,
- 0x6C8F, 0x6C71, 0x6C6F, 0x6C69, 0x6C9A, 0x6C6D, 0x6C87, 0x6C95,
- 0x6C9C, 0x6C66, 0x6C73, 0x6C65, 0x6C7B, 0x6C8E, 0x7074, 0x707A,
- 0x7263, 0x72BF, 0x72BD, 0x72C3, 0x72C6, 0x72C1, 0x72BA, 0x72C5,
- 0x7395, 0x7397, 0x7393, 0x7394, 0x7392, 0x753A, 0x7539, 0x7594,
- 0x7595, 0x7681, 0x793D, 0x8034, 0x8095, 0x8099, 0x8090, 0x8092,
- 0x809C, 0x8290, 0x828F, 0x8285, 0x828E, 0x8291, 0x8293,
- /* Big5-HKSCS 0xCBA1 .. 0xCBFE */
- 0x828A, 0x8283, 0x8284, 0x8C78, 0x8FC9, 0x8FBF, 0x909F,
- 0x90A1, 0x90A5, 0x909E, 0x90A7, 0x90A0, 0x9630, 0x9628, 0x962F,
- 0x962D, 0x4E33, 0x4F98, 0x4F7C, 0x4F85, 0x4F7D, 0x4F80, 0x4F87,
- 0x4F76, 0x4F74, 0x4F89, 0x4F84, 0x4F77, 0x4F4C, 0x4F97, 0x4F6A,
- 0x4F9A, 0x4F79, 0x4F81, 0x4F78, 0x4F90, 0x4F9C, 0x4F94, 0x4F9E,
- 0x4F92, 0x4F82, 0x4F95, 0x4F6B, 0x4F6E, 0x519E, 0x51BC, 0x51BE,
- 0x5235, 0x5232, 0x5233, 0x5246, 0x5231, 0x52BC, 0x530A, 0x530B,
- 0x533C, 0x5392, 0x5394, 0x5487, 0x547F, 0x5481, 0x5491, 0x5482,
- 0x5488, 0x546B, 0x547A, 0x547E, 0x5465, 0x546C, 0x5474, 0x5466,
- 0x548D, 0x546F, 0x5461, 0x5460, 0x5498, 0x5463, 0x5467, 0x5464,
- 0x56F7, 0x56F9, 0x576F, 0x5772, 0x576D, 0x576B, 0x5771, 0x5770,
- 0x5776, 0x5780, 0x5775, 0x577B, 0x5773, 0x5774, 0x5762,
- /* Big5-HKSCS 0xCC40 .. 0xCC7E */
- 0x5768, 0x577D, 0x590C, 0x5945, 0x59B5, 0x59BA, 0x59CF, 0x59CE,
- 0x59B2, 0x59CC, 0x59C1, 0x59B6, 0x59BC, 0x59C3, 0x59D6, 0x59B1,
- 0x59BD, 0x59C0, 0x59C8, 0x59B4, 0x59C7, 0x5B62, 0x5B65, 0x5B93,
- 0x5B95, 0x5C44, 0x5C47, 0x5CAE, 0x5CA4, 0x5CA0, 0x5CB5, 0x5CAF,
- 0x5CA8, 0x5CAC, 0x5C9F, 0x5CA3, 0x5CAD, 0x5CA2, 0x5CAA, 0x5CA7,
- 0x5C9D, 0x5CA5, 0x5CB6, 0x5CB0, 0x5CA6, 0x5E17, 0x5E14, 0x5E19,
- 0x5F28, 0x5F22, 0x5F23, 0x5F24, 0x5F54, 0x5F82, 0x5F7E, 0x5F7D,
- 0x5FDE, 0x5FE5, 0x602D, 0x6026, 0x6019, 0x6032, 0x600B,
- /* Big5-HKSCS 0xCCA1 .. 0xCCFE */
- 0x6034, 0x600A, 0x6017, 0x6033, 0x601A, 0x601E, 0x602C,
- 0x6022, 0x600D, 0x6010, 0x602E, 0x6013, 0x6011, 0x600C, 0x6009,
- 0x601C, 0x6214, 0x623D, 0x62AD, 0x62B4, 0x62D1, 0x62BE, 0x62AA,
- 0x62B6, 0x62CA, 0x62AE, 0x62B3, 0x62AF, 0x62BB, 0x62A9, 0x62B0,
- 0x62B8, 0x653D, 0x65A8, 0x65BB, 0x6609, 0x65FC, 0x6604, 0x6612,
- 0x6608, 0x65FB, 0x6603, 0x660B, 0x660D, 0x6605, 0x65FD, 0x6611,
- 0x6610, 0x66F6, 0x670A, 0x6785, 0x676C, 0x678E, 0x6792, 0x6776,
- 0x677B, 0x6798, 0x6786, 0x6784, 0x6774, 0x678D, 0x678C, 0x677A,
- 0x679F, 0x6791, 0x6799, 0x6783, 0x677D, 0x6781, 0x6778, 0x6779,
- 0x6794, 0x6B25, 0x6B80, 0x6B7E, 0x6BDE, 0x6C1D, 0x6C93, 0x6CEC,
- 0x6CEB, 0x6CEE, 0x6CD9, 0x6CB6, 0x6CD4, 0x6CAD, 0x6CE7, 0x6CB7,
- 0x6CD0, 0x6CC2, 0x6CBA, 0x6CC3, 0x6CC6, 0x6CED, 0x6CF2,
- /* Big5-HKSCS 0xCD40 .. 0xCD7E */
- 0x6CD2, 0x6CDD, 0x6CB4, 0x6C8A, 0x6C9D, 0x6C80, 0x6CDE, 0x6CC0,
- 0x6D30, 0x6CCD, 0x6CC7, 0x6CB0, 0x6CF9, 0x6CCF, 0x6CE9, 0x6CD1,
- 0x7094, 0x7098, 0x7085, 0x7093, 0x7086, 0x7084, 0x7091, 0x7096,
- 0x7082, 0x709A, 0x7083, 0x726A, 0x72D6, 0x72CB, 0x72D8, 0x72C9,
- 0x72DC, 0x72D2, 0x72D4, 0x72DA, 0x72CC, 0x72D1, 0x73A4, 0x73A1,
- 0x73AD, 0x73A6, 0x73A2, 0x73A0, 0x73AC, 0x739D, 0x74DD, 0x74E8,
- 0x753F, 0x7540, 0x753E, 0x758C, 0x7598, 0x76AF, 0x76F3, 0x76F1,
- 0x76F0, 0x76F5, 0x77F8, 0x77FC, 0x77F9, 0x77FB, 0x77FA,
- /* Big5-HKSCS 0xCDA1 .. 0xCDFE */
- 0x77F7, 0x7942, 0x793F, 0x79C5, 0x7A78, 0x7A7B, 0x7AFB,
- 0x7C75, 0x7CFD, 0x8035, 0x808F, 0x80AE, 0x80A3, 0x80B8, 0x80B5,
- 0x80AD, 0x8220, 0x82A0, 0x82C0, 0x82AB, 0x829A, 0x8298, 0x829B,
- 0x82B5, 0x82A7, 0x82AE, 0x82BC, 0x829E, 0x82BA, 0x82B4, 0x82A8,
- 0x82A1, 0x82A9, 0x82C2, 0x82A4, 0x82C3, 0x82B6, 0x82A2, 0x8670,
- 0x866F, 0x866D, 0x866E, 0x8C56, 0x8FD2, 0x8FCB, 0x8FD3, 0x8FCD,
- 0x8FD6, 0x8FD5, 0x8FD7, 0x90B2, 0x90B4, 0x90AF, 0x90B3, 0x90B0,
- 0x9639, 0x963D, 0x963C, 0x963A, 0x9643, 0x4FCD, 0x4FC5, 0x4FD3,
- 0x4FB2, 0x4FC9, 0x4FCB, 0x4FC1, 0x4FD4, 0x4FDC, 0x4FD9, 0x4FBB,
- 0x4FB3, 0x4FDB, 0x4FC7, 0x4FD6, 0x4FBA, 0x4FC0, 0x4FB9, 0x4FEC,
- 0x5244, 0x5249, 0x52C0, 0x52C2, 0x533D, 0x537C, 0x5397, 0x5396,
- 0x5399, 0x5398, 0x54BA, 0x54A1, 0x54AD, 0x54A5, 0x54CF,
- /* Big5-HKSCS 0xCE40 .. 0xCE7E */
- 0x54C3, 0x830D, 0x54B7, 0x54AE, 0x54D6, 0x54B6, 0x54C5, 0x54C6,
- 0x54A0, 0x5470, 0x54BC, 0x54A2, 0x54BE, 0x5472, 0x54DE, 0x54B0,
- 0x57B5, 0x579E, 0x579F, 0x57A4, 0x578C, 0x5797, 0x579D, 0x579B,
- 0x5794, 0x5798, 0x578F, 0x5799, 0x57A5, 0x579A, 0x5795, 0x58F4,
- 0x590D, 0x5953, 0x59E1, 0x59DE, 0x59EE, 0x5A00, 0x59F1, 0x59DD,
- 0x59FA, 0x59FD, 0x59FC, 0x59F6, 0x59E4, 0x59F2, 0x59F7, 0x59DB,
- 0x59E9, 0x59F3, 0x59F5, 0x59E0, 0x59FE, 0x59F4, 0x59ED, 0x5BA8,
- 0x5C4C, 0x5CD0, 0x5CD8, 0x5CCC, 0x5CD7, 0x5CCB, 0x5CDB,
- /* Big5-HKSCS 0xCEA1 .. 0xCEFE */
- 0x5CDE, 0x5CDA, 0x5CC9, 0x5CC7, 0x5CCA, 0x5CD6, 0x5CD3,
- 0x5CD4, 0x5CCF, 0x5CC8, 0x5CC6, 0x5CCE, 0x5CDF, 0x5CF8, 0x5DF9,
- 0x5E21, 0x5E22, 0x5E23, 0x5E20, 0x5E24, 0x5EB0, 0x5EA4, 0x5EA2,
- 0x5E9B, 0x5EA3, 0x5EA5, 0x5F07, 0x5F2E, 0x5F56, 0x5F86, 0x6037,
- 0x6039, 0x6054, 0x6072, 0x605E, 0x6045, 0x6053, 0x6047, 0x6049,
- 0x605B, 0x604C, 0x6040, 0x6042, 0x605F, 0x6024, 0x6044, 0x6058,
- 0x6066, 0x606E, 0x6242, 0x6243, 0x62CF, 0x630D, 0x630B, 0x62F5,
- 0x630E, 0x6303, 0x62EB, 0x62F9, 0x630F, 0x630C, 0x62F8, 0x62F6,
- 0x6300, 0x6313, 0x6314, 0x62FA, 0x6315, 0x62FB, 0x62F0, 0x6541,
- 0x6543, 0x65AA, 0x65BF, 0x6636, 0x6621, 0x6632, 0x6635, 0x661C,
- 0x6626, 0x6622, 0x6633, 0x662B, 0x663A, 0x661D, 0x6634, 0x6639,
- 0x662E, 0x670F, 0x6710, 0x67C1, 0x67F2, 0x67C8, 0x67BA,
- /* Big5-HKSCS 0xCF40 .. 0xCF7E */
- 0x67DC, 0x67BB, 0x67F8, 0x67D8, 0x67C0, 0x67B7, 0x67C5, 0x67EB,
- 0x67E4, 0x67DF, 0x67B5, 0x67CD, 0x67B3, 0x67F7, 0x67F6, 0x67EE,
- 0x67E3, 0x67C2, 0x67B9, 0x67CE, 0x67E7, 0x67F0, 0x67B2, 0x67FC,
- 0x67C6, 0x67ED, 0x67CC, 0x67AE, 0x67E6, 0x67DB, 0x67FA, 0x67C9,
- 0x67CA, 0x67C3, 0x67EA, 0x67CB, 0x6B28, 0x6B82, 0x6B84, 0x6BB6,
- 0x6BD6, 0x6BD8, 0x6BE0, 0x6C20, 0x6C21, 0x6D28, 0x6D34, 0x6D2D,
- 0x6D1F, 0x6D3C, 0x6D3F, 0x6D12, 0x6D0A, 0x6CDA, 0x6D33, 0x6D04,
- 0x6D19, 0x6D3A, 0x6D1A, 0x6D11, 0x6D00, 0x6D1D, 0x6D42,
- /* Big5-HKSCS 0xCFA1 .. 0xCFFE */
- 0x6D01, 0x6D18, 0x6D37, 0x6D03, 0x6D0F, 0x6D40, 0x6D07,
- 0x6D20, 0x6D2C, 0x6D08, 0x6D22, 0x6D09, 0x6D10, 0x70B7, 0x709F,
- 0x70BE, 0x70B1, 0x70B0, 0x70A1, 0x70B4, 0x70B5, 0x70A9, 0x7241,
- 0x7249, 0x724A, 0x726C, 0x7270, 0x7273, 0x726E, 0x72CA, 0x72E4,
- 0x72E8, 0x72EB, 0x72DF, 0x72EA, 0x72E6, 0x72E3, 0x7385, 0x73CC,
- 0x73C2, 0x73C8, 0x73C5, 0x73B9, 0x73B6, 0x73B5, 0x73B4, 0x73EB,
- 0x73BF, 0x73C7, 0x73BE, 0x73C3, 0x73C6, 0x73B8, 0x73CB, 0x74EC,
- 0x74EE, 0x752E, 0x7547, 0x7548, 0x75A7, 0x75AA, 0x7679, 0x76C4,
- 0x7708, 0x7703, 0x7704, 0x7705, 0x770A, 0x76F7, 0x76FB, 0x76FA,
- 0x77E7, 0x77E8, 0x7806, 0x7811, 0x7812, 0x7805, 0x7810, 0x780F,
- 0x780E, 0x7809, 0x7803, 0x7813, 0x794A, 0x794C, 0x794B, 0x7945,
- 0x7944, 0x79D5, 0x79CD, 0x79CF, 0x79D6, 0x79CE, 0x7A80,
- /* Big5-HKSCS 0xD040 .. 0xD07E */
- 0x7A7E, 0x7AD1, 0x7B00, 0x7B01, 0x7C7A, 0x7C78, 0x7C79, 0x7C7F,
- 0x7C80, 0x7C81, 0x7D03, 0x7D08, 0x7D01, 0x7F58, 0x7F91, 0x7F8D,
- 0x7FBE, 0x8007, 0x800E, 0x800F, 0x8014, 0x8037, 0x80D8, 0x80C7,
- 0x80E0, 0x80D1, 0x80C8, 0x80C2, 0x80D0, 0x80C5, 0x80E3, 0x80D9,
- 0x80DC, 0x80CA, 0x80D5, 0x80C9, 0x80CF, 0x80D7, 0x80E6, 0x80CD,
- 0x81FF, 0x8221, 0x8294, 0x82D9, 0x82FE, 0x82F9, 0x8307, 0x82E8,
- 0x8300, 0x82D5, 0x833A, 0x82EB, 0x82D6, 0x82F4, 0x82EC, 0x82E1,
- 0x82F2, 0x82F5, 0x830C, 0x82FB, 0x82F6, 0x82F0, 0x82EA,
- /* Big5-HKSCS 0xD0A1 .. 0xD0FE */
- 0x82E4, 0x82E0, 0x82FA, 0x82F3, 0x82ED, 0x8677, 0x8674,
- 0x867C, 0x8673, 0x8841, 0x884E, 0x8867, 0x886A, 0x8869, 0x89D3,
- 0x8A04, 0x8A07, 0x8D72, 0x8FE3, 0x8FE1, 0x8FEE, 0x8FE0, 0x90F1,
- 0x90BD, 0x90BF, 0x90D5, 0x90C5, 0x90BE, 0x90C7, 0x90CB, 0x90C8,
- 0x91D4, 0x91D3, 0x9654, 0x964F, 0x9651, 0x9653, 0x964A, 0x964E,
- 0x501E, 0x5005, 0x5007, 0x5013, 0x5022, 0x5030, 0x501B, 0x4FF5,
- 0x4FF4, 0x5033, 0x5037, 0x502C, 0x4FF6, 0x4FF7, 0x5017, 0x501C,
- 0x5020, 0x5027, 0x5035, 0x502F, 0x5031, 0x500E, 0x515A, 0x5194,
- 0x5193, 0x51CA, 0x51C4, 0x51C5, 0x51C8, 0x51CE, 0x5261, 0x525A,
- 0x5252, 0x525E, 0x525F, 0x5255, 0x5262, 0x52CD, 0x530E, 0x539E,
- 0x5526, 0x54E2, 0x5517, 0x5512, 0x54E7, 0x54F3, 0x54E4, 0x551A,
- 0x54FF, 0x5504, 0x5508, 0x54EB, 0x5511, 0x5505, 0x54F1,
- /* Big5-HKSCS 0xD140 .. 0xD17E */
- 0x550A, 0x54FB, 0x54F7, 0x54F8, 0x54E0, 0x550E, 0x5503, 0x550B,
- 0x5701, 0x5702, 0x57CC, 0x5832, 0x57D5, 0x57D2, 0x57BA, 0x57C6,
- 0x57BD, 0x57BC, 0x57B8, 0x57B6, 0x57BF, 0x57C7, 0x57D0, 0x57B9,
- 0x57C1, 0x590E, 0x594A, 0x5A19, 0x5A16, 0x5A2D, 0x5A2E, 0x5A15,
- 0x5A0F, 0x5A17, 0x5A0A, 0x5A1E, 0x5A33, 0x5B6C, 0x5BA7, 0x5BAD,
- 0x5BAC, 0x5C03, 0x5C56, 0x5C54, 0x5CEC, 0x5CFF, 0x5CEE, 0x5CF1,
- 0x5CF7, 0x5D00, 0x5CF9, 0x5E29, 0x5E28, 0x5EA8, 0x5EAE, 0x5EAA,
- 0x5EAC, 0x5F33, 0x5F30, 0x5F67, 0x605D, 0x605A, 0x6067,
- /* Big5-HKSCS 0xD1A1 .. 0xD1FE */
- 0x6041, 0x60A2, 0x6088, 0x6080, 0x6092, 0x6081, 0x609D,
- 0x6083, 0x6095, 0x609B, 0x6097, 0x6087, 0x609C, 0x608E, 0x6219,
- 0x6246, 0x62F2, 0x6310, 0x6356, 0x632C, 0x6344, 0x6345, 0x6336,
- 0x6343, 0x63E4, 0x6339, 0x634B, 0x634A, 0x633C, 0x6329, 0x6341,
- 0x6334, 0x6358, 0x6354, 0x6359, 0x632D, 0x6347, 0x6333, 0x635A,
- 0x6351, 0x6338, 0x6357, 0x6340, 0x6348, 0x654A, 0x6546, 0x65C6,
- 0x65C3, 0x65C4, 0x65C2, 0x664A, 0x665F, 0x6647, 0x6651, 0x6712,
- 0x6713, 0x681F, 0x681A, 0x6849, 0x6832, 0x6833, 0x683B, 0x684B,
- 0x684F, 0x6816, 0x6831, 0x681C, 0x6835, 0x682B, 0x682D, 0x682F,
- 0x684E, 0x6844, 0x6834, 0x681D, 0x6812, 0x6814, 0x6826, 0x6828,
- 0x682E, 0x684D, 0x683A, 0x6825, 0x6820, 0x6B2C, 0x6B2F, 0x6B2D,
- 0x6B31, 0x6B34, 0x6B6D, 0x8082, 0x6B88, 0x6BE6, 0x6BE4,
- /* Big5-HKSCS 0xD240 .. 0xD27E */
- 0x6BE8, 0x6BE3, 0x6BE2, 0x6BE7, 0x6C25, 0x6D7A, 0x6D63, 0x6D64,
- 0x6D76, 0x6D0D, 0x6D61, 0x6D92, 0x6D58, 0x6D62, 0x6D6D, 0x6D6F,
- 0x6D91, 0x6D8D, 0x6DEF, 0x6D7F, 0x6D86, 0x6D5E, 0x6D67, 0x6D60,
- 0x6D97, 0x6D70, 0x6D7C, 0x6D5F, 0x6D82, 0x6D98, 0x6D2F, 0x6D68,
- 0x6D8B, 0x6D7E, 0x6D80, 0x6D84, 0x6D16, 0x6D83, 0x6D7B, 0x6D7D,
- 0x6D75, 0x6D90, 0x70DC, 0x70D3, 0x70D1, 0x70DD, 0x70CB, 0x7F39,
- 0x70E2, 0x70D7, 0x70D2, 0x70DE, 0x70E0, 0x70D4, 0x70CD, 0x70C5,
- 0x70C6, 0x70C7, 0x70DA, 0x70CE, 0x70E1, 0x7242, 0x7278,
- /* Big5-HKSCS 0xD2A1 .. 0xD2FE */
- 0x7277, 0x7276, 0x7300, 0x72FA, 0x72F4, 0x72FE, 0x72F6,
- 0x72F3, 0x72FB, 0x7301, 0x73D3, 0x73D9, 0x73E5, 0x73D6, 0x73BC,
- 0x73E7, 0x73E3, 0x73E9, 0x73DC, 0x73D2, 0x73DB, 0x73D4, 0x73DD,
- 0x73DA, 0x73D7, 0x73D8, 0x73E8, 0x74DE, 0x74DF, 0x74F4, 0x74F5,
- 0x7521, 0x755B, 0x755F, 0x75B0, 0x75C1, 0x75BB, 0x75C4, 0x75C0,
- 0x75BF, 0x75B6, 0x75BA, 0x768A, 0x76C9, 0x771D, 0x771B, 0x7710,
- 0x7713, 0x7712, 0x7723, 0x7711, 0x7715, 0x7719, 0x771A, 0x7722,
- 0x7727, 0x7823, 0x782C, 0x7822, 0x7835, 0x782F, 0x7828, 0x782E,
- 0x782B, 0x7821, 0x7829, 0x7833, 0x782A, 0x7831, 0x7954, 0x795B,
- 0x794F, 0x795C, 0x7953, 0x7952, 0x7951, 0x79EB, 0x79EC, 0x79E0,
- 0x79EE, 0x79ED, 0x79EA, 0x79DC, 0x79DE, 0x79DD, 0x7A86, 0x7A89,
- 0x7A85, 0x7A8B, 0x7A8C, 0x7A8A, 0x7A87, 0x7AD8, 0x7B10,
- /* Big5-HKSCS 0xD340 .. 0xD37E */
- 0x7B04, 0x7B13, 0x7B05, 0x7B0F, 0x7B08, 0x7B0A, 0x7B0E, 0x7B09,
- 0x7B12, 0x7C84, 0x7C91, 0x7C8A, 0x7C8C, 0x7C88, 0x7C8D, 0x7C85,
- 0x7D1E, 0x7D1D, 0x7D11, 0x7D0E, 0x7D18, 0x7D16, 0x7D13, 0x7D1F,
- 0x7D12, 0x7D0F, 0x7D0C, 0x7F5C, 0x7F61, 0x7F5E, 0x7F60, 0x7F5D,
- 0x7F5B, 0x7F96, 0x7F92, 0x7FC3, 0x7FC2, 0x7FC0, 0x8016, 0x803E,
- 0x8039, 0x80FA, 0x80F2, 0x80F9, 0x80F5, 0x8101, 0x80FB, 0x8100,
- 0x8201, 0x822F, 0x8225, 0x8333, 0x832D, 0x8344, 0x8319, 0x8351,
- 0x8325, 0x8356, 0x833F, 0x8341, 0x8326, 0x831C, 0x8322,
- /* Big5-HKSCS 0xD3A1 .. 0xD3FE */
- 0x8342, 0x834E, 0x831B, 0x832A, 0x8308, 0x833C, 0x834D,
- 0x8316, 0x8324, 0x8320, 0x8337, 0x832F, 0x8329, 0x8347, 0x8345,
- 0x834C, 0x8353, 0x831E, 0x832C, 0x834B, 0x8327, 0x8348, 0x8653,
- 0x8652, 0x86A2, 0x86A8, 0x8696, 0x868D, 0x8691, 0x869E, 0x8687,
- 0x8697, 0x8686, 0x868B, 0x869A, 0x8685, 0x86A5, 0x8699, 0x86A1,
- 0x86A7, 0x8695, 0x8698, 0x868E, 0x869D, 0x8690, 0x8694, 0x8843,
- 0x8844, 0x886D, 0x8875, 0x8876, 0x8872, 0x8880, 0x8871, 0x887F,
- 0x886F, 0x8883, 0x887E, 0x8874, 0x887C, 0x8A12, 0x8C47, 0x8C57,
- 0x8C7B, 0x8CA4, 0x8CA3, 0x8D76, 0x8D78, 0x8DB5, 0x8DB7, 0x8DB6,
- 0x8ED1, 0x8ED3, 0x8FFE, 0x8FF5, 0x9002, 0x8FFF, 0x8FFB, 0x9004,
- 0x8FFC, 0x8FF6, 0x90D6, 0x90E0, 0x90D9, 0x90DA, 0x90E3, 0x90DF,
- 0x90E5, 0x90D8, 0x90DB, 0x90D7, 0x90DC, 0x90E4, 0x9150,
- /* Big5-HKSCS 0xD440 .. 0xD47E */
- 0x914E, 0x914F, 0x91D5, 0x91E2, 0x91DA, 0x965C, 0x965F, 0x96BC,
- 0x98E3, 0x9ADF, 0x9B2F, 0x4E7F, 0x5070, 0x506A, 0x5061, 0x505E,
- 0x5060, 0x5053, 0x504B, 0x505D, 0x5072, 0x5048, 0x504D, 0x5041,
- 0x505B, 0x504A, 0x5062, 0x5015, 0x5045, 0x505F, 0x5069, 0x506B,
- 0x5063, 0x5064, 0x5046, 0x5040, 0x506E, 0x5073, 0x5057, 0x5051,
- 0x51D0, 0x526B, 0x526D, 0x526C, 0x526E, 0x52D6, 0x52D3, 0x532D,
- 0x539C, 0x5575, 0x5576, 0x553C, 0x554D, 0x5550, 0x5534, 0x552A,
- 0x5551, 0x5562, 0x5536, 0x5535, 0x5530, 0x5552, 0x5545,
- /* Big5-HKSCS 0xD4A1 .. 0xD4FE */
- 0x550C, 0x5532, 0x5565, 0x554E, 0x5539, 0x5548, 0x552D,
- 0x553B, 0x5540, 0x554B, 0x570A, 0x5707, 0x57FB, 0x5814, 0x57E2,
- 0x57F6, 0x57DC, 0x57F4, 0x5800, 0x57ED, 0x57FD, 0x5808, 0x57F8,
- 0x580B, 0x57F3, 0x57CF, 0x5807, 0x57EE, 0x57E3, 0x57F2, 0x57E5,
- 0x57EC, 0x57E1, 0x580E, 0x57FC, 0x5810, 0x57E7, 0x5801, 0x580C,
- 0x57F1, 0x57E9, 0x57F0, 0x580D, 0x5804, 0x595C, 0x5A60, 0x5A58,
- 0x5A55, 0x5A67, 0x5A5E, 0x5A38, 0x5A35, 0x5A6D, 0x5A50, 0x5A5F,
- 0x5A65, 0x5A6C, 0x5A53, 0x5A64, 0x5A57, 0x5A43, 0x5A5D, 0x5A52,
- 0x5A44, 0x5A5B, 0x5A48, 0x5A8E, 0x5A3E, 0x5A4D, 0x5A39, 0x5A4C,
- 0x5A70, 0x5A69, 0x5A47, 0x5A51, 0x5A56, 0x5A42, 0x5A5C, 0x5B72,
- 0x5B6E, 0x5BC1, 0x5BC0, 0x5C59, 0x5D1E, 0x5D0B, 0x5D1D, 0x5D1A,
- 0x5D20, 0x5D0C, 0x5D28, 0x5D0D, 0x5D26, 0x5D25, 0x5D0F,
- /* Big5-HKSCS 0xD540 .. 0xD57E */
- 0x5D30, 0x5D12, 0x5D23, 0x5D1F, 0x5D2E, 0x5E3E, 0x5E34, 0x5EB1,
- 0x5EB4, 0x5EB9, 0x5EB2, 0x5EB3, 0x5F36, 0x5F38, 0x5F9B, 0x5F96,
- 0x5F9F, 0x608A, 0x6090, 0x6086, 0x60BE, 0x60B0, 0x60BA, 0x60D3,
- 0x60D4, 0x60CF, 0x60E4, 0x60D9, 0x60DD, 0x60C8, 0x60B1, 0x60DB,
- 0x60B7, 0x60CA, 0x60BF, 0x60C3, 0x60CD, 0x60C0, 0x6332, 0x6365,
- 0x638A, 0x6382, 0x637D, 0x63BD, 0x639E, 0x63AD, 0x639D, 0x6397,
- 0x63AB, 0x638E, 0x636F, 0x6387, 0x6390, 0x636E, 0x63AF, 0x6375,
- 0x639C, 0x636D, 0x63AE, 0x637C, 0x63A4, 0x633B, 0x639F,
- /* Big5-HKSCS 0xD5A1 .. 0xD5FE */
- 0x6378, 0x6385, 0x6381, 0x6391, 0x638D, 0x6370, 0x6553,
- 0x65CD, 0x6665, 0x6661, 0x665B, 0x6659, 0x665C, 0x6662, 0x6718,
- 0x6879, 0x6887, 0x6890, 0x689C, 0x686D, 0x686E, 0x68AE, 0x68AB,
- 0x6956, 0x686F, 0x68A3, 0x68AC, 0x68A9, 0x6875, 0x6874, 0x68B2,
- 0x688F, 0x6877, 0x6892, 0x687C, 0x686B, 0x6872, 0x68AA, 0x6880,
- 0x6871, 0x687E, 0x689B, 0x6896, 0x688B, 0x68A0, 0x6889, 0x68A4,
- 0x6878, 0x687B, 0x6891, 0x688C, 0x688A, 0x687D, 0x6B36, 0x6B33,
- 0x6B37, 0x6B38, 0x6B91, 0x6B8F, 0x6B8D, 0x6B8E, 0x6B8C, 0x6C2A,
- 0x6DC0, 0x6DAB, 0x6DB4, 0x6DB3, 0x6E74, 0x6DAC, 0x6DE9, 0x6DE2,
- 0x6DB7, 0x6DF6, 0x6DD4, 0x6E00, 0x6DC8, 0x6DE0, 0x6DDF, 0x6DD6,
- 0x6DBE, 0x6DE5, 0x6DDC, 0x6DDD, 0x6DDB, 0x6DF4, 0x6DCA, 0x6DBD,
- 0x6DED, 0x6DF0, 0x6DBA, 0x6DD5, 0x6DC2, 0x6DCF, 0x6DC9,
- /* Big5-HKSCS 0xD640 .. 0xD67E */
- 0x6DD0, 0x6DF2, 0x6DD3, 0x6DFD, 0x6DD7, 0x6DCD, 0x6DE3, 0x6DBB,
- 0x70FA, 0x710D, 0x70F7, 0x7117, 0x70F4, 0x710C, 0x70F0, 0x7104,
- 0x70F3, 0x7110, 0x70FC, 0x70FF, 0x7106, 0x7113, 0x7100, 0x70F8,
- 0x70F6, 0x710B, 0x7102, 0x710E, 0x727E, 0x727B, 0x727C, 0x727F,
- 0x731D, 0x7317, 0x7307, 0x7311, 0x7318, 0x730A, 0x7308, 0x72FF,
- 0x730F, 0x731E, 0x7388, 0x73F6, 0x73F8, 0x73F5, 0x7404, 0x7401,
- 0x73FD, 0x7407, 0x7400, 0x73FA, 0x73FC, 0x73FF, 0x740C, 0x740B,
- 0x73F4, 0x7408, 0x7564, 0x7563, 0x75CE, 0x75D2, 0x75CF,
- /* Big5-HKSCS 0xD6A1 .. 0xD6FE */
- 0x75CB, 0x75CC, 0x75D1, 0x75D0, 0x768F, 0x7689, 0x76D3,
- 0x7739, 0x772F, 0x772D, 0x7731, 0x7732, 0x7734, 0x7733, 0x773D,
- 0x7725, 0x773B, 0x7735, 0x7848, 0x7852, 0x7849, 0x784D, 0x784A,
- 0x784C, 0x7826, 0x7845, 0x7850, 0x7964, 0x7967, 0x7969, 0x796A,
- 0x7963, 0x796B, 0x7961, 0x79BB, 0x79FA, 0x79F8, 0x79F6, 0x79F7,
- 0x7A8F, 0x7A94, 0x7A90, 0x7B35, 0x7B47, 0x7B34, 0x7B25, 0x7B30,
- 0x7B22, 0x7B24, 0x7B33, 0x7B18, 0x7B2A, 0x7B1D, 0x7B31, 0x7B2B,
- 0x7B2D, 0x7B2F, 0x7B32, 0x7B38, 0x7B1A, 0x7B23, 0x7C94, 0x7C98,
- 0x7C96, 0x7CA3, 0x7D35, 0x7D3D, 0x7D38, 0x7D36, 0x7D3A, 0x7D45,
- 0x7D2C, 0x7D29, 0x7D41, 0x7D47, 0x7D3E, 0x7D3F, 0x7D4A, 0x7D3B,
- 0x7D28, 0x7F63, 0x7F95, 0x7F9C, 0x7F9D, 0x7F9B, 0x7FCA, 0x7FCB,
- 0x7FCD, 0x7FD0, 0x7FD1, 0x7FC7, 0x7FCF, 0x7FC9, 0x801F,
- /* Big5-HKSCS 0xD740 .. 0xD77E */
- 0x801E, 0x801B, 0x8047, 0x8043, 0x8048, 0x8118, 0x8125, 0x8119,
- 0x811B, 0x812D, 0x811F, 0x812C, 0x811E, 0x8121, 0x8115, 0x8127,
- 0x811D, 0x8122, 0x8211, 0x8238, 0x8233, 0x823A, 0x8234, 0x8232,
- 0x8274, 0x8390, 0x83A3, 0x83A8, 0x838D, 0x837A, 0x8373, 0x83A4,
- 0x8374, 0x838F, 0x8381, 0x8395, 0x8399, 0x8375, 0x8394, 0x83A9,
- 0x837D, 0x8383, 0x838C, 0x839D, 0x839B, 0x83AA, 0x838B, 0x837E,
- 0x83A5, 0x83AF, 0x8388, 0x8397, 0x83B0, 0x837F, 0x83A6, 0x8387,
- 0x83AE, 0x8376, 0x839A, 0x8659, 0x8656, 0x86BF, 0x86B7,
- /* Big5-HKSCS 0xD7A1 .. 0xD7FE */
- 0x86C2, 0x86C1, 0x86C5, 0x86BA, 0x86B0, 0x86C8, 0x86B9,
- 0x86B3, 0x86B8, 0x86CC, 0x86B4, 0x86BB, 0x86BC, 0x86C3, 0x86BD,
- 0x86BE, 0x8852, 0x8889, 0x8895, 0x88A8, 0x88A2, 0x88AA, 0x889A,
- 0x8891, 0x88A1, 0x889F, 0x8898, 0x88A7, 0x8899, 0x889B, 0x8897,
- 0x88A4, 0x88AC, 0x888C, 0x8893, 0x888E, 0x8982, 0x89D6, 0x89D9,
- 0x89D5, 0x8A30, 0x8A27, 0x8A2C, 0x8A1E, 0x8C39, 0x8C3B, 0x8C5C,
- 0x8C5D, 0x8C7D, 0x8CA5, 0x8D7D, 0x8D7B, 0x8D79, 0x8DBC, 0x8DC2,
- 0x8DB9, 0x8DBF, 0x8DC1, 0x8ED8, 0x8EDE, 0x8EDD, 0x8EDC, 0x8ED7,
- 0x8EE0, 0x8EE1, 0x9024, 0x900B, 0x9011, 0x901C, 0x900C, 0x9021,
- 0x90EF, 0x90EA, 0x90F0, 0x90F4, 0x90F2, 0x90F3, 0x90D4, 0x90EB,
- 0x90EC, 0x90E9, 0x9156, 0x9158, 0x915A, 0x9153, 0x9155, 0x91EC,
- 0x91F4, 0x91F1, 0x91F3, 0x91F8, 0x91E4, 0x91F9, 0x91EA,
- /* Big5-HKSCS 0xD840 .. 0xD87E */
- 0x91EB, 0x91F7, 0x91E8, 0x91EE, 0x957A, 0x9586, 0x9588, 0x967C,
- 0x966D, 0x966B, 0x9671, 0x966F, 0x96BF, 0x976A, 0x9804, 0x98E5,
- 0x9997, 0x509B, 0x5095, 0x5094, 0x509E, 0x508B, 0x50A3, 0x5083,
- 0x508C, 0x508E, 0x509D, 0x5068, 0x509C, 0x5092, 0x5082, 0x5087,
- 0x515F, 0x51D4, 0x5312, 0x5311, 0x53A4, 0x53A7, 0x5591, 0x55A8,
- 0x55A5, 0x55AD, 0x5577, 0x5645, 0x55A2, 0x5593, 0x5588, 0x558F,
- 0x55B5, 0x5581, 0x55A3, 0x5592, 0x55A4, 0x557D, 0x558C, 0x55A6,
- 0x557F, 0x5595, 0x55A1, 0x558E, 0x570C, 0x5829, 0x5837,
- /* Big5-HKSCS 0xD8A1 .. 0xD8FE */
- 0x5819, 0x581E, 0x5827, 0x5823, 0x5828, 0x57F5, 0x5848,
- 0x5825, 0x581C, 0x581B, 0x5833, 0x583F, 0x5836, 0x582E, 0x5839,
- 0x5838, 0x582D, 0x582C, 0x583B, 0x5961, 0x5AAF, 0x5A94, 0x5A9F,
- 0x5A7A, 0x5AA2, 0x5A9E, 0x5A78, 0x5AA6, 0x5A7C, 0x5AA5, 0x5AAC,
- 0x5A95, 0x5AAE, 0x5A37, 0x5A84, 0x5A8A, 0x5A97, 0x5A83, 0x5A8B,
- 0x5AA9, 0x5A7B, 0x5A7D, 0x5A8C, 0x5A9C, 0x5A8F, 0x5A93, 0x5A9D,
- 0x5BEA, 0x5BCD, 0x5BCB, 0x5BD4, 0x5BD1, 0x5BCA, 0x5BCE, 0x5C0C,
- 0x5C30, 0x5D37, 0x5D43, 0x5D6B, 0x5D41, 0x5D4B, 0x5D3F, 0x5D35,
- 0x5D51, 0x5D4E, 0x5D55, 0x5D33, 0x5D3A, 0x5D52, 0x5D3D, 0x5D31,
- 0x5D59, 0x5D42, 0x5D39, 0x5D49, 0x5D38, 0x5D3C, 0x5D32, 0x5D36,
- 0x5D40, 0x5D45, 0x5E44, 0x5E41, 0x5F58, 0x5FA6, 0x5FA5, 0x5FAB,
- 0x60C9, 0x60B9, 0x60CC, 0x60E2, 0x60CE, 0x60C4, 0x6114,
- /* Big5-HKSCS 0xD940 .. 0xD97E */
- 0x60F2, 0x610A, 0x6116, 0x6105, 0x60F5, 0x6113, 0x60F8, 0x60FC,
- 0x60FE, 0x60C1, 0x6103, 0x6118, 0x611D, 0x6110, 0x60FF, 0x6104,
- 0x610B, 0x624A, 0x6394, 0x63B1, 0x63B0, 0x63CE, 0x63E5, 0x63E8,
- 0x63EF, 0x63C3, 0x649D, 0x63F3, 0x63CA, 0x63E0, 0x63F6, 0x63D5,
- 0x63F2, 0x63F5, 0x6461, 0x63DF, 0x63BE, 0x63DD, 0x63DC, 0x63C4,
- 0x63D8, 0x63D3, 0x63C2, 0x63C7, 0x63CC, 0x63CB, 0x63C8, 0x63F0,
- 0x63D7, 0x63D9, 0x6532, 0x6567, 0x656A, 0x6564, 0x655C, 0x6568,
- 0x6565, 0x658C, 0x659D, 0x659E, 0x65AE, 0x65D0, 0x65D2,
- /* Big5-HKSCS 0xD9A1 .. 0xD9FE */
- 0x667C, 0x666C, 0x667B, 0x6680, 0x6671, 0x6679, 0x666A,
- 0x6672, 0x6701, 0x690C, 0x68D3, 0x6904, 0x68DC, 0x692A, 0x68EC,
- 0x68EA, 0x68F1, 0x690F, 0x68D6, 0x68F7, 0x68EB, 0x68E4, 0x68F6,
- 0x6913, 0x6910, 0x68F3, 0x68E1, 0x6907, 0x68CC, 0x6908, 0x6970,
- 0x68B4, 0x6911, 0x68EF, 0x68C6, 0x6914, 0x68F8, 0x68D0, 0x68FD,
- 0x68FC, 0x68E8, 0x690B, 0x690A, 0x6917, 0x68CE, 0x68C8, 0x68DD,
- 0x68DE, 0x68E6, 0x68F4, 0x68D1, 0x6906, 0x68D4, 0x68E9, 0x6915,
- 0x6925, 0x68C7, 0x6B39, 0x6B3B, 0x6B3F, 0x6B3C, 0x6B94, 0x6B97,
- 0x6B99, 0x6B95, 0x6BBD, 0x6BF0, 0x6BF2, 0x6BF3, 0x6C30, 0x6DFC,
- 0x6E46, 0x6E47, 0x6E1F, 0x6E49, 0x6E88, 0x6E3C, 0x6E3D, 0x6E45,
- 0x6E62, 0x6E2B, 0x6E3F, 0x6E41, 0x6E5D, 0x6E73, 0x6E1C, 0x6E33,
- 0x6E4B, 0x6E40, 0x6E51, 0x6E3B, 0x6E03, 0x6E2E, 0x6E5E,
- /* Big5-HKSCS 0xDA40 .. 0xDA7E */
- 0x6E68, 0x6E5C, 0x6E61, 0x6E31, 0x6E28, 0x6E60, 0x6E71, 0x6E6B,
- 0x6E39, 0x6E22, 0x6E30, 0x6E53, 0x6E65, 0x6E27, 0x6E78, 0x6E64,
- 0x6E77, 0x6E55, 0x6E79, 0x6E52, 0x6E66, 0x6E35, 0x6E36, 0x6E5A,
- 0x7120, 0x711E, 0x712F, 0x70FB, 0x712E, 0x7131, 0x7123, 0x7125,
- 0x7122, 0x7132, 0x711F, 0x7128, 0x713A, 0x711B, 0x724B, 0x725A,
- 0x7288, 0x7289, 0x7286, 0x7285, 0x728B, 0x7312, 0x730B, 0x7330,
- 0x7322, 0x7331, 0x7333, 0x7327, 0x7332, 0x732D, 0x7326, 0x7323,
- 0x7335, 0x730C, 0x742E, 0x742C, 0x7430, 0x742B, 0x7416,
- /* Big5-HKSCS 0xDAA1 .. 0xDAFE */
- 0x741A, 0x7421, 0x742D, 0x7431, 0x7424, 0x7423, 0x741D,
- 0x7429, 0x7420, 0x7432, 0x74FB, 0x752F, 0x756F, 0x756C, 0x75E7,
- 0x75DA, 0x75E1, 0x75E6, 0x75DD, 0x75DF, 0x75E4, 0x75D7, 0x7695,
- 0x7692, 0x76DA, 0x7746, 0x7747, 0x7744, 0x774D, 0x7745, 0x774A,
- 0x774E, 0x774B, 0x774C, 0x77DE, 0x77EC, 0x7860, 0x7864, 0x7865,
- 0x785C, 0x786D, 0x7871, 0x786A, 0x786E, 0x7870, 0x7869, 0x7868,
- 0x785E, 0x7862, 0x7974, 0x7973, 0x7972, 0x7970, 0x7A02, 0x7A0A,
- 0x7A03, 0x7A0C, 0x7A04, 0x7A99, 0x7AE6, 0x7AE4, 0x7B4A, 0x7B3B,
- 0x7B44, 0x7B48, 0x7B4C, 0x7B4E, 0x7B40, 0x7B58, 0x7B45, 0x7CA2,
- 0x7C9E, 0x7CA8, 0x7CA1, 0x7D58, 0x7D6F, 0x7D63, 0x7D53, 0x7D56,
- 0x7D67, 0x7D6A, 0x7D4F, 0x7D6D, 0x7D5C, 0x7D6B, 0x7D52, 0x7D54,
- 0x7D69, 0x7D51, 0x7D5F, 0x7D4E, 0x7F3E, 0x7F3F, 0x7F65,
- /* Big5-HKSCS 0xDB40 .. 0xDB7E */
- 0x7F66, 0x7FA2, 0x7FA0, 0x7FA1, 0x7FD7, 0x8051, 0x804F, 0x8050,
- 0x80FE, 0x80D4, 0x8143, 0x814A, 0x8152, 0x814F, 0x8147, 0x813D,
- 0x814D, 0x813A, 0x81E6, 0x81EE, 0x81F7, 0x81F8, 0x81F9, 0x8204,
- 0x823C, 0x823D, 0x823F, 0x8275, 0x833B, 0x83CF, 0x83F9, 0x8423,
- 0x83C0, 0x83E8, 0x8412, 0x83E7, 0x83E4, 0x83FC, 0x83F6, 0x8410,
- 0x83C6, 0x83C8, 0x83EB, 0x83E3, 0x83BF, 0x8401, 0x83DD, 0x83E5,
- 0x83D8, 0x83FF, 0x83E1, 0x83CB, 0x83CE, 0x83D6, 0x83F5, 0x83C9,
- 0x8409, 0x840F, 0x83DE, 0x8411, 0x8406, 0x83C2, 0x83F3,
- /* Big5-HKSCS 0xDBA1 .. 0xDBFE */
- 0x83D5, 0x83FA, 0x83C7, 0x83D1, 0x83EA, 0x8413, 0x83C3,
- 0x83EC, 0x83EE, 0x83C4, 0x83FB, 0x83D7, 0x83E2, 0x841B, 0x83DB,
- 0x83FE, 0x86D8, 0x86E2, 0x86E6, 0x86D3, 0x86E3, 0x86DA, 0x86EA,
- 0x86DD, 0x86EB, 0x86DC, 0x86EC, 0x86E9, 0x86D7, 0x86E8, 0x86D1,
- 0x8848, 0x8856, 0x8855, 0x88BA, 0x88D7, 0x88B9, 0x88B8, 0x88C0,
- 0x88BE, 0x88B6, 0x88BC, 0x88B7, 0x88BD, 0x88B2, 0x8901, 0x88C9,
- 0x8995, 0x8998, 0x8997, 0x89DD, 0x89DA, 0x89DB, 0x8A4E, 0x8A4D,
- 0x8A39, 0x8A59, 0x8A40, 0x8A57, 0x8A58, 0x8A44, 0x8A45, 0x8A52,
- 0x8A48, 0x8A51, 0x8A4A, 0x8A4C, 0x8A4F, 0x8C5F, 0x8C81, 0x8C80,
- 0x8CBA, 0x8CBE, 0x8CB0, 0x8CB9, 0x8CB5, 0x8D84, 0x8D80, 0x8D89,
- 0x8DD8, 0x8DD3, 0x8DCD, 0x8DC7, 0x8DD6, 0x8DDC, 0x8DCF, 0x8DD5,
- 0x8DD9, 0x8DC8, 0x8DD7, 0x8DC5, 0x8EEF, 0x8EF7, 0x8EFA,
- /* Big5-HKSCS 0xDC40 .. 0xDC7E */
- 0x8EF9, 0x8EE6, 0x8EEE, 0x8EE5, 0x8EF5, 0x8EE7, 0x8EE8, 0x8EF6,
- 0x8EEB, 0x8EF1, 0x8EEC, 0x8EF4, 0x8EE9, 0x902D, 0x9034, 0x902F,
- 0x9106, 0x912C, 0x9104, 0x90FF, 0x90FC, 0x9108, 0x90F9, 0x90FB,
- 0x9101, 0x9100, 0x9107, 0x9105, 0x9103, 0x9161, 0x9164, 0x915F,
- 0x9162, 0x9160, 0x9201, 0x920A, 0x9225, 0x9203, 0x921A, 0x9226,
- 0x920F, 0x920C, 0x9200, 0x9212, 0x91FF, 0x91FD, 0x9206, 0x9204,
- 0x9227, 0x9202, 0x921C, 0x9224, 0x9219, 0x9217, 0x9205, 0x9216,
- 0x957B, 0x958D, 0x958C, 0x9590, 0x9687, 0x967E, 0x9688,
- /* Big5-HKSCS 0xDCA1 .. 0xDCFE */
- 0x9689, 0x9683, 0x9680, 0x96C2, 0x96C8, 0x96C3, 0x96F1,
- 0x96F0, 0x976C, 0x9770, 0x976E, 0x9807, 0x98A9, 0x98EB, 0x9CE6,
- 0x9EF9, 0x4E83, 0x4E84, 0x4EB6, 0x50BD, 0x50BF, 0x50C6, 0x50AE,
- 0x50C4, 0x50CA, 0x50B4, 0x50C8, 0x50C2, 0x50B0, 0x50C1, 0x50BA,
- 0x50B1, 0x50CB, 0x50C9, 0x50B6, 0x50B8, 0x51D7, 0x527A, 0x5278,
- 0x527B, 0x527C, 0x55C3, 0x55DB, 0x55CC, 0x55D0, 0x55CB, 0x55CA,
- 0x55DD, 0x55C0, 0x55D4, 0x55C4, 0x55E9, 0x55BF, 0x55D2, 0x558D,
- 0x55CF, 0x55D5, 0x55E2, 0x55D6, 0x55C8, 0x55F2, 0x55CD, 0x55D9,
- 0x55C2, 0x5714, 0x5853, 0x5868, 0x5864, 0x584F, 0x584D, 0x5849,
- 0x586F, 0x5855, 0x584E, 0x585D, 0x5859, 0x5865, 0x585B, 0x583D,
- 0x5863, 0x5871, 0x58FC, 0x5AC7, 0x5AC4, 0x5ACB, 0x5ABA, 0x5AB8,
- 0x5AB1, 0x5AB5, 0x5AB0, 0x5ABF, 0x5AC8, 0x5ABB, 0x5AC6,
- /* Big5-HKSCS 0xDD40 .. 0xDD7E */
- 0x5AB7, 0x5AC0, 0x5ACA, 0x5AB4, 0x5AB6, 0x5ACD, 0x5AB9, 0x5A90,
- 0x5BD6, 0x5BD8, 0x5BD9, 0x5C1F, 0x5C33, 0x5D71, 0x5D63, 0x5D4A,
- 0x5D65, 0x5D72, 0x5D6C, 0x5D5E, 0x5D68, 0x5D67, 0x5D62, 0x5DF0,
- 0x5E4F, 0x5E4E, 0x5E4A, 0x5E4D, 0x5E4B, 0x5EC5, 0x5ECC, 0x5EC6,
- 0x5ECB, 0x5EC7, 0x5F40, 0x5FAF, 0x5FAD, 0x60F7, 0x6149, 0x614A,
- 0x612B, 0x6145, 0x6136, 0x6132, 0x612E, 0x6146, 0x612F, 0x614F,
- 0x6129, 0x6140, 0x6220, 0x9168, 0x6223, 0x6225, 0x6224, 0x63C5,
- 0x63F1, 0x63EB, 0x6410, 0x6412, 0x6409, 0x6420, 0x6424,
- /* Big5-HKSCS 0xDDA1 .. 0xDDFE */
- 0x6433, 0x6443, 0x641F, 0x6415, 0x6418, 0x6439, 0x6437,
- 0x6422, 0x6423, 0x640C, 0x6426, 0x6430, 0x6428, 0x6441, 0x6435,
- 0x642F, 0x640A, 0x641A, 0x6440, 0x6425, 0x6427, 0x640B, 0x63E7,
- 0x641B, 0x642E, 0x6421, 0x640E, 0x656F, 0x6592, 0x65D3, 0x6686,
- 0x668C, 0x6695, 0x6690, 0x668B, 0x668A, 0x6699, 0x6694, 0x6678,
- 0x6720, 0x6966, 0x695F, 0x6938, 0x694E, 0x6962, 0x6971, 0x693F,
- 0x6945, 0x696A, 0x6939, 0x6942, 0x6957, 0x6959, 0x697A, 0x6948,
- 0x6949, 0x6935, 0x696C, 0x6933, 0x693D, 0x6965, 0x68F0, 0x6978,
- 0x6934, 0x6969, 0x6940, 0x696F, 0x6944, 0x6976, 0x6958, 0x6941,
- 0x6974, 0x694C, 0x693B, 0x694B, 0x6937, 0x695C, 0x694F, 0x6951,
- 0x6932, 0x6952, 0x692F, 0x697B, 0x693C, 0x6B46, 0x6B45, 0x6B43,
- 0x6B42, 0x6B48, 0x6B41, 0x6B9B, 0xFA0D, 0x6BFB, 0x6BFC,
- /* Big5-HKSCS 0xDE40 .. 0xDE7E */
- 0x6BF9, 0x6BF7, 0x6BF8, 0x6E9B, 0x6ED6, 0x6EC8, 0x6E8F, 0x6EC0,
- 0x6E9F, 0x6E93, 0x6E94, 0x6EA0, 0x6EB1, 0x6EB9, 0x6EC6, 0x6ED2,
- 0x6EBD, 0x6EC1, 0x6E9E, 0x6EC9, 0x6EB7, 0x6EB0, 0x6ECD, 0x6EA6,
- 0x6ECF, 0x6EB2, 0x6EBE, 0x6EC3, 0x6EDC, 0x6ED8, 0x6E99, 0x6E92,
- 0x6E8E, 0x6E8D, 0x6EA4, 0x6EA1, 0x6EBF, 0x6EB3, 0x6ED0, 0x6ECA,
- 0x6E97, 0x6EAE, 0x6EA3, 0x7147, 0x7154, 0x7152, 0x7163, 0x7160,
- 0x7141, 0x715D, 0x7162, 0x7172, 0x7178, 0x716A, 0x7161, 0x7142,
- 0x7158, 0x7143, 0x714B, 0x7170, 0x715F, 0x7150, 0x7153,
- /* Big5-HKSCS 0xDEA1 .. 0xDEFE */
- 0x7144, 0x714D, 0x715A, 0x724F, 0x728D, 0x728C, 0x7291,
- 0x7290, 0x728E, 0x733C, 0x7342, 0x733B, 0x733A, 0x7340, 0x734A,
- 0x7349, 0x7444, 0x744A, 0x744B, 0x7452, 0x7451, 0x7457, 0x7440,
- 0x744F, 0x7450, 0x744E, 0x7442, 0x7446, 0x744D, 0x7454, 0x74E1,
- 0x74FF, 0x74FE, 0x74FD, 0x751D, 0x7579, 0x7577, 0x6983, 0x75EF,
- 0x760F, 0x7603, 0x75F7, 0x75FE, 0x75FC, 0x75F9, 0x75F8, 0x7610,
- 0x75FB, 0x75F6, 0x75ED, 0x75F5, 0x75FD, 0x7699, 0x76B5, 0x76DD,
- 0x7755, 0x775F, 0x7760, 0x7752, 0x7756, 0x775A, 0x7769, 0x7767,
- 0x7754, 0x7759, 0x776D, 0x77E0, 0x7887, 0x789A, 0x7894, 0x788F,
- 0x7884, 0x7895, 0x7885, 0x7886, 0x78A1, 0x7883, 0x7879, 0x7899,
- 0x7880, 0x7896, 0x787B, 0x797C, 0x7982, 0x797D, 0x7979, 0x7A11,
- 0x7A18, 0x7A19, 0x7A12, 0x7A17, 0x7A15, 0x7A22, 0x7A13,
- /* Big5-HKSCS 0xDF40 .. 0xDF7E */
- 0x7A1B, 0x7A10, 0x7AA3, 0x7AA2, 0x7A9E, 0x7AEB, 0x7B66, 0x7B64,
- 0x7B6D, 0x7B74, 0x7B69, 0x7B72, 0x7B65, 0x7B73, 0x7B71, 0x7B70,
- 0x7B61, 0x7B78, 0x7B76, 0x7B63, 0x7CB2, 0x7CB4, 0x7CAF, 0x7D88,
- 0x7D86, 0x7D80, 0x7D8D, 0x7D7F, 0x7D85, 0x7D7A, 0x7D8E, 0x7D7B,
- 0x7D83, 0x7D7C, 0x7D8C, 0x7D94, 0x7D84, 0x7D7D, 0x7D92, 0x7F6D,
- 0x7F6B, 0x7F67, 0x7F68, 0x7F6C, 0x7FA6, 0x7FA5, 0x7FA7, 0x7FDB,
- 0x7FDC, 0x8021, 0x8164, 0x8160, 0x8177, 0x815C, 0x8169, 0x815B,
- 0x8162, 0x8172, 0x6721, 0x815E, 0x8176, 0x8167, 0x816F,
- /* Big5-HKSCS 0xDFA1 .. 0xDFFE */
- 0x8144, 0x8161, 0x821D, 0x8249, 0x8244, 0x8240, 0x8242,
- 0x8245, 0x84F1, 0x843F, 0x8456, 0x8476, 0x8479, 0x848F, 0x848D,
- 0x8465, 0x8451, 0x8440, 0x8486, 0x8467, 0x8430, 0x844D, 0x847D,
- 0x845A, 0x8459, 0x8474, 0x8473, 0x845D, 0x8507, 0x845E, 0x8437,
- 0x843A, 0x8434, 0x847A, 0x8443, 0x8478, 0x8432, 0x8445, 0x8429,
- 0x83D9, 0x844B, 0x842F, 0x8442, 0x842D, 0x845F, 0x8470, 0x8439,
- 0x844E, 0x844C, 0x8452, 0x846F, 0x84C5, 0x848E, 0x843B, 0x8447,
- 0x8436, 0x8433, 0x8468, 0x847E, 0x8444, 0x842B, 0x8460, 0x8454,
- 0x846E, 0x8450, 0x870B, 0x8704, 0x86F7, 0x870C, 0x86FA, 0x86D6,
- 0x86F5, 0x874D, 0x86F8, 0x870E, 0x8709, 0x8701, 0x86F6, 0x870D,
- 0x8705, 0x88D6, 0x88CB, 0x88CD, 0x88CE, 0x88DE, 0x88DB, 0x88DA,
- 0x88CC, 0x88D0, 0x8985, 0x899B, 0x89DF, 0x89E5, 0x89E4,
- /* Big5-HKSCS 0xE040 .. 0xE07E */
- 0x89E1, 0x89E0, 0x89E2, 0x89DC, 0x89E6, 0x8A76, 0x8A86, 0x8A7F,
- 0x8A61, 0x8A3F, 0x8A77, 0x8A82, 0x8A84, 0x8A75, 0x8A83, 0x8A81,
- 0x8A74, 0x8A7A, 0x8C3C, 0x8C4B, 0x8C4A, 0x8C65, 0x8C64, 0x8C66,
- 0x8C86, 0x8C84, 0x8C85, 0x8CCC, 0x8D68, 0x8D69, 0x8D91, 0x8D8C,
- 0x8D8E, 0x8D8F, 0x8D8D, 0x8D93, 0x8D94, 0x8D90, 0x8D92, 0x8DF0,
- 0x8DE0, 0x8DEC, 0x8DF1, 0x8DEE, 0x8DD0, 0x8DE9, 0x8DE3, 0x8DE2,
- 0x8DE7, 0x8DF2, 0x8DEB, 0x8DF4, 0x8F06, 0x8EFF, 0x8F01, 0x8F00,
- 0x8F05, 0x8F07, 0x8F08, 0x8F02, 0x8F0B, 0x9052, 0x903F,
- /* Big5-HKSCS 0xE0A1 .. 0xE0FE */
- 0x9044, 0x9049, 0x903D, 0x9110, 0x910D, 0x910F, 0x9111,
- 0x9116, 0x9114, 0x910B, 0x910E, 0x916E, 0x916F, 0x9248, 0x9252,
- 0x9230, 0x923A, 0x9266, 0x9233, 0x9265, 0x925E, 0x9283, 0x922E,
- 0x924A, 0x9246, 0x926D, 0x926C, 0x924F, 0x9260, 0x9267, 0x926F,
- 0x9236, 0x9261, 0x9270, 0x9231, 0x9254, 0x9263, 0x9250, 0x9272,
- 0x924E, 0x9253, 0x924C, 0x9256, 0x9232, 0x959F, 0x959C, 0x959E,
- 0x959B, 0x9692, 0x9693, 0x9691, 0x9697, 0x96CE, 0x96FA, 0x96FD,
- 0x96F8, 0x96F5, 0x9773, 0x9777, 0x9778, 0x9772, 0x980F, 0x980D,
- 0x980E, 0x98AC, 0x98F6, 0x98F9, 0x99AF, 0x99B2, 0x99B0, 0x99B5,
- 0x9AAD, 0x9AAB, 0x9B5B, 0x9CEA, 0x9CED, 0x9CE7, 0x9E80, 0x9EFD,
- 0x50E6, 0x50D4, 0x50D7, 0x50E8, 0x50F3, 0x50DB, 0x50EA, 0x50DD,
- 0x50E4, 0x50D3, 0x50EC, 0x50F0, 0x50EF, 0x50E3, 0x50E0,
- /* Big5-HKSCS 0xE140 .. 0xE17E */
- 0x51D8, 0x5280, 0x5281, 0x52E9, 0x52EB, 0x5330, 0x53AC, 0x5627,
- 0x5615, 0x560C, 0x5612, 0x55FC, 0x560F, 0x561C, 0x5601, 0x5613,
- 0x5602, 0x55FA, 0x561D, 0x5604, 0x55FF, 0x55F9, 0x5889, 0x587C,
- 0x5890, 0x5898, 0x5886, 0x5881, 0x587F, 0x5874, 0x588B, 0x587A,
- 0x5887, 0x5891, 0x588E, 0x5876, 0x5882, 0x5888, 0x587B, 0x5894,
- 0x588F, 0x58FE, 0x596B, 0x5ADC, 0x5AEE, 0x5AE5, 0x5AD5, 0x5AEA,
- 0x5ADA, 0x5AED, 0x5AEB, 0x5AF3, 0x5AE2, 0x5AE0, 0x5ADB, 0x5AEC,
- 0x5ADE, 0x5ADD, 0x5AD9, 0x5AE8, 0x5ADF, 0x5B77, 0x5BE0,
- /* Big5-HKSCS 0xE1A1 .. 0xE1FE */
- 0x5BE3, 0x5C63, 0x5D82, 0x5D80, 0x5D7D, 0x5D86, 0x5D7A,
- 0x5D81, 0x5D77, 0x5D8A, 0x5D89, 0x5D88, 0x5D7E, 0x5D7C, 0x5D8D,
- 0x5D79, 0x5D7F, 0x5E58, 0x5E59, 0x5E53, 0x5ED8, 0x5ED1, 0x5ED7,
- 0x5ECE, 0x5EDC, 0x5ED5, 0x5ED9, 0x5ED2, 0x5ED4, 0x5F44, 0x5F43,
- 0x5F6F, 0x5FB6, 0x612C, 0x6128, 0x6141, 0x615E, 0x6171, 0x6173,
- 0x6152, 0x6153, 0x6172, 0x616C, 0x6180, 0x6174, 0x6154, 0x617A,
- 0x615B, 0x6165, 0x613B, 0x616A, 0x6161, 0x6156, 0x6229, 0x6227,
- 0x622B, 0x642B, 0x644D, 0x645B, 0x645D, 0x6474, 0x6476, 0x6472,
- 0x6473, 0x647D, 0x6475, 0x6466, 0x64A6, 0x644E, 0x6482, 0x645E,
- 0x645C, 0x644B, 0x6453, 0x6460, 0x6450, 0x647F, 0x643F, 0x646C,
- 0x646B, 0x6459, 0x6465, 0x6477, 0x6573, 0x65A0, 0x66A1, 0x66A0,
- 0x669F, 0x6705, 0x6704, 0x6722, 0x69B1, 0x69B6, 0x69C9,
- /* Big5-HKSCS 0xE240 .. 0xE27E */
- 0x69A0, 0x69CE, 0x6996, 0x69B0, 0x69AC, 0x69BC, 0x6991, 0x6999,
- 0x698E, 0x69A7, 0x698D, 0x69A9, 0x69BE, 0x69AF, 0x69BF, 0x69C4,
- 0x69BD, 0x69A4, 0x69D4, 0x69B9, 0x69CA, 0x699A, 0x69CF, 0x69B3,
- 0x6993, 0x69AA, 0x69A1, 0x699E, 0x69D9, 0x6997, 0x6990, 0x69C2,
- 0x69B5, 0x69A5, 0x69C6, 0x6B4A, 0x6B4D, 0x6B4B, 0x6B9E, 0x6B9F,
- 0x6BA0, 0x6BC3, 0x6BC4, 0x6BFE, 0x6ECE, 0x6EF5, 0x6EF1, 0x6F03,
- 0x6F25, 0x6EF8, 0x6F37, 0x6EFB, 0x6F2E, 0x6F09, 0x6F4E, 0x6F19,
- 0x6F1A, 0x6F27, 0x6F18, 0x6F3B, 0x6F12, 0x6EED, 0x6F0A,
- /* Big5-HKSCS 0xE2A1 .. 0xE2FE */
- 0x6F36, 0x6F73, 0x6EF9, 0x6EEE, 0x6F2D, 0x6F40, 0x6F30,
- 0x6F3C, 0x6F35, 0x6EEB, 0x6F07, 0x6F0E, 0x6F43, 0x6F05, 0x6EFD,
- 0x6EF6, 0x6F39, 0x6F1C, 0x6EFC, 0x6F3A, 0x6F1F, 0x6F0D, 0x6F1E,
- 0x6F08, 0x6F21, 0x7187, 0x7190, 0x7189, 0x7180, 0x7185, 0x7182,
- 0x718F, 0x717B, 0x7186, 0x7181, 0x7197, 0x7244, 0x7253, 0x7297,
- 0x7295, 0x7293, 0x7343, 0x734D, 0x7351, 0x734C, 0x7462, 0x7473,
- 0x7471, 0x7475, 0x7472, 0x7467, 0x746E, 0x7500, 0x7502, 0x7503,
- 0x757D, 0x7590, 0x7616, 0x7608, 0x760C, 0x7615, 0x7611, 0x760A,
- 0x7614, 0x76B8, 0x7781, 0x777C, 0x7785, 0x7782, 0x776E, 0x7780,
- 0x776F, 0x777E, 0x7783, 0x78B2, 0x78AA, 0x78B4, 0x78AD, 0x78A8,
- 0x787E, 0x78AB, 0x789E, 0x78A5, 0x78A0, 0x78AC, 0x78A2, 0x78A4,
- 0x7998, 0x798A, 0x798B, 0x7996, 0x7995, 0x7994, 0x7993,
- /* Big5-HKSCS 0xE340 .. 0xE37E */
- 0x7997, 0x7988, 0x7992, 0x7990, 0x7A2B, 0x7A4A, 0x7A30, 0x7A2F,
- 0x7A28, 0x7A26, 0x7AA8, 0x7AAB, 0x7AAC, 0x7AEE, 0x7B88, 0x7B9C,
- 0x7B8A, 0x7B91, 0x7B90, 0x7B96, 0x7B8D, 0x7B8C, 0x7B9B, 0x7B8E,
- 0x7B85, 0x7B98, 0x5284, 0x7B99, 0x7BA4, 0x7B82, 0x7CBB, 0x7CBF,
- 0x7CBC, 0x7CBA, 0x7DA7, 0x7DB7, 0x7DC2, 0x7DA3, 0x7DAA, 0x7DC1,
- 0x7DC0, 0x7DC5, 0x7D9D, 0x7DCE, 0x7DC4, 0x7DC6, 0x7DCB, 0x7DCC,
- 0x7DAF, 0x7DB9, 0x7D96, 0x7DBC, 0x7D9F, 0x7DA6, 0x7DAE, 0x7DA9,
- 0x7DA1, 0x7DC9, 0x7F73, 0x7FE2, 0x7FE3, 0x7FE5, 0x7FDE,
- /* Big5-HKSCS 0xE3A1 .. 0xE3FE */
- 0x8024, 0x805D, 0x805C, 0x8189, 0x8186, 0x8183, 0x8187,
- 0x818D, 0x818C, 0x818B, 0x8215, 0x8497, 0x84A4, 0x84A1, 0x849F,
- 0x84BA, 0x84CE, 0x84C2, 0x84AC, 0x84AE, 0x84AB, 0x84B9, 0x84B4,
- 0x84C1, 0x84CD, 0x84AA, 0x849A, 0x84B1, 0x84D0, 0x849D, 0x84A7,
- 0x84BB, 0x84A2, 0x8494, 0x84C7, 0x84CC, 0x849B, 0x84A9, 0x84AF,
- 0x84A8, 0x84D6, 0x8498, 0x84B6, 0x84CF, 0x84A0, 0x84D7, 0x84D4,
- 0x84D2, 0x84DB, 0x84B0, 0x8491, 0x8661, 0x8733, 0x8723, 0x8728,
- 0x876B, 0x8740, 0x872E, 0x871E, 0x8721, 0x8719, 0x871B, 0x8743,
- 0x872C, 0x8741, 0x873E, 0x8746, 0x8720, 0x8732, 0x872A, 0x872D,
- 0x873C, 0x8712, 0x873A, 0x8731, 0x8735, 0x8742, 0x8726, 0x8727,
- 0x8738, 0x8724, 0x871A, 0x8730, 0x8711, 0x88F7, 0x88E7, 0x88F1,
- 0x88F2, 0x88FA, 0x88FE, 0x88EE, 0x88FC, 0x88F6, 0x88FB,
- /* Big5-HKSCS 0xE440 .. 0xE47E */
- 0x88F0, 0x88EC, 0x88EB, 0x899D, 0x89A1, 0x899F, 0x899E, 0x89E9,
- 0x89EB, 0x89E8, 0x8AAB, 0x8A99, 0x8A8B, 0x8A92, 0x8A8F, 0x8A96,
- 0x8C3D, 0x8C68, 0x8C69, 0x8CD5, 0x8CCF, 0x8CD7, 0x8D96, 0x8E09,
- 0x8E02, 0x8DFF, 0x8E0D, 0x8DFD, 0x8E0A, 0x8E03, 0x8E07, 0x8E06,
- 0x8E05, 0x8DFE, 0x8E00, 0x8E04, 0x8F10, 0x8F11, 0x8F0E, 0x8F0D,
- 0x9123, 0x911C, 0x9120, 0x9122, 0x911F, 0x911D, 0x911A, 0x9124,
- 0x9121, 0x911B, 0x917A, 0x9172, 0x9179, 0x9173, 0x92A5, 0x92A4,
- 0x9276, 0x929B, 0x927A, 0x92A0, 0x9294, 0x92AA, 0x928D,
- /* Big5-HKSCS 0xE4A1 .. 0xE4FE */
- 0x92A6, 0x929A, 0x92AB, 0x9279, 0x9297, 0x927F, 0x92A3,
- 0x92EE, 0x928E, 0x9282, 0x9295, 0x92A2, 0x927D, 0x9288, 0x92A1,
- 0x928A, 0x9286, 0x928C, 0x9299, 0x92A7, 0x927E, 0x9287, 0x92A9,
- 0x929D, 0x928B, 0x922D, 0x969E, 0x96A1, 0x96FF, 0x9758, 0x977D,
- 0x977A, 0x977E, 0x9783, 0x9780, 0x9782, 0x977B, 0x9784, 0x9781,
- 0x977F, 0x97CE, 0x97CD, 0x9816, 0x98AD, 0x98AE, 0x9902, 0x9900,
- 0x9907, 0x999D, 0x999C, 0x99C3, 0x99B9, 0x99BB, 0x99BA, 0x99C2,
- 0x99BD, 0x99C7, 0x9AB1, 0x9AE3, 0x9AE7, 0x9B3E, 0x9B3F, 0x9B60,
- 0x9B61, 0x9B5F, 0x9CF1, 0x9CF2, 0x9CF5, 0x9EA7, 0x50FF, 0x5103,
- 0x5130, 0x50F8, 0x5106, 0x5107, 0x50F6, 0x50FE, 0x510B, 0x510C,
- 0x50FD, 0x510A, 0x528B, 0x528C, 0x52F1, 0x52EF, 0x5648, 0x5642,
- 0x564C, 0x5635, 0x5641, 0x564A, 0x5649, 0x5646, 0x5658,
- /* Big5-HKSCS 0xE540 .. 0xE57E */
- 0x565A, 0x5640, 0x5633, 0x563D, 0x562C, 0x563E, 0x5638, 0x562A,
- 0x563A, 0x571A, 0x58AB, 0x589D, 0x58B1, 0x58A0, 0x58A3, 0x58AF,
- 0x58AC, 0x58A5, 0x58A1, 0x58FF, 0x5AFF, 0x5AF4, 0x5AFD, 0x5AF7,
- 0x5AF6, 0x5B03, 0x5AF8, 0x5B02, 0x5AF9, 0x5B01, 0x5B07, 0x5B05,
- 0x5B0F, 0x5C67, 0x5D99, 0x5D97, 0x5D9F, 0x5D92, 0x5DA2, 0x5D93,
- 0x5D95, 0x5DA0, 0x5D9C, 0x5DA1, 0x5D9A, 0x5D9E, 0x5E69, 0x5E5D,
- 0x5E60, 0x5E5C, 0x7DF3, 0x5EDB, 0x5EDE, 0x5EE1, 0x5F49, 0x5FB2,
- 0x618B, 0x6183, 0x6179, 0x61B1, 0x61B0, 0x61A2, 0x6189,
- /* Big5-HKSCS 0xE5A1 .. 0xE5FE */
- 0x619B, 0x6193, 0x61AF, 0x61AD, 0x619F, 0x6192, 0x61AA,
- 0x61A1, 0x618D, 0x6166, 0x61B3, 0x622D, 0x646E, 0x6470, 0x6496,
- 0x64A0, 0x6485, 0x6497, 0x649C, 0x648F, 0x648B, 0x648A, 0x648C,
- 0x64A3, 0x649F, 0x6468, 0x64B1, 0x6498, 0x6576, 0x657A, 0x6579,
- 0x657B, 0x65B2, 0x65B3, 0x66B5, 0x66B0, 0x66A9, 0x66B2, 0x66B7,
- 0x66AA, 0x66AF, 0x6A00, 0x6A06, 0x6A17, 0x69E5, 0x69F8, 0x6A15,
- 0x69F1, 0x69E4, 0x6A20, 0x69FF, 0x69EC, 0x69E2, 0x6A1B, 0x6A1D,
- 0x69FE, 0x6A27, 0x69F2, 0x69EE, 0x6A14, 0x69F7, 0x69E7, 0x6A40,
- 0x6A08, 0x69E6, 0x69FB, 0x6A0D, 0x69FC, 0x69EB, 0x6A09, 0x6A04,
- 0x6A18, 0x6A25, 0x6A0F, 0x69F6, 0x6A26, 0x6A07, 0x69F4, 0x6A16,
- 0x6B51, 0x6BA5, 0x6BA3, 0x6BA2, 0x6BA6, 0x6C01, 0x6C00, 0x6BFF,
- 0x6C02, 0x6F41, 0x6F26, 0x6F7E, 0x6F87, 0x6FC6, 0x6F92,
- /* Big5-HKSCS 0xE640 .. 0xE67E */
- 0x6F8D, 0x6F89, 0x6F8C, 0x6F62, 0x6F4F, 0x6F85, 0x6F5A, 0x6F96,
- 0x6F76, 0x6F6C, 0x6F82, 0x6F55, 0x6F72, 0x6F52, 0x6F50, 0x6F57,
- 0x6F94, 0x6F93, 0x6F5D, 0x6F00, 0x6F61, 0x6F6B, 0x6F7D, 0x6F67,
- 0x6F90, 0x6F53, 0x6F8B, 0x6F69, 0x6F7F, 0x6F95, 0x6F63, 0x6F77,
- 0x6F6A, 0x6F7B, 0x71B2, 0x71AF, 0x719B, 0x71B0, 0x71A0, 0x719A,
- 0x71A9, 0x71B5, 0x719D, 0x71A5, 0x719E, 0x71A4, 0x71A1, 0x71AA,
- 0x719C, 0x71A7, 0x71B3, 0x7298, 0x729A, 0x7358, 0x7352, 0x735E,
- 0x735F, 0x7360, 0x735D, 0x735B, 0x7361, 0x735A, 0x7359,
- /* Big5-HKSCS 0xE6A1 .. 0xE6FE */
- 0x7362, 0x7487, 0x7489, 0x748A, 0x7486, 0x7481, 0x747D,
- 0x7485, 0x7488, 0x747C, 0x7479, 0x7508, 0x7507, 0x757E, 0x7625,
- 0x761E, 0x7619, 0x761D, 0x761C, 0x7623, 0x761A, 0x7628, 0x761B,
- 0x769C, 0x769D, 0x769E, 0x769B, 0x778D, 0x778F, 0x7789, 0x7788,
- 0x78CD, 0x78BB, 0x78CF, 0x78CC, 0x78D1, 0x78CE, 0x78D4, 0x78C8,
- 0x78C3, 0x78C4, 0x78C9, 0x799A, 0x79A1, 0x79A0, 0x799C, 0x79A2,
- 0x799B, 0x6B76, 0x7A39, 0x7AB2, 0x7AB4, 0x7AB3, 0x7BB7, 0x7BCB,
- 0x7BBE, 0x7BAC, 0x7BCE, 0x7BAF, 0x7BB9, 0x7BCA, 0x7BB5, 0x7CC5,
- 0x7CC8, 0x7CCC, 0x7CCB, 0x7DF7, 0x7DDB, 0x7DEA, 0x7DE7, 0x7DD7,
- 0x7DE1, 0x7E03, 0x7DFA, 0x7DE6, 0x7DF6, 0x7DF1, 0x7DF0, 0x7DEE,
- 0x7DDF, 0x7F76, 0x7FAC, 0x7FB0, 0x7FAD, 0x7FED, 0x7FEB, 0x7FEA,
- 0x7FEC, 0x7FE6, 0x7FE8, 0x8064, 0x8067, 0x81A3, 0x819F,
- /* Big5-HKSCS 0xE740 .. 0xE77E */
- 0x819E, 0x8195, 0x81A2, 0x8199, 0x8197, 0x8216, 0x824F, 0x8253,
- 0x8252, 0x8250, 0x824E, 0x8251, 0x8524, 0x853B, 0x850F, 0x8500,
- 0x8529, 0x850E, 0x8509, 0x850D, 0x851F, 0x850A, 0x8527, 0x851C,
- 0x84FB, 0x852B, 0x84FA, 0x8508, 0x850C, 0x84F4, 0x852A, 0x84F2,
- 0x8515, 0x84F7, 0x84EB, 0x84F3, 0x84FC, 0x8512, 0x84EA, 0x84E9,
- 0x8516, 0x84FE, 0x8528, 0x851D, 0x852E, 0x8502, 0x84FD, 0x851E,
- 0x84F6, 0x8531, 0x8526, 0x84E7, 0x84E8, 0x84F0, 0x84EF, 0x84F9,
- 0x8518, 0x8520, 0x8530, 0x850B, 0x8519, 0x852F, 0x8662,
- /* Big5-HKSCS 0xE7A1 .. 0xE7FE */
- 0x8756, 0x8763, 0x8764, 0x8777, 0x87E1, 0x8773, 0x8758,
- 0x8754, 0x875B, 0x8752, 0x8761, 0x875A, 0x8751, 0x875E, 0x876D,
- 0x876A, 0x8750, 0x874E, 0x875F, 0x875D, 0x876F, 0x876C, 0x877A,
- 0x876E, 0x875C, 0x8765, 0x874F, 0x877B, 0x8775, 0x8762, 0x8767,
- 0x8769, 0x885A, 0x8905, 0x890C, 0x8914, 0x890B, 0x8917, 0x8918,
- 0x8919, 0x8906, 0x8916, 0x8911, 0x890E, 0x8909, 0x89A2, 0x89A4,
- 0x89A3, 0x89ED, 0x89F0, 0x89EC, 0x8ACF, 0x8AC6, 0x8AB8, 0x8AD3,
- 0x8AD1, 0x8AD4, 0x8AD5, 0x8ABB, 0x8AD7, 0x8ABE, 0x8AC0, 0x8AC5,
- 0x8AD8, 0x8AC3, 0x8ABA, 0x8ABD, 0x8AD9, 0x8C3E, 0x8C4D, 0x8C8F,
- 0x8CE5, 0x8CDF, 0x8CD9, 0x8CE8, 0x8CDA, 0x8CDD, 0x8CE7, 0x8DA0,
- 0x8D9C, 0x8DA1, 0x8D9B, 0x8E20, 0x8E23, 0x8E25, 0x8E24, 0x8E2E,
- 0x8E15, 0x8E1B, 0x8E16, 0x8E11, 0x8E19, 0x8E26, 0x8E27,
- /* Big5-HKSCS 0xE840 .. 0xE87E */
- 0x8E14, 0x8E12, 0x8E18, 0x8E13, 0x8E1C, 0x8E17, 0x8E1A, 0x8F2C,
- 0x8F24, 0x8F18, 0x8F1A, 0x8F20, 0x8F23, 0x8F16, 0x8F17, 0x9073,
- 0x9070, 0x906F, 0x9067, 0x906B, 0x912F, 0x912B, 0x9129, 0x912A,
- 0x9132, 0x9126, 0x912E, 0x9185, 0x9186, 0x918A, 0x9181, 0x9182,
- 0x9184, 0x9180, 0x92D0, 0x92C3, 0x92C4, 0x92C0, 0x92D9, 0x92B6,
- 0x92CF, 0x92F1, 0x92DF, 0x92D8, 0x92E9, 0x92D7, 0x92DD, 0x92CC,
- 0x92EF, 0x92C2, 0x92E8, 0x92CA, 0x92C8, 0x92CE, 0x92E6, 0x92CD,
- 0x92D5, 0x92C9, 0x92E0, 0x92DE, 0x92E7, 0x92D1, 0x92D3,
- /* Big5-HKSCS 0xE8A1 .. 0xE8FE */
- 0x92B5, 0x92E1, 0x92C6, 0x92B4, 0x957C, 0x95AC, 0x95AB,
- 0x95AE, 0x95B0, 0x96A4, 0x96A2, 0x96D3, 0x9705, 0x9708, 0x9702,
- 0x975A, 0x978A, 0x978E, 0x9788, 0x97D0, 0x97CF, 0x981E, 0x981D,
- 0x9826, 0x9829, 0x9828, 0x9820, 0x981B, 0x9827, 0x98B2, 0x9908,
- 0x98FA, 0x9911, 0x9914, 0x9916, 0x9917, 0x9915, 0x99DC, 0x99CD,
- 0x99CF, 0x99D3, 0x99D4, 0x99CE, 0x99C9, 0x99D6, 0x99D8, 0x99CB,
- 0x99D7, 0x99CC, 0x9AB3, 0x9AEC, 0x9AEB, 0x9AF3, 0x9AF2, 0x9AF1,
- 0x9B46, 0x9B43, 0x9B67, 0x9B74, 0x9B71, 0x9B66, 0x9B76, 0x9B75,
- 0x9B70, 0x9B68, 0x9B64, 0x9B6C, 0x9CFC, 0x9CFA, 0x9CFD, 0x9CFF,
- 0x9CF7, 0x9D07, 0x9D00, 0x9CF9, 0x9CFB, 0x9D08, 0x9D05, 0x9D04,
- 0x9E83, 0x9ED3, 0x9F0F, 0x9F10, 0x511C, 0x5113, 0x5117, 0x511A,
- 0x5111, 0x51DE, 0x5334, 0x53E1, 0x5670, 0x5660, 0x566E,
- /* Big5-HKSCS 0xE940 .. 0xE97E */
- 0x5673, 0x5666, 0x5663, 0x566D, 0x5672, 0x565E, 0x5677, 0x571C,
- 0x571B, 0x58C8, 0x58BD, 0x58C9, 0x58BF, 0x58BA, 0x58C2, 0x58BC,
- 0x58C6, 0x5B17, 0x5B19, 0x5B1B, 0x5B21, 0x5B14, 0x5B13, 0x5B10,
- 0x5B16, 0x5B28, 0x5B1A, 0x5B20, 0x5B1E, 0x5BEF, 0x5DAC, 0x5DB1,
- 0x5DA9, 0x5DA7, 0x5DB5, 0x5DB0, 0x5DAE, 0x5DAA, 0x5DA8, 0x5DB2,
- 0x5DAD, 0x5DAF, 0x5DB4, 0x5E67, 0x5E68, 0x5E66, 0x5E6F, 0x5EE9,
- 0x5EE7, 0x5EE6, 0x5EE8, 0x5EE5, 0x5F4B, 0x5FBC, 0x619D, 0x61A8,
- 0x6196, 0x61C5, 0x61B4, 0x61C6, 0x61C1, 0x61CC, 0x61BA,
- /* Big5-HKSCS 0xE9A1 .. 0xE9FE */
- 0x61BF, 0x61B8, 0x618C, 0x64D7, 0x64D6, 0x64D0, 0x64CF,
- 0x64C9, 0x64BD, 0x6489, 0x64C3, 0x64DB, 0x64F3, 0x64D9, 0x6533,
- 0x657F, 0x657C, 0x65A2, 0x66C8, 0x66BE, 0x66C0, 0x66CA, 0x66CB,
- 0x66CF, 0x66BD, 0x66BB, 0x66BA, 0x66CC, 0x6723, 0x6A34, 0x6A66,
- 0x6A49, 0x6A67, 0x6A32, 0x6A68, 0x6A3E, 0x6A5D, 0x6A6D, 0x6A76,
- 0x6A5B, 0x6A51, 0x6A28, 0x6A5A, 0x6A3B, 0x6A3F, 0x6A41, 0x6A6A,
- 0x6A64, 0x6A50, 0x6A4F, 0x6A54, 0x6A6F, 0x6A69, 0x6A60, 0x6A3C,
- 0x6A5E, 0x6A56, 0x6A55, 0x6A4D, 0x6A4E, 0x6A46, 0x6B55, 0x6B54,
- 0x6B56, 0x6BA7, 0x6BAA, 0x6BAB, 0x6BC8, 0x6BC7, 0x6C04, 0x6C03,
- 0x6C06, 0x6FAD, 0x6FCB, 0x6FA3, 0x6FC7, 0x6FBC, 0x6FCE, 0x6FC8,
- 0x6F5E, 0x6FC4, 0x6FBD, 0x6F9E, 0x6FCA, 0x6FA8, 0x7004, 0x6FA5,
- 0x6FAE, 0x6FBA, 0x6FAC, 0x6FAA, 0x6FCF, 0x6FBF, 0x6FB8,
- /* Big5-HKSCS 0xEA40 .. 0xEA7E */
- 0x6FA2, 0x6FC9, 0x6FAB, 0x6FCD, 0x6FAF, 0x6FB2, 0x6FB0, 0x71C5,
- 0x71C2, 0x71BF, 0x71B8, 0x71D6, 0x71C0, 0x71C1, 0x71CB, 0x71D4,
- 0x71CA, 0x71C7, 0x71CF, 0x71BD, 0x71D8, 0x71BC, 0x71C6, 0x71DA,
- 0x71DB, 0x729D, 0x729E, 0x7369, 0x7366, 0x7367, 0x736C, 0x7365,
- 0x736B, 0x736A, 0x747F, 0x749A, 0x74A0, 0x7494, 0x7492, 0x7495,
- 0x74A1, 0x750B, 0x7580, 0x762F, 0x762D, 0x7631, 0x763D, 0x7633,
- 0x763C, 0x7635, 0x7632, 0x7630, 0x76BB, 0x76E6, 0x779A, 0x779D,
- 0x77A1, 0x779C, 0x779B, 0x77A2, 0x77A3, 0x7795, 0x7799,
- /* Big5-HKSCS 0xEAA1 .. 0xEAFE */
- 0x7797, 0x78DD, 0x78E9, 0x78E5, 0x78EA, 0x78DE, 0x78E3,
- 0x78DB, 0x78E1, 0x78E2, 0x78ED, 0x78DF, 0x78E0, 0x79A4, 0x7A44,
- 0x7A48, 0x7A47, 0x7AB6, 0x7AB8, 0x7AB5, 0x7AB1, 0x7AB7, 0x7BDE,
- 0x7BE3, 0x7BE7, 0x7BDD, 0x7BD5, 0x7BE5, 0x7BDA, 0x7BE8, 0x7BF9,
- 0x7BD4, 0x7BEA, 0x7BE2, 0x7BDC, 0x7BEB, 0x7BD8, 0x7BDF, 0x7CD2,
- 0x7CD4, 0x7CD7, 0x7CD0, 0x7CD1, 0x7E12, 0x7E21, 0x7E17, 0x7E0C,
- 0x7E1F, 0x7E20, 0x7E13, 0x7E0E, 0x7E1C, 0x7E15, 0x7E1A, 0x7E22,
- 0x7E0B, 0x7E0F, 0x7E16, 0x7E0D, 0x7E14, 0x7E25, 0x7E24, 0x7F43,
- 0x7F7B, 0x7F7C, 0x7F7A, 0x7FB1, 0x7FEF, 0x802A, 0x8029, 0x806C,
- 0x81B1, 0x81A6, 0x81AE, 0x81B9, 0x81B5, 0x81AB, 0x81B0, 0x81AC,
- 0x81B4, 0x81B2, 0x81B7, 0x81A7, 0x81F2, 0x8255, 0x8256, 0x8257,
- 0x8556, 0x8545, 0x856B, 0x854D, 0x8553, 0x8561, 0x8558,
- /* Big5-HKSCS 0xEB40 .. 0xEB7E */
- 0x8540, 0x8546, 0x8564, 0x8541, 0x8562, 0x8544, 0x8551, 0x8547,
- 0x8563, 0x853E, 0x855B, 0x8571, 0x854E, 0x856E, 0x8575, 0x8555,
- 0x8567, 0x8560, 0x858C, 0x8566, 0x855D, 0x8554, 0x8565, 0x856C,
- 0x8663, 0x8665, 0x8664, 0x879B, 0x878F, 0x8797, 0x8793, 0x8792,
- 0x8788, 0x8781, 0x8796, 0x8798, 0x8779, 0x8787, 0x87A3, 0x8785,
- 0x8790, 0x8791, 0x879D, 0x8784, 0x8794, 0x879C, 0x879A, 0x8789,
- 0x891E, 0x8926, 0x8930, 0x892D, 0x892E, 0x8927, 0x8931, 0x8922,
- 0x8929, 0x8923, 0x892F, 0x892C, 0x891F, 0x89F1, 0x8AE0,
- /* Big5-HKSCS 0xEBA1 .. 0xEBFE */
- 0x8AE2, 0x8AF2, 0x8AF4, 0x8AF5, 0x8ADD, 0x8B14, 0x8AE4,
- 0x8ADF, 0x8AF0, 0x8AC8, 0x8ADE, 0x8AE1, 0x8AE8, 0x8AFF, 0x8AEF,
- 0x8AFB, 0x8C91, 0x8C92, 0x8C90, 0x8CF5, 0x8CEE, 0x8CF1, 0x8CF0,
- 0x8CF3, 0x8D6C, 0x8D6E, 0x8DA5, 0x8DA7, 0x8E33, 0x8E3E, 0x8E38,
- 0x8E40, 0x8E45, 0x8E36, 0x8E3C, 0x8E3D, 0x8E41, 0x8E30, 0x8E3F,
- 0x8EBD, 0x8F36, 0x8F2E, 0x8F35, 0x8F32, 0x8F39, 0x8F37, 0x8F34,
- 0x9076, 0x9079, 0x907B, 0x9086, 0x90FA, 0x9133, 0x9135, 0x9136,
- 0x9193, 0x9190, 0x9191, 0x918D, 0x918F, 0x9327, 0x931E, 0x9308,
- 0x931F, 0x9306, 0x930F, 0x937A, 0x9338, 0x933C, 0x931B, 0x9323,
- 0x9312, 0x9301, 0x9346, 0x932D, 0x930E, 0x930D, 0x92CB, 0x931D,
- 0x92FA, 0x9325, 0x9313, 0x92F9, 0x92F7, 0x9334, 0x9302, 0x9324,
- 0x92FF, 0x9329, 0x9339, 0x9335, 0x932A, 0x9314, 0x930C,
- /* Big5-HKSCS 0xEC40 .. 0xEC7E */
- 0x930B, 0x92FE, 0x9309, 0x9300, 0x92FB, 0x9316, 0x95BC, 0x95CD,
- 0x95BE, 0x95B9, 0x95BA, 0x95B6, 0x95BF, 0x95B5, 0x95BD, 0x96A9,
- 0x96D4, 0x970B, 0x9712, 0x9710, 0x9799, 0x9797, 0x9794, 0x97F0,
- 0x97F8, 0x9835, 0x982F, 0x9832, 0x9924, 0x991F, 0x9927, 0x9929,
- 0x999E, 0x99EE, 0x99EC, 0x99E5, 0x99E4, 0x99F0, 0x99E3, 0x99EA,
- 0x99E9, 0x99E7, 0x9AB9, 0x9ABF, 0x9AB4, 0x9ABB, 0x9AF6, 0x9AFA,
- 0x9AF9, 0x9AF7, 0x9B33, 0x9B80, 0x9B85, 0x9B87, 0x9B7C, 0x9B7E,
- 0x9B7B, 0x9B82, 0x9B93, 0x9B92, 0x9B90, 0x9B7A, 0x9B95,
- /* Big5-HKSCS 0xECA1 .. 0xECFE */
- 0x9B7D, 0x9B88, 0x9D25, 0x9D17, 0x9D20, 0x9D1E, 0x9D14,
- 0x9D29, 0x9D1D, 0x9D18, 0x9D22, 0x9D10, 0x9D19, 0x9D1F, 0x9E88,
- 0x9E86, 0x9E87, 0x9EAE, 0x9EAD, 0x9ED5, 0x9ED6, 0x9EFA, 0x9F12,
- 0x9F3D, 0x5126, 0x5125, 0x5122, 0x5124, 0x5120, 0x5129, 0x52F4,
- 0x5693, 0x568C, 0x568D, 0x5686, 0x5684, 0x5683, 0x567E, 0x5682,
- 0x567F, 0x5681, 0x58D6, 0x58D4, 0x58CF, 0x58D2, 0x5B2D, 0x5B25,
- 0x5B32, 0x5B23, 0x5B2C, 0x5B27, 0x5B26, 0x5B2F, 0x5B2E, 0x5B7B,
- 0x5BF1, 0x5BF2, 0x5DB7, 0x5E6C, 0x5E6A, 0x5FBE, 0x5FBB, 0x61C3,
- 0x61B5, 0x61BC, 0x61E7, 0x61E0, 0x61E5, 0x61E4, 0x61E8, 0x61DE,
- 0x64EF, 0x64E9, 0x64E3, 0x64EB, 0x64E4, 0x64E8, 0x6581, 0x6580,
- 0x65B6, 0x65DA, 0x66D2, 0x6A8D, 0x6A96, 0x6A81, 0x6AA5, 0x6A89,
- 0x6A9F, 0x6A9B, 0x6AA1, 0x6A9E, 0x6A87, 0x6A93, 0x6A8E,
- /* Big5-HKSCS 0xED40 .. 0xED7E */
- 0x6A95, 0x6A83, 0x6AA8, 0x6AA4, 0x6A91, 0x6A7F, 0x6AA6, 0x6A9A,
- 0x6A85, 0x6A8C, 0x6A92, 0x6B5B, 0x6BAD, 0x6C09, 0x6FCC, 0x6FA9,
- 0x6FF4, 0x6FD4, 0x6FE3, 0x6FDC, 0x6FED, 0x6FE7, 0x6FE6, 0x6FDE,
- 0x6FF2, 0x6FDD, 0x6FE2, 0x6FE8, 0x71E1, 0x71F1, 0x71E8, 0x71F2,
- 0x71E4, 0x71F0, 0x71E2, 0x7373, 0x736E, 0x736F, 0x7497, 0x74B2,
- 0x74AB, 0x7490, 0x74AA, 0x74AD, 0x74B1, 0x74A5, 0x74AF, 0x7510,
- 0x7511, 0x7512, 0x750F, 0x7584, 0x7643, 0x7648, 0x7649, 0x7647,
- 0x76A4, 0x76E9, 0x77B5, 0x77AB, 0x77B2, 0x77B7, 0x77B6,
- /* Big5-HKSCS 0xEDA1 .. 0xEDFE */
- 0x77B4, 0x77B1, 0x77A8, 0x77F0, 0x78F3, 0x78FD, 0x7902,
- 0x78FB, 0x78FC, 0x78F2, 0x7905, 0x78F9, 0x78FE, 0x7904, 0x79AB,
- 0x79A8, 0x7A5C, 0x7A5B, 0x7A56, 0x7A58, 0x7A54, 0x7A5A, 0x7ABE,
- 0x7AC0, 0x7AC1, 0x7C05, 0x7C0F, 0x7BF2, 0x7C00, 0x7BFF, 0x7BFB,
- 0x7C0E, 0x7BF4, 0x7C0B, 0x7BF3, 0x7C02, 0x7C09, 0x7C03, 0x7C01,
- 0x7BF8, 0x7BFD, 0x7C06, 0x7BF0, 0x7BF1, 0x7C10, 0x7C0A, 0x7CE8,
- 0x7E2D, 0x7E3C, 0x7E42, 0x7E33, 0x9848, 0x7E38, 0x7E2A, 0x7E49,
- 0x7E40, 0x7E47, 0x7E29, 0x7E4C, 0x7E30, 0x7E3B, 0x7E36, 0x7E44,
- 0x7E3A, 0x7F45, 0x7F7F, 0x7F7E, 0x7F7D, 0x7FF4, 0x7FF2, 0x802C,
- 0x81BB, 0x81C4, 0x81CC, 0x81CA, 0x81C5, 0x81C7, 0x81BC, 0x81E9,
- 0x825B, 0x825A, 0x825C, 0x8583, 0x8580, 0x858F, 0x85A7, 0x8595,
- 0x85A0, 0x858B, 0x85A3, 0x857B, 0x85A4, 0x859A, 0x859E,
- /* Big5-HKSCS 0xEE40 .. 0xEE7E */
- 0x8577, 0x857C, 0x8589, 0x85A1, 0x857A, 0x8578, 0x8557, 0x858E,
- 0x8596, 0x8586, 0x858D, 0x8599, 0x859D, 0x8581, 0x85A2, 0x8582,
- 0x8588, 0x8585, 0x8579, 0x8576, 0x8598, 0x8590, 0x859F, 0x8668,
- 0x87BE, 0x87AA, 0x87AD, 0x87C5, 0x87B0, 0x87AC, 0x87B9, 0x87B5,
- 0x87BC, 0x87AE, 0x87C9, 0x87C3, 0x87C2, 0x87CC, 0x87B7, 0x87AF,
- 0x87C4, 0x87CA, 0x87B4, 0x87B6, 0x87BF, 0x87B8, 0x87BD, 0x87DE,
- 0x87B2, 0x8935, 0x8933, 0x893C, 0x893E, 0x8941, 0x8952, 0x8937,
- 0x8942, 0x89AD, 0x89AF, 0x89AE, 0x89F2, 0x89F3, 0x8B1E,
- /* Big5-HKSCS 0xEEA1 .. 0xEEFE */
- 0x8B18, 0x8B16, 0x8B11, 0x8B05, 0x8B0B, 0x8B22, 0x8B0F,
- 0x8B12, 0x8B15, 0x8B07, 0x8B0D, 0x8B08, 0x8B06, 0x8B1C, 0x8B13,
- 0x8B1A, 0x8C4F, 0x8C70, 0x8C72, 0x8C71, 0x8C6F, 0x8C95, 0x8C94,
- 0x8CF9, 0x8D6F, 0x8E4E, 0x8E4D, 0x8E53, 0x8E50, 0x8E4C, 0x8E47,
- 0x8F43, 0x8F40, 0x9085, 0x907E, 0x9138, 0x919A, 0x91A2, 0x919B,
- 0x9199, 0x919F, 0x91A1, 0x919D, 0x91A0, 0x93A1, 0x9383, 0x93AF,
- 0x9364, 0x9356, 0x9347, 0x937C, 0x9358, 0x935C, 0x9376, 0x9349,
- 0x9350, 0x9351, 0x9360, 0x936D, 0x938F, 0x934C, 0x936A, 0x9379,
- 0x9357, 0x9355, 0x9352, 0x934F, 0x9371, 0x9377, 0x937B, 0x9361,
- 0x935E, 0x9363, 0x9367, 0x9380, 0x934E, 0x9359, 0x95C7, 0x95C0,
- 0x95C9, 0x95C3, 0x95C5, 0x95B7, 0x96AE, 0x96B0, 0x96AC, 0x9720,
- 0x971F, 0x9718, 0x971D, 0x9719, 0x979A, 0x97A1, 0x979C,
- /* Big5-HKSCS 0xEF40 .. 0xEF7E */
- 0x979E, 0x979D, 0x97D5, 0x97D4, 0x97F1, 0x9841, 0x9844, 0x984A,
- 0x9849, 0x9845, 0x9843, 0x9925, 0x992B, 0x992C, 0x992A, 0x9933,
- 0x9932, 0x992F, 0x992D, 0x9931, 0x9930, 0x9998, 0x99A3, 0x99A1,
- 0x9A02, 0x99FA, 0x99F4, 0x99F7, 0x99F9, 0x99F8, 0x99F6, 0x99FB,
- 0x99FD, 0x99FE, 0x99FC, 0x9A03, 0x9ABE, 0x9AFE, 0x9AFD, 0x9B01,
- 0x9AFC, 0x9B48, 0x9B9A, 0x9BA8, 0x9B9E, 0x9B9B, 0x9BA6, 0x9BA1,
- 0x9BA5, 0x9BA4, 0x9B86, 0x9BA2, 0x9BA0, 0x9BAF, 0x9D33, 0x9D41,
- 0x9D67, 0x9D36, 0x9D2E, 0x9D2F, 0x9D31, 0x9D38, 0x9D30,
- /* Big5-HKSCS 0xEFA1 .. 0xEFFE */
- 0x9D45, 0x9D42, 0x9D43, 0x9D3E, 0x9D37, 0x9D40, 0x9D3D,
- 0x7FF5, 0x9D2D, 0x9E8A, 0x9E89, 0x9E8D, 0x9EB0, 0x9EC8, 0x9EDA,
- 0x9EFB, 0x9EFF, 0x9F24, 0x9F23, 0x9F22, 0x9F54, 0x9FA0, 0x5131,
- 0x512D, 0x512E, 0x5698, 0x569C, 0x5697, 0x569A, 0x569D, 0x5699,
- 0x5970, 0x5B3C, 0x5C69, 0x5C6A, 0x5DC0, 0x5E6D, 0x5E6E, 0x61D8,
- 0x61DF, 0x61ED, 0x61EE, 0x61F1, 0x61EA, 0x61F0, 0x61EB, 0x61D6,
- 0x61E9, 0x64FF, 0x6504, 0x64FD, 0x64F8, 0x6501, 0x6503, 0x64FC,
- 0x6594, 0x65DB, 0x66DA, 0x66DB, 0x66D8, 0x6AC5, 0x6AB9, 0x6ABD,
- 0x6AE1, 0x6AC6, 0x6ABA, 0x6AB6, 0x6AB7, 0x6AC7, 0x6AB4, 0x6AAD,
- 0x6B5E, 0x6BC9, 0x6C0B, 0x7007, 0x700C, 0x700D, 0x7001, 0x7005,
- 0x7014, 0x700E, 0x6FFF, 0x7000, 0x6FFB, 0x7026, 0x6FFC, 0x6FF7,
- 0x700A, 0x7201, 0x71FF, 0x71F9, 0x7203, 0x71FD, 0x7376,
- /* Big5-HKSCS 0xF040 .. 0xF07E */
- 0x74B8, 0x74C0, 0x74B5, 0x74C1, 0x74BE, 0x74B6, 0x74BB, 0x74C2,
- 0x7514, 0x7513, 0x765C, 0x7664, 0x7659, 0x7650, 0x7653, 0x7657,
- 0x765A, 0x76A6, 0x76BD, 0x76EC, 0x77C2, 0x77BA, 0x78FF, 0x790C,
- 0x7913, 0x7914, 0x7909, 0x7910, 0x7912, 0x7911, 0x79AD, 0x79AC,
- 0x7A5F, 0x7C1C, 0x7C29, 0x7C19, 0x7C20, 0x7C1F, 0x7C2D, 0x7C1D,
- 0x7C26, 0x7C28, 0x7C22, 0x7C25, 0x7C30, 0x7E5C, 0x7E50, 0x7E56,
- 0x7E63, 0x7E58, 0x7E62, 0x7E5F, 0x7E51, 0x7E60, 0x7E57, 0x7E53,
- 0x7FB5, 0x7FB3, 0x7FF7, 0x7FF8, 0x8075, 0x81D1, 0x81D2,
- /* Big5-HKSCS 0xF0A1 .. 0xF0FE */
- 0x81D0, 0x825F, 0x825E, 0x85B4, 0x85C6, 0x85C0, 0x85C3,
- 0x85C2, 0x85B3, 0x85B5, 0x85BD, 0x85C7, 0x85C4, 0x85BF, 0x85CB,
- 0x85CE, 0x85C8, 0x85C5, 0x85B1, 0x85B6, 0x85D2, 0x8624, 0x85B8,
- 0x85B7, 0x85BE, 0x8669, 0x87E7, 0x87E6, 0x87E2, 0x87DB, 0x87EB,
- 0x87EA, 0x87E5, 0x87DF, 0x87F3, 0x87E4, 0x87D4, 0x87DC, 0x87D3,
- 0x87ED, 0x87D8, 0x87E3, 0x87A4, 0x87D7, 0x87D9, 0x8801, 0x87F4,
- 0x87E8, 0x87DD, 0x8953, 0x894B, 0x894F, 0x894C, 0x8946, 0x8950,
- 0x8951, 0x8949, 0x8B2A, 0x8B27, 0x8B23, 0x8B33, 0x8B30, 0x8B35,
- 0x8B47, 0x8B2F, 0x8B3C, 0x8B3E, 0x8B31, 0x8B25, 0x8B37, 0x8B26,
- 0x8B36, 0x8B2E, 0x8B24, 0x8B3B, 0x8B3D, 0x8B3A, 0x8C42, 0x8C75,
- 0x8C99, 0x8C98, 0x8C97, 0x8CFE, 0x8D04, 0x8D02, 0x8D00, 0x8E5C,
- 0x8E62, 0x8E60, 0x8E57, 0x8E56, 0x8E5E, 0x8E65, 0x8E67,
- /* Big5-HKSCS 0xF140 .. 0xF17E */
- 0x8E5B, 0x8E5A, 0x8E61, 0x8E5D, 0x8E69, 0x8E54, 0x8F46, 0x8F47,
- 0x8F48, 0x8F4B, 0x9128, 0x913A, 0x913B, 0x913E, 0x91A8, 0x91A5,
- 0x91A7, 0x91AF, 0x91AA, 0x93B5, 0x938C, 0x9392, 0x93B7, 0x939B,
- 0x939D, 0x9389, 0x93A7, 0x938E, 0x93AA, 0x939E, 0x93A6, 0x9395,
- 0x9388, 0x9399, 0x939F, 0x938D, 0x93B1, 0x9391, 0x93B2, 0x93A4,
- 0x93A8, 0x93B4, 0x93A3, 0x93A5, 0x95D2, 0x95D3, 0x95D1, 0x96B3,
- 0x96D7, 0x96DA, 0x5DC2, 0x96DF, 0x96D8, 0x96DD, 0x9723, 0x9722,
- 0x9725, 0x97AC, 0x97AE, 0x97A8, 0x97AB, 0x97A4, 0x97AA,
- /* Big5-HKSCS 0xF1A1 .. 0xF1FE */
- 0x97A2, 0x97A5, 0x97D7, 0x97D9, 0x97D6, 0x97D8, 0x97FA,
- 0x9850, 0x9851, 0x9852, 0x98B8, 0x9941, 0x993C, 0x993A, 0x9A0F,
- 0x9A0B, 0x9A09, 0x9A0D, 0x9A04, 0x9A11, 0x9A0A, 0x9A05, 0x9A07,
- 0x9A06, 0x9AC0, 0x9ADC, 0x9B08, 0x9B04, 0x9B05, 0x9B29, 0x9B35,
- 0x9B4A, 0x9B4C, 0x9B4B, 0x9BC7, 0x9BC6, 0x9BC3, 0x9BBF, 0x9BC1,
- 0x9BB5, 0x9BB8, 0x9BD3, 0x9BB6, 0x9BC4, 0x9BB9, 0x9BBD, 0x9D5C,
- 0x9D53, 0x9D4F, 0x9D4A, 0x9D5B, 0x9D4B, 0x9D59, 0x9D56, 0x9D4C,
- 0x9D57, 0x9D52, 0x9D54, 0x9D5F, 0x9D58, 0x9D5A, 0x9E8E, 0x9E8C,
- 0x9EDF, 0x9F01, 0x9F00, 0x9F16, 0x9F25, 0x9F2B, 0x9F2A, 0x9F29,
- 0x9F28, 0x9F4C, 0x9F55, 0x5134, 0x5135, 0x5296, 0x52F7, 0x53B4,
- 0x56AB, 0x56AD, 0x56A6, 0x56A7, 0x56AA, 0x56AC, 0x58DA, 0x58DD,
- 0x58DB, 0x5912, 0x5B3D, 0x5B3E, 0x5B3F, 0x5DC3, 0x5E70,
- /* Big5-HKSCS 0xF240 .. 0xF27E */
- 0x5FBF, 0x61FB, 0x6507, 0x6510, 0x650D, 0x6509, 0x650C, 0x650E,
- 0x6584, 0x65DE, 0x65DD, 0x66DE, 0x6AE7, 0x6AE0, 0x6ACC, 0x6AD1,
- 0x6AD9, 0x6ACB, 0x6ADF, 0x6ADC, 0x6AD0, 0x6AEB, 0x6ACF, 0x6ACD,
- 0x6ADE, 0x6B60, 0x6BB0, 0x6C0C, 0x7019, 0x7027, 0x7020, 0x7016,
- 0x702B, 0x7021, 0x7022, 0x7023, 0x7029, 0x7017, 0x7024, 0x701C,
- 0x702A, 0x720C, 0x720A, 0x7207, 0x7202, 0x7205, 0x72A5, 0x72A6,
- 0x72A4, 0x72A3, 0x72A1, 0x74CB, 0x74C5, 0x74B7, 0x74C3, 0x7516,
- 0x7660, 0x77C9, 0x77CA, 0x77C4, 0x77F1, 0x791D, 0x791B,
- /* Big5-HKSCS 0xF2A1 .. 0xF2FE */
- 0x7921, 0x791C, 0x7917, 0x791E, 0x79B0, 0x7A67, 0x7A68,
- 0x7C33, 0x7C3C, 0x7C39, 0x7C2C, 0x7C3B, 0x7CEC, 0x7CEA, 0x7E76,
- 0x7E75, 0x7E78, 0x7E70, 0x7E77, 0x7E6F, 0x7E7A, 0x7E72, 0x7E74,
- 0x7E68, 0x7F4B, 0x7F4A, 0x7F83, 0x7F86, 0x7FB7, 0x7FFD, 0x7FFE,
- 0x8078, 0x81D7, 0x81D5, 0x8264, 0x8261, 0x8263, 0x85EB, 0x85F1,
- 0x85ED, 0x85D9, 0x85E1, 0x85E8, 0x85DA, 0x85D7, 0x85EC, 0x85F2,
- 0x85F8, 0x85D8, 0x85DF, 0x85E3, 0x85DC, 0x85D1, 0x85F0, 0x85E6,
- 0x85EF, 0x85DE, 0x85E2, 0x8800, 0x87FA, 0x8803, 0x87F6, 0x87F7,
- 0x8809, 0x880C, 0x880B, 0x8806, 0x87FC, 0x8808, 0x87FF, 0x880A,
- 0x8802, 0x8962, 0x895A, 0x895B, 0x8957, 0x8961, 0x895C, 0x8958,
- 0x895D, 0x8959, 0x8988, 0x89B7, 0x89B6, 0x89F6, 0x8B50, 0x8B48,
- 0x8B4A, 0x8B40, 0x8B53, 0x8B56, 0x8B54, 0x8B4B, 0x8B55,
- /* Big5-HKSCS 0xF340 .. 0xF37E */
- 0x8B51, 0x8B42, 0x8B52, 0x8B57, 0x8C43, 0x8C77, 0x8C76, 0x8C9A,
- 0x8D06, 0x8D07, 0x8D09, 0x8DAC, 0x8DAA, 0x8DAD, 0x8DAB, 0x8E6D,
- 0x8E78, 0x8E73, 0x8E6A, 0x8E6F, 0x8E7B, 0x8EC2, 0x8F52, 0x8F51,
- 0x8F4F, 0x8F50, 0x8F53, 0x8FB4, 0x9140, 0x913F, 0x91B0, 0x91AD,
- 0x93DE, 0x93C7, 0x93CF, 0x93C2, 0x93DA, 0x93D0, 0x93F9, 0x93EC,
- 0x93CC, 0x93D9, 0x93A9, 0x93E6, 0x93CA, 0x93D4, 0x93EE, 0x93E3,
- 0x93D5, 0x93C4, 0x93CE, 0x93C0, 0x93D2, 0x93E7, 0x957D, 0x95DA,
- 0x95DB, 0x96E1, 0x9729, 0x972B, 0x972C, 0x9728, 0x9726,
- /* Big5-HKSCS 0xF3A1 .. 0xF3FE */
- 0x97B3, 0x97B7, 0x97B6, 0x97DD, 0x97DE, 0x97DF, 0x985C,
- 0x9859, 0x985D, 0x9857, 0x98BF, 0x98BD, 0x98BB, 0x98BE, 0x9948,
- 0x9947, 0x9943, 0x99A6, 0x99A7, 0x9A1A, 0x9A15, 0x9A25, 0x9A1D,
- 0x9A24, 0x9A1B, 0x9A22, 0x9A20, 0x9A27, 0x9A23, 0x9A1E, 0x9A1C,
- 0x9A14, 0x9AC2, 0x9B0B, 0x9B0A, 0x9B0E, 0x9B0C, 0x9B37, 0x9BEA,
- 0x9BEB, 0x9BE0, 0x9BDE, 0x9BE4, 0x9BE6, 0x9BE2, 0x9BF0, 0x9BD4,
- 0x9BD7, 0x9BEC, 0x9BDC, 0x9BD9, 0x9BE5, 0x9BD5, 0x9BE1, 0x9BDA,
- 0x9D77, 0x9D81, 0x9D8A, 0x9D84, 0x9D88, 0x9D71, 0x9D80, 0x9D78,
- 0x9D86, 0x9D8B, 0x9D8C, 0x9D7D, 0x9D6B, 0x9D74, 0x9D75, 0x9D70,
- 0x9D69, 0x9D85, 0x9D73, 0x9D7B, 0x9D82, 0x9D6F, 0x9D79, 0x9D7F,
- 0x9D87, 0x9D68, 0x9E94, 0x9E91, 0x9EC0, 0x9EFC, 0x9F2D, 0x9F40,
- 0x9F41, 0x9F4D, 0x9F56, 0x9F57, 0x9F58, 0x5337, 0x56B2,
- /* Big5-HKSCS 0xF440 .. 0xF47E */
- 0x56B5, 0x56B3, 0x58E3, 0x5B45, 0x5DC6, 0x5DC7, 0x5EEE, 0x5EEF,
- 0x5FC0, 0x5FC1, 0x61F9, 0x6517, 0x6516, 0x6515, 0x6513, 0x65DF,
- 0x66E8, 0x66E3, 0x66E4, 0x6AF3, 0x6AF0, 0x6AEA, 0x6AE8, 0x6AF9,
- 0x6AF1, 0x6AEE, 0x6AEF, 0x703C, 0x7035, 0x702F, 0x7037, 0x7034,
- 0x7031, 0x7042, 0x7038, 0x703F, 0x703A, 0x7039, 0x7040, 0x703B,
- 0x7033, 0x7041, 0x7213, 0x7214, 0x72A8, 0x737D, 0x737C, 0x74BA,
- 0x76AB, 0x76AA, 0x76BE, 0x76ED, 0x77CC, 0x77CE, 0x77CF, 0x77CD,
- 0x77F2, 0x7925, 0x7923, 0x7927, 0x7928, 0x7924, 0x7929,
- /* Big5-HKSCS 0xF4A1 .. 0xF4FE */
- 0x79B2, 0x7A6E, 0x7A6C, 0x7A6D, 0x7AF7, 0x7C49, 0x7C48,
- 0x7C4A, 0x7C47, 0x7C45, 0x7CEE, 0x7E7B, 0x7E7E, 0x7E81, 0x7E80,
- 0x7FBA, 0x7FFF, 0x8079, 0x81DB, 0x81D9, 0x820B, 0x8268, 0x8269,
- 0x8622, 0x85FF, 0x8601, 0x85FE, 0x861B, 0x8600, 0x85F6, 0x8604,
- 0x8609, 0x8605, 0x860C, 0x85FD, 0x8819, 0x8810, 0x8811, 0x8817,
- 0x8813, 0x8816, 0x8963, 0x8966, 0x89B9, 0x89F7, 0x8B60, 0x8B6A,
- 0x8B5D, 0x8B68, 0x8B63, 0x8B65, 0x8B67, 0x8B6D, 0x8DAE, 0x8E86,
- 0x8E88, 0x8E84, 0x8F59, 0x8F56, 0x8F57, 0x8F55, 0x8F58, 0x8F5A,
- 0x908D, 0x9143, 0x9141, 0x91B7, 0x91B5, 0x91B2, 0x91B3, 0x940B,
- 0x9413, 0x93FB, 0x9420, 0x940F, 0x9414, 0x93FE, 0x9415, 0x9410,
- 0x9428, 0x9419, 0x940D, 0x93F5, 0x9400, 0x93F7, 0x9407, 0x940E,
- 0x9416, 0x9412, 0x93FA, 0x9409, 0x93F8, 0x940A, 0x93FF,
- /* Big5-HKSCS 0xF540 .. 0xF57E */
- 0x93FC, 0x940C, 0x93F6, 0x9411, 0x9406, 0x95DE, 0x95E0, 0x95DF,
- 0x972E, 0x972F, 0x97B9, 0x97BB, 0x97FD, 0x97FE, 0x9860, 0x9862,
- 0x9863, 0x985F, 0x98C1, 0x98C2, 0x9950, 0x994E, 0x9959, 0x994C,
- 0x994B, 0x9953, 0x9A32, 0x9A34, 0x9A31, 0x9A2C, 0x9A2A, 0x9A36,
- 0x9A29, 0x9A2E, 0x9A38, 0x9A2D, 0x9AC7, 0x9ACA, 0x9AC6, 0x9B10,
- 0x9B12, 0x9B11, 0x9C0B, 0x9C08, 0x9BF7, 0x9C05, 0x9C12, 0x9BF8,
- 0x9C40, 0x9C07, 0x9C0E, 0x9C06, 0x9C17, 0x9C14, 0x9C09, 0x9D9F,
- 0x9D99, 0x9DA4, 0x9D9D, 0x9D92, 0x9D98, 0x9D90, 0x9D9B,
- /* Big5-HKSCS 0xF5A1 .. 0xF5FE */
- 0x9DA0, 0x9D94, 0x9D9C, 0x9DAA, 0x9D97, 0x9DA1, 0x9D9A,
- 0x9DA2, 0x9DA8, 0x9D9E, 0x9DA3, 0x9DBF, 0x9DA9, 0x9D96, 0x9DA6,
- 0x9DA7, 0x9E99, 0x9E9B, 0x9E9A, 0x9EE5, 0x9EE4, 0x9EE7, 0x9EE6,
- 0x9F30, 0x9F2E, 0x9F5B, 0x9F60, 0x9F5E, 0x9F5D, 0x9F59, 0x9F91,
- 0x513A, 0x5139, 0x5298, 0x5297, 0x56C3, 0x56BD, 0x56BE, 0x5B48,
- 0x5B47, 0x5DCB, 0x5DCF, 0x5EF1, 0x61FD, 0x651B, 0x6B02, 0x6AFC,
- 0x6B03, 0x6AF8, 0x6B00, 0x7043, 0x7044, 0x704A, 0x7048, 0x7049,
- 0x7045, 0x7046, 0x721D, 0x721A, 0x7219, 0x737E, 0x7517, 0x766A,
- 0x77D0, 0x792D, 0x7931, 0x792F, 0x7C54, 0x7C53, 0x7CF2, 0x7E8A,
- 0x7E87, 0x7E88, 0x7E8B, 0x7E86, 0x7E8D, 0x7F4D, 0x7FBB, 0x8030,
- 0x81DD, 0x8618, 0x862A, 0x8626, 0x861F, 0x8623, 0x861C, 0x8619,
- 0x8627, 0x862E, 0x8621, 0x8620, 0x8629, 0x861E, 0x8625,
- /* Big5-HKSCS 0xF640 .. 0xF67E */
- 0x8829, 0x881D, 0x881B, 0x8820, 0x8824, 0x881C, 0x882B, 0x884A,
- 0x896D, 0x8969, 0x896E, 0x896B, 0x89FA, 0x8B79, 0x8B78, 0x8B45,
- 0x8B7A, 0x8B7B, 0x8D10, 0x8D14, 0x8DAF, 0x8E8E, 0x8E8C, 0x8F5E,
- 0x8F5B, 0x8F5D, 0x9146, 0x9144, 0x9145, 0x91B9, 0x943F, 0x943B,
- 0x9436, 0x9429, 0x943D, 0x943C, 0x9430, 0x9439, 0x942A, 0x9437,
- 0x942C, 0x9440, 0x9431, 0x95E5, 0x95E4, 0x95E3, 0x9735, 0x973A,
- 0x97BF, 0x97E1, 0x9864, 0x98C9, 0x98C6, 0x98C0, 0x9958, 0x9956,
- 0x9A39, 0x9A3D, 0x9A46, 0x9A44, 0x9A42, 0x9A41, 0x9A3A,
- /* Big5-HKSCS 0xF6A1 .. 0xF6FE */
- 0x9A3F, 0x9ACD, 0x9B15, 0x9B17, 0x9B18, 0x9B16, 0x9B3A,
- 0x9B52, 0x9C2B, 0x9C1D, 0x9C1C, 0x9C2C, 0x9C23, 0x9C28, 0x9C29,
- 0x9C24, 0x9C21, 0x9DB7, 0x9DB6, 0x9DBC, 0x9DC1, 0x9DC7, 0x9DCA,
- 0x9DCF, 0x9DBE, 0x9DC5, 0x9DC3, 0x9DBB, 0x9DB5, 0x9DCE, 0x9DB9,
- 0x9DBA, 0x9DAC, 0x9DC8, 0x9DB1, 0x9DAD, 0x9DCC, 0x9DB3, 0x9DCD,
- 0x9DB2, 0x9E7A, 0x9E9C, 0x9EEB, 0x9EEE, 0x9EED, 0x9F1B, 0x9F18,
- 0x9F1A, 0x9F31, 0x9F4E, 0x9F65, 0x9F64, 0x9F92, 0x4EB9, 0x56C6,
- 0x56C5, 0x56CB, 0x5971, 0x5B4B, 0x5B4C, 0x5DD5, 0x5DD1, 0x5EF2,
- 0x6521, 0x6520, 0x6526, 0x6522, 0x6B0B, 0x6B08, 0x6B09, 0x6C0D,
- 0x7055, 0x7056, 0x7057, 0x7052, 0x721E, 0x721F, 0x72A9, 0x737F,
- 0x74D8, 0x74D5, 0x74D9, 0x74D7, 0x766D, 0x76AD, 0x7935, 0x79B4,
- 0x7A70, 0x7A71, 0x7C57, 0x7C5C, 0x7C59, 0x7C5B, 0x7C5A,
- /* Big5-HKSCS 0xF740 .. 0xF77E */
- 0x7CF4, 0x7CF1, 0x7E91, 0x7F4F, 0x7F87, 0x81DE, 0x826B, 0x8634,
- 0x8635, 0x8633, 0x862C, 0x8632, 0x8636, 0x882C, 0x8828, 0x8826,
- 0x882A, 0x8825, 0x8971, 0x89BF, 0x89BE, 0x89FB, 0x8B7E, 0x8B84,
- 0x8B82, 0x8B86, 0x8B85, 0x8B7F, 0x8D15, 0x8E95, 0x8E94, 0x8E9A,
- 0x8E92, 0x8E90, 0x8E96, 0x8E97, 0x8F60, 0x8F62, 0x9147, 0x944C,
- 0x9450, 0x944A, 0x944B, 0x944F, 0x9447, 0x9445, 0x9448, 0x9449,
- 0x9446, 0x973F, 0x97E3, 0x986A, 0x9869, 0x98CB, 0x9954, 0x995B,
- 0x9A4E, 0x9A53, 0x9A54, 0x9A4C, 0x9A4F, 0x9A48, 0x9A4A,
- /* Big5-HKSCS 0xF7A1 .. 0xF7FE */
- 0x9A49, 0x9A52, 0x9A50, 0x9AD0, 0x9B19, 0x9B2B, 0x9B3B,
- 0x9B56, 0x9B55, 0x9C46, 0x9C48, 0x9C3F, 0x9C44, 0x9C39, 0x9C33,
- 0x9C41, 0x9C3C, 0x9C37, 0x9C34, 0x9C32, 0x9C3D, 0x9C36, 0x9DDB,
- 0x9DD2, 0x9DDE, 0x9DDA, 0x9DCB, 0x9DD0, 0x9DDC, 0x9DD1, 0x9DDF,
- 0x9DE9, 0x9DD9, 0x9DD8, 0x9DD6, 0x9DF5, 0x9DD5, 0x9DDD, 0x9EB6,
- 0x9EF0, 0x9F35, 0x9F33, 0x9F32, 0x9F42, 0x9F6B, 0x9F95, 0x9FA2,
- 0x513D, 0x5299, 0x58E8, 0x58E7, 0x5972, 0x5B4D, 0x5DD8, 0x882F,
- 0x5F4F, 0x6201, 0x6203, 0x6204, 0x6529, 0x6525, 0x6596, 0x66EB,
- 0x6B11, 0x6B12, 0x6B0F, 0x6BCA, 0x705B, 0x705A, 0x7222, 0x7382,
- 0x7381, 0x7383, 0x7670, 0x77D4, 0x7C67, 0x7C66, 0x7E95, 0x826C,
- 0x863A, 0x8640, 0x8639, 0x863C, 0x8631, 0x863B, 0x863E, 0x8830,
- 0x8832, 0x882E, 0x8833, 0x8976, 0x8974, 0x8973, 0x89FE,
- /* Big5-HKSCS 0xF840 .. 0xF87E */
- 0x8B8C, 0x8B8E, 0x8B8B, 0x8B88, 0x8C45, 0x8D19, 0x8E98, 0x8F64,
- 0x8F63, 0x91BC, 0x9462, 0x9455, 0x945D, 0x9457, 0x945E, 0x97C4,
- 0x97C5, 0x9800, 0x9A56, 0x9A59, 0x9B1E, 0x9B1F, 0x9B20, 0x9C52,
- 0x9C58, 0x9C50, 0x9C4A, 0x9C4D, 0x9C4B, 0x9C55, 0x9C59, 0x9C4C,
- 0x9C4E, 0x9DFB, 0x9DF7, 0x9DEF, 0x9DE3, 0x9DEB, 0x9DF8, 0x9DE4,
- 0x9DF6, 0x9DE1, 0x9DEE, 0x9DE6, 0x9DF2, 0x9DF0, 0x9DE2, 0x9DEC,
- 0x9DF4, 0x9DF3, 0x9DE8, 0x9DED, 0x9EC2, 0x9ED0, 0x9EF2, 0x9EF3,
- 0x9F06, 0x9F1C, 0x9F38, 0x9F37, 0x9F36, 0x9F43, 0x9F4F,
- /* Big5-HKSCS 0xF8A1 .. 0xF8FE */
- 0x9F71, 0x9F70, 0x9F6E, 0x9F6F, 0x56D3, 0x56CD, 0x5B4E,
- 0x5C6D, 0x652D, 0x66ED, 0x66EE, 0x6B13, 0x705F, 0x7061, 0x705D,
- 0x7060, 0x7223, 0x74DB, 0x74E5, 0x77D5, 0x7938, 0x79B7, 0x79B6,
- 0x7C6A, 0x7E97, 0x7F89, 0x826D, 0x8643, 0x8838, 0x8837, 0x8835,
- 0x884B, 0x8B94, 0x8B95, 0x8E9E, 0x8E9F, 0x8EA0, 0x8E9D, 0x91BE,
- 0x91BD, 0x91C2, 0x946B, 0x9468, 0x9469, 0x96E5, 0x9746, 0x9743,
- 0x9747, 0x97C7, 0x97E5, 0x9A5E, 0x9AD5, 0x9B59, 0x9C63, 0x9C67,
- 0x9C66, 0x9C62, 0x9C5E, 0x9C60, 0x9E02, 0x9DFE, 0x9E07, 0x9E03,
- 0x9E06, 0x9E05, 0x9E00, 0x9E01, 0x9E09, 0x9DFF, 0x9DFD, 0x9E04,
- 0x9EA0, 0x9F1E, 0x9F46, 0x9F74, 0x9F75, 0x9F76, 0x56D4, 0x652E,
- 0x65B8, 0x6B18, 0x6B19, 0x6B17, 0x6B1A, 0x7062, 0x7226, 0x72AA,
- 0x77D8, 0x77D9, 0x7939, 0x7C69, 0x7C6B, 0x7CF6, 0x7E9A,
- /* Big5-HKSCS 0xF940 .. 0xF97E */
- 0x7E98, 0x7E9B, 0x7E99, 0x81E0, 0x81E1, 0x8646, 0x8647, 0x8648,
- 0x8979, 0x897A, 0x897C, 0x897B, 0x89FF, 0x8B98, 0x8B99, 0x8EA5,
- 0x8EA4, 0x8EA3, 0x946E, 0x946D, 0x946F, 0x9471, 0x9473, 0x9749,
- 0x9872, 0x995F, 0x9C68, 0x9C6E, 0x9C6D, 0x9E0B, 0x9E0D, 0x9E10,
- 0x9E0F, 0x9E12, 0x9E11, 0x9EA1, 0x9EF5, 0x9F09, 0x9F47, 0x9F78,
- 0x9F7B, 0x9F7A, 0x9F79, 0x571E, 0x7066, 0x7C6F, 0x883C, 0x8DB2,
- 0x8EA6, 0x91C3, 0x9474, 0x9478, 0x9476, 0x9475, 0x9A60, 0x9C74,
- 0x9C73, 0x9C71, 0x9C75, 0x9E14, 0x9E13, 0x9EF6, 0x9F0A,
- /* Big5-HKSCS 0xF9A1 .. 0xF9FE */
- 0x9FA4, 0x7068, 0x7065, 0x7CF7, 0x866A, 0x883E, 0x883D,
- 0x883F, 0x8B9E, 0x8C9C, 0x8EA9, 0x8EC9, 0x974B, 0x9873, 0x9874,
- 0x98CC, 0x9961, 0x99AB, 0x9A64, 0x9A66, 0x9A67, 0x9B24, 0x9E15,
- 0x9E17, 0x9F48, 0x6207, 0x6B1E, 0x7227, 0x864C, 0x8EA8, 0x9482,
- 0x9480, 0x9481, 0x9A69, 0x9A68, 0x9B2E, 0x9E19, 0x7229, 0x864B,
- 0x8B9F, 0x9483, 0x9C79, 0x9EB7, 0x7675, 0x9A6B, 0x9C7A, 0x9E1D,
- 0x7069, 0x706A, 0x9EA4, 0x9F7E, 0x9F49, 0x9F98, 0x7881, 0x92B9,
- 0x88CF, 0x58BB, 0x6052, 0x7CA7, 0x5AFA, 0x2554, 0x2566, 0x2557,
- 0x2560, 0x256C, 0x2563, 0x255A, 0x2569, 0x255D, 0x2552, 0x2564,
- 0x2555, 0x255E, 0x256A, 0x2561, 0x2558, 0x2567, 0x255B, 0x2553,
- 0x2565, 0x2556, 0x255F, 0x256B, 0x2562, 0x2559, 0x2568, 0x255C,
- 0x2551, 0x2550, 0x256D, 0x256E, 0x2570, 0x256F, 0xFFED,
- /* Big5-HKSCS 0xFA40 .. 0xFA7E */
- 0xE000, 0x92DB, 0xE002, 0xE003, 0x854C, 0x42B5, 0x73EF, 0x51B5,
- 0x3649, 0xE009, 0xE00A, 0x9344, 0xE00C, 0x82EE, 0xE00E, 0x783C,
- 0x6744, 0x62DF, 0xE012, 0xE013, 0xE014, 0xE015, 0xE016, 0x4FAB,
- 0xE018, 0x5008, 0xE01A, 0xE01B, 0xE01C, 0xE01D, 0xE01E, 0x5029,
- 0xE020, 0x5FA4, 0xE022, 0xE023, 0x6EDB, 0xE025, 0x507D, 0x5101,
- 0x347A, 0x510E, 0x986C, 0x3743, 0x8416, 0xE02D, 0xE02E, 0x5160,
- 0xE030, 0x516A, 0xE032, 0xE033, 0xE034, 0xE035, 0xE036, 0xE037,
- 0xE038, 0x5B82, 0x877D, 0xE03B, 0xE03C, 0x51B2, 0x51B8,
- /* Big5-HKSCS 0xFAA1 .. 0xFAFE */
- 0x9D34, 0x51C9, 0x51CF, 0x51D1, 0x3CDC, 0x51D3, 0xE045,
- 0x51B3, 0x51E2, 0x5342, 0x51ED, 0x83CD, 0x693E, 0xE04C, 0x5F7B,
- 0x520B, 0x5226, 0x523C, 0x52B5, 0x5257, 0x5294, 0x52B9, 0x52C5,
- 0x7C15, 0x8542, 0x52E0, 0x860D, 0xE05A, 0x5305, 0xE05C, 0x5549,
- 0x6ED9, 0xE05F, 0xE060, 0xE061, 0x5333, 0x5344, 0xE064, 0x6CCB,
- 0xE066, 0x681B, 0x73D5, 0x604A, 0x3EAA, 0x38CC, 0xE06C, 0x71DD,
- 0x44A2, 0x536D, 0x5374, 0xE071, 0x537E, 0x537F, 0xE074, 0xE075,
- 0x77E6, 0x5393, 0xE078, 0x53A0, 0x53AB, 0x53AE, 0x73A7, 0xE07D,
- 0x3F59, 0x739C, 0x53C1, 0x53C5, 0x6C49, 0x4E49, 0x57FE, 0x53D9,
- 0x3AAB, 0xE087, 0x53E0, 0xE089, 0xE08A, 0x53F6, 0xE08C, 0x5413,
- 0x7079, 0x552B, 0x6657, 0x6D5B, 0x546D, 0xE093, 0xE094, 0x555D,
- 0x548F, 0x54A4, 0x47A6, 0xE099, 0xE09A, 0x3DB4, 0xE09C,
- /* Big5-HKSCS 0xFB40 .. 0xFB7E */
- 0xE09D, 0xE09E, 0x5547, 0x4CED, 0x542F, 0x7417, 0x5586, 0x55A9,
- 0x5605, 0xE0A6, 0xE0A7, 0x4552, 0xE0A9, 0x66B3, 0xE0AB, 0x5637,
- 0x66CD, 0xE0AE, 0x66A4, 0x66AD, 0x564D, 0x564F, 0x78F1, 0x56F1,
- 0x9787, 0x53FE, 0x5700, 0x56EF, 0x56ED, 0xE0BA, 0x3623, 0xE0BC,
- 0x5746, 0xE0BE, 0x6C6E, 0x708B, 0x5742, 0x36B1, 0xE0C3, 0x57E6,
- 0xE0C5, 0x5803, 0xE0C7, 0xE0C8, 0x5826, 0xE0CA, 0x585C, 0x58AA,
- 0x3561, 0x58E0, 0x58DC, 0xE0D0, 0x58FB, 0x5BFF, 0x5743, 0xE0D4,
- 0xE0D5, 0x93D3, 0x35A1, 0x591F, 0x68A6, 0x36C3, 0x6E59,
- /* Big5-HKSCS 0xFBA1 .. 0xFBFE */
- 0xE0DC, 0x5A24, 0x5553, 0xE0DF, 0x8505, 0x59C9, 0xE0E2,
- 0xE0E3, 0xE0E4, 0xE0E5, 0x59D9, 0xE0E7, 0xE0E8, 0xE0E9, 0x6D71,
- 0xE0EB, 0xE0EC, 0x59F9, 0xE0EE, 0x5AAB, 0x5A63, 0x36E6, 0xE0F2,
- 0x5A77, 0x3708, 0x5A96, 0x7465, 0x5AD3, 0xE0F8, 0xE0F9, 0x3D85,
- 0xE0FB, 0x3732, 0xE0FD, 0x5E83, 0x52D0, 0x5B76, 0x6588, 0x5B7C,
- 0xE103, 0x4004, 0x485D, 0xE106, 0x5BD5, 0x6160, 0xE109, 0xE10A,
- 0xE10B, 0x5BF3, 0x5B9D, 0x4D10, 0x5C05, 0xE110, 0x5C13, 0x73CE,
- 0x5C14, 0xE114, 0xE115, 0x5C49, 0x48DD, 0x5C85, 0x5CE9, 0x5CEF,
- 0x5D8B, 0xE11C, 0xE11D, 0x5D10, 0x5D18, 0x5D46, 0xE121, 0x5CBA,
- 0x5DD7, 0x82FC, 0x382D, 0xE126, 0xE127, 0xE128, 0x8287, 0x3836,
- 0x3BC2, 0x5E2E, 0x6A8A, 0x5E75, 0x5E7A, 0xE130, 0xE131, 0x53A6,
- 0x4EB7, 0x5ED0, 0x53A8, 0xE136, 0x5E09, 0x5EF4, 0xE139,
- /* Big5-HKSCS 0xFC40 .. 0xFC7E */
- 0x5EF9, 0x5EFB, 0x38A0, 0x5EFC, 0x683E, 0x941B, 0x5F0D, 0xE141,
- 0xE142, 0x3ADE, 0x48AE, 0xE145, 0x5F3A, 0xE147, 0xE148, 0x5F58,
- 0xE14A, 0x5F63, 0x97BD, 0xE14D, 0x5F72, 0x9340, 0xE150, 0x5FA7,
- 0x5DB6, 0x3D5F, 0xE154, 0xE155, 0xE156, 0xE157, 0x91D6, 0xE159,
- 0xE15A, 0x6031, 0x6685, 0xE15D, 0x3963, 0x3DC7, 0x3639, 0x5790,
- 0xE162, 0x7971, 0x3E40, 0x609E, 0x60A4, 0x60B3, 0xE168, 0xE169,
- 0xE16A, 0x74A4, 0x50E1, 0x5AA0, 0x6164, 0x8424, 0x6142, 0xE171,
- 0xE172, 0x6181, 0x51F4, 0xE175, 0x6187, 0x5BAA, 0xE178,
- /* Big5-HKSCS 0xFCA1 .. 0xFCFE */
- 0xE179, 0x61D3, 0xE17B, 0xE17C, 0x61D0, 0x3932, 0xE17F,
- 0xE180, 0x6023, 0x615C, 0x651E, 0x638B, 0xE185, 0x62C5, 0xE187,
- 0x62D5, 0xE189, 0x636C, 0xE18B, 0x3A17, 0x6438, 0x63F8, 0xE18F,
- 0xE190, 0x6490, 0x6F8A, 0xE193, 0x9814, 0xE195, 0xE196, 0x64E1,
- 0x64E5, 0x947B, 0x3A66, 0x643A, 0x3A57, 0x654D, 0x6F16, 0xE19F,
- 0xE1A0, 0x6585, 0x656D, 0x655F, 0xE1A4, 0x65B5, 0xE1A6, 0x4B37,
- 0x65D1, 0x40D8, 0xE1AA, 0x65E0, 0x65E3, 0x5FDF, 0xE1AE, 0x6618,
- 0xE1B0, 0xE1B1, 0x6644, 0xE1B3, 0xE1B4, 0x664B, 0xE1B6, 0x6667,
- 0xE1B8, 0x6673, 0x6674, 0xE1BB, 0xE1BC, 0xE1BD, 0xE1BE, 0xE1BF,
- 0x77C5, 0xE1C1, 0x99A4, 0x6702, 0xE1C4, 0xE1C5, 0x3B2B, 0x69FA,
- 0xE1C8, 0x675E, 0x6767, 0x6762, 0xE1CC, 0xE1CD, 0x67D7, 0x44E9,
- 0x6822, 0x6E50, 0x923C, 0x6801, 0xE1D4, 0xE1D5, 0x685D,
- /* Big5-HKSCS 0xFD40 .. 0xFD7E */
- 0xE1D7, 0x69E1, 0x6A0B, 0xE1DA, 0x6973, 0x68C3, 0xE1DD, 0x6901,
- 0x6900, 0x3D32, 0x3A01, 0xE1E2, 0x3B80, 0x67AC, 0x6961, 0xE1E6,
- 0x42FC, 0x6936, 0x6998, 0x3BA1, 0xE1EB, 0x8363, 0x5090, 0x69F9,
- 0xE1EF, 0xE1F0, 0x6A45, 0xE1F2, 0x6A9D, 0x3BF3, 0x67B1, 0x6AC8,
- 0xE1F7, 0x3C0D, 0x6B1D, 0xE1FA, 0x60DE, 0x6B35, 0x6B74, 0xE1FE,
- 0x6EB5, 0xE200, 0xE201, 0xE202, 0x3740, 0x5421, 0xE205, 0x6BE1,
- 0xE207, 0x6BDC, 0x6C37, 0xE20A, 0xE20B, 0xE20C, 0x6C5A, 0x8226,
- 0x6C79, 0xE210, 0x44C5, 0xE212, 0xE213, 0xE214, 0xE215,
- /* Big5-HKSCS 0xFDA1 .. 0xFDFE */
- 0xE216, 0x36E5, 0x3CEB, 0xE219, 0x9B83, 0xE21B, 0xE21C,
- 0x7F8F, 0x6837, 0xE21F, 0xE220, 0xE221, 0x6D96, 0x6D5C, 0x6E7C,
- 0x6F04, 0xE226, 0xE227, 0xE228, 0x8533, 0xE22A, 0x51C7, 0x6C9C,
- 0x6E1D, 0x842E, 0xE22F, 0x6E2F, 0xE231, 0x7453, 0xE233, 0x79CC,
- 0x6E4F, 0x5A91, 0xE237, 0x6FF8, 0x370D, 0x6F9D, 0xE23B, 0x6EFA,
- 0xE23D, 0xE23E, 0x4555, 0x93F0, 0x6F44, 0x6F5C, 0x3D4E, 0x6F74,
- 0xE245, 0x3D3B, 0x6F9F, 0xE248, 0x6FD3, 0xE24A, 0xE24B, 0xE24C,
- 0xE24D, 0xE24E, 0xE24F, 0x51DF, 0xE251, 0xE252, 0xE253, 0xE254,
- 0x704B, 0x707E, 0x70A7, 0x7081, 0x70CC, 0x70D5, 0x70D6, 0x70DF,
- 0x4104, 0x3DE8, 0x71B4, 0x7196, 0xE261, 0x712B, 0x7145, 0x5A88,
- 0x714A, 0x716E, 0x5C9C, 0xE268, 0x714F, 0x9362, 0xE26B, 0x712C,
- 0xE26D, 0xE26E, 0xE26F, 0x71BA, 0xE271, 0x70BD, 0x720E,
- /* Big5-HKSCS 0xFE40 .. 0xFE7E */
- 0x9442, 0x7215, 0x5911, 0x9443, 0x7224, 0x9341, 0xE27A, 0x722E,
- 0x7240, 0xE27D, 0x68BD, 0x7255, 0x7257, 0x3E55, 0xE282, 0x680D,
- 0x6F3D, 0x7282, 0x732A, 0x732B, 0xE288, 0xE289, 0x48ED, 0xE28B,
- 0x7328, 0x732E, 0x73CF, 0x73AA, 0xE290, 0xE291, 0x73C9, 0x7449,
- 0xE294, 0xE295, 0xE296, 0x6623, 0x36C5, 0xE299, 0xE29A, 0xE29B,
- 0x73F7, 0x7415, 0x6903, 0xE29F, 0x7439, 0xE2A1, 0x3ED7, 0x745C,
- 0xE2A4, 0x7460, 0xE2A6, 0x7447, 0x73E4, 0x7476, 0x83B9, 0x746C,
- 0x3730, 0x7474, 0x93F1, 0x6A2C, 0x7482, 0x4953, 0xE2B2,
- /* Big5-HKSCS 0xFEA1 .. 0xFEFE */
- 0xE2B3, 0xE2B4, 0xE2B5, 0x5B46, 0xE2B7, 0xE2B8, 0x74C8,
- 0xE2BA, 0x750E, 0x74E9, 0x751E, 0xE2BE, 0xE2BF, 0x5BD7, 0xE2C1,
- 0x9385, 0x754D, 0x754A, 0x7567, 0x756E, 0xE2C7, 0x3F04, 0xE2C9,
- 0x758E, 0x745D, 0x759E, 0x75B4, 0x7602, 0x762C, 0x7651, 0x764F,
- 0x766F, 0x7676, 0xE2D4, 0x7690, 0x81EF, 0x37F8, 0xE2D8, 0xE2D9,
- 0x76A1, 0x76A5, 0x76B7, 0x76CC, 0xE2DE, 0x8462, 0xE2E0, 0xE2E1,
- 0xE2E2, 0x771E, 0x7726, 0x7740, 0x64AF, 0xE2E7, 0x7758, 0xE2E9,
- 0x77AF, 0xE2EB, 0xE2EC, 0xE2ED, 0x77F4, 0x7809, 0xE2F0, 0xE2F1,
- 0x68CA, 0x78AF, 0x78C7, 0x78D3, 0x96A5, 0x792E, 0xE2F8, 0x78D7,
- 0x7934, 0x78B1, 0xE2FC, 0x8FB8, 0x8884, 0xE2FF, 0xE300, 0xE301,
- 0x7986, 0x8900, 0x6902, 0x7980, 0xE306, 0x799D, 0xE308, 0x793C,
- 0x79A9, 0x6E2A, 0xE30C, 0x3EA8, 0x79C6, 0xE30F, 0x79D4,
-};
-
-
-/* Returns the number of bytes of Bytes consumed. */
-static int qt_Big5hkscsToUnicode(const uchar *s, uint *pwc)
-{
- uchar c1 = s[0];
- if ((c1 >= 0x81 && c1 <= 0xfe)) {
- uchar c2 = s[1];
- if ((c2 >= 0x40 && c2 < 0x7f) || (c2 >= 0xa1 && c2 < 0xff)) {
- uint i = 157 * (c1 - 0x81) + (c2 - (c2 >= 0xa1 ? 0x62 : 0x40));
- ushort wc = 0xfffd;
- if (i < 19782)
- wc = big5hkscs_to_ucs[i];
- if (wc != 0xfffd) {
- *pwc = (uint) wc;
- return 2;
- }
- }
- return 0;
- } else if (c1 < 0x80) {
- *pwc = (uint) c1;
- return 1;
- }
- return 0;
-}
-
-//---------------------------------------------------------------------------
-
-/*
- * ucs4 to big5hkscs convert routing
- */
-
-typedef struct {
- ushort index; /* index into big table */
- ushort used; /* bitmask of used entries */
-} Summary16;
-
-/* ISO-10646-UCS-4 to big5hkscs convert table */
-static const uchar big5hkscs_to_charset[24908][2] = {
- {0x21,0x00}, {0xA2,0x46}, {0xA2,0x47}, {0xA2,0x44},
- {0x7C,0x00}, {0xA1,0xB1}, {0xC6,0xD8}, {0x63,0x00},
- {0x61,0x00}, {0x2D,0x00}, {0x52,0x00}, {0xA1,0xC2},
- {0xA2,0x58}, {0xA1,0xD3}, {0x32,0x00}, {0x33,0x00},
- {0xA1,0xA6}, {0xA3,0x67}, {0xA1,0x50}, {0xA1,0x4D},
- {0x31,0x00}, {0x6F,0x00}, {0x3F,0x00}, {0x88,0x59},
- {0x88,0x57}, {0x41,0x00}, {0x41,0x00}, {0x41,0x00},
- {0x41,0x00}, {0x41,0x00}, {0x43,0x00}, {0x88,0x5D},
- {0x88,0x5B}, {0x88,0x66}, {0x45,0x00}, {0x49,0x00},
- {0x49,0x00}, {0x49,0x00}, {0x49,0x00}, {0x44,0x00},
- {0x4E,0x00}, {0x88,0x61}, {0x88,0x5F}, {0x4F,0x00},
- {0x4F,0x00}, {0x4F,0x00}, {0xA1,0xD1}, {0x4F,0x00},
- {0x55,0x00}, {0x55,0x00}, {0x55,0x00}, {0x55,0x00},
- {0x59,0x00}, {0x54,0x00}, {0x73,0x00}, {0x88,0x6A},
- {0x88,0x68}, {0x61,0x00}, {0x61,0x00}, {0x61,0x00},
- {0x61,0x00}, {0x61,0x00}, {0x63,0x00}, {0x88,0x6F},
- {0x88,0x6D}, {0x88,0xA7}, {0x65,0x00}, {0x88,0x73},
- {0x88,0x71}, {0x69,0x00}, {0x69,0x00}, {0x65,0x00},
- {0x6E,0x00}, {0x88,0x77}, {0x88,0x75}, {0x6F,0x00},
- {0x6F,0x00}, {0x6F,0x00}, {0xA1,0xD2}, {0xC8,0xFB},
- {0x88,0x7B}, {0x88,0x79}, {0x75,0x00}, {0x88,0xA2},
- {0x79,0x00}, {0x74,0x00}, {0x79,0x00}, {0x88,0x56},
- {0x88,0x67}, {0x88,0x5A}, {0x88,0x6C}, {0x88,0x5C},
- {0x88,0x6E}, {0x88,0x70}, {0xC8,0xFC}, {0x88,0x5E},
- {0x88,0x74}, {0xC8,0xFA}, {0x88,0x78}, {0x88,0x58},
- {0x88,0x69}, {0x88,0x72}, {0x88,0x60}, {0x88,0x76},
- {0x88,0x7A}, {0x88,0x7C}, {0x88,0x7D}, {0x88,0x7E},
- {0x88,0xA1}, {0xC8,0xF6}, {0x88,0x6B}, {0xC8,0xF8},
- {0xC8,0xF7}, {0x88,0xA8}, {0xC8,0xFE}, {0xC8,0xF9},
- {0xC8,0xF5}, {0xC8,0xFD}, {0xC6,0xD9}, {0xA3,0xBE},
- {0xA3,0xBC}, {0xA3,0xBD}, {0xA3,0xBF}, {0xA1,0xC5},
- {0xA3,0xBB}, {0xA1,0xC2}, {0xA3,0x44}, {0xA3,0x45},
- {0xA3,0x46}, {0xA3,0x47}, {0xA3,0x48}, {0xA3,0x49},
- {0xA3,0x4A}, {0xA3,0x4B}, {0xA3,0x4C}, {0xA3,0x4D},
- {0xA3,0x4E}, {0xA3,0x4F}, {0xA3,0x50}, {0xA3,0x51},
- {0xA3,0x52}, {0xA3,0x53}, {0xA3,0x54}, {0xA3,0x55},
- {0xA3,0x56}, {0xA3,0x57}, {0xA3,0x58}, {0xA3,0x59},
- {0xA3,0x5A}, {0xA3,0x5B}, {0xA3,0x5C}, {0xA3,0x5D},
- {0xA3,0x5E}, {0xA3,0x5F}, {0xA3,0x60}, {0xA3,0x61},
- {0xA3,0x62}, {0xA3,0x63}, {0xA3,0x64}, {0xA3,0x65},
- {0xA3,0x66}, {0xA3,0x67}, {0xA3,0x68}, {0xA3,0x69},
- {0xA3,0x6A}, {0xA3,0x6B}, {0xA3,0x6C}, {0xA3,0x6D},
- {0xA3,0x6E}, {0xA3,0x6F}, {0xA3,0x70}, {0xA3,0x71},
- {0xA3,0x72}, {0xA3,0x73}, {0xC7,0xF9}, {0xC7,0xF3},
- {0xC7,0xF4}, {0xC7,0xF5}, {0xC7,0xF6}, {0xC7,0xF7},
- {0xC7,0xF8}, {0xC7,0xFA}, {0xC7,0xFB}, {0xC7,0xFC},
- {0xC7,0xFD}, {0xC7,0xFE}, {0xC8,0x40}, {0xC8,0x41},
- {0xC8,0x42}, {0xC8,0x43}, {0xC8,0x44}, {0xC8,0x45},
- {0xC8,0x46}, {0xC8,0x47}, {0xC8,0x48}, {0xC8,0x49},
- {0xC8,0x4A}, {0xC8,0x4B}, {0xC8,0x4C}, {0xC8,0x4D},
- {0xC8,0x4E}, {0xC8,0x4F}, {0xC8,0x50}, {0xC8,0x51},
- {0xC8,0x52}, {0xC8,0x53}, {0xC8,0x54}, {0xC8,0x55},
- {0xC8,0x56}, {0xC8,0x57}, {0xC8,0x58}, {0xC8,0x59},
- {0xC8,0x5A}, {0xC8,0x5C}, {0xC8,0x5D}, {0xC8,0x5E},
- {0xC8,0x5F}, {0xC8,0x60}, {0xC8,0x61}, {0xC8,0x62},
- {0xC8,0x63}, {0xC8,0x64}, {0xC8,0x65}, {0xC8,0x66},
- {0xC8,0x67}, {0xC8,0x68}, {0xC8,0x69}, {0xC8,0x6A},
- {0xC8,0x6B}, {0xC8,0x6C}, {0xC8,0x6D}, {0xC8,0x6E},
- {0xC8,0x6F}, {0xC8,0x70}, {0xC8,0x71}, {0xC8,0x72},
- {0xC8,0x73}, {0xC8,0x74}, {0xC8,0x75}, {0xC8,0x5B},
- {0x88,0x63}, {0x88,0xA4}, {0x88,0x65}, {0x88,0xA6},
- {0xA1,0x56}, {0xA1,0x58}, {0xA2,0x77}, {0xA1,0xFC},
- {0xA1,0xA5}, {0xA1,0xA6}, {0xA1,0xA7}, {0xA1,0xA8},
- {0xA1,0x45}, {0xA3,0xBB}, {0xA1,0x4C}, {0xA1,0x4B},
- {0xA1,0x45}, {0xA1,0xAC}, {0xA1,0xB2}, {0xA1,0xAB},
- {0xA1,0xB0}, {0xA1,0xC3}, {0xA3,0xE1}, {0xA2,0x4A},
- {0xA1,0xC1}, {0xA2,0x4B}, {0xC8,0xD2}, {0xC8,0xD3},
- {0xA2,0xB9}, {0xA2,0xBA}, {0xA2,0xBB}, {0xA2,0xBC},
- {0xA2,0xBD}, {0xA2,0xBE}, {0xA2,0xBF}, {0xA2,0xC0},
- {0xA2,0xC1}, {0xA2,0xC2}, {0xC6,0xB5}, {0xC6,0xB6},
- {0xC6,0xB7}, {0xC6,0xB8}, {0xC6,0xB9}, {0xC6,0xBA},
- {0xC6,0xBB}, {0xC6,0xBC}, {0xC6,0xBD}, {0xC6,0xBE},
- {0xA1,0xF6}, {0xA1,0xF4}, {0xA1,0xF7}, {0xA1,0xF5},
- {0xA1,0xF8}, {0xA1,0xF9}, {0xA1,0xFB}, {0xA1,0xFA},
- {0xC8,0x77}, {0xC8,0x78}, {0xC8,0x76}, {0xA2,0x41},
- {0xA2,0x42}, {0xA2,0x58}, {0xA1,0xD4}, {0xA1,0xDB},
- {0xA1,0xE8}, {0xA1,0xE7}, {0xA1,0xFD}, {0xA1,0xFC},
- {0xA1,0xE4}, {0xA1,0xE5}, {0xA1,0xEC}, {0xA1,0xED},
- {0xA1,0xEF}, {0xA1,0xEE}, {0xA1,0xDC}, {0xA1,0xDA},
- {0xA1,0xDD}, {0xA1,0xDD}, {0xA1,0xD8}, {0xA1,0xD9},
- {0xA1,0xF2}, {0xA1,0xF3}, {0xA1,0xE6}, {0xA1,0xE9},
- {0xA1,0x5B}, {0xC6,0xA1}, {0xC6,0xA2}, {0xC6,0xA3},
- {0xC6,0xA4}, {0xC6,0xA5}, {0xC6,0xA6}, {0xC6,0xA7},
- {0xC6,0xA8}, {0xC6,0xA9}, {0xC6,0xAA}, {0xC6,0xAB},
- {0xC6,0xAC}, {0xC6,0xAD}, {0xC6,0xAE}, {0xC6,0xAF},
- {0xC6,0xB0}, {0xC6,0xB1}, {0xC6,0xB2}, {0xC6,0xB3},
- {0xC6,0xB4}, {0xA2,0x77}, {0xA2,0x78}, {0xA2,0x7A},
- {0xA2,0x7B}, {0xA2,0x7C}, {0xA2,0x7D}, {0xA2,0x75},
- {0xA2,0x74}, {0xA2,0x73}, {0xA2,0x72}, {0xA2,0x71},
- {0xF9,0xF9}, {0xF9,0xF8}, {0xF9,0xE6}, {0xF9,0xEF},
- {0xF9,0xDD}, {0xF9,0xE8}, {0xF9,0xF1}, {0xF9,0xDF},
- {0xF9,0xEC}, {0xF9,0xF5}, {0xF9,0xE3}, {0xF9,0xEE},
- {0xF9,0xF7}, {0xF9,0xE5}, {0xF9,0xE9}, {0xF9,0xF2},
- {0xF9,0xE0}, {0xF9,0xEB}, {0xF9,0xF4}, {0xF9,0xE2},
- {0xF9,0xE7}, {0xF9,0xF0}, {0xF9,0xDE}, {0xF9,0xED},
- {0xF9,0xF6}, {0xF9,0xE4}, {0xF9,0xEA}, {0xF9,0xF3},
- {0xF9,0xE1}, {0xF9,0xFA}, {0xF9,0xFB}, {0xF9,0xFD},
- {0xF9,0xFC}, {0xA2,0xAC}, {0xA2,0xAD}, {0xA2,0xAE},
- {0xA1,0x5A}, {0xA2,0x62}, {0xA2,0x63}, {0xA2,0x64},
- {0xA2,0x65}, {0xA2,0x66}, {0xA2,0x67}, {0xA2,0x68},
- {0xA2,0x69}, {0xA2,0x70}, {0xA2,0x6F}, {0xA2,0x6E},
- {0xA2,0x6D}, {0xA2,0x6C}, {0xA2,0x6B}, {0xA2,0x6A},
- {0xF9,0xFE}, {0xA2,0x76}, {0xA2,0x79}, {0xA1,0xBD},
- {0xA1,0xBC}, {0xA1,0xB6}, {0xA1,0xB5}, {0xA1,0xBF},
- {0xA1,0xBE}, {0xA1,0xBB}, {0xA1,0xBA}, {0xA1,0xB3},
- {0xA1,0xB7}, {0xA1,0xB4}, {0xA2,0xA8}, {0xA2,0xA9},
- {0xA2,0xAB}, {0xA2,0xAA}, {0xA1,0xB9}, {0xA1,0xB8},
- {0xA1,0xF3}, {0xA1,0xF0}, {0xA1,0xF2}, {0xA1,0xF1},
- {0xC6,0xE6}, {0xC8,0xD6}, {0xC8,0xD7}, {0xC8,0xD8},
- {0xC8,0xD9}, {0xC8,0xDA}, {0xC8,0xDB}, {0xC8,0xDC},
- {0xC8,0xDD}, {0xC8,0xDE}, {0xC8,0xDF}, {0xC8,0xE0},
- {0xC8,0xE1}, {0xC8,0xE2}, {0xC8,0xE3}, {0xC8,0xE4},
- {0xC8,0xE5}, {0xC8,0xE6}, {0xC8,0xE7}, {0xC8,0xE8},
- {0xC8,0xE9}, {0xC8,0xEA}, {0xC8,0xEB}, {0xC8,0xEC},
- {0xC8,0xED}, {0xC8,0xEE}, {0xC8,0xEF}, {0xC8,0xF0},
- {0xC8,0xF1}, {0xC6,0xCD}, {0xA1,0x40}, {0xA1,0x42},
- {0xA1,0x43}, {0xA1,0xB2}, {0xC6,0xE0}, {0xC6,0xE1},
- {0xC6,0xE2}, {0xA1,0x71}, {0xA1,0x72}, {0xA1,0x6D},
- {0xA1,0x6E}, {0xA1,0x75}, {0xA1,0x76}, {0xA1,0x79},
- {0xA1,0x7A}, {0xA1,0x69}, {0xA1,0x6A}, {0xA2,0x45},
- {0xA1,0x65}, {0xA1,0x66}, {0xA1,0xE3}, {0xA1,0xA9},
- {0xA1,0xAA}, {0xA2,0xC3}, {0xA2,0xC4}, {0xA2,0xC5},
- {0xA2,0xC6}, {0xA2,0xC7}, {0xA2,0xC8}, {0xA2,0xC9},
- {0xA2,0xCA}, {0xA2,0xCB}, {0xA1,0xCA}, {0xC6,0xE7},
- {0xC6,0xE8}, {0xC6,0xE9}, {0xC6,0xEA}, {0xC6,0xEB},
- {0xC6,0xEC}, {0xC6,0xED}, {0xC6,0xEE}, {0xC6,0xEF},
- {0xC6,0xF0}, {0xC6,0xF1}, {0xC6,0xF2}, {0xC6,0xF3},
- {0xC6,0xF4}, {0xC6,0xF5}, {0xC6,0xF6}, {0xC6,0xF7},
- {0xC6,0xF8}, {0xC6,0xF9}, {0xC6,0xFA}, {0xC6,0xFB},
- {0xC6,0xFC}, {0xC6,0xFD}, {0xC6,0xFE}, {0xC7,0x40},
- {0xC7,0x41}, {0xC7,0x42}, {0xC7,0x43}, {0xC7,0x44},
- {0xC7,0x45}, {0xC7,0x46}, {0xC7,0x47}, {0xC7,0x48},
- {0xC7,0x49}, {0xC7,0x4A}, {0xC7,0x4B}, {0xC7,0x4C},
- {0xC7,0x4D}, {0xC7,0x4E}, {0xC7,0x4F}, {0xC7,0x50},
- {0xC7,0x51}, {0xC7,0x52}, {0xC7,0x53}, {0xC7,0x54},
- {0xC7,0x55}, {0xC7,0x56}, {0xC7,0x57}, {0xC7,0x58},
- {0xC7,0x59}, {0xC7,0x5A}, {0xC7,0x5B}, {0xC7,0x5C},
- {0xC7,0x5D}, {0xC7,0x5E}, {0xC7,0x5F}, {0xC7,0x60},
- {0xC7,0x61}, {0xC7,0x62}, {0xC7,0x63}, {0xC7,0x64},
- {0xC7,0x65}, {0xC7,0x66}, {0xC7,0x67}, {0xC7,0x68},
- {0xC7,0x69}, {0xC7,0x6A}, {0xC7,0x6B}, {0xC7,0x6C},
- {0xC7,0x6D}, {0xC7,0x6E}, {0xC7,0x6F}, {0xC7,0x70},
- {0xC7,0x71}, {0xC7,0x72}, {0xC7,0x73}, {0xC7,0x74},
- {0xC7,0x75}, {0xC7,0x76}, {0xC7,0x77}, {0xC7,0x78},
- {0xC7,0x79}, {0xC7,0x7A}, {0xC8,0xD4}, {0xC8,0xD5},
- {0xC6,0xDC}, {0xC6,0xDD}, {0xC7,0x7B}, {0xC7,0x7C},
- {0xC7,0x7D}, {0xC7,0x7E}, {0xC7,0xA1}, {0xC7,0xA2},
- {0xC7,0xA3}, {0xC7,0xA4}, {0xC7,0xA5}, {0xC7,0xA6},
- {0xC7,0xA7}, {0xC7,0xA8}, {0xC7,0xA9}, {0xC7,0xAA},
- {0xC7,0xAB}, {0xC7,0xAC}, {0xC7,0xAD}, {0xC7,0xAE},
- {0xC7,0xAF}, {0xC7,0xB0}, {0xC7,0xB1}, {0xC7,0xB2},
- {0xC7,0xB3}, {0xC7,0xB4}, {0xC7,0xB5}, {0xC7,0xB6},
- {0xC7,0xB7}, {0xC7,0xB8}, {0xC7,0xB9}, {0xC7,0xBA},
- {0xC7,0xBB}, {0xC7,0xBC}, {0xC7,0xBD}, {0xC7,0xBE},
- {0xC7,0xBF}, {0xC7,0xC0}, {0xC7,0xC1}, {0xC7,0xC2},
- {0xC7,0xC3}, {0xC7,0xC4}, {0xC7,0xC5}, {0xC7,0xC6},
- {0xC7,0xC7}, {0xC7,0xC8}, {0xC7,0xC9}, {0xC7,0xCA},
- {0xC7,0xCB}, {0xC7,0xCC}, {0xC7,0xCD}, {0xC7,0xCE},
- {0xC7,0xCF}, {0xC7,0xD0}, {0xC7,0xD1}, {0xC7,0xD2},
- {0xC7,0xD3}, {0xC7,0xD4}, {0xC7,0xD5}, {0xC7,0xD6},
- {0xC7,0xD7}, {0xC7,0xD8}, {0xC7,0xD9}, {0xC7,0xDA},
- {0xC7,0xDB}, {0xC7,0xDC}, {0xC7,0xDD}, {0xC7,0xDE},
- {0xC7,0xDF}, {0xC7,0xE0}, {0xC7,0xE1}, {0xC7,0xE2},
- {0xC7,0xE3}, {0xC7,0xE4}, {0xC7,0xE5}, {0xC7,0xE6},
- {0xC7,0xE7}, {0xC7,0xE8}, {0xC7,0xE9}, {0xC7,0xEA},
- {0xC7,0xEB}, {0xC7,0xEC}, {0xC7,0xED}, {0xC7,0xEE},
- {0xC7,0xEF}, {0xC7,0xF0}, {0xC7,0xF1}, {0xC7,0xF2},
- {0xC6,0xE3}, {0xC6,0xDA}, {0xC6,0xDB}, {0xA3,0x74},
- {0xA3,0x75}, {0xA3,0x76}, {0xA3,0x77}, {0xA3,0x78},
- {0xA3,0x79}, {0xA3,0x7A}, {0xA3,0x7B}, {0xA3,0x7C},
- {0xA3,0x7D}, {0xA3,0x7E}, {0xA3,0xA1}, {0xA3,0xA2},
- {0xA3,0xA3}, {0xA3,0xA4}, {0xA3,0xA5}, {0xA3,0xA6},
- {0xA3,0xA7}, {0xA3,0xA8}, {0xA3,0xA9}, {0xA3,0xAA},
- {0xA3,0xAB}, {0xA3,0xAC}, {0xA3,0xAD}, {0xA3,0xAE},
- {0xA3,0xAF}, {0xA3,0xB0}, {0xA3,0xB1}, {0xA3,0xB2},
- {0xA3,0xB3}, {0xA3,0xB4}, {0xA3,0xB5}, {0xA3,0xB6},
- {0xA3,0xB7}, {0xA3,0xB8}, {0xA3,0xB9}, {0xA3,0xBA},
- {0xA4,0x40}, {0xA4,0x47}, {0xA4,0x54}, {0xA5,0x7C},
- {0xA4,0x57}, {0xA4,0xA4}, {0xA4,0x55}, {0xA5,0xD2},
- {0xA4,0x41}, {0xA4,0xFE}, {0xA4,0x42}, {0xA4,0xD1},
- {0xA6,0x61}, {0xA4,0x48}, {0xA4,0x40}, {0xA4,0x47},
- {0xA4,0x54}, {0xA5,0x7C}, {0xA4,0xAD}, {0xA4,0xBB},
- {0xA4,0x43}, {0xA4,0x4B}, {0xA4,0x45}, {0xA4,0x51},
- {0xA4,0xEB}, {0xA4,0xF5}, {0xA4,0xF4}, {0xA4,0xEC},
- {0xAA,0xF7}, {0xA4,0x67}, {0xA4,0xE9}, {0xC8,0xD1},
- {0xA6,0xB3}, {0xAA,0xC0}, {0xA6,0x57}, {0xAF,0x53},
- {0xB0,0x5D}, {0xAF,0xAC}, {0xB3,0xD2}, {0xA5,0x4E},
- {0xA9,0x49}, {0xBE,0xC7}, {0xBA,0xCA}, {0xA5,0xF8},
- {0xB8,0xEA}, {0xA8,0xF3}, {0xB2,0xBD}, {0xA5,0xF0},
- {0xA6,0xDB}, {0xA6,0xDC}, {0xA4,0x40}, {0xA4,0x47},
- {0xA4,0x54}, {0xA5,0x7C}, {0xA4,0xAD}, {0xA4,0xBB},
- {0xA4,0x43}, {0xA4,0x4B}, {0xA4,0x45}, {0xA4,0x51},
- {0xA4,0xEB}, {0xA4,0xF5}, {0xA4,0xF4}, {0xA4,0xEC},
- {0xAA,0xF7}, {0xA4,0x67}, {0xA4,0xE9}, {0xAE,0xE8},
- {0xA6,0xB3}, {0xAA,0xC0}, {0xA6,0x57}, {0xAF,0x53},
- {0xB0,0x5D}, {0xAF,0xAC}, {0xB3,0xD2}, {0xAF,0xB5},
- {0xA8,0x6B}, {0xA4,0x6B}, {0xBE,0x41}, {0xC0,0x75},
- {0xA6,0x4C}, {0xAA,0x60}, {0xB6,0xB5}, {0xA5,0xF0},
- {0xBC,0x67}, {0xA1,0xC0}, {0xA4,0x57}, {0xA4,0xA4},
- {0xA4,0x55}, {0xA5,0xAA}, {0xA5,0x6B}, {0xC2,0xE5},
- {0xA9,0x76}, {0xBE,0xC7}, {0xBA,0xCA}, {0xA5,0xF8},
- {0xB8,0xEA}, {0xA8,0xF3}, {0xA9,0x5D}, {0xA2,0x55},
- {0xA2,0x56}, {0xA2,0x50}, {0xA2,0x51}, {0xA2,0x52},
- {0xA2,0x54}, {0xA2,0x57}, {0xA2,0x53}, {0xA1,0xEB},
- {0xA1,0xEA}, {0xA2,0x4F}, {0x92,0x77}, {0x96,0xDF},
- {0x89,0xD5}, {0x93,0xCD}, {0x9B,0xDF}, {0xFA,0x68},
- {0x89,0xDA}, {0x8F,0x59}, {0x89,0xDB}, {0x8F,0x5D},
- {0x89,0xDC}, {0x96,0xF7}, {0x8A,0xDA}, {0x8B,0xDC},
- {0x97,0xDB}, {0x9E,0x53}, {0x9D,0xAA}, {0x9B,0xEA},
- {0x8A,0x6E}, {0x8B,0xC8}, {0x89,0xE8}, {0x89,0xEA},
- {0x8C,0x4B}, {0xFB,0x70}, {0x89,0xED}, {0x94,0xDD},
- {0x89,0xEE}, {0x9E,0xB4}, {0x8A,0xD3}, {0x92,0xDB},
- {0x94,0xDB}, {0x89,0xF9}, {0xFB,0x7A}, {0x89,0xFB},
- {0x9E,0xFC}, {0x89,0xFC}, {0x89,0xBF}, {0x89,0xFE},
- {0x89,0xE6}, {0x9D,0x46}, {0x9D,0xEE}, {0xA0,0x7E},
- {0xA0,0x68}, {0x98,0xE9}, {0x8B,0x68}, {0x8D,0xFD},
- {0x8B,0xBE}, {0x9F,0xD9}, {0x8A,0xEB}, {0x9F,0xD7},
- {0x8B,0x6A}, {0x9C,0x5C}, {0x8B,0xB1}, {0xFB,0x5E},
- {0x9D,0xF3}, {0xA0,0xD0}, {0xFC,0x66}, {0x92,0xE9},
- {0x9A,0xEC}, {0x8F,0xAB}, {0xFA,0x48}, {0x8E,0x45},
- {0x9C,0x6F}, {0x9E,0xDE}, {0x89,0xEF}, {0x96,0xE9},
- {0x9E,0xBB}, {0x94,0xDE}, {0x9E,0xB8}, {0x97,0xBA},
- {0xFB,0x65}, {0x95,0xD6}, {0x9C,0xBB}, {0x97,0xDA},
- {0x8F,0x45}, {0xFB,0x7D}, {0x91,0x58}, {0xFE,0x64},
- {0x98,0x56}, {0x9B,0x4D}, {0x93,0x5B}, {0x95,0xC7},
- {0x97,0xE7}, {0x93,0x59}, {0x91,0xF5}, {0x97,0xB8},
- {0xFD,0xA2}, {0xFB,0xB6}, {0x92,0xFA}, {0x93,0x57},
- {0x8B,0xA6}, {0xFB,0xB9}, {0x97,0xB0}, {0xFD,0xC4},
- {0x9C,0xA1}, {0x91,0xF2}, {0x91,0xF9}, {0x8F,0xF1},
- {0x97,0x45}, {0x98,0x53}, {0xFE,0x78}, {0xFB,0xC1},
- {0x92,0x51}, {0x9D,0xAD}, {0xFD,0x6C}, {0xFA,0x6B},
- {0x9B,0xC2}, {0x9A,0x7B}, {0x8B,0x60}, {0x93,0x4B},
- {0x9A,0xBD}, {0x91,0xB7}, {0x95,0xB4}, {0xFE,0xC5},
- {0x9E,0xF0}, {0x8D,0x64}, {0x92,0x69}, {0x8D,0x67},
- {0xFB,0xEA}, {0xFB,0xEF}, {0x8D,0x68}, {0x93,0xEB},
- {0xFC,0x42}, {0x91,0x66}, {0xFA,0xCD}, {0x93,0xDD},
- {0x8B,0xCC}, {0x8D,0x6D}, {0x8D,0x6E}, {0x96,0xA8},
- {0xFC,0xA6}, {0x8D,0x6F}, {0x8D,0x70}, {0xFC,0x64},
- {0x90,0x60}, {0x8D,0x74}, {0x97,0xC3}, {0x8A,0xD0},
- {0x92,0x74}, {0x9B,0xBE}, {0x9C,0xC8}, {0x9C,0xBA},
- {0x8D,0x78}, {0x9E,0xB9}, {0x95,0x5A}, {0x91,0xB4},
- {0x8A,0x48}, {0x8D,0x7D}, {0x8A,0x7D}, {0x8A,0xC2},
- {0xFD,0x4A}, {0x8D,0xA1}, {0x8A,0xD1}, {0xFC,0xB4},
- {0x8B,0x47}, {0x93,0xA4}, {0x9E,0xDA}, {0x8A,0x51},
- {0x8D,0xA6}, {0x9E,0xC5}, {0xFC,0xC4}, {0xA0,0x78},
- {0x94,0xB5}, {0xFC,0xC2}, {0x8A,0x6B}, {0x8D,0xAB},
- {0xFA,0xE8}, {0x8D,0xAD}, {0xFC,0x49}, {0x93,0xC1},
- {0x90,0x6F}, {0x8D,0xB0}, {0x94,0x7E}, {0x90,0xFA},
- {0x94,0x79}, {0x8D,0xB2}, {0xFC,0xEE}, {0x99,0x7B},
- {0x8D,0xB4}, {0x8D,0xB7}, {0x91,0xB3}, {0x8D,0xBB},
- {0x8D,0xBA}, {0x8D,0xBC}, {0x90,0x44}, {0xFD,0x4C},
- {0x93,0xE4}, {0x93,0xE0}, {0xFD,0x53}, {0x8D,0xC3},
- {0x9B,0xB8}, {0xFB,0xF0}, {0x93,0xE9}, {0x93,0xF6},
- {0x8D,0xC5}, {0x8D,0xCA}, {0x8D,0xCC}, {0xFD,0x5D},
- {0x93,0xB5}, {0xFD,0x61}, {0x9C,0xF8}, {0x92,0x52},
- {0xA0,0xE8}, {0x9C,0xA5}, {0x8C,0x56}, {0x8D,0xD6},
- {0x97,0xC0}, {0xA0,0xDE}, {0x97,0xD2}, {0xFA,0xA5},
- {0xFD,0xA3}, {0x8D,0xDB}, {0x8E,0xAF}, {0x91,0xB5},
- {0xFD,0x49}, {0xFD,0xD1}, {0x8D,0xEB}, {0x97,0xC6},
- {0xFD,0xCE}, {0x90,0xFC}, {0xFC,0x59}, {0x96,0xD6},
- {0x97,0xC5}, {0x8D,0xEF}, {0x97,0xD7}, {0x8D,0xF0},
- {0x96,0xA6}, {0xFB,0xBF}, {0x8D,0xF3}, {0x94,0x49},
- {0x8D,0xF5}, {0x98,0x72}, {0x8E,0x6B}, {0xFA,0xFD},
- {0x8F,0x50}, {0x9D,0xCC}, {0xFC,0x65}, {0x8C,0x44},
- {0x99,0x6E}, {0x94,0xA1}, {0x8F,0x63}, {0xA0,0xDA},
- {0x92,0x53}, {0xFD,0xE9}, {0x9D,0xB5}, {0x98,0x79},
- {0x9D,0x5D}, {0x8D,0x63}, {0x96,0x69}, {0x9F,0x70},
- {0xFC,0x6A}, {0x8A,0xC7}, {0x89,0xD7}, {0xFE,0x4D},
- {0x9E,0xDD}, {0xFE,0xFB}, {0x98,0xBC}, {0xFA,0xCC},
- {0x95,0xB0}, {0x94,0x64}, {0x93,0x6F}, {0x94,0xB9},
- {0x95,0xEC}, {0x91,0xEE}, {0x98,0xC3}, {0x95,0xF6},
- {0x8F,0xFD}, {0x98,0xC5}, {0x97,0x66}, {0xFE,0x6E},
- {0x97,0xDD}, {0x8C,0xAA}, {0x92,0xD2}, {0x97,0x61},
- {0x98,0xCB}, {0x95,0xF0}, {0x97,0x5D}, {0x91,0xE3},
- {0x98,0xCC}, {0x94,0x69}, {0x98,0xCD}, {0x98,0xCE},
- {0x95,0xFC}, {0x94,0xA3}, {0x96,0x62}, {0xFE,0xB6},
- {0x94,0x63}, {0x98,0xD0}, {0x98,0xD1}, {0x94,0x75},
- {0xFA,0xE0}, {0x94,0x72}, {0x98,0xD6}, {0x8A,0xF0},
- {0x98,0xD9}, {0x98,0xDB}, {0x98,0xDD}, {0x98,0xA8},
- {0x8A,0x6D}, {0x8A,0xFB}, {0x8A,0xAE}, {0xFB,0xC9},
- {0x8C,0x5D}, {0x98,0xE4}, {0x98,0xE6}, {0x98,0xE8},
- {0x8A,0x4D}, {0x92,0x57}, {0x95,0xDF}, {0xA0,0xAC},
- {0x98,0xEB}, {0x98,0xEC}, {0x8C,0xC3}, {0x98,0xF4},
- {0x8A,0xB8}, {0x9E,0xE7}, {0x94,0xBC}, {0xFC,0xD1},
- {0x9C,0xC6}, {0x9E,0x7E}, {0x98,0xFE}, {0xFD,0xE8},
- {0x99,0x40}, {0x94,0xC9}, {0x94,0xD3}, {0x99,0x46},
- {0x90,0xC0}, {0x94,0xD1}, {0x95,0x73}, {0x93,0xC2},
- {0x99,0x48}, {0x99,0x4B}, {0x8E,0x55}, {0x99,0x4E},
- {0x8E,0xFE}, {0x8E,0x59}, {0x94,0xEC}, {0x94,0xEF},
- {0x8C,0x60}, {0x8F,0x74}, {0x99,0x55}, {0x95,0x44},
- {0x8C,0xCB}, {0x99,0x56}, {0x99,0x59}, {0x99,0x5B},
- {0x8C,0xC4}, {0xFA,0x45}, {0x90,0xB7}, {0x97,0x43},
- {0x95,0xCD}, {0x97,0xC9}, {0xFD,0x50}, {0x8E,0xB9},
- {0x95,0xC6}, {0x99,0x67}, {0x8A,0xB9}, {0x8D,0xFC},
- {0x8A,0x76}, {0x9D,0x51}, {0x99,0x73}, {0x9D,0x4F},
- {0x99,0x7A}, {0x95,0x64}, {0x99,0xA1}, {0x99,0xA5},
- {0x99,0xA7}, {0x8E,0xED}, {0x99,0xAD}, {0x94,0x6E},
- {0x8F,0x70}, {0xFA,0xD0}, {0x99,0xB3}, {0xA0,0x53},
- {0x96,0x5C}, {0xFD,0x7A}, {0x97,0xFE}, {0x92,0xBD},
- {0x97,0xFD}, {0x8F,0x64}, {0xFC,0xF7}, {0x95,0x62},
- {0x97,0xCD}, {0x9E,0x64}, {0x92,0x4C}, {0x8E,0xC9},
- {0x99,0xBC}, {0x9D,0xA5}, {0x8F,0x54}, {0x8F,0x7C},
- {0x8E,0xA2}, {0x8F,0x7A}, {0x97,0xAE}, {0x96,0xC8},
- {0x99,0xC3}, {0x90,0xD6}, {0x9C,0xBE}, {0x8F,0x76},
- {0x94,0x70}, {0xFB,0x4B}, {0xFD,0xCA}, {0x8E,0xC7},
- {0xA0,0xF9}, {0x8F,0xA9}, {0x99,0xC7}, {0x90,0xD7},
- {0x9E,0xDF}, {0x99,0xCE}, {0x8F,0xBA}, {0x8F,0xEB},
- {0x99,0xCF}, {0x8F,0xC2}, {0x92,0xC9}, {0x97,0xDC},
- {0x95,0xB3}, {0x9C,0x79}, {0x95,0xB2}, {0x8F,0xDB},
- {0x9B,0xE3}, {0x9E,0x7A}, {0x9B,0xEE}, {0x99,0xDE},
- {0xFA,0xFA}, {0x9E,0xE5}, {0x8A,0x52}, {0x99,0xE1},
- {0x8A,0x67}, {0x8B,0xB5}, {0x8A,0xAC}, {0x99,0xE9},
- {0xFB,0xCA}, {0x97,0xDE}, {0x95,0xD1}, {0x99,0xF5},
- {0xFC,0x4A}, {0x9B,0xA9}, {0xFB,0xDC}, {0xFE,0x56},
- {0x9E,0xA4}, {0x9D,0x49}, {0x95,0xDB}, {0x89,0xC5},
- {0x99,0xF8}, {0x96,0x64}, {0x90,0x55}, {0x96,0xD4},
- {0x97,0x7C}, {0x96,0x4D}, {0x97,0xE1}, {0x9A,0x48},
- {0x9A,0x49}, {0xFE,0x7D}, {0x90,0xAA}, {0x9A,0x50},
- {0x93,0x47}, {0x8E,0xD8}, {0x90,0xC9}, {0x9A,0x55},
- {0x90,0xBC}, {0x9A,0x58}, {0x8B,0xB8}, {0x90,0xD5},
- {0x96,0x41}, {0x9A,0x5A}, {0x9A,0x5C}, {0x97,0xC2},
- {0x8A,0xBB}, {0x9B,0xAA}, {0x90,0xF5}, {0x9A,0x60},
- {0x91,0x45}, {0x8C,0x58}, {0x9A,0x63}, {0x8C,0x49},
- {0x8B,0xB6}, {0xFC,0xCF}, {0x96,0x6B}, {0x9A,0x6E},
- {0x91,0x4F}, {0x97,0x46}, {0xA0,0xE6}, {0x92,0xD7},
- {0x96,0x75}, {0x93,0xD4}, {0x91,0xBB}, {0x96,0x79},
- {0x9A,0x70}, {0x96,0x78}, {0x91,0xCD}, {0x9C,0x4A},
- {0xA0,0x6F}, {0xA0,0x6A}, {0x91,0x5F}, {0x9F,0xA5},
- {0x89,0xBA}, {0x9E,0xCD}, {0x9A,0x79}, {0x9D,0xCE},
- {0x8C,0xD2}, {0x9D,0x73}, {0x96,0xB9}, {0x96,0xBC},
- {0x9C,0xD1}, {0x89,0xB7}, {0x9E,0xEE}, {0xFB,0x43},
- {0x9E,0xC9}, {0xFB,0xD3}, {0x91,0xAE}, {0x9D,0x78},
- {0x9D,0x7B}, {0xA4,0x40}, {0xA4,0x42}, {0xA4,0x43},
- {0x9E,0xB3}, {0xC9,0x45}, {0xA4,0x56}, {0xA4,0x54},
- {0xA4,0x57}, {0xA4,0x55}, {0xC9,0x46}, {0xA4,0xA3},
- {0xC9,0x4F}, {0xC9,0x4D}, {0xA4,0xA2}, {0xA4,0xA1},
- {0xA5,0x42}, {0xA5,0x41}, {0xA5,0x40}, {0xA5,0x43},
- {0xA4,0xFE}, {0x9E,0xB2}, {0x9D,0xD6}, {0xA5,0xE0},
- {0xA5,0xE1}, {0x99,0x4F}, {0x89,0xCE}, {0xA8,0xC3},
- {0x8B,0xC0}, {0x9F,0xC4}, {0xA4,0x58}, {0x8B,0xD4},
- {0xA4,0xA4}, {0xC9,0x50}, {0x8C,0x72}, {0xA4,0xA5},
- {0xC9,0x63}, {0xA6,0xEA}, {0xCB,0xB1}, {0xC6,0xBF},
- {0x8B,0xF9}, {0xA4,0x59}, {0xA4,0xA6}, {0xA5,0x44},
- {0xC9,0x64}, {0x89,0x46}, {0xC6,0xC0}, {0xC9,0x40},
- {0xA4,0x44}, {0xA4,0x5B}, {0xC9,0x47}, {0xA4,0x5C},
- {0xFA,0xE5}, {0xA4,0xA7}, {0xA5,0x45}, {0xA5,0x47},
- {0xA5,0x46}, {0xA5,0xE2}, {0xA5,0xE3}, {0xA8,0xC4},
- {0xAD,0xBC}, {0xA4,0x41}, {0xC8,0x7B}, {0x8B,0xC6},
- {0xC9,0x41}, {0xA4,0x45}, {0xA4,0x5E}, {0xA4,0x5D},
- {0xA5,0xE4}, {0x9C,0x57}, {0xA8,0xC5}, {0x9A,0xFB},
- {0xB0,0xAE}, {0xD4,0x4B}, {0x89,0xD0}, {0x89,0xCF},
- {0xB6,0xC3}, {0xDC,0xB1}, {0xDC,0xB2}, {0xC6,0xC1},
- {0xA4,0x46}, {0x89,0xD1}, {0xA4,0xA9}, {0x89,0xE2},
- {0xA8,0xC6}, {0xA4,0x47}, {0xC9,0x48}, {0xA4,0x5F},
- {0xA4,0xAA}, {0xA4,0xAC}, {0xC9,0x51}, {0xA4,0xAD},
- {0xA4,0xAB}, {0x92,0x7E}, {0xA5,0xE5}, {0x9D,0xBA},
- {0xA8,0xC7}, {0xA8,0xC8}, {0xAB,0x45}, {0xC6,0xC2},
- {0xA4,0x60}, {0xA4,0xAE}, {0x8C,0x6F}, {0xA5,0xE6},
- {0xA5,0xE8}, {0xA5,0xE7}, {0xA6,0xEB}, {0xA8,0xC9},
- {0xA8,0xCA}, {0xAB,0x46}, {0xAB,0x47}, {0xAD,0xBD},
- {0xDC,0xB3}, {0xFB,0xF8}, {0xF6,0xD6}, {0xA4,0x48},
- {0x8B,0xC7}, {0x92,0x6B}, {0x89,0xD2}, {0xA4,0xB0},
- {0xA4,0xAF}, {0xC9,0x52}, {0xA4,0xB1}, {0xA4,0xB7},
- {0xA4,0xB2}, {0xA4,0xB3}, {0xC9,0x54}, {0xC9,0x53},
- {0xA4,0xB5}, {0xA4,0xB6}, {0xA4,0xB4}, {0x9F,0xCF},
- {0xA5,0x4A}, {0xA5,0x4B}, {0xA5,0x4C}, {0xA5,0x4D},
- {0xA5,0x49}, {0xA5,0x50}, {0xC9,0x6A}, {0xC9,0x66},
- {0xC9,0x69}, {0xA5,0x51}, {0xA5,0x61}, {0xC9,0x68},
- {0xA5,0x4E}, {0xA5,0x4F}, {0xA5,0x48}, {0xC9,0x65},
- {0xC9,0x67}, {0x9D,0xA9}, {0x89,0xD3}, {0x99,0xE2},
- {0xA5,0xF5}, {0xC9,0xB0}, {0xA5,0xF2}, {0xA5,0xF6},
- {0xC9,0xBA}, {0xC9,0xAE}, {0xA5,0xF3}, {0xC9,0xB2},
- {0x92,0x67}, {0xA5,0xF4}, {0xA5,0xF7}, {0xA5,0xE9},
- {0xC9,0xB1}, {0xA5,0xF8}, {0xC9,0xB5}, {0x92,0xA4},
- {0xC9,0xB9}, {0xC9,0xB6}, {0xC9,0xB3}, {0xA5,0xEA},
- {0xA5,0xEC}, {0xA5,0xF9}, {0xA5,0xEE}, {0xC9,0xAB},
- {0xA5,0xF1}, {0xA5,0xEF}, {0xA5,0xF0}, {0xC9,0xBB},
- {0xC9,0xB8}, {0xC9,0xAF}, {0xA5,0xED}, {0x8C,0x73},
- {0xC9,0xAC}, {0xA5,0xEB}, {0x89,0x4E}, {0xC9,0xB4},
- {0xC9,0xB7}, {0x89,0x4F}, {0x92,0x78}, {0xC9,0xAD},
- {0xCA,0x66}, {0xA7,0x42}, {0xA6,0xF4}, {0x91,0xB6},
- {0xCA,0x67}, {0xA6,0xF1}, {0xA7,0x44}, {0x89,0xD4},
- {0xA6,0xF9}, {0x9F,0xD2}, {0xA6,0xF8}, {0xCA,0x5B},
- {0xA6,0xFC}, {0xA6,0xF7}, {0xCA,0x60}, {0xCA,0x68},
- {0xCA,0x64}, {0x92,0xA7}, {0xA6,0xFA}, {0x95,0xA2},
- {0xA6,0xFD}, {0xA6,0xEE}, {0xA7,0x47}, {0xCA,0x5D},
- {0x92,0x6E}, {0xCB,0xBD}, {0xA6,0xEC}, {0xA7,0x43},
- {0xA6,0xED}, {0xA6,0xF5}, {0xA6,0xF6}, {0xCA,0x62},
- {0xCA,0x5E}, {0xA6,0xFB}, {0xA6,0xF3}, {0xCA,0x5A},
- {0xA6,0xEF}, {0xCA,0x65}, {0xA7,0x45}, {0xA7,0x48},
- {0xA6,0xF2}, {0xA7,0x40}, {0xA7,0x46}, {0xA6,0xF0},
- {0xCA,0x63}, {0xA7,0x41}, {0xCA,0x69}, {0xCA,0x5C},
- {0xA6,0xFE}, {0xCA,0x5F}, {0xCA,0x61}, {0xA8,0xD8},
- {0xCB,0xBF}, {0xCB,0xCB}, {0xA8,0xD0}, {0xCB,0xCC},
- {0xA8,0xCB}, {0xA8,0xD5}, {0x96,0xEA}, {0xA8,0xCE},
- {0xCB,0xB9}, {0xA8,0xD6}, {0xCB,0xB8}, {0xCB,0xBC},
- {0xCB,0xC3}, {0xCB,0xC1}, {0xA8,0xDE}, {0xA8,0xD9},
- {0xCB,0xB3}, {0xCB,0xB5}, {0xA8,0xDB}, {0xA8,0xCF},
- {0xCB,0xB6}, {0xCB,0xC2}, {0xCB,0xC9}, {0xA8,0xD4},
- {0xCB,0xBB}, {0xCB,0xB4}, {0xA8,0xD3}, {0xCB,0xB7},
- {0xA8,0xD7}, {0xCB,0xBA}, {0x92,0x6F}, {0xA8,0xD2},
- {0xA8,0xCD}, {0xA8,0xDC}, {0xCB,0xC4}, {0xA8,0xDD},
- {0xCB,0xC8}, {0xCB,0xC6}, {0xCB,0xCA}, {0xA8,0xDA},
- {0xCB,0xBE}, {0xCB,0xB2}, {0xCB,0xC0}, {0xA8,0xD1},
- {0xCB,0xC5}, {0xA8,0xCC}, {0xCB,0xC7}, {0x92,0xA3},
- {0x89,0x50}, {0xFA,0x57}, {0xAB,0x56}, {0xAB,0x4A},
- {0x98,0x66}, {0xCD,0xE0}, {0xCD,0xE8}, {0xAB,0x49},
- {0xAB,0x51}, {0xAB,0x5D}, {0xCD,0xEE}, {0xCD,0xEC},
- {0xCD,0xE7}, {0x89,0xD6}, {0xAB,0x4B}, {0xCD,0xED},
- {0xCD,0xE3}, {0xAB,0x59}, {0xAB,0x50}, {0xAB,0x58},
- {0xCD,0xDE}, {0xCD,0xEA}, {0x98,0xB2}, {0xCD,0xE1},
- {0xAB,0x54}, {0xCD,0xE2}, {0x92,0xAB}, {0xCD,0xDD},
- {0xAB,0x5B}, {0xAB,0x4E}, {0xAB,0x57}, {0xAB,0x4D},
- {0xCD,0xDF}, {0xCD,0xE4}, {0xCD,0xEB}, {0xAB,0x55},
- {0xAB,0x52}, {0xCD,0xE6}, {0xAB,0x5A}, {0xCD,0xE9},
- {0xCD,0xE5}, {0xAB,0x4F}, {0xAB,0x5C}, {0xAB,0x53},
- {0xAB,0x4C}, {0xAB,0x48}, {0x96,0xDE}, {0x92,0xAC},
- {0xCD,0xEF}, {0xAD,0xD7}, {0xAD,0xC1}, {0x8C,0x70},
- {0xAD,0xD1}, {0x9F,0x6E}, {0xAD,0xD6}, {0xD0,0xD0},
- {0xD0,0xCF}, {0xD0,0xD4}, {0xD0,0xD5}, {0xAD,0xC4},
- {0x8E,0xF2}, {0xAD,0xCD}, {0x9F,0x6C}, {0xAD,0xDA},
- {0xAD,0xCE}, {0x89,0xD8}, {0xD0,0xC9}, {0xAD,0xC7},
- {0xD0,0xCA}, {0xFA,0x59}, {0xAD,0xDC}, {0xAD,0xD3},
- {0xAD,0xBE}, {0xAD,0xBF}, {0xD0,0xDD}, {0xB0,0xBF},
- {0xAD,0xCC}, {0xAD,0xCB}, {0xD0,0xCB}, {0xAD,0xCF},
- {0xD4,0x5B}, {0xAD,0xC6}, {0xD0,0xD6}, {0xAD,0xD5},
- {0xAD,0xD4}, {0xAD,0xCA}, {0xD0,0xCE}, {0xD0,0xD7},
- {0xD0,0xC8}, {0xAD,0xC9}, {0xD0,0xD8}, {0xAD,0xD2},
- {0xD0,0xCC}, {0xAD,0xC0}, {0xAD,0xC3}, {0xAD,0xC2},
- {0xD0,0xD9}, {0xAD,0xD0}, {0xAD,0xC5}, {0xAD,0xD9},
- {0xAD,0xDB}, {0xD0,0xD3}, {0xAD,0xD8}, {0x92,0xA8},
- {0xD0,0xDB}, {0xD0,0xCD}, {0xD0,0xDC}, {0xD0,0xD1},
- {0x91,0x63}, {0xD0,0xDA}, {0xD0,0xD2}, {0x8C,0x40},
- {0xAD,0xC8}, {0xD4,0x63}, {0xD4,0x57}, {0xB0,0xB3},
- {0xD4,0x5C}, {0xD4,0x62}, {0xB0,0xB2}, {0xD4,0x55},
- {0xB0,0xB6}, {0xD4,0x59}, {0xD4,0x52}, {0xB0,0xB4},
- {0xD4,0x56}, {0xB0,0xB9}, {0xB0,0xBE}, {0xD4,0x67},
- {0xD4,0x51}, {0xB0,0xBA}, {0x9F,0x73}, {0xD4,0x66},
- {0x92,0xAD}, {0xB0,0xB5}, {0xD4,0x58}, {0xB0,0xB1},
- {0xD4,0x53}, {0xD4,0x4F}, {0xD4,0x5D}, {0xD4,0x50},
- {0xD4,0x4E}, {0xD4,0x5A}, {0xD4,0x60}, {0xD4,0x61},
- {0xB0,0xB7}, {0x9B,0xE9}, {0xD8,0x5B}, {0xD4,0x5E},
- {0xD4,0x4D}, {0xD4,0x5F}, {0x92,0xA9}, {0xB0,0xC1},
- {0xD4,0x64}, {0xB0,0xC0}, {0xD4,0x4C}, {0xD4,0x54},
- {0xD4,0x65}, {0xB0,0xBC}, {0xB0,0xBB}, {0xB0,0xB8},
- {0xB0,0xBD}, {0xB0,0xAF}, {0xB0,0xB0}, {0xB3,0xC8},
- {0x92,0xAA}, {0xD8,0x5E}, {0xD8,0x57}, {0xB3,0xC5},
- {0xD8,0x5F}, {0x89,0xD9}, {0xD8,0x55}, {0xD8,0x58},
- {0xB3,0xC4}, {0xD8,0x59}, {0xFD,0x56}, {0xB3,0xC7},
- {0xD8,0x5D}, {0xD8,0x53}, {0xD8,0x52}, {0xB3,0xC9},
- {0xB3,0xCA}, {0xB3,0xC6}, {0xB3,0xCB}, {0xD8,0x51},
- {0xD8,0x5C}, {0xD8,0x5A}, {0xD8,0x54}, {0xB3,0xC3},
- {0xD8,0x56}, {0x9F,0xA8}, {0xB6,0xCA}, {0xB6,0xC4},
- {0xDC,0xB7}, {0xB6,0xCD}, {0xDC,0xBD}, {0xDC,0xC0},
- {0xB6,0xC6}, {0xB6,0xC7}, {0xDC,0xBA}, {0xB6,0xC5},
- {0xDC,0xC3}, {0xB6,0xCB}, {0xDC,0xC4}, {0xDC,0xBF},
- {0xB6,0xCC}, {0x8C,0x71}, {0xDC,0xB4}, {0xB6,0xC9},
- {0xDC,0xB5}, {0xDC,0xBE}, {0xDC,0xBC}, {0xDC,0xB8},
- {0xB6,0xC8}, {0xDC,0xB6}, {0xB6,0xCE}, {0xDC,0xBB},
- {0xDC,0xC2}, {0xDC,0xB9}, {0xDC,0xC1}, {0x92,0xA1},
- {0xB9,0xB6}, {0xB9,0xB3}, {0x90,0xE3}, {0xB9,0xB4},
- {0xE0,0xF9}, {0xE0,0xF1}, {0xB9,0xB2}, {0xB9,0xAF},
- {0xE0,0xF2}, {0xA0,0xA6}, {0xB9,0xB1}, {0xE0,0xF5},
- {0xE0,0xF7}, {0x94,0xAB}, {0xE0,0xFE}, {0xFC,0x72},
- {0xE0,0xFD}, {0xE0,0xF8}, {0xB9,0xAE}, {0xE0,0xF0},
- {0xB9,0xAC}, {0xE0,0xF3}, {0xB9,0xB7}, {0xE0,0xF6},
- {0xE0,0xFA}, {0xB9,0xB0}, {0xB9,0xAD}, {0xE0,0xFC},
- {0xE0,0xFB}, {0xB9,0xB5}, {0xE0,0xF4}, {0x97,0xC4},
- {0xBB,0xF8}, {0xE4,0xEC}, {0xE4,0xE9}, {0xBB,0xF9},
- {0xBB,0xF7}, {0x92,0xAE}, {0xE4,0xF0}, {0xE4,0xED},
- {0xE4,0xE6}, {0xBB,0xF6}, {0xFA,0x67}, {0xBB,0xFA},
- {0xE4,0xE7}, {0xBB,0xF5}, {0xBB,0xFD}, {0xE4,0xEA},
- {0xE4,0xEB}, {0xBB,0xFB}, {0xBB,0xFC}, {0xE4,0xF1},
- {0xE4,0xEE}, {0xE4,0xEF}, {0x92,0xA2}, {0xFA,0x69},
- {0xBE,0xAA}, {0xE8,0xF8}, {0xBE,0xA7}, {0xE8,0xF5},
- {0xBE,0xA9}, {0xBE,0xAB}, {0xE8,0xF6}, {0xBE,0xA8},
- {0xE8,0xF7}, {0xE8,0xF4}, {0xC0,0x76}, {0xEC,0xBD},
- {0xC0,0x77}, {0xEC,0xBB}, {0xEC,0xBC}, {0xEC,0xBA},
- {0xEC,0xB9}, {0xEC,0xBE}, {0xC0,0x75}, {0x92,0x68},
- {0xEF,0xB8}, {0xEF,0xB9}, {0xE4,0xE8}, {0xEF,0xB7},
- {0xC0,0x78}, {0xC3,0x5F}, {0xF1,0xEB}, {0xF1,0xEC},
- {0xC4,0xD7}, {0xC4,0xD8}, {0xF5,0xC1}, {0xF5,0xC0},
- {0xC5,0x6C}, {0xC5,0x6B}, {0xF7,0xD0}, {0xA4,0x49},
- {0xA4,0x61}, {0xA4,0xB9}, {0xA4,0xB8}, {0xA5,0x53},
- {0xA5,0x52}, {0xA5,0xFC}, {0xA5,0xFB}, {0xA5,0xFD},
- {0xA5,0xFA}, {0xA7,0x4A}, {0xA7,0x49}, {0xA7,0x4B},
- {0xA8,0xE0}, {0xA8,0xDF}, {0xA8,0xE1}, {0x89,0x51},
- {0xAB,0x5E}, {0xA2,0x59}, {0xD0,0xDE}, {0xA2,0x5A},
- {0xB0,0xC2}, {0xA2,0x5C}, {0xA2,0x5B}, {0xD8,0x60},
- {0xFA,0x6F}, {0xA2,0x5D}, {0xB9,0xB8}, {0xA2,0x5E},
- {0xA4,0x4A}, {0xA4,0xBA}, {0xA5,0xFE}, {0xA8,0xE2},
- {0xFA,0x71}, {0xA4,0x4B}, {0xA4,0xBD}, {0xA4,0xBB},
- {0xA4,0xBC}, {0xA6,0x40}, {0x89,0x52}, {0xA7,0x4C},
- {0xA8,0xE4}, {0xA8,0xE3}, {0xA8,0xE5}, {0x94,0x5A},
- {0xAD,0xDD}, {0xBE,0xAC}, {0xC6,0xC3}, {0x89,0xDD},
- {0xC9,0x4E}, {0xC8,0xA2}, {0xA5,0x54}, {0xA5,0x55},
- {0xA6,0x41}, {0xCA,0x6A}, {0xAB,0x60}, {0xAB,0x5F},
- {0xD0,0xE0}, {0xD0,0xDF}, {0xB0,0xC3}, {0xC6,0xC4},
- {0xA4,0xBE}, {0xC9,0x55}, {0x9E,0x52}, {0x89,0x53},
- {0xCB,0xCD}, {0xAB,0x61}, {0xAD,0xE0}, {0xAD,0xDE},
- {0xAD,0xDF}, {0x9E,0x55}, {0x92,0xBA}, {0xBE,0xAD},
- {0xC6,0xC5}, {0xA5,0x56}, {0x8C,0x5B}, {0xA6,0x42},
- {0xC9,0xBC}, {0xFA,0x7D}, {0xFA,0xA8}, {0x9A,0x68},
- {0xFA,0x47}, {0xA7,0x4D}, {0xA7,0x4E}, {0xFA,0x7E},
- {0xCA,0x6B}, {0xCB,0xCE}, {0xA8,0xE6}, {0xCB,0xCF},
- {0x92,0xBB}, {0xD0,0xE2}, {0xD0,0xE3}, {0xAD,0xE3},
- {0xFD,0xB6}, {0xD0,0xE4}, {0xFA,0xA2}, {0xD0,0xE1},
- {0xAD,0xE4}, {0xAD,0xE2}, {0xAD,0xE1}, {0xD0,0xE5},
- {0xFA,0xA3}, {0xD4,0x68}, {0xFA,0xA4}, {0x9B,0xB4},
- {0xFA,0xA6}, {0xD8,0x61}, {0xDC,0xC5}, {0xE1,0x40},
- {0x89,0xDF}, {0xBB,0xFE}, {0xBE,0xAE}, {0xE8,0xF9},
- {0xFD,0xDB}, {0xA4,0x4C}, {0xA4,0x5A}, {0xFA,0xA9},
- {0x89,0x54}, {0xFA,0xAB}, {0xB0,0xC4}, {0xB3,0xCD},
- {0xB9,0xB9}, {0xFC,0x7A}, {0xC9,0x42}, {0xA4,0xBF},
- {0xA5,0x59}, {0xA5,0x57}, {0xA5,0x58}, {0x89,0xE0},
- {0xA8,0xE7}, {0x9F,0x4F}, {0xA4,0x4D}, {0xA4,0x4E},
- {0xC8,0x7D}, {0xA4,0x62}, {0x89,0xE1}, {0xA4,0xC0},
- {0xA4,0xC1}, {0xA4,0xC2}, {0xC9,0xBE}, {0xA5,0x5A},
- {0xFA,0xB0}, {0xC9,0x6B}, {0xA6,0x46}, {0xC9,0xBF},
- {0xA6,0x44}, {0xA6,0x45}, {0xC9,0xBD}, {0xA6,0x47},
- {0xA6,0x43}, {0xCA,0x6C}, {0xAA,0xEC}, {0xCA,0x6D},
- {0x9F,0xCD}, {0xA0,0xE7}, {0xCA,0x6E}, {0xA7,0x50},
- {0xA7,0x4F}, {0xFA,0xB1}, {0x89,0xA6}, {0xA7,0x53},
- {0xA7,0x51}, {0xA7,0x52}, {0xA8,0xED}, {0xA8,0xEC},
- {0xCB,0xD4}, {0xCB,0xD1}, {0xCB,0xD2}, {0x9E,0xFA},
- {0xCB,0xD0}, {0xA8,0xEE}, {0xA8,0xEA}, {0xA8,0xE9},
- {0xA8,0xEB}, {0xA8,0xE8}, {0xFA,0xB2}, {0xA8,0xEF},
- {0xAB,0x63}, {0xCD,0xF0}, {0xCB,0xD3}, {0xAB,0x68},
- {0xCD,0xF1}, {0xAB,0x64}, {0xAB,0x67}, {0xAB,0x66},
- {0xAB,0x65}, {0xAB,0x62}, {0xD0,0xE8}, {0xAD,0xE7},
- {0xD0,0xEB}, {0xAD,0xE5}, {0xFA,0xB4}, {0x92,0xC4},
- {0xD0,0xE7}, {0xAD,0xE8}, {0xAD,0xE6}, {0xAD,0xE9},
- {0xD0,0xE9}, {0xD0,0xEA}, {0x9F,0x6F}, {0xD0,0xE6},
- {0xD0,0xEC}, {0x8B,0xB0}, {0xB3,0xD1}, {0xB0,0xC5},
- {0xD4,0x69}, {0xD4,0x6B}, {0xD4,0x6A}, {0xD4,0x6C},
- {0xB0,0xC6}, {0xB3,0xCE}, {0x9F,0xAC}, {0xB3,0xCF},
- {0xB3,0xD0}, {0xB6,0xD0}, {0xDC,0xC7}, {0x89,0xE3},
- {0xDC,0xC6}, {0xDC,0xC8}, {0xDC,0xC9}, {0xB6,0xD1},
- {0xB6,0xCF}, {0xE1,0x41}, {0xE1,0x42}, {0xB9,0xBB},
- {0xB9,0xBA}, {0xE3,0x5A}, {0xBC,0x40}, {0xBC,0x41},
- {0xBC,0x42}, {0xBC,0x44}, {0xE4,0xF2}, {0xE4,0xF3},
- {0xBC,0x43}, {0x9B,0xD3}, {0x89,0xE4}, {0xBE,0xAF},
- {0xBE,0xB0}, {0xFA,0xB5}, {0xF1,0xED}, {0xF5,0xC3},
- {0xF5,0xC2}, {0xF7,0xD1}, {0x9F,0xD5}, {0xA4,0x4F},
- {0xA5,0x5C}, {0xA5,0x5B}, {0x89,0x55}, {0xA6,0x48},
- {0x92,0xC5}, {0xC9,0xC0}, {0x89,0x56}, {0xA7,0x55},
- {0xA7,0x56}, {0xA7,0x54}, {0xA7,0x57}, {0xCA,0x6F},
- {0xCA,0x70}, {0xFA,0xB3}, {0xFA,0xB6}, {0xA8,0xF1},
- {0xCB,0xD5}, {0xA8,0xF0}, {0xCD,0xF2}, {0xAB,0x6C},
- {0xCD,0xF3}, {0xAB,0x6B}, {0xFA,0xB7}, {0xAB,0x69},
- {0xAB,0x6A}, {0x9E,0xDC}, {0xD0,0xED}, {0xFB,0xC4},
- {0x9F,0x71}, {0xB0,0xC7}, {0xD4,0x6E}, {0xB0,0xCA},
- {0xD4,0x6D}, {0xB1,0xE5}, {0xB0,0xC9}, {0xB0,0xC8},
- {0xB3,0xD4}, {0xB3,0xD3}, {0xB3,0xD2}, {0xB6,0xD2},
- {0xFA,0xBA}, {0x92,0xC7}, {0xB6,0xD5}, {0xB6,0xD6},
- {0xB6,0xD4}, {0xB6,0xD3}, {0xE1,0x43}, {0xE1,0x44},
- {0xE4,0xF5}, {0xBC,0x45}, {0xE4,0xF4}, {0xBE,0xB1},
- {0xEC,0xBF}, {0xC0,0x79}, {0xF1,0xEE}, {0xC4,0x55},
- {0xC6,0xC6}, {0xA4,0x63}, {0xA4,0xC3}, {0xC9,0x56},
- {0xA4,0xC4}, {0xA4,0xC5}, {0x9A,0x4C}, {0xA5,0x5D},
- {0xA5,0x5E}, {0xA6,0x49}, {0xCA,0x71}, {0xCB,0xD6},
- {0xCB,0xD7}, {0xAB,0x6D}, {0xD0,0xEE}, {0xB0,0xCC},
- {0xB0,0xCB}, {0xD8,0x63}, {0xD8,0x62}, {0xA4,0x50},
- {0xA4,0xC6}, {0xA5,0x5F}, {0xB0,0xCD}, {0xC9,0x43},
- {0xC9,0x6C}, {0xA5,0x60}, {0xC9,0xC2}, {0xA6,0x4B},
- {0xA6,0x4A}, {0xC9,0xC1}, {0xA7,0x58}, {0x8C,0x68},
- {0x89,0xE5}, {0xAD,0xEA}, {0x9F,0x7D}, {0xD4,0x6F},
- {0xB6,0xD7}, {0xE1,0x45}, {0xB9,0xBC}, {0xA0,0xA9},
- {0xFA,0xC4}, {0xE8,0xFA}, {0xF3,0xFD}, {0xC6,0xC7},
- {0xA4,0xC7}, {0x89,0x57}, {0xCB,0xD8}, {0xCD,0xF4},
- {0xB0,0xD0}, {0xB0,0xCE}, {0xB0,0xCF}, {0xA4,0x51},
- {0xFA,0xAA}, {0xA4,0x64}, {0xA2,0xCD}, {0xA4,0xCA},
- {0xA4,0xC9}, {0xA4,0xC8}, {0xA5,0x63}, {0xA5,0x62},
- {0xC9,0x6D}, {0xC9,0xC3}, {0x89,0x58}, {0xA8,0xF5},
- {0xA8,0xF2}, {0xA8,0xF4}, {0xA8,0xF3}, {0xAB,0x6E},
- {0xB3,0xD5}, {0xA4,0x52}, {0x8B,0xE3}, {0xA4,0xCB},
- {0x8B,0x61}, {0xA5,0x65}, {0xA5,0x64}, {0xCA,0x72},
- {0x9A,0xF1}, {0xA8,0xF6}, {0x9E,0xB7}, {0xC6,0xC8},
- {0xC9,0x57}, {0xFA,0xD1}, {0xA5,0x67}, {0xA5,0x66},
- {0xA6,0x4C}, {0xA6,0x4D}, {0xCA,0x73}, {0xA7,0x59},
- {0xFA,0xD2}, {0xA7,0x5A}, {0xA8,0xF7}, {0xA8,0xF8},
- {0xA8,0xF9}, {0xAB,0x6F}, {0xCD,0xF5}, {0x9E,0xBA},
- {0xFA,0xD4}, {0xAD,0xEB}, {0xC9,0x44}, {0xA4,0xCC},
- {0xC9,0xC4}, {0xCA,0x74}, {0xCA,0x75}, {0xCB,0xD9},
- {0xFA,0xD9}, {0xCB,0xDA}, {0xCD,0xF7}, {0xCD,0xF6},
- {0xCD,0xF9}, {0xCD,0xF8}, {0xAB,0x70}, {0xD4,0x70},
- {0xAD,0xED}, {0xD0,0xEF}, {0xAD,0xEC}, {0xFA,0xDB},
- {0x9C,0xE0}, {0xD8,0x64}, {0xB3,0xD6}, {0xFB,0xF7},
- {0xD8,0x65}, {0xFB,0xFA}, {0x89,0xE7}, {0xA0,0x7A},
- {0xFA,0xDC}, {0xE1,0x46}, {0xB9,0xBD}, {0xFA,0xDD},
- {0x89,0xE9}, {0xBC,0x46}, {0xF1,0xEF}, {0xC6,0xC9},
- {0xC9,0x58}, {0xA5,0x68}, {0xFA,0xE2}, {0x89,0xEB},
- {0xB0,0xD1}, {0xFA,0xE3}, {0xA4,0x53}, {0xA4,0x65},
- {0xA4,0xCE}, {0xA4,0xCD}, {0x90,0xC8}, {0xA4,0xCF},
- {0x92,0xDA}, {0x89,0x59}, {0x9C,0xF5}, {0xA8,0xFB},
- {0xA8,0xFA}, {0xA8,0xFC}, {0x89,0x5A}, {0xFA,0xE7},
- {0x9F,0xA2}, {0xAB,0x71}, {0xAD,0xEE}, {0xFA,0xEA},
- {0xE8,0xFB}, {0xC2,0x4F}, {0xA4,0x66}, {0xA5,0x6A},
- {0xA5,0x79}, {0xA5,0x74}, {0xA5,0x6F}, {0xA5,0x6E},
- {0xA5,0x75}, {0xA5,0x73}, {0xA5,0x6C}, {0xA5,0x7A},
- {0xA5,0x6D}, {0xA5,0x69}, {0xA5,0x78}, {0xA5,0x77},
- {0xA5,0x76}, {0xA5,0x6B}, {0xA5,0x72}, {0xFA,0xED},
- {0x8F,0xAD}, {0xA5,0x71}, {0xA5,0x7B}, {0xA5,0x70},
- {0xFB,0x59}, {0xA6,0x53}, {0xA6,0x59}, {0xA6,0x55},
- {0xA6,0x5B}, {0xC9,0xC5}, {0xA6,0x58}, {0xA6,0x4E},
- {0xA6,0x51}, {0xA6,0x54}, {0xA6,0x50}, {0xA6,0x57},
- {0xA6,0x5A}, {0xA6,0x4F}, {0xA6,0x52}, {0xA6,0x56},
- {0xA6,0x5C}, {0xFA,0xEF}, {0x96,0xEF}, {0x9D,0xEC},
- {0xCA,0x7E}, {0xCA,0x7B}, {0x9D,0xCA}, {0xA7,0x67},
- {0xCA,0x7C}, {0xA7,0x5B}, {0xA7,0x5D}, {0xA7,0x75},
- {0xA7,0x70}, {0xFD,0x6D}, {0x89,0xEC}, {0xCA,0xA5},
- {0xCA,0x7D}, {0xA7,0x5F}, {0xA7,0x61}, {0xCA,0xA4},
- {0xA7,0x68}, {0xCA,0x78}, {0xA7,0x74}, {0xA7,0x76},
- {0xA7,0x5C}, {0xA7,0x6D}, {0xFB,0x44}, {0xCA,0x76},
- {0xA7,0x73}, {0x9D,0xE2}, {0xA7,0x64}, {0x8C,0x75},
- {0xA7,0x6E}, {0xA7,0x6F}, {0xCA,0x77}, {0xA7,0x6C},
- {0xA7,0x6A}, {0xA7,0x6B}, {0xA7,0x71}, {0xCA,0xA1},
- {0xA7,0x5E}, {0xA7,0x72}, {0xCA,0xA3}, {0xA7,0x66},
- {0xA7,0x63}, {0xCA,0x7A}, {0xA7,0x62}, {0xCA,0xA6},
- {0xA7,0x65}, {0xA7,0x69}, {0x9E,0xC0}, {0x9E,0x56},
- {0xA7,0x60}, {0xCA,0xA2}, {0xCA,0x79}, {0xCB,0xEB},
- {0xCB,0xEA}, {0xA9,0x4F}, {0xCB,0xED}, {0xCB,0xEF},
- {0xCB,0xE4}, {0xCB,0xE7}, {0xCB,0xEE}, {0xA9,0x50},
- {0x9F,0x79}, {0x9A,0xC7}, {0xCB,0xE1}, {0xCB,0xE5},
- {0xFA,0xF4}, {0xCB,0xE9}, {0xCE,0x49}, {0xA9,0x4B},
- {0xCE,0x4D}, {0xA8,0xFD}, {0xCB,0xE6}, {0xA8,0xFE},
- {0xA9,0x4C}, {0xA9,0x45}, {0xA9,0x41}, {0xCB,0xE2},
- {0xA9,0x44}, {0xA9,0x49}, {0xA9,0x52}, {0xCB,0xE3},
- {0xCB,0xDC}, {0xA9,0x43}, {0xCB,0xDD}, {0xCB,0xDF},
- {0xA9,0x46}, {0x98,0xA1}, {0xA9,0x48}, {0xCB,0xDB},
- {0xCB,0xE0}, {0xA9,0x51}, {0xA9,0x4D}, {0xCB,0xE8},
- {0xA9,0x53}, {0xFA,0xF8}, {0xA9,0x4A}, {0xCB,0xDE},
- {0xA9,0x47}, {0x89,0xF0}, {0x9E,0x47}, {0xA9,0x42},
- {0xA9,0x40}, {0x9D,0xF7}, {0xCB,0xEC}, {0xA9,0x4E},
- {0x9F,0xD3}, {0x9A,0xCA}, {0xCE,0x48}, {0xCD,0xFB},
- {0xCE,0x4B}, {0x89,0xF1}, {0xFA,0xF9}, {0xCD,0xFD},
- {0xAB,0x78}, {0xAB,0xA8}, {0xAB,0x74}, {0xAB,0xA7},
- {0xAB,0x7D}, {0xAB,0xA4}, {0xAB,0x72}, {0xCD,0xFC},
- {0xCE,0x43}, {0xAB,0xA3}, {0xCE,0x4F}, {0xAB,0xA5},
- {0x8E,0x5A}, {0xAB,0x79}, {0x89,0xF2}, {0xCE,0x45},
- {0xCE,0x42}, {0xAB,0x77}, {0x89,0xF3}, {0xCD,0xFA},
- {0xAB,0xA6}, {0xCE,0x4A}, {0xAB,0x7C}, {0xCE,0x4C},
- {0xAB,0xA9}, {0xAB,0x73}, {0xAB,0x7E}, {0xAB,0x7B},
- {0xCE,0x40}, {0xAB,0xA1}, {0xCE,0x46}, {0xCE,0x47},
- {0xAB,0x7A}, {0xAB,0xA2}, {0xAB,0x76}, {0x92,0x5D},
- {0x8B,0x51}, {0x92,0xE0}, {0xAB,0x75}, {0xCD,0xFE},
- {0x89,0xF4}, {0xCE,0x44}, {0x9F,0xD4}, {0xCE,0x4E},
- {0xD1,0x44}, {0xAD,0xFB}, {0xD0,0xF1}, {0x8A,0x79},
- {0xD0,0xF6}, {0xAD,0xF4}, {0xAE,0x40}, {0xD0,0xF4},
- {0xAD,0xEF}, {0xAD,0xF9}, {0xAD,0xFE}, {0xD0,0xFB},
- {0xAD,0xFA}, {0xAD,0xFD}, {0x89,0xF5}, {0xD0,0xFE},
- {0xAD,0xF5}, {0xD0,0xF5}, {0xD1,0x42}, {0xD1,0x43},
- {0xAD,0xF7}, {0xD1,0x41}, {0xAD,0xF3}, {0xAE,0x43},
- {0xD0,0xF8}, {0xAD,0xF1}, {0x97,0xA7}, {0xD1,0x46},
- {0xD0,0xF9}, {0xD0,0xFD}, {0xAD,0xF6}, {0xAE,0x42},
- {0xD0,0xFA}, {0xAD,0xFC}, {0xD1,0x40}, {0xD1,0x47},
- {0xD4,0xA1}, {0x93,0xBA}, {0xD1,0x45}, {0xAE,0x44},
- {0xAD,0xF0}, {0xD0,0xFC}, {0xD0,0xF3}, {0x9E,0x58},
- {0xAD,0xF8}, {0xD0,0xF2}, {0x89,0xF6}, {0xD0,0xF7},
- {0x9E,0x57}, {0x89,0xF7}, {0x8A,0x41}, {0xD0,0xF0},
- {0xAE,0x41}, {0x89,0xF8}, {0xD4,0x77}, {0xFA,0xF1},
- {0xB0,0xE4}, {0xD4,0xA7}, {0xB0,0xE2}, {0xB0,0xDF},
- {0xD4,0x7C}, {0xB0,0xDB}, {0xD4,0xA2}, {0xB0,0xE6},
- {0xD4,0x76}, {0xD4,0x7B}, {0xD4,0x7A}, {0xAD,0xF2},
- {0xB0,0xE1}, {0xD4,0xA5}, {0xD4,0xA8}, {0xD4,0x73},
- {0xB3,0xE8}, {0x89,0xFA}, {0xD4,0xA9}, {0xB0,0xE7},
- {0xB0,0xD9}, {0xB0,0xD6}, {0xD4,0x7E}, {0xB0,0xD3},
- {0xFB,0x42}, {0xD4,0xA6}, {0xFA,0xBF}, {0xB0,0xDA},
- {0xD4,0xAA}, {0xD4,0x74}, {0xD4,0xA4}, {0xB0,0xDD},
- {0xD4,0x75}, {0xD4,0x78}, {0xD4,0x7D}, {0xFB,0xA3},
- {0xB0,0xDE}, {0xB0,0xDC}, {0xB0,0xE8}, {0xB0,0xE3},
- {0xFA,0xF7}, {0xB0,0xD7}, {0xB1,0xD2}, {0xB0,0xD8},
- {0xD4,0x79}, {0xB0,0xE5}, {0xB0,0xE0}, {0xD4,0xA3},
- {0xB0,0xD5}, {0x9E,0x4E}, {0xB0,0xD4}, {0x94,0xDC},
- {0x95,0xDA}, {0x9D,0xF8}, {0x9F,0x6A}, {0xD4,0x71},
- {0xD4,0x72}, {0xD8,0x6A}, {0x8A,0xB7}, {0xB3,0xD7},
- {0xB3,0xDA}, {0xD8,0x75}, {0xB3,0xEE}, {0xD8,0x78},
- {0xB3,0xD8}, {0xD8,0x71}, {0xB3,0xDE}, {0xB3,0xE4},
- {0xB5,0xBD}, {0xFB,0x46}, {0xB3,0xE2}, {0xD8,0x6E},
- {0xB3,0xEF}, {0xB3,0xDB}, {0xB3,0xE3}, {0xD8,0x76},
- {0xDC,0xD7}, {0xD8,0x7B}, {0xD8,0x6F}, {0x8A,0x46},
- {0xD8,0x66}, {0xD8,0x73}, {0xD8,0x6D}, {0xB3,0xE1},
- {0xD8,0x79}, {0xB3,0xDD}, {0xB3,0xF1}, {0xB3,0xEA},
- {0xB3,0xDF}, {0xB3,0xDC}, {0xB3,0xE7}, {0xD8,0x7A},
- {0xD8,0x6C}, {0xD8,0x72}, {0xD8,0x74}, {0xD8,0x68},
- {0xD8,0x77}, {0xB3,0xD9}, {0xD8,0x67}, {0xFB,0x47},
- {0xB3,0xE0}, {0xB3,0xF0}, {0xB3,0xEC}, {0xD8,0x69},
- {0xB3,0xE6}, {0x91,0x48}, {0xB3,0xED}, {0xB3,0xE9},
- {0xB3,0xE5}, {0x92,0xDE}, {0xD8,0x70}, {0x8B,0x53},
- {0x9D,0xF6}, {0xB3,0xEB}, {0x9B,0xDA}, {0xDC,0xD5},
- {0xDC,0xD1}, {0x9D,0x7E}, {0xDC,0xE0}, {0xDC,0xCA},
- {0xDC,0xD3}, {0xB6,0xE5}, {0xB6,0xE6}, {0xB6,0xDE},
- {0xDC,0xDC}, {0xB6,0xE8}, {0xDC,0xCF}, {0xDC,0xCE},
- {0xDC,0xCC}, {0xDC,0xDE}, {0xB6,0xDC}, {0xDC,0xD8},
- {0xDC,0xCD}, {0xB6,0xDF}, {0xDC,0xD6}, {0xB6,0xDA},
- {0xDC,0xD2}, {0xDC,0xD9}, {0xDC,0xDB}, {0x89,0xFD},
- {0x99,0xE4}, {0xDC,0xDF}, {0xB6,0xE3}, {0xDC,0xCB},
- {0xB6,0xDD}, {0xDC,0xD0}, {0x9E,0x43}, {0xB6,0xD8},
- {0xB6,0xE4}, {0xDC,0xDA}, {0xB6,0xE0}, {0xB6,0xE1},
- {0xB6,0xE7}, {0xB6,0xDB}, {0xA2,0x5F}, {0xB6,0xD9},
- {0xDC,0xD4}, {0x9D,0xE9}, {0x8F,0x52}, {0xB6,0xE2},
- {0x9D,0xF5}, {0x9D,0xF0}, {0xDC,0xDD}, {0x99,0xE7},
- {0xB9,0xCD}, {0xB9,0xC8}, {0xE1,0x55}, {0xE1,0x51},
- {0x8B,0xBD}, {0xE1,0x4B}, {0xB9,0xC2}, {0xB9,0xBE},
- {0xE1,0x54}, {0xB9,0xBF}, {0xE1,0x4E}, {0xE1,0x50},
- {0xE1,0x53}, {0x9D,0xEF}, {0xB9,0xC4}, {0xB9,0xCB},
- {0xB9,0xC5}, {0xE1,0x49}, {0xB9,0xC6}, {0xB9,0xC7},
- {0xE1,0x4C}, {0xB9,0xCC}, {0x9F,0xB7}, {0xE1,0x4A},
- {0xE1,0x4F}, {0xB9,0xC3}, {0xE1,0x48}, {0xB9,0xC9},
- {0xB9,0xC1}, {0xB9,0xC0}, {0xE1,0x4D}, {0xE1,0x52},
- {0x9D,0xD0}, {0xB9,0xCA}, {0x9F,0xEB}, {0x8D,0xA9},
- {0x9D,0xCF}, {0x98,0xE1}, {0x9D,0xE5}, {0xE1,0x47},
- {0xBC,0x4D}, {0xE5,0x47}, {0xE5,0x44}, {0x9D,0xC8},
- {0xBC,0x47}, {0xBC,0x53}, {0xBC,0x54}, {0xBC,0x4A},
- {0xE5,0x42}, {0xBC,0x4C}, {0xE4,0xF9}, {0xBC,0x52},
- {0xFB,0x4F}, {0xE5,0x46}, {0xBC,0x49}, {0xE5,0x48},
- {0xBC,0x48}, {0xE5,0x43}, {0xE5,0x45}, {0xBC,0x4B},
- {0xE5,0x41}, {0xE4,0xFA}, {0xE4,0xF7}, {0x9D,0xEB},
- {0xD8,0x6B}, {0xE4,0xFD}, {0xE4,0xF6}, {0xE4,0xFC},
- {0xE4,0xFB}, {0xE4,0xF8}, {0xFB,0x54}, {0xBC,0x4F},
- {0xFB,0x55}, {0x9A,0xA2}, {0x8A,0xD6}, {0xBC,0x4E},
- {0x9A,0x5F}, {0xBC,0x50}, {0xE4,0xFE}, {0xBE,0xB2},
- {0xE5,0x40}, {0x9E,0xF5}, {0xE9,0x45}, {0xE8,0xFD},
- {0x8F,0xB7}, {0xBE,0xBE}, {0xE9,0x42}, {0xBE,0xB6},
- {0xBE,0xBA}, {0xE9,0x41}, {0xBE,0xB9}, {0xBE,0xB5},
- {0xBE,0xB8}, {0xBE,0xB3}, {0xBE,0xBD}, {0xE9,0x43},
- {0xE8,0xFE}, {0xBE,0xBC}, {0xE8,0xFC}, {0xBE,0xBB},
- {0xE9,0x44}, {0xE9,0x40}, {0xBC,0x51}, {0xBE,0xBF},
- {0xE9,0x46}, {0xBE,0xB7}, {0xBE,0xB4}, {0x9A,0xD2},
- {0x9E,0x6A}, {0x9E,0xE8}, {0xEC,0xC6}, {0xEC,0xC8},
- {0xC0,0x7B}, {0xEC,0xC9}, {0xEC,0xC7}, {0xEC,0xC5},
- {0xEC,0xC4}, {0xC0,0x7D}, {0xEC,0xC3}, {0xC0,0x7E},
- {0x8B,0xBF}, {0x91,0xC2}, {0x9D,0x62}, {0xEC,0xC1},
- {0xEC,0xC2}, {0xC0,0x7A}, {0xC0,0xA1}, {0xC0,0x7C},
- {0x92,0x60}, {0xEC,0xC0}, {0xC2,0x50}, {0xEF,0xBC},
- {0xEF,0xBA}, {0xEF,0xBF}, {0xEF,0xBD}, {0xEF,0xBB},
- {0xEF,0xBE}, {0x92,0x5E}, {0x91,0xC1}, {0x8A,0xC5},
- {0x97,0xA3}, {0xC3,0x60}, {0xF1,0xF2}, {0xF1,0xF3},
- {0xC4,0x56}, {0xF1,0xF4}, {0xF1,0xF0}, {0xF1,0xF5},
- {0xF1,0xF1}, {0xC2,0x51}, {0x8B,0x6C}, {0x8D,0x7E},
- {0xF3,0xFE}, {0xF4,0x41}, {0xC4,0x59}, {0xF4,0x40},
- {0xC4,0x58}, {0xC4,0x57}, {0x9C,0x54}, {0xC4,0x5A},
- {0xF5,0xC5}, {0xF5,0xC6}, {0x9D,0xBD}, {0xC4,0xDA},
- {0xC4,0xD9}, {0xC4,0xDB}, {0xF5,0xC4}, {0xF6,0xD8},
- {0xF6,0xD7}, {0xC5,0x6D}, {0xC5,0x6F}, {0xC5,0x6E},
- {0xF6,0xD9}, {0xC5,0xC8}, {0xF8,0xA6}, {0xC5,0xF1},
- {0xF8,0xA5}, {0xF8,0xEE}, {0x9C,0xC5}, {0xC9,0x49},
- {0xA5,0x7D}, {0xA5,0x7C}, {0xA6,0x5F}, {0xA6,0x5E},
- {0xC9,0xC7}, {0xA6,0x5D}, {0xC9,0xC6}, {0x89,0x5B},
- {0xA7,0x79}, {0xCA,0xA9}, {0xCA,0xA8}, {0xA7,0x77},
- {0xA7,0x7A}, {0xFB,0x5C}, {0xCA,0xA7}, {0xFB,0x5B},
- {0xA7,0x78}, {0xFB,0x57}, {0xCB,0xF0}, {0xCB,0xF1},
- {0xA9,0x54}, {0x98,0xC7}, {0xAB,0xAA}, {0xFB,0x5A},
- {0xD1,0x48}, {0xD1,0x49}, {0xAE,0x45}, {0xAE,0x46},
- {0xD4,0xAC}, {0xB0,0xE9}, {0xB0,0xEB}, {0xD4,0xAB},
- {0xB0,0xEA}, {0xD8,0x7C}, {0xB3,0xF2}, {0xB6,0xE9},
- {0xB6,0xEA}, {0xDC,0xE1}, {0x9C,0xEE}, {0xB9,0xCF},
- {0xB9,0xCE}, {0xE5,0x49}, {0xE9,0x48}, {0xE9,0x47},
- {0x92,0xE2}, {0xF9,0x6B}, {0xA4,0x67}, {0xC9,0x59},
- {0xC9,0x6E}, {0xC9,0x6F}, {0xA6,0x62}, {0xA6,0x66},
- {0xC9,0xC9}, {0xA6,0x64}, {0xA6,0x63}, {0xC9,0xC8},
- {0xA6,0x65}, {0xA6,0x61}, {0x94,0xA7}, {0xA6,0x60},
- {0xC9,0xCA}, {0xA7,0xA6}, {0x8C,0xCC}, {0xA7,0xA3},
- {0x9B,0xD4}, {0xA7,0x7D}, {0xCA,0xAA}, {0xFB,0x64},
- {0xFB,0x76}, {0xCA,0xAB}, {0xFB,0x60}, {0xA7,0xA1},
- {0xCA,0xAD}, {0xA7,0x7B}, {0xCA,0xAE}, {0xCA,0xAC},
- {0xA7,0x7E}, {0xA7,0xA2}, {0xA7,0xA5}, {0xA7,0xA4},
- {0xA7,0x7C}, {0xCA,0xAF}, {0x99,0xE5}, {0x9A,0xC2},
- {0x91,0xFB}, {0xA0,0x73}, {0xA9,0x59}, {0xCB,0xFE},
- {0xA9,0x5B}, {0xA9,0x5A}, {0x9F,0x72}, {0xCC,0x40},
- {0xA9,0x58}, {0xA9,0x57}, {0xCB,0xF5}, {0xCB,0xF4},
- {0xCB,0xF2}, {0xCB,0xF7}, {0xCB,0xF6}, {0xCB,0xF3},
- {0xCB,0xFC}, {0xCB,0xFD}, {0xCB,0xFA}, {0xCB,0xF8},
- {0xA9,0x56}, {0x9F,0xCC}, {0xCB,0xFB}, {0xA9,0x5C},
- {0xCC,0x41}, {0x98,0xA5}, {0x92,0xE8}, {0xCB,0xF9},
- {0xAB,0xAB}, {0xA9,0x55}, {0x9B,0xBC}, {0x96,0xF3},
- {0xAB,0xAC}, {0xCE,0x54}, {0x92,0xE7}, {0xCE,0x5A},
- {0xFC,0x67}, {0xAB,0xB2}, {0xCE,0x58}, {0xCE,0x5E},
- {0xCE,0x55}, {0xCE,0x59}, {0xCE,0x5B}, {0xCE,0x5D},
- {0xCE,0x57}, {0x8B,0x7D}, {0xCE,0x56}, {0xCE,0x51},
- {0xCE,0x52}, {0xAB,0xAD}, {0x9B,0xF4}, {0xAB,0xAF},
- {0xAB,0xAE}, {0xCE,0x53}, {0xCE,0x5C}, {0x9E,0xF7},
- {0x9E,0xC1}, {0xAB,0xB1}, {0x99,0x6F}, {0xCE,0x50},
- {0xD1,0x53}, {0xD1,0x52}, {0xD1,0x57}, {0xD1,0x4E},
- {0x96,0xF1}, {0xD1,0x51}, {0xD1,0x50}, {0x8E,0x41},
- {0xD1,0x54}, {0xD1,0x58}, {0xAE,0x47}, {0xAE,0x4A},
- {0x95,0x4A}, {0xD1,0x4F}, {0xD1,0x55}, {0x97,0xE6},
- {0xAE,0x49}, {0xD1,0x4A}, {0xAB,0xB0}, {0xD4,0xBA},
- {0xD1,0x56}, {0xD1,0x4D}, {0xAE,0x48}, {0xD1,0x4C},
- {0x96,0xF5}, {0xD4,0xB1}, {0x92,0xE6}, {0x9F,0x42},
- {0xB0,0xEC}, {0xB0,0xF0}, {0xD4,0xC1}, {0xD4,0xAF},
- {0xD4,0xBD}, {0xB0,0xF1}, {0xD4,0xBF}, {0xFB,0x67},
- {0xD4,0xC5}, {0xD4,0xC9}, {0xD4,0xC0}, {0xD4,0xB4},
- {0xD4,0xBC}, {0x99,0xA9}, {0xD4,0xCA}, {0xD4,0xC8},
- {0xD4,0xBE}, {0xD4,0xB9}, {0xD4,0xB2}, {0xD8,0xA6},
- {0xD4,0xB0}, {0xB0,0xF5}, {0xD4,0xB7}, {0xB0,0xF6},
- {0xB0,0xF2}, {0xD4,0xAD}, {0xD4,0xC3}, {0xD4,0xB5},
- {0xFA,0xE6}, {0xD4,0xB3}, {0xD4,0xC6}, {0xB0,0xF3},
- {0xFB,0x69}, {0xD4,0xCC}, {0xB0,0xED}, {0xB0,0xEF},
- {0xD4,0xBB}, {0xD4,0xB6}, {0xAE,0x4B}, {0xB0,0xEE},
- {0xD4,0xB8}, {0xD4,0xC7}, {0xD4,0xCB}, {0xD4,0xC2},
- {0xD4,0xC4}, {0x97,0xE5}, {0xD4,0xAE}, {0xD8,0xA1},
- {0xD8,0xAA}, {0xD8,0xA9}, {0xB3,0xFA}, {0xD8,0xA2},
- {0xB3,0xFB}, {0xB3,0xF9}, {0x96,0x7D}, {0xD8,0xA4},
- {0xB3,0xF6}, {0xD8,0xA8}, {0xFB,0x6C}, {0xD8,0xA3},
- {0xD8,0xA5}, {0xD8,0x7D}, {0xB3,0xF4}, {0xD8,0xB2},
- {0xD8,0xB1}, {0xD8,0xAE}, {0xB3,0xF3}, {0xB3,0xF7},
- {0xB3,0xF8}, {0xD1,0x4B}, {0xD8,0xAB}, {0xB3,0xF5},
- {0xB0,0xF4}, {0xD8,0xAD}, {0xD8,0x7E}, {0xD8,0xB0},
- {0xD8,0xAF}, {0x99,0xA2}, {0xD8,0xB3}, {0xDC,0xEF},
- {0xD8,0xAC}, {0x9A,0xBB}, {0x9A,0x65}, {0x94,0x4E},
- {0xD8,0xA7}, {0xDC,0xE7}, {0xB6,0xF4}, {0xB6,0xF7},
- {0xB6,0xF2}, {0xDC,0xE6}, {0xDC,0xEA}, {0xDC,0xE5},
- {0xB6,0xEC}, {0xB6,0xF6}, {0xDC,0xE2}, {0xB6,0xF0},
- {0xDC,0xE9}, {0xB6,0xEE}, {0xB6,0xED}, {0xDC,0xEC},
- {0xB6,0xEF}, {0xDC,0xEE}, {0xFB,0x6E}, {0xDC,0xEB},
- {0xB6,0xEB}, {0x99,0xDF}, {0xB6,0xF5}, {0xDC,0xF0},
- {0xDC,0xE4}, {0xDC,0xED}, {0xDC,0xE3}, {0x98,0xE3},
- {0xB6,0xF1}, {0x92,0x54}, {0xB6,0xF3}, {0xDC,0xE8},
- {0xDC,0xF1}, {0x96,0x7B}, {0x8A,0xAF}, {0xE1,0x5D},
- {0xB9,0xD0}, {0xE1,0x63}, {0xB9,0xD5}, {0xE1,0x5F},
- {0xE1,0x66}, {0xE1,0x57}, {0xB9,0xD7}, {0xB9,0xD1},
- {0xE1,0x5C}, {0xBC,0x55}, {0xE1,0x5B}, {0xE1,0x64},
- {0xB9,0xD2}, {0xB9,0xD6}, {0xE1,0x5A}, {0xE1,0x60},
- {0xE1,0x65}, {0xE1,0x56}, {0xB9,0xD4}, {0xE1,0x5E},
- {0xE1,0x62}, {0xE1,0x68}, {0xE1,0x58}, {0xE1,0x61},
- {0x8C,0x77}, {0xB9,0xD3}, {0xE1,0x67}, {0xE1,0x59},
- {0x8B,0xAF}, {0x9E,0xBD}, {0xBC,0x59}, {0xE5,0x4B},
- {0xBC,0x57}, {0xBC,0x56}, {0xE5,0x4D}, {0xE5,0x52},
- {0xE5,0x4E}, {0xE5,0x51}, {0xBC,0x5C}, {0x9E,0xE6},
- {0xBE,0xA5}, {0xBC,0x5B}, {0xFB,0x6F}, {0xE5,0x4A},
- {0xE5,0x50}, {0xBC,0x5A}, {0xE5,0x4F}, {0x8E,0xE1},
- {0xE5,0x4C}, {0xBC,0x58}, {0x9B,0x7D}, {0x9C,0x7E},
- {0xE9,0x4D}, {0xF9,0xD9}, {0xE9,0x4F}, {0xE9,0x4A},
- {0xBE,0xC1}, {0xE9,0x4C}, {0xBE,0xC0}, {0xE9,0x4E},
- {0xBE,0xC3}, {0xE9,0x50}, {0xBE,0xC2}, {0xE9,0x49},
- {0xE9,0x4B}, {0x92,0xEA}, {0xC0,0xA5}, {0xEC,0xCC},
- {0x8C,0x78}, {0xC0,0xA4}, {0xEC,0xCD}, {0xC0,0xA3},
- {0xEC,0xCB}, {0xC0,0xA2}, {0xEC,0xCA}, {0xC2,0x53},
- {0xC2,0x52}, {0xF1,0xF6}, {0xF1,0xF8}, {0xFB,0x72},
- {0xF1,0xF7}, {0xC3,0x61}, {0xC3,0x62}, {0xFB,0x71},
- {0xC3,0x63}, {0xF4,0x42}, {0xC4,0x5B}, {0xF7,0xD3},
- {0xF7,0xD2}, {0xC5,0xF2}, {0xA4,0x68}, {0xA4,0xD0},
- {0xA7,0xA7}, {0x89,0x5C}, {0x98,0xF0}, {0x96,0xF2},
- {0xCE,0x5F}, {0xB3,0xFC}, {0xB3,0xFD}, {0xFB,0x74},
- {0xDC,0xF2}, {0xB9,0xD8}, {0xE1,0x69}, {0xE5,0x53},
- {0x8B,0xC1}, {0xC9,0x5A}, {0x89,0x5D}, {0x89,0xDE},
- {0xCA,0xB0}, {0x89,0x5E}, {0xC6,0xCA}, {0xCC,0x42},
- {0xCE,0x60}, {0xD1,0x59}, {0xAE,0x4C}, {0xFE,0x42},
- {0xF1,0xF9}, {0xC4,0xDC}, {0xA4,0x69}, {0xA5,0x7E},
- {0xC9,0x70}, {0xA6,0x67}, {0xA6,0x68}, {0xA9,0x5D},
- {0xFB,0x7B}, {0xB0,0xF7}, {0xB9,0xDA}, {0xB9,0xDB},
- {0xB9,0xD9}, {0xA4,0x6A}, {0xA4,0xD1}, {0xA4,0xD3},
- {0xA4,0xD2}, {0xC9,0x5B}, {0xA4,0xD4}, {0xA5,0xA1},
- {0xC9,0x71}, {0xA5,0xA2}, {0x89,0x5F}, {0x89,0x60},
- {0xA6,0x69}, {0xA6,0x6A}, {0xC9,0xCB}, {0xA7,0xA8},
- {0xCA,0xB1}, {0xA9,0x61}, {0xCC,0x43}, {0xA9,0x5F},
- {0xA9,0x60}, {0xA9,0x5E}, {0xD1,0x5A}, {0xAB,0xB6},
- {0xAB,0xB5}, {0xAB,0xB7}, {0xAB,0xB4}, {0xCE,0x61},
- {0xA9,0x62}, {0xAB,0xB3}, {0xAE,0x4D}, {0xAE,0x4E},
- {0xAE,0x4F}, {0xD4,0xCD}, {0xB3,0xFE}, {0xD8,0xB4},
- {0xB0,0xF8}, {0x9B,0xCD}, {0xB6,0xF8}, {0xB9,0xDD},
- {0xB9,0xDC}, {0xE1,0x6A}, {0xBC,0x5D}, {0xBE,0xC4},
- {0xEF,0xC0}, {0xF6,0xDA}, {0xF7,0xD4}, {0xA4,0x6B},
- {0xA5,0xA3}, {0x9D,0xD3}, {0xA5,0xA4}, {0xC9,0xD1},
- {0xA6,0x6C}, {0xA6,0x6F}, {0xC9,0xCF}, {0xC9,0xCD},
- {0xA6,0x6E}, {0xC9,0xD0}, {0xC9,0xD2}, {0xC9,0xCC},
- {0xA6,0x71}, {0xA6,0x70}, {0xA6,0x6D}, {0xA6,0x6B},
- {0xC9,0xCE}, {0x98,0x4C}, {0xA7,0xB3}, {0xA7,0xB0},
- {0xCA,0xB6}, {0xCA,0xB9}, {0xCA,0xB8}, {0xA7,0xAA},
- {0xA7,0xB2}, {0x97,0x52}, {0xA7,0xAF}, {0xCA,0xB5},
- {0xCA,0xB3}, {0xA7,0xAE}, {0x95,0xC3}, {0xA7,0xA9},
- {0xA7,0xAC}, {0x9B,0xB6}, {0xCA,0xB4}, {0xCA,0xBB},
- {0xCA,0xB7}, {0xA7,0xAD}, {0xA7,0xB1}, {0xA7,0xB4},
- {0xCA,0xB2}, {0xCA,0xBA}, {0xA7,0xAB}, {0x9A,0xB9},
- {0xA9,0x67}, {0xA9,0x6F}, {0x97,0xB3}, {0xCC,0x4F},
- {0xCC,0x48}, {0xA9,0x70}, {0xCC,0x53}, {0xCC,0x44},
- {0xCC,0x4B}, {0x9F,0x74}, {0x92,0xF1}, {0xA9,0x66},
- {0xCC,0x45}, {0xA9,0x64}, {0xCC,0x4C}, {0xCC,0x50},
- {0xA9,0x63}, {0xCC,0x51}, {0xCC,0x4A}, {0xCC,0x4D},
- {0x97,0xDF}, {0xA9,0x72}, {0xA9,0x69}, {0xCC,0x54},
- {0xCC,0x52}, {0xFB,0xA6}, {0xA9,0x6E}, {0xA9,0x6C},
- {0xCC,0x49}, {0xA9,0x6B}, {0xCC,0x47}, {0xCC,0x46},
- {0xA9,0x6A}, {0xA9,0x68}, {0xA9,0x71}, {0xA9,0x6D},
- {0xA9,0x65}, {0xCC,0x4E}, {0xAB,0xB9}, {0xFB,0xAB},
- {0xAB,0xC0}, {0xCE,0x6F}, {0xAB,0xB8}, {0xCE,0x67},
- {0xCE,0x63}, {0xCE,0x73}, {0xCE,0x62}, {0xAB,0xBB},
- {0xCE,0x6C}, {0xAB,0xBE}, {0xAB,0xC1}, {0xAB,0xBC},
- {0xCE,0x70}, {0xAB,0xBF}, {0x98,0x77}, {0xAE,0x56},
- {0xCE,0x76}, {0xCE,0x64}, {0x98,0x54}, {0x95,0xC5},
- {0xCE,0x66}, {0xCE,0x6D}, {0xCE,0x71}, {0xCE,0x75},
- {0xCE,0x72}, {0xCE,0x6B}, {0xCE,0x6E}, {0x9D,0x55},
- {0xFB,0xB2}, {0xCE,0x68}, {0xAB,0xC3}, {0xCE,0x6A},
- {0xCE,0x69}, {0xCE,0x74}, {0xAB,0xBA}, {0xCE,0x65},
- {0xAB,0xC2}, {0x95,0x7E}, {0xAB,0xBD}, {0xAE,0x5C},
- {0xD1,0x62}, {0x97,0x42}, {0xAE,0x5B}, {0x94,0xE6},
- {0xD1,0x60}, {0xAE,0x50}, {0x92,0xF5}, {0xAE,0x55},
- {0xD1,0x5F}, {0xD1,0x5C}, {0xD1,0x61}, {0xAE,0x51},
- {0xD1,0x5B}, {0x8C,0xC5}, {0xAE,0x54}, {0xAE,0x52},
- {0xD1,0x63}, {0xAE,0x53}, {0xAE,0x57}, {0x92,0xFD},
- {0xAE,0x58}, {0xFB,0xA2}, {0xAE,0x5A}, {0x9C,0x51},
- {0xAE,0x59}, {0x94,0xE9}, {0x98,0x5C}, {0x92,0xF0},
- {0xD1,0x5D}, {0xD1,0x5E}, {0xD1,0x64}, {0xD4,0xD4},
- {0xB0,0xF9}, {0xD8,0xC2}, {0xD4,0xD3}, {0xD4,0xE6},
- {0xB1,0x40}, {0x94,0x4C}, {0xD4,0xE4}, {0xB0,0xFE},
- {0xB0,0xFA}, {0xD4,0xED}, {0xD4,0xDD}, {0xD4,0xE0},
- {0x91,0x6B}, {0xB1,0x43}, {0xD4,0xEA}, {0xD4,0xE2},
- {0xB0,0xFB}, {0xB1,0x44}, {0xD4,0xE7}, {0xD4,0xE5},
- {0xD4,0xD6}, {0xD4,0xEB}, {0xD4,0xDF}, {0xD4,0xDA},
- {0x8B,0x78}, {0xD4,0xD0}, {0xD4,0xEC}, {0xD4,0xDC},
- {0xD4,0xCF}, {0x94,0xE2}, {0xB1,0x42}, {0xD4,0xE1},
- {0xD4,0xEE}, {0xD4,0xDE}, {0xD4,0xD2}, {0xD4,0xD7},
- {0xD4,0xCE}, {0x98,0x4F}, {0xB1,0x41}, {0xFB,0xB5},
- {0xD4,0xDB}, {0xD4,0xD8}, {0xB0,0xFC}, {0xD4,0xD1},
- {0x92,0x71}, {0xD4,0xE9}, {0xB0,0xFD}, {0x93,0x65},
- {0xD4,0xD9}, {0xD4,0xD5}, {0x98,0x5B}, {0xD4,0xE8},
- {0x98,0x50}, {0xB4,0x40}, {0xD8,0xBB}, {0x97,0xBC},
- {0xD8,0xB8}, {0xD8,0xC9}, {0xD8,0xBD}, {0xD8,0xCA},
- {0x92,0xF3}, {0xB4,0x42}, {0x93,0x40}, {0x98,0x4D},
- {0xD8,0xC6}, {0xD8,0xC3}, {0x95,0x72}, {0xFD,0xEF},
- {0xD8,0xC4}, {0xD8,0xC7}, {0xD8,0xCB}, {0xD4,0xE3},
- {0xD8,0xCD}, {0xDD,0x47}, {0xFD,0xC1}, {0xB4,0x43},
- {0xD8,0xCE}, {0xD8,0xB6}, {0xD8,0xC0}, {0xFB,0xBA},
- {0xD8,0xC5}, {0x92,0xEB}, {0xB4,0x41}, {0xB4,0x44},
- {0xD8,0xCC}, {0xD8,0xCF}, {0xD8,0xBA}, {0xD8,0xB7},
- {0xFC,0x73}, {0x97,0xB7}, {0xD8,0xB9}, {0xD8,0xBE},
- {0xD8,0xBC}, {0xB4,0x45}, {0xD8,0xC8}, {0xFB,0xB4},
- {0xD8,0xBF}, {0xD8,0xC1}, {0xD8,0xB5}, {0xDC,0xFA},
- {0xDC,0xF8}, {0xB7,0x42}, {0xB7,0x40}, {0xDD,0x43},
- {0xDC,0xF9}, {0xDD,0x44}, {0xDD,0x40}, {0xDC,0xF7},
- {0xDD,0x46}, {0xDC,0xF6}, {0xDC,0xFD}, {0xB6,0xFE},
- {0xB6,0xFD}, {0xB6,0xFC}, {0xDC,0xFB}, {0xDD,0x41},
- {0xB6,0xF9}, {0xB7,0x41}, {0x90,0xA7}, {0xDC,0xF4},
- {0xDC,0xFE}, {0xDC,0xF3}, {0xDC,0xFC}, {0xB6,0xFA},
- {0xDD,0x42}, {0xDC,0xF5}, {0xB6,0xFB}, {0xDD,0x45},
- {0x97,0x41}, {0x92,0xF4}, {0xFB,0xBC}, {0xE1,0x6E},
- {0xB9,0xE2}, {0xB9,0xE1}, {0xB9,0xE3}, {0xE1,0x7A},
- {0xE1,0x70}, {0xE1,0x76}, {0xE1,0x6B}, {0xE1,0x79},
- {0xE1,0x78}, {0xE1,0x7C}, {0xE1,0x75}, {0xB9,0xDE},
- {0xE1,0x74}, {0xB9,0xE4}, {0x95,0x77}, {0xE1,0x6D},
- {0xB9,0xDF}, {0xE1,0x7B}, {0xB9,0xE0}, {0xE1,0x6F},
- {0xE1,0x72}, {0xE1,0x77}, {0xE1,0x71}, {0xE1,0x6C},
- {0x9E,0xE2}, {0x8F,0x78}, {0xE1,0x73}, {0xE5,0x55},
- {0xBC,0x61}, {0xE5,0x58}, {0xE5,0x57}, {0xE5,0x5A},
- {0xE5,0x5C}, {0xF9,0xDC}, {0xBC,0x5F}, {0xE5,0x56},
- {0x96,0x72}, {0xE5,0x54}, {0xE5,0x5D}, {0xE5,0x5B},
- {0xE5,0x59}, {0xE5,0x5F}, {0xE5,0x5E}, {0xBC,0x63},
- {0xBC,0x5E}, {0xBC,0x60}, {0xBC,0x62}, {0x9E,0xB5},
- {0xE5,0x60}, {0xE9,0x57}, {0x96,0x4B}, {0xE9,0x56},
- {0xE9,0x55}, {0x8C,0xAC}, {0xE9,0x58}, {0xE9,0x51},
- {0xE9,0x52}, {0xE9,0x5A}, {0xE9,0x53}, {0xBE,0xC5},
- {0xE9,0x5C}, {0xA0,0xFA}, {0xE9,0x5B}, {0xE9,0x54},
- {0xEC,0xD1}, {0xC0,0xA8}, {0xEC,0xCF}, {0xEC,0xD4},
- {0xEC,0xD3}, {0xE9,0x59}, {0xC0,0xA7}, {0x95,0x75},
- {0xEC,0xD2}, {0xEC,0xCE}, {0xEC,0xD6}, {0xEC,0xD5},
- {0xC0,0xA6}, {0xEC,0xD0}, {0xBE,0xC6}, {0xC2,0x54},
- {0xEF,0xC1}, {0xF1,0xFA}, {0xF1,0xFB}, {0xF1,0xFC},
- {0xC4,0x5C}, {0x90,0xDA}, {0xC4,0x5D}, {0x93,0x67},
- {0xF4,0x43}, {0xFE,0xA4}, {0xF5,0xC8}, {0xF5,0xC7},
- {0x90,0xDF}, {0xF6,0xDB}, {0xF6,0xDC}, {0xF7,0xD5},
- {0xF8,0xA7}, {0x93,0x54}, {0xA4,0x6C}, {0xA4,0x6D},
- {0xA4,0x6E}, {0xA4,0xD5}, {0xA5,0xA5}, {0xC9,0xD3},
- {0xA6,0x72}, {0xA6,0x73}, {0xA7,0xB7}, {0xA7,0xB8},
- {0xA7,0xB6}, {0xA7,0xB5}, {0xA9,0x73}, {0xCC,0x55},
- {0xA9,0x75}, {0xA9,0x74}, {0xCC,0x56}, {0x89,0x61},
- {0x8B,0xB4}, {0xAB,0xC4}, {0xAE,0x5D}, {0xD1,0x65},
- {0x9D,0xC0}, {0xD4,0xF0}, {0xB1,0x45}, {0xB4,0x47},
- {0xD4,0xEF}, {0xB4,0x46}, {0x8E,0x48}, {0xB9,0xE5},
- {0xFB,0xC5}, {0xE1,0x7D}, {0xBE,0xC7}, {0xC0,0xA9},
- {0xEC,0xD7}, {0xFB,0xC7}, {0xC4,0x5E}, {0xC5,0x70},
- {0xC6,0xCB}, {0xC9,0x72}, {0xFA,0x79}, {0xA5,0xA6},
- {0xC9,0x73}, {0xA6,0x76}, {0xA6,0x74}, {0xA6,0x75},
- {0xA6,0x77}, {0xA7,0xBA}, {0xA7,0xB9}, {0xCA,0xBC},
- {0xA7,0xBB}, {0x9E,0x67}, {0xCA,0xBD}, {0xCC,0x57},
- {0xCC,0x58}, {0x8C,0xD9}, {0xA9,0x76}, {0xA9,0x78},
- {0xA9,0x7A}, {0xA9,0x77}, {0xA9,0x7B}, {0xA9,0x79},
- {0xFB,0xD2}, {0x89,0x62}, {0x89,0x63}, {0xAB,0xC8},
- {0xAB,0xC5}, {0xAB,0xC7}, {0xAB,0xC9}, {0xAB,0xC6},
- {0xD1,0x66}, {0xCE,0x77}, {0xFC,0x7D}, {0xD1,0x68},
- {0xD1,0x67}, {0xAE,0x63}, {0xAE,0x5F}, {0xAE,0x60},
- {0xAE,0x62}, {0xAE,0x64}, {0xAE,0x61}, {0xAE,0x66},
- {0xAE,0x65}, {0xB1,0x4A}, {0xD4,0xF2}, {0xD4,0xF1},
- {0xB1,0x49}, {0x9F,0x6B}, {0xB1,0x48}, {0xB1,0x47},
- {0xB1,0x4B}, {0xB1,0x46}, {0xD8,0xD5}, {0xD8,0xD2},
- {0xB4,0x49}, {0xD8,0xD1}, {0xD8,0xD6}, {0xB4,0x4B},
- {0xD8,0xD4}, {0xB4,0x48}, {0xB4,0x4A}, {0xD8,0xD3},
- {0xFB,0xCC}, {0xDD,0x48}, {0xFE,0xAE}, {0xDD,0x49},
- {0xDD,0x4A}, {0xB9,0xE6}, {0xB9,0xEE}, {0xE1,0x7E},
- {0xB9,0xE8}, {0xB9,0xEC}, {0xE1,0xA1}, {0xB9,0xED},
- {0xB9,0xE9}, {0xB9,0xEA}, {0xB9,0xE7}, {0xB9,0xEB},
- {0xBC,0x66}, {0xD8,0xD0}, {0xBC,0x67}, {0xBC,0x65},
- {0xBC,0x64}, {0xE9,0x5D}, {0xBE,0xC8}, {0xEC,0xD8},
- {0xEC,0xD9}, {0xFB,0xD1}, {0xC3,0x64}, {0xC4,0x5F},
- {0xA4,0x6F}, {0xA6,0x78}, {0xFB,0x75}, {0xAB,0xCA},
- {0xD1,0x69}, {0xAE,0x67}, {0xFB,0xD4}, {0xB1,0x4E},
- {0xB1,0x4D}, {0xB1,0x4C}, {0xB4,0x4C}, {0xB4,0x4D},
- {0xD8,0xD7}, {0xB9,0xEF}, {0xBE,0xC9}, {0xA4,0x70},
- {0xC9,0x5C}, {0xA4,0xD6}, {0xC9,0x74}, {0xFB,0xD6},
- {0xFB,0xD8}, {0xC9,0xD4}, {0xA6,0x79}, {0xA9,0x7C},
- {0x8B,0x5D}, {0x93,0x4C}, {0xDD,0x4B}, {0x9A,0xE2},
- {0xA4,0x71}, {0x8B,0xC9}, {0xA4,0xD7}, {0xC9,0xD5},
- {0xCA,0xBE}, {0xCA,0xBF}, {0xA7,0xBC}, {0xD8,0xD8},
- {0xB4,0x4E}, {0xDD,0x4C}, {0xC0,0xAA}, {0xA4,0x72},
- {0xA4,0xA8}, {0xA4,0xD8}, {0xC9,0x75}, {0xA5,0xA7},
- {0xA7,0xC0}, {0xA7,0xBF}, {0xA7,0xBD}, {0xA7,0xBE},
- {0xCC,0x59}, {0xA9,0x7E}, {0xA9,0xA1}, {0xCC,0x5A},
- {0xA9,0x7D}, {0xFB,0xDB}, {0x9F,0xC9}, {0xAB,0xCE},
- {0xCE,0x78}, {0xAB,0xCD}, {0xAB,0xCB}, {0xAB,0xCC},
- {0xAE,0x6A}, {0xAE,0x68}, {0x9F,0x44}, {0xD1,0x6B},
- {0xAE,0x69}, {0xD1,0x6A}, {0xAE,0x5E}, {0xD4,0xF3},
- {0xB1,0x50}, {0xB1,0x51}, {0x98,0xED}, {0xB1,0x4F},
- {0xB9,0xF0}, {0xE1,0xA2}, {0xBC,0x68}, {0xBC,0x69},
- {0xE5,0x61}, {0xC0,0xAB}, {0xEF,0xC2}, {0xEF,0xC3},
- {0xC4,0xDD}, {0xF8,0xA8}, {0xC9,0x4B}, {0xA4,0xD9},
- {0xA4,0x73}, {0xC9,0x77}, {0xC9,0x76}, {0xA6,0x7A},
- {0xC9,0xD7}, {0xC9,0xD8}, {0xC9,0xD6}, {0xC9,0xD9},
- {0xFB,0xDD}, {0xCA,0xC7}, {0xCA,0xC2}, {0xCA,0xC4},
- {0xCA,0xC6}, {0xCA,0xC3}, {0xA7,0xC4}, {0xCA,0xC0},
- {0xCA,0xC1}, {0xA7,0xC1}, {0xA7,0xC2}, {0xCA,0xC5},
- {0xCA,0xC8}, {0xA7,0xC3}, {0xCA,0xC9}, {0x8D,0xF2},
- {0x89,0x64}, {0xFD,0xF2}, {0xCC,0x68}, {0x93,0x4D},
- {0xCC,0x62}, {0xCC,0x5D}, {0xA9,0xA3}, {0xCC,0x65},
- {0xCC,0x63}, {0xCC,0x5C}, {0xCC,0x69}, {0xCC,0x6C},
- {0xCC,0x67}, {0xCC,0x60}, {0xA9,0xA5}, {0xCC,0x66},
- {0xA9,0xA6}, {0xCC,0x61}, {0xCC,0x64}, {0xCC,0x5B},
- {0xCC,0x5F}, {0xCC,0x6B}, {0xA9,0xA7}, {0xA9,0xA8},
- {0xCC,0x5E}, {0xCC,0x6A}, {0xA9,0xA2}, {0xA9,0xA4},
- {0xFB,0xE7}, {0xA0,0xF2}, {0x98,0x68}, {0xCE,0xAB},
- {0xCE,0xA4}, {0xCE,0xAA}, {0xCE,0xA3}, {0xCE,0xA5},
- {0xCE,0x7D}, {0xCE,0x7B}, {0xCE,0xAC}, {0xCE,0xA9},
- {0xCE,0x79}, {0x9F,0x58}, {0xAB,0xD0}, {0xCE,0xA7},
- {0xCE,0xA8}, {0xCE,0xA6}, {0xCE,0x7C}, {0xCE,0x7A},
- {0xAB,0xCF}, {0xCE,0xA2}, {0xCE,0x7E}, {0xCE,0xA1},
- {0xCE,0xAD}, {0x8D,0x73}, {0xAE,0x6F}, {0xFB,0xDE},
- {0xAE,0x6E}, {0xD1,0x6C}, {0xAE,0x6B}, {0xD1,0x6E},
- {0xFB,0xDF}, {0xAE,0x70}, {0xD1,0x6F}, {0xAE,0x73},
- {0x8C,0x48}, {0xAE,0x71}, {0xD1,0x70}, {0xCE,0xAE},
- {0xD1,0x72}, {0xAE,0x6D}, {0xAE,0x6C}, {0xD1,0x6D},
- {0xD1,0x71}, {0xAE,0x72}, {0xB1,0x53}, {0xB1,0x52},
- {0xD4,0xF5}, {0xD4,0xF9}, {0xD4,0xFB}, {0xB1,0x54},
- {0xD4,0xFE}, {0xFB,0xE3}, {0xB1,0x58}, {0xD5,0x41},
- {0xB1,0x5A}, {0x8D,0xA8}, {0xB1,0x56}, {0xB1,0x5E},
- {0xFB,0xE4}, {0xB1,0x5B}, {0xD4,0xF7}, {0xB1,0x55},
- {0xD4,0xF6}, {0xD4,0xF4}, {0xD5,0x43}, {0xD4,0xF8},
- {0xB1,0x57}, {0xD5,0x42}, {0xB1,0x5C}, {0xD4,0xFD},
- {0xD4,0xFC}, {0xB1,0x5D}, {0xD4,0xFA}, {0xB1,0x59},
- {0x9C,0x75}, {0xD5,0x44}, {0x98,0x78}, {0xD5,0x40},
- {0xD8,0xE7}, {0xD8,0xEE}, {0xD8,0xE3}, {0xB4,0x51},
- {0xD8,0xDF}, {0xD8,0xEF}, {0xD8,0xD9}, {0xD8,0xEC},
- {0xD8,0xEA}, {0xD8,0xE4}, {0xD8,0xED}, {0xD8,0xE6},
- {0x8D,0x60}, {0xD8,0xDE}, {0xD8,0xF0}, {0xD8,0xDC},
- {0xD8,0xE9}, {0xD8,0xDA}, {0xD8,0xF1}, {0xFB,0xE5},
- {0xB4,0x52}, {0x8D,0x61}, {0xD8,0xEB}, {0xDD,0x4F},
- {0xD8,0xDD}, {0xB4,0x4F}, {0xD8,0xE1}, {0xB4,0x50},
- {0xD8,0xE0}, {0xD8,0xE5}, {0xD8,0xE2}, {0x8D,0x62},
- {0xA0,0xA1}, {0xD8,0xE8}, {0x9C,0x40}, {0xDD,0x53},
- {0xDD,0x56}, {0xDD,0x4E}, {0xDD,0x50}, {0xDD,0x55},
- {0xDD,0x54}, {0xB7,0x43}, {0xD8,0xDB}, {0xDD,0x52},
- {0xB7,0x44}, {0x98,0xAD}, {0xDD,0x4D}, {0xDD,0x51},
- {0x9E,0xEA}, {0xE1,0xA9}, {0xE1,0xB0}, {0xE1,0xA7},
- {0x8C,0xD4}, {0xE1,0xAE}, {0xE1,0xA5}, {0xE1,0xAD},
- {0xE1,0xB1}, {0xE1,0xA4}, {0xE1,0xA8}, {0xE1,0xA3},
- {0xB9,0xF1}, {0x9C,0xEB}, {0xE1,0xA6}, {0xB9,0xF2},
- {0xE1,0xAC}, {0xE1,0xAB}, {0xE1,0xAA}, {0xFB,0xE0},
- {0xE1,0xAF}, {0x9F,0x51}, {0xE5,0x65}, {0xE5,0x67},
- {0xBC,0x6B}, {0xE5,0x68}, {0xE5,0x63}, {0xE5,0x62},
- {0xE5,0x6C}, {0xE5,0x6A}, {0xBC,0x6A}, {0xE5,0x6D},
- {0xE5,0x64}, {0xE5,0x69}, {0xE5,0x6B}, {0xE5,0x66},
- {0x8D,0x65}, {0xE9,0x61}, {0xE9,0x66}, {0xE9,0x60},
- {0xE9,0x65}, {0x9C,0xF1}, {0xE9,0x5E}, {0xE9,0x68},
- {0xE9,0x64}, {0xE9,0x69}, {0xE9,0x63}, {0xE9,0x5F},
- {0xE9,0x67}, {0xE9,0x6A}, {0xE9,0x62}, {0xFC,0x58},
- {0xEC,0xDA}, {0xC0,0xAF}, {0x8D,0x66}, {0xC0,0xAD},
- {0xC0,0xAC}, {0xC0,0xAE}, {0xEF,0xC4}, {0x96,0x54},
- {0xF1,0x72}, {0xF1,0xFD}, {0xF4,0x44}, {0xF4,0x45},
- {0xC4,0x60}, {0xF5,0xC9}, {0xC4,0xDE}, {0xF5,0xCA},
- {0xF6,0xDE}, {0xC5,0x72}, {0xC5,0x71}, {0xF6,0xDD},
- {0xC5,0xC9}, {0xFB,0xE8}, {0xF7,0xD6}, {0xC6,0xCC},
- {0xA4,0x74}, {0xA6,0x7B}, {0xC9,0xDA}, {0xCA,0xCA},
- {0xA8,0xB5}, {0xB1,0x5F}, {0xA4,0x75}, {0xA5,0xAA},
- {0xA5,0xA9}, {0xA5,0xA8}, {0xA7,0xC5}, {0xAE,0x74},
- {0xDD,0x57}, {0xA4,0x76}, {0xA4,0x77}, {0xA4,0x78},
- {0xA4,0xDA}, {0x9F,0xCE}, {0xAB,0xD1}, {0xCE,0xAF},
- {0xB4,0x53}, {0xA4,0x79}, {0xC9,0x5D}, {0xA5,0xAB},
- {0xA5,0xAC}, {0xC9,0x78}, {0xA6,0x7C}, {0xFB,0xFC},
- {0xCA,0xCB}, {0x9A,0xE4}, {0xA7,0xC6}, {0xCA,0xCC},
- {0xA9,0xAE}, {0x9F,0x75}, {0xCC,0x6E}, {0xA9,0xAC},
- {0xA9,0xAB}, {0xCC,0x6D}, {0xA9,0xA9}, {0xCC,0x6F},
- {0xA9,0xAA}, {0xA9,0xAD}, {0xAB,0xD2}, {0xAB,0xD4},
- {0xCE,0xB3}, {0xCE,0xB0}, {0xCE,0xB1}, {0xCE,0xB2},
- {0xCE,0xB4}, {0xAB,0xD3}, {0xD1,0x74}, {0xD1,0x73},
- {0xAE,0x76}, {0xAE,0x75}, {0xFB,0xF1}, {0xB1,0x62},
- {0xD5,0x46}, {0xB1,0x61}, {0xB1,0x63}, {0xB1,0x60},
- {0xB4,0x55}, {0xD5,0x45}, {0xB4,0x56}, {0xD8,0xF3},
- {0x8D,0x69}, {0xB4,0x57}, {0xD8,0xF2}, {0xB4,0x54},
- {0x93,0x4F}, {0xDD,0x5A}, {0xDD,0x5C}, {0xB7,0x45},
- {0xDD,0x5B}, {0xDD,0x59}, {0xDD,0x58}, {0xE1,0xB4},
- {0xB9,0xF7}, {0xB9,0xF5}, {0xB9,0xF6}, {0xE1,0xB2},
- {0xE1,0xB3}, {0xB9,0xF3}, {0xE5,0x71}, {0xE5,0x6F},
- {0x93,0x4E}, {0xBC,0x6D}, {0xE5,0x70}, {0xBC,0x6E},
- {0xBC,0x6C}, {0xB9,0xF4}, {0xE9,0x6D}, {0xE9,0x6B},
- {0xE9,0x6C}, {0xE5,0x6E}, {0xEC,0xDC}, {0xC0,0xB0},
- {0xEC,0xDB}, {0xEF,0xC5}, {0xEF,0xC6}, {0xE9,0x6E},
- {0xF1,0xFE}, {0xA4,0x7A}, {0xA5,0xAD}, {0xA6,0x7E},
- {0xC9,0xDB}, {0xA6,0x7D}, {0xA9,0xAF}, {0xB7,0x46},
- {0xFB,0xF4}, {0xA4,0xDB}, {0xA5,0xAE}, {0xAB,0xD5},
- {0xB4,0x58}, {0xC6,0xCE}, {0xC9,0x79}, {0xC9,0x7A},
- {0xFB,0xC3}, {0xC9,0xDC}, {0x89,0x65}, {0xA7,0xC8},
- {0xCA,0xD0}, {0xCA,0xCE}, {0xA7,0xC9}, {0xCA,0xCD},
- {0xCA,0xCF}, {0xCA,0xD1}, {0xA7,0xC7}, {0x8C,0x7A},
- {0xA9,0xB3}, {0xA9,0xB4}, {0xA9,0xB1}, {0x8C,0x7B},
- {0xA9,0xB0}, {0xCE,0xB8}, {0xA9,0xB2}, {0xAB,0xD6},
- {0xCE,0xB7}, {0xCE,0xB9}, {0xCE,0xB6}, {0xCE,0xBA},
- {0xAB,0xD7}, {0xAE,0x79}, {0xD1,0x75}, {0xD1,0x77},
- {0xAE,0x77}, {0xD1,0x78}, {0xAE,0x78}, {0xD1,0x76},
- {0xCE,0xB5}, {0xD5,0x47}, {0xD5,0x4A}, {0xD5,0x4B},
- {0xD5,0x48}, {0xB1,0x67}, {0xB1,0x66}, {0xB1,0x64},
- {0xB1,0x65}, {0xD5,0x49}, {0x8D,0x6A}, {0xB1,0x68},
- {0xB4,0x5A}, {0xB4,0x5B}, {0xB4,0x5C}, {0xDD,0x5D},
- {0xDD,0x5F}, {0xDD,0x61}, {0xB7,0x48}, {0xB7,0x47},
- {0xB4,0x59}, {0xDD,0x60}, {0xDD,0x5E}, {0x93,0x53},
- {0xE1,0xB8}, {0x9D,0xFB}, {0xE1,0xB6}, {0xE1,0xBC},
- {0xB9,0xF8}, {0xE1,0xBD}, {0xE1,0xBA}, {0xB9,0xF9},
- {0xE1,0xB7}, {0xE1,0xB5}, {0xE1,0xBB}, {0xBC,0x70},
- {0xE5,0x73}, {0xE1,0xB9}, {0xBC,0x72}, {0xE5,0x74},
- {0xBC,0x71}, {0xBC,0x74}, {0xE5,0x75}, {0xBC,0x6F},
- {0xBC,0x73}, {0xE9,0x73}, {0xE9,0x71}, {0xE9,0x70},
- {0xE9,0x72}, {0xE9,0x6F}, {0xC3,0x66}, {0xF4,0x46},
- {0xF4,0x47}, {0xF5,0xCB}, {0xF6,0xDF}, {0xC6,0x55},
- {0xFB,0xFD}, {0xA9,0xB5}, {0xA7,0xCA}, {0x90,0x59},
- {0xFC,0x40}, {0xAB,0xD8}, {0xFC,0x41}, {0xFC,0x43},
- {0xA4,0x7B}, {0xA4,0xDC}, {0xA5,0xAF}, {0xC9,0xDD},
- {0xA7,0xCB}, {0xCA,0xD2}, {0xCE,0xBB}, {0xAB,0xD9},
- {0xB9,0xFA}, {0xA4,0x7C}, {0x93,0x61}, {0xFC,0x46},
- {0x93,0x62}, {0xA6,0xA1}, {0xB7,0x49}, {0xA4,0x7D},
- {0xA4,0xDD}, {0xA4,0xDE}, {0xA5,0xB1}, {0xA5,0xB0},
- {0xC9,0xDE}, {0xA6,0xA2}, {0xCA,0xD3}, {0xA7,0xCC},
- {0xCC,0x71}, {0xCC,0x72}, {0xCC,0x73}, {0x8D,0x6B},
- {0xA9,0xB6}, {0xA9,0xB7}, {0xCC,0x70}, {0xA9,0xB8},
- {0xAB,0xDA}, {0xCE,0xBC}, {0xD1,0x7A}, {0xAE,0x7A},
- {0xD1,0x79}, {0xB1,0x69}, {0xD5,0x4C}, {0xB1,0x6A},
- {0xD5,0x4D}, {0xFC,0x4C}, {0xB4,0x5D}, {0xDD,0x62},
- {0xE1,0xBF}, {0xE1,0xBE}, {0xB9,0xFB}, {0xBC,0x75},
- {0xE5,0x76}, {0xBE,0xCA}, {0xE9,0x74}, {0xC0,0xB1},
- {0x95,0xB8}, {0xC5,0x73}, {0xF7,0xD8}, {0xC6,0xD0},
- {0x8B,0xCA}, {0xCC,0x74}, {0xCE,0xBD}, {0xB1,0x6B},
- {0xD8,0xF4}, {0xB7,0x4A}, {0x98,0x7A}, {0xC2,0x55},
- {0xC6,0xD1}, {0xA7,0xCE}, {0xFC,0x51}, {0xA7,0xCD},
- {0xAB,0xDB}, {0xD1,0x7B}, {0xB1,0x6D}, {0xB3,0x43},
- {0xB1,0x6E}, {0xB1,0x6C}, {0xB4,0x5E}, {0xE1,0xC0},
- {0xB9,0xFC}, {0xBC,0x76}, {0xFC,0x54}, {0xC9,0x4C},
- {0xC9,0xDF}, {0xCA,0xD5}, {0xA7,0xCF}, {0xCA,0xD4},
- {0xA7,0xD0}, {0xFA,0xAF}, {0xA9,0xBC}, {0xCC,0x77},
- {0xCC,0x76}, {0xA9,0xBB}, {0xA9,0xB9}, {0xA9,0xBA},
- {0xCC,0x75}, {0x8D,0x6C}, {0xAB,0xDD}, {0xCE,0xBE},
- {0xAB,0xE0}, {0xAB,0xDC}, {0xAB,0xE2}, {0xAB,0xDE},
- {0xAB,0xDF}, {0xAB,0xE1}, {0xAE,0x7D}, {0xAE,0x7C},
- {0xAE,0x7B}, {0xD5,0x4F}, {0xB1,0x6F}, {0xB1,0x72},
- {0xB1,0x70}, {0xD5,0x4E}, {0xB1,0x75}, {0xB1,0x71},
- {0xD5,0x50}, {0xB1,0x74}, {0xB1,0x73}, {0xFA,0x61},
- {0xD8,0xF6}, {0xD8,0xF5}, {0xFC,0x57}, {0xB4,0x61},
- {0xB4,0x5F}, {0xB4,0x60}, {0xD8,0xF7}, {0xB7,0x4B},
- {0xDD,0x64}, {0xB7,0x4C}, {0xDD,0x63}, {0x9B,0x70},
- {0xE5,0x77}, {0xBC,0x78}, {0xE1,0xC1}, {0xBC,0x77},
- {0xB9,0xFD}, {0xA0,0x51}, {0xEC,0xDE}, {0xE9,0x75},
- {0xC0,0xB2}, {0xEC,0xDD}, {0xF2,0x40}, {0xF4,0x48},
- {0xF4,0x49}, {0x8C,0x7C}, {0xA4,0xDF}, {0x8B,0xCB},
- {0xA5,0xB2}, {0xC9,0x7B}, {0xA7,0xD2}, {0xA7,0xD4},
- {0xC9,0xE2}, {0xCA,0xD8}, {0xCA,0xD7}, {0xCA,0xD6},
- {0xC9,0xE1}, {0xC9,0xE0}, {0xA6,0xA4}, {0xA7,0xD3},
- {0xA7,0xD1}, {0xA6,0xA3}, {0x93,0x6E}, {0xA9,0xBD},
- {0xCC,0x78}, {0xFC,0xD5}, {0xA9,0xBE}, {0xCA,0xDD},
- {0xCA,0xDF}, {0xCA,0xDE}, {0xCC,0x79}, {0xCA,0xDA},
- {0xA7,0xD8}, {0xA7,0xD6}, {0xCA,0xD9}, {0xCA,0xDB},
- {0xCA,0xE1}, {0xA7,0xD5}, {0xCA,0xDC}, {0xCA,0xE5},
- {0xA9,0xC0}, {0xCA,0xE2}, {0xA7,0xD7}, {0xCA,0xE0},
- {0xCA,0xE3}, {0xA9,0xBF}, {0xA9,0xC1}, {0xCA,0xE4},
- {0xCC,0xAF}, {0xCC,0xA2}, {0xCC,0x7E}, {0xCC,0xAE},
- {0xCC,0xA9}, {0xAB,0xE7}, {0xA9,0xC2}, {0xCC,0xAA},
- {0xCC,0xAD}, {0xAB,0xE3}, {0xCC,0xAC}, {0xA9,0xC3},
- {0xA9,0xC8}, {0xA9,0xC6}, {0xCC,0xA3}, {0xCC,0x7C},
- {0xCC,0xA5}, {0xA9,0xCD}, {0xCC,0xB0}, {0xAB,0xE4},
- {0xCC,0xA6}, {0xAB,0xE5}, {0xA9,0xC9}, {0xCC,0xA8},
- {0xFC,0xA9}, {0xCE,0xCD}, {0xAB,0xE6}, {0xCC,0x7B},
- {0xA9,0xCA}, {0xAB,0xE8}, {0xA9,0xCB}, {0xA9,0xC7},
- {0xA9,0xCC}, {0xCC,0xA7}, {0xCC,0x7A}, {0xCC,0xAB},
- {0xA9,0xC4}, {0xFC,0x61}, {0xCC,0x7D}, {0xCC,0xA4},
- {0xCC,0xA1}, {0xA9,0xC5}, {0xCE,0xBF}, {0xCE,0xC0},
- {0x89,0x66}, {0xCE,0xCA}, {0xD1,0xA1}, {0xCE,0xCB},
- {0xAB,0xEE}, {0xCE,0xCE}, {0xCE,0xC4}, {0xAB,0xED},
- {0xCE,0xC6}, {0xCE,0xC7}, {0xFA,0xCB}, {0xCE,0xC9},
- {0xAB,0xE9}, {0xAE,0xA3}, {0xF9,0xDA}, {0xCE,0xC5},
- {0xCE,0xC1}, {0xAE,0xA4}, {0xCE,0xCF}, {0xAE,0x7E},
- {0xD1,0x7D}, {0xCE,0xC8}, {0xD1,0x7C}, {0xCE,0xC3},
- {0xCE,0xCC}, {0xAB,0xEC}, {0xAE,0xA1}, {0xAB,0xF2},
- {0xAE,0xA2}, {0xCE,0xD0}, {0xD1,0x7E}, {0xAB,0xEB},
- {0xAE,0xA6}, {0xAB,0xF1}, {0xAB,0xF0}, {0xAB,0xEF},
- {0xAE,0xA5}, {0xCE,0xD1}, {0xAE,0xA7}, {0xAB,0xEA},
- {0xCE,0xC2}, {0x93,0x7A}, {0xA0,0xE0}, {0x93,0x6B},
- {0xB1,0x76}, {0xD1,0xA4}, {0xD1,0xA6}, {0xD1,0xA8},
- {0xAE,0xA8}, {0xAE,0xAE}, {0xD5,0x53}, {0xD1,0xAC},
- {0xD1,0xA3}, {0xB1,0x78}, {0xD5,0x51}, {0xAE,0xAD},
- {0xAE,0xAB}, {0xD1,0xAE}, {0xD5,0x52}, {0xD1,0xA5},
- {0xAE,0xAC}, {0xD1,0xA9}, {0xAE,0xAF}, {0xD1,0xAB},
- {0xAE,0xAA}, {0xD1,0xAA}, {0xD1,0xAD}, {0xD1,0xA7},
- {0xFC,0x6B}, {0xAE,0xA9}, {0xB1,0x79}, {0xD1,0xA2},
- {0xB1,0x77}, {0xA0,0xDC}, {0x94,0x68}, {0xB1,0x7A},
- {0xD5,0x55}, {0xD5,0x5E}, {0xB4,0x64}, {0xFC,0x6D},
- {0xB1,0x7C}, {0xB1,0xA3}, {0xB4,0x65}, {0xD5,0x60},
- {0xB1,0xAA}, {0xD8,0xF9}, {0xD5,0x56}, {0xB1,0xA2},
- {0xB1,0xA5}, {0xB1,0x7E}, {0xD5,0x54}, {0xD5,0x62},
- {0xD5,0x65}, {0xD9,0x49}, {0xD5,0x63}, {0xD8,0xFD},
- {0xB1,0xA1}, {0xB1,0xA8}, {0xB1,0xAC}, {0xD5,0x5D},
- {0xD8,0xF8}, {0xD5,0x61}, {0xB1,0x7B}, {0xD8,0xFA},
- {0xD5,0x64}, {0xD8,0xFC}, {0xD5,0x59}, {0xB4,0x62},
- {0xD5,0x57}, {0xD5,0x58}, {0xB1,0xA7}, {0x8D,0x71},
- {0xB1,0xA6}, {0xD5,0x5B}, {0xB1,0xAB}, {0xD5,0x5F},
- {0xB1,0xA4}, {0xD5,0x5C}, {0xFD,0x64}, {0xB1,0xA9},
- {0xB4,0x66}, {0xB4,0x63}, {0xD8,0xFB}, {0x99,0xBA},
- {0xD5,0x5A}, {0xB1,0x7D}, {0x9A,0xD0}, {0x9A,0x61},
- {0xA0,0xE5}, {0xB4,0x6B}, {0xB4,0x6F}, {0xD9,0x40},
- {0xB7,0x51}, {0xB4,0x6D}, {0xD9,0x44}, {0xB4,0x71},
- {0xDD,0x65}, {0xD9,0x46}, {0xB7,0x53}, {0xB4,0x69},
- {0xB4,0x6C}, {0xD9,0x47}, {0xA0,0x5B}, {0xD9,0x48},
- {0xD9,0x4E}, {0xB4,0x73}, {0xB7,0x54}, {0xD9,0x4A},
- {0xD9,0x4F}, {0xD9,0x43}, {0xB7,0x5E}, {0x96,0xAC},
- {0xB7,0x55}, {0xB4,0x72}, {0xD9,0x41}, {0xD9,0x50},
- {0x97,0x40}, {0xB7,0x5D}, {0xB4,0x70}, {0xB7,0x4E},
- {0xD9,0x4D}, {0xB4,0x74}, {0xD9,0x45}, {0xD8,0xFE},
- {0xB4,0x6A}, {0xD9,0x42}, {0xD9,0x4B}, {0x9E,0xF1},
- {0xB7,0x4D}, {0xB7,0x52}, {0xB4,0x67}, {0xD9,0x4C},
- {0xB7,0x50}, {0x8C,0x4D}, {0xB4,0x68}, {0xB7,0x5C},
- {0xE1,0xC3}, {0xDD,0x70}, {0xDD,0x68}, {0xE1,0xC2},
- {0xDD,0x6C}, {0xDD,0x6E}, {0x9F,0x7E}, {0xDD,0x6B},
- {0xB7,0x5B}, {0xDD,0x6A}, {0xB7,0x5F}, {0xE1,0xD2},
- {0x8D,0x72}, {0xB7,0x5A}, {0xBA,0x40}, {0xDD,0x71},
- {0xE1,0xC4}, {0xFC,0x76}, {0xB7,0x58}, {0xDD,0x69},
- {0xDD,0x6D}, {0xB9,0xFE}, {0xB7,0x4F}, {0xDD,0x66},
- {0xDD,0x67}, {0xBA,0x41}, {0xB7,0x57}, {0xB7,0x59},
- {0xB7,0x56}, {0xDD,0x6F}, {0x96,0xA9}, {0xE1,0xC8},
- {0xE1,0xC9}, {0xE1,0xCE}, {0xBC,0x7D}, {0xE1,0xD5},
- {0xBA,0x47}, {0xA0,0x6E}, {0xBA,0x46}, {0xE1,0xD0},
- {0xFC,0xAA}, {0xBC,0x7C}, {0xE1,0xC5}, {0xBA,0x45},
- {0xFB,0xCD}, {0xE1,0xD4}, {0xBA,0x43}, {0xBA,0x44},
- {0xFC,0x74}, {0xE1,0xD1}, {0xE5,0xAA}, {0xBC,0x7A},
- {0xB4,0x6E}, {0xE1,0xD3}, {0xBC,0xA3}, {0xE1,0xCB},
- {0xBC,0x7B}, {0xA0,0x74}, {0xBC,0xA2}, {0xE1,0xC6},
- {0xE1,0xCA}, {0xE1,0xC7}, {0xE1,0xCD}, {0xBA,0x48},
- {0xBC,0x79}, {0xBA,0x42}, {0xE5,0x7A}, {0xE1,0xCF},
- {0xBC,0xA1}, {0xA0,0x71}, {0xBC,0xA4}, {0xE1,0xCC},
- {0xFC,0x79}, {0xBC,0x7E}, {0xE5,0x79}, {0xFC,0x7C},
- {0xE5,0x7E}, {0xBE,0xCE}, {0xE5,0x78}, {0xE9,0xA3},
- {0xE5,0xA9}, {0xBC,0xA8}, {0xBC,0xA6}, {0xBE,0xCC},
- {0xE5,0xA6}, {0xE5,0xA2}, {0xBC,0xAC}, {0x9C,0x50},
- {0xE9,0x78}, {0x93,0x79}, {0x93,0x78}, {0xBC,0xAA},
- {0xE5,0xA1}, {0xA0,0xDD}, {0xE9,0x76}, {0xE5,0xA5},
- {0xE5,0xA8}, {0xE5,0x7D}, {0xBC,0xAB}, {0xBC,0xA5},
- {0xE9,0x77}, {0xBE,0xCD}, {0xE5,0xA7}, {0xBC,0xA7},
- {0xBC,0xA9}, {0xE5,0xA4}, {0xBC,0xAD}, {0xE5,0xA3},
- {0xE5,0x7C}, {0xE5,0x7B}, {0xBE,0xCB}, {0xE5,0xAB},
- {0xE9,0x7A}, {0xEC,0xE0}, {0xBE,0xD0}, {0x8D,0x75},
- {0xE9,0xA2}, {0x8D,0x76}, {0xE9,0x7E}, {0xEC,0xE1},
- {0xBE,0xD1}, {0xE9,0xA1}, {0x93,0x74}, {0xE9,0x7C},
- {0xC0,0xB4}, {0xEC,0xDF}, {0xE9,0x79}, {0xE9,0x7B},
- {0xC0,0xB5}, {0xBE,0xD3}, {0xC0,0xB3}, {0xBE,0xD2},
- {0xC0,0xB7}, {0xE9,0x7D}, {0xBE,0xCF}, {0x8D,0x77},
- {0xFC,0xA5}, {0xFC,0xA2}, {0xEF,0xCF}, {0xEF,0xC7},
- {0x90,0xC3}, {0xEC,0xE7}, {0xEF,0xC8}, {0xEC,0xE3},
- {0xA0,0x79}, {0xC2,0x56}, {0xEC,0xE5}, {0xEC,0xE4},
- {0xC0,0xB6}, {0xEC,0xE2}, {0xEC,0xE6}, {0xEF,0xD0},
- {0xEF,0xCC}, {0xEF,0xCE}, {0xEF,0xC9}, {0xEF,0xCA},
- {0xEF,0xCD}, {0xEF,0xCB}, {0xC3,0x67}, {0xC3,0x6A},
- {0xC3,0x69}, {0xC3,0x68}, {0xC4,0x61}, {0xF4,0x4A},
- {0xC4,0x62}, {0xF2,0x41}, {0xC4,0xDF}, {0xF5,0xCC},
- {0xC4,0xE0}, {0xC5,0x74}, {0xC5,0xCA}, {0xF7,0xD9},
- {0xF7,0xDA}, {0xF7,0xDB}, {0xF9,0xBA}, {0xA4,0xE0},
- {0xC9,0x7C}, {0xA5,0xB3}, {0xA6,0xA6}, {0xA6,0xA7},
- {0xA6,0xA5}, {0xA6,0xA8}, {0xA7,0xDA}, {0xA7,0xD9},
- {0xCC,0xB1}, {0xA9,0xCF}, {0xA9,0xCE}, {0xD1,0xAF},
- {0xB1,0xAD}, {0xB1,0xAE}, {0xB4,0x75}, {0xDD,0x72},
- {0xB7,0x60}, {0xB7,0x61}, {0xDD,0x74}, {0xDD,0x76},
- {0xDD,0x75}, {0xE1,0xD7}, {0xE1,0xD6}, {0xBA,0x49},
- {0xE1,0xD8}, {0x8D,0x79}, {0xE5,0xAC}, {0xBC,0xAE},
- {0xBE,0xD4}, {0xC0,0xB8}, {0xC2,0x57}, {0xC0,0xB9},
- {0xA4,0xE1}, {0x8B,0xFC}, {0xA0,0x76}, {0xCA,0xE6},
- {0xCC,0xB2}, {0xA9,0xD1}, {0xA9,0xD0}, {0xA9,0xD2},
- {0xAB,0xF3}, {0xCE,0xD2}, {0xCE,0xD3}, {0xD1,0xB0},
- {0xAE,0xB0}, {0xB1,0xAF}, {0xB4,0x76}, {0xD9,0x51},
- {0xA4,0xE2}, {0x8B,0xCD}, {0xA4,0x7E}, {0xA4,0xE3},
- {0xC9,0x7D}, {0xA5,0xB7}, {0xA5,0xB6}, {0xA5,0xB4},
- {0xA5,0xB5}, {0xA6,0xAB}, {0xC9,0xE9}, {0xC9,0xEB},
- {0xA6,0xAA}, {0xC9,0xE3}, {0xC9,0xE4}, {0xC9,0xEA},
- {0xC9,0xE6}, {0xC9,0xE8}, {0xA6,0xA9}, {0xC9,0xE5},
- {0xC9,0xEC}, {0xC9,0xE7}, {0x9F,0x5A}, {0xA7,0xE1},
- {0xA7,0xEA}, {0xA7,0xE8}, {0xCA,0xF0}, {0xCA,0xED},
- {0xCA,0xF5}, {0xA7,0xE6}, {0xCA,0xF6}, {0xA7,0xDF},
- {0xCA,0xF3}, {0xA7,0xE5}, {0xCA,0xEF}, {0xCA,0xEE},
- {0xA7,0xE3}, {0xCA,0xF4}, {0xA7,0xE4}, {0xA9,0xD3},
- {0xA7,0xDE}, {0xCA,0xF1}, {0x9F,0xF4}, {0xCA,0xE7},
- {0xA7,0xDB}, {0x9F,0xBA}, {0xA7,0xEE}, {0xCA,0xEC},
- {0xCA,0xF2}, {0xA7,0xE0}, {0xA7,0xE2}, {0xCA,0xE8},
- {0xCA,0xE9}, {0xCA,0xEA}, {0x8D,0x7A}, {0xA7,0xED},
- {0xA7,0xE7}, {0xA7,0xEC}, {0xCA,0xEB}, {0xA7,0xEB},
- {0xA7,0xDD}, {0xA7,0xDC}, {0xA7,0xE9}, {0x9E,0x45},
- {0x93,0xB0}, {0xA0,0x75}, {0xA9,0xE1}, {0xCC,0xBE},
- {0xCC,0xB7}, {0xA9,0xDC}, {0xA9,0xEF}, {0xCC,0xB3},
- {0xCC,0xBA}, {0xCC,0xBC}, {0xCC,0xBF}, {0xA9,0xEA},
- {0xCC,0xBB}, {0xCC,0xB4}, {0xA9,0xE8}, {0xCC,0xB8},
- {0xCC,0xC0}, {0xA9,0xD9}, {0xCC,0xBD}, {0xA9,0xE3},
- {0xA9,0xE2}, {0xCC,0xB6}, {0xA9,0xD7}, {0xA9,0xD8},
- {0x9B,0x46}, {0xA9,0xD6}, {0xFC,0xAE}, {0xA9,0xEE},
- {0xA9,0xE6}, {0xA9,0xE0}, {0xA9,0xD4}, {0xCC,0xB9},
- {0xA9,0xDF}, {0xA9,0xD5}, {0xA9,0xE7}, {0xA9,0xF0},
- {0xCE,0xD4}, {0xA9,0xE4}, {0xCC,0xB5}, {0xA9,0xDA},
- {0xA9,0xDD}, {0xA9,0xDE}, {0xFC,0xB0}, {0xA9,0xEC},
- {0xA9,0xED}, {0xA9,0xEB}, {0xA9,0xE5}, {0xA9,0xE9},
- {0xA9,0xDB}, {0xAB,0xF4}, {0xFA,0x51}, {0x8D,0x7B},
- {0xCE,0xDA}, {0xAC,0x41}, {0xAB,0xF8}, {0xAB,0xFA},
- {0xAC,0x40}, {0xCE,0xE6}, {0xAB,0xFD}, {0xD1,0xB1},
- {0xAE,0xB1}, {0xAC,0x43}, {0xCE,0xD7}, {0xCE,0xDF},
- {0xAB,0xFE}, {0xCE,0xDE}, {0xCE,0xDB}, {0xCE,0xE3},
- {0xCE,0xE5}, {0xAB,0xF7}, {0xAB,0xFB}, {0xAC,0x42},
- {0xAE,0xB3}, {0xCE,0xE0}, {0xAB,0xF9}, {0xAC,0x45},
- {0xCE,0xD9}, {0xAB,0xFC}, {0xAE,0xB2}, {0xAB,0xF6},
- {0xCE,0xD6}, {0xCE,0xDD}, {0xCE,0xD5}, {0xCE,0xD8},
- {0xCE,0xDC}, {0xD1,0xB2}, {0xAC,0x44}, {0xCE,0xE1},
- {0xCE,0xE2}, {0xCE,0xE4}, {0xAB,0xF5}, {0x8D,0x7C},
- {0xAE,0xC1}, {0xD1,0xBE}, {0xAE,0xBF}, {0xAE,0xC0},
- {0xD1,0xB4}, {0xD1,0xC4}, {0x9E,0xD6}, {0xAE,0xB6},
- {0x93,0xAC}, {0xD5,0x66}, {0xD1,0xC6}, {0xD1,0xC0},
- {0x9F,0x5B}, {0xD1,0xB7}, {0x93,0xA9}, {0xD1,0xC9},
- {0xD1,0xBA}, {0xAE,0xBC}, {0xD5,0x7D}, {0xD1,0xBD},
- {0xAE,0xBE}, {0xAE,0xB5}, {0xD1,0xCB}, {0xD1,0xBF},
- {0xAE,0xB8}, {0xD1,0xB8}, {0xD1,0xB5}, {0xD1,0xB6},
- {0xAE,0xB9}, {0xD1,0xC5}, {0xD1,0xCC}, {0xAE,0xBB},
- {0xD1,0xBC}, {0xD1,0xBB}, {0xAE,0xC3}, {0xAE,0xC2},
- {0xAE,0xB4}, {0xAE,0xBA}, {0xAE,0xBD}, {0xD1,0xC8},
- {0xD1,0xC2}, {0xAE,0xB7}, {0xD1,0xB3}, {0xD1,0xCA},
- {0xD1,0xC1}, {0xD1,0xC3}, {0xD1,0xC7}, {0xA0,0x7C},
- {0xD5,0x67}, {0xB1,0xB7}, {0xB1,0xCB}, {0xB1,0xCA},
- {0xB1,0xBF}, {0xFC,0xB2}, {0xD5,0x79}, {0xD5,0x75},
- {0xD5,0x72}, {0xD5,0xA6}, {0xB1,0xBA}, {0xB1,0xB2},
- {0xD5,0x77}, {0xB4,0xA8}, {0xB1,0xB6}, {0xD5,0xA1},
- {0x8A,0xC1}, {0xB1,0xCC}, {0xB1,0xC9}, {0xD5,0x7B},
- {0xD5,0x6A}, {0x9F,0xB4}, {0xB1,0xC8}, {0xD5,0xA3},
- {0xD5,0x69}, {0xB1,0xBD}, {0xB1,0xC1}, {0xD5,0xA2},
- {0xD5,0x73}, {0xB1,0xC2}, {0xB1,0xBC}, {0xD5,0x68},
- {0xFC,0xAC}, {0xB4,0x78}, {0xD5,0xA5}, {0xD5,0x71},
- {0xB1,0xC7}, {0xD5,0x74}, {0xD5,0xA4}, {0xB1,0xC6},
- {0xD9,0x52}, {0xB1,0xB3}, {0xD5,0x6F}, {0xB1,0xB8},
- {0xB1,0xC3}, {0xB1,0xBE}, {0xD5,0x78}, {0xD5,0x6E},
- {0xD5,0x6C}, {0xD5,0x7E}, {0xB1,0xB0}, {0xB1,0xC4},
- {0xB1,0xB4}, {0xB4,0x77}, {0xD5,0x7C}, {0xB1,0xB5},
- {0xB1,0xB1}, {0xB1,0xC0}, {0xB1,0xBB}, {0xB1,0xB9},
- {0xD5,0x70}, {0xB1,0xC5}, {0xD5,0x6D}, {0xD5,0x7A},
- {0xD5,0x76}, {0xD9,0x54}, {0xD9,0x53}, {0x9E,0x4C},
- {0xD5,0x6B}, {0xD9,0x64}, {0xB4,0x7A}, {0x8F,0xC5},
- {0xD9,0x6A}, {0xD9,0x59}, {0xD9,0x67}, {0xDD,0x77},
- {0xB4,0x7D}, {0xD9,0x6B}, {0xD9,0x6E}, {0xB4,0x7C},
- {0xD9,0x5C}, {0xD9,0x6D}, {0xD9,0x6C}, {0xB4,0x7E},
- {0xD9,0x55}, {0xB4,0x79}, {0xB4,0xA3}, {0x93,0xAD},
- {0xB4,0xA1}, {0xD9,0x69}, {0xD9,0x5F}, {0xB4,0xA5},
- {0xD9,0x70}, {0xD9,0x68}, {0xD9,0x71}, {0xB4,0xAD},
- {0xB4,0xAB}, {0xD9,0x66}, {0xD9,0x65}, {0x9D,0xC3},
- {0xD9,0x63}, {0xD9,0x5D}, {0xB4,0xA4}, {0x8D,0xA2},
- {0xB4,0xA2}, {0xD1,0xB9}, {0xD9,0x56}, {0x9D,0x4A},
- {0xDD,0xB7}, {0xD9,0x57}, {0xB4,0x7B}, {0xB4,0xAA},
- {0xDD,0x79}, {0xB4,0xA6}, {0xB4,0xA7}, {0xD9,0x58},
- {0xD9,0x6F}, {0xDD,0x78}, {0xD9,0x60}, {0xD9,0x5B},
- {0xB4,0xA9}, {0xD9,0x61}, {0xD9,0x5E}, {0xFC,0xB6},
- {0xB4,0xAE}, {0x8D,0xA3}, {0x9E,0x4B}, {0x9E,0x4D},
- {0xB7,0x70}, {0x8D,0xA4}, {0xDD,0x7C}, {0xDD,0xB1},
- {0xDD,0xB6}, {0xDD,0xAA}, {0xB7,0x6C}, {0xDD,0xBB},
- {0xB7,0x69}, {0xDD,0x7A}, {0xDD,0x7B}, {0xB7,0x62},
- {0xB7,0x6B}, {0xDD,0xA4}, {0xB7,0x6E}, {0xB7,0x6F},
- {0xDD,0xA5}, {0xDD,0xB2}, {0xDD,0xB8}, {0xB7,0x6A},
- {0xB7,0x64}, {0xDD,0xA3}, {0xDD,0x7D}, {0xDD,0xBA},
- {0xDD,0xA8}, {0xDD,0xA9}, {0xDD,0x7E}, {0xDD,0xB4},
- {0xDD,0xAB}, {0xDD,0xB5}, {0xDD,0xAD}, {0xB7,0x65},
- {0xE1,0xD9}, {0xB7,0x68}, {0xB7,0x66}, {0xDD,0xB9},
- {0xDD,0xB0}, {0xDD,0xAC}, {0x8A,0xFD}, {0xDD,0xA1},
- {0xBA,0x53}, {0xDD,0xAF}, {0xB7,0x6D}, {0xDD,0xA7},
- {0xFC,0xB5}, {0xDD,0xA6}, {0xFC,0xC3}, {0x93,0xB2},
- {0xB7,0x67}, {0xB7,0x63}, {0xE1,0xEE}, {0xDD,0xB3},
- {0xDD,0xAE}, {0xDD,0xA2}, {0xE1,0xE9}, {0xE1,0xDA},
- {0xE1,0xE5}, {0xE1,0xEC}, {0xBA,0x51}, {0xB4,0xAC},
- {0xE1,0xEA}, {0xBA,0x4C}, {0xBA,0x4B}, {0xE1,0xF1},
- {0x8D,0xA5}, {0xE1,0xDB}, {0xE1,0xE8}, {0xE1,0xDC},
- {0xE1,0xE7}, {0xBA,0x4F}, {0xE1,0xEB}, {0xD9,0x62},
- {0xE1,0xF2}, {0xE1,0xE3}, {0xBA,0x52}, {0xE5,0xBA},
- {0xBC,0xAF}, {0xE1,0xF0}, {0xE1,0xEF}, {0xBA,0x54},
- {0xE5,0xAD}, {0xBC,0xB0}, {0xE5,0xAE}, {0x93,0xA1},
- {0xE1,0xDF}, {0xE1,0xE0}, {0xE1,0xDD}, {0xE1,0xE2},
- {0xE1,0xDE}, {0xE1,0xF3}, {0xBA,0x4E}, {0xBC,0xB1},
- {0xBA,0x50}, {0xBA,0x55}, {0x8A,0xC6}, {0xE1,0xE1},
- {0xE1,0xED}, {0xE1,0xE6}, {0xE5,0xB1}, {0xBA,0x4A},
- {0xBC,0xB4}, {0xE9,0xAA}, {0xE5,0xB6}, {0xE5,0xB5},
- {0xE5,0xB7}, {0x8A,0x5B}, {0xE5,0xB4}, {0xBC,0xB5},
- {0x89,0x4D}, {0xBC,0xBB}, {0xBC,0xB8}, {0xBC,0xB9},
- {0xE5,0xAF}, {0xE5,0xB2}, {0xE5,0xBC}, {0xBC,0xC1},
- {0xBC,0xBF}, {0xE5,0xB3}, {0xD9,0x5A}, {0xBC,0xB2},
- {0xE5,0xB9}, {0xE5,0xB0}, {0xBC,0xC2}, {0xE5,0xB8},
- {0xBA,0x4D}, {0xBC,0xB7}, {0xE1,0xE4}, {0xBC,0xBA},
- {0xBC,0xBE}, {0xBC,0xC0}, {0xBC,0xBD}, {0xBC,0xBC},
- {0xFE,0xD4}, {0xBC,0xB6}, {0xE5,0xBB}, {0xBC,0xB3},
- {0xBC,0xC3}, {0x8A,0x78}, {0x93,0xAB}, {0xBE,0xD8},
- {0xBE,0xD9}, {0xE9,0xA9}, {0xBE,0xE2}, {0xBE,0xDF},
- {0x8D,0xA7}, {0xBE,0xD6}, {0xBE,0xDD}, {0xE9,0xAB},
- {0xBE,0xDB}, {0xBE,0xD5}, {0xBE,0xDC}, {0xE9,0xA8},
- {0xC0,0xBB}, {0xBE,0xD7}, {0xBE,0xDE}, {0xC0,0xBA},
- {0xE9,0xA7}, {0xE9,0xA6}, {0xBE,0xE0}, {0x9F,0x45},
- {0xBE,0xE1}, {0xE9,0xA5}, {0xE9,0xA4}, {0xC0,0xBC},
- {0xE9,0xAE}, {0xBE,0xDA}, {0xE9,0xAC}, {0x8A,0x56},
- {0xC0,0xBD}, {0xFC,0xBF}, {0xC0,0xC2}, {0xEC,0xEA},
- {0xEC,0xEC}, {0xFC,0xC0}, {0xC0,0xBF}, {0x8E,0xE6},
- {0xEC,0xED}, {0xEC,0xE9}, {0x8A,0xA4}, {0xEC,0xEB},
- {0xC0,0xC0}, {0xC0,0xC3}, {0xEC,0xE8}, {0xC0,0xBE},
- {0xC0,0xC1}, {0xC2,0x59}, {0xE9,0xAD}, {0xC2,0x58},
- {0xC2,0x5E}, {0xEF,0xD4}, {0xC2,0x5C}, {0xC2,0x5D},
- {0xEF,0xD7}, {0xEF,0xD3}, {0xC2,0x5A}, {0xEF,0xD1},
- {0xC3,0x6B}, {0xEF,0xD5}, {0xEF,0xD6}, {0xEF,0xD2},
- {0xC2,0x5B}, {0xF2,0x42}, {0xF2,0x45}, {0x89,0x43},
- {0xF2,0x46}, {0xF2,0x44}, {0xF2,0x47}, {0xC3,0x6C},
- {0xF2,0x43}, {0x93,0xF3}, {0xF4,0x4E}, {0xC4,0x64},
- {0xF4,0x4D}, {0xF4,0x4C}, {0xF4,0x4B}, {0xC4,0x63},
- {0xC4,0x65}, {0xF5,0xCD}, {0xC4,0xE2}, {0xC4,0xE1},
- {0xFC,0xAB}, {0x9E,0xA2}, {0xF6,0xE1}, {0xF6,0xE0},
- {0xF6,0xE3}, {0xC5,0xCB}, {0xC5,0x75}, {0xF7,0xDD},
- {0xF6,0xE2}, {0xF7,0xDC}, {0xC5,0xCD}, {0xC5,0xCC},
- {0xC5,0xF3}, {0xF8,0xA9}, {0xF8,0xEF}, {0xA4,0xE4},
- {0x9D,0xC7}, {0xD9,0x72}, {0xE9,0xAF}, {0xC6,0xD2},
- {0x8B,0xCE}, {0xA6,0xAC}, {0xCA,0xF7}, {0xA7,0xF1},
- {0xA7,0xEF}, {0xA7,0xF0}, {0xCC,0xC1}, {0xA9,0xF1},
- {0xAC,0x46}, {0xCE,0xE7}, {0xCE,0xE8}, {0xAC,0x47},
- {0xD1,0xCE}, {0xAE,0xC4}, {0xAE,0xC5}, {0xD1,0xCD},
- {0xFC,0xC5}, {0xB1,0xD3}, {0xB1,0xCF}, {0xD5,0xA7},
- {0xB1,0xD6}, {0xB1,0xD5}, {0xB1,0xCE}, {0xB1,0xD1},
- {0xB1,0xD4}, {0xB1,0xD0}, {0xD9,0x76}, {0xB1,0xCD},
- {0xB4,0xAF}, {0xFC,0xCB}, {0xB4,0xB1}, {0xB4,0xB2},
- {0xD9,0x75}, {0xD9,0x78}, {0xB4,0xB0}, {0xD9,0x73},
- {0xD9,0x77}, {0xD9,0x74}, {0x93,0xB3}, {0xB7,0x71},
- {0xFC,0xCA}, {0xDD,0xBC}, {0xBA,0x56}, {0xE1,0xF4},
- {0xBE,0xE3}, {0xBC,0xC4}, {0xE5,0xBD}, {0xBC,0xC5},
- {0xBC,0xC6}, {0xE5,0xBF}, {0xE5,0xBE}, {0xE5,0xC0},
- {0xE9,0xB1}, {0xE9,0xB0}, {0xEC,0xEF}, {0xEC,0xEE},
- {0xC0,0xC4}, {0xC0,0xC5}, {0xF2,0x48}, {0xFC,0xC9},
- {0x8D,0xAC}, {0xA4,0xE5}, {0xFB,0xC6}, {0x89,0x67},
- {0x8C,0x7E}, {0xD9,0x79}, {0xB4,0xB4}, {0xB4,0xB3},
- {0xDD,0xBD}, {0xEF,0xD8}, {0xC4,0xE3}, {0xF7,0xDE},
- {0xA4,0xE6}, {0xAE,0xC6}, {0xB1,0xD8}, {0xB1,0xD7},
- {0xD9,0x7A}, {0xD9,0x7B}, {0xB7,0x72}, {0xE1,0xF5},
- {0xBA,0x57}, {0xE9,0xB2}, {0xA4,0xE7}, {0xA5,0xB8},
- {0xA9,0xF2}, {0xCC,0xC2}, {0xCE,0xE9}, {0xAC,0x48},
- {0xB1,0xD9}, {0xD9,0x7C}, {0xB4,0xB5}, {0xB7,0x73},
- {0xE5,0xC1}, {0xE5,0xC2}, {0xFC,0xCD}, {0xEC,0xF0},
- {0xC2,0x5F}, {0xF8,0xF0}, {0xA4,0xE8}, {0xCC,0xC3},
- {0xA9,0xF3}, {0xAC,0x49}, {0x9C,0xF3}, {0xCE,0xEA},
- {0xAE,0xC7}, {0xD1,0xD2}, {0xD1,0xD0}, {0xD1,0xD1},
- {0xAE,0xC8}, {0xD1,0xCF}, {0xB1,0xDB}, {0xB1,0xDC},
- {0xD5,0xA8}, {0xB1,0xDD}, {0xB1,0xDA}, {0xD9,0x7D},
- {0xFC,0xD0}, {0xD9,0x7E}, {0xDD,0xBE}, {0x95,0xBB},
- {0xBA,0x59}, {0xBA,0x58}, {0xEC,0xF1}, {0xEF,0xD9},
- {0xF2,0x4A}, {0xF2,0x49}, {0xF4,0x4F}, {0xFC,0xD3},
- {0xC9,0x5E}, {0xAC,0x4A}, {0xFC,0xD4}, {0xA4,0xE9},
- {0xA5,0xB9}, {0xA6,0xAE}, {0xA6,0xAD}, {0xA6,0xAF},
- {0xA6,0xB0}, {0xC9,0xEE}, {0xC9,0xED}, {0xCA,0xF8},
- {0xA7,0xF2}, {0xCA,0xFB}, {0xCA,0xFA}, {0xCA,0xF9},
- {0xCA,0xFC}, {0xA9,0xF4}, {0xCC,0xC9}, {0xCC,0xC5},
- {0xCC,0xCE}, {0x8D,0xAE}, {0xA9,0xFB}, {0xA9,0xF9},
- {0xCC,0xCA}, {0xCC,0xC6}, {0xCC,0xCD}, {0xA9,0xF8},
- {0xAA,0x40}, {0xCC,0xC8}, {0xCC,0xC4}, {0xA9,0xFE},
- {0xCC,0xCB}, {0xA9,0xF7}, {0xCC,0xCC}, {0xA9,0xFA},
- {0xA9,0xFC}, {0xCC,0xD0}, {0xCC,0xCF}, {0xCC,0xC7},
- {0xA9,0xF6}, {0xA9,0xF5}, {0xA9,0xFD}, {0xFC,0xD7},
- {0xCE,0xEF}, {0xCE,0xF5}, {0x93,0xDB}, {0xAC,0x50},
- {0xAC,0x4D}, {0xCE,0xEC}, {0xCE,0xF1}, {0xFE,0x63},
- {0xAC,0x53}, {0xAC,0x4B}, {0xCE,0xF0}, {0xAC,0x4E},
- {0xAC,0x51}, {0xCE,0xF3}, {0xAC,0x4C}, {0xCE,0xF8},
- {0xAC,0x4F}, {0x93,0xD5}, {0xAC,0x52}, {0xCE,0xED},
- {0xCE,0xF2}, {0xCE,0xF6}, {0xCE,0xEE}, {0xCE,0xEB},
- {0xCE,0xF7}, {0xCE,0xF4}, {0xAE,0xD0}, {0xAE,0xC9},
- {0xAE,0xCC}, {0xFC,0xDA}, {0xAE,0xCF}, {0xD1,0xD5},
- {0x9B,0x71}, {0xAE,0xCA}, {0xD1,0xD3}, {0xFC,0xDD},
- {0xAE,0xCE}, {0xAE,0xCB}, {0xD1,0xD6}, {0xAE,0xCD},
- {0x8D,0xAF}, {0xFA,0xF2}, {0xD5,0xAC}, {0xB1,0xDF},
- {0xD5,0xAB}, {0xD5,0xAD}, {0xB1,0xDE}, {0xB1,0xE3},
- {0xD1,0xD4}, {0xD5,0xAA}, {0xD5,0xAE}, {0x93,0xD8},
- {0xB1,0xE0}, {0xD5,0xA9}, {0xB1,0xE2}, {0xFC,0xDF},
- {0xB1,0xE1}, {0xD9,0xA7}, {0x93,0xD3}, {0xD9,0xA2},
- {0xB4,0xB6}, {0xB4,0xBA}, {0xB4,0xB7}, {0xD9,0xA5},
- {0xD9,0xA8}, {0xFC,0xE1}, {0xB4,0xB8}, {0xB4,0xB9},
- {0xB4,0xBE}, {0xDD,0xC7}, {0xD9,0xA6}, {0xB4,0xBC},
- {0xD9,0xA3}, {0xD9,0xA1}, {0x8E,0x76}, {0xB4,0xBD},
- {0xD9,0xA4}, {0xB7,0x79}, {0xFC,0x62}, {0xDD,0xBF},
- {0xB7,0x76}, {0xB7,0x77}, {0xB7,0x75}, {0xDD,0xC4},
- {0xDD,0xC3}, {0xDD,0xC0}, {0xB7,0x7B}, {0x93,0xD1},
- {0xDD,0xC2}, {0xB4,0xBB}, {0x8D,0xB1}, {0xDD,0xC6},
- {0xDD,0xC1}, {0xB7,0x78}, {0xB7,0x74}, {0xB7,0x7A},
- {0xDD,0xC5}, {0x98,0x59}, {0xBA,0x5C}, {0xE1,0xF8},
- {0xE1,0xF7}, {0xE1,0xF6}, {0xBA,0x5A}, {0xFB,0x52},
- {0xBA,0x5B}, {0xE5,0xC5}, {0xE5,0xC8}, {0xBC,0xC8},
- {0xFB,0x53}, {0xBC,0xC7}, {0xE5,0xC9}, {0xE5,0xC4},
- {0xBC,0xCA}, {0xE5,0xC6}, {0xFB,0x4D}, {0xBC,0xC9},
- {0xE5,0xC3}, {0x9C,0xBF}, {0xE5,0xC7}, {0xBE,0xE9},
- {0xBE,0xE6}, {0xE9,0xBB}, {0xE9,0xBA}, {0xE9,0xB9},
- {0xE9,0xB4}, {0x9B,0x72}, {0xE9,0xB5}, {0xBE,0xE7},
- {0xBE,0xE4}, {0xBE,0xE8}, {0xE9,0xB3}, {0xBE,0xE5},
- {0xE9,0xB6}, {0xE9,0xB7}, {0xE9,0xBC}, {0xFB,0x50},
- {0x93,0xBE}, {0xE9,0xB8}, {0xEC,0xF2}, {0xC0,0xC7},
- {0xEF,0xDC}, {0xC0,0xC6}, {0xEF,0xDA}, {0xEF,0xDB},
- {0xC2,0x60}, {0xC3,0x6E}, {0xF2,0x4B}, {0xC3,0x6D},
- {0xF4,0x51}, {0xF4,0x52}, {0xC4,0x66}, {0xF4,0x50},
- {0xC4,0xE4}, {0xF7,0xDF}, {0xC5,0xCE}, {0xF8,0xAA},
- {0xF8,0xAB}, {0xA4,0xEA}, {0x9D,0xF1}, {0xA6,0xB1},
- {0xA6,0xB2}, {0xA7,0xF3}, {0xCC,0xD1}, {0xAC,0x54},
- {0xAE,0xD1}, {0xB1,0xE4}, {0xB0,0xD2}, {0xB4,0xBF},
- {0xB4,0xC0}, {0xB3,0xCC}, {0xD9,0xA9}, {0xFC,0xEB},
- {0xB7,0x7C}, {0xE1,0xFA}, {0xE1,0xF9}, {0xA4,0xEB},
- {0xA6,0xB3}, {0xCC,0xD2}, {0xAA,0x42}, {0xA0,0xBB},
- {0xAA,0x41}, {0x9B,0x7E}, {0xCE,0xF9}, {0xCE,0xFA},
- {0xD1,0xD7}, {0xD1,0xD8}, {0xAE,0xD2}, {0xAE,0xD3},
- {0x8D,0xB3}, {0xAE,0xD4}, {0xD5,0xAF}, {0x8C,0x52},
- {0xB1,0xE6}, {0xB4,0xC2}, {0x9A,0xE8}, {0xB4,0xC1},
- {0xDD,0xC8}, {0xDF,0x7A}, {0xE1,0xFB}, {0xE9,0xBD},
- {0x8E,0xDC}, {0xC2,0x61}, {0xC4,0x67}, {0xA4,0xEC},
- {0xA5,0xBC}, {0xA5,0xBD}, {0xA5,0xBB}, {0xA5,0xBE},
- {0xA5,0xBA}, {0xA6,0xB6}, {0xC9,0xF6}, {0xA6,0xB5},
- {0xA6,0xB7}, {0x9C,0xF9}, {0xC9,0xF1}, {0xC9,0xF0},
- {0xC9,0xF3}, {0xC9,0xF2}, {0xC9,0xF5}, {0xA6,0xB4},
- {0xC9,0xEF}, {0xC9,0xF4}, {0xFA,0x50}, {0xCA,0xFD},
- {0xA7,0xFD}, {0xCA,0xFE}, {0xCB,0x43}, {0xA7,0xFC},
- {0xCB,0x47}, {0xCB,0x42}, {0xCB,0x45}, {0xA7,0xF5},
- {0xA7,0xF6}, {0xA7,0xF7}, {0xA7,0xF8}, {0xA8,0x40},
- {0xCB,0x41}, {0xA7,0xFA}, {0xA8,0x41}, {0xCB,0x40},
- {0xCB,0x46}, {0xA7,0xF9}, {0xCB,0x44}, {0xA7,0xFB},
- {0xA7,0xF4}, {0xA7,0xFE}, {0x98,0xE7}, {0xFC,0xF3},
- {0xFC,0xF2}, {0xAA,0x57}, {0x8C,0xCA}, {0xCC,0xD4},
- {0xAA,0x43}, {0xAA,0x4D}, {0xAA,0x4E}, {0xAA,0x46},
- {0xAA,0x58}, {0xAA,0x48}, {0xCC,0xDC}, {0xAA,0x53},
- {0xCC,0xD7}, {0xAA,0x49}, {0xCC,0xE6}, {0xCC,0xE7},
- {0xCC,0xDF}, {0xCC,0xD8}, {0xAA,0x56}, {0xCC,0xE4},
- {0xAA,0x51}, {0xAA,0x4F}, {0xCC,0xE5}, {0xCC,0xE3},
- {0xCC,0xDB}, {0xCC,0xD3}, {0xCC,0xDA}, {0xAA,0x4A},
- {0xAA,0x50}, {0xAA,0x44}, {0xCC,0xDE}, {0xCC,0xDD},
- {0xCC,0xD5}, {0x93,0xE5}, {0xAA,0x52}, {0xCC,0xE1},
- {0xCC,0xD6}, {0xAA,0x55}, {0xCC,0xE8}, {0xAA,0x45},
- {0xAA,0x4C}, {0xCC,0xD9}, {0xCC,0xE2}, {0xAA,0x54},
- {0xAA,0x47}, {0xAA,0x4B}, {0xCC,0xE0}, {0x9A,0x59},
- {0x8D,0xB5}, {0xFD,0x4D}, {0xCF,0x5B}, {0xAC,0x5C},
- {0xAC,0x69}, {0xFD,0x5E}, {0xCF,0x56}, {0xCF,0x4C},
- {0xAC,0x62}, {0xCF,0x4A}, {0xAC,0x5B}, {0xCF,0x45},
- {0xAC,0x65}, {0xCF,0x52}, {0xCE,0xFE}, {0xCF,0x41},
- {0x8F,0x7D}, {0xCF,0x44}, {0xCE,0xFB}, {0xCF,0x51},
- {0xCF,0x61}, {0xAC,0x60}, {0xCF,0x46}, {0xCF,0x58},
- {0xCE,0xFD}, {0xCF,0x5F}, {0xCF,0x60}, {0xCF,0x63},
- {0xCF,0x5A}, {0xCF,0x4B}, {0xCF,0x53}, {0xAC,0x66},
- {0xAC,0x59}, {0xAC,0x61}, {0xAC,0x6D}, {0xAC,0x56},
- {0xAC,0x58}, {0x95,0x47}, {0xFC,0xF6}, {0xCF,0x43},
- {0xAC,0x6A}, {0xAC,0x63}, {0xCF,0x5D}, {0xCF,0x40},
- {0xAC,0x6C}, {0xAC,0x67}, {0xCF,0x49}, {0xAC,0x6B},
- {0xCF,0x50}, {0xCF,0x48}, {0xAC,0x64}, {0xCF,0x5C},
- {0xCF,0x54}, {0xAC,0x5E}, {0xCF,0x62}, {0xCF,0x47},
- {0xAC,0x5A}, {0xCF,0x59}, {0xCF,0x4F}, {0xAC,0x5F},
- {0xCF,0x55}, {0xAC,0x57}, {0xCE,0xFC}, {0xAC,0x68},
- {0xAE,0xE3}, {0xAC,0x5D}, {0xCF,0x4E}, {0xCF,0x4D},
- {0xCF,0x42}, {0x92,0x50}, {0xCF,0x5E}, {0xCF,0x57},
- {0x89,0x68}, {0xAC,0x55}, {0x8D,0xB6}, {0xFC,0xFB},
- {0xA0,0x7D}, {0x98,0xFC}, {0x89,0x69}, {0xFE,0x4F},
- {0x92,0x56}, {0xD1,0xEC}, {0xAE,0xEA}, {0xD1,0xED},
- {0xD1,0xE1}, {0xAE,0xDF}, {0xAE,0xEB}, {0xD1,0xDA},
- {0xFA,0xC9}, {0xD1,0xE3}, {0xD1,0xEB}, {0x93,0xE8},
- {0xD1,0xD9}, {0xD1,0xF4}, {0xAE,0xD5}, {0xFC,0xF8},
- {0xD1,0xF3}, {0xD1,0xEE}, {0xD1,0xEF}, {0xAE,0xDD},
- {0xAE,0xE8}, {0xD1,0xE5}, {0xD1,0xE6}, {0xD1,0xF0},
- {0xD1,0xE7}, {0xD1,0xE2}, {0xD1,0xDC}, {0xD1,0xDD},
- {0xD1,0xEA}, {0xD1,0xE4}, {0x9C,0xE3}, {0xFD,0xA9},
- {0xAE,0xD6}, {0xAE,0xDA}, {0xD1,0xF2}, {0xD1,0xDE},
- {0xAE,0xE6}, {0xAE,0xE2}, {0xFC,0x44}, {0xAE,0xE5},
- {0xAE,0xEC}, {0xAE,0xDB}, {0xAE,0xE7}, {0xD1,0xE9},
- {0xAE,0xE9}, {0xAE,0xD8}, {0x96,0x40}, {0xAE,0xD7},
- {0xD1,0xDB}, {0x8D,0xB8}, {0xD1,0xDF}, {0xAE,0xE0},
- {0xD1,0xF1}, {0xD1,0xE8}, {0xD1,0xE0}, {0xAE,0xE4},
- {0xAE,0xE1}, {0xAE,0xD9}, {0xAE,0xDC}, {0x9B,0x4A},
- {0x8F,0xB9}, {0xFC,0xFE}, {0x89,0x6A}, {0xD5,0xC4},
- {0xD5,0xB4}, {0xD5,0xB5}, {0xD5,0xB9}, {0xD5,0xC8},
- {0xD5,0xC5}, {0xD5,0xBE}, {0xD5,0xBD}, {0xB1,0xED},
- {0xD5,0xC1}, {0xD5,0xD0}, {0xD5,0xB0}, {0xD5,0xD1},
- {0xD5,0xC3}, {0xD5,0xD5}, {0xD5,0xC9}, {0xB1,0xEC},
- {0xD5,0xC7}, {0xB1,0xE7}, {0xB1,0xFC}, {0xB1,0xF2},
- {0x8D,0xB9}, {0xB1,0xF6}, {0xB1,0xF5}, {0xD5,0xB1},
- {0x91,0x7E}, {0xD5,0xCE}, {0xD5,0xD4}, {0xD5,0xCC},
- {0xD5,0xD3}, {0xD5,0xC0}, {0xD5,0xB2}, {0xD5,0xD2},
- {0xD5,0xC2}, {0xB1,0xEA}, {0xB1,0xF7}, {0xD5,0xCB},
- {0xB1,0xF0}, {0x93,0xF4}, {0xD5,0xCA}, {0xD5,0xB3},
- {0xB1,0xF8}, {0xB1,0xFA}, {0xD5,0xCD}, {0xB1,0xFB},
- {0xB1,0xE9}, {0xD5,0xBA}, {0xD5,0xCF}, {0xFB,0x7C},
- {0xB1,0xEF}, {0xB1,0xF9}, {0xD5,0xBC}, {0xD5,0xC6},
- {0xD5,0xB7}, {0xD5,0xBB}, {0xB1,0xF4}, {0xD5,0xB6},
- {0xB1,0xE8}, {0xB1,0xF1}, {0xB1,0xEE}, {0xD5,0xBF},
- {0xAE,0xDE}, {0xD9,0xC0}, {0xB1,0xEB}, {0x93,0xE7},
- {0x97,0xEF}, {0xFE,0x4A}, {0xFD,0x45}, {0xB1,0xF3},
- {0x96,0xA5}, {0xD9,0xC3}, {0xD9,0xD9}, {0xD9,0xCE},
- {0xB4,0xD6}, {0xFE,0xE0}, {0xB4,0xD1}, {0xD9,0xBD},
- {0xB4,0xD2}, {0xD9,0xCD}, {0xD9,0xC6}, {0xD9,0xD3},
- {0xB4,0xCE}, {0xD9,0xAB}, {0xD9,0xD5}, {0xB4,0xC4},
- {0xD9,0xB3}, {0xB4,0xC7}, {0xB4,0xC6}, {0xB4,0xD7},
- {0xD9,0xAD}, {0xD9,0xCF}, {0xD9,0xD0}, {0xB4,0xC9},
- {0xB4,0xC5}, {0xD9,0xBB}, {0xB4,0xD0}, {0xD9,0xB6},
- {0xD9,0xD1}, {0xB4,0xCC}, {0xD9,0xC9}, {0xD9,0xD6},
- {0xD9,0xB0}, {0xD9,0xB5}, {0xD9,0xAF}, {0xB4,0xCB},
- {0xD9,0xC2}, {0xDD,0xDE}, {0xD9,0xB1}, {0xB4,0xCF},
- {0xD9,0xBA}, {0xD9,0xD2}, {0xB4,0xCA}, {0xD9,0xB7},
- {0xD9,0xB4}, {0xD9,0xC5}, {0xB4,0xCD}, {0xB4,0xC3},
- {0xB4,0xD9}, {0xD9,0xC8}, {0xD9,0xC7}, {0xFD,0x48},
- {0xFD,0x47}, {0xFE,0xF2}, {0xFE,0x6A}, {0xD9,0xAC},
- {0xB4,0xC8}, {0xD9,0xD4}, {0xD9,0xBC}, {0xD9,0xBE},
- {0x8D,0xBD}, {0xD9,0xCB}, {0xD9,0xCA}, {0xD9,0xAA},
- {0xB4,0xD3}, {0xB4,0xD5}, {0xD9,0xB2}, {0xD9,0xB9},
- {0xD9,0xC1}, {0xB4,0xD4}, {0xD9,0xB8}, {0xD9,0xC4},
- {0xD9,0xD7}, {0xD9,0xCC}, {0x9B,0xA1}, {0x8C,0xA2},
- {0x9A,0xB7}, {0x8E,0xFC}, {0xD9,0xD8}, {0xD9,0xAE},
- {0x9F,0xA1}, {0xDD,0xF2}, {0xB7,0xA6}, {0xDD,0xF0},
- {0xDD,0xDB}, {0xDD,0xE0}, {0xDD,0xD9}, {0xFD,0x51},
- {0xDD,0xEC}, {0xDD,0xCB}, {0xDD,0xD2}, {0xDD,0xEA},
- {0xDD,0xF4}, {0xDD,0xDC}, {0xFA,0xAD}, {0xDD,0xCF},
- {0xDD,0xE2}, {0xDD,0xE7}, {0xDD,0xD3}, {0x8D,0xBE},
- {0xDD,0xE4}, {0xDD,0xD0}, {0x89,0xA4}, {0xDD,0xD7},
- {0xDD,0xD8}, {0xB7,0xA8}, {0xDD,0xEB}, {0xDD,0xE9},
- {0xDD,0xCC}, {0xDD,0xEE}, {0xDD,0xEF}, {0xDD,0xF1},
- {0xB7,0xAC}, {0xB7,0xA4}, {0x9A,0xD9}, {0xD5,0xB8},
- {0xDD,0xD4}, {0xDD,0xE6}, {0xDD,0xD5}, {0xB7,0xA1},
- {0xB7,0xB1}, {0xDD,0xED}, {0xB7,0xAF}, {0xB7,0xAB},
- {0xDD,0xCA}, {0xB7,0xA3}, {0xFD,0x4E}, {0xDD,0xCD},
- {0xB7,0xB0}, {0x8D,0xC0}, {0xDD,0xDD}, {0xDD,0xC9},
- {0x97,0xF0}, {0xB7,0xA9}, {0xDD,0xE1}, {0xDD,0xD1},
- {0xB7,0xAA}, {0xDD,0xDA}, {0xB7,0x7E}, {0xB4,0xD8},
- {0xDD,0xE3}, {0xD9,0xBF}, {0xDD,0xCE}, {0x93,0xB4},
- {0xFD,0x44}, {0xDD,0xE8}, {0xB7,0xA5}, {0xDD,0xE5},
- {0xB7,0xA2}, {0xDD,0xDF}, {0xB7,0xAD}, {0xDD,0xD6},
- {0xDD,0xF3}, {0x9F,0xA7}, {0xB7,0xA7}, {0xDE,0xC6},
- {0x8D,0xC2}, {0xB7,0xAE}, {0x99,0xB6}, {0xE2,0x4A},
- {0xE2,0x48}, {0xE2,0x5E}, {0xE2,0x46}, {0xE2,0x58},
- {0xB7,0x7D}, {0xBA,0x5F}, {0xE2,0x42}, {0xE2,0x5D},
- {0xFD,0x52}, {0xE2,0x47}, {0xE2,0x55}, {0xBA,0x64},
- {0xBA,0x5D}, {0xE2,0x5B}, {0x8D,0xC1}, {0xE2,0x40},
- {0xE2,0x5A}, {0x8E,0x46}, {0xBA,0x6F}, {0xE2,0x51},
- {0xE2,0x61}, {0xBA,0x6D}, {0xE2,0x49}, {0xBA,0x5E},
- {0xE2,0x4B}, {0xE2,0x59}, {0xBA,0x67}, {0xE2,0x44},
- {0xBA,0x6B}, {0xBA,0x61}, {0xE2,0x4D}, {0xE2,0x43},
- {0xE1,0xFC}, {0xA0,0xD1}, {0xE2,0x57}, {0xBA,0x68},
- {0xE2,0x60}, {0xE1,0xFD}, {0xBA,0x65}, {0xE2,0x53},
- {0xBA,0x66}, {0xE2,0x45}, {0xE2,0x50}, {0xE2,0x4C},
- {0xE2,0x4E}, {0x9F,0xCA}, {0xBA,0x60}, {0xE2,0x5F},
- {0xBA,0x6E}, {0xE2,0x4F}, {0xE2,0x62}, {0xE1,0xFE},
- {0xE2,0x54}, {0xBA,0x63}, {0xBA,0x6C}, {0xBA,0x6A},
- {0xE2,0x41}, {0xE2,0x56}, {0xBA,0x69}, {0x92,0xCF},
- {0xBA,0x62}, {0xE2,0x52}, {0x9C,0xF4}, {0x8D,0xC4},
- {0xE2,0x5C}, {0xFD,0x41}, {0xE5,0xD5}, {0xE5,0xD1},
- {0xE5,0xCD}, {0xE5,0xE1}, {0xE5,0xDE}, {0xBC,0xCD},
- {0x9B,0x4C}, {0xE5,0xE5}, {0xE5,0xD4}, {0xBC,0xD8},
- {0xE5,0xDB}, {0xE5,0xD0}, {0xE5,0xDA}, {0xBC,0xD5},
- {0xE5,0xEE}, {0xE5,0xEB}, {0xE5,0xDD}, {0xE5,0xCE},
- {0xFD,0x57}, {0xFC,0xEF}, {0xE5,0xE2}, {0xE5,0xE4},
- {0xBC,0xD1}, {0xE5,0xD8}, {0xE5,0xD3}, {0xE5,0xCA},
- {0xBC,0xCE}, {0xBC,0xD6}, {0x9C,0xDE}, {0xE5,0xE7},
- {0xBC,0xD7}, {0xE5,0xCB}, {0xE5,0xED}, {0xE5,0xE0},
- {0xE5,0xE6}, {0xBC,0xD4}, {0xFD,0x42}, {0x98,0x6C},
- {0xE5,0xE3}, {0xE5,0xEA}, {0xBC,0xD9}, {0xBC,0xD3},
- {0xE5,0xDC}, {0xE5,0xCF}, {0xE5,0xEF}, {0xE5,0xCC},
- {0xE5,0xE8}, {0xBC,0xD0}, {0x97,0xF9}, {0xE5,0xD6},
- {0x95,0x58}, {0xE5,0xD7}, {0xBC,0xCF}, {0xBC,0xCC},
- {0xE5,0xD2}, {0xBC,0xD2}, {0xBC,0xCB}, {0xE5,0xE9},
- {0xE5,0xEC}, {0xE5,0xD9}, {0xE9,0xCA}, {0x98,0x5E},
- {0xFE,0x7B}, {0x94,0xCD}, {0xE9,0xC2}, {0x93,0xEE},
- {0xE9,0xBE}, {0xBE,0xF6}, {0xBE,0xEB}, {0xBE,0xF0},
- {0xBE,0xEC}, {0xE9,0xCC}, {0xE9,0xD7}, {0xBE,0xEA},
- {0xE9,0xC4}, {0xE9,0xCD}, {0xE5,0xDF}, {0xE9,0xCE},
- {0x8C,0xA3}, {0xBE,0xF1}, {0xFD,0x5A}, {0xE9,0xDD},
- {0xBE,0xF5}, {0xBE,0xF8}, {0xE9,0xC0}, {0xBE,0xF4},
- {0x93,0xF5}, {0xE9,0xDB}, {0xE9,0xDC}, {0xE9,0xD2},
- {0xE9,0xD1}, {0xE9,0xC9}, {0x93,0xEF}, {0x8E,0xEA},
- {0xE9,0xD3}, {0xE9,0xDA}, {0xE9,0xD9}, {0x8F,0x5B},
- {0xBE,0xEF}, {0xBE,0xED}, {0xE9,0xCB}, {0xE9,0xC8},
- {0xE9,0xC5}, {0xE9,0xD8}, {0xBE,0xF7}, {0xE9,0xD6},
- {0xBE,0xF3}, {0xBE,0xF2}, {0x8C,0x5E}, {0xE9,0xD0},
- {0x8D,0xC6}, {0xE9,0xBF}, {0xE9,0xC1}, {0xE9,0xC3},
- {0xE9,0xD5}, {0xE9,0xCF}, {0xBE,0xEE}, {0xE9,0xC6},
- {0xE9,0xD4}, {0x8D,0xC8}, {0x8D,0xC7}, {0xE9,0xC7},
- {0x93,0xF7}, {0xC0,0xCF}, {0xED,0x45}, {0xC0,0xC8},
- {0xEC,0xF5}, {0x8D,0xC9}, {0xED,0x41}, {0xC0,0xCA},
- {0xED,0x48}, {0xEC,0xFC}, {0xEC,0xF7}, {0xFB,0xF2},
- {0xED,0x49}, {0xEC,0xF3}, {0xEC,0xFE}, {0x96,0x70},
- {0xC0,0xD1}, {0xED,0x44}, {0xED,0x4A}, {0xEC,0xFD},
- {0xC0,0xC9}, {0xED,0x40}, {0xEC,0xF4}, {0xC0,0xD0},
- {0x8D,0xCB}, {0xED,0x47}, {0xEC,0xF9}, {0xC0,0xCC},
- {0xFD,0x5C}, {0xEC,0xFB}, {0xEC,0xF8}, {0xC0,0xD2},
- {0xEC,0xFA}, {0xC0,0xCB}, {0xC0,0xCE}, {0xED,0x43},
- {0xEC,0xF6}, {0xED,0x46}, {0x8F,0x65}, {0xED,0x42},
- {0x8D,0xCD}, {0xC2,0x63}, {0xEF,0xE7}, {0xC2,0x68},
- {0xC2,0x69}, {0x9D,0xA8}, {0x94,0xF9}, {0xC2,0x62},
- {0xEF,0xE6}, {0x8D,0xCE}, {0xEF,0xE3}, {0xEF,0xE4},
- {0xC2,0x66}, {0xEF,0xDE}, {0xEF,0xE2}, {0xC2,0x65},
- {0xEF,0xDF}, {0x93,0xEA}, {0xC2,0x67}, {0xC2,0x64},
- {0xEF,0xDD}, {0xEF,0xE1}, {0xEF,0xE5}, {0xFD,0x5F},
- {0x93,0xF0}, {0x9F,0xB6}, {0xF2,0x51}, {0xF2,0x4E},
- {0xF2,0x57}, {0xF2,0x56}, {0xF2,0x54}, {0xF2,0x4F},
- {0xC3,0x72}, {0x8D,0xCF}, {0x97,0x63}, {0xF2,0x50},
- {0xC3,0x71}, {0xC0,0xCD}, {0xF2,0x53}, {0xC3,0x70},
- {0xF2,0x58}, {0xF2,0x52}, {0xF2,0x4D}, {0xEF,0xE0},
- {0xC3,0x6F}, {0xF2,0x4C}, {0xF4,0x56}, {0xF4,0x55},
- {0xF2,0x55}, {0xC4,0x68}, {0xF4,0x59}, {0xF4,0x5A},
- {0xF4,0x54}, {0xF4,0x58}, {0xF4,0x53}, {0x8D,0xD0},
- {0xF5,0xD1}, {0xF4,0x57}, {0xC4,0xE7}, {0xC4,0xE5},
- {0xF5,0xCF}, {0xF5,0xD2}, {0xF5,0xCE}, {0xF5,0xD0},
- {0xC4,0xE6}, {0x93,0xF1}, {0xF6,0xE5}, {0xF6,0xE6},
- {0xC5,0x76}, {0xF6,0xE4}, {0xF7,0xE2}, {0xC5,0xCF},
- {0xF7,0xE0}, {0xF7,0xE1}, {0xF8,0xAC}, {0xC6,0x56},
- {0xF8,0xF3}, {0xF8,0xF1}, {0xF8,0xF2}, {0xF8,0xF4},
- {0xFD,0x62}, {0xF9,0xBB}, {0xA4,0xED}, {0xA6,0xB8},
- {0xAA,0x59}, {0xCC,0xE9}, {0xCF,0x64}, {0xD1,0xF5},
- {0xD1,0xF7}, {0xD1,0xF6}, {0xD1,0xF8}, {0xB1,0xFD},
- {0xD5,0xD7}, {0xD1,0xF9}, {0xFD,0x65}, {0xD5,0xD6},
- {0xD5,0xD8}, {0xD5,0xD9}, {0xD9,0xDA}, {0xB4,0xDB},
- {0xD9,0xDB}, {0xD9,0xDD}, {0xB4,0xDC}, {0xB4,0xDA},
- {0xD9,0xDC}, {0xDD,0xFA}, {0xDD,0xF8}, {0xDD,0xF7},
- {0xDD,0xF6}, {0xDD,0xF5}, {0xB7,0xB2}, {0xDD,0xF9},
- {0xBA,0x70}, {0xE2,0x63}, {0xE2,0x65}, {0xBA,0x71},
- {0xE2,0x64}, {0xBC,0xDB}, {0xBC,0xDA}, {0xE5,0xF0},
- {0x9F,0xDB}, {0xE9,0xDF}, {0xE9,0xDE}, {0xE9,0xE0},
- {0x93,0xF8}, {0xBE,0xF9}, {0xED,0x4B}, {0xC0,0xD3},
- {0xEF,0xE8}, {0xC2,0x6A}, {0xF2,0x59}, {0xC5,0x77},
- {0xA4,0xEE}, {0xA5,0xBF}, {0xA6,0xB9}, {0xA8,0x42},
- {0xAA,0x5A}, {0xAA,0x5B}, {0xAC,0x6E}, {0xD1,0xFA},
- {0x8B,0xF7}, {0xB7,0xB3}, {0xFD,0x66}, {0xE6,0xD1},
- {0xBE,0xFA}, {0xC2,0x6B}, {0xA4,0xEF}, {0x8B,0xCF},
- {0xA6,0xBA}, {0xCC,0xEB}, {0xAA,0x5C}, {0xCC,0xEA},
- {0x8D,0xD1}, {0xCF,0x65}, {0xAC,0x6F}, {0xCF,0x66},
- {0xAC,0x70}, {0xD1,0xFC}, {0xAE,0xEE}, {0xAE,0xED},
- {0xD5,0xDE}, {0xD5,0xDC}, {0xD5,0xDD}, {0xD5,0xDB},
- {0xD5,0xDA}, {0xD9,0xDE}, {0xD9,0xE1}, {0xB4,0xDE},
- {0xD9,0xDF}, {0xB4,0xDD}, {0xD9,0xE0}, {0xDD,0xFB},
- {0xE2,0x66}, {0xE2,0x67}, {0xE2,0x68}, {0xE5,0xF3},
- {0xE5,0xF2}, {0xBC,0xDC}, {0xE5,0xF1}, {0xE5,0xF4},
- {0xE9,0xE1}, {0xE9,0xE2}, {0xE9,0xE3}, {0xED,0x4C},
- {0xC0,0xD4}, {0xC2,0x6C}, {0xF2,0x5A}, {0xC4,0xE8},
- {0xC9,0x5F}, {0xAC,0x71}, {0xCF,0x67}, {0xAE,0xEF},
- {0xB1,0xFE}, {0xB4,0xDF}, {0xD9,0xE2}, {0xB7,0xB5},
- {0xB7,0xB4}, {0x8D,0xD2}, {0xE2,0x69}, {0xE2,0x6A},
- {0xBC,0xDD}, {0xBC,0xDE}, {0xE9,0xE5}, {0xE9,0xE4},
- {0xEF,0xE9}, {0xF7,0xE3}, {0xA4,0xF0}, {0xC9,0x60},
- {0xA5,0xC0}, {0xA8,0x43}, {0xCB,0x48}, {0xAC,0x72},
- {0xB7,0xB6}, {0xA4,0xF1}, {0xCF,0x68}, {0xAC,0x73},
- {0xCF,0x69}, {0xC0,0xD5}, {0xA4,0xF2}, {0xFD,0x71},
- {0xCC,0xEC}, {0xCF,0x6A}, {0xFD,0x6F}, {0xD2,0x42},
- {0xD2,0x41}, {0xD1,0xFE}, {0xD1,0xFD}, {0xD2,0x43},
- {0xD2,0x40}, {0x8D,0xD3}, {0xB2,0x40}, {0xB2,0x41},
- {0xB4,0xE0}, {0xD9,0xE3}, {0xD9,0xE4}, {0xD9,0xE5},
- {0xDE,0x41}, {0xDE,0x42}, {0xDE,0x40}, {0x9F,0xE7},
- {0xDD,0xFD}, {0xDD,0xFE}, {0xB7,0xB7}, {0xE2,0x6B},
- {0xE5,0xF7}, {0xE5,0xF6}, {0xE5,0xF5}, {0xE5,0xF8},
- {0xE9,0xE7}, {0xE9,0xE6}, {0xBE,0xFB}, {0xE9,0xE8},
- {0xC0,0xD6}, {0xED,0x4D}, {0xEF,0xEA}, {0xF2,0x5B},
- {0xF6,0xE7}, {0xA4,0xF3}, {0xA5,0xC2}, {0xA5,0xC1},
- {0xAA,0x5D}, {0xC9,0x61}, {0xC9,0x7E}, {0xA6,0xBB},
- {0xC9,0xF7}, {0xCB,0x49}, {0xCB,0x4A}, {0xAA,0x5E},
- {0x90,0xBD}, {0xCC,0xED}, {0xAC,0x74}, {0xCF,0x6B},
- {0xCF,0x6C}, {0xAE,0xF0}, {0xAE,0xF4}, {0xD2,0x44},
- {0xAE,0xF3}, {0xAE,0xF1}, {0xAE,0xF2}, {0xD5,0xDF},
- {0xB2,0x42}, {0xB4,0xE3}, {0xB4,0xE1}, {0xB4,0xE2},
- {0xD9,0xE6}, {0x9F,0xD0}, {0xBA,0x72}, {0xA4,0xF4},
- {0x8B,0xD0}, {0xC9,0xA1}, {0xFD,0x72}, {0xA5,0xC3},
- {0x9C,0xAE}, {0x8B,0xD1}, {0xC9,0xA4}, {0x8A,0xDB},
- {0xA5,0xC6}, {0xC9,0xA3}, {0xA5,0xC5}, {0xA5,0xC4},
- {0xA8,0x44}, {0xC9,0xA2}, {0xC9,0xF8}, {0xFA,0xE4},
- {0xC9,0xFC}, {0xC9,0xFE}, {0xCA,0x40}, {0xA6,0xC5},
- {0xA6,0xC6}, {0xC9,0xFB}, {0xA6,0xC1}, {0xC9,0xF9},
- {0xC9,0xFD}, {0xA6,0xC2}, {0xA6,0xBD}, {0x95,0xCE},
- {0xA6,0xBE}, {0xFD,0x76}, {0xA6,0xC4}, {0xC9,0xFA},
- {0xA6,0xBC}, {0xA8,0x45}, {0xA6,0xBF}, {0xA6,0xC0},
- {0xA6,0xC3}, {0xCB,0x5B}, {0xCB,0x59}, {0xCB,0x4C},
- {0xA8,0x51}, {0xCB,0x53}, {0xA8,0x4C}, {0xCB,0x4D},
- {0xCB,0x55}, {0xFB,0x62}, {0xCB,0x52}, {0xA8,0x4F},
- {0xCB,0x51}, {0xA8,0x56}, {0xCB,0x5A}, {0xA8,0x58},
- {0x8D,0xD4}, {0xA8,0x5A}, {0xCB,0x4B}, {0xFD,0x78},
- {0xA8,0x4D}, {0xCB,0x5C}, {0xA8,0x54}, {0xA8,0x57},
- {0x8E,0xE3}, {0xCD,0x45}, {0xA8,0x47}, {0xA8,0x5E},
- {0xA8,0x55}, {0xCB,0x4E}, {0xA8,0x4A}, {0xA8,0x59},
- {0xCB,0x56}, {0xA8,0x48}, {0xA8,0x49}, {0xCD,0x43},
- {0xCB,0x4F}, {0xA8,0x50}, {0xA8,0x5B}, {0xCB,0x5D},
- {0xCB,0x50}, {0xA8,0x4E}, {0xA8,0x53}, {0xCC,0xEE},
- {0xA8,0x5C}, {0xCB,0x57}, {0xA8,0x52}, {0xA8,0x5D},
- {0xA8,0x46}, {0xCB,0x54}, {0xA8,0x4B}, {0xCB,0x58},
- {0xCD,0x44}, {0x90,0x76}, {0x98,0xC6}, {0x8D,0xD5},
- {0xAA,0x6A}, {0xAA,0x7A}, {0xCC,0xF5}, {0xAA,0x71},
- {0x97,0xD1}, {0xCD,0x4B}, {0xAA,0x62}, {0x9E,0xB6},
- {0xAA,0x65}, {0xCD,0x42}, {0xCC,0xF3}, {0xCC,0xF7},
- {0xAA,0x6D}, {0xAA,0x6F}, {0xCC,0xFA}, {0xAA,0x76},
- {0xAA,0x68}, {0xAA,0x66}, {0xAA,0x67}, {0xAA,0x75},
- {0xCD,0x47}, {0xAA,0x70}, {0xCC,0xF9}, {0xCC,0xFB},
- {0xAA,0x6E}, {0xAA,0x73}, {0xCC,0xFC}, {0xCD,0x4A},
- {0xAC,0x75}, {0xAA,0x79}, {0xFA,0xC7}, {0xAA,0x63},
- {0xCD,0x49}, {0xA0,0x42}, {0xCD,0x4D}, {0xCC,0xF8},
- {0xCD,0x4F}, {0xCD,0x40}, {0xAA,0x6C}, {0xCC,0xF4},
- {0xAA,0x6B}, {0xAA,0x7D}, {0xAA,0x72}, {0xCC,0xF2},
- {0xCF,0x75}, {0xAA,0x78}, {0xAA,0x7C}, {0xCD,0x41},
- {0xCD,0x46}, {0x98,0x73}, {0xAA,0x7E}, {0xAA,0x77},
- {0xAA,0x69}, {0xAA,0x5F}, {0xAA,0x64}, {0xCC,0xF6},
- {0xAA,0x60}, {0xCD,0x4E}, {0x9F,0xFC}, {0xCC,0xF0},
- {0xCC,0xEF}, {0xCC,0xFD}, {0xCC,0xF1}, {0xAA,0x7B},
- {0xAE,0xF5}, {0xAA,0x74}, {0xCC,0xFE}, {0xAA,0x61},
- {0xAC,0xA6}, {0xCD,0x4C}, {0x8C,0xA5}, {0xCF,0x7C},
- {0xCF,0xA1}, {0x8D,0xD7}, {0xCF,0xA4}, {0xCF,0x77},
- {0x92,0xFB}, {0x8D,0xD8}, {0xCF,0xA7}, {0xCF,0xAA},
- {0xCF,0xAC}, {0xCF,0x74}, {0xAC,0x76}, {0xAC,0x7B},
- {0xD2,0x49}, {0xAC,0xAD}, {0xCF,0xA5}, {0xCF,0xAD},
- {0xCF,0x7B}, {0xCF,0x73}, {0xD2,0x64}, {0xAC,0x7E},
- {0xCF,0xA2}, {0xCF,0x78}, {0xCF,0x7A}, {0xAC,0xA5},
- {0xCF,0x7D}, {0xAC,0x7D}, {0xCF,0x70}, {0xCF,0xA8},
- {0xCF,0xAB}, {0x94,0x4F}, {0xAC,0x7A}, {0x8D,0xD9},
- {0xAC,0xA8}, {0xCF,0x6D}, {0xAC,0xAA}, {0xAC,0x78},
- {0xAC,0xAE}, {0xCF,0xA9}, {0xCF,0x6F}, {0xAC,0xAB},
- {0xD2,0x5E}, {0xCD,0x48}, {0xAC,0x7C}, {0xAC,0x77},
- {0xCF,0x76}, {0xCF,0x6E}, {0xAC,0xAC}, {0xAC,0xA4},
- {0xCF,0xA3}, {0xAC,0xA9}, {0xAC,0xA7}, {0xCF,0x79},
- {0xAC,0xA1}, {0xCF,0x71}, {0xAC,0xA2}, {0xAC,0xA3},
- {0xCF,0x72}, {0xCF,0xA6}, {0xAC,0x79}, {0xCF,0x7E},
- {0x89,0x6B}, {0x97,0xCE}, {0xD2,0x4C}, {0xAE,0xFD},
- {0xAF,0x43}, {0xFA,0xF3}, {0xFD,0xAE}, {0xD2,0x55},
- {0xD2,0x5B}, {0xD2,0x57}, {0xD2,0x4A}, {0xD2,0x4D},
- {0xD2,0x46}, {0xD2,0x47}, {0xAF,0x4A}, {0xAE,0xFA},
- {0xD2,0x56}, {0xD2,0x5F}, {0xAF,0x45}, {0xAE,0xF6},
- {0xAF,0x40}, {0xD2,0x4E}, {0xAF,0x42}, {0xD2,0x4F},
- {0xD2,0x59}, {0xFB,0xAF}, {0x92,0xB7}, {0xAF,0x44},
- {0xD2,0x68}, {0xD2,0x48}, {0xAE,0xFC}, {0xAE,0xFB},
- {0xAF,0x48}, {0xD2,0x45}, {0xD2,0x66}, {0xD2,0x5A},
- {0xD2,0x67}, {0xD2,0x61}, {0xD2,0x53}, {0xD2,0x62},
- {0x8D,0xDA}, {0xD2,0x5C}, {0xD2,0x65}, {0xD2,0x63},
- {0xAF,0x49}, {0xD2,0x54}, {0xAE,0xF9}, {0xAE,0xF8},
- {0xAF,0x41}, {0xAF,0x47}, {0xD2,0x60}, {0xAF,0x46},
- {0xD2,0x51}, {0xB2,0x43}, {0x9C,0x5A}, {0xD2,0x69},
- {0xD2,0x50}, {0xD2,0x4B}, {0xAE,0xFE}, {0xAF,0x4B},
- {0xAE,0xF7}, {0xFD,0xAD}, {0xD2,0x58}, {0xD2,0x5D},
- {0x8D,0xDC}, {0x94,0x44}, {0xB2,0x65}, {0xD5,0xE1},
- {0xD5,0xE5}, {0xB2,0x52}, {0xB2,0x50}, {0x8D,0xDD},
- {0xB2,0x47}, {0xD5,0xE3}, {0xD5,0xE2}, {0xB2,0x5B},
- {0xD5,0xE8}, {0xB2,0x55}, {0xA0,0xD6}, {0xD5,0xFA},
- {0xD6,0x47}, {0xB2,0x44}, {0xD5,0xF7}, {0xD5,0xF0},
- {0xB2,0x67}, {0xD5,0xE0}, {0xD5,0xFC}, {0xB2,0x64},
- {0xB2,0x58}, {0xB2,0x63}, {0xB2,0x4E}, {0xD5,0xEC},
- {0xD5,0xFE}, {0xD5,0xF6}, {0xB2,0x4F}, {0xB2,0x49},
- {0xD6,0x45}, {0xD5,0xFD}, {0xD6,0x40}, {0xB2,0x51},
- {0xB2,0x59}, {0xD6,0x42}, {0xD5,0xEA}, {0xD5,0xFB},
- {0xD5,0xEF}, {0xD6,0x44}, {0xB2,0x5E}, {0xB2,0x46},
- {0xB2,0x5C}, {0xD5,0xF4}, {0xD5,0xF2}, {0xD5,0xF3},
- {0xB2,0x53}, {0xD5,0xEE}, {0xD5,0xED}, {0xB2,0x48},
- {0xD5,0xE7}, {0xD6,0x46}, {0xB2,0x4A}, {0xD5,0xF1},
- {0xB2,0x68}, {0xB2,0x62}, {0xD5,0xE6}, {0xB2,0x5F},
- {0xB2,0x5D}, {0xB2,0x66}, {0xD5,0xF8}, {0xB2,0x61},
- {0xD2,0x52}, {0xD5,0xF9}, {0xB2,0x60}, {0xD6,0x41},
- {0xB2,0x45}, {0xD5,0xF5}, {0xB2,0x57}, {0xD5,0xE9},
- {0xB2,0x56}, {0xB2,0x54}, {0xB2,0x4C}, {0xB2,0x4B},
- {0xD9,0xE7}, {0xD6,0x43}, {0x8C,0x41}, {0xD5,0xEB},
- {0x97,0xD5}, {0xD9,0xFC}, {0x94,0x4A}, {0xB2,0x4D},
- {0x94,0x4D}, {0x97,0xCB}, {0x8D,0xDE}, {0x8D,0xDF},
- {0xB5,0x41}, {0xB2,0x5A}, {0xB4,0xEE}, {0xD9,0xF6},
- {0xB4,0xFC}, {0xD9,0xEA}, {0xB4,0xEB}, {0xB4,0xE7},
- {0xDA,0x49}, {0xB4,0xED}, {0xB4,0xF1}, {0xB4,0xEC},
- {0xB4,0xF5}, {0xDA,0x4D}, {0xDA,0x44}, {0x8D,0xE0},
- {0xFE,0xF9}, {0xD9,0xF1}, {0xB4,0xFA}, {0xB4,0xF4},
- {0xD9,0xFD}, {0xB4,0xE4}, {0xDA,0x4A}, {0xDA,0x43},
- {0xB4,0xE8}, {0xD9,0xF7}, {0xB4,0xF7}, {0xDA,0x55},
- {0xDA,0x56}, {0xB4,0xE5}, {0xDA,0x48}, {0xB4,0xF9},
- {0xD9,0xFB}, {0xD9,0xED}, {0xD9,0xEE}, {0xB4,0xFD},
- {0xD9,0xF2}, {0xD9,0xF9}, {0xD9,0xF3}, {0xB4,0xFB},
- {0xB5,0x44}, {0xD9,0xEF}, {0xD9,0xE8}, {0xD9,0xE9},
- {0xD9,0xEB}, {0xB4,0xEA}, {0xD9,0xF8}, {0xB4,0xF8},
- {0xB5,0x42}, {0xFD,0xC0}, {0xFC,0xF9}, {0xD9,0xFA},
- {0xDA,0x53}, {0xDA,0x4B}, {0xB4,0xE6}, {0xDA,0x51},
- {0xB4,0xF2}, {0xB4,0xF0}, {0xFB,0x7E}, {0xDA,0x57},
- {0xB4,0xEF}, {0xDA,0x41}, {0xD9,0xF4}, {0xD9,0xFE},
- {0xB5,0x47}, {0xDA,0x45}, {0xDA,0x42}, {0xD9,0xF0},
- {0xB5,0x43}, {0xDA,0x4F}, {0xDA,0x4C}, {0xDA,0x54},
- {0xB4,0xE9}, {0xDA,0x40}, {0xB5,0x46}, {0xDA,0x47},
- {0xB4,0xF3}, {0xB4,0xF6}, {0xDA,0x46}, {0xB5,0x45},
- {0xD9,0xF5}, {0xD5,0xE4}, {0x92,0xB3}, {0xDA,0x50},
- {0xDA,0x4E}, {0xDA,0x52}, {0xFD,0xAF}, {0x8D,0xE1},
- {0xD9,0xEC}, {0xB5,0x40}, {0x95,0xD3}, {0xDE,0x61},
- {0xDE,0x60}, {0xDE,0x46}, {0xB7,0xBD}, {0xDE,0x5F},
- {0xDE,0x49}, {0xDE,0x4A}, {0xB7,0xC7}, {0xDE,0x68},
- {0xB7,0xC2}, {0xDE,0x5E}, {0x89,0xC1}, {0xDE,0x43},
- {0xB7,0xC8}, {0xB7,0xBE}, {0xDE,0x52}, {0xDE,0x48},
- {0xDE,0x4B}, {0xDE,0x63}, {0xB7,0xB8}, {0xDE,0x6A},
- {0xDE,0x62}, {0xB7,0xC1}, {0xDE,0x57}, {0xB7,0xCC},
- {0xB7,0xCB}, {0xB7,0xC5}, {0xDE,0x69}, {0xB7,0xB9},
- {0xDE,0x55}, {0xDE,0x4C}, {0xDE,0x59}, {0xDE,0x65},
- {0xB7,0xCD}, {0xFD,0x68}, {0xB7,0xBB}, {0xDE,0x54},
- {0x9C,0xB7}, {0xDE,0x4D}, {0xB7,0xC4}, {0x8D,0xE3},
- {0xB7,0xC3}, {0xDE,0x50}, {0xDE,0x5A}, {0xDE,0x64},
- {0xDE,0x47}, {0xDE,0x51}, {0xB7,0xBC}, {0xDE,0x5B},
- {0xB7,0xC9}, {0xB7,0xC0}, {0xDE,0x4E}, {0xB7,0xBF},
- {0xDE,0x45}, {0xDE,0x53}, {0xDE,0x67}, {0xB4,0xFE},
- {0xBA,0xB0}, {0xDE,0x56}, {0xE2,0x6C}, {0xDE,0x58},
- {0xDE,0x66}, {0xB7,0xC6}, {0xDE,0x4F}, {0xB7,0xBA},
- {0xB7,0xCA}, {0xBC,0xF0}, {0xDE,0x44}, {0xDE,0x5D},
- {0xFA,0xC0}, {0x8D,0xE5}, {0xFA,0x64}, {0xDE,0x5C},
- {0x89,0x47}, {0x8D,0xE4}, {0x8D,0xE7}, {0x8D,0xE8},
- {0xE2,0xAA}, {0xBA,0xAD}, {0xE2,0x7D}, {0xE2,0xA4},
- {0xBA,0xA2}, {0xE2,0x6E}, {0xBA,0xAF}, {0xBA,0x77},
- {0xE2,0x6D}, {0xE2,0xB0}, {0xBA,0xB1}, {0xE2,0x71},
- {0xE2,0xA3}, {0xFD,0xC7}, {0xE2,0x73}, {0xE2,0xB3},
- {0xE2,0xAF}, {0xBA,0x75}, {0xBA,0xA1}, {0xE6,0x53},
- {0xBA,0xAE}, {0xBA,0x7D}, {0xE2,0x6F}, {0xFD,0xB0},
- {0xE2,0xAE}, {0xBA,0xA3}, {0xE2,0xAB}, {0xE2,0xB8},
- {0xE2,0x75}, {0xE2,0x7E}, {0x94,0x45}, {0x97,0xD6},
- {0xE2,0xB6}, {0xE2,0xAC}, {0xBA,0x7C}, {0xE2,0x7C},
- {0xBA,0x76}, {0xBA,0x74}, {0xBA,0xA8}, {0xFC,0xC6},
- {0x98,0x44}, {0xE2,0x7A}, {0xE2,0x77}, {0xE2,0x78},
- {0xE2,0xB2}, {0xE2,0xB7}, {0xE2,0xB5}, {0xBA,0x7A},
- {0xE2,0xB9}, {0xBA,0x7E}, {0xBA,0xA7}, {0x8D,0xE9},
- {0xE2,0x70}, {0xE5,0xFA}, {0xE2,0x79}, {0xBA,0x78},
- {0xBA,0xAC}, {0xBA,0xA9}, {0xBA,0x7B}, {0xE2,0xA5},
- {0xE2,0x74}, {0xBA,0xAA}, {0xE2,0xA7}, {0xBA,0xA4},
- {0xBA,0xA6}, {0xBA,0x73}, {0x8D,0xEA}, {0xE2,0xA9},
- {0xE2,0xA1}, {0xE2,0x72}, {0xBA,0xA5}, {0xE2,0xB1},
- {0xE2,0xB4}, {0xE2,0x7B}, {0xE2,0xA8}, {0xFE,0x50},
- {0xBA,0x79}, {0xBC,0xDF}, {0xE2,0xA6}, {0xE5,0xF9},
- {0xE2,0xAD}, {0xFD,0xCC}, {0xE2,0x76}, {0xE6,0x44},
- {0xE6,0x4E}, {0xBC,0xE2}, {0xE6,0x4D}, {0xE6,0x59},
- {0xBC,0xE4}, {0xE6,0x4B}, {0x9D,0xA7}, {0xE6,0x4F},
- {0xBC,0xEF}, {0xE6,0x46}, {0xBC,0xE7}, {0xFD,0xCD},
- {0xE6,0x52}, {0xE9,0xF0}, {0xBC,0xF3}, {0xBC,0xF2},
- {0xE6,0x54}, {0xE6,0x43}, {0xE6,0x5E}, {0xBC,0xED},
- {0xBC,0xE3}, {0xE6,0x57}, {0xE6,0x5B}, {0xE6,0x60},
- {0xE6,0x55}, {0xE6,0x49}, {0xBC,0xE6}, {0xBC,0xE9},
- {0xBC,0xF1}, {0xBC,0xEC}, {0xE6,0x4C}, {0xE2,0xA2},
- {0xFD,0xCF}, {0xE6,0x48}, {0xE6,0x5F}, {0xBC,0xE8},
- {0x95,0xD2}, {0xBC,0xEB}, {0xE6,0x61}, {0xBC,0xE0},
- {0xE6,0x56}, {0xE5,0xFB}, {0xE6,0x5C}, {0xC0,0xDF},
- {0x8D,0xED}, {0xE6,0x4A}, {0xBC,0xE1}, {0xE6,0x45},
- {0xBC,0xE5}, {0xE5,0xFC}, {0xBA,0xAB}, {0xE6,0x41},
- {0xFC,0xBA}, {0xE6,0x5A}, {0xE6,0x42}, {0xE6,0x40},
- {0xBC,0xEA}, {0xE6,0x58}, {0xE5,0xFE}, {0xE6,0x51},
- {0xE6,0x50}, {0xE6,0x5D}, {0xE6,0x47}, {0xBC,0xEE},
- {0xFD,0xC5}, {0xE9,0xF3}, {0xFD,0xD2}, {0xBF,0x49},
- {0xBE,0xFE}, {0xEA,0x40}, {0xE9,0xEB}, {0xBF,0x41},
- {0xE9,0xF7}, {0xBF,0x48}, {0xBF,0x43}, {0xE9,0xF5},
- {0xED,0x4F}, {0xE9,0xFB}, {0xEA,0x42}, {0xE9,0xFA},
- {0xE9,0xE9}, {0xE9,0xF8}, {0xEA,0x44}, {0xEA,0x46},
- {0xBE,0xFD}, {0xEA,0x45}, {0xBF,0x44}, {0xBF,0x4A},
- {0x9C,0xDC}, {0xBF,0x47}, {0xE9,0xFE}, {0xBF,0x46},
- {0xE9,0xF9}, {0x95,0xCF}, {0xE9,0xED}, {0xE9,0xF2},
- {0x8D,0xEE}, {0xE9,0xFD}, {0xBF,0x45}, {0xBF,0x42},
- {0xBE,0xFC}, {0xBF,0x40}, {0xE9,0xF1}, {0xE5,0xFD},
- {0xE9,0xEC}, {0xE9,0xEF}, {0xEA,0x41}, {0xE9,0xF4},
- {0xE9,0xEA}, {0xED,0x4E}, {0xEA,0x43}, {0xE9,0xEE},
- {0xE9,0xFC}, {0xFD,0xD4}, {0xED,0x51}, {0xC0,0xE3},
- {0xC0,0xD7}, {0x96,0xEC}, {0x96,0xEB}, {0xC0,0xDB},
- {0xED,0x53}, {0xED,0x59}, {0xED,0x57}, {0xC0,0xD9},
- {0xC0,0xDA}, {0xC0,0xE1}, {0xED,0x5A}, {0xED,0x52},
- {0xC0,0xDC}, {0xED,0x56}, {0xED,0x55}, {0xED,0x5B},
- {0xC0,0xE2}, {0xC0,0xDD}, {0xC0,0xE0}, {0xED,0x54},
- {0xC0,0xE4}, {0xC0,0xDE}, {0xC0,0xE5}, {0xC0,0xD8},
- {0xED,0x58}, {0xED,0x50}, {0x90,0xB6}, {0xEF,0xF7},
- {0xFD,0xC3}, {0xC2,0x71}, {0xEF,0xF4}, {0xEF,0xF6},
- {0xC2,0x6F}, {0xEF,0xF2}, {0xEF,0xF3}, {0xEF,0xEE},
- {0x98,0xAB}, {0xE9,0xF6}, {0xEF,0xEF}, {0xC2,0x70},
- {0xEF,0xEB}, {0xC2,0x6D}, {0xEF,0xF8}, {0xC2,0x6E},
- {0xEF,0xEC}, {0xEF,0xED}, {0xEF,0xF1}, {0xC2,0x73},
- {0xC2,0x72}, {0xEF,0xF0}, {0xC3,0x78}, {0xF2,0x5F},
- {0xF2,0x65}, {0xC3,0x79}, {0xF2,0x5C}, {0xC3,0x76},
- {0xC3,0x73}, {0xF2,0x67}, {0xC3,0x77}, {0x96,0xEE},
- {0xC3,0x74}, {0xF2,0x5E}, {0xF2,0x61}, {0xF2,0x62},
- {0xF2,0x63}, {0xF2,0x66}, {0xEF,0xF5}, {0xF2,0x5D},
- {0xC3,0x75}, {0xF2,0x64}, {0xF2,0x68}, {0xF2,0x60},
- {0x8D,0xF4}, {0xF4,0x5D}, {0xC4,0x6A}, {0xF4,0x60},
- {0xC4,0x6B}, {0xF4,0x68}, {0xF4,0x5F}, {0xF4,0x5C},
- {0xF4,0x5E}, {0xF4,0x62}, {0xF4,0x65}, {0xF4,0x64},
- {0xF4,0x67}, {0xF4,0x5B}, {0xC4,0x69}, {0xF4,0x63},
- {0xF4,0x66}, {0xF4,0x69}, {0xF4,0x61}, {0xF5,0xD3},
- {0xF5,0xD4}, {0xF5,0xD8}, {0xF5,0xD9}, {0xF5,0xD6},
- {0xF5,0xD7}, {0xF5,0xD5}, {0xFD,0xE0}, {0xC4,0xE9},
- {0x8C,0x67}, {0x8D,0xF6}, {0xC5,0x78}, {0xF6,0xEB},
- {0x8D,0xF7}, {0xF6,0xE8}, {0xF6,0xE9}, {0xF6,0xEA},
- {0xC5,0x79}, {0xF7,0xE5}, {0xF7,0xE4}, {0x8F,0xFA},
- {0xF8,0xAF}, {0xC5,0xF4}, {0xF8,0xAD}, {0xF8,0xB0},
- {0xF8,0xAE}, {0xF8,0xF5}, {0xC6,0x57}, {0xC6,0x65},
- {0xF9,0xA3}, {0xF9,0x6C}, {0x97,0xD0}, {0xF9,0xA2},
- {0xF9,0xD0}, {0xF9,0xD1}, {0xA4,0xF5}, {0x8B,0xD2},
- {0x8D,0xF8}, {0xA6,0xC7}, {0xCA,0x41}, {0xCB,0x5E},
- {0x90,0xD9}, {0xA8,0x5F}, {0x8C,0x47}, {0xA8,0x62},
- {0xFA,0xF0}, {0xCB,0x5F}, {0xA8,0x60}, {0xA8,0x61},
- {0xFD,0xE1}, {0x8D,0xF9}, {0xFD,0xE3}, {0xCD,0x58},
- {0xCD,0x5A}, {0xCD,0x55}, {0xCD,0x52}, {0xCD,0x54},
- {0x8D,0xFA}, {0xAA,0xA4}, {0xFB,0x63}, {0xAA,0xA2},
- {0x90,0xA6}, {0xCD,0x56}, {0xAA,0xA3}, {0xCD,0x53},
- {0xCD,0x50}, {0xAA,0xA1}, {0xCD,0x57}, {0xCD,0x51},
- {0xAA,0xA5}, {0xCD,0x59}, {0xCF,0xAF}, {0x99,0x70},
- {0xCF,0xB3}, {0x91,0xEB}, {0xAC,0xB7}, {0x97,0x70},
- {0x98,0x6F}, {0xFD,0xE2}, {0xCF,0xB6}, {0xAC,0xAF},
- {0xAC,0xB2}, {0xAC,0xB4}, {0xAC,0xB6}, {0xAC,0xB3},
- {0xCF,0xB2}, {0xCF,0xB1}, {0xAC,0xB1}, {0xCF,0xB4},
- {0xCF,0xB5}, {0xCF,0xAE}, {0xAC,0xB5}, {0x98,0xF2},
- {0xAC,0xB0}, {0x9A,0xFC}, {0x89,0x6C}, {0xFD,0xFD},
- {0xCF,0xB0}, {0x99,0x5E}, {0x95,0xBD}, {0xD2,0x77},
- {0xD2,0x78}, {0xD2,0x79}, {0xAF,0x50}, {0xAF,0x4C},
- {0xD2,0x6E}, {0xFD,0xE4}, {0xD2,0x76}, {0xD2,0x7B},
- {0xAF,0x51}, {0x91,0xE6}, {0xD2,0x6C}, {0xD2,0x72},
- {0xD2,0x6B}, {0xD2,0x75}, {0xFD,0xE5}, {0xFD,0xE6},
- {0xD2,0x71}, {0xAF,0x4D}, {0xAF,0x4F}, {0xD2,0x7A},
- {0xD2,0x6A}, {0xD2,0x6D}, {0xD2,0x73}, {0xFD,0xE7},
- {0xD2,0x74}, {0xD2,0x7C}, {0xD2,0x70}, {0xAF,0x4E},
- {0xB2,0x6D}, {0xD6,0x4E}, {0x94,0x54}, {0xD6,0x50},
- {0xD6,0x4C}, {0x99,0xB8}, {0xD6,0x58}, {0xD6,0x4A},
- {0xD6,0x57}, {0xB2,0x69}, {0xD6,0x48}, {0xDA,0x5B},
- {0xD6,0x52}, {0xB2,0x6C}, {0x97,0xE9}, {0xD6,0x53},
- {0xD6,0x56}, {0xD6,0x5A}, {0xD6,0x4F}, {0x93,0x46},
- {0xD6,0x54}, {0xB2,0x6A}, {0xB2,0x6B}, {0xD6,0x59},
- {0xD6,0x4D}, {0xD6,0x49}, {0xD6,0x5B}, {0xD6,0x51},
- {0xD6,0x55}, {0xD6,0x4B}, {0xB5,0x48}, {0xB5,0x49},
- {0xDA,0x65}, {0xB5,0x4F}, {0x98,0x63}, {0xDA,0x59},
- {0xDA,0x62}, {0xDA,0x58}, {0xB5,0x4C}, {0xDA,0x60},
- {0xDA,0x5E}, {0xDA,0x5F}, {0xB5,0x4A}, {0xDA,0x63},
- {0x95,0xBC}, {0xFD,0xED}, {0xFD,0xF7}, {0xDA,0x5C},
- {0xDA,0x5A}, {0xB5,0x4B}, {0xDA,0x5D}, {0xDA,0x61},
- {0x98,0x70}, {0x96,0xF6}, {0x8E,0xA9}, {0xB5,0x4D},
- {0xDA,0x64}, {0x94,0x51}, {0x8E,0x43}, {0x8B,0x5A},
- {0xDE,0x70}, {0xDE,0x77}, {0xDE,0x79}, {0xDE,0xA1},
- {0xFD,0xEE}, {0xB7,0xDA}, {0xDE,0x6B}, {0xB7,0xD2},
- {0xFD,0xF0}, {0xDE,0x7A}, {0xB7,0xD7}, {0xDE,0xA2},
- {0xB7,0xCE}, {0xFD,0xF4}, {0xDE,0x7D}, {0x9B,0xF5},
- {0xDE,0x6D}, {0xDE,0x7E}, {0xDE,0x6C}, {0xB7,0xDC},
- {0xDE,0x78}, {0xB7,0xCF}, {0xDE,0xA3}, {0xB7,0xD4},
- {0xDE,0x71}, {0xB7,0xD9}, {0xDE,0x7C}, {0xDE,0x6F},
- {0xDE,0x76}, {0xDE,0x72}, {0xDE,0x6E}, {0xB7,0xD1},
- {0xB7,0xD8}, {0xB7,0xD6}, {0xB7,0xD3}, {0xB7,0xDB},
- {0xB7,0xD0}, {0xDE,0x75}, {0x97,0x7E}, {0xB7,0xD5},
- {0xB5,0x4E}, {0xDE,0x7B}, {0x9B,0xD5}, {0xDE,0x73},
- {0x9A,0xC3}, {0x97,0xC8}, {0xA0,0xDB}, {0x91,0xD0},
- {0xDE,0x74}, {0x9F,0xE4}, {0xE2,0xC1}, {0x8F,0xDD},
- {0xBA,0xB4}, {0x91,0xE9}, {0xE2,0xBD}, {0xE2,0xC3},
- {0xE2,0xBF}, {0xBA,0xB6}, {0xE2,0xBE}, {0xE2,0xC2},
- {0xE2,0xBA}, {0x98,0xE0}, {0xE2,0xBC}, {0xBA,0xB5},
- {0x92,0xCA}, {0x98,0x57}, {0xE2,0xC0}, {0xE2,0xBB},
- {0x8C,0x51}, {0xBA,0xB7}, {0xBA,0xB2}, {0xFD,0xEB},
- {0xE2,0xC4}, {0x9B,0x49}, {0xBA,0xB3}, {0xE6,0x67},
- {0xE6,0x64}, {0xE6,0x70}, {0xE6,0x6A}, {0xE6,0x6C},
- {0xBC,0xF4}, {0xE6,0x66}, {0xE6,0x6E}, {0x9D,0x76},
- {0x9E,0xAF}, {0xE6,0x6D}, {0xE6,0x6B}, {0xE6,0x71},
- {0xBC,0xF7}, {0xE6,0x68}, {0xE6,0x6F}, {0xBC,0xF5},
- {0x9C,0xCC}, {0xE6,0x63}, {0xE6,0x65}, {0xBC,0xF6},
- {0xE6,0x62}, {0xE6,0x72}, {0xFD,0xEA}, {0xE6,0x69},
- {0x8D,0xF1}, {0xEA,0x4A}, {0xBF,0x51}, {0xFD,0xFB},
- {0xEA,0x55}, {0xEA,0x53}, {0xBF,0x4B}, {0xEA,0x49},
- {0xEA,0x4C}, {0xEA,0x4D}, {0xEA,0x48}, {0xBF,0x55},
- {0xBF,0x56}, {0xEA,0x47}, {0xEA,0x56}, {0xEA,0x51},
- {0xBF,0x4F}, {0xBF,0x4C}, {0xEA,0x50}, {0xEA,0x4E},
- {0xBF,0x52}, {0xEA,0x52}, {0xBF,0x4D}, {0x8E,0x53},
- {0xBF,0x4E}, {0xEA,0x4F}, {0xBF,0x50}, {0xEA,0x4B},
- {0xEA,0x54}, {0xBF,0x53}, {0xEA,0x57}, {0xEA,0x58},
- {0xBF,0x54}, {0xFA,0xCF}, {0xC0,0xE7}, {0xC0,0xEE},
- {0xED,0x5C}, {0xED,0x62}, {0xED,0x60}, {0xC0,0xEA},
- {0xC0,0xE9}, {0xC0,0xE6}, {0xED,0x5E}, {0x96,0xF9},
- {0xC0,0xEC}, {0xC0,0xEB}, {0xC0,0xE8}, {0xED,0x61},
- {0xED,0x5D}, {0xED,0x5F}, {0xC0,0xED}, {0x98,0xBF},
- {0x9E,0x49}, {0xC2,0x77}, {0xEF,0xFB}, {0xC2,0x74},
- {0xC2,0x75}, {0xEF,0xFD}, {0xC2,0x76}, {0xEF,0xFA},
- {0x8C,0xA7}, {0xEF,0xF9}, {0xF2,0x6C}, {0xEF,0xFC},
- {0xF2,0x6D}, {0xC3,0x7A}, {0xF2,0x6B}, {0x9B,0xCA},
- {0xF2,0x6A}, {0xF2,0x69}, {0xC3,0x7B}, {0xFD,0xFE},
- {0x92,0xDC}, {0xC4,0x6C}, {0xF4,0x6A}, {0xF4,0x6B},
- {0xFE,0x41}, {0x91,0xCC}, {0x91,0xE2}, {0xF5,0xDC},
- {0xF5,0xDB}, {0xC4,0xEA}, {0xF5,0xDA}, {0xF6,0xEC},
- {0xF6,0xED}, {0xF7,0xE6}, {0xF8,0xB1}, {0xFE,0x44},
- {0xF8,0xF6}, {0xF9,0xBC}, {0xC6,0x79}, {0xF9,0xC6},
- {0xA4,0xF6}, {0x8B,0xD3}, {0xAA,0xA6}, {0xAA,0xA7},
- {0xFE,0x47}, {0xAC,0xB8}, {0xC0,0xEF}, {0xA4,0xF7},
- {0xAA,0xA8}, {0xAF,0x52}, {0xB7,0xDD}, {0xA4,0xF8},
- {0xB2,0x6E}, {0xBA,0xB8}, {0xC9,0x62}, {0xFE,0x48},
- {0xCF,0xB7}, {0xD2,0x7D}, {0xE2,0xC5}, {0xC0,0xF0},
- {0xA4,0xF9}, {0xAA,0xA9}, {0xCF,0xB8}, {0xCF,0xB9},
- {0xDA,0x66}, {0xB5,0x50}, {0xDE,0xA4}, {0x94,0x55},
- {0xB7,0xDE}, {0xE2,0xC6}, {0xFE,0x4B}, {0xBC,0xF8},
- {0xFE,0x4C}, {0xC3,0x7C}, {0xA4,0xFA}, {0xDA,0x67},
- {0xA4,0xFB}, {0x8D,0xBF}, {0xA6,0xC9}, {0xCA,0x42},
- {0xA6,0xC8}, {0xA8,0x65}, {0xA8,0x64}, {0xA8,0x63},
- {0xCB,0x60}, {0x9E,0x78}, {0xAA,0xAA}, {0xAA,0xAB},
- {0xCD,0x5B}, {0xCF,0xBA}, {0xCF,0xBD}, {0xAC,0xBA},
- {0xCF,0xBB}, {0xAC,0xB9}, {0xCF,0xBC}, {0xAC,0xBB},
- {0xD2,0xA2}, {0xD2,0xA1}, {0xD2,0x7E}, {0xAF,0x53},
- {0xD6,0x5D}, {0xD6,0x5E}, {0xB2,0x6F}, {0xD6,0x5C},
- {0xD6,0x5F}, {0xB5,0x52}, {0xB2,0x70}, {0xFE,0x51},
- {0xB5,0x51}, {0xDA,0x6B}, {0xDA,0x6A}, {0x94,0x56},
- {0xDA,0x68}, {0xDA,0x69}, {0xDA,0x6C}, {0xDE,0xA6},
- {0xDE,0xA5}, {0xDE,0xA9}, {0x9D,0x61}, {0xDE,0xA8},
- {0xDE,0xA7}, {0xBA,0xB9}, {0xE2,0xC9}, {0x94,0x57},
- {0xE2,0xC8}, {0xBA,0xBA}, {0xE2,0xC7}, {0xE6,0x73},
- {0xE6,0x74}, {0xBC,0xF9}, {0xEA,0x59}, {0xEA,0x5A},
- {0x99,0x66}, {0xF2,0x72}, {0xC3,0x7D}, {0xF2,0x71},
- {0xF2,0x70}, {0xF2,0x6E}, {0xF2,0x6F}, {0xC4,0xEB},
- {0xF4,0x6C}, {0xF6,0xEE}, {0xF8,0xF7}, {0xA4,0xFC},
- {0x8B,0xD5}, {0xC9,0xA5}, {0xA5,0xC7}, {0xC9,0xA6},
- {0xA0,0x69}, {0xCA,0x43}, {0xCA,0x44}, {0xCB,0x66},
- {0xCB,0x62}, {0xCB,0x61}, {0xAA,0xAC}, {0xCB,0x65},
- {0xA8,0x67}, {0xCB,0x63}, {0xA8,0x66}, {0xCB,0x67},
- {0xCB,0x64}, {0xCD,0x5F}, {0xCF,0xBE}, {0xCD,0x5D},
- {0xCD,0x64}, {0x98,0xB4}, {0xAA,0xAD}, {0xAA,0xB0},
- {0xCD,0x65}, {0xCD,0x61}, {0xCD,0x62}, {0xCD,0x5C},
- {0xAA,0xAF}, {0xCD,0x5E}, {0xAA,0xAE}, {0xCD,0x63},
- {0xCD,0x60}, {0xCF,0xC2}, {0xAC,0xBD}, {0xAC,0xBE},
- {0xA0,0x49}, {0xCF,0xC5}, {0xCF,0xBF}, {0xCF,0xC4},
- {0xCF,0xC0}, {0xAC,0xBC}, {0xCF,0xC3}, {0xCF,0xC1},
- {0xD2,0xA8}, {0xD2,0xA5}, {0xD2,0xA7}, {0xAF,0x58},
- {0xAF,0x57}, {0xAF,0x55}, {0xD2,0xA4}, {0xD2,0xA9},
- {0xAF,0x54}, {0xAF,0x56}, {0xD2,0xA6}, {0xD6,0x67},
- {0xD2,0xA3}, {0xD2,0xAA}, {0xA0,0x4C}, {0x9E,0x65},
- {0xD6,0x62}, {0xD6,0x66}, {0xD6,0x65}, {0xDA,0x6E},
- {0xDA,0x79}, {0xD6,0x68}, {0x98,0xB5}, {0xD6,0x63},
- {0xDA,0x6D}, {0xB2,0x74}, {0xB2,0x73}, {0xD6,0x61},
- {0xD6,0x64}, {0xB2,0x75}, {0xB2,0x72}, {0xB2,0x71},
- {0xD6,0x60}, {0xD6,0x69}, {0xDA,0x70}, {0xDA,0x77},
- {0xB5,0x54}, {0xDA,0x76}, {0xDA,0x73}, {0xFE,0x58},
- {0xB5,0x56}, {0x99,0x75}, {0xFE,0x53}, {0xA0,0x65},
- {0xDA,0x75}, {0xFE,0x59}, {0xDA,0x6F}, {0xDA,0x71},
- {0xDA,0x74}, {0xDA,0x72}, {0xB5,0x55}, {0xDA,0x78},
- {0xB5,0x53}, {0xB7,0xDF}, {0x98,0xB7}, {0x98,0xB8},
- {0xDE,0xAD}, {0xDE,0xAC}, {0xDE,0xAA}, {0xB7,0xE2},
- {0xB7,0xE1}, {0xDE,0xAE}, {0x98,0xBA}, {0xDE,0xAB},
- {0xE2,0xCA}, {0xBA,0xBB}, {0xB7,0xE0}, {0x98,0xBB},
- {0xDE,0xB0}, {0xDE,0xAF}, {0xE2,0xCD}, {0xE2,0xCB},
- {0xBC,0xFA}, {0x9F,0xBC}, {0xBA,0xBC}, {0xE2,0xCC},
- {0xE6,0x76}, {0xBC,0xFB}, {0xE6,0x75}, {0xE6,0x7E},
- {0xE6,0x7D}, {0xE6,0x7B}, {0xE6,0x7A}, {0xE6,0x77},
- {0xE6,0x78}, {0xE6,0x79}, {0xE6,0x7C}, {0xE6,0xA1},
- {0xEA,0x5F}, {0xEA,0x5C}, {0xEA,0x5D}, {0xBF,0x57},
- {0xEA,0x5B}, {0xEA,0x61}, {0xEA,0x60}, {0xEA,0x5E},
- {0xED,0x64}, {0xED,0x65}, {0xC0,0xF1}, {0xA0,0x4A},
- {0xC0,0xF2}, {0xED,0x63}, {0x9E,0xC7}, {0xC2,0x79},
- {0xEF,0xFE}, {0xC2,0x78}, {0xC3,0x7E}, {0xC3,0xA1},
- {0xC4,0x6D}, {0xF4,0x6E}, {0xF4,0x6D}, {0xF5,0xDD},
- {0xF6,0xEF}, {0xC5,0x7A}, {0xF7,0xE8}, {0xF7,0xE7},
- {0xF7,0xE9}, {0xA5,0xC8}, {0xCF,0xC6}, {0xAF,0x59},
- {0xB2,0x76}, {0xD6,0x6A}, {0xA5,0xC9}, {0xC9,0xA7},
- {0xA4,0xFD}, {0x8C,0xA9}, {0xCA,0x45}, {0x98,0xAE},
- {0xCB,0x6C}, {0xCB,0x6A}, {0xCB,0x6B}, {0xCB,0x68},
- {0xA8,0x68}, {0xCB,0x69}, {0x92,0xD6}, {0xFA,0xE1},
- {0xCD,0x6D}, {0x91,0xD4}, {0xAA,0xB3}, {0xCD,0x6B},
- {0xCD,0x67}, {0xCD,0x6A}, {0xCD,0x66}, {0xAA,0xB5},
- {0xCD,0x69}, {0xFA,0xDE}, {0xAA,0xB2}, {0xAA,0xB1},
- {0xFE,0x5B}, {0xAA,0xB4}, {0xCD,0x6C}, {0xCD,0x68},
- {0xAC,0xC2}, {0xAC,0xC5}, {0xCF,0xCE}, {0xCF,0xCD},
- {0xCF,0xCC}, {0xAC,0xBF}, {0xCF,0xD5}, {0xCF,0xCB},
- {0x8C,0x53}, {0xAC,0xC1}, {0xD2,0xAF}, {0xCF,0xD2},
- {0xCF,0xD0}, {0xAC,0xC4}, {0xCF,0xC8}, {0xCF,0xD3},
- {0xCF,0xCA}, {0xCF,0xD4}, {0xCF,0xD1}, {0xCF,0xC9},
- {0xFE,0x5E}, {0xAC,0xC0}, {0xCF,0xD6}, {0xCF,0xC7},
- {0xAC,0xC3}, {0xFB,0xD7}, {0xFE,0x5A}, {0x94,0xC5},
- {0xD2,0xB4}, {0xD2,0xAB}, {0xD2,0xB6}, {0xFA,0xCA},
- {0xD2,0xAE}, {0xD2,0xB9}, {0xD2,0xBA}, {0xD2,0xAC},
- {0xD2,0xB8}, {0xD2,0xB5}, {0xD2,0xB3}, {0xD2,0xB7},
- {0xAF,0x5F}, {0xAF,0x5D}, {0x98,0xC1}, {0x97,0x5C},
- {0xD2,0xB1}, {0xFE,0x74}, {0xD2,0xAD}, {0x97,0x73},
- {0xD2,0xB0}, {0xD2,0xBB}, {0xD2,0xB2}, {0xAF,0x5E},
- {0xCF,0xCF}, {0xAF,0x5A}, {0xAF,0x5C}, {0xFA,0x46},
- {0x97,0x64}, {0xD6,0x78}, {0xD6,0x6D}, {0xD6,0x6B},
- {0xFE,0x68}, {0xD6,0x6C}, {0x96,0x4E}, {0xD6,0x73},
- {0x97,0x65}, {0xD6,0x74}, {0xD6,0x70}, {0xB2,0x7B},
- {0xD6,0x75}, {0xD6,0x72}, {0xD6,0x6F}, {0x8C,0x5A},
- {0xB2,0x79}, {0xD6,0x6E}, {0xB2,0x77}, {0xB2,0x7A},
- {0xD6,0x71}, {0xD6,0x79}, {0xAF,0x5B}, {0xB2,0x78},
- {0xD6,0x77}, {0xD6,0x76}, {0xB2,0x7C}, {0x89,0xA1},
- {0x95,0xFA}, {0x92,0xD4}, {0xFE,0x69}, {0xDA,0x7E},
- {0xFB,0x45}, {0x98,0xC8}, {0xDA,0xA1}, {0xB5,0x60},
- {0x90,0xEF}, {0xDA,0xA7}, {0x98,0xC9}, {0x98,0xCA},
- {0xDA,0xA9}, {0xDA,0xA2}, {0xB5,0x5A}, {0xDA,0xA6},
- {0xDA,0xA5}, {0xB5,0x5B}, {0xB5,0x61}, {0xB5,0x62},
- {0xDA,0xA8}, {0xB5,0x58}, {0xDA,0x7D}, {0xDA,0x7B},
- {0xDA,0xA3}, {0xDA,0x7A}, {0xB5,0x5F}, {0xDA,0x7C},
- {0xDA,0xA4}, {0xDA,0xAA}, {0xB5,0x59}, {0xB5,0x5E},
- {0xB5,0x5C}, {0xB5,0x5D}, {0x94,0x6D}, {0x94,0xB7},
- {0xFE,0x6C}, {0xB5,0x57}, {0x94,0x6B}, {0xB7,0xE9},
- {0xDE,0xB7}, {0xB7,0xE8}, {0xDE,0xBB}, {0x92,0xFC},
- {0xDE,0xB1}, {0x95,0xEB}, {0xDE,0xBC}, {0xFE,0x73},
- {0x97,0x6E}, {0xFE,0x5F}, {0xDE,0xB2}, {0xDE,0xB3},
- {0xDE,0xBD}, {0xDE,0xBA}, {0xDE,0xB8}, {0xDE,0xB9},
- {0xDE,0xB5}, {0xDE,0xB4}, {0xFD,0xBD}, {0xDE,0xBE},
- {0xB7,0xE5}, {0x92,0xD5}, {0xDE,0xB6}, {0xB7,0xEA},
- {0xB7,0xE4}, {0xB7,0xEB}, {0xB7,0xEC}, {0xFE,0xB9},
- {0xB7,0xE7}, {0xB7,0xE6}, {0xFE,0x71}, {0xE2,0xCE},
- {0xBA,0xBE}, {0xBA,0xBD}, {0xFB,0xBB}, {0xE2,0xD3},
- {0x94,0x7A}, {0xBC,0xFC}, {0xBA,0xBF}, {0x95,0xFB},
- {0xFE,0x77}, {0xBA,0xC1}, {0xE2,0xD4}, {0xB7,0xE3},
- {0xBA,0xC0}, {0xE2,0xD0}, {0xE2,0xD2}, {0xE2,0xCF},
- {0xFE,0x79}, {0xE2,0xD1}, {0xFE,0x75}, {0xE6,0xAB},
- {0x94,0x5D}, {0xE6,0xAA}, {0xE6,0xA7}, {0xBD,0x40},
- {0xEA,0x62}, {0xBD,0x41}, {0xE6,0xA6}, {0xFE,0x7C},
- {0xBC,0xFE}, {0xE6,0xA8}, {0xE6,0xA5}, {0xE6,0xA2},
- {0xE6,0xA9}, {0xE6,0xA3}, {0xE6,0xA4}, {0xBC,0xFD},
- {0x93,0x44}, {0x8E,0xA6}, {0xED,0x69}, {0xEA,0x66},
- {0xEA,0x65}, {0xEA,0x67}, {0xED,0x66}, {0xBF,0x5A},
- {0x92,0xD3}, {0xEA,0x63}, {0x94,0xB8}, {0xBF,0x58},
- {0xBF,0x5C}, {0xBF,0x5B}, {0xEA,0x64}, {0xEA,0x68},
- {0xBF,0x59}, {0xFC,0x71}, {0xED,0x6D}, {0xC0,0xF5},
- {0xC2,0x7A}, {0xC0,0xF6}, {0xC0,0xF3}, {0xED,0x6A},
- {0xED,0x68}, {0xED,0x6B}, {0xED,0x6E}, {0xC0,0xF4},
- {0xED,0x6C}, {0xED,0x67}, {0x97,0x5E}, {0xF0,0x42},
- {0xF0,0x45}, {0xF2,0x75}, {0xF0,0x40}, {0x8C,0xAD},
- {0xF4,0x6F}, {0xF0,0x46}, {0xC3,0xA2}, {0xF0,0x44},
- {0xC2,0x7B}, {0xF0,0x41}, {0xF0,0x43}, {0xF0,0x47},
- {0xF2,0x76}, {0xF2,0x74}, {0xFE,0xA7}, {0xC3,0xA3},
- {0xF2,0x73}, {0x94,0x6A}, {0xC4,0x6E}, {0x93,0xE3},
- {0x98,0xCF}, {0xC4,0xED}, {0xF6,0xF1}, {0xC4,0xEC},
- {0xF6,0xF3}, {0xF6,0xF0}, {0xF6,0xF2}, {0xC5,0xD0},
- {0xF8,0xB2}, {0xA5,0xCA}, {0xCD,0x6E}, {0xD2,0xBC},
- {0xD2,0xBD}, {0xB2,0x7D}, {0xDE,0xBF}, {0xBF,0x5D},
- {0xC3,0xA4}, {0xC5,0x7B}, {0xF8,0xB3}, {0xA5,0xCB},
- {0xA0,0xD9}, {0xCD,0x6F}, {0xA2,0x60}, {0xCF,0xD7},
- {0xCF,0xD8}, {0xA0,0xBF}, {0xA0,0x4D}, {0xA0,0xB8},
- {0xD2,0xBE}, {0xD2,0xBF}, {0xB2,0x7E}, {0xB2,0xA1},
- {0xA0,0xCE}, {0xDA,0xAB}, {0xDE,0xC2}, {0xDE,0xC1},
- {0xDE,0xC0}, {0xE2,0xD5}, {0xE2,0xD6}, {0xE2,0xD7},
- {0xBA,0xC2}, {0xA0,0xB7}, {0xE6,0xAD}, {0xE6,0xAC},
- {0xEA,0x69}, {0xBF,0x5E}, {0xBF,0x5F}, {0xFE,0xA9},
- {0xED,0x72}, {0xED,0x6F}, {0xED,0x70}, {0xED,0x71},
- {0xF0,0x49}, {0xF0,0x48}, {0xC2,0x7C}, {0xF2,0x77},
- {0xF5,0xDE}, {0xA5,0xCC}, {0x89,0xC3}, {0xAC,0xC6},
- {0xB2,0xA2}, {0xDE,0xC3}, {0xFE,0xAB}, {0xA5,0xCD},
- {0xD2,0xC0}, {0xB2,0xA3}, {0xB5,0x63}, {0xB5,0x64},
- {0xA5,0xCE}, {0xA5,0xCF}, {0xCA,0x46}, {0xA8,0x6A},
- {0xA8,0x69}, {0xAC,0xC7}, {0xCF,0xD9}, {0xDA,0xAC},
- {0xA5,0xD0}, {0xA5,0xD1}, {0xA5,0xD2}, {0xA5,0xD3},
- {0x9D,0xF4}, {0x89,0x6D}, {0xA8,0x6B}, {0xA8,0x6C},
- {0xCB,0x6E}, {0xCB,0x6D}, {0x9C,0x7B}, {0xAA,0xB6},
- {0xCD,0x72}, {0xCD,0x70}, {0xCD,0x71}, {0x98,0xD2},
- {0x9F,0xA9}, {0xCF,0xDA}, {0xCF,0xDB}, {0xFE,0xB2},
- {0xAC,0xCB}, {0xAC,0xC9}, {0xFE,0xB1}, {0xAC,0xCA},
- {0xAC,0xC8}, {0x97,0xD9}, {0xA0,0xC4}, {0xAF,0x60},
- {0x94,0x76}, {0xAF,0x64}, {0xAF,0x63}, {0xD2,0xC1},
- {0xAF,0x62}, {0xAF,0x61}, {0xD2,0xC2}, {0x99,0x78},
- {0xB2,0xA6}, {0xD6,0x7B}, {0xD6,0x7A}, {0xB2,0xA4},
- {0xB2,0xA5}, {0xFE,0xB3}, {0xB5,0x66}, {0xB5,0x65},
- {0xDA,0xAE}, {0x98,0xD3}, {0xFE,0xB4}, {0xDA,0xAD},
- {0xB2,0xA7}, {0x98,0xD4}, {0xB7,0xED}, {0xDE,0xC5},
- {0xB7,0xEE}, {0xDE,0xC4}, {0x9F,0xB9}, {0xE2,0xD8},
- {0xE6,0xAE}, {0xBD,0x42}, {0xEA,0x6A}, {0x94,0x71},
- {0xED,0x73}, {0xC3,0xA6}, {0xC3,0xA5}, {0xC5,0x7C},
- {0xA5,0xD4}, {0xCD,0x73}, {0x98,0xD5}, {0xFE,0xB8},
- {0xB2,0xA8}, {0xE2,0xD9}, {0xBA,0xC3}, {0xC6,0xD4},
- {0xCB,0x6F}, {0xCB,0x70}, {0xCD,0x74}, {0xAA,0xB8},
- {0xAA,0xB9}, {0xAA,0xB7}, {0xFE,0xBA}, {0xAC,0xCF},
- {0xAC,0xD0}, {0xAC,0xCD}, {0xAC,0xCE}, {0xCF,0xDC},
- {0xCF,0xDD}, {0xAC,0xCC}, {0xD2,0xC3}, {0x9E,0x5C},
- {0xAF,0x68}, {0xAF,0x69}, {0xFE,0xBB}, {0xB2,0xAB},
- {0xD2,0xC9}, {0xAF,0x6E}, {0xAF,0x6C}, {0xD2,0xCA},
- {0xD2,0xC5}, {0xAF,0x6B}, {0xAF,0x6A}, {0xAF,0x65},
- {0xD2,0xC8}, {0xD2,0xC7}, {0xD2,0xC4}, {0xAF,0x6D},
- {0xA0,0x44}, {0xD2,0xC6}, {0xAF,0x66}, {0xAF,0x67},
- {0x98,0xD7}, {0xB2,0xAC}, {0xD6,0xA1}, {0xD6,0xA2},
- {0xB2,0xAD}, {0xD6,0x7C}, {0xD6,0x7E}, {0xD6,0xA4},
- {0xD6,0xA3}, {0xD6,0x7D}, {0xB2,0xA9}, {0xB2,0xAA},
- {0xDA,0xB6}, {0xB5,0x6B}, {0xB5,0x6A}, {0xDA,0xB0},
- {0xB5,0x68}, {0x98,0xD8}, {0xDA,0xB3}, {0xB5,0x6C},
- {0xDA,0xB4}, {0xB5,0x6D}, {0xDA,0xB1}, {0xB5,0x67},
- {0xB5,0x69}, {0xDA,0xB5}, {0xDA,0xB2}, {0xDA,0xAF},
- {0xDE,0xD2}, {0xDE,0xC7}, {0xB7,0xF0}, {0xB7,0xF3},
- {0xB7,0xF2}, {0xB7,0xF7}, {0xB7,0xF6}, {0xDE,0xD3},
- {0xDE,0xD1}, {0xDE,0xCA}, {0xDE,0xCE}, {0xDE,0xCD},
- {0xB7,0xF4}, {0xDE,0xD0}, {0xDE,0xCC}, {0xDE,0xD4},
- {0xDE,0xCB}, {0xB7,0xF5}, {0xB7,0xEF}, {0xB7,0xF1},
- {0xFE,0xBC}, {0xDE,0xC9}, {0x9F,0xFE}, {0xE2,0xDB},
- {0xBA,0xC7}, {0xE2,0xDF}, {0xBA,0xC6}, {0xE2,0xDC},
- {0xBA,0xC5}, {0xDE,0xC8}, {0xDE,0xCF}, {0xE2,0xDE},
- {0xBA,0xC8}, {0xE2,0xE0}, {0xE2,0xDD}, {0xE2,0xDA},
- {0xE6,0xB1}, {0xE6,0xB5}, {0xE6,0xB7}, {0xE6,0xB3},
- {0xE6,0xB2}, {0xE6,0xB0}, {0xBD,0x45}, {0xBD,0x43},
- {0xBD,0x48}, {0xBD,0x49}, {0xE6,0xB4}, {0xBD,0x46},
- {0xE6,0xAF}, {0xBD,0x47}, {0xBA,0xC4}, {0xE6,0xB6},
- {0xBD,0x44}, {0xFE,0xBD}, {0xEA,0x6C}, {0xEA,0x6B},
- {0xEA,0x73}, {0xEA,0x6D}, {0xEA,0x72}, {0xEA,0x6F},
- {0xBF,0x60}, {0xEA,0x71}, {0xBF,0x61}, {0xBF,0x62},
- {0x9D,0xDD}, {0xEA,0x70}, {0xEA,0x6E}, {0x9E,0xE1},
- {0xC0,0xF8}, {0xED,0x74}, {0xC0,0xF7}, {0xED,0x77},
- {0xED,0x75}, {0xED,0x76}, {0xC0,0xF9}, {0x98,0xDA},
- {0x9D,0xDF}, {0xFE,0xBF}, {0xF0,0x4D}, {0xFE,0xBE},
- {0xC2,0xA1}, {0xF0,0x4E}, {0x9E,0xEB}, {0xC2,0x7D},
- {0xF0,0x4F}, {0xC2,0x7E}, {0xF0,0x4C}, {0xF0,0x50},
- {0xF0,0x4A}, {0xC3,0xA7}, {0xF2,0x78}, {0xC3,0xA8},
- {0xC4,0x6F}, {0xF0,0x4B}, {0xC4,0x70}, {0x9E,0x59},
- {0xA0,0x5C}, {0xC4,0xEE}, {0xF5,0xDF}, {0xC5,0x7E},
- {0xF6,0xF4}, {0xC5,0x7D}, {0xFE,0xC0}, {0xF7,0xEA},
- {0xC5,0xF5}, {0xC5,0xF6}, {0x94,0x77}, {0x98,0xDC},
- {0xF9,0xCC}, {0xFE,0xC1}, {0xAC,0xD1}, {0xCF,0xDE},
- {0x98,0xDE}, {0xB5,0x6E}, {0xB5,0x6F}, {0xA5,0xD5},
- {0xA6,0xCA}, {0xCA,0x47}, {0xCB,0x71}, {0xA8,0x6D},
- {0xAA,0xBA}, {0xAC,0xD2}, {0xAC,0xD3}, {0xAC,0xD4},
- {0xD6,0xA6}, {0xD2,0xCB}, {0xAF,0x6F}, {0xB2,0xAE},
- {0xD6,0xA5}, {0xFE,0xC3}, {0xDA,0xB8}, {0xB5,0x71},
- {0xDA,0xB7}, {0xB5,0x70}, {0xDE,0xD5}, {0xBD,0x4A},
- {0xE6,0xBB}, {0xE6,0xB8}, {0xE6,0xB9}, {0xE6,0xBA},
- {0xFE,0xC8}, {0xED,0x78}, {0xFE,0xC9}, {0xF0,0x51},
- {0xF4,0x71}, {0xF4,0x70}, {0xF6,0xF5}, {0xA5,0xD6},
- {0xCD,0x75}, {0xAF,0x70}, {0xB5,0x72}, {0xDE,0xD6},
- {0xFE,0xCA}, {0xE2,0xE1}, {0xBD,0x4B}, {0xEA,0x74},
- {0xF0,0x52}, {0xF4,0x72}, {0xA5,0xD7}, {0xAA,0xBB},
- {0xAC,0xD7}, {0xCF,0xDF}, {0xAC,0xD8}, {0xAC,0xD6},
- {0xAC,0xD5}, {0xD2,0xCC}, {0xAF,0x71}, {0xFE,0xCB},
- {0xAF,0x72}, {0xAF,0x73}, {0xB2,0xB0}, {0xD6,0xA7},
- {0xB2,0xAF}, {0x9F,0xC2}, {0x8C,0x6B}, {0xDA,0xB9},
- {0xB2,0xB1}, {0xB5,0x73}, {0xDE,0xD7}, {0xB7,0xF8},
- {0xB7,0xF9}, {0xBA,0xC9}, {0xBA,0xCA}, {0xBD,0x4C},
- {0xBF,0x64}, {0xEA,0x75}, {0xBF,0x63}, {0xED,0x79},
- {0xC0,0xFA}, {0xF0,0x53}, {0xF4,0x73}, {0xA5,0xD8},
- {0xA8,0x6E}, {0xCD,0x78}, {0xCD,0x77}, {0xAA,0xBC},
- {0xCD,0x76}, {0xAA,0xBD}, {0xCD,0x79}, {0xCF,0xE5},
- {0xAC,0xDB}, {0xAC,0xDA}, {0xCF,0xE7}, {0xCF,0xE6},
- {0xAC,0xDF}, {0xAC,0xDE}, {0xAC,0xD9}, {0xCF,0xE1},
- {0xCF,0xE2}, {0xCF,0xE3}, {0xAC,0xE0}, {0xCF,0xE0},
- {0xAC,0xDC}, {0xCF,0xE4}, {0xAC,0xDD}, {0x98,0xC4},
- {0x94,0xB0}, {0x94,0xB1}, {0xD2,0xCF}, {0xD2,0xD3},
- {0xD2,0xD1}, {0xD2,0xD0}, {0xD2,0xD4}, {0xD2,0xD5},
- {0xD2,0xD6}, {0xD2,0xCE}, {0xD2,0xCD}, {0xFE,0xD1},
- {0xAF,0x75}, {0xAF,0x76}, {0xD2,0xD7}, {0xD2,0xD2},
- {0xA0,0xC1}, {0xD6,0xB0}, {0xFE,0xD2}, {0xD2,0xD8},
- {0xAF,0x77}, {0xAF,0x74}, {0xA0,0xCD}, {0xD6,0xAA},
- {0xD6,0xA9}, {0xD6,0xAB}, {0xD6,0xAC}, {0xD6,0xAE},
- {0xD6,0xAD}, {0xD6,0xB2}, {0xB2,0xB5}, {0xB2,0xB2},
- {0xB2,0xB6}, {0xD6,0xA8}, {0xB2,0xB7}, {0xD6,0xB1},
- {0xB2,0xB4}, {0xD6,0xAF}, {0xB2,0xB3}, {0xFE,0xD3},
- {0x98,0xE5}, {0xDA,0xBC}, {0xDA,0xBE}, {0xDA,0xBA},
- {0xDA,0xBB}, {0xDA,0xBF}, {0xDA,0xC1}, {0xDA,0xC2},
- {0xDA,0xBD}, {0xDA,0xC0}, {0xB5,0x74}, {0xDE,0xDB},
- {0xDE,0xE0}, {0xDE,0xD8}, {0xDE,0xDC}, {0xFE,0xD6},
- {0xDE,0xE1}, {0xDE,0xDD}, {0xB7,0xFA}, {0xB8,0x43},
- {0xB7,0xFD}, {0xDE,0xD9}, {0xDE,0xDA}, {0xBA,0xCE},
- {0xB8,0x46}, {0xB7,0xFE}, {0xB8,0x44}, {0xB7,0xFC},
- {0xDE,0xDF}, {0xB8,0x45}, {0xDE,0xDE}, {0xB8,0x41},
- {0xB7,0xFB}, {0xB8,0x42}, {0xDE,0xE2}, {0xE2,0xE6},
- {0xE2,0xE8}, {0x91,0xE4}, {0x8F,0xC7}, {0x94,0xAE},
- {0xB8,0x40}, {0x8A,0x4F}, {0x94,0xB2}, {0xE2,0xE3},
- {0xBA,0xCC}, {0xE2,0xE9}, {0xBA,0xCD}, {0xE2,0xE7},
- {0xE2,0xE2}, {0xE2,0xE5}, {0xE2,0xEA}, {0xBA,0xCB},
- {0xE2,0xE4}, {0xBD,0x4E}, {0xE6,0xBF}, {0xE6,0xBE},
- {0xBD,0x51}, {0xBD,0x4F}, {0xE6,0xBC}, {0xBD,0x4D},
- {0xE6,0xBD}, {0xBD,0x50}, {0x8F,0xD4}, {0xEA,0x7D},
- {0xEA,0xA1}, {0x98,0xEA}, {0xEA,0x7E}, {0xEA,0x76},
- {0xEA,0x7A}, {0xEA,0x79}, {0xEA,0x77}, {0xBF,0x66},
- {0xBF,0x67}, {0xBF,0x65}, {0xEA,0x78}, {0xEA,0x7B},
- {0xEA,0x7C}, {0xBF,0x68}, {0xC1,0x40}, {0xED,0xA3},
- {0xC0,0xFC}, {0xED,0x7B}, {0xC0,0xFE}, {0xC1,0x41},
- {0xFE,0xD8}, {0xC0,0xFD}, {0xED,0xA2}, {0xED,0x7C},
- {0xC0,0xFB}, {0xED,0xA1}, {0xED,0x7A}, {0xED,0x7E},
- {0xED,0x7D}, {0x9D,0xE0}, {0xF0,0x55}, {0xC2,0xA4},
- {0xC2,0xA5}, {0xC2,0xA2}, {0x98,0xEE}, {0xC2,0xA3},
- {0xF0,0x54}, {0x95,0xC4}, {0xF2,0x7B}, {0xFC,0xE8},
- {0xC3,0xA9}, {0xF2,0x79}, {0xF2,0x7A}, {0x98,0xEF},
- {0xF4,0x74}, {0xF4,0x77}, {0xF4,0x75}, {0xF4,0x76},
- {0xF5,0xE0}, {0xC4,0xEF}, {0xF7,0xEB}, {0xF8,0xB4},
- {0xC5,0xF7}, {0xF8,0xF8}, {0xF8,0xF9}, {0xC6,0x66},
- {0xA5,0xD9}, {0xAC,0xE1}, {0x8C,0x6E}, {0xDA,0xC3},
- {0xDE,0xE3}, {0xA5,0xDA}, {0xA8,0x6F}, {0xAA,0xBE},
- {0xFA,0xD8}, {0xCF,0xE8}, {0xCF,0xE9}, {0xAF,0x78},
- {0xDA,0xC4}, {0xB5,0x75}, {0xB8,0x47}, {0xC1,0x42},
- {0xED,0xA4}, {0xF2,0x7C}, {0xF4,0x78}, {0xA5,0xDB},
- {0xFE,0xDC}, {0xCD,0xA1}, {0xCD,0x7A}, {0xCD,0x7C},
- {0xCD,0x7E}, {0xCD,0x7D}, {0xCD,0x7B}, {0xAA,0xBF},
- {0xA0,0xAE}, {0xAC,0xE2}, {0xCF,0xF2}, {0xCF,0xED},
- {0xCF,0xEA}, {0x9D,0x4C}, {0xCF,0xF1}, {0xAC,0xE4},
- {0xAC,0xE5}, {0xCF,0xF0}, {0xCF,0xEF}, {0xCF,0xEE},
- {0xCF,0xEB}, {0xCF,0xEC}, {0xCF,0xF3}, {0xAC,0xE3},
- {0x98,0xF1}, {0x98,0xF3}, {0xAF,0x7C}, {0x94,0xC1},
- {0xAF,0xA4}, {0xAF,0xA3}, {0xD2,0xE1}, {0xD2,0xDB},
- {0xD2,0xD9}, {0xAF,0xA1}, {0xD6,0xB9}, {0xAF,0x7A},
- {0xD2,0xDE}, {0xD2,0xE2}, {0xD2,0xE4}, {0xD2,0xE0},
- {0xD2,0xDA}, {0xAF,0xA2}, {0xD2,0xDF}, {0xD2,0xDD},
- {0xAF,0x79}, {0xD2,0xE5}, {0xAF,0xA5}, {0xD2,0xE3},
- {0xAF,0x7D}, {0xD2,0xDC}, {0xAF,0x7E}, {0xAF,0x7B},
- {0x98,0xF5}, {0xFA,0x4F}, {0x96,0xE2}, {0x94,0x50},
- {0xB2,0xB9}, {0x96,0xA2}, {0xD6,0xBA}, {0x98,0xF6},
- {0xD6,0xB3}, {0xD6,0xB5}, {0xD6,0xB7}, {0x96,0xE5},
- {0xD6,0xB8}, {0xD6,0xB6}, {0xB2,0xBA}, {0xD6,0xBB},
- {0x98,0xF7}, {0xD6,0xB4}, {0xA0,0x46}, {0x96,0xE3},
- {0xDA,0xC8}, {0xB5,0x76}, {0xDA,0xD0}, {0xDA,0xC5},
- {0xDA,0xD1}, {0xDA,0xC6}, {0xDA,0xC7}, {0x98,0xF8},
- {0xDA,0xCF}, {0xDA,0xCE}, {0xDA,0xCB}, {0xB2,0xB8},
- {0xB5,0x77}, {0xDA,0xC9}, {0xDA,0xCC}, {0xB5,0x78},
- {0xDA,0xCD}, {0xDA,0xCA}, {0xDE,0xEE}, {0x9E,0xE4},
- {0xDE,0xF2}, {0xB8,0x4E}, {0xE2,0xF0}, {0xB8,0x51},
- {0xDE,0xF0}, {0xF9,0xD6}, {0xDE,0xED}, {0xDE,0xE8},
- {0xDE,0xEA}, {0xDE,0xEB}, {0xDE,0xE4}, {0x94,0xC3},
- {0xB8,0x4D}, {0xB8,0x4C}, {0x94,0xC2}, {0xB8,0x48},
- {0xDE,0xE7}, {0xB8,0x4F}, {0xB8,0x50}, {0xDE,0xE6},
- {0xDE,0xE9}, {0xDE,0xF1}, {0xB8,0x4A}, {0xB8,0x4B},
- {0xDE,0xEF}, {0xDE,0xE5}, {0xE2,0xF2}, {0xBA,0xD0},
- {0xE2,0xF4}, {0xDE,0xEC}, {0xE2,0xF6}, {0xBA,0xD4},
- {0xE2,0xF7}, {0xE2,0xF3}, {0xBA,0xD1}, {0xE2,0xEF},
- {0xBA,0xD3}, {0xE2,0xEC}, {0xE2,0xF1}, {0xE2,0xF5},
- {0xE2,0xEE}, {0xFE,0xE1}, {0xB8,0x49}, {0xFE,0xE9},
- {0xE2,0xEB}, {0xBA,0xD2}, {0xE2,0xED}, {0x96,0xE4},
- {0x89,0xAC}, {0x96,0xDB}, {0xBD,0x54}, {0xE6,0xC1},
- {0xBD,0x58}, {0xBD,0x56}, {0xBA,0xCF}, {0xE6,0xC8},
- {0xE6,0xC9}, {0xBD,0x53}, {0xFE,0xE2}, {0xE6,0xC7},
- {0xE6,0xCA}, {0xBD,0x55}, {0xBD,0x52}, {0xE6,0xC3},
- {0xE6,0xC0}, {0xE6,0xC5}, {0xE6,0xC2}, {0xBD,0x59},
- {0xE6,0xC4}, {0x94,0xC4}, {0xFE,0xE3}, {0xE6,0xC6},
- {0xBD,0x57}, {0xFE,0xE7}, {0x9F,0xFB}, {0xBF,0x6A},
- {0xEA,0xA8}, {0xEA,0xA2}, {0xEA,0xA6}, {0xEA,0xAC},
- {0xEA,0xAD}, {0xEA,0xA9}, {0xEA,0xAA}, {0xEA,0xA7},
- {0x8C,0x59}, {0xEA,0xA4}, {0xBF,0x6C}, {0xBF,0x69},
- {0xEA,0xA3}, {0xEA,0xA5}, {0xBF,0x6B}, {0xEA,0xAB},
- {0x93,0xC9}, {0xC1,0x46}, {0x94,0xE8}, {0xFB,0x56},
- {0xED,0xAA}, {0xED,0xA5}, {0xC1,0x45}, {0x90,0xC5},
- {0xC1,0x43}, {0xED,0xAC}, {0xC1,0x44}, {0xED,0xA8},
- {0xED,0xA9}, {0xED,0xA6}, {0xED,0xAD}, {0xF0,0x56},
- {0xC1,0x47}, {0xED,0xA7}, {0xED,0xAE}, {0xED,0xAB},
- {0xA0,0xA8}, {0xF0,0x5A}, {0xF0,0x57}, {0xC2,0xA6},
- {0xF0,0x5B}, {0xF0,0x5D}, {0xF0,0x5C}, {0xF0,0x58},
- {0xF0,0x59}, {0xF2,0xA3}, {0xC3,0xAA}, {0xF2,0x7E},
- {0xF2,0xA2}, {0xF2,0x7D}, {0xF2,0xA4}, {0xF2,0xA1},
- {0xF4,0x7A}, {0xF4,0x7D}, {0xF4,0x79}, {0xC4,0x71},
- {0xF4,0x7B}, {0xF4,0x7C}, {0xF4,0x7E}, {0xC4,0x72},
- {0xC4,0x74}, {0xC4,0x73}, {0xF5,0xE1}, {0xFE,0xE5},
- {0xF5,0xE3}, {0xF5,0xE2}, {0x98,0xFD}, {0x98,0xFB},
- {0xFE,0xE8}, {0xF6,0xF6}, {0x8E,0xBF}, {0xF8,0xB5},
- {0xF8,0xFA}, {0xA5,0xDC}, {0x8B,0xD8}, {0xFE,0xF7},
- {0xCB,0x72}, {0xAA,0xC0}, {0xCD,0xA3}, {0xAA,0xC1},
- {0xAA,0xC2}, {0xCD,0xA2}, {0xCF,0xF8}, {0xCF,0xF7},
- {0xAC,0xE6}, {0xAC,0xE9}, {0xAC,0xE8}, {0xAC,0xE7},
- {0xCF,0xF4}, {0xCF,0xF6}, {0xCF,0xF5}, {0xD2,0xE8},
- {0xAF,0xA7}, {0xD2,0xEC}, {0xD2,0xEB}, {0xD2,0xEA},
- {0xD2,0xE6}, {0xAF,0xA6}, {0xAF,0xAA}, {0xAF,0xAD},
- {0x8F,0x68}, {0x94,0xC6}, {0xAF,0xAE}, {0xD2,0xE7},
- {0xD2,0xE9}, {0xAF,0xAC}, {0xAF,0xAB}, {0xAF,0xA9},
- {0xAF,0xA8}, {0xD6,0xC2}, {0x9D,0xEA}, {0xD6,0xC0},
- {0xD6,0xBC}, {0xB2,0xBB}, {0xD6,0xBD}, {0xB2,0xBC},
- {0xD6,0xBE}, {0xD6,0xBF}, {0xD6,0xC1}, {0xB2,0xBD},
- {0xDA,0xD5}, {0xFC,0x69}, {0xDA,0xD4}, {0xDA,0xD3},
- {0xDA,0xD2}, {0xDE,0xF6}, {0xB8,0x52}, {0xDE,0xF3},
- {0xDE,0xF5}, {0x9C,0xDA}, {0xB8,0x53}, {0xFE,0xF3},
- {0xB8,0x54}, {0xDE,0xF4}, {0x9C,0x72}, {0xFE,0xF0},
- {0x89,0xC9}, {0xE3,0x41}, {0xE2,0xF9}, {0xE2,0xFA},
- {0xBA,0xD7}, {0xBA,0xD5}, {0xBA,0xD6}, {0xE3,0x43},
- {0x99,0x41}, {0xE3,0x42}, {0xE2,0xFE}, {0xE2,0xFD},
- {0xE2,0xFC}, {0xE2,0xFB}, {0xE3,0x40}, {0xE2,0xF8},
- {0x99,0x42}, {0xE6,0xCB}, {0xE6,0xD0}, {0xE6,0xCE},
- {0xFE,0xF5}, {0x91,0xD7}, {0xE6,0xCD}, {0xE6,0xCC},
- {0xE6,0xCF}, {0xEA,0xAE}, {0x94,0xCC}, {0xBF,0x6D},
- {0xC1,0x48}, {0xED,0xB0}, {0xFE,0xF8}, {0xC1,0x49},
- {0xED,0xAF}, {0xF0,0x5F}, {0xF0,0x5E}, {0xC2,0xA7},
- {0xF2,0xA5}, {0xC3,0xAB}, {0xF4,0xA1}, {0xC5,0xA1},
- {0xF6,0xF7}, {0xF8,0xB7}, {0xF8,0xB6}, {0xC9,0xA8},
- {0xAC,0xEA}, {0xAC,0xEB}, {0xD6,0xC3}, {0xB8,0x56},
- {0xA5,0xDD}, {0xA8,0x72}, {0xA8,0x71}, {0xA8,0x70},
- {0x97,0xA8}, {0xCD,0xA4}, {0xFE,0xFC}, {0xAA,0xC4},
- {0xAA,0xC3}, {0xAC,0xEE}, {0xFD,0xBF}, {0xCF,0xFA},
- {0xCF,0xFD}, {0xCF,0xFB}, {0xAC,0xEC}, {0xAC,0xED},
- {0xFE,0xFE}, {0xCF,0xF9}, {0xCF,0xFC}, {0xAF,0xB5},
- {0xD2,0xF3}, {0xD2,0xF5}, {0xD2,0xF4}, {0xAF,0xB2},
- {0xD2,0xEF}, {0x96,0xD1}, {0xAF,0xB0}, {0xAF,0xAF},
- {0xAF,0xB3}, {0xAF,0xB1}, {0xAF,0xB4}, {0xD2,0xF2},
- {0xD2,0xED}, {0xD2,0xEE}, {0xD2,0xF1}, {0xD2,0xF0},
- {0x94,0xD5}, {0x94,0xD0}, {0xD6,0xC6}, {0xD6,0xC7},
- {0xD6,0xC5}, {0xD6,0xC4}, {0xB2,0xBE}, {0xB5,0x7D},
- {0xDA,0xD6}, {0xDA,0xD8}, {0xDA,0xDA}, {0xB5,0x7C},
- {0x99,0x44}, {0xB5,0x7A}, {0xDA,0xD7}, {0xB5,0x7B},
- {0xDA,0xD9}, {0xB5,0x79}, {0xDF,0x41}, {0xDE,0xF7},
- {0xDE,0xFA}, {0xDE,0xFE}, {0xB8,0x5A}, {0xDE,0xFC},
- {0xDE,0xFB}, {0xDE,0xF8}, {0xDE,0xF9}, {0xB8,0x58},
- {0xDF,0x40}, {0xB8,0x57}, {0xB8,0x5C}, {0xB8,0x5B},
- {0xB8,0x59}, {0xDE,0xFD}, {0xE3,0x49}, {0xE3,0x48},
- {0x8C,0x63}, {0xE3,0x44}, {0xA0,0xB3}, {0xBA,0xD8},
- {0xE3,0x47}, {0xE3,0x46}, {0xBA,0xD9}, {0xBD,0x5E},
- {0xE6,0xD2}, {0x94,0xCF}, {0xBD,0x5F}, {0xBD,0x5B},
- {0xBD,0x5D}, {0x9F,0xFA}, {0xBD,0x5A}, {0xBD,0x5C},
- {0x91,0xE5}, {0xEA,0xAF}, {0x9C,0x6A}, {0xBF,0x70},
- {0xEA,0xB1}, {0xEA,0xB0}, {0x8E,0x49}, {0xE3,0x45},
- {0xBF,0x72}, {0xBF,0x71}, {0xBF,0x6E}, {0xBF,0x6F},
- {0xED,0xB5}, {0xED,0xB3}, {0xC1,0x4A}, {0xED,0xB4},
- {0xED,0xB6}, {0xED,0xB2}, {0xED,0xB1}, {0xF0,0x60},
- {0xC2,0xAA}, {0xC2,0xA8}, {0xC2,0xA9}, {0x8E,0x4C},
- {0xF2,0xA6}, {0xF2,0xA7}, {0xC3,0xAD}, {0xC3,0xAC},
- {0xF4,0xA3}, {0xF4,0xA4}, {0xF4,0xA2}, {0xF6,0xF8},
- {0xF6,0xF9}, {0xA5,0xDE}, {0xCA,0x48}, {0xA8,0x73},
- {0xCD,0xA5}, {0xAA,0xC6}, {0xAA,0xC5}, {0xCD,0xA6},
- {0x8E,0x4D}, {0xD0,0x40}, {0xAC,0xEF}, {0xCF,0xFE},
- {0xAC,0xF0}, {0x9A,0x73}, {0xAF,0xB6}, {0xD2,0xF8},
- {0xD2,0xF6}, {0xD2,0xFC}, {0xAF,0xB7}, {0xD2,0xF7},
- {0xD2,0xFB}, {0xD2,0xF9}, {0xD2,0xFA}, {0xD6,0xC8},
- {0xD6,0xCA}, {0x99,0x47}, {0xB2,0xBF}, {0x8C,0xB1},
- {0xD6,0xC9}, {0xB2,0xC0}, {0xB5,0xA2}, {0xB5,0xA1},
- {0xB5,0x7E}, {0xDA,0xDB}, {0xDF,0x44}, {0xB8,0x5D},
- {0xB8,0x5E}, {0xDF,0x43}, {0xDF,0x42}, {0xE3,0x4A},
- {0xBA,0xDB}, {0xBA,0xDA}, {0xE3,0x4B}, {0xE3,0x4C},
- {0xBD,0x61}, {0xBD,0x60}, {0x8E,0x50}, {0xEA,0xB5},
- {0xE6,0xD3}, {0xE6,0xD5}, {0xE6,0xD4}, {0xEA,0xB4},
- {0xEA,0xB2}, {0xEA,0xB6}, {0xEA,0xB3}, {0xBF,0x73},
- {0x8E,0x4F}, {0x99,0x49}, {0xED,0xB7}, {0xC1,0x4B},
- {0xED,0xB8}, {0xED,0xB9}, {0x8E,0x51}, {0x8E,0x52},
- {0xC2,0xAB}, {0xC2,0xAC}, {0xC4,0x75}, {0x9A,0xB2},
- {0x89,0xA5}, {0xC5,0xD1}, {0xA5,0xDF}, {0x99,0x4C},
- {0xD0,0x41}, {0x9F,0xF8}, {0xD2,0xFD}, {0xAF,0xB8},
- {0x8E,0x56}, {0x99,0x4D}, {0x91,0xCA}, {0x8E,0x57},
- {0xB3,0xBA}, {0xB3,0xB9}, {0x94,0xE1}, {0xB5,0xA4},
- {0xDA,0xDD}, {0xB5,0xA3}, {0xDA,0xDC}, {0x90,0x47},
- {0x8F,0xD8}, {0x8E,0x58}, {0xDF,0x45}, {0xBA,0xDC},
- {0xE3,0x4D}, {0xBA,0xDD}, {0xC4,0x76}, {0xF4,0xA5},
- {0xA6,0xCB}, {0xAA,0xC7}, {0xCD,0xA7}, {0xAC,0xF2},
- {0x94,0xEB}, {0xAC,0xF1}, {0xD0,0x42}, {0xD0,0x43},
- {0xD3,0x40}, {0xD3,0x42}, {0xAF,0xB9}, {0xD3,0x44},
- {0xD3,0x47}, {0xD3,0x45}, {0x8E,0x5C}, {0x95,0x53},
- {0xD3,0x46}, {0xD3,0x43}, {0xD2,0xFE}, {0xAF,0xBA},
- {0xD3,0x48}, {0xD3,0x41}, {0x9F,0xE5}, {0xD6,0xD3},
- {0xB2,0xC6}, {0xD6,0xDC}, {0xB2,0xC3}, {0xD6,0xD5},
- {0xB2,0xC7}, {0x9F,0x56}, {0xB2,0xC1}, {0xD6,0xD0},
- {0xD6,0xDD}, {0xD6,0xD1}, {0xD6,0xCE}, {0xB2,0xC5},
- {0x95,0x4F}, {0xB2,0xC2}, {0x8E,0x5E}, {0xD6,0xD4},
- {0xD6,0xD7}, {0xB2,0xC4}, {0xD6,0xD8}, {0xB2,0xC8},
- {0xD6,0xD9}, {0xD6,0xCF}, {0xD6,0xD6}, {0xD6,0xDA},
- {0xD6,0xD2}, {0xD6,0xCD}, {0xD6,0xCB}, {0xD6,0xDB},
- {0x99,0x6A}, {0xDA,0xDF}, {0xDA,0xE4}, {0x9C,0x64},
- {0x9C,0xD9}, {0xDA,0xE0}, {0xDA,0xE6}, {0xB5,0xA7},
- {0xD6,0xCC}, {0xDA,0xE1}, {0xB5,0xA5}, {0xDA,0xDE},
- {0xB5,0xAC}, {0xDA,0xE2}, {0xB5,0xAB}, {0xDA,0xE3},
- {0xB5,0xAD}, {0xB5,0xA8}, {0xB5,0xAE}, {0xB5,0xA9},
- {0xB5,0xAA}, {0x8E,0x5D}, {0xB5,0xA6}, {0xDA,0xE5},
- {0xB8,0x61}, {0xDF,0x50}, {0x99,0x50}, {0xDF,0x53},
- {0xDF,0x47}, {0xDF,0x4C}, {0xDF,0x46}, {0xB8,0x63},
- {0xDF,0x4A}, {0x99,0x51}, {0xDF,0x48}, {0xB8,0x62},
- {0x8E,0x62}, {0xDF,0x4F}, {0xDF,0x4E}, {0xDF,0x4B},
- {0xDF,0x4D}, {0xDF,0x49}, {0xBA,0xE1}, {0xDF,0x52},
- {0xB8,0x5F}, {0xDF,0x51}, {0x99,0x52}, {0xE3,0x5D},
- {0xBA,0xE8}, {0xE3,0x58}, {0xBA,0xE7}, {0xE3,0x4E},
- {0xE3,0x50}, {0xBA,0xE0}, {0xE3,0x55}, {0xE3,0x54},
- {0xE3,0x57}, {0xBA,0xE5}, {0xE3,0x52}, {0xE3,0x51},
- {0x8E,0x68}, {0xBA,0xE4}, {0xBA,0xDF}, {0xE3,0x53},
- {0xBA,0xE2}, {0xE3,0x59}, {0xE3,0x5B}, {0xE3,0x56},
- {0xE3,0x4F}, {0xBA,0xE3}, {0xBD,0x69}, {0xBA,0xDE},
- {0x8E,0x61}, {0x9F,0x59}, {0xE3,0x5C}, {0xE6,0xD9},
- {0xBD,0x62}, {0xE6,0xDB}, {0xBD,0x63}, {0x8B,0xB3},
- {0xBD,0x65}, {0xE6,0xDE}, {0xE6,0xD6}, {0xBA,0xE6},
- {0xE6,0xDC}, {0xE6,0xD8}, {0xB8,0x60}, {0xBD,0x68},
- {0xBD,0x64}, {0xBD,0x66}, {0xBD,0x67}, {0xBF,0x76},
- {0xE6,0xDD}, {0xE6,0xD7}, {0xBD,0x6A}, {0xE6,0xDA},
- {0x9F,0x5D}, {0x8E,0x66}, {0xEA,0xC0}, {0xEA,0xBB},
- {0xEA,0xC5}, {0xBF,0x74}, {0xEA,0xBD}, {0xBF,0x78},
- {0xEA,0xC3}, {0xEA,0xBA}, {0xEA,0xB7}, {0xEA,0xC6},
- {0xC1,0x51}, {0xBF,0x79}, {0xEA,0xC2}, {0xEA,0xB8},
- {0xBF,0x77}, {0xEA,0xBC}, {0xBF,0x7B}, {0xEA,0xB9},
- {0xEA,0xBE}, {0xBF,0x7A}, {0xEA,0xC1}, {0xEA,0xC4},
- {0x8C,0xB2}, {0xED,0xCB}, {0xED,0xCC}, {0xED,0xBC},
- {0xED,0xC3}, {0xED,0xC1}, {0xC1,0x4F}, {0xED,0xC8},
- {0xEA,0xBF}, {0x8E,0x6E}, {0xED,0xBF}, {0x9F,0x64},
- {0xED,0xC9}, {0xC1,0x4E}, {0xED,0xBE}, {0xED,0xBD},
- {0xED,0xC7}, {0xED,0xC4}, {0xED,0xC6}, {0xED,0xBA},
- {0xED,0xCA}, {0xC1,0x4C}, {0xED,0xC5}, {0xED,0xCE},
- {0xED,0xC2}, {0xC1,0x50}, {0xC1,0x4D}, {0xED,0xC0},
- {0xED,0xBB}, {0xED,0xCD}, {0xBF,0x75}, {0x99,0x53},
- {0xFA,0xB8}, {0xF0,0x63}, {0x99,0x54}, {0xF0,0x61},
- {0xF0,0x67}, {0xC2,0xB0}, {0xF0,0x65}, {0xF0,0x64},
- {0xC2,0xB2}, {0xF0,0x6A}, {0xC2,0xB1}, {0xF0,0x6B},
- {0xF0,0x68}, {0xC2,0xAE}, {0xF0,0x69}, {0xF0,0x62},
- {0xC2,0xAF}, {0xC2,0xAD}, {0xF2,0xAB}, {0xF0,0x66},
- {0xF0,0x6C}, {0xF2,0xA8}, {0x8E,0x70}, {0xC3,0xB2},
- {0xC3,0xB0}, {0xF2,0xAA}, {0xF2,0xAC}, {0xF2,0xA9},
- {0xC3,0xB1}, {0xC3,0xAE}, {0xC3,0xAF}, {0xC3,0xB3},
- {0x9F,0x61}, {0xC4,0x78}, {0x8E,0x72}, {0xF4,0xAA},
- {0xF4,0xA9}, {0xF4,0xA7}, {0xF4,0xA6}, {0xF4,0xA8},
- {0xC4,0x77}, {0xC4,0x79}, {0xC4,0xF0}, {0xA0,0x6B},
- {0xF5,0xE5}, {0xF5,0xE4}, {0x9F,0x40}, {0xF6,0xFA},
- {0xF6,0xFC}, {0xF6,0xFE}, {0xF6,0xFD}, {0xF6,0xFB},
- {0x94,0xED}, {0xC5,0xA3}, {0xC5,0xA2}, {0xC5,0xD3},
- {0xC5,0xD2}, {0xC5,0xD4}, {0xF7,0xED}, {0xF7,0xEC},
- {0xF8,0xFB}, {0xF8,0xB8}, {0xF8,0xFC}, {0xC6,0x58},
- {0x94,0xEE}, {0xC6,0x59}, {0xF9,0x6D}, {0x9F,0xBD},
- {0xC6,0x7E}, {0xA6,0xCC}, {0x8E,0x7B}, {0xCD,0xA8},
- {0xD0,0x45}, {0xD0,0x46}, {0xD0,0x44}, {0x99,0x57},
- {0x94,0xF7}, {0xAC,0xF3}, {0x9F,0x5F}, {0xD0,0x47},
- {0xD0,0x48}, {0xD0,0x49}, {0x8E,0x73}, {0xD3,0x49},
- {0xD3,0x4F}, {0x9F,0x62}, {0xD3,0x4D}, {0xAF,0xBB},
- {0xD3,0x4B}, {0xD3,0x4C}, {0xD3,0x4E}, {0x94,0xF6},
- {0xD3,0x4A}, {0xB2,0xC9}, {0xD6,0xDE}, {0xB2,0xCB},
- {0xD6,0xE0}, {0xB2,0xCA}, {0xD6,0xDF}, {0x99,0x58},
- {0xDA,0xE8}, {0xB5,0xAF}, {0xDA,0xEA}, {0xDA,0xE7},
- {0xD6,0xE1}, {0xB5,0xB0}, {0x8E,0x75}, {0xF9,0xDB},
- {0xDA,0xE9}, {0x90,0x72}, {0x94,0xF8}, {0xDF,0x56},
- {0xB8,0x64}, {0xDF,0x54}, {0xB8,0x65}, {0xDF,0x55},
- {0xB8,0x66}, {0x99,0x5A}, {0xBA,0xE9}, {0xE3,0x61},
- {0xE3,0x5E}, {0xE3,0x60}, {0xBA,0xEA}, {0xBA,0xEB},
- {0xE3,0x5F}, {0xA0,0xB0}, {0x8C,0xB3}, {0xE6,0xDF},
- {0x8E,0x79}, {0xE6,0xE0}, {0x8E,0x78}, {0xBD,0x6B},
- {0xE6,0xE2}, {0xE6,0xE1}, {0x94,0xF3}, {0xA2,0x61},
- {0xEA,0xCA}, {0xEA,0xCB}, {0xEA,0xC7}, {0x98,0xAF},
- {0xEA,0xC8}, {0xBF,0x7C}, {0xBF,0x7D}, {0xEA,0xC9},
- {0xC1,0x57}, {0xA0,0xB2}, {0xC1,0x53}, {0xC1,0x58},
- {0xC1,0x54}, {0xC1,0x56}, {0xC1,0x52}, {0xC1,0x55},
- {0x8E,0x7A}, {0xC2,0xB3}, {0xED,0xCF}, {0xF2,0xAE},
- {0xF2,0xAD}, {0x99,0x5C}, {0xF4,0xAB}, {0xC4,0x7A},
- {0xC4,0x7B}, {0xF7,0x41}, {0xF5,0xE6}, {0x8E,0x7C},
- {0xF7,0x40}, {0x8E,0x7D}, {0xF8,0xFD}, {0xF9,0xA4},
- {0xA6,0xCD}, {0x8B,0xD9}, {0xA8,0x74}, {0x89,0xA2},
- {0xCD,0xA9}, {0xAA,0xC8}, {0xAC,0xF6}, {0xD0,0x4C},
- {0xAC,0xF4}, {0xD0,0x4A}, {0xAC,0xF9}, {0xAC,0xF5},
- {0xAC,0xFA}, {0xAC,0xF8}, {0xD0,0x4B}, {0xAC,0xF7},
- {0xAF,0xBF}, {0xAF,0xBE}, {0xD3,0x5A}, {0xAF,0xC7},
- {0xD3,0x53}, {0xD3,0x59}, {0xAF,0xC3}, {0xD3,0x52},
- {0xD3,0x58}, {0xD3,0x56}, {0xAF,0xC2}, {0xAF,0xC4},
- {0xD3,0x55}, {0xAF,0xBD}, {0xD3,0x54}, {0xAF,0xC8},
- {0xAF,0xC5}, {0xAF,0xC9}, {0xAF,0xC6}, {0xD3,0x51},
- {0xD3,0x50}, {0xD3,0x57}, {0xAF,0xC0}, {0xAF,0xBC},
- {0xAF,0xC1}, {0x9E,0xD7}, {0xD6,0xF0}, {0xD6,0xE9},
- {0xB5,0xB5}, {0xD6,0xE8}, {0xB2,0xCF}, {0xB2,0xD6},
- {0xB2,0xD3}, {0xB2,0xD9}, {0xB2,0xD8}, {0xB2,0xD4},
- {0xD6,0xE2}, {0xD6,0xE5}, {0xD6,0xE4}, {0xB2,0xD0},
- {0xD6,0xE6}, {0xD6,0xEF}, {0xB2,0xD1}, {0xD6,0xE3},
- {0xD6,0xEC}, {0xD6,0xED}, {0xB2,0xD2}, {0xD6,0xEA},
- {0xB2,0xD7}, {0xB2,0xCD}, {0xB2,0xD5}, {0xD6,0xE7},
- {0xB2,0xCC}, {0xD6,0xEB}, {0xD6,0xEE}, {0xA0,0xB6},
- {0xDA,0xFB}, {0xDA,0xF2}, {0xB5,0xB2}, {0xDA,0xF9},
- {0xDA,0xF6}, {0xDA,0xEE}, {0xDA,0xF7}, {0xB5,0xB4},
- {0xDA,0xEF}, {0xDA,0xEB}, {0x9E,0x42}, {0xB8,0x6C},
- {0xDA,0xF4}, {0x8E,0xA4}, {0xB5,0xB1}, {0xDA,0xFA},
- {0xB5,0xB8}, {0xB5,0xBA}, {0xDA,0xED}, {0xB5,0xB9},
- {0xDA,0xF0}, {0xB5,0xB3}, {0xDA,0xF8}, {0xDA,0xF1},
- {0xDA,0xF5}, {0xDA,0xF3}, {0xB5,0xB6}, {0xDA,0xEC},
- {0xB5,0xBB}, {0xB2,0xCE}, {0xB5,0xB7}, {0xB5,0xBC},
- {0xB8,0x68}, {0xDF,0x5D}, {0xDF,0x5F}, {0xDF,0x61},
- {0xDF,0x65}, {0xDF,0x5B}, {0xDF,0x59}, {0xB8,0x6A},
- {0xDF,0x60}, {0xDF,0x64}, {0xDF,0x5C}, {0xDF,0x58},
- {0xDF,0x57}, {0x8E,0xA7}, {0x8C,0x76}, {0xDF,0x62},
- {0xDF,0x5A}, {0xDF,0x5E}, {0xB8,0x6B}, {0xB8,0x69},
- {0xDF,0x66}, {0xB8,0x67}, {0xDF,0x63}, {0xE3,0x72},
- {0x95,0x42}, {0xBA,0xEE}, {0xE3,0x6A}, {0xBD,0x78},
- {0xE3,0x74}, {0xBA,0xF1}, {0xE3,0x78}, {0xBA,0xF7},
- {0xE3,0x65}, {0x98,0x7D}, {0xE3,0x75}, {0xE3,0x62},
- {0x97,0x55}, {0xE3,0x77}, {0xE3,0x66}, {0x8E,0xA8},
- {0xBA,0xFE}, {0xBA,0xFB}, {0xE3,0x76}, {0xE3,0x70},
- {0xBA,0xED}, {0xBA,0xF5}, {0xBA,0xF4}, {0x8E,0xAA},
- {0xBA,0xF3}, {0xBA,0xF9}, {0xE3,0x63}, {0xBA,0xFA},
- {0xE3,0x71}, {0xBA,0xF6}, {0xBA,0xEC}, {0xE3,0x73},
- {0xBA,0xEF}, {0xBA,0xF0}, {0xBA,0xF8}, {0xE3,0x68},
- {0xE3,0x67}, {0xE3,0x64}, {0xE3,0x6C}, {0xE3,0x69},
- {0xE3,0x6D}, {0xBA,0xFD}, {0xE3,0x79}, {0xBA,0xF2},
- {0xE3,0x6E}, {0xE3,0x6F}, {0x89,0xA3}, {0xE3,0x6B},
- {0x99,0x60}, {0x99,0x62}, {0xBA,0xFC}, {0x94,0xFC},
- {0x99,0x61}, {0xE6,0xE7}, {0xBD,0x70}, {0xBD,0x79},
- {0xBD,0x75}, {0xE6,0xE4}, {0x94,0xFA}, {0xBD,0x72},
- {0xBD,0x76}, {0xE6,0xF0}, {0xBD,0x6C}, {0xE6,0xE8},
- {0xBD,0x74}, {0x8E,0xAE}, {0x8E,0xB2}, {0xE6,0xEB},
- {0xE6,0xE6}, {0xBD,0x73}, {0xBD,0x77}, {0xE6,0xE5},
- {0xBD,0x71}, {0xE6,0xEF}, {0xBD,0x6E}, {0xE6,0xEE},
- {0xE6,0xED}, {0xBD,0x7A}, {0xE5,0x72}, {0xBD,0x6D},
- {0x8E,0xB0}, {0xE6,0xEC}, {0xE6,0xE3}, {0xBD,0x7B},
- {0xE6,0xEA}, {0xBD,0x6F}, {0x99,0x63}, {0x97,0xAA},
- {0xE6,0xE9}, {0x94,0xFB}, {0xBF,0xA2}, {0xBF,0xA7},
- {0xBF,0x7E}, {0xEA,0xD8}, {0xEA,0xCF}, {0xEA,0xDB},
- {0xEA,0xD3}, {0xEA,0xD9}, {0xBF,0xA8}, {0xBF,0xA1},
- {0xEA,0xCC}, {0xEA,0xD2}, {0xEA,0xDC}, {0xEA,0xD5},
- {0xEA,0xDA}, {0xEA,0xCE}, {0xEA,0xD6}, {0xBF,0xA3},
- {0xEA,0xD4}, {0xBF,0xA6}, {0xBF,0xA5}, {0xEA,0xD0},
- {0xEA,0xD1}, {0xEA,0xCD}, {0xEA,0xD7}, {0xBF,0xA4},
- {0xEA,0xDE}, {0xEA,0xDD}, {0x8E,0xBB}, {0xED,0xDA},
- {0xED,0xD6}, {0xC1,0x5F}, {0xED,0xD0}, {0xC1,0x59},
- {0xC1,0x69}, {0xED,0xDC}, {0xC1,0x61}, {0xC1,0x5D},
- {0xED,0xD3}, {0xC1,0x64}, {0xC1,0x67}, {0xED,0xDE},
- {0xC1,0x5C}, {0xED,0xD5}, {0xC1,0x65}, {0xED,0xE0},
- {0xED,0xDD}, {0xED,0xD1}, {0xC1,0x60}, {0xC1,0x5A},
- {0xC1,0x68}, {0xED,0xD8}, {0xC1,0x63}, {0xED,0xD2},
- {0xC1,0x5E}, {0xED,0xDF}, {0xC1,0x62}, {0xC1,0x5B},
- {0xED,0xD9}, {0xC1,0x66}, {0xED,0xD7}, {0xED,0xDB},
- {0xF0,0x6E}, {0xF0,0x74}, {0xC2,0xB9}, {0xF0,0x77},
- {0xC2,0xB4}, {0xC2,0xB5}, {0xF0,0x6F}, {0xF0,0x76},
- {0xF0,0x71}, {0xC2,0xBA}, {0xC2,0xB7}, {0x8C,0xDC},
- {0xF0,0x6D}, {0xC2,0xB6}, {0xF0,0x73}, {0xF0,0x75},
- {0xC2,0xB8}, {0xF0,0x72}, {0xF0,0x70}, {0x98,0x76},
- {0x8E,0xA1}, {0xF2,0xB8}, {0xC3,0xB7}, {0xC3,0xB8},
- {0xC3,0xB4}, {0x8C,0xB4}, {0xC3,0xB5}, {0x8E,0xB7},
- {0xF2,0xB4}, {0xF2,0xB2}, {0xF2,0xB6}, {0xC3,0xBA},
- {0xF2,0xB7}, {0xF2,0xB0}, {0xF2,0xAF}, {0xF2,0xB3},
- {0xF2,0xB1}, {0xC3,0xB6}, {0xF2,0xB5}, {0xF4,0xAC},
- {0xC4,0x7E}, {0xC4,0x7D}, {0xF4,0xAD}, {0x9D,0xA6},
- {0xF4,0xAF}, {0xF4,0xAE}, {0xC4,0xA1}, {0xF5,0xEB},
- {0xF5,0xE8}, {0xF5,0xE9}, {0xF5,0xE7}, {0xF5,0xEA},
- {0xC4,0xF2}, {0xF5,0xEC}, {0x9E,0xB0}, {0xC4,0xF1},
- {0xF7,0x42}, {0x8E,0xB8}, {0xC5,0xD5}, {0xC5,0xD7},
- {0xF7,0xEE}, {0xC5,0xD6}, {0xF8,0xB9}, {0xF9,0x40},
- {0xF9,0x42}, {0xF8,0xFE}, {0xF9,0x41}, {0xC6,0x6C},
- {0x9D,0x70}, {0x89,0x6E}, {0x89,0x6F}, {0x89,0x70},
- {0x89,0x71}, {0x89,0x72}, {0x89,0x73}, {0x89,0x74},
- {0xA6,0xCE}, {0x89,0x75}, {0xAC,0xFB}, {0xD2,0x6F},
- {0xAF,0xCA}, {0xB2,0xDA}, {0xDA,0xFC}, {0xDA,0xFD},
- {0x8E,0xBC}, {0x8E,0xBD}, {0xEA,0xDF}, {0xC1,0x6A},
- {0xED,0xE1}, {0x8E,0xBE}, {0xC2,0xBB}, {0x9D,0xD1},
- {0xF2,0xBA}, {0xF2,0xB9}, {0xC4,0xA2}, {0xF5,0xED},
- {0x94,0xFD}, {0xF7,0x43}, {0xC5,0xF8}, {0xCA,0x49},
- {0x8B,0xD7}, {0x8B,0xDA}, {0xAA,0xC9}, {0xA8,0x75},
- {0xD0,0x4D}, {0xD3,0x60}, {0xD3,0x5B}, {0xD3,0x5F},
- {0xD3,0x5D}, {0xAF,0xCB}, {0xD3,0x5E}, {0xD3,0x5C},
- {0xD6,0xF1}, {0xDA,0xFE}, {0xDB,0x40}, {0xDF,0x69},
- {0xDF,0x6A}, {0xB8,0x6E}, {0xB8,0x6F}, {0xDF,0x68},
- {0xDF,0x6B}, {0xDF,0x67}, {0xB8,0x6D}, {0xBB,0x40},
- {0xA0,0xE2}, {0xB8,0x70}, {0xE3,0x7A}, {0xBD,0x7C},
- {0xE6,0xF1}, {0xBD,0x7D}, {0x9F,0xE9}, {0xBF,0xA9},
- {0xEA,0xE2}, {0xEA,0xE0}, {0xEA,0xE1}, {0xED,0xE4},
- {0xED,0xE3}, {0xED,0xE2}, {0xF2,0xBB}, {0xC3,0xB9},
- {0xF2,0xBC}, {0xF7,0x44}, {0xC5,0xF9}, {0xF8,0xBA},
- {0xA6,0xCF}, {0xAA,0xCB}, {0xAA,0xCA}, {0xD0,0x4F},
- {0xAC,0xFC}, {0xFD,0xA8}, {0xD0,0x4E}, {0xD3,0x62},
- {0x8A,0xE7}, {0xAF,0xCC}, {0xD6,0xF2}, {0xD3,0x61},
- {0x8E,0xC2}, {0xB2,0xDC}, {0xD6,0xF5}, {0xD6,0xF3},
- {0xD6,0xF4}, {0xB2,0xDB}, {0xDB,0x42}, {0xDB,0x43},
- {0xDB,0x41}, {0x8E,0xC4}, {0xB8,0x73}, {0xDF,0x6D},
- {0xDF,0x6C}, {0xDF,0x6E}, {0xB8,0x72}, {0xB8,0x71},
- {0xE6,0xF2}, {0xE6,0xF4}, {0x99,0x64}, {0xBD,0x7E},
- {0xE6,0xF3}, {0xEA,0xE3}, {0xBF,0xAA}, {0xF0,0x79},
- {0x99,0x65}, {0xF0,0x78}, {0xC3,0xBB}, {0xF2,0xBD},
- {0xC3,0xBD}, {0xC3,0xBC}, {0xF4,0xB0}, {0xF5,0xEE},
- {0xC4,0xF3}, {0xA6,0xD0}, {0xD0,0x50}, {0xAC,0xFD},
- {0xD3,0x65}, {0xAF,0xCE}, {0xD3,0x64}, {0xD3,0x63},
- {0xAF,0xCD}, {0xD6,0xFB}, {0xD6,0xFD}, {0xD6,0xF6},
- {0xD6,0xF7}, {0xB2,0xDD}, {0xD6,0xF8}, {0xB2,0xDE},
- {0xD6,0xFC}, {0xD6,0xF9}, {0xD6,0xFA}, {0xB2,0xDF},
- {0xB5,0xBE}, {0xB5,0xBF}, {0xDB,0x44}, {0xDF,0x6F},
- {0xDF,0x70}, {0x95,0x4E}, {0xE3,0x7E}, {0xBB,0x43},
- {0xBB,0x41}, {0xBB,0x42}, {0xE3,0x7B}, {0xE3,0x7C},
- {0xE3,0x7D}, {0xE6,0xF9}, {0x98,0xB3}, {0xE6,0xFA},
- {0xBD,0xA1}, {0xE6,0xF7}, {0xE6,0xF6}, {0xE6,0xF8},
- {0xE6,0xF5}, {0xBF,0xAD}, {0xEA,0xE4}, {0xBF,0xAB},
- {0xBF,0xAC}, {0xED,0xE6}, {0xC1,0x6B}, {0xED,0xE5},
- {0xEF,0xA8}, {0xF0,0x7A}, {0xF0,0x7B}, {0xC2,0xBC},
- {0x8E,0xCB}, {0xC2,0xBD}, {0xC1,0x6C}, {0xF2,0xBE},
- {0xF2,0xBF}, {0xF4,0xB1}, {0xC4,0xA3}, {0xA6,0xD1},
- {0x8B,0xDF}, {0xA6,0xD2}, {0xAC,0xFE}, {0xAA,0xCC},
- {0xAF,0xCF}, {0xD0,0x51}, {0x8E,0xCE}, {0xB5,0xC0},
- {0xA6,0xD3}, {0xAD,0x41}, {0xD0,0x52}, {0xD0,0x53},
- {0xAD,0x40}, {0xAD,0x42}, {0xA6,0xD4}, {0xD0,0x54},
- {0xAF,0xD1}, {0xD3,0x66}, {0xAF,0xD3}, {0xAF,0xD0},
- {0xAF,0xD2}, {0xD7,0x41}, {0xB2,0xE0}, {0x8E,0xCF},
- {0xD7,0x40}, {0xD6,0xFE}, {0x99,0x68}, {0xDF,0x71},
- {0xE3,0xA1}, {0x99,0x69}, {0xBD,0xA2}, {0xBF,0xAE},
- {0xEA,0xE6}, {0xEA,0xE5}, {0xED,0xE7}, {0x99,0x6B},
- {0x8E,0xD1}, {0xF5,0xEF}, {0x99,0x6C}, {0xA6,0xD5},
- {0xCB,0x73}, {0xCD,0xAA}, {0xAD,0x43}, {0xD0,0x55},
- {0xD3,0x68}, {0x8E,0xD4}, {0x8E,0xD5}, {0xAF,0xD4},
- {0xD3,0x67}, {0xAF,0xD5}, {0xD7,0x43}, {0xB2,0xE2},
- {0xD7,0x42}, {0xD7,0x44}, {0xB2,0xE1}, {0xDB,0x46},
- {0xDB,0x47}, {0xDB,0x45}, {0xB5,0xC1}, {0x99,0x6D},
- {0xB8,0x74}, {0xB8,0x75}, {0xBB,0x45}, {0xA0,0xBE},
- {0xE3,0xA3}, {0xE3,0xA2}, {0xBB,0x44}, {0x8E,0xD6},
- {0xA0,0xBC}, {0xA0,0xB5}, {0xE6,0xFB}, {0xA0,0xB4},
- {0xE6,0xFC}, {0xEA,0xE7}, {0xC1,0x70}, {0xC1,0x6F},
- {0xC1,0x6D}, {0xC1,0x6E}, {0xC1,0x71}, {0xF0,0x7C},
- {0xC2,0xBF}, {0xC2,0xBE}, {0xF2,0xC0}, {0xF4,0xB2},
- {0xC5,0xA5}, {0xC5,0xA4}, {0xA6,0xD6}, {0x8B,0xE0},
- {0xD1,0xFB}, {0xB8,0x77}, {0xB5,0xC2}, {0xB8,0x76},
- {0xBB,0x46}, {0xA6,0xD7}, {0xC9,0xA9}, {0xA6,0xD8},
- {0xA6,0xD9}, {0xCD,0xAB}, {0xCB,0x76}, {0xCB,0x77},
- {0xA8,0x77}, {0xCB,0x74}, {0xA8,0x76}, {0xA8,0x79},
- {0xCB,0x75}, {0xA8,0x7B}, {0xA8,0x7A}, {0xCB,0x78},
- {0xA8,0x78}, {0x89,0xB5}, {0xAA,0xD1}, {0xAA,0xCF},
- {0xCD,0xAD}, {0xAA,0xCE}, {0x8E,0xDD}, {0xAA,0xD3},
- {0xAA,0xD5}, {0xAA,0xD2}, {0xCD,0xB0}, {0xCD,0xAC},
- {0xAA,0xD6}, {0xAA,0xD0}, {0xA8,0x7C}, {0xAA,0xD4},
- {0xCD,0xAF}, {0x9E,0x5D}, {0x99,0x71}, {0xCD,0xAE},
- {0xAA,0xCD}, {0x89,0xAE}, {0x9D,0xE8}, {0xD0,0x5B},
- {0xAD,0x47}, {0xAD,0x48}, {0xD0,0x5D}, {0x95,0x65},
- {0xD0,0x57}, {0xD0,0x5A}, {0xD0,0x63}, {0xD0,0x61},
- {0xAD,0x49}, {0xD0,0x67}, {0xAD,0x4C}, {0xD0,0x64},
- {0xD0,0x5C}, {0xD0,0x59}, {0xDB,0x49}, {0xD0,0x62},
- {0xAD,0x44}, {0xD0,0x65}, {0xD0,0x56}, {0xD0,0x5F},
- {0xAD,0x46}, {0xAD,0x4B}, {0xD0,0x60}, {0xAD,0x4F},
- {0xAD,0x4D}, {0xD0,0x58}, {0xAD,0x4A}, {0xD0,0x5E},
- {0xAD,0x4E}, {0xAD,0x45}, {0xD0,0x66}, {0x99,0x72},
- {0x8B,0x5C}, {0xAF,0xDA}, {0xAF,0xE3}, {0xAF,0xD8},
- {0xAF,0xD6}, {0xD3,0x6A}, {0xAF,0xDE}, {0xAF,0xDB},
- {0xD3,0x6C}, {0x89,0xB1}, {0xAF,0xDD}, {0xD3,0x6B},
- {0xD3,0x69}, {0xD3,0x6E}, {0xAF,0xE2}, {0xAF,0xE0},
- {0xDB,0x48}, {0xD3,0x6F}, {0xD3,0x6D}, {0xAF,0xD7},
- {0xA0,0xC0}, {0xAF,0xD9}, {0xAF,0xDC}, {0x8E,0xDF},
- {0xAF,0xDF}, {0x95,0x66}, {0xAF,0xE1}, {0x99,0x74},
- {0x99,0x76}, {0x99,0x77}, {0x99,0x79}, {0xD7,0x4E},
- {0xB2,0xE4}, {0x9D,0xDA}, {0xD7,0x45}, {0xD7,0x47},
- {0x8E,0xE0}, {0xD7,0x48}, {0xD7,0x50}, {0xD7,0x4C},
- {0xD7,0x4A}, {0xD7,0x4D}, {0xD7,0x51}, {0xB2,0xE5},
- {0xB2,0xE9}, {0xD7,0x46}, {0xD7,0x4F}, {0xB2,0xE7},
- {0x93,0x5C}, {0xB2,0xE6}, {0xD7,0x4B}, {0xD7,0x49},
- {0xB2,0xE3}, {0xB2,0xE8}, {0x9D,0xE6}, {0x8B,0x5F},
- {0x95,0x63}, {0xB5,0xC8}, {0xDB,0x51}, {0xDB,0x4F},
- {0xB5,0xCA}, {0x95,0x67}, {0xDB,0x4A}, {0xDF,0xA1},
- {0xB5,0xC9}, {0xDB,0x4E}, {0x9D,0xE3}, {0xDB,0x4B},
- {0xB5,0xC5}, {0xB5,0xCB}, {0xDB,0x50}, {0xB5,0xC7},
- {0xDB,0x4D}, {0xBB,0x47}, {0xB5,0xC6}, {0xDB,0x4C},
- {0xB5,0xCC}, {0xB5,0xC4}, {0xB5,0xC3}, {0x99,0x7C},
- {0x99,0x7D}, {0x99,0x7E}, {0xDF,0x77}, {0xDF,0x75},
- {0xDF,0x7B}, {0xDF,0x73}, {0xDF,0xA2}, {0xDF,0x78},
- {0xDF,0x72}, {0xB8,0x7B}, {0xB8,0xA3}, {0xDF,0x7D},
- {0xDF,0x76}, {0xB8,0x7E}, {0x8B,0x5B}, {0xB8,0x7C},
- {0xDF,0x7E}, {0xB8,0x79}, {0xB8,0x78}, {0xDF,0x79},
- {0xB8,0x7D}, {0xB5,0xCD}, {0xDF,0x7C}, {0xDF,0x74},
- {0xB8,0x7A}, {0xB8,0xA1}, {0xB8,0xA2}, {0x99,0xA3},
- {0xBB,0x4C}, {0xBB,0x48}, {0xBB,0x4D}, {0xE3,0xA6},
- {0x99,0xA4}, {0xE3,0xA5}, {0xE3,0xA7}, {0xBB,0x4A},
- {0xE3,0xA4}, {0xBB,0x4B}, {0xE3,0xAA}, {0xE3,0xA9},
- {0xE3,0xA8}, {0xBB,0x49}, {0x99,0xA6}, {0xE7,0x41},
- {0xE7,0x44}, {0xBD,0xA8}, {0xE7,0x43}, {0xBD,0xA7},
- {0xBD,0xA3}, {0xBD,0xA4}, {0xBD,0xA5}, {0xE7,0x40},
- {0xE6,0xFE}, {0xBD,0xA6}, {0xE7,0x42}, {0xE6,0xFD},
- {0x99,0xA8}, {0xEA,0xE9}, {0xEA,0xF3}, {0xBF,0xB1},
- {0xBF,0xB0}, {0x8A,0xBE}, {0xEA,0xED}, {0xEA,0xEF},
- {0xEA,0xEA}, {0xEA,0xEE}, {0xEA,0xE8}, {0xEA,0xF1},
- {0xBF,0xAF}, {0xEA,0xF0}, {0xEA,0xEC}, {0x9E,0x61},
- {0xEA,0xF2}, {0xEA,0xEB}, {0xC1,0x74}, {0xED,0xE8},
- {0xED,0xEE}, {0xC1,0x78}, {0xC1,0x7A}, {0xC1,0x77},
- {0xC1,0x76}, {0x99,0xAA}, {0xC1,0x75}, {0xC1,0x73},
- {0xED,0xE9}, {0xED,0xEC}, {0xC1,0x72}, {0xED,0xED},
- {0xA0,0xC8}, {0xC1,0x79}, {0xED,0xEB}, {0xED,0xEA},
- {0xC2,0xC0}, {0xC2,0xC1}, {0xF0,0xA1}, {0xF0,0x7D},
- {0xF0,0x7E}, {0xF2,0xC2}, {0xF2,0xC1}, {0xC3,0xBE},
- {0xF4,0xB4}, {0xC4,0xA4}, {0xF4,0xB3}, {0xF5,0xF0},
- {0xF7,0x45}, {0xC5,0xA6}, {0xF9,0x43}, {0xF9,0x44},
- {0xC5,0xD8}, {0xA6,0xDA}, {0x99,0xAB}, {0xAA,0xD7},
- {0xDB,0x52}, {0xBB,0x4E}, {0xC1,0x7B}, {0xED,0xEF},
- {0xA6,0xDB}, {0xAF,0xE5}, {0xAF,0xE4}, {0xDB,0x53},
- {0xFE,0xC4}, {0xEA,0xF4}, {0xA6,0xDC}, {0xAD,0x50},
- {0x98,0xC2}, {0xDB,0x54}, {0xDB,0x55}, {0xDB,0x56},
- {0xBB,0x4F}, {0xBF,0xB2}, {0xA6,0xDD}, {0xAA,0xD8},
- {0xD0,0x68}, {0xAF,0xE6}, {0xD3,0x70}, {0xB2,0xEA},
- {0xDB,0x57}, {0xB8,0xA4}, {0xBB,0x50}, {0xBF,0xB3},
- {0xC1,0x7C}, {0xC2,0xC2}, {0xF4,0xB5}, {0xA6,0xDE},
- {0xAA,0xD9}, {0xAF,0xE7}, {0xD7,0x52}, {0xB5,0xCE},
- {0xBB,0x51}, {0xE3,0xAB}, {0xE7,0x45}, {0x8E,0xE8},
- {0xA0,0xBA}, {0xA6,0xDF}, {0xB5,0xCF}, {0xDF,0xA3},
- {0xBB,0x52}, {0xA6,0xE0}, {0xCD,0xB1}, {0xD0,0x69},
- {0xAD,0x51}, {0xD3,0x72}, {0xFD,0x77}, {0xAF,0xEA},
- {0x8E,0xEE}, {0xAF,0xE8}, {0xAF,0xE9}, {0xAF,0xEB},
- {0x9E,0xBF}, {0xD3,0x71}, {0xD7,0x57}, {0xD7,0x54},
- {0xD7,0x56}, {0xB2,0xEB}, {0xB2,0xED}, {0xB2,0xEC},
- {0xD7,0x53}, {0xB2,0xEE}, {0xD7,0x55}, {0xDB,0x58},
- {0xDB,0x59}, {0x89,0xC2}, {0xDB,0x5A}, {0xDF,0xA6},
- {0xDF,0xA7}, {0xDF,0xA5}, {0xDF,0xA8}, {0xB8,0xA5},
- {0xDF,0xA4}, {0xBB,0x53}, {0xE7,0x4A}, {0xE7,0x46},
- {0xE7,0x49}, {0xE7,0x4B}, {0xE7,0x48}, {0xE7,0x47},
- {0x99,0xAC}, {0xEA,0xF5}, {0xEA,0xF6}, {0xEA,0xF7},
- {0xBF,0xB4}, {0xBF,0xB5}, {0xED,0xF1}, {0xED,0xF0},
- {0xED,0xF2}, {0xF0,0xA3}, {0xF0,0xA2}, {0xF2,0xC4},
- {0x95,0x6B}, {0xF2,0xC5}, {0xF2,0xC3}, {0x95,0x6C},
- {0xC4,0xA5}, {0xF4,0xB6}, {0xF4,0xB7}, {0xF7,0x46},
- {0xF7,0xEF}, {0xF8,0xBB}, {0xA6,0xE1}, {0xA8,0x7D},
- {0xC1,0x7D}, {0xA6,0xE2}, {0xD7,0x58}, {0xDB,0x5B},
- {0x99,0xAF}, {0xC6,0x41}, {0xCA,0x4A}, {0x99,0x4A},
- {0x89,0x76}, {0x8F,0x48}, {0xCA,0x4B}, {0xCA,0x4D},
- {0xA6,0xE3}, {0xCA,0x4E}, {0xCA,0x4C}, {0xCB,0xA2},
- {0xCB,0xA3}, {0xCB,0x7B}, {0xFB,0xEE}, {0xCB,0xA1},
- {0xA8,0xA1}, {0xA8,0xA2}, {0xCB,0x7C}, {0xCB,0x7A},
- {0xCB,0x79}, {0xCB,0x7D}, {0xA8,0x7E}, {0xCB,0x7E},
- {0xD0,0x6A}, {0xCD,0xB6}, {0xAA,0xDC}, {0xCD,0xB5},
- {0xCD,0xB7}, {0xAA,0xDB}, {0xCD,0xBC}, {0xAA,0xDF},
- {0xCD,0xB2}, {0xCD,0xC0}, {0xCD,0xC6}, {0xAA,0xE6},
- {0xCD,0xC3}, {0xAA,0xE3}, {0x99,0xAE}, {0xCD,0xB9},
- {0xCD,0xBF}, {0xCD,0xC1}, {0x8E,0xFB}, {0xCD,0xB4},
- {0xAA,0xE2}, {0xAA,0xDD}, {0xCD,0xBA}, {0xAA,0xE4},
- {0xAA,0xE7}, {0xAA,0xE1}, {0xAA,0xDA}, {0xCD,0xBE},
- {0xCD,0xB8}, {0xCD,0xC5}, {0xAA,0xE9}, {0xAA,0xE5},
- {0xAA,0xE0}, {0xCD,0xBD}, {0xAF,0xEC}, {0xCD,0xBB},
- {0xAA,0xDE}, {0xAA,0xE8}, {0x8C,0xD0}, {0xCD,0xB3},
- {0xCD,0xC2}, {0xCD,0xC4}, {0x8B,0x52}, {0x99,0xB0},
- {0x89,0x77}, {0x8F,0x41}, {0xAD,0x62}, {0xAD,0x5C},
- {0xAD,0x64}, {0xAD,0x61}, {0xD0,0x71}, {0xD0,0x74},
- {0xAD,0x5D}, {0x99,0xB1}, {0xD0,0x6B}, {0xAD,0x56},
- {0xAD,0x60}, {0xAD,0x63}, {0xAD,0x65}, {0xD0,0xA2},
- {0xD0,0x77}, {0x8F,0x49}, {0xAD,0x55}, {0xD0,0xA1},
- {0xAD,0x59}, {0xAD,0x57}, {0xAD,0x52}, {0xD0,0x6F},
- {0xD0,0x7E}, {0xD0,0x73}, {0xD0,0x76}, {0xD0,0xA5},
- {0xFA,0x4D}, {0xAD,0x66}, {0xD0,0x7D}, {0xAD,0x5E},
- {0xD0,0x78}, {0xD0,0xA4}, {0xD0,0x75}, {0xD0,0x79},
- {0xD0,0x7C}, {0x9D,0xE4}, {0x8C,0xB5}, {0xD0,0x6D},
- {0xD0,0xA3}, {0xD0,0x7B}, {0xFB,0xE9}, {0x9B,0x54},
- {0xD0,0x6C}, {0x99,0xB2}, {0xD0,0x70}, {0xAD,0x5F},
- {0xAD,0x5A}, {0xAD,0x53}, {0xAD,0x58}, {0xAD,0x54},
- {0xAD,0x67}, {0xD0,0x6E}, {0xD3,0xA5}, {0xAD,0x5B},
- {0x9E,0x68}, {0xD0,0x7A}, {0xCE,0x41}, {0xD3,0xA8},
- {0xAF,0xFA}, {0x8F,0x4A}, {0xD3,0x76}, {0x8F,0x42},
- {0xD3,0xA3}, {0xD3,0x7D}, {0x8F,0x51}, {0xD3,0xB2},
- {0xD3,0xAA}, {0xD3,0x7E}, {0xD3,0xA9}, {0xD3,0x78},
- {0xD3,0x7C}, {0xD3,0xB5}, {0xAF,0xFD}, {0xD3,0xAD},
- {0xD3,0xA4}, {0xAF,0xED}, {0xD3,0xB3}, {0xD3,0x74},
- {0xD3,0xAC}, {0xAF,0xFC}, {0xAF,0xF7}, {0xD3,0x73},
- {0xAF,0xF5}, {0xAF,0xF4}, {0xAF,0xF9}, {0xD3,0xAB},
- {0xAF,0xF1}, {0xAF,0xF8}, {0xD0,0x72}, {0xDB,0x5C},
- {0xD3,0xA6}, {0x98,0x46}, {0xD3,0x7A}, {0xAF,0xFB},
- {0xD3,0x7B}, {0xD3,0xA1}, {0xAF,0xFE}, {0xD3,0x75},
- {0xD3,0xAF}, {0xD3,0xAE}, {0xD3,0xB6}, {0xAF,0xF3},
- {0xAF,0xF0}, {0xD3,0xB4}, {0xD3,0xB0}, {0xD3,0xA7},
- {0xD3,0xA2}, {0xAF,0xF6}, {0xAF,0xF2}, {0xD3,0x77},
- {0xAF,0xEE}, {0xD3,0xB1}, {0xAF,0xEF}, {0xD3,0x79},
- {0x99,0xB4}, {0x8E,0xF5}, {0xFD,0x55}, {0x9C,0xCD},
- {0x89,0x78}, {0xD7,0x5E}, {0xD7,0x60}, {0xD7,0x65},
- {0xD7,0x79}, {0xB2,0xFC}, {0xB2,0xF2}, {0xD7,0x5D},
- {0xB2,0xFD}, {0xB2,0xFE}, {0xD7,0x68}, {0xD7,0x6F},
- {0xD7,0x75}, {0xD7,0x62}, {0xD7,0x69}, {0x8F,0x53},
- {0xB3,0x40}, {0xD7,0x77}, {0xD7,0x72}, {0xB2,0xFA},
- {0xB2,0xF8}, {0xD7,0x6E}, {0xD7,0x6A}, {0xD7,0x5C},
- {0xB2,0xEF}, {0xD7,0x61}, {0xD7,0x59}, {0x8F,0x6F},
- {0xB2,0xF7}, {0xB2,0xF9}, {0xD7,0x66}, {0xD7,0x63},
- {0xB2,0xF4}, {0xD7,0x73}, {0xB2,0xF1}, {0xD7,0x64},
- {0xD7,0x7A}, {0xD7,0x6C}, {0x8E,0x63}, {0xD7,0x6B},
- {0xB2,0xF0}, {0xB2,0xFB}, {0xB2,0xF3}, {0xD7,0x5A},
- {0xD7,0x5F}, {0xD7,0x70}, {0xD7,0x76}, {0xB3,0x41},
- {0xD7,0x5B}, {0xD7,0x67}, {0xD7,0x6D}, {0xB2,0xF6},
- {0x8F,0x56}, {0xD7,0x78}, {0xD7,0x71}, {0xD7,0x74},
- {0xFE,0x76}, {0xB2,0xF5}, {0x9F,0xC6}, {0xDB,0x6C},
- {0xDB,0x60}, {0xB5,0xD7}, {0xDB,0x7D}, {0xDB,0xA7},
- {0xDB,0xAA}, {0xB5,0xD5}, {0xDB,0x68}, {0xDB,0xA3},
- {0xDB,0x69}, {0xDB,0x77}, {0xB5,0xE2}, {0xDB,0x73},
- {0xB5,0xDF}, {0xFA,0xAC}, {0xDB,0x74}, {0xDB,0x5D},
- {0xDB,0xA4}, {0x8F,0x58}, {0xB5,0xE8}, {0xDB,0xA1},
- {0xDB,0x75}, {0xDB,0xAC}, {0xDB,0x70}, {0xDF,0xC8},
- {0xDB,0xAF}, {0xB5,0xE6}, {0xDB,0x6E}, {0xDB,0x7A},
- {0xB5,0xE9}, {0xB5,0xD4}, {0xDB,0x72}, {0xDB,0xAD},
- {0xDB,0x6B}, {0xDB,0x64}, {0xDB,0x6F}, {0xDB,0x63},
- {0xDB,0x61}, {0xB5,0xD0}, {0xDB,0xA5}, {0xDB,0x6A},
- {0xDB,0xA8}, {0x98,0x48}, {0xDB,0xA9}, {0xB5,0xD8},
- {0xB5,0xDD}, {0xB5,0xD9}, {0xB5,0xE1}, {0xDB,0x7E},
- {0xB5,0xDA}, {0xDB,0x76}, {0xDB,0x66}, {0xB5,0xD2},
- {0xDB,0x5E}, {0xDB,0xA2}, {0xDB,0xAB}, {0xDB,0x65},
- {0xB5,0xE0}, {0xDB,0xB0}, {0xDB,0x71}, {0xDB,0x6D},
- {0xB5,0xD1}, {0xB5,0xE5}, {0x99,0xB7}, {0xDB,0x7C},
- {0xB5,0xE7}, {0xDB,0x78}, {0xB5,0xDC}, {0xB5,0xD6},
- {0xB5,0xDE}, {0xB5,0xD3}, {0xB5,0xE4}, {0xDB,0x79},
- {0xDB,0x67}, {0xDB,0x7B}, {0xDB,0x62}, {0xDB,0xA6},
- {0x96,0x65}, {0xFA,0x6C}, {0x9D,0xE7}, {0xDB,0xAE},
- {0x9E,0x62}, {0x96,0xCC}, {0x8E,0x67}, {0xDB,0x5F},
- {0xFC,0x75}, {0x98,0x7E}, {0xDF,0xC7}, {0xDF,0xDD},
- {0xB8,0x55}, {0xDF,0xCC}, {0xFD,0xB9}, {0xDF,0xCA},
- {0xDF,0xB5}, {0xB8,0xA9}, {0xDF,0xC5}, {0xDF,0xD9},
- {0xDF,0xC1}, {0xB8,0xB1}, {0xDF,0xD8}, {0xDF,0xBF},
- {0xB5,0xE3}, {0xDF,0xCF}, {0xDF,0xC0}, {0xDF,0xD6},
- {0xB8,0xB0}, {0xB8,0xA8}, {0x97,0xFC}, {0xDF,0xAA},
- {0xDF,0xB2}, {0xDF,0xCB}, {0xDF,0xC3}, {0xDF,0xDC},
- {0xDF,0xC6}, {0xB8,0xB6}, {0xDF,0xD7}, {0x98,0xF9},
- {0xB8,0xAD}, {0x8F,0x66}, {0xDF,0xC9}, {0xDF,0xD1},
- {0xDF,0xB6}, {0xDF,0xD0}, {0xDF,0xE1}, {0xDF,0xB1},
- {0xDF,0xD2}, {0x95,0x6E}, {0xDF,0xDF}, {0x92,0x45},
- {0xDF,0xAB}, {0xB5,0xDB}, {0x8F,0x60}, {0xDF,0xB9},
- {0xDF,0xB8}, {0xB8,0xAF}, {0x9E,0xD1}, {0xDF,0xBC},
- {0xDF,0xBE}, {0xDF,0xCD}, {0xDF,0xDE}, {0xB8,0xB2},
- {0xFE,0xCD}, {0xB8,0xB3}, {0x99,0xB9}, {0xDF,0xB0},
- {0xB8,0xAB}, {0xDF,0xB4}, {0xDF,0xDA}, {0xB8,0xB4},
- {0xB8,0xAC}, {0xB8,0xAE}, {0xB8,0xB5}, {0xDF,0xE0},
- {0xDF,0xD3}, {0xDF,0xCE}, {0x8F,0x62}, {0x97,0x4C},
- {0xDF,0xBB}, {0xDF,0xBA}, {0xB8,0xAA}, {0xDF,0xAC},
- {0xB8,0xA7}, {0xDF,0xC4}, {0xDF,0xAD}, {0xDF,0xC2},
- {0xDF,0xB7}, {0xDF,0xDB}, {0x91,0xC7}, {0x95,0x5F},
- {0xB8,0xA6}, {0xDF,0xB3}, {0x99,0xBB}, {0xDF,0xAF},
- {0xDF,0xD5}, {0xDF,0xAE}, {0xBB,0x60}, {0xE3,0xD3},
- {0x8E,0x6D}, {0x8F,0x71}, {0xE3,0xC2}, {0x94,0xCB},
- {0xE3,0xAC}, {0xE3,0xCA}, {0xBB,0x58}, {0xE3,0xBB},
- {0xE3,0xC5}, {0xBB,0x5B}, {0xE3,0xBE}, {0xBB,0x59},
- {0xE3,0xAF}, {0xE3,0xCD}, {0xE3,0xAE}, {0xE3,0xC1},
- {0x95,0xB1}, {0xE3,0xAD}, {0xE3,0xBF}, {0xE3,0xC8},
- {0xE3,0xC6}, {0xE3,0xBA}, {0xE3,0xB5}, {0xE3,0xB3},
- {0x9A,0xF2}, {0xE3,0xB4}, {0xE3,0xC7}, {0xE3,0xD2},
- {0xE3,0xBC}, {0xBB,0x5A}, {0xE3,0xB7}, {0xE3,0xCB},
- {0xBB,0x5D}, {0xE3,0xB6}, {0xE3,0xB0}, {0xE3,0xC0},
- {0xBB,0x61}, {0x96,0xC3}, {0x99,0xBD}, {0xBB,0x55},
- {0xBB,0x5E}, {0xE3,0xB8}, {0xE3,0xB2}, {0xBB,0x57},
- {0xDF,0xD4}, {0xBB,0x56}, {0xE3,0xC3}, {0xBB,0x54},
- {0xBB,0x63}, {0xBB,0x5C}, {0xE3,0xC4}, {0xE3,0xB9},
- {0xE3,0xB1}, {0xE3,0xCC}, {0xE3,0xBD}, {0xBB,0x62},
- {0xE3,0xD0}, {0xBB,0x5F}, {0xE3,0xCF}, {0xE3,0xC9},
- {0xE3,0xCE}, {0xA0,0xCF}, {0xE3,0xD1}, {0x8F,0x6D},
- {0x99,0xBE}, {0x8E,0xF4}, {0x8F,0x72}, {0x95,0xE4},
- {0xE7,0x73}, {0xE7,0x74}, {0xE7,0x67}, {0xE7,0x66},
- {0xE7,0x62}, {0xBD,0xB4}, {0xBD,0xAC}, {0xE7,0x76},
- {0xE7,0x75}, {0xDF,0xA9}, {0xE7,0x5F}, {0xE7,0x63},
- {0xE7,0x5D}, {0xE7,0x70}, {0xE7,0x61}, {0x99,0xBF},
- {0xE7,0x77}, {0xE7,0x5A}, {0xE7,0x58}, {0xE7,0x64},
- {0xE7,0x6E}, {0xE7,0x69}, {0xBD,0xB6}, {0xE7,0x4F},
- {0xE7,0x6D}, {0x92,0x42}, {0xFB,0xA5}, {0xBD,0xB7},
- {0xDF,0xBD}, {0xE7,0x5B}, {0xE7,0x52}, {0xE7,0x55},
- {0xE7,0x7B}, {0xE7,0x5C}, {0xE7,0x53}, {0xE7,0x51},
- {0xE7,0x4E}, {0x99,0xC0}, {0xBD,0xB0}, {0xE7,0x65},
- {0xBD,0xAF}, {0xBD,0xB3}, {0xE7,0x60}, {0xE7,0x68},
- {0xBD,0xA9}, {0xE7,0x78}, {0xE7,0x7C}, {0xBD,0xAB},
- {0xE7,0x57}, {0xE7,0x6B}, {0xE7,0x6F}, {0xE7,0x54},
- {0xE7,0x79}, {0xBD,0xB2}, {0xBD,0xB1}, {0xE7,0x4C},
- {0xBD,0xB5}, {0xE7,0x72}, {0xE7,0x56}, {0xE7,0x6A},
- {0xE7,0x50}, {0xE7,0x5E}, {0xE7,0x59}, {0xBD,0xAD},
- {0xBD,0xAE}, {0xE7,0x6C}, {0xE7,0x7D}, {0xE7,0x7A},
- {0xE7,0x71}, {0xFD,0xB4}, {0x8F,0x77}, {0x99,0xC1},
- {0xE7,0x4D}, {0xBD,0xAA}, {0xEB,0x49}, {0xEB,0x40},
- {0xEB,0x43}, {0xFA,0xB9}, {0xBF,0xBB}, {0xEB,0x45},
- {0xEA,0xF9}, {0xEB,0x41}, {0xEB,0x47}, {0xBF,0xB8},
- {0xBF,0xBC}, {0xBF,0xB6}, {0x8F,0x40}, {0xFA,0x44},
- {0xEA,0xFB}, {0xEB,0x4C}, {0xEB,0x46}, {0x99,0xC2},
- {0xEA,0xFC}, {0xEB,0x55}, {0xEB,0x4F}, {0xEA,0xF8},
- {0xEE,0x46}, {0xEA,0xFE}, {0xBF,0xB7}, {0x8F,0x5C},
- {0xEB,0x4A}, {0xEB,0x54}, {0xBF,0xBF}, {0x8C,0xBD},
- {0xEB,0x51}, {0xEA,0xFD}, {0xEB,0x44}, {0xEB,0x48},
- {0xEB,0x42}, {0xEB,0x56}, {0xEB,0x53}, {0xEB,0x50},
- {0xBF,0xB9}, {0xBF,0xBA}, {0xBF,0xBE}, {0xEA,0xFA},
- {0xEB,0x57}, {0xBF,0xBD}, {0xEB,0x4D}, {0x99,0xC4},
- {0x99,0xC5}, {0xEB,0x4B}, {0x8F,0x7B}, {0xEB,0x4E},
- {0xEE,0x53}, {0xEE,0x40}, {0xEE,0x45}, {0xEE,0x52},
- {0xEE,0x44}, {0xED,0xFB}, {0xEE,0x41}, {0xC1,0xA2},
- {0xED,0xF4}, {0xEE,0x4D}, {0xEE,0x4F}, {0xED,0xF3},
- {0xC1,0xA1}, {0xEE,0x51}, {0xEE,0x49}, {0xC1,0xA8},
- {0xEE,0x50}, {0xEE,0x42}, {0xC1,0xAA}, {0xED,0xF9},
- {0xEB,0x52}, {0xEE,0x4A}, {0xEE,0x47}, {0xED,0xF5},
- {0xEE,0x55}, {0xC1,0xA4}, {0xC1,0xA5}, {0xED,0xF7},
- {0xEE,0x48}, {0x8C,0xB6}, {0xEE,0x54}, {0xEE,0x4B},
- {0xED,0xFD}, {0xC1,0xA7}, {0xC1,0xA3}, {0xEE,0x4C},
- {0xED,0xFE}, {0xEE,0x56}, {0xED,0xF8}, {0xEE,0x43},
- {0xEE,0x4E}, {0xED,0xFA}, {0xED,0xFC}, {0xC2,0xCB},
- {0xED,0xF6}, {0xC1,0xA9}, {0xC2,0xC4}, {0xC1,0x7E},
- {0xC1,0xA6}, {0xC2,0xC8}, {0xF0,0xB3}, {0xF0,0xA9},
- {0xF0,0xA4}, {0xF0,0xAA}, {0xF0,0xB4}, {0xF0,0xB8},
- {0xF0,0xB7}, {0xC2,0xCA}, {0xC2,0xC9}, {0xF0,0xAB},
- {0xF0,0xB9}, {0xF0,0xAE}, {0xF0,0xA6}, {0x8F,0xA3},
- {0xF0,0xA8}, {0xF0,0xA7}, {0xF0,0xAD}, {0xF0,0xB2},
- {0xF0,0xA5}, {0xF0,0xAC}, {0xF0,0xB1}, {0xC2,0xC7},
- {0xF0,0xAF}, {0xC2,0xC5}, {0xF0,0xB0}, {0xC2,0xC3},
- {0xC2,0xC6}, {0xF2,0xD5}, {0xF0,0xB5}, {0xC3,0xC2},
- {0x8C,0xCE}, {0xF2,0xCD}, {0xF2,0xD1}, {0xF2,0xC9},
- {0xF2,0xCC}, {0xF2,0xD4}, {0xC3,0xC0}, {0xF2,0xD9},
- {0xF2,0xD2}, {0x99,0xC6}, {0xF2,0xCA}, {0xF2,0xDA},
- {0xF2,0xD3}, {0xC3,0xC3}, {0xC3,0xC4}, {0xF2,0xD7},
- {0xF2,0xCB}, {0xC3,0xBF}, {0xC3,0xC1}, {0xF2,0xC6},
- {0xF2,0xCE}, {0xF2,0xC8}, {0x96,0xCD}, {0xF2,0xD8},
- {0xF2,0xD6}, {0xF2,0xC7}, {0xF2,0xCF}, {0xF4,0xBE},
- {0xC3,0xC5}, {0xF2,0xD0}, {0xC4,0xA7}, {0xC4,0xA9},
- {0xC4,0xA6}, {0x96,0xC7}, {0xF4,0xC3}, {0xF4,0xBB},
- {0xF4,0xB9}, {0xF4,0xBD}, {0xF4,0xBA}, {0x8F,0xA5},
- {0xF4,0xBF}, {0xF4,0xC1}, {0xC4,0xAA}, {0xC4,0xAC},
- {0xF4,0xC0}, {0xC4,0xAD}, {0xC4,0xAB}, {0xF4,0xC2},
- {0xFA,0xBB}, {0x8C,0x61}, {0x95,0x70}, {0xC4,0xA8},
- {0x93,0x68}, {0x8F,0x7E}, {0xC4,0xF4}, {0xF5,0xF1},
- {0xF5,0xF7}, {0xC4,0xF6}, {0xF4,0xBC}, {0xF5,0xF6},
- {0xF5,0xFD}, {0xF5,0xF4}, {0xF5,0xFB}, {0xF5,0xFA},
- {0xF4,0xB8}, {0xF5,0xF5}, {0xF0,0xB6}, {0xF5,0xFE},
- {0xF5,0xF3}, {0xF5,0xF8}, {0x8F,0xAA}, {0xF5,0xFC},
- {0xF5,0xF2}, {0xF7,0x4A}, {0xC4,0xF5}, {0xF5,0xF9},
- {0xA0,0x50}, {0xF7,0xF4}, {0xF7,0x4B}, {0xF7,0x49},
- {0xF7,0x47}, {0xF7,0x48}, {0xF7,0x4C}, {0xC5,0xD9},
- {0xF7,0xF2}, {0xF7,0xF0}, {0xF7,0xF5}, {0xF7,0xF3},
- {0xF7,0xF6}, {0xC5,0xDA}, {0xF7,0xF1}, {0x90,0xD3},
- {0xF8,0xBC}, {0x95,0x56}, {0xF9,0x45}, {0xF9,0x46},
- {0xF9,0x47}, {0xF9,0xC7}, {0xF9,0xBD}, {0xCA,0x4F},
- {0xAA,0xEA}, {0xAD,0x68}, {0xD3,0xB8}, {0xD3,0xB7},
- {0xB0,0x40}, {0xB3,0x42}, {0xD7,0x7C}, {0xD7,0x7B},
- {0xB5,0xEA}, {0xB8,0xB8}, {0xB8,0xB7}, {0xB8,0xB9},
- {0xE3,0xD4}, {0xE7,0x7E}, {0xEB,0x58}, {0xEB,0x5A},
- {0xEB,0x59}, {0xC1,0xAB}, {0xEE,0x57}, {0xF0,0xBA},
- {0xF9,0xA5}, {0xA6,0xE4}, {0x8F,0xB8}, {0xCD,0xC9},
- {0xCD,0xCA}, {0xCD,0xC8}, {0xCD,0xC7}, {0xAA,0xEB},
- {0x99,0xC8}, {0xD0,0xA9}, {0xD0,0xA7}, {0xD0,0xA6},
- {0xAD,0x69}, {0xAD,0x6B}, {0xAD,0x6A}, {0xD0,0xA8},
- {0x8F,0xAF}, {0xD3,0xC4}, {0xD3,0xC1}, {0xD3,0xBF},
- {0xB0,0x41}, {0xD3,0xC2}, {0xB0,0x46}, {0xD3,0xBC},
- {0xD3,0xCB}, {0xD3,0xCD}, {0xD3,0xBD}, {0x99,0xC9},
- {0xB0,0x43}, {0xD3,0xCE}, {0xD3,0xC9}, {0xD3,0xBB},
- {0xD3,0xC0}, {0xD3,0xCA}, {0xD3,0xC6}, {0xD3,0xC3},
- {0xB0,0x48}, {0xD3,0xCC}, {0xD3,0xBE}, {0x95,0x79},
- {0xD3,0xC7}, {0xD3,0xB9}, {0xB0,0x47}, {0xB0,0x44},
- {0xD3,0xC5}, {0xD3,0xC8}, {0xD3,0xBA}, {0xB0,0x45},
- {0xB0,0x42}, {0x9F,0x49}, {0xB3,0x4C}, {0xD7,0xA5},
- {0xB3,0x4B}, {0x99,0xCA}, {0xD7,0xA8}, {0xD7,0xAB},
- {0xB3,0x48}, {0xB3,0x46}, {0xD7,0x7E}, {0xD7,0xA9},
- {0xD7,0xA7}, {0xD7,0xA4}, {0xD7,0xAC}, {0xD7,0xAD},
- {0xD7,0xAF}, {0xD7,0xB0}, {0xD7,0x7D}, {0xB3,0x45},
- {0xD7,0xA2}, {0xD7,0xA1}, {0xD7,0xAE}, {0xB3,0x47},
- {0xD7,0xA3}, {0xB3,0x49}, {0xB3,0x44}, {0xD7,0xA6},
- {0xB3,0x4D}, {0xB3,0x4A}, {0xD7,0xAA}, {0xB5,0xF1},
- {0xDB,0xBF}, {0xDB,0xB4}, {0xB5,0xEE}, {0xDF,0xE7},
- {0xDB,0xBD}, {0xDB,0xB1}, {0xB5,0xEC}, {0xDB,0xB6},
- {0xB5,0xEF}, {0xDB,0xBA}, {0xDB,0xB8}, {0xB5,0xF2},
- {0xB5,0xEB}, {0xDB,0xB2}, {0xDB,0xB5}, {0xB5,0xF0},
- {0xDB,0xB3}, {0xDB,0xBE}, {0xDB,0xBC}, {0xDB,0xB7},
- {0xDB,0xB9}, {0xDB,0xBB}, {0xB5,0xED}, {0x99,0xCB},
- {0xDF,0xE8}, {0xDF,0xEE}, {0xDF,0xE4}, {0xDF,0xEA},
- {0xB8,0xBA}, {0xDF,0xE6}, {0xB8,0xC0}, {0xB8,0xBF},
- {0xB8,0xBE}, {0xDF,0xED}, {0xB8,0xC1}, {0xB8,0xC2},
- {0xDF,0xE3}, {0xDF,0xF0}, {0xB8,0xC3}, {0xB8,0xBD},
- {0xB8,0xBC}, {0xDF,0xEC}, {0xB8,0xC4}, {0xDF,0xE2},
- {0xDF,0xE5}, {0xDF,0xEF}, {0xDF,0xEB}, {0xE3,0xF4},
- {0xE3,0xE9}, {0xB8,0xBB}, {0xBB,0x6A}, {0xE3,0xDD},
- {0xE3,0xF2}, {0xE3,0xDE}, {0xBB,0x65}, {0xE3,0xDB},
- {0xE3,0xE4}, {0xE3,0xDC}, {0xBB,0x67}, {0xE3,0xD6},
- {0xE3,0xF1}, {0xBB,0x68}, {0xE3,0xEE}, {0xE3,0xEF},
- {0xE3,0xD7}, {0xBB,0x6D}, {0xE3,0xE6}, {0xE3,0xE0},
- {0xE3,0xE7}, {0xE3,0xDA}, {0xE3,0xF3}, {0xE3,0xEB},
- {0xE3,0xE5}, {0xE3,0xD5}, {0xBB,0x69}, {0xE3,0xEC},
- {0xBB,0x6C}, {0xE3,0xF0}, {0xE3,0xEA}, {0xBB,0x66},
- {0xE3,0xE8}, {0xE3,0xE2}, {0xBB,0x64}, {0xE3,0xD9},
- {0xE3,0xE1}, {0xE3,0xED}, {0xE3,0xDF}, {0xE3,0xE3},
- {0xBD,0xC1}, {0xDF,0xE9}, {0xE7,0xB2}, {0xE7,0xBB},
- {0xE7,0xB1}, {0xE7,0xAD}, {0xE7,0xAA}, {0xBD,0xC2},
- {0xE7,0xA8}, {0xBB,0x6B}, {0xE7,0xA1}, {0xBD,0xC0},
- {0xE7,0xA7}, {0xBD,0xBF}, {0xE7,0xAC}, {0xE7,0xA9},
- {0xE7,0xB9}, {0xE7,0xB4}, {0xE7,0xAE}, {0xE7,0xB3},
- {0xBD,0xBB}, {0xE7,0xAB}, {0xE7,0xBE}, {0xE7,0xA2},
- {0xE7,0xA3}, {0xE7,0xBA}, {0xBD,0xBC}, {0xE7,0xBF},
- {0xBD,0xBE}, {0xE7,0xC0}, {0xE7,0xB0}, {0xE3,0xD8},
- {0xE7,0xB6}, {0xE7,0xAF}, {0xE7,0xB8}, {0xE7,0xB5},
- {0x9D,0xD5}, {0x8F,0xB0}, {0xE7,0xA6}, {0xBD,0xB9},
- {0xE7,0xBD}, {0xBD,0xBA}, {0xE7,0xA4}, {0xBD,0xBD},
- {0xEB,0x64}, {0xE7,0xB7}, {0xE7,0xBC}, {0xFA,0x7A},
- {0xEB,0x61}, {0xBD,0xB8}, {0xBF,0xC0}, {0xEB,0x6B},
- {0xEB,0x67}, {0x9E,0x5F}, {0xEB,0x65}, {0xEB,0x60},
- {0xEB,0x6F}, {0x99,0xCD}, {0xA0,0xC9}, {0xBF,0xC4},
- {0xEB,0x5C}, {0xEB,0x68}, {0xEB,0x69}, {0xEB,0x5F},
- {0xEB,0x5E}, {0xEB,0x6C}, {0xEB,0x62}, {0xEB,0x5D},
- {0xEB,0x63}, {0xEB,0x6E}, {0xEB,0x5B}, {0xEB,0x6D},
- {0xEB,0x6A}, {0xBF,0xC2}, {0xBF,0xC1}, {0xBF,0xC3},
- {0xEB,0x66}, {0xF0,0xCB}, {0x9A,0xDB}, {0xA0,0xC6},
- {0xEE,0x59}, {0xC1,0xB1}, {0xEE,0x5D}, {0xEE,0x5A},
- {0xEE,0x61}, {0xEE,0x67}, {0xEE,0x5C}, {0x8F,0xB4},
- {0xEE,0x70}, {0xC1,0xAE}, {0xEE,0x6A}, {0xEE,0x5F},
- {0xEE,0x6B}, {0xEE,0x66}, {0xEE,0x6D}, {0xEE,0x5E},
- {0xC1,0xB3}, {0xC1,0xB2}, {0xEE,0x60}, {0xEE,0x6E},
- {0xEE,0x58}, {0xEE,0x6C}, {0xC1,0xAC}, {0xA0,0xD7},
- {0xEE,0x64}, {0xEE,0x63}, {0xEE,0x68}, {0xEE,0x5B},
- {0xC1,0xB0}, {0xC1,0xB4}, {0xEE,0x62}, {0xEE,0x69},
- {0xC1,0xB5}, {0xEE,0x65}, {0xA0,0xC7}, {0xC1,0xAD},
- {0xC1,0xAF}, {0xF0,0xC7}, {0xF0,0xC5}, {0xA0,0x43},
- {0xF0,0xCC}, {0xF0,0xC9}, {0xF0,0xCD}, {0x8F,0xB5},
- {0xF0,0xBE}, {0xF0,0xC6}, {0xF0,0xD1}, {0xEE,0x6F},
- {0xF0,0xC2}, {0xC2,0xCF}, {0xE7,0xA5}, {0xF0,0xBD},
- {0xF0,0xCA}, {0xF0,0xC4}, {0xF0,0xC1}, {0xF0,0xBC},
- {0xF0,0xBB}, {0xF0,0xD0}, {0xF0,0xC0}, {0xF0,0xBF},
- {0xC2,0xCD}, {0xF0,0xC8}, {0x8F,0xB2}, {0xC2,0xCC},
- {0xC2,0xCE}, {0xF0,0xC3}, {0xF0,0xCF}, {0xA0,0x61},
- {0xF2,0xDE}, {0xF2,0xDF}, {0xC3,0xC9}, {0xF2,0xDC},
- {0xC3,0xC6}, {0xF2,0xE4}, {0xC3,0xCA}, {0xF2,0xE6},
- {0xF2,0xDB}, {0xF0,0xCE}, {0xF2,0xE8}, {0xF2,0xDD},
- {0x9E,0x5E}, {0xC3,0xC7}, {0xF2,0xE3}, {0xF2,0xE5},
- {0xF2,0xE0}, {0xF2,0xE7}, {0xF2,0xE2}, {0xF2,0xE1},
- {0xC3,0xC8}, {0x8F,0xB6}, {0xF4,0xC5}, {0xF4,0xC6},
- {0xF4,0xC8}, {0xC4,0xAE}, {0xC4,0xAF}, {0xF4,0xC9},
- {0xF4,0xC7}, {0x9F,0xE8}, {0xF4,0xC4}, {0xF6,0x42},
- {0xF6,0x45}, {0xF6,0x41}, {0xC4,0xFA}, {0xF6,0x43},
- {0xC4,0xF9}, {0xC4,0xF8}, {0xC4,0xF7}, {0xF6,0x44},
- {0xF7,0x51}, {0xF7,0x4F}, {0x9C,0xB2}, {0xF7,0x4E},
- {0xF6,0x40}, {0xF7,0x50}, {0xF6,0x46}, {0xF7,0x4D},
- {0x95,0x7C}, {0xF7,0xF9}, {0xF7,0xD7}, {0xF7,0xF7},
- {0xC5,0xDB}, {0xF7,0xF8}, {0xF7,0xFA}, {0xF8,0xBF},
- {0xC5,0xFA}, {0xF8,0xBE}, {0xF8,0xBD}, {0xC5,0xFB},
- {0xC6,0x5A}, {0xF9,0x6E}, {0xF9,0xA7}, {0xF9,0xA6},
- {0xF9,0xA8}, {0xA6,0xE5}, {0xD0,0xAA}, {0x9F,0xC7},
- {0xD3,0xCF}, {0xD3,0xD0}, {0x8F,0xBB}, {0x8F,0xBC},
- {0xDB,0xC0}, {0xF6,0x47}, {0xF8,0xC0}, {0xA6,0xE6},
- {0xAD,0x6C}, {0xD0,0xAB}, {0x8F,0xEC}, {0xD7,0xB1},
- {0xB3,0x4E}, {0xDB,0xC2}, {0xDB,0xC1}, {0xB5,0xF3},
- {0xB8,0xC5}, {0xE7,0xC1}, {0xBD,0xC3}, {0xBD,0xC4},
- {0x8F,0xC0}, {0x93,0x6A}, {0xBF,0xC5}, {0xC5,0xFC},
- {0xA6,0xE7}, {0x8B,0xE4}, {0x9C,0x7C}, {0xD0,0xAC},
- {0xAA,0xED}, {0xD0,0xAE}, {0xD0,0xAD}, {0xAD,0x6D},
- {0xD3,0xD1}, {0x95,0xA1}, {0xD3,0xD8}, {0xB0,0x49},
- {0xD3,0xD6}, {0xD3,0xD4}, {0xD3,0xDB}, {0xD3,0xD2},
- {0xD3,0xD3}, {0xB0,0x4A}, {0xB0,0x4E}, {0xD3,0xDC},
- {0xB0,0x4D}, {0xD3,0xDA}, {0xD3,0xD7}, {0xD3,0xD5},
- {0xB0,0x4B}, {0xB0,0x4C}, {0xD3,0xD9}, {0xFE,0xEC},
- {0x95,0xA3}, {0xB3,0x50}, {0xD7,0xB2}, {0xB3,0x55},
- {0xD7,0xC2}, {0xB3,0x54}, {0xD7,0xC4}, {0x8C,0x45},
- {0x8C,0xB8}, {0xD7,0xB8}, {0xB3,0x52}, {0xD7,0xC3},
- {0xD7,0xB3}, {0xB3,0x53}, {0xD7,0xBF}, {0xD7,0xBB},
- {0xD7,0xBD}, {0xD7,0xB7}, {0xD7,0xBE}, {0x8F,0xC1},
- {0xB3,0x4F}, {0xD7,0xBA}, {0xA0,0x52}, {0xD7,0xB9},
- {0xD7,0xB5}, {0xD7,0xC0}, {0xD7,0xBC}, {0xD7,0xB4},
- {0xD7,0xB6}, {0xB3,0x51}, {0xD7,0xC1}, {0x99,0xD0},
- {0xB5,0xF6}, {0xDB,0xCD}, {0x8F,0xC3}, {0x8F,0xC4},
- {0xDB,0xC9}, {0xDB,0xCB}, {0xDB,0xC6}, {0xDB,0xC5},
- {0xDB,0xC3}, {0xDB,0xCA}, {0xDB,0xCC}, {0xDB,0xC8},
- {0x95,0xA4}, {0xDB,0xC7}, {0xB5,0xF4}, {0xB5,0xF5},
- {0x8F,0xC6}, {0x9E,0x60}, {0xDB,0xCF}, {0xB8,0xCD},
- {0xDF,0xF2}, {0xDF,0xF8}, {0xDF,0xF3}, {0xDF,0xF4},
- {0xF9,0xD8}, {0xDF,0xF9}, {0xB8,0xCF}, {0xB8,0xC7},
- {0xB8,0xCE}, {0xDF,0xF1}, {0xDB,0xC4}, {0xB8,0xCA},
- {0xB8,0xC8}, {0xDF,0xF7}, {0xDF,0xF6}, {0xB8,0xC9},
- {0xB8,0xCB}, {0xDF,0xF5}, {0xB8,0xC6}, {0xB8,0xCC},
- {0x95,0xA5}, {0xE3,0xF6}, {0xBB,0x74}, {0xE4,0x42},
- {0xE4,0x41}, {0xE3,0xFB}, {0xBB,0x76}, {0xE4,0x40},
- {0xE3,0xF7}, {0xE3,0xF8}, {0xBB,0x6E}, {0xBB,0x70},
- {0x9C,0xB3}, {0xE3,0xFD}, {0xE3,0xF5}, {0xBB,0x72},
- {0xBB,0x71}, {0xE3,0xF9}, {0xE3,0xFE}, {0xE3,0xFC},
- {0xBB,0x73}, {0xE3,0xFA}, {0x99,0xD1}, {0xFE,0xF1},
- {0xDB,0xCE}, {0xBB,0x6F}, {0xE7,0xC2}, {0xE7,0xC9},
- {0xBD,0xC6}, {0xE7,0xCD}, {0xBD,0xCA}, {0xE7,0xC5},
- {0xE7,0xC3}, {0xE7,0xCC}, {0xBD,0xC5}, {0xE7,0xCB},
- {0xBD,0xC7}, {0xBD,0xC8}, {0xE7,0xC4}, {0xBD,0xC9},
- {0xE7,0xCA}, {0xE7,0xC6}, {0xE7,0xC7}, {0xE7,0xC8},
- {0xBB,0x75}, {0xEB,0x70}, {0xEB,0x7C}, {0xBF,0xCA},
- {0xEB,0x77}, {0xEB,0x79}, {0x99,0xD2}, {0xBF,0xC8},
- {0xEB,0x71}, {0xEB,0x75}, {0xEB,0x78}, {0xBF,0xC6},
- {0xBF,0xC9}, {0xEB,0x7B}, {0xEB,0x73}, {0xEB,0x74},
- {0xEB,0x7A}, {0xEB,0x72}, {0xEB,0x76}, {0xBF,0xC7},
- {0xEE,0x72}, {0xEE,0x71}, {0xC1,0xB7}, {0xEE,0x77},
- {0xC1,0xB9}, {0xC1,0xB6}, {0xEE,0x73}, {0xC1,0xBA},
- {0xEE,0x74}, {0xEE,0x75}, {0xEE,0x78}, {0x9C,0xC2},
- {0xC1,0xB8}, {0xF0,0xD6}, {0x99,0xD3}, {0xF0,0xD9},
- {0xF0,0xD3}, {0xF0,0xD5}, {0x95,0xA7}, {0xF0,0xD4},
- {0xF0,0xD7}, {0xF0,0xD8}, {0xEE,0x76}, {0xF0,0xD2},
- {0x95,0xA9}, {0xC3,0xCD}, {0xF2,0xEC}, {0xF2,0xEF},
- {0xF2,0xF1}, {0xF2,0xEA}, {0xF2,0xEB}, {0xF2,0xEE},
- {0xF2,0xF0}, {0xC3,0xCE}, {0xC3,0xCC}, {0xC3,0xCB},
- {0xF2,0xED}, {0xF2,0xE9}, {0xF4,0xCA}, {0xC4,0xB0},
- {0x95,0xA6}, {0xF4,0xCB}, {0xF6,0x49}, {0xC4,0xFB},
- {0xF6,0x4B}, {0xC4,0xFC}, {0xF6,0x48}, {0xF6,0x4A},
- {0xC5,0xA8}, {0xF7,0x52}, {0xC5,0xA7}, {0xF7,0xFD},
- {0xF7,0xFC}, {0xF7,0xFB}, {0x9C,0x5D}, {0xF9,0x48},
- {0xF9,0x49}, {0xF9,0x4B}, {0xF9,0x4A}, {0xCA,0x50},
- {0xA6,0xE8}, {0x98,0xE2}, {0xAD,0x6E}, {0xD7,0xC5},
- {0xB5,0xF7}, {0xDF,0xFA}, {0xC2,0xD0}, {0x8F,0xC9},
- {0xF2,0xF2}, {0xA0,0xC2}, {0x8F,0xCA}, {0xA8,0xA3},
- {0xB3,0x57}, {0x99,0xD4}, {0xB3,0x56}, {0xA0,0xB9},
- {0xDB,0xD0}, {0xB5,0xF8}, {0xDB,0xD2}, {0xDB,0xD1},
- {0xDF,0xFB}, {0xB8,0xD0}, {0xE4,0x43}, {0xE4,0x46},
- {0xE4,0x45}, {0xE4,0x44}, {0xE7,0xCE}, {0xE7,0xD0},
- {0xE7,0xCF}, {0x9B,0x58}, {0xBF,0xCC}, {0x8F,0xCD},
- {0xA0,0xD4}, {0xBF,0xCB}, {0xC1,0xBB}, {0xEE,0x79},
- {0xEE,0x7B}, {0xEE,0x7A}, {0xC2,0xD1}, {0xF2,0xF4},
- {0xF2,0xF3}, {0xF4,0xCC}, {0xC4,0xB1}, {0x8F,0xCE},
- {0xC4,0xFD}, {0xF7,0x54}, {0xF7,0x53}, {0xC6,0x5B},
- {0x8B,0xE5}, {0x89,0x79}, {0xA8,0xA4}, {0xD0,0xAF},
- {0xAD,0x6F}, {0xD7,0xC8}, {0xD7,0xC6}, {0xD7,0xC7},
- {0xDB,0xD4}, {0xDB,0xD5}, {0xE0,0x43}, {0xDB,0xD3},
- {0xDF,0xFC}, {0xE0,0x41}, {0xE0,0x40}, {0xE0,0x42},
- {0xB8,0xD1}, {0xDF,0xFE}, {0xDF,0xFD}, {0xE0,0x44},
- {0x8F,0xD0}, {0xE4,0x49}, {0xE4,0x47}, {0xE4,0x48},
- {0xE7,0xD3}, {0xE7,0xD1}, {0xE7,0xD2}, {0xEB,0x7D},
- {0xEE,0x7C}, {0xEE,0x7D}, {0xC2,0xD2}, {0xF2,0xF5},
- {0xF4,0xCD}, {0xC4,0xB2}, {0xF6,0x4C}, {0xF7,0x55},
- {0xC5,0xA9}, {0xF7,0xFE}, {0xF9,0x4C}, {0xA8,0xA5},
- {0xAD,0x71}, {0xAD,0x72}, {0xD0,0xB0}, {0xD0,0xB1},
- {0xAD,0x70}, {0xB0,0x54}, {0xB0,0x52}, {0xB0,0x51},
- {0xB0,0x58}, {0xB0,0x50}, {0xB0,0x59}, {0xD3,0xDD},
- {0xB0,0x56}, {0xB0,0x53}, {0xB0,0x57}, {0xB0,0x55},
- {0xB0,0x4F}, {0xB3,0x5F}, {0x95,0xB6}, {0xB3,0x59},
- {0xD7,0xCC}, {0xB3,0x5E}, {0xB3,0x60}, {0xB3,0x5A},
- {0xB3,0x5B}, {0xD7,0xCA}, {0x99,0xD6}, {0xB3,0x58},
- {0x95,0xE5}, {0xD7,0xCB}, {0xB3,0x5D}, {0xD7,0xC9},
- {0xB3,0x5C}, {0xB6,0x44}, {0xB6,0x46}, {0x99,0xD7},
- {0xDB,0xD8}, {0xB6,0x45}, {0xB5,0xF9}, {0xB5,0xFD},
- {0x95,0xB5}, {0xB8,0xE4}, {0xE0,0x49}, {0xDB,0xDA},
- {0xB5,0xFE}, {0xDB,0xDD}, {0xDB,0xDE}, {0xB6,0x43},
- {0xDB,0xE0}, {0xA0,0xCA}, {0xDB,0xE2}, {0xDB,0xE3},
- {0xDB,0xD7}, {0xDB,0xD6}, {0xDB,0xE4}, {0xB6,0x42},
- {0xDB,0xE1}, {0xDB,0xDF}, {0xB6,0x40}, {0xB5,0xFB},
- {0xB6,0x47}, {0xDB,0xDB}, {0xDB,0xDC}, {0xDB,0xD9},
- {0xB6,0x41}, {0xB5,0xFC}, {0xB5,0xFA}, {0xE0,0x48},
- {0xB8,0xDF}, {0xB8,0xDA}, {0xB8,0xD5}, {0x9F,0xFD},
- {0xB8,0xE5}, {0xB8,0xD6}, {0xB8,0xD2}, {0xB8,0xE1},
- {0xB8,0xDE}, {0xB8,0xE0}, {0xB8,0xD7}, {0xB8,0xDC},
- {0xB8,0xD3}, {0xB8,0xD4}, {0xE0,0x50}, {0xE0,0x4D},
- {0xE0,0x45}, {0xE0,0x4A}, {0xB8,0xE2}, {0xE0,0x51},
- {0xB8,0xE3}, {0xB8,0xD9}, {0xA0,0x58}, {0xE0,0x47},
- {0xE0,0x4F}, {0xE0,0x4B}, {0xE0,0x4E}, {0xE0,0x4C},
- {0xB8,0xDD}, {0xE0,0x46}, {0xB8,0xD8}, {0xE4,0x4C},
- {0xBB,0x78}, {0xBB,0x7B}, {0xE4,0x4E}, {0x8F,0xD6},
- {0xBB,0xA5}, {0xE4,0x4D}, {0xBB,0x7D}, {0x99,0xD8},
- {0xBD,0xCF}, {0xE4,0x4F}, {0xBB,0xA4}, {0xE4,0x4B},
- {0xBB,0xA6}, {0x8F,0xD3}, {0xBB,0x79}, {0xB8,0xDB},
- {0xBB,0x7C}, {0xBB,0x7A}, {0xBB,0x7E}, {0xBB,0xA2},
- {0xBB,0x77}, {0xBB,0xA7}, {0xBB,0xA3}, {0x8F,0xE5},
- {0xBB,0xA1}, {0xE4,0x4A}, {0x8F,0xE9}, {0xBD,0xD6},
- {0xBD,0xD2}, {0x99,0xD9}, {0xBD,0xD9}, {0xE7,0xD6},
- {0xBD,0xDA}, {0xE7,0xE2}, {0xE7,0xDB}, {0xBD,0xCB},
- {0xE7,0xE3}, {0xE7,0xDD}, {0xBD,0xD5}, {0xE7,0xDE},
- {0xBD,0xD4}, {0xE7,0xE1}, {0xBD,0xCE}, {0xE7,0xDF},
- {0xE7,0xD5}, {0xBD,0xCD}, {0xEB,0xAA}, {0xBD,0xD3},
- {0xBD,0xD0}, {0xBD,0xD8}, {0xE7,0xD4}, {0xE7,0xD8},
- {0xBD,0xCC}, {0xE7,0xD7}, {0xE7,0xD9}, {0xE7,0xDA},
- {0xBD,0xD7}, {0xE7,0xDC}, {0xE7,0xE0}, {0xE7,0xE4},
- {0x92,0x7C}, {0xBD,0xDB}, {0xBF,0xD2}, {0xEB,0xA5},
- {0xEB,0xAB}, {0xEB,0xA8}, {0xEB,0x7E}, {0xEB,0xAC},
- {0xEB,0xA1}, {0xEB,0xA7}, {0xBF,0xCD}, {0xBF,0xD3},
- {0xEB,0xAD}, {0x9C,0x45}, {0xBF,0xCF}, {0xBF,0xD9},
- {0xBF,0xD4}, {0xEB,0xAF}, {0xEB,0xA9}, {0xBF,0xD0},
- {0xEB,0xA2}, {0xBF,0xDA}, {0xEB,0xA3}, {0xEB,0xA4},
- {0xBF,0xDB}, {0xBF,0xD8}, {0xBD,0xD1}, {0xBF,0xCE},
- {0xEB,0xB0}, {0xBF,0xDC}, {0xBF,0xD5}, {0xEB,0xAE},
- {0xBF,0xD1}, {0xBF,0xD6}, {0xBF,0xD7}, {0xC1,0xC3},
- {0xEE,0xA4}, {0xEE,0xAD}, {0xEE,0xAA}, {0xEE,0xAC},
- {0xC1,0xC0}, {0xEE,0xA5}, {0x8F,0xDE}, {0xEE,0xAB},
- {0xC1,0xBC}, {0xEE,0xA7}, {0xC1,0xC4}, {0xEE,0xA3},
- {0xEE,0xA8}, {0xEE,0xAF}, {0xEB,0xA6}, {0xEE,0xA9},
- {0xEE,0xA2}, {0xC1,0xBD}, {0xEE,0xA1}, {0xC1,0xBE},
- {0xEE,0xB0}, {0xC1,0xBF}, {0xEE,0xAE}, {0xC1,0xC2},
- {0xEE,0x7E}, {0x8F,0xDF}, {0xC1,0xC1}, {0xEE,0xA6},
- {0xF0,0xDC}, {0xF0,0xEA}, {0xF0,0xE5}, {0xF0,0xE7},
- {0xF0,0xDB}, {0xC2,0xD3}, {0xF0,0xDA}, {0xC2,0xD6},
- {0xC2,0xD5}, {0xA0,0x4B}, {0xF0,0xE9}, {0xF0,0xE1},
- {0xF0,0xDE}, {0xF0,0xE4}, {0xF0,0xDD}, {0xF0,0xDF},
- {0xF0,0xE8}, {0xF0,0xE6}, {0xC2,0xD4}, {0xF0,0xED},
- {0xF0,0xEB}, {0xF0,0xE2}, {0xF0,0xEC}, {0xF0,0xE3},
- {0x8F,0xE2}, {0xF2,0xF9}, {0xC3,0xCF}, {0xF3,0x41},
- {0xA0,0xCC}, {0xF6,0x4F}, {0xC3,0xD6}, {0xF0,0xE0},
- {0xF2,0xF7}, {0xC3,0xD2}, {0xF2,0xF8}, {0xF2,0xFD},
- {0x8F,0xE3}, {0x8F,0xE4}, {0xC3,0xD4}, {0xC3,0xD5},
- {0xF2,0xF6}, {0xF3,0x40}, {0xF3,0x42}, {0xF2,0xFA},
- {0xF2,0xFC}, {0xF2,0xFE}, {0xF2,0xFB}, {0xF3,0x43},
- {0xC3,0xD1}, {0xC3,0xD7}, {0xC3,0xD3}, {0xC3,0xD0},
- {0xF4,0xD0}, {0x9B,0xC4}, {0xC4,0xB7}, {0xF4,0xCE},
- {0x9B,0xFC}, {0xF4,0xD2}, {0xF4,0xD3}, {0xC4,0xB5},
- {0xF4,0xD4}, {0xF4,0xD1}, {0x96,0x4C}, {0xF4,0xCF},
- {0xC4,0xB8}, {0xC4,0xB4}, {0xF4,0xD5}, {0xC4,0xB6},
- {0xC4,0xB3}, {0xC4,0xFE}, {0xC5,0x40}, {0xF6,0x4E},
- {0xF6,0x4D}, {0xF6,0x50}, {0xF6,0x51}, {0xC5,0x41},
- {0xF7,0x56}, {0xF7,0x5B}, {0xC5,0xAA}, {0x9A,0xF6},
- {0xF7,0x58}, {0x8C,0xAE}, {0xF7,0x57}, {0xF7,0x5A},
- {0xF7,0x59}, {0xF8,0x43}, {0xC5,0xDC}, {0xF8,0x42},
- {0xF8,0x40}, {0xF8,0x41}, {0x8F,0xE7}, {0xC5,0xFE},
- {0xC5,0xFD}, {0xF8,0xC1}, {0xF8,0xC2}, {0xC6,0x40},
- {0xF9,0x4D}, {0xF9,0x4E}, {0xC6,0x67}, {0x8F,0xE8},
- {0xC6,0x6D}, {0xF9,0xA9}, {0xF9,0xC8}, {0x8B,0xE7},
- {0x89,0x7A}, {0x89,0x7B}, {0xA8,0xA6}, {0xD7,0xCD},
- {0xD7,0xCE}, {0xE0,0x52}, {0xE4,0x50}, {0xE7,0xE5},
- {0xC1,0xC6}, {0xC1,0xC5}, {0xF0,0xEE}, {0xF3,0x44},
- {0xF8,0x44}, {0xA8,0xA7}, {0xD3,0xDE}, {0xB0,0x5A},
- {0xB3,0x61}, {0xE0,0x54}, {0xE0,0x53}, {0xBD,0xDC},
- {0xE7,0xE6}, {0xBD,0xDD}, {0xEE,0xB1}, {0xC2,0xD7},
- {0x99,0xDA}, {0xC6,0x76}, {0xA8,0xA8}, {0xCD,0xCB},
- {0xD3,0xDF}, {0xB3,0x62}, {0xD7,0xCF}, {0xD7,0xD0},
- {0xDB,0xE5}, {0xB6,0x48}, {0xB8,0xE6}, {0xE0,0x56},
- {0xE0,0x55}, {0xE0,0x57}, {0xE4,0x51}, {0xE4,0x52},
- {0xBB,0xA8}, {0xBF,0xDD}, {0xBD,0xDE}, {0xBF,0xDE},
- {0xEE,0xB5}, {0xEE,0xB2}, {0xEE,0xB4}, {0xEE,0xB3},
- {0xC1,0xC7}, {0xF0,0xEF}, {0xF3,0x46}, {0xF3,0x45},
- {0xCB,0xA4}, {0xB0,0x5C}, {0xB0,0x5B}, {0xD3,0xE0},
- {0xD7,0xD1}, {0xDB,0xE7}, {0xDB,0xE6}, {0xB6,0x49},
- {0xE0,0x59}, {0xE0,0x5A}, {0xE0,0x58}, {0xB8,0xE8},
- {0xB8,0xE7}, {0xBB,0xAA}, {0xBB,0xA9}, {0xE7,0xE7},
- {0xEB,0xB3}, {0xEB,0xB1}, {0xEB,0xB2}, {0xBF,0xDF},
- {0xEE,0xB7}, {0xEE,0xB6}, {0xF0,0xF2}, {0xF0,0xF1},
- {0xF0,0xF0}, {0xF3,0x47}, {0x8F,0xED}, {0xF9,0xAA},
- {0xA8,0xA9}, {0xAD,0x73}, {0x95,0xC0}, {0xAD,0x74},
- {0xB0,0x5D}, {0xB0,0x5E}, {0xD3,0xE2}, {0xD3,0xE1},
- {0xD7,0xD2}, {0xB3,0x68}, {0xB3,0x66}, {0xB3,0x63},
- {0xB3,0x67}, {0xB3,0x65}, {0xB3,0x64}, {0xA0,0xCB},
- {0xB6,0x4A}, {0xDB,0xEA}, {0xB8,0xED}, {0xB6,0x4C},
- {0xB6,0x51}, {0xDB,0xEC}, {0xB6,0x53}, {0xB6,0x52},
- {0xB6,0x55}, {0xDB,0xEB}, {0xDB,0xE8}, {0xB6,0x4F},
- {0xB6,0x4B}, {0xB6,0x4D}, {0xDB,0xE9}, {0xB6,0x54},
- {0xB6,0x50}, {0xB6,0x4E}, {0xB8,0xEF}, {0xB8,0xEE},
- {0xB8,0xEC}, {0xB8,0xF0}, {0xB8,0xEA}, {0xB8,0xEB},
- {0xB8,0xE9}, {0xE0,0x5B}, {0x9E,0x48}, {0xE4,0x54},
- {0xBB,0xAC}, {0xBB,0xAD}, {0xBB,0xAB}, {0x99,0xDB},
- {0xE4,0x53}, {0x8F,0xF3}, {0xE4,0x55}, {0xE7,0xEA},
- {0xE7,0xEC}, {0x8F,0xF9}, {0xBD,0xE7}, {0xE7,0xED},
- {0xBD,0xE0}, {0xE7,0xE9}, {0xBD,0xDF}, {0xBD,0xE9},
- {0xBD,0xE5}, {0xBD,0xE6}, {0xBD,0xE2}, {0xE7,0xE8},
- {0xBD,0xE1}, {0xE7,0xEE}, {0xE7,0xEB}, {0x95,0xC1},
- {0xBD,0xE8}, {0xA0,0x4E}, {0xBD,0xE3}, {0xBD,0xE4},
- {0xEB,0xB5}, {0xEB,0xB7}, {0xEB,0xB6}, {0x99,0xDC},
- {0xEB,0xB8}, {0xBF,0xE0}, {0xEB,0xB4}, {0xA0,0x64},
- {0xC1,0xCB}, {0xEE,0xB8}, {0xC1,0xC8}, {0xC1,0xCC},
- {0xC1,0xCA}, {0xC1,0xC9}, {0xF0,0xF3}, {0xF0,0xF6},
- {0xF0,0xF5}, {0x8F,0xF7}, {0xF0,0xF4}, {0xC2,0xD8},
- {0xF3,0x48}, {0xF3,0x49}, {0xC3,0xD8}, {0xF3,0x4A},
- {0xC3,0xD9}, {0x89,0xB0}, {0xA0,0x48}, {0xC4,0xBA},
- {0xC4,0xB9}, {0xF6,0x52}, {0x8F,0xFB}, {0x8F,0xF6},
- {0xC5,0x42}, {0xF6,0x53}, {0xF7,0x5C}, {0xC5,0xAB},
- {0xC5,0xAC}, {0x9D,0xDC}, {0xF8,0x45}, {0xC6,0x42},
- {0x99,0xDD}, {0x8B,0xE8}, {0xA8,0xAA}, {0xB3,0x6A},
- {0xB3,0x69}, {0xE0,0x5C}, {0xE0,0x5D}, {0xBB,0xAE},
- {0xEB,0xB9}, {0xBD,0xEA}, {0xEB,0xBA}, {0xEE,0xB9},
- {0xA8,0xAB}, {0xD0,0xB2}, {0xAD,0x76}, {0xAD,0x75},
- {0xD3,0xE3}, {0xB0,0x5F}, {0xD3,0xE4}, {0xD7,0xD5},
- {0x92,0xC1}, {0xD7,0xD4}, {0xD7,0xD3}, {0xDB,0xEE},
- {0xB6,0x58}, {0x9F,0xD6}, {0xDB,0xED}, {0xB6,0x57},
- {0xDB,0xEF}, {0xB6,0x56}, {0xE0,0x5F}, {0xE0,0x62},
- {0xE0,0x60}, {0xE0,0x61}, {0xE0,0x65}, {0xE0,0x5E},
- {0xE0,0x66}, {0xE0,0x63}, {0xE0,0x64}, {0xBB,0xB0},
- {0xE4,0x56}, {0xBB,0xAF}, {0xE7,0xF2}, {0xE7,0xF0},
- {0xBD,0xEB}, {0xE7,0xEF}, {0xE7,0xF1}, {0xBD,0xEC},
- {0xEB,0xBB}, {0xA0,0xD2}, {0xEB,0xBC}, {0xC1,0xCD},
- {0x90,0x40}, {0xF3,0x4C}, {0xF3,0x4E}, {0xF3,0x4B},
- {0xF3,0x4D}, {0xF4,0xD6}, {0xF6,0x54}, {0xF9,0x6F},
- {0xA8,0xAC}, {0xAD,0x77}, {0xD3,0xE5}, {0xD3,0xE7},
- {0xD3,0xE6}, {0xD7,0xD8}, {0xB3,0x6C}, {0xD7,0xD6},
- {0xB3,0x6B}, {0xD7,0xD9}, {0x8A,0xC4}, {0xD7,0xDA},
- {0xD7,0xD7}, {0x99,0xE0}, {0xDB,0xFB}, {0xB6,0x60},
- {0xDB,0xF3}, {0xDB,0xF9}, {0xB6,0x5B}, {0xB6,0x5E},
- {0xDB,0xF2}, {0xB6,0x59}, {0xDB,0xF6}, {0xE0,0x6C},
- {0xB6,0x5D}, {0xDB,0xF1}, {0x9F,0xF0}, {0xDB,0xF7},
- {0xDB,0xF4}, {0xDB,0xFA}, {0xDB,0xF0}, {0xDB,0xF8},
- {0xB6,0x5C}, {0xB6,0x5F}, {0xDB,0xF5}, {0xB6,0x5A},
- {0xB8,0xF2}, {0xE0,0x68}, {0xB8,0xF1}, {0xE0,0x6F},
- {0xE0,0x6E}, {0xB8,0xF8}, {0xB8,0xF9}, {0xE0,0x70},
- {0xB8,0xF3}, {0xE0,0x6D}, {0xB8,0xF7}, {0xE0,0x72},
- {0xE0,0x69}, {0xE0,0x6B}, {0xB8,0xF4}, {0xE0,0x67},
- {0xE0,0x6A}, {0xE0,0x71}, {0xB8,0xF5}, {0xE0,0x73},
- {0xB8,0xF6}, {0xBB,0xB1}, {0xE4,0x5B}, {0xE4,0x61},
- {0xE4,0x59}, {0xE4,0x62}, {0x9F,0xF3}, {0xE4,0x58},
- {0xE4,0x5D}, {0xE4,0x63}, {0xE4,0x60}, {0xE4,0x5F},
- {0xE4,0x5E}, {0xE4,0x57}, {0xE4,0x5C}, {0xE4,0x5A},
- {0x9D,0xBF}, {0xBD,0xF1}, {0xBD,0xEE}, {0xE7,0xFB},
- {0xE8,0x41}, {0xE8,0x43}, {0xE8,0x40}, {0xE7,0xF8},
- {0xE7,0xFA}, {0xE8,0x45}, {0xE8,0x42}, {0xE7,0xFC},
- {0xE8,0x46}, {0xE7,0xF9}, {0xE8,0x44}, {0xBD,0xEF},
- {0xBD,0xF5}, {0xBD,0xF3}, {0xE7,0xF3}, {0xBD,0xF4},
- {0xBD,0xF0}, {0xE7,0xF4}, {0xE7,0xF6}, {0xE7,0xF5},
- {0xE7,0xFD}, {0xE7,0xFE}, {0x9F,0xF6}, {0xBD,0xF2},
- {0x95,0xC8}, {0xBD,0xED}, {0x9E,0x5A}, {0xE7,0xF7},
- {0xEB,0xC6}, {0xBF,0xE2}, {0xEB,0xBD}, {0xBF,0xE3},
- {0xBF,0xE6}, {0xEB,0xC2}, {0xEB,0xBF}, {0xBF,0xE5},
- {0x99,0xE3}, {0xEB,0xC3}, {0xEB,0xC4}, {0xEB,0xBE},
- {0xEB,0xC7}, {0xEB,0xC0}, {0xEB,0xC5}, {0xBF,0xE4},
- {0xBF,0xE1}, {0xEB,0xC1}, {0x8A,0x4A}, {0xEE,0xBF},
- {0xC1,0xD0}, {0xC1,0xCE}, {0xC1,0xD1}, {0xC1,0xCF},
- {0xEE,0xBE}, {0xEE,0xBB}, {0xEE,0xBA}, {0x9F,0xF1},
- {0xEE,0xBD}, {0xEE,0xBC}, {0xF1,0x45}, {0xC2,0xDE},
- {0xF0,0xFB}, {0xF0,0xFA}, {0xC2,0xD9}, {0xF1,0x41},
- {0xF1,0x40}, {0xF0,0xF7}, {0xF1,0x43}, {0xF0,0xFC},
- {0xC2,0xDD}, {0xF0,0xF9}, {0xF1,0x42}, {0xF0,0xF8},
- {0xC2,0xDA}, {0xC2,0xDC}, {0xF0,0xFD}, {0xC2,0xDB},
- {0xF0,0xFE}, {0x8A,0xA7}, {0xF1,0x44}, {0xF3,0x52},
- {0xC3,0xDE}, {0xF3,0x4F}, {0xF3,0x53}, {0x99,0xE6},
- {0xC3,0xDB}, {0xF3,0x51}, {0xC3,0xE0}, {0x9F,0xF7},
- {0xC3,0xDD}, {0x9F,0xED}, {0xF3,0x50}, {0xC3,0xDF},
- {0xF3,0x54}, {0xC3,0xDA}, {0x8A,0x5C}, {0x9D,0xAE},
- {0xC4,0xBC}, {0xC4,0xBE}, {0xF4,0xD9}, {0xC4,0xBD},
- {0xF4,0xD7}, {0xC3,0xDC}, {0xF4,0xD8}, {0xC4,0xBB},
- {0xC5,0x43}, {0xC5,0x45}, {0xF6,0x56}, {0xC5,0x44},
- {0xF6,0x55}, {0xF7,0x61}, {0xC5,0xAD}, {0xF7,0x60},
- {0xC5,0xAE}, {0xF7,0x5E}, {0xF7,0x5D}, {0xF7,0x62},
- {0xF7,0x63}, {0xF8,0x46}, {0xF7,0x5F}, {0xF8,0xC6},
- {0xF8,0xC3}, {0xF8,0xC4}, {0xF8,0xC5}, {0xC6,0x5C},
- {0xF9,0x51}, {0xF9,0x50}, {0xF9,0x4F}, {0xF9,0x70},
- {0x95,0xC9}, {0xF9,0xBE}, {0xF9,0xAB}, {0xC6,0x6E},
- {0xA8,0xAD}, {0xB0,0x60}, {0x90,0x48}, {0x99,0xE8},
- {0xB8,0xFA}, {0x90,0x49}, {0x8C,0xBA}, {0xBD,0xF6},
- {0x90,0xB1}, {0xEB,0xC8}, {0xC2,0xDF}, {0xF3,0x55},
- {0x90,0x4A}, {0xF9,0xAC}, {0xA8,0xAE}, {0xAA,0xEE},
- {0xAD,0x79}, {0xAD,0x78}, {0x99,0xEA}, {0xB0,0x63},
- {0xD3,0xE8}, {0xB0,0x61}, {0xD3,0xE9}, {0xB0,0x62},
- {0xD7,0xDF}, {0xD7,0xDB}, {0x9B,0xD1}, {0xB3,0x6D},
- {0xD7,0xDE}, {0xD7,0xDD}, {0xD7,0xDC}, {0xB3,0x6E},
- {0xD7,0xE0}, {0xD7,0xE1}, {0x99,0xEB}, {0x99,0xEC},
- {0xDC,0x43}, {0xDC,0x41}, {0xDC,0x45}, {0xDC,0x46},
- {0xDC,0x4C}, {0xDC,0x48}, {0xDC,0x4A}, {0x99,0xED},
- {0xDC,0x42}, {0xDB,0xFC}, {0xDC,0x49}, {0x99,0xEE},
- {0xDC,0x4B}, {0xDC,0x44}, {0xDC,0x47}, {0xDB,0xFD},
- {0xB6,0x62}, {0xDC,0x40}, {0xDB,0xFE}, {0xB6,0x61},
- {0xB6,0x63}, {0xB8,0xFD}, {0xE0,0x75}, {0xE0,0x77},
- {0xE0,0x76}, {0xE0,0x7B}, {0xB8,0xFB}, {0xE0,0x78},
- {0xE0,0x74}, {0xE0,0x79}, {0xE0,0x7A}, {0xB8,0xFC},
- {0xB8,0xFE}, {0xE0,0x7C}, {0xE4,0x67}, {0xE4,0x66},
- {0xE4,0x64}, {0xE4,0x65}, {0xBB,0xB3}, {0xBB,0xB5},
- {0xBB,0xB2}, {0xBB,0xB4}, {0xE8,0x4D}, {0xE8,0x4E},
- {0xE8,0x49}, {0x90,0x4C}, {0xE8,0x4A}, {0xBD,0xF8},
- {0xBD,0xFD}, {0xBD,0xF7}, {0xBD,0xFE}, {0xBD,0xF9},
- {0xE8,0x4B}, {0xE8,0x4C}, {0xE8,0x48}, {0xBE,0x40},
- {0xBD,0xFB}, {0xBD,0xFA}, {0xBD,0xFC}, {0xE8,0x47},
- {0x90,0x4D}, {0xEB,0xCA}, {0xBF,0xE8}, {0x95,0xCB},
- {0xEB,0xCC}, {0xBF,0xEA}, {0xEB,0xCF}, {0xEB,0xCB},
- {0xEB,0xC9}, {0xEB,0xCE}, {0xBF,0xE9}, {0xEB,0xCD},
- {0xBF,0xE7}, {0xC1,0xD3}, {0xC1,0xD6}, {0xEE,0xC1},
- {0x97,0xE2}, {0xC1,0xD4}, {0xEE,0xC0}, {0xC1,0xD2},
- {0xC1,0xD5}, {0xF1,0x46}, {0xF1,0x47}, {0xF1,0x48},
- {0xC2,0xE0}, {0x95,0xCC}, {0xF1,0x49}, {0xC2,0xE1},
- {0xC3,0xE2}, {0xF3,0x58}, {0xF3,0x59}, {0xF3,0x57},
- {0xF3,0x56}, {0xF3,0x5A}, {0xC3,0xE1}, {0xF4,0xDD},
- {0xF4,0xDB}, {0xF4,0xDC}, {0xF4,0xDE}, {0xF4,0xDA},
- {0xF4,0xDF}, {0xF6,0x58}, {0x9F,0x78}, {0xF6,0x59},
- {0xF6,0x57}, {0xC5,0x46}, {0xF7,0x64}, {0xC5,0xAF},
- {0xF7,0x65}, {0xF8,0x48}, {0xF8,0x47}, {0x89,0x7C},
- {0x89,0x7D}, {0x89,0x7E}, {0x99,0x5D}, {0xA8,0xAF},
- {0xB6,0x64}, {0xB9,0x40}, {0x9B,0x5A}, {0xBB,0xB6},
- {0x90,0x50}, {0xBF,0xEC}, {0x8C,0x4F}, {0xBF,0xEB},
- {0xC3,0xE3}, {0xC4,0x7C}, {0xC5,0x47}, {0xA8,0xB0},
- {0xB0,0x64}, {0xB9,0x41}, {0x90,0x54}, {0xF3,0x5B},
- {0xC6,0xD6}, {0x9A,0xA8}, {0x99,0xEF}, {0xFE,0xEB},
- {0x9D,0xA3}, {0x9D,0xA1}, {0x99,0x43}, {0x99,0x45},
- {0x9D,0x7D}, {0xCB,0xA6}, {0x99,0xF0}, {0xA8,0xB1},
- {0xA8,0xB4}, {0xA8,0xB3}, {0xA8,0xB2}, {0xCB,0xA5},
- {0x99,0xF1}, {0xCD,0xCD}, {0x99,0xF2}, {0xCD,0xCF},
- {0xAA,0xEF}, {0x8C,0xBC}, {0x9D,0x60}, {0xAA,0xF1},
- {0xCD,0xCC}, {0xCD,0xCE}, {0xAA,0xF0}, {0xCD,0xD1},
- {0xCD,0xD0}, {0xCD,0xD2}, {0xA0,0xA3}, {0xD0,0xB6},
- {0xD0,0xB4}, {0xAD,0x7C}, {0xD0,0xB3}, {0xAD,0xA3},
- {0xAD,0x7E}, {0xAD,0x7B}, {0xAD,0xA4}, {0xAD,0x7D},
- {0xAD,0xA2}, {0xAD,0xA1}, {0xD0,0xB5}, {0xAD,0x7A},
- {0xB0,0x6A}, {0xD3,0xEB}, {0xD3,0xF1}, {0xB0,0x67},
- {0xB0,0x6E}, {0x90,0x5B}, {0xB0,0x69}, {0xD3,0xEE},
- {0xD3,0xF0}, {0xB0,0x6C}, {0xD3,0xEA}, {0xD3,0xED},
- {0xB0,0x68}, {0xB0,0x65}, {0xD3,0xEC}, {0xB0,0x6B},
- {0xD3,0xEF}, {0xB0,0x6D}, {0xB0,0x66}, {0x9E,0xDB},
- {0xD7,0xE3}, {0xD7,0xE6}, {0xB3,0x70}, {0xB3,0x7A},
- {0xB3,0x76}, {0xD7,0xE4}, {0x9D,0x79}, {0xB3,0x7E},
- {0xB3,0x77}, {0xB3,0x7C}, {0xB3,0x72}, {0xB3,0x6F},
- {0xB3,0x71}, {0xB3,0x7D}, {0xD7,0xE5}, {0xB3,0x75},
- {0xB3,0x78}, {0xB3,0x74}, {0xB3,0x79}, {0xD7,0xE7},
- {0xB3,0x7B}, {0xB3,0x73}, {0xD7,0xE2}, {0xDC,0x4D},
- {0xB6,0x65}, {0xDC,0x4F}, {0xB6,0x67}, {0xB6,0x69},
- {0x99,0xF3}, {0xDC,0x4E}, {0xB6,0x66}, {0xB6,0x6A},
- {0x90,0x62}, {0xB6,0x68}, {0xB9,0x47}, {0xE0,0xA3},
- {0xB9,0x4F}, {0xE0,0x7E}, {0xB9,0x50}, {0xB9,0x45},
- {0xE0,0xA1}, {0xB9,0x4A}, {0xE0,0xA2}, {0xB9,0x43},
- {0xB9,0x42}, {0x9F,0x55}, {0xB9,0x4D}, {0xB9,0x4C},
- {0xB9,0x4B}, {0xB9,0x49}, {0xB9,0x4E}, {0xE0,0x7D},
- {0xB9,0x44}, {0xB9,0x46}, {0xB9,0x48}, {0x9B,0xF9},
- {0xBB,0xB8}, {0xBB,0xBB}, {0xBB,0xBF}, {0xBB,0xB9},
- {0xBB,0xBE}, {0xBB,0xBC}, {0xBB,0xB7}, {0x90,0x65},
- {0xBB,0xBD}, {0xBB,0xBA}, {0x96,0xE0}, {0xE8,0x52},
- {0xBE,0x43}, {0xBE,0x41}, {0xE8,0x53}, {0x98,0xBE},
- {0xBE,0x44}, {0xBE,0x42}, {0xE8,0x51}, {0xE8,0x50},
- {0xBF,0xF0}, {0xE8,0x4F}, {0xBF,0xEE}, {0xBF,0xED},
- {0xEB,0xD0}, {0xBE,0x45}, {0xBF,0xEF}, {0xEB,0xD1},
- {0xBF,0xF2}, {0xEB,0xD2}, {0xBF,0xF1}, {0xC1,0xD8},
- {0xEE,0xC3}, {0xC1,0xD7}, {0xC1,0xDC}, {0xC1,0xDA},
- {0xC1,0xDB}, {0xC2,0xE3}, {0xC1,0xD9}, {0xEE,0xC2},
- {0xEB,0xD3}, {0xC2,0xE2}, {0xC2,0xE4}, {0xC3,0xE4},
- {0xC3,0xE5}, {0xF4,0xE0}, {0xC5,0xDE}, {0xC5,0xDD},
- {0xA8,0xB6}, {0xCA,0x55}, {0xB0,0x6F}, {0xCA,0x52},
- {0xCA,0x53}, {0xCA,0x51}, {0xCA,0x54}, {0xCB,0xAA},
- {0xCB,0xA7}, {0xCB,0xAC}, {0xCB,0xA8}, {0xA8,0xB7},
- {0xA8,0xBA}, {0xCB,0xA9}, {0xA8,0xB9}, {0xCB,0xAB},
- {0x90,0x68}, {0xA8,0xB8}, {0x90,0x6C}, {0xCD,0xD5},
- {0xCD,0xD7}, {0xAA,0xF4}, {0xCD,0xD3}, {0xCD,0xD6},
- {0xCD,0xD4}, {0xAA,0xF2}, {0xAA,0xF5}, {0xAA,0xF3},
- {0x95,0xD8}, {0xD0,0xB8}, {0xD0,0xBC}, {0xD0,0xB9},
- {0xAD,0xA7}, {0xAD,0xA8}, {0x90,0x6A}, {0xD0,0xBB},
- {0xD0,0xBD}, {0xD0,0xBF}, {0xAD,0xA5}, {0xD0,0xBE},
- {0xAD,0xA6}, {0xD7,0xEE}, {0xD0,0xBA}, {0xD3,0xF2},
- {0xD3,0xFB}, {0xD3,0xF9}, {0xD3,0xF4}, {0xD3,0xF5},
- {0xD3,0xFA}, {0xD3,0xFC}, {0xB0,0x71}, {0xD3,0xF7},
- {0xD3,0xF3}, {0xB0,0x70}, {0xB0,0x72}, {0xD3,0xF6},
- {0xD3,0xFD}, {0xD3,0xF8}, {0xB3,0xA1}, {0xD7,0xF1},
- {0xD7,0xE9}, {0xD7,0xEF}, {0xD7,0xF0}, {0xB3,0xA2},
- {0xD7,0xE8}, {0xD7,0xEA}, {0xD0,0xB7}, {0xD7,0xEC},
- {0xD7,0xED}, {0xD7,0xEB}, {0xB6,0x6C}, {0xDC,0x56},
- {0xEB,0xD4}, {0xDC,0x57}, {0xDC,0x54}, {0xB3,0xA3},
- {0xB6,0x6E}, {0xDC,0x53}, {0xDC,0x59}, {0xDC,0x58},
- {0xB6,0x6B}, {0xDC,0x5C}, {0xDC,0x52}, {0xDC,0x5B},
- {0xDC,0x50}, {0xDC,0x5A}, {0xDC,0x55}, {0xB6,0x6D},
- {0xE0,0xAA}, {0xE0,0xA5}, {0xE0,0xAB}, {0xE0,0xA6},
- {0xE0,0xA4}, {0xE0,0xA7}, {0xB9,0x51}, {0xE0,0xA9},
- {0xE0,0xA8}, {0xB9,0x52}, {0xBB,0xC1}, {0xBB,0xC0},
- {0xE4,0x6E}, {0xE4,0x71}, {0xE4,0x69}, {0xE4,0x6D},
- {0xBB,0xC2}, {0xE4,0x6C}, {0xE4,0x6A}, {0xE4,0x70},
- {0xE4,0x6B}, {0xE4,0x68}, {0xE4,0x6F}, {0xE8,0x59},
- {0xBE,0x48}, {0xF1,0x4A}, {0xE8,0x56}, {0xE8,0x57},
- {0xE8,0x55}, {0xDC,0x51}, {0xBE,0x47}, {0xE8,0x5A},
- {0xE8,0x54}, {0xBE,0x46}, {0xBE,0x49}, {0xE8,0x58},
- {0xEB,0xD5}, {0xBF,0xF3}, {0xEB,0xD6}, {0xEB,0xD7},
- {0xEE,0xC4}, {0xC1,0xDD}, {0xF1,0x4B}, {0xF1,0x4C},
- {0xF1,0x4D}, {0xF3,0x5D}, {0xF3,0x5C}, {0xF4,0xE2},
- {0xF4,0xE1}, {0xF6,0x5B}, {0xF6,0x5C}, {0xF6,0x5A},
- {0xF7,0x66}, {0xC5,0xB0}, {0xA8,0xBB}, {0xAD,0xAA},
- {0xAD,0xA9}, {0xB0,0x75}, {0xB0,0x74}, {0xD4,0x40},
- {0xD4,0x41}, {0xD3,0xFE}, {0x9F,0xB2}, {0xB0,0x73},
- {0xD7,0xF5}, {0xD7,0xF6}, {0xD7,0xF2}, {0xB3,0xA4},
- {0xD7,0xF3}, {0x9F,0xAE}, {0xD7,0xF4}, {0x9F,0xB0},
- {0x89,0xAD}, {0xDC,0x5F}, {0xDC,0x61}, {0xDC,0x5D},
- {0xDC,0x60}, {0xB6,0x6F}, {0xDC,0x5E}, {0xB6,0x70},
- {0x90,0x6E}, {0xDD,0x73}, {0xB9,0x55}, {0xB9,0x54},
- {0xB9,0x53}, {0xE0,0xAC}, {0xE0,0xAD}, {0x9E,0x71},
- {0xE4,0x73}, {0xE4,0x75}, {0xBB,0xC6}, {0xBB,0xC3},
- {0x9E,0x4A}, {0xBB,0xC5}, {0xBB,0xC4}, {0xE4,0x74},
- {0xE4,0x72}, {0x9F,0xDC}, {0xE8,0x61}, {0xE8,0x5E},
- {0xE8,0x5F}, {0xBE,0x4D}, {0xE8,0x60}, {0xE8,0x5B},
- {0xE8,0x5C}, {0xBE,0x4A}, {0xBE,0x4B}, {0xE8,0x5D},
- {0xBE,0x4C}, {0x89,0xAB}, {0xEB,0xDB}, {0x9F,0xB8},
- {0xEB,0xDC}, {0xEB,0xD9}, {0xEB,0xDA}, {0xBF,0xF4},
- {0xEB,0xD8}, {0xEE,0xC8}, {0xEE,0xC5}, {0xEE,0xC7},
- {0xC1,0xE0}, {0xEE,0xCB}, {0xC1,0xDF}, {0xEE,0xC9},
- {0xEE,0xCC}, {0xEE,0xCA}, {0xEE,0xC6}, {0xC1,0xDE},
- {0xF1,0x4F}, {0xF1,0x50}, {0xF1,0x4E}, {0x90,0x70},
- {0xF1,0x52}, {0xC2,0xE5}, {0xC2,0xE6}, {0xF3,0x5F},
- {0xC3,0xE7}, {0xF1,0x51}, {0xF3,0x5E}, {0xC3,0xE6},
- {0xF4,0xE5}, {0xF4,0xE6}, {0xC4,0xBF}, {0xF4,0xE4},
- {0x8B,0x63}, {0xF4,0xE3}, {0xF6,0x5D}, {0xC5,0x48},
- {0x95,0xDC}, {0xF8,0x49}, {0xF8,0xC8}, {0xF8,0xC7},
- {0xC6,0x43}, {0xC6,0x5D}, {0xF8,0xC9}, {0xF9,0x71},
- {0x90,0x71}, {0xC6,0x6F}, {0xA8,0xBC}, {0xAA,0xF6},
- {0xB9,0x56}, {0xC4,0xC0}, {0xA8,0xBD}, {0xAD,0xAB},
- {0xB3,0xA5}, {0xB6,0x71}, {0xC2,0xE7}, {0xAA,0xF7},
- {0xD0,0xC1}, {0xD0,0xC0}, {0xD4,0x42}, {0xFC,0x5E},
- {0xB0,0x78}, {0xB0,0x76}, {0xB0,0x7A}, {0xD4,0x44},
- {0xB0,0x79}, {0xB0,0x77}, {0x89,0x49}, {0xD4,0x43},
- {0xB3,0xA8}, {0xD7,0xFC}, {0x96,0x5B}, {0xB3,0xA7},
- {0xB3,0xA9}, {0xD8,0x42}, {0xB3,0xAB}, {0xD7,0xFE},
- {0xD8,0x40}, {0xD7,0xF7}, {0xB3,0xAA}, {0xD8,0x43},
- {0xD7,0xF9}, {0xD7,0xFA}, {0xD7,0xF8}, {0xB3,0xA6},
- {0x8C,0x50}, {0xD8,0x41}, {0xD7,0xFB}, {0xD7,0xFD},
- {0x94,0xA6}, {0xDC,0x6D}, {0x8F,0xD5}, {0xDC,0x6C},
- {0xDC,0x6A}, {0xDC,0x62}, {0xDC,0x71}, {0xDC,0x65},
- {0xDC,0x6F}, {0xDC,0x76}, {0xDC,0x6E}, {0xB6,0x79},
- {0x9E,0x73}, {0xB6,0x75}, {0xDC,0x63}, {0xDC,0x69},
- {0xB6,0x77}, {0x90,0x75}, {0xDC,0x68}, {0xB6,0x78},
- {0xB6,0x7A}, {0xDC,0x6B}, {0x99,0xF7}, {0xB6,0x72},
- {0xB6,0x73}, {0xDC,0x77}, {0xDC,0x75}, {0xDC,0x74},
- {0xDC,0x66}, {0xDC,0x72}, {0xB6,0x76}, {0x8C,0xBF},
- {0xB6,0x74}, {0xDC,0x73}, {0xDC,0x64}, {0xDC,0x67},
- {0xDC,0x70}, {0x99,0xF9}, {0x96,0x63}, {0x95,0xB9},
- {0xE4,0xBA}, {0xE0,0xB7}, {0xE0,0xB0}, {0xE0,0xC3},
- {0xE0,0xCC}, {0xE0,0xB3}, {0xB9,0x61}, {0x94,0xD4},
- {0xE0,0xC0}, {0xB9,0x57}, {0xB9,0x59}, {0xB9,0x65},
- {0xE0,0xB1}, {0xFC,0xFA}, {0xB9,0x5A}, {0xB9,0x5C},
- {0xB9,0x66}, {0xB9,0x5B}, {0x90,0x77}, {0x90,0xAB},
- {0xB9,0x64}, {0xE0,0xB9}, {0xE0,0xAE}, {0xB9,0x62},
- {0xE0,0xB8}, {0xB9,0x5E}, {0xE0,0xCA}, {0xB9,0x63},
- {0xE0,0xC8}, {0xE0,0xBC}, {0xE0,0xC6}, {0xB9,0x60},
- {0xE0,0xAF}, {0xE0,0xC9}, {0xE0,0xC4}, {0x9D,0x4D},
- {0xE0,0xCB}, {0xB9,0x58}, {0x99,0xFA}, {0xB9,0x67},
- {0xB9,0x5D}, {0x92,0xE3}, {0xE0,0xB5}, {0x97,0xBB},
- {0xE0,0xBD}, {0xE0,0xC1}, {0x90,0x78}, {0xE0,0xC5},
- {0xB9,0x5F}, {0xE0,0xB4}, {0xE0,0xB2}, {0xE0,0xBE},
- {0x99,0xFB}, {0xE0,0xBB}, {0xE0,0xBA}, {0x97,0xE0},
- {0xE0,0xBF}, {0xE0,0xC2}, {0xE0,0xC7}, {0xE4,0x78},
- {0x96,0xDC}, {0xBB,0xC7}, {0xE4,0xA4}, {0xE4,0x7A},
- {0xBB,0xCC}, {0xBB,0xD0}, {0xE4,0xAD}, {0xE4,0xB5},
- {0xE4,0xA6}, {0xBB,0xC8}, {0x9C,0xA8}, {0xE4,0xAA},
- {0xE0,0xB6}, {0x97,0x72}, {0xBB,0xC9}, {0xE4,0xB1},
- {0xE4,0xB6}, {0xE4,0xAE}, {0x94,0x40}, {0xE4,0xB0},
- {0xE4,0xB9}, {0xE4,0xB2}, {0xE4,0x7E}, {0xE4,0xA9},
- {0x92,0xF2}, {0xBB,0xD1}, {0xBB,0xCD}, {0xE4,0x7C},
- {0xE4,0xAB}, {0xBB,0xCB}, {0xE4,0xA5}, {0xBB,0xCA},
- {0xE4,0xB3}, {0xE4,0xA2}, {0xE4,0x79}, {0xBB,0xCE},
- {0xE4,0xB8}, {0xE4,0x7B}, {0xE4,0xAF}, {0xE4,0xAC},
- {0xE4,0xA7}, {0xE4,0x77}, {0xE4,0x76}, {0xE4,0xA1},
- {0xE4,0xB4}, {0xBB,0xCF}, {0xE4,0xB7}, {0xE4,0x7D},
- {0xE4,0xA3}, {0xBE,0x52}, {0x99,0xFD}, {0x99,0xFC},
- {0xBE,0x5A}, {0xBE,0x55}, {0xE8,0xA4}, {0xE8,0xA1},
- {0xE8,0x67}, {0xBE,0x50}, {0xF9,0xD7}, {0x96,0x4A},
- {0xBE,0x4F}, {0xBE,0x56}, {0x96,0xD8}, {0x99,0xFE},
- {0xE8,0x65}, {0xBE,0x54}, {0xE8,0x71}, {0xE8,0x63},
- {0xE8,0x64}, {0xBE,0x4E}, {0xE8,0xA3}, {0xBE,0x58},
- {0xE8,0x74}, {0xE8,0x79}, {0xE8,0x73}, {0xEB,0xEE},
- {0xE8,0x6F}, {0xE8,0x77}, {0xE8,0x75}, {0xE8,0x68},
- {0xE8,0x62}, {0xE8,0x7D}, {0xBE,0x57}, {0xE8,0x7E},
- {0x90,0x4B}, {0xE8,0x78}, {0xE8,0x6D}, {0xE8,0x6B},
- {0xE8,0x66}, {0xFA,0x41}, {0xE8,0x6E}, {0xE8,0x7B},
- {0xE8,0x6A}, {0xE8,0x7A}, {0xE8,0xA2}, {0x9A,0x40},
- {0xBE,0x53}, {0x97,0x5B}, {0xE8,0x76}, {0xE8,0x7C},
- {0xE8,0x72}, {0xE8,0x6C}, {0xBE,0x51}, {0x9A,0x41},
- {0x91,0xDD}, {0xE4,0xA8}, {0xE8,0x70}, {0xBE,0x59},
- {0xE8,0x69}, {0x93,0xFC}, {0x9A,0x42}, {0x9A,0x43},
- {0x96,0x59}, {0xEB,0xF4}, {0xBF,0xF7}, {0xEB,0xF3},
- {0xEB,0xF0}, {0xEC,0x44}, {0xBF,0xFB}, {0x9A,0x44},
- {0xEC,0x41}, {0xEB,0xF8}, {0xEC,0x43}, {0xEB,0xE9},
- {0xEB,0xF6}, {0x90,0x51}, {0xBF,0xFD}, {0xEB,0xE1},
- {0x94,0xBF}, {0xEB,0xDF}, {0xEC,0x42}, {0xEC,0x40},
- {0xEB,0xFE}, {0xEB,0xED}, {0xEB,0xEC}, {0xEB,0xE2},
- {0xC0,0x40}, {0xEB,0xE8}, {0xEB,0xF2}, {0xEB,0xFD},
- {0xC0,0x43}, {0xEC,0x45}, {0xC1,0xE8}, {0xC0,0x45},
- {0xBF,0xFE}, {0xEB,0xE6}, {0xEB,0xEF}, {0xEB,0xDE},
- {0xEB,0xE0}, {0xBF,0xF5}, {0xC0,0x42}, {0xBF,0xFA},
- {0xEB,0xE7}, {0xEB,0xF7}, {0xEB,0xF1}, {0xC0,0x41},
- {0xEB,0xDD}, {0xC1,0xE3}, {0xEB,0xF9}, {0xEB,0xFC},
- {0xBF,0xFC}, {0x90,0xA2}, {0xEB,0xEB}, {0xC0,0x44},
- {0xBF,0xF9}, {0x9C,0xAB}, {0x97,0x76}, {0xBF,0xF8},
- {0xEB,0xF5}, {0xEB,0xFB}, {0xBF,0xF6}, {0xEB,0xE4},
- {0xEB,0xFA}, {0xEB,0xE5}, {0xFC,0x55}, {0xFE,0x45},
- {0x94,0xA8}, {0x9A,0x45}, {0xFA,0x4B}, {0x9D,0xE1},
- {0xEB,0xEA}, {0xEE,0xD2}, {0x96,0xD9}, {0xEE,0xD7},
- {0xC1,0xE5}, {0xC1,0xE7}, {0xEE,0xDD}, {0xC1,0xE1},
- {0xEE,0xEC}, {0xEE,0xE3}, {0xEE,0xD8}, {0xEE,0xD9},
- {0xEE,0xE2}, {0xC1,0xEE}, {0xEE,0xE1}, {0xEE,0xD1},
- {0xEE,0xE0}, {0xEE,0xD4}, {0xEE,0xED}, {0xC1,0xED},
- {0xC1,0xEB}, {0xEE,0xD5}, {0xEE,0xE8}, {0x97,0x74},
- {0xEE,0xDA}, {0xEE,0xE7}, {0xFD,0xF5}, {0xEE,0xE9},
- {0xEE,0xD0}, {0xC1,0xE6}, {0x92,0xE5}, {0xEE,0xEA},
- {0x96,0x45}, {0x91,0xDA}, {0xEE,0xDE}, {0x90,0xA3},
- {0xC1,0xEA}, {0xEE,0xDB}, {0xA0,0x5F}, {0xC1,0xEC},
- {0xEE,0xE4}, {0x90,0xAF}, {0x97,0xBF}, {0xC1,0xE4},
- {0xEE,0xD6}, {0xEE,0xE5}, {0x91,0x4C}, {0xEE,0xDF},
- {0xEB,0xE3}, {0xEE,0xE6}, {0xEE,0xD3}, {0x96,0x7A},
- {0xC1,0xE9}, {0xEE,0xEB}, {0x91,0xDE}, {0xC1,0xE2},
- {0xEE,0xCE}, {0x9A,0x46}, {0xFE,0xB0}, {0x97,0x79},
- {0x94,0x6C}, {0xF1,0x60}, {0xF1,0x59}, {0xC2,0xE9},
- {0xF1,0x54}, {0xF1,0x63}, {0xF1,0x5B}, {0xEE,0xDC},
- {0x98,0x58}, {0xF1,0x65}, {0xF1,0x55}, {0xC2,0xE8},
- {0xF1,0x5F}, {0xC2,0xEA}, {0xC2,0xF2}, {0xC2,0xF0},
- {0xF1,0x61}, {0xC2,0xF1}, {0xF1,0x57}, {0x92,0x66},
- {0xF1,0x58}, {0xF1,0x5D}, {0xF1,0x62}, {0x93,0xFB},
- {0xEE,0xCD}, {0xC2,0xEB}, {0xF1,0x6A}, {0xF1,0x67},
- {0xF1,0x6B}, {0xF1,0x5E}, {0xF1,0x5A}, {0xF1,0x68},
- {0xF3,0x6A}, {0xF1,0x5C}, {0xC2,0xEE}, {0x9A,0x47},
- {0xC2,0xED}, {0xEE,0xCF}, {0xC2,0xEF}, {0xF1,0x64},
- {0xF1,0x66}, {0xC2,0xEC}, {0xF1,0x69}, {0xF1,0x53},
- {0xF1,0x56}, {0x97,0x49}, {0x97,0x48}, {0x93,0x4A},
- {0x9C,0xE2}, {0xF3,0x73}, {0xF3,0x63}, {0xC3,0xEB},
- {0xF3,0x71}, {0x92,0x64}, {0xF3,0x61}, {0xC3,0xEC},
- {0xF3,0x6C}, {0x91,0xDF}, {0xF3,0x68}, {0xC3,0xF1},
- {0xF3,0x72}, {0xF3,0x62}, {0xF3,0x65}, {0xC3,0xE9},
- {0xF3,0x74}, {0xFB,0x79}, {0xF3,0x6D}, {0xF3,0x70},
- {0xC3,0xEF}, {0xC3,0xF4}, {0xC3,0xF2}, {0xF3,0x69},
- {0xF3,0x64}, {0x96,0xD7}, {0xC3,0xED}, {0xC3,0xEE},
- {0xF3,0x60}, {0xC3,0xEA}, {0x93,0x43}, {0xC3,0xE8},
- {0xC3,0xF0}, {0xF3,0x6F}, {0xC3,0xF3}, {0xF3,0x6B},
- {0xF3,0x75}, {0xC3,0xF5}, {0xF3,0x67}, {0xF3,0x6E},
- {0xFD,0xCB}, {0xFE,0x7A}, {0x91,0xDB}, {0x8C,0x6A},
- {0xF4,0xF3}, {0xF5,0x42}, {0xF4,0xF5}, {0xF4,0xFC},
- {0xF3,0x66}, {0xF4,0xFA}, {0xF4,0xE9}, {0xF5,0x40},
- {0xC4,0xC3}, {0xF4,0xED}, {0xF4,0xFE}, {0xF4,0xF4},
- {0x97,0xAF}, {0xC4,0xC2}, {0x95,0xDD}, {0xF5,0x44},
- {0xF4,0xF6}, {0x93,0x48}, {0xF4,0xFB}, {0xF4,0xFD},
- {0xF4,0xE7}, {0xF5,0x41}, {0xF4,0xF2}, {0xF4,0xF7},
- {0xF4,0xEB}, {0xF4,0xEF}, {0xF5,0x43}, {0xF4,0xF9},
- {0xF4,0xE8}, {0xF4,0xEC}, {0xF4,0xEE}, {0xF4,0xF8},
- {0x9A,0x4B}, {0xC4,0xC1}, {0xF4,0xF1}, {0xFC,0x45},
- {0x9A,0x4D}, {0xF4,0xEA}, {0x91,0xBC}, {0x90,0xE2},
- {0x90,0xB4}, {0x95,0xE1}, {0xF4,0xF0}, {0xF6,0x61},
- {0xF6,0x66}, {0xC5,0x4F}, {0xF6,0x68}, {0x9A,0x4E},
- {0xC5,0x49}, {0xF6,0x64}, {0xF6,0x6A}, {0xC5,0x4E},
- {0xC5,0x4A}, {0xC5,0x4B}, {0xF6,0x60}, {0xF6,0x67},
- {0xC5,0x4D}, {0xF6,0x65}, {0xC5,0x4C}, {0xF6,0x5F},
- {0xF6,0x63}, {0xF6,0x62}, {0x9A,0x4F}, {0xF6,0x5E},
- {0xF6,0x69}, {0xFE,0x40}, {0xFE,0x43}, {0xC5,0xB1},
- {0xF7,0x6D}, {0xF7,0x70}, {0xF7,0x6C}, {0xF7,0x6E},
- {0xF7,0x6F}, {0xF7,0x69}, {0xF7,0x6A}, {0xF7,0x67},
- {0x96,0xDD}, {0xF7,0x6B}, {0xF7,0x68}, {0xC5,0xB2},
- {0xC5,0xB3}, {0x9A,0x51}, {0xF8,0x4B}, {0xF8,0x4D},
- {0x96,0xA7}, {0x90,0xB0}, {0xF8,0x4C}, {0xF8,0x4E},
- {0xC5,0xE0}, {0xF8,0x4A}, {0xC5,0xDF}, {0xC5,0xE1},
- {0x9C,0x4E}, {0x94,0x43}, {0xF8,0xCB}, {0xF8,0xCC},
- {0xC6,0x44}, {0xF8,0xCA}, {0x8E,0xBA}, {0xF9,0x53},
- {0xF9,0x52}, {0xF9,0x54}, {0xC6,0x5F}, {0xF9,0x55},
- {0xC6,0x5E}, {0xF9,0x56}, {0xF9,0x72}, {0xF9,0x75},
- {0xF9,0x74}, {0xC6,0x68}, {0xF9,0x73}, {0x9A,0x52},
- {0xFC,0xC1}, {0xC6,0x72}, {0xC6,0x70}, {0xC6,0x71},
- {0xC6,0x77}, {0xF9,0xC0}, {0xF9,0xC1}, {0xF9,0xBF},
- {0xF9,0xC9}, {0x8B,0xE9}, {0x9C,0xAF}, {0x8B,0xFD},
- {0x9A,0xBC}, {0x9A,0xB8}, {0x9A,0xAE}, {0x9A,0xA7},
- {0x9A,0x53}, {0x9D,0x74}, {0xAA,0xF8}, {0x8B,0xEA},
- {0xD8,0x44}, {0xDC,0x78}, {0xE8,0xA5}, {0xF3,0x76},
- {0x8B,0xEB}, {0xAA,0xF9}, {0xAD,0xAC}, {0xB0,0x7B},
- {0x90,0xB2}, {0xD8,0x45}, {0xD8,0x46}, {0xB3,0xAC},
- {0xB6,0x7D}, {0xDC,0x7A}, {0xDC,0x79}, {0xB6,0xA3},
- {0xB6,0x7C}, {0xDC,0x7B}, {0xB6,0x7E}, {0xB6,0xA2},
- {0xB6,0xA1}, {0xB6,0x7B}, {0x95,0xE9}, {0x95,0xE8},
- {0xB9,0x68}, {0x95,0xE6}, {0xE0,0xD0}, {0xE0,0xCE},
- {0xE0,0xCF}, {0xE0,0xCD}, {0x90,0xB5}, {0xBB,0xD2},
- {0x9A,0x54}, {0xBB,0xD5}, {0xBB,0xD7}, {0xBB,0xD6},
- {0x90,0xB3}, {0x95,0xE7}, {0xBB,0xD3}, {0xBB,0xD4},
- {0x8B,0x50}, {0xE8,0xA7}, {0xE8,0xA6}, {0xBE,0x5B},
- {0xE8,0xA8}, {0xE8,0xA9}, {0xBE,0x5C}, {0xEC,0x4D},
- {0xEC,0x4B}, {0xEE,0xF3}, {0xEC,0x49}, {0xEC,0x4A},
- {0xC0,0x46}, {0xEC,0x46}, {0xEC,0x4E}, {0xEC,0x48},
- {0xEC,0x4C}, {0xEE,0xEF}, {0xEE,0xF1}, {0xEE,0xF2},
- {0xC1,0xF3}, {0xEE,0xEE}, {0xC1,0xF2}, {0xEE,0xF0},
- {0xC1,0xEF}, {0xC1,0xF0}, {0xC1,0xF1}, {0xEC,0x47},
- {0xC2,0xF5}, {0xF1,0x6E}, {0xF1,0x6C}, {0xF1,0x6D},
- {0xC2,0xF3}, {0xC2,0xF6}, {0xC2,0xF4}, {0xF3,0x77},
- {0xF3,0x78}, {0xC3,0xF6}, {0xF5,0x45}, {0xF5,0x47},
- {0xF5,0x46}, {0xC4,0xC4}, {0xC5,0x50}, {0xF6,0x6D},
- {0xF6,0x6C}, {0xF6,0x6B}, {0x8B,0xEC}, {0x9A,0x56},
- {0xAA,0xFA}, {0x8B,0xFB}, {0xC9,0xAA}, {0xCA,0x58},
- {0xA6,0xE9}, {0xCA,0x56}, {0xCA,0x59}, {0xCA,0x57},
- {0xCB,0xAE}, {0xA8,0xC1}, {0xA8,0xC2}, {0xCB,0xB0},
- {0xA8,0xBF}, {0xCB,0xAF}, {0xCB,0xAD}, {0xA8,0xC0},
- {0xA8,0xBE}, {0x9A,0x57}, {0xA0,0xAA}, {0xCD,0xD8},
- {0xCD,0xDB}, {0xAA,0xFD}, {0xCD,0xDA}, {0xCD,0xD9},
- {0xAA,0xFC}, {0xAA,0xFB}, {0x9F,0xA6}, {0xAB,0x40},
- {0xCD,0xDC}, {0xAA,0xFE}, {0x99,0xCC}, {0xD0,0xC6},
- {0xAD,0xAE}, {0xAD,0xAF}, {0xAD,0xB0}, {0xD0,0xC7},
- {0xD0,0xC3}, {0xAD,0xAD}, {0xD0,0xC4}, {0xD0,0xC5},
- {0xD0,0xC2}, {0x9C,0x59}, {0xB0,0xA4}, {0xB0,0xA1},
- {0xD4,0x45}, {0xB0,0xA2}, {0xB0,0xA5}, {0xD4,0x46},
- {0xB0,0x7E}, {0xB0,0x7C}, {0xB0,0x7D}, {0xB0,0xA3},
- {0x99,0xB5}, {0xB3,0xAD}, {0xD8,0x49}, {0xB3,0xB5},
- {0xD8,0x48}, {0xD8,0x4B}, {0xB3,0xB1}, {0xD8,0x4A},
- {0xB6,0xAB}, {0xB3,0xAF}, {0xB3,0xB2}, {0xB3,0xAE},
- {0xB3,0xB3}, {0xB3,0xB4}, {0xB3,0xB0}, {0x90,0xBE},
- {0xD8,0x47}, {0xB6,0xA7}, {0xDC,0x7D}, {0xDC,0xA3},
- {0x9F,0xAF}, {0xDC,0xA2}, {0xB6,0xAC}, {0xB6,0xA8},
- {0xB6,0xA9}, {0xDC,0x7C}, {0xDC,0x7E}, {0xDC,0xA1},
- {0xB6,0xA4}, {0xB6,0xA6}, {0xB6,0xAA}, {0xB6,0xA5},
- {0x95,0xF2}, {0xE0,0xD3}, {0xE0,0xD1}, {0xE0,0xD2},
- {0xB9,0x6A}, {0xB9,0x6B}, {0x90,0xBF}, {0xE0,0xD4},
- {0xB9,0x69}, {0xBB,0xD8}, {0xBB,0xDA}, {0xBB,0xD9},
- {0xE4,0xBB}, {0xE4,0xBC}, {0xE8,0xAB}, {0x90,0xC1},
- {0xE8,0xAA}, {0xFE,0xE4}, {0xC0,0x47}, {0xC0,0x48},
- {0xEC,0x4F}, {0xC0,0x49}, {0xEE,0xF6}, {0xEE,0xF4},
- {0xEE,0xF5}, {0xC1,0xF4}, {0xF1,0x6F}, {0xC3,0xF7},
- {0x90,0xC4}, {0xC1,0xF5}, {0xAB,0x41}, {0xB0,0xA6},
- {0xD4,0x47}, {0x90,0xC7}, {0xD8,0x4C}, {0xB3,0xB6},
- {0xB6,0xAD}, {0xDC,0xA4}, {0xDC,0xA6}, {0xB6,0xAF},
- {0xB6,0xAE}, {0xB6,0xB0}, {0xB6,0xB1}, {0xDC,0xA5},
- {0xB9,0x6E}, {0xB9,0x6F}, {0xB9,0x6D}, {0xBB,0xDB},
- {0xB9,0x6C}, {0xE0,0xD5}, {0xBB,0xDC}, {0xE8,0xAC},
- {0xEC,0x50}, {0xC0,0x4A}, {0xC1,0xF6}, {0xF1,0x70},
- {0xF1,0x74}, {0xC2,0xF9}, {0xF1,0x71}, {0xC2,0xFA},
- {0xC2,0xF8}, {0xF1,0x75}, {0xC2,0xFB}, {0xF1,0x73},
- {0xF3,0x79}, {0xC2,0xF7}, {0xC3,0xF8}, {0xF8,0xCD},
- {0xAB,0x42}, {0xB3,0xB8}, {0xB3,0xB7}, {0xB6,0xB2},
- {0xDC,0xA8}, {0xDC,0xA7}, {0xB6,0xB3}, {0x92,0xE4},
- {0xE0,0xD9}, {0xB9,0x73}, {0xB9,0x70}, {0xE0,0xD8},
- {0xB9,0x72}, {0xE0,0xD6}, {0xB9,0x71}, {0xE0,0xD7},
- {0xE4,0xBD}, {0xBB,0xDD}, {0xE8,0xAF}, {0x9F,0x52},
- {0xBE,0x5D}, {0xE8,0xAD}, {0xBE,0x5E}, {0xBE,0x5F},
- {0xE8,0xAE}, {0xBE,0x60}, {0xEC,0x51}, {0xC0,0x4E},
- {0xC0,0x4B}, {0xC0,0x50}, {0xEC,0x53}, {0xC0,0x4C},
- {0xEC,0x52}, {0xC0,0x4F}, {0xC0,0x4D}, {0xEE,0xF9},
- {0xEE,0xFB}, {0x90,0xDB}, {0xC1,0xF7}, {0xEE,0xFA},
- {0xC1,0xF8}, {0xEE,0xF8}, {0xEE,0xF7}, {0xA0,0x66},
- {0xF1,0x77}, {0xF1,0x76}, {0xC2,0xFC}, {0xF1,0x78},
- {0xF3,0x7E}, {0xC3,0xFA}, {0xF3,0x7D}, {0xF3,0x7A},
- {0xC3,0xF9}, {0xF3,0x7B}, {0xF3,0x7C}, {0xF5,0x48},
- {0xF5,0x49}, {0xC4,0xC5}, {0x90,0xD2}, {0xC5,0x53},
- {0xF6,0x6E}, {0x90,0xD4}, {0xC5,0x51}, {0xC5,0x52},
- {0xF6,0x6F}, {0xC5,0xB4}, {0xC5,0xB5}, {0xF7,0x71},
- {0x9A,0x5B}, {0x95,0xFD}, {0xC6,0x45}, {0xF8,0xCF},
- {0xC6,0x47}, {0xF8,0xCE}, {0xF8,0xD0}, {0xC6,0x46},
- {0xF9,0x57}, {0xF9,0xAD}, {0x8B,0xC4}, {0xAB,0x43},
- {0x8C,0x66}, {0xB9,0x74}, {0x90,0xDE}, {0xE4,0xBE},
- {0xE8,0xB0}, {0xC0,0x51}, {0xC0,0x52}, {0x9C,0xE4},
- {0xAB,0x44}, {0x90,0xE1}, {0xBE,0x61}, {0xC3,0xFB},
- {0xAD,0xB1}, {0xC0,0x53}, {0xC5,0xE2}, {0xAD,0xB2},
- {0xD8,0x4D}, {0xDC,0xA9}, {0x9E,0x46}, {0xDC,0xAB},
- {0xDC,0xAA}, {0x96,0x51}, {0xE0,0xDD}, {0xE0,0xDA},
- {0xB9,0x75}, {0xB9,0x76}, {0xE0,0xDB}, {0xE0,0xDC},
- {0xE4,0xC0}, {0xE4,0xC5}, {0xBB,0xDE}, {0xE4,0xBF},
- {0xE4,0xC1}, {0xE4,0xC8}, {0xE4,0xC3}, {0xE4,0xC7},
- {0xE4,0xC4}, {0xE4,0xC2}, {0xE4,0xC6}, {0xBB,0xDF},
- {0xFB,0x58}, {0xE8,0xB3}, {0x90,0xE6}, {0xE8,0xB1},
- {0xBE,0x63}, {0xBE,0x62}, {0xE8,0xB2}, {0xBE,0x64},
- {0xEC,0x56}, {0xEC,0x55}, {0xC0,0x54}, {0xEC,0x54},
- {0xEE,0xFC}, {0x96,0x50}, {0xEE,0xFE}, {0xEF,0x41},
- {0xEF,0x40}, {0x90,0xE7}, {0xC1,0xF9}, {0xEE,0xFD},
- {0xF1,0xA1}, {0xC2,0xFD}, {0xF1,0x7D}, {0xF1,0xA2},
- {0xC2,0xFE}, {0xF1,0x7B}, {0xF1,0x7E}, {0xF1,0x7C},
- {0xF1,0x79}, {0xC3,0x40}, {0xF1,0x7A}, {0x90,0xE8},
- {0x9A,0x5D}, {0xF3,0xA1}, {0x9F,0x7A}, {0xF3,0xA3},
- {0xF3,0xA2}, {0x9B,0x5C}, {0xF5,0x4A}, {0x9F,0x7C},
- {0xF5,0x4B}, {0xFC,0x52}, {0x90,0xE9}, {0xF6,0x70},
- {0x90,0xEA}, {0xC5,0xB7}, {0x9A,0x5E}, {0xC5,0xB6},
- {0xF8,0x4F}, {0xF8,0x50}, {0xC6,0x48}, {0xF8,0xD1},
- {0x9F,0x76}, {0xC6,0x69}, {0xAD,0xB3}, {0xB6,0xB4},
- {0xE4,0xCA}, {0xE4,0xC9}, {0xE8,0xB5}, {0xE8,0xB4},
- {0x90,0xEB}, {0xC1,0xFA}, {0xEF,0x43}, {0xEF,0x42},
- {0xF1,0xA5}, {0xF1,0xA3}, {0xF1,0xA6}, {0xF1,0xA4},
- {0xC3,0xFC}, {0xF3,0xA4}, {0xF3,0xA5}, {0xF3,0xA6},
- {0x90,0xEC}, {0xF6,0x71}, {0xF7,0x72}, {0xF8,0xD2},
- {0x8B,0xEE}, {0xAD,0xB4}, {0x90,0xEE}, {0xEC,0x57},
- {0xEF,0x44}, {0x91,0xC6}, {0xAD,0xB5}, {0x90,0xF2},
- {0xBB,0xE0}, {0xEC,0x58}, {0xC3,0x41}, {0xF1,0xA7},
- {0xC3,0xFD}, {0xF5,0x4C}, {0xF5,0x4D}, {0xC5,0x54},
- {0xF8,0x51}, {0xAD,0xB6}, {0xB3,0xBB}, {0xB3,0xBC},
- {0xD8,0x4E}, {0xB6,0xB5}, {0xB6,0xB6}, {0xDC,0xAC},
- {0xB6,0xB7}, {0xB9,0x7A}, {0xB9,0x7C}, {0xE0,0xDF},
- {0xE0,0xE0}, {0xE0,0xDE}, {0xB9,0x77}, {0xB9,0x78},
- {0xB9,0x7B}, {0xB9,0x79}, {0xFC,0xBC}, {0x8A,0x74},
- {0xE4,0xCB}, {0xBB,0xE1}, {0xBB,0xE2}, {0xE8,0xBC},
- {0xBE,0x67}, {0xE8,0xB7}, {0xE8,0xB6}, {0x96,0x57},
- {0xE8,0xBB}, {0xBE,0x65}, {0x9C,0xEF}, {0xC0,0x5B},
- {0xE8,0xB8}, {0xE8,0xBD}, {0xE8,0xBA}, {0xE8,0xB9},
- {0xBE,0x66}, {0xC0,0x59}, {0x9F,0xDF}, {0xEC,0x5A},
- {0xC0,0x55}, {0xEC,0x5B}, {0x90,0xF7}, {0x90,0xF6},
- {0xEC,0x59}, {0xC0,0x58}, {0xC0,0x56}, {0xC0,0x5A},
- {0xC0,0x57}, {0xEF,0x45}, {0xEF,0x4A}, {0xEF,0x46},
- {0xEF,0x49}, {0xC1,0xFB}, {0x9B,0x5E}, {0xED,0xD4},
- {0xEF,0x48}, {0xEF,0x47}, {0x90,0xF8}, {0xC3,0x44},
- {0xC3,0x42}, {0xC3,0x45}, {0xC3,0x43}, {0xF1,0xA8},
- {0xF1,0xA9}, {0xF1,0xAA}, {0xC3,0x46}, {0xF3,0xAA},
- {0xC4,0x40}, {0xF3,0xA8}, {0xC4,0x41}, {0xF3,0xA7},
- {0xF3,0xA9}, {0xC3,0xFE}, {0xF5,0x51}, {0xF5,0x4E},
- {0xF5,0x4F}, {0xF5,0x50}, {0xF6,0x72}, {0xC5,0x56},
- {0x90,0xF9}, {0xC5,0x55}, {0x8C,0xC9}, {0xF7,0x74},
- {0xF7,0x73}, {0xC5,0xB8}, {0xFA,0x6A}, {0xC5,0xE3},
- {0xC6,0x49}, {0xC6,0x60}, {0xF9,0x58}, {0xF9,0xAE},
- {0xF9,0xAF}, {0x8B,0xEF}, {0xAD,0xB7}, {0xDC,0xAD},
- {0xE0,0xE1}, {0xE4,0xCC}, {0xE4,0xCD}, {0xBB,0xE3},
- {0xBB,0xE4}, {0xE8,0xBE}, {0xBE,0x68}, {0x9F,0xE0},
- {0xC1,0xFC}, {0x91,0x42}, {0xF1,0xAB}, {0x9A,0x62},
- {0xC3,0x47}, {0xF3,0xAD}, {0xC4,0x42}, {0xF3,0xAC},
- {0xF3,0xAE}, {0xF3,0xAB}, {0xF6,0x75}, {0xF5,0x52},
- {0xF5,0x53}, {0x95,0x69}, {0xC4,0xC6}, {0xF6,0x74},
- {0x91,0x44}, {0x91,0x43}, {0xF6,0x73}, {0x91,0x41},
- {0xF7,0x75}, {0xF9,0xB0}, {0x8B,0xF0}, {0xAD,0xB8},
- {0x96,0x60}, {0x8B,0xF1}, {0xAD,0xB9}, {0x99,0xF6},
- {0x91,0x49}, {0xB0,0xA7}, {0xD4,0x48}, {0xD8,0x4F},
- {0x91,0x4A}, {0xB6,0xB8}, {0xB6,0xBB}, {0xB6,0xB9},
- {0xDC,0xAE}, {0x91,0x4B}, {0xB6,0xBD}, {0xB6,0xBA},
- {0x9A,0x64}, {0xB6,0xBC}, {0xB9,0x7E}, {0x8A,0xBF},
- {0xE0,0xE2}, {0xE0,0xE3}, {0xE8,0xC0}, {0xB9,0x7D},
- {0xB9,0xA1}, {0xB9,0xA2}, {0xE4,0xCF}, {0xE4,0xCE},
- {0xBB,0xE5}, {0xBB,0xE6}, {0xE4,0xD0}, {0xE8,0xBF},
- {0xBB,0xE8}, {0xBE,0x69}, {0xBB,0xE7}, {0x9A,0x66},
- {0xC0,0x5C}, {0xE8,0xC1}, {0xBE,0x6B}, {0xBE,0x6A},
- {0xE8,0xC2}, {0xE8,0xC5}, {0xE8,0xC3}, {0xE8,0xC4},
- {0xBE,0x6C}, {0x9A,0x67}, {0xC0,0x61}, {0xC0,0x5F},
- {0x9A,0x69}, {0xC0,0x5E}, {0xEC,0x5D}, {0xC0,0x60},
- {0xEC,0x5C}, {0xEF,0x4B}, {0xEC,0x5E}, {0xC0,0x5D},
- {0xEC,0x5F}, {0xEF,0x4E}, {0xEF,0x4C}, {0xEF,0x4D},
- {0xEF,0x52}, {0xC3,0x4B}, {0xEF,0x51}, {0xEF,0x54},
- {0xEF,0x53}, {0xEF,0x50}, {0xEF,0x4F}, {0xC1,0xFD},
- {0x9A,0x6A}, {0x96,0x52}, {0x91,0x4D}, {0xF1,0xAE},
- {0x96,0x66}, {0xF1,0xAD}, {0xC3,0x4A}, {0xC3,0x48},
- {0xC3,0x49}, {0x9F,0x7B}, {0xF1,0xAC}, {0x9A,0x6B},
- {0xF3,0xB1}, {0xC4,0x43}, {0xF3,0xB0}, {0xF3,0xAF},
- {0xC4,0x44}, {0xA0,0x6C}, {0xF5,0x58}, {0xF5,0x57},
- {0x96,0x67}, {0xF5,0x55}, {0xF5,0x54}, {0xC4,0xC8},
- {0xC4,0xC7}, {0xF5,0x59}, {0xF7,0x76}, {0xC5,0xB9},
- {0xF6,0x77}, {0xC5,0x57}, {0xF6,0x76}, {0xF5,0x56},
- {0xF7,0x77}, {0xC5,0xE4}, {0x9A,0x6C}, {0xC6,0x61},
- {0xF9,0x59}, {0xF9,0xB1}, {0x9A,0x6D}, {0x8B,0xF2},
- {0xAD,0xBA}, {0xD8,0x50}, {0xEF,0x55}, {0xAD,0xBB},
- {0x96,0x6A}, {0xE4,0xD2}, {0xE4,0xD1}, {0xEC,0x60},
- {0xEF,0x57}, {0xEF,0x56}, {0xFC,0xEA}, {0xC3,0x4C},
- {0xF3,0xB2}, {0xF3,0xB3}, {0xC4,0xC9}, {0x96,0x6C},
- {0xF9,0xB2}, {0xB0,0xA8}, {0xB6,0xBF}, {0xB6,0xBE},
- {0xE0,0xE4}, {0xE0,0xE6}, {0xB9,0xA4}, {0xE0,0xE5},
- {0xB9,0xA3}, {0xB9,0xA5}, {0xE0,0xE7}, {0x91,0xC4},
- {0xE4,0xD4}, {0xE4,0xD6}, {0xE4,0xD5}, {0x96,0x77},
- {0xE4,0xD8}, {0xBB,0xE9}, {0xE4,0xD7}, {0xE4,0xD3},
- {0x99,0xF4}, {0x9A,0x6F}, {0xE4,0xD9}, {0xE8,0xCC},
- {0xE8,0xCF}, {0xE8,0xD1}, {0xE8,0xC7}, {0xE8,0xCB},
- {0xE8,0xC8}, {0xBE,0x6E}, {0xBE,0x71}, {0xBE,0x73},
- {0xE8,0xC9}, {0xE8,0xCA}, {0xBE,0x72}, {0xE8,0xCD},
- {0xE8,0xD0}, {0xE8,0xCE}, {0xBE,0x74}, {0x9F,0xAB},
- {0xBE,0x70}, {0xE8,0xC6}, {0xBE,0x6D}, {0xBE,0x6F},
- {0x8C,0xBE}, {0x8E,0xC1}, {0xC0,0x63}, {0xEC,0x66},
- {0xEC,0x64}, {0xEC,0x63}, {0x95,0x55}, {0xEC,0x69},
- {0xEC,0x68}, {0xEC,0x67}, {0xEC,0x62}, {0xC0,0x62},
- {0xEC,0x61}, {0xEC,0x65}, {0xC0,0x64}, {0xEF,0x5A},
- {0x91,0x52}, {0xEF,0x5E}, {0xEF,0x5B}, {0xEF,0x5D},
- {0xEF,0x5C}, {0xEF,0x59}, {0xEF,0x5F}, {0xEF,0x62},
- {0xEF,0x60}, {0xEF,0x61}, {0xC2,0x40}, {0xC1,0xFE},
- {0xEF,0x58}, {0xEF,0x63}, {0xF1,0xB3}, {0xF1,0xB6},
- {0xF1,0xB8}, {0xF1,0xB7}, {0xF1,0xB1}, {0xF1,0xB5},
- {0xF1,0xB0}, {0x91,0x53}, {0xF1,0xB2}, {0xC3,0x4D},
- {0xF1,0xAF}, {0x91,0x55}, {0xF1,0xB4}, {0xF3,0xC0},
- {0xF3,0xB5}, {0xC4,0x45}, {0xC4,0x46}, {0xF3,0xB4},
- {0xF3,0xB9}, {0xF3,0xBF}, {0xF3,0xB7}, {0xF3,0xBE},
- {0x95,0x5D}, {0xF3,0xBB}, {0x96,0x71}, {0xF3,0xBA},
- {0xF3,0xBD}, {0xF3,0xB8}, {0xF3,0xB6}, {0x9C,0x6D},
- {0xF3,0xBC}, {0xF5,0x60}, {0xF5,0x5E}, {0xC4,0xCA},
- {0xF5,0x5D}, {0xF5,0x63}, {0xF5,0x61}, {0x96,0x73},
- {0xC4,0xCB}, {0xF5,0x5C}, {0xF5,0x5A}, {0xF5,0x5B},
- {0xC4,0xCD}, {0xF5,0x5F}, {0xC4,0xCC}, {0xF5,0x62},
- {0xF6,0x78}, {0xF6,0x7E}, {0x91,0x54}, {0x9A,0x71},
- {0xF6,0x79}, {0xC5,0x5B}, {0xF6,0xA1}, {0xC5,0x5A},
- {0xF6,0x7D}, {0xF6,0x7C}, {0xC5,0x59}, {0xF6,0x7B},
- {0xC5,0x58}, {0xF6,0x7A}, {0xF7,0x7D}, {0xF7,0xA1},
- {0xF7,0x7E}, {0xF7,0x7B}, {0xC5,0xBB}, {0xF7,0x78},
- {0xF7,0x7C}, {0xF7,0xA3}, {0xF7,0xA2}, {0xF7,0x79},
- {0xF7,0x7A}, {0xC5,0xBA}, {0xF8,0x52}, {0xC5,0xE7},
- {0x91,0x56}, {0xF8,0x53}, {0xC5,0xE5}, {0xC5,0xE6},
- {0x96,0x6D}, {0xF8,0xD3}, {0xC6,0x4A}, {0xF9,0x76},
- {0xC6,0x6A}, {0x95,0x57}, {0xF9,0xB3}, {0xC6,0x6B},
- {0xF9,0xB4}, {0xF9,0xB5}, {0xF9,0xC3}, {0xF9,0xC2},
- {0xC6,0x7A}, {0xF9,0xCD}, {0x89,0xC6}, {0x89,0xC7},
- {0xB0,0xA9}, {0xE0,0xE9}, {0xE0,0xE8}, {0xBB,0xEA},
- {0xBB,0xEB}, {0xE4,0xDA}, {0x8A,0x6A}, {0xE8,0xD2},
- {0xEC,0x6C}, {0x8B,0x57}, {0xBE,0x75}, {0xC0,0x65},
- {0xEC,0x6A}, {0x9F,0xE1}, {0xEC,0x6D}, {0xC0,0x66},
- {0x9B,0x5F}, {0xEF,0x64}, {0xEC,0x6B}, {0xF1,0xB9},
- {0xC3,0x4E}, {0xF3,0xC1}, {0xF5,0x66}, {0xF5,0x64},
- {0xF5,0x65}, {0xF6,0xA2}, {0xC5,0x5C}, {0xF7,0xA4},
- {0xC5,0xEA}, {0xC5,0xBC}, {0xC5,0xE8}, {0xC5,0xE9},
- {0xF8,0xD4}, {0xC6,0x62}, {0xA0,0x5D}, {0xB0,0xAA},
- {0xF1,0xBA}, {0xD4,0x49}, {0x91,0x5B}, {0xB9,0xA6},
- {0x91,0x5C}, {0xE4,0xDB}, {0xBB,0xEC}, {0xE4,0xDC},
- {0xE8,0xD4}, {0xE8,0xD3}, {0xC0,0x68}, {0xBE,0x76},
- {0xBE,0x77}, {0xE8,0xD7}, {0xE8,0xD6}, {0xE8,0xD5},
- {0x91,0x5E}, {0xEC,0x6E}, {0xEC,0x71}, {0xEC,0x70},
- {0xEC,0x6F}, {0xC0,0x67}, {0xEF,0x68}, {0xEF,0x66},
- {0xEF,0x65}, {0x9F,0x5C}, {0xEF,0x67}, {0x9F,0x57},
- {0xC3,0x4F}, {0xF1,0xBC}, {0xF1,0xBD}, {0xC3,0x50},
- {0xF1,0xBB}, {0x9F,0x65}, {0xF3,0xC3}, {0xF3,0xC2},
- {0xF3,0xC5}, {0xC4,0x47}, {0xF3,0xC4}, {0x9A,0x72},
- {0xF5,0x67}, {0xF5,0x69}, {0xF5,0x68}, {0x91,0x60},
- {0xF6,0xA3}, {0xF6,0xA6}, {0xF6,0xA4}, {0xF6,0xA5},
- {0xF7,0xA5}, {0xC5,0xBD}, {0xF8,0x54}, {0xF8,0x55},
- {0xF8,0x56}, {0xC6,0x4B}, {0xC6,0x63}, {0xF9,0xB6},
- {0xB0,0xAB}, {0xBE,0x78}, {0xC0,0x69}, {0xF1,0xBE},
- {0x9F,0x5E}, {0xF7,0xA6}, {0x91,0x61}, {0xF9,0xC4},
- {0xD4,0x4A}, {0xC6,0x7B}, {0xB0,0xAC}, {0xEC,0x72},
- {0x91,0x64}, {0xF1,0xBF}, {0xF3,0xC6}, {0x9F,0x41},
- {0xF6,0xA7}, {0xF7,0xA7}, {0xB0,0xAD}, {0xE4,0xDD},
- {0xE4,0xDE}, {0x91,0x69}, {0xBB,0xED}, {0xBB,0xEE},
- {0xE8,0xD9}, {0xBE,0x7A}, {0xBE,0x79}, {0xE8,0xD8},
- {0xEF,0x69}, {0xF1,0xC0}, {0xF1,0xC2}, {0xF1,0xC1},
- {0xC3,0x53}, {0xC3,0x52}, {0xC3,0x51}, {0x91,0x68},
- {0xC5,0x5E}, {0xF6,0xA8}, {0xC5,0x5D}, {0xF7,0xA9},
- {0xF7,0xA8}, {0xC6,0x4C}, {0xF8,0xD5}, {0xB3,0xBD},
- {0xE0,0xEA}, {0xE4,0xE1}, {0xE4,0xDF}, {0xE4,0xE0},
- {0xE8,0xE2}, {0xE8,0xDD}, {0xE8,0xDA}, {0xE8,0xE1},
- {0x9A,0x74}, {0xE8,0xE3}, {0xBE,0x7C}, {0xE8,0xE0},
- {0xE8,0xDC}, {0xE8,0xDB}, {0xE8,0xDF}, {0xE8,0xDE},
- {0xBE,0x7B}, {0xEC,0x7D}, {0xEC,0x78}, {0xEC,0x76},
- {0xEC,0xA1}, {0xEC,0x77}, {0x96,0xB2}, {0xEC,0x73},
- {0x9A,0x75}, {0xEC,0x79}, {0xFD,0xA5}, {0xEC,0x74},
- {0xEF,0x72}, {0xEC,0x75}, {0xEC,0xA2}, {0x9E,0xE9},
- {0x8B,0xBA}, {0x91,0x6D}, {0xA0,0x60}, {0xEC,0x7C},
- {0xC0,0x6A}, {0xEC,0x7B}, {0xEC,0x7A}, {0xEC,0x7E},
- {0x9F,0xDE}, {0xEF,0x6A}, {0xEF,0x6D}, {0x9F,0xC3},
- {0xEF,0x6C}, {0x96,0xB5}, {0xEF,0x74}, {0xEF,0x6F},
- {0xEF,0x73}, {0xEF,0x71}, {0xEF,0x70}, {0xEF,0x6E},
- {0xEF,0x6B}, {0xC2,0x43}, {0xC2,0x42}, {0xC2,0x44},
- {0xC2,0x41}, {0xEF,0x75}, {0xA0,0x67}, {0xF1,0xC8},
- {0xF1,0xCB}, {0xF1,0xC9}, {0xF1,0xCD}, {0xF1,0xCE},
- {0xF1,0xC6}, {0xC3,0x58}, {0xF1,0xC7}, {0xF1,0xC5},
- {0xF1,0xCC}, {0xF1,0xC4}, {0xF1,0xC3}, {0xC3,0x57},
- {0xC3,0x55}, {0xC3,0x54}, {0x96,0xB3}, {0xF1,0xCA},
- {0xF3,0xCF}, {0xF3,0xD5}, {0xC4,0x4A}, {0xF3,0xD0},
- {0xF3,0xD3}, {0xF3,0xD7}, {0xC4,0x4B}, {0xF3,0xD2},
- {0x9A,0x76}, {0xF3,0xCA}, {0xF3,0xC9}, {0xF3,0xD6},
- {0xF3,0xCD}, {0xF3,0xCB}, {0xF3,0xD4}, {0xF3,0xCC},
- {0xC4,0x49}, {0xC4,0x48}, {0x95,0xD5}, {0xF3,0xC7},
- {0xF3,0xC8}, {0xF3,0xD1}, {0x9E,0xCA}, {0xF3,0xCE},
- {0x9A,0x77}, {0x9A,0x78}, {0xF5,0x6C}, {0xF5,0x6F},
- {0xC3,0x56}, {0x91,0x70}, {0x91,0x6F}, {0xF5,0x6D},
- {0xF5,0x73}, {0xF5,0x71}, {0xF5,0x6B}, {0xF5,0x76},
- {0x9F,0xA3}, {0xF5,0x6A}, {0x91,0x71}, {0xC4,0xCF},
- {0xF5,0x72}, {0x96,0xB1}, {0xF5,0x6E}, {0xC4,0xCE},
- {0xF5,0x75}, {0x9F,0x63}, {0xF5,0x74}, {0x9F,0x67},
- {0xF6,0xAB}, {0xF6,0xAA}, {0x8B,0xB9}, {0x9A,0x7A},
- {0xF6,0xB1}, {0xF6,0xAD}, {0xF6,0xB0}, {0xC5,0x60},
- {0x8B,0x56}, {0xF6,0xAE}, {0xF6,0xAF}, {0xF6,0xA9},
- {0xF6,0xAC}, {0xC5,0x5F}, {0x9A,0xDA}, {0xC5,0xBF},
- {0xF7,0xB4}, {0xF7,0xAF}, {0xF7,0xB3}, {0x96,0xB0},
- {0xF7,0xB6}, {0xF7,0xB2}, {0xF7,0xAE}, {0x9A,0x7E},
- {0xC5,0xC1}, {0xF7,0xB1}, {0xF7,0xB5}, {0xC5,0xC0},
- {0xF7,0xAC}, {0xF5,0x70}, {0xF7,0xB0}, {0xF7,0xAD},
- {0x9D,0xDE}, {0xF7,0xAA}, {0xF7,0xAB}, {0xC5,0xBE},
- {0xF8,0x5A}, {0xF8,0x5C}, {0xF8,0x5F}, {0xF8,0x5B},
- {0xF8,0x60}, {0x96,0xAD}, {0xF8,0x59}, {0xF8,0x57},
- {0x96,0xAE}, {0xC5,0xEB}, {0xF8,0x5D}, {0xC5,0xED},
- {0xC5,0xEC}, {0xF8,0x58}, {0xF8,0x5E}, {0x9E,0xA1},
- {0xF8,0xDA}, {0xC6,0x4D}, {0xF8,0xDB}, {0xF8,0xD9},
- {0xF8,0xD6}, {0xF8,0xD8}, {0xF8,0xD7}, {0xF9,0x5A},
- {0xF9,0x5C}, {0xF9,0x5B}, {0xF9,0x79}, {0x9E,0x50},
- {0xF9,0x78}, {0xF9,0x77}, {0xF9,0x7A}, {0xC6,0x73},
- {0xC6,0x74}, {0xF9,0xCA}, {0xF9,0xCE}, {0x96,0xAF},
- {0x8B,0xF4}, {0xB3,0xBE}, {0xDC,0xAF}, {0xE0,0xED},
- {0xB9,0xA7}, {0xE0,0xEB}, {0xE0,0xEC}, {0xE4,0xE2},
- {0xE4,0xE3}, {0xBB,0xF1}, {0xBB,0xEF}, {0xE4,0xE4},
- {0xBB,0xF0}, {0xE8,0xE8}, {0xE8,0xEB}, {0xE8,0xE5},
- {0xE8,0xEC}, {0xE8,0xE4}, {0xE8,0xE6}, {0xE8,0xE7},
- {0xE8,0xEA}, {0x9F,0xA4}, {0xBE,0xA1}, {0xE8,0xEF},
- {0xE8,0xEE}, {0xBE,0x7D}, {0xE8,0xE9}, {0xE8,0xED},
- {0xBE,0x7E}, {0x96,0xBD}, {0xEC,0xAC}, {0xC0,0x6F},
- {0xEC,0xA7}, {0xC0,0x6B}, {0x96,0xF4}, {0xEC,0xA4},
- {0xEC,0xAA}, {0xEC,0xAD}, {0xC0,0x70}, {0xEC,0xA9},
- {0xEC,0xA6}, {0xEC,0xAE}, {0xEC,0xA5}, {0x96,0xB8},
- {0xEC,0xAB}, {0xC0,0x6C}, {0xEC,0xA3}, {0xC0,0x6D},
- {0xC0,0x6E}, {0xEC,0xA8}, {0xEF,0xA9}, {0xEF,0x7A},
- {0xEF,0x7B}, {0xEF,0x7E}, {0xEF,0x7C}, {0xEF,0x76},
- {0xFA,0xA1}, {0xEF,0x79}, {0xEF,0xA5}, {0xEF,0x7D},
- {0x91,0xA7}, {0xC2,0x45}, {0xEF,0xA7}, {0xEF,0xA4},
- {0xC2,0x46}, {0xEF,0xA6}, {0xEF,0x77}, {0xEF,0xA2},
- {0xEF,0xA3}, {0xA0,0x5E}, {0xEF,0xA1}, {0x9A,0x7D},
- {0xF1,0xD2}, {0xF1,0xD4}, {0xF1,0xD7}, {0x89,0x48},
- {0xF1,0xD1}, {0x9E,0xB1}, {0xC3,0x59}, {0xF1,0xD9},
- {0xF1,0xD0}, {0xF1,0xDA}, {0xF1,0xD6}, {0xF1,0xD8},
- {0xF1,0xDC}, {0xF1,0xD5}, {0xF1,0xDD}, {0xF1,0xD3},
- {0xF1,0xCF}, {0xC3,0x5A}, {0x9D,0xDB}, {0xF1,0xDB},
- {0xC3,0x5B}, {0xC4,0x4D}, {0xEF,0x78}, {0xF3,0xF1},
- {0xF3,0xE8}, {0xC4,0x4F}, {0xF3,0xE4}, {0xC4,0x50},
- {0x95,0xBF}, {0x8A,0x73}, {0xF3,0xED}, {0xF3,0xE7},
- {0xF3,0xDD}, {0xC4,0x4E}, {0xF3,0xEA}, {0xF3,0xE5},
- {0xF3,0xE6}, {0xF3,0xD8}, {0xF3,0xDF}, {0xF3,0xEE},
- {0xF3,0xEB}, {0x9E,0xFE}, {0xF3,0xE3}, {0x91,0x7A},
- {0xF3,0xEF}, {0xF3,0xDE}, {0xF3,0xD9}, {0xF3,0xEC},
- {0x91,0x7B}, {0xF3,0xDB}, {0xF3,0xE9}, {0xF3,0xE0},
- {0xF3,0xF0}, {0xF3,0xDC}, {0xC4,0x4C}, {0xF3,0xDA},
- {0xF3,0xE1}, {0xF3,0xE2}, {0xF5,0x7D}, {0xF5,0x7B},
- {0x9A,0xA3}, {0xF5,0xA2}, {0xF5,0xAE}, {0xF5,0xA5},
- {0xF5,0x7C}, {0xF5,0x78}, {0xF5,0xA7}, {0xF5,0x7E},
- {0xF5,0xA3}, {0xF5,0x7A}, {0xF5,0xAA}, {0xF5,0x77},
- {0xF5,0xA1}, {0xF5,0xA6}, {0xF5,0xA8}, {0xF5,0xAB},
- {0xF5,0x79}, {0x96,0xC2}, {0xF5,0xAF}, {0xF5,0xB0},
- {0xF5,0xA9}, {0xF5,0xAD}, {0xF5,0xA4}, {0x9F,0x77},
- {0xF6,0xC1}, {0xF6,0xC4}, {0xC5,0x61}, {0xF6,0xC3},
- {0xF6,0xC8}, {0xF6,0xC6}, {0xC5,0x62}, {0xF6,0xBD},
- {0xF6,0xB3}, {0xF6,0xB2}, {0xC5,0x64}, {0xF6,0xBF},
- {0xF6,0xC0}, {0xF6,0xBC}, {0xF6,0xB4}, {0x9A,0xA4},
- {0xF6,0xB9}, {0xF5,0xAC}, {0x9A,0xA5}, {0xF6,0xB5},
- {0xC5,0x63}, {0xF6,0xBB}, {0x91,0xA1}, {0xF6,0xBA},
- {0xF6,0xB6}, {0xF6,0xC2}, {0x89,0xB8}, {0xF6,0xB7},
- {0xF7,0xBB}, {0xF6,0xC5}, {0xF6,0xC7}, {0xF6,0xBE},
- {0xF6,0xB8}, {0xF7,0xBC}, {0xF7,0xBE}, {0xF7,0xB8},
- {0xC5,0xC2}, {0x91,0x73}, {0xF7,0xC5}, {0xF7,0xC3},
- {0xC5,0xC3}, {0xF7,0xC2}, {0xF7,0xC1}, {0xF7,0xBA},
- {0xF7,0xB7}, {0xF7,0xBD}, {0xF7,0xC6}, {0xF7,0xB9},
- {0xF7,0xBF}, {0xF8,0x69}, {0xF8,0x6E}, {0xF8,0x64},
- {0xF8,0x67}, {0xC5,0xEE}, {0xF8,0x6B}, {0xF8,0x72},
- {0xF7,0xC0}, {0xF8,0x65}, {0xF8,0x6F}, {0xF8,0x73},
- {0xF8,0x6A}, {0xF8,0x63}, {0xF8,0x6D}, {0xF8,0x6C},
- {0xF8,0x71}, {0xF8,0x70}, {0xF7,0xC4}, {0xF8,0x68},
- {0xF8,0x62}, {0xF8,0x66}, {0xC6,0x4E}, {0xC6,0x4F},
- {0xF8,0x61}, {0x9A,0xA6}, {0xF8,0xE6}, {0xF8,0xDD},
- {0xF8,0xE5}, {0xF8,0xE2}, {0xF8,0xE3}, {0xF8,0xDC},
- {0xF8,0xDF}, {0xF8,0xE7}, {0xF8,0xE1}, {0xF8,0xE0},
- {0xF8,0xDE}, {0xF8,0xE4}, {0x89,0xBD}, {0xF9,0x5D},
- {0x89,0xB9}, {0xF9,0x5E}, {0x91,0x7D}, {0xF9,0x60},
- {0xF9,0x5F}, {0xF9,0x62}, {0xF9,0x61}, {0xF9,0x7C},
- {0xF9,0x7B}, {0xF9,0xB7}, {0xF9,0xB8}, {0x96,0xBB},
- {0xF9,0xC5}, {0xC6,0x78}, {0xC6,0x7C}, {0x9F,0xF2},
- {0xF9,0xCF}, {0xC6,0x7D}, {0x8B,0xF5}, {0xB3,0xBF},
- {0xC4,0xD0}, {0xF6,0xC9}, {0x9A,0xA9}, {0xC6,0x50},
- {0xC6,0x51}, {0xB3,0xC0}, {0xE0,0xEE}, {0x9F,0x54},
- {0xB9,0xA8}, {0xE8,0xF0}, {0x9F,0xE3}, {0x9E,0xED},
- {0xEC,0xB0}, {0xEC,0xB1}, {0xEC,0xAF}, {0xEF,0xAB},
- {0xEF,0xAA}, {0xC2,0x47}, {0xF1,0xDF}, {0xEF,0xAC},
- {0xF1,0xDE}, {0x91,0xAA}, {0xF3,0xF3}, {0xC4,0x51},
- {0xC4,0x53}, {0xF3,0xF2}, {0x91,0xAB}, {0xA0,0x70},
- {0xC4,0x52}, {0x9F,0x6D}, {0xF5,0xB1}, {0xF5,0xB3},
- {0xF5,0xB2}, {0xF6,0xCA}, {0xC5,0x65}, {0x91,0xAC},
- {0xC5,0xEF}, {0xF8,0xE8}, {0xF9,0x63}, {0x91,0xAD},
- {0xF9,0xD2}, {0xB3,0xC1}, {0xA0,0xFD}, {0xE4,0xE5},
- {0x9F,0xE2}, {0xBE,0xA2}, {0x91,0xAF}, {0x9E,0x41},
- {0x9A,0xAA}, {0xEC,0xB3}, {0xEC,0xB2}, {0x91,0xB0},
- {0xEF,0xAD}, {0x9A,0xAB}, {0xC4,0x54}, {0xC4,0xD1},
- {0xF7,0xC7}, {0xF9,0xCB}, {0xB3,0xC2}, {0xBB,0xF2},
- {0x9A,0xAC}, {0xBE,0xA3}, {0x9A,0x4A}, {0xF3,0xF4},
- {0x91,0xB2}, {0xF8,0x74}, {0xB6,0xC0}, {0x8B,0xF6},
- {0x9A,0xAD}, {0x89,0xB6}, {0xEF,0xAE}, {0xC6,0x64},
- {0xB6,0xC1}, {0xBE,0xA4}, {0xC2,0x48}, {0xF8,0x75},
- {0xB6,0xC2}, {0xE8,0xF1}, {0xC0,0x72}, {0xEC,0xB4},
- {0xEC,0xB5}, {0xC0,0x71}, {0xEF,0xAF}, {0xC2,0x4C},
- {0xC2,0x4A}, {0xC2,0x4B}, {0xC2,0x49}, {0xF1,0xE0},
- {0xC3,0x5C}, {0x9A,0xAF}, {0xF5,0xB5}, {0xF5,0xB4},
- {0xF5,0xB7}, {0xF5,0xB6}, {0xC4,0xD2}, {0xF6,0xCB},
- {0xF6,0xCD}, {0xF6,0xCC}, {0xC5,0x66}, {0xF7,0xC8},
- {0x9A,0xB0}, {0xF8,0x76}, {0xF8,0x77}, {0xC5,0xF0},
- {0xF9,0x64}, {0xF9,0x7D}, {0xC6,0x75}, {0x9A,0xB1},
- {0xDC,0xB0}, {0xEC,0xB6}, {0xEF,0xB0}, {0xF3,0xF5},
- {0xE0,0xEF}, {0x9A,0xA1}, {0xEF,0xB1}, {0xF1,0xE2},
- {0xF1,0xE1}, {0x91,0xB9}, {0xF8,0x78}, {0xC6,0x52},
- {0x91,0xBA}, {0xF9,0x65}, {0xF9,0x7E}, {0xB9,0xA9},
- {0xE8,0xF2}, {0xE8,0xF3}, {0xEC,0xB7}, {0xB9,0xAA},
- {0xC3,0x5D}, {0xF1,0xE3}, {0x91,0xBE}, {0xF6,0xCF},
- {0xC5,0x67}, {0xF6,0xD0}, {0xF6,0xCE}, {0xF8,0x79},
- {0xF8,0xE9}, {0xB9,0xAB}, {0xEF,0xB4}, {0xEF,0xB3},
- {0xEF,0xB2}, {0xF1,0xE4}, {0xA0,0x41}, {0x8B,0xB7},
- {0xF1,0xE8}, {0xF1,0xE7}, {0xF1,0xE6}, {0xF1,0xE5},
- {0xC3,0x5E}, {0xF3,0xF6}, {0xF5,0xB9}, {0xC4,0xD3},
- {0xF5,0xB8}, {0xF6,0xD1}, {0xF7,0xCB}, {0xF7,0xCA},
- {0xC5,0xC4}, {0xF7,0xC9}, {0xF8,0x7C}, {0xF8,0x7B},
- {0xF8,0x7A}, {0x91,0xC0}, {0xBB,0xF3}, {0xEC,0xB8},
- {0xC2,0x4D}, {0xF3,0xF7}, {0xF3,0xF8}, {0xF7,0xCC},
- {0xF8,0x7D}, {0x9A,0xB3}, {0x91,0xC3}, {0xF8,0xEA},
- {0xF9,0x66}, {0xF9,0xB9}, {0xF9,0xD4}, {0xBB,0xF4},
- {0xC2,0x4E}, {0xF1,0xE9}, {0xF3,0xF9}, {0xF6,0xD2},
- {0xF8,0x7E}, {0xA0,0xFC}, {0xBE,0xA6}, {0x9F,0xEE},
- {0xEF,0xB5}, {0xF1,0xEA}, {0xF3,0xFA}, {0xF3,0xFB},
- {0xF3,0xFC}, {0xF5,0xBE}, {0x9F,0x69}, {0xF5,0xBA},
- {0xC5,0x68}, {0xF5,0xBD}, {0xF5,0xBC}, {0xC4,0xD4},
- {0xF5,0xBB}, {0xC4,0xD6}, {0x91,0xC8}, {0xC4,0xD5},
- {0xF6,0xD4}, {0xF6,0xD3}, {0xC5,0x69}, {0xC5,0x6A},
- {0x91,0xC9}, {0xC5,0xC6}, {0xF7,0xCD}, {0xC5,0xC5},
- {0xF8,0xA3}, {0xF8,0xA4}, {0xF8,0xA2}, {0xF8,0xA1},
- {0xC6,0x54}, {0xF8,0xEB}, {0xF8,0xEC}, {0xF8,0xED},
- {0xC6,0x53}, {0xF9,0x67}, {0xF9,0x6A}, {0xF9,0x69},
- {0xF9,0x68}, {0xF9,0xD3}, {0x8D,0xE6}, {0xC0,0x73},
- {0x91,0xCB}, {0xC3,0x65}, {0xF5,0xBF}, {0xF6,0xD5},
- {0xC5,0xC7}, {0xF7,0xCE}, {0xF9,0xD5}, {0x89,0xC8},
- {0xC0,0x74}, {0x8D,0xAA}, {0xEF,0xB6}, {0xF7,0xCF},
- {0xF9,0xA1}, {0x9F,0xDD}, {0xFA,0x40}, {0xFA,0x41},
- {0xFA,0x42}, {0xFA,0x43}, {0xFA,0x44}, {0xFA,0x45},
- {0xFA,0x46}, {0xFA,0x47}, {0xFA,0x48}, {0xFA,0x49},
- {0xFA,0x4A}, {0xFA,0x4B}, {0xFA,0x4C}, {0xFA,0x4D},
- {0xFA,0x4E}, {0xFA,0x4F}, {0xFA,0x50}, {0xFA,0x51},
- {0xFA,0x52}, {0xFA,0x53}, {0xFA,0x54}, {0xFA,0x55},
- {0xFA,0x56}, {0xFA,0x57}, {0xFA,0x58}, {0xFA,0x59},
- {0xFA,0x5A}, {0xFA,0x5B}, {0xFA,0x5C}, {0xFA,0x5D},
- {0xFA,0x5E}, {0xAD,0xC5}, {0xFA,0x60}, {0xFA,0x61},
- {0xFA,0x62}, {0xFA,0x63}, {0xFA,0x64}, {0xFA,0x65},
- {0xB0,0xB0}, {0xFA,0x67}, {0xFA,0x68}, {0xFA,0x69},
- {0xFA,0x6A}, {0xFA,0x6B}, {0xFA,0x6C}, {0xFA,0x6D},
- {0xFA,0x6E}, {0xFA,0x6F}, {0xFA,0x70}, {0xFA,0x71},
- {0xFA,0x72}, {0xFA,0x73}, {0xFA,0x74}, {0xFA,0x75},
- {0xFA,0x76}, {0xFA,0x77}, {0xFA,0x78}, {0xFA,0x79},
- {0xFA,0x7A}, {0xFA,0x7B}, {0xFA,0x7C}, {0xFA,0x7D},
- {0xFA,0x7E}, {0xFA,0xA1}, {0xFA,0xA2}, {0xFA,0xA3},
- {0xFA,0xA4}, {0xFA,0xA5}, {0xFA,0xA6}, {0xFA,0xA7},
- {0xFA,0xA8}, {0xFA,0xA9}, {0xFA,0xAA}, {0xFA,0xAB},
- {0xFA,0xAC}, {0xFA,0xAD}, {0xFA,0xAE}, {0xFA,0xAF},
- {0xFA,0xB0}, {0xFA,0xB1}, {0xFA,0xB2}, {0xFA,0xB3},
- {0xFA,0xB4}, {0xFA,0xB5}, {0xFA,0xB6}, {0xFA,0xB7},
- {0xFA,0xB8}, {0xFA,0xB9}, {0xFA,0xBA}, {0xFA,0xBB},
- {0xFA,0xBC}, {0xA5,0x5D}, {0xFA,0xBE}, {0xFA,0xBF},
- {0xFA,0xC0}, {0xFA,0xC1}, {0xFA,0xC2}, {0xFA,0xC3},
- {0xFA,0xC4}, {0xA2,0xCD}, {0xFA,0xC6}, {0xFA,0xC7},
- {0xFA,0xC8}, {0xFA,0xC9}, {0xFA,0xCA}, {0xFA,0xCB},
- {0xFA,0xCC}, {0xFA,0xCD}, {0xFA,0xCE}, {0xFA,0xCF},
- {0xFA,0xD0}, {0xFA,0xD1}, {0xFA,0xD2}, {0xFA,0xD3},
- {0xFA,0xD4}, {0xAD,0xEB}, {0xFA,0xD6}, {0xFA,0xD7},
- {0xFA,0xD8}, {0xFA,0xD9}, {0xFA,0xDA}, {0xFA,0xDB},
- {0xFA,0xDC}, {0xFA,0xDD}, {0xFA,0xDE}, {0xFA,0xDF},
- {0xFA,0xE0}, {0xFA,0xE1}, {0xFA,0xE2}, {0xFA,0xE3},
- {0xFA,0xE4}, {0xFA,0xE5}, {0xFA,0xE6}, {0xFA,0xE7},
- {0xFA,0xE8}, {0xFA,0xE9}, {0xFA,0xEA}, {0xFA,0xEB},
- {0xFA,0xEC}, {0xFA,0xED}, {0xFA,0xEE}, {0xFA,0xEF},
- {0xFA,0xF0}, {0xFA,0xF1}, {0xFA,0xF2}, {0xFA,0xF3},
- {0xFA,0xF4}, {0xFA,0xF5}, {0xFA,0xF6}, {0xFA,0xF7},
- {0xFA,0xF8}, {0xFA,0xF9}, {0xFA,0xFA}, {0xFA,0xFB},
- {0xFA,0xFC}, {0xFA,0xFD}, {0xFA,0xFE}, {0xFB,0x40},
- {0xFB,0x41}, {0xFB,0x42}, {0xFB,0x43}, {0xFB,0x44},
- {0xFB,0x45}, {0xFB,0x46}, {0xFB,0x47}, {0x9D,0xEF},
- {0xFB,0x49}, {0xFB,0x4A}, {0xFB,0x4B}, {0xFB,0x4C},
- {0xFB,0x4D}, {0xFB,0x4E}, {0xFB,0x4F}, {0xFB,0x50},
- {0xFB,0x51}, {0xFB,0x52}, {0xFB,0x53}, {0xFB,0x54},
- {0xFB,0x55}, {0xFB,0x56}, {0xFB,0x57}, {0xFB,0x58},
- {0xFB,0x59}, {0xFB,0x5A}, {0xFB,0x5B}, {0xFB,0x5C},
- {0xFB,0x5D}, {0xFB,0x5E}, {0xFB,0x5F}, {0xFB,0x60},
- {0xFB,0x61}, {0xFB,0x62}, {0xFB,0x63}, {0xFB,0x64},
- {0xFB,0x65}, {0xFB,0x66}, {0xFB,0x67}, {0xFB,0x68},
- {0xFB,0x69}, {0xFB,0x6A}, {0xFB,0x6B}, {0xFB,0x6C},
- {0xFB,0x6D}, {0xFB,0x6E}, {0xFB,0x6F}, {0xFB,0x70},
- {0xFB,0x71}, {0xFB,0x72}, {0xFB,0x73}, {0xFB,0x74},
- {0xFB,0x75}, {0xFB,0x76}, {0xFB,0x77}, {0xFB,0x78},
- {0xFB,0x79}, {0xFB,0x7A}, {0xFB,0x7B}, {0xFB,0x7C},
- {0xFB,0x7D}, {0xFB,0x7E}, {0xFB,0xA1}, {0xFB,0xA2},
- {0xFB,0xA3}, {0xFB,0xA4}, {0xFB,0xA5}, {0xFB,0xA6},
- {0xFB,0xA7}, {0xFB,0xA8}, {0xFB,0xA9}, {0xFB,0xAA},
- {0xFB,0xAB}, {0xFB,0xAC}, {0xFB,0xAD}, {0xFB,0xAE},
- {0xFB,0xAF}, {0xFB,0xB0}, {0xFB,0xB1}, {0xFB,0xB2},
- {0xFB,0xB3}, {0xFB,0xB4}, {0xFB,0xB5}, {0xFB,0xB6},
- {0xFB,0xB7}, {0xB4,0x40}, {0xFB,0xB9}, {0xFB,0xBA},
- {0xFB,0xBB}, {0xFB,0xBC}, {0xFB,0xBD}, {0xFB,0xBE},
- {0xFB,0xBF}, {0xFB,0xC0}, {0xFB,0xC1}, {0xFB,0xC2},
- {0xFB,0xC3}, {0xFB,0xC4}, {0xFB,0xC5}, {0xFB,0xC6},
- {0xFB,0xC7}, {0xFB,0xC8}, {0xFB,0xC9}, {0xFB,0xCA},
- {0xFB,0xCB}, {0xFB,0xCC}, {0xFB,0xCD}, {0xFB,0xCE},
- {0xFB,0xCF}, {0xFB,0xD0}, {0xFB,0xD1}, {0xFB,0xD2},
- {0xFB,0xD3}, {0xFB,0xD4}, {0xFB,0xD5}, {0xFB,0xD6},
- {0xFB,0xD7}, {0xFB,0xD8}, {0xFB,0xD9}, {0xFB,0xDA},
- {0xFB,0xDB}, {0xFB,0xDC}, {0xFB,0xDD}, {0xFB,0xDE},
- {0xFB,0xDF}, {0xFB,0xE0}, {0xFB,0xE1}, {0xFB,0xE2},
- {0xFB,0xE3}, {0xFB,0xE4}, {0xFB,0xE5}, {0xFB,0xE6},
- {0xFB,0xE7}, {0xFB,0xE8}, {0xFB,0xE9}, {0xFB,0xEA},
- {0xFB,0xEB}, {0xFB,0xEC}, {0xFB,0xED}, {0xFB,0xEE},
- {0xFB,0xEF}, {0xFB,0xF0}, {0xFB,0xF1}, {0xFB,0xF2},
- {0xC9,0xDB}, {0xFB,0xF4}, {0xFB,0xF5}, {0xFB,0xF6},
- {0xFB,0xF7}, {0xFB,0xF8}, {0x9D,0xFB}, {0xFB,0xFA},
- {0xFB,0xFB}, {0xFB,0xFC}, {0xFB,0xFD}, {0xFB,0xFE},
- {0xFC,0x40}, {0xFC,0x41}, {0xFC,0x42}, {0xFC,0x43},
- {0xFC,0x44}, {0xFC,0x45}, {0xFC,0x46}, {0xFC,0x47},
- {0xFC,0x48}, {0xFC,0x49}, {0xFC,0x4A}, {0xFC,0x4B},
- {0xFC,0x4C}, {0xFC,0x4D}, {0xFC,0x4E}, {0xD8,0xF4},
- {0xFC,0x50}, {0xFC,0x51}, {0xFC,0x52}, {0xFC,0x53},
- {0xFC,0x54}, {0xFC,0x55}, {0xFC,0x56}, {0xFC,0x57},
- {0xFC,0x58}, {0xFC,0x59}, {0xFC,0x5A}, {0xFC,0x5B},
- {0xFC,0x5C}, {0xFC,0x5D}, {0xFC,0x5E}, {0xFC,0x5F},
- {0xFC,0x60}, {0xFC,0x61}, {0xFC,0x62}, {0xFC,0x63},
- {0xFC,0x64}, {0xFC,0x65}, {0xFC,0x66}, {0xFC,0x67},
- {0xFC,0x68}, {0xFC,0x69}, {0xFC,0x6A}, {0xFC,0x6B},
- {0xA0,0xDC}, {0xFC,0x6D}, {0xFC,0x6E}, {0xFC,0x6F},
- {0xFC,0x70}, {0xFC,0x71}, {0xFC,0x72}, {0xFC,0x73},
- {0xFC,0x74}, {0xFC,0x75}, {0xFC,0x76}, {0xFC,0x77},
- {0xFC,0x78}, {0xFC,0x79}, {0xFC,0x7A}, {0xFC,0x7B},
- {0xFC,0x7C}, {0xFC,0x7D}, {0xFC,0x7E}, {0xFC,0xA1},
- {0xFC,0xA2}, {0xFC,0xA3}, {0xFC,0xA4}, {0xFC,0xA5},
- {0xFC,0xA6}, {0xFC,0xA7}, {0xFC,0xA8}, {0xFC,0xA9},
- {0xFC,0xAA}, {0xFC,0xAB}, {0xFC,0xAC}, {0xFC,0xAD},
- {0xFC,0xAE}, {0xFC,0xAF}, {0xFC,0xB0}, {0xFC,0xB1},
- {0xFC,0xB2}, {0xFC,0xB3}, {0xFC,0xB4}, {0xFC,0xB5},
- {0xFC,0xB6}, {0xFC,0xB7}, {0xFC,0xB8}, {0xBC,0xB5},
- {0xFC,0xBA}, {0xFC,0xBB}, {0xFC,0xBC}, {0xFC,0xBD},
- {0xFC,0xBE}, {0xFC,0xBF}, {0xFC,0xC0}, {0xFC,0xC1},
- {0xFC,0xC2}, {0xFC,0xC3}, {0xFC,0xC4}, {0xFC,0xC5},
- {0xFC,0xC6}, {0xFC,0xC7}, {0xFC,0xC8}, {0xFC,0xC9},
- {0xFC,0xCA}, {0xFC,0xCB}, {0xFC,0xCC}, {0xFC,0xCD},
- {0xFC,0xCE}, {0xFC,0xCF}, {0xFC,0xD0}, {0xFC,0xD1},
- {0xFC,0xD2}, {0xFC,0xD3}, {0xFC,0xD4}, {0xFC,0xD5},
- {0xFC,0xD6}, {0xFC,0xD7}, {0xFC,0xD8}, {0xFC,0xD9},
- {0xFC,0xDA}, {0xFC,0xDB}, {0xFC,0xDC}, {0xFC,0xDD},
- {0xFC,0xDE}, {0xFC,0xDF}, {0xFC,0xE0}, {0xFC,0xE1},
- {0xB4,0xB8}, {0xFC,0xE3}, {0xFC,0xE4}, {0xFC,0xE5},
- {0xFC,0xE6}, {0xFC,0xE7}, {0xFC,0xE8}, {0xFC,0xE9},
- {0xFC,0xEA}, {0xFC,0xEB}, {0xFC,0xEC}, {0xFC,0xED},
- {0xFC,0xEE}, {0xFC,0xEF}, {0xFC,0xF0}, {0xA7,0xFB},
- {0xFC,0xF2}, {0xFC,0xF3}, {0xFC,0xF4}, {0xFC,0xF5},
- {0xFC,0xF6}, {0xFC,0xF7}, {0xFC,0xF8}, {0xFC,0xF9},
- {0xFC,0xFA}, {0xFC,0xFB}, {0xFC,0xFC}, {0xFC,0xFD},
- {0xFC,0xFE}, {0xFD,0x40}, {0xFD,0x41}, {0xFD,0x42},
- {0xFD,0x43}, {0xFD,0x44}, {0xFD,0x45}, {0xFD,0x46},
- {0xFD,0x47}, {0xFD,0x48}, {0xFD,0x49}, {0xFD,0x4A},
- {0xFD,0x4B}, {0xFD,0x4C}, {0xFD,0x4D}, {0xFD,0x4E},
- {0xFD,0x4F}, {0xFD,0x50}, {0xFD,0x51}, {0xFD,0x52},
- {0xFD,0x53}, {0xFD,0x54}, {0xFD,0x55}, {0xFD,0x56},
- {0xFD,0x57}, {0xFD,0x58}, {0xFD,0x59}, {0xFD,0x5A},
- {0xFD,0x5B}, {0xFD,0x5C}, {0xFD,0x5D}, {0xFD,0x5E},
- {0xFD,0x5F}, {0xFD,0x60}, {0xFD,0x61}, {0xFD,0x62},
- {0xFD,0x63}, {0xFD,0x64}, {0xFD,0x65}, {0xFD,0x66},
- {0xFD,0x67}, {0xFD,0x68}, {0xFD,0x69}, {0xFD,0x6A},
- {0xFD,0x6B}, {0xFD,0x6C}, {0xFD,0x6D}, {0xFD,0x6E},
- {0xFD,0x6F}, {0xFD,0x70}, {0xFD,0x71}, {0xFD,0x72},
- {0xFD,0x73}, {0xFD,0x74}, {0xFD,0x75}, {0xFD,0x76},
- {0xFD,0x77}, {0xFD,0x78}, {0xFD,0x79}, {0xFD,0x7A},
- {0xFD,0x7B}, {0xFD,0x7C}, {0xFD,0x7D}, {0xFD,0x7E},
- {0xFD,0xA1}, {0xFD,0xA2}, {0xFD,0xA3}, {0xFD,0xA4},
- {0xFD,0xA5}, {0xFD,0xA6}, {0xFD,0xA7}, {0xFD,0xA8},
- {0xFD,0xA9}, {0xFD,0xAA}, {0xFD,0xAB}, {0xFD,0xAC},
- {0xFD,0xAD}, {0xFD,0xAE}, {0xFD,0xAF}, {0xFD,0xB0},
- {0xFD,0xB1}, {0xFD,0xB2}, {0xFD,0xB3}, {0xFD,0xB4},
- {0xFD,0xB5}, {0xFD,0xB6}, {0xCB,0x58}, {0xB4,0xFC},
- {0xFD,0xB9}, {0xFD,0xBA}, {0xB4,0xE4}, {0xFD,0xBC},
- {0xFD,0xBD}, {0xFD,0xBE}, {0xFD,0xBF}, {0xFD,0xC0},
- {0xFD,0xC1}, {0xFD,0xC2}, {0xFD,0xC3}, {0xFD,0xC4},
- {0xFD,0xC5}, {0xFD,0xC6}, {0xFD,0xC7}, {0xFD,0xC8},
- {0xFD,0xC9}, {0xFD,0xCA}, {0xFD,0xCB}, {0xFD,0xCC},
- {0xFD,0xCD}, {0xFD,0xCE}, {0xFD,0xCF}, {0xFD,0xD0},
- {0xFD,0xD1}, {0xFD,0xD2}, {0xFD,0xD3}, {0xFD,0xD4},
- {0xFD,0xD5}, {0xFD,0xD6}, {0xFD,0xD7}, {0xFD,0xD8},
- {0xFD,0xD9}, {0xFD,0xDA}, {0xFD,0xDB}, {0xFD,0xDC},
- {0xFD,0xDD}, {0xFD,0xDE}, {0xFD,0xDF}, {0xFD,0xE0},
- {0xFD,0xE1}, {0xFD,0xE2}, {0xFD,0xE3}, {0xFD,0xE4},
- {0xFD,0xE5}, {0xFD,0xE6}, {0xFD,0xE7}, {0xFD,0xE8},
- {0xFD,0xE9}, {0xFD,0xEA}, {0xFD,0xEB}, {0xFD,0xEC},
- {0xFD,0xED}, {0xFD,0xEE}, {0xFD,0xEF}, {0xFD,0xF0},
- {0xB5,0x4E}, {0xFD,0xF2}, {0xFD,0xF3}, {0xFD,0xF4},
- {0xFD,0xF5}, {0xFD,0xF6}, {0xFD,0xF7}, {0xFD,0xF8},
- {0xFD,0xF9}, {0xFD,0xFA}, {0xFD,0xFB}, {0xFD,0xFC},
- {0xFD,0xFD}, {0xFD,0xFE}, {0xFE,0x40}, {0xFE,0x41},
- {0xFE,0x42}, {0xFE,0x43}, {0xFE,0x44}, {0xFE,0x45},
- {0xFE,0x46}, {0xFE,0x47}, {0xFE,0x48}, {0xFE,0x49},
- {0xFE,0x4A}, {0xFE,0x4B}, {0xFE,0x4C}, {0xFE,0x4D},
- {0xFE,0x4E}, {0xFE,0x4F}, {0xFE,0x50}, {0xFE,0x51},
- {0x99,0x75}, {0xFE,0x53}, {0xFE,0x54}, {0xFE,0x55},
- {0xFE,0x56}, {0xFE,0x57}, {0xFE,0x58}, {0xFE,0x59},
- {0xFE,0x5A}, {0xFE,0x5B}, {0xFE,0x5C}, {0xFE,0x5D},
- {0xFE,0x5E}, {0xFE,0x5F}, {0xFE,0x60}, {0xFE,0x61},
- {0xFE,0x62}, {0xFE,0x63}, {0xFE,0x64}, {0xFE,0x65},
- {0xFE,0x66}, {0xFE,0x67}, {0xFE,0x68}, {0xFE,0x69},
- {0xFE,0x6A}, {0xFE,0x6B}, {0xFE,0x6C}, {0xFE,0x6D},
- {0xFE,0x6E}, {0xB7,0xEC}, {0xFE,0x70}, {0xFE,0x71},
- {0xFE,0x72}, {0xFE,0x73}, {0xFE,0x74}, {0xFE,0x75},
- {0xFE,0x76}, {0xFE,0x77}, {0xFE,0x78}, {0xFE,0x79},
- {0xFE,0x7A}, {0xFE,0x7B}, {0xFE,0x7C}, {0xFE,0x7D},
- {0xFE,0x7E}, {0xFE,0xA1}, {0xFE,0xA2}, {0xFE,0xA3},
- {0xFE,0xA4}, {0xFE,0xA5}, {0xFE,0xA6}, {0xFE,0xA7},
- {0xFE,0xA8}, {0xFE,0xA9}, {0xA2,0x60}, {0xFE,0xAB},
- {0xFE,0xAC}, {0xFE,0xAD}, {0xFE,0xAE}, {0xFE,0xAF},
- {0xFE,0xB0}, {0xFE,0xB1}, {0xFE,0xB2}, {0xFE,0xB3},
- {0xFE,0xB4}, {0xFE,0xB5}, {0xFE,0xB6}, {0xFE,0xB7},
- {0xFE,0xB8}, {0xFE,0xB9}, {0xFE,0xBA}, {0xFE,0xBB},
- {0xFE,0xBC}, {0xFE,0xBD}, {0xFE,0xBE}, {0xFE,0xBF},
- {0xFE,0xC0}, {0xFE,0xC1}, {0xFE,0xC2}, {0xFE,0xC3},
- {0xFE,0xC4}, {0xFE,0xC5}, {0xFE,0xC6}, {0xFE,0xC7},
- {0xFE,0xC8}, {0xFE,0xC9}, {0xFE,0xCA}, {0xFE,0xCB},
- {0xFE,0xCC}, {0xFE,0xCD}, {0xFE,0xCE}, {0xFE,0xCF},
- {0xFE,0xD0}, {0xFE,0xD1}, {0xFE,0xD2}, {0xFE,0xD3},
- {0xFE,0xD4}, {0xFE,0xD5}, {0xFE,0xD6}, {0xFE,0xD7},
- {0xFE,0xD8}, {0xFE,0xD9}, {0xFE,0xDA}, {0xFE,0xDB},
- {0xFE,0xDC}, {0xCF,0xF1}, {0xFE,0xDE}, {0xFE,0xDF},
- {0xFE,0xE0}, {0xFE,0xE1}, {0xFE,0xE2}, {0xFE,0xE3},
- {0xFE,0xE4}, {0xFE,0xE5}, {0xFE,0xE6}, {0xFE,0xE7},
- {0xFE,0xE8}, {0xFE,0xE9}, {0xFE,0xEA}, {0xFE,0xEB},
- {0xFE,0xEC}, {0xFE,0xED}, {0xFE,0xEE}, {0xFE,0xEF},
- {0xFE,0xF0}, {0xFE,0xF1}, {0xFE,0xF2}, {0xFE,0xF3},
- {0xFE,0xF4}, {0xFE,0xF5}, {0xFE,0xF6}, {0xFE,0xF7},
- {0xFE,0xF8}, {0xFE,0xF9}, {0xFE,0xFA}, {0xFE,0xFB},
- {0xFE,0xFC}, {0xFE,0xFD}, {0xFE,0xFE}, {0x8E,0x40},
- {0x8E,0x41}, {0x8E,0x42}, {0x8E,0x43}, {0x8E,0x44},
- {0x8E,0x45}, {0x8E,0x46}, {0x8E,0x47}, {0x8E,0x48},
- {0x8E,0x49}, {0x8E,0x4A}, {0x8E,0x4B}, {0x8E,0x4C},
- {0x8E,0x4D}, {0x8E,0x4E}, {0x8E,0x4F}, {0x8E,0x50},
- {0x8E,0x51}, {0x8E,0x52}, {0x8E,0x53}, {0x8E,0x54},
- {0x8E,0x55}, {0x8E,0x56}, {0x8E,0x57}, {0x8E,0x58},
- {0x8E,0x59}, {0x8E,0x5A}, {0x8E,0x5B}, {0x8E,0x5C},
- {0x8E,0x5D}, {0x8E,0x5E}, {0x8E,0x5F}, {0x8E,0x60},
- {0x8E,0x61}, {0x8E,0x62}, {0x8E,0x63}, {0x8E,0x64},
- {0x8E,0x65}, {0x8E,0x66}, {0x8E,0x67}, {0x8E,0x68},
- {0xBA,0xE6}, {0x8E,0x6A}, {0x8E,0x6B}, {0x8E,0x6C},
- {0x8E,0x6D}, {0x8E,0x6E}, {0xED,0xCA}, {0x8E,0x70},
- {0x8E,0x71}, {0x8E,0x72}, {0x8E,0x73}, {0x8E,0x74},
- {0x8E,0x75}, {0x8E,0x76}, {0x8E,0x77}, {0x8E,0x78},
- {0x8E,0x79}, {0x8E,0x7A}, {0x8E,0x7B}, {0x8E,0x7C},
- {0x8E,0x7D}, {0xA2,0x61}, {0x8E,0xA1}, {0x8E,0xA2},
- {0x8E,0xA3}, {0x8E,0xA4}, {0x8E,0xA5}, {0x8E,0xA6},
- {0x8E,0xA7}, {0x8E,0xA8}, {0x8E,0xA9}, {0x8E,0xAA},
- {0xBA,0xFC}, {0x8E,0xAC}, {0x8E,0xAD}, {0x8E,0xAE},
- {0x8E,0xAF}, {0x8E,0xB0}, {0x8E,0xB1}, {0x8E,0xB2},
- {0x8E,0xB3}, {0xBF,0xA6}, {0x8E,0xB5}, {0x8E,0xB6},
- {0x8E,0xB7}, {0x8E,0xB8}, {0x8E,0xB9}, {0x8E,0xBA},
- {0x8E,0xBB}, {0x8E,0xBC}, {0x8E,0xBD}, {0x8E,0xBE},
- {0x8E,0xBF}, {0x8E,0xC0}, {0x8E,0xC1}, {0x8E,0xC2},
- {0x8E,0xC3}, {0x8E,0xC4}, {0x8E,0xC5}, {0x8E,0xC6},
- {0x8E,0xC7}, {0x8E,0xC8}, {0x8E,0xC9}, {0x8E,0xCA},
- {0x8E,0xCB}, {0x8E,0xCC}, {0xAA,0xCC}, {0x8E,0xCE},
- {0x8E,0xCF}, {0xBF,0xAE}, {0x8E,0xD1}, {0x8E,0xD2},
- {0x8E,0xD3}, {0x8E,0xD4}, {0x8E,0xD5}, {0x8E,0xD6},
- {0x8E,0xD7}, {0x8E,0xD8}, {0x8E,0xD9}, {0x8E,0xDA},
- {0x8E,0xDB}, {0x8E,0xDC}, {0x8E,0xDD}, {0x8E,0xDE},
- {0x8E,0xDF}, {0x8E,0xE0}, {0x8E,0xE1}, {0x8E,0xE2},
- {0x8E,0xE3}, {0x8E,0xE4}, {0x8E,0xE5}, {0x8E,0xE6},
- {0x8E,0xE7}, {0x8E,0xE8}, {0x8E,0xE9}, {0x8E,0xEA},
- {0x8E,0xEB}, {0x8E,0xEC}, {0x8E,0xED}, {0x8E,0xEE},
- {0x8E,0xEF}, {0x8E,0xF0}, {0x8E,0xF1}, {0x8E,0xF2},
- {0x8E,0xF3}, {0x8E,0xF4}, {0x8E,0xF5}, {0x8E,0xF6},
- {0x8E,0xF7}, {0x8E,0xF8}, {0x8E,0xF9}, {0x8E,0xFA},
- {0x8E,0xFB}, {0x8E,0xFC}, {0x8E,0xFD}, {0x8E,0xFE},
- {0x8F,0x40}, {0x8F,0x41}, {0x8F,0x42}, {0x8F,0x43},
- {0x8F,0x44}, {0x8F,0x45}, {0x8F,0x46}, {0x8F,0x47},
- {0x8F,0x48}, {0x8F,0x49}, {0x8F,0x4A}, {0x8F,0x4B},
- {0x8F,0x4C}, {0x8F,0x4D}, {0x8F,0x4E}, {0x8F,0x4F},
- {0x8F,0x50}, {0x8F,0x51}, {0x8F,0x52}, {0x8F,0x53},
- {0x8F,0x54}, {0x8F,0x55}, {0x8F,0x56}, {0xB5,0xD7},
- {0x8F,0x58}, {0x8F,0x59}, {0x8F,0x5A}, {0x8F,0x5B},
- {0x8F,0x5C}, {0x8F,0x5D}, {0x8F,0x5E}, {0x8F,0x5F},
- {0x8F,0x60}, {0x8F,0x61}, {0x8F,0x62}, {0x8F,0x63},
- {0x8F,0x64}, {0x8F,0x65}, {0x8F,0x66}, {0x8F,0x67},
- {0x8F,0x68}, {0xE3,0xC8}, {0x8F,0x6A}, {0x8F,0x6B},
- {0x8F,0x6C}, {0x8F,0x6D}, {0xDB,0x79}, {0x8F,0x6F},
- {0x8F,0x70}, {0x8F,0x71}, {0x8F,0x72}, {0x8F,0x73},
- {0x8F,0x74}, {0x8F,0x75}, {0x8F,0x76}, {0x8F,0x77},
- {0x8F,0x78}, {0x8F,0x79}, {0x8F,0x7A}, {0x8F,0x7B},
- {0x8F,0x7C}, {0x8F,0x7D}, {0x8F,0x7E}, {0x8F,0xA1},
- {0x8F,0xA2}, {0x8F,0xA3}, {0x8F,0xA4}, {0x8F,0xA5},
- {0x8F,0xA6}, {0x8F,0xA7}, {0x8F,0xA8}, {0x8F,0xA9},
- {0x8F,0xAA}, {0x8F,0xAB}, {0x8F,0xAC}, {0x8F,0xAD},
- {0x8F,0xAE}, {0x8F,0xAF}, {0x8F,0xB0}, {0x8F,0xB1},
- {0x8F,0xB2}, {0x8F,0xB3}, {0x8F,0xB4}, {0x8F,0xB5},
- {0x8F,0xB6}, {0x8F,0xB7}, {0x8F,0xB8}, {0x8F,0xB9},
- {0x8F,0xBA}, {0x8F,0xBB}, {0x8F,0xBC}, {0x8F,0xBD},
- {0x8F,0xBE}, {0x8F,0xBF}, {0x8F,0xC0}, {0x8F,0xC1},
- {0x8F,0xC2}, {0x8F,0xC3}, {0x8F,0xC4}, {0x8F,0xC5},
- {0x8F,0xC6}, {0x8F,0xC7}, {0x8F,0xC8}, {0x8F,0xC9},
- {0x8F,0xCA}, {0xBF,0xCC}, {0xA0,0xD4}, {0x8F,0xCD},
- {0x8F,0xCE}, {0x8F,0xCF}, {0x8F,0xD0}, {0x8F,0xD1},
- {0x8F,0xD2}, {0x8F,0xD3}, {0x8F,0xD4}, {0x8F,0xD5},
- {0x8F,0xD6}, {0x8F,0xD7}, {0x8F,0xD8}, {0x8F,0xD9},
- {0x8F,0xDA}, {0x8F,0xDB}, {0x8F,0xDC}, {0x8F,0xDD},
- {0x8F,0xDE}, {0x8F,0xDF}, {0x8F,0xE0}, {0x8F,0xE1},
- {0x8F,0xE2}, {0x8F,0xE3}, {0x8F,0xE4}, {0x8F,0xE5},
- {0x8F,0xE6}, {0x8F,0xE7}, {0x8F,0xE8}, {0x8F,0xE9},
- {0x8F,0xEA}, {0x8F,0xEB}, {0x8F,0xEC}, {0x8F,0xED},
- {0x8F,0xEE}, {0x8F,0xEF}, {0x8F,0xF0}, {0x8F,0xF1},
- {0x8F,0xF2}, {0x8F,0xF3}, {0x8F,0xF4}, {0x8F,0xF5},
- {0x8F,0xF6}, {0x8F,0xF7}, {0x8F,0xF8}, {0x8F,0xF9},
- {0x8F,0xFA}, {0x8F,0xFB}, {0x8F,0xFC}, {0x8F,0xFD},
- {0xB0,0x5F}, {0x90,0x40}, {0x90,0x41}, {0x90,0x42},
- {0x90,0x43}, {0x90,0x44}, {0x90,0x45}, {0x90,0x46},
- {0x90,0x47}, {0x90,0x48}, {0x90,0x49}, {0x90,0x4A},
- {0x90,0x4B}, {0x90,0x4C}, {0x90,0x4D}, {0x90,0x4E},
- {0x90,0x4F}, {0x90,0x50}, {0x90,0x51}, {0x90,0x52},
- {0x90,0x53}, {0x90,0x54}, {0x90,0x55}, {0x90,0x56},
- {0x90,0x57}, {0x90,0x58}, {0x90,0x59}, {0x90,0x5A},
- {0x90,0x5B}, {0x90,0x5C}, {0x90,0x5D}, {0x90,0x5E},
- {0x90,0x5F}, {0x90,0x60}, {0x90,0x61}, {0x90,0x62},
- {0x90,0x63}, {0x90,0x64}, {0x90,0x65}, {0x90,0x66},
- {0x90,0x67}, {0x90,0x68}, {0x90,0x69}, {0x90,0x6A},
- {0x90,0x6B}, {0x90,0x6C}, {0xB3,0xA3}, {0x90,0x6E},
- {0x90,0x6F}, {0x90,0x70}, {0x90,0x71}, {0x90,0x72},
- {0x90,0x73}, {0x90,0x74}, {0x90,0x75}, {0x90,0x76},
- {0x90,0x77}, {0x90,0x78}, {0x90,0x79}, {0xF9,0xD7},
- {0x90,0x7B}, {0x90,0x7C}, {0x90,0x7D}, {0x90,0x7E},
- {0x90,0xA1}, {0x90,0xA2}, {0x90,0xA3}, {0x90,0xA4},
- {0x90,0xA5}, {0x90,0xA6}, {0x90,0xA7}, {0x90,0xA8},
- {0x90,0xA9}, {0x90,0xAA}, {0x90,0xAB}, {0x90,0xAC},
- {0x90,0xAD}, {0x90,0xAE}, {0x90,0xAF}, {0x90,0xB0},
- {0x90,0xB1}, {0x90,0xB2}, {0x90,0xB3}, {0x90,0xB4},
- {0x90,0xB5}, {0x90,0xB6}, {0x90,0xB7}, {0x90,0xB8},
- {0x90,0xB9}, {0x90,0xBA}, {0x90,0xBB}, {0x90,0xBC},
- {0x90,0xBD}, {0x90,0xBE}, {0x90,0xBF}, {0x90,0xC0},
- {0x90,0xC1}, {0x90,0xC2}, {0x90,0xC3}, {0x90,0xC4},
- {0x90,0xC5}, {0x90,0xC6}, {0x90,0xC7}, {0x90,0xC8},
- {0x90,0xC9}, {0x90,0xCA}, {0x90,0xCB}, {0x90,0xCC},
- {0x90,0xCD}, {0x90,0xCE}, {0x90,0xCF}, {0x90,0xD0},
- {0x90,0xD1}, {0x90,0xD2}, {0x90,0xD3}, {0x90,0xD4},
- {0x90,0xD5}, {0x90,0xD6}, {0x90,0xD7}, {0x90,0xD8},
- {0x90,0xD9}, {0x90,0xDA}, {0x90,0xDB}, {0xC0,0x52},
- {0x90,0xDD}, {0x90,0xDE}, {0x90,0xDF}, {0x90,0xE0},
- {0x90,0xE1}, {0x90,0xE2}, {0x90,0xE3}, {0x90,0xE4},
- {0x90,0xE5}, {0x90,0xE6}, {0x90,0xE7}, {0x90,0xE8},
- {0x90,0xE9}, {0x90,0xEA}, {0x90,0xEB}, {0x90,0xEC},
- {0x90,0xED}, {0x90,0xEE}, {0x90,0xEF}, {0x90,0xF0},
- {0xC5,0x54}, {0x90,0xF2}, {0x90,0xF3}, {0x90,0xF4},
- {0x90,0xF5}, {0x90,0xF6}, {0x90,0xF7}, {0x90,0xF8},
- {0x90,0xF9}, {0x90,0xFA}, {0x90,0xFB}, {0x90,0xFC},
- {0x90,0xFD}, {0x90,0xFE}, {0x91,0x40}, {0x91,0x41},
- {0x91,0x42}, {0x91,0x43}, {0x91,0x44}, {0x91,0x45},
- {0x91,0x46}, {0x91,0x47}, {0x91,0x48}, {0x91,0x49},
- {0x91,0x4A}, {0x91,0x4B}, {0x91,0x4C}, {0x91,0x4D},
- {0x91,0x4E}, {0x91,0x4F}, {0x91,0x50}, {0x91,0x51},
- {0x91,0x52}, {0x91,0x53}, {0x91,0x54}, {0x91,0x55},
- {0x91,0x56}, {0x91,0x57}, {0x91,0x58}, {0x91,0x59},
- {0x91,0x5A}, {0x91,0x5B}, {0x91,0x5C}, {0x91,0x5D},
- {0x91,0x5E}, {0x91,0x5F}, {0x91,0x60}, {0x91,0x61},
- {0x91,0x62}, {0x91,0x63}, {0x91,0x64}, {0x91,0x65},
- {0x91,0x66}, {0x91,0x67}, {0x91,0x68}, {0x91,0x69},
- {0x91,0x6A}, {0x91,0x6B}, {0x91,0x6C}, {0x91,0x6D},
- {0x91,0x6E}, {0x91,0x6F}, {0x91,0x70}, {0x91,0x71},
- {0x91,0x72}, {0x91,0x73}, {0x91,0x74}, {0x91,0x75},
- {0x91,0x76}, {0x91,0x77}, {0x91,0x78}, {0x91,0x79},
- {0x91,0x7A}, {0x91,0x7B}, {0x91,0x7C}, {0x91,0x7D},
- {0x91,0x7E}, {0x91,0xA1}, {0x91,0xA2}, {0x91,0xA3},
- {0x91,0xA4}, {0x91,0xA5}, {0x91,0xA6}, {0x91,0xA7},
- {0x91,0xA8}, {0x91,0xA9}, {0x91,0xAA}, {0x91,0xAB},
- {0x91,0xAC}, {0x91,0xAD}, {0x91,0xAE}, {0x91,0xAF},
- {0x91,0xB0}, {0x91,0xB1}, {0x91,0xB2}, {0x91,0xB3},
- {0x91,0xB4}, {0x91,0xB5}, {0x91,0xB6}, {0x91,0xB7},
- {0x91,0xB8}, {0x91,0xB9}, {0x91,0xBA}, {0x91,0xBB},
- {0x91,0xBC}, {0x91,0xBD}, {0x91,0xBE}, {0xF1,0xE3},
- {0x91,0xC0}, {0x91,0xC1}, {0x91,0xC2}, {0x91,0xC3},
- {0x91,0xC4}, {0x91,0xC5}, {0x91,0xC6}, {0x91,0xC7},
- {0x91,0xC8}, {0x91,0xC9}, {0x91,0xCA}, {0x91,0xCB},
- {0x91,0xCC}, {0x91,0xCD}, {0x91,0xCE}, {0x91,0xCF},
- {0x91,0xD0}, {0x91,0xD1}, {0x91,0xD2}, {0x91,0xD3},
- {0x91,0xD4}, {0x91,0xD5}, {0x91,0xD6}, {0x91,0xD7},
- {0x91,0xD8}, {0x91,0xD9}, {0x91,0xDA}, {0x91,0xDB},
- {0x91,0xDC}, {0x91,0xDD}, {0x91,0xDE}, {0x91,0xDF},
- {0x91,0xE0}, {0x91,0xE1}, {0x91,0xE2}, {0x91,0xE3},
- {0x91,0xE4}, {0x91,0xE5}, {0x91,0xE6}, {0x91,0xE7},
- {0x91,0xE8}, {0x91,0xE9}, {0x91,0xEA}, {0x91,0xEB},
- {0x91,0xEC}, {0x91,0xED}, {0x91,0xEE}, {0x91,0xEF},
- {0x91,0xF0}, {0x91,0xF1}, {0x91,0xF2}, {0x91,0xF3},
- {0x91,0xF4}, {0x91,0xF5}, {0x91,0xF6}, {0x91,0xF7},
- {0x91,0xF8}, {0x91,0xF9}, {0x91,0xFA}, {0x91,0xFB},
- {0x91,0xFC}, {0x91,0xFD}, {0x91,0xFE}, {0x92,0x40},
- {0x92,0x41}, {0x92,0x42}, {0x92,0x43}, {0x92,0x42},
- {0x92,0x45}, {0x92,0x46}, {0x92,0x47}, {0x92,0x48},
- {0x92,0x49}, {0x92,0x4A}, {0x92,0x4B}, {0x92,0x4C},
- {0x92,0x4D}, {0x92,0x4E}, {0x92,0x4F}, {0x92,0x50},
- {0x92,0x51}, {0x92,0x52}, {0x92,0x53}, {0x92,0x54},
- {0x92,0x55}, {0x92,0x56}, {0x92,0x57}, {0x92,0x58},
- {0x92,0x59}, {0x92,0x5A}, {0x92,0x5B}, {0x92,0x5C},
- {0x92,0x5D}, {0x92,0x5E}, {0x92,0x5F}, {0x92,0x60},
- {0x92,0x61}, {0x92,0x62}, {0x92,0x63}, {0x92,0x64},
- {0x92,0x65}, {0x92,0x66}, {0x92,0x67}, {0x92,0x68},
- {0x92,0x69}, {0x92,0x6A}, {0x92,0x6B}, {0x92,0x6C},
- {0x92,0x6D}, {0x92,0x6E}, {0x92,0x6F}, {0x92,0x70},
- {0x92,0x71}, {0x92,0x72}, {0x92,0x73}, {0x92,0x74},
- {0x92,0x75}, {0x92,0x76}, {0x92,0x77}, {0x92,0x78},
- {0x92,0x79}, {0x92,0x7A}, {0x92,0x7B}, {0x92,0x7C},
- {0x92,0x7D}, {0x92,0x7E}, {0x92,0xA1}, {0x92,0xA2},
- {0x92,0xA3}, {0x92,0xA4}, {0x92,0xA5}, {0x92,0xA6},
- {0x92,0xA7}, {0x92,0xA8}, {0x92,0xA9}, {0x92,0xAA},
- {0x92,0xAB}, {0x92,0xAC}, {0x92,0xAD}, {0x92,0xAE},
- {0xA2,0x59}, {0xA2,0x5A}, {0xA2,0x5C}, {0xA2,0x5B},
- {0x92,0xB3}, {0x92,0xB4}, {0x92,0xB5}, {0x92,0xB6},
- {0x92,0xB7}, {0x92,0xB8}, {0x92,0xB9}, {0x92,0xBA},
- {0x92,0xBB}, {0x92,0xBC}, {0x92,0xBD}, {0x92,0xBE},
- {0x92,0xBF}, {0x92,0xC0}, {0x92,0xC1}, {0x92,0xC2},
- {0x92,0xC3}, {0x92,0xC4}, {0x92,0xC5}, {0x92,0xC6},
- {0x92,0xC7}, {0xA0,0x5F}, {0x92,0xC9}, {0x92,0xCA},
- {0x92,0xCB}, {0x92,0xCC}, {0x92,0xCD}, {0x92,0xCE},
- {0x92,0xCF}, {0x92,0xD0}, {0xE6,0xAB}, {0x92,0xD2},
- {0x92,0xD3}, {0x92,0xD4}, {0x92,0xD5}, {0x92,0xD6},
- {0x92,0xD7}, {0x92,0xD8}, {0x92,0xD9}, {0x92,0xDA},
- {0x92,0xDB}, {0x92,0xDC}, {0x92,0xDD}, {0x92,0xDE},
- {0x92,0xDF}, {0x92,0xE0}, {0x92,0xE1}, {0x92,0xE2},
- {0x92,0xE3}, {0x92,0xE4}, {0x92,0xE5}, {0x92,0xE6},
- {0x92,0xE7}, {0x92,0xE8}, {0x92,0xE9}, {0x92,0xEA},
- {0x92,0xEB}, {0x92,0xEC}, {0x92,0xED}, {0x92,0xEE},
- {0x92,0xEF}, {0x92,0xF0}, {0x92,0xF1}, {0x92,0xF2},
- {0x92,0xF3}, {0x92,0xF4}, {0x92,0xF5}, {0x92,0xF6},
- {0x92,0xF7}, {0x92,0xF8}, {0x92,0xF9}, {0x92,0xFA},
- {0x92,0xFB}, {0x92,0xFC}, {0x92,0xFD}, {0x92,0xFE},
- {0x93,0x40}, {0x93,0x41}, {0x93,0x42}, {0x93,0x43},
- {0x93,0x44}, {0x93,0x45}, {0x93,0x46}, {0x93,0x47},
- {0x93,0x48}, {0x93,0x49}, {0x93,0x4A}, {0x93,0x4B},
- {0x93,0x4C}, {0x93,0x4D}, {0x93,0x4E}, {0x93,0x4F},
- {0x93,0x50}, {0x93,0x51}, {0x93,0x52}, {0x93,0x53},
- {0x93,0x54}, {0x93,0x55}, {0x93,0x56}, {0x93,0x57},
- {0x93,0x58}, {0x93,0x59}, {0x93,0x5A}, {0x93,0x5B},
- {0x93,0x5C}, {0x93,0x5D}, {0x93,0x5E}, {0x93,0x5F},
- {0x93,0x60}, {0x93,0x61}, {0x93,0x62}, {0x93,0x63},
- {0x93,0x64}, {0x93,0x65}, {0x93,0x66}, {0x93,0x67},
- {0x93,0x68}, {0x93,0x69}, {0x93,0x6A}, {0x93,0x6B},
- {0x93,0x6C}, {0x93,0x6D}, {0x93,0x6E}, {0x93,0x6F},
- {0x93,0x70}, {0x93,0x71}, {0x93,0x72}, {0x93,0x73},
- {0x93,0x74}, {0x93,0x75}, {0x93,0x76}, {0x93,0x77},
- {0x93,0x78}, {0x93,0x79}, {0x93,0x7A}, {0x93,0x7B},
- {0x93,0x7C}, {0x93,0x7D}, {0x93,0x7E}, {0x93,0xA1},
- {0x93,0xA2}, {0x93,0xA3}, {0x93,0xA4}, {0x93,0xA5},
- {0x93,0xA6}, {0x93,0xA7}, {0x93,0xA8}, {0x93,0xA9},
- {0x93,0xAA}, {0x93,0xAB}, {0x93,0xAC}, {0x93,0xAD},
- {0x93,0xAE}, {0x93,0xAF}, {0x93,0xB0}, {0x93,0xB1},
- {0x93,0xB2}, {0x93,0xB3}, {0x93,0xB4}, {0x93,0xB5},
- {0x93,0xB6}, {0x93,0xB7}, {0x93,0xB8}, {0x93,0xB9},
- {0x93,0xBA}, {0x93,0xBB}, {0x93,0xBC}, {0x93,0xBD},
- {0x93,0xBE}, {0x93,0xBF}, {0x93,0xC0}, {0x93,0xC1},
- {0x93,0xC2}, {0x93,0xC3}, {0x93,0xC4}, {0x93,0xC5},
- {0x93,0xC6}, {0x93,0xC7}, {0x93,0xC8}, {0x93,0xC9},
- {0x93,0xCA}, {0x93,0xCB}, {0x93,0xCC}, {0x93,0xCD},
- {0x93,0xCE}, {0x93,0xCF}, {0x93,0xD0}, {0x93,0xD1},
- {0x93,0xD2}, {0x93,0xD3}, {0x93,0xD4}, {0x93,0xD5},
- {0x93,0xD6}, {0x93,0xD7}, {0x93,0xD8}, {0x93,0xD9},
- {0x93,0xDA}, {0x93,0xDB}, {0x93,0xDC}, {0x93,0xDD},
- {0x93,0xDE}, {0x93,0xDF}, {0x93,0xE0}, {0x93,0xE1},
- {0x93,0xE2}, {0x93,0xE3}, {0x93,0xE4}, {0x93,0xE5},
- {0x93,0xE6}, {0x93,0xE7}, {0x93,0xE8}, {0x93,0xE9},
- {0x93,0xEA}, {0x93,0xEB}, {0x93,0xEC}, {0x93,0xED},
- {0x93,0xEE}, {0x93,0xEF}, {0x93,0xF0}, {0x93,0xF1},
- {0x93,0xF2}, {0x93,0xF3}, {0x93,0xF4}, {0x93,0xF5},
- {0x93,0xF6}, {0x93,0xF7}, {0x93,0xF8}, {0x93,0xF9},
- {0x93,0xFA}, {0x93,0xFB}, {0x93,0xFC}, {0x93,0xFD},
- {0x93,0xFE}, {0x94,0x40}, {0x94,0x41}, {0x94,0x42},
- {0x94,0x43}, {0x94,0x44}, {0x94,0x45}, {0x94,0x46},
- {0xD2,0x56}, {0x94,0x48}, {0x94,0x49}, {0x94,0x4A},
- {0x94,0x4B}, {0x94,0x4C}, {0x94,0x4D}, {0x94,0x4E},
- {0x94,0x4F}, {0x94,0x50}, {0x94,0x51}, {0x94,0x52},
- {0x94,0x53}, {0x94,0x54}, {0x94,0x55}, {0x94,0x56},
- {0x94,0x57}, {0x94,0x58}, {0x94,0x59}, {0x94,0x5A},
- {0x94,0x5B}, {0x94,0x5C}, {0x94,0x5D}, {0x94,0x5E},
- {0x94,0x5F}, {0x94,0x60}, {0x94,0x61}, {0x94,0x62},
- {0x94,0x63}, {0x94,0x64}, {0x94,0x65}, {0x94,0x66},
- {0x94,0x67}, {0x94,0x68}, {0x94,0x69}, {0x94,0x6A},
- {0x94,0x6B}, {0x94,0x6C}, {0x94,0x6D}, {0x94,0x6E},
- {0x94,0x6F}, {0x94,0x70}, {0x94,0x71}, {0x94,0x72},
- {0x94,0x73}, {0x94,0x74}, {0x94,0x75}, {0x94,0x76},
- {0x94,0x77}, {0x94,0x78}, {0x94,0x79}, {0x94,0x7A},
- {0x94,0x7B}, {0x94,0x7C}, {0x94,0x7D}, {0x94,0x7E},
- {0x94,0xA1}, {0x94,0xA2}, {0x94,0xA3}, {0x94,0xA4},
- {0x94,0xA5}, {0x94,0xA6}, {0x94,0xA7}, {0x94,0xA8},
- {0x94,0xA9}, {0x94,0xAA}, {0x94,0xAB}, {0x94,0xAC},
- {0x94,0xAD}, {0x94,0xAE}, {0x94,0xAF}, {0x94,0xB0},
- {0x94,0xB1}, {0x94,0xB2}, {0x94,0xB3}, {0x94,0xB4},
- {0x94,0xB5}, {0x94,0xB6}, {0x94,0xB7}, {0x94,0xB8},
- {0x94,0xB9}, {0x94,0xBA}, {0x94,0xBB}, {0x94,0xBC},
- {0x94,0xBD}, {0x94,0xBE}, {0x94,0xBF}, {0x94,0xC0},
- {0x94,0xC1}, {0x94,0xC2}, {0x94,0xC3}, {0x94,0xC4},
- {0x94,0xC5}, {0x94,0xC6}, {0x94,0xC7}, {0x94,0xC8},
- {0x94,0xC9}, {0xE6,0xD0}, {0x94,0xCB}, {0x94,0xCC},
- {0x94,0xCD}, {0x94,0xCE}, {0x94,0xCF}, {0x94,0xD0},
- {0x94,0xD1}, {0x94,0xD2}, {0x94,0xD3}, {0x94,0xD4},
- {0x94,0xD5}, {0x94,0xD6}, {0x94,0xD7}, {0x94,0xD8},
- {0x94,0xD9}, {0x94,0xDA}, {0x94,0xDB}, {0x94,0xDC},
- {0x94,0xDD}, {0x94,0xDE}, {0x94,0xDF}, {0x94,0xE0},
- {0x94,0xE1}, {0x94,0xE2}, {0x94,0xE3}, {0x94,0xE4},
- {0x94,0xE5}, {0x94,0xE6}, {0x94,0xE7}, {0x94,0xE8},
- {0x94,0xE9}, {0x94,0xEA}, {0x94,0xEB}, {0x94,0xEC},
- {0x94,0xED}, {0x94,0xEE}, {0x94,0xEF}, {0x94,0xF0},
- {0x94,0xF1}, {0x94,0xF2}, {0x94,0xF3}, {0x94,0xF4},
- {0x94,0xF5}, {0x94,0xF6}, {0x94,0xF7}, {0x94,0xF8},
- {0x94,0xF9}, {0x94,0xFA}, {0x94,0xFB}, {0x94,0xFC},
- {0x94,0xFD}, {0x94,0xFE}, {0x95,0x40}, {0x95,0x41},
- {0x95,0x42}, {0x95,0x43}, {0x95,0x44}, {0x95,0x45},
- {0x95,0x46}, {0x95,0x47}, {0x95,0x48}, {0x95,0x49},
- {0x95,0x4A}, {0x95,0x4B}, {0x95,0x4C}, {0x95,0x4D},
- {0x95,0x4E}, {0x95,0x4F}, {0x95,0x50}, {0x95,0x51},
- {0x95,0x52}, {0x95,0x53}, {0x95,0x54}, {0x95,0x55},
- {0x95,0x56}, {0x95,0x57}, {0x95,0x58}, {0x95,0x59},
- {0x95,0x5A}, {0x95,0x5B}, {0x95,0x5C}, {0x95,0x5D},
- {0x95,0x5E}, {0x95,0x5F}, {0x95,0x60}, {0x95,0x61},
- {0x95,0x62}, {0x95,0x63}, {0x95,0x64}, {0x95,0x65},
- {0x95,0x66}, {0x95,0x67}, {0x95,0x68}, {0x95,0x69},
- {0x95,0x6A}, {0x95,0x6B}, {0x95,0x6C}, {0x95,0x6D},
- {0x95,0x6E}, {0x95,0x6F}, {0x95,0x70}, {0x95,0x71},
- {0x95,0x72}, {0x95,0x73}, {0x95,0x74}, {0x95,0x75},
- {0x95,0x76}, {0x95,0x77}, {0x95,0x78}, {0x95,0x79},
- {0x95,0x7A}, {0x95,0x7B}, {0x95,0x7C}, {0x95,0x7D},
- {0x95,0x7E}, {0x95,0xA1}, {0x95,0xA2}, {0x95,0xA3},
- {0x95,0xA4}, {0x95,0xA5}, {0x95,0xA6}, {0x95,0xA7},
- {0x95,0xA8}, {0x95,0xA9}, {0x95,0xAA}, {0x95,0xAB},
- {0x95,0xAC}, {0x95,0xAD}, {0x95,0xAE}, {0x95,0xAF},
- {0x95,0xB0}, {0x95,0xB1}, {0x95,0xB2}, {0x95,0xB3},
- {0x95,0xB4}, {0x95,0xB5}, {0x95,0xB6}, {0x95,0xB7},
- {0x95,0xB8}, {0x95,0xB9}, {0x95,0xBA}, {0x95,0xBB},
- {0x95,0xBC}, {0x95,0xBD}, {0x95,0xBE}, {0x95,0xBF},
- {0x95,0xC0}, {0x95,0xC1}, {0x95,0xC2}, {0x95,0xC3},
- {0x95,0xC4}, {0x95,0xC5}, {0x95,0xC6}, {0x95,0xC7},
- {0x95,0xC8}, {0x95,0xC9}, {0x95,0xCA}, {0x95,0xCB},
- {0x95,0xCC}, {0x95,0xCD}, {0x95,0xCE}, {0x95,0xCF},
- {0x95,0xD0}, {0x95,0xD1}, {0x95,0xD2}, {0x95,0xD3},
- {0x95,0xD4}, {0x95,0xD5}, {0x95,0xD6}, {0x95,0xD7},
- {0x95,0xD8}, {0xCA,0x52}, {0x95,0xDA}, {0x95,0xDB},
- {0x95,0xDC}, {0x95,0xDD}, {0x95,0xDE}, {0x95,0xDF},
- {0x95,0xE0}, {0x95,0xE1}, {0x95,0xE2}, {0x95,0xE3},
- {0x95,0xE4}, {0x95,0xE5}, {0x95,0xE6}, {0x95,0xE7},
- {0x95,0xE8}, {0x95,0xE9}, {0x95,0xEA}, {0x95,0xEB},
- {0x95,0xEC}, {0x95,0xED}, {0x95,0xEE}, {0x95,0xEF},
- {0x95,0xF0}, {0x95,0xF1}, {0x95,0xF2}, {0x95,0xF3},
- {0x95,0xF4}, {0x95,0xF5}, {0x95,0xF6}, {0x95,0xF7},
- {0x95,0xF8}, {0x95,0xF9}, {0x95,0xFA}, {0x95,0xFB},
- {0x95,0xFC}, {0x95,0xFD}, {0x95,0xFE}, {0x96,0x40},
- {0x96,0x41}, {0x96,0x42}, {0x96,0x43}, {0x9C,0xE4},
- {0x96,0x45}, {0x96,0x46}, {0x96,0x47}, {0x96,0x48},
- {0x96,0x49}, {0x96,0x4A}, {0x96,0x4B}, {0x96,0x4C},
- {0x96,0x4D}, {0x96,0x4E}, {0x96,0x4F}, {0x96,0x50},
- {0x96,0x51}, {0x96,0x52}, {0x96,0x53}, {0x96,0x54},
- {0x96,0x55}, {0x96,0x56}, {0x96,0x57}, {0x96,0x58},
- {0x96,0x59}, {0x96,0x5A}, {0x96,0x5B}, {0x96,0x5C},
- {0x96,0x5D}, {0x96,0x5E}, {0x96,0x5F}, {0x96,0x60},
- {0x96,0x61}, {0x96,0x62}, {0x96,0x63}, {0x96,0x64},
- {0x96,0x65}, {0x96,0x66}, {0x96,0x67}, {0x96,0x68},
- {0x96,0x69}, {0x96,0x6A}, {0x96,0x6B}, {0x96,0x6C},
- {0x96,0x6D}, {0x96,0x6E}, {0x96,0x6F}, {0x96,0x70},
- {0x96,0x71}, {0x96,0x72}, {0x96,0x73}, {0x96,0x74},
- {0x96,0x75}, {0x96,0x76}, {0x96,0x77}, {0x96,0x78},
- {0x96,0x79}, {0x96,0x7A}, {0x96,0x7B}, {0x96,0x7C},
- {0x96,0x7D}, {0x96,0x7E}, {0x96,0xA1}, {0x96,0xA2},
- {0x96,0xA3}, {0x96,0xA4}, {0x96,0xA5}, {0x96,0xA6},
- {0x96,0xA7}, {0x96,0xA8}, {0x96,0xA9}, {0x96,0xAA},
- {0x96,0xAB}, {0x96,0xAC}, {0x96,0xAD}, {0x96,0xAE},
- {0x96,0xAF}, {0x96,0xB0}, {0x96,0xB1}, {0x96,0xB2},
- {0x96,0xB3}, {0x96,0xB4}, {0x96,0xB5}, {0x96,0xB6},
- {0x96,0xB7}, {0x96,0xB8}, {0x96,0xB9}, {0x96,0xBA},
- {0x96,0xBB}, {0x96,0xBC}, {0x96,0xBD}, {0x96,0xBE},
- {0x96,0xBF}, {0x96,0xC0}, {0x96,0xC1}, {0x96,0xC2},
- {0x96,0xC3}, {0x96,0xC4}, {0x96,0xC5}, {0x96,0xC6},
- {0x96,0xC7}, {0x96,0xC8}, {0x96,0xC9}, {0x96,0xCA},
- {0x96,0xCB}, {0x96,0xCC}, {0x96,0xCD}, {0x96,0xCE},
- {0x96,0xCF}, {0x96,0xD0}, {0x96,0xD1}, {0x96,0xD2},
- {0x96,0xD3}, {0x96,0xD4}, {0x96,0xD5}, {0x96,0xD6},
- {0x96,0xD7}, {0x96,0xD8}, {0x96,0xD9}, {0x96,0xDA},
- {0x96,0xDB}, {0x96,0xDC}, {0x96,0xDD}, {0x96,0xDE},
- {0x96,0xDF}, {0x96,0xE0}, {0x96,0xE1}, {0x96,0xE2},
- {0x96,0xE3}, {0x96,0xE4}, {0x96,0xE5}, {0x96,0xE6},
- {0x96,0xE7}, {0x96,0xE8}, {0x96,0xE9}, {0x96,0xEA},
- {0x96,0xEB}, {0x96,0xEC}, {0x96,0xEE}, {0x96,0xEE},
- {0x96,0xEF}, {0x96,0xF0}, {0x96,0xF1}, {0x96,0xF2},
- {0x96,0xF3}, {0x96,0xF4}, {0x96,0xF5}, {0x96,0xF6},
- {0x96,0xF7}, {0x96,0xF8}, {0x96,0xF9}, {0x96,0xFA},
- {0x96,0xFB}, {0xE9,0x59}, {0x96,0xFD}, {0x96,0xFE},
- {0x97,0x40}, {0x97,0x41}, {0x97,0x42}, {0x97,0x43},
- {0x97,0x44}, {0x97,0x45}, {0x97,0x46}, {0x97,0x47},
- {0x97,0x48}, {0x97,0x49}, {0x97,0x4A}, {0x97,0x4B},
- {0x97,0x4C}, {0x97,0x4D}, {0x97,0x4E}, {0x97,0x4F},
- {0x97,0x50}, {0x97,0x51}, {0x97,0x52}, {0x97,0x53},
- {0x97,0x54}, {0x97,0x55}, {0x97,0x56}, {0x97,0x57},
- {0x97,0x58}, {0x97,0x59}, {0x97,0x5A}, {0x97,0x5B},
- {0x97,0x5C}, {0x97,0x5D}, {0x97,0x5E}, {0x97,0x5F},
- {0x97,0x60}, {0x97,0x61}, {0x97,0x62}, {0x97,0x63},
- {0x97,0x64}, {0x97,0x65}, {0x97,0x66}, {0x97,0x67},
- {0x97,0x68}, {0x97,0x69}, {0x97,0x6A}, {0x97,0x6B},
- {0x97,0x6C}, {0x97,0x6D}, {0x97,0x6E}, {0x97,0x6F},
- {0x97,0x70}, {0x97,0x71}, {0x97,0x72}, {0x97,0x73},
- {0x97,0x74}, {0x97,0x75}, {0x97,0x76}, {0x97,0x77},
- {0x97,0x78}, {0x97,0x79}, {0x97,0x7A}, {0x97,0x7B},
- {0x97,0x7C}, {0x97,0x7D}, {0x97,0x7E}, {0x97,0xA1},
- {0x97,0xA2}, {0x97,0xA3}, {0x97,0xA4}, {0x97,0xA5},
- {0x97,0xA6}, {0x97,0xA7}, {0x97,0xA8}, {0x97,0xA9},
- {0x97,0xAA}, {0x97,0xAB}, {0x97,0xAC}, {0x97,0xAD},
- {0x97,0xAE}, {0x97,0xAF}, {0x97,0xB0}, {0x97,0xB1},
- {0x97,0xB2}, {0x97,0xB3}, {0x97,0xB4}, {0x97,0xB5},
- {0x97,0xB6}, {0x97,0xB7}, {0x97,0xB8}, {0x97,0xB9},
- {0x97,0xBA}, {0x97,0xBB}, {0x97,0xBC}, {0x97,0xBD},
- {0x97,0xBE}, {0x97,0xBF}, {0x97,0xC0}, {0x97,0xC1},
- {0x97,0xC2}, {0x97,0xC3}, {0x97,0xC4}, {0x97,0xC5},
- {0x97,0xC6}, {0x97,0xC7}, {0x97,0xC8}, {0x97,0xC9},
- {0x97,0xCA}, {0x97,0xCB}, {0x97,0xCC}, {0x97,0xCD},
- {0x97,0xCE}, {0x97,0xCF}, {0x97,0xD0}, {0x97,0xD1},
- {0x97,0xD2}, {0x97,0xD3}, {0x97,0xD4}, {0x97,0xD5},
- {0x97,0xD6}, {0x97,0xD7}, {0x97,0xD8}, {0x97,0xD9},
- {0x97,0xDA}, {0x97,0xDB}, {0x97,0xDC}, {0x97,0xDD},
- {0x97,0xDE}, {0x97,0xDF}, {0x97,0xE0}, {0x97,0xE1},
- {0x97,0xE2}, {0x97,0xE3}, {0x97,0xE4}, {0x97,0xE5},
- {0x97,0xE6}, {0x97,0xE7}, {0x97,0xE8}, {0x97,0xE9},
- {0x97,0xEA}, {0x97,0xEB}, {0x97,0xEC}, {0x97,0xED},
- {0x97,0xEE}, {0x97,0xEF}, {0x97,0xF0}, {0x97,0xF1},
- {0x97,0xF2}, {0x97,0xF3}, {0x97,0xF4}, {0x97,0xF5},
- {0x97,0xF6}, {0x97,0xF7}, {0x97,0xF8}, {0x97,0xF9},
- {0x97,0xFA}, {0x97,0xFB}, {0x97,0xFC}, {0x97,0xFD},
- {0x97,0xFE}, {0x98,0x40}, {0x98,0x41}, {0x98,0x42},
- {0x98,0x43}, {0x98,0x44}, {0x98,0x45}, {0x98,0x46},
- {0x98,0x47}, {0x98,0x48}, {0x98,0x49}, {0x98,0x4A},
- {0x98,0x4B}, {0x98,0x4C}, {0x98,0x4D}, {0x98,0x4E},
- {0x98,0x4F}, {0x98,0x50}, {0x98,0x51}, {0x98,0x52},
- {0x98,0x53}, {0x98,0x54}, {0x98,0x55}, {0x98,0x56},
- {0x98,0x57}, {0x98,0x58}, {0x98,0x59}, {0x98,0x5A},
- {0x98,0x5B}, {0x98,0x5C}, {0x98,0x5D}, {0x98,0x5E},
- {0x98,0x5F}, {0x98,0x60}, {0x98,0x61}, {0x98,0x62},
- {0x98,0x63}, {0x98,0x64}, {0x98,0x65}, {0x98,0x66},
- {0x98,0x67}, {0x98,0x68}, {0x98,0x69}, {0x98,0x6A},
- {0x98,0x6B}, {0x98,0x6C}, {0x98,0x6D}, {0x98,0x6E},
- {0x98,0x6F}, {0x98,0x70}, {0x98,0x71}, {0x98,0x72},
- {0x98,0x73}, {0x98,0x74}, {0x98,0x75}, {0x98,0x76},
- {0x98,0x77}, {0x98,0x78}, {0x98,0x79}, {0x98,0x7A},
- {0x98,0x7B}, {0x98,0x7C}, {0x98,0x7D}, {0x98,0x7E},
- {0x98,0xA1}, {0x98,0xA2}, {0x98,0xA3}, {0x98,0xA4},
- {0x98,0xA5}, {0x98,0xA6}, {0x98,0xA7}, {0x98,0xA8},
- {0x98,0xA9}, {0x98,0xAA}, {0x98,0xAB}, {0x98,0xAC},
- {0x98,0xAD}, {0x98,0xAE}, {0x98,0xAF}, {0x98,0xB0},
- {0x98,0xB1}, {0x98,0xB2}, {0x98,0xB3}, {0x98,0xB4},
- {0x98,0xB5}, {0x98,0xB6}, {0x98,0xB7}, {0x98,0xB8},
- {0x98,0xB9}, {0x98,0xBA}, {0x98,0xBB}, {0x98,0xBC},
- {0x98,0xBD}, {0x98,0xBE}, {0x98,0xBF}, {0x98,0xC0},
- {0x98,0xC1}, {0x98,0xC2}, {0x98,0xC3}, {0x98,0xC4},
- {0x98,0xC5}, {0x98,0xC6}, {0x98,0xC7}, {0x98,0xC8},
- {0x98,0xC9}, {0x98,0xCA}, {0x98,0xCB}, {0x98,0xCC},
- {0x98,0xCD}, {0x98,0xCE}, {0x98,0xCF}, {0x98,0xD0},
- {0x98,0xD1}, {0x98,0xD2}, {0x98,0xD3}, {0x98,0xD4},
- {0x98,0xD5}, {0x98,0xD6}, {0x98,0xD7}, {0x98,0xD8},
- {0x98,0xD9}, {0x98,0xDA}, {0x98,0xDB}, {0x98,0xDC},
- {0x98,0xDD}, {0x98,0xDE}, {0x98,0xDF}, {0x98,0xE0},
- {0x98,0xE1}, {0x98,0xE2}, {0x98,0xE3}, {0x98,0xE4},
- {0x98,0xE5}, {0x98,0xE6}, {0x98,0xE7}, {0x98,0xE8},
- {0x98,0xE9}, {0x98,0xEA}, {0x98,0xEB}, {0x98,0xEC},
- {0x98,0xED}, {0x98,0xEE}, {0x98,0xEF}, {0x98,0xF0},
- {0x98,0xF1}, {0x98,0xF2}, {0x98,0xF3}, {0x98,0xF4},
- {0x98,0xF5}, {0x98,0xF6}, {0x98,0xF7}, {0x98,0xF8},
- {0x98,0xF9}, {0x98,0xFA}, {0x98,0xFB}, {0x98,0xFC},
- {0x98,0xFD}, {0x98,0xFE}, {0x99,0x40}, {0x99,0x41},
- {0x99,0x42}, {0x99,0x43}, {0x99,0x44}, {0x99,0x45},
- {0x99,0x46}, {0x99,0x47}, {0x99,0x48}, {0x99,0x49},
- {0x99,0x4A}, {0x99,0x4B}, {0x99,0x4C}, {0x99,0x4D},
- {0x99,0x4E}, {0x99,0x4F}, {0x99,0x50}, {0x99,0x51},
- {0x99,0x52}, {0x99,0x53}, {0x99,0x54}, {0x99,0x55},
- {0x99,0x56}, {0x99,0x57}, {0x99,0x58}, {0x99,0x59},
- {0x99,0x5A}, {0x99,0x5B}, {0x99,0x5C}, {0x99,0x5D},
- {0x99,0x5E}, {0x99,0x5F}, {0x99,0x60}, {0x99,0x61},
- {0x99,0x62}, {0x99,0x63}, {0x99,0x64}, {0x99,0x65},
- {0x99,0x66}, {0x99,0x67}, {0x99,0x68}, {0x99,0x69},
- {0x99,0x6A}, {0x99,0x6B}, {0x99,0x6C}, {0x99,0x6D},
- {0x99,0x6E}, {0x99,0x6F}, {0x99,0x70}, {0x99,0x71},
- {0x99,0x72}, {0x99,0x73}, {0x99,0x74}, {0x99,0x75},
- {0x99,0x76}, {0x99,0x77}, {0x99,0x78}, {0x99,0x79},
- {0x99,0x7A}, {0x99,0x7B}, {0x99,0x7C}, {0x99,0x7D},
- {0x99,0x7E}, {0x99,0xA1}, {0x99,0xA2}, {0x99,0xA3},
- {0x99,0xA4}, {0x99,0xA5}, {0x99,0xA6}, {0x99,0xA7},
- {0x99,0xA8}, {0x99,0xA9}, {0x99,0xAA}, {0x99,0xAB},
- {0x99,0xAC}, {0x99,0xAD}, {0x99,0xAE}, {0x99,0xAF},
- {0x99,0xB0}, {0x99,0xB1}, {0x99,0xB2}, {0x99,0xB3},
- {0x99,0xB4}, {0x99,0xB5}, {0x99,0xB6}, {0x99,0xB7},
- {0x99,0xB8}, {0x99,0xB9}, {0x99,0xBA}, {0x99,0xBB},
- {0x99,0xBC}, {0x99,0xBD}, {0x99,0xBE}, {0x99,0xBF},
- {0x99,0xC0}, {0x99,0xC1}, {0x99,0xC2}, {0x99,0xC3},
- {0x99,0xC4}, {0x99,0xC5}, {0x99,0xC6}, {0x99,0xC7},
- {0x99,0xC8}, {0x99,0xC9}, {0x99,0xCA}, {0x99,0xCB},
- {0x99,0xCC}, {0x99,0xCD}, {0x99,0xCE}, {0x99,0xCF},
- {0x99,0xD0}, {0x99,0xD1}, {0x99,0xD2}, {0x99,0xD3},
- {0x99,0xD4}, {0x99,0xD5}, {0x99,0xD6}, {0x99,0xD7},
- {0x99,0xD8}, {0x99,0xD9}, {0x99,0xDA}, {0x99,0xDB},
- {0x99,0xDC}, {0x99,0xDD}, {0x99,0xDE}, {0x99,0xDF},
- {0x99,0xE0}, {0x99,0xE1}, {0x99,0xE2}, {0x99,0xE3},
- {0x99,0xE4}, {0x99,0xE5}, {0x99,0xE6}, {0x99,0xE7},
- {0x99,0xE8}, {0x99,0xE9}, {0x99,0xEA}, {0x99,0xEB},
- {0x99,0xEC}, {0x99,0xED}, {0x99,0xEE}, {0x99,0xEF},
- {0x99,0xF0}, {0x99,0xF1}, {0x99,0xF2}, {0x99,0xF3},
- {0x99,0xF4}, {0x99,0xF5}, {0x99,0xF6}, {0x99,0xF7},
- {0x99,0xF8}, {0x99,0xF9}, {0x99,0xFA}, {0x99,0xFB},
- {0x99,0xFC}, {0x99,0xFD}, {0x99,0xFE}, {0x9A,0x40},
- {0x9A,0x41}, {0x9A,0x42}, {0x9A,0x43}, {0x9A,0x44},
- {0x9A,0x45}, {0x9A,0x46}, {0x9A,0x47}, {0x9A,0x48},
- {0x9A,0x49}, {0x9A,0x4A}, {0x9A,0x4B}, {0x9A,0x4C},
- {0x9A,0x4D}, {0x9A,0x4E}, {0x9A,0x4F}, {0x9A,0x50},
- {0x9A,0x51}, {0x9A,0x52}, {0x9A,0x53}, {0x9A,0x54},
- {0x9A,0x55}, {0x9A,0x56}, {0x9A,0x57}, {0x9A,0x58},
- {0x9A,0x59}, {0x9A,0x5A}, {0x9A,0x5B}, {0x9A,0x5C},
- {0x9A,0x5D}, {0x9A,0x5E}, {0x9A,0x5F}, {0x9A,0x60},
- {0x9A,0x61}, {0x9A,0x62}, {0x9A,0x63}, {0x9A,0x64},
- {0x9A,0x65}, {0x9A,0x66}, {0x9A,0x67}, {0x9A,0x68},
- {0x9A,0x69}, {0x9A,0x6A}, {0x9A,0x6B}, {0x9A,0x6C},
- {0x9A,0x6D}, {0x9A,0x6E}, {0x9A,0x6F}, {0x9A,0x70},
- {0x9A,0x71}, {0x9A,0x72}, {0x9A,0x73}, {0x9A,0x74},
- {0x9A,0x75}, {0x9A,0x76}, {0x9A,0x77}, {0x9A,0x78},
- {0x9A,0x79}, {0x9A,0x7A}, {0x9A,0x7B}, {0x9A,0x7C},
- {0x9A,0x7D}, {0x9A,0x7E}, {0x9A,0xA1}, {0x9A,0xA2},
- {0x9A,0xA3}, {0x9A,0xA4}, {0x9A,0xA5}, {0x9A,0xA6},
- {0x9A,0xA7}, {0x9A,0xA8}, {0x9A,0xA9}, {0x9A,0xAA},
- {0x9A,0xAB}, {0x9A,0xAC}, {0x9A,0xAD}, {0x9A,0xAE},
- {0x9A,0xAF}, {0x9A,0xB0}, {0x9A,0xB1}, {0x9A,0xB2},
- {0x9A,0xB3}, {0x9A,0xB4}, {0x9A,0xB5}, {0x9A,0xB6},
- {0x9A,0xB7}, {0x9A,0xB8}, {0x9A,0xB9}, {0x9A,0xBA},
- {0x9A,0xBB}, {0x9A,0xBC}, {0x9A,0xBD}, {0x9A,0xBE},
- {0x9A,0xBF}, {0x9A,0xC0}, {0x9A,0xC1}, {0x9A,0xC2},
- {0x9A,0xC3}, {0x9A,0xC4}, {0x9A,0xC5}, {0x9A,0xC6},
- {0x9A,0xC7}, {0x9A,0xC8}, {0x9A,0xC9}, {0x9A,0xCA},
- {0x9A,0xCB}, {0x9A,0xCC}, {0x9A,0xCD}, {0x9A,0xCE},
- {0x9A,0xCF}, {0x9A,0xD0}, {0x9A,0xD1}, {0x9A,0xD2},
- {0x9A,0xD3}, {0x9A,0xD4}, {0x9A,0xD5}, {0x9A,0xD6},
- {0x9A,0xD7}, {0x9A,0xD8}, {0x9A,0xD9}, {0x9A,0xDA},
- {0x9A,0xDB}, {0x9A,0xDC}, {0x9A,0xDD}, {0x9A,0xDE},
- {0x9A,0xDF}, {0x9A,0xE0}, {0x9A,0xE1}, {0x9A,0xE2},
- {0x9A,0xE3}, {0x9A,0xE4}, {0x9A,0xE5}, {0x9A,0xE6},
- {0x9A,0xE7}, {0x9A,0xE8}, {0x9A,0xE9}, {0x9A,0xEA},
- {0x9A,0xEB}, {0x9A,0xEC}, {0x9A,0xED}, {0x9A,0xEE},
- {0x9A,0xEF}, {0x9A,0xF0}, {0x9A,0xF1}, {0x9A,0xF2},
- {0x9A,0xF3}, {0x9A,0xF4}, {0x9A,0xF5}, {0x9A,0xF6},
- {0x9A,0xF7}, {0x9A,0xF8}, {0x9A,0xF9}, {0x9A,0xFA},
- {0x9A,0xFB}, {0x9A,0xFC}, {0x9A,0xFD}, {0x9A,0xFE},
- {0x9B,0x40}, {0x9B,0x41}, {0x9B,0x42}, {0x9B,0x43},
- {0x9B,0x44}, {0x9B,0x45}, {0x9B,0x46}, {0x9B,0x47},
- {0x9B,0x48}, {0x9B,0x49}, {0x9B,0x4A}, {0x9B,0x4B},
- {0x9B,0x4C}, {0x9B,0x4D}, {0x9B,0x4E}, {0x9B,0x4F},
- {0x9B,0x50}, {0x9B,0x51}, {0x9B,0x52}, {0x9B,0x53},
- {0x9B,0x54}, {0x9B,0x55}, {0x9B,0x56}, {0x9B,0x57},
- {0x9B,0x58}, {0x9B,0x59}, {0x9B,0x5A}, {0x9B,0x5B},
- {0x9B,0x5C}, {0x9B,0x5D}, {0x9B,0x5E}, {0x9B,0x5F},
- {0x9B,0x60}, {0x9B,0x61}, {0x9B,0x62}, {0x9B,0x63},
- {0x9B,0x64}, {0x9B,0x65}, {0x9B,0x66}, {0x9B,0x67},
- {0x9B,0x68}, {0x9B,0x69}, {0x9B,0x6A}, {0x9B,0x6B},
- {0x9B,0x6C}, {0x9B,0x6D}, {0x9B,0x6E}, {0x9B,0x6F},
- {0x9B,0x70}, {0x9B,0x71}, {0x9B,0x72}, {0x9B,0x73},
- {0x9B,0x74}, {0x9B,0x75}, {0xEF,0xF9}, {0x9B,0x77},
- {0xC5,0xF7}, {0x9B,0x79}, {0x9B,0x7A}, {0xF5,0xE8},
- {0x9B,0x7C}, {0x9B,0x7D}, {0x9B,0x7E}, {0x9B,0xA1},
- {0x9B,0xA2}, {0x9B,0xA3}, {0x9B,0xA4}, {0x9B,0xA5},
- {0x9B,0xA6}, {0x9B,0xA7}, {0x9B,0xA8}, {0x9B,0xA9},
- {0x9B,0xAA}, {0x9B,0xAB}, {0x9B,0xAC}, {0x9B,0xAD},
- {0x9B,0xAE}, {0x9B,0xAF}, {0x9B,0xB0}, {0x9B,0xB1},
- {0x9B,0xB2}, {0x9B,0xB3}, {0x9B,0xB4}, {0x9B,0xB5},
- {0x9B,0xB6}, {0x9B,0xB7}, {0x9B,0xB8}, {0x9B,0xB9},
- {0x9B,0xBA}, {0x9B,0xBB}, {0x9B,0xBC}, {0x9B,0xBD},
- {0x9B,0xBE}, {0x9B,0xBF}, {0x9B,0xC0}, {0x9B,0xC1},
- {0x9B,0xC2}, {0x9B,0xC3}, {0x9B,0xC4}, {0x9B,0xC5},
- {0xE8,0xCD}, {0x9B,0xC7}, {0x9B,0xC8}, {0x9B,0xC9},
- {0x9B,0xCA}, {0x9B,0xCB}, {0x9B,0xCC}, {0x9B,0xCD},
- {0x9B,0xCE}, {0x9B,0xCF}, {0x9B,0xD0}, {0x9B,0xD1},
- {0x9B,0xD2}, {0x9B,0xD3}, {0x9B,0xD4}, {0x9B,0xD5},
- {0x9B,0xD6}, {0x9B,0xD7}, {0x9B,0xD8}, {0x9B,0xD9},
- {0x9B,0xDA}, {0x9B,0xDB}, {0x9B,0xDC}, {0x9B,0xDD},
- {0xD0,0xC0}, {0x9B,0xDF}, {0x9B,0xE0}, {0x9B,0xE1},
- {0x9B,0xE2}, {0x9B,0xE3}, {0x9B,0xE4}, {0x9B,0xE5},
- {0x9B,0xE6}, {0x9B,0xE7}, {0x9B,0xE8}, {0x9B,0xE9},
- {0x9B,0xEA}, {0x9B,0xEB}, {0xFD,0x64}, {0x9B,0xED},
- {0x9B,0xEE}, {0x9B,0xEF}, {0x9B,0xF0}, {0x9B,0xF1},
- {0x9B,0xF2}, {0x9B,0xF3}, {0x9B,0xF4}, {0x9B,0xF5},
- {0xBF,0x47}, {0x9B,0xF7}, {0x9B,0xF8}, {0x9B,0xF9},
- {0x9B,0xFA}, {0x9B,0xFB}, {0x9B,0xFC}, {0x9B,0xFD},
- {0x9B,0xFE}, {0x9C,0x40}, {0x9C,0x41}, {0xEB,0xC9},
- {0x9C,0x43}, {0x9C,0x44}, {0x9C,0x45}, {0x9C,0x46},
- {0x9C,0x47}, {0x9C,0x48}, {0x9C,0x49}, {0x9C,0x4A},
- {0x9C,0x4B}, {0x9C,0x4C}, {0x9C,0x4D}, {0x9C,0x4E},
- {0x9C,0x4F}, {0x9C,0x50}, {0x9C,0x51}, {0x9C,0x52},
- {0xCD,0xE7}, {0x9C,0x54}, {0x9C,0x55}, {0x9C,0x56},
- {0x9C,0x57}, {0x9C,0x58}, {0x9C,0x59}, {0x9C,0x5A},
- {0x9C,0x5B}, {0x9C,0x5C}, {0x9C,0x5D}, {0x9C,0x5E},
- {0x9C,0x5F}, {0x9C,0x60}, {0x9C,0x61}, {0xC0,0xE7},
- {0x9C,0x63}, {0x9C,0x64}, {0x9C,0x65}, {0x9C,0x66},
- {0x9C,0x67}, {0xDC,0x52}, {0x9C,0x69}, {0x9C,0x6A},
- {0xF8,0x6D}, {0x9C,0x6C}, {0x9C,0x6D}, {0x9C,0x6E},
- {0x9C,0x6F}, {0x9C,0x70}, {0x9C,0x71}, {0x9C,0x72},
- {0x9C,0x73}, {0x9C,0x74}, {0x9C,0x75}, {0x9C,0x76},
- {0xDB,0x5D}, {0x9C,0x78}, {0x9C,0x79}, {0x9C,0x7A},
- {0x9C,0x7B}, {0x9C,0x7C}, {0x9C,0x7D}, {0x9C,0x7E},
- {0x9C,0xA1}, {0x9C,0xA2}, {0x9C,0xA3}, {0x9C,0xA4},
- {0x9C,0xA5}, {0x9C,0xA6}, {0x9C,0xA7}, {0x9C,0xA8},
- {0x9C,0xA9}, {0x9C,0xAA}, {0x9C,0xAB}, {0x9C,0xAC},
- {0x9C,0xAD}, {0x9C,0xAE}, {0x9C,0xAF}, {0x9C,0xB0},
- {0x9C,0xB1}, {0x9C,0xB2}, {0x9C,0xB3}, {0x9C,0xB4},
- {0x9C,0xB5}, {0x9C,0xB6}, {0x9C,0xB7}, {0x9C,0xB8},
- {0x9C,0xB9}, {0x9C,0xBA}, {0x9C,0xBB}, {0xC9,0x5C},
- {0xAF,0xB0}, {0x9C,0xBE}, {0x9C,0xBF}, {0x9C,0xC0},
- {0x9C,0xC1}, {0x9C,0xC2}, {0x9C,0xC3}, {0x9C,0xC4},
- {0x9C,0xC5}, {0x9C,0xC6}, {0x9C,0xC7}, {0x9C,0xC8},
- {0x9C,0xC9}, {0x9C,0xCA}, {0x9C,0xCB}, {0x9C,0xCC},
- {0x9C,0xCD}, {0x9C,0xCE}, {0x9C,0xCF}, {0xD4,0xD1},
- {0x9C,0xD1}, {0x9C,0xD2}, {0x9C,0xD3}, {0x9C,0xD4},
- {0x9C,0xD5}, {0x9C,0xD6}, {0x9C,0xD7}, {0x9C,0xD8},
- {0x9C,0xD9}, {0x9C,0xDA}, {0x9C,0xDB}, {0x9C,0xDC},
- {0x9C,0xDD}, {0x9C,0xDE}, {0x9C,0xDF}, {0x9C,0xE0},
- {0x9C,0xE1}, {0x9C,0xE2}, {0x9C,0xE3}, {0x9C,0xE4},
- {0x9C,0xE5}, {0x9C,0xE6}, {0x9C,0xE7}, {0x9C,0xE8},
- {0x9C,0xE9}, {0x9C,0xEA}, {0x9C,0xEB}, {0x9C,0xEC},
- {0x9C,0xED}, {0x9C,0xEE}, {0x9C,0xEF}, {0x9C,0xF0},
- {0x9C,0xF1}, {0x9C,0xF2}, {0x9C,0xF3}, {0x9C,0xF4},
- {0x9C,0xF5}, {0x9C,0xF6}, {0x9C,0xF7}, {0x9C,0xF8},
- {0x9C,0xF9}, {0x9C,0xFA}, {0x9C,0xFB}, {0x9C,0xFC},
- {0x9C,0xFD}, {0x9C,0xFE}, {0x9D,0x40}, {0x9D,0x41},
- {0x9D,0x42}, {0x9D,0x43}, {0x9D,0x44}, {0x9D,0x45},
- {0x9D,0x46}, {0x9D,0x47}, {0x9D,0x48}, {0x9D,0x49},
- {0x9D,0x4A}, {0x9D,0x4B}, {0x9D,0x4C}, {0x9D,0x4D},
- {0x9D,0x4E}, {0x9D,0x4F}, {0x9D,0x50}, {0x9D,0x51},
- {0x9D,0x52}, {0x9D,0x53}, {0x9D,0x54}, {0x9D,0x55},
- {0x9D,0x56}, {0xE0,0x7C}, {0x9D,0x58}, {0x9D,0x59},
- {0xB5,0xAE}, {0x9D,0x5B}, {0x9D,0x5C}, {0x9D,0x5D},
- {0x9D,0x5E}, {0x9D,0x5F}, {0x9D,0x60}, {0x9D,0x61},
- {0x9D,0x62}, {0x9D,0x63}, {0x9D,0x64}, {0x9D,0x65},
- {0x9D,0x66}, {0x9D,0x67}, {0x9D,0x68}, {0x9D,0x69},
- {0x9D,0x6A}, {0x9D,0x6B}, {0x9D,0x6C}, {0x9D,0x6D},
- {0x9D,0x6E}, {0x9D,0x6F}, {0x9D,0x70}, {0x9D,0x71},
- {0x9D,0x72}, {0x9D,0x73}, {0x9D,0x74}, {0x9D,0x75},
- {0x9D,0x76}, {0x9D,0x77}, {0x9D,0x78}, {0x9D,0x79},
- {0x9D,0x7A}, {0x9D,0x7B}, {0x9D,0x7C}, {0x9D,0x7D},
- {0x9D,0x7E}, {0x9D,0xA1}, {0x9D,0xA2}, {0x9D,0xA3},
- {0x9D,0xA4}, {0x9D,0xA5}, {0x9D,0xA6}, {0x9D,0xA7},
- {0x9D,0xA8}, {0x9D,0xA9}, {0x9D,0xAA}, {0x9D,0xAB},
- {0x9D,0xAC}, {0x9D,0xAD}, {0x9D,0xAE}, {0x9D,0xAF},
- {0x9D,0xB0}, {0x9D,0xB1}, {0x9D,0xB2}, {0x9D,0xB3},
- {0x9D,0xB4}, {0x9D,0xB5}, {0x9D,0xB6}, {0x9D,0xB7},
- {0x9D,0xB8}, {0x9D,0xB9}, {0x9D,0xBA}, {0x9D,0xBB},
- {0x9D,0xBC}, {0x9D,0xBD}, {0x9D,0xBE}, {0x9D,0xBF},
- {0x9D,0xC0}, {0x9D,0xC1}, {0x9D,0xC2}, {0x9D,0xC3},
- {0xA9,0xE4}, {0x9D,0xC5}, {0x9D,0xC6}, {0x9D,0xC7},
- {0x9D,0xC8}, {0x9D,0xC9}, {0x9D,0xCA}, {0x9D,0xCB},
- {0x9D,0xCC}, {0x9D,0xCD}, {0x9D,0xCE}, {0x9D,0xCF},
- {0x9D,0xD0}, {0x9D,0xD1}, {0x9D,0xD2}, {0x9D,0xD3},
- {0x9D,0xD4}, {0x9D,0xD5}, {0x9D,0xD6}, {0x9D,0xD7},
- {0x9D,0xD8}, {0x9D,0xD9}, {0x9D,0xDA}, {0x9D,0xDB},
- {0x9D,0xDC}, {0x9D,0xDD}, {0x9D,0xDE}, {0x9D,0xDF},
- {0x9D,0xE0}, {0x9D,0xE1}, {0x9D,0xE2}, {0x9D,0xE3},
- {0x9D,0xE4}, {0x9D,0xE5}, {0x9D,0xE6}, {0x9D,0xE7},
- {0x9D,0xE8}, {0x9D,0xE9}, {0x9D,0xEA}, {0x9D,0xEB},
- {0x9D,0xEC}, {0x9D,0xED}, {0x9D,0xEE}, {0x9D,0xEF},
- {0x9D,0xF0}, {0x9D,0xF1}, {0x9D,0xF2}, {0x9D,0xF3},
- {0x9D,0xF4}, {0x9D,0xF5}, {0x9D,0xF6}, {0x9D,0xF7},
- {0x9D,0xF8}, {0x9D,0xF9}, {0x9D,0xFA}, {0x9D,0xFB},
- {0x9D,0xFC}, {0x9D,0xFD}, {0x9D,0xFE}, {0x9E,0x40},
- {0x9E,0x41}, {0x9E,0x42}, {0x9E,0x43}, {0x9E,0x44},
- {0x9E,0x45}, {0x9E,0x46}, {0x9E,0x47}, {0x9E,0x48},
- {0x9E,0x49}, {0x9E,0x4A}, {0x9E,0x4B}, {0x9E,0x4C},
- {0x9E,0x4D}, {0x9E,0x4E}, {0x9E,0x4F}, {0x9E,0x50},
- {0x9E,0x51}, {0x9E,0x52}, {0x9E,0x53}, {0x9E,0x54},
- {0x9E,0x55}, {0x9E,0x56}, {0x9E,0x57}, {0x9E,0x58},
- {0x9E,0x59}, {0x9E,0x5A}, {0x9E,0x5B}, {0x9E,0x5C},
- {0x9E,0x5D}, {0x9E,0x5E}, {0x9E,0x5F}, {0x9E,0x60},
- {0x9E,0x61}, {0x9E,0x62}, {0x9E,0x63}, {0x9E,0x64},
- {0x9E,0x65}, {0x9E,0x66}, {0x9E,0x67}, {0x9E,0x68},
- {0x9E,0x69}, {0x9E,0x6A}, {0x9E,0x6B}, {0x9E,0x6C},
- {0x9E,0x6D}, {0x9E,0x6E}, {0x9E,0x6F}, {0x9E,0x70},
- {0x9E,0x71}, {0x9E,0x72}, {0x9E,0x73}, {0x9E,0x74},
- {0x9E,0x75}, {0x9E,0x76}, {0x9E,0x77}, {0x9E,0x78},
- {0x9E,0x79}, {0x9E,0x7A}, {0x9E,0x7B}, {0x9E,0x7C},
- {0x9E,0x7D}, {0x9E,0x7E}, {0x9E,0xA1}, {0x9E,0xA2},
- {0x9E,0xA3}, {0x9E,0xA4}, {0x9E,0xA5}, {0x9E,0xA6},
- {0x9E,0xA7}, {0x9E,0xA8}, {0xAB,0xEC}, {0x9E,0xAA},
- {0x9E,0xAB}, {0x9E,0xAC}, {0x9E,0xAD}, {0x9E,0xAE},
- {0x9E,0xAF}, {0x9E,0xB0}, {0x9E,0xB1}, {0x9E,0xB2},
- {0x9E,0xB3}, {0x9E,0xB4}, {0x9E,0xB5}, {0x9E,0xB6},
- {0x9E,0xB7}, {0x9E,0xB8}, {0x9E,0xB9}, {0x9E,0xBA},
- {0x9E,0xBB}, {0x9E,0xBC}, {0x9E,0xBD}, {0x9E,0xBE},
- {0x9E,0xBF}, {0x9E,0xC0}, {0x9E,0xC1}, {0x9E,0xC2},
- {0x9E,0xC3}, {0x9E,0xC4}, {0x9E,0xC5}, {0x9E,0xC6},
- {0x9E,0xC7}, {0x9E,0xC8}, {0x9E,0xC9}, {0x9E,0xCA},
- {0x9E,0xCB}, {0x9E,0xCC}, {0x9E,0xCD}, {0x9E,0xCE},
- {0x9E,0xCF}, {0x9E,0xD0}, {0x9E,0xD1}, {0x9E,0xD2},
- {0x9E,0xD3}, {0x9E,0xD4}, {0x9E,0xD5}, {0x9E,0xD6},
- {0x9E,0xD7}, {0x9E,0xD8}, {0x9E,0xD9}, {0x9E,0xDA},
- {0x9E,0xDB}, {0x9E,0xDC}, {0x9E,0xDD}, {0x9E,0xDE},
- {0x9E,0xDF}, {0x9E,0xE0}, {0x9E,0xE1}, {0x9E,0xE2},
- {0x9E,0xE3}, {0x9E,0xE4}, {0x9E,0xE5}, {0x9E,0xE6},
- {0x9E,0xE7}, {0x9E,0xE8}, {0x9E,0xE9}, {0x9E,0xEA},
- {0x9E,0xEB}, {0x9E,0xEC}, {0x9E,0xED}, {0x9E,0xEE},
- {0xDE,0xCD}, {0x9E,0xF0}, {0x9E,0xF1}, {0x9E,0xF2},
- {0x9E,0xF3}, {0x9E,0xF4}, {0x9E,0xF5}, {0x9E,0xF6},
- {0x9E,0xF7}, {0x9E,0xF8}, {0x9E,0xF9}, {0x9E,0xFA},
- {0x9E,0xFB}, {0x9E,0xFC}, {0xC9,0xFC}, {0x9E,0xFE},
- {0x9F,0x40}, {0x9F,0x41}, {0x9F,0x42}, {0x9F,0x43},
- {0x9F,0x44}, {0x9F,0x45}, {0x9F,0x46}, {0x9F,0x47},
- {0x9F,0x48}, {0x9F,0x49}, {0x9F,0x4A}, {0x9F,0x4B},
- {0x9F,0x4C}, {0x9F,0x4D}, {0x9F,0x4E}, {0x9F,0x4F},
- {0x9F,0x50}, {0x9F,0x51}, {0x9F,0x52}, {0x9F,0x53},
- {0x9F,0x54}, {0x9F,0x55}, {0x9F,0x56}, {0x9F,0x57},
- {0x9F,0x58}, {0x9F,0x59}, {0x9F,0x5A}, {0x9F,0x5B},
- {0x9F,0x5C}, {0x9F,0x5D}, {0x9F,0x5E}, {0x9F,0x5F},
- {0xF9,0xC4}, {0x9F,0x61}, {0x9F,0x62}, {0x9F,0x63},
- {0x9F,0x64}, {0x9F,0x65}, {0x91,0xBE}, {0x9F,0x67},
- {0x9F,0x68}, {0x9F,0x69}, {0x9F,0x6A}, {0x9F,0x6B},
- {0x9F,0x6C}, {0x9F,0x6D}, {0x9F,0x6E}, {0x9F,0x6F},
- {0x9F,0x70}, {0x9F,0x71}, {0x9F,0x72}, {0x9F,0x73},
- {0x9F,0x74}, {0x9F,0x75}, {0x9F,0x76}, {0x9F,0x77},
- {0x9F,0x78}, {0x9F,0x79}, {0x9F,0x7A}, {0x9F,0x7B},
- {0x9F,0x7C}, {0x9F,0x7D}, {0x9F,0x7E}, {0x9F,0xA1},
- {0x9F,0xA2}, {0x9F,0xA3}, {0x9F,0xA4}, {0x9F,0xA5},
- {0x9F,0xA6}, {0x9F,0xA7}, {0x9F,0xA8}, {0x9F,0xA9},
- {0x9F,0xAA}, {0x9F,0xAB}, {0x9F,0xAC}, {0x9F,0xAD},
- {0x9F,0xAE}, {0x9F,0xAF}, {0x9F,0xB0}, {0x9F,0xB1},
- {0x9F,0xB2}, {0x9F,0xB3}, {0x9F,0xB4}, {0x9F,0xB5},
- {0x9F,0xB6}, {0x9F,0xB7}, {0x9F,0xB8}, {0x9F,0xB9},
- {0x9F,0xBA}, {0x9F,0xBB}, {0x9F,0xBC}, {0x9F,0xBD},
- {0x9F,0xBE}, {0x9F,0xBF}, {0x9F,0xC0}, {0x9F,0xC1},
- {0x9F,0xC2}, {0x9F,0xC3}, {0x9F,0xC4}, {0x9F,0xC5},
- {0x9F,0xC6}, {0x9F,0xC7}, {0x9F,0xC8}, {0x9F,0xC9},
- {0x9F,0xCA}, {0xB9,0xB0}, {0x9F,0xCC}, {0x9F,0xCD},
- {0x9F,0xCE}, {0x9F,0xCF}, {0x9F,0xD0}, {0x9F,0xD1},
- {0x9F,0xD2}, {0x9F,0xD3}, {0x9F,0xD4}, {0x9F,0xD5},
- {0x9F,0xD6}, {0x9F,0xD7}, {0x93,0x61}, {0x9F,0xD9},
- {0x9F,0xDA}, {0x9F,0xDB}, {0x9F,0xDC}, {0x9F,0xDD},
- {0x9F,0xDE}, {0x9F,0xDF}, {0x9F,0xE0}, {0x9F,0xE1},
- {0x9F,0xE2}, {0x9F,0xE3}, {0x9F,0xE4}, {0x9F,0xE5},
- {0x9F,0xE6}, {0x9F,0xE7}, {0x9F,0xE8}, {0x9F,0xE9},
- {0x9F,0xEA}, {0x9F,0xEB}, {0x9F,0xEC}, {0x9F,0xED},
- {0x9F,0xEE}, {0x9F,0xEF}, {0x9F,0xF0}, {0x9F,0xF1},
- {0x9F,0xF2}, {0x9F,0xF3}, {0x9F,0xF4}, {0x9F,0xF5},
- {0x9F,0xF6}, {0x9F,0xF7}, {0x9F,0xF8}, {0x9F,0xF9},
- {0x9F,0xFA}, {0x9F,0xFB}, {0x9F,0xFC}, {0x9F,0xFD},
- {0x9F,0xFE}, {0xA0,0x40}, {0xA0,0x41}, {0xA0,0x42},
- {0xA0,0x43}, {0xA0,0x44}, {0xA0,0x45}, {0xA0,0x46},
- {0xA0,0x47}, {0xA0,0x48}, {0xA0,0x49}, {0xA0,0x4A},
- {0xA0,0x4B}, {0xA0,0x4C}, {0xA0,0x4D}, {0xA0,0x4E},
- {0xA0,0x4F}, {0xA0,0x50}, {0xA0,0x51}, {0xA0,0x52},
- {0xA0,0x53}, {0xA0,0x54}, {0xA0,0x55}, {0xA0,0x56},
- {0xA0,0x57}, {0xA0,0x58}, {0xA0,0x59}, {0xA0,0x5A},
- {0xA0,0x5B}, {0xA0,0x5C}, {0xA0,0x5D}, {0xA0,0x5E},
- {0xA0,0x5F}, {0xA0,0x60}, {0xA0,0x61}, {0xA0,0x62},
- {0x8F,0xB6}, {0xA0,0x64}, {0xA0,0x65}, {0xA0,0x66},
- {0xA0,0x67}, {0xA0,0x68}, {0xA0,0x69}, {0xA0,0x6A},
- {0xA0,0x6B}, {0xA0,0x6C}, {0xA0,0x6D}, {0xA0,0x6E},
- {0xA0,0x6F}, {0xA0,0x70}, {0xA0,0x71}, {0xA0,0x72},
- {0xA0,0x73}, {0xA0,0x74}, {0xA0,0x75}, {0xA0,0x76},
- {0xA9,0xF0}, {0xA0,0x78}, {0xA0,0x79}, {0xA0,0x7A},
- {0xA0,0x7B}, {0xA0,0x7C}, {0xA0,0x7D}, {0xA0,0x7E},
- {0xA0,0xA1}, {0xA0,0xA2}, {0xA0,0xA3}, {0xA0,0xA4},
- {0xA0,0xA5}, {0xA0,0xA6}, {0xA0,0xA7}, {0xA0,0xA8},
- {0xA0,0xA9}, {0xA0,0xAA}, {0xA0,0xAB}, {0xA0,0xAC},
- {0xA0,0xAD}, {0xA0,0xAE}, {0xA0,0xAF}, {0xA0,0xB0},
- {0xA0,0xB1}, {0xA0,0xB2}, {0xA0,0xB3}, {0xA0,0xB4},
- {0xA0,0xB5}, {0xA0,0xB6}, {0xA0,0xB7}, {0xA0,0xB8},
- {0xA0,0xB9}, {0xA0,0xBA}, {0xA0,0xBB}, {0xA0,0xBC},
- {0xA0,0xBD}, {0xA0,0xBE}, {0xA0,0xBF}, {0xA0,0xC0},
- {0xA0,0xC1}, {0xA0,0xC2}, {0xA0,0xC3}, {0xA0,0xC4},
- {0xA0,0xC5}, {0xA0,0xC6}, {0xA0,0xC7}, {0xA0,0xC8},
- {0xA0,0xC9}, {0xA0,0xCA}, {0xA0,0xCB}, {0xA0,0xCC},
- {0xA0,0xCD}, {0xA0,0xCE}, {0xA0,0xCF}, {0xA0,0xD0},
- {0xA0,0xD1}, {0xA0,0xD2}, {0xA0,0xD3}, {0xA0,0xD4},
- {0x94,0x7A}, {0xA0,0xD6}, {0xA0,0xD7}, {0xA0,0xD8},
- {0xA0,0xD9}, {0xA0,0xDA}, {0xA0,0xDB}, {0xA0,0xDC},
- {0xA0,0xDD}, {0xA0,0xDE}, {0xDE,0x72}, {0xA0,0xE0},
- {0xA0,0xE1}, {0xA0,0xE2}, {0xA0,0xE3}, {0x94,0x55},
- {0xA0,0xE5}, {0xA0,0xE6}, {0xA0,0xE7}, {0xA0,0xE8},
- {0xA0,0xE9}, {0xA0,0xEA}, {0xA0,0xEB}, {0xA0,0xEC},
- {0xA0,0xED}, {0xA0,0xEE}, {0xA0,0xEF}, {0xA0,0xF0},
- {0xA0,0xF1}, {0xA0,0xF2}, {0xA0,0xF3}, {0xA0,0xF4},
- {0xA0,0xF5}, {0xA0,0xF6}, {0xA0,0xF7}, {0xA0,0xF8},
- {0xA0,0xF9}, {0xA0,0xFA}, {0xA0,0xFB}, {0xA0,0xFC},
- {0xA0,0xFD}, {0xA0,0xFE}, {0x81,0x40}, {0x81,0x41},
- {0x81,0x42}, {0x81,0x43}, {0x81,0x44}, {0x81,0x45},
- {0x81,0x46}, {0x81,0x47}, {0x81,0x48}, {0x81,0x49},
- {0x81,0x4A}, {0x81,0x4B}, {0x81,0x4C}, {0x81,0x4D},
- {0x81,0x4E}, {0x81,0x4F}, {0x81,0x50}, {0x81,0x51},
- {0x81,0x52}, {0x81,0x53}, {0x81,0x54}, {0x81,0x55},
- {0x81,0x56}, {0x81,0x57}, {0x81,0x58}, {0x81,0x59},
- {0x81,0x5A}, {0x81,0x5B}, {0x81,0x5C}, {0x81,0x5D},
- {0x81,0x5E}, {0x81,0x5F}, {0x81,0x60}, {0x81,0x61},
- {0x81,0x62}, {0x81,0x63}, {0x81,0x64}, {0x81,0x65},
- {0x81,0x66}, {0x81,0x67}, {0x81,0x68}, {0x81,0x69},
- {0x81,0x6A}, {0x81,0x6B}, {0x81,0x6C}, {0x81,0x6D},
- {0x81,0x6E}, {0x81,0x6F}, {0x81,0x70}, {0x81,0x71},
- {0x81,0x72}, {0x81,0x73}, {0x81,0x74}, {0x81,0x75},
- {0x81,0x76}, {0x81,0x77}, {0x81,0x78}, {0x81,0x79},
- {0x81,0x7A}, {0x81,0x7B}, {0x81,0x7C}, {0x81,0x7D},
- {0x81,0x7E}, {0x81,0xA1}, {0x81,0xA2}, {0x81,0xA3},
- {0x81,0xA4}, {0x81,0xA5}, {0x81,0xA6}, {0x81,0xA7},
- {0x81,0xA8}, {0x81,0xA9}, {0x81,0xAA}, {0x81,0xAB},
- {0x81,0xAC}, {0x81,0xAD}, {0x81,0xAE}, {0x81,0xAF},
- {0x81,0xB0}, {0x81,0xB1}, {0x81,0xB2}, {0x81,0xB3},
- {0x81,0xB4}, {0x81,0xB5}, {0x81,0xB6}, {0x81,0xB7},
- {0x81,0xB8}, {0x81,0xB9}, {0x81,0xBA}, {0x81,0xBB},
- {0x81,0xBC}, {0x81,0xBD}, {0x81,0xBE}, {0x81,0xBF},
- {0x81,0xC0}, {0x81,0xC1}, {0x81,0xC2}, {0x81,0xC3},
- {0x81,0xC4}, {0x81,0xC5}, {0x81,0xC6}, {0x81,0xC7},
- {0x81,0xC8}, {0x81,0xC9}, {0x81,0xCA}, {0x81,0xCB},
- {0x81,0xCC}, {0x81,0xCD}, {0x81,0xCE}, {0x81,0xCF},
- {0x81,0xD0}, {0x81,0xD1}, {0x81,0xD2}, {0x81,0xD3},
- {0x81,0xD4}, {0x81,0xD5}, {0x81,0xD6}, {0x81,0xD7},
- {0x81,0xD8}, {0x81,0xD9}, {0x81,0xDA}, {0x81,0xDB},
- {0x81,0xDC}, {0x81,0xDD}, {0x81,0xDE}, {0x81,0xDF},
- {0x81,0xE0}, {0x81,0xE1}, {0x81,0xE2}, {0x81,0xE3},
- {0x81,0xE4}, {0x81,0xE5}, {0x81,0xE6}, {0x81,0xE7},
- {0x81,0xE8}, {0x81,0xE9}, {0x81,0xEA}, {0x81,0xEB},
- {0x81,0xEC}, {0x81,0xED}, {0x81,0xEE}, {0x81,0xEF},
- {0x81,0xF0}, {0x81,0xF1}, {0x81,0xF2}, {0x81,0xF3},
- {0x81,0xF4}, {0x81,0xF5}, {0x81,0xF6}, {0x81,0xF7},
- {0x81,0xF8}, {0x81,0xF9}, {0x81,0xFA}, {0x81,0xFB},
- {0x81,0xFC}, {0x81,0xFD}, {0x81,0xFE}, {0x82,0x40},
- {0x82,0x41}, {0x82,0x42}, {0x82,0x43}, {0x82,0x44},
- {0x82,0x45}, {0x82,0x46}, {0x82,0x47}, {0x82,0x48},
- {0x82,0x49}, {0x82,0x4A}, {0x82,0x4B}, {0x82,0x4C},
- {0x82,0x4D}, {0x82,0x4E}, {0x82,0x4F}, {0x82,0x50},
- {0x82,0x51}, {0x82,0x52}, {0x82,0x53}, {0x82,0x54},
- {0x82,0x55}, {0x82,0x56}, {0x82,0x57}, {0x82,0x58},
- {0x82,0x59}, {0x82,0x5A}, {0x82,0x5B}, {0x82,0x5C},
- {0x82,0x5D}, {0x82,0x5E}, {0x82,0x5F}, {0x82,0x60},
- {0x82,0x61}, {0x82,0x62}, {0x82,0x63}, {0x82,0x64},
- {0x82,0x65}, {0x82,0x66}, {0x82,0x67}, {0x82,0x68},
- {0x82,0x69}, {0x82,0x6A}, {0x82,0x6B}, {0x82,0x6C},
- {0x82,0x6D}, {0x82,0x6E}, {0x82,0x6F}, {0x82,0x70},
- {0x82,0x71}, {0x82,0x72}, {0x82,0x73}, {0x82,0x74},
- {0x82,0x75}, {0x82,0x76}, {0x82,0x77}, {0x82,0x78},
- {0x82,0x79}, {0x82,0x7A}, {0x82,0x7B}, {0x82,0x7C},
- {0x82,0x7D}, {0x82,0x7E}, {0x82,0xA1}, {0x82,0xA2},
- {0x82,0xA3}, {0x82,0xA4}, {0x82,0xA5}, {0x82,0xA6},
- {0x82,0xA7}, {0x82,0xA8}, {0x82,0xA9}, {0x82,0xAA},
- {0x82,0xAB}, {0x82,0xAC}, {0x82,0xAD}, {0x82,0xAE},
- {0x82,0xAF}, {0x82,0xB0}, {0x82,0xB1}, {0x82,0xB2},
- {0x82,0xB3}, {0x82,0xB4}, {0x82,0xB5}, {0x82,0xB6},
- {0x82,0xB7}, {0x82,0xB8}, {0x82,0xB9}, {0x82,0xBA},
- {0x82,0xBB}, {0x82,0xBC}, {0x82,0xBD}, {0x82,0xBE},
- {0x82,0xBF}, {0x82,0xC0}, {0x82,0xC1}, {0x82,0xC2},
- {0x82,0xC3}, {0x82,0xC4}, {0x82,0xC5}, {0x82,0xC6},
- {0x82,0xC7}, {0x82,0xC8}, {0x82,0xC9}, {0x82,0xCA},
- {0x82,0xCB}, {0x82,0xCC}, {0x82,0xCD}, {0x82,0xCE},
- {0x82,0xCF}, {0x82,0xD0}, {0x82,0xD1}, {0x82,0xD2},
- {0x82,0xD3}, {0x82,0xD4}, {0x82,0xD5}, {0x82,0xD6},
- {0x82,0xD7}, {0x82,0xD8}, {0x82,0xD9}, {0x82,0xDA},
- {0x82,0xDB}, {0x82,0xDC}, {0x82,0xDD}, {0x82,0xDE},
- {0x82,0xDF}, {0x82,0xE0}, {0x82,0xE1}, {0x82,0xE2},
- {0x82,0xE3}, {0x82,0xE4}, {0x82,0xE5}, {0x82,0xE6},
- {0x82,0xE7}, {0x82,0xE8}, {0x82,0xE9}, {0x82,0xEA},
- {0x82,0xEB}, {0x82,0xEC}, {0x82,0xED}, {0x82,0xEE},
- {0x82,0xEF}, {0x82,0xF0}, {0x82,0xF1}, {0x82,0xF2},
- {0x82,0xF3}, {0x82,0xF4}, {0x82,0xF5}, {0x82,0xF6},
- {0x82,0xF7}, {0x82,0xF8}, {0x82,0xF9}, {0x82,0xFA},
- {0x82,0xFB}, {0x82,0xFC}, {0x82,0xFD}, {0x82,0xFE},
- {0x83,0x40}, {0x83,0x41}, {0x83,0x42}, {0x83,0x43},
- {0x83,0x44}, {0x83,0x45}, {0x83,0x46}, {0x83,0x47},
- {0x83,0x48}, {0x83,0x49}, {0x83,0x4A}, {0x83,0x4B},
- {0x83,0x4C}, {0x83,0x4D}, {0x83,0x4E}, {0x83,0x4F},
- {0x83,0x50}, {0x83,0x51}, {0x83,0x52}, {0x83,0x53},
- {0x83,0x54}, {0x83,0x55}, {0x83,0x56}, {0x83,0x57},
- {0x83,0x58}, {0x83,0x59}, {0x83,0x5A}, {0x83,0x5B},
- {0x83,0x5C}, {0x83,0x5D}, {0x83,0x5E}, {0x83,0x5F},
- {0x83,0x60}, {0x83,0x61}, {0x83,0x62}, {0x83,0x63},
- {0x83,0x64}, {0x83,0x65}, {0x83,0x66}, {0x83,0x67},
- {0x83,0x68}, {0x83,0x69}, {0x83,0x6A}, {0x83,0x6B},
- {0x83,0x6C}, {0x83,0x6D}, {0x83,0x6E}, {0x83,0x6F},
- {0x83,0x70}, {0x83,0x71}, {0x83,0x72}, {0x83,0x73},
- {0x83,0x74}, {0x83,0x75}, {0x83,0x76}, {0x83,0x77},
- {0x83,0x78}, {0x83,0x79}, {0x83,0x7A}, {0x83,0x7B},
- {0x83,0x7C}, {0x83,0x7D}, {0x83,0x7E}, {0x83,0xA1},
- {0x83,0xA2}, {0x83,0xA3}, {0x83,0xA4}, {0x83,0xA5},
- {0x83,0xA6}, {0x83,0xA7}, {0x83,0xA8}, {0x83,0xA9},
- {0x83,0xAA}, {0x83,0xAB}, {0x83,0xAC}, {0x83,0xAD},
- {0x83,0xAE}, {0x83,0xAF}, {0x83,0xB0}, {0x83,0xB1},
- {0x83,0xB2}, {0x83,0xB3}, {0x83,0xB4}, {0x83,0xB5},
- {0x83,0xB6}, {0x83,0xB7}, {0x83,0xB8}, {0x83,0xB9},
- {0x83,0xBA}, {0x83,0xBB}, {0x83,0xBC}, {0x83,0xBD},
- {0x83,0xBE}, {0x83,0xBF}, {0x83,0xC0}, {0x83,0xC1},
- {0x83,0xC2}, {0x83,0xC3}, {0x83,0xC4}, {0x83,0xC5},
- {0x83,0xC6}, {0x83,0xC7}, {0x83,0xC8}, {0x83,0xC9},
- {0x83,0xCA}, {0x83,0xCB}, {0x83,0xCC}, {0x83,0xCD},
- {0x83,0xCE}, {0x83,0xCF}, {0x83,0xD0}, {0x83,0xD1},
- {0x83,0xD2}, {0x83,0xD3}, {0x83,0xD4}, {0x83,0xD5},
- {0x83,0xD6}, {0x83,0xD7}, {0x83,0xD8}, {0x83,0xD9},
- {0x83,0xDA}, {0x83,0xDB}, {0x83,0xDC}, {0x83,0xDD},
- {0x83,0xDE}, {0x83,0xDF}, {0x83,0xE0}, {0x83,0xE1},
- {0x83,0xE2}, {0x83,0xE3}, {0x83,0xE4}, {0x83,0xE5},
- {0x83,0xE6}, {0x83,0xE7}, {0x83,0xE8}, {0x83,0xE9},
- {0x83,0xEA}, {0x83,0xEB}, {0x83,0xEC}, {0x83,0xED},
- {0x83,0xEE}, {0x83,0xEF}, {0x83,0xF0}, {0x83,0xF1},
- {0x83,0xF2}, {0x83,0xF3}, {0x83,0xF4}, {0x83,0xF5},
- {0x83,0xF6}, {0x83,0xF7}, {0x83,0xF8}, {0x83,0xF9},
- {0x83,0xFA}, {0x83,0xFB}, {0x83,0xFC}, {0x83,0xFD},
- {0x83,0xFE}, {0x84,0x40}, {0x84,0x41}, {0x84,0x42},
- {0x84,0x43}, {0x84,0x44}, {0x84,0x45}, {0x84,0x46},
- {0x84,0x47}, {0x84,0x48}, {0x84,0x49}, {0x84,0x4A},
- {0x84,0x4B}, {0x84,0x4C}, {0x84,0x4D}, {0x84,0x4E},
- {0x84,0x4F}, {0x84,0x50}, {0x84,0x51}, {0x84,0x52},
- {0x84,0x53}, {0x84,0x54}, {0x84,0x55}, {0x84,0x56},
- {0x84,0x57}, {0x84,0x58}, {0x84,0x59}, {0x84,0x5A},
- {0x84,0x5B}, {0x84,0x5C}, {0x84,0x5D}, {0x84,0x5E},
- {0x84,0x5F}, {0x84,0x60}, {0x84,0x61}, {0x84,0x62},
- {0x84,0x63}, {0x84,0x64}, {0x84,0x65}, {0x84,0x66},
- {0x84,0x67}, {0x84,0x68}, {0x84,0x69}, {0x84,0x6A},
- {0x84,0x6B}, {0x84,0x6C}, {0x84,0x6D}, {0x84,0x6E},
- {0x84,0x6F}, {0x84,0x70}, {0x84,0x71}, {0x84,0x72},
- {0x84,0x73}, {0x84,0x74}, {0x84,0x75}, {0x84,0x76},
- {0x84,0x77}, {0x84,0x78}, {0x84,0x79}, {0x84,0x7A},
- {0x84,0x7B}, {0x84,0x7C}, {0x84,0x7D}, {0x84,0x7E},
- {0x84,0xA1}, {0x84,0xA2}, {0x84,0xA3}, {0x84,0xA4},
- {0x84,0xA5}, {0x84,0xA6}, {0x84,0xA7}, {0x84,0xA8},
- {0x84,0xA9}, {0x84,0xAA}, {0x84,0xAB}, {0x84,0xAC},
- {0x84,0xAD}, {0x84,0xAE}, {0x84,0xAF}, {0x84,0xB0},
- {0x84,0xB1}, {0x84,0xB2}, {0x84,0xB3}, {0x84,0xB4},
- {0x84,0xB5}, {0x84,0xB6}, {0x84,0xB7}, {0x84,0xB8},
- {0x84,0xB9}, {0x84,0xBA}, {0x84,0xBB}, {0x84,0xBC},
- {0x84,0xBD}, {0x84,0xBE}, {0x84,0xBF}, {0x84,0xC0},
- {0x84,0xC1}, {0x84,0xC2}, {0x84,0xC3}, {0x84,0xC4},
- {0x84,0xC5}, {0x84,0xC6}, {0x84,0xC7}, {0x84,0xC8},
- {0x84,0xC9}, {0x84,0xCA}, {0x84,0xCB}, {0x84,0xCC},
- {0x84,0xCD}, {0x84,0xCE}, {0x84,0xCF}, {0x84,0xD0},
- {0x84,0xD1}, {0x84,0xD2}, {0x84,0xD3}, {0x84,0xD4},
- {0x84,0xD5}, {0x84,0xD6}, {0x84,0xD7}, {0x84,0xD8},
- {0x84,0xD9}, {0x84,0xDA}, {0x84,0xDB}, {0x84,0xDC},
- {0x84,0xDD}, {0x84,0xDE}, {0x84,0xDF}, {0x84,0xE0},
- {0x84,0xE1}, {0x84,0xE2}, {0x84,0xE3}, {0x84,0xE4},
- {0x84,0xE5}, {0x84,0xE6}, {0x84,0xE7}, {0x84,0xE8},
- {0x84,0xE9}, {0x84,0xEA}, {0x84,0xEB}, {0x84,0xEC},
- {0x84,0xED}, {0x84,0xEE}, {0x84,0xEF}, {0x84,0xF0},
- {0x84,0xF1}, {0x84,0xF2}, {0x84,0xF3}, {0x84,0xF4},
- {0x84,0xF5}, {0x84,0xF6}, {0x84,0xF7}, {0x84,0xF8},
- {0x84,0xF9}, {0x84,0xFA}, {0x84,0xFB}, {0x84,0xFC},
- {0x84,0xFD}, {0x84,0xFE}, {0x85,0x40}, {0x85,0x41},
- {0x85,0x42}, {0x85,0x43}, {0x85,0x44}, {0x85,0x45},
- {0x85,0x46}, {0x85,0x47}, {0x85,0x48}, {0x85,0x49},
- {0x85,0x4A}, {0x85,0x4B}, {0x85,0x4C}, {0x85,0x4D},
- {0x85,0x4E}, {0x85,0x4F}, {0x85,0x50}, {0x85,0x51},
- {0x85,0x52}, {0x85,0x53}, {0x85,0x54}, {0x85,0x55},
- {0x85,0x56}, {0x85,0x57}, {0x85,0x58}, {0x85,0x59},
- {0x85,0x5A}, {0x85,0x5B}, {0x85,0x5C}, {0x85,0x5D},
- {0x85,0x5E}, {0x85,0x5F}, {0x85,0x60}, {0x85,0x61},
- {0x85,0x62}, {0x85,0x63}, {0x85,0x64}, {0x85,0x65},
- {0x85,0x66}, {0x85,0x67}, {0x85,0x68}, {0x85,0x69},
- {0x85,0x6A}, {0x85,0x6B}, {0x85,0x6C}, {0x85,0x6D},
- {0x85,0x6E}, {0x85,0x6F}, {0x85,0x70}, {0x85,0x71},
- {0x85,0x72}, {0x85,0x73}, {0x85,0x74}, {0x85,0x75},
- {0x85,0x76}, {0x85,0x77}, {0x85,0x78}, {0x85,0x79},
- {0x85,0x7A}, {0x85,0x7B}, {0x85,0x7C}, {0x85,0x7D},
- {0x85,0x7E}, {0x85,0xA1}, {0x85,0xA2}, {0x85,0xA3},
- {0x85,0xA4}, {0x85,0xA5}, {0x85,0xA6}, {0x85,0xA7},
- {0x85,0xA8}, {0x85,0xA9}, {0x85,0xAA}, {0x85,0xAB},
- {0x85,0xAC}, {0x85,0xAD}, {0x85,0xAE}, {0x85,0xAF},
- {0x85,0xB0}, {0x85,0xB1}, {0x85,0xB2}, {0x85,0xB3},
- {0x85,0xB4}, {0x85,0xB5}, {0x85,0xB6}, {0x85,0xB7},
- {0x85,0xB8}, {0x85,0xB9}, {0x85,0xBA}, {0x85,0xBB},
- {0x85,0xBC}, {0x85,0xBD}, {0x85,0xBE}, {0x85,0xBF},
- {0x85,0xC0}, {0x85,0xC1}, {0x85,0xC2}, {0x85,0xC3},
- {0x85,0xC4}, {0x85,0xC5}, {0x85,0xC6}, {0x85,0xC7},
- {0x85,0xC8}, {0x85,0xC9}, {0x85,0xCA}, {0x85,0xCB},
- {0x85,0xCC}, {0x85,0xCD}, {0x85,0xCE}, {0x85,0xCF},
- {0x85,0xD0}, {0x85,0xD1}, {0x85,0xD2}, {0x85,0xD3},
- {0x85,0xD4}, {0x85,0xD5}, {0x85,0xD6}, {0x85,0xD7},
- {0x85,0xD8}, {0x85,0xD9}, {0x85,0xDA}, {0x85,0xDB},
- {0x85,0xDC}, {0x85,0xDD}, {0x85,0xDE}, {0x85,0xDF},
- {0x85,0xE0}, {0x85,0xE1}, {0x85,0xE2}, {0x85,0xE3},
- {0x85,0xE4}, {0x85,0xE5}, {0x85,0xE6}, {0x85,0xE7},
- {0x85,0xE8}, {0x85,0xE9}, {0x85,0xEA}, {0x85,0xEB},
- {0x85,0xEC}, {0x85,0xED}, {0x85,0xEE}, {0x85,0xEF},
- {0x85,0xF0}, {0x85,0xF1}, {0x85,0xF2}, {0x85,0xF3},
- {0x85,0xF4}, {0x85,0xF5}, {0x85,0xF6}, {0x85,0xF7},
- {0x85,0xF8}, {0x85,0xF9}, {0x85,0xFA}, {0x85,0xFB},
- {0x85,0xFC}, {0x85,0xFD}, {0x85,0xFE}, {0x86,0x40},
- {0x86,0x41}, {0x86,0x42}, {0x86,0x43}, {0x86,0x44},
- {0x86,0x45}, {0x86,0x46}, {0x86,0x47}, {0x86,0x48},
- {0x86,0x49}, {0x86,0x4A}, {0x86,0x4B}, {0x86,0x4C},
- {0x86,0x4D}, {0x86,0x4E}, {0x86,0x4F}, {0x86,0x50},
- {0x86,0x51}, {0x86,0x52}, {0x86,0x53}, {0x86,0x54},
- {0x86,0x55}, {0x86,0x56}, {0x86,0x57}, {0x86,0x58},
- {0x86,0x59}, {0x86,0x5A}, {0x86,0x5B}, {0x86,0x5C},
- {0x86,0x5D}, {0x86,0x5E}, {0x86,0x5F}, {0x86,0x60},
- {0x86,0x61}, {0x86,0x62}, {0x86,0x63}, {0x86,0x64},
- {0x86,0x65}, {0x86,0x66}, {0x86,0x67}, {0x86,0x68},
- {0x86,0x69}, {0x86,0x6A}, {0x86,0x6B}, {0x86,0x6C},
- {0x86,0x6D}, {0x86,0x6E}, {0x86,0x6F}, {0x86,0x70},
- {0x86,0x71}, {0x86,0x72}, {0x86,0x73}, {0x86,0x74},
- {0x86,0x75}, {0x86,0x76}, {0x86,0x77}, {0x86,0x78},
- {0x86,0x79}, {0x86,0x7A}, {0x86,0x7B}, {0x86,0x7C},
- {0x86,0x7D}, {0x86,0x7E}, {0x86,0xA1}, {0x86,0xA2},
- {0x86,0xA3}, {0x86,0xA4}, {0x86,0xA5}, {0x86,0xA6},
- {0x86,0xA7}, {0x86,0xA8}, {0x86,0xA9}, {0x86,0xAA},
- {0x86,0xAB}, {0x86,0xAC}, {0x86,0xAD}, {0x86,0xAE},
- {0x86,0xAF}, {0x86,0xB0}, {0x86,0xB1}, {0x86,0xB2},
- {0x86,0xB3}, {0x86,0xB4}, {0x86,0xB5}, {0x86,0xB6},
- {0x86,0xB7}, {0x86,0xB8}, {0x86,0xB9}, {0x86,0xBA},
- {0x86,0xBB}, {0x86,0xBC}, {0x86,0xBD}, {0x86,0xBE},
- {0x86,0xBF}, {0x86,0xC0}, {0x86,0xC1}, {0x86,0xC2},
- {0x86,0xC3}, {0x86,0xC4}, {0x86,0xC5}, {0x86,0xC6},
- {0x86,0xC7}, {0x86,0xC8}, {0x86,0xC9}, {0x86,0xCA},
- {0x86,0xCB}, {0x86,0xCC}, {0x86,0xCD}, {0x86,0xCE},
- {0x86,0xCF}, {0x86,0xD0}, {0x86,0xD1}, {0x86,0xD2},
- {0x86,0xD3}, {0x86,0xD4}, {0x86,0xD5}, {0x86,0xD6},
- {0x86,0xD7}, {0x86,0xD8}, {0x86,0xD9}, {0x86,0xDA},
- {0x86,0xDB}, {0x86,0xDC}, {0x86,0xDD}, {0x86,0xDE},
- {0x86,0xDF}, {0x86,0xE0}, {0x86,0xE1}, {0x86,0xE2},
- {0x86,0xE3}, {0x86,0xE4}, {0x86,0xE5}, {0x86,0xE6},
- {0x86,0xE7}, {0x86,0xE8}, {0x86,0xE9}, {0x86,0xEA},
- {0x86,0xEB}, {0x86,0xEC}, {0x86,0xED}, {0x86,0xEE},
- {0x86,0xEF}, {0x86,0xF0}, {0x86,0xF1}, {0x86,0xF2},
- {0x86,0xF3}, {0x86,0xF4}, {0x86,0xF5}, {0x86,0xF6},
- {0x86,0xF7}, {0x86,0xF8}, {0x86,0xF9}, {0x86,0xFA},
- {0x86,0xFB}, {0x86,0xFC}, {0x86,0xFD}, {0x86,0xFE},
- {0x87,0x40}, {0x87,0x41}, {0x87,0x42}, {0x87,0x43},
- {0x87,0x44}, {0x87,0x45}, {0x87,0x46}, {0x87,0x47},
- {0x87,0x48}, {0x87,0x49}, {0x87,0x4A}, {0x87,0x4B},
- {0x87,0x4C}, {0x87,0x4D}, {0x87,0x4E}, {0x87,0x4F},
- {0x87,0x50}, {0x87,0x51}, {0x87,0x52}, {0x87,0x53},
- {0x87,0x54}, {0x87,0x55}, {0x87,0x56}, {0x87,0x57},
- {0x87,0x58}, {0x87,0x59}, {0x87,0x5A}, {0x87,0x5B},
- {0x87,0x5C}, {0x87,0x5D}, {0x87,0x5E}, {0x87,0x5F},
- {0x87,0x60}, {0x87,0x61}, {0x87,0x62}, {0x87,0x63},
- {0x87,0x64}, {0x87,0x65}, {0x87,0x66}, {0x87,0x67},
- {0x87,0x68}, {0x87,0x69}, {0x87,0x6A}, {0x87,0x6B},
- {0x87,0x6C}, {0x87,0x6D}, {0x87,0x6E}, {0x87,0x6F},
- {0x87,0x70}, {0x87,0x71}, {0x87,0x72}, {0x87,0x73},
- {0x87,0x74}, {0x87,0x75}, {0x87,0x76}, {0x87,0x77},
- {0x87,0x78}, {0x87,0x79}, {0x87,0x7A}, {0x87,0x7B},
- {0x87,0x7C}, {0x87,0x7D}, {0x87,0x7E}, {0x87,0xA1},
- {0x87,0xA2}, {0x87,0xA3}, {0x87,0xA4}, {0x87,0xA5},
- {0x87,0xA6}, {0x87,0xA7}, {0x87,0xA8}, {0x87,0xA9},
- {0x87,0xAA}, {0x87,0xAB}, {0x87,0xAC}, {0x87,0xAD},
- {0x87,0xAE}, {0x87,0xAF}, {0x87,0xB0}, {0x87,0xB1},
- {0x87,0xB2}, {0x87,0xB3}, {0x87,0xB4}, {0x87,0xB5},
- {0x87,0xB6}, {0x87,0xB7}, {0x87,0xB8}, {0x87,0xB9},
- {0x87,0xBA}, {0x87,0xBB}, {0x87,0xBC}, {0x87,0xBD},
- {0x87,0xBE}, {0x87,0xBF}, {0x87,0xC0}, {0x87,0xC1},
- {0x87,0xC2}, {0x87,0xC3}, {0x87,0xC4}, {0x87,0xC5},
- {0x87,0xC6}, {0x87,0xC7}, {0x87,0xC8}, {0x87,0xC9},
- {0x87,0xCA}, {0x87,0xCB}, {0x87,0xCC}, {0x87,0xCD},
- {0x87,0xCE}, {0x87,0xCF}, {0x87,0xD0}, {0x87,0xD1},
- {0x87,0xD2}, {0x87,0xD3}, {0x87,0xD4}, {0x87,0xD5},
- {0x87,0xD6}, {0x87,0xD7}, {0x87,0xD8}, {0x87,0xD9},
- {0x87,0xDA}, {0x87,0xDB}, {0x87,0xDC}, {0x87,0xDD},
- {0x87,0xDE}, {0x87,0xDF}, {0x87,0xE0}, {0x87,0xE1},
- {0x87,0xE2}, {0x87,0xE3}, {0x87,0xE4}, {0x87,0xE5},
- {0x87,0xE6}, {0x87,0xE7}, {0x87,0xE8}, {0x87,0xE9},
- {0x87,0xEA}, {0x87,0xEB}, {0x87,0xEC}, {0x87,0xED},
- {0x87,0xEE}, {0x87,0xEF}, {0x87,0xF0}, {0x87,0xF1},
- {0x87,0xF2}, {0x87,0xF3}, {0x87,0xF4}, {0x87,0xF5},
- {0x87,0xF6}, {0x87,0xF7}, {0x87,0xF8}, {0x87,0xF9},
- {0x87,0xFA}, {0x87,0xFB}, {0x87,0xFC}, {0x87,0xFD},
- {0x87,0xFE}, {0x88,0x40}, {0x88,0x41}, {0x88,0x42},
- {0x88,0x43}, {0x88,0x44}, {0x88,0x45}, {0x88,0x46},
- {0x88,0x47}, {0x88,0x48}, {0x88,0x49}, {0x88,0x4A},
- {0x88,0x4B}, {0x88,0x4C}, {0x88,0x4D}, {0x88,0x4E},
- {0x88,0x4F}, {0x88,0x50}, {0x88,0x51}, {0x88,0x52},
- {0x88,0x53}, {0x88,0x54}, {0x88,0x55}, {0x88,0x56},
- {0x88,0x57}, {0x88,0x58}, {0x88,0x59}, {0x88,0x5A},
- {0x88,0x5B}, {0x88,0x5C}, {0x88,0x5D}, {0x88,0x5E},
- {0x88,0x5F}, {0x88,0x60}, {0x88,0x61}, {0x88,0x62},
- {0x88,0x63}, {0x88,0x64}, {0x88,0x65}, {0x88,0x66},
- {0x88,0x67}, {0x88,0x68}, {0x88,0x69}, {0x88,0x6A},
- {0x88,0x6B}, {0x88,0x6C}, {0x88,0x6D}, {0x88,0x6E},
- {0x88,0x6F}, {0x88,0x70}, {0x88,0x71}, {0x88,0x72},
- {0x88,0x73}, {0x88,0x74}, {0x88,0x75}, {0x88,0x76},
- {0x88,0x77}, {0x88,0x78}, {0x88,0x79}, {0x88,0x7A},
- {0x88,0x7B}, {0x88,0x7C}, {0x88,0x7D}, {0x88,0x7E},
- {0x88,0xA1}, {0x88,0xA2}, {0x88,0xA3}, {0x88,0xA4},
- {0x88,0xA5}, {0x88,0xA6}, {0x88,0xA7}, {0x88,0xA8},
- {0x88,0xA9}, {0x88,0xAA}, {0x88,0xAB}, {0x88,0xAC},
- {0x88,0xAD}, {0x88,0xAE}, {0x88,0xAF}, {0x88,0xB0},
- {0x88,0xB1}, {0x88,0xB2}, {0x88,0xB3}, {0x88,0xB4},
- {0x88,0xB5}, {0x88,0xB6}, {0x88,0xB7}, {0x88,0xB8},
- {0x88,0xB9}, {0x88,0xBA}, {0x88,0xBB}, {0x88,0xBC},
- {0x88,0xBD}, {0x88,0xBE}, {0x88,0xBF}, {0x88,0xC0},
- {0x88,0xC1}, {0x88,0xC2}, {0x88,0xC3}, {0x88,0xC4},
- {0x88,0xC5}, {0x88,0xC6}, {0x88,0xC7}, {0x88,0xC8},
- {0x88,0xC9}, {0x88,0xCA}, {0x88,0xCB}, {0x88,0xCC},
- {0x88,0xCD}, {0x88,0xCE}, {0x88,0xCF}, {0x88,0xD0},
- {0x88,0xD1}, {0x88,0xD2}, {0x88,0xD3}, {0x88,0xD4},
- {0x88,0xD5}, {0x88,0xD6}, {0x88,0xD7}, {0x88,0xD8},
- {0x88,0xD9}, {0x88,0xDA}, {0x88,0xDB}, {0x88,0xDC},
- {0x88,0xDD}, {0x88,0xDE}, {0x88,0xDF}, {0x88,0xE0},
- {0x88,0xE1}, {0x88,0xE2}, {0x88,0xE3}, {0x88,0xE4},
- {0x88,0xE5}, {0x88,0xE6}, {0x88,0xE7}, {0x88,0xE8},
- {0x88,0xE9}, {0x88,0xEA}, {0x88,0xEB}, {0x88,0xEC},
- {0x88,0xED}, {0x88,0xEE}, {0x88,0xEF}, {0x88,0xF0},
- {0x88,0xF1}, {0x88,0xF2}, {0x88,0xF3}, {0x88,0xF4},
- {0x88,0xF5}, {0x88,0xF6}, {0x88,0xF7}, {0x88,0xF8},
- {0x88,0xF9}, {0x88,0xFA}, {0x88,0xFB}, {0x88,0xFC},
- {0x88,0xFD}, {0x88,0xFE}, {0x89,0x40}, {0x89,0x41},
- {0x89,0x42}, {0x89,0x43}, {0x89,0x44}, {0x89,0x45},
- {0x89,0x46}, {0x89,0x47}, {0x89,0x48}, {0x89,0x49},
- {0x89,0x4A}, {0x89,0x4B}, {0x89,0x4C}, {0x89,0x4D},
- {0x89,0x4E}, {0x89,0x4F}, {0x89,0x50}, {0x89,0x51},
- {0x89,0x52}, {0x89,0x53}, {0x89,0x54}, {0x89,0x55},
- {0x89,0x56}, {0x89,0x57}, {0x89,0x58}, {0x89,0x59},
- {0x89,0x5A}, {0x89,0x5B}, {0x89,0x5C}, {0x89,0x5D},
- {0x89,0x5E}, {0x89,0x5F}, {0x89,0x60}, {0x89,0x61},
- {0x89,0x62}, {0x89,0x63}, {0x89,0x64}, {0x89,0x65},
- {0x89,0x66}, {0x89,0x67}, {0x89,0x68}, {0x89,0x69},
- {0x89,0x6A}, {0x89,0x6B}, {0x89,0x6C}, {0x89,0x6D},
- {0x89,0x6E}, {0x89,0x6F}, {0x89,0x70}, {0x89,0x71},
- {0x89,0x72}, {0x89,0x73}, {0x89,0x74}, {0x89,0x75},
- {0x89,0x76}, {0x89,0x77}, {0x89,0x78}, {0x89,0x79},
- {0x89,0x7A}, {0x89,0x7B}, {0x89,0x7C}, {0x89,0x7D},
- {0x89,0x7E}, {0x89,0xA1}, {0x89,0xA2}, {0x89,0xA3},
- {0x89,0xA4}, {0x89,0xA5}, {0x89,0xA6}, {0x89,0xA7},
- {0x89,0xA8}, {0x89,0xA9}, {0x89,0xAA}, {0x89,0xAB},
- {0x89,0xAC}, {0x89,0xAD}, {0x89,0xAE}, {0x89,0xAF},
- {0x89,0xB0}, {0x89,0xB1}, {0x89,0xB2}, {0x89,0xB3},
- {0x89,0xB4}, {0x89,0xB5}, {0x89,0xB6}, {0x89,0xB7},
- {0x89,0xB8}, {0x89,0xB9}, {0x89,0xBA}, {0x89,0xBB},
- {0x89,0xBC}, {0x89,0xBD}, {0x89,0xBE}, {0x89,0xBF},
- {0x89,0xC0}, {0x89,0xC1}, {0x89,0xC2}, {0x89,0xC3},
- {0x89,0xC4}, {0x89,0xC5}, {0x89,0xC6}, {0x89,0xC7},
- {0x89,0xC8}, {0x89,0xC9}, {0x89,0xCA}, {0x89,0xCB},
- {0x89,0xCC}, {0x89,0xCD}, {0x89,0xCE}, {0x89,0xCF},
- {0x89,0xD0}, {0x89,0xD1}, {0x89,0xD2}, {0x89,0xD3},
- {0x89,0xD4}, {0x89,0xD5}, {0x89,0xD6}, {0x89,0xD7},
- {0x89,0xD8}, {0x89,0xD9}, {0x89,0xDA}, {0x89,0xDB},
- {0x89,0xDC}, {0x89,0xDD}, {0x89,0xDE}, {0x89,0xDF},
- {0x89,0xE0}, {0x89,0xE1}, {0x89,0xE2}, {0x89,0xE3},
- {0x89,0xE4}, {0x89,0xE5}, {0x89,0xE6}, {0x89,0xE7},
- {0x89,0xE8}, {0x89,0xE9}, {0x89,0xEA}, {0x89,0xEB},
- {0x89,0xEC}, {0x89,0xED}, {0x89,0xEE}, {0x89,0xEF},
- {0x89,0xF0}, {0x89,0xF1}, {0x89,0xF2}, {0x89,0xF3},
- {0x89,0xF4}, {0x89,0xF5}, {0x89,0xF6}, {0x89,0xF7},
- {0x89,0xF8}, {0x89,0xF9}, {0x89,0xFA}, {0x89,0xFB},
- {0x89,0xFC}, {0x89,0xFD}, {0x89,0xFE}, {0x8A,0x40},
- {0x8A,0x41}, {0x8A,0x42}, {0x8A,0x43}, {0x8A,0x44},
- {0x8A,0x45}, {0x8A,0x46}, {0x8A,0x47}, {0x8A,0x48},
- {0x8A,0x49}, {0x8A,0x4A}, {0x8A,0x4B}, {0x8A,0x4C},
- {0x8A,0x4D}, {0x8A,0x4E}, {0x8A,0x4F}, {0x8A,0x50},
- {0x8A,0x51}, {0x8A,0x52}, {0x8A,0x53}, {0x8A,0x54},
- {0x8A,0x55}, {0x8A,0x56}, {0x8A,0x57}, {0x8A,0x58},
- {0x8A,0x59}, {0x8A,0x5A}, {0x8A,0x5B}, {0x8A,0x5C},
- {0x8A,0x5D}, {0x8A,0x5E}, {0x8A,0x5F}, {0x8A,0x60},
- {0x8A,0x61}, {0x8A,0x62}, {0x8A,0x63}, {0x8A,0x64},
- {0x8A,0x65}, {0x8A,0x66}, {0x8A,0x67}, {0x8A,0x68},
- {0x8A,0x69}, {0x8A,0x6A}, {0x8A,0x6B}, {0x8A,0x6C},
- {0x8A,0x6D}, {0x8A,0x6E}, {0x8A,0x6F}, {0x8A,0x70},
- {0x8A,0x71}, {0x8A,0x72}, {0x8A,0x73}, {0x8A,0x74},
- {0x8A,0x75}, {0x8A,0x76}, {0x8A,0x77}, {0x8A,0x78},
- {0x8A,0x79}, {0x8A,0x7A}, {0x8A,0x7B}, {0x8A,0x7C},
- {0x8A,0x7D}, {0x8A,0x7E}, {0x8A,0xA1}, {0x8A,0xA2},
- {0x8A,0xA3}, {0x8A,0xA4}, {0x8A,0xA5}, {0x8A,0xA6},
- {0x8A,0xA7}, {0x8A,0xA8}, {0x8A,0xA9}, {0x8A,0xAA},
- {0x8A,0xAB}, {0x8A,0xAC}, {0x8A,0xAD}, {0x8A,0xAE},
- {0x8A,0xAF}, {0x8A,0xB0}, {0x8A,0xB1}, {0x8A,0xB2},
- {0x8A,0xB3}, {0x8A,0xB4}, {0x8A,0xB5}, {0x8A,0xB6},
- {0x8A,0xB7}, {0x8A,0xB8}, {0x8A,0xB9}, {0x8A,0xBA},
- {0x8A,0xBB}, {0x8A,0xBC}, {0x8A,0xBD}, {0x8A,0xBE},
- {0x8A,0xBF}, {0x8A,0xC0}, {0x8A,0xC1}, {0x8A,0xC2},
- {0x8A,0xC3}, {0x8A,0xC4}, {0x8A,0xC5}, {0x8A,0xC6},
- {0x8A,0xC7}, {0x8A,0xC8}, {0x8A,0xC9}, {0x8A,0xCA},
- {0x8A,0xCB}, {0x8A,0xCC}, {0x8A,0xCD}, {0x8A,0xCE},
- {0x8A,0xCF}, {0x8A,0xD0}, {0x8A,0xD1}, {0x8A,0xD2},
- {0x8A,0xD3}, {0x8A,0xD4}, {0x8A,0xD5}, {0x8A,0xD6},
- {0x8A,0xD7}, {0x8A,0xD8}, {0x8A,0xD9}, {0x8A,0xDA},
- {0x8A,0xDB}, {0x8A,0xDC}, {0x8A,0xDD}, {0x8A,0xDE},
- {0x8A,0xDF}, {0x8A,0xE0}, {0x8A,0xE1}, {0x8A,0xE2},
- {0x8A,0xE3}, {0x8A,0xE4}, {0x8A,0xE5}, {0x8A,0xE6},
- {0x8A,0xE7}, {0x8A,0xE8}, {0x8A,0xE9}, {0x8A,0xEA},
- {0x8A,0xEB}, {0x8A,0xEC}, {0x8A,0xED}, {0x8A,0xEE},
- {0x8A,0xEF}, {0x8A,0xF0}, {0x8A,0xF1}, {0x8A,0xF2},
- {0x8A,0xF3}, {0x8A,0xF4}, {0x8A,0xF5}, {0x8A,0xF6},
- {0x8A,0xF7}, {0x8A,0xF8}, {0x8A,0xF9}, {0x8A,0xFA},
- {0x8A,0xFB}, {0x8A,0xFC}, {0x8A,0xFD}, {0x8A,0xFE},
- {0x8B,0x40}, {0x8B,0x41}, {0x8B,0x42}, {0x8B,0x43},
- {0x8B,0x44}, {0x8B,0x45}, {0x8B,0x46}, {0x8B,0x47},
- {0x8B,0x48}, {0x8B,0x49}, {0x8B,0x4A}, {0x8B,0x4B},
- {0x8B,0x4C}, {0x8B,0x4D}, {0x8B,0x4E}, {0x8B,0x4F},
- {0x8B,0x50}, {0x8B,0x51}, {0x8B,0x52}, {0x8B,0x53},
- {0x8B,0x54}, {0x8B,0x55}, {0x8B,0x56}, {0x8B,0x57},
- {0x8B,0x58}, {0x8B,0x59}, {0x8B,0x5A}, {0x8B,0x5B},
- {0x8B,0x5C}, {0x8B,0x5D}, {0x8B,0x5E}, {0x8B,0x5F},
- {0x8B,0x60}, {0x8B,0x61}, {0x8B,0x62}, {0x8B,0x63},
- {0x8B,0x64}, {0x8B,0x65}, {0x8B,0x66}, {0x8B,0x67},
- {0x8B,0x68}, {0x8B,0x69}, {0x8B,0x6A}, {0x8B,0x6B},
- {0x8B,0x6C}, {0x8B,0x6D}, {0x8B,0x6E}, {0x8B,0x6F},
- {0x8B,0x70}, {0x8B,0x71}, {0x8B,0x72}, {0x8B,0x73},
- {0x8B,0x74}, {0x8B,0x75}, {0x8B,0x76}, {0x8B,0x77},
- {0x8B,0x78}, {0x8B,0x79}, {0x8B,0x7A}, {0x8B,0x7B},
- {0x8B,0x7C}, {0x8B,0x7D}, {0x8B,0x7E}, {0x8B,0xA1},
- {0x8B,0xA2}, {0x8B,0xA3}, {0x8B,0xA4}, {0x8B,0xA5},
- {0x8B,0xA6}, {0x8B,0xA7}, {0x8B,0xA8}, {0x8B,0xA9},
- {0x8B,0xAA}, {0x8B,0xAB}, {0x8B,0xAC}, {0x8B,0xAD},
- {0x8B,0xAE}, {0x8B,0xAF}, {0x8B,0xB0}, {0x8B,0xB1},
- {0x8B,0xB2}, {0x8B,0xB3}, {0x8B,0xB4}, {0x8B,0xB5},
- {0x8B,0xB6}, {0x8B,0xB7}, {0x8B,0xB8}, {0x8B,0xB9},
- {0x8B,0xBA}, {0x8B,0xBB}, {0x8B,0xBC}, {0x8B,0xBD},
- {0x8B,0xBE}, {0x8B,0xBF}, {0x8B,0xC0}, {0x8B,0xC1},
- {0x8B,0xC2}, {0x8B,0xC3}, {0x8B,0xC4}, {0x8B,0xC5},
- {0x8B,0xC6}, {0x8B,0xC7}, {0x8B,0xC8}, {0x8B,0xC9},
- {0x8B,0xCA}, {0x8B,0xCB}, {0x8B,0xCC}, {0x8B,0xCD},
- {0x8B,0xCE}, {0x8B,0xCF}, {0x8B,0xD0}, {0x8B,0xD1},
- {0x8B,0xD2}, {0x8B,0xD3}, {0x8B,0xD4}, {0x8B,0xD5},
- {0x8B,0xD6}, {0x8B,0xD7}, {0x8B,0xD8}, {0x8B,0xD9},
- {0x8B,0xDA}, {0x8B,0xDB}, {0x8B,0xDC}, {0x8B,0xDD},
- {0x8B,0xDE}, {0x8B,0xDF}, {0x8B,0xE0}, {0x8B,0xE1},
- {0x8B,0xE2}, {0x8B,0xE3}, {0x8B,0xE4}, {0x8B,0xE5},
- {0x8B,0xE6}, {0x8B,0xE7}, {0x8B,0xE8}, {0x8B,0xE9},
- {0x8B,0xEA}, {0x8B,0xEB}, {0x8B,0xEC}, {0x8B,0xED},
- {0x8B,0xEE}, {0x8B,0xEF}, {0x8B,0xF0}, {0x8B,0xF1},
- {0x8B,0xF2}, {0x8B,0xF3}, {0x8B,0xF4}, {0x8B,0xF5},
- {0x8B,0xF6}, {0x8B,0xF7}, {0x8B,0xF8}, {0x8B,0xF9},
- {0x8B,0xFA}, {0x8B,0xFB}, {0x8B,0xFC}, {0x8B,0xFD},
- {0x8B,0xFE}, {0x8C,0x40}, {0x8C,0x41}, {0x8C,0x42},
- {0x8C,0x43}, {0x8C,0x44}, {0x8C,0x45}, {0x8C,0x46},
- {0x8C,0x47}, {0x8C,0x48}, {0x8C,0x49}, {0x8C,0x4A},
- {0x8C,0x4B}, {0x8C,0x4C}, {0x8C,0x4D}, {0x8C,0x4E},
- {0x8C,0x4F}, {0x8C,0x50}, {0x8C,0x51}, {0x8C,0x52},
- {0x8C,0x53}, {0x8C,0x54}, {0x8C,0x55}, {0x8C,0x56},
- {0x8C,0x57}, {0x8C,0x58}, {0x8C,0x59}, {0x8C,0x5A},
- {0x8C,0x5B}, {0x8C,0x5C}, {0x8C,0x5D}, {0x8C,0x5E},
- {0x8C,0x5F}, {0x8C,0x60}, {0x8C,0x61}, {0x8C,0x62},
- {0x8C,0x63}, {0x8C,0x64}, {0x8C,0x65}, {0x8C,0x66},
- {0x8C,0x67}, {0x8C,0x68}, {0x8C,0x69}, {0x8C,0x6A},
- {0x8C,0x6B}, {0x8C,0x6C}, {0x8C,0x6D}, {0x8C,0x6E},
- {0x8C,0x6F}, {0x8C,0x70}, {0x8C,0x71}, {0x8C,0x72},
- {0x8C,0x73}, {0x8C,0x74}, {0x8C,0x75}, {0x8C,0x76},
- {0x8C,0x77}, {0x8C,0x78}, {0x8C,0x79}, {0x8C,0x7A},
- {0x8C,0x7B}, {0x8C,0x7C}, {0x8C,0x7D}, {0x8C,0x7E},
- {0x8C,0xA1}, {0x8C,0xA2}, {0x8C,0xA3}, {0x8C,0xA4},
- {0x8C,0xA5}, {0x8C,0xA6}, {0x8C,0xA7}, {0x8C,0xA8},
- {0x8C,0xA9}, {0x8C,0xAA}, {0x8C,0xAB}, {0x8C,0xAC},
- {0x8C,0xAD}, {0x8C,0xAE}, {0x8C,0xAF}, {0x8C,0xB0},
- {0x8C,0xB1}, {0x8C,0xB2}, {0x8C,0xB3}, {0x8C,0xB4},
- {0x8C,0xB5}, {0x8C,0xB6}, {0x8C,0xB7}, {0x8C,0xB8},
- {0x8C,0xB9}, {0x8C,0xBA}, {0x8C,0xBB}, {0x8C,0xBC},
- {0x8C,0xBD}, {0x8C,0xBE}, {0x8C,0xBF}, {0x8C,0xC0},
- {0x8C,0xC1}, {0x8C,0xC2}, {0x8C,0xC3}, {0x8C,0xC4},
- {0x8C,0xC5}, {0x8C,0xC6}, {0x8C,0xC7}, {0x8C,0xC8},
- {0x8C,0xC9}, {0x8C,0xCA}, {0x8C,0xCB}, {0x8C,0xCC},
- {0x8C,0xCD}, {0x8C,0xCE}, {0x8C,0xCF}, {0x8C,0xD0},
- {0x8C,0xD1}, {0x8C,0xD2}, {0x8C,0xD3}, {0x8C,0xD4},
- {0x8C,0xD5}, {0x8C,0xD6}, {0x8C,0xD7}, {0x8C,0xD8},
- {0x8C,0xD9}, {0x8C,0xDA}, {0x8C,0xDB}, {0x8C,0xDC},
- {0x8C,0xDD}, {0x8C,0xDE}, {0x8C,0xDF}, {0x8C,0xE0},
- {0x8C,0xE1}, {0x8C,0xE2}, {0x8C,0xE3}, {0x8C,0xE4},
- {0x8C,0xE5}, {0x8C,0xE6}, {0x8C,0xE7}, {0x8C,0xE8},
- {0x8C,0xE9}, {0x8C,0xEA}, {0x8C,0xEB}, {0x8C,0xEC},
- {0x8C,0xED}, {0x8C,0xEE}, {0x8C,0xEF}, {0x8C,0xF0},
- {0x8C,0xF1}, {0x8C,0xF2}, {0x8C,0xF3}, {0x8C,0xF4},
- {0x8C,0xF5}, {0x8C,0xF6}, {0x8C,0xF7}, {0x8C,0xF8},
- {0x8C,0xF9}, {0x8C,0xFA}, {0x8C,0xFB}, {0x8C,0xFC},
- {0x8C,0xFD}, {0x8C,0xFE}, {0x8D,0x40}, {0x8D,0x41},
- {0x8D,0x42}, {0x8D,0x43}, {0x8D,0x44}, {0x8D,0x45},
- {0x8D,0x46}, {0x8D,0x47}, {0x8D,0x48}, {0x8D,0x49},
- {0x8D,0x4A}, {0x8D,0x4B}, {0x8D,0x4C}, {0x8D,0x4D},
- {0x8D,0x4E}, {0x8D,0x4F}, {0x8D,0x50}, {0x8D,0x51},
- {0x8D,0x52}, {0x8D,0x53}, {0x8D,0x54}, {0x8D,0x55},
- {0x8D,0x56}, {0x8D,0x57}, {0x8D,0x58}, {0x8D,0x59},
- {0x8D,0x5A}, {0x8D,0x5B}, {0x8D,0x5C}, {0x8D,0x5D},
- {0x8D,0x5E}, {0x8D,0x5F}, {0x8D,0x60}, {0x8D,0x61},
- {0x8D,0x62}, {0x8D,0x63}, {0x8D,0x64}, {0x8D,0x65},
- {0x8D,0x66}, {0x8D,0x67}, {0x8D,0x68}, {0x8D,0x69},
- {0x8D,0x6A}, {0x8D,0x6B}, {0x8D,0x6C}, {0x8D,0x6D},
- {0x8D,0x6E}, {0x8D,0x6F}, {0x8D,0x70}, {0x8D,0x71},
- {0x8D,0x72}, {0x8D,0x73}, {0x8D,0x74}, {0x8D,0x75},
- {0x8D,0x76}, {0x8D,0x77}, {0x8D,0x78}, {0x8D,0x79},
- {0x8D,0x7A}, {0x8D,0x7B}, {0x8D,0x7C}, {0x8D,0x7D},
- {0x8D,0x7E}, {0x8D,0xA1}, {0x8D,0xA2}, {0x8D,0xA3},
- {0x8D,0xA4}, {0x8D,0xA5}, {0x8D,0xA6}, {0x8D,0xA7},
- {0x8D,0xA8}, {0x8D,0xA9}, {0x8D,0xAA}, {0x8D,0xAB},
- {0x8D,0xAC}, {0x8D,0xAD}, {0x8D,0xAE}, {0x8D,0xAF},
- {0x8D,0xB0}, {0x8D,0xB1}, {0x8D,0xB2}, {0x8D,0xB3},
- {0x8D,0xB4}, {0x8D,0xB5}, {0x8D,0xB6}, {0x8D,0xB7},
- {0x8D,0xB8}, {0x8D,0xB9}, {0x8D,0xBA}, {0x8D,0xBB},
- {0x8D,0xBC}, {0x8D,0xBD}, {0x8D,0xBE}, {0x8D,0xBF},
- {0x8D,0xC0}, {0x8D,0xC1}, {0x8D,0xC2}, {0x8D,0xC3},
- {0x8D,0xC4}, {0x8D,0xC5}, {0x8D,0xC6}, {0x8D,0xC7},
- {0x8D,0xC8}, {0x8D,0xC9}, {0x8D,0xCA}, {0x8D,0xCB},
- {0x8D,0xCC}, {0x8D,0xCD}, {0x8D,0xCE}, {0x8D,0xCF},
- {0x8D,0xD0}, {0x8D,0xD1}, {0x8D,0xD2}, {0x8D,0xD3},
- {0x8D,0xD4}, {0x8D,0xD5}, {0x8D,0xD6}, {0x8D,0xD7},
- {0x8D,0xD8}, {0x8D,0xD9}, {0x8D,0xDA}, {0x8D,0xDB},
- {0x8D,0xDC}, {0x8D,0xDD}, {0x8D,0xDE}, {0x8D,0xDF},
- {0x8D,0xE0}, {0x8D,0xE1}, {0x8D,0xE2}, {0x8D,0xE3},
- {0x8D,0xE4}, {0x8D,0xE5}, {0x8D,0xE6}, {0x8D,0xE7},
- {0x8D,0xE8}, {0x8D,0xE9}, {0x8D,0xEA}, {0x8D,0xEB},
- {0x8D,0xEC}, {0x8D,0xED}, {0x8D,0xEE}, {0x8D,0xEF},
- {0x8D,0xF0}, {0x8D,0xF1}, {0x8D,0xF2}, {0x8D,0xF3},
- {0x8D,0xF4}, {0x8D,0xF5}, {0x8D,0xF6}, {0x8D,0xF7},
- {0x8D,0xF8}, {0x8D,0xF9}, {0x8D,0xFA}, {0x8D,0xFB},
- {0x8D,0xFC}, {0x8D,0xFD}, {0x8D,0xFE}, {0xC6,0xA1},
- {0xC6,0xA2}, {0xC6,0xA3}, {0xC6,0xA4}, {0xC6,0xA5},
- {0xC6,0xA6}, {0xC6,0xA7}, {0xC6,0xA8}, {0xC6,0xA9},
- {0xC6,0xAA}, {0xC6,0xAB}, {0xC6,0xAC}, {0xC6,0xAD},
- {0xC6,0xAE}, {0xC6,0xAF}, {0xC6,0xB0}, {0xC6,0xB1},
- {0xC6,0xB2}, {0xC6,0xB3}, {0xC6,0xB4}, {0xC6,0xB5},
- {0xC6,0xB6}, {0xC6,0xB7}, {0xC6,0xB8}, {0xC6,0xB9},
- {0xC6,0xBA}, {0xC6,0xBB}, {0xC6,0xBC}, {0xC6,0xBD},
- {0xC6,0xBE}, {0xC6,0xBF}, {0xC6,0xC0}, {0xC6,0xC1},
- {0xC6,0xC2}, {0xC6,0xC3}, {0xC6,0xC4}, {0xC6,0xC5},
- {0xC6,0xC6}, {0xC6,0xC7}, {0xC6,0xC8}, {0xC6,0xC9},
- {0xC6,0xCA}, {0xC6,0xCB}, {0xC6,0xCC}, {0xC6,0xCD},
- {0xC6,0xCE}, {0xC6,0xCF}, {0xC6,0xD0}, {0xC6,0xD1},
- {0xC6,0xD2}, {0xC6,0xD3}, {0xC6,0xD4}, {0xC6,0xD5},
- {0xC6,0xD6}, {0xC6,0xD7}, {0xC6,0xD8}, {0xC6,0xD9},
- {0xC6,0xDA}, {0xC6,0xDB}, {0xC6,0xDC}, {0xC6,0xDD},
- {0xC6,0xDE}, {0xC6,0xDF}, {0xC6,0xE0}, {0xC6,0xE1},
- {0xC6,0xE2}, {0xC6,0xE3}, {0xC6,0xE4}, {0xC6,0xE5},
- {0xC6,0xE6}, {0xC6,0xE7}, {0xC6,0xE8}, {0xC6,0xE9},
- {0xC6,0xEA}, {0xC6,0xEB}, {0xC6,0xEC}, {0xC6,0xED},
- {0xC6,0xEE}, {0xC6,0xEF}, {0xC6,0xF0}, {0xC6,0xF1},
- {0xC6,0xF2}, {0xC6,0xF3}, {0xC6,0xF4}, {0xC6,0xF5},
- {0xC6,0xF6}, {0xC6,0xF7}, {0xC6,0xF8}, {0xC6,0xF9},
- {0xC6,0xFA}, {0xC6,0xFB}, {0xC6,0xFC}, {0xC6,0xFD},
- {0xC6,0xFE}, {0xC7,0x40}, {0xC7,0x41}, {0xC7,0x42},
- {0xC7,0x43}, {0xC7,0x44}, {0xC7,0x45}, {0xC7,0x46},
- {0xC7,0x47}, {0xC7,0x48}, {0xC7,0x49}, {0xC7,0x4A},
- {0xC7,0x4B}, {0xC7,0x4C}, {0xC7,0x4D}, {0xC7,0x4E},
- {0xC7,0x4F}, {0xC7,0x50}, {0xC7,0x51}, {0xC7,0x52},
- {0xC7,0x53}, {0xC7,0x54}, {0xC7,0x55}, {0xC7,0x56},
- {0xC7,0x57}, {0xC7,0x58}, {0xC7,0x59}, {0xC7,0x5A},
- {0xC7,0x5B}, {0xC7,0x5C}, {0xC7,0x5D}, {0xC7,0x5E},
- {0xC7,0x5F}, {0xC7,0x60}, {0xC7,0x61}, {0xC7,0x62},
- {0xC7,0x63}, {0xC7,0x64}, {0xC7,0x65}, {0xC7,0x66},
- {0xC7,0x67}, {0xC7,0x68}, {0xC7,0x69}, {0xC7,0x6A},
- {0xC7,0x6B}, {0xC7,0x6C}, {0xC7,0x6D}, {0xC7,0x6E},
- {0xC7,0x6F}, {0xC7,0x70}, {0xC7,0x71}, {0xC7,0x72},
- {0xC7,0x73}, {0xC7,0x74}, {0xC7,0x75}, {0xC7,0x76},
- {0xC7,0x77}, {0xC7,0x78}, {0xC7,0x79}, {0xC7,0x7A},
- {0xC7,0x7B}, {0xC7,0x7C}, {0xC7,0x7D}, {0xC7,0x7E},
- {0xC7,0xA1}, {0xC7,0xA2}, {0xC7,0xA3}, {0xC7,0xA4},
- {0xC7,0xA5}, {0xC7,0xA6}, {0xC7,0xA7}, {0xC7,0xA8},
- {0xC7,0xA9}, {0xC7,0xAA}, {0xC7,0xAB}, {0xC7,0xAC},
- {0xC7,0xAD}, {0xC7,0xAE}, {0xC7,0xAF}, {0xC7,0xB0},
- {0xC7,0xB1}, {0xC7,0xB2}, {0xC7,0xB3}, {0xC7,0xB4},
- {0xC7,0xB5}, {0xC7,0xB6}, {0xC7,0xB7}, {0xC7,0xB8},
- {0xC7,0xB9}, {0xC7,0xBA}, {0xC7,0xBB}, {0xC7,0xBC},
- {0xC7,0xBD}, {0xC7,0xBE}, {0xC7,0xBF}, {0xC7,0xC0},
- {0xC7,0xC1}, {0xC7,0xC2}, {0xC7,0xC3}, {0xC7,0xC4},
- {0xC7,0xC5}, {0xC7,0xC6}, {0xC7,0xC7}, {0xC7,0xC8},
- {0xC7,0xC9}, {0xC7,0xCA}, {0xC7,0xCB}, {0xC7,0xCC},
- {0xC7,0xCD}, {0xC7,0xCE}, {0xC7,0xCF}, {0xC7,0xD0},
- {0xC7,0xD1}, {0xC7,0xD2}, {0xC7,0xD3}, {0xC7,0xD4},
- {0xC7,0xD5}, {0xC7,0xD6}, {0xC7,0xD7}, {0xC7,0xD8},
- {0xC7,0xD9}, {0xC7,0xDA}, {0xC7,0xDB}, {0xC7,0xDC},
- {0xC7,0xDD}, {0xC7,0xDE}, {0xC7,0xDF}, {0xC7,0xE0},
- {0xC7,0xE1}, {0xC7,0xE2}, {0xC7,0xE3}, {0xC7,0xE4},
- {0xC7,0xE5}, {0xC7,0xE6}, {0xC7,0xE7}, {0xC7,0xE8},
- {0xC7,0xE9}, {0xC7,0xEA}, {0xC7,0xEB}, {0xC7,0xEC},
- {0xC7,0xED}, {0xC7,0xEE}, {0xC7,0xEF}, {0xC7,0xF0},
- {0xC7,0xF1}, {0xC7,0xF2}, {0xC7,0xF3}, {0xC7,0xF4},
- {0xC7,0xF5}, {0xC7,0xF6}, {0xC7,0xF7}, {0xC7,0xF8},
- {0xC7,0xF9}, {0xC7,0xFA}, {0xC7,0xFB}, {0xC7,0xFC},
- {0xC7,0xFD}, {0xC7,0xFE}, {0xC8,0x40}, {0xC8,0x41},
- {0xC8,0x42}, {0xC8,0x43}, {0xC8,0x44}, {0xC8,0x45},
- {0xC8,0x46}, {0xC8,0x47}, {0xC8,0x48}, {0xC8,0x49},
- {0xC8,0x4A}, {0xC8,0x4B}, {0xC8,0x4C}, {0xC8,0x4D},
- {0xC8,0x4E}, {0xC8,0x4F}, {0xC8,0x50}, {0xC8,0x51},
- {0xC8,0x52}, {0xC8,0x53}, {0xC8,0x54}, {0xC8,0x55},
- {0xC8,0x56}, {0xC8,0x57}, {0xC8,0x58}, {0xC8,0x59},
- {0xC8,0x5A}, {0xC8,0x5B}, {0xC8,0x5C}, {0xC8,0x5D},
- {0xC8,0x5E}, {0xC8,0x5F}, {0xC8,0x60}, {0xC8,0x61},
- {0xC8,0x62}, {0xC8,0x63}, {0xC8,0x64}, {0xC8,0x65},
- {0xC8,0x66}, {0xC8,0x67}, {0xC8,0x68}, {0xC8,0x69},
- {0xC8,0x6A}, {0xC8,0x6B}, {0xC8,0x6C}, {0xC8,0x6D},
- {0xC8,0x6E}, {0xC8,0x6F}, {0xC8,0x70}, {0xC8,0x71},
- {0xC8,0x72}, {0xC8,0x73}, {0xC8,0x74}, {0xC8,0x75},
- {0xC8,0x76}, {0xC8,0x77}, {0xC8,0x78}, {0xC8,0x79},
- {0xC8,0x7A}, {0xC8,0x7B}, {0xC8,0x7C}, {0xC8,0x7D},
- {0xC8,0x7E}, {0xC8,0xA1}, {0xC8,0xA2}, {0xC8,0xA3},
- {0xC8,0xA4}, {0xC8,0xA5}, {0xC8,0xA6}, {0xC8,0xA7},
- {0xC8,0xA8}, {0xC8,0xA9}, {0xC8,0xAA}, {0xC8,0xAB},
- {0xC8,0xAC}, {0xC8,0xAD}, {0xC8,0xAE}, {0xC8,0xAF},
- {0xC8,0xB0}, {0xC8,0xB1}, {0xC8,0xB2}, {0xC8,0xB3},
- {0xC8,0xB4}, {0xC8,0xB5}, {0xC8,0xB6}, {0xC8,0xB7},
- {0xC8,0xB8}, {0xC8,0xB9}, {0xC8,0xBA}, {0xC8,0xBB},
- {0xC8,0xBC}, {0xC8,0xBD}, {0xC8,0xBE}, {0xC8,0xBF},
- {0xC8,0xC0}, {0xC8,0xC1}, {0xC8,0xC2}, {0xC8,0xC3},
- {0xC8,0xC4}, {0xC8,0xC5}, {0xC8,0xC6}, {0xC8,0xC7},
- {0xC8,0xC8}, {0xC8,0xC9}, {0xC8,0xCA}, {0xC8,0xCB},
- {0xC8,0xCC}, {0xC8,0xCD}, {0xC8,0xCE}, {0xC8,0xCF},
- {0xC8,0xD0}, {0xC8,0xD1}, {0xC8,0xD2}, {0xC8,0xD3},
- {0xC8,0xD4}, {0xC8,0xD5}, {0xC8,0xD6}, {0xC8,0xD7},
- {0xC8,0xD8}, {0xC8,0xD9}, {0xC8,0xDA}, {0xC8,0xDB},
- {0xC8,0xDC}, {0xC8,0xDD}, {0xC8,0xDE}, {0xC8,0xDF},
- {0xC8,0xE0}, {0xC8,0xE1}, {0xC8,0xE2}, {0xC8,0xE3},
- {0xC8,0xE4}, {0xC8,0xE5}, {0xC8,0xE6}, {0xC8,0xE7},
- {0xC8,0xE8}, {0xC8,0xE9}, {0xC8,0xEA}, {0xC8,0xEB},
- {0xC8,0xEC}, {0xC8,0xED}, {0xC8,0xEE}, {0xC8,0xEF},
- {0xC8,0xF0}, {0xC8,0xF1}, {0xC8,0xF2}, {0xC8,0xF3},
- {0xC8,0xF4}, {0xC8,0xF5}, {0xC8,0xF6}, {0xC8,0xF7},
- {0xC8,0xF8}, {0xC8,0xF9}, {0xC8,0xFA}, {0xC8,0xFB},
- {0xC8,0xFC}, {0xC8,0xFD}, {0xC8,0xFE}, {0xFF,0x00},
- {0xB0,0x5A}, {0xA7,0xF3}, {0xA8,0xAE}, {0xB8,0xEB},
- {0xB7,0xC6}, {0xA6,0xEA}, {0xA5,0x79}, {0x8B,0xF8},
- {0xC0,0x74}, {0xAB,0xB4}, {0xAA,0xF7}, {0xB3,0xE2},
- {0xA9,0x60}, {0xC3,0x69}, {0xC4,0xEE}, {0xC3,0xB9},
- {0xC5,0xDA}, {0xC1,0xB3}, {0xBB,0x72}, {0xC5,0xDE},
- {0xBC,0xD6}, {0xAC,0xA5}, {0xAF,0x4F}, {0xAF,0x5F},
- {0xB8,0xA8}, {0xB9,0x54}, {0xC0,0x64}, {0xB6,0xC3},
- {0xA7,0x5A}, {0xC4,0xE6}, {0xC4,0xEA}, {0xC4,0xF5},
- {0xC6,0x7D}, {0xB4,0x50}, {0xC0,0xDD}, {0xC2,0xC5},
- {0xC4,0xB0}, {0xA9,0xD4}, {0xC3,0xBE}, {0xC4,0xFA},
- {0xB4,0x59}, {0xAE,0xD4}, {0xAE,0xF6}, {0xAF,0x54},
- {0xA8,0xD3}, {0xA7,0x4E}, {0xB3,0xD2}, {0xBE,0xDB},
- {0xC3,0x72}, {0xC4,0x6C}, {0xBF,0x63}, {0xA6,0xD1},
- {0xC4,0xAA}, {0xB8,0xB8}, {0xB8,0xF4}, {0xC5,0x53},
- {0xBE,0x7C}, {0xC6,0x4F}, {0xB8,0x4C}, {0xB8,0x53},
- {0xBA,0xF1}, {0xDB,0x77}, {0xBF,0xFD}, {0xB3,0xC0},
- {0xBD,0xD7}, {0xC3,0x62}, {0xA7,0xCB}, {0xC5,0xA2},
- {0xC5,0xA4}, {0xA8,0x63}, {0xBD,0x55}, {0xB8,0xEF},
- {0xB9,0x70}, {0xC2,0x53}, {0xB9,0xF0}, {0xBC,0xD3},
- {0xB2,0x5C}, {0xBA,0x7C}, {0xB2,0xD6}, {0xC1,0x5C},
- {0xAD,0xAE}, {0xB0,0xC7}, {0xA6,0xD8}, {0xBB,0xFE},
- {0xAD,0xE2}, {0xB8,0x57}, {0xBA,0xF0}, {0xB5,0xD9},
- {0xB3,0xAE}, {0xC5,0xAA}, {0xCE,0xD4}, {0xBC,0xD6},
- {0xBF,0xD5}, {0xA4,0xA6}, {0xB9,0xE7}, {0xAB,0xE3},
- {0xB2,0x76}, {0xB2,0xA7}, {0xA5,0x5F}, {0xED,0xA8},
- {0xAB,0x4B}, {0xB4,0x5F}, {0xA4,0xA3}, {0xAA,0x63},
- {0xBC,0xC6}, {0xAF,0xC1}, {0xB0,0xD1}, {0xB6,0xEB},
- {0xAC,0xD9}, {0xB8,0xAD}, {0xBB,0xA1}, {0xB1,0xFE},
- {0xA8,0xB0}, {0xA8,0x48}, {0xAC,0x42}, {0xAD,0x59},
- {0xB1,0xB0}, {0xB2,0xA4}, {0xAB,0x47}, {0xA8,0xE2},
- {0xB1,0xE7}, {0xC2,0xB3}, {0xA8,0x7D}, {0xBD,0xCC},
- {0xB6,0x71}, {0xC0,0x79}, {0xA7,0x66}, {0xA4,0x6B},
- {0xC3,0x66}, {0xAE,0xC8}, {0xC2,0x6F}, {0xC4,0x72},
- {0xBE,0x5B}, {0xC6,0x7A}, {0xC4,0x52}, {0xBE,0xA4},
- {0xA4,0x4F}, {0xBE,0xE4}, {0xBE,0xFA}, {0xF7,0x65},
- {0xA6,0x7E}, {0xBC,0xA6}, {0xC5,0xCA}, {0xBC,0xBF},
- {0xBA,0xA7}, {0xB7,0xD2}, {0xE6,0xA3}, {0xBD,0x6D},
- {0xC1,0x70}, {0xBD,0xFB}, {0xBD,0xAC}, {0xB3,0x73},
- {0xC1,0xE5}, {0xA6,0x43}, {0xA6,0x48}, {0xAB,0x7C},
- {0xAF,0x50}, {0xB5,0xF5}, {0xBB,0xA1}, {0xB7,0x47},
- {0xA9,0xC0}, {0xB1,0xC9}, {0xC0,0xD4}, {0xC3,0xAE},
- {0xC2,0x79}, {0xA5,0x4F}, {0xCB,0xF1}, {0xB9,0xE7},
- {0xC0,0xAD}, {0xCC,0xB0}, {0xAC,0xC2}, {0xBC,0xFC},
- {0xB2,0xDC}, {0xB2,0xE2}, {0xB9,0x61}, {0xB9,0x73},
- {0xC6,0x46}, {0xBB,0xE2}, {0xA8,0xD2}, {0xC2,0xA7},
- {0xC4,0xBF}, {0xC1,0xF5}, {0xB4,0x63}, {0xA4,0x46},
- {0xB9,0xB1}, {0xBC,0x64}, {0xA7,0xBF}, {0xAE,0xC6},
- {0xBC,0xD6}, {0xBF,0x52}, {0xC0,0xF8}, {0xE7,0x64},
- {0xBF,0xF1}, {0xC0,0x73}, {0xB7,0x77}, {0xA8,0xBF},
- {0xBC,0x42}, {0xCC,0xD8}, {0xAC,0x68}, {0xAC,0x79},
- {0xB7,0xC8}, {0xAF,0x5B}, {0xAF,0x64}, {0xB2,0xB8},
- {0xAF,0xC3}, {0xC3,0xFE}, {0xA4,0xBB}, {0xBC,0xAE},
- {0xB3,0xB0}, {0xAD,0xDB}, {0xB1,0x5B}, {0xB2,0x5F},
- {0xBD,0xFC}, {0xAB,0xDF}, {0xB7,0x58}, {0xAE,0xDF},
- {0xB2,0x76}, {0xB6,0xA9}, {0xA7,0x51}, {0xA6,0x4F},
- {0xBC,0x69}, {0xA9,0xF6}, {0xA7,0xF5}, {0xB1,0xF9},
- {0xAA,0x64}, {0xB2,0x7A}, {0xB5,0x67}, {0xBF,0xA9},
- {0xB8,0xCC}, {0xA8,0xBD}, {0xC2,0xF7}, {0xB0,0xCE},
- {0xB7,0xC4}, {0xA7,0x5B}, {0xBF,0x4D}, {0xBF,0x5A},
- {0xC4,0xA9}, {0xC5,0xEC}, {0xC5,0xEF}, {0xAA,0x4C},
- {0xB2,0x4F}, {0xC1,0x7B}, {0xA5,0xDF}, {0xB2,0xC1},
- {0xB2,0xC9}, {0xAA,0xAC}, {0xAA,0xA5}, {0xC3,0xD1},
- {0xA4,0xB0}, {0xAF,0xF9}, {0xA8,0xEB}, {0xA4,0xC1},
- {0xAB,0xD7}, {0xA9,0xDD}, {0xBF,0x7D}, {0xA6,0x76},
- {0xAC,0x7D}, {0xBC,0xC9}, {0xBF,0xE7}, {0xA6,0xE6},
- {0xAD,0xB0}, {0xA8,0xA3}, {0xB9,0xF8}, {0xC9,0x4A},
- {0xDD,0xFC}, {0xB6,0xEF}, {0xB4,0xB8}, {0xE8,0xF9},
- {0xBD,0xDE}, {0xAF,0x71}, {0xAF,0xAB}, {0xB2,0xBB},
- {0xBA,0xD6}, {0xB9,0x74}, {0xBA,0xEB}, {0xA6,0xD0},
- {0xBD,0xD1}, {0xB6,0x68}, {0xB3,0xA3}, {0xB6,0xBA},
- {0xB9,0x7D}, {0xC0,0x5D}, {0xC5,0x62}, {0xA1,0x4A},
- {0xA1,0x57}, {0xA1,0x59}, {0xA1,0x5B}, {0xA1,0x5F},
- {0xA1,0x60}, {0xA1,0x63}, {0xA1,0x64}, {0xA1,0x67},
- {0xA1,0x68}, {0xA1,0x6B}, {0xA1,0x6C}, {0xA1,0x6F},
- {0xA1,0x70}, {0xA1,0x73}, {0xA1,0x74}, {0xA1,0x77},
- {0xA1,0x78}, {0xA1,0x7B}, {0xA1,0x7C}, {0xA1,0xC6},
- {0xA1,0xC7}, {0xA1,0xCA}, {0xA1,0xCB}, {0xA1,0xC8},
- {0xA1,0xC9}, {0xA1,0x5C}, {0xA1,0x4D}, {0xA1,0x4E},
- {0xA1,0x4F}, {0xA1,0x51}, {0xA1,0x52}, {0xA1,0x53},
- {0xA1,0x54}, {0xA1,0x7D}, {0xA1,0x7E}, {0xA1,0xA1},
- {0xA1,0xA2}, {0xA1,0xA3}, {0xA1,0xA4}, {0xA1,0xCC},
- {0xA1,0xCD}, {0xA1,0xCE}, {0xA1,0xDE}, {0xA1,0xDF},
- {0xA1,0xE0}, {0xA1,0xE1}, {0xA1,0xE2}, {0xA2,0x42},
- {0xA2,0x4C}, {0xA2,0x4D}, {0xA2,0x4E}, {0xA1,0x49},
- {0xC8,0xD0}, {0xA1,0xAD}, {0xA2,0x43}, {0xA2,0x48},
- {0xA1,0xAE}, {0xC8,0xCF}, {0xA1,0x5D}, {0xA1,0x5E},
- {0xA1,0xAF}, {0xA1,0xCF}, {0xA1,0x41}, {0xA1,0xD0},
- {0xA1,0x44}, {0xA1,0xFE}, {0xA2,0xAF}, {0xA2,0xB0},
- {0xA2,0xB1}, {0xA2,0xB2}, {0xA2,0xB3}, {0xA2,0xB4},
- {0xA2,0xB5}, {0xA2,0xB6}, {0xA2,0xB7}, {0xA2,0xB8},
- {0xA1,0x47}, {0xA1,0x46}, {0xA1,0xD5}, {0xA1,0xD7},
- {0xA1,0xD6}, {0xA1,0x48}, {0xA2,0x49}, {0xA2,0xCF},
- {0xA2,0xD0}, {0xA2,0xD1}, {0xA2,0xD2}, {0xA2,0xD3},
- {0xA2,0xD4}, {0xA2,0xD5}, {0xA2,0xD6}, {0xA2,0xD7},
- {0xA2,0xD8}, {0xA2,0xD9}, {0xA2,0xDA}, {0xA2,0xDB},
- {0xA2,0xDC}, {0xA2,0xDD}, {0xA2,0xDE}, {0xA2,0xDF},
- {0xA2,0xE0}, {0xA2,0xE1}, {0xA2,0xE2}, {0xA2,0xE3},
- {0xA2,0xE4}, {0xA2,0xE5}, {0xA2,0xE6}, {0xA2,0xE7},
- {0xA2,0xE8}, {0xC6,0xE4}, {0xA2,0x40}, {0xC6,0xE5},
- {0xA1,0x73}, {0xA1,0xC4}, {0xA1,0xA5}, {0xA2,0xE9},
- {0xA2,0xEA}, {0xA2,0xEB}, {0xA2,0xEC}, {0xA2,0xED},
- {0xA2,0xEE}, {0xA2,0xEF}, {0xA2,0xF0}, {0xA2,0xF1},
- {0xA2,0xF2}, {0xA2,0xF3}, {0xA2,0xF4}, {0xA2,0xF5},
- {0xA2,0xF6}, {0xA2,0xF7}, {0xA2,0xF8}, {0xA2,0xF9},
- {0xA2,0xFA}, {0xA2,0xFB}, {0xA2,0xFC}, {0xA2,0xFD},
- {0xA2,0xFE}, {0xA3,0x40}, {0xA3,0x41}, {0xA3,0x42},
- {0xA3,0x43}, {0xA1,0x61}, {0xA1,0x55}, {0xA1,0x62},
- {0xA1,0xE3}, {0xA1,0x4E}, {0xA2,0x46}, {0xA2,0x47},
- {0xC8,0xCD}, {0xA1,0xC3}, {0xC8,0xCE}, {0xA2,0x44},
- {0xF9,0xFE}, {0x9C,0x71}, {0x93,0x75}, {0x93,0x76},
- {0x95,0x48}, {0x8E,0xC6}, {0x8B,0xC5}, {0x8B,0xFA},
- {0xC8,0x7C}, {0x9A,0xB4}, {0x88,0x4E}, {0x88,0x4B},
- {0xC8,0x7A}, {0x88,0x48}, {0x88,0x47}, {0xA0,0xF6},
- {0x88,0x45}, {0x88,0x53}, {0xFC,0xAD}, {0x8A,0xAD},
- {0x92,0x72}, {0xFC,0x47}, {0x94,0xDF}, {0x9F,0xD1},
- {0xFB,0xCB}, {0x92,0x7D}, {0x98,0xA4}, {0x94,0xE7},
- {0x90,0xCB}, {0x92,0x7B}, {0x94,0xD8}, {0xFC,0x5F},
- {0xFA,0x54}, {0x9A,0xB5}, {0x96,0xDA}, {0x92,0x79},
- {0xFA,0x74}, {0x92,0x75}, {0x8D,0xFB}, {0x8A,0x49},
- {0x92,0xDF}, {0x9B,0x7C}, {0xFA,0x63}, {0xFA,0x60},
- {0x92,0x6D}, {0xFA,0x62}, {0x9A,0xB6}, {0x97,0x6B},
- {0xFD,0x6A}, {0xFD,0x54}, {0x92,0x73}, {0x97,0xD8},
- {0x9F,0xBB}, {0x93,0x42}, {0x92,0x76}, {0xFA,0x65},
- {0x92,0x6C}, {0xFA,0x6E}, {0x9E,0xE0}, {0x92,0xC0},
- {0x92,0xBF}, {0x92,0xBE}, {0x9A,0xBA}, {0x8A,0xB3},
- {0x97,0x75}, {0xFA,0x40}, {0xFA,0x76}, {0xFB,0xD0},
- {0xFA,0x7B}, {0xFE,0x6D}, {0x9B,0xB3}, {0x89,0xCC},
- {0x9A,0xBE}, {0xFA,0x42}, {0x92,0xBC}, {0x94,0x5C},
- {0x9B,0xB5}, {0x9A,0xBF}, {0x98,0xA7}, {0x97,0xA4},
- {0x90,0xFD}, {0xFC,0x7B}, {0x9A,0xC0}, {0x92,0xC3},
- {0x8A,0xAA}, {0x9B,0xD0}, {0x95,0x50}, {0x92,0xC6},
- {0x98,0xA6}, {0x95,0x46}, {0xFD,0x63}, {0xFA,0xC2},
- {0x9E,0xC3}, {0x89,0xB2}, {0x9C,0x66}, {0x90,0x53},
- {0x97,0xC1}, {0x9A,0xC4}, {0x9A,0xC5}, {0x8E,0xEF},
- {0xFA,0xE9}, {0x92,0x62}, {0x8A,0xF7}, {0x9A,0xC6},
- {0x92,0xE1}, {0x9A,0xC9}, {0xFA,0xC6}, {0x97,0xA5},
- {0x9A,0xCB}, {0xFA,0x72}, {0x8A,0x5E}, {0x94,0xE0},
- {0x92,0xCC}, {0x8A,0xE5}, {0xFE,0x5C}, {0x9A,0xCC},
- {0x9D,0xF9}, {0x8A,0x43}, {0x8A,0xA6}, {0x9A,0xCD},
- {0x9A,0xCE}, {0xFA,0xEE}, {0x9B,0xCC}, {0x9A,0xCF},
- {0x9A,0xD1}, {0x9D,0xFA}, {0x9D,0x7C}, {0x9A,0xD3},
- {0x97,0xA6}, {0x99,0x5F}, {0xFB,0xF6}, {0x9F,0xC5},
- {0x8A,0x59}, {0x8B,0x6B}, {0x9A,0xD4}, {0x9A,0xD5},
- {0x97,0xA2}, {0x8A,0x44}, {0x9F,0x4A}, {0x90,0xA1},
- {0xFD,0xA4}, {0x8A,0x64}, {0x8A,0xF2}, {0x8A,0xF8},
- {0x9D,0xD8}, {0x94,0xD6}, {0xFA,0xFE}, {0xFB,0xA7},
- {0x9A,0xD6}, {0x9F,0x4D}, {0xFA,0xF6}, {0x8A,0x57},
- {0x8B,0x43}, {0x8B,0x44}, {0x8A,0xB6}, {0x8A,0xC0},
- {0x9E,0x54}, {0x9A,0xD7}, {0x9A,0xD8}, {0x9A,0xDC},
- {0x8A,0xCA}, {0x9E,0xA8}, {0x92,0x63}, {0x9A,0xDD},
- {0x8B,0x65}, {0x8B,0x6F}, {0x8B,0x7E}, {0x8F,0x43},
- {0x92,0xD0}, {0x8A,0xF4}, {0x9D,0xBE}, {0x9A,0xE1},
- {0xFC,0xDE}, {0x9D,0xFD}, {0x8B,0x66}, {0x8B,0x70},
- {0x8B,0x75}, {0x8A,0xE4}, {0x8B,0xA4}, {0x8A,0xED},
- {0x8A,0x5D}, {0x8B,0x48}, {0x9D,0xED}, {0x9E,0x40},
- {0x8A,0xEF}, {0x8A,0xF6}, {0x9E,0x76}, {0x9E,0xE3},
- {0x9A,0xDE}, {0x8D,0xFE}, {0xFA,0xFC}, {0x9C,0xB1},
- {0x9E,0x77}, {0x8B,0x64}, {0x8B,0x67}, {0x97,0x4B},
- {0x96,0x53}, {0x9A,0xE0}, {0x8B,0x4A}, {0x8A,0xF1},
- {0x8A,0xD7}, {0xA0,0xAB}, {0x8A,0xB5}, {0x8A,0x5F},
- {0x8A,0xEE}, {0x9A,0xDF}, {0x8A,0xFE}, {0x8A,0x58},
- {0x8B,0xA3}, {0x8B,0xA7}, {0x9A,0xE3}, {0x92,0x61},
- {0x9D,0xD7}, {0x9E,0x7D}, {0x9E,0xA7}, {0x9E,0xAB},
- {0x90,0x42}, {0x8B,0x79}, {0x8B,0x7A}, {0x9A,0xE6},
- {0x9A,0xE5}, {0x8A,0x7E}, {0x9E,0x44}, {0x9A,0xE7},
- {0x8A,0x7C}, {0x8B,0x71}, {0x9A,0xE9}, {0x9A,0xEA},
- {0x9A,0xEB}, {0x8A,0xBD}, {0xFB,0x4E}, {0x9A,0xED},
- {0x8A,0xF9}, {0x9E,0x63}, {0x8B,0x49}, {0x8A,0xCE},
- {0x8B,0x6E}, {0x8A,0xE8}, {0x9A,0xEE}, {0x92,0xCE},
- {0x8A,0x5A}, {0x8B,0x7B}, {0x8B,0x7C}, {0x9A,0xEF},
- {0x9A,0xF0}, {0x8A,0xFA}, {0x89,0x41}, {0x8B,0x72},
- {0x8A,0xF3}, {0x8B,0xA8}, {0x9E,0xAE}, {0x9E,0x72},
- {0xFB,0x73}, {0xFB,0x5F}, {0x90,0xBA}, {0x91,0xFE},
- {0x9E,0xF6}, {0x97,0xED}, {0x9A,0xF3}, {0xA0,0xEE},
- {0x96,0x7C}, {0x93,0x45}, {0x98,0x6E}, {0xFA,0x56},
- {0x9A,0xF5}, {0xFC,0x4B}, {0x9A,0xF4}, {0xFE,0xDE},
- {0xFC,0xB7}, {0x97,0xF1}, {0x97,0xC7}, {0x9C,0xCB},
- {0x92,0x40}, {0x9C,0xE8}, {0x91,0xFD}, {0x97,0x4E},
- {0xFB,0x68}, {0x97,0x6C}, {0x8C,0xC2}, {0x97,0xE8},
- {0xFB,0x6A}, {0x8B,0x74}, {0x8E,0xE7}, {0xFD,0xC8},
- {0x92,0x41}, {0x96,0xA1}, {0x8E,0xF3}, {0x9A,0xF7},
- {0x8F,0xA6}, {0xFA,0xD6}, {0x9C,0xC7}, {0xFA,0xD7},
- {0x9A,0xF8}, {0xFB,0xA1}, {0x8E,0xC5}, {0xFB,0xA4},
- {0xFB,0xC2}, {0x9A,0xC1}, {0x91,0xFA}, {0xFE,0xDB},
- {0x97,0xAB}, {0x91,0x47}, {0xFB,0xB1}, {0x8F,0xEA},
- {0x94,0xD2}, {0xFE,0x61}, {0xFA,0xCE}, {0x92,0xED},
- {0x91,0xF3}, {0x93,0xC6}, {0x93,0x5A}, {0xFA,0xFB},
- {0x92,0xEF}, {0xFA,0xC8}, {0x98,0x47}, {0x93,0x66},
- {0x98,0x55}, {0x96,0xE6}, {0x9F,0x43}, {0x9F,0xAA},
- {0x94,0xDA}, {0x92,0xEE}, {0xFC,0xAF}, {0xFB,0xFB},
- {0x8E,0xF9}, {0x91,0xF6}, {0x93,0x64}, {0x94,0xF5},
- {0x9C,0xB6}, {0xFB,0xAD}, {0x98,0x4E}, {0x8F,0x44},
- {0x96,0xFD}, {0x9A,0xF9}, {0x9A,0xFA}, {0x97,0x69},
- {0x95,0xD4}, {0x98,0x4B}, {0xFB,0xAA}, {0x98,0x7C},
- {0x91,0xEA}, {0x9D,0xAF}, {0x9D,0xC5}, {0x91,0xF1},
- {0x8E,0xB1}, {0x97,0xA9}, {0xFB,0xAC}, {0xFC,0xB8},
- {0x9C,0xB9}, {0xFB,0xB0}, {0xFC,0xD2}, {0x93,0xCB},
- {0x9A,0xFD}, {0x91,0xF4}, {0x8B,0xAC}, {0xA0,0x55},
- {0x95,0x74}, {0x95,0xBE}, {0x97,0xAD}, {0x8E,0xE9},
- {0x92,0xF8}, {0x97,0xBE}, {0x91,0x6C}, {0x94,0xAA},
- {0xFC,0x63}, {0x9D,0xC6}, {0x97,0xB5}, {0x92,0xB8},
- {0x91,0xEF}, {0xFE,0xA6}, {0x97,0x60}, {0x93,0x58},
- {0x95,0x76}, {0x8F,0xAC}, {0x91,0xEC}, {0x97,0xB4},
- {0x91,0xF7}, {0x97,0x4A}, {0xFB,0x49}, {0x95,0x78},
- {0x93,0xBC}, {0x91,0xD6}, {0x93,0x55}, {0x93,0x56},
- {0x98,0x51}, {0x8F,0xF8}, {0xFB,0xC0}, {0x93,0xF2},
- {0x90,0xD0}, {0x9C,0x44}, {0x92,0x55}, {0x93,0x63},
- {0x91,0xA5}, {0xA0,0xED}, {0xFD,0x6B}, {0x9A,0xFE},
- {0x93,0x51}, {0x8C,0x57}, {0xFA,0x78}, {0xFE,0xA8},
- {0x93,0x50}, {0xFA,0x4C}, {0x92,0xF7}, {0x9B,0x40},
- {0xFB,0xCE}, {0x9B,0x41}, {0xFE,0xAD}, {0xFB,0xD5},
- {0x8B,0xC2}, {0x9A,0x7C}, {0x9B,0x42}, {0x9B,0x43},
- {0x9E,0x79}, {0xFB,0xD9}, {0x9B,0x44}, {0xA0,0xA7},
- {0x9B,0xF3}, {0x8C,0x79}, {0x93,0x5E}, {0x89,0xCB},
- {0x9F,0x53}, {0x93,0xD7}, {0xFB,0xE1}, {0xFE,0xD0},
- {0xFB,0xE2}, {0xFC,0xE3}, {0x90,0x74}, {0xFB,0xE6},
- {0x9B,0xB7}, {0x9B,0x45}, {0x9B,0x47}, {0x9F,0x50},
- {0x9B,0x48}, {0xFC,0x5B}, {0x98,0xA9}, {0x9C,0xFD},
- {0x88,0x4C}, {0x9B,0x4B}, {0xFB,0xEC}, {0x8C,0x69},
- {0x9B,0xA8}, {0x8A,0xD5}, {0xFA,0x73}, {0xFD,0x59},
- {0x91,0xA2}, {0xFB,0xED}, {0x9C,0xA9}, {0x8A,0xA8},
- {0x9B,0xC3}, {0x8A,0xE1}, {0x9B,0x4E}, {0x95,0xD0},
- {0x90,0x5F}, {0x97,0xEE}, {0xFC,0x4E}, {0x9B,0x4F},
- {0x9B,0x50}, {0x9E,0xC6}, {0xFC,0x50}, {0xFD,0x73},
- {0xFD,0xA7}, {0x9D,0xA2}, {0xFA,0x58}, {0xFA,0x5E},
- {0xA0,0x59}, {0xFA,0x75}, {0xFB,0xBE}, {0x9C,0xA2},
- {0x93,0x70}, {0x93,0x71}, {0x93,0x77}, {0xFE,0xEF},
- {0x93,0x6D}, {0xFC,0x5D}, {0x90,0xB8}, {0x8A,0xFC},
- {0xFB,0x41}, {0x9E,0x6B}, {0x94,0xE3}, {0x8E,0xE2},
- {0x8C,0x7D}, {0x8E,0xD7}, {0x9C,0x4D}, {0x96,0xA3},
- {0x9B,0x51}, {0x8A,0xC3}, {0x96,0xAA}, {0xFC,0x68},
- {0x8B,0x6D}, {0xFD,0x67}, {0x8A,0xE9}, {0xFC,0xA1},
- {0x93,0x6C}, {0x9B,0x52}, {0xFE,0x70}, {0xFC,0xA8},
- {0xFC,0xE9}, {0x9C,0xB4}, {0x8A,0xEA}, {0x9B,0x53},
- {0x9B,0x55}, {0x96,0xAB}, {0xFC,0xA7}, {0x9B,0x56},
- {0x8A,0xBC}, {0x8A,0xCB}, {0x9B,0x57}, {0x89,0xCD},
- {0x9B,0x59}, {0x9B,0x5B}, {0x93,0xA5}, {0x9B,0x5D},
- {0x9E,0x4F}, {0x93,0xA3}, {0x8A,0x7B}, {0x8B,0x42},
- {0x97,0x50}, {0x8F,0xB3}, {0x8A,0x50}, {0x9B,0x60},
- {0x8B,0x45}, {0x8B,0x46}, {0x9D,0xFE}, {0x9B,0x62},
- {0x93,0x7B}, {0x93,0xB1}, {0x8A,0x60}, {0x8A,0xD8},
- {0x9B,0x63}, {0x8A,0x69}, {0x8A,0x47}, {0x8A,0xCC},
- {0x93,0x7C}, {0x9B,0x65}, {0x9B,0x66}, {0x8A,0x72},
- {0x8A,0x7A}, {0x93,0xAF}, {0x8A,0xB0}, {0x9B,0x68},
- {0x9E,0xA3}, {0xFA,0xEC}, {0x8B,0x77}, {0x9B,0x67},
- {0x8B,0x59}, {0xFC,0xB1}, {0xFC,0xBB}, {0x9B,0x69},
- {0x93,0xA8}, {0x8A,0xE0}, {0x9E,0x51}, {0x8F,0x5F},
- {0x9B,0x6A}, {0x9B,0x6B}, {0x97,0xEC}, {0x9B,0x6C},
- {0xFE,0x4E}, {0xFD,0xC2}, {0x9B,0x6D}, {0x91,0x67},
- {0xFC,0xCC}, {0x93,0xB6}, {0x90,0xE4}, {0x90,0xE5},
- {0x9E,0xF2}, {0x93,0xCA}, {0x8B,0xBC}, {0x8F,0x46},
- {0x93,0xCF}, {0xFC,0xDB}, {0xFC,0xDC}, {0x93,0xC0},
- {0xFC,0xE6}, {0x96,0xE7}, {0xFC,0xD8}, {0xFC,0xD9},
- {0xFD,0xA6}, {0x93,0xCE}, {0x95,0xF1}, {0x9C,0xE9},
- {0xFC,0xE4}, {0x94,0xAF}, {0xFA,0x77}, {0x93,0xCC},
- {0x90,0x5A}, {0x8C,0x54}, {0x93,0xBF}, {0xFB,0x51},
- {0x93,0xB9}, {0xFE,0xD7}, {0x93,0xB7}, {0x93,0xD9},
- {0x93,0xBB}, {0x93,0xDA}, {0x98,0xA3}, {0x90,0xD1},
- {0x9B,0x6E}, {0xFA,0x70}, {0x9B,0xEB}, {0x9B,0x6F},
- {0xFC,0xFC}, {0x8B,0x40}, {0xA0,0x7B}, {0x8C,0xA1},
- {0x97,0xF7}, {0x93,0xE2}, {0xFC,0xD6}, {0x95,0x59},
- {0x93,0xA6}, {0xFD,0x40}, {0x93,0x5F}, {0x97,0xF2},
- {0x9C,0x76}, {0x8E,0xF8}, {0x8F,0x47}, {0x9B,0x74},
- {0x92,0xB4}, {0x91,0xED}, {0x96,0xD2}, {0xFD,0x46},
- {0x8F,0x4F}, {0x95,0x49}, {0x9B,0x75}, {0xFA,0x5C},
- {0x9B,0x79}, {0xFD,0x4B}, {0x96,0xD3}, {0xFD,0x58},
- {0x94,0x5F}, {0xA0,0xF5}, {0x92,0x43}, {0x97,0xFA},
- {0x9D,0xD9}, {0x97,0xF4}, {0x92,0x4D}, {0xFD,0x5B},
- {0x9B,0x7A}, {0x9E,0xD5}, {0xFA,0xAE}, {0x9C,0xC9},
- {0x92,0x58}, {0x8E,0xC8}, {0x94,0xB4}, {0x93,0xE1},
- {0x93,0xDF}, {0xFC,0xF0}, {0x93,0xEC}, {0x97,0xF6},
- {0x96,0xCF}, {0x93,0xDE}, {0x8A,0xCF}, {0x9B,0xA2},
- {0xFD,0x69}, {0x93,0x52}, {0x98,0xA2}, {0xFD,0x6E},
- {0x8C,0xA4}, {0xFA,0x7C}, {0x93,0xFA}, {0x90,0x7C},
- {0x8F,0x67}, {0x9D,0xB7}, {0xA0,0xE9}, {0xFA,0x4E},
- {0xFD,0xA1}, {0x9E,0x74}, {0x9F,0xBF}, {0x9E,0xCB},
- {0x9B,0xB9}, {0x9D,0xD4}, {0x97,0xB9}, {0x8E,0xF1},
- {0x95,0x7B}, {0x9E,0xD2}, {0x97,0x53}, {0x96,0xA4},
- {0x8F,0xBE}, {0x94,0xD9}, {0x90,0x58}, {0xFD,0x79},
- {0xFD,0x7B}, {0x8E,0xDA}, {0x8E,0xFA}, {0x9B,0xA5},
- {0x9E,0xD9}, {0x97,0xD4}, {0x90,0xBB}, {0xFD,0xBC},
- {0xFD,0xC6}, {0x92,0x48}, {0x92,0xB5}, {0x9D,0xC1},
- {0x92,0xB9}, {0x92,0xA6}, {0x8F,0x4B}, {0x9B,0xA6},
- {0x92,0xB6}, {0x8E,0x40}, {0x9E,0xD8}, {0x94,0x5E},
- {0x98,0x5F}, {0x94,0xCE}, {0x92,0x4A}, {0xFD,0x70},
- {0x94,0x67}, {0x8D,0xEC}, {0x9B,0xD8}, {0x94,0x48},
- {0xFA,0xC1}, {0x9C,0xF7}, {0xFD,0xBE}, {0x8F,0xDA},
- {0xFD,0xD9}, {0xFC,0x7E}, {0x93,0xF9}, {0xFA,0x43},
- {0xFA,0xEB}, {0xFA,0xC3}, {0x97,0xD3}, {0x95,0xF9},
- {0x9C,0x48}, {0xFD,0xD8}, {0xA0,0xD8}, {0xFD,0xD7},
- {0xFB,0x4A}, {0x9B,0xAF}, {0x94,0x4B}, {0xFD,0xC9},
- {0x8E,0xAC}, {0xFD,0xB2}, {0x92,0x5A}, {0xFC,0xBD},
- {0x92,0xD9}, {0xFD,0xD5}, {0x92,0xDD}, {0x92,0x59},
- {0x96,0xBA}, {0x92,0x5B}, {0x9B,0xAB}, {0xFD,0xDA},
- {0xFD,0xDE}, {0xFD,0xD3}, {0x8C,0x46}, {0xFD,0xD6},
- {0xFD,0xDC}, {0xFD,0xDD}, {0x90,0xFE}, {0xFE,0xA1},
- {0x8B,0xAD}, {0x9C,0xD8}, {0x9E,0x6D}, {0xFD,0x7C},
- {0xFB,0x61}, {0x96,0xF8}, {0x96,0xF0}, {0xFC,0xF4},
- {0xFE,0x60}, {0x98,0x52}, {0x96,0x4F}, {0x91,0x6E},
- {0x98,0x6D}, {0x98,0x64}, {0x94,0x53}, {0xFD,0xEC},
- {0xFB,0x78}, {0x95,0xBA}, {0x98,0x5D}, {0x92,0xF9},
- {0x98,0x5A}, {0xFD,0xF6}, {0x93,0xD0}, {0x98,0x62},
- {0x9B,0xAD}, {0x97,0x4F}, {0x9B,0xAE}, {0x94,0x52},
- {0x9B,0xB0}, {0x91,0xD2}, {0x97,0xEA}, {0xFB,0x6B},
- {0x91,0xB1}, {0xFD,0xF3}, {0x92,0xCB}, {0x9B,0xB1},
- {0xFC,0xEC}, {0x98,0x6B}, {0x97,0x51}, {0x98,0x71},
- {0x95,0xEF}, {0x9E,0xF3}, {0x91,0xE8}, {0x9B,0xBA},
- {0xFB,0x4C}, {0x92,0x6A}, {0xFD,0xF8}, {0x98,0x61},
- {0x91,0xE7}, {0x93,0xED}, {0x97,0x44}, {0x91,0xE1},
- {0xFB,0xF5}, {0x98,0x69}, {0x8A,0x62}, {0x9B,0xBB},
- {0x8C,0xA8}, {0x9C,0x55}, {0x8E,0x77}, {0x8A,0xB2},
- {0x9E,0xBC}, {0x93,0xE6}, {0x93,0xA2}, {0x9B,0xBD},
- {0x94,0xB3}, {0x93,0x7D}, {0x9E,0x66}, {0x94,0x59},
- {0x9B,0xBF}, {0x94,0x58}, {0x9E,0xA5}, {0x9B,0xC7},
- {0xFE,0x54}, {0x8E,0x74}, {0x8B,0xD6}, {0x94,0xB6},
- {0xFD,0x74}, {0x98,0xC0}, {0x94,0xA5}, {0x9B,0xC8},
- {0x95,0xED}, {0xFD,0x7E}, {0xFB,0xEB}, {0xFD,0x7D},
- {0x97,0x6F}, {0x94,0x61}, {0x9F,0xC1}, {0x95,0xD7},
- {0xFA,0x52}, {0x9C,0x58}, {0x9F,0x68}, {0x9B,0xE7},
- {0xFC,0xCE}, {0x96,0xE8}, {0xFA,0x49}, {0x97,0xA1},
- {0x95,0x4D}, {0x9E,0xF8}, {0xFE,0x49}, {0x91,0xCE},
- {0x97,0x71}, {0x8C,0xCF}, {0xFD,0xB1}, {0xFC,0x6E},
- {0x9C,0xF2}, {0x93,0xB8}, {0x90,0x43}, {0x97,0x59},
- {0x94,0xD7}, {0xFE,0x66}, {0x94,0x7D}, {0xFC,0x6F},
- {0x92,0x46}, {0xFA,0x6D}, {0x8E,0xF7}, {0xFB,0xB7},
- {0x94,0x7C}, {0x92,0xCD}, {0x97,0xB2}, {0xFE,0x65},
- {0x96,0x7E}, {0x97,0x58}, {0x9B,0x77}, {0x91,0xCF},
- {0x94,0xA4}, {0x9C,0xAD}, {0x8B,0xAB}, {0x96,0xD5},
- {0xFC,0xB3}, {0x93,0xAE}, {0x97,0x6D}, {0x94,0x46},
- {0x95,0xF7}, {0x9C,0x46}, {0x95,0x5B}, {0x91,0xD1},
- {0x94,0xF4}, {0xFE,0x67}, {0x92,0xA5}, {0xFE,0xDF},
- {0x8C,0xAB}, {0x9B,0xC9}, {0xFC,0xED}, {0xFD,0xFA},
- {0xFC,0xC8}, {0xFE,0x62}, {0x91,0xFC}, {0xFE,0x6B},
- {0xFD,0xF9}, {0xFC,0xC7}, {0x91,0x4E}, {0x9C,0xB8},
- {0x97,0x67}, {0x95,0xEE}, {0x9B,0xB2}, {0x94,0x60},
- {0x94,0xA2}, {0x98,0x75}, {0x97,0xAC}, {0x91,0xD3},
- {0x98,0x7B}, {0x8E,0xEB}, {0x97,0x6A}, {0x96,0x5E},
- {0x97,0xEB}, {0x9F,0xF9}, {0x95,0xF8}, {0xFE,0xA2},
- {0x8F,0xE6}, {0xFE,0x7E}, {0x9D,0xA4}, {0x97,0x68},
- {0x8E,0xEC}, {0x94,0xBD}, {0x94,0x5B}, {0x9C,0xF6},
- {0xFA,0xA7}, {0x9B,0xD9}, {0xFA,0x5D}, {0x96,0x56},
- {0x97,0x62}, {0x94,0xBA}, {0xA0,0x4F}, {0x92,0xD8},
- {0x9B,0xCB}, {0x94,0xBB}, {0x9D,0x5F}, {0x90,0xCF},
- {0x94,0x65}, {0x9F,0x4C}, {0x90,0xD8}, {0x9E,0xBE},
- {0xFB,0x6D}, {0x95,0xCA}, {0x9D,0xC2}, {0x97,0xF8},
- {0x8F,0xFC}, {0x94,0x73}, {0x94,0x74}, {0xFE,0xB7},
- {0x8A,0x4B}, {0x8A,0x55}, {0x8B,0x69}, {0x8A,0xDC},
- {0x8B,0x76}, {0x9B,0xCE}, {0x8A,0x68}, {0xA0,0xF8},
- {0x98,0xDF}, {0xFE,0xB5}, {0x9B,0xCF}, {0x96,0xFB},
- {0x9B,0xFB}, {0x9E,0xCE}, {0x8E,0xE5}, {0x9E,0x7B},
- {0x9B,0xD2}, {0x8A,0xA5}, {0xFE,0xCE}, {0x8A,0x45},
- {0x9D,0xFC}, {0xFE,0xCF}, {0x8B,0xA5}, {0x8C,0x4A},
- {0x8A,0xEC}, {0xFC,0xE0}, {0x94,0xAD}, {0xFE,0xD5},
- {0x94,0xAC}, {0xFC,0x5A}, {0x9B,0xD6}, {0x8A,0x6F},
- {0x8B,0xA9}, {0x8E,0x5F}, {0x9D,0xCB}, {0xFC,0xE7},
- {0x9B,0xD7}, {0x93,0xC8}, {0x91,0xF0}, {0x8F,0xE0},
- {0x9B,0xDB}, {0x90,0xED}, {0x9B,0xDC}, {0xA0,0xEC},
- {0x98,0xFA}, {0x9B,0xE0}, {0x93,0xC7}, {0x92,0x49},
- {0x96,0xE1}, {0x9B,0xE2}, {0x9B,0xE4}, {0x8F,0xE1},
- {0x9B,0xE5}, {0x94,0xC0}, {0x93,0xC3}, {0x93,0xC5},
- {0x90,0x79}, {0x97,0x7B}, {0x90,0x7E}, {0xFE,0xE6},
- {0xFE,0x46}, {0x9D,0xB8}, {0x92,0x70}, {0x95,0xA8},
- {0x8C,0xB0}, {0x94,0xC8}, {0x98,0xB9}, {0x91,0x40},
- {0xFC,0xBE}, {0x91,0x57}, {0x8B,0xB2}, {0xFA,0xDF},
- {0x9B,0xE6}, {0x96,0x43}, {0x8E,0x44}, {0x9C,0x4F},
- {0xFE,0xF4}, {0x9B,0xE8}, {0x93,0xDC}, {0x96,0x6F},
- {0x8E,0x4A}, {0x9B,0xED}, {0x92,0xF6}, {0x9D,0xB9},
- {0x8E,0x4E}, {0xFB,0xCF}, {0x9E,0xC2}, {0x94,0xE5},
- {0x9B,0xF0}, {0x94,0xE4}, {0x95,0x51}, {0x8B,0xBB},
- {0x9B,0xF1}, {0x94,0xF0}, {0x8E,0x64}, {0x94,0xEA},
- {0x8F,0x61}, {0x9B,0x64}, {0x8E,0x5B}, {0x9B,0xF2},
- {0x9F,0xBE}, {0x9D,0xC9}, {0x8E,0x6C}, {0x8F,0x73},
- {0x8C,0xAF}, {0x8F,0x75}, {0x8E,0x71}, {0x8E,0x60},
- {0x8E,0x6A}, {0x8C,0x4C}, {0x95,0x52}, {0x95,0x54},
- {0x8A,0xD4}, {0x9D,0xBB}, {0x95,0x43}, {0x92,0xFE},
- {0x94,0xF2}, {0x94,0xF1}, {0xA0,0xEA}, {0x9D,0xD2},
- {0xA0,0xB1}, {0x91,0xF8}, {0x94,0x62}, {0x9B,0xA4},
- {0x8E,0xAD}, {0x9E,0xAD}, {0x96,0xD0}, {0xFE,0xEE},
- {0x8A,0xB4}, {0x97,0x57}, {0x8A,0x77}, {0x9B,0xF7},
- {0x8E,0xB5}, {0xA0,0x6D}, {0x8E,0xB6}, {0x97,0x56},
- {0x95,0x40}, {0xA0,0xF3}, {0x94,0xBE}, {0x9B,0xFA},
- {0xFD,0xDF}, {0x9D,0xBC}, {0x94,0xFE}, {0x8B,0xDB},
- {0xA0,0xFE}, {0x8E,0xC0}, {0x9F,0x47}, {0x8B,0xDE},
- {0xA0,0xFB}, {0x8E,0xC3}, {0x96,0x49}, {0xFE,0xC2},
- {0x95,0x4C}, {0x9B,0xFD}, {0x90,0xCC}, {0x9C,0x60},
- {0x95,0x4B}, {0x9B,0xFE}, {0x9C,0x70}, {0x9C,0x43},
- {0x9C,0x47}, {0x8E,0xCC}, {0x8E,0x54}, {0x8E,0xE4},
- {0x9C,0x49}, {0x8B,0x5E}, {0x95,0x5E}, {0x95,0x5C},
- {0x9C,0x4B}, {0x8B,0xE1}, {0x8E,0xD9}, {0x9D,0xB4},
- {0x92,0x5F}, {0x9C,0x4C}, {0x8A,0xA1}, {0x8E,0xDB},
- {0x9C,0x56}, {0x8A,0xA2}, {0x97,0x54}, {0x9C,0x5E},
- {0x9E,0xD4}, {0x95,0x68}, {0xA0,0xC3}, {0x8A,0xE6},
- {0xA0,0xF7}, {0x9C,0x61}, {0x9C,0x5F}, {0xFC,0x4D},
- {0x9E,0x5B}, {0x9E,0x69}, {0x9C,0x63}, {0xFE,0xC7},
- {0xFE,0xC6}, {0x9C,0x67}, {0x9C,0x69}, {0x8B,0xE2},
- {0x91,0x65}, {0x9C,0xE7}, {0x8A,0x54}, {0x9C,0x6C},
- {0x9C,0x6E}, {0xFE,0x5D}, {0x9C,0x73}, {0x95,0x6A},
- {0x95,0x6D}, {0x8E,0xF0}, {0x8F,0x4D}, {0x8E,0xF6},
- {0xFA,0xBC}, {0x8C,0xD5}, {0xFB,0xDA}, {0x8B,0x4C},
- {0xFD,0x75}, {0x9B,0xDD}, {0xFA,0xF5}, {0x9C,0x74},
- {0x95,0x45}, {0x96,0xC6}, {0x8F,0x6A}, {0x8F,0x4E},
- {0x9C,0x78}, {0xFA,0x55}, {0x97,0xE4}, {0x9C,0x41},
- {0x92,0x5C}, {0x96,0xFA}, {0xFB,0x66}, {0x8E,0x65},
- {0x98,0x49}, {0xFB,0xA8}, {0x98,0x42}, {0x9C,0x7A},
- {0x97,0xFB}, {0x90,0xCA}, {0x9C,0x5B}, {0x97,0x4D},
- {0x8E,0xD3}, {0x95,0x61}, {0x9F,0x4B}, {0x9F,0xB5},
- {0x93,0xD2}, {0xFD,0xAA}, {0x98,0x40}, {0x91,0x46},
- {0x98,0x67}, {0xFA,0x5A}, {0xFB,0xA9}, {0x98,0x41},
- {0x8C,0xD3}, {0xFC,0xFD}, {0xFD,0xAB}, {0x91,0xBD},
- {0x8F,0x4C}, {0x96,0xC9}, {0x8F,0x55}, {0xFB,0xAE},
- {0x95,0x6F}, {0x9C,0x7D}, {0xA0,0xF0}, {0x94,0x6F},
- {0xFD,0xAC}, {0x96,0xCB}, {0x96,0xCE}, {0xA0,0x56},
- {0x9C,0xE1}, {0x96,0xC4}, {0x8F,0x5E}, {0x8F,0x6C},
- {0x8E,0xA3}, {0xFB,0xB3}, {0xFC,0x53}, {0xFD,0xB3},
- {0x8F,0x6B}, {0x96,0xCA}, {0x8F,0x79}, {0x9E,0x6F},
- {0xA0,0xC5}, {0xFC,0x78}, {0x8E,0x42}, {0x8F,0x5A},
- {0x90,0xC2}, {0x8E,0xA5}, {0x90,0x61}, {0x92,0x4F},
- {0x93,0x73}, {0xFD,0xB5}, {0xFE,0xCC}, {0xFB,0xBD},
- {0x8C,0xD6}, {0x98,0x43}, {0x96,0xC5}, {0x89,0xBC},
- {0x9C,0xA3}, {0x92,0x4B}, {0x98,0x4A}, {0x8F,0xA4},
- {0xA0,0xF1}, {0x9E,0xFB}, {0x9C,0xD2}, {0x8F,0xA7},
- {0xFC,0x5C}, {0x98,0x45}, {0x90,0x46}, {0x8C,0xD1},
- {0xFE,0xFA}, {0x95,0x60}, {0x9F,0x48}, {0x92,0x47},
- {0x90,0xFB}, {0x9C,0xA4}, {0x95,0x71}, {0x9C,0xA6},
- {0x9C,0xA7}, {0x9C,0xAA}, {0x9E,0xD3}, {0x9E,0x70},
- {0x9C,0xAC}, {0x8F,0xAE}, {0x95,0x7D}, {0x9C,0xB0},
- {0x97,0xB6}, {0xA0,0xBD}, {0x8A,0xDF}, {0x9E,0xAA},
- {0x8F,0xBD}, {0x8F,0xBF}, {0x93,0x69}, {0x9B,0xA7},
- {0xC8,0xA4}, {0xFE,0xEA}, {0x9B,0xE1}, {0x8B,0x41},
- {0x9D,0xB6}, {0xA0,0xEB}, {0x9B,0xA3}, {0x8B,0xA1},
- {0x8F,0xC8}, {0x89,0x4C}, {0x98,0x60}, {0x94,0xC7},
- {0x8B,0x58}, {0x95,0xAB}, {0x95,0xAA}, {0x9C,0xC3},
- {0x9C,0xC4}, {0x93,0xD6}, {0x9D,0xAC}, {0x8B,0xE6},
- {0x8A,0x71}, {0x8F,0xD1}, {0x99,0xD5}, {0x90,0xF4},
- {0x8A,0xA3}, {0x9C,0xCE}, {0x9C,0xD4}, {0x9C,0xD5},
- {0xFB,0xC8}, {0x9D,0xB3}, {0xFC,0x70}, {0x8F,0xD7},
- {0x9B,0x73}, {0xFA,0x5B}, {0x8F,0xD2}, {0x90,0x64},
- {0x98,0xB6}, {0x96,0x68}, {0x9C,0xD6}, {0x98,0xBD},
- {0x8F,0xDC}, {0xFE,0xF6}, {0x8F,0xD9}, {0x95,0x41},
- {0x97,0xF3}, {0x9B,0xF8}, {0x9E,0x6C}, {0x8F,0xF2},
- {0x8F,0xEE}, {0x9C,0xD7}, {0x9E,0x6E}, {0x8A,0x40},
- {0x8F,0xEF}, {0x8F,0xF4}, {0x8F,0xF5}, {0x95,0xC2},
- {0x98,0x6A}, {0x97,0xCF}, {0x9E,0x7C}, {0x90,0x41},
- {0x9C,0xDB}, {0x94,0x41}, {0x9C,0xE6}, {0x9D,0xB0},
- {0x9C,0xEA}, {0x9C,0xED}, {0x9C,0xFA}, {0x8B,0x62},
- {0x8A,0x4E}, {0x9C,0xCA}, {0x8A,0x66}, {0x9C,0xFB},
- {0x9C,0xFC}, {0x9C,0xFE}, {0x8A,0x53}, {0x9C,0xE5},
- {0x9D,0x40}, {0x9D,0x41}, {0x90,0x45}, {0x8B,0x73},
- {0x97,0xCA}, {0x9D,0x42}, {0x8A,0x61}, {0x8B,0xAE},
- {0x8A,0xD2}, {0x8B,0xA2}, {0x9D,0xF2}, {0x9D,0x43},
- {0x9C,0xDF}, {0x9D,0x44}, {0x8E,0xCA}, {0x90,0x4E},
- {0x8E,0xB3}, {0x9F,0xF5}, {0x9D,0x45}, {0x90,0x4F},
- {0x9D,0x47}, {0x89,0xCA}, {0x9C,0xB5}, {0xFB,0xFE},
- {0x90,0x5E}, {0x90,0x63}, {0x90,0x57}, {0x90,0x66},
- {0x9B,0xC0}, {0xFC,0xE5}, {0x91,0x62}, {0x90,0x67},
- {0x8F,0xA1}, {0x8F,0xA2}, {0x9D,0x48}, {0xFA,0xD3},
- {0x90,0x5D}, {0x90,0xB9}, {0x90,0x6B}, {0x8C,0x5C},
- {0x90,0x69}, {0xFE,0x57}, {0xFE,0x55}, {0x90,0x73},
- {0x9B,0xEF}, {0x9C,0xF0}, {0x9D,0x4B}, {0xFE,0xD9},
- {0xFE,0xDA}, {0x91,0xE0}, {0x91,0xD8}, {0x96,0x46},
- {0x93,0x60}, {0xFA,0x53}, {0x9C,0xD3}, {0x9D,0x4E},
- {0xFB,0x40}, {0x8D,0xE2}, {0x94,0x42}, {0x90,0x56},
- {0x98,0x65}, {0x8C,0x6C}, {0xFA,0x4A}, {0x9D,0x50},
- {0x9D,0x52}, {0x95,0xAF}, {0x97,0x5A}, {0x93,0x49},
- {0x97,0x47}, {0xA0,0xF4}, {0x97,0x78}, {0x8F,0xCF},
- {0xFC,0x60}, {0x8C,0x4E}, {0xFC,0x56}, {0x91,0xDC},
- {0x96,0x61}, {0x92,0xEC}, {0x93,0x5D}, {0x8E,0xDE},
- {0x96,0xFE}, {0xFD,0x4F}, {0x95,0xDE}, {0x98,0xB0},
- {0xA0,0x40}, {0x97,0xBD}, {0x97,0x7D}, {0x97,0xF5},
- {0x9B,0xAC}, {0xFA,0xDA}, {0x92,0xC2}, {0x97,0xB1},
- {0x90,0x7B}, {0x93,0xFE}, {0x94,0x7B}, {0x97,0x77},
- {0xFA,0xBE}, {0xFD,0x43}, {0x90,0xC6}, {0x90,0xA4},
- {0x90,0xA8}, {0x94,0xA9}, {0x90,0xA9}, {0x8C,0x65},
- {0x95,0xE0}, {0x90,0x7D}, {0x92,0x65}, {0xFD,0xBA},
- {0x93,0xC4}, {0xFE,0xED}, {0x9D,0xAB}, {0xA0,0xE3},
- {0x96,0x48}, {0x9D,0x53}, {0x8A,0xA9}, {0x9B,0xC5},
- {0x96,0x5D}, {0x97,0x5F}, {0x96,0x5F}, {0x96,0x6E},
- {0xFB,0x5D}, {0x9D,0xB1}, {0xFE,0xA3}, {0x9D,0xB2},
- {0x95,0xAE}, {0xFC,0xA3}, {0xA0,0xA2}, {0x96,0x55},
- {0x9D,0x54}, {0x93,0x41}, {0x95,0xAD}, {0x91,0xD5},
- {0x97,0x7A}, {0xFD,0xFC}, {0x8E,0x47}, {0x93,0xFD},
- {0x90,0xA5}, {0x90,0xAC}, {0x95,0xAC}, {0x90,0xAE},
- {0xFE,0xA5}, {0x9D,0x56}, {0x97,0xE3}, {0x95,0xE2},
- {0x94,0x66}, {0x96,0x47}, {0x91,0xB8}, {0x9C,0xEC},
- {0x90,0xAD}, {0x95,0xE3}, {0x8B,0x4F}, {0x8A,0xE3},
- {0x8B,0x4D}, {0x95,0xEA}, {0x8B,0x4E}, {0x8C,0xC1},
- {0x8B,0xED}, {0x91,0xD9}, {0xA0,0xA4}, {0x95,0xF5},
- {0x95,0xF4}, {0x9F,0xB3}, {0xFE,0xAF}, {0xFE,0x72},
- {0x92,0x7A}, {0xFE,0xAC}, {0x95,0xF3}, {0x9D,0x58},
- {0x93,0x72}, {0x91,0xC5}, {0x96,0x42}, {0x90,0xCD},
- {0x95,0xFE}, {0x91,0x59}, {0x9C,0x65}, {0x97,0xCC},
- {0x90,0xCE}, {0x9D,0x59}, {0xFC,0xF5}, {0xFE,0xFD},
- {0x9D,0x5B}, {0x9D,0x5C}, {0x93,0x7E}, {0x98,0xAC},
- {0x9D,0x5E}, {0xFD,0xD0}, {0xFD,0x60}, {0x9C,0xCF},
- {0x90,0xDD}, {0x90,0xE0}, {0x90,0xF3}, {0x98,0xB1},
- {0x90,0xF0}, {0x93,0xBD}, {0x95,0xB7}, {0x9F,0x46},
- {0x8E,0x4B}, {0x96,0x58}, {0x8A,0x4C}, {0x9D,0x63},
- {0x9E,0xCF}, {0x9D,0x65}, {0x9D,0x66}, {0x96,0x5A},
- {0x9D,0x64}, {0x8A,0x6C}, {0x8A,0xD9}, {0x9D,0x67},
- {0x8A,0x70}, {0x8B,0xF3}, {0x91,0x50}, {0x9C,0xC1},
- {0x9D,0x68}, {0x93,0xA7}, {0x96,0x74}, {0xA0,0xEF},
- {0x91,0x51}, {0x96,0xC1}, {0x8C,0x64}, {0x96,0x76},
- {0x9D,0x69}, {0xFC,0xA4}, {0x9D,0x6A}, {0x92,0x4E},
- {0x9D,0x6B}, {0x9B,0xC1}, {0x9D,0x6C}, {0x8A,0x65},
- {0x91,0x5D}, {0x9D,0x6D}, {0x91,0x5A}, {0x8C,0x42},
- {0x9C,0xC0}, {0x91,0x6A}, {0x9D,0x6E}, {0x9E,0xA6},
- {0x9D,0xCD}, {0x9D,0x6F}, {0x89,0xBB}, {0x9E,0xF9},
- {0x96,0xB4}, {0x91,0x72}, {0x9E,0xC8}, {0x8B,0x55},
- {0x9D,0x71}, {0x9D,0x72}, {0x9E,0xCC}, {0x91,0x74},
- {0x9E,0xD0}, {0x90,0x5C}, {0x8E,0xD2}, {0x91,0xA8},
- {0x91,0x77}, {0x96,0xBF}, {0x96,0xC0}, {0x8F,0xB1},
- {0x96,0xB7}, {0x8C,0x55}, {0x91,0x78}, {0x89,0xBE},
- {0x91,0x7C}, {0xFB,0x77}, {0x91,0x75}, {0x91,0xA3},
- {0x91,0x76}, {0x96,0xBE}, {0x91,0x79}, {0x96,0xB6},
- {0x91,0xA4}, {0x91,0xA6}, {0x9D,0x75}, {0x90,0x52},
- {0xA0,0x45}, {0x91,0xA9}, {0x98,0xAA}, {0x8C,0x5F},
- {0x8B,0xAA}, {0x9C,0xDD}, {0x9D,0x77}, {0x89,0x40},
- {0x9E,0xEC}, {0x93,0xAA}, {0x94,0x78}, {0x9D,0x7A},
- {0x8A,0xC9}, {0x8B,0x4B}, {0x9F,0xEC}, {0x8A,0xE2},
- {0x9E,0x75}, {0x98,0x74}, {0x9A,0xC8}, {0xA0,0x47},
- {0x8B,0xC3}, {0xFC,0x48}, {0xFC,0x77}, {0x9C,0x52},
- {0x8E,0xFD}, {0x8F,0xA8}, {0x95,0x7A}, {0x8F,0xF0},
-};
-
-/* Index of the convert table */
-static const Summary16 big5hkscs_uni2index_page00[70] = {
- /* 0x0000 */
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0x0000 },
- { 0, 0x0000 }, { 0, 0x0000 }, { 0, 0xE7EE }, { 12, 0x87BF },
- { 23, 0xFFFF }, { 39, 0xFFFF }, { 55, 0xFFFF }, { 71, 0xFFFF },
- /* 0x0100 */
- { 87, 0x0003 }, { 89, 0x0C0C }, { 93, 0x0800 }, { 94, 0x0000 },
- { 94, 0x3800 }, { 97, 0x0008 }, { 98, 0x0800 }, { 99, 0x0000 },
- { 99, 0x0000 }, { 99, 0x0000 }, { 99, 0x0000 }, { 99, 0x0000 },
- { 99, 0x6000 }, { 101, 0x1557 }, { 109, 0x0000 }, { 109, 0x0000 },
- /* 0x0200 */
- { 109, 0x0000 }, { 109, 0x0000 }, { 109, 0x0000 }, { 109, 0x0000 },
- { 109, 0x0000 }, { 109, 0x0813 }, { 113, 0x0402 }, { 115, 0x0020 },
- { 116, 0x0408 }, { 118, 0x0000 }, { 118, 0x0000 }, { 118, 0x0000 },
- { 118, 0x2EC0 }, { 124, 0x0200 }, { 125, 0x0000 }, { 125, 0x0000 },
- /* 0x0300 */
- { 125, 0x0020 }, { 126, 0x0000 }, { 126, 0x0000 }, { 126, 0x0000 },
- { 126, 0x0000 }, { 126, 0x0000 }, { 126, 0x0000 }, { 126, 0x0000 },
- { 126, 0x0000 }, { 126, 0xFFFE }, { 141, 0x03FB }, { 150, 0xFFFE },
- { 165, 0x03FB }, { 174, 0x0000 }, { 174, 0x0000 }, { 174, 0x0000 },
- /* 0x0400 */
- { 174, 0x0002 }, { 175, 0xFFFF }, { 191, 0xFFFF }, { 207, 0xFFFF },
- { 223, 0xFFFF }, { 239, 0x0002 },
-};
-static const Summary16 big5hkscs_uni2index_page1e[13] = {
- /* 0x1E00 */
- { 240, 0x0000 }, { 240, 0x0000 }, { 240, 0x0000 }, { 240, 0x0000 },
- { 240, 0x0000 }, { 240, 0x0000 }, { 240, 0x0000 }, { 240, 0x0000 },
- { 240, 0x0000 }, { 240, 0x0000 }, { 240, 0x0000 }, { 240, 0xC000 },
- { 242, 0x0003 },
-};
-static const Summary16 big5hkscs_uni2index_page20[116] = {
- /* 0x2000 */
- { 244, 0x0000 }, { 244, 0x3378 }, { 252, 0x00F4 }, { 257, 0x482C },
- { 262, 0x0000 }, { 262, 0x0000 }, { 262, 0x0000 }, { 262, 0x0000 },
- { 262, 0x0000 }, { 262, 0x0000 }, { 262, 0x1000 }, { 263, 0x0000 },
- { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 }, { 263, 0x0000 },
- /* 0x2100 */
- { 263, 0x0228 }, { 266, 0x0040 }, { 267, 0x0002 }, { 268, 0x0000 },
- { 268, 0x0000 }, { 268, 0x0000 }, { 268, 0x03FF }, { 278, 0x03FF },
- { 288, 0x0000 }, { 288, 0x03CF }, { 296, 0x0000 }, { 296, 0x0300 },
- { 298, 0x0000 }, { 298, 0x0000 }, { 298, 0x0080 }, { 299, 0x0000 },
- /* 0x2200 */
- { 299, 0x0000 }, { 299, 0xC560 }, { 305, 0x4E29 }, { 312, 0x0030 },
- { 314, 0x0000 }, { 314, 0x0004 }, { 315, 0x00CB }, { 320, 0x0000 },
- { 320, 0x0000 }, { 320, 0x0220 }, { 322, 0x0020 }, { 323, 0x8000 },
- { 324, 0x0000 }, { 324, 0x0000 }, { 324, 0x0000 }, { 324, 0x0000 },
- /* 0x2300 */
- { 324, 0x0080 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 },
- { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 },
- { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 },
- { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 },
- /* 0x2400 */
- { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x0000 },
- { 325, 0x0000 }, { 325, 0x0000 }, { 325, 0x03FF }, { 335, 0x3FF0 },
- { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 },
- { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 }, { 345, 0x0000 },
- /* 0x2500 */
- { 345, 0x1005 }, { 348, 0x1111 }, { 352, 0x1010 }, { 354, 0x1010 },
- { 356, 0x0000 }, { 356, 0xFFFF }, { 372, 0xFFFF }, { 388, 0x001F },
- { 393, 0xFFFE }, { 408, 0x0038 }, { 411, 0x0003 }, { 413, 0x300C },
- { 417, 0xC8C0 }, { 422, 0x0000 }, { 422, 0x003C }, { 426, 0x0000 },
- /* 0x2600 */
- { 426, 0x0260 }, { 429, 0x0000 }, { 429, 0x0000 }, { 429, 0x0000 },
- { 429, 0x0007 }, { 432, 0x0000 }, { 432, 0x0000 }, { 432, 0x0000 },
- { 432, 0x0000 }, { 432, 0x0000 }, { 432, 0x0000 }, { 432, 0x0000 },
- { 432, 0x0000 }, { 432, 0x0000 }, { 432, 0x0000 }, { 432, 0x0000 },
- /* 0x2700 */
- { 432, 0x0000 }, { 432, 0x0000 }, { 432, 0x0000 }, { 432, 0x2000 },
-};
-static const Summary16 big5hkscs_uni2index_page2e[1819] = {
- /* 0x2E00 */
- { 433, 0x0000 }, { 433, 0x0000 }, { 433, 0x0000 }, { 433, 0x0000 },
- { 433, 0x0000 }, { 433, 0x0000 }, { 433, 0x0000 }, { 433, 0x0000 },
- { 433, 0x35D1 }, { 441, 0x3020 }, { 444, 0x54A0 }, { 449, 0x5040 },
- { 452, 0xB440 }, { 457, 0x40C0 }, { 460, 0x0008 }, { 461, 0x0000 },
- /* 0x2F00 */
- { 461, 0x0000 }, { 461, 0x0000 }, { 461, 0x0000 }, { 461, 0x0008 },
- { 462, 0x0000 }, { 462, 0x0000 }, { 462, 0x0000 }, { 462, 0x0000 },
- { 462, 0x0000 }, { 462, 0x0000 }, { 462, 0x0000 }, { 462, 0x0000 },
- { 462, 0x0000 }, { 462, 0x0000 }, { 462, 0x0000 }, { 462, 0x0000 },
- /* 0x3000 */
- { 462, 0xFFEF }, { 477, 0x7037 }, { 485, 0x03FE }, { 494, 0x0001 },
- { 495, 0xFFFE }, { 510, 0xFFFF }, { 526, 0xFFFF }, { 542, 0xFFFF },
- { 558, 0xFFFF }, { 574, 0x780F }, { 582, 0xFFFE }, { 597, 0xFFFF },
- { 613, 0xFFFF }, { 629, 0xFFFF }, { 645, 0xFFFF }, { 661, 0x707F },
- /* 0x3100 */
- { 671, 0xFFE0 }, { 682, 0xFFFF }, { 698, 0x03FF }, { 708, 0x0000 },
- { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 }, { 708, 0x0000 },
- { 708, 0x0000 }, { 708, 0xFFFC }, { 722, 0x0000 }, { 722, 0x0000 },
- { 722, 0x0000 }, { 722, 0x0000 }, { 722, 0x0000 }, { 722, 0x0000 },
- /* 0x3200 */
- { 722, 0x0000 }, { 722, 0x0000 }, { 722, 0xFFFF }, { 738, 0xFFFF },
- { 754, 0x000F }, { 758, 0x0000 }, { 758, 0x0000 }, { 758, 0x0000 },
- { 758, 0xFFFF }, { 774, 0xFFFF }, { 790, 0xFFFF }, { 806, 0x0001 },
- { 807, 0x0000 }, { 807, 0x0000 }, { 807, 0x0000 }, { 807, 0x0000 },
- /* 0x3300 */
- { 807, 0x0000 }, { 807, 0x0000 }, { 807, 0x0000 }, { 807, 0x0000 },
- { 807, 0x0000 }, { 807, 0x0000 }, { 807, 0x0000 }, { 807, 0x0000 },
- { 807, 0xC000 }, { 809, 0x7000 }, { 812, 0x0002 }, { 813, 0x0000 },
- { 813, 0x4010 }, { 815, 0x0026 }, { 818, 0x0000 }, { 818, 0x0000 },
- /* 0x3400 */
- { 818, 0x0000 }, { 818, 0x0000 }, { 818, 0x0000 }, { 818, 0x0020 },
- { 819, 0x1001 }, { 821, 0x0000 }, { 821, 0x0010 }, { 822, 0x6408 },
- { 826, 0x0000 }, { 826, 0x0048 }, { 828, 0x8020 }, { 830, 0x1000 },
- { 831, 0x0102 }, { 833, 0x8000 }, { 834, 0x0010 }, { 835, 0x0800 },
- /* 0x3500 */
- { 836, 0x0040 }, { 837, 0x0000 }, { 837, 0x0000 }, { 837, 0x4000 },
- { 838, 0x0000 }, { 838, 0x020A }, { 841, 0x2002 }, { 843, 0x0185 },
- { 847, 0x0010 }, { 848, 0x0180 }, { 850, 0x2022 }, { 853, 0x8000 },
- { 854, 0x44A2 }, { 859, 0x2844 }, { 863, 0x0000 }, { 863, 0x480E },
- /* 0x3600 */
- { 868, 0x0200 }, { 869, 0x0500 }, { 871, 0x2008 }, { 873, 0x4220 },
- { 876, 0x4380 }, { 880, 0x8000 }, { 881, 0x0000 }, { 881, 0x0400 },
- { 882, 0x0002 }, { 883, 0x0400 }, { 884, 0x1420 }, { 887, 0x1223 },
- { 892, 0x01BA }, { 898, 0x2058 }, { 902, 0x0066 }, { 906, 0x0020 },
- /* 0x3700 */
- { 907, 0x250A }, { 912, 0x1000 }, { 913, 0x302C }, { 918, 0x040D },
- { 922, 0x0009 }, { 924, 0x0000 }, { 924, 0x8004 }, { 926, 0x0000 },
- { 926, 0x0000 }, { 926, 0x0080 }, { 927, 0x0001 }, { 928, 0x4200 },
- { 930, 0x0000 }, { 930, 0x0000 }, { 930, 0x0000 }, { 930, 0x0904 },
- /* 0x3800 */
- { 933, 0x8000 }, { 934, 0x0200 }, { 935, 0x2001 }, { 937, 0x0140 },
- { 939, 0x0000 }, { 939, 0x0000 }, { 939, 0x0008 }, { 940, 0x0000 },
- { 940, 0x0000 }, { 940, 0x0000 }, { 940, 0x0001 }, { 941, 0x0000 },
- { 941, 0x1008 }, { 943, 0x0002 }, { 944, 0x0000 }, { 944, 0x0400 },
- /* 0x3900 */
- { 945, 0x0100 }, { 946, 0x0010 }, { 947, 0x0080 }, { 948, 0x8004 },
- { 950, 0x2000 }, { 951, 0x0000 }, { 951, 0x0008 }, { 952, 0x0000 },
- { 952, 0x0601 }, { 955, 0x0A04 }, { 958, 0x0012 }, { 960, 0x0100 },
- { 961, 0x0000 }, { 961, 0x1000 }, { 962, 0x1024 }, { 965, 0x4900 },
- /* 0x3A00 */
- { 968, 0x004A }, { 971, 0x0180 }, { 973, 0x0600 }, { 975, 0x0010 },
- { 976, 0x0800 }, { 977, 0x5084 }, { 981, 0x00C0 }, { 983, 0x0000 },
- { 983, 0x0000 }, { 983, 0x0080 }, { 984, 0x0800 }, { 985, 0x2000 },
- { 986, 0x0000 }, { 986, 0x4000 }, { 987, 0x0001 }, { 988, 0x0805 },
- /* 0x3B00 */
- { 991, 0x4000 }, { 992, 0x0200 }, { 993, 0x0804 }, { 995, 0x0200 },
- { 996, 0x0004 }, { 997, 0x0100 }, { 998, 0x0001 }, { 999, 0x1806 },
- { 1003, 0x0001 }, { 1004, 0x0240 }, { 1006, 0x0002 }, { 1007, 0x5000 },
- { 1009, 0x0014 }, { 1011, 0x2080 }, { 1013, 0x1000 }, { 1014, 0x001C },
- /* 0x3C00 */
- { 1017, 0x2000 }, { 1018, 0x0122 }, { 1021, 0x0000 }, { 1021, 0x0000 },
- { 1021, 0x0000 }, { 1021, 0x0010 }, { 1022, 0x0000 }, { 1022, 0x0000 },
- { 1022, 0x0800 }, { 1023, 0x0000 }, { 1023, 0x0000 }, { 1023, 0x0000 },
- { 1023, 0x2800 }, { 1025, 0x1042 }, { 1028, 0x8800 }, { 1030, 0x0000 },
- /* 0x3D00 */
- { 1030, 0x0000 }, { 1030, 0x2008 }, { 1032, 0x0000 }, { 1032, 0x0804 },
- { 1034, 0x5040 }, { 1037, 0x8002 }, { 1039, 0x8604 }, { 1043, 0x2020 },
- { 1045, 0x8420 }, { 1048, 0x0002 }, { 1049, 0x2020 }, { 1051, 0x8010 },
- { 1053, 0x32C0 }, { 1058, 0x0808 }, { 1060, 0x0980 }, { 1063, 0x3088 },
- /* 0x3E00 */
- { 1067, 0x0040 }, { 1068, 0x0000 }, { 1068, 0x0000 }, { 1068, 0x0000 },
- { 1068, 0x0109 }, { 1071, 0x0020 }, { 1072, 0x0000 }, { 1072, 0x0010 },
- { 1073, 0x0000 }, { 1073, 0x0000 }, { 1073, 0x2700 }, { 1077, 0x8102 },
- { 1080, 0x1484 }, { 1084, 0x4CC3 }, { 1091, 0x0A86 }, { 1096, 0x9419 },
- /* 0x3F00 */
- { 1102, 0x4051 }, { 1106, 0x0000 }, { 1106, 0x0000 }, { 1106, 0x0000 },
- { 1106, 0x0000 }, { 1106, 0x0308 }, { 1109, 0x0008 }, { 1110, 0x1000 },
- { 1111, 0x0000 }, { 1111, 0x0008 }, { 1112, 0x0000 }, { 1112, 0x0000 },
- { 1112, 0x0001 }, { 1113, 0x1080 }, { 1115, 0x2020 }, { 1117, 0x0600 },
- /* 0x4000 */
- { 1119, 0x0210 }, { 1121, 0x2000 }, { 1122, 0x0000 }, { 1122, 0x0200 },
- { 1123, 0x0020 }, { 1124, 0x0088 }, { 1126, 0x8424 }, { 1130, 0x0002 },
- { 1131, 0x0000 }, { 1131, 0x0000 }, { 1131, 0x0100 }, { 1132, 0x8800 },
- { 1134, 0x0100 }, { 1135, 0x8100 }, { 1137, 0x0000 }, { 1137, 0x0400 },
- /* 0x4100 */
- { 1138, 0x4218 }, { 1142, 0x0000 }, { 1142, 0x0000 }, { 1142, 0x0004 },
- { 1143, 0x0000 }, { 1143, 0x0000 }, { 1143, 0x5080 }, { 1146, 0x8000 },
- { 1147, 0x0000 }, { 1147, 0x0001 }, { 1148, 0x0000 }, { 1148, 0x0004 },
- { 1149, 0x8410 }, { 1152, 0x0800 }, { 1153, 0x8000 }, { 1154, 0x0200 },
- /* 0x4200 */
- { 1155, 0x0000 }, { 1155, 0x0002 }, { 1156, 0x0008 }, { 1157, 0x0000 },
- { 1157, 0x0001 }, { 1158, 0x0000 }, { 1158, 0x0401 }, { 1160, 0x0440 },
- { 1162, 0x1000 }, { 1163, 0x0010 }, { 1164, 0x0004 }, { 1165, 0x1220 },
- { 1168, 0x0000 }, { 1168, 0x0000 }, { 1168, 0x0000 }, { 1168, 0x1810 },
- /* 0x4300 */
- { 1171, 0x0000 }, { 1171, 0x0000 }, { 1171, 0x0800 }, { 1172, 0x0000 },
- { 1172, 0x0000 }, { 1172, 0x0000 }, { 1172, 0x4000 }, { 1173, 0x0000 },
- { 1173, 0x0000 }, { 1173, 0x0080 }, { 1174, 0x0000 }, { 1174, 0x0400 },
- { 1175, 0x0002 }, { 1176, 0x8200 }, { 1178, 0x2000 }, { 1179, 0x0004 },
- /* 0x4400 */
- { 1180, 0x0006 }, { 1182, 0x0008 }, { 1183, 0x2020 }, { 1185, 0x0000 },
- { 1185, 0x0000 }, { 1185, 0x0000 }, { 1185, 0x0000 }, { 1185, 0x0400 },
- { 1186, 0x8000 }, { 1187, 0x8000 }, { 1188, 0x0005 }, { 1190, 0x0081 },
- { 1192, 0x4021 }, { 1195, 0xA000 }, { 1197, 0x1E10 }, { 1202, 0x0010 },
- /* 0x4500 */
- { 1203, 0x0A18 }, { 1207, 0x2040 }, { 1209, 0x4080 }, { 1211, 0xA808 },
- { 1215, 0x0008 }, { 1216, 0x1026 }, { 1220, 0x0404 }, { 1222, 0x0080 },
- { 1223, 0x0020 }, { 1224, 0x0000 }, { 1224, 0x0000 }, { 1224, 0x0000 },
- { 1224, 0x0000 }, { 1224, 0x0000 }, { 1224, 0x0200 }, { 1225, 0x0000 },
- /* 0x4600 */
- { 1225, 0x8040 }, { 1227, 0x00A0 }, { 1229, 0x0000 }, { 1229, 0x0000 },
- { 1229, 0x0000 }, { 1229, 0x0800 }, { 1230, 0x0000 }, { 1230, 0x0400 },
- { 1231, 0x0001 }, { 1232, 0x0000 }, { 1232, 0x0000 }, { 1232, 0x0000 },
- { 1232, 0x8000 }, { 1233, 0x0001 }, { 1234, 0x0000 }, { 1234, 0x0020 },
- /* 0x4700 */
- { 1235, 0x0000 }, { 1235, 0x0108 }, { 1237, 0x0000 }, { 1237, 0x0000 },
- { 1237, 0x4000 }, { 1238, 0x0000 }, { 1238, 0x0000 }, { 1238, 0x1000 },
- { 1239, 0x0000 }, { 1239, 0x0100 }, { 1240, 0x0040 }, { 1241, 0x0040 },
- { 1242, 0x0000 }, { 1242, 0x0020 }, { 1243, 0x2000 }, { 1244, 0x0010 },
- /* 0x4800 */
- { 1245, 0x0801 }, { 1247, 0x0000 }, { 1247, 0x0000 }, { 1247, 0x0080 },
- { 1248, 0x0000 }, { 1248, 0x2000 }, { 1249, 0x0000 }, { 1249, 0x0002 },
- { 1250, 0x0000 }, { 1250, 0x0800 }, { 1251, 0x6000 }, { 1253, 0x0000 },
- { 1253, 0x0000 }, { 1253, 0x2001 }, { 1255, 0x2000 }, { 1256, 0x0408 },
- /* 0x4900 */
- { 1258, 0x0040 }, { 1259, 0x4002 }, { 1261, 0x2420 }, { 1264, 0x5020 },
- { 1267, 0x0020 }, { 1268, 0x000A }, { 1270, 0x0420 }, { 1272, 0x0004 },
- { 1273, 0x0200 }, { 1274, 0x0000 }, { 1274, 0x0082 }, { 1276, 0x0000 },
- { 1276, 0x0000 }, { 1276, 0x8000 }, { 1277, 0x00A0 }, { 1279, 0x0000 },
- /* 0x4A00 */
- { 1279, 0x8000 }, { 1280, 0x2000 }, { 1281, 0x0010 }, { 1282, 0x0020 },
- { 1283, 0x0000 }, { 1283, 0x0000 }, { 1283, 0x0000 }, { 1283, 0x0000 },
- { 1283, 0x0000 }, { 1283, 0x0040 }, { 1284, 0x0000 }, { 1284, 0x0110 },
- { 1286, 0x0000 }, { 1286, 0x0002 }, { 1287, 0x0010 }, { 1288, 0x8000 },
- /* 0x4B00 */
- { 1289, 0x0000 }, { 1289, 0x0201 }, { 1291, 0x1001 }, { 1293, 0x0080 },
- { 1294, 0x0000 }, { 1294, 0x0000 }, { 1294, 0x8000 }, { 1295, 0x4805 },
- { 1299, 0x4000 }, { 1300, 0x20C9 }, { 1305, 0x0000 }, { 1305, 0x6000 },
- { 1307, 0x0001 }, { 1308, 0x0000 }, { 1308, 0x0000 }, { 1308, 0x0000 },
- /* 0x4C00 */
- { 1308, 0x4090 }, { 1311, 0x0000 }, { 1311, 0x0000 }, { 1311, 0x4800 },
- { 1313, 0x0000 }, { 1313, 0x0800 }, { 1314, 0x2000 }, { 1315, 0x2000 },
- { 1316, 0x0002 }, { 1317, 0x0000 }, { 1317, 0x4010 }, { 1319, 0x0081 },
- { 1321, 0x2000 }, { 1322, 0x0000 }, { 1322, 0x2002 }, { 1324, 0x0000 },
- /* 0x4D00 */
- { 1324, 0x0200 }, { 1325, 0x0001 }, { 1326, 0x0000 }, { 1326, 0x0010 },
- { 1327, 0x0000 }, { 1327, 0x0000 }, { 1327, 0x0000 }, { 1327, 0x0000 },
- { 1327, 0x0000 }, { 1327, 0x1002 }, { 1329, 0x0000 }, { 1329, 0x0000 },
- { 1329, 0x0000 }, { 1329, 0x0000 }, { 1329, 0x0000 }, { 1329, 0x0000 },
- /* 0x4E00 */
- { 1329, 0xFF9B }, { 1342, 0xD773 }, { 1353, 0xFD52 }, { 1363, 0xBBCF },
- { 1375, 0xEBAC }, { 1385, 0xFF4C }, { 1396, 0x0600 }, { 1398, 0xC108 },
- { 1402, 0x7BFF }, { 1416, 0xCF3E }, { 1427, 0x797F }, { 1439, 0x9EC8 },
- { 1447, 0x6FDF }, { 1460, 0xF7F0 }, { 1471, 0x4F3A }, { 1480, 0xA9FF },
- /* 0x4F00 */
- { 1492, 0xEF3F }, { 1505, 0x27BF }, { 1516, 0xB304 }, { 1522, 0xFFDD },
- { 1536, 0xFBEE }, { 1549, 0xFFFF }, { 1565, 0xDE9F }, { 1577, 0xFFFD },
- { 1592, 0xAFFF }, { 1606, 0x7DF7 }, { 1619, 0xC904 }, { 1624, 0xAEED },
- { 1635, 0xFFBF }, { 1650, 0xFFDB }, { 1664, 0xD033 }, { 1671, 0x67FF },
- /* 0x5000 */
- { 1684, 0xFBE9 }, { 1696, 0xDFFE }, { 1710, 0xFFEF }, { 1725, 0x18BB },
- { 1733, 0xFFEB }, { 1747, 0xFDEA }, { 1759, 0xFF7F }, { 1774, 0x24FD },
- { 1783, 0x79AF }, { 1794, 0x7F77 }, { 1807, 0xF04C }, { 1814, 0xFDFF },
- { 1829, 0xEFF6 }, { 1842, 0xAEFB }, { 1854, 0xF7FB }, { 1868, 0xFB7B },
- /* 0x5100 */
- { 1881, 0x7FFF }, { 1896, 0x95BF }, { 1907, 0x6E77 }, { 1918, 0xBFBF },
- { 1932, 0x3BFB }, { 1944, 0xFEF4 }, { 1956, 0x7FAF }, { 1969, 0x13F2 },
- { 1977, 0xA7C5 }, { 1986, 0x55FE }, { 1997, 0x5DB5 }, { 2007, 0x73FF },
- { 2020, 0xFFF8 }, { 2033, 0xF99F }, { 2045, 0x2017 }, { 2050, 0x777B },
- /* 0x5200 */
- { 2062, 0x5FEF }, { 2075, 0xF0CF }, { 2085, 0x47F3 }, { 2095, 0x1DFF },
- { 2107, 0x7EDA }, { 2118, 0xFEF4 }, { 2130, 0xFF07 }, { 2141, 0xBFBC },
- { 2153, 0xBF9F }, { 2166, 0x8FDB }, { 2177, 0x7F5B }, { 2189, 0x5A20 },
- { 2194, 0x32AF }, { 2203, 0xEBEF }, { 2216, 0x8A5F }, { 2225, 0xDFBB },
- /* 0x5300 */
- { 2238, 0xEF62 }, { 2248, 0xB6E7 }, { 2259, 0xB49F }, { 2269, 0xFB9F },
- { 2282, 0x77BF }, { 2295, 0xF49E }, { 2305, 0xF2DB }, { 2316, 0xFBBF },
- { 2330, 0xC414 }, { 2335, 0xF7DC }, { 2347, 0x7FF5 }, { 2360, 0x0A55 },
- { 2366, 0x3F2E }, { 2376, 0x8FD7 }, { 2387, 0xFF7F }, { 2402, 0x59EF },
- /* 0x5400 */
- { 2413, 0xFFDA }, { 2426, 0xFF5F }, { 2440, 0xFFFB }, { 2455, 0x7BFF },
- { 2469, 0xEDEF }, { 2482, 0x0010 }, { 2483, 0xBFFF }, { 2498, 0xFDFF },
- { 2513, 0xF9F7 }, { 2526, 0x55FF }, { 2538, 0xFFFF }, { 2554, 0xFFDF },
- { 2569, 0xFBFF }, { 2584, 0x4441 }, { 2588, 0xEFFF }, { 2603, 0xBD8E },
- /* 0x5500 */
- { 2613, 0xFFFE }, { 2628, 0x459F }, { 2637, 0xFDE8 }, { 2648, 0xDBFF },
- { 2662, 0xEFFB }, { 2676, 0xF0EF }, { 2687, 0x0E7E }, { 2696, 0xFAEE },
- { 2708, 0xFFDF }, { 2723, 0xB73F }, { 2735, 0x7FFE }, { 2749, 0x9E3F },
- { 2760, 0xFFFF }, { 2776, 0xFFFF }, { 2792, 0x97FE }, { 2804, 0xFEE7 },
- /* 0x5600 */
- { 2817, 0xF377 }, { 2829, 0xF8FF }, { 2842, 0xF6AF }, { 2854, 0xEFFD },
- { 2868, 0xF76F }, { 2881, 0x679D }, { 2891, 0xFF7F }, { 2906, 0xDFDF },
- { 2920, 0xFEFF }, { 2935, 0xF7AD }, { 2947, 0xFDF2 }, { 2959, 0xF2FE },
- { 2971, 0x3F6F }, { 2983, 0xECDA }, { 2993, 0xECB7 }, { 3004, 0xA683 },
- /* 0x5700 */
- { 3011, 0x3F9F }, { 3023, 0xFD7C }, { 3035, 0xF70D }, { 3045, 0xE81D },
- { 3053, 0xFEEF }, { 3067, 0x8897 }, { 3074, 0xAFD6 }, { 3085, 0xFCFF },
- { 3099, 0xBD0D }, { 3108, 0xFFB9 }, { 3121, 0x44BF }, { 3130, 0xFF70 },
- { 3141, 0xD9DE }, { 3152, 0xF0B5 }, { 3161, 0xF2FF }, { 3174, 0x7FFF },
- /* 0x5800 */
- { 3189, 0x7FFF }, { 3204, 0x7A15 }, { 3212, 0xF7FF }, { 3227, 0xAFFF },
- { 3241, 0xFF91 }, { 3252, 0xFFBE }, { 3266, 0xBB3C }, { 3276, 0xFE7E },
- { 3289, 0xCFEF }, { 3302, 0xF71F }, { 3314, 0xDFEB }, { 3327, 0xFC6B },
- { 3338, 0xCBE6 }, { 3348, 0xFF7F }, { 3363, 0x9B9D }, { 3373, 0xFE1D },
- /* 0x5900 */
- { 3384, 0xF4FC }, { 3395, 0x96F6 }, { 3405, 0xFEB5 }, { 3417, 0x5196 },
- { 3424, 0xC7B1 }, { 3433, 0x15BB }, { 3442, 0x6EA7 }, { 3452, 0xFBFF },
- { 3467, 0xE63F }, { 3478, 0xE7DD }, { 3490, 0xD1FF }, { 3502, 0x7FFF },
- { 3517, 0xFFFB }, { 3532, 0x7F5F }, { 3545, 0xFF7B }, { 3559, 0xFFFF },
- /* 0x5A00 */
- { 3575, 0xBE0F }, { 3585, 0xDFEE }, { 3598, 0x7EBB }, { 3610, 0x73E8 },
- { 3619, 0x37FF }, { 3632, 0xFFFF }, { 3648, 0x7FFF }, { 3663, 0xFF83 },
- { 3674, 0xDD5E }, { 3685, 0xFEFF }, { 3700, 0xDAE7 }, { 3711, 0xFFFF },
- { 3727, 0xFFDF }, { 3742, 0xFFE8 }, { 3754, 0x7F7F }, { 3768, 0xEFFD },
- /* 0x5B00 */
- { 3782, 0xBBAE }, { 3793, 0xEEFB }, { 3806, 0xFDFB }, { 3820, 0xF115 },
- { 3828, 0xFDFB }, { 3842, 0xBDFB }, { 3855, 0x7B7C }, { 3866, 0xBDFF },
- { 3880, 0xDBBF }, { 3893, 0xFFED }, { 3907, 0x75FC }, { 3918, 0x8379 },
- { 3926, 0x7CFF }, { 3939, 0xC3FF }, { 3951, 0xDFFF }, { 3966, 0x856F },
- /* 0x5C00 */
- { 3975, 0xFFBA }, { 3988, 0xD47F }, { 3999, 0x153D }, { 4007, 0xDF8B },
- { 4018, 0xFFF3 }, { 4032, 0x737B }, { 4043, 0xF7BD }, { 4056, 0x5E1A },
- { 4064, 0xBF60 }, { 4073, 0xF63F }, { 4085, 0xFFFF }, { 4101, 0x05EB },
- { 4109, 0xDFC6 }, { 4120, 0xCFDF }, { 4133, 0xF720 }, { 4141, 0xABF3 },
- /* 0x5D00 */
- { 4152, 0xF8C3 }, { 4161, 0xEFF7 }, { 4175, 0xD3FD }, { 4187, 0xF7FF },
- { 4202, 0x5FEF }, { 4215, 0x4AE7 }, { 4224, 0x9BAC }, { 4233, 0xFE97 },
- { 4245, 0x6FF7 }, { 4258, 0xF6BC }, { 4269, 0xFF97 }, { 4282, 0x37F7 },
- { 4294, 0xAACF }, { 4304, 0xE9F6 }, { 4315, 0x49E7 }, { 4324, 0xE2BF },
- /* 0x5E00 */
- { 4335, 0x5E5C }, { 4344, 0xAFF6 }, { 4356, 0x6B3F }, { 4367, 0x61D8 },
- { 4374, 0xFD3F }, { 4387, 0xFBB8 }, { 4398, 0xFFCF }, { 4412, 0xFF7D },
- { 4426, 0xBFDD }, { 4439, 0x1EE4 }, { 4447, 0x7DFD }, { 4460, 0x63FF },
- { 4472, 0x7FF6 }, { 4485, 0xFFFF }, { 4501, 0xD3EF }, { 4513, 0xDFDE },
- /* 0x5F00 */
- { 4526, 0xFDB6 }, { 4538, 0xADBC }, { 4548, 0x63FC }, { 4558, 0x15EB },
- { 4567, 0xFF59 }, { 4579, 0x33D3 }, { 4588, 0xBEBE }, { 4600, 0xFBDF },
- { 4614, 0x1FEF }, { 4626, 0xDBC7 }, { 4637, 0xFFF3 }, { 4651, 0xFEE6 },
- { 4663, 0xB23F }, { 4673, 0xEBF7 }, { 4686, 0xED3B }, { 4697, 0xADBA },
- /* 0x6000 */
- { 4707, 0xFE01 }, { 4715, 0x7EFF }, { 4729, 0xFFFF }, { 4745, 0x0ABE },
- { 4753, 0x36FF }, { 4765, 0xEF3D }, { 4777, 0xFFFC }, { 4791, 0xC0A5 },
- { 4797, 0x77FB }, { 4810, 0xFCF5 }, { 4822, 0x019D }, { 4828, 0xFFFF },
- { 4844, 0xFFFB }, { 4859, 0xFFBA }, { 4872, 0x03DF }, { 4881, 0xFFFF },
- /* 0x6100 */
- { 4897, 0xFFFB }, { 4912, 0xBF7D }, { 4925, 0xDB8C }, { 4934, 0xE8D5 },
- { 4943, 0xFFF7 }, { 4958, 0xFF7D }, { 4972, 0xDDFF }, { 4986, 0x76FF },
- { 4999, 0x7E8F }, { 5010, 0xBF7F }, { 5024, 0xFF96 }, { 5036, 0xD7FF },
- { 5050, 0xBFEF }, { 5064, 0xC549 }, { 5071, 0x6FFD }, { 5084, 0xFFE7 },
- /* 0x6200 */
- { 5098, 0x779B }, { 5109, 0x8E77 }, { 5119, 0x7EBF }, { 5132, 0xE6DD },
- { 5143, 0x7FCF }, { 5156, 0x5F1F }, { 5167, 0xE17F }, { 5178, 0xFEDF },
- { 5192, 0xD7FF }, { 5206, 0x21FF }, { 5216, 0xFF50 }, { 5226, 0xFB7B },
- { 5239, 0xFFFC }, { 5253, 0x9FFF }, { 5267, 0xF820 }, { 5273, 0xFFFF },
- /* 0x6300 */
- { 5289, 0xFB8F }, { 5301, 0x017B }, { 5308, 0xFF00 }, { 5316, 0x7FFE },
- { 5330, 0xFFFF }, { 5346, 0x07F3 }, { 5355, 0xFBB0 }, { 5365, 0xBFE7 },
- { 5378, 0xFFBF }, { 5393, 0xFBD7 }, { 5406, 0xFFBF }, { 5421, 0x6203 },
- { 5426, 0xFFFF }, { 5442, 0xFFEF }, { 5457, 0xEFFF }, { 5472, 0x5B7F },
- /* 0x6400 */
- { 5484, 0xFEC0 }, { 5493, 0xDDFD }, { 5506, 0xFDFF }, { 5521, 0xEFFD },
- { 5535, 0x680B }, { 5541, 0xFF1F }, { 5554, 0xFBE3 }, { 5566, 0xBFFF },
- { 5581, 0xBFA4 }, { 5591, 0xF7EF }, { 5605, 0xFA7D }, { 5617, 0xF85F },
- { 5628, 0xEEBF }, { 5641, 0x2FDD }, { 5652, 0xBFFF }, { 5667, 0xFD9F },
- /* 0x6500 */
- { 5680, 0xF6DB }, { 5692, 0xFBFB }, { 5706, 0xFE7F }, { 5720, 0xEBFD },
- { 5733, 0xA76A }, { 5742, 0xF3FA }, { 5754, 0xBDFC }, { 5766, 0x9FFC },
- { 5778, 0x1BFF }, { 5790, 0xFAF7 }, { 5803, 0xDDB7 }, { 5815, 0xFBED },
- { 5828, 0xF87E }, { 5839, 0xECDF }, { 5851, 0xF36F }, { 5863, 0xBC3F },
- /* 0x6600 */
- { 5874, 0xFFFD }, { 5889, 0xF13F }, { 5900, 0xE9FF }, { 5913, 0x067F },
- { 5922, 0x9FBE }, { 5934, 0xFE8E }, { 5945, 0xDDFE }, { 5958, 0x7FDF },
- { 5972, 0x7FF1 }, { 5984, 0xA7F7 }, { 5996, 0xEF17 }, { 6007, 0xEFFF },
- { 6022, 0xFFD1 }, { 6034, 0x7F44 }, { 6043, 0x7B59 }, { 6053, 0xD3DF },
- /* 0x6700 */
- { 6065, 0xFF3F }, { 6079, 0xEBFD }, { 6092, 0x7DEF }, { 6105, 0xFF7A },
- { 6118, 0xFBF0 }, { 6129, 0xF6EB }, { 6141, 0xBC87 }, { 6150, 0xFFFF },
- { 6166, 0xFAFA }, { 6178, 0xB7BF }, { 6191, 0xD011 }, { 6196, 0x8FFF },
- { 6209, 0xFF7F }, { 6224, 0xFFDF }, { 6239, 0xFEFC }, { 6252, 0xD7FF },
- /* 0x6800 */
- { 6266, 0x201F }, { 6272, 0xFDDD }, { 6285, 0xEF67 }, { 6297, 0x7FFE },
- { 6311, 0xFFFF }, { 6327, 0x207B }, { 6334, 0xE820 }, { 6339, 0xFBF6 },
- { 6352, 0x9FFF }, { 6366, 0xB9DF }, { 6378, 0xFFDF }, { 6393, 0x227F },
- { 6402, 0x7FF8 }, { 6414, 0xF5FF }, { 6428, 0xDFDB }, { 6441, 0x3FFF },
- /* 0x6900 */
- { 6455, 0xFFFF }, { 6471, 0x0FBF }, { 6482, 0x9420 }, { 6486, 0xFBFD },
- { 6500, 0xDF7F }, { 6514, 0xFFFE }, { 6529, 0xFFFF }, { 6545, 0x0FFF },
- { 6557, 0x646D }, { 6565, 0xDFFB }, { 6579, 0xFFFF }, { 6595, 0xFAFF },
- { 6609, 0xFE5F }, { 6622, 0x027B }, { 6629, 0x7BF6 }, { 6641, 0xFFDE },
- /* 0x6A00 */
- { 6655, 0xBFFF }, { 6670, 0xFFFA }, { 6684, 0x39EB }, { 6694, 0xFF3C },
- { 6706, 0xFBFB }, { 6720, 0xEFFF }, { 6735, 0xAFFF }, { 6749, 0xC452 },
- { 6755, 0xF6BF }, { 6768, 0xFEFF }, { 6783, 0xF9FF }, { 6797, 0x6FFE },
- { 6810, 0xBFEC }, { 6822, 0xFF1B }, { 6834, 0xDDA3 }, { 6844, 0x1F4B },
- /* 0x6B00 */
- { 6853, 0x8F3D }, { 6863, 0x67CF }, { 6874, 0xB12B }, { 6882, 0xFFFE },
- { 6897, 0x7FEE }, { 6910, 0xDAF7 }, { 6922, 0xA4FF }, { 6933, 0xCFD4 },
- { 6943, 0xF75F }, { 6956, 0xCBF2 }, { 6966, 0xECFD }, { 6978, 0xB4ED },
- { 6988, 0xBFFB }, { 7002, 0x5DDD }, { 7013, 0x9DDF }, { 7025, 0xFF8D },
- /* 0x6C00 */
- { 7037, 0xBB7F }, { 7050, 0xBF7B }, { 7063, 0xDDFB }, { 7076, 0xEFFB },
- { 7090, 0xFE4F }, { 7102, 0xFFB5 }, { 7115, 0xEFE3 }, { 7127, 0xEF7F },
- { 7141, 0xFFFF }, { 7157, 0xBF7D }, { 7170, 0xFC04 }, { 7177, 0xFFDF },
- { 7192, 0xFEFF }, { 7207, 0xFEFF }, { 7222, 0xFFAF }, { 7236, 0x822F },
- /* 0x6D00 */
- { 7243, 0xFFFF }, { 7259, 0xEFC7 }, { 7271, 0xFFF5 }, { 7285, 0xFFFF },
- { 7301, 0x4007 }, { 7305, 0xDF80 }, { 7313, 0xF7FF }, { 7328, 0xFFF7 },
- { 7343, 0xFFFF }, { 7359, 0x01FF }, { 7368, 0xDC30 }, { 7375, 0xFFBE },
- { 7389, 0xBFF5 }, { 7402, 0xFFFF }, { 7418, 0xFF7F }, { 7433, 0x7EFF },
- /* 0x6E00 */
- { 7447, 0x843D }, { 7454, 0xBF20 }, { 7462, 0xFFFF }, { 7478, 0xFF7F },
- { 7493, 0xEEFB }, { 7506, 0xFF7F }, { 7521, 0xCBFF }, { 7534, 0x13DE },
- { 7543, 0xEB40 }, { 7550, 0xFFDD }, { 7564, 0xCCFF }, { 7576, 0xFFFF },
- { 7592, 0xFFFF }, { 7608, 0x3F7F }, { 7621, 0xFB04 }, { 7629, 0xFFF6 },
- /* 0x6F00 */
- { 7643, 0xFFFF }, { 7659, 0xD7FC }, { 7671, 0xFEFF }, { 7686, 0xFFFF },
- { 7702, 0xC01B }, { 7708, 0xFDFF }, { 7723, 0xFEDF }, { 7737, 0xFFDD },
- { 7751, 0x7FF7 }, { 7765, 0xE0FD }, { 7775, 0xFFFF }, { 7791, 0xFF7F },
- { 7806, 0xFFDF }, { 7821, 0xFF38 }, { 7832, 0xFBDF }, { 7846, 0xDDD7 },
- /* 0x7000 */
- { 7858, 0xFEFB }, { 7872, 0xFFF2 }, { 7885, 0x9FDF }, { 7898, 0xDFBF },
- { 7912, 0x3F7F }, { 7925, 0xFDF7 }, { 7939, 0x9FFF }, { 7953, 0xF7F3 },
- { 7966, 0xCE7E }, { 7977, 0x877E }, { 7987, 0xFAFB }, { 8000, 0x7FBB },
- { 8013, 0xFDF1 }, { 8025, 0xF7FF }, { 8040, 0x8017 }, { 8045, 0xFFFB },
- /* 0x7100 */
- { 8060, 0x7E75 }, { 8071, 0xFE89 }, { 8081, 0xDB6F }, { 8093, 0x4C7F },
- { 8103, 0xFEFF }, { 8118, 0xF75F }, { 8131, 0x5FFF }, { 8145, 0x7DEF },
- { 8158, 0xD7F7 }, { 8171, 0xFFD7 }, { 8185, 0xB7BF }, { 8198, 0xF7BF },
- { 8212, 0xCFFF }, { 8226, 0xBF77 }, { 8239, 0x79F7 }, { 8251, 0xFB77 },
- /* 0x7200 */
- { 8264, 0xF6EF }, { 8277, 0xEEF9 }, { 8289, 0x7FDC }, { 8301, 0xEF61 },
- { 8311, 0x9FD7 }, { 8323, 0xFFED }, { 8337, 0xD6CF }, { 8348, 0xFBDD },
- { 8361, 0xFBF7 }, { 8375, 0xEDFF }, { 8389, 0xF7FE }, { 8403, 0xA435 },
- { 8410, 0x7E7F }, { 8423, 0x97D7 }, { 8434, 0x0F5F }, { 8444, 0xFFD8 },
- /* 0x7300 */
- { 8456, 0x9D97 }, { 8466, 0x7BCF }, { 8478, 0x7FEC }, { 8490, 0xDFFF },
- { 8505, 0xF73F }, { 8518, 0xEF87 }, { 8529, 0xDFE7 }, { 8542, 0xFDFF },
- { 8557, 0xDFFF }, { 8572, 0xF1FC }, { 8583, 0x3FF7 }, { 8596, 0xDFFC },
- { 8609, 0xFFED }, { 8623, 0x7FFD }, { 8637, 0xEFFF }, { 8652, 0xFFF8 },
- /* 0x7400 */
- { 8665, 0x3FFF }, { 8679, 0xFEF6 }, { 8692, 0xFF7F }, { 8707, 0x97FF },
- { 8720, 0xEFFF }, { 8735, 0xFEFF }, { 8750, 0xFFBD }, { 8764, 0xF67F },
- { 8777, 0x3FEF }, { 8790, 0xDFB5 }, { 8802, 0xAFFB }, { 8815, 0xEFF7 },
- { 8829, 0x9D2F }, { 8839, 0xFFF9 }, { 8853, 0x53FF }, { 8865, 0xE9F7 },
- /* 0x7500 */
- { 8877, 0xF9BD }, { 8889, 0xF7FF }, { 8904, 0xFF66 }, { 8916, 0xEFBF },
- { 8930, 0xFDC5 }, { 8941, 0xBE3A }, { 8951, 0xFCFD }, { 8964, 0xE7C5 },
- { 8974, 0xFCD9 }, { 8985, 0x6737 }, { 8995, 0x0CBC }, { 9002, 0xFF7F },
- { 9017, 0xFDBF }, { 9031, 0xFFB7 }, { 9045, 0xA0DF }, { 9054, 0xFFFF },
- /* 0x7600 */
- { 9070, 0xBF8F }, { 9082, 0xFE7B }, { 9095, 0xB3FF }, { 9108, 0x3D3F },
- { 9119, 0xF3CD }, { 9130, 0x97DF }, { 9142, 0xF6F7 }, { 9155, 0xFF7F },
- { 9170, 0xCFD6 }, { 9181, 0x7E6D }, { 9192, 0xEC72 }, { 9201, 0xEDB1 },
- { 9211, 0x777C }, { 9222, 0xFE5C }, { 9233, 0xF6FA }, { 9245, 0x5FBF },
- /* 0x7700 */
- { 9258, 0xDFBA }, { 9270, 0xEE2F }, { 9281, 0xABFD }, { 9293, 0x7FFE },
- { 9307, 0xFCF9 }, { 9319, 0xDF74 }, { 9330, 0xFFEF }, { 9345, 0xFF84 },
- { 9355, 0xFBBF }, { 9369, 0xFFAA }, { 9381, 0xBDAF }, { 9393, 0xFEFF },
- { 9408, 0xFEBC }, { 9420, 0x7FB9 }, { 9432, 0xF3ED }, { 9444, 0x7F9F },
- /* 0x7800 */
- { 9457, 0xF36C }, { 9467, 0xF11F }, { 9477, 0xFFEF }, { 9492, 0x33BF },
- { 9503, 0x7FBC }, { 9515, 0x701F }, { 9523, 0xFF75 }, { 9536, 0xDE03 },
- { 9544, 0xF3FB }, { 9557, 0xC7FA }, { 9568, 0xBFBF }, { 9582, 0x5F5F },
- { 9594, 0xFFBA }, { 9607, 0xEDBF }, { 9620, 0xF7BF }, { 9634, 0xFEBF },
- /* 0x7900 */
- { 9648, 0x5276 }, { 9656, 0x7A9F }, { 9667, 0xFFFA }, { 9681, 0xFF7E },
- { 9695, 0x9FF7 }, { 9708, 0xFFFF }, { 9724, 0x2FBF }, { 9736, 0xF61F },
- { 9747, 0xEDCF }, { 9759, 0xBFFF }, { 9774, 0x7FF7 }, { 9788, 0xEFDF },
- { 9802, 0xFB73 }, { 9814, 0xF176 }, { 9824, 0x7EDD }, { 9836, 0x0DD2 },
- /* 0x7A00 */
- { 9843, 0x3D7D }, { 9854, 0xDFBF }, { 9868, 0xED45 }, { 9877, 0xFE83 },
- { 9887, 0x7FF9 }, { 9900, 0x9DD0 }, { 9908, 0x7BA7 }, { 9919, 0xEF73 },
- { 9931, 0x9FFB }, { 9944, 0xC3FF }, { 9956, 0xDF0D }, { 9966, 0xDDFF },
- { 9980, 0x8FBF }, { 9992, 0xBF0A }, { 10001, 0xEEFD }, { 10014, 0xEEC0 },
- /* 0x7B00 */
- { 10022, 0xDF73 }, { 10034, 0xEF1F }, { 10046, 0xFFFD }, { 10061, 0x0B3F },
- { 10070, 0xFFFD }, { 10085, 0x0177 }, { 10092, 0xF2FF }, { 10105, 0x09FF },
- { 10115, 0xFDB4 }, { 10126, 0x3BF7 }, { 10138, 0xB01F }, { 10146, 0x43B6 },
- { 10154, 0xDED3 }, { 10165, 0xFF31 }, { 10176, 0x1FFF }, { 10189, 0xFF9F },
- /* 0x7C00 */
- { 10203, 0xFEEF }, { 10217, 0xFA27 }, { 10227, 0x3FEF }, { 10240, 0xFBA9 },
- { 10251, 0x37BD }, { 10262, 0xBEDB }, { 10274, 0xFEF9 }, { 10287, 0xFF3D },
- { 10300, 0x777B }, { 10312, 0xD1F6 }, { 10322, 0xD1EE }, { 10332, 0xFF3E },
- { 10345, 0x7FAC }, { 10356, 0xF6FF }, { 10370, 0xF5C5 }, { 10380, 0x7BFF },
- /* 0x7D00 */
- { 10394, 0xFFFF }, { 10410, 0xFFFF }, { 10426, 0xDB27 }, { 10436, 0xFF6F },
- { 10450, 0xE4FF }, { 10462, 0xFD7F }, { 10476, 0xEFCE }, { 10488, 0xBE0F },
- { 10498, 0xFB7B }, { 10511, 0xF0DE }, { 10521, 0xFFDF }, { 10536, 0xFFBF },
- { 10551, 0xFEF7 }, { 10565, 0xFF9D }, { 10578, 0xD7FB }, { 10591, 0x6EFF },
- /* 0x7E00 */
- { 10604, 0xFF88 }, { 10614, 0xFCFF }, { 10628, 0xEEBF }, { 10641, 0xFFFF },
- { 10657, 0x13FF }, { 10668, 0xDFFF }, { 10683, 0xFFAF }, { 10697, 0xFFFD },
- { 10712, 0xFDC7 }, { 10724, 0x9FFE }, { 10737, 0x1010 }, { 10739, 0x0400 },
- { 10740, 0x8080 }, { 10742, 0x8000 }, { 10743, 0x0000 }, { 10743, 0x0000 },
- /* 0x7F00 */
- { 10743, 0x0040 }, { 10744, 0x0000 }, { 10744, 0x0000 }, { 10744, 0xE7C0 },
- { 10752, 0xFFBB }, { 10766, 0xF93F }, { 10778, 0x7FEB }, { 10791, 0xFFEF },
- { 10806, 0xFFE8 }, { 10818, 0x7CFE }, { 10830, 0xF3FF }, { 10844, 0xFFFF },
- { 10860, 0xFEAF }, { 10873, 0xF8B7 }, { 10884, 0xFFEF }, { 10899, 0xFFBF },
- /* 0x8000 */
- { 10914, 0xF9FF }, { 10928, 0xFBF7 }, { 10942, 0xD773 }, { 10953, 0xFAFB },
- { 10966, 0x85C8 }, { 10972, 0x7D57 }, { 10983, 0x90DE }, { 10991, 0xE3EF },
- { 11003, 0x9EF5 }, { 11014, 0xBF6D }, { 11026, 0xEEAE }, { 11037, 0x35F6 },
- { 11047, 0xF7FC }, { 11060, 0x7FF3 }, { 11073, 0xB27B }, { 11083, 0x7F7F },
- /* 0x8100 */
- { 11097, 0x57EF }, { 11109, 0xEFF4 }, { 11121, 0xBEBE }, { 11133, 0x6695 },
- { 11141, 0xFDDC }, { 11153, 0x5E7F }, { 11165, 0xEAF7 }, { 11177, 0x97DF },
- { 11189, 0xBFDD }, { 11202, 0xFFA8 }, { 11213, 0x5FED }, { 11225, 0xFEFF },
- { 11240, 0xB7FF }, { 11254, 0xEFA7 }, { 11266, 0xF7FF }, { 11281, 0xDFDC },
- /* 0x8200 */
- { 11293, 0x3FB7 }, { 11305, 0xFD77 }, { 11318, 0xBF67 }, { 11330, 0xF7FC },
- { 11343, 0xCAB5 }, { 11352, 0xDFFF }, { 11367, 0xFB7E }, { 11380, 0xFFF6 },
- { 11394, 0xECB9 }, { 11404, 0xEF1F }, { 11416, 0xFFFF }, { 11432, 0xFFFB },
- { 11447, 0x841D }, { 11453, 0xDBFF }, { 11467, 0xFDFF }, { 11482, 0xFFFF },
- /* 0x8300 */
- { 11498, 0x3BFF }, { 11511, 0x7FC0 }, { 11520, 0xBFF5 }, { 11533, 0xBFFE },
- { 11547, 0xFFBF }, { 11562, 0x00DF }, { 11569, 0x804C }, { 11573, 0xFDF8 },
- { 11585, 0xFFEA }, { 11598, 0x7FFF }, { 11613, 0xDFFD }, { 11627, 0xE201 },
- { 11632, 0xFFFF }, { 11648, 0xFBFA }, { 11661, 0xFFBF }, { 11676, 0xFF7F },
- /* 0x8400 */
- { 11691, 0xFEFA }, { 11704, 0x195F }, { 11713, 0xFA5B }, { 11724, 0xFFFF },
- { 11740, 0x7FFD }, { 11754, 0xFFFF }, { 11770, 0xFBFF }, { 11785, 0xE7FF },
- { 11799, 0xE145 }, { 11806, 0xFFDF }, { 11821, 0xFF9F }, { 11835, 0xFF57 },
- { 11848, 0xFEF7 }, { 11862, 0x4CDF }, { 11872, 0xDFB6 }, { 11884, 0xFFDF },
- /* 0x8500 */
- { 11899, 0xFFED }, { 11913, 0xF7FF }, { 11928, 0xFFFB }, { 11943, 0x691B },
- { 11951, 0x7FFF }, { 11966, 0xEFFE }, { 11980, 0xFFFF }, { 11996, 0x5FEB },
- { 12008, 0xFFFF }, { 12024, 0xFFF3 }, { 12038, 0x87DF }, { 12049, 0xE7FB },
- { 12062, 0xEBFF }, { 12076, 0xF7E7 }, { 12089, 0xFF7F }, { 12104, 0xFFC7 },
- /* 0x8600 */
- { 12117, 0xBEF7 }, { 12130, 0xDFD3 }, { 12142, 0xF7FF }, { 12157, 0xDF7E },
- { 12170, 0x79ED }, { 12181, 0xDA7D }, { 12192, 0xFFBE }, { 12206, 0x5E9F },
- { 12217, 0x7CE0 }, { 12225, 0x77FF }, { 12239, 0xA7BF }, { 12251, 0xFFFF },
- { 12267, 0x1BFF }, { 12279, 0xFFDB }, { 12293, 0xBF5C }, { 12304, 0x4FE0 },
- /* 0x8700 */
- { 12312, 0x7FFF }, { 12327, 0x5F0E }, { 12336, 0x77FF }, { 12350, 0xDDBF },
- { 12363, 0xF04F }, { 12372, 0xFFFF }, { 12388, 0xFFFF }, { 12404, 0x2FFB },
- { 12416, 0xBBFE }, { 12429, 0xFDDF }, { 12443, 0xFE3C }, { 12454, 0xFFFF },
- { 12470, 0x5F7F }, { 12483, 0xFFDE }, { 12497, 0xFDFF }, { 12512, 0xDEFC },
- /* 0x8800 */
- { 12524, 0xBF7F }, { 12538, 0xBBFB }, { 12551, 0xFFFF }, { 12567, 0xFBEF },
- { 12581, 0xFD7F }, { 12595, 0x6EEC }, { 12605, 0xEFBF }, { 12619, 0xF2F7 },
- { 12631, 0xFB9F }, { 12644, 0xDFEF }, { 12658, 0x5D97 }, { 12668, 0xF7F6 },
- { 12681, 0xFEA7 }, { 12693, 0xFFF5 }, { 12707, 0xD9C2 }, { 12715, 0xFFFF },
- /* 0x8900 */
- { 12731, 0x5EE7 }, { 12742, 0xC7FF }, { 12755, 0xFEFE }, { 12769, 0x79EF },
- { 12781, 0xBADE }, { 12792, 0xFFDF }, { 12807, 0xFE7F }, { 12821, 0xDEDE },
- { 12833, 0x8FEF }, { 12845, 0xF9FA }, { 12857, 0xF6FE }, { 12870, 0xF6C4 },
- { 12879, 0x0043 }, { 12882, 0xBE7C }, { 12893, 0x3BFF }, { 12906, 0xDDDF },
- /* 0x8A00 */
- { 12919, 0xD59D }, { 12929, 0xF9EF }, { 12942, 0x3EAC }, { 12951, 0xFF53 },
- { 12963, 0xF773 }, { 12975, 0x4BF7 }, { 12986, 0x7BCF }, { 12998, 0xDEFF },
- { 13012, 0xB8FE }, { 13023, 0x577F }, { 13035, 0x8FFB }, { 13047, 0xFF55 },
- { 13059, 0xABFD }, { 13071, 0xFFFE }, { 13086, 0xEDD7 }, { 13098, 0xDDFF },
- /* 0x8B00 */
- { 13112, 0xFDF7 }, { 13126, 0xFFFF }, { 13142, 0xFDFD }, { 13156, 0xFEEB },
- { 13169, 0xFFEF }, { 13184, 0xF7FF }, { 13199, 0xBFED }, { 13212, 0xEF91 },
- { 13222, 0x5D7F }, { 13234, 0xDF7D }, { 13247, 0x0001 }, { 13248, 0x4000 },
- { 13249, 0x0000 }, { 13249, 0x0000 }, { 13249, 0x0004 }, { 13250, 0x0000 },
- /* 0x8C00 */
- { 13250, 0x0000 }, { 13250, 0x0000 }, { 13250, 0x0000 }, { 13250, 0xFA80 },
- { 13257, 0xFFEE }, { 13271, 0xB4F3 }, { 13281, 0xBF76 }, { 13293, 0x2FEF },
- { 13305, 0xB677 }, { 13316, 0xFFBF }, { 13331, 0xBFBF }, { 13345, 0xFFFD },
- { 13360, 0xB5BF }, { 13372, 0xFEFE }, { 13386, 0x7FFF }, { 13401, 0x7FBF },
- /* 0x8D00 */
- { 13415, 0xBFFD }, { 13429, 0x3BFF }, { 13442, 0x0000 }, { 13442, 0x0000 },
- { 13442, 0x0000 }, { 13442, 0x0000 }, { 13442, 0xFBD0 }, { 13452, 0x2FDD },
- { 13463, 0xF637 }, { 13474, 0x9A7F }, { 13485, 0xFFEB }, { 13499, 0xD6FC },
- { 13510, 0xF9EF }, { 13523, 0xBFFB }, { 13537, 0xDFDF }, { 13551, 0xF41F },
- /* 0x8E00 */
- { 13561, 0xE6FF }, { 13574, 0xFFFF }, { 13590, 0x6FFF }, { 13604, 0xF77B },
- { 13617, 0xFFF7 }, { 13632, 0xFEF9 }, { 13645, 0xB7FF }, { 13659, 0x5DFE },
- { 13671, 0x7FF7 }, { 13685, 0xE5FF }, { 13698, 0x3FFB }, { 13711, 0x3645 },
- { 13718, 0xFE0D }, { 13728, 0xFD9E }, { 13740, 0xFBF7 }, { 13754, 0xDFF6 },
- /* 0x8F00 */
- { 13767, 0x6FEF }, { 13780, 0xFFFF }, { 13796, 0xF679 }, { 13807, 0xCBFD },
- { 13819, 0xEFFF }, { 13834, 0xFFFF }, { 13850, 0x40DF }, { 13858, 0x0000 },
- { 13858, 0x0000 }, { 13858, 0x9808 }, { 13862, 0xE1E9 }, { 13871, 0xDFFF },
- { 13886, 0xFE76 }, { 13898, 0x04FF }, { 13907, 0x6D7F }, { 13919, 0xFFF1 },
- /* 0x9000 */
- { 13932, 0xB97F }, { 13944, 0xFEF7 }, { 13958, 0xE01F }, { 13966, 0xF1FE },
- { 13978, 0xFE96 }, { 13989, 0x7B7F }, { 14002, 0xFB9F }, { 14015, 0xFFFD },
- { 14030, 0xADFF }, { 14043, 0xCBB3 }, { 14053, 0xC5EF }, { 14064, 0xE97F },
- { 14076, 0x4DBA }, { 14085, 0xBFF0 }, { 14096, 0xBF3F }, { 14109, 0xFE3F },
- /* 0x9100 */
- { 14122, 0xEBFF }, { 14136, 0xFFD7 }, { 14150, 0xFFDF }, { 14165, 0xCF7F },
- { 14178, 0xFFFB }, { 14193, 0xD7EF }, { 14206, 0xD7BF }, { 14219, 0x17FD },
- { 14230, 0xFEFF }, { 14245, 0xFE0F }, { 14256, 0xFFAF }, { 14270, 0x7EFF },
- { 14284, 0xFAFF }, { 14298, 0xB7FB }, { 14311, 0x7FFC }, { 14324, 0xE7FA },
- /* 0x9200 */
- { 14336, 0xF7FF }, { 14351, 0x56FF }, { 14363, 0x6DFA }, { 14374, 0xF7FF },
- { 14389, 0xFF73 }, { 14402, 0xEDFF }, { 14416, 0xF8FF }, { 14429, 0xFFC5 },
- { 14441, 0xFFFF }, { 14457, 0x3FFA }, { 14469, 0x5FFF }, { 14483, 0xDEFE },
- { 14496, 0xFFFF }, { 14512, 0xEBBF }, { 14525, 0xDFFB }, { 14539, 0xFFDF },
- /* 0x9300 */
- { 14554, 0xFBDF }, { 14568, 0xEF7D }, { 14581, 0xFFFF }, { 14597, 0x137B },
- { 14606, 0xFFFF }, { 14622, 0xDFF7 }, { 14636, 0x7FFF }, { 14651, 0x7FFB },
- { 14665, 0xF7FF }, { 14680, 0xFFF7 }, { 14695, 0xF7FF }, { 14710, 0xA9BF },
- { 14721, 0xFDDD }, { 14734, 0xFFFF }, { 14750, 0x51DF }, { 14760, 0xFFFB },
- /* 0x9400 */
- { 14775, 0xFFDB }, { 14789, 0x2BFF }, { 14801, 0x7FF1 }, { 14813, 0xFFEF },
- { 14828, 0xBFFD }, { 14842, 0x69B7 }, { 14852, 0xFFBD }, { 14866, 0xFBFF },
- { 14881, 0x002F }, { 14886, 0x8000 }, { 14887, 0x0004 }, { 14888, 0x0000 },
- { 14888, 0x000A }, { 14890, 0x1000 }, { 14891, 0x0000 }, { 14891, 0x0040 },
- /* 0x9500 */
- { 14892, 0x0000 }, { 14892, 0x0000 }, { 14892, 0x2000 }, { 14893, 0x0000 },
- { 14893, 0x0080 }, { 14894, 0x0000 }, { 14894, 0x0000 }, { 14894, 0xBD80 },
- { 14901, 0xFB6D }, { 14913, 0xDBDF }, { 14926, 0x7FFF }, { 14941, 0xFEE3 },
- { 14953, 0x3FE9 }, { 14964, 0xDC7F }, { 14976, 0x013F }, { 14983, 0x0010 },
- /* 0x9600 */
- { 14984, 0x0000 }, { 14984, 0x7000 }, { 14987, 0xF51F }, { 14998, 0xBF0F },
- { 15009, 0xFC3F }, { 15021, 0xF95B }, { 15032, 0xBE1E }, { 15042, 0x79FF },
- { 15055, 0xEFFB }, { 15069, 0x5BFE }, { 15081, 0x57BE }, { 15092, 0xBB5B },
- { 15103, 0x7FFF }, { 15118, 0xFFFC }, { 15132, 0x872E }, { 15140, 0xAFF7 },
- /* 0x9700 */
- { 15153, 0xEBFD }, { 15166, 0xFB4F }, { 15178, 0xDFFF }, { 15193, 0xE767 },
- { 15204, 0x0BDF }, { 15214, 0xFDE6 }, { 15226, 0x7747 }, { 15236, 0xFDDF },
- { 15250, 0xEFBF }, { 15264, 0xFF90 }, { 15274, 0x7D7F }, { 15287, 0xEFDE },
- { 15300, 0xFBFF }, { 15315, 0xF3FD }, { 15328, 0x606B }, { 15335, 0xEF6F },
- /* 0x9800 */
- { 15348, 0xF5FF }, { 15362, 0xF9FF }, { 15376, 0xEBDB }, { 15388, 0x0BBD },
- { 15397, 0xFFFA }, { 15411, 0xFB8F }, { 15423, 0x9FFD }, { 15436, 0x003F },
- { 15442, 0x0000 }, { 15442, 0x0000 }, { 15442, 0xF300 }, { 15448, 0xFFDE },
- { 15462, 0x5FDF }, { 15475, 0xD800 }, { 15479, 0xBEEF }, { 15492, 0x7676 },
- /* 0x9900 */
- { 15502, 0x57AD }, { 15512, 0xDFFF }, { 15527, 0xFFB2 }, { 15539, 0xFFAF },
- { 15553, 0x7FAF }, { 15566, 0xFBFF }, { 15581, 0x000E }, { 15584, 0x0000 },
- { 15584, 0x0000 }, { 15584, 0x7BC0 }, { 15592, 0xFDFA }, { 15605, 0x3F3F },
- { 15617, 0xFABE }, { 15629, 0xBFFF }, { 15644, 0x76FF }, { 15657, 0xFFF3 },
- /* 0x9A00 */
- { 15671, 0xFEFE }, { 15685, 0xFE73 }, { 15697, 0xFEFF }, { 15712, 0xFFF7 },
- { 15727, 0xF77F }, { 15741, 0xDFFD }, { 15755, 0x1FFD }, { 15767, 0x0000 },
- { 15767, 0x8000 }, { 15768, 0x0000 }, { 15768, 0xA900 }, { 15772, 0xFFDF },
- { 15787, 0xA4C7 }, { 15795, 0x91FF }, { 15806, 0xF8CF }, { 15817, 0xFEDE },
- /* 0x9B00 */
- { 15830, 0xFF7E }, { 15844, 0xC7F7 }, { 15856, 0xEFBD }, { 15869, 0xDEBE },
- { 15881, 0xFD7F }, { 15895, 0x8F77 }, { 15906, 0x93D3 }, { 15915, 0xFCF3 },
- { 15927, 0xE9EF }, { 15939, 0xECAF }, { 15950, 0xED77 }, { 15962, 0xA361 },
- { 15969, 0x87DB }, { 15979, 0x7EF8 }, { 15990, 0x3FF7 }, { 16003, 0xA193 },
- /* 0x9C00 */
- { 16010, 0x7FE4 }, { 16021, 0xB8BD }, { 16031, 0xBB7B }, { 16043, 0xFEFE },
- { 16057, 0xFF73 }, { 16070, 0xE3FD }, { 16082, 0x61CD }, { 16090, 0x1FBE },
- { 16101, 0x0000 }, { 16101, 0x0000 }, { 16101, 0x0000 }, { 16101, 0x0000 },
- { 16101, 0x0000 }, { 16101, 0x0000 }, { 16101, 0x26E0 }, { 16107, 0xBEFE },
- /* 0x9D00 */
- { 16120, 0x13FD }, { 16130, 0xEBF5 }, { 16142, 0xE36F }, { 16153, 0xEBDB },
- { 16165, 0xDE3F }, { 16177, 0xFFDF }, { 16192, 0xFF83 }, { 16203, 0xFBBF },
- { 16217, 0x1FFF }, { 16230, 0xFFDD }, { 16244, 0xBFFF }, { 16259, 0xFFFE },
- { 16274, 0xFFBF }, { 16289, 0xFFFF }, { 16305, 0xFB7E }, { 16318, 0xFFFD },
- /* 0x9E00 */
- { 16333, 0xFEFF }, { 16348, 0xFFBF }, { 16363, 0x0000 }, { 16363, 0x0000 },
- { 16363, 0x0000 }, { 16363, 0x0000 }, { 16363, 0x0000 }, { 16363, 0xBE20 },
- { 16370, 0x7FFF }, { 16385, 0xFFFF }, { 16401, 0xFFF7 }, { 16416, 0xF8F3 },
- { 16427, 0xF1DF }, { 16439, 0xFD7B }, { 16452, 0xE9F5 }, { 16463, 0xFFFF },
- /* 0x9F00 */
- { 16479, 0xC7C7 }, { 16489, 0x5FED }, { 16501, 0xFFFD }, { 16516, 0x6BFF },
- { 16529, 0xFFFF }, { 16545, 0xFFFD }, { 16560, 0xDEFF }, { 16574, 0xCFF7 },
- { 16587, 0x6000 }, { 16589, 0x9337 }, { 16598, 0x0035 },
-};
-static const Summary16 big5hkscs_uni2index_pagee0[419] = {
- /* 0xE000 */
- { 16602, 0xFFFF }, { 16618, 0xFFFF }, { 16634, 0xFFFF }, { 16650, 0xFFFF },
- { 16666, 0xFFFF }, { 16682, 0xFFFF }, { 16698, 0xFFFF }, { 16714, 0xFFFF },
- { 16730, 0xFFFF }, { 16746, 0xFFFF }, { 16762, 0xFFFF }, { 16778, 0xFFFF },
- { 16794, 0xFFFF }, { 16810, 0xFFFF }, { 16826, 0xFFFF }, { 16842, 0xFFFF },
- /* 0xE100 */
- { 16858, 0xFFFF }, { 16874, 0xFFFF }, { 16890, 0xFFFF }, { 16906, 0xFFFF },
- { 16922, 0xFFFF }, { 16938, 0xFFFF }, { 16954, 0xFFFF }, { 16970, 0xFFFF },
- { 16986, 0xFFFF }, { 17002, 0xFFFF }, { 17018, 0xFFFF }, { 17034, 0xFFFF },
- { 17050, 0xFFFF }, { 17066, 0xFFFF }, { 17082, 0xFFFF }, { 17098, 0xFFFF },
- /* 0xE200 */
- { 17114, 0xFFFF }, { 17130, 0xFFFF }, { 17146, 0xFFFF }, { 17162, 0xFFFF },
- { 17178, 0xFFFF }, { 17194, 0xFFFF }, { 17210, 0xFFFF }, { 17226, 0xFFFF },
- { 17242, 0xFFFF }, { 17258, 0xFFFF }, { 17274, 0xFFFF }, { 17290, 0xFFFF },
- { 17306, 0xFFFF }, { 17322, 0xFFFF }, { 17338, 0xFFFF }, { 17354, 0xFFFF },
- /* 0xE300 */
- { 17370, 0xFFFF }, { 17386, 0xFFFF }, { 17402, 0xFFFF }, { 17418, 0xFFFF },
- { 17434, 0xFFFF }, { 17450, 0xFFFF }, { 17466, 0xFFFF }, { 17482, 0xFFFF },
- { 17498, 0xFFFF }, { 17514, 0xFFFF }, { 17530, 0xFFFF }, { 17546, 0xFFFF },
- { 17562, 0xFFFF }, { 17578, 0xFFFF }, { 17594, 0xFFFF }, { 17610, 0xFFFF },
- /* 0xE400 */
- { 17626, 0xFFFF }, { 17642, 0xFFFF }, { 17658, 0xFFFF }, { 17674, 0xFFFF },
- { 17690, 0xFFFF }, { 17706, 0xFFFF }, { 17722, 0xFFFF }, { 17738, 0xFFFF },
- { 17754, 0xFFFF }, { 17770, 0xFFFF }, { 17786, 0xFFFF }, { 17802, 0xFFFF },
- { 17818, 0xFFFF }, { 17834, 0xFFFF }, { 17850, 0xFFFF }, { 17866, 0xFFFF },
- /* 0xE500 */
- { 17882, 0xFFFF }, { 17898, 0xFFFF }, { 17914, 0xFFFF }, { 17930, 0xFFFF },
- { 17946, 0xFFFF }, { 17962, 0xFFFF }, { 17978, 0xFFFF }, { 17994, 0xFFFF },
- { 18010, 0xFFFF }, { 18026, 0xFFFF }, { 18042, 0xFFFF }, { 18058, 0xFFFF },
- { 18074, 0xFFFF }, { 18090, 0xFFFF }, { 18106, 0xFFFF }, { 18122, 0xFFFF },
- /* 0xE600 */
- { 18138, 0xFFFF }, { 18154, 0xFFFF }, { 18170, 0xFFFF }, { 18186, 0xFFFF },
- { 18202, 0xFFFF }, { 18218, 0xFFFF }, { 18234, 0xFFFF }, { 18250, 0xFFFF },
- { 18266, 0xFFFF }, { 18282, 0xFFFF }, { 18298, 0xFFFF }, { 18314, 0xFFFF },
- { 18330, 0xFFFF }, { 18346, 0xFFFF }, { 18362, 0xFFFF }, { 18378, 0xFFFF },
- /* 0xE700 */
- { 18394, 0xFFFF }, { 18410, 0xFFFF }, { 18426, 0xFFFF }, { 18442, 0xFFFF },
- { 18458, 0xFFFF }, { 18474, 0xFFFF }, { 18490, 0xFFFF }, { 18506, 0xFFFF },
- { 18522, 0xFFFF }, { 18538, 0xFFFF }, { 18554, 0xFFFF }, { 18570, 0xFFFF },
- { 18586, 0xFFFF }, { 18602, 0xFFFF }, { 18618, 0xFFFF }, { 18634, 0xFFFF },
- /* 0xE800 */
- { 18650, 0xFFFF }, { 18666, 0xFFFF }, { 18682, 0xFFFF }, { 18698, 0xFFFF },
- { 18714, 0xFFFF }, { 18730, 0xFFFF }, { 18746, 0xFFFF }, { 18762, 0xFFFF },
- { 18778, 0xFFFF }, { 18794, 0xFFFF }, { 18810, 0xFFFF }, { 18826, 0xFFFF },
- { 18842, 0xFFFF }, { 18858, 0xFFFF }, { 18874, 0xFFFF }, { 18890, 0xFFFF },
- /* 0xE900 */
- { 18906, 0xFFFF }, { 18922, 0xFFFF }, { 18938, 0xFFFF }, { 18954, 0xFFFF },
- { 18970, 0xFFFF }, { 18986, 0xFFFF }, { 19002, 0xFFFF }, { 19018, 0xFFFF },
- { 19034, 0xFFFF }, { 19050, 0xFFFF }, { 19066, 0xFFFF }, { 19082, 0xFFFF },
- { 19098, 0xFFFF }, { 19114, 0xFFFF }, { 19130, 0xFFFF }, { 19146, 0xFFFF },
- /* 0xEA00 */
- { 19162, 0xFFFF }, { 19178, 0xFFFF }, { 19194, 0xFFFF }, { 19210, 0xFFFF },
- { 19226, 0xFFFF }, { 19242, 0xFFFF }, { 19258, 0xFFFF }, { 19274, 0xFFFF },
- { 19290, 0xFFFF }, { 19306, 0xFFFF }, { 19322, 0xFFFF }, { 19338, 0xFFFF },
- { 19354, 0xFFFF }, { 19370, 0xFFFF }, { 19386, 0xFFFF }, { 19402, 0xFFFF },
- /* 0xEB00 */
- { 19418, 0xFFFF }, { 19434, 0xFFFF }, { 19450, 0xFFFF }, { 19466, 0xFFFF },
- { 19482, 0xFFFF }, { 19498, 0xFFFF }, { 19514, 0xFFFF }, { 19530, 0xFFFF },
- { 19546, 0xFFFF }, { 19562, 0xFFFF }, { 19578, 0xFFFF }, { 19594, 0xFFFF },
- { 19610, 0xFFFF }, { 19626, 0xFFFF }, { 19642, 0xFFFF }, { 19658, 0xFFFF },
- /* 0xEC00 */
- { 19674, 0xFFFF }, { 19690, 0xFFFF }, { 19706, 0xFFFF }, { 19722, 0xFFFF },
- { 19738, 0xFFFF }, { 19754, 0xFFFF }, { 19770, 0xFFFF }, { 19786, 0xFFFF },
- { 19802, 0xFFFF }, { 19818, 0xFFFF }, { 19834, 0xFFFF }, { 19850, 0xFFFF },
- { 19866, 0xFFFF }, { 19882, 0xFFFF }, { 19898, 0xFFFF }, { 19914, 0xFFFF },
- /* 0xED00 */
- { 19930, 0xFFFF }, { 19946, 0xFFFF }, { 19962, 0xFFFF }, { 19978, 0xFFFF },
- { 19994, 0xFFFF }, { 20010, 0xFFFF }, { 20026, 0xFFFF }, { 20042, 0xFFFF },
- { 20058, 0xFFFF }, { 20074, 0xFFFF }, { 20090, 0xFFFF }, { 20106, 0xFFFF },
- { 20122, 0xFFFF }, { 20138, 0xFFFF }, { 20154, 0xFFFF }, { 20170, 0xFFFF },
- /* 0xEE00 */
- { 20186, 0xFFFF }, { 20202, 0xFFFF }, { 20218, 0xFFFF }, { 20234, 0xFFFF },
- { 20250, 0xFFFF }, { 20266, 0xFFFF }, { 20282, 0xFFFF }, { 20298, 0xFFFF },
- { 20314, 0xFFFF }, { 20330, 0xFFFF }, { 20346, 0xFFFF }, { 20362, 0xFFFF },
- { 20378, 0xFFFF }, { 20394, 0xFFFF }, { 20410, 0xFFFF }, { 20426, 0xFFFF },
- /* 0xEF00 */
- { 20442, 0xFFFF }, { 20458, 0xFFFF }, { 20474, 0xFFFF }, { 20490, 0xFFFF },
- { 20506, 0xFFFF }, { 20522, 0xFFFF }, { 20538, 0xFFFF }, { 20554, 0xFFFF },
- { 20570, 0xFFFF }, { 20586, 0xFFFF }, { 20602, 0xFFFF }, { 20618, 0xFFFF },
- { 20634, 0xFFFF }, { 20650, 0xFFFF }, { 20666, 0xFFFF }, { 20682, 0xFFFF },
- /* 0xF000 */
- { 20698, 0xFFFF }, { 20714, 0xFFFF }, { 20730, 0xFFFF }, { 20746, 0xFFFF },
- { 20762, 0xFFFF }, { 20778, 0xFFFF }, { 20794, 0xFFFF }, { 20810, 0xFFFF },
- { 20826, 0xFFFF }, { 20842, 0xFFFF }, { 20858, 0xFFFF }, { 20874, 0xFFFF },
- { 20890, 0xFFFF }, { 20906, 0xFFFF }, { 20922, 0xFFFF }, { 20938, 0xFFFF },
- /* 0xF100 */
- { 20954, 0xFFFF }, { 20970, 0xFFFF }, { 20986, 0xFFFF }, { 21002, 0xFFFF },
- { 21018, 0xFFFF }, { 21034, 0xFFFF }, { 21050, 0xFFFF }, { 21066, 0xFFFF },
- { 21082, 0xFFFF }, { 21098, 0xFFFF }, { 21114, 0xFFFF }, { 21130, 0xFFFF },
- { 21146, 0xFFFF }, { 21162, 0xFFFF }, { 21178, 0xFFFF }, { 21194, 0xFFFF },
- /* 0xF200 */
- { 21210, 0xFFFF }, { 21226, 0xFFFF }, { 21242, 0xFFFF }, { 21258, 0xFFFF },
- { 21274, 0xFFFF }, { 21290, 0xFFFF }, { 21306, 0xFFFF }, { 21322, 0xFFFF },
- { 21338, 0xFFFF }, { 21354, 0xFFFF }, { 21370, 0xFFFF }, { 21386, 0xFFFF },
- { 21402, 0xFFFF }, { 21418, 0xFFFF }, { 21434, 0xFFFF }, { 21450, 0xFFFF },
- /* 0xF300 */
- { 21466, 0xFFFF }, { 21482, 0xFFFF }, { 21498, 0xFFFF }, { 21514, 0xFFFF },
- { 21530, 0xFFFF }, { 21546, 0xFFFF }, { 21562, 0xFFFF }, { 21578, 0xFFFF },
- { 21594, 0xFFFF }, { 21610, 0xFFFF }, { 21626, 0xFFFF }, { 21642, 0xFFFF },
- { 21658, 0xFFFF }, { 21674, 0xFFFF }, { 21690, 0xFFFF }, { 21706, 0xFFFF },
- /* 0xF400 */
- { 21722, 0xFFFF }, { 21738, 0xFFFF }, { 21754, 0xFFFF }, { 21770, 0xFFFF },
- { 21786, 0xFFFF }, { 21802, 0xFFFF }, { 21818, 0xFFFF }, { 21834, 0xFFFF },
- { 21850, 0xFFFF }, { 21866, 0xFFFF }, { 21882, 0xFFFF }, { 21898, 0xFFFF },
- { 21914, 0xFFFF }, { 21930, 0xFFFF }, { 21946, 0xFFFF }, { 21962, 0xFFFF },
- /* 0xF500 */
- { 21978, 0xFFFF }, { 21994, 0xFFFF }, { 22010, 0xFFFF }, { 22026, 0xFFFF },
- { 22042, 0xFFFF }, { 22058, 0xFFFF }, { 22074, 0xFFFF }, { 22090, 0xFFFF },
- { 22106, 0xFFFF }, { 22122, 0xFFFF }, { 22138, 0xFFFF }, { 22154, 0xFFFF },
- { 22170, 0xFFFF }, { 22186, 0xFFFF }, { 22202, 0xFFFF }, { 22218, 0xFFFF },
- /* 0xF600 */
- { 22234, 0xFFFF }, { 22250, 0xFFFF }, { 22266, 0xFFFF }, { 22282, 0xFFFF },
- { 22298, 0xFFFF }, { 22314, 0xFFFF }, { 22330, 0xFFFF }, { 22346, 0xFFFF },
- { 22362, 0xFFFF }, { 22378, 0xFFFF }, { 22394, 0xFFFF }, { 22410, 0xFFFF },
- { 22426, 0xFFFF }, { 22442, 0xFFFF }, { 22458, 0xFFFF }, { 22474, 0xFFFF },
- /* 0xF700 */
- { 22490, 0xFFFF }, { 22506, 0xFFFF }, { 22522, 0xFFFF }, { 22538, 0xFFFF },
- { 22554, 0xFFFF }, { 22570, 0xFFFF }, { 22586, 0xFFFF }, { 22602, 0xFFFF },
- { 22618, 0xFFFF }, { 22634, 0xFFFF }, { 22650, 0xFFFF }, { 22666, 0xFFFF },
- { 22682, 0xFFFF }, { 22698, 0xFFFF }, { 22714, 0xFFFF }, { 22730, 0xFFFF },
- /* 0xF800 */
- { 22746, 0xFFFF }, { 22762, 0xFFFF }, { 22778, 0xFFFF }, { 22794, 0xFFFF },
- { 22810, 0x01FF }, { 22819, 0x0000 }, { 22819, 0x0000 }, { 22819, 0x0000 },
- { 22819, 0x0000 }, { 22819, 0x0000 }, { 22819, 0x0000 }, { 22819, 0x0000 },
- { 22819, 0x0000 }, { 22819, 0x0000 }, { 22819, 0x0000 }, { 22819, 0x0100 },
- /* 0xF900 */
- { 22820, 0xFFFF }, { 22836, 0xFFFF }, { 22852, 0xEFFF }, { 22867, 0xFFFF },
- { 22883, 0xFFFF }, { 22899, 0xFFFF }, { 22915, 0xFFFF }, { 22931, 0xFDFF },
- { 22946, 0xFFFF }, { 22962, 0xFFDF }, { 22977, 0xFFFF }, { 22993, 0xFFFF },
- { 23009, 0xFFFF }, { 23025, 0xFFFF }, { 23041, 0xFF7F }, { 23056, 0xFFFD },
- /* 0xFA00 */
- { 23071, 0x3FFF }, { 23085, 0x7EE5 }, { 23096, 0x3C64 },
-};
-static const Summary16 big5hkscs_uni2index_pagefe[31] = {
- /* 0xFE00 */
- { 23103, 0x0000 }, { 23103, 0x0000 }, { 23103, 0x0000 }, { 23103, 0xFFFB },
- { 23118, 0xFE1F }, { 23130, 0xFEF7 }, { 23144, 0x0F7F }, { 23155, 0x0000 },
- { 23155, 0x0000 }, { 23155, 0x0000 }, { 23155, 0x0000 }, { 23155, 0x0000 },
- { 23155, 0x0000 }, { 23155, 0x0000 }, { 23155, 0x0000 }, { 23155, 0x0000 },
- /* 0xFF00 */
- { 23155, 0xFFFE }, { 23170, 0xFFFF }, { 23186, 0xFFFF }, { 23202, 0xFFFF },
- { 23218, 0xFFFF }, { 23234, 0x7FFF }, { 23249, 0x0010 }, { 23250, 0x0000 },
- { 23250, 0x0000 }, { 23250, 0x0000 }, { 23250, 0x0000 }, { 23250, 0x0000 },
- { 23250, 0x0000 }, { 23250, 0x0000 }, { 23250, 0x203F },
-};
-static const Summary16 big5hkscs_uni2index_page200[2335] = {
- /* 0x20000 */
- { 23257, 0x0000 }, { 23257, 0x0000 }, { 23257, 0x0002 }, { 23258, 0x4000 },
- { 23259, 0x4040 }, { 23261, 0x0000 }, { 23261, 0x0100 }, { 23262, 0x0000 },
- { 23262, 0x04C0 }, { 23265, 0x0010 }, { 23266, 0x0000 }, { 23266, 0x0000 },
- { 23266, 0x3C00 }, { 23270, 0x0002 }, { 23271, 0x4000 }, { 23272, 0x0000 },
- /* 0x20100 */
- { 23272, 0x5000 }, { 23274, 0x0100 }, { 23275, 0x0000 }, { 23275, 0x0000 },
- { 23275, 0x0000 }, { 23275, 0x0000 }, { 23275, 0x0000 }, { 23275, 0x0000 },
- { 23275, 0x0000 }, { 23275, 0x0000 }, { 23275, 0x0A00 }, { 23277, 0x0000 },
- { 23277, 0x0002 }, { 23278, 0x0010 }, { 23279, 0x0000 }, { 23279, 0x0004 },
- /* 0x20200 */
- { 23280, 0x1010 }, { 23282, 0x0010 }, { 23283, 0x0000 }, { 23283, 0x0000 },
- { 23283, 0x0000 }, { 23283, 0x0800 }, { 23284, 0x0000 }, { 23284, 0x0030 },
- { 23286, 0x0000 }, { 23286, 0x4200 }, { 23288, 0x0001 }, { 23289, 0x8080 },
- { 23291, 0x0001 }, { 23292, 0x0000 }, { 23292, 0x0020 }, { 23293, 0x0000 },
- /* 0x20300 */
- { 23293, 0x0400 }, { 23294, 0x0000 }, { 23294, 0x0020 }, { 23295, 0x0000 },
- { 23295, 0x00E2 }, { 23299, 0x0000 }, { 23299, 0x0000 }, { 23299, 0xC000 },
- { 23301, 0x0001 }, { 23302, 0x0000 }, { 23302, 0x0081 }, { 23304, 0x0020 },
- { 23305, 0x0A00 }, { 23307, 0x0000 }, { 23307, 0x0000 }, { 23307, 0x1020 },
- /* 0x20400 */
- { 23309, 0x0000 }, { 23309, 0x8018 }, { 23312, 0x0000 }, { 23312, 0x0000 },
- { 23312, 0x0000 }, { 23312, 0x0000 }, { 23312, 0x0020 }, { 23313, 0x0000 },
- { 23313, 0x4080 }, { 23315, 0x0006 }, { 23317, 0x0008 }, { 23318, 0x0000 },
- { 23318, 0x0000 }, { 23318, 0x0080 }, { 23319, 0x0000 }, { 23319, 0x5000 },
- /* 0x20500 */
- { 23321, 0x0000 }, { 23321, 0x0000 }, { 23321, 0x0000 }, { 23321, 0x0000 },
- { 23321, 0x0080 }, { 23322, 0x0000 }, { 23322, 0x0000 }, { 23322, 0x0000 },
- { 23322, 0x4000 }, { 23323, 0x0000 }, { 23323, 0x0020 }, { 23324, 0x0008 },
- { 23325, 0x0408 }, { 23327, 0x8021 }, { 23330, 0x0801 }, { 23332, 0x0000 },
- /* 0x20600 */
- { 23332, 0x0000 }, { 23332, 0x0622 }, { 23336, 0x0000 }, { 23336, 0x0001 },
- { 23337, 0x0000 }, { 23337, 0x0040 }, { 23338, 0x0000 }, { 23338, 0x0040 },
- { 23339, 0x0000 }, { 23339, 0x0000 }, { 23339, 0x0000 }, { 23339, 0x0000 },
- { 23339, 0x0000 }, { 23339, 0x0000 }, { 23339, 0x0000 }, { 23339, 0x0000 },
- /* 0x20700 */
- { 23339, 0x4000 }, { 23340, 0x0000 }, { 23340, 0x0000 }, { 23340, 0x0002 },
- { 23341, 0x0000 }, { 23341, 0x0000 }, { 23341, 0x0000 }, { 23341, 0x0200 },
- { 23342, 0x0000 }, { 23342, 0x0000 }, { 23342, 0x0000 }, { 23342, 0x0000 },
- { 23342, 0x0000 }, { 23342, 0x0000 }, { 23342, 0x0000 }, { 23342, 0x0000 },
- /* 0x20800 */
- { 23342, 0x0000 }, { 23342, 0x0000 }, { 23342, 0x1000 }, { 23343, 0x0000 },
- { 23343, 0x0000 }, { 23343, 0x0000 }, { 23343, 0x0000 }, { 23343, 0x0008 },
- { 23344, 0x0000 }, { 23344, 0x0000 }, { 23344, 0x0000 }, { 23344, 0x0000 },
- { 23344, 0x0000 }, { 23344, 0x0020 }, { 23345, 0x0000 }, { 23345, 0x0000 },
- /* 0x20900 */
- { 23345, 0x0000 }, { 23345, 0x0040 }, { 23346, 0x0008 }, { 23347, 0x0000 },
- { 23347, 0x0000 }, { 23347, 0x0010 }, { 23348, 0x0000 }, { 23348, 0x0200 },
- { 23349, 0x0000 }, { 23349, 0x0000 }, { 23349, 0x0000 }, { 23349, 0x0000 },
- { 23349, 0x0000 }, { 23349, 0x0000 }, { 23349, 0x0080 }, { 23350, 0x0000 },
- /* 0x20A00 */
- { 23350, 0x0000 }, { 23350, 0x0002 }, { 23351, 0x0000 }, { 23351, 0x0000 },
- { 23351, 0x0000 }, { 23351, 0x0001 }, { 23352, 0x0000 }, { 23352, 0x0000 },
- { 23352, 0x0000 }, { 23352, 0x0000 }, { 23352, 0x0000 }, { 23352, 0x0010 },
- { 23353, 0x2004 }, { 23355, 0x0000 }, { 23355, 0x0000 }, { 23355, 0x0000 },
- /* 0x20B00 */
- { 23355, 0x2000 }, { 23356, 0x0000 }, { 23356, 0x0000 }, { 23356, 0x0000 },
- { 23356, 0x0000 }, { 23356, 0x0000 }, { 23356, 0x0000 }, { 23356, 0x0000 },
- { 23356, 0x8000 }, { 23357, 0x0000 }, { 23357, 0x0300 }, { 23359, 0x8000 },
- { 23360, 0x0840 }, { 23362, 0x0000 }, { 23362, 0x0804 }, { 23364, 0x8800 },
- /* 0x20C00 */
- { 23366, 0x2800 }, { 23368, 0x0000 }, { 23368, 0x0001 }, { 23369, 0x0C10 },
- { 23372, 0x000E }, { 23375, 0x0008 }, { 23376, 0x0020 }, { 23377, 0x1180 },
- { 23380, 0x2000 }, { 23381, 0x1040 }, { 23383, 0x0000 }, { 23383, 0x0120 },
- { 23385, 0x8000 }, { 23386, 0x2078 }, { 23391, 0x2000 }, { 23392, 0x8000 },
- /* 0x20D00 */
- { 23393, 0x0000 }, { 23393, 0x0020 }, { 23394, 0x0100 }, { 23395, 0x0006 },
- { 23397, 0x73C0 }, { 23404, 0x0000 }, { 23404, 0x8000 }, { 23405, 0xD012 },
- { 23410, 0x0000 }, { 23410, 0x1040 }, { 23412, 0x0080 }, { 23413, 0x0004 },
- { 23414, 0x0100 }, { 23415, 0x0000 }, { 23415, 0x0000 }, { 23415, 0x0000 },
- /* 0x20E00 */
- { 23415, 0xE610 }, { 23421, 0x2043 }, { 23425, 0x0000 }, { 23425, 0x0000 },
- { 23425, 0x1000 }, { 23426, 0x0000 }, { 23426, 0x2000 }, { 23427, 0x0FE8 },
- { 23435, 0x1000 }, { 23436, 0x2140 }, { 23439, 0x1C04 }, { 23443, 0x0040 },
- { 23444, 0x0000 }, { 23444, 0x2180 }, { 23447, 0x0000 }, { 23447, 0x0F00 },
- /* 0x20F00 */
- { 23451, 0x0000 }, { 23451, 0x2000 }, { 23452, 0x6040 }, { 23455, 0x0803 },
- { 23458, 0x1000 }, { 23459, 0x0000 }, { 23459, 0x0010 }, { 23460, 0x0000 },
- { 23460, 0x2000 }, { 23461, 0x0001 }, { 23462, 0x2000 }, { 23463, 0x1070 },
- { 23467, 0x0000 }, { 23467, 0x8000 }, { 23468, 0x3C00 }, { 23472, 0x0000 },
- /* 0x21000 */
- { 23472, 0x0000 }, { 23472, 0x6010 }, { 23475, 0x0000 }, { 23475, 0x0000 },
- { 23475, 0x8000 }, { 23476, 0x1000 }, { 23477, 0x8000 }, { 23478, 0x09E0 },
- { 23483, 0x0100 }, { 23484, 0x2040 }, { 23486, 0x0000 }, { 23486, 0x8010 },
- { 23488, 0x8383 }, { 23494, 0x0008 }, { 23495, 0x0010 }, { 23496, 0x0070 },
- /* 0x21100 */
- { 23499, 0x0000 }, { 23499, 0x0000 }, { 23499, 0x8000 }, { 23500, 0x2800 },
- { 23502, 0x8120 }, { 23505, 0x0000 }, { 23505, 0x0000 }, { 23505, 0x0000 },
- { 23505, 0x0081 }, { 23507, 0x0000 }, { 23507, 0x0000 }, { 23507, 0x0000 },
- { 23507, 0x0000 }, { 23507, 0x0200 }, { 23508, 0x0000 }, { 23508, 0x0000 },
- /* 0x21200 */
- { 23508, 0x0000 }, { 23508, 0x0000 }, { 23508, 0x0000 }, { 23508, 0x1000 },
- { 23509, 0x8000 }, { 23510, 0x0000 }, { 23510, 0x0000 }, { 23510, 0x1000 },
- { 23511, 0x0000 }, { 23511, 0x0000 }, { 23511, 0x0300 }, { 23513, 0x0001 },
- { 23514, 0x0000 }, { 23514, 0x0000 }, { 23514, 0x0008 }, { 23515, 0x4000 },
- /* 0x21300 */
- { 23516, 0x003C }, { 23520, 0x0000 }, { 23520, 0x0000 }, { 23520, 0x0440 },
- { 23522, 0x0000 }, { 23522, 0x0000 }, { 23522, 0x0000 }, { 23522, 0x0060 },
- { 23524, 0x4000 }, { 23525, 0x1100 }, { 23527, 0x0000 }, { 23527, 0x0000 },
- { 23527, 0x0060 }, { 23529, 0x0000 }, { 23529, 0x2000 }, { 23530, 0x4000 },
- /* 0x21400 */
- { 23531, 0x0000 }, { 23531, 0x0048 }, { 23533, 0x0010 }, { 23534, 0x8000 },
- { 23535, 0x0000 }, { 23535, 0x0034 }, { 23538, 0x0000 }, { 23538, 0x0000 },
- { 23538, 0x0400 }, { 23539, 0x0080 }, { 23540, 0x0000 }, { 23540, 0x0040 },
- { 23541, 0x0000 }, { 23541, 0x0000 }, { 23541, 0x0100 }, { 23542, 0x2000 },
- /* 0x21500 */
- { 23543, 0x0000 }, { 23543, 0x0000 }, { 23543, 0x0000 }, { 23543, 0x0000 },
- { 23543, 0x0000 }, { 23543, 0x0000 }, { 23543, 0x0000 }, { 23543, 0x0080 },
- { 23544, 0x0004 }, { 23545, 0x0040 }, { 23546, 0x0000 }, { 23546, 0x0000 },
- { 23546, 0x0000 }, { 23546, 0x0000 }, { 23546, 0x0000 }, { 23546, 0x0000 },
- /* 0x21600 */
- { 23546, 0x0400 }, { 23547, 0x0208 }, { 23549, 0x0000 }, { 23549, 0x4000 },
- { 23550, 0x0000 }, { 23550, 0x0000 }, { 23550, 0x0002 }, { 23551, 0x0000 },
- { 23551, 0x0000 }, { 23551, 0x0004 }, { 23552, 0x0000 }, { 23552, 0x0500 },
- { 23554, 0x0007 }, { 23557, 0x8028 }, { 23560, 0x01C0 }, { 23563, 0x5C00 },
- /* 0x21700 */
- { 23567, 0x2000 }, { 23568, 0x0001 }, { 23569, 0x0040 }, { 23570, 0x1C00 },
- { 23573, 0x0000 }, { 23573, 0x0080 }, { 23574, 0xF000 }, { 23578, 0x001B },
- { 23582, 0x0000 }, { 23582, 0x0000 }, { 23582, 0x0800 }, { 23583, 0x003F },
- { 23589, 0x0088 }, { 23591, 0x9E00 }, { 23596, 0x8000 }, { 23597, 0x1F60 },
- /* 0x21800 */
- { 23604, 0x0000 }, { 23604, 0x0000 }, { 23604, 0x2701 }, { 23609, 0x0E00 },
- { 23612, 0x0021 }, { 23614, 0x4004 }, { 23616, 0x001E }, { 23620, 0x0880 },
- { 23622, 0x0038 }, { 23625, 0xC000 }, { 23627, 0x0007 }, { 23630, 0xC000 },
- { 23632, 0x0000 }, { 23632, 0x03C2 }, { 23637, 0x0000 }, { 23637, 0x0400 },
- /* 0x21900 */
- { 23638, 0x0038 }, { 23641, 0x1027 }, { 23646, 0x0084 }, { 23648, 0x0800 },
- { 23649, 0x0010 }, { 23650, 0x0100 }, { 23651, 0x0400 }, { 23652, 0x1000 },
- { 23653, 0x0109 }, { 23656, 0x0040 }, { 23657, 0x0000 }, { 23657, 0x0000 },
- { 23657, 0x0000 }, { 23657, 0x0800 }, { 23658, 0x0000 }, { 23658, 0x0008 },
- /* 0x21A00 */
- { 23659, 0x0000 }, { 23659, 0x0000 }, { 23659, 0x2000 }, { 23660, 0x0010 },
- { 23661, 0x0820 }, { 23663, 0x0000 }, { 23663, 0x0000 }, { 23663, 0x0000 },
- { 23663, 0x0000 }, { 23663, 0x0000 }, { 23663, 0x0000 }, { 23663, 0x0000 },
- { 23663, 0x0000 }, { 23663, 0x0000 }, { 23663, 0x0000 }, { 23663, 0x0000 },
- /* 0x21B00 */
- { 23663, 0x0000 }, { 23663, 0x0000 }, { 23663, 0x0000 }, { 23663, 0x0000 },
- { 23663, 0x0010 }, { 23664, 0x0000 }, { 23664, 0x0000 }, { 23664, 0x0000 },
- { 23664, 0x0000 }, { 23664, 0x0000 }, { 23664, 0x0000 }, { 23664, 0x0000 },
- { 23664, 0x0006 }, { 23666, 0x0000 }, { 23666, 0x0000 }, { 23666, 0x0000 },
- /* 0x21C00 */
- { 23666, 0x0000 }, { 23666, 0x0000 }, { 23666, 0x0400 }, { 23667, 0x0000 },
- { 23667, 0x0000 }, { 23667, 0x0000 }, { 23667, 0x0000 }, { 23667, 0x0001 },
- { 23668, 0x0000 }, { 23668, 0x0000 }, { 23668, 0x1024 }, { 23671, 0x0000 },
- { 23671, 0x0000 }, { 23671, 0x0000 }, { 23671, 0x0000 }, { 23671, 0x0000 },
- /* 0x21D00 */
- { 23671, 0x0000 }, { 23671, 0x0000 }, { 23671, 0x0000 }, { 23671, 0x0000 },
- { 23671, 0x0040 }, { 23672, 0x0000 }, { 23672, 0x0000 }, { 23672, 0x0000 },
- { 23672, 0x0000 }, { 23672, 0x0001 }, { 23673, 0x0000 }, { 23673, 0x0440 },
- { 23675, 0x0400 }, { 23676, 0x0002 }, { 23677, 0x0800 }, { 23678, 0x0200 },
- /* 0x21E00 */
- { 23679, 0x0000 }, { 23679, 0x1000 }, { 23680, 0x0000 }, { 23680, 0x2080 },
- { 23682, 0x0000 }, { 23682, 0x0000 }, { 23682, 0x0000 }, { 23682, 0x0000 },
- { 23682, 0x0200 }, { 23683, 0x0000 }, { 23683, 0x0110 }, { 23685, 0x0000 },
- { 23685, 0x0100 }, { 23686, 0x0020 }, { 23687, 0x0000 }, { 23687, 0x0000 },
- /* 0x21F00 */
- { 23687, 0x8000 }, { 23688, 0x0020 }, { 23689, 0x0000 }, { 23689, 0x0000 },
- { 23689, 0x0000 }, { 23689, 0x0000 }, { 23689, 0x0400 }, { 23690, 0x0000 },
- { 23690, 0x0000 }, { 23690, 0x4000 }, { 23691, 0x0002 }, { 23692, 0x0000 },
- { 23692, 0x0000 }, { 23692, 0x0000 }, { 23692, 0x0100 }, { 23693, 0x0000 },
- /* 0x22000 */
- { 23693, 0x0000 }, { 23693, 0x0000 }, { 23693, 0x0000 }, { 23693, 0x0000 },
- { 23693, 0x0220 }, { 23695, 0x0000 }, { 23695, 0x0000 }, { 23695, 0x4000 },
- { 23696, 0x0000 }, { 23696, 0x0400 }, { 23697, 0x0000 }, { 23697, 0x0000 },
- { 23697, 0x0080 }, { 23698, 0x0000 }, { 23698, 0x0000 }, { 23698, 0x1000 },
- /* 0x22100 */
- { 23699, 0x0000 }, { 23699, 0x0000 }, { 23699, 0x0400 }, { 23700, 0x0000 },
- { 23700, 0x0000 }, { 23700, 0x0800 }, { 23701, 0x0000 }, { 23701, 0x0408 },
- { 23703, 0x0000 }, { 23703, 0x0000 }, { 23703, 0x0002 }, { 23704, 0x0000 },
- { 23704, 0x0008 }, { 23705, 0x0000 }, { 23705, 0x0000 }, { 23705, 0x0000 },
- /* 0x22200 */
- { 23705, 0x0100 }, { 23706, 0x0000 }, { 23706, 0x0000 }, { 23706, 0x0000 },
- { 23706, 0x0000 }, { 23706, 0x0000 }, { 23706, 0x0000 }, { 23706, 0x1000 },
- { 23707, 0x0000 }, { 23707, 0x0000 }, { 23707, 0x0000 }, { 23707, 0x0000 },
- { 23707, 0x0000 }, { 23707, 0x0000 }, { 23707, 0x0000 }, { 23707, 0x0000 },
- /* 0x22300 */
- { 23707, 0x0000 }, { 23707, 0x0000 }, { 23707, 0x0022 }, { 23709, 0x0000 },
- { 23709, 0x0000 }, { 23709, 0x0000 }, { 23709, 0x0000 }, { 23709, 0x0000 },
- { 23709, 0x0000 }, { 23709, 0x0000 }, { 23709, 0x0000 }, { 23709, 0x2000 },
- { 23710, 0x0000 }, { 23710, 0x0081 }, { 23712, 0x0000 }, { 23712, 0x0400 },
- /* 0x22400 */
- { 23713, 0x0000 }, { 23713, 0x0000 }, { 23713, 0x0000 }, { 23713, 0x0000 },
- { 23713, 0x0000 }, { 23713, 0x0000 }, { 23713, 0x0020 }, { 23714, 0x0002 },
- { 23715, 0x0800 }, { 23716, 0x0002 }, { 23717, 0x0000 }, { 23717, 0x0001 },
- { 23718, 0x0000 }, { 23718, 0x0000 }, { 23718, 0x2000 }, { 23719, 0x0000 },
- /* 0x22500 */
- { 23719, 0x0000 }, { 23719, 0x0808 }, { 23721, 0x0000 }, { 23721, 0x0001 },
- { 23722, 0x0000 }, { 23722, 0x0010 }, { 23723, 0x0000 }, { 23723, 0x0000 },
- { 23723, 0x2000 }, { 23724, 0x0000 }, { 23724, 0x8000 }, { 23725, 0x4000 },
- { 23726, 0x0000 }, { 23726, 0x0000 }, { 23726, 0x0000 }, { 23726, 0x0000 },
- /* 0x22600 */
- { 23726, 0x0000 }, { 23726, 0x1800 }, { 23728, 0x0800 }, { 23729, 0x0000 },
- { 23729, 0x0000 }, { 23729, 0x0000 }, { 23729, 0x0100 }, { 23730, 0x0400 },
- { 23731, 0x0000 }, { 23731, 0x0140 }, { 23733, 0x0000 }, { 23733, 0x0000 },
- { 23733, 0x0000 }, { 23733, 0x0000 }, { 23733, 0x0000 }, { 23733, 0x0070 },
- /* 0x22700 */
- { 23736, 0x0000 }, { 23736, 0x8814 }, { 23740, 0x0400 }, { 23741, 0x0000 },
- { 23741, 0x0000 }, { 23741, 0x0000 }, { 23741, 0x0000 }, { 23741, 0x0020 },
- { 23742, 0x0002 }, { 23743, 0x0000 }, { 23743, 0x0000 }, { 23743, 0x0030 },
- { 23745, 0x2000 }, { 23746, 0x0000 }, { 23746, 0x0000 }, { 23746, 0x0000 },
- /* 0x22800 */
- { 23746, 0x0008 }, { 23747, 0x0000 }, { 23747, 0x0000 }, { 23747, 0x0000 },
- { 23747, 0x0000 }, { 23747, 0x8000 }, { 23748, 0x0001 }, { 23749, 0x0002 },
- { 23750, 0x0000 }, { 23750, 0x0000 }, { 23750, 0x2000 }, { 23751, 0x0000 },
- { 23751, 0x0002 }, { 23752, 0x0000 }, { 23752, 0x0000 }, { 23752, 0x0080 },
- /* 0x22900 */
- { 23753, 0x0000 }, { 23753, 0x0000 }, { 23753, 0x0040 }, { 23754, 0x0200 },
- { 23755, 0x8000 }, { 23756, 0x0000 }, { 23756, 0x0880 }, { 23758, 0x0000 },
- { 23758, 0x0001 }, { 23759, 0x0008 }, { 23760, 0x0000 }, { 23760, 0x0000 },
- { 23760, 0x0000 }, { 23760, 0x0000 }, { 23760, 0x0000 }, { 23760, 0x0000 },
- /* 0x22A00 */
- { 23760, 0x0000 }, { 23760, 0x0000 }, { 23760, 0x0000 }, { 23760, 0x0000 },
- { 23760, 0x0000 }, { 23760, 0x0000 }, { 23760, 0x0040 }, { 23761, 0x0000 },
- { 23761, 0x0000 }, { 23761, 0x0000 }, { 23761, 0x0000 }, { 23761, 0x0000 },
- { 23761, 0x8000 }, { 23762, 0x0020 }, { 23763, 0x0140 }, { 23765, 0x0000 },
- /* 0x22B00 */
- { 23765, 0x4000 }, { 23766, 0x0000 }, { 23766, 0x0004 }, { 23767, 0x8000 },
- { 23768, 0x0008 }, { 23769, 0x0000 }, { 23769, 0x0400 }, { 23770, 0x0000 },
- { 23770, 0x0000 }, { 23770, 0x0000 }, { 23770, 0x0000 }, { 23770, 0x0000 },
- { 23770, 0x4400 }, { 23772, 0x0000 }, { 23772, 0x0000 }, { 23772, 0x0000 },
- /* 0x22C00 */
- { 23772, 0x0000 }, { 23772, 0x0000 }, { 23772, 0x00C0 }, { 23774, 0x0100 },
- { 23775, 0x1000 }, { 23776, 0x0022 }, { 23778, 0x0004 }, { 23779, 0x0000 },
- { 23779, 0x0100 }, { 23780, 0x0800 }, { 23781, 0x0202 }, { 23783, 0x0084 },
- { 23785, 0x0244 }, { 23788, 0x0000 }, { 23788, 0x0000 }, { 23788, 0x0000 },
- /* 0x22D00 */
- { 23788, 0x0180 }, { 23790, 0x0004 }, { 23791, 0x0000 }, { 23791, 0x0000 },
- { 23791, 0x1010 }, { 23793, 0x0000 }, { 23793, 0x0080 }, { 23794, 0x0000 },
- { 23794, 0x2000 }, { 23795, 0x0020 }, { 23796, 0x0019 }, { 23799, 0x0080 },
- { 23800, 0x0000 }, { 23800, 0x0000 }, { 23800, 0x4000 }, { 23801, 0x0000 },
- /* 0x22E00 */
- { 23801, 0x2000 }, { 23802, 0x0000 }, { 23802, 0x0000 }, { 23802, 0x0040 },
- { 23803, 0x0004 }, { 23804, 0x0000 }, { 23804, 0x0000 }, { 23804, 0x0100 },
- { 23805, 0x0800 }, { 23806, 0x0000 }, { 23806, 0x0000 }, { 23806, 0x0008 },
- { 23807, 0x0000 }, { 23807, 0x0000 }, { 23807, 0x8000 }, { 23808, 0x0000 },
- /* 0x22F00 */
- { 23808, 0x0000 }, { 23808, 0x0000 }, { 23808, 0x0000 }, { 23808, 0x0000 },
- { 23808, 0x0000 }, { 23808, 0x0000 }, { 23808, 0x0000 }, { 23808, 0x0010 },
- { 23809, 0x0000 }, { 23809, 0x0000 }, { 23809, 0x0000 }, { 23809, 0x0000 },
- { 23809, 0x1000 }, { 23810, 0x0000 }, { 23810, 0x0008 }, { 23811, 0x0000 },
- /* 0x23000 */
- { 23811, 0x0000 }, { 23811, 0x0000 }, { 23811, 0x0000 }, { 23811, 0x0008 },
- { 23812, 0x0810 }, { 23814, 0x0000 }, { 23814, 0x0040 }, { 23815, 0x6000 },
- { 23817, 0x4000 }, { 23818, 0x0000 }, { 23818, 0x0000 }, { 23818, 0x1080 },
- { 23820, 0x0000 }, { 23820, 0x0400 }, { 23821, 0x0000 }, { 23821, 0x0000 },
- /* 0x23100 */
- { 23821, 0x0008 }, { 23822, 0x0000 }, { 23822, 0x0000 }, { 23822, 0x2000 },
- { 23823, 0x0000 }, { 23823, 0x0000 }, { 23823, 0x0000 }, { 23823, 0x2000 },
- { 23824, 0x0004 }, { 23825, 0x0000 }, { 23825, 0x0030 }, { 23827, 0x0008 },
- { 23828, 0x0300 }, { 23830, 0x0000 }, { 23830, 0x0000 }, { 23830, 0x0380 },
- /* 0x23200 */
- { 23833, 0x8000 }, { 23834, 0x0000 }, { 23834, 0x8020 }, { 23836, 0x001E },
- { 23840, 0x0000 }, { 23840, 0x0000 }, { 23840, 0x0004 }, { 23841, 0x0000 },
- { 23841, 0x0602 }, { 23844, 0x0000 }, { 23844, 0x3800 }, { 23847, 0x0000 },
- { 23847, 0x0000 }, { 23847, 0x0004 }, { 23848, 0x0003 }, { 23850, 0x0000 },
- /* 0x23300 */
- { 23850, 0x0401 }, { 23852, 0x8000 }, { 23853, 0x0000 }, { 23853, 0x0000 },
- { 23853, 0x0000 }, { 23853, 0x0000 }, { 23853, 0x0000 }, { 23853, 0x0000 },
- { 23853, 0x0000 }, { 23853, 0x0000 }, { 23853, 0x0000 }, { 23853, 0x0010 },
- { 23854, 0x1000 }, { 23855, 0x4000 }, { 23856, 0x0040 }, { 23857, 0x4630 },
- /* 0x23400 */
- { 23862, 0x0001 }, { 23863, 0x0000 }, { 23863, 0x0000 }, { 23863, 0x8000 },
- { 23864, 0x0000 }, { 23864, 0x0001 }, { 23865, 0x8000 }, { 23866, 0x0004 },
- { 23867, 0x0000 }, { 23867, 0x0000 }, { 23867, 0x0000 }, { 23867, 0x0000 },
- { 23867, 0x0000 }, { 23867, 0x0000 }, { 23867, 0x0020 }, { 23868, 0x0000 },
- /* 0x23500 */
- { 23868, 0x0000 }, { 23868, 0x0200 }, { 23869, 0x0000 }, { 23869, 0x0001 },
- { 23870, 0x0000 }, { 23870, 0x0400 }, { 23871, 0x0080 }, { 23872, 0x0000 },
- { 23872, 0x0000 }, { 23872, 0x1220 }, { 23875, 0x0000 }, { 23875, 0x0000 },
- { 23875, 0xE000 }, { 23878, 0x0000 }, { 23878, 0x0000 }, { 23878, 0x0008 },
- /* 0x23600 */
- { 23879, 0x0001 }, { 23880, 0x0400 }, { 23881, 0x0000 }, { 23881, 0x1000 },
- { 23882, 0x0001 }, { 23883, 0x8200 }, { 23885, 0x0000 }, { 23885, 0x0080 },
- { 23886, 0x0000 }, { 23886, 0x0000 }, { 23886, 0x2040 }, { 23888, 0x0400 },
- { 23889, 0x0000 }, { 23889, 0x8000 }, { 23890, 0x4000 }, { 23891, 0x0000 },
- /* 0x23700 */
- { 23891, 0x0008 }, { 23892, 0x0040 }, { 23893, 0xA001 }, { 23896, 0x8000 },
- { 23897, 0x0000 }, { 23897, 0x0000 }, { 23897, 0x0040 }, { 23898, 0x0000 },
- { 23898, 0x0002 }, { 23899, 0x0000 }, { 23899, 0x0004 }, { 23900, 0x1000 },
- { 23901, 0x0004 }, { 23902, 0x00E0 }, { 23905, 0x0000 }, { 23905, 0x0000 },
- /* 0x23800 */
- { 23905, 0x0000 }, { 23905, 0x0000 }, { 23905, 0x0000 }, { 23905, 0x0400 },
- { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 },
- { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 },
- { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 },
- /* 0x23900 */
- { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 },
- { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 },
- { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 }, { 23906, 0x0000 },
- { 23906, 0x0004 }, { 23907, 0x0000 }, { 23907, 0x0000 }, { 23907, 0x0000 },
- /* 0x23A00 */
- { 23907, 0x0000 }, { 23907, 0x0000 }, { 23907, 0x0000 }, { 23907, 0x0000 },
- { 23907, 0x0000 }, { 23907, 0x0000 }, { 23907, 0x0000 }, { 23907, 0x0000 },
- { 23907, 0x0000 }, { 23907, 0x0000 }, { 23907, 0x0080 }, { 23908, 0x0000 },
- { 23908, 0x0000 }, { 23908, 0x0800 }, { 23909, 0x4000 }, { 23910, 0x0400 },
- /* 0x23B00 */
- { 23911, 0x0000 }, { 23911, 0x0000 }, { 23911, 0x0000 }, { 23911, 0x0000 },
- { 23911, 0x0000 }, { 23911, 0x0400 }, { 23912, 0x0000 }, { 23912, 0x0000 },
- { 23912, 0x0000 }, { 23912, 0x0000 }, { 23912, 0x0000 }, { 23912, 0x0000 },
- { 23912, 0x0000 }, { 23912, 0x0000 }, { 23912, 0x0000 }, { 23912, 0x0000 },
- /* 0x23C00 */
- { 23912, 0x0000 }, { 23912, 0x0000 }, { 23912, 0x0000 }, { 23912, 0x0000 },
- { 23912, 0x0000 }, { 23912, 0x0000 }, { 23912, 0x0008 }, { 23913, 0x0000 },
- { 23913, 0x0000 }, { 23913, 0x0E00 }, { 23916, 0x0000 }, { 23916, 0x00A0 },
- { 23918, 0x0380 }, { 23921, 0x0000 }, { 23921, 0x0000 }, { 23921, 0xF000 },
- /* 0x23D00 */
- { 23925, 0x0000 }, { 23925, 0x0000 }, { 23925, 0x0000 }, { 23925, 0x0000 },
- { 23925, 0x0001 }, { 23926, 0x0800 }, { 23927, 0x0000 }, { 23927, 0x4000 },
- { 23928, 0x8000 }, { 23929, 0x0000 }, { 23929, 0x0000 }, { 23929, 0x3FC0 },
- { 23937, 0x0000 }, { 23937, 0x0000 }, { 23937, 0x0008 }, { 23938, 0x0100 },
- /* 0x23E00 */
- { 23939, 0x0000 }, { 23939, 0x0002 }, { 23940, 0xF000 }, { 23944, 0x0203 },
- { 23947, 0x0000 }, { 23947, 0x0000 }, { 23947, 0x0000 }, { 23947, 0x0000 },
- { 23947, 0x0F00 }, { 23951, 0x0000 }, { 23951, 0x0000 }, { 23951, 0x8200 },
- { 23953, 0x0000 }, { 23953, 0x0080 }, { 23954, 0x0000 }, { 23954, 0x1F80 },
- /* 0x23F00 */
- { 23960, 0x0000 }, { 23960, 0x0000 }, { 23960, 0x0000 }, { 23960, 0x0020 },
- { 23961, 0x0402 }, { 23963, 0x0000 }, { 23963, 0x0000 }, { 23963, 0x8000 },
- { 23964, 0x8007 }, { 23968, 0x0000 }, { 23968, 0x0000 }, { 23968, 0x0090 },
- { 23970, 0x0021 }, { 23972, 0x0000 }, { 23972, 0xF800 }, { 23977, 0x0001 },
- /* 0x24000 */
- { 23978, 0x0000 }, { 23978, 0x0002 }, { 23979, 0x0000 }, { 23979, 0x3E00 },
- { 23984, 0x0000 }, { 23984, 0x0080 }, { 23985, 0x0000 }, { 23985, 0x0000 },
- { 23985, 0x3820 }, { 23989, 0x0002 }, { 23990, 0x0000 }, { 23990, 0x0000 },
- { 23990, 0x0200 }, { 23991, 0x0000 }, { 23991, 0x0002 }, { 23992, 0x0000 },
- /* 0x24100 */
- { 23992, 0x8010 }, { 23994, 0x0200 }, { 23995, 0x0000 }, { 23995, 0x8000 },
- { 23996, 0x4011 }, { 23999, 0x90E0 }, { 24004, 0x0000 }, { 24004, 0x0480 },
- { 24006, 0x0000 }, { 24006, 0x0000 }, { 24006, 0x1038 }, { 24010, 0x0020 },
- { 24011, 0x2000 }, { 24012, 0x0000 }, { 24012, 0x0004 }, { 24013, 0x1000 },
- /* 0x24200 */
- { 24014, 0x0000 }, { 24014, 0x0800 }, { 24015, 0x0000 }, { 24015, 0x0000 },
- { 24015, 0x0800 }, { 24016, 0x0240 }, { 24018, 0x0000 }, { 24018, 0x01C0 },
- { 24021, 0x0010 }, { 24022, 0x0028 }, { 24024, 0x0020 }, { 24025, 0x0000 },
- { 24025, 0x0602 }, { 24028, 0x0000 }, { 24028, 0x4000 }, { 24029, 0x0400 },
- /* 0x24300 */
- { 24030, 0x2000 }, { 24031, 0x0400 }, { 24032, 0x0000 }, { 24032, 0x0010 },
- { 24033, 0x0100 }, { 24034, 0x0000 }, { 24034, 0x003C }, { 24038, 0x0000 },
- { 24038, 0x1000 }, { 24039, 0x1040 }, { 24041, 0x0000 }, { 24041, 0x2000 },
- { 24042, 0x0002 }, { 24043, 0x0000 }, { 24043, 0x0600 }, { 24045, 0x0104 },
- /* 0x24400 */
- { 24047, 0x0010 }, { 24048, 0x0000 }, { 24048, 0x0000 }, { 24048, 0x0060 },
- { 24050, 0x0000 }, { 24050, 0x0C00 }, { 24052, 0x0000 }, { 24052, 0x0008 },
- { 24053, 0x0180 }, { 24055, 0x0000 }, { 24055, 0x0000 }, { 24055, 0x1200 },
- { 24057, 0x4000 }, { 24058, 0x0048 }, { 24060, 0x0000 }, { 24060, 0x0000 },
- /* 0x24500 */
- { 24060, 0x0020 }, { 24061, 0x0000 }, { 24061, 0x0002 }, { 24062, 0x0000 },
- { 24062, 0x0000 }, { 24062, 0x0000 }, { 24062, 0x0000 }, { 24062, 0x0100 },
- { 24063, 0x0000 }, { 24063, 0x0000 }, { 24063, 0x0000 }, { 24063, 0x0000 },
- { 24063, 0x0100 }, { 24064, 0x0000 }, { 24064, 0x0000 }, { 24064, 0x0000 },
- /* 0x24600 */
- { 24064, 0x0000 }, { 24064, 0x0100 }, { 24065, 0x0400 }, { 24066, 0x0000 },
- { 24066, 0x0000 }, { 24066, 0x0000 }, { 24066, 0x0020 }, { 24067, 0x0010 },
- { 24068, 0x0000 }, { 24068, 0x0080 }, { 24069, 0x0000 }, { 24069, 0x0000 },
- { 24069, 0x0000 }, { 24069, 0x0010 }, { 24070, 0x0000 }, { 24070, 0x0000 },
- /* 0x24700 */
- { 24070, 0x0040 }, { 24071, 0x0000 }, { 24071, 0x8020 }, { 24073, 0x0000 },
- { 24073, 0x0000 }, { 24073, 0x0000 }, { 24073, 0x0000 }, { 24073, 0x0000 },
- { 24073, 0x8000 }, { 24074, 0x0000 }, { 24074, 0x0000 }, { 24074, 0x0000 },
- { 24074, 0x0000 }, { 24074, 0x0000 }, { 24074, 0x0001 }, { 24075, 0x0000 },
- /* 0x24800 */
- { 24075, 0x0000 }, { 24075, 0x0004 }, { 24076, 0x0008 }, { 24077, 0x0000 },
- { 24077, 0x0000 }, { 24077, 0x0000 }, { 24077, 0x0000 }, { 24077, 0x0000 },
- { 24077, 0x0004 }, { 24078, 0x0000 }, { 24078, 0x0000 }, { 24078, 0x0000 },
- { 24078, 0x0000 }, { 24078, 0x0000 }, { 24078, 0x0200 }, { 24079, 0x880F },
- /* 0x24900 */
- { 24085, 0x1003 }, { 24088, 0x02C0 }, { 24091, 0x8000 }, { 24092, 0xC018 },
- { 24096, 0x000F }, { 24100, 0x0000 }, { 24100, 0x000C }, { 24102, 0x8870 },
- { 24107, 0xFF04 }, { 24116, 0x0010 }, { 24117, 0x3A90 }, { 24123, 0x0F80 },
- { 24128, 0x0020 }, { 24129, 0xC401 }, { 24133, 0x3028 }, { 24137, 0x0BC0 },
- /* 0x24A00 */
- { 24142, 0x4000 }, { 24143, 0x002C }, { 24146, 0x07FE }, { 24156, 0x4000 },
- { 24157, 0xC424 }, { 24162, 0x2003 }, { 24165, 0x00E0 }, { 24168, 0x0782 },
- { 24173, 0x1000 }, { 24174, 0x0078 }, { 24178, 0x00F0 }, { 24182, 0x1C0E },
- { 24188, 0x0481 }, { 24191, 0x8002 }, { 24193, 0x0204 }, { 24195, 0x0000 },
- /* 0x24B00 */
- { 24195, 0x0000 }, { 24195, 0x0000 }, { 24195, 0x0000 }, { 24195, 0x0000 },
- { 24195, 0x0000 }, { 24195, 0x0000 }, { 24195, 0x4000 }, { 24196, 0x0000 },
- { 24196, 0x0000 }, { 24196, 0x0000 }, { 24196, 0x0000 }, { 24196, 0x0000 },
- { 24196, 0x0000 }, { 24196, 0x0000 }, { 24196, 0x0000 }, { 24196, 0x0020 },
- /* 0x24C00 */
- { 24197, 0x0200 }, { 24198, 0x0000 }, { 24198, 0x0000 }, { 24198, 0x0000 },
- { 24198, 0x0000 }, { 24198, 0x0000 }, { 24198, 0x0000 }, { 24198, 0x0000 },
- { 24198, 0x0000 }, { 24198, 0xC000 }, { 24200, 0x0000 }, { 24200, 0x0000 },
- { 24200, 0x0200 }, { 24201, 0x0200 }, { 24202, 0x0000 }, { 24202, 0x0000 },
- /* 0x24D00 */
- { 24202, 0x0040 }, { 24203, 0x0008 }, { 24204, 0x0000 }, { 24204, 0x0000 },
- { 24204, 0x0000 }, { 24204, 0x0000 }, { 24204, 0x0000 }, { 24204, 0x0000 },
- { 24204, 0x0000 }, { 24204, 0x0000 }, { 24204, 0x0000 }, { 24204, 0x0100 },
- { 24205, 0x0000 }, { 24205, 0x0000 }, { 24205, 0x0C00 }, { 24207, 0x0000 },
- /* 0x24E00 */
- { 24207, 0x0000 }, { 24207, 0x0000 }, { 24207, 0x0000 }, { 24207, 0x0800 },
- { 24208, 0x0000 }, { 24208, 0x0001 }, { 24209, 0x0000 }, { 24209, 0x0000 },
- { 24209, 0x0000 }, { 24209, 0x0000 }, { 24209, 0x00A0 }, { 24211, 0x0000 },
- { 24211, 0x0000 }, { 24211, 0x0000 }, { 24211, 0x0000 }, { 24211, 0x0000 },
- /* 0x24F00 */
- { 24211, 0x4000 }, { 24212, 0x0000 }, { 24212, 0x0000 }, { 24212, 0x0000 },
- { 24212, 0x0000 }, { 24212, 0x1000 }, { 24213, 0x0000 }, { 24213, 0x0000 },
- { 24213, 0x0044 }, { 24215, 0x0480 }, { 24217, 0x0200 }, { 24218, 0x0100 },
- { 24219, 0x0004 }, { 24220, 0x0000 }, { 24220, 0x0000 }, { 24220, 0x0000 },
- /* 0x25000 */
- { 24220, 0x0000 }, { 24220, 0x0000 }, { 24220, 0x1000 }, { 24221, 0x0000 },
- { 24221, 0x0000 }, { 24221, 0x0004 }, { 24222, 0x0000 }, { 24222, 0x0000 },
- { 24222, 0x0000 }, { 24222, 0x2000 }, { 24223, 0x0000 }, { 24223, 0x0000 },
- { 24223, 0x0000 }, { 24223, 0x0000 }, { 24223, 0x0000 }, { 24223, 0x0000 },
- /* 0x25100 */
- { 24223, 0x0000 }, { 24223, 0x0000 }, { 24223, 0x0800 }, { 24224, 0x0000 },
- { 24224, 0x0100 }, { 24225, 0x0000 }, { 24225, 0x0000 }, { 24225, 0x6000 },
- { 24227, 0x0000 }, { 24227, 0x0000 }, { 24227, 0x0000 }, { 24227, 0x0000 },
- { 24227, 0x2000 }, { 24228, 0x0000 }, { 24228, 0x00C8 }, { 24231, 0x0000 },
- /* 0x25200 */
- { 24231, 0x0000 }, { 24231, 0x0000 }, { 24231, 0x0003 }, { 24233, 0x0000 },
- { 24233, 0x0000 }, { 24233, 0x0001 }, { 24234, 0x0000 }, { 24234, 0x0000 },
- { 24234, 0x0000 }, { 24234, 0x0200 }, { 24235, 0x0000 }, { 24235, 0x0000 },
- { 24235, 0x0080 }, { 24236, 0x0100 }, { 24237, 0x0000 }, { 24237, 0x0000 },
- /* 0x25300 */
- { 24237, 0x4000 }, { 24238, 0x000A }, { 24240, 0x0000 }, { 24240, 0x0000 },
- { 24240, 0x0000 }, { 24240, 0x0000 }, { 24240, 0x0000 }, { 24240, 0x0000 },
- { 24240, 0x0000 }, { 24240, 0x0000 }, { 24240, 0x0000 }, { 24240, 0x0000 },
- { 24240, 0x0000 }, { 24240, 0x0000 }, { 24240, 0x0000 }, { 24240, 0x0000 },
- /* 0x25400 */
- { 24240, 0x0000 }, { 24240, 0x0200 }, { 24241, 0x8020 }, { 24243, 0x0001 },
- { 24244, 0x0040 }, { 24245, 0x0000 }, { 24245, 0x5000 }, { 24247, 0x0000 },
- { 24247, 0x0000 }, { 24247, 0x0000 }, { 24247, 0x0000 }, { 24247, 0x0000 },
- { 24247, 0x0000 }, { 24247, 0x0000 }, { 24247, 0x0000 }, { 24247, 0x0000 },
- /* 0x25500 */
- { 24247, 0x0000 }, { 24247, 0x0000 }, { 24247, 0x0000 }, { 24247, 0x8022 },
- { 24250, 0x0000 }, { 24250, 0x7800 }, { 24254, 0x0064 }, { 24257, 0x0000 },
- { 24257, 0x8012 }, { 24260, 0x0000 }, { 24260, 0x0000 }, { 24260, 0x0200 },
- { 24261, 0x0000 }, { 24261, 0x0820 }, { 24263, 0x0001 }, { 24264, 0x0000 },
- /* 0x25600 */
- { 24264, 0x0020 }, { 24265, 0x0000 }, { 24265, 0x0000 }, { 24265, 0x0020 },
- { 24266, 0x0000 }, { 24266, 0x0002 }, { 24267, 0x0000 }, { 24267, 0x0000 },
- { 24267, 0x0008 }, { 24268, 0x0020 }, { 24269, 0x0000 }, { 24269, 0x0000 },
- { 24269, 0x0000 }, { 24269, 0x0000 }, { 24269, 0x0008 }, { 24270, 0x0040 },
- /* 0x25700 */
- { 24271, 0x0040 }, { 24272, 0x2000 }, { 24273, 0x0020 }, { 24274, 0x2000 },
- { 24275, 0x0000 }, { 24275, 0x0000 }, { 24275, 0x0000 }, { 24275, 0x0004 },
- { 24276, 0x0000 }, { 24276, 0x0000 }, { 24276, 0x0000 }, { 24276, 0x0000 },
- { 24276, 0x0080 }, { 24277, 0x8000 }, { 24278, 0x0003 }, { 24280, 0x0000 },
- /* 0x25800 */
- { 24280, 0x0000 }, { 24280, 0x0000 }, { 24280, 0x0000 }, { 24280, 0x0000 },
- { 24280, 0x0000 }, { 24280, 0x2080 }, { 24282, 0x0000 }, { 24282, 0x0004 },
- { 24283, 0x0000 }, { 24283, 0x0000 }, { 24283, 0x0000 }, { 24283, 0x0000 },
- { 24283, 0x0100 }, { 24284, 0x0000 }, { 24284, 0x0002 }, { 24285, 0x0000 },
- /* 0x25900 */
- { 24285, 0x0008 }, { 24286, 0x0000 }, { 24286, 0x0000 }, { 24286, 0x0000 },
- { 24286, 0x0040 }, { 24287, 0x0040 }, { 24288, 0x0000 }, { 24288, 0x0000 },
- { 24288, 0x0000 }, { 24288, 0x0000 }, { 24288, 0x1000 }, { 24289, 0x0000 },
- { 24289, 0x1000 }, { 24290, 0x0000 }, { 24290, 0x0000 }, { 24290, 0x0000 },
- /* 0x25A00 */
- { 24290, 0x0000 }, { 24290, 0x0000 }, { 24290, 0x0000 }, { 24290, 0x0000 },
- { 24290, 0x0000 }, { 24290, 0x0000 }, { 24290, 0x0000 }, { 24290, 0x0000 },
- { 24290, 0x0000 }, { 24290, 0x1020 }, { 24292, 0xC000 }, { 24294, 0x0000 },
- { 24294, 0x0000 }, { 24294, 0x0000 }, { 24294, 0x0200 }, { 24295, 0x0000 },
- /* 0x25B00 */
- { 24295, 0x0000 }, { 24295, 0x0000 }, { 24295, 0x0000 }, { 24295, 0x0000 },
- { 24295, 0x0000 }, { 24295, 0x0000 }, { 24295, 0x0000 }, { 24295, 0x0010 },
- { 24296, 0x0200 }, { 24297, 0x0000 }, { 24297, 0x0000 }, { 24297, 0x0018 },
- { 24299, 0x0040 }, { 24300, 0x0000 }, { 24300, 0x0110 }, { 24302, 0x0000 },
- /* 0x25C00 */
- { 24302, 0x0042 }, { 24304, 0x0000 }, { 24304, 0x0002 }, { 24305, 0x0000 },
- { 24305, 0x0400 }, { 24306, 0x0000 }, { 24306, 0x0020 }, { 24307, 0x0000 },
- { 24307, 0x0000 }, { 24307, 0x0002 }, { 24308, 0x0010 }, { 24309, 0x0000 },
- { 24309, 0x0003 }, { 24311, 0x0000 }, { 24311, 0x0000 }, { 24311, 0x4000 },
- /* 0x25D00 */
- { 24312, 0x0000 }, { 24312, 0x0000 }, { 24312, 0x0001 }, { 24313, 0x0001 },
- { 24314, 0x0008 }, { 24315, 0x0000 }, { 24315, 0x0000 }, { 24315, 0x0000 },
- { 24315, 0x0000 }, { 24315, 0x0000 }, { 24315, 0x0000 }, { 24315, 0x0000 },
- { 24315, 0x0000 }, { 24315, 0x0000 }, { 24315, 0x0000 }, { 24315, 0x0000 },
- /* 0x25E00 */
- { 24315, 0x4000 }, { 24316, 0x0000 }, { 24316, 0x0000 }, { 24316, 0x0000 },
- { 24316, 0x0200 }, { 24317, 0x0000 }, { 24317, 0x0000 }, { 24317, 0x0000 },
- { 24317, 0x000E }, { 24320, 0x0000 }, { 24320, 0x0040 }, { 24321, 0x1000 },
- { 24322, 0x0000 }, { 24322, 0x0180 }, { 24324, 0x0000 }, { 24324, 0x0000 },
- /* 0x25F00 */
- { 24324, 0x0000 }, { 24324, 0x0400 }, { 24325, 0x0000 }, { 24325, 0x0000 },
- { 24325, 0x0800 }, { 24326, 0x0000 }, { 24326, 0x0000 }, { 24326, 0x0000 },
- { 24326, 0x0000 }, { 24326, 0x0000 }, { 24326, 0x0000 }, { 24326, 0x0000 },
- { 24326, 0x0000 }, { 24326, 0x0000 }, { 24326, 0x0006 }, { 24328, 0x0000 },
- /* 0x26000 */
- { 24328, 0x0000 }, { 24328, 0x0000 }, { 24328, 0x0200 }, { 24329, 0x0000 },
- { 24329, 0x0100 }, { 24330, 0x0000 }, { 24330, 0x0010 }, { 24331, 0x0000 },
- { 24331, 0x0008 }, { 24332, 0x0080 }, { 24333, 0x0030 }, { 24335, 0x0000 },
- { 24335, 0x0000 }, { 24335, 0x0000 }, { 24335, 0x0000 }, { 24335, 0x0000 },
- /* 0x26100 */
- { 24335, 0x0004 }, { 24336, 0x0000 }, { 24336, 0x0002 }, { 24337, 0x0000 },
- { 24337, 0x0000 }, { 24337, 0x1E00 }, { 24341, 0x0000 }, { 24341, 0x0000 },
- { 24341, 0x0000 }, { 24341, 0x0000 }, { 24341, 0x6000 }, { 24343, 0x0004 },
- { 24344, 0x0000 }, { 24344, 0x2000 }, { 24345, 0x0000 }, { 24345, 0x0000 },
- /* 0x26200 */
- { 24345, 0x0000 }, { 24345, 0x0000 }, { 24345, 0x0000 }, { 24345, 0x0000 },
- { 24345, 0x0000 }, { 24345, 0x0100 }, { 24346, 0x0C02 }, { 24349, 0x0000 },
- { 24349, 0x0000 }, { 24349, 0x0000 }, { 24349, 0x0000 }, { 24349, 0x0000 },
- { 24349, 0x0000 }, { 24349, 0x0001 }, { 24350, 0x0000 }, { 24350, 0x0000 },
- /* 0x26300 */
- { 24350, 0x0000 }, { 24350, 0x0000 }, { 24350, 0x0000 }, { 24350, 0x0020 },
- { 24351, 0x1800 }, { 24353, 0x0002 }, { 24354, 0x0000 }, { 24354, 0x0000 },
- { 24354, 0x0000 }, { 24354, 0x0000 }, { 24354, 0x0000 }, { 24354, 0x4000 },
- { 24355, 0x0000 }, { 24355, 0x0000 }, { 24355, 0x0000 }, { 24355, 0x0120 },
- /* 0x26400 */
- { 24357, 0x0004 }, { 24358, 0x0007 }, { 24361, 0x0000 }, { 24361, 0x0000 },
- { 24361, 0x0400 }, { 24362, 0x0000 }, { 24362, 0x0200 }, { 24363, 0x0000 },
- { 24363, 0x2310 }, { 24367, 0x0100 }, { 24368, 0x0000 }, { 24368, 0x0000 },
- { 24368, 0x0000 }, { 24368, 0x0000 }, { 24368, 0x0000 }, { 24368, 0x0000 },
- /* 0x26500 */
- { 24368, 0x0000 }, { 24368, 0x0004 }, { 24369, 0x0000 }, { 24369, 0x0000 },
- { 24369, 0x0000 }, { 24369, 0x0000 }, { 24369, 0x0000 }, { 24369, 0x0004 },
- { 24370, 0x0000 }, { 24370, 0x0000 }, { 24370, 0x2001 }, { 24372, 0x8000 },
- { 24373, 0x0000 }, { 24373, 0x0000 }, { 24373, 0x0000 }, { 24373, 0x0000 },
- /* 0x26600 */
- { 24373, 0x0000 }, { 24373, 0x0004 }, { 24374, 0x0040 }, { 24375, 0x0000 },
- { 24375, 0x0000 }, { 24375, 0x0000 }, { 24375, 0x0000 }, { 24375, 0x0000 },
- { 24375, 0x0000 }, { 24375, 0x0000 }, { 24375, 0x8000 }, { 24376, 0x0022 },
- { 24378, 0x0000 }, { 24378, 0x0400 }, { 24379, 0x0100 }, { 24380, 0x1000 },
- /* 0x26700 */
- { 24381, 0x0000 }, { 24381, 0x0040 }, { 24382, 0x0000 }, { 24382, 0x0000 },
- { 24382, 0x0002 }, { 24383, 0x0000 }, { 24383, 0x0000 }, { 24383, 0x0000 },
- { 24383, 0x0000 }, { 24383, 0x0200 }, { 24384, 0x0000 }, { 24384, 0x0018 },
- { 24386, 0x1000 }, { 24387, 0x0000 }, { 24387, 0x0000 }, { 24387, 0x0000 },
- /* 0x26800 */
- { 24387, 0x0000 }, { 24387, 0x1000 }, { 24388, 0x0000 }, { 24388, 0x0000 },
- { 24388, 0x0040 }, { 24389, 0x4000 }, { 24390, 0x4000 }, { 24391, 0x0000 },
- { 24391, 0x0500 }, { 24393, 0x0008 }, { 24394, 0x0000 }, { 24394, 0x0000 },
- { 24394, 0x0080 }, { 24395, 0x0000 }, { 24395, 0x0000 }, { 24395, 0x0000 },
- /* 0x26900 */
- { 24395, 0x4000 }, { 24396, 0x0002 }, { 24397, 0x0040 }, { 24398, 0x0200 },
- { 24399, 0x0000 }, { 24399, 0x0002 }, { 24400, 0x0000 }, { 24400, 0x0000 },
- { 24400, 0x0000 }, { 24400, 0x0000 }, { 24400, 0x0100 }, { 24401, 0x0020 },
- { 24402, 0x0000 }, { 24402, 0x0000 }, { 24402, 0x0000 }, { 24402, 0x0404 },
- /* 0x26A00 */
- { 24404, 0x0000 }, { 24404, 0x0000 }, { 24404, 0x6000 }, { 24406, 0x0010 },
- { 24407, 0x0004 }, { 24408, 0x0006 }, { 24410, 0x0000 }, { 24410, 0x0000 },
- { 24410, 0x0000 }, { 24410, 0x0000 }, { 24410, 0x0000 }, { 24410, 0x0000 },
- { 24410, 0x0000 }, { 24410, 0x0000 }, { 24410, 0x0000 }, { 24410, 0x0000 },
- /* 0x26B00 */
- { 24410, 0x0420 }, { 24412, 0x0028 }, { 24414, 0x0100 }, { 24415, 0x0000 },
- { 24415, 0x0000 }, { 24415, 0x080F }, { 24420, 0x0000 }, { 24420, 0x0020 },
- { 24421, 0x0004 }, { 24422, 0x20C0 }, { 24425, 0x0000 }, { 24425, 0x0008 },
- { 24426, 0x0001 }, { 24427, 0x0000 }, { 24427, 0x0000 }, { 24427, 0x0080 },
- /* 0x26C00 */
- { 24428, 0x0000 }, { 24428, 0x0000 }, { 24428, 0x0002 }, { 24429, 0x0000 },
- { 24429, 0x0001 }, { 24430, 0x0000 }, { 24430, 0x0000 }, { 24430, 0xC000 },
- { 24432, 0x0007 }, { 24435, 0x0000 }, { 24435, 0x0010 }, { 24436, 0x2180 },
- { 24439, 0x0009 }, { 24441, 0x0002 }, { 24442, 0x0000 }, { 24442, 0x0000 },
- /* 0x26D00 */
- { 24442, 0x0000 }, { 24442, 0x0000 }, { 24442, 0x07FC }, { 24451, 0x0000 },
- { 24451, 0x0000 }, { 24451, 0x0002 }, { 24452, 0x0000 }, { 24452, 0x0010 },
- { 24453, 0x0000 }, { 24453, 0x0000 }, { 24453, 0x40FF }, { 24462, 0x0000 },
- { 24462, 0x0000 }, { 24462, 0x1000 }, { 24463, 0x0C00 }, { 24465, 0x0001 },
- /* 0x26E00 */
- { 24466, 0x00A1 }, { 24469, 0x0004 }, { 24470, 0x0000 }, { 24470, 0x0000 },
- { 24470, 0x003C }, { 24474, 0x0000 }, { 24474, 0x4000 }, { 24475, 0x0084 },
- { 24477, 0x0010 }, { 24478, 0x0200 }, { 24479, 0x0000 }, { 24479, 0x0000 },
- { 24479, 0x0000 }, { 24479, 0x00FF }, { 24487, 0x0000 }, { 24487, 0x0000 },
- /* 0x26F00 */
- { 24487, 0x0000 }, { 24487, 0x0000 }, { 24487, 0x0040 }, { 24488, 0x0000 },
- { 24488, 0x0000 }, { 24488, 0x0000 }, { 24488, 0x0000 }, { 24488, 0x0018 },
- { 24490, 0x0000 }, { 24490, 0x8000 }, { 24491, 0x0002 }, { 24492, 0x4000 },
- { 24493, 0x0000 }, { 24493, 0xC000 }, { 24495, 0x0000 }, { 24495, 0x0000 },
- /* 0x27000 */
- { 24495, 0x4000 }, { 24496, 0x0000 }, { 24496, 0x0000 }, { 24496, 0x0000 },
- { 24496, 0x0800 }, { 24497, 0x000C }, { 24499, 0x0000 }, { 24499, 0x0000 },
- { 24499, 0x0100 }, { 24500, 0x0000 }, { 24500, 0xE000 }, { 24503, 0x0000 },
- { 24503, 0x2000 }, { 24504, 0x0000 }, { 24504, 0x0000 }, { 24504, 0x0100 },
- /* 0x27100 */
- { 24505, 0x3200 }, { 24508, 0x0000 }, { 24508, 0x00C0 }, { 24510, 0x0000 },
- { 24510, 0x0000 }, { 24510, 0x0000 }, { 24510, 0x0030 }, { 24512, 0x0020 },
- { 24513, 0x0000 }, { 24513, 0x0000 }, { 24513, 0x0000 }, { 24513, 0x0000 },
- { 24513, 0x2000 }, { 24514, 0x0000 }, { 24514, 0x0000 }, { 24514, 0x0000 },
- /* 0x27200 */
- { 24514, 0x0000 }, { 24514, 0x0800 }, { 24515, 0x0000 }, { 24515, 0x0000 },
- { 24515, 0x0000 }, { 24515, 0x0000 }, { 24515, 0x0000 }, { 24515, 0x0000 },
- { 24515, 0x0821 }, { 24518, 0x0000 }, { 24518, 0x0000 }, { 24518, 0x0044 },
- { 24520, 0x0000 }, { 24520, 0x0000 }, { 24520, 0x0040 }, { 24521, 0x0000 },
- /* 0x27300 */
- { 24521, 0x0000 }, { 24521, 0x0000 }, { 24521, 0x0000 }, { 24521, 0x0000 },
- { 24521, 0x0000 }, { 24521, 0x0000 }, { 24521, 0x0000 }, { 24521, 0x0000 },
- { 24521, 0x0000 }, { 24521, 0x0400 }, { 24522, 0x0000 }, { 24522, 0x0000 },
- { 24522, 0x0000 }, { 24522, 0x0000 }, { 24522, 0x0000 }, { 24522, 0x0000 },
- /* 0x27400 */
- { 24522, 0x0000 }, { 24522, 0x0000 }, { 24522, 0x0004 }, { 24523, 0x0000 },
- { 24523, 0x0000 }, { 24523, 0x0001 }, { 24524, 0x0000 }, { 24524, 0x0000 },
- { 24524, 0x0050 }, { 24526, 0x0000 }, { 24526, 0x0000 }, { 24526, 0x0000 },
- { 24526, 0x0000 }, { 24526, 0x0000 }, { 24526, 0x0000 }, { 24526, 0x0000 },
- /* 0x27500 */
- { 24526, 0x0000 }, { 24526, 0x0000 }, { 24526, 0x0000 }, { 24526, 0x0000 },
- { 24526, 0x0000 }, { 24526, 0x0000 }, { 24526, 0x0000 }, { 24526, 0x0010 },
- { 24527, 0x0000 }, { 24527, 0x0000 }, { 24527, 0x0008 }, { 24528, 0x0000 },
- { 24528, 0x0000 }, { 24528, 0x0000 }, { 24528, 0x0011 }, { 24530, 0x6000 },
- /* 0x27600 */
- { 24532, 0x1080 }, { 24534, 0x0000 }, { 24534, 0x0000 }, { 24534, 0x0204 },
- { 24536, 0x0000 }, { 24536, 0x00E0 }, { 24539, 0x0000 }, { 24539, 0x0000 },
- { 24539, 0x0000 }, { 24539, 0x0010 }, { 24540, 0x0000 }, { 24540, 0x0000 },
- { 24540, 0x0000 }, { 24540, 0x0000 }, { 24540, 0x0000 }, { 24540, 0x0000 },
- /* 0x27700 */
- { 24540, 0x8000 }, { 24541, 0x0000 }, { 24541, 0x0000 }, { 24541, 0x0060 },
- { 24543, 0x0002 }, { 24544, 0x4000 }, { 24545, 0x0000 }, { 24545, 0x0000 },
- { 24545, 0x0030 }, { 24547, 0x0000 }, { 24547, 0x0000 }, { 24547, 0x0000 },
- { 24547, 0x1000 }, { 24548, 0x0000 }, { 24548, 0x0000 }, { 24548, 0x0000 },
- /* 0x27800 */
- { 24548, 0x0000 }, { 24548, 0x0000 }, { 24548, 0x0000 }, { 24548, 0x0000 },
- { 24548, 0x0000 }, { 24548, 0x0100 }, { 24549, 0x0000 }, { 24549, 0x0001 },
- { 24550, 0x0000 }, { 24550, 0x2000 }, { 24551, 0x0000 }, { 24551, 0x0004 },
- { 24552, 0x0100 }, { 24553, 0x0000 }, { 24553, 0x0000 }, { 24553, 0x0000 },
- /* 0x27900 */
- { 24553, 0x0000 }, { 24553, 0x0000 }, { 24553, 0x0010 }, { 24554, 0x0000 },
- { 24554, 0x0000 }, { 24554, 0x0000 }, { 24554, 0x0080 }, { 24555, 0x0400 },
- { 24556, 0x0000 }, { 24556, 0x0000 }, { 24556, 0x0001 }, { 24557, 0x0000 },
- { 24557, 0x0000 }, { 24557, 0x2000 }, { 24558, 0x0000 }, { 24558, 0x2000 },
- /* 0x27A00 */
- { 24559, 0x4400 }, { 24561, 0x0000 }, { 24561, 0x0000 }, { 24561, 0x4000 },
- { 24562, 0x0000 }, { 24562, 0x0208 }, { 24564, 0x0000 }, { 24564, 0x0200 },
- { 24565, 0x0010 }, { 24566, 0x0000 }, { 24566, 0x0000 }, { 24566, 0x6000 },
- { 24568, 0x0000 }, { 24568, 0x0000 }, { 24568, 0x0000 }, { 24568, 0x0010 },
- /* 0x27B00 */
- { 24569, 0x0840 }, { 24571, 0x0100 }, { 24572, 0x0000 }, { 24572, 0x0700 },
- { 24575, 0x0100 }, { 24576, 0x0000 }, { 24576, 0x0000 }, { 24576, 0x0000 },
- { 24576, 0x0000 }, { 24576, 0x0000 }, { 24576, 0x0000 }, { 24576, 0x0000 },
- { 24576, 0x0000 }, { 24576, 0x0000 }, { 24576, 0x0000 }, { 24576, 0x0010 },
- /* 0x27C00 */
- { 24577, 0x0000 }, { 24577, 0x0004 }, { 24578, 0x0000 }, { 24578, 0x0000 },
- { 24578, 0x0000 }, { 24578, 0x0000 }, { 24578, 0x0000 }, { 24578, 0x0000 },
- { 24578, 0x0000 }, { 24578, 0x0000 }, { 24578, 0x0000 }, { 24578, 0x0000 },
- { 24578, 0x0000 }, { 24578, 0x0000 }, { 24578, 0x0000 }, { 24578, 0x0000 },
- /* 0x27D00 */
- { 24578, 0x0000 }, { 24578, 0x0000 }, { 24578, 0x8000 }, { 24579, 0x0000 },
- { 24579, 0x0000 }, { 24579, 0x0018 }, { 24581, 0x0040 }, { 24582, 0x0008 },
- { 24583, 0x8010 }, { 24585, 0x0100 }, { 24586, 0x0000 }, { 24586, 0x2000 },
- { 24587, 0x0000 }, { 24587, 0x1000 }, { 24588, 0x0000 }, { 24588, 0x0000 },
- /* 0x27E00 */
- { 24588, 0x0000 }, { 24588, 0x0000 }, { 24588, 0x0000 }, { 24588, 0x0000 },
- { 24588, 0xA000 }, { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 },
- { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 },
- { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 },
- /* 0x27F00 */
- { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 },
- { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 },
- { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 },
- { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0000 }, { 24590, 0x0200 },
- /* 0x28000 */
- { 24591, 0x0204 }, { 24593, 0x4000 }, { 24594, 0x0018 }, { 24596, 0x0000 },
- { 24596, 0x0100 }, { 24597, 0x0000 }, { 24597, 0x0000 }, { 24597, 0x0000 },
- { 24597, 0x0008 }, { 24598, 0x0001 }, { 24599, 0x0000 }, { 24599, 0x6000 },
- { 24601, 0x0000 }, { 24601, 0x0000 }, { 24601, 0x0300 }, { 24603, 0x0010 },
- /* 0x28100 */
- { 24604, 0x0000 }, { 24604, 0x0000 }, { 24604, 0x4000 }, { 24605, 0x0000 },
- { 24605, 0x8000 }, { 24606, 0x2000 }, { 24607, 0x8000 }, { 24608, 0x0000 },
- { 24608, 0x0200 }, { 24609, 0x0000 }, { 24609, 0x8000 }, { 24610, 0x1000 },
- { 24611, 0x0000 }, { 24611, 0x0000 }, { 24611, 0x0000 }, { 24611, 0x0000 },
- /* 0x28200 */
- { 24611, 0x0080 }, { 24612, 0x0500 }, { 24614, 0x0000 }, { 24614, 0x0000 },
- { 24614, 0x0000 }, { 24614, 0x0040 }, { 24615, 0x0000 }, { 24615, 0x1000 },
- { 24616, 0x0000 }, { 24616, 0x0800 }, { 24617, 0x0000 }, { 24617, 0x0000 },
- { 24617, 0x2000 }, { 24618, 0x0000 }, { 24618, 0x0004 }, { 24619, 0x0000 },
- /* 0x28300 */
- { 24619, 0x0040 }, { 24620, 0x0100 }, { 24621, 0x8000 }, { 24622, 0x0400 },
- { 24623, 0x0000 }, { 24623, 0x0000 }, { 24623, 0x2020 }, { 24625, 0x2000 },
- { 24626, 0x0400 }, { 24627, 0x0000 }, { 24627, 0x0000 }, { 24627, 0x0000 },
- { 24627, 0x0000 }, { 24627, 0x0000 }, { 24627, 0x0000 }, { 24627, 0x0000 },
- /* 0x28400 */
- { 24627, 0x0000 }, { 24627, 0x0004 }, { 24628, 0x0000 }, { 24628, 0x0000 },
- { 24628, 0x0000 }, { 24628, 0x0000 }, { 24628, 0x1100 }, { 24630, 0x0008 },
- { 24631, 0x0004 }, { 24632, 0x0000 }, { 24632, 0x0000 }, { 24632, 0x0000 },
- { 24632, 0x0000 }, { 24632, 0x0000 }, { 24632, 0x0000 }, { 24632, 0x0000 },
- /* 0x28500 */
- { 24632, 0x0002 }, { 24633, 0x0000 }, { 24633, 0x0000 }, { 24633, 0x3000 },
- { 24635, 0x0000 }, { 24635, 0x0000 }, { 24635, 0x1000 }, { 24636, 0x0000 },
- { 24636, 0x0000 }, { 24636, 0x0000 }, { 24636, 0x0000 }, { 24636, 0x0000 },
- { 24636, 0x0000 }, { 24636, 0x0000 }, { 24636, 0x0100 }, { 24637, 0x0010 },
- /* 0x28600 */
- { 24638, 0x0801 }, { 24640, 0x0000 }, { 24640, 0x0020 }, { 24641, 0x0800 },
- { 24642, 0x0000 }, { 24642, 0x0000 }, { 24642, 0x0000 }, { 24642, 0x0000 },
- { 24642, 0x0000 }, { 24642, 0x0000 }, { 24642, 0x0C00 }, { 24644, 0x1000 },
- { 24645, 0x0000 }, { 24645, 0x0100 }, { 24646, 0x0040 }, { 24647, 0x0000 },
- /* 0x28700 */
- { 24647, 0x8000 }, { 24648, 0x0008 }, { 24649, 0x0000 }, { 24649, 0x0000 },
- { 24649, 0x0000 }, { 24649, 0x0000 }, { 24649, 0x0000 }, { 24649, 0x0000 },
- { 24649, 0x0000 }, { 24649, 0x0000 }, { 24649, 0x0000 }, { 24649, 0x0000 },
- { 24649, 0x0000 }, { 24649, 0x0000 }, { 24649, 0x0000 }, { 24649, 0x0000 },
- /* 0x28800 */
- { 24649, 0x0010 }, { 24650, 0x0000 }, { 24650, 0x0800 }, { 24651, 0x0000 },
- { 24651, 0x0000 }, { 24651, 0x0000 }, { 24651, 0x0000 }, { 24651, 0x0000 },
- { 24651, 0x0000 }, { 24651, 0x0000 }, { 24651, 0x0000 }, { 24651, 0x0000 },
- { 24651, 0x0000 }, { 24651, 0x0000 }, { 24651, 0x0000 }, { 24651, 0x0000 },
- /* 0x28900 */
- { 24651, 0x0000 }, { 24651, 0x0000 }, { 24651, 0x0000 }, { 24651, 0x0008 },
- { 24652, 0x0300 }, { 24654, 0x0040 }, { 24655, 0x1110 }, { 24658, 0x4000 },
- { 24659, 0x0200 }, { 24660, 0x0000 }, { 24660, 0x0D00 }, { 24663, 0x1100 },
- { 24665, 0x0001 }, { 24666, 0x5000 }, { 24668, 0x019A }, { 24673, 0x1E00 },
- /* 0x28A00 */
- { 24677, 0x8000 }, { 24678, 0x0040 }, { 24679, 0x0220 }, { 24681, 0x0044 },
- { 24683, 0x0FF0 }, { 24691, 0x0600 }, { 24693, 0x0000 }, { 24693, 0x0000 },
- { 24693, 0x000E }, { 24696, 0x1C00 }, { 24699, 0x0000 }, { 24699, 0x0000 },
- { 24699, 0x5841 }, { 24704, 0xC000 }, { 24706, 0x042F }, { 24712, 0x1000 },
- /* 0x28B00 */
- { 24713, 0x1000 }, { 24714, 0x0008 }, { 24715, 0xB806 }, { 24721, 0x0000 },
- { 24721, 0x5040 }, { 24724, 0x0001 }, { 24725, 0x1078 }, { 24730, 0x0000 },
- { 24730, 0x8000 }, { 24731, 0x3200 }, { 24734, 0x0000 }, { 24734, 0x0000 },
- { 24734, 0x0024 }, { 24736, 0x0690 }, { 24740, 0x1F80 }, { 24746, 0x8020 },
- /* 0x28C00 */
- { 24748, 0x0208 }, { 24750, 0x3000 }, { 24752, 0x0848 }, { 24755, 0x0A01 },
- { 24758, 0x0000 }, { 24758, 0x0000 }, { 24758, 0x0000 }, { 24758, 0x0000 },
- { 24758, 0x0000 }, { 24758, 0x0000 }, { 24758, 0x0000 }, { 24758, 0x0000 },
- { 24758, 0x2400 }, { 24760, 0x0004 }, { 24761, 0x0000 }, { 24761, 0x0000 },
- /* 0x28D00 */
- { 24761, 0x0000 }, { 24761, 0x0000 }, { 24761, 0x0000 }, { 24761, 0x0010 },
- { 24762, 0x0000 }, { 24762, 0x0000 }, { 24762, 0x0000 }, { 24762, 0x0000 },
- { 24762, 0x0000 }, { 24762, 0x0200 }, { 24763, 0x0000 }, { 24763, 0x0200 },
- { 24764, 0x0000 }, { 24764, 0x0000 }, { 24764, 0x0000 }, { 24764, 0x0000 },
- /* 0x28E00 */
- { 24764, 0x8000 }, { 24765, 0x0000 }, { 24765, 0x0000 }, { 24765, 0x0240 },
- { 24767, 0x0000 }, { 24767, 0x0000 }, { 24767, 0x0060 }, { 24769, 0x0000 },
- { 24769, 0x0000 }, { 24769, 0x0080 }, { 24770, 0x1000 }, { 24771, 0x000C },
- { 24773, 0x0000 }, { 24773, 0x0200 }, { 24774, 0x0080 }, { 24775, 0x0000 },
- /* 0x28F00 */
- { 24775, 0x0000 }, { 24775, 0x0000 }, { 24775, 0x0000 }, { 24775, 0x0000 },
- { 24775, 0x0000 }, { 24775, 0x0000 }, { 24775, 0x0000 }, { 24775, 0x0000 },
- { 24775, 0x0000 }, { 24775, 0x0000 }, { 24775, 0x0000 }, { 24775, 0x0000 },
- { 24775, 0x0020 }, { 24776, 0x0000 }, { 24776, 0x0000 }, { 24776, 0x0000 },
- /* 0x29000 */
- { 24776, 0x0000 }, { 24776, 0x0000 }, { 24776, 0x0000 }, { 24776, 0x0000 },
- { 24776, 0x0000 }, { 24776, 0x0000 }, { 24776, 0x0000 }, { 24776, 0x0000 },
- { 24776, 0x0900 }, { 24778, 0x0008 }, { 24779, 0x8000 }, { 24780, 0x0003 },
- { 24782, 0x0001 }, { 24783, 0x0000 }, { 24783, 0x3030 }, { 24787, 0x0000 },
- /* 0x29100 */
- { 24787, 0x2000 }, { 24788, 0x0001 }, { 24789, 0x0000 }, { 24789, 0x1000 },
- { 24790, 0x2000 }, { 24791, 0x4800 }, { 24793, 0x0000 }, { 24793, 0x0001 },
- { 24794, 0x0000 }, { 24794, 0x1000 }, { 24795, 0x0100 }, { 24796, 0x0000 },
- { 24796, 0x0000 }, { 24796, 0x0020 }, { 24797, 0x0800 },
-};
-static const Summary16 big5hkscs_uni2index_page294[32] = {
- /* 0x29400 */
- { 24798, 0x0000 }, { 24798, 0x2000 }, { 24799, 0x0001 }, { 24800, 0x8008 },
- { 24802, 0x0100 }, { 24803, 0x0000 }, { 24803, 0x0000 }, { 24803, 0x0000 },
- { 24803, 0x0000 }, { 24803, 0x0000 }, { 24803, 0x0000 }, { 24803, 0x0000 },
- { 24803, 0x0000 }, { 24803, 0x0601 }, { 24806, 0x00A0 }, { 24808, 0x0000 },
- /* 0x29500 */
- { 24808, 0x0000 }, { 24808, 0x0000 }, { 24808, 0x0000 }, { 24808, 0x0000 },
- { 24808, 0x0000 }, { 24808, 0x0000 }, { 24808, 0x0000 }, { 24808, 0x0000 },
- { 24808, 0x0000 }, { 24808, 0x4000 }, { 24809, 0x0000 }, { 24809, 0x0101 },
- { 24811, 0x0000 }, { 24811, 0x0080 }, { 24812, 0x0200 }, { 24813, 0x0010 },
-};
-static const Summary16 big5hkscs_uni2index_page297[251] = {
- /* 0x29700 */
- { 24814, 0x0000 }, { 24814, 0x0000 }, { 24814, 0x0001 }, { 24815, 0x0004 },
- { 24816, 0x0000 }, { 24816, 0x0000 }, { 24816, 0x0000 }, { 24816, 0x0000 },
- { 24816, 0x0000 }, { 24816, 0x0000 }, { 24816, 0x0000 }, { 24816, 0x0000 },
- { 24816, 0x0000 }, { 24816, 0x0010 }, { 24817, 0x0000 }, { 24817, 0x0000 },
- /* 0x29800 */
- { 24817, 0x0000 }, { 24817, 0x0001 }, { 24818, 0x0000 }, { 24818, 0x0000 },
- { 24818, 0x0000 }, { 24818, 0x0080 }, { 24819, 0x0000 }, { 24819, 0x0000 },
- { 24819, 0x0000 }, { 24819, 0x0000 }, { 24819, 0x0010 }, { 24820, 0x0000 },
- { 24820, 0x0000 }, { 24820, 0x0002 }, { 24821, 0x0400 }, { 24822, 0x0002 },
- /* 0x29900 */
- { 24823, 0x0028 }, { 24825, 0x0000 }, { 24825, 0x8000 }, { 24826, 0x0000 },
- { 24826, 0x0380 }, { 24829, 0x2000 }, { 24830, 0x0400 }, { 24831, 0x0000 },
- { 24831, 0x0000 }, { 24831, 0x2000 }, { 24832, 0x0000 }, { 24832, 0x0000 },
- { 24832, 0x0208 }, { 24834, 0x0000 }, { 24834, 0x0000 }, { 24834, 0x0000 },
- /* 0x29A00 */
- { 24834, 0x0000 }, { 24834, 0x0000 }, { 24834, 0x0100 }, { 24835, 0x0000 },
- { 24835, 0x2000 }, { 24836, 0x0000 }, { 24836, 0x0000 }, { 24836, 0x0000 },
- { 24836, 0x0000 }, { 24836, 0x0000 }, { 24836, 0x0000 }, { 24836, 0x0000 },
- { 24836, 0x0000 }, { 24836, 0x0000 }, { 24836, 0x0000 }, { 24836, 0x0000 },
- /* 0x29B00 */
- { 24836, 0x4020 }, { 24838, 0x0000 }, { 24838, 0x0000 }, { 24838, 0x0000 },
- { 24838, 0x0000 }, { 24838, 0x0000 }, { 24838, 0x0000 }, { 24838, 0x0000 },
- { 24838, 0x0000 }, { 24838, 0x0000 }, { 24838, 0x0000 }, { 24838, 0x0000 },
- { 24838, 0x0000 }, { 24838, 0x0020 }, { 24839, 0x0000 }, { 24839, 0x0000 },
- /* 0x29C00 */
- { 24839, 0x0000 }, { 24839, 0x0000 }, { 24839, 0x0000 }, { 24839, 0x0000 },
- { 24839, 0x0000 }, { 24839, 0x0000 }, { 24839, 0x0000 }, { 24839, 0x0008 },
- { 24840, 0x0000 }, { 24840, 0x0000 }, { 24840, 0x2000 }, { 24841, 0x0000 },
- { 24841, 0x0000 }, { 24841, 0x0000 }, { 24841, 0x0000 }, { 24841, 0x0000 },
- /* 0x29D00 */
- { 24841, 0x0000 }, { 24841, 0x0000 }, { 24841, 0x0000 }, { 24841, 0x4000 },
- { 24842, 0x0000 }, { 24842, 0x0400 }, { 24843, 0x0000 }, { 24843, 0x1000 },
- { 24844, 0x0000 }, { 24844, 0x0900 }, { 24846, 0x0000 }, { 24846, 0x0000 },
- { 24846, 0x0000 }, { 24846, 0x0000 }, { 24846, 0x0000 }, { 24846, 0x0040 },
- /* 0x29E00 */
- { 24847, 0x0040 }, { 24848, 0x0000 }, { 24848, 0x2000 }, { 24849, 0x0000 },
- { 24849, 0x0000 }, { 24849, 0x0000 }, { 24849, 0x0100 }, { 24850, 0x0000 },
- { 24850, 0x0000 }, { 24850, 0x0000 }, { 24850, 0x1000 }, { 24851, 0x0000 },
- { 24851, 0x0008 }, { 24852, 0x0000 }, { 24852, 0x0000 }, { 24852, 0x0100 },
- /* 0x29F00 */
- { 24853, 0x0000 }, { 24853, 0x0000 }, { 24853, 0x0008 }, { 24854, 0x0001 },
- { 24855, 0x0000 }, { 24855, 0x0000 }, { 24855, 0x0000 }, { 24855, 0x0000 },
- { 24855, 0x0000 }, { 24855, 0x0000 }, { 24855, 0x0000 }, { 24855, 0x0080 },
- { 24856, 0x0000 }, { 24856, 0x4000 }, { 24857, 0x0000 }, { 24857, 0x0000 },
- /* 0x2A000 */
- { 24857, 0x0000 }, { 24857, 0x0010 }, { 24858, 0x0000 }, { 24858, 0x0000 },
- { 24858, 0x0000 }, { 24858, 0x0000 }, { 24858, 0x0000 }, { 24858, 0x0000 },
- { 24858, 0x0080 }, { 24859, 0x0000 }, { 24859, 0x0000 }, { 24859, 0x0200 },
- { 24860, 0x0000 }, { 24860, 0x0000 }, { 24860, 0x2002 }, { 24862, 0x4108 },
- /* 0x2A100 */
- { 24865, 0x0080 }, { 24866, 0x0000 }, { 24866, 0x0008 }, { 24867, 0x0018 },
- { 24869, 0x0000 }, { 24869, 0x0001 }, { 24870, 0x0000 }, { 24870, 0x0000 },
- { 24870, 0x0000 }, { 24870, 0x000C }, { 24872, 0x0800 }, { 24873, 0x0010 },
- { 24874, 0x0000 }, { 24874, 0x8000 }, { 24875, 0x0000 }, { 24875, 0x0020 },
- /* 0x2A200 */
- { 24876, 0x0000 }, { 24876, 0x0000 }, { 24876, 0x0001 }, { 24877, 0x0008 },
- { 24878, 0x0000 }, { 24878, 0x0000 }, { 24878, 0x0000 }, { 24878, 0x0000 },
- { 24878, 0x0000 }, { 24878, 0x8008 }, { 24880, 0x0000 }, { 24880, 0x2454 },
- { 24885, 0x0000 }, { 24885, 0x8000 }, { 24886, 0x0000 }, { 24886, 0x8000 },
- /* 0x2A300 */
- { 24887, 0x0000 }, { 24887, 0x0000 }, { 24887, 0x0000 }, { 24887, 0x0000 },
- { 24887, 0x0000 }, { 24887, 0x0000 }, { 24887, 0x0000 }, { 24887, 0x0000 },
- { 24887, 0x0000 }, { 24887, 0x0000 }, { 24887, 0x0200 }, { 24888, 0x0000 },
- { 24888, 0x0000 }, { 24888, 0x0000 }, { 24888, 0x0000 }, { 24888, 0x0000 },
- /* 0x2A400 */
- { 24888, 0x0000 }, { 24888, 0x0000 }, { 24888, 0x0000 }, { 24888, 0x0010 },
- { 24889, 0x0000 }, { 24889, 0x0800 }, { 24890, 0x0000 }, { 24890, 0x0000 },
- { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 },
- { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 },
- /* 0x2A500 */
- { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 },
- { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 },
- { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 }, { 24890, 0x0000 },
- { 24890, 0x0840 }, { 24892, 0x0000 }, { 24892, 0x0000 }, { 24892, 0x0000 },
- /* 0x2A600 */
- { 24892, 0x0002 }, { 24893, 0x0000 }, { 24893, 0x0000 }, { 24893, 0x0004 },
- { 24894, 0x0400 }, { 24895, 0x0800 }, { 24896, 0x0000 }, { 24896, 0x0000 },
- { 24896, 0x0000 }, { 24896, 0x0000 }, { 24896, 0x0200 },
-};
-static const Summary16 big5hkscs_uni2index_page2f8[30] = {
- /* 0x2F800 */
- { 24897, 0x0000 }, { 24897, 0x0000 }, { 24897, 0x0020 }, { 24898, 0x0800 },
- { 24899, 0x0001 }, { 24900, 0x0000 }, { 24900, 0x0000 }, { 24900, 0x0100 },
- { 24901, 0x0000 }, { 24901, 0x0010 }, { 24902, 0x0040 }, { 24903, 0x0000 },
- { 24903, 0x2000 }, { 24904, 0x0000 }, { 24904, 0x0000 }, { 24904, 0x0000 },
- /* 0x2F900 */
- { 24904, 0x0000 }, { 24904, 0x0000 }, { 24904, 0x0000 }, { 24904, 0x0000 },
- { 24904, 0x0000 }, { 24904, 0x0000 }, { 24904, 0x0000 }, { 24904, 0x0000 },
- { 24904, 0x0000 }, { 24904, 0x0010 }, { 24905, 0x0000 }, { 24905, 0x1004 },
- { 24907, 0x0000 }, { 24907, 0x0010 },
-};
-
-int qt_UnicodeToBig5hkscs (uint wc, uchar *r)
-{
- const Summary16 *summary = NULL;
- if (wc < 0x80) {
- r[0] = (uchar) wc;
- return 1;
- }
- if (wc < 0x0460)
- summary = &big5hkscs_uni2index_page00[(wc>>4)];
- else if (wc >= 0x1e00 && wc < 0x1ed0)
- summary = &big5hkscs_uni2index_page1e[(wc>>4)-0x1e0];
- else if (wc >= 0x2000 && wc < 0x2740)
- summary = &big5hkscs_uni2index_page20[(wc>>4)-0x200];
- else if (wc >= 0x2e00 && wc < 0x9fb0)
- summary = &big5hkscs_uni2index_page2e[(wc>>4)-0x2e0];
- else if (wc >= 0xe000 && wc < 0xfa30)
- summary = &big5hkscs_uni2index_pagee0[(wc>>4)-0xe00];
- else if (wc >= 0xfe00 && wc < 0xfff0)
- summary = &big5hkscs_uni2index_pagefe[(wc>>4)-0xfe0];
- else if (wc >= 0x20000 && wc < 0x291f0)
- summary = &big5hkscs_uni2index_page200[(wc>>4)-0x2000];
- else if (wc >= 0x29400 && wc < 0x29600)
- summary = &big5hkscs_uni2index_page294[(wc>>4)-0x2940];
- else if (wc >= 0x29700 && wc < 0x2a6b0)
- summary = &big5hkscs_uni2index_page297[(wc>>4)-0x2970];
- else if (wc >= 0x2f800 && wc < 0x2f9e0)
- summary = &big5hkscs_uni2index_page2f8[(wc>>4)-0x2f80];
- if (summary) {
- ushort used = summary->used;
- uint i = wc & 0x0f;
- if (used & ((ushort) 1 << i)) {
- const uchar *c;
- /* Keep in `used' only the bits 0..i-1. */
- used &= ((ushort) 1 << i) - 1;
- /* Add `summary->index' and the number of bits set in `used'. */
- used = (used & 0x5555) + ((used & 0xaaaa) >> 1);
- used = (used & 0x3333) + ((used & 0xcccc) >> 2);
- used = (used & 0x0f0f) + ((used & 0xf0f0) >> 4);
- used = (used & 0x00ff) + (used >> 8);
- c = big5hkscs_to_charset[summary->index + used];
- if (c [1] != 0) {
- r[0] = c[0];
- r[1] = c[1];
- return 2;
- } else { // (c [1] == 0)
- r[0] = c[0];
- return 1;
- }
- }
- }
- return 0;
-}
-
-
-/* ====================================================================== */
-#endif // QT_NO_TEXTCODEC
-
-QT_END_NAMESPACE
diff --git a/src/plugins/codecs/tw/qbig5codec.h b/src/plugins/codecs/tw/qbig5codec.h
deleted file mode 100644
index c5b649ef6f..0000000000
--- a/src/plugins/codecs/tw/qbig5codec.h
+++ /dev/null
@@ -1,124 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-// Most of the code here was originally written by Ming-Che Chuang and
-// is included in Qt with the author's permission, and the grateful
-// thanks of the Qt team.
-
-#ifndef QBIG5CODEC_H
-#define QBIG5CODEC_H
-
-#include <QtCore/qtextcodec.h>
-#include <QtCore/qlist.h>
-
-QT_BEGIN_NAMESPACE
-
-#ifndef QT_NO_TEXTCODEC
-
-class QBig5Codec : public QTextCodec {
-public:
- static QByteArray _name();
- static QList<QByteArray> _aliases();
- static int _mibEnum();
-
- QByteArray name() const { return _name(); }
- QList<QByteArray> aliases() const { return _aliases(); }
- int mibEnum() const { return _mibEnum(); }
-
- QString convertToUnicode(const char *, int, ConverterState *) const;
- QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
-};
-
-class QBig5hkscsCodec : public QTextCodec {
-public:
- static QByteArray _name();
- static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
- static int _mibEnum();
-
- QByteArray name() const { return _name(); }
- QList<QByteArray> aliases() const { return _aliases(); }
- int mibEnum() const { return _mibEnum(); }
-
- QString convertToUnicode(const char *, int, ConverterState *) const;
- QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
-};
-
-#ifdef Q_OS_UNIX
-class Q_CORE_EXPORT QFontBig5Codec : public QTextCodec
-{
-public:
- QFontBig5Codec();
-
- static QByteArray _name();
- static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
- static int _mibEnum();
-
- QByteArray name() const { return _name(); }
- QList<QByteArray> aliases() const { return _aliases(); }
- int mibEnum() const { return _mibEnum(); }
-
- QString convertToUnicode(const char *, int, ConverterState *) const;
- QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
-};
-
-class Q_CORE_EXPORT QFontBig5hkscsCodec : public QTextCodec
-{
-public:
- QFontBig5hkscsCodec();
-
- static QByteArray _name();
- static QList<QByteArray> _aliases() { return QList<QByteArray>(); }
- static int _mibEnum();
-
- QByteArray name() const { return _name(); }
- QList<QByteArray> aliases() const { return _aliases(); }
- int mibEnum() const { return _mibEnum(); }
-
- QString convertToUnicode(const char *, int, ConverterState *) const;
- QByteArray convertFromUnicode(const QChar *, int, ConverterState *) const;
-};
-#endif // Q_OS_UNIX
-
-#endif // QT_NO_TEXTCODEC
-
-QT_END_NAMESPACE
-
-#endif // QBIG5CODEC_H
diff --git a/src/plugins/codecs/tw/tw.pro b/src/plugins/codecs/tw/tw.pro
deleted file mode 100644
index d63876c5d8..0000000000
--- a/src/plugins/codecs/tw/tw.pro
+++ /dev/null
@@ -1,14 +0,0 @@
-TARGET = qtwcodecs
-load(qt_plugin)
-
-CONFIG += warn_on
-DESTDIR = $$QT.core.plugins/codecs
-QT = core
-
-HEADERS = qbig5codec.h
-
-SOURCES = qbig5codec.cpp \
- main.cpp
-
-target.path += $$[QT_INSTALL_PLUGINS]/codecs
-INSTALLS += target
diff --git a/src/plugins/generic/generic.pro b/src/plugins/generic/generic.pro
new file mode 100644
index 0000000000..68c7636940
--- /dev/null
+++ b/src/plugins/generic/generic.pro
@@ -0,0 +1,3 @@
+TEMPLATE = subdirs
+
+linux-g++-maemo: SUBDIRS += meego
diff --git a/src/plugins/generic/linuxinput/main.cpp b/src/plugins/generic/linuxinput/main.cpp
index d86fa12543..04fc00f528 100644
--- a/src/plugins/generic/linuxinput/main.cpp
+++ b/src/plugins/generic/linuxinput/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/generic/linuxinput/qlinuxinput.cpp b/src/plugins/generic/linuxinput/qlinuxinput.cpp
index 497ae7d3bf..04633845cb 100644
--- a/src/plugins/generic/linuxinput/qlinuxinput.cpp
+++ b/src/plugins/generic/linuxinput/qlinuxinput.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/generic/linuxinput/qlinuxinput.h b/src/plugins/generic/linuxinput/qlinuxinput.h
index 9f35397fd3..a512ad959a 100644
--- a/src/plugins/generic/linuxinput/qlinuxinput.h
+++ b/src/plugins/generic/linuxinput/qlinuxinput.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/generic/meego/contextkitproperty.cpp b/src/plugins/generic/meego/contextkitproperty.cpp
new file mode 100644
index 0000000000..616983dbfc
--- /dev/null
+++ b/src/plugins/generic/meego/contextkitproperty.cpp
@@ -0,0 +1,85 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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 "contextkitproperty.h"
+
+#include <QDBusReply>
+#include <QDebug>
+
+static QString objectPathForProperty(const QString& property)
+{
+ QString path = property;
+ if (!path.startsWith(QLatin1Char('/'))) {
+ path.replace(QLatin1Char('.'), QLatin1Char('/'));
+ path.prepend(QLatin1String("/org/maemo/contextkit/"));
+ }
+ return path;
+}
+
+QContextKitProperty::QContextKitProperty(const QString& serviceName, const QString& propertyName)
+ : propertyInterface(serviceName, objectPathForProperty(propertyName),
+ QLatin1String("org.maemo.contextkit.Property"), QDBusConnection::systemBus())
+{
+ propertyInterface.call("Subscribe");
+ connect(&propertyInterface, SIGNAL(ValueChanged(QVariantList, qulonglong)),
+ this, SLOT(cacheValue(QVariantList, qulonglong)));
+
+ QDBusMessage reply = propertyInterface.call("Get");
+ if (reply.type() == QDBusMessage::ReplyMessage)
+ cachedValue = qdbus_cast<QList<QVariant> >(reply.arguments().value(0)).value(0);
+}
+
+QContextKitProperty::~QContextKitProperty()
+{
+ propertyInterface.call("Unsubscribe");
+}
+
+QVariant QContextKitProperty::value() const
+{
+ return cachedValue;
+}
+
+void QContextKitProperty::cacheValue(const QVariantList& values, qulonglong)
+{
+ cachedValue = values.value(0);
+ emit valueChanged(cachedValue);
+}
+
diff --git a/src/plugins/generic/meego/contextkitproperty.h b/src/plugins/generic/meego/contextkitproperty.h
new file mode 100644
index 0000000000..7aba66f7fb
--- /dev/null
+++ b/src/plugins/generic/meego/contextkitproperty.h
@@ -0,0 +1,66 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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$
+**
+****************************************************************************/
+#ifndef CONTEXTKITPROPERTY_H
+#define CONTEXTKITPROPERTY_H
+
+#include <QDBusInterface>
+
+class QContextKitProperty : public QObject
+{
+ Q_OBJECT
+public:
+ QContextKitProperty(const QString& serviceName, const QString& propertyName);
+ ~QContextKitProperty();
+
+ QVariant value() const;
+
+signals:
+ void valueChanged(const QVariant& value);
+
+private slots:
+ void cacheValue(const QVariantList& values, qulonglong);
+
+private:
+ QDBusInterface propertyInterface;
+ QVariant cachedValue;
+};
+
+#endif // CONTEXTKITPROPERTY_H
diff --git a/src/plugins/generic/meego/main.cpp b/src/plugins/generic/meego/main.cpp
new file mode 100644
index 0000000000..074b24a781
--- /dev/null
+++ b/src/plugins/generic/meego/main.cpp
@@ -0,0 +1,75 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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 <qgenericplugin_qpa.h>
+#include "qmeegointegration.h"
+
+QT_BEGIN_NAMESPACE
+
+class QMeeGoIntegrationPlugin : public QGenericPlugin
+{
+public:
+ QMeeGoIntegrationPlugin();
+
+ QStringList keys() const;
+ QObject* create(const QString &key, const QString &specification);
+};
+
+QMeeGoIntegrationPlugin::QMeeGoIntegrationPlugin()
+ : QGenericPlugin()
+{
+}
+
+QStringList QMeeGoIntegrationPlugin::keys() const
+{
+ return QStringList() << QLatin1String("MeeGoIntegration");
+}
+
+QObject* QMeeGoIntegrationPlugin::create(const QString &key, const QString &specification)
+{
+ if (!key.compare(QLatin1String("MeeGoIntegration"), Qt::CaseInsensitive))
+ return new QMeeGoIntegration();
+ return 0;
+}
+
+Q_EXPORT_PLUGIN2(qmeegointegrationplugin, QMeeGoIntegrationPlugin)
+
+QT_END_NAMESPACE
diff --git a/src/plugins/generic/meego/meego.pro b/src/plugins/generic/meego/meego.pro
new file mode 100644
index 0000000000..928bb49d6c
--- /dev/null
+++ b/src/plugins/generic/meego/meego.pro
@@ -0,0 +1,15 @@
+TARGET = qmeegointegration
+load(qt_plugin)
+
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/generic
+
+target.path = $$[QT_INSTALL_PLUGINS]/generic
+INSTALLS += target
+
+SOURCES = qmeegointegration.cpp \
+ main.cpp \
+ contextkitproperty.cpp
+HEADERS = qmeegointegration.h \
+ contextkitproperty.h
+
+QT = core-private gui-private dbus
diff --git a/src/plugins/generic/meego/qmeegointegration.cpp b/src/plugins/generic/meego/qmeegointegration.cpp
new file mode 100644
index 0000000000..616d5e82ab
--- /dev/null
+++ b/src/plugins/generic/meego/qmeegointegration.cpp
@@ -0,0 +1,81 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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 "qmeegointegration.h"
+
+#include <QDebug>
+#include <QDBusConnection>
+#include <QDBusArgument>
+#include <qguiapplication.h>
+#include <qwindowsysteminterface_qpa.h>
+
+QMeeGoIntegration::QMeeGoIntegration()
+ : screenTopEdge(QStringLiteral("com.nokia.SensorService"), QStringLiteral("Screen.TopEdge"))
+{
+ connect(&screenTopEdge, SIGNAL(valueChanged(QVariant)),
+ this, SLOT(updateScreenOrientation(QVariant)));
+ updateScreenOrientation(screenTopEdge.value());
+}
+
+QMeeGoIntegration::~QMeeGoIntegration()
+{
+}
+
+void QMeeGoIntegration::updateScreenOrientation(const QVariant& topEdgeValue)
+{
+ QString edge = topEdgeValue.toString();
+ Qt::ScreenOrientation orientation = Qt::PrimaryOrientation;
+
+ // ### FIXME: This isn't perfect. We should obey the video_route (tv connected) and
+ // the keyboard slider.
+
+ if (edge == QLatin1String("top"))
+ orientation = Qt::LandscapeOrientation;
+ else if (edge == QLatin1String("left"))
+ orientation = Qt::PortraitOrientation;
+ else if (edge == QLatin1String("right"))
+ orientation = Qt::InvertedPortraitOrientation;
+ else if (edge == QLatin1String("bottom"))
+ orientation = Qt::InvertedLandscapeOrientation;
+
+ QWindowSystemInterface::handleScreenOrientationChange(QGuiApplication::primaryScreen(), orientation);
+}
+
diff --git a/src/plugins/generic/meego/qmeegointegration.h b/src/plugins/generic/meego/qmeegointegration.h
new file mode 100644
index 0000000000..969d3a1a75
--- /dev/null
+++ b/src/plugins/generic/meego/qmeegointegration.h
@@ -0,0 +1,72 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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$
+**
+****************************************************************************/
+
+#ifndef QMEEGOINTEGRATION_H
+#define QMEEGOINTEGRATION_H
+
+#include <QObject>
+#include <QDBusInterface>
+
+#include "contextkitproperty.h"
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QMeeGoIntegration : public QObject
+{
+ Q_OBJECT
+public:
+ QMeeGoIntegration();
+ ~QMeeGoIntegration();
+
+private Q_SLOTS:
+ void updateScreenOrientation(const QVariant& topEdgeValue);
+
+private:
+ QContextKitProperty screenTopEdge;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QMEEGOINTEGRATION_H
diff --git a/src/plugins/generic/touchscreen/main.cpp b/src/plugins/generic/touchscreen/main.cpp
index 8ecd924950..1f438ef1e7 100644
--- a/src/plugins/generic/touchscreen/main.cpp
+++ b/src/plugins/generic/touchscreen/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/generic/touchscreen/qtoucheventsenderqpa.cpp b/src/plugins/generic/touchscreen/qtoucheventsenderqpa.cpp
index ced72e1599..ac4a12c09a 100644
--- a/src/plugins/generic/touchscreen/qtoucheventsenderqpa.cpp
+++ b/src/plugins/generic/touchscreen/qtoucheventsenderqpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/generic/touchscreen/qtoucheventsenderqpa.h b/src/plugins/generic/touchscreen/qtoucheventsenderqpa.h
index 1eee273159..6b21dfe259 100644
--- a/src/plugins/generic/touchscreen/qtoucheventsenderqpa.h
+++ b/src/plugins/generic/touchscreen/qtoucheventsenderqpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/generic/touchscreen/qtouchscreen.cpp b/src/plugins/generic/touchscreen/qtouchscreen.cpp
index 8f37bab0c4..8e04c10b9f 100644
--- a/src/plugins/generic/touchscreen/qtouchscreen.cpp
+++ b/src/plugins/generic/touchscreen/qtouchscreen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/generic/touchscreen/qtouchscreen.h b/src/plugins/generic/touchscreen/qtouchscreen.h
index 546826c8db..33a1b0ad2f 100644
--- a/src/plugins/generic/touchscreen/qtouchscreen.h
+++ b/src/plugins/generic/touchscreen/qtouchscreen.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/generic/tslib/main.cpp b/src/plugins/generic/tslib/main.cpp
index 49bc60a615..1bbc618d6d 100644
--- a/src/plugins/generic/tslib/main.cpp
+++ b/src/plugins/generic/tslib/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/generic/tslib/qtslib.cpp b/src/plugins/generic/tslib/qtslib.cpp
index 5b08ec8a34..6fec309f9a 100644
--- a/src/plugins/generic/tslib/qtslib.cpp
+++ b/src/plugins/generic/tslib/qtslib.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/generic/tslib/qtslib.h b/src/plugins/generic/tslib/qtslib.h
index 5e595b5a0c..fcde9cd356 100644
--- a/src/plugins/generic/tslib/qtslib.h
+++ b/src/plugins/generic/tslib/qtslib.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/imageformats/gif/gif.pro b/src/plugins/imageformats/gif/gif.pro
index b8d260e43c..a4cde20c6f 100644
--- a/src/plugins/imageformats/gif/gif.pro
+++ b/src/plugins/imageformats/gif/gif.pro
@@ -7,5 +7,3 @@ SOURCES += $$PWD/main.cpp
DESTDIR = $$QT.gui.plugins/imageformats
target.path += $$[QT_INSTALL_PLUGINS]/imageformats
INSTALLS += target
-
-symbian:TARGET.UID3=0x2001E61A
diff --git a/src/plugins/imageformats/gif/main.cpp b/src/plugins/imageformats/gif/main.cpp
index b006d56fd7..0b6c99a9e4 100644
--- a/src/plugins/imageformats/gif/main.cpp
+++ b/src/plugins/imageformats/gif/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/imageformats/ico/ico.pro b/src/plugins/imageformats/ico/ico.pro
index e0109c6a32..c0972fe189 100644
--- a/src/plugins/imageformats/ico/ico.pro
+++ b/src/plugins/imageformats/ico/ico.pro
@@ -10,5 +10,3 @@ SOURCES += main.cpp \
DESTDIR = $$QT.gui.plugins/imageformats
target.path += $$[QT_INSTALL_PLUGINS]/imageformats
INSTALLS += target
-
-symbian:TARGET.UID3=0x2001E616
diff --git a/src/plugins/imageformats/ico/main.cpp b/src/plugins/imageformats/ico/main.cpp
index ac9ceb037c..5ebb24d06e 100644
--- a/src/plugins/imageformats/ico/main.cpp
+++ b/src/plugins/imageformats/ico/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/imageformats/ico/qicohandler.cpp b/src/plugins/imageformats/ico/qicohandler.cpp
index c05ee12671..a475656fe7 100644
--- a/src/plugins/imageformats/ico/qicohandler.cpp
+++ b/src/plugins/imageformats/ico/qicohandler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/imageformats/ico/qicohandler.h b/src/plugins/imageformats/ico/qicohandler.h
index d6bf97f319..0e90911d3f 100644
--- a/src/plugins/imageformats/ico/qicohandler.h
+++ b/src/plugins/imageformats/ico/qicohandler.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/imageformats/imageformats.pro b/src/plugins/imageformats/imageformats.pro
index 66dea099aa..2b05f2feec 100644
--- a/src/plugins/imageformats/imageformats.pro
+++ b/src/plugins/imageformats/imageformats.pro
@@ -2,6 +2,4 @@ TEMPLATE = subdirs
!contains(QT_CONFIG, no-jpeg):!contains(QT_CONFIG, jpeg):SUBDIRS += jpeg
!contains(QT_CONFIG, no-gif):!contains(QT_CONFIG, gif):SUBDIRS += gif
-!contains(QT_CONFIG, no-mng):!contains(QT_CONFIG, mng):SUBDIRS += mng
-!contains(QT_CONFIG, no-tiff):!contains(QT_CONFIG, tiff):SUBDIRS += tiff
!contains(QT_CONFIG, no-ico):SUBDIRS += ico
diff --git a/src/plugins/imageformats/jpeg/main.cpp b/src/plugins/imageformats/jpeg/main.cpp
index ed457ca7ec..beb3970af1 100644
--- a/src/plugins/imageformats/jpeg/main.cpp
+++ b/src/plugins/imageformats/jpeg/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/imageformats/mng/main.cpp b/src/plugins/imageformats/mng/main.cpp
deleted file mode 100644
index 9fed507ce4..0000000000
--- a/src/plugins/imageformats/mng/main.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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 <qimageiohandler.h>
-#include <qstringlist.h>
-
-#ifndef QT_NO_IMAGEFORMATPLUGIN
-
-#ifdef QT_NO_IMAGEFORMAT_MNG
-#undef QT_NO_IMAGEFORMAT_MNG
-#endif
-#include <qmnghandler_p.h>
-
-#include <qiodevice.h>
-#include <qbytearray.h>
-
-QT_BEGIN_NAMESPACE
-
-class QMngPlugin : public QImageIOPlugin
-{
- public:
- QStringList keys() const;
- Capabilities capabilities(QIODevice *device, const QByteArray &format) const;
- QImageIOHandler *create(QIODevice *device, const QByteArray &format = QByteArray()) const;
-};
-
-QStringList QMngPlugin::keys() const
-{
- return QStringList() << QLatin1String("mng");
-}
-
-QImageIOPlugin::Capabilities QMngPlugin::capabilities(QIODevice *device, const QByteArray &format) const
-{
- if (format == "mng")
- return Capabilities(CanRead);
- if (!format.isEmpty())
- return 0;
- if (!device->isOpen())
- return 0;
-
- Capabilities cap;
- if (device->isReadable() && QMngHandler::canRead(device))
- cap |= CanRead;
- return cap;
-}
-
-QImageIOHandler *QMngPlugin::create(QIODevice *device, const QByteArray &format) const
-{
- QMngHandler *hand = new QMngHandler();
- hand->setDevice(device);
- hand->setFormat(format);
- return hand;
-}
-
-Q_EXPORT_STATIC_PLUGIN(QMngPlugin)
-Q_EXPORT_PLUGIN2(qmng, QMngPlugin)
-
-QT_END_NAMESPACE
-
-#endif // !QT_NO_IMAGEFORMATPLUGIN
diff --git a/src/plugins/imageformats/mng/mng.pro b/src/plugins/imageformats/mng/mng.pro
deleted file mode 100644
index 72dc506cf9..0000000000
--- a/src/plugins/imageformats/mng/mng.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-TARGET = qmng
-load(qt_plugin)
-
-QTDIR_build:REQUIRES = "!contains(QT_CONFIG, no-mng)"
-
-symbian: {
- #Disable warnings in 3rdparty code due to unused variables and arguments
- QMAKE_CXXFLAGS.CW += -W nounused
- TARGET.UID3=0x2001E619
-}
-
-include(../../../gui/image/qmnghandler.pri)
-SOURCES += main.cpp
-
-DESTDIR = $$QT.gui.plugins/imageformats
-target.path += $$[QT_INSTALL_PLUGINS]/imageformats
-INSTALLS += target
diff --git a/src/plugins/imageformats/tiff/main.cpp b/src/plugins/imageformats/tiff/main.cpp
deleted file mode 100644
index 4bfd07b836..0000000000
--- a/src/plugins/imageformats/tiff/main.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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 <qimageiohandler.h>
-#include <qdebug.h>
-
-#ifndef QT_NO_IMAGEFORMATPLUGIN
-
-#ifdef QT_NO_IMAGEFORMAT_TIFF
-#undef QT_NO_IMAGEFORMAT_TIFF
-#endif
-#include <qtiffhandler_p.h>
-
-QT_BEGIN_NAMESPACE
-
-class QTiffPlugin : public QImageIOPlugin
-{
-public:
- Capabilities capabilities(QIODevice * device, const QByteArray & format) const;
- QImageIOHandler * create(QIODevice * device, const QByteArray & format = QByteArray()) const;
- QStringList keys() const;
-};
-
-QImageIOPlugin::Capabilities QTiffPlugin::capabilities(QIODevice *device, const QByteArray &format) const
-{
- if (format == "tiff" || format == "tif")
- return Capabilities(CanRead | CanWrite);
- if (!format.isEmpty())
- return 0;
- if (!device->isOpen())
- return 0;
-
- Capabilities cap;
- if (device->isReadable() && QTiffHandler::canRead(device))
- cap |= CanRead;
- if (device->isWritable())
- cap |= CanWrite;
- return cap;
-}
-
-QImageIOHandler* QTiffPlugin::create(QIODevice *device, const QByteArray &format) const
-{
- QImageIOHandler *tiffHandler = new QTiffHandler();
- tiffHandler->setDevice(device);
- tiffHandler->setFormat(format);
- return tiffHandler;
-}
-
-QStringList QTiffPlugin::keys() const
-{
- return QStringList() << QLatin1String("tiff") << QLatin1String("tif");
-}
-
-Q_EXPORT_STATIC_PLUGIN(QTiffPlugin)
-Q_EXPORT_PLUGIN2(qtiff, QTiffPlugin)
-
-QT_END_NAMESPACE
-
-#endif /* QT_NO_IMAGEFORMATPLUGIN */
diff --git a/src/plugins/imageformats/tiff/tiff.pro b/src/plugins/imageformats/tiff/tiff.pro
deleted file mode 100644
index 012c49ecf1..0000000000
--- a/src/plugins/imageformats/tiff/tiff.pro
+++ /dev/null
@@ -1,13 +0,0 @@
-TARGET = qtiff
-load(qt_plugin)
-
-QTDIR_build:REQUIRES = "!contains(QT_CONFIG, no-tiff)"
-
-include(../../../gui/image/qtiffhandler.pri)
-SOURCES += main.cpp
-
-DESTDIR = $$QT.gui.plugins/imageformats
-target.path += $$[QT_INSTALL_PLUGINS]/imageformats
-INSTALLS += target
-
-symbian:TARGET.UID3=0x2001E617
diff --git a/src/plugins/platforminputcontexts/ibus/main.cpp b/src/plugins/platforminputcontexts/ibus/main.cpp
index c93fef670a..0810b30ca6 100644
--- a/src/plugins/platforminputcontexts/ibus/main.cpp
+++ b/src/plugins/platforminputcontexts/ibus/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp
index ed858c8853..5840415ded 100644
--- a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp
+++ b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -88,7 +88,7 @@ QIBusPlatformInputContext::QIBusPlatformInputContext ()
connect(d->context, SIGNAL(CommitText(QDBusVariant)), SLOT(commitText(QDBusVariant)));
connect(d->context, SIGNAL(UpdatePreeditText(QDBusVariant,uint,bool)), this, SLOT(updatePreeditText(QDBusVariant,uint,bool)));
}
- QInputPanel *p = qApp->inputPanel();
+ QInputMethod *p = qApp->inputMethod();
connect(p, SIGNAL(inputItemChanged()), this, SLOT(inputItemChanged()));
connect(p, SIGNAL(cursorRectangleChanged()), this, SLOT(cursorRectChanged()));
}
@@ -103,12 +103,12 @@ bool QIBusPlatformInputContext::isValid() const
return d->valid;
}
-void QIBusPlatformInputContext::invokeAction(QInputPanel::Action a, int x)
+void QIBusPlatformInputContext::invokeAction(QInputMethod::Action a, int x)
{
if (!d->valid)
return;
- if (a == QInputPanel::Click)
+ if (a == QInputMethod::Click)
commit();
}
@@ -130,7 +130,7 @@ void QIBusPlatformInputContext::commit()
if (!d->valid)
return;
- QObject *input = qApp->inputPanel()->inputItem();
+ QObject *input = qApp->inputMethod()->inputItem();
if (!input) {
d->predit = QString();
return;
@@ -155,11 +155,11 @@ void QIBusPlatformInputContext::cursorRectChanged()
if (!d->valid)
return;
- QRect r = qApp->inputPanel()->cursorRectangle().toRect();
+ QRect r = qApp->inputMethod()->cursorRectangle().toRect();
if(!r.isValid())
return;
- QWindow *inputWindow = qApp->inputPanel()->inputWindow();
+ QWindow *inputWindow = qApp->inputMethod()->inputWindow();
if (!inputWindow)
return;
r.moveTopLeft(inputWindow->mapToGlobal(r.topLeft()));
@@ -173,7 +173,7 @@ void QIBusPlatformInputContext::inputItemChanged()
if (!d->valid)
return;
- QObject *input = qApp->inputPanel()->inputItem();
+ QObject *input = qApp->inputMethod()->inputItem();
if (debug)
qDebug() << "setFocusObject" << input;
if (input)
@@ -184,7 +184,7 @@ void QIBusPlatformInputContext::inputItemChanged()
void QIBusPlatformInputContext::commitText(const QDBusVariant &text)
{
- QObject *input = qApp->inputPanel()->inputItem();
+ QObject *input = qApp->inputMethod()->inputItem();
if (!input)
return;
@@ -206,7 +206,7 @@ void QIBusPlatformInputContext::commitText(const QDBusVariant &text)
void QIBusPlatformInputContext::updatePreeditText(const QDBusVariant &text, uint cursorPos, bool visible)
{
- QObject *input = qApp->inputPanel()->inputItem();
+ QObject *input = qApp->inputMethod()->inputItem();
if (!input)
return;
diff --git a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h
index 0f57bcd5a5..c5064663a1 100644
--- a/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h
+++ b/src/plugins/platforminputcontexts/ibus/qibusplatforminputcontext.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforminputcontexts/ibus/qibustypes.cpp b/src/plugins/platforminputcontexts/ibus/qibustypes.cpp
index 424ea02fe3..605a4c62b5 100644
--- a/src/plugins/platforminputcontexts/ibus/qibustypes.cpp
+++ b/src/plugins/platforminputcontexts/ibus/qibustypes.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforminputcontexts/ibus/qibustypes.h b/src/plugins/platforminputcontexts/ibus/qibustypes.h
index 1c9c33e159..712e7c10c0 100644
--- a/src/plugins/platforminputcontexts/ibus/qibustypes.h
+++ b/src/plugins/platforminputcontexts/ibus/qibustypes.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforminputcontexts/maliit/contextadaptor.cpp b/src/plugins/platforminputcontexts/maliit/contextadaptor.cpp
new file mode 100644
index 0000000000..ca490a3503
--- /dev/null
+++ b/src/plugins/platforminputcontexts/maliit/contextadaptor.cpp
@@ -0,0 +1,158 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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 "contextadaptor.h"
+#include <QtCore/QByteArray>
+#include <QtCore/QList>
+#include <QtCore/QMetaObject>
+#include <QtCore/QMap>
+#include <QtCore/QString>
+#include <QtCore/QStringList>
+#include <QtCore/QVariant>
+
+#include "qmaliitplatforminputcontext.h"
+
+/*
+ * Implementation of adaptor class Inputcontext1Adaptor
+ */
+
+Inputcontext1Adaptor::Inputcontext1Adaptor(QObject *parent)
+ : QDBusAbstractAdaptor(parent)
+{
+ // constructor
+ setAutoRelaySignals(true);
+}
+
+Inputcontext1Adaptor::~Inputcontext1Adaptor()
+{
+ // destructor
+}
+
+void Inputcontext1Adaptor::activationLostEvent()
+{
+ // handle method call com.meego.inputmethod.inputcontext1.activationLostEvent
+ QMetaObject::invokeMethod(parent(), "activationLostEvent");
+}
+
+void Inputcontext1Adaptor::commitString(const QString &in0, int in1, int in2, int in3)
+{
+ // handle method call com.meego.inputmethod.inputcontext1.commitString
+ QMetaObject::invokeMethod(parent(), "commitString", Q_ARG(QString, in0), Q_ARG(int, in1), Q_ARG(int, in2), Q_ARG(int, in3));
+}
+
+void Inputcontext1Adaptor::updatePreedit(const QDBusMessage &message)
+{
+ // handle method call com.meego.inputmethod.inputcontext1.updatePreedit
+ QMetaObject::invokeMethod(parent(), "updatePreedit", Q_ARG(QDBusMessage, message));
+}
+
+void Inputcontext1Adaptor::copy()
+{
+ // handle method call com.meego.inputmethod.inputcontext1.copy
+ QMetaObject::invokeMethod(parent(), "copy");
+}
+
+void Inputcontext1Adaptor::imInitiatedHide()
+{
+ // handle method call com.meego.inputmethod.inputcontext1.imInitiatedHide
+ QMetaObject::invokeMethod(parent(), "imInitiatedHide");
+}
+
+void Inputcontext1Adaptor::keyEvent(int in0, int in1, int in2, const QString &in3, bool in4, int in5, uchar in6)
+{
+ // handle method call com.meego.inputmethod.inputcontext1.keyEvent
+ QMetaObject::invokeMethod(parent(), "keyEvent", Q_ARG(int, in0), Q_ARG(int, in1), Q_ARG(int, in2), Q_ARG(QString, in3), Q_ARG(bool, in4), Q_ARG(int, in5), Q_ARG(uchar, in6));
+}
+
+void Inputcontext1Adaptor::paste()
+{
+ // handle method call com.meego.inputmethod.inputcontext1.paste
+ QMetaObject::invokeMethod(parent(), "paste");
+}
+
+bool Inputcontext1Adaptor::preeditRectangle(int &out1, int &out2, int &out3, int &out4)
+{
+ // handle method call com.meego.inputmethod.inputcontext1.preeditRectangle
+ return static_cast<QMaliitPlatformInputContext *>(parent())->preeditRectangle(out1, out2, out3, out4);
+}
+
+bool Inputcontext1Adaptor::selection(QString &out1)
+{
+ // handle method call com.meego.inputmethod.inputcontext1.selection
+ return static_cast<QMaliitPlatformInputContext *>(parent())->selection(out1);
+}
+
+void Inputcontext1Adaptor::setDetectableAutoRepeat(bool in0)
+{
+ // handle method call com.meego.inputmethod.inputcontext1.setDetectableAutoRepeat
+ QMetaObject::invokeMethod(parent(), "setDetectableAutoRepeat", Q_ARG(bool, in0));
+}
+
+void Inputcontext1Adaptor::setGlobalCorrectionEnabled(bool in0)
+{
+ // handle method call com.meego.inputmethod.inputcontext1.setGlobalCorrectionEnabled
+ QMetaObject::invokeMethod(parent(), "setGlobalCorrectionEnabled", Q_ARG(bool, in0));
+}
+
+void Inputcontext1Adaptor::setLanguage(const QString &in0)
+{
+ // handle method call com.meego.inputmethod.inputcontext1.setLanguage
+ QMetaObject::invokeMethod(parent(), "setLanguage", Q_ARG(QString, in0));
+}
+
+void Inputcontext1Adaptor::setRedirectKeys(bool in0)
+{
+ // handle method call com.meego.inputmethod.inputcontext1.setRedirectKeys
+ QMetaObject::invokeMethod(parent(), "setRedirectKeys", Q_ARG(bool, in0));
+}
+
+void Inputcontext1Adaptor::setSelection(int in0, int in1)
+{
+ // handle method call com.meego.inputmethod.inputcontext1.setSelection
+ QMetaObject::invokeMethod(parent(), "setSelection", Q_ARG(int, in0), Q_ARG(int, in1));
+}
+
+void Inputcontext1Adaptor::updateInputMethodArea(int in0, int in1, int in2, int in3)
+{
+ // handle method call com.meego.inputmethod.inputcontext1.updateInputMethodArea
+ QMetaObject::invokeMethod(parent(), "updateInputMethodArea", Q_ARG(int, in0), Q_ARG(int, in1), Q_ARG(int, in2), Q_ARG(int, in3));
+}
+
diff --git a/src/plugins/platforminputcontexts/maliit/contextadaptor.h b/src/plugins/platforminputcontexts/maliit/contextadaptor.h
new file mode 100644
index 0000000000..5e20ec3ee5
--- /dev/null
+++ b/src/plugins/platforminputcontexts/maliit/contextadaptor.h
@@ -0,0 +1,148 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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$
+**
+****************************************************************************/
+
+#ifndef CONTEXT_H_1318935171
+#define CONTEXT_H_1318935171
+
+#include <QtCore/QObject>
+#include <QtCore/QByteArray>
+#include <QtCore/QList>
+#include <QtCore/QMap>
+#include <QtCore/QString>
+#include <QtCore/QStringList>
+#include <QtCore/QVariant>
+#include <QtDBus/QtDBus>
+
+/*
+ * Adaptor class for interface com.meego.inputmethod.inputcontext1
+ */
+class Inputcontext1Adaptor: public QDBusAbstractAdaptor
+{
+ Q_OBJECT
+ Q_CLASSINFO("D-Bus Interface", "com.meego.inputmethod.inputcontext1")
+ Q_CLASSINFO("D-Bus Introspection", ""
+" <interface name=\"com.meego.inputmethod.inputcontext1\">\n"
+" <method name=\"activationLostEvent\"/>\n"
+" <method name=\"imInitiatedHide\"/>\n"
+" <method name=\"commitString\">\n"
+" <arg type=\"s\"/>\n"
+" <arg type=\"i\"/>\n"
+" <arg type=\"i\"/>\n"
+" <arg type=\"i\"/>\n"
+" </method>\n"
+" <method name=\"updatePreedit\">\n"
+" <arg type=\"s\"/>\n"
+" <arg type=\"a(iii)\"/>\n"
+" <arg type=\"i\"/>\n"
+" <arg type=\"i\"/>\n"
+" <arg type=\"i\"/>\n"
+" </method>\n"
+" <method name=\"keyEvent\">\n"
+" <arg type=\"i\"/>\n"
+" <arg type=\"i\"/>\n"
+" <arg type=\"i\"/>\n"
+" <arg type=\"s\"/>\n"
+" <arg type=\"b\"/>\n"
+" <arg type=\"i\"/>\n"
+" <arg type=\"y\"/>\n"
+" </method>\n"
+" <method name=\"updateInputMethodArea\">\n"
+" <arg type=\"i\"/>\n"
+" <arg type=\"i\"/>\n"
+" <arg type=\"i\"/>\n"
+" <arg type=\"i\"/>\n"
+" </method>\n"
+" <method name=\"setGlobalCorrectionEnabled\">\n"
+" <arg type=\"b\"/>\n"
+" </method>\n"
+" <method name=\"preeditRectangle\">\n"
+" <arg direction=\"out\" type=\"b\"/>\n"
+" <arg direction=\"out\" type=\"i\"/>\n"
+" <arg direction=\"out\" type=\"i\"/>\n"
+" <arg direction=\"out\" type=\"i\"/>\n"
+" <arg direction=\"out\" type=\"i\"/>\n"
+" </method>\n"
+" <method name=\"copy\"/>\n"
+" <method name=\"paste\"/>\n"
+" <method name=\"setRedirectKeys\">\n"
+" <arg type=\"b\"/>\n"
+" </method>\n"
+" <method name=\"setDetectableAutoRepeat\">\n"
+" <arg type=\"b\"/>\n"
+" </method>\n"
+" <method name=\"setSelection\">\n"
+" <arg type=\"i\"/>\n"
+" <arg type=\"i\"/>\n"
+" </method>\n"
+" <method name=\"selection\">\n"
+" <arg direction=\"out\" type=\"b\"/>\n"
+" <arg direction=\"out\" type=\"s\"/>\n"
+" </method>\n"
+" <method name=\"setLanguage\">\n"
+" <arg type=\"s\"/>\n"
+" </method>\n"
+" </interface>\n"
+ "")
+public:
+ Inputcontext1Adaptor(QObject *parent);
+ virtual ~Inputcontext1Adaptor();
+
+public: // PROPERTIES
+public Q_SLOTS: // METHODS
+ void activationLostEvent();
+ void commitString(const QString &in0, int in1, int in2, int in3);
+ void updatePreedit(const QDBusMessage &message);
+ void copy();
+ void imInitiatedHide();
+ void keyEvent(int in0, int in1, int in2, const QString &in3, bool in4, int in5, uchar in6);
+ void paste();
+ bool preeditRectangle(int &out1, int &out2, int &out3, int &out4);
+ bool selection(QString &out1);
+ void setDetectableAutoRepeat(bool in0);
+ void setGlobalCorrectionEnabled(bool in0);
+ void setLanguage(const QString &in0);
+ void setRedirectKeys(bool in0);
+ void setSelection(int in0, int in1);
+ void updateInputMethodArea(int in0, int in1, int in2, int in3);
+Q_SIGNALS: // SIGNALS
+};
+
+#endif
diff --git a/src/plugins/platforminputcontexts/maliit/main.cpp b/src/plugins/platforminputcontexts/maliit/main.cpp
new file mode 100644
index 0000000000..2b42befc67
--- /dev/null
+++ b/src/plugins/platforminputcontexts/maliit/main.cpp
@@ -0,0 +1,71 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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/qplatforminputcontextplugin_qpa_p.h>
+#include <QtCore/QStringList>
+#include "qmaliitplatforminputcontext.h"
+
+QT_BEGIN_NAMESPACE
+
+class QMaliitPlatformInputContextPlugin : public QPlatformInputContextPlugin
+{
+public:
+ QStringList keys() const;
+ QPlatformInputContext *create(const QString&, const QStringList&);
+};
+
+QStringList QMaliitPlatformInputContextPlugin::keys() const
+{
+ return QStringList(QStringLiteral("maliit"));
+}
+
+QPlatformInputContext *QMaliitPlatformInputContextPlugin::create(const QString& system, const QStringList& paramList)
+{
+ Q_UNUSED(paramList);
+
+ if (system.compare(system, QStringLiteral("maliit"), Qt::CaseInsensitive) == 0)
+ return new QMaliitPlatformInputContext;
+ return 0;
+}
+
+Q_EXPORT_PLUGIN2(maliitplatforminputcontextplugin, QMaliitPlatformInputContextPlugin)
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforminputcontexts/maliit/maliit.pro b/src/plugins/platforminputcontexts/maliit/maliit.pro
new file mode 100644
index 0000000000..a20e766580
--- /dev/null
+++ b/src/plugins/platforminputcontexts/maliit/maliit.pro
@@ -0,0 +1,19 @@
+TARGET = maliitplatforminputcontextplugin
+load(qt_plugin)
+
+QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforminputcontexts
+
+QT += dbus platformsupport-private
+SOURCES += $$PWD/qmaliitplatforminputcontext.cpp \
+ $$PWD/serverproxy.cpp \
+ $$PWD/serveraddressproxy.cpp \
+ $$PWD/contextadaptor.cpp \
+ $$PWD/main.cpp
+
+HEADERS += $$PWD/qmaliitplatforminputcontext.h \
+ $$PWD/serverproxy.h \
+ $$PWD/serveraddressproxy.h \
+ $$PWD/contextadaptor.h
+
+target.path += $$[QT_INSTALL_PLUGINS]/platforminputcontexts
+INSTALLS += target
diff --git a/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.cpp b/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.cpp
new file mode 100644
index 0000000000..bd3b914f15
--- /dev/null
+++ b/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.cpp
@@ -0,0 +1,599 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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 "qmaliitplatforminputcontext.h"
+
+#include <QtDebug>
+#include <QTextCharFormat>
+#include <QGuiApplication>
+#include <qwindow.h>
+#include <qevent.h>
+#include <qscreen.h>
+
+#include "serveraddressproxy.h"
+#include "serverproxy.h"
+#include "contextadaptor.h"
+
+#include <sys/types.h>
+#include <signal.h>
+
+#include <QtDBus>
+
+QT_BEGIN_NAMESPACE
+
+enum { debug = 0 };
+
+enum InputPanelVisibility {
+ InputPanelHidden,
+ InputPanelShowRequested,
+ InputPanelShown
+};
+
+enum MaliitOrientationAngle {
+ Angle0 = 0,
+ Angle90 = 90,
+ Angle180 = 180,
+ Angle270 = 270
+};
+
+static int orientationAngle(Qt::ScreenOrientation orientation)
+{
+ switch (orientation) {
+ case Qt::PrimaryOrientation: // Urgh.
+ case Qt::PortraitOrientation:
+ return Angle270;
+ case Qt::LandscapeOrientation:
+ return Angle0;
+ case Qt::InvertedPortraitOrientation:
+ return Angle90;
+ case Qt::InvertedLandscapeOrientation:
+ return Angle180;
+ }
+ return Angle0;
+}
+
+// From MTF:
+//! Content type for text entries. Used at least with MTextEdit
+enum TextContentType {
+ //! all characters allowed
+ FreeTextContentType,
+
+ //! only integer numbers allowed
+ NumberContentType,
+
+ //! allows numbers and certain other characters used in phone numbers
+ PhoneNumberContentType,
+
+ //! allows only characters permitted in email address
+ EmailContentType,
+
+ //! allows only character permitted in URL address
+ UrlContentType,
+
+ //! allows content with user defined format
+ CustomContentType
+};
+static TextContentType contentTypeFromHints(Qt::InputMethodHints hints)
+{
+ TextContentType type = FreeTextContentType;
+ hints &= Qt::ImhExclusiveInputMask;
+
+ if (hints == Qt::ImhFormattedNumbersOnly || hints == Qt::ImhDigitsOnly)
+ type = NumberContentType;
+ else if (hints == Qt::ImhDialableCharactersOnly)
+ type = PhoneNumberContentType;
+ else if (hints == Qt::ImhEmailCharactersOnly)
+ type = EmailContentType;
+ else if (hints == Qt::ImhUrlCharactersOnly)
+ type = UrlContentType;
+
+ return type;
+}
+
+/// From Maliit's namespace.h
+enum MaliitEventRequestType {
+ EventRequestBoth, //!< Both a Qt::KeyEvent and a signal
+ EventRequestSignalOnly, //!< Only a signal
+ EventRequestEventOnly //!< Only a Qt::KeyEvent
+};
+
+static QString maliitServerAddress()
+{
+ org::maliit::Server::Address serverAddress(QStringLiteral("org.maliit.server"), QStringLiteral("/org/maliit/server/address"), QDBusConnection::sessionBus());
+
+ QString address(serverAddress.address());
+
+ // Fallback to old socket when org.maliit.server service is not available
+ if (address.isEmpty())
+ return QStringLiteral("unix:path=/tmp/meego-im-uiserver/imserver_dbus");
+
+ return address;
+}
+
+class QMaliitPlatformInputContextPrivate
+{
+public:
+ QMaliitPlatformInputContextPrivate(QMaliitPlatformInputContext *qq);
+ ~QMaliitPlatformInputContextPrivate()
+ {
+ delete adaptor;
+ delete server;
+ }
+
+ void sendStateUpdate(bool focusChanged = false);
+
+ QDBusConnection connection;
+ ComMeegoInputmethodUiserver1Interface *server;
+ Inputcontext1Adaptor *adaptor;
+
+ QMap<QString, QVariant> imState;
+
+ InputPanelVisibility visibility;
+
+ bool valid;
+ bool active;
+ bool correctionEnabled;
+ QRect keyboardRect;
+ QString preedit;
+ QWeakPointer<QWindow> window;
+ QMaliitPlatformInputContext *q;
+};
+
+
+QMaliitPlatformInputContext::QMaliitPlatformInputContext()
+ : d(new QMaliitPlatformInputContextPrivate(this))
+{
+ if (debug)
+ qDebug() << "QMaliitPlatformInputContext::QMaliitPlatformInputContext()";
+ QInputMethod *im = qApp->inputMethod();
+ connect(im, SIGNAL(inputItemChanged()), this, SLOT(inputItemChanged()));
+}
+
+QMaliitPlatformInputContext::~QMaliitPlatformInputContext(void)
+{
+ delete d;
+}
+
+bool QMaliitPlatformInputContext::isValid() const
+{
+ return d->valid;
+}
+
+void QMaliitPlatformInputContext::invokeAction(QInputMethod::Action action, int x)
+{
+ QObject *input = qApp->inputMethod()->inputItem();
+ if (!input)
+ return;
+
+ if (action == QInputMethod::Click) {
+ if (x < 0 || x >= d->preedit.length()) {
+ reset();
+ return;
+ }
+
+ d->imState["preeditClickPos"] = x;
+ d->sendStateUpdate();
+ // The first argument is the mouse pos and the second is the
+ // preedit rectangle. Both are unused on the server side.
+ d->server->mouseClickedOnPreedit(0, 0, 0, 0, 0, 0);
+ } else {
+ QPlatformInputContext::invokeAction(action, x);
+ }
+}
+
+void QMaliitPlatformInputContext::reset()
+{
+ QObject *input = qApp->inputMethod()->inputItem();
+
+ const bool hadPreedit = !d->preedit.isEmpty();
+ if (hadPreedit && input) {
+ // ### selection
+ QInputMethodEvent event;
+ event.setCommitString(d->preedit);
+ QGuiApplication::sendEvent(input, &event);
+ d->preedit.clear();
+ }
+
+ QDBusPendingReply<void> reply = d->server->reset();
+ if (hadPreedit)
+ reply.waitForFinished();
+}
+
+void QMaliitPlatformInputContext::update(Qt::InputMethodQueries queries)
+{
+ QInputMethod *method = qApp->inputMethod();
+ QObject *input = method->inputItem();
+ if (!input)
+ return;
+
+ QInputMethodQueryEvent query(queries);
+ QGuiApplication::sendEvent(input, &query);
+
+ if (queries & Qt::ImSurroundingText)
+ d->imState["surroundingText"] = query.value(Qt::ImSurroundingText);
+ if (queries & Qt::ImCursorPosition)
+ d->imState["cursorPosition"] = query.value(Qt::ImCursorPosition);
+ if (queries & Qt::ImAnchorPosition)
+ d->imState["anchorPosition"] = query.value(Qt::ImAnchorPosition);
+ if (queries & Qt::ImCursorRectangle) {
+ QRect rect = query.value(Qt::ImCursorRectangle).toRect();
+ rect = method->inputItemTransform().mapRect(rect);
+ QWindow *window = method->inputWindow();
+ if (window)
+ d->imState["cursorRectangle"] = QRect(window->mapToGlobal(rect.topLeft()), rect.size());
+ }
+
+ if (queries & Qt::ImCurrentSelection)
+ d->imState["hasSelection"] = !query.value(Qt::ImCurrentSelection).toString().isEmpty();
+
+ if (queries & Qt::ImHints) {
+ Qt::InputMethodHints hints = Qt::InputMethodHints(query.value(Qt::ImHints).toUInt());
+
+ d->imState["predictionEnabled"] = !(hints & Qt::ImhNoPredictiveText);
+ d->imState["autocapitalizationEnabled"] = !(hints & Qt::ImhNoAutoUppercase);
+ d->imState["hiddenText"] = (hints & Qt::ImhHiddenText) != 0;
+
+ d->imState["contentType"] = contentTypeFromHints(hints);
+ }
+
+ d->sendStateUpdate(/*focusChanged*/true);
+}
+
+QRectF QMaliitPlatformInputContext::keyboardRect() const
+{
+ return d->keyboardRect;
+}
+
+void QMaliitPlatformInputContext::activationLostEvent()
+{
+ d->active = false;
+ d->visibility = InputPanelHidden;
+}
+
+void QMaliitPlatformInputContext::commitString(const QString &string, int replacementStart, int replacementLength, int cursorPos)
+{
+ QObject *input = qApp->inputMethod()->inputItem();
+ if (!input)
+ return;
+
+ d->preedit.clear();
+
+ if (debug)
+ qWarning() << "CommitString" << string;
+ // ### start/cursorPos
+ QInputMethodEvent event;
+ event.setCommitString(string, replacementStart, replacementLength);
+ QCoreApplication::sendEvent(input, &event);
+}
+
+void QMaliitPlatformInputContext::updatePreedit(const QDBusMessage &message)
+{
+ QObject *input = qApp->inputMethod()->inputItem();
+ if (!input)
+ return;
+
+ QList<QVariant> arguments = message.arguments();
+ if (arguments.count() != 5) {
+ qWarning() << "QMaliitPlatformInputContext::updatePreedit: Received message from input method server with wrong parameters.";
+ return;
+ }
+
+ d->preedit = arguments[0].toString();
+
+ QList<QInputMethodEvent::Attribute> attributes;
+
+ const QDBusArgument formats = arguments[1].value<QDBusArgument>();
+ formats.beginArray();
+ while (!formats.atEnd()) {
+ formats.beginStructure();
+ int start, length, preeditFace;
+ formats >> start >> length >> preeditFace;
+ formats.endStructure();
+
+ QTextCharFormat format;
+
+ enum PreeditFace {
+ PreeditDefault,
+ PreeditNoCandidates,
+ PreeditKeyPress, //!< Used for displaying the hwkbd key just pressed
+ PreeditUnconvertible, //!< Inactive preedit region, not clickable
+ PreeditActive, //!< Preedit region with active suggestions
+
+ };
+ switch (PreeditFace(preeditFace)) {
+ case PreeditDefault:
+ case PreeditKeyPress:
+ format.setUnderlineStyle(QTextCharFormat::SingleUnderline);
+ format.setUnderlineColor(QColor(0, 0, 0));
+ break;
+ case PreeditNoCandidates:
+ format.setUnderlineStyle(QTextCharFormat::SingleUnderline);
+ format.setUnderlineColor(QColor(255, 0, 0));
+ break;
+ case PreeditUnconvertible:
+ format.setForeground(QBrush(QColor(128, 128, 128)));
+ break;
+ case PreeditActive:
+ format.setForeground(QBrush(QColor(153, 50, 204)));
+ format.setFontWeight(QFont::Bold);
+ break;
+ default:
+ break;
+ }
+
+ attributes << QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, start, length, format);
+ }
+ formats.endArray();
+
+ int replacementStart = arguments[2].toInt();
+ int replacementLength = arguments[3].toInt();
+ int cursorPos = arguments[4].toInt();
+
+ if (debug)
+ qWarning() << "updatePreedit" << d->preedit << replacementStart << replacementLength << cursorPos;
+
+ if (cursorPos >= 0)
+ attributes << QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, cursorPos, 1, QVariant());
+
+ QInputMethodEvent event(d->preedit, attributes);
+ if (replacementStart || replacementLength)
+ event.setCommitString(QString(), replacementStart, replacementLength);
+ QCoreApplication::sendEvent(input, &event);
+}
+
+void QMaliitPlatformInputContext::copy()
+{
+ // Not supported at the moment.
+}
+
+void QMaliitPlatformInputContext::imInitiatedHide()
+{
+ d->visibility = InputPanelHidden;
+ emitInputPanelVisibleChanged();
+ // ### clear focus
+}
+
+void QMaliitPlatformInputContext::keyEvent(int type, int key, int modifiers, const QString &text,
+ bool autoRepeat, int count, uchar requestType_)
+{
+ MaliitEventRequestType requestType = MaliitEventRequestType(requestType_);
+ if (requestType == EventRequestSignalOnly) {
+ qWarning() << "Maliit: Signal emitted key events are not supported.";
+ return;
+ }
+
+ // HACK: This code relies on QEvent::Type for key events and modifiers to be binary compatible between
+ // Qt 4 and 5.
+ QEvent::Type eventType = static_cast<QEvent::Type>(type);
+ if (type != QEvent::KeyPress && type != QEvent::KeyRelease) {
+ qWarning() << "Maliit: Unknown key event type" << type;
+ return;
+ }
+
+ QKeyEvent event(eventType, key, static_cast<Qt::KeyboardModifiers>(modifiers),
+ text, autoRepeat, count);
+ if (d->window)
+ QCoreApplication::sendEvent(d->window.data(), &event);
+}
+
+void QMaliitPlatformInputContext::paste()
+{
+ // Not supported at the moment.
+}
+
+bool QMaliitPlatformInputContext::preeditRectangle(int &x, int &y, int &width, int &height)
+{
+ // ###
+ QRect r = qApp->inputMethod()->cursorRectangle().toRect();
+ if (!r.isValid())
+ return false;
+ x = r.x();
+ y = r.y();
+ width = r.width();
+ height = r.height();
+ return true;
+}
+
+bool QMaliitPlatformInputContext::selection(QString &selection)
+{
+ selection.clear();
+
+ QObject *input = qApp->inputMethod()->inputItem();
+ if (!input)
+ return false;
+
+ QInputMethodQueryEvent query(Qt::ImCurrentSelection);
+ QGuiApplication::sendEvent(input, &query);
+ QVariant value = query.value(Qt::ImCurrentSelection);
+ if (!value.isValid())
+ return false;
+
+ selection = value.toString();
+ return true;
+}
+
+void QMaliitPlatformInputContext::setDetectableAutoRepeat(bool)
+{
+ // Not supported.
+}
+
+void QMaliitPlatformInputContext::setGlobalCorrectionEnabled(bool enable)
+{
+ d->correctionEnabled = enable;
+}
+
+void QMaliitPlatformInputContext::setLanguage(const QString &)
+{
+ // Unused at the moment.
+}
+
+void QMaliitPlatformInputContext::setRedirectKeys(bool)
+{
+ // Not supported.
+}
+
+void QMaliitPlatformInputContext::setSelection(int start, int length)
+{
+ QObject *input = qApp->inputMethod()->inputItem();
+ if (!input)
+ return;
+
+ QList<QInputMethodEvent::Attribute> attributes;
+ attributes << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, start, length, QVariant());
+ QInputMethodEvent event(QString(), attributes);
+ QGuiApplication::sendEvent(input, &event);
+}
+
+void QMaliitPlatformInputContext::updateInputMethodArea(int x, int y, int width, int height)
+{
+ d->keyboardRect = QRect(x, y, width, height);
+ emitKeyboardRectChanged();
+}
+
+void QMaliitPlatformInputContext::updateServerWindowOrientation(Qt::ScreenOrientation orientation)
+{
+ d->server->appOrientationChanged(orientationAngle(orientation));
+}
+
+void QMaliitPlatformInputContext::inputItemChanged()
+{
+ if (!d->valid)
+ return;
+
+ QInputMethod *method = qApp->inputMethod();
+ QObject *input = method->inputItem();
+ QWindow *window = method->inputWindow();
+ if (window != d->window.data()) {
+ if (d->window)
+ disconnect(d->window.data(), SIGNAL(contentOrientationChanged(Qt::ScreenOrientation)),
+ this, SLOT(updateServerWindowOrientation(Qt::ScreenOrientation)));
+ d->window = window;
+ if (d->window)
+ connect(d->window.data(), SIGNAL(contentOrientationChanged(Qt::ScreenOrientation)),
+ this, SLOT(updateServerWindowOrientation(Qt::ScreenOrientation)));
+ }
+
+ d->imState["focusState"] = input != 0;
+ if (input) {
+ if (window)
+ d->imState["winId"] = static_cast<qulonglong>(window->winId());
+
+ if (!d->active) {
+ d->active = true;
+ d->server->activateContext();
+
+ if (window)
+ d->server->appOrientationChanged(orientationAngle(window->contentOrientation()));
+ }
+ }
+ d->sendStateUpdate(/*focusChanged*/true);
+ if (input && window && d->visibility == InputPanelShowRequested)
+ showInputPanel();
+}
+
+void QMaliitPlatformInputContext::showInputPanel()
+{
+ if (debug)
+ qDebug() << "showInputPanel";
+
+ QInputMethod *method = qApp->inputMethod();
+ if (!method->inputItem() || !method->inputWindow())
+ d->visibility = InputPanelShowRequested;
+ else {
+ d->server->showInputMethod();
+ d->visibility = InputPanelShown;
+ emitInputPanelVisibleChanged();
+ }
+}
+
+void QMaliitPlatformInputContext::hideInputPanel()
+{
+ d->server->hideInputMethod();
+ d->visibility = InputPanelHidden;
+ emitInputPanelVisibleChanged();
+}
+
+bool QMaliitPlatformInputContext::isInputPanelVisible() const
+{
+ return d->visibility == InputPanelShown;
+}
+
+QMaliitPlatformInputContextPrivate::QMaliitPlatformInputContextPrivate(QMaliitPlatformInputContext* qq)
+ : connection(QDBusConnection::connectToPeer(maliitServerAddress(), QLatin1String("MaliitIMProxy")))
+ , server(0)
+ , adaptor(0)
+ , visibility(InputPanelHidden)
+ , valid(false)
+ , active(false)
+ , correctionEnabled(false)
+ , q(qq)
+{
+ if (!connection.isConnected()) {
+ qDebug("QMaliitPlatformInputContext: not connected.");
+ return;
+ }
+
+ server = new ComMeegoInputmethodUiserver1Interface(QStringLiteral(""), QStringLiteral("/com/meego/inputmethod/uiserver1"), connection);
+ adaptor = new Inputcontext1Adaptor(qq);
+ connection.registerObject("/com/meego/inputmethod/inputcontext", qq);
+
+ enum InputMethodMode {
+ //! Normal mode allows to use preedit and error correction
+ InputMethodModeNormal,
+
+ //! Virtual keyboard sends QKeyEvent for every key press or release
+ InputMethodModeDirect,
+
+ //! Used with proxy widget
+ InputMethodModeProxy
+ };
+ imState["inputMethodMode"] = InputMethodModeNormal;
+
+ imState["correctionEnabled"] = true;
+
+ valid = true;
+}
+
+void QMaliitPlatformInputContextPrivate::sendStateUpdate(bool focusChanged)
+{
+ server->updateWidgetInformation(imState, focusChanged);
+}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.h b/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.h
new file mode 100644
index 0000000000..3760885641
--- /dev/null
+++ b/src/plugins/platforminputcontexts/maliit/qmaliitplatforminputcontext.h
@@ -0,0 +1,97 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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$
+**
+****************************************************************************/
+#ifndef QMALIITPLATFORMINPUTCONTEXT_H
+#define QMALIITPLATFORMINPUTCONTEXT_H
+
+#include <QPlatformInputContext>
+#include <QDBusArgument>
+
+QT_BEGIN_NAMESPACE
+
+class QMaliitPlatformInputContextPrivate;
+class QDBusVariant;
+class QDBusMessage;
+
+class QMaliitPlatformInputContext : public QPlatformInputContext
+{
+ Q_OBJECT
+public:
+ QMaliitPlatformInputContext();
+ ~QMaliitPlatformInputContext();
+
+ bool isValid() const;
+
+ void invokeAction(QInputPanel::Action action, int x);
+ void reset(void);
+ void update(Qt::InputMethodQueries);
+ virtual QRectF keyboardRect() const;
+
+ virtual void showInputPanel();
+ virtual void hideInputPanel();
+ virtual bool isInputPanelVisible() const;
+
+public Q_SLOTS:
+ void inputItemChanged();
+
+ void activationLostEvent();
+ void commitString(const QString &in0, int in1, int in2, int in3);
+ void updatePreedit(const QDBusMessage &message);
+ void copy();
+ void imInitiatedHide();
+ void keyEvent(int type, int key, int modifiers, const QString &text, bool autoRepeat, int count, uchar requestType_);
+ void paste();
+ bool preeditRectangle(int &x, int &y, int &width, int &height);
+ bool selection(QString &selection);
+ void setDetectableAutoRepeat(bool in0);
+ void setGlobalCorrectionEnabled(bool enable);
+ void setLanguage(const QString &);
+ void setRedirectKeys(bool );
+ void setSelection(int start, int length);
+ void updateInputMethodArea(int x, int y, int width, int height);
+ void updateServerWindowOrientation(Qt::ScreenOrientation orientation);
+
+private:
+ QMaliitPlatformInputContextPrivate *d;
+};
+
+QT_END_NAMESPACE
+
+#endif
diff --git a/src/plugins/platforminputcontexts/maliit/serveraddressproxy.cpp b/src/plugins/platforminputcontexts/maliit/serveraddressproxy.cpp
new file mode 100644
index 0000000000..0f07cb6016
--- /dev/null
+++ b/src/plugins/platforminputcontexts/maliit/serveraddressproxy.cpp
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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 "serveraddressproxy.h"
+
+/*
+ * Implementation of interface class OrgMaliitServerAddressInterface
+ */
+
+OrgMaliitServerAddressInterface::OrgMaliitServerAddressInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent)
+ : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent)
+{
+}
+
+OrgMaliitServerAddressInterface::~OrgMaliitServerAddressInterface()
+{
+}
+
diff --git a/src/plugins/platforminputcontexts/maliit/serveraddressproxy.h b/src/plugins/platforminputcontexts/maliit/serveraddressproxy.h
new file mode 100644
index 0000000000..91773f7150
--- /dev/null
+++ b/src/plugins/platforminputcontexts/maliit/serveraddressproxy.h
@@ -0,0 +1,84 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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$
+**
+****************************************************************************/
+
+#ifndef SERVERADDRESSPROXY_H
+#define SERVERADDRESSPROXY_H
+
+#include <QtCore/QObject>
+#include <QtCore/QByteArray>
+#include <QtCore/QList>
+#include <QtCore/QMap>
+#include <QtCore/QString>
+#include <QtCore/QStringList>
+#include <QtCore/QVariant>
+#include <QtDBus/QtDBus>
+
+/*
+ * Proxy class for interface org.maliit.Server.Address
+ */
+class OrgMaliitServerAddressInterface: public QDBusAbstractInterface
+{
+ Q_OBJECT
+public:
+ static inline const char *staticInterfaceName()
+ { return "org.maliit.Server.Address"; }
+
+public:
+ OrgMaliitServerAddressInterface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = 0);
+
+ ~OrgMaliitServerAddressInterface();
+
+ Q_PROPERTY(QString address READ address)
+ inline QString address() const
+ { return qvariant_cast< QString >(property("address")); }
+
+public Q_SLOTS: // METHODS
+Q_SIGNALS: // SIGNALS
+};
+
+namespace org {
+ namespace maliit {
+ namespace Server {
+ typedef ::OrgMaliitServerAddressInterface Address;
+ }
+ }
+}
+#endif
diff --git a/src/plugins/platforminputcontexts/maliit/serverproxy.cpp b/src/plugins/platforminputcontexts/maliit/serverproxy.cpp
new file mode 100644
index 0000000000..2f5c48da2a
--- /dev/null
+++ b/src/plugins/platforminputcontexts/maliit/serverproxy.cpp
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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 "serverproxy.h"
+
+/*
+ * Implementation of interface class ComMeegoInputmethodUiserver1Interface
+ */
+
+ComMeegoInputmethodUiserver1Interface::ComMeegoInputmethodUiserver1Interface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent)
+ : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent)
+{
+}
+
+ComMeegoInputmethodUiserver1Interface::~ComMeegoInputmethodUiserver1Interface()
+{
+}
+
diff --git a/src/plugins/platforminputcontexts/maliit/serverproxy.h b/src/plugins/platforminputcontexts/maliit/serverproxy.h
new file mode 100644
index 0000000000..8e0b88641b
--- /dev/null
+++ b/src/plugins/platforminputcontexts/maliit/serverproxy.h
@@ -0,0 +1,166 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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$
+**
+****************************************************************************/
+
+#ifndef SERVER_H_1318935108
+#define SERVER_H_1318935108
+
+#include <QtCore/QObject>
+#include <QtCore/QByteArray>
+#include <QtCore/QList>
+#include <QtCore/QMap>
+#include <QtCore/QString>
+#include <QtCore/QStringList>
+#include <QtCore/QVariant>
+#include <QtDBus/QtDBus>
+
+/*
+ * Proxy class for interface com.meego.inputmethod.uiserver1
+ */
+class ComMeegoInputmethodUiserver1Interface: public QDBusAbstractInterface
+{
+ Q_OBJECT
+public:
+ static inline const char *staticInterfaceName()
+ { return "com.meego.inputmethod.uiserver1"; }
+
+public:
+ ComMeegoInputmethodUiserver1Interface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = 0);
+
+ ~ComMeegoInputmethodUiserver1Interface();
+
+public Q_SLOTS: // METHODS
+ inline QDBusPendingReply<> activateContext()
+ {
+ QList<QVariant> argumentList;
+ return asyncCallWithArgumentList(QLatin1String("activateContext"), argumentList);
+ }
+
+ inline QDBusPendingReply<> appOrientationAboutToChange(int in0)
+ {
+ QList<QVariant> argumentList;
+ argumentList << QVariant::fromValue(in0);
+ return asyncCallWithArgumentList(QLatin1String("appOrientationAboutToChange"), argumentList);
+ }
+
+ inline QDBusPendingReply<> appOrientationChanged(int in0)
+ {
+ QList<QVariant> argumentList;
+ argumentList << QVariant::fromValue(in0);
+ return asyncCallWithArgumentList(QLatin1String("appOrientationChanged"), argumentList);
+ }
+
+ inline QDBusPendingReply<> hideInputMethod()
+ {
+ QList<QVariant> argumentList;
+ return asyncCallWithArgumentList(QLatin1String("hideInputMethod"), argumentList);
+ }
+
+ inline QDBusPendingReply<> mouseClickedOnPreedit(int in0, int in1, int in2, int in3, int in4, int in5)
+ {
+ QList<QVariant> argumentList;
+ argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4) << QVariant::fromValue(in5);
+ return asyncCallWithArgumentList(QLatin1String("mouseClickedOnPreedit"), argumentList);
+ }
+
+ inline QDBusPendingReply<> processKeyEvent(int in0, int in1, int in2, const QString &in3, bool in4, int in5, uint in6, uint in7, uint in8)
+ {
+ QList<QVariant> argumentList;
+ argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4) << QVariant::fromValue(in5) << QVariant::fromValue(in6) << QVariant::fromValue(in7) << QVariant::fromValue(in8);
+ return asyncCallWithArgumentList(QLatin1String("processKeyEvent"), argumentList);
+ }
+
+ inline QDBusPendingReply<> setPreedit(const QString &in0, int in1)
+ {
+ QList<QVariant> argumentList;
+ argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
+ return asyncCallWithArgumentList(QLatin1String("setPreedit"), argumentList);
+ }
+
+ inline QDBusPendingReply<> showInputMethod()
+ {
+ QList<QVariant> argumentList;
+ return asyncCallWithArgumentList(QLatin1String("showInputMethod"), argumentList);
+ }
+
+ inline QDBusPendingReply<> updateWidgetInformation(const QMap<QString, QVariant> &stateInformation, bool focusChanged)
+ {
+ QDBusMessage msg = QDBusMessage::createMethodCall(service(), path(), interface(), "updateWidgetInformation");
+
+ QDBusArgument map;
+ map.beginMap(QVariant::String, qMetaTypeId<QDBusVariant>());
+ for (QMap<QString, QVariant>::ConstIterator it = stateInformation.constBegin(), end = stateInformation.constEnd();
+ it != end; ++it) {
+ map.beginMapEntry();
+ map << it.key();
+ map << QDBusVariant(it.value());
+ map.endMapEntry();
+ }
+ map.endMap();
+
+ QList<QVariant> args;
+ args << QVariant::fromValue(map) << QVariant(focusChanged);
+ msg.setArguments(args);
+ return connection().asyncCall(msg);
+ }
+
+ inline QDBusPendingReply<> reset()
+ {
+ return asyncCall(QLatin1String("reset"));
+ }
+
+ inline QDBusPendingReply<> setCopyPasteState(bool in0, bool in1)
+ {
+ QList<QVariant> argumentList;
+ argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
+ return asyncCallWithArgumentList(QLatin1String("setCopyPasteState"), argumentList);
+ }
+
+Q_SIGNALS: // SIGNALS
+};
+
+namespace com {
+ namespace meego {
+ namespace inputmethod {
+ typedef ::ComMeegoInputmethodUiserver1Interface uiserver1;
+ }
+ }
+}
+#endif
diff --git a/src/plugins/platforminputcontexts/meego/contextadaptor.cpp b/src/plugins/platforminputcontexts/meego/contextadaptor.cpp
deleted file mode 100644
index da5920c396..0000000000
--- a/src/plugins/platforminputcontexts/meego/contextadaptor.cpp
+++ /dev/null
@@ -1,158 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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 "contextadaptor.h"
-#include <QtCore/QByteArray>
-#include <QtCore/QList>
-#include <QtCore/QMetaObject>
-#include <QtCore/QMap>
-#include <QtCore/QString>
-#include <QtCore/QStringList>
-#include <QtCore/QVariant>
-
-#include "qmeegoplatforminputcontext.h"
-
-/*
- * Implementation of adaptor class Inputcontext1Adaptor
- */
-
-Inputcontext1Adaptor::Inputcontext1Adaptor(QObject *parent)
- : QDBusAbstractAdaptor(parent)
-{
- // constructor
- setAutoRelaySignals(true);
-}
-
-Inputcontext1Adaptor::~Inputcontext1Adaptor()
-{
- // destructor
-}
-
-void Inputcontext1Adaptor::activationLostEvent()
-{
- // handle method call com.meego.inputmethod.inputcontext1.activationLostEvent
- QMetaObject::invokeMethod(parent(), "activationLostEvent");
-}
-
-void Inputcontext1Adaptor::commitString(const QString &in0, int in1, int in2, int in3)
-{
- // handle method call com.meego.inputmethod.inputcontext1.commitString
- QMetaObject::invokeMethod(parent(), "commitString", Q_ARG(QString, in0), Q_ARG(int, in1), Q_ARG(int, in2), Q_ARG(int, in3));
-}
-
-void Inputcontext1Adaptor::updatePreedit(const QDBusMessage &message)
-{
- // handle method call com.meego.inputmethod.inputcontext1.updatePreedit
- QMetaObject::invokeMethod(parent(), "updatePreedit", Q_ARG(QDBusMessage, message));
-}
-
-void Inputcontext1Adaptor::copy()
-{
- // handle method call com.meego.inputmethod.inputcontext1.copy
- QMetaObject::invokeMethod(parent(), "copy");
-}
-
-void Inputcontext1Adaptor::imInitiatedHide()
-{
- // handle method call com.meego.inputmethod.inputcontext1.imInitiatedHide
- QMetaObject::invokeMethod(parent(), "imInitiatedHide");
-}
-
-void Inputcontext1Adaptor::keyEvent(int in0, int in1, int in2, const QString &in3, bool in4, int in5, uchar in6)
-{
- // handle method call com.meego.inputmethod.inputcontext1.keyEvent
- QMetaObject::invokeMethod(parent(), "keyEvent", Q_ARG(int, in0), Q_ARG(int, in1), Q_ARG(int, in2), Q_ARG(QString, in3), Q_ARG(bool, in4), Q_ARG(int, in5), Q_ARG(uchar, in6));
-}
-
-void Inputcontext1Adaptor::paste()
-{
- // handle method call com.meego.inputmethod.inputcontext1.paste
- QMetaObject::invokeMethod(parent(), "paste");
-}
-
-bool Inputcontext1Adaptor::preeditRectangle(int &out1, int &out2, int &out3, int &out4)
-{
- // handle method call com.meego.inputmethod.inputcontext1.preeditRectangle
- return static_cast<QMeeGoPlatformInputContext *>(parent())->preeditRectangle(out1, out2, out3, out4);
-}
-
-bool Inputcontext1Adaptor::selection(QString &out1)
-{
- // handle method call com.meego.inputmethod.inputcontext1.selection
- return static_cast<QMeeGoPlatformInputContext *>(parent())->selection(out1);
-}
-
-void Inputcontext1Adaptor::setDetectableAutoRepeat(bool in0)
-{
- // handle method call com.meego.inputmethod.inputcontext1.setDetectableAutoRepeat
- QMetaObject::invokeMethod(parent(), "setDetectableAutoRepeat", Q_ARG(bool, in0));
-}
-
-void Inputcontext1Adaptor::setGlobalCorrectionEnabled(bool in0)
-{
- // handle method call com.meego.inputmethod.inputcontext1.setGlobalCorrectionEnabled
- QMetaObject::invokeMethod(parent(), "setGlobalCorrectionEnabled", Q_ARG(bool, in0));
-}
-
-void Inputcontext1Adaptor::setLanguage(const QString &in0)
-{
- // handle method call com.meego.inputmethod.inputcontext1.setLanguage
- QMetaObject::invokeMethod(parent(), "setLanguage", Q_ARG(QString, in0));
-}
-
-void Inputcontext1Adaptor::setRedirectKeys(bool in0)
-{
- // handle method call com.meego.inputmethod.inputcontext1.setRedirectKeys
- QMetaObject::invokeMethod(parent(), "setRedirectKeys", Q_ARG(bool, in0));
-}
-
-void Inputcontext1Adaptor::setSelection(int in0, int in1)
-{
- // handle method call com.meego.inputmethod.inputcontext1.setSelection
- QMetaObject::invokeMethod(parent(), "setSelection", Q_ARG(int, in0), Q_ARG(int, in1));
-}
-
-void Inputcontext1Adaptor::updateInputMethodArea(int in0, int in1, int in2, int in3)
-{
- // handle method call com.meego.inputmethod.inputcontext1.updateInputMethodArea
- QMetaObject::invokeMethod(parent(), "updateInputMethodArea", Q_ARG(int, in0), Q_ARG(int, in1), Q_ARG(int, in2), Q_ARG(int, in3));
-}
-
diff --git a/src/plugins/platforminputcontexts/meego/contextadaptor.h b/src/plugins/platforminputcontexts/meego/contextadaptor.h
deleted file mode 100644
index 2150cd1e57..0000000000
--- a/src/plugins/platforminputcontexts/meego/contextadaptor.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-#ifndef CONTEXT_H_1318935171
-#define CONTEXT_H_1318935171
-
-#include <QtCore/QObject>
-#include <QtDBus/QtDBus>
-class QByteArray;
-template<class T> class QList;
-template<class Key, class Value> class QMap;
-class QString;
-class QStringList;
-class QVariant;
-
-/*
- * Adaptor class for interface com.meego.inputmethod.inputcontext1
- */
-class Inputcontext1Adaptor: public QDBusAbstractAdaptor
-{
- Q_OBJECT
- Q_CLASSINFO("D-Bus Interface", "com.meego.inputmethod.inputcontext1")
- Q_CLASSINFO("D-Bus Introspection", ""
-" <interface name=\"com.meego.inputmethod.inputcontext1\">\n"
-" <method name=\"activationLostEvent\"/>\n"
-" <method name=\"imInitiatedHide\"/>\n"
-" <method name=\"commitString\">\n"
-" <arg type=\"s\"/>\n"
-" <arg type=\"i\"/>\n"
-" <arg type=\"i\"/>\n"
-" <arg type=\"i\"/>\n"
-" </method>\n"
-" <method name=\"updatePreedit\">\n"
-" <arg type=\"s\"/>\n"
-" <arg type=\"a(iii)\"/>\n"
-" <arg type=\"i\"/>\n"
-" <arg type=\"i\"/>\n"
-" <arg type=\"i\"/>\n"
-" </method>\n"
-" <method name=\"keyEvent\">\n"
-" <arg type=\"i\"/>\n"
-" <arg type=\"i\"/>\n"
-" <arg type=\"i\"/>\n"
-" <arg type=\"s\"/>\n"
-" <arg type=\"b\"/>\n"
-" <arg type=\"i\"/>\n"
-" <arg type=\"y\"/>\n"
-" </method>\n"
-" <method name=\"updateInputMethodArea\">\n"
-" <arg type=\"i\"/>\n"
-" <arg type=\"i\"/>\n"
-" <arg type=\"i\"/>\n"
-" <arg type=\"i\"/>\n"
-" </method>\n"
-" <method name=\"setGlobalCorrectionEnabled\">\n"
-" <arg type=\"b\"/>\n"
-" </method>\n"
-" <method name=\"preeditRectangle\">\n"
-" <arg direction=\"out\" type=\"b\"/>\n"
-" <arg direction=\"out\" type=\"i\"/>\n"
-" <arg direction=\"out\" type=\"i\"/>\n"
-" <arg direction=\"out\" type=\"i\"/>\n"
-" <arg direction=\"out\" type=\"i\"/>\n"
-" </method>\n"
-" <method name=\"copy\"/>\n"
-" <method name=\"paste\"/>\n"
-" <method name=\"setRedirectKeys\">\n"
-" <arg type=\"b\"/>\n"
-" </method>\n"
-" <method name=\"setDetectableAutoRepeat\">\n"
-" <arg type=\"b\"/>\n"
-" </method>\n"
-" <method name=\"setSelection\">\n"
-" <arg type=\"i\"/>\n"
-" <arg type=\"i\"/>\n"
-" </method>\n"
-" <method name=\"selection\">\n"
-" <arg direction=\"out\" type=\"b\"/>\n"
-" <arg direction=\"out\" type=\"s\"/>\n"
-" </method>\n"
-" <method name=\"setLanguage\">\n"
-" <arg type=\"s\"/>\n"
-" </method>\n"
-" </interface>\n"
- "")
-public:
- Inputcontext1Adaptor(QObject *parent);
- virtual ~Inputcontext1Adaptor();
-
-public: // PROPERTIES
-public Q_SLOTS: // METHODS
- void activationLostEvent();
- void commitString(const QString &in0, int in1, int in2, int in3);
- void updatePreedit(const QDBusMessage &message);
- void copy();
- void imInitiatedHide();
- void keyEvent(int in0, int in1, int in2, const QString &in3, bool in4, int in5, uchar in6);
- void paste();
- bool preeditRectangle(int &out1, int &out2, int &out3, int &out4);
- bool selection(QString &out1);
- void setDetectableAutoRepeat(bool in0);
- void setGlobalCorrectionEnabled(bool in0);
- void setLanguage(const QString &in0);
- void setRedirectKeys(bool in0);
- void setSelection(int in0, int in1);
- void updateInputMethodArea(int in0, int in1, int in2, int in3);
-Q_SIGNALS: // SIGNALS
-};
-
-#endif
diff --git a/src/plugins/platforminputcontexts/meego/main.cpp b/src/plugins/platforminputcontexts/meego/main.cpp
deleted file mode 100644
index 5c87a9caed..0000000000
--- a/src/plugins/platforminputcontexts/meego/main.cpp
+++ /dev/null
@@ -1,71 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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/qplatforminputcontextplugin_qpa_p.h>
-#include <QtCore/QStringList>
-#include "qmeegoplatforminputcontext.h"
-
-QT_BEGIN_NAMESPACE
-
-class QMeeGoPlatformInputContextPlugin : public QPlatformInputContextPlugin
-{
-public:
- QStringList keys() const;
- QPlatformInputContext *create(const QString&, const QStringList&);
-};
-
-QStringList QMeeGoPlatformInputContextPlugin::keys() const
-{
- return QStringList(QStringLiteral("meego"));
-}
-
-QPlatformInputContext *QMeeGoPlatformInputContextPlugin::create(const QString& system, const QStringList& paramList)
-{
- Q_UNUSED(paramList);
-
- if (system.compare(system, QStringLiteral("meego"), Qt::CaseInsensitive) == 0)
- return new QMeeGoPlatformInputContext;
- return 0;
-}
-
-Q_EXPORT_PLUGIN2(meegoplatforminputcontextplugin, QMeeGoPlatformInputContextPlugin)
-
-QT_END_NAMESPACE
diff --git a/src/plugins/platforminputcontexts/meego/meego.pro b/src/plugins/platforminputcontexts/meego/meego.pro
deleted file mode 100644
index fad256e3dc..0000000000
--- a/src/plugins/platforminputcontexts/meego/meego.pro
+++ /dev/null
@@ -1,17 +0,0 @@
-TARGET = meegoplatforminputcontextplugin
-load(qt_plugin)
-
-QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforminputcontexts
-
-QT += dbus platformsupport-private
-SOURCES += $$PWD/qmeegoplatforminputcontext.cpp \
- $$PWD/serverproxy.cpp \
- $$PWD/contextadaptor.cpp \
- $$PWD/main.cpp
-
-HEADERS += $$PWD/qmeegoplatforminputcontext.h \
- $$PWD/serverproxy.h \
- $$PWD/contextadaptor.h
-
-target.path += $$[QT_INSTALL_PLUGINS]/platforminputcontexts
-INSTALLS += target
diff --git a/src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.cpp b/src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.cpp
deleted file mode 100644
index cab0be4067..0000000000
--- a/src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.cpp
+++ /dev/null
@@ -1,546 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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 "qmeegoplatforminputcontext.h"
-
-#include <QtDebug>
-#include <QTextCharFormat>
-#include <QGuiApplication>
-#include <qwindow.h>
-#include <qevent.h>
-#include <qscreen.h>
-
-#include "serverproxy.h"
-#include "contextadaptor.h"
-
-#include <sys/types.h>
-#include <signal.h>
-
-#include <QtDBus>
-
-QT_BEGIN_NAMESPACE
-
-enum { debug = 0 };
-
-enum InputPanelVisibility {
- InputPanelHidden,
- InputPanelShowRequested,
- InputPanelShown
-};
-
-enum MaliitOrientationAngle {
- Angle0 = 0,
- Angle90 = 90,
- Angle180 = 180,
- Angle270 = 270
-};
-
-static int orientationAngle(Qt::ScreenOrientation orientation)
-{
- switch (orientation) {
- case Qt::UnknownOrientation: // Urgh.
- case Qt::PortraitOrientation:
- return Angle270;
- case Qt::LandscapeOrientation:
- return Angle0;
- case Qt::InvertedPortraitOrientation:
- return Angle90;
- case Qt::InvertedLandscapeOrientation:
- return Angle180;
- }
- return Angle0;
-}
-
-// From MTF:
-//! Content type for text entries. Used at least with MTextEdit
-enum TextContentType {
- //! all characters allowed
- FreeTextContentType,
-
- //! only integer numbers allowed
- NumberContentType,
-
- //! allows numbers and certain other characters used in phone numbers
- PhoneNumberContentType,
-
- //! allows only characters permitted in email address
- EmailContentType,
-
- //! allows only character permitted in URL address
- UrlContentType,
-
- //! allows content with user defined format
- CustomContentType
-};
-static TextContentType contentTypeFromHints(Qt::InputMethodHints hints)
-{
- TextContentType type = FreeTextContentType;
- hints &= Qt::ImhExclusiveInputMask;
-
- if (hints == Qt::ImhFormattedNumbersOnly || hints == Qt::ImhDigitsOnly)
- type = NumberContentType;
- else if (hints == Qt::ImhDialableCharactersOnly)
- type = PhoneNumberContentType;
- else if (hints == Qt::ImhEmailCharactersOnly)
- type = EmailContentType;
- else if (hints == Qt::ImhUrlCharactersOnly)
- type = UrlContentType;
-
- return type;
-}
-
-class QMeeGoPlatformInputContextPrivate
-{
-public:
- QMeeGoPlatformInputContextPrivate(QMeeGoPlatformInputContext *qq);
- ~QMeeGoPlatformInputContextPrivate()
- {
- delete adaptor;
- delete server;
- }
-
- void sendStateUpdate(bool focusChanged = false);
-
- QDBusConnection connection;
- ComMeegoInputmethodUiserver1Interface *server;
- Inputcontext1Adaptor *adaptor;
-
- QMap<QString, QVariant> imState;
-
- InputPanelVisibility visibility;
-
- bool valid;
- bool active;
- bool correctionEnabled;
- QRect keyboardRect;
- QString preedit;
- QMeeGoPlatformInputContext *q;
-};
-
-
-QMeeGoPlatformInputContext::QMeeGoPlatformInputContext()
- : d(new QMeeGoPlatformInputContextPrivate(this))
-{
- if (debug)
- qDebug() << "QMeeGoPlatformInputContext::QMeeGoPlatformInputContext()";
- QInputPanel *p = qApp->inputPanel();
- connect(p, SIGNAL(inputItemChanged()), this, SLOT(inputItemChanged()));
-}
-
-QMeeGoPlatformInputContext::~QMeeGoPlatformInputContext(void)
-{
- delete d;
-}
-
-bool QMeeGoPlatformInputContext::isValid() const
-{
- return d->valid;
-}
-
-void QMeeGoPlatformInputContext::invokeAction(QInputPanel::Action action, int x)
-{
- QObject *input = qApp->inputPanel()->inputItem();
- if (!input)
- return;
-
- if (action == QInputPanel::Click) {
- if (x < 0 || x >= d->preedit.length()) {
- reset();
- return;
- }
-
- d->imState["preeditClickPos"] = x;
- d->sendStateUpdate();
- // The first argument is the mouse pos and the second is the
- // preedit rectangle. Both are unused on the server side.
- d->server->mouseClickedOnPreedit(0, 0, 0, 0, 0, 0);
- } else {
- QPlatformInputContext::invokeAction(action, x);
- }
-}
-
-void QMeeGoPlatformInputContext::reset()
-{
- QObject *input = qApp->inputPanel()->inputItem();
-
- const bool hadPreedit = !d->preedit.isEmpty();
- if (hadPreedit && input) {
- // ### selection
- QInputMethodEvent event;
- event.setCommitString(d->preedit);
- QGuiApplication::sendEvent(input, &event);
- d->preedit.clear();
- }
-
- QDBusPendingReply<void> reply = d->server->reset();
- if (hadPreedit)
- reply.waitForFinished();
-}
-
-void QMeeGoPlatformInputContext::update(Qt::InputMethodQueries queries)
-{
- QInputPanel *panel = qApp->inputPanel();
- QObject *input = panel->inputItem();
- if (!input)
- return;
-
- QInputMethodQueryEvent query(queries);
- QGuiApplication::sendEvent(input, &query);
-
- if (queries & Qt::ImSurroundingText)
- d->imState["surroundingText"] = query.value(Qt::ImSurroundingText);
- if (queries & Qt::ImCursorPosition)
- d->imState["cursorPosition"] = query.value(Qt::ImCursorPosition);
- if (queries & Qt::ImAnchorPosition)
- d->imState["anchorPosition"] = query.value(Qt::ImAnchorPosition);
- if (queries & Qt::ImCursorRectangle) {
- QRect rect = query.value(Qt::ImCursorRectangle).toRect();
- rect = panel->inputItemTransform().mapRect(rect);
- QWindow *window = panel->inputWindow();
- if (window)
- d->imState["cursorRectangle"] = QRect(window->mapToGlobal(rect.topLeft()), rect.size());
- }
-
- if (queries & Qt::ImCurrentSelection)
- d->imState["hasSelection"] = !query.value(Qt::ImCurrentSelection).toString().isEmpty();
-
- if (queries & Qt::ImHints) {
- Qt::InputMethodHints hints = Qt::InputMethodHints(query.value(Qt::ImHints).toUInt());
-
- d->imState["predictionEnabled"] = !(hints & Qt::ImhNoPredictiveText);
- d->imState["autocapitalizationEnabled"] = !(hints & Qt::ImhNoAutoUppercase);
- d->imState["hiddenText"] = (hints & Qt::ImhHiddenText) != 0;
-
- d->imState["contentType"] = contentTypeFromHints(hints);
- }
-
- d->sendStateUpdate(/*focusChanged*/true);
-}
-
-QRectF QMeeGoPlatformInputContext::keyboardRect() const
-{
- return d->keyboardRect;
-}
-
-void QMeeGoPlatformInputContext::activationLostEvent()
-{
- d->active = false;
- d->visibility = InputPanelHidden;
-}
-
-void QMeeGoPlatformInputContext::commitString(const QString &string, int replacementStart, int replacementLength, int cursorPos)
-{
- QObject *input = qApp->inputPanel()->inputItem();
- if (!input)
- return;
-
- d->preedit.clear();
-
- if (debug)
- qWarning() << "CommitString" << string;
- // ### start/cursorPos
- QInputMethodEvent event;
- event.setCommitString(string, replacementStart, replacementLength);
- QCoreApplication::sendEvent(input, &event);
-}
-
-void QMeeGoPlatformInputContext::updatePreedit(const QDBusMessage &message)
-{
- QObject *input = qApp->inputPanel()->inputItem();
- if (!input)
- return;
-
- QList<QVariant> arguments = message.arguments();
- if (arguments.count() != 5) {
- qWarning() << "QMeeGoPlatformInputContext::updatePreedit: Received message from input method server with wrong parameters.";
- return;
- }
-
- d->preedit = arguments[0].toString();
-
- QList<QInputMethodEvent::Attribute> attributes;
-
- const QDBusArgument formats = arguments[1].value<QDBusArgument>();
- formats.beginArray();
- while (!formats.atEnd()) {
- formats.beginStructure();
- int start, length, preeditFace;
- formats >> start >> length >> preeditFace;
- formats.endStructure();
-
- QTextCharFormat format;
-
- enum PreeditFace {
- PreeditDefault,
- PreeditNoCandidates,
- PreeditKeyPress, //!< Used for displaying the hwkbd key just pressed
- PreeditUnconvertible, //!< Inactive preedit region, not clickable
- PreeditActive, //!< Preedit region with active suggestions
-
- };
- switch (PreeditFace(preeditFace)) {
- case PreeditDefault:
- case PreeditKeyPress:
- format.setUnderlineStyle(QTextCharFormat::SingleUnderline);
- format.setUnderlineColor(QColor(0, 0, 0));
- break;
- case PreeditNoCandidates:
- format.setUnderlineStyle(QTextCharFormat::SingleUnderline);
- format.setUnderlineColor(QColor(255, 0, 0));
- break;
- case PreeditUnconvertible:
- format.setForeground(QBrush(QColor(128, 128, 128)));
- break;
- case PreeditActive:
- format.setForeground(QBrush(QColor(153, 50, 204)));
- format.setFontWeight(QFont::Bold);
- break;
- default:
- break;
- }
-
- attributes << QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat, start, length, format);
- }
- formats.endArray();
-
- int replacementStart = arguments[2].toInt();
- int replacementLength = arguments[3].toInt();
- int cursorPos = arguments[4].toInt();
-
- if (debug)
- qWarning() << "updatePreedit" << d->preedit << replacementStart << replacementLength << cursorPos;
-
- if (cursorPos >= 0)
- attributes << QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, cursorPos, 1, QVariant());
-
- QInputMethodEvent event(d->preedit, attributes);
- if (replacementStart || replacementLength)
- event.setCommitString(QString(), replacementStart, replacementLength);
- QCoreApplication::sendEvent(input, &event);
-}
-
-void QMeeGoPlatformInputContext::copy()
-{
- // Not supported at the moment.
-}
-
-void QMeeGoPlatformInputContext::imInitiatedHide()
-{
- d->visibility = InputPanelHidden;
- emitInputPanelVisibleChanged();
- // ### clear focus
-}
-
-void QMeeGoPlatformInputContext::keyEvent(int, int, int, const QString &, bool, int, uchar)
-{
- // Not supported at the moment.
-}
-
-void QMeeGoPlatformInputContext::paste()
-{
- // Not supported at the moment.
-}
-
-bool QMeeGoPlatformInputContext::preeditRectangle(int &x, int &y, int &width, int &height)
-{
- // ###
- QRect r = qApp->inputPanel()->cursorRectangle().toRect();
- if (!r.isValid())
- return false;
- x = r.x();
- y = r.y();
- width = r.width();
- height = r.height();
- return true;
-}
-
-bool QMeeGoPlatformInputContext::selection(QString &selection)
-{
- selection.clear();
-
- QObject *input = qApp->inputPanel()->inputItem();
- if (!input)
- return false;
-
- QInputMethodQueryEvent query(Qt::ImCurrentSelection);
- QGuiApplication::sendEvent(input, &query);
- QVariant value = query.value(Qt::ImCurrentSelection);
- if (!value.isValid())
- return false;
-
- selection = value.toString();
- return true;
-}
-
-void QMeeGoPlatformInputContext::setDetectableAutoRepeat(bool)
-{
- // Not supported.
-}
-
-void QMeeGoPlatformInputContext::setGlobalCorrectionEnabled(bool enable)
-{
- d->correctionEnabled = enable;
-}
-
-void QMeeGoPlatformInputContext::setLanguage(const QString &)
-{
- // Unused at the moment.
-}
-
-void QMeeGoPlatformInputContext::setRedirectKeys(bool)
-{
- // Not supported.
-}
-
-void QMeeGoPlatformInputContext::setSelection(int start, int length)
-{
- QObject *input = qApp->inputPanel()->inputItem();
- if (!input)
- return;
-
- QList<QInputMethodEvent::Attribute> attributes;
- attributes << QInputMethodEvent::Attribute(QInputMethodEvent::Selection, start, length, QVariant());
- QInputMethodEvent event(QString(), attributes);
- QGuiApplication::sendEvent(input, &event);
-}
-
-void QMeeGoPlatformInputContext::updateInputMethodArea(int x, int y, int width, int height)
-{
- d->keyboardRect = QRect(x, y, width, height);
- emitKeyboardRectChanged();
-}
-
-void QMeeGoPlatformInputContext::inputItemChanged()
-{
- if (!d->valid)
- return;
-
- QInputPanel *panel = qApp->inputPanel();
- QObject *input = panel->inputItem();
- QWindow *window = panel->inputWindow();
-
- d->imState["focusState"] = input != 0;
- if (input) {
- if (window)
- d->imState["winId"] = static_cast<qulonglong>(window->winId());
-
- if (!d->active) {
- d->active = true;
- d->server->activateContext();
-
- // ### react to orientation changes, too
- if (window)
- d->server->appOrientationChanged(orientationAngle(window->screen()->currentOrientation()));
- }
- }
- d->sendStateUpdate(/*focusChanged*/true);
- if (input && window && d->visibility == InputPanelShowRequested)
- showInputPanel();
-}
-
-void QMeeGoPlatformInputContext::showInputPanel()
-{
- if (debug)
- qDebug() << "showInputPanel";
-
- QInputPanel *panel = qApp->inputPanel();
- if (!panel->inputItem() || !panel->inputWindow())
- d->visibility = InputPanelShowRequested;
- else {
- d->server->showInputMethod();
- d->visibility = InputPanelShown;
- emitInputPanelVisibleChanged();
- }
-}
-
-void QMeeGoPlatformInputContext::hideInputPanel()
-{
- d->server->hideInputMethod();
- d->visibility = InputPanelHidden;
- emitInputPanelVisibleChanged();
-}
-
-bool QMeeGoPlatformInputContext::isInputPanelVisible() const
-{
- return d->visibility == InputPanelShown;
-}
-
-QMeeGoPlatformInputContextPrivate::QMeeGoPlatformInputContextPrivate(QMeeGoPlatformInputContext* qq)
- : connection(QDBusConnection::connectToPeer(QStringLiteral("unix:path=/tmp/meego-im-uiserver/imserver_dbus"), QLatin1String("MeeGoIMProxy")))
- , server(0)
- , adaptor(0)
- , visibility(InputPanelHidden)
- , valid(false)
- , active(false)
- , correctionEnabled(false)
- , q(qq)
-{
- if (!connection.isConnected()) {
- qDebug("QMeeGoPlatformInputContext: not connected.");
- return;
- }
-
- server = new ComMeegoInputmethodUiserver1Interface(QStringLiteral(""), QStringLiteral("/com/meego/inputmethod/uiserver1"), connection);
- adaptor = new Inputcontext1Adaptor(qq);
- connection.registerObject("/com/meego/inputmethod/inputcontext", qq);
-
- enum InputMethodMode {
- //! Normal mode allows to use preedit and error correction
- InputMethodModeNormal,
-
- //! Virtual keyboard sends QKeyEvent for every key press or release
- InputMethodModeDirect,
-
- //! Used with proxy widget
- InputMethodModeProxy
- };
- imState["inputMethodMode"] = InputMethodModeNormal;
-
- imState["correctionEnabled"] = true;
-
- valid = true;
-}
-
-void QMeeGoPlatformInputContextPrivate::sendStateUpdate(bool focusChanged)
-{
- server->updateWidgetInformation(imState, focusChanged);
-}
-
-QT_END_NAMESPACE
diff --git a/src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.h b/src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.h
deleted file mode 100644
index 4e6e724bdc..0000000000
--- a/src/plugins/platforminputcontexts/meego/qmeegoplatforminputcontext.h
+++ /dev/null
@@ -1,96 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-#ifndef QMEEGOPLATFORMINPUTCONTEXT_H
-#define QMEEGOPLATFORMINPUTCONTEXT_H
-
-#include <QPlatformInputContext>
-#include <QDBusArgument>
-
-QT_BEGIN_NAMESPACE
-
-class QMeeGoPlatformInputContextPrivate;
-class QDBusVariant;
-class QDBusMessage;
-
-class QMeeGoPlatformInputContext : public QPlatformInputContext
-{
- Q_OBJECT
-public:
- QMeeGoPlatformInputContext();
- ~QMeeGoPlatformInputContext();
-
- bool isValid() const;
-
- void invokeAction(QInputPanel::Action action, int x);
- void reset(void);
- void update(Qt::InputMethodQueries);
- virtual QRectF keyboardRect() const;
-
- virtual void showInputPanel();
- virtual void hideInputPanel();
- virtual bool isInputPanelVisible() const;
-
-public Q_SLOTS:
- void inputItemChanged();
-
- void activationLostEvent();
- void commitString(const QString &in0, int in1, int in2, int in3);
- void updatePreedit(const QDBusMessage &message);
- void copy();
- void imInitiatedHide();
- void keyEvent(int , int , int , const QString &, bool , int , uchar );
- void paste();
- bool preeditRectangle(int &x, int &y, int &width, int &height);
- bool selection(QString &selection);
- void setDetectableAutoRepeat(bool in0);
- void setGlobalCorrectionEnabled(bool enable);
- void setLanguage(const QString &);
- void setRedirectKeys(bool );
- void setSelection(int start, int length);
- void updateInputMethodArea(int x, int y, int width, int height);
-
-private:
- QMeeGoPlatformInputContextPrivate *d;
-};
-
-QT_END_NAMESPACE
-
-#endif
diff --git a/src/plugins/platforminputcontexts/meego/serverproxy.cpp b/src/plugins/platforminputcontexts/meego/serverproxy.cpp
deleted file mode 100644
index 8f20238405..0000000000
--- a/src/plugins/platforminputcontexts/meego/serverproxy.cpp
+++ /dev/null
@@ -1,56 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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 "serverproxy.h"
-
-/*
- * Implementation of interface class ComMeegoInputmethodUiserver1Interface
- */
-
-ComMeegoInputmethodUiserver1Interface::ComMeegoInputmethodUiserver1Interface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent)
- : QDBusAbstractInterface(service, path, staticInterfaceName(), connection, parent)
-{
-}
-
-ComMeegoInputmethodUiserver1Interface::~ComMeegoInputmethodUiserver1Interface()
-{
-}
-
diff --git a/src/plugins/platforminputcontexts/meego/serverproxy.h b/src/plugins/platforminputcontexts/meego/serverproxy.h
deleted file mode 100644
index 31cb82ba07..0000000000
--- a/src/plugins/platforminputcontexts/meego/serverproxy.h
+++ /dev/null
@@ -1,166 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the plugins 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$
-**
-****************************************************************************/
-
-#ifndef SERVER_H_1318935108
-#define SERVER_H_1318935108
-
-#include <QtCore/QObject>
-#include <QtCore/QByteArray>
-#include <QtCore/QList>
-#include <QtCore/QMap>
-#include <QtCore/QString>
-#include <QtCore/QStringList>
-#include <QtCore/QVariant>
-#include <QtDBus/QtDBus>
-
-/*
- * Proxy class for interface com.meego.inputmethod.uiserver1
- */
-class ComMeegoInputmethodUiserver1Interface: public QDBusAbstractInterface
-{
- Q_OBJECT
-public:
- static inline const char *staticInterfaceName()
- { return "com.meego.inputmethod.uiserver1"; }
-
-public:
- ComMeegoInputmethodUiserver1Interface(const QString &service, const QString &path, const QDBusConnection &connection, QObject *parent = 0);
-
- ~ComMeegoInputmethodUiserver1Interface();
-
-public Q_SLOTS: // METHODS
- inline QDBusPendingReply<> activateContext()
- {
- QList<QVariant> argumentList;
- return asyncCallWithArgumentList(QLatin1String("activateContext"), argumentList);
- }
-
- inline QDBusPendingReply<> appOrientationAboutToChange(int in0)
- {
- QList<QVariant> argumentList;
- argumentList << QVariant::fromValue(in0);
- return asyncCallWithArgumentList(QLatin1String("appOrientationAboutToChange"), argumentList);
- }
-
- inline QDBusPendingReply<> appOrientationChanged(int in0)
- {
- QList<QVariant> argumentList;
- argumentList << QVariant::fromValue(in0);
- return asyncCallWithArgumentList(QLatin1String("appOrientationChanged"), argumentList);
- }
-
- inline QDBusPendingReply<> hideInputMethod()
- {
- QList<QVariant> argumentList;
- return asyncCallWithArgumentList(QLatin1String("hideInputMethod"), argumentList);
- }
-
- inline QDBusPendingReply<> mouseClickedOnPreedit(int in0, int in1, int in2, int in3, int in4, int in5)
- {
- QList<QVariant> argumentList;
- argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4) << QVariant::fromValue(in5);
- return asyncCallWithArgumentList(QLatin1String("mouseClickedOnPreedit"), argumentList);
- }
-
- inline QDBusPendingReply<> processKeyEvent(int in0, int in1, int in2, const QString &in3, bool in4, int in5, uint in6, uint in7, uint in8)
- {
- QList<QVariant> argumentList;
- argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1) << QVariant::fromValue(in2) << QVariant::fromValue(in3) << QVariant::fromValue(in4) << QVariant::fromValue(in5) << QVariant::fromValue(in6) << QVariant::fromValue(in7) << QVariant::fromValue(in8);
- return asyncCallWithArgumentList(QLatin1String("processKeyEvent"), argumentList);
- }
-
- inline QDBusPendingReply<> setPreedit(const QString &in0, int in1)
- {
- QList<QVariant> argumentList;
- argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
- return asyncCallWithArgumentList(QLatin1String("setPreedit"), argumentList);
- }
-
- inline QDBusPendingReply<> showInputMethod()
- {
- QList<QVariant> argumentList;
- return asyncCallWithArgumentList(QLatin1String("showInputMethod"), argumentList);
- }
-
- inline QDBusPendingReply<> updateWidgetInformation(const QMap<QString, QVariant> &stateInformation, bool focusChanged)
- {
- QDBusMessage msg = QDBusMessage::createMethodCall(service(), path(), interface(), "updateWidgetInformation");
-
- QDBusArgument map;
- map.beginMap(QVariant::String, qMetaTypeId<QDBusVariant>());
- for (QMap<QString, QVariant>::ConstIterator it = stateInformation.constBegin(), end = stateInformation.constEnd();
- it != end; ++it) {
- map.beginMapEntry();
- map << it.key();
- map << QDBusVariant(it.value());
- map.endMapEntry();
- }
- map.endMap();
-
- QList<QVariant> args;
- args << QVariant::fromValue(map) << QVariant(focusChanged);
- msg.setArguments(args);
- return connection().asyncCall(msg);
- }
-
- inline QDBusPendingReply<> reset()
- {
- return asyncCall(QLatin1String("reset"));
- }
-
- inline QDBusPendingReply<> setCopyPasteState(bool in0, bool in1)
- {
- QList<QVariant> argumentList;
- argumentList << QVariant::fromValue(in0) << QVariant::fromValue(in1);
- return asyncCallWithArgumentList(QLatin1String("setCopyPasteState"), argumentList);
- }
-
-Q_SIGNALS: // SIGNALS
-};
-
-namespace com {
- namespace meego {
- namespace inputmethod {
- typedef ::ComMeegoInputmethodUiserver1Interface uiserver1;
- }
- }
-}
-#endif
diff --git a/src/plugins/platforminputcontexts/platforminputcontexts.pro b/src/plugins/platforminputcontexts/platforminputcontexts.pro
index bd27aaf721..7c1f55927d 100644
--- a/src/plugins/platforminputcontexts/platforminputcontexts.pro
+++ b/src/plugins/platforminputcontexts/platforminputcontexts.pro
@@ -1,5 +1,4 @@
TEMPLATE = subdirs
contains(QT_CONFIG, dbus) {
-!macx:!win32:SUBDIRS += ibus
+!macx:!win32:SUBDIRS += ibus maliit
}
-linux-g++-maemo: SUBDIRS += meego
diff --git a/src/plugins/platforms/cocoa/main.mm b/src/plugins/platforms/cocoa/main.mm
index f88e1b7786..334a1fefc3 100644
--- a/src/plugins/platforms/cocoa/main.mm
+++ b/src/plugins/platforms/cocoa/main.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibility.h b/src/plugins/platforms/cocoa/qcocoaaccessibility.h
index c3376ad5c5..5d88528609 100644
--- a/src/plugins/platforms/cocoa/qcocoaaccessibility.h
+++ b/src/plugins/platforms/cocoa/qcocoaaccessibility.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibility.mm b/src/plugins/platforms/cocoa/qcocoaaccessibility.mm
index 436d27eddf..5a54b6c0f2 100644
--- a/src/plugins/platforms/cocoa/qcocoaaccessibility.mm
+++ b/src/plugins/platforms/cocoa/qcocoaaccessibility.mm
@@ -1,43 +1,43 @@
/****************************************************************************
- **
- ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the plugins 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$
- **
- ****************************************************************************/
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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 "qcocoaaccessibility.h"
namespace QCocoaAccessible {
diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.h b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.h
index 2136d6628a..da1908da3a 100644
--- a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.h
+++ b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,16 +48,13 @@
@class QCocoaAccessibleElement;
@interface QCocoaAccessibleElement : NSObject {
- NSUInteger index;
NSString *role;
NSObject * parent;
void *accessibleInterface;
-
}
-- (id)initWithIndex:(int)aIndex parent:(id)aParent accessibleInterface:(void *)anQAccessibleInterface;
-+ (QCocoaAccessibleElement *)elementWithIndex:(int)aIndex parent:(id)aParent accessibleInterface:(void *)anQAccessibleInterface;
-- (NSUInteger)index;
+- (id)initWithInterface:(void *)anQAccessibleInterface parent:(id)aParent;
++ (QCocoaAccessibleElement *)elementWithInterface:(void *)anQAccessibleInterface parent:(id)aParent;
@end
diff --git a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm
index 830e6860b7..06d75036bf 100644
--- a/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm
+++ b/src/plugins/platforms/cocoa/qcocoaaccessibilityelement.mm
@@ -1,43 +1,43 @@
/****************************************************************************
- **
- ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the plugins 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$
- **
- ****************************************************************************/
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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 "qcocoaaccessibilityelement.h"
#include "qcocoaaccessibility.h"
#include "qcocoahelpers.h"
@@ -54,23 +54,21 @@ static QAccessibleInterface *acast(void *ptr)
@implementation QCocoaAccessibleElement
-- (id)initWithIndex:(int)aIndex parent:(id)aParent accessibleInterface:(void *)anQAccessibleInterface
+- (id)initWithInterface:(void *)anQAccessibleInterface parent:(id)aParent
{
self = [super init];
if (self) {
- index = aIndex;
accessibleInterface = anQAccessibleInterface;
role = QCocoaAccessible::macRole(acast(accessibleInterface)->role());
parent = aParent;
-
}
return self;
}
-+ (QCocoaAccessibleElement *)elementWithIndex:(int)aIndex parent:(id)aParent accessibleInterface:(void *)anQAccessibleInterface
++ (QCocoaAccessibleElement *)elementWithInterface:(void *)anQAccessibleInterface parent:(id)aParent
{
- return [[[self alloc] initWithIndex:aIndex parent:aParent accessibleInterface:anQAccessibleInterface] autorelease];
+ return [[[self alloc] initWithInterface:anQAccessibleInterface parent:aParent] autorelease];
}
- (void)dealloc {
@@ -80,17 +78,14 @@ static QAccessibleInterface *acast(void *ptr)
- (BOOL)isEqual:(id)object {
if ([object isKindOfClass:[QCocoaAccessibleElement class]]) {
QCocoaAccessibleElement *other = object;
- return (index == other->index) && [role isEqualToString:other->role] && [parent isEqual:other->parent];
- } else
+ return acast(other->accessibleInterface)->object() == acast(accessibleInterface)->object();
+ } else {
return NO;
+ }
}
- (NSUInteger)hash {
- return [parent hash] + index;
-}
-
-- (NSUInteger)index {
- return index;
+ return qHash(acast(accessibleInterface)->object());
}
//
@@ -129,7 +124,7 @@ static QAccessibleInterface *acast(void *ptr)
NSMutableArray *kids = [NSMutableArray arrayWithCapacity:numKids];
for (int i = 0; i < numKids; ++i) {
QAccessibleInterface *childInterface = acast(accessibleInterface)->child(i);
- [kids addObject:[QCocoaAccessibleElement elementWithIndex:i parent:self accessibleInterface:(void*)childInterface]];
+ [kids addObject:[QCocoaAccessibleElement elementWithInterface:(void*)childInterface parent:self]];
}
return NSAccessibilityUnignoredChildren(kids);
@@ -153,7 +148,7 @@ static QAccessibleInterface *acast(void *ptr)
QSize qtSize = acast(accessibleInterface)->rect().size();
return [NSValue valueWithSize: NSMakeSize(qtSize.width(), qtSize.height())];
} else if ([attribute isEqualToString:NSAccessibilityDescriptionAttribute]) {
- return qt_mac_QStringToNSString(acast(accessibleInterface)->text(QAccessible::Name));
+ return QCFString::toNSString(acast(accessibleInterface)->text(QAccessible::Name));
}
return nil;
@@ -195,11 +190,12 @@ static QAccessibleInterface *acast(void *ptr)
- (NSString *)accessibilityActionDescription:(NSString *)action {
QAccessibleActionInterface *actionInterface = acast(accessibleInterface)->actionInterface();
- if (actionInterface) {
- QString qtAction = QCocoaAccessible::translateAction(action);
+ QString qtAction = QCocoaAccessible::translateAction(action);
+
+ // Return a description from the action interface if this action is not known to the OS.
+ if (qtAction.isEmpty()) {
QString description = actionInterface->localizedActionDescription(qtAction);
- if (!description.isEmpty())
- return qt_mac_QStringToNSString(description);
+ return QCFString::toNSString(description);
}
return NSAccessibilityActionDescription(action);
@@ -231,8 +227,7 @@ static QAccessibleInterface *acast(void *ptr)
}
// hit a child, forward to child accessible interface.
- int childIndex = acast(accessibleInterface)->indexOfChild(childInterface);
- QCocoaAccessibleElement *accessibleElement = [QCocoaAccessibleElement elementWithIndex:childIndex parent:self accessibleInterface: childInterface];
+ QCocoaAccessibleElement *accessibleElement = [QCocoaAccessibleElement elementWithInterface:childInterface parent:self];
return [accessibleElement accessibilityHitTest:point];
}
diff --git a/src/plugins/platforms/cocoa/qcocoaapplication.h b/src/plugins/platforms/cocoa/qcocoaapplication.h
index edd50958de..3911c01742 100644
--- a/src/plugins/platforms/cocoa/qcocoaapplication.h
+++ b/src/plugins/platforms/cocoa/qcocoaapplication.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoaapplication.mm b/src/plugins/platforms/cocoa/qcocoaapplication.mm
index b389635eaa..2cecb296f4 100644
--- a/src/plugins/platforms/cocoa/qcocoaapplication.mm
+++ b/src/plugins/platforms/cocoa/qcocoaapplication.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.h b/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.h
index 00546d6fe5..9551de6245 100644
--- a/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.h
+++ b/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm b/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
index 26928d0df5..fc600ebddd 100644
--- a/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
+++ b/src/plugins/platforms/cocoa/qcocoaapplicationdelegate.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -219,7 +219,7 @@ static void cleanupCocoaApplicationDelegate()
Q_UNUSED(sender);
/*
for (NSString *fileName in filenames) {
- QString qtFileName = qt_mac_NSStringToQString(fileName);
+ QString qtFileName = QCFString::toQString(fileName);
if (inLaunch) {
// We need to be careful because Cocoa will be nice enough to take
// command line arguments and send them to us as events. Given the history
@@ -336,7 +336,7 @@ static void cleanupCocoaApplicationDelegate()
Q_UNUSED(replyEvent);
/*
NSString *urlString = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
- QUrl url(qt_mac_NSStringToQString(urlString));
+ QUrl url(QCFString::toQString(urlString));
QFileOpenEvent qtEvent(url);
qt_sendSpontaneousEvent(qAppInstance(), &qtEvent);
*/
diff --git a/src/plugins/platforms/cocoa/qcocoaautoreleasepool.h b/src/plugins/platforms/cocoa/qcocoaautoreleasepool.h
index 1ce2c1bd05..e123c82813 100644
--- a/src/plugins/platforms/cocoa/qcocoaautoreleasepool.h
+++ b/src/plugins/platforms/cocoa/qcocoaautoreleasepool.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoaautoreleasepool.mm b/src/plugins/platforms/cocoa/qcocoaautoreleasepool.mm
index e6d7ecc82b..03f7b97b5c 100644
--- a/src/plugins/platforms/cocoa/qcocoaautoreleasepool.mm
+++ b/src/plugins/platforms/cocoa/qcocoaautoreleasepool.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoabackingstore.h b/src/plugins/platforms/cocoa/qcocoabackingstore.h
index 70ac8e109c..794693627b 100644
--- a/src/plugins/platforms/cocoa/qcocoabackingstore.h
+++ b/src/plugins/platforms/cocoa/qcocoabackingstore.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoabackingstore.mm b/src/plugins/platforms/cocoa/qcocoabackingstore.mm
index 8f7b0aafde..5e221ffd8b 100644
--- a/src/plugins/platforms/cocoa/qcocoabackingstore.mm
+++ b/src/plugins/platforms/cocoa/qcocoabackingstore.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoacursor.h b/src/plugins/platforms/cocoa/qcocoacursor.h
index 2c58994119..bccaa1e06b 100644
--- a/src/plugins/platforms/cocoa/qcocoacursor.h
+++ b/src/plugins/platforms/cocoa/qcocoacursor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoacursor.mm b/src/plugins/platforms/cocoa/qcocoacursor.mm
index cd0a173596..bddfaa752e 100644
--- a/src/plugins/platforms/cocoa/qcocoacursor.mm
+++ b/src/plugins/platforms/cocoa/qcocoacursor.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.h b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.h
index 823a5626fe..a4a1286fab 100644
--- a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.h
+++ b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -149,6 +149,8 @@ class QCocoaEventDispatcherPrivate : public QAbstractEventDispatcherPrivate
public:
QCocoaEventDispatcherPrivate();
+ uint processEventsFlags;
+
// timer handling
QTimerInfoList timerInfoList;
CFRunLoopTimerRef runLoopTimerRef;
@@ -173,6 +175,7 @@ public:
void beginModalSession(QWindow *widget);
void endModalSession(QWindow *widget);
void cancelWaitForMoreEvents();
+ void maybeCancelWaitForMoreEvents();
void cleanupModalSessions();
void ensureNSAppInitialized();
diff --git a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm
index 5c22050711..6de22cf58c 100644
--- a/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm
+++ b/src/plugins/platforms/cocoa/qcocoaeventdispatcher.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -114,6 +114,7 @@ void QCocoaEventDispatcherPrivate::activateTimer(CFRunLoopTimerRef, void *info)
QCocoaEventDispatcherPrivate *d = static_cast<QCocoaEventDispatcherPrivate *>(info);
(void) d->timerInfoList.activateTimers();
d->maybeStartCFRunLoopTimer();
+ d->maybeCancelWaitForMoreEvents();
}
void QCocoaEventDispatcherPrivate::maybeStartCFRunLoopTimer()
@@ -275,6 +276,8 @@ void qt_mac_socket_callback(CFSocketRef s, CFSocketCallBackType callbackType, CF
if (socketInfo->writeNotifier)
QGuiApplication::sendEvent(socketInfo->writeNotifier, &notifierEvent);
}
+
+ eventDispatcher->maybeCancelWaitForMoreEvents();
}
/*
@@ -488,32 +491,16 @@ static bool IsMouseOrKeyEvent( NSEvent* event )
return result;
}
-static inline void qt_mac_waitForMoreEvents()
-{
- // If no event exist in the cocoa event que, wait
- // (and free up cpu time) until at least one event occur.
- // This implementation is a bit on the edge, but seems to
- // work fine:
- NSEvent* event = [NSApp nextEventMatchingMask:NSAnyEventMask
- untilDate:[NSDate distantFuture]
- inMode:NSDefaultRunLoopMode
- dequeue:YES];
- if (event)
- [NSApp postEvent:event atStart:YES];
-}
-
-static inline void qt_mac_waitForMoreModalSessionEvents()
+static inline void qt_mac_waitForMoreEvents(NSString *runLoopMode = NSDefaultRunLoopMode)
{
// If no event exist in the cocoa event que, wait
// (and free up cpu time) until at least one event occur.
// This implementation is a bit on the edge, but seems to
// work fine:
- NSEvent* event = [NSApp nextEventMatchingMask:NSAnyEventMask
- untilDate:[NSDate distantFuture]
- inMode:NSModalPanelRunLoopMode
- dequeue:YES];
- if (event)
- [NSApp postEvent:event atStart:YES];
+ [NSApp nextEventMatchingMask:NSAnyEventMask
+ untilDate:[NSDate distantFuture]
+ inMode:runLoopMode
+ dequeue:NO];
}
bool QCocoaEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
@@ -524,13 +511,12 @@ bool QCocoaEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
bool interruptLater = false;
QtCocoaInterruptDispatcher::cancelInterruptLater();
- // In case we end up recursing while we now process events, make sure
- // that we send remaining posted Qt events before this call returns:
- wakeUp();
emit awake();
bool excludeUserEvents = flags & QEventLoop::ExcludeUserInputEvents;
bool retVal = false;
+ uint oldflags = d->processEventsFlags;
+ d->processEventsFlags = flags;
forever {
if (d->interrupt)
break;
@@ -568,7 +554,7 @@ bool QCocoaEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
if (NSModalSession session = d->currentModalSession()) {
QBoolBlocker execGuard(d->currentExecIsNSAppRun, false);
while ([NSApp runModalSession:session] == NSRunContinuesResponse && !d->interrupt)
- qt_mac_waitForMoreModalSessionEvents();
+ qt_mac_waitForMoreEvents(NSModalPanelRunLoopMode);
if (!d->interrupt && session == d->currentModalSessionCached) {
// Someone called [NSApp stopModal:] from outside the event
@@ -583,6 +569,7 @@ bool QCocoaEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
}
retVal = true;
} else {
+ bool hadModalSession = d->currentModalSessionCached != 0;
// We cannot block the thread (and run in a tight loop).
// Instead we will process all current pending events and return.
d->ensureNSAppInitialized();
@@ -592,7 +579,7 @@ bool QCocoaEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
// Since we can dispatch all kinds of events, we choose
// to use cocoa's native way of running modal sessions:
if (flags & QEventLoop::WaitForMoreEvents)
- qt_mac_waitForMoreModalSessionEvents();
+ qt_mac_waitForMoreEvents(NSModalPanelRunLoopMode);
NSInteger status = [NSApp runModalSession:session];
if (status != NSRunContinuesResponse && session == d->currentModalSessionCached) {
// INVARIANT: Someone called [NSApp stopModal:] from outside the event
@@ -644,17 +631,13 @@ bool QCocoaEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
}
} while (!d->interrupt && event != nil);
- // Be sure to flush the Qt posted events when not using exec mode
- // (exec mode will always do this call from the event loop source):
- if (!d->interrupt)
- QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData);
-
// Since the window that holds modality might have changed while processing
// events, we we need to interrupt when we return back the previous process
// event recursion to ensure that we spin the correct modal session.
// We do the interruptLater at the end of the function to ensure that we don't
// disturb the 'wait for more events' below (as deleteLater will post an event):
- interruptLater = true;
+ if (hadModalSession && d->currentModalSessionCached == 0)
+ interruptLater = true;
}
bool canWait = (d->threadData->canWait
&& !retVal
@@ -672,6 +655,8 @@ bool QCocoaEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags flags)
}
}
+ d->processEventsFlags = oldflags;
+
// If we're interrupted, we need to interrupt the _current_
// recursion as well to check if it is still supposed to be
// executing. This way we wind down the stack until we land
@@ -894,7 +879,8 @@ void QCocoaEventDispatcherPrivate::endModalSession(QWindow *window)
}
QCocoaEventDispatcherPrivate::QCocoaEventDispatcherPrivate()
- : runLoopTimerRef(0),
+ : processEventsFlags(0),
+ runLoopTimerRef(0),
blockSendPostedEvents(false),
currentExecIsNSAppRun(false),
nsAppRunCalledByQt(false),
@@ -1023,7 +1009,9 @@ void QCocoaEventDispatcherPrivate::firstLoopEntry(CFRunLoopObserverRef ref,
void QCocoaEventDispatcherPrivate::postedEventsSourcePerformCallback(void *info)
{
- static_cast<QCocoaEventDispatcherPrivate *>(info)->processPostedEvents();
+ QCocoaEventDispatcherPrivate *d = static_cast<QCocoaEventDispatcherPrivate *>(info);
+ d->processPostedEvents();
+ d->maybeCancelWaitForMoreEvents();
}
void QCocoaEventDispatcherPrivate::cancelWaitForMoreEvents()
@@ -1036,6 +1024,16 @@ void QCocoaEventDispatcherPrivate::cancelWaitForMoreEvents()
subtype:QtCocoaEventSubTypeWakeup data1:0 data2:0] atStart:NO];
}
+void QCocoaEventDispatcherPrivate::maybeCancelWaitForMoreEvents()
+{
+ if ((processEventsFlags & (QEventLoop::EventLoopExec | QEventLoop::WaitForMoreEvents)) == QEventLoop::WaitForMoreEvents) {
+ // RunLoop sources are not NSEvents, but they do generate Qt events. If
+ // WaitForMoreEvents was set, but EventLoopExec is not, processEvents()
+ // should return after a source has sent some Qt events.
+ cancelWaitForMoreEvents();
+ }
+}
+
void QCocoaEventDispatcher::interrupt()
{
Q_D(QCocoaEventDispatcher);
diff --git a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.h b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.h
index e99fe58570..7d4da019c2 100644
--- a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.h
+++ b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,7 @@ class QFileDialogPrivate;
class QCocoaFileDialogHelper : public QPlatformFileDialogHelper
{
public:
- QCocoaFileDialogHelper(QFileDialog *dialog);
+ QCocoaFileDialogHelper();
virtual ~QCocoaFileDialogHelper();
void platformNativeDialogModalHelp();
@@ -84,7 +84,6 @@ public:
void QNSOpenSavePanelDelegate_filterSelected(int menuIndex);
private:
- QFileDialog *qtFileDialog;
void *mDelegate;
};
diff --git a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm
index a513237977..ecb732c9da 100644
--- a/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm
+++ b/src/plugins/platforms/cocoa/qcocoafiledialoghelper.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,8 +51,8 @@
#include <qapplication.h>
#include <private/qapplication_p.h>
#include <private/qfiledialog_p.h>
-#include <private/qt_mac_p.h>
-#include <private/qt_cocoa_helpers_mac_p.h>
+#include "qt_mac_p.h"
+#include "qcocoahelpers.h"
#include <qregexp.h>
#include <qbuffer.h>
#include <qdebug.h>
@@ -92,7 +92,6 @@ typedef QSharedPointer<QFileDialogOptions> SharedPointerFileDialogOptions;
NSView *mAccessoryView;
NSPopUpButton *mPopUpButton;
NSTextField *mTextField;
- QFileDialog *mFileDialog;
QCocoaFileDialogHelper *mHelper;
NSString *mCurrentDir;
@@ -126,12 +125,10 @@ typedef QSharedPointer<QFileDialogOptions> SharedPointerFileDialogOptions;
- (id)initWithAcceptMode:
(const QString &)selectFile
- fileDialog:(QFileDialog *)fileDialog
options:(SharedPointerFileDialogOptions)options
helper:(QCocoaFileDialogHelper *)helper
{
self = [super init];
- mFileDialog = fileDialog;
mOptions = options;
if (mOptions->acceptMode() == QT_PREPEND_NAMESPACE(QFileDialogOptions::AcceptOpen)){
mOpenPanel = [NSOpenPanel openPanel];
@@ -149,19 +146,19 @@ typedef QSharedPointer<QFileDialogOptions> SharedPointerFileDialogOptions;
mLastFilterCheckPath = new QString;
mQDirFilterEntryList = new QStringList;
mNameFilterDropDownList = new QStringList(mOptions->nameFilters());
- QString selectedVisualNameFilter = mFileDialog->selectedNameFilter();
+ QString selectedVisualNameFilter = mOptions->initiallySelectedNameFilter();
mSelectedNameFilter = new QStringList([self findStrippedFilterWithVisualFilterName:selectedVisualNameFilter]);
QFileInfo sel(selectFile);
if (sel.isDir()){
- mCurrentDir = [qt_mac_QStringToNSString(sel.absoluteFilePath()) retain];
+ mCurrentDir = [QCFString::toNSString(sel.absoluteFilePath()) retain];
mCurrentSelection = new QString;
} else {
- mCurrentDir = [qt_mac_QStringToNSString(sel.absolutePath()) retain];
+ mCurrentDir = [QCFString::toNSString(sel.absolutePath()) retain];
mCurrentSelection = new QString(sel.absoluteFilePath());
}
- [mSavePanel setTitle:qt_mac_QStringToNSString(options->windowTitle())];
+ [mSavePanel setTitle:QCFString::toNSString(options->windowTitle())];
[self createPopUpButton:selectedVisualNameFilter hideDetails:options->testOption(QFileDialogOptions::HideNameFilterDetails)];
[self createTextField];
[self createAccessory];
@@ -200,12 +197,12 @@ typedef QSharedPointer<QFileDialogOptions> SharedPointerFileDialogOptions;
- (NSString *)strip:(const QString &)label
{
QAction a(label, 0);
- return qt_mac_QStringToNSString(a.iconText());
+ return QCFString::toNSString(a.iconText());
}
- (void)closePanel
{
- *mCurrentSelection = QT_PREPEND_NAMESPACE(qt_mac_NSStringToQString)([mSavePanel filename]);
+ *mCurrentSelection = QT_PREPEND_NAMESPACE(QCFString::toQString)([mSavePanel filename]);
[mSavePanel close];
}
@@ -213,8 +210,8 @@ typedef QSharedPointer<QFileDialogOptions> SharedPointerFileDialogOptions;
{
if (mOpenPanel){
QFileInfo info(*mCurrentSelection);
- NSString *filename = QT_PREPEND_NAMESPACE(qt_mac_QStringToNSString)(info.fileName());
- NSString *filepath = QT_PREPEND_NAMESPACE(qt_mac_QStringToNSString)(info.filePath());
+ NSString *filename = QT_PREPEND_NAMESPACE(QCFString::toNSString)(info.fileName());
+ NSString *filepath = QT_PREPEND_NAMESPACE(QCFString::toNSString)(info.filePath());
bool selectable = (mOptions->acceptMode() == QFileDialogOptions::AcceptSave)
|| [self panel:nil shouldShowFilename:filepath];
[mOpenPanel
@@ -230,8 +227,8 @@ typedef QSharedPointer<QFileDialogOptions> SharedPointerFileDialogOptions;
- (BOOL)runApplicationModalPanel
{
QFileInfo info(*mCurrentSelection);
- NSString *filename = QT_PREPEND_NAMESPACE(qt_mac_QStringToNSString)(info.fileName());
- NSString *filepath = QT_PREPEND_NAMESPACE(qt_mac_QStringToNSString)(info.filePath());
+ NSString *filename = QT_PREPEND_NAMESPACE(QCFString::toNSString)(info.fileName());
+ NSString *filepath = QT_PREPEND_NAMESPACE(QCFString::toNSString)(info.filePath());
bool selectable = (mOptions->acceptMode() == QFileDialogOptions::AcceptSave)
|| [self panel:nil shouldShowFilename:filepath];
mReturnCode = [mSavePanel
@@ -251,8 +248,8 @@ typedef QSharedPointer<QFileDialogOptions> SharedPointerFileDialogOptions;
{
Q_UNUSED(docWidget);
QFileInfo info(*mCurrentSelection);
- NSString *filename = QT_PREPEND_NAMESPACE(qt_mac_QStringToNSString)(info.fileName());
- NSString *filepath = QT_PREPEND_NAMESPACE(qt_mac_QStringToNSString)(info.filePath());
+ NSString *filename = QT_PREPEND_NAMESPACE(QCFString::toNSString)(info.fileName());
+ NSString *filepath = QT_PREPEND_NAMESPACE(QCFString::toNSString)(info.filePath());
bool selectable = (mOptions->acceptMode() == QFileDialogOptions::AcceptSave)
|| [self panel:nil shouldShowFilename:filepath];
[mSavePanel
@@ -280,7 +277,7 @@ typedef QSharedPointer<QFileDialogOptions> SharedPointerFileDialogOptions;
}
}
- QString qtFileName = QT_PREPEND_NAMESPACE(qt_mac_NSStringToQString)(filename);
+ QString qtFileName = QT_PREPEND_NAMESPACE(QCFString::toQString)(filename);
QFileInfo info(qtFileName.normalized(QT_PREPEND_NAMESPACE(QString::NormalizationForm_C)));
QString path = info.absolutePath();
if (path != *mLastFilterCheckPath){
@@ -322,7 +319,7 @@ typedef QSharedPointer<QFileDialogOptions> SharedPointerFileDialogOptions;
if (filters.size() > 0){
for (int i=0; i<filters.size(); ++i) {
QString filter = hideDetails ? [self removeExtensions:filters.at(i)] : filters.at(i);
- [mPopUpButton addItemWithTitle:QT_PREPEND_NAMESPACE(qt_mac_QStringToNSString)(filter)];
+ [mPopUpButton addItemWithTitle:QT_PREPEND_NAMESPACE(QCFString::toNSString)(filter)];
}
[mPopUpButton selectItemAtIndex:0];
[mSavePanel setAccessoryView:mAccessoryView];
@@ -355,7 +352,7 @@ typedef QSharedPointer<QFileDialogOptions> SharedPointerFileDialogOptions;
return QT_PREPEND_NAMESPACE(qt_mac_NSArrayToQStringList)([mOpenPanel filenames]);
else{
QStringList result;
- QString filename = QT_PREPEND_NAMESPACE(qt_mac_NSStringToQString)([mSavePanel filename]);
+ QString filename = QT_PREPEND_NAMESPACE(QCFString::toQString)([mSavePanel filename]);
result << filename.remove(QLatin1String("___qt_very_unlikely_prefix_"));
return result;
}
@@ -393,7 +390,7 @@ typedef QSharedPointer<QFileDialogOptions> SharedPointerFileDialogOptions;
{
Q_UNUSED(sender);
if (mHelper) {
- QString selection = QT_PREPEND_NAMESPACE(qt_mac_NSStringToQString([mSavePanel filename]));
+ QString selection = QT_PREPEND_NAMESPACE(QCFString::toQString([mSavePanel filename]));
if (selection != mCurrentSelection) {
*mCurrentSelection = selection;
mHelper->QNSOpenSavePanelDelegate_selectionChanged(selection);
@@ -420,7 +417,7 @@ typedef QSharedPointer<QFileDialogOptions> SharedPointerFileDialogOptions;
[mCurrentDir release];
mCurrentDir = [path retain];
- mHelper->QNSOpenSavePanelDelegate_directoryEntered(QT_PREPEND_NAMESPACE(qt_mac_NSStringToQString(mCurrentDir)));
+ mHelper->QNSOpenSavePanelDelegate_directoryEntered(QT_PREPEND_NAMESPACE(QCFString::toQString(mCurrentDir)));
}
/*
@@ -479,7 +476,7 @@ typedef QSharedPointer<QFileDialogOptions> SharedPointerFileDialogOptions;
if (filters->size() > 0){
for (int i=0; i<mNameFilterDropDownList->size(); ++i) {
QString filter = hideDetails ? [self removeExtensions:filters->at(i)] : filters->at(i);
- [mPopUpButton addItemWithTitle:QT_PREPEND_NAMESPACE(qt_mac_QStringToNSString)(filter)];
+ [mPopUpButton addItemWithTitle:QT_PREPEND_NAMESPACE(QCFString::toNSString)(filter)];
if (filters->at(i).startsWith(selectedFilter))
[mPopUpButton selectItemAtIndex:i];
}
@@ -518,8 +515,8 @@ static bool qt_mac_is_macsheet(const QWidget *w)
return w->parentWidget() && (modality == Qt::WindowModal || w->windowType() == Qt::Sheet);
}
-QCocoaFileDialogHelper::QCocoaFileDialogHelper(QFileDialog *dialog) :
- qtFileDialog(dialog), mDelegate(0)
+QCocoaFileDialogHelper::QCocoaFileDialogHelper()
+ :mDelegate(0)
{
}
@@ -560,13 +557,13 @@ extern void qt_mac_to_pascal_string(QString s, Str255 str, TextEncoding encoding
void QCocoaFileDialogHelper::setDirectory_sys(const QString &directory)
{
QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
- [delegate->mSavePanel setDirectory:qt_mac_QStringToNSString(directory)];
+ [delegate->mSavePanel setDirectory:QCFString::toNSString(directory)];
}
QString QCocoaFileDialogHelper::directory_sys() const
{
QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
- return qt_mac_NSStringToQString([delegate->mSavePanel directory]);
+ return QCFString::toQString([delegate->mSavePanel directory]);
}
void QCocoaFileDialogHelper::selectFile_sys(const QString &filename)
@@ -590,7 +587,7 @@ void QCocoaFileDialogHelper::setFilter_sys()
{
QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
const SharedPointerFileDialogOptions &opts = options();
- [delegate->mSavePanel setTitle:qt_mac_QStringToNSString(opts->windowTitle())];
+ [delegate->mSavePanel setTitle:QCFString::toNSString(opts->windowTitle())];
if (opts->isLabelExplicitlySet(QFileDialogOptions::Accept))
[delegate->mSavePanel setPrompt:[delegate strip:opts->labelText(QFileDialogOptions::Accept)]];
if (opts->isLabelExplicitlySet(QFileDialogOptions::FileName))
@@ -624,16 +621,12 @@ void QCocoaFileDialogHelper::deleteNativeDialog_sys()
void QCocoaFileDialogHelper::hide_sys()
{
- if (!qtFileDialog->isHidden())
- hideCocoaFilePanel();
+ hideCocoaFilePanel();
}
bool QCocoaFileDialogHelper::show_sys(ShowFlags /* flags */, Qt::WindowFlags windowFlags, QWindow *parent)
{
// Q_Q(QFileDialog);
- if (!qtFileDialog->isHidden())
- return false;
-
if (windowFlags & Qt::WindowStaysOnTopHint) {
// The native file dialog tries all it can to stay
// on the NSModalPanel level. And it might also show
@@ -657,7 +650,6 @@ void QCocoaFileDialogHelper::createNSOpenSavePanelDelegate()
QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = [[QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) alloc]
initWithAcceptMode:
selection
- fileDialog:qtFileDialog
options:opts
helper:this];
@@ -669,7 +661,7 @@ bool QCocoaFileDialogHelper::showCocoaFilePanel(QWindow *parent)
// Q_Q(QFileDialog);
createNSOpenSavePanelDelegate();
QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *delegate = static_cast<QT_MANGLE_NAMESPACE(QNSOpenSavePanelDelegate) *>(mDelegate);
- if (qt_mac_is_macsheet(qtFileDialog))
+ if (0 /*qt_mac_is_macsheet(qtFileDialog)*/) // ### sheet support.
[delegate showWindowModalSheet:parent];
else
[delegate showModelessPanel];
diff --git a/src/plugins/platforms/cocoa/qcocoaglcontext.h b/src/plugins/platforms/cocoa/qcocoaglcontext.h
index 652c3b33c8..b8582022f6 100644
--- a/src/plugins/platforms/cocoa/qcocoaglcontext.h
+++ b/src/plugins/platforms/cocoa/qcocoaglcontext.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoaglcontext.mm b/src/plugins/platforms/cocoa/qcocoaglcontext.mm
index 08c0ce61a8..960163d727 100644
--- a/src/plugins/platforms/cocoa/qcocoaglcontext.mm
+++ b/src/plugins/platforms/cocoa/qcocoaglcontext.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.h b/src/plugins/platforms/cocoa/qcocoahelpers.h
index 61076aadd4..7b1247b739 100644
--- a/src/plugins/platforms/cocoa/qcocoahelpers.h
+++ b/src/plugins/platforms/cocoa/qcocoahelpers.h
@@ -1,43 +1,43 @@
/****************************************************************************
- **
- ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the plugins 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$
- **
- ****************************************************************************/
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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$
+**
+****************************************************************************/
#ifndef QCOCOAHELPERS_H
#define QCOCOAHELPERS_H
@@ -52,8 +52,7 @@
//
// We mean it.
//
-
-#include <private/qt_mac_p.h>
+#include "qt_mac_p.h"
#include <private/qguiapplication_p.h>
#include <QtGui/qscreen.h>
@@ -69,12 +68,6 @@ void *qt_mac_QStringListToNSMutableArrayVoid(const QStringList &list);
inline NSMutableArray *qt_mac_QStringListToNSMutableArray(const QStringList &qstrlist)
{ return reinterpret_cast<NSMutableArray *>(qt_mac_QStringListToNSMutableArrayVoid(qstrlist)); }
-inline QString qt_mac_NSStringToQString(const NSString *nsstr)
-{ return QCFString::toQString(reinterpret_cast<const CFStringRef>(nsstr)); }
-
-inline NSString *qt_mac_QStringToNSString(const QString &qstr)
-{ return [const_cast<NSString *>(reinterpret_cast<const NSString *>(QCFString::toCFStringRef(qstr))) autorelease]; }
-
CGImageRef qt_mac_image_to_cgimage(const QImage &image);
NSImage *qt_mac_cgimage_to_nsimage(CGImageRef iamge);
NSImage *qt_mac_create_nsimage(const QPixmap &pm);
diff --git a/src/plugins/platforms/cocoa/qcocoahelpers.mm b/src/plugins/platforms/cocoa/qcocoahelpers.mm
index 45aa90c296..f9b62c7a71 100644
--- a/src/plugins/platforms/cocoa/qcocoahelpers.mm
+++ b/src/plugins/platforms/cocoa/qcocoahelpers.mm
@@ -1,43 +1,43 @@
/****************************************************************************
- **
- ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the plugins 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$
- **
- ****************************************************************************/
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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 "qcocoahelpers.h"
@@ -58,7 +58,7 @@ QStringList qt_mac_NSArrayToQStringList(void *nsarray)
QStringList result;
NSArray *array = static_cast<NSArray *>(nsarray);
for (NSUInteger i=0; i<[array count]; ++i)
- result << qt_mac_NSStringToQString([array objectAtIndex:i]);
+ result << QCFString::toQString([array objectAtIndex:i]);
return result;
}
diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.h b/src/plugins/platforms/cocoa/qcocoaintegration.h
index 46e8925ba7..be061547a9 100644
--- a/src/plugins/platforms/cocoa/qcocoaintegration.h
+++ b/src/plugins/platforms/cocoa/qcocoaintegration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoaintegration.mm b/src/plugins/platforms/cocoa/qcocoaintegration.mm
index 685b640843..fb8e487029 100644
--- a/src/plugins/platforms/cocoa/qcocoaintegration.mm
+++ b/src/plugins/platforms/cocoa/qcocoaintegration.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -150,6 +150,7 @@ bool QCocoaIntegration::hasCapability(QPlatformIntegration::Capability cap) cons
case ThreadedPixmaps: return true;
case OpenGL : return true;
case ThreadedOpenGL : return true;
+ case BufferQueueingOpenGL: return true;
default: return QPlatformIntegration::hasCapability(cap);
}
}
diff --git a/src/plugins/platforms/cocoa/qcocoamenu.h b/src/plugins/platforms/cocoa/qcocoamenu.h
index e0ba8a116f..bf8bba1ddf 100644
--- a/src/plugins/platforms/cocoa/qcocoamenu.h
+++ b/src/plugins/platforms/cocoa/qcocoamenu.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoamenu.mm b/src/plugins/platforms/cocoa/qcocoamenu.mm
index 5f695eb07a..00bbf49cca 100644
--- a/src/plugins/platforms/cocoa/qcocoamenu.mm
+++ b/src/plugins/platforms/cocoa/qcocoamenu.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoamenuloader.h b/src/plugins/platforms/cocoa/qcocoamenuloader.h
index c4b56a6d19..128792410b 100644
--- a/src/plugins/platforms/cocoa/qcocoamenuloader.h
+++ b/src/plugins/platforms/cocoa/qcocoamenuloader.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoamenuloader.mm b/src/plugins/platforms/cocoa/qcocoamenuloader.mm
index 3c7d3c8bff..3a1f92fcf9 100644
--- a/src/plugins/platforms/cocoa/qcocoamenuloader.mm
+++ b/src/plugins/platforms/cocoa/qcocoamenuloader.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -92,7 +92,7 @@ void qt_mac_loadMenuNib(QT_MANGLE_NAMESPACE(QCocoaMenuLoader) *qtMenuLoader)
}
// Load and instantiate nib file from temp
- NSURL *nibUrl = [NSURL fileURLWithPath : const_cast<NSString *>(reinterpret_cast<const NSString *>(QCFString::toCFStringRef(nibDir)))];
+ NSURL *nibUrl = [NSURL fileURLWithPath : QCFString::toNSString(nibDir)];
[nibUrl autorelease];
NSNib *nib = [[NSNib alloc] initWithContentsOfURL : nibUrl];
[nib autorelease];
@@ -282,13 +282,13 @@ void qt_mac_loadMenuNib(QT_MANGLE_NAMESPACE(QCocoaMenuLoader) *qtMenuLoader)
qDebug() << "qtTranslateApplicationMenu";
#ifndef QT_NO_TRANSLATION
- [servicesItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(0))];
- [hideItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(1).arg(qt_mac_applicationName()))];
- [hideAllOthersItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(2))];
- [showAllItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(3))];
- [preferencesItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(4))];
- [quitItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(5).arg(qt_mac_applicationName()))];
- [aboutItem setTitle: qt_mac_QStringToNSString(qt_mac_applicationmenu_string(6).arg(qt_mac_applicationName()))];
+ [servicesItem setTitle: QCFString::toNSString(qt_mac_applicationmenu_string(0))];
+ [hideItem setTitle: QCFString::toNSString(qt_mac_applicationmenu_string(1).arg(qt_mac_applicationName()))];
+ [hideAllOthersItem setTitle: QCFString::toNSString(qt_mac_applicationmenu_string(2))];
+ [showAllItem setTitle: QCFString::toNSString(qt_mac_applicationmenu_string(3))];
+ [preferencesItem setTitle: QCFString::toNSString(qt_mac_applicationmenu_string(4))];
+ [quitItem setTitle: QCFString::toNSString(qt_mac_applicationmenu_string(5).arg(qt_mac_applicationName()))];
+ [aboutItem setTitle: QCFString::toNSString(qt_mac_applicationmenu_string(6).arg(qt_mac_applicationName()))];
#endif
}
diff --git a/src/plugins/platforms/cocoa/qcocoanativeinterface.h b/src/plugins/platforms/cocoa/qcocoanativeinterface.h
index 3c190aedb2..7c6fb38577 100644
--- a/src/plugins/platforms/cocoa/qcocoanativeinterface.h
+++ b/src/plugins/platforms/cocoa/qcocoanativeinterface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoanativeinterface.mm b/src/plugins/platforms/cocoa/qcocoanativeinterface.mm
index 426ac1e494..443369df75 100644
--- a/src/plugins/platforms/cocoa/qcocoanativeinterface.mm
+++ b/src/plugins/platforms/cocoa/qcocoanativeinterface.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -61,6 +61,8 @@ void *QCocoaNativeInterface::nativeResourceForWindow(const QByteArray &resourceS
return static_cast<QCocoaWindow *>(window->handle())->currentContext()->nsOpenGLContext();
} else if (resourceString == "nsview") {
return static_cast<QCocoaWindow *>(window->handle())->m_contentView;
+ } else if (resourceString == "nswindow") {
+ return static_cast<QCocoaWindow *>(window->handle())->m_nsWindow;
}
return 0;
}
diff --git a/src/plugins/platforms/cocoa/qcocoatheme.h b/src/plugins/platforms/cocoa/qcocoatheme.h
index 901f6443f9..08f813b906 100644
--- a/src/plugins/platforms/cocoa/qcocoatheme.h
+++ b/src/plugins/platforms/cocoa/qcocoatheme.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -57,8 +57,8 @@ public:
QPlatformMenu *createPlatformMenu(QMenu *menu = 0) const;
QPlatformMenuBar *createPlatformMenuBar(QMenuBar *menuBar = 0) const;
- bool usePlatformNativeDialog(const QDialog *dialog = 0) const;
- QPlatformDialogHelper *createPlatformDialogHelper(QDialog *dialog = 0) const;
+ bool usePlatformNativeDialog(DialogType dialogType) const;
+ QPlatformDialogHelper *createPlatformDialogHelper(DialogType dialogType) const;
};
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/cocoa/qcocoatheme.mm b/src/plugins/platforms/cocoa/qcocoatheme.mm
index db333417a9..f0e58abebd 100644
--- a/src/plugins/platforms/cocoa/qcocoatheme.mm
+++ b/src/plugins/platforms/cocoa/qcocoatheme.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -68,24 +68,17 @@ QPlatformMenuBar *QCocoaTheme::createPlatformMenuBar(QMenuBar *menuBar) const
}
-bool QCocoaTheme::usePlatformNativeDialog(const QDialog *dialog) const
+bool QCocoaTheme::usePlatformNativeDialog(DialogType dialogType) const
{
- Q_UNUSED(dialog);
- return true;
-#if 0
- QFileDialog *fileDialog = qobject_cast<QFileDialog*>(dialog);
- if (fileDialog) {
+ if (dialogType == QPlatformTheme::FileDialog)
return true;
- }
return false;
-#endif
}
-QPlatformDialogHelper * QCocoaTheme::createPlatformDialogHelper(QDialog *dialog) const
+QPlatformDialogHelper * QCocoaTheme::createPlatformDialogHelper(DialogType dialogType) const
{
- QFileDialog *fileDialog = qobject_cast<QFileDialog*>(dialog);
- if (fileDialog) {
- return new QCocoaFileDialogHelper(fileDialog);
+ if (dialogType == QPlatformTheme::FileDialog) {
+ return new QCocoaFileDialogHelper();
}
return 0;
}
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.h b/src/plugins/platforms/cocoa/qcocoawindow.h
index d3dc7d5f91..ba56a8991d 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.h
+++ b/src/plugins/platforms/cocoa/qcocoawindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qcocoawindow.mm b/src/plugins/platforms/cocoa/qcocoawindow.mm
index 66f4b602d9..b2e93470c9 100644
--- a/src/plugins/platforms/cocoa/qcocoawindow.mm
+++ b/src/plugins/platforms/cocoa/qcocoawindow.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qmacdefines_mac.h b/src/plugins/platforms/cocoa/qmacdefines_mac.h
new file mode 100644
index 0000000000..a35df47227
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qmacdefines_mac.h
@@ -0,0 +1,157 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** 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$
+**
+****************************************************************************/
+
+/****************************************************************************
+**
+** Copyright (c) 2007-2008, Apple, Inc.
+**
+** All rights reserved.
+**
+** Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are met:
+**
+** * Redistributions of source code must retain the above copyright notice,
+** this list of conditions and the following disclaimer.
+**
+** * Redistributions in binary form must reproduce the above copyright notice,
+** this list of conditions and the following disclaimer in the documentation
+** and/or other materials provided with the distribution.
+**
+** * Neither the name of Apple, Inc. nor the names of its contributors
+** may be used to endorse or promote products derived from this software
+** without specific prior written permission.
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+**
+****************************************************************************/
+
+/*
+ * qmacdefines_mac_p.h
+ * All the defines you'll ever need for Qt/Mac :-)
+ */
+
+/* This is just many defines. Therefore it doesn't need things like:
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+Yes, it is an informative comment ;-)
+*/
+
+#include <QtCore/qglobal.h>
+
+#ifdef qDebug
+# define old_qDebug qDebug
+# undef qDebug
+#endif
+
+#ifdef __LP64__
+typedef signed int OSStatus;
+#else
+typedef signed long OSStatus;
+#endif
+
+#ifdef __OBJC__
+# ifdef slots
+# define old_slots slots
+# undef slots
+# endif
+#include <Cocoa/Cocoa.h>
+# ifdef old_slots
+# undef slots
+# define slots
+# undef old_slots
+# endif
+#endif
+ typedef struct OpaqueEventHandlerCallRef * EventHandlerCallRef;
+ typedef struct OpaqueEventRef * EventRef;
+ typedef struct OpaqueMenuRef * MenuRef;
+ typedef struct OpaquePasteboardRef* PasteboardRef;
+ typedef struct OpaqueRgnHandle * RgnHandle;
+ typedef const struct __HIShape *HIShapeRef;
+ typedef struct __HIShape *HIMutableShapeRef;
+ typedef struct CGRect CGRect;
+ typedef struct CGImage *CGImageRef;
+ typedef struct CGContext *CGContextRef;
+ typedef struct GDevice * GDPtr;
+ typedef GDPtr * GDHandle;
+ typedef struct OpaqueIconRef * IconRef;
+# ifdef __OBJC__
+ typedef NSWindow* OSWindowRef;
+ typedef NSView *OSViewRef;
+ typedef NSMenu *OSMenuRef;
+ typedef NSEvent *OSEventRef;
+# else
+ typedef void *OSWindowRef;
+ typedef void *OSViewRef;
+ typedef void *OSMenuRef;
+ typedef void *OSEventRef;
+# endif
+
+typedef PasteboardRef OSPasteboardRef;
+typedef struct AEDesc AEDescList;
+typedef AEDescList AERecord;
+typedef AERecord AppleEvent;
+
+#ifdef check
+#undef check
+#endif
+
+#ifdef old_qDebug
+# undef qDebug
+# define qDebug QT_NO_QDEBUG_MACRO
+# undef old_qDebug
+#endif
diff --git a/src/plugins/platforms/cocoa/qmenu_mac.h b/src/plugins/platforms/cocoa/qmenu_mac.h
index 1e72b2fa41..d41540a341 100644
--- a/src/plugins/platforms/cocoa/qmenu_mac.h
+++ b/src/plugins/platforms/cocoa/qmenu_mac.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,11 +34,12 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
-#include <private/qt_mac_p.h>
+#include "qt_mac_p.h"
#include <QtCore/qpointer.h>
#include <QtWidgets/qmenu.h>
#include <QtWidgets/qmenubar.h>
diff --git a/src/plugins/platforms/cocoa/qmenu_mac.mm b/src/plugins/platforms/cocoa/qmenu_mac.mm
index db6dda79f1..68a24101e9 100644
--- a/src/plugins/platforms/cocoa/qmenu_mac.mm
+++ b/src/plugins/platforms/cocoa/qmenu_mac.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -237,7 +237,7 @@ static inline QT_MANGLE_NAMESPACE(QCocoaMenuLoader) *getMenuLoader()
static NSMenuItem *createNSMenuItem(const QString &title)
{
NSMenuItem *item = [[NSMenuItem alloc]
- initWithTitle:qt_mac_QStringToNSString(title)
+ initWithTitle:QCFString::toNSString(title)
action:@selector(qtDispatcherToQAction:) keyEquivalent:@""];
[item setTarget:nil];
return item;
@@ -636,22 +636,22 @@ void QCocoaMenu::syncAction(QCocoaMenuAction *action)
// Cocoa Font and title
if (action->action->font().resolve()) {
const QFont &actionFont = action->action->font();
- NSFont *customMenuFont = [NSFont fontWithName:qt_mac_QStringToNSString(actionFont.family())
+ NSFont *customMenuFont = [NSFont fontWithName:QCFString::toNSString(actionFont.family())
size:actionFont.pointSize()];
NSArray *keys = [NSArray arrayWithObjects:NSFontAttributeName, nil];
NSArray *objects = [NSArray arrayWithObjects:customMenuFont, nil];
NSDictionary *attributes = [NSDictionary dictionaryWithObjects:objects forKeys:keys];
- NSAttributedString *str = [[[NSAttributedString alloc] initWithString:qt_mac_QStringToNSString(finalString)
+ NSAttributedString *str = [[[NSAttributedString alloc] initWithString:QCFString::toNSString(finalString)
attributes:attributes] autorelease];
[item setAttributedTitle: str];
} else {
- [item setTitle: qt_mac_QStringToNSString(finalString)];
+ [item setTitle: QCFString::toNSString(finalString)];
}
if (action->action->menuRole() == QAction::AboutRole || action->action->menuRole() == QAction::QuitRole)
- [item setTitle:qt_mac_QStringToNSString(text)];
+ [item setTitle:QCFString::toNSString(text)];
else
- [item setTitle:qt_mac_QStringToNSString(qt_mac_removeMnemonics(text))];
+ [item setTitle:QCFString::toNSString(qt_mac_removeMnemonics(text))];
// Cocoa Enabled
[item setEnabled: action->action->isEnabled()];
@@ -776,9 +776,9 @@ void QCocoaMenu::setMenuEnabled(bool enable)
/*****************************************************************************
QMenuBar bindings
*****************************************************************************/
-typedef QHash<QWidget *, QMenuBar *> MenuBarHash;
+typedef QHash<QWidget *, QWeakPointer<QMenuBar> > MenuBarHash;
Q_GLOBAL_STATIC(MenuBarHash, menubars)
-static QMenuBar *fallback = 0;
+static QWeakPointer<QMenuBar> fallback;
QCocoaMenuBar::QCocoaMenuBar(QMenuBar *a_qtMenuBar) : menu(0), apple_menu(0), qtMenuBar(a_qtMenuBar)
{
@@ -873,7 +873,7 @@ void QCocoaMenuBar::syncAction(QCocoaMenuAction *action)
if (submenu) {
bool visible = actualMenuItemVisibility(this, action);
[item setSubmenu: submenu];
- [submenu setTitle:qt_mac_QStringToNSString(qt_mac_removeMnemonics(action->action->text()))];
+ [submenu setTitle:QCFString::toNSString(qt_mac_removeMnemonics(action->action->text()))];
syncNSMenuItemVisiblity(item, visible);
if (release_submenu) { //no pointers to it
[submenu release];
@@ -956,8 +956,8 @@ void QCocoaMenuBar::macCreateMenuBar(QWidget *parent)
void QCocoaMenuBar::macDestroyMenuBar()
{
QCocoaAutoReleasePool pool;
- if (fallback == qtMenuBar)
- fallback = 0;
+ if (fallback.data() == qtMenuBar)
+ fallback.clear();
QWidget *tlw = qtMenuBar->window();
menubars()->remove(tlw);
@@ -978,7 +978,7 @@ OSMenuRef QCocoaMenuBar::macMenu()
if (GetCurrentProcess(&mine) == noErr && GetFrontProcess(&front) == noErr) {
if (!qt_mac_no_menubar_merge && !apple_menu) {
apple_menu = qt_mac_create_menu(qtMenuBar);
- [apple_menu setTitle:qt_mac_QStringToNSString(QString(QChar(0x14)))];
+ [apple_menu setTitle:QCFString::toNSString(QString(QChar(0x14)))];
NSMenuItem *apple_menuItem = [[NSMenuItem alloc] init];
[apple_menuItem setSubmenu:menu];
[apple_menu addItem:apple_menuItem];
@@ -1038,7 +1038,7 @@ static bool qt_mac_should_disable_menu(QMenuBar *menuBar)
if (!modalWidget)
return false;
- if (menuBar && menuBar == menubars()->value(modalWidget))
+ if (menuBar && menuBar == menubars()->value(modalWidget).data())
// The menu bar is owned by the modal widget.
// In that case we should enable it:
return false;
@@ -1098,7 +1098,7 @@ static QMenuBar *findMenubarForWindow(QWidget *w)
{
QMenuBar *mb = 0;
if (w) {
- mb = menubars()->value(w);
+ mb = menubars()->value(w).data();
#if 0
// ###
@@ -1111,13 +1111,13 @@ static QMenuBar *findMenubarForWindow(QWidget *w)
}
#endif
while(w && !mb)
- mb = menubars()->value((w = w->parentWidget()));
+ mb = menubars()->value((w = w->parentWidget())).data();
}
if (!mb) {
// We could not find a menu bar for the window. Lets
// check if we have a global (parentless) menu bar instead:
- mb = fallback;
+ mb = fallback.data();
}
return mb;
diff --git a/src/plugins/platforms/cocoa/qmultitouch_mac.mm b/src/plugins/platforms/cocoa/qmultitouch_mac.mm
index 43767b09b2..86b5e3de18 100644
--- a/src/plugins/platforms/cocoa/qmultitouch_mac.mm
+++ b/src/plugins/platforms/cocoa/qmultitouch_mac.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qmultitouch_mac_p.h b/src/plugins/platforms/cocoa/qmultitouch_mac_p.h
index 146c21d53c..11770021db 100644
--- a/src/plugins/platforms/cocoa/qmultitouch_mac_p.h
+++ b/src/plugins/platforms/cocoa/qmultitouch_mac_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qnsview.h b/src/plugins/platforms/cocoa/qnsview.h
index 73c8030e1d..c61ff2bd02 100644
--- a/src/plugins/platforms/cocoa/qnsview.h
+++ b/src/plugins/platforms/cocoa/qnsview.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,7 +47,10 @@
#include <QtGui/QImage>
#include <QtGui/QAccessible>
+QT_BEGIN_NAMESPACE
class QCocoaWindow;
+QT_END_NAMESPACE
+
@interface QNSView : NSView {
CGImageRef m_cgImage;
QWindow *m_window;
diff --git a/src/plugins/platforms/cocoa/qnsview.mm b/src/plugins/platforms/cocoa/qnsview.mm
index 26ddd44aa6..577e0751c6 100644
--- a/src/plugins/platforms/cocoa/qnsview.mm
+++ b/src/plugins/platforms/cocoa/qnsview.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qnsviewaccessibility.mm b/src/plugins/platforms/cocoa/qnsviewaccessibility.mm
index da6e4d0481..d20246d292 100644
--- a/src/plugins/platforms/cocoa/qnsviewaccessibility.mm
+++ b/src/plugins/platforms/cocoa/qnsviewaccessibility.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -75,7 +75,7 @@
int numKids = m_accessibleRoot->childCount();
NSMutableArray *kids = [NSMutableArray arrayWithCapacity:numKids];
for (int i = 0; i < numKids; ++i) {
- [kids addObject:[QCocoaAccessibleElement elementWithIndex:i parent:self accessibleInterface:(void*)m_accessibleRoot->child(i)]];
+ [kids addObject:[QCocoaAccessibleElement elementWithInterface: m_accessibleRoot->child(i) parent:self ]];
}
return NSAccessibilityUnignoredChildren(kids);
@@ -96,8 +96,8 @@
}
// Hit a child, forward to child accessible interface.
- int childIndex = m_accessibleRoot->indexOfChild(childInterface);
- QCocoaAccessibleElement *accessibleElement = [QCocoaAccessibleElement elementWithIndex:childIndex -1 parent:self accessibleInterface: childInterface];
+
+ QCocoaAccessibleElement *accessibleElement = [QCocoaAccessibleElement elementWithInterface: childInterface parent:self ];
return [accessibleElement accessibilityHitTest:point];
}
diff --git a/src/plugins/platforms/cocoa/qnswindowdelegate.h b/src/plugins/platforms/cocoa/qnswindowdelegate.h
index c41477cc49..f77c5d765b 100644
--- a/src/plugins/platforms/cocoa/qnswindowdelegate.h
+++ b/src/plugins/platforms/cocoa/qnswindowdelegate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qnswindowdelegate.mm b/src/plugins/platforms/cocoa/qnswindowdelegate.mm
index ddbff031c9..a0e98e0ed1 100644
--- a/src/plugins/platforms/cocoa/qnswindowdelegate.mm
+++ b/src/plugins/platforms/cocoa/qnswindowdelegate.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/cocoa/qt_mac_p.h b/src/plugins/platforms/cocoa/qt_mac_p.h
new file mode 100644
index 0000000000..947097294a
--- /dev/null
+++ b/src/plugins/platforms/cocoa/qt_mac_p.h
@@ -0,0 +1,284 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** 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$
+**
+****************************************************************************/
+
+#ifndef QT_MAC_P_H
+#define QT_MAC_P_H
+
+//
+// W A R N I N G
+// -------------
+//
+// This file is not part of the Qt API. It exists purely as an
+// implementation detail. This header file may change from version to
+// version without notice, or even be removed.
+//
+// We mean it.
+//
+
+#include "qmacdefines_mac.h"
+
+#ifdef __OBJC__
+#include <Cocoa/Cocoa.h>
+#include <objc/runtime.h>
+#endif
+
+#include <CoreServices/CoreServices.h>
+
+#include "QtCore/qglobal.h"
+#include "QtCore/qvariant.h"
+#include "QtCore/qmimedata.h"
+#include "QtCore/qpointer.h"
+#include "private/qcore_mac_p.h"
+
+
+#include "QtGui/qpainter.h"
+
+#include <Carbon/Carbon.h>
+
+QT_BEGIN_NAMESPACE
+class QWidget;
+class QDragMoveEvent;
+
+/* Event masks */
+// internal Qt types
+
+ // Event class for our own Carbon events.
+#if defined(QT_NAMESPACE) && defined(QT_NAMESPACE_MAC_CRC)
+// Take the CRC we generated at configure time. This *may* result in a
+// collision with another value If that is the case, please change the value
+// here to something other than 'Cute'.
+const UInt32 kEventClassQt = QT_NAMESPACE_MAC_CRC;
+#else
+const UInt32 kEventClassQt = 'Cute';
+#endif
+
+enum {
+ //AE types
+ typeAEClipboardChanged = 1,
+ //types
+ typeQWidget = 1, /* QWidget * */
+ //params
+ kEventParamQWidget = 'qwid', /* typeQWidget */
+ //events
+ kEventQtRequestContext = 13,
+ kEventQtRequestMenubarUpdate = 14,
+ kEventQtRequestShowSheet = 17,
+ kEventQtRequestActivate = 18,
+ kEventQtRequestWindowChange = 20
+};
+
+// Simple class to manage short-lived regions
+class QMacSmartQuickDrawRegion
+{
+ RgnHandle qdRgn;
+ Q_DISABLE_COPY(QMacSmartQuickDrawRegion)
+public:
+ explicit QMacSmartQuickDrawRegion(RgnHandle rgn) : qdRgn(rgn) {}
+ ~QMacSmartQuickDrawRegion() {
+ extern void qt_mac_dispose_rgn(RgnHandle); // qregion_mac.cpp
+ qt_mac_dispose_rgn(qdRgn);
+ }
+ operator RgnHandle() {
+ return qdRgn;
+ }
+};
+
+// Class for chaining to gether a bunch of fades. It pretty much is only used for qmenu fading.
+class QMacWindowFader
+{
+ QWidgetList m_windowsToFade;
+ float m_duration;
+ Q_DISABLE_COPY(QMacWindowFader)
+public:
+ QMacWindowFader(); // PLEASE DON'T CALL THIS.
+ static QMacWindowFader *currentFader();
+ void registerWindowToFade(QWidget *window);
+ void setFadeDuration(float durationInSecs) { m_duration = durationInSecs; }
+ float fadeDuration() const { return m_duration; }
+ void performFade();
+};
+
+class Q_WIDGETS_EXPORT QMacCocoaAutoReleasePool
+{
+private:
+ void *pool;
+public:
+ QMacCocoaAutoReleasePool();
+ ~QMacCocoaAutoReleasePool();
+
+ inline void *handle() const { return pool; }
+};
+
+QString qt_mac_removeMnemonics(const QString &original); //implemented in qmacstyle_mac.cpp
+
+class Q_WIDGETS_EXPORT QMacWindowChangeEvent
+{
+private:
+ static QList<QMacWindowChangeEvent*> *change_events;
+public:
+ QMacWindowChangeEvent() {
+ }
+ virtual ~QMacWindowChangeEvent() {
+ }
+ static inline void exec(bool ) {
+ }
+protected:
+ virtual void windowChanged() = 0;
+ virtual void flushWindowChanged() = 0;
+};
+
+class QMacCGContext
+{
+ CGContextRef context;
+public:
+ QMacCGContext(QPainter *p); //qpaintengine_mac.cpp
+ inline QMacCGContext() { context = 0; }
+ inline QMacCGContext(const QPaintDevice *pdev) {
+ extern CGContextRef qt_mac_cg_context(const QPaintDevice *);
+ context = qt_mac_cg_context(pdev);
+ }
+ inline QMacCGContext(CGContextRef cg, bool takeOwnership=false) {
+ context = cg;
+ if(!takeOwnership)
+ CGContextRetain(context);
+ }
+ inline QMacCGContext(const QMacCGContext &copy) : context(0) { *this = copy; }
+ inline ~QMacCGContext() {
+ if(context)
+ CGContextRelease(context);
+ }
+ inline bool isNull() const { return context; }
+ inline operator CGContextRef() { return context; }
+ inline QMacCGContext &operator=(const QMacCGContext &copy) {
+ if(context)
+ CGContextRelease(context);
+ context = copy.context;
+ CGContextRetain(context);
+ return *this;
+ }
+ inline QMacCGContext &operator=(CGContextRef cg) {
+ if(context)
+ CGContextRelease(context);
+ context = cg;
+ CGContextRetain(context); //we do not take ownership
+ return *this;
+ }
+};
+
+class QMacPasteboardMime;
+class QMimeData;
+
+class QMacPasteboard
+{
+ struct Promise {
+ Promise() : itemId(0), convertor(0) { }
+ Promise(int itemId, QMacPasteboardMime *c, QString m, QVariant d, int o=0) : itemId(itemId), offset(o), convertor(c), mime(m), data(d) { }
+ int itemId, offset;
+ QMacPasteboardMime *convertor;
+ QString mime;
+ QVariant data;
+ };
+ QList<Promise> promises;
+
+ OSPasteboardRef paste;
+ uchar mime_type;
+ mutable QPointer<QMimeData> mime;
+ mutable bool mac_mime_source;
+ static OSStatus promiseKeeper(OSPasteboardRef, PasteboardItemID, CFStringRef, void *);
+ void clear_helper();
+public:
+ QMacPasteboard(OSPasteboardRef p, uchar mime_type=0);
+ QMacPasteboard(uchar mime_type);
+ QMacPasteboard(CFStringRef name=0, uchar mime_type=0);
+ ~QMacPasteboard();
+
+ bool hasFlavor(QString flavor) const;
+ bool hasOSType(int c_flavor) const;
+
+ OSPasteboardRef pasteBoard() const;
+ QMimeData *mimeData() const;
+ void setMimeData(QMimeData *mime);
+
+ QStringList formats() const;
+ bool hasFormat(const QString &format) const;
+ QVariant retrieveData(const QString &format, QVariant::Type) const;
+
+ void clear();
+ bool sync() const;
+};
+
+extern QPaintDevice *qt_mac_safe_pdev; //qapplication_mac.cpp
+
+extern OSWindowRef qt_mac_window_for(const QWidget*); //qwidget_mac.mm
+extern OSViewRef qt_mac_nativeview_for(const QWidget *); //qwidget_mac.mm
+extern QPoint qt_mac_nativeMapFromParent(const QWidget *child, const QPoint &pt); //qwidget_mac.mm
+
+#ifdef check
+# undef check
+#endif
+
+QFont qfontForThemeFont(ThemeFontID themeID);
+
+QColor qcolorForTheme(ThemeBrush brush);
+
+QColor qcolorForThemeTextColor(ThemeTextColor themeColor);
+
+struct QMacDndAnswerRecord {
+ QRect rect;
+ Qt::KeyboardModifiers modifiers;
+ Qt::MouseButtons buttons;
+ Qt::DropAction lastAction;
+ unsigned int lastOperation;
+ void clear() {
+ rect = QRect();
+ modifiers = Qt::NoModifier;
+ buttons = Qt::NoButton;
+ lastAction = Qt::IgnoreAction;
+ lastOperation = 0;
+ }
+};
+extern QMacDndAnswerRecord qt_mac_dnd_answer_rec;
+void qt_mac_copy_answer_rect(const QDragMoveEvent &event);
+bool qt_mac_mouse_inside_answer_rect(QPoint mouse);
+
+QT_END_NAMESPACE
+
+#endif // QT_MAC_P_H
diff --git a/src/plugins/platforms/directfb/main.cpp b/src/plugins/platforms/directfb/main.cpp
index 77d8a7e519..048e9ed611 100644
--- a/src/plugins/platforms/directfb/main.cpp
+++ b/src/plugins/platforms/directfb/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/directfb/qdirectfb_egl.cpp b/src/plugins/platforms/directfb/qdirectfb_egl.cpp
index 0736b284c9..ee0cbbae95 100644
--- a/src/plugins/platforms/directfb/qdirectfb_egl.cpp
+++ b/src/plugins/platforms/directfb/qdirectfb_egl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/directfb/qdirectfb_egl.h b/src/plugins/platforms/directfb/qdirectfb_egl.h
index 652a5b53da..88f7e60e99 100644
--- a/src/plugins/platforms/directfb/qdirectfb_egl.h
+++ b/src/plugins/platforms/directfb/qdirectfb_egl.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/directfb/qdirectfbbackingstore.cpp b/src/plugins/platforms/directfb/qdirectfbbackingstore.cpp
index 8e03cde101..95e3609172 100644
--- a/src/plugins/platforms/directfb/qdirectfbbackingstore.cpp
+++ b/src/plugins/platforms/directfb/qdirectfbbackingstore.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/directfb/qdirectfbbackingstore.h b/src/plugins/platforms/directfb/qdirectfbbackingstore.h
index d51237e7e8..327329a563 100644
--- a/src/plugins/platforms/directfb/qdirectfbbackingstore.h
+++ b/src/plugins/platforms/directfb/qdirectfbbackingstore.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/directfb/qdirectfbblitter.cpp b/src/plugins/platforms/directfb/qdirectfbblitter.cpp
index bb5fa0b288..acd6dc9900 100644
--- a/src/plugins/platforms/directfb/qdirectfbblitter.cpp
+++ b/src/plugins/platforms/directfb/qdirectfbblitter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -247,14 +247,8 @@ bool QDirectFbBlitterPlatformPixmap::fromFile(const QString &filename, const cha
return QBlittablePlatformPixmap::fromFile(filename, format, flags);
// Deal with resources
- if (filename.startsWith(QLatin1Char(':'))) { // resource
- QFile file(filename);
- if (!file.open(QIODevice::ReadOnly))
- return false;
- const QByteArray data = file.readAll();
- file.close();
- return fromData(reinterpret_cast<const uchar*>(data.constData()), data.size(), format, flags);
- }
+ if (filename.startsWith(QLatin1Char(':')))
+ return QBlittablePlatformPixmap::fromFile(filename, format, flags);
// Try to use directfb to load it.
DFBDataBufferDescription description;
diff --git a/src/plugins/platforms/directfb/qdirectfbblitter.h b/src/plugins/platforms/directfb/qdirectfbblitter.h
index 99120dd25f..bfaa3ba59d 100644
--- a/src/plugins/platforms/directfb/qdirectfbblitter.h
+++ b/src/plugins/platforms/directfb/qdirectfbblitter.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/directfb/qdirectfbconvenience.cpp b/src/plugins/platforms/directfb/qdirectfbconvenience.cpp
index 9df56ac66a..7b253b7220 100644
--- a/src/plugins/platforms/directfb/qdirectfbconvenience.cpp
+++ b/src/plugins/platforms/directfb/qdirectfbconvenience.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/directfb/qdirectfbconvenience.h b/src/plugins/platforms/directfb/qdirectfbconvenience.h
index 1dfce81eab..f24aaa20f5 100644
--- a/src/plugins/platforms/directfb/qdirectfbconvenience.h
+++ b/src/plugins/platforms/directfb/qdirectfbconvenience.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/directfb/qdirectfbcursor.cpp b/src/plugins/platforms/directfb/qdirectfbcursor.cpp
index 3967630fde..e1660a998a 100644
--- a/src/plugins/platforms/directfb/qdirectfbcursor.cpp
+++ b/src/plugins/platforms/directfb/qdirectfbcursor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/directfb/qdirectfbcursor.h b/src/plugins/platforms/directfb/qdirectfbcursor.h
index 8a95f03d61..3cc2825b28 100644
--- a/src/plugins/platforms/directfb/qdirectfbcursor.h
+++ b/src/plugins/platforms/directfb/qdirectfbcursor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/directfb/qdirectfbglcontext.cpp b/src/plugins/platforms/directfb/qdirectfbglcontext.cpp
index 91ae24d976..864a867c36 100644
--- a/src/plugins/platforms/directfb/qdirectfbglcontext.cpp
+++ b/src/plugins/platforms/directfb/qdirectfbglcontext.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/directfb/qdirectfbglcontext.h b/src/plugins/platforms/directfb/qdirectfbglcontext.h
index 4a6018a99a..7aac12c2f9 100644
--- a/src/plugins/platforms/directfb/qdirectfbglcontext.h
+++ b/src/plugins/platforms/directfb/qdirectfbglcontext.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/directfb/qdirectfbinput.cpp b/src/plugins/platforms/directfb/qdirectfbinput.cpp
index bcb291cdde..d980f5453a 100644
--- a/src/plugins/platforms/directfb/qdirectfbinput.cpp
+++ b/src/plugins/platforms/directfb/qdirectfbinput.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/directfb/qdirectfbinput.h b/src/plugins/platforms/directfb/qdirectfbinput.h
index ab9aa912a1..0d2081bef3 100644
--- a/src/plugins/platforms/directfb/qdirectfbinput.h
+++ b/src/plugins/platforms/directfb/qdirectfbinput.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/directfb/qdirectfbintegration.cpp b/src/plugins/platforms/directfb/qdirectfbintegration.cpp
index 6c579f0dc7..d167c465be 100644
--- a/src/plugins/platforms/directfb/qdirectfbintegration.cpp
+++ b/src/plugins/platforms/directfb/qdirectfbintegration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/directfb/qdirectfbintegration.h b/src/plugins/platforms/directfb/qdirectfbintegration.h
index 58372b4178..56d785e00f 100644
--- a/src/plugins/platforms/directfb/qdirectfbintegration.h
+++ b/src/plugins/platforms/directfb/qdirectfbintegration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/directfb/qdirectfbscreen.cpp b/src/plugins/platforms/directfb/qdirectfbscreen.cpp
index 6b9855e489..5a49998510 100644
--- a/src/plugins/platforms/directfb/qdirectfbscreen.cpp
+++ b/src/plugins/platforms/directfb/qdirectfbscreen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/directfb/qdirectfbscreen.h b/src/plugins/platforms/directfb/qdirectfbscreen.h
index a3e1f1eebf..ad80576c8f 100644
--- a/src/plugins/platforms/directfb/qdirectfbscreen.h
+++ b/src/plugins/platforms/directfb/qdirectfbscreen.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/directfb/qdirectfbwindow.cpp b/src/plugins/platforms/directfb/qdirectfbwindow.cpp
index b18970cb50..dd2d4e488c 100644
--- a/src/plugins/platforms/directfb/qdirectfbwindow.cpp
+++ b/src/plugins/platforms/directfb/qdirectfbwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -65,8 +65,8 @@ QDirectFbWindow::QDirectFbWindow(QWindow *tlw, QDirectFbInput *inputhandler)
|DWDESC_OPTIONS
#endif
|DWDESC_CAPS);
- description.width = tlw->width();
- description.height = tlw->height();
+ description.width = qMax(1, tlw->width());
+ description.height = qMax(1, tlw->height());
description.posx = tlw->x();
description.posy = tlw->y();
@@ -213,4 +213,4 @@ IDirectFBSurface *QDirectFbWindow::dfbSurface()
return m_dfbSurface.data();
}
-QT_END_NAMESPACE \ No newline at end of file
+QT_END_NAMESPACE
diff --git a/src/plugins/platforms/directfb/qdirectfbwindow.h b/src/plugins/platforms/directfb/qdirectfbwindow.h
index bf009a1441..e0206b5d02 100644
--- a/src/plugins/platforms/directfb/qdirectfbwindow.h
+++ b/src/plugins/platforms/directfb/qdirectfbwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/eglfs/main.cpp b/src/plugins/platforms/eglfs/main.cpp
index f88ef1c928..e4167bf173 100644
--- a/src/plugins/platforms/eglfs/main.cpp
+++ b/src/plugins/platforms/eglfs/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/eglfs/qeglfsbackingstore.cpp b/src/plugins/platforms/eglfs/qeglfsbackingstore.cpp
index 448958758a..331b768a93 100644
--- a/src/plugins/platforms/eglfs/qeglfsbackingstore.cpp
+++ b/src/plugins/platforms/eglfs/qeglfsbackingstore.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/eglfs/qeglfsbackingstore.h b/src/plugins/platforms/eglfs/qeglfsbackingstore.h
index 7057544174..5623a96004 100644
--- a/src/plugins/platforms/eglfs/qeglfsbackingstore.h
+++ b/src/plugins/platforms/eglfs/qeglfsbackingstore.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.cpp b/src/plugins/platforms/eglfs/qeglfsintegration.cpp
index 47d5bd49eb..d180de349e 100644
--- a/src/plugins/platforms/eglfs/qeglfsintegration.cpp
+++ b/src/plugins/platforms/eglfs/qeglfsintegration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/eglfs/qeglfsintegration.h b/src/plugins/platforms/eglfs/qeglfsintegration.h
index 58af1462b0..ee30d4bbf2 100644
--- a/src/plugins/platforms/eglfs/qeglfsintegration.h
+++ b/src/plugins/platforms/eglfs/qeglfsintegration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/eglfs/qeglfsscreen.cpp b/src/plugins/platforms/eglfs/qeglfsscreen.cpp
index ad1db3cd1c..000bedf293 100644
--- a/src/plugins/platforms/eglfs/qeglfsscreen.cpp
+++ b/src/plugins/platforms/eglfs/qeglfsscreen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/eglfs/qeglfsscreen.h b/src/plugins/platforms/eglfs/qeglfsscreen.h
index c9b9ecd442..18fc643b98 100644
--- a/src/plugins/platforms/eglfs/qeglfsscreen.h
+++ b/src/plugins/platforms/eglfs/qeglfsscreen.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/eglfs/qeglfswindow.cpp b/src/plugins/platforms/eglfs/qeglfswindow.cpp
index 7c5df8b197..f380542559 100644
--- a/src/plugins/platforms/eglfs/qeglfswindow.cpp
+++ b/src/plugins/platforms/eglfs/qeglfswindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/eglfs/qeglfswindow.h b/src/plugins/platforms/eglfs/qeglfswindow.h
index 83ad7886b3..807470bc78 100644
--- a/src/plugins/platforms/eglfs/qeglfswindow.h
+++ b/src/plugins/platforms/eglfs/qeglfswindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/kms/main.cpp b/src/plugins/platforms/kms/main.cpp
index 743b82dbf4..d79d0d240f 100644
--- a/src/plugins/platforms/kms/main.cpp
+++ b/src/plugins/platforms/kms/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/kms/qkmsbackingstore.cpp b/src/plugins/platforms/kms/qkmsbackingstore.cpp
index 7d6e709c4d..d32f9f1775 100644
--- a/src/plugins/platforms/kms/qkmsbackingstore.cpp
+++ b/src/plugins/platforms/kms/qkmsbackingstore.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/kms/qkmsbackingstore.h b/src/plugins/platforms/kms/qkmsbackingstore.h
index 6d06697cf1..ab276fa753 100644
--- a/src/plugins/platforms/kms/qkmsbackingstore.h
+++ b/src/plugins/platforms/kms/qkmsbackingstore.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/kms/qkmsbuffermanager.cpp b/src/plugins/platforms/kms/qkmsbuffermanager.cpp
index 743c592383..5c231e6beb 100644
--- a/src/plugins/platforms/kms/qkmsbuffermanager.cpp
+++ b/src/plugins/platforms/kms/qkmsbuffermanager.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/kms/qkmsbuffermanager.h b/src/plugins/platforms/kms/qkmsbuffermanager.h
index 1a0a41cf47..8f7970f768 100644
--- a/src/plugins/platforms/kms/qkmsbuffermanager.h
+++ b/src/plugins/platforms/kms/qkmsbuffermanager.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/kms/qkmscontext.cpp b/src/plugins/platforms/kms/qkmscontext.cpp
index 5a966deca4..66829bc73a 100644
--- a/src/plugins/platforms/kms/qkmscontext.cpp
+++ b/src/plugins/platforms/kms/qkmscontext.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/kms/qkmscontext.h b/src/plugins/platforms/kms/qkmscontext.h
index e1c636d925..57f3a1a8e5 100644
--- a/src/plugins/platforms/kms/qkmscontext.h
+++ b/src/plugins/platforms/kms/qkmscontext.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/kms/qkmscursor.cpp b/src/plugins/platforms/kms/qkmscursor.cpp
index 825c884a98..a38f66bd02 100644
--- a/src/plugins/platforms/kms/qkmscursor.cpp
+++ b/src/plugins/platforms/kms/qkmscursor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/kms/qkmscursor.h b/src/plugins/platforms/kms/qkmscursor.h
index b4276c7b0c..f6e1176a36 100644
--- a/src/plugins/platforms/kms/qkmscursor.h
+++ b/src/plugins/platforms/kms/qkmscursor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/kms/qkmsdevice.cpp b/src/plugins/platforms/kms/qkmsdevice.cpp
index ed33829baa..01bf1d12be 100644
--- a/src/plugins/platforms/kms/qkmsdevice.cpp
+++ b/src/plugins/platforms/kms/qkmsdevice.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/kms/qkmsdevice.h b/src/plugins/platforms/kms/qkmsdevice.h
index 5b4583a03b..14962189e9 100644
--- a/src/plugins/platforms/kms/qkmsdevice.h
+++ b/src/plugins/platforms/kms/qkmsdevice.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/kms/qkmsintegration.cpp b/src/plugins/platforms/kms/qkmsintegration.cpp
index 5d219d7327..c495ca26f9 100644
--- a/src/plugins/platforms/kms/qkmsintegration.cpp
+++ b/src/plugins/platforms/kms/qkmsintegration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/kms/qkmsintegration.h b/src/plugins/platforms/kms/qkmsintegration.h
index 4b3f5dc74b..5724471295 100644
--- a/src/plugins/platforms/kms/qkmsintegration.h
+++ b/src/plugins/platforms/kms/qkmsintegration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/kms/qkmsscreen.cpp b/src/plugins/platforms/kms/qkmsscreen.cpp
index 26189b2d13..f1b9baf120 100644
--- a/src/plugins/platforms/kms/qkmsscreen.cpp
+++ b/src/plugins/platforms/kms/qkmsscreen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/kms/qkmsscreen.h b/src/plugins/platforms/kms/qkmsscreen.h
index f78663dbf4..4cb547b424 100644
--- a/src/plugins/platforms/kms/qkmsscreen.h
+++ b/src/plugins/platforms/kms/qkmsscreen.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/kms/qkmswindow.cpp b/src/plugins/platforms/kms/qkmswindow.cpp
index 5d540a8eb6..edbd35d6c0 100644
--- a/src/plugins/platforms/kms/qkmswindow.cpp
+++ b/src/plugins/platforms/kms/qkmswindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/kms/qkmswindow.h b/src/plugins/platforms/kms/qkmswindow.h
index 6433ab7fd9..2a7839681f 100644
--- a/src/plugins/platforms/kms/qkmswindow.h
+++ b/src/plugins/platforms/kms/qkmswindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/linuxfb/main.cpp b/src/plugins/platforms/linuxfb/main.cpp
index 99efc68a32..1339700534 100644
--- a/src/plugins/platforms/linuxfb/main.cpp
+++ b/src/plugins/platforms/linuxfb/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp b/src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
index 7f76b045de..e846050a0e 100644
--- a/src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
+++ b/src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/linuxfb/qlinuxfbintegration.h b/src/plugins/platforms/linuxfb/qlinuxfbintegration.h
index 1c10a6b8fc..3c8f03374a 100644
--- a/src/plugins/platforms/linuxfb/qlinuxfbintegration.h
+++ b/src/plugins/platforms/linuxfb/qlinuxfbintegration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/minimal/main.cpp b/src/plugins/platforms/minimal/main.cpp
index 4d9b24edc1..4d3b3a1362 100644
--- a/src/plugins/platforms/minimal/main.cpp
+++ b/src/plugins/platforms/minimal/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/minimal/qminimalbackingstore.cpp b/src/plugins/platforms/minimal/qminimalbackingstore.cpp
index c564e8eff0..b6b9c0e979 100644
--- a/src/plugins/platforms/minimal/qminimalbackingstore.cpp
+++ b/src/plugins/platforms/minimal/qminimalbackingstore.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,9 +48,12 @@
QT_BEGIN_NAMESPACE
QMinimalBackingStore::QMinimalBackingStore(QWindow *window)
- : QPlatformBackingStore(window)
+ : QPlatformBackingStore(window),mDebug(false)
{
- //qDebug() << "QMinimalBackingStore::QMinimalBackingStore:" << (long)this;
+ if (QT_PREPEND_NAMESPACE(qgetenv)("QT_DEBUG_BACKINGSTORE").toInt() > 0)
+ mDebug = true;
+ if (mDebug)
+ qDebug() << "QMinimalBackingStore::QMinimalBackingStore:" << (long)this;
}
QMinimalBackingStore::~QMinimalBackingStore()
@@ -59,7 +62,9 @@ QMinimalBackingStore::~QMinimalBackingStore()
QPaintDevice *QMinimalBackingStore::paintDevice()
{
- //qDebug() << "QMinimalBackingStore::paintDevice";
+ if (mDebug)
+ qDebug() << "QMinimalBackingStore::paintDevice";
+
return &mImage;
}
@@ -69,15 +74,16 @@ void QMinimalBackingStore::flush(QWindow *window, const QRegion &region, const Q
Q_UNUSED(region);
Q_UNUSED(offset);
- static int c = 0;
- QString filename = QString("output%1.png").arg(c++, 4, 10, QLatin1Char('0'));
- qDebug() << "QMinimalBackingStore::flush() saving contents to" << filename.toLocal8Bit().constData();
- mImage.save(filename);
+ if (mDebug) {
+ static int c = 0;
+ QString filename = QString("output%1.png").arg(c++, 4, 10, QLatin1Char('0'));
+ qDebug() << "QMinimalBackingStore::flush() saving contents to" << filename.toLocal8Bit().constData();
+ mImage.save(filename);
+ }
}
void QMinimalBackingStore::resize(const QSize &size, const QRegion &)
{
- //qDebug() << "QMinimalBackingStore::setGeometry:" << (long)this << rect;
QImage::Format format = QGuiApplication::primaryScreen()->handle()->format();
if (mImage.size() != size)
mImage = QImage(size, format);
diff --git a/src/plugins/platforms/minimal/qminimalbackingstore.h b/src/plugins/platforms/minimal/qminimalbackingstore.h
index 717474cd27..375edaa2f3 100644
--- a/src/plugins/platforms/minimal/qminimalbackingstore.h
+++ b/src/plugins/platforms/minimal/qminimalbackingstore.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,6 +60,7 @@ public:
private:
QImage mImage;
+ bool mDebug;
};
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/minimal/qminimalintegration.cpp b/src/plugins/platforms/minimal/qminimalintegration.cpp
index 05fd28a08b..874f270f42 100644
--- a/src/plugins/platforms/minimal/qminimalintegration.cpp
+++ b/src/plugins/platforms/minimal/qminimalintegration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/minimal/qminimalintegration.h b/src/plugins/platforms/minimal/qminimalintegration.h
index 01118c32ee..2b345e009e 100644
--- a/src/plugins/platforms/minimal/qminimalintegration.h
+++ b/src/plugins/platforms/minimal/qminimalintegration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openkode/main.cpp b/src/plugins/platforms/openkode/main.cpp
index 7b857d288c..0507d5bfb2 100644
--- a/src/plugins/platforms/openkode/main.cpp
+++ b/src/plugins/platforms/openkode/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openkode/openkodekeytranslator.h b/src/plugins/platforms/openkode/openkodekeytranslator.h
index 37f697a787..63f4e4e3ac 100644
--- a/src/plugins/platforms/openkode/openkodekeytranslator.h
+++ b/src/plugins/platforms/openkode/openkodekeytranslator.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openkode/qopenkodeeventloopintegration.cpp b/src/plugins/platforms/openkode/qopenkodeeventloopintegration.cpp
index c4808790e0..b0890ccbae 100644
--- a/src/plugins/platforms/openkode/qopenkodeeventloopintegration.cpp
+++ b/src/plugins/platforms/openkode/qopenkodeeventloopintegration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openkode/qopenkodeeventloopintegration.h b/src/plugins/platforms/openkode/qopenkodeeventloopintegration.h
index 1e9960f011..0ba0eb882f 100644
--- a/src/plugins/platforms/openkode/qopenkodeeventloopintegration.h
+++ b/src/plugins/platforms/openkode/qopenkodeeventloopintegration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openkode/qopenkodeintegration.cpp b/src/plugins/platforms/openkode/qopenkodeintegration.cpp
index c882cb96c7..d34bd8e029 100644
--- a/src/plugins/platforms/openkode/qopenkodeintegration.cpp
+++ b/src/plugins/platforms/openkode/qopenkodeintegration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openkode/qopenkodeintegration.h b/src/plugins/platforms/openkode/qopenkodeintegration.h
index c10aecb821..31d76dcad7 100644
--- a/src/plugins/platforms/openkode/qopenkodeintegration.h
+++ b/src/plugins/platforms/openkode/qopenkodeintegration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openkode/qopenkodewindow.cpp b/src/plugins/platforms/openkode/qopenkodewindow.cpp
index 14f7438b99..23bcd12440 100644
--- a/src/plugins/platforms/openkode/qopenkodewindow.cpp
+++ b/src/plugins/platforms/openkode/qopenkodewindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openkode/qopenkodewindow.h b/src/plugins/platforms/openkode/qopenkodewindow.h
index 3142aa2faa..7685350eb8 100644
--- a/src/plugins/platforms/openkode/qopenkodewindow.h
+++ b/src/plugins/platforms/openkode/qopenkodewindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openkode/shaders/frag.glslf b/src/plugins/platforms/openkode/shaders/frag.glslf
index a48a342679..f657f4f926 100644
--- a/src/plugins/platforms/openkode/shaders/frag.glslf
+++ b/src/plugins/platforms/openkode/shaders/frag.glslf
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openkode/shaders/vert.glslv b/src/plugins/platforms/openkode/shaders/vert.glslv
index 3eb8010773..d7d6e15772 100644
--- a/src/plugins/platforms/openkode/shaders/vert.glslv
+++ b/src/plugins/platforms/openkode/shaders/vert.glslv
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openvglite/main.cpp b/src/plugins/platforms/openvglite/main.cpp
index de6b2e38b3..83ffc06452 100644
--- a/src/plugins/platforms/openvglite/main.cpp
+++ b/src/plugins/platforms/openvglite/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openvglite/qgraphicssystem_vglite.cpp b/src/plugins/platforms/openvglite/qgraphicssystem_vglite.cpp
index 29a02fedb5..f5b154fd38 100644
--- a/src/plugins/platforms/openvglite/qgraphicssystem_vglite.cpp
+++ b/src/plugins/platforms/openvglite/qgraphicssystem_vglite.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openvglite/qgraphicssystem_vglite.h b/src/plugins/platforms/openvglite/qgraphicssystem_vglite.h
index c661ad8ffe..46faf7cd2c 100644
--- a/src/plugins/platforms/openvglite/qgraphicssystem_vglite.h
+++ b/src/plugins/platforms/openvglite/qgraphicssystem_vglite.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openvglite/qwindowsurface_vglite.cpp b/src/plugins/platforms/openvglite/qwindowsurface_vglite.cpp
index 17136b88a1..f50067e030 100644
--- a/src/plugins/platforms/openvglite/qwindowsurface_vglite.cpp
+++ b/src/plugins/platforms/openvglite/qwindowsurface_vglite.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openvglite/qwindowsurface_vglite.h b/src/plugins/platforms/openvglite/qwindowsurface_vglite.h
index 2bd7b9e417..b3ee1df325 100644
--- a/src/plugins/platforms/openvglite/qwindowsurface_vglite.h
+++ b/src/plugins/platforms/openvglite/qwindowsurface_vglite.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/main.cpp b/src/plugins/platforms/openwfd/main.cpp
index c7c05718ad..4e583e9b2d 100644
--- a/src/plugins/platforms/openwfd/main.cpp
+++ b/src/plugins/platforms/openwfd/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdbackingstore.cpp b/src/plugins/platforms/openwfd/qopenwfdbackingstore.cpp
index b166d6e7f9..48a5e9896f 100644
--- a/src/plugins/platforms/openwfd/qopenwfdbackingstore.cpp
+++ b/src/plugins/platforms/openwfd/qopenwfdbackingstore.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdbackingstore.h b/src/plugins/platforms/openwfd/qopenwfdbackingstore.h
index f7b2bb9734..4002fd8ffc 100644
--- a/src/plugins/platforms/openwfd/qopenwfdbackingstore.h
+++ b/src/plugins/platforms/openwfd/qopenwfdbackingstore.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfddevice.cpp b/src/plugins/platforms/openwfd/qopenwfddevice.cpp
index 5c3049cfe4..47064fe92c 100644
--- a/src/plugins/platforms/openwfd/qopenwfddevice.cpp
+++ b/src/plugins/platforms/openwfd/qopenwfddevice.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfddevice.h b/src/plugins/platforms/openwfd/qopenwfddevice.h
index 32c3c0f74b..9a37c5103e 100644
--- a/src/plugins/platforms/openwfd/qopenwfddevice.h
+++ b/src/plugins/platforms/openwfd/qopenwfddevice.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdevent.cpp b/src/plugins/platforms/openwfd/qopenwfdevent.cpp
index 3a54210bf8..713fc26c7a 100644
--- a/src/plugins/platforms/openwfd/qopenwfdevent.cpp
+++ b/src/plugins/platforms/openwfd/qopenwfdevent.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdevent.h b/src/plugins/platforms/openwfd/qopenwfdevent.h
index e807afbe36..087c740766 100644
--- a/src/plugins/platforms/openwfd/qopenwfdevent.h
+++ b/src/plugins/platforms/openwfd/qopenwfdevent.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdglcontext.cpp b/src/plugins/platforms/openwfd/qopenwfdglcontext.cpp
index e83c0da42c..1304b9aad8 100644
--- a/src/plugins/platforms/openwfd/qopenwfdglcontext.cpp
+++ b/src/plugins/platforms/openwfd/qopenwfdglcontext.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdglcontext.h b/src/plugins/platforms/openwfd/qopenwfdglcontext.h
index bef8739fcb..d353eddbb0 100644
--- a/src/plugins/platforms/openwfd/qopenwfdglcontext.h
+++ b/src/plugins/platforms/openwfd/qopenwfdglcontext.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdintegration.cpp b/src/plugins/platforms/openwfd/qopenwfdintegration.cpp
index ad9afb345d..926ab07df2 100644
--- a/src/plugins/platforms/openwfd/qopenwfdintegration.cpp
+++ b/src/plugins/platforms/openwfd/qopenwfdintegration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdintegration.h b/src/plugins/platforms/openwfd/qopenwfdintegration.h
index 0359dc60d6..5737dbb00e 100644
--- a/src/plugins/platforms/openwfd/qopenwfdintegration.h
+++ b/src/plugins/platforms/openwfd/qopenwfdintegration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdnativeinterface.cpp b/src/plugins/platforms/openwfd/qopenwfdnativeinterface.cpp
index b9647ac9c4..5548260fb1 100644
--- a/src/plugins/platforms/openwfd/qopenwfdnativeinterface.cpp
+++ b/src/plugins/platforms/openwfd/qopenwfdnativeinterface.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdnativeinterface.h b/src/plugins/platforms/openwfd/qopenwfdnativeinterface.h
index 5311d75f0e..955fca7d41 100644
--- a/src/plugins/platforms/openwfd/qopenwfdnativeinterface.h
+++ b/src/plugins/platforms/openwfd/qopenwfdnativeinterface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdoutputbuffer.cpp b/src/plugins/platforms/openwfd/qopenwfdoutputbuffer.cpp
index da144b841e..d60af81f50 100644
--- a/src/plugins/platforms/openwfd/qopenwfdoutputbuffer.cpp
+++ b/src/plugins/platforms/openwfd/qopenwfdoutputbuffer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdoutputbuffer.h b/src/plugins/platforms/openwfd/qopenwfdoutputbuffer.h
index b852286061..40ae062ff8 100644
--- a/src/plugins/platforms/openwfd/qopenwfdoutputbuffer.h
+++ b/src/plugins/platforms/openwfd/qopenwfdoutputbuffer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdport.cpp b/src/plugins/platforms/openwfd/qopenwfdport.cpp
index 7da54acbb7..a5a0b1c641 100644
--- a/src/plugins/platforms/openwfd/qopenwfdport.cpp
+++ b/src/plugins/platforms/openwfd/qopenwfdport.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdport.h b/src/plugins/platforms/openwfd/qopenwfdport.h
index 9378c3bc6a..7c9b0eb343 100644
--- a/src/plugins/platforms/openwfd/qopenwfdport.h
+++ b/src/plugins/platforms/openwfd/qopenwfdport.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdportmode.cpp b/src/plugins/platforms/openwfd/qopenwfdportmode.cpp
index 669ace68c3..3e7808e8ef 100644
--- a/src/plugins/platforms/openwfd/qopenwfdportmode.cpp
+++ b/src/plugins/platforms/openwfd/qopenwfdportmode.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdportmode.h b/src/plugins/platforms/openwfd/qopenwfdportmode.h
index 93297d5673..ca8c37fbdf 100644
--- a/src/plugins/platforms/openwfd/qopenwfdportmode.h
+++ b/src/plugins/platforms/openwfd/qopenwfdportmode.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdscreen.cpp b/src/plugins/platforms/openwfd/qopenwfdscreen.cpp
index 0c6c888164..9fbd00541d 100644
--- a/src/plugins/platforms/openwfd/qopenwfdscreen.cpp
+++ b/src/plugins/platforms/openwfd/qopenwfdscreen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdscreen.h b/src/plugins/platforms/openwfd/qopenwfdscreen.h
index 5bd6cf243d..8993205a16 100644
--- a/src/plugins/platforms/openwfd/qopenwfdscreen.h
+++ b/src/plugins/platforms/openwfd/qopenwfdscreen.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdwindow.cpp b/src/plugins/platforms/openwfd/qopenwfdwindow.cpp
index 00f452a226..5189966766 100644
--- a/src/plugins/platforms/openwfd/qopenwfdwindow.cpp
+++ b/src/plugins/platforms/openwfd/qopenwfdwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/openwfd/qopenwfdwindow.h b/src/plugins/platforms/openwfd/qopenwfdwindow.h
index 10cdda650e..ca531b07ae 100644
--- a/src/plugins/platforms/openwfd/qopenwfdwindow.h
+++ b/src/plugins/platforms/openwfd/qopenwfdwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/qvfb/main.cpp b/src/plugins/platforms/qvfb/main.cpp
index a603f7a414..3013b69daf 100644
--- a/src/plugins/platforms/qvfb/main.cpp
+++ b/src/plugins/platforms/qvfb/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/qvfb/qvfbintegration.cpp b/src/plugins/platforms/qvfb/qvfbintegration.cpp
index ae9b3ffebf..478733e96f 100644
--- a/src/plugins/platforms/qvfb/qvfbintegration.cpp
+++ b/src/plugins/platforms/qvfb/qvfbintegration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/qvfb/qvfbintegration.h b/src/plugins/platforms/qvfb/qvfbintegration.h
index cea8fe0594..45f6b391f0 100644
--- a/src/plugins/platforms/qvfb/qvfbintegration.h
+++ b/src/plugins/platforms/qvfb/qvfbintegration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/qvfb/qvfbwindowsurface.cpp b/src/plugins/platforms/qvfb/qvfbwindowsurface.cpp
index 94b743ba16..6180836127 100644
--- a/src/plugins/platforms/qvfb/qvfbwindowsurface.cpp
+++ b/src/plugins/platforms/qvfb/qvfbwindowsurface.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/qvfb/qvfbwindowsurface.h b/src/plugins/platforms/qvfb/qvfbwindowsurface.h
index 450f87c646..92fe6aea2d 100644
--- a/src/plugins/platforms/qvfb/qvfbwindowsurface.h
+++ b/src/plugins/platforms/qvfb/qvfbwindowsurface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/uikit/examples/qmltest/main.mm b/src/plugins/platforms/uikit/examples/qmltest/main.mm
index 33d10091d8..68eef2a353 100644
--- a/src/plugins/platforms/uikit/examples/qmltest/main.mm
+++ b/src/plugins/platforms/uikit/examples/qmltest/main.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/uikit/examples/qmltest/qml/main.qml b/src/plugins/platforms/uikit/examples/qmltest/qml/main.qml
index 9f787b79dd..07e8eb08a6 100644
--- a/src/plugins/platforms/uikit/examples/qmltest/qml/main.qml
+++ b/src/plugins/platforms/uikit/examples/qmltest/qml/main.qml
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/uikit/examples/qmltest/qmlapplicationviewer/moc_qmlapplicationviewer.cpp b/src/plugins/platforms/uikit/examples/qmltest/qmlapplicationviewer/moc_qmlapplicationviewer.cpp
index cdc4c78bae..2b36a87272 100644
--- a/src/plugins/platforms/uikit/examples/qmltest/qmlapplicationviewer/moc_qmlapplicationviewer.cpp
+++ b/src/plugins/platforms/uikit/examples/qmltest/qmlapplicationviewer/moc_qmlapplicationviewer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/uikit/examples/qmltest/qmlapplicationviewer/qmlapplicationviewer.cpp b/src/plugins/platforms/uikit/examples/qmltest/qmlapplicationviewer/qmlapplicationviewer.cpp
index dca4013ee8..aba9366d47 100644
--- a/src/plugins/platforms/uikit/examples/qmltest/qmlapplicationviewer/qmlapplicationviewer.cpp
+++ b/src/plugins/platforms/uikit/examples/qmltest/qmlapplicationviewer/qmlapplicationviewer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -143,17 +143,6 @@ void QmlApplicationViewer::addImportPath(const QString &path)
void QmlApplicationViewer::setOrientation(ScreenOrientation orientation)
{
-//#if defined(Q_OS_SYMBIAN)
-// // If the version of Qt on the device is < 4.7.2, that attribute won't work
-// if (orientation != ScreenOrientationAuto) {
-// const QStringList v = QString::fromAscii(qVersion()).split(QLatin1Char('.'));
-// if (v.count() == 3 && (v.at(0).toInt() << 16 | v.at(1).toInt() << 8 | v.at(2).toInt()) < 0x040702) {
-// qWarning("Screen orientation locking only supported with Qt 4.7.2 and above");
-// return;
-// }
-// }
-//#endif // Q_OS_SYMBIAN
-//
// Qt::WidgetAttribute attribute;
// switch (orientation) {
//#if QT_VERSION < 0x040702
@@ -186,11 +175,5 @@ void QmlApplicationViewer::setOrientation(ScreenOrientation orientation)
void QmlApplicationViewer::showExpanded()
{
-#ifdef Q_OS_SYMBIAN
- showFullScreen();
-#elif defined(Q_WS_MAEMO_5) || defined(Q_WS_MAEMO_6)
- showMaximized();
-#else
show();
-#endif
}
diff --git a/src/plugins/platforms/uikit/examples/qmltest/qmlapplicationviewer/qmlapplicationviewer.h b/src/plugins/platforms/uikit/examples/qmltest/qmlapplicationviewer/qmlapplicationviewer.h
index cde3bba4e4..e2ee5b5069 100644
--- a/src/plugins/platforms/uikit/examples/qmltest/qmlapplicationviewer/qmlapplicationviewer.h
+++ b/src/plugins/platforms/uikit/examples/qmltest/qmlapplicationviewer/qmlapplicationviewer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/uikit/main.mm b/src/plugins/platforms/uikit/main.mm
index 812de5ab05..db413c0775 100644
--- a/src/plugins/platforms/uikit/main.mm
+++ b/src/plugins/platforms/uikit/main.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/uikit/quikiteventloop.h b/src/plugins/platforms/uikit/quikiteventloop.h
index 4519f8b645..e7f503c42a 100644
--- a/src/plugins/platforms/uikit/quikiteventloop.h
+++ b/src/plugins/platforms/uikit/quikiteventloop.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/uikit/quikiteventloop.mm b/src/plugins/platforms/uikit/quikiteventloop.mm
index eef5976aa9..43df46705d 100644
--- a/src/plugins/platforms/uikit/quikiteventloop.mm
+++ b/src/plugins/platforms/uikit/quikiteventloop.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/uikit/quikitintegration.h b/src/plugins/platforms/uikit/quikitintegration.h
index 53ade53d48..21ef9efb29 100644
--- a/src/plugins/platforms/uikit/quikitintegration.h
+++ b/src/plugins/platforms/uikit/quikitintegration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/uikit/quikitintegration.mm b/src/plugins/platforms/uikit/quikitintegration.mm
index 6d616a5317..0c8579fc0f 100644
--- a/src/plugins/platforms/uikit/quikitintegration.mm
+++ b/src/plugins/platforms/uikit/quikitintegration.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/uikit/quikitscreen.h b/src/plugins/platforms/uikit/quikitscreen.h
index ca26b3d5f9..e53589b2c7 100644
--- a/src/plugins/platforms/uikit/quikitscreen.h
+++ b/src/plugins/platforms/uikit/quikitscreen.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/uikit/quikitscreen.mm b/src/plugins/platforms/uikit/quikitscreen.mm
index 3955ba7e85..9569f95052 100644
--- a/src/plugins/platforms/uikit/quikitscreen.mm
+++ b/src/plugins/platforms/uikit/quikitscreen.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/uikit/quikitsoftwareinputhandler.h b/src/plugins/platforms/uikit/quikitsoftwareinputhandler.h
index 9093e26049..b4627c15ff 100644
--- a/src/plugins/platforms/uikit/quikitsoftwareinputhandler.h
+++ b/src/plugins/platforms/uikit/quikitsoftwareinputhandler.h
@@ -3,8 +3,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -37,6 +36,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/uikit/quikitwindow.h b/src/plugins/platforms/uikit/quikitwindow.h
index b38cb877c9..7fe599f0cd 100644
--- a/src/plugins/platforms/uikit/quikitwindow.h
+++ b/src/plugins/platforms/uikit/quikitwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/uikit/quikitwindow.mm b/src/plugins/platforms/uikit/quikitwindow.mm
index ddf52a8ed6..fb6711009a 100644
--- a/src/plugins/platforms/uikit/quikitwindow.mm
+++ b/src/plugins/platforms/uikit/quikitwindow.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/uikit/quikitwindowsurface.h b/src/plugins/platforms/uikit/quikitwindowsurface.h
index c0f486a4dd..6ea1b2ad3c 100644
--- a/src/plugins/platforms/uikit/quikitwindowsurface.h
+++ b/src/plugins/platforms/uikit/quikitwindowsurface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/uikit/quikitwindowsurface.mm b/src/plugins/platforms/uikit/quikitwindowsurface.mm
index a78a47c2ea..b7455b3bbe 100644
--- a/src/plugins/platforms/uikit/quikitwindowsurface.mm
+++ b/src/plugins/platforms/uikit/quikitwindowsurface.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/vnc/main.cpp b/src/plugins/platforms/vnc/main.cpp
index 9fd77ea87c..7ec780af53 100644
--- a/src/plugins/platforms/vnc/main.cpp
+++ b/src/plugins/platforms/vnc/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/vnc/qvnccursor.cpp b/src/plugins/platforms/vnc/qvnccursor.cpp
index 44f3bf45fa..52591bdc05 100644
--- a/src/plugins/platforms/vnc/qvnccursor.cpp
+++ b/src/plugins/platforms/vnc/qvnccursor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/vnc/qvnccursor.h b/src/plugins/platforms/vnc/qvnccursor.h
index af9d6816e9..3428d71ac7 100644
--- a/src/plugins/platforms/vnc/qvnccursor.h
+++ b/src/plugins/platforms/vnc/qvnccursor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/vnc/qvncintegration.cpp b/src/plugins/platforms/vnc/qvncintegration.cpp
index 06eb52529a..8b653f7208 100644
--- a/src/plugins/platforms/vnc/qvncintegration.cpp
+++ b/src/plugins/platforms/vnc/qvncintegration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/vnc/qvncintegration.h b/src/plugins/platforms/vnc/qvncintegration.h
index c594ffb142..a6baf0340e 100644
--- a/src/plugins/platforms/vnc/qvncintegration.h
+++ b/src/plugins/platforms/vnc/qvncintegration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/vnc/qvncserver.cpp b/src/plugins/platforms/vnc/qvncserver.cpp
index 832206c2ea..db49025c41 100644
--- a/src/plugins/platforms/vnc/qvncserver.cpp
+++ b/src/plugins/platforms/vnc/qvncserver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/vnc/qvncserver.h b/src/plugins/platforms/vnc/qvncserver.h
index c3042410f4..b0c53dde95 100644
--- a/src/plugins/platforms/vnc/qvncserver.h
+++ b/src/plugins/platforms/vnc/qvncserver.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/array.h b/src/plugins/platforms/windows/array.h
index f098a77d00..7aac8c5388 100644
--- a/src/plugins/platforms/windows/array.h
+++ b/src/plugins/platforms/windows/array.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/main.cpp b/src/plugins/platforms/windows/main.cpp
index 4d8d4e732e..d54a1dbb89 100644
--- a/src/plugins/platforms/windows/main.cpp
+++ b/src/plugins/platforms/windows/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qtwindows_additional.h b/src/plugins/platforms/windows/qtwindows_additional.h
index abb38a1bfd..864107e392 100644
--- a/src/plugins/platforms/windows/qtwindows_additional.h
+++ b/src/plugins/platforms/windows/qtwindows_additional.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,6 +56,7 @@
# define SPI_GETFONTSMOOTHINGTYPE 0x200A
# define FE_FONTSMOOTHINGCLEARTYPE 0x0002
# define CLEARTYPE_QUALITY 5
+# define SPI_GETDROPSHADOW 0x1024
# define CF_DIBV5 17
diff --git a/src/plugins/platforms/windows/qtwindowsglobal.h b/src/plugins/platforms/windows/qtwindowsglobal.h
index 599fb0d201..f044362299 100644
--- a/src/plugins/platforms/windows/qtwindowsglobal.h
+++ b/src/plugins/platforms/windows/qtwindowsglobal.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -95,6 +95,7 @@ enum WindowsEventType // Simplify event types
InputMethodOpenCandidateWindowEvent = InputMethodEventFlag + 4,
InputMethodCloseCandidateWindowEvent = InputMethodEventFlag + 5,
InputMethodRequest = InputMethodEventFlag + 6,
+ DisplayChangedEvent = 437,
UnknownEvent = 542
};
@@ -169,6 +170,8 @@ inline QtWindows::WindowsEventType windowsEventType(UINT message, WPARAM wParamI
}
case WM_GETOBJECT:
return QtWindows::AccessibleObjectFromWindowRequest;
+ case WM_DISPLAYCHANGE:
+ return QtWindows::DisplayChangedEvent;
default:
break;
}
diff --git a/src/plugins/platforms/windows/qwindowsaccessibility.cpp b/src/plugins/platforms/windows/qwindowsaccessibility.cpp
index fdf6c9116e..2678fd7f23 100644
--- a/src/plugins/platforms/windows/qwindowsaccessibility.cpp
+++ b/src/plugins/platforms/windows/qwindowsaccessibility.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,7 +60,7 @@
#include <QtGui/qplatformnativeinterface_qpa.h>
#include <QtGui/qwindow.h>
#include <QtGui/qaccessible2.h>
-#include <OleAcc.h>
+#include <oleacc.h>
//#include <uiautomationcoreapi.h>
#ifndef UiaRootObjectId
@@ -694,7 +694,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::accNavigate(long navDir, VARIANT v
case NAVDIR_LEFT:
case NAVDIR_RIGHT:
if (QAccessibleInterface *pIface = accessible->parent()) {
-
+ const int indexOfOurself = pIface->indexOfChild(accessible);
QRect startg = accessible->rect();
QPoint startc = startg.center();
QAccessibleInterface *candidate = 0;
@@ -704,7 +704,7 @@ HRESULT STDMETHODCALLTYPE QWindowsAccessible::accNavigate(long navDir, VARIANT v
QAccessibleInterface *sibling = 0;
sibling = pIface->child(i);
Q_ASSERT(sibling);
- if ((accessible->relationTo(sibling) & QAccessible::Self) || sibling->state().invisible) {
+ if (i == indexOfOurself || sibling->state().invisible) {
//ignore ourself and invisible siblings
delete sibling;
continue;
@@ -1296,10 +1296,10 @@ QWindowsAccessibility::QWindowsAccessibility()
}
-void QWindowsAccessibility::notifyAccessibilityUpdate(QObject *o, int who, QAccessible::Event reason)
+void QWindowsAccessibility::notifyAccessibilityUpdate(const QAccessibleEvent &event)
{
QString soundName;
- switch (reason) {
+ switch (event.type()) {
case QAccessible::PopupMenuStart:
soundName = QLatin1String("MenuPopup");
break;
@@ -1370,8 +1370,9 @@ void QWindowsAccessibility::notifyAccessibilityUpdate(QObject *o, int who, QAcce
// An event has to be associated with a window,
// so find the first parent that is a widget and that has a WId
- QAccessibleInterface *iface = QAccessible::queryAccessibleInterface(o);
+ QAccessibleInterface *iface = event.accessibleInterface();
QWindow *window = iface ? window_helper(iface) : 0;
+ delete iface;
if (!window) {
window = QGuiApplication::activeWindow();
@@ -1382,18 +1383,17 @@ void QWindowsAccessibility::notifyAccessibilityUpdate(QObject *o, int who, QAcce
QPlatformNativeInterface *platform = QGuiApplication::platformNativeInterface();
HWND hWnd = (HWND)platform->nativeResourceForWindow("handle", window);
- if (reason != QAccessible::MenuCommand) { // MenuCommand is faked
+ if (event.type() != QAccessible::MenuCommand) { // MenuCommand is faked
// See comment "SENDING EVENTS TO OBJECTS WITH NO WINDOW HANDLE"
eventNum %= 50; //[0..49]
int eventId = - eventNum - 1;
- qAccessibleRecentSentEvents()->insert(eventId, qMakePair(o, who));
- ptrNotifyWinEvent(reason, hWnd, OBJID_CLIENT, eventId );
+ qAccessibleRecentSentEvents()->insert(eventId, qMakePair(event.object(), event.child()));
+ ptrNotifyWinEvent(event.type(), hWnd, OBJID_CLIENT, eventId );
++eventNum;
}
#endif // Q_WS_WINCE
-
}
/*
diff --git a/src/plugins/platforms/windows/qwindowsaccessibility.h b/src/plugins/platforms/windows/qwindowsaccessibility.h
index 892480ecf4..9294f23565 100644
--- a/src/plugins/platforms/windows/qwindowsaccessibility.h
+++ b/src/plugins/platforms/windows/qwindowsaccessibility.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -45,17 +45,23 @@
#include "qtwindowsglobal.h"
#include <QtGui/QPlatformAccessibility>
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
+
class QWindowsAccessibility : public QPlatformAccessibility
{
public:
QWindowsAccessibility();
static bool handleAccessibleObjectFromWindowRequest(HWND hwnd, WPARAM wParam, LPARAM lParam, LRESULT *lResult);
- virtual void notifyAccessibilityUpdate(QObject *o, int who, QAccessible::Event reason);
+ virtual void notifyAccessibilityUpdate(const QAccessibleEvent &event);
/*
virtual void setRootObject(QObject *o);
virtual void initialize();
virtual void cleanup();
-*/
+ */
};
+QT_END_NAMESPACE
+QT_END_HEADER
+
#endif // QWINDOWSACCESSIBILITY_H
diff --git a/src/plugins/platforms/windows/qwindowsbackingstore.cpp b/src/plugins/platforms/windows/qwindowsbackingstore.cpp
index 56e74c5587..bbb6b5305f 100644
--- a/src/plugins/platforms/windows/qwindowsbackingstore.cpp
+++ b/src/plugins/platforms/windows/qwindowsbackingstore.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsbackingstore.h b/src/plugins/platforms/windows/qwindowsbackingstore.h
index 60cc5ad787..14ce6c3438 100644
--- a/src/plugins/platforms/windows/qwindowsbackingstore.h
+++ b/src/plugins/platforms/windows/qwindowsbackingstore.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsclipboard.cpp b/src/plugins/platforms/windows/qwindowsclipboard.cpp
index e5edab3f4b..521ca3dc07 100644
--- a/src/plugins/platforms/windows/qwindowsclipboard.cpp
+++ b/src/plugins/platforms/windows/qwindowsclipboard.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsclipboard.h b/src/plugins/platforms/windows/qwindowsclipboard.h
index 321db201e8..643c785e8b 100644
--- a/src/plugins/platforms/windows/qwindowsclipboard.h
+++ b/src/plugins/platforms/windows/qwindowsclipboard.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowscontext.cpp b/src/plugins/platforms/windows/qwindowscontext.cpp
index 5e101d1869..5f7dfb1b10 100644
--- a/src/plugins/platforms/windows/qwindowscontext.cpp
+++ b/src/plugins/platforms/windows/qwindowscontext.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,9 +48,11 @@
#include "qwindowsmime.h"
#include "qwindowsinputcontext.h"
#include "qwindowsaccessibility.h"
+#include "qwindowsscreen.h"
#include <QtGui/QWindow>
#include <QtGui/QWindowSystemInterface>
+#include <QtGui/QPlatformNativeInterface>
#include <QtCore/QSet>
#include <QtCore/QHash>
@@ -218,6 +220,14 @@ QWindowsContext *QWindowsContext::m_instance = 0;
typedef QHash<HWND, QWindowsWindow *> HandleBaseWindowHash;
struct QWindowsContextPrivate {
+ typedef QPlatformNativeInterface::EventFilter EventFilter;
+
+ enum EventFilterType
+ {
+ GenericWindowsEventFilter,
+ EventFilterTypeCount
+ };
+
QWindowsContextPrivate();
unsigned m_systemInfo;
@@ -228,15 +238,19 @@ struct QWindowsContextPrivate {
QWindowsKeyMapper m_keyMapper;
QWindowsMouseHandler m_mouseHandler;
QWindowsMimeConverter m_mimeConverter;
+ QWindowsScreenManager m_screenManager;
QSharedPointer<QWindowCreationContext> m_creationContext;
const HRESULT m_oleInitializeResult;
+ const QByteArray m_eventType;
+ EventFilter m_eventFilters[EventFilterTypeCount];
};
QWindowsContextPrivate::QWindowsContextPrivate() :
m_systemInfo(0),
m_displayContext(GetDC(0)),
m_defaultDPI(GetDeviceCaps(m_displayContext,LOGPIXELSY)),
- m_oleInitializeResult(OleInitialize(NULL))
+ m_oleInitializeResult(OleInitialize(NULL)),
+ m_eventType(QByteArrayLiteral("windows_generic_MSG"))
{
QWindowsContext::user32dll.init();
QWindowsContext::shell32dll.init();
@@ -250,6 +264,7 @@ QWindowsContextPrivate::QWindowsContextPrivate() :
m_systemInfo |= QWindowsContext::SI_RTL_Extensions;
m_keyMapper.setUseRTLExtensions(true);
}
+ qFill(m_eventFilters, m_eventFilters + EventFilterTypeCount, EventFilter(0));
}
QWindowsContext::QWindowsContext() :
@@ -278,6 +293,7 @@ QWindowsContext::~QWindowsContext()
if (d->m_oleInitializeResult == S_OK || d->m_oleInitializeResult == S_FALSE)
OleUninitialize();
+ d->m_screenManager.clearScreens(); // Order: Potentially calls back to the windows.
m_instance = 0;
}
@@ -330,7 +346,7 @@ QString QWindowsContext::registerWindowClass(const QWindow *w, bool isGL)
uint style = 0;
bool icon = false;
- QString cname = "Qt5";
+ QString cname = QStringLiteral("Qt5");
if (w && isGL) {
cname += QStringLiteral("QGLWindow");
style = CS_DBLCLKS|CS_OWNDC;
@@ -541,6 +557,11 @@ QWindowsMimeConverter &QWindowsContext::mimeConverter() const
return d->m_mimeConverter;
}
+QWindowsScreenManager &QWindowsContext::screenManager()
+{
+ return d->m_screenManager;
+}
+
/*!
\brief Convenience to create a non-visible, message-only dummy
window for example used as clipboard watcher or for GL.
@@ -606,6 +627,27 @@ QByteArray QWindowsContext::comErrorString(HRESULT hr)
}
/*!
+ \brief Set event filter.
+
+ \sa QWindowsNativeInterface
+*/
+
+QWindowsContext::EventFilter QWindowsContext::setEventFilter(const QByteArray &eventType, EventFilter filter)
+{
+ int eventFilterType = -1;
+ if (eventType == d->m_eventType)
+ eventFilterType = QWindowsContextPrivate::GenericWindowsEventFilter;
+ if (eventFilterType < 0) {
+ qWarning("%s: Attempt to set unsupported event filter '%s'.",
+ __FUNCTION__, eventType.constData());
+ return 0;
+ }
+ const EventFilter previous = d->m_eventFilters[eventFilterType];
+ d->m_eventFilters[eventFilterType] = filter;
+ return previous;
+}
+
+/*!
\brief Main windows procedure registered for windows.
\sa QWindowsGuiEventDispatcher
@@ -616,6 +658,22 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
WPARAM wParam, LPARAM lParam, LRESULT *result)
{
*result = 0;
+
+ MSG msg;
+ msg.hwnd = hwnd; // re-create MSG structure
+ msg.message = message; // time and pt fields ignored
+ msg.wParam = wParam;
+ msg.lParam = lParam;
+ msg.pt.x = GET_X_LPARAM(lParam);
+ msg.pt.y = GET_Y_LPARAM(lParam);
+
+ long filterResult = 0;
+ if (d->m_eventFilters[QWindowsContextPrivate::GenericWindowsEventFilter]) {
+ if (d->m_eventFilters[QWindowsContextPrivate::GenericWindowsEventFilter](&msg, &filterResult)) {
+ *result = LRESULT(filterResult);
+ return true;
+ }
+ }
// Events without an associated QWindow or events we are not interested in.
switch (et) {
case QtWindows::DeactivateApplicationEvent:
@@ -641,6 +699,8 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
return false;
case QtWindows::AccessibleObjectFromWindowRequest:
return QWindowsAccessibility::handleAccessibleObjectFromWindowRequest(hwnd, wParam, lParam, result);
+ case QtWindows::DisplayChangedEvent:
+ return d->m_screenManager.handleDisplayChange(wParam, lParam);
default:
break;
}
@@ -676,13 +736,11 @@ bool QWindowsContext::windowsProc(HWND hwnd, UINT message,
return false;
}
- MSG msg;
- msg.hwnd = hwnd; // re-create MSG structure
- msg.message = message; // time and pt fields ignored
- msg.wParam = wParam;
- msg.lParam = lParam;
- msg.pt.x = GET_X_LPARAM(lParam);
- msg.pt.y = GET_Y_LPARAM(lParam);
+ filterResult = 0;
+ if (QWindowSystemInterface::handleNativeEvent(platformWindow->window(), d->m_eventType, &msg, &filterResult)) {
+ *result = LRESULT(filterResult);
+ return true;
+ }
switch (et) {
case QtWindows::KeyDownEvent:
@@ -747,18 +805,11 @@ extern "C" LRESULT QT_WIN_CALLBACK qWindowsWndProc(HWND hwnd, UINT message, WPAR
LRESULT result;
const QtWindows::WindowsEventType et = windowsEventType(message, wParam);
const bool handled = QWindowsContext::instance()->windowsProc(hwnd, message, et, wParam, lParam, &result);
- const bool guiEventsQueued = QWindowSystemInterface::windowSystemEventsQueued();
if (QWindowsContext::verboseEvents > 1)
if (const char *eventName = QWindowsGuiEventDispatcher::windowsMessageName(message))
- qDebug("EVENT: hwd=%p %s msg=0x%x et=0x%x wp=%d at %d,%d handled=%d gui=%d",
+ qDebug("EVENT: hwd=%p %s msg=0x%x et=0x%x wp=%d at %d,%d handled=%d",
hwnd, eventName, message, et, int(wParam),
- GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam), handled, guiEventsQueued);
- if (guiEventsQueued) {
- const QWindowsGuiEventDispatcher::DispatchContext dispatchContext =
- QWindowsGuiEventDispatcher::currentDispatchContext();
- if (dispatchContext.first)
- QWindowSystemInterface::sendWindowSystemEvents(dispatchContext.first, dispatchContext.second);
- }
+ GET_X_LPARAM(lParam), GET_Y_LPARAM(lParam), handled);
if (!handled)
result = DefWindowProc(hwnd, message, wParam, lParam);
return result;
diff --git a/src/plugins/platforms/windows/qwindowscontext.h b/src/plugins/platforms/windows/qwindowscontext.h
index 9a8acbbb51..b5a36c3fe9 100644
--- a/src/plugins/platforms/windows/qwindowscontext.h
+++ b/src/plugins/platforms/windows/qwindowscontext.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,6 +52,7 @@ QT_BEGIN_NAMESPACE
class QWindow;
class QPlatformScreen;
+class QWindowsScreenManager;
class QWindowsWindow;
class QWindowsMimeConverter;
struct QWindowCreationContext;
@@ -102,6 +103,8 @@ class QWindowsContext
{
Q_DISABLE_COPY(QWindowsContext)
public:
+ typedef bool (*EventFilter)(void *message, long *result);
+
enum SystemInfoFlags
{
SI_RTL_Extensions = 0x1,
@@ -135,6 +138,8 @@ public:
HDC displayContext() const;
int screenDepth() const;
+ EventFilter setEventFilter(const QByteArray &eventType, EventFilter filter);
+
static QWindowsContext *instance();
static QString windowsErrorMessage(unsigned long errorCode);
@@ -162,6 +167,7 @@ public:
unsigned systemInfo() const;
QWindowsMimeConverter &mimeConverter() const;
+ QWindowsScreenManager &screenManager();
static QWindowsUser32DLL user32dll;
static QWindowsShell32DLL shell32dll;
diff --git a/src/plugins/platforms/windows/qwindowscursor.cpp b/src/plugins/platforms/windows/qwindowscursor.cpp
index 2b228e9fb8..f75cbeb078 100644
--- a/src/plugins/platforms/windows/qwindowscursor.cpp
+++ b/src/plugins/platforms/windows/qwindowscursor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowscursor.h b/src/plugins/platforms/windows/qwindowscursor.h
index 61ed170af2..a03c77a3b6 100644
--- a/src/plugins/platforms/windows/qwindowscursor.h
+++ b/src/plugins/platforms/windows/qwindowscursor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
index 9023769b8b..f7863ae427 100644
--- a/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
+++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,14 +34,13 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include "qwindowsdialoghelpers.h"
-#ifdef QT_WIDGETS_LIB
-
#include "qwindowscontext.h"
#include "qwindowswindow.h"
@@ -66,8 +64,8 @@
#include "qtwindows_additional.h"
#define STRICT_TYPED_ITEMIDS
-#include <ShlObj.h>
-#include <Shlwapi.h>
+#include <shlobj.h>
+#include <shlwapi.h>
// #define USE_NATIVE_COLOR_DIALOG /* Testing purposes only */
@@ -341,17 +339,6 @@ void eatMouseMove()
qDebug("%s triggered=%d" , __FUNCTION__, msg.message == WM_MOUSEMOVE);
}
-Type dialogType(const QDialog *dialog)
-{
- if (qobject_cast<const QFileDialog *>(dialog))
- return FileDialog;
- if (qobject_cast<const QFontDialog *>(dialog))
- return FontDialog;
- if (qobject_cast<const QColorDialog *>(dialog))
- return ColorDialog;
- return UnknownType;
-}
-
} // namespace QWindowsDialogs
/*!
@@ -1359,40 +1346,36 @@ QWindowsNativeDialogBase *QWindowsColorDialogHelper::createNativeDialog()
namespace QWindowsDialogs {
// QWindowsDialogHelperBase creation functions
-bool useHelper(const QDialog *dialog)
+bool useHelper(QPlatformTheme::DialogType type)
{
- if (dialog) {
- switch (QWindowsDialogs::dialogType(dialog)) {
- case QWindowsDialogs::FileDialog:
- return true;
- case QWindowsDialogs::ColorDialog:
+ switch (type) {
+ case QPlatformTheme::FileDialog:
+ return true;
+ break;
+ case QPlatformTheme::ColorDialog:
#ifdef USE_NATIVE_COLOR_DIALOG
- return true;
+ return true;
+#else
+ break;
#endif
- case QWindowsDialogs::FontDialog:
- case QWindowsDialogs::UnknownType:
- break;
- }
+ case QPlatformTheme::FontDialog:
+ break;
}
return false;
}
-QPlatformDialogHelper *createHelper(QDialog *dialog)
+QPlatformDialogHelper *createHelper(QPlatformTheme::DialogType type)
{
- if (QWindowsContext::verboseDialogs)
- qDebug("%s %p %s" , __FUNCTION__, dialog, dialog->metaObject()->className());
- if (!dialog)
- return 0;
-
- switch (QWindowsDialogs::dialogType(dialog)) {
- case QWindowsDialogs::FileDialog:
+ switch (type) {
+ case QPlatformTheme::FileDialog:
return new QWindowsFileDialogHelper();
- case QWindowsDialogs::ColorDialog:
+ case QPlatformTheme::ColorDialog:
#ifdef USE_NATIVE_COLOR_DIALOG
return new QWindowsColorDialogHelper();
+#else
+ break;
#endif
- case QWindowsDialogs::FontDialog:
- case QWindowsDialogs::UnknownType:
+ case QPlatformTheme::FontDialog:
break;
}
return 0;
@@ -1402,5 +1385,3 @@ QPlatformDialogHelper *createHelper(QDialog *dialog)
QT_END_NAMESPACE
#include "qwindowsdialoghelpers.moc"
-
-#endif // QT_WIDGETS_LIB
diff --git a/src/plugins/platforms/windows/qwindowsdialoghelpers.h b/src/plugins/platforms/windows/qwindowsdialoghelpers.h
index 120076e58b..3ae22e69eb 100644
--- a/src/plugins/platforms/windows/qwindowsdialoghelpers.h
+++ b/src/plugins/platforms/windows/qwindowsdialoghelpers.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,10 +42,9 @@
#ifndef QWINDOWSDIALOGHELPER_H
#define QWINDOWSDIALOGHELPER_H
-#ifdef QT_WIDGETS_LIB
-
#include "qtwindows_additional.h"
-#include <QtWidgets/qplatformdialoghelper_qpa.h>
+#include <QtGui/QPlatformDialogHelper>
+#include <QtGui/QPlatformTheme>
#include <QtCore/QStringList>
QT_BEGIN_NAMESPACE
@@ -56,13 +55,10 @@ class QWindowsNativeDialogBase;
namespace QWindowsDialogs
{
- enum Type { UnknownType, ColorDialog, FontDialog, FileDialog };
-
- Type dialogType(const QDialog *dialog);
void eatMouseMove();
- bool useHelper(const QDialog *dialog = 0);
- QPlatformDialogHelper *createHelper(QDialog *dialog = 0);
+ bool useHelper(QPlatformTheme::DialogType type);
+ QPlatformDialogHelper *createHelper(QPlatformTheme::DialogType type);
} // namespace QWindowsDialogs
template <class BaseClass>
@@ -97,5 +93,4 @@ private:
QT_END_NAMESPACE
-#endif // QT_WIDGETS_LIB
#endif // QWINDOWSDIALOGHELPER_H
diff --git a/src/plugins/platforms/windows/qwindowsdrag.cpp b/src/plugins/platforms/windows/qwindowsdrag.cpp
index cbd81b99a0..9f2a1dc00c 100644
--- a/src/plugins/platforms/windows/qwindowsdrag.cpp
+++ b/src/plugins/platforms/windows/qwindowsdrag.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsdrag.h b/src/plugins/platforms/windows/qwindowsdrag.h
index 2f2aa569f1..86b5539f92 100644
--- a/src/plugins/platforms/windows/qwindowsdrag.h
+++ b/src/plugins/platforms/windows/qwindowsdrag.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp
index 5969fbf0ab..fa95f4f529 100644
--- a/src/plugins/platforms/windows/qwindowsfontdatabase.cpp
+++ b/src/plugins/platforms/windows/qwindowsfontdatabase.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase.h b/src/plugins/platforms/windows/qwindowsfontdatabase.h
index c991aed5ca..b08b682991 100644
--- a/src/plugins/platforms/windows/qwindowsfontdatabase.h
+++ b/src/plugins/platforms/windows/qwindowsfontdatabase.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp b/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp
index c7bd5ebbb1..f397e9cb92 100644
--- a/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp
+++ b/src/plugins/platforms/windows/qwindowsfontdatabase_ft.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -105,11 +105,13 @@ static bool addFontToDatabase(QString familyName, const QString &scriptName,
const FONTSIGNATURE *signature,
int type)
{
+ typedef QPair<QString, QStringList> FontKey;
+
// the "@family" fonts are just the same as "family". Ignore them.
if (familyName.at(0) == QLatin1Char('@') || familyName.startsWith(QStringLiteral("WST_")))
return false;
- const int separatorPos = familyName.indexOf("::");
+ const int separatorPos = familyName.indexOf(QStringLiteral("::"));
const QString faceName =
separatorPos != -1 ? familyName.left(separatorPos) : familyName;
const QString fullName =
@@ -169,20 +171,33 @@ static bool addFontToDatabase(QString familyName, const QString &scriptName,
writingSystems.setSupported(ws);
}
- const QSettings fontRegistry("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts",
+ const QSettings fontRegistry(QStringLiteral("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts"),
QSettings::NativeFormat);
- QByteArray value;
+ static QVector<FontKey> allFonts;
+ if (allFonts.isEmpty()) {
+ const QStringList allKeys = fontRegistry.allKeys();
+ allFonts.reserve(allKeys.size());
+ const QString trueType = QStringLiteral("(TrueType)");
+ foreach (const QString &key, allKeys) {
+ QString realKey = key;
+ realKey.remove(trueType);
+ QStringList fonts;
+ const QStringList fontNames = realKey.trimmed().split(QLatin1Char('&'));
+ foreach (const QString &fontName, fontNames)
+ fonts.push_back(fontName.trimmed());
+ allFonts.push_back(FontKey(key, fonts));
+ }
+ }
+
+ QString value;
int index = 0;
- foreach (const QString &key, fontRegistry.allKeys()) {
- QString realKey = key;
- realKey = realKey.replace("(TrueType)", "");
- realKey = realKey.trimmed();
- QStringList fonts = realKey.split('&');
- for (int i = 0; i < fonts.length(); ++i) {
- const QString font = fonts[i].trimmed();
+ for (int k = 0; k < allFonts.size(); ++k) {
+ const FontKey &fontKey = allFonts.at(k);
+ for (int i = 0; i < fontKey.second.length(); ++i) {
+ const QString &font = fontKey.second.at(i);
if (font == faceName || (faceName != fullName && fullName == font)) {
- value = fontRegistry.value(key).toByteArray();
+ value = fontRegistry.value(fontKey.first).toString();
index = i;
break;
}
@@ -195,7 +210,7 @@ static bool addFontToDatabase(QString familyName, const QString &scriptName,
return false;
if (!QDir::isAbsolutePath(value))
- value = qgetenv("windir") + "\\Fonts\\" + value;
+ value.prepend(QString::fromLocal8Bit(qgetenv("windir") + "\\Fonts\\"));
// Pointer is deleted in QBasicFontDatabase::releaseHandle(void *handle)
FontFile *fontFile = new FontFile;
@@ -221,7 +236,9 @@ static int CALLBACK storeFont(ENUMLOGFONTEX* f, NEWTEXTMETRICEX *textmetric,
int type, LPARAM namesSetIn)
{
typedef QSet<QString> StringSet;
- const QString familyName = QString::fromWCharArray(f->elfLogFont.lfFaceName) + "::" + QString::fromWCharArray(f->elfFullName);
+ const QString familyName = QString::fromWCharArray(f->elfLogFont.lfFaceName)
+ + QStringLiteral("::")
+ + QString::fromWCharArray(f->elfFullName);
const QString script = QString::fromWCharArray(f->elfScript);
const FONTSIGNATURE signature = textmetric->ntmFontSig;
diff --git a/src/plugins/platforms/windows/qwindowsfontdatabase_ft.h b/src/plugins/platforms/windows/qwindowsfontdatabase_ft.h
index 94cf556925..b12c1067fd 100644
--- a/src/plugins/platforms/windows/qwindowsfontdatabase_ft.h
+++ b/src/plugins/platforms/windows/qwindowsfontdatabase_ft.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsfontengine.cpp b/src/plugins/platforms/windows/qwindowsfontengine.cpp
index f6c456bc7b..ffa57ad58f 100644
--- a/src/plugins/platforms/windows/qwindowsfontengine.cpp
+++ b/src/plugins/platforms/windows/qwindowsfontengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -89,8 +89,6 @@ QT_BEGIN_NAMESPACE
// common DC for all fonts
-QT_BEGIN_NAMESPACE
-
typedef BOOL (WINAPI *PtrGetCharWidthI)(HDC, UINT, UINT, LPWORD, LPINT);
static PtrGetCharWidthI ptrGetCharWidthI = 0;
static bool resolvedGetCharWidthI = false;
@@ -1096,7 +1094,7 @@ QImage QWindowsFontEngine::alphaMapForGlyph(glyph_t glyph, const QTransform &xfo
#define SPI_GETFONTSMOOTHINGCONTRAST 0x200C
#define SPI_SETFONTSMOOTHINGCONTRAST 0x200D
-QImage QWindowsFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed, int margin, const QTransform &t)
+QImage QWindowsFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed, const QTransform &t)
{
HFONT font = hfont;
@@ -1104,6 +1102,7 @@ QImage QWindowsFontEngine::alphaRGBMapForGlyph(glyph_t glyph, QFixed, int margin
SystemParametersInfo(SPI_GETFONTSMOOTHINGCONTRAST, 0, &contrast, 0);
SystemParametersInfo(SPI_SETFONTSMOOTHINGCONTRAST, 0, (void *) 1000, 0);
+ int margin = glyphMargin(QFontEngineGlyphCache::Raster_RGBMask);
QWindowsNativeImage *mask = drawGDIGlyph(font, glyph, margin, t, QImage::Format_RGB32);
SystemParametersInfo(SPI_SETFONTSMOOTHINGCONTRAST, 0, (void *) contrast, 0);
diff --git a/src/plugins/platforms/windows/qwindowsfontengine.h b/src/plugins/platforms/windows/qwindowsfontengine.h
index 75968cc403..f8ebc896f2 100644
--- a/src/plugins/platforms/windows/qwindowsfontengine.h
+++ b/src/plugins/platforms/windows/qwindowsfontengine.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,10 +53,7 @@
// We mean it.
//
-// Enable access to HB_Face in harfbuzz includes included by qfontengine_p.h.
-#define QT_BUILD_GUI_LIB
#include <QtGui/private/qfontengine_p.h>
-#undef QT_BUILD_GUI_LIB
#include <QtGui/QImage>
#include <QtCore/QSharedPointer>
@@ -118,7 +115,7 @@ public:
virtual QImage alphaMapForGlyph(glyph_t t) { return alphaMapForGlyph(t, QTransform()); }
virtual QImage alphaMapForGlyph(glyph_t, const QTransform &xform);
- virtual QImage alphaRGBMapForGlyph(glyph_t t, QFixed subPixelPosition, int margin, const QTransform &xform);
+ virtual QImage alphaRGBMapForGlyph(glyph_t t, QFixed subPixelPosition, const QTransform &xform);
virtual QFontEngine *cloneWithSize(qreal pixelSize) const;
diff --git a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp
index 293c1c3b15..82410bfb21 100644
--- a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp
+++ b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h
index f995c49a60..0af52a2384 100644
--- a/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h
+++ b/src/plugins/platforms/windows/qwindowsfontenginedirectwrite.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -96,8 +96,7 @@ public:
bool supportsSubPixelPositions() const;
QImage alphaMapForGlyph(glyph_t glyph, QFixed subPixelPosition);
- QImage alphaRGBMapForGlyph(glyph_t t, QFixed subPixelPosition, int margin,
- const QTransform &xform);
+ QImage alphaRGBMapForGlyph(glyph_t t, QFixed subPixelPosition, const QTransform &xform);
QFontEngine *cloneWithSize(qreal pixelSize) const;
diff --git a/src/plugins/platforms/windows/qwindowsglcontext.cpp b/src/plugins/platforms/windows/qwindowsglcontext.cpp
index 1866faecd1..098f15f0f0 100644
--- a/src/plugins/platforms/windows/qwindowsglcontext.cpp
+++ b/src/plugins/platforms/windows/qwindowsglcontext.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,8 +48,8 @@
#include <QtGui/QGuiApplication>
#include <QtGui/QPlatformNativeInterface>
-#include <WinGDI.h>
-#include <GL/Gl.h>
+#include <wingdi.h>
+#include <GL/gl.h>
// #define DEBUG_GL
diff --git a/src/plugins/platforms/windows/qwindowsglcontext.h b/src/plugins/platforms/windows/qwindowsglcontext.h
index 17a33a7c14..5aac636f83 100644
--- a/src/plugins/platforms/windows/qwindowsglcontext.h
+++ b/src/plugins/platforms/windows/qwindowsglcontext.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp b/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp
index cd5d28317e..34ab1665d8 100644
--- a/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp
+++ b/src/plugins/platforms/windows/qwindowsguieventdispatcher.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -97,6 +97,13 @@ bool QWindowsGuiEventDispatcher::processEvents(QEventLoop::ProcessEventsFlags fl
return rc;
}
+void QWindowsGuiEventDispatcher::sendPostedEvents()
+{
+ QWindowsGuiEventDispatcher::DispatchContext context = currentDispatchContext();
+ Q_ASSERT(context.first != 0);
+ QWindowSystemInterface::sendWindowSystemEvents(context.first, context.second);
+}
+
QWindowsGuiEventDispatcher::DispatchContext QWindowsGuiEventDispatcher::currentDispatchContext()
{
const DispatchContextStack &stack = *dispatchContextStack();
@@ -195,7 +202,8 @@ messageDebugEntries[] = {
{WM_IME_COMPOSITION, "WM_IME_COMPOSITION"},
{WM_IME_ENDCOMPOSITION, "WM_IME_ENDCOMPOSITION"},
{WM_IME_NOTIFY, "WM_IME_NOTIFY"},
- {WM_IME_REQUEST, "WM_IME_REQUEST"}
+ {WM_IME_REQUEST, "WM_IME_REQUEST"},
+ {WM_DISPLAYCHANGE, "WM_DISPLAYCHANGE"}
};
static inline const MessageDebugEntry *messageDebugEntry(UINT msg)
diff --git a/src/plugins/platforms/windows/qwindowsguieventdispatcher.h b/src/plugins/platforms/windows/qwindowsguieventdispatcher.h
index 8d2bc1997b..49c5d8b490 100644
--- a/src/plugins/platforms/windows/qwindowsguieventdispatcher.h
+++ b/src/plugins/platforms/windows/qwindowsguieventdispatcher.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -64,6 +64,7 @@ public:
static const char *windowsMessageName(UINT msg);
virtual bool QT_ENSURE_STACK_ALIGNED_FOR_SSE processEvents(QEventLoop::ProcessEventsFlags flags);
+ virtual void sendPostedEvents();
};
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/windows/qwindowsinputcontext.cpp b/src/plugins/platforms/windows/qwindowsinputcontext.cpp
index 41c1a6c8f0..5085dfefb7 100644
--- a/src/plugins/platforms/windows/qwindowsinputcontext.cpp
+++ b/src/plugins/platforms/windows/qwindowsinputcontext.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -167,7 +167,7 @@ QWindowsInputContext::QWindowsInputContext() :
m_WM_MSIME_MOUSE(RegisterWindowMessage(L"MSIMEMouseOperation")),
m_endCompositionRecursionGuard(false)
{
- connect(qApp->inputPanel(), SIGNAL(cursorRectangleChanged()),
+ connect(qApp->inputMethod(), SIGNAL(cursorRectangleChanged()),
this, SLOT(cursorRectChanged()));
}
@@ -184,7 +184,7 @@ void QWindowsInputContext::reset()
QPlatformInputContext::reset();
if (!m_compositionContext.hwnd)
return;
- QObject *fo = qApp->inputPanel()->inputItem();
+ QObject *fo = qApp->inputMethod()->inputItem();
if (QWindowsContext::verboseInputMethods)
qDebug() << __FUNCTION__<< fo;
if (!fo)
@@ -213,8 +213,8 @@ void QWindowsInputContext::cursorRectChanged()
{
if (!m_compositionContext.hwnd)
return;
- const QInputPanel *inputPanel = qApp->inputPanel();
- QRect cursorRectangle = inputPanel->cursorRectangle().toRect();
+ const QInputMethod *inputMethod = qApp->inputMethod();
+ QRect cursorRectangle = inputMethod->cursorRectangle().toRect();
if (!cursorRectangle.isValid())
return;
@@ -249,9 +249,9 @@ void QWindowsInputContext::cursorRectChanged()
ImmReleaseContext(m_compositionContext.hwnd, himc);
}
-void QWindowsInputContext::invokeAction(QInputPanel::Action action, int cursorPosition)
+void QWindowsInputContext::invokeAction(QInputMethod::Action action, int cursorPosition)
{
- if (action != QInputPanel::Click || !m_compositionContext.hwnd) {
+ if (action != QInputMethod::Click || !m_compositionContext.hwnd) {
QPlatformInputContext::invokeAction(action, cursorPosition);
return;
}
@@ -329,11 +329,11 @@ static inline QTextFormat standardFormat(StandardFormat format)
bool QWindowsInputContext::startComposition(HWND hwnd)
{
- const QObject *fo = qApp->inputPanel()->inputItem();
+ const QObject *fo = qApp->inputMethod()->inputItem();
if (!fo)
return false;
// This should always match the object.
- QWindow *window = qApp->inputPanel()->inputWindow();
+ QWindow *window = qApp->inputMethod()->inputWindow();
if (!window)
return false;
if (QWindowsContext::verboseInputMethods)
@@ -397,7 +397,7 @@ static inline QList<QInputMethodEvent::Attribute>
bool QWindowsInputContext::composition(HWND hwnd, LPARAM lParamIn)
{
- QObject *fo = qApp->inputPanel()->inputItem();
+ QObject *fo = qApp->inputMethod()->inputItem();
const int lParam = int(lParamIn);
if (QWindowsContext::verboseInputMethods)
qDebug() << '>' << __FUNCTION__ << fo << debugComposition(lParam)
@@ -459,7 +459,7 @@ bool QWindowsInputContext::endComposition(HWND hwnd)
// against that.
if (m_endCompositionRecursionGuard || m_compositionContext.hwnd != hwnd)
return false;
- QObject *fo = qApp->inputPanel()->inputItem();
+ QObject *fo = qApp->inputMethod()->inputItem();
if (!fo)
return false;
@@ -537,7 +537,7 @@ bool QWindowsInputContext::handleIME_Request(WPARAM wParam,
int QWindowsInputContext::reconvertString(RECONVERTSTRING *reconv)
{
- QObject *fo = qApp->inputPanel()->inputItem();
+ QObject *fo = qApp->inputMethod()->inputItem();
if (!fo)
return false;
diff --git a/src/plugins/platforms/windows/qwindowsinputcontext.h b/src/plugins/platforms/windows/qwindowsinputcontext.h
index d735d1fd93..a33d24e2f6 100644
--- a/src/plugins/platforms/windows/qwindowsinputcontext.h
+++ b/src/plugins/platforms/windows/qwindowsinputcontext.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsintegration.cpp b/src/plugins/platforms/windows/qwindowsintegration.cpp
index 8bb8bafe74..2771ec7e8a 100644
--- a/src/plugins/platforms/windows/qwindowsintegration.cpp
+++ b/src/plugins/platforms/windows/qwindowsintegration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -87,6 +87,8 @@ public:
virtual void *nativeResourceForContext(const QByteArray &resource, QOpenGLContext *context);
virtual void *nativeResourceForWindow(const QByteArray &resource, QWindow *window);
virtual void *nativeResourceForBackingStore(const QByteArray &resource, QBackingStore *bs);
+ virtual EventFilter setEventFilter(const QByteArray &eventType, EventFilter filter)
+ { return QWindowsContext::instance()->setEventFilter(eventType, filter); }
};
void *QWindowsNativeInterface::nativeResourceForWindow(const QByteArray &resource, QWindow *window)
@@ -178,8 +180,7 @@ QWindowsIntegration::QWindowsIntegration() :
{
QGuiApplicationPrivate::instance()->setEventDispatcher(d->m_eventDispatcher);
d->m_clipboard.registerViewer();
- foreach (QPlatformScreen *pscr, QWindowsScreen::screens())
- screenAdded(pscr);
+ d->m_context.screenManager().handleScreenChanges();
}
QWindowsIntegration::~QWindowsIntegration()
@@ -292,6 +293,7 @@ QVariant QWindowsIntegration::styleHint(QPlatformIntegration::StyleHint hint) co
case QPlatformIntegration::StartDragDistance:
case QPlatformIntegration::MouseDoubleClickInterval:
case QPlatformIntegration::KeyboardInputInterval:
+ case QPlatformIntegration::ShowIsFullScreen:
break; // Not implemented
}
return QPlatformIntegration::styleHint(hint);
diff --git a/src/plugins/platforms/windows/qwindowsintegration.h b/src/plugins/platforms/windows/qwindowsintegration.h
index fa133fa5de..a96605f259 100644
--- a/src/plugins/platforms/windows/qwindowsintegration.h
+++ b/src/plugins/platforms/windows/qwindowsintegration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -74,6 +74,8 @@ public:
static QWindowsIntegration *instance();
+ inline void emitScreenAdded(QPlatformScreen *s) { screenAdded(s); }
+
private:
QScopedPointer<QWindowsIntegrationPrivate> d;
};
diff --git a/src/plugins/platforms/windows/qwindowsinternalmimedata.h b/src/plugins/platforms/windows/qwindowsinternalmimedata.h
index ceecd08f70..498c2f751f 100644
--- a/src/plugins/platforms/windows/qwindowsinternalmimedata.h
+++ b/src/plugins/platforms/windows/qwindowsinternalmimedata.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowskeymapper.cpp b/src/plugins/platforms/windows/qwindowskeymapper.cpp
index 369deb7598..7b96603c44 100644
--- a/src/plugins/platforms/windows/qwindowskeymapper.cpp
+++ b/src/plugins/platforms/windows/qwindowskeymapper.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowskeymapper.h b/src/plugins/platforms/windows/qwindowskeymapper.h
index e5e50c5886..483ff57942 100644
--- a/src/plugins/platforms/windows/qwindowskeymapper.h
+++ b/src/plugins/platforms/windows/qwindowskeymapper.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsmime.cpp b/src/plugins/platforms/windows/qwindowsmime.cpp
index 026ab94d32..570e4b3b6b 100644
--- a/src/plugins/platforms/windows/qwindowsmime.cpp
+++ b/src/plugins/platforms/windows/qwindowsmime.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsmime.h b/src/plugins/platforms/windows/qwindowsmime.h
index adac573375..19aef007e3 100644
--- a/src/plugins/platforms/windows/qwindowsmime.h
+++ b/src/plugins/platforms/windows/qwindowsmime.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsmousehandler.cpp b/src/plugins/platforms/windows/qwindowsmousehandler.cpp
index e491029ea1..63c2444957 100644
--- a/src/plugins/platforms/windows/qwindowsmousehandler.cpp
+++ b/src/plugins/platforms/windows/qwindowsmousehandler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsmousehandler.h b/src/plugins/platforms/windows/qwindowsmousehandler.h
index 4885d82b84..b3d176db9b 100644
--- a/src/plugins/platforms/windows/qwindowsmousehandler.h
+++ b/src/plugins/platforms/windows/qwindowsmousehandler.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsnativeimage.cpp b/src/plugins/platforms/windows/qwindowsnativeimage.cpp
index 353366db8f..8f727c6168 100644
--- a/src/plugins/platforms/windows/qwindowsnativeimage.cpp
+++ b/src/plugins/platforms/windows/qwindowsnativeimage.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsnativeimage.h b/src/plugins/platforms/windows/qwindowsnativeimage.h
index 6d453b0509..8fc41af541 100644
--- a/src/plugins/platforms/windows/qwindowsnativeimage.h
+++ b/src/plugins/platforms/windows/qwindowsnativeimage.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsole.cpp b/src/plugins/platforms/windows/qwindowsole.cpp
index fc61c2aa47..3ae9fe1048 100644
--- a/src/plugins/platforms/windows/qwindowsole.cpp
+++ b/src/plugins/platforms/windows/qwindowsole.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsole.h b/src/plugins/platforms/windows/qwindowsole.h
index 47fc22526c..e20baeb7be 100644
--- a/src/plugins/platforms/windows/qwindowsole.h
+++ b/src/plugins/platforms/windows/qwindowsole.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowsscreen.cpp b/src/plugins/platforms/windows/qwindowsscreen.cpp
index c8966f2ecc..1dc5175515 100644
--- a/src/plugins/platforms/windows/qwindowsscreen.cpp
+++ b/src/plugins/platforms/windows/qwindowsscreen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,12 +42,15 @@
#include "qwindowsscreen.h"
#include "qwindowscontext.h"
#include "qwindowswindow.h"
+#include "qwindowsintegration.h"
#include "qwindowscursor.h"
+#include "qwindowscontext.h"
#include "qtwindows_additional.h"
#include <QtGui/QPixmap>
#include <QtGui/QGuiApplication>
+#include <QtGui/QWindowSystemInterface>
#include <QtGui/QScreen>
#include <QtCore/QDebug>
@@ -55,9 +58,8 @@
QT_BEGIN_NAMESPACE
QWindowsScreenData::QWindowsScreenData() :
- dpi(96, 96),
- depth(32),
- format(QImage::Format_ARGB32_Premultiplied), primary(false)
+ dpi(96, 96), depth(32), format(QImage::Format_ARGB32_Premultiplied),
+ flags(VirtualDesktop), orientation(Qt::LandscapeOrientation)
{
}
@@ -98,6 +100,8 @@ BOOL QT_WIN_CALLBACK monitorEnumCallback(HMONITOR hMonitor, HDC, LPRECT, LPARAM
data.geometry = QRect(QPoint(info.rcMonitor.left, info.rcMonitor.top), QPoint(info.rcMonitor.right - 1, info.rcMonitor.bottom - 1));
if (HDC hdc = CreateDC(info.szDevice, NULL, NULL, NULL)) {
data.dpi = deviceDPI(hdc);
+ data.depth = GetDeviceCaps(hdc, BITSPIXEL);
+ data.format = data.depth == 16 ? QImage::Format_RGB16 : QImage::Format_RGB32;
data.physicalSizeMM = QSizeF(GetDeviceCaps(hdc, HORZSIZE), GetDeviceCaps(hdc, VERTSIZE));
DeleteDC(hdc);
} else {
@@ -107,15 +111,47 @@ BOOL QT_WIN_CALLBACK monitorEnumCallback(HMONITOR hMonitor, HDC, LPRECT, LPARAM
}
data.geometry = QRect(QPoint(info.rcMonitor.left, info.rcMonitor.top), QPoint(info.rcMonitor.right - 1, info.rcMonitor.bottom - 1));
data.availableGeometry = QRect(QPoint(info.rcWork.left, info.rcWork.top), QPoint(info.rcWork.right - 1, info.rcWork.bottom - 1));
- data.primary = (info.dwFlags & MONITORINFOF_PRIMARY) != 0;
+ data.orientation = data.geometry.height() > data.geometry.width() ?
+ Qt::PortraitOrientation : Qt::LandscapeOrientation;
+ // EnumDisplayMonitors (as opposed to EnumDisplayDevices) enumerates only
+ // virtual desktop screens.
+ data.flags = QWindowsScreenData::VirtualDesktop;
+ if (info.dwFlags & MONITORINFOF_PRIMARY)
+ data.flags |= QWindowsScreenData::PrimaryScreen;
+ data.name = QString::fromWCharArray(info.szDevice);
result->append(data);
return TRUE;
}
+static inline WindowsScreenDataList monitorData()
+{
+ WindowsScreenDataList result;
+ EnumDisplayMonitors(0, 0, monitorEnumCallback, (LPARAM)&result);
+ return result;
+}
+
+static QDebug operator<<(QDebug dbg, const QWindowsScreenData &d)
+{
+ QDebug nospace = dbg.nospace();
+ nospace << "Screen " << d.name << ' '
+ << d.geometry.width() << 'x' << d.geometry.height() << '+' << d.geometry.x() << '+' << d.geometry.y()
+ << " avail: "
+ << d.availableGeometry.width() << 'x' << d.availableGeometry.height() << '+' << d.availableGeometry.x() << '+' << d.availableGeometry.y()
+ << " physical: " << d.physicalSizeMM.width() << 'x' << d.physicalSizeMM.height()
+ << " DPI: " << d.dpi.first << 'x' << d.dpi.second << " Depth: " << d.depth
+ << " Format: " << d.format;
+ if (d.flags & QWindowsScreenData::PrimaryScreen)
+ nospace << " primary";
+ if (d.flags & QWindowsScreenData::VirtualDesktop)
+ nospace << " virtual desktop";
+ return dbg;
+}
+
/*!
\class QWindowsScreen
\brief Windows screen.
\ingroup qt-lighthouse-win
+ \sa QWindowsScreenManager
*/
QWindowsScreen::QWindowsScreen(const QWindowsScreenData &data) :
@@ -123,34 +159,10 @@ QWindowsScreen::QWindowsScreen(const QWindowsScreenData &data) :
{
}
-QList<QPlatformScreen *> QWindowsScreen::screens()
-{
- // Retrieve monitors and add static depth information to each.
- WindowsScreenDataList data;
- EnumDisplayMonitors(0, 0, monitorEnumCallback, (LPARAM)&data);
-
- const int depth = QWindowsContext::instance()->screenDepth();
- const QImage::Format format = depth == 16 ? QImage::Format_RGB16 : QImage::Format_RGB32;
- QList<QPlatformScreen *> result;
-
- const WindowsScreenDataList::const_iterator scend = data.constEnd();
- for (WindowsScreenDataList::const_iterator it = data.constBegin(); it != scend; ++it) {
- QWindowsScreenData d = *it;
- d.depth = depth;
- d.format = format;
- if (QWindowsContext::verboseIntegration)
- qDebug() << "Screen" << d.geometry << d.availableGeometry << d.primary
- << " physical " << d.physicalSizeMM << " DPI" << d.dpi
- << "Depth: " << d.depth << " Format: " << d.format;
- result.append(new QWindowsScreen(d));
- }
- return result;
-}
+Q_GUI_EXPORT QPixmap qt_pixmapFromWinHBITMAP(HBITMAP bitmap, int hbitmapFormat = 0);
QPixmap QWindowsScreen::grabWindow(WId window, int x, int y, int width, int height) const
{
- Q_GUI_EXPORT QPixmap qt_pixmapFromWinHBITMAP(HBITMAP bitmap, int hbitmapFormat = 0);
-
if (QWindowsContext::verboseIntegration)
qDebug() << __FUNCTION__ << window << x << y << width << height;
RECT r;
@@ -226,4 +238,144 @@ QWindowsScreen *QWindowsScreen::screenOf(const QWindow *w)
return 0;
}
+/*!
+ \brief Determine siblings in a virtual desktop system.
+
+ Self is by definition a sibling, else collect all screens
+ within virtual desktop.
+*/
+
+QList<QPlatformScreen *> QWindowsScreen::virtualSiblings() const
+{
+ QList<QPlatformScreen *> result;
+ if (m_data.flags & QWindowsScreenData::VirtualDesktop) {
+ foreach (QWindowsScreen *screen, QWindowsContext::instance()->screenManager().screens())
+ if (screen->data().flags & QWindowsScreenData::VirtualDesktop)
+ result.push_back(screen);
+ } else {
+ result.push_back(const_cast<QWindowsScreen *>(this));
+ }
+ return result;
+}
+
+/*!
+ \brief Notify QWindowSystemInterface about changes of a screen and synchronize data.
+*/
+
+void QWindowsScreen::handleChanges(const QWindowsScreenData &newData)
+{
+ if (m_data.geometry != newData.geometry) {
+ m_data.geometry = newData.geometry;
+ QWindowSystemInterface::handleScreenGeometryChange(screen(),
+ newData.geometry);
+ }
+ if (m_data.availableGeometry != newData.availableGeometry) {
+ m_data.availableGeometry = newData.availableGeometry;
+ QWindowSystemInterface::handleScreenAvailableGeometryChange(screen(),
+ newData.availableGeometry);
+ }
+ if (!qFuzzyCompare(m_data.dpi.first, newData.dpi.first)
+ || !qFuzzyCompare(m_data.dpi.second, newData.dpi.second)) {
+ m_data.dpi = newData.dpi;
+ QWindowSystemInterface::handleScreenLogicalDotsPerInchChange(screen(),
+ newData.dpi.first,
+ newData.dpi.second);
+ }
+ if (m_data.orientation != newData.orientation) {
+ m_data.orientation = newData.orientation;
+ QWindowSystemInterface::handleScreenOrientationChange(screen(),
+ newData.orientation);
+ }
+}
+
+/*!
+ \class QWindowsScreenManager
+ \brief Manages a list of QWindowsScreen.
+
+ Listens for changes and notifies QWindowSystemInterface about changed/
+ added/deleted screens.
+
+ \ingroup qt-lighthouse-win
+ \sa QWindowsScreen
+*/
+
+QWindowsScreenManager::QWindowsScreenManager() :
+ m_lastDepth(-1), m_lastHorizontalResolution(0), m_lastVerticalResolution(0)
+{
+}
+
+/*!
+ \brief Triggers synchronization of screens (WM_DISPLAYCHANGE).
+
+ Subsequent events are compressed since WM_DISPLAYCHANGE is sent to
+ each top level window.
+*/
+
+bool QWindowsScreenManager::handleDisplayChange(WPARAM wParam, LPARAM lParam)
+{
+ const int newDepth = (int)wParam;
+ const WORD newHorizontalResolution = LOWORD(lParam);
+ const WORD newVerticalResolution = HIWORD(lParam);
+ if (newDepth != m_lastDepth || newHorizontalResolution != m_lastHorizontalResolution
+ || newVerticalResolution != m_lastVerticalResolution) {
+ m_lastDepth = newDepth;
+ m_lastHorizontalResolution = newHorizontalResolution;
+ m_lastVerticalResolution = newVerticalResolution;
+ if (QWindowsContext::verboseWindows)
+ qDebug("%s: Depth=%d, resolution=%hux%hu",
+ __FUNCTION__, newDepth, newHorizontalResolution, newVerticalResolution);
+ handleScreenChanges();
+ }
+ return false;
+}
+
+static inline int indexOfMonitor(const QList<QWindowsScreen *> &screens,
+ const QString &monitorName)
+{
+ for (int i= 0; i < screens.size(); ++i)
+ if (screens.at(i)->data().name == monitorName)
+ return i;
+ return -1;
+}
+
+static inline int indexOfMonitor(const QList<QWindowsScreenData> &screenData,
+ const QString &monitorName)
+{
+ for (int i = 0; i < screenData.size(); ++i)
+ if (screenData.at(i).name == monitorName)
+ return i;
+ return -1;
+}
+
+/*!
+ \brief Synchronizes the screen list, adds new screens, removes deleted
+ ones and propagates resolution changes to QWindowSystemInterface.
+*/
+
+void QWindowsScreenManager::handleScreenChanges()
+{
+ // Look for changed monitors, add new ones
+ const WindowsScreenDataList newDataList = monitorData();
+ foreach (const QWindowsScreenData &newData, newDataList) {
+ const int existingIndex = indexOfMonitor(m_screens, newData.name);
+ if (existingIndex != -1) {
+ m_screens.at(existingIndex)->handleChanges(newData);
+ } else {
+ QWindowsScreen *newScreen = new QWindowsScreen(newData);
+ m_screens.push_back(newScreen);
+ QWindowsIntegration::instance()->emitScreenAdded(newScreen);
+ if (QWindowsContext::verboseWindows)
+ qDebug() << "New Monitor: " << newData;
+ } // exists
+ } // for new screens.
+ // Remove deleted ones.
+ for (int i = m_screens.size() - 1; i >= 0; --i) {
+ if (indexOfMonitor(newDataList, m_screens.at(i)->data().name) == -1) {
+ if (QWindowsContext::verboseWindows)
+ qDebug() << "Removing Monitor: " << m_screens.at(i) ->data();
+ delete m_screens.takeAt(i);
+ } // not found
+ } // for existing screens
+}
+
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/windows/qwindowsscreen.h b/src/plugins/platforms/windows/qwindowsscreen.h
index dc1c8238d9..436cc2c0d9 100644
--- a/src/plugins/platforms/windows/qwindowsscreen.h
+++ b/src/plugins/platforms/windows/qwindowsscreen.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,6 +52,12 @@ QT_BEGIN_NAMESPACE
struct QWindowsScreenData
{
+ enum Flags
+ {
+ PrimaryScreen = 0x1,
+ VirtualDesktop = 0x2
+ };
+
QWindowsScreenData();
QRect geometry;
@@ -60,7 +66,9 @@ struct QWindowsScreenData
QSizeF physicalSizeMM;
int depth;
QImage::Format format;
- bool primary;
+ unsigned flags;
+ QString name;
+ Qt::ScreenOrientation orientation;
};
class QWindowsScreen : public QPlatformScreen
@@ -76,7 +84,9 @@ public:
virtual QImage::Format format() const { return m_data.format; }
virtual QSizeF physicalSize() const { return m_data.physicalSizeMM; }
virtual QDpi logicalDpi() const { return m_data.dpi; }
-
+ virtual QString name() const { return m_data.name; }
+ virtual Qt::ScreenOrientation primaryOrientation() { return m_data.orientation; }
+ virtual QList<QPlatformScreen *> virtualSiblings() const;
virtual QWindow *topLevelAt(const QPoint &point) const
{ return QWindowsScreen::findTopLevelAt(point, CWP_SKIPINVISIBLE); }
@@ -84,18 +94,40 @@ public:
static QWindow *windowAt(const QPoint &point, unsigned flags = CWP_SKIPINVISIBLE);
static QWindow *windowUnderMouse(unsigned flags = CWP_SKIPINVISIBLE);
- static QList<QPlatformScreen *> screens();
-
virtual QPixmap grabWindow(WId window, int x, int y, int width, int height) const;
- const QWindowsCursor &cursor() const { return m_cursor; }
- QWindowsCursor &cursor() { return m_cursor; }
+ inline void handleChanges(const QWindowsScreenData &newData);
+
+ const QWindowsCursor &cursor() const { return m_cursor; }
+ QWindowsCursor &cursor() { return m_cursor; }
+
+ const QWindowsScreenData &data() const { return m_data; }
private:
- const QWindowsScreenData m_data;
+ QWindowsScreenData m_data;
QWindowsCursor m_cursor;
};
+class QWindowsScreenManager
+{
+public:
+ typedef QList<QWindowsScreen *> WindowsScreenList;
+
+ QWindowsScreenManager();
+
+ inline void clearScreens() { qDeleteAll(m_screens); m_screens.clear(); }
+
+ void handleScreenChanges();
+ bool handleDisplayChange(WPARAM wParam, LPARAM lParam);
+ const WindowsScreenList &screens() const { return m_screens; }
+
+private:
+ WindowsScreenList m_screens;
+ int m_lastDepth;
+ WORD m_lastHorizontalResolution;
+ WORD m_lastVerticalResolution;
+};
+
QT_END_NAMESPACE
#endif // QWINDOWSSCREEN_H
diff --git a/src/plugins/platforms/windows/qwindowstheme.cpp b/src/plugins/platforms/windows/qwindowstheme.cpp
index 31adcfa167..73cff3c9ce 100644
--- a/src/plugins/platforms/windows/qwindowstheme.cpp
+++ b/src/plugins/platforms/windows/qwindowstheme.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -81,14 +81,14 @@ QVariant QWindowsTheme::themeHint(ThemeHint hint) const
return QVariant();
}
-bool QWindowsTheme::usePlatformNativeDialog(const QDialog *dialog) const
+bool QWindowsTheme::usePlatformNativeDialog(DialogType type) const
{
- return QWindowsDialogs::useHelper(dialog);
+ return QWindowsDialogs::useHelper(type);
}
-QPlatformDialogHelper *QWindowsTheme::createPlatformDialogHelper(QDialog *dialog) const
+QPlatformDialogHelper *QWindowsTheme::createPlatformDialogHelper(DialogType type) const
{
- return QWindowsDialogs::createHelper(dialog);
+ return QWindowsDialogs::createHelper(type);
}
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/windows/qwindowstheme.h b/src/plugins/platforms/windows/qwindowstheme.h
index 9bb937d607..77c85b2d6e 100644
--- a/src/plugins/platforms/windows/qwindowstheme.h
+++ b/src/plugins/platforms/windows/qwindowstheme.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,8 +51,8 @@ class QWindowsTheme : public QPlatformTheme
public:
QWindowsTheme();
- virtual bool usePlatformNativeDialog(const QDialog *dialog = 0) const;
- virtual QPlatformDialogHelper *createPlatformDialogHelper(QDialog *dialog = 0) const;
+ virtual bool usePlatformNativeDialog(DialogType type) const;
+ virtual QPlatformDialogHelper *createPlatformDialogHelper(DialogType type) const;
virtual QVariant themeHint(ThemeHint) const;
};
diff --git a/src/plugins/platforms/windows/qwindowswindow.cpp b/src/plugins/platforms/windows/qwindowswindow.cpp
index 282576105f..5d8de2e01d 100644
--- a/src/plugins/platforms/windows/qwindowswindow.cpp
+++ b/src/plugins/platforms/windows/qwindowswindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/qwindowswindow.h b/src/plugins/platforms/windows/qwindowswindow.h
index 364f3d0bc5..1d5f3c29d6 100644
--- a/src/plugins/platforms/windows/qwindowswindow.h
+++ b/src/plugins/platforms/windows/qwindowswindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/windows/windows.pro b/src/plugins/platforms/windows/windows.pro
index 4b7202578a..453265405a 100644
--- a/src/plugins/platforms/windows/windows.pro
+++ b/src/plugins/platforms/windows/windows.pro
@@ -4,8 +4,6 @@ load(qt_plugin)
QT *= core-private
QT *= gui-private
QT *= platformsupport-private
-# ### fixme: Remove widgets dependencies of dialog helpers
-QT *= widgets
INCLUDEPATH += ../../../3rdparty/harfbuzz/src
QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforms
@@ -16,6 +14,8 @@ win32-g++: LIBS *= -luuid
# For the dialog helpers:
LIBS *= -lshlwapi -lShell32
+DEFINES *= QT_NO_CAST_FROM_ASCII
+
contains(QT_CONFIG, directwrite) {
LIBS *= -ldwrite
SOURCES += qwindowsfontenginedirectwrite.cpp
diff --git a/src/plugins/platforms/xcb/README b/src/plugins/platforms/xcb/README
index 86db96fdbc..ab802ced27 100644
--- a/src/plugins/platforms/xcb/README
+++ b/src/plugins/platforms/xcb/README
@@ -1,6 +1,6 @@
Required packages:
-libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm1 libxcb-icccm1-dev libxcb-sync0 libxcb-sync0-dev libxcb-render-util0 libxcb-render-util0-dev libxcb-xfixes0-dev
+libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm1 libxcb-icccm1-dev libxcb-sync0 libxcb-sync0-dev libxcb-render-util0 libxcb-render-util0-dev libxcb-xfixes0-dev libxrender-dev
On Ubuntu 11.10 icccm1 is replaced by icccm4 and xcb-render-util is not available:
-libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-sync0 libxcb-sync0-dev libxcb-xfixes0-dev
+libxcb1 libxcb1-dev libx11-xcb1 libx11-xcb-dev libxcb-keysyms1 libxcb-keysyms1-dev libxcb-image0 libxcb-image0-dev libxcb-shm0 libxcb-shm0-dev libxcb-icccm4 libxcb-icccm4-dev libxcb-sync0 libxcb-sync0-dev libxcb-xfixes0-dev libxrender-dev
The packages for xcb-render-util can be installed manually from http://packages.ubuntu.com/natty/libxcb-render-util0 and http://packages.ubuntu.com/natty/libxcb-render-util0-dev
diff --git a/src/plugins/platforms/xcb/main.cpp b/src/plugins/platforms/xcb/main.cpp
index 16ef7628a7..5aa3e921f3 100644
--- a/src/plugins/platforms/xcb/main.cpp
+++ b/src/plugins/platforms/xcb/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qdri2context.cpp b/src/plugins/platforms/xcb/qdri2context.cpp
index c16052f021..c596ca139d 100644
--- a/src/plugins/platforms/xcb/qdri2context.cpp
+++ b/src/plugins/platforms/xcb/qdri2context.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qdri2context.h b/src/plugins/platforms/xcb/qdri2context.h
index 7c4dbb35c2..d0a1b469a9 100644
--- a/src/plugins/platforms/xcb/qdri2context.h
+++ b/src/plugins/platforms/xcb/qdri2context.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qglxintegration.cpp b/src/plugins/platforms/xcb/qglxintegration.cpp
index 86b7f09166..6ada127beb 100644
--- a/src/plugins/platforms/xcb/qglxintegration.cpp
+++ b/src/plugins/platforms/xcb/qglxintegration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -71,15 +71,28 @@ QGLXContext::QGLXContext(QXcbScreen *screen, const QSurfaceFormat &format, QPlat
GLXFBConfig config = qglx_findConfig(DISPLAY_FROM_XCB(screen),screen->screenNumber(),format);
- m_context = glXCreateNewContext(DISPLAY_FROM_XCB(screen), config, GLX_RGBA_TYPE, m_shareContext, TRUE);
- if (!m_context && m_shareContext) {
- // re-try without a shared glx context
- m_shareContext = 0;
- m_context = glXCreateNewContext(DISPLAY_FROM_XCB(screen), config, GLX_RGBA_TYPE, 0, TRUE);
- }
+ if (config) {
+ m_context = glXCreateNewContext(DISPLAY_FROM_XCB(screen), config, GLX_RGBA_TYPE, m_shareContext, TRUE);
+ if (!m_context && m_shareContext) {
+ // re-try without a shared glx context
+ m_shareContext = 0;
+ m_context = glXCreateNewContext(DISPLAY_FROM_XCB(screen), config, GLX_RGBA_TYPE, 0, TRUE);
+ }
- if (m_context)
- m_format = qglx_surfaceFormatFromGLXFBConfig(DISPLAY_FROM_XCB(screen), config, m_context);
+ if (m_context)
+ m_format = qglx_surfaceFormatFromGLXFBConfig(DISPLAY_FROM_XCB(screen), config, m_context);
+ } else {
+ XVisualInfo *visualInfo = qglx_findVisualInfo(DISPLAY_FROM_XCB(m_screen), screen->screenNumber(), format);
+ if (!visualInfo)
+ qFatal("Could not initialize GLX");
+ m_context = glXCreateContext(DISPLAY_FROM_XCB(screen), visualInfo, m_shareContext, true);
+ if (!m_context && m_shareContext) {
+ // re-try without a shared glx context
+ m_shareContext = 0;
+ m_context = glXCreateContext(DISPLAY_FROM_XCB(screen), visualInfo, 0, true);
+ }
+ XFree(visualInfo);
+ }
}
QGLXContext::~QGLXContext()
diff --git a/src/plugins/platforms/xcb/qglxintegration.h b/src/plugins/platforms/xcb/qglxintegration.h
index 93c4805ec8..dce9193eba 100644
--- a/src/plugins/platforms/xcb/qglxintegration.h
+++ b/src/plugins/platforms/xcb/qglxintegration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qxcbbackingstore.cpp b/src/plugins/platforms/xcb/qxcbbackingstore.cpp
index ad8b47c25a..b7369525a5 100644
--- a/src/plugins/platforms/xcb/qxcbbackingstore.cpp
+++ b/src/plugins/platforms/xcb/qxcbbackingstore.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -115,8 +115,12 @@ QXcbShmImage::QXcbShmImage(QXcbScreen *screen, const QSize &size, uint depth, QI
m_shm_info.shmaddr = m_xcb_image->data = (quint8 *)shmat (m_shm_info.shmid, 0, 0);
m_shm_info.shmseg = xcb_generate_id(xcb_connection());
- xcb_generic_error_t *error = xcb_request_check(xcb_connection(), xcb_shm_attach_checked(xcb_connection(), m_shm_info.shmseg, m_shm_info.shmid, false));
- if (error) {
+ const xcb_query_extension_reply_t *shm_reply = xcb_get_extension_data(xcb_connection(), &xcb_shm_id);
+ bool shm_present = shm_reply != NULL && shm_reply->present;
+ xcb_generic_error_t *error = NULL;
+ if (shm_present)
+ error = xcb_request_check(xcb_connection(), xcb_shm_attach_checked(xcb_connection(), m_shm_info.shmseg, m_shm_info.shmid, false));
+ if (!shm_present || error) {
free(error);
shmdt(m_shm_info.shmaddr);
diff --git a/src/plugins/platforms/xcb/qxcbbackingstore.h b/src/plugins/platforms/xcb/qxcbbackingstore.h
index 70fed46563..e02c6eb15b 100644
--- a/src/plugins/platforms/xcb/qxcbbackingstore.h
+++ b/src/plugins/platforms/xcb/qxcbbackingstore.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qxcbclipboard.cpp b/src/plugins/platforms/xcb/qxcbclipboard.cpp
index 14d802a8bd..bad80568e3 100644
--- a/src/plugins/platforms/xcb/qxcbclipboard.cpp
+++ b/src/plugins/platforms/xcb/qxcbclipboard.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qxcbclipboard.h b/src/plugins/platforms/xcb/qxcbclipboard.h
index c3b072984e..a43518e80b 100644
--- a/src/plugins/platforms/xcb/qxcbclipboard.h
+++ b/src/plugins/platforms/xcb/qxcbclipboard.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qxcbconnection.cpp b/src/plugins/platforms/xcb/qxcbconnection.cpp
index ca21b1eb9d..fdc2c76fea 100644
--- a/src/plugins/platforms/xcb/qxcbconnection.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,11 +49,13 @@
#include "qxcbclipboard.h"
#include "qxcbdrag.h"
#include "qxcbwmsupport.h"
+#include "qxcbnativeinterface.h"
#include <QtAlgorithms>
#include <QSocketNotifier>
#include <QAbstractEventDispatcher>
#include <QTimer>
+#include <QByteArray>
#include <stdio.h>
#include <errno.h>
@@ -93,9 +95,10 @@ static int nullErrorHandler(Display *, XErrorEvent *)
}
#endif
-QXcbConnection::QXcbConnection(const char *displayName)
+QXcbConnection::QXcbConnection(QXcbNativeInterface *nativeInterface, const char *displayName)
: m_connection(0)
, m_displayName(displayName ? QByteArray(displayName) : qgetenv("DISPLAY"))
+ , m_nativeInterface(nativeInterface)
#ifdef XCB_USE_XINPUT2_MAEMO
, m_xinputData(0)
#endif
@@ -129,7 +132,7 @@ QXcbConnection::QXcbConnection(const char *displayName)
m_connection = xcb_connect(m_displayName.constData(), &m_primaryScreen);
#endif //XCB_USE_XLIB
- if (!m_connection)
+ if (!m_connection || xcb_connection_has_error(m_connection))
qFatal("Could not connect to display %s", m_displayName.constData());
m_reader = new QXcbEventReader(this);
@@ -493,72 +496,77 @@ void QXcbConnection::handleXcbEvent(xcb_generic_event_t *event)
m_callLog.remove(0, i);
}
#endif
- bool handled = true;
+ bool handled = false;
+
+ if (QPlatformNativeInterface::EventFilter filter = m_nativeInterface->eventFilter(QXcbNativeInterface::GenericEventFilter))
+ handled = filter(event, 0);
uint response_type = event->response_type & ~0x80;
- switch (response_type) {
- case XCB_EXPOSE:
- HANDLE_PLATFORM_WINDOW_EVENT(xcb_expose_event_t, window, handleExposeEvent);
- case XCB_BUTTON_PRESS:
- HANDLE_PLATFORM_WINDOW_EVENT(xcb_button_press_event_t, event, handleButtonPressEvent);
- case XCB_BUTTON_RELEASE:
- HANDLE_PLATFORM_WINDOW_EVENT(xcb_button_release_event_t, event, handleButtonReleaseEvent);
- case XCB_MOTION_NOTIFY:
- HANDLE_PLATFORM_WINDOW_EVENT(xcb_motion_notify_event_t, event, handleMotionNotifyEvent);
- case XCB_CONFIGURE_NOTIFY:
- HANDLE_PLATFORM_WINDOW_EVENT(xcb_configure_notify_event_t, event, handleConfigureNotifyEvent);
- case XCB_MAP_NOTIFY:
- HANDLE_PLATFORM_WINDOW_EVENT(xcb_map_notify_event_t, event, handleMapNotifyEvent);
- case XCB_UNMAP_NOTIFY:
- HANDLE_PLATFORM_WINDOW_EVENT(xcb_unmap_notify_event_t, event, handleUnmapNotifyEvent);
- case XCB_CLIENT_MESSAGE:
- handleClientMessageEvent((xcb_client_message_event_t *)event);
- case XCB_ENTER_NOTIFY:
- HANDLE_PLATFORM_WINDOW_EVENT(xcb_enter_notify_event_t, event, handleEnterNotifyEvent);
- case XCB_LEAVE_NOTIFY:
- HANDLE_PLATFORM_WINDOW_EVENT(xcb_leave_notify_event_t, event, handleLeaveNotifyEvent);
- case XCB_FOCUS_IN:
- HANDLE_PLATFORM_WINDOW_EVENT(xcb_focus_in_event_t, event, handleFocusInEvent);
- case XCB_FOCUS_OUT:
- HANDLE_PLATFORM_WINDOW_EVENT(xcb_focus_out_event_t, event, handleFocusOutEvent);
- case XCB_KEY_PRESS:
- HANDLE_KEYBOARD_EVENT(xcb_key_press_event_t, handleKeyPressEvent);
- case XCB_KEY_RELEASE:
- HANDLE_KEYBOARD_EVENT(xcb_key_release_event_t, handleKeyReleaseEvent);
- case XCB_MAPPING_NOTIFY:
- m_keyboard->handleMappingNotifyEvent((xcb_mapping_notify_event_t *)event);
- break;
- case XCB_SELECTION_REQUEST:
- {
- xcb_selection_request_event_t *sr = (xcb_selection_request_event_t *)event;
- if (sr->selection == atom(QXcbAtom::XdndSelection))
- m_drag->handleSelectionRequest(sr);
- else
- m_clipboard->handleSelectionRequest(sr);
- break;
- }
- case XCB_SELECTION_CLEAR:
- setTime(((xcb_selection_clear_event_t *)event)->time);
- m_clipboard->handleSelectionClearRequest((xcb_selection_clear_event_t *)event);
- handled = true;
- break;
- case XCB_SELECTION_NOTIFY:
- setTime(((xcb_selection_notify_event_t *)event)->time);
- qDebug() << "XCB_SELECTION_NOTIFY";
- handled = false;
- break;
- case XCB_PROPERTY_NOTIFY:
- HANDLE_PLATFORM_WINDOW_EVENT(xcb_property_notify_event_t, window, handlePropertyNotifyEvent);
- break;
-#ifdef XCB_USE_XINPUT2_MAEMO
- case GenericEvent:
- handleGenericEvent((xcb_ge_event_t*)event);
- break;
-#endif
- default:
- handled = false;
- break;
+ if (!handled) {
+ switch (response_type) {
+ case XCB_EXPOSE:
+ HANDLE_PLATFORM_WINDOW_EVENT(xcb_expose_event_t, window, handleExposeEvent);
+ case XCB_BUTTON_PRESS:
+ HANDLE_PLATFORM_WINDOW_EVENT(xcb_button_press_event_t, event, handleButtonPressEvent);
+ case XCB_BUTTON_RELEASE:
+ HANDLE_PLATFORM_WINDOW_EVENT(xcb_button_release_event_t, event, handleButtonReleaseEvent);
+ case XCB_MOTION_NOTIFY:
+ HANDLE_PLATFORM_WINDOW_EVENT(xcb_motion_notify_event_t, event, handleMotionNotifyEvent);
+ case XCB_CONFIGURE_NOTIFY:
+ HANDLE_PLATFORM_WINDOW_EVENT(xcb_configure_notify_event_t, event, handleConfigureNotifyEvent);
+ case XCB_MAP_NOTIFY:
+ HANDLE_PLATFORM_WINDOW_EVENT(xcb_map_notify_event_t, event, handleMapNotifyEvent);
+ case XCB_UNMAP_NOTIFY:
+ HANDLE_PLATFORM_WINDOW_EVENT(xcb_unmap_notify_event_t, event, handleUnmapNotifyEvent);
+ case XCB_CLIENT_MESSAGE:
+ handleClientMessageEvent((xcb_client_message_event_t *)event);
+ case XCB_ENTER_NOTIFY:
+ HANDLE_PLATFORM_WINDOW_EVENT(xcb_enter_notify_event_t, event, handleEnterNotifyEvent);
+ case XCB_LEAVE_NOTIFY:
+ HANDLE_PLATFORM_WINDOW_EVENT(xcb_leave_notify_event_t, event, handleLeaveNotifyEvent);
+ case XCB_FOCUS_IN:
+ HANDLE_PLATFORM_WINDOW_EVENT(xcb_focus_in_event_t, event, handleFocusInEvent);
+ case XCB_FOCUS_OUT:
+ HANDLE_PLATFORM_WINDOW_EVENT(xcb_focus_out_event_t, event, handleFocusOutEvent);
+ case XCB_KEY_PRESS:
+ HANDLE_KEYBOARD_EVENT(xcb_key_press_event_t, handleKeyPressEvent);
+ case XCB_KEY_RELEASE:
+ HANDLE_KEYBOARD_EVENT(xcb_key_release_event_t, handleKeyReleaseEvent);
+ case XCB_MAPPING_NOTIFY:
+ m_keyboard->handleMappingNotifyEvent((xcb_mapping_notify_event_t *)event);
+ break;
+ case XCB_SELECTION_REQUEST:
+ {
+ xcb_selection_request_event_t *sr = (xcb_selection_request_event_t *)event;
+ if (sr->selection == atom(QXcbAtom::XdndSelection))
+ m_drag->handleSelectionRequest(sr);
+ else
+ m_clipboard->handleSelectionRequest(sr);
+ break;
+ }
+ case XCB_SELECTION_CLEAR:
+ setTime(((xcb_selection_clear_event_t *)event)->time);
+ m_clipboard->handleSelectionClearRequest((xcb_selection_clear_event_t *)event);
+ handled = true;
+ break;
+ case XCB_SELECTION_NOTIFY:
+ setTime(((xcb_selection_notify_event_t *)event)->time);
+ qDebug() << "XCB_SELECTION_NOTIFY";
+ handled = false;
+ break;
+ case XCB_PROPERTY_NOTIFY:
+ HANDLE_PLATFORM_WINDOW_EVENT(xcb_property_notify_event_t, window, handlePropertyNotifyEvent);
+ break;
+ #ifdef XCB_USE_XINPUT2_MAEMO
+ case GenericEvent:
+ handleGenericEvent((xcb_ge_event_t*)event);
+ break;
+ #endif
+ default:
+ handled = false;
+ break;
+ }
}
if (!handled) {
@@ -909,6 +917,9 @@ static const char * xcb_atomnames = {
"Abs MT Pressure\0"
"Abs MT Tracking ID\0"
"Max Contacts\0"
+#if XCB_USE_MAEMO_WINDOW_PROPERTIES
+ "_MEEGOTOUCH_ORIENTATION_ANGLE\0"
+#endif
};
xcb_atom_t QXcbConnection::atom(QXcbAtom::Atom atom)
diff --git a/src/plugins/platforms/xcb/qxcbconnection.h b/src/plugins/platforms/xcb/qxcbconnection.h
index c227b4c863..7beb41bdd7 100644
--- a/src/plugins/platforms/xcb/qxcbconnection.h
+++ b/src/plugins/platforms/xcb/qxcbconnection.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -66,6 +66,7 @@ class QXcbDrag;
class QXcbKeyboard;
class QXcbClipboard;
class QXcbWMSupport;
+class QXcbNativeInterface;
typedef QHash<xcb_window_t, QXcbWindow *> WindowMapper;
@@ -243,6 +244,10 @@ namespace QXcbAtom {
AbsMTTrackingID,
MaxContacts,
+#if XCB_USE_MAEMO_WINDOW_PROPERTIES
+ MeegoTouchOrientationAngle,
+#endif
+
NPredefinedAtoms,
_QT_SETTINGS_TIMESTAMP = NPredefinedAtoms,
@@ -285,7 +290,7 @@ class QXcbConnection : public QObject
{
Q_OBJECT
public:
- QXcbConnection(const char *displayName = 0);
+ QXcbConnection(QXcbNativeInterface *nativeInterface, const char *displayName = 0);
~QXcbConnection();
QXcbConnection *connection() const { return const_cast<QXcbConnection *>(this); }
@@ -386,6 +391,7 @@ private:
QXcbClipboard *m_clipboard;
QXcbDrag *m_drag;
QScopedPointer<QXcbWMSupport> m_wmSupport;
+ QXcbNativeInterface *m_nativeInterface;
#if defined(XCB_USE_XLIB)
void *m_xlib_display;
diff --git a/src/plugins/platforms/xcb/qxcbconnection_maemo.cpp b/src/plugins/platforms/xcb/qxcbconnection_maemo.cpp
index 12b3d67b9f..1339df78b4 100644
--- a/src/plugins/platforms/xcb/qxcbconnection_maemo.cpp
+++ b/src/plugins/platforms/xcb/qxcbconnection_maemo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qxcbcursor.cpp b/src/plugins/platforms/xcb/qxcbcursor.cpp
index a00fdd4824..ed7c22b1e6 100644
--- a/src/plugins/platforms/xcb/qxcbcursor.cpp
+++ b/src/plugins/platforms/xcb/qxcbcursor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -426,10 +426,12 @@ xcb_cursor_t QXcbCursor::createNonStandardCursor(int cshape)
} else if (cshape == Qt::DragCopyCursor || cshape == Qt::DragMoveCursor
|| cshape == Qt::DragLinkCursor) {
QImage image = QGuiApplicationPrivate::instance()->getPixmapCursor(static_cast<Qt::CursorShape>(cshape)).toImage();
- xcb_pixmap_t pm = qt_xcb_XPixmapFromBitmap(m_screen, image);
- xcb_pixmap_t pmm = qt_xcb_XPixmapFromBitmap(m_screen, image.createAlphaMask());
- cursor = xcb_generate_id(conn);
- xcb_create_cursor(conn, cursor, pm, pmm, 0, 0, 0, 0xFFFF, 0xFFFF, 0xFFFF, 8, 8);
+ if (!image.isNull()) {
+ xcb_pixmap_t pm = qt_xcb_XPixmapFromBitmap(m_screen, image);
+ xcb_pixmap_t pmm = qt_xcb_XPixmapFromBitmap(m_screen, image.createAlphaMask());
+ cursor = xcb_generate_id(conn);
+ xcb_create_cursor(conn, cursor, pm, pmm, 0, 0, 0, 0xFFFF, 0xFFFF, 0xFFFF, 8, 8);
+ }
}
return cursor;
diff --git a/src/plugins/platforms/xcb/qxcbcursor.h b/src/plugins/platforms/xcb/qxcbcursor.h
index f766d7c74e..da243424d5 100644
--- a/src/plugins/platforms/xcb/qxcbcursor.h
+++ b/src/plugins/platforms/xcb/qxcbcursor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qxcbdrag.cpp b/src/plugins/platforms/xcb/qxcbdrag.cpp
index 89b1fa7445..a05fc780bc 100644
--- a/src/plugins/platforms/xcb/qxcbdrag.cpp
+++ b/src/plugins/platforms/xcb/qxcbdrag.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qxcbdrag.h b/src/plugins/platforms/xcb/qxcbdrag.h
index 0233cc32b2..e32e630548 100644
--- a/src/plugins/platforms/xcb/qxcbdrag.h
+++ b/src/plugins/platforms/xcb/qxcbdrag.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qxcbeglsurface.h b/src/plugins/platforms/xcb/qxcbeglsurface.h
index c4367cf572..a8594fdf2d 100644
--- a/src/plugins/platforms/xcb/qxcbeglsurface.h
+++ b/src/plugins/platforms/xcb/qxcbeglsurface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qxcbimage.cpp b/src/plugins/platforms/xcb/qxcbimage.cpp
index 824805a983..13ff8ab2a5 100644
--- a/src/plugins/platforms/xcb/qxcbimage.cpp
+++ b/src/plugins/platforms/xcb/qxcbimage.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qxcbimage.h b/src/plugins/platforms/xcb/qxcbimage.h
index 6a06610937..708b9305c2 100644
--- a/src/plugins/platforms/xcb/qxcbimage.h
+++ b/src/plugins/platforms/xcb/qxcbimage.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qxcbintegration.cpp b/src/plugins/platforms/xcb/qxcbintegration.cpp
index 3cf50cbbd9..40359169ca 100644
--- a/src/plugins/platforms/xcb/qxcbintegration.cpp
+++ b/src/plugins/platforms/xcb/qxcbintegration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,6 +47,7 @@
#include "qxcbnativeinterface.h"
#include "qxcbclipboard.h"
#include "qxcbdrag.h"
+#include "qxcbsharedgraphicscache.h"
#include <xcb/xcb.h>
@@ -90,13 +91,14 @@ QXcbIntegration::QXcbIntegration(const QStringList &parameters)
#ifdef XCB_USE_XLIB
XInitThreads();
#endif
+ m_nativeInterface.reset(new QXcbNativeInterface);
- m_connections << new QXcbConnection;
+ m_connections << new QXcbConnection(m_nativeInterface.data());
for (int i = 0; i < parameters.size() - 1; i += 2) {
qDebug() << parameters.at(i) << parameters.at(i+1);
QString display = parameters.at(i) + ':' + parameters.at(i+1);
- m_connections << new QXcbConnection(display.toAscii().constData());
+ m_connections << new QXcbConnection(m_nativeInterface.data(), display.toAscii().constData());
}
foreach (QXcbConnection *connection, m_connections)
@@ -104,9 +106,12 @@ QXcbIntegration::QXcbIntegration(const QStringList &parameters)
screenAdded(screen);
m_fontDatabase.reset(new QGenericUnixFontDatabase());
- m_nativeInterface.reset(new QXcbNativeInterface);
m_inputContext.reset(QPlatformInputContextFactory::create());
m_accessibility.reset(new QPlatformAccessibility());
+
+#if defined(QT_USE_XCB_SHARED_GRAPHICS_CACHE)
+ m_sharedGraphicsCache.reset(new QXcbSharedGraphicsCache);
+#endif
}
QXcbIntegration::~QXcbIntegration()
@@ -186,6 +191,10 @@ QPlatformBackingStore *QXcbIntegration::createPlatformBackingStore(QWindow *wind
bool QXcbIntegration::hasCapability(QPlatformIntegration::Capability cap) const
{
switch (cap) {
+#if defined(QT_USE_XCB_SHARED_GRAPHICS_CACHE)
+ case SharedGraphicsCache: return true;
+#endif
+
case ThreadedPixmaps: return true;
case OpenGL: return true;
case ThreadedOpenGL:
@@ -239,4 +248,24 @@ QPlatformAccessibility *QXcbIntegration::accessibility() const
return m_accessibility.data();
}
+#if defined(QT_USE_XCB_SHARED_GRAPHICS_CACHE)
+static bool sharedGraphicsCacheDisabled()
+{
+ static const char *environmentVariable = "QT_DISABLE_SHARED_CACHE";
+ static bool cacheDisabled = !qgetenv(environmentVariable).isEmpty()
+ && qgetenv(environmentVariable).toInt() != 0;
+ return cacheDisabled;
+}
+
+QPlatformSharedGraphicsCache *QXcbIntegration::createPlatformSharedGraphicsCache(const char *cacheId) const
+{
+ Q_UNUSED(cacheId);
+
+ if (sharedGraphicsCacheDisabled())
+ return 0;
+
+ return m_sharedGraphicsCache.data();
+}
+#endif
+
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/xcb/qxcbintegration.h b/src/plugins/platforms/xcb/qxcbintegration.h
index 8a3926dbfb..eefecd509b 100644
--- a/src/plugins/platforms/xcb/qxcbintegration.h
+++ b/src/plugins/platforms/xcb/qxcbintegration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,6 +49,7 @@ QT_BEGIN_NAMESPACE
class QXcbConnection;
class QAbstractEventDispatcher;
+class QXcbNativeInterface;
class QXcbIntegration : public QPlatformIntegration
{
@@ -76,16 +77,24 @@ public:
QPlatformAccessibility *accessibility() const;
+#if defined(QT_USE_XCB_SHARED_GRAPHICS_CACHE)
+ QPlatformSharedGraphicsCache *createPlatformSharedGraphicsCache(const char *cacheId) const;
+#endif
+
private:
QList<QXcbConnection *> m_connections;
QScopedPointer<QPlatformFontDatabase> m_fontDatabase;
- QScopedPointer<QPlatformNativeInterface> m_nativeInterface;
+ QScopedPointer<QXcbNativeInterface> m_nativeInterface;
QScopedPointer<QPlatformInputContext> m_inputContext;
QAbstractEventDispatcher *m_eventDispatcher;
QScopedPointer<QPlatformAccessibility> m_accessibility;
+
+#if defined(QT_USE_XCB_SHARED_GRAPHICS_CACHE)
+ QScopedPointer<QPlatformSharedGraphicsCache> m_sharedGraphicsCache;
+#endif
};
QT_END_NAMESPACE
diff --git a/src/plugins/platforms/xcb/qxcbkeyboard.cpp b/src/plugins/platforms/xcb/qxcbkeyboard.cpp
index ef71b78339..8c86d43f17 100644
--- a/src/plugins/platforms/xcb/qxcbkeyboard.cpp
+++ b/src/plugins/platforms/xcb/qxcbkeyboard.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qxcbkeyboard.h b/src/plugins/platforms/xcb/qxcbkeyboard.h
index 4a62dde11a..e93f9065e8 100644
--- a/src/plugins/platforms/xcb/qxcbkeyboard.h
+++ b/src/plugins/platforms/xcb/qxcbkeyboard.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qxcbmime.cpp b/src/plugins/platforms/xcb/qxcbmime.cpp
index 5d86a118c7..bcc94baed7 100644
--- a/src/plugins/platforms/xcb/qxcbmime.cpp
+++ b/src/plugins/platforms/xcb/qxcbmime.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qxcbmime.h b/src/plugins/platforms/xcb/qxcbmime.h
index 02be4c9c5b..e6a7ccc834 100644
--- a/src/plugins/platforms/xcb/qxcbmime.h
+++ b/src/plugins/platforms/xcb/qxcbmime.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
index 52ff30991e..b7403cfdce 100644
--- a/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
+++ b/src/plugins/platforms/xcb/qxcbnativeinterface.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -76,6 +76,11 @@ public:
Q_GLOBAL_STATIC(QXcbResourceMap, qXcbResourceMap)
+QXcbNativeInterface::QXcbNativeInterface()
+{
+ qFill(m_eventFilters, m_eventFilters + EventFilterCount, EventFilter(0));
+}
+
void *QXcbNativeInterface::nativeResourceForContext(const QByteArray &resourceString, QOpenGLContext *context)
{
QByteArray lowerCaseResource = resourceString.toLower();
@@ -118,6 +123,21 @@ void *QXcbNativeInterface::nativeResourceForWindow(const QByteArray &resourceStr
return result;
}
+QPlatformNativeInterface::EventFilter QXcbNativeInterface::setEventFilter(const QByteArray &eventType, QPlatformNativeInterface::EventFilter filter)
+{
+ int type = -1;
+ if (eventType == QByteArrayLiteral("xcb_generic_event_t"))
+ type = GenericEventFilter;
+ if (type == -1) {
+ qWarning("%s: Attempt to set invalid event filter type '%s'.",
+ Q_FUNC_INFO, eventType.constData());
+ return 0;
+ }
+ const EventFilter oldFilter = m_eventFilters[type];
+ m_eventFilters[type] = filter;
+ return oldFilter;
+}
+
QXcbScreen *QXcbNativeInterface::qPlatformScreenForWindow(QWindow *window)
{
QXcbScreen *screen;
diff --git a/src/plugins/platforms/xcb/qxcbnativeinterface.h b/src/plugins/platforms/xcb/qxcbnativeinterface.h
index 517e92bc64..6f6130d3e9 100644
--- a/src/plugins/platforms/xcb/qxcbnativeinterface.h
+++ b/src/plugins/platforms/xcb/qxcbnativeinterface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -61,9 +61,19 @@ public:
EglContext
};
+ enum EventFilterType {
+ GenericEventFilter,
+ EventFilterCount
+ };
+
+ QXcbNativeInterface();
+
void *nativeResourceForContext(const QByteArray &resourceString, QOpenGLContext *context);
void *nativeResourceForWindow(const QByteArray &resourceString, QWindow *window);
+ EventFilter setEventFilter(const QByteArray &eventType, EventFilter filter);
+ EventFilter eventFilter(EventFilterType type) const { return m_eventFilters[type]; }
+
void *displayForWindow(QWindow *window);
void *eglDisplayForWindow(QWindow *window);
void *connectionForWindow(QWindow *window);
@@ -73,6 +83,8 @@ public:
void *eglContextForContext(QOpenGLContext *context);
private:
+ EventFilter m_eventFilters[EventFilterCount];
+
static QXcbScreen *qPlatformScreenForWindow(QWindow *window);
};
diff --git a/src/plugins/platforms/xcb/qxcbobject.h b/src/plugins/platforms/xcb/qxcbobject.h
index b164f63f76..ccc7ab0e58 100644
--- a/src/plugins/platforms/xcb/qxcbobject.h
+++ b/src/plugins/platforms/xcb/qxcbobject.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qxcbscreen.cpp b/src/plugins/platforms/xcb/qxcbscreen.cpp
index 8b01b4389f..c93b4863e1 100644
--- a/src/plugins/platforms/xcb/qxcbscreen.cpp
+++ b/src/plugins/platforms/xcb/qxcbscreen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -108,7 +108,11 @@ QXcbScreen::QXcbScreen(QXcbConnection *connection, xcb_screen_t *screen, int num
free(reply);
- m_syncRequestSupported = m_windowManagerName != QLatin1String("KWin");
+ const xcb_query_extension_reply_t *sync_reply = xcb_get_extension_data(xcb_connection(), &xcb_sync_id);
+ if (!sync_reply || !sync_reply->present)
+ m_syncRequestSupported = false;
+ else
+ m_syncRequestSupported = m_windowManagerName != QLatin1String("KWin");
m_clientLeader = xcb_generate_id(xcb_connection());
Q_XCB_CALL2(xcb_create_window(xcb_connection(),
diff --git a/src/plugins/platforms/xcb/qxcbscreen.h b/src/plugins/platforms/xcb/qxcbscreen.h
index 1975d56189..870d4d5662 100644
--- a/src/plugins/platforms/xcb/qxcbscreen.h
+++ b/src/plugins/platforms/xcb/qxcbscreen.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qxcbsharedbuffermanager.cpp b/src/plugins/platforms/xcb/qxcbsharedbuffermanager.cpp
new file mode 100644
index 0000000000..f9e388b662
--- /dev/null
+++ b/src/plugins/platforms/xcb/qxcbsharedbuffermanager.cpp
@@ -0,0 +1,640 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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$
+**
+****************************************************************************/
+
+#if defined(QT_USE_XCB_SHARED_GRAPHICS_CACHE)
+
+#include "qxcbsharedbuffermanager.h"
+
+#include <QtCore/quuid.h>
+#include <QtGui/qimage.h>
+
+#include <stdio.h>
+
+#if !defined(SHAREDGRAPHICSCACHE_MAX_MEMORY_USED)
+# define SHAREDGRAPHICSCACHE_MAX_MEMORY_USED 16 * 1024 * 1024 // 16 MB limit
+#endif
+
+#if !defined(SHAREDGRAPHICSCACHE_MAX_TEXTURES_PER_CACHE)
+# define SHAREDGRAPHICSCACHE_MAX_TEXTURES_PER_CACHE 1
+#endif
+
+#if !defined(SHAREDGRAPHICSCACHE_TEXTURE_SIZE)
+# define SHAREDGRAPHICSCACHE_TEXTURE_SIZE 2048
+#endif
+
+#define SHAREDBUFFERMANAGER_DEBUG 1
+
+QT_BEGIN_NAMESPACE
+
+QXcbSharedBufferManager::QXcbSharedBufferManager()
+ : m_memoryUsed(0)
+ , m_mostRecentlyUsed(0)
+ , m_leastRecentlyUsed(0)
+{
+}
+
+QXcbSharedBufferManager::~QXcbSharedBufferManager()
+{
+ {
+ QHash<QByteArray, Buffer *>::const_iterator it = m_buffers.constBegin();
+ while (it != m_buffers.constEnd()) {
+ Buffer *buffer = it.value();
+ delete buffer;
+ ++it;
+ }
+ }
+
+ {
+ QHash<QByteArray, Items *>::const_iterator it = m_items.constBegin();
+ while (it != m_items.constEnd()) {
+ Items *items = it.value();
+ QHash<quint32, Item *>::const_iterator itemIt = items->items.constBegin();
+ while (itemIt != items->items.constEnd()) {
+ delete itemIt.value();
+ ++itemIt;
+ }
+ delete it.value();
+ ++it;
+ }
+ }
+}
+
+void QXcbSharedBufferManager::getBufferForItem(const QByteArray &cacheId, quint32 itemId,
+ Buffer **buffer, int *x, int *y) const
+{
+ Q_ASSERT_X(m_currentCacheId.isEmpty(), Q_FUNC_INFO,
+ "Call endSharedBufferAction before accessing data");
+
+ Q_ASSERT(buffer != 0);
+ Q_ASSERT(x != 0);
+ Q_ASSERT(y != 0);
+
+ Items *items = itemsForCache(cacheId);
+ Item *item = items->items.value(itemId);
+ if (item != 0) {
+ *buffer = item->buffer;
+ *x = item->x;
+ *y = item->y;
+ } else {
+ *buffer = 0;
+ *x = -1;
+ *y = -1;
+ }
+}
+
+QPair<QByteArray, int> QXcbSharedBufferManager::serializeBuffer(QSharedMemory *buffer) const
+{
+ Q_ASSERT_X(m_currentCacheId.isEmpty(), Q_FUNC_INFO,
+ "Call endSharedBufferAction before accessing data");
+
+ return qMakePair(buffer->key().toLatin1(), 0);
+}
+
+void QXcbSharedBufferManager::beginSharedBufferAction(const QByteArray &cacheId)
+{
+#if defined(SHAREDBUFFERMANAGER_DEBUG)
+ qDebug("QXcbSharedBufferManager::beginSharedBufferAction() called for %s", cacheId.constData());
+#endif
+
+ Q_ASSERT(m_currentCacheId.isEmpty());
+ Q_ASSERT(!cacheId.isEmpty());
+
+ m_pendingInvalidatedItems.clear();
+ m_pendingReadyItems.clear();
+ m_pendingMissingItems.clear();
+
+ m_currentCacheId = cacheId;
+}
+
+void QXcbSharedBufferManager::requestItems(const QSet<quint32> &itemIds)
+{
+#if defined(SHAREDBUFFERMANAGER_DEBUG)
+ qDebug("QXcbSharedBufferManager::requestItems for %d items", itemIds.size());
+#endif
+
+ Q_ASSERT_X(!m_currentCacheId.isEmpty(), Q_FUNC_INFO,
+ "Call beginSharedBufferAction before requesting items");
+ Items *items = itemsForCache(m_currentCacheId);
+
+ QSet<quint32>::const_iterator it = itemIds.constBegin();
+ while (it != itemIds.constEnd()) {
+ if (items->items.contains(*it))
+ m_pendingReadyItems[m_currentCacheId].insert(*it);
+ else
+ m_pendingMissingItems[m_currentCacheId].insert(*it);
+ ++it;
+ }
+}
+
+void QXcbSharedBufferManager::releaseItems(const QSet<quint32> &itemIds)
+{
+#if defined(SHAREDBUFFERMANAGER_DEBUG)
+ qDebug("QXcbSharedBufferManager::releaseItems for %d items", itemIds.size());
+#endif
+
+ Items *items = itemsForCache(m_currentCacheId);
+
+ QSet<quint32>::const_iterator it;
+ for (it = itemIds.constBegin(); it != itemIds.constEnd(); ++it) {
+ Item *item = items->items.value(*it);
+ if (item != 0)
+ pushItemToBack(items, item);
+
+ m_pendingReadyItems[m_currentCacheId].remove(*it);
+ m_pendingMissingItems[m_currentCacheId].remove(*it);
+ }
+}
+
+void QXcbSharedBufferManager::insertItem(quint32 itemId, uchar *data,
+ int itemWidth, int itemHeight)
+{
+ Q_ASSERT_X(!m_currentCacheId.isEmpty(), Q_FUNC_INFO,
+ "Call beginSharedBufferAction before inserting items");
+ Items *items = itemsForCache(m_currentCacheId);
+
+ if (!items->items.contains(itemId)) {
+ Buffer *sharedBuffer = 0;
+ int x = 0;
+ int y = 0;
+
+ findAvailableBuffer(itemWidth, itemHeight, &sharedBuffer, &x, &y);
+ copyIntoBuffer(sharedBuffer, x, y, itemWidth, itemHeight, data);
+
+// static int counter=0;
+// QString fileName = QString::fromLatin1("buffer%1.png").arg(counter++);
+// saveBuffer(sharedBuffer, fileName);
+
+ Item *item = new Item;
+ item->itemId = itemId;
+ item->buffer = sharedBuffer;
+ item->x = x;
+ item->y = y;
+
+ items->items[itemId] = item;
+
+ touchItem(items, item);
+ }
+}
+
+void QXcbSharedBufferManager::endSharedBufferAction()
+{
+#if defined(SHAREDBUFFERMANAGER_DEBUG)
+ qDebug("QXcbSharedBufferManager::endSharedBufferAction() called for %s",
+ m_currentCacheId.constData());
+#endif
+
+ Q_ASSERT(!m_currentCacheId.isEmpty());
+
+ // Do an extra validation pass on the invalidated items since they may have been re-inserted
+ // after they were invalidated
+ if (m_pendingInvalidatedItems.contains(m_currentCacheId)) {
+ QSet<quint32> &invalidatedItems = m_pendingInvalidatedItems[m_currentCacheId];
+ QSet<quint32>::iterator it = invalidatedItems.begin();
+ while (it != invalidatedItems.end()) {
+ Items *items = m_items.value(m_currentCacheId);
+
+ if (items->items.contains(*it)) {
+ m_pendingReadyItems[m_currentCacheId].insert(*it);
+ it = invalidatedItems.erase(it);
+ } else {
+ ++it;
+ }
+ }
+ }
+
+ m_currentCacheId.clear();
+}
+
+void QXcbSharedBufferManager::pushItemToBack(Items *items, Item *item)
+{
+ if (items->leastRecentlyUsed == item)
+ return;
+
+ if (item->next != 0)
+ item->next->prev = item->prev;
+ if (item->prev != 0)
+ item->prev->next = item->next;
+
+ if (items->mostRecentlyUsed == item)
+ items->mostRecentlyUsed = item->prev;
+
+ if (items->leastRecentlyUsed != 0)
+ items->leastRecentlyUsed->prev = item;
+
+ item->prev = 0;
+ item->next = items->leastRecentlyUsed;
+ items->leastRecentlyUsed = item;
+ if (items->mostRecentlyUsed == 0)
+ items->mostRecentlyUsed = item;
+}
+
+void QXcbSharedBufferManager::touchItem(Items *items, Item *item)
+{
+ if (items->mostRecentlyUsed == item)
+ return;
+
+ if (item->next != 0)
+ item->next->prev = item->prev;
+ if (item->prev != 0)
+ item->prev->next = item->next;
+
+ if (items->leastRecentlyUsed == item)
+ items->leastRecentlyUsed = item->next;
+
+ if (items->mostRecentlyUsed != 0)
+ items->mostRecentlyUsed->next = item;
+
+ item->next = 0;
+ item->prev = items->mostRecentlyUsed;
+ items->mostRecentlyUsed = item;
+ if (items->leastRecentlyUsed == 0)
+ items->leastRecentlyUsed = item;
+}
+
+void QXcbSharedBufferManager::deleteItem(Items *items, Item *item)
+{
+ Q_ASSERT(items != 0);
+ Q_ASSERT(item != 0);
+
+ if (items->mostRecentlyUsed == item)
+ items->mostRecentlyUsed = item->prev;
+ if (items->leastRecentlyUsed == item)
+ items->leastRecentlyUsed = item->next;
+
+ if (item->next != 0)
+ item->next->prev = item->prev;
+ if (item->prev != 0)
+ item->prev->next = item->next;
+
+ m_pendingInvalidatedItems[items->cacheId].insert(item->itemId);
+
+ {
+ QHash<quint32, Item *>::iterator it = items->items.find(item->itemId);
+ while (it != items->items.end() && it.value()->itemId == item->itemId)
+ it = items->items.erase(it);
+ }
+
+ delete item;
+}
+
+void QXcbSharedBufferManager::recycleItem(Buffer **sharedBuffer, int *glyphX, int *glyphY)
+{
+#if defined(SHAREDBUFFERMANAGER_DEBUG)
+ qDebug("QXcbSharedBufferManager::recycleItem() called for %s", m_currentCacheId.constData());
+#endif
+
+ Items *items = itemsForCache(m_currentCacheId);
+
+ Item *recycledItem = items->leastRecentlyUsed;
+ Q_ASSERT(recycledItem != 0);
+
+ *sharedBuffer = recycledItem->buffer;
+ *glyphX = recycledItem->x;
+ *glyphY = recycledItem->y;
+
+ deleteItem(items, recycledItem);
+}
+
+void QXcbSharedBufferManager::touchBuffer(Buffer *buffer)
+{
+#if defined(SHAREDBUFFERMANAGER_DEBUG)
+ qDebug("QXcbSharedBufferManager::touchBuffer() called for %s", buffer->cacheId.constData());
+#endif
+
+ if (buffer == m_mostRecentlyUsed)
+ return;
+
+ if (buffer->next != 0)
+ buffer->next->prev = buffer->prev;
+ if (buffer->prev != 0)
+ buffer->prev->next = buffer->next;
+
+ if (m_leastRecentlyUsed == buffer)
+ m_leastRecentlyUsed = buffer->next;
+
+ buffer->next = 0;
+ buffer->prev = m_mostRecentlyUsed;
+ if (m_mostRecentlyUsed != 0)
+ m_mostRecentlyUsed->next = buffer;
+ if (m_leastRecentlyUsed == 0)
+ m_leastRecentlyUsed = buffer;
+ m_mostRecentlyUsed = buffer;
+}
+
+void QXcbSharedBufferManager::deleteLeastRecentlyUsed()
+{
+#if defined(SHAREDBUFFERMANAGER_DEBUG)
+ qDebug("QXcbSharedBufferManager::deleteLeastRecentlyUsed() called");
+#endif
+
+ if (m_leastRecentlyUsed == 0)
+ return;
+
+ Buffer *old = m_leastRecentlyUsed;
+ m_leastRecentlyUsed = old->next;
+ m_leastRecentlyUsed->prev = 0;
+
+ QByteArray cacheId = old->cacheId;
+ Items *items = itemsForCache(cacheId);
+
+ QHash<quint32, Item *>::iterator it = items->items.begin();
+ while (it != items->items.end()) {
+ Item *item = it.value();
+ if (item->buffer == old) {
+ deleteItem(items, item);
+ it = items->items.erase(it);
+ } else {
+ ++it;
+ }
+ }
+
+ m_buffers.remove(cacheId, old);
+ m_memoryUsed -= old->width * old->height * old->bytesPerPixel;
+
+#if defined(SHAREDBUFFERMANAGER_DEBUG)
+ qDebug("QXcbSharedBufferManager::deleteLeastRecentlyUsed: Memory used: %d / %d (%6.2f %%)",
+ m_memoryUsed, SHAREDGRAPHICSCACHE_MAX_MEMORY_USED,
+ 100.0f * float(m_memoryUsed) / float(SHAREDGRAPHICSCACHE_MAX_MEMORY_USED));
+#endif
+
+ delete old;
+}
+
+QXcbSharedBufferManager::Buffer *QXcbSharedBufferManager::createNewBuffer(const QByteArray &cacheId,
+ int heightRequired)
+{
+#if defined(SHAREDBUFFERMANAGER_DEBUG)
+ qDebug("QXcbSharedBufferManager::createNewBuffer() called for %s", cacheId.constData());
+#endif
+
+ // ###
+ // if (bufferCount of cacheId == SHAREDGRAPHICACHE_MAX_TEXTURES_PER_CACHE)
+ // deleteLeastRecentlyUsedBufferForCache(cacheId);
+
+ // ### Take pixel format into account
+ while (m_memoryUsed + SHAREDGRAPHICSCACHE_TEXTURE_SIZE * heightRequired >= SHAREDGRAPHICSCACHE_MAX_MEMORY_USED)
+ deleteLeastRecentlyUsed();
+
+ Buffer *buffer = allocateBuffer(SHAREDGRAPHICSCACHE_TEXTURE_SIZE, heightRequired);
+ buffer->cacheId = cacheId;
+
+ buffer->currentLineMaxHeight = 0;
+ m_buffers.insert(cacheId, buffer);
+
+ return buffer;
+}
+
+static inline int qt_next_power_of_two(int v)
+{
+ v--;
+ v |= v >> 1;
+ v |= v >> 2;
+ v |= v >> 4;
+ v |= v >> 8;
+ v |= v >> 16;
+ ++v;
+ return v;
+}
+
+QXcbSharedBufferManager::Buffer *QXcbSharedBufferManager::resizeBuffer(Buffer *oldBuffer, const QSize &newSize)
+{
+#if defined(SHAREDBUFFERMANAGER_DEBUG)
+ qDebug("QXcbSharedBufferManager::resizeBuffer() called for %s (current size: %dx%d, new size: %dx%d)",
+ oldBuffer->cacheId.constData(), oldBuffer->width, oldBuffer->height,
+ newSize.width(), newSize.height());
+#endif
+
+ // Remove old buffer from lists to avoid deleting it under our feet
+ if (m_leastRecentlyUsed == oldBuffer)
+ m_leastRecentlyUsed = oldBuffer->next;
+ if (m_mostRecentlyUsed == oldBuffer)
+ m_mostRecentlyUsed = oldBuffer->prev;
+
+ if (oldBuffer->prev != 0)
+ oldBuffer->prev->next = oldBuffer->next;
+ if (oldBuffer->next != 0)
+ oldBuffer->next->prev = oldBuffer->prev;
+
+ m_memoryUsed -= oldBuffer->width * oldBuffer->height * oldBuffer->bytesPerPixel;
+ m_buffers.remove(oldBuffer->cacheId, oldBuffer);
+
+#if defined(SHAREDBUFFERMANAGER_DEBUG)
+ qDebug("QXcbSharedBufferManager::resizeBuffer: Memory used: %d / %d (%6.2f %%)",
+ m_memoryUsed, SHAREDGRAPHICSCACHE_MAX_MEMORY_USED,
+ 100.0f * float(m_memoryUsed) / float(SHAREDGRAPHICSCACHE_MAX_MEMORY_USED));
+#endif
+
+ Buffer *resizedBuffer = createNewBuffer(oldBuffer->cacheId, newSize.height());
+ copyIntoBuffer(resizedBuffer, 0, 0, oldBuffer->width, oldBuffer->height,
+ reinterpret_cast<uchar *>(oldBuffer->buffer->data()));
+
+ resizedBuffer->currentLineMaxHeight = oldBuffer->currentLineMaxHeight;
+
+ Items *items = itemsForCache(oldBuffer->cacheId);
+ QHash<quint32, Item *>::const_iterator it = items->items.constBegin();
+ while (it != items->items.constEnd()) {
+ Item *item = it.value();
+ if (item->buffer == oldBuffer) {
+ m_pendingReadyItems[oldBuffer->cacheId].insert(item->itemId);
+ item->buffer = resizedBuffer;
+ }
+ ++it;
+ }
+
+ resizedBuffer->nextX = oldBuffer->nextX;
+ resizedBuffer->nextY = oldBuffer->nextY;
+ resizedBuffer->currentLineMaxHeight = oldBuffer->currentLineMaxHeight;
+
+ delete oldBuffer;
+ return resizedBuffer;
+}
+
+void QXcbSharedBufferManager::findAvailableBuffer(int itemWidth, int itemHeight,
+ Buffer **sharedBuffer, int *glyphX, int *glyphY)
+{
+ Q_ASSERT(sharedBuffer != 0);
+ Q_ASSERT(glyphX != 0);
+ Q_ASSERT(glyphY != 0);
+
+ QMultiHash<QByteArray, Buffer *>::iterator it = m_buffers.find(m_currentCacheId);
+
+ int bufferCount = 0;
+ while (it != m_buffers.end() && it.key() == m_currentCacheId) {
+ Buffer *buffer = it.value();
+
+ int x = buffer->nextX;
+ int y = buffer->nextY;
+ int width = buffer->width;
+ int height = buffer->height;
+
+ if (x + itemWidth <= width && y + itemHeight <= height) {
+ // There is space on the current line, put the item there
+ buffer->currentLineMaxHeight = qMax(buffer->currentLineMaxHeight, itemHeight);
+ *sharedBuffer = buffer;
+ *glyphX = x;
+ *glyphY = y;
+
+ buffer->nextX += itemWidth;
+
+ return;
+ } else if (itemWidth <= width && y + buffer->currentLineMaxHeight + itemHeight <= height) {
+ // There is space for a new line, put the item on the new line
+ buffer->nextX = 0;
+ buffer->nextY += buffer->currentLineMaxHeight;
+ buffer->currentLineMaxHeight = 0;
+
+ *sharedBuffer = buffer;
+ *glyphX = buffer->nextX;
+ *glyphY = buffer->nextY;
+
+ buffer->nextX += itemWidth;
+
+ return;
+ } else if (y + buffer->currentLineMaxHeight + itemHeight <= SHAREDGRAPHICSCACHE_TEXTURE_SIZE) {
+ // There is space if we resize the buffer, so we do that
+ int newHeight = qt_next_power_of_two(y + buffer->currentLineMaxHeight + itemHeight);
+ buffer = resizeBuffer(buffer, QSize(width, newHeight));
+
+ buffer->nextX = 0;
+ buffer->nextY += buffer->currentLineMaxHeight;
+ buffer->currentLineMaxHeight = 0;
+
+ *sharedBuffer = buffer;
+ *glyphX = buffer->nextX;
+ *glyphY = buffer->nextY;
+
+ buffer->nextX += itemWidth;
+ return;
+ }
+
+ bufferCount++;
+ ++it;
+ }
+
+ if (bufferCount == SHAREDGRAPHICSCACHE_MAX_TEXTURES_PER_CACHE) {
+ // There is no space in any buffer, and there is no space for a new buffer
+ // recycle an old item
+ recycleItem(sharedBuffer, glyphX, glyphY);
+ } else {
+ // Create a new buffer for the item
+ *sharedBuffer = createNewBuffer(m_currentCacheId, qt_next_power_of_two(itemHeight));
+ if (*sharedBuffer == 0) {
+ Q_ASSERT(false);
+ return;
+ }
+
+ *glyphX = (*sharedBuffer)->nextX;
+ *glyphY = (*sharedBuffer)->nextY;
+
+ (*sharedBuffer)->nextX += itemWidth;
+ }
+}
+
+QXcbSharedBufferManager::Buffer *QXcbSharedBufferManager::allocateBuffer(int width, int height)
+{
+ Buffer *buffer = new Buffer;
+ buffer->nextX = 0;
+ buffer->nextY = 0;
+ buffer->width = width;
+ buffer->height = height;
+ buffer->bytesPerPixel = 1; // ### Use pixel format here
+
+ buffer->buffer = new QSharedMemory(QUuid::createUuid().toString());
+ bool ok = buffer->buffer->create(buffer->width * buffer->height * buffer->bytesPerPixel,
+ QSharedMemory::ReadWrite);
+ if (!ok) {
+ qWarning("SharedBufferManager::findAvailableBuffer: Can't create new buffer (%s)",
+ qPrintable(buffer->buffer->errorString()));
+ delete buffer;
+ return 0;
+ }
+ qMemSet(buffer->buffer->data(), 0, buffer->buffer->size());
+
+ m_memoryUsed += buffer->width * buffer->height * buffer->bytesPerPixel;
+
+#if defined(SHAREDBUFFERMANAGER_DEBUG)
+ qDebug("QXcbSharedBufferManager::allocateBuffer: Memory used: %d / %d (%6.2f %%)",
+ int(m_memoryUsed), int(SHAREDGRAPHICSCACHE_MAX_MEMORY_USED),
+ 100.0f * float(m_memoryUsed) / float(SHAREDGRAPHICSCACHE_MAX_MEMORY_USED));
+#endif
+
+ return buffer;
+}
+
+void QXcbSharedBufferManager::copyIntoBuffer(Buffer *buffer,
+ int bufferX, int bufferY, int width, int height,
+ uchar *data)
+{
+#if defined(SHAREDBUFFERMANAGER_DEBUG)
+ qDebug("QXcbSharedBufferManager::copyIntoBuffer() called for %s (coords: %d, %d)",
+ buffer->cacheId.constData(), bufferX, bufferY);
+#endif
+
+ Q_ASSERT(bufferX >= 0);
+ Q_ASSERT(bufferX + width <= buffer->width);
+ Q_ASSERT(bufferY >= 0);
+ Q_ASSERT(bufferY + height <= buffer->height);
+
+ uchar *dest = reinterpret_cast<uchar *>(buffer->buffer->data());
+ dest += bufferX + bufferY * buffer->width;
+ for (int y=0; y<height; ++y) {
+ qMemCopy(dest, data, width);
+
+ data += width;
+ dest += buffer->width;
+ }
+}
+
+QXcbSharedBufferManager::Items *QXcbSharedBufferManager::itemsForCache(const QByteArray &cacheId) const
+{
+ Items *items = m_items.value(cacheId);
+ if (items == 0) {
+ items = new Items;
+ items->cacheId = cacheId;
+ m_items[cacheId] = items;
+ }
+
+ return items;
+}
+
+QT_END_NAMESPACE
+
+#endif // QT_USE_XCB_SHARED_GRAPHICS_CACHE
diff --git a/src/plugins/platforms/xcb/qxcbsharedbuffermanager.h b/src/plugins/platforms/xcb/qxcbsharedbuffermanager.h
new file mode 100644
index 0000000000..ca79b502c2
--- /dev/null
+++ b/src/plugins/platforms/xcb/qxcbsharedbuffermanager.h
@@ -0,0 +1,215 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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$
+**
+****************************************************************************/
+
+#ifndef XCBSHAREDBUFFERMANAGER_H
+#define XCBSHAREDBUFFERMANAGER_H
+
+#if defined(QT_USE_XCB_SHARED_GRAPHICS_CACHE)
+
+#include <QtCore/qset.h>
+#include <QtCore/qhash.h>
+#include <QtCore/qsharedmemory.h>
+
+#include <GLES2/gl2.h>
+
+#include <EGL/egl.h>
+
+#include <EGL/eglext.h>
+
+class wl_resource;
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QXcbSharedBufferManager
+{
+public:
+ struct Buffer {
+ Buffer()
+ : width(-1)
+ , height(-1)
+ , bytesPerPixel(1)
+ , nextX(-1)
+ , nextY(-1)
+ , currentLineMaxHeight(0)
+ , next(0)
+ , prev(0)
+ , buffer(0)
+ , textureId(0)
+ {
+ }
+
+ ~Buffer()
+ {
+ delete buffer;
+
+ if (textureId != 0)
+ glDeleteTextures(1, &textureId);
+ }
+
+ QByteArray cacheId;
+ int width;
+ int height;
+ int bytesPerPixel;
+ int nextX;
+ int nextY;
+ int currentLineMaxHeight;
+
+ Buffer *next;
+ Buffer *prev;
+
+ QSharedMemory *buffer;
+
+ GLuint textureId;
+
+ QAtomicInt ref;
+ };
+
+ typedef QHash<QByteArray, QSet<quint32> > PendingItemIds;
+
+ QXcbSharedBufferManager();
+ ~QXcbSharedBufferManager();
+
+ void beginSharedBufferAction(const QByteArray &cacheId);
+ void insertItem(quint32 itemId, uchar *data, int itemWidth, int itemHeight);
+ void requestItems(const QSet<quint32> &itemIds);
+ void releaseItems(const QSet<quint32> &itemIds);
+ void endSharedBufferAction();
+
+ void getBufferForItem(const QByteArray &cacheId, quint32 itemId, Buffer **buffer,
+ int *x, int *y) const;
+ QPair<QByteArray, int> serializeBuffer(QSharedMemory *buffer) const;
+
+ PendingItemIds pendingItemsInvalidated() const
+ {
+ Q_ASSERT_X(m_currentCacheId.isEmpty(), Q_FUNC_INFO,
+ "Call endSharedBufferAction() before accessing data");
+ return m_pendingInvalidatedItems;
+ }
+
+ PendingItemIds pendingItemsReady() const
+ {
+ Q_ASSERT_X(m_currentCacheId.isEmpty(), Q_FUNC_INFO,
+ "Call endSharedBufferAction() before accessing data");
+ return m_pendingReadyItems;
+ }
+
+ PendingItemIds pendingItemsMissing() const
+ {
+ Q_ASSERT_X(m_currentCacheId.isEmpty(), Q_FUNC_INFO,
+ "Call endSharedBufferAction() before accessing data");
+ return m_pendingMissingItems;
+ }
+
+private:
+ struct Item {
+ Item()
+ : next(0)
+ , prev(0)
+ , buffer(0)
+ , itemId(0)
+ , x(-1)
+ , y(-1)
+ , width(-1)
+ , height(-1)
+ {
+ }
+
+ Item *next;
+ Item *prev;
+
+ Buffer *buffer;
+ quint32 itemId;
+ int x;
+ int y;
+ int width;
+ int height;
+ };
+
+ struct Items
+ {
+ Items() : leastRecentlyUsed(0), mostRecentlyUsed(0) {}
+
+ Item *leastRecentlyUsed;
+ Item *mostRecentlyUsed;
+
+ QByteArray cacheId;
+ QHash<quint32, Item *> items;
+ };
+
+ void findAvailableBuffer(int itemWidth, int itemHeight, Buffer **buffer, int *x, int *y);
+ void recycleItem(Buffer **buffer, int *x, int *y);
+ void copyIntoBuffer(Buffer *buffer, int x, int y, int itemWidth, int itemHeight, uchar *data);
+ void touchBuffer(Buffer *buffer);
+ void deleteLeastRecentlyUsed();
+
+ Buffer *createNewBuffer(const QByteArray &cacheId, int heightRequired);
+ Buffer *resizeBuffer(Buffer *buffer, const QSize &newSize);
+ Buffer *allocateBuffer(int width, int height);
+
+ Items *itemsForCache(const QByteArray &cacheId) const;
+ void pushItemToBack(Items *items, Item *item);
+ void touchItem(Items *items, Item *item);
+ void deleteItem(Items *items, Item *item);
+ void recycleItem(const QByteArray &cacheId, Buffer **sharedBuffer, int *glyphX, int *glyphY);
+
+ QByteArray m_currentCacheId;
+
+ quint32 m_memoryUsed;
+ Buffer *m_mostRecentlyUsed;
+ Buffer *m_leastRecentlyUsed;
+
+ mutable QHash<QByteArray, Items *> m_items;
+ QMultiHash<QByteArray, Buffer *> m_buffers;
+
+ PendingItemIds m_pendingInvalidatedItems;
+ PendingItemIds m_pendingReadyItems;
+ PendingItemIds m_pendingMissingItems;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QT_USE_XCB_SHARED_GRAPHICS_CACHE
+
+#endif // XCBSHAREDBUFFERMANAGER_H
diff --git a/src/plugins/platforms/xcb/qxcbsharedgraphicscache.cpp b/src/plugins/platforms/xcb/qxcbsharedgraphicscache.cpp
new file mode 100644
index 0000000000..fa937504ad
--- /dev/null
+++ b/src/plugins/platforms/xcb/qxcbsharedgraphicscache.cpp
@@ -0,0 +1,290 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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$
+**
+****************************************************************************/
+
+#if defined(QT_USE_XCB_SHARED_GRAPHICS_CACHE)
+
+#include "qxcbsharedgraphicscache.h"
+#include "qxcbsharedbuffermanager.h"
+
+#include <QtCore/qsharedmemory.h>
+
+#include <QtGui/qopenglcontext.h>
+#include <QtGui/qscreen.h>
+
+#define GL_GLEXT_PROTOTYPES
+#include <GLES2/gl2ext.h>
+
+#define SHAREDGRAPHICSCACHE_DEBUG 1
+
+QT_BEGIN_NAMESPACE
+
+QXcbSharedGraphicsCache::QXcbSharedGraphicsCache(QObject *parent)
+ : QPlatformSharedGraphicsCache(parent)
+ , m_bufferManager(new QXcbSharedBufferManager)
+{
+}
+
+void QXcbSharedGraphicsCache::requestItems(const QByteArray &cacheId,
+ const QVector<quint32> &itemIds)
+{
+ m_bufferManager->beginSharedBufferAction(cacheId);
+
+ QSet<quint32> itemsForRequest;
+ for (int i=0; i<itemIds.size(); ++i)
+ itemsForRequest.insert(itemIds.at(i));
+
+ m_bufferManager->requestItems(itemsForRequest);
+ m_bufferManager->endSharedBufferAction();
+
+ processPendingItems();
+}
+
+void QXcbSharedGraphicsCache::insertItems(const QByteArray &cacheId,
+ const QVector<quint32> &itemIds,
+ const QVector<QImage> &items)
+{
+ m_bufferManager->beginSharedBufferAction(cacheId);
+
+ QSet<quint32> itemsForRequest;
+ for (int i=0; i<itemIds.size(); ++i) {
+ QImage image = items.at(i);
+ m_bufferManager->insertItem(itemIds.at(i), image.bits(), image.width(), image.height());
+ itemsForRequest.insert(itemIds.at(i));
+ }
+
+ // ### To avoid loops, we could check missing items here and notify the client
+ m_bufferManager->requestItems(itemsForRequest);
+
+ m_bufferManager->endSharedBufferAction();
+
+ processPendingItems();
+}
+
+void QXcbSharedGraphicsCache::ensureCacheInitialized(const QByteArray &cacheId,
+ BufferType bufferType,
+ PixelFormat pixelFormat)
+{
+ Q_UNUSED(cacheId);
+ Q_UNUSED(bufferType);
+ Q_UNUSED(pixelFormat);
+}
+
+
+void QXcbSharedGraphicsCache::releaseItems(const QByteArray &cacheId,
+ const QVector<quint32> &itemIds)
+{
+ m_bufferManager->beginSharedBufferAction(cacheId);
+
+ QSet<quint32> itemsToRelease;
+ for (int i=0; i<itemIds.size(); ++i)
+ itemsToRelease.insert(itemIds.at(i));
+
+ m_bufferManager->releaseItems(itemsToRelease);
+
+ m_bufferManager->endSharedBufferAction();
+
+ processPendingItems();
+}
+
+void QXcbSharedGraphicsCache::serializeBuffer(void *bufferId,
+ QByteArray *serializedData,
+ int *fileDescriptor) const
+{
+ QXcbSharedBufferManager::Buffer *buffer =
+ reinterpret_cast<QXcbSharedBufferManager::Buffer *>(bufferId);
+
+ QPair<QByteArray, int> bufferName = m_bufferManager->serializeBuffer(buffer->buffer);
+
+ *serializedData = bufferName.first;
+ *fileDescriptor = bufferName.second;
+}
+
+GLuint QXcbSharedGraphicsCache::textureIdForBuffer(void *bufferId)
+{
+# if defined(SHAREDGRAPHICSCACHE_DEBUG)
+ qDebug("QXcbSharedGraphicsCache::textureIdForBuffer");
+# endif
+
+ QXcbSharedBufferManager::Buffer *buffer =
+ reinterpret_cast<QXcbSharedBufferManager::Buffer *>(bufferId);
+
+ if (buffer->textureId == 0) {
+ glGenTextures(1, &buffer->textureId);
+ if (buffer->textureId == 0) {
+ qWarning("QXcbSharedGraphicsCache::textureIdForBuffer: Failed to generate texture (gl error: 0x%x)",
+ glGetError());
+ return 0;
+ }
+
+ glBindTexture(GL_TEXTURE_2D, buffer->textureId);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+ glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+ }
+
+ glBindTexture(GL_TEXTURE_2D, buffer->textureId);
+ glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, buffer->width, buffer->height, 0, GL_ALPHA,
+ GL_UNSIGNED_BYTE, buffer->buffer->data());
+ glBindTexture(GL_TEXTURE_2D, 0);
+
+ return buffer->textureId;
+}
+
+void QXcbSharedGraphicsCache::referenceBuffer(void *bufferId)
+{
+ QXcbSharedBufferManager::Buffer *buffer =
+ reinterpret_cast<QXcbSharedBufferManager::Buffer *>(bufferId);
+
+ buffer->ref.ref();
+}
+
+bool QXcbSharedGraphicsCache::dereferenceBuffer(void *bufferId)
+{
+ QXcbSharedBufferManager::Buffer *buffer =
+ reinterpret_cast<QXcbSharedBufferManager::Buffer *>(bufferId);
+
+ if (buffer->ref.deref())
+ return true;
+
+ if (buffer->textureId != 0) {
+ glDeleteTextures(1, &buffer->textureId);
+ buffer->textureId = 0;
+ }
+
+ return false;
+}
+
+void QXcbSharedGraphicsCache::processPendingItems()
+{
+# if defined(SHAREDGRAPHICSCACHE_DEBUG)
+ qDebug("QXcbSharedGraphicsCache::processPendingItems");
+# endif
+
+ {
+ QXcbSharedBufferManager::PendingItemIds pendingMissingItems = m_bufferManager->pendingItemsMissing();
+ QXcbSharedBufferManager::PendingItemIds::const_iterator it;
+
+
+ for (it = pendingMissingItems.constBegin(); it != pendingMissingItems.constEnd(); ++it) {
+ QVector<quint32> missingItems;
+
+ const QSet<quint32> &items = it.value();
+ QSet<quint32>::const_iterator itemIt;
+ for (itemIt = items.constBegin(); itemIt != items.constEnd(); ++itemIt)
+ missingItems.append(*itemIt);
+
+# if defined(SHAREDGRAPHICSCACHE_DEBUG)
+ qDebug("QXcbSharedGraphicsCache::processPendingItems: %d missing items",
+ missingItems.size());
+# endif
+
+ if (!missingItems.isEmpty())
+ emit itemsMissing(it.key(), missingItems);
+ }
+ }
+
+ {
+ QXcbSharedBufferManager::PendingItemIds pendingInvalidatedItems = m_bufferManager->pendingItemsInvalidated();
+ QXcbSharedBufferManager::PendingItemIds::const_iterator it;
+
+ for (it = pendingInvalidatedItems.constBegin(); it != pendingInvalidatedItems.constEnd(); ++it) {
+ QVector<quint32> invalidatedItems;
+
+ const QSet<quint32> &items = it.value();
+ QSet<quint32>::const_iterator itemIt;
+ for (itemIt = items.constBegin(); itemIt != items.constEnd(); ++itemIt)
+ invalidatedItems.append(*itemIt);
+
+# if defined(SHAREDGRAPHICSCACHE_DEBUG)
+ qDebug("QXcbSharedGraphicsCache::processPendingItems: %d invalidated items",
+ invalidatedItems.size());
+# endif
+
+ if (!invalidatedItems.isEmpty())
+ emit itemsInvalidated(it.key(), invalidatedItems);
+ }
+ }
+
+ {
+ QXcbSharedBufferManager::PendingItemIds pendingReadyItems = m_bufferManager->pendingItemsReady();
+ QXcbSharedBufferManager::PendingItemIds::const_iterator it;
+
+ for (it = pendingReadyItems.constBegin(); it != pendingReadyItems.constEnd(); ++it) {
+ QHash<QXcbSharedBufferManager::Buffer *, ReadyItem> readyItemsForBuffer;
+ const QSet<quint32> &items = it.value();
+
+ QByteArray cacheId = it.key();
+
+ QSet<quint32>::const_iterator itemIt;
+ for (itemIt = items.constBegin(); itemIt != items.constEnd(); ++itemIt) {
+ QXcbSharedBufferManager::Buffer *buffer;
+ int x = -1;
+ int y = -1;
+
+ m_bufferManager->getBufferForItem(cacheId, *itemIt, &buffer, &x, &y);
+
+ readyItemsForBuffer[buffer].itemIds.append(*itemIt);
+ readyItemsForBuffer[buffer].positions.append(QPoint(x, y));
+ }
+
+ QHash<QXcbSharedBufferManager::Buffer*, ReadyItem>::iterator readyItemIt
+ = readyItemsForBuffer.begin();
+ while (readyItemIt != readyItemsForBuffer.end()) {
+ QXcbSharedBufferManager::Buffer *buffer = readyItemIt.key();
+ if (!readyItemIt.value().itemIds.isEmpty()) {
+# if defined(SHAREDGRAPHICSCACHE_DEBUG)
+ qDebug("QXcbSharedGraphicsCache::processPendingItems: %d ready items",
+ readyItemIt.value().itemIds.size());
+# endif
+
+ emit itemsAvailable(cacheId, buffer, QSize(buffer->width, buffer->height),
+ readyItemIt.value().itemIds, readyItemIt.value().positions);
+ }
+ ++readyItemIt;
+ }
+ }
+ }
+}
+
+QT_END_NAMESPACE
+
+#endif // QT_USE_XCB_SHARED_GRAPHICS_CACHE
diff --git a/src/plugins/platforms/xcb/qxcbsharedgraphicscache.h b/src/plugins/platforms/xcb/qxcbsharedgraphicscache.h
new file mode 100644
index 0000000000..e565556463
--- /dev/null
+++ b/src/plugins/platforms/xcb/qxcbsharedgraphicscache.h
@@ -0,0 +1,91 @@
+/****************************************************************************
+**
+** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the plugins 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$
+**
+****************************************************************************/
+
+#ifndef QXCBSHAREDGRAPHICSCACHE
+#define QXCBSHAREDGRAPHICSCACHE
+
+#if defined(QT_USE_XCB_SHARED_GRAPHICS_CACHE)
+
+#include <QtGui/qplatformsharedgraphicscache_qpa.h>
+
+QT_BEGIN_HEADER
+
+QT_BEGIN_NAMESPACE
+
+class QXcbSharedBufferManager;
+class QXcbSharedGraphicsCache : public QPlatformSharedGraphicsCache
+{
+ Q_OBJECT
+public:
+ explicit QXcbSharedGraphicsCache(QObject *parent = 0);
+
+ virtual void ensureCacheInitialized(const QByteArray &cacheId, BufferType bufferType,
+ PixelFormat pixelFormat);
+
+ virtual void requestItems(const QByteArray &cacheId, const QVector<quint32> &itemIds);
+ virtual void insertItems(const QByteArray &cacheId,
+ const QVector<quint32> &itemIds,
+ const QVector<QImage> &items);
+ virtual void releaseItems(const QByteArray &cacheId, const QVector<quint32> &itemIds);
+
+ virtual void serializeBuffer(void *bufferId, QByteArray *serializedData, int *fileDescriptor) const;
+ virtual uint textureIdForBuffer(void *bufferId);
+ virtual void referenceBuffer(void *bufferId);
+ virtual bool dereferenceBuffer(void *bufferId);
+
+private:
+ struct ReadyItem {
+ QVector<quint32> itemIds;
+ QVector<QPoint> positions;
+ };
+
+ void processPendingItems();
+
+ QXcbSharedBufferManager *m_bufferManager;
+};
+
+QT_END_NAMESPACE
+
+QT_END_HEADER
+
+#endif // QT_USE_XCB_SHARED_GRAPHICS_CACHE
+
+#endif // QXCBSHAREDGRAPHICSCACHE
diff --git a/src/plugins/platforms/xcb/qxcbwindow.cpp b/src/plugins/platforms/xcb/qxcbwindow.cpp
index 2cd2a15fb7..959209dd33 100644
--- a/src/plugins/platforms/xcb/qxcbwindow.cpp
+++ b/src/plugins/platforms/xcb/qxcbwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -130,10 +130,8 @@ static inline QImage::Format imageFormatForDepth(int depth)
case 32: return QImage::Format_ARGB32_Premultiplied;
case 24: return QImage::Format_RGB32;
case 16: return QImage::Format_RGB16;
- default: break;
+ default: return QImage::Format_Invalid;
}
- qFatal("Unsupported display depth %d", depth);
- return QImage::Format_Invalid;
}
QXcbWindow::QXcbWindow(QWindow *window)
@@ -211,7 +209,8 @@ void QXcbWindow::create()
{
#if defined(XCB_USE_GLX)
XVisualInfo *visualInfo = qglx_findVisualInfo(DISPLAY_FROM_XCB(m_screen),m_screen->screenNumber(), window()->format());
-
+ if (!visualInfo)
+ qFatal("Could not initialize GLX");
#elif defined(XCB_USE_EGL)
EGLDisplay eglDisplay = connection()->egl_display();
EGLConfig eglConfig = q_configFromGLFormat(eglDisplay, window()->format(), true);
@@ -224,25 +223,25 @@ void QXcbWindow::create()
XVisualInfo *visualInfo;
int matchingCount = 0;
visualInfo = XGetVisualInfo(DISPLAY_FROM_XCB(this), VisualIDMask, &visualInfoTemplate, &matchingCount);
+ if (!visualInfo)
+ qFatal("Could not initialize EGL");
#endif //XCB_USE_GLX
- if (visualInfo) {
- m_depth = visualInfo->depth;
- m_imageFormat = imageFormatForDepth(m_depth);
- Colormap cmap = XCreateColormap(DISPLAY_FROM_XCB(this), xcb_parent_id, visualInfo->visual, AllocNone);
+ m_depth = visualInfo->depth;
+ m_imageFormat = imageFormatForDepth(m_depth);
+ Colormap cmap = XCreateColormap(DISPLAY_FROM_XCB(this), xcb_parent_id, visualInfo->visual, AllocNone);
- XSetWindowAttributes a;
- a.background_pixel = WhitePixel(DISPLAY_FROM_XCB(this), m_screen->screenNumber());
- a.border_pixel = BlackPixel(DISPLAY_FROM_XCB(this), m_screen->screenNumber());
- a.colormap = cmap;
+ XSetWindowAttributes a;
+ a.background_pixel = WhitePixel(DISPLAY_FROM_XCB(this), m_screen->screenNumber());
+ a.border_pixel = BlackPixel(DISPLAY_FROM_XCB(this), m_screen->screenNumber());
+ a.colormap = cmap;
- m_visualId = visualInfo->visualid;
+ m_visualId = visualInfo->visualid;
- m_window = XCreateWindow(DISPLAY_FROM_XCB(this), xcb_parent_id, rect.x(), rect.y(), rect.width(), rect.height(),
- 0, visualInfo->depth, InputOutput, visualInfo->visual,
- CWBackPixel|CWBorderPixel|CWColormap, &a);
- } else {
- qFatal("no window!");
- }
+ m_window = XCreateWindow(DISPLAY_FROM_XCB(this), xcb_parent_id, rect.x(), rect.y(), rect.width(), rect.height(),
+ 0, visualInfo->depth, InputOutput, visualInfo->visual,
+ CWBackPixel|CWBorderPixel|CWColormap, &a);
+
+ XFree(visualInfo);
} else
#endif //defined(XCB_USE_GLX) || defined(XCB_USE_EGL)
{
@@ -1148,6 +1147,23 @@ void QXcbWindow::requestActivateWindow()
connection()->sync();
}
+#if XCB_USE_MAEMO_WINDOW_PROPERTIES
+void QXcbWindow::setOrientation(Qt::ScreenOrientation orientation)
+{
+ int angle = 0;
+ switch (orientation) {
+ case Qt::PortraitOrientation: angle = 270; break;
+ case Qt::LandscapeOrientation: angle = 0; break;
+ case Qt::InvertedPortraitOrientation: angle = 90; break;
+ case Qt::InvertedLandscapeOrientation: angle = 180; break;
+ case Qt::PrimaryOrientation: break;
+ }
+ Q_XCB_CALL(xcb_change_property(xcb_connection(), XCB_PROP_MODE_REPLACE, m_window,
+ atom(QXcbAtom::MeegoTouchOrientationAngle), XCB_ATOM_CARDINAL, 32,
+ 1, &angle));
+}
+#endif
+
QSurfaceFormat QXcbWindow::format() const
{
// ### return actual format
diff --git a/src/plugins/platforms/xcb/qxcbwindow.h b/src/plugins/platforms/xcb/qxcbwindow.h
index f0b6437699..3cbf9e7e0d 100644
--- a/src/plugins/platforms/xcb/qxcbwindow.h
+++ b/src/plugins/platforms/xcb/qxcbwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -79,6 +79,10 @@ public:
void requestActivateWindow();
+#if XCB_USE_MAEMO_WINDOW_PROPERTIES
+ void setOrientation(Qt::ScreenOrientation orientation);
+#endif
+
bool setKeyboardGrabEnabled(bool grab);
bool setMouseGrabEnabled(bool grab);
diff --git a/src/plugins/platforms/xcb/qxcbwmsupport.cpp b/src/plugins/platforms/xcb/qxcbwmsupport.cpp
index f06c9c503c..114049f911 100644
--- a/src/plugins/platforms/xcb/qxcbwmsupport.cpp
+++ b/src/plugins/platforms/xcb/qxcbwmsupport.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/qxcbwmsupport.h b/src/plugins/platforms/xcb/qxcbwmsupport.h
index faa0934a3d..159aace8ee 100644
--- a/src/plugins/platforms/xcb/qxcbwmsupport.h
+++ b/src/plugins/platforms/xcb/qxcbwmsupport.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xcb/xcb.pro b/src/plugins/platforms/xcb/xcb.pro
index 2498581eb7..d80a6df0b6 100644
--- a/src/plugins/platforms/xcb/xcb.pro
+++ b/src/plugins/platforms/xcb/xcb.pro
@@ -5,6 +5,7 @@ QTDIR_build:DESTDIR = $$QT_BUILD_TREE/plugins/platforms
QT += core-private gui-private platformsupport-private
+
SOURCES = \
qxcbclipboard.cpp \
qxcbconnection.cpp \
@@ -19,7 +20,9 @@ SOURCES = \
main.cpp \
qxcbnativeinterface.cpp \
qxcbcursor.cpp \
- qxcbimage.cpp
+ qxcbimage.cpp \
+ qxcbsharedbuffermanager.cpp \
+ qxcbsharedgraphicscache.cpp
HEADERS = \
qxcbclipboard.h \
@@ -35,7 +38,9 @@ HEADERS = \
qxcbwmsupport.h \
qxcbnativeinterface.h \
qxcbcursor.h \
- qxcbimage.h
+ qxcbimage.h \
+ qxcbsharedbuffermanager.h \
+ qxcbsharedgraphicscache.h
contains(QT_CONFIG, xcb-poll-for-queued-event) {
DEFINES += XCB_POLL_FOR_QUEUED_EVENT
@@ -46,11 +51,14 @@ contains(QT_CONFIG, xcb-xlib) {
DEFINES += XCB_USE_XLIB
LIBS += -lX11 -lX11-xcb
- linux-g++-maemo:contains(QT_CONFIG, xinput2) {
- # XInput2 support for Harmattan.
- DEFINES += XCB_USE_XINPUT2_MAEMO
- SOURCES += qxcbconnection_maemo.cpp
- LIBS += -lXi
+ linux-g++-maemo {
+ contains(QT_CONFIG, xinput2) {
+ # XInput2 support for Harmattan.
+ DEFINES += XCB_USE_XINPUT2_MAEMO
+ SOURCES += qxcbconnection_maemo.cpp
+ LIBS += -lXi
+ }
+ DEFINES += XCB_USE_MAEMO_WINDOW_PROPERTIES
}
}
diff --git a/src/plugins/platforms/xlib/main.cpp b/src/plugins/platforms/xlib/main.cpp
index 41c86a5c18..6030a72236 100644
--- a/src/plugins/platforms/xlib/main.cpp
+++ b/src/plugins/platforms/xlib/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qglxintegration.cpp b/src/plugins/platforms/xlib/qglxintegration.cpp
index c995070fe3..e78689374a 100644
--- a/src/plugins/platforms/xlib/qglxintegration.cpp
+++ b/src/plugins/platforms/xlib/qglxintegration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -70,9 +70,19 @@ QGLXContext::QGLXContext(QXlibScreen *screen, const QSurfaceFormat &format, QPla
if (share)
shareGlxContext = static_cast<const QGLXContext*>(share)->glxContext();
- GLXFBConfig config = qglx_findConfig(screen->display()->nativeDisplay(),screen->xScreenNumber(),format);
- m_context = glXCreateNewContext(screen->display()->nativeDisplay(),config,GLX_RGBA_TYPE,shareGlxContext,TRUE);
- m_windowFormat = qglx_surfaceFormatFromGLXFBConfig(screen->display()->nativeDisplay(),config,m_context);
+ Display *xDisplay = screen->display()->nativeDisplay();
+
+ GLXFBConfig config = qglx_findConfig(xDisplay,screen->xScreenNumber(),format);
+ if (config) {
+ m_context = glXCreateNewContext(xDisplay,config,GLX_RGBA_TYPE,shareGlxContext,TRUE);
+ m_windowFormat = qglx_surfaceFormatFromGLXFBConfig(xDisplay,config,m_context);
+ } else {
+ XVisualInfo *visualInfo = qglx_findVisualInfo(xDisplay, screen->xScreenNumber(), format);
+ if (!visualInfo)
+ qFatal("Could not initialize GLX");
+ m_context = glXCreateContext(xDisplay, visualInfo, shareGlxContext, true);
+ XFree(visualInfo);
+ }
#ifdef MYX11_DEBUG
qDebug() << "QGLXGLContext::create context" << m_context;
diff --git a/src/plugins/platforms/xlib/qglxintegration.h b/src/plugins/platforms/xlib/qglxintegration.h
index c1ef2c9d36..3aef49a52b 100644
--- a/src/plugins/platforms/xlib/qglxintegration.h
+++ b/src/plugins/platforms/xlib/qglxintegration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibbackingstore.cpp b/src/plugins/platforms/xlib/qxlibbackingstore.cpp
index 954b7c32a5..53f052c4ca 100644
--- a/src/plugins/platforms/xlib/qxlibbackingstore.cpp
+++ b/src/plugins/platforms/xlib/qxlibbackingstore.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibbackingstore.h b/src/plugins/platforms/xlib/qxlibbackingstore.h
index 7c0ac4b252..7414905a76 100644
--- a/src/plugins/platforms/xlib/qxlibbackingstore.h
+++ b/src/plugins/platforms/xlib/qxlibbackingstore.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibclipboard.cpp b/src/plugins/platforms/xlib/qxlibclipboard.cpp
index 601314ff4f..920b4a4cff 100644
--- a/src/plugins/platforms/xlib/qxlibclipboard.cpp
+++ b/src/plugins/platforms/xlib/qxlibclipboard.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibclipboard.h b/src/plugins/platforms/xlib/qxlibclipboard.h
index e9faef465b..43c12298ae 100644
--- a/src/plugins/platforms/xlib/qxlibclipboard.h
+++ b/src/plugins/platforms/xlib/qxlibclipboard.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibcursor.cpp b/src/plugins/platforms/xlib/qxlibcursor.cpp
index 44c9ccd489..8ab40e31ef 100644
--- a/src/plugins/platforms/xlib/qxlibcursor.cpp
+++ b/src/plugins/platforms/xlib/qxlibcursor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibcursor.h b/src/plugins/platforms/xlib/qxlibcursor.h
index 74d520e2d1..92e42ac7a1 100644
--- a/src/plugins/platforms/xlib/qxlibcursor.h
+++ b/src/plugins/platforms/xlib/qxlibcursor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibdisplay.cpp b/src/plugins/platforms/xlib/qxlibdisplay.cpp
index 9e9536c93d..57472534ae 100644
--- a/src/plugins/platforms/xlib/qxlibdisplay.cpp
+++ b/src/plugins/platforms/xlib/qxlibdisplay.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibdisplay.h b/src/plugins/platforms/xlib/qxlibdisplay.h
index 02cbd42809..900751366f 100644
--- a/src/plugins/platforms/xlib/qxlibdisplay.h
+++ b/src/plugins/platforms/xlib/qxlibdisplay.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibintegration.cpp b/src/plugins/platforms/xlib/qxlibintegration.cpp
index 216673cc65..965f6ffcc5 100644
--- a/src/plugins/platforms/xlib/qxlibintegration.cpp
+++ b/src/plugins/platforms/xlib/qxlibintegration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibintegration.h b/src/plugins/platforms/xlib/qxlibintegration.h
index 3b505df65a..b76c6e85d8 100644
--- a/src/plugins/platforms/xlib/qxlibintegration.h
+++ b/src/plugins/platforms/xlib/qxlibintegration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibkeyboard.cpp b/src/plugins/platforms/xlib/qxlibkeyboard.cpp
index 688ff5bf4a..e2742c4c8d 100644
--- a/src/plugins/platforms/xlib/qxlibkeyboard.cpp
+++ b/src/plugins/platforms/xlib/qxlibkeyboard.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibkeyboard.h b/src/plugins/platforms/xlib/qxlibkeyboard.h
index 4f781983e6..97f8aafa86 100644
--- a/src/plugins/platforms/xlib/qxlibkeyboard.h
+++ b/src/plugins/platforms/xlib/qxlibkeyboard.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibmime.cpp b/src/plugins/platforms/xlib/qxlibmime.cpp
index 40faa7ed98..ca3a24192a 100644
--- a/src/plugins/platforms/xlib/qxlibmime.cpp
+++ b/src/plugins/platforms/xlib/qxlibmime.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibmime.h b/src/plugins/platforms/xlib/qxlibmime.h
index a10b0002f9..2ce65a3bde 100644
--- a/src/plugins/platforms/xlib/qxlibmime.h
+++ b/src/plugins/platforms/xlib/qxlibmime.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibnativeinterface.cpp b/src/plugins/platforms/xlib/qxlibnativeinterface.cpp
index 154b31fe3f..06f11773bb 100644
--- a/src/plugins/platforms/xlib/qxlibnativeinterface.cpp
+++ b/src/plugins/platforms/xlib/qxlibnativeinterface.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibnativeinterface.h b/src/plugins/platforms/xlib/qxlibnativeinterface.h
index 7bb5b01f61..8f68e61caf 100644
--- a/src/plugins/platforms/xlib/qxlibnativeinterface.h
+++ b/src/plugins/platforms/xlib/qxlibnativeinterface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibscreen.cpp b/src/plugins/platforms/xlib/qxlibscreen.cpp
index c9b8bae49a..ed6f77d830 100644
--- a/src/plugins/platforms/xlib/qxlibscreen.cpp
+++ b/src/plugins/platforms/xlib/qxlibscreen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibscreen.h b/src/plugins/platforms/xlib/qxlibscreen.h
index 44d2174f17..3404243c2c 100644
--- a/src/plugins/platforms/xlib/qxlibscreen.h
+++ b/src/plugins/platforms/xlib/qxlibscreen.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibstatic.cpp b/src/plugins/platforms/xlib/qxlibstatic.cpp
index 147c591b85..9cf938ece7 100644
--- a/src/plugins/platforms/xlib/qxlibstatic.cpp
+++ b/src/plugins/platforms/xlib/qxlibstatic.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibstatic.h b/src/plugins/platforms/xlib/qxlibstatic.h
index d203fa3d5d..6fcf505220 100644
--- a/src/plugins/platforms/xlib/qxlibstatic.h
+++ b/src/plugins/platforms/xlib/qxlibstatic.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/platforms/xlib/qxlibwindow.cpp b/src/plugins/platforms/xlib/qxlibwindow.cpp
index eeb028d359..635caf81f8 100644
--- a/src/plugins/platforms/xlib/qxlibwindow.cpp
+++ b/src/plugins/platforms/xlib/qxlibwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -87,6 +87,8 @@ QXlibWindow::QXlibWindow(QWindow *window)
#if !defined(QT_OPENGL_ES_2)
XVisualInfo *visualInfo = qglx_findVisualInfo(mScreen->display()->nativeDisplay(), mScreen->xScreenNumber(),
window->format());
+ if (!visualInfo)
+ qFatal("Could not initialize GLX");
#else
QPlatformWindowFormat windowFormat = correctColorBuffers(window->platformWindowFormat());
@@ -101,23 +103,22 @@ QXlibWindow::QXlibWindow(QWindow *window)
XVisualInfo *visualInfo;
int matchingCount = 0;
visualInfo = XGetVisualInfo(mScreen->display()->nativeDisplay(), VisualIDMask, &visualInfoTemplate, &matchingCount);
+ if (!visualInfo)
+ qFatal("Could not initialize EGL");
#endif //!defined(QT_OPENGL_ES_2)
- if (visualInfo) {
- mDepth = visualInfo->depth;
- mFormat = (mDepth == 32) ? QImage::Format_ARGB32_Premultiplied : QImage::Format_RGB32;
- mVisual = visualInfo->visual;
- Colormap cmap = XCreateColormap(mScreen->display()->nativeDisplay(), mScreen->rootWindow(), visualInfo->visual, AllocNone);
-
- XSetWindowAttributes a;
- a.background_pixel = WhitePixel(mScreen->display()->nativeDisplay(), mScreen->xScreenNumber());
- a.border_pixel = BlackPixel(mScreen->display()->nativeDisplay(), mScreen->xScreenNumber());
- a.colormap = cmap;
- x_window = XCreateWindow(mScreen->display()->nativeDisplay(), mScreen->rootWindow(),x, y, w, h,
- 0, visualInfo->depth, InputOutput, visualInfo->visual,
- CWBackPixel|CWBorderPixel|CWColormap, &a);
- } else {
- qFatal("no window!");
- }
+ mDepth = visualInfo->depth;
+ mFormat = (mDepth == 32) ? QImage::Format_ARGB32_Premultiplied : QImage::Format_RGB32;
+ mVisual = visualInfo->visual;
+ Colormap cmap = XCreateColormap(mScreen->display()->nativeDisplay(), mScreen->rootWindow(), visualInfo->visual, AllocNone);
+
+ XSetWindowAttributes a;
+ a.background_pixel = WhitePixel(mScreen->display()->nativeDisplay(), mScreen->xScreenNumber());
+ a.border_pixel = BlackPixel(mScreen->display()->nativeDisplay(), mScreen->xScreenNumber());
+ a.colormap = cmap;
+ x_window = XCreateWindow(mScreen->display()->nativeDisplay(), mScreen->rootWindow(),x, y, w, h,
+ 0, visualInfo->depth, InputOutput, visualInfo->visual,
+ CWBackPixel|CWBorderPixel|CWColormap, &a);
+ XFree(visualInfo);
} else
#endif //!defined(QT_NO_OPENGL)
{
diff --git a/src/plugins/platforms/xlib/qxlibwindow.h b/src/plugins/platforms/xlib/qxlibwindow.h
index f3e83deed5..8287f3a8a2 100644
--- a/src/plugins/platforms/xlib/qxlibwindow.h
+++ b/src/plugins/platforms/xlib/qxlibwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro
index d88db04f28..b92ccff985 100644
--- a/src/plugins/plugins.pro
+++ b/src/plugins/plugins.pro
@@ -1,12 +1,7 @@
TEMPLATE = subdirs
SUBDIRS *= sqldrivers bearer
-unix {
- contains(QT_CONFIG,iconv)|contains(QT_CONFIG,gnu-libiconv)|contains(QT_CONFIG,sun-libiconv):SUBDIRS *= codecs
-} else {
- SUBDIRS *= codecs
-}
!contains(QT_CONFIG, no-gui): SUBDIRS *= imageformats
!isEmpty(QT.widgets.name): SUBDIRS += accessible
-SUBDIRS += platforms platforminputcontexts printsupport
+SUBDIRS += platforms platforminputcontexts printsupport generic
diff --git a/src/plugins/printsupport/windows/main.cpp b/src/plugins/printsupport/windows/main.cpp
index 415663b260..baf18504ee 100644
--- a/src/plugins/printsupport/windows/main.cpp
+++ b/src/plugins/printsupport/windows/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/printsupport/windows/qwindowsprinterinfo.cpp b/src/plugins/printsupport/windows/qwindowsprinterinfo.cpp
index 1420186a36..107ed0e789 100644
--- a/src/plugins/printsupport/windows/qwindowsprinterinfo.cpp
+++ b/src/plugins/printsupport/windows/qwindowsprinterinfo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/printsupport/windows/qwindowsprintersupport.cpp b/src/plugins/printsupport/windows/qwindowsprintersupport.cpp
index 208c26ea0b..9444038997 100644
--- a/src/plugins/printsupport/windows/qwindowsprintersupport.cpp
+++ b/src/plugins/printsupport/windows/qwindowsprintersupport.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,6 +47,8 @@
#include <private/qpaintengine_alpha_p.h>
#include <private/qprinterinfo_p.h>
+QT_BEGIN_NAMESPACE
+
QWindowsPrinterSupport::QWindowsPrinterSupport()
: QPlatformPrinterSupport()
{
@@ -100,3 +102,5 @@ QList<QPrinterInfo> QWindowsPrinterSupport::availablePrinters()
{
return mPrinterList;
}
+
+QT_END_NAMESPACE
diff --git a/src/plugins/printsupport/windows/qwindowsprintersupport.h b/src/plugins/printsupport/windows/qwindowsprintersupport.h
index 2774d0693a..35d794aaea 100644
--- a/src/plugins/printsupport/windows/qwindowsprintersupport.h
+++ b/src/plugins/printsupport/windows/qwindowsprintersupport.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -45,6 +45,8 @@
#include <QtCore/QList>
#include <QtPrintSupport/QPlatformPrinterSupport>
+QT_BEGIN_HEADER
+QT_BEGIN_NAMESPACE
class QWin32PrintEngine;
@@ -65,4 +67,7 @@ private:
QPrinter::PrinterMode mCurrentMode;
};
+QT_END_NAMESPACE
+QT_END_HEADER
+
#endif // WINDOWSPRINTERSUPPORT_H
diff --git a/src/plugins/sqldrivers/db2/main.cpp b/src/plugins/sqldrivers/db2/main.cpp
index 1a6ca90776..af5eb10c67 100644
--- a/src/plugins/sqldrivers/db2/main.cpp
+++ b/src/plugins/sqldrivers/db2/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/sqldrivers/ibase/main.cpp b/src/plugins/sqldrivers/ibase/main.cpp
index 059620314e..c1018944fd 100644
--- a/src/plugins/sqldrivers/ibase/main.cpp
+++ b/src/plugins/sqldrivers/ibase/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/sqldrivers/mysql/main.cpp b/src/plugins/sqldrivers/mysql/main.cpp
index 5243c2cb33..86cae58701 100644
--- a/src/plugins/sqldrivers/mysql/main.cpp
+++ b/src/plugins/sqldrivers/mysql/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/sqldrivers/oci/main.cpp b/src/plugins/sqldrivers/oci/main.cpp
index 8d95db8867..4e5a07a64c 100644
--- a/src/plugins/sqldrivers/oci/main.cpp
+++ b/src/plugins/sqldrivers/oci/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/sqldrivers/odbc/main.cpp b/src/plugins/sqldrivers/odbc/main.cpp
index 9b8cac6f98..eada54da9e 100644
--- a/src/plugins/sqldrivers/odbc/main.cpp
+++ b/src/plugins/sqldrivers/odbc/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/sqldrivers/psql/main.cpp b/src/plugins/sqldrivers/psql/main.cpp
index ce2273da5b..db233b9486 100644
--- a/src/plugins/sqldrivers/psql/main.cpp
+++ b/src/plugins/sqldrivers/psql/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/sqldrivers/sqldrivers.pro b/src/plugins/sqldrivers/sqldrivers.pro
index 83d71e48f2..39c58d4f2b 100644
--- a/src/plugins/sqldrivers/sqldrivers.pro
+++ b/src/plugins/sqldrivers/sqldrivers.pro
@@ -9,5 +9,3 @@ contains(sql-plugins, db2) : SUBDIRS += db2
contains(sql-plugins, sqlite) : SUBDIRS += sqlite
contains(sql-plugins, sqlite2) : SUBDIRS += sqlite2
contains(sql-plugins, ibase) : SUBDIRS += ibase
-
-symbian:contains(CONFIG, system-sqlite): SUBDIRS += sqlite_symbian
diff --git a/src/plugins/sqldrivers/sqlite/smain.cpp b/src/plugins/sqldrivers/sqlite/smain.cpp
index 8027f01bf3..47cb08b75c 100644
--- a/src/plugins/sqldrivers/sqlite/smain.cpp
+++ b/src/plugins/sqldrivers/sqlite/smain.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/sqldrivers/sqlite2/smain.cpp b/src/plugins/sqldrivers/sqlite2/smain.cpp
index ebdb0b4d54..f16057c0a6 100644
--- a/src/plugins/sqldrivers/sqlite2/smain.cpp
+++ b/src/plugins/sqldrivers/sqlite2/smain.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/plugins/sqldrivers/sqlite_symbian/SQLite3_v9.2.zip b/src/plugins/sqldrivers/sqlite_symbian/SQLite3_v9.2.zip
deleted file mode 100644
index df7864410a..0000000000
--- a/src/plugins/sqldrivers/sqlite_symbian/SQLite3_v9.2.zip
+++ /dev/null
Binary files differ
diff --git a/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pri b/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pri
deleted file mode 100644
index b7a87f38d8..0000000000
--- a/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pri
+++ /dev/null
@@ -1,52 +0,0 @@
-# We just want to include the sqlite3 binaries for Symbian for platforms that do not have them.
-!symbian-abld:!symbian-sbsv2 {
- !symbian_no_export_sqlite:!exists($${EPOCROOT}epoc32/release/armv5/lib/sqlite3.dso) {
- contains(QMAKE_HOST.os,Windows) {
- # Trick on Windows to do a touch on the file, since copy keeps the timestamp.
- copyWithTouch = copy /y /b NUL+
- } else {
- copyWithTouch = "$$QMAKE_COPY "
- }
- symbian_sqlite3_zip_file = $$PWD/SQLite3_v9.2.zip
-
- # The QMAKE_COPY section is to update timestamp on the file.
- symbian_sqlite3_header.input = symbian_sqlite3_zip_file
- symbian_sqlite3_header.output = sqlite3.h
- !isEmpty(MOC_DIR):symbian_sqlite3_header.output = $$MOC_DIR/$$symbian_sqlite3_header.output
- symbian_sqlite3_header.CONFIG = combine no_link
- symbian_sqlite3_header.dependency_type = TYPE_C
- symbian_sqlite3_header.commands = $$QMAKE_UNZIP -j ${QMAKE_FILE_NAME} epoc32/include/stdapis/${QMAKE_FILE_OUT_BASE}.h \
- && $${copyWithTouch}${QMAKE_FILE_OUT_BASE}.h ${QMAKE_FILE_OUT}.tmp \
- && $$QMAKE_DEL_FILE ${QMAKE_FILE_OUT_BASE}.h \
- && $$QMAKE_MOVE ${QMAKE_FILE_OUT}.tmp ${QMAKE_FILE_OUT}
- silent:symbian_sqlite3_header.commands = @echo unzipping $@ && $$symbian_sqlite3_header.commands
- QMAKE_EXTRA_COMPILERS += symbian_sqlite3_header
-
- # The QMAKE_COPY section is to update timestamp on the file.
- symbian_sqlite3_dso.input = symbian_sqlite3_zip_file
- symbian_sqlite3_dso.output = sqlite3.dso
- !isEmpty(OBJECTS_DIR):symbian_sqlite3_dso.output = $$OBJECTS_DIR/$$symbian_sqlite3_dso.output
- symbian_sqlite3_dso.CONFIG = combine no_link target_predeps
- symbian_sqlite3_dso.commands = $$QMAKE_UNZIP -j ${QMAKE_FILE_NAME} epoc32/release/armv5/lib/${QMAKE_FILE_OUT_BASE}.dso \
- && $${copyWithTouch}${QMAKE_FILE_OUT_BASE}.dso ${QMAKE_FILE_OUT}.tmp \
- && $$QMAKE_DEL_FILE ${QMAKE_FILE_OUT_BASE}.dso \
- && $$QMAKE_MOVE ${QMAKE_FILE_OUT}.tmp ${QMAKE_FILE_OUT}
- silent:symbian_sqlite3_dso.commands = @echo unzipping $@ && $$symbian_sqlite3_dso.commands
- QMAKE_EXTRA_COMPILERS += symbian_sqlite3_dso
-
- # Workaround for the fact that make doesn't understand that sqlite3.dso
- # is the same as $OBJECTS_DIR/sqlite3.dso
- symbian_sqlite3_dso_standalone.target = sqlite3.dso
- symbian_sqlite3_dso_standalone.depends = $$symbian_sqlite3_dso.output
- QMAKE_EXTRA_TARGETS += symbian_sqlite3_dso_standalone
-
- symbian_sqlite3_ver_dso.input = symbian_sqlite3_zip_file
- symbian_sqlite3_ver_dso.output = sqlite3{00060003}.dso
- !isEmpty(OBJECTS_DIR):symbian_sqlite3_ver_dso.output = $$OBJECTS_DIR/$$symbian_sqlite3_ver_dso.output
- symbian_sqlite3_ver_dso.CONFIG = $$symbian_sqlite3_dso.CONFIG
- symbian_sqlite3_ver_dso.commands = $$symbian_sqlite3_dso.commands
- QMAKE_EXTRA_COMPILERS += symbian_sqlite3_ver_dso
-
- QMAKE_LIBDIR *= $$OBJECTS_DIR
- }
-}
diff --git a/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pro b/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pro
deleted file mode 100644
index 0d233e6d43..0000000000
--- a/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pro
+++ /dev/null
@@ -1,9 +0,0 @@
-# Use subdirs template to suppress generation of unnecessary files
-TEMPLATE = subdirs
-
-# We just want to export the sqlite3 binaries for Symbian for platforms that do not have them.
-symbian-abld|symbian-sbsv2 {
- !symbian_no_export_sqlite:!exists($${EPOCROOT}epoc32/release/armv5/lib/sqlite3.dso) {
- BLD_INF_RULES.prj_exports += ":zip SQLite3_v9.2.zip"
- }
-}
diff --git a/src/plugins/sqldrivers/tds/main.cpp b/src/plugins/sqldrivers/tds/main.cpp
index 81e3a21f9b..97ca1c0ed0 100644
--- a/src/plugins/sqldrivers/tds/main.cpp
+++ b/src/plugins/sqldrivers/tds/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the plugins of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/dialogs/qabstractpagesetupdialog.cpp b/src/printsupport/dialogs/qabstractpagesetupdialog.cpp
index 33408b6bd2..7406c820ac 100644
--- a/src/printsupport/dialogs/qabstractpagesetupdialog.cpp
+++ b/src/printsupport/dialogs/qabstractpagesetupdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/dialogs/qabstractpagesetupdialog.h b/src/printsupport/dialogs/qabstractpagesetupdialog.h
index 821d8775da..fce0d883dc 100644
--- a/src/printsupport/dialogs/qabstractpagesetupdialog.h
+++ b/src/printsupport/dialogs/qabstractpagesetupdialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_PRINTDIALOG
diff --git a/src/printsupport/dialogs/qabstractpagesetupdialog_p.h b/src/printsupport/dialogs/qabstractpagesetupdialog_p.h
index 659114cc8e..c8cc7d66e1 100644
--- a/src/printsupport/dialogs/qabstractpagesetupdialog_p.h
+++ b/src/printsupport/dialogs/qabstractpagesetupdialog_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/dialogs/qabstractprintdialog.cpp b/src/printsupport/dialogs/qabstractprintdialog.cpp
index fa91c715c0..1c66c1888f 100644
--- a/src/printsupport/dialogs/qabstractprintdialog.cpp
+++ b/src/printsupport/dialogs/qabstractprintdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -66,9 +66,6 @@ class QPrintDialogPrivate : public QAbstractPrintDialogPrivate
customize settings shown in print dialogs, but it is not used directly.
Use QPrintDialog to display a print dialog in your application.
- In Symbian, there is no support for printing. Hence, this dialog should not
- be used in Symbian.
-
\sa QPrintDialog, QPrinter, {Printing with Qt}
*/
diff --git a/src/printsupport/dialogs/qabstractprintdialog.h b/src/printsupport/dialogs/qabstractprintdialog.h
index da6c831347..564216aa26 100644
--- a/src/printsupport/dialogs/qabstractprintdialog.h
+++ b/src/printsupport/dialogs/qabstractprintdialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_PRINTER
diff --git a/src/printsupport/dialogs/qabstractprintdialog_p.h b/src/printsupport/dialogs/qabstractprintdialog_p.h
index 3ecd749f2d..966fd5393a 100644
--- a/src/printsupport/dialogs/qabstractprintdialog_p.h
+++ b/src/printsupport/dialogs/qabstractprintdialog_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/dialogs/qpagesetupdialog.cpp b/src/printsupport/dialogs/qpagesetupdialog.cpp
index f63835f5e4..53b304df9e 100644
--- a/src/printsupport/dialogs/qpagesetupdialog.cpp
+++ b/src/printsupport/dialogs/qpagesetupdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -63,9 +63,6 @@ QT_BEGIN_NAMESPACE
page margins set on a QPrinter won't show in the native Mac OS X
page setup dialog.
- In Symbian, there is no support for printing. Hence, this dialog should not
- be used in Symbian.
-
\sa QPrinter, QPrintDialog
*/
diff --git a/src/printsupport/dialogs/qpagesetupdialog.h b/src/printsupport/dialogs/qpagesetupdialog.h
index 1bc94ba9de..479332c097 100644
--- a/src/printsupport/dialogs/qpagesetupdialog.h
+++ b/src/printsupport/dialogs/qpagesetupdialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_PRINTDIALOG
diff --git a/src/printsupport/dialogs/qpagesetupdialog_mac.mm b/src/printsupport/dialogs/qpagesetupdialog_mac.mm
index d2bbfaa412..3cd14489a3 100644
--- a/src/printsupport/dialogs/qpagesetupdialog_mac.mm
+++ b/src/printsupport/dialogs/qpagesetupdialog_mac.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp
index 6dc182631c..90fb3ef542 100644
--- a/src/printsupport/dialogs/qpagesetupdialog_unix.cpp
+++ b/src/printsupport/dialogs/qpagesetupdialog_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/dialogs/qpagesetupdialog_unix_p.h b/src/printsupport/dialogs/qpagesetupdialog_unix_p.h
index c51b68dcad..e5c871828a 100644
--- a/src/printsupport/dialogs/qpagesetupdialog_unix_p.h
+++ b/src/printsupport/dialogs/qpagesetupdialog_unix_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/dialogs/qpagesetupdialog_win.cpp b/src/printsupport/dialogs/qpagesetupdialog_win.cpp
index 276cfc1b5b..beaea96dd9 100644
--- a/src/printsupport/dialogs/qpagesetupdialog_win.cpp
+++ b/src/printsupport/dialogs/qpagesetupdialog_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/dialogs/qprintdialog.h b/src/printsupport/dialogs/qprintdialog.h
index 09d5213bad..f563836548 100644
--- a/src/printsupport/dialogs/qprintdialog.h
+++ b/src/printsupport/dialogs/qprintdialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_PRINTDIALOG
diff --git a/src/printsupport/dialogs/qprintdialog.qdoc b/src/printsupport/dialogs/qprintdialog.qdoc
index 238e22df51..c1a7cdf4b3 100644
--- a/src/printsupport/dialogs/qprintdialog.qdoc
+++ b/src/printsupport/dialogs/qprintdialog.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/dialogs/qprintdialog_mac.mm b/src/printsupport/dialogs/qprintdialog_mac.mm
index a4f73ea396..6a267d920b 100644
--- a/src/printsupport/dialogs/qprintdialog_mac.mm
+++ b/src/printsupport/dialogs/qprintdialog_mac.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/dialogs/qprintdialog_unix.cpp b/src/printsupport/dialogs/qprintdialog_unix.cpp
index 2e338ad884..5c5ca77a72 100644
--- a/src/printsupport/dialogs/qprintdialog_unix.cpp
+++ b/src/printsupport/dialogs/qprintdialog_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/dialogs/qprintdialog_win.cpp b/src/printsupport/dialogs/qprintdialog_win.cpp
index 24ba6e6910..cc36e5eb8e 100644
--- a/src/printsupport/dialogs/qprintdialog_win.cpp
+++ b/src/printsupport/dialogs/qprintdialog_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/dialogs/qprintpreviewdialog.cpp b/src/printsupport/dialogs/qprintpreviewdialog.cpp
index 50783969c5..d50424609a 100644
--- a/src/printsupport/dialogs/qprintpreviewdialog.cpp
+++ b/src/printsupport/dialogs/qprintpreviewdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -668,9 +668,6 @@ void QPrintPreviewDialogPrivate::_q_zoomFactorChanged()
Call QPrintPreviewDialog::exec() to show the preview dialog.
\endlist
- In Symbian, there is no support for printing. Hence, this dialog should not
- be used in Symbian.
-
\sa QPrinter, QPrintDialog, QPageSetupDialog, QPrintPreviewWidget
*/
diff --git a/src/printsupport/dialogs/qprintpreviewdialog.h b/src/printsupport/dialogs/qprintpreviewdialog.h
index f87cedafa7..28277f93d7 100644
--- a/src/printsupport/dialogs/qprintpreviewdialog.h
+++ b/src/printsupport/dialogs/qprintpreviewdialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QGraphicsView;
class QPrintPreviewDialogPrivate;
diff --git a/src/printsupport/kernel/qcups.cpp b/src/printsupport/kernel/qcups.cpp
index 46a6545952..1f8bed57ea 100644
--- a/src/printsupport/kernel/qcups.cpp
+++ b/src/printsupport/kernel/qcups.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/kernel/qcups_p.h b/src/printsupport/kernel/qcups_p.h
index 3ad6e3e6a3..cbf153f347 100644
--- a/src/printsupport/kernel/qcups_p.h
+++ b/src/printsupport/kernel/qcups_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/kernel/qpaintengine_alpha.cpp b/src/printsupport/kernel/qpaintengine_alpha.cpp
index 6c0d1d8c26..aa2d2f5baa 100644
--- a/src/printsupport/kernel/qpaintengine_alpha.cpp
+++ b/src/printsupport/kernel/qpaintengine_alpha.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/kernel/qpaintengine_alpha_p.h b/src/printsupport/kernel/qpaintengine_alpha_p.h
index e04d2a61da..d519cc9676 100644
--- a/src/printsupport/kernel/qpaintengine_alpha_p.h
+++ b/src/printsupport/kernel/qpaintengine_alpha_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/kernel/qpaintengine_preview.cpp b/src/printsupport/kernel/qpaintengine_preview.cpp
index 12de24d59d..70f416bba8 100644
--- a/src/printsupport/kernel/qpaintengine_preview.cpp
+++ b/src/printsupport/kernel/qpaintengine_preview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/kernel/qpaintengine_preview_p.h b/src/printsupport/kernel/qpaintengine_preview_p.h
index 417870827e..98fdf2555e 100644
--- a/src/printsupport/kernel/qpaintengine_preview_p.h
+++ b/src/printsupport/kernel/qpaintengine_preview_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/kernel/qplatformprintersupport_qpa.cpp b/src/printsupport/kernel/qplatformprintersupport_qpa.cpp
index 08a59f5f1b..aeb4599955 100644
--- a/src/printsupport/kernel/qplatformprintersupport_qpa.cpp
+++ b/src/printsupport/kernel/qplatformprintersupport_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/kernel/qplatformprintersupport_qpa.h b/src/printsupport/kernel/qplatformprintersupport_qpa.h
index 690f91bd0b..53f5900cce 100644
--- a/src/printsupport/kernel/qplatformprintersupport_qpa.h
+++ b/src/printsupport/kernel/qplatformprintersupport_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_PRINTER
diff --git a/src/printsupport/kernel/qplatformprintplugin.cpp b/src/printsupport/kernel/qplatformprintplugin.cpp
index 6b131855e8..409de3eb4a 100644
--- a/src/printsupport/kernel/qplatformprintplugin.cpp
+++ b/src/printsupport/kernel/qplatformprintplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/kernel/qplatformprintplugin_qpa.h b/src/printsupport/kernel/qplatformprintplugin_qpa.h
index 173e7818a2..aec3e02fa6 100644
--- a/src/printsupport/kernel/qplatformprintplugin_qpa.h
+++ b/src/printsupport/kernel/qplatformprintplugin_qpa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,7 +60,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPlatformPrinterSupport;
diff --git a/src/printsupport/kernel/qprintengine.h b/src/printsupport/kernel/qprintengine.h
index 222f992f62..eb7797b5e0 100644
--- a/src/printsupport/kernel/qprintengine.h
+++ b/src/printsupport/kernel/qprintengine.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_PRINTER
diff --git a/src/printsupport/kernel/qprintengine_pdf.cpp b/src/printsupport/kernel/qprintengine_pdf.cpp
index e66dfe5ae9..9c2e209b9c 100644
--- a/src/printsupport/kernel/qprintengine_pdf.cpp
+++ b/src/printsupport/kernel/qprintengine_pdf.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/kernel/qprintengine_pdf_p.h b/src/printsupport/kernel/qprintengine_pdf_p.h
index c97635f941..52ade83b43 100644
--- a/src/printsupport/kernel/qprintengine_pdf_p.h
+++ b/src/printsupport/kernel/qprintengine_pdf_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/kernel/qprintengine_win.cpp b/src/printsupport/kernel/qprintengine_win.cpp
index 48256388ea..e209314fbc 100644
--- a/src/printsupport/kernel/qprintengine_win.cpp
+++ b/src/printsupport/kernel/qprintengine_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/kernel/qprintengine_win_p.h b/src/printsupport/kernel/qprintengine_win_p.h
index e11b3cb63c..baf8ccefce 100644
--- a/src/printsupport/kernel/qprintengine_win_p.h
+++ b/src/printsupport/kernel/qprintengine_win_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,12 +55,11 @@
#ifndef QT_NO_PRINTER
-#include "qt_windows.h"
-
#include <QtGui/qpaintengine.h>
#include <QtPrintSupport/QPrintEngine>
#include <QtPrintSupport/QPrinter>
#include <private/qpaintengine_alpha_p.h>
+#include <QtCore/qt_windows.h>
QT_BEGIN_NAMESPACE
diff --git a/src/printsupport/kernel/qprinter.cpp b/src/printsupport/kernel/qprinter.cpp
index ae5b2def62..e0373d99e8 100644
--- a/src/printsupport/kernel/qprinter.cpp
+++ b/src/printsupport/kernel/qprinter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/kernel/qprinter.h b/src/printsupport/kernel/qprinter.h
index a4964d64bc..17b125bbf8 100644
--- a/src/printsupport/kernel/qprinter.h
+++ b/src/printsupport/kernel/qprinter.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_PRINTER
diff --git a/src/printsupport/kernel/qprinter_p.h b/src/printsupport/kernel/qprinter_p.h
index d798207379..87b845c69a 100644
--- a/src/printsupport/kernel/qprinter_p.h
+++ b/src/printsupport/kernel/qprinter_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/kernel/qprinterinfo.cpp b/src/printsupport/kernel/qprinterinfo.cpp
index c49c8ab7cd..8d498a7e59 100644
--- a/src/printsupport/kernel/qprinterinfo.cpp
+++ b/src/printsupport/kernel/qprinterinfo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/kernel/qprinterinfo.h b/src/printsupport/kernel/qprinterinfo.h
index 22372158dc..64903bee85 100644
--- a/src/printsupport/kernel/qprinterinfo.h
+++ b/src/printsupport/kernel/qprinterinfo.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_PRINTER
class QPrinterInfoPrivate;
diff --git a/src/printsupport/kernel/qprinterinfo_p.h b/src/printsupport/kernel/qprinterinfo_p.h
index 6a30eb062e..ee139762c4 100644
--- a/src/printsupport/kernel/qprinterinfo_p.h
+++ b/src/printsupport/kernel/qprinterinfo_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/kernel/qprinterinfo_unix.cpp b/src/printsupport/kernel/qprinterinfo_unix.cpp
index 9aeba9a4ce..fba3b4d0a3 100644
--- a/src/printsupport/kernel/qprinterinfo_unix.cpp
+++ b/src/printsupport/kernel/qprinterinfo_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/kernel/qprinterinfo_unix_p.h b/src/printsupport/kernel/qprinterinfo_unix_p.h
index 4d69e5ae21..8e6f3d31db 100644
--- a/src/printsupport/kernel/qprinterinfo_unix_p.h
+++ b/src/printsupport/kernel/qprinterinfo_unix_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/printsupport/widgets/qprintpreviewwidget.cpp b/src/printsupport/widgets/qprintpreviewwidget.cpp
index 551f9d2ced..ce2c6955a0 100644
--- a/src/printsupport/widgets/qprintpreviewwidget.cpp
+++ b/src/printsupport/widgets/qprintpreviewwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -668,17 +668,6 @@ void QPrintPreviewWidget::setZoomFactor(qreal factor)
}
/*!
- \obsolete
- Returns the number of pages in the preview.
- \sa pageCount()
-*/
-int QPrintPreviewWidget::numPages() const
-{
- Q_D(const QPrintPreviewWidget);
- return d->pages.size();
-}
-
-/*!
\since 4.6
Returns the number of pages in the preview.
*/
diff --git a/src/printsupport/widgets/qprintpreviewwidget.h b/src/printsupport/widgets/qprintpreviewwidget.h
index d3551b9c08..56a4d5bbc1 100644
--- a/src/printsupport/widgets/qprintpreviewwidget.h
+++ b/src/printsupport/widgets/qprintpreviewwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPrintPreviewWidgetPrivate;
@@ -82,9 +81,6 @@ public:
ViewMode viewMode() const;
ZoomMode zoomMode() const;
int currentPage() const;
-#ifdef QT_DEPRECATED
- QT_DEPRECATED int numPages() const;
-#endif
int pageCount() const;
void setVisible(bool visible);
diff --git a/src/sql/drivers/db2/qsql_db2.cpp b/src/sql/drivers/db2/qsql_db2.cpp
index f8a803568e..6b7ccc5c83 100644
--- a/src/sql/drivers/db2/qsql_db2.cpp
+++ b/src/sql/drivers/db2/qsql_db2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/drivers/db2/qsql_db2.h b/src/sql/drivers/db2/qsql_db2.h
index 4982aba776..a2462a3435 100644
--- a/src/sql/drivers/db2/qsql_db2.h
+++ b/src/sql/drivers/db2/qsql_db2.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/drivers/ibase/qsql_ibase.cpp b/src/sql/drivers/ibase/qsql_ibase.cpp
index 3d08649de9..1109dfd62a 100644
--- a/src/sql/drivers/ibase/qsql_ibase.cpp
+++ b/src/sql/drivers/ibase/qsql_ibase.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1845,8 +1845,10 @@ void QIBaseDriver::qHandleEventNotification(void *updatedResultBuffer)
isc_event_counts(counts, eBuffer->bufferLength, eBuffer->eventBuffer, eBuffer->resultBuffer);
if (counts[0]) {
- if (eBuffer->subscriptionState == QIBaseEventBuffer::Subscribed)
+ if (eBuffer->subscriptionState == QIBaseEventBuffer::Subscribed) {
emit notification(i.key());
+ emit notification(i.key(), QSqlDriver::UnknownSource);
+ }
else if (eBuffer->subscriptionState == QIBaseEventBuffer::Starting)
eBuffer->subscriptionState = QIBaseEventBuffer::Subscribed;
diff --git a/src/sql/drivers/ibase/qsql_ibase.h b/src/sql/drivers/ibase/qsql_ibase.h
index cd8d302db5..cda9112d7c 100644
--- a/src/sql/drivers/ibase/qsql_ibase.h
+++ b/src/sql/drivers/ibase/qsql_ibase.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/drivers/mysql/qsql_mysql.cpp b/src/sql/drivers/mysql/qsql_mysql.cpp
index b0d8d04d1e..3048748a20 100644
--- a/src/sql/drivers/mysql/qsql_mysql.cpp
+++ b/src/sql/drivers/mysql/qsql_mysql.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/drivers/mysql/qsql_mysql.h b/src/sql/drivers/mysql/qsql_mysql.h
index 632d29305b..01f4a52cd2 100644
--- a/src/sql/drivers/mysql/qsql_mysql.h
+++ b/src/sql/drivers/mysql/qsql_mysql.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/drivers/oci/qsql_oci.cpp b/src/sql/drivers/oci/qsql_oci.cpp
index 9b4f887421..1e001f77b2 100644
--- a/src/sql/drivers/oci/qsql_oci.cpp
+++ b/src/sql/drivers/oci/qsql_oci.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/drivers/oci/qsql_oci.h b/src/sql/drivers/oci/qsql_oci.h
index 5b82829221..9e97c84a7f 100644
--- a/src/sql/drivers/oci/qsql_oci.h
+++ b/src/sql/drivers/oci/qsql_oci.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp
index f0d66ea872..40cd2e6f75 100644
--- a/src/sql/drivers/odbc/qsql_odbc.cpp
+++ b/src/sql/drivers/odbc/qsql_odbc.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/drivers/odbc/qsql_odbc.h b/src/sql/drivers/odbc/qsql_odbc.h
index c28ebce535..0741ad4491 100644
--- a/src/sql/drivers/odbc/qsql_odbc.h
+++ b/src/sql/drivers/odbc/qsql_odbc.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/drivers/psql/qsql_psql.cpp b/src/sql/drivers/psql/qsql_psql.cpp
index 55d8cc6146..e3533581ba 100644
--- a/src/sql/drivers/psql/qsql_psql.cpp
+++ b/src/sql/drivers/psql/qsql_psql.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -107,7 +107,18 @@
template <typename T>
inline void PQfreemem(T *t, int = 0) { free(t); }
+QT_BEGIN_NAMESPACE namespace QtPrivate {
+template <> struct IsPointerToTypeDerivedFromQObject<PGconn*> {
+ enum { Value = false };
+};
+} QT_END_NAMESPACE
Q_DECLARE_METATYPE(PGconn*)
+
+QT_BEGIN_NAMESPACE namespace QtPrivate {
+template <> struct IsPointerToTypeDerivedFromQObject<PGresult*> {
+ enum { Value = false };
+};
+} QT_END_NAMESPACE
Q_DECLARE_METATYPE(PGresult*)
QT_BEGIN_NAMESPACE
@@ -1359,8 +1370,13 @@ void QPSQLDriver::_q_handleNotification(int)
PGnotify *notify = 0;
while((notify = PQnotifies(d->connection)) != 0) {
QString name(QLatin1String(notify->relname));
- if (d->seid.contains(name))
+ if (d->seid.contains(name)) {
emit notification(name);
+ if (notify->be_pid == PQbackendPID(d->connection))
+ emit notification(name, QSqlDriver::SelfSource);
+ else
+ emit notification(name, QSqlDriver::OtherSource);
+ }
else
qWarning("QPSQLDriver: received notification for '%s' which isn't subscribed to.",
qPrintable(name));
diff --git a/src/sql/drivers/psql/qsql_psql.h b/src/sql/drivers/psql/qsql_psql.h
index 16a40463fb..94871b4c99 100644
--- a/src/sql/drivers/psql/qsql_psql.h
+++ b/src/sql/drivers/psql/qsql_psql.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/drivers/sqlite/qsql_sqlite.cpp b/src/sql/drivers/sqlite/qsql_sqlite.cpp
index d7ec53c451..962fc97dfc 100644
--- a/src/sql/drivers/sqlite/qsql_sqlite.cpp
+++ b/src/sql/drivers/sqlite/qsql_sqlite.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,18 @@
#include <sqlite3.h>
+QT_BEGIN_NAMESPACE namespace QtPrivate {
+template <> struct IsPointerToTypeDerivedFromQObject<sqlite3*> {
+ enum { Value = false };
+};
+} QT_END_NAMESPACE
Q_DECLARE_METATYPE(sqlite3*)
+
+QT_BEGIN_NAMESPACE namespace QtPrivate {
+template <> struct IsPointerToTypeDerivedFromQObject<sqlite3_stmt*> {
+ enum { Value = false };
+};
+} QT_END_NAMESPACE
Q_DECLARE_METATYPE(sqlite3_stmt*)
QT_BEGIN_NAMESPACE
@@ -84,6 +95,7 @@ static QVariant::Type qGetColumnType(const QString &tpName)
return QVariant::Int;
if (typeName == QLatin1String("double")
|| typeName == QLatin1String("float")
+ || typeName == QLatin1String("real")
|| typeName.startsWith(QLatin1String("numeric")))
return QVariant::Double;
if (typeName == QLatin1String("blob"))
diff --git a/src/sql/drivers/sqlite/qsql_sqlite.h b/src/sql/drivers/sqlite/qsql_sqlite.h
index eac90b1e47..8232be0ebc 100644
--- a/src/sql/drivers/sqlite/qsql_sqlite.h
+++ b/src/sql/drivers/sqlite/qsql_sqlite.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/drivers/sqlite/qsql_sqlite.pri b/src/sql/drivers/sqlite/qsql_sqlite.pri
index 78a4e49979..7ad5936e25 100644
--- a/src/sql/drivers/sqlite/qsql_sqlite.pri
+++ b/src/sql/drivers/sqlite/qsql_sqlite.pri
@@ -1,8 +1,6 @@
HEADERS += $$PWD/qsql_sqlite.h
SOURCES += $$PWD/qsql_sqlite.cpp
-symbian:include($$QT_SOURCE_TREE/src/plugins/sqldrivers/sqlite_symbian/sqlite_symbian.pri)
-
!system-sqlite:!contains(LIBS, .*sqlite3.*) {
include($$PWD/../../../3rdparty/sqlite.pri)
} else {
diff --git a/src/sql/drivers/sqlite2/qsql_sqlite2.cpp b/src/sql/drivers/sqlite2/qsql_sqlite2.cpp
index d69acc15a6..46127923bf 100644
--- a/src/sql/drivers/sqlite2/qsql_sqlite2.cpp
+++ b/src/sql/drivers/sqlite2/qsql_sqlite2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,6 +60,14 @@
typedef struct sqlite_vm sqlite_vm;
+QT_BEGIN_NAMESPACE namespace QtPrivate {
+template <> struct IsPointerToTypeDerivedFromQObject<sqlite_vm*> {
+ enum { Value = false };
+};
+template <> struct IsPointerToTypeDerivedFromQObject<sqlite*> {
+ enum { Value = false };
+};
+} QT_END_NAMESPACE
Q_DECLARE_METATYPE(sqlite_vm*)
Q_DECLARE_METATYPE(sqlite*)
diff --git a/src/sql/drivers/sqlite2/qsql_sqlite2.h b/src/sql/drivers/sqlite2/qsql_sqlite2.h
index 6372495a54..4df870f3ae 100644
--- a/src/sql/drivers/sqlite2/qsql_sqlite2.h
+++ b/src/sql/drivers/sqlite2/qsql_sqlite2.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/drivers/tds/qsql_tds.cpp b/src/sql/drivers/tds/qsql_tds.cpp
index c97d96beb8..2a97a3c392 100644
--- a/src/sql/drivers/tds/qsql_tds.cpp
+++ b/src/sql/drivers/tds/qsql_tds.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -127,6 +127,18 @@ QT_BEGIN_NAMESPACE
#define CS_PUBLIC
#endif
+namespace QtPrivate {
+template <> struct IsPointerToTypeDerivedFromQObject<LOGINREC*> {
+ enum { Value = false };
+};
+}
+
+namespace QtPrivate {
+template <> struct IsPointerToTypeDerivedFromQObject<DBPROCESS*> {
+ enum { Value = false };
+};
+}
+
QSqlError qMakeError(const QString& err, QSqlError::ErrorType type, int errNo = -1)
{
return QSqlError(QLatin1String("QTDS: ") + err, QString(), type, errNo);
diff --git a/src/sql/drivers/tds/qsql_tds.h b/src/sql/drivers/tds/qsql_tds.h
index d14d1b6cf7..c2301df817 100644
--- a/src/sql/drivers/tds/qsql_tds.h
+++ b/src/sql/drivers/tds/qsql_tds.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/kernel/qsql.h b/src/sql/kernel/qsql.h
index 54c9a684f6..e8f4d9eab1 100644
--- a/src/sql/kernel/qsql.h
+++ b/src/sql/kernel/qsql.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Sql)
namespace QSql
{
diff --git a/src/sql/kernel/qsql.qdoc b/src/sql/kernel/qsql.qdoc
index a935acb661..0762fa977e 100644
--- a/src/sql/kernel/qsql.qdoc
+++ b/src/sql/kernel/qsql.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/kernel/qsqlcachedresult.cpp b/src/sql/kernel/qsqlcachedresult.cpp
index a2ae24a2f4..1971a2935d 100644
--- a/src/sql/kernel/qsqlcachedresult.cpp
+++ b/src/sql/kernel/qsqlcachedresult.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/kernel/qsqlcachedresult_p.h b/src/sql/kernel/qsqlcachedresult_p.h
index c2e4aeb2be..9feaa54999 100644
--- a/src/sql/kernel/qsqlcachedresult_p.h
+++ b/src/sql/kernel/qsqlcachedresult_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/kernel/qsqldatabase.cpp b/src/sql/kernel/qsqldatabase.cpp
index 7ba3c24999..d260588dd5 100644
--- a/src/sql/kernel/qsqldatabase.cpp
+++ b/src/sql/kernel/qsqldatabase.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/kernel/qsqldatabase.h b/src/sql/kernel/qsqldatabase.h
index 9dfbd43ed2..57c55ee675 100644
--- a/src/sql/kernel/qsqldatabase.h
+++ b/src/sql/kernel/qsqldatabase.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Sql)
class QSqlError;
class QSqlDriver;
diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp
index 3b64bb10cb..861cd4ad0f 100644
--- a/src/sql/kernel/qsqldriver.cpp
+++ b/src/sql/kernel/qsqldriver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -131,6 +131,17 @@ QSqlDriver::~QSqlDriver()
*/
/*!
+ \since 5.0
+
+ \fn QSqlDriver::notification(const QString &name, NotificationSource source)
+
+ This signal is emitted when the database posts an event notification
+ that the driver subscribes to. \a name identifies the event notification, \a source indicates the signal source.
+
+ \sa subscribeToNotification()
+*/
+
+/*!
\fn bool QSqlDriver::open(const QString &db, const QString &user, const QString& password,
const QString &host, int port, const QString &options)
@@ -238,6 +249,16 @@ bool QSqlDriver::isOpenError() const
*/
/*!
+ \enum QSqlDriver::NotificationSource
+
+ This enum contains a list of SQL notification sources.
+
+ \value UnknownSource The notification source is unknown
+ \value SelfSource The notification source is this connection
+ \value OtherSource The notification source is another connection
+*/
+
+/*!
\fn bool QSqlDriver::hasFeature(DriverFeature feature) const
Returns true if the driver supports feature \a feature; otherwise
diff --git a/src/sql/kernel/qsqldriver.h b/src/sql/kernel/qsqldriver.h
index 446cdf4df6..5fd74411db 100644
--- a/src/sql/kernel/qsqldriver.h
+++ b/src/sql/kernel/qsqldriver.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Sql)
class QSqlDatabase;
class QSqlDriverPrivate;
@@ -79,6 +78,8 @@ public:
enum IdentifierType { FieldName, TableName };
+ enum NotificationSource { UnknownSource, SelfSource, OtherSource };
+
explicit QSqlDriver(QObject *parent=0);
~QSqlDriver();
virtual bool isOpen() const;
@@ -121,6 +122,7 @@ public:
Q_SIGNALS:
void notification(const QString &name);
+ void notification(const QString &name, NotificationSource source);
protected:
virtual void setOpen(bool o);
diff --git a/src/sql/kernel/qsqldriverplugin.cpp b/src/sql/kernel/qsqldriverplugin.cpp
index 0f98ce3196..ea28ba2aa1 100644
--- a/src/sql/kernel/qsqldriverplugin.cpp
+++ b/src/sql/kernel/qsqldriverplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/kernel/qsqldriverplugin.h b/src/sql/kernel/qsqldriverplugin.h
index 13ffd1e409..96dcec0313 100644
--- a/src/sql/kernel/qsqldriverplugin.h
+++ b/src/sql/kernel/qsqldriverplugin.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Sql)
class QSqlDriver;
@@ -58,7 +57,7 @@ struct Q_SQL_EXPORT QSqlDriverFactoryInterface : public QFactoryInterface
virtual QSqlDriver *create(const QString &name) = 0;
};
-#define QSqlDriverFactoryInterface_iid "com.trolltech.Qt.QSqlDriverFactoryInterface"
+#define QSqlDriverFactoryInterface_iid "org.qt-project.Qt.QSqlDriverFactoryInterface"
Q_DECLARE_INTERFACE(QSqlDriverFactoryInterface, QSqlDriverFactoryInterface_iid)
class Q_SQL_EXPORT QSqlDriverPlugin : public QObject, public QSqlDriverFactoryInterface
diff --git a/src/sql/kernel/qsqlerror.cpp b/src/sql/kernel/qsqlerror.cpp
index 8a8d2c318a..79c7ee02c2 100644
--- a/src/sql/kernel/qsqlerror.cpp
+++ b/src/sql/kernel/qsqlerror.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/kernel/qsqlerror.h b/src/sql/kernel/qsqlerror.h
index 11ebf5a615..528eb482af 100644
--- a/src/sql/kernel/qsqlerror.h
+++ b/src/sql/kernel/qsqlerror.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Sql)
class Q_SQL_EXPORT QSqlError
{
diff --git a/src/sql/kernel/qsqlfield.cpp b/src/sql/kernel/qsqlfield.cpp
index dca9e169fa..5d01df1b8e 100644
--- a/src/sql/kernel/qsqlfield.cpp
+++ b/src/sql/kernel/qsqlfield.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/kernel/qsqlfield.h b/src/sql/kernel/qsqlfield.h
index 3188b18a4a..58dce8b271 100644
--- a/src/sql/kernel/qsqlfield.h
+++ b/src/sql/kernel/qsqlfield.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Sql)
class QSqlFieldPrivate;
diff --git a/src/sql/kernel/qsqlindex.cpp b/src/sql/kernel/qsqlindex.cpp
index ad66e814ef..c695471cb2 100644
--- a/src/sql/kernel/qsqlindex.cpp
+++ b/src/sql/kernel/qsqlindex.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/kernel/qsqlindex.h b/src/sql/kernel/qsqlindex.h
index 328a8716e2..e3e55b690e 100644
--- a/src/sql/kernel/qsqlindex.h
+++ b/src/sql/kernel/qsqlindex.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Sql)
class Q_SQL_EXPORT QSqlIndex : public QSqlRecord
{
diff --git a/src/sql/kernel/qsqlnulldriver_p.h b/src/sql/kernel/qsqlnulldriver_p.h
index 9de9c5641b..b44fe97730 100644
--- a/src/sql/kernel/qsqlnulldriver_p.h
+++ b/src/sql/kernel/qsqlnulldriver_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp
index 4b65ef1d8b..3e6712b27e 100644
--- a/src/sql/kernel/qsqlquery.cpp
+++ b/src/sql/kernel/qsqlquery.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/kernel/qsqlquery.h b/src/sql/kernel/qsqlquery.h
index 2791784374..930bb25abf 100644
--- a/src/sql/kernel/qsqlquery.h
+++ b/src/sql/kernel/qsqlquery.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Sql)
class QVariant;
class QSqlDriver;
diff --git a/src/sql/kernel/qsqlrecord.cpp b/src/sql/kernel/qsqlrecord.cpp
index 18dd9fbc80..93ef58914b 100644
--- a/src/sql/kernel/qsqlrecord.cpp
+++ b/src/sql/kernel/qsqlrecord.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -243,8 +243,9 @@ int QSqlRecord::indexOf(const QString& name) const
}
/*!
- Returns the field at position \a index. If the position is out of
- range, an empty field is returned.
+ Returns the field at position \a index. If the \a index
+ is out of range, function returns
+ a \l{default-constructed value}.
*/
QSqlField QSqlRecord::field(int index) const
{
diff --git a/src/sql/kernel/qsqlrecord.h b/src/sql/kernel/qsqlrecord.h
index 52168255d2..839c6ef898 100644
--- a/src/sql/kernel/qsqlrecord.h
+++ b/src/sql/kernel/qsqlrecord.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Sql)
class QSqlField;
class QStringList;
diff --git a/src/sql/kernel/qsqlresult.cpp b/src/sql/kernel/qsqlresult.cpp
index de348c99f5..16df1b8b06 100644
--- a/src/sql/kernel/qsqlresult.cpp
+++ b/src/sql/kernel/qsqlresult.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/kernel/qsqlresult.h b/src/sql/kernel/qsqlresult.h
index 07780937a6..162451c6dd 100644
--- a/src/sql/kernel/qsqlresult.h
+++ b/src/sql/kernel/qsqlresult.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Sql)
class QString;
class QSqlRecord;
diff --git a/src/sql/models/qsqlquerymodel.cpp b/src/sql/models/qsqlquerymodel.cpp
index a740071d33..341804f1ae 100644
--- a/src/sql/models/qsqlquerymodel.cpp
+++ b/src/sql/models/qsqlquerymodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/models/qsqlquerymodel.h b/src/sql/models/qsqlquerymodel.h
index 75ae2a5eff..7db973b0d4 100644
--- a/src/sql/models/qsqlquerymodel.h
+++ b/src/sql/models/qsqlquerymodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Sql)
class QSqlQueryModelPrivate;
class QSqlError;
diff --git a/src/sql/models/qsqlquerymodel_p.h b/src/sql/models/qsqlquerymodel_p.h
index c25d3c98a0..b5eb60c57d 100644
--- a/src/sql/models/qsqlquerymodel_p.h
+++ b/src/sql/models/qsqlquerymodel_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/models/qsqlrelationaldelegate.cpp b/src/sql/models/qsqlrelationaldelegate.cpp
index aaba25d06a..79e026fe57 100644
--- a/src/sql/models/qsqlrelationaldelegate.cpp
+++ b/src/sql/models/qsqlrelationaldelegate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/sql/models/qsqlrelationaldelegate.h b/src/sql/models/qsqlrelationaldelegate.h
index 60e56ff99d..eb679a7c48 100644
--- a/src/sql/models/qsqlrelationaldelegate.h
+++ b/src/sql/models/qsqlrelationaldelegate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Sql)
class QSqlRelationalDelegate: public QItemDelegate
{
diff --git a/src/sql/models/qsqlrelationaltablemodel.cpp b/src/sql/models/qsqlrelationaltablemodel.cpp
index 6b0ed06ac4..e12976ef24 100644
--- a/src/sql/models/qsqlrelationaltablemodel.cpp
+++ b/src/sql/models/qsqlrelationaltablemodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -265,7 +265,6 @@ public:
mutable QVector<QRelation> relations;
QSqlRecord baseRec; // the record without relations
void clearChanges();
- void clearEditBuffer();
void clearCache();
void revertCachedRow(int row);
@@ -303,13 +302,12 @@ int QSqlRelationalTableModelPrivate::nameToIndex(const QString &name) const
QString fieldname = name;
if (db.driver()->isIdentifierEscaped(fieldname, QSqlDriver::FieldName))
fieldname = db.driver()->stripDelimiters(fieldname, QSqlDriver::FieldName);
- return baseRec.indexOf(fieldname);
-}
-
-void QSqlRelationalTableModelPrivate::clearEditBuffer()
-{
- editBuffer = baseRec;
- clearGenerated(editBuffer);
+ int idx = baseRec.indexOf(fieldname);
+ if (idx == -1) {
+ // If the name is an alias we can find it here.
+ idx = QSqlTableModelPrivate::nameToIndex(name);
+ }
+ return idx;
}
/*!
@@ -440,23 +438,16 @@ QVariant QSqlRelationalTableModel::data(const QModelIndex &index, int role) cons
//when the value at index has been changed or added.
//At an unmodified index, the underlying model will
//already have the correct display value.
- QVariant v;
- switch (d->strategy) {
- case OnFieldChange:
- break;
- case OnRowChange:
- if ((index.row() == d->editIndex || index.row() == d->insertIndex)
- && d->editBuffer.isGenerated(index.column()))
- v = d->editBuffer.value(index.column());
- break;
- case OnManualSubmit:
- const QSqlTableModelPrivate::ModifiedRow row = d->cache.value(index.row());
- if (row.op != QSqlTableModelPrivate::None && row.rec.isGenerated(index.column()))
- v = row.rec.value(index.column());
- break;
+ if (d->strategy != OnFieldChange) {
+ const QSqlTableModelPrivate::ModifiedRow row = d->cache.value(index.row());
+ if (row.op != QSqlTableModelPrivate::None && row.rec.isGenerated(index.column())) {
+ if (d->strategy == OnManualSubmit || row.op != QSqlTableModelPrivate::Delete) {
+ QVariant v = row.rec.value(index.column());
+ if (v.isValid())
+ return relation.dictionary[v.toString()];
+ }
+ }
}
- if (v.isValid())
- return relation.dictionary[v.toString()];
}
return QSqlTableModel::data(index, role);
}
diff --git a/src/sql/models/qsqlrelationaltablemodel.h b/src/sql/models/qsqlrelationaltablemodel.h
index decdc08216..141fc221ed 100644
--- a/src/sql/models/qsqlrelationaltablemodel.h
+++ b/src/sql/models/qsqlrelationaltablemodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Sql)
class Q_SQL_EXPORT QSqlRelation
{
diff --git a/src/sql/models/qsqltablemodel.cpp b/src/sql/models/qsqltablemodel.cpp
index d2b9427287..ff32533440 100644
--- a/src/sql/models/qsqltablemodel.cpp
+++ b/src/sql/models/qsqltablemodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -66,36 +66,6 @@ QSqlRecord QSqlTableModelPrivate::record(const QVector<QVariant> &values) const
return r;
}
-/*! \internal
- Set a record for OnFieldChange and OnRowChange.
-*/
-bool QSqlTableModelPrivate::setRecord(int row, const QSqlRecord &record)
-{
- Q_Q(QSqlTableModel);
- bool isOk = true;
-
- QSqlTableModel::EditStrategy oldStrategy = strategy;
-
- // FieldChange strategy makes no sense when setting an entire row
- if (strategy == QSqlTableModel::OnFieldChange)
- strategy = QSqlTableModel::OnRowChange;
- for (int i = 0; i < record.count(); ++i) {
- int idx = nameToIndex(record.fieldName(i));
- if (idx == -1)
- continue;
- QModelIndex cIndex = q->createIndex(row, idx);
- QVariant value = record.value(i);
- QVariant oldValue = q->data(cIndex);
- if (oldValue.isNull() || oldValue != value)
- isOk &= q->setData(cIndex, value, Qt::EditRole);
- }
- if (isOk && oldStrategy == QSqlTableModel::OnFieldChange)
- q->submitAll();
- strategy = oldStrategy;
-
- return isOk;
-}
-
int QSqlTableModelPrivate::nameToIndex(const QString &name) const
{
QString fieldname = name;
@@ -112,52 +82,21 @@ void QSqlTableModelPrivate::initRecordAndPrimaryIndex()
void QSqlTableModelPrivate::clear()
{
- editIndex = -1;
sortColumn = -1;
sortOrder = Qt::AscendingOrder;
tableName.clear();
editQuery.clear();
- editBuffer.clear();
cache.clear();
primaryIndex.clear();
rec.clear();
filter.clear();
}
-void QSqlTableModelPrivate::revertInsertedRow()
-{
- Q_Q(QSqlTableModel);
- if (insertIndex == -1)
- return;
-
- q->beginRemoveRows(QModelIndex(), insertIndex, insertIndex);
- insertIndex = -1;
- q->endRemoveRows();
-}
-
-void QSqlTableModelPrivate::clearEditBuffer()
-{
- editBuffer = rec;
- clearGenerated(editBuffer);
-}
-
void QSqlTableModelPrivate::clearCache()
{
cache.clear();
}
-void QSqlTableModelPrivate::clearGenerated(QSqlRecord &rec)
-{
- for (int i = rec.count() - 1; i >= 0; i--)
- rec.setGenerated(i, false);
-}
-
-void QSqlTableModelPrivate::setGeneratedValue(QSqlRecord &rec, int c, QVariant v)
-{
- rec.setValue(c, v);
- rec.setGenerated(c, true);
-}
-
void QSqlTableModelPrivate::revertCachedRow(int row)
{
Q_Q(QSqlTableModel);
@@ -444,26 +383,28 @@ QVariant QSqlTableModel::data(const QModelIndex &index, int role) const
// to handle the insertedRows
QModelIndex item = indexInQuery(index);
- switch (d->strategy) {
- case OnFieldChange:
- case OnRowChange:
- if (index.row() == d->insertIndex) {
- if (item.column() < 0 || item.column() >= d->rec.count())
- return QVariant();
- return d->editBuffer.value(index.column());
- }
- if (d->editIndex == item.row()) {
- if (d->editBuffer.isGenerated(item.column()))
- return d->editBuffer.value(item.column());
- }
- break;
- case OnManualSubmit:
- if (d->cache.contains(index.row())) {
- const QSqlTableModelPrivate::ModifiedRow row = d->cache.value(index.row());
- if (row.rec.isGenerated(item.column()) || row.op == QSqlTableModelPrivate::Insert)
+ if (d->cache.contains(index.row())) {
+ const QSqlTableModelPrivate::ModifiedRow row = d->cache.value(index.row());
+
+ switch (d->strategy) {
+ case OnFieldChange:
+ case OnRowChange:
+ if (row.op == QSqlTableModelPrivate::Insert) {
+ if (item.column() < 0 || item.column() >= row.rec.count())
+ return QVariant();
return row.rec.value(item.column());
+ } else if (row.op == QSqlTableModelPrivate::Update) {
+ if (row.rec.isGenerated(item.column()))
+ return row.rec.value(item.column());
+ }
+ break;
+ case OnManualSubmit:
+ if (row.op == QSqlTableModelPrivate::Insert
+ || (row.op != QSqlTableModelPrivate::None
+ && row.rec.isGenerated(item.column())))
+ return row.rec.value(item.column());
+ break;
}
- break;
}
// We need to handle row mapping here, but not column mapping
@@ -477,19 +418,12 @@ QVariant QSqlTableModel::headerData(int section, Qt::Orientation orientation, in
{
Q_D(const QSqlTableModel);
if (orientation == Qt::Vertical && role == Qt::DisplayRole) {
- switch (d->strategy) {
- case OnFieldChange:
- case OnRowChange:
- if (d->insertIndex == section)
- return QLatin1String("*");
- break;
- case OnManualSubmit:
- QSqlTableModelPrivate::Op op = d->cache.value(section).op;
+ if (d->cache.contains(section)) {
+ const QSqlTableModelPrivate::Op op = d->cache.value(section).op;
if (op == QSqlTableModelPrivate::Insert)
return QLatin1String("*");
else if (op == QSqlTableModelPrivate::Delete)
return QLatin1String("!");
- break;
}
}
return QSqlQueryModel::headerData(section, orientation, role);
@@ -511,8 +445,11 @@ bool QSqlTableModel::isDirty(const QModelIndex &index) const
switch (d->strategy) {
case OnFieldChange:
return false;
- case OnRowChange:
- return index.row() == d->editIndex && d->editBuffer.isGenerated(index.column());
+ case OnRowChange: {
+ const QSqlTableModelPrivate::ModifiedRow row = d->cache.value(index.row());
+ return row.op == QSqlTableModelPrivate::Update
+ && row.rec.isGenerated(index.column());
+ }
case OnManualSubmit: {
const QSqlTableModelPrivate::ModifiedRow row = d->cache.value(index.row());
return row.op == QSqlTableModelPrivate::Insert
@@ -543,46 +480,47 @@ bool QSqlTableModel::setData(const QModelIndex &index, const QVariant &value, in
if (!index.isValid() || index.column() >= d->rec.count() || index.row() >= rowCount())
return false;
+ if (d->strategy == OnFieldChange && d->cache.value(index.row()).op != QSqlTableModelPrivate::Insert) {
+ d->cache.clear();
+ } else if (d->strategy == OnRowChange && !d->cache.isEmpty() && !d->cache.contains(index.row())) {
+ submit();
+ d->cache.clear();
+ }
+
+ QSqlTableModelPrivate::ModifiedRow &row = d->cache[index.row()];
+
+ if (row.op == QSqlTableModelPrivate::None) {
+ row = QSqlTableModelPrivate::ModifiedRow(QSqlTableModelPrivate::Update,
+ d->rec,
+ d->primaryValues(indexInQuery(index).row()));
+ }
+
+ row.setValue(index.column(), value);
+
bool isOk = true;
- switch (d->strategy) {
- case OnFieldChange: {
- if (index.row() == d->insertIndex) {
- QSqlTableModelPrivate::setGeneratedValue(d->editBuffer, index.column(), value);
- return true;
- }
- d->clearEditBuffer();
- QSqlTableModelPrivate::setGeneratedValue(d->editBuffer, index.column(), value);
- isOk = updateRowInTable(index.row(), d->editBuffer);
+ if (d->strategy == OnFieldChange && row.op != QSqlTableModelPrivate::Insert) {
+ // historical bug: bad style to call updateRowInTable.
+ // Should call submit(), but maybe the author wanted to avoid
+ // clearing the cache on failure.
+ isOk = updateRowInTable(index.row(), row.rec);
if (isOk)
select();
- emit dataChanged(index, index);
- break; }
- case OnRowChange:
- if (index.row() == d->insertIndex) {
- QSqlTableModelPrivate::setGeneratedValue(d->editBuffer, index.column(), value);
- return true;
- }
- if (d->editIndex != index.row()) {
- if (d->editIndex != -1)
- submit();
- d->clearEditBuffer();
- }
- QSqlTableModelPrivate::setGeneratedValue(d->editBuffer, index.column(), value);
- d->editIndex = index.row();
- emit dataChanged(index, index);
- break;
- case OnManualSubmit: {
- QSqlTableModelPrivate::ModifiedRow &row = d->cache[index.row()];
- if (row.op == QSqlTableModelPrivate::None) {
- row.op = QSqlTableModelPrivate::Update;
- row.rec = d->rec;
- QSqlTableModelPrivate::clearGenerated(row.rec);
- row.primaryValues = d->primaryValues(indexInQuery(index).row());
- }
- QSqlTableModelPrivate::setGeneratedValue(row.rec, index.column(), value);
- emit dataChanged(index, index);
- break; }
}
+
+ // historical bug: dataChanged() is suppressed for OnFieldChange and OnRowChange
+ // when operating on an "insert" record. This is to accomodate
+ // applications that call setData() while handling primeInsert().
+ // Otherwise dataChanged() would be emitted between beginInsert()
+ // and endInsert().
+ // The price of this workaround is that, although the view making
+ // the change will already display the new value, other views connected
+ // to the model probably will not.
+ // It's not clear why OnManualSubmit is excluded from this workaround.
+ // Calling setData() while handling primeInsert() is arguably very wrong anyway.
+ // primeInsert() provides a ref to the record for settings values.
+ if (d->strategy == OnManualSubmit || row.op != QSqlTableModelPrivate::Insert)
+ emit dataChanged(index, index);
+
return isOk;
}
@@ -727,52 +665,29 @@ bool QSqlTableModel::submitAll()
{
Q_D(QSqlTableModel);
- switch (d->strategy) {
- case OnFieldChange:
- if (d->insertIndex == -1)
- return true;
- // else fall through
- case OnRowChange:
- if (d->editBuffer.isEmpty())
- return true;
- if (d->insertIndex != -1) {
- if (!insertRowIntoTable(d->editBuffer))
+ for (QSqlTableModelPrivate::CacheMap::ConstIterator it = d->cache.constBegin();
+ it != d->cache.constEnd(); ++it) {
+ switch (it.value().op) {
+ case QSqlTableModelPrivate::Insert:
+ if (!insertRowIntoTable(it.value().rec))
return false;
d->bottom = d->bottom.sibling(d->bottom.row() + 1, d->bottom.column());
- } else {
- if (!updateRowInTable(d->editIndex, d->editBuffer))
+ break;
+ case QSqlTableModelPrivate::Update:
+ if (!updateRowInTable(it.key(), it.value().rec))
return false;
+ break;
+ case QSqlTableModelPrivate::Delete:
+ if (!deleteRowFromTable(it.key()))
+ return false;
+ break;
+ case QSqlTableModelPrivate::None:
+ Q_ASSERT_X(false, "QSqlTableModel::submitAll()", "Invalid cache operation");
+ break;
}
- d->clearEditBuffer();
- d->editIndex = -1;
- d->insertIndex = -1;
- return select();
- case OnManualSubmit:
- for (QSqlTableModelPrivate::CacheMap::ConstIterator it = d->cache.constBegin();
- it != d->cache.constEnd(); ++it) {
- switch (it.value().op) {
- case QSqlTableModelPrivate::Insert:
- if (!insertRowIntoTable(it.value().rec))
- return false;
- d->bottom = d->bottom.sibling(d->bottom.row() + 1, d->bottom.column());
- break;
- case QSqlTableModelPrivate::Update:
- if (!updateRowInTable(it.key(), it.value().rec))
- return false;
- break;
- case QSqlTableModelPrivate::Delete:
- if (!deleteRowFromTable(it.key()))
- return false;
- break;
- case QSqlTableModelPrivate::None:
- Q_ASSERT_X(false, "QSqlTableModel::submitAll()", "Invalid cache operation");
- break;
- }
- }
- d->clearCache();
- return select();
}
- return false;
+ d->clearCache();
+ return select();
}
/*!
@@ -872,20 +787,9 @@ QSqlTableModel::EditStrategy QSqlTableModel::editStrategy() const
void QSqlTableModel::revertAll()
{
Q_D(QSqlTableModel);
- switch (d->strategy) {
- case OnFieldChange:
- break;
- case OnRowChange:
- if (d->editIndex != -1)
- revertRow(d->editIndex);
- else if (d->insertIndex != -1)
- revertRow(d->insertIndex);
- break;
- case OnManualSubmit:
- while (!d->cache.isEmpty())
- revertRow(d->cache.constBegin().key());
- break;
- }
+
+ while (!d->cache.isEmpty())
+ revertRow(d->cache.constBegin().key());
}
/*!
@@ -899,23 +803,7 @@ void QSqlTableModel::revertRow(int row)
return;
Q_D(QSqlTableModel);
- switch (d->strategy) {
- case OnFieldChange:
- break;
- case OnRowChange: {
- if (d->editIndex == row) {
- d->editBuffer.clear();
- int oldIndex = d->editIndex;
- d->editIndex = -1;
- emit dataChanged(createIndex(oldIndex, 0), createIndex(oldIndex, columnCount()));
- } else if (d->insertIndex == row) {
- d->revertInsertedRow();
- }
- break; }
- case OnManualSubmit:
- d->revertCachedRow(row);
- break;
- }
+ d->revertCachedRow(row);
}
/*!
@@ -1097,36 +985,37 @@ bool QSqlTableModel::removeRows(int row, int count, const QModelIndex &parent)
if (parent.isValid() || row < 0 || count <= 0)
return false;
+ int initialRowCount = rowCount();
+
int i;
- switch (d->strategy) {
- case OnFieldChange:
- case OnRowChange:
- for (i = 0; i < count; ++i) {
- if (row + i == d->insertIndex)
- d->revertInsertedRow();
- else if (!deleteRowFromTable(row + i))
- return false;
- }
- select();
- break;
- case OnManualSubmit:
- for (i = 0; i < count; ++i) {
- int idx = row + i;
- if (idx >= rowCount())
- return false;
- if (d->cache.value(idx).op == QSqlTableModelPrivate::Insert) {
- revertRow(idx);
- // Reverting a row means all the other cache entries have been adjusted downwards
- // so fake this by adjusting row
- --row;
- } else {
- d->cache[idx].op = QSqlTableModelPrivate::Delete;
- d->cache[idx].primaryValues = d->primaryValues(indexInQuery(createIndex(idx, 0)).row());
+ for (i = 0; i < count && row + i < rowCount(); ++i) {
+ int idx = row + i;
+ if (d->cache.value(idx).op == QSqlTableModelPrivate::Insert) {
+ revertRow(idx);
+ // Reverting a row means all the other cache entries have been adjusted downwards
+ // so fake this by adjusting row
+ --row;
+ } else {
+ d->cache[idx] = QSqlTableModelPrivate::ModifiedRow(QSqlTableModelPrivate::Delete,
+ QSqlRecord(),
+ d->primaryValues(indexInQuery(createIndex(idx, 0)).row()));
+ if (d->strategy == OnManualSubmit)
emit headerDataChanged(Qt::Vertical, idx, idx);
- }
}
- break;
}
+
+ if (d->strategy != OnManualSubmit && i > 0)
+ submit();
+
+ // historical bug: emit beforeDelete for 1st row beyond end
+ if (d->strategy != OnManualSubmit) {
+ if (row + count > initialRowCount)
+ emit beforeDelete(qMax(initialRowCount, row));
+ }
+
+ if (i < count)
+ return false;
+
return true;
}
@@ -1153,36 +1042,30 @@ bool QSqlTableModel::insertRows(int row, int count, const QModelIndex &parent)
if (row < 0 || count <= 0 || row > rowCount() || parent.isValid())
return false;
- switch (d->strategy) {
- case OnFieldChange:
- case OnRowChange:
- if (count != 1)
- return false;
- beginInsertRows(parent, row, row);
- d->insertIndex = row;
- // ### apply dangling changes...
- d->clearEditBuffer();
- emit primeInsert(row, d->editBuffer);
- break;
- case OnManualSubmit:
- beginInsertRows(parent, row, row + count - 1);
- if (!d->cache.isEmpty()) {
- QMap<int, QSqlTableModelPrivate::ModifiedRow>::Iterator it = d->cache.end();
- while (it != d->cache.begin() && (--it).key() >= row) {
- int oldKey = it.key();
- const QSqlTableModelPrivate::ModifiedRow oldValue = it.value();
- d->cache.erase(it);
- it = d->cache.insert(oldKey + count, oldValue);
- }
- }
+ if (d->strategy != OnManualSubmit && count != 1)
+ return false;
- for (int i = 0; i < count; ++i) {
- d->cache[row + i] = QSqlTableModelPrivate::ModifiedRow(QSqlTableModelPrivate::Insert,
- d->rec);
- emit primeInsert(row + i, d->cache[row + i].rec);
+ beginInsertRows(parent, row, row + count - 1);
+
+ if (d->strategy != OnManualSubmit)
+ d->cache.empty();
+
+ if (!d->cache.isEmpty()) {
+ QMap<int, QSqlTableModelPrivate::ModifiedRow>::Iterator it = d->cache.end();
+ while (it != d->cache.begin() && (--it).key() >= row) {
+ int oldKey = it.key();
+ const QSqlTableModelPrivate::ModifiedRow oldValue = it.value();
+ d->cache.erase(it);
+ it = d->cache.insert(oldKey + count, oldValue);
}
- break;
}
+
+ for (int i = 0; i < count; ++i) {
+ d->cache[row + i] = QSqlTableModelPrivate::ModifiedRow(QSqlTableModelPrivate::Insert,
+ d->rec);
+ emit primeInsert(row + i, d->cache[row + i].rec);
+ }
+
endInsertRows();
return true;
}
@@ -1220,14 +1103,10 @@ int QSqlTableModel::rowCount(const QModelIndex &parent) const
return 0;
int rc = QSqlQueryModel::rowCount();
- if (d->strategy == OnManualSubmit) {
- for (QSqlTableModelPrivate::CacheMap::ConstIterator it = d->cache.constBegin();
- it != d->cache.constEnd(); ++it) {
- if (it.value().op == QSqlTableModelPrivate::Insert)
- ++rc;
- }
- } else if (d->insertIndex >= 0) {
- ++rc;
+ for (QSqlTableModelPrivate::CacheMap::ConstIterator it = d->cache.constBegin();
+ it != d->cache.constEnd(); ++it) {
+ if (it.value().op == QSqlTableModelPrivate::Insert)
+ ++rc;
}
return rc;
}
@@ -1248,20 +1127,14 @@ QModelIndex QSqlTableModel::indexInQuery(const QModelIndex &item) const
{
Q_D(const QSqlTableModel);
const QModelIndex it = QSqlQueryModel::indexInQuery(item); // this adjusts columns only
- if (d->strategy == OnManualSubmit) {
- int rowOffset = 0;
- QSqlTableModelPrivate::CacheMap::ConstIterator i = d->cache.constBegin();
- while (i != d->cache.constEnd() && i.key() <= it.row()) {
- if (i.value().op == QSqlTableModelPrivate::Insert)
- ++rowOffset;
- ++i;
- }
- return createIndex(it.row() - rowOffset, it.column(), it.internalPointer());
- } else {
- if (d->insertIndex >= 0 && it.row() >= d->insertIndex)
- return createIndex(it.row() - 1, it.column(), it.internalPointer());
+ int rowOffset = 0;
+ QSqlTableModelPrivate::CacheMap::ConstIterator i = d->cache.constBegin();
+ while (i != d->cache.constEnd() && i.key() <= it.row()) {
+ if (i.value().op == QSqlTableModelPrivate::Insert)
+ ++rowOffset;
+ ++i;
}
- return it;
+ return createIndex(it.row() - rowOffset, it.column(), it.internalPointer());
}
/*!
@@ -1331,37 +1204,49 @@ bool QSqlTableModel::setRecord(int row, const QSqlRecord &record)
if (row >= rowCount())
return false;
+ if (d->strategy == OnFieldChange && d->cache.value(row).op != QSqlTableModelPrivate::Insert)
+ d->cache.clear();
+ else if (d->strategy == OnRowChange && !d->cache.isEmpty() && !d->cache.contains(row))
+ submit();
+
+ QSqlTableModelPrivate::ModifiedRow &mrow = d->cache[row];
+ if (mrow.op == QSqlTableModelPrivate::None)
+ mrow = QSqlTableModelPrivate::ModifiedRow(QSqlTableModelPrivate::Update,
+ d->rec,
+ d->primaryValues(indexInQuery(createIndex(row, 0)).row()));
+
bool isOk = true;
- switch (d->strategy) {
- case OnFieldChange:
- case OnRowChange:
- return d->setRecord(row, record);
- case OnManualSubmit: {
- QSqlTableModelPrivate::ModifiedRow &mrow = d->cache[row];
- if (mrow.op == QSqlTableModelPrivate::None) {
- mrow.op = QSqlTableModelPrivate::Update;
- mrow.rec = d->rec;
- QSqlTableModelPrivate::clearGenerated(mrow.rec);
- mrow.primaryValues = d->primaryValues(indexInQuery(createIndex(row, 0)).row());
- }
- QString fieldName;
- for (int i = 0; i < record.count(); ++i) {
- fieldName = record.fieldName(i);
- if (d->db.driver()->isIdentifierEscaped(fieldName, QSqlDriver::FieldName))
- fieldName = d->db.driver()->stripDelimiters(fieldName, QSqlDriver::FieldName);
- int idx = mrow.rec.indexOf(fieldName);
- if (idx == -1) {
- isOk = false;
- } else {
- QSqlTableModelPrivate::setGeneratedValue(mrow.rec, idx, record.value(i));
+ for (int i = 0; i < record.count(); ++i) {
+ int idx = d->nameToIndex(record.fieldName(i));
+ if (idx == -1) {
+ isOk = false;
+ } else if (d->strategy != OnManualSubmit) {
+ // historical bug: this could all be simple like OnManualSubmit, but isn't
+ const QModelIndex cIndex = createIndex(row, idx);
+ // historical bug: comparing EditRole with DisplayRole values here
+ const QVariant oldValue = data(cIndex);
+ const QVariant value = record.value(i);
+ // historical bug: it's a bad idea to check for change here
+ // historical bug: should test oldValue.isNull() != value.isNull()
+ if (oldValue.isNull() || oldValue != value) {
+ // historical bug: dataChanged() is suppressed for Insert. See also setData().
+ mrow.setValue(idx, record.value(i));
+ if (mrow.op != QSqlTableModelPrivate::Insert)
+ emit dataChanged(cIndex, cIndex);
}
+ } else {
+ mrow.setValue(idx, record.value(i));
}
-
- if (isOk)
- emit dataChanged(createIndex(row, 0), createIndex(row, columnCount() - 1));
- return isOk; }
}
- return false;
+
+ if (d->strategy == OnManualSubmit && isOk)
+ emit dataChanged(createIndex(row, 0), createIndex(row, columnCount() - 1));
+ else if (d->strategy == OnFieldChange)
+ return submitAll();
+ else if (d->strategy == OnManualSubmit)
+ return isOk;
+
+ return true;
}
QT_END_NAMESPACE
diff --git a/src/sql/models/qsqltablemodel.h b/src/sql/models/qsqltablemodel.h
index d40e591238..38e92200c7 100644
--- a/src/sql/models/qsqltablemodel.h
+++ b/src/sql/models/qsqltablemodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Sql)
class QSqlTableModelPrivate;
class QSqlRecord;
diff --git a/src/sql/models/qsqltablemodel_p.h b/src/sql/models/qsqltablemodel_p.h
index 9275712cee..56fd839a0c 100644
--- a/src/sql/models/qsqltablemodel_p.h
+++ b/src/sql/models/qsqltablemodel_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtSql module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -64,29 +64,22 @@ class QSqlTableModelPrivate: public QSqlQueryModelPrivate
public:
QSqlTableModelPrivate()
- : editIndex(-1), insertIndex(-1), sortColumn(-1),
+ : sortColumn(-1),
sortOrder(Qt::AscendingOrder),
strategy(QSqlTableModel::OnRowChange)
{}
void clear();
QSqlRecord primaryValues(int index);
- virtual void clearEditBuffer();
virtual void clearCache();
- static void clearGenerated(QSqlRecord &rec);
- static void setGeneratedValue(QSqlRecord &rec, int c, QVariant v);
QSqlRecord record(const QVector<QVariant> &values) const;
bool exec(const QString &stmt, bool prepStatement,
const QSqlRecord &rec, const QSqlRecord &whereValues);
virtual void revertCachedRow(int row);
- void revertInsertedRow();
- bool setRecord(int row, const QSqlRecord &record);
virtual int nameToIndex(const QString &name) const;
void initRecordAndPrimaryIndex();
QSqlDatabase db;
- int editIndex;
- int insertIndex;
int sortColumn;
Qt::SortOrder sortOrder;
@@ -102,15 +95,22 @@ public:
struct ModifiedRow
{
- ModifiedRow(Op o = None, const QSqlRecord &r = QSqlRecord()): op(o), rec(r) { clearGenerated(rec);}
- ModifiedRow(const ModifiedRow &other): op(other.op), rec(other.rec), primaryValues(other.primaryValues) {}
+ inline ModifiedRow(Op o = None, const QSqlRecord &r = QSqlRecord(), const QSqlRecord &pVals = QSqlRecord())
+ : op(o), rec(r), primaryValues(pVals)
+ {
+ for (int i = rec.count() - 1; i >= 0; --i)
+ rec.setGenerated(i, false);
+ }
+ inline void setValue(int c, const QVariant &v)
+ {
+ rec.setValue(c, v);
+ rec.setGenerated(c, true);
+ }
Op op;
QSqlRecord rec;
- QSqlRecord primaryValues;
+ QSqlRecord primaryValues;
};
- QSqlRecord editBuffer;
-
typedef QMap<int, ModifiedRow> CacheMap;
CacheMap cache;
};
diff --git a/src/sql/sql.pro b/src/sql/sql.pro
index 445946e07c..dbeed14386 100644
--- a/src/sql/sql.pro
+++ b/src/sql/sql.pro
@@ -24,14 +24,3 @@ SQL_P = sql
include(kernel/kernel.pri)
include(drivers/drivers.pri)
include(models/models.pri)
-
-symbian: {
- TARGET.UID3=0x2001E61D
-
- # Problems using data exports from this DLL mean that we can't page it on releases that don't support
- # data exports (currently that's any release before Symbian^3)
- pagingBlock = "$${LITERAL_HASH}ifndef SYMBIAN_DLL_DATA_EXPORTS_SUPPORTED" \
- "UNPAGED" \
- "$${LITERAL_HASH}endif"
- MMP_RULES += pagingBlock
-}
diff --git a/src/src.pro b/src/src.pro
index 80d1c4e3bd..9ef8bf4362 100644
--- a/src/src.pro
+++ b/src/src.pro
@@ -8,6 +8,7 @@ SRC_SUBDIRS += src_corelib
SRC_SUBDIRS += src_network src_sql src_gui src_xml src_widgets src_printsupport src_testlib src_platformsupport
nacl: SRC_SUBDIRS -= src_network src_testlib
contains(QT_CONFIG, dbus):SRC_SUBDIRS += src_dbus
+contains(QT_CONFIG, concurrent):SRC_SUBDIRS += src_concurrent
contains(QT_CONFIG, no-gui): SRC_SUBDIRS -= src_gui
@@ -40,6 +41,8 @@ src_testlib.subdir = $$QT_SOURCE_TREE/src/testlib
src_testlib.target = sub-testlib
src_platformsupport.subdir = $$QT_SOURCE_TREE/src/platformsupport
src_platformsupport.target = sub-platformsupport
+src_concurrent.subdir = $$QT_SOURCE_TREE/src/concurrent
+src_concurrent.target = sub-concurrent
#CONFIG += ordered
@@ -50,7 +53,8 @@ src_platformsupport.target = sub-platformsupport
src_platformsupport.depends = src_corelib src_gui src_network
src_widgets.depends = src_corelib src_gui src_tools_uic
src_xml.depends = src_corelib
- src_dbus.depends = src_corelib src_xml
+ src_concurrent.depends = src_corelib
+ src_dbus.depends = src_corelib
src_network.depends = src_corelib
src_opengl.depends = src_gui src_widgets
src_sql.depends = src_corelib
diff --git a/src/testlib/qabstracttestlogger.cpp b/src/testlib/qabstracttestlogger.cpp
index d3a2678ecf..07862ce38c 100644
--- a/src/testlib/qabstracttestlogger.cpp
+++ b/src/testlib/qabstracttestlogger.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qabstracttestlogger_p.h b/src/testlib/qabstracttestlogger_p.h
index 009fbddf23..fcd2feeeb4 100644
--- a/src/testlib/qabstracttestlogger_p.h
+++ b/src/testlib/qabstracttestlogger_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qasciikey.cpp b/src/testlib/qasciikey.cpp
index ee18ec87f6..8e5b0933b4 100644
--- a/src/testlib/qasciikey.cpp
+++ b/src/testlib/qasciikey.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qbenchmark.cpp b/src/testlib/qbenchmark.cpp
index b637a6e337..a54abee7a5 100644
--- a/src/testlib/qbenchmark.cpp
+++ b/src/testlib/qbenchmark.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qbenchmark.h b/src/testlib/qbenchmark.h
index d43f1a6297..a40ed0e53e 100644
--- a/src/testlib/qbenchmark.h
+++ b/src/testlib/qbenchmark.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
namespace QTest
{
diff --git a/src/testlib/qbenchmark_p.h b/src/testlib/qbenchmark_p.h
index 402eccfa14..a74ef3d99b 100644
--- a/src/testlib/qbenchmark_p.h
+++ b/src/testlib/qbenchmark_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qbenchmarkevent.cpp b/src/testlib/qbenchmarkevent.cpp
index a531d44748..bbba0ba5d9 100644
--- a/src/testlib/qbenchmarkevent.cpp
+++ b/src/testlib/qbenchmarkevent.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qbenchmarkevent_p.h b/src/testlib/qbenchmarkevent_p.h
index 3f94af2c67..c4d98bf8a1 100644
--- a/src/testlib/qbenchmarkevent_p.h
+++ b/src/testlib/qbenchmarkevent_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qbenchmarkmeasurement.cpp b/src/testlib/qbenchmarkmeasurement.cpp
index db0f7c0958..b520980350 100644
--- a/src/testlib/qbenchmarkmeasurement.cpp
+++ b/src/testlib/qbenchmarkmeasurement.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qbenchmarkmeasurement_p.h b/src/testlib/qbenchmarkmeasurement_p.h
index 82721e8c87..ae4ca47b4c 100644
--- a/src/testlib/qbenchmarkmeasurement_p.h
+++ b/src/testlib/qbenchmarkmeasurement_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qbenchmarkmetric.cpp b/src/testlib/qbenchmarkmetric.cpp
index 6cd9aa468f..e48375cb4c 100644
--- a/src/testlib/qbenchmarkmetric.cpp
+++ b/src/testlib/qbenchmarkmetric.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qbenchmarkmetric.h b/src/testlib/qbenchmarkmetric.h
index 35b441a84e..e8514a4394 100644
--- a/src/testlib/qbenchmarkmetric.h
+++ b/src/testlib/qbenchmarkmetric.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
namespace QTest {
diff --git a/src/testlib/qbenchmarkmetric_p.h b/src/testlib/qbenchmarkmetric_p.h
index 247a2ca795..e020f61e2b 100644
--- a/src/testlib/qbenchmarkmetric_p.h
+++ b/src/testlib/qbenchmarkmetric_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,7 +60,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
namespace QTest {
const char * benchmarkMetricName(QBenchmarkMetric metric);
diff --git a/src/testlib/qbenchmarkvalgrind.cpp b/src/testlib/qbenchmarkvalgrind.cpp
index f62cd299bc..453c5ccda0 100644
--- a/src/testlib/qbenchmarkvalgrind.cpp
+++ b/src/testlib/qbenchmarkvalgrind.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qbenchmarkvalgrind_p.h b/src/testlib/qbenchmarkvalgrind_p.h
index f242d85531..7d632a93f1 100644
--- a/src/testlib/qbenchmarkvalgrind_p.h
+++ b/src/testlib/qbenchmarkvalgrind_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qplaintestlogger.cpp b/src/testlib/qplaintestlogger.cpp
index f0e83183ec..bd4f26b493 100644
--- a/src/testlib/qplaintestlogger.cpp
+++ b/src/testlib/qplaintestlogger.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -344,14 +344,14 @@ void QPlainTestLogger::stopLogging()
char buf[1024];
if (QTestLog::verboseLevel() < 0) {
qsnprintf(buf, sizeof(buf), "Totals: %d passed, %d failed, %d skipped\n",
- QTestResult::passCount(), QTestResult::failCount(),
- QTestResult::skipCount());
+ QTestLog::passCount(), QTestLog::failCount(),
+ QTestLog::skipCount());
} else {
qsnprintf(buf, sizeof(buf),
"Totals: %d passed, %d failed, %d skipped\n"
"********* Finished testing of %s *********\n",
- QTestResult::passCount(), QTestResult::failCount(),
- QTestResult::skipCount(), QTestResult::currentTestObjectName());
+ QTestLog::passCount(), QTestLog::failCount(),
+ QTestLog::skipCount(), QTestResult::currentTestObjectName());
}
outputMessage(buf);
diff --git a/src/testlib/qplaintestlogger_p.h b/src/testlib/qplaintestlogger_p.h
index dc0cec6dc4..f9fbbc1942 100644
--- a/src/testlib/qplaintestlogger_p.h
+++ b/src/testlib/qplaintestlogger_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qsignaldumper.cpp b/src/testlib/qsignaldumper.cpp
index ae8c353e6e..d0a3af6764 100644
--- a/src/testlib/qsignaldumper.cpp
+++ b/src/testlib/qsignaldumper.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qsignaldumper_p.h b/src/testlib/qsignaldumper_p.h
index acf259733d..6fdc423b81 100644
--- a/src/testlib/qsignaldumper_p.h
+++ b/src/testlib/qsignaldumper_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qsignalspy.h b/src/testlib/qsignalspy.h
index 61d65131f1..eb52ebf706 100644
--- a/src/testlib/qsignalspy.h
+++ b/src/testlib/qsignalspy.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
class QVariant;
diff --git a/src/testlib/qsignalspy.qdoc b/src/testlib/qsignalspy.qdoc
index c63f315619..5fa3667d6b 100644
--- a/src/testlib/qsignalspy.qdoc
+++ b/src/testlib/qsignalspy.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qtest.h b/src/testlib/qtest.h
index da3a836636..32b2f0ca9c 100644
--- a/src/testlib/qtest.h
+++ b/src/testlib/qtest.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -64,7 +64,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
namespace QTest
{
diff --git a/src/testlib/qtest_global.h b/src/testlib/qtest_global.h
index ddd749e29d..27a6801db9 100644
--- a/src/testlib/qtest_global.h
+++ b/src/testlib/qtest_global.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
#if !defined(QT_SHARED) && !defined(QT_DLL)
# define Q_TESTLIB_EXPORT
diff --git a/src/testlib/qtest_gui.h b/src/testlib/qtest_gui.h
index a5877f9d23..d39e943926 100644
--- a/src/testlib/qtest_gui.h
+++ b/src/testlib/qtest_gui.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -73,7 +73,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
namespace QTest
{
diff --git a/src/testlib/qtestaccessible.h b/src/testlib/qtestaccessible.h
index 6bd3339a0f..d402cc8cf8 100644
--- a/src/testlib/qtestaccessible.h
+++ b/src/testlib/qtestaccessible.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,7 +60,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
class QObject;
@@ -135,10 +134,10 @@ private:
}
}
- static void updateHandler(QObject *o, int c, QAccessible::Event e)
+ static void updateHandler(const QAccessibleEvent &event)
{
// qDebug("updateHandler called: %p %d %d", o, c, (int)e);
- eventList().append(QTestAccessibilityEvent(o, c, (int)e));
+ eventList().append(QTestAccessibilityEvent(event.object(), event.child(), (int)event.type()));
}
static EventList &eventList()
diff --git a/src/testlib/qtestassert.h b/src/testlib/qtestassert.h
index 0dc24762ab..604d93627d 100644
--- a/src/testlib/qtestassert.h
+++ b/src/testlib/qtestassert.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
#define QTEST_ASSERT(cond) do { if (!(cond)) qt_assert(#cond,__FILE__,__LINE__); } while (0)
diff --git a/src/testlib/qtestcase.cpp b/src/testlib/qtestcase.cpp
index 8bd836d7f9..8a1d4bf44a 100644
--- a/src/testlib/qtestcase.cpp
+++ b/src/testlib/qtestcase.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -2025,7 +2025,7 @@ int QTest::qExec(QObject *testObject, int argc, char **argv)
}
#endif
- saveCoverageTool(argv[0], QTestResult::failCount());
+ saveCoverageTool(argv[0], QTestLog::failCount());
#ifdef QTESTLIB_USE_VALGRIND
if (QBenchmarkGlobalData::current->mode() == QBenchmarkGlobalData::CallgrindParentProcess)
@@ -2033,7 +2033,7 @@ int QTest::qExec(QObject *testObject, int argc, char **argv)
#endif
// make sure our exit code is never going above 127
// since that could wrap and indicate 0 test fails
- return qMin(QTestResult::failCount(), 127);
+ return qMin(QTestLog::failCount(), 127);
}
/*!
@@ -2118,7 +2118,7 @@ void QTest::qWarn(const char *message, const char *file, int line)
*/
void QTest::ignoreMessage(QtMsgType type, const char *message)
{
- QTestResult::ignoreMessage(type, message);
+ QTestLog::ignoreMessage(type, message);
}
/*! \internal
@@ -2286,6 +2286,7 @@ QTestData &QTest::newRow(const char *dataTag)
QTEST_ASSERT_X(dataTag, "QTest::newRow()", "Data tag can not be null");
QTestTable *tbl = QTestTable::currentTestTable();
QTEST_ASSERT_X(tbl, "QTest::newRow()", "Cannot add testdata outside of a _data slot.");
+ QTEST_ASSERT_X(tbl->elementCount(), "QTest::newRow()", "Must add columns before attempting to add rows.");
return *tbl->newData(dataTag);
}
diff --git a/src/testlib/qtestcase.h b/src/testlib/qtestcase.h
index 4537e76920..c721dfd0d9 100644
--- a/src/testlib/qtestcase.h
+++ b/src/testlib/qtestcase.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
#define QVERIFY(statement) \
do {\
@@ -128,8 +127,8 @@ do {\
#define QSKIP(statement, ...) \
do {\
if (strcmp(#__VA_ARGS__, "") != 0)\
- QTest::qWarn("The two argument version of QSKIP is deprecated and will be removed soon. "\
- "Please update this test by removing the second parameter.", __FILE__, __LINE__);\
+ QTest::qFail("The two argument version of QSKIP is no longer available. "\
+ "Please update this test by removing the second argument in each QSKIP.", __FILE__, __LINE__);\
QTest::qSkip(statement, __FILE__, __LINE__);\
return;\
} while (0)
diff --git a/src/testlib/qtestcoreelement_p.h b/src/testlib/qtestcoreelement_p.h
index 3eb50f20d4..d0b67de0a0 100644
--- a/src/testlib/qtestcoreelement_p.h
+++ b/src/testlib/qtestcoreelement_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,7 +60,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
template <class ElementType>
class QTestCoreElement: public QTestCoreList<ElementType>
diff --git a/src/testlib/qtestcorelist_p.h b/src/testlib/qtestcorelist_p.h
index 2571f75af4..d7c875b5ea 100644
--- a/src/testlib/qtestcorelist_p.h
+++ b/src/testlib/qtestcorelist_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
template <class T>
class QTestCoreList
diff --git a/src/testlib/qtestdata.cpp b/src/testlib/qtestdata.cpp
index 1a246591c7..856461af26 100644
--- a/src/testlib/qtestdata.cpp
+++ b/src/testlib/qtestdata.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qtestdata.h b/src/testlib/qtestdata.h
index 90b1395bf5..22dae76167 100644
--- a/src/testlib/qtestdata.h
+++ b/src/testlib/qtestdata.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
class QTestTable;
class QTestDataPrivate;
diff --git a/src/testlib/qtestelement.cpp b/src/testlib/qtestelement.cpp
index cad7b28da6..923757e5ae 100644
--- a/src/testlib/qtestelement.cpp
+++ b/src/testlib/qtestelement.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qtestelement_p.h b/src/testlib/qtestelement_p.h
index 22bcddaf87..3dafc8bb55 100644
--- a/src/testlib/qtestelement_p.h
+++ b/src/testlib/qtestelement_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
class QTestElement: public QTestCoreElement<QTestElement>
{
diff --git a/src/testlib/qtestelementattribute.cpp b/src/testlib/qtestelementattribute.cpp
index c3e62cc654..5adf78d1a1 100644
--- a/src/testlib/qtestelementattribute.cpp
+++ b/src/testlib/qtestelementattribute.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qtestelementattribute_p.h b/src/testlib/qtestelementattribute_p.h
index 04f06f20e3..374ba72a75 100644
--- a/src/testlib/qtestelementattribute_p.h
+++ b/src/testlib/qtestelementattribute_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
namespace QTest {
diff --git a/src/testlib/qtestevent.h b/src/testlib/qtestevent.h
index ac23bb69cd..658e2d2ea1 100644
--- a/src/testlib/qtestevent.h
+++ b/src/testlib/qtestevent.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -62,7 +62,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
class QTestEvent
{
diff --git a/src/testlib/qtestevent.qdoc b/src/testlib/qtestevent.qdoc
index 405f64abcc..d20cfa95d6 100644
--- a/src/testlib/qtestevent.qdoc
+++ b/src/testlib/qtestevent.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qtesteventloop.h b/src/testlib/qtesteventloop.h
index 205aba9fc7..98d69963ca 100644
--- a/src/testlib/qtesteventloop.h
+++ b/src/testlib/qtesteventloop.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
class Q_TESTLIB_EXPORT QTestEventLoop : public QObject
{
diff --git a/src/testlib/qtestkeyboard.h b/src/testlib/qtestkeyboard.h
index 71defcfbdc..897c732f45 100644
--- a/src/testlib/qtestkeyboard.h
+++ b/src/testlib/qtestkeyboard.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -67,7 +67,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
namespace QTest
{
diff --git a/src/testlib/qtestlog.cpp b/src/testlib/qtestlog.cpp
index 695c001e0f..7a4358a393 100644
--- a/src/testlib/qtestlog.cpp
+++ b/src/testlib/qtestlog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -58,6 +58,10 @@ QT_BEGIN_NAMESPACE
namespace QTest {
+ int fails = 0;
+ int passes = 0;
+ int skips = 0;
+
struct IgnoreResultList
{
inline IgnoreResultList(QtMsgType tp, const char *message)
@@ -305,6 +309,8 @@ void QTestLog::addPass(const char *msg)
QTEST_ASSERT(msg);
+ ++QTest::passes;
+
QTest::TestLoggers::addIncident(QAbstractTestLogger::Pass, msg);
}
@@ -312,6 +318,8 @@ void QTestLog::addFail(const char *msg, const char *file, int line)
{
QTEST_ASSERT(msg);
+ ++QTest::fails;
+
QTest::TestLoggers::addIncident(QAbstractTestLogger::Fail, msg, file, line);
}
@@ -328,6 +336,8 @@ void QTestLog::addXPass(const char *msg, const char *file, int line)
QTEST_ASSERT(msg);
QTEST_ASSERT(file);
+ ++QTest::fails;
+
QTest::TestLoggers::addIncident(QAbstractTestLogger::XPass, msg, file, line);
}
@@ -336,6 +346,8 @@ void QTestLog::addSkip(const char *msg, const char *file, int line)
QTEST_ASSERT(msg);
QTEST_ASSERT(file);
+ ++QTest::skips;
+
QTest::TestLoggers::addMessage(QAbstractTestLogger::Skip, msg, file, line);
}
@@ -447,4 +459,26 @@ void QTestLog::setPrintAvailableTagsMode()
printAvailableTags = true;
}
+int QTestLog::passCount()
+{
+ return QTest::passes;
+}
+
+int QTestLog::failCount()
+{
+ return QTest::fails;
+}
+
+int QTestLog::skipCount()
+{
+ return QTest::skips;
+}
+
+void QTestLog::resetCounters()
+{
+ QTest::passes = 0;
+ QTest::fails = 0;
+ QTest::skips = 0;
+}
+
QT_END_NAMESPACE
diff --git a/src/testlib/qtestlog_p.h b/src/testlib/qtestlog_p.h
index 02bb54815c..e45d9c9626 100644
--- a/src/testlib/qtestlog_p.h
+++ b/src/testlib/qtestlog_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -96,6 +96,12 @@ public:
static void setPrintAvailableTagsMode();
+ static int passCount();
+ static int failCount();
+ static int skipCount();
+
+ static void resetCounters();
+
private:
QTestLog();
~QTestLog();
diff --git a/src/testlib/qtestmouse.h b/src/testlib/qtestmouse.h
index 6c68b057c1..593e164b01 100644
--- a/src/testlib/qtestmouse.h
+++ b/src/testlib/qtestmouse.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -65,7 +65,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
namespace QTest
{
diff --git a/src/testlib/qtestresult.cpp b/src/testlib/qtestresult.cpp
index 9fc3c67ca5..1fb5bddcbb 100644
--- a/src/testlib/qtestresult.cpp
+++ b/src/testlib/qtestresult.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -62,10 +62,6 @@ namespace QTest
static bool skipCurrentTest = false;
static QTestResult::TestLocation location = QTestResult::NoWhere;
- static int fails = 0;
- static int passes = 0;
- static int skips = 0;
-
static const char *expectFailComment = 0;
static int expectFailMode = 0;
}
@@ -80,12 +76,10 @@ void QTestResult::reset()
QTest::dataFailed = false;
QTest::location = QTestResult::NoWhere;
- QTest::fails = 0;
- QTest::passes = 0;
- QTest::skips = 0;
-
QTest::expectFailComment = 0;
QTest::expectFailMode = 0;
+
+ QTestLog::resetCounters();
}
bool QTestResult::currentTestFailed()
@@ -140,7 +134,6 @@ void QTestResult::finishedCurrentTestFunction()
if (!QTest::failed && !QTest::skipCurrentTest) {
QTestLog::addPass("");
- ++QTest::passes;
}
QTest::currentTestFunc = 0;
QTest::failed = false;
@@ -211,7 +204,6 @@ static bool checkStatement(bool statement, const char *msg, const char *file, in
bool doContinue = (QTest::expectFailMode == QTest::Continue);
clearExpectFail();
QTest::failed = true;
- ++QTest::fails;
return doContinue;
}
return true;
@@ -277,7 +269,6 @@ void QTestResult::addFailure(const char *message, const char *file, int line)
QTestLog::addFail(message, file, line);
QTest::failed = true;
QTest::dataFailed = true;
- ++QTest::fails;
}
void QTestResult::addSkip(const char *message, const char *file, int line)
@@ -285,7 +276,6 @@ void QTestResult::addSkip(const char *message, const char *file, int line)
clearExpectFail();
QTestLog::addSkip(message, file, line);
- ++QTest::skips;
}
QTestResult::TestLocation QTestResult::currentTestLocation()
@@ -308,26 +298,6 @@ const char *QTestResult::currentTestObjectName()
return QTest::currentTestObjectName ? QTest::currentTestObjectName : "";
}
-int QTestResult::passCount()
-{
- return QTest::passes;
-}
-
-int QTestResult::failCount()
-{
- return QTest::fails;
-}
-
-int QTestResult::skipCount()
-{
- return QTest::skips;
-}
-
-void QTestResult::ignoreMessage(QtMsgType type, const char *msg)
-{
- QTestLog::ignoreMessage(type, msg);
-}
-
bool QTestResult::testFailed()
{
return QTest::failed;
diff --git a/src/testlib/qtestresult_p.h b/src/testlib/qtestresult_p.h
index 134d0637b6..fc7f834756 100644
--- a/src/testlib/qtestresult_p.h
+++ b/src/testlib/qtestresult_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -76,12 +76,6 @@ public:
static void finishedCurrentTestFunction();
static void reset();
- static int passCount();
- static int failCount();
- static int skipCount();
-
- static void ignoreMessage(QtMsgType type, const char *msg);
-
static void addFailure(const char *message, const char *file, int line);
static bool compare(bool success, const char *msg, const char *file, int line);
static bool compare(bool success, const char *msg, char *val1, char *val2,
diff --git a/src/testlib/qtestspontaneevent.h b/src/testlib/qtestspontaneevent.h
index 20e396bda6..a66423694b 100644
--- a/src/testlib/qtestspontaneevent.h
+++ b/src/testlib/qtestspontaneevent.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
#ifndef QTEST_NO_SIZEOF_CHECK
template <int>
diff --git a/src/testlib/qtestsystem.h b/src/testlib/qtestsystem.h
index ff621cdb6f..1f10967557 100644
--- a/src/testlib/qtestsystem.h
+++ b/src/testlib/qtestsystem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
class QWidget;
#ifdef Q_WS_X11
diff --git a/src/testlib/qtesttable.cpp b/src/testlib/qtesttable.cpp
index 203a74618d..638ba9e4c4 100644
--- a/src/testlib/qtesttable.cpp
+++ b/src/testlib/qtesttable.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qtesttable_p.h b/src/testlib/qtesttable_p.h
index 46ee4a99d9..5878b925e4 100644
--- a/src/testlib/qtesttable_p.h
+++ b/src/testlib/qtesttable_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qtesttouch.h b/src/testlib/qtesttouch.h
index 499db58b4d..291a7219b3 100644
--- a/src/testlib/qtesttouch.h
+++ b/src/testlib/qtesttouch.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -62,7 +62,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
namespace QTest
{
diff --git a/src/testlib/qtestxunitstreamer.cpp b/src/testlib/qtestxunitstreamer.cpp
index 607167ccce..09f1c752b6 100644
--- a/src/testlib/qtestxunitstreamer.cpp
+++ b/src/testlib/qtestxunitstreamer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qtestxunitstreamer_p.h b/src/testlib/qtestxunitstreamer_p.h
index c43d399acc..472d7c8481 100644
--- a/src/testlib/qtestxunitstreamer_p.h
+++ b/src/testlib/qtestxunitstreamer_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Test)
class QTestElement;
class QTestElementAttribute;
diff --git a/src/testlib/qxmltestlogger.cpp b/src/testlib/qxmltestlogger.cpp
index b06f4736e7..28ae6ff095 100644
--- a/src/testlib/qxmltestlogger.cpp
+++ b/src/testlib/qxmltestlogger.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qxmltestlogger_p.h b/src/testlib/qxmltestlogger_p.h
index 0adb857633..2a20b67c4d 100644
--- a/src/testlib/qxmltestlogger_p.h
+++ b/src/testlib/qxmltestlogger_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qxunittestlogger.cpp b/src/testlib/qxunittestlogger.cpp
index 892cce855e..5967ccdd4e 100644
--- a/src/testlib/qxunittestlogger.cpp
+++ b/src/testlib/qxunittestlogger.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/testlib/qxunittestlogger_p.h b/src/testlib/qxunittestlogger_p.h
index 0778fa4843..c06991a99f 100644
--- a/src/testlib/qxunittestlogger_p.h
+++ b/src/testlib/qxunittestlogger_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/bootstrap/bootstrap.pri b/src/tools/bootstrap/bootstrap.pri
index 83fcee18d6..8a368cb228 100644
--- a/src/tools/bootstrap/bootstrap.pri
+++ b/src/tools/bootstrap/bootstrap.pri
@@ -57,7 +57,6 @@ hpux-acc*|hpuxi-acc* {
LIBS += -lbootstrap
}
!contains(QT_CONFIG, zlib):!contains(QT_CONFIG, no-zlib):!cross_compile {
- symbian:LIBS_PRIVATE += -llibz
else:if(unix|win32-g++*):LIBS_PRIVATE += -lz
else:LIBS += zdll.lib
}
diff --git a/src/tools/bootstrap/bootstrap.pro b/src/tools/bootstrap/bootstrap.pro
index b5869d826c..fdf41c55c2 100644
--- a/src/tools/bootstrap/bootstrap.pro
+++ b/src/tools/bootstrap/bootstrap.pro
@@ -51,6 +51,7 @@ SOURCES += \
../../corelib/codecs/qtextcodec.cpp \
../../corelib/codecs/qutfcodec.cpp \
../../corelib/global/qglobal.cpp \
+ ../../corelib/global/qlogging.cpp \
../../corelib/global/qmalloc.cpp \
../../corelib/global/qnumeric.cpp \
../../corelib/io/qabstractfileengine.cpp \
diff --git a/src/tools/moc/generator.cpp b/src/tools/moc/generator.cpp
index 8793496b37..b4f3d23f4e 100644
--- a/src/tools/moc/generator.cpp
+++ b/src/tools/moc/generator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,17 +54,6 @@ uint qvariant_nameToType(const char* name)
if (!name)
return 0;
- if (strcmp(name, "QVariant") == 0)
- return 0xffffffff;
- if (strcmp(name, "QCString") == 0)
- return QMetaType::QByteArray;
- if (strcmp(name, "Q_LLONG") == 0)
- return QMetaType::LongLong;
- if (strcmp(name, "Q_ULLONG") == 0)
- return QMetaType::ULongLong;
- if (strcmp(name, "QIconSet") == 0)
- return QMetaType::QIcon;
-
uint tp = QMetaType::type(name);
return tp < QMetaType::User ? tp : 0;
}
@@ -173,7 +162,7 @@ void Generator::generateCode()
int index = 14;
fprintf(out, "static const uint qt_meta_data_%s[] = {\n", qualifiedClassNameIdentifier.constData());
fprintf(out, "\n // content:\n");
- fprintf(out, " %4d, // revision\n", 6);
+ fprintf(out, " %4d, // revision\n", int(QMetaObjectPrivate::OutputRevision));
fprintf(out, " %4d, // classname\n", strreg(cdef->qualified));
fprintf(out, " %4d, %4d, // classinfo\n", cdef->classInfoList.count(), cdef->classInfoList.count() ? index : 0);
index += cdef->classInfoList.count() * 2;
diff --git a/src/tools/moc/generator.h b/src/tools/moc/generator.h
index 3be216ae76..a3dc3d0041 100644
--- a/src/tools/moc/generator.h
+++ b/src/tools/moc/generator.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/moc/keywords.cpp b/src/tools/moc/keywords.cpp
index fd59c1279f..7a6b44074b 100644
--- a/src/tools/moc/keywords.cpp
+++ b/src/tools/moc/keywords.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/moc/main.cpp b/src/tools/moc/main.cpp
index 82bd288f0f..512d0212b7 100644
--- a/src/tools/moc/main.cpp
+++ b/src/tools/moc/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/moc/moc.cpp b/src/tools/moc/moc.cpp
index 6d8e6f899a..5c9e1ee838 100644
--- a/src/tools/moc/moc.cpp
+++ b/src/tools/moc/moc.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/moc/moc.h b/src/tools/moc/moc.h
index a80cf304d7..b780272dff 100644
--- a/src/tools/moc/moc.h
+++ b/src/tools/moc/moc.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/moc/mwerks_mac.cpp b/src/tools/moc/mwerks_mac.cpp
index 752fc0d683..6f2e3fa5e0 100644
--- a/src/tools/moc/mwerks_mac.cpp
+++ b/src/tools/moc/mwerks_mac.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/moc/mwerks_mac.h b/src/tools/moc/mwerks_mac.h
index 526dc66d81..4d7debd7dc 100644
--- a/src/tools/moc/mwerks_mac.h
+++ b/src/tools/moc/mwerks_mac.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/moc/outputrevision.h b/src/tools/moc/outputrevision.h
index 4955cca169..15661a43aa 100644
--- a/src/tools/moc/outputrevision.h
+++ b/src/tools/moc/outputrevision.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/moc/parser.cpp b/src/tools/moc/parser.cpp
index 39de3abbaf..af400375bd 100644
--- a/src/tools/moc/parser.cpp
+++ b/src/tools/moc/parser.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/moc/parser.h b/src/tools/moc/parser.h
index 7aeac80c38..1d69e6472f 100644
--- a/src/tools/moc/parser.h
+++ b/src/tools/moc/parser.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/moc/ppkeywords.cpp b/src/tools/moc/ppkeywords.cpp
index a4f139098e..ccdd36d0c8 100644
--- a/src/tools/moc/ppkeywords.cpp
+++ b/src/tools/moc/ppkeywords.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/moc/preprocessor.cpp b/src/tools/moc/preprocessor.cpp
index 376935cd60..07b9e4c500 100644
--- a/src/tools/moc/preprocessor.cpp
+++ b/src/tools/moc/preprocessor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/moc/preprocessor.h b/src/tools/moc/preprocessor.h
index bf1e6d49b3..e0707da4ee 100644
--- a/src/tools/moc/preprocessor.h
+++ b/src/tools/moc/preprocessor.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/moc/symbols.h b/src/tools/moc/symbols.h
index 6e773bcab1..eadb2db875 100644
--- a/src/tools/moc/symbols.h
+++ b/src/tools/moc/symbols.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/moc/token.cpp b/src/tools/moc/token.cpp
index d7ae9437e4..ebbe64d672 100644
--- a/src/tools/moc/token.cpp
+++ b/src/tools/moc/token.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/moc/token.h b/src/tools/moc/token.h
index 359a46f2e8..a694ff4eb2 100644
--- a/src/tools/moc/token.h
+++ b/src/tools/moc/token.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/moc/util/generate.sh b/src/tools/moc/util/generate.sh
index 1cb6c5f7ec..0d27a99a1c 100755
--- a/src/tools/moc/util/generate.sh
+++ b/src/tools/moc/util/generate.sh
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is the build configuration utility of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
diff --git a/src/tools/moc/util/generate_keywords.cpp b/src/tools/moc/util/generate_keywords.cpp
index 751019797b..eb06315fed 100644
--- a/src/tools/moc/util/generate_keywords.cpp
+++ b/src/tools/moc/util/generate_keywords.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/moc/util/licenseheader.txt b/src/tools/moc/util/licenseheader.txt
index a6f7b3e29a..d8d9f7a58e 100644
--- a/src/tools/moc/util/licenseheader.txt
+++ b/src/tools/moc/util/licenseheader.txt
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/moc/utils.h b/src/tools/moc/utils.h
index e5aad4df9c..ced0bfed43 100644
--- a/src/tools/moc/utils.h
+++ b/src/tools/moc/utils.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/rcc/main.cpp b/src/tools/rcc/main.cpp
index 6d90f02491..3873e74ee5 100644
--- a/src/tools/rcc/main.cpp
+++ b/src/tools/rcc/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/rcc/rcc.cpp b/src/tools/rcc/rcc.cpp
index 6748841615..5fbda35fc6 100644
--- a/src/tools/rcc/rcc.cpp
+++ b/src/tools/rcc/rcc.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/rcc/rcc.h b/src/tools/rcc/rcc.h
index 0510df0bf3..6fe8059551 100644
--- a/src/tools/rcc/rcc.h
+++ b/src/tools/rcc/rcc.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/tools.pro b/src/tools/tools.pro
index 5cbe92309e..e6b9eefc69 100644
--- a/src/tools/tools.pro
+++ b/src/tools/tools.pro
@@ -22,41 +22,39 @@ src_tools_uic.target = sub-uic
# Special handling, depending on type of project, if it used debug/release or only has one configuration
EXTRA_DEBUG_TARGETS =
EXTRA_RELEASE_TARGETS =
-!symbian {
- for(subname, TOOLS_SUBDIRS) {
- subdir = $$subname
- !isEmpty($${subname}.subdir):subdir = $$eval($${subname}.subdir)
- subpro = $$subdir/$${basename(subdir)}.pro
- !exists($$subpro):next()
- subtarget = $$replace(subdir, [^A-Za-z0-9], _)
- reg_src = $$replace(QT_SOURCE_TREE, \\\\, \\\\)
- subdir = $$replace(subdir, $$reg_src, $$QT_BUILD_TREE)
- subdir = $$replace(subdir, /, $$QMAKE_DIR_SEP)
- subdir = $$replace(subdir, \\\\, $$QMAKE_DIR_SEP)
- SUB_TEMPLATE = $$list($$fromfile($$subpro, TEMPLATE))
- !isEqual(subname, src_tools_bootstrap):if(isEqual($$SUB_TEMPLATE, lib) | isEqual($$SUB_TEMPLATE, subdirs)):!separate_debug_info {
- #debug
- debug-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_DEBUG_TARGETS
- debug-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) debug)
- EXTRA_DEBUG_TARGETS += debug-$${subtarget}
- QMAKE_EXTRA_TARGETS += debug-$${subtarget}
- #release
- release-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_RELEASE_TARGETS
- release-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) release)
- EXTRA_RELEASE_TARGETS += release-$${subtarget}
- QMAKE_EXTRA_TARGETS += release-$${subtarget}
- } else { #do not have a real debug target/release
- #debug
- debug-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_DEBUG_TARGETS
- debug-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) first)
- EXTRA_DEBUG_TARGETS += debug-$${subtarget}
- QMAKE_EXTRA_TARGETS += debug-$${subtarget}
- #release
- release-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_RELEASE_TARGETS
- release-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) first)
- EXTRA_RELEASE_TARGETS += release-$${subtarget}
- QMAKE_EXTRA_TARGETS += release-$${subtarget}
- }
+for(subname, TOOLS_SUBDIRS) {
+ subdir = $$subname
+ !isEmpty($${subname}.subdir):subdir = $$eval($${subname}.subdir)
+ subpro = $$subdir/$${basename(subdir)}.pro
+ !exists($$subpro):next()
+ subtarget = $$replace(subdir, [^A-Za-z0-9], _)
+ reg_src = $$replace(QT_SOURCE_TREE, \\\\, \\\\)
+ subdir = $$replace(subdir, $$reg_src, $$QT_BUILD_TREE)
+ subdir = $$replace(subdir, /, $$QMAKE_DIR_SEP)
+ subdir = $$replace(subdir, \\\\, $$QMAKE_DIR_SEP)
+ SUB_TEMPLATE = $$list($$fromfile($$subpro, TEMPLATE))
+ !isEqual(subname, src_tools_bootstrap):if(isEqual($$SUB_TEMPLATE, lib) | isEqual($$SUB_TEMPLATE, subdirs)):!separate_debug_info {
+ #debug
+ debug-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_DEBUG_TARGETS
+ debug-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) debug)
+ EXTRA_DEBUG_TARGETS += debug-$${subtarget}
+ QMAKE_EXTRA_TARGETS += debug-$${subtarget}
+ #release
+ release-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_RELEASE_TARGETS
+ release-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) release)
+ EXTRA_RELEASE_TARGETS += release-$${subtarget}
+ QMAKE_EXTRA_TARGETS += release-$${subtarget}
+ } else { #do not have a real debug target/release
+ #debug
+ debug-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_DEBUG_TARGETS
+ debug-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) first)
+ EXTRA_DEBUG_TARGETS += debug-$${subtarget}
+ QMAKE_EXTRA_TARGETS += debug-$${subtarget}
+ #release
+ release-$${subtarget}.depends = $${subdir}$${QMAKE_DIR_SEP}$(MAKEFILE) $$EXTRA_RELEASE_TARGETS
+ release-$${subtarget}.commands = (cd $$subdir && $(MAKE) -f $(MAKEFILE) first)
+ EXTRA_RELEASE_TARGETS += release-$${subtarget}
+ QMAKE_EXTRA_TARGETS += release-$${subtarget}
}
}
diff --git a/src/tools/uic/cpp/cppextractimages.cpp b/src/tools/uic/cpp/cppextractimages.cpp
index 8d9060db44..7dca6320d7 100644
--- a/src/tools/uic/cpp/cppextractimages.cpp
+++ b/src/tools/uic/cpp/cppextractimages.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/cpp/cppextractimages.h b/src/tools/uic/cpp/cppextractimages.h
index 9641e02060..5b08d01e94 100644
--- a/src/tools/uic/cpp/cppextractimages.h
+++ b/src/tools/uic/cpp/cppextractimages.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/cpp/cppwritedeclaration.cpp b/src/tools/uic/cpp/cppwritedeclaration.cpp
index afa26b27e4..9b97000a06 100644
--- a/src/tools/uic/cpp/cppwritedeclaration.cpp
+++ b/src/tools/uic/cpp/cppwritedeclaration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/cpp/cppwritedeclaration.h b/src/tools/uic/cpp/cppwritedeclaration.h
index 7d3653362f..794c1b4204 100644
--- a/src/tools/uic/cpp/cppwritedeclaration.h
+++ b/src/tools/uic/cpp/cppwritedeclaration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/cpp/cppwriteicondata.cpp b/src/tools/uic/cpp/cppwriteicondata.cpp
index c0f9cc4149..39ce52f4b3 100644
--- a/src/tools/uic/cpp/cppwriteicondata.cpp
+++ b/src/tools/uic/cpp/cppwriteicondata.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/cpp/cppwriteicondata.h b/src/tools/uic/cpp/cppwriteicondata.h
index 7c43ba842a..1b5acaea56 100644
--- a/src/tools/uic/cpp/cppwriteicondata.h
+++ b/src/tools/uic/cpp/cppwriteicondata.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/cpp/cppwriteicondeclaration.cpp b/src/tools/uic/cpp/cppwriteicondeclaration.cpp
index 8ba9790f2c..91822b0e92 100644
--- a/src/tools/uic/cpp/cppwriteicondeclaration.cpp
+++ b/src/tools/uic/cpp/cppwriteicondeclaration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/cpp/cppwriteicondeclaration.h b/src/tools/uic/cpp/cppwriteicondeclaration.h
index 911aab473c..d8dad36847 100644
--- a/src/tools/uic/cpp/cppwriteicondeclaration.h
+++ b/src/tools/uic/cpp/cppwriteicondeclaration.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/cpp/cppwriteiconinitialization.cpp b/src/tools/uic/cpp/cppwriteiconinitialization.cpp
index 1045bafe0a..a026d27798 100644
--- a/src/tools/uic/cpp/cppwriteiconinitialization.cpp
+++ b/src/tools/uic/cpp/cppwriteiconinitialization.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/cpp/cppwriteiconinitialization.h b/src/tools/uic/cpp/cppwriteiconinitialization.h
index 2b4495785a..ae85c83e9d 100644
--- a/src/tools/uic/cpp/cppwriteiconinitialization.h
+++ b/src/tools/uic/cpp/cppwriteiconinitialization.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/cpp/cppwriteincludes.cpp b/src/tools/uic/cpp/cppwriteincludes.cpp
index de0deb3852..4c5edf7190 100644
--- a/src/tools/uic/cpp/cppwriteincludes.cpp
+++ b/src/tools/uic/cpp/cppwriteincludes.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/cpp/cppwriteincludes.h b/src/tools/uic/cpp/cppwriteincludes.h
index bce8ece0ec..9ad4008b08 100644
--- a/src/tools/uic/cpp/cppwriteincludes.h
+++ b/src/tools/uic/cpp/cppwriteincludes.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/cpp/cppwriteinitialization.cpp b/src/tools/uic/cpp/cppwriteinitialization.cpp
index dfb4a3299e..91f2f2558b 100644
--- a/src/tools/uic/cpp/cppwriteinitialization.cpp
+++ b/src/tools/uic/cpp/cppwriteinitialization.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -466,11 +466,12 @@ void WriteInitialization::LayoutDefaultHandler::writeProperties(const QString &i
layoutmargins[marginType], suppressMarginDefault, str);
}
-static bool needsTranslation(DomString *str)
+template <class DomElement> // (DomString, DomStringList)
+static bool needsTranslation(const DomElement *element)
{
- if (!str)
+ if (!element)
return false;
- return !str->hasAttributeNotr() || !toBool(str->attributeNotr());
+ return !element->hasAttributeNotr() || !toBool(element->attributeNotr());
}
// --- WriteInitialization
@@ -1128,6 +1129,25 @@ void WriteInitialization::acceptActionRef(DomActionRef *node)
m_actionOut << m_indent << varName << "->addAction(" << actionName << ");\n";
}
+QString WriteInitialization::writeStringListProperty(const DomStringList *list) const
+{
+ QString propertyValue;
+ QTextStream str(&propertyValue);
+ str << "QStringList()";
+ const QStringList values = list->elementString();
+ if (values.isEmpty())
+ return propertyValue;
+ if (needsTranslation(list)) {
+ const QString comment = list->attributeComment();
+ for (int i = 0; i < values.size(); ++i)
+ str << '\n' << m_indent << " << " << trCall(values.at(i), comment);
+ } else {
+ for (int i = 0; i < values.size(); ++i)
+ str << " << QString::fromUtf8(" << fixString(values.at(i), m_dindent) << ')';
+ }
+ return propertyValue;
+}
+
void WriteInitialization::writeProperties(const QString &varName,
const QString &className,
const DomPropertyList &lst,
@@ -1434,15 +1454,7 @@ void WriteInitialization::writeProperties(const QString &varName,
break;
}
case DomProperty::StringList:
- propertyValue = QLatin1String("QStringList()");
- if (p->elementStringList()->elementString().size()) {
- const QStringList lst = p->elementStringList()->elementString();
- for (int i=0; i<lst.size(); ++i) {
- propertyValue += QLatin1String(" << QString::fromUtf8(");
- propertyValue += fixString(lst.at(i), m_dindent);
- propertyValue += QLatin1Char(')');
- }
- }
+ propertyValue = writeStringListProperty(p->elementStringList());
break;
case DomProperty::Url: {
@@ -1469,7 +1481,7 @@ void WriteInitialization::writeProperties(const QString &varName,
else if (propertyName == QLatin1String("accessibleName") || propertyName == QLatin1String("accessibleDescription"))
defineC = accessibilityDefineC;
- QTextStream &o = autoTrOutput(p->elementString());
+ QTextStream &o = autoTrOutput(p);
if (defineC)
openIfndef(o, QLatin1String(defineC));
@@ -2357,7 +2369,17 @@ QString WriteInitialization::autoTrCall(DomString *str, const QString &defaultSt
return noTrCall(str, defaultString);
}
-QTextStream &WriteInitialization::autoTrOutput(DomString *str, const QString &defaultString)
+QTextStream &WriteInitialization::autoTrOutput(const DomProperty *property)
+{
+ if (const DomString *str = property->elementString())
+ return autoTrOutput(str);
+ if (const DomStringList *list = property->elementStringList())
+ if (needsTranslation(list))
+ return m_refreshOut;
+ return m_output;
+}
+
+QTextStream &WriteInitialization::autoTrOutput(const DomString *str, const QString &defaultString)
{
if ((!str && !defaultString.isEmpty()) || needsTranslation(str))
return m_refreshOut;
diff --git a/src/tools/uic/cpp/cppwriteinitialization.h b/src/tools/uic/cpp/cppwriteinitialization.h
index 721eb0f79e..a0f6c3a7a1 100644
--- a/src/tools/uic/cpp/cppwriteinitialization.h
+++ b/src/tools/uic/cpp/cppwriteinitialization.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -58,6 +58,7 @@ class DomBrush;
class DomFont;
class DomResourceIcon;
class DomSizePolicy;
+class DomStringList;
struct Option;
namespace CPP {
@@ -176,11 +177,13 @@ private:
QString trCall(DomString *str, const QString &defaultString = QString()) const;
QString noTrCall(DomString *str, const QString &defaultString = QString()) const;
QString autoTrCall(DomString *str, const QString &defaultString = QString()) const;
- QTextStream &autoTrOutput(DomString *str, const QString &defaultString = QString());
+ inline QTextStream &autoTrOutput(const DomProperty *str);
+ QTextStream &autoTrOutput(const DomString *str, const QString &defaultString = QString());
// Apply a comma-separated list of values using a function "setSomething(int idx, value)"
void writePropertyList(const QString &varName, const QString &setFunction, const QString &value, const QString &defaultValue);
enum { WritePropertyIgnoreMargin = 1, WritePropertyIgnoreSpacing = 2, WritePropertyIgnoreObjectName = 4 };
+ QString writeStringListProperty(const DomStringList *list) const;
void writeProperties(const QString &varName, const QString &className, const DomPropertyList &lst, unsigned flags = 0);
void writeColorGroup(DomColorGroup *colorGroup, const QString &group, const QString &paletteName);
void writeBrush(const DomBrush *brush, const QString &brushName);
diff --git a/src/tools/uic/customwidgetsinfo.cpp b/src/tools/uic/customwidgetsinfo.cpp
index d63054313c..0dc932d2fa 100644
--- a/src/tools/uic/customwidgetsinfo.cpp
+++ b/src/tools/uic/customwidgetsinfo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/customwidgetsinfo.h b/src/tools/uic/customwidgetsinfo.h
index ed96a33c58..80d93495f3 100644
--- a/src/tools/uic/customwidgetsinfo.h
+++ b/src/tools/uic/customwidgetsinfo.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/databaseinfo.cpp b/src/tools/uic/databaseinfo.cpp
index 53a6bf3111..76fb6c8d49 100644
--- a/src/tools/uic/databaseinfo.cpp
+++ b/src/tools/uic/databaseinfo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/databaseinfo.h b/src/tools/uic/databaseinfo.h
index 7df32fb6e0..8dd2bae1cd 100644
--- a/src/tools/uic/databaseinfo.h
+++ b/src/tools/uic/databaseinfo.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/driver.cpp b/src/tools/uic/driver.cpp
index 38217c603e..5a9a862f14 100644
--- a/src/tools/uic/driver.cpp
+++ b/src/tools/uic/driver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/driver.h b/src/tools/uic/driver.h
index 66bfde6d53..07f330471e 100644
--- a/src/tools/uic/driver.h
+++ b/src/tools/uic/driver.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/globaldefs.h b/src/tools/uic/globaldefs.h
index 45e0142821..e43a2e946e 100644
--- a/src/tools/uic/globaldefs.h
+++ b/src/tools/uic/globaldefs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/main.cpp b/src/tools/uic/main.cpp
index ec63c70dc1..7a5b9e684f 100644
--- a/src/tools/uic/main.cpp
+++ b/src/tools/uic/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/option.h b/src/tools/uic/option.h
index 2eed07f0dc..c5fd48267c 100644
--- a/src/tools/uic/option.h
+++ b/src/tools/uic/option.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/qclass_lib_map.h b/src/tools/uic/qclass_lib_map.h
index 1afef3d3ac..11be47ce64 100644
--- a/src/tools/uic/qclass_lib_map.h
+++ b/src/tools/uic/qclass_lib_map.h
@@ -9,8 +9,6 @@ QT_CLASS_LIB(QVariantAnimation, QtCore, qvariantanimation.h)
QT_CLASS_LIB(QTextCodec, QtCore, qtextcodec.h)
QT_CLASS_LIB(QTextEncoder, QtCore, qtextcodec.h)
QT_CLASS_LIB(QTextDecoder, QtCore, qtextcodec.h)
-QT_CLASS_LIB(QTextCodecFactoryInterface, QtCore, qtextcodecplugin.h)
-QT_CLASS_LIB(QTextCodecPlugin, QtCore, qtextcodecplugin.h)
QT_CLASS_LIB(QFuture, QtCore, qfuture.h)
QT_CLASS_LIB(QFutureIterator, QtCore, qfuture.h)
QT_CLASS_LIB(QMutableFutureIterator, QtCore, qfuture.h)
@@ -35,26 +33,13 @@ QT_CLASS_LIB(QIntegerForSize, QtCore, qglobal.h)
QT_CLASS_LIB(QIntegerForSize, QtCore, qglobal.h)
QT_CLASS_LIB(QIntegerForSize, QtCore, qglobal.h)
QT_CLASS_LIB(QNoImplicitBoolCast, QtCore, qglobal.h)
-QT_CLASS_LIB(Q_INT8, QtCore, qglobal.h)
-QT_CLASS_LIB(Q_UINT8, QtCore, qglobal.h)
-QT_CLASS_LIB(Q_INT16, QtCore, qglobal.h)
-QT_CLASS_LIB(Q_UINT16, QtCore, qglobal.h)
-QT_CLASS_LIB(Q_INT32, QtCore, qglobal.h)
-QT_CLASS_LIB(Q_UINT32, QtCore, qglobal.h)
QT_CLASS_LIB(Q_INT64, QtCore, qglobal.h)
QT_CLASS_LIB(Q_UINT64, QtCore, qglobal.h)
-QT_CLASS_LIB(Q_LLONG, QtCore, qglobal.h)
-QT_CLASS_LIB(Q_ULLONG, QtCore, qglobal.h)
-QT_CLASS_LIB(Q_LONG, QtCore, qglobal.h)
-QT_CLASS_LIB(Q_ULONG, QtCore, qglobal.h)
-QT_CLASS_LIB(Q_LONG, QtCore, qglobal.h)
-QT_CLASS_LIB(Q_ULONG, QtCore, qglobal.h)
QT_CLASS_LIB(QSysInfo, QtCore, qglobal.h)
QT_CLASS_LIB(QtMsgHandler, QtCore, qglobal.h)
QT_CLASS_LIB(QGlobalStatic, QtCore, qglobal.h)
QT_CLASS_LIB(QGlobalStatic, QtCore, qglobal.h)
QT_CLASS_LIB(QGlobalStaticDeleter, QtCore, qglobal.h)
-QT_CLASS_LIB(QBool, QtCore, qglobal.h)
QT_CLASS_LIB(QTypeInfo, QtCore, qglobal.h)
QT_CLASS_LIB(QTypeInfo, QtCore, qglobal.h)
QT_CLASS_LIB(QFlag, QtCore, qglobal.h)
@@ -397,8 +382,6 @@ QT_CLASS_LIB(QXmlStreamStringRef, QtXml, qxmlstream.h)
QT_CLASS_LIB(QXmlStreamWriter, QtXml, qxmlstream.h)
QT_CLASS_LIB(QNetworkCacheMetaData, QtNetwork, qabstractnetworkcache.h)
QT_CLASS_LIB(QAbstractNetworkCache, QtNetwork, qabstractnetworkcache.h)
-QT_CLASS_LIB(QHttpHeader, QtNetwork, qhttpheader_p.h)
-QT_CLASS_LIB(QHttpResponseHeader, QtNetwork, qhttpheader_p.h)
QT_CLASS_LIB(QNetworkAccessManager, QtNetwork, qnetworkaccessmanager.h)
QT_CLASS_LIB(QNetworkCookie, QtNetwork, qnetworkcookie.h)
QT_CLASS_LIB(QNetworkCookieJar, QtNetwork, qnetworkcookiejar.h)
@@ -675,7 +658,6 @@ QT_CLASS_LIB(QGraphicsView, QtWidgets, qgraphicsview.h)
QT_CLASS_LIB(QGraphicsWidget, QtWidgets, qgraphicswidget.h)
QT_CLASS_LIB(QBitmap, QtGui, qbitmap.h)
QT_CLASS_LIB(QIcon, QtWidgets, qicon.h)
-QT_CLASS_LIB(QIconSet, QtWidgets, qicon.h)
QT_CLASS_LIB(QIconEngine, QtWidgets, qiconengine.h)
QT_CLASS_LIB(QIconEngineV2, QtWidgets, qiconengine.h)
QT_CLASS_LIB(QIconEngineFactoryInterface, QtWidgets, qiconengineplugin.h)
@@ -696,10 +678,6 @@ QT_CLASS_LIB(QPictureFormatInterface, QtGui, qpictureformatplugin.h)
QT_CLASS_LIB(QPictureFormatPlugin, QtGui, qpictureformatplugin.h)
QT_CLASS_LIB(QPixmap, QtGui, qpixmap.h)
QT_CLASS_LIB(QPixmapCache, QtGui, qpixmapcache.h)
-QT_CLASS_LIB(QInputContext, QtWidgets, qinputcontext.h)
-QT_CLASS_LIB(QInputContextFactory, QtWidgets, qinputcontextfactory.h)
-QT_CLASS_LIB(QInputContextFactoryInterface, QtWidgets, qinputcontextplugin.h)
-QT_CLASS_LIB(QInputContextPlugin, QtWidgets, qinputcontextplugin.h)
QT_CLASS_LIB(QAbstractItemDelegate, QtWidgets, qabstractitemdelegate.h)
QT_CLASS_LIB(QAbstractItemView, QtWidgets, qabstractitemview.h)
QT_CLASS_LIB(QAbstractProxyModel, QtWidgets, qabstractproxymodel.h)
@@ -871,19 +849,6 @@ QT_CLASS_LIB(QRgb, QtGui, qrgb.h)
QT_CLASS_LIB(QStylePainter, QtGui, qstylepainter.h)
QT_CLASS_LIB(QTransform, QtGui, qtransform.h)
QT_CLASS_LIB(QWMatrix, QtGui, qwmatrix.h)
-QT_CLASS_LIB(QS60MainApplicationBase, QtGui, qs60mainapplication.h)
-QT_CLASS_LIB(QS60MainApplicationBase, QtWidgets, qs60mainapplication.h)
-QT_CLASS_LIB(QS60MainApplication, QtWidgets, qs60mainapplication.h)
-QT_CLASS_LIB(QS60MainAppUiBase, QtWidgets, qs60mainappui.h)
-QT_CLASS_LIB(QS60StubAknAppUiBase, QtWidgets, qs60mainappui.h)
-QT_CLASS_LIB(QS60StubMEikStatusPaneObserver, QtWidgets, qs60mainappui.h)
-QT_CLASS_LIB(QS60StubMAknTouchPaneObserver, QtWidgets, qs60mainappui.h)
-QT_CLASS_LIB(QS60StubAknAppUi, QtWidgets, qs60mainappui.h)
-QT_CLASS_LIB(QS60MainAppUiBase, QtWidgets, qs60mainappui.h)
-QT_CLASS_LIB(QS60MainAppUi, QtWidgets, qs60mainappui.h)
-QT_CLASS_LIB(QS60MainDocumentBase, QtWidgets, qs60maindocument.h)
-QT_CLASS_LIB(QS60MainDocumentBase, QtWidgets, qs60maindocument.h)
-QT_CLASS_LIB(QS60MainDocument, QtWidgets, qs60maindocument.h)
QT_CLASS_LIB(QKeyEventTransition, QtWidgets, qkeyeventtransition.h)
QT_CLASS_LIB(QMouseEventTransition, QtWidgets, qmouseeventtransition.h)
QT_CLASS_LIB(QCDEStyle, QtWidgets, qcdestyle.h)
@@ -894,7 +859,6 @@ QT_CLASS_LIB(QMacStyle, QtWidgets, qmacstyle_mac.h)
QT_CLASS_LIB(QMotifStyle, QtWidgets, qmotifstyle.h)
QT_CLASS_LIB(QPlastiqueStyle, QtWidgets, qplastiquestyle.h)
QT_CLASS_LIB(QProxyStyle, QtWidgets, qproxystyle.h)
-QT_CLASS_LIB(QS60Style, QtWidgets, qs60style.h)
QT_CLASS_LIB(QStyle, QtWidgets, qstyle.h)
QT_CLASS_LIB(QStyleFactory, QtWidgets, qstylefactory.h)
QT_CLASS_LIB(QStyleOption, QtWidgets, qstyleoption.h)
@@ -946,7 +910,6 @@ QT_CLASS_LIB(QWindowsMobileStyle, QtWidgets, qwindowsmobilestyle.h)
QT_CLASS_LIB(QWindowsStyle, QtWidgets, qwindowsstyle.h)
QT_CLASS_LIB(QWindowsVistaStyle, QtWidgets, qwindowsvistastyle.h)
QT_CLASS_LIB(QWindowsXPStyle, QtWidgets, qwindowsxpstyle.h)
-QT_CLASS_LIB(QSymbianEvent, QtGui, qsymbianevent.h)
QT_CLASS_LIB(QFontEngineInfo, QtGui, qabstractfontengine_qws.h)
QT_CLASS_LIB(QFontEngineFactoryInterface, QtGui, qabstractfontengine_qws.h)
QT_CLASS_LIB(QFontEnginePlugin, QtGui, qabstractfontengine_qws.h)
diff --git a/src/tools/uic/treewalker.cpp b/src/tools/uic/treewalker.cpp
index cc1dca3820..27cdc931f1 100644
--- a/src/tools/uic/treewalker.cpp
+++ b/src/tools/uic/treewalker.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/treewalker.h b/src/tools/uic/treewalker.h
index f57b6009c2..1507ac2c94 100644
--- a/src/tools/uic/treewalker.h
+++ b/src/tools/uic/treewalker.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/ui4.cpp b/src/tools/uic/ui4.cpp
index 0c8adcd07a..5697fb7b7e 100644
--- a/src/tools/uic/ui4.cpp
+++ b/src/tools/uic/ui4.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -3479,7 +3479,7 @@ void DomWidget::read(QXmlStreamReader &reader)
continue;
}
if (name == QStringLiteral("native")) {
- setAttributeNative((attribute.value().toString() == QLatin1String("true") ? true : false));
+ setAttributeNative((attribute.value().toString() == QStringLiteral("true") ? true : false));
continue;
}
reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
@@ -4853,23 +4853,23 @@ void DomFont::read(QXmlStreamReader &reader)
continue;
}
if (tag == QStringLiteral("italic")) {
- setElementItalic((reader.readElementText() == QLatin1String("true") ? true : false));
+ setElementItalic((reader.readElementText() == QStringLiteral("true") ? true : false));
continue;
}
if (tag == QStringLiteral("bold")) {
- setElementBold((reader.readElementText() == QLatin1String("true") ? true : false));
+ setElementBold((reader.readElementText() == QStringLiteral("true") ? true : false));
continue;
}
if (tag == QStringLiteral("underline")) {
- setElementUnderline((reader.readElementText() == QLatin1String("true") ? true : false));
+ setElementUnderline((reader.readElementText() == QStringLiteral("true") ? true : false));
continue;
}
if (tag == QStringLiteral("strikeout")) {
- setElementStrikeOut((reader.readElementText() == QLatin1String("true") ? true : false));
+ setElementStrikeOut((reader.readElementText() == QStringLiteral("true") ? true : false));
continue;
}
if (tag == QStringLiteral("antialiasing")) {
- setElementAntialiasing((reader.readElementText() == QLatin1String("true") ? true : false));
+ setElementAntialiasing((reader.readElementText() == QStringLiteral("true") ? true : false));
continue;
}
if (tag == QStringLiteral("stylestrategy")) {
@@ -4877,7 +4877,7 @@ void DomFont::read(QXmlStreamReader &reader)
continue;
}
if (tag == QStringLiteral("kerning")) {
- setElementKerning((reader.readElementText() == QLatin1String("true") ? true : false));
+ setElementKerning((reader.readElementText() == QStringLiteral("true") ? true : false));
continue;
}
reader.raiseError(QStringLiteral("Unexpected element ") + tag);
@@ -6028,6 +6028,9 @@ void DomStringList::clear(bool clear_all)
if (clear_all) {
m_text.clear();
+ m_has_attr_notr = false;
+ m_has_attr_comment = false;
+ m_has_attr_extraComment = false;
}
m_children = 0;
@@ -6036,6 +6039,9 @@ void DomStringList::clear(bool clear_all)
DomStringList::DomStringList()
{
m_children = 0;
+ m_has_attr_notr = false;
+ m_has_attr_comment = false;
+ m_has_attr_extraComment = false;
}
DomStringList::~DomStringList()
@@ -6046,6 +6052,23 @@ DomStringList::~DomStringList()
void DomStringList::read(QXmlStreamReader &reader)
{
+ foreach (const QXmlStreamAttribute &attribute, reader.attributes()) {
+ QStringRef name = attribute.name();
+ if (name == QStringLiteral("notr")) {
+ setAttributeNotr(attribute.value().toString());
+ continue;
+ }
+ if (name == QStringLiteral("comment")) {
+ setAttributeComment(attribute.value().toString());
+ continue;
+ }
+ if (name == QStringLiteral("extracomment")) {
+ setAttributeExtraComment(attribute.value().toString());
+ continue;
+ }
+ reader.raiseError(QStringLiteral("Unexpected attribute ") + name.toString());
+ }
+
for (bool finished = false; !finished && !reader.hasError();) {
switch (reader.readNext()) {
case QXmlStreamReader::StartElement : {
@@ -6074,6 +6097,15 @@ void DomStringList::write(QXmlStreamWriter &writer, const QString &tagName) cons
{
writer.writeStartElement(tagName.isEmpty() ? QString::fromUtf8("stringlist") : tagName.toLower());
+ if (hasAttributeNotr())
+ writer.writeAttribute(QStringLiteral("notr"), attributeNotr());
+
+ if (hasAttributeComment())
+ writer.writeAttribute(QStringLiteral("comment"), attributeComment());
+
+ if (hasAttributeExtraComment())
+ writer.writeAttribute(QStringLiteral("extracomment"), attributeExtraComment());
+
for (int i = 0; i < m_string.size(); ++i) {
QString v = m_string[i];
writer.writeTextElement(QStringLiteral("string"), v);
diff --git a/src/tools/uic/ui4.h b/src/tools/uic/ui4.h
index ce8e9c1473..c1458b4983 100644
--- a/src/tools/uic/ui4.h
+++ b/src/tools/uic/ui4.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -2593,6 +2593,21 @@ public:
inline void setText(const QString &s) { m_text = s; }
// attribute accessors
+ inline bool hasAttributeNotr() const { return m_has_attr_notr; }
+ inline QString attributeNotr() const { return m_attr_notr; }
+ inline void setAttributeNotr(const QString& a) { m_attr_notr = a; m_has_attr_notr = true; }
+ inline void clearAttributeNotr() { m_has_attr_notr = false; }
+
+ inline bool hasAttributeComment() const { return m_has_attr_comment; }
+ inline QString attributeComment() const { return m_attr_comment; }
+ inline void setAttributeComment(const QString& a) { m_attr_comment = a; m_has_attr_comment = true; }
+ inline void clearAttributeComment() { m_has_attr_comment = false; }
+
+ inline bool hasAttributeExtraComment() const { return m_has_attr_extraComment; }
+ inline QString attributeExtraComment() const { return m_attr_extraComment; }
+ inline void setAttributeExtraComment(const QString& a) { m_attr_extraComment = a; m_has_attr_extraComment = true; }
+ inline void clearAttributeExtraComment() { m_has_attr_extraComment = false; }
+
// child element accessors
inline QStringList elementString() const { return m_string; }
void setElementString(const QStringList& a);
@@ -2602,6 +2617,15 @@ private:
void clear(bool clear_all = true);
// attribute data
+ QString m_attr_notr;
+ bool m_has_attr_notr;
+
+ QString m_attr_comment;
+ bool m_has_attr_comment;
+
+ QString m_attr_extraComment;
+ bool m_has_attr_extraComment;
+
// child element data
uint m_children;
QStringList m_string;
diff --git a/src/tools/uic/uic.cpp b/src/tools/uic/uic.cpp
index 8f425c8212..2de3352cfc 100644
--- a/src/tools/uic/uic.cpp
+++ b/src/tools/uic/uic.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/uic.h b/src/tools/uic/uic.h
index 9f77e54749..431f3d1f07 100644
--- a/src/tools/uic/uic.h
+++ b/src/tools/uic/uic.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/uic.pro b/src/tools/uic/uic.pro
index b1840c0a85..6598180e45 100644
--- a/src/tools/uic/uic.pro
+++ b/src/tools/uic/uic.pro
@@ -14,6 +14,12 @@ HEADERS += uic.h
SOURCES += main.cpp \
uic.cpp
+linux-g++-maemo:contains(QT_ARCH, arm) {
+ # UIC will crash when running inside QEMU if built with -O2
+ QMAKE_CFLAGS_RELEASE -= -O2
+ QMAKE_CXXFLAGS_RELEASE -= -O2
+}
+
include(../bootstrap/bootstrap.pri)
target.path=$$[QT_INSTALL_BINS]
diff --git a/src/tools/uic/utils.h b/src/tools/uic/utils.h
index 9455598868..c864305891 100644
--- a/src/tools/uic/utils.h
+++ b/src/tools/uic/utils.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/validator.cpp b/src/tools/uic/validator.cpp
index 687b19599d..bf89eb424e 100644
--- a/src/tools/uic/validator.cpp
+++ b/src/tools/uic/validator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/tools/uic/validator.h b/src/tools/uic/validator.h
index 1cc313472e..c2eafb9e29 100644
--- a/src/tools/uic/validator.h
+++ b/src/tools/uic/validator.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/accessible/qaccessiblewidget.cpp b/src/widgets/accessible/qaccessiblewidget.cpp
index ae09b011dd..a4a86e5d31 100644
--- a/src/widgets/accessible/qaccessiblewidget.cpp
+++ b/src/widgets/accessible/qaccessiblewidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -361,35 +361,6 @@ QAccessible::Relation QAccessibleWidget::relationTo(const QAccessibleInterface *
if (inverse & QAccessible::Label)
relation |= QAccessible::Labelled;
- if(o == object()) {
- return relation | QAccessible::Self;
- }
-
- QObject *parent = object()->parent();
- if (o->parent() == parent) {
- QAccessibleInterface *sibIface = QAccessible::queryAccessibleInterface(o);
- Q_ASSERT(sibIface);
- QRect wg = rect();
- QRect sg = sibIface->rect();
- if (wg.intersects(sg)) {
- QAccessibleInterface *pIface = 0;
- pIface = sibIface->parent();
- if (pIface && !(sibIface->state().invisible | state().invisible)) {
- int wi = pIface->indexOfChild(this);
- int si = pIface->indexOfChild(sibIface);
-
- if (wi > si)
- relation |= QAccessible::Covers;
- else
- relation |= QAccessible::Covered;
- }
- delete pIface;
- }
- delete sibIface;
-
- return relation;
- }
-
return relation;
}
@@ -422,69 +393,6 @@ int QAccessibleWidget::navigate(QAccessible::RelationFlag relation, int entry,
QObject *targetObject = 0;
switch (relation) {
- case QAccessible::Covers:
- if (entry > 0) {
- QAccessibleInterface *pIface = parent();
- if (!pIface)
- return -1;
-
- QRect r = rect();
- int sibCount = pIface->childCount();
- QAccessibleInterface *sibling = 0;
- // FIXME: this code looks very suspicious
- // why start at this index?
- for (int i = pIface->indexOfChild(this) + 2; i <= sibCount && entry; ++i) {
- sibling = pIface->child(i - 1);
- if (!sibling || (sibling->state().invisible)) {
- delete sibling;
- sibling = 0;
- continue;
- }
- if (sibling->rect().intersects(r))
- --entry;
- if (!entry)
- break;
- delete sibling;
- sibling = 0;
- }
- delete pIface;
- *target = sibling;
- if (*target)
- return 0;
- }
- break;
- case QAccessible::Covered:
- if (entry > 0) {
- QAccessibleInterface *pIface = QAccessible::queryAccessibleInterface(parentObject());
- if (!pIface)
- return -1;
-
- QRect r = rect();
- int index = pIface->indexOfChild(this);
- QAccessibleInterface *sibling = 0;
- // FIXME: why end at index?
- for (int i = 0; i < index && entry; ++i) {
- sibling = pIface->child(i);
- Q_ASSERT(sibling);
- if (!sibling || (sibling->state().invisible)) {
- delete sibling;
- sibling = 0;
- continue;
- }
- if (sibling->rect().intersects(r))
- --entry;
- if (!entry)
- break;
- delete sibling;
- sibling = 0;
- }
- delete pIface;
- *target = sibling;
- if (*target)
- return 0;
- }
- break;
-
// Logical
case QAccessible::FocusChild:
{
diff --git a/src/widgets/accessible/qaccessiblewidget.h b/src/widgets/accessible/qaccessiblewidget.h
index da217b94ca..f96d298f90 100644
--- a/src/widgets/accessible/qaccessiblewidget.h
+++ b/src/widgets/accessible/qaccessiblewidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_ACCESSIBILITY
diff --git a/src/widgets/animation/qguivariantanimation.cpp b/src/widgets/animation/qguivariantanimation.cpp
index 2167e4a173..c344a18b8a 100644
--- a/src/widgets/animation/qguivariantanimation.cpp
+++ b/src/widgets/animation/qguivariantanimation.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/dialogs/qcolordialog.cpp b/src/widgets/dialogs/qcolordialog.cpp
index 777e4cc4ba..e592f14704 100644
--- a/src/widgets/dialogs/qcolordialog.cpp
+++ b/src/widgets/dialogs/qcolordialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -64,10 +64,6 @@
#include "qspinbox.h"
#include "qdialogbuttonbox.h"
-#ifdef MAEMO_UI
-# define QT_SMALL_COLORDIALOG
-#endif
-
QT_BEGIN_NAMESPACE
//////////// QWellArray BEGIN
@@ -1064,14 +1060,6 @@ QColorShower::QColorShower(QColorDialog *parent)
gl->setMargin(gl->spacing());
lab = new QColorShowLabel(this);
-#ifdef QT_SMALL_COLORDIALOG
-# ifdef Q_WS_S60
- const bool nonTouchUI = !S60->hasTouchscreen;
-# elif defined Q_WS_MAEMO_5
- const bool nonTouchUI = false;
-# endif
-#endif
-
#ifndef Q_WS_WINCE
#ifdef QT_SMALL_COLORDIALOG
lab->setMinimumHeight(60);
@@ -1081,7 +1069,6 @@ QColorShower::QColorShower(QColorDialog *parent)
lab->setMinimumWidth(20);
#endif
-// In S60, due to small screen and different screen layouts need to re-arrange the widgets.
// For QVGA screens only the comboboxes and color label are visible.
// For nHD screens only color and luminence pickers and color label are visible.
#if !defined(QT_SMALL_COLORDIALOG)
@@ -1480,14 +1467,6 @@ void QColorDialogPrivate::init(const QColor &initial)
topLay->addLayout(leftLay);
}
-#if defined(QT_SMALL_COLORDIALOG)
-# if defined(Q_WS_S60)
- const bool nonTouchUI = !S60->hasTouchscreen;
-# elif defined(Q_WS_MAEMO_5)
- const bool nonTouchUI = false;
-# endif
-#endif
-
if (!smallDisplay) {
standard = new QColorWell(q, 6, 8, QColorDialogOptions::standardColors());
lblBasicColors = new QLabel(q);
diff --git a/src/widgets/dialogs/qcolordialog.h b/src/widgets/dialogs/qcolordialog.h
index 1bdb0b41a2..cfb54a7eb9 100644
--- a/src/widgets/dialogs/qcolordialog.h
+++ b/src/widgets/dialogs/qcolordialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_COLORDIALOG
diff --git a/src/widgets/dialogs/qcolordialog_mac.mm b/src/widgets/dialogs/qcolordialog_mac.mm
index bdf5e1cccd..1496ba8300 100644
--- a/src/widgets/dialogs/qcolordialog_mac.mm
+++ b/src/widgets/dialogs/qcolordialog_mac.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/dialogs/qcolordialog_p.h b/src/widgets/dialogs/qcolordialog_p.h
index a6149017d7..12634e4532 100644
--- a/src/widgets/dialogs/qcolordialog_p.h
+++ b/src/widgets/dialogs/qcolordialog_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/dialogs/qdialog.cpp b/src/widgets/dialogs/qdialog.cpp
index af11fc971d..f462a362ca 100644
--- a/src/widgets/dialogs/qdialog.cpp
+++ b/src/widgets/dialogs/qdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,12 +34,14 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
-#include "qdialog.h"
-
+#include "qcolordialog.h"
+#include "qfontdialog.h"
+#include "qfiledialog.h"
#include "qevent.h"
#include "qdesktopwidget.h"
@@ -59,22 +60,36 @@
QT_BEGIN_NAMESPACE
+static inline int themeDialogType(const QDialog *dialog)
+{
+ if (qobject_cast<const QFileDialog *>(dialog))
+ return QPlatformTheme::FileDialog;
+ if (qobject_cast<const QColorDialog *>(dialog))
+ return QPlatformTheme::ColorDialog;
+ if (qobject_cast<const QFontDialog *>(dialog))
+ return QPlatformTheme::FontDialog;
+ return -1;
+}
+
QPlatformDialogHelper *QDialogPrivate::platformHelper() const
{
// Delayed creation of the platform, ensuring that
// that qobject_cast<> on the dialog works in the plugin.
if (!m_platformHelperCreated) {
- QDialogPrivate *ncThis = const_cast<QDialogPrivate *>(this);
m_platformHelperCreated = true;
+ QDialogPrivate *ncThis = const_cast<QDialogPrivate *>(this);
QDialog *dialog = ncThis->q_func();
- m_platformHelper = QGuiApplicationPrivate::platformTheme()
- ->createPlatformDialogHelper(dialog);
- if (m_platformHelper) {
- QObject::connect(m_platformHelper, SIGNAL(accept()), dialog, SLOT(accept()));
- QObject::connect(m_platformHelper, SIGNAL(reject()), dialog, SLOT(reject()));
- QObject::connect(m_platformHelper, SIGNAL(launchNativeAppModalPanel()),
- dialog, SLOT(_q_platformRunNativeAppModalPanel()));
- ncThis->initHelper(m_platformHelper);
+ const int type = themeDialogType(dialog);
+ if (type >= 0) {
+ m_platformHelper = QGuiApplicationPrivate::platformTheme()
+ ->createPlatformDialogHelper(static_cast<QPlatformTheme::DialogType>(type));
+ if (m_platformHelper) {
+ QObject::connect(m_platformHelper, SIGNAL(accept()), dialog, SLOT(accept()));
+ QObject::connect(m_platformHelper, SIGNAL(reject()), dialog, SLOT(reject()));
+ QObject::connect(m_platformHelper, SIGNAL(launchNativeAppModalPanel()),
+ dialog, SLOT(_q_platformRunNativeAppModalPanel()));
+ ncThis->initHelper(m_platformHelper);
+ }
}
}
return m_platformHelper;
@@ -733,7 +748,7 @@ void QDialog::setVisible(bool visible)
}
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::DialogStart);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::DialogStart, this, 0));
#endif
} else {
@@ -742,7 +757,7 @@ void QDialog::setVisible(bool visible)
#ifndef QT_NO_ACCESSIBILITY
if (isVisible())
- QAccessible::updateAccessibility(this, 0, QAccessible::DialogEnd);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::DialogEnd, this, 0));
#endif
// Reimplemented to exit a modal event loop when the dialog is hidden.
diff --git a/src/widgets/dialogs/qdialog.h b/src/widgets/dialogs/qdialog.h
index 8329e6460a..40bfbb63ee 100644
--- a/src/widgets/dialogs/qdialog.h
+++ b/src/widgets/dialogs/qdialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPushButton;
class QDialogPrivate;
diff --git a/src/widgets/dialogs/qdialog_p.h b/src/widgets/dialogs/qdialog_p.h
index ecdfff03fd..ca99600489 100644
--- a/src/widgets/dialogs/qdialog_p.h
+++ b/src/widgets/dialogs/qdialog_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -58,7 +58,7 @@
#include "QtCore/qpointer.h"
#include "QtWidgets/qdialog.h"
#include "QtWidgets/qpushbutton.h"
-#include "QtWidgets/qplatformdialoghelper_qpa.h"
+#include <QtGui/QPlatformDialogHelper>
QT_BEGIN_NAMESPACE
diff --git a/src/widgets/dialogs/qerrormessage.cpp b/src/widgets/dialogs/qerrormessage.cpp
index 1c950a7158..4993a6d80f 100644
--- a/src/widgets/dialogs/qerrormessage.cpp
+++ b/src/widgets/dialogs/qerrormessage.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -71,9 +71,6 @@ extern bool qt_wince_is_high_dpi(); //defined in qguifunctions_wince.cpp
#if defined(QT_SOFTKEYS_ENABLED)
#include <qaction.h>
#endif
-#ifdef Q_WS_S60
-#include "private/qt_s60_p.h"
-#endif
QT_BEGIN_NAMESPACE
@@ -134,14 +131,7 @@ QSize QErrorMessageTextView::sizeHint() const
else
return QSize(300, 100);
#else
-
-#ifdef Q_WS_S60
- const int smallerDimension = qMin(S60->screenHeightInPixels, S60->screenWidthInPixels);
- // In S60 layout data, error messages seem to be one third of the screen height (in portrait) minus two.
- return QSize(smallerDimension, smallerDimension/3-2);
-#else
return QSize(250, 75);
-#endif //Q_WS_S60
#endif //Q_WS_WINCE
}
@@ -265,7 +255,7 @@ QErrorMessage::QErrorMessage(QWidget * parent)
#endif
-#if defined(Q_WS_WINCE) || defined(Q_WS_S60)
+#if defined(Q_WS_WINCE)
d->ok->setFixedSize(0,0);
#endif
connect(d->ok, SIGNAL(clicked()), this, SLOT(accept()));
diff --git a/src/widgets/dialogs/qerrormessage.h b/src/widgets/dialogs/qerrormessage.h
index c43df749f7..085fa8eb6b 100644
--- a/src/widgets/dialogs/qerrormessage.h
+++ b/src/widgets/dialogs/qerrormessage.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_ERRORMESSAGE
diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp
index 2f49a226e9..db13cfea0f 100644
--- a/src/widgets/dialogs/qfiledialog.cpp
+++ b/src/widgets/dialogs/qfiledialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -67,11 +67,12 @@
#if defined(Q_OS_WINCE)
extern bool qt_priv_ptr_valid;
#endif
+#endif
#if defined(Q_OS_UNIX)
#include <pwd.h>
+#elif defined(Q_OS_WIN)
+# include <QtCore/qt_windows.h>
#endif
-#endif
-#include "qplatformdialoghelper_qpa.h"
QT_BEGIN_NAMESPACE
@@ -1097,15 +1098,6 @@ void QFileDialog::setNameFilter(const QString &filter)
setNameFilters(qt_make_filter_list(filter));
}
-/*!
- \obsolete
-
- Use setNameFilter() instead.
-*/
-void QFileDialog::setFilter(const QString &filter)
-{
- setNameFilter(filter);
-}
/*!
\property QFileDialog::nameFilterDetailsVisible
@@ -1178,16 +1170,6 @@ void QFileDialog::setNameFilters(const QStringList &filters)
}
/*!
- \obsolete
-
- Use setNameFilters() instead.
-*/
-void QFileDialog::setFilters(const QStringList &filters)
-{
- setNameFilters(filters);
-}
-
-/*!
\since 4.4
Returns the file type filters that are in operation on this file
@@ -1199,17 +1181,6 @@ QStringList QFileDialog::nameFilters() const
}
/*!
- \obsolete
-
- Use nameFilters() instead.
-*/
-
-QStringList QFileDialog::filters() const
-{
- return nameFilters();
-}
-
-/*!
\since 4.4
Sets the current file type \a filter. Multiple filters can be
@@ -1237,17 +1208,6 @@ void QFileDialog::selectNameFilter(const QString &filter)
}
/*!
- \obsolete
-
- Use selectNameFilter() instead.
-*/
-
-void QFileDialog::selectFilter(const QString &filter)
-{
- selectNameFilter(filter);
-}
-
-/*!
\since 4.4
Returns the filter that the user selected in the file dialog.
@@ -1264,16 +1224,6 @@ QString QFileDialog::selectedNameFilter() const
}
/*!
- \obsolete
-
- Use selectedNameFilter() instead.
-*/
-QString QFileDialog::selectedFilter() const
-{
- return selectedNameFilter();
-}
-
-/*!
\since 4.4
Returns the filter that is used when displaying files.
@@ -1437,6 +1387,25 @@ QLineEdit *QFileDialogPrivate::lineEdit() const {
return (QLineEdit*)qFileDialogUi->fileNameEdit;
}
+int QFileDialogPrivate::maxNameLength(const QString &path)
+{
+#if defined(Q_OS_UNIX)
+ return ::pathconf(QFile::encodeName(path).data(), _PC_NAME_MAX);
+#elif defined(Q_OS_WINCE)
+ Q_UNUSED(path);
+ return MAX_PATH;
+#elif defined(Q_OS_WIN)
+ DWORD maxLength;
+ const QString drive = path.left(3);
+ if (::GetVolumeInformation(reinterpret_cast<const wchar_t *>(drive.utf16()), NULL, 0, NULL, &maxLength, NULL, NULL, 0) == FALSE)
+ return -1;
+ return maxLength;
+#else
+ Q_UNUSED(path);
+#endif
+ return -1;
+}
+
/*
Sets the view root index to be the file system model index
*/
@@ -1723,25 +1692,6 @@ extern QStringList qt_win_get_open_file_names(const QFileDialogArgs &args,
extern QString qt_win_get_existing_directory(const QFileDialogArgs &args);
#endif
-/*
- For Symbian file dialogs
-*/
-#if defined(Q_WS_S60)
-extern QString qtSymbianGetOpenFileName(const QString &caption,
- const QString &dir,
- const QString &filter);
-
-extern QStringList qtSymbianGetOpenFileNames(const QString &caption,
- const QString &dir,
- const QString &filter);
-
-extern QString qtSymbianGetSaveFileName(const QString &caption,
- const QString &dir);
-
-extern QString qtSymbianGetExistingDirectory(const QString &caption,
- const QString &dir);
-#endif
-
/*!
This is a convenience static function that returns an existing file
selected by the user. If the user presses Cancel, it returns a null string.
@@ -1770,7 +1720,7 @@ extern QString qtSymbianGetExistingDirectory(const QString &caption,
The dialog's caption is set to \a caption. If \a caption is not specified
then a default caption will be used.
- On Windows, Mac OS X and Symbian^3, this static function will use the
+ On Windows, and Mac OS X, this static function will use the
native file dialog and not a QFileDialog.
On Windows the dialog will spin a blocking modal event loop that will not
@@ -1783,10 +1733,6 @@ extern QString qtSymbianGetExistingDirectory(const QString &caption,
\a options includes DontResolveSymlinks, the file dialog will treat
symlinks as regular directories.
- On Symbian^3 the parameter \a selectedFilter has no meaning and the
- \a options parameter is only used to define if the native file dialog is
- used.
-
\warning Do not delete \a parent during the execution of the dialog. If you
want to do this, you should create the dialog yourself using one of the
QFileDialog constructors.
@@ -1802,10 +1748,6 @@ QString QFileDialog::getOpenFileName(QWidget *parent,
{
if (qt_filedialog_open_filename_hook && !(options & DontUseNativeDialog))
return qt_filedialog_open_filename_hook(parent, caption, dir, filter, selectedFilter, options);
-#if defined(Q_WS_S60)
- if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog))
- return qtSymbianGetOpenFileName(caption, dir, filter);
-#endif
QFileDialogArgs args;
args.parent = parent;
args.caption = caption;
@@ -1826,7 +1768,7 @@ QString QFileDialog::getOpenFileName(QWidget *parent,
dialog.selectNameFilter(*selectedFilter);
if (dialog.exec() == QDialog::Accepted) {
if (selectedFilter)
- *selectedFilter = dialog.selectedFilter();
+ *selectedFilter = dialog.selectedNameFilter();
return dialog.selectedFiles().value(0);
}
return QString();
@@ -1856,7 +1798,7 @@ QString QFileDialog::getOpenFileName(QWidget *parent,
The dialog's caption is set to \a caption. If \a caption is not specified
then a default caption will be used.
- On Windows, Mac OS X and Symbian^3, this static function will use the
+ On Windows, and Mac OS X, this static function will use the
native file dialog and not a QFileDialog.
On Windows the dialog will spin a blocking modal event loop that will not
@@ -1875,10 +1817,6 @@ QString QFileDialog::getOpenFileName(QWidget *parent,
\snippet doc/src/snippets/code/src_gui_dialogs_qfiledialog.cpp 10
- On Symbian^3 the parameter \a selectedFilter has no meaning and the
- \a options parameter is only used to define if the native file dialog is
- used. On Symbian^3, this function can only return a single filename.
-
\warning Do not delete \a parent during the execution of the dialog. If you
want to do this, you should create the dialog yourself using one of the
QFileDialog constructors.
@@ -1894,10 +1832,6 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent,
{
if (qt_filedialog_open_filenames_hook && !(options & DontUseNativeDialog))
return qt_filedialog_open_filenames_hook(parent, caption, dir, filter, selectedFilter, options);
-#if defined(Q_WS_S60)
- if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog))
- return qtSymbianGetOpenFileNames(caption, dir, filter);
-#endif
QFileDialogArgs args;
args.parent = parent;
args.caption = caption;
@@ -1919,7 +1853,7 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent,
dialog.selectNameFilter(*selectedFilter);
if (dialog.exec() == QDialog::Accepted) {
if (selectedFilter)
- *selectedFilter = dialog.selectedFilter();
+ *selectedFilter = dialog.selectedNameFilter();
return dialog.selectedFiles();
}
return QStringList();
@@ -1955,7 +1889,7 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent,
The dialog's caption is set to \a caption. If \a caption is not specified,
a default caption will be used.
- On Windows, Mac OS X and Symbian^3, this static function will use the
+ On Windows, and Mac OS X, this static function will use the
native file dialog and not a QFileDialog.
On Windows the dialog will spin a blocking modal event loop that will not
@@ -1969,10 +1903,6 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent,
\a options includes DontResolveSymlinks the file dialog will treat symlinks
as regular directories.
- On Symbian^3 the parameters \a filter and \a selectedFilter have no
- meaning. The \a options parameter is only used to define if the native file
- dialog is used.
-
\warning Do not delete \a parent during the execution of the dialog. If you
want to do this, you should create the dialog yourself using one of the
QFileDialog constructors.
@@ -1988,10 +1918,6 @@ QString QFileDialog::getSaveFileName(QWidget *parent,
{
if (qt_filedialog_save_filename_hook && !(options & DontUseNativeDialog))
return qt_filedialog_save_filename_hook(parent, caption, dir, filter, selectedFilter, options);
-#if defined(Q_WS_S60)
- if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog))
- return qtSymbianGetSaveFileName(caption, dir);
-#endif
QFileDialogArgs args;
args.parent = parent;
args.caption = caption;
@@ -2014,7 +1940,7 @@ QString QFileDialog::getSaveFileName(QWidget *parent,
dialog.selectNameFilter(*selectedFilter);
if (dialog.exec() == QDialog::Accepted) {
if (selectedFilter)
- *selectedFilter = dialog.selectedFilter();
+ *selectedFilter = dialog.selectedNameFilter();
return dialog.selectedFiles().value(0);
}
@@ -2040,7 +1966,7 @@ QString QFileDialog::getSaveFileName(QWidget *parent,
pass. To ensure a native file dialog, \l{QFileDialog::}{ShowDirsOnly} must
be set.
- On Windows, Mac OS X and Symbian^3, this static function will use the
+ On Windows, and Mac OS X, this static function will use the
native file dialog and not a QFileDialog. On Windows CE, if the device has
no native file dialog, a QFileDialog will be used.
@@ -2054,9 +1980,6 @@ QString QFileDialog::getSaveFileName(QWidget *parent,
dispatch any QTimers, and if \a parent is not 0 then it will position the
dialog just below the parent's title bar.
- On Symbian^3 the \a options parameter is only used to define if the native
- file dialog is used.
-
\warning Do not delete \a parent during the execution of the dialog. If you
want to do this, you should create the dialog yourself using one of the
QFileDialog constructors.
@@ -2070,10 +1993,6 @@ QString QFileDialog::getExistingDirectory(QWidget *parent,
{
if (qt_filedialog_existing_directory_hook && !(options & DontUseNativeDialog))
return qt_filedialog_existing_directory_hook(parent, caption, dir, options);
-#if defined(Q_WS_S60)
- if (QSysInfo::s60Version() > QSysInfo::SV_S60_5_0 && !(options & DontUseNativeDialog))
- return qtSymbianGetExistingDirectory(caption, dir);
-#endif
QFileDialogArgs args;
args.parent = parent;
args.caption = caption;
@@ -3437,10 +3356,7 @@ QStringList QFSCompleter::splitPath(const QString &path) const
QString pathCopy = QDir::toNativeSeparators(path);
QString sep = QDir::separator();
-#if defined(Q_OS_SYMBIAN)
- if (pathCopy == QLatin1String("\\"))
- return QStringList(pathCopy);
-#elif defined(Q_OS_WIN)
+#if defined(Q_OS_WIN)
if (pathCopy == QLatin1String("\\") || pathCopy == QLatin1String("\\\\"))
return QStringList(pathCopy);
QString doubleSlash(QLatin1String("\\\\"));
@@ -3463,11 +3379,7 @@ QStringList QFSCompleter::splitPath(const QString &path) const
QRegExp re(QLatin1Char('[') + QRegExp::escape(sep) + QLatin1Char(']'));
-#if defined(Q_OS_SYMBIAN)
- QStringList parts = pathCopy.split(re, QString::SkipEmptyParts);
- if (pathCopy.endsWith(sep))
- parts.append(QString());
-#elif defined(Q_OS_WIN)
+#if defined(Q_OS_WIN)
QStringList parts = pathCopy.split(re, QString::SkipEmptyParts);
if (!doubleSlash.isEmpty() && !parts.isEmpty())
parts[0].prepend(doubleSlash);
diff --git a/src/widgets/dialogs/qfiledialog.h b/src/widgets/dialogs/qfiledialog.h
index ac011e634a..c5298b1227 100644
--- a/src/widgets/dialogs/qfiledialog.h
+++ b/src/widgets/dialogs/qfiledialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_FILEDIALOG
@@ -85,7 +84,6 @@ public:
enum AcceptMode { AcceptOpen, AcceptSave };
enum DialogLabel { LookIn, FileName, FileType, Accept, Reject };
- // ### Rename to FileDialogOption and FileDialogOptions for Qt 5.0
enum Option
{
ShowDirsOnly = 0x00000001,
@@ -112,13 +110,6 @@ public:
void selectFile(const QString &filename);
QStringList selectedFiles() const;
-#ifdef QT_DEPRECATED
- QT_DEPRECATED void setFilter(const QString &filter);
- QT_DEPRECATED void setFilters(const QStringList &filters);
- QT_DEPRECATED QStringList filters() const;
- QT_DEPRECATED void selectFilter(const QString &filter);
- QT_DEPRECATED QString selectedFilter() const;
-#endif
void setNameFilterDetailsVisible(bool enabled);
bool isNameFilterDetailsVisible() const;
diff --git a/src/widgets/dialogs/qfiledialog.ui b/src/widgets/dialogs/qfiledialog.ui
index ff86e9cc13..76dac823ee 100644
--- a/src/widgets/dialogs/qfiledialog.ui
+++ b/src/widgets/dialogs/qfiledialog.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/src/widgets/dialogs/qfiledialog_embedded.ui b/src/widgets/dialogs/qfiledialog_embedded.ui
index 5eb9f52a12..deb19c1999 100644
--- a/src/widgets/dialogs/qfiledialog_embedded.ui
+++ b/src/widgets/dialogs/qfiledialog_embedded.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/src/widgets/dialogs/qfiledialog_mac.mm b/src/widgets/dialogs/qfiledialog_mac.mm
index fe3c41a4b7..01ec736550 100644
--- a/src/widgets/dialogs/qfiledialog_mac.mm
+++ b/src/widgets/dialogs/qfiledialog_mac.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/dialogs/qfiledialog_p.h b/src/widgets/dialogs/qfiledialog_p.h
index 30c73ade7b..a66ee757f6 100644
--- a/src/widgets/dialogs/qfiledialog_p.h
+++ b/src/widgets/dialogs/qfiledialog_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -143,25 +143,7 @@ public:
QLineEdit *lineEdit() const;
- int maxNameLength(const QString &path) {
-#if defined(Q_OS_UNIX)
- return ::pathconf(QFile::encodeName(path).data(), _PC_NAME_MAX);
-#elif defined(Q_OS_WIN)
-#ifndef Q_OS_WINCE
- DWORD maxLength;
- QString drive = path.left(3);
- if (::GetVolumeInformation(reinterpret_cast<const wchar_t *>(drive.utf16()), NULL, 0, NULL, &maxLength, NULL, NULL, 0) == FALSE)
- return -1;
- return maxLength;
-#else
- Q_UNUSED(path);
- return MAX_PATH;
-#endif //Q_OS_WINCE
-#else
- Q_UNUSED(path);
-#endif
- return -1;
- }
+ static int maxNameLength(const QString &path);
QString basename(const QString &path) const
{
@@ -187,7 +169,7 @@ public:
static inline QString toInternal(const QString &path)
{
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
QString n(path);
n.replace(QLatin1Char('\\'), QLatin1Char('/'));
#if defined(Q_OS_WINCE)
diff --git a/src/widgets/dialogs/qfileinfogatherer.cpp b/src/widgets/dialogs/qfileinfogatherer.cpp
index bce8b3ecc1..451376b3c7 100644
--- a/src/widgets/dialogs/qfileinfogatherer.cpp
+++ b/src/widgets/dialogs/qfileinfogatherer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -264,8 +264,6 @@ QString QFileInfoGatherer::translateDriveName(const QFileInfo &drive) const
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
if (driveName.startsWith(QLatin1Char('/'))) // UNC host
return drive.fileName();
-#endif
-#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
if (driveName.endsWith(QLatin1Char('/')))
driveName.chop(1);
#endif
diff --git a/src/widgets/dialogs/qfileinfogatherer_p.h b/src/widgets/dialogs/qfileinfogatherer_p.h
index 3621c6b6ad..3e5d1be384 100644
--- a/src/widgets/dialogs/qfileinfogatherer_p.h
+++ b/src/widgets/dialogs/qfileinfogatherer_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/dialogs/qfilesystemmodel.cpp b/src/widgets/dialogs/qfilesystemmodel.cpp
index e44a9ea882..7ea4302a56 100644
--- a/src/widgets/dialogs/qfilesystemmodel.cpp
+++ b/src/widgets/dialogs/qfilesystemmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,10 +49,8 @@
#include <qapplication.h>
#ifdef Q_OS_WIN
-#include <qt_windows.h>
-#endif
-#ifdef Q_OS_WIN32
-#include <QtCore/QVarLengthArray>
+# include <QtCore/QVarLengthArray>
+# include <qt_windows.h>
#endif
QT_BEGIN_NAMESPACE
@@ -367,7 +365,7 @@ QFileSystemModelPrivate::QFileSystemNode *QFileSystemModelPrivate::node(const QS
// ### TODO can we use bool QAbstractFileEngine::caseSensitive() const?
QStringList pathElements = absolutePath.split(QLatin1Char('/'), QString::SkipEmptyParts);
if ((pathElements.isEmpty())
-#if (!defined(Q_OS_WIN) || defined(Q_OS_WINCE)) && !defined(Q_OS_SYMBIAN)
+#if !defined(Q_OS_WIN) || defined(Q_OS_WINCE)
&& QDir::fromNativeSeparators(longPath) != QLatin1String("/")
#endif
)
@@ -399,11 +397,9 @@ QFileSystemModelPrivate::QFileSystemNode *QFileSystemModelPrivate::node(const QS
} else
#endif
-#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
{
if (!pathElements.at(0).contains(QLatin1String(":"))) {
- // The reason we express it like this instead of with anonymous, temporary
- // variables, is to workaround a compiler crash with Q_CC_NOKIAX86.
QString rootPath = QDir(longPath).rootPath();
pathElements.prepend(rootPath);
}
@@ -1314,7 +1310,7 @@ QString QFileSystemModelPrivate::filePath(const QModelIndex &index) const
if ((fullPath.length() > 2) && fullPath[0] == QLatin1Char('/') && fullPath[1] == QLatin1Char('/'))
fullPath = fullPath.mid(1);
#endif
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
if (fullPath.length() == 2 && fullPath.endsWith(QLatin1Char(':')))
fullPath.append(QLatin1Char('/'));
#endif
@@ -1655,25 +1651,13 @@ void QFileSystemModelPrivate::_q_directoryChanged(const QString &directory, cons
if (parentNode->children.count() == 0)
return;
QStringList toRemove;
-#if defined(Q_OS_SYMBIAN)
- // Filename case must be exact in qBinaryFind below, so create a list of all lowercase names.
- QStringList newFiles;
- for(int i = 0; i < files.size(); i++) {
- newFiles << files.at(i).toLower();
- }
-#else
QStringList newFiles = files;
-#endif
qSort(newFiles.begin(), newFiles.end());
QHash<QString, QFileSystemNode*>::const_iterator i = parentNode->children.constBegin();
while (i != parentNode->children.constEnd()) {
QStringList::iterator iterator;
iterator = qBinaryFind(newFiles.begin(), newFiles.end(),
-#if defined(Q_OS_SYMBIAN)
- i.value()->fileName.toLower());
-#else
i.value()->fileName);
-#endif
if (iterator == newFiles.end()) {
toRemove.append(i.value()->fileName);
}
@@ -1978,8 +1962,8 @@ bool QFileSystemModelPrivate::filtersAcceptsNode(const QFileSystemNode *node) co
const bool hideHidden = !(filters & QDir::Hidden);
const bool hideSystem = !(filters & QDir::System);
const bool hideSymlinks = (filters & QDir::NoSymLinks);
- const bool hideDot = (filters & QDir::NoDot) || (filters & QDir::NoDotAndDotDot); // ### Qt5: simplify (because NoDotAndDotDot=NoDot|NoDotDot)
- const bool hideDotDot = (filters & QDir::NoDotDot) || (filters & QDir::NoDotAndDotDot); // ### Qt5: simplify (because NoDotAndDotDot=NoDot|NoDotDot)
+ const bool hideDot = (filters & QDir::NoDot);
+ const bool hideDotDot = (filters & QDir::NoDotDot);
// Note that we match the behavior of entryList and not QFileInfo on this and this
// incompatibility won't be fixed until Qt 5 at least
diff --git a/src/widgets/dialogs/qfilesystemmodel.h b/src/widgets/dialogs/qfilesystemmodel.h
index 09e8d9d529..5a9139266d 100644
--- a/src/widgets/dialogs/qfilesystemmodel.h
+++ b/src/widgets/dialogs/qfilesystemmodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_FILESYSTEMMODEL
diff --git a/src/widgets/dialogs/qfilesystemmodel_p.h b/src/widgets/dialogs/qfilesystemmodel_p.h
index 2ab7838dad..0e982140b5 100644
--- a/src/widgets/dialogs/qfilesystemmodel_p.h
+++ b/src/widgets/dialogs/qfilesystemmodel_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/dialogs/qfontdialog.cpp b/src/widgets/dialogs/qfontdialog.cpp
index c8fb36d9d6..2402f2a955 100644
--- a/src/widgets/dialogs/qfontdialog.cpp
+++ b/src/widgets/dialogs/qfontdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -65,10 +65,6 @@
#include <private/qdialog_p.h>
#include <private/qfont_p.h>
-#if defined(Q_WS_S60)
-#include <QtWidgets/qdesktopwidget.h>
-#endif
-
QT_BEGIN_NAMESPACE
class QFontListView : public QListView
@@ -322,8 +318,6 @@ void QFontDialogPrivate::init()
#if defined(Q_WS_WINCE)
q->resize(180, 120);
-#elif defined(Q_WS_S60)
- q->resize(QApplication::desktop()->availableGeometry(QCursor::pos()).size());
#else
q->resize(500, 360);
#endif // Q_WS_WINCE
@@ -385,23 +379,6 @@ QFont QFontDialog::getFont(bool *ok, const QFont &initial, QWidget *parent, cons
/*!
\overload
- \since 4.5
-*/
-QFont QFontDialog::getFont(bool *ok, const QFont &initial, QWidget *parent, const QString &title)
-{
- return QFontDialogPrivate::getFont(ok, initial, parent, title, 0);
-}
-
-/*!
- \overload
-*/
-QFont QFontDialog::getFont(bool *ok, const QFont &initial, QWidget *parent)
-{
- return QFontDialogPrivate::getFont(ok, initial, parent, QString(), 0);
-}
-
-/*!
- \overload
Executes a modal font dialog and returns a font.
@@ -782,11 +759,7 @@ void QFontDialogPrivate::retranslateStrings()
familyAccel->setText(QFontDialog::tr("&Font"));
styleAccel->setText(QFontDialog::tr("Font st&yle"));
sizeAccel->setText(QFontDialog::tr("&Size"));
-#ifndef Q_WS_S60
- // Removed the title due to lack of screen estate in small S60 screen.
- // The effects are descriptive without a title (strikeout, underline).
effects->setTitle(QFontDialog::tr("Effects"));
-#endif
strikeout->setText(QFontDialog::tr("Stri&keout"));
underline->setText(QFontDialog::tr("&Underline"));
sample->setTitle(QFontDialog::tr("Sample"));
diff --git a/src/widgets/dialogs/qfontdialog.h b/src/widgets/dialogs/qfontdialog.h
index f5353d512f..c5f654a50a 100644
--- a/src/widgets/dialogs/qfontdialog.h
+++ b/src/widgets/dialogs/qfontdialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_FONTDIALOG
@@ -97,13 +96,9 @@ public:
void setVisible(bool visible);
- // ### Qt 5: merge overloads
- static QFont getFont(bool *ok, const QFont &initial, QWidget *parent, const QString &title,
- FontDialogOptions options);
- static QFont getFont(bool *ok, const QFont &initial, QWidget *parent, const QString &title);
- static QFont getFont(bool *ok, const QFont &initial, QWidget *parent = 0);
static QFont getFont(bool *ok, QWidget *parent = 0);
-
+ static QFont getFont(bool *ok, const QFont &initial, QWidget *parent = 0, const QString &title = QString(),
+ FontDialogOptions options = 0);
Q_SIGNALS:
void currentFontChanged(const QFont &font);
@@ -112,11 +107,9 @@ Q_SIGNALS:
protected:
void changeEvent(QEvent *event);
void done(int result);
-
-private:
- // ### Qt 5: make protected
bool eventFilter(QObject *object, QEvent *event);
+private:
Q_DISABLE_COPY(QFontDialog)
Q_PRIVATE_SLOT(d_func(), void _q_sizeChanged(const QString &))
diff --git a/src/widgets/dialogs/qfontdialog_mac.mm b/src/widgets/dialogs/qfontdialog_mac.mm
index 71b142cd48..bf8b88a0c9 100644
--- a/src/widgets/dialogs/qfontdialog_mac.mm
+++ b/src/widgets/dialogs/qfontdialog_mac.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/dialogs/qfontdialog_p.h b/src/widgets/dialogs/qfontdialog_p.h
index 506d52b0b6..9bf00d2657 100644
--- a/src/widgets/dialogs/qfontdialog_p.h
+++ b/src/widgets/dialogs/qfontdialog_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/dialogs/qfscompleter_p.h b/src/widgets/dialogs/qfscompleter_p.h
index c25bcf20cb..eae972aa32 100644
--- a/src/widgets/dialogs/qfscompleter_p.h
+++ b/src/widgets/dialogs/qfscompleter_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -66,7 +66,7 @@ public:
QFSCompleter(QFileSystemModel *model, QObject *parent = 0)
: QCompleter(model, parent), proxyModel(0), sourceModel(model)
{
-#if defined(Q_OS_WIN) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN)
setCaseSensitivity(Qt::CaseInsensitive);
#endif
}
diff --git a/src/widgets/dialogs/qinputdialog.cpp b/src/widgets/dialogs/qinputdialog.cpp
index dc7e30368b..9cf41003f5 100644
--- a/src/widgets/dialogs/qinputdialog.cpp
+++ b/src/widgets/dialogs/qinputdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1173,17 +1173,6 @@ QString QInputDialog::getText(QWidget *parent, const QString &title, const QStri
}
/*!
- \internal
-*/
-// ### Qt 5: Use only the version above.
-QString QInputDialog::getText(QWidget *parent, const QString &title, const QString &label,
- QLineEdit::EchoMode mode, const QString &text, bool *ok,
- Qt::WindowFlags flags)
-{
- return getText(parent, title, label, mode, text, ok, flags, Qt::ImhNone);
-}
-
-/*!
\since 4.5
Static convenience function to get an integer input from the user.
@@ -1342,29 +1331,6 @@ QString QInputDialog::getItem(QWidget *parent, const QString &title, const QStri
}
/*!
- \internal
-*/
-// ### Qt 5: Use only the version above.
-QString QInputDialog::getItem(QWidget *parent, const QString &title, const QString &label,
- const QStringList &items, int current, bool editable, bool *ok,
- Qt::WindowFlags flags)
-{
- return getItem(parent, title, label, items, current, editable, ok, flags, Qt::ImhNone);
-}
-
-/*!
- \obsolete
-
- Use getInt() instead.
-*/
-int QInputDialog::getInteger(QWidget *parent, const QString &title, const QString &label,
- int value, int min, int max, int step, bool *ok,
- Qt::WindowFlags flags)
-{
- return getInt(parent, title, label, value, min, max, step, ok, flags);
-}
-
-/*!
\fn QString QInputDialog::getText(const QString &title, const QString &label,
QLineEdit::EchoMode echo = QLineEdit::Normal,
const QString &text = QString(), bool *ok = 0,
@@ -1377,19 +1343,6 @@ int QInputDialog::getInteger(QWidget *parent, const QString &title, const QStrin
*/
/*!
- \fn int QInputDialog::getInteger(const QString &title, const QString &label, int value = 0,
- int min = -2147483647, int max = 2147483647,
- int step = 1, bool *ok = 0,
- QWidget *parent = 0, const char *name = 0, Qt::WindowFlags flags = 0)
-
-
- Call getInteger(\a parent, \a title, \a label, \a value, \a
- min, \a max, \a step, \a ok, \a flags) instead.
-
- The \a name parameter is ignored.
-*/
-
-/*!
\fn double QInputDialog::getDouble(const QString &title, const QString &label, double value = 0,
double min = -2147483647, double max = 2147483647,
int decimals = 1, bool *ok = 0,
diff --git a/src/widgets/dialogs/qinputdialog.h b/src/widgets/dialogs/qinputdialog.h
index 164e0d1014..bf6885cccc 100644
--- a/src/widgets/dialogs/qinputdialog.h
+++ b/src/widgets/dialogs/qinputdialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_INPUTDIALOG
@@ -167,7 +166,6 @@ public:
void setVisible(bool visible);
-#ifdef Q_QDOC
static QString getText(QWidget *parent, const QString &title, const QString &label,
QLineEdit::EchoMode echo = QLineEdit::Normal,
const QString &text = QString(), bool *ok = 0, Qt::WindowFlags flags = 0,
@@ -176,22 +174,7 @@ public:
const QStringList &items, int current = 0, bool editable = true,
bool *ok = 0, Qt::WindowFlags flags = 0,
Qt::InputMethodHints inputMethodHints = Qt::ImhNone);
-#else
- static QString getText(QWidget *parent, const QString &title, const QString &label,
- QLineEdit::EchoMode echo = QLineEdit::Normal,
- const QString &text = QString(), bool *ok = 0, Qt::WindowFlags flags = 0);
- static QString getItem(QWidget *parent, const QString &title, const QString &label,
- const QStringList &items, int current = 0, bool editable = true,
- bool *ok = 0, Qt::WindowFlags flags = 0);
- static QString getText(QWidget *parent, const QString &title, const QString &label,
- QLineEdit::EchoMode echo,
- const QString &text, bool *ok, Qt::WindowFlags flags,
- Qt::InputMethodHints inputMethodHints);
- static QString getItem(QWidget *parent, const QString &title, const QString &label,
- const QStringList &items, int current, bool editable,
- bool *ok, Qt::WindowFlags flags,
- Qt::InputMethodHints inputMethodHints);
-#endif
+
static int getInt(QWidget *parent, const QString &title, const QString &label, int value = 0,
int minValue = -2147483647, int maxValue = 2147483647,
int step = 1, bool *ok = 0, Qt::WindowFlags flags = 0);
@@ -199,11 +182,14 @@ public:
double minValue = -2147483647, double maxValue = 2147483647,
int decimals = 1, bool *ok = 0, Qt::WindowFlags flags = 0);
- // obsolete
- static int getInteger(QWidget *parent, const QString &title, const QString &label, int value = 0,
+#if QT_DEPRECATED_SINCE(5, 0)
+ QT_DEPRECATED static inline int getInteger(QWidget *parent, const QString &title, const QString &label, int value = 0,
int minValue = -2147483647, int maxValue = 2147483647,
- int step = 1, bool *ok = 0, Qt::WindowFlags flags = 0);
-
+ int step = 1, bool *ok = 0, Qt::WindowFlags flags = 0)
+ {
+ return getInt(parent, title, label, value, minValue, maxValue, step, ok, flags);
+ }
+#endif
Q_SIGNALS:
// ### emit signals!
@@ -214,9 +200,8 @@ Q_SIGNALS:
void doubleValueChanged(double value);
void doubleValueSelected(double value);
-
public:
- void done(int result); // ### Qt 5: Make protected.
+ void done(int result);
private:
Q_DISABLE_COPY(QInputDialog)
diff --git a/src/widgets/dialogs/qmessagebox.cpp b/src/widgets/dialogs/qmessagebox.cpp
index fdba17d0ce..0f57fa67e1 100644
--- a/src/widgets/dialogs/qmessagebox.cpp
+++ b/src/widgets/dialogs/qmessagebox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -65,20 +65,23 @@
#include <QtGui/qfontmetrics.h>
#include <QtGui/qclipboard.h>
-#ifndef QT_NO_STYLE_S60
-#include <qs60style.h>
+#ifdef Q_OS_WIN
+# include <QtCore/qt_windows.h>
+# include <QtGui/QPlatformNativeInterface>
#endif
-#ifdef Q_WS_WINCE
-extern bool qt_wince_is_mobile(); //defined in qguifunctions_wince.cpp
-extern bool qt_wince_is_smartphone();//defined in qguifunctions_wince.cpp
-extern bool qt_wince_is_pocket_pc(); //defined in qguifunctions_wince.cpp
+QT_BEGIN_NAMESPACE
-#include "qguifunctions_wince.h"
+#ifdef Q_OS_WIN
+HMENU qt_getWindowsSystemMenu(const QWidget *w)
+{
+ if (QWindow *window = QApplicationPrivate::windowForWidget(w))
+ if (void *handle = QGuiApplication::platformNativeInterface()->nativeResourceForWindow("handle", window))
+ return GetSystemMenu(reinterpret_cast<HWND>(handle), FALSE);
+ return 0;
+}
#endif
-QT_BEGIN_NAMESPACE
-
enum Button { Old_Ok = 1, Old_Cancel = 2, Old_Yes = 3, Old_No = 4, Old_Abort = 5, Old_Retry = 6,
Old_Ignore = 7, Old_YesAll = 8, Old_NoAll = 9, Old_ButtonMask = 0xFF,
NewButtonMask = 0xFFFFFC00 };
@@ -346,15 +349,6 @@ void QMessageBoxPrivate::updateSize()
width = hardLimit;
}
}
-#ifdef Q_WS_S60
- // in S60 portait messageBoxes should always occupy maximum width
- if (QApplication::desktop()->size().height() > QApplication::desktop()->size().width()){
- width = hardLimit;
- } else {
- // in landscape the messageBoxes should be of same width as in portrait
- width = qMin(QApplication::desktop()->size().height(), hardLimit);
- }
-#endif
if (informativeLabel) {
label->setSizePolicy(QSizePolicy::Ignored, QSizePolicy::Ignored);
@@ -385,15 +379,6 @@ void QMessageBoxPrivate::updateSize()
? layout->totalHeightForWidth(width)
: layout->totalMinimumSize().height();
-#ifndef QT_NO_STYLE_S60
- QS60Style *s60Style = 0;
- s60Style = qobject_cast<QS60Style *>(QApplication::style());
-
- //use custom pixel metric to deduce the minimum height of the messagebox
- if (s60Style)
- height = qMax(height, s60Style->pixelMetric((QStyle::PixelMetric)PM_MessageBoxHeight));
-#endif
-
q->setFixedSize(width, height);
QCoreApplication::removePostedEvents(q, QEvent::LayoutRequest);
}
@@ -1478,15 +1463,12 @@ void QMessageBox::showEvent(QShowEvent *e)
d->updateSize();
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::Alert);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::Alert, this, 0));
#endif
-#ifdef Q_WS_WIN
- HMENU systemMenu = GetSystemMenu((HWND)winId(), FALSE);
- if (!d->detectedEscapeButton) {
- EnableMenuItem(systemMenu, SC_CLOSE, MF_BYCOMMAND|MF_GRAYED);
- }
- else {
- EnableMenuItem(systemMenu, SC_CLOSE, MF_BYCOMMAND|MF_ENABLED);
+#ifdef Q_OS_WIN
+ if (const HMENU systemMenu = qt_getWindowsSystemMenu(this)) {
+ EnableMenuItem(systemMenu, SC_CLOSE, d->detectedEscapeButton ?
+ MF_BYCOMMAND|MF_ENABLED : MF_BYCOMMAND|MF_GRAYED);
}
#endif
QDialog::showEvent(e);
@@ -1810,15 +1792,6 @@ void QMessageBox::aboutQt(QWidget *parent, const QString &title)
#endif
}
-/*!
- \internal
-*/
-QSize QMessageBox::sizeHint() const
-{
- // ### Qt 5: remove
- return QDialog::sizeHint();
-}
-
/////////////////////////////////////////////////////////////////////////////////////////
// Source and binary compatibility routines for 4.0 and 4.1
diff --git a/src/widgets/dialogs/qmessagebox.h b/src/widgets/dialogs/qmessagebox.h
index 4774389a69..b42681a565 100644
--- a/src/widgets/dialogs/qmessagebox.h
+++ b/src/widgets/dialogs/qmessagebox.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_MESSAGEBOX
@@ -62,7 +61,6 @@ class Q_WIDGETS_EXPORT QMessageBox : public QDialog
Q_ENUMS(Icon)
Q_FLAGS(StandardButtons)
Q_PROPERTY(QString text READ text WRITE setText)
- // ### Qt 5: Rename 'icon' 'standardIcon' and 'iconPixmap' 'icon' (and use QIcon?)
Q_PROPERTY(Icon icon READ icon WRITE setIcon)
Q_PROPERTY(QPixmap iconPixmap READ iconPixmap WRITE setIconPixmap)
Q_PROPERTY(Qt::TextFormat textFormat READ textFormat WRITE setTextFormat)
@@ -191,10 +189,8 @@ public:
static StandardButton information(QWidget *parent, const QString &title,
const QString &text, StandardButtons buttons = Ok,
StandardButton defaultButton = NoButton);
- // ### Qt 5: Replace Ok with Yes|No in question() function.
- // Also consider if Ok == Yes and Cancel == No.
static StandardButton question(QWidget *parent, const QString &title,
- const QString &text, StandardButtons buttons = Ok,
+ const QString &text, StandardButtons buttons = StandardButtons(Yes | No),
StandardButton defaultButton = NoButton);
static StandardButton warning(QWidget *parent, const QString &title,
const QString &text, StandardButtons buttons = Ok,
@@ -205,8 +201,6 @@ public:
static void about(QWidget *parent, const QString &title, const QString &text);
static void aboutQt(QWidget *parent, const QString &title = QString());
- QSize sizeHint() const;
-
// the following functions are obsolete:
QMessageBox(const QString &title, const QString &text, Icon icon,
diff --git a/src/widgets/dialogs/qnspanelproxy_mac.mm b/src/widgets/dialogs/qnspanelproxy_mac.mm
index 4f171eab74..403c3edc24 100644
--- a/src/widgets/dialogs/qnspanelproxy_mac.mm
+++ b/src/widgets/dialogs/qnspanelproxy_mac.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/dialogs/qprogressdialog.cpp b/src/widgets/dialogs/qprogressdialog.cpp
index 3cf576462d..f39a7b63ec 100644
--- a/src/widgets/dialogs/qprogressdialog.cpp
+++ b/src/widgets/dialogs/qprogressdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,10 +60,6 @@
#if defined(QT_SOFTKEYS_ENABLED)
#include <qaction.h>
#endif
-#ifdef Q_WS_S60
-#include <QtWidgets/qdesktopwidget.h>
-#endif
-
QT_BEGIN_NAMESPACE
@@ -730,14 +726,7 @@ QSize QProgressDialog::sizeHint() const
int h = margin * 2 + bh.height() + sh.height() + spacing;
if (d->cancel)
h += d->cancel->sizeHint().height() + spacing;
-#ifdef Q_WS_S60
- if (QApplication::desktop()->size().height() > QApplication::desktop()->size().width())
- return QSize(qMax(QApplication::desktop()->size().width(), sh.width() + 2 * margin), h);
- else
- return QSize(qMax(QApplication::desktop()->size().height(), sh.width() + 2 * margin), h);
-#else
return QSize(qMax(200, sh.width() + 2 * margin), h);
-#endif
}
/*!\reimp
diff --git a/src/widgets/dialogs/qprogressdialog.h b/src/widgets/dialogs/qprogressdialog.h
index 6089de3f80..41fa821bb0 100644
--- a/src/widgets/dialogs/qprogressdialog.h
+++ b/src/widgets/dialogs/qprogressdialog.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_PROGRESSDIALOG
diff --git a/src/widgets/dialogs/qsidebar.cpp b/src/widgets/dialogs/qsidebar.cpp
index b62afec9bf..00f60f7e77 100644
--- a/src/widgets/dialogs/qsidebar.cpp
+++ b/src/widgets/dialogs/qsidebar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/dialogs/qsidebar_p.h b/src/widgets/dialogs/qsidebar_p.h
index 265408b4ef..d19ad97639 100644
--- a/src/widgets/dialogs/qsidebar_p.h
+++ b/src/widgets/dialogs/qsidebar_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/dialogs/qwizard.cpp b/src/widgets/dialogs/qwizard.cpp
index dbdff5e34d..629b6828b7 100644
--- a/src/widgets/dialogs/qwizard.cpp
+++ b/src/widgets/dialogs/qwizard.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -2975,11 +2975,7 @@ QSize QWizard::sizeHint() const
{
Q_D(const QWizard);
QSize result = d->mainLayout->totalSizeHint();
-#ifdef Q_WS_S60
- QSize extra(QApplication::desktop()->availableGeometry(QCursor::pos()).size());
-#else
QSize extra(500, 360);
-#endif
if (d->wizStyle == MacStyle && d->current != -1) {
QSize pixmap(currentPage()->pixmap(BackgroundPixmap).size());
extra.setWidth(616);
@@ -3205,16 +3201,17 @@ void QWizard::paintEvent(QPaintEvent * event)
#endif
}
-#if defined(Q_WS_WIN)
+#if defined(Q_OS_WIN)
/*!
\reimp
*/
-bool QWizard::winEvent(MSG *message, long *result)
+bool QWizard::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
#if !defined(QT_NO_STYLE_WINDOWSVISTA)
Q_D(QWizard);
- if (d->isVistaThemeEnabled()) {
- const bool winEventResult = d->vistaHelper->handleWinEvent(message, result);
+ if (d->isVistaThemeEnabled() && eventType == QByteArrayLiteral("windows_generic_MSG")) {
+ MSG *windowsMessage = static_cast<MSG *>(message);
+ const bool winEventResult = d->vistaHelper->handleWinEvent(windowsMessage, result);
if (QVistaHelper::vistaState() != d->vistaState) {
d->vistaState = QVistaHelper::vistaState();
d->vistaStateChanged = true;
@@ -3222,10 +3219,10 @@ bool QWizard::winEvent(MSG *message, long *result)
}
return winEventResult;
} else {
- return QDialog::winEvent(message, result);
+ return QDialog::nativeEvent(eventType, message, result);
}
#else
- return QDialog::winEvent(message, result);
+ return QDialog::nativeEvent(eventType, message, result);
#endif
}
#endif
diff --git a/src/widgets/dialogs/qwizard.h b/src/widgets/dialogs/qwizard.h
index f9af57c0b1..caa9d5e648 100644
--- a/src/widgets/dialogs/qwizard.h
+++ b/src/widgets/dialogs/qwizard.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_WIZARD
@@ -190,8 +189,8 @@ protected:
bool event(QEvent *event);
void resizeEvent(QResizeEvent *event);
void paintEvent(QPaintEvent *event);
-#if defined(Q_WS_WIN)
- bool winEvent(MSG * message, long * result);
+#ifdef Q_OS_WIN
+ bool nativeEvent(const QByteArray &eventType, void * message, long * result);
#endif
void done(int result);
virtual void initializePage(int id);
diff --git a/src/widgets/dialogs/qwizard_win.cpp b/src/widgets/dialogs/qwizard_win.cpp
index 06640a5864..2c4c738681 100644
--- a/src/widgets/dialogs/qwizard_win.cpp
+++ b/src/widgets/dialogs/qwizard_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -318,10 +318,10 @@ bool QVistaHelper::setDWMTitleBar(TitleBarChangeType type)
return value;
}
+Q_GUI_EXPORT HICON qt_pixmapToWinHICON(const QPixmap &);
+
void QVistaHelper::drawTitleBar(QPainter *painter)
{
- Q_GUI_EXPORT HICON qt_pixmapToWinHICON(const QPixmap &);
-
Q_ASSERT(backButton_);
QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface();
QBackingStore *backingStore = backButton_->backingStore();
@@ -399,12 +399,13 @@ bool QVistaHelper::winEvent(MSG* msg, long* result)
*result = DefWindowProc(msg->hwnd, msg->message, msg->wParam, msg->lParam);
break;
}
- case WM_NCCALCSIZE: {
- NCCALCSIZE_PARAMS* lpncsp = (NCCALCSIZE_PARAMS*)msg->lParam;
- *result = DefWindowProc(msg->hwnd, msg->message, msg->wParam, msg->lParam);
- lpncsp->rgrc[0].top -= (vistaState() == VistaAero ? titleBarSize() : 0);
- break;
- }
+// case WM_NCCALCSIZE: { #fixme: If the frame size is changed, it needs to be communicated to the QWindow.
+// NCCALCSIZE_PARAMS* lpncsp = (NCCALCSIZE_PARAMS*)msg->lParam;
+// *result = DefWindowProc(msg->hwnd, msg->message, msg->wParam, msg->lParam);
+// lpncsp->rgrc[0].top -= (vistaState() == VistaAero ? titleBarSize() : 0);
+//
+// break;
+// }
default:
retval = false;
}
@@ -480,8 +481,8 @@ bool QVistaHelper::handleWinEvent(MSG *message, long *result)
if (wizard->wizardStyle() == QWizard::AeroStyle && vistaState() == VistaAero) {
status = winEvent(message, result);
if (message->message == WM_NCCALCSIZE) {
- if (status)
- collapseTopFrameStrut();
+// if (status) #fixme
+// collapseTopFrameStrut();
} else if (message->message == WM_NCPAINT) {
wizard->update();
}
diff --git a/src/widgets/dialogs/qwizard_win_p.h b/src/widgets/dialogs/qwizard_win_p.h
index ab16d293af..80b5fd8241 100644
--- a/src/widgets/dialogs/qwizard_win_p.h
+++ b/src/widgets/dialogs/qwizard_win_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,12 +56,12 @@
#ifndef QT_NO_WIZARD
#ifndef QT_NO_STYLE_WINDOWSVISTA
-#include <qt_windows.h>
#include <qobject.h>
#include <qwidget.h>
#include <qabstractbutton.h>
#include <QtWidgets/private/qwidget_p.h>
#include <QtWidgets/private/qstylehelper_p.h>
+#include <qt_windows.h>
QT_BEGIN_NAMESPACE
diff --git a/src/widgets/effects/qgraphicseffect.cpp b/src/widgets/effects/qgraphicseffect.cpp
index ac33bffd6c..f1b4cc80f9 100644
--- a/src/widgets/effects/qgraphicseffect.cpp
+++ b/src/widgets/effects/qgraphicseffect.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/effects/qgraphicseffect.h b/src/widgets/effects/qgraphicseffect.h
index e8e97aa7e7..94e00876ce 100644
--- a/src/widgets/effects/qgraphicseffect.h
+++ b/src/widgets/effects/qgraphicseffect.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QGraphicsItem;
class QStyleOption;
diff --git a/src/widgets/effects/qgraphicseffect_p.h b/src/widgets/effects/qgraphicseffect_p.h
index b2859f9a41..9dee34ca9e 100644
--- a/src/widgets/effects/qgraphicseffect_p.h
+++ b/src/widgets/effects/qgraphicseffect_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/effects/qpixmapfilter.cpp b/src/widgets/effects/qpixmapfilter.cpp
index 826bf2e93d..a141fa9e55 100644
--- a/src/widgets/effects/qpixmapfilter.cpp
+++ b/src/widgets/effects/qpixmapfilter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/effects/qpixmapfilter_p.h b/src/widgets/effects/qpixmapfilter_p.h
index 3f6ed069a1..158cbe84bb 100644
--- a/src/widgets/effects/qpixmapfilter_p.h
+++ b/src/widgets/effects/qpixmapfilter_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -62,7 +62,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPainter;
class QPlatformPixmap;
diff --git a/src/widgets/graphicsview/graphicsview.pri b/src/widgets/graphicsview/graphicsview.pri
index 547d7ce7ae..a0fc4bc8d3 100644
--- a/src/widgets/graphicsview/graphicsview.pri
+++ b/src/widgets/graphicsview/graphicsview.pri
@@ -9,6 +9,7 @@ HEADERS += graphicsview/qgraphicsgridlayout.h \
graphicsview/qgraphicslayoutitem_p.h \
graphicsview/qgraphicslinearlayout.h \
graphicsview/qgraphicsproxywidget.h \
+ graphicsview/qgraphicsproxywidget_p.h \
graphicsview/qgraphicsscene.h \
graphicsview/qgraphicsscene_bsp_p.h \
graphicsview/qgraphicsscene_p.h \
diff --git a/src/widgets/graphicsview/qgraph_p.h b/src/widgets/graphicsview/qgraph_p.h
index 676000ac3e..e41bf5a5da 100644
--- a/src/widgets/graphicsview/qgraph_p.h
+++ b/src/widgets/graphicsview/qgraph_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicsanchorlayout.cpp b/src/widgets/graphicsview/qgraphicsanchorlayout.cpp
index 3fb768d30a..1ccf6fcffe 100644
--- a/src/widgets/graphicsview/qgraphicsanchorlayout.cpp
+++ b/src/widgets/graphicsview/qgraphicsanchorlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicsanchorlayout.h b/src/widgets/graphicsview/qgraphicsanchorlayout.h
index 8db6391987..47a520689e 100644
--- a/src/widgets/graphicsview/qgraphicsanchorlayout.h
+++ b/src/widgets/graphicsview/qgraphicsanchorlayout.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,9 +50,8 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
class QGraphicsAnchorPrivate;
class QGraphicsAnchorLayout;
diff --git a/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp b/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp
index 2ac3953676..3d20f0b07c 100644
--- a/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp
+++ b/src/widgets/graphicsview/qgraphicsanchorlayout_p.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicsanchorlayout_p.h b/src/widgets/graphicsview/qgraphicsanchorlayout_p.h
index 21524e9157..328461a363 100644
--- a/src/widgets/graphicsview/qgraphicsanchorlayout_p.h
+++ b/src/widgets/graphicsview/qgraphicsanchorlayout_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicsgridlayout.cpp b/src/widgets/graphicsview/qgraphicsgridlayout.cpp
index fb4cf954e4..c5e7e83cf4 100644
--- a/src/widgets/graphicsview/qgraphicsgridlayout.cpp
+++ b/src/widgets/graphicsview/qgraphicsgridlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicsgridlayout.h b/src/widgets/graphicsview/qgraphicsgridlayout.h
index 749af57b0a..a4846a1e71 100644
--- a/src/widgets/graphicsview/qgraphicsgridlayout.h
+++ b/src/widgets/graphicsview/qgraphicsgridlayout.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,9 +49,8 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
class QGraphicsGridLayoutPrivate;
diff --git a/src/widgets/graphicsview/qgraphicsitem.cpp b/src/widgets/graphicsview/qgraphicsitem.cpp
index eb77aee9ae..ba3b4962e7 100644
--- a/src/widgets/graphicsview/qgraphicsitem.cpp
+++ b/src/widgets/graphicsview/qgraphicsitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -743,7 +743,7 @@
#include <QtGui/qpixmapcache.h>
#include <QtWidgets/qstyleoption.h>
#include <QtGui/qevent.h>
-#include <QtGui/qinputpanel.h>
+#include <QtGui/qinputmethod.h>
#include <QtWidgets/qgraphicseffect.h>
#ifndef QT_NO_ACCESSIBILITY
# include "qaccessible.h"
@@ -7327,7 +7327,7 @@ void QGraphicsItem::inputMethodEvent(QInputMethodEvent *event)
surrounding text and reconversions. \a query specifies which
property is queried.
- \sa inputMethodEvent(), QInputMethodEvent, QInputContext
+ \sa inputMethodEvent(), QInputMethodEvent
*/
QVariant QGraphicsItem::inputMethodQuery(Qt::InputMethodQuery query) const
{
@@ -7354,7 +7354,7 @@ QVariant QGraphicsItem::inputMethodQuery(Qt::InputMethodQuery query) const
\since 4.6
- \sa setInputMethodHints(), inputMethodQuery(), QInputContext
+ \sa setInputMethodHints(), inputMethodQuery()
*/
Qt::InputMethodHints QGraphicsItem::inputMethodHints() const
{
@@ -7367,7 +7367,7 @@ Qt::InputMethodHints QGraphicsItem::inputMethodHints() const
\since 4.6
- \sa inputMethodHints(), inputMethodQuery(), QInputContext
+ \sa inputMethodHints(), inputMethodQuery()
*/
void QGraphicsItem::setInputMethodHints(Qt::InputMethodHints hints)
{
@@ -7379,7 +7379,7 @@ void QGraphicsItem::setInputMethodHints(Qt::InputMethodHints hints)
QWidget *fw = QApplication::focusWidget();
if (!fw)
return;
- qApp->inputPanel()->update(Qt::ImHints);
+ qApp->inputMethod()->update(Qt::ImHints);
}
/*!
@@ -7387,7 +7387,7 @@ void QGraphicsItem::setInputMethodHints(Qt::InputMethodHints hints)
\since 4.7
- \sa QInputContext
+ \sa QInputMethod
*/
void QGraphicsItem::updateMicroFocus()
{
@@ -7397,7 +7397,7 @@ void QGraphicsItem::updateMicroFocus()
for (int i = 0 ; i < scene()->views().count() ; ++i) {
if (scene()->views().at(i) == fw) {
if (qApp)
- qApp->inputPanel()->update(Qt::ImQueryAll);
+ qApp->inputMethod()->update(Qt::ImQueryAll);
#ifndef QT_NO_ACCESSIBILITY
// ##### is this correct
@@ -7695,7 +7695,7 @@ void QGraphicsObject::ungrabGesture(Qt::GestureType gesture)
\since 4.7
- \sa QInputContext
+ \sa QInputMethod
*/
void QGraphicsObject::updateMicroFocus()
{
@@ -10215,9 +10215,9 @@ bool QGraphicsTextItem::sceneEvent(QEvent *event)
// Reset the focus widget's input context, regardless
// of how this item gained or lost focus.
if (event->type() == QEvent::FocusIn || event->type() == QEvent::FocusOut) {
- qApp->inputPanel()->reset();
+ qApp->inputMethod()->reset();
} else {
- qApp->inputPanel()->update(Qt::ImQueryInput);
+ qApp->inputMethod()->update(Qt::ImQueryInput);
}
break;
case QEvent::ShortcutOverride:
diff --git a/src/widgets/graphicsview/qgraphicsitem.h b/src/widgets/graphicsview/qgraphicsitem.h
index 3873857b8a..7f9b61678c 100644
--- a/src/widgets/graphicsview/qgraphicsitem.h
+++ b/src/widgets/graphicsview/qgraphicsitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,9 +56,8 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
class QBrush;
class QCursor;
@@ -496,7 +495,7 @@ private:
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QGraphicsItem::GraphicsItemFlags)
-Q_DECLARE_INTERFACE(QGraphicsItem, "com.trolltech.Qt.QGraphicsItem")
+Q_DECLARE_INTERFACE(QGraphicsItem, "org.qt-project.Qt.QGraphicsItem")
inline void QGraphicsItem::setPos(qreal ax, qreal ay)
{ setPos(QPointF(ax, ay)); }
diff --git a/src/widgets/graphicsview/qgraphicsitem_p.h b/src/widgets/graphicsview/qgraphicsitem_p.h
index beedbfaa27..aebb22a0ee 100644
--- a/src/widgets/graphicsview/qgraphicsitem_p.h
+++ b/src/widgets/graphicsview/qgraphicsitem_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -65,7 +65,7 @@
#include <QtCore/qpoint.h>
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
QT_BEGIN_NAMESPACE
diff --git a/src/widgets/graphicsview/qgraphicsitemanimation.cpp b/src/widgets/graphicsview/qgraphicsitemanimation.cpp
index 10c292bed1..f21220b3b1 100644
--- a/src/widgets/graphicsview/qgraphicsitemanimation.cpp
+++ b/src/widgets/graphicsview/qgraphicsitemanimation.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicsitemanimation.h b/src/widgets/graphicsview/qgraphicsitemanimation.h
index 1f17d7e2e5..f42fc694fd 100644
--- a/src/widgets/graphicsview/qgraphicsitemanimation.h
+++ b/src/widgets/graphicsview/qgraphicsitemanimation.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -44,13 +44,12 @@
#include <QtCore/qobject.h>
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QGraphicsItem;
class QMatrix;
diff --git a/src/widgets/graphicsview/qgraphicslayout.cpp b/src/widgets/graphicsview/qgraphicslayout.cpp
index 6c8a2662be..cec5ba57a3 100644
--- a/src/widgets/graphicsview/qgraphicslayout.cpp
+++ b/src/widgets/graphicsview/qgraphicslayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicslayout.h b/src/widgets/graphicsview/qgraphicslayout.h
index 4e5b2a982a..64e7881faa 100644
--- a/src/widgets/graphicsview/qgraphicslayout.h
+++ b/src/widgets/graphicsview/qgraphicslayout.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,9 +48,8 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
class QGraphicsLayoutPrivate;
class QGraphicsLayoutItem;
@@ -88,7 +87,7 @@ private:
friend class QGraphicsWidget;
};
-Q_DECLARE_INTERFACE(QGraphicsLayout, "com.trolltech.Qt.QGraphicsLayout")
+Q_DECLARE_INTERFACE(QGraphicsLayout, "org.qt-project.Qt.QGraphicsLayout")
#endif
diff --git a/src/widgets/graphicsview/qgraphicslayout_p.cpp b/src/widgets/graphicsview/qgraphicslayout_p.cpp
index ce3525b68d..50aa39570e 100644
--- a/src/widgets/graphicsview/qgraphicslayout_p.cpp
+++ b/src/widgets/graphicsview/qgraphicslayout_p.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicslayout_p.h b/src/widgets/graphicsview/qgraphicslayout_p.h
index ea98a4a679..57a06b31fc 100644
--- a/src/widgets/graphicsview/qgraphicslayout_p.h
+++ b/src/widgets/graphicsview/qgraphicslayout_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,7 +55,7 @@
#include <QtCore/qglobal.h>
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
#include "qgraphicslayout.h"
#include "qgraphicslayoutitem_p.h"
diff --git a/src/widgets/graphicsview/qgraphicslayoutitem.cpp b/src/widgets/graphicsview/qgraphicslayoutitem.cpp
index ff53f1fd95..e58080fb95 100644
--- a/src/widgets/graphicsview/qgraphicslayoutitem.cpp
+++ b/src/widgets/graphicsview/qgraphicslayoutitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicslayoutitem.h b/src/widgets/graphicsview/qgraphicslayoutitem.h
index 926a2b15dc..ef391f01a0 100644
--- a/src/widgets/graphicsview/qgraphicslayoutitem.h
+++ b/src/widgets/graphicsview/qgraphicslayoutitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,9 +50,8 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
class QGraphicsLayoutItemPrivate;
class QGraphicsItem;
@@ -122,7 +121,7 @@ private:
friend class QGraphicsLayout;
};
-Q_DECLARE_INTERFACE(QGraphicsLayoutItem, "com.trolltech.Qt.QGraphicsLayoutItem")
+Q_DECLARE_INTERFACE(QGraphicsLayoutItem, "org.qt-project.Qt.QGraphicsLayoutItem")
inline void QGraphicsLayoutItem::setMinimumSize(qreal aw, qreal ah)
{ setMinimumSize(QSizeF(aw, ah)); }
diff --git a/src/widgets/graphicsview/qgraphicslayoutitem_p.h b/src/widgets/graphicsview/qgraphicslayoutitem_p.h
index c13402dc49..eab777aa39 100644
--- a/src/widgets/graphicsview/qgraphicslayoutitem_p.h
+++ b/src/widgets/graphicsview/qgraphicslayoutitem_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicslinearlayout.cpp b/src/widgets/graphicsview/qgraphicslinearlayout.cpp
index eeb4c0b01c..535e2ddf59 100644
--- a/src/widgets/graphicsview/qgraphicslinearlayout.cpp
+++ b/src/widgets/graphicsview/qgraphicslinearlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicslinearlayout.h b/src/widgets/graphicsview/qgraphicslinearlayout.h
index 6d869197cf..2e88bba727 100644
--- a/src/widgets/graphicsview/qgraphicslinearlayout.h
+++ b/src/widgets/graphicsview/qgraphicslinearlayout.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,9 +49,8 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
class QGraphicsLinearLayoutPrivate;
diff --git a/src/widgets/graphicsview/qgraphicsproxywidget.cpp b/src/widgets/graphicsview/qgraphicsproxywidget.cpp
index 2eadec0ef1..d532c4e541 100644
--- a/src/widgets/graphicsview/qgraphicsproxywidget.cpp
+++ b/src/widgets/graphicsview/qgraphicsproxywidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicsproxywidget.h b/src/widgets/graphicsview/qgraphicsproxywidget.h
index 141b61bf09..90a90e07a6 100644
--- a/src/widgets/graphicsview/qgraphicsproxywidget.h
+++ b/src/widgets/graphicsview/qgraphicsproxywidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,9 +48,8 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
class QGraphicsProxyWidgetPrivate;
diff --git a/src/widgets/graphicsview/qgraphicsproxywidget_p.h b/src/widgets/graphicsview/qgraphicsproxywidget_p.h
index e3e2cd174b..e7e4139f3f 100644
--- a/src/widgets/graphicsview/qgraphicsproxywidget_p.h
+++ b/src/widgets/graphicsview/qgraphicsproxywidget_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,7 +56,7 @@
#include "qgraphicsproxywidget.h"
#include "private/qgraphicswidget_p.h"
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
QT_BEGIN_NAMESPACE
diff --git a/src/widgets/graphicsview/qgraphicsscene.cpp b/src/widgets/graphicsview/qgraphicsscene.cpp
index a8c3f8dee6..280aa7af8e 100644
--- a/src/widgets/graphicsview/qgraphicsscene.cpp
+++ b/src/widgets/graphicsview/qgraphicsscene.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -243,7 +243,7 @@
#include <QtWidgets/qstyleoption.h>
#include <QtWidgets/qtooltip.h>
#include <QtGui/qtransform.h>
-#include <QtGui/qinputpanel.h>
+#include <QtGui/qinputmethod.h>
#include <QtWidgets/qgraphicseffect.h>
#ifndef QT_NO_ACCESSIBILITY
# include <QtGui/qaccessible.h>
@@ -822,7 +822,7 @@ void QGraphicsScenePrivate::setFocusItemHelper(QGraphicsItem *item,
// the views, but if we are changing focus, we have to
// do it ourselves.
if (qApp)
- qApp->inputPanel()->reset();
+ qApp->inputMethod()->reset();
}
focusItem = 0;
@@ -843,7 +843,7 @@ void QGraphicsScenePrivate::setFocusItemHelper(QGraphicsItem *item,
#ifndef QT_NO_ACCESSIBILITY
if (focusItem) {
if (QGraphicsObject *focusObj = focusItem->toGraphicsObject()) {
- QAccessible::updateAccessibility(focusObj, 0, QAccessible::Focus);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::Focus, focusObj, 0));
}
}
#endif
diff --git a/src/widgets/graphicsview/qgraphicsscene.h b/src/widgets/graphicsview/qgraphicsscene.h
index 4e06a7483e..ee4edb391e 100644
--- a/src/widgets/graphicsview/qgraphicsscene.h
+++ b/src/widgets/graphicsview/qgraphicsscene.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,9 +55,8 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
template<typename T> class QList;
class QFocusEvent;
diff --git a/src/widgets/graphicsview/qgraphicsscene_bsp.cpp b/src/widgets/graphicsview/qgraphicsscene_bsp.cpp
index 8b35fb0022..8b9ae4c5d9 100644
--- a/src/widgets/graphicsview/qgraphicsscene_bsp.cpp
+++ b/src/widgets/graphicsview/qgraphicsscene_bsp.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicsscene_bsp_p.h b/src/widgets/graphicsview/qgraphicsscene_bsp_p.h
index d371ba5f66..9071e4b93b 100644
--- a/src/widgets/graphicsview/qgraphicsscene_bsp_p.h
+++ b/src/widgets/graphicsview/qgraphicsscene_bsp_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,7 +55,7 @@
#include <QtCore/qlist.h>
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
#include <QtCore/qrect.h>
#include <QtCore/qset.h>
diff --git a/src/widgets/graphicsview/qgraphicsscene_p.h b/src/widgets/graphicsview/qgraphicsscene_p.h
index a693c0c309..b0410e38ce 100644
--- a/src/widgets/graphicsview/qgraphicsscene_p.h
+++ b/src/widgets/graphicsview/qgraphicsscene_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,7 +55,7 @@
#include "qgraphicsscene.h"
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
#include "qgraphicssceneevent.h"
#include "qgraphicsview.h"
diff --git a/src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp b/src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp
index 1c4653d522..2880a8aeaa 100644
--- a/src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp
+++ b/src/widgets/graphicsview/qgraphicsscenebsptreeindex.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicsscenebsptreeindex_p.h b/src/widgets/graphicsview/qgraphicsscenebsptreeindex_p.h
index b3b31fca6a..78b2b2e358 100644
--- a/src/widgets/graphicsview/qgraphicsscenebsptreeindex_p.h
+++ b/src/widgets/graphicsview/qgraphicsscenebsptreeindex_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,7 +55,7 @@
#include <QtCore/qglobal.h>
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
#include "qgraphicssceneindex_p.h"
#include "qgraphicsitem_p.h"
diff --git a/src/widgets/graphicsview/qgraphicssceneevent.cpp b/src/widgets/graphicsview/qgraphicssceneevent.cpp
index ca6ff59bec..91b6fb08da 100644
--- a/src/widgets/graphicsview/qgraphicssceneevent.cpp
+++ b/src/widgets/graphicsview/qgraphicssceneevent.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicssceneevent.h b/src/widgets/graphicsview/qgraphicssceneevent.h
index cf88a66e3c..be93c47476 100644
--- a/src/widgets/graphicsview/qgraphicssceneevent.h
+++ b/src/widgets/graphicsview/qgraphicssceneevent.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,9 +54,8 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
class QMimeData;
class QPointF;
diff --git a/src/widgets/graphicsview/qgraphicssceneindex.cpp b/src/widgets/graphicsview/qgraphicssceneindex.cpp
index 8fb6c666a0..e296e4da22 100644
--- a/src/widgets/graphicsview/qgraphicssceneindex.cpp
+++ b/src/widgets/graphicsview/qgraphicssceneindex.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicssceneindex_p.h b/src/widgets/graphicsview/qgraphicssceneindex_p.h
index eff75e89b1..932c9afd3b 100644
--- a/src/widgets/graphicsview/qgraphicssceneindex_p.h
+++ b/src/widgets/graphicsview/qgraphicssceneindex_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -65,9 +65,8 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
class QGraphicsSceneIndexIntersector;
class QGraphicsSceneIndexPointIntersector;
diff --git a/src/widgets/graphicsview/qgraphicsscenelinearindex.cpp b/src/widgets/graphicsview/qgraphicsscenelinearindex.cpp
index 08fcdaf08d..5ffaac9e33 100644
--- a/src/widgets/graphicsview/qgraphicsscenelinearindex.cpp
+++ b/src/widgets/graphicsview/qgraphicsscenelinearindex.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicsscenelinearindex_p.h b/src/widgets/graphicsview/qgraphicsscenelinearindex_p.h
index fdd6a82bda..ec9ab38bb2 100644
--- a/src/widgets/graphicsview/qgraphicsscenelinearindex_p.h
+++ b/src/widgets/graphicsview/qgraphicsscenelinearindex_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,7 +55,7 @@
#include <QtCore/qglobal.h>
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
#include <QtCore/qrect.h>
#include <QtCore/qlist.h>
@@ -66,7 +66,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class Q_AUTOTEST_EXPORT QGraphicsSceneLinearIndex : public QGraphicsSceneIndex
{
diff --git a/src/widgets/graphicsview/qgraphicstransform.cpp b/src/widgets/graphicsview/qgraphicstransform.cpp
index 33e3a3cc4d..b22e3502ad 100644
--- a/src/widgets/graphicsview/qgraphicstransform.cpp
+++ b/src/widgets/graphicsview/qgraphicstransform.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDeclarative module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicstransform.h b/src/widgets/graphicsview/qgraphicstransform.h
index 8e93a5ee76..b6a8d8aacb 100644
--- a/src/widgets/graphicsview/qgraphicstransform.h
+++ b/src/widgets/graphicsview/qgraphicstransform.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QGraphicsItem;
class QGraphicsTransformPrivate;
diff --git a/src/widgets/graphicsview/qgraphicstransform_p.h b/src/widgets/graphicsview/qgraphicstransform_p.h
index 976ffed2c3..ca5575ff10 100644
--- a/src/widgets/graphicsview/qgraphicstransform_p.h
+++ b/src/widgets/graphicsview/qgraphicstransform_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicsview.cpp b/src/widgets/graphicsview/qgraphicsview.cpp
index 4c5c586ec9..cabf2eb5a5 100644
--- a/src/widgets/graphicsview/qgraphicsview.cpp
+++ b/src/widgets/graphicsview/qgraphicsview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicsview.h b/src/widgets/graphicsview/qgraphicsview.h
index 2e33548a29..ddc9aea4b0 100644
--- a/src/widgets/graphicsview/qgraphicsview.h
+++ b/src/widgets/graphicsview/qgraphicsview.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,9 +51,8 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
class QGraphicsItem;
class QPainterPath;
diff --git a/src/widgets/graphicsview/qgraphicsview_p.h b/src/widgets/graphicsview/qgraphicsview_p.h
index c8b36bc89f..9475ae5bc9 100644
--- a/src/widgets/graphicsview/qgraphicsview_p.h
+++ b/src/widgets/graphicsview/qgraphicsview_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,7 +55,7 @@
#include "qgraphicsview.h"
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
#include <QtGui/qevent.h>
#include <QtCore/qcoreapplication.h>
diff --git a/src/widgets/graphicsview/qgraphicswidget.cpp b/src/widgets/graphicsview/qgraphicswidget.cpp
index c415c704bc..c179aeff2b 100644
--- a/src/widgets/graphicsview/qgraphicswidget.cpp
+++ b/src/widgets/graphicsview/qgraphicswidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicswidget.h b/src/widgets/graphicsview/qgraphicswidget.h
index b469b64acd..e0bb591231 100644
--- a/src/widgets/graphicsview/qgraphicswidget.h
+++ b/src/widgets/graphicsview/qgraphicswidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QFont;
class QFontMetrics;
@@ -62,7 +61,7 @@ class QGraphicsSceneResizeEvent;
class QStyle;
class QStyleOption;
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
class QGraphicsWidgetPrivate;
@@ -212,17 +211,13 @@ protected:
virtual bool focusNextPrevChild(bool next);
void focusOutEvent(QFocusEvent *event);
virtual void hideEvent(QHideEvent *event);
- //virtual bool macEvent(EventHandlerCallRef caller, EventRef event);
//virtual int metric(PaintDeviceMetric m ) const;
virtual void moveEvent(QGraphicsSceneMoveEvent *event);
virtual void polishEvent();
- //virtual bool qwsEvent(QWSEvent *event);
//void resetInputContext ();
virtual void resizeEvent(QGraphicsSceneResizeEvent *event);
virtual void showEvent(QShowEvent *event);
//virtual void tabletEvent(QTabletEvent *event);
- //virtual bool winEvent(MSG *message, long *result);
- //virtual bool x11Event(XEvent *event);
virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event);
virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *event);
virtual void grabMouseEvent(QEvent *event);
diff --git a/src/widgets/graphicsview/qgraphicswidget_p.cpp b/src/widgets/graphicsview/qgraphicswidget_p.cpp
index 40333fd1b5..ee03f093c7 100644
--- a/src/widgets/graphicsview/qgraphicswidget_p.cpp
+++ b/src/widgets/graphicsview/qgraphicswidget_p.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgraphicswidget_p.h b/src/widgets/graphicsview/qgraphicswidget_p.h
index 99f5661b98..cdb9067b02 100644
--- a/src/widgets/graphicsview/qgraphicswidget_p.h
+++ b/src/widgets/graphicsview/qgraphicswidget_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -66,7 +66,7 @@ QT_BEGIN_NAMESPACE
class QGraphicsLayout;
class QStyleOptionTitleBar;
-#if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#if !defined(QT_NO_GRAPHICSVIEW)
class QGraphicsWidgetPrivate : public QGraphicsItemPrivate
{
@@ -218,7 +218,7 @@ public:
#endif
};
-#endif //!defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW
+#endif
QT_END_NAMESPACE
diff --git a/src/widgets/graphicsview/qgridlayoutengine.cpp b/src/widgets/graphicsview/qgridlayoutengine.cpp
index d5eeea68f2..b981ed651a 100644
--- a/src/widgets/graphicsview/qgridlayoutengine.cpp
+++ b/src/widgets/graphicsview/qgridlayoutengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qgridlayoutengine_p.h b/src/widgets/graphicsview/qgridlayoutengine_p.h
index f8ef75ab12..94ed85c320 100644
--- a/src/widgets/graphicsview/qgridlayoutengine_p.h
+++ b/src/widgets/graphicsview/qgridlayoutengine_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qsimplex_p.cpp b/src/widgets/graphicsview/qsimplex_p.cpp
index 0a1472a384..f5816e2d3c 100644
--- a/src/widgets/graphicsview/qsimplex_p.cpp
+++ b/src/widgets/graphicsview/qsimplex_p.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/graphicsview/qsimplex_p.h b/src/widgets/graphicsview/qsimplex_p.h
index 82f65bac01..00ed0b9957 100644
--- a/src/widgets/graphicsview/qsimplex_p.h
+++ b/src/widgets/graphicsview/qsimplex_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qabstractitemdelegate.cpp b/src/widgets/itemviews/qabstractitemdelegate.cpp
index 5e000b4d70..6184a5845a 100644
--- a/src/widgets/itemviews/qabstractitemdelegate.cpp
+++ b/src/widgets/itemviews/qabstractitemdelegate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -232,7 +232,7 @@ QAbstractItemDelegate::~QAbstractItemDelegate()
editor paints its own background (e.g., with
\l{QWidget::}{setAutoFillBackground()}).
- \sa setModelData() setEditorData()
+ \sa destroyEditor() setModelData() setEditorData()
*/
QWidget *QAbstractItemDelegate::createEditor(QWidget *,
const QStyleOptionViewItem &,
@@ -241,6 +241,19 @@ QWidget *QAbstractItemDelegate::createEditor(QWidget *,
return 0;
}
+
+/*!
+ A function called when the editor is no longer needed and should be
+ destroyed. The default behavior is a call to deleteLater on the editor.
+ It possible e.g. to avoid this delete by reimplementing this function.
+
+ \sa createEditor()
+*/
+void QAbstractItemDelegate::destroyEditor(QWidget *editor, const QModelIndex &) const
+{
+ editor->deleteLater();
+}
+
/*!
Sets the contents of the given \a editor to the data for the item
at the given \a index. Note that the index contains information
diff --git a/src/widgets/itemviews/qabstractitemdelegate.h b/src/widgets/itemviews/qabstractitemdelegate.h
index 315feda69e..2c51dfcac8 100644
--- a/src/widgets/itemviews/qabstractitemdelegate.h
+++ b/src/widgets/itemviews/qabstractitemdelegate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_ITEMVIEWS
@@ -89,6 +88,8 @@ public:
const QStyleOptionViewItem &option,
const QModelIndex &index) const;
+ virtual void destroyEditor(QWidget *editor, const QModelIndex &index) const;
+
virtual void setEditorData(QWidget *editor, const QModelIndex &index) const;
virtual void setModelData(QWidget *editor,
diff --git a/src/widgets/itemviews/qabstractitemview.cpp b/src/widgets/itemviews/qabstractitemview.cpp
index f4a45fb22e..ff3de308e5 100644
--- a/src/widgets/itemviews/qabstractitemview.cpp
+++ b/src/widgets/itemviews/qabstractitemview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1098,7 +1098,7 @@ void QAbstractItemView::reset()
d->delayedReset.stop(); //make sure we stop the timer
foreach (const QEditorInfo &info, d->indexEditorHash) {
if (info.widget)
- d->releaseEditor(info.widget.data());
+ d->releaseEditor(info.widget.data(), d->indexForEditor(info.widget.data()));
}
d->editorIndexHash.clear();
d->indexEditorHash.clear();
@@ -1112,7 +1112,7 @@ void QAbstractItemView::reset()
#ifdef Q_WS_X11
if (QAccessible::isActive()) {
QAccessible::queryAccessibleInterface(this)->table2Interface()->modelReset();
- QAccessible::updateAccessibility(this, 0, QAccessible::TableModelChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::TableModelChanged, this, 0));
}
#endif
#endif
@@ -2778,7 +2778,7 @@ void QAbstractItemView::closeEditor(QWidget *editor, QAbstractItemDelegate::EndE
editor = ed;
if (!isPersistent && editor)
- d->releaseEditor(editor);
+ d->releaseEditor(editor, index);
}
// The EndEditHint part
@@ -3102,7 +3102,7 @@ void QAbstractItemView::closePersistentEditor(const QModelIndex &index)
closeEditor(editor, QAbstractItemDelegate::RevertModelCache);
d->persistent.remove(editor);
d->removeEditor(editor);
- d->releaseEditor(editor);
+ d->releaseEditor(editor, index);
}
}
@@ -3314,7 +3314,7 @@ void QAbstractItemView::rowsAboutToBeRemoved(const QModelIndex &parent, int star
QEditorInfo info = d->indexEditorHash.take(index);
i = d->editorIndexHash.erase(i);
if (info.widget)
- d->releaseEditor(editor);
+ d->releaseEditor(editor, index);
} else {
++i;
}
@@ -3342,7 +3342,7 @@ void QAbstractItemViewPrivate::_q_rowsRemoved(const QModelIndex &index, int star
#ifdef Q_WS_X11
if (QAccessible::isActive()) {
QAccessible::queryAccessibleInterface(q)->table2Interface()->rowsRemoved(index, start, end);
- QAccessible::updateAccessibility(q, 0, QAccessible::TableModelChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::TableModelChanged, q, 0));
}
#endif
#endif
@@ -3393,7 +3393,7 @@ void QAbstractItemViewPrivate::_q_columnsAboutToBeRemoved(const QModelIndex &par
QEditorInfo info = indexEditorHash.take(it.value());
it = editorIndexHash.erase(it);
if (info.widget)
- releaseEditor(editor);
+ releaseEditor(editor, index);
} else {
++it;
}
@@ -3422,7 +3422,7 @@ void QAbstractItemViewPrivate::_q_columnsRemoved(const QModelIndex &index, int s
#ifdef Q_WS_X11
if (QAccessible::isActive()) {
QAccessible::queryAccessibleInterface(q)->table2Interface()->columnsRemoved(index, start, end);
- QAccessible::updateAccessibility(q, 0, QAccessible::TableModelChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::TableModelChanged, q, 0));
}
#endif
#endif
@@ -3445,7 +3445,7 @@ void QAbstractItemViewPrivate::_q_rowsInserted(const QModelIndex &index, int sta
Q_Q(QAbstractItemView);
if (QAccessible::isActive()) {
QAccessible::queryAccessibleInterface(q)->table2Interface()->rowsInserted(index, start, end);
- QAccessible::updateAccessibility(q, 0, QAccessible::TableModelChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::TableModelChanged, q, 0));
}
#endif
#endif
@@ -3469,7 +3469,7 @@ void QAbstractItemViewPrivate::_q_columnsInserted(const QModelIndex &index, int
#ifdef Q_WS_X11
if (QAccessible::isActive()) {
QAccessible::queryAccessibleInterface(q)->table2Interface()->columnsInserted(index, start, end);
- QAccessible::updateAccessibility(q, 0, QAccessible::TableModelChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::TableModelChanged, q, 0));
}
#endif
#endif
@@ -3497,7 +3497,7 @@ void QAbstractItemViewPrivate::_q_layoutChanged()
Q_Q(QAbstractItemView);
if (QAccessible::isActive()) {
QAccessible::queryAccessibleInterface(q)->table2Interface()->modelReset();
- QAccessible::updateAccessibility(q, 0, QAccessible::TableModelChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::TableModelChanged, q, 0));
}
#endif
#endif
@@ -3608,38 +3608,37 @@ void QAbstractItemView::startDrag(Qt::DropActions supportedActions)
QStyleOptionViewItem QAbstractItemView::viewOptions() const
{
Q_D(const QAbstractItemView);
- QStyleOptionViewItem option;
- option.init(this);
+ return d->viewOptionsV4();
+}
+
+QStyleOptionViewItemV4 QAbstractItemViewPrivate::viewOptionsV4() const
+{
+ Q_Q(const QAbstractItemView);
+ QStyleOptionViewItemV4 option;
+ option.init(q);
option.state &= ~QStyle::State_MouseOver;
- option.font = font();
+ option.font = q->font();
#ifndef Q_WS_MAC
// On mac the focus appearance follows window activation
// not widget activation
- if (!hasFocus())
+ if (!q->hasFocus())
option.state &= ~QStyle::State_Active;
#endif
option.state &= ~QStyle::State_HasFocus;
- if (d->iconSize.isValid()) {
- option.decorationSize = d->iconSize;
+ if (iconSize.isValid()) {
+ option.decorationSize = iconSize;
} else {
- int pm = style()->pixelMetric(QStyle::PM_SmallIconSize, 0, this);
+ int pm = q->style()->pixelMetric(QStyle::PM_SmallIconSize, 0, q);
option.decorationSize = QSize(pm, pm);
}
option.decorationPosition = QStyleOptionViewItem::Left;
option.decorationAlignment = Qt::AlignCenter;
option.displayAlignment = Qt::AlignLeft|Qt::AlignVCenter;
- option.textElideMode = d->textElideMode;
+ option.textElideMode = textElideMode;
option.rect = QRect();
- option.showDecorationSelected = style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, 0, this);
- return option;
-}
-
-QStyleOptionViewItemV4 QAbstractItemViewPrivate::viewOptionsV4() const
-{
- Q_Q(const QAbstractItemView);
- QStyleOptionViewItemV4 option = q->viewOptions();
+ option.showDecorationSelected = q->style()->styleHint(QStyle::SH_ItemView_ShowDecorationSelected, 0, q);
if (wrapItemText)
option.features = QStyleOptionViewItemV2::WrapText;
option.locale = q->locale();
diff --git a/src/widgets/itemviews/qabstractitemview.h b/src/widgets/itemviews/qabstractitemview.h
index 5ab41bae23..5bdd17e3ad 100644
--- a/src/widgets/itemviews/qabstractitemview.h
+++ b/src/widgets/itemviews/qabstractitemview.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_ITEMVIEWS
@@ -368,7 +367,7 @@ private:
friend class QTreeViewPrivate; // needed to compile with MSVC
friend class QListModeViewBase;
- friend class QListViewPrivate; // needed to compile for Symbian emulator
+ friend class QListViewPrivate;
};
Q_DECLARE_OPERATORS_FOR_FLAGS(QAbstractItemView::EditTriggers)
diff --git a/src/widgets/itemviews/qabstractitemview_p.h b/src/widgets/itemviews/qabstractitemview_p.h
index 801bb82d85..3826f3b4e9 100644
--- a/src/widgets/itemviews/qabstractitemview_p.h
+++ b/src/widgets/itemviews/qabstractitemview_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -200,13 +200,18 @@ public:
// reimplemented in subclasses
virtual void adjustViewOptionsForIndex(QStyleOptionViewItemV4*, const QModelIndex&) const {}
- inline void releaseEditor(QWidget *editor) const {
+ inline void releaseEditor(QWidget *editor, const QModelIndex &index = QModelIndex()) const {
if (editor) {
QObject::disconnect(editor, SIGNAL(destroyed(QObject*)),
q_func(), SLOT(editorDestroyed(QObject*)));
editor->removeEventFilter(itemDelegate);
editor->hide();
- editor->deleteLater();
+ QAbstractItemDelegate *delegate = delegateForIndex(index);
+
+ if (delegate)
+ delegate->destroyEditor(editor, index);
+ else
+ editor->deleteLater();
}
}
diff --git a/src/widgets/itemviews/qbsptree.cpp b/src/widgets/itemviews/qbsptree.cpp
index a049b9d095..40cf6e4a99 100644
--- a/src/widgets/itemviews/qbsptree.cpp
+++ b/src/widgets/itemviews/qbsptree.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qbsptree_p.h b/src/widgets/itemviews/qbsptree_p.h
index d7404010d1..1c16dab056 100644
--- a/src/widgets/itemviews/qbsptree_p.h
+++ b/src/widgets/itemviews/qbsptree_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qcolumnview.cpp b/src/widgets/itemviews/qcolumnview.cpp
index 8b4db02961..5dec62acc2 100644
--- a/src/widgets/itemviews/qcolumnview.cpp
+++ b/src/widgets/itemviews/qcolumnview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qcolumnview.h b/src/widgets/itemviews/qcolumnview.h
index ac734c131d..1bc3a5e265 100644
--- a/src/widgets/itemviews/qcolumnview.h
+++ b/src/widgets/itemviews/qcolumnview.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_COLUMNVIEW
diff --git a/src/widgets/itemviews/qcolumnview_p.h b/src/widgets/itemviews/qcolumnview_p.h
index ce1275e220..5bdb74c56c 100644
--- a/src/widgets/itemviews/qcolumnview_p.h
+++ b/src/widgets/itemviews/qcolumnview_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qcolumnviewgrip.cpp b/src/widgets/itemviews/qcolumnviewgrip.cpp
index ce25fdac03..340c2e333a 100644
--- a/src/widgets/itemviews/qcolumnviewgrip.cpp
+++ b/src/widgets/itemviews/qcolumnviewgrip.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qcolumnviewgrip_p.h b/src/widgets/itemviews/qcolumnviewgrip_p.h
index 2991f070eb..e842b3e2ff 100644
--- a/src/widgets/itemviews/qcolumnviewgrip_p.h
+++ b/src/widgets/itemviews/qcolumnviewgrip_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qdatawidgetmapper.cpp b/src/widgets/itemviews/qdatawidgetmapper.cpp
index 34699039c4..e4eca4287b 100644
--- a/src/widgets/itemviews/qdatawidgetmapper.cpp
+++ b/src/widgets/itemviews/qdatawidgetmapper.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qdatawidgetmapper.h b/src/widgets/itemviews/qdatawidgetmapper.h
index 5ffb666fbd..e73d4b1044 100644
--- a/src/widgets/itemviews/qdatawidgetmapper.h
+++ b/src/widgets/itemviews/qdatawidgetmapper.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QAbstractItemDelegate;
class QAbstractItemModel;
diff --git a/src/widgets/itemviews/qdirmodel.cpp b/src/widgets/itemviews/qdirmodel.cpp
index aa74f604e5..67a16a836d 100644
--- a/src/widgets/itemviews/qdirmodel.cpp
+++ b/src/widgets/itemviews/qdirmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -854,10 +854,8 @@ QModelIndex QDirModel::index(const QString &path, int column) const
return QModelIndex();
QString absolutePath = QDir(path).absolutePath();
-#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
- absolutePath = absolutePath.toLower();
-#endif
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+ absolutePath = absolutePath.toLower();
// On Windows, "filename......." and "filename" are equivalent
if (absolutePath.endsWith(QLatin1Char('.'))) {
int i;
@@ -899,7 +897,7 @@ QModelIndex QDirModel::index(const QString &path, int column) const
emit const_cast<QDirModel*>(this)->layoutChanged();
} else
#endif
-#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
if (pathElements.at(0).endsWith(QLatin1Char(':'))) {
pathElements[0] += QLatin1Char('/');
}
@@ -923,7 +921,7 @@ QModelIndex QDirModel::index(const QString &path, int column) const
const QFileInfo& fi = parent->children.at(j).info;
QString childFileName;
childFileName = idx.isValid() ? fi.fileName() : fi.absoluteFilePath();
-#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
childFileName = childFileName.toLower();
#endif
if (childFileName == element) {
@@ -1299,8 +1297,6 @@ QString QDirModelPrivate::name(const QModelIndex &index) const
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
if (name.startsWith(QLatin1Char('/'))) // UNC host
return info.fileName();
-#endif
-#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
if (name.endsWith(QLatin1Char('/')))
name.chop(1);
#endif
diff --git a/src/widgets/itemviews/qdirmodel.h b/src/widgets/itemviews/qdirmodel.h
index ee6ec3f4aa..de016112c6 100644
--- a/src/widgets/itemviews/qdirmodel.h
+++ b/src/widgets/itemviews/qdirmodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_DIRMODEL
diff --git a/src/widgets/itemviews/qfileiconprovider.cpp b/src/widgets/itemviews/qfileiconprovider.cpp
index a085f37d6c..dd52aebea5 100644
--- a/src/widgets/itemviews/qfileiconprovider.cpp
+++ b/src/widgets/itemviews/qfileiconprovider.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -46,21 +46,19 @@
#include <qapplication.h>
#include <qdir.h>
#include <qpixmapcache.h>
+#include <private/qfunctions_p.h>
+#include <private/qguiplatformplugin_p.h>
+
#if defined(Q_OS_WIN)
# define _WIN32_IE 0x0500
# include <qt_windows.h>
# include <commctrl.h>
# include <objbase.h>
-Q_GUI_EXPORT QPixmap qt_pixmapFromWinHICON(HICON icon);
-
#elif defined(Q_WS_MAC)
# include <private/qt_cocoa_helpers_mac_p.h>
#endif
-#include <private/qfunctions_p.h>
-#include <private/qguiplatformplugin_p.h>
-
#if defined(Q_WS_X11) && !defined(Q_NO_STYLE_GTK)
# include <private/qgtkstyle_p.h>
# include <private/qt_x11_p.h>
@@ -73,6 +71,10 @@ Q_GUI_EXPORT QPixmap qt_pixmapFromWinHICON(HICON icon);
QT_BEGIN_NAMESPACE
+#if defined (Q_OS_WIN)
+Q_GUI_EXPORT QPixmap qt_pixmapFromWinHICON(HICON icon);
+#endif
+
/*!
\class QFileIconProvider
diff --git a/src/widgets/itemviews/qfileiconprovider.h b/src/widgets/itemviews/qfileiconprovider.h
index 2b90e800a9..85cbf32abc 100644
--- a/src/widgets/itemviews/qfileiconprovider.h
+++ b/src/widgets/itemviews/qfileiconprovider.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_FILEICONPROVIDER
diff --git a/src/widgets/itemviews/qheaderview.cpp b/src/widgets/itemviews/qheaderview.cpp
index c9bc3423b0..33c8da4f69 100644
--- a/src/widgets/itemviews/qheaderview.cpp
+++ b/src/widgets/itemviews/qheaderview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -481,15 +481,17 @@ void QHeaderView::setOffset(int newOffset)
/*!
\since 4.2
- Sets the offset to the start of the section at the given \a visualIndex.
+ Sets the offset to the start of the section at the given \a visualSectionNumber.
+ \a visualSectionNumber is the actual visible section when hiddenSections are
+ not considered. That is not always the same as \a visualIndex.
\sa setOffset(), sectionPosition()
*/
-void QHeaderView::setOffsetToSectionPosition(int visualIndex)
+void QHeaderView::setOffsetToSectionPosition(int visualSectionNumber)
{
Q_D(QHeaderView);
- if (visualIndex > -1 && visualIndex < d->sectionCount) {
- int position = d->headerSectionPosition(d->adjustedVisualIndex(visualIndex));
+ if (visualSectionNumber > -1 && visualSectionNumber < d->sectionCount) {
+ int position = d->headerSectionPosition(d->adjustedVisualIndex(visualSectionNumber));
setOffset(position);
}
}
@@ -517,6 +519,8 @@ void QHeaderView::setOffsetToLastSection()
int QHeaderView::length() const
{
Q_D(const QHeaderView);
+ d->executePostedLayout();
+ d->executePostedResize();
//Q_ASSERT(d->headerLength() == d->length);
return d->length;
}
@@ -870,7 +874,7 @@ void QHeaderView::swapSections(int first, int second)
void QHeaderView::resizeSection(int logical, int size)
{
Q_D(QHeaderView);
- if (logical < 0 || logical >= count())
+ if (logical < 0 || logical >= count() || size < 0)
return;
if (isSectionHidden(logical)) {
@@ -895,6 +899,8 @@ void QHeaderView::resizeSection(int logical, int size)
d->createSectionSpan(visual, visual, size, d->headerSectionResizeMode(visual));
if (!updatesEnabled()) {
+ if (d->hasAutoResizeSections())
+ d->doDelayedResizeSections();
emit sectionResized(logical, oldSize, size);
return;
}
@@ -1934,7 +1940,7 @@ void QHeaderView::initializeSections(int start, int end)
if (end + 1 < d->sectionCount) {
int newCount = end + 1;
- d->removeSectionsFromSpans(newCount, d->sectionCount);
+ d->removeSectionsFromSpans(newCount, d->sectionCount - 1);
if (!d->hiddenSectionSize.isEmpty()) {
if (d->sectionCount - newCount > d->hiddenSectionSize.count()) {
for (int i = end + 1; i < d->sectionCount; ++i)
diff --git a/src/widgets/itemviews/qheaderview.h b/src/widgets/itemviews/qheaderview.h
index 1ad79a96e1..d72b8cd735 100644
--- a/src/widgets/itemviews/qheaderview.h
+++ b/src/widgets/itemviews/qheaderview.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_ITEMVIEWS
diff --git a/src/widgets/itemviews/qheaderview_p.h b/src/widgets/itemviews/qheaderview_p.h
index 923ab36f72..e26c4a6475 100644
--- a/src/widgets/itemviews/qheaderview_p.h
+++ b/src/widgets/itemviews/qheaderview_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qitemdelegate.cpp b/src/widgets/itemviews/qitemdelegate.cpp
index e130953c38..a5351301a7 100644
--- a/src/widgets/itemviews/qitemdelegate.cpp
+++ b/src/widgets/itemviews/qitemdelegate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -527,11 +527,10 @@ QWidget *QItemDelegate::createEditor(QWidget *parent,
Q_D(const QItemDelegate);
if (!index.isValid())
return 0;
- QVariant::Type t = static_cast<QVariant::Type>(index.data(Qt::EditRole).userType());
const QItemEditorFactory *factory = d->f;
if (factory == 0)
factory = QItemEditorFactory::defaultFactory();
- return factory->createEditor(t, parent);
+ return factory->createEditor(index.data(Qt::EditRole).userType(), parent);
}
/*!
@@ -568,7 +567,7 @@ void QItemDelegate::setEditorData(QWidget *editor, const QModelIndex &index) con
// ### Qt 5: give QComboBox a USER property
if (n.isEmpty() && editor->inherits("QComboBox"))
- n = d->editorFactory()->valuePropertyName(static_cast<QVariant::Type>(v.userType()));
+ n = d->editorFactory()->valuePropertyName(v.userType());
if (!n.isEmpty()) {
if (!v.isValid())
v = QVariant(editor->property(n).userType(), (const void *)0);
@@ -603,7 +602,7 @@ void QItemDelegate::setModelData(QWidget *editor,
QByteArray n = editor->metaObject()->userProperty().name();
if (n.isEmpty())
n = d->editorFactory()->valuePropertyName(
- static_cast<QVariant::Type>(model->data(index, Qt::EditRole).userType()));
+ model->data(index, Qt::EditRole).userType());
if (!n.isEmpty())
model->setData(index, editor->property(n), Qt::EditRole);
#endif
diff --git a/src/widgets/itemviews/qitemdelegate.h b/src/widgets/itemviews/qitemdelegate.h
index 5ea6b33f2d..86377c0a4c 100644
--- a/src/widgets/itemviews/qitemdelegate.h
+++ b/src/widgets/itemviews/qitemdelegate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_ITEMVIEWS
diff --git a/src/widgets/itemviews/qitemeditorfactory.cpp b/src/widgets/itemviews/qitemeditorfactory.cpp
index 506ca79702..468929a554 100644
--- a/src/widgets/itemviews/qitemeditorfactory.cpp
+++ b/src/widgets/itemviews/qitemeditorfactory.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -126,30 +126,30 @@ public:
*/
/*!
- Creates an editor widget with the given \a parent for the specified \a type of data,
+ Creates an editor widget with the given \a parent for the specified \a userType of data,
and returns it as a QWidget.
\sa registerEditor()
*/
-QWidget *QItemEditorFactory::createEditor(QVariant::Type type, QWidget *parent) const
+QWidget *QItemEditorFactory::createEditor(int userType, QWidget *parent) const
{
- QItemEditorCreatorBase *creator = creatorMap.value(type, 0);
+ QItemEditorCreatorBase *creator = creatorMap.value(userType, 0);
if (!creator) {
const QItemEditorFactory *dfactory = defaultFactory();
- return dfactory == this ? 0 : dfactory->createEditor(type, parent);
+ return dfactory == this ? 0 : dfactory->createEditor(userType, parent);
}
return creator->createWidget(parent);
}
/*!
- Returns the property name used to access data for the given \a type of data.
+ Returns the property name used to access data for the given \a userType of data.
*/
-QByteArray QItemEditorFactory::valuePropertyName(QVariant::Type type) const
+QByteArray QItemEditorFactory::valuePropertyName(int userType) const
{
- QItemEditorCreatorBase *creator = creatorMap.value(type, 0);
+ QItemEditorCreatorBase *creator = creatorMap.value(userType, 0);
if (!creator) {
const QItemEditorFactory *dfactory = defaultFactory();
- return dfactory == this ? QByteArray() : dfactory->valuePropertyName(type);
+ return dfactory == this ? QByteArray() : dfactory->valuePropertyName(userType);
}
return creator->valuePropertyName();
}
@@ -166,16 +166,16 @@ QItemEditorFactory::~QItemEditorFactory()
}
/*!
- Registers an item editor creator specified by \a creator for the given \a type of data.
+ Registers an item editor creator specified by \a creator for the given \a userType of data.
\bold{Note:} The factory takes ownership of the item editor creator and will destroy
it if a new creator for the same type is registered later.
\sa createEditor()
*/
-void QItemEditorFactory::registerEditor(QVariant::Type type, QItemEditorCreatorBase *creator)
+void QItemEditorFactory::registerEditor(int userType, QItemEditorCreatorBase *creator)
{
- QHash<QVariant::Type, QItemEditorCreatorBase *>::iterator it = creatorMap.find(type);
+ QHash<int, QItemEditorCreatorBase *>::iterator it = creatorMap.find(userType);
if (it != creatorMap.end()) {
QItemEditorCreatorBase *oldCreator = it.value();
Q_ASSERT(oldCreator);
@@ -184,20 +184,20 @@ void QItemEditorFactory::registerEditor(QVariant::Type type, QItemEditorCreatorB
delete oldCreator; // if it is no more in use we can delete it
}
- creatorMap[type] = creator;
+ creatorMap[userType] = creator;
}
class QDefaultItemEditorFactory : public QItemEditorFactory
{
public:
inline QDefaultItemEditorFactory() {}
- QWidget *createEditor(QVariant::Type type, QWidget *parent) const;
- QByteArray valuePropertyName(QVariant::Type) const;
+ QWidget *createEditor(int userType, QWidget *parent) const;
+ QByteArray valuePropertyName(int) const;
};
-QWidget *QDefaultItemEditorFactory::createEditor(QVariant::Type type, QWidget *parent) const
+QWidget *QDefaultItemEditorFactory::createEditor(int userType, QWidget *parent) const
{
- switch (type) {
+ switch (userType) {
#ifndef QT_NO_COMBOBOX
case QVariant::Bool: {
QBooleanComboBox *cb = new QBooleanComboBox(parent);
@@ -258,9 +258,9 @@ QWidget *QDefaultItemEditorFactory::createEditor(QVariant::Type type, QWidget *p
return 0;
}
-QByteArray QDefaultItemEditorFactory::valuePropertyName(QVariant::Type type) const
+QByteArray QDefaultItemEditorFactory::valuePropertyName(int userType) const
{
- switch (type) {
+ switch (userType) {
#ifndef QT_NO_COMBOBOX
case QVariant::Bool:
return "currentIndex";
diff --git a/src/widgets/itemviews/qitemeditorfactory.h b/src/widgets/itemviews/qitemeditorfactory.h
index 3d3359dc1a..aff8de3a4c 100644
--- a/src/widgets/itemviews/qitemeditorfactory.h
+++ b/src/widgets/itemviews/qitemeditorfactory.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_ITEMVIEWS
@@ -103,16 +102,16 @@ public:
inline QItemEditorFactory() {}
virtual ~QItemEditorFactory();
- virtual QWidget *createEditor(QVariant::Type type, QWidget *parent) const;
- virtual QByteArray valuePropertyName(QVariant::Type type) const;
+ virtual QWidget *createEditor(int userType, QWidget *parent) const;
+ virtual QByteArray valuePropertyName(int userType) const;
- void registerEditor(QVariant::Type type, QItemEditorCreatorBase *creator);
+ void registerEditor(int userType, QItemEditorCreatorBase *creator);
static const QItemEditorFactory *defaultFactory();
static void setDefaultFactory(QItemEditorFactory *factory);
private:
- QHash<QVariant::Type, QItemEditorCreatorBase *> creatorMap;
+ QHash<int, QItemEditorCreatorBase *> creatorMap;
};
#endif // QT_NO_ITEMVIEWS
diff --git a/src/widgets/itemviews/qitemeditorfactory_p.h b/src/widgets/itemviews/qitemeditorfactory_p.h
index 613d4e0e81..e2c8530eff 100644
--- a/src/widgets/itemviews/qitemeditorfactory_p.h
+++ b/src/widgets/itemviews/qitemeditorfactory_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qlistview.cpp b/src/widgets/itemviews/qlistview.cpp
index d0b5821c93..8d069a8c7e 100644
--- a/src/widgets/itemviews/qlistview.cpp
+++ b/src/widgets/itemviews/qlistview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -3169,7 +3169,7 @@ void QListView::currentChanged(const QModelIndex &current, const QModelIndex &pr
if (QAccessible::isActive()) {
if (current.isValid()) {
int entry = visualIndex(current) + 1;
- QAccessible::updateAccessibility(this, entry, QAccessible::Focus);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::Focus, this, entry));
}
}
#endif
@@ -3188,12 +3188,12 @@ void QListView::selectionChanged(const QItemSelection &selected,
QModelIndex sel = selected.indexes().value(0);
if (sel.isValid()) {
int entry = visualIndex(sel) + 1;
- QAccessible::updateAccessibility(this, entry, QAccessible::Selection);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::Selection, this, entry));
}
QModelIndex desel = deselected.indexes().value(0);
if (desel.isValid()) {
int entry = visualIndex(desel) + 1;
- QAccessible::updateAccessibility(this, entry, QAccessible::SelectionRemove);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::SelectionRemove, this, entry));
}
}
#endif
diff --git a/src/widgets/itemviews/qlistview.h b/src/widgets/itemviews/qlistview.h
index f78806fef1..d278dec8c6 100644
--- a/src/widgets/itemviews/qlistview.h
+++ b/src/widgets/itemviews/qlistview.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_LISTVIEW
diff --git a/src/widgets/itemviews/qlistview_p.h b/src/widgets/itemviews/qlistview_p.h
index b959e66686..3ba132afd1 100644
--- a/src/widgets/itemviews/qlistview_p.h
+++ b/src/widgets/itemviews/qlistview_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qlistwidget.cpp b/src/widgets/itemviews/qlistwidget.cpp
index d99d63c15f..c8a7c664b0 100644
--- a/src/widgets/itemviews/qlistwidget.cpp
+++ b/src/widgets/itemviews/qlistwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qlistwidget.h b/src/widgets/itemviews/qlistwidget.h
index b119b62046..acd06e9cad 100644
--- a/src/widgets/itemviews/qlistwidget.h
+++ b/src/widgets/itemviews/qlistwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_LISTWIDGET
diff --git a/src/widgets/itemviews/qlistwidget_p.h b/src/widgets/itemviews/qlistwidget_p.h
index 9d6b28d813..cde6ed66a4 100644
--- a/src/widgets/itemviews/qlistwidget_p.h
+++ b/src/widgets/itemviews/qlistwidget_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qproxymodel.cpp b/src/widgets/itemviews/qproxymodel.cpp
index 861cb95ca4..c004ccb19a 100644
--- a/src/widgets/itemviews/qproxymodel.cpp
+++ b/src/widgets/itemviews/qproxymodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qproxymodel.h b/src/widgets/itemviews/qproxymodel.h
index 870ea7b003..c043573ee9 100644
--- a/src/widgets/itemviews/qproxymodel.h
+++ b/src/widgets/itemviews/qproxymodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_PROXYMODEL
diff --git a/src/widgets/itemviews/qproxymodel_p.h b/src/widgets/itemviews/qproxymodel_p.h
index 3b73e844dc..fbac2ca613 100644
--- a/src/widgets/itemviews/qproxymodel_p.h
+++ b/src/widgets/itemviews/qproxymodel_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qstandarditemmodel.cpp b/src/widgets/itemviews/qstandarditemmodel.cpp
index 7bfece75ac..112b533f4f 100644
--- a/src/widgets/itemviews/qstandarditemmodel.cpp
+++ b/src/widgets/itemviews/qstandarditemmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -2080,6 +2080,15 @@ QStandardItemModel::~QStandardItemModel()
}
/*!
+ Sets the item role names to \a roleNames.
+*/
+void QStandardItemModel::setItemRoleNames(const QHash<int,QByteArray> &roleNames)
+{
+ Q_D(QStandardItemModel);
+ d->roleNames = roleNames;
+}
+
+/*!
Removes all items (including header items) from the model and sets the
number of rows and columns to zero.
diff --git a/src/widgets/itemviews/qstandarditemmodel.h b/src/widgets/itemviews/qstandarditemmodel.h
index 41047f7ed5..e374665f20 100644
--- a/src/widgets/itemviews/qstandarditemmodel.h
+++ b/src/widgets/itemviews/qstandarditemmodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_STANDARDITEMMODEL
@@ -325,6 +324,8 @@ public:
QStandardItemModel(int rows, int columns, QObject *parent = 0);
~QStandardItemModel();
+ void setItemRoleNames(const QHash<int,QByteArray> &roleNames);
+
QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
QModelIndex parent(const QModelIndex &child) const;
diff --git a/src/widgets/itemviews/qstandarditemmodel_p.h b/src/widgets/itemviews/qstandarditemmodel_p.h
index 9fcddbe7d1..8278bd195b 100644
--- a/src/widgets/itemviews/qstandarditemmodel_p.h
+++ b/src/widgets/itemviews/qstandarditemmodel_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qstyleditemdelegate.cpp b/src/widgets/itemviews/qstyleditemdelegate.cpp
index bf6cbdb7a4..ca4c684e98 100644
--- a/src/widgets/itemviews/qstyleditemdelegate.cpp
+++ b/src/widgets/itemviews/qstyleditemdelegate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -468,8 +468,7 @@ QWidget *QStyledItemDelegate::createEditor(QWidget *parent,
Q_D(const QStyledItemDelegate);
if (!index.isValid())
return 0;
- QVariant::Type t = static_cast<QVariant::Type>(index.data(Qt::EditRole).userType());
- return d->editorFactory()->createEditor(t, parent);
+ return d->editorFactory()->createEditor(index.data(Qt::EditRole).userType(), parent);
}
/*!
@@ -505,7 +504,7 @@ void QStyledItemDelegate::setEditorData(QWidget *editor, const QModelIndex &inde
// ### Qt 5: give QComboBox a USER property
if (n.isEmpty() && editor->inherits("QComboBox"))
- n = d->editorFactory()->valuePropertyName(static_cast<QVariant::Type>(v.userType()));
+ n = d->editorFactory()->valuePropertyName(v.userType());
if (!n.isEmpty()) {
if (!v.isValid())
v = QVariant(editor->property(n).userType(), (const void *)0);
@@ -539,7 +538,7 @@ void QStyledItemDelegate::setModelData(QWidget *editor,
QByteArray n = editor->metaObject()->userProperty().name();
if (n.isEmpty())
n = d->editorFactory()->valuePropertyName(
- static_cast<QVariant::Type>(model->data(index, Qt::EditRole).userType()));
+ model->data(index, Qt::EditRole).userType());
if (!n.isEmpty())
model->setData(index, editor->property(n), Qt::EditRole);
#endif
diff --git a/src/widgets/itemviews/qstyleditemdelegate.h b/src/widgets/itemviews/qstyleditemdelegate.h
index 67f7182446..1d9f10ff00 100644
--- a/src/widgets/itemviews/qstyleditemdelegate.h
+++ b/src/widgets/itemviews/qstyleditemdelegate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_ITEMVIEWS
diff --git a/src/widgets/itemviews/qtableview.cpp b/src/widgets/itemviews/qtableview.cpp
index 625a7e353b..7e6420bb53 100644
--- a/src/widgets/itemviews/qtableview.cpp
+++ b/src/widgets/itemviews/qtableview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -3167,12 +3167,12 @@ void QTableView::currentChanged(const QModelIndex &current, const QModelIndex &p
#ifdef Q_OS_UNIX
Q_D(QTableView);
int entry = d->accessibleTable2Index(current);
- QAccessible::updateAccessibility(this, entry, QAccessible::Focus);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::Focus, this, entry));
#else
int entry = visualIndex(current) + 1;
if (horizontalHeader())
++entry;
- QAccessible::updateAccessibility(viewport(), entry, QAccessible::Focus);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::Focus, viewport(), entry));
#endif
}
}
@@ -3195,24 +3195,24 @@ void QTableView::selectionChanged(const QItemSelection &selected,
if (sel.isValid()) {
#ifdef Q_OS_UNIX
int entry = d->accessibleTable2Index(sel);
- QAccessible::updateAccessibility(this, entry, QAccessible::Selection);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::Selection, this, entry));
#else
int entry = visualIndex(sel);
if (horizontalHeader())
++entry;
- QAccessible::updateAccessibility(viewport(), entry, QAccessible::Selection);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::Selection, viewport(), entry));
#endif
}
QModelIndex desel = deselected.indexes().value(0);
if (desel.isValid()) {
#ifdef Q_OS_UNIX
int entry = d->accessibleTable2Index(desel);
- QAccessible::updateAccessibility(this, entry, QAccessible::SelectionRemove);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::SelectionRemove, this, entry));
#else
int entry = visualIndex(sel);
if (horizontalHeader())
++entry;
- QAccessible::updateAccessibility(viewport(), entry, QAccessible::SelectionRemove);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::SelectionRemove, viewport(), entry));
#endif
}
}
diff --git a/src/widgets/itemviews/qtableview.h b/src/widgets/itemviews/qtableview.h
index d2773c650e..f608d8dede 100644
--- a/src/widgets/itemviews/qtableview.h
+++ b/src/widgets/itemviews/qtableview.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_TABLEVIEW
diff --git a/src/widgets/itemviews/qtableview_p.h b/src/widgets/itemviews/qtableview_p.h
index 49ec36f680..13e526f93a 100644
--- a/src/widgets/itemviews/qtableview_p.h
+++ b/src/widgets/itemviews/qtableview_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qtablewidget.cpp b/src/widgets/itemviews/qtablewidget.cpp
index abfba19117..82055ad11e 100644
--- a/src/widgets/itemviews/qtablewidget.cpp
+++ b/src/widgets/itemviews/qtablewidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qtablewidget.h b/src/widgets/itemviews/qtablewidget.h
index 37b6d0f530..3d08e204d1 100644
--- a/src/widgets/itemviews/qtablewidget.h
+++ b/src/widgets/itemviews/qtablewidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_TABLEWIDGET
diff --git a/src/widgets/itemviews/qtablewidget_p.h b/src/widgets/itemviews/qtablewidget_p.h
index 881c4bd8a3..eae992f186 100644
--- a/src/widgets/itemviews/qtablewidget_p.h
+++ b/src/widgets/itemviews/qtablewidget_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qtreeview.cpp b/src/widgets/itemviews/qtreeview.cpp
index 368be3a6c8..179b122805 100644
--- a/src/widgets/itemviews/qtreeview.cpp
+++ b/src/widgets/itemviews/qtreeview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -2937,7 +2937,7 @@ void QTreeViewPrivate::insertViewItems(int pos, int count, const QTreeViewItem &
#ifndef QT_NO_ACCESSIBILITY
#ifdef Q_OS_UNIX
if (QAccessible::isActive()) {
- QAccessible::updateAccessibility(q, 0, QAccessible::TableModelChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::TableModelChanged, q, 0));
}
#endif
#endif
@@ -2955,7 +2955,7 @@ void QTreeViewPrivate::removeViewItems(int pos, int count)
#ifndef QT_NO_ACCESSIBILITY
#ifdef Q_OS_UNIX
if (QAccessible::isActive()) {
- QAccessible::updateAccessibility(q, 0, QAccessible::TableModelChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::TableModelChanged, q, 0));
}
#endif
#endif
@@ -3769,7 +3769,7 @@ void QTreeView::currentChanged(const QModelIndex &current, const QModelIndex &pr
if (QAccessible::isActive() && current.isValid()) {
#ifdef Q_OS_UNIX
int entry = (visualIndex(current) + (header()?1:0))*current.model()->columnCount()+current.column() + 1;
- QAccessible::updateAccessibility(this, entry, QAccessible::Focus);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::Focus, this, entry));
#else
int entry = visualIndex(current) + 1;
if (header())
@@ -3794,13 +3794,13 @@ void QTreeView::selectionChanged(const QItemSelection &selected,
if (sel.isValid()) {
int entry = (visualIndex(sel) + (header()?1:0))*sel.model()->columnCount()+sel.column() + 1;
Q_ASSERT(entry > 0);
- QAccessible::updateAccessibility(this, entry, QAccessible::Selection);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::Selection, this, entry));
}
QModelIndex desel = deselected.indexes().value(0);
if (desel.isValid()) {
int entry = (visualIndex(desel) + (header()?1:0))*desel.model()->columnCount()+desel.column() + 1;
Q_ASSERT(entry > 0);
- QAccessible::updateAccessibility(this, entry, QAccessible::SelectionRemove);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::SelectionRemove, this, entry));
}
}
#endif
diff --git a/src/widgets/itemviews/qtreeview.h b/src/widgets/itemviews/qtreeview.h
index bc68fd413a..72cfe1722d 100644
--- a/src/widgets/itemviews/qtreeview.h
+++ b/src/widgets/itemviews/qtreeview.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_TREEVIEW
diff --git a/src/widgets/itemviews/qtreeview_p.h b/src/widgets/itemviews/qtreeview_p.h
index 7f6413d76c..c8fb8853a6 100644
--- a/src/widgets/itemviews/qtreeview_p.h
+++ b/src/widgets/itemviews/qtreeview_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qtreewidget.cpp b/src/widgets/itemviews/qtreewidget.cpp
index 71797b182c..ca8b9c4e09 100644
--- a/src/widgets/itemviews/qtreewidget.cpp
+++ b/src/widgets/itemviews/qtreewidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qtreewidget.h b/src/widgets/itemviews/qtreewidget.h
index 9f30e94580..c9654d3e8e 100644
--- a/src/widgets/itemviews/qtreewidget.h
+++ b/src/widgets/itemviews/qtreewidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_TREEWIDGET
diff --git a/src/widgets/itemviews/qtreewidget_p.h b/src/widgets/itemviews/qtreewidget_p.h
index a26666dd40..4d4f872b15 100644
--- a/src/widgets/itemviews/qtreewidget_p.h
+++ b/src/widgets/itemviews/qtreewidget_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qtreewidgetitemiterator.cpp b/src/widgets/itemviews/qtreewidgetitemiterator.cpp
index 5fdab5d024..116860ce89 100644
--- a/src/widgets/itemviews/qtreewidgetitemiterator.cpp
+++ b/src/widgets/itemviews/qtreewidgetitemiterator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qtreewidgetitemiterator.h b/src/widgets/itemviews/qtreewidgetitemiterator.h
index d994b88b12..99c8b3cad9 100644
--- a/src/widgets/itemviews/qtreewidgetitemiterator.h
+++ b/src/widgets/itemviews/qtreewidgetitemiterator.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_TREEWIDGET
diff --git a/src/widgets/itemviews/qtreewidgetitemiterator_p.h b/src/widgets/itemviews/qtreewidgetitemiterator_p.h
index c338b944a1..98f4096578 100644
--- a/src/widgets/itemviews/qtreewidgetitemiterator_p.h
+++ b/src/widgets/itemviews/qtreewidgetitemiterator_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/itemviews/qwidgetitemdata_p.h b/src/widgets/itemviews/qwidgetitemdata_p.h
index cae3e8d1ff..491169e791 100644
--- a/src/widgets/itemviews/qwidgetitemdata_p.h
+++ b/src/widgets/itemviews/qwidgetitemdata_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/kernel.pri b/src/widgets/kernel/kernel.pri
index 1f27602466..32934dc705 100644
--- a/src/widgets/kernel/kernel.pri
+++ b/src/widgets/kernel/kernel.pri
@@ -20,7 +20,6 @@ HEADERS += \
kernel/qiconloader_p.h \
kernel/qiconengine.h \
kernel/qiconengineplugin.h \
- kernel/qinputcontext.h \
kernel/qlayout.h \
kernel/qlayout_p.h \
kernel/qlayoutengine_p.h \
@@ -44,8 +43,7 @@ HEADERS += \
kernel/qguiplatformplugin_p.h \
kernel/qdesktopwidget_qpa_p.h \
kernel/qwidgetwindow_qpa_p.h \
- kernel/qplatformmenu_qpa.h \
- kernel/qplatformdialoghelper_qpa.h
+ kernel/qplatformmenu_qpa.h
SOURCES += \
kernel/qaction.cpp \
@@ -59,7 +57,6 @@ SOURCES += \
kernel/qiconloader.cpp \
kernel/qiconengine.cpp \
kernel/qiconengineplugin.cpp \
- kernel/qinputcontext.cpp \
kernel/qlayout.cpp \
kernel/qlayoutengine.cpp \
kernel/qlayoutitem.cpp \
@@ -81,8 +78,7 @@ SOURCES += \
kernel/qdesktopwidget_qpa.cpp \
kernel/qwidget_qpa.cpp \
kernel/qwidgetwindow_qpa.cpp \
- kernel/qplatformmenu_qpa.cpp \
- kernel/qplatformdialoghelper_qpa.cpp
+ kernel/qplatformmenu_qpa.cpp
# TODO
false:!x11:mac {
diff --git a/src/widgets/kernel/qaction.cpp b/src/widgets/kernel/qaction.cpp
index 408e088f0f..d3d63a8c7b 100644
--- a/src/widgets/kernel/qaction.cpp
+++ b/src/widgets/kernel/qaction.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -662,10 +662,6 @@ QActionGroup *QAction::actionGroup() const
it is displayed to the left of the menu text. There is no default
icon.
- On Symbian the icons which are passed to softkeys, i.e. to actions with
- softkey role, need to have pixmap alpha channel correctly set otherwise
- drawing artifacts will appear when softkey is pressed down.
-
If a null icon (QIcon::isNull() is passed into this function,
the icon of the action is cleared.
*/
diff --git a/src/widgets/kernel/qaction.h b/src/widgets/kernel/qaction.h
index a2cafa2027..485b5928b0 100644
--- a/src/widgets/kernel/qaction.h
+++ b/src/widgets/kernel/qaction.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_ACTION
diff --git a/src/widgets/kernel/qaction_p.h b/src/widgets/kernel/qaction_p.h
index d57cd05cff..7a8cd5e0fe 100644
--- a/src/widgets/kernel/qaction_p.h
+++ b/src/widgets/kernel/qaction_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qactiongroup.cpp b/src/widgets/kernel/qactiongroup.cpp
index 67e0ee7adf..46ca378bbe 100644
--- a/src/widgets/kernel/qactiongroup.cpp
+++ b/src/widgets/kernel/qactiongroup.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qactiongroup.h b/src/widgets/kernel/qactiongroup.h
index bdef33294c..3cff248b65 100644
--- a/src/widgets/kernel/qactiongroup.h
+++ b/src/widgets/kernel/qactiongroup.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_ACTION
diff --git a/src/widgets/kernel/qapplication.cpp b/src/widgets/kernel/qapplication.cpp
index fc295eb874..ae15c9f62a 100644
--- a/src/widgets/kernel/qapplication.cpp
+++ b/src/widgets/kernel/qapplication.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -69,9 +69,8 @@
#include "qmessagebox.h"
#include <QtWidgets/qgraphicsproxywidget.h>
#include <QtGui/qstylehints.h>
-#include <QtGui/qinputpanel.h>
+#include <QtGui/qinputmethod.h>
-#include "qinputcontext.h"
#include "private/qkeymapper_p.h"
#ifdef Q_WS_X11
@@ -141,10 +140,6 @@ Q_CORE_EXPORT void qt_call_post_routines();
QApplicationPrivate *QApplicationPrivate::self = 0;
-QInputContext *QApplicationPrivate::inputContext = 0;
-
-bool QApplicationPrivate::quitOnLastWindowClosed = true;
-
#ifdef Q_WS_WINCE
int QApplicationPrivate::autoMaximizeThreshold = -1;
bool QApplicationPrivate::autoSipEnabled = false;
@@ -161,8 +156,6 @@ QApplicationPrivate::QApplicationPrivate(int &argc, char **argv, QApplication::T
is_session_restored = false;
#endif
- quitOnLastWindowClosed = true;
-
#if defined(Q_WS_QWS) && !defined(QT_NO_DIRECTPAINTER)
directPainters = 0;
#endif
@@ -1204,7 +1197,7 @@ bool QApplication::compressEvent(QEvent *event, QObject *receiver, QPostEventLis
a virtual keyboard on devices which have very few or no keys.
\bold{ The property only has an effect on platforms which use software input
- panels, such as Windows CE and Symbian.}
+ panels, such as Windows CE.}
The default is platform dependent.
*/
@@ -1980,8 +1973,7 @@ void QApplicationPrivate::setFocusWidget(QWidget *focus, Qt::FocusReason reason)
// or it is not created fully yet.
|| (focus_widget && (!focus_widget->testAttribute(Qt::WA_InputMethodEnabled)
|| !focus_widget->testAttribute(Qt::WA_WState_Created))))) {
- qApp->inputPanel()->reset();
- qApp->inputPanel()->setInputItem(0);
+ qApp->inputMethod()->reset();
}
#endif //QT_NO_IM
@@ -2005,13 +1997,6 @@ void QApplicationPrivate::setFocusWidget(QWidget *focus, Qt::FocusReason reason)
QApplication::sendEvent(that->style(), &out);
}
if(focus && QApplicationPrivate::focus_widget == focus) {
-#ifndef QT_NO_IM
- if (focus->testAttribute(Qt::WA_InputMethodEnabled)
- && focus->testAttribute(Qt::WA_WState_Created)
- && focus->isEnabled()) {
- qApp->inputPanel()->setInputItem(focus);
- }
-#endif //QT_NO_IM
QFocusEvent in(QEvent::FocusIn, reason);
QPointer<QWidget> that = focus;
QApplication::sendEvent(focus, &in);
@@ -2019,6 +2004,7 @@ void QApplicationPrivate::setFocusWidget(QWidget *focus, Qt::FocusReason reason)
QApplication::sendEvent(that->style(), &in);
}
emit qApp->focusChanged(prev, focus_widget);
+ emit qApp->focusObjectChanged(focus_widget);
}
}
}
@@ -2112,29 +2098,6 @@ void QApplication::aboutQt()
#endif // QT_NO_MESSAGEBOX
}
-
-/*!
- \fn void QApplication::lastWindowClosed()
-
- This signal is emitted from QApplication::exec() when the last visible
- primary window (i.e. window with no parent) with the Qt::WA_QuitOnClose
- attribute set is closed.
-
- By default,
-
- \list
- \o this attribute is set for all widgets except transient windows such
- as splash screens, tool windows, and popup menus
-
- \o QApplication implicitly quits when this signal is emitted.
- \endlist
-
- This feature can be turned off by setting \l quitOnLastWindowClosed to
- false.
-
- \sa QWidget::close()
-*/
-
/*!
\since 4.1
\fn void QApplication::focusChanged(QWidget *old, QWidget *now)
@@ -3700,11 +3663,11 @@ bool QApplication::notify(QObject *receiver, QEvent *e)
{
QWidget *w = static_cast<QWidget *>(receiver);
QTabletEvent *tablet = static_cast<QTabletEvent*>(e);
- QPoint relpos = tablet->pos();
+ QPointF relpos = tablet->posF();
bool eventAccepted = tablet->isAccepted();
while (w) {
- QTabletEvent te(tablet->type(), relpos, tablet->globalPos(),
- tablet->hiResGlobalPos(), tablet->device(), tablet->pointerType(),
+ QTabletEvent te(tablet->type(), relpos, tablet->globalPosF(),
+ tablet->device(), tablet->pointerType(),
tablet->pressure(), tablet->xTilt(), tablet->yTilt(),
tablet->tangentialPressure(), tablet->rotation(), tablet->z(),
tablet->modifiers(), tablet->uniqueId());
@@ -3799,7 +3762,7 @@ bool QApplication::notify(QObject *receiver, QEvent *e)
}
if (w->isWindow())
break;
- dragEvent->p = w->mapToParent(dragEvent->p);
+ dragEvent->p = w->mapToParent(dragEvent->p.toPoint());
w = w->parentWidget();
}
}
@@ -3838,7 +3801,7 @@ bool QApplication::notify(QObject *receiver, QEvent *e)
QDropEvent *dragEvent = static_cast<QDropEvent *>(e);
QWidget *origReciver = static_cast<QWidget *>(receiver);
while (origReciver && w != origReciver) {
- dragEvent->p = origReciver->mapToParent(dragEvent->p);
+ dragEvent->p = origReciver->mapToParent(dragEvent->p.toPoint());
origReciver = origReciver->parentWidget();
}
}
@@ -3907,10 +3870,10 @@ bool QApplication::notify(QObject *receiver, QEvent *e)
break;
}
case QEvent::RequestSoftwareInputPanel:
- inputPanel()->show();
+ inputMethod()->show();
break;
case QEvent::CloseSoftwareInputPanel:
- inputPanel()->hide();
+ inputMethod()->hide();
break;
#ifndef QT_NO_GESTURES
@@ -4609,45 +4572,6 @@ bool QApplicationPrivate::inPopupMode() const
return QApplicationPrivate::popupWidgets != 0;
}
-/*!
- \property QApplication::quitOnLastWindowClosed
-
- \brief whether the application implicitly quits when the last window is
- closed.
-
- The default is true.
-
- If this property is true, the applications quits when the last visible
- primary window (i.e. window with no parent) with the Qt::WA_QuitOnClose
- attribute set is closed. By default this attribute is set for all widgets
- except for sub-windows. Refer to \l{Qt::WindowType} for a detailed list of
- Qt::Window objects.
-
- \sa quit(), QWidget::close()
- */
-
-void QApplication::setQuitOnLastWindowClosed(bool quit)
-{
- QApplicationPrivate::quitOnLastWindowClosed = quit;
-}
-
-bool QApplication::quitOnLastWindowClosed()
-{
- return QApplicationPrivate::quitOnLastWindowClosed;
-}
-
-void QApplicationPrivate::emitLastWindowClosed()
-{
- if (qApp && qApp->d_func()->in_exec) {
- if (QApplicationPrivate::quitOnLastWindowClosed) {
- // get ready to quit, this event might be removed if the
- // event loop is re-entered, however
- QApplication::postEvent(qApp, new QEvent(QEvent::Quit));
- }
- emit qApp->lastWindowClosed();
- }
-}
-
/*! \variable QApplication::NormalColors
\compat
@@ -4664,19 +4588,13 @@ void QApplicationPrivate::emitLastWindowClosed()
/*!
Sets the kind of focus navigation Qt should use to \a mode.
- This feature is available in Qt for Embedded Linux, Symbian and Windows CE
+ This feature is available in Qt for Embedded Linux, and Windows CE
only.
\note On Windows CE this feature is disabled by default for touch device
mkspecs. To enable keypad navigation, build Qt with
QT_KEYPAD_NAVIGATION defined.
- \note On Symbian, setting the mode to Qt::NavigationModeCursorAuto will enable a
- virtual mouse cursor on non touchscreen devices, which is controlled
- by the cursor keys if there is no analog pointer device.
- On other platforms and on touchscreen devices, it has the same
- meaning as Qt::NavigationModeNone.
-
\since 4.6
\sa keypadNavigationEnabled()
@@ -4689,16 +4607,12 @@ void QApplication::setNavigationMode(Qt::NavigationMode mode)
/*!
Returns what kind of focus navigation Qt is using.
- This feature is available in Qt for Embedded Linux, Symbian and Windows CE
- only.
+ This feature is available in Qt for Embedded Linux, and Windows CE only.
\note On Windows CE this feature is disabled by default for touch device
mkspecs. To enable keypad navigation, build Qt with
QT_KEYPAD_NAVIGATION defined.
- \note On Symbian, the default mode is Qt::NavigationModeNone for touch
- devices, and Qt::NavigationModeKeypadDirectional.
-
\since 4.6
\sa keypadNavigationEnabled()
@@ -4712,8 +4626,7 @@ Qt::NavigationMode QApplication::navigationMode()
Sets whether Qt should use focus navigation suitable for use with a
minimal keypad.
- This feature is available in Qt for Embedded Linux, Symbian and Windows CE
- only.
+ This feature is available in Qt for Embedded Linux, and Windows CE only.
\note On Windows CE this feature is disabled by default for touch device
mkspecs. To enable keypad navigation, build Qt with
@@ -4734,10 +4647,9 @@ void QApplication::setKeypadNavigationEnabled(bool enable)
/*!
Returns true if Qt is set to use keypad navigation; otherwise returns
- false. The default value is true on Symbian, but false on other platforms.
+ false. The default value is false.
- This feature is available in Qt for Embedded Linux, Symbian and Windows CE
- only.
+ This feature is available in Qt for Embedded Linux, and Windows CE only.
\note On Windows CE this feature is disabled by default for touch device
mkspecs. To enable keypad navigation, build Qt with
@@ -4932,40 +4844,27 @@ int QApplication::keyboardInputInterval()
\sa QCoreApplication::instance()
*/
-#ifndef QT_NO_IM
-// ************************************************************************
-// Input Method support
-// ************************************************************************
-
-/*
- This function replaces the QInputContext instance used by the application
- with \a inputContext.
+/*!
+ \since 4.2
+ \obsolete
- Qt takes ownership of the given \a inputContext.
+ Returns the current keyboard input locale. Replaced with QInputMethod::locale()
*/
-void QApplicationPrivate::setInputContext(QInputContext *newInputContext)
+QLocale QApplication::keyboardInputLocale()
{
- Q_Q(QApplication);
-
- if (newInputContext == inputContext)
- return;
- if (!newInputContext) {
- qWarning("QApplicationPrivate::setInputContext: called with 0 input context");
- return;
- }
- delete inputContext;
- inputContext = newInputContext;
- inputContext->setParent(q);
+ return qApp ? qApp->inputMethod()->locale() : QLocale::c();
}
/*!
- Returns the QInputContext instance used by the application.
+ \since 4.2
+ \obsolete
+
+ Returns the current keyboard input direction. Replaced with QInputMethod::inputDirection()
*/
-QInputContext *QApplication::inputContext() const
+Qt::LayoutDirection QApplication::keyboardInputDirection()
{
- return QApplicationPrivate::inputContext;
+ return qApp ? qApp->inputMethod()->inputDirection() : Qt::LeftToRight;
}
-#endif // QT_NO_IM
bool qt_sendSpontaneousEvent(QObject *receiver, QEvent *event)
{
diff --git a/src/widgets/kernel/qapplication.h b/src/widgets/kernel/qapplication.h
index 4347aa3521..b613b0f7c0 100644
--- a/src/widgets/kernel/qapplication.h
+++ b/src/widgets/kernel/qapplication.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,14 +56,12 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QSessionManager;
class QDesktopWidget;
class QStyle;
class QEventLoop;
class QIcon;
-class QInputContext;
template <typename T> class QList;
class QLocale;
class QPlatformNativeInterface;
@@ -88,7 +86,6 @@ class Q_WIDGETS_EXPORT QApplication : public QGuiApplication
Q_PROPERTY(QSize globalStrut READ globalStrut WRITE setGlobalStrut)
Q_PROPERTY(int startDragTime READ startDragTime WRITE setStartDragTime)
Q_PROPERTY(int startDragDistance READ startDragDistance WRITE setStartDragDistance)
- Q_PROPERTY(bool quitOnLastWindowClosed READ quitOnLastWindowClosed WRITE setQuitOnLastWindowClosed)
#ifndef QT_NO_STYLE_STYLESHEET
Q_PROPERTY(QString styleSheet READ styleSheet WRITE setStyleSheet)
#endif
@@ -222,17 +219,12 @@ public:
virtual void saveState(QSessionManager& sm);
#endif
-#ifndef QT_NO_IM
- QInputContext *inputContext() const;
-#endif
+ QT_DEPRECATED static QLocale keyboardInputLocale();
+ QT_DEPRECATED static Qt::LayoutDirection keyboardInputDirection();
static int exec();
bool notify(QObject *, QEvent *);
-
- static void setQuitOnLastWindowClosed(bool quit);
- static bool quitOnLastWindowClosed();
-
#ifdef QT_KEYPAD_NAVIGATION
static Q_DECL_DEPRECATED void setKeypadNavigationEnabled(bool);
static bool keypadNavigationEnabled();
@@ -303,7 +295,6 @@ private:
friend class QAction;
#if defined(Q_WS_QWS)
- friend class QInputContext;
friend class QWSDirectPainterSurface;
friend class QDirectPainter;
friend class QDirectPainterPrivate;
diff --git a/src/widgets/kernel/qapplication_p.h b/src/widgets/kernel/qapplication_p.h
index f8d02ed437..601c511438 100644
--- a/src/widgets/kernel/qapplication_p.h
+++ b/src/widgets/kernel/qapplication_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -79,7 +79,6 @@ QT_BEGIN_NAMESPACE
class QClipboard;
class QGraphicsScene;
-class QInputContext;
class QObject;
class QWidget;
class QSocketNotifier;
@@ -188,8 +187,6 @@ public:
static bool qws_apply_settings();
static QWidget *findWidget(const QObjectList&, const QPoint &, bool rec);
#endif
- static bool quitOnLastWindowClosed;
- static void emitLastWindowClosed();
#ifdef Q_WS_WINCE
static int autoMaximizeThreshold;
#endif
@@ -251,12 +248,6 @@ public:
QPoint toolTipPos, toolTipGlobalPos, hoverGlobalPos;
QPointer<QWidget> toolTipWidget;
-#ifndef QT_NO_IM
- void setInputContext(QInputContext *);
-#endif
-
- static QInputContext *inputContext;
-
static Qt::MouseButtons mouse_buttons;
static Qt::KeyboardModifiers modifier_buttons;
@@ -350,11 +341,23 @@ public:
QWidget *native, QWidget **buttonDown, QPointer<QWidget> &lastMouseReceiver,
bool spontaneous = true);
void sendSyntheticEnterLeave(QWidget *widget);
+
+ static QWindow *windowForWidget(const QWidget *widget)
+ {
+ if (QWindow *window = widget->windowHandle())
+ return window;
+ if (const QWidget *nativeParent = widget->nativeParentWidget())
+ return nativeParent->windowHandle();
+ return 0;
+ }
+
#ifdef Q_OS_WIN
- static HWND getHWNDForWidget(QWidget *widget)
+ static HWND getHWNDForWidget(const QWidget *widget)
{
- QWindow *window = widget->windowHandle();
- return static_cast<HWND> (QGuiApplication::platformNativeInterface()->nativeResourceForWindow("handle", window));
+ if (QWindow *window = windowForWidget(widget))
+ return static_cast<HWND> (QGuiApplication::platformNativeInterface()->
+ nativeResourceForWindow(QByteArrayLiteral("handle"), window));
+ return 0;
}
#endif
diff --git a/src/widgets/kernel/qapplication_qpa.cpp b/src/widgets/kernel/qapplication_qpa.cpp
index d61b8560a8..e221df7ef7 100644
--- a/src/widgets/kernel/qapplication_qpa.cpp
+++ b/src/widgets/kernel/qapplication_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@
#include "private/qplatformintegrationfactory_qpa_p.h"
#include <qdesktopwidget.h>
-#include <qinputcontext.h>
#include <QPlatformCursor>
#include <qdebug.h>
#include <QWindowSystemInterface>
@@ -64,6 +63,10 @@
#include "qdesktopwidget_qpa_p.h"
#include "qwidgetwindow_qpa_p.h"
+#ifdef Q_OS_WIN
+# include <QtCore/qt_windows.h> // for qt_win_display_dc()
+#endif
+
QT_BEGIN_NAMESPACE
static QString appName;
@@ -391,13 +394,10 @@ void qt_init(QApplicationPrivate *priv, int type)
QColormap::initialize();
qApp->setObjectName(appName);
-
-#ifndef QT_NO_QWS_INPUTMETHODS
- priv->setInputContext(new QInputContext(qApp));
-#endif
}
#ifdef Q_OS_WIN
+// #fixme: Remove.
static HDC displayDC = 0; // display device context
Q_WIDGETS_EXPORT HDC qt_win_display_dc() // get display DC
@@ -413,8 +413,6 @@ void qt_cleanup()
{
QPixmapCache::clear();
QColormap::cleanup();
- delete QApplicationPrivate::inputContext;
- QApplicationPrivate::inputContext = 0;
QApplicationPrivate::active_window = 0; //### this should not be necessary
#ifdef Q_OS_WIN
diff --git a/src/widgets/kernel/qboxlayout.cpp b/src/widgets/kernel/qboxlayout.cpp
index e8d653e25d..4b7153715d 100644
--- a/src/widgets/kernel/qboxlayout.cpp
+++ b/src/widgets/kernel/qboxlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qboxlayout.h b/src/widgets/kernel/qboxlayout.h
index 8df0fbca94..aac46ef1ec 100644
--- a/src/widgets/kernel/qboxlayout.h
+++ b/src/widgets/kernel/qboxlayout.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QBoxLayoutPrivate;
diff --git a/src/widgets/kernel/qdesktopwidget.cpp b/src/widgets/kernel/qdesktopwidget.cpp
index 871715fed4..7adad05402 100644
--- a/src/widgets/kernel/qdesktopwidget.cpp
+++ b/src/widgets/kernel/qdesktopwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qdesktopwidget.h b/src/widgets/kernel/qdesktopwidget.h
index ec38b32239..e8678fb0a3 100644
--- a/src/widgets/kernel/qdesktopwidget.h
+++ b/src/widgets/kernel/qdesktopwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QApplication;
class QDesktopWidgetPrivate;
diff --git a/src/widgets/kernel/qdesktopwidget.qdoc b/src/widgets/kernel/qdesktopwidget.qdoc
index 10690dfe35..1a5024aaf7 100644
--- a/src/widgets/kernel/qdesktopwidget.qdoc
+++ b/src/widgets/kernel/qdesktopwidget.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qdesktopwidget_qpa.cpp b/src/widgets/kernel/qdesktopwidget_qpa.cpp
index 8ac2b357c6..56efb27e78 100644
--- a/src/widgets/kernel/qdesktopwidget_qpa.cpp
+++ b/src/widgets/kernel/qdesktopwidget_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qdesktopwidget_qpa_p.h b/src/widgets/kernel/qdesktopwidget_qpa_p.h
index 50b5f4826e..d5924b5f69 100644
--- a/src/widgets/kernel/qdesktopwidget_qpa_p.h
+++ b/src/widgets/kernel/qdesktopwidget_qpa_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qformlayout.cpp b/src/widgets/kernel/qformlayout.cpp
index 955ef4e3c7..dd61528124 100644
--- a/src/widgets/kernel/qformlayout.cpp
+++ b/src/widgets/kernel/qformlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1124,15 +1124,14 @@ QStyle* QFormLayoutPrivate::getStyle() const
\value DontWrapRows
Fields are always laid out next to their label. This is
- the default policy for all styles except Qt Extended styles
- and QS60Style.
+ the default policy for all styles except Qt Extended styles.
\value WrapLongRows
Labels are given enough horizontal space to fit the widest label,
and the rest of the space is given to the fields. If the minimum
size of a field pair is wider than the available space, the field
is wrapped to the next line. This is the default policy for
- Qt Extended styles and and QS60Style.
+ Qt Extended styles.
\value WrapAllRows
Fields are always laid out below their label.
@@ -1721,7 +1720,7 @@ QFormLayout::FieldGrowthPolicy QFormLayout::fieldGrowthPolicy() const
\brief the way in which the form's rows wrap
The default value depends on the widget or application style. For
- Qt Extended styles and QS60Style, the default is WrapLongRows;
+ Qt Extended styles, the default is WrapLongRows;
for the other styles, the default is DontWrapRows.
If you want to display each label above its associated field
diff --git a/src/widgets/kernel/qformlayout.h b/src/widgets/kernel/qformlayout.h
index b37d2b6e3a..dab97c18a9 100644
--- a/src/widgets/kernel/qformlayout.h
+++ b/src/widgets/kernel/qformlayout.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QFormLayoutPrivate;
diff --git a/src/widgets/kernel/qgesture.cpp b/src/widgets/kernel/qgesture.cpp
index f79b577765..070af65c70 100644
--- a/src/widgets/kernel/qgesture.cpp
+++ b/src/widgets/kernel/qgesture.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qgesture.h b/src/widgets/kernel/qgesture.h
index 25dba1c886..8c412680b8 100644
--- a/src/widgets/kernel/qgesture.h
+++ b/src/widgets/kernel/qgesture.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,6 @@ Q_DECLARE_METATYPE(Qt::GestureType)
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QGesturePrivate;
class Q_WIDGETS_EXPORT QGesture : public QObject
diff --git a/src/widgets/kernel/qgesture_p.h b/src/widgets/kernel/qgesture_p.h
index be8e38cd7f..ceccf17a6c 100644
--- a/src/widgets/kernel/qgesture_p.h
+++ b/src/widgets/kernel/qgesture_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qgesturemanager.cpp b/src/widgets/kernel/qgesturemanager.cpp
index 5abbbde4cb..2e9edb1481 100644
--- a/src/widgets/kernel/qgesturemanager.cpp
+++ b/src/widgets/kernel/qgesturemanager.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qgesturemanager_p.h b/src/widgets/kernel/qgesturemanager_p.h
index 800d7c5ad9..68945a7b66 100644
--- a/src/widgets/kernel/qgesturemanager_p.h
+++ b/src/widgets/kernel/qgesturemanager_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qgesturerecognizer.cpp b/src/widgets/kernel/qgesturerecognizer.cpp
index fc0e918987..b8e85aabb9 100644
--- a/src/widgets/kernel/qgesturerecognizer.cpp
+++ b/src/widgets/kernel/qgesturerecognizer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qgesturerecognizer.h b/src/widgets/kernel/qgesturerecognizer.h
index 92f9f622c0..23ecbe7a6d 100644
--- a/src/widgets/kernel/qgesturerecognizer.h
+++ b/src/widgets/kernel/qgesturerecognizer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QObject;
class QEvent;
diff --git a/src/widgets/kernel/qgridlayout.cpp b/src/widgets/kernel/qgridlayout.cpp
index 80834a0105..3607d88d9e 100644
--- a/src/widgets/kernel/qgridlayout.cpp
+++ b/src/widgets/kernel/qgridlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qgridlayout.h b/src/widgets/kernel/qgridlayout.h
index f72ed32dcb..02789b7794 100644
--- a/src/widgets/kernel/qgridlayout.h
+++ b/src/widgets/kernel/qgridlayout.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QGridLayoutPrivate;
diff --git a/src/widgets/kernel/qguiplatformplugin.cpp b/src/widgets/kernel/qguiplatformplugin.cpp
index 7faf17b9ab..f5f00cc769 100644
--- a/src/widgets/kernel/qguiplatformplugin.cpp
+++ b/src/widgets/kernel/qguiplatformplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -135,7 +135,7 @@ QString QGuiPlatformPlugin::styleName()
return QLatin1String("WindowsMobile");
else
return QLatin1String("WindowsCE");
-#elif defined(Q_WS_WIN)
+#elif defined(Q_OS_WIN)
if ((QSysInfo::WindowsVersion >= QSysInfo::WV_VISTA
&& QSysInfo::WindowsVersion < QSysInfo::WV_NT_based))
return QLatin1String("WindowsVista");
diff --git a/src/widgets/kernel/qguiplatformplugin_p.h b/src/widgets/kernel/qguiplatformplugin_p.h
index 74a01b9d58..09b6564061 100644
--- a/src/widgets/kernel/qguiplatformplugin_p.h
+++ b/src/widgets/kernel/qguiplatformplugin_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -61,7 +61,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QStyle;
class QPalette;
diff --git a/src/widgets/kernel/qicon.cpp b/src/widgets/kernel/qicon.cpp
index 185542420e..1d3236aa46 100644
--- a/src/widgets/kernel/qicon.cpp
+++ b/src/widgets/kernel/qicon.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -128,9 +128,7 @@ static void qt_cleanup_icon_cache()
QIconPrivate::QIconPrivate()
: engine(0), ref(1),
serialNum(serialNumCounter.fetchAndAddRelaxed(1)),
- detach_no(0),
- engine_version(2),
- v1RefCount(0)
+ detach_no(0)
{
}
@@ -139,7 +137,7 @@ QPixmapIconEngine::QPixmapIconEngine()
}
QPixmapIconEngine::QPixmapIconEngine(const QPixmapIconEngine &other)
- : QIconEngineV2(other), pixmaps(other.pixmaps)
+ : QIconEngine(other), pixmaps(other.pixmaps)
{
}
@@ -374,7 +372,7 @@ QString QPixmapIconEngine::key() const
return QLatin1String("QPixmapIconEngine");
}
-QIconEngineV2 *QPixmapIconEngine::clone() const
+QIconEngine *QPixmapIconEngine::clone() const
{
return new QPixmapIconEngine(*this);
}
@@ -430,9 +428,9 @@ bool QPixmapIconEngine::write(QDataStream &out) const
void QPixmapIconEngine::virtual_hook(int id, void *data)
{
switch (id) {
- case QIconEngineV2::AvailableSizesHook: {
- QIconEngineV2::AvailableSizesArgument &arg =
- *reinterpret_cast<QIconEngineV2::AvailableSizesArgument*>(data);
+ case QIconEngine::AvailableSizesHook: {
+ QIconEngine::AvailableSizesArgument &arg =
+ *reinterpret_cast<QIconEngine::AvailableSizesArgument*>(data);
arg.sizes.clear();
for (int i = 0; i < pixmaps.size(); ++i) {
QPixmapIconEngineEntry &pe = pixmaps[i];
@@ -446,15 +444,13 @@ void QPixmapIconEngine::virtual_hook(int id, void *data)
break;
}
default:
- QIconEngineV2::virtual_hook(id, data);
+ QIconEngine::virtual_hook(id, data);
}
}
#ifndef QT_NO_LIBRARY
Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loader,
(QIconEngineFactoryInterface_iid, QLatin1String("/iconengines"), Qt::CaseInsensitive))
-Q_GLOBAL_STATIC_WITH_ARGS(QFactoryLoader, loaderV2,
- (QIconEngineFactoryInterfaceV2_iid, QLatin1String("/iconengines"), Qt::CaseInsensitive))
#endif
@@ -584,19 +580,6 @@ QIcon::QIcon(const QString &fileName)
QIcon::QIcon(QIconEngine *engine)
:d(new QIconPrivate)
{
- d->engine_version = 1;
- d->engine = engine;
- d->v1RefCount = new QAtomicInt(1);
-}
-
-/*!
- Creates an icon with a specific icon \a engine. The icon takes
- ownership of the engine.
-*/
-QIcon::QIcon(QIconEngineV2 *engine)
- :d(new QIconPrivate)
-{
- d->engine_version = 2;
d->engine = engine;
}
@@ -777,15 +760,7 @@ void QIcon::detach()
if (d) {
if (d->ref.load() != 1) {
QIconPrivate *x = new QIconPrivate;
- if (d->engine_version > 1) {
- QIconEngineV2 *engine = static_cast<QIconEngineV2 *>(d->engine);
- x->engine = engine->clone();
- } else {
- x->engine = d->engine;
- x->v1RefCount = d->v1RefCount;
- x->v1RefCount->ref();
- }
- x->engine_version = d->engine_version;
+ x->engine = d->engine->clone();
if (!d->ref.deref())
delete d;
d = x;
@@ -851,23 +826,12 @@ void QIcon::addFile(const QString &fileName, const QSize &size, Mode mode, State
QString suffix = info.suffix();
if (!suffix.isEmpty()) {
// first try version 2 engines..
- if (QIconEngineFactoryInterfaceV2 *factory = qobject_cast<QIconEngineFactoryInterfaceV2*>(loaderV2()->instance(suffix))) {
+ if (QIconEngineFactoryInterface *factory = qobject_cast<QIconEngineFactoryInterface*>(loader()->instance(suffix))) {
if (QIconEngine *engine = factory->create(fileName)) {
d = new QIconPrivate;
d->engine = engine;
}
}
- // ..then fall back and try to load version 1 engines
- if (!d) {
- if (QIconEngineFactoryInterface *factory = qobject_cast<QIconEngineFactoryInterface*>(loader()->instance(suffix))) {
- if (QIconEngine *engine = factory->create(fileName)) {
- d = new QIconPrivate;
- d->engine = engine;
- d->engine_version = 1;
- d->v1RefCount = new QAtomicInt(1);
- }
- }
- }
}
#endif
// ...then fall back to the default engine
@@ -889,10 +853,9 @@ void QIcon::addFile(const QString &fileName, const QSize &size, Mode mode, State
*/
QList<QSize> QIcon::availableSizes(Mode mode, State state) const
{
- if (!d || !d->engine || d->engine_version < 2)
+ if (!d || !d->engine)
return QList<QSize>();
- QIconEngineV2 *engine = static_cast<QIconEngineV2*>(d->engine);
- return engine->availableSizes(mode, state);
+ return d->engine->availableSizes(mode, state);
}
/*!
@@ -908,10 +871,9 @@ QList<QSize> QIcon::availableSizes(Mode mode, State state) const
*/
QString QIcon::name() const
{
- if (!d || !d->engine || d->engine_version < 2)
+ if (!d || !d->engine)
return QString();
- QIconEngineV2 *engine = static_cast<QIconEngineV2*>(d->engine);
- return engine->iconName();
+ return d->engine->iconName();
}
/*!
@@ -1066,14 +1028,8 @@ QDataStream &operator<<(QDataStream &s, const QIcon &icon)
if (icon.isNull()) {
s << QString();
} else {
- if (icon.d->engine_version > 1) {
- QIconEngineV2 *engine = static_cast<QIconEngineV2 *>(icon.d->engine);
- s << engine->key();
- engine->write(s);
- } else {
- // not really supported
- qWarning("QIcon: Cannot stream QIconEngine. Use QIconEngineV2 instead.");
- }
+ s << icon.d->engine->key();
+ icon.d->engine->write(s);
}
} else if (s.version() == QDataStream::Qt_4_2) {
if (icon.isNull()) {
@@ -1113,17 +1069,17 @@ QDataStream &operator>>(QDataStream &s, QIcon &icon)
s >> key;
if (key == QLatin1String("QPixmapIconEngine")) {
icon.d = new QIconPrivate;
- QIconEngineV2 *engine = new QPixmapIconEngine;
+ QIconEngine *engine = new QPixmapIconEngine;
icon.d->engine = engine;
engine->read(s);
} else if (key == QLatin1String("QIconLoaderEngine")) {
icon.d = new QIconPrivate;
- QIconEngineV2 *engine = new QIconLoaderEngine();
+ QIconEngine *engine = new QIconLoaderEngine();
icon.d->engine = engine;
engine->read(s);
#if !defined (QT_NO_LIBRARY) && !defined(QT_NO_SETTINGS)
- } else if (QIconEngineFactoryInterfaceV2 *factory = qobject_cast<QIconEngineFactoryInterfaceV2*>(loaderV2()->instance(key))) {
- if (QIconEngineV2 *engine= factory->create()) {
+ } else if (QIconEngineFactoryInterface *factory = qobject_cast<QIconEngineFactoryInterface*>(loader()->instance(key))) {
+ if (QIconEngine *engine= factory->create()) {
icon.d = new QIconPrivate;
icon.d->engine = engine;
engine->read(s);
diff --git a/src/widgets/kernel/qicon.h b/src/widgets/kernel/qicon.h
index a72ae236f1..7bef500946 100644
--- a/src/widgets/kernel/qicon.h
+++ b/src/widgets/kernel/qicon.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,11 +51,9 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QIconPrivate;
class QIconEngine;
-class QIconEngineV2;
class Q_WIDGETS_EXPORT QIcon
{
@@ -68,7 +66,6 @@ public:
QIcon(const QIcon &other);
explicit QIcon(const QString &fileName); // file or resource name
explicit QIcon(QIconEngine *engine);
- explicit QIcon(QIconEngineV2 *engine);
~QIcon();
QIcon &operator=(const QIcon &other);
#ifdef Q_COMPILER_RVALUE_REFS
diff --git a/src/widgets/kernel/qicon_p.h b/src/widgets/kernel/qicon_p.h
index 02ac3afed4..37c4b7cb1f 100644
--- a/src/widgets/kernel/qicon_p.h
+++ b/src/widgets/kernel/qicon_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -69,14 +69,7 @@ public:
QIconPrivate();
~QIconPrivate() {
- if (engine_version == 1) {
- if (!v1RefCount->deref()) {
- delete engine;
- delete v1RefCount;
- }
- } else if (engine_version == 2) {
- delete engine;
- }
+ delete engine;
}
QIconEngine *engine;
@@ -84,9 +77,6 @@ public:
QAtomicInt ref;
int serialNum;
int detach_no;
- int engine_version;
-
- QAtomicInt *v1RefCount;
};
@@ -107,7 +97,7 @@ struct QPixmapIconEngineEntry
-class QPixmapIconEngine : public QIconEngineV2 {
+class QPixmapIconEngine : public QIconEngine {
public:
QPixmapIconEngine();
QPixmapIconEngine(const QPixmapIconEngine &);
@@ -119,9 +109,8 @@ public:
void addPixmap(const QPixmap &pixmap, QIcon::Mode mode, QIcon::State state);
void addFile(const QString &fileName, const QSize &size, QIcon::Mode mode, QIcon::State state);
- // v2 functions
QString key() const;
- QIconEngineV2 *clone() const;
+ QIconEngine *clone() const;
bool read(QDataStream &in);
bool write(QDataStream &out) const;
void virtual_hook(int id, void *data);
diff --git a/src/widgets/kernel/qiconengine.cpp b/src/widgets/kernel/qiconengine.cpp
index 930d7e1699..0a2d92ed69 100644
--- a/src/widgets/kernel/qiconengine.cpp
+++ b/src/widgets/kernel/qiconengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,8 +52,6 @@ QT_BEGIN_NAMESPACE
\ingroup painting
\inmodule QtWidgets
- \bold {Use QIconEngineV2 instead.}
-
An icon engine provides the rendering functions for a QIcon. Each icon has a
corresponding icon engine that is responsible for drawing the icon with a
requested size, mode and state.
@@ -67,7 +65,7 @@ QT_BEGIN_NAMESPACE
The paint(), pixmap(), and addPixmap() functions are all virtual, and can
therefore be reimplemented in subclasses of QIconEngine.
- \sa QIconEngineV2, QIconEnginePlugin
+ \sa QIconEnginePlugin
*/
@@ -136,45 +134,8 @@ void QIconEngine::addFile(const QString &/*fileName*/, const QSize &/*size*/, QI
}
-
-// version 2 functions
-
-
-/*!
- \class QIconEngineV2
-
- \brief The QIconEngineV2 class provides an abstract base class for QIcon renderers.
-
- \ingroup painting
- \inmodule QtWidgets
-
- \since 4.3
-
- An icon engine renders \l{QIcon}s. With icon engines, you can
- customize icons. Qt provides a default engine that makes icons
- adhere to the current style by scaling the icons and providing a
- disabled appearance.
-
- An engine is installed on an icon either through a QIcon
- constructor or through a QIconEnginePluginV2. The plugins are used
- by Qt if a specific engine is not given when the icon is created.
- See the QIconEngineV2 class description to learn how to create
- icon engine plugins.
-
- An icon engine provides the rendering functions for a QIcon. Each
- icon has a corresponding icon engine that is responsible for drawing
- the icon with a requested size, mode and state.
-
- QIconEngineV2 extends the API of QIconEngine to allow streaming of
- the icon engine contents, and should be used instead of QIconEngine
- for implementing new icon engines.
-
- \sa QIconEnginePluginV2
-
-*/
-
/*!
- \enum QIconEngineV2::IconEngineHook
+ \enum QIconEngine::IconEngineHook
\since 4.5
These enum values are used for virtual_hook() to allow additional
@@ -194,33 +155,33 @@ void QIconEngine::addFile(const QString &/*fileName*/, const QSize &/*size*/, QI
*/
/*!
- \class QIconEngineV2::AvailableSizesArgument
+ \class QIconEngine::AvailableSizesArgument
\since 4.5
\inmodule QtWidgets
This struct represents arguments to virtual_hook() function when
- \a id parameter is QIconEngineV2::AvailableSizesHook.
+ \a id parameter is QIconEngine::AvailableSizesHook.
- \sa virtual_hook(), QIconEngineV2::IconEngineHook
+ \sa virtual_hook(), QIconEngine::IconEngineHook
*/
/*!
- \variable QIconEngineV2::AvailableSizesArgument::mode
+ \variable QIconEngine::AvailableSizesArgument::mode
\brief the requested mode of an image.
\sa QIcon::Mode
*/
/*!
- \variable QIconEngineV2::AvailableSizesArgument::state
+ \variable QIconEngine::AvailableSizesArgument::state
\brief the requested state of an image.
\sa QIcon::State
*/
/*!
- \variable QIconEngineV2::AvailableSizesArgument::sizes
+ \variable QIconEngine::AvailableSizesArgument::sizes
\brief image sizes that are available with specified \a mode and
\a state. This is an output parameter and is filled after call to
@@ -232,26 +193,23 @@ void QIconEngine::addFile(const QString &/*fileName*/, const QSize &/*size*/, QI
/*!
Returns a key that identifies this icon engine.
*/
-QString QIconEngineV2::key() const
+QString QIconEngine::key() const
{
return QString();
}
-/*!
- Returns a clone of this icon engine.
+/*! \fn QIconEngine *QIconEngine::clone() const
+
+ Reimplement this method to return a clone of this icon engine.
*/
-QIconEngineV2 *QIconEngineV2::clone() const
-{
- return 0;
-}
/*!
Reads icon engine contents from the QDataStream \a in. Returns
true if the contents were read; otherwise returns false.
- QIconEngineV2's default implementation always return false.
+ QIconEngine's default implementation always return false.
*/
-bool QIconEngineV2::read(QDataStream &)
+bool QIconEngine::read(QDataStream &)
{
return false;
}
@@ -260,9 +218,9 @@ bool QIconEngineV2::read(QDataStream &)
Writes the contents of this engine to the QDataStream \a out.
Returns true if the contents were written; otherwise returns false.
- QIconEngineV2's default implementation always return false.
+ QIconEngine's default implementation always return false.
*/
-bool QIconEngineV2::write(QDataStream &) const
+bool QIconEngine::write(QDataStream &) const
{
return false;
}
@@ -270,19 +228,19 @@ bool QIconEngineV2::write(QDataStream &) const
/*!
\since 4.5
- Additional method to allow extending QIconEngineV2 without
+ Additional method to allow extending QIconEngine without
adding new virtual methods (and without breaking binary compatibility).
The actual action and format of \a data depends on \a id argument
which is in fact a constant from IconEngineHook enum.
\sa IconEngineHook
*/
-void QIconEngineV2::virtual_hook(int id, void *data)
+void QIconEngine::virtual_hook(int id, void *data)
{
switch (id) {
- case QIconEngineV2::AvailableSizesHook: {
- QIconEngineV2::AvailableSizesArgument &arg =
- *reinterpret_cast<QIconEngineV2::AvailableSizesArgument*>(data);
+ case QIconEngine::AvailableSizesHook: {
+ QIconEngine::AvailableSizesArgument &arg =
+ *reinterpret_cast<QIconEngine::AvailableSizesArgument*>(data);
arg.sizes.clear();
break;
}
@@ -301,12 +259,12 @@ void QIconEngineV2::virtual_hook(int id, void *data)
virtual_hook() method, hence this method depends on icon engine support
and may not work with all icon engines.
*/
-QList<QSize> QIconEngineV2::availableSizes(QIcon::Mode mode, QIcon::State state)
+QList<QSize> QIconEngine::availableSizes(QIcon::Mode mode, QIcon::State state) const
{
AvailableSizesArgument arg;
arg.mode = mode;
arg.state = state;
- virtual_hook(QIconEngineV2::AvailableSizesHook, reinterpret_cast<void*>(&arg));
+ const_cast<QIconEngine *>(this)->virtual_hook(QIconEngine::AvailableSizesHook, reinterpret_cast<void*>(&arg));
return arg.sizes;
}
@@ -319,10 +277,10 @@ QList<QSize> QIconEngineV2::availableSizes(QIcon::Mode mode, QIcon::State state)
virtual_hook() method, hence this method depends on icon engine support
and may not work with all icon engines.
*/
-QString QIconEngineV2::iconName()
+QString QIconEngine::iconName() const
{
QString name;
- virtual_hook(QIconEngineV2::IconNameHook, reinterpret_cast<void*>(&name));
+ const_cast<QIconEngine *>(this)->virtual_hook(QIconEngine::IconNameHook, reinterpret_cast<void*>(&name));
return name;
}
diff --git a/src/widgets/kernel/qiconengine.h b/src/widgets/kernel/qiconengine.h
index 083ceee33d..acadef97c3 100644
--- a/src/widgets/kernel/qiconengine.h
+++ b/src/widgets/kernel/qiconengine.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class Q_WIDGETS_EXPORT QIconEngine
{
@@ -63,23 +62,11 @@ public:
virtual void addPixmap(const QPixmap &pixmap, QIcon::Mode mode, QIcon::State state);
virtual void addFile(const QString &fileName, const QSize &size, QIcon::Mode mode, QIcon::State state);
-#if 0
- virtual int frameCount(QIcon::Mode fromMode, QIcon::State fromState, QIcon::Mode toMode, QIcon::State toState);
- virtual void paintFrame(QPainter *painter, const QRect &rect, int frameNumber, QIcon::Mode fromMode, QIcon::State fromState, QIcon::Mode toMode, QIcon::State toState);
-#endif
-};
-
-// ### Qt 5: move the below into QIconEngine
-class Q_WIDGETS_EXPORT QIconEngineV2 : public QIconEngine
-{
-public:
virtual QString key() const;
- virtual QIconEngineV2 *clone() const;
+ virtual QIconEngine *clone() const = 0;
virtual bool read(QDataStream &in);
virtual bool write(QDataStream &out) const;
- virtual void virtual_hook(int id, void *data);
-public:
enum IconEngineHook { AvailableSizesHook = 1, IconNameHook };
struct AvailableSizesArgument
@@ -89,14 +76,18 @@ public:
QList<QSize> sizes;
};
- // ### Qt 5: make this function const and virtual.
- QList<QSize> availableSizes(QIcon::Mode mode = QIcon::Normal,
- QIcon::State state = QIcon::Off);
+ virtual QList<QSize> availableSizes(QIcon::Mode mode = QIcon::Normal,
+ QIcon::State state = QIcon::Off) const;
+
+ virtual QString iconName() const;
- // ### Qt 5: make this function const and virtual.
- QString iconName();
+ virtual void virtual_hook(int id, void *data);
};
+#if QT_DEPRECATED_SINCE(5, 0)
+typedef QIconEngine QIconEngineV2;
+#endif
+
QT_END_NAMESPACE
QT_END_HEADER
diff --git a/src/widgets/kernel/qiconengineplugin.cpp b/src/widgets/kernel/qiconengineplugin.cpp
index 895572120e..ced4f5dd3e 100644
--- a/src/widgets/kernel/qiconengineplugin.cpp
+++ b/src/widgets/kernel/qiconengineplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -103,72 +103,5 @@ QIconEnginePlugin::~QIconEnginePlugin()
{
}
-// version 2
-
-/*!
- \class QIconEnginePluginV2
- \brief The QIconEnginePluginV2 class provides an abstract base for custom QIconEngineV2 plugins.
-
- \ingroup plugins
- \inmodule QtWidgets
-
- \since 4.3
-
- Icon engine plugins produces \l{QIconEngine}s for \l{QIcon}s; an
- icon engine is used to render the icon. The keys that identifies
- the engines the plugin can create are suffixes of
- icon filenames; they are returned by keys(). The create() function
- receives the icon filename to return an engine for; it should
- return 0 if it cannot produce an engine for the file.
-
- Writing an icon engine plugin is achieved by inheriting
- QIconEnginePluginV2, reimplementing keys() and create(), and
- adding the Q_EXPORT_PLUGIN2() macro.
-
- You should ensure that you do not duplicate keys. Qt will query
- the plugins for icon engines in the order in which the plugins are
- found during plugin search (see the plugins \l{How to Create Qt
- Plugins}{overview document}).
-
- \sa {How to Create Qt Plugins}
-*/
-
-/*!
- \fn QStringList QIconEnginePluginV2::keys() const
-
- Returns a list of icon engine keys that this plugin supports. The keys correspond
- to the suffix of the file or resource name used when the plugin was created.
- Keys are case insensitive.
-
- \sa create()
-*/
-
-/*!
- \fn QIconEngineV2* QIconEnginePluginV2::create(const QString& filename = QString())
-
- Creates and returns a QIconEngine object for the icon with the given
- \a filename.
-
- \sa keys()
-*/
-
-/*!
- Constructs a icon engine plugin with the given \a parent. This is invoked
- automatically by the Q_EXPORT_PLUGIN2() macro.
-*/
-QIconEnginePluginV2::QIconEnginePluginV2(QObject *parent)
- : QObject(parent)
-{
-}
-
-/*!
- Destroys the icon engine plugin.
-
- You never have to call this explicitly. Qt destroys a plugin
- automatically when it is no longer used.
-*/
-QIconEnginePluginV2::~QIconEnginePluginV2()
-{
-}
QT_END_NAMESPACE
diff --git a/src/widgets/kernel/qiconengineplugin.h b/src/widgets/kernel/qiconengineplugin.h
index 1bd9075866..a30c5475ba 100644
--- a/src/widgets/kernel/qiconengineplugin.h
+++ b/src/widgets/kernel/qiconengineplugin.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,18 +49,16 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QIconEngine;
-class QIconEngineV2;
struct Q_WIDGETS_EXPORT QIconEngineFactoryInterface : public QFactoryInterface
{
- virtual QIconEngine *create(const QString &filename) = 0;
+ virtual QIconEngine *create(const QString &filename = QString()) = 0;
};
#define QIconEngineFactoryInterface_iid \
- "com.trolltech.Qt.QIconEngineFactoryInterface"
+ "org.qt-project.Qt.QIconEngineFactoryInterface"
Q_DECLARE_INTERFACE(QIconEngineFactoryInterface, QIconEngineFactoryInterface_iid)
class Q_WIDGETS_EXPORT QIconEnginePlugin : public QObject, public QIconEngineFactoryInterface
@@ -72,29 +70,7 @@ public:
~QIconEnginePlugin();
virtual QStringList keys() const = 0;
- virtual QIconEngine *create(const QString &filename) = 0;
-};
-
-// ### Qt 5: remove version 2
-struct Q_WIDGETS_EXPORT QIconEngineFactoryInterfaceV2 : public QFactoryInterface
-{
- virtual QIconEngineV2 *create(const QString &filename = QString()) = 0;
-};
-
-#define QIconEngineFactoryInterfaceV2_iid \
- "com.trolltech.Qt.QIconEngineFactoryInterfaceV2"
-Q_DECLARE_INTERFACE(QIconEngineFactoryInterfaceV2, QIconEngineFactoryInterfaceV2_iid)
-
-class Q_WIDGETS_EXPORT QIconEnginePluginV2 : public QObject, public QIconEngineFactoryInterfaceV2
-{
- Q_OBJECT
- Q_INTERFACES(QIconEngineFactoryInterfaceV2:QFactoryInterface)
-public:
- QIconEnginePluginV2(QObject *parent = 0);
- ~QIconEnginePluginV2();
-
- virtual QStringList keys() const = 0;
- virtual QIconEngineV2 *create(const QString &filename = QString()) = 0;
+ virtual QIconEngine *create(const QString &filename = QString()) = 0;
};
QT_END_NAMESPACE
diff --git a/src/widgets/kernel/qiconloader.cpp b/src/widgets/kernel/qiconloader.cpp
index d8bef74dd8..0b86189b5e 100644
--- a/src/widgets/kernel/qiconloader.cpp
+++ b/src/widgets/kernel/qiconloader.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -45,6 +45,7 @@
#include <private/qicon_p.h>
#include <private/qguiplatformplugin_p.h>
+#include <QtWidgets/QApplication>
#include <QtWidgets/QIconEnginePlugin>
#include <QtGui/QPixmapCache>
#include <QtWidgets/QIconEngine>
@@ -104,7 +105,7 @@ void QIconLoader::ensureInitialized()
if (m_systemTheme.isEmpty())
m_systemTheme = fallbackTheme();
#ifndef QT_NO_LIBRARY
- QFactoryLoader iconFactoryLoader(QIconEngineFactoryInterfaceV2_iid,
+ QFactoryLoader iconFactoryLoader(QIconEngineFactoryInterface_iid,
QLatin1String("/iconengines"),
Qt::CaseInsensitive);
if (iconFactoryLoader.keys().contains(QLatin1String("svg")))
@@ -322,13 +323,13 @@ QIconLoaderEngine::~QIconLoaderEngine()
}
QIconLoaderEngine::QIconLoaderEngine(const QIconLoaderEngine &other)
- : QIconEngineV2(other),
+ : QIconEngine(other),
m_iconName(other.m_iconName),
m_key(0)
{
}
-QIconEngineV2 *QIconLoaderEngine::clone() const
+QIconEngine *QIconLoaderEngine::clone() const
{
return new QIconLoaderEngine(*this);
}
@@ -477,7 +478,7 @@ QSize QIconLoaderEngine::actualSize(const QSize &size, QIcon::Mode mode,
return QSize(result, result);
}
}
- return QIconEngineV2::actualSize(size, mode, state);
+ return QIconEngine::actualSize(size, mode, state);
}
QPixmap PixmapEntry::pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state)
@@ -489,7 +490,6 @@ QPixmap PixmapEntry::pixmap(const QSize &size, QIcon::Mode mode, QIcon::State st
if (basePixmap.isNull())
basePixmap.load(filename);
-#if 0 // ### Qt5
int actualSize = qMin(size.width(), size.height());
QString key = QLatin1Literal("$qt_theme_")
% HexString<qint64>(basePixmap.cacheKey())
@@ -507,9 +507,6 @@ QPixmap PixmapEntry::pixmap(const QSize &size, QIcon::Mode mode, QIcon::State st
QPixmapCache::insert(key, cachedPixmap);
}
return cachedPixmap;
-#else
- return basePixmap;
-#endif
}
QPixmap ScalableEntry::pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state)
@@ -543,10 +540,10 @@ void QIconLoaderEngine::virtual_hook(int id, void *data)
ensureLoaded();
switch (id) {
- case QIconEngineV2::AvailableSizesHook:
+ case QIconEngine::AvailableSizesHook:
{
- QIconEngineV2::AvailableSizesArgument &arg
- = *reinterpret_cast<QIconEngineV2::AvailableSizesArgument*>(data);
+ QIconEngine::AvailableSizesArgument &arg
+ = *reinterpret_cast<QIconEngine::AvailableSizesArgument*>(data);
const QList<QIconDirInfo> directoryKey = iconLoaderInstance()->theme().keyList();
arg.sizes.clear();
@@ -557,14 +554,14 @@ void QIconLoaderEngine::virtual_hook(int id, void *data)
}
}
break;
- case QIconEngineV2::IconNameHook:
+ case QIconEngine::IconNameHook:
{
QString &name = *reinterpret_cast<QString*>(data);
name = m_iconName;
}
break;
default:
- QIconEngineV2::virtual_hook(id, data);
+ QIconEngine::virtual_hook(id, data);
}
}
diff --git a/src/widgets/kernel/qiconloader_p.h b/src/widgets/kernel/qiconloader_p.h
index 840a2858b6..1b9043675b 100644
--- a/src/widgets/kernel/qiconloader_p.h
+++ b/src/widgets/kernel/qiconloader_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -109,7 +109,7 @@ struct PixmapEntry : public QIconLoaderEngineEntry
typedef QList<QIconLoaderEngineEntry*> QThemeIconEntries;
-class QIconLoaderEngine : public QIconEngineV2
+class QIconLoaderEngine : public QIconEngine
{
public:
QIconLoaderEngine(const QString& iconName = QString());
@@ -118,7 +118,7 @@ public:
void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state);
QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state);
QSize actualSize(const QSize &size, QIcon::Mode mode, QIcon::State state);
- QIconEngineV2 *clone() const;
+ QIconEngine *clone() const;
bool read(QDataStream &in);
bool write(QDataStream &out) const;
diff --git a/src/widgets/kernel/qinputcontext.cpp b/src/widgets/kernel/qinputcontext.cpp
deleted file mode 100644
index 27576193e9..0000000000
--- a/src/widgets/kernel/qinputcontext.cpp
+++ /dev/null
@@ -1,408 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Implementation of QInputContext class
-**
-** Copyright (C) 2003-2004 immodule for Qt Project. All rights reserved.
-**
-** This file is written to contribute to Nokia Corporation and/or its subsidiary(-ies) under their own
-** license. You may use this file under your Qt license. Following
-** description is copied from their original file headers. Contact
-** immodule-qt@freedesktop.org if any conditions of this licensing are
-** not clear to you.
-**
-****************************************************************************/
-
-//#define QT_NO_IM_PREEDIT_RELOCATION
-
-#include "qinputcontext.h"
-
-#ifndef QT_NO_IM
-
-#include "qplatformdefs.h"
-
-#include "qapplication.h"
-#include "qmenu.h"
-#include "qtextformat.h"
-#include "qpalette.h"
-#include <QtGui/qinputpanel.h>
-#include <QtGui/qevent.h>
-
-#include <stdlib.h>
-#include <limits.h>
-
-QT_BEGIN_NAMESPACE
-
-/*!
- \class QInputContext
- \brief The QInputContext class abstracts the input method dependent data and composing state.
-
- \ingroup i18n
- \inmodule QtWidgets
-
- An input method is responsible for inputting complex text that cannot
- be inputted via simple keymap. It converts a sequence of input
- events (typically key events) into a text string through the input
- method specific converting process. The class of the processes are
- widely ranging from simple finite state machine to complex text
- translator that pools a whole paragraph of a text with text
- editing capability to perform grammar and semantic analysis.
-
- To abstract such different input method specific intermediate
- information, Qt offers the QInputContext as base class. The
- concept is well known as 'input context' in the input method
- domain. An input context is created for a text widget in response
- to a demand. It is ensured that an input context is prepared for
- an input method before input to a text widget.
-
- Multiple input contexts that belong to a single input method
- may concurrently coexist. Suppose multi-window text editor. Each
- text widget of window A and B holds different QInputContext
- instance which contains different state information such as
- partially composed text.
-
- \section1 Groups of Functions
-
- \table
- \header \o Context \o Functions
-
- \row \o Receiving information \o
- x11FilterEvent(),
- filterEvent(),
- mouseHandler()
-
- \row \o Sending back composed text \o
- sendEvent()
-
- \row \o State change notification \o
- setFocusWidget(),
- reset()
-
- \row \o Context information \o
- identifierName(),
- language(),
- font(),
- isComposing()
-
- \endtable
-
- \section1 Licensing Information
-
- \legalese
- Copyright (C) 2003-2004 immodule for Qt Project. All rights reserved.
-
- This file is written to contribute to Nokia Corporation and/or its subsidiary(-ies) under their own
- license. You may use this file under your Qt license. Following
- description is copied from their original file headers. Contact
- immodule-qt@freedesktop.org if any conditions of this licensing are
- not clear to you.
- \endlegalese
-
- \sa QInputContextPlugin, QInputContextFactory, QApplication::setInputContext()
-*/
-
-/*!
- Constructs an input context with the given \a parent.
-*/
-QInputContext::QInputContext(QObject* parent)
- : QObject(parent)
-{
-}
-
-
-/*!
- Destroys the input context.
-*/
-QInputContext::~QInputContext()
-{
-}
-
-/*!
- Returns the widget that has an input focus for this input
- context.
-
- The return value may differ from holderWidget() if the input
- context is shared between several text widgets.
-
- \warning To ensure platform independence and support flexible
- configuration of widgets, ordinary input methods should not call
- this function directly.
-
- \sa setFocusWidget()
-*/
-QWidget *QInputContext::focusWidget() const
-{
- return qobject_cast<QWidget *>(qApp->inputPanel()->inputItem());
-}
-
-
-/*!
- Sets the \a widget that has an input focus for this input context.
-
- \warning Ordinary input methods must not call this function
- directly.
-
- \sa focusWidget()
-*/
-void QInputContext::setFocusWidget(QWidget *widget)
-{
- qApp->inputPanel()->setInputItem(widget);
-}
-
-/*!
- \fn bool QInputContext::isComposing() const
- \obsolete
-
- This function indicates whether InputMethodStart event had been
- sent to the current focus widget. It is ensured that an input
- context can send InputMethodCompose or InputMethodEnd event safely
- if this function returned true.
-
- The state is automatically being tracked through sendEvent().
-
- \sa sendEvent()
-*/
-
-
-/*!
- Sends an input method event specified by \a event to the current focus
- widget. Implementations of QInputContext should call this method to
- send the generated input method events and not
- QApplication::sendEvent(), as the events might have to get dispatched
- to a different application on some platforms.
-
- Some complex input methods route the handling to several child
- contexts (e.g. to enable language switching). To account for this,
- QInputContext will check if the parent object is a QInputContext. If
- yes, it will call the parents sendEvent() implementation instead of
- sending the event directly.
-
- \sa QInputMethodEvent
-*/
-void QInputContext::sendEvent(const QInputMethodEvent &event)
-{
-
- QObject *focus = qApp->inputPanel()->inputItem();
- if (!focus)
- return;
-
- QInputMethodEvent e(event);
- QApplication::sendEvent(focus, &e);
-}
-
-
-/*!
- This function can be reimplemented in a subclass to handle mouse
- press, release, double-click, and move events within the preedit
- text. You can use the function to implement mouse-oriented user
- interface such as text selection or popup menu for candidate
- selection.
-
- The \a x parameter is the offset within the string that was sent
- with the InputMethodCompose event. The alteration boundary of \a
- x is ensured as character boundary of preedit string accurately.
-
- The \a event parameter is the event that was sent to the editor
- widget. The event type is QEvent::MouseButtonPress,
- QEvent::MouseButtonRelease, QEvent::MouseButtonDblClick or
- QEvent::MouseMove. The event's button and state indicate
- the kind of operation that was performed.
-*/
-void QInputContext::mouseHandler(int x, QMouseEvent *event)
-{
- if (event->type() == QEvent::MouseButtonRelease)
- qApp->inputPanel()->invokeAction(QInputPanel::Click, x);
-}
-
-
-/*!
- Returns the font of the current input widget
-*/
-QFont QInputContext::font() const
-{
- QWidget *focus = focusWidget();
- if (!focus)
- return QApplication::font();
-
- return qvariant_cast<QFont>(focus->inputMethodQuery(Qt::ImFont));
-}
-
-/*!
- This virtual function is called when a state in the focus widget
- has changed. QInputContext can then use
- QWidget::inputMethodQuery() to query the new state of the widget.
-*/
-void QInputContext::update()
-{
- qApp->inputPanel()->update(Qt::ImQueryAll);
-}
-
-/*!
- This virtual function is called when the specified \a widget is
- destroyed. The \a widget is a widget on which this input context
- is installed.
-*/
-void QInputContext::widgetDestroyed(QWidget *widget)
-{
- Q_UNUSED(widget)
- // nothing to be done here, as we use a weak pointer in the input panel
-}
-
-/*!
- \fn void QInputContext::reset()
-
- This function can be reimplemented in a subclass to reset the
- state of the input method.
-
- This function is called by several widgets to reset input
- state. For example, a text widget call this function before
- inserting a text to make widget ready to accept a text.
-
- Default implementation is sufficient for simple input method. You
- can override this function to reset external input method engines
- in complex input method. In the case, call QInputContext::reset()
- to ensure proper termination of inputting.
-
- In a reimplementation of reset(), you must not send any
- QInputMethodEvent containing preedit text. You can only commit
- string and attributes; otherwise, you risk breaking input state
- consistency.
-*/
-void QInputContext::reset()
-{
- qApp->inputPanel()->reset();
-}
-
-
-/*!
- \fn QString QInputContext::identifierName()
-
- This function must be implemented in any subclasses to return the
- identifier name of the input method.
-
- Return value is the name to identify and specify input methods for
- the input method switching mechanism and so on. The name has to be
- consistent with QInputContextPlugin::keys(). The name has to
- consist of ASCII characters only.
-
- There are two different names with different responsibility in the
- input method domain. This function returns one of them. Another
- name is called 'display name' that stands for the name for
- endusers appeared in a menu and so on.
-
- \sa QInputContextPlugin::keys(), QInputContextPlugin::displayName()
-*/
-QString QInputContext::identifierName()
-{
- return QLatin1String("qpa");
-}
-
-
-/*!
- \fn QString QInputContext::language()
-
- This function must be implemented in any subclasses to return a
- language code (e.g. "zh_CN", "zh_TW", "zh_HK", "ja", "ko", ...)
- of the input context. If the input context can handle multiple
- languages, return the currently used one. The name has to be
- consistent with QInputContextPlugin::language().
-
- This information will be used by language tagging feature in
- QInputMethodEvent. It is required to distinguish unified han characters
- correctly. It enables proper font and character code
- handling. Suppose CJK-awared multilingual web browser
- (that automatically modifies fonts in CJK-mixed text) and XML editor
- (that automatically inserts lang attr).
-*/
-QString QInputContext::language()
-{
- return QString();
-}
-
-
-/*!
- This is a preliminary interface for Qt 4.
-*/
-QList<QAction *> QInputContext::actions()
-{
- return QList<QAction *>();
-}
-
-/*!
- \enum QInputContext::StandardFormat
-
- \value PreeditFormat The preedit text.
- \value SelectionFormat The selection text.
-
- \sa standardFormat()
-*/
-
-/*!
- Returns a QTextFormat object that specifies the format for
- component \a s.
-*/
-QTextFormat QInputContext::standardFormat(StandardFormat s) const
-{
- QWidget *focus = focusWidget();
- const QPalette &pal = focus ? focus->palette() : QApplication::palette();
-
- QTextCharFormat fmt;
- QColor bg;
- switch (s) {
- case QInputContext::PreeditFormat: {
- fmt.setUnderlineStyle(QTextCharFormat::DashUnderline);
- break;
- }
- case QInputContext::SelectionFormat: {
- bg = pal.text().color();
- fmt.setBackground(QBrush(bg));
- fmt.setForeground(pal.background());
- break;
- }
- }
- return fmt;
-}
-
-QT_END_NAMESPACE
-
-#endif //Q_NO_IM
diff --git a/src/widgets/kernel/qinputcontext.h b/src/widgets/kernel/qinputcontext.h
deleted file mode 100644
index 147061f221..0000000000
--- a/src/widgets/kernel/qinputcontext.h
+++ /dev/null
@@ -1,128 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Definition of QInputContext class
-**
-** Copyright (C) 2003-2004 immodule for Qt Project. All rights reserved.
-**
-** This file is written to contribute to Nokia Corporation and/or its subsidiary(-ies) under their own
-** license. You may use this file under your Qt license. Following
-** description is copied from their original file headers. Contact
-** immodule-qt@freedesktop.org if any conditions of this licensing are
-** not clear to you.
-**
-****************************************************************************/
-
-#ifndef QINPUTCONTEXT_H
-#define QINPUTCONTEXT_H
-
-#include <QtCore/qobject.h>
-#include <QtCore/qglobal.h>
-#include <QtGui/qevent.h>
-#include <QtCore/qstring.h>
-#include <QtCore/qlist.h>
-#include <QtWidgets/qaction.h>
-
-#ifndef QT_NO_IM
-
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Gui)
-
-class QWidget;
-class QFont;
-class QPopupMenu;
-class QInputContextPrivate;
-
-class Q_WIDGETS_EXPORT QInputContext : public QObject
-{
- Q_OBJECT
-public:
- explicit QInputContext(QObject* parent = 0);
- virtual ~QInputContext();
-
- virtual QString identifierName();
- virtual QString language();
-
- virtual void reset();
- virtual void update();
-
- virtual void mouseHandler( int x, QMouseEvent *event);
- virtual QFont font() const;
-
- QWidget *focusWidget() const;
- virtual void setFocusWidget( QWidget *w );
-
- virtual void widgetDestroyed(QWidget *w);
-
- virtual QList<QAction *> actions();
-
- void sendEvent(const QInputMethodEvent &event);
-
- virtual bool isComposing() const { return false; }
-
- enum StandardFormat {
- PreeditFormat,
- SelectionFormat
- };
- QTextFormat standardFormat(StandardFormat s) const;
-private:
- friend class QWidget;
- friend class QWidgetPrivate;
- friend class QInputContextFactory;
- friend class QApplication;
-private: // Disabled copy constructor and operator=
- QInputContext( const QInputContext & );
- QInputContext &operator=( const QInputContext & );
-
-};
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif //Q_NO_IM
-
-#endif // QINPUTCONTEXT_H
diff --git a/src/widgets/kernel/qlayout.cpp b/src/widgets/kernel/qlayout.cpp
index a682354df1..d5d739e431 100644
--- a/src/widgets/kernel/qlayout.cpp
+++ b/src/widgets/kernel/qlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qlayout.h b/src/widgets/kernel/qlayout.h
index 4d9213c1ec..5524443ab1 100644
--- a/src/widgets/kernel/qlayout.h
+++ b/src/widgets/kernel/qlayout.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QLayout;
class QSize;
diff --git a/src/widgets/kernel/qlayout_p.h b/src/widgets/kernel/qlayout_p.h
index cc80987500..bf67c838f4 100644
--- a/src/widgets/kernel/qlayout_p.h
+++ b/src/widgets/kernel/qlayout_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qlayoutengine.cpp b/src/widgets/kernel/qlayoutengine.cpp
index 38e6555658..7948c8df2e 100644
--- a/src/widgets/kernel/qlayoutengine.cpp
+++ b/src/widgets/kernel/qlayoutengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qlayoutengine_p.h b/src/widgets/kernel/qlayoutengine_p.h
index 5f5d0aa49e..a7acf241ac 100644
--- a/src/widgets/kernel/qlayoutengine_p.h
+++ b/src/widgets/kernel/qlayoutengine_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qlayoutitem.cpp b/src/widgets/kernel/qlayoutitem.cpp
index 732c941c74..860f1cc193 100644
--- a/src/widgets/kernel/qlayoutitem.cpp
+++ b/src/widgets/kernel/qlayoutitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qlayoutitem.h b/src/widgets/kernel/qlayoutitem.h
index a09dcf33de..76aae6f794 100644
--- a/src/widgets/kernel/qlayoutitem.h
+++ b/src/widgets/kernel/qlayoutitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
static const int QLAYOUTSIZE_MAX = INT_MAX/256/16;
diff --git a/src/widgets/kernel/qplatformdialoghelper_qpa.cpp b/src/widgets/kernel/qplatformdialoghelper_qpa.cpp
deleted file mode 100644
index cfe2b15572..0000000000
--- a/src/widgets/kernel/qplatformdialoghelper_qpa.cpp
+++ /dev/null
@@ -1,556 +0,0 @@
-/****************************************************************************
- **
- ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** 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 "qplatformdialoghelper_qpa.h"
-
-#include <QtCore/QVariant>
-#include <QtCore/QSharedData>
-#include <QtCore/QSettings>
-#include <QtCore/QHash>
-#include <QtCore/QUrl>
-#include <QtGui/QColor>
-
-QT_BEGIN_NAMESPACE
-
-/*!
- \class QPlatformDialogHelper
- \since 5.0
- \internal
- \brief The QPlatformDialogHelper class allows for platform-specific customization of dialogs.
-
-*/
-
-/*!
- \enum QPlatformDialogHelper::StyleHint
-
- This enum type specifies platform-specific style hints.
-
- \value SnapToDefaultButton Snap the mouse to the center of the default
- button. There is corresponding system
- setting on Windows.
-
- \sa styleHint()
-*/
-
-QPlatformDialogHelper::QPlatformDialogHelper()
-{
-}
-
-QPlatformDialogHelper::~QPlatformDialogHelper()
-{
-}
-
-QVariant QPlatformDialogHelper::styleHint(StyleHint hint) const
-{
- return QPlatformDialogHelper::defaultStyleHint(hint);
-}
-
-QVariant QPlatformDialogHelper::defaultStyleHint(QPlatformDialogHelper::StyleHint hint)
-{
- switch (hint) {
- case QPlatformDialogHelper::SnapToDefaultButton:
- return QVariant(false);
- }
- return QVariant();
-}
-
-void QPlatformDialogHelper::emitLaunchNativeAppModalPanel()
-{
- emit launchNativeAppModalPanel();
-}
-
-// Font dialog
-
-class QFontDialogOptionsPrivate : public QSharedData
-{
-public:
- QFontDialogOptionsPrivate() : options(0) {}
-
- QFontDialogOptions::FontDialogOptions options;
- QString windowTitle;
-};
-
-QFontDialogOptions::QFontDialogOptions() : d(new QFontDialogOptionsPrivate)
-{
-}
-
-QFontDialogOptions::QFontDialogOptions(const QFontDialogOptions &rhs) : d(rhs.d)
-{
-}
-
-QFontDialogOptions &QFontDialogOptions::operator=(const QFontDialogOptions &rhs)
-{
- if (this != &rhs)
- d = rhs.d;
- return *this;
-}
-
-QFontDialogOptions::~QFontDialogOptions()
-{
-}
-
-QString QFontDialogOptions::windowTitle() const
-{
- return d->windowTitle;
-}
-
-void QFontDialogOptions::setWindowTitle(const QString &title)
-{
- d->windowTitle = title;
-}
-
-void QFontDialogOptions::setOption(QFontDialogOptions::FontDialogOption option, bool on)
-{
- if (!(d->options & option) != !on)
- setOptions(d->options ^ option);
-}
-
-bool QFontDialogOptions::testOption(QFontDialogOptions::FontDialogOption option) const
-{
- return d->options & option;
-}
-
-void QFontDialogOptions::setOptions(FontDialogOptions options)
-{
- if (options != d->options)
- d->options = options;
-}
-
-QFontDialogOptions::FontDialogOptions QFontDialogOptions::options() const
-{
- return d->options;
-}
-
-const QSharedPointer<QFontDialogOptions> &QPlatformFontDialogHelper::options() const
-{
- return m_options;
-}
-
-void QPlatformFontDialogHelper::setOptions(const QSharedPointer<QFontDialogOptions> &options)
-{
- m_options = options;
-}
-
-// Color dialog
-
-class QColorDialogStaticData
-{
-public:
- enum { CustomColorCount = 16, StandardColorCount = 6 * 8 };
-
- QColorDialogStaticData();
- inline void readSettings();
- inline void writeSettings() const;
-
- QRgb customRgb[CustomColorCount];
- QRgb standardRgb[StandardColorCount];
- bool customSet;
-};
-
-QColorDialogStaticData::QColorDialogStaticData() : customSet(false)
-{
- int i = 0;
- for (int g = 0; g < 4; ++g)
- for (int r = 0; r < 4; ++r)
- for (int b = 0; b < 3; ++b)
- standardRgb[i++] = qRgb(r * 255 / 3, g * 255 / 3, b * 255 / 2);
- qFill(customRgb, customRgb + CustomColorCount, 0xffffffff);
- readSettings();
-}
-
-void QColorDialogStaticData::readSettings()
-{
-#ifndef QT_NO_SETTINGS
- const QSettings settings(QSettings::UserScope, QStringLiteral("Trolltech"));
- for (int i = 0; i < int(CustomColorCount); ++i) {
- const QVariant v = settings.value(QStringLiteral("Qt/customColors/") + QString::number(i));
- if (v.isValid())
- customRgb[i] = v.toUInt();
- }
-#endif
-}
-
-void QColorDialogStaticData::writeSettings() const
-{
-#ifndef QT_NO_SETTINGS
- if (!customSet) {
- QSettings settings(QSettings::UserScope, QStringLiteral("Trolltech"));
- for (int i = 0; i < int(CustomColorCount); ++i)
- settings.setValue(QStringLiteral("Qt/customColors/") + QString::number(i), customRgb[i]);
- }
-#endif
-}
-
-Q_GLOBAL_STATIC(QColorDialogStaticData, qColorDialogStaticData)
-
-class QColorDialogOptionsPrivate : public QSharedData
-{
-public:
- QColorDialogOptionsPrivate() : options(0) {}
- // Write out settings around destruction of dialogs
- ~QColorDialogOptionsPrivate() { qColorDialogStaticData()->writeSettings(); }
-
- QColorDialogOptions::ColorDialogOptions options;
- QString windowTitle;
-};
-
-QColorDialogOptions::QColorDialogOptions() : d(new QColorDialogOptionsPrivate)
-{
-}
-
-QColorDialogOptions::QColorDialogOptions(const QColorDialogOptions &rhs) : d(rhs.d)
-{
-}
-
-QColorDialogOptions &QColorDialogOptions::operator=(const QColorDialogOptions &rhs)
-{
- if (this != &rhs)
- d = rhs.d;
- return *this;
-}
-
-QColorDialogOptions::~QColorDialogOptions()
-{
-}
-
-QString QColorDialogOptions::windowTitle() const
-{
- return d->windowTitle;
-}
-
-void QColorDialogOptions::setWindowTitle(const QString &title)
-{
- d->windowTitle = title;
-}
-
-void QColorDialogOptions::setOption(QColorDialogOptions::ColorDialogOption option, bool on)
-{
- if (!(d->options & option) != !on)
- setOptions(d->options ^ option);
-}
-
-bool QColorDialogOptions::testOption(QColorDialogOptions::ColorDialogOption option) const
-{
- return d->options & option;
-}
-
-void QColorDialogOptions::setOptions(ColorDialogOptions options)
-{
- if (options != d->options)
- d->options = options;
-}
-
-QColorDialogOptions::ColorDialogOptions QColorDialogOptions::options() const
-{
- return d->options;
-}
-
-int QColorDialogOptions::customColorCount()
-{
- return QColorDialogStaticData::CustomColorCount;
-}
-
-QRgb QColorDialogOptions::customColor(int index)
-{
- if (uint(index) >= uint(QColorDialogStaticData::CustomColorCount))
- return qRgb(255, 255, 255);
- return qColorDialogStaticData()->customRgb[index];
-}
-
-QRgb *QColorDialogOptions::customColors()
-{
- return qColorDialogStaticData()->customRgb;
-}
-
-void QColorDialogOptions::setCustomColor(int index, QRgb color)
-{
- if (uint(index) >= uint(QColorDialogStaticData::CustomColorCount))
- return;
- qColorDialogStaticData()->customSet;
- qColorDialogStaticData()->customRgb[index] = color;
-}
-
-QRgb *QColorDialogOptions::standardColors()
-{
- return qColorDialogStaticData()->standardRgb;
-}
-
-QRgb QColorDialogOptions::standardColor(int index)
-{
- if (uint(index) >= uint(QColorDialogStaticData::StandardColorCount))
- return qRgb(255, 255, 255);
- return qColorDialogStaticData()->standardRgb[index];
-}
-
-void QColorDialogOptions::setStandardColor(int index, QRgb color)
-{
- if (uint(index) >= uint(QColorDialogStaticData::StandardColorCount))
- return;
- qColorDialogStaticData()->standardRgb[index] = color;
-}
-
-const QSharedPointer<QColorDialogOptions> &QPlatformColorDialogHelper::options() const
-{
- return m_options;
-}
-
-void QPlatformColorDialogHelper::setOptions(const QSharedPointer<QColorDialogOptions> &options)
-{
- m_options = options;
-}
-
-// File dialog
-
-class QFileDialogOptionsPrivate : public QSharedData
-{
-public:
- QFileDialogOptionsPrivate() : options(0),
- viewMode(QFileDialogOptions::Detail),
- fileMode(QFileDialogOptions::AnyFile),
- acceptMode(QFileDialogOptions::AcceptOpen),
- filters(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs)
- {}
-
- QFileDialogOptions::FileDialogOptions options;
- QString windowTitle;
-
- QFileDialogOptions::ViewMode viewMode;
- QFileDialogOptions::FileMode fileMode;
- QFileDialogOptions::AcceptMode acceptMode;
- QString labels[QFileDialogOptions::DialogLabelCount];
- QDir::Filters filters;
- QList<QUrl> sidebarUrls;
- QStringList nameFilters;
- QString defaultSuffix;
- QStringList history;
- QString initialDirectory;
- QString initiallySelectedNameFilter;
- QStringList initiallySelectedFiles;
-};
-
-QFileDialogOptions::QFileDialogOptions() : d(new QFileDialogOptionsPrivate)
-{
-}
-
-QFileDialogOptions::QFileDialogOptions(const QFileDialogOptions &rhs) : d(rhs.d)
-{
-}
-
-QFileDialogOptions &QFileDialogOptions::operator=(const QFileDialogOptions &rhs)
-{
- if (this != &rhs)
- d = rhs.d;
- return *this;
-}
-
-QFileDialogOptions::~QFileDialogOptions()
-{
-}
-
-QString QFileDialogOptions::windowTitle() const
-{
- return d->windowTitle;
-}
-
-void QFileDialogOptions::setWindowTitle(const QString &title)
-{
- d->windowTitle = title;
-}
-
-void QFileDialogOptions::setOption(QFileDialogOptions::FileDialogOption option, bool on)
-{
- if (!(d->options & option) != !on)
- setOptions(d->options ^ option);
-}
-
-bool QFileDialogOptions::testOption(QFileDialogOptions::FileDialogOption option) const
-{
- return d->options & option;
-}
-
-void QFileDialogOptions::setOptions(FileDialogOptions options)
-{
- if (options != d->options)
- d->options = options;
-}
-
-QFileDialogOptions::FileDialogOptions QFileDialogOptions::options() const
-{
- return d->options;
-}
-
-QDir::Filters QFileDialogOptions::filter() const
-{
- return d->filters;
-}
-
-void QFileDialogOptions::setFilter(QDir::Filters filters)
-{
- d->filters = filters;
-}
-
-void QFileDialogOptions::setViewMode(QFileDialogOptions::ViewMode mode)
-{
- d->viewMode = mode;
-}
-
-QFileDialogOptions::ViewMode QFileDialogOptions::viewMode() const
-{
- return d->viewMode;
-}
-
-void QFileDialogOptions::setFileMode(QFileDialogOptions::FileMode mode)
-{
- d->fileMode = mode;
-}
-
-QFileDialogOptions::FileMode QFileDialogOptions::fileMode() const
-{
- return d->fileMode;
-}
-
-void QFileDialogOptions::setAcceptMode(QFileDialogOptions::AcceptMode mode)
-{
- d->acceptMode = mode;
-}
-
-QFileDialogOptions::AcceptMode QFileDialogOptions::acceptMode() const
-{
- return d->acceptMode;
-}
-
-void QFileDialogOptions::setSidebarUrls(const QList<QUrl> &urls)
-{
- d->sidebarUrls = urls;
-}
-
-QList<QUrl> QFileDialogOptions::sidebarUrls() const
-{
- return d->sidebarUrls;
-}
-
-void QFileDialogOptions::setNameFilters(const QStringList &filters)
-{
- d->nameFilters = filters;
-}
-
-QStringList QFileDialogOptions::nameFilters() const
-{
- return d->nameFilters;
-}
-
-void QFileDialogOptions::setDefaultSuffix(const QString &suffix)
-{
- d->defaultSuffix = suffix;
-}
-
-QString QFileDialogOptions::defaultSuffix() const
-{
- return d->defaultSuffix;
-}
-
-void QFileDialogOptions::setHistory(const QStringList &paths)
-{
- d->history = paths;
-}
-
-QStringList QFileDialogOptions::history() const
-{
- return d->history;
-}
-
-void QFileDialogOptions::setLabelText(QFileDialogOptions::DialogLabel label, const QString &text)
-{
- if (label >= 0 && label < DialogLabelCount)
- d->labels[label] = text;
-}
-
-QString QFileDialogOptions::labelText(QFileDialogOptions::DialogLabel label) const
-{
- return (label >= 0 && label < DialogLabelCount) ? d->labels[label] : QString();
-}
-
-bool QFileDialogOptions::isLabelExplicitlySet(DialogLabel label)
-{
- return label >= 0 && label < DialogLabelCount && !d->labels[label].isEmpty();
-}
-
-QString QFileDialogOptions::initialDirectory() const
-{
- return d->initialDirectory;
-}
-
-void QFileDialogOptions::setInitialDirectory(const QString &directory)
-{
- d->initialDirectory = directory;
-}
-
-QString QFileDialogOptions::initiallySelectedNameFilter() const
-{
- return d->initiallySelectedNameFilter;
-}
-
-void QFileDialogOptions::setInitiallySelectedNameFilter(const QString &filter)
-{
- d->initiallySelectedNameFilter = filter;
-}
-
-QStringList QFileDialogOptions::initiallySelectedFiles() const
-{
- return d->initiallySelectedFiles;
-}
-
-void QFileDialogOptions::setInitiallySelectedFiles(const QStringList &files)
-{
- d->initiallySelectedFiles = files;
-}
-
-const QSharedPointer<QFileDialogOptions> &QPlatformFileDialogHelper::options() const
-{
- return m_options;
-}
-
-void QPlatformFileDialogHelper::setOptions(const QSharedPointer<QFileDialogOptions> &options)
-{
- m_options = options;
-}
-
-QT_END_NAMESPACE
diff --git a/src/widgets/kernel/qplatformdialoghelper_qpa.h b/src/widgets/kernel/qplatformdialoghelper_qpa.h
deleted file mode 100644
index b0b8b3a5b3..0000000000
--- a/src/widgets/kernel/qplatformdialoghelper_qpa.h
+++ /dev/null
@@ -1,315 +0,0 @@
-/****************************************************************************
- **
- ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** 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$
- **
- ****************************************************************************/
-
-#ifndef QPLATFORMDIALOGHELPER_H
-#define QPLATFORMDIALOGHELPER_H
-
-#include <QtCore/QtGlobal>
-#include <QtCore/QObject>
-#include <QtCore/QList>
-#include <QtCore/QSharedDataPointer>
-#include <QtCore/QSharedPointer>
-#include <QtCore/QDir>
-#include <QtGui/QRgb>
-
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Gui)
-
-class QString;
-class QColor;
-class QFont;
-class QWindow;
-class QVariant;
-class QUrl;
-class QColorDialogOptionsPrivate;
-class QFontDialogOptionsPrivate;
-class QFileDialogOptionsPrivate;
-
-class Q_WIDGETS_EXPORT QPlatformDialogHelper : public QObject
-{
- Q_OBJECT
-public:
- enum StyleHint {
- SnapToDefaultButton
- };
- enum DialogCode { Rejected, Accepted };
- enum ShowFlag {
- ShowModal = 0x00000001
- };
-
- Q_DECLARE_FLAGS(ShowFlags, ShowFlag)
-
- QPlatformDialogHelper();
- virtual ~QPlatformDialogHelper();
-
- virtual QVariant styleHint(StyleHint hint) const;
-
- virtual void platformNativeDialogModalHelp() = 0;
- virtual void _q_platformRunNativeAppModalPanel() = 0;
-
- virtual void deleteNativeDialog_sys() = 0;
- virtual bool show_sys(ShowFlags showFlags,
- Qt::WindowFlags windowFlags,
- QWindow *parent) = 0;
- virtual void hide_sys() = 0;
-
- virtual DialogCode dialogResultCode_sys() = 0;
-
- static QVariant defaultStyleHint(QPlatformDialogHelper::StyleHint hint);
-
-Q_SIGNALS:
- void launchNativeAppModalPanel();
- void accept();
- void reject();
-
-protected Q_SLOTS:
- void emitLaunchNativeAppModalPanel();
-};
-
-class Q_WIDGETS_EXPORT QColorDialogOptions
-{
-public:
- enum ColorDialogOption {
- ShowAlphaChannel = 0x00000001,
- NoButtons = 0x00000002,
- DontUseNativeDialog = 0x00000004
- };
-
- Q_DECLARE_FLAGS(ColorDialogOptions, ColorDialogOption)
-
- QColorDialogOptions();
- QColorDialogOptions(const QColorDialogOptions &rhs);
- QColorDialogOptions &operator=(const QColorDialogOptions &rhs);
- ~QColorDialogOptions();
-
- QString windowTitle() const;
- void setWindowTitle(const QString &);
-
- void setOption(ColorDialogOption option, bool on = true);
- bool testOption(ColorDialogOption option) const;
- void setOptions(ColorDialogOptions options);
- ColorDialogOptions options() const;
-
- static int customColorCount();
- static QRgb customColor(int index);
- static QRgb *customColors();
- static void setCustomColor(int index, QRgb color);
-
- static QRgb *standardColors();
- static QRgb standardColor(int index);
- static void setStandardColor(int index, QRgb color);
-
-private:
- QSharedDataPointer<QColorDialogOptionsPrivate> d;
-};
-
-class Q_WIDGETS_EXPORT QPlatformColorDialogHelper : public QPlatformDialogHelper
-{
- Q_OBJECT
-public:
- const QSharedPointer<QColorDialogOptions> &options() const;
- void setOptions(const QSharedPointer<QColorDialogOptions> &options);
-
- virtual void setCurrentColor_sys(const QColor &) = 0;
- virtual QColor currentColor_sys() const = 0;
-
-Q_SIGNALS:
- void currentColorChanged(const QColor &color);
- void colorSelected(const QColor &color);
-
-private:
- QSharedPointer<QColorDialogOptions> m_options;
-};
-
-class Q_WIDGETS_EXPORT QFontDialogOptions
-{
-public:
- enum FontDialogOption {
- NoButtons = 0x00000001,
- DontUseNativeDialog = 0x00000002
- };
-
- Q_DECLARE_FLAGS(FontDialogOptions, FontDialogOption)
-
- QFontDialogOptions();
- QFontDialogOptions(const QFontDialogOptions &rhs);
- QFontDialogOptions &operator=(const QFontDialogOptions &rhs);
- ~QFontDialogOptions();
-
- QString windowTitle() const;
- void setWindowTitle(const QString &);
-
- void setOption(FontDialogOption option, bool on = true);
- bool testOption(FontDialogOption option) const;
- void setOptions(FontDialogOptions options);
- FontDialogOptions options() const;
-
-private:
- QSharedDataPointer<QFontDialogOptionsPrivate> d;
-};
-
-class Q_WIDGETS_EXPORT QPlatformFontDialogHelper : public QPlatformDialogHelper
-{
- Q_OBJECT
-public:
- virtual void setCurrentFont_sys(const QFont &) = 0;
- virtual QFont currentFont_sys() const = 0;
-
- const QSharedPointer<QFontDialogOptions> &options() const;
- void setOptions(const QSharedPointer<QFontDialogOptions> &options);
-
-Q_SIGNALS:
- void currentFontChanged(const QFont &font);
- void fontSelected(const QFont &font);
-
-private:
- QSharedPointer<QFontDialogOptions> m_options;
-};
-
-class Q_WIDGETS_EXPORT QFileDialogOptions
-{
-public:
- enum ViewMode { Detail, List };
- enum FileMode { AnyFile, ExistingFile, Directory, ExistingFiles, DirectoryOnly };
- enum AcceptMode { AcceptOpen, AcceptSave };
- enum DialogLabel { LookIn, FileName, FileType, Accept, Reject, DialogLabelCount };
-
- enum FileDialogOption
- {
- ShowDirsOnly = 0x00000001,
- DontResolveSymlinks = 0x00000002,
- DontConfirmOverwrite = 0x00000004,
- DontUseSheet = 0x00000008,
- DontUseNativeDialog = 0x00000010,
- ReadOnly = 0x00000020,
- HideNameFilterDetails = 0x00000040
- };
- Q_DECLARE_FLAGS(FileDialogOptions, FileDialogOption)
-
- QFileDialogOptions();
- QFileDialogOptions(const QFileDialogOptions &rhs);
- QFileDialogOptions &operator=(const QFileDialogOptions &rhs);
- ~QFileDialogOptions();
-
- QString windowTitle() const;
- void setWindowTitle(const QString &);
-
- void setOption(FileDialogOption option, bool on = true);
- bool testOption(FileDialogOption option) const;
- void setOptions(FileDialogOptions options);
- FileDialogOptions options() const;
-
- QDir::Filters filter() const;
- void setFilter(QDir::Filters filters);
-
- void setViewMode(ViewMode mode);
- ViewMode viewMode() const;
-
- void setFileMode(FileMode mode);
- FileMode fileMode() const;
-
- void setAcceptMode(AcceptMode mode);
- AcceptMode acceptMode() const;
-
- void setSidebarUrls(const QList<QUrl> &urls);
- QList<QUrl> sidebarUrls() const;
-
- void setNameFilters(const QStringList &filters);
- QStringList nameFilters() const;
-
- void setDefaultSuffix(const QString &suffix);
- QString defaultSuffix() const;
-
- void setHistory(const QStringList &paths);
- QStringList history() const;
-
- void setLabelText(DialogLabel label, const QString &text);
- QString labelText(DialogLabel label) const;
- bool isLabelExplicitlySet(DialogLabel label);
-
- QString initialDirectory() const;
- void setInitialDirectory(const QString &);
-
- QString initiallySelectedNameFilter() const;
- void setInitiallySelectedNameFilter(const QString &);
-
- QStringList initiallySelectedFiles() const;
- void setInitiallySelectedFiles(const QStringList &);
-
-private:
- QSharedDataPointer<QFileDialogOptionsPrivate> d;
-};
-
-class Q_WIDGETS_EXPORT QPlatformFileDialogHelper : public QPlatformDialogHelper
-{
- Q_OBJECT
-public:
- virtual bool defaultNameFilterDisables() const = 0;
- virtual void setDirectory_sys(const QString &directory) = 0;
- virtual QString directory_sys() const = 0;
- virtual void selectFile_sys(const QString &filename) = 0;
- virtual QStringList selectedFiles_sys() const = 0;
- virtual void setFilter_sys() = 0;
- virtual void selectNameFilter_sys(const QString &filter) = 0;
- virtual QString selectedNameFilter_sys() const = 0;
-
- const QSharedPointer<QFileDialogOptions> &options() const;
- void setOptions(const QSharedPointer<QFileDialogOptions> &options);
-
-Q_SIGNALS:
- void fileSelected(const QString &file);
- void filesSelected(const QStringList &files);
- void currentChanged(const QString &path);
- void directoryEntered(const QString &directory);
- void filterSelected(const QString &filter);
-
-private:
- QSharedPointer<QFileDialogOptions> m_options;
-};
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-#endif // QPLATFORMDIALOGHELPER_H
diff --git a/src/widgets/kernel/qplatformmenu_qpa.cpp b/src/widgets/kernel/qplatformmenu_qpa.cpp
index 2a11884a67..cf11ed811d 100644
--- a/src/widgets/kernel/qplatformmenu_qpa.cpp
+++ b/src/widgets/kernel/qplatformmenu_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtWidgets module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qplatformmenu_qpa.h b/src/widgets/kernel/qplatformmenu_qpa.h
index b6473c0b15..cbd7eae6ac 100644
--- a/src/widgets/kernel/qplatformmenu_qpa.h
+++ b/src/widgets/kernel/qplatformmenu_qpa.h
@@ -1,43 +1,43 @@
/****************************************************************************
- **
- ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** 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$
- **
- ****************************************************************************/
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** 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$
+**
+****************************************************************************/
#ifndef QPLATFORMMENU_H
#define QPLATFORMMENU_H
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QMenuPrivate;
class Q_WIDGETS_EXPORT QPlatformMenuAction
diff --git a/src/widgets/kernel/qshortcut.cpp b/src/widgets/kernel/qshortcut.cpp
index cb2d08956b..07c7a02d4d 100644
--- a/src/widgets/kernel/qshortcut.cpp
+++ b/src/widgets/kernel/qshortcut.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qshortcut.h b/src/widgets/kernel/qshortcut.h
index 077028ccd3..bfb934bedb 100644
--- a/src/widgets/kernel/qshortcut.h
+++ b/src/widgets/kernel/qshortcut.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_SHORTCUT
diff --git a/src/widgets/kernel/qsizepolicy.h b/src/widgets/kernel/qsizepolicy.h
index 8932eb8ed8..5a3ef19e16 100644
--- a/src/widgets/kernel/qsizepolicy.h
+++ b/src/widgets/kernel/qsizepolicy.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QVariant;
diff --git a/src/widgets/kernel/qsizepolicy.qdoc b/src/widgets/kernel/qsizepolicy.qdoc
index a0e565caff..670491e5dd 100644
--- a/src/widgets/kernel/qsizepolicy.qdoc
+++ b/src/widgets/kernel/qsizepolicy.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qsoftkeymanager.cpp b/src/widgets/kernel/qsoftkeymanager.cpp
index a7c128337f..c0e7260d47 100644
--- a/src/widgets/kernel/qsoftkeymanager.cpp
+++ b/src/widgets/kernel/qsoftkeymanager.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -46,14 +46,6 @@
#include "private/qaction_p.h"
#include "private/qsoftkeymanager_common_p.h"
-#ifdef Q_WS_S60
-#include "private/qsoftkeymanager_s60_p.h"
-#endif
-
-#ifdef SYMBIAN_VERSION_SYMBIAN3
-#include "private/qt_s60_p.h"
-#endif
-
#ifndef QT_NO_SOFTKEYMANAGER
QT_BEGIN_NAMESPACE
@@ -94,41 +86,13 @@ QSoftKeyManager *QSoftKeyManager::instance()
}
QSoftKeyManager::QSoftKeyManager() :
-#ifdef Q_WS_S60
- QObject(*(new QSoftKeyManagerPrivateS60), 0)
-#else
QObject(*(new QSoftKeyManagerPrivate), 0)
-#endif
{
}
QAction *QSoftKeyManager::createAction(StandardSoftKey standardKey, QWidget *actionWidget)
{
QAction *action = new QAction(standardSoftKeyText(standardKey), actionWidget);
-#ifdef SYMBIAN_VERSION_SYMBIAN3
- int key = 0;
- switch (standardKey) {
- case OkSoftKey:
- key = EAknSoftkeyOk;
- break;
- case SelectSoftKey:
- key = EAknSoftkeySelect;
- break;
- case DoneSoftKey:
- key = EAknSoftkeyDone;
- break;
- case MenuSoftKey:
- key = EAknSoftkeyOptions;
- break;
- case CancelSoftKey:
- key = EAknSoftkeyCancel;
- break;
- default:
- break;
- };
- if (key != 0)
- QSoftKeyManager::instance()->d_func()->softKeyCommandActions.insert(action, key);
-#endif
QAction::SoftKeyRole softKeyRole = QAction::NoSoftKey;
switch (standardKey) {
case MenuSoftKey: // FALL-THROUGH
@@ -171,9 +135,6 @@ void QSoftKeyManager::cleanupHash(QObject *obj)
Q_D(QSoftKeyManager);
QAction *action = qobject_cast<QAction*>(obj);
d->keyedActions.remove(action);
-#ifdef SYMBIAN_VERSION_SYMBIAN3
- d->softKeyCommandActions.remove(action);
-#endif
}
void QSoftKeyManager::sendKeyEvent()
@@ -305,15 +266,5 @@ bool QSoftKeyManager::event(QEvent *e)
return false;
}
-#ifdef Q_WS_S60
-bool QSoftKeyManager::handleCommand(int command)
-{
- if (QSoftKeyManager::instance()->d_func()->pendingUpdate)
- (void)QSoftKeyManager::instance()->handleUpdateSoftKeys();
-
- return static_cast<QSoftKeyManagerPrivateS60*>(QSoftKeyManager::instance()->d_func())->handleCommand(command);
-}
-#endif
-
QT_END_NAMESPACE
#endif //QT_NO_SOFTKEYMANAGER
diff --git a/src/widgets/kernel/qsoftkeymanager_common_p.h b/src/widgets/kernel/qsoftkeymanager_common_p.h
index 121d4f8e22..2a170d30d8 100644
--- a/src/widgets/kernel/qsoftkeymanager_common_p.h
+++ b/src/widgets/kernel/qsoftkeymanager_common_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -74,9 +74,6 @@ protected:
QMultiHash<int, QAction*> requestedSoftKeyActions;
QWidget *initialSoftKeySource;
bool pendingUpdate;
-#ifdef SYMBIAN_VERSION_SYMBIAN3
- QHash<QAction*, int> softKeyCommandActions;
-#endif
};
QT_END_NAMESPACE
diff --git a/src/widgets/kernel/qsoftkeymanager_p.h b/src/widgets/kernel/qsoftkeymanager_p.h
index ad49a1b586..2b0cea5eea 100644
--- a/src/widgets/kernel/qsoftkeymanager_p.h
+++ b/src/widgets/kernel/qsoftkeymanager_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -79,9 +79,6 @@ public:
};
static void updateSoftKeys();
-#ifdef Q_WS_S60
- static bool handleCommand(int);
-#endif
static QAction *createAction(StandardSoftKey standardKey, QWidget *actionWidget);
static QAction *createKeyedAction(StandardSoftKey standardKey, Qt::Key key, QWidget *actionWidget);
diff --git a/src/widgets/kernel/qstackedlayout.cpp b/src/widgets/kernel/qstackedlayout.cpp
index 7179ddc62c..9b40063e65 100644
--- a/src/widgets/kernel/qstackedlayout.cpp
+++ b/src/widgets/kernel/qstackedlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qstackedlayout.h b/src/widgets/kernel/qstackedlayout.h
index e80e909eae..e54efa886e 100644
--- a/src/widgets/kernel/qstackedlayout.h
+++ b/src/widgets/kernel/qstackedlayout.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QStackedLayoutPrivate;
diff --git a/src/widgets/kernel/qstandardgestures.cpp b/src/widgets/kernel/qstandardgestures.cpp
index 3a9bd2bc38..58c3dbf165 100644
--- a/src/widgets/kernel/qstandardgestures.cpp
+++ b/src/widgets/kernel/qstandardgestures.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qstandardgestures_p.h b/src/widgets/kernel/qstandardgestures_p.h
index 28b0b71797..7e23288a2c 100644
--- a/src/widgets/kernel/qstandardgestures_p.h
+++ b/src/widgets/kernel/qstandardgestures_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qt_widgets_pch.h b/src/widgets/kernel/qt_widgets_pch.h
index 8e8985d21f..e742623651 100644
--- a/src/widgets/kernel/qt_widgets_pch.h
+++ b/src/widgets/kernel/qt_widgets_pch.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qtooltip.cpp b/src/widgets/kernel/qtooltip.cpp
index fc0efc3dc2..0bd831c974 100644
--- a/src/widgets/kernel/qtooltip.cpp
+++ b/src/widgets/kernel/qtooltip.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qtooltip.h b/src/widgets/kernel/qtooltip.h
index 8218a18338..3fb98e0502 100644
--- a/src/widgets/kernel/qtooltip.h
+++ b/src/widgets/kernel/qtooltip.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_TOOLTIP
diff --git a/src/widgets/kernel/qwhatsthis.cpp b/src/widgets/kernel/qwhatsthis.cpp
index e1a1cd05ef..3d8bb5e4bf 100644
--- a/src/widgets/kernel/qwhatsthis.cpp
+++ b/src/widgets/kernel/qwhatsthis.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -411,7 +411,7 @@ QWhatsThisPrivate::QWhatsThisPrivate()
#endif
}
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::ContextHelpStart);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::ContextHelpStart, this, 0));
#endif
}
@@ -423,7 +423,7 @@ QWhatsThisPrivate::~QWhatsThisPrivate()
QApplication::restoreOverrideCursor();
#endif
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::ContextHelpEnd);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::ContextHelpEnd, this, 0));
#endif
instance = 0;
}
diff --git a/src/widgets/kernel/qwhatsthis.h b/src/widgets/kernel/qwhatsthis.h
index 93e97ddff8..3ab3514365 100644
--- a/src/widgets/kernel/qwhatsthis.h
+++ b/src/widgets/kernel/qwhatsthis.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_WHATSTHIS
diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp
index 531a217b1d..4709a89d27 100644
--- a/src/widgets/kernel/qwidget.cpp
+++ b/src/widgets/kernel/qwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,9 +60,6 @@
#ifndef QT_NO_ACCESSIBILITY
# include "qaccessible.h"
#endif
-#if defined(Q_WS_WIN)
-# include "qt_windows.h"
-#endif
#ifdef Q_WS_MAC
# include "qt_mac_p.h"
# include "qt_cocoa_helpers_mac_p.h"
@@ -78,10 +75,9 @@
#include "qdebug.h"
#include "private/qstylesheetstyle_p.h"
#include "private/qstyle_p.h"
-#include "qinputcontext.h"
#include "qfileinfo.h"
#include "private/qsoftkeymanager_p.h"
-#include <QtGui/qinputpanel.h>
+#include <QtGui/qinputmethod.h>
#include <private/qgraphicseffect_p.h>
#include <qbackingstore.h>
@@ -92,6 +88,7 @@
#include <private/qpaintengine_raster_p.h>
#include "qwidget_p.h"
+#include <QtGui/private/qwindow_p.h>
#include "qaction_p.h"
#include "qlayout_p.h"
#include "QtWidgets/qgraphicsproxywidget.h"
@@ -107,9 +104,6 @@
#include "qtabwidget.h" // Needed in inTabWidget()
#endif // QT_KEYPAD_NAVIGATION
-#ifdef Q_WS_S60
-#include <aknappui.h>
-#endif
// widget/widget data creation count
//#define QWIDGET_EXTRA_DEBUG
@@ -355,32 +349,14 @@ void QWidgetPrivate::scrollChildren(int dx, int dy)
void QWidgetPrivate::updateWidgetTransform()
{
Q_Q(QWidget);
- if (q == qApp->inputPanel()->inputItem()) {
+ if (q == qGuiApp->focusObject()) {
QTransform t;
QPoint p = q->mapTo(q->topLevelWidget(), QPoint(0,0));
t.translate(p.x(), p.y());
- qApp->inputPanel()->setInputItemTransform(t);
+ qApp->inputMethod()->setInputItemTransform(t);
}
}
-/*!
- This function returns the QInputContext for this widget. By
- default the input context is inherited from the widgets
- parent. For toplevels it is inherited from QApplication.
-
- You can override this and set a special input context for this
- widget by using the setInputContext() method.
-
- \sa setInputContext()
-*/
-QInputContext *QWidget::inputContext()
-{
- if (!testAttribute(Qt::WA_InputMethodEnabled))
- return 0;
-
- return qApp->inputContext();
-}
-
#ifdef QT_KEYPAD_NAVIGATION
QPointer<QWidget> QWidgetPrivate::editingWidget;
@@ -407,8 +383,7 @@ bool QWidget::hasEditFocus() const
normally; otherwise, Qt::Key_Up and Qt::Key_Down are used to
change focus.
- This feature is only available in Qt for Embedded Linux and Qt
- for Symbian.
+ This feature is only available in Qt for Embedded Linux.
\sa hasEditFocus(), QApplication::keypadNavigationEnabled()
*/
@@ -2052,14 +2027,6 @@ void QWidgetPrivate::updateIsOpaque()
}
#endif
-#ifdef Q_WS_S60
- if (q->windowType() == Qt::Dialog && q->testAttribute(Qt::WA_TranslucentBackground)
- && S60->avkonComponentsSupportTransparency) {
- setOpaque(false);
- return;
- }
-#endif
-
if (q->testAttribute(Qt::WA_OpaquePaintEvent) || q->testAttribute(Qt::WA_PaintOnScreen)) {
setOpaque(true);
return;
@@ -2126,11 +2093,6 @@ static inline void fillRegion(QPainter *painter, const QRegion &rgn, const QBrus
extern void qt_mac_fill_background(QPainter *painter, const QRegion &rgn, const QBrush &brush);
qt_mac_fill_background(painter, rgn, brush);
#else
-#if !defined(QT_NO_STYLE_S60)
- // Defined in qs60style.cpp
- extern bool qt_s60_fill_background(QPainter *painter, const QRegion &rgn, const QBrush &brush);
- if (!qt_s60_fill_background(painter, rgn, brush))
-#endif // !defined(QT_NO_STYLE_S60)
{
const QRect rect(rgn.boundingRect());
painter->setClipRegion(rgn);
@@ -3125,10 +3087,10 @@ void QWidgetPrivate::setEnabled_helper(bool enable)
if (enable) {
if (focusWidget->testAttribute(Qt::WA_InputMethodEnabled))
- qApp->inputPanel()->setInputItem(focusWidget);
+ qApp->inputMethod()->update(Qt::ImEnabled);
} else {
- qApp->inputPanel()->reset();
- qApp->inputPanel()->setInputItem(0);
+ qApp->inputMethod()->reset();
+ qApp->inputMethod()->update(Qt::ImEnabled);
}
}
#endif //QT_NO_IM
@@ -6003,7 +5965,7 @@ void QWidget::setFocus(Qt::FocusReason reason)
// menus update the focus manually and this would create bogus events
if (!(f->inherits("QMenuBar") || f->inherits("QMenu") || f->inherits("QMenuItem")))
# endif
- QAccessible::updateAccessibility(f, 0, QAccessible::Focus);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::Focus, f, 0));
#endif
#ifndef QT_NO_GRAPHICSVIEW
if (QWExtra *topData = window()->d_func()->extra) {
@@ -6083,7 +6045,7 @@ void QWidget::clearFocus()
#endif
{
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::Focus);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::Focus, this, 0));
#endif
}
}
@@ -7090,7 +7052,7 @@ void QWidgetPrivate::show_helper()
#ifndef QT_NO_ACCESSIBILITY
if (q->windowType() != Qt::ToolTip) // Tooltips are read aloud twice in MS narrator.
- QAccessible::updateAccessibility(q, 0, QAccessible::ObjectShow);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::ObjectShow, q, 0));
#endif
if (QApplicationPrivate::hidden_focus_widget == q) {
@@ -7181,7 +7143,7 @@ void QWidgetPrivate::hide_helper()
#ifndef QT_NO_ACCESSIBILITY
if (wasVisible)
- QAccessible::updateAccessibility(q, 0, QAccessible::ObjectHide);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::ObjectHide, q, 0));
#endif
}
@@ -7416,7 +7378,7 @@ void QWidgetPrivate::hideChildren(bool spontaneous)
qApp->d_func()->sendSyntheticEnterLeave(widget);
#ifndef QT_NO_ACCESSIBILITY
if (!spontaneous)
- QAccessible::updateAccessibility(widget, 0, QAccessible::ObjectHide);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::ObjectHide, widget, 0));
#endif
}
}
@@ -7451,23 +7413,11 @@ bool QWidgetPrivate::close_helper(CloseMode mode)
// Attempt to close the application only if this has WA_QuitOnClose set and a non-visible parent
quitOnClose = quitOnClose && (parentWidget.isNull() || !parentWidget->isVisible());
- if (quitOnClose) {
- /* if there is no non-withdrawn primary window left (except
- the ones without QuitOnClose), we emit the lastWindowClosed
- signal */
- QWidgetList list = QApplication::topLevelWidgets();
- bool lastWindowClosed = true;
- for (int i = 0; i < list.size(); ++i) {
- QWidget *w = list.at(i);
- if (!w->isVisible() || w->parentWidget() || !w->testAttribute(Qt::WA_QuitOnClose))
- continue;
- lastWindowClosed = false;
- break;
- }
- if (lastWindowClosed)
- QApplicationPrivate::emitLastWindowClosed();
+ if (quitOnClose && q->windowHandle()) {
+ static_cast<QWindowPrivate*>(QObjectPrivate::get(q->windowHandle()))->maybeQuitOnLastWindowClosed();
}
+
if (!that.isNull()) {
data.is_closing = 0;
if (q->testAttribute(Qt::WA_DeleteOnClose)) {
@@ -7929,6 +7879,8 @@ bool QWidget::event(QEvent *event)
Qt::InputMethodQuery q = (Qt::InputMethodQuery)(int)(queries & (1<<i));
if (q) {
QVariant v = inputMethodQuery(q);
+ if (q == Qt::ImEnabled && !v.isValid() && isEnabled())
+ v = QVariant(true); // special case for Qt4 compatibility
query->setValue(q, v);
}
}
@@ -8280,7 +8232,7 @@ void QWidget::changeEvent(QEvent * event)
case QEvent::EnabledChange:
update();
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::StateChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::StateChanged, this, 0));
#endif
break;
@@ -8781,7 +8733,7 @@ void QWidget::inputMethodEvent(QInputMethodEvent *event)
\a query specifies which property is queried.
- \sa inputMethodEvent(), QInputMethodEvent, QInputContext, inputMethodHints
+ \sa inputMethodEvent(), QInputMethodEven, inputMethodHints
*/
QVariant QWidget::inputMethodQuery(Qt::InputMethodQuery query) const
{
@@ -8819,7 +8771,7 @@ QVariant QWidget::inputMethodQuery(Qt::InputMethodQuery query) const
\since 4.6
- \sa inputMethodQuery(), QInputContext
+ \sa inputMethodQuery()
*/
Qt::InputMethodHints QWidget::inputMethodHints() const
{
@@ -8840,7 +8792,7 @@ void QWidget::setInputMethodHints(Qt::InputMethodHints hints)
#ifndef QT_NO_IM
Q_D(QWidget);
d->imHints = hints;
- qApp->inputPanel()->update(Qt::ImHints);
+ qApp->inputMethod()->update(Qt::ImHints);
#endif //QT_NO_IM
}
@@ -8961,111 +8913,36 @@ void QWidget::hideEvent(QHideEvent *)
{
}
-/*
- \fn QWidget::x11Event(MSG *)
-
- This special event handler can be reimplemented in a subclass to receive
- native X11 events.
-
- In your reimplementation of this function, if you want to stop Qt from
- handling the event, return true. If you return false, this native event
- is passed back to Qt, which translates it into a Qt event and sends it to
- the widget.
-
- \note Events are only delivered to this event handler if the widget is
- native.
-
- \warning This function is not portable.
-
- \sa QApplication::x11EventFilter(), QWidget::winId()
-*/
-
-
-#if defined(Q_WS_MAC)
-
/*!
- \fn bool QWidget::macEvent(EventHandlerCallRef caller, EventRef event)
-
This special event handler can be reimplemented in a subclass to
- receive native Macintosh events.
-
- The parameters are a bit different depending if Qt is build against Carbon
- or Cocoa. In Carbon, \a caller and \a event are the corresponding
- EventHandlerCallRef and EventRef that correspond to the Carbon event
- handlers that are installed. In Cocoa, \a caller is always 0 and the
- EventRef is the EventRef generated from the NSEvent.
+ receive native platform events identified by \a eventType
+ which are passed in the \a message parameter.
In your reimplementation of this function, if you want to stop the
- event being handled by Qt, return true. If you return false, this
- native event is passed back to Qt, which translates the event into
- a Qt event and sends it to the widget.
+ event being handled by Qt, return true and set \a result.
+ If you return false, this native event is passed back to Qt,
+ which translates the event into a Qt event and sends it to the widget.
- \warning This function is not portable.
+ \note Events are only delivered to this event handler if the widget is
+ has a native Window handle.
- \warning This function was not called inside of Qt until Qt 4.4.
- If you need compatibility with earlier versions of Qt, consider QApplication::macEventFilter() instead.
+ \note This function superseedes the event filter functions
+ x11Event(), winEvent() and macEvent() of Qt 4.
- \sa QApplication::macEventFilter()
+ \table
+ \header \i Platform \i Event Type Identifier \i Message Type \i Result Type
+ \row \i Windows \i "windows_generic_MSG" \i MSG * \i LRESULT
+ \endtable
*/
-bool QWidget::macEvent(EventHandlerCallRef, EventRef)
-{
- return false;
-}
-
-#endif
-#if defined(Q_WS_WIN)
-
-/*!
- This special event handler can be reimplemented in a subclass to
- receive native Windows events which are passed in the \a message
- parameter.
-
- In your reimplementation of this function, if you want to stop the
- event being handled by Qt, return true and set \a result to the value
- that the window procedure should return. If you return false, this
- native event is passed back to Qt, which translates the event into
- a Qt event and sends it to the widget.
-
- \warning This function is not portable.
-
- \sa QApplication::winEventFilter()
-*/
-bool QWidget::winEvent(MSG *message, long *result)
+bool QWidget::nativeEvent(const QByteArray &eventType, void *message, long *result)
{
+ Q_UNUSED(eventType);
Q_UNUSED(message);
Q_UNUSED(result);
return false;
}
-#endif
-#if defined(Q_WS_X11)
-
-/*!
- \fn bool QWidget::x11Event(XEvent *event)
-
- This special event handler can be reimplemented in a subclass to receive
- native X11 events passed in the \a event parameter.
-
- In your reimplementation of this function, if you want to stop Qt from
- handling the event, return true. If you return false, this native event
- is passed back to Qt, which translates it into a Qt event and sends it to
- the widget.
-
- \note Events are only delivered to this event handler if the widget is
- native.
-
- \warning This function is not portable.
-
- \sa QApplication::x11EventFilter(), QWidget::winId()
-*/
-bool QWidget::x11Event(XEvent *)
-{
- return false;
-}
-
-#endif
-
/*!
Ensures that the widget has been polished by QStyle (i.e., has a
proper font and palette).
@@ -10134,8 +10011,8 @@ void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on)
QWidget *focusWidget = d->effectiveFocusWidget();
if (on && !internalWinId() && hasFocus()
&& focusWidget->testAttribute(Qt::WA_InputMethodEnabled)) {
- qApp->inputPanel()->reset();
- qApp->inputPanel()->setInputItem(0);
+ qApp->inputMethod()->reset();
+ qApp->inputMethod()->update(Qt::ImEnabled);
}
if (!qApp->testAttribute(Qt::AA_DontCreateNativeWidgetSiblings) && parentWidget()
#ifdef Q_WS_MAC
@@ -10149,7 +10026,7 @@ void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on)
d->createWinId();
if (isEnabled() && focusWidget->isEnabled()
&& focusWidget->testAttribute(Qt::WA_InputMethodEnabled)) {
- qApp->inputPanel()->setInputItem(focusWidget);
+ qApp->inputMethod()->update(Qt::ImEnabled);
}
#endif //QT_NO_IM
break;
@@ -10182,13 +10059,10 @@ void QWidget::setAttribute(Qt::WidgetAttribute attribute, bool on)
break;
case Qt::WA_InputMethodEnabled: {
#ifndef QT_NO_IM
- QWidget *focusWidget = d->effectiveFocusWidget();
- if (on && hasFocus() && isEnabled()
- && focusWidget->testAttribute(Qt::WA_InputMethodEnabled)) {
- qApp->inputPanel()->setInputItem(focusWidget);
- } else if (!on && qApp->inputPanel()->inputItem() == focusWidget) {
- qApp->inputPanel()->reset();
- qApp->inputPanel()->setInputItem(0);
+ if (qApp->focusObject() == this) {
+ if (!on)
+ qApp->inputMethod()->reset();
+ qApp->inputMethod()->update(Qt::ImEnabled);
}
#endif //QT_NO_IM
break;
@@ -10490,7 +10364,7 @@ void QWidget::setAccessibleName(const QString &name)
{
Q_D(QWidget);
d->accessibleName = name;
- QAccessible::updateAccessibility(this, 0, QAccessible::NameChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::NameChanged, this, 0));
}
QString QWidget::accessibleName() const
@@ -10512,7 +10386,7 @@ void QWidget::setAccessibleDescription(const QString &description)
{
Q_D(QWidget);
d->accessibleDescription = description;
- QAccessible::updateAccessibility(this, 0, QAccessible::DescriptionChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::DescriptionChanged, this, 0));
}
QString QWidget::accessibleDescription() const
@@ -10614,18 +10488,16 @@ void QWidget::setShortcutAutoRepeat(int id, bool enable)
/*!
Updates the widget's micro focus.
-
- \sa QInputContext
*/
void QWidget::updateMicroFocus()
{
// updating everything since this is currently called for any kind of state change
- qApp->inputPanel()->update(Qt::ImQueryAll);
+ qApp->inputMethod()->update(Qt::ImQueryAll);
#ifndef QT_NO_ACCESSIBILITY
if (isVisible()) {
// ##### is this correct
- QAccessible::updateAccessibility(this, 0, QAccessible::StateChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::StateChanged, this, 0));
}
#endif
}
diff --git a/src/widgets/kernel/qwidget.h b/src/widgets/kernel/qwidget.h
index 60d4b8b698..0f13d0b7f6 100644
--- a/src/widgets/kernel/qwidget.h
+++ b/src/widgets/kernel/qwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -64,7 +64,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QLayout;
class QWSRegionManager;
@@ -91,7 +90,6 @@ class QDragLeaveEvent;
class QDropEvent;
class QShowEvent;
class QHideEvent;
-class QInputContext;
class QIcon;
class QBackingStore;
class QPlatformWindow;
@@ -600,8 +598,6 @@ public:
void ensurePolished() const;
- QInputContext *inputContext();
-
bool isAncestorOf(const QWidget *child) const;
#ifdef QT_KEYPAD_NAVIGATION
@@ -661,19 +657,7 @@ protected:
virtual void showEvent(QShowEvent *);
virtual void hideEvent(QHideEvent *);
-
-#if defined(Q_WS_MAC)
- virtual bool macEvent(EventHandlerCallRef, EventRef);
-#endif
-#if defined(Q_WS_WIN)
- virtual bool winEvent(MSG *message, long *result);
-#endif
-#if defined(Q_WS_X11)
- virtual bool x11Event(XEvent *);
-#endif
-#if defined(Q_WS_QWS)
- virtual bool qwsEvent(QWSEvent *);
-#endif
+ virtual bool nativeEvent(const QByteArray &eventType, void *message, long *result);
// Misc. protected functions
virtual void changeEvent(QEvent *);
diff --git a/src/widgets/kernel/qwidget_p.h b/src/widgets/kernel/qwidget_p.h
index 43c3eaeff0..0da0c65aaa 100644
--- a/src/widgets/kernel/qwidget_p.h
+++ b/src/widgets/kernel/qwidget_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,7 @@
#include "QtCore/qlocale.h"
#include "QtCore/qset.h"
#include "QtGui/qregion.h"
-#include "QtGui/qinputpanel.h"
+#include "QtGui/qinputmethod.h"
#include "QtWidgets/qsizepolicy.h"
#include "QtWidgets/qstyle.h"
#include "QtWidgets/qapplication.h"
@@ -416,7 +416,7 @@ public:
void syncBackingStore();
void syncBackingStore(const QRegion &region);
- // tells the input panel about the widgets transform
+ // tells the input method about the widgets transform
void updateWidgetTransform();
void reparentFocusWidgets(QWidget *oldtlw);
@@ -573,7 +573,7 @@ public:
QStyle::RequestSoftwareInputPanel behavior = QStyle::RequestSoftwareInputPanel(
q->style()->styleHint(QStyle::SH_RequestSoftwareInputPanel));
if (!clickCausedFocus || behavior == QStyle::RSIP_OnMouseClick) {
- qApp->inputPanel()->show();
+ qApp->inputMethod()->show();
}
}
}
diff --git a/src/widgets/kernel/qwidget_qpa.cpp b/src/widgets/kernel/qwidget_qpa.cpp
index fb4543cd14..289b332a13 100644
--- a/src/widgets/kernel/qwidget_qpa.cpp
+++ b/src/widgets/kernel/qwidget_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qwidgetaction.cpp b/src/widgets/kernel/qwidgetaction.cpp
index caab1c16e6..14369513da 100644
--- a/src/widgets/kernel/qwidgetaction.cpp
+++ b/src/widgets/kernel/qwidgetaction.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qwidgetaction.h b/src/widgets/kernel/qwidgetaction.h
index 62ef05596b..0c6a82b8e5 100644
--- a/src/widgets/kernel/qwidgetaction.h
+++ b/src/widgets/kernel/qwidgetaction.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_ACTION
diff --git a/src/widgets/kernel/qwidgetaction_p.h b/src/widgets/kernel/qwidgetaction_p.h
index ff8a37425c..f4950dfe73 100644
--- a/src/widgets/kernel/qwidgetaction_p.h
+++ b/src/widgets/kernel/qwidgetaction_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qwidgetbackingstore.cpp b/src/widgets/kernel/qwidgetbackingstore.cpp
index 0eb9407925..978e989a00 100644
--- a/src/widgets/kernel/qwidgetbackingstore.cpp
+++ b/src/widgets/kernel/qwidgetbackingstore.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qwidgetbackingstore_p.h b/src/widgets/kernel/qwidgetbackingstore_p.h
index 2d28cae88e..7befdbeb78 100644
--- a/src/widgets/kernel/qwidgetbackingstore_p.h
+++ b/src/widgets/kernel/qwidgetbackingstore_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qwidgetsvariant.cpp b/src/widgets/kernel/qwidgetsvariant.cpp
index f2ca99d040..72080d9e6b 100644
--- a/src/widgets/kernel/qwidgetsvariant.cpp
+++ b/src/widgets/kernel/qwidgetsvariant.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/kernel/qwidgetwindow_qpa.cpp b/src/widgets/kernel/qwidgetwindow_qpa.cpp
index b89dca7357..e7ba4853a0 100644
--- a/src/widgets/kernel/qwidgetwindow_qpa.cpp
+++ b/src/widgets/kernel/qwidgetwindow_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -431,4 +431,9 @@ void QWidgetWindow::handleWindowStateChangedEvent(QWindowStateChangeEvent *event
QGuiApplication::sendSpontaneousEvent(m_widget, &widgetEvent);
}
+bool QWidgetWindow::nativeEvent(const QByteArray &eventType, void *message, long *result)
+{
+ return m_widget->nativeEvent(eventType, message, result);
+}
+
QT_END_NAMESPACE
diff --git a/src/widgets/kernel/qwidgetwindow_qpa_p.h b/src/widgets/kernel/qwidgetwindow_qpa_p.h
index 82448ab5fd..1e8813fddc 100644
--- a/src/widgets/kernel/qwidgetwindow_qpa_p.h
+++ b/src/widgets/kernel/qwidgetwindow_qpa_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QCloseEvent;
class QMoveEvent;
@@ -80,6 +79,7 @@ protected:
void handleDragEvent(QEvent *);
void handleExposeEvent(QExposeEvent *);
void handleWindowStateChangedEvent(QWindowStateChangeEvent *event);
+ bool nativeEvent(const QByteArray &eventType, void *message, long *result);
private:
void updateGeometry();
diff --git a/src/widgets/platforms/mac/qapplication_mac.mm b/src/widgets/platforms/mac/qapplication_mac.mm
deleted file mode 100644
index 13fb6fd624..0000000000
--- a/src/widgets/platforms/mac/qapplication_mac.mm
+++ /dev/null
@@ -1,1878 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Copyright (c) 2007-2008, Apple, Inc.
-**
-** All rights reserved.
-**
-** Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are met:
-**
-** * Redistributions of source code must retain the above copyright notice,
-** this list of conditions and the following disclaimer.
-**
-** * Redistributions in binary form must reproduce the above copyright notice,
-** this list of conditions and the following disclaimer in the documentation
-** and/or other materials provided with the distribution.
-**
-** * Neither the name of Apple, Inc. nor the names of its contributors
-** may be used to endorse or promote products derived from this software
-** without specific prior written permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-****************************************************************************/
-
-#include <Cocoa/Cocoa.h>
-
-#include "qapplication.h"
-#include "qbitarray.h"
-#include "qclipboard.h"
-#include "qcursor.h"
-#include "qdatastream.h"
-#include "qdatetime.h"
-#include "qdesktopwidget.h"
-#include "qdockwidget.h"
-#include "qevent.h"
-#include "qhash.h"
-#include "qlayout.h"
-#include "qmenubar.h"
-#include "qmessagebox.h"
-#include "qmime.h"
-#include "qpixmapcache.h"
-#include "qpointer.h"
-#include "qsessionmanager.h"
-#include "qsettings.h"
-#include "qsocketnotifier.h"
-#include "qstyle.h"
-#include "qstylefactory.h"
-#include "qtextcodec.h"
-#include "qtoolbar.h"
-#include "qvariant.h"
-#include "qwidget.h"
-#include "qcolormap.h"
-#include "qdir.h"
-#include "qdebug.h"
-#include "qtimer.h"
-#include "qurl.h"
-#include "private/qmacinputcontext_p.h"
-#include "private/qpaintengine_mac_p.h"
-#include "private/qcursor_p.h"
-#include "private/qapplication_p.h"
-#include "private/qcolor_p.h"
-#include "private/qwidget_p.h"
-#include "private/qkeymapper_p.h"
-#include "private/qeventdispatcher_mac_p.h"
-#include "private/qeventdispatcher_unix_p.h"
-#include <private/qcocoamenuloader_mac_p.h>
-#include <private/qcocoaapplication_mac_p.h>
-#include <private/qcocoaapplicationdelegate_mac_p.h>
-#include <private/qt_cocoa_helpers_mac_p.h>
-#include <private/qcocoawindow_mac_p.h>
-#include <private/qpixmap_mac_p.h>
-#include <private/qdesktopwidget_mac_p.h>
-#include <private/qeventdispatcher_mac_p.h>
-#include <qvarlengtharray.h>
-
-#ifndef QT_NO_ACCESSIBILITY
-# include "qaccessible.h"
-#endif
-
-#ifndef QT_NO_THREAD
-# include "qmutex.h"
-#endif
-
-#include <unistd.h>
-#include <string.h>
-#include <sys/time.h>
-#include <sys/select.h>
-
-/*****************************************************************************
- QApplication debug facilities
- *****************************************************************************/
-//#define DEBUG_EVENTS //like EventDebug but more specific to Qt
-//#define DEBUG_DROPPED_EVENTS
-//#define DEBUG_MOUSE_MAPS
-//#define DEBUG_MODAL_EVENTS
-//#define DEBUG_PLATFORM_SETTINGS
-
-#define QMAC_SPEAK_TO_ME
-#ifdef QMAC_SPEAK_TO_ME
-#include "qregexp.h"
-#endif
-
-#ifndef kThemeBrushAlternatePrimaryHighlightColor
-#define kThemeBrushAlternatePrimaryHighlightColor -5
-#endif
-
-#define kCMDeviceUnregisteredNotification CFSTR("CMDeviceUnregisteredNotification")
-#define kCMDefaultDeviceNotification CFSTR("CMDefaultDeviceNotification")
-#define kCMDeviceProfilesNotification CFSTR("CMDeviceProfilesNotification")
-#define kCMDefaultDeviceProfileNotification CFSTR("CMDefaultDeviceProfileNotification")
-
-QT_BEGIN_NAMESPACE
-
-//for qt_mac.h
-QPaintDevice *qt_mac_safe_pdev = 0;
-QList<QMacWindowChangeEvent*> *QMacWindowChangeEvent::change_events = 0;
-QPointer<QWidget> topLevelAt_cache = 0;
-
-/*****************************************************************************
- Internal variables and functions
- *****************************************************************************/
-static struct {
- bool use_qt_time_limit;
- QPointer<QWidget> last_widget;
- int last_x, last_y;
- int last_modifiers, last_button;
- EventTime last_time;
-} qt_mac_dblclick = { false, 0, -1, -1, 0, 0, -2 };
-
-static bool app_do_modal = false; // modal mode
-extern QWidgetList *qt_modal_stack; // stack of modal widgets
-extern bool qt_tab_all_widgets; // from qapplication.cpp
-bool qt_scrollbar_jump_to_pos = false;
-static bool qt_mac_collapse_on_dblclick = true;
-extern int qt_antialiasing_threshold; // from qapplication.cpp
-QWidget * qt_button_down; // widget got last button-down
-QPointer<QWidget> qt_last_mouse_receiver;
-#if defined(QT_DEBUG)
-static bool appNoGrab = false; // mouse/keyboard grabbing
-#endif
-static AEEventHandlerUPP app_proc_ae_handlerUPP = NULL;
-static EventHandlerRef tablet_proximity_handler = 0;
-static EventHandlerUPP tablet_proximity_UPP = 0;
-bool QApplicationPrivate::native_modal_dialog_active;
-
-Q_GUI_EXPORT bool qt_applefontsmoothing_enabled;
-
-/*****************************************************************************
- External functions
- *****************************************************************************/
-extern void qt_mac_beep(); //qsound_mac.mm
-extern Qt::KeyboardModifiers qt_mac_get_modifiers(int keys); //qkeymapper_mac.cpp
-extern bool qt_mac_can_clickThrough(const QWidget *); //qwidget_mac.cpp
-extern bool qt_mac_is_macdrawer(const QWidget *); //qwidget_mac.cpp
-extern OSWindowRef qt_mac_window_for(const QWidget*); //qwidget_mac.cpp
-extern QWidget *qt_mac_find_window(OSWindowRef); //qwidget_mac.cpp
-extern void qt_mac_set_cursor(const QCursor *); //qcursor_mac.cpp
-extern bool qt_mac_is_macsheet(const QWidget *); //qwidget_mac.cpp
-extern QString qt_mac_from_pascal_string(const Str255); //qglobal.cpp
-extern void qt_mac_command_set_enabled(MenuRef, UInt32, bool); //qmenu_mac.cpp
-extern bool qt_sendSpontaneousEvent(QObject *obj, QEvent *event); // qapplication.cpp
-extern void qt_mac_update_cursor(); // qcursor_mac.mm
-
-// Forward Decls
-void onApplicationWindowChangedActivation( QWidget*widget, bool activated );
-void onApplicationChangedActivation( bool activated );
-
-static void qt_mac_read_fontsmoothing_settings()
-{
- qt_applefontsmoothing_enabled = true;
- int w = 10, h = 10;
- QImage image(w, h, QImage::Format_RGB32);
- image.fill(0xffffffff);
- QPainter p(&image);
- p.drawText(0, h, "X\\");
- p.end();
-
- const int *bits = (const int *) ((const QImage &) image).bits();
- int bpl = image.bytesPerLine() / 4;
- for (int y=0; y<w; ++y) {
- for (int x=0; x<h; ++x) {
- int r = qRed(bits[x]);
- int g = qGreen(bits[x]);
- int b = qBlue(bits[x]);
- if (r != g || r != b) {
- qt_applefontsmoothing_enabled = true;
- return;
- }
- }
- bits += bpl;
- }
- qt_applefontsmoothing_enabled = false;
-}
-
-Q_GUI_EXPORT bool qt_mac_execute_apple_script(const char *script, long script_len, AEDesc *ret) {
- OSStatus err;
- AEDesc scriptTextDesc;
- ComponentInstance theComponent = 0;
- OSAID scriptID = kOSANullScript, resultID = kOSANullScript;
-
- // set up locals to a known state
- AECreateDesc(typeNull, 0, 0, &scriptTextDesc);
- scriptID = kOSANullScript;
- resultID = kOSANullScript;
-
- // open the scripting component
- theComponent = OpenDefaultComponent(kOSAComponentType, typeAppleScript);
- if (!theComponent) {
- err = paramErr;
- goto bail;
- }
-
- // put the script text into an aedesc
- err = AECreateDesc(typeUTF8Text, script, script_len, &scriptTextDesc);
- if (err != noErr)
- goto bail;
-
- // compile the script
- err = OSACompile(theComponent, &scriptTextDesc, kOSAModeNull, &scriptID);
- if (err != noErr)
- goto bail;
-
- // run the script
- err = OSAExecute(theComponent, scriptID, kOSANullScript, kOSAModeNull, &resultID);
-
- // collect the results - if any
- if (ret) {
- AECreateDesc(typeNull, 0, 0, ret);
- if (err == errOSAScriptError)
- OSAScriptError(theComponent, kOSAErrorMessage, typeChar, ret);
- else if (err == noErr && resultID != kOSANullScript)
- OSADisplay(theComponent, resultID, typeChar, kOSAModeNull, ret);
- }
-bail:
- AEDisposeDesc(&scriptTextDesc);
- if (scriptID != kOSANullScript)
- OSADispose(theComponent, scriptID);
- if (resultID != kOSANullScript)
- OSADispose(theComponent, resultID);
- if (theComponent)
- CloseComponent(theComponent);
- return err == noErr;
-}
-
-Q_GUI_EXPORT bool qt_mac_execute_apple_script(const char *script, AEDesc *ret)
-{
- return qt_mac_execute_apple_script(script, qstrlen(script), ret);
-}
-
-Q_GUI_EXPORT bool qt_mac_execute_apple_script(const QString &script, AEDesc *ret)
-{
- const QByteArray l = script.toUtf8(); return qt_mac_execute_apple_script(l.constData(), l.size(), ret);
-}
-
-/* Resolution change magic */
-void qt_mac_display_change_callbk(CGDirectDisplayID, CGDisplayChangeSummaryFlags flags, void *)
-{
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
- const bool resized = flags & kCGDisplayDesktopShapeChangedFlag;
-#else
- Q_UNUSED(flags);
- const bool resized = true;
-#endif
- if (resized && qApp) {
- if (QDesktopWidget *dw = qApp->desktop()) {
- QResizeEvent *re = new QResizeEvent(dw->size(), dw->size());
- QApplication::postEvent(dw, re);
- QCoreGraphicsPaintEngine::cleanUpMacColorSpaces();
- }
- }
-}
-
-#ifdef DEBUG_PLATFORM_SETTINGS
-static void qt_mac_debug_palette(const QPalette &pal, const QPalette &pal2, const QString &where)
-{
- const char *const groups[] = {"Active", "Disabled", "Inactive" };
- const char *const roles[] = { "WindowText", "Button", "Light", "Midlight", "Dark", "Mid",
- "Text", "BrightText", "ButtonText", "Base", "Window", "Shadow",
- "Highlight", "HighlightedText", "Link", "LinkVisited" };
- if (!where.isNull())
- qDebug("qt-internal: %s", where.toLatin1().constData());
- for(int grp = 0; grp < QPalette::NColorGroups; grp++) {
- for(int role = 0; role < QPalette::NColorRoles; role++) {
- QBrush b = pal.brush((QPalette::ColorGroup)grp, (QPalette::ColorRole)role);
- QPixmap pm = b.texture();
- qDebug(" %s::%s %d::%d::%d [%p]%s", groups[grp], roles[role], b.color().red(),
- b.color().green(), b.color().blue(), pm.isNull() ? 0 : &pm,
- pal2.brush((QPalette::ColorGroup)grp, (QPalette::ColorRole)role) != b ? " (*)" : "");
- }
- }
-
-}
-#else
-#define qt_mac_debug_palette(x, y, z)
-#endif
-
-//raise a notification
-void qt_mac_send_notification()
-{
- QMacCocoaAutoReleasePool pool;
- [[NSApplication sharedApplication] requestUserAttention:NSInformationalRequest];
-}
-
-void qt_mac_cancel_notification()
-{
- QMacCocoaAutoReleasePool pool;
- [[NSApplication sharedApplication] cancelUserAttentionRequest:NSInformationalRequest];
-}
-
-void qt_mac_set_app_icon(const QPixmap &pixmap)
-{
- QMacCocoaAutoReleasePool pool;
- NSImage *image = NULL;
- if (pixmap.isNull()) {
- // Get Application icon from bundle
- image = [[NSImage imageNamed:@"NSApplicationIcon"] retain]; // released below
- } else {
- image = static_cast<NSImage *>(qt_mac_create_nsimage(pixmap));
- }
-
- [NSApp setApplicationIconImage:image];
- [image release];
-}
-
-Q_GUI_EXPORT void qt_mac_set_press_and_hold_context(bool b)
-{
- Q_UNUSED(b);
- qWarning("qt_mac_set_press_and_hold_context: This functionality is no longer available");
-}
-
-bool qt_nograb() // application no-grab option
-{
-#if defined(QT_DEBUG)
- return appNoGrab;
-#else
- return false;
-#endif
-}
-
-void qt_mac_update_os_settings()
-{
- if (!qApp)
- return;
- if (!QApplication::startingUp()) {
- static bool needToPolish = true;
- if (needToPolish) {
- QApplication::style()->polish(qApp);
- needToPolish = false;
- }
- }
- //focus mode
- /* First worked as of 10.2.3 */
- QSettings appleSettings(QLatin1String("apple.com"));
- QVariant appleValue = appleSettings.value(QLatin1String("AppleKeyboardUIMode"), 0);
- qt_tab_all_widgets = (appleValue.toInt() & 0x2);
- //paging mode
- /* First worked as of 10.2.3 */
- appleValue = appleSettings.value(QLatin1String("AppleScrollerPagingBehavior"), false);
- qt_scrollbar_jump_to_pos = appleValue.toBool();
- //collapse
- /* First worked as of 10.3.3 */
- appleValue = appleSettings.value(QLatin1String("AppleMiniaturizeOnDoubleClick"), true);
- qt_mac_collapse_on_dblclick = appleValue.toBool();
-
- // Anti-aliasing threshold
- appleValue = appleSettings.value(QLatin1String("AppleAntiAliasingThreshold"));
- if (appleValue.isValid())
- qt_antialiasing_threshold = appleValue.toInt();
-
-#ifdef DEBUG_PLATFORM_SETTINGS
- qDebug("qt_mac_update_os_settings *********************************************************************");
-#endif
- { // setup the global palette
- QColor qc;
- (void) QApplication::style(); // trigger creation of application style and system palettes
- QPalette pal = *QApplicationPrivate::sys_pal;
-
- pal.setBrush( QPalette::Active, QPalette::Highlight, qcolorForTheme(kThemeBrushPrimaryHighlightColor) );
- pal.setBrush( QPalette::Inactive, QPalette::Highlight, qcolorForTheme(kThemeBrushSecondaryHighlightColor) );
-
- pal.setBrush( QPalette::Disabled, QPalette::Highlight, qcolorForTheme(kThemeBrushSecondaryHighlightColor) );
- pal.setBrush( QPalette::Active, QPalette::Shadow, qcolorForTheme(kThemeBrushButtonActiveDarkShadow) );
-
- pal.setBrush( QPalette::Inactive, QPalette::Shadow, qcolorForTheme(kThemeBrushButtonInactiveDarkShadow) );
- pal.setBrush( QPalette::Disabled, QPalette::Shadow, qcolorForTheme(kThemeBrushButtonInactiveDarkShadow) );
-
- qc = qcolorForThemeTextColor(kThemeTextColorDialogActive);
- pal.setColor(QPalette::Active, QPalette::Text, qc);
- pal.setColor(QPalette::Active, QPalette::WindowText, qc);
- pal.setColor(QPalette::Active, QPalette::HighlightedText, qc);
-
- qc = qcolorForThemeTextColor(kThemeTextColorDialogInactive);
- pal.setColor(QPalette::Inactive, QPalette::Text, qc);
- pal.setColor(QPalette::Inactive, QPalette::WindowText, qc);
- pal.setColor(QPalette::Inactive, QPalette::HighlightedText, qc);
- pal.setColor(QPalette::Disabled, QPalette::Text, qc);
- pal.setColor(QPalette::Disabled, QPalette::WindowText, qc);
- pal.setColor(QPalette::Disabled, QPalette::HighlightedText, qc);
- pal.setBrush(QPalette::ToolTipBase, QColor(255, 255, 199));
-
- if (!QApplicationPrivate::sys_pal || *QApplicationPrivate::sys_pal != pal) {
- QApplicationPrivate::setSystemPalette(pal);
- QApplication::setPalette(pal);
- }
-#ifdef DEBUG_PLATFORM_SETTINGS
- qt_mac_debug_palette(pal, QApplication::palette(), "Global Palette");
-#endif
- }
-
- QFont fnt = qfontForThemeFont(kThemeApplicationFont);
-#ifdef DEBUG_PLATFORM_SETTINGS
- qDebug("qt-internal: Font for Application [%s::%d::%d::%d]",
- fnt.family().toLatin1().constData(), fnt.pointSize(), fnt.bold(), fnt.italic());
-#endif
- if (!QApplicationPrivate::sys_font || *QApplicationPrivate::sys_font != fnt)
- QApplicationPrivate::setSystemFont(fnt);
-
- { //setup the fonts
- struct FontMap {
- FontMap(const char *qc, short fk) : qt_class(qc), font_key(fk) { }
- const char *const qt_class;
- short font_key;
- } mac_widget_fonts[] = {
- FontMap("QPushButton", kThemePushButtonFont),
- FontMap("QListView", kThemeViewsFont),
- FontMap("QListBox", kThemeViewsFont),
- FontMap("QTitleBar", kThemeWindowTitleFont),
- FontMap("QMenuBar", kThemeMenuTitleFont),
- FontMap("QMenu", kThemeMenuItemFont),
- FontMap("QComboMenuItem", kThemeSystemFont),
- FontMap("QHeaderView", kThemeSmallSystemFont),
- FontMap("Q3Header", kThemeSmallSystemFont),
- FontMap("QTipLabel", kThemeSmallSystemFont),
- FontMap("QLabel", kThemeSystemFont),
- FontMap("QToolButton", kThemeSmallSystemFont),
- FontMap("QMenuItem", kThemeMenuItemFont), // It doesn't exist, but its unique.
- FontMap("QComboLineEdit", kThemeViewsFont), // It doesn't exist, but its unique.
- FontMap("QSmallFont", kThemeSmallSystemFont), // It doesn't exist, but its unique.
- FontMap("QMiniFont", kThemeMiniSystemFont), // It doesn't exist, but its unique.
- FontMap(0, 0) };
- for(int i = 0; mac_widget_fonts[i].qt_class; i++) {
- QFont fnt = qfontForThemeFont(mac_widget_fonts[i].font_key);
- bool set_font = true;
- FontHash *hash = qt_app_fonts_hash();
- if (!hash->isEmpty()) {
- FontHash::const_iterator it
- = hash->constFind(mac_widget_fonts[i].qt_class);
- if (it != hash->constEnd())
- set_font = (fnt != *it);
- }
- if (set_font) {
- QApplication::setFont(fnt, mac_widget_fonts[i].qt_class);
-#ifdef DEBUG_PLATFORM_SETTINGS
- qDebug("qt-internal: Font for %s [%s::%d::%d::%d]", mac_widget_fonts[i].qt_class,
- fnt.family().toLatin1().constData(), fnt.pointSize(), fnt.bold(), fnt.italic());
-#endif
- }
- }
- }
- QApplicationPrivate::initializeWidgetPaletteHash();
-#ifdef DEBUG_PLATFORM_SETTINGS
- qDebug("qt_mac_update_os_settings END !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
-#endif
-}
-
-void QApplicationPrivate::initializeWidgetPaletteHash()
-{
- { //setup the palette
- struct PaletteMap {
- inline PaletteMap(const char *qc, ThemeBrush a, ThemeBrush i) :
- qt_class(qc), active(a), inactive(i) { }
- const char *const qt_class;
- ThemeBrush active, inactive;
- } mac_widget_colors[] = {
- PaletteMap("QToolButton", kThemeTextColorBevelButtonActive, kThemeTextColorBevelButtonInactive),
- PaletteMap("QAbstractButton", kThemeTextColorPushButtonActive, kThemeTextColorPushButtonInactive),
- PaletteMap("QHeaderView", kThemeTextColorPushButtonActive, kThemeTextColorPushButtonInactive),
- PaletteMap("Q3Header", kThemeTextColorPushButtonActive, kThemeTextColorPushButtonInactive),
- PaletteMap("QComboBox", kThemeTextColorPopupButtonActive, kThemeTextColorPopupButtonInactive),
- PaletteMap("QAbstractItemView", kThemeTextColorListView, kThemeTextColorDialogInactive),
- PaletteMap("QMessageBoxLabel", kThemeTextColorAlertActive, kThemeTextColorAlertInactive),
- PaletteMap("QTabBar", kThemeTextColorTabFrontActive, kThemeTextColorTabFrontInactive),
- PaletteMap("QLabel", kThemeTextColorPlacardActive, kThemeTextColorPlacardInactive),
- PaletteMap("QGroupBox", kThemeTextColorPlacardActive, kThemeTextColorPlacardInactive),
- PaletteMap("QMenu", kThemeTextColorPopupLabelActive, kThemeTextColorPopupLabelInactive),
- PaletteMap("QTextEdit", 0, 0),
- PaletteMap("QTextControl", 0, 0),
- PaletteMap("QLineEdit", 0, 0),
- PaletteMap(0, 0, 0) };
- QColor qc;
- for(int i = 0; mac_widget_colors[i].qt_class; i++) {
- QPalette pal;
- if (mac_widget_colors[i].active != 0) {
- qc = qcolorForThemeTextColor(mac_widget_colors[i].active);
- pal.setColor(QPalette::Active, QPalette::Text, qc);
- pal.setColor(QPalette::Active, QPalette::WindowText, qc);
- pal.setColor(QPalette::Active, QPalette::HighlightedText, qc);
- qc = qcolorForThemeTextColor(mac_widget_colors[i].inactive);
- pal.setColor(QPalette::Inactive, QPalette::Text, qc);
- pal.setColor(QPalette::Disabled, QPalette::Text, qc);
- pal.setColor(QPalette::Inactive, QPalette::WindowText, qc);
- pal.setColor(QPalette::Disabled, QPalette::WindowText, qc);
- pal.setColor(QPalette::Inactive, QPalette::HighlightedText, qc);
- pal.setColor(QPalette::Disabled, QPalette::HighlightedText, qc);
- }
- if (!strcmp(mac_widget_colors[i].qt_class, "QMenu")) {
- qc = qcolorForThemeTextColor(kThemeTextColorMenuItemActive);
- pal.setBrush(QPalette::ButtonText, qc);
- qc = qcolorForThemeTextColor(kThemeTextColorMenuItemSelected);
- pal.setBrush(QPalette::HighlightedText, qc);
- qc = qcolorForThemeTextColor(kThemeTextColorMenuItemDisabled);
- pal.setBrush(QPalette::Disabled, QPalette::Text, qc);
- } else if (!strcmp(mac_widget_colors[i].qt_class, "QAbstractButton")
- || !strcmp(mac_widget_colors[i].qt_class, "QHeaderView")
- || !strcmp(mac_widget_colors[i].qt_class, "Q3Header")) { //special
- pal.setColor(QPalette::Disabled, QPalette::ButtonText,
- pal.color(QPalette::Disabled, QPalette::Text));
- pal.setColor(QPalette::Inactive, QPalette::ButtonText,
- pal.color(QPalette::Inactive, QPalette::Text));
- pal.setColor(QPalette::Active, QPalette::ButtonText,
- pal.color(QPalette::Active, QPalette::Text));
- } else if (!strcmp(mac_widget_colors[i].qt_class, "QAbstractItemView")) {
- pal.setBrush(QPalette::Active, QPalette::Highlight,
- qcolorForTheme(kThemeBrushAlternatePrimaryHighlightColor));
- qc = qcolorForThemeTextColor(kThemeTextColorMenuItemSelected);
- pal.setBrush(QPalette::Active, QPalette::HighlightedText, qc);
-#if 1
- pal.setBrush(QPalette::Inactive, QPalette::Text,
- pal.brush(QPalette::Active, QPalette::Text));
- pal.setBrush(QPalette::Inactive, QPalette::HighlightedText,
- pal.brush(QPalette::Active, QPalette::Text));
-#endif
- } else if (!strcmp(mac_widget_colors[i].qt_class, "QTextEdit")
- || !strcmp(mac_widget_colors[i].qt_class, "QTextControl")) {
- pal.setBrush(QPalette::Inactive, QPalette::Text,
- pal.brush(QPalette::Active, QPalette::Text));
- pal.setBrush(QPalette::Inactive, QPalette::HighlightedText,
- pal.brush(QPalette::Active, QPalette::Text));
- } else if (!strcmp(mac_widget_colors[i].qt_class, "QLineEdit")) {
- pal.setBrush(QPalette::Disabled, QPalette::Base,
- pal.brush(QPalette::Active, QPalette::Base));
- }
-
- bool set_palette = true;
- PaletteHash *phash = qt_app_palettes_hash();
- if (!phash->isEmpty()) {
- PaletteHash::const_iterator it
- = phash->constFind(mac_widget_colors[i].qt_class);
- if (it != phash->constEnd())
- set_palette = (pal != *it);
- }
- if (set_palette) {
- QApplication::setPalette(pal, mac_widget_colors[i].qt_class);
-#ifdef DEBUG_PLATFORM_SETTINGS
- qt_mac_debug_palette(pal, QApplication::palette(), QLatin1String("Palette for ") + QString::fromLatin1(mac_widget_colors[i].qt_class));
-#endif
- }
- }
- }
-}
-
-static void qt_mac_event_release(EventRef &event)
-{
- ReleaseEvent(event);
- event = 0;
-}
-
-/* sheets */
-void qt_event_request_showsheet(QWidget *w)
-{
- Q_ASSERT(qt_mac_is_macsheet(w));
- [NSApp beginSheet:qt_mac_window_for(w) modalForWindow:qt_mac_window_for(w->parentWidget())
- modalDelegate:nil didEndSelector:nil contextInfo:0];
-}
-
-static void qt_post_window_change_event(QWidget *widget)
-{
- qt_widget_private(widget)->needWindowChange = true;
- QEvent *glWindowChangeEvent = new QEvent(QEvent::MacGLWindowChange);
- QApplication::postEvent(widget, glWindowChangeEvent);
-}
-
-/*
- Posts updates to all child and grandchild OpenGL widgets for the given widget.
-*/
-static void qt_mac_update_child_gl_widgets(QWidget *widget)
-{
- // Update all OpenGL child widgets for the given widget.
- QList<QWidgetPrivate::GlWidgetInfo> &glWidgets = qt_widget_private(widget)->glWidgets;
- QList<QWidgetPrivate::GlWidgetInfo>::iterator end = glWidgets.end();
- QList<QWidgetPrivate::GlWidgetInfo>::iterator it = glWidgets.begin();
-
- for (;it != end; ++it) {
- qt_post_window_change_event(it->widget);
- }
-}
-
-/*
- Sends updates to all child and grandchild gl widgets that have updates pending.
-*/
-void qt_mac_send_posted_gl_updates(QWidget *widget)
-{
- QList<QWidgetPrivate::GlWidgetInfo> &glWidgets = qt_widget_private(widget)->glWidgets;
- QList<QWidgetPrivate::GlWidgetInfo>::iterator end = glWidgets.end();
- QList<QWidgetPrivate::GlWidgetInfo>::iterator it = glWidgets.begin();
-
- for (;it != end; ++it) {
- QWidget *glWidget = it->widget;
- if (qt_widget_private(glWidget)->needWindowChange) {
- QEvent glChangeEvent(QEvent::MacGLWindowChange);
- QApplication::sendEvent(glWidget, &glChangeEvent);
- }
- }
-}
-
-/*
- Posts updates to all OpenGL widgets within the window that the given widget intersects.
-*/
-static void qt_mac_update_intersected_gl_widgets(QWidget *widget)
-{
- Q_UNUSED(widget);
-}
-
-/*
- Posts a kEventQtRequestWindowChange event to the main Carbon event queue.
-*/
-static EventRef request_window_change_pending = 0;
-Q_GUI_EXPORT void qt_event_request_window_change()
-{
- if(request_window_change_pending)
- return;
-
- CreateEvent(0, kEventClassQt, kEventQtRequestWindowChange, GetCurrentEventTime(),
- kEventAttributeUserEvent, &request_window_change_pending);
- PostEventToQueue(GetMainEventQueue(), request_window_change_pending, kEventPriorityHigh);
-}
-
-/* window changing. This is a hack around Apple's missing functionality, pending the toolbox
- team fix. --Sam */
-Q_GUI_EXPORT void qt_event_request_window_change(QWidget *widget)
-{
- if (!widget)
- return;
-
- // Post a kEventQtRequestWindowChange event. This event is semi-public,
- // don't remove this line!
- qt_event_request_window_change();
-
- // Post update request on gl widgets unconditionally.
- if (qt_widget_private(widget)->isGLWidget == true) {
- qt_post_window_change_event(widget);
- return;
- }
-
- qt_mac_update_child_gl_widgets(widget);
- qt_mac_update_intersected_gl_widgets(widget);
-}
-
-/* activation */
-static struct {
- QPointer<QWidget> widget;
- EventRef event;
- EventLoopTimerRef timer;
- EventLoopTimerUPP timerUPP;
-} request_activate_pending = { 0, 0, 0, 0 };
-bool qt_event_remove_activate()
-{
- if (request_activate_pending.timer) {
- RemoveEventLoopTimer(request_activate_pending.timer);
- request_activate_pending.timer = 0;
- }
- if (request_activate_pending.event)
- qt_mac_event_release(request_activate_pending.event);
- return true;
-}
-
-void qt_event_activate_timer_callbk(EventLoopTimerRef r, void *)
-{
- EventLoopTimerRef otc = request_activate_pending.timer;
- qt_event_remove_activate();
- if (r == otc && !request_activate_pending.widget.isNull()) {
- const QWidget *tlw = request_activate_pending.widget->window();
- Qt::WindowType wt = tlw->windowType();
- if (tlw->isVisible()
- && ((wt != Qt::Desktop && wt != Qt::Popup && wt != Qt::Tool) || tlw->isModal())) {
- CreateEvent(0, kEventClassQt, kEventQtRequestActivate, GetCurrentEventTime(),
- kEventAttributeUserEvent, &request_activate_pending.event);
- PostEventToQueue(GetMainEventQueue(), request_activate_pending.event, kEventPriorityHigh);
- }
- }
-}
-
-void qt_event_request_activate(QWidget *w)
-{
- if (w == request_activate_pending.widget)
- return;
-
- /* We put these into a timer because due to order of events being sent we need to be sure this
- comes from inside of the event loop */
- qt_event_remove_activate();
- if (!request_activate_pending.timerUPP)
- request_activate_pending.timerUPP = NewEventLoopTimerUPP(qt_event_activate_timer_callbk);
- request_activate_pending.widget = w;
- InstallEventLoopTimer(GetMainEventLoop(), 0, 0, request_activate_pending.timerUPP, 0, &request_activate_pending.timer);
-}
-
-
-/* menubars */
-void qt_event_request_menubarupdate()
-{
- // Just call this. The request has the benefit that we don't call this multiple times, but
- // we can optimize this.
- QMenuBar::macUpdateMenuBar();
-}
-
-
-void QApplicationPrivate::createEventDispatcher()
-{
- Q_Q(QApplication);
- if (q->type() != QApplication::Tty)
- eventDispatcher = new QEventDispatcherMac(q);
- else
- eventDispatcher = new QEventDispatcherUNIX(q);
-}
-
-/* clipboard */
-void qt_event_send_clipboard_changed()
-{
-}
-
-/* app menu */
-static QMenu *qt_mac_dock_menu = 0;
-Q_GUI_EXPORT void qt_mac_set_dock_menu(QMenu *menu)
-{
- qt_mac_dock_menu = menu;
- [NSApp setDockMenu:menu->macMenu()];
-}
-
-/* events that hold pointers to widgets, must be cleaned up like this */
-void qt_mac_event_release(QWidget *w)
-{
- if (w) {
- if (w == qt_mac_dock_menu) {
- qt_mac_dock_menu = 0;
- [NSApp setDockMenu:0];
- }
- }
-}
-
-struct QMacAppleEventTypeSpec {
- AEEventClass mac_class;
- AEEventID mac_id;
-} app_apple_events[] = {
- { kCoreEventClass, kAEQuitApplication },
- { kCoreEventClass, kAEOpenDocuments },
- { kInternetEventClass, kAEGetURL },
-};
-
-static void qt_init_tablet_proximity_handler()
-{
- EventTypeSpec tabletProximityEvent = { kEventClassTablet, kEventTabletProximity };
- InstallEventHandler(GetEventMonitorTarget(), tablet_proximity_UPP,
- 1, &tabletProximityEvent, qApp, &tablet_proximity_handler);
-}
-
-static void qt_release_tablet_proximity_handler()
-{
- RemoveEventHandler(tablet_proximity_handler);
-}
-
-QString QApplicationPrivate::appName() const
-{
- static QString applName;
- if (applName.isEmpty()) {
- applName = QCoreApplicationPrivate::macMenuBarName();
- ProcessSerialNumber psn;
- if (applName.isEmpty() && qt_is_gui_used && GetCurrentProcess(&psn) == noErr) {
- QCFString cfstr;
- CopyProcessName(&psn, &cfstr);
- applName = cfstr;
- }
- }
- return applName;
-}
-
-void qt_release_app_proc_handler()
-{
-}
-
-void qt_color_profile_changed(CFNotificationCenterRef, void *, CFStringRef, const void *,
- CFDictionaryRef)
-{
- QCoreGraphicsPaintEngine::cleanUpMacColorSpaces();
-}
-/* platform specific implementations */
-void qt_init(QApplicationPrivate *priv, int)
-{
- if (qt_is_gui_used) {
- CGDisplayRegisterReconfigurationCallback(qt_mac_display_change_callbk, 0);
- CFNotificationCenterRef center = CFNotificationCenterGetDistributedCenter();
- CFNotificationCenterAddObserver(center, qApp, qt_color_profile_changed,
- kCMDeviceUnregisteredNotification, 0,
- CFNotificationSuspensionBehaviorDeliverImmediately);
- CFNotificationCenterAddObserver(center, qApp, qt_color_profile_changed,
- kCMDefaultDeviceNotification, 0,
- CFNotificationSuspensionBehaviorDeliverImmediately);
- CFNotificationCenterAddObserver(center, qApp, qt_color_profile_changed,
- kCMDeviceProfilesNotification, 0,
- CFNotificationSuspensionBehaviorDeliverImmediately);
- CFNotificationCenterAddObserver(center, qApp, qt_color_profile_changed,
- kCMDefaultDeviceProfileNotification, 0,
- CFNotificationSuspensionBehaviorDeliverImmediately);
- ProcessSerialNumber psn;
- if (GetCurrentProcess(&psn) == noErr) {
- // Jambi needs to transform itself since most people aren't "used"
- // to putting things in bundles, but other people may actually not
- // want to tranform the process (running as a helper or something)
- // so don't do that for them. This means checking both LSUIElement
- // and LSBackgroundOnly. If you set them both... well, you
- // shouldn't do that.
-
- bool forceTransform = true;
- CFTypeRef value = CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(),
- CFSTR("LSUIElement"));
- if (value) {
- CFTypeID valueType = CFGetTypeID(value);
- // Officially it's supposed to be a string, a boolean makes sense, so we'll check.
- // A number less so, but OK.
- if (valueType == CFStringGetTypeID())
- forceTransform = !(QCFString::toQString(static_cast<CFStringRef>(value)).toInt());
- else if (valueType == CFBooleanGetTypeID())
- forceTransform = !CFBooleanGetValue(static_cast<CFBooleanRef>(value));
- else if (valueType == CFNumberGetTypeID()) {
- int valueAsInt;
- CFNumberGetValue(static_cast<CFNumberRef>(value), kCFNumberIntType, &valueAsInt);
- forceTransform = !valueAsInt;
- }
- }
-
- if (forceTransform) {
- value = CFBundleGetValueForInfoDictionaryKey(CFBundleGetMainBundle(),
- CFSTR("LSBackgroundOnly"));
- if (value) {
- CFTypeID valueType = CFGetTypeID(value);
- if (valueType == CFBooleanGetTypeID())
- forceTransform = !CFBooleanGetValue(static_cast<CFBooleanRef>(value));
- else if (valueType == CFStringGetTypeID())
- forceTransform = !(QCFString::toQString(static_cast<CFStringRef>(value)).toInt());
- else if (valueType == CFNumberGetTypeID()) {
- int valueAsInt;
- CFNumberGetValue(static_cast<CFNumberRef>(value), kCFNumberIntType, &valueAsInt);
- forceTransform = !valueAsInt;
- }
- }
- }
-
-
- if (forceTransform) {
- TransformProcessType(&psn, kProcessTransformToForegroundApplication);
- }
- }
- }
-
- char **argv = priv->argv;
-
- // Get command line params
- if (int argc = priv->argc) {
- int i, j = 1;
- QString passed_psn;
- for(i=1; i < argc; i++) {
- if (argv[i] && *argv[i] != '-') {
- argv[j++] = argv[i];
- continue;
- }
- QByteArray arg(argv[i]);
-#if defined(QT_DEBUG)
- if (arg == "-nograb")
- appNoGrab = !appNoGrab;
- else
-#endif // QT_DEBUG
- if (arg.left(5) == "-psn_") {
- passed_psn = QString::fromLatin1(arg.mid(6));
- } else {
- argv[j++] = argv[i];
- }
- }
- if (j < priv->argc) {
- priv->argv[j] = 0;
- priv->argc = j;
- }
-
- //special hack to change working directory (for an app bundle) when running from finder
- if (!passed_psn.isNull() && QDir::currentPath() == QLatin1String("/")) {
- QCFType<CFURLRef> bundleURL(CFBundleCopyBundleURL(CFBundleGetMainBundle()));
- QString qbundlePath = QCFString(CFURLCopyFileSystemPath(bundleURL,
- kCFURLPOSIXPathStyle));
- if (qbundlePath.endsWith(QLatin1String(".app")))
- QDir::setCurrent(qbundlePath.section(QLatin1Char('/'), 0, -2));
- }
- }
-
- QMacPasteboardMime::initialize();
-
- qApp->setObjectName(priv->appName());
- if (qt_is_gui_used) {
- QColormap::initialize();
- QFont::initialize();
- QCursorData::initialize();
- QCoreGraphicsPaintEngine::initialize();
-#ifndef QT_NO_ACCESSIBILITY
- QAccessible::initialize();
-#endif
- QMacInputContext::initialize();
- QApplicationPrivate::inputContext = new QMacInputContext;
-
- if (QApplication::desktopSettingsAware())
- qt_mac_update_os_settings();
- if (!app_proc_ae_handlerUPP && !QApplication::testAttribute(Qt::AA_MacPluginApplication)) {
- app_proc_ae_handlerUPP = AEEventHandlerUPP(QApplicationPrivate::globalAppleEventProcessor);
- for(uint i = 0; i < sizeof(app_apple_events) / sizeof(QMacAppleEventTypeSpec); ++i) {
- // Install apple event handler, but avoid overwriting an already
- // existing handler (it means a 3rd party application has installed one):
- SRefCon refCon = 0;
- AEEventHandlerUPP current_handler = NULL;
- AEGetEventHandler(app_apple_events[i].mac_class, app_apple_events[i].mac_id, &current_handler, &refCon, false);
- if (!current_handler)
- AEInstallEventHandler(app_apple_events[i].mac_class, app_apple_events[i].mac_id,
- app_proc_ae_handlerUPP, SRefCon(qApp), false);
- }
- }
-
- if (QApplicationPrivate::app_style) {
- QEvent ev(QEvent::Style);
- qt_sendSpontaneousEvent(QApplicationPrivate::app_style, &ev);
- }
- }
- if (QApplication::desktopSettingsAware())
- QApplicationPrivate::qt_mac_apply_settings();
-
- // Cocoa application delegate
- NSApplication *cocoaApp = [QNSApplication sharedApplication];
- qt_redirectNSApplicationSendEvent();
-
- QMacCocoaAutoReleasePool pool;
- id oldDelegate = [cocoaApp delegate];
- QT_MANGLE_NAMESPACE(QCocoaApplicationDelegate) *newDelegate = [QT_MANGLE_NAMESPACE(QCocoaApplicationDelegate) sharedDelegate];
- Q_ASSERT(newDelegate);
- [newDelegate setQtPrivate:priv];
- // Only do things that make sense to do once, otherwise we crash.
- if (oldDelegate != newDelegate && !QApplication::testAttribute(Qt::AA_MacPluginApplication)) {
- [newDelegate setReflectionDelegate:oldDelegate];
- [cocoaApp setDelegate:newDelegate];
-
- QT_MANGLE_NAMESPACE(QCocoaMenuLoader) *qtMenuLoader = [[QT_MANGLE_NAMESPACE(QCocoaMenuLoader) alloc] init];
- if ([NSBundle loadNibNamed:@"qt_menu" owner:qtMenuLoader] == false) {
- qFatal("Qt internal error: qt_menu.nib could not be loaded. The .nib file"
- " should be placed in QtGui.framework/Versions/Current/Resources/ "
- " or in the resources directory of your application bundle.");
- }
-
- [cocoaApp setMenu:[qtMenuLoader menu]];
- [newDelegate setMenuLoader:qtMenuLoader];
- [qtMenuLoader release];
- }
- // Register for Carbon tablet proximity events on the event monitor target.
- // This means that we should receive proximity events even when we aren't the active application.
- if (!tablet_proximity_handler) {
- tablet_proximity_UPP = NewEventHandlerUPP(QApplicationPrivate::tabletProximityCallback);
- qt_init_tablet_proximity_handler();
- }
- priv->native_modal_dialog_active = false;
-
- qt_mac_read_fontsmoothing_settings();
-}
-
-void qt_release_apple_event_handler()
-{
- if(app_proc_ae_handlerUPP) {
- for(uint i = 0; i < sizeof(app_apple_events) / sizeof(QMacAppleEventTypeSpec); ++i)
- AERemoveEventHandler(app_apple_events[i].mac_class, app_apple_events[i].mac_id,
- app_proc_ae_handlerUPP, true);
- DisposeAEEventHandlerUPP(app_proc_ae_handlerUPP);
- app_proc_ae_handlerUPP = 0;
- }
-}
-
-/*****************************************************************************
- qt_cleanup() - cleans up when the application is finished
- *****************************************************************************/
-
-void qt_cleanup()
-{
- CGDisplayRemoveReconfigurationCallback(qt_mac_display_change_callbk, 0);
- CFNotificationCenterRef center = CFNotificationCenterGetDistributedCenter();
- CFNotificationCenterRemoveObserver(center, qApp, kCMDeviceUnregisteredNotification, 0);
- CFNotificationCenterRemoveObserver(center, qApp, kCMDefaultDeviceNotification, 0);
- CFNotificationCenterRemoveObserver(center, qApp, kCMDeviceProfilesNotification, 0);
- CFNotificationCenterRemoveObserver(center, qApp, kCMDefaultDeviceProfileNotification, 0);
-
- qt_release_apple_event_handler();
- qt_release_tablet_proximity_handler();
- if (tablet_proximity_UPP)
- DisposeEventHandlerUPP(tablet_proximity_UPP);
-
- QPixmapCache::clear();
- if (qt_is_gui_used) {
-#ifndef QT_NO_ACCESSIBILITY
- QAccessible::cleanup();
-#endif
- QMacInputContext::cleanup();
- QCursorData::cleanup();
- QFont::cleanup();
- QColormap::cleanup();
- if (qt_mac_safe_pdev) {
- delete qt_mac_safe_pdev;
- qt_mac_safe_pdev = 0;
- }
- extern void qt_mac_unregister_widget(); // qapplication_mac.cpp
- qt_mac_unregister_widget();
- }
-}
-
-/*****************************************************************************
- Platform specific global and internal functions
- *****************************************************************************/
-void qt_updated_rootinfo()
-{
-}
-
-bool qt_wstate_iconified(WId)
-{
- return false;
-}
-
-/*****************************************************************************
- Platform specific QApplication members
- *****************************************************************************/
-extern QWidget * mac_mouse_grabber;
-extern QWidget * mac_keyboard_grabber;
-
-#ifndef QT_NO_CURSOR
-
-/*****************************************************************************
- QApplication cursor stack
- *****************************************************************************/
-
-void QApplication::setOverrideCursor(const QCursor &cursor)
-{
- qApp->d_func()->cursor_list.prepend(cursor);
-
- qt_mac_update_cursor();
-}
-
-void QApplication::restoreOverrideCursor()
-{
- if (qApp->d_func()->cursor_list.isEmpty())
- return;
- qApp->d_func()->cursor_list.removeFirst();
-
- qt_mac_update_cursor();
-}
-#endif // QT_NO_CURSOR
-
-QWidget *QApplication::topLevelAt(const QPoint &p)
-{
- // Use a cache to avoid iterate through the whole list of windows for all
- // calls to to topLevelAt. We e.g. do this for each and every mouse
- // move since we need to find the widget under mouse:
- if (topLevelAt_cache && topLevelAt_cache->frameGeometry().contains(p))
- return topLevelAt_cache;
-
- // INVARIANT: Cache miss. Go through the list if windows instead:
- QMacCocoaAutoReleasePool pool;
- NSPoint cocoaPoint = flipPoint(p);
- NSInteger windowCount;
- NSCountWindows(&windowCount);
- if (windowCount <= 0)
- return 0; // There's no window to find!
-
- QVarLengthArray<NSInteger> windowList(windowCount);
- NSWindowList(windowCount, windowList.data());
- int firstQtWindowFound = -1;
- for (int i = 0; i < windowCount; ++i) {
- NSWindow *window = [NSApp windowWithWindowNumber:windowList[i]];
- if (window) {
- QWidget *candidateWindow = [window QT_MANGLE_NAMESPACE(qt_qwidget)];
- if (candidateWindow && firstQtWindowFound == -1)
- firstQtWindowFound = i;
-
- if (NSPointInRect(cocoaPoint, [window frame])) {
- // Check to see if there's a hole in the window where the mask is.
- // If there is, we should just continue to see if there is a window below.
- if (candidateWindow && !candidateWindow->mask().isEmpty()) {
- QPoint localPoint = candidateWindow->mapFromGlobal(p);
- if (!candidateWindow->mask().contains(localPoint))
- continue;
- else
- return candidateWindow;
- } else {
- if (i == firstQtWindowFound) {
- // The cache will only work when the window under mouse is
- // top most (that is, not partially obscured by other windows.
- // And we only set it if no mask is present to optimize for the common case:
- topLevelAt_cache = candidateWindow;
- }
- return candidateWindow;
- }
- }
- }
- }
-
- topLevelAt_cache = 0;
- return 0;
-}
-
-/*****************************************************************************
- Main event loop
- *****************************************************************************/
-
-bool QApplicationPrivate::modalState()
-{
- return app_do_modal;
-}
-
-
-void QApplicationPrivate::enterModal_sys(QWidget *widget)
-{
-#ifdef DEBUG_MODAL_EVENTS
- Q_ASSERT(widget);
- qDebug("Entering modal state with %s::%s::%p (%d)", widget->metaObject()->className(), widget->objectName().toLocal8Bit().constData(),
- widget, qt_modal_stack ? (int)qt_modal_stack->count() : -1);
-#endif
- if (!qt_modal_stack)
- qt_modal_stack = new QWidgetList;
-
- dispatchEnterLeave(0, qt_last_mouse_receiver);
- qt_last_mouse_receiver = 0;
-
- qt_modal_stack->insert(0, widget);
- if (!app_do_modal)
- qt_event_request_menubarupdate();
- app_do_modal = true;
- qt_button_down = 0;
-
- if (!qt_mac_is_macsheet(widget))
- QEventDispatcherMacPrivate::beginModalSession(widget);
-}
-
-void QApplicationPrivate::leaveModal_sys(QWidget *widget)
-{
- if (qt_modal_stack && qt_modal_stack->removeAll(widget)) {
-#ifdef DEBUG_MODAL_EVENTS
- qDebug("Leaving modal state with %s::%s::%p (%d)", widget->metaObject()->className(), widget->objectName().toLocal8Bit().constData(),
- widget, qt_modal_stack->count());
-#endif
- if (qt_modal_stack->isEmpty()) {
- delete qt_modal_stack;
- qt_modal_stack = 0;
- QPoint p(QCursor::pos());
- app_do_modal = false;
- QWidget* w = 0;
- if (QWidget *grabber = QWidget::mouseGrabber())
- w = grabber;
- else
- w = QApplication::widgetAt(p.x(), p.y());
- dispatchEnterLeave(w, qt_last_mouse_receiver); // send synthetic enter event
- qt_last_mouse_receiver = w;
- }
- if (!qt_mac_is_macsheet(widget))
- QEventDispatcherMacPrivate::endModalSession(widget);
- }
-#ifdef DEBUG_MODAL_EVENTS
- else qDebug("Failure to remove %s::%s::%p -- %p", widget->metaObject()->className(), widget->objectName().toLocal8Bit().constData(), widget, qt_modal_stack);
-#endif
- app_do_modal = (qt_modal_stack != 0);
- if (!app_do_modal)
- qt_event_request_menubarupdate();
-}
-
-QWidget *QApplicationPrivate::tryModalHelper_sys(QWidget *top)
-{
- return top;
-}
-
-
-OSStatus QApplicationPrivate::tabletProximityCallback(EventHandlerCallRef, EventRef carbonEvent,
- void *)
-{
- OSType eventClass = GetEventClass(carbonEvent);
- UInt32 eventKind = GetEventKind(carbonEvent);
- if (eventClass != kEventClassTablet || eventKind != kEventTabletProximity)
- return eventNotHandledErr;
-
- // Get the current point of the device and its unique ID.
- ::TabletProximityRec proxRec;
- GetEventParameter(carbonEvent, kEventParamTabletProximityRec, typeTabletProximityRec, 0,
- sizeof(proxRec), 0, &proxRec);
- qt_dispatchTabletProximityEvent(proxRec);
- return noErr;
-}
-
-OSStatus
-QApplicationPrivate::globalEventProcessor(EventHandlerCallRef er, EventRef event, void *data)
-{
- Q_UNUSED(er);
- Q_UNUSED(event);
- Q_UNUSED(data);
- return eventNotHandledErr;
-}
-
-void QApplicationPrivate::qt_initAfterNSAppStarted()
-{
- setupAppleEvents();
- qt_mac_update_cursor();
-}
-
-void QApplicationPrivate::setupAppleEvents()
-{
- // This function is called from the event dispatcher when NSApplication has
- // finished initialization, which appears to be just after [NSApplication run] has
- // started to execute. By setting up our apple events handlers this late, we override
- // the ones set up by NSApplication.
-
- // If Qt is used as a plugin, we let the 3rd party application handle events
- // like quit and open file events. Otherwise, if we install our own handlers, we
- // easily end up breaking functionallity the 3rd party application depend on:
- if (QApplication::testAttribute(Qt::AA_MacPluginApplication))
- return;
-
- QT_MANGLE_NAMESPACE(QCocoaApplicationDelegate) *newDelegate = [QT_MANGLE_NAMESPACE(QCocoaApplicationDelegate) sharedDelegate];
- NSAppleEventManager *eventManager = [NSAppleEventManager sharedAppleEventManager];
- [eventManager setEventHandler:newDelegate andSelector:@selector(appleEventQuit:withReplyEvent:)
- forEventClass:kCoreEventClass andEventID:kAEQuitApplication];
- [eventManager setEventHandler:newDelegate andSelector:@selector(getUrl:withReplyEvent:)
- forEventClass:kInternetEventClass andEventID:kAEGetURL];
-}
-
-// In Carbon this is your one stop for apple events.
-// In Cocoa, it ISN'T. This is the catch-all Apple Event handler that exists
-// for the time between instantiating the NSApplication, but before the
-// NSApplication has installed it's OWN Apple Event handler. When Cocoa has
-// that set up, we remove this. So, if you are debugging problems, you likely
-// want to check out QCocoaApplicationDelegate instead.
-OSStatus QApplicationPrivate::globalAppleEventProcessor(const AppleEvent *ae, AppleEvent *, long handlerRefcon)
-{
- QApplication *app = (QApplication *)handlerRefcon;
- bool handled_event=false;
- OSType aeID=typeWildCard, aeClass=typeWildCard;
- AEGetAttributePtr(ae, keyEventClassAttr, typeType, 0, &aeClass, sizeof(aeClass), 0);
- AEGetAttributePtr(ae, keyEventIDAttr, typeType, 0, &aeID, sizeof(aeID), 0);
- if(aeClass == kCoreEventClass) {
- switch(aeID) {
- case kAEQuitApplication: {
- extern bool qt_mac_quit_menu_item_enabled; // qmenu_mac.cpp
- if (qt_mac_quit_menu_item_enabled) {
- QCloseEvent ev;
- QApplication::sendSpontaneousEvent(app, &ev);
- if(ev.isAccepted()) {
- handled_event = true;
- app->quit();
- }
- } else {
- QApplication::beep(); // Sorry, you can't quit right now.
- }
- break; }
- case kAEOpenDocuments: {
- AEDescList docs;
- if(AEGetParamDesc(ae, keyDirectObject, typeAEList, &docs) == noErr) {
- long cnt = 0;
- AECountItems(&docs, &cnt);
- UInt8 *str_buffer = NULL;
- for(int i = 0; i < cnt; i++) {
- FSRef ref;
- if(AEGetNthPtr(&docs, i+1, typeFSRef, 0, 0, &ref, sizeof(ref), 0) != noErr)
- continue;
- if(!str_buffer)
- str_buffer = (UInt8 *)malloc(1024);
- FSRefMakePath(&ref, str_buffer, 1024);
- QFileOpenEvent ev(QString::fromUtf8((const char *)str_buffer));
- QApplication::sendSpontaneousEvent(app, &ev);
- }
- if(str_buffer)
- free(str_buffer);
- }
- break; }
- default:
- break;
- }
- } else if (aeClass == kInternetEventClass) {
- switch (aeID) {
- case kAEGetURL: {
- char urlData[1024];
- Size actualSize;
- if (AEGetParamPtr(ae, keyDirectObject, typeChar, 0, urlData,
- sizeof(urlData) - 1, &actualSize) == noErr) {
- urlData[actualSize] = 0;
- QFileOpenEvent ev(QUrl(QString::fromUtf8(urlData)));
- QApplication::sendSpontaneousEvent(app, &ev);
- }
- break;
- }
- default:
- break;
- }
- }
-#ifdef DEBUG_EVENTS
- qDebug("Qt: internal: %shandled Apple event! %c%c%c%c %c%c%c%c", handled_event ? "(*)" : "",
- char(aeID >> 24), char((aeID >> 16) & 255), char((aeID >> 8) & 255),char(aeID & 255),
- char(aeClass >> 24), char((aeClass >> 16) & 255), char((aeClass >> 8) & 255),char(aeClass & 255));
-#else
- if(!handled_event) //let the event go through
- return eventNotHandledErr;
- return noErr; //we eat the event
-#endif
-}
-
-/*!
- \fn bool QApplication::macEventFilter(EventHandlerCallRef caller, EventRef event)
-
- \warning This virtual function is only used under Mac OS X, and behaves different
- depending on if Qt is based on Carbon or Cocoa.
-
- For the Carbon port, If you create an application that inherits QApplication and reimplement
- this function, you get direct access to all Carbon Events that Qt registers
- for from Mac OS X with this function being called with the \a caller and
- the \a event.
-
- For the Cocoa port, If you create an application that inherits QApplication and reimplement
- this function, you get direct access to all Cocoa Events that Qt receives
- from Mac OS X with this function being called with the \a caller being 0 and
- the \a event being an NSEvent pointer:
-
- NSEvent *e = reinterpret_cast<NSEvent *>(event);
-
- Return true if you want to stop the event from being processed.
- Return false for normal event dispatching. The default
- implementation returns false.
-*/
-bool QApplication::macEventFilter(EventHandlerCallRef, EventRef)
-{
- return false;
-}
-
-/*!
- \internal
-*/
-void QApplicationPrivate::openPopup(QWidget *popup)
-{
- if (!QApplicationPrivate::popupWidgets) // create list
- QApplicationPrivate::popupWidgets = new QWidgetList;
- QApplicationPrivate::popupWidgets->append(popup); // add to end of list
-
- // popups are not focus-handled by the window system (the first
- // popup grabbed the keyboard), so we have to do that manually: A
- // new popup gets the focus
- if (popup->focusWidget()) {
- popup->focusWidget()->setFocus(Qt::PopupFocusReason);
- } else if (QApplicationPrivate::popupWidgets->count() == 1) { // this was the first popup
- popup->setFocus(Qt::PopupFocusReason);
- }
-}
-
-/*!
- \internal
-*/
-void QApplicationPrivate::closePopup(QWidget *popup)
-{
- Q_Q(QApplication);
- if (!QApplicationPrivate::popupWidgets)
- return;
-
- QApplicationPrivate::popupWidgets->removeAll(popup);
- if (popup == qt_button_down)
- qt_button_down = 0;
- if (QApplicationPrivate::popupWidgets->isEmpty()) { // this was the last popup
- delete QApplicationPrivate::popupWidgets;
- QApplicationPrivate::popupWidgets = 0;
-
- // Special case for Tool windows: since they are activated and deactived together
- // with a normal window they never become the QApplicationPrivate::active_window.
- QWidget *appFocusWidget = QApplication::focusWidget();
- if (appFocusWidget && appFocusWidget->window()->windowType() == Qt::Tool) {
- appFocusWidget->setFocus(Qt::PopupFocusReason);
- } else if (QApplicationPrivate::active_window) {
- if (QWidget *fw = QApplicationPrivate::active_window->focusWidget()) {
- if (fw != QApplication::focusWidget()) {
- fw->setFocus(Qt::PopupFocusReason);
- } else {
- QFocusEvent e(QEvent::FocusIn, Qt::PopupFocusReason);
- q->sendEvent(fw, &e);
- }
- }
- }
- } else {
- // popups are not focus-handled by the window system (the
- // first popup grabbed the keyboard), so we have to do that
- // manually: A popup was closed, so the previous popup gets
- // the focus.
- QWidget* aw = QApplicationPrivate::popupWidgets->last();
- if (QWidget *fw = aw->focusWidget())
- fw->setFocus(Qt::PopupFocusReason);
- }
-}
-
-void QApplication::beep()
-{
- qt_mac_beep();
-}
-
-void QApplication::alert(QWidget *widget, int duration)
-{
- if (!QApplicationPrivate::checkInstance("alert"))
- return;
-
- QWidgetList windowsToMark;
- if (!widget)
- windowsToMark += topLevelWidgets();
- else
- windowsToMark.append(widget->window());
-
- bool needNotification = false;
- for (int i = 0; i < windowsToMark.size(); ++i) {
- QWidget *window = windowsToMark.at(i);
- if (!window->isActiveWindow() && window->isVisible()) {
- needNotification = true; // yeah, we may set it multiple times, but that's OK.
- if (duration != 0) {
- QTimer *timer = new QTimer(qApp);
- timer->setSingleShot(true);
- connect(timer, SIGNAL(timeout()), qApp, SLOT(_q_alertTimeOut()));
- if (QTimer *oldTimer = qApp->d_func()->alertTimerHash.value(widget)) {
- qApp->d_func()->alertTimerHash.remove(widget);
- delete oldTimer;
- }
- qApp->d_func()->alertTimerHash.insert(widget, timer);
- timer->start(duration);
- }
- }
- }
- if (needNotification)
- qt_mac_send_notification();
-}
-
-void QApplicationPrivate::_q_alertTimeOut()
-{
- if (QTimer *timer = qobject_cast<QTimer *>(q_func()->sender())) {
- QHash<QWidget *, QTimer *>::iterator it = alertTimerHash.begin();
- while (it != alertTimerHash.end()) {
- if (it.value() == timer) {
- alertTimerHash.erase(it);
- timer->deleteLater();
- break;
- }
- ++it;
- }
- if (alertTimerHash.isEmpty()) {
- qt_mac_cancel_notification();
- }
- }
-}
-
-void QApplication::setCursorFlashTime(int msecs)
-{
- QApplicationPrivate::cursor_flash_time = msecs;
-}
-
-int QApplication::cursorFlashTime()
-{
- return QApplicationPrivate::cursor_flash_time;
-}
-
-void QApplication::setDoubleClickInterval(int ms)
-{
- qt_mac_dblclick.use_qt_time_limit = true;
- QApplicationPrivate::mouse_double_click_time = ms;
-}
-
-int QApplication::doubleClickInterval()
-{
- if (!qt_mac_dblclick.use_qt_time_limit) { //get it from the system
- QSettings appleSettings(QLatin1String("apple.com"));
- /* First worked as of 10.3.3 */
- double dci = appleSettings.value(QLatin1String("com/apple/mouse/doubleClickThreshold"), 0.5).toDouble();
- return int(dci * 1000);
- }
- return QApplicationPrivate::mouse_double_click_time;
-}
-
-void QApplication::setKeyboardInputInterval(int ms)
-{
- QApplicationPrivate::keyboard_input_time = ms;
-}
-
-int QApplication::keyboardInputInterval()
-{
- // FIXME: get from the system
- return QApplicationPrivate::keyboard_input_time;
-}
-
-#ifndef QT_NO_WHEELEVENT
-void QApplication::setWheelScrollLines(int n)
-{
- QApplicationPrivate::wheel_scroll_lines = n;
-}
-
-int QApplication::wheelScrollLines()
-{
- return QApplicationPrivate::wheel_scroll_lines;
-}
-#endif
-
-void QApplication::setEffectEnabled(Qt::UIEffect effect, bool enable)
-{
- switch (effect) {
- case Qt::UI_FadeMenu:
- QApplicationPrivate::fade_menu = enable;
- break;
- case Qt::UI_AnimateMenu:
- QApplicationPrivate::animate_menu = enable;
- break;
- case Qt::UI_FadeTooltip:
- QApplicationPrivate::fade_tooltip = enable;
- break;
- case Qt::UI_AnimateTooltip:
- QApplicationPrivate::animate_tooltip = enable;
- break;
- case Qt::UI_AnimateCombo:
- QApplicationPrivate::animate_combo = enable;
- break;
- case Qt::UI_AnimateToolBox:
- QApplicationPrivate::animate_toolbox = enable;
- break;
- case Qt::UI_General:
- QApplicationPrivate::fade_tooltip = true;
- break;
- default:
- QApplicationPrivate::animate_ui = enable;
- break;
- }
-
- if (enable)
- QApplicationPrivate::animate_ui = true;
-}
-
-bool QApplication::isEffectEnabled(Qt::UIEffect effect)
-{
- if (QColormap::instance().depth() < 16 || !QApplicationPrivate::animate_ui)
- return false;
-
- switch(effect) {
- case Qt::UI_AnimateMenu:
- return QApplicationPrivate::animate_menu;
- case Qt::UI_FadeMenu:
- return QApplicationPrivate::fade_menu;
- case Qt::UI_AnimateCombo:
- return QApplicationPrivate::animate_combo;
- case Qt::UI_AnimateTooltip:
- return QApplicationPrivate::animate_tooltip;
- case Qt::UI_FadeTooltip:
- return QApplicationPrivate::fade_tooltip;
- case Qt::UI_AnimateToolBox:
- return QApplicationPrivate::animate_toolbox;
- default:
- break;
- }
- return QApplicationPrivate::animate_ui;
-}
-
-/*!
- \internal
-*/
-bool QApplicationPrivate::qt_mac_apply_settings()
-{
- QSettings settings(QSettings::UserScope, QLatin1String("Trolltech"));
- settings.beginGroup(QLatin1String("Qt"));
-
- /*
- Qt settings. This is how they are written into the datastream.
- Palette/ * - QPalette
- font - QFont
- libraryPath - QStringList
- style - QString
- doubleClickInterval - int
- cursorFlashTime - int
- wheelScrollLines - int
- colorSpec - QString
- defaultCodec - QString
- globalStrut/width - int
- globalStrut/height - int
- GUIEffects - QStringList
- Font Substitutions/ * - QStringList
- Font Substitutions/... - QStringList
- */
-
- // read library (ie. plugin) path list
- QString libpathkey =
- QString::fromLatin1("%1.%2/libraryPath")
- .arg(QT_VERSION >> 16)
- .arg((QT_VERSION & 0xff00) >> 8);
- QStringList pathlist = settings.value(libpathkey).toString().split(QLatin1Char(':'));
- if (!pathlist.isEmpty()) {
- QStringList::ConstIterator it = pathlist.begin();
- while(it != pathlist.end())
- QApplication::addLibraryPath(*it++);
- }
-
- QString defaultcodec = settings.value(QLatin1String("defaultCodec"), QVariant(QLatin1String("none"))).toString();
- if (defaultcodec != QLatin1String("none")) {
- QTextCodec *codec = QTextCodec::codecForName(defaultcodec.toLatin1().constData());
- if (codec)
- QTextCodec::setCodecForTr(codec);
- }
-
- if (qt_is_gui_used) {
- QString str;
- QStringList strlist;
- int num;
-
- // read new palette
- int i;
- QPalette pal(QApplication::palette());
- strlist = settings.value(QLatin1String("Palette/active")).toStringList();
- if (strlist.count() == QPalette::NColorRoles) {
- for (i = 0; i < QPalette::NColorRoles; i++)
- pal.setColor(QPalette::Active, (QPalette::ColorRole) i,
- QColor(strlist[i]));
- }
- strlist = settings.value(QLatin1String("Palette/inactive")).toStringList();
- if (strlist.count() == QPalette::NColorRoles) {
- for (i = 0; i < QPalette::NColorRoles; i++)
- pal.setColor(QPalette::Inactive, (QPalette::ColorRole) i,
- QColor(strlist[i]));
- }
- strlist = settings.value(QLatin1String("Palette/disabled")).toStringList();
- if (strlist.count() == QPalette::NColorRoles) {
- for (i = 0; i < QPalette::NColorRoles; i++)
- pal.setColor(QPalette::Disabled, (QPalette::ColorRole) i,
- QColor(strlist[i]));
- }
-
- if (pal != QApplication::palette())
- QApplication::setPalette(pal);
-
- // read new font
- QFont font(QApplication::font());
- str = settings.value(QLatin1String("font")).toString();
- if (!str.isEmpty()) {
- font.fromString(str);
- if (font != QApplication::font())
- QApplication::setFont(font);
- }
-
- // read new QStyle
- QString stylename = settings.value(QLatin1String("style")).toString();
- if (! stylename.isNull() && ! stylename.isEmpty()) {
- QStyle *style = QStyleFactory::create(stylename);
- if (style)
- QApplication::setStyle(style);
- else
- stylename = QLatin1String("default");
- } else {
- stylename = QLatin1String("default");
- }
-
- num = settings.value(QLatin1String("doubleClickInterval"),
- QApplication::doubleClickInterval()).toInt();
- QApplication::setDoubleClickInterval(num);
-
- num = settings.value(QLatin1String("cursorFlashTime"),
- QApplication::cursorFlashTime()).toInt();
- QApplication::setCursorFlashTime(num);
-
-#ifndef QT_NO_WHEELEVENT
- num = settings.value(QLatin1String("wheelScrollLines"),
- QApplication::wheelScrollLines()).toInt();
- QApplication::setWheelScrollLines(num);
-#endif
-
- QString colorspec = settings.value(QLatin1String("colorSpec"),
- QVariant(QLatin1String("default"))).toString();
- if (colorspec == QLatin1String("normal"))
- QApplication::setColorSpec(QApplication::NormalColor);
- else if (colorspec == QLatin1String("custom"))
- QApplication::setColorSpec(QApplication::CustomColor);
- else if (colorspec == QLatin1String("many"))
- QApplication::setColorSpec(QApplication::ManyColor);
- else if (colorspec != QLatin1String("default"))
- colorspec = QLatin1String("default");
-
- int w = settings.value(QLatin1String("globalStrut/width")).toInt();
- int h = settings.value(QLatin1String("globalStrut/height")).toInt();
- QSize strut(w, h);
- if (strut.isValid())
- QApplication::setGlobalStrut(strut);
-
- QStringList effects = settings.value(QLatin1String("GUIEffects")).toStringList();
- if (!effects.isEmpty()) {
- if (effects.contains(QLatin1String("none")))
- QApplication::setEffectEnabled(Qt::UI_General, false);
- if (effects.contains(QLatin1String("general")))
- QApplication::setEffectEnabled(Qt::UI_General, true);
- if (effects.contains(QLatin1String("animatemenu")))
- QApplication::setEffectEnabled(Qt::UI_AnimateMenu, true);
- if (effects.contains(QLatin1String("fademenu")))
- QApplication::setEffectEnabled(Qt::UI_FadeMenu, true);
- if (effects.contains(QLatin1String("animatecombo")))
- QApplication::setEffectEnabled(Qt::UI_AnimateCombo, true);
- if (effects.contains(QLatin1String("animatetooltip")))
- QApplication::setEffectEnabled(Qt::UI_AnimateTooltip, true);
- if (effects.contains(QLatin1String("fadetooltip")))
- QApplication::setEffectEnabled(Qt::UI_FadeTooltip, true);
- if (effects.contains(QLatin1String("animatetoolbox")))
- QApplication::setEffectEnabled(Qt::UI_AnimateToolBox, true);
- } else {
- QApplication::setEffectEnabled(Qt::UI_General, true);
- }
-
- settings.beginGroup(QLatin1String("Font Substitutions"));
- QStringList fontsubs = settings.childKeys();
- if (!fontsubs.isEmpty()) {
- QStringList::Iterator it = fontsubs.begin();
- for (; it != fontsubs.end(); ++it) {
- QString fam = QString::fromLatin1((*it).toLatin1().constData());
- QStringList subs = settings.value(fam).toStringList();
- QFont::insertSubstitutions(fam, subs);
- }
- }
- settings.endGroup();
- }
-
- settings.endGroup();
- return true;
-}
-
-// DRSWAT
-
-bool QApplicationPrivate::canQuit()
-{
- Q_Q(QApplication);
- [[NSApp mainMenu] cancelTracking];
-
- bool handle_quit = true;
- if (QApplicationPrivate::modalState() && [[[[QT_MANGLE_NAMESPACE(QCocoaApplicationDelegate) sharedDelegate]
- menuLoader] quitMenuItem] isEnabled]) {
- int visible = 0;
- const QWidgetList tlws = QApplication::topLevelWidgets();
- for(int i = 0; i < tlws.size(); ++i) {
- if (tlws.at(i)->isVisible())
- ++visible;
- }
- handle_quit = (visible <= 1);
- }
- if (handle_quit) {
- QCloseEvent ev;
- QApplication::sendSpontaneousEvent(q, &ev);
- if (ev.isAccepted()) {
- return true;
- }
- }
- return false;
-}
-
-void onApplicationWindowChangedActivation(QWidget *widget, bool activated)
-{
- if (!widget)
- return;
-
- if (activated) {
- if (QApplicationPrivate::app_style) {
- QEvent ev(QEvent::Style);
- qt_sendSpontaneousEvent(QApplicationPrivate::app_style, &ev);
- }
- qApp->setActiveWindow(widget);
- } else { // deactivated
- if (QApplicationPrivate::active_window == widget)
- qApp->setActiveWindow(0);
- }
-
- QMenuBar::macUpdateMenuBar();
- qt_mac_update_cursor();
-}
-
-
-void onApplicationChangedActivation( bool activated )
-{
- QApplication *app = qApp;
-
-//NSLog(@"App Changed Activation\n");
-
- if ( activated ) {
- if (QApplication::desktopSettingsAware())
- qt_mac_update_os_settings();
-
- if (qt_clipboard) { //manufacture an event so the clipboard can see if it has changed
- QEvent ev(QEvent::Clipboard);
- qt_sendSpontaneousEvent(qt_clipboard, &ev);
- }
-
- if (app) {
- QEvent ev(QEvent::ApplicationActivate);
- qt_sendSpontaneousEvent(app, &ev);
- }
-
- if (!app->activeWindow()) {
- OSWindowRef wp = [NSApp keyWindow];
- if (QWidget *tmp_w = qt_mac_find_window(wp))
- app->setActiveWindow(tmp_w);
- }
- QMenuBar::macUpdateMenuBar();
- qt_mac_update_cursor();
- } else { // de-activated
- QApplicationPrivate *priv = [[QT_MANGLE_NAMESPACE(QCocoaApplicationDelegate) sharedDelegate] qAppPrivate];
- while (priv->inPopupMode())
- app->activePopupWidget()->close();
- if (app) {
- QEvent ev(QEvent::ApplicationDeactivate);
- qt_sendSpontaneousEvent(app, &ev);
- }
- app->setActiveWindow(0);
- }
-}
-
-void QApplicationPrivate::initializeMultitouch_sys()
-{ }
-void QApplicationPrivate::cleanupMultitouch_sys()
-{ }
-
-QT_END_NAMESPACE
diff --git a/src/widgets/platforms/mac/qclipboard_mac.cpp b/src/widgets/platforms/mac/qclipboard_mac.cpp
deleted file mode 100644
index 3ec4bfb8c1..0000000000
--- a/src/widgets/platforms/mac/qclipboard_mac.cpp
+++ /dev/null
@@ -1,632 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 "qclipboard.h"
-#include "qapplication.h"
-#include "qbitmap.h"
-#include "qdatetime.h"
-#include "qdebug.h"
-#include "qapplication_p.h"
-#include <private/qt_mac_p.h>
-#include "qevent.h"
-#include "qurl.h"
-#include <stdlib.h>
-#include <string.h>
-#include "qt_cocoa_helpers_mac_p.h"
-
-QT_BEGIN_NAMESPACE
-
-QT_USE_NAMESPACE
-
-/*****************************************************************************
- QClipboard debug facilities
- *****************************************************************************/
-//#define DEBUG_PASTEBOARD
-
-#ifndef QT_NO_CLIPBOARD
-
-/*****************************************************************************
- QClipboard member functions for mac.
- *****************************************************************************/
-
-static QMacPasteboard *qt_mac_pasteboards[2] = {0, 0};
-
-static inline QMacPasteboard *qt_mac_pasteboard(QClipboard::Mode mode)
-{
- Q_ASSERT(mode == QClipboard::Clipboard || mode == QClipboard::FindBuffer);
- if (mode == QClipboard::Clipboard)
- return qt_mac_pasteboards[0];
- else
- return qt_mac_pasteboards[1];
-}
-
-static void qt_mac_cleanupPasteboard() {
- delete qt_mac_pasteboards[0];
- delete qt_mac_pasteboards[1];
- qt_mac_pasteboards[0] = 0;
- qt_mac_pasteboards[1] = 0;
-}
-
-static bool qt_mac_updateScrap(QClipboard::Mode mode)
-{
- if(!qt_mac_pasteboards[0]) {
- qt_mac_pasteboards[0] = new QMacPasteboard(kPasteboardClipboard, QMacPasteboardMime::MIME_CLIP);
- qt_mac_pasteboards[1] = new QMacPasteboard(kPasteboardFind, QMacPasteboardMime::MIME_CLIP);
- qAddPostRoutine(qt_mac_cleanupPasteboard);
- return true;
- }
- return qt_mac_pasteboard(mode)->sync();
-}
-
-void QClipboard::clear(Mode mode)
-{
- if (!supportsMode(mode))
- return;
- qt_mac_updateScrap(mode);
- qt_mac_pasteboard(mode)->clear();
- setMimeData(0, mode);
-}
-
-void QClipboard::ownerDestroyed()
-{
-}
-
-
-void QClipboard::connectNotify(const char *signal)
-{
- Q_UNUSED(signal);
-}
-
-bool QClipboard::event(QEvent *e)
-{
- if(e->type() != QEvent::Clipboard)
- return QObject::event(e);
-
- if (qt_mac_updateScrap(QClipboard::Clipboard)) {
- emitChanged(QClipboard::Clipboard);
- }
-
- if (qt_mac_updateScrap(QClipboard::FindBuffer)) {
- emitChanged(QClipboard::FindBuffer);
- }
-
- return QObject::event(e);
-}
-
-const QMimeData *QClipboard::mimeData(Mode mode) const
-{
- if (!supportsMode(mode))
- return 0;
- qt_mac_updateScrap(mode);
- return qt_mac_pasteboard(mode)->mimeData();
-}
-
-void QClipboard::setMimeData(QMimeData *src, Mode mode)
-{
- if (!supportsMode(mode))
- return;
- qt_mac_updateScrap(mode);
- qt_mac_pasteboard(mode)->setMimeData(src);
- emitChanged(mode);
-}
-
-bool QClipboard::supportsMode(Mode mode) const
-{
- return (mode == Clipboard || mode == FindBuffer);
-}
-
-bool QClipboard::ownsMode(Mode mode) const
-{
- Q_UNUSED(mode);
- return false;
-}
-
-#endif // QT_NO_CLIPBOARD
-
-/*****************************************************************************
- QMacPasteboard code
-*****************************************************************************/
-
-QMacPasteboard::QMacPasteboard(PasteboardRef p, uchar mt)
-{
- mac_mime_source = false;
- mime_type = mt ? mt : uchar(QMacPasteboardMime::MIME_ALL);
- paste = p;
- CFRetain(paste);
-}
-
-QMacPasteboard::QMacPasteboard(uchar mt)
-{
- mac_mime_source = false;
- mime_type = mt ? mt : uchar(QMacPasteboardMime::MIME_ALL);
- paste = 0;
- OSStatus err = PasteboardCreate(0, &paste);
- if(err == noErr) {
- PasteboardSetPromiseKeeper(paste, promiseKeeper, this);
- } else {
- qDebug("PasteBoard: Error creating pasteboard: [%d]", (int)err);
- }
-}
-
-QMacPasteboard::QMacPasteboard(CFStringRef name, uchar mt)
-{
- mac_mime_source = false;
- mime_type = mt ? mt : uchar(QMacPasteboardMime::MIME_ALL);
- paste = 0;
- OSStatus err = PasteboardCreate(name, &paste);
- if(err == noErr) {
- PasteboardSetPromiseKeeper(paste, promiseKeeper, this);
- } else {
- qDebug("PasteBoard: Error creating pasteboard: %s [%d]", QCFString::toQString(name).toLatin1().constData(), (int)err);
- }
-}
-
-QMacPasteboard::~QMacPasteboard()
-{
- // commit all promises for paste after exit close
- for (int i = 0; i < promises.count(); ++i) {
- const Promise &promise = promises.at(i);
- QCFString flavor = QCFString(promise.convertor->flavorFor(promise.mime));
- promiseKeeper(paste, (PasteboardItemID)promise.itemId, flavor, this);
- }
-
- if(paste)
- CFRelease(paste);
-}
-
-PasteboardRef
-QMacPasteboard::pasteBoard() const
-{
- return paste;
-}
-
-OSStatus QMacPasteboard::promiseKeeper(PasteboardRef paste, PasteboardItemID id, CFStringRef flavor, void *_qpaste)
-{
- QMacPasteboard *qpaste = (QMacPasteboard*)_qpaste;
- const long promise_id = (long)id;
-
- // Find the kept promise
- const QString flavorAsQString = QCFString::toQString(flavor);
- QMacPasteboard::Promise promise;
- for (int i = 0; i < qpaste->promises.size(); i++){
- QMacPasteboard::Promise tmp = qpaste->promises[i];
- if (tmp.itemId == promise_id && tmp.convertor->canConvert(tmp.mime, flavorAsQString)){
- promise = tmp;
- break;
- }
- }
-
- if (!promise.itemId && flavorAsQString == QLatin1String("com.trolltech.qt.MimeTypeName")) {
- // we have promised this data, but wont be able to convert, so return null data.
- // This helps in making the application/x-qt-mime-type-name hidden from normal use.
- QByteArray ba;
- QCFType<CFDataRef> data = CFDataCreate(0, (UInt8*)ba.constData(), ba.size());
- PasteboardPutItemFlavor(paste, id, flavor, data, kPasteboardFlavorNoFlags);
- return noErr;
- }
-
- if (!promise.itemId) {
- // There was no promise that could deliver data for the
- // given id and flavor. This should not happend.
- qDebug("Pasteboard: %d: Request for %ld, %s, but no promise found!", __LINE__, promise_id, qPrintable(flavorAsQString));
- return cantGetFlavorErr;
- }
-
-#ifdef DEBUG_PASTEBOARD
- qDebug("PasteBoard: Calling in promise for %s[%ld] [%s] (%s) [%d]", qPrintable(promise.mime), promise_id,
- qPrintable(flavorAsQString), qPrintable(promise.convertor->convertorName()), promise.offset);
-#endif
-
- QList<QByteArray> md = promise.convertor->convertFromMime(promise.mime, promise.data, flavorAsQString);
- if (md.size() <= promise.offset)
- return cantGetFlavorErr;
- const QByteArray &ba = md[promise.offset];
- QCFType<CFDataRef> data = CFDataCreate(0, (UInt8*)ba.constData(), ba.size());
- PasteboardPutItemFlavor(paste, id, flavor, data, kPasteboardFlavorNoFlags);
- return noErr;
-}
-
-bool
-QMacPasteboard::hasOSType(int c_flavor) const
-{
- if (!paste)
- return false;
-
- sync();
-
- ItemCount cnt = 0;
- if(PasteboardGetItemCount(paste, &cnt) || !cnt)
- return false;
-
-#ifdef DEBUG_PASTEBOARD
- qDebug("PasteBoard: hasOSType [%c%c%c%c]", (c_flavor>>24)&0xFF, (c_flavor>>16)&0xFF,
- (c_flavor>>8)&0xFF, (c_flavor>>0)&0xFF);
-#endif
- for(uint index = 1; index <= cnt; ++index) {
-
- PasteboardItemID id;
- if(PasteboardGetItemIdentifier(paste, index, &id) != noErr)
- return false;
-
- QCFType<CFArrayRef> types;
- if(PasteboardCopyItemFlavors(paste, id, &types ) != noErr)
- return false;
-
- const int type_count = CFArrayGetCount(types);
- for(int i = 0; i < type_count; ++i) {
- CFStringRef flavor = (CFStringRef)CFArrayGetValueAtIndex(types, i);
- const int os_flavor = UTGetOSTypeFromString(UTTypeCopyPreferredTagWithClass(flavor, kUTTagClassOSType));
- if(os_flavor == c_flavor) {
-#ifdef DEBUG_PASTEBOARD
- qDebug(" - Found!");
-#endif
- return true;
- }
- }
- }
-#ifdef DEBUG_PASTEBOARD
- qDebug(" - NotFound!");
-#endif
- return false;
-}
-
-bool
-QMacPasteboard::hasFlavor(QString c_flavor) const
-{
- if (!paste)
- return false;
-
- sync();
-
- ItemCount cnt = 0;
- if(PasteboardGetItemCount(paste, &cnt) || !cnt)
- return false;
-
-#ifdef DEBUG_PASTEBOARD
- qDebug("PasteBoard: hasFlavor [%s]", qPrintable(c_flavor));
-#endif
- for(uint index = 1; index <= cnt; ++index) {
-
- PasteboardItemID id;
- if(PasteboardGetItemIdentifier(paste, index, &id) != noErr)
- return false;
-
- PasteboardFlavorFlags flags;
- if(PasteboardGetItemFlavorFlags(paste, id, QCFString(c_flavor), &flags) == noErr) {
-#ifdef DEBUG_PASTEBOARD
- qDebug(" - Found!");
-#endif
- return true;
- }
- }
-#ifdef DEBUG_PASTEBOARD
- qDebug(" - NotFound!");
-#endif
- return false;
-}
-
-class QMacPasteboardMimeSource : public QMimeData {
- const QMacPasteboard *paste;
-public:
- QMacPasteboardMimeSource(const QMacPasteboard *p) : QMimeData(), paste(p) { }
- ~QMacPasteboardMimeSource() { }
- virtual QStringList formats() const { return paste->formats(); }
- virtual QVariant retrieveData(const QString &format, QVariant::Type type) const { return paste->retrieveData(format, type); }
-};
-
-QMimeData
-*QMacPasteboard::mimeData() const
-{
- if(!mime) {
- mac_mime_source = true;
- mime = new QMacPasteboardMimeSource(this);
-
- }
- return mime;
-}
-
-class QMacMimeData : public QMimeData
-{
-public:
- QVariant variantData(const QString &mime) { return retrieveData(mime, QVariant::Invalid); }
-private:
- QMacMimeData();
-};
-
-void
-QMacPasteboard::setMimeData(QMimeData *mime_src)
-{
- if (!paste)
- return;
-
- if (mime == mime_src || (!mime_src && mime && mac_mime_source))
- return;
- mac_mime_source = false;
- delete mime;
- mime = mime_src;
-
- QList<QMacPasteboardMime*> availableConverters = QMacPasteboardMime::all(mime_type);
- if (mime != 0) {
- clear_helper();
- QStringList formats = mime_src->formats();
-
- // QMimeData sub classes reimplementing the formats() might not expose the
- // temporary "application/x-qt-mime-type-name" mimetype. So check the existence
- // of this mime type while doing drag and drop.
- QString dummyMimeType(QLatin1String("application/x-qt-mime-type-name"));
- if (!formats.contains(dummyMimeType)) {
- QByteArray dummyType = mime_src->data(dummyMimeType);
- if (!dummyType.isEmpty()) {
- formats.append(dummyMimeType);
- }
- }
- for(int f = 0; f < formats.size(); ++f) {
- QString mimeType = formats.at(f);
- for (QList<QMacPasteboardMime *>::Iterator it = availableConverters.begin(); it != availableConverters.end(); ++it) {
- QMacPasteboardMime *c = (*it);
- QString flavor(c->flavorFor(mimeType));
- if(!flavor.isEmpty()) {
- QVariant mimeData = static_cast<QMacMimeData*>(mime_src)->variantData(mimeType);
-#if 0
- //### Grrr, why didn't I put in a virtual int QMacPasteboardMime::count()? --Sam
- const int numItems = c->convertFromMime(mimeType, mimeData, flavor).size();
-#else
- int numItems = 1; //this is a hack but it is much faster than allowing conversion above
- if(c->convertorName() == QLatin1String("FileURL"))
- numItems = mime_src->urls().count();
-#endif
- for(int item = 0; item < numItems; ++item) {
- const int itemID = item+1; //id starts at 1
- promises.append(QMacPasteboard::Promise(itemID, c, mimeType, mimeData, item));
- PasteboardPutItemFlavor(paste, (PasteboardItemID)itemID, QCFString(flavor), 0, kPasteboardFlavorNoFlags);
-#ifdef DEBUG_PASTEBOARD
- qDebug(" - adding %d %s [%s] <%s> [%d]",
- itemID, qPrintable(mimeType), qPrintable(flavor), qPrintable(c->convertorName()), item);
-#endif
- }
- }
- }
- }
- }
-}
-
-QStringList
-QMacPasteboard::formats() const
-{
- if (!paste)
- return QStringList();
-
- sync();
-
- QStringList ret;
- ItemCount cnt = 0;
- if(PasteboardGetItemCount(paste, &cnt) || !cnt)
- return ret;
-
-#ifdef DEBUG_PASTEBOARD
- qDebug("PasteBoard: Formats [%d]", (int)cnt);
-#endif
- for(uint index = 1; index <= cnt; ++index) {
-
- PasteboardItemID id;
- if(PasteboardGetItemIdentifier(paste, index, &id) != noErr)
- continue;
-
- QCFType<CFArrayRef> types;
- if(PasteboardCopyItemFlavors(paste, id, &types ) != noErr)
- continue;
-
- const int type_count = CFArrayGetCount(types);
- for(int i = 0; i < type_count; ++i) {
- const QString flavor = QCFString::toQString((CFStringRef)CFArrayGetValueAtIndex(types, i));
-#ifdef DEBUG_PASTEBOARD
- qDebug(" -%s", qPrintable(QString(flavor)));
-#endif
- QString mimeType = QMacPasteboardMime::flavorToMime(mime_type, flavor);
- if(!mimeType.isEmpty() && !ret.contains(mimeType)) {
-#ifdef DEBUG_PASTEBOARD
- qDebug(" -<%d> %s [%s]", ret.size(), qPrintable(mimeType), qPrintable(QString(flavor)));
-#endif
- ret << mimeType;
- }
- }
- }
- return ret;
-}
-
-bool
-QMacPasteboard::hasFormat(const QString &format) const
-{
- if (!paste)
- return false;
-
- sync();
-
- ItemCount cnt = 0;
- if(PasteboardGetItemCount(paste, &cnt) || !cnt)
- return false;
-
-#ifdef DEBUG_PASTEBOARD
- qDebug("PasteBoard: hasFormat [%s]", qPrintable(format));
-#endif
- for(uint index = 1; index <= cnt; ++index) {
-
- PasteboardItemID id;
- if(PasteboardGetItemIdentifier(paste, index, &id) != noErr)
- continue;
-
- QCFType<CFArrayRef> types;
- if(PasteboardCopyItemFlavors(paste, id, &types ) != noErr)
- continue;
-
- const int type_count = CFArrayGetCount(types);
- for(int i = 0; i < type_count; ++i) {
- const QString flavor = QCFString::toQString((CFStringRef)CFArrayGetValueAtIndex(types, i));
-#ifdef DEBUG_PASTEBOARD
- qDebug(" -%s [0x%x]", qPrintable(QString(flavor)), mime_type);
-#endif
- QString mimeType = QMacPasteboardMime::flavorToMime(mime_type, flavor);
-#ifdef DEBUG_PASTEBOARD
- if(!mimeType.isEmpty())
- qDebug(" - %s", qPrintable(mimeType));
-#endif
- if(mimeType == format)
- return true;
- }
- }
- return false;
-}
-
-QVariant
-QMacPasteboard::retrieveData(const QString &format, QVariant::Type) const
-{
- if (!paste)
- return QVariant();
-
- sync();
-
- ItemCount cnt = 0;
- if(PasteboardGetItemCount(paste, &cnt) || !cnt)
- return QByteArray();
-
-#ifdef DEBUG_PASTEBOARD
- qDebug("Pasteboard: retrieveData [%s]", qPrintable(format));
-#endif
- const QList<QMacPasteboardMime *> mimes = QMacPasteboardMime::all(mime_type);
- for(int mime = 0; mime < mimes.size(); ++mime) {
- QMacPasteboardMime *c = mimes.at(mime);
- QString c_flavor = c->flavorFor(format);
- if(!c_flavor.isEmpty()) {
- // Handle text/plain a little differently. Try handling Unicode first.
- bool checkForUtf16 = (c_flavor == QLatin1String("com.apple.traditional-mac-plain-text")
- || c_flavor == QLatin1String("public.utf8-plain-text"));
- if (checkForUtf16 || c_flavor == QLatin1String("public.utf16-plain-text")) {
- // Try to get the NSStringPboardType from NSPasteboard, newlines are mapped
- // correctly (as '\n') in this data. The 'public.utf16-plain-text' type
- // usually maps newlines to '\r' instead.
- QString str = qt_mac_get_pasteboardString(paste);
- if (!str.isEmpty())
- return str;
- }
- if (checkForUtf16 && hasFlavor(QLatin1String("public.utf16-plain-text")))
- c_flavor = QLatin1String("public.utf16-plain-text");
-
- QVariant ret;
- QList<QByteArray> retList;
- for(uint index = 1; index <= cnt; ++index) {
- PasteboardItemID id;
- if(PasteboardGetItemIdentifier(paste, index, &id) != noErr)
- continue;
-
- QCFType<CFArrayRef> types;
- if(PasteboardCopyItemFlavors(paste, id, &types ) != noErr)
- continue;
-
- const int type_count = CFArrayGetCount(types);
- for(int i = 0; i < type_count; ++i) {
- CFStringRef flavor = static_cast<CFStringRef>(CFArrayGetValueAtIndex(types, i));
- if(c_flavor == QCFString::toQString(flavor)) {
- QCFType<CFDataRef> macBuffer;
- if(PasteboardCopyItemFlavorData(paste, id, flavor, &macBuffer) == noErr) {
- QByteArray buffer((const char *)CFDataGetBytePtr(macBuffer), CFDataGetLength(macBuffer));
- if(!buffer.isEmpty()) {
-#ifdef DEBUG_PASTEBOARD
- qDebug(" - %s [%s] (%s)", qPrintable(format), qPrintable(QCFString::toQString(flavor)), qPrintable(c->convertorName()));
-#endif
- buffer.detach(); //detach since we release the macBuffer
- retList.append(buffer);
- break; //skip to next element
- }
- }
- } else {
-#ifdef DEBUG_PASTEBOARD
- qDebug(" - NoMatch %s [%s] (%s)", qPrintable(c_flavor), qPrintable(QCFString::toQString(flavor)), qPrintable(c->convertorName()));
-#endif
- }
- }
- }
-
- if (!retList.isEmpty()) {
- ret = c->convertToMime(format, retList, c_flavor);
- return ret;
- }
- }
- }
- return QVariant();
-}
-
-void QMacPasteboard::clear_helper()
-{
- if (paste)
- PasteboardClear(paste);
- promises.clear();
-}
-
-void
-QMacPasteboard::clear()
-{
-#ifdef DEBUG_PASTEBOARD
- qDebug("PasteBoard: clear!");
-#endif
- clear_helper();
-}
-
-bool
-QMacPasteboard::sync() const
-{
- if (!paste)
- return false;
- const bool fromGlobal = PasteboardSynchronize(paste) & kPasteboardModified;
-
- if (fromGlobal)
- const_cast<QMacPasteboard *>(this)->setMimeData(0);
-
-#ifdef DEBUG_PASTEBOARD
- if(fromGlobal)
- qDebug("Pasteboard: Synchronize!");
-#endif
- return fromGlobal;
-}
-
-
-
-
-QT_END_NAMESPACE
diff --git a/src/widgets/platforms/mac/qcocoaintrospection_mac.mm b/src/widgets/platforms/mac/qcocoaintrospection_mac.mm
deleted file mode 100644
index e68aacb4a0..0000000000
--- a/src/widgets/platforms/mac/qcocoaintrospection_mac.mm
+++ /dev/null
@@ -1,119 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Copyright (c) 2007-2008, Apple, Inc.
-**
-** All rights reserved.
-**
-** Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are met:
-**
-** * Redistributions of source code must retain the above copyright notice,
-** this list of conditions and the following disclaimer.
-**
-** * Redistributions in binary form must reproduce the above copyright notice,
-** this list of conditions and the following disclaimer in the documentation
-** and/or other materials provided with the distribution.
-**
-** * Neither the name of Apple, Inc. nor the names of its contributors
-** may be used to endorse or promote products derived from this software
-** without specific prior written permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-****************************************************************************/
-
-#include <private/qcocoaintrospection_p.h>
-
-QT_BEGIN_NAMESPACE
-
-void qt_cocoa_change_implementation(Class baseClass, SEL originalSel, Class proxyClass, SEL replacementSel, SEL backupSel)
-{
- {
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
- // The following code replaces the _implementation_ for the selector we want to hack
- // (originalSel) with the implementation found in proxyClass. Then it creates
- // a new 'backup' method inside baseClass containing the old, original,
- // implementation (fakeSel). You can let the proxy implementation of originalSel
- // call fakeSel if needed (similar approach to calling a super class implementation).
- // fakeSel must also be implemented in proxyClass, as the signature is used
- // as template for the method one we add into baseClass.
- // NB: You will typically never create any instances of proxyClass; we use it
- // only for stealing its contents and put it into baseClass.
- if (!replacementSel)
- replacementSel = originalSel;
-
- Method originalMethod = class_getInstanceMethod(baseClass, originalSel);
- Method replacementMethod = class_getInstanceMethod(proxyClass, replacementSel);
- IMP originalImp = method_setImplementation(originalMethod, method_getImplementation(replacementMethod));
-
- if (backupSel) {
- Method backupMethod = class_getInstanceMethod(proxyClass, backupSel);
- class_addMethod(baseClass, backupSel, originalImp, method_getTypeEncoding(backupMethod));
- }
-#endif
- }
-}
-
-void qt_cocoa_change_back_implementation(Class baseClass, SEL originalSel, SEL backupSel)
-{
- {
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5
- Method originalMethod = class_getInstanceMethod(baseClass, originalSel);
- Method backupMethodInBaseClass = class_getInstanceMethod(baseClass, backupSel);
- method_setImplementation(originalMethod, method_getImplementation(backupMethodInBaseClass));
-#endif
- }
-}
-
-QT_END_NAMESPACE
diff --git a/src/widgets/platforms/mac/qcocoaintrospection_p.h b/src/widgets/platforms/mac/qcocoaintrospection_p.h
deleted file mode 100644
index 9521957382..0000000000
--- a/src/widgets/platforms/mac/qcocoaintrospection_p.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Copyright (c) 2007-2008, Apple, Inc.
-**
-** All rights reserved.
-**
-** Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are met:
-**
-** * Redistributions of source code must retain the above copyright notice,
-** this list of conditions and the following disclaimer.
-**
-** * Redistributions in binary form must reproduce the above copyright notice,
-** this list of conditions and the following disclaimer in the documentation
-** and/or other materials provided with the distribution.
-**
-** * Neither the name of Apple, Inc. nor the names of its contributors
-** may be used to endorse or promote products derived from this software
-** without specific prior written permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-****************************************************************************/
-
-#include <qglobal.h>
-#import <objc/objc-class.h>
-
-QT_BEGIN_NAMESPACE
-
-void qt_cocoa_change_implementation(Class baseClass, SEL originalSel, Class proxyClass, SEL replacementSel = 0, SEL backupSel = 0);
-void qt_cocoa_change_back_implementation(Class baseClass, SEL originalSel, SEL backupSel);
-
-QT_END_NAMESPACE
diff --git a/src/widgets/platforms/mac/qcocoapanel_mac.mm b/src/widgets/platforms/mac/qcocoapanel_mac.mm
deleted file mode 100644
index 115f78b153..0000000000
--- a/src/widgets/platforms/mac/qcocoapanel_mac.mm
+++ /dev/null
@@ -1,68 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-#import <private/qcocoapanel_mac_p.h>
-#import <private/qt_cocoa_helpers_mac_p.h>
-#import <private/qcocoawindow_mac_p.h>
-#import <private/qcocoawindowdelegate_mac_p.h>
-#import <private/qcocoaview_mac_p.h>
-#import <private/qcocoawindowcustomthemeframe_mac_p.h>
-#import <private/qcocoaapplication_mac_p.h>
-#import <private/qmultitouch_mac_p.h>
-#import <private/qapplication_p.h>
-#import <private/qbackingstore_p.h>
-#import <private/qdnd_p.h>
-
-#include <QtGui/QWidget>
-
-QT_FORWARD_DECLARE_CLASS(QWidget);
-QT_USE_NAMESPACE
-
-@implementation QT_MANGLE_NAMESPACE(QCocoaPanel)
-
-/***********************************************************************
- Copy and Paste between QCocoaWindow and QCocoaPanel
- This is a bit unfortunate, but thanks to the dynamic dispatch we
- have to duplicate this code or resort to really silly forwarding methods
-**************************************************************************/
-#include "qcocoasharedwindowmethods_mac_p.h"
-
-@end
diff --git a/src/widgets/platforms/mac/qcocoapanel_mac_p.h b/src/widgets/platforms/mac/qcocoapanel_mac_p.h
deleted file mode 100644
index 19eab92dbf..0000000000
--- a/src/widgets/platforms/mac/qcocoapanel_mac_p.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#ifndef QCOCOAPANEL_MAC_P
-#define QCOCOAPANEL_MAC_P
-
-#include "qmacdefines_mac.h"
-#import <Cocoa/Cocoa.h>
-
-QT_FORWARD_DECLARE_CLASS(QStringList);
-QT_FORWARD_DECLARE_CLASS(QCocoaDropData);
-
-@interface NSPanel (QtIntegration)
-- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender;
-- (NSDragOperation)draggingUpdated:(id <NSDraggingInfo>)sender;
-- (void)draggingExited:(id <NSDraggingInfo>)sender;
-- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender;
-@end
-
-@interface QT_MANGLE_NAMESPACE(QCocoaPanel) : NSPanel {
- QStringList *currentCustomDragTypes;
- QCocoaDropData *dropData;
- NSInteger dragEnterSequence;
-}
-
-+ (Class)frameViewClassForStyleMask:(NSUInteger)styleMask;
-- (void)registerDragTypes;
-- (void)drawRectOriginal:(NSRect)rect;
-
-@end
-
-#endif
diff --git a/src/widgets/platforms/mac/qcocoasharedwindowmethods_mac_p.h b/src/widgets/platforms/mac/qcocoasharedwindowmethods_mac_p.h
deleted file mode 100644
index edafcfccdf..0000000000
--- a/src/widgets/platforms/mac/qcocoasharedwindowmethods_mac_p.h
+++ /dev/null
@@ -1,610 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-/****************************************************************************
- NB: This is not a header file, dispite the file name suffix. This file is
- included directly into the source code of qcocoawindow_mac.mm and
- qcocoapanel_mac.mm to avoid manually doing copy and paste of the exact
- same code needed at both places. This solution makes it more difficult
- to e.g fix a bug in qcocoawindow_mac.mm, but forget to do the same in
- qcocoapanel_mac.mm.
- The reason we need to do copy and paste in the first place, rather than
- resolve to method overriding, is that QCocoaPanel needs to inherit from
- NSPanel, while QCocoaWindow needs to inherit NSWindow rather than NSPanel).
-****************************************************************************/
-
-// WARNING: Don't include any header files from within this file. Put them
-// directly into qcocoawindow_mac_p.h and qcocoapanel_mac_p.h
-
-QT_BEGIN_NAMESPACE
-extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum); // qcocoaview.mm
-extern QPointer<QWidget> qt_button_down; //qapplication_mac.cpp
-extern const QStringList& qEnabledDraggedTypes(); // qmime_mac.cpp
-extern void qt_event_request_window_change(QWidget *); // qapplication_mac.mm
-extern void qt_mac_send_posted_gl_updates(QWidget *widget); // qapplication_mac.mm
-
-Q_GLOBAL_STATIC(QPointer<QWidget>, currentDragTarget);
-QT_END_NAMESPACE
-
-- (id)initWithContentRect:(NSRect)contentRect
- styleMask:(NSUInteger)windowStyle
- backing:(NSBackingStoreType)bufferingType
- defer:(BOOL)deferCreation
-{
- self = [super initWithContentRect:contentRect styleMask:windowStyle
- backing:bufferingType defer:deferCreation];
- if (self) {
- currentCustomDragTypes = 0;
- }
- return self;
-}
-
-- (void)dealloc
-{
- delete currentCustomDragTypes;
- [super dealloc];
-}
-
-- (BOOL)canBecomeKeyWindow
-{
- QWidget *widget = [self QT_MANGLE_NAMESPACE(qt_qwidget)];
- if (!widget)
- return NO; // This should happen only for qt_root_win
- if (QApplicationPrivate::isBlockedByModal(widget))
- return NO;
-
- bool isToolTip = (widget->windowType() == Qt::ToolTip);
- bool isPopup = (widget->windowType() == Qt::Popup);
- return !(isPopup || isToolTip);
-}
-
-- (BOOL)canBecomeMainWindow
-{
- QWidget *widget = [self QT_MANGLE_NAMESPACE(qt_qwidget)];
- if (!widget)
- return NO; // This should happen only for qt_root_win
- if ([self isSheet])
- return NO;
-
- bool isToolTip = (widget->windowType() == Qt::ToolTip);
- bool isPopup = (widget->windowType() == Qt::Popup);
- bool isTool = (widget->windowType() == Qt::Tool);
- return !(isPopup || isToolTip || isTool);
-}
-
-- (void)becomeMainWindow
-{
- [super becomeMainWindow];
- // Cocoa sometimes tell a hidden window to become the
- // main window (and as such, show it). This can e.g
- // happend when the application gets activated. If
- // this is the case, we tell it to hide again:
- if (![self isVisible])
- [self orderOut:self];
-}
-
-- (void)toggleToolbarShown:(id)sender
-{
- macSendToolbarChangeEvent([self QT_MANGLE_NAMESPACE(qt_qwidget)]);
- [super toggleToolbarShown:sender];
-}
-
-- (void)flagsChanged:(NSEvent *)theEvent
-{
- qt_dispatchModifiersChanged(theEvent, [self QT_MANGLE_NAMESPACE(qt_qwidget)]);
- [super flagsChanged:theEvent];
-}
-
-
-- (void)tabletProximity:(NSEvent *)tabletEvent
-{
- qt_dispatchTabletProximityEvent(tabletEvent);
-}
-
-- (void)terminate:(id)sender
-{
- // This function is called from the quit item in the menubar when this window
- // is in the first responder chain (see also qtDispatcherToQAction above)
- [NSApp terminate:sender];
-}
-
-- (void)setLevel:(NSInteger)windowLevel
-{
- // Cocoa will upon activating/deactivating applications level modal
- // windows up and down, regardsless of any explicit set window level.
- // To ensure that modal stays-on-top dialogs actually stays on top after
- // the application is activated (and therefore stacks in front of
- // other stays-on-top windows), we need to add this little special-case override:
- QWidget *widget = [[QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate] qt_qwidgetForWindow:self];
- if (widget && widget->isModal() && (widget->windowFlags() & Qt::WindowStaysOnTopHint))
- [super setLevel:NSPopUpMenuWindowLevel];
- else
- [super setLevel:windowLevel];
-}
-
-- (void)sendEvent:(NSEvent *)event
-{
- [self retain];
-
- bool handled = false;
- switch([event type]) {
- case NSMouseMoved:
- // Cocoa sends move events to a parent and all its children under the mouse, much
- // like Qt handles hover events. But we only want to handle the move event once, so
- // to optimize a bit (since we subscribe for move event for all views), we handle it
- // here before this logic happends. Note: it might be tempting to do this shortcut for
- // all mouse events. The problem is that Cocoa does more than just find the correct view
- // when sending the event, like raising windows etc. So avoid it as much as possible:
- handled = qt_mac_handleMouseEvent(event, QEvent::MouseMove, Qt::NoButton, 0);
- break;
- default:
- break;
- }
-
- if (!handled) {
- [super sendEvent:event];
- qt_mac_handleNonClientAreaMouseEvent(self, event);
- }
- [self release];
-}
-
-- (void)setInitialFirstResponder:(NSView *)view
-{
- // This method is called the first time the window is placed on screen and
- // is the earliest point in time we can connect OpenGL contexts to NSViews.
- QWidget *qwidget = [[QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate] qt_qwidgetForWindow:self];
- if (qwidget) {
- qt_event_request_window_change(qwidget);
- qt_mac_send_posted_gl_updates(qwidget);
- }
-
- [super setInitialFirstResponder:view];
-}
-
-- (BOOL)makeFirstResponder:(NSResponder *)responder
-{
- // For some reason Cocoa wants to flip the first responder
- // when Qt doesn't want to, sorry, but "No" :-)
- if (responder == nil && qApp->focusWidget())
- return NO;
- return [super makeFirstResponder:responder];
-}
-
-+ (Class)frameViewClassForStyleMask:(NSUInteger)styleMask
-{
- if (styleMask & QtMacCustomizeWindow)
- return [QT_MANGLE_NAMESPACE(QCocoaWindowCustomThemeFrame) class];
- return [super frameViewClassForStyleMask:styleMask];
-}
-
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
-- (void)touchesBeganWithEvent:(NSEvent *)event;
-{
- QPoint qlocal, qglobal;
- QWidget *widgetToGetTouch = 0;
- qt_mac_getTargetForMouseEvent(event, QEvent::Gesture, qlocal, qglobal, 0, &widgetToGetTouch);
- if (!widgetToGetTouch)
- return;
-
- bool all = widgetToGetTouch->testAttribute(Qt::WA_TouchPadAcceptSingleTouchEvents);
- qt_translateRawTouchEvent(widgetToGetTouch, QTouchEvent::TouchPad, QCocoaTouch::getCurrentTouchPointList(event, all));
-}
-
-- (void)touchesMovedWithEvent:(NSEvent *)event;
-{
- QPoint qlocal, qglobal;
- QWidget *widgetToGetTouch = 0;
- qt_mac_getTargetForMouseEvent(event, QEvent::Gesture, qlocal, qglobal, 0, &widgetToGetTouch);
- if (!widgetToGetTouch)
- return;
-
- bool all = widgetToGetTouch->testAttribute(Qt::WA_TouchPadAcceptSingleTouchEvents);
- qt_translateRawTouchEvent(widgetToGetTouch, QTouchEvent::TouchPad, QCocoaTouch::getCurrentTouchPointList(event, all));
-}
-
-- (void)touchesEndedWithEvent:(NSEvent *)event;
-{
- QPoint qlocal, qglobal;
- QWidget *widgetToGetTouch = 0;
- qt_mac_getTargetForMouseEvent(event, QEvent::Gesture, qlocal, qglobal, 0, &widgetToGetTouch);
- if (!widgetToGetTouch)
- return;
-
- bool all = widgetToGetTouch->testAttribute(Qt::WA_TouchPadAcceptSingleTouchEvents);
- qt_translateRawTouchEvent(widgetToGetTouch, QTouchEvent::TouchPad, QCocoaTouch::getCurrentTouchPointList(event, all));
-}
-
-- (void)touchesCancelledWithEvent:(NSEvent *)event;
-{
- QPoint qlocal, qglobal;
- QWidget *widgetToGetTouch = 0;
- qt_mac_getTargetForMouseEvent(event, QEvent::Gesture, qlocal, qglobal, 0, &widgetToGetTouch);
- if (!widgetToGetTouch)
- return;
-
- bool all = widgetToGetTouch->testAttribute(Qt::WA_TouchPadAcceptSingleTouchEvents);
- qt_translateRawTouchEvent(widgetToGetTouch, QTouchEvent::TouchPad, QCocoaTouch::getCurrentTouchPointList(event, all));
-}
-#endif // MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
-
--(void)registerDragTypes
-{
- // Calling registerForDraggedTypes below is slow, so only do
- // it once for each window, or when the custom types change.
- QMacCocoaAutoReleasePool pool;
- const QStringList& customTypes = qEnabledDraggedTypes();
- if (currentCustomDragTypes == 0 || *currentCustomDragTypes != customTypes) {
- if (currentCustomDragTypes == 0)
- currentCustomDragTypes = new QStringList();
- *currentCustomDragTypes = customTypes;
- const NSString* mimeTypeGeneric = @"com.trolltech.qt.MimeTypeName";
- NSMutableArray *supportedTypes = [NSMutableArray arrayWithObjects:NSColorPboardType,
- NSFilenamesPboardType, NSStringPboardType,
- NSFilenamesPboardType, NSPostScriptPboardType, NSTIFFPboardType,
- NSRTFPboardType, NSTabularTextPboardType, NSFontPboardType,
- NSRulerPboardType, NSFileContentsPboardType, NSColorPboardType,
- NSRTFDPboardType, NSHTMLPboardType, NSPICTPboardType,
- NSURLPboardType, NSPDFPboardType, NSVCardPboardType,
- NSFilesPromisePboardType, NSInkTextPboardType,
- NSMultipleTextSelectionPboardType, mimeTypeGeneric, nil];
- // Add custom types supported by the application.
- for (int i = 0; i < customTypes.size(); i++) {
- [supportedTypes addObject:qt_mac_QStringToNSString(customTypes[i])];
- }
- [self registerForDraggedTypes:supportedTypes];
- }
-}
-
-- (void)removeDropData
-{
- if (dropData) {
- delete dropData;
- dropData = 0;
- }
-}
-
-- (void)addDropData:(id <NSDraggingInfo>)sender
-{
- [self removeDropData];
- CFStringRef dropPasteboard = (CFStringRef) [[sender draggingPasteboard] name];
- dropData = new QCocoaDropData(dropPasteboard);
-}
-
-- (void)changeDraggingCursor:(NSDragOperation)newOperation
-{
- static SEL action = nil;
- static bool operationSupported = false;
- if (action == nil) {
- action = NSSelectorFromString(@"operationNotAllowedCursor");
- if ([NSCursor respondsToSelector:action]) {
- operationSupported = true;
- }
- }
- if (operationSupported) {
- NSCursor *notAllowedCursor = [NSCursor performSelector:action];
- bool isNotAllowedCursor = ([NSCursor currentCursor] == notAllowedCursor);
- if (newOperation == NSDragOperationNone && !isNotAllowedCursor) {
- [notAllowedCursor push];
- } else if (newOperation != NSDragOperationNone && isNotAllowedCursor) {
- [notAllowedCursor pop];
- }
-
- }
-}
-
-- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
-{
- // The user dragged something into the window. Send a draggingEntered message
- // to the QWidget under the mouse. As the drag moves over the window, and over
- // different widgets, we will handle enter and leave events from within
- // draggingUpdated below. The reason why we handle this ourselves rather than
- // subscribing for drag events directly in QCocoaView is that calling
- // registerForDraggedTypes on the views will severly degrade initialization time
- // for an application that uses a lot of drag subscribing widgets.
-
- NSPoint nswindowPoint = [sender draggingLocation];
- NSPoint nsglobalPoint = [[sender draggingDestinationWindow] convertBaseToScreen:nswindowPoint];
- QPoint globalPoint = flipPoint(nsglobalPoint).toPoint();
-
- QWidget *qwidget = QApplication::widgetAt(globalPoint);
- *currentDragTarget() = qwidget;
- if (!qwidget)
- return [super draggingEntered:sender];
- if (qwidget->testAttribute(Qt::WA_DropSiteRegistered) == false)
- return NSDragOperationNone;
-
- [self addDropData:sender];
-
- QMimeData *mimeData = dropData;
- if (QDragManager::self()->source())
- mimeData = QDragManager::self()->dragPrivate()->data;
-
- NSDragOperation nsActions = [sender draggingSourceOperationMask];
- Qt::DropActions qtAllowed = qt_mac_mapNSDragOperations(nsActions);
- QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec.lastOperation) = nsActions;
- Qt::KeyboardModifiers modifiers = Qt::NoModifier;
-
- if ([sender draggingSource] != nil) {
- // modifier flags might have changed, update it here since we don't send any input events.
- QApplicationPrivate::modifier_buttons = qt_cocoaModifiers2QtModifiers([[NSApp currentEvent] modifierFlags]);
- modifiers = QApplication::keyboardModifiers();
- } else {
- // when the source is from another application the above technique will not work.
- modifiers = qt_cocoaDragOperation2QtModifiers(nsActions);
- }
-
- // send the drag enter event to the widget.
- QPoint localPoint(qwidget->mapFromGlobal(globalPoint));
- QDragEnterEvent qDEEvent(localPoint, qtAllowed, mimeData, QApplication::mouseButtons(), modifiers);
- QApplication::sendEvent(qwidget, &qDEEvent);
-
- if (!qDEEvent.isAccepted()) {
- // The enter event was not accepted. We mark this by removing
- // the drop data so we don't send subsequent drag move events:
- [self removeDropData];
- [self changeDraggingCursor:NSDragOperationNone];
- return NSDragOperationNone;
- } else {
- // Send a drag move event immediately after a drag enter event (as per documentation).
- QDragMoveEvent qDMEvent(localPoint, qtAllowed, mimeData, QApplication::mouseButtons(), modifiers);
- qDMEvent.setDropAction(qDEEvent.dropAction());
- qDMEvent.accept(); // accept by default, since enter event was accepted.
- QApplication::sendEvent(qwidget, &qDMEvent);
-
- if (!qDMEvent.isAccepted() || qDMEvent.dropAction() == Qt::IgnoreAction) {
- // Since we accepted the drag enter event, the widget expects
- // future drage move events.
- nsActions = NSDragOperationNone;
- // Save as ignored in the answer rect.
- qDMEvent.setDropAction(Qt::IgnoreAction);
- } else {
- nsActions = QT_PREPEND_NAMESPACE(qt_mac_mapDropAction)(qDMEvent.dropAction());
- }
-
- QT_PREPEND_NAMESPACE(qt_mac_copy_answer_rect)(qDMEvent);
- [self changeDraggingCursor:nsActions];
- return nsActions;
- }
- }
-
-- (NSDragOperation)draggingUpdated:(id <NSDraggingInfo>)sender
-{
- NSPoint nswindowPoint = [sender draggingLocation];
- NSPoint nsglobalPoint = [[sender draggingDestinationWindow] convertBaseToScreen:nswindowPoint];
- QPoint globalPoint = flipPoint(nsglobalPoint).toPoint();
-
- QWidget *qwidget = QApplication::widgetAt(globalPoint);
- if (!qwidget)
- return [super draggingEntered:sender];
-
- // First, check if the widget under the mouse has changed since the
- // last drag move events. If so, we need to change target, and dispatch
- // syntetic drag enter/leave events:
- if (qwidget != *currentDragTarget()) {
- if (*currentDragTarget() && dropData) {
- QDragLeaveEvent de;
- QApplication::sendEvent(*currentDragTarget(), &de);
- [self removeDropData];
- }
- return [self draggingEntered:sender];
- }
-
- if (qwidget->testAttribute(Qt::WA_DropSiteRegistered) == false)
- return NSDragOperationNone;
-
- // If we have no drop data (which will be assigned inside draggingEntered), it means
- // that the current drag target did not accept the enter event. If so, we ignore
- // subsequent move events as well:
- if (dropData == 0) {
- [self changeDraggingCursor:NSDragOperationNone];
- return NSDragOperationNone;
- }
-
- // If the mouse is still within the accepted rect (provided by
- // the application on a previous event), we follow the optimization
- // and just return the answer given at that point:
- NSDragOperation nsActions = [sender draggingSourceOperationMask];
- QPoint localPoint(qwidget->mapFromGlobal(globalPoint));
- if (qt_mac_mouse_inside_answer_rect(localPoint)
- && QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec.lastOperation) == nsActions) {
- NSDragOperation operation = QT_PREPEND_NAMESPACE(qt_mac_mapDropActions)(QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec.lastAction));
- [self changeDraggingCursor:operation];
- return operation;
- }
-
- QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec.lastOperation) = nsActions;
- Qt::DropActions qtAllowed = QT_PREPEND_NAMESPACE(qt_mac_mapNSDragOperations)(nsActions);
- Qt::KeyboardModifiers modifiers = Qt::NoModifier;
-
- // Update modifiers:
- if ([sender draggingSource] != nil) {
- QApplicationPrivate::modifier_buttons = qt_cocoaModifiers2QtModifiers([[NSApp currentEvent] modifierFlags]);
- modifiers = QApplication::keyboardModifiers();
- } else {
- modifiers = qt_cocoaDragOperation2QtModifiers(nsActions);
- }
-
- QMimeData *mimeData = dropData;
- if (QDragManager::self()->source())
- mimeData = QDragManager::self()->dragPrivate()->data;
-
- // Insert the same drop action on the event according to
- // what the application told us it should be on the previous event:
- QDragMoveEvent qDMEvent(localPoint, qtAllowed, mimeData, QApplication::mouseButtons(), modifiers);
- if (QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec).lastAction != Qt::IgnoreAction
- && QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec).buttons == qDMEvent.mouseButtons()
- && QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec).modifiers == qDMEvent.keyboardModifiers())
- qDMEvent.setDropAction(QT_PREPEND_NAMESPACE(qt_mac_dnd_answer_rec).lastAction);
-
- // Now, end the drag move event to the widget:
- qDMEvent.accept();
- QApplication::sendEvent(qwidget, &qDMEvent);
-
- NSDragOperation operation = qt_mac_mapDropAction(qDMEvent.dropAction());
- if (!qDMEvent.isAccepted() || qDMEvent.dropAction() == Qt::IgnoreAction) {
- // Ignore this event (we will still receive further
- // notifications), save as ignored in the answer rect:
- operation = NSDragOperationNone;
- qDMEvent.setDropAction(Qt::IgnoreAction);
- }
-
- qt_mac_copy_answer_rect(qDMEvent);
- [self changeDraggingCursor:operation];
-
- return operation;
-}
-
-- (void)draggingExited:(id <NSDraggingInfo>)sender
-{
- NSPoint nswindowPoint = [sender draggingLocation];
- NSPoint nsglobalPoint = [[sender draggingDestinationWindow] convertBaseToScreen:nswindowPoint];
- QPoint globalPoint = flipPoint(nsglobalPoint).toPoint();
-
- QWidget *qwidget = *currentDragTarget();
- if (!qwidget)
- return [super draggingExited:sender];
-
- if (dropData) {
- QDragLeaveEvent de;
- QApplication::sendEvent(qwidget, &de);
- [self removeDropData];
- }
-
- // Clean-up:
- [self removeDropData];
- *currentDragTarget() = 0;
- [self changeDraggingCursor:NSDragOperationEvery];
-}
-
-- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
-{
- QWidget *qwidget = *currentDragTarget();
- if (!qwidget)
- return NO;
-
- *currentDragTarget() = 0;
- NSPoint nswindowPoint = [sender draggingLocation];
- NSPoint nsglobalPoint = [[sender draggingDestinationWindow] convertBaseToScreen:nswindowPoint];
- QPoint globalPoint = flipPoint(nsglobalPoint).toPoint();
-
- [self addDropData:sender];
-
- NSDragOperation nsActions = [sender draggingSourceOperationMask];
- Qt::DropActions qtAllowed = qt_mac_mapNSDragOperations(nsActions);
- QMimeData *mimeData = dropData;
-
- if (QDragManager::self()->source())
- mimeData = QDragManager::self()->dragPrivate()->data;
- if (QDragManager::self()->object)
- QDragManager::self()->dragPrivate()->target = qwidget;
-
- QPoint localPoint(qwidget->mapFromGlobal(globalPoint));
- QDropEvent de(localPoint, qtAllowed, mimeData,
- QApplication::mouseButtons(), QApplication::keyboardModifiers());
- QApplication::sendEvent(qwidget, &de);
-
- if (QDragManager::self()->object)
- QDragManager::self()->dragPrivate()->executed_action = de.dropAction();
-
- return de.isAccepted();
-}
-
-// This is a hack and it should be removed once we find the real cause for
-// the painting problems.
-// We have a static variable that signals if we have been called before or not.
-static bool firstDrawingInvocation = true;
-
-// The method below exists only as a workaround to draw/not draw the baseline
-// in the title bar. This is to support unifiedToolbar look.
-
-// This method is very special. To begin with, it is a
-// method that will get called only if we enable documentMode.
-// Furthermore, it won't get called as a normal method, we swap
-// this method with the normal implementation of drawRect in
-// _NSThemeFrame. When this method is active, its mission is to
-// first call the original drawRect implementation so the widget
-// gets proper painting. After that, it needs to detect if there
-// is a toolbar or not, in order to decide how to handle the unified
-// look. The distinction is important since the presence and
-// visibility of a toolbar change the way we enter into unified mode.
-// When there is a toolbar and that toolbar is visible, the problem
-// is as simple as to tell the toolbar not to draw its baseline.
-// However when there is not toolbar or the toolbar is not visible,
-// we need to draw a line on top of the baseline, because the baseline
-// in that case will belong to the title. For this case we need to draw
-// a line on top of the baseline.
-// As usual, there is a special case. When we first are called, we might
-// need to repaint ourselves one more time. We only need that if we
-// didn't get the activation, i.e. when we are launched via the command
-// line. And this only if the toolbar is visible from the beginning,
-// so we have a special flag that signals if we need to repaint or not.
-- (void)drawRectSpecial:(NSRect)rect
-{
- // Call the original drawing method.
- [id(self) drawRectOriginal:rect];
- NSWindow *window = [id(self) window];
- NSToolbar *toolbar = [window toolbar];
- if(!toolbar) {
- // There is no toolbar, we have to draw a line on top of the line drawn by Cocoa.
- macDrawRectOnTop((void *)window);
- } else {
- if([toolbar isVisible]) {
- // We tell Cocoa to avoid drawing the line at the end.
- if(firstDrawingInvocation) {
- firstDrawingInvocation = false;
- macSyncDrawingOnFirstInvocation((void *)window);
- } else
- [toolbar setShowsBaselineSeparator:NO];
- } else {
- // There is a toolbar but it is not visible so
- // we have to draw a line on top of the line drawn by Cocoa.
- macDrawRectOnTop((void *)window);
- }
- }
-}
-
-- (void)drawRectOriginal:(NSRect)rect
-{
- Q_UNUSED(rect)
- // This method implementation is here to silenct the compiler.
- // See drawRectSpecial for information.
-}
-
diff --git a/src/widgets/platforms/mac/qcocoaview_mac.mm b/src/widgets/platforms/mac/qcocoaview_mac.mm
deleted file mode 100644
index f4b2b8d707..0000000000
--- a/src/widgets/platforms/mac/qcocoaview_mac.mm
+++ /dev/null
@@ -1,1386 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-#import <private/qcocoaview_mac_p.h>
-
-#include <private/qwidget_p.h>
-#include <private/qt_mac_p.h>
-#include <private/qapplication_p.h>
-#include <private/qabstractscrollarea_p.h>
-#include <private/qt_cocoa_helpers_mac_p.h>
-#include <private/qdnd_p.h>
-#include <private/qmacinputcontext_p.h>
-#include <private/qevent_p.h>
-#include <private/qbackingstore_p.h>
-#include <private/qwindowsurface_raster_p.h>
-#include <private/qunifiedtoolbarsurface_mac_p.h>
-
-#include <qscrollarea.h>
-#include <qhash.h>
-#include <qtextformat.h>
-#include <qpaintengine.h>
-#include <QUrl>
-#include <QAccessible>
-#include <QFileInfo>
-#include <QFile>
-
-#include <qdebug.h>
-
-@interface NSEvent (Qt_Compile_Leopard_DeviceDelta)
- - (CGFloat)deviceDeltaX;
- - (CGFloat)deviceDeltaY;
- - (CGFloat)deviceDeltaZ;
-@end
-
-@interface NSEvent (Qt_Compile_Leopard_Gestures)
- - (CGFloat)magnification;
-@end
-
-QT_BEGIN_NAMESPACE
-
-extern void qt_mac_update_cursor(); // qcursor_mac.mm
-extern bool qt_sendSpontaneousEvent(QObject *, QEvent *); // qapplication.cpp
-extern QPointer<QWidget> qt_last_mouse_receiver; // qapplication_mac.cpp
-extern QPointer<QWidget> qt_last_native_mouse_receiver; // qt_cocoa_helpers_mac.mm
-extern OSViewRef qt_mac_nativeview_for(const QWidget *w); // qwidget_mac.mm
-extern OSViewRef qt_mac_effectiveview_for(const QWidget *w); // qwidget_mac.mm
-extern QPointer<QWidget> qt_button_down; //qapplication_mac.cpp
-extern Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum);
-extern QWidget *mac_mouse_grabber;
-extern bool qt_mac_clearDirtyOnWidgetInsideDrawWidget; // qwidget.cpp
-
-static QColor colorFrom(NSColor *color)
-{
- QColor qtColor;
- NSString *colorSpace = [color colorSpaceName];
- if (colorSpace == NSDeviceCMYKColorSpace) {
- CGFloat cyan, magenta, yellow, black, alpha;
- [color getCyan:&cyan magenta:&magenta yellow:&yellow black:&black alpha:&alpha];
- qtColor.setCmykF(cyan, magenta, yellow, black, alpha);
- } else {
- NSColor *tmpColor;
- tmpColor = [color colorUsingColorSpaceName:NSDeviceRGBColorSpace];
- CGFloat red, green, blue, alpha;
- [tmpColor getRed:&red green:&green blue:&blue alpha:&alpha];
- qtColor.setRgbF(red, green, blue, alpha);
- }
- return qtColor;
-}
-
-QT_END_NAMESPACE
-
-QT_FORWARD_DECLARE_CLASS(QMacCocoaAutoReleasePool)
-QT_FORWARD_DECLARE_CLASS(QCFString)
-QT_FORWARD_DECLARE_CLASS(QDragManager)
-QT_FORWARD_DECLARE_CLASS(QMimeData)
-QT_FORWARD_DECLARE_CLASS(QPoint)
-QT_FORWARD_DECLARE_CLASS(QApplication)
-QT_FORWARD_DECLARE_CLASS(QApplicationPrivate)
-QT_FORWARD_DECLARE_CLASS(QDragEnterEvent)
-QT_FORWARD_DECLARE_CLASS(QDragMoveEvent)
-QT_FORWARD_DECLARE_CLASS(QStringList)
-QT_FORWARD_DECLARE_CLASS(QString)
-QT_FORWARD_DECLARE_CLASS(QRect)
-QT_FORWARD_DECLARE_CLASS(QRegion)
-QT_FORWARD_DECLARE_CLASS(QAbstractScrollArea)
-QT_FORWARD_DECLARE_CLASS(QAbstractScrollAreaPrivate)
-QT_FORWARD_DECLARE_CLASS(QPaintEvent)
-QT_FORWARD_DECLARE_CLASS(QPainter)
-QT_FORWARD_DECLARE_CLASS(QHoverEvent)
-QT_FORWARD_DECLARE_CLASS(QCursor)
-QT_USE_NAMESPACE
-extern "C" {
- extern NSString *NSTextInputReplacementRangeAttributeName;
-}
-
-//#define ALIEN_DEBUG 1
-#ifdef ALIEN_DEBUG
-static int qCocoaViewCount = 0;
-#endif
-
-@implementation QT_MANGLE_NAMESPACE(QCocoaView)
-
-- (id)initWithQWidget:(QWidget *)widget widgetPrivate:(QWidgetPrivate *)widgetprivate
-{
- self = [super init];
- if (self) {
- [self finishInitWithQWidget:widget widgetPrivate:widgetprivate];
- }
- [self setFocusRingType:NSFocusRingTypeNone];
- composingText = new QString();
-
-#ifdef ALIEN_DEBUG
- ++qCocoaViewCount;
- qDebug() << "Alien: create native view for" << widget << ". qCocoaViewCount is:" << qCocoaViewCount;
-#endif
-
- composing = false;
- sendKeyEvents = true;
- fromKeyDownEvent = false;
- alienTouchCount = 0;
-
- [self setHidden:YES];
- return self;
-}
-
-- (void) finishInitWithQWidget:(QWidget *)widget widgetPrivate:(QWidgetPrivate *)widgetprivate
-{
- qwidget = widget;
- qwidgetprivate = widgetprivate;
- [[NSNotificationCenter defaultCenter] addObserver:self
- selector:@selector(frameDidChange:)
- name:@"NSViewFrameDidChangeNotification"
- object:self];
-}
-
-- (void)dealloc
-{
- QMacCocoaAutoReleasePool pool;
- delete composingText;
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-
-#ifdef ALIEN_DEBUG
- --qCocoaViewCount;
- qDebug() << "Alien: widget deallocated. qCocoaViewCount is:" << qCocoaViewCount;
-#endif
-
- [super dealloc];
-}
-
-- (BOOL)isOpaque
-{
- if (!qwidgetprivate)
- return [super isOpaque];
- return qwidgetprivate->isOpaque;
-}
-
-- (BOOL)isFlipped
-{
- return YES;
-}
-
-// We preserve the content of the view if WA_StaticContents is defined.
-//
-// More info in the Cocoa documentation:
-// http://developer.apple.com/mac/library/documentation/cocoa/conceptual/CocoaViewsGuide/Optimizing/Optimizing.html
-- (BOOL) preservesContentDuringLiveResize
-{
- return qwidget->testAttribute(Qt::WA_StaticContents);
-}
-
-- (void) setFrameSize:(NSSize)newSize
-{
- [super setFrameSize:newSize];
-
- // A change in size has required the view to be invalidated.
- if ([self inLiveResize]) {
- NSRect rects[4];
- NSInteger count;
- [self getRectsExposedDuringLiveResize:rects count:&count];
- while (count-- > 0)
- {
- [self setNeedsDisplayInRect:rects[count]];
- }
- } else {
- [self setNeedsDisplay:YES];
- }
-
- // Make sure the opengl context is updated on resize.
- if (qwidgetprivate && qwidgetprivate->isGLWidget && [self window]) {
- qwidgetprivate->needWindowChange = true;
- QEvent event(QEvent::MacGLWindowChange);
- qApp->sendEvent(qwidget, &event);
- }
-}
-
-// We catch the 'setNeedsDisplay:' message in order to avoid a useless full repaint.
-// During the resize, the top of the widget is repainted, probably because of the
-// change of coordinate space (Quartz vs Qt). This is then followed by this message:
-// -[NSView _setNeedsDisplayIfTopLeftChanged]
-// which force a full repaint by sending the message 'setNeedsDisplay:'.
-// That is what we are preventing here.
-- (void)setNeedsDisplay:(BOOL)flag {
- if (![self inLiveResize] || !(qwidget->testAttribute(Qt::WA_StaticContents))) {
- [super setNeedsDisplay:flag];
- }
-}
-
-- (void)drawRect:(NSRect)aRect
-{
- if (!qwidget)
- return;
-
- // Getting context.
- CGContextRef context = (CGContextRef)[[NSGraphicsContext currentContext] graphicsPort];
- qt_mac_retain_graphics_context(context);
-
- // We use a different graphics system.
- //
- // Widgets that are set to paint on screen, specifically QGLWidget,
- // requires the native engine to execute in order to be drawn.
- if (QApplicationPrivate::graphicsSystem() != 0 && !qwidget->testAttribute(Qt::WA_PaintOnScreen)) {
-
- // Raster engine.
- if (QApplicationPrivate::graphics_system_name == QLatin1String("raster")) {
-
- if (!qwidgetprivate->isInUnifiedToolbar) {
-
- // Qt handles the painting occuring inside the window.
- // Cocoa also keeps track of all widgets as NSView and therefore might
- // ask for a repainting of a widget even if Qt is already taking care of it.
- //
- // The only valid reason for Cocoa to call drawRect: is for window manipulation
- // (ie. resize, ...).
- //
- // Qt will then forward the update to the children.
- if (!qwidget->isWindow()) {
- qt_mac_release_graphics_context(context);
- return;
- }
-
- QRasterWindowSurface *winSurface = dynamic_cast<QRasterWindowSurface *>(qwidget->windowSurface());
- if (!winSurface || !winSurface->needsFlush) {
- qt_mac_release_graphics_context(context);
- return;
- }
-
- // Clip to region.
- const QVector<QRect> &rects = winSurface->regionToFlush.rects();
- for (int i = 0; i < rects.size(); ++i) {
- const QRect &rect = rects.at(i);
- CGContextAddRect(context, CGRectMake(rect.x(), rect.y(), rect.width(), rect.height()));
- }
- CGContextClip(context);
-
- QRect r = winSurface->regionToFlush.boundingRect();
- const CGRect area = CGRectMake(r.x(), r.y(), r.width(), r.height());
-
- qt_mac_draw_image(context, winSurface->imageContext(), area, area);
-
- winSurface->needsFlush = false;
- winSurface->regionToFlush = QRegion();
-
- } else {
-
- QUnifiedToolbarSurface *unifiedSurface = qwidgetprivate->unifiedSurface;
- if (!unifiedSurface) {
- qt_mac_release_graphics_context(context);
- return;
- }
-
- int areaX = qwidgetprivate->toolbar_offset.x();
- int areaY = qwidgetprivate->toolbar_offset.y();
- int areaWidth = qwidget->geometry().width();
- int areaHeight = qwidget->geometry().height();
- const CGRect area = CGRectMake(areaX, areaY, areaWidth, areaHeight);
- const CGRect drawingArea = CGRectMake(0, 0, areaWidth, areaHeight);
-
- qt_mac_draw_image(context, unifiedSurface->imageContext(), area, drawingArea);
-
- qwidgetprivate->flushRequested = false;
-
- }
-
- CGContextFlush(context);
- qt_mac_release_graphics_context(context);
- return;
- }
-
- // Qt handles the painting occuring inside the window.
- // Cocoa also keeps track of all widgets as NSView and therefore might
- // ask for a repainting of a widget even if Qt is already taking care of it.
- //
- // The only valid reason for Cocoa to call drawRect: is for window manipulation
- // (ie. resize, ...).
- //
- // Qt will then forward the update to the children.
- if (qwidget->isWindow()) {
- qwidgetprivate->syncBackingStore(qwidget->rect());
- }
- }
-
- // Native engine.
- qwidgetprivate->hd = context;
-
- if (qwidget->isVisible() && qwidget->updatesEnabled()) { //process the actual paint event.
- if (qwidget->testAttribute(Qt::WA_WState_InPaintEvent))
- qWarning("QWidget::repaint: Recursive repaint detected");
-
- const QRect qrect = QRect(aRect.origin.x, aRect.origin.y, aRect.size.width, aRect.size.height);
- QRegion qrgn;
-
- const NSRect *rects;
- NSInteger count;
- [self getRectsBeingDrawn:&rects count:&count];
- for (int i = 0; i < count; ++i) {
- QRect tmpRect = QRect(rects[i].origin.x, rects[i].origin.y, rects[i].size.width, rects[i].size.height);
- qrgn += tmpRect;
- }
-
- if (!qwidget->isWindow() && !qobject_cast<QAbstractScrollArea *>(qwidget->parent())) {
- const QRegion &parentMask = qwidget->window()->mask();
- if (!parentMask.isEmpty()) {
- const QPoint mappedPoint = qwidget->mapTo(qwidget->window(), qrect.topLeft());
- qrgn.translate(mappedPoint);
- qrgn &= parentMask;
- qrgn.translate(-mappedPoint.x(), -mappedPoint.y());
- }
- }
-
- QPoint redirectionOffset(0, 0);
- //setup the context
- qwidget->setAttribute(Qt::WA_WState_InPaintEvent);
- QPaintEngine *engine = qwidget->paintEngine();
- if (engine)
- engine->setSystemClip(qrgn);
- if (qwidgetprivate->extra && qwidgetprivate->extra->hasMask) {
- CGRect widgetRect = CGRectMake(0, 0, qwidget->width(), qwidget->height());
- CGContextTranslateCTM (context, 0, widgetRect.size.height);
- CGContextScaleCTM(context, 1, -1);
- if (qwidget->isWindow())
- CGContextClearRect(context, widgetRect);
- CGContextClipToMask(context, widgetRect, qwidgetprivate->extra->imageMask);
- CGContextScaleCTM(context, 1, -1);
- CGContextTranslateCTM (context, 0, -widgetRect.size.height);
- }
-
- if (qwidget->isWindow() && !qwidgetprivate->isOpaque
- && !qwidget->testAttribute(Qt::WA_MacBrushedMetal)) {
- CGContextClearRect(context, NSRectToCGRect(aRect));
- }
-
- qwidget->setAttribute(Qt::WA_WState_InPaintEvent, false);
- QWidgetPrivate *qwidgetPrivate = qt_widget_private(qwidget);
-
- // We specify that we want to draw the widget itself, and
- // all its children recursive. But we skip native children, because
- // they will receive drawRect calls by themselves as needed:
- int flags = QWidgetPrivate::DrawPaintOnScreen
- | QWidgetPrivate::DrawRecursive
- | QWidgetPrivate::DontDrawNativeChildren;
-
- if (qwidget->isWindow())
- flags |= QWidgetPrivate::DrawAsRoot;
-
- // Start to draw:
- qt_mac_clearDirtyOnWidgetInsideDrawWidget = true;
- qwidgetPrivate->drawWidget(qwidget, qrgn, QPoint(), flags, 0);
- qt_mac_clearDirtyOnWidgetInsideDrawWidget = false;
-
- if (!redirectionOffset.isNull())
- QPainter::restoreRedirected(qwidget);
- if (engine)
- engine->setSystemClip(QRegion());
- qwidget->setAttribute(Qt::WA_WState_InPaintEvent, false);
- if(!qwidget->testAttribute(Qt::WA_PaintOutsidePaintEvent) && qwidget->paintingActive())
- qWarning("QWidget: It is dangerous to leave painters active on a"
- " widget outside of the PaintEvent");
- }
- qwidgetprivate->hd = 0;
- qt_mac_release_graphics_context(context);
-}
-
-- (BOOL)acceptsFirstMouse:(NSEvent *)theEvent
-{
- // Find the widget that should receive the event:
- QPoint qlocal, qglobal;
- QWidget *widgetToGetMouse = qt_mac_getTargetForMouseEvent(theEvent, QEvent::MouseButtonPress, qlocal, qglobal, qwidget, 0);
- if (!widgetToGetMouse)
- return NO;
-
- return !widgetToGetMouse->testAttribute(Qt::WA_MacNoClickThrough);
-}
-
-- (NSView *)hitTest:(NSPoint)aPoint
-{
- if (!qwidget)
- return [super hitTest:aPoint];
-
- if (qwidget->testAttribute(Qt::WA_TransparentForMouseEvents))
- return nil; // You cannot hit a transparent for mouse event widget.
- return [super hitTest:aPoint];
-}
-
-- (void)updateTrackingAreas
-{
- if (!qwidget)
- return;
-
- // [NSView addTrackingArea] is slow, so bail out early if we can:
- if (NSIsEmptyRect([self visibleRect]))
- return;
-
- QMacCocoaAutoReleasePool pool;
- if (NSArray *trackingArray = [self trackingAreas]) {
- NSUInteger size = [trackingArray count];
- for (NSUInteger i = 0; i < size; ++i) {
- NSTrackingArea *t = [trackingArray objectAtIndex:i];
- [self removeTrackingArea:t];
- }
- }
-
- // Ideally, we shouldn't have NSTrackingMouseMoved events included below, it should
- // only be turned on if mouseTracking, hover is on or a tool tip is set.
- // Unfortunately, Qt will send "tooltip" events on mouse moves, so we need to
- // turn it on in ALL case. That means EVERY QCocoaView gets to pay the cost of
- // mouse moves delivered to it (Apple recommends keeping it OFF because there
- // is a performance hit). So it goes.
- NSUInteger trackingOptions = NSTrackingMouseEnteredAndExited | NSTrackingActiveInActiveApp
- | NSTrackingInVisibleRect | NSTrackingMouseMoved;
- NSTrackingArea *ta = [[NSTrackingArea alloc] initWithRect:NSMakeRect(0, 0,
- qwidget->width(),
- qwidget->height())
- options:trackingOptions
- owner:self
- userInfo:nil];
- [self addTrackingArea:ta];
- [ta release];
-}
-
-- (void)mouseEntered:(NSEvent *)event
-{
- // Cocoa will not send a move event on mouseEnter. But since
- // Qt expect this, we fake one now. See also mouseExited below
- // for info about enter/leave event handling
- NSEvent *nsmoveEvent = [NSEvent
- mouseEventWithType:NSMouseMoved
- location:[[self window] mouseLocationOutsideOfEventStream]
- modifierFlags: [event modifierFlags]
- timestamp: [event timestamp]
- windowNumber: [event windowNumber]
- context: [event context]
- eventNumber: [event eventNumber]
- clickCount: 0
- pressure: 0];
-
- // Important: Cocoa sends us mouseEnter on all views under the mouse
- // and not just the one on top. Therefore, to we cannot use qwidget
- // as native widget for this case. Instead, we let qt_mac_handleMouseEvent
- // resolve it (last argument set to 0):
- qt_mac_handleMouseEvent(nsmoveEvent, QEvent::MouseMove, Qt::NoButton, 0);
-}
-
-- (void)mouseExited:(NSEvent *)event
-{
- // Note: normal enter/leave handling is done from within mouseMove. This handler
- // catches the case when the mouse moves out of the window (which mouseMove do not).
- // Updating the mouse cursor follows the same logic as enter/leave. And we update
- // neither if a grab exists (even if the grab points to this widget, it seems, ref X11)
- Q_UNUSED(event);
- if (self == [[self window] contentView] && !qt_button_down && !QWidget::mouseGrabber()) {
- qt_mac_update_cursor();
- // If the mouse exits the content view, but qt_mac_getTargetForMouseEvent still
- // reports a target, it means that either there is a grab involved, or the mouse
- // hovered over another window in the application. In both cases, move events will
- // cause qt_mac_handleMouseEvent to be called, which will handle enter/leave.
- QPoint qlocal, qglobal;
- QWidget *widgetUnderMouse = 0;
- qt_mac_getTargetForMouseEvent(event, QEvent::Leave, qlocal, qglobal, qwidget, &widgetUnderMouse);
-
- if (widgetUnderMouse == 0) {
- QApplicationPrivate::dispatchEnterLeave(0, qt_last_mouse_receiver);
- qt_last_mouse_receiver = 0;
- qt_last_native_mouse_receiver = 0;
- }
- }
-}
-
-- (void)flagsChanged:(NSEvent *)theEvent
-{
- QWidget *widgetToGetKey = qt_mac_getTargetForKeyEvent(qwidget);
- if (!widgetToGetKey)
- return;
-
- qt_dispatchModifiersChanged(theEvent, widgetToGetKey);
- [super flagsChanged:theEvent];
-}
-
-- (void)mouseMoved:(NSEvent *)theEvent
-{
- // Important: this method will only be called when the view's window is _not_ inside
- // QCocoaWindow/QCocoaPanel. Otherwise, [QCocoaWindow sendEvent] will handle the event
- // before it ends up here. So, this method is added for supporting QMacNativeWidget.
- // TODO: Cocoa send move events to all views under the mouse. So make sure we only
- // handle the event for the widget on top when using QMacNativeWidget.
- qt_mac_handleMouseEvent(theEvent, QEvent::MouseMove, Qt::NoButton, qwidget);
-}
-
-- (void)mouseDown:(NSEvent *)theEvent
-{
- qt_mac_handleMouseEvent(theEvent, QEvent::MouseButtonPress, Qt::LeftButton, qwidget);
- // Don't call super here. This prevents us from getting the mouseUp event,
- // which we need to send even if the mouseDown event was not accepted.
- // (this is standard Qt behavior.)
-}
-
-- (void)mouseUp:(NSEvent *)theEvent
-{
- qt_mac_handleMouseEvent(theEvent, QEvent::MouseButtonRelease, Qt::LeftButton, qwidget);
-}
-
-- (void)rightMouseDown:(NSEvent *)theEvent
-{
- qt_mac_handleMouseEvent(theEvent, QEvent::MouseButtonPress, Qt::RightButton, qwidget);
-}
-
-- (void)rightMouseUp:(NSEvent *)theEvent
-{
- qt_mac_handleMouseEvent(theEvent, QEvent::MouseButtonRelease, Qt::RightButton, qwidget);
-}
-
-- (void)otherMouseDown:(NSEvent *)theEvent
-{
- Qt::MouseButton mouseButton = cocoaButton2QtButton([theEvent buttonNumber]);
- qt_mac_handleMouseEvent(theEvent, QEvent::MouseButtonPress, mouseButton, qwidget);
-}
-
-- (void)otherMouseUp:(NSEvent *)theEvent
-{
- Qt::MouseButton mouseButton = cocoaButton2QtButton([theEvent buttonNumber]);
- qt_mac_handleMouseEvent(theEvent, QEvent::MouseButtonRelease, mouseButton, qwidget);
-}
-
-- (void)mouseDragged:(NSEvent *)theEvent
-{
- qt_mac_handleMouseEvent(theEvent, QEvent::MouseMove, Qt::NoButton, qwidget);
-}
-
-- (void)rightMouseDragged:(NSEvent *)theEvent
-{
- qt_mac_handleMouseEvent(theEvent, QEvent::MouseMove, Qt::NoButton, qwidget);
-}
-
-- (void)otherMouseDragged:(NSEvent *)theEvent
-{
- qt_mac_handleMouseEvent(theEvent, QEvent::MouseMove, Qt::NoButton, qwidget);
-}
-
-- (void)scrollWheel:(NSEvent *)theEvent
-{
- // Give the Input Manager a chance to process the wheel event.
- NSInputManager *currentIManager = [NSInputManager currentInputManager];
- if (currentIManager && [currentIManager wantsToHandleMouseEvents]) {
- [currentIManager handleMouseEvent:theEvent];
- }
-
- Qt::MouseButtons buttons = QApplication::mouseButtons();
- Qt::KeyboardModifiers keyMods = qt_cocoaModifiers2QtModifiers([theEvent modifierFlags]);
-
- // Find the widget that should receive the event:
- QPoint qlocal, qglobal;
- QWidget *widgetToGetMouse = qt_mac_getTargetForMouseEvent(theEvent, QEvent::Wheel, qlocal, qglobal, qwidget, 0);
- if (!widgetToGetMouse)
- return;
-
- int deltaX = 0;
- int deltaY = 0;
- int deltaZ = 0;
-
- const EventRef carbonEvent = (EventRef)[theEvent eventRef];
- const UInt32 carbonEventKind = carbonEvent ? ::GetEventKind(carbonEvent) : 0;
- const bool scrollEvent = carbonEventKind == kEventMouseScroll;
-
- if (scrollEvent) {
- // The mouse device containts pixel scroll wheel support (Mighty Mouse, Trackpad).
- // Since deviceDelta is delivered as pixels rather than degrees, we need to
- // convert from pixels to degrees in a sensible manner.
- // It looks like 1/4 degrees per pixel behaves most native.
- // (NB: Qt expects the unit for delta to be 8 per degree):
- const int pixelsToDegrees = 2; // 8 * 1/4
- deltaX = [theEvent deviceDeltaX] * pixelsToDegrees;
- deltaY = [theEvent deviceDeltaY] * pixelsToDegrees;
- deltaZ = [theEvent deviceDeltaZ] * pixelsToDegrees;
- } else {
- // carbonEventKind == kEventMouseWheelMoved
- // Remove acceleration, and use either -120 or 120 as delta:
- deltaX = qBound(-120, int([theEvent deltaX] * 10000), 120);
- deltaY = qBound(-120, int([theEvent deltaY] * 10000), 120);
- deltaZ = qBound(-120, int([theEvent deltaZ] * 10000), 120);
- }
-
-#ifndef QT_NO_WHEELEVENT
- // ### Qt 5: Send one QWheelEvent with dx, dy and dz
-
- if (deltaX != 0 && deltaY != 0)
- QMacScrollOptimization::initDelayedScroll();
-
- if (deltaX != 0) {
- QWheelEvent qwe(qlocal, qglobal, deltaX, buttons, keyMods, Qt::Horizontal);
- qt_sendSpontaneousEvent(widgetToGetMouse, &qwe);
- }
-
- if (deltaY != 0) {
- QWheelEvent qwe(qlocal, qglobal, deltaY, buttons, keyMods, Qt::Vertical);
- qt_sendSpontaneousEvent(widgetToGetMouse, &qwe);
- }
-
- if (deltaZ != 0) {
- // Qt doesn't explicitly support wheels with a Z component. In a misguided attempt to
- // try to be ahead of the pack, I'm adding this extra value.
- QWheelEvent qwe(qlocal, qglobal, deltaZ, buttons, keyMods, (Qt::Orientation)3);
- qt_sendSpontaneousEvent(widgetToGetMouse, &qwe);
- }
-
- if (deltaX != 0 && deltaY != 0)
- QMacScrollOptimization::performDelayedScroll();
-#endif //QT_NO_WHEELEVENT
-}
-
-- (void)tabletProximity:(NSEvent *)tabletEvent
-{
- qt_dispatchTabletProximityEvent(tabletEvent);
-}
-
-- (void)tabletPoint:(NSEvent *)tabletEvent
-{
- if (!qt_mac_handleTabletEvent(self, tabletEvent))
- [super tabletPoint:tabletEvent];
-}
-
-- (void)magnifyWithEvent:(NSEvent *)event
-{
- QPoint qlocal, qglobal;
- QWidget *widgetToGetGesture = 0;
- qt_mac_getTargetForMouseEvent(event, QEvent::Gesture, qlocal, qglobal, qwidget, &widgetToGetGesture);
- if (!widgetToGetGesture)
- return;
- if (!QApplicationPrivate::tryModalHelper(widgetToGetGesture, 0))
- return;
-
-#ifndef QT_NO_GESTURES
- QNativeGestureEvent qNGEvent;
- qNGEvent.gestureType = QNativeGestureEvent::Zoom;
- NSPoint p = [[event window] convertBaseToScreen:[event locationInWindow]];
- qNGEvent.position = flipPoint(p).toPoint();
- qNGEvent.percentage = [event magnification];
- qt_sendSpontaneousEvent(widgetToGetGesture, &qNGEvent);
-#endif // QT_NO_GESTURES
-}
-
-- (void)rotateWithEvent:(NSEvent *)event
-{
- QPoint qlocal, qglobal;
- QWidget *widgetToGetGesture = 0;
- qt_mac_getTargetForMouseEvent(event, QEvent::Gesture, qlocal, qglobal, qwidget, &widgetToGetGesture);
- if (!widgetToGetGesture)
- return;
- if (!QApplicationPrivate::tryModalHelper(widgetToGetGesture, 0))
- return;
-
-#ifndef QT_NO_GESTURES
- QNativeGestureEvent qNGEvent;
- qNGEvent.gestureType = QNativeGestureEvent::Rotate;
- NSPoint p = [[event window] convertBaseToScreen:[event locationInWindow]];
- qNGEvent.position = flipPoint(p).toPoint();
- qNGEvent.percentage = -[event rotation];
- qt_sendSpontaneousEvent(widgetToGetGesture, &qNGEvent);
-#endif // QT_NO_GESTURES
-}
-
-- (void)swipeWithEvent:(NSEvent *)event
-{
- QPoint qlocal, qglobal;
- QWidget *widgetToGetGesture = 0;
- qt_mac_getTargetForMouseEvent(event, QEvent::Gesture, qlocal, qglobal, qwidget, &widgetToGetGesture);
- if (!widgetToGetGesture)
- return;
- if (!QApplicationPrivate::tryModalHelper(widgetToGetGesture, 0))
- return;
-
-#ifndef QT_NO_GESTURES
- QNativeGestureEvent qNGEvent;
- qNGEvent.gestureType = QNativeGestureEvent::Swipe;
- NSPoint p = [[event window] convertBaseToScreen:[event locationInWindow]];
- qNGEvent.position = flipPoint(p).toPoint();
- if ([event deltaX] == 1)
- qNGEvent.angle = 180.0f;
- else if ([event deltaX] == -1)
- qNGEvent.angle = 0.0f;
- else if ([event deltaY] == 1)
- qNGEvent.angle = 90.0f;
- else if ([event deltaY] == -1)
- qNGEvent.angle = 270.0f;
- qt_sendSpontaneousEvent(widgetToGetGesture, &qNGEvent);
-#endif // QT_NO_GESTURES
-}
-
-- (void)beginGestureWithEvent:(NSEvent *)event
-{
- QPoint qlocal, qglobal;
- QWidget *widgetToGetGesture = 0;
- qt_mac_getTargetForMouseEvent(event, QEvent::Gesture, qlocal, qglobal, qwidget, &widgetToGetGesture);
- if (!widgetToGetGesture)
- return;
- if (!QApplicationPrivate::tryModalHelper(widgetToGetGesture, 0))
- return;
-
-#ifndef QT_NO_GESTURES
- QNativeGestureEvent qNGEvent;
- qNGEvent.gestureType = QNativeGestureEvent::GestureBegin;
- NSPoint p = [[event window] convertBaseToScreen:[event locationInWindow]];
- qNGEvent.position = flipPoint(p).toPoint();
- qt_sendSpontaneousEvent(widgetToGetGesture, &qNGEvent);
-#endif // QT_NO_GESTURES
-}
-
-- (void)endGestureWithEvent:(NSEvent *)event
-{
- QPoint qlocal, qglobal;
- QWidget *widgetToGetGesture = 0;
- qt_mac_getTargetForMouseEvent(event, QEvent::Gesture, qlocal, qglobal, qwidget, &widgetToGetGesture);
- if (!widgetToGetGesture)
- return;
- if (!QApplicationPrivate::tryModalHelper(widgetToGetGesture, 0))
- return;
-
-#ifndef QT_NO_GESTURES
- QNativeGestureEvent qNGEvent;
- qNGEvent.gestureType = QNativeGestureEvent::GestureEnd;
- NSPoint p = [[event window] convertBaseToScreen:[event locationInWindow]];
- qNGEvent.position = flipPoint(p).toPoint();
- qt_sendSpontaneousEvent(widgetToGetGesture, &qNGEvent);
-}
-#endif // QT_NO_GESTURES
-
-- (void)frameDidChange:(NSNotification *)note
-{
- Q_UNUSED(note);
- if (!qwidget)
- return;
- if (qwidget->isWindow())
- return;
- NSRect newFrame = [self frame];
- QRect newGeo(newFrame.origin.x, newFrame.origin.y, newFrame.size.width, newFrame.size.height);
- bool moved = qwidget->testAttribute(Qt::WA_Moved);
- bool resized = qwidget->testAttribute(Qt::WA_Resized);
- qwidget->setGeometry(newGeo);
- qwidget->setAttribute(Qt::WA_Moved, moved);
- qwidget->setAttribute(Qt::WA_Resized, resized);
- qwidgetprivate->syncCocoaMask();
-}
-
-- (BOOL)isEnabled
-{
- if (!qwidget)
- return [super isEnabled];
- return [super isEnabled] && qwidget->isEnabled();
-}
-
-- (void)setEnabled:(BOOL)flag
-{
- QMacCocoaAutoReleasePool pool;
- [super setEnabled:flag];
- if (qwidget && qwidget->isEnabled() != flag)
- qwidget->setEnabled(flag);
-}
-
-+ (Class)cellClass
-{
- return [NSActionCell class];
-}
-
-- (BOOL)acceptsFirstResponder
-{
- if (!qwidget)
- return NO;
-
- // Disabled widget shouldn't get focus even if it's a window.
- // hence disabled windows will not get any key or mouse events.
- if (!qwidget->isEnabled())
- return NO;
-
- if (qwidget->isWindow() && !qt_widget_private(qwidget)->topData()->embedded) {
- QWidget *focusWidget = qApp->focusWidget();
- if (!focusWidget) {
- // There is no focus widget, but we still want to receive key events
- // for shortcut handling etc. So we accept first responer for the
- // content view as a last resort:
- return YES;
- }
- if (!focusWidget->internalWinId() && focusWidget->nativeParentWidget() == qwidget) {
- // The current focus widget is alien, and hence, cannot get acceptsFirstResponder
- // calls. Since the focus widget is a child of qwidget, we let this view say YES:
- return YES;
- }
- if (focusWidget->window() != qwidget) {
- // The current focus widget is in another window. Since cocoa
- // suggest that this window should be key now, we accept:
- return YES;
- }
- }
-
- return qwidget->focusPolicy() != Qt::NoFocus;
-}
-
-- (BOOL)resignFirstResponder
-{
- if (!qwidget)
- return YES;
-
- // Seems like the following test only triggers if this
- // view is inside a QMacNativeWidget:
-// if (QWidget *fw = QApplication::focusWidget()) {
-// if (qwidget == fw || qwidget == fw->nativeParentWidget())
-// fw->clearFocus();
-// }
- return YES;
-}
-
-- (BOOL)becomeFirstResponder
-{
- // see the comment in the acceptsFirstResponder - if the window "stole" focus
- // let it become the responder, but don't tell Qt
- if (qwidget && qt_widget_private(qwidget->window())->topData()->embedded
- && !QApplication::focusWidget() && qwidget->focusPolicy() != Qt::NoFocus)
- qwidget->setFocus(Qt::OtherFocusReason);
- return YES;
-}
-
-- (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)isLocal
-{
- Q_UNUSED(isLocal);
- return supportedActions;
-}
-
-- (void)setSupportedActions:(NSDragOperation)actions
-{
- supportedActions = actions;
-}
-
-- (void)draggedImage:(NSImage *)anImage endedAt:(NSPoint)aPoint operation:(NSDragOperation)operation
-{
- Q_UNUSED(anImage);
- Q_UNUSED(aPoint);
- macCurrentDnDParameters()->performedAction = operation;
- if (QDragManager::self()->object
- && QDragManager::self()->dragPrivate()->executed_action != Qt::ActionMask) {
- macCurrentDnDParameters()->performedAction =
- qt_mac_mapDropAction(QDragManager::self()->dragPrivate()->executed_action);
- }
-}
-
-- (QWidget *)qt_qwidget
-{
- return qwidget;
-}
-
-- (void) qt_clearQWidget
-{
- qwidget = 0;
- qwidgetprivate = 0;
-}
-
-- (void)keyDown:(NSEvent *)theEvent
-{
- if (!qwidget)
- return;
- QWidget *widgetToGetKey = qt_mac_getTargetForKeyEvent(qwidget);
- if (!widgetToGetKey)
- return;
-
- sendKeyEvents = true;
-
- if (widgetToGetKey->testAttribute(Qt::WA_InputMethodEnabled)
- && !(widgetToGetKey->inputMethodHints() & Qt::ImhDigitsOnly
- || widgetToGetKey->inputMethodHints() & Qt::ImhFormattedNumbersOnly
- || widgetToGetKey->inputMethodHints() & Qt::ImhHiddenText)) {
- fromKeyDownEvent = true;
- [qt_mac_nativeview_for(qwidget) interpretKeyEvents:[NSArray arrayWithObject: theEvent]];
- fromKeyDownEvent = false;
- }
-
- if (sendKeyEvents && !composing) {
- bool keyEventEaten = qt_dispatchKeyEvent(theEvent, widgetToGetKey);
- if (!keyEventEaten && qwidget) {
- // The event is not yet eaten, and if Qt is embedded inside a native
- // cocoa application, send it to first responder not owned by Qt.
- // The exception is if widgetToGetKey was redirected to a popup.
- QWidget *toplevel = qwidget->window();
- if (toplevel == widgetToGetKey->window()) {
- if (qt_widget_private(toplevel)->topData()->embedded) {
- if (NSResponder *w = [qt_mac_nativeview_for(toplevel) superview])
- [w keyDown:theEvent];
- }
- }
- }
- }
-}
-
-
-- (void)keyUp:(NSEvent *)theEvent
-{
- if (sendKeyEvents) {
- QWidget *widgetToGetKey = qt_mac_getTargetForKeyEvent(qwidget);
- if (!widgetToGetKey)
- return;
-
- bool keyEventEaten = qt_dispatchKeyEvent(theEvent, widgetToGetKey);
- if (!keyEventEaten && qwidget) {
- // The event is not yet eaten, and if Qt is embedded inside a native
- // cocoa application, send it to first responder not owned by Qt.
- // The exception is if widgetToGetKey was redirected to a popup.
- QWidget *toplevel = qwidget->window();
- if (toplevel == widgetToGetKey->window()) {
- if (qt_widget_private(toplevel)->topData()->embedded) {
- if (NSResponder *w = [qt_mac_nativeview_for(toplevel) superview])
- [w keyUp:theEvent];
- }
- }
- }
- }
-}
-
-- (void)viewWillMoveToWindow:(NSWindow *)window
-{
- if (qwidget == 0)
- return;
-
- if (qwidget->windowFlags() & Qt::MSWindowsOwnDC
- && (window != [self window])) { // OpenGL Widget
- QEvent event(QEvent::MacGLClearDrawable);
- qApp->sendEvent(qwidget, &event);
- }
-}
-
-- (void)viewDidMoveToWindow
-{
- if (qwidget == 0)
- return;
-
- if (qwidget->windowFlags() & Qt::MSWindowsOwnDC && [self window]) {
- // call update paint event
- qwidgetprivate->needWindowChange = true;
- QEvent event(QEvent::MacGLWindowChange);
- qApp->sendEvent(qwidget, &event);
- }
-}
-
-
-// NSTextInput Protocol implementation
-
-- (void) insertText:(id)aString
-{
- QString commitText;
- if ([aString length]) {
- if ([aString isKindOfClass:[NSAttributedString class]]) {
- commitText = QCFString::toQString(reinterpret_cast<CFStringRef>([aString string]));
- } else {
- commitText = QCFString::toQString(reinterpret_cast<CFStringRef>(aString));
- };
- }
-
- // When entering characters through Character Viewer or Keyboard Viewer, the text is passed
- // through this insertText method. Since we dont receive a keyDown Event in such cases, the
- // composing flag will be false.
- if (([aString length] && composing) || !fromKeyDownEvent) {
- // Send the commit string to the widget.
- composing = false;
- sendKeyEvents = false;
- QInputMethodEvent e;
- e.setCommitString(commitText);
- if (QWidget *widgetToGetKey = qt_mac_getTargetForKeyEvent(qwidget))
- qt_sendSpontaneousEvent(widgetToGetKey, &e);
- } else {
- // The key sequence "`q" on a French Keyboard will generate two calls to insertText before
- // it returns from interpretKeyEvents. The first call will turn off 'composing' and accept
- // the "`" key. The last keyDown event needs to be processed by the widget to get the
- // character "q". The string parameter is ignored for the second call.
- sendKeyEvents = true;
- }
-
- composingText->clear();
-}
-
-- (void) setMarkedText:(id)aString selectedRange:(NSRange)selRange
-{
- // Generate the QInputMethodEvent with preedit string and the attributes
- // for rendering it. The attributes handled here are 'underline',
- // 'underline color' and 'cursor position'.
- sendKeyEvents = false;
- composing = true;
- QString qtText;
- // Cursor position is retrived from the range.
- QList<QInputMethodEvent::Attribute> attrs;
- attrs<<QInputMethodEvent::Attribute(QInputMethodEvent::Cursor, selRange.location + selRange.length, 1, QVariant());
- if ([aString isKindOfClass:[NSAttributedString class]]) {
- qtText = QCFString::toQString(reinterpret_cast<CFStringRef>([aString string]));
- composingLength = qtText.length();
- int index = 0;
- // Create attributes for individual sections of preedit text
- while (index < composingLength) {
- NSRange effectiveRange;
- NSRange range = NSMakeRange(index, composingLength-index);
- NSDictionary *attributes = [aString attributesAtIndex:index
- longestEffectiveRange:&effectiveRange
- inRange:range];
- NSNumber *underlineStyle = [attributes objectForKey:NSUnderlineStyleAttributeName];
- if (underlineStyle) {
- QColor clr (Qt::black);
- NSColor *color = [attributes objectForKey:NSUnderlineColorAttributeName];
- if (color) {
- clr = colorFrom(color);
- }
- QTextCharFormat format;
- format.setFontUnderline(true);
- format.setUnderlineColor(clr);
- attrs<<QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat,
- effectiveRange.location,
- effectiveRange.length,
- format);
- }
- index = effectiveRange.location + effectiveRange.length;
- }
- } else {
- // No attributes specified, take only the preedit text.
- qtText = QCFString::toQString(reinterpret_cast<CFStringRef>(aString));
- composingLength = qtText.length();
- }
- // Make sure that we have at least one text format.
- if (attrs.size() <= 1) {
- QTextCharFormat format;
- format.setFontUnderline(true);
- attrs<<QInputMethodEvent::Attribute(QInputMethodEvent::TextFormat,
- 0, composingLength, format);
- }
- *composingText = qtText;
-
- QInputMethodEvent e(qtText, attrs);
- if (QWidget *widgetToGetKey = qt_mac_getTargetForKeyEvent(qwidget))
- qt_sendSpontaneousEvent(widgetToGetKey, &e);
-
- if (!composingLength)
- composing = false;
-}
-
-- (void) unmarkText
-{
- if (composing) {
- QInputMethodEvent e;
- e.setCommitString(*composingText);
- if (QWidget *widgetToGetKey = qt_mac_getTargetForKeyEvent(qwidget))
- qt_sendSpontaneousEvent(widgetToGetKey, &e);
- }
- composingText->clear();
- composing = false;
-}
-
-- (BOOL) hasMarkedText
-{
- return (composing ? YES: NO);
-}
-
-- (void) doCommandBySelector:(SEL)aSelector
-{
- Q_UNUSED(aSelector);
-}
-
-- (BOOL)isComposing
-{
- return composing;
-}
-
-- (NSInteger) conversationIdentifier
-{
- // Return a unique identifier fot this ime conversation
- return (NSInteger)self;
-}
-
-- (NSAttributedString *) attributedSubstringFromRange:(NSRange)theRange
-{
- QString selectedText(qwidget->inputMethodQuery(Qt::ImCurrentSelection).toString());
- if (!selectedText.isEmpty()) {
- QCFString string(selectedText.mid(theRange.location, theRange.length));
- const NSString *tmpString = reinterpret_cast<const NSString *>((CFStringRef)string);
- return [[[NSAttributedString alloc] initWithString:const_cast<NSString *>(tmpString)] autorelease];
- } else {
- return nil;
- }
-}
-
-- (NSRange) markedRange
-{
- NSRange range;
- if (composing) {
- range.location = 0;
- range.length = composingLength;
- } else {
- range.location = NSNotFound;
- range.length = 0;
- }
- return range;
-}
-
-- (NSRange) selectedRange
-{
- NSRange selRange;
- QString selectedText(qwidget->inputMethodQuery(Qt::ImCurrentSelection).toString());
- if (!selectedText.isEmpty()) {
- // Consider only the selected text.
- selRange.location = 0;
- selRange.length = selectedText.length();
- } else {
- // No selected text.
- selRange.location = NSNotFound;
- selRange.length = 0;
- }
- return selRange;
-
-}
-
-- (NSRect) firstRectForCharacterRange:(NSRange)theRange
-{
- Q_UNUSED(theRange);
- // The returned rect is always based on the internal cursor.
- QWidget *widgetToGetKey = qt_mac_getTargetForKeyEvent(qwidget);
- if (!widgetToGetKey)
- return NSZeroRect;
-
- QRect mr(widgetToGetKey->inputMethodQuery(Qt::ImMicroFocus).toRect());
- QPoint mp(widgetToGetKey->mapToGlobal(QPoint(mr.bottomLeft())));
- NSRect rect ;
- rect.origin.x = mp.x();
- rect.origin.y = flipYCoordinate(mp.y());
- rect.size.width = mr.width();
- rect.size.height = mr.height();
- return rect;
-}
-
-- (NSUInteger)characterIndexForPoint:(NSPoint)thePoint
-{
- // We dont support cursor movements using mouse while composing.
- Q_UNUSED(thePoint);
- return NSNotFound;
-}
-
-- (NSArray*) validAttributesForMarkedText
-{
- QWidget *widgetToGetKey = qt_mac_getTargetForKeyEvent(qwidget);
- if (!widgetToGetKey)
- return nil;
-
- if (!widgetToGetKey->testAttribute(Qt::WA_InputMethodEnabled))
- return nil; // Not sure if that's correct, but it's saves a malloc.
-
- // Support only underline color/style.
- return [NSArray arrayWithObjects:NSUnderlineColorAttributeName,
- NSUnderlineStyleAttributeName, nil];
-}
-@end
-
-QT_BEGIN_NAMESPACE
-void QMacInputContext::reset()
-{
- QWidget *w = QInputContext::focusWidget();
- if (w) {
- NSView *view = qt_mac_effectiveview_for(w);
- if ([view isKindOfClass:[QT_MANGLE_NAMESPACE(QCocoaView) class]]) {
- QMacCocoaAutoReleasePool pool;
- QT_MANGLE_NAMESPACE(QCocoaView) *qc = static_cast<QT_MANGLE_NAMESPACE(QCocoaView) *>(view);
- NSInputManager *currentIManager = [NSInputManager currentInputManager];
- if (currentIManager) {
- [currentIManager markedTextAbandoned:view];
- [qc unmarkText];
- }
- }
- }
-}
-
-bool QMacInputContext::isComposing() const
-{
- QWidget *w = QInputContext::focusWidget();
- if (w) {
- NSView *view = qt_mac_effectiveview_for(w);
- if ([view isKindOfClass:[QT_MANGLE_NAMESPACE(QCocoaView) class]]) {
- return [static_cast<QT_MANGLE_NAMESPACE(QCocoaView) *>(view) isComposing];
- }
- }
- return false;
-}
-
-extern bool qt_mac_in_drag;
-void * /*NSImage */qt_mac_create_nsimage(const QPixmap &pm);
-static const int default_pm_hotx = -2;
-static const int default_pm_hoty = -16;
-static const char* default_pm[] = {
- "13 9 3 1",
- ". c None",
- " c #000000",
- "X c #FFFFFF",
- "X X X X X X X",
- " X X X X X X ",
- "X ......... X",
- " X.........X ",
- "X ......... X",
- " X.........X ",
- "X ......... X",
- " X X X X X X ",
- "X X X X X X X",
-};
-
-Qt::DropAction QDragManager::drag(QDrag *o)
-{
- if(qt_mac_in_drag) { //just make sure..
- qWarning("Qt: Internal error: WH0A, unexpected condition reached");
- return Qt::IgnoreAction;
- }
- if(object == o)
- return Qt::IgnoreAction;
- /* At the moment it seems clear that Mac OS X does not want to drag with a non-left button
- so we just bail early to prevent it */
- if(!(GetCurrentEventButtonState() & kEventMouseButtonPrimary))
- return Qt::IgnoreAction;
-
- if(object) {
- dragPrivate()->source->removeEventFilter(this);
- cancel();
- beingCancelled = false;
- }
-
- object = o;
- dragPrivate()->target = 0;
-
-#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::DragDropStart);
-#endif
-
- // setup the data
- QMacPasteboard dragBoard((CFStringRef) NSDragPboard, QMacPasteboardMime::MIME_DND);
- dragPrivate()->data->setData(QLatin1String("application/x-qt-mime-type-name"), QByteArray("dummy"));
- dragBoard.setMimeData(dragPrivate()->data);
-
- // create the image
- QPoint hotspot;
- QPixmap pix = dragPrivate()->pixmap;
- if(pix.isNull()) {
- if(dragPrivate()->data->hasText() || dragPrivate()->data->hasUrls()) {
- // get the string
- QString s = dragPrivate()->data->hasText() ? dragPrivate()->data->text()
- : dragPrivate()->data->urls().first().toString();
- if(s.length() > 26)
- s = s.left(23) + QChar(0x2026);
- if(!s.isEmpty()) {
- // draw it
- QFont f(qApp->font());
- f.setPointSize(12);
- QFontMetrics fm(f);
- QPixmap tmp(fm.width(s), fm.height());
- if(!tmp.isNull()) {
- QPainter p(&tmp);
- p.fillRect(0, 0, tmp.width(), tmp.height(), Qt::color0);
- p.setPen(Qt::color1);
- p.setFont(f);
- p.drawText(0, fm.ascent(), s);
- // save it
- pix = tmp;
- hotspot = QPoint(tmp.width() / 2, tmp.height() / 2);
- }
- }
- } else {
- pix = QPixmap(default_pm);
- hotspot = QPoint(default_pm_hotx, default_pm_hoty);
- }
- } else {
- hotspot = dragPrivate()->hotspot;
- }
-
- // Convert the image to NSImage:
- NSImage *image = (NSImage *)qt_mac_create_nsimage(pix);
- [image retain];
-
- DnDParams *dndParams = macCurrentDnDParameters();
- QT_MANGLE_NAMESPACE(QCocoaView) *theView = static_cast<QT_MANGLE_NAMESPACE(QCocoaView) *>(dndParams->view);
-
- // Save supported actions:
- [theView setSupportedActions: qt_mac_mapDropActions(dragPrivate()->possible_actions)];
- QPoint pointInView = [theView qt_qwidget]->mapFromGlobal(dndParams->globalPoint);
- NSPoint imageLoc = {pointInView.x() - hotspot.x(), pointInView.y() + pix.height() - hotspot.y()};
- NSSize mouseOffset = {0.0, 0.0};
- NSPasteboard *pboard = [NSPasteboard pasteboardWithName:NSDragPboard];
- dragPrivate()->executed_action = Qt::ActionMask;
-
- // Execute the drag:
- [theView retain];
- [theView dragImage:image
- at:imageLoc
- offset:mouseOffset
- event:dndParams->theEvent
- pasteboard:pboard
- source:theView
- slideBack:YES];
-
- // Reset the implicit grab widget when drag ends because we will not
- // receive the mouse release event when DND is active:
- qt_button_down = 0;
- [theView release];
- [image release];
- if (dragPrivate())
- dragPrivate()->executed_action = Qt::IgnoreAction;
- object = 0;
- Qt::DropAction performedAction(qt_mac_mapNSDragOperation(dndParams->performedAction));
-
- // Do post drag processing, if required.
- if (performedAction != Qt::IgnoreAction) {
- // Check if the receiver points us to a file location.
- // if so, we need to do the file copy/move ourselves.
- QCFType<CFURLRef> pasteLocation = 0;
- PasteboardCopyPasteLocation(dragBoard.pasteBoard(), &pasteLocation);
- if (pasteLocation) {
- QList<QUrl> urls = o->mimeData()->urls();
- for (int i = 0; i < urls.size(); ++i) {
- QUrl fromUrl = urls.at(i);
- QString filename = QFileInfo(fromUrl.path()).fileName();
- QUrl toUrl(QCFString::toQString(CFURLGetString(pasteLocation)) + filename);
- if (performedAction == Qt::MoveAction)
- QFile::rename(fromUrl.path(), toUrl.path());
- else if (performedAction == Qt::CopyAction)
- QFile::copy(fromUrl.path(), toUrl.path());
- }
- }
- }
-
- // Clean-up:
- o->setMimeData(0);
- o->deleteLater();
- return performedAction;
-}
-
-QT_END_NAMESPACE
-
diff --git a/src/widgets/platforms/mac/qcocoaview_mac_p.h b/src/widgets/platforms/mac/qcocoaview_mac_p.h
deleted file mode 100644
index e534e7ab47..0000000000
--- a/src/widgets/platforms/mac/qcocoaview_mac_p.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <qevent.h>
-#import <Cocoa/Cocoa.h>
-
-@class QT_MANGLE_NAMESPACE(QCocoaView);
-QT_FORWARD_DECLARE_CLASS(QWidgetPrivate);
-QT_FORWARD_DECLARE_CLASS(QWidget);
-QT_FORWARD_DECLARE_CLASS(QEvent);
-QT_FORWARD_DECLARE_CLASS(QString);
-QT_FORWARD_DECLARE_CLASS(QStringList);
-
-Q_WIDGETS_EXPORT
-@interface QT_MANGLE_NAMESPACE(QCocoaView) : NSControl <NSTextInput> {
- QWidget *qwidget;
- QWidgetPrivate *qwidgetprivate;
- NSDragOperation supportedActions;
- bool composing;
- int composingLength;
- bool sendKeyEvents;
- bool fromKeyDownEvent;
- QString *composingText;
- @public int alienTouchCount;
-}
-- (id)initWithQWidget:(QWidget *)widget widgetPrivate:(QWidgetPrivate *)widgetprivate;
-- (void) finishInitWithQWidget:(QWidget *)widget widgetPrivate:(QWidgetPrivate *)widgetprivate;
-- (void)frameDidChange:(NSNotification *)note;
-- (void)setSupportedActions:(NSDragOperation)actions;
-- (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)isLocal;
-- (void)draggedImage:(NSImage *)anImage endedAt:(NSPoint)aPoint operation:(NSDragOperation)operation;
-- (BOOL)isComposing;
-- (QWidget *)qt_qwidget;
-- (void) qt_clearQWidget;
-
-@end
diff --git a/src/widgets/platforms/mac/qcocoawindow_mac.mm b/src/widgets/platforms/mac/qcocoawindow_mac.mm
deleted file mode 100644
index 918e5a0a13..0000000000
--- a/src/widgets/platforms/mac/qcocoawindow_mac.mm
+++ /dev/null
@@ -1,88 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 "qmacdefines_mac.h"
-#import <private/qcocoawindow_mac_p.h>
-#import <private/qcocoawindowdelegate_mac_p.h>
-#import <private/qcocoaview_mac_p.h>
-#import <private/qt_cocoa_helpers_mac_p.h>
-#import <private/qcocoawindowcustomthemeframe_mac_p.h>
-#import <private/qcocoaapplication_mac_p.h>
-#import <private/qdnd_p.h>
-#import <private/qmultitouch_mac_p.h>
-
-#include <QtGui/QWidget>
-
-QT_FORWARD_DECLARE_CLASS(QWidget);
-QT_USE_NAMESPACE
-
-@implementation NSWindow (QT_MANGLE_NAMESPACE(QWidgetIntegration))
-
-- (id)QT_MANGLE_NAMESPACE(qt_initWithQWidget):(QWidget*)widget contentRect:(NSRect)rect styleMask:(NSUInteger)mask
-{
- self = [self initWithContentRect:rect styleMask:mask backing:NSBackingStoreBuffered defer:YES];
- if (self) {
- [[QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate] becomeDelegteForWindow:self widget:widget];
- [self setReleasedWhenClosed:NO];
- }
- return self;
-}
-
-- (QWidget *)QT_MANGLE_NAMESPACE(qt_qwidget)
-{
- QWidget *widget = 0;
- if ([self delegate] == [QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate])
- widget = [[QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate] qt_qwidgetForWindow:self];
- return widget;
-}
-
-@end
-
-@implementation QT_MANGLE_NAMESPACE(QCocoaWindow)
-
-/***********************************************************************
- Copy and Paste between QCocoaWindow and QCocoaPanel
- This is a bit unfortunate, but thanks to the dynamic dispatch we
- have to duplicate this code or resort to really silly forwarding methods
-**************************************************************************/
-#include "qcocoasharedwindowmethods_mac_p.h"
-
-@end
diff --git a/src/widgets/platforms/mac/qcocoawindow_mac_p.h b/src/widgets/platforms/mac/qcocoawindow_mac_p.h
deleted file mode 100644
index 83ecb7c13e..0000000000
--- a/src/widgets/platforms/mac/qcocoawindow_mac_p.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#ifndef QCOCOAWINDOW_MAC_P
-#define QCOCOAWINDOW_MAC_P
-
-#include "qmacdefines_mac.h"
-#import <Cocoa/Cocoa.h>
-#include <private/qapplication_p.h>
-#include <private/qbackingstore_p.h>
-
-enum { QtMacCustomizeWindow = 1 << 21 }; // This will one day be run over by
-
-QT_FORWARD_DECLARE_CLASS(QWidget);
-QT_FORWARD_DECLARE_CLASS(QStringList);
-QT_FORWARD_DECLARE_CLASS(QCocoaDropData);
-
-@interface NSWindow (QtCoverForHackWithCategory)
-+ (Class)frameViewClassForStyleMask:(NSUInteger)styleMask;
-@end
-
-@interface NSWindow (QT_MANGLE_NAMESPACE(QWidgetIntegration))
-- (id)QT_MANGLE_NAMESPACE(qt_initWithQWidget):(QWidget *)widget contentRect:(NSRect)rect styleMask:(NSUInteger)mask;
-- (QWidget *)QT_MANGLE_NAMESPACE(qt_qwidget);
-@end
-
-@interface NSWindow (QtIntegration)
-- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender;
-- (NSDragOperation)draggingUpdated:(id <NSDraggingInfo>)sender;
-- (void)draggingExited:(id <NSDraggingInfo>)sender;
-- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender;
-@end
-
-@interface QT_MANGLE_NAMESPACE(QCocoaWindow) : NSWindow {
- QStringList *currentCustomDragTypes;
- QCocoaDropData *dropData;
- NSInteger dragEnterSequence;
-}
-
-+ (Class)frameViewClassForStyleMask:(NSUInteger)styleMask;
-- (void)registerDragTypes;
-- (void)drawRectOriginal:(NSRect)rect;
-
-@end
-
-#endif
diff --git a/src/widgets/platforms/mac/qcocoawindowcustomthemeframe_mac.mm b/src/widgets/platforms/mac/qcocoawindowcustomthemeframe_mac.mm
deleted file mode 100644
index f1b38148be..0000000000
--- a/src/widgets/platforms/mac/qcocoawindowcustomthemeframe_mac.mm
+++ /dev/null
@@ -1,60 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 "qmacdefines_mac.h"
-
-
-#import "private/qcocoawindowcustomthemeframe_mac_p.h"
-#import "private/qcocoawindow_mac_p.h"
-#include "private/qt_cocoa_helpers_mac_p.h"
-#include "qwidget.h"
-
-@implementation QT_MANGLE_NAMESPACE(QCocoaWindowCustomThemeFrame)
-
-- (void)_updateButtons
-{
- [super _updateButtons];
- NSWindow *window = [self window];
- qt_syncCocoaTitleBarButtons(window, [window QT_MANGLE_NAMESPACE(qt_qwidget)]);
-}
-
-@end
-
diff --git a/src/widgets/platforms/mac/qcocoawindowcustomthemeframe_mac_p.h b/src/widgets/platforms/mac/qcocoawindowcustomthemeframe_mac_p.h
deleted file mode 100644
index cd497849a7..0000000000
--- a/src/widgets/platforms/mac/qcocoawindowcustomthemeframe_mac_p.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of qapplication_*.cpp, qwidget*.cpp, qcolor_x11.cpp, qfiledialog.cpp
-// and many other. This header file may change from version to version
-// without notice, or even be removed.
-//
-// We mean it.
-//
-#import <Cocoa/Cocoa.h>
-#include "qmacdefines_mac.h"
-#import "qnsthemeframe_mac_p.h"
-
-@interface QT_MANGLE_NAMESPACE(QCocoaWindowCustomThemeFrame) : NSThemeFrame
-{
-}
-
-@end
diff --git a/src/widgets/platforms/mac/qcocoawindowdelegate_mac.mm b/src/widgets/platforms/mac/qcocoawindowdelegate_mac.mm
deleted file mode 100644
index fc89821f41..0000000000
--- a/src/widgets/platforms/mac/qcocoawindowdelegate_mac.mm
+++ /dev/null
@@ -1,437 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-#import "private/qcocoawindowdelegate_mac_p.h"
-#include <private/qwidget_p.h>
-#include <private/qapplication_p.h>
-#include <private/qt_cocoa_helpers_mac_p.h>
-#include <qevent.h>
-#include <qlayout.h>
-#include <qcoreapplication.h>
-#include <qmenubar.h>
-#include <QMainWindow>
-#include <QToolBar>
-#include <private/qmainwindowlayout_p.h>
-
-QT_BEGIN_NAMESPACE
-extern QWidgetData *qt_qwidget_data(QWidget *); // qwidget.cpp
-extern void onApplicationWindowChangedActivation(QWidget *, bool); //qapplication_mac.mm
-extern bool qt_sendSpontaneousEvent(QObject *, QEvent *); // qapplication.cpp
-QT_END_NAMESPACE
-
-QT_USE_NAMESPACE
-
-static QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) *sharedCocoaWindowDelegate = nil;
-
-// This is a singleton, but unlike most Cocoa singletons, it lives in a library and could be
-// pontentially loaded and unloaded. This means we should at least attempt to do the
-// memory management correctly.
-
-static void cleanupCocoaWindowDelegate()
-{
- [sharedCocoaWindowDelegate release];
-}
-
-@implementation QT_MANGLE_NAMESPACE(QCocoaWindowDelegate)
-
-- (id)init
-{
- self = [super init];
- if (self != nil) {
- m_windowHash = new QHash<NSWindow *, QWidget *>();
- m_drawerHash = new QHash<NSDrawer *, QWidget *>();
- }
- return self;
-}
-
-- (void)dealloc
-{
- sharedCocoaWindowDelegate = nil;
- QHash<NSWindow *, QWidget *>::const_iterator windowIt = m_windowHash->constBegin();
- while (windowIt != m_windowHash->constEnd()) {
- [windowIt.key() setDelegate:nil];
- ++windowIt;
- }
- delete m_windowHash;
- QHash<NSDrawer *, QWidget *>::const_iterator drawerIt = m_drawerHash->constBegin();
- while (drawerIt != m_drawerHash->constEnd()) {
- [drawerIt.key() setDelegate:nil];
- ++drawerIt;
- }
- delete m_drawerHash;
- [super dealloc];
-}
-
-+ (id)allocWithZone:(NSZone *)zone
-{
- @synchronized(self) {
- if (sharedCocoaWindowDelegate == nil) {
- sharedCocoaWindowDelegate = [super allocWithZone:zone];
- return sharedCocoaWindowDelegate;
- qAddPostRoutine(cleanupCocoaWindowDelegate);
- }
- }
- return nil;
-}
-
-+ (QT_MANGLE_NAMESPACE(QCocoaWindowDelegate)*)sharedDelegate
-{
- @synchronized(self) {
- if (sharedCocoaWindowDelegate == nil)
- [[self alloc] init];
- }
- return [[sharedCocoaWindowDelegate retain] autorelease];
-}
-
--(void)syncSizeForWidget:(QWidget *)qwidget toSize:(const QSize &)newSize fromSize:(const QSize &)oldSize
-{
- qt_qwidget_data(qwidget)->crect.setSize(newSize);
- // ### static contents optimization needs to go here
- const OSViewRef view = qt_mac_nativeview_for(qwidget);
- [view setFrameSize:NSMakeSize(newSize.width(), newSize.height())];
- if (!qwidget->isVisible()) {
- qwidget->setAttribute(Qt::WA_PendingResizeEvent, true);
- } else {
- QResizeEvent qre(newSize, oldSize);
- if (qwidget->testAttribute(Qt::WA_PendingResizeEvent)) {
- qwidget->setAttribute(Qt::WA_PendingResizeEvent, false);
- QApplication::sendEvent(qwidget, &qre);
- } else {
- qt_sendSpontaneousEvent(qwidget, &qre);
- }
- }
-}
-
-- (void)dumpMaximizedStateforWidget:(QWidget*)qwidget window:(NSWindow *)window
-{
- if (!window)
- return; // Nothing to do.
- QWidgetData *widgetData = qt_qwidget_data(qwidget);
- if ((widgetData->window_state & Qt::WindowMaximized) && ![window isZoomed]) {
- widgetData->window_state &= ~Qt::WindowMaximized;
- QWindowStateChangeEvent e(Qt::WindowState(widgetData->window_state | Qt::WindowMaximized));
- qt_sendSpontaneousEvent(qwidget, &e);
- }
-}
-
-- (NSSize)closestAcceptableSizeForWidget:(QWidget *)qwidget window:(NSWindow *)window
- withNewSize:(NSSize)proposedSize
-{
- [self dumpMaximizedStateforWidget:qwidget window:window];
- QSize newSize = QLayout::closestAcceptableSize(qwidget,
- QSize(proposedSize.width, proposedSize.height));
- return [NSWindow frameRectForContentRect:
- NSMakeRect(0., 0., newSize.width(), newSize.height())
- styleMask:[window styleMask]].size;
-}
-
-- (NSSize)windowWillResize:(NSWindow *)windowToResize toSize:(NSSize)proposedFrameSize
-{
- QWidget *qwidget = m_windowHash->value(windowToResize);
- return [self closestAcceptableSizeForWidget:qwidget window:windowToResize
- withNewSize:[NSWindow contentRectForFrameRect:
- NSMakeRect(0, 0,
- proposedFrameSize.width,
- proposedFrameSize.height)
- styleMask:[windowToResize styleMask]].size];
-}
-
-- (NSSize)drawerWillResizeContents:(NSDrawer *)sender toSize:(NSSize)contentSize
-{
- QWidget *qwidget = m_drawerHash->value(sender);
- return [self closestAcceptableSizeForWidget:qwidget window:nil withNewSize:contentSize];
-}
-
--(void)windowDidMiniaturize:(NSNotification*)notification
-{
- QWidget *qwidget = m_windowHash->value([notification object]);
- if (!qwidget->isMinimized()) {
- QWidgetData *widgetData = qt_qwidget_data(qwidget);
- widgetData->window_state = widgetData->window_state | Qt::WindowMinimized;
- QWindowStateChangeEvent e(Qt::WindowStates(widgetData->window_state & ~Qt::WindowMinimized));
- qt_sendSpontaneousEvent(qwidget, &e);
- }
- // Send hide to match Qt on X11 and Windows
- QEvent e(QEvent::Hide);
- qt_sendSpontaneousEvent(qwidget, &e);
-}
-
-- (void)windowDidResize:(NSNotification *)notification
-{
- NSWindow *window = [notification object];
- QWidget *qwidget = m_windowHash->value(window);
- QWidgetData *widgetData = qt_qwidget_data(qwidget);
- if (!(qwidget->windowState() & (Qt::WindowMaximized | Qt::WindowFullScreen)) && [window isZoomed]) {
- widgetData->window_state = widgetData->window_state | Qt::WindowMaximized;
- QWindowStateChangeEvent e(Qt::WindowStates(widgetData->window_state
- & ~Qt::WindowMaximized));
- qt_sendSpontaneousEvent(qwidget, &e);
- } else {
- widgetData->window_state = widgetData->window_state & ~Qt::WindowMaximized;
- QWindowStateChangeEvent e(Qt::WindowStates(widgetData->window_state
- | Qt::WindowMaximized));
- qt_sendSpontaneousEvent(qwidget, &e);
- }
- NSRect rect = [[window contentView] frame];
- const QSize newSize(rect.size.width, rect.size.height);
- const QSize &oldSize = widgetData->crect.size();
- if (newSize != oldSize) {
- QWidgetPrivate::qt_mac_update_sizer(qwidget);
- [self syncSizeForWidget:qwidget toSize:newSize fromSize:oldSize];
- }
-
- // We force the repaint to be synchronized with the resize of the window.
- // Otherwise, the resize looks sluggish because we paint one event loop later.
- if ([[window contentView] inLiveResize]) {
- qwidget->repaint();
-
- // We need to repaint the toolbar as well.
- QMainWindow* mWindow = qobject_cast<QMainWindow*>(qwidget->window());
- if (mWindow) {
- QMainWindowLayout *mLayout = qobject_cast<QMainWindowLayout*>(mWindow->layout());
- QList<QToolBar *> toolbarList = mLayout->qtoolbarsInUnifiedToolbarList;
-
- for (int i = 0; i < toolbarList.size(); ++i) {
- QToolBar* toolbar = toolbarList.at(i);
- toolbar->repaint();
- }
- }
- }
-}
-
-- (void)windowDidMove:(NSNotification *)notification
-{
- // The code underneath needs to translate the window location
- // from bottom left (which is the origin used by Cocoa) to
- // upper left (which is the origin used by Qt):
- NSWindow *window = [notification object];
- NSRect newRect = [window frame];
- QWidget *qwidget = m_windowHash->value(window);
- QPoint qtPoint = flipPoint(NSMakePoint(newRect.origin.x,
- newRect.origin.y + newRect.size.height)).toPoint();
- const QRect &oldRect = qwidget->frameGeometry();
-
- if (qtPoint.x() != oldRect.x() || qtPoint.y() != oldRect.y()) {
- QWidgetData *widgetData = qt_qwidget_data(qwidget);
- QRect oldCRect = widgetData->crect;
- QWidgetPrivate *widgetPrivate = qt_widget_private(qwidget);
- const QRect &fStrut = widgetPrivate->frameStrut();
- widgetData->crect.moveTo(qtPoint.x() + fStrut.left(), qtPoint.y() + fStrut.top());
- if (!qwidget->isVisible()) {
- qwidget->setAttribute(Qt::WA_PendingMoveEvent, true);
- } else {
- QMoveEvent qme(qtPoint, oldRect.topLeft());
- qt_sendSpontaneousEvent(qwidget, &qme);
- }
- }
-}
-
--(BOOL)windowShouldClose:(id)windowThatWantsToClose
-{
- QWidget *qwidget = m_windowHash->value(windowThatWantsToClose);
- QScopedLoopLevelCounter counter(qt_widget_private(qwidget)->threadData);
- return qt_widget_private(qwidget)->close_helper(QWidgetPrivate::CloseWithSpontaneousEvent);
-}
-
--(void)windowDidDeminiaturize:(NSNotification *)notification
-{
- QWidget *qwidget = m_windowHash->value([notification object]);
- QWidgetData *widgetData = qt_qwidget_data(qwidget);
- Qt::WindowStates currState = Qt::WindowStates(widgetData->window_state);
- Qt::WindowStates newState = currState;
- if (currState & Qt::WindowMinimized)
- newState &= ~Qt::WindowMinimized;
- if (!(currState & Qt::WindowActive))
- newState |= Qt::WindowActive;
- if (newState != currState) {
- widgetData->window_state = newState;
- QWindowStateChangeEvent e(currState);
- qt_sendSpontaneousEvent(qwidget, &e);
- }
- QShowEvent qse;
- qt_sendSpontaneousEvent(qwidget, &qse);
-}
-
--(void)windowDidBecomeMain:(NSNotification*)notification
-{
- QWidget *qwidget = m_windowHash->value([notification object]);
- Q_ASSERT(qwidget);
- onApplicationWindowChangedActivation(qwidget, true);
-}
-
--(void)windowDidResignMain:(NSNotification*)notification
-{
- QWidget *qwidget = m_windowHash->value([notification object]);
- Q_ASSERT(qwidget);
- onApplicationWindowChangedActivation(qwidget, false);
-}
-
-// These are the same as main, but they are probably better to keep separate since there is a
-// tiny difference between main and key windows.
--(void)windowDidBecomeKey:(NSNotification*)notification
-{
- QWidget *qwidget = m_windowHash->value([notification object]);
- Q_ASSERT(qwidget);
- onApplicationWindowChangedActivation(qwidget, true);
-}
-
--(void)windowDidResignKey:(NSNotification*)notification
-{
- QWidget *qwidget = m_windowHash->value([notification object]);
- Q_ASSERT(qwidget);
- onApplicationWindowChangedActivation(qwidget, false);
-}
-
--(QWidget *)qt_qwidgetForWindow:(NSWindow *)window
-{
- return m_windowHash->value(window);
-}
-
-- (BOOL)windowShouldZoom:(NSWindow *)window toFrame:(NSRect)newFrame
-{
- Q_UNUSED(newFrame);
- // saving the current window geometry before the window is maximized
- QWidget *qwidget = m_windowHash->value(window);
- QWidgetPrivate *widgetPrivate = qt_widget_private(qwidget);
- if (qwidget->isWindow()) {
- if(qwidget->windowState() & Qt::WindowMaximized) {
- // Restoring
- widgetPrivate->topData()->wasMaximized = false;
- } else {
- // Maximizing
- widgetPrivate->topData()->normalGeometry = qwidget->geometry();
- // If the window was maximized we need to update the coordinates since now it will start at 0,0.
- // We do this in a special field that is only used when not restoring but manually resizing the window.
- // Since the coordinates are fixed we just set a boolean flag.
- widgetPrivate->topData()->wasMaximized = true;
- }
- }
- return YES;
-}
-
-- (NSRect)windowWillUseStandardFrame:(NSWindow *)window defaultFrame:(NSRect)defaultFrame
-{
- NSRect frameToReturn = defaultFrame;
- QWidget *qwidget = m_windowHash->value(window);
- QSizeF size = qwidget->maximumSize();
- NSRect windowFrameRect = [window frame];
- NSRect viewFrameRect = [[window contentView] frame];
- // consider additional size required for titlebar & frame
- frameToReturn.size.width = qMin<CGFloat>(frameToReturn.size.width,
- size.width()+(windowFrameRect.size.width - viewFrameRect.size.width));
- frameToReturn.size.height = qMin<CGFloat>(frameToReturn.size.height,
- size.height()+(windowFrameRect.size.height - viewFrameRect.size.height));
- return frameToReturn;
-}
-
-- (void)becomeDelegteForWindow:(NSWindow *)window widget:(QWidget *)widget
-{
- m_windowHash->insert(window, widget);
- [window setDelegate:self];
-}
-
-- (void)resignDelegateForWindow:(NSWindow *)window
-{
- [window setDelegate:nil];
- m_windowHash->remove(window);
-}
-
-- (void)becomeDelegateForDrawer:(NSDrawer *)drawer widget:(QWidget *)widget
-{
- m_drawerHash->insert(drawer, widget);
- [drawer setDelegate:self];
- NSWindow *window = [[drawer contentView] window];
- [self becomeDelegteForWindow:window widget:widget];
-}
-
-- (void)resignDelegateForDrawer:(NSDrawer *)drawer
-{
- QWidget *widget = m_drawerHash->value(drawer);
- [drawer setDelegate:nil];
- if (widget)
- [self resignDelegateForWindow:[[drawer contentView] window]];
- m_drawerHash->remove(drawer);
-}
-
-- (BOOL)window:(NSWindow *)window shouldPopUpDocumentPathMenu:(NSMenu *)menu
-{
- Q_UNUSED(menu);
- QWidget *qwidget = m_windowHash->value(window);
- if (qwidget && !qwidget->windowFilePath().isEmpty()) {
- return YES;
- }
- return NO;
-}
-
-- (BOOL)window:(NSWindow *)window shouldDragDocumentWithEvent:(NSEvent *)event
- from:(NSPoint)dragImageLocation
- withPasteboard:(NSPasteboard *)pasteboard
-{
- Q_UNUSED(event);
- Q_UNUSED(dragImageLocation);
- Q_UNUSED(pasteboard);
- QWidget *qwidget = m_windowHash->value(window);
- if (qwidget && !qwidget->windowFilePath().isEmpty()) {
- return YES;
- }
- return NO;
-}
-
-- (void)syncContentViewFrame: (NSNotification *)notification
-{
- NSView *cView = [notification object];
- if (cView) {
- NSWindow *window = [cView window];
- QWidget *qwidget = m_windowHash->value(window);
- if (qwidget) {
- QWidgetData *widgetData = qt_qwidget_data(qwidget);
- NSRect rect = [cView frame];
- const QSize newSize(rect.size.width, rect.size.height);
- const QSize &oldSize = widgetData->crect.size();
- if (newSize != oldSize) {
- [self syncSizeForWidget:qwidget toSize:newSize fromSize:oldSize];
- }
- }
-
- }
-}
-
-@end
diff --git a/src/widgets/platforms/mac/qcocoawindowdelegate_mac_p.h b/src/widgets/platforms/mac/qcocoawindowdelegate_mac_p.h
deleted file mode 100644
index 27906e116c..0000000000
--- a/src/widgets/platforms/mac/qcocoawindowdelegate_mac_p.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qmacdefines_mac.h"
-
-#import <Cocoa/Cocoa.h>
-
-QT_BEGIN_NAMESPACE
-template <class Key, class T> class QHash;
-QT_END_NAMESPACE
-using QT_PREPEND_NAMESPACE(QHash);
-QT_FORWARD_DECLARE_CLASS(QWidget)
-QT_FORWARD_DECLARE_CLASS(QSize)
-QT_FORWARD_DECLARE_CLASS(QWidgetData)
-
-#if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_5
-@protocol NSWindowDelegate <NSObject>
-- (NSSize)windowWillResize:(NSWindow *)window toSize:(NSSize)proposedFrameSize;
-- (void)windowDidMiniaturize:(NSNotification*)notification;
-- (void)windowDidResize:(NSNotification *)notification;
-- (NSRect)windowWillUseStandardFrame:(NSWindow *)window defaultFrame:(NSRect)defaultFrame;
-- (void)windowDidMove:(NSNotification *)notification;
-- (BOOL)windowShouldClose:(id)window;
-- (void)windowDidDeminiaturize:(NSNotification *)notification;
-- (void)windowDidBecomeMain:(NSNotification*)notification;
-- (void)windowDidResignMain:(NSNotification*)notification;
-- (void)windowDidBecomeKey:(NSNotification*)notification;
-- (void)windowDidResignKey:(NSNotification*)notification;
-- (BOOL)window:(NSWindow *)window shouldPopUpDocumentPathMenu:(NSMenu *)menu;
-- (BOOL)window:(NSWindow *)window shouldDragDocumentWithEvent:(NSEvent *)event from:(NSPoint)dragImageLocation withPasteboard:(NSPasteboard *)pasteboard;
-- (BOOL)windowShouldZoom:(NSWindow *)window toFrame:(NSRect)newFrame;
-@end
-
-@protocol NSDrawerDelegate <NSObject>
-- (NSSize)drawerWillResizeContents:(NSDrawer *)sender toSize:(NSSize)contentSize;
-@end
-
-#endif
-
-
-
-@interface QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) : NSObject<NSWindowDelegate, NSDrawerDelegate> {
- QHash<NSWindow *, QWidget *> *m_windowHash;
- QHash<NSDrawer *, QWidget *> *m_drawerHash;
-}
-+ (QT_MANGLE_NAMESPACE(QCocoaWindowDelegate)*)sharedDelegate;
-- (void)becomeDelegteForWindow:(NSWindow *)window widget:(QWidget *)widget;
-- (void)resignDelegateForWindow:(NSWindow *)window;
-- (void)becomeDelegateForDrawer:(NSDrawer *)drawer widget:(QWidget *)widget;
-- (void)resignDelegateForDrawer:(NSDrawer *)drawer;
-- (void)dumpMaximizedStateforWidget:(QWidget*)qwidget window:(NSWindow *)window;
-- (void)syncSizeForWidget:(QWidget *)qwidget
- toSize:(const QSize &)newSize
- fromSize:(const QSize &)oldSize;
-- (NSSize)closestAcceptableSizeForWidget:(QWidget *)qwidget
- window:(NSWindow *)window withNewSize:(NSSize)proposedSize;
-- (QWidget *)qt_qwidgetForWindow:(NSWindow *)window;
-- (void)syncContentViewFrame: (NSNotification *)notification;
-@end
diff --git a/src/widgets/platforms/mac/qcolormap_mac.cpp b/src/widgets/platforms/mac/qcolormap_mac.cpp
deleted file mode 100644
index de920d7144..0000000000
--- a/src/widgets/platforms/mac/qcolormap_mac.cpp
+++ /dev/null
@@ -1,111 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 "qcolormap.h"
-#include "qcolor.h"
-
-QT_BEGIN_NAMESPACE
-
-class QColormapPrivate
-{
-public:
- inline QColormapPrivate()
- : ref(1)
- { }
-
- QAtomicInt ref;
-};
-static QColormap *qt_mac_global_map = 0;
-
-void QColormap::initialize()
-{
- qt_mac_global_map = new QColormap;
-}
-
-void QColormap::cleanup()
-{
- delete qt_mac_global_map;
- qt_mac_global_map = 0;
-}
-
-QColormap QColormap::instance(int)
-{
- return *qt_mac_global_map;
-}
-
-QColormap::QColormap() : d(new QColormapPrivate)
-{}
-
-QColormap::QColormap(const QColormap &colormap) :d (colormap.d)
-{ d->ref.ref(); }
-
-QColormap::~QColormap()
-{
- if (!d->ref.deref())
- delete d;
-}
-
-QColormap::Mode QColormap::mode() const
-{ return QColormap::Direct; }
-
-int QColormap::depth() const
-{
- return 32;
-}
-
-int QColormap::size() const
-{
- return -1;
-}
-
-uint QColormap::pixel(const QColor &color) const
-{ return color.rgba(); }
-
-const QColor QColormap::colorAt(uint pixel) const
-{ return QColor(pixel); }
-
-const QVector<QColor> QColormap::colormap() const
-{ return QVector<QColor>(); }
-
-QColormap &QColormap::operator=(const QColormap &colormap)
-{ qAtomicAssign(d, colormap.d); return *this; }
-
-QT_END_NAMESPACE
diff --git a/src/widgets/platforms/mac/qdesktopwidget_mac.mm b/src/widgets/platforms/mac/qdesktopwidget_mac.mm
deleted file mode 100644
index 9869eeeab2..0000000000
--- a/src/widgets/platforms/mac/qdesktopwidget_mac.mm
+++ /dev/null
@@ -1,257 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Copyright (c) 2007-2008, Apple, Inc.
-**
-** All rights reserved.
-**
-** Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are met:
-**
-** * Redistributions of source code must retain the above copyright notice,
-** this list of conditions and the following disclaimer.
-**
-** * Redistributions in binary form must reproduce the above copyright notice,
-** this list of conditions and the following disclaimer in the documentation
-** and/or other materials provided with the distribution.
-**
-** * Neither the name of Apple, Inc. nor the names of its contributors
-** may be used to endorse or promote products derived from this software
-** without specific prior written permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-****************************************************************************/
-
-#import <Cocoa/Cocoa.h>
-
-#include "qapplication.h"
-#include "qdesktopwidget.h"
-#include <private/qt_mac_p.h>
-#include "qwidget_p.h"
-#include <private/qt_cocoa_helpers_mac_p.h>
-#include <private/qdesktopwidget_mac_p.h>
-
-QT_BEGIN_NAMESPACE
-
-QT_USE_NAMESPACE
-
-/*****************************************************************************
- Externals
- *****************************************************************************/
-
-/*****************************************************************************
- QDesktopWidget member functions
- *****************************************************************************/
-
-Q_GLOBAL_STATIC(QDesktopWidgetImplementation, qdesktopWidgetImplementation)
-
-QDesktopWidgetImplementation::QDesktopWidgetImplementation()
- : appScreen(0)
-{
- onResize();
-}
-
-QDesktopWidgetImplementation::~QDesktopWidgetImplementation()
-{
-}
-
-QDesktopWidgetImplementation *QDesktopWidgetImplementation::instance()
-{
- return qdesktopWidgetImplementation();
-}
-
-QRect QDesktopWidgetImplementation::availableRect(int screenIndex) const
-{
- if (screenIndex < 0 || screenIndex >= screenCount)
- screenIndex = appScreen;
-
- return availableRects[screenIndex].toRect();
-}
-
-QRect QDesktopWidgetImplementation::screenRect(int screenIndex) const
-{
- if (screenIndex < 0 || screenIndex >= screenCount)
- screenIndex = appScreen;
-
- return screenRects[screenIndex].toRect();
-}
-
-void QDesktopWidgetImplementation::onResize()
-{
- QMacCocoaAutoReleasePool pool;
- NSArray *displays = [NSScreen screens];
- screenCount = [displays count];
-
- screenRects.clear();
- availableRects.clear();
- NSRect primaryRect = [[displays objectAtIndex:0] frame];
- for (int i = 0; i<screenCount; i++) {
- NSRect r = [[displays objectAtIndex:i] frame];
- int flippedY = - r.origin.y + // account for position offset and
- primaryRect.size.height - r.size.height; // height difference.
- screenRects.append(QRectF(r.origin.x, flippedY,
- r.size.width, r.size.height));
-
- r = [[displays objectAtIndex:i] visibleFrame];
- flippedY = - r.origin.y + // account for position offset and
- primaryRect.size.height - r.size.height; // height difference.
- availableRects.append(QRectF(r.origin.x, flippedY,
- r.size.width, r.size.height));
- }
-}
-
-
-
-QDesktopWidget::QDesktopWidget()
- : QWidget(0, Qt::Desktop)
-{
- setObjectName(QLatin1String("desktop"));
- setAttribute(Qt::WA_WState_Visible);
-}
-
-QDesktopWidget::~QDesktopWidget()
-{
-}
-
-bool QDesktopWidget::isVirtualDesktop() const
-{
- return true;
-}
-
-int QDesktopWidget::primaryScreen() const
-{
- return qdesktopWidgetImplementation()->appScreen;
-}
-
-int QDesktopWidget::numScreens() const
-{
- return qdesktopWidgetImplementation()->screenCount;
-}
-
-QWidget *QDesktopWidget::screen(int)
-{
- return this;
-}
-
-const QRect QDesktopWidget::availableGeometry(int screen) const
-{
- return qdesktopWidgetImplementation()->availableRect(screen);
-}
-
-const QRect QDesktopWidget::screenGeometry(int screen) const
-{
- return qdesktopWidgetImplementation()->screenRect(screen);
-}
-
-int QDesktopWidget::screenNumber(const QWidget *widget) const
-{
- QDesktopWidgetImplementation *d = qdesktopWidgetImplementation();
- if (!widget)
- return d->appScreen;
- QRect frame = widget->frameGeometry();
- if (!widget->isWindow())
- frame.moveTopLeft(widget->mapToGlobal(QPoint(0,0)));
- int maxSize = -1, maxScreen = -1;
- for (int i = 0; i < d->screenCount; ++i) {
- QRect rr = d->screenRect(i);
- QRect sect = rr.intersected(frame);
- int size = sect.width() * sect.height();
- if (size > maxSize && sect.width() > 0 && sect.height() > 0) {
- maxSize = size;
- maxScreen = i;
- }
- }
- return maxScreen;
-}
-
-int QDesktopWidget::screenNumber(const QPoint &point) const
-{
- QDesktopWidgetImplementation *d = qdesktopWidgetImplementation();
- int closestScreen = -1;
- int shortestDistance = INT_MAX;
- for (int i = 0; i < d->screenCount; ++i) {
- QRect rr = d->screenRect(i);
- int thisDistance = QWidgetPrivate::pointToRect(point, rr);
- if (thisDistance < shortestDistance) {
- shortestDistance = thisDistance;
- closestScreen = i;
- }
- }
- return closestScreen;
-}
-
-void QDesktopWidget::resizeEvent(QResizeEvent *)
-{
- QDesktopWidgetImplementation *d = qdesktopWidgetImplementation();
-
- const int oldScreenCount = d->screenCount;
- const QVector<QRectF> oldRects(d->screenRects);
- const QVector<QRectF> oldWorks(d->availableRects);
-
- d->onResize();
-
- for (int i = 0; i < qMin(oldScreenCount, d->screenCount); ++i) {
- if (oldRects.at(i) != d->screenRects.at(i))
- emit resized(i);
- }
- for (int i = 0; i < qMin(oldScreenCount, d->screenCount); ++i) {
- if (oldWorks.at(i) != d->availableRects.at(i))
- emit workAreaResized(i);
- }
-
- if (oldScreenCount != d->screenCount)
- emit screenCountChanged(d->screenCount);
-}
-
-QT_END_NAMESPACE
diff --git a/src/widgets/platforms/mac/qdesktopwidget_mac_p.h b/src/widgets/platforms/mac/qdesktopwidget_mac_p.h
deleted file mode 100644
index a2d7552120..0000000000
--- a/src/widgets/platforms/mac/qdesktopwidget_mac_p.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <qrect.h>
-
-QT_BEGIN_NAMESPACE
-
-class QDesktopWidgetImplementation
-{
-public:
- QDesktopWidgetImplementation();
- ~QDesktopWidgetImplementation();
- static QDesktopWidgetImplementation *instance();
-
- int appScreen;
- int screenCount;
-
- QVector<QRectF> availableRects;
- QVector<QRectF> screenRects;
-
- QRect availableRect(int screenIndex) const;
- QRect screenRect(int screenIndex) const;
- void onResize();
-};
-
-QT_END_NAMESPACE
diff --git a/src/widgets/platforms/mac/qdnd_mac.mm b/src/widgets/platforms/mac/qdnd_mac.mm
deleted file mode 100644
index b5543024c0..0000000000
--- a/src/widgets/platforms/mac/qdnd_mac.mm
+++ /dev/null
@@ -1,261 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 "qapplication.h"
-#ifndef QT_NO_DRAGANDDROP
-#include "qbitmap.h"
-#include "qcursor.h"
-#include "qevent.h"
-#include "qpainter.h"
-#include "qurl.h"
-#include "qwidget.h"
-#include "qfile.h"
-#include "qfileinfo.h"
-#include <stdlib.h>
-#include <string.h>
-#ifndef QT_NO_ACCESSIBILITY
-# include "qaccessible.h"
-#endif
-
-#include <private/qapplication_p.h>
-#include <private/qwidget_p.h>
-#include <private/qdnd_p.h>
-#include <private/qt_mac_p.h>
-
-QT_BEGIN_NAMESPACE
-
-QT_USE_NAMESPACE
-
-QMacDndAnswerRecord qt_mac_dnd_answer_rec;
-
-/*****************************************************************************
- QDnD debug facilities
- *****************************************************************************/
-//#define DEBUG_DRAG_EVENTS
-//#define DEBUG_DRAG_PROMISES
-
-/*****************************************************************************
- QDnD globals
- *****************************************************************************/
-bool qt_mac_in_drag = false;
-
-/*****************************************************************************
- Externals
- *****************************************************************************/
-extern void qt_mac_send_modifiers_changed(quint32, QObject *); //qapplication_mac.cpp
-extern uint qGlobalPostedEventsCount(); //qapplication.cpp
-extern RgnHandle qt_mac_get_rgn(); // qregion_mac.cpp
-extern void qt_mac_dispose_rgn(RgnHandle); // qregion_mac.cpp
-/*****************************************************************************
- QDnD utility functions
- *****************************************************************************/
-
-//action management
-#ifdef DEBUG_DRAG_EVENTS
-# define MAP_MAC_ENUM(x) x, #x
-#else
-# define MAP_MAC_ENUM(x) x
-#endif
-struct mac_enum_mapper
-{
- int mac_code;
- int qt_code;
-#ifdef DEBUG_DRAG_EVENTS
- char *qt_desc;
-#endif
-};
-
-/*****************************************************************************
- DnD functions
- *****************************************************************************/
-bool QDropData::hasFormat_sys(const QString &mime) const
-{
- Q_UNUSED(mime);
- return false;
-}
-
-QVariant QDropData::retrieveData_sys(const QString &mime, QVariant::Type type) const
-{
- Q_UNUSED(mime);
- Q_UNUSED(type);
- return QVariant();
-}
-
-QStringList QDropData::formats_sys() const
-{
- return QStringList();
-}
-
-void QDragManager::timerEvent(QTimerEvent*)
-{
-}
-
-bool QDragManager::eventFilter(QObject *, QEvent *)
-{
- return false;
-}
-
-void QDragManager::updateCursor()
-{
-}
-
-void QDragManager::cancel(bool)
-{
- if(object) {
- beingCancelled = true;
- object = 0;
- }
-#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::DragDropEnd);
-#endif
-}
-
-void QDragManager::move(const QPoint &)
-{
-}
-
-void QDragManager::drop()
-{
-}
-
-/**
- If a drop action is already set on the carbon event
- (from e.g. an earlier enter event), we insert the same
- action on the new Qt event that has yet to be sendt.
-*/
-static inline bool qt_mac_set_existing_drop_action(const DragRef &dragRef, QDropEvent &event)
-{
- Q_UNUSED(dragRef);
- Q_UNUSED(event);
- return false;
-}
-
-/**
- If an answer rect has been set on the event (after being sent
- to the global event processor), we store that rect so we can
- check if the mouse is in the same area upon next drag move event.
-*/
-void qt_mac_copy_answer_rect(const QDragMoveEvent &event)
-{
- if (!event.answerRect().isEmpty()) {
- qt_mac_dnd_answer_rec.rect = event.answerRect();
- qt_mac_dnd_answer_rec.buttons = event.mouseButtons();
- qt_mac_dnd_answer_rec.modifiers = event.keyboardModifiers();
- qt_mac_dnd_answer_rec.lastAction = event.dropAction();
- }
-}
-
-bool qt_mac_mouse_inside_answer_rect(QPoint mouse)
-{
- if (!qt_mac_dnd_answer_rec.rect.isEmpty()
- && qt_mac_dnd_answer_rec.rect.contains(mouse)
- && QApplication::mouseButtons() == qt_mac_dnd_answer_rec.buttons
- && QApplication::keyboardModifiers() == qt_mac_dnd_answer_rec.modifiers)
- return true;
- else
- return false;
-}
-
-bool QWidgetPrivate::qt_mac_dnd_event(uint kind, DragRef dragRef)
-{
- Q_UNUSED(kind);
- Q_UNUSED(dragRef);
- return false;
-}
-
-void QDragManager::updatePixmap()
-{
-}
-
-QCocoaDropData::QCocoaDropData(CFStringRef pasteboard)
- : QInternalMimeData()
-{
- NSString* pasteboardName = (NSString*)pasteboard;
- [pasteboardName retain];
- dropPasteboard = pasteboard;
-}
-
-QCocoaDropData::~QCocoaDropData()
-{
- NSString* pasteboardName = (NSString*)dropPasteboard;
- [pasteboardName release];
-}
-
-QStringList QCocoaDropData::formats_sys() const
-{
- QStringList formats;
- OSPasteboardRef board;
- if (PasteboardCreate(dropPasteboard, &board) != noErr) {
- qDebug("DnD: Cannot get PasteBoard!");
- return formats;
- }
- formats = QMacPasteboard(board, QMacPasteboardMime::MIME_DND).formats();
- return formats;
-}
-
-QVariant QCocoaDropData::retrieveData_sys(const QString &mimeType, QVariant::Type type) const
-{
- QVariant data;
- OSPasteboardRef board;
- if (PasteboardCreate(dropPasteboard, &board) != noErr) {
- qDebug("DnD: Cannot get PasteBoard!");
- return data;
- }
- data = QMacPasteboard(board, QMacPasteboardMime::MIME_DND).retrieveData(mimeType, type);
- CFRelease(board);
- return data;
-}
-
-bool QCocoaDropData::hasFormat_sys(const QString &mimeType) const
-{
- bool has = false;
- OSPasteboardRef board;
- if (PasteboardCreate(dropPasteboard, &board) != noErr) {
- qDebug("DnD: Cannot get PasteBoard!");
- return has;
- }
- has = QMacPasteboard(board, QMacPasteboardMime::MIME_DND).hasFormat(mimeType);
- CFRelease(board);
- return has;
-}
-
-#endif // QT_NO_DRAGANDDROP
-QT_END_NAMESPACE
diff --git a/src/widgets/platforms/mac/qeventdispatcher_mac.mm b/src/widgets/platforms/mac/qeventdispatcher_mac.mm
deleted file mode 100644
index 0056ebeca8..0000000000
--- a/src/widgets/platforms/mac/qeventdispatcher_mac.mm
+++ /dev/null
@@ -1,1127 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Copyright (c) 2007-2008, Apple, Inc.
-**
-** All rights reserved.
-**
-** Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are met:
-**
-** * Redistributions of source code must retain the above copyright notice,
-** this list of conditions and the following disclaimer.
-**
-** * Redistributions in binary form must reproduce the above copyright notice,
-** this list of conditions and the following disclaimer in the documentation
-** and/or other materials provided with the distribution.
-**
-** * Neither the name of Apple, Inc. nor the names of its contributors
-** may be used to endorse or promote products derived from this software
-** without specific prior written permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-****************************************************************************/
-
-#include "qplatformdefs.h"
-#include "private/qt_mac_p.h"
-#include "qeventdispatcher_mac_p.h"
-#include "qapplication.h"
-#include "qevent.h"
-#include "qdialog.h"
-#include "qhash.h"
-#include "qsocketnotifier.h"
-#include "private/qwidget_p.h"
-#include "private/qthread_p.h"
-#include "private/qapplication_p.h"
-
-#include <private/qcocoaapplication_mac_p.h>
-#include "private/qt_cocoa_helpers_mac_p.h"
-
-#ifndef QT_NO_THREAD
-# include "qmutex.h"
-#endif
-
-QT_BEGIN_NAMESPACE
-
-QT_USE_NAMESPACE
-
-/*****************************************************************************
- Externals
- *****************************************************************************/
-extern void qt_event_request_timer(MacTimerInfo *); //qapplication_mac.cpp
-extern MacTimerInfo *qt_event_get_timer(EventRef); //qapplication_mac.cpp
-extern void qt_event_request_select(QEventDispatcherMac *); //qapplication_mac.cpp
-extern void qt_event_request_updates(); //qapplication_mac.cpp
-extern OSWindowRef qt_mac_window_for(const QWidget *); //qwidget_mac.cpp
-extern bool qt_is_gui_used; //qapplication.cpp
-extern bool qt_sendSpontaneousEvent(QObject*, QEvent*); // qapplication.cpp
-extern bool qt_mac_is_macsheet(const QWidget *); //qwidget_mac.cpp
-
-static inline CFRunLoopRef mainRunLoop()
-{
- return CFRunLoopGetMain();
-}
-
-/*****************************************************************************
- Timers stuff
- *****************************************************************************/
-
-/* timer call back */
-void QEventDispatcherMacPrivate::activateTimer(CFRunLoopTimerRef, void *info)
-{
- int timerID =
-#ifdef Q_OS_MAC64
- qint64(info);
-#else
- int(info);
-#endif
-
- MacTimerInfo *tmr;
- tmr = macTimerHash.value(timerID);
- if (tmr == 0 || tmr->pending == true)
- return; // Can't send another timer event if it's pending.
-
-
- if (blockSendPostedEvents) {
- QCoreApplication::postEvent(tmr->obj, new QTimerEvent(tmr->id));
- } else {
- tmr->pending = true;
- QTimerEvent e(tmr->id);
- qt_sendSpontaneousEvent(tmr->obj, &e);
- // Get the value again in case the timer gets unregistered during the sendEvent.
- tmr = macTimerHash.value(timerID);
- if (tmr != 0)
- tmr->pending = false;
- }
-
-}
-
-void QEventDispatcherMac::registerTimer(int timerId, int interval, QObject *obj)
-{
-#ifndef QT_NO_DEBUG
- if (timerId < 1 || interval < 0 || !obj) {
- qWarning("QEventDispatcherMac::registerTimer: invalid arguments");
- return;
- } else if (obj->thread() != thread() || thread() != QThread::currentThread()) {
- qWarning("QObject::startTimer: timers cannot be started from another thread");
- return;
- }
-#endif
-
- MacTimerInfo *t = new MacTimerInfo();
- t->id = timerId;
- t->interval = interval;
- t->obj = obj;
- t->runLoopTimer = 0;
- t->pending = false;
-
- CFAbsoluteTime fireDate = CFAbsoluteTimeGetCurrent();
- CFTimeInterval cfinterval = qMax(CFTimeInterval(interval) / 1000, 0.0000001);
- fireDate += cfinterval;
- QEventDispatcherMacPrivate::macTimerHash.insert(timerId, t);
- CFRunLoopTimerContext info = { 0, (void *)timerId, 0, 0, 0 };
- t->runLoopTimer = CFRunLoopTimerCreate(0, fireDate, cfinterval, 0, 0,
- QEventDispatcherMacPrivate::activateTimer, &info);
- if (t->runLoopTimer == 0) {
- qFatal("QEventDispatcherMac::registerTimer: Cannot create timer");
- }
- CFRunLoopAddTimer(mainRunLoop(), t->runLoopTimer, kCFRunLoopCommonModes);
-}
-
-bool QEventDispatcherMac::unregisterTimer(int identifier)
-{
-#ifndef QT_NO_DEBUG
- if (identifier < 1) {
- qWarning("QEventDispatcherMac::unregisterTimer: invalid argument");
- return false;
- } else if (thread() != QThread::currentThread()) {
- qWarning("QObject::killTimer: timers cannot be stopped from another thread");
- return false;
- }
-#endif
- if (identifier <= 0)
- return false; // not init'd or invalid timer
-
- MacTimerInfo *timerInfo = QEventDispatcherMacPrivate::macTimerHash.take(identifier);
- if (timerInfo == 0)
- return false;
-
- if (!QObjectPrivate::get(timerInfo->obj)->inThreadChangeEvent)
- QAbstractEventDispatcherPrivate::releaseTimerId(identifier);
- CFRunLoopTimerInvalidate(timerInfo->runLoopTimer);
- CFRelease(timerInfo->runLoopTimer);
- delete timerInfo;
-
- return true;
-}
-
-bool QEventDispatcherMac::unregisterTimers(QObject *obj)
-{
-#ifndef QT_NO_DEBUG
- if (!obj) {
- qWarning("QEventDispatcherMac::unregisterTimers: invalid argument");
- return false;
- } else if (obj->thread() != thread() || thread() != QThread::currentThread()) {
- qWarning("QObject::killTimers: timers cannot be stopped from another thread");
- return false;
- }
-#endif
-
- MacTimerHash::iterator it = QEventDispatcherMacPrivate::macTimerHash.begin();
- while (it != QEventDispatcherMacPrivate::macTimerHash.end()) {
- MacTimerInfo *timerInfo = it.value();
- if (timerInfo->obj != obj) {
- ++it;
- } else {
- if (!QObjectPrivate::get(timerInfo->obj)->inThreadChangeEvent)
- QAbstractEventDispatcherPrivate::releaseTimerId(timerInfo->id);
- CFRunLoopTimerInvalidate(timerInfo->runLoopTimer);
- CFRelease(timerInfo->runLoopTimer);
- delete timerInfo;
- it = QEventDispatcherMacPrivate::macTimerHash.erase(it);
- }
- }
- return true;
-}
-
-QList<QEventDispatcherMac::TimerInfo>
-QEventDispatcherMac::registeredTimers(QObject *object) const
-{
- if (!object) {
- qWarning("QEventDispatcherMac:registeredTimers: invalid argument");
- return QList<TimerInfo>();
- }
-
- QList<TimerInfo> list;
-
- MacTimerHash::const_iterator it = QEventDispatcherMacPrivate::macTimerHash.constBegin();
- while (it != QEventDispatcherMacPrivate::macTimerHash.constEnd()) {
- MacTimerInfo *t = it.value();
- if (t->obj == object)
- list << TimerInfo(t->id, t->interval);
- ++it;
- }
- return list;
-}
-
-/**************************************************************************
- Socket Notifiers
- *************************************************************************/
-void qt_mac_socket_callback(CFSocketRef s, CFSocketCallBackType callbackType, CFDataRef,
- const void *, void *info) {
- QEventDispatcherMacPrivate *const eventDispatcher
- = static_cast<QEventDispatcherMacPrivate *>(info);
- int nativeSocket = CFSocketGetNative(s);
- MacSocketInfo *socketInfo = eventDispatcher->macSockets.value(nativeSocket);
- QEvent notifierEvent(QEvent::SockAct);
-
- // There is a race condition that happen where we disable the notifier and
- // the kernel still has a notification to pass on. We then get this
- // notification after we've successfully disabled the CFSocket, but our Qt
- // notifier is now gone. The upshot is we have to check the notifier
- // everytime.
- if (callbackType == kCFSocketReadCallBack) {
- if (socketInfo->readNotifier)
- QApplication::sendEvent(socketInfo->readNotifier, &notifierEvent);
- } else if (callbackType == kCFSocketWriteCallBack) {
- if (socketInfo->writeNotifier)
- QApplication::sendEvent(socketInfo->writeNotifier, &notifierEvent);
- }
-}
-
-/*
- Adds a loop source for the given socket to the current run loop.
-*/
-CFRunLoopSourceRef qt_mac_add_socket_to_runloop(const CFSocketRef socket)
-{
- CFRunLoopSourceRef loopSource = CFSocketCreateRunLoopSource(kCFAllocatorDefault, socket, 0);
- if (!loopSource)
- return 0;
-
- CFRunLoopAddSource(mainRunLoop(), loopSource, kCFRunLoopCommonModes);
- return loopSource;
-}
-
-/*
- Removes the loop source for the given socket from the current run loop.
-*/
-void qt_mac_remove_socket_from_runloop(const CFSocketRef socket, CFRunLoopSourceRef runloop)
-{
- Q_ASSERT(runloop);
- CFRunLoopRemoveSource(mainRunLoop(), runloop, kCFRunLoopCommonModes);
- CFSocketDisableCallBacks(socket, kCFSocketReadCallBack);
- CFSocketDisableCallBacks(socket, kCFSocketWriteCallBack);
- CFRunLoopSourceInvalidate(runloop);
-}
-
-/*
- Register a QSocketNotifier with the mac event system by creating a CFSocket with
- with a read/write callback.
-
- Qt has separate socket notifiers for reading and writing, but on the mac there is
- a limitation of one CFSocket object for each native socket.
-*/
-void QEventDispatcherMac::registerSocketNotifier(QSocketNotifier *notifier)
-{
- Q_ASSERT(notifier);
- int nativeSocket = notifier->socket();
- int type = notifier->type();
-#ifndef QT_NO_DEBUG
- if (nativeSocket < 0 || nativeSocket > FD_SETSIZE) {
- qWarning("QSocketNotifier: Internal error");
- return;
- } else if (notifier->thread() != thread()
- || thread() != QThread::currentThread()) {
- qWarning("QSocketNotifier: socket notifiers cannot be enabled from another thread");
- return;
- }
-#endif
-
- Q_D(QEventDispatcherMac);
-
- if (type == QSocketNotifier::Exception) {
- qWarning("QSocketNotifier::Exception is not supported on Mac OS X");
- return;
- }
-
- // Check if we have a CFSocket for the native socket, create one if not.
- MacSocketInfo *socketInfo = d->macSockets.value(nativeSocket);
- if (!socketInfo) {
- socketInfo = new MacSocketInfo();
-
- // Create CFSocket, specify that we want both read and write callbacks (the callbacks
- // are enabled/disabled later on).
- const int callbackTypes = kCFSocketReadCallBack | kCFSocketWriteCallBack;
- CFSocketContext context = {0, d, 0, 0, 0};
- socketInfo->socket = CFSocketCreateWithNative(kCFAllocatorDefault, nativeSocket, callbackTypes, qt_mac_socket_callback, &context);
- if (CFSocketIsValid(socketInfo->socket) == false) {
- qWarning("QEventDispatcherMac::registerSocketNotifier: Failed to create CFSocket");
- return;
- }
-
- CFOptionFlags flags = CFSocketGetSocketFlags(socketInfo->socket);
- flags |= kCFSocketAutomaticallyReenableWriteCallBack; //QSocketNotifier stays enabled after a write
- flags &= ~kCFSocketCloseOnInvalidate; //QSocketNotifier doesn't close the socket upon destruction/invalidation
- CFSocketSetSocketFlags(socketInfo->socket, flags);
-
- // Add CFSocket to runloop.
- if(!(socketInfo->runloop = qt_mac_add_socket_to_runloop(socketInfo->socket))) {
- qWarning("QEventDispatcherMac::registerSocketNotifier: Failed to add CFSocket to runloop");
- CFSocketInvalidate(socketInfo->socket);
- CFRelease(socketInfo->socket);
- return;
- }
-
- // Disable both callback types by default. This must be done after
- // we add the CFSocket to the runloop, or else these calls will have
- // no effect.
- CFSocketDisableCallBacks(socketInfo->socket, kCFSocketReadCallBack);
- CFSocketDisableCallBacks(socketInfo->socket, kCFSocketWriteCallBack);
-
- d->macSockets.insert(nativeSocket, socketInfo);
- }
-
- // Increment read/write counters and select enable callbacks if necessary.
- if (type == QSocketNotifier::Read) {
- Q_ASSERT(socketInfo->readNotifier == 0);
- socketInfo->readNotifier = notifier;
- CFSocketEnableCallBacks(socketInfo->socket, kCFSocketReadCallBack);
- } else if (type == QSocketNotifier::Write) {
- Q_ASSERT(socketInfo->writeNotifier == 0);
- socketInfo->writeNotifier = notifier;
- CFSocketEnableCallBacks(socketInfo->socket, kCFSocketWriteCallBack);
- }
-}
-
-/*
- Unregister QSocketNotifer. The CFSocket correspoding to this notifier is
- removed from the runloop of this is the last notifier that users
- that CFSocket.
-*/
-void QEventDispatcherMac::unregisterSocketNotifier(QSocketNotifier *notifier)
-{
- Q_ASSERT(notifier);
- int nativeSocket = notifier->socket();
- int type = notifier->type();
-#ifndef QT_NO_DEBUG
- if (nativeSocket < 0 || nativeSocket > FD_SETSIZE) {
- qWarning("QSocketNotifier: Internal error");
- return;
- } else if (notifier->thread() != thread() || thread() != QThread::currentThread()) {
- qWarning("QSocketNotifier: socket notifiers cannot be disabled from another thread");
- return;
- }
-#endif
-
- Q_D(QEventDispatcherMac);
-
- if (type == QSocketNotifier::Exception) {
- qWarning("QSocketNotifier::Exception is not supported on Mac OS X");
- return;
- }
- MacSocketInfo *socketInfo = d->macSockets.value(nativeSocket);
- if (!socketInfo) {
- qWarning("QEventDispatcherMac::unregisterSocketNotifier: Tried to unregister a not registered notifier");
- return;
- }
-
- // Decrement read/write counters and disable callbacks if necessary.
- if (type == QSocketNotifier::Read) {
- Q_ASSERT(notifier == socketInfo->readNotifier);
- socketInfo->readNotifier = 0;
- CFSocketDisableCallBacks(socketInfo->socket, kCFSocketReadCallBack);
- } else if (type == QSocketNotifier::Write) {
- Q_ASSERT(notifier == socketInfo->writeNotifier);
- socketInfo->writeNotifier = 0;
- CFSocketDisableCallBacks(socketInfo->socket, kCFSocketWriteCallBack);
- }
-
- // Remove CFSocket from runloop if this was the last QSocketNotifier.
- if (socketInfo->readNotifier == 0 && socketInfo->writeNotifier == 0) {
- if (CFSocketIsValid(socketInfo->socket))
- qt_mac_remove_socket_from_runloop(socketInfo->socket, socketInfo->runloop);
- CFRunLoopSourceInvalidate(socketInfo->runloop);
- CFRelease(socketInfo->runloop);
- CFSocketInvalidate(socketInfo->socket);
- CFRelease(socketInfo->socket);
- delete socketInfo;
- d->macSockets.remove(nativeSocket);
- }
-}
-
-bool QEventDispatcherMac::hasPendingEvents()
-{
- extern uint qGlobalPostedEventsCount();
- return qGlobalPostedEventsCount() || (qt_is_gui_used && GetNumEventsInQueue(GetMainEventQueue()));
-}
-
-
-static bool qt_mac_send_event(QEventLoop::ProcessEventsFlags, OSEventRef event, OSWindowRef pt)
-{
- if (pt)
- [pt sendEvent:event];
- else
- [NSApp sendEvent:event];
- return true;
-}
-
-static bool IsMouseOrKeyEvent( NSEvent* event )
-{
- bool result = false;
-
- switch( [event type] )
- {
- case NSLeftMouseDown:
- case NSLeftMouseUp:
- case NSRightMouseDown:
- case NSRightMouseUp:
- case NSMouseMoved: // ??
- case NSLeftMouseDragged:
- case NSRightMouseDragged:
- case NSMouseEntered:
- case NSMouseExited:
- case NSKeyDown:
- case NSKeyUp:
- case NSFlagsChanged: // key modifiers changed?
- case NSCursorUpdate: // ??
- case NSScrollWheel:
- case NSTabletPoint:
- case NSTabletProximity:
- case NSOtherMouseDown:
- case NSOtherMouseUp:
- case NSOtherMouseDragged:
-#ifndef QT_NO_GESTURES
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
- case NSEventTypeGesture: // touch events
- case NSEventTypeMagnify:
- case NSEventTypeSwipe:
- case NSEventTypeRotate:
- case NSEventTypeBeginGesture:
- case NSEventTypeEndGesture:
-#endif
-#endif // QT_NO_GESTURES
- result = true;
- break;
-
- default:
- break;
- }
- return result;
-}
-
-static inline void qt_mac_waitForMoreEvents()
-{
- // If no event exist in the cocoa event que, wait
- // (and free up cpu time) until at least one event occur.
- // This implementation is a bit on the edge, but seems to
- // work fine:
- NSEvent* event = [NSApp nextEventMatchingMask:NSAnyEventMask
- untilDate:[NSDate distantFuture]
- inMode:NSDefaultRunLoopMode
- dequeue:YES];
- if (event)
- [NSApp postEvent:event atStart:YES];
-}
-
-static inline void qt_mac_waitForMoreModalSessionEvents()
-{
- // If no event exist in the cocoa event que, wait
- // (and free up cpu time) until at least one event occur.
- // This implementation is a bit on the edge, but seems to
- // work fine:
- NSEvent* event = [NSApp nextEventMatchingMask:NSAnyEventMask
- untilDate:[NSDate distantFuture]
- inMode:NSModalPanelRunLoopMode
- dequeue:YES];
- if (event)
- [NSApp postEvent:event atStart:YES];
-}
-
-bool QEventDispatcherMac::processEvents(QEventLoop::ProcessEventsFlags flags)
-{
- Q_D(QEventDispatcherMac);
- d->interrupt = false;
-
- bool interruptLater = false;
- QtMacInterruptDispatcherHelp::cancelInterruptLater();
-
- // In case we end up recursing while we now process events, make sure
- // that we send remaining posted Qt events before this call returns:
- wakeUp();
- emit awake();
-
- bool excludeUserEvents = flags & QEventLoop::ExcludeUserInputEvents;
- bool retVal = false;
- forever {
- if (d->interrupt)
- break;
-
- QMacCocoaAutoReleasePool pool;
- NSEvent* event = 0;
-
- // First, send all previously excluded input events, if any:
- if (!excludeUserEvents) {
- while (!d->queuedUserInputEvents.isEmpty()) {
- event = static_cast<NSEvent *>(d->queuedUserInputEvents.takeFirst());
- if (!filterEvent(event)) {
- qt_mac_send_event(flags, event, 0);
- retVal = true;
- }
- [event release];
- }
- }
-
- // If Qt is used as a plugin, or as an extension in a native cocoa
- // application, we should not run or stop NSApplication; This will be
- // done from the application itself. And if processEvents is called
- // manually (rather than from a QEventLoop), we cannot enter a tight
- // loop and block this call, but instead we need to return after one flush.
- // Finally, if we are to exclude user input events, we cannot call [NSApp run]
- // as we then loose control over which events gets dispatched:
- const bool canExec_3rdParty = d->nsAppRunCalledByQt || ![NSApp isRunning];
- const bool canExec_Qt = !excludeUserEvents &&
- (flags & QEventLoop::DialogExec || flags & QEventLoop::EventLoopExec) ;
-
- if (canExec_Qt && canExec_3rdParty) {
- // We can use exec-mode, meaning that we can stay in a tight loop until
- // interrupted. This is mostly an optimization, but it allow us to use
- // [NSApp run], which is the normal code path for cocoa applications.
- if (NSModalSession session = d->currentModalSession()) {
- QBoolBlocker execGuard(d->currentExecIsNSAppRun, false);
- while ([NSApp runModalSession:session] == NSRunContinuesResponse && !d->interrupt)
- qt_mac_waitForMoreModalSessionEvents();
-
- if (!d->interrupt && session == d->currentModalSessionCached) {
- // Someone called [NSApp stopModal:] from outside the event
- // dispatcher (e.g to stop a native dialog). But that call wrongly stopped
- // 'session' as well. As a result, we need to restart all internal sessions:
- d->temporarilyStopAllModalSessions();
- }
- } else {
- d->nsAppRunCalledByQt = true;
- QBoolBlocker execGuard(d->currentExecIsNSAppRun, true);
- [NSApp run];
- }
- retVal = true;
- } else {
- // We cannot block the thread (and run in a tight loop).
- // Instead we will process all current pending events and return.
- d->ensureNSAppInitialized();
- if (NSModalSession session = d->currentModalSession()) {
- // INVARIANT: a modal window is executing.
- if (!excludeUserEvents) {
- // Since we can dispatch all kinds of events, we choose
- // to use cocoa's native way of running modal sessions:
- if (flags & QEventLoop::WaitForMoreEvents)
- qt_mac_waitForMoreModalSessionEvents();
- NSInteger status = [NSApp runModalSession:session];
- if (status != NSRunContinuesResponse && session == d->currentModalSessionCached) {
- // INVARIANT: Someone called [NSApp stopModal:] from outside the event
- // dispatcher (e.g to stop a native dialog). But that call wrongly stopped
- // 'session' as well. As a result, we need to restart all internal sessions:
- d->temporarilyStopAllModalSessions();
- }
- retVal = true;
- } else do {
- // Dispatch all non-user events (but que non-user events up for later). In
- // this case, we need more control over which events gets dispatched, and
- // cannot use [NSApp runModalSession:session]:
- event = [NSApp nextEventMatchingMask:NSAnyEventMask
- untilDate:nil
- inMode:NSModalPanelRunLoopMode
- dequeue: YES];
-
- if (event) {
- if (IsMouseOrKeyEvent(event)) {
- [event retain];
- d->queuedUserInputEvents.append(event);
- continue;
- }
- if (!filterEvent(event) && qt_mac_send_event(flags, event, 0))
- retVal = true;
- }
- } while (!d->interrupt && event != nil);
- } else do {
- // INVARIANT: No modal window is executing.
- event = [NSApp nextEventMatchingMask:NSAnyEventMask
- untilDate:nil
- inMode:NSDefaultRunLoopMode
- dequeue: YES];
-
- if (event) {
- if (flags & QEventLoop::ExcludeUserInputEvents) {
- if (IsMouseOrKeyEvent(event)) {
- [event retain];
- d->queuedUserInputEvents.append(event);
- continue;
- }
- }
- if (!filterEvent(event) && qt_mac_send_event(flags, event, 0))
- retVal = true;
- }
- } while (!d->interrupt && event != nil);
-
- // Be sure to flush the Qt posted events when not using exec mode
- // (exec mode will always do this call from the event loop source):
- if (!d->interrupt)
- QCoreApplicationPrivate::sendPostedEvents(0, 0, d->threadData);
-
- // Since the window that holds modality might have changed while processing
- // events, we we need to interrupt when we return back the previous process
- // event recursion to ensure that we spin the correct modal session.
- // We do the interruptLater at the end of the function to ensure that we don't
- // disturb the 'wait for more events' below (as deleteLater will post an event):
- interruptLater = true;
- }
-
- bool canWait = (d->threadData->canWait
- && !retVal
- && !d->interrupt
- && (flags & QEventLoop::WaitForMoreEvents));
- if (canWait) {
- // INVARIANT: We haven't processed any events yet. And we're told
- // to stay inside this function until at least one event is processed.
- qt_mac_waitForMoreEvents();
- flags &= ~QEventLoop::WaitForMoreEvents;
- } else {
- // Done with event processing for now.
- // Leave the function:
- break;
- }
- }
-
- // If we're interrupted, we need to interrupt the _current_
- // recursion as well to check if it is still supposed to be
- // executing. This way we wind down the stack until we land
- // on a recursion that again calls processEvents (typically
- // from QEventLoop), and set interrupt to false:
- if (d->interrupt)
- interrupt();
-
- if (interruptLater)
- QtMacInterruptDispatcherHelp::interruptLater();
-
- return retVal;
-}
-
-void QEventDispatcherMac::wakeUp()
-{
- Q_D(QEventDispatcherMac);
- d->serialNumber.ref();
- CFRunLoopSourceSignal(d->postedEventsSource);
- CFRunLoopWakeUp(mainRunLoop());
-}
-
-void QEventDispatcherMac::flush()
-{
- if(qApp) {
- QWidgetList tlws = QApplication::topLevelWidgets();
- for(int i = 0; i < tlws.size(); i++) {
- QWidget *tlw = tlws.at(i);
- if(tlw->isVisible())
- macWindowFlush(qt_mac_window_for(tlw));
- }
- }
-}
-
-/*****************************************************************************
- QEventDispatcherMac Implementation
- *****************************************************************************/
-MacTimerHash QEventDispatcherMacPrivate::macTimerHash;
-bool QEventDispatcherMacPrivate::blockSendPostedEvents = false;
-bool QEventDispatcherMacPrivate::interrupt = false;
-
-QStack<QCocoaModalSessionInfo> QEventDispatcherMacPrivate::cocoaModalSessionStack;
-bool QEventDispatcherMacPrivate::currentExecIsNSAppRun = false;
-bool QEventDispatcherMacPrivate::nsAppRunCalledByQt = false;
-bool QEventDispatcherMacPrivate::cleanupModalSessionsNeeded = false;
-NSModalSession QEventDispatcherMacPrivate::currentModalSessionCached = 0;
-
-void QEventDispatcherMacPrivate::ensureNSAppInitialized()
-{
- // Some elements in Cocoa require NSApplication to be running before
- // they get fully initialized, in particular the menu bar. This
- // function is intended for cases where a dialog is told to execute before
- // QApplication::exec is called, or the application spins the events loop
- // manually rather than calling QApplication:exec.
- // The function makes sure that NSApplication starts running, but stops
- // it again as soon as the send posted events callback is called. That way
- // we let Cocoa finish the initialization it seems to need. We'll only
- // apply this trick at most once for any application, and we avoid doing it
- // for the common case where main just starts QApplication::exec.
- if (nsAppRunCalledByQt || [NSApp isRunning])
- return;
- nsAppRunCalledByQt = true;
- QBoolBlocker block1(interrupt, true);
- QBoolBlocker block2(currentExecIsNSAppRun, true);
- [NSApp run];
-}
-
-void QEventDispatcherMacPrivate::temporarilyStopAllModalSessions()
-{
- // Flush, and Stop, all created modal session, and as
- // such, make them pending again. The next call to
- // currentModalSession will recreate them again. The
- // reason to stop all session like this is that otherwise
- // a call [NSApp stop] would not stop NSApp, but rather
- // the current modal session. So if we need to stop NSApp
- // we need to stop all the modal session first. To avoid changing
- // the stacking order of the windows while doing so, we put
- // up a block that is used in QCocoaWindow and QCocoaPanel:
- int stackSize = cocoaModalSessionStack.size();
- for (int i=0; i<stackSize; ++i) {
- QCocoaModalSessionInfo &info = cocoaModalSessionStack[i];
- if (info.session) {
- [NSApp endModalSession:info.session];
- info.session = 0;
- }
- }
- currentModalSessionCached = 0;
-}
-
-NSModalSession QEventDispatcherMacPrivate::currentModalSession()
-{
- // If we have one or more modal windows, this function will create
- // a session for each of those, and return the one for the top.
- if (currentModalSessionCached)
- return currentModalSessionCached;
-
- if (cocoaModalSessionStack.isEmpty())
- return 0;
-
- int sessionCount = cocoaModalSessionStack.size();
- for (int i=0; i<sessionCount; ++i) {
- QCocoaModalSessionInfo &info = cocoaModalSessionStack[i];
- if (!info.widget)
- continue;
- if (info.widget->testAttribute(Qt::WA_DontShowOnScreen))
- continue;
- if (!info.session) {
- QMacCocoaAutoReleasePool pool;
- NSWindow *window = qt_mac_window_for(info.widget);
- if (!window)
- continue;
-
- ensureNSAppInitialized();
- QBoolBlocker block1(blockSendPostedEvents, true);
- info.nswindow = window;
- [(NSWindow*) info.nswindow retain];
- int levelBeforeEnterModal = [window level];
- info.session = [NSApp beginModalSessionForWindow:window];
- // Make sure we don't stack the window lower that it was before
- // entering modal, in case it e.g. had the stays-on-top flag set:
- if (levelBeforeEnterModal > [window level])
- [window setLevel:levelBeforeEnterModal];
- }
- currentModalSessionCached = info.session;
- cleanupModalSessionsNeeded = false;
- }
- return currentModalSessionCached;
-}
-
-static void setChildrenWorksWhenModal(QWidget *widget, bool worksWhenModal)
-{
- // For NSPanels (but not NSWindows, sadly), we can set the flag
- // worksWhenModal, so that they are active even when they are not modal.
- QList<QDialog *> dialogs = widget->findChildren<QDialog *>();
- for (int i=0; i<dialogs.size(); ++i){
- NSWindow *window = qt_mac_window_for(dialogs[i]);
- if (window && [window isKindOfClass:[NSPanel class]]) {
- [static_cast<NSPanel *>(window) setWorksWhenModal:worksWhenModal];
- if (worksWhenModal && [window isVisible]){
- [window orderFront:window];
- }
- }
- }
-}
-
-void QEventDispatcherMacPrivate::updateChildrenWorksWhenModal()
-{
- // Make the dialog children of the widget
- // active. And make the dialog children of
- // the previous modal dialog unactive again:
- QMacCocoaAutoReleasePool pool;
- int size = cocoaModalSessionStack.size();
- if (size > 0){
- if (QWidget *prevModal = cocoaModalSessionStack[size-1].widget)
- setChildrenWorksWhenModal(prevModal, true);
- if (size > 1){
- if (QWidget *prevModal = cocoaModalSessionStack[size-2].widget)
- setChildrenWorksWhenModal(prevModal, false);
- }
- }
-}
-
-void QEventDispatcherMacPrivate::cleanupModalSessions()
-{
- // Go through the list of modal sessions, and end those
- // that no longer has a widget assosiated; no widget means
- // the the session has logically ended. The reason we wait like
- // this to actually end the sessions for real (rather than at the
- // point they were marked as stopped), is that ending a session
- // when no other session runs below it on the stack will make cocoa
- // drop some events on the floor.
- QMacCocoaAutoReleasePool pool;
- int stackSize = cocoaModalSessionStack.size();
-
- for (int i=stackSize-1; i>=0; --i) {
- QCocoaModalSessionInfo &info = cocoaModalSessionStack[i];
- if (info.widget) {
- // This session has a widget, and is therefore not marked
- // as stopped. So just make it current. There might still be other
- // stopped sessions on the stack, but those will be stopped on
- // a later "cleanup" call.
- currentModalSessionCached = info.session;
- break;
- }
- cocoaModalSessionStack.remove(i);
- currentModalSessionCached = 0;
- if (info.session) {
- [NSApp endModalSession:info.session];
- [(NSWindow *)info.nswindow release];
- }
- }
-
- updateChildrenWorksWhenModal();
- cleanupModalSessionsNeeded = false;
-}
-
-void QEventDispatcherMacPrivate::beginModalSession(QWidget *widget)
-{
- // Add a new, empty (null), NSModalSession to the stack.
- // It will become active the next time QEventDispatcher::processEvents is called.
- // A QCocoaModalSessionInfo is considered pending to become active if the widget pointer
- // is non-zero, and the session pointer is zero (it will become active upon a call to
- // currentModalSession). A QCocoaModalSessionInfo is considered pending to be stopped if
- // the widget pointer is zero, and the session pointer is non-zero (it will be fully
- // stopped in cleanupModalSessions()).
- QCocoaModalSessionInfo info = {widget, 0, 0};
- cocoaModalSessionStack.push(info);
- updateChildrenWorksWhenModal();
- currentModalSessionCached = 0;
-}
-
-void QEventDispatcherMacPrivate::endModalSession(QWidget *widget)
-{
- // Mark all sessions attached to widget as pending to be stopped. We do this
- // by setting the widget pointer to zero, but leave the session pointer.
- // We don't tell cocoa to stop any sessions just yet, because cocoa only understands
- // when we stop the _current_ modal session (which is the session on top of
- // the stack, and might not belong to 'widget').
- int stackSize = cocoaModalSessionStack.size();
- for (int i=stackSize-1; i>=0; --i) {
- QCocoaModalSessionInfo &info = cocoaModalSessionStack[i];
- if (info.widget == widget) {
- info.widget = 0;
- if (i == stackSize-1) {
- // The top sessions ended. Interrupt the event dispatcher
- // to start spinning the correct session immidiatly:
- currentModalSessionCached = 0;
- cleanupModalSessionsNeeded = true;
- QEventDispatcherMac::instance()->interrupt();
- }
- }
- }
-}
-
-
-QEventDispatcherMacPrivate::QEventDispatcherMacPrivate()
-{
-}
-
-QEventDispatcherMac::QEventDispatcherMac(QObject *parent)
- : QAbstractEventDispatcher(*new QEventDispatcherMacPrivate, parent)
-{
- Q_D(QEventDispatcherMac);
- CFRunLoopSourceContext context;
- bzero(&context, sizeof(CFRunLoopSourceContext));
- context.info = d;
- context.equal = QEventDispatcherMacPrivate::postedEventSourceEqualCallback;
- context.perform = QEventDispatcherMacPrivate::postedEventsSourcePerformCallback;
- d->postedEventsSource = CFRunLoopSourceCreate(0, 0, &context);
- Q_ASSERT(d->postedEventsSource);
- CFRunLoopAddSource(mainRunLoop(), d->postedEventsSource, kCFRunLoopCommonModes);
-
- CFRunLoopObserverContext observerContext;
- bzero(&observerContext, sizeof(CFRunLoopObserverContext));
- observerContext.info = this;
- d->waitingObserver = CFRunLoopObserverCreate(kCFAllocatorDefault,
- kCFRunLoopBeforeWaiting | kCFRunLoopAfterWaiting,
- true, 0,
- QEventDispatcherMacPrivate::waitingObserverCallback,
- &observerContext);
- CFRunLoopAddObserver(mainRunLoop(), d->waitingObserver, kCFRunLoopCommonModes);
-
- /* The first cycle in the loop adds the source and the events of the source
- are not processed.
- We use an observer to process the posted events for the first
- execution of the loop. */
- CFRunLoopObserverContext firstTimeObserverContext;
- bzero(&firstTimeObserverContext, sizeof(CFRunLoopObserverContext));
- firstTimeObserverContext.info = d;
- d->firstTimeObserver = CFRunLoopObserverCreate(kCFAllocatorDefault,
- kCFRunLoopEntry,
- /* repeats = */ false,
- 0,
- QEventDispatcherMacPrivate::firstLoopEntry,
- &firstTimeObserverContext);
- CFRunLoopAddObserver(mainRunLoop(), d->firstTimeObserver, kCFRunLoopCommonModes);
-}
-
-void QEventDispatcherMacPrivate::waitingObserverCallback(CFRunLoopObserverRef,
- CFRunLoopActivity activity, void *info)
-{
- if (activity == kCFRunLoopBeforeWaiting)
- emit static_cast<QEventDispatcherMac*>(info)->aboutToBlock();
- else
- emit static_cast<QEventDispatcherMac*>(info)->awake();
-}
-
-Boolean QEventDispatcherMacPrivate::postedEventSourceEqualCallback(const void *info1, const void *info2)
-{
- return info1 == info2;
-}
-
-inline static void processPostedEvents(QEventDispatcherMacPrivate *const d, const bool blockSendPostedEvents)
-{
- if (blockSendPostedEvents) {
- // We're told to not send posted events (because the event dispatcher
- // is currently working on setting up the correct session to run). But
- // we still need to make sure that we don't fall asleep until pending events
- // are sendt, so we just signal this need, and return:
- CFRunLoopSourceSignal(d->postedEventsSource);
- return;
- }
-
- if (d->cleanupModalSessionsNeeded)
- d->cleanupModalSessions();
-
- if (d->interrupt) {
- if (d->currentExecIsNSAppRun) {
- // The event dispatcher has been interrupted. But since
- // [NSApplication run] is running the event loop, we
- // delayed stopping it until now (to let cocoa process
- // pending cocoa events first).
- if (d->currentModalSessionCached)
- d->temporarilyStopAllModalSessions();
- [NSApp stop:NSApp];
- d->cancelWaitForMoreEvents();
- }
- return;
- }
-
- if (!d->threadData->canWait || (d->serialNumber != d->lastSerial)) {
- d->lastSerial = d->serialNumber;
- QApplicationPrivate::sendPostedEvents(0, 0, d->threadData);
- }
-}
-
-void QEventDispatcherMacPrivate::firstLoopEntry(CFRunLoopObserverRef ref,
- CFRunLoopActivity activity,
- void *info)
-{
- Q_UNUSED(ref);
- Q_UNUSED(activity);
- QApplicationPrivate::qt_initAfterNSAppStarted();
- processPostedEvents(static_cast<QEventDispatcherMacPrivate *>(info), blockSendPostedEvents);
-}
-
-void QEventDispatcherMacPrivate::postedEventsSourcePerformCallback(void *info)
-{
- processPostedEvents(static_cast<QEventDispatcherMacPrivate *>(info), blockSendPostedEvents);
-}
-
-void QEventDispatcherMacPrivate::cancelWaitForMoreEvents()
-{
- // In case the event dispatcher is waiting for more
- // events somewhere, we post a dummy event to wake it up:
- QMacCocoaAutoReleasePool pool;
- [NSApp postEvent:[NSEvent otherEventWithType:NSApplicationDefined location:NSZeroPoint
- modifierFlags:0 timestamp:0. windowNumber:0 context:0
- subtype:QtCocoaEventSubTypeWakeup data1:0 data2:0] atStart:NO];
-}
-
-void QEventDispatcherMac::interrupt()
-{
- Q_D(QEventDispatcherMac);
- d->interrupt = true;
- wakeUp();
-
- // We do nothing more here than setting d->interrupt = true, and
- // poke the event loop if it is sleeping. Actually stopping
- // NSApp, or the current modal session, is done inside the send
- // posted events callback. We do this to ensure that all current pending
- // cocoa events gets delivered before we stop. Otherwise, if we now stop
- // the last event loop recursion, cocoa will just drop pending posted
- // events on the floor before we get a chance to reestablish a new session.
- d->cancelWaitForMoreEvents();
-}
-
-QEventDispatcherMac::~QEventDispatcherMac()
-{
- Q_D(QEventDispatcherMac);
- //timer cleanup
- MacTimerHash::iterator it = QEventDispatcherMacPrivate::macTimerHash.begin();
- while (it != QEventDispatcherMacPrivate::macTimerHash.end()) {
- MacTimerInfo *t = it.value();
- if (t->runLoopTimer) {
- CFRunLoopTimerInvalidate(t->runLoopTimer);
- CFRelease(t->runLoopTimer);
- }
- delete t;
- ++it;
- }
- QEventDispatcherMacPrivate::macTimerHash.clear();
-
- // Remove CFSockets from the runloop.
- for (MacSocketHash::ConstIterator it = d->macSockets.constBegin(); it != d->macSockets.constEnd(); ++it) {
- MacSocketInfo *socketInfo = (*it);
- if (CFSocketIsValid(socketInfo->socket)) {
- qt_mac_remove_socket_from_runloop(socketInfo->socket, socketInfo->runloop);
- CFRunLoopSourceInvalidate(socketInfo->runloop);
- CFRelease(socketInfo->runloop);
- CFSocketInvalidate(socketInfo->socket);
- CFRelease(socketInfo->socket);
- }
- }
- CFRunLoopRemoveSource(mainRunLoop(), d->postedEventsSource, kCFRunLoopCommonModes);
- CFRelease(d->postedEventsSource);
-
- CFRunLoopObserverInvalidate(d->waitingObserver);
- CFRelease(d->waitingObserver);
-
- CFRunLoopObserverInvalidate(d->firstTimeObserver);
- CFRelease(d->firstTimeObserver);
-}
-
-
-QtMacInterruptDispatcherHelp* QtMacInterruptDispatcherHelp::instance = 0;
-
-QtMacInterruptDispatcherHelp::QtMacInterruptDispatcherHelp() : cancelled(false)
-{
- // The whole point of this class is that we enable a way to interrupt
- // the event dispatcher when returning back to a lower recursion level
- // than where interruptLater was called. This is needed to detect if
- // [NSApp run] should still be running at the recursion level it is at.
- // Since the interrupt is canceled if processEvents is called before
- // this object gets deleted, we also avoid interrupting unnecessary.
- deleteLater();
-}
-
-QtMacInterruptDispatcherHelp::~QtMacInterruptDispatcherHelp()
-{
- if (cancelled)
- return;
- instance = 0;
- QEventDispatcherMac::instance()->interrupt();
-}
-
-void QtMacInterruptDispatcherHelp::cancelInterruptLater()
-{
- if (!instance)
- return;
- instance->cancelled = true;
- delete instance;
- instance = 0;
-}
-
-void QtMacInterruptDispatcherHelp::interruptLater()
-{
- cancelInterruptLater();
- instance = new QtMacInterruptDispatcherHelp;
-}
-
-
-QT_END_NAMESPACE
-
diff --git a/src/widgets/platforms/mac/qeventdispatcher_mac_p.h b/src/widgets/platforms/mac/qeventdispatcher_mac_p.h
deleted file mode 100644
index 57797b070b..0000000000
--- a/src/widgets/platforms/mac/qeventdispatcher_mac_p.h
+++ /dev/null
@@ -1,218 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Copyright (c) 2007-2008, Apple, Inc.
-**
-** All rights reserved.
-**
-** Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are met:
-**
-** * Redistributions of source code must retain the above copyright notice,
-** this list of conditions and the following disclaimer.
-**
-** * Redistributions in binary form must reproduce the above copyright notice,
-** this list of conditions and the following disclaimer in the documentation
-** and/or other materials provided with the distribution.
-**
-** * Neither the name of Apple, Inc. nor the names of its contributors
-** may be used to endorse or promote products derived from this software
-** without specific prior written permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-****************************************************************************/
-
-#ifndef QEVENTDISPATCHER_MAC_P_H
-#define QEVENTDISPATCHER_MAC_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <QtGui/qwindowdefs.h>
-#include <QtCore/qhash.h>
-#include <QtCore/qstack.h>
-#include "private/qabstracteventdispatcher_p.h"
-#include "private/qt_mac_p.h"
-
-QT_BEGIN_NAMESPACE
-
-typedef struct _NSModalSession *NSModalSession;
-typedef struct _QCocoaModalSessionInfo {
- QPointer<QWidget> widget;
- NSModalSession session;
- void *nswindow;
-} QCocoaModalSessionInfo;
-
-class QEventDispatcherMacPrivate;
-
-class QEventDispatcherMac : public QAbstractEventDispatcher
-{
- Q_OBJECT
- Q_DECLARE_PRIVATE(QEventDispatcherMac)
-
-public:
- explicit QEventDispatcherMac(QObject *parent = 0);
- ~QEventDispatcherMac();
-
- bool processEvents(QEventLoop::ProcessEventsFlags flags);
- bool hasPendingEvents();
-
- void registerSocketNotifier(QSocketNotifier *notifier);
- void unregisterSocketNotifier(QSocketNotifier *notifier);
-
- void registerTimer(int timerId, int interval, QObject *object);
- bool unregisterTimer(int timerId);
- bool unregisterTimers(QObject *object);
- QList<TimerInfo> registeredTimers(QObject *object) const;
-
- void wakeUp();
- void flush();
- void interrupt();
-
-private:
- friend void qt_mac_select_timer_callbk(__EventLoopTimer*, void*);
- friend class QApplicationPrivate;
-};
-
-struct MacTimerInfo {
- int id;
- int interval;
- QObject *obj;
- bool pending;
- CFRunLoopTimerRef runLoopTimer;
- bool operator==(const MacTimerInfo &other) const
- {
- return (id == other.id);
- }
-};
-typedef QHash<int, MacTimerInfo *> MacTimerHash;
-
-struct MacSocketInfo {
- MacSocketInfo() : socket(0), runloop(0), readNotifier(0), writeNotifier(0) {}
- CFSocketRef socket;
- CFRunLoopSourceRef runloop;
- QObject *readNotifier;
- QObject *writeNotifier;
-};
-typedef QHash<int, MacSocketInfo *> MacSocketHash;
-
-class QEventDispatcherMacPrivate : public QAbstractEventDispatcherPrivate
-{
- Q_DECLARE_PUBLIC(QEventDispatcherMac)
-
-public:
- QEventDispatcherMacPrivate();
-
- static MacTimerHash macTimerHash;
- // Set 'blockSendPostedEvents' to true if you _really_ need
- // to make sure that qt events are not posted while calling
- // low-level cocoa functions (like beginModalForWindow). And
- // use a QBoolBlocker to be safe:
- static bool blockSendPostedEvents;
- // The following variables help organizing modal sessions:
- static QStack<QCocoaModalSessionInfo> cocoaModalSessionStack;
- static bool currentExecIsNSAppRun;
- static bool nsAppRunCalledByQt;
- static bool cleanupModalSessionsNeeded;
- static NSModalSession currentModalSessionCached;
- static NSModalSession currentModalSession();
- static void updateChildrenWorksWhenModal();
- static void temporarilyStopAllModalSessions();
- static void beginModalSession(QWidget *widget);
- static void endModalSession(QWidget *widget);
- static void cancelWaitForMoreEvents();
- static void cleanupModalSessions();
- static void ensureNSAppInitialized();
-
- MacSocketHash macSockets;
- QList<void *> queuedUserInputEvents; // List of EventRef in Carbon, and NSEvent * in Cocoa
- CFRunLoopSourceRef postedEventsSource;
- CFRunLoopObserverRef waitingObserver;
- CFRunLoopObserverRef firstTimeObserver;
- QAtomicInt serialNumber;
- int lastSerial;
- static bool interrupt;
-private:
- static Boolean postedEventSourceEqualCallback(const void *info1, const void *info2);
- static void postedEventsSourcePerformCallback(void *info);
- static void activateTimer(CFRunLoopTimerRef, void *info);
- static void waitingObserverCallback(CFRunLoopObserverRef observer,
- CFRunLoopActivity activity, void *info);
- static void firstLoopEntry(CFRunLoopObserverRef ref, CFRunLoopActivity activity, void *info);
-};
-
-class QtMacInterruptDispatcherHelp : public QObject
-{
- static QtMacInterruptDispatcherHelp *instance;
- bool cancelled;
-
- QtMacInterruptDispatcherHelp();
- ~QtMacInterruptDispatcherHelp();
-
- public:
- static void interruptLater();
- static void cancelInterruptLater();
-};
-
-QT_END_NAMESPACE
-
-#endif // QEVENTDISPATCHER_MAC_P_H
diff --git a/src/widgets/platforms/mac/qkeymapper_mac.cpp b/src/widgets/platforms/mac/qkeymapper_mac.cpp
deleted file mode 100644
index 3cacb098aa..0000000000
--- a/src/widgets/platforms/mac/qkeymapper_mac.cpp
+++ /dev/null
@@ -1,963 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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/qt_mac_p.h>
-#include <qdebug.h>
-#include <qevent.h>
-#include <private/qevent_p.h>
-#include <qtextcodec.h>
-#include <qapplication.h>
-#include <qinputcontext.h>
-#include <private/qkeymapper_p.h>
-#include <private/qapplication_p.h>
-#include <private/qmacinputcontext_p.h>
-
-QT_BEGIN_NAMESPACE
-
-QT_USE_NAMESPACE
-
-/*****************************************************************************
- QKeyMapper debug facilities
- *****************************************************************************/
-//#define DEBUG_KEY_BINDINGS
-//#define DEBUG_KEY_BINDINGS_MODIFIERS
-//#define DEBUG_KEY_MAPS
-
-/*****************************************************************************
- Internal variables and functions
- *****************************************************************************/
-bool qt_mac_eat_unicode_key = false;
-extern bool qt_sendSpontaneousEvent(QObject *obj, QEvent *event); //qapplication_mac.cpp
-
-Q_WIDGETS_EXPORT void qt_mac_secure_keyboard(bool b)
-{
- static bool secure = false;
- if (b != secure){
- b ? EnableSecureEventInput() : DisableSecureEventInput();
- secure = b;
- }
-}
-
-/*
- \internal
- A Mac KeyboardLayoutItem has 8 possible states:
- 1. Unmodified
- 2. Shift
- 3. Control
- 4. Control + Shift
- 5. Alt
- 6. Alt + Shift
- 7. Alt + Control
- 8. Alt + Control + Shift
- 9. Meta
- 10. Meta + Shift
- 11. Meta + Control
- 12. Meta + Control + Shift
- 13. Meta + Alt
- 14. Meta + Alt + Shift
- 15. Meta + Alt + Control
- 16. Meta + Alt + Control + Shift
-*/
-struct KeyboardLayoutItem {
- bool dirty;
- quint32 qtKey[16]; // Can by any Qt::Key_<foo>, or unicode character
-};
-
-// Possible modifier states.
-// NOTE: The order of these states match the order in QKeyMapperPrivate::updatePossibleKeyCodes()!
-static const Qt::KeyboardModifiers ModsTbl[] = {
- Qt::NoModifier, // 0
- Qt::ShiftModifier, // 1
- Qt::ControlModifier, // 2
- Qt::ControlModifier | Qt::ShiftModifier, // 3
- Qt::AltModifier, // 4
- Qt::AltModifier | Qt::ShiftModifier, // 5
- Qt::AltModifier | Qt::ControlModifier, // 6
- Qt::AltModifier | Qt::ShiftModifier | Qt::ControlModifier, // 7
- Qt::MetaModifier, // 8
- Qt::MetaModifier | Qt::ShiftModifier, // 9
- Qt::MetaModifier | Qt::ControlModifier, // 10
- Qt::MetaModifier | Qt::ControlModifier | Qt::ShiftModifier,// 11
- Qt::MetaModifier | Qt::AltModifier, // 12
- Qt::MetaModifier | Qt::AltModifier | Qt::ShiftModifier, // 13
- Qt::MetaModifier | Qt::AltModifier | Qt::ControlModifier, // 14
- Qt::MetaModifier | Qt::AltModifier | Qt::ShiftModifier | Qt::ControlModifier, // 15
-};
-
-/* key maps */
-struct qt_mac_enum_mapper
-{
- int mac_code;
- int qt_code;
-#if defined(DEBUG_KEY_BINDINGS)
-# define QT_MAC_MAP_ENUM(x) x, #x
- const char *desc;
-#else
-# define QT_MAC_MAP_ENUM(x) x
-#endif
-};
-
-//modifiers
-static qt_mac_enum_mapper qt_mac_modifier_symbols[] = {
- { shiftKey, QT_MAC_MAP_ENUM(Qt::ShiftModifier) },
- { rightShiftKey, QT_MAC_MAP_ENUM(Qt::ShiftModifier) },
- { controlKey, QT_MAC_MAP_ENUM(Qt::MetaModifier) },
- { rightControlKey, QT_MAC_MAP_ENUM(Qt::MetaModifier) },
- { cmdKey, QT_MAC_MAP_ENUM(Qt::ControlModifier) },
- { optionKey, QT_MAC_MAP_ENUM(Qt::AltModifier) },
- { rightOptionKey, QT_MAC_MAP_ENUM(Qt::AltModifier) },
- { kEventKeyModifierNumLockMask, QT_MAC_MAP_ENUM(Qt::KeypadModifier) },
- { 0, QT_MAC_MAP_ENUM(0) }
-};
-Qt::KeyboardModifiers qt_mac_get_modifiers(int keys)
-{
-#ifdef DEBUG_KEY_BINDINGS_MODIFIERS
- qDebug("Qt: internal: **Mapping modifiers: %d (0x%04x)", keys, keys);
-#endif
- Qt::KeyboardModifiers ret = Qt::NoModifier;
- for (int i = 0; qt_mac_modifier_symbols[i].qt_code; i++) {
- if (keys & qt_mac_modifier_symbols[i].mac_code) {
-#ifdef DEBUG_KEY_BINDINGS_MODIFIERS
- qDebug("Qt: internal: got modifier: %s", qt_mac_modifier_symbols[i].desc);
-#endif
- ret |= Qt::KeyboardModifier(qt_mac_modifier_symbols[i].qt_code);
- }
- }
- if (qApp->testAttribute(Qt::AA_MacDontSwapCtrlAndMeta)) {
- Qt::KeyboardModifiers oldModifiers = ret;
- ret &= ~(Qt::MetaModifier | Qt::ControlModifier);
- if (oldModifiers & Qt::ControlModifier)
- ret |= Qt::MetaModifier;
- if (oldModifiers & Qt::MetaModifier)
- ret |= Qt::ControlModifier;
- }
- return ret;
-}
-static int qt_mac_get_mac_modifiers(Qt::KeyboardModifiers keys)
-{
-#ifdef DEBUG_KEY_BINDINGS_MODIFIERS
- qDebug("Qt: internal: **Mapping modifiers: %d (0x%04x)", (int)keys, (int)keys);
-#endif
- int ret = 0;
- for (int i = 0; qt_mac_modifier_symbols[i].qt_code; i++) {
- if (keys & qt_mac_modifier_symbols[i].qt_code) {
-#ifdef DEBUG_KEY_BINDINGS_MODIFIERS
- qDebug("Qt: internal: got modifier: %s", qt_mac_modifier_symbols[i].desc);
-#endif
- ret |= qt_mac_modifier_symbols[i].mac_code;
- }
- }
-
- if (qApp->testAttribute(Qt::AA_MacDontSwapCtrlAndMeta)) {
- int oldModifiers = ret;
- ret &= ~(controlKeyBit | cmdKeyBit);
- if (oldModifiers & controlKeyBit)
- ret |= cmdKeyBit;
- if (oldModifiers & cmdKeyBit)
- ret |= controlKeyBit;
- }
- return ret;
-}
-void qt_mac_send_modifiers_changed(quint32 modifiers, QObject *object)
-{
- static quint32 cachedModifiers = 0;
- quint32 lastModifiers = cachedModifiers,
- changedModifiers = lastModifiers ^ modifiers;
- cachedModifiers = modifiers;
-
- //check the bits
- static qt_mac_enum_mapper modifier_key_symbols[] = {
- { shiftKeyBit, QT_MAC_MAP_ENUM(Qt::Key_Shift) },
- { rightShiftKeyBit, QT_MAC_MAP_ENUM(Qt::Key_Shift) }, //???
- { controlKeyBit, QT_MAC_MAP_ENUM(Qt::Key_Meta) },
- { rightControlKeyBit, QT_MAC_MAP_ENUM(Qt::Key_Meta) }, //???
- { cmdKeyBit, QT_MAC_MAP_ENUM(Qt::Key_Control) },
- { optionKeyBit, QT_MAC_MAP_ENUM(Qt::Key_Alt) },
- { rightOptionKeyBit, QT_MAC_MAP_ENUM(Qt::Key_Alt) }, //???
- { alphaLockBit, QT_MAC_MAP_ENUM(Qt::Key_CapsLock) },
- { kEventKeyModifierNumLockBit, QT_MAC_MAP_ENUM(Qt::Key_NumLock) },
- { 0, QT_MAC_MAP_ENUM(0) } };
- for (int i = 0; i <= 32; i++) { //just check each bit
- if (!(changedModifiers & (1 << i)))
- continue;
- QEvent::Type etype = QEvent::KeyPress;
- if (lastModifiers & (1 << i))
- etype = QEvent::KeyRelease;
- int key = 0;
- for (uint x = 0; modifier_key_symbols[x].mac_code; x++) {
- if (modifier_key_symbols[x].mac_code == i) {
-#ifdef DEBUG_KEY_BINDINGS_MODIFIERS
- qDebug("got modifier changed: %s", modifier_key_symbols[x].desc);
-#endif
- key = modifier_key_symbols[x].qt_code;
- break;
- }
- }
- if (!key) {
-#ifdef DEBUG_KEY_BINDINGS_MODIFIERS
- qDebug("could not get modifier changed: %d", i);
-#endif
- continue;
- }
-#ifdef DEBUG_KEY_BINDINGS_MODIFIERS
- qDebug("KeyEvent (modif): Sending %s to %s::%s: %d - 0x%08x",
- etype == QEvent::KeyRelease ? "KeyRelease" : "KeyPress",
- object ? object->metaObject()->className() : "none",
- object ? object->objectName().toLatin1().constData() : "",
- key, (int)modifiers);
-#endif
- QKeyEvent ke(etype, key, qt_mac_get_modifiers(modifiers ^ (1 << i)), QLatin1String(""));
- qt_sendSpontaneousEvent(object, &ke);
- }
-}
-
-//keyboard keys (non-modifiers)
-static qt_mac_enum_mapper qt_mac_keyboard_symbols[] = {
- { kHomeCharCode, QT_MAC_MAP_ENUM(Qt::Key_Home) },
- { kEnterCharCode, QT_MAC_MAP_ENUM(Qt::Key_Enter) },
- { kEndCharCode, QT_MAC_MAP_ENUM(Qt::Key_End) },
- { kBackspaceCharCode, QT_MAC_MAP_ENUM(Qt::Key_Backspace) },
- { kTabCharCode, QT_MAC_MAP_ENUM(Qt::Key_Tab) },
- { kPageUpCharCode, QT_MAC_MAP_ENUM(Qt::Key_PageUp) },
- { kPageDownCharCode, QT_MAC_MAP_ENUM(Qt::Key_PageDown) },
- { kReturnCharCode, QT_MAC_MAP_ENUM(Qt::Key_Return) },
- { kEscapeCharCode, QT_MAC_MAP_ENUM(Qt::Key_Escape) },
- { kLeftArrowCharCode, QT_MAC_MAP_ENUM(Qt::Key_Left) },
- { kRightArrowCharCode, QT_MAC_MAP_ENUM(Qt::Key_Right) },
- { kUpArrowCharCode, QT_MAC_MAP_ENUM(Qt::Key_Up) },
- { kDownArrowCharCode, QT_MAC_MAP_ENUM(Qt::Key_Down) },
- { kHelpCharCode, QT_MAC_MAP_ENUM(Qt::Key_Help) },
- { kDeleteCharCode, QT_MAC_MAP_ENUM(Qt::Key_Delete) },
-//ascii maps, for debug
- { ':', QT_MAC_MAP_ENUM(Qt::Key_Colon) },
- { ';', QT_MAC_MAP_ENUM(Qt::Key_Semicolon) },
- { '<', QT_MAC_MAP_ENUM(Qt::Key_Less) },
- { '=', QT_MAC_MAP_ENUM(Qt::Key_Equal) },
- { '>', QT_MAC_MAP_ENUM(Qt::Key_Greater) },
- { '?', QT_MAC_MAP_ENUM(Qt::Key_Question) },
- { '@', QT_MAC_MAP_ENUM(Qt::Key_At) },
- { ' ', QT_MAC_MAP_ENUM(Qt::Key_Space) },
- { '!', QT_MAC_MAP_ENUM(Qt::Key_Exclam) },
- { '"', QT_MAC_MAP_ENUM(Qt::Key_QuoteDbl) },
- { '#', QT_MAC_MAP_ENUM(Qt::Key_NumberSign) },
- { '$', QT_MAC_MAP_ENUM(Qt::Key_Dollar) },
- { '%', QT_MAC_MAP_ENUM(Qt::Key_Percent) },
- { '&', QT_MAC_MAP_ENUM(Qt::Key_Ampersand) },
- { '\'', QT_MAC_MAP_ENUM(Qt::Key_Apostrophe) },
- { '(', QT_MAC_MAP_ENUM(Qt::Key_ParenLeft) },
- { ')', QT_MAC_MAP_ENUM(Qt::Key_ParenRight) },
- { '*', QT_MAC_MAP_ENUM(Qt::Key_Asterisk) },
- { '+', QT_MAC_MAP_ENUM(Qt::Key_Plus) },
- { ',', QT_MAC_MAP_ENUM(Qt::Key_Comma) },
- { '-', QT_MAC_MAP_ENUM(Qt::Key_Minus) },
- { '.', QT_MAC_MAP_ENUM(Qt::Key_Period) },
- { '/', QT_MAC_MAP_ENUM(Qt::Key_Slash) },
- { '[', QT_MAC_MAP_ENUM(Qt::Key_BracketLeft) },
- { ']', QT_MAC_MAP_ENUM(Qt::Key_BracketRight) },
- { '\\', QT_MAC_MAP_ENUM(Qt::Key_Backslash) },
- { '_', QT_MAC_MAP_ENUM(Qt::Key_Underscore) },
- { '`', QT_MAC_MAP_ENUM(Qt::Key_QuoteLeft) },
- { '{', QT_MAC_MAP_ENUM(Qt::Key_BraceLeft) },
- { '}', QT_MAC_MAP_ENUM(Qt::Key_BraceRight) },
- { '|', QT_MAC_MAP_ENUM(Qt::Key_Bar) },
- { '~', QT_MAC_MAP_ENUM(Qt::Key_AsciiTilde) },
- { '^', QT_MAC_MAP_ENUM(Qt::Key_AsciiCircum) },
- { 0, QT_MAC_MAP_ENUM(0) }
-};
-
-static qt_mac_enum_mapper qt_mac_keyvkey_symbols[] = { //real scan codes
- { 122, QT_MAC_MAP_ENUM(Qt::Key_F1) },
- { 120, QT_MAC_MAP_ENUM(Qt::Key_F2) },
- { 99, QT_MAC_MAP_ENUM(Qt::Key_F3) },
- { 118, QT_MAC_MAP_ENUM(Qt::Key_F4) },
- { 96, QT_MAC_MAP_ENUM(Qt::Key_F5) },
- { 97, QT_MAC_MAP_ENUM(Qt::Key_F6) },
- { 98, QT_MAC_MAP_ENUM(Qt::Key_F7) },
- { 100, QT_MAC_MAP_ENUM(Qt::Key_F8) },
- { 101, QT_MAC_MAP_ENUM(Qt::Key_F9) },
- { 109, QT_MAC_MAP_ENUM(Qt::Key_F10) },
- { 103, QT_MAC_MAP_ENUM(Qt::Key_F11) },
- { 111, QT_MAC_MAP_ENUM(Qt::Key_F12) },
- { 105, QT_MAC_MAP_ENUM(Qt::Key_F13) },
- { 107, QT_MAC_MAP_ENUM(Qt::Key_F14) },
- { 113, QT_MAC_MAP_ENUM(Qt::Key_F15) },
- { 106, QT_MAC_MAP_ENUM(Qt::Key_F16) },
- { 0, QT_MAC_MAP_ENUM(0) }
-};
-
-static qt_mac_enum_mapper qt_mac_private_unicode[] = {
- { 0xF700, QT_MAC_MAP_ENUM(Qt::Key_Up) }, //NSUpArrowFunctionKey
- { 0xF701, QT_MAC_MAP_ENUM(Qt::Key_Down) }, //NSDownArrowFunctionKey
- { 0xF702, QT_MAC_MAP_ENUM(Qt::Key_Left) }, //NSLeftArrowFunctionKey
- { 0xF703, QT_MAC_MAP_ENUM(Qt::Key_Right) }, //NSRightArrowFunctionKey
- { 0xF727, QT_MAC_MAP_ENUM(Qt::Key_Insert) }, //NSInsertFunctionKey
- { 0xF728, QT_MAC_MAP_ENUM(Qt::Key_Delete) }, //NSDeleteFunctionKey
- { 0xF729, QT_MAC_MAP_ENUM(Qt::Key_Home) }, //NSHomeFunctionKey
- { 0xF72B, QT_MAC_MAP_ENUM(Qt::Key_End) }, //NSEndFunctionKey
- { 0xF72C, QT_MAC_MAP_ENUM(Qt::Key_PageUp) }, //NSPageUpFunctionKey
- { 0xF72D, QT_MAC_MAP_ENUM(Qt::Key_PageDown) }, //NSPageDownFunctionKey
- { 0xF72F, QT_MAC_MAP_ENUM(Qt::Key_ScrollLock) }, //NSScrollLockFunctionKey
- { 0xF730, QT_MAC_MAP_ENUM(Qt::Key_Pause) }, //NSPauseFunctionKey
- { 0xF731, QT_MAC_MAP_ENUM(Qt::Key_SysReq) }, //NSSysReqFunctionKey
- { 0xF735, QT_MAC_MAP_ENUM(Qt::Key_Menu) }, //NSMenuFunctionKey
- { 0xF738, QT_MAC_MAP_ENUM(Qt::Key_Print) }, //NSPrintFunctionKey
- { 0xF73A, QT_MAC_MAP_ENUM(Qt::Key_Clear) }, //NSClearDisplayFunctionKey
- { 0xF73D, QT_MAC_MAP_ENUM(Qt::Key_Insert) }, //NSInsertCharFunctionKey
- { 0xF73E, QT_MAC_MAP_ENUM(Qt::Key_Delete) }, //NSDeleteCharFunctionKey
- { 0xF741, QT_MAC_MAP_ENUM(Qt::Key_Select) }, //NSSelectFunctionKey
- { 0xF742, QT_MAC_MAP_ENUM(Qt::Key_Execute) }, //NSExecuteFunctionKey
- { 0xF746, QT_MAC_MAP_ENUM(Qt::Key_Help) }, //NSHelpFunctionKey
- { 0xF747, QT_MAC_MAP_ENUM(Qt::Key_Mode_switch) }, //NSModeSwitchFunctionKey
- { 0, QT_MAC_MAP_ENUM(0) }
-};
-
-static int qt_mac_get_key(int modif, const QChar &key, int virtualKey)
-{
-#ifdef DEBUG_KEY_BINDINGS
- qDebug("**Mapping key: %d (0x%04x) - %d (0x%04x)", key.unicode(), key.unicode(), virtualKey, virtualKey);
-#endif
-
- if (key == kClearCharCode && virtualKey == 0x47)
- return Qt::Key_Clear;
-
- if (key.isDigit()) {
-#ifdef DEBUG_KEY_BINDINGS
- qDebug("%d: got key: %d", __LINE__, key.digitValue());
-#endif
- return key.digitValue() + Qt::Key_0;
- }
-
- if (key.isLetter()) {
-#ifdef DEBUG_KEY_BINDINGS
- qDebug("%d: got key: %d", __LINE__, (key.toUpper().unicode() - 'A'));
-#endif
- return (key.toUpper().unicode() - 'A') + Qt::Key_A;
- }
- if (key.isSymbol()) {
-#ifdef DEBUG_KEY_BINDINGS
- qDebug("%d: got key: %d", __LINE__, (key.unicode()));
-#endif
- return key.unicode();
- }
-
- for (int i = 0; qt_mac_keyboard_symbols[i].qt_code; i++) {
- if (qt_mac_keyboard_symbols[i].mac_code == key) {
- /* To work like Qt for X11 we issue Backtab when Shift + Tab are pressed */
- if (qt_mac_keyboard_symbols[i].qt_code == Qt::Key_Tab && (modif & Qt::ShiftModifier)) {
-#ifdef DEBUG_KEY_BINDINGS
- qDebug("%d: got key: Qt::Key_Backtab", __LINE__);
-#endif
- return Qt::Key_Backtab;
- }
-
-#ifdef DEBUG_KEY_BINDINGS
- qDebug("%d: got key: %s", __LINE__, qt_mac_keyboard_symbols[i].desc);
-#endif
- return qt_mac_keyboard_symbols[i].qt_code;
- }
- }
-
- //last ditch try to match the scan code
- for (int i = 0; qt_mac_keyvkey_symbols[i].qt_code; i++) {
- if (qt_mac_keyvkey_symbols[i].mac_code == virtualKey) {
-#ifdef DEBUG_KEY_BINDINGS
- qDebug("%d: got key: %s", __LINE__, qt_mac_keyvkey_symbols[i].desc);
-#endif
- return qt_mac_keyvkey_symbols[i].qt_code;
- }
- }
-
- // check if they belong to key codes in private unicode range
- if (key >= 0xf700 && key <= 0xf747) {
- if (key >= 0xf704 && key <= 0xf726) {
- return Qt::Key_F1 + (key.unicode() - 0xf704) ;
- }
- for (int i = 0; qt_mac_private_unicode[i].qt_code; i++) {
- if (qt_mac_private_unicode[i].mac_code == key) {
- return qt_mac_private_unicode[i].qt_code;
- }
- }
-
- }
-
- //oh well
-#ifdef DEBUG_KEY_BINDINGS
- qDebug("Unknown case.. %s:%d %d[%d] %d", __FILE__, __LINE__, key.unicode(), key.toLatin1(), virtualKey);
-#endif
- return Qt::Key_unknown;
-}
-
-static Boolean qt_KeyEventComparatorProc(EventRef inEvent, void *data)
-{
- UInt32 ekind = GetEventKind(inEvent),
- eclass = GetEventClass(inEvent);
- return (eclass == kEventClassKeyboard && (void *)ekind == data);
-}
-
-static bool translateKeyEventInternal(EventHandlerCallRef er, EventRef keyEvent, int *qtKey,
- QChar *outChar, Qt::KeyboardModifiers *outModifiers, bool *outHandled)
-{
- const UInt32 ekind = GetEventKind(keyEvent);
- {
- UInt32 mac_modifiers = 0;
- GetEventParameter(keyEvent, kEventParamKeyModifiers, typeUInt32, 0,
- sizeof(mac_modifiers), 0, &mac_modifiers);
-#ifdef DEBUG_KEY_BINDINGS_MODIFIERS
- qDebug("************ Mapping modifiers and key ***********");
-#endif
- *outModifiers = qt_mac_get_modifiers(mac_modifiers);
-#ifdef DEBUG_KEY_BINDINGS_MODIFIERS
- qDebug("------------ Mapping modifiers and key -----------");
-#endif
- }
-
- //get keycode
- UInt32 keyCode = 0;
- GetEventParameter(keyEvent, kEventParamKeyCode, typeUInt32, 0, sizeof(keyCode), 0, &keyCode);
-
- //get mac mapping
- static UInt32 tmp_unused_state = 0L;
- const UCKeyboardLayout *uchrData = 0;
-#if defined(Q_OS_MAC32)
- KeyboardLayoutRef keyLayoutRef = 0;
- KLGetCurrentKeyboardLayout(&keyLayoutRef);
- OSStatus err;
- if (keyLayoutRef != 0) {
- err = KLGetKeyboardLayoutProperty(keyLayoutRef, kKLuchrData,
- (reinterpret_cast<const void **>(&uchrData)));
- if (err != noErr) {
- qWarning("Qt::internal::unable to get keyboardlayout %ld %s:%d",
- long(err), __FILE__, __LINE__);
- }
- }
-#else
- QCFType<TISInputSourceRef> inputSource = TISCopyCurrentKeyboardInputSource();
- Q_ASSERT(inputSource != 0);
- CFDataRef data = static_cast<CFDataRef>(TISGetInputSourceProperty(inputSource,
- kTISPropertyUnicodeKeyLayoutData));
- uchrData = data ? reinterpret_cast<const UCKeyboardLayout *>(CFDataGetBytePtr(data)) : 0;
-#endif
- *qtKey = Qt::Key_unknown;
- if (uchrData) {
- // The easy stuff; use the unicode stuff!
- UniChar string[4];
- UniCharCount actualLength;
- UInt32 currentModifiers = GetCurrentEventKeyModifiers();
- UInt32 currentModifiersWOAltOrControl = currentModifiers & ~(controlKey | optionKey);
- int keyAction;
- switch (ekind) {
- default:
- case kEventRawKeyDown:
- keyAction = kUCKeyActionDown;
- break;
- case kEventRawKeyUp:
- keyAction = kUCKeyActionUp;
- break;
- case kEventRawKeyRepeat:
- keyAction = kUCKeyActionAutoKey;
- break;
- }
- OSStatus err = UCKeyTranslate(uchrData, keyCode, keyAction,
- ((currentModifiersWOAltOrControl >> 8) & 0xff), LMGetKbdType(),
- kUCKeyTranslateNoDeadKeysMask, &tmp_unused_state, 4, &actualLength,
- string);
- if (err == noErr) {
- *outChar = QChar(string[0]);
- *qtKey = qt_mac_get_key(*outModifiers, *outChar, keyCode);
- if (currentModifiersWOAltOrControl != currentModifiers) {
- // Now get the real char.
- err = UCKeyTranslate(uchrData, keyCode, keyAction,
- ((currentModifiers >> 8) & 0xff), LMGetKbdType(),
- kUCKeyTranslateNoDeadKeysMask, &tmp_unused_state, 4, &actualLength,
- string);
- if (err == noErr)
- *outChar = QChar(string[0]);
- }
- } else {
- qWarning("Qt::internal::UCKeyTranslate is returnining %ld %s:%d",
- long(err), __FILE__, __LINE__);
- }
- }
-#ifdef Q_OS_MAC32
- else {
- // The road less travelled; use KeyTranslate
- const void *keyboard_layout;
- KeyboardLayoutRef keyLayoutRef = 0;
- KLGetCurrentKeyboardLayout(&keyLayoutRef);
- err = KLGetKeyboardLayoutProperty(keyLayoutRef, kKLKCHRData,
- reinterpret_cast<const void **>(&keyboard_layout));
-
- int translatedChar = KeyTranslate(keyboard_layout, (GetCurrentEventKeyModifiers() &
- (kEventKeyModifierNumLockMask|shiftKey|cmdKey|
- rightShiftKey|alphaLock)) | keyCode,
- &tmp_unused_state);
- if (!translatedChar) {
- if (outHandled) {
- qt_mac_eat_unicode_key = false;
- if (er)
- CallNextEventHandler(er, keyEvent);
- *outHandled = qt_mac_eat_unicode_key;
- }
- return false;
- }
-
- //map it into qt keys
- *qtKey = qt_mac_get_key(*outModifiers, QChar(translatedChar), keyCode);
- if (*outModifiers & (Qt::AltModifier | Qt::ControlModifier)) {
- if (translatedChar & (1 << 7)) //high ascii
- translatedChar = 0;
- } else { //now get the real ascii value
- UInt32 tmp_mod = 0L;
- static UInt32 tmp_state = 0L;
- if (*outModifiers & Qt::ShiftModifier)
- tmp_mod |= shiftKey;
- if (*outModifiers & Qt::MetaModifier)
- tmp_mod |= controlKey;
- if (*outModifiers & Qt::ControlModifier)
- tmp_mod |= cmdKey;
- if (GetCurrentEventKeyModifiers() & alphaLock) //no Qt mapper
- tmp_mod |= alphaLock;
- if (*outModifiers & Qt::AltModifier)
- tmp_mod |= optionKey;
- if (*outModifiers & Qt::KeypadModifier)
- tmp_mod |= kEventKeyModifierNumLockMask;
- translatedChar = KeyTranslate(keyboard_layout, tmp_mod | keyCode, &tmp_state);
- }
- {
- ByteCount unilen = 0;
- if (GetEventParameter(keyEvent, kEventParamKeyUnicodes, typeUnicodeText, 0, 0, &unilen, 0)
- == noErr && unilen == 2) {
- GetEventParameter(keyEvent, kEventParamKeyUnicodes, typeUnicodeText, 0, unilen, 0, outChar);
- } else if (translatedChar) {
- static QTextCodec *c = 0;
- if (!c)
- c = QTextCodec::codecForName("Apple Roman");
- char tmpChar = (char)translatedChar; // **sigh**
- *outChar = c->toUnicode(&tmpChar, 1).at(0);
- } else {
- *qtKey = qt_mac_get_key(*outModifiers, QChar(translatedChar), keyCode);
- }
- }
- }
-#endif
- if (*qtKey == Qt::Key_unknown)
- *qtKey = qt_mac_get_key(*outModifiers, *outChar, keyCode);
- return true;
-}
-
-QKeyMapperPrivate::QKeyMapperPrivate()
-{
- memset(keyLayout, 0, sizeof(keyLayout));
- keyboard_layout_format.unicode = 0;
-#ifdef Q_OS_MAC32
- keyboard_mode = NullMode;
-#else
- currentInputSource = 0;
-#endif
-}
-
-QKeyMapperPrivate::~QKeyMapperPrivate()
-{
- deleteLayouts();
-}
-
-bool
-QKeyMapperPrivate::updateKeyboard()
-{
- const UCKeyboardLayout *uchrData = 0;
-#ifdef Q_OS_MAC32
- KeyboardLayoutRef keyLayoutRef = 0;
- KLGetCurrentKeyboardLayout(&keyLayoutRef);
-
- if (keyboard_mode != NullMode && currentKeyboardLayout == keyLayoutRef)
- return false;
-
- OSStatus err;
- if (keyLayoutRef != 0) {
- err = KLGetKeyboardLayoutProperty(keyLayoutRef, kKLuchrData,
- const_cast<const void **>(reinterpret_cast<const void **>(&uchrData)));
- if (err != noErr) {
- qWarning("Qt::internal::unable to get unicode keyboardlayout %ld %s:%d",
- long(err), __FILE__, __LINE__);
- }
- }
-#else
- QCFType<TISInputSourceRef> source = TISCopyCurrentKeyboardInputSource();
- if (keyboard_mode != NullMode && source == currentInputSource) {
- return false;
- }
- Q_ASSERT(source != 0);
- CFDataRef data = static_cast<CFDataRef>(TISGetInputSourceProperty(source,
- kTISPropertyUnicodeKeyLayoutData));
- uchrData = data ? reinterpret_cast<const UCKeyboardLayout *>(CFDataGetBytePtr(data)) : 0;
-#endif
-
- keyboard_kind = LMGetKbdType();
- if (uchrData) {
- keyboard_layout_format.unicode = uchrData;
- keyboard_mode = UnicodeMode;
- }
-#ifdef Q_OS_MAC32
- else {
- void *happy;
- err = KLGetKeyboardLayoutProperty(keyLayoutRef, kKLKCHRData,
- const_cast<const void **>(reinterpret_cast<void **>(&happy)));
- if (err != noErr) {
- qFatal("Qt::internal::unable to get non-unicode layout, cannot procede %ld %s:%d",
- long(err), __FILE__, __LINE__);
- }
- keyboard_layout_format.other = happy;
- keyboard_mode = OtherMode;
- }
-
- currentKeyboardLayout = keyLayoutRef;
-#else
- currentInputSource = source;
-#endif
- keyboard_dead = 0;
- CFStringRef iso639Code;
-#ifdef Q_OS_MAC32
-# ifndef kKLLanguageCode
-# define kKLLanguageCode 9
-# endif
- KLGetKeyboardLayoutProperty(currentKeyboardLayout, kKLLanguageCode,
- reinterpret_cast<const void **>(&iso639Code));
-#else
- CFArrayRef array = static_cast<CFArrayRef>(TISGetInputSourceProperty(currentInputSource, kTISPropertyInputSourceLanguages));
- iso639Code = static_cast<CFStringRef>(CFArrayGetValueAtIndex(array, 0)); // Actually a RFC3066bis, but it's close enough
-#endif
- if (iso639Code) {
- keyboardInputLocale = QLocale(QCFString::toQString(iso639Code));
- keyboardInputDirection = keyboardInputLocale.textDirection();
- } else {
- keyboardInputLocale = QLocale::c();
- keyboardInputDirection = Qt::LeftToRight;
- }
- return true;
-}
-
-void
-QKeyMapperPrivate::deleteLayouts()
-{
- keyboard_mode = NullMode;
- for (int i = 0; i < 255; ++i) {
- if (keyLayout[i]) {
- delete keyLayout[i];
- keyLayout[i] = 0;
- }
- }
-}
-
-void
-QKeyMapperPrivate::clearMappings()
-{
- deleteLayouts();
- updateKeyboard();
-}
-
-QList<int>
-QKeyMapperPrivate::possibleKeys(QKeyEvent *e)
-{
- QList<int> ret;
-
- KeyboardLayoutItem *kbItem = keyLayout[e->nativeVirtualKey()];
- if (!kbItem) // Key is not in any keyboard layout (e.g. eisu-key on Japanese keyboard)
- return ret;
-
- int baseKey = kbItem->qtKey[0];
- Qt::KeyboardModifiers keyMods = e->modifiers();
- ret << int(baseKey + keyMods); // The base key is _always_ valid, of course
-
- for (int i = 1; i < 8; ++i) {
- Qt::KeyboardModifiers neededMods = ModsTbl[i];
- int key = kbItem->qtKey[i];
- if (key && key != baseKey && ((keyMods & neededMods) == neededMods))
- ret << int(key + (keyMods & ~neededMods));
- }
-
- return ret;
-}
-
-bool QKeyMapperPrivate::translateKeyEvent(QWidget *widget, EventHandlerCallRef er, EventRef event,
- void *info, bool grab)
-{
- Q_ASSERT(GetEventClass(event) == kEventClassKeyboard);
- bool handled_event=true;
- UInt32 ekind = GetEventKind(event);
-
- // unfortunately modifiers changed event looks quite different, so I have a separate
- // code path
- if (ekind == kEventRawKeyModifiersChanged) {
- //figure out changed modifiers, wish Apple would just send a delta
- UInt32 modifiers = 0;
- GetEventParameter(event, kEventParamKeyModifiers, typeUInt32, 0,
- sizeof(modifiers), 0, &modifiers);
- qt_mac_send_modifiers_changed(modifiers, widget);
- return true;
- }
-
- QInputContext *currentContext = qApp->inputContext();
- if (currentContext && currentContext->isComposing()) {
- if (ekind == kEventRawKeyDown) {
- QMacInputContext *context = qobject_cast<QMacInputContext*>(currentContext);
- if (context)
- context->setLastKeydownEvent(event);
- }
- return false;
- }
- // Once we process the key down , we don't need to send the saved event again from
- // kEventTextInputUnicodeForKeyEvent, so clear it.
- if (currentContext && ekind == kEventRawKeyDown) {
- QMacInputContext *context = qobject_cast<QMacInputContext*>(currentContext);
- if (context)
- context->setLastKeydownEvent(0);
- }
-
- //get modifiers
- Qt::KeyboardModifiers modifiers;
- int qtKey;
- QChar ourChar;
- if (translateKeyEventInternal(er, event, &qtKey, &ourChar, &modifiers,
- &handled_event) == false)
- return handled_event;
- QString text(ourChar);
- /* This is actually wrong - but unfortunately it is the best that can be
- done for now because of the Control/Meta mapping problems */
- if (modifiers & (Qt::ControlModifier | Qt::MetaModifier)
- && !qApp->testAttribute(Qt::AA_MacDontSwapCtrlAndMeta)) {
- text = QString();
- }
-
-
- if (widget) {
- // Try to compress key events.
- if (!text.isEmpty() && widget->testAttribute(Qt::WA_KeyCompression)) {
- EventTime lastTime = GetEventTime(event);
- for (;;) {
- EventRef releaseEvent = FindSpecificEventInQueue(GetMainEventQueue(),
- qt_KeyEventComparatorProc,
- (void*)kEventRawKeyUp);
- if (!releaseEvent)
- break;
- const EventTime releaseTime = GetEventTime(releaseEvent);
- if (releaseTime < lastTime)
- break;
- lastTime = releaseTime;
-
- EventRef pressEvent = FindSpecificEventInQueue(GetMainEventQueue(),
- qt_KeyEventComparatorProc,
- (void*)kEventRawKeyDown);
- if (!pressEvent)
- break;
- const EventTime pressTime = GetEventTime(pressEvent);
- if (pressTime < lastTime)
- break;
- lastTime = pressTime;
-
- Qt::KeyboardModifiers compressMod;
- int compressQtKey = 0;
- QChar compressChar;
- if (translateKeyEventInternal(er, pressEvent,
- &compressQtKey, &compressChar, &compressMod, 0)
- == false) {
- break;
- }
- // Copied from qapplication_x11.cpp (change both).
-
- bool stopCompression =
- // 1) misc keys
- (compressQtKey >= Qt::Key_Escape && compressQtKey <= Qt::Key_SysReq)
- // 2) cursor movement
- || (compressQtKey >= Qt::Key_Home && compressQtKey <= Qt::Key_PageDown)
- // 3) extra keys
- || (compressQtKey >= Qt::Key_Super_L && compressQtKey <= Qt::Key_Direction_R)
- // 4) something that a) doesn't translate to text or b) translates
- // to newline text
- || (compressQtKey == 0)
- || (compressChar == QLatin1Char('\n'))
- || (compressQtKey == Qt::Key_unknown);
-
- if (compressMod == modifiers && !compressChar.isNull() && !stopCompression) {
-#ifdef DEBUG_KEY_BINDINGS
- qDebug("compressing away %c", compressChar.toLatin1());
-#endif
- text += compressChar;
- // Clean up
- RemoveEventFromQueue(GetMainEventQueue(), releaseEvent);
- RemoveEventFromQueue(GetMainEventQueue(), pressEvent);
- } else {
-#ifdef DEBUG_KEY_BINDINGS
- qDebug("stoping compression..");
-#endif
- break;
- }
- }
- }
-
- // There is no way to get the scan code from carbon. But we cannot use the value 0, since
- // it indicates that the event originates from somewhere else than the keyboard
- UInt32 macScanCode = 1;
- UInt32 macVirtualKey = 0;
- GetEventParameter(event, kEventParamKeyCode, typeUInt32, 0, sizeof(macVirtualKey), 0, &macVirtualKey);
- UInt32 macModifiers = 0;
- GetEventParameter(event, kEventParamKeyModifiers, typeUInt32, 0,
- sizeof(macModifiers), 0, &macModifiers);
- // The unicode characters in the range 0xF700-0xF747 are reserved
- // by Mac OS X for transient use as keyboard function keys. We
- // wont send 'text' for such key events. This is done to match
- // behavior on other platforms.
- unsigned int *unicodeKey = (unsigned int*)info;
- if (*unicodeKey >= 0xf700 && *unicodeKey <= 0xf747)
- text = QString();
- bool isAccepted;
- handled_event = QKeyMapper::sendKeyEvent(widget, grab,
- (ekind == kEventRawKeyUp) ? QEvent::KeyRelease : QEvent::KeyPress,
- qtKey, modifiers, text, ekind == kEventRawKeyRepeat, 0,
- macScanCode, macVirtualKey, macModifiers
- ,&isAccepted
- );
- *unicodeKey = (unsigned int)isAccepted;
- }
- return handled_event;
-}
-
-void
-QKeyMapperPrivate::updateKeyMap(EventHandlerCallRef, EventRef event, void *
- unicodeKey // unicode character from NSEvent (modifiers applied)
- )
-{
- UInt32 macVirtualKey = 0;
- GetEventParameter(event, kEventParamKeyCode, typeUInt32, 0, sizeof(macVirtualKey), 0, &macVirtualKey);
- if (updateKeyboard())
- QKeyMapper::changeKeyboard();
- else if (keyLayout[macVirtualKey])
- return;
-
- UniCharCount buffer_size = 10;
- UniChar buffer[buffer_size];
- keyLayout[macVirtualKey] = new KeyboardLayoutItem;
- for (int i = 0; i < 16; ++i) {
- UniCharCount out_buffer_size = 0;
- keyLayout[macVirtualKey]->qtKey[i] = 0;
-#ifdef Q_WS_MAC32
- if (keyboard_mode == UnicodeMode) {
-#endif
- const UInt32 keyModifier = ((qt_mac_get_mac_modifiers(ModsTbl[i]) >> 8) & 0xFF);
- OSStatus err = UCKeyTranslate(keyboard_layout_format.unicode, macVirtualKey, kUCKeyActionDown, keyModifier,
- keyboard_kind, 0, &keyboard_dead, buffer_size, &out_buffer_size, buffer);
- if (err == noErr && out_buffer_size) {
- const QChar unicode(buffer[0]);
- int qtkey = qt_mac_get_key(keyModifier, unicode, macVirtualKey);
- if (qtkey == Qt::Key_unknown)
- qtkey = unicode.unicode();
- keyLayout[macVirtualKey]->qtKey[i] = qtkey;
- }
-#ifndef Q_WS_MAC32
- else {
- const QChar unicode(*((UniChar *)unicodeKey));
- int qtkey = qt_mac_get_key(keyModifier, unicode, macVirtualKey);
- if (qtkey == Qt::Key_unknown)
- qtkey = unicode.unicode();
- keyLayout[macVirtualKey]->qtKey[i] = qtkey;
- }
-#endif
-#ifdef Q_WS_MAC32
- } else {
- const UInt32 keyModifier = (qt_mac_get_mac_modifiers(ModsTbl[i]));
-
- uchar translatedChar = KeyTranslate(keyboard_layout_format.other, keyModifier | macVirtualKey, &keyboard_dead);
- if (translatedChar) {
- static QTextCodec *c = 0;
- if (!c)
- c = QTextCodec::codecForName("Apple Roman");
- const QChar unicode(c->toUnicode((const char *)&translatedChar, 1).at(0));
- int qtkey = qt_mac_get_key(keyModifier, unicode, macVirtualKey);
- if (qtkey == Qt::Key_unknown)
- qtkey = unicode.unicode();
- keyLayout[macVirtualKey]->qtKey[i] = qtkey;
- }
- }
-#endif
- }
-#ifdef DEBUG_KEY_MAPS
- qDebug("updateKeyMap for virtual key = 0x%02x!", (uint)macVirtualKey);
- for (int i = 0; i < 16; ++i) {
- qDebug(" [%d] (%d,0x%02x,'%c')", i,
- keyLayout[macVirtualKey]->qtKey[i],
- keyLayout[macVirtualKey]->qtKey[i],
- keyLayout[macVirtualKey]->qtKey[i]);
- }
-#endif
-}
-
-bool
-QKeyMapper::sendKeyEvent(QWidget *widget, bool grab,
- QEvent::Type type, int code, Qt::KeyboardModifiers modifiers,
- const QString &text, bool autorepeat, int count,
- quint32 nativeScanCode, quint32 nativeVirtualKey,
- quint32 nativeModifiers, bool *isAccepted)
-{
- Q_UNUSED(count);
- Q_UNUSED(grab);
-
- if (widget && widget->isEnabled()) {
- bool key_event = true;
- if (key_event) {
-#if defined(DEBUG_KEY_BINDINGS) || defined(DEBUG_KEY_BINDINGS_MODIFIERS)
- qDebug("KeyEvent: Sending %s to %s::%s: %s 0x%08x%s",
- type == QEvent::KeyRelease ? "KeyRelease" : "KeyPress",
- widget ? widget->metaObject()->className() : "none",
- widget ? widget->objectName().toLatin1().constData() : "",
- text.toLatin1().constData(), int(modifiers),
- autorepeat ? " Repeat" : "");
-#endif
- QKeyEventEx ke(type, code, modifiers, text, autorepeat, qMax(1, text.length()),
- nativeScanCode, nativeVirtualKey, nativeModifiers);
- bool retMe = qt_sendSpontaneousEvent(widget,&ke);
- if (isAccepted)
- *isAccepted = ke.isAccepted();
- return retMe;
- }
- }
- return false;
-}
-
-QT_END_NAMESPACE
diff --git a/src/widgets/platforms/mac/qmacdefines_mac.h b/src/widgets/platforms/mac/qmacdefines_mac.h
deleted file mode 100644
index 9f27dfa584..0000000000
--- a/src/widgets/platforms/mac/qmacdefines_mac.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Copyright (c) 2007-2008, Apple, Inc.
-**
-** All rights reserved.
-**
-** Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are met:
-**
-** * Redistributions of source code must retain the above copyright notice,
-** this list of conditions and the following disclaimer.
-**
-** * Redistributions in binary form must reproduce the above copyright notice,
-** this list of conditions and the following disclaimer in the documentation
-** and/or other materials provided with the distribution.
-**
-** * Neither the name of Apple, Inc. nor the names of its contributors
-** may be used to endorse or promote products derived from this software
-** without specific prior written permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-****************************************************************************/
-
-/*
- * qmacdefines_mac_p.h
- * All the defines you'll ever need for Qt/Mac :-)
- */
-
-/* This is just many defines. Therefore it doesn't need things like:
-QT_BEGIN_HEADER
-
-QT_BEGIN_NAMESPACE
-
-QT_MODULE(Gui)
-
-QT_END_NAMESPACE
-
-QT_END_HEADER
-
-Yes, it is an informative comment ;-)
-*/
-
-#include <QtCore/qglobal.h>
-
-#ifdef qDebug
-# define old_qDebug qDebug
-# undef qDebug
-#endif
-
-#ifdef __LP64__
-typedef signed int OSStatus;
-#else
-typedef signed long OSStatus;
-#endif
-
-#ifdef __OBJC__
-# ifdef slots
-# define old_slots slots
-# undef slots
-# endif
-#include <Cocoa/Cocoa.h>
-# ifdef old_slots
-# undef slots
-# define slots
-# undef old_slots
-# endif
-#endif
- typedef struct OpaqueEventHandlerCallRef * EventHandlerCallRef;
- typedef struct OpaqueEventRef * EventRef;
- typedef struct OpaqueMenuRef * MenuRef;
- typedef struct OpaquePasteboardRef* PasteboardRef;
- typedef struct OpaqueRgnHandle * RgnHandle;
- typedef const struct __HIShape *HIShapeRef;
- typedef struct __HIShape *HIMutableShapeRef;
- typedef struct CGRect CGRect;
- typedef struct CGImage *CGImageRef;
- typedef struct CGContext *CGContextRef;
- typedef struct GDevice * GDPtr;
- typedef GDPtr * GDHandle;
- typedef struct OpaqueIconRef * IconRef;
-# ifdef __OBJC__
- typedef NSWindow* OSWindowRef;
- typedef NSView *OSViewRef;
- typedef NSMenu *OSMenuRef;
- typedef NSEvent *OSEventRef;
-# else
- typedef void *OSWindowRef;
- typedef void *OSViewRef;
- typedef void *OSMenuRef;
- typedef void *OSEventRef;
-# endif
-
-typedef PasteboardRef OSPasteboardRef;
-typedef struct AEDesc AEDescList;
-typedef AEDescList AERecord;
-typedef AERecord AppleEvent;
-
-#ifdef check
-#undef check
-#endif
-
-#ifdef old_qDebug
-# undef qDebug
-# define qDebug QT_NO_QDEBUG_MACRO
-# undef old_qDebug
-#endif
diff --git a/src/widgets/platforms/mac/qmacgesturerecognizer_mac.mm b/src/widgets/platforms/mac/qmacgesturerecognizer_mac.mm
deleted file mode 100644
index 54823aa04f..0000000000
--- a/src/widgets/platforms/mac/qmacgesturerecognizer_mac.mm
+++ /dev/null
@@ -1,270 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 "qmacgesturerecognizer_mac_p.h"
-#include "qgesture.h"
-#include "qgesture_p.h"
-#include "qevent.h"
-#include "qevent_p.h"
-#include "qwidget.h"
-#include "qdebug.h"
-
-#ifndef QT_NO_GESTURES
-
-QT_BEGIN_NAMESPACE
-
-QMacSwipeGestureRecognizer::QMacSwipeGestureRecognizer()
-{
-}
-
-QGesture *QMacSwipeGestureRecognizer::create(QObject * /*target*/)
-{
- return new QSwipeGesture;
-}
-
-QGestureRecognizer::Result
-QMacSwipeGestureRecognizer::recognize(QGesture *gesture, QObject *obj, QEvent *event)
-{
- if (event->type() == QEvent::NativeGesture && obj->isWidgetType()) {
- QNativeGestureEvent *ev = static_cast<QNativeGestureEvent*>(event);
- switch (ev->gestureType) {
- case QNativeGestureEvent::Swipe: {
- QSwipeGesture *g = static_cast<QSwipeGesture *>(gesture);
- g->setSwipeAngle(ev->angle);
- g->setHotSpot(ev->position);
- return QGestureRecognizer::FinishGesture | QGestureRecognizer::ConsumeEventHint;
- break; }
- default:
- break;
- }
- }
-
- return QGestureRecognizer::Ignore;
-}
-
-void QMacSwipeGestureRecognizer::reset(QGesture *gesture)
-{
- QSwipeGesture *g = static_cast<QSwipeGesture *>(gesture);
- g->setSwipeAngle(0);
- QGestureRecognizer::reset(gesture);
-}
-
-////////////////////////////////////////////////////////////////////////
-
-QMacPinchGestureRecognizer::QMacPinchGestureRecognizer()
-{
-}
-
-QGesture *QMacPinchGestureRecognizer::create(QObject * /*target*/)
-{
- return new QPinchGesture;
-}
-
-QGestureRecognizer::Result
-QMacPinchGestureRecognizer::recognize(QGesture *gesture, QObject *obj, QEvent *event)
-{
- if (event->type() == QEvent::NativeGesture && obj->isWidgetType()) {
- QPinchGesture *g = static_cast<QPinchGesture *>(gesture);
- QNativeGestureEvent *ev = static_cast<QNativeGestureEvent*>(event);
- switch(ev->gestureType) {
- case QNativeGestureEvent::GestureBegin:
- reset(gesture);
- g->setStartCenterPoint(static_cast<QWidget*>(obj)->mapFromGlobal(ev->position));
- g->setCenterPoint(g->startCenterPoint());
- g->setChangeFlags(QPinchGesture::CenterPointChanged);
- g->setTotalChangeFlags(g->totalChangeFlags() | g->changeFlags());
- g->setHotSpot(ev->position);
- return QGestureRecognizer::MayBeGesture | QGestureRecognizer::ConsumeEventHint;
- case QNativeGestureEvent::Rotate: {
- g->setLastScaleFactor(g->scaleFactor());
- g->setLastRotationAngle(g->rotationAngle());
- g->setRotationAngle(g->rotationAngle() + ev->percentage);
- g->setChangeFlags(QPinchGesture::RotationAngleChanged);
- g->setTotalChangeFlags(g->totalChangeFlags() | g->changeFlags());
- g->setHotSpot(ev->position);
- return QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint;
- }
- case QNativeGestureEvent::Zoom:
- g->setLastScaleFactor(g->scaleFactor());
- g->setLastRotationAngle(g->rotationAngle());
- g->setScaleFactor(g->scaleFactor() * (1 + ev->percentage));
- g->setChangeFlags(QPinchGesture::ScaleFactorChanged);
- g->setTotalChangeFlags(g->totalChangeFlags() | g->changeFlags());
- g->setHotSpot(ev->position);
- return QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint;
- case QNativeGestureEvent::GestureEnd:
- return QGestureRecognizer::FinishGesture | QGestureRecognizer::ConsumeEventHint;
- default:
- break;
- }
- }
-
- return QGestureRecognizer::Ignore;
-}
-
-void QMacPinchGestureRecognizer::reset(QGesture *gesture)
-{
- QPinchGesture *g = static_cast<QPinchGesture *>(gesture);
- g->setChangeFlags(0);
- g->setTotalChangeFlags(0);
- g->setScaleFactor(1.0f);
- g->setTotalScaleFactor(1.0f);
- g->setLastScaleFactor(1.0f);
- g->setRotationAngle(0.0f);
- g->setTotalRotationAngle(0.0f);
- g->setLastRotationAngle(0.0f);
- g->setCenterPoint(QPointF());
- g->setStartCenterPoint(QPointF());
- g->setLastCenterPoint(QPointF());
- QGestureRecognizer::reset(gesture);
-}
-
-////////////////////////////////////////////////////////////////////////
-
-
-QMacPanGestureRecognizer::QMacPanGestureRecognizer() : _panCanceled(true)
-{
-}
-
-QGesture *QMacPanGestureRecognizer::create(QObject *target)
-{
- if (!target)
- return new QPanGesture;
-
- if (QWidget *w = qobject_cast<QWidget *>(target)) {
- w->setAttribute(Qt::WA_AcceptTouchEvents);
- w->setAttribute(Qt::WA_TouchPadAcceptSingleTouchEvents);
- return new QPanGesture;
- }
- return 0;
-}
-
-QGestureRecognizer::Result
-QMacPanGestureRecognizer::recognize(QGesture *gesture, QObject *target, QEvent *event)
-{
- const int panBeginDelay = 300;
- const int panBeginRadius = 3;
-
- QPanGesture *g = static_cast<QPanGesture *>(gesture);
-
- switch (event->type()) {
- case QEvent::TouchBegin: {
- const QTouchEvent *ev = static_cast<const QTouchEvent*>(event);
- if (ev->touchPoints().size() == 1) {
- reset(gesture);
- _startPos = QCursor::pos();
- _panTimer.start(panBeginDelay, target);
- _panCanceled = false;
- return QGestureRecognizer::MayBeGesture;
- }
- break;}
- case QEvent::TouchEnd: {
- if (_panCanceled)
- break;
-
- const QTouchEvent *ev = static_cast<const QTouchEvent*>(event);
- if (ev->touchPoints().size() == 1)
- return QGestureRecognizer::FinishGesture;
- break;}
- case QEvent::TouchUpdate: {
- if (_panCanceled)
- break;
-
- const QTouchEvent *ev = static_cast<const QTouchEvent*>(event);
- if (ev->touchPoints().size() == 1) {
- if (_panTimer.isActive()) {
- // INVARIANT: Still in maybeGesture. Check if the user
- // moved his finger so much that it makes sense to cancel the pan:
- const QPointF p = QCursor::pos();
- if ((p - _startPos).manhattanLength() > panBeginRadius) {
- _panCanceled = true;
- _panTimer.stop();
- return QGestureRecognizer::CancelGesture;
- }
- } else {
- const QPointF p = QCursor::pos();
- const QPointF posOffset = p - _startPos;
- g->setLastOffset(g->offset());
- g->setOffset(QPointF(posOffset.x(), posOffset.y()));
- g->setHotSpot(_startPos);
- return QGestureRecognizer::TriggerGesture;
- }
- } else if (_panTimer.isActive()) {
- // I only want to cancel the pan if the user is pressing
- // more than one finger, and the pan hasn't started yet:
- _panCanceled = true;
- _panTimer.stop();
- return QGestureRecognizer::CancelGesture;
- }
- break;}
- case QEvent::Timer: {
- QTimerEvent *ev = static_cast<QTimerEvent *>(event);
- if (ev->timerId() == _panTimer.timerId()) {
- _panTimer.stop();
- if (_panCanceled)
- break;
- // Begin new pan session!
- _startPos = QCursor::pos();
- g->setHotSpot(_startPos);
- return QGestureRecognizer::TriggerGesture | QGestureRecognizer::ConsumeEventHint;
- }
- break; }
- default:
- break;
- }
-
- return QGestureRecognizer::Ignore;
-}
-
-void QMacPanGestureRecognizer::reset(QGesture *gesture)
-{
- QPanGesture *g = static_cast<QPanGesture *>(gesture);
- _startPos = QPointF();
- _panCanceled = true;
- g->setOffset(QPointF(0, 0));
- g->setLastOffset(QPointF(0, 0));
- g->setAcceleration(qreal(1));
- QGestureRecognizer::reset(gesture);
-}
-
-QT_END_NAMESPACE
-
-#endif // QT_NO_GESTURES
diff --git a/src/widgets/platforms/mac/qmacgesturerecognizer_mac_p.h b/src/widgets/platforms/mac/qmacgesturerecognizer_mac_p.h
deleted file mode 100644
index c77ead3c21..0000000000
--- a/src/widgets/platforms/mac/qmacgesturerecognizer_mac_p.h
+++ /dev/null
@@ -1,104 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-#ifndef QMACSWIPEGESTURERECOGNIZER_MAC_P_H
-#define QMACSWIPEGESTURERECOGNIZER_MAC_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of other Qt classes. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qtimer.h"
-#include "qpoint.h"
-#include "qgesturerecognizer.h"
-
-#ifndef QT_NO_GESTURES
-
-QT_BEGIN_NAMESPACE
-
-class QMacSwipeGestureRecognizer : public QGestureRecognizer
-{
-public:
- QMacSwipeGestureRecognizer();
-
- QGesture *create(QObject *target);
- QGestureRecognizer::Result recognize(QGesture *gesture, QObject *watched, QEvent *event);
- void reset(QGesture *gesture);
-};
-
-class QMacPinchGestureRecognizer : public QGestureRecognizer
-{
-public:
- QMacPinchGestureRecognizer();
-
- QGesture *create(QObject *target);
- QGestureRecognizer::Result recognize(QGesture *gesture, QObject *watched, QEvent *event);
- void reset(QGesture *gesture);
-};
-
-
-class QMacPanGestureRecognizer : public QObject, public QGestureRecognizer
-{
-public:
- QMacPanGestureRecognizer();
-
- QGesture *create(QObject *target);
- QGestureRecognizer::Result recognize(QGesture *gesture, QObject *watched, QEvent *event);
- void reset(QGesture *gesture);
-private:
- QPointF _startPos;
- QBasicTimer _panTimer;
- bool _panCanceled;
-};
-
-
-QT_END_NAMESPACE
-
-#endif // QT_NO_GESTURES
-
-#endif // QMACSWIPEGESTURERECOGNIZER_MAC_P_H
diff --git a/src/widgets/platforms/mac/qmacinputcontext_mac.cpp b/src/widgets/platforms/mac/qmacinputcontext_mac.cpp
deleted file mode 100644
index ee0bf70427..0000000000
--- a/src/widgets/platforms/mac/qmacinputcontext_mac.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 <qvarlengtharray.h>
-#include <qwidget.h>
-#include <private/qmacinputcontext_p.h>
-#include "qtextformat.h"
-#include <qdebug.h>
-#include <private/qapplication_p.h>
-#include <private/qkeymapper_p.h>
-
-QT_BEGIN_NAMESPACE
-
-extern bool qt_sendSpontaneousEvent(QObject*, QEvent*);
-
-#if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5)
-# define typeRefCon typeSInt32
-# define typeByteCount typeSInt32
-#endif
-
-QMacInputContext::QMacInputContext(QObject *parent)
- : QInputContext(parent), composing(false), recursionGuard(false), textDocument(0),
- keydownEvent(0)
-{
-// createTextDocument();
-}
-
-QMacInputContext::~QMacInputContext()
-{
-}
-
-void
-QMacInputContext::createTextDocument()
-{
-}
-
-
-QString QMacInputContext::language()
-{
- return QString();
-}
-
-
-void QMacInputContext::mouseHandler(int pos, QMouseEvent *e)
-{
- Q_UNUSED(pos);
- Q_UNUSED(e);
-}
-
-
-void QMacInputContext::setFocusWidget(QWidget *w)
-{
- createTextDocument();
- QInputContext::setFocusWidget(w);
-}
-
-
-
-void
-QMacInputContext::initialize()
-{
-}
-
-void
-QMacInputContext::cleanup()
-{
-}
-
-void QMacInputContext::setLastKeydownEvent(EventRef event)
-{
- EventRef tmpEvent = keydownEvent;
- keydownEvent = event;
- if (keydownEvent)
- RetainEvent(keydownEvent);
- if (tmpEvent)
- ReleaseEvent(tmpEvent);
-}
-
-OSStatus
-QMacInputContext::globalEventProcessor(EventHandlerCallRef, EventRef event, void *)
-{
- Q_UNUSED(event);
- return noErr; //we eat the event
-}
-
-QT_END_NAMESPACE
diff --git a/src/widgets/platforms/mac/qmacinputcontext_p.h b/src/widgets/platforms/mac/qmacinputcontext_p.h
deleted file mode 100644
index 7a7ef9687b..0000000000
--- a/src/widgets/platforms/mac/qmacinputcontext_p.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-#ifndef QMACINPUTCONTEXT_P_H
-#define QMACINPUTCONTEXT_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "QtWidgets/qinputcontext.h"
-#include "private/qt_mac_p.h"
-
-QT_BEGIN_NAMESPACE
-
-class Q_WIDGETS_EXPORT QMacInputContext : public QInputContext
-{
- Q_OBJECT
- //Q_DECLARE_PRIVATE(QMacInputContext)
- void createTextDocument();
-public:
- explicit QMacInputContext(QObject* parent = 0);
- virtual ~QMacInputContext();
-
- virtual void setFocusWidget(QWidget *w);
- virtual QString identifierName() { return QLatin1String("mac"); }
- virtual QString language();
-
- virtual void reset();
-
- virtual bool isComposing() const;
-
- static OSStatus globalEventProcessor(EventHandlerCallRef, EventRef, void *);
- static void initialize();
- static void cleanup();
-
- EventRef lastKeydownEvent() { return keydownEvent; }
- void setLastKeydownEvent(EventRef);
-
-protected:
- void mouseHandler(int pos, QMouseEvent *);
-private:
- bool composing;
- bool recursionGuard;
- TSMDocumentID textDocument;
- QString currentText;
- EventRef keydownEvent;
-};
-
-QT_END_NAMESPACE
-
-#endif // QMACINPUTCONTEXT_P_H
diff --git a/src/widgets/platforms/mac/qmime_mac.cpp b/src/widgets/platforms/mac/qmime_mac.cpp
deleted file mode 100644
index 730f672ecd..0000000000
--- a/src/widgets/platforms/mac/qmime_mac.cpp
+++ /dev/null
@@ -1,1126 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 "qmime.h"
-
-//#define USE_INTERNET_CONFIG
-
-#ifndef USE_INTERNET_CONFIG
-# include "qfile.h"
-# include "qfileinfo.h"
-# include "qtextstream.h"
-# include "qdir.h"
-# include <unistd.h>
-# include <sys/types.h>
-# include <sys/stat.h>
-# include <sys/fcntl.h>
-#endif
-
-#include "qdebug.h"
-#include "qpixmap.h"
-#include "qimagewriter.h"
-#include "qimagereader.h"
-#include "qdatastream.h"
-#include "qbuffer.h"
-#include "qdatetime.h"
-#include "qapplication_p.h"
-#include "qtextcodec.h"
-#include "qregexp.h"
-#include "qurl.h"
-#include "qmap.h"
-#include <private/qt_mac_p.h>
-
-
-#ifdef Q_WS_MAC32
-#include <QuickTime/QuickTime.h>
-#include <qlibrary.h>
-#endif
-
-QT_BEGIN_NAMESPACE
-
-extern CGImageRef qt_mac_createCGImageFromQImage(const QImage &img, const QImage **imagePtr = 0); // qpaintengine_mac.cpp
-
-typedef QList<QMacPasteboardMime*> MimeList;
-Q_GLOBAL_STATIC(MimeList, globalMimeList)
-
-static void cleanup_mimes()
-{
- MimeList *mimes = globalMimeList();
- while (!mimes->isEmpty())
- delete mimes->takeFirst();
-}
-
-Q_GLOBAL_STATIC(QStringList, globalDraggedTypesList)
-
-/*!
- \fn void qRegisterDraggedTypes(const QStringList &types)
- \relates QMacPasteboardMime
-
- Registers the given \a types as custom pasteboard types.
-
- This function should be called to enable the Drag and Drop events
- for custom pasteboard types on Cocoa implementations. This is required
- in addition to a QMacPasteboardMime subclass implementation. By default
- drag and drop is enabled for all standard pasteboard types.
-
- \sa QMacPasteboardMime
-*/
-Q_WIDGETS_EXPORT void qRegisterDraggedTypes(const QStringList &types)
-{
- (*globalDraggedTypesList()) += types;
-}
-
-const QStringList& qEnabledDraggedTypes()
-{
- return (*globalDraggedTypesList());
-}
-
-
-/*****************************************************************************
- QDnD debug facilities
- *****************************************************************************/
-//#define DEBUG_MIME_MAPS
-
-//functions
-extern QString qt_mac_from_pascal_string(const Str255); //qglobal.cpp
-extern void qt_mac_from_pascal_string(QString, Str255, TextEncoding encoding=0, int len=-1); //qglobal.cpp
-
-ScrapFlavorType qt_mac_mime_type = 'CUTE';
-CFStringRef qt_mac_mime_typeUTI = CFSTR("com.pasteboard.trolltech.marker");
-
-/*!
- \class QMacPasteboardMime
- \brief The QMacPasteboardMime class converts between a MIME type and a
- \l{http://developer.apple.com/macosx/uniformtypeidentifiers.html}{Uniform
- Type Identifier (UTI)} format.
- \since 4.2
-
- \ingroup draganddrop
- \inmodule QtWidgets
-
- Qt's drag and drop and clipboard facilities use the MIME
- standard. On X11, this maps trivially to the Xdnd protocol. On
- Mac, although some applications use MIME to describe clipboard
- contents, it is more common to use Apple's UTI format.
-
- QMacPasteboardMime's role is to bridge the gap between MIME and UTI;
- By subclasses this class, one can extend Qt's drag and drop
- and clipboard handling to convert to and from unsupported, or proprietary, UTI formats.
-
- A subclass of QMacPasteboardMime will automatically be registered, and active, upon instantiation.
-
- Qt has predefined support for the following UTIs:
- \list
- \i public.utf8-plain-text - converts to "text/plain"
- \i public.utf16-plain-text - converts to "text/plain"
- \i public.html - converts to "text/html"
- \i public.url - converts to "text/uri-list"
- \i public.file-url - converts to "text/uri-list"
- \i public.tiff - converts to "application/x-qt-image"
- \i public.vcard - converts to "text/plain"
- \i com.apple.traditional-mac-plain-text - converts to "text/plain"
- \i com.apple.pict - converts to "application/x-qt-image"
- \endlist
-
- When working with MIME data, Qt will interate through all instances of QMacPasteboardMime to
- find an instance that can convert to, or from, a specific MIME type. It will do this by calling
- canConvert() on each instance, starting with (and choosing) the last created instance first.
- The actual conversions will be done by using convertToMime() and convertFromMime().
-
- \note The API uses the term "flavor" in some cases. This is for backwards
- compatibility reasons, and should now be understood as UTIs.
-*/
-
-/*! \enum QMacPasteboardMime::QMacPasteboardMimeType
- \internal
-*/
-
-/*!
- Constructs a new conversion object of type \a t, adding it to the
- globally accessed list of available convertors.
-*/
-QMacPasteboardMime::QMacPasteboardMime(char t) : type(t)
-{
- globalMimeList()->append(this);
-}
-
-/*!
- Destroys a conversion object, removing it from the global
- list of available convertors.
-*/
-QMacPasteboardMime::~QMacPasteboardMime()
-{
- if(!QApplication::closingDown())
- globalMimeList()->removeAll(this);
-}
-
-class QMacPasteboardMimeAny : public QMacPasteboardMime {
-private:
-
-public:
- QMacPasteboardMimeAny() : QMacPasteboardMime(MIME_QT_CONVERTOR|MIME_ALL) {
- }
- ~QMacPasteboardMimeAny() {
- }
- QString convertorName();
-
- QString flavorFor(const QString &mime);
- QString mimeFor(QString flav);
- bool canConvert(const QString &mime, QString flav);
- QVariant convertToMime(const QString &mime, QList<QByteArray> data, QString flav);
- QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
-};
-
-QString QMacPasteboardMimeAny::convertorName()
-{
- return QLatin1String("Any-Mime");
-}
-
-QString QMacPasteboardMimeAny::flavorFor(const QString &mime)
-{
- // do not handle the mime type name in the drag pasteboard
- if(mime == QLatin1String("application/x-qt-mime-type-name"))
- return QString();
- QString ret = QLatin1String("com.trolltech.anymime.") + mime;
- return ret.replace(QLatin1Char('/'), QLatin1String("--"));
-}
-
-QString QMacPasteboardMimeAny::mimeFor(QString flav)
-{
- const QString any_prefix = QLatin1String("com.trolltech.anymime.");
- if(flav.size() > any_prefix.length() && flav.startsWith(any_prefix))
- return flav.mid(any_prefix.length()).replace(QLatin1String("--"), QLatin1String("/"));
- return QString();
-}
-
-bool QMacPasteboardMimeAny::canConvert(const QString &mime, QString flav)
-{
- return mimeFor(flav) == mime;
-}
-
-QVariant QMacPasteboardMimeAny::convertToMime(const QString &mime, QList<QByteArray> data, QString)
-{
- if(data.count() > 1)
- qWarning("QMacPasteboardMimeAny: Cannot handle multiple member data");
- QVariant ret;
- if (mime == QLatin1String("text/plain"))
- ret = QString::fromUtf8(data.first());
- else
- ret = data.first();
- return ret;
-}
-
-QList<QByteArray> QMacPasteboardMimeAny::convertFromMime(const QString &mime, QVariant data, QString)
-{
- QList<QByteArray> ret;
- if (mime == QLatin1String("text/plain"))
- ret.append(data.toString().toUtf8());
- else
- ret.append(data.toByteArray());
- return ret;
-}
-
-class QMacPasteboardMimeTypeName : public QMacPasteboardMime {
-private:
-
-public:
- QMacPasteboardMimeTypeName() : QMacPasteboardMime(MIME_QT_CONVERTOR|MIME_ALL) {
- }
- ~QMacPasteboardMimeTypeName() {
- }
- QString convertorName();
-
- QString flavorFor(const QString &mime);
- QString mimeFor(QString flav);
- bool canConvert(const QString &mime, QString flav);
- QVariant convertToMime(const QString &mime, QList<QByteArray> data, QString flav);
- QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
-};
-
-QString QMacPasteboardMimeTypeName::convertorName()
-{
- return QLatin1String("Qt-Mime-Type");
-}
-
-QString QMacPasteboardMimeTypeName::flavorFor(const QString &mime)
-{
- if(mime == QLatin1String("application/x-qt-mime-type-name"))
- return QLatin1String("com.trolltech.qt.MimeTypeName");
- return QString();
-}
-
-QString QMacPasteboardMimeTypeName::mimeFor(QString)
-{
- return QString();
-}
-
-bool QMacPasteboardMimeTypeName::canConvert(const QString &, QString)
-{
- return false;
-}
-
-QVariant QMacPasteboardMimeTypeName::convertToMime(const QString &, QList<QByteArray>, QString)
-{
- QVariant ret;
- return ret;
-}
-
-QList<QByteArray> QMacPasteboardMimeTypeName::convertFromMime(const QString &, QVariant, QString)
-{
- QList<QByteArray> ret;
- ret.append(QString("x-qt-mime-type-name").toUtf8());
- return ret;
-}
-
-class QMacPasteboardMimePlainText : public QMacPasteboardMime {
-public:
- QMacPasteboardMimePlainText() : QMacPasteboardMime(MIME_ALL) { }
- QString convertorName();
-
- QString flavorFor(const QString &mime);
- QString mimeFor(QString flav);
- bool canConvert(const QString &mime, QString flav);
- QVariant convertToMime(const QString &mime, QList<QByteArray> data, QString flav);
- QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
-};
-
-QString QMacPasteboardMimePlainText::convertorName()
-{
- return QLatin1String("PlainText");
-}
-
-QString QMacPasteboardMimePlainText::flavorFor(const QString &mime)
-{
- if (mime == QLatin1String("text/plain"))
- return QLatin1String("com.apple.traditional-mac-plain-text");
- return QString();
-}
-
-QString QMacPasteboardMimePlainText::mimeFor(QString flav)
-{
- if (flav == QLatin1String("com.apple.traditional-mac-plain-text"))
- return QLatin1String("text/plain");
- return QString();
-}
-
-bool QMacPasteboardMimePlainText::canConvert(const QString &mime, QString flav)
-{
- return flavorFor(mime) == flav;
-}
-
-QVariant QMacPasteboardMimePlainText::convertToMime(const QString &mimetype, QList<QByteArray> data, QString flavor)
-{
- if(data.count() > 1)
- qWarning("QMacPasteboardMimePlainText: Cannot handle multiple member data");
- const QByteArray &firstData = data.first();
- QVariant ret;
- if(flavor == QCFString(QLatin1String("com.apple.traditional-mac-plain-text"))) {
- QCFString str(CFStringCreateWithBytes(kCFAllocatorDefault,
- reinterpret_cast<const UInt8 *>(firstData.constData()),
- firstData.size(), CFStringGetSystemEncoding(), false));
- ret = QString(str);
- } else {
- qWarning("QMime::convertToMime: unhandled mimetype: %s", qPrintable(mimetype));
- }
- return ret;
-}
-
-QList<QByteArray> QMacPasteboardMimePlainText::convertFromMime(const QString &, QVariant data, QString flavor)
-{
- QList<QByteArray> ret;
- QString string = data.toString();
- if(flavor == QCFString(QLatin1String("com.apple.traditional-mac-plain-text")))
- ret.append(string.toLatin1());
- return ret;
-}
-
-class QMacPasteboardMimeUnicodeText : public QMacPasteboardMime {
-public:
- QMacPasteboardMimeUnicodeText() : QMacPasteboardMime(MIME_ALL) { }
- QString convertorName();
-
- QString flavorFor(const QString &mime);
- QString mimeFor(QString flav);
- bool canConvert(const QString &mime, QString flav);
- QVariant convertToMime(const QString &mime, QList<QByteArray> data, QString flav);
- QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
-};
-
-QString QMacPasteboardMimeUnicodeText::convertorName()
-{
- return QLatin1String("UnicodeText");
-}
-
-QString QMacPasteboardMimeUnicodeText::flavorFor(const QString &mime)
-{
- if (mime == QLatin1String("text/plain"))
- return QLatin1String("public.utf16-plain-text");
- int i = mime.indexOf(QLatin1String("charset="));
- if (i >= 0) {
- QString cs(mime.mid(i+8).toLower());
- i = cs.indexOf(QLatin1Char(';'));
- if (i>=0)
- cs = cs.left(i);
- if (cs == QLatin1String("system"))
- return QLatin1String("public.utf8-plain-text");
- else if (cs == QLatin1String("iso-10646-ucs-2")
- || cs == QLatin1String("utf16"))
- return QLatin1String("public.utf16-plain-text");
- }
- return QString();
-}
-
-QString QMacPasteboardMimeUnicodeText::mimeFor(QString flav)
-{
- if (flav == QLatin1String("public.utf16-plain-text") || flav == QLatin1String("public.utf8-plain-text"))
- return QLatin1String("text/plain");
- return QString();
-}
-
-bool QMacPasteboardMimeUnicodeText::canConvert(const QString &mime, QString flav)
-{
- return flavorFor(mime) == flav;
-}
-
-QVariant QMacPasteboardMimeUnicodeText::convertToMime(const QString &mimetype, QList<QByteArray> data, QString flavor)
-{
- if(data.count() > 1)
- qWarning("QMacPasteboardMimeUnicodeText: Cannot handle multiple member data");
- const QByteArray &firstData = data.first();
- // I can only handle two types (system and unicode) so deal with them that way
- QVariant ret;
- if(flavor == QLatin1String("public.utf8-plain-text")) {
- QCFString str(CFStringCreateWithBytes(kCFAllocatorDefault,
- reinterpret_cast<const UInt8 *>(firstData.constData()),
- firstData.size(), CFStringGetSystemEncoding(), false));
- ret = QString(str);
- } else if (flavor == QLatin1String("public.utf16-plain-text")) {
- ret = QString(reinterpret_cast<const QChar *>(firstData.constData()),
- firstData.size() / sizeof(QChar));
- } else {
- qWarning("QMime::convertToMime: unhandled mimetype: %s", qPrintable(mimetype));
- }
- return ret;
-}
-
-QList<QByteArray> QMacPasteboardMimeUnicodeText::convertFromMime(const QString &, QVariant data, QString flavor)
-{
- QList<QByteArray> ret;
- QString string = data.toString();
- if(flavor == QLatin1String("public.utf8-plain-text"))
- ret.append(string.toUtf8());
- else if (flavor == QLatin1String("public.utf16-plain-text"))
- ret.append(QByteArray((char*)string.utf16(), string.length()*2));
- return ret;
-}
-
-class QMacPasteboardMimeHTMLText : public QMacPasteboardMime {
-public:
- QMacPasteboardMimeHTMLText() : QMacPasteboardMime(MIME_ALL) { }
- QString convertorName();
-
- QString flavorFor(const QString &mime);
- QString mimeFor(QString flav);
- bool canConvert(const QString &mime, QString flav);
- QVariant convertToMime(const QString &mime, QList<QByteArray> data, QString flav);
- QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
-};
-
-QString QMacPasteboardMimeHTMLText::convertorName()
-{
- return QLatin1String("HTML");
-}
-
-QString QMacPasteboardMimeHTMLText::flavorFor(const QString &mime)
-{
- if (mime == QLatin1String("text/html"))
- return QLatin1String("public.html");
- return QString();
-}
-
-QString QMacPasteboardMimeHTMLText::mimeFor(QString flav)
-{
- if (flav == QLatin1String("public.html"))
- return QLatin1String("text/html");
- return QString();
-}
-
-bool QMacPasteboardMimeHTMLText::canConvert(const QString &mime, QString flav)
-{
- return flavorFor(mime) == flav;
-}
-
-QVariant QMacPasteboardMimeHTMLText::convertToMime(const QString &mimeType, QList<QByteArray> data, QString flavor)
-{
- if (!canConvert(mimeType, flavor))
- return QVariant();
- if (data.count() > 1)
- qWarning("QMacPasteboardMimeHTMLText: Cannot handle multiple member data");
- return data.first();
-}
-
-QList<QByteArray> QMacPasteboardMimeHTMLText::convertFromMime(const QString &mime, QVariant data, QString flavor)
-{
- QList<QByteArray> ret;
- if (!canConvert(mime, flavor))
- return ret;
- ret.append(data.toByteArray());
- return ret;
-}
-
-
-#ifdef Q_WS_MAC32
-
-// This can be removed once 10.6 is the minimum (or we have to require 64-bit) whichever comes first.
-
-typedef ComponentResult (*PtrGraphicsImportSetDataHandle)(GraphicsImportComponent, Handle);
-typedef ComponentResult (*PtrGraphicsImportCreateCGImage)(GraphicsImportComponent, CGImageRef*, UInt32);
-typedef ComponentResult (*PtrGraphicsExportSetInputCGImage)(GraphicsExportComponent, CGImageRef);
-typedef ComponentResult (*PtrGraphicsExportSetOutputHandle)(GraphicsExportComponent, Handle);
-typedef ComponentResult (*PtrGraphicsExportDoExport)(GraphicsExportComponent, unsigned long *);
-
-static PtrGraphicsImportSetDataHandle ptrGraphicsImportSetDataHandle = 0;
-static PtrGraphicsImportCreateCGImage ptrGraphicsImportCreateCGImage = 0;
-static PtrGraphicsExportSetInputCGImage ptrGraphicsExportSetInputCGImage = 0;
-static PtrGraphicsExportSetOutputHandle ptrGraphicsExportSetOutputHandle = 0;
-static PtrGraphicsExportDoExport ptrGraphicsExportDoExport = 0;
-
-static bool resolveMimeQuickTimeSymbols()
-{
- if (ptrGraphicsImportSetDataHandle == 0) {
- QLibrary library(QLatin1String("/System/Library/Frameworks/QuickTime.framework/QuickTime"));
- ptrGraphicsImportSetDataHandle = reinterpret_cast<PtrGraphicsImportSetDataHandle>(library.resolve("GraphicsImportSetDataHandle"));
- ptrGraphicsImportCreateCGImage = reinterpret_cast<PtrGraphicsImportCreateCGImage>(library.resolve("GraphicsImportCreateCGImage"));
- ptrGraphicsExportSetInputCGImage = reinterpret_cast<PtrGraphicsExportSetInputCGImage>(library.resolve("GraphicsExportSetInputCGImage"));
- ptrGraphicsExportSetOutputHandle = reinterpret_cast<PtrGraphicsExportSetOutputHandle>(library.resolve("GraphicsExportSetOutputHandle"));
- ptrGraphicsExportDoExport = reinterpret_cast<PtrGraphicsExportDoExport>(library.resolve("GraphicsExportDoExport"));
- }
-
- return ptrGraphicsImportSetDataHandle != 0
- && ptrGraphicsImportCreateCGImage != 0 && ptrGraphicsExportSetInputCGImage != 0
- && ptrGraphicsExportSetOutputHandle != 0 && ptrGraphicsExportDoExport != 0;
-}
-
-class QMacPasteboardMimePict : public QMacPasteboardMime {
-public:
- QMacPasteboardMimePict() : QMacPasteboardMime(MIME_ALL) { }
- QString convertorName();
-
- QString flavorFor(const QString &mime);
- QString mimeFor(QString flav);
- bool canConvert(const QString &mime, QString flav);
- QVariant convertToMime(const QString &mime, QList<QByteArray> data, QString flav);
- QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
-};
-
-QString QMacPasteboardMimePict::convertorName()
-{
- return QLatin1String("Pict");
-}
-
-QString QMacPasteboardMimePict::flavorFor(const QString &mime)
-{
- if(mime.startsWith(QLatin1String("application/x-qt-image")))
- return QLatin1String("com.apple.pict");
- return QString();
-}
-
-QString QMacPasteboardMimePict::mimeFor(QString flav)
-{
- if(flav == QLatin1String("com.apple.pict"))
- return QLatin1String("application/x-qt-image");
- return QString();
-}
-
-bool QMacPasteboardMimePict::canConvert(const QString &mime, QString flav)
-{
- return flav == QLatin1String("com.apple.pict")
- && mime == QLatin1String("application/x-qt-image");
-}
-
-
-QVariant QMacPasteboardMimePict::convertToMime(const QString &mime, QList<QByteArray> data, QString flav)
-{
- if(data.count() > 1)
- qWarning("QMacPasteboardMimePict: Cannot handle multiple member data");
- QVariant ret;
- if (!resolveMimeQuickTimeSymbols())
- return ret;
-
- if(!canConvert(mime, flav))
- return ret;
- const QByteArray &a = data.first();
-
- // This function expects the 512 header (just to skip it, so create the extra space for it).
- Handle pic = NewHandle(a.size() + 512);
- memcpy(*pic + 512, a.constData(), a.size());
-
- GraphicsImportComponent graphicsImporter;
- ComponentResult result = OpenADefaultComponent(GraphicsImporterComponentType,
- kQTFileTypePicture, &graphicsImporter);
- QCFType<CGImageRef> cgImage;
- if (!result)
- result = ptrGraphicsImportSetDataHandle(graphicsImporter, pic);
- if (!result)
- result = ptrGraphicsImportCreateCGImage(graphicsImporter, &cgImage,
- kGraphicsImportCreateCGImageUsingCurrentSettings);
- if (!result)
- ret = QVariant(QPixmap::fromMacCGImageRef(cgImage).toImage());
- CloseComponent(graphicsImporter);
- DisposeHandle(pic);
- return ret;
-}
-
-QList<QByteArray> QMacPasteboardMimePict::convertFromMime(const QString &mime, QVariant variant,
- QString flav)
-{
- QList<QByteArray> ret;
- if (!resolveMimeQuickTimeSymbols())
- return ret;
-
- if (!canConvert(mime, flav))
- return ret;
- QCFType<CGImageRef> cgimage = qt_mac_createCGImageFromQImage(qvariant_cast<QImage>(variant));
- Handle pic = NewHandle(0);
- GraphicsExportComponent graphicsExporter;
- ComponentResult result = OpenADefaultComponent(GraphicsExporterComponentType,
- kQTFileTypePicture, &graphicsExporter);
- if (!result) {
- unsigned long sizeWritten;
- result = ptrGraphicsExportSetInputCGImage(graphicsExporter, cgimage);
- if (!result)
- result = ptrGraphicsExportSetOutputHandle(graphicsExporter, pic);
- if (!result)
- result = ptrGraphicsExportDoExport(graphicsExporter, &sizeWritten);
-
- CloseComponent(graphicsExporter);
- }
-
- int size = GetHandleSize((Handle)pic);
- // Skip the Picture File header (512 bytes) and feed the raw data
- QByteArray ar(reinterpret_cast<char *>(*pic + 512), size - 512);
- ret.append(ar);
- DisposeHandle(pic);
- return ret;
-}
-
-
-#endif //Q_WS_MAC32
-
-class QMacPasteboardMimeTiff : public QMacPasteboardMime {
-public:
- QMacPasteboardMimeTiff() : QMacPasteboardMime(MIME_ALL) { }
- QString convertorName();
-
- QString flavorFor(const QString &mime);
- QString mimeFor(QString flav);
- bool canConvert(const QString &mime, QString flav);
- QVariant convertToMime(const QString &mime, QList<QByteArray> data, QString flav);
- QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
-};
-
-QString QMacPasteboardMimeTiff::convertorName()
-{
- return QLatin1String("Tiff");
-}
-
-QString QMacPasteboardMimeTiff::flavorFor(const QString &mime)
-{
- if(mime.startsWith(QLatin1String("application/x-qt-image")))
- return QLatin1String("public.tiff");
- return QString();
-}
-
-QString QMacPasteboardMimeTiff::mimeFor(QString flav)
-{
- if(flav == QLatin1String("public.tiff"))
- return QLatin1String("application/x-qt-image");
- return QString();
-}
-
-bool QMacPasteboardMimeTiff::canConvert(const QString &mime, QString flav)
-{
- return flav == QLatin1String("public.tiff") && mime == QLatin1String("application/x-qt-image");
-}
-
-QVariant QMacPasteboardMimeTiff::convertToMime(const QString &mime, QList<QByteArray> data, QString flav)
-{
- if(data.count() > 1)
- qWarning("QMacPasteboardMimeTiff: Cannot handle multiple member data");
- QVariant ret;
- if (!canConvert(mime, flav))
- return ret;
- const QByteArray &a = data.first();
- QCFType<CGImageRef> image;
- QCFType<CFDataRef> tiffData = CFDataCreateWithBytesNoCopy(0,
- reinterpret_cast<const UInt8 *>(a.constData()),
- a.size(), kCFAllocatorNull);
- QCFType<CGImageSourceRef> imageSource = CGImageSourceCreateWithData(tiffData, 0);
- image = CGImageSourceCreateImageAtIndex(imageSource, 0, 0);
-
- if (image != 0)
- ret = QVariant(QPixmap::fromMacCGImageRef(image).toImage());
- return ret;
-}
-
-QList<QByteArray> QMacPasteboardMimeTiff::convertFromMime(const QString &mime, QVariant variant, QString flav)
-{
- QList<QByteArray> ret;
- if (!canConvert(mime, flav))
- return ret;
-
- QImage img = qvariant_cast<QImage>(variant);
- QCFType<CGImageRef> cgimage = qt_mac_createCGImageFromQImage(img);
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4)
- if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_4) {
- QCFType<CFMutableDataRef> data = CFDataCreateMutable(0, 0);
- QCFType<CGImageDestinationRef> imageDestination = CGImageDestinationCreateWithData(data, kUTTypeTIFF, 1, 0);
- if (imageDestination != 0) {
- CFTypeRef keys[2];
- QCFType<CFTypeRef> values[2];
- QCFType<CFDictionaryRef> options;
- keys[0] = kCGImagePropertyPixelWidth;
- keys[1] = kCGImagePropertyPixelHeight;
- int width = img.width();
- int height = img.height();
- values[0] = CFNumberCreate(0, kCFNumberIntType, &width);
- values[1] = CFNumberCreate(0, kCFNumberIntType, &height);
- options = CFDictionaryCreate(0, reinterpret_cast<const void **>(keys),
- reinterpret_cast<const void **>(values), 2,
- &kCFTypeDictionaryKeyCallBacks,
- &kCFTypeDictionaryValueCallBacks);
- CGImageDestinationAddImage(imageDestination, cgimage, options);
- CGImageDestinationFinalize(imageDestination);
- }
- QByteArray ar(CFDataGetLength(data), 0);
- CFDataGetBytes(data,
- CFRangeMake(0, ar.size()),
- reinterpret_cast<UInt8 *>(ar.data()));
- ret.append(ar);
- } else
-#endif
- {
-#ifdef Q_WS_MAC32
- Handle tiff = NewHandle(0);
- if (resolveMimeQuickTimeSymbols()) {
- GraphicsExportComponent graphicsExporter;
- ComponentResult result = OpenADefaultComponent(GraphicsExporterComponentType,
- kQTFileTypeTIFF, &graphicsExporter);
- if (!result) {
- unsigned long sizeWritten;
- result = ptrGraphicsExportSetInputCGImage(graphicsExporter, cgimage);
- if (!result)
- result = ptrGraphicsExportSetOutputHandle(graphicsExporter, tiff);
- if (!result)
- result = ptrGraphicsExportDoExport(graphicsExporter, &sizeWritten);
-
- CloseComponent(graphicsExporter);
- }
- }
- int size = GetHandleSize((Handle)tiff);
- QByteArray ar(reinterpret_cast<char *>(*tiff), size);
- ret.append(ar);
- DisposeHandle(tiff);
-#endif
- }
- return ret;
-}
-
-
-class QMacPasteboardMimeFileUri : public QMacPasteboardMime {
-public:
- QMacPasteboardMimeFileUri() : QMacPasteboardMime(MIME_ALL) { }
- QString convertorName();
-
- QString flavorFor(const QString &mime);
- QString mimeFor(QString flav);
- bool canConvert(const QString &mime, QString flav);
- QVariant convertToMime(const QString &mime, QList<QByteArray> data, QString flav);
- QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
-};
-
-QString QMacPasteboardMimeFileUri::convertorName()
-{
- return QLatin1String("FileURL");
-}
-
-QString QMacPasteboardMimeFileUri::flavorFor(const QString &mime)
-{
- if (mime == QLatin1String("text/uri-list"))
- return QCFString(UTTypeCreatePreferredIdentifierForTag(kUTTagClassOSType, CFSTR("furl"), 0));
- return QString();
-}
-
-QString QMacPasteboardMimeFileUri::mimeFor(QString flav)
-{
- if (flav == QCFString(UTTypeCreatePreferredIdentifierForTag(kUTTagClassOSType, CFSTR("furl"), 0)))
- return QLatin1String("text/uri-list");
- return QString();
-}
-
-bool QMacPasteboardMimeFileUri::canConvert(const QString &mime, QString flav)
-{
- return mime == QLatin1String("text/uri-list")
- && flav == QCFString(UTTypeCreatePreferredIdentifierForTag(kUTTagClassOSType, CFSTR("furl"), 0));
-}
-
-QVariant QMacPasteboardMimeFileUri::convertToMime(const QString &mime, QList<QByteArray> data, QString flav)
-{
- if(!canConvert(mime, flav))
- return QVariant();
- QList<QVariant> ret;
- for(int i = 0; i < data.size(); ++i) {
- QUrl url = QUrl::fromEncoded(data.at(i));
- if (url.host().toLower() == QLatin1String("localhost"))
- url.setHost(QString());
- url.setPath(url.path().normalized(QString::NormalizationForm_C));
- ret.append(url);
- }
- return QVariant(ret);
-}
-
-QList<QByteArray> QMacPasteboardMimeFileUri::convertFromMime(const QString &mime, QVariant data, QString flav)
-{
- QList<QByteArray> ret;
- if (!canConvert(mime, flav))
- return ret;
- QList<QVariant> urls = data.toList();
- for(int i = 0; i < urls.size(); ++i) {
- QUrl url = urls.at(i).toUrl();
- if (url.scheme().isEmpty())
- url.setScheme(QLatin1String("file"));
- if (url.scheme().toLower() == QLatin1String("file")) {
- if (url.host().isEmpty())
- url.setHost(QLatin1String("localhost"));
- url.setPath(url.path().normalized(QString::NormalizationForm_D));
- }
- ret.append(url.toEncoded());
- }
- return ret;
-}
-
-class QMacPasteboardMimeUrl : public QMacPasteboardMime {
-public:
- QMacPasteboardMimeUrl() : QMacPasteboardMime(MIME_ALL) { }
- QString convertorName();
-
- QString flavorFor(const QString &mime);
- QString mimeFor(QString flav);
- bool canConvert(const QString &mime, QString flav);
- QVariant convertToMime(const QString &mime, QList<QByteArray> data, QString flav);
- QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
-};
-
-QString QMacPasteboardMimeUrl::convertorName()
-{
- return QLatin1String("URL");
-}
-
-QString QMacPasteboardMimeUrl::flavorFor(const QString &mime)
-{
- if(mime.startsWith(QLatin1String("text/uri-list")))
- return QLatin1String("public.url");
- return QString();
-}
-
-QString QMacPasteboardMimeUrl::mimeFor(QString flav)
-{
- if(flav == QLatin1String("public.url"))
- return QLatin1String("text/uri-list");
- return QString();
-}
-
-bool QMacPasteboardMimeUrl::canConvert(const QString &mime, QString flav)
-{
- return flav == QLatin1String("public.url")
- && mime == QLatin1String("text/uri-list");
-}
-
-QVariant QMacPasteboardMimeUrl::convertToMime(const QString &mime, QList<QByteArray> data, QString flav)
-{
- if(!canConvert(mime, flav))
- return QVariant();
-
- QList<QVariant> ret;
- for (int i=0; i<data.size(); ++i) {
- QUrl url = QUrl::fromEncoded(data.at(i));
- if (url.host().toLower() == QLatin1String("localhost"))
- url.setHost(QString());
- url.setPath(url.path().normalized(QString::NormalizationForm_C));
- ret.append(url);
- }
- return QVariant(ret);
-}
-
-QList<QByteArray> QMacPasteboardMimeUrl::convertFromMime(const QString &mime, QVariant data, QString flav)
-{
- QList<QByteArray> ret;
- if (!canConvert(mime, flav))
- return ret;
-
- QList<QVariant> urls = data.toList();
- for(int i=0; i<urls.size(); ++i) {
- QUrl url = urls.at(i).toUrl();
- if (url.scheme().isEmpty())
- url.setScheme(QLatin1String("file"));
- if (url.scheme().toLower() == QLatin1String("file")) {
- if (url.host().isEmpty())
- url.setHost(QLatin1String("localhost"));
- url.setPath(url.path().normalized(QString::NormalizationForm_D));
- }
- ret.append(url.toEncoded());
- }
- return ret;
-}
-
-class QMacPasteboardMimeVCard : public QMacPasteboardMime
-{
-public:
- QMacPasteboardMimeVCard() : QMacPasteboardMime(MIME_ALL){ }
- QString convertorName();
-
- QString flavorFor(const QString &mime);
- QString mimeFor(QString flav);
- bool canConvert(const QString &mime, QString flav);
- QVariant convertToMime(const QString &mime, QList<QByteArray> data, QString flav);
- QList<QByteArray> convertFromMime(const QString &mime, QVariant data, QString flav);
-};
-
-QString QMacPasteboardMimeVCard::convertorName()
-{
- return QString("VCard");
-}
-
-bool QMacPasteboardMimeVCard::canConvert(const QString &mime, QString flav)
-{
- return mimeFor(flav) == mime;
-}
-
-QString QMacPasteboardMimeVCard::flavorFor(const QString &mime)
-{
- if(mime.startsWith(QLatin1String("text/plain")))
- return QLatin1String("public.vcard");
- return QString();
-}
-
-QString QMacPasteboardMimeVCard::mimeFor(QString flav)
-{
- if (flav == QLatin1String("public.vcard"))
- return QLatin1String("text/plain");
- return QString();
-}
-
-QVariant QMacPasteboardMimeVCard::convertToMime(const QString &mime, QList<QByteArray> data, QString)
-{
- QByteArray cards;
- if (mime == QLatin1String("text/plain")) {
- for (int i=0; i<data.size(); ++i)
- cards += data[i];
- }
- return QVariant(cards);
-}
-
-QList<QByteArray> QMacPasteboardMimeVCard::convertFromMime(const QString &mime, QVariant data, QString)
-{
- QList<QByteArray> ret;
- if (mime == QLatin1String("text/plain"))
- ret.append(data.toString().toUtf8());
- return ret;
-}
-
-
-/*!
- \internal
-
- This is an internal function.
-*/
-void QMacPasteboardMime::initialize()
-{
- if(globalMimeList()->isEmpty()) {
- qAddPostRoutine(cleanup_mimes);
-
- //standard types that we wrap
- new QMacPasteboardMimeTiff;
-#ifdef Q_WS_MAC32
- // 10.6 does automatic synthesis to and from PICT to standard image types (like TIFF),
- // so don't bother doing it ourselves, especially since it's not available in 64-bit.
- if (QSysInfo::MacintoshVersion < QSysInfo::MV_10_6)
- new QMacPasteboardMimePict;
-#endif
- new QMacPasteboardMimeUnicodeText;
- new QMacPasteboardMimePlainText;
- new QMacPasteboardMimeHTMLText;
- new QMacPasteboardMimeFileUri;
- new QMacPasteboardMimeUrl;
- new QMacPasteboardMimeTypeName;
- new QMacPasteboardMimeVCard;
- //make sure our "non-standard" types are always last! --Sam
- new QMacPasteboardMimeAny;
- }
-}
-
-/*!
- Returns the most-recently created QMacPasteboardMime of type \a t that can convert
- between the \a mime and \a flav formats. Returns 0 if no such convertor
- exists.
-*/
-QMacPasteboardMime*
-QMacPasteboardMime::convertor(uchar t, const QString &mime, QString flav)
-{
- MimeList *mimes = globalMimeList();
- for(MimeList::const_iterator it = mimes->constBegin(); it != mimes->constEnd(); ++it) {
-#ifdef DEBUG_MIME_MAPS
- qDebug("QMacPasteboardMime::convertor: seeing if %s (%d) can convert %s to %d[%c%c%c%c] [%d]",
- (*it)->convertorName().toLatin1().constData(),
- (*it)->type & t, mime.toLatin1().constData(),
- flav, (flav >> 24) & 0xFF, (flav >> 16) & 0xFF, (flav >> 8) & 0xFF, (flav) & 0xFF,
- (*it)->canConvert(mime,flav));
- for(int i = 0; i < (*it)->countFlavors(); ++i) {
- int f = (*it)->flavor(i);
- qDebug(" %d) %d[%c%c%c%c] [%s]", i, f,
- (f >> 24) & 0xFF, (f >> 16) & 0xFF, (f >> 8) & 0xFF, (f) & 0xFF,
- (*it)->convertorName().toLatin1().constData());
- }
-#endif
- if(((*it)->type & t) && (*it)->canConvert(mime, flav))
- return (*it);
- }
- return 0;
-}
-/*!
- Returns a MIME type of type \a t for \a flav, or 0 if none exists.
-*/
-QString QMacPasteboardMime::flavorToMime(uchar t, QString flav)
-{
- MimeList *mimes = globalMimeList();
- for(MimeList::const_iterator it = mimes->constBegin(); it != mimes->constEnd(); ++it) {
-#ifdef DEBUG_MIME_MAPS
- qDebug("QMacMIme::flavorToMime: attempting %s (%d) for flavor %d[%c%c%c%c] [%s]",
- (*it)->convertorName().toLatin1().constData(),
- (*it)->type & t, flav, (flav >> 24) & 0xFF, (flav >> 16) & 0xFF, (flav >> 8) & 0xFF, (flav) & 0xFF,
- (*it)->mimeFor(flav).toLatin1().constData());
-
-#endif
- if((*it)->type & t) {
- QString mimeType = (*it)->mimeFor(flav);
- if(!mimeType.isNull())
- return mimeType;
- }
- }
- return QString();
-}
-
-/*!
- Returns a list of all currently defined QMacPasteboardMime objects of type \a t.
-*/
-QList<QMacPasteboardMime*> QMacPasteboardMime::all(uchar t)
-{
- MimeList ret;
- MimeList *mimes = globalMimeList();
- for(MimeList::const_iterator it = mimes->constBegin(); it != mimes->constEnd(); ++it) {
- if((*it)->type & t)
- ret.append((*it));
- }
- return ret;
-}
-
-
-/*!
- \fn QString QMacPasteboardMime::convertorName()
-
- Returns a name for the convertor.
-
- All subclasses must reimplement this pure virtual function.
-*/
-
-/*!
- \fn bool QMacPasteboardMime::canConvert(const QString &mime, QString flav)
-
- Returns true if the convertor can convert (both ways) between
- \a mime and \a flav; otherwise returns false.
-
- All subclasses must reimplement this pure virtual function.
-*/
-
-/*!
- \fn QString QMacPasteboardMime::mimeFor(QString flav)
-
- Returns the MIME UTI used for Mac flavor \a flav, or 0 if this
- convertor does not support \a flav.
-
- All subclasses must reimplement this pure virtual function.
-*/
-
-/*!
- \fn QString QMacPasteboardMime::flavorFor(const QString &mime)
-
- Returns the Mac UTI used for MIME type \a mime, or 0 if this
- convertor does not support \a mime.
-
- All subclasses must reimplement this pure virtual function.
-*/
-
-/*!
- \fn QVariant QMacPasteboardMime::convertToMime(const QString &mime, QList<QByteArray> data, QString flav)
-
- Returns \a data converted from Mac UTI \a flav to MIME type \a
- mime.
-
- Note that Mac flavors must all be self-terminating. The input \a
- data may contain trailing data.
-
- All subclasses must reimplement this pure virtual function.
-*/
-
-/*!
- \fn QList<QByteArray> QMacPasteboardMime::convertFromMime(const QString &mime, QVariant data, QString flav)
-
- Returns \a data converted from MIME type \a mime
- to Mac UTI \a flav.
-
- Note that Mac flavors must all be self-terminating. The return
- value may contain trailing data.
-
- All subclasses must reimplement this pure virtual function.
-*/
-
-
-QT_END_NAMESPACE
diff --git a/src/widgets/platforms/mac/qnsframeview_mac_p.h b/src/widgets/platforms/mac/qnsframeview_mac_p.h
deleted file mode 100644
index 1534ad1461..0000000000
--- a/src/widgets/platforms/mac/qnsframeview_mac_p.h
+++ /dev/null
@@ -1,154 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of qapplication_*.cpp, qwidget*.cpp, qcolor_x11.cpp, qfiledialog.cpp
-// and many other. This header file may change from version to version
-// without notice, or even be removed.
-//
-// We mean it.
-//
-
-// Private AppKit class (dumped from classdump).
-
-#import <Cocoa/Cocoa.h>
-
-@interface NSFrameView : NSView
-{
- unsigned int styleMask;
- NSString *_title;
- NSCell *titleCell;
- NSButton *closeButton;
- NSButton *zoomButton;
- NSButton *minimizeButton;
- char resizeByIncrement;
- char frameNeedsDisplay;
- unsigned char tabViewCount;
- NSSize resizeParameter;
- int shadowState;
-}
-
-+ (void)initialize;
-+ (void)initTitleCell:fp8 styleMask:(unsigned int)fp12;
-+ (struct _NSRect)frameRectForContentRect:(struct _NSRect)fp8 styleMask:(unsigned int)fp24;
-+ (struct _NSRect)contentRectForFrameRect:(struct _NSRect)fp8 styleMask:(unsigned int)fp24;
-+ (struct _NSSize)minFrameSizeForMinContentSize:(struct _NSSize)fp8 styleMask:(unsigned int)fp16;
-+ (struct _NSSize)minContentSizeForMinFrameSize:(struct _NSSize)fp8 styleMask:(unsigned int)fp16;
-+ (float)minFrameWidthWithTitle:fp8 styleMask:(unsigned int)fp12;
-+ (unsigned int)_validateStyleMask:(unsigned int)fp8;
-- initWithFrame:(struct _NSRect)fp8 styleMask:(unsigned int)fp24 owner:fp28;
-- initWithFrame:(struct _NSRect)fp8;
-- (void)dealloc;
-- (void)shapeWindow;
-- (void)tileAndSetWindowShape:(char)fp8;
-- (void)tile;
-- (void)drawRect:(struct _NSRect)fp8;
-- (void)_drawFrameRects:(struct _NSRect)fp8;
-- (void)drawFrame:(struct _NSRect)fp8;
-- (void)drawThemeContentFill:(struct _NSRect)fp8 inView:fp24;
-- (void)drawWindowBackgroundRect:(struct _NSRect)fp8;
-- (void)drawWindowBackgroundRegion:(void *)fp8;
-- (float)contentAlpha;
-- (void)_windowChangedKeyState;
-- (void)_updateButtonState;
-- (char)_isSheet;
-- (char)_isUtility;
-- (void)setShadowState:(int)fp8;
-- (int)shadowState;
-- (char)_canHaveToolbar;
-- (char)_toolbarIsInTransition;
-- (char)_toolbarIsShown;
-- (char)_toolbarIsHidden;
-- (void)_showToolbarWithAnimation:(char)fp8;
-- (void)_hideToolbarWithAnimation:(char)fp8;
-- (float)_distanceFromToolbarBaseToTitlebar;
-- (int)_shadowType;
-- (unsigned int)_shadowFlags;
-- (void)_setShadowParameters;
-- (void)_drawFrameShadowAndFlushContext:fp8;
-- (void)setUpGState;
-- (void)adjustHalftonePhase;
-- (void)systemColorsDidChange:fp8;
-- frameColor;
-- contentFill;
-- (void)tabViewAdded;
-- (void)tabViewRemoved;
-- title;
-- (void)setTitle:fp8;
-- titleCell;
-- (void)initTitleCell:fp8;
-- (void)setResizeIncrements:(struct _NSSize)fp8;
-- (struct _NSSize)resizeIncrements;
-- (void)setAspectRatio:(struct _NSSize)fp8;
-- (struct _NSSize)aspectRatio;
-- (unsigned int)styleMask;
-- representedFilename;
-- (void)setRepresentedFilename:fp8;
-- (void)setDocumentEdited:(char)fp8;
-- (void)_setFrameNeedsDisplay:(char)fp8;
-- (char)frameNeedsDisplay;
-- titleFont;
-- (struct _NSRect)_maxTitlebarTitleRect;
-- (struct _NSRect)titlebarRect;
-- (void)_setUtilityWindow:(char)fp8;
-- (void)_setNonactivatingPanel:(char)fp8;
-- (void)setIsClosable:(char)fp8;
-- (void)setIsResizable:(char)fp8;
-- closeButton;
-- minimizeButton;
-- zoomButton;
-- (struct _NSSize)miniaturizedSize;
-- (void)_clearDragMargins;
-- (void)_resetDragMargins;
-- (void)setTitle:fp8 andDefeatWrap:(char)fp12;
-- (struct _NSRect)frameRectForContentRect:(struct _NSRect)fp8 styleMask:(unsigned int)fp24;
-- (struct _NSRect)contentRectForFrameRect:(struct _NSRect)fp8 styleMask:(unsigned int)fp24;
-- (struct _NSSize)minFrameSizeForMinContentSize:(struct _NSSize)fp8 styleMask:(unsigned int)fp16;
-- (struct _NSRect)dragRectForFrameRect:(struct _NSRect)fp8;
-- (struct _NSRect)contentRect;
-- (struct _NSSize)minFrameSize;
-- (void)_recursiveDisplayRectIfNeededIgnoringOpacity:(struct _NSRect)fp8 isVisibleRect:(char)fp24 rectIsVisibleRectForView:fp28 topView:(char)fp32;
-
-@end
diff --git a/src/widgets/platforms/mac/qnsthemeframe_mac_p.h b/src/widgets/platforms/mac/qnsthemeframe_mac_p.h
deleted file mode 100644
index 1768ad8687..0000000000
--- a/src/widgets/platforms/mac/qnsthemeframe_mac_p.h
+++ /dev/null
@@ -1,246 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of qapplication_*.cpp, qwidget*.cpp, qcolor_x11.cpp, qfiledialog.cpp
-// and many other. This header file may change from version to version
-// without notice, or even be removed.
-//
-// We mean it.
-//
-
-// Private AppKit class (dumped from classdump).
-
-#import <Cocoa/Cocoa.h>
-#import "qnstitledframe_mac_p.h"
-
-@interface NSThemeFrame : NSTitledFrame
-{
- NSButton *toolbarButton;
- int toolbarVisibleStatus;
- NSImage *showToolbarTransitionImage;
- NSSize showToolbarPreWindowSize;
- NSButton *modeButton;
- int leftGroupTrackingTagNum;
- int rightGroupTrackingTagNum;
- char mouseInsideLeftGroup;
- char mouseInsideRightGroup;
- int widgetState;
- NSString *displayName;
-}
-
-+ (void)initialize;
-+ (float)_windowBorderThickness:(unsigned int)fp8;
-+ (float)_minXWindowBorderWidth:(unsigned int)fp8;
-+ (float)_maxXWindowBorderWidth:(unsigned int)fp8;
-+ (float)_minYWindowBorderHeight:(unsigned int)fp8;
-+ (float)_windowTitlebarButtonSpacingWidth:(unsigned int)fp8;
-+ (float)_windowFileButtonSpacingWidth:(unsigned int)fp8;
-+ (float)_minXTitlebarWidgetInset:(unsigned int)fp8;
-+ (float)_maxXTitlebarWidgetInset:(unsigned int)fp8;
-+ (float)minFrameWidthWithTitle:fp8 styleMask:(unsigned int)fp12;
-+ (float)_windowSideTitlebarTitleMinWidth:(unsigned int)fp8;
-+ (float)_windowTitlebarTitleMinHeight:(unsigned int)fp8;
-+ (float)_sideTitlebarWidth:(unsigned int)fp8;
-+ (float)_titlebarHeight:(unsigned int)fp8;
-+ (float)_resizeHeight:(unsigned int)fp8;
-+ (char)_resizeFromEdge;
-+ (struct _NSSize)sizeOfTitlebarButtons:(unsigned int)fp8;
-+ (float)_contentToFrameMinXWidth:(unsigned int)fp8;
-+ (float)_contentToFrameMaxXWidth:(unsigned int)fp8;
-+ (float)_contentToFrameMinYHeight:(unsigned int)fp8;
-+ (float)_contentToFrameMaxYHeight:(unsigned int)fp8;
-+ (unsigned int)_validateStyleMask:(unsigned int)fp8;
-- (struct _NSSize)_topCornerSize;
-- (struct _NSSize)_bottomCornerSize;
-- (void *)_createWindowOpaqueShape;
-- (void)shapeWindow;
-- (void)_recursiveDisplayRectIfNeededIgnoringOpacity:(NSRect)fp8 isVisibleRect:(char)fp24 rectIsVisibleRectForView:fp28 topView:(char)fp32;
-- (void *)_regionForOpaqueDescendants:(NSRect)fp8 forMove:(char)fp24;
-- (void)_drawFrameInterior:(NSRect *)fp8 clip:(NSRect)fp12;
-- (void)_setTextShadow:(char)fp8;
-- (void)_drawTitleBar:(NSRect)fp8;
-- (void)_drawResizeIndicators:(NSRect)fp8;
-- (void)_drawFrameRects:(NSRect)fp8;
-- (void)drawFrame:(NSRect)fp8;
-- contentFill;
-- (void)viewDidEndLiveResize;
-- (float)contentAlpha;
-- (void)setThemeFrameWidgetState:(int)fp8;
-- (char)constrainResizeEdge:(int *)fp8 withDelta:(struct _NSSize)fp12 elapsedTime:(float)fp20;
-- (void)addFileButton:fp8;
-- (void)_updateButtons;
-- (void)_updateButtonState;
-- newCloseButton;
-- newZoomButton;
-- newMiniaturizeButton;
-- newToolbarButton;
-- newFileButton;
-- (void)_resetTitleBarButtons;
-- (void)setDocumentEdited:(char)fp8;
-- toolbarButton;
-- modeButton;
-- initWithFrame:(NSRect)fp8 styleMask:(unsigned int)fp24 owner:fp28;
-- (void)dealloc;
-- (void)setFrameSize:(struct _NSSize)fp8;
-- (char)_canHaveToolbar;
-- (char)_toolbarIsInTransition;
-- (char)_toolbarIsShown;
-- (char)_toolbarIsHidden;
-- _toolbarView;
-- _toolbar;
-- (float)_distanceFromToolbarBaseToTitlebar;
-- (unsigned int)_shadowFlags;
-- (NSRect)frameRectForContentRect:(NSRect)fp8 styleMask:(unsigned int)fp24;
-- (NSRect)contentRectForFrameRect:(NSRect)fp8 styleMask:(unsigned int)fp24;
-- (struct _NSSize)minFrameSizeForMinContentSize:(struct _NSSize)fp8 styleMask:(unsigned int)fp16;
-- (NSRect)contentRect;
-- (NSRect)_contentRectExcludingToolbar;
-- (NSRect)_contentRectIncludingToolbarAtHome;
-- (void)_setToolbarShowHideResizeWeightingOptimizationOn:(char)fp8;
-- (char)_usingToolbarShowHideWeightingOptimization;
-- (void)handleSetFrameCommonRedisplay;
-- (void)_startLiveResizeAsTopLevel;
-- (void)_endLiveResizeAsTopLevel;
-- (void)_growContentReshapeContentAndToolbarView:(int)fp8 animate:(char)fp12;
-- (char)_growWindowReshapeContentAndToolbarView:(int)fp8 animate:(char)fp12;
-- (void)_reshapeContentAndToolbarView:(int)fp8 resizeWindow:(char)fp12 animate:(char)fp16;
-- (void)_toolbarFrameSizeChanged:fp8 oldSize:(struct _NSSize)fp12;
-- (void)_syncToolbarPosition;
-- (void)_showHideToolbar:(int)fp8 resizeWindow:(char)fp12 animate:(char)fp16;
-- (void)_showToolbarWithAnimation:(char)fp8;
-- (void)_hideToolbarWithAnimation:(char)fp8;
-- (void)_drawToolbarTransitionIfNecessary;
-- (void)drawRect:(NSRect)fp8;
-- (void)resetCursorRects;
-- (char)shouldBeTreatedAsInkEvent:fp8;
-- (char)_shouldBeTreatedAsInkEventInInactiveWindow:fp8;
-//- hitTest:(struct _NSPoint)fp8; // collides with hittest in qcocoasharedwindowmethods_mac_p.h
-- (NSRect)_leftGroupRect;
-- (NSRect)_rightGroupRect;
-- (void)_updateWidgets;
-- (void)_updateMouseTracking;
-- (void)mouseEntered:fp8;
-- (void)mouseExited:fp8;
-- (void)_setMouseEnteredGroup:(char)fp8 entered:(char)fp12;
-- (char)_mouseInGroup:fp8;
-- (struct _NSSize)miniaturizedSize;
-- (float)_minXTitlebarDecorationMinWidth;
-- (float)_maxXTitlebarDecorationMinWidth;
-- (struct _NSSize)minFrameSize;
-- (float)_windowBorderThickness;
-- (float)_windowTitlebarXResizeBorderThickness;
-- (float)_windowTitlebarYResizeBorderThickness;
-- (float)_windowResizeBorderThickness;
-- (float)_minXWindowBorderWidth;
-- (float)_maxXWindowBorderWidth;
-- (float)_minYWindowBorderHeight;
-- (float)_maxYWindowBorderHeight;
-- (float)_minYTitlebarButtonsOffset;
-- (float)_minYTitlebarTitleOffset;
-- (float)_sideTitlebarWidth;
-- (float)_titlebarHeight;
-- (NSRect)_titlebarTitleRect;
-- (NSRect)titlebarRect;
-- (float)_windowTitlebarTitleMinHeight;
-- (struct _NSSize)_sizeOfTitlebarFileButton;
-- (struct _NSSize)sizeOfTitlebarToolbarButton;
-- (float)_windowTitlebarButtonSpacingWidth;
-- (float)_windowFileButtonSpacingWidth;
-- (float)_minXTitlebarWidgetInset;
-- (float)_maxXTitlebarWidgetInset;
-- (float)_minXTitlebarButtonsWidth;
-- (float)_maxXTitlebarButtonsWidth;
-- (struct _NSPoint)_closeButtonOrigin;
-- (struct _NSPoint)_zoomButtonOrigin;
-- (struct _NSPoint)_collapseButtonOrigin;
-- (struct _NSPoint)_toolbarButtonOrigin;
-- (struct _NSPoint)_fileButtonOrigin;
-- (void)_tileTitlebar;
-- (NSRect)_commandPopupRect;
-- (void)_resetDragMargins;
-- (float)_maxYTitlebarDragHeight;
-- (float)_minXTitlebarDragWidth;
-- (float)_maxXTitlebarDragWidth;
-- (float)_contentToFrameMinXWidth;
-- (float)_contentToFrameMaxXWidth;
-- (float)_contentToFrameMinYHeight;
-- (float)_contentToFrameMaxYHeight;
-- (float)_windowResizeCornerThickness;
-- (NSRect)_minYResizeRect;
-- (NSRect)_minYminXResizeRect;
-- (NSRect)_minYmaxXResizeRect;
-- (NSRect)_minXResizeRect;
-- (NSRect)_minXminYResizeRect;
-- (NSRect)_minXmaxYResizeRect;
-- (NSRect)_maxYResizeRect;
-- (NSRect)_maxYminXResizeRect;
-- (NSRect)_maxYmaxXResizeRect;
-- (NSRect)_maxXResizeRect;
-- (NSRect)_maxXminYResizeRect;
-- (NSRect)_maxXmaxYResizeRect;
-- (NSRect)_minXTitlebarResizeRect;
-- (NSRect)_maxXTitlebarResizeRect;
-- (NSRect)_minXBorderRect;
-- (NSRect)_maxXBorderRect;
-- (NSRect)_maxYBorderRect;
-- (NSRect)_minYBorderRect;
-- (void)_setUtilityWindow:(char)fp8;
-- (char)_isUtility;
-- (float)_sheetHeightAdjustment;
-- (void)_setSheet:(char)fp8;
-- (char)_isSheet;
-- (char)_isResizable;
-- (char)_isClosable;
-- (char)_isMiniaturizable;
-- (char)_hasToolbar;
-- (NSRect)_growBoxRect;
-- (void)_drawGrowBoxWithClip:(NSRect)fp8;
-- (char)_inactiveButtonsNeedMask;
-- (void)mouseDown:fp8;
-- _displayName;
-- (void)_setDisplayName:fp8;
-
-@end
diff --git a/src/widgets/platforms/mac/qnstitledframe_mac_p.h b/src/widgets/platforms/mac/qnstitledframe_mac_p.h
deleted file mode 100644
index 531b943646..0000000000
--- a/src/widgets/platforms/mac/qnstitledframe_mac_p.h
+++ /dev/null
@@ -1,205 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of qapplication_*.cpp, qwidget*.cpp, qcolor_x11.cpp, qfiledialog.cpp
-// and many other. This header file may change from version to version
-// without notice, or even be removed.
-//
-// We mean it.
-//
-
-// Private AppKit class (dumped from classdump).
-
-#import <Cocoa/Cocoa.h>
-#import "qnsframeview_mac_p.h"
-
-
-@interface NSTitledFrame : NSFrameView
-{
- int resizeFlags;
- id fileButton; /* NSDocumentDragButton* */
- NSSize titleCellSize;
-}
-
-+ (float)_windowBorderThickness:(unsigned int)fp8;
-+ (float)_minXWindowBorderWidth:(unsigned int)fp8;
-+ (float)_maxXWindowBorderWidth:(unsigned int)fp8;
-+ (float)_minYWindowBorderHeight:(unsigned int)fp8;
-+ (char)_resizeFromEdge;
-+ (NSRect)frameRectForContentRect:(NSRect)fp8 styleMask:(unsigned int)fp24;
-+ (NSRect)contentRectForFrameRect:(NSRect)fp8 styleMask:(unsigned int)fp24;
-+ (struct _NSSize)minFrameSizeForMinContentSize:(struct _NSSize)fp8 styleMask:(unsigned int)fp16;
-+ (struct _NSSize)minContentSizeForMinFrameSize:(struct _NSSize)fp8 styleMask:(unsigned int)fp16;
-+ (float)minFrameWidthWithTitle:fp8 styleMask:(unsigned int)fp12;
-+ (struct _NSSize)_titleCellSizeForTitle:fp8 styleMask:(unsigned int)fp12;
-+ (float)_titleCellHeight:(unsigned int)fp8;
-+ (float)_windowTitlebarTitleMinHeight:(unsigned int)fp8;
-+ (float)_titlebarHeight:(unsigned int)fp8;
-+ (struct _NSSize)sizeOfTitlebarButtons:(unsigned int)fp8;
-+ (float)windowTitlebarLinesSpacingWidth:(unsigned int)fp8;
-+ (float)windowTitlebarTitleLinesSpacingWidth:(unsigned int)fp8;
-+ (float)_contentToFrameMinXWidth:(unsigned int)fp8;
-+ (float)_contentToFrameMaxXWidth:(unsigned int)fp8;
-+ (float)_contentToFrameMinYHeight:(unsigned int)fp8;
-+ (float)_contentToFrameMaxYHeight:(unsigned int)fp8;
-- initWithFrame:(NSRect)fp8 styleMask:(unsigned int)fp24 owner:fp28;
-- (void)dealloc;
-- (void)setIsClosable:(char)fp8;
-- (void)setIsResizable:(char)fp8;
-- (void)_resetTitleFont;
-- (void)_setUtilityWindow:(char)fp8;
-- (char)isOpaque;
-- (char)worksWhenModal;
-- (void)propagateFrameDirtyRects:(NSRect)fp8;
-- (void)_showDrawRect:(NSRect)fp8;
-- (void)_drawFrameInterior:(NSRect *)fp8 clip:(NSRect)fp12;
-- (void)drawFrame:(NSRect)fp8;
-- (void)_drawFrameRects:(NSRect)fp8;
-- (void)_drawTitlebar:(NSRect)fp8;
-- (void)_drawTitlebarPattern:(int)fp8 inRect:(NSRect)fp12 clippedByRect:(NSRect)fp28 forKey:(char)fp44 alignment:(int)fp48;
-- (void)_drawTitlebarLines:(int)fp8 inRect:(NSRect)fp12 clippedByRect:(NSRect)fp28;
-- frameHighlightColor;
-- frameShadowColor;
-- (void)setFrameSize:(struct _NSSize)fp8;
-- (void)setFrameOrigin:(struct _NSPoint)fp8;
-- (void)tileAndSetWindowShape:(char)fp8;
-- (void)tile;
-- (void)_tileTitlebar;
-- (void)setTitle:fp8;
-- (char)_shouldRepresentFilename;
-- (void)setRepresentedFilename:fp8;
-- (void)_drawTitleStringIn:(NSRect)fp8 withColor:fp24;
-- titleFont;
-- (void)_drawResizeIndicators:(NSRect)fp8;
-- titleButtonOfClass:(Class)fp8;
-- initTitleButton:fp8;
-- newCloseButton;
-- newZoomButton;
-- newMiniaturizeButton;
-- newFileButton;
-- fileButton;
-- (void)_removeButtons;
-- (void)_updateButtons;
-- (char)_eventInTitlebar:fp8;
-- (char)acceptsFirstMouse:fp8;
-- (void)mouseDown:fp8;
-- (void)mouseUp:fp8;
-- (void)rightMouseDown:fp8;
-- (void)rightMouseUp:fp8;
-- (int)resizeEdgeForEvent:fp8;
-- (struct _NSSize)_resizeDeltaFromPoint:(struct _NSPoint)fp8 toEvent:fp16;
-- (NSRect)_validFrameForResizeFrame:(NSRect)fp8 fromResizeEdge:(int)fp24;
-- (NSRect)frame:(NSRect)fp8 resizedFromEdge:(int)fp24 withDelta:(struct _NSSize)fp28;
-- (char)constrainResizeEdge:(int *)fp8 withDelta:(struct _NSSize)fp12 elapsedTime:(float)fp20;
-- (void)resizeWithEvent:fp8;
-- (int)resizeFlags;
-- (void)resetCursorRects;
-- (void)setDocumentEdited:(char)fp8;
-- (struct _NSSize)miniaturizedSize;
-- (struct _NSSize)minFrameSize;
-- (float)_windowBorderThickness;
-- (float)_windowTitlebarXResizeBorderThickness;
-- (float)_windowTitlebarYResizeBorderThickness;
-- (float)_windowResizeBorderThickness;
-- (float)_minXWindowBorderWidth;
-- (float)_maxXWindowBorderWidth;
-- (float)_minYWindowBorderHeight;
-- (void)_invalidateTitleCellSize;
-- (void)_invalidateTitleCellWidth;
-- (float)_titleCellHeight;
-- (struct _NSSize)_titleCellSize;
-- (float)_titlebarHeight;
-- (NSRect)titlebarRect;
-- (NSRect)_maxTitlebarTitleRect;
-- (NSRect)_titlebarTitleRect;
-- (float)_windowTitlebarTitleMinHeight;
-- (NSRect)dragRectForFrameRect:(NSRect)fp8;
-- (struct _NSSize)sizeOfTitlebarButtons;
-- (struct _NSSize)_sizeOfTitlebarFileButton;
-- (float)_windowTitlebarButtonSpacingWidth;
-- (float)_minXTitlebarButtonsWidth;
-- (float)_maxXTitlebarButtonsWidth;
-- (int)_numberOfTitlebarLines;
-- (float)windowTitlebarLinesSpacingWidth;
-- (float)windowTitlebarTitleLinesSpacingWidth;
-- (float)_minLinesWidthWithSpace;
-- (NSRect)_minXTitlebarLinesRectWithTitleCellRect:(NSRect)fp8;
-- (NSRect)_maxXTitlebarLinesRectWithTitleCellRect:(NSRect)fp8;
-- (float)_minXTitlebarDecorationMinWidth;
-- (float)_maxXTitlebarDecorationMinWidth;
-- (struct _NSPoint)_closeButtonOrigin;
-- (struct _NSPoint)_zoomButtonOrigin;
-- (struct _NSPoint)_collapseButtonOrigin;
-- (struct _NSPoint)_fileButtonOrigin;
-- (float)_maxYTitlebarDragHeight;
-- (float)_minXTitlebarDragWidth;
-- (float)_maxXTitlebarDragWidth;
-- (float)_contentToFrameMinXWidth;
-- (float)_contentToFrameMaxXWidth;
-- (float)_contentToFrameMinYHeight;
-- (float)_contentToFrameMaxYHeight;
-- (NSRect)contentRect;
-- (float)_windowResizeCornerThickness;
-- (NSRect)_minYResizeRect;
-- (NSRect)_minYminXResizeRect;
-- (NSRect)_minYmaxXResizeRect;
-- (NSRect)_minXResizeRect;
-- (NSRect)_minXminYResizeRect;
-- (NSRect)_minXmaxYResizeRect;
-- (NSRect)_maxYResizeRect;
-- (NSRect)_maxYminXResizeRect;
-- (NSRect)_maxYmaxXResizeRect;
-- (NSRect)_maxXResizeRect;
-- (NSRect)_maxXminYResizeRect;
-- (NSRect)_maxXmaxYResizeRect;
-- (NSRect)_minXTitlebarResizeRect;
-- (NSRect)_maxXTitlebarResizeRect;
-- (NSRect)_minXBorderRect;
-- (NSRect)_maxXBorderRect;
-- (NSRect)_maxYBorderRect;
-- (NSRect)_minYBorderRect;
-
-@end
diff --git a/src/widgets/platforms/mac/qpaintdevice_mac.cpp b/src/widgets/platforms/mac/qpaintdevice_mac.cpp
deleted file mode 100644
index 01f4a18bf6..0000000000
--- a/src/widgets/platforms/mac/qpaintdevice_mac.cpp
+++ /dev/null
@@ -1,103 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 "qpaintdevice.h"
-#include "qpainter.h"
-#include "qwidget.h"
-#include "qbitmap.h"
-#include "qapplication.h"
-#include "qprinter.h"
-#include <qdebug.h>
-#include <private/qt_mac_p.h>
-#include <private/qprintengine_mac_p.h>
-#include <private/qpixmap_mac_p.h>
-#include <private/qpixmap_raster_p.h>
-
-QT_BEGIN_NAMESPACE
-
-/*****************************************************************************
- Internal variables and functions
- *****************************************************************************/
-
-/*! \internal */
-float qt_mac_defaultDpi_x()
-{
- // Mac OS X currently assumes things to be 72 dpi.
- // (see http://developer.apple.com/releasenotes/GraphicsImaging/RN-ResolutionIndependentUI/)
- // This may need to be re-worked as we go further in the resolution-independence stuff.
- return 72;
-}
-
-/*! \internal */
-float qt_mac_defaultDpi_y()
-{
- // Mac OS X currently assumes things to be 72 dpi.
- // (see http://developer.apple.com/releasenotes/GraphicsImaging/RN-ResolutionIndependentUI/)
- // This may need to be re-worked as we go further in the resolution-independence stuff.
- return 72;
-}
-
-
-/*! \internal
-
- Returns the QuickDraw CGrafPtr of the paint device. 0 is returned
- if it can't be obtained. Do not hold the pointer around for long
- as it can be relocated.
-
- \warning This function is only available on Mac OS X.
-*/
-
-Q_WIDGETS_EXPORT GrafPtr qt_mac_qd_context(const QPaintDevice *device)
-{
- if (device->devType() == QInternal::Pixmap) {
- return static_cast<GrafPtr>(static_cast<const QPixmap *>(device)->macQDHandle());
- } else if(device->devType() == QInternal::Widget) {
- return static_cast<GrafPtr>(static_cast<const QWidget *>(device)->macQDHandle());
- } else if(device->devType() == QInternal::Printer) {
- QPaintEngine *engine = static_cast<const QPrinter *>(device)->paintEngine();
- return static_cast<GrafPtr>(static_cast<const QMacPrintEngine *>(engine)->handle());
- }
- return 0;
-}
-
-extern CGColorSpaceRef qt_mac_colorSpaceForDeviceType(const QPaintDevice *pdev);
-
-QT_END_NAMESPACE
diff --git a/src/widgets/platforms/mac/qpaintengine_mac.cpp b/src/widgets/platforms/mac/qpaintengine_mac.cpp
deleted file mode 100644
index f1e397e7b0..0000000000
--- a/src/widgets/platforms/mac/qpaintengine_mac.cpp
+++ /dev/null
@@ -1,1538 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 <qbitmap.h>
-#include <qpaintdevice.h>
-#include <private/qpaintengine_mac_p.h>
-#include <qpainterpath.h>
-#include <qpixmapcache.h>
-#include <private/qpaintengine_raster_p.h>
-#include <private/qprintengine_mac_p.h>
-#include <qprinter.h>
-#include <qstack.h>
-#include <qtextcodec.h>
-#include <qwidget.h>
-#include <qvarlengtharray.h>
-#include <qdebug.h>
-#include <qcoreapplication.h>
-#include <qmath.h>
-
-#include <private/qfont_p.h>
-#include <private/qfontengine_p.h>
-#include <private/qfontengine_coretext_p.h>
-#include <private/qfontengine_mac_p.h>
-#include <private/qnumeric_p.h>
-#include <private/qpainter_p.h>
-#include <private/qpainterpath_p.h>
-#include <private/qpixmap_mac_p.h>
-#include <private/qt_mac_p.h>
-#include <private/qtextengine_p.h>
-#include <private/qwidget_p.h>
-#include <private/qt_cocoa_helpers_mac_p.h>
-
-#include <string.h>
-
-QT_BEGIN_NAMESPACE
-
-extern int qt_antialiasing_threshold; // QApplication.cpp
-
-/*****************************************************************************
- External functions
- *****************************************************************************/
-extern CGImageRef qt_mac_create_imagemask(const QPixmap &px, const QRectF &sr); //qpixmap_mac.cpp
-extern QPoint qt_mac_posInWindow(const QWidget *w); //qwidget_mac.cpp
-extern OSWindowRef qt_mac_window_for(const QWidget *); //qwidget_mac.cpp
-extern CGContextRef qt_mac_cg_context(const QPaintDevice *); //qpaintdevice_mac.cpp
-extern void qt_mac_dispose_rgn(RgnHandle r); //qregion_mac.cpp
-extern QPixmap qt_pixmapForBrush(int, bool); //qbrush.cpp
-
-void qt_mac_clip_cg(CGContextRef hd, const QRegion &rgn, CGAffineTransform *orig_xform);
-
-
-/*****************************************************************************
- QCoreGraphicsPaintEngine utility functions
- *****************************************************************************/
-
-//conversion
-inline static float qt_mac_convert_color_to_cg(int c) { return ((float)c * 1000 / 255) / 1000; }
-inline static int qt_mac_convert_color_from_cg(float c) { return qRound(c * 255); }
-CGAffineTransform qt_mac_convert_transform_to_cg(const QTransform &t) {
- return CGAffineTransformMake(t.m11(), t.m12(), t.m21(), t.m22(), t.dx(), t.dy());
-}
-
-inline static QCFType<CGColorRef> cgColorForQColor(const QColor &col, QPaintDevice *pdev)
-{
- CGFloat components[] = {
- qt_mac_convert_color_to_cg(col.red()),
- qt_mac_convert_color_to_cg(col.green()),
- qt_mac_convert_color_to_cg(col.blue()),
- qt_mac_convert_color_to_cg(col.alpha())
- };
- return CGColorCreate(qt_mac_colorSpaceForDeviceType(pdev), components);
-}
-
-// There's architectural problems with using native gradients
-// on the Mac at the moment, so disable them.
-// #define QT_MAC_USE_NATIVE_GRADIENTS
-
-#ifdef QT_MAC_USE_NATIVE_GRADIENTS
-static bool drawGradientNatively(const QGradient *gradient)
-{
- return gradient->spread() == QGradient::PadSpread;
-}
-
-// gradiant callback
-static void qt_mac_color_gradient_function(void *info, const CGFloat *in, CGFloat *out)
-{
- QBrush *brush = static_cast<QBrush *>(info);
- Q_ASSERT(brush && brush->gradient());
-
- const QGradientStops stops = brush->gradient()->stops();
- const int n = stops.count();
- Q_ASSERT(n >= 1);
- const QGradientStop *begin = stops.constBegin();
- const QGradientStop *end = begin + n;
-
- qreal p = in[0];
- const QGradientStop *i = begin;
- while (i != end && i->first < p)
- ++i;
-
- QRgb c;
- if (i == begin) {
- c = begin->second.rgba();
- } else if (i == end) {
- c = (end - 1)->second.rgba();
- } else {
- const QGradientStop &s1 = *(i - 1);
- const QGradientStop &s2 = *i;
- qreal p1 = s1.first;
- qreal p2 = s2.first;
- QRgb c1 = s1.second.rgba();
- QRgb c2 = s2.second.rgba();
- int idist = 256 * (p - p1) / (p2 - p1);
- int dist = 256 - idist;
- c = qRgba(INTERPOLATE_PIXEL_256(qRed(c1), dist, qRed(c2), idist),
- INTERPOLATE_PIXEL_256(qGreen(c1), dist, qGreen(c2), idist),
- INTERPOLATE_PIXEL_256(qBlue(c1), dist, qBlue(c2), idist),
- INTERPOLATE_PIXEL_256(qAlpha(c1), dist, qAlpha(c2), idist));
- }
-
- out[0] = qt_mac_convert_color_to_cg(qRed(c));
- out[1] = qt_mac_convert_color_to_cg(qGreen(c));
- out[2] = qt_mac_convert_color_to_cg(qBlue(c));
- out[3] = qt_mac_convert_color_to_cg(qAlpha(c));
-}
-#endif
-
-//clipping handling
-void QCoreGraphicsPaintEnginePrivate::resetClip()
-{
- static bool inReset = false;
- if (inReset)
- return;
- inReset = true;
-
- CGAffineTransform old_xform = CGContextGetCTM(hd);
-
- //setup xforms
- CGContextConcatCTM(hd, CGAffineTransformInvert(old_xform));
- while (stackCount > 0) {
- restoreGraphicsState();
- }
- saveGraphicsState();
- inReset = false;
- //reset xforms
- CGContextConcatCTM(hd, CGAffineTransformInvert(CGContextGetCTM(hd)));
- CGContextConcatCTM(hd, old_xform);
-}
-
-static CGRect qt_mac_compose_rect(const QRectF &r, float off=0)
-{
- return CGRectMake(r.x()+off, r.y()+off, r.width(), r.height());
-}
-
-static CGMutablePathRef qt_mac_compose_path(const QPainterPath &p, float off=0)
-{
- CGMutablePathRef ret = CGPathCreateMutable();
- QPointF startPt;
- for (int i=0; i<p.elementCount(); ++i) {
- const QPainterPath::Element &elm = p.elementAt(i);
- switch (elm.type) {
- case QPainterPath::MoveToElement:
- if(i > 0
- && p.elementAt(i - 1).x == startPt.x()
- && p.elementAt(i - 1).y == startPt.y())
- CGPathCloseSubpath(ret);
- startPt = QPointF(elm.x, elm.y);
- CGPathMoveToPoint(ret, 0, elm.x+off, elm.y+off);
- break;
- case QPainterPath::LineToElement:
- CGPathAddLineToPoint(ret, 0, elm.x+off, elm.y+off);
- break;
- case QPainterPath::CurveToElement:
- Q_ASSERT(p.elementAt(i+1).type == QPainterPath::CurveToDataElement);
- Q_ASSERT(p.elementAt(i+2).type == QPainterPath::CurveToDataElement);
- CGPathAddCurveToPoint(ret, 0,
- elm.x+off, elm.y+off,
- p.elementAt(i+1).x+off, p.elementAt(i+1).y+off,
- p.elementAt(i+2).x+off, p.elementAt(i+2).y+off);
- i+=2;
- break;
- default:
- qFatal("QCoreGraphicsPaintEngine::drawPath(), unhandled type: %d", elm.type);
- break;
- }
- }
- if(!p.isEmpty()
- && p.elementAt(p.elementCount() - 1).x == startPt.x()
- && p.elementAt(p.elementCount() - 1).y == startPt.y())
- CGPathCloseSubpath(ret);
- return ret;
-}
-
-CGColorSpaceRef QCoreGraphicsPaintEngine::m_genericColorSpace = 0;
-QHash<CGDirectDisplayID, CGColorSpaceRef> QCoreGraphicsPaintEngine::m_displayColorSpaceHash;
-bool QCoreGraphicsPaintEngine::m_postRoutineRegistered = false;
-
-CGColorSpaceRef QCoreGraphicsPaintEngine::macGenericColorSpace()
-{
-#if 0
- if (!m_genericColorSpace) {
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4
- if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_4) {
- m_genericColorSpace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
- } else
-#endif
- {
- m_genericColorSpace = CGColorSpaceCreateDeviceRGB();
- }
- if (!m_postRoutineRegistered) {
- m_postRoutineRegistered = true;
- qAddPostRoutine(QCoreGraphicsPaintEngine::cleanUpMacColorSpaces);
- }
- }
- return m_genericColorSpace;
-#else
- // Just return the main display colorspace for the moment.
- return macDisplayColorSpace();
-#endif
-}
-
-//pattern handling (tiling)
-#if 1
-# define QMACPATTERN_MASK_MULTIPLIER 32
-#else
-# define QMACPATTERN_MASK_MULTIPLIER 1
-#endif
-class QMacPattern
-{
-public:
- QMacPattern() : as_mask(false), pdev(0), image(0) { data.bytes = 0; }
- ~QMacPattern() { CGImageRelease(image); }
- int width() {
- if(image)
- return CGImageGetWidth(image);
- if(data.bytes)
- return 8*QMACPATTERN_MASK_MULTIPLIER;
- return data.pixmap.width();
- }
- int height() {
- if(image)
- return CGImageGetHeight(image);
- if(data.bytes)
- return 8*QMACPATTERN_MASK_MULTIPLIER;
- return data.pixmap.height();
- }
-
- //input
- QColor foreground;
- bool as_mask;
- struct {
- QPixmap pixmap;
- const uchar *bytes;
- } data;
- QPaintDevice *pdev;
- //output
- CGImageRef image;
-};
-static void qt_mac_draw_pattern(void *info, CGContextRef c)
-{
- QMacPattern *pat = (QMacPattern*)info;
- int w = 0, h = 0;
- bool isBitmap = (pat->data.pixmap.depth() == 1);
- if(!pat->image) { //lazy cache
- if(pat->as_mask) {
- Q_ASSERT(pat->data.bytes);
- w = h = 8;
-#if (QMACPATTERN_MASK_MULTIPLIER == 1)
- CGDataProviderRef provider = CGDataProviderCreateWithData(0, pat->data.bytes, w*h, 0);
- pat->image = CGImageMaskCreate(w, h, 1, 1, 1, provider, 0, false);
- CGDataProviderRelease(provider);
-#else
- const int numBytes = (w*h)/sizeof(uchar);
- uchar xor_bytes[numBytes];
- for(int i = 0; i < numBytes; ++i)
- xor_bytes[i] = pat->data.bytes[i] ^ 0xFF;
- CGDataProviderRef provider = CGDataProviderCreateWithData(0, xor_bytes, w*h, 0);
- CGImageRef swatch = CGImageMaskCreate(w, h, 1, 1, 1, provider, 0, false);
- CGDataProviderRelease(provider);
-
- const QColor c0(0, 0, 0, 0), c1(255, 255, 255, 255);
- QPixmap pm(w*QMACPATTERN_MASK_MULTIPLIER, h*QMACPATTERN_MASK_MULTIPLIER);
- pm.fill(c0);
- CGContextRef pm_ctx = qt_mac_cg_context(&pm);
- CGContextSetFillColorWithColor(c, cgColorForQColor(c1, pat->pdev));
- CGRect rect = CGRectMake(0, 0, w, h);
- for(int x = 0; x < QMACPATTERN_MASK_MULTIPLIER; ++x) {
- rect.origin.x = x * w;
- for(int y = 0; y < QMACPATTERN_MASK_MULTIPLIER; ++y) {
- rect.origin.y = y * h;
- qt_mac_drawCGImage(pm_ctx, &rect, swatch);
- }
- }
- pat->image = qt_mac_create_imagemask(pm, pm.rect());
- CGImageRelease(swatch);
- CGContextRelease(pm_ctx);
- w *= QMACPATTERN_MASK_MULTIPLIER;
- h *= QMACPATTERN_MASK_MULTIPLIER;
-#endif
- } else {
- w = pat->data.pixmap.width();
- h = pat->data.pixmap.height();
- if (isBitmap)
- pat->image = qt_mac_create_imagemask(pat->data.pixmap, pat->data.pixmap.rect());
- else
- pat->image = (CGImageRef)pat->data.pixmap.macCGHandle();
- }
- } else {
- w = CGImageGetWidth(pat->image);
- h = CGImageGetHeight(pat->image);
- }
-
- //draw
- bool needRestore = false;
- if (CGImageIsMask(pat->image)) {
- CGContextSaveGState(c);
- CGContextSetFillColorWithColor(c, cgColorForQColor(pat->foreground, pat->pdev));
- }
- CGRect rect = CGRectMake(0, 0, w, h);
- qt_mac_drawCGImage(c, &rect, pat->image);
- if(needRestore)
- CGContextRestoreGState(c);
-}
-static void qt_mac_dispose_pattern(void *info)
-{
- QMacPattern *pat = (QMacPattern*)info;
- delete pat;
-}
-
-/*****************************************************************************
- QCoreGraphicsPaintEngine member functions
- *****************************************************************************/
-
-inline static QPaintEngine::PaintEngineFeatures qt_mac_cg_features()
-{
- return QPaintEngine::PaintEngineFeatures(QPaintEngine::AllFeatures & ~QPaintEngine::PaintOutsidePaintEvent
- & ~QPaintEngine::PerspectiveTransform
- & ~QPaintEngine::ConicalGradientFill
- & ~QPaintEngine::LinearGradientFill
- & ~QPaintEngine::RadialGradientFill
- & ~QPaintEngine::BrushStroke);
-}
-
-QCoreGraphicsPaintEngine::QCoreGraphicsPaintEngine()
-: QPaintEngine(*(new QCoreGraphicsPaintEnginePrivate), qt_mac_cg_features())
-{
-}
-
-QCoreGraphicsPaintEngine::QCoreGraphicsPaintEngine(QPaintEnginePrivate &dptr)
-: QPaintEngine(dptr, qt_mac_cg_features())
-{
-}
-
-QCoreGraphicsPaintEngine::~QCoreGraphicsPaintEngine()
-{
-}
-
-bool
-QCoreGraphicsPaintEngine::begin(QPaintDevice *pdev)
-{
- Q_D(QCoreGraphicsPaintEngine);
- if(isActive()) { // already active painting
- qWarning("QCoreGraphicsPaintEngine::begin: Painter already active");
- return false;
- }
-
- //initialization
- d->pdev = pdev;
- d->complexXForm = false;
- d->cosmeticPen = QCoreGraphicsPaintEnginePrivate::CosmeticSetPenWidth;
- d->cosmeticPenSize = 1;
- d->current.clipEnabled = false;
- d->pixelSize = QPoint(1,1);
- d->hd = qt_mac_cg_context(pdev);
- if(d->hd) {
- d->saveGraphicsState();
- d->orig_xform = CGContextGetCTM(d->hd);
- if (d->shading) {
- CGShadingRelease(d->shading);
- d->shading = 0;
- }
- d->setClip(0); //clear the context's clipping
- }
-
- setActive(true);
-
- if(d->pdev->devType() == QInternal::Widget) { // device is a widget
- QWidget *w = (QWidget*)d->pdev;
- bool unclipped = w->testAttribute(Qt::WA_PaintUnclipped);
-
- if((w->windowType() == Qt::Desktop)) {
- if(!unclipped)
- qWarning("QCoreGraphicsPaintEngine::begin: Does not support clipped desktop on Mac OS X");
- // ## need to do [qt_mac_window_for(w) makeKeyAndOrderFront]; (need to rename the file)
- } else if(unclipped) {
- qWarning("QCoreGraphicsPaintEngine::begin: Does not support unclipped painting");
- }
- } else if(d->pdev->devType() == QInternal::Pixmap) { // device is a pixmap
- QPixmap *pm = (QPixmap*)d->pdev;
- if(pm->isNull()) {
- qWarning("QCoreGraphicsPaintEngine::begin: Cannot paint null pixmap");
- end();
- return false;
- }
- }
-
- setDirty(QPaintEngine::DirtyPen);
- setDirty(QPaintEngine::DirtyBrush);
- setDirty(QPaintEngine::DirtyBackground);
- setDirty(QPaintEngine::DirtyHints);
- return true;
-}
-
-bool
-QCoreGraphicsPaintEngine::end()
-{
- Q_D(QCoreGraphicsPaintEngine);
- setActive(false);
- if(d->pdev->devType() == QInternal::Widget && static_cast<QWidget*>(d->pdev)->windowType() == Qt::Desktop) {
-// // ### need to do [qt_mac_window_for(static_cast<QWidget *>(d->pdev)) orderOut]; (need to rename)
-
- }
- if(d->shading) {
- CGShadingRelease(d->shading);
- d->shading = 0;
- }
- d->pdev = 0;
- if(d->hd) {
- d->restoreGraphicsState();
- CGContextSynchronize(d->hd);
- CGContextRelease(d->hd);
- d->hd = 0;
- }
- return true;
-}
-
-void
-QCoreGraphicsPaintEngine::updateState(const QPaintEngineState &state)
-{
- Q_D(QCoreGraphicsPaintEngine);
- QPaintEngine::DirtyFlags flags = state.state();
-
- if (flags & DirtyTransform)
- updateMatrix(state.transform());
-
- if (flags & DirtyClipEnabled) {
- if (state.isClipEnabled())
- updateClipPath(painter()->clipPath(), Qt::ReplaceClip);
- else
- updateClipPath(QPainterPath(), Qt::NoClip);
- }
-
- if (flags & DirtyClipPath) {
- updateClipPath(state.clipPath(), state.clipOperation());
- } else if (flags & DirtyClipRegion) {
- updateClipRegion(state.clipRegion(), state.clipOperation());
- }
-
- // If the clip has changed we need to update all other states
- // too, since they are included in the system context on OSX,
- // and changing the clip resets that context back to scratch.
- if (flags & (DirtyClipPath | DirtyClipRegion | DirtyClipEnabled))
- flags |= AllDirty;
-
- if (flags & DirtyPen)
- updatePen(state.pen());
- if (flags & (DirtyBrush|DirtyBrushOrigin))
- updateBrush(state.brush(), state.brushOrigin());
- if (flags & DirtyFont)
- updateFont(state.font());
- if (flags & DirtyOpacity)
- updateOpacity(state.opacity());
- if (flags & DirtyHints)
- updateRenderHints(state.renderHints());
- if (flags & DirtyCompositionMode)
- updateCompositionMode(state.compositionMode());
-
- if (flags & (DirtyPen | DirtyTransform)) {
- if (!d->current.pen.isCosmetic()) {
- d->cosmeticPen = QCoreGraphicsPaintEnginePrivate::CosmeticNone;
- } else if (d->current.transform.m11() < d->current.transform.m22()-1.0 ||
- d->current.transform.m11() > d->current.transform.m22()+1.0) {
- d->cosmeticPen = QCoreGraphicsPaintEnginePrivate::CosmeticTransformPath;
- d->cosmeticPenSize = d->adjustPenWidth(d->current.pen.widthF());
- if (!d->cosmeticPenSize)
- d->cosmeticPenSize = 1.0;
- } else {
- d->cosmeticPen = QCoreGraphicsPaintEnginePrivate::CosmeticSetPenWidth;
- static const float sqrt2 = sqrt(2);
- qreal width = d->current.pen.widthF();
- if (!width)
- width = 1;
- d->cosmeticPenSize = sqrt(pow(d->pixelSize.y(), 2) + pow(d->pixelSize.x(), 2)) / sqrt2 * width;
- }
- }
-}
-
-void
-QCoreGraphicsPaintEngine::updatePen(const QPen &pen)
-{
- Q_D(QCoreGraphicsPaintEngine);
- Q_ASSERT(isActive());
- d->current.pen = pen;
- d->setStrokePen(pen);
-}
-
-void
-QCoreGraphicsPaintEngine::updateBrush(const QBrush &brush, const QPointF &brushOrigin)
-{
- Q_D(QCoreGraphicsPaintEngine);
- Q_ASSERT(isActive());
- d->current.brush = brush;
-
-#ifdef QT_MAC_USE_NATIVE_GRADIENTS
- // Quartz supports only pad spread
- if (const QGradient *gradient = brush.gradient()) {
- if (drawGradientNatively(gradient)) {
- gccaps |= QPaintEngine::LinearGradientFill | QPaintEngine::RadialGradientFill;
- } else {
- gccaps &= ~(QPaintEngine::LinearGradientFill | QPaintEngine::RadialGradientFill);
- }
- }
-#endif
-
- if (d->shading) {
- CGShadingRelease(d->shading);
- d->shading = 0;
- }
- d->setFillBrush(brushOrigin);
-}
-
-void
-QCoreGraphicsPaintEngine::updateOpacity(qreal opacity)
-{
- Q_D(QCoreGraphicsPaintEngine);
- CGContextSetAlpha(d->hd, opacity);
-}
-
-void
-QCoreGraphicsPaintEngine::updateFont(const QFont &)
-{
- Q_D(QCoreGraphicsPaintEngine);
- Q_ASSERT(isActive());
- updatePen(d->current.pen);
-}
-
-void
-QCoreGraphicsPaintEngine::updateMatrix(const QTransform &transform)
-{
- Q_D(QCoreGraphicsPaintEngine);
- Q_ASSERT(isActive());
-
- if (qt_is_nan(transform.m11()) || qt_is_nan(transform.m12()) || qt_is_nan(transform.m13())
- || qt_is_nan(transform.m21()) || qt_is_nan(transform.m22()) || qt_is_nan(transform.m23())
- || qt_is_nan(transform.m31()) || qt_is_nan(transform.m32()) || qt_is_nan(transform.m33()))
- return;
-
- d->current.transform = transform;
- d->setTransform(transform.isIdentity() ? 0 : &transform);
- d->complexXForm = (transform.m11() != 1 || transform.m22() != 1
- || transform.m12() != 0 || transform.m21() != 0);
- d->pixelSize = d->devicePixelSize(d->hd);
-}
-
-void
-QCoreGraphicsPaintEngine::updateClipPath(const QPainterPath &p, Qt::ClipOperation op)
-{
- Q_D(QCoreGraphicsPaintEngine);
- Q_ASSERT(isActive());
- if(op == Qt::NoClip) {
- if(d->current.clipEnabled) {
- d->current.clipEnabled = false;
- d->current.clip = QRegion();
- d->setClip(0);
- }
- } else {
- if(!d->current.clipEnabled)
- op = Qt::ReplaceClip;
- d->current.clipEnabled = true;
- QRegion clipRegion(p.toFillPolygon().toPolygon(), p.fillRule());
- if(op == Qt::ReplaceClip) {
- d->current.clip = clipRegion;
- d->setClip(0);
- if(p.isEmpty()) {
- CGRect rect = CGRectMake(0, 0, 0, 0);
- CGContextClipToRect(d->hd, rect);
- } else {
- CGMutablePathRef path = qt_mac_compose_path(p);
- CGContextBeginPath(d->hd);
- CGContextAddPath(d->hd, path);
- if(p.fillRule() == Qt::WindingFill)
- CGContextClip(d->hd);
- else
- CGContextEOClip(d->hd);
- CGPathRelease(path);
- }
- } else if(op == Qt::IntersectClip) {
- d->current.clip = d->current.clip.intersected(clipRegion);
- d->setClip(&d->current.clip);
- }
- }
-}
-
-void
-QCoreGraphicsPaintEngine::updateClipRegion(const QRegion &clipRegion, Qt::ClipOperation op)
-{
- Q_D(QCoreGraphicsPaintEngine);
- Q_ASSERT(isActive());
- if(op == Qt::NoClip) {
- d->current.clipEnabled = false;
- d->current.clip = QRegion();
- d->setClip(0);
- } else {
- if(!d->current.clipEnabled)
- op = Qt::ReplaceClip;
- d->current.clipEnabled = true;
- if(op == Qt::IntersectClip)
- d->current.clip = d->current.clip.intersected(clipRegion);
- else if(op == Qt::ReplaceClip)
- d->current.clip = clipRegion;
- d->setClip(&d->current.clip);
- }
-}
-
-void
-QCoreGraphicsPaintEngine::drawPath(const QPainterPath &p)
-{
- Q_D(QCoreGraphicsPaintEngine);
- Q_ASSERT(isActive());
-
- if (state->compositionMode() == QPainter::CompositionMode_Destination)
- return;
-
- CGMutablePathRef path = qt_mac_compose_path(p);
- uchar ops = QCoreGraphicsPaintEnginePrivate::CGStroke;
- if(p.fillRule() == Qt::WindingFill)
- ops |= QCoreGraphicsPaintEnginePrivate::CGFill;
- else
- ops |= QCoreGraphicsPaintEnginePrivate::CGEOFill;
- CGContextBeginPath(d->hd);
- d->drawPath(ops, path);
- CGPathRelease(path);
-}
-
-void
-QCoreGraphicsPaintEngine::drawRects(const QRectF *rects, int rectCount)
-{
- Q_D(QCoreGraphicsPaintEngine);
- Q_ASSERT(isActive());
-
- if (state->compositionMode() == QPainter::CompositionMode_Destination)
- return;
-
- for (int i=0; i<rectCount; ++i) {
- QRectF r = rects[i];
-
- CGMutablePathRef path = CGPathCreateMutable();
- CGPathAddRect(path, 0, qt_mac_compose_rect(r));
- d->drawPath(QCoreGraphicsPaintEnginePrivate::CGFill|QCoreGraphicsPaintEnginePrivate::CGStroke,
- path);
- CGPathRelease(path);
- }
-}
-
-void
-QCoreGraphicsPaintEngine::drawPoints(const QPointF *points, int pointCount)
-{
- Q_D(QCoreGraphicsPaintEngine);
- Q_ASSERT(isActive());
-
- if (state->compositionMode() == QPainter::CompositionMode_Destination)
- return;
-
- if (d->current.pen.capStyle() == Qt::FlatCap)
- CGContextSetLineCap(d->hd, kCGLineCapSquare);
-
- CGMutablePathRef path = CGPathCreateMutable();
- for(int i=0; i < pointCount; i++) {
- float x = points[i].x(), y = points[i].y();
- CGPathMoveToPoint(path, 0, x, y);
- CGPathAddLineToPoint(path, 0, x+0.001, y);
- }
-
- bool doRestore = false;
- if(d->cosmeticPen == QCoreGraphicsPaintEnginePrivate::CosmeticNone && !(state->renderHints() & QPainter::Antialiasing)) {
- //we don't want adjusted pens for point rendering
- doRestore = true;
- d->saveGraphicsState();
- CGContextSetLineWidth(d->hd, d->current.pen.widthF());
- }
- d->drawPath(QCoreGraphicsPaintEnginePrivate::CGStroke, path);
- if (doRestore)
- d->restoreGraphicsState();
- CGPathRelease(path);
- if (d->current.pen.capStyle() == Qt::FlatCap)
- CGContextSetLineCap(d->hd, kCGLineCapButt);
-}
-
-void
-QCoreGraphicsPaintEngine::drawEllipse(const QRectF &r)
-{
- Q_D(QCoreGraphicsPaintEngine);
- Q_ASSERT(isActive());
-
- if (state->compositionMode() == QPainter::CompositionMode_Destination)
- return;
-
- CGMutablePathRef path = CGPathCreateMutable();
- CGAffineTransform transform = CGAffineTransformMakeScale(r.width() / r.height(), 1);
- CGPathAddArc(path, &transform,(r.x() + (r.width() / 2)) / (r.width() / r.height()),
- r.y() + (r.height() / 2), r.height() / 2, 0, (2 * M_PI), false);
- d->drawPath(QCoreGraphicsPaintEnginePrivate::CGFill | QCoreGraphicsPaintEnginePrivate::CGStroke,
- path);
- CGPathRelease(path);
-}
-
-void
-QCoreGraphicsPaintEngine::drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode)
-{
- Q_D(QCoreGraphicsPaintEngine);
- Q_ASSERT(isActive());
-
- if (state->compositionMode() == QPainter::CompositionMode_Destination)
- return;
-
- CGMutablePathRef path = CGPathCreateMutable();
- CGPathMoveToPoint(path, 0, points[0].x(), points[0].y());
- for(int x = 1; x < pointCount; ++x)
- CGPathAddLineToPoint(path, 0, points[x].x(), points[x].y());
- if(mode != PolylineMode && points[0] != points[pointCount-1])
- CGPathAddLineToPoint(path, 0, points[0].x(), points[0].y());
- uint op = QCoreGraphicsPaintEnginePrivate::CGStroke;
- if (mode != PolylineMode)
- op |= mode == OddEvenMode ? QCoreGraphicsPaintEnginePrivate::CGEOFill
- : QCoreGraphicsPaintEnginePrivate::CGFill;
- d->drawPath(op, path);
- CGPathRelease(path);
-}
-
-void
-QCoreGraphicsPaintEngine::drawLines(const QLineF *lines, int lineCount)
-{
- Q_D(QCoreGraphicsPaintEngine);
- Q_ASSERT(isActive());
-
- if (state->compositionMode() == QPainter::CompositionMode_Destination)
- return;
-
- CGMutablePathRef path = CGPathCreateMutable();
- for(int i = 0; i < lineCount; i++) {
- const QPointF start = lines[i].p1(), end = lines[i].p2();
- CGPathMoveToPoint(path, 0, start.x(), start.y());
- CGPathAddLineToPoint(path, 0, end.x(), end.y());
- }
- d->drawPath(QCoreGraphicsPaintEnginePrivate::CGStroke, path);
- CGPathRelease(path);
-}
-
-void QCoreGraphicsPaintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr)
-{
- Q_D(QCoreGraphicsPaintEngine);
- Q_ASSERT(isActive());
-
- if (state->compositionMode() == QPainter::CompositionMode_Destination)
- return;
-
- if(pm.isNull())
- return;
-
- bool differentSize = (QRectF(0, 0, pm.width(), pm.height()) != sr), doRestore = false;
- CGRect rect = CGRectMake(r.x(), r.y(), r.width(), r.height());
- QCFType<CGImageRef> image;
- bool isBitmap = (pm.depth() == 1);
- if (isBitmap) {
- doRestore = true;
- d->saveGraphicsState();
-
- const QColor &col = d->current.pen.color();
- CGContextSetFillColorWithColor(d->hd, cgColorForQColor(col, d->pdev));
- image = qt_mac_create_imagemask(pm, sr);
- } else if (differentSize) {
- QCFType<CGImageRef> img = pm.toMacCGImageRef();
- image = CGImageCreateWithImageInRect(img, CGRectMake(qRound(sr.x()), qRound(sr.y()), qRound(sr.width()), qRound(sr.height())));
- } else {
- image = (CGImageRef)pm.macCGHandle();
- }
- qt_mac_drawCGImage(d->hd, &rect, image);
- if (doRestore)
- d->restoreGraphicsState();
-}
-
-void QCoreGraphicsPaintEngine::drawImage(const QRectF &r, const QImage &img, const QRectF &sr,
- Qt::ImageConversionFlags flags)
-{
- Q_D(QCoreGraphicsPaintEngine);
- Q_UNUSED(flags);
- Q_ASSERT(isActive());
-
- if (img.isNull() || state->compositionMode() == QPainter::CompositionMode_Destination)
- return;
-
- const QImage *image;
- QCFType<CGImageRef> cgimage = qt_mac_createCGImageFromQImage(img, &image);
- CGRect rect = CGRectMake(r.x(), r.y(), r.width(), r.height());
- if (QRectF(0, 0, img.width(), img.height()) != sr)
- cgimage = CGImageCreateWithImageInRect(cgimage, CGRectMake(sr.x(), sr.y(),
- sr.width(), sr.height()));
- qt_mac_drawCGImage(d->hd, &rect, cgimage);
-}
-
-void QCoreGraphicsPaintEngine::initialize()
-{
-}
-
-void QCoreGraphicsPaintEngine::cleanup()
-{
-}
-
-CGContextRef
-QCoreGraphicsPaintEngine::handle() const
-{
- return d_func()->hd;
-}
-
-void
-QCoreGraphicsPaintEngine::drawTiledPixmap(const QRectF &r, const QPixmap &pixmap,
- const QPointF &p)
-{
- Q_D(QCoreGraphicsPaintEngine);
- Q_ASSERT(isActive());
-
- if (state->compositionMode() == QPainter::CompositionMode_Destination)
- return;
-
- //save the old state
- d->saveGraphicsState();
-
- //setup the pattern
- QMacPattern *qpattern = new QMacPattern;
- qpattern->data.pixmap = pixmap;
- qpattern->foreground = d->current.pen.color();
- qpattern->pdev = d->pdev;
- CGPatternCallbacks callbks;
- callbks.version = 0;
- callbks.drawPattern = qt_mac_draw_pattern;
- callbks.releaseInfo = qt_mac_dispose_pattern;
- const int width = qpattern->width(), height = qpattern->height();
- CGAffineTransform trans = CGContextGetCTM(d->hd);
- CGPatternRef pat = CGPatternCreate(qpattern, CGRectMake(0, 0, width, height),
- trans, width, height,
- kCGPatternTilingNoDistortion, true, &callbks);
- CGColorSpaceRef cs = CGColorSpaceCreatePattern(0);
- CGContextSetFillColorSpace(d->hd, cs);
- CGFloat component = 1.0; //just one
- CGContextSetFillPattern(d->hd, pat, &component);
- CGSize phase = CGSizeApplyAffineTransform(CGSizeMake(-(p.x()-r.x()), -(p.y()-r.y())), trans);
- CGContextSetPatternPhase(d->hd, phase);
-
- //fill the rectangle
- CGRect mac_rect = CGRectMake(r.x(), r.y(), r.width(), r.height());
- CGContextFillRect(d->hd, mac_rect);
-
- //restore the state
- d->restoreGraphicsState();
- //cleanup
- CGColorSpaceRelease(cs);
- CGPatternRelease(pat);
-}
-
-void QCoreGraphicsPaintEngine::drawTextItem(const QPointF &pos, const QTextItem &item)
-{
- Q_D(QCoreGraphicsPaintEngine);
- if (d->current.transform.type() == QTransform::TxProject
-#ifndef QMAC_NATIVE_GRADIENTS
- || painter()->pen().brush().gradient() //Just let the base engine "emulate" the gradient
-#endif
- ) {
- QPaintEngine::drawTextItem(pos, item);
- return;
- }
-
- if (state->compositionMode() == QPainter::CompositionMode_Destination)
- return;
-
- const QTextItemInt &ti = static_cast<const QTextItemInt &>(item);
-
- QPen oldPen = painter()->pen();
- QBrush oldBrush = painter()->brush();
- QPointF oldBrushOrigin = painter()->brushOrigin();
- updatePen(Qt::NoPen);
- updateBrush(oldPen.brush(), QPointF(0, 0));
-
- Q_ASSERT(type() == QPaintEngine::CoreGraphics);
-
- QFontEngine *fe = ti.fontEngine;
-
- const bool textAA = state->renderHints() & QPainter::TextAntialiasing && fe->fontDef.pointSize > qt_antialiasing_threshold && !(fe->fontDef.styleStrategy & QFont::NoAntialias);
- const bool lineAA = state->renderHints() & QPainter::Antialiasing;
- if(textAA != lineAA)
- CGContextSetShouldAntialias(d->hd, textAA);
-
- if (ti.glyphs.numGlyphs) {
- switch (fe->type()) {
- case QFontEngine::Mac:
- static_cast<QCoreTextFontEngine *>(fe)->draw(d->hd, pos.x(), pos.y(), ti, paintDevice()->height());
- break;
- case QFontEngine::Box:
- d->drawBoxTextItem(pos, ti);
- break;
- default:
- break;
- }
- }
-
- if(textAA != lineAA)
- CGContextSetShouldAntialias(d->hd, !textAA);
-
- updatePen(oldPen);
- updateBrush(oldBrush, oldBrushOrigin);
-}
-
-QPainter::RenderHints
-QCoreGraphicsPaintEngine::supportedRenderHints() const
-{
- return QPainter::RenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform);
-}
-enum CGCompositeMode {
- kCGCompositeModeClear = 0,
- kCGCompositeModeCopy = 1,
- kCGCompositeModeSourceOver = 2,
- kCGCompositeModeSourceIn = 3,
- kCGCompositeModeSourceOut = 4,
- kCGCompositeModeSourceAtop = 5,
- kCGCompositeModeDestinationOver = 6,
- kCGCompositeModeDestinationIn = 7,
- kCGCompositeModeDestinationOut = 8,
- kCGCompositeModeDestinationAtop = 9,
- kCGCompositeModeXOR = 10,
- kCGCompositeModePlusDarker = 11, // (max (0, (1-d) + (1-s)))
- kCGCompositeModePlusLighter = 12, // (min (1, s + d))
- };
-extern "C" {
- extern void CGContextSetCompositeOperation(CGContextRef, int);
-} // private function, but is in all versions of OS X.
-void
-QCoreGraphicsPaintEngine::updateCompositionMode(QPainter::CompositionMode mode)
-{
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
- if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_5) {
- int cg_mode = kCGBlendModeNormal;
- switch(mode) {
- case QPainter::CompositionMode_Multiply:
- cg_mode = kCGBlendModeMultiply;
- break;
- case QPainter::CompositionMode_Screen:
- cg_mode = kCGBlendModeScreen;
- break;
- case QPainter::CompositionMode_Overlay:
- cg_mode = kCGBlendModeOverlay;
- break;
- case QPainter::CompositionMode_Darken:
- cg_mode = kCGBlendModeDarken;
- break;
- case QPainter::CompositionMode_Lighten:
- cg_mode = kCGBlendModeLighten;
- break;
- case QPainter::CompositionMode_ColorDodge:
- cg_mode = kCGBlendModeColorDodge;
- break;
- case QPainter::CompositionMode_ColorBurn:
- cg_mode = kCGBlendModeColorBurn;
- break;
- case QPainter::CompositionMode_HardLight:
- cg_mode = kCGBlendModeHardLight;
- break;
- case QPainter::CompositionMode_SoftLight:
- cg_mode = kCGBlendModeSoftLight;
- break;
- case QPainter::CompositionMode_Difference:
- cg_mode = kCGBlendModeDifference;
- break;
- case QPainter::CompositionMode_Exclusion:
- cg_mode = kCGBlendModeExclusion;
- break;
- case QPainter::CompositionMode_Plus:
- cg_mode = kCGBlendModePlusLighter;
- break;
- case QPainter::CompositionMode_SourceOver:
- cg_mode = kCGBlendModeNormal;
- break;
- case QPainter::CompositionMode_DestinationOver:
- cg_mode = kCGBlendModeDestinationOver;
- break;
- case QPainter::CompositionMode_Clear:
- cg_mode = kCGBlendModeClear;
- break;
- case QPainter::CompositionMode_Source:
- cg_mode = kCGBlendModeCopy;
- break;
- case QPainter::CompositionMode_Destination:
- cg_mode = -1;
- break;
- case QPainter::CompositionMode_SourceIn:
- cg_mode = kCGBlendModeSourceIn;
- break;
- case QPainter::CompositionMode_DestinationIn:
- cg_mode = kCGCompositeModeDestinationIn;
- break;
- case QPainter::CompositionMode_SourceOut:
- cg_mode = kCGBlendModeSourceOut;
- break;
- case QPainter::CompositionMode_DestinationOut:
- cg_mode = kCGBlendModeDestinationOver;
- break;
- case QPainter::CompositionMode_SourceAtop:
- cg_mode = kCGBlendModeSourceAtop;
- break;
- case QPainter::CompositionMode_DestinationAtop:
- cg_mode = kCGBlendModeDestinationAtop;
- break;
- case QPainter::CompositionMode_Xor:
- cg_mode = kCGBlendModeXOR;
- break;
- default:
- break;
- }
- if (cg_mode > -1) {
- CGContextSetBlendMode(d_func()->hd, CGBlendMode(cg_mode));
- }
- } else
-#endif
- // The standard porter duff ops.
- if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_3
- && mode <= QPainter::CompositionMode_Xor) {
- int cg_mode = kCGCompositeModeCopy;
- switch (mode) {
- case QPainter::CompositionMode_SourceOver:
- cg_mode = kCGCompositeModeSourceOver;
- break;
- case QPainter::CompositionMode_DestinationOver:
- cg_mode = kCGCompositeModeDestinationOver;
- break;
- case QPainter::CompositionMode_Clear:
- cg_mode = kCGCompositeModeClear;
- break;
- default:
- qWarning("QCoreGraphicsPaintEngine: Unhandled composition mode %d", (int)mode);
- break;
- case QPainter::CompositionMode_Source:
- cg_mode = kCGCompositeModeCopy;
- break;
- case QPainter::CompositionMode_Destination:
- cg_mode = CGCompositeMode(-1);
- break;
- case QPainter::CompositionMode_SourceIn:
- cg_mode = kCGCompositeModeSourceIn;
- break;
- case QPainter::CompositionMode_DestinationIn:
- cg_mode = kCGCompositeModeDestinationIn;
- break;
- case QPainter::CompositionMode_SourceOut:
- cg_mode = kCGCompositeModeSourceOut;
- break;
- case QPainter::CompositionMode_DestinationOut:
- cg_mode = kCGCompositeModeDestinationOut;
- break;
- case QPainter::CompositionMode_SourceAtop:
- cg_mode = kCGCompositeModeSourceAtop;
- break;
- case QPainter::CompositionMode_DestinationAtop:
- cg_mode = kCGCompositeModeDestinationAtop;
- break;
- case QPainter::CompositionMode_Xor:
- cg_mode = kCGCompositeModeXOR;
- break;
- }
- if (cg_mode > -1)
- CGContextSetCompositeOperation(d_func()->hd, CGCompositeMode(cg_mode));
- } else {
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_4)
- bool needPrivateAPI = false;
- if (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_4) {
- int cg_mode = kCGBlendModeNormal;
- switch (mode) {
- case QPainter::CompositionMode_Multiply:
- cg_mode = kCGBlendModeMultiply;
- break;
- case QPainter::CompositionMode_Screen:
- cg_mode = kCGBlendModeScreen;
- break;
- case QPainter::CompositionMode_Overlay:
- cg_mode = kCGBlendModeOverlay;
- break;
- case QPainter::CompositionMode_Darken:
- cg_mode = kCGBlendModeDarken;
- break;
- case QPainter::CompositionMode_Lighten:
- cg_mode = kCGBlendModeLighten;
- break;
- case QPainter::CompositionMode_ColorDodge:
- cg_mode = kCGBlendModeColorDodge;
- break;
- case QPainter::CompositionMode_ColorBurn:
- cg_mode = kCGBlendModeColorBurn;
- break;
- case QPainter::CompositionMode_HardLight:
- cg_mode = kCGBlendModeHardLight;
- break;
- case QPainter::CompositionMode_SoftLight:
- cg_mode = kCGBlendModeSoftLight;
- break;
- case QPainter::CompositionMode_Difference:
- cg_mode = kCGBlendModeDifference;
- break;
- case QPainter::CompositionMode_Exclusion:
- cg_mode = kCGBlendModeExclusion;
- break;
- case QPainter::CompositionMode_Plus:
- needPrivateAPI = true;
- cg_mode = kCGCompositeModePlusLighter;
- break;
- default:
- break;
- }
- if (!needPrivateAPI)
- CGContextSetBlendMode(d_func()->hd, CGBlendMode(cg_mode));
- else
- CGContextSetCompositeOperation(d_func()->hd, CGCompositeMode(cg_mode));
- }
-#endif
- }
-}
-
-void
-QCoreGraphicsPaintEngine::updateRenderHints(QPainter::RenderHints hints)
-{
- Q_D(QCoreGraphicsPaintEngine);
- CGContextSetShouldAntialias(d->hd, hints & QPainter::Antialiasing);
- static const CGFloat ScaleFactor = qt_mac_get_scalefactor();
- if (ScaleFactor > 1.) {
- CGContextSetInterpolationQuality(d->hd, kCGInterpolationHigh);
- } else {
- CGContextSetInterpolationQuality(d->hd, (hints & QPainter::SmoothPixmapTransform) ?
- kCGInterpolationHigh : kCGInterpolationNone);
- }
- bool textAntialiasing = (hints & QPainter::TextAntialiasing) == QPainter::TextAntialiasing;
- if (!textAntialiasing || d->disabledSmoothFonts) {
- d->disabledSmoothFonts = !textAntialiasing;
- CGContextSetShouldSmoothFonts(d->hd, textAntialiasing);
- }
-}
-
-/*
- Returns the size of one device pixel in user-space coordinates.
-*/
-QPointF QCoreGraphicsPaintEnginePrivate::devicePixelSize(CGContextRef)
-{
- QPointF p1 = current.transform.inverted().map(QPointF(0, 0));
- QPointF p2 = current.transform.inverted().map(QPointF(1, 1));
- return QPointF(qAbs(p2.x() - p1.x()), qAbs(p2.y() - p1.y()));
-}
-
-/*
- Adjusts the pen width so we get correct line widths in the
- non-transformed, aliased case.
-*/
-float QCoreGraphicsPaintEnginePrivate::adjustPenWidth(float penWidth)
-{
- Q_Q(QCoreGraphicsPaintEngine);
- float ret = penWidth;
- if (!complexXForm && !(q->state->renderHints() & QPainter::Antialiasing)) {
- if (penWidth < 2)
- ret = 1;
- else if (penWidth < 3)
- ret = 1.5;
- else
- ret = penWidth -1;
- }
- return ret;
-}
-
-void
-QCoreGraphicsPaintEnginePrivate::setStrokePen(const QPen &pen)
-{
- //pencap
- CGLineCap cglinecap = kCGLineCapButt;
- if(pen.capStyle() == Qt::SquareCap)
- cglinecap = kCGLineCapSquare;
- else if(pen.capStyle() == Qt::RoundCap)
- cglinecap = kCGLineCapRound;
- CGContextSetLineCap(hd, cglinecap);
- CGContextSetLineWidth(hd, adjustPenWidth(pen.widthF()));
-
- //join
- CGLineJoin cglinejoin = kCGLineJoinMiter;
- if(pen.joinStyle() == Qt::BevelJoin)
- cglinejoin = kCGLineJoinBevel;
- else if(pen.joinStyle() == Qt::RoundJoin)
- cglinejoin = kCGLineJoinRound;
- CGContextSetLineJoin(hd, cglinejoin);
-// CGContextSetMiterLimit(hd, pen.miterLimit());
-
- //pen style
- QVector<CGFloat> linedashes;
- if(pen.style() == Qt::CustomDashLine) {
- QVector<qreal> customs = pen.dashPattern();
- for(int i = 0; i < customs.size(); ++i)
- linedashes.append(customs.at(i));
- } else if(pen.style() == Qt::DashLine) {
- linedashes.append(4);
- linedashes.append(2);
- } else if(pen.style() == Qt::DotLine) {
- linedashes.append(1);
- linedashes.append(2);
- } else if(pen.style() == Qt::DashDotLine) {
- linedashes.append(4);
- linedashes.append(2);
- linedashes.append(1);
- linedashes.append(2);
- } else if(pen.style() == Qt::DashDotDotLine) {
- linedashes.append(4);
- linedashes.append(2);
- linedashes.append(1);
- linedashes.append(2);
- linedashes.append(1);
- linedashes.append(2);
- }
- const CGFloat cglinewidth = pen.widthF() <= 0.0f ? 1.0f : float(pen.widthF());
- for(int i = 0; i < linedashes.size(); ++i) {
- linedashes[i] *= cglinewidth;
- if(cglinewidth < 3 && (cglinecap == kCGLineCapSquare || cglinecap == kCGLineCapRound)) {
- if((i%2))
- linedashes[i] += cglinewidth/2;
- else
- linedashes[i] -= cglinewidth/2;
- }
- }
- CGContextSetLineDash(hd, pen.dashOffset() * cglinewidth, linedashes.data(), linedashes.size());
-
- // color
- CGContextSetStrokeColorWithColor(hd, cgColorForQColor(pen.color(), pdev));
-}
-
-// Add our own patterns here to deal with the fact that the coordinate system
-// is flipped vertically with Quartz2D.
-static const uchar *qt_mac_patternForBrush(int brushStyle)
-{
- Q_ASSERT(brushStyle > Qt::SolidPattern && brushStyle < Qt::LinearGradientPattern);
- static const uchar dense1_pat[] = { 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x44, 0x00 };
- static const uchar dense2_pat[] = { 0x00, 0x22, 0x00, 0x88, 0x00, 0x22, 0x00, 0x88 };
- static const uchar dense3_pat[] = { 0x11, 0xaa, 0x44, 0xaa, 0x11, 0xaa, 0x44, 0xaa };
- static const uchar dense4_pat[] = { 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55 };
- static const uchar dense5_pat[] = { 0xee, 0x55, 0xbb, 0x55, 0xee, 0x55, 0xbb, 0x55 };
- static const uchar dense6_pat[] = { 0xff, 0xdd, 0xff, 0x77, 0xff, 0xdd, 0xff, 0x77 };
- static const uchar dense7_pat[] = { 0xff, 0xff, 0xbb, 0xff, 0xff, 0xff, 0xbb, 0xff };
- static const uchar hor_pat[] = { 0xff, 0xff, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff };
- static const uchar ver_pat[] = { 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef };
- static const uchar cross_pat[] = { 0xef, 0xef, 0xef, 0xef, 0x00, 0xef, 0xef, 0xef };
- static const uchar fdiag_pat[] = { 0x7f, 0xbf, 0xdf, 0xef, 0xf7, 0xfb, 0xfd, 0xfe };
- static const uchar bdiag_pat[] = { 0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f };
- static const uchar dcross_pat[] = { 0x7e, 0xbd, 0xdb, 0xe7, 0xe7, 0xdb, 0xbd, 0x7e };
- static const uchar *const pat_tbl[] = {
- dense1_pat, dense2_pat, dense3_pat, dense4_pat, dense5_pat,
- dense6_pat, dense7_pat,
- hor_pat, ver_pat, cross_pat, bdiag_pat, fdiag_pat, dcross_pat };
- return pat_tbl[brushStyle - Qt::Dense1Pattern];
-}
-
-void QCoreGraphicsPaintEnginePrivate::setFillBrush(const QPointF &offset)
-{
- // pattern
- Qt::BrushStyle bs = current.brush.style();
-#ifdef QT_MAC_USE_NATIVE_GRADIENTS
- if (bs == Qt::LinearGradientPattern || bs == Qt::RadialGradientPattern) {
- const QGradient *grad = static_cast<const QGradient*>(current.brush.gradient());
- if (drawGradientNatively(grad)) {
- Q_ASSERT(grad->spread() == QGradient::PadSpread);
-
- static const CGFloat domain[] = { 0.0f, +1.0f };
- static const CGFunctionCallbacks callbacks = { 0, qt_mac_color_gradient_function, 0 };
- CGFunctionRef fill_func = CGFunctionCreate(reinterpret_cast<void *>(&current.brush),
- 1, domain, 4, 0, &callbacks);
-
- CGColorSpaceRef colorspace = qt_mac_colorSpaceForDeviceType(pdev);
- if (bs == Qt::LinearGradientPattern) {
- const QLinearGradient *linearGrad = static_cast<const QLinearGradient *>(grad);
- const QPointF start(linearGrad->start());
- const QPointF stop(linearGrad->finalStop());
- shading = CGShadingCreateAxial(colorspace, CGPointMake(start.x(), start.y()),
- CGPointMake(stop.x(), stop.y()), fill_func, true, true);
- } else {
- Q_ASSERT(bs == Qt::RadialGradientPattern);
- const QRadialGradient *radialGrad = static_cast<const QRadialGradient *>(grad);
- QPointF center(radialGrad->center());
- QPointF focal(radialGrad->focalPoint());
- qreal radius = radialGrad->radius();
- qreal focalRadius = radialGrad->focalRadius();
- shading = CGShadingCreateRadial(colorspace, CGPointMake(focal.x(), focal.y()),
- focalRadius, CGPointMake(center.x(), center.y()), radius, fill_func, false, true);
- }
-
- CGFunctionRelease(fill_func);
- }
- } else
-#endif
- if(bs != Qt::SolidPattern && bs != Qt::NoBrush
-#ifndef QT_MAC_USE_NATIVE_GRADIENTS
- && (bs < Qt::LinearGradientPattern || bs > Qt::ConicalGradientPattern)
-#endif
- )
- {
- QMacPattern *qpattern = new QMacPattern;
- qpattern->pdev = pdev;
- CGFloat components[4] = { 1.0, 1.0, 1.0, 1.0 };
- CGColorSpaceRef base_colorspace = 0;
- if(bs == Qt::TexturePattern) {
- qpattern->data.pixmap = current.brush.texture();
- if(qpattern->data.pixmap.isQBitmap()) {
- const QColor &col = current.brush.color();
- components[0] = qt_mac_convert_color_to_cg(col.red());
- components[1] = qt_mac_convert_color_to_cg(col.green());
- components[2] = qt_mac_convert_color_to_cg(col.blue());
- base_colorspace = QCoreGraphicsPaintEngine::macGenericColorSpace();
- }
- } else {
- qpattern->as_mask = true;
-
- qpattern->data.bytes = qt_mac_patternForBrush(bs);
- const QColor &col = current.brush.color();
- components[0] = qt_mac_convert_color_to_cg(col.red());
- components[1] = qt_mac_convert_color_to_cg(col.green());
- components[2] = qt_mac_convert_color_to_cg(col.blue());
- base_colorspace = QCoreGraphicsPaintEngine::macGenericColorSpace();
- }
- int width = qpattern->width(), height = qpattern->height();
- qpattern->foreground = current.brush.color();
-
- CGColorSpaceRef fill_colorspace = CGColorSpaceCreatePattern(base_colorspace);
- CGContextSetFillColorSpace(hd, fill_colorspace);
-
- CGAffineTransform xform = CGContextGetCTM(hd);
- xform = CGAffineTransformConcat(qt_mac_convert_transform_to_cg(current.brush.transform()), xform);
- xform = CGAffineTransformTranslate(xform, offset.x(), offset.y());
-
- CGPatternCallbacks callbks;
- callbks.version = 0;
- callbks.drawPattern = qt_mac_draw_pattern;
- callbks.releaseInfo = qt_mac_dispose_pattern;
- CGPatternRef fill_pattern = CGPatternCreate(qpattern, CGRectMake(0, 0, width, height),
- xform, width, height, kCGPatternTilingNoDistortion,
- !base_colorspace, &callbks);
- CGContextSetFillPattern(hd, fill_pattern, components);
-
- CGPatternRelease(fill_pattern);
- CGColorSpaceRelease(fill_colorspace);
- } else if(bs != Qt::NoBrush) {
- CGContextSetFillColorWithColor(hd, cgColorForQColor(current.brush.color(), pdev));
- }
-}
-
-void
-QCoreGraphicsPaintEnginePrivate::setClip(const QRegion *rgn)
-{
- Q_Q(QCoreGraphicsPaintEngine);
- if(hd) {
- resetClip();
- QRegion sysClip = q->systemClip();
- if(!sysClip.isEmpty())
- qt_mac_clip_cg(hd, sysClip, &orig_xform);
- if(rgn)
- qt_mac_clip_cg(hd, *rgn, 0);
- }
-}
-
-struct qt_mac_cg_transform_path {
- CGMutablePathRef path;
- CGAffineTransform transform;
-};
-
-void qt_mac_cg_transform_path_apply(void *info, const CGPathElement *element)
-{
- Q_ASSERT(info && element);
- qt_mac_cg_transform_path *t = (qt_mac_cg_transform_path*)info;
- switch(element->type) {
- case kCGPathElementMoveToPoint:
- CGPathMoveToPoint(t->path, &t->transform, element->points[0].x, element->points[0].y);
- break;
- case kCGPathElementAddLineToPoint:
- CGPathAddLineToPoint(t->path, &t->transform, element->points[0].x, element->points[0].y);
- break;
- case kCGPathElementAddQuadCurveToPoint:
- CGPathAddQuadCurveToPoint(t->path, &t->transform, element->points[0].x, element->points[0].y,
- element->points[1].x, element->points[1].y);
- break;
- case kCGPathElementAddCurveToPoint:
- CGPathAddCurveToPoint(t->path, &t->transform, element->points[0].x, element->points[0].y,
- element->points[1].x, element->points[1].y,
- element->points[2].x, element->points[2].y);
- break;
- case kCGPathElementCloseSubpath:
- CGPathCloseSubpath(t->path);
- break;
- default:
- qDebug() << "Unhandled path transform type: " << element->type;
- }
-}
-
-void QCoreGraphicsPaintEnginePrivate::drawPath(uchar ops, CGMutablePathRef path)
-{
- Q_Q(QCoreGraphicsPaintEngine);
- Q_ASSERT((ops & (CGFill | CGEOFill)) != (CGFill | CGEOFill)); //can't really happen
- if((ops & (CGFill | CGEOFill))) {
- if (shading) {
- Q_ASSERT(path);
- CGContextBeginPath(hd);
- CGContextAddPath(hd, path);
- saveGraphicsState();
- if (ops & CGFill)
- CGContextClip(hd);
- else if (ops & CGEOFill)
- CGContextEOClip(hd);
- if (current.brush.gradient()->coordinateMode() == QGradient::ObjectBoundingMode) {
- CGRect boundingBox = CGPathGetBoundingBox(path);
- CGContextConcatCTM(hd,
- CGAffineTransformMake(boundingBox.size.width, 0,
- 0, boundingBox.size.height,
- boundingBox.origin.x, boundingBox.origin.y));
- }
- CGContextDrawShading(hd, shading);
- restoreGraphicsState();
- ops &= ~CGFill;
- ops &= ~CGEOFill;
- } else if (current.brush.style() == Qt::NoBrush) {
- ops &= ~CGFill;
- ops &= ~CGEOFill;
- }
- }
- if((ops & CGStroke) && current.pen.style() == Qt::NoPen)
- ops &= ~CGStroke;
-
- if(ops & (CGEOFill | CGFill)) {
- CGContextBeginPath(hd);
- CGContextAddPath(hd, path);
- if (ops & CGEOFill) {
- CGContextEOFillPath(hd);
- } else {
- CGContextFillPath(hd);
- }
- }
-
- // Avoid saving and restoring the context if we can.
- const bool needContextSave = (cosmeticPen != QCoreGraphicsPaintEnginePrivate::CosmeticNone ||
- !(q->state->renderHints() & QPainter::Antialiasing));
- if(ops & CGStroke) {
- if (needContextSave)
- saveGraphicsState();
- CGContextBeginPath(hd);
-
- // Translate a fraction of a pixel size in the y direction
- // to make sure that primitives painted at pixel borders
- // fills the right pixel. This is needed since the y xais
- // in the Quartz coordinate system is inverted compared to Qt.
- if (!(q->state->renderHints() & QPainter::Antialiasing)) {
- if (current.pen.style() == Qt::SolidLine || current.pen.width() >= 3)
- CGContextTranslateCTM(hd, double(pixelSize.x()) * 0.25, double(pixelSize.y()) * 0.25);
- else if (current.pen.style() == Qt::DotLine && QSysInfo::MacintoshVersion == QSysInfo::MV_10_3)
- ; // Do nothing.
- else
- CGContextTranslateCTM(hd, 0, double(pixelSize.y()) * 0.1);
- }
-
- if (cosmeticPen != QCoreGraphicsPaintEnginePrivate::CosmeticNone) {
- // If antialiazing is enabled, use the cosmetic pen size directly.
- if (q->state->renderHints() & QPainter::Antialiasing)
- CGContextSetLineWidth(hd, cosmeticPenSize);
- else if (current.pen.widthF() <= 1)
- CGContextSetLineWidth(hd, cosmeticPenSize * 0.9f);
- else
- CGContextSetLineWidth(hd, cosmeticPenSize);
- }
- if(cosmeticPen == QCoreGraphicsPaintEnginePrivate::CosmeticTransformPath) {
- qt_mac_cg_transform_path t;
- t.transform = qt_mac_convert_transform_to_cg(current.transform);
- t.path = CGPathCreateMutable();
- CGPathApply(path, &t, qt_mac_cg_transform_path_apply); //transform the path
- setTransform(0); //unset the context transform
- CGContextSetLineWidth(hd, cosmeticPenSize);
- CGContextAddPath(hd, t.path);
- CGPathRelease(t.path);
- } else {
- CGContextAddPath(hd, path);
- }
-
- CGContextStrokePath(hd);
- if (needContextSave)
- restoreGraphicsState();
- }
-}
-
-QT_END_NAMESPACE
diff --git a/src/widgets/platforms/mac/qpaintengine_mac_p.h b/src/widgets/platforms/mac/qpaintengine_mac_p.h
deleted file mode 100644
index a8e27a808d..0000000000
--- a/src/widgets/platforms/mac/qpaintengine_mac_p.h
+++ /dev/null
@@ -1,256 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-#ifndef QPAINTENGINE_MAC_P_H
-#define QPAINTENGINE_MAC_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "QtGui/qpaintengine.h"
-#include "private/qt_mac_p.h"
-#include "private/qpaintengine_p.h"
-#include "private/qpolygonclipper_p.h"
-#include "private/qfont_p.h"
-#include "QtCore/qhash.h"
-
-typedef struct CGColorSpace *CGColorSpaceRef;
-QT_BEGIN_NAMESPACE
-
-class QCoreGraphicsPaintEnginePrivate;
-class QCoreGraphicsPaintEngine : public QPaintEngine
-{
- Q_DECLARE_PRIVATE(QCoreGraphicsPaintEngine)
-
-public:
- QCoreGraphicsPaintEngine();
- ~QCoreGraphicsPaintEngine();
-
- bool begin(QPaintDevice *pdev);
- bool end();
- static CGColorSpaceRef macGenericColorSpace();
- static CGColorSpaceRef macDisplayColorSpace(const QWidget *widget = 0);
-
- void updateState(const QPaintEngineState &state);
-
- void updatePen(const QPen &pen);
- void updateBrush(const QBrush &brush, const QPointF &pt);
- void updateFont(const QFont &font);
- void updateOpacity(qreal opacity);
- void updateMatrix(const QTransform &matrix);
- void updateTransform(const QTransform &matrix);
- void updateClipRegion(const QRegion &region, Qt::ClipOperation op);
- void updateClipPath(const QPainterPath &path, Qt::ClipOperation op);
- void updateCompositionMode(QPainter::CompositionMode mode);
- void updateRenderHints(QPainter::RenderHints hints);
-
- void drawLines(const QLineF *lines, int lineCount);
- void drawRects(const QRectF *rects, int rectCount);
- void drawPoints(const QPointF *p, int pointCount);
- void drawEllipse(const QRectF &r);
- void drawPath(const QPainterPath &path);
-
- void drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode);
- void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr);
- void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s);
-
- void drawTextItem(const QPointF &pos, const QTextItem &item);
- void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr,
- Qt::ImageConversionFlags flags = Qt::AutoColor);
-
- Type type() const { return QPaintEngine::CoreGraphics; }
-
- CGContextRef handle() const;
-
- static void initialize();
- static void cleanup();
-
- QPainter::RenderHints supportedRenderHints() const;
-
- //avoid partial shadowed overload warnings...
- void drawLines(const QLine *lines, int lineCount) { QPaintEngine::drawLines(lines, lineCount); }
- void drawRects(const QRect *rects, int rectCount) { QPaintEngine::drawRects(rects, rectCount); }
- void drawPoints(const QPoint *p, int pointCount) { QPaintEngine::drawPoints(p, pointCount); }
- void drawEllipse(const QRect &r) { QPaintEngine::drawEllipse(r); }
- void drawPolygon(const QPoint *points, int pointCount, PolygonDrawMode mode)
- { QPaintEngine::drawPolygon(points, pointCount, mode); }
-
- bool supportsTransformations(qreal, const QTransform &) const { return true; };
-
-protected:
- friend class QMacPrintEngine;
- friend class QMacPrintEnginePrivate;
- friend void qt_mac_display_change_callbk(CGDirectDisplayID, CGDisplayChangeSummaryFlags, void *);
- friend void qt_color_profile_changed(CFNotificationCenterRef center, void *,
- CFStringRef , const void *, CFDictionaryRef);
- QCoreGraphicsPaintEngine(QPaintEnginePrivate &dptr);
-
-private:
- static bool m_postRoutineRegistered;
- static CGColorSpaceRef m_genericColorSpace;
- static QHash<CGDirectDisplayID, CGColorSpaceRef> m_displayColorSpaceHash;
- static void cleanUpMacColorSpaces();
- Q_DISABLE_COPY(QCoreGraphicsPaintEngine)
-};
-
-/*****************************************************************************
- Private data
- *****************************************************************************/
-class QCoreGraphicsPaintEnginePrivate : public QPaintEnginePrivate
-{
- Q_DECLARE_PUBLIC(QCoreGraphicsPaintEngine)
-public:
- QCoreGraphicsPaintEnginePrivate()
- : hd(0), shading(0), stackCount(0), complexXForm(false), disabledSmoothFonts(false)
- {
- }
-
- struct {
- QPen pen;
- QBrush brush;
- uint clipEnabled : 1;
- QRegion clip;
- QTransform transform;
- } current;
-
- //state info (shared with QD)
- CGAffineTransform orig_xform;
-
- //cg structures
- CGContextRef hd;
- CGShadingRef shading;
- int stackCount;
- bool complexXForm;
- bool disabledSmoothFonts;
- enum { CosmeticNone, CosmeticTransformPath, CosmeticSetPenWidth } cosmeticPen;
-
- // pixel and cosmetic pen size in user coordinates.
- QPointF pixelSize;
- float cosmeticPenSize;
-
- //internal functions
- enum { CGStroke=0x01, CGEOFill=0x02, CGFill=0x04 };
- void drawPath(uchar ops, CGMutablePathRef path = 0);
- void setClip(const QRegion *rgn=0);
- void resetClip();
- void setFillBrush(const QPointF &origin=QPoint());
- void setStrokePen(const QPen &pen);
- inline void saveGraphicsState();
- inline void restoreGraphicsState();
- float penOffset();
- QPointF devicePixelSize(CGContextRef context);
- float adjustPenWidth(float penWidth);
- inline void setTransform(const QTransform *matrix=0)
- {
- CGContextConcatCTM(hd, CGAffineTransformInvert(CGContextGetCTM(hd)));
- CGAffineTransform xform = orig_xform;
- if(matrix) {
- extern CGAffineTransform qt_mac_convert_transform_to_cg(const QTransform &);
- xform = CGAffineTransformConcat(qt_mac_convert_transform_to_cg(*matrix), xform);
- }
- CGContextConcatCTM(hd, xform);
- CGContextSetTextMatrix(hd, xform);
- }
-};
-
-inline void QCoreGraphicsPaintEnginePrivate::saveGraphicsState()
-{
- ++stackCount;
- CGContextSaveGState(hd);
-}
-
-inline void QCoreGraphicsPaintEnginePrivate::restoreGraphicsState()
-{
- --stackCount;
- Q_ASSERT(stackCount >= 0);
- CGContextRestoreGState(hd);
-}
-
-class QMacQuartzPaintDevice : public QPaintDevice
-{
-public:
- QMacQuartzPaintDevice(CGContextRef cg, int width, int height, int bytesPerLine)
- : mCG(cg), mWidth(width), mHeight(height), mBytesPerLine(bytesPerLine)
- { }
- int devType() const { return QInternal::MacQuartz; }
- CGContextRef cgContext() const { return mCG; }
- int metric(PaintDeviceMetric metric) const {
- switch (metric) {
- case PdmWidth:
- return mWidth;
- case PdmHeight:
- return mHeight;
- case PdmWidthMM:
- return (qt_defaultDpiX() * mWidth) / 2.54;
- case PdmHeightMM:
- return (qt_defaultDpiY() * mHeight) / 2.54;
- case PdmNumColors:
- return 0;
- case PdmDepth:
- return 32;
- case PdmDpiX:
- case PdmPhysicalDpiX:
- return qt_defaultDpiX();
- case PdmDpiY:
- case PdmPhysicalDpiY:
- return qt_defaultDpiY();
- }
- return 0;
- }
- QPaintEngine *paintEngine() const { qWarning("This function should never be called."); return 0; }
-private:
- CGContextRef mCG;
- int mWidth;
- int mHeight;
- int mBytesPerLine;
-};
-
-QT_END_NAMESPACE
-
-#endif // QPAINTENGINE_MAC_P_H
diff --git a/src/widgets/platforms/mac/qpixmap_mac.cpp b/src/widgets/platforms/mac/qpixmap_mac.cpp
deleted file mode 100644
index 3b2452c37c..0000000000
--- a/src/widgets/platforms/mac/qpixmap_mac.cpp
+++ /dev/null
@@ -1,1062 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 "qpixmap.h"
-#include "qimage.h"
-#include "qapplication.h"
-#include "qbitmap.h"
-#include "qmatrix.h"
-#include "qtransform.h"
-#include "qlibrary.h"
-#include "qvarlengtharray.h"
-#include "qdebug.h"
-#include <private/qdrawhelper_p.h>
-#include <private/qpixmap_mac_p.h>
-#include <private/qpixmap_raster_p.h>
-#include <private/qpaintengine_mac_p.h>
-#include <private/qt_mac_p.h>
-#include <private/qt_cocoa_helpers_mac_p.h>
-#include <private/qapplication_p.h>
-
-#include <limits.h>
-#include <string.h>
-
-QT_BEGIN_NAMESPACE
-
-/*****************************************************************************
- Externals
- *****************************************************************************/
-extern const uchar *qt_get_bitflip_array(); //qimage.cpp
-extern CGContextRef qt_mac_cg_context(const QPaintDevice *pdev); //qpaintdevice_mac.cpp
-extern RgnHandle qt_mac_get_rgn(); //qregion_mac.cpp
-extern void qt_mac_dispose_rgn(RgnHandle r); //qregion_mac.cpp
-extern QRegion qt_mac_convert_mac_region(RgnHandle rgn); //qregion_mac.cpp
-
-static int qt_pixmap_serial = 0;
-
-Q_WIDGETS_EXPORT quint32 *qt_mac_pixmap_get_base(const QPixmap *pix)
-{
- if (QApplicationPrivate::graphics_system_name == QLatin1String("raster"))
- return reinterpret_cast<quint32 *>(static_cast<QRasterPlatformPixmap*>(pix->data.data())->buffer()->bits());
- else
- return static_cast<QMacPlatformPixmap*>(pix->data.data())->pixels;
-}
-
-Q_WIDGETS_EXPORT int qt_mac_pixmap_get_bytes_per_line(const QPixmap *pix)
-{
- if (QApplicationPrivate::graphics_system_name == QLatin1String("raster"))
- return static_cast<QRasterPlatformPixmap*>(pix->data.data())->buffer()->bytesPerLine();
- else
- return static_cast<QMacPlatformPixmap*>(pix->data.data())->bytesPerRow;
-}
-
-void qt_mac_cgimage_data_free(void *info, const void *memoryToFree, size_t)
-{
- QMacPlatformPixmap *pmdata = static_cast<QMacPlatformPixmap *>(info);
- if (!pmdata) {
- free(const_cast<void *>(memoryToFree));
- } else {
- if (QMacPlatformPixmap::validDataPointers.contains(pmdata) == false) {
- free(const_cast<void *>(memoryToFree));
- return;
- }
- if (pmdata->pixels == pmdata->pixelsToFree) {
- // something we aren't expecting, just free it.
- Q_ASSERT(memoryToFree != pmdata->pixelsToFree);
- free(const_cast<void *>(memoryToFree));
- } else {
- free(pmdata->pixelsToFree);
- pmdata->pixelsToFree = static_cast<quint32 *>(const_cast<void *>(memoryToFree));
- }
- pmdata->cg_dataBeingReleased = 0;
- }
-}
-
-/*****************************************************************************
- QPixmap member functions
- *****************************************************************************/
-
-static inline QRgb qt_conv16ToRgb(ushort c) {
- static const int qt_rbits = (565/100);
- static const int qt_gbits = (565/10%10);
- static const int qt_bbits = (565%10);
- static const int qt_red_shift = qt_bbits+qt_gbits-(8-qt_rbits);
- static const int qt_green_shift = qt_bbits-(8-qt_gbits);
- static const int qt_neg_blue_shift = 8-qt_bbits;
- static const int qt_blue_mask = (1<<qt_bbits)-1;
- static const int qt_green_mask = (1<<(qt_gbits+qt_bbits))-((1<<qt_bbits)-1);
- static const int qt_red_mask = (1<<(qt_rbits+qt_gbits+qt_bbits))-(1<<(qt_gbits+qt_bbits));
-
- const int r=(c & qt_red_mask);
- const int g=(c & qt_green_mask);
- const int b=(c & qt_blue_mask);
- const int tr = r >> qt_red_shift;
- const int tg = g >> qt_green_shift;
- const int tb = b << qt_neg_blue_shift;
-
- return qRgb(tr,tg,tb);
-}
-
-QSet<QMacPlatformPixmap*> QMacPlatformPixmap::validDataPointers;
-
-QMacPlatformPixmap::QMacPlatformPixmap(PixelType type)
- : QPlatformPixmap(type, MacClass), has_alpha(0), has_mask(0),
- uninit(true), pixels(0), pixelsSize(0), pixelsToFree(0),
- bytesPerRow(0), cg_data(0), cg_dataBeingReleased(0), cg_mask(0),
- pengine(0)
-{
-}
-
-QPlatformPixmap *QMacPlatformPixmap::createCompatiblePlatformPixmap() const
-{
- return new QMacPlatformPixmap(pixelType());
-}
-
-#define BEST_BYTE_ALIGNMENT 16
-#define COMPTUE_BEST_BYTES_PER_ROW(bpr) \
- (((bpr) + (BEST_BYTE_ALIGNMENT - 1)) & ~(BEST_BYTE_ALIGNMENT - 1))
-
-void QMacPlatformPixmap::resize(int width, int height)
-{
- setSerialNumber(++qt_pixmap_serial);
-
- w = width;
- h = height;
- is_null = (w <= 0 || h <= 0);
- d = (pixelType() == BitmapType ? 1 : 32);
- bool make_null = w <= 0 || h <= 0; // create null pixmap
- if (make_null || d == 0) {
- w = 0;
- h = 0;
- is_null = true;
- d = 0;
- if (!make_null)
- qWarning("Qt: QPixmap: Invalid pixmap parameters");
- return;
- }
-
- if (w < 1 || h < 1)
- return;
-
- //create the pixels
- bytesPerRow = w * sizeof(quint32); // Minimum bytes per row.
-
- // Quartz2D likes things as a multple of 16 (for now).
- bytesPerRow = COMPTUE_BEST_BYTES_PER_ROW(bytesPerRow);
- macCreatePixels();
-}
-
-#undef COMPUTE_BEST_BYTES_PER_ROW
-
-void QMacPlatformPixmap::fromImage(const QImage &img,
- Qt::ImageConversionFlags flags)
-{
- setSerialNumber(++qt_pixmap_serial);
-
- // the conversion code only handles format >=
- // Format_ARGB32_Premultiplied at the moment..
- if (img.format() > QImage::Format_ARGB32_Premultiplied) {
- QImage image;
- if (img.hasAlphaChannel())
- image = img.convertToFormat(QImage::Format_ARGB32_Premultiplied);
- else
- image = img.convertToFormat(QImage::Format_RGB32);
- fromImage(image, flags);
- return;
- }
-
- w = img.width();
- h = img.height();
- is_null = (w <= 0 || h <= 0);
- d = (pixelType() == BitmapType ? 1 : img.depth());
-
- QImage image = img;
- int dd = QPixmap::defaultDepth();
- bool force_mono = (dd == 1 ||
- (flags & Qt::ColorMode_Mask)==Qt::MonoOnly);
- if (force_mono) { // must be monochrome
- if (d != 1) {
- image = image.convertToFormat(QImage::Format_MonoLSB, flags); // dither
- d = 1;
- }
- } else { // can be both
- bool conv8 = false;
- if(d > 8 && dd <= 8) { // convert to 8 bit
- if ((flags & Qt::DitherMode_Mask) == Qt::AutoDither)
- flags = (flags & ~Qt::DitherMode_Mask)
- | Qt::PreferDither;
- conv8 = true;
- } else if ((flags & Qt::ColorMode_Mask) == Qt::ColorOnly) {
- conv8 = d == 1; // native depth wanted
- } else if (d == 1) {
- if (image.colorCount() == 2) {
- QRgb c0 = image.color(0); // Auto: convert to best
- QRgb c1 = image.color(1);
- conv8 = qMin(c0,c1) != qRgb(0,0,0) || qMax(c0,c1) != qRgb(255,255,255);
- } else {
- // eg. 1-color monochrome images (they do exist).
- conv8 = true;
- }
- }
- if (conv8) {
- image = image.convertToFormat(QImage::Format_Indexed8, flags);
- d = 8;
- }
- }
-
- if (image.depth()==1) {
- image.setColor(0, QColor(Qt::color0).rgba());
- image.setColor(1, QColor(Qt::color1).rgba());
- }
-
- if (d == 16 || d == 24) {
- image = image.convertToFormat(QImage::Format_RGB32, flags);
- fromImage(image, flags);
- return;
- }
-
- // different size or depth, make a new pixmap
- resize(w, h);
-
- quint32 *dptr = pixels, *drow;
- const uint dbpr = bytesPerRow;
-
- const QImage::Format sfmt = image.format();
- const unsigned short sbpr = image.bytesPerLine();
-
- // use const_cast to prevent a detach
- const uchar *sptr = const_cast<const QImage &>(image).bits(), *srow;
-
- for (int y = 0; y < h; ++y) {
- drow = dptr + (y * (dbpr / 4));
- srow = sptr + (y * sbpr);
- switch(sfmt) {
- case QImage::Format_MonoLSB:
- case QImage::Format_Mono:{
- for (int x = 0; x < w; ++x) {
- char one_bit = *(srow + (x / 8));
- if (sfmt == QImage::Format_Mono)
- one_bit = one_bit >> (7 - (x % 8));
- else
- one_bit = one_bit >> (x % 8);
- if ((one_bit & 0x01))
- *(drow+x) = 0xFF000000;
- else
- *(drow+x) = 0xFFFFFFFF;
- }
- break;
- }
- case QImage::Format_Indexed8: {
- int numColors = image.numColors();
- if (numColors > 0) {
- for (int x = 0; x < w; ++x) {
- int index = *(srow + x);
- *(drow+x) = PREMUL(image.color(qMin(index, numColors)));
- }
- }
- } break;
- case QImage::Format_RGB32:
- for (int x = 0; x < w; ++x)
- *(drow+x) = *(((quint32*)srow) + x) | 0xFF000000;
- break;
- case QImage::Format_ARGB32:
- case QImage::Format_ARGB32_Premultiplied:
- for (int x = 0; x < w; ++x) {
- if(sfmt == QImage::Format_RGB32)
- *(drow+x) = 0xFF000000 | (*(((quint32*)srow) + x) & 0x00FFFFFF);
- else if(sfmt == QImage::Format_ARGB32_Premultiplied)
- *(drow+x) = *(((quint32*)srow) + x);
- else
- *(drow+x) = PREMUL(*(((quint32*)srow) + x));
- }
- break;
- default:
- qWarning("Qt: internal: Oops: Forgot a format [%d] %s:%d", sfmt,
- __FILE__, __LINE__);
- break;
- }
- }
- if (sfmt != QImage::Format_RGB32) { //setup the alpha
- bool alphamap = image.depth() == 32;
- if (sfmt == QImage::Format_Indexed8) {
- const QVector<QRgb> rgb = image.colorTable();
- for (int i = 0, count = image.colorCount(); i < count; ++i) {
- const int alpha = qAlpha(rgb[i]);
- if (alpha != 0xff) {
- alphamap = true;
- break;
- }
- }
- }
- macSetHasAlpha(alphamap);
- }
- uninit = false;
-}
-
-int get_index(QImage * qi,QRgb mycol)
-{
- int loopc;
- for(loopc=0;loopc<qi->colorCount();loopc++) {
- if(qi->color(loopc)==mycol)
- return loopc;
- }
- qi->setColorCount(qi->colorCount()+1);
- qi->setColor(qi->colorCount(),mycol);
- return qi->colorCount();
-}
-
-QImage QMacPlatformPixmap::toImage() const
-{
- QImage::Format format = QImage::Format_MonoLSB;
- if (d != 1) //Doesn't support index color modes
- format = (has_alpha ? QImage::Format_ARGB32_Premultiplied :
- QImage::Format_RGB32);
-
- QImage image(w, h, format);
- quint32 *sptr = pixels, *srow;
- const uint sbpr = bytesPerRow;
- if (format == QImage::Format_MonoLSB) {
- image.fill(0);
- image.setColorCount(2);
- image.setColor(0, QColor(Qt::color0).rgba());
- image.setColor(1, QColor(Qt::color1).rgba());
- for (int y = 0; y < h; ++y) {
- uchar *scanLine = image.scanLine(y);
- srow = sptr + (y * (sbpr/4));
- for (int x = 0; x < w; ++x) {
- if (!(*(srow + x) & RGB_MASK))
- scanLine[x >> 3] |= (1 << (x & 7));
- }
- }
- } else {
- for (int y = 0; y < h; ++y) {
- srow = sptr + (y * (sbpr / 4));
- memcpy(image.scanLine(y), srow, w * 4);
- }
-
- }
-
- return image;
-}
-
-void QMacPlatformPixmap::fill(const QColor &fillColor)
-
-{
- { //we don't know what backend to use so we cannot paint here
- quint32 *dptr = pixels;
- Q_ASSERT_X(dptr, "QPixmap::fill", "No dptr");
- const quint32 colr = PREMUL(fillColor.rgba());
- const int nbytes = bytesPerRow * h;
- if (!colr) {
- memset(dptr, 0, nbytes);
- } else {
- for (uint i = 0; i < nbytes / sizeof(quint32); ++i)
- *(dptr + i) = colr;
- }
- }
-
- // If we had an alpha channel from before, don't
- // switch it off. Only go from no alpha to alpha:
- if (fillColor.alpha() != 255)
- macSetHasAlpha(true);
-}
-
-QPixmap QMacPlatformPixmap::alphaChannel() const
-{
- if (!has_alpha)
- return QPixmap();
-
- QMacPlatformPixmap *alpha = new QMacPlatformPixmap(PixmapType);
- alpha->resize(w, h);
- macGetAlphaChannel(alpha, false);
- return QPixmap(alpha);
-}
-
-void QMacPlatformPixmap::setAlphaChannel(const QPixmap &alpha)
-{
- has_mask = true;
- QMacPlatformPixmap *alphaData = static_cast<QMacPlatformPixmap*>(alpha.data.data());
- macSetAlphaChannel(alphaData, false);
-}
-
-QBitmap QMacPlatformPixmap::mask() const
-{
- if (!has_mask && !has_alpha)
- return QBitmap();
-
- QMacPlatformPixmap *mask = new QMacPlatformPixmap(BitmapType);
- mask->resize(w, h);
- macGetAlphaChannel(mask, true);
- return QPixmap(mask);
-}
-
-void QMacPlatformPixmap::setMask(const QBitmap &mask)
-{
- if (mask.isNull()) {
- QMacPlatformPixmap opaque(PixmapType);
- opaque.resize(w, h);
- opaque.fill(QColor(255, 255, 255, 255));
- macSetAlphaChannel(&opaque, true);
- has_alpha = has_mask = false;
- return;
- }
-
- has_alpha = false;
- has_mask = true;
- QMacPlatformPixmap *maskData = static_cast<QMacPlatformPixmap*>(mask.data.data());
- macSetAlphaChannel(maskData, true);
-}
-
-int QMacPlatformPixmap::metric(QPaintDevice::PaintDeviceMetric theMetric) const
-{
- switch (theMetric) {
- case QPaintDevice::PdmWidth:
- return w;
- case QPaintDevice::PdmHeight:
- return h;
- case QPaintDevice::PdmWidthMM:
- return qRound(metric(QPaintDevice::PdmWidth) * 25.4 / qreal(metric(QPaintDevice::PdmDpiX)));
- case QPaintDevice::PdmHeightMM:
- return qRound(metric(QPaintDevice::PdmHeight) * 25.4 / qreal(metric(QPaintDevice::PdmDpiY)));
- case QPaintDevice::PdmNumColors:
- return 1 << d;
- case QPaintDevice::PdmDpiX:
- case QPaintDevice::PdmPhysicalDpiX: {
- extern float qt_mac_defaultDpi_x(); //qpaintdevice_mac.cpp
- return int(qt_mac_defaultDpi_x());
- }
- case QPaintDevice::PdmDpiY:
- case QPaintDevice::PdmPhysicalDpiY: {
- extern float qt_mac_defaultDpi_y(); //qpaintdevice_mac.cpp
- return int(qt_mac_defaultDpi_y());
- }
- case QPaintDevice::PdmDepth:
- return d;
- default:
- qWarning("QPixmap::metric: Invalid metric command");
- }
- return 0;
-}
-
-QMacPlatformPixmap::~QMacPlatformPixmap()
-{
- validDataPointers.remove(this);
- if (cg_mask) {
- CGImageRelease(cg_mask);
- cg_mask = 0;
- }
-
- delete pengine; // Make sure we aren't drawing on the context anymore.
- if (cg_data) {
- CGImageRelease(cg_data);
- } else if (!cg_dataBeingReleased && pixels != pixelsToFree) {
- free(pixels);
- }
- free(pixelsToFree);
-}
-
-void QMacPlatformPixmap::macSetAlphaChannel(const QMacPlatformPixmap *pix, bool asMask)
-{
- if (!pixels || !h || !w || pix->w != w || pix->h != h)
- return;
-
- quint32 *dptr = pixels, *drow;
- const uint dbpr = bytesPerRow;
- const unsigned short sbpr = pix->bytesPerRow;
- quint32 *sptr = pix->pixels, *srow;
- for (int y=0; y < h; ++y) {
- drow = dptr + (y * (dbpr/4));
- srow = sptr + (y * (sbpr/4));
- if(d == 1) {
- for (int x=0; x < w; ++x) {
- if((*(srow+x) & RGB_MASK))
- *(drow+x) = 0xFFFFFFFF;
- }
- } else if(d == 8) {
- for (int x=0; x < w; ++x)
- *(drow+x) = (*(drow+x) & RGB_MASK) | (*(srow+x) << 24);
- } else if(asMask) {
- for (int x=0; x < w; ++x) {
- if(*(srow+x) & RGB_MASK)
- *(drow+x) = (*(drow+x) & RGB_MASK);
- else
- *(drow+x) = (*(drow+x) & RGB_MASK) | 0xFF000000;
- *(drow+x) = PREMUL(*(drow+x));
- }
- } else {
- for (int x=0; x < w; ++x) {
- const uchar alpha = qGray(qRed(*(srow+x)), qGreen(*(srow+x)), qBlue(*(srow+x)));
- const uchar destAlpha = qt_div_255(alpha * qAlpha(*(drow+x)));
-#if 1
- *(drow+x) = (*(drow+x) & RGB_MASK) | (destAlpha << 24);
-#else
- *(drow+x) = qRgba(qt_div_255(qRed(*(drow+x) * alpha)),
- qt_div_255(qGreen(*(drow+x) * alpha)),
- qt_div_255(qBlue(*(drow+x) * alpha)), destAlpha);
-#endif
- *(drow+x) = PREMUL(*(drow+x));
- }
- }
- }
- macSetHasAlpha(true);
-}
-
-void QMacPlatformPixmap::macGetAlphaChannel(QMacPlatformPixmap *pix, bool asMask) const
-{
- quint32 *dptr = pix->pixels, *drow;
- const uint dbpr = pix->bytesPerRow;
- const unsigned short sbpr = bytesPerRow;
- quint32 *sptr = pixels, *srow;
- for(int y=0; y < h; ++y) {
- drow = dptr + (y * (dbpr/4));
- srow = sptr + (y * (sbpr/4));
- if(asMask) {
- for (int x = 0; x < w; ++x) {
- if (*(srow + x) & qRgba(0, 0, 0, 255))
- *(drow + x) = 0x00000000;
- else
- *(drow + x) = 0xFFFFFFFF;
- }
- } else {
- for (int x = 0; x < w; ++x) {
- const int alpha = qAlpha(*(srow + x));
- *(drow + x) = qRgb(alpha, alpha, alpha);
- }
- }
- }
-}
-
-void QMacPlatformPixmap::macSetHasAlpha(bool b)
-{
- has_alpha = b;
- macReleaseCGImageRef();
-}
-
-void QMacPlatformPixmap::macCreateCGImageRef()
-{
- Q_ASSERT(cg_data == 0);
- //create the cg data
- CGColorSpaceRef colorspace = QCoreGraphicsPaintEngine::macDisplayColorSpace();
- QCFType<CGDataProviderRef> provider = CGDataProviderCreateWithData(this,
- pixels, bytesPerRow * h,
- qt_mac_cgimage_data_free);
- validDataPointers.insert(this);
- uint cgflags = kCGImageAlphaPremultipliedFirst;
-#ifdef kCGBitmapByteOrder32Host //only needed because CGImage.h added symbols in the minor version
- cgflags |= kCGBitmapByteOrder32Host;
-#endif
- cg_data = CGImageCreate(w, h, 8, 32, bytesPerRow, colorspace,
- cgflags, provider, 0, 0, kCGRenderingIntentDefault);
-}
-
-void QMacPlatformPixmap::macReleaseCGImageRef()
-{
- if (!cg_data)
- return; // There's nothing we need to do
-
- cg_dataBeingReleased = cg_data;
- CGImageRelease(cg_data);
- cg_data = 0;
-
- if (pixels != pixelsToFree) {
- macCreatePixels();
- } else {
- pixelsToFree = 0;
- }
-}
-
-
-// We create our space in memory to paint on here. If we already have existing pixels
-// copy them over. This is to preserve the fact that CGImageRef's are immutable.
-void QMacPlatformPixmap::macCreatePixels()
-{
- const int numBytes = bytesPerRow * h;
- quint32 *base_pixels;
- if (pixelsToFree && pixelsToFree != pixels) {
- // Reuse unused block of memory lying around from a previous callback.
- base_pixels = pixelsToFree;
- pixelsToFree = 0;
- } else {
- // We need a block of memory to do stuff with.
- base_pixels = static_cast<quint32 *>(malloc(numBytes));
- }
-
- if (pixels)
- memcpy(base_pixels, pixels, pixelsSize);
- pixels = base_pixels;
- pixelsSize = numBytes;
-}
-
-#if 0
-QPixmap QMacPlatformPixmap::transformed(const QTransform &transform,
- Qt::TransformationMode mode) const
-{
- int w, h; // size of target pixmap
- const int ws = width();
- const int hs = height();
-
- QTransform mat(transform.m11(), transform.m12(),
- transform.m21(), transform.m22(), 0., 0.);
- if (transform.m12() == 0.0F && transform.m21() == 0.0F &&
- transform.m11() >= 0.0F && transform.m22() >= 0.0F)
- {
- h = int(qAbs(mat.m22()) * hs + 0.9999);
- w = int(qAbs(mat.m11()) * ws + 0.9999);
- h = qAbs(h);
- w = qAbs(w);
- } else { // rotation or shearing
- QPolygonF a(QRectF(0,0,ws+1,hs+1));
- a = mat.map(a);
- QRectF r = a.boundingRect().normalized();
- w = int(r.width() + 0.9999);
- h = int(r.height() + 0.9999);
- }
- mat = QPixmap::trueMatrix(mat, ws, hs);
- if (!h || !w)
- return QPixmap();
-
- // create destination
- QMacPlatformPixmap *pm = new QMacPlatformPixmap(pixelType(), w, h);
- const quint32 *sptr = pixels;
- quint32 *dptr = pm->pixels;
- memset(dptr, 0, (pm->bytesPerRow * pm->h));
-
- // do the transform
- if (mode == Qt::SmoothTransformation) {
-#warning QMacPlatformPixmap::transformed not properly implemented
- qWarning("QMacPlatformPixmap::transformed not properly implemented");
-#if 0
- QPainter p(&pm);
- p.setRenderHint(QPainter::Antialiasing);
- p.setRenderHint(QPainter::SmoothPixmapTransform);
- p.setTransform(mat);
- p.drawPixmap(0, 0, *this);
-#endif
- } else {
- bool invertible;
- mat = mat.inverted(&invertible);
- if (!invertible)
- return QPixmap();
-
- const int bpp = 32;
- const int xbpl = (w * bpp) / 8;
- if (!qt_xForm_helper(mat, 0, QT_XFORM_TYPE_MSBFIRST, bpp,
- (uchar*)dptr, xbpl, (pm->bytesPerRow) - xbpl,
- h, (uchar*)sptr, (bytesPerRow), ws, hs)) {
- qWarning("QMacPlatformPixmap::transform(): failure");
- return QPixmap();
- }
- }
-
- // update the alpha
- pm->macSetHasAlpha(true);
- return QPixmap(pm);
-}
-#endif
-
-QT_BEGIN_INCLUDE_NAMESPACE
-#include <OpenGL/OpenGL.h>
-#include <OpenGL/gl.h>
-QT_END_INCLUDE_NAMESPACE
-
-// Load and resolve the symbols we need from OpenGL manually so QtGui doesn't have to link against the OpenGL framework.
-typedef CGLError (*PtrCGLChoosePixelFormat)(const CGLPixelFormatAttribute *, CGLPixelFormatObj *, long *);
-typedef CGLError (*PtrCGLClearDrawable)(CGLContextObj);
-typedef CGLError (*PtrCGLCreateContext)(CGLPixelFormatObj, CGLContextObj, CGLContextObj *);
-typedef CGLError (*PtrCGLDestroyContext)(CGLContextObj);
-typedef CGLError (*PtrCGLDestroyPixelFormat)(CGLPixelFormatObj);
-typedef CGLError (*PtrCGLSetCurrentContext)(CGLContextObj);
-typedef CGLError (*PtrCGLSetFullScreen)(CGLContextObj);
-typedef void (*PtrglFinish)();
-typedef void (*PtrglPixelStorei)(GLenum, GLint);
-typedef void (*PtrglReadBuffer)(GLenum);
-typedef void (*PtrglReadPixels)(GLint, GLint, GLsizei, GLsizei, GLenum, GLenum, GLvoid *);
-
-static PtrCGLChoosePixelFormat ptrCGLChoosePixelFormat = 0;
-static PtrCGLClearDrawable ptrCGLClearDrawable = 0;
-static PtrCGLCreateContext ptrCGLCreateContext = 0;
-static PtrCGLDestroyContext ptrCGLDestroyContext = 0;
-static PtrCGLDestroyPixelFormat ptrCGLDestroyPixelFormat = 0;
-static PtrCGLSetCurrentContext ptrCGLSetCurrentContext = 0;
-static PtrCGLSetFullScreen ptrCGLSetFullScreen = 0;
-static PtrglFinish ptrglFinish = 0;
-static PtrglPixelStorei ptrglPixelStorei = 0;
-static PtrglReadBuffer ptrglReadBuffer = 0;
-static PtrglReadPixels ptrglReadPixels = 0;
-
-static bool resolveOpenGLSymbols()
-{
- if (ptrCGLChoosePixelFormat == 0) {
- QLibrary library(QLatin1String("/System/Library/Frameworks/OpenGL.framework/OpenGL"));
- ptrCGLChoosePixelFormat = (PtrCGLChoosePixelFormat)(library.resolve("CGLChoosePixelFormat"));
- ptrCGLClearDrawable = (PtrCGLClearDrawable)(library.resolve("CGLClearDrawable"));
- ptrCGLCreateContext = (PtrCGLCreateContext)(library.resolve("CGLCreateContext"));
- ptrCGLDestroyContext = (PtrCGLDestroyContext)(library.resolve("CGLDestroyContext"));
- ptrCGLDestroyPixelFormat = (PtrCGLDestroyPixelFormat)(library.resolve("CGLDestroyPixelFormat"));
- ptrCGLSetCurrentContext = (PtrCGLSetCurrentContext)(library.resolve("CGLSetCurrentContext"));
- ptrCGLSetFullScreen = (PtrCGLSetFullScreen)(library.resolve("CGLSetFullScreen"));
- ptrglFinish = (PtrglFinish)(library.resolve("glFinish"));
- ptrglPixelStorei = (PtrglPixelStorei)(library.resolve("glPixelStorei"));
- ptrglReadBuffer = (PtrglReadBuffer)(library.resolve("glReadBuffer"));
- ptrglReadPixels = (PtrglReadPixels)(library.resolve("glReadPixels"));
- }
- return ptrCGLChoosePixelFormat && ptrCGLClearDrawable && ptrCGLCreateContext
- && ptrCGLDestroyContext && ptrCGLDestroyPixelFormat && ptrCGLSetCurrentContext
- && ptrCGLSetFullScreen && ptrglFinish && ptrglPixelStorei
- && ptrglReadBuffer && ptrglReadPixels;
-}
-
-// Inverts the given pixmap in the y direction.
-static void qt_mac_flipPixmap(void *data, int rowBytes, int height)
-{
- int bottom = height - 1;
- void *base = data;
- void *buffer = malloc(rowBytes);
-
- int top = 0;
- while ( top < bottom )
- {
- void *topP = (void *)((top * rowBytes) + (intptr_t)base);
- void *bottomP = (void *)((bottom * rowBytes) + (intptr_t)base);
-
- bcopy( topP, buffer, rowBytes );
- bcopy( bottomP, topP, rowBytes );
- bcopy( buffer, bottomP, rowBytes );
-
- ++top;
- --bottom;
- }
- free(buffer);
-}
-
-// Grabs displayRect from display and places it into buffer.
-static void qt_mac_grabDisplayRect(CGDirectDisplayID display, const QRect &displayRect, void *buffer)
-{
- if (display == kCGNullDirectDisplay)
- return;
-
- CGLPixelFormatAttribute attribs[] = {
- kCGLPFAFullScreen,
- kCGLPFADisplayMask,
- (CGLPixelFormatAttribute)0, /* Display mask bit goes here */
- (CGLPixelFormatAttribute)0
- };
-
- attribs[2] = (CGLPixelFormatAttribute)CGDisplayIDToOpenGLDisplayMask(display);
-
- // Build a full-screen GL context
- CGLPixelFormatObj pixelFormatObj;
- long numPixelFormats;
-
- ptrCGLChoosePixelFormat( attribs, &pixelFormatObj, &numPixelFormats );
-
- if (!pixelFormatObj) // No full screen context support
- return;
-
- CGLContextObj glContextObj;
- ptrCGLCreateContext(pixelFormatObj, 0, &glContextObj);
- ptrCGLDestroyPixelFormat(pixelFormatObj) ;
- if (!glContextObj)
- return;
-
- ptrCGLSetCurrentContext(glContextObj);
- ptrCGLSetFullScreen(glContextObj) ;
-
- ptrglReadBuffer(GL_FRONT);
-
- ptrglFinish(); // Finish all OpenGL commands
- ptrglPixelStorei(GL_PACK_ALIGNMENT, 4); // Force 4-byte alignment
- ptrglPixelStorei(GL_PACK_ROW_LENGTH, 0);
- ptrglPixelStorei(GL_PACK_SKIP_ROWS, 0);
- ptrglPixelStorei(GL_PACK_SKIP_PIXELS, 0);
-
- // Fetch the data in XRGB format, matching the bitmap context.
- ptrglReadPixels(GLint(displayRect.x()), GLint(displayRect.y()),
- GLint(displayRect.width()), GLint(displayRect.height()),
-#ifdef __BIG_ENDIAN__
- GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, buffer
-#else
- GL_BGRA, GL_UNSIGNED_INT_8_8_8_8, buffer
-#endif
- );
-
- ptrCGLSetCurrentContext(0);
- ptrCGLClearDrawable(glContextObj); // disassociate from full screen
- ptrCGLDestroyContext(glContextObj); // and destroy the context
-}
-
-// Returns a pixmap containing the screen contents at rect.
-static QPixmap qt_mac_grabScreenRect(const QRect &rect)
-{
- if (!resolveOpenGLSymbols())
- return QPixmap();
-
- const int maxDisplays = 128; // 128 displays should be enough for everyone.
- CGDirectDisplayID displays[maxDisplays];
- CGDisplayCount displayCount;
- const CGRect cgRect = CGRectMake(rect.x(), rect.y(), rect.width(), rect.height());
- const CGDisplayErr err = CGGetDisplaysWithRect(cgRect, maxDisplays, displays, &displayCount);
-
- if (err && displayCount == 0)
- return QPixmap();
-
- long bytewidth = rect.width() * 4; // Assume 4 bytes/pixel for now
- bytewidth = (bytewidth + 3) & ~3; // Align to 4 bytes
- QVarLengthArray<char> buffer(rect.height() * bytewidth);
-
- for (uint i = 0; i < displayCount; ++i) {
- const CGRect bounds = CGDisplayBounds(displays[i]);
- // Translate to display-local coordinates
- QRect displayRect = rect.translated(qRound(-bounds.origin.x), qRound(-bounds.origin.y));
- // Adjust for inverted y axis.
- displayRect.moveTop(qRound(bounds.size.height) - displayRect.y() - rect.height());
- qt_mac_grabDisplayRect(displays[i], displayRect, buffer.data());
- }
-
- qt_mac_flipPixmap(buffer.data(), bytewidth, rect.height());
- QCFType<CGContextRef> bitmap = CGBitmapContextCreate(buffer.data(), rect.width(),
- rect.height(), 8, bytewidth,
- QCoreGraphicsPaintEngine::macGenericColorSpace(),
- kCGImageAlphaNoneSkipFirst);
- QCFType<CGImageRef> image = CGBitmapContextCreateImage(bitmap);
- return QPixmap::fromMacCGImageRef(image);
-}
-
-
-QPixmap QPixmap::grabWindow(WId window, int x, int y, int w, int h)
-{
- QWidget *widget = QWidget::find(window);
- if (widget == 0)
- return QPixmap();
-
- if(w == -1)
- w = widget->width() - x;
- if(h == -1)
- h = widget->height() - y;
-
- QPoint globalCoord(0, 0);
- globalCoord = widget->mapToGlobal(globalCoord);
- QRect rect(globalCoord.x() + x, globalCoord.y() + y, w, h);
-
- return qt_mac_grabScreenRect(rect);
-}
-
-/*! \internal
-
- Returns the QuickDraw CGrafPtr of the pixmap. 0 is returned if it can't
- be obtained. Do not hold the pointer around for long as it can be
- relocated.
-
- \warning This function is only available on Mac OS X.
- \warning As of Qt 4.6, this function \e{always} returns zero.
-*/
-
-Qt::HANDLE QPixmap::macQDHandle() const
-{
- return 0;
-}
-
-/*! \internal
-
- Returns the QuickDraw CGrafPtr of the pixmap's alpha channel. 0 is
- returned if it can't be obtained. Do not hold the pointer around for
- long as it can be relocated.
-
- \warning This function is only available on Mac OS X.
- \warning As of Qt 4.6, this function \e{always} returns zero.
-*/
-
-Qt::HANDLE QPixmap::macQDAlphaHandle() const
-{
- return 0;
-}
-
-/*! \internal
-
- Returns the CoreGraphics CGContextRef of the pixmap. 0 is returned if
- it can't be obtained. It is the caller's responsiblity to
- CGContextRelease the context when finished using it.
-
- \warning This function is only available on Mac OS X.
-*/
-
-Qt::HANDLE QPixmap::macCGHandle() const
-{
- if (isNull())
- return 0;
-
- if (data->classId() == QPlatformPixmap::MacClass) {
- QMacPlatformPixmap *d = static_cast<QMacPlatformPixmap *>(data.data());
- if (!d->cg_data)
- d->macCreateCGImageRef();
- CGImageRef ret = d->cg_data;
- CGImageRetain(ret);
- return ret;
- } else if (data->classId() == QPlatformPixmap::RasterClass) {
- return qt_mac_image_to_cgimage(static_cast<QRasterPlatformPixmap *>(data.data())->image);
- }
- return 0;
-}
-
-bool QMacPlatformPixmap::hasAlphaChannel() const
-{
- return has_alpha;
-}
-
-CGImageRef qt_mac_create_imagemask(const QPixmap &pixmap, const QRectF &sr)
-{
- QMacPlatformPixmap *px = static_cast<QMacPlatformPixmap*>(pixmap.data.data());
- if (px->cg_mask) {
- if (px->cg_mask_rect == sr) {
- CGImageRetain(px->cg_mask); //reference for the caller
- return px->cg_mask;
- }
- CGImageRelease(px->cg_mask);
- px->cg_mask = 0;
- }
-
- const int sx = qRound(sr.x()), sy = qRound(sr.y()), sw = qRound(sr.width()), sh = qRound(sr.height());
- const int sbpr = px->bytesPerRow;
- const uint nbytes = sw * sh;
- // alpha is always 255 for bitmaps, ignore it in this case.
- const quint32 mask = px->depth() == 1 ? 0x00ffffff : 0xffffffff;
- quint8 *dptr = static_cast<quint8 *>(malloc(nbytes));
- quint32 *sptr = px->pixels, *srow;
- for(int y = sy, offset=0; y < sh; ++y) {
- srow = sptr + (y * (sbpr / 4));
- for(int x = sx; x < sw; ++x)
- *(dptr+(offset++)) = (*(srow+x) & mask) ? 255 : 0;
- }
- QCFType<CGDataProviderRef> provider = CGDataProviderCreateWithData(0, dptr, nbytes, qt_mac_cgimage_data_free);
- px->cg_mask = CGImageMaskCreate(sw, sh, 8, 8, nbytes / sh, provider, 0, 0);
- px->cg_mask_rect = sr;
- CGImageRetain(px->cg_mask); //reference for the caller
- return px->cg_mask;
-}
-
-
-/*! \internal */
-QPaintEngine* QMacPlatformPixmap::paintEngine() const
-{
- if (!pengine) {
- QMacPlatformPixmap *that = const_cast<QMacPlatformPixmap*>(this);
- that->pengine = new QCoreGraphicsPaintEngine();
- }
- return pengine;
-}
-
-void QMacPlatformPixmap::copy(const QPlatformPixmap *data, const QRect &rect)
-{
- if (data->pixelType() == BitmapType) {
- QBitmap::fromImage(toImage().copy(rect));
- return;
- }
-
- const QMacPlatformPixmap *macData = static_cast<const QMacPlatformPixmap*>(data);
-
- resize(rect.width(), rect.height());
-
- has_alpha = macData->has_alpha;
- has_mask = macData->has_mask;
- uninit = false;
-
- const int x = rect.x();
- const int y = rect.y();
- char *dest = reinterpret_cast<char*>(pixels);
- const char *src = reinterpret_cast<const char*>(macData->pixels + x) + y * macData->bytesPerRow;
- for (int i = 0; i < h; ++i) {
- memcpy(dest, src, w * 4);
- dest += bytesPerRow;
- src += macData->bytesPerRow;
- }
-
- has_alpha = macData->has_alpha;
- has_mask = macData->has_mask;
-}
-
-bool QMacPlatformPixmap::scroll(int dx, int dy, const QRect &rect)
-{
- Q_UNUSED(dx);
- Q_UNUSED(dy);
- Q_UNUSED(rect);
- return false;
-}
-
-/*!
- \since 4.2
-
- Creates a \c CGImageRef equivalent to the QPixmap. Returns the \c CGImageRef handle.
-
- It is the caller's responsibility to release the \c CGImageRef data
- after use.
-
- \warning This function is only available on Mac OS X.
-
- \sa fromMacCGImageRef()
-*/
-CGImageRef QPixmap::toMacCGImageRef() const
-{
- return (CGImageRef)macCGHandle();
-}
-
-/*!
- \since 4.2
-
- Returns a QPixmap that is equivalent to the given \a image.
-
- \warning This function is only available on Mac OS X.
-
- \sa toMacCGImageRef(), {QPixmap#Pixmap Conversion}{Pixmap Conversion}
-*/
-QPixmap QPixmap::fromMacCGImageRef(CGImageRef image)
-{
- const size_t w = CGImageGetWidth(image),
- h = CGImageGetHeight(image);
- QPixmap ret(w, h);
- ret.fill(Qt::transparent);
- CGRect rect = CGRectMake(0, 0, w, h);
- CGContextRef ctx = qt_mac_cg_context(&ret);
- qt_mac_drawCGImage(ctx, &rect, image);
- CGContextRelease(ctx);
- return ret;
-}
-
-QT_END_NAMESPACE
diff --git a/src/widgets/platforms/mac/qpixmap_mac_p.h b/src/widgets/platforms/mac/qpixmap_mac_p.h
deleted file mode 100644
index 582eef27b6..0000000000
--- a/src/widgets/platforms/mac/qpixmap_mac_p.h
+++ /dev/null
@@ -1,134 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-#ifndef QPIXMAP_MAC_P_H
-#define QPIXMAP_MAC_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <QtGui/qplatformpixmap_qpa.h>
-#include <QtGui/qplatformpixmapfactory_p.h>
-#include <QtGui/private/qt_mac_p.h>
-
-QT_BEGIN_NAMESPACE
-
-class QMacPlatformPixmap : public QPlatformPixmap
-{
-public:
- QMacPlatformPixmap(PixelType type);
- ~QMacPlatformPixmap();
-
- QPlatformPixmap *createCompatiblePlatformPixmap() const;
-
- void resize(int width, int height);
- void fromImage(const QImage &image, Qt::ImageConversionFlags flags);
- void copy(const QPlatformPixmap *data, const QRect &rect);
- bool scroll(int dx, int dy, const QRect &rect);
-
- int metric(QPaintDevice::PaintDeviceMetric metric) const;
- void fill(const QColor &color);
- QBitmap mask() const;
- void setMask(const QBitmap &mask);
- bool hasAlphaChannel() const;
-// QPixmap transformed(const QTransform &matrix,
-// Qt::TransformationMode mode) const;
- void setAlphaChannel(const QPixmap &alphaChannel);
- QPixmap alphaChannel() const;
- QImage toImage() const;
- QPaintEngine* paintEngine() const;
-
-private:
-
- uint has_alpha : 1, has_mask : 1, uninit : 1;
-
- void macSetHasAlpha(bool b);
- void macGetAlphaChannel(QMacPlatformPixmap *, bool asMask) const;
- void macSetAlphaChannel(const QMacPlatformPixmap *, bool asMask);
- void macCreateCGImageRef();
- void macCreatePixels();
- void macReleaseCGImageRef();
- /*
- pixels stores the pixmap data. pixelsToFree is either 0 or some memory
- block that was bound to a CGImageRef and released, and for which the
- release callback has been called. There are two uses to pixelsToFree:
-
- 1. If pixels == pixelsToFree, then we know that the CGImageRef is done\
- with the data and we can modify pixels without breaking CGImageRef's
- mutability invariant.
-
- 2. If pixels != pixelsToFree and pixelsToFree != 0, then we can reuse
- pixelsToFree later on instead of malloc'ing memory.
- */
- quint32 *pixels;
- uint pixelsSize;
- quint32 *pixelsToFree;
- uint bytesPerRow;
- QRectF cg_mask_rect;
- CGImageRef cg_data, cg_dataBeingReleased, cg_mask;
- static QSet<QMacPlatformPixmap*> validDataPointers;
-
- QPaintEngine *pengine;
-
- friend class QPixmap;
- friend class QRasterBuffer;
- friend class QRasterPaintEngine;
- friend class QCoreGraphicsPaintEngine;
- friend CGImageRef qt_mac_create_imagemask(const QPixmap&, const QRectF&);
- friend quint32 *qt_mac_pixmap_get_base(const QPixmap*);
- friend int qt_mac_pixmap_get_bytes_per_line(const QPixmap*);
- friend void qt_mac_cgimage_data_free(void *, const void*, size_t);
- friend IconRef qt_mac_create_iconref(const QPixmap&);
- friend CGContextRef qt_mac_cg_context(const QPaintDevice*);
- friend QColor qcolorForThemeTextColor(ThemeTextColor themeColor);
-};
-
-QT_END_NAMESPACE
-
-#endif // QPIXMAP_MAC_P_H
diff --git a/src/widgets/platforms/mac/qprintengine_mac.mm b/src/widgets/platforms/mac/qprintengine_mac.mm
deleted file mode 100644
index 9902b3216d..0000000000
--- a/src/widgets/platforms/mac/qprintengine_mac.mm
+++ /dev/null
@@ -1,840 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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/qprintengine_mac_p.h>
-#include <qdebug.h>
-#include <qthread.h>
-#include <QtCore/qcoreapplication.h>
-
-#ifndef QT_NO_PRINTER
-
-QT_BEGIN_NAMESPACE
-
-extern QSizeF qt_paperSizeToQSizeF(QPrinter::PaperSize size);
-
-QMacPrintEngine::QMacPrintEngine(QPrinter::PrinterMode mode) : QPaintEngine(*(new QMacPrintEnginePrivate))
-{
- Q_D(QMacPrintEngine);
- d->mode = mode;
- d->initialize();
-}
-
-bool QMacPrintEngine::begin(QPaintDevice *dev)
-{
- Q_D(QMacPrintEngine);
-
- Q_ASSERT(dev && dev->devType() == QInternal::Printer);
- if (!static_cast<QPrinter *>(dev)->isValid())
- return false;
-
- if (d->state == QPrinter::Idle && !d->isPrintSessionInitialized()) // Need to reinitialize
- d->initialize();
-
- d->paintEngine->state = state;
- d->paintEngine->begin(dev);
- Q_ASSERT_X(d->state == QPrinter::Idle, "QMacPrintEngine", "printer already active");
-
- if (PMSessionValidatePrintSettings(d->session, d->settings, kPMDontWantBoolean) != noErr
- || PMSessionValidatePageFormat(d->session, d->format, kPMDontWantBoolean) != noErr) {
- d->state = QPrinter::Error;
- return false;
- }
-
- if (!d->outputFilename.isEmpty()) {
- QCFType<CFURLRef> outFile = CFURLCreateWithFileSystemPath(kCFAllocatorSystemDefault,
- QCFString(d->outputFilename),
- kCFURLPOSIXPathStyle,
- false);
- if (PMSessionSetDestination(d->session, d->settings, kPMDestinationFile,
- kPMDocumentFormatPDF, outFile) != noErr) {
- qWarning("QMacPrintEngine::begin: Problem setting file [%s]", d->outputFilename.toUtf8().constData());
- return false;
- }
- }
- OSStatus status = noErr;
- status = PMSessionBeginCGDocumentNoDialog(d->session, d->settings, d->format);
-
- if (status != noErr) {
- d->state = QPrinter::Error;
- return false;
- }
-
- d->state = QPrinter::Active;
- setActive(true);
- d->newPage_helper();
- return true;
-}
-
-bool QMacPrintEngine::end()
-{
- Q_D(QMacPrintEngine);
- if (d->state == QPrinter::Aborted)
- return true; // I was just here a function call ago :)
- if(d->paintEngine->type() == QPaintEngine::CoreGraphics) {
- // We dont need the paint engine to call restoreGraphicsState()
- static_cast<QCoreGraphicsPaintEngine*>(d->paintEngine)->d_func()->stackCount = 0;
- static_cast<QCoreGraphicsPaintEngine*>(d->paintEngine)->d_func()->hd = 0;
- }
- d->paintEngine->end();
- if (d->state != QPrinter::Idle)
- d->releaseSession();
- d->state = QPrinter::Idle;
- return true;
-}
-
-QPaintEngine *
-QMacPrintEngine::paintEngine() const
-{
- return d_func()->paintEngine;
-}
-
-Qt::HANDLE QMacPrintEngine::handle() const
-{
- QCoreGraphicsPaintEngine *cgEngine = static_cast<QCoreGraphicsPaintEngine*>(paintEngine());
- return cgEngine->d_func()->hd;
-}
-
-QMacPrintEnginePrivate::~QMacPrintEnginePrivate()
-{
- [printInfo release];
- delete paintEngine;
-}
-
-void QMacPrintEnginePrivate::setPaperSize(QPrinter::PaperSize ps)
-{
- Q_Q(QMacPrintEngine);
- QSizeF newSize = qt_paperSizeToQSizeF(ps);
- QCFType<CFArrayRef> formats;
- PMPrinter printer;
-
- if (PMSessionGetCurrentPrinter(session, &printer) == noErr
- && PMSessionCreatePageFormatList(session, printer, &formats) == noErr) {
- CFIndex total = CFArrayGetCount(formats);
- PMPageFormat tmp;
- PMRect paper;
- for (CFIndex idx = 0; idx < total; ++idx) {
- tmp = static_cast<PMPageFormat>(
- const_cast<void *>(CFArrayGetValueAtIndex(formats, idx)));
- PMGetUnadjustedPaperRect(tmp, &paper);
- int wMM = int((paper.right - paper.left) / 72 * 25.4 + 0.5);
- int hMM = int((paper.bottom - paper.top) / 72 * 25.4 + 0.5);
- if (newSize.width() == wMM && newSize.height() == hMM) {
- PMCopyPageFormat(tmp, format);
- // reset the orientation and resolution as they are lost in the copy.
- q->setProperty(QPrintEngine::PPK_Orientation, orient);
- if (PMSessionValidatePageFormat(session, format, kPMDontWantBoolean) != noErr) {
- // Don't know, warn for the moment.
- qWarning("QMacPrintEngine, problem setting format and resolution for this page size");
- }
- break;
- }
- }
- }
-}
-
-QPrinter::PaperSize QMacPrintEnginePrivate::paperSize() const
-{
- PMRect paper;
- PMGetUnadjustedPaperRect(format, &paper);
- int wMM = int((paper.right - paper.left) / 72 * 25.4 + 0.5);
- int hMM = int((paper.bottom - paper.top) / 72 * 25.4 + 0.5);
- for (int i = QPrinter::A4; i < QPrinter::NPaperSize; ++i) {
- QSizeF s = qt_paperSizeToQSizeF(QPrinter::PaperSize(i));
- if (s.width() == wMM && s.height() == hMM)
- return (QPrinter::PaperSize)i;
- }
- return QPrinter::Custom;
-}
-
-QList<QVariant> QMacPrintEnginePrivate::supportedResolutions() const
-{
- Q_ASSERT_X(session, "QMacPrinterEngine::supportedResolutions",
- "must have a valid printer session");
- UInt32 resCount;
- QList<QVariant> resolutions;
- PMPrinter printer;
- if (PMSessionGetCurrentPrinter(session, &printer) == noErr) {
- PMResolution res;
- OSStatus status = PMPrinterGetPrinterResolutionCount(printer, &resCount);
- if (status == kPMNotImplemented) {
-#if (MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5)
- // *Sigh* we have to use the non-indexed version.
- if (PMPrinterGetPrinterResolution(printer, kPMMinSquareResolution, &res) == noErr)
- resolutions.append(int(res.hRes));
- if (PMPrinterGetPrinterResolution(printer, kPMMaxSquareResolution, &res) == noErr) {
- QVariant var(int(res.hRes));
- if (!resolutions.contains(var))
- resolutions.append(var);
- }
- if (PMPrinterGetPrinterResolution(printer, kPMDefaultResolution, &res) == noErr) {
- QVariant var(int(res.hRes));
- if (!resolutions.contains(var))
- resolutions.append(var);
- }
-#endif
- } else if (status == noErr) {
- // According to the docs, index start at 1.
- for (UInt32 i = 1; i <= resCount; ++i) {
- if (PMPrinterGetIndexedPrinterResolution(printer, i, &res) == noErr)
- resolutions.append(QVariant(int(res.hRes)));
- }
- } else {
- qWarning("QMacPrintEngine::supportedResolutions: Unexpected error: %ld", long(status));
- }
- }
- return resolutions;
-}
-
-bool QMacPrintEnginePrivate::shouldSuppressStatus() const
-{
- if (suppressStatus == true)
- return true;
-
- // Supress displaying the automatic progress dialog if we are printing
- // from a non-gui thread.
- return (qApp->thread() != QThread::currentThread());
-}
-
-QPrinter::PrinterState QMacPrintEngine::printerState() const
-{
- return d_func()->state;
-}
-
-bool QMacPrintEngine::newPage()
-{
- Q_D(QMacPrintEngine);
- Q_ASSERT(d->state == QPrinter::Active);
- OSStatus err =
- PMSessionEndPageNoDialog(d->session);
- if (err != noErr) {
- if (err == kPMCancel) {
- // User canceled, we need to abort!
- abort();
- } else {
- // Not sure what the problem is...
- qWarning("QMacPrintEngine::newPage: Cannot end current page. %ld", long(err));
- d->state = QPrinter::Error;
- }
- return false;
- }
- return d->newPage_helper();
-}
-
-bool QMacPrintEngine::abort()
-{
- Q_D(QMacPrintEngine);
- if (d->state != QPrinter::Active)
- return false;
- bool ret = end();
- d->state = QPrinter::Aborted;
- return ret;
-}
-
-static inline int qt_get_PDMWidth(PMPageFormat pformat, bool fullPage,
- const PMResolution &resolution)
-{
- int val = 0;
- PMRect r;
- qreal hRatio = resolution.hRes / 72;
- if (fullPage) {
- if (PMGetAdjustedPaperRect(pformat, &r) == noErr)
- val = qRound((r.right - r.left) * hRatio);
- } else {
- if (PMGetAdjustedPageRect(pformat, &r) == noErr)
- val = qRound((r.right - r.left) * hRatio);
- }
- return val;
-}
-
-static inline int qt_get_PDMHeight(PMPageFormat pformat, bool fullPage,
- const PMResolution &resolution)
-{
- int val = 0;
- PMRect r;
- qreal vRatio = resolution.vRes / 72;
- if (fullPage) {
- if (PMGetAdjustedPaperRect(pformat, &r) == noErr)
- val = qRound((r.bottom - r.top) * vRatio);
- } else {
- if (PMGetAdjustedPageRect(pformat, &r) == noErr)
- val = qRound((r.bottom - r.top) * vRatio);
- }
- return val;
-}
-
-
-int QMacPrintEngine::metric(QPaintDevice::PaintDeviceMetric m) const
-{
- Q_D(const QMacPrintEngine);
- int val = 1;
- switch (m) {
- case QPaintDevice::PdmWidth:
- if (d->hasCustomPaperSize) {
- val = qRound(d->customSize.width());
- if (d->hasCustomPageMargins) {
- val -= qRound(d->leftMargin + d->rightMargin);
- } else {
- QList<QVariant> margins = property(QPrintEngine::PPK_PageMargins).toList();
- val -= qRound(margins.at(0).toDouble() + margins.at(2).toDouble());
- }
- } else {
- val = qt_get_PDMWidth(d->format, property(PPK_FullPage).toBool(), d->resolution);
- }
- break;
- case QPaintDevice::PdmHeight:
- if (d->hasCustomPaperSize) {
- val = qRound(d->customSize.height());
- if (d->hasCustomPageMargins) {
- val -= qRound(d->topMargin + d->bottomMargin);
- } else {
- QList<QVariant> margins = property(QPrintEngine::PPK_PageMargins).toList();
- val -= qRound(margins.at(1).toDouble() + margins.at(3).toDouble());
- }
- } else {
- val = qt_get_PDMHeight(d->format, property(PPK_FullPage).toBool(), d->resolution);
- }
- break;
- case QPaintDevice::PdmWidthMM:
- val = metric(QPaintDevice::PdmWidth);
- val = int((val * 254 + 5 * d->resolution.hRes) / (10 * d->resolution.hRes));
- break;
- case QPaintDevice::PdmHeightMM:
- val = metric(QPaintDevice::PdmHeight);
- val = int((val * 254 + 5 * d->resolution.vRes) / (10 * d->resolution.vRes));
- break;
- case QPaintDevice::PdmPhysicalDpiX:
- case QPaintDevice::PdmPhysicalDpiY: {
- PMPrinter printer;
- if(PMSessionGetCurrentPrinter(d->session, &printer) == noErr) {
- PMResolution resolution;
- PMPrinterGetOutputResolution(printer, d->settings, &resolution);
- val = (int)resolution.vRes;
- break;
- }
- //otherwise fall through
- }
- case QPaintDevice::PdmDpiY:
- val = (int)d->resolution.vRes;
- break;
- case QPaintDevice::PdmDpiX:
- val = (int)d->resolution.hRes;
- break;
- case QPaintDevice::PdmNumColors:
- val = (1 << metric(QPaintDevice::PdmDepth));
- break;
- case QPaintDevice::PdmDepth:
- val = 24;
- break;
- default:
- val = 0;
- qWarning("QPrinter::metric: Invalid metric command");
- }
- return val;
-}
-
-void QMacPrintEnginePrivate::initialize()
-{
- Q_Q(QMacPrintEngine);
-
- Q_ASSERT(!printInfo);
-
- if (!paintEngine)
- paintEngine = new QCoreGraphicsPaintEngine();
-
- q->gccaps = paintEngine->gccaps;
-
- fullPage = false;
-
- QMacCocoaAutoReleasePool pool;
- printInfo = [[NSPrintInfo alloc] initWithDictionary:[NSDictionary dictionary]];
- session = static_cast<PMPrintSession>([printInfo PMPrintSession]);
-
- PMPrinter printer;
- if (session && PMSessionGetCurrentPrinter(session, &printer) == noErr) {
- QList<QVariant> resolutions = supportedResolutions();
- if (!resolutions.isEmpty() && mode != QPrinter::ScreenResolution) {
- if (resolutions.count() > 1 && mode == QPrinter::HighResolution) {
- int max = 0;
- for (int i = 0; i < resolutions.count(); ++i) {
- int value = resolutions.at(i).toInt();
- if (value > max)
- max = value;
- }
- resolution.hRes = resolution.vRes = max;
- } else {
- resolution.hRes = resolution.vRes = resolutions.at(0).toInt();
- }
- if(resolution.hRes == 0)
- resolution.hRes = resolution.vRes = 600;
- } else {
- resolution.hRes = resolution.vRes = qt_defaultDpi();
- }
- }
-
- settings = static_cast<PMPrintSettings>([printInfo PMPrintSettings]);
- format = static_cast<PMPageFormat>([printInfo PMPageFormat]);
-
-
- QHash<QMacPrintEngine::PrintEnginePropertyKey, QVariant>::const_iterator propC;
- for (propC = valueCache.constBegin(); propC != valueCache.constEnd(); propC++) {
- q->setProperty(propC.key(), propC.value());
- }
-}
-
-void QMacPrintEnginePrivate::releaseSession()
-{
- PMSessionEndPageNoDialog(session);
- PMSessionEndDocumentNoDialog(session);
- [printInfo release];
- printInfo = 0;
- session = 0;
-}
-
-bool QMacPrintEnginePrivate::newPage_helper()
-{
- Q_Q(QMacPrintEngine);
- Q_ASSERT(state == QPrinter::Active);
-
- if (PMSessionError(session) != noErr) {
- q->abort();
- return false;
- }
-
- // pop the stack of saved graphic states, in case we get the same
- // context back - either way, the stack count should be 0 when we
- // get the new one
- QCoreGraphicsPaintEngine *cgEngine = static_cast<QCoreGraphicsPaintEngine*>(paintEngine);
- while (cgEngine->d_func()->stackCount > 0)
- cgEngine->d_func()->restoreGraphicsState();
-
- OSStatus status =
- PMSessionBeginPageNoDialog(session, format, 0);
- if(status != noErr) {
- state = QPrinter::Error;
- return false;
- }
-
- QRect page = q->property(QPrintEngine::PPK_PageRect).toRect();
- QRect paper = q->property(QPrintEngine::PPK_PaperRect).toRect();
-
- CGContextRef cgContext;
- OSStatus err = noErr;
- err = PMSessionGetCGGraphicsContext(session, &cgContext);
- if(err != noErr) {
- qWarning("QMacPrintEngine::newPage: Cannot retrieve CoreGraphics context: %ld", long(err));
- state = QPrinter::Error;
- return false;
- }
- cgEngine->d_func()->hd = cgContext;
-
- // Set the resolution as a scaling ration of 72 (the default).
- CGContextScaleCTM(cgContext, 72 / resolution.hRes, 72 / resolution.vRes);
-
- CGContextScaleCTM(cgContext, 1, -1);
- CGContextTranslateCTM(cgContext, 0, -paper.height());
- if (!fullPage)
- CGContextTranslateCTM(cgContext, page.x() - paper.x(), page.y() - paper.y());
- cgEngine->d_func()->orig_xform = CGContextGetCTM(cgContext);
- cgEngine->d_func()->setClip(0);
- cgEngine->state->dirtyFlags = QPaintEngine::DirtyFlag(QPaintEngine::AllDirty
- & ~(QPaintEngine::DirtyClipEnabled
- | QPaintEngine::DirtyClipRegion
- | QPaintEngine::DirtyClipPath));
- if (cgEngine->painter()->hasClipping())
- cgEngine->state->dirtyFlags |= QPaintEngine::DirtyClipEnabled;
- cgEngine->syncState();
- return true;
-}
-
-
-void QMacPrintEngine::updateState(const QPaintEngineState &state)
-{
- d_func()->paintEngine->updateState(state);
-}
-
-void QMacPrintEngine::drawRects(const QRectF *r, int num)
-{
- Q_D(QMacPrintEngine);
- Q_ASSERT(d->state == QPrinter::Active);
- d->paintEngine->drawRects(r, num);
-}
-
-void QMacPrintEngine::drawPoints(const QPointF *points, int pointCount)
-{
- Q_D(QMacPrintEngine);
- Q_ASSERT(d->state == QPrinter::Active);
- d->paintEngine->drawPoints(points, pointCount);
-}
-
-void QMacPrintEngine::drawEllipse(const QRectF &r)
-{
- Q_D(QMacPrintEngine);
- Q_ASSERT(d->state == QPrinter::Active);
- d->paintEngine->drawEllipse(r);
-}
-
-void QMacPrintEngine::drawLines(const QLineF *lines, int lineCount)
-{
- Q_D(QMacPrintEngine);
- Q_ASSERT(d->state == QPrinter::Active);
- d->paintEngine->drawLines(lines, lineCount);
-}
-
-void QMacPrintEngine::drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode)
-{
- Q_D(QMacPrintEngine);
- Q_ASSERT(d->state == QPrinter::Active);
- d->paintEngine->drawPolygon(points, pointCount, mode);
-}
-
-void QMacPrintEngine::drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr)
-{
- Q_D(QMacPrintEngine);
- Q_ASSERT(d->state == QPrinter::Active);
- d->paintEngine->drawPixmap(r, pm, sr);
-}
-
-void QMacPrintEngine::drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, Qt::ImageConversionFlags flags)
-{
- Q_D(QMacPrintEngine);
- Q_ASSERT(d->state == QPrinter::Active);
- d->paintEngine->drawImage(r, pm, sr, flags);
-}
-
-void QMacPrintEngine::drawTextItem(const QPointF &p, const QTextItem &ti)
-{
- Q_D(QMacPrintEngine);
- Q_ASSERT(d->state == QPrinter::Active);
- d->paintEngine->drawTextItem(p, ti);
-}
-
-void QMacPrintEngine::drawTiledPixmap(const QRectF &dr, const QPixmap &pixmap, const QPointF &sr)
-{
- Q_D(QMacPrintEngine);
- Q_ASSERT(d->state == QPrinter::Active);
- d->paintEngine->drawTiledPixmap(dr, pixmap, sr);
-}
-
-void QMacPrintEngine::drawPath(const QPainterPath &path)
-{
- Q_D(QMacPrintEngine);
- Q_ASSERT(d->state == QPrinter::Active);
- d->paintEngine->drawPath(path);
-}
-
-
-void QMacPrintEngine::setProperty(PrintEnginePropertyKey key, const QVariant &value)
-{
- Q_D(QMacPrintEngine);
-
- d->valueCache.insert(key, value);
- if (!d->session)
- return;
-
- switch (key) {
- case PPK_CollateCopies:
- break;
- case PPK_ColorMode:
- break;
- case PPK_Creator:
- break;
- case PPK_DocumentName:
- break;
- case PPK_PageOrder:
- break;
- case PPK_PaperSource:
- break;
- case PPK_SelectionOption:
- break;
- case PPK_Resolution: {
- PMPrinter printer;
- UInt32 count;
- if (PMSessionGetCurrentPrinter(d->session, &printer) != noErr)
- break;
- if (PMPrinterGetPrinterResolutionCount(printer, &count) != noErr)
- break;
- PMResolution resolution = { 0.0, 0.0 };
- PMResolution bestResolution = { 0.0, 0.0 };
- int dpi = value.toInt();
- int bestDistance = INT_MAX;
- for (UInt32 i = 1; i <= count; ++i) { // Yes, it starts at 1
- if (PMPrinterGetIndexedPrinterResolution(printer, i, &resolution) == noErr) {
- if (dpi == int(resolution.hRes)) {
- bestResolution = resolution;
- break;
- } else {
- int distance = qAbs(dpi - int(resolution.hRes));
- if (distance < bestDistance) {
- bestDistance = distance;
- bestResolution = resolution;
- }
- }
- }
- }
- PMSessionValidatePageFormat(d->session, d->format, kPMDontWantBoolean);
- break;
- }
-
- case PPK_FullPage:
- d->fullPage = value.toBool();
- break;
- case PPK_CopyCount: // fallthrough
- case PPK_NumberOfCopies:
- PMSetCopies(d->settings, value.toInt(), false);
- break;
- case PPK_Orientation: {
- if (d->state == QPrinter::Active) {
- qWarning("QMacPrintEngine::setOrientation: Orientation cannot be changed during a print job, ignoring change");
- } else {
- QPrinter::Orientation newOrientation = QPrinter::Orientation(value.toInt());
- if (d->hasCustomPaperSize && (d->orient != newOrientation))
- d->customSize = QSizeF(d->customSize.height(), d->customSize.width());
- d->orient = newOrientation;
- PMOrientation o = d->orient == QPrinter::Portrait ? kPMPortrait : kPMLandscape;
- PMSetOrientation(d->format, o, false);
- PMSessionValidatePageFormat(d->session, d->format, kPMDontWantBoolean);
- }
- break; }
- case PPK_OutputFileName:
- d->outputFilename = value.toString();
- break;
- case PPK_PaperSize:
- d->setPaperSize(QPrinter::PaperSize(value.toInt()));
- break;
- case PPK_PrinterName: {
- bool printerNameSet = false;
- OSStatus status = noErr;
- QCFType<CFArrayRef> printerList;
- status = PMServerCreatePrinterList(kPMServerLocal, &printerList);
- if (status == noErr) {
- CFIndex count = CFArrayGetCount(printerList);
- for (CFIndex i=0; i<count; ++i) {
- PMPrinter printer = static_cast<PMPrinter>(const_cast<void *>(CFArrayGetValueAtIndex(printerList, i)));
- QString name = QCFString::toQString(PMPrinterGetName(printer));
- if (name == value.toString()) {
- status = PMSessionSetCurrentPMPrinter(d->session, printer);
- printerNameSet = true;
- break;
- }
- }
- }
- if (status != noErr)
- qWarning("QMacPrintEngine::setPrinterName: Error setting printer: %ld", long(status));
- if (!printerNameSet) {
- qWarning("QMacPrintEngine::setPrinterName: Failed to set printer named '%s'.", qPrintable(value.toString()));
- d->releaseSession();
- d->state = QPrinter::Idle;
- }
- break; }
- case PPK_SuppressSystemPrintStatus:
- d->suppressStatus = value.toBool();
- break;
- case PPK_CustomPaperSize:
- {
- PMOrientation orientation;
- PMGetOrientation(d->format, &orientation);
- d->hasCustomPaperSize = true;
- d->customSize = value.toSizeF();
- if (orientation != kPMPortrait)
- d->customSize = QSizeF(d->customSize.height(), d->customSize.width());
- break;
- }
- case PPK_PageMargins:
- {
- QList<QVariant> margins(value.toList());
- Q_ASSERT(margins.size() == 4);
- d->leftMargin = margins.at(0).toDouble();
- d->topMargin = margins.at(1).toDouble();
- d->rightMargin = margins.at(2).toDouble();
- d->bottomMargin = margins.at(3).toDouble();
- d->hasCustomPageMargins = true;
- break;
- }
-
- default:
- break;
- }
-}
-
-QVariant QMacPrintEngine::property(PrintEnginePropertyKey key) const
-{
- Q_D(const QMacPrintEngine);
- QVariant ret;
-
- if (!d->session && d->valueCache.contains(key))
- return *d->valueCache.find(key);
-
- switch (key) {
- case PPK_CollateCopies:
- ret = false;
- break;
- case PPK_ColorMode:
- ret = QPrinter::Color;
- break;
- case PPK_Creator:
- break;
- case PPK_DocumentName:
- break;
- case PPK_FullPage:
- ret = d->fullPage;
- break;
- case PPK_NumberOfCopies:
- ret = 1;
- break;
- case PPK_CopyCount: {
- UInt32 copies = 1;
- PMGetCopies(d->settings, &copies);
- ret = (uint) copies;
- break;
- }
- case PPK_SupportsMultipleCopies:
- ret = true;
- break;
- case PPK_Orientation:
- PMOrientation orientation;
- PMGetOrientation(d->format, &orientation);
- ret = orientation == kPMPortrait ? QPrinter::Portrait : QPrinter::Landscape;
- break;
- case PPK_OutputFileName:
- ret = d->outputFilename;
- break;
- case PPK_PageOrder:
- break;
- case PPK_PaperSource:
- break;
- case PPK_PageRect: {
- // PageRect is returned in device pixels
- QRect r;
- PMRect macrect, macpaper;
- qreal hRatio = d->resolution.hRes / 72;
- qreal vRatio = d->resolution.vRes / 72;
- if (d->hasCustomPaperSize) {
- r = QRect(0, 0, qRound(d->customSize.width() * hRatio), qRound(d->customSize.height() * vRatio));
- if (d->hasCustomPageMargins) {
- r.adjust(qRound(d->leftMargin * hRatio), qRound(d->topMargin * vRatio),
- -qRound(d->rightMargin * hRatio), -qRound(d->bottomMargin * vRatio));
- } else {
- QList<QVariant> margins = property(QPrintEngine::PPK_PageMargins).toList();
- r.adjust(qRound(margins.at(0).toDouble() * hRatio),
- qRound(margins.at(1).toDouble() * vRatio),
- -qRound(margins.at(2).toDouble() * hRatio),
- -qRound(margins.at(3).toDouble()) * vRatio);
- }
- } else if (PMGetAdjustedPageRect(d->format, &macrect) == noErr
- && PMGetAdjustedPaperRect(d->format, &macpaper) == noErr)
- {
- if (d->fullPage || d->hasCustomPageMargins) {
- r.setCoords(int(macpaper.left * hRatio), int(macpaper.top * vRatio),
- int(macpaper.right * hRatio), int(macpaper.bottom * vRatio));
- r.translate(-r.x(), -r.y());
- if (d->hasCustomPageMargins) {
- r.adjust(qRound(d->leftMargin * hRatio), qRound(d->topMargin * vRatio),
- -qRound(d->rightMargin * hRatio), -qRound(d->bottomMargin * vRatio));
- }
- } else {
- r.setCoords(int(macrect.left * hRatio), int(macrect.top * vRatio),
- int(macrect.right * hRatio), int(macrect.bottom * vRatio));
- r.translate(int(-macpaper.left * hRatio), int(-macpaper.top * vRatio));
- }
- }
- ret = r;
- break; }
- case PPK_PaperSize:
- ret = d->paperSize();
- break;
- case PPK_PaperRect: {
- QRect r;
- PMRect macrect;
- if (d->hasCustomPaperSize) {
- r = QRect(0, 0, qRound(d->customSize.width()), qRound(d->customSize.height()));
- } else if (PMGetAdjustedPaperRect(d->format, &macrect) == noErr) {
- qreal hRatio = d->resolution.hRes / 72;
- qreal vRatio = d->resolution.vRes / 72;
- r.setCoords(int(macrect.left * hRatio), int(macrect.top * vRatio),
- int(macrect.right * hRatio), int(macrect.bottom * vRatio));
- r.translate(-r.x(), -r.y());
- }
- ret = r;
- break; }
- case PPK_PrinterName: {
- PMPrinter printer;
- OSStatus status = PMSessionGetCurrentPrinter(d->session, &printer);
- if (status != noErr)
- qWarning("QMacPrintEngine::printerName: Failed getting current PMPrinter: %ld", long(status));
- if (printer)
- ret = QCFString::toQString(PMPrinterGetName(printer));
- break; }
- case PPK_Resolution: {
- ret = d->resolution.hRes;
- break;
- }
- case PPK_SupportedResolutions:
- ret = d->supportedResolutions();
- break;
- case PPK_CustomPaperSize:
- ret = d->customSize;
- break;
- case PPK_PageMargins:
- {
- QList<QVariant> margins;
- if (d->hasCustomPageMargins) {
- margins << d->leftMargin << d->topMargin
- << d->rightMargin << d->bottomMargin;
- } else {
- PMPaperMargins paperMargins;
- PMPaper paper;
- PMGetPageFormatPaper(d->format, &paper);
- PMPaperGetMargins(paper, &paperMargins);
- margins << paperMargins.left << paperMargins.top
- << paperMargins.right << paperMargins.bottom;
- }
- ret = margins;
- break;
- }
- default:
- break;
- }
- return ret;
-}
-
-QT_END_NAMESPACE
-
-#endif // QT_NO_PRINTER
diff --git a/src/widgets/platforms/mac/qprintengine_mac_p.h b/src/widgets/platforms/mac/qprintengine_mac_p.h
deleted file mode 100644
index 349dfd10f2..0000000000
--- a/src/widgets/platforms/mac/qprintengine_mac_p.h
+++ /dev/null
@@ -1,162 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-#ifndef QPRINTENGINE_MAC_P_H
-#define QPRINTENGINE_MAC_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#ifndef QT_NO_PRINTER
-
-#include "QtGui/qprinter.h"
-#include "QtGui/qprintengine.h"
-#include "private/qpaintengine_mac_p.h"
-#include "private/qpainter_p.h"
-
-#ifdef __OBJC__
-@class NSPrintInfo;
-#else
-typedef void NSPrintInfo;
-#endif
-
-QT_BEGIN_NAMESPACE
-
-class QPrinterPrivate;
-class QMacPrintEnginePrivate;
-class QMacPrintEngine : public QPaintEngine, public QPrintEngine
-{
- Q_DECLARE_PRIVATE(QMacPrintEngine)
-public:
- QMacPrintEngine(QPrinter::PrinterMode mode);
-
- Qt::HANDLE handle() const;
-
- bool begin(QPaintDevice *dev);
- bool end();
- virtual QPaintEngine::Type type() const { return QPaintEngine::MacPrinter; }
-
- QPaintEngine *paintEngine() const;
-
- void setProperty(PrintEnginePropertyKey key, const QVariant &value);
- QVariant property(PrintEnginePropertyKey key) const;
-
- QPrinter::PrinterState printerState() const;
-
- bool newPage();
- bool abort();
- int metric(QPaintDevice::PaintDeviceMetric) const;
-
- //forwarded functions
-
- void updateState(const QPaintEngineState &state);
-
- virtual void drawLines(const QLineF *lines, int lineCount);
- virtual void drawRects(const QRectF *r, int num);
- virtual void drawPoints(const QPointF *p, int pointCount);
- virtual void drawEllipse(const QRectF &r);
- virtual void drawPolygon(const QPointF *points, int pointCount, PolygonDrawMode mode);
- virtual void drawPixmap(const QRectF &r, const QPixmap &pm, const QRectF &sr);
- virtual void drawImage(const QRectF &r, const QImage &pm, const QRectF &sr, Qt::ImageConversionFlags flags);
- virtual void drawTextItem(const QPointF &p, const QTextItem &ti);
- virtual void drawTiledPixmap(const QRectF &r, const QPixmap &pixmap, const QPointF &s);
- virtual void drawPath(const QPainterPath &);
-
-private:
- friend class QPrintDialog;
- friend class QPageSetupDialog;
-};
-
-class QMacPrintEnginePrivate : public QPaintEnginePrivate
-{
- Q_DECLARE_PUBLIC(QMacPrintEngine)
-public:
- QPrinter::PrinterMode mode;
- QPrinter::PrinterState state;
- QPrinter::Orientation orient;
- NSPrintInfo *printInfo;
- PMPageFormat format;
- PMPrintSettings settings;
- PMPrintSession session;
- PMResolution resolution;
- QString outputFilename;
- bool fullPage;
- QPaintEngine *paintEngine;
- bool suppressStatus;
- bool hasCustomPaperSize;
- QSizeF customSize;
- bool hasCustomPageMargins;
- qreal leftMargin;
- qreal topMargin;
- qreal rightMargin;
- qreal bottomMargin;
- QHash<QMacPrintEngine::PrintEnginePropertyKey, QVariant> valueCache;
- QMacPrintEnginePrivate() : mode(QPrinter::ScreenResolution), state(QPrinter::Idle),
- orient(QPrinter::Portrait), printInfo(0), format(0), settings(0),
- session(0), paintEngine(0), suppressStatus(false),
- hasCustomPaperSize(false), hasCustomPageMargins(false) {}
- ~QMacPrintEnginePrivate();
- void initialize();
- void releaseSession();
- bool newPage_helper();
- void setPaperSize(QPrinter::PaperSize ps);
- QPrinter::PaperSize paperSize() const;
- QList<QVariant> supportedResolutions() const;
- inline bool isPrintSessionInitialized() const
- {
- return printInfo != 0;
- }
- bool shouldSuppressStatus() const;
-};
-
-QT_END_NAMESPACE
-
-#endif // QT_NO_PRINTER
-
-#endif // QPRINTENGINE_WIN_P_H
diff --git a/src/widgets/platforms/mac/qprinterinfo_mac.cpp b/src/widgets/platforms/mac/qprinterinfo_mac.cpp
deleted file mode 100644
index 98492a5af6..0000000000
--- a/src/widgets/platforms/mac/qprinterinfo_mac.cpp
+++ /dev/null
@@ -1,120 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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 "qprinterinfo.h"
-#include "qprinterinfo_p.h"
-
-#include "private/qt_mac_p.h"
-
-QT_BEGIN_NAMESPACE
-
-#ifndef QT_NO_PRINTER
-
-extern QPrinter::PaperSize qSizeFTopaperSize(const QSizeF &size);
-
-QList<QPrinterInfo> QPrinterInfo::availablePrinters()
-{
- QList<QPrinterInfo> printers;
-
- QCFType<CFArrayRef> array;
- if (PMServerCreatePrinterList(kPMServerLocal, &array) == noErr) {
- CFIndex count = CFArrayGetCount(array);
- for (int i = 0; i < count; ++i) {
- PMPrinter printer = static_cast<PMPrinter>(const_cast<void *>(CFArrayGetValueAtIndex(array, i)));
- QString printerName = QCFString::toQString(PMPrinterGetName(printer));
-
- QPrinterInfo printerInfo(printerName);
- if (PMPrinterIsDefault(printer))
- printerInfo.d_ptr->isDefault = true;
- printers.append(printerInfo);
- }
- }
-
- return printers;
-}
-
-QPrinterInfo QPrinterInfo::defaultPrinter()
-{
- QList<QPrinterInfo> printers = availablePrinters();
- foreach (const QPrinterInfo &printerInfo, printers) {
- if (printerInfo.isDefault())
- return printerInfo;
- }
-
- return printers.value(0);
-}
-
-QList<QPrinter::PaperSize> QPrinterInfo::supportedPaperSizes() const
-{
- const Q_D(QPrinterInfo);
-
- QList<QPrinter::PaperSize> paperSizes;
- if (isNull())
- return paperSizes;
-
- PMPrinter cfPrn = PMPrinterCreateFromPrinterID(QCFString::toCFStringRef(d->name));
- if (!cfPrn)
- return paperSizes;
-
- CFArrayRef array;
- if (PMPrinterGetPaperList(cfPrn, &array) != noErr) {
- PMRelease(cfPrn);
- return paperSizes;
- }
-
- int count = CFArrayGetCount(array);
- for (int i = 0; i < count; ++i) {
- PMPaper paper = static_cast<PMPaper>(const_cast<void *>(CFArrayGetValueAtIndex(array, i)));
- double width, height;
- if (PMPaperGetWidth(paper, &width) == noErr && PMPaperGetHeight(paper, &height) == noErr) {
- QSizeF size(width * 0.3527, height * 0.3527);
- paperSizes.append(qSizeFTopaperSize(size));
- }
- }
-
- PMRelease(cfPrn);
-
- return paperSizes;
-}
-
-#endif // QT_NO_PRINTER
-
-QT_END_NAMESPACE
diff --git a/src/widgets/platforms/mac/qregion_mac.cpp b/src/widgets/platforms/mac/qregion_mac.cpp
deleted file mode 100644
index 71e7a3b44b..0000000000
--- a/src/widgets/platforms/mac/qregion_mac.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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/qt_mac_p.h>
-#include "qcoreapplication.h"
-#include <qlibrary.h>
-
-QT_BEGIN_NAMESPACE
-
-QRegion::QRegionData QRegion::shared_empty = { Q_BASIC_ATOMIC_INITIALIZER(1), 0 };
-
-QT_END_NAMESPACE
diff --git a/src/widgets/platforms/mac/qt_cocoa_helpers_mac.mm b/src/widgets/platforms/mac/qt_cocoa_helpers_mac.mm
deleted file mode 100644
index 348b989ec6..0000000000
--- a/src/widgets/platforms/mac/qt_cocoa_helpers_mac.mm
+++ /dev/null
@@ -1,1438 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Copyright (c) 2007-2008, Apple, Inc.
-**
-** All rights reserved.
-**
-** Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are met:
-**
-** * Redistributions of source code must retain the above copyright notice,
-** this list of conditions and the following disclaimer.
-**
-** * Redistributions in binary form must reproduce the above copyright notice,
-** this list of conditions and the following disclaimer in the documentation
-** and/or other materials provided with the distribution.
-**
-** * Neither the name of Apple, Inc. nor the names of its contributors
-** may be used to endorse or promote products derived from this software
-** without specific prior written permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-****************************************************************************/
-
-#include <private/qcore_mac_p.h>
-#include <qaction.h>
-#include <qwidget.h>
-#include <qdesktopwidget.h>
-#include <qevent.h>
-#include <qpixmapcache.h>
-#include <qvarlengtharray.h>
-#include <private/qevent_p.h>
-#include <private/qt_cocoa_helpers_mac_p.h>
-#include <private/qt_mac_p.h>
-#include <private/qapplication_p.h>
-#include <private/qcocoaapplication_mac_p.h>
-#include <private/qcocoawindow_mac_p.h>
-#include <private/qcocoaview_mac_p.h>
-#include <private/qkeymapper_p.h>
-#include <private/qwidget_p.h>
-#include <private/qcocoawindow_mac_p.h>
-
-QT_BEGIN_NAMESPACE
-
-// Cmd + left mousebutton should produce a right button
-// press (mainly for mac users with one-button mice):
-static bool qt_leftButtonIsRightButton = false;
-
-Q_GLOBAL_STATIC(QMacWindowFader, macwindowFader);
-
-QMacWindowFader::QMacWindowFader()
- : m_duration(0.250)
-{
-}
-
-QMacWindowFader *QMacWindowFader::currentFader()
-{
- return macwindowFader();
-}
-
-void QMacWindowFader::registerWindowToFade(QWidget *window)
-{
- m_windowsToFade.append(window);
-}
-
-void QMacWindowFader::performFade()
-{
- const QWidgetList myWidgetsToFade = m_windowsToFade;
- const int widgetCount = myWidgetsToFade.count();
- QMacCocoaAutoReleasePool pool;
- [NSAnimationContext beginGrouping];
- [[NSAnimationContext currentContext] setDuration:NSTimeInterval(m_duration)];
-
- for (int i = 0; i < widgetCount; ++i) {
- QWidget *widget = m_windowsToFade.at(i);
- OSWindowRef window = qt_mac_window_for(widget);
- [[window animator] setAlphaValue:0.0];
- QTimer::singleShot(qRound(m_duration * 1000), widget, SLOT(hide()));
- }
- [NSAnimationContext endGrouping];
- m_duration = 0.250;
- m_windowsToFade.clear();
-}
-
-extern bool qt_sendSpontaneousEvent(QObject *receiver, QEvent *event); // qapplication.cpp;
-extern QWidget * mac_mouse_grabber;
-extern QWidget *qt_button_down; //qapplication_mac.cpp
-extern QPointer<QWidget> qt_last_mouse_receiver;
-extern OSViewRef qt_mac_effectiveview_for(const QWidget *w);
-extern void qt_mac_updateCursorWithWidgetUnderMouse(QWidget *widgetUnderMouse); // qcursor_mac.mm
-
-void macWindowFade(void * /*OSWindowRef*/ window, float durationSeconds)
-{
- QMacCocoaAutoReleasePool pool;
- OSWindowRef wnd = static_cast<OSWindowRef>(window);
- if (wnd) {
- QWidget *widget;
- widget = [wnd QT_MANGLE_NAMESPACE(qt_qwidget)];
- if (widget) {
- QMacWindowFader::currentFader()->setFadeDuration(durationSeconds);
- QMacWindowFader::currentFader()->registerWindowToFade(widget);
- QMacWindowFader::currentFader()->performFade();
- }
- }
-}
-struct dndenum_mapper
-{
- NSDragOperation mac_code;
- Qt::DropAction qt_code;
- bool Qt2Mac;
-};
-
-#ifdef __OBJC__
-
-static dndenum_mapper dnd_enums[] = {
- { NSDragOperationLink, Qt::LinkAction, true },
- { NSDragOperationMove, Qt::MoveAction, true },
- { NSDragOperationCopy, Qt::CopyAction, true },
- { NSDragOperationGeneric, Qt::CopyAction, false },
- { NSDragOperationEvery, Qt::ActionMask, false },
- { NSDragOperationNone, Qt::IgnoreAction, false }
-};
-
-NSDragOperation qt_mac_mapDropAction(Qt::DropAction action)
-{
- for (int i=0; dnd_enums[i].qt_code; i++) {
- if (dnd_enums[i].Qt2Mac && (action & dnd_enums[i].qt_code)) {
- return dnd_enums[i].mac_code;
- }
- }
- return NSDragOperationNone;
-}
-
-NSDragOperation qt_mac_mapDropActions(Qt::DropActions actions)
-{
- NSDragOperation nsActions = NSDragOperationNone;
- for (int i=0; dnd_enums[i].qt_code; i++) {
- if (dnd_enums[i].Qt2Mac && (actions & dnd_enums[i].qt_code))
- nsActions |= dnd_enums[i].mac_code;
- }
- return nsActions;
-}
-
-Qt::DropAction qt_mac_mapNSDragOperation(NSDragOperation nsActions)
-{
- Qt::DropAction action = Qt::IgnoreAction;
- for (int i=0; dnd_enums[i].mac_code; i++) {
- if (nsActions & dnd_enums[i].mac_code)
- return dnd_enums[i].qt_code;
- }
- return action;
-}
-
-Qt::DropActions qt_mac_mapNSDragOperations(NSDragOperation nsActions)
-{
- Qt::DropActions actions = Qt::IgnoreAction;
- for (int i=0; dnd_enums[i].mac_code; i++) {
- if (nsActions & dnd_enums[i].mac_code)
- actions |= dnd_enums[i].qt_code;
- }
- return actions;
-}
-
-Q_GLOBAL_STATIC(DnDParams, currentDnDParameters);
-DnDParams *macCurrentDnDParameters()
-{
- return currentDnDParameters();
-}
-#endif
-
-void macWindowToolbarShow(const QWidget *widget, bool show )
-{
- OSWindowRef wnd = qt_mac_window_for(widget);
- if (NSToolbar *toolbar = [wnd toolbar]) {
- QMacCocoaAutoReleasePool pool;
- if (show != [toolbar isVisible]) {
- [toolbar setVisible:show];
- } else {
- // The toolbar may be in sync, but we are not, update our framestrut.
- qt_widget_private(const_cast<QWidget *>(widget))->updateFrameStrut();
- }
- }
-}
-
-
-void macWindowToolbarSet( void * /*OSWindowRef*/ window, void *toolbarRef )
-{
- OSWindowRef wnd = static_cast<OSWindowRef>(window);
- [wnd setToolbar:static_cast<NSToolbar *>(toolbarRef)];
-}
-
-bool macWindowToolbarIsVisible( void * /*OSWindowRef*/ window )
-{
- OSWindowRef wnd = static_cast<OSWindowRef>(window);
- if (NSToolbar *toolbar = [wnd toolbar])
- return [toolbar isVisible];
- return false;
-}
-
-void macWindowSetHasShadow( void * /*OSWindowRef*/ window, bool hasShadow )
-{
- OSWindowRef wnd = static_cast<OSWindowRef>(window);
- [wnd setHasShadow:BOOL(hasShadow)];
-}
-
-void macWindowFlush(void * /*OSWindowRef*/ window)
-{
- OSWindowRef wnd = static_cast<OSWindowRef>(window);
- [wnd flushWindowIfNeeded];
-}
-
-void qt_mac_update_mouseTracking(QWidget *widget)
-{
- [qt_mac_nativeview_for(widget) updateTrackingAreas];
-}
-
-OSStatus qt_mac_drawCGImage(CGContextRef inContext, const CGRect *inBounds, CGImageRef inImage)
-{
- // Verbatim copy if HIViewDrawCGImage (as shown on Carbon-Dev)
- OSStatus err = noErr;
-
- require_action(inContext != NULL, InvalidContext, err = paramErr);
- require_action(inBounds != NULL, InvalidBounds, err = paramErr);
- require_action(inImage != NULL, InvalidImage, err = paramErr);
-
- CGContextSaveGState( inContext );
- CGContextTranslateCTM (inContext, 0, inBounds->origin.y + CGRectGetMaxY(*inBounds));
- CGContextScaleCTM(inContext, 1, -1);
-
- CGContextDrawImage(inContext, *inBounds, inImage);
-
- CGContextRestoreGState(inContext);
-InvalidImage:
-InvalidBounds:
-InvalidContext:
- return err;
-}
-
-bool qt_mac_checkForNativeSizeGrip(const QWidget *widget)
-{
- return [[reinterpret_cast<NSView *>(widget->effectiveWinId()) window] showsResizeIndicator];
-}
-struct qt_mac_enum_mapper
-{
- int mac_code;
- int qt_code;
-#if defined(DEBUG_MOUSE_MAPS)
-# define QT_MAC_MAP_ENUM(x) x, #x
- const char *desc;
-#else
-# define QT_MAC_MAP_ENUM(x) x
-#endif
-};
-
-//mouse buttons
-static qt_mac_enum_mapper qt_mac_mouse_symbols[] = {
-{ kEventMouseButtonPrimary, QT_MAC_MAP_ENUM(Qt::LeftButton) },
-{ kEventMouseButtonSecondary, QT_MAC_MAP_ENUM(Qt::RightButton) },
-{ kEventMouseButtonTertiary, QT_MAC_MAP_ENUM(Qt::MidButton) },
-{ 4, QT_MAC_MAP_ENUM(Qt::XButton1) },
-{ 5, QT_MAC_MAP_ENUM(Qt::XButton2) },
-{ 0, QT_MAC_MAP_ENUM(0) }
-};
-Qt::MouseButtons qt_mac_get_buttons(int buttons)
-{
-#ifdef DEBUG_MOUSE_MAPS
- qDebug("Qt: internal: **Mapping buttons: %d (0x%04x)", buttons, buttons);
-#endif
- Qt::MouseButtons ret = Qt::NoButton;
- for(int i = 0; qt_mac_mouse_symbols[i].qt_code; i++) {
- if (buttons & (0x01<<(qt_mac_mouse_symbols[i].mac_code-1))) {
-#ifdef DEBUG_MOUSE_MAPS
- qDebug("Qt: internal: got button: %s", qt_mac_mouse_symbols[i].desc);
-#endif
- ret |= Qt::MouseButtons(qt_mac_mouse_symbols[i].qt_code);
- }
- }
- return ret;
-}
-Qt::MouseButton qt_mac_get_button(EventMouseButton button)
-{
-#ifdef DEBUG_MOUSE_MAPS
- qDebug("Qt: internal: **Mapping button: %d (0x%04x)", button, button);
-#endif
- Qt::MouseButtons ret = 0;
- for(int i = 0; qt_mac_mouse_symbols[i].qt_code; i++) {
- if (button == qt_mac_mouse_symbols[i].mac_code) {
-#ifdef DEBUG_MOUSE_MAPS
- qDebug("Qt: internal: got button: %s", qt_mac_mouse_symbols[i].desc);
-#endif
- return Qt::MouseButton(qt_mac_mouse_symbols[i].qt_code);
- }
- }
- return Qt::NoButton;
-}
-
-void macSendToolbarChangeEvent(QWidget *widget)
-{
- QToolBarChangeEvent ev(!(GetCurrentKeyModifiers() & cmdKey));
- qt_sendSpontaneousEvent(widget, &ev);
-}
-
-Q_GLOBAL_STATIC(QMacTabletHash, tablet_hash)
-QMacTabletHash *qt_mac_tablet_hash()
-{
- return tablet_hash();
-}
-
-
-// Clears the QWidget pointer that each QCocoaView holds.
-void qt_mac_clearCocoaViewQWidgetPointers(QWidget *widget)
-{
- QT_MANGLE_NAMESPACE(QCocoaView) *cocoaView = reinterpret_cast<QT_MANGLE_NAMESPACE(QCocoaView) *>(qt_mac_nativeview_for(widget));
- if (cocoaView && [cocoaView respondsToSelector:@selector(qt_qwidget)]) {
- [cocoaView qt_clearQWidget];
- }
-}
-
-void qt_dispatchTabletProximityEvent(void * /*NSEvent * */ tabletEvent)
-{
- NSEvent *proximityEvent = static_cast<NSEvent *>(tabletEvent);
- // simply construct a Carbon proximity record and handle it all in one spot.
- TabletProximityRec carbonProximityRec = { [proximityEvent vendorID],
- [proximityEvent tabletID],
- [proximityEvent pointingDeviceID],
- [proximityEvent deviceID],
- [proximityEvent systemTabletID],
- [proximityEvent vendorPointingDeviceType],
- [proximityEvent pointingDeviceSerialNumber],
- [proximityEvent uniqueID],
- [proximityEvent capabilityMask],
- [proximityEvent pointingDeviceType],
- [proximityEvent isEnteringProximity] };
- qt_dispatchTabletProximityEvent(carbonProximityRec);
-}
-
-void qt_dispatchTabletProximityEvent(const ::TabletProximityRec &proxRec)
-{
- QTabletDeviceData proximityDevice;
- proximityDevice.tabletUniqueID = proxRec.uniqueID;
- proximityDevice.capabilityMask = proxRec.capabilityMask;
-
- switch (proxRec.pointerType) {
- case NSUnknownPointingDevice:
- default:
- proximityDevice.tabletPointerType = QTabletEvent::UnknownPointer;
- break;
- case NSPenPointingDevice:
- proximityDevice.tabletPointerType = QTabletEvent::Pen;
- break;
- case NSCursorPointingDevice:
- proximityDevice.tabletPointerType = QTabletEvent::Cursor;
- break;
- case NSEraserPointingDevice:
- proximityDevice.tabletPointerType = QTabletEvent::Eraser;
- break;
- }
- uint bits = proxRec.vendorPointerType;
- if (bits == 0 && proximityDevice.tabletUniqueID != 0) {
- // Fallback. It seems that the driver doesn't always include all the information.
- // High-End Wacom devices store their "type" in the uper bits of the Unique ID.
- // I'm not sure how to handle it for consumer devices, but I'll test that in a bit.
- bits = proximityDevice.tabletUniqueID >> 32;
- }
- // Defined in the "EN0056-NxtGenImpGuideX"
- // on Wacom's Developer Website (www.wacomeng.com)
- if (((bits & 0x0006) == 0x0002) && ((bits & 0x0F06) != 0x0902)) {
- proximityDevice.tabletDeviceType = QTabletEvent::Stylus;
- } else {
- switch (bits & 0x0F06) {
- case 0x0802:
- proximityDevice.tabletDeviceType = QTabletEvent::Stylus;
- break;
- case 0x0902:
- proximityDevice.tabletDeviceType = QTabletEvent::Airbrush;
- break;
- case 0x0004:
- proximityDevice.tabletDeviceType = QTabletEvent::FourDMouse;
- break;
- case 0x0006:
- proximityDevice.tabletDeviceType = QTabletEvent::Puck;
- break;
- case 0x0804:
- proximityDevice.tabletDeviceType = QTabletEvent::RotationStylus;
- break;
- default:
- proximityDevice.tabletDeviceType = QTabletEvent::NoDevice;
- }
- }
- // The deviceID is "unique" while in the proximity, it's a key that we can use for
- // linking up TabletDeviceData to an event (especially if there are two devices in action).
- bool entering = proxRec.enterProximity;
- if (entering) {
- qt_mac_tablet_hash()->insert(proxRec.deviceID, proximityDevice);
- } else {
- qt_mac_tablet_hash()->remove(proxRec.deviceID);
- }
-
- QTabletEvent qtabletProximity(entering ? QEvent::TabletEnterProximity
- : QEvent::TabletLeaveProximity,
- QPoint(), QPoint(), QPointF(), proximityDevice.tabletDeviceType,
- proximityDevice.tabletPointerType, 0., 0, 0, 0., 0., 0, 0,
- proximityDevice.tabletUniqueID);
-
- qt_sendSpontaneousEvent(qApp, &qtabletProximity);
-}
-
-
-Qt::KeyboardModifiers qt_cocoaModifiers2QtModifiers(ulong modifierFlags)
-{
- Qt::KeyboardModifiers qtMods =Qt::NoModifier;
- if (modifierFlags & NSShiftKeyMask)
- qtMods |= Qt::ShiftModifier;
- if (modifierFlags & NSControlKeyMask)
- qtMods |= Qt::MetaModifier;
- if (modifierFlags & NSAlternateKeyMask)
- qtMods |= Qt::AltModifier;
- if (modifierFlags & NSCommandKeyMask)
- qtMods |= Qt::ControlModifier;
- if (modifierFlags & NSNumericPadKeyMask)
- qtMods |= Qt::KeypadModifier;
- return qtMods;
-}
-
-Qt::KeyboardModifiers qt_cocoaDragOperation2QtModifiers(uint dragOperations)
-{
- Qt::KeyboardModifiers qtMods =Qt::NoModifier;
- if (dragOperations & NSDragOperationLink)
- qtMods |= Qt::MetaModifier;
- if (dragOperations & NSDragOperationGeneric)
- qtMods |= Qt::ControlModifier;
- if (dragOperations & NSDragOperationCopy)
- qtMods |= Qt::AltModifier;
- return qtMods;
-}
-
-static inline QEvent::Type cocoaEvent2QtEvent(NSUInteger eventType)
-{
- // Handle the trivial cases that can be determined from the type.
- switch (eventType) {
- case NSKeyDown:
- return QEvent::KeyPress;
- case NSKeyUp:
- return QEvent::KeyRelease;
- case NSLeftMouseDown:
- case NSRightMouseDown:
- case NSOtherMouseDown:
- return QEvent::MouseButtonPress;
- case NSLeftMouseUp:
- case NSRightMouseUp:
- case NSOtherMouseUp:
- return QEvent::MouseButtonRelease;
- case NSMouseMoved:
- case NSLeftMouseDragged:
- case NSRightMouseDragged:
- case NSOtherMouseDragged:
- return QEvent::MouseMove;
- case NSScrollWheel:
- return QEvent::Wheel;
- }
- return QEvent::None;
-}
-
-static bool mustUseCocoaKeyEvent()
-{
- QCFType<TISInputSourceRef> source = TISCopyCurrentKeyboardInputSource();
- return TISGetInputSourceProperty(source, kTISPropertyUnicodeKeyLayoutData) == 0;
-}
-
-bool qt_dispatchKeyEventWithCocoa(void * /*NSEvent * */ keyEvent, QWidget *widgetToGetEvent)
-{
- NSEvent *event = static_cast<NSEvent *>(keyEvent);
- NSString *keyChars = [event charactersIgnoringModifiers];
- int keyLength = [keyChars length];
- if (keyLength == 0)
- return false; // Dead Key, nothing to do!
- bool ignoreText = false;
- Qt::Key qtKey = Qt::Key_unknown;
- if (keyLength == 1) {
- QChar ch([keyChars characterAtIndex:0]);
- if (ch.isLower())
- ch = ch.toUpper();
- qtKey = cocoaKey2QtKey(ch);
- // Do not set the text for Function-Key Unicodes characters (0xF700–0xF8FF).
- ignoreText = (ch.unicode() >= 0xF700 && ch.unicode() <= 0xF8FF);
- }
- Qt::KeyboardModifiers keyMods = qt_cocoaModifiers2QtModifiers([event modifierFlags]);
- QString text;
-
- // To quote from the Carbon port: This is actually wrong--but it is the best that
- // can be done for now because of the Control/Meta mapping issues
- // (we always get text on the Mac)
- if (!ignoreText && !(keyMods & (Qt::ControlModifier | Qt::MetaModifier)))
- text = QCFString::toQString(reinterpret_cast<CFStringRef>(keyChars));
-
- UInt32 macScanCode = 1;
- QKeyEventEx ke(cocoaEvent2QtEvent([event type]), qtKey, keyMods, text, [event isARepeat], qMax(1, keyLength),
- macScanCode, [event keyCode], [event modifierFlags]);
- return qt_sendSpontaneousEvent(widgetToGetEvent, &ke) && ke.isAccepted();
-}
-
-Qt::MouseButton cocoaButton2QtButton(NSInteger buttonNum)
-{
- if (buttonNum == 0)
- return Qt::LeftButton;
- if (buttonNum == 1)
- return Qt::RightButton;
- if (buttonNum == 2)
- return Qt::MidButton;
- if (buttonNum == 3)
- return Qt::XButton1;
- if (buttonNum == 4)
- return Qt::XButton2;
- return Qt::NoButton;
-}
-
-bool qt_dispatchKeyEvent(void * /*NSEvent * */ keyEvent, QWidget *widgetToGetEvent)
-{
- NSEvent *event = static_cast<NSEvent *>(keyEvent);
- EventRef key_event = static_cast<EventRef>(const_cast<void *>([event eventRef]));
- Q_ASSERT(key_event);
- unsigned int info = 0;
-
- if ([event type] == NSKeyDown) {
- NSString *characters = [event characters];
- if ([characters length]) {
- unichar value = [characters characterAtIndex:0];
- qt_keymapper_private()->updateKeyMap(0, key_event, (void *)&value);
- info = value;
- }
- }
-
- if (qt_mac_sendMacEventToWidget(widgetToGetEvent, key_event))
- return true;
-
- if (mustUseCocoaKeyEvent())
- return qt_dispatchKeyEventWithCocoa(keyEvent, widgetToGetEvent);
-
- bool consumed = qt_keymapper_private()->translateKeyEvent(widgetToGetEvent, 0, key_event, &info, true);
- return consumed && (info != 0);
-}
-
-void qt_dispatchModifiersChanged(void * /*NSEvent * */flagsChangedEvent, QWidget *widgetToGetEvent)
-{
- UInt32 modifiers = 0;
- // Sync modifiers with Qt
- NSEvent *event = static_cast<NSEvent *>(flagsChangedEvent);
- EventRef key_event = static_cast<EventRef>(const_cast<void *>([event eventRef]));
- Q_ASSERT(key_event);
- GetEventParameter(key_event, kEventParamKeyModifiers, typeUInt32, 0,
- sizeof(modifiers), 0, &modifiers);
- extern void qt_mac_send_modifiers_changed(quint32 modifiers, QObject *object);
- qt_mac_send_modifiers_changed(modifiers, widgetToGetEvent);
-}
-
-QPointF flipPoint(const NSPoint &p)
-{
- return QPointF(p.x, flipYCoordinate(p.y));
-}
-
-NSPoint flipPoint(const QPoint &p)
-{
- return NSMakePoint(p.x(), flipYCoordinate(p.y()));
-}
-
-NSPoint flipPoint(const QPointF &p)
-{
- return NSMakePoint(p.x(), flipYCoordinate(p.y()));
-}
-
-#ifdef __OBJC__
-
-void qt_mac_handleNonClientAreaMouseEvent(NSWindow *window, NSEvent *event)
-{
- QWidget *widgetToGetEvent = [window QT_MANGLE_NAMESPACE(qt_qwidget)];
- if (widgetToGetEvent == 0)
- return;
-
- NSEventType evtType = [event type];
- QPoint qlocalPoint;
- QPoint qglobalPoint;
- bool processThisEvent = false;
- bool fakeNCEvents = false;
- bool fakeMouseEvents = false;
-
- // Check if this is a mouse event.
- if (evtType == NSLeftMouseDown || evtType == NSLeftMouseUp
- || evtType == NSRightMouseDown || evtType == NSRightMouseUp
- || evtType == NSOtherMouseDown || evtType == NSOtherMouseUp
- || evtType == NSMouseMoved || evtType == NSLeftMouseDragged
- || evtType == NSRightMouseDragged || evtType == NSOtherMouseDragged) {
- // Check if we want to pass this message to another window
- if (mac_mouse_grabber && mac_mouse_grabber != widgetToGetEvent) {
- NSWindow *grabWindow = static_cast<NSWindow *>(qt_mac_window_for(mac_mouse_grabber));
- if (window != grabWindow) {
- window = grabWindow;
- widgetToGetEvent = mac_mouse_grabber;
- fakeNCEvents = true;
- }
- }
- // Dont generate normal NC mouse events for Left Button dragged
- if(evtType != NSLeftMouseDragged || fakeNCEvents) {
- NSPoint windowPoint = [event locationInWindow];
- NSPoint globalPoint = [[event window] convertBaseToScreen:windowPoint];
- NSRect frameRect = [window frame];
- if (fakeNCEvents || NSMouseInRect(globalPoint, frameRect, NO)) {
- NSRect contentRect = [window contentRectForFrameRect:frameRect];
- qglobalPoint = QPoint(flipPoint(globalPoint).toPoint());
- QWidget *w = widgetToGetEvent->childAt(widgetToGetEvent->mapFromGlobal(qglobalPoint));
- // check that the mouse pointer is on the non-client area and
- // there are not widgets in it.
- if (fakeNCEvents || (!NSMouseInRect(globalPoint, contentRect, NO) && !w)) {
- qglobalPoint = QPoint(flipPoint(globalPoint).toPoint());
- qlocalPoint = widgetToGetEvent->mapFromGlobal(qglobalPoint);
- processThisEvent = true;
- }
- }
- }
- }
- // This is not an NC area mouse message.
- if (!processThisEvent)
- return;
-
- // If the window is frame less, generate fake mouse events instead. (floating QToolBar)
- // or if someone already got an explicit or implicit grab
- if (mac_mouse_grabber || qt_button_down ||
- (fakeNCEvents && (widgetToGetEvent->window()->windowFlags() & Qt::FramelessWindowHint)))
- fakeMouseEvents = true;
-
- Qt::MouseButton button;
- QEvent::Type eventType;
- // Convert to Qt::Event type
- switch (evtType) {
- case NSLeftMouseDown:
- button = Qt::LeftButton;
- eventType = (!fakeMouseEvents) ? QEvent::NonClientAreaMouseButtonPress
- : QEvent::MouseButtonPress;
- break;
- case NSLeftMouseUp:
- button = Qt::LeftButton;
- eventType = (!fakeMouseEvents) ? QEvent::NonClientAreaMouseButtonRelease
- : QEvent::MouseButtonRelease;
- break;
- case NSRightMouseDown:
- button = Qt::RightButton;
- eventType = (!fakeMouseEvents) ? QEvent::NonClientAreaMouseButtonPress
- : QEvent::MouseButtonPress;
- break;
- case NSRightMouseUp:
- button = Qt::RightButton;
- eventType = (!fakeMouseEvents) ? QEvent::NonClientAreaMouseButtonRelease
- : QEvent::MouseButtonRelease;
- break;
- case NSOtherMouseDown:
- button = cocoaButton2QtButton([event buttonNumber]);
- eventType = (!fakeMouseEvents) ? QEvent::NonClientAreaMouseButtonPress
- : QEvent::MouseButtonPress;
- break;
- case NSOtherMouseUp:
- button = cocoaButton2QtButton([event buttonNumber]);
- eventType = (!fakeMouseEvents) ? QEvent::NonClientAreaMouseButtonRelease
- : QEvent::MouseButtonRelease;
- break;
- case NSMouseMoved:
- button = Qt::NoButton;
- eventType = (!fakeMouseEvents) ? QEvent::NonClientAreaMouseMove
- : QEvent::MouseMove;
- break;
- case NSLeftMouseDragged:
- button = Qt::LeftButton;
- eventType = (!fakeMouseEvents) ? QEvent::NonClientAreaMouseMove
- : QEvent::MouseMove;
- break;
- case NSRightMouseDragged:
- button = Qt::RightButton;
- eventType = (!fakeMouseEvents) ? QEvent::NonClientAreaMouseMove
- : QEvent::MouseMove;
- break;
- case NSOtherMouseDragged:
- button = cocoaButton2QtButton([event buttonNumber]);
- eventType = (!fakeMouseEvents) ? QEvent::NonClientAreaMouseMove
- : QEvent::MouseMove;
- break;
- default:
- qWarning("not handled! Non client area mouse message");
- return;
- }
-
- Qt::KeyboardModifiers keyMods = qt_cocoaModifiers2QtModifiers([event modifierFlags]);
- if (eventType == QEvent::NonClientAreaMouseButtonPress || eventType == QEvent::MouseButtonPress) {
- NSInteger clickCount = [event clickCount];
- if (clickCount % 2 == 0)
- eventType = (!fakeMouseEvents) ? QEvent::NonClientAreaMouseButtonDblClick
- : QEvent::MouseButtonDblClick;
- if (button == Qt::LeftButton && (keyMods & Qt::MetaModifier)) {
- button = Qt::RightButton;
- qt_leftButtonIsRightButton = true;
- }
- } else if (eventType == QEvent::NonClientAreaMouseButtonRelease || eventType == QEvent::MouseButtonRelease) {
- if (button == Qt::LeftButton && qt_leftButtonIsRightButton) {
- button = Qt::RightButton;
- qt_leftButtonIsRightButton = false;
- }
- }
-
- Qt::MouseButtons buttons = 0;
- {
- UInt32 mac_buttons;
- if (GetEventParameter((EventRef)[event eventRef], kEventParamMouseChord, typeUInt32, 0,
- sizeof(mac_buttons), 0, &mac_buttons) == noErr)
- buttons = qt_mac_get_buttons(mac_buttons);
- }
-
- QMouseEvent qme(eventType, qlocalPoint, qglobalPoint, button, buttons, keyMods);
- qt_sendSpontaneousEvent(widgetToGetEvent, &qme);
-
- // We don't need to set the implicit grab widget here because we won't
- // reach this point if then event type is Press over a Qt widget.
- // However we might need to unset it if the event is Release.
- if (eventType == QEvent::MouseButtonRelease)
- qt_button_down = 0;
-}
-
-QWidget *qt_mac_getTargetForKeyEvent(QWidget *widgetThatReceivedEvent)
-{
- if (QWidget *popup = QApplication::activePopupWidget()) {
- QWidget *focusInPopup = popup->focusWidget();
- return focusInPopup ? focusInPopup : popup;
- }
-
- QWidget *widgetToGetKey = qApp->focusWidget();
- if (!widgetToGetKey)
- widgetToGetKey = widgetThatReceivedEvent;
-
- return widgetToGetKey;
-}
-
-// This function will find the widget that should receive the
-// mouse event. Because of explicit/implicit mouse grabs, popups,
-// etc, this might not end up being the same as the widget under
-// the mouse (which is more interresting when handling enter/leave
-// events
-QWidget *qt_mac_getTargetForMouseEvent(
- // You can call this function without providing an event.
- NSEvent *event,
- QEvent::Type eventType,
- QPoint &returnLocalPoint,
- QPoint &returnGlobalPoint,
- QWidget *nativeWidget,
- QWidget **returnWidgetUnderMouse)
-{
- Q_UNUSED(event);
- NSPoint nsglobalpoint = event ? [[event window] convertBaseToScreen:[event locationInWindow]] : [NSEvent mouseLocation];
- returnGlobalPoint = flipPoint(nsglobalpoint).toPoint();
- QWidget *mouseGrabber = QWidget::mouseGrabber();
- bool buttonDownNotBlockedByModal = qt_button_down && !QApplicationPrivate::isBlockedByModal(qt_button_down);
- QWidget *popup = QApplication::activePopupWidget();
-
- // Resolve the widget under the mouse:
- QWidget *widgetUnderMouse = 0;
- if (popup || qt_button_down || !nativeWidget || !nativeWidget->isVisible()) {
- // Using QApplication::widgetAt for finding the widget under the mouse
- // is most safe, since it ignores cocoas own mouse down redirections (which
- // we need to be prepared for when using nativeWidget as starting point).
- // (the only exception is for QMacNativeWidget, where QApplication::widgetAt fails).
- // But it is also slower (I guess), so we try to avoid it and use nativeWidget if we can:
- widgetUnderMouse = QApplication::widgetAt(returnGlobalPoint);
- }
-
- if (!widgetUnderMouse && nativeWidget) {
- // Entering here should be the common case. We
- // also handle the QMacNativeWidget fallback case.
- QPoint p = nativeWidget->mapFromGlobal(returnGlobalPoint);
- widgetUnderMouse = nativeWidget->childAt(p);
- if (!widgetUnderMouse && nativeWidget->rect().contains(p))
- widgetUnderMouse = nativeWidget;
- }
-
- if (widgetUnderMouse) {
- // Check if widgetUnderMouse is blocked by a modal
- // window, or the mouse if over the frame strut:
- if (widgetUnderMouse == qt_button_down) {
- // Small optimization to avoid an extra call to isBlockedByModal:
- if (buttonDownNotBlockedByModal == false)
- widgetUnderMouse = 0;
- } else if (QApplicationPrivate::isBlockedByModal(widgetUnderMouse)) {
- widgetUnderMouse = 0;
- }
-
- if (widgetUnderMouse && widgetUnderMouse->isWindow()) {
- // Exclude the titlebar (and frame strut) when finding widget under mouse:
- QPoint p = widgetUnderMouse->mapFromGlobal(returnGlobalPoint);
- if (!widgetUnderMouse->rect().contains(p))
- widgetUnderMouse = 0;
- }
- }
- if (returnWidgetUnderMouse)
- *returnWidgetUnderMouse = widgetUnderMouse;
-
- // Resolve the target for the mouse event. Default will be
- // widgetUnderMouse, except if there is a grab (popup/mouse/button-down):
- if (popup && !mouseGrabber) {
- // We special case handling of popups, since they have an implicitt mouse grab.
- QWidget *candidate = buttonDownNotBlockedByModal ? qt_button_down : widgetUnderMouse;
- if (!popup->isAncestorOf(candidate)) {
- // INVARIANT: we have a popup, but the candidate is not
- // in it. But the popup will grab the mouse anyway,
- // except if the user scrolls:
- if (eventType == QEvent::Wheel)
- return 0;
- returnLocalPoint = popup->mapFromGlobal(returnGlobalPoint);
- return popup;
- } else if (popup == candidate) {
- // INVARIANT: The candidate is the popup itself, and not a child:
- returnLocalPoint = popup->mapFromGlobal(returnGlobalPoint);
- return popup;
- } else {
- // INVARIANT: The candidate is a child inside the popup:
- returnLocalPoint = candidate->mapFromGlobal(returnGlobalPoint);
- return candidate;
- }
- }
-
- QWidget *target = mouseGrabber;
- if (!target && buttonDownNotBlockedByModal)
- target = qt_button_down;
- if (!target)
- target = widgetUnderMouse;
- if (!target)
- return 0;
-
- returnLocalPoint = target->mapFromGlobal(returnGlobalPoint);
- return target;
-}
-
-QPointer<QWidget> qt_last_native_mouse_receiver = 0;
-
-static inline void qt_mac_checkEnterLeaveForNativeWidgets(QWidget *maybeEnterWidget)
-{
- // Dispatch enter/leave for the cases where QApplicationPrivate::sendMouseEvent do
- // not. This will in general be the cases when alien widgets are not involved:
- // 1. from a native widget to another native widget or
- // 2. from a native widget to no widget
- // 3. from no widget to a native or alien widget
-
- if (qt_button_down || QWidget::mouseGrabber())
- return;
-
- if ((maybeEnterWidget == qt_last_native_mouse_receiver) && qt_last_native_mouse_receiver)
- return;
- if (maybeEnterWidget) {
- if (!qt_last_native_mouse_receiver) {
- // case 3
- QApplicationPrivate::dispatchEnterLeave(maybeEnterWidget, 0);
- qt_last_native_mouse_receiver = maybeEnterWidget->internalWinId() ? maybeEnterWidget : maybeEnterWidget->nativeParentWidget();
- } else if (maybeEnterWidget->internalWinId()) {
- // case 1
- QApplicationPrivate::dispatchEnterLeave(maybeEnterWidget, qt_last_native_mouse_receiver);
- qt_last_native_mouse_receiver = maybeEnterWidget->internalWinId() ? maybeEnterWidget : maybeEnterWidget->nativeParentWidget();
- } // else at lest one of the widgets are alien, so enter/leave will be handled in QApplicationPrivate
- } else {
- if (qt_last_native_mouse_receiver) {
- // case 2
- QApplicationPrivate::dispatchEnterLeave(0, qt_last_native_mouse_receiver);
- qt_last_mouse_receiver = 0;
- qt_last_native_mouse_receiver = 0;
- }
- }
-}
-
-bool qt_mac_handleMouseEvent(NSEvent *event, QEvent::Type eventType, Qt::MouseButton button, QWidget *nativeWidget)
-{
- // Give the Input Manager a chance to process the mouse events.
- NSInputManager *currentIManager = [NSInputManager currentInputManager];
- if (currentIManager && [currentIManager wantsToHandleMouseEvents]) {
- [currentIManager handleMouseEvent:event];
- }
-
- // Find the widget that should receive the event, and the widget under the mouse. Those
- // can differ if an implicit or explicit mouse grab is active:
- QWidget *widgetUnderMouse = 0;
- QPoint localPoint, globalPoint;
- QWidget *widgetToGetMouse = qt_mac_getTargetForMouseEvent(event, eventType, localPoint, globalPoint, nativeWidget, &widgetUnderMouse);
- if (!widgetToGetMouse)
- return false;
-
- // From here on, we let nativeWidget actually be the native widget under widgetUnderMouse. The reason
- // for this, is that qt_mac_getTargetForMouseEvent will set cocoa's mouse event redirection aside when
- // determining which widget is under the mouse (in other words, it will usually ignore nativeWidget).
- // nativeWidget will be used in QApplicationPrivate::sendMouseEvent to correctly dispatch enter/leave events.
- if (widgetUnderMouse)
- nativeWidget = widgetUnderMouse->internalWinId() ? widgetUnderMouse : widgetUnderMouse->nativeParentWidget();
- if (!nativeWidget)
- return false;
- NSView *view = qt_mac_effectiveview_for(nativeWidget);
-
- // Handle tablet events (if any) first.
- if (qt_mac_handleTabletEvent(view, event)) {
- // Tablet event was handled. In Qt we aren't supposed to send the mouse event.
- return true;
- }
-
- EventRef carbonEvent = static_cast<EventRef>(const_cast<void *>([event eventRef]));
- if (qt_mac_sendMacEventToWidget(widgetToGetMouse, carbonEvent))
- return true;
-
- // Keep previousButton to make sure we don't send double click
- // events when the user double clicks using two different buttons:
- static Qt::MouseButton previousButton = Qt::NoButton;
-
- Qt::KeyboardModifiers keyMods = qt_cocoaModifiers2QtModifiers([event modifierFlags]);
- NSInteger clickCount = [event clickCount];
- Qt::MouseButtons buttons = 0;
- {
- UInt32 mac_buttons;
- if (GetEventParameter(carbonEvent, kEventParamMouseChord, typeUInt32, 0,
- sizeof(mac_buttons), 0, &mac_buttons) == noErr)
- buttons = qt_mac_get_buttons(mac_buttons);
- }
-
- // Send enter/leave events for the cases when QApplicationPrivate::sendMouseEvent do not:
- qt_mac_checkEnterLeaveForNativeWidgets(widgetUnderMouse);
-
- switch (eventType) {
- default:
- qWarning("not handled! %d", eventType);
- break;
- case QEvent::MouseMove:
- if (button == Qt::LeftButton && qt_leftButtonIsRightButton)
- button = Qt::RightButton;
- break;
- case QEvent::MouseButtonPress:
- qt_button_down = widgetUnderMouse;
- if (clickCount % 2 == 0 && (previousButton == Qt::NoButton || previousButton == button))
- eventType = QEvent::MouseButtonDblClick;
- if (button == Qt::LeftButton && (keyMods & Qt::MetaModifier)) {
- button = Qt::RightButton;
- qt_leftButtonIsRightButton = true;
- }
- break;
- case QEvent::MouseButtonRelease:
- if (button == Qt::LeftButton && qt_leftButtonIsRightButton) {
- button = Qt::RightButton;
- qt_leftButtonIsRightButton = false;
- }
- qt_button_down = 0;
- break;
- }
-
- qt_mac_updateCursorWithWidgetUnderMouse(widgetUnderMouse);
-
- DnDParams *dndParams = currentDnDParameters();
- dndParams->view = view;
- dndParams->theEvent = event;
- dndParams->globalPoint = globalPoint;
-
- // Send the mouse event:
- QMouseEvent qme(eventType, localPoint, globalPoint, button, buttons, keyMods);
- QApplicationPrivate::sendMouseEvent(
- widgetToGetMouse, &qme, widgetUnderMouse, nativeWidget,
- &qt_button_down, qt_last_mouse_receiver, true);
-
- if (eventType == QEvent::MouseButtonPress && button == Qt::RightButton) {
- QContextMenuEvent qcme(QContextMenuEvent::Mouse, localPoint, globalPoint, keyMods);
- qt_sendSpontaneousEvent(widgetToGetMouse, &qcme);
- }
-
- if (eventType == QEvent::MouseButtonRelease) {
- // A mouse button was released, which means that the implicit grab was
- // released. We therefore need to re-check if should send (delayed) enter leave events:
- // qt_button_down has now become NULL since the call at the top of the function. Also, since
- // the relase might have closed a window, we dont give the nativeWidget hint
- qt_mac_getTargetForMouseEvent(0, QEvent::None, localPoint, globalPoint, nativeWidget, &widgetUnderMouse);
- qt_mac_checkEnterLeaveForNativeWidgets(widgetUnderMouse);
- }
-
- previousButton = button;
- return true;
-}
-#endif
-
-bool qt_mac_handleTabletEvent(void * /*QCocoaView * */view, void * /*NSEvent * */tabletEvent)
-{
- QT_MANGLE_NAMESPACE(QCocoaView) *theView = static_cast<QT_MANGLE_NAMESPACE(QCocoaView) *>(view);
- NSView *theNSView = static_cast<NSView *>(view);
- NSEvent *theTabletEvent = static_cast<NSEvent *>(tabletEvent);
-
- NSEventType eventType = [theTabletEvent type];
- if (eventType != NSTabletPoint && [theTabletEvent subtype] != NSTabletPointEventSubtype)
- return false; // Not a tablet event.
-
- NSPoint windowPoint = [theTabletEvent locationInWindow];
- NSPoint globalPoint = [[theTabletEvent window] convertBaseToScreen:windowPoint];
-
- QWidget *qwidget = [theView qt_qwidget];
- QWidget *widgetToGetMouse = qwidget;
- QWidget *popup = qAppInstance()->activePopupWidget();
- if (popup && popup != qwidget->window())
- widgetToGetMouse = popup;
-
- if (qt_mac_sendMacEventToWidget(widgetToGetMouse,
- static_cast<EventRef>(const_cast<void *>([theTabletEvent eventRef]))))
- return true;
- if (widgetToGetMouse != qwidget) {
- theNSView = qt_mac_nativeview_for(widgetToGetMouse);
- windowPoint = [[theNSView window] convertScreenToBase:globalPoint];
- }
- NSPoint localPoint = [theNSView convertPoint:windowPoint fromView:nil];
- // Tablet events do not handle WA_TransparentForMouseEvents ATM
- // In theory, people who set the WA_TransparentForMouseEvents attribute won't handle
- // tablet events either in which case they will fall into the mouse event case and get
- // them passed on. This will NOT handle the raw events, but that might not be a big problem.
-
- const QMacTabletHash *tabletHash = qt_mac_tablet_hash();
- if (!tabletHash->contains([theTabletEvent deviceID])) {
- qWarning("QCocoaView handleTabletEvent: This tablet device is unknown"
- " (received no proximity event for it). Discarding event.");
- return false;
- }
- const QTabletDeviceData &deviceData = tabletHash->value([theTabletEvent deviceID]);
-
-
- QEvent::Type qType;
- switch (eventType) {
- case NSLeftMouseDown:
- case NSRightMouseDown:
- qType = QEvent::TabletPress;
- break;
- case NSLeftMouseUp:
- case NSRightMouseUp:
- qType = QEvent::TabletRelease;
- break;
- case NSMouseMoved:
- case NSTabletPoint:
- case NSLeftMouseDragged:
- case NSRightMouseDragged:
- default:
- qType = QEvent::TabletMove;
- break;
- }
-
- qreal pressure;
- if (eventType != NSMouseMoved) {
- pressure = [theTabletEvent pressure];
- } else {
- pressure = 0.0;
- }
-
- NSPoint tilt = [theTabletEvent tilt];
- int xTilt = qRound(tilt.x * 60.0);
- int yTilt = qRound(tilt.y * -60.0);
- qreal tangentialPressure = 0;
- qreal rotation = 0;
- int z = 0;
- if (deviceData.capabilityMask & 0x0200)
- z = [theTabletEvent absoluteZ];
-
- if (deviceData.capabilityMask & 0x0800)
- tangentialPressure = [theTabletEvent tangentialPressure];
-
- rotation = [theTabletEvent rotation];
- QPointF hiRes = flipPoint(globalPoint);
- QTabletEvent qtabletEvent(qType, QPoint(localPoint.x, localPoint.y),
- hiRes.toPoint(), hiRes,
- deviceData.tabletDeviceType, deviceData.tabletPointerType,
- pressure, xTilt, yTilt, tangentialPressure, rotation, z,
- qt_cocoaModifiers2QtModifiers([theTabletEvent modifierFlags]),
- deviceData.tabletUniqueID);
-
- qt_sendSpontaneousEvent(widgetToGetMouse, &qtabletEvent);
- return qtabletEvent.isAccepted();
-}
-
-void qt_mac_updateContentBorderMetricts(void * /*OSWindowRef */window, const ::HIContentBorderMetrics &metrics)
-{
- OSWindowRef theWindow = static_cast<OSWindowRef>(window);
- if ([theWindow styleMask] & NSTexturedBackgroundWindowMask)
- [theWindow setContentBorderThickness:metrics.top forEdge:NSMaxYEdge];
- [theWindow setContentBorderThickness:metrics.bottom forEdge:NSMinYEdge];
-}
-
-void qt_mac_replaceDrawRect(void * /*OSWindowRef */window, QWidgetPrivate *widget)
-{
- QMacCocoaAutoReleasePool pool;
- OSWindowRef theWindow = static_cast<OSWindowRef>(window);
- if(!theWindow)
- return;
- id theClass = [[[theWindow contentView] superview] class];
- // What we do here is basically to add a new selector to NSThemeFrame called
- // "drawRectOriginal:" which will contain the original implementation of
- // "drawRect:". After that we get the new implementation from QCocoaWindow
- // and exchange them. The new implementation is called drawRectSpecial.
- // We cannot just add the method because it might have been added before and since
- // we cannot remove a method once it has been added we need to ask QCocoaWindow if
- // we did the swap or not.
- if(!widget->drawRectOriginalAdded) {
- Method m2 = class_getInstanceMethod(theClass, @selector(drawRect:));
- if(!m2) {
- // This case is pretty extreme, no drawRect means no drawing!
- return;
- }
- class_addMethod(theClass, @selector(drawRectOriginal:), method_getImplementation(m2), method_getTypeEncoding(m2));
- widget->drawRectOriginalAdded = true;
- }
- if(widget->originalDrawMethod) {
- Method m0 = class_getInstanceMethod([theWindow class], @selector(drawRectSpecial:));
- if(!m0) {
- // Ok, this means the methods were never swapped. Just ignore
- return;
- }
- Method m1 = class_getInstanceMethod(theClass, @selector(drawRect:));
- if(!m1) {
- // Ok, this means the methods were never swapped. Just ignore
- return;
- }
- // We have the original method here. Proceed and swap the methods.
- method_exchangeImplementations(m1, m0);
- widget->originalDrawMethod = false;
- [theWindow display];
- }
-}
-
-void qt_mac_replaceDrawRectOriginal(void * /*OSWindowRef */window, QWidgetPrivate *widget)
-{
- QMacCocoaAutoReleasePool pool;
- OSWindowRef theWindow = static_cast<OSWindowRef>(window);
- id theClass = [[[theWindow contentView] superview] class];
- // Now we need to revert the methods to their original state.
- // We cannot remove the method, so we just keep track of it in QCocoaWindow.
- Method m0 = class_getInstanceMethod([theWindow class], @selector(drawRectSpecial:));
- if(!m0) {
- // Ok, this means the methods were never swapped. Just ignore
- return;
- }
- Method m1 = class_getInstanceMethod(theClass, @selector(drawRect:));
- if(!m1) {
- // Ok, this means the methods were never swapped. Just ignore
- return;
- }
- method_exchangeImplementations(m1, m0);
- widget->originalDrawMethod = true;
- [theWindow display];
-}
-
-void qt_mac_showBaseLineSeparator(void * /*OSWindowRef */window, bool show)
-{
- if(!window)
- return;
- QMacCocoaAutoReleasePool pool;
- OSWindowRef theWindow = static_cast<OSWindowRef>(window);
- NSToolbar *macToolbar = [theWindow toolbar];
- [macToolbar setShowsBaselineSeparator:show];
-}
-
-QStringList qt_mac_NSArrayToQStringList(void *nsarray)
-{
- QStringList result;
- NSArray *array = static_cast<NSArray *>(nsarray);
- for (NSUInteger i=0; i<[array count]; ++i)
- result << qt_mac_NSStringToQString([array objectAtIndex:i]);
- return result;
-}
-
-void *qt_mac_QStringListToNSMutableArrayVoid(const QStringList &list)
-{
- NSMutableArray *result = [NSMutableArray arrayWithCapacity:list.size()];
- for (int i=0; i<list.size(); ++i){
- [result addObject:reinterpret_cast<const NSString *>(QCFString::toCFStringRef(list[i]))];
- }
- return result;
-}
-
-void qt_syncCocoaTitleBarButtons(OSWindowRef window, QWidget *widgetForWindow)
-{
- if (!widgetForWindow)
- return;
-
- Qt::WindowFlags flags = widgetForWindow->windowFlags();
- bool customize = flags & Qt::CustomizeWindowHint;
-
- NSButton *btn = [window standardWindowButton:NSWindowZoomButton];
- // BOOL is not an int, so the bitwise AND doesn't work.
- bool go = uint(customize && !(flags & Qt::WindowMaximizeButtonHint)) == 0;
- [btn setEnabled:go];
-
- btn = [window standardWindowButton:NSWindowMiniaturizeButton];
- go = uint(customize && !(flags & Qt::WindowMinimizeButtonHint)) == 0;
- [btn setEnabled:go];
-
- btn = [window standardWindowButton:NSWindowCloseButton];
- go = uint(customize && !(flags & Qt::WindowSystemMenuHint
- || flags & Qt::WindowCloseButtonHint)) == 0;
- [btn setEnabled:go];
-
- [window setShowsToolbarButton:uint(flags & Qt::MacWindowToolBarButtonHint) != 0];
-}
-
-// Carbon: Make sure you call QDEndContext on the context when done with it.
-CGContextRef qt_mac_graphicsContextFor(QWidget *widget)
-{
- if (!widget)
- return 0;
-
- CGContextRef context = (CGContextRef)[[NSGraphicsContext graphicsContextWithWindow:qt_mac_window_for(widget)] graphicsPort];
- return context;
-}
-
-void qt_mac_dispatchPendingUpdateRequests(QWidget *widget)
-{
- if (!widget)
- return;
- [qt_mac_nativeview_for(widget) displayIfNeeded];
-}
-
-CGFloat qt_mac_get_scalefactor()
-{
- return [[NSScreen mainScreen] userSpaceScaleFactor];
-}
-
-QString qt_mac_get_pasteboardString(OSPasteboardRef paste)
-{
- QMacCocoaAutoReleasePool pool;
- NSPasteboard *pb = nil;
- CFStringRef pbname;
- if (PasteboardCopyName(paste, &pbname) == noErr) {
- pb = [NSPasteboard pasteboardWithName:const_cast<NSString *>(reinterpret_cast<const NSString *>(pbname))];
- CFRelease(pbname);
- } else {
- pb = [NSPasteboard generalPasteboard];
- }
- if (pb) {
- NSString *text = [pb stringForType:NSStringPboardType];
- if (text)
- return qt_mac_NSStringToQString(text);
- }
- return QString();
-}
-
-QPixmap qt_mac_convert_iconref(const IconRef icon, int width, int height)
-{
- QPixmap ret(width, height);
- ret.fill(QColor(0, 0, 0, 0));
-
- CGRect rect = CGRectMake(0, 0, width, height);
-
- CGContextRef ctx = qt_mac_cg_context(&ret);
- CGAffineTransform old_xform = CGContextGetCTM(ctx);
- CGContextConcatCTM(ctx, CGAffineTransformInvert(old_xform));
- CGContextConcatCTM(ctx, CGAffineTransformIdentity);
-
- ::RGBColor b;
- b.blue = b.green = b.red = 255*255;
- PlotIconRefInContext(ctx, &rect, kAlignNone, kTransformNone, &b, kPlotIconRefNormalFlags, icon);
- CGContextRelease(ctx);
- return ret;
-}
-
-void qt_mac_constructQIconFromIconRef(const IconRef icon, const IconRef overlayIcon, QIcon *retIcon, QStyle::StandardPixmap standardIcon)
-{
- int size = 16;
- while (size <= 128) {
-
- const QString cacheKey = QLatin1String("qt_mac_constructQIconFromIconRef") + QString::number(standardIcon) + QString::number(size);
- QPixmap mainIcon;
- if (standardIcon >= QStyle::SP_CustomBase) {
- mainIcon = qt_mac_convert_iconref(icon, size, size);
- } else if (QPixmapCache::find(cacheKey, mainIcon) == false) {
- mainIcon = qt_mac_convert_iconref(icon, size, size);
- QPixmapCache::insert(cacheKey, mainIcon);
- }
-
- if (overlayIcon) {
- int littleSize = size / 2;
- QPixmap overlayPix = qt_mac_convert_iconref(overlayIcon, littleSize, littleSize);
- QPainter painter(&mainIcon);
- painter.drawPixmap(size - littleSize, size - littleSize, overlayPix);
- }
-
- retIcon->addPixmap(mainIcon);
- size += size; // 16 -> 32 -> 64 -> 128
- }
-}
-
-void qt_mac_post_retranslateAppMenu()
-{
- QMacCocoaAutoReleasePool pool;
- qt_cocoaPostMessage([NSApp QT_MANGLE_NAMESPACE(qt_qcocoamenuLoader)], @selector(qtTranslateApplicationMenu));
-}
-
-QWidgetPrivate *QMacScrollOptimization::_target = 0;
-bool QMacScrollOptimization::_inWheelEvent = false;
-int QMacScrollOptimization::_dx = 0;
-int QMacScrollOptimization::_dy = 0;
-QRect QMacScrollOptimization::_scrollRect = QRect(0, 0, -1, -1);
-
-// This method implements the magic for the drawRectSpecial method.
-// We draw a line at the upper edge of the content view in order to
-// override the title baseline.
-void macDrawRectOnTop(void * /*OSWindowRef */window)
-{
- OSWindowRef theWindow = static_cast<OSWindowRef>(window);
- NSView *contentView = [theWindow contentView];
- if(!contentView)
- return;
- // Get coordinates of the content view
- NSRect contentRect = [contentView frame];
- // Draw a line on top of the already drawn line.
- // We need to check if we are active or not to use the proper color.
- if([theWindow isKeyWindow] || [theWindow isMainWindow]) {
- [[NSColor colorWithCalibratedRed:1.0 green:1.0 blue:1.0 alpha:1.0] set];
- } else {
- [[NSColor colorWithCalibratedRed:1.0 green:1.0 blue:1.0 alpha:1.0] set];
- }
- NSPoint origin = NSMakePoint(0, contentRect.size.height);
- NSPoint end = NSMakePoint(contentRect.size.width, contentRect.size.height);
- [NSBezierPath strokeLineFromPoint:origin toPoint:end];
-}
-
-// This method will (or at least should) get called only once.
-// Its mission is to find out if we are active or not. If we are active
-// we assume that we were launched via finder, otherwise we assume
-// we were called from the command line. The distinction is important,
-// since in the first case we don't need to trigger a paintEvent, while
-// in the second case we do.
-void macSyncDrawingOnFirstInvocation(void * /*OSWindowRef */window)
-{
- OSWindowRef theWindow = static_cast<OSWindowRef>(window);
- NSApplication *application = [NSApplication sharedApplication];
- NSToolbar *toolbar = [theWindow toolbar];
- if([application isActive]) {
- // Launched from finder
- [toolbar setShowsBaselineSeparator:NO];
- } else {
- // Launched from commandline
- [toolbar setVisible:false];
- [toolbar setShowsBaselineSeparator:NO];
- [toolbar setVisible:true];
- [theWindow display];
- }
-}
-
-void qt_cocoaStackChildWindowOnTopOfOtherChildren(QWidget *childWidget)
-{
- if (!childWidget)
- return;
-
- QWidget *parent = childWidget->parentWidget();
- if (childWidget->isWindow() && parent) {
- if ([[qt_mac_window_for(parent) childWindows] containsObject:qt_mac_window_for(childWidget)]) {
- QWidgetPrivate *d = qt_widget_private(childWidget);
- d->setSubWindowStacking(false);
- d->setSubWindowStacking(true);
- }
- }
-}
-
-void qt_mac_display(QWidget *widget)
-{
- NSView *theNSView = qt_mac_nativeview_for(widget);
- [theNSView display];
-}
-
-void qt_mac_setNeedsDisplay(QWidget *widget)
-{
- NSView *theNSView = qt_mac_nativeview_for(widget);
- [theNSView setNeedsDisplay:YES];
-}
-
-void qt_mac_setNeedsDisplayInRect(QWidget *widget, QRegion region)
-{
- NSView *theNSView = qt_mac_nativeview_for(widget);
- if (region.isEmpty()) {
- [theNSView setNeedsDisplay:YES];
- return;
- }
-
- QVector<QRect> rects = region.rects();
- for (int i = 0; i < rects.count(); ++i) {
- const QRect &rect = rects.at(i);
- NSRect nsrect = NSMakeRect(rect.x(), rect.y(), rect.width(), rect.height());
- [theNSView setNeedsDisplayInRect:nsrect];
- }
-
-}
-
-
-QT_END_NAMESPACE
diff --git a/src/widgets/platforms/mac/qt_cocoa_helpers_mac_p.h b/src/widgets/platforms/mac/qt_cocoa_helpers_mac_p.h
deleted file mode 100644
index bae479ec6a..0000000000
--- a/src/widgets/platforms/mac/qt_cocoa_helpers_mac_p.h
+++ /dev/null
@@ -1,308 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Copyright (c) 2007-2008, Apple, Inc.
-**
-** All rights reserved.
-**
-** Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are met:
-**
-** * Redistributions of source code must retain the above copyright notice,
-** this list of conditions and the following disclaimer.
-**
-** * Redistributions in binary form must reproduce the above copyright notice,
-** this list of conditions and the following disclaimer in the documentation
-** and/or other materials provided with the distribution.
-**
-** * Neither the name of Apple, Inc. nor the names of its contributors
-** may be used to endorse or promote products derived from this software
-** without specific prior written permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-****************************************************************************/
-
-#ifndef QT_COCOA_HELPERS_MAC_P_H
-#define QT_COCOA_HELPERS_MAC_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists for the convenience
-// of qapplication_*.cpp, qwidget*.cpp, qcolor_x11.cpp, qfiledialog.cpp
-// and many other. This header file may change from version to version
-// without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include <private/qt_mac_p.h>
-
-#include <qapplication.h>
-#include <qdesktopwidget.h>
-#include <qwidget.h>
-#include <qevent.h>
-#include <qhash.h>
-#include <qlabel.h>
-#include <qpointer.h>
-#include <qstyle.h>
-#include <qstyleoption.h>
-#include <qstylepainter.h>
-#include <qtimer.h>
-#include <qtooltip.h>
-#include <private/qeffects_p.h>
-#include <private/qwidget_p.h>
-#include <qtextdocument.h>
-#include <qdebug.h>
-#include <qpoint.h>
-#include "private/qt_mac_p.h"
-
-struct HIContentBorderMetrics;
-
-#ifdef __OBJC__
- // If the source file including this file also includes e.g. Cocoa/Cocoa.h, typedef-ing NSPoint will
- // fail since NSPoint will already be a type. So we try to detect this. If the build fails, ensure
- // that the inclusion of cocoa headers happends before the inclusion of this file.
- #include <Foundation/NSGeometry.h>
-#else
- #ifdef Q_WS_MAC32
- typedef struct _NSPoint NSPoint; // Just redefine here so I don't have to pull in all of Cocoa.
- #else
- typedef struct CGPoint NSPoint;
- #endif
-#endif
-
-QT_BEGIN_NAMESPACE
-
-Qt::MouseButtons qt_mac_get_buttons(int buttons);
-Qt::MouseButton qt_mac_get_button(EventMouseButton button);
-void macWindowFade(void * /*OSWindowRef*/ window, float durationSeconds = 0.15);
-void macWindowToolbarShow(const QWidget *widget, bool show );
-void macWindowToolbarSet( void * /*OSWindowRef*/ window, void* toolbarRef );
-bool macWindowToolbarIsVisible( void * /*OSWindowRef*/ window );
-void macWindowSetHasShadow( void * /*OSWindowRef*/ window, bool hasShadow );
-void macWindowFlush(void * /*OSWindowRef*/ window);
-void macSendToolbarChangeEvent(QWidget *widget);
-void qt_mac_updateContentBorderMetricts(void * /*OSWindowRef */window, const ::HIContentBorderMetrics &metrics);
-void qt_mac_replaceDrawRect(void * /*OSWindowRef */window, QWidgetPrivate *widget);
-void qt_mac_replaceDrawRectOriginal(void * /*OSWindowRef */window, QWidgetPrivate *widget);
-void qt_mac_showBaseLineSeparator(void * /*OSWindowRef */window, bool show);
-void qt_mac_update_mouseTracking(QWidget *widget);
-OSStatus qt_mac_drawCGImage(CGContextRef cg, const CGRect *inbounds, CGImageRef);
-bool qt_mac_checkForNativeSizeGrip(const QWidget *widget);
-void qt_dispatchTabletProximityEvent(void * /*NSEvent * */ tabletEvent);
-bool qt_dispatchKeyEventWithCocoa(void * /*NSEvent * */ keyEvent, QWidget *widgetToGetEvent);
-// These methods exists only for supporting unified mode.
-void macDrawRectOnTop(void * /*OSWindowRef */ window);
-void macSyncDrawingOnFirstInvocation(void * /*OSWindowRef */window);
-void qt_cocoaStackChildWindowOnTopOfOtherChildren(QWidget *widget);
-bool qt_dispatchKeyEvent(void * /*NSEvent * */ keyEvent, QWidget *widgetToGetEvent);
-void qt_dispatchModifiersChanged(void * /*NSEvent * */flagsChangedEvent, QWidget *widgetToGetEvent);
-bool qt_mac_handleTabletEvent(void * /*QCocoaView * */view, void * /*NSEvent * */event);
-inline QApplication *qAppInstance() { return static_cast<QApplication *>(QCoreApplication::instance()); }
-struct ::TabletProximityRec;
-void qt_dispatchTabletProximityEvent(const ::TabletProximityRec &proxRec);
-Qt::KeyboardModifiers qt_cocoaModifiers2QtModifiers(ulong modifierFlags);
-Qt::KeyboardModifiers qt_cocoaDragOperation2QtModifiers(uint dragOperations);
-QPixmap qt_mac_convert_iconref(const IconRef icon, int width, int height);
-void qt_mac_constructQIconFromIconRef(const IconRef icon, const IconRef overlayIcon, QIcon *retIcon,
- QStyle::StandardPixmap standardIcon = QStyle::SP_CustomBase);
-
-#ifdef __OBJC__
-struct DnDParams
-{
- NSView *view;
- NSEvent *theEvent;
- QPoint globalPoint;
- NSDragOperation performedAction;
-};
-
-DnDParams *macCurrentDnDParameters();
-NSDragOperation qt_mac_mapDropAction(Qt::DropAction action);
-NSDragOperation qt_mac_mapDropActions(Qt::DropActions actions);
-Qt::DropAction qt_mac_mapNSDragOperation(NSDragOperation nsActions);
-Qt::DropActions qt_mac_mapNSDragOperations(NSDragOperation nsActions);
-
-QWidget *qt_mac_getTargetForKeyEvent(QWidget *widgetThatReceivedEvent);
-QWidget *qt_mac_getTargetForMouseEvent(NSEvent *event, QEvent::Type eventType,
- QPoint &returnLocalPoint, QPoint &returnGlobalPoint, QWidget *nativeWidget, QWidget **returnWidgetUnderMouse);
-bool qt_mac_handleMouseEvent(NSEvent *event, QEvent::Type eventType, Qt::MouseButton button, QWidget *nativeWidget);
-void qt_mac_handleNonClientAreaMouseEvent(NSWindow *window, NSEvent *event);
-#endif
-
-inline int flipYCoordinate(int y)
-{
- return QApplication::desktop()->screenGeometry(0).height() - y;
-}
-
-inline qreal flipYCoordinate(qreal y)
-{
- return QApplication::desktop()->screenGeometry(0).height() - y;
-}
-
-QPointF flipPoint(const NSPoint &p);
-NSPoint flipPoint(const QPoint &p);
-NSPoint flipPoint(const QPointF &p);
-
-QStringList qt_mac_NSArrayToQStringList(void *nsarray);
-void *qt_mac_QStringListToNSMutableArrayVoid(const QStringList &list);
-
-void qt_syncCocoaTitleBarButtons(OSWindowRef window, QWidget *widgetForWindow);
-
-CGFloat qt_mac_get_scalefactor();
-QString qt_mac_get_pasteboardString(OSPasteboardRef paste);
-
-#ifdef __OBJC__
-inline NSMutableArray *qt_mac_QStringListToNSMutableArray(const QStringList &qstrlist)
-{ return reinterpret_cast<NSMutableArray *>(qt_mac_QStringListToNSMutableArrayVoid(qstrlist)); }
-
-inline QString qt_mac_NSStringToQString(const NSString *nsstr)
-{ return QCFString::toQString(reinterpret_cast<const CFStringRef>(nsstr)); }
-
-inline NSString *qt_mac_QStringToNSString(const QString &qstr)
-{ return [const_cast<NSString *>(reinterpret_cast<const NSString *>(QCFString::toCFStringRef(qstr))) autorelease]; }
-
-#endif
-
-class QMacScrollOptimization {
- // This class is made to optimize for the case when the user
- // scrolls both horizontally and vertically at the same
- // time. This will result in two QWheelEvents (one for each
- // direction), which will typically result in two calls to
- // QWidget::_scroll_sys. Rather than copying pixels twize on
- // screen because of this, we add this helper class to try to
- // get away with only one blit.
- static QWidgetPrivate *_target;
- static bool _inWheelEvent;
- static int _dx;
- static int _dy;
- static QRect _scrollRect;
-
-public:
- static void initDelayedScroll()
- {
- _inWheelEvent = true;
- }
-
- static bool delayScroll(QWidgetPrivate *target, int dx, int dy, const QRect &scrollRect)
- {
- if (!_inWheelEvent)
- return false;
- if (_target && _target != target)
- return false;
- if (_scrollRect.width() != -1 && _scrollRect != scrollRect)
- return false;
-
- _target = target;
- _dx += dx;
- _dy += dy;
- _scrollRect = scrollRect;
- return true;
- }
-
- static void performDelayedScroll()
- {
- if (!_inWheelEvent)
- return;
- _inWheelEvent = false;
- if (!_target)
- return;
-
- _target->scroll_sys(_dx, _dy, _scrollRect);
-
- _target = 0;
- _dx = 0;
- _dy = 0;
- _scrollRect = QRect(0, 0, -1, -1);
- }
-};
-
-void qt_mac_post_retranslateAppMenu();
-
-void qt_mac_display(QWidget *widget);
-void qt_mac_setNeedsDisplay(QWidget *widget);
-void qt_mac_setNeedsDisplayInRect(QWidget *widget, QRegion region);
-
-
-// Utility functions to ease the use of Core Graphics contexts.
-
-inline void qt_mac_retain_graphics_context(CGContextRef context)
-{
- CGContextRetain(context);
- CGContextSaveGState(context);
-}
-
-inline void qt_mac_release_graphics_context(CGContextRef context)
-{
- CGContextRestoreGState(context);
- CGContextRelease(context);
-}
-
-inline void qt_mac_draw_image(CGContextRef context, CGContextRef imageContext, CGRect area, CGRect drawingArea)
-{
- CGImageRef image = CGBitmapContextCreateImage(imageContext);
- CGImageRef subImage = CGImageCreateWithImageInRect(image, area);
-
- CGContextTranslateCTM (context, 0, drawingArea.origin.y + CGRectGetMaxY(drawingArea));
- CGContextScaleCTM(context, 1, -1);
- CGContextDrawImage(context, drawingArea, subImage);
-
- CGImageRelease(subImage);
- CGImageRelease(image);
-}
-
-QT_END_NAMESPACE
-
-#endif // QT_COCOA_HELPERS_MAC_P_H
diff --git a/src/widgets/platforms/mac/qt_mac.cpp b/src/widgets/platforms/mac/qt_mac.cpp
deleted file mode 100644
index adf8f70cab..0000000000
--- a/src/widgets/platforms/mac/qt_mac.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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/qt_mac_p.h>
-#include <private/qpixmap_mac_p.h>
-#include <private/qnativeimage_p.h>
-#include <qdebug.h>
-
-QT_BEGIN_NAMESPACE
-static CTFontRef CopyCTThemeFont(ThemeFontID themeID)
-{
- CTFontUIFontType ctID = HIThemeGetUIFontType(themeID);
- return CTFontCreateUIFontForLanguage(ctID, 0, 0);
-}
-
-QFont qfontForThemeFont(ThemeFontID themeID)
-{
- QCFType<CTFontRef> ctfont = CopyCTThemeFont(themeID);
- QString familyName = QCFString(CTFontCopyFamilyName(ctfont));
- QCFType<CFDictionaryRef> dict = CTFontCopyTraits(ctfont);
- CFNumberRef num = static_cast<CFNumberRef>(CFDictionaryGetValue(dict, kCTFontWeightTrait));
- float fW;
- CFNumberGetValue(num, kCFNumberFloat32Type, &fW);
- QFont::Weight wght = fW > 0. ? QFont::Bold : QFont::Normal;
- num = static_cast<CFNumberRef>(CFDictionaryGetValue(dict, kCTFontSlantTrait));
- CFNumberGetValue(num, kCFNumberFloatType, &fW);
- bool italic = (fW != 0.0);
- return QFont(familyName, CTFontGetSize(ctfont), wght, italic);
-}
-
-#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
-
-static inline QColor leopardBrush(ThemeBrush brush)
-{
- QCFType<CGColorRef> cgClr = 0;
- HIThemeBrushCreateCGColor(brush, &cgClr);
- return qcolorFromCGColor(cgClr);
-}
-#endif
-
-QColor qcolorForTheme(ThemeBrush brush)
-{
- return leopardBrush(brush);
-}
-
-QColor qcolorForThemeTextColor(ThemeTextColor themeColor)
-{
-#ifdef Q_OS_MAC32
- RGBColor c;
- GetThemeTextColor(themeColor, 32, true, &c);
- QColor color = QColor(c.red / 256, c.green / 256, c.blue / 256);
- return color;
-#else
- // There is no equivalent to GetThemeTextColor in 64-bit and it was rather bad that
- // I didn't file a request to implement this for Snow Leopard. So, in the meantime
- // I've encoded the values from the GetThemeTextColor. This is not exactly ideal
- // as if someone really wants to mess with themeing, these colors will be wrong.
- // It also means that we need to make sure the values for differences between
- // OS releases (and it will be likely that we are a step behind.)
- switch (themeColor) {
- case kThemeTextColorAlertActive:
- case kThemeTextColorTabFrontActive:
- case kThemeTextColorBevelButtonActive:
- case kThemeTextColorListView:
- case kThemeTextColorPlacardActive:
- case kThemeTextColorPopupButtonActive:
- case kThemeTextColorPopupLabelActive:
- case kThemeTextColorPushButtonActive:
- return Qt::black;
- case kThemeTextColorAlertInactive:
- case kThemeTextColorDialogInactive:
- case kThemeTextColorPlacardInactive:
- return QColor(69, 69, 69, 255);
- case kThemeTextColorPopupButtonInactive:
- case kThemeTextColorPopupLabelInactive:
- case kThemeTextColorPushButtonInactive:
- case kThemeTextColorTabFrontInactive:
- case kThemeTextColorBevelButtonInactive:
- return QColor(127, 127, 127, 255);
- default: {
- QNativeImage nativeImage(16,16, QNativeImage::systemFormat());
- CGRect cgrect = CGRectMake(0, 0, 16, 16);
- HIThemeSetTextFill(themeColor, 0, nativeImage.cg, kHIThemeOrientationNormal);
- CGContextFillRect(nativeImage.cg, cgrect);
- QColor color = nativeImage.image.pixel(0,0);
- return QColor(nativeImage.image.pixel(0 , 0));
- }
- }
-#endif
-}
-QT_END_NAMESPACE
diff --git a/src/widgets/platforms/mac/qt_mac_p.h b/src/widgets/platforms/mac/qt_mac_p.h
deleted file mode 100644
index 3b679c32ec..0000000000
--- a/src/widgets/platforms/mac/qt_mac_p.h
+++ /dev/null
@@ -1,284 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-#ifndef QT_MAC_P_H
-#define QT_MAC_P_H
-
-//
-// W A R N I N G
-// -------------
-//
-// This file is not part of the Qt API. It exists purely as an
-// implementation detail. This header file may change from version to
-// version without notice, or even be removed.
-//
-// We mean it.
-//
-
-#include "qmacdefines_mac.h"
-
-#ifdef __OBJC__
-#include <Cocoa/Cocoa.h>
-#include <objc/runtime.h>
-#endif
-
-#include <CoreServices/CoreServices.h>
-
-#include "QtCore/qglobal.h"
-#include "QtCore/qvariant.h"
-#include "QtCore/qmimedata.h"
-#include "QtCore/qpointer.h"
-#include "private/qcore_mac_p.h"
-
-
-#include "QtGui/qpainter.h"
-
-#include <Carbon/Carbon.h>
-
-QT_BEGIN_NAMESPACE
-class QWidget;
-class QDragMoveEvent;
-
-/* Event masks */
-// internal Qt types
-
- // Event class for our own Carbon events.
-#if defined(QT_NAMESPACE) && defined(QT_NAMESPACE_MAC_CRC)
-// Take the CRC we generated at configure time. This *may* result in a
-// collision with another value If that is the case, please change the value
-// here to something other than 'Cute'.
-const UInt32 kEventClassQt = QT_NAMESPACE_MAC_CRC;
-#else
-const UInt32 kEventClassQt = 'Cute';
-#endif
-
-enum {
- //AE types
- typeAEClipboardChanged = 1,
- //types
- typeQWidget = 1, /* QWidget * */
- //params
- kEventParamQWidget = 'qwid', /* typeQWidget */
- //events
- kEventQtRequestContext = 13,
- kEventQtRequestMenubarUpdate = 14,
- kEventQtRequestShowSheet = 17,
- kEventQtRequestActivate = 18,
- kEventQtRequestWindowChange = 20
-};
-
-// Simple class to manage short-lived regions
-class QMacSmartQuickDrawRegion
-{
- RgnHandle qdRgn;
- Q_DISABLE_COPY(QMacSmartQuickDrawRegion)
-public:
- explicit QMacSmartQuickDrawRegion(RgnHandle rgn) : qdRgn(rgn) {}
- ~QMacSmartQuickDrawRegion() {
- extern void qt_mac_dispose_rgn(RgnHandle); // qregion_mac.cpp
- qt_mac_dispose_rgn(qdRgn);
- }
- operator RgnHandle() {
- return qdRgn;
- }
-};
-
-// Class for chaining to gether a bunch of fades. It pretty much is only used for qmenu fading.
-class QMacWindowFader
-{
- QWidgetList m_windowsToFade;
- float m_duration;
- Q_DISABLE_COPY(QMacWindowFader)
-public:
- QMacWindowFader(); // PLEASE DON'T CALL THIS.
- static QMacWindowFader *currentFader();
- void registerWindowToFade(QWidget *window);
- void setFadeDuration(float durationInSecs) { m_duration = durationInSecs; }
- float fadeDuration() const { return m_duration; }
- void performFade();
-};
-
-class Q_WIDGETS_EXPORT QMacCocoaAutoReleasePool
-{
-private:
- void *pool;
-public:
- QMacCocoaAutoReleasePool();
- ~QMacCocoaAutoReleasePool();
-
- inline void *handle() const { return pool; }
-};
-
-QString qt_mac_removeMnemonics(const QString &original); //implemented in qmacstyle_mac.cpp
-
-class Q_WIDGETS_EXPORT QMacWindowChangeEvent
-{
-private:
- static QList<QMacWindowChangeEvent*> *change_events;
-public:
- QMacWindowChangeEvent() {
- }
- virtual ~QMacWindowChangeEvent() {
- }
- static inline void exec(bool ) {
- }
-protected:
- virtual void windowChanged() = 0;
- virtual void flushWindowChanged() = 0;
-};
-
-class QMacCGContext
-{
- CGContextRef context;
-public:
- QMacCGContext(QPainter *p); //qpaintengine_mac.cpp
- inline QMacCGContext() { context = 0; }
- inline QMacCGContext(const QPaintDevice *pdev) {
- extern CGContextRef qt_mac_cg_context(const QPaintDevice *);
- context = qt_mac_cg_context(pdev);
- }
- inline QMacCGContext(CGContextRef cg, bool takeOwnership=false) {
- context = cg;
- if(!takeOwnership)
- CGContextRetain(context);
- }
- inline QMacCGContext(const QMacCGContext &copy) : context(0) { *this = copy; }
- inline ~QMacCGContext() {
- if(context)
- CGContextRelease(context);
- }
- inline bool isNull() const { return context; }
- inline operator CGContextRef() { return context; }
- inline QMacCGContext &operator=(const QMacCGContext &copy) {
- if(context)
- CGContextRelease(context);
- context = copy.context;
- CGContextRetain(context);
- return *this;
- }
- inline QMacCGContext &operator=(CGContextRef cg) {
- if(context)
- CGContextRelease(context);
- context = cg;
- CGContextRetain(context); //we do not take ownership
- return *this;
- }
-};
-
-class QMacPasteboardMime;
-class QMimeData;
-
-class QMacPasteboard
-{
- struct Promise {
- Promise() : itemId(0), convertor(0) { }
- Promise(int itemId, QMacPasteboardMime *c, QString m, QVariant d, int o=0) : itemId(itemId), offset(o), convertor(c), mime(m), data(d) { }
- int itemId, offset;
- QMacPasteboardMime *convertor;
- QString mime;
- QVariant data;
- };
- QList<Promise> promises;
-
- OSPasteboardRef paste;
- uchar mime_type;
- mutable QPointer<QMimeData> mime;
- mutable bool mac_mime_source;
- static OSStatus promiseKeeper(OSPasteboardRef, PasteboardItemID, CFStringRef, void *);
- void clear_helper();
-public:
- QMacPasteboard(OSPasteboardRef p, uchar mime_type=0);
- QMacPasteboard(uchar mime_type);
- QMacPasteboard(CFStringRef name=0, uchar mime_type=0);
- ~QMacPasteboard();
-
- bool hasFlavor(QString flavor) const;
- bool hasOSType(int c_flavor) const;
-
- OSPasteboardRef pasteBoard() const;
- QMimeData *mimeData() const;
- void setMimeData(QMimeData *mime);
-
- QStringList formats() const;
- bool hasFormat(const QString &format) const;
- QVariant retrieveData(const QString &format, QVariant::Type) const;
-
- void clear();
- bool sync() const;
-};
-
-extern QPaintDevice *qt_mac_safe_pdev; //qapplication_mac.cpp
-
-extern OSWindowRef qt_mac_window_for(const QWidget*); //qwidget_mac.mm
-extern OSViewRef qt_mac_nativeview_for(const QWidget *); //qwidget_mac.mm
-extern QPoint qt_mac_nativeMapFromParent(const QWidget *child, const QPoint &pt); //qwidget_mac.mm
-
-#ifdef check
-# undef check
-#endif
-
-QFont qfontForThemeFont(ThemeFontID themeID);
-
-QColor qcolorForTheme(ThemeBrush brush);
-
-QColor qcolorForThemeTextColor(ThemeTextColor themeColor);
-
-struct QMacDndAnswerRecord {
- QRect rect;
- Qt::KeyboardModifiers modifiers;
- Qt::MouseButtons buttons;
- Qt::DropAction lastAction;
- unsigned int lastOperation;
- void clear() {
- rect = QRect();
- modifiers = Qt::NoModifier;
- buttons = Qt::NoButton;
- lastAction = Qt::IgnoreAction;
- lastOperation = 0;
- }
-};
-extern QMacDndAnswerRecord qt_mac_dnd_answer_rec;
-void qt_mac_copy_answer_rect(const QDragMoveEvent &event);
-bool qt_mac_mouse_inside_answer_rect(QPoint mouse);
-
-QT_END_NAMESPACE
-
-#endif // QT_MAC_P_H
diff --git a/src/widgets/platforms/mac/qwidget_mac.mm b/src/widgets/platforms/mac/qwidget_mac.mm
deleted file mode 100644
index 6c8413e42e..0000000000
--- a/src/widgets/platforms/mac/qwidget_mac.mm
+++ /dev/null
@@ -1,3089 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** 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$
-**
-****************************************************************************/
-
-/****************************************************************************
-**
-** Copyright (c) 2007-2008, Apple, Inc.
-**
-** All rights reserved.
-**
-** Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are met:
-**
-** * Redistributions of source code must retain the above copyright notice,
-** this list of conditions and the following disclaimer.
-**
-** * Redistributions in binary form must reproduce the above copyright notice,
-** this list of conditions and the following disclaimer in the documentation
-** and/or other materials provided with the distribution.
-**
-** * Neither the name of Apple, Inc. nor the names of its contributors
-** may be used to endorse or promote products derived from this software
-** without specific prior written permission.
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-** CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-** EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-** PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-** PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-** LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-** NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-** SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-**
-****************************************************************************/
-
-#include <private/qt_mac_p.h>
-#include <private/qeventdispatcher_mac_p.h>
-
-#include "qapplication.h"
-#include "qapplication_p.h"
-#include "qbitmap.h"
-#include "qcursor.h"
-#include "qdesktopwidget.h"
-#include "qevent.h"
-#include "qfileinfo.h"
-#include "qimage.h"
-#include "qlayout.h"
-#include "qmenubar.h"
-#include <private/qbackingstore_p.h>
-#include <private/qwindowsurface_mac_p.h>
-#include <private/qpaintengine_mac_p.h>
-#include "qpainter.h"
-#include "qstyle.h"
-#include "qtimer.h"
-#include "qfocusframe.h"
-#include "qdebug.h"
-#include <private/qmainwindowlayout_p.h>
-
-#include <private/qabstractscrollarea_p.h>
-#include <qabstractscrollarea.h>
-#include <ApplicationServices/ApplicationServices.h>
-#include <limits.h>
-#include <private/qt_cocoa_helpers_mac_p.h>
-#include <private/qcocoaview_mac_p.h>
-#include <private/qcocoawindow_mac_p.h>
-#include <private/qcocoawindowdelegate_mac_p.h>
-#include <private/qcocoapanel_mac_p.h>
-
-#include "qwidget_p.h"
-#include "qevent_p.h"
-#include "qdnd_p.h"
-#include <QtGui/qgraphicsproxywidget.h>
-#include "qmainwindow.h"
-
-QT_BEGIN_NAMESPACE
-
-// qmainwindow.cpp
-extern QMainWindowLayout *qt_mainwindow_layout(const QMainWindow *window);
-
-#define XCOORD_MAX 16383
-#define WRECT_MAX 8191
-
-
-
-/*****************************************************************************
- QWidget debug facilities
- *****************************************************************************/
-//#define DEBUG_WINDOW_RGNS
-//#define DEBUG_WINDOW_CREATE
-//#define DEBUG_WINDOW_STATE
-//#define DEBUG_WIDGET_PAINT
-
-/*****************************************************************************
- QWidget globals
- *****************************************************************************/
-
-static bool qt_mac_raise_process = true;
-static OSWindowRef qt_root_win = 0;
-QWidget *mac_mouse_grabber = 0;
-QWidget *mac_keyboard_grabber = 0;
-
-
-/*****************************************************************************
- Externals
- *****************************************************************************/
-extern QPointer<QWidget> qt_button_down; //qapplication_mac.cpp
-extern QWidget *qt_mac_modal_blocked(QWidget *); //qapplication_mac.mm
-extern void qt_event_request_activate(QWidget *); //qapplication_mac.mm
-extern bool qt_event_remove_activate(); //qapplication_mac.mm
-extern void qt_mac_event_release(QWidget *w); //qapplication_mac.mm
-extern void qt_event_request_showsheet(QWidget *); //qapplication_mac.mm
-extern void qt_event_request_window_change(QWidget *); //qapplication_mac.mm
-extern QPointer<QWidget> qt_last_mouse_receiver; //qapplication_mac.mm
-extern QPointer<QWidget> qt_last_native_mouse_receiver; //qt_cocoa_helpers_mac.mm
-extern IconRef qt_mac_create_iconref(const QPixmap &); //qpixmap_mac.cpp
-extern void qt_mac_set_cursor(const QCursor *, const QPoint &); //qcursor_mac.mm
-extern void qt_mac_update_cursor(); //qcursor_mac.mm
-extern bool qt_nograb();
-extern CGImageRef qt_mac_create_cgimage(const QPixmap &, bool); //qpixmap_mac.cpp
-extern RgnHandle qt_mac_get_rgn(); //qregion_mac.cpp
-extern QRegion qt_mac_convert_mac_region(RgnHandle rgn); //qregion_mac.cpp
-extern void qt_mac_setMouseGrabCursor(bool set, QCursor *cursor = 0); // qcursor_mac.mm
-extern QPointer<QWidget> topLevelAt_cache; // qapplication_mac.mm
-/*****************************************************************************
- QWidget utility functions
- *****************************************************************************/
-void Q_GUI_EXPORT qt_mac_set_raise_process(bool b) { qt_mac_raise_process = b; }
-static QSize qt_mac_desktopSize()
-{
- int w = 0, h = 0;
- CGDisplayCount cg_count;
- CGGetActiveDisplayList(0, 0, &cg_count);
- QVector<CGDirectDisplayID> displays(cg_count);
- CGGetActiveDisplayList(cg_count, displays.data(), &cg_count);
- Q_ASSERT(cg_count == (CGDisplayCount)displays.size());
- for(int i = 0; i < (int)cg_count; ++i) {
- CGRect r = CGDisplayBounds(displays.at(i));
- w = qMax<int>(w, qRound(r.origin.x + r.size.width));
- h = qMax<int>(h, qRound(r.origin.y + r.size.height));
- }
- return QSize(w, h);
-}
-
-static NSDrawer *qt_mac_drawer_for(const QWidget *widget)
-{
- NSView *widgetView = reinterpret_cast<NSView *>(widget->window()->effectiveWinId());
- NSArray *windows = [NSApp windows];
- for (NSWindow *window in windows) {
- NSArray *drawers = [window drawers];
- for (NSDrawer *drawer in drawers) {
- if ([drawer contentView] == widgetView)
- return drawer;
- }
- }
- return 0;
-}
-
-static void qt_mac_destructView(OSViewRef view)
-{
- NSWindow *window = [view window];
- if ([window contentView] == view)
- [window setContentView:[[NSView alloc] initWithFrame:[view bounds]]];
- [view removeFromSuperview];
- [view release];
-}
-
-static void qt_mac_destructWindow(OSWindowRef window)
-{
- if ([window isVisible] && [window isSheet]){
- [NSApp endSheet:window];
- [window orderOut:window];
- }
-
- [[QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate] resignDelegateForWindow:window];
- [window release];
-}
-
-static void qt_mac_destructDrawer(NSDrawer *drawer)
-{
- [[QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate] resignDelegateForDrawer:drawer];
- [drawer release];
-}
-
-bool qt_mac_can_clickThrough(const QWidget *w)
-{
- static int qt_mac_carbon_clickthrough = -1;
- if (qt_mac_carbon_clickthrough < 0)
- qt_mac_carbon_clickthrough = !qgetenv("QT_MAC_NO_COCOA_CLICKTHROUGH").isEmpty();
- bool ret = !qt_mac_carbon_clickthrough;
- for ( ; w; w = w->parentWidget()) {
- if (w->testAttribute(Qt::WA_MacNoClickThrough)) {
- ret = false;
- break;
- }
- }
- return ret;
-}
-
-bool qt_mac_is_macsheet(const QWidget *w)
-{
- if (!w)
- return false;
-
- Qt::WindowModality modality = w->windowModality();
- if (modality == Qt::ApplicationModal)
- return false;
- return w->parentWidget() && (modality == Qt::WindowModal || w->windowType() == Qt::Sheet);
-}
-
-bool qt_mac_is_macdrawer(const QWidget *w)
-{
- return (w && w->parentWidget() && w->windowType() == Qt::Drawer);
-}
-
-bool qt_mac_insideKeyWindow(const QWidget *w)
-{
- return [[reinterpret_cast<NSView *>(w->effectiveWinId()) window] isKeyWindow];
- return false;
-}
-
-bool qt_mac_set_drawer_preferred_edge(QWidget *w, Qt::DockWidgetArea where) //users of Qt for Mac OS X can use this..
-{
- if(!qt_mac_is_macdrawer(w))
- return false;
-
- NSDrawer *drawer = qt_mac_drawer_for(w);
- if (!drawer)
- return false;
- NSRectEdge edge;
- if (where & Qt::LeftDockWidgetArea)
- edge = NSMinXEdge;
- else if (where & Qt::RightDockWidgetArea)
- edge = NSMaxXEdge;
- else if (where & Qt::TopDockWidgetArea)
- edge = NSMaxYEdge;
- else if (where & Qt::BottomDockWidgetArea)
- edge = NSMinYEdge;
- else
- return false;
-
- if (edge == [drawer preferredEdge]) //no-op
- return false;
-
- if (w->isVisible()) {
- [drawer close];
- [drawer openOnEdge:edge];
- }
- [drawer setPreferredEdge:edge];
- return true;
-}
-
-QPoint qt_mac_posInWindow(const QWidget *w)
-{
- QPoint ret = w->data->wrect.topLeft();
- while(w && !w->isWindow()) {
- ret += w->pos();
- w = w->parentWidget();
- }
- return ret;
-}
-
-//find a QWidget from a OSWindowRef
-QWidget *qt_mac_find_window(OSWindowRef window)
-{
- return [window QT_MANGLE_NAMESPACE(qt_qwidget)];
-}
-
-inline static void qt_mac_set_fullscreen_mode(bool b)
-{
- extern bool qt_mac_app_fullscreen; //qapplication_mac.mm
- if(qt_mac_app_fullscreen == b)
- return;
- qt_mac_app_fullscreen = b;
- if (b) {
- SetSystemUIMode(kUIModeAllHidden, kUIOptionAutoShowMenuBar);
- } else {
- SetSystemUIMode(kUIModeNormal, 0);
- }
-}
-
-Q_GUI_EXPORT OSViewRef qt_mac_nativeview_for(const QWidget *w)
-{
- return reinterpret_cast<OSViewRef>(w->internalWinId());
-}
-
-Q_GUI_EXPORT OSViewRef qt_mac_effectiveview_for(const QWidget *w)
-{
- // Get the first non-alien (parent) widget for
- // w, and return its NSView (if it has one):
- return reinterpret_cast<OSViewRef>(w->effectiveWinId());
-}
-
-Q_GUI_EXPORT OSViewRef qt_mac_get_contentview_for(OSWindowRef w)
-{
- return [w contentView];
-}
-
-bool qt_mac_sendMacEventToWidget(QWidget *widget, EventRef ref)
-{
- return widget->macEvent(0, ref);
-}
-
-Q_GUI_EXPORT OSWindowRef qt_mac_window_for(OSViewRef view)
-{
- if (view)
- return [view window];
- return 0;
-}
-
-static bool qt_isGenuineQWidget(OSViewRef ref)
-{
- return [ref isKindOfClass:[QT_MANGLE_NAMESPACE(QCocoaView) class]];
-}
-
-bool qt_isGenuineQWidget(const QWidget *window)
-{
- if (!window)
- return false;
-
- if (!window->internalWinId())
- return true; //alien
-
- return qt_isGenuineQWidget(OSViewRef(window->internalWinId()));
-}
-
-Q_GUI_EXPORT OSWindowRef qt_mac_window_for(const QWidget *w)
-{
- if (OSViewRef hiview = qt_mac_effectiveview_for(w)) {
- OSWindowRef window = qt_mac_window_for(hiview);
- if (window)
- return window;
-
- if (qt_isGenuineQWidget(hiview)) {
- // This is a workaround for NSToolbar. When a widget is hidden
- // by clicking the toolbar button, Cocoa reparents the widgets
- // to another window (but Qt doesn't know about it).
- // When we start showing them, it reparents back,
- // but at this point it's window is nil, but the window it's being brought
- // into (the Qt one) is for sure created.
- // This stops the hierarchy moving under our feet.
- QWidget *toplevel = w->window();
- if (toplevel != w) {
- hiview = qt_mac_nativeview_for(toplevel);
- if (OSWindowRef w = qt_mac_window_for(hiview))
- return w;
- }
-
- toplevel->d_func()->createWindow_sys();
- // Reget the hiview since "create window" could potentially move the view (I guess).
- hiview = qt_mac_nativeview_for(toplevel);
- return qt_mac_window_for(hiview);
- }
- }
- return 0;
-}
-
-
-
-inline static bool updateRedirectedToGraphicsProxyWidget(QWidget *widget, const QRect &rect)
-{
- if (!widget)
- return false;
-
-#ifndef QT_NO_GRAPHICSVIEW
- QWidget *tlw = widget->window();
- QWExtra *extra = qt_widget_private(tlw)->extra;
- if (extra && extra->proxyWidget) {
- extra->proxyWidget->update(rect.translated(widget->mapTo(tlw, QPoint())));
- return true;
- }
-#endif
-
- return false;
-}
-
-inline static bool updateRedirectedToGraphicsProxyWidget(QWidget *widget, const QRegion &rgn)
-{
- if (!widget)
- return false;
-
-#ifndef QT_NO_GRAPHICSVIEW
- QWidget *tlw = widget->window();
- QWExtra *extra = qt_widget_private(tlw)->extra;
- if (extra && extra->proxyWidget) {
- const QPoint offset(widget->mapTo(tlw, QPoint()));
- const QVector<QRect> rects = rgn.rects();
- for (int i = 0; i < rects.size(); ++i)
- extra->proxyWidget->update(rects.at(i).translated(offset));
- return true;
- }
-#endif
-
- return false;
-}
-
-void QWidgetPrivate::macSetNeedsDisplay(QRegion region)
-{
- Q_Q(QWidget);
- if (NSView *nativeView = qt_mac_nativeview_for(q)) {
- // INVARIANT: q is _not_ alien. So we can optimize a little:
- if (region.isEmpty()) {
- [nativeView setNeedsDisplay:YES];
- } else {
- QVector<QRect> rects = region.rects();
- for (int i = 0; i<rects.count(); ++i) {
- const QRect &rect = rects.at(i);
- NSRect nsrect = NSMakeRect(rect.x(), rect.y(), rect.width(), rect.height());
- [nativeView setNeedsDisplayInRect:nsrect];
- }
- }
- } else if (QWidget *effectiveWidget = q->nativeParentWidget()) {
- // INVARIANT: q is alien, and effectiveWidget is native.
- if (NSView *effectiveView = qt_mac_nativeview_for(effectiveWidget)) {
- if (region.isEmpty()) {
- const QRect &rect = q->rect();
- QPoint p = q->mapTo(effectiveWidget, rect.topLeft());
- NSRect nsrect = NSMakeRect(p.x(), p.y(), rect.width(), rect.height());
- [effectiveView setNeedsDisplayInRect:nsrect];
- } else {
- QVector<QRect> rects = region.rects();
- for (int i = 0; i<rects.count(); ++i) {
- const QRect &rect = rects.at(i);
- QPoint p = q->mapTo(effectiveWidget, rect.topLeft());
- NSRect nsrect = NSMakeRect(p.x(), p.y(), rect.width(), rect.height());
- [effectiveView setNeedsDisplayInRect:nsrect];
- }
- }
- }
- }
-}
-
-void QWidgetPrivate::macUpdateIsOpaque()
-{
- Q_Q(QWidget);
- if (!q->testAttribute(Qt::WA_WState_Created))
- return;
- if (isRealWindow() && !q->testAttribute(Qt::WA_MacBrushedMetal)) {
- bool opaque = isOpaque;
- if (extra && extra->imageMask)
- opaque = false; // we are never opaque when we have a mask.
- [qt_mac_window_for(q) setOpaque:opaque];
- }
-}
-static OSWindowRef qt_mac_create_window(QWidget *widget, WindowClass wclass,
- NSUInteger wattr, const QRect &crect)
-{
- // Determine if we need to add in our "custom window" attribute. Cocoa is rather clever
- // in deciding if we need the maximize button or not (i.e., it's resizeable, so you
- // must need a maximize button). So, the only buttons we have control over are the
- // close and minimize buttons. If someone wants to customize and NOT have the maximize
- // button, then we have to do our hack. We only do it for these cases because otherwise
- // the window looks different when activated. This "QtMacCustomizeWindow" attribute is
- // intruding on a public space and WILL BREAK in the future.
- // One can hope that there is a more public API available by that time.
- Qt::WindowFlags flags = widget ? widget->windowFlags() : Qt::WindowFlags(0);
- if ((flags & Qt::CustomizeWindowHint)) {
- if ((flags & (Qt::WindowCloseButtonHint | Qt::WindowSystemMenuHint
- | Qt::WindowMinimizeButtonHint | Qt::WindowTitleHint))
- && !(flags & Qt::WindowMaximizeButtonHint))
- wattr |= QtMacCustomizeWindow;
- }
-
- // If we haven't created the desktop widget, you have to pass the rectangle
- // in "cocoa coordinates" (i.e., top points to the lower left coordinate).
- // Otherwise, we do the conversion for you. Since we are the only ones that
- // create the desktop widget, this is OK (but confusing).
- NSRect geo = NSMakeRect(crect.left(),
- (qt_root_win != 0) ? flipYCoordinate(crect.bottom() + 1) : crect.top(),
- crect.width(), crect.height());
- QMacCocoaAutoReleasePool pool;
- OSWindowRef window;
- switch (wclass) {
- case kMovableModalWindowClass:
- case kModalWindowClass:
- case kSheetWindowClass:
- case kFloatingWindowClass:
- case kOverlayWindowClass:
- case kHelpWindowClass: {
- NSPanel *panel;
- BOOL needFloating = NO;
- BOOL worksWhenModal = widget && (widget->windowType() == Qt::Popup);
- // Add in the extra flags if necessary.
- switch (wclass) {
- case kSheetWindowClass:
- wattr |= NSDocModalWindowMask;
- break;
- case kFloatingWindowClass:
- case kHelpWindowClass:
- needFloating = YES;
- wattr |= NSUtilityWindowMask;
- break;
- default:
- break;
- }
- panel = [[QT_MANGLE_NAMESPACE(QCocoaPanel) alloc] QT_MANGLE_NAMESPACE(qt_initWithQWidget):widget contentRect:geo styleMask:wattr];
- [panel setFloatingPanel:needFloating];
- [panel setWorksWhenModal:worksWhenModal];
- window = panel;
- break;
- }
- case kDrawerWindowClass: {
- NSDrawer *drawer = [[NSDrawer alloc] initWithContentSize:geo.size preferredEdge:NSMinXEdge];
- [[QT_MANGLE_NAMESPACE(QCocoaWindowDelegate) sharedDelegate] becomeDelegateForDrawer:drawer widget:widget];
- QWidget *parentWidget = widget->parentWidget();
- if (parentWidget)
- [drawer setParentWindow:qt_mac_window_for(parentWidget)];
- [drawer setLeadingOffset:0.0];
- [drawer setTrailingOffset:25.0];
- window = [[drawer contentView] window]; // Just to make sure we actually return a window
- break;
- }
- default:
- window = [[QT_MANGLE_NAMESPACE(QCocoaWindow) alloc] QT_MANGLE_NAMESPACE(qt_initWithQWidget):widget contentRect:geo styleMask:wattr];
- break;
- }
- qt_syncCocoaTitleBarButtons(window, widget);
- return window;
-}
-
-OSViewRef qt_mac_create_widget(QWidget *widget, QWidgetPrivate *widgetPrivate, OSViewRef parent)
-{
- QMacCocoaAutoReleasePool pool;
- QT_MANGLE_NAMESPACE(QCocoaView) *view = [[QT_MANGLE_NAMESPACE(QCocoaView) alloc] initWithQWidget:widget widgetPrivate:widgetPrivate];
-
-#ifdef ALIEN_DEBUG
- qDebug() << "Creating NSView for" << widget;
-#endif
-
- if (view && parent)
- [parent addSubview:view];
- return view;
-}
-
-void qt_mac_unregister_widget()
-{
-}
-
-void QWidgetPrivate::toggleDrawers(bool visible)
-{
- for (int i = 0; i < children.size(); ++i) {
- register QObject *object = children.at(i);
- if (!object->isWidgetType())
- continue;
- QWidget *widget = static_cast<QWidget*>(object);
- if(qt_mac_is_macdrawer(widget)) {
- bool oldState = widget->testAttribute(Qt::WA_WState_ExplicitShowHide);
- if(visible) {
- if (!widget->testAttribute(Qt::WA_WState_ExplicitShowHide))
- widget->show();
- } else {
- widget->hide();
- if(!oldState)
- widget->setAttribute(Qt::WA_WState_ExplicitShowHide, false);
- }
- }
- }
-}
-
-/*****************************************************************************
- QWidgetPrivate member functions
- *****************************************************************************/
-bool QWidgetPrivate::qt_mac_update_sizer(QWidget *w, int up)
-{
- // I'm not sure what "up" is
- if(!w || !w->isWindow())
- return false;
-
- QTLWExtra *topData = w->d_func()->topData();
- QWExtra *extraData = w->d_func()->extraData();
- // topData->resizer is only 4 bits, so subtracting -1 from zero causes bad stuff
- // to happen, prevent that here (you really want the thing hidden).
- if (up >= 0 || topData->resizer != 0)
- topData->resizer += up;
- OSWindowRef windowRef = qt_mac_window_for(OSViewRef(w->effectiveWinId()));
- {
- }
- bool remove_grip = (topData->resizer || (w->windowFlags() & Qt::FramelessWindowHint)
- || (extraData->maxw && extraData->maxh &&
- extraData->maxw == extraData->minw && extraData->maxh == extraData->minh));
- [windowRef setShowsResizeIndicator:!remove_grip];
- return true;
-}
-
-void QWidgetPrivate::qt_clean_root_win()
-{
- QMacCocoaAutoReleasePool pool;
- [qt_root_win release];
- qt_root_win = 0;
-}
-
-bool QWidgetPrivate::qt_create_root_win()
-{
- if(qt_root_win)
- return false;
- const QSize desktopSize = qt_mac_desktopSize();
- QRect desktopRect(QPoint(0, 0), desktopSize);
- qt_root_win = qt_mac_create_window(0, kOverlayWindowClass, NSBorderlessWindowMask, desktopRect);
- if(!qt_root_win)
- return false;
- qAddPostRoutine(qt_clean_root_win);
- return true;
-}
-
-bool QWidgetPrivate::qt_widget_rgn(QWidget *widget, short wcode, RgnHandle rgn, bool force = false)
-{
- bool ret = false;
- Q_UNUSED(widget);
- Q_UNUSED(wcode);
- Q_UNUSED(rgn);
- Q_UNUSED(force);
- return ret;
-}
-
-/*****************************************************************************
- QWidget member functions
- *****************************************************************************/
-void QWidgetPrivate::determineWindowClass()
-{
- Q_Q(QWidget);
-#if !defined(QT_NO_MAINWINDOW) && !defined(QT_NO_TOOLBAR)
- // Make sure that QMainWindow has the MacWindowToolBarButtonHint when the
- // unifiedTitleAndToolBarOnMac property is ON. This is to avoid reentry of
- // setParent() triggered by the QToolBar::event(QEvent::ParentChange).
- QMainWindow *mainWindow = qobject_cast<QMainWindow *>(q);
- if (mainWindow && mainWindow->unifiedTitleAndToolBarOnMac()) {
- data.window_flags |= Qt::MacWindowToolBarButtonHint;
- }
-#endif
-
- const Qt::WindowType type = q->windowType();
- Qt::WindowFlags &flags = data.window_flags;
- const bool popup = (type == Qt::Popup);
- if (type == Qt::ToolTip || type == Qt::SplashScreen || popup)
- flags |= Qt::FramelessWindowHint;
-
- WindowClass wclass = kSheetWindowClass;
- if(qt_mac_is_macdrawer(q))
- wclass = kDrawerWindowClass;
- else if (q->testAttribute(Qt::WA_ShowModal) && flags & Qt::CustomizeWindowHint)
- wclass = kDocumentWindowClass;
- else if(popup || (QSysInfo::MacintoshVersion >= QSysInfo::MV_10_5 && type == Qt::SplashScreen))
- wclass = kModalWindowClass;
- else if(type == Qt::Dialog)
- wclass = kMovableModalWindowClass;
- else if(type == Qt::ToolTip)
- wclass = kHelpWindowClass;
- else if(type == Qt::Tool || (QSysInfo::MacintoshVersion < QSysInfo::MV_10_5
- && type == Qt::SplashScreen))
- wclass = kFloatingWindowClass;
- else if(q->testAttribute(Qt::WA_ShowModal))
- wclass = kMovableModalWindowClass;
- else
- wclass = kDocumentWindowClass;
-
- WindowAttributes wattr = NSBorderlessWindowMask;
- if(qt_mac_is_macsheet(q)) {
- //grp = GetWindowGroupOfClass(kMovableModalWindowClass);
- wclass = kSheetWindowClass;
- wattr = NSTitledWindowMask | NSResizableWindowMask;
- } else {
- // Shift things around a bit to get the correct window class based on the presence
- // (or lack) of the border.
- bool customize = flags & Qt::CustomizeWindowHint;
- bool framelessWindow = (flags & Qt::FramelessWindowHint || (customize && !(flags & Qt::WindowTitleHint)));
- if (framelessWindow) {
- if (wclass == kDocumentWindowClass) {
- wclass = kSimpleWindowClass;
- } else if (wclass == kFloatingWindowClass) {
- wclass = kToolbarWindowClass;
- } else if (wclass == kMovableModalWindowClass) {
- wclass = kModalWindowClass;
- }
- } else {
- wattr |= NSTitledWindowMask;
- if (wclass != kModalWindowClass)
- wattr |= NSResizableWindowMask;
- }
- // Only add extra decorations (well, buttons) for widgets that can have them
- // and have an actual border we can put them on.
- if (wclass != kModalWindowClass
- && wclass != kSheetWindowClass && wclass != kPlainWindowClass
- && !framelessWindow && wclass != kDrawerWindowClass
- && wclass != kHelpWindowClass) {
- if (flags & Qt::WindowMinimizeButtonHint)
- wattr |= NSMiniaturizableWindowMask;
- if (flags & Qt::WindowSystemMenuHint || flags & Qt::WindowCloseButtonHint)
- wattr |= NSClosableWindowMask;
- } else {
- // Clear these hints so that we aren't call them on invalid windows
- flags &= ~(Qt::WindowMaximizeButtonHint | Qt::WindowMinimizeButtonHint
- | Qt::WindowCloseButtonHint | Qt::WindowSystemMenuHint);
- }
- }
- if (q->testAttribute(Qt::WA_MacBrushedMetal))
- wattr |= NSTexturedBackgroundWindowMask;
-
-#ifdef DEBUG_WINDOW_CREATE
-#define ADD_DEBUG_WINDOW_NAME(x) { x, #x }
- struct {
- UInt32 tag;
- const char *name;
- } known_attribs[] = {
- ADD_DEBUG_WINDOW_NAME(kWindowCompositingAttribute),
- ADD_DEBUG_WINDOW_NAME(kWindowStandardHandlerAttribute),
- ADD_DEBUG_WINDOW_NAME(kWindowMetalAttribute),
- ADD_DEBUG_WINDOW_NAME(kWindowHideOnSuspendAttribute),
- ADD_DEBUG_WINDOW_NAME(kWindowStandardHandlerAttribute),
- ADD_DEBUG_WINDOW_NAME(kWindowCollapseBoxAttribute),
- ADD_DEBUG_WINDOW_NAME(kWindowHorizontalZoomAttribute),
- ADD_DEBUG_WINDOW_NAME(kWindowVerticalZoomAttribute),
- ADD_DEBUG_WINDOW_NAME(kWindowResizableAttribute),
- ADD_DEBUG_WINDOW_NAME(kWindowNoActivatesAttribute),
- ADD_DEBUG_WINDOW_NAME(kWindowNoUpdatesAttribute),
- ADD_DEBUG_WINDOW_NAME(kWindowOpaqueForEventsAttribute),
- ADD_DEBUG_WINDOW_NAME(kWindowLiveResizeAttribute),
- ADD_DEBUG_WINDOW_NAME(kWindowCloseBoxAttribute),
- ADD_DEBUG_WINDOW_NAME(kWindowHideOnSuspendAttribute),
- { 0, 0 }
- }, known_classes[] = {
- ADD_DEBUG_WINDOW_NAME(kHelpWindowClass),
- ADD_DEBUG_WINDOW_NAME(kPlainWindowClass),
- ADD_DEBUG_WINDOW_NAME(kDrawerWindowClass),
- ADD_DEBUG_WINDOW_NAME(kUtilityWindowClass),
- ADD_DEBUG_WINDOW_NAME(kToolbarWindowClass),
- ADD_DEBUG_WINDOW_NAME(kSheetWindowClass),
- ADD_DEBUG_WINDOW_NAME(kFloatingWindowClass),
- ADD_DEBUG_WINDOW_NAME(kUtilityWindowClass),
- ADD_DEBUG_WINDOW_NAME(kDocumentWindowClass),
- ADD_DEBUG_WINDOW_NAME(kToolbarWindowClass),
- ADD_DEBUG_WINDOW_NAME(kMovableModalWindowClass),
- ADD_DEBUG_WINDOW_NAME(kModalWindowClass),
- { 0, 0 }
- };
- qDebug("Qt: internal: ************* Creating new window %p (%s::%s)", q, q->metaObject()->className(),
- q->objectName().toLocal8Bit().constData());
- bool found_class = false;
- for(int i = 0; known_classes[i].name; i++) {
- if(wclass == known_classes[i].tag) {
- found_class = true;
- qDebug("Qt: internal: ** Class: %s", known_classes[i].name);
- break;
- }
- }
- if(!found_class)
- qDebug("Qt: internal: !! Class: Unknown! (%d)", (int)wclass);
- if(wattr) {
- WindowAttributes tmp_wattr = wattr;
- qDebug("Qt: internal: ** Attributes:");
- for(int i = 0; tmp_wattr && known_attribs[i].name; i++) {
- if((tmp_wattr & known_attribs[i].tag) == known_attribs[i].tag) {
- tmp_wattr ^= known_attribs[i].tag;
- }
- }
- if(tmp_wattr)
- qDebug("Qt: internal: !! Attributes: Unknown (%d)", (int)tmp_wattr);
- }
-#endif
-
- topData()->wclass = wclass;
- topData()->wattr = wattr;
-}
-
-#undef ADD_DEBUG_WINDOW_NAME
-
-void QWidgetPrivate::setWindowLevel()
-{
- Q_Q(QWidget);
- const QWidget * const windowParent = q->window()->parentWidget();
- const QWidget * const primaryWindow = windowParent ? windowParent->window() : 0;
- NSInteger winLevel = -1;
-
- if (q->windowType() == Qt::Popup) {
- winLevel = NSPopUpMenuWindowLevel;
- // Popup should be in at least the same level as its parent.
- if (primaryWindow) {
- OSWindowRef parentRef = qt_mac_window_for(primaryWindow);
- winLevel = qMax([parentRef level], winLevel);
- }
- } else if (q->windowType() == Qt::Tool) {
- winLevel = NSFloatingWindowLevel;
- } else if (q->windowType() == Qt::Dialog) {
- // Correct modality level (NSModalPanelWindowLevel) will be
- // set by cocoa when creating a modal session later.
- winLevel = NSNormalWindowLevel;
- }
-
- // StayOnTop window should appear above Tool windows.
- if (data.window_flags & Qt::WindowStaysOnTopHint)
- winLevel = NSPopUpMenuWindowLevel;
- // Tooltips should appear above StayOnTop windows.
- if (q->windowType() == Qt::ToolTip)
- winLevel = NSScreenSaverWindowLevel;
- // All other types are Normal level.
- if (winLevel == -1)
- winLevel = NSNormalWindowLevel;
- [qt_mac_window_for(q) setLevel:winLevel];
-}
-
-void QWidgetPrivate::finishCreateWindow_sys_Cocoa(void * /*NSWindow * */ voidWindowRef)
-{
- Q_Q(QWidget);
- QMacCocoaAutoReleasePool pool;
- NSWindow *windowRef = static_cast<NSWindow *>(voidWindowRef);
- const Qt::WindowType type = q->windowType();
- Qt::WindowFlags &flags = data.window_flags;
- QWidget *parentWidget = q->parentWidget();
-
- const bool popup = (type == Qt::Popup);
- const bool dialog = (type == Qt::Dialog
- || type == Qt::Sheet
- || type == Qt::Drawer
- || (flags & Qt::MSWindowsFixedSizeDialogHint));
- QTLWExtra *topExtra = topData();
-
- if ((popup || type == Qt::Tool || type == Qt::ToolTip) && !q->isModal()) {
- [windowRef setHidesOnDeactivate:YES];
- } else {
- [windowRef setHidesOnDeactivate:NO];
- }
- if (q->testAttribute(Qt::WA_MacNoShadow))
- [windowRef setHasShadow:NO];
- else
- [windowRef setHasShadow:YES];
- Q_UNUSED(parentWidget);
- Q_UNUSED(dialog);
-
- data.fstrut_dirty = true; // when we create a toplevel widget, the frame strut should be dirty
-
- OSViewRef nsview = (OSViewRef)data.winid;
- if (!nsview) {
- nsview = qt_mac_create_widget(q, this, 0);
- setWinId(WId(nsview));
- }
- [windowRef setContentView:nsview];
- [nsview setHidden:NO];
- transferChildren();
-
- // Tell Cocoa explicit that we wan't the view to receive key events
- // (regardless of focus policy) because this is how it works on other
- // platforms (and in the carbon port):
- [windowRef makeFirstResponder:nsview];
-
- if (topExtra->posFromMove) {
- updateFrameStrut();
-
- const QRect &fStrut = frameStrut();
- const QRect &crect = data.crect;
- const QRect frameRect(QPoint(crect.left(), crect.top()),
- QSize(fStrut.left() + fStrut.right() + crect.width(),
- fStrut.top() + fStrut.bottom() + crect.height()));
- NSRect cocoaFrameRect = NSMakeRect(frameRect.x(), flipYCoordinate(frameRect.bottom() + 1),
- frameRect.width(), frameRect.height());
- [windowRef setFrame:cocoaFrameRect display:NO];
- topExtra->posFromMove = false;
- }
-
- if (q->testAttribute(Qt::WA_WState_WindowOpacitySet)){
- q->setWindowOpacity(topExtra->opacity / 255.0f);
- } else if (qt_mac_is_macsheet(q)){
- CGFloat alpha = [qt_mac_window_for(q) alphaValue];
- if (alpha >= 1.0) {
- q->setWindowOpacity(0.95f);
- q->setAttribute(Qt::WA_WState_WindowOpacitySet, false);
- }
- } else{
- // If the window has been recreated after beeing e.g. a sheet,
- // make sure that we don't report a faulty opacity:
- q->setWindowOpacity(1.0f);
- q->setAttribute(Qt::WA_WState_WindowOpacitySet, false);
- }
-
- // Its more performant to handle the mouse cursor
- // ourselves, expecially when using alien widgets:
- [windowRef disableCursorRects];
-
- setWindowLevel();
- macUpdateHideOnSuspend();
- macUpdateOpaqueSizeGrip();
- macUpdateIgnoreMouseEvents();
- setWindowTitle_helper(extra->topextra->caption);
- setWindowIconText_helper(extra->topextra->iconText);
- setWindowModified_sys(q->isWindowModified());
- updateFrameStrut();
- syncCocoaMask();
- macUpdateIsOpaque();
- qt_mac_update_sizer(q);
- applyMaxAndMinSizeOnWindow();
-}
-
-
-/*
- Recreates widget window. Useful if immutable
- properties for it has changed.
- */
-void QWidgetPrivate::recreateMacWindow()
-{
- Q_Q(QWidget);
- OSViewRef myView = qt_mac_nativeview_for(q);
- OSWindowRef oldWindow = qt_mac_window_for(myView);
- QMacCocoaAutoReleasePool pool;
- [myView removeFromSuperview];
- determineWindowClass();
- createWindow_sys();
- if (NSToolbar *toolbar = [oldWindow toolbar]) {
- OSWindowRef newWindow = qt_mac_window_for(myView);
- [newWindow setToolbar:toolbar];
- [toolbar setVisible:[toolbar isVisible]];
- }
- if ([oldWindow isVisible]){
- if ([oldWindow isSheet])
- [NSApp endSheet:oldWindow];
- [oldWindow orderOut:oldWindow];
- show_sys();
- }
-
- // Release the window after creating the new window, because releasing it early
- // may cause the app to quit ("close on last window closed attribute")
- qt_mac_destructWindow(oldWindow);
-}
-
-void QWidgetPrivate::createWindow_sys()
-{
- Q_Q(QWidget);
- Qt::WindowFlags &flags = data.window_flags;
- QWidget *parentWidget = q->parentWidget();
-
- QTLWExtra *topExtra = topData();
- if (topExtra->embedded)
- return; // Simply return because this view "is" the top window.
- quint32 wattr = topExtra->wattr;
-
- if(parentWidget && (parentWidget->window()->windowFlags() & Qt::WindowStaysOnTopHint)) // If our parent has Qt::WStyle_StaysOnTop, so must we
- flags |= Qt::WindowStaysOnTopHint;
-
- data.fstrut_dirty = true;
-
- OSWindowRef windowRef = qt_mac_create_window(q, topExtra->wclass, wattr, data.crect);
- if (windowRef == 0)
- qWarning("QWidget: Internal error: %s:%d: If you reach this error please contact Qt Support and include the\n"
- " WidgetFlags used in creating the widget.", __FILE__, __LINE__);
- finishCreateWindow_sys_Cocoa(windowRef);
-}
-
-void QWidgetPrivate::create_sys(WId window, bool initializeWindow, bool destroyOldWindow)
-{
- Q_Q(QWidget);
- QMacCocoaAutoReleasePool pool;
-
- OSViewRef destroyid = 0;
-
- Qt::WindowType type = q->windowType();
- Qt::WindowFlags flags = data.window_flags;
- QWidget *parentWidget = q->parentWidget();
-
- bool topLevel = (flags & Qt::Window);
- bool popup = (type == Qt::Popup);
- bool dialog = (type == Qt::Dialog
- || type == Qt::Sheet
- || type == Qt::Drawer
- || (flags & Qt::MSWindowsFixedSizeDialogHint));
- bool desktop = (type == Qt::Desktop);
-
- // Determine this early for top-levels so, we can use it later.
- if (topLevel)
- determineWindowClass();
-
- if (desktop) {
- QSize desktopSize = qt_mac_desktopSize();
- q->setAttribute(Qt::WA_WState_Visible);
- data.crect.setRect(0, 0, desktopSize.width(), desktopSize.height());
- dialog = popup = false; // force these flags off
- } else {
- if (topLevel && (type != Qt::Drawer)) {
- if (QDesktopWidget *dsk = QApplication::desktop()) { // calc pos/size from screen
- const bool wasResized = q->testAttribute(Qt::WA_Resized);
- const bool wasMoved = q->testAttribute(Qt::WA_Moved);
- int deskn = dsk->primaryScreen();
- if (parentWidget && parentWidget->windowType() != Qt::Desktop)
- deskn = dsk->screenNumber(parentWidget);
- QRect screenGeo = dsk->screenGeometry(deskn);
- if (!wasResized) {
- NSRect newRect = [NSWindow frameRectForContentRect:NSMakeRect(0, 0,
- screenGeo.width() / 2.,
- 4 * screenGeo.height() / 10.)
- styleMask:topData()->wattr];
- data.crect.setSize(QSize(newRect.size.width, newRect.size.height));
- // Constrain to minimums and maximums we've set
- if (extra->minw > 0)
- data.crect.setWidth(qMax(extra->minw, data.crect.width()));
- if (extra->minh > 0)
- data.crect.setHeight(qMax(extra->minh, data.crect.height()));
- if (extra->maxw > 0)
- data.crect.setWidth(qMin(extra->maxw, data.crect.width()));
- if (extra->maxh > 0)
- data.crect.setHeight(qMin(extra->maxh, data.crect.height()));
- }
- if (!wasMoved && !q->testAttribute(Qt::WA_DontShowOnScreen))
- data.crect.moveTopLeft(QPoint(screenGeo.width()/4,
- 3 * screenGeo.height() / 10));
- }
- }
- }
-
-
- if(!window) // always initialize
- initializeWindow=true;
-
- hd = 0;
- if(window) { // override the old window (with a new NSView)
- OSViewRef nativeView = OSViewRef(window);
- OSViewRef parent = 0;
- [nativeView retain];
- if (destroyOldWindow)
- destroyid = qt_mac_nativeview_for(q);
- bool transfer = false;
- setWinId((WId)nativeView);
- if(topLevel) {
- for(int i = 0; i < 2; ++i) {
- if(i == 1) {
- if(!initializeWindow)
- break;
- createWindow_sys();
- }
- if(OSWindowRef windowref = qt_mac_window_for(nativeView)) {
- [windowref retain];
- if (initializeWindow) {
- parent = qt_mac_get_contentview_for(windowref);
- } else {
- parent = [nativeView superview];
- }
- break;
- }
- }
- if(!parent)
- transfer = true;
- } else if (parentWidget) {
- // I need to be added to my parent, therefore my parent needs an NSView
- // Alien note: a 'window' was supplied as argument, meaning this widget
- // is not alien. So therefore the parent cannot be alien either.
- parentWidget->createWinId();
- parent = qt_mac_nativeview_for(parentWidget);
- }
- if(parent != nativeView && parent) {
- [parent addSubview:nativeView];
- }
- if(transfer)
- transferChildren();
- data.fstrut_dirty = true; // we'll re calculate this later
- q->setAttribute(Qt::WA_WState_Visible,
- ![nativeView isHidden]
- );
- if(initializeWindow) {
- NSRect bounds = NSMakeRect(data.crect.x(), data.crect.y(), data.crect.width(), data.crect.height());
- [nativeView setFrame:bounds];
- q->setAttribute(Qt::WA_WState_Visible, [nativeView isHidden]);
- }
- } else if (desktop) { // desktop widget
- if (!qt_root_win)
- QWidgetPrivate::qt_create_root_win();
- Q_ASSERT(qt_root_win);
- WId rootWinID = 0;
- [qt_root_win retain];
- if (OSViewRef rootContentView = [qt_root_win contentView]) {
- rootWinID = (WId)rootContentView;
- [rootContentView retain];
- }
- setWinId(rootWinID);
- } else if (topLevel) {
- determineWindowClass();
- if(OSViewRef osview = qt_mac_create_widget(q, this, 0)) {
- NSRect bounds = NSMakeRect(data.crect.x(), flipYCoordinate(data.crect.y()),
- data.crect.width(), data.crect.height());
- [osview setFrame:bounds];
- setWinId((WId)osview);
- }
- } else {
- data.fstrut_dirty = false; // non-toplevel widgets don't have a frame, so no need to update the strut
-
- if (q->testAttribute(Qt::WA_NativeWindow) == false || q->internalWinId() != 0) {
- // INVARIANT: q is Alien, and we should not create an NSView to back it up.
- } else
- if (OSViewRef osview = qt_mac_create_widget(q, this, qt_mac_nativeview_for(parentWidget))) {
- NSRect bounds = NSMakeRect(data.crect.x(), data.crect.y(), data.crect.width(), data.crect.height());
- [osview setFrame:bounds];
- setWinId((WId)osview);
- if (q->isVisible()) {
- // If q were Alien before, but now became native (e.g. if a call to
- // winId was done from somewhere), we need to show the view immidiatly:
- QMacCocoaAutoReleasePool pool;
- [osview setHidden:NO];
- }
- }
- }
-
- updateIsOpaque();
-
- if (q->testAttribute(Qt::WA_DropSiteRegistered))
- registerDropSite(true);
- if (q->hasFocus())
- setFocus_sys();
- if (!topLevel && initializeWindow)
- setWSGeometry();
- if (destroyid)
- qt_mac_destructView(destroyid);
-}
-
-/*!
- Returns the QuickDraw handle of the widget. Use of this function is not
- portable. This function will return 0 if QuickDraw is not supported, or
- if the handle could not be created.
-
- \warning This function is only available on Mac OS X.
-*/
-
-Qt::HANDLE
-QWidget::macQDHandle() const
-{
- return 0;
-}
-
-/*!
- Returns the CoreGraphics handle of the widget. Use of this function is
- not portable. This function will return 0 if no painter context can be
- established, or if the handle could not be created.
-
- \warning This function is only available on Mac OS X.
-*/
-Qt::HANDLE
-QWidget::macCGHandle() const
-{
- return handle();
-}
-
-void qt_mac_updateParentUnderAlienWidget(QWidget *alienWidget)
-{
- QWidget *nativeParent = alienWidget->nativeParentWidget();
- if (!nativeParent)
- return;
-
- QPoint globalPos = alienWidget->mapToGlobal(QPoint(0, 0));
- QRect dirtyRect = QRect(nativeParent->mapFromGlobal(globalPos), alienWidget->size());
- nativeParent->update(dirtyRect);
-}
-
-void QWidget::destroy(bool destroyWindow, bool destroySubWindows)
-{
- Q_D(QWidget);
- QMacCocoaAutoReleasePool pool;
- d->aboutToDestroy();
- if (!isWindow() && parentWidget())
- parentWidget()->d_func()->invalidateBuffer(d->effectiveRectFor(geometry()));
- if (!internalWinId())
- qt_mac_updateParentUnderAlienWidget(this);
- d->deactivateWidgetCleanup();
- qt_mac_event_release(this);
- if(testAttribute(Qt::WA_WState_Created)) {
- setAttribute(Qt::WA_WState_Created, false);
- QObjectList chldrn = children();
- for(int i = 0; i < chldrn.size(); i++) { // destroy all widget children
- QObject *obj = chldrn.at(i);
- if(obj->isWidgetType())
- static_cast<QWidget*>(obj)->destroy(destroySubWindows, destroySubWindows);
- }
- if(mac_mouse_grabber == this)
- releaseMouse();
- if(mac_keyboard_grabber == this)
- releaseKeyboard();
-
- if(testAttribute(Qt::WA_ShowModal)) // just be sure we leave modal
- QApplicationPrivate::leaveModal(this);
- else if((windowType() == Qt::Popup))
- qApp->d_func()->closePopup(this);
- if (destroyWindow) {
- if(OSViewRef hiview = qt_mac_nativeview_for(this)) {
- OSWindowRef window = 0;
- NSDrawer *drawer = nil;
- if (qt_mac_is_macdrawer(this)) {
- drawer = qt_mac_drawer_for(this);
- } else
- if (isWindow())
- window = qt_mac_window_for(hiview);
-
- // Because of how "destruct" works, we have to do just a normal release for the root_win.
- if (window && window == qt_root_win) {
- [hiview release];
- } else {
- qt_mac_destructView(hiview);
- }
- if (drawer)
- qt_mac_destructDrawer(drawer);
- if (window)
- qt_mac_destructWindow(window);
- }
- }
- QT_TRY {
- d->setWinId(0);
- } QT_CATCH (const std::bad_alloc &) {
- // swallow - destructors must not throw
- }
- }
-}
-
-void QWidgetPrivate::transferChildren()
-{
- Q_Q(QWidget);
- if (!q->internalWinId())
- return; // Can't add any views anyway
-
- QObjectList chlist = q->children();
- for (int i = 0; i < chlist.size(); ++i) {
- QObject *obj = chlist.at(i);
- if (obj->isWidgetType()) {
- QWidget *w = (QWidget *)obj;
- if (!w->isWindow()) {
- // This seems weird, no need to call it in a loop right?
- if (!topData()->caption.isEmpty())
- setWindowTitle_helper(extra->topextra->caption);
- if (w->internalWinId()) {
- // New NSWindows get an extra reference when drops are
- // registered (at least in 10.5) which means that we may
- // access the window later and get a crash (becasue our
- // widget is dead). Work around this be having the drop
- // site disabled until it is part of the new hierarchy.
- bool oldRegistered = w->testAttribute(Qt::WA_DropSiteRegistered);
- w->setAttribute(Qt::WA_DropSiteRegistered, false);
- [qt_mac_nativeview_for(w) retain];
- [qt_mac_nativeview_for(w) removeFromSuperview];
- [qt_mac_nativeview_for(q) addSubview:qt_mac_nativeview_for(w)];
- [qt_mac_nativeview_for(w) release];
- w->setAttribute(Qt::WA_DropSiteRegistered, oldRegistered);
- }
- }
- }
- }
-}
-
-void QWidgetPrivate::setSubWindowStacking(bool set)
-{
- // After hitting too many unforeseen bugs trying to put Qt on top of the cocoa child
- // window API, we have decided to revert this behaviour as much as we can. We
- // therefore now only allow child windows to exist for children of modal dialogs.
- static bool use_behaviour_qt473 = !qgetenv("QT_MAC_USE_CHILDWINDOWS").isEmpty();
-
- // This will set/remove a visual relationship between parent and child on screen.
- // The reason for doing this is to ensure that a child always stacks infront of
- // its parent. Unfortunatly is turns out that [NSWindow addChildWindow] has
- // several unwanted side-effects, one of them being the moving of a child when
- // moving the parent, which we choose to accept. A way tougher side-effect is
- // that Cocoa will hide the parent if you hide the child. And in the case of
- // a tool window, since it will normally hide when you deactivate the
- // application, Cocoa will hide the parent upon deactivate as well. The result often
- // being no more visible windows on screen. So, to make a long story short, we only
- // allow parent-child relationships between windows that both are either a plain window
- // or a dialog.
-
- Q_Q(QWidget);
- if (!q->isWindow())
- return;
- NSWindow *qwin = [qt_mac_nativeview_for(q) window];
- if (!qwin)
- return;
- Qt::WindowType qtype = q->windowType();
- if (set && !(qtype == Qt::Window || qtype == Qt::Dialog))
- return;
- if (set && ![qwin isVisible])
- return;
-
- if (QWidget *parent = q->parentWidget()) {
- if (NSWindow *pwin = [qt_mac_nativeview_for(parent) window]) {
- if (set) {
- Qt::WindowType ptype = parent->window()->windowType();
- if ([pwin isVisible]
- && (ptype == Qt::Window || ptype == Qt::Dialog)
- && ![qwin parentWindow]
- && (use_behaviour_qt473 || parent->windowModality() == Qt::ApplicationModal)) {
- NSInteger level = [qwin level];
- [pwin addChildWindow:qwin ordered:NSWindowAbove];
- if ([qwin level] < level)
- [qwin setLevel:level];
- }
- } else {
- [pwin removeChildWindow:qwin];
- }
- }
- }
-
- // Only set-up child windows for q if q is modal:
- if (set && !use_behaviour_qt473 && q->windowModality() != Qt::ApplicationModal)
- return;
-
- QObjectList widgets = q->children();
- for (int i=0; i<widgets.size(); ++i) {
- QWidget *child = qobject_cast<QWidget *>(widgets.at(i));
- if (child && child->isWindow()) {
- if (NSWindow *cwin = [qt_mac_nativeview_for(child) window]) {
- if (set) {
- Qt::WindowType ctype = child->window()->windowType();
- if ([cwin isVisible] && (ctype == Qt::Window || ctype == Qt::Dialog) && ![cwin parentWindow]) {
- NSInteger level = [cwin level];
- [qwin addChildWindow:cwin ordered:NSWindowAbove];
- if ([cwin level] < level)
- [cwin setLevel:level];
- }
- } else {
- [qwin removeChildWindow:qt_mac_window_for(child)];
- }
- }
- }
- }
-}
-
-void QWidgetPrivate::setParent_sys(QWidget *parent, Qt::WindowFlags f)
-{
- Q_Q(QWidget);
- QMacCocoaAutoReleasePool pool;
- QTLWExtra *topData = maybeTopData();
- bool wasCreated = q->testAttribute(Qt::WA_WState_Created);
- bool wasWindow = q->isWindow();
- OSViewRef old_id = 0;
-
- if (q->isVisible() && q->parentWidget() && parent != q->parentWidget())
- q->parentWidget()->d_func()->invalidateBuffer(effectiveRectFor(q->geometry()));
-
- // Maintain the glWidgets list on parent change: remove "our" gl widgets
- // from the list on the old parent and grandparents.
- if (glWidgets.isEmpty() == false) {
- QWidget *current = q->parentWidget();
- while (current) {
- for (QList<QWidgetPrivate::GlWidgetInfo>::const_iterator it = glWidgets.constBegin();
- it != glWidgets.constEnd(); ++it)
- current->d_func()->glWidgets.removeAll(*it);
-
- if (current->isWindow())
- break;
- current = current->parentWidget();
- }
- }
-
- bool oldToolbarVisible = false;
- NSDrawer *oldDrawer = nil;
- NSToolbar *oldToolbar = 0;
- if (wasCreated && !(q->windowType() == Qt::Desktop)) {
- old_id = qt_mac_nativeview_for(q);
- if (qt_mac_is_macdrawer(q)) {
- oldDrawer = qt_mac_drawer_for(q);
- }
- if (wasWindow) {
- OSWindowRef oldWindow = qt_mac_window_for(old_id);
- oldToolbar = [oldWindow toolbar];
- if (oldToolbar) {
- [oldToolbar retain];
- oldToolbarVisible = [oldToolbar isVisible];
- [oldWindow setToolbar:nil];
- }
- }
- }
- QWidget* oldtlw = q->window();
-
- if (q->testAttribute(Qt::WA_DropSiteRegistered))
- q->setAttribute(Qt::WA_DropSiteRegistered, false);
-
- //recreate and setup flags
- QObjectPrivate::setParent_helper(parent);
- bool explicitlyHidden = q->testAttribute(Qt::WA_WState_Hidden) && q->testAttribute(Qt::WA_WState_ExplicitShowHide);
- if (wasCreated && !qt_isGenuineQWidget(q))
- return;
-
- if (!q->testAttribute(Qt::WA_WState_WindowOpacitySet)) {
- q->setWindowOpacity(1.0f);
- q->setAttribute(Qt::WA_WState_WindowOpacitySet, false);
- }
-
- setWinId(0); //do after the above because they may want the id
-
- data.window_flags = f;
- q->setAttribute(Qt::WA_WState_Created, false);
- q->setAttribute(Qt::WA_WState_Visible, false);
- q->setAttribute(Qt::WA_WState_Hidden, false);
- adjustFlags(data.window_flags, q);
- // keep compatibility with previous versions, we need to preserve the created state.
- // (but we recreate the winId for the widget being reparented, again for compatibility,
- // unless this is an alien widget. )
- const bool nonWindowWithCreatedParent = !q->isWindow() && parent->testAttribute(Qt::WA_WState_Created);
- const bool nativeWidget = q->internalWinId() != 0;
- if (wasCreated || (nativeWidget && nonWindowWithCreatedParent)) {
- createWinId();
- if (q->isWindow()) {
- // Simply transfer our toolbar over. Everything should stay put, unlike in Carbon.
- if (oldToolbar && !(f & Qt::FramelessWindowHint)) {
- OSWindowRef newWindow = qt_mac_window_for(q);
- [newWindow setToolbar:oldToolbar];
- [oldToolbar release];
- [oldToolbar setVisible:oldToolbarVisible];
- }
- }
- }
- if (q->isWindow() || (!parent || parent->isVisible()) || explicitlyHidden)
- q->setAttribute(Qt::WA_WState_Hidden);
- q->setAttribute(Qt::WA_WState_ExplicitShowHide, explicitlyHidden);
-
- if (wasCreated) {
- transferChildren();
-
- if (topData &&
- (!topData->caption.isEmpty() || !topData->filePath.isEmpty()))
- setWindowTitle_helper(q->windowTitle());
- }
-
- if (q->testAttribute(Qt::WA_AcceptDrops)
- || (!q->isWindow() && q->parentWidget()
- && q->parentWidget()->testAttribute(Qt::WA_DropSiteRegistered)))
- q->setAttribute(Qt::WA_DropSiteRegistered, true);
-
- //cleanup
- if (old_id) { //don't need old window anymore
- OSWindowRef window = (oldtlw == q) ? qt_mac_window_for(old_id) : 0;
- qt_mac_destructView(old_id);
-
- if (oldDrawer) {
- qt_mac_destructDrawer(oldDrawer);
- } else
- if (window)
- qt_mac_destructWindow(window);
- }
-
- // Maintain the glWidgets list on parent change: add "our" gl widgets
- // to the list on the new parent and grandparents.
- if (glWidgets.isEmpty() == false) {
- QWidget *current = q->parentWidget();
- while (current) {
- current->d_func()->glWidgets += glWidgets;
- if (current->isWindow())
- break;
- current = current->parentWidget();
- }
- }
- invalidateBuffer(q->rect());
- qt_event_request_window_change(q);
-}
-
-QPoint QWidget::mapToGlobal(const QPoint &pos) const
-{
- Q_D(const QWidget);
- if (!internalWinId()) {
- QPoint p = pos + data->crect.topLeft();
- return isWindow() ? p : parentWidget()->mapToGlobal(p);
- }
- QPoint tmp = d->mapToWS(pos);
- NSPoint hi_pos = NSMakePoint(tmp.x(), tmp.y());
- hi_pos = [qt_mac_nativeview_for(this) convertPoint:hi_pos toView:nil];
- NSRect win_rect = [qt_mac_window_for(this) frame];
- hi_pos.x += win_rect.origin.x;
- hi_pos.y += win_rect.origin.y;
- // If we aren't the desktop we need to flip, if you flip the desktop on itself, you get the other problem.
- return ((window()->windowFlags() & Qt::Desktop) == Qt::Desktop) ? QPointF(hi_pos.x, hi_pos.y).toPoint()
- : flipPoint(hi_pos).toPoint();
-}
-
-QPoint QWidget::mapFromGlobal(const QPoint &pos) const
-{
- Q_D(const QWidget);
- if (!internalWinId()) {
- QPoint p = isWindow() ? pos : parentWidget()->mapFromGlobal(pos);
- return p - data->crect.topLeft();
- }
- NSRect win_rect = [qt_mac_window_for(this) frame];
- // The Window point is in "Cocoa coordinates," but the view is in "Qt coordinates"
- // so make sure to keep them in sync.
- NSPoint hi_pos = NSMakePoint(pos.x()-win_rect.origin.x,
- flipYCoordinate(pos.y())-win_rect.origin.y);
- hi_pos = [qt_mac_nativeview_for(this) convertPoint:hi_pos fromView:0];
- return d->mapFromWS(QPoint(qRound(hi_pos.x), qRound(hi_pos.y)));
-}
-
-void QWidgetPrivate::updateSystemBackground()
-{
-}
-
-void QWidgetPrivate::setCursor_sys(const QCursor &)
-{
- qt_mac_update_cursor();
-}
-
-void QWidgetPrivate::unsetCursor_sys()
-{
- qt_mac_update_cursor();
-}
-
-void QWidgetPrivate::setWindowTitle_sys(const QString &caption)
-{
- Q_Q(QWidget);
- if (q->isWindow()) {
- QMacCocoaAutoReleasePool pool;
- [qt_mac_window_for(q) setTitle:qt_mac_QStringToNSString(caption)];
- }
-}
-
-void QWidgetPrivate::setWindowModified_sys(bool mod)
-{
- Q_Q(QWidget);
- if (q->isWindow() && q->testAttribute(Qt::WA_WState_Created)) {
- [qt_mac_window_for(q) setDocumentEdited:mod];
- }
-}
-
-void QWidgetPrivate::setWindowFilePath_sys(const QString &filePath)
-{
- Q_Q(QWidget);
- QMacCocoaAutoReleasePool pool;
- QFileInfo fi(filePath);
- [qt_mac_window_for(q) setRepresentedFilename:fi.exists() ? qt_mac_QStringToNSString(filePath) : @""];
-}
-
-void QWidgetPrivate::setWindowIcon_sys(bool forceReset)
-{
- Q_Q(QWidget);
-
- if (!q->testAttribute(Qt::WA_WState_Created))
- return;
-
- QTLWExtra *topData = this->topData();
- if (topData->iconPixmap && !forceReset) // already set
- return;
-
- QIcon icon = q->windowIcon();
- QPixmap *pm = 0;
- if (!icon.isNull()) {
- // now create the extra
- if (!topData->iconPixmap) {
- pm = new QPixmap(icon.pixmap(QSize(22, 22)));
- topData->iconPixmap = pm;
- } else {
- pm = topData->iconPixmap;
- }
- }
- if (q->isWindow()) {
- QMacCocoaAutoReleasePool pool;
- if (icon.isNull())
- return;
- NSButton *iconButton = [qt_mac_window_for(q) standardWindowButton:NSWindowDocumentIconButton];
- if (iconButton == nil) {
- QCFString string(q->windowTitle());
- const NSString *tmpString = reinterpret_cast<const NSString *>((CFStringRef)string);
- [qt_mac_window_for(q) setRepresentedURL:[NSURL fileURLWithPath:const_cast<NSString *>(tmpString)]];
- iconButton = [qt_mac_window_for(q) standardWindowButton:NSWindowDocumentIconButton];
- }
- if (icon.isNull()) {
- [iconButton setImage:nil];
- } else {
- QPixmap scaled = pm->scaled(QSize(16,16), Qt::KeepAspectRatio, Qt::SmoothTransformation);
- NSImage *image = static_cast<NSImage *>(qt_mac_create_nsimage(scaled));
- [iconButton setImage:image];
- [image release];
- }
- }
-}
-
-void QWidgetPrivate::setWindowIconText_sys(const QString &iconText)
-{
- Q_Q(QWidget);
- if(q->isWindow() && !iconText.isEmpty()) {
- QMacCocoaAutoReleasePool pool;
- [qt_mac_window_for(q) setMiniwindowTitle:qt_mac_QStringToNSString(iconText)];
- }
-}
-
-void QWidget::grabMouse()
-{
- if(isVisible() && !qt_nograb()) {
- if(mac_mouse_grabber)
- mac_mouse_grabber->releaseMouse();
- mac_mouse_grabber=this;
- qt_mac_setMouseGrabCursor(true);
- }
-}
-
-#ifndef QT_NO_CURSOR
-void QWidget::grabMouse(const QCursor &cursor)
-{
- if(isVisible() && !qt_nograb()) {
- if(mac_mouse_grabber)
- mac_mouse_grabber->releaseMouse();
- mac_mouse_grabber=this;
- qt_mac_setMouseGrabCursor(true, const_cast<QCursor *>(&cursor));
- }
-}
-#endif
-
-void QWidget::releaseMouse()
-{
- if(!qt_nograb() && mac_mouse_grabber == this) {
- mac_mouse_grabber = 0;
- qt_mac_setMouseGrabCursor(false);
- }
-}
-
-void QWidget::grabKeyboard()
-{
- if(!qt_nograb()) {
- if(mac_keyboard_grabber)
- mac_keyboard_grabber->releaseKeyboard();
- mac_keyboard_grabber = this;
- }
-}
-
-void QWidget::releaseKeyboard()
-{
- if(!qt_nograb() && mac_keyboard_grabber == this)
- mac_keyboard_grabber = 0;
-}
-
-QWidget *QWidget::mouseGrabber()
-{
- return mac_mouse_grabber;
-}
-
-QWidget *QWidget::keyboardGrabber()
-{
- return mac_keyboard_grabber;
-}
-
-void QWidget::activateWindow()
-{
- QWidget *tlw = window();
- if(!tlw->isVisible() || !tlw->isWindow() || (tlw->windowType() == Qt::Desktop))
- return;
- qt_event_remove_activate();
-
- QWidget *fullScreenWidget = tlw;
- QWidget *parentW = tlw;
- // Find the oldest parent or the parent with fullscreen, whichever comes first.
- while (parentW) {
- fullScreenWidget = parentW->window();
- if (fullScreenWidget->windowState() & Qt::WindowFullScreen)
- break;
- parentW = fullScreenWidget->parentWidget();
- }
-
- if (fullScreenWidget->windowType() != Qt::ToolTip) {
- qt_mac_set_fullscreen_mode((fullScreenWidget->windowState() & Qt::WindowFullScreen) &&
- qApp->desktop()->screenNumber(this) == 0);
- }
-
- bool windowActive;
- OSWindowRef win = qt_mac_window_for(tlw);
- QMacCocoaAutoReleasePool pool;
- windowActive = [win isKeyWindow];
- if ((tlw->windowType() == Qt::Popup)
- || (tlw->windowType() == Qt::Tool)
- || qt_mac_is_macdrawer(tlw)
- || windowActive) {
- [win makeKeyWindow];
- } else if(!isMinimized()) {
- [win makeKeyAndOrderFront:win];
- }
-}
-
-QWindowSurface *QWidgetPrivate::createDefaultWindowSurface_sys()
-{
- return new QMacWindowSurface(q_func());
-}
-
-void QWidgetPrivate::update_sys(const QRect &r)
-{
- Q_Q(QWidget);
- if (updateRedirectedToGraphicsProxyWidget(q, r))
- return;
- dirtyOnWidget += r;
- macSetNeedsDisplay(r != q->rect() ? r : QRegion());
-}
-
-void QWidgetPrivate::update_sys(const QRegion &rgn)
-{
- Q_Q(QWidget);
- if (updateRedirectedToGraphicsProxyWidget(q, rgn))
- return;
- dirtyOnWidget += rgn;
- macSetNeedsDisplay(rgn);
-}
-
-bool QWidgetPrivate::isRealWindow() const
-{
- return q_func()->isWindow() && !topData()->embedded;
-}
-
-void QWidgetPrivate::show_sys()
-{
- Q_Q(QWidget);
- if ((q->windowType() == Qt::Desktop)) //desktop is always visible
- return;
-
- invalidateBuffer(q->rect());
- if (q->testAttribute(Qt::WA_OutsideWSRange))
- return;
- QMacCocoaAutoReleasePool pool;
- q->setAttribute(Qt::WA_Mapped);
- if (q->testAttribute(Qt::WA_DontShowOnScreen))
- return;
-
- bool realWindow = isRealWindow();
-
- data.fstrut_dirty = true;
- if (realWindow) {
- bool isCurrentlyMinimized = (q->windowState() & Qt::WindowMinimized);
- setModal_sys();
- OSWindowRef window = qt_mac_window_for(q);
-
- // Make sure that we end up sending a repaint event to
- // the widget if the window has been visible one before:
- [qt_mac_get_contentview_for(window) setNeedsDisplay:YES];
- if(qt_mac_is_macsheet(q)) {
- qt_event_request_showsheet(q);
- } else if(qt_mac_is_macdrawer(q)) {
- NSDrawer *drawer = qt_mac_drawer_for(q);
- [drawer openOnEdge:[drawer preferredEdge]];
- } else {
- // sync the opacity value back (in case of a fade).
- [window setAlphaValue:q->windowOpacity()];
-
- QWidget *top = 0;
- if (QApplicationPrivate::tryModalHelper(q, &top)) {
- [window makeKeyAndOrderFront:window];
- // If this window is app modal, we need to start spinning
- // a modal session for it. Interrupting
- // the event dispatcher will make this happend:
- if (data.window_modality == Qt::ApplicationModal)
- QEventDispatcherMac::instance()->interrupt();
- } else {
- // The window is modally shaddowed, so we need to make
- // sure that we don't pop in front of the modal window:
- [window orderFront:window];
- if (!top->testAttribute(Qt::WA_DontShowOnScreen)) {
- if (NSWindow *modalWin = qt_mac_window_for(top))
- [modalWin orderFront:window];
- }
- }
- setSubWindowStacking(true);
- qt_mac_update_cursor();
- if (q->windowType() == Qt::Popup) {
- qt_button_down = 0;
- if (q->focusWidget())
- q->focusWidget()->d_func()->setFocus_sys();
- else
- setFocus_sys();
- }
- toggleDrawers(true);
- }
- if (isCurrentlyMinimized) { //show in collapsed state
- [window miniaturize:window];
- } else if (!q->testAttribute(Qt::WA_ShowWithoutActivating)) {
- }
- } else if(topData()->embedded || !q->parentWidget() || q->parentWidget()->isVisible()) {
- if (NSView *view = qt_mac_nativeview_for(q)) {
- // INVARIANT: q is native. Just show the view:
- [view setHidden:NO];
- } else {
- // INVARIANT: q is alien. Update q instead:
- q->update();
- }
- }
-
- if ([NSApp isActive] && !qt_button_down && !QWidget::mouseGrabber()){
- // Update enter/leave immidiatly, don't wait for a move event. But only
- // if no grab exists (even if the grab points to this widget, it seems, ref X11)
- QPoint qlocal, qglobal;
- QWidget *widgetUnderMouse = 0;
- qt_mac_getTargetForMouseEvent(0, QEvent::Enter, qlocal, qglobal, 0, &widgetUnderMouse);
- QApplicationPrivate::dispatchEnterLeave(widgetUnderMouse, qt_last_mouse_receiver);
- qt_last_mouse_receiver = widgetUnderMouse;
- qt_last_native_mouse_receiver = widgetUnderMouse ?
- (widgetUnderMouse->internalWinId() ? widgetUnderMouse : widgetUnderMouse->nativeParentWidget()) : 0;
- }
-
- topLevelAt_cache = 0;
- qt_event_request_window_change(q);
-}
-
-QPoint qt_mac_nativeMapFromParent(const QWidget *child, const QPoint &pt)
-{
- NSPoint nativePoint = [qt_mac_nativeview_for(child) convertPoint:NSMakePoint(pt.x(), pt.y()) fromView:qt_mac_nativeview_for(child->parentWidget())];
- return QPoint(nativePoint.x, nativePoint.y);
-}
-
-
-void QWidgetPrivate::hide_sys()
-{
- Q_Q(QWidget);
- if((q->windowType() == Qt::Desktop)) //you can't hide the desktop!
- return;
- QMacCocoaAutoReleasePool pool;
- if(q->isWindow()) {
- setSubWindowStacking(false);
- OSWindowRef window = qt_mac_window_for(q);
- if(qt_mac_is_macsheet(q)) {
- [NSApp endSheet:window];
- [window orderOut:window];
- } else if(qt_mac_is_macdrawer(q)) {
- [qt_mac_drawer_for(q) close];
- } else {
- [window orderOut:window];
- // Unfortunately it is not as easy as just hiding the window, we need
- // to find out if we were in full screen mode. If we were and this is
- // the last window in full screen mode then we need to unset the full screen
- // mode. If this is not the last visible window in full screen mode then we
- // don't change the full screen mode.
- if(q->isFullScreen())
- {
- bool keepFullScreen = false;
- QWidgetList windowList = qApp->topLevelWidgets();
- int windowCount = windowList.count();
- for(int i = 0; i < windowCount; i++)
- {
- QWidget *w = windowList[i];
- // If it is the same window, we don't need to check :-)
- if(q == w)
- continue;
- // If they are not visible or if they are minimized then
- // we just ignore them.
- if(!w->isVisible() || w->isMinimized())
- continue;
- // Is it full screen?
- // Notice that if there is one window in full screen mode then we
- // cannot switch the full screen mode off, therefore we just abort.
- if(w->isFullScreen()) {
- keepFullScreen = true;
- break;
- }
- }
- // No windows in full screen mode, so let just unset that flag.
- if(!keepFullScreen)
- qt_mac_set_fullscreen_mode(false);
- }
- toggleDrawers(false);
- qt_mac_update_cursor();
- }
- } else {
- invalidateBuffer(q->rect());
- if (NSView *view = qt_mac_nativeview_for(q)) {
- // INVARIANT: q is native. Just hide the view:
- [view setHidden:YES];
- } else {
- // INVARIANT: q is alien. Repaint where q is placed instead:
- qt_mac_updateParentUnderAlienWidget(q);
- }
- }
-
- if ([NSApp isActive] && !qt_button_down && !QWidget::mouseGrabber()){
- // Update enter/leave immidiatly, don't wait for a move event. But only
- // if no grab exists (even if the grab points to this widget, it seems, ref X11)
- QPoint qlocal, qglobal;
- QWidget *widgetUnderMouse = 0;
- qt_mac_getTargetForMouseEvent(0, QEvent::Leave, qlocal, qglobal, 0, &widgetUnderMouse);
- QApplicationPrivate::dispatchEnterLeave(widgetUnderMouse, qt_last_native_mouse_receiver);
- qt_last_mouse_receiver = widgetUnderMouse;
- qt_last_native_mouse_receiver = widgetUnderMouse ?
- (widgetUnderMouse->internalWinId() ? widgetUnderMouse : widgetUnderMouse->nativeParentWidget()) : 0;
- }
-
- topLevelAt_cache = 0;
- qt_event_request_window_change(q);
- deactivateWidgetCleanup();
- qt_mac_event_release(q);
-}
-
-void QWidget::setWindowState(Qt::WindowStates newstate)
-{
- Q_D(QWidget);
- bool needShow = false;
- Qt::WindowStates oldstate = windowState();
- if (oldstate == newstate)
- return;
-
- QMacCocoaAutoReleasePool pool;
- bool needSendStateChange = true;
- if(isWindow()) {
- if((oldstate & Qt::WindowFullScreen) != (newstate & Qt::WindowFullScreen)) {
- if(newstate & Qt::WindowFullScreen) {
- if(QTLWExtra *tlextra = d->topData()) {
- if(tlextra->normalGeometry.width() < 0) {
- if(!testAttribute(Qt::WA_Resized))
- adjustSize();
- tlextra->normalGeometry = geometry();
- }
- tlextra->savedFlags = windowFlags();
- }
- needShow = isVisible();
- const QRect fullscreen(qApp->desktop()->screenGeometry(qApp->desktop()->screenNumber(this)));
- setParent(parentWidget(), Qt::Window | Qt::FramelessWindowHint | (windowFlags() & 0xffff0000)); //save
- setGeometry(fullscreen);
- if(!qApp->desktop()->screenNumber(this))
- qt_mac_set_fullscreen_mode(true);
- } else {
- needShow = isVisible();
- if(!qApp->desktop()->screenNumber(this))
- qt_mac_set_fullscreen_mode(false);
- setParent(parentWidget(), d->topData()->savedFlags);
- setGeometry(d->topData()->normalGeometry);
- d->topData()->normalGeometry.setRect(0, 0, -1, -1);
- }
- }
-
- d->createWinId();
-
- OSWindowRef window = qt_mac_window_for(this);
- if((oldstate & Qt::WindowMinimized) != (newstate & Qt::WindowMinimized)) {
- if (newstate & Qt::WindowMinimized) {
- [window miniaturize:window];
- } else {
- [window deminiaturize:window];
- }
- needSendStateChange = oldstate == windowState(); // Collapse didn't change our flags.
- }
-
- if((newstate & Qt::WindowMaximized) && !((newstate & Qt::WindowFullScreen))) {
- if(QTLWExtra *tlextra = d->topData()) {
- if(tlextra->normalGeometry.width() < 0) {
- if(!testAttribute(Qt::WA_Resized))
- adjustSize();
- tlextra->normalGeometry = geometry();
- }
- }
- } else if(!(newstate & Qt::WindowFullScreen)) {
-// d->topData()->normalGeometry = QRect(0, 0, -1, -1);
- }
-
-#ifdef DEBUG_WINDOW_STATE
-#define WSTATE(x) qDebug("%s -- %s --> %s", #x, (oldstate & x) ? "true" : "false", (newstate & x) ? "true" : "false")
- WSTATE(Qt::WindowMinimized);
- WSTATE(Qt::WindowMaximized);
- WSTATE(Qt::WindowFullScreen);
-#undef WSTATE
-#endif
- if(!(newstate & (Qt::WindowMinimized|Qt::WindowFullScreen)) &&
- ((oldstate & Qt::WindowFullScreen) || (oldstate & Qt::WindowMinimized) ||
- (oldstate & Qt::WindowMaximized) != (newstate & Qt::WindowMaximized))) {
- if(newstate & Qt::WindowMaximized) {
- data->fstrut_dirty = true;
- NSToolbar *toolbarRef = [window toolbar];
- if (toolbarRef && !isVisible() && ![toolbarRef isVisible]) {
- // HIToolbar, needs to be shown so that it's in the structure window
- // Typically this is part of a main window and will get shown
- // during the show, but it's will make the maximize all wrong.
- // ### Not sure this is right for NSToolbar...
- [toolbarRef setVisible:true];
-// ShowHideWindowToolbar(window, true, false);
- d->updateFrameStrut(); // In theory the dirty would work, but it's optimized out if the window is not visible :(
- }
- // Everything should be handled by Cocoa.
- [window zoom:window];
- needSendStateChange = oldstate == windowState(); // Zoom didn't change flags.
- } else if(oldstate & Qt::WindowMaximized && !(oldstate & Qt::WindowFullScreen)) {
- [window zoom:window];
- if(QTLWExtra *tlextra = d->topData()) {
- setGeometry(tlextra->normalGeometry);
- tlextra->normalGeometry.setRect(0, 0, -1, -1);
- }
- }
- }
- }
-
- data->window_state = newstate;
-
- if(needShow)
- show();
-
- if(newstate & Qt::WindowActive)
- activateWindow();
-
- qt_event_request_window_change(this);
- if (needSendStateChange) {
- QWindowStateChangeEvent e(oldstate);
- QApplication::sendEvent(this, &e);
- }
-}
-
-void QWidgetPrivate::setFocus_sys()
-{
- Q_Q(QWidget);
- if (q->testAttribute(Qt::WA_WState_Created)) {
- QMacCocoaAutoReleasePool pool;
- NSView *view = qt_mac_nativeview_for(q);
- [[view window] makeFirstResponder:view];
- }
-}
-
-NSComparisonResult compareViews2Raise(id view1, id view2, void *context)
-{
- id topView = reinterpret_cast<id>(context);
- if (view1 == topView)
- return NSOrderedDescending;
- if (view2 == topView)
- return NSOrderedAscending;
- return NSOrderedSame;
-}
-
-void QWidgetPrivate::raise_sys()
-{
- Q_Q(QWidget);
- if((q->windowType() == Qt::Desktop))
- return;
-
- QMacCocoaAutoReleasePool pool;
- if (isRealWindow()) {
- // With the introduction of spaces it is not as simple as just raising the window.
- // First we need to check if we are in the right space. If we are, then we just continue
- // as usual. The problem comes when we are not in the active space. There are two main cases:
- // 1. Our parent was moved to a new space. In this case we want the window to be raised
- // in the same space as its parent.
- // 2. We don't have a parent. For this case we will just raise the window and let Cocoa
- // switch to the corresponding space.
- // NOTICE: There are a lot of corner cases here. We are keeping this simple for now, if
- // required we will introduce special handling for some of them.
- if (!q->testAttribute(Qt::WA_DontShowOnScreen) && q->isVisible()) {
- OSWindowRef window = qt_mac_window_for(q);
- // isOnActiveSpace is available only from 10.6 onwards, so we need to check if it is
- // available before calling it.
- if([window respondsToSelector:@selector(isOnActiveSpace)]) {
- if(![window performSelector:@selector(isOnActiveSpace)]) {
- QWidget *parentWidget = q->parentWidget();
- if(parentWidget) {
- OSWindowRef parentWindow = qt_mac_window_for(parentWidget);
- if(parentWindow && [parentWindow respondsToSelector:@selector(isOnActiveSpace)]) {
- if ([parentWindow performSelector:@selector(isOnActiveSpace)]) {
- // The window was created in a different space. Therefore if we want
- // to show it in the current space we need to recreate it in the new
- // space.
- recreateMacWindow();
- window = qt_mac_window_for(q);
- }
- }
- }
- }
- }
- [window orderFront:window];
- }
- if (qt_mac_raise_process) { //we get to be the active process now
- ProcessSerialNumber psn;
- GetCurrentProcess(&psn);
- SetFrontProcessWithOptions(&psn, kSetFrontProcessFrontWindowOnly);
- }
- } else {
- NSView *view = qt_mac_nativeview_for(q);
- NSView *parentView = [view superview];
- [parentView sortSubviewsUsingFunction:compareViews2Raise context:reinterpret_cast<void *>(view)];
- }
- topLevelAt_cache = 0;
-}
-
-NSComparisonResult compareViews2Lower(id view1, id view2, void *context)
-{
- id topView = reinterpret_cast<id>(context);
- if (view1 == topView)
- return NSOrderedAscending;
- if (view2 == topView)
- return NSOrderedDescending;
- return NSOrderedSame;
-}
-
-void QWidgetPrivate::lower_sys()
-{
- Q_Q(QWidget);
- if((q->windowType() == Qt::Desktop))
- return;
- if (isRealWindow()) {
- OSWindowRef window = qt_mac_window_for(q);
- [window orderBack:window];
- } else {
- NSView *view = qt_mac_nativeview_for(q);
- NSView *parentView = [view superview];
- [parentView sortSubviewsUsingFunction:compareViews2Lower context:reinterpret_cast<void *>(view)];
- }
- topLevelAt_cache = 0;
-}
-
-NSComparisonResult compareViews2StackUnder(id view1, id view2, void *context)
-{
- const QHash<NSView *, int> &viewOrder = *reinterpret_cast<QHash<NSView *, int> *>(context);
- if (viewOrder[view1] < viewOrder[view2])
- return NSOrderedAscending;
- if (viewOrder[view1] > viewOrder[view2])
- return NSOrderedDescending;
- return NSOrderedSame;
-}
-
-void QWidgetPrivate::stackUnder_sys(QWidget *w)
-{
- // stackUnder
- Q_Q(QWidget);
- if(!w || q->isWindow() || (q->windowType() == Qt::Desktop))
- return;
- // Do the same trick as lower_sys() and put this widget before the widget passed in.
- NSView *myView = qt_mac_nativeview_for(q);
- NSView *wView = qt_mac_nativeview_for(w);
-
- QHash<NSView *, int> viewOrder;
- NSView *parentView = [myView superview];
- NSArray *subviews = [parentView subviews];
- NSUInteger index = 1;
- // make a hash of view->zorderindex and make sure z-value is always odd,
- // so that when we modify the order we create a new (even) z-value which
- // will not interfere with others.
- for (NSView *subview in subviews) {
- viewOrder.insert(subview, index * 2);
- ++index;
- }
- viewOrder[myView] = viewOrder[wView] - 1;
-
- [parentView sortSubviewsUsingFunction:compareViews2StackUnder context:reinterpret_cast<void *>(&viewOrder)];
-}
-
-
-/*
- Helper function for non-toplevel widgets. Helps to map Qt's 32bit
- coordinate system to OS X's 16bit coordinate system.
-
- Sets the geometry of the widget to data.crect, but clipped to sizes
- that OS X can handle. Unmaps widgets that are completely outside the
- valid range.
-
- Maintains data.wrect, which is the geometry of the OS X widget,
- measured in this widget's coordinate system.
-
- if the parent is not clipped, parentWRect is empty, otherwise
- parentWRect is the geometry of the parent's OS X rect, measured in
- parent's coord sys
-*/
-void QWidgetPrivate::setWSGeometry(bool dontShow, const QRect &oldRect)
-{
- Q_Q(QWidget);
- Q_ASSERT(q->testAttribute(Qt::WA_WState_Created));
-
- if (!q->internalWinId() && QApplicationPrivate::graphicsSystem() != 0) {
- // We have no view to move, and no paint engine that
- // we can update dirty regions on. So just return:
- return;
- }
-
- QMacCocoaAutoReleasePool pool;
-
- /*
- There are up to four different coordinate systems here:
- Qt coordinate system for this widget.
- X coordinate system for this widget (relative to wrect).
- Qt coordinate system for parent
- X coordinate system for parent (relative to parent's wrect).
- */
-
- // wrect is the same as crect, except that it is
- // clipped to fit inside parent (and screen):
- QRect wrect;
-
- // wrectInParentCoordSys will be the same as wrect, except that it is
- // originated in q's parent rather than q itself. It starts out in
- // parent's Qt coord system, and ends up in parent's coordinate system:
- QRect wrectInParentCoordSys = data.crect;
-
- // If q's parent has been clipped, parentWRect will
- // be filled with the parents clipped crect:
- QRect parentWRect;
-
- // Embedded have different meaning on each platform, and on
- // Mac, it means that q is a QMacNativeWidget.
- bool isEmbeddedWindow = (q->isWindow() && topData()->embedded);
- NSView *nsview = qt_mac_nativeview_for(q);
- if (!isEmbeddedWindow) {
- parentWRect = q->parentWidget()->data->wrect;
- } else {
- // INVARIANT: q's parent view is not owned by Qt. So we need to
- // do some extra calls to get the clipped rect of the parent view:
- NSView *parentView = [qt_mac_nativeview_for(q) superview];
- if (parentView) {
- NSRect tmpRect = [parentView frame];
- parentWRect = QRect(tmpRect.origin.x, tmpRect.origin.y,
- tmpRect.size.width, tmpRect.size.height);
- } else {
- const QRect wrectRange(-WRECT_MAX,-WRECT_MAX, 2*WRECT_MAX, 2*WRECT_MAX);
- parentWRect = wrectRange;
- }
- }
-
- if (parentWRect.isValid()) {
- // INVARIANT: q's parent has been clipped.
- // So we fit our own wrects inside it:
- if (!parentWRect.contains(wrectInParentCoordSys) && !isEmbeddedWindow) {
- wrectInParentCoordSys &= parentWRect;
- wrect = wrectInParentCoordSys;
- // Make sure wrect is originated in q's coordinate system:
- wrect.translate(-data.crect.topLeft());
- }
- // // Make sure wrectInParentCoordSys originated in q's parent coordinate system:
- wrectInParentCoordSys.translate(-parentWRect.topLeft());
- } else {
- // INVARIANT: we dont know yet the clipping rect of q's parent.
- // So we may or may not have to adjust our wrects:
-
- if (data.wrect.isValid() && QRect(QPoint(),data.crect.size()).contains(data.wrect)) {
- // This is where the main optimization is: we have an old wrect from an earlier
- // setGeometry call, and the new crect is smaller than it. If the final wrect is
- // also inside the old wrect, we can just move q and its children to the new
- // location without any clipping:
-
- // vrect will be the part of q that's will be visible inside
- // q's parent. If it inside the old wrect, then we can just move:
- QRect vrect = wrectInParentCoordSys & q->parentWidget()->rect();
- vrect.translate(-data.crect.topLeft());
-
- if (data.wrect.contains(vrect)) {
- wrectInParentCoordSys = data.wrect;
- wrectInParentCoordSys.translate(data.crect.topLeft());
- if (nsview) {
- // INVARIANT: q is native. Set view frame:
- NSRect bounds = NSMakeRect(wrectInParentCoordSys.x(), wrectInParentCoordSys.y(),
- wrectInParentCoordSys.width(), wrectInParentCoordSys.height());
- [nsview setFrame:bounds];
- } else {
- // INVARIANT: q is alien. Repaint wrect instead (includes old and new wrect):
- QWidget *parent = q->parentWidget();
- QPoint globalPosWRect = parent->mapToGlobal(data.wrect.topLeft());
-
- QWidget *nativeParent = q->nativeParentWidget();
- QRect dirtyWRect = QRect(nativeParent->mapFromGlobal(globalPosWRect), data.wrect.size());
-
- nativeParent->update(dirtyWRect);
- }
- if (q->testAttribute(Qt::WA_OutsideWSRange)) {
- q->setAttribute(Qt::WA_OutsideWSRange, false);
- if (!dontShow) {
- q->setAttribute(Qt::WA_Mapped);
- // If q is Alien, the following call does nothing:
- [nsview setHidden:NO];
- }
- }
- return;
- }
- }
-
- }
-
- // unmap if we are outside the valid window system coord system
- bool outsideRange = !wrectInParentCoordSys.isValid();
- bool mapWindow = false;
- if (q->testAttribute(Qt::WA_OutsideWSRange) != outsideRange) {
- q->setAttribute(Qt::WA_OutsideWSRange, outsideRange);
- if (outsideRange) {
- // If q is Alien, the following call does nothing:
- [nsview setHidden:YES];
- q->setAttribute(Qt::WA_Mapped, false);
- } else if (!q->isHidden()) {
- mapWindow = true;
- }
- }
-
- if (outsideRange)
- return;
-
- // Store the new clipped rect:
- bool jump = (data.wrect != wrect);
- data.wrect = wrect;
-
- // and now recursively for all children...
- // ### can be optimized
- for (int i = 0; i < children.size(); ++i) {
- QObject *object = children.at(i);
- if (object->isWidgetType()) {
- QWidget *w = static_cast<QWidget *>(object);
- if (!w->isWindow() && w->testAttribute(Qt::WA_WState_Created))
- w->d_func()->setWSGeometry();
- }
- }
-
- if (nsview) {
- // INVARIANT: q is native. Move the actual NSView:
- NSRect bounds = NSMakeRect(
- wrectInParentCoordSys.x(), wrectInParentCoordSys.y(),
- wrectInParentCoordSys.width(), wrectInParentCoordSys.height());
- [nsview setFrame:bounds];
- if (jump)
- q->update();
- } else if (QApplicationPrivate::graphicsSystem() == 0){
- // INVARIANT: q is alien and we use native paint engine.
- // Schedule updates where q is moved from and to:
- const QWidget *parent = q->parentWidget();
- const QPoint globalPosOldWRect = parent->mapToGlobal(oldRect.topLeft());
- const QPoint globalPosNewWRect = parent->mapToGlobal(wrectInParentCoordSys.topLeft());
-
- QWidget *nativeParent = q->nativeParentWidget();
- const QRegion dirtyOldWRect = QRect(nativeParent->mapFromGlobal(globalPosOldWRect), oldRect.size());
- const QRegion dirtyNewWRect = QRect(nativeParent->mapFromGlobal(globalPosNewWRect), wrectInParentCoordSys.size());
-
- const bool sizeUnchanged = oldRect.size() == wrectInParentCoordSys.size();
- const bool posUnchanged = oldRect.topLeft() == wrectInParentCoordSys.topLeft();
-
- // Resolve/minimize the region that needs to update:
- if (sizeUnchanged && q->testAttribute(Qt::WA_OpaquePaintEvent)) {
- // INVARIANT: q is opaque, and is only moved (not resized). So in theory we only
- // need to blit pixels, and skip a repaint. But we can only make this work if we
- // had access to the backbuffer, so we need to update all:
- nativeParent->update(dirtyOldWRect | dirtyNewWRect);
- } else if (posUnchanged && q->testAttribute(Qt::WA_StaticContents)) {
- // We only need to redraw exposed areas:
- nativeParent->update(dirtyNewWRect - dirtyOldWRect);
- } else {
- nativeParent->update(dirtyOldWRect | dirtyNewWRect);
- }
- }
-
- if (mapWindow && !dontShow) {
- q->setAttribute(Qt::WA_Mapped);
- // If q is Alien, the following call does nothing:
- [nsview setHidden:NO];
- }
-}
-
-void QWidgetPrivate::adjustWithinMaxAndMinSize(int &w, int &h)
-{
- if (QWExtra *extra = extraData()) {
- w = qMin(w, extra->maxw);
- h = qMin(h, extra->maxh);
- w = qMax(w, extra->minw);
- h = qMax(h, extra->minh);
-
- // Deal with size increment
- if (QTLWExtra *top = topData()) {
- if(top->incw) {
- w = w/top->incw;
- w *= top->incw;
- }
- if(top->inch) {
- h = h/top->inch;
- h *= top->inch;
- }
- }
- }
-
- if (isRealWindow()) {
- w = qMax(0, w);
- h = qMax(0, h);
- }
-}
-
-void QWidgetPrivate::applyMaxAndMinSizeOnWindow()
-{
- Q_Q(QWidget);
- QMacCocoaAutoReleasePool pool;
-
- const float max_f(20000);
-#define SF(x) ((x > max_f) ? max_f : x)
- NSSize max = NSMakeSize(SF(extra->maxw), SF(extra->maxh));
- NSSize min = NSMakeSize(SF(extra->minw), SF(extra->minh));
-#undef SF
- [qt_mac_window_for(q) setContentMinSize:min];
- [qt_mac_window_for(q) setContentMaxSize:max];
-}
-
-void QWidgetPrivate::setGeometry_sys(int x, int y, int w, int h, bool isMove)
-{
- Q_Q(QWidget);
- Q_ASSERT(q->testAttribute(Qt::WA_WState_Created));
-
- if(q->windowType() == Qt::Desktop)
- return;
-
- QMacCocoaAutoReleasePool pool;
- bool realWindow = isRealWindow();
-
- if (realWindow && !q->testAttribute(Qt::WA_DontShowOnScreen)){
- adjustWithinMaxAndMinSize(w, h);
- if (!isMove && !q->testAttribute(Qt::WA_Moved) && !q->isVisible()) {
- // INVARIANT: The location of the window has not yet been set. The default will
- // instead be to center it on the desktop, or over the parent, if any. Since we now
- // resize the window, we need to adjust the top left position to keep the window
- // centeralized. And we need to to this now (and before show) in case the positioning
- // of other windows (e.g. sub-windows) depend on this position:
- if (QWidget *p = q->parentWidget()) {
- x = p->geometry().center().x() - (w / 2);
- y = p->geometry().center().y() - (h / 2);
- } else {
- QRect availGeo = QApplication::desktop()->availableGeometry(q);
- x = availGeo.center().x() - (w / 2);
- y = availGeo.center().y() - (h / 2);
- }
- }
-
- QSize olds = q->size();
- const bool isResize = (olds != QSize(w, h));
- NSWindow *window = qt_mac_window_for(q);
- const QRect &fStrut = frameStrut();
- const QRect frameRect(QPoint(x - fStrut.left(), y - fStrut.top()),
- QSize(fStrut.left() + fStrut.right() + w,
- fStrut.top() + fStrut.bottom() + h));
- NSRect cocoaFrameRect = NSMakeRect(frameRect.x(), flipYCoordinate(frameRect.bottom() + 1),
- frameRect.width(), frameRect.height());
- // The setFrame call will trigger a 'windowDidResize' notification for the corresponding
- // NSWindow. The pending flag is set, so that the resize event can be send as non-spontaneous.
- if (isResize)
- q->setAttribute(Qt::WA_PendingResizeEvent);
- QPoint currTopLeft = data.crect.topLeft();
- if (currTopLeft.x() == x && currTopLeft.y() == y
- && cocoaFrameRect.size.width != 0
- && cocoaFrameRect.size.height != 0) {
- [window setFrame:cocoaFrameRect display:realWindow];
- } else {
- // The window is moved and resized (or resized to zero).
- // Since Cocoa usually only sends us a resize callback after
- // setting a window frame, we issue an explicit move as
- // well. To stop Cocoa from optimize away the move (since the move
- // would have the same origin as the setFrame call) we shift the
- // window back and forth inbetween.
- cocoaFrameRect.origin.y += 1;
- [window setFrame:cocoaFrameRect display:realWindow];
- cocoaFrameRect.origin.y -= 1;
- [window setFrameOrigin:cocoaFrameRect.origin];
- }
- } else {
- setGeometry_sys_helper(x, y, w, h, isMove);
- }
-
- topLevelAt_cache = 0;
-}
-
-void QWidgetPrivate::setGeometry_sys_helper(int x, int y, int w, int h, bool isMove)
-{
- Q_Q(QWidget);
- bool realWindow = isRealWindow();
-
- QPoint oldp = q->pos();
- QSize olds = q->size();
- // Apply size restrictions, applicable for Windows & Widgets.
- if (QWExtra *extra = extraData()) {
- w = qBound(extra->minw, w, extra->maxw);
- h = qBound(extra->minh, h, extra->maxh);
- }
- const bool isResize = (olds != QSize(w, h));
-
- if (!realWindow && !isResize && QPoint(x, y) == oldp)
- return;
-
- if (isResize)
- data.window_state = data.window_state & ~Qt::WindowMaximized;
-
- const bool visible = q->isVisible();
- data.crect = QRect(x, y, w, h);
-
- if (realWindow) {
- adjustWithinMaxAndMinSize(w, h);
- qt_mac_update_sizer(q);
-
- [qt_mac_nativeview_for(q) setFrame:NSMakeRect(0, 0, w, h)];
- } else {
- const QRect oldRect(oldp, olds);
- if (!isResize && QApplicationPrivate::graphicsSystem())
- moveRect(oldRect, x - oldp.x(), y - oldp.y());
-
- setWSGeometry(false, oldRect);
-
- if (isResize && QApplicationPrivate::graphicsSystem())
- invalidateBuffer_resizeHelper(oldp, olds);
- }
-
- if(isMove || isResize) {
- if(!visible) {
- if(isMove && q->pos() != oldp)
- q->setAttribute(Qt::WA_PendingMoveEvent, true);
- if(isResize)
- q->setAttribute(Qt::WA_PendingResizeEvent, true);
- } else {
- if(isResize) { //send the resize event..
- QResizeEvent e(q->size(), olds);
- QApplication::sendEvent(q, &e);
- }
- if(isMove && q->pos() != oldp) { //send the move event..
- QMoveEvent e(q->pos(), oldp);
- QApplication::sendEvent(q, &e);
- }
- }
- }
- qt_event_request_window_change(q);
-}
-
-void QWidgetPrivate::setConstraints_sys()
-{
- updateMaximizeButton_sys();
- applyMaxAndMinSizeOnWindow();
-}
-
-void QWidgetPrivate::updateMaximizeButton_sys()
-{
- Q_Q(QWidget);
- if (q->data->window_flags & Qt::CustomizeWindowHint)
- return;
-
- OSWindowRef window = qt_mac_window_for(q);
- QTLWExtra * tlwExtra = topData();
- QMacCocoaAutoReleasePool pool;
- NSButton *maximizeButton = [window standardWindowButton:NSWindowZoomButton];
- if (extra->maxw && extra->maxh
- && extra->maxw == extra->minw
- && extra->maxh == extra->minh) {
- // The window has a fixed size, so gray out the maximize button:
- if (!tlwExtra->savedWindowAttributesFromMaximized) {
- tlwExtra->savedWindowAttributesFromMaximized = (![maximizeButton isHidden] && [maximizeButton isEnabled]);
- }
- [maximizeButton setEnabled:NO];
-
-
- } else {
- if (tlwExtra->savedWindowAttributesFromMaximized) {
- [maximizeButton setEnabled:YES];
- tlwExtra->savedWindowAttributesFromMaximized = 0;
- }
- }
-
-
-}
-
-void QWidgetPrivate::scroll_sys(int dx, int dy)
-{
- if (QApplicationPrivate::graphicsSystem() && !paintOnScreen()) {
- // INVARIANT: Alien paint engine
- scrollChildren(dx, dy);
- scrollRect(q_func()->rect(), dx, dy);
- } else {
- scroll_sys(dx, dy, QRect());
- }
-}
-
-void QWidgetPrivate::scroll_sys(int dx, int dy, const QRect &qscrollRect)
-{
- if (QMacScrollOptimization::delayScroll(this, dx, dy, qscrollRect))
- return;
-
- Q_Q(QWidget);
- if (QApplicationPrivate::graphicsSystem() && !paintOnScreen()) {
- // INVARIANT: Alien paint engine
- scrollRect(qscrollRect, dx, dy);
- return;
- }
-
- static int accelEnv = -1;
- if (accelEnv == -1) {
- accelEnv = qgetenv("QT_NO_FAST_SCROLL").toInt() == 0;
- }
-
- // Scroll the whole widget if qscrollRect is not valid:
- QRect validScrollRect = qscrollRect.isValid() ? qscrollRect : q->rect();
- validScrollRect &= clipRect();
-
- // If q is overlapped by other widgets, we cannot just blit pixels since
- // this will move overlapping widgets as well. In case we just update:
- const bool overlapped = isOverlapped(validScrollRect.translated(data.crect.topLeft()));
- const bool accelerateScroll = accelEnv && isOpaque && !overlapped;
- const bool isAlien = (q->internalWinId() == 0);
- const QPoint scrollDelta(dx, dy);
-
- // If qscrollRect is valid, we are _not_ supposed to scroll q's children (as documented).
- // But we do scroll children (and the whole of q) if qscrollRect is invalid. This case is
- // documented as undefined, but we exploit it to help factor our code into one function.
- const bool scrollChildren = !qscrollRect.isValid();
-
- if (!q->updatesEnabled()) {
- // We are told not to update anything on q at this point. So unless
- // we are supposed to scroll children, we bail out early:
- if (!scrollChildren || q->children().isEmpty())
- return;
- }
-
- if (!accelerateScroll) {
- if (overlapped) {
- QRegion region(validScrollRect);
- subtractOpaqueSiblings(region);
- update_sys(region);
- }else {
- update_sys(qscrollRect);
- }
- return;
- }
-
- QMacCocoaAutoReleasePool pool;
-
- // First move all native children. Alien children will indirectly be
- // moved when the parent is scrolled. All directly or indirectly moved
- // children will receive a move event before the function call returns.
- QWidgetList movedChildren;
- if (scrollChildren) {
- QObjectList children = q->children();
-
- for (int i=0; i<children.size(); i++) {
- QObject *obj = children.at(i);
- if (QWidget *w = qobject_cast<QWidget*>(obj)) {
- if (!w->isWindow()) {
- w->data->crect = QRect(w->pos() + scrollDelta, w->size());
- if (NSView *view = qt_mac_nativeview_for(w)) {
- // INVARIANT: w is not alien
- [view setFrame:NSMakeRect(
- w->data->crect.x(), w->data->crect.y(),
- w->data->crect.width(), w->data->crect.height())];
- }
- movedChildren.append(w);
- }
- }
- }
- }
-
- if (q->testAttribute(Qt::WA_WState_Created) && q->isVisible()) {
- // Scroll q itself according to the qscrollRect, and
- // call update on any exposed areas so that they get redrawn:
-
-
- QWidget *nativeWidget = isAlien ? q->nativeParentWidget() : q;
- if (!nativeWidget)
- return;
- OSViewRef view = qt_mac_nativeview_for(nativeWidget);
- if (!view)
- return;
-
- // Calculate the rectangles that needs to be redrawn
- // after the scroll. This will be source rect minus destination rect:
- QRect deltaXRect;
- if (dx != 0) {
- deltaXRect.setY(validScrollRect.y());
- deltaXRect.setHeight(validScrollRect.height());
- if (dx > 0) {
- deltaXRect.setX(validScrollRect.x());
- deltaXRect.setWidth(dx);
- } else {
- deltaXRect.setX(validScrollRect.x() + validScrollRect.width() + dx);
- deltaXRect.setWidth(-dx);
- }
- }
-
- QRect deltaYRect;
- if (dy != 0) {
- deltaYRect.setX(validScrollRect.x());
- deltaYRect.setWidth(validScrollRect.width());
- if (dy > 0) {
- deltaYRect.setY(validScrollRect.y());
- deltaYRect.setHeight(dy);
- } else {
- deltaYRect.setY(validScrollRect.y() + validScrollRect.height() + dy);
- deltaYRect.setHeight(-dy);
- }
- }
-
- if (isAlien) {
- // Adjust the scroll rect to the location as seen from the native parent:
- QPoint scrollTopLeftInsideNative = nativeWidget->mapFromGlobal(q->mapToGlobal(validScrollRect.topLeft()));
- validScrollRect.moveTo(scrollTopLeftInsideNative);
- }
-
- // Make the pixel copy rect within the validScrollRect bounds:
- NSRect nsscrollRect = NSMakeRect(
- validScrollRect.x() + (dx < 0 ? -dx : 0),
- validScrollRect.y() + (dy < 0 ? -dy : 0),
- validScrollRect.width() + (dx > 0 ? -dx : 0),
- validScrollRect.height() + (dy > 0 ? -dy : 0));
-
- NSSize deltaSize = NSMakeSize(dx, dy);
- [view scrollRect:nsscrollRect by:deltaSize];
-
- // Some areas inside the scroll rect might have been marked as dirty from before, which
- // means that they are scheduled to be redrawn. But as we now scroll, those dirty rects
- // should also move along to ensure that q receives repaints on the correct places.
- // Since some of the dirty rects might lay outside, or only intersect with, the scroll
- // rect, the old calls to setNeedsDisplay still makes sense.
- // NB: Using [view translateRectsNeedingDisplayInRect:nsscrollRect by:deltaSize] have
- // so far not been proven fruitful to solve this problem.
- const QVector<QRect> &dirtyRectsToScroll = dirtyOnWidget.rects();
- for (int i=0; i<dirtyRectsToScroll.size(); ++i) {
- QRect qdirtyRect = dirtyRectsToScroll[i];
- qdirtyRect.translate(dx, dy);
- update_sys(qdirtyRect);
- }
-
- // Update newly exposed areas. This will generate new dirty areas on
- // q, and therefore, we do it after updating the old dirty rects above:
- if (dx != 0)
- update_sys(deltaXRect);
- if (dy != 0)
- update_sys(deltaYRect);
-
- }
-
- for (int i=0; i<movedChildren.size(); i++) {
- QWidget *w = movedChildren.at(i);
- QMoveEvent e(w->pos(), w->pos() - scrollDelta);
- QApplication::sendEvent(w, &e);
- }
-}
-
-int QWidget::metric(PaintDeviceMetric m) const
-{
- switch(m) {
- case PdmHeightMM:
- return qRound(metric(PdmHeight) * 25.4 / qreal(metric(PdmDpiY)));
- case PdmWidthMM:
- return qRound(metric(PdmWidth) * 25.4 / qreal(metric(PdmDpiX)));
- case PdmHeight:
- case PdmWidth:
- if (m == PdmWidth)
- return data->crect.width();
- else
- return data->crect.height();
- case PdmDepth:
- return 32;
- case PdmNumColors:
- return INT_MAX;
- case PdmDpiX:
- case PdmPhysicalDpiX: {
- Q_D(const QWidget);
- if (d->extra && d->extra->customDpiX)
- return d->extra->customDpiX;
- else if (d->parent)
- return static_cast<QWidget *>(d->parent)->metric(m);
- extern float qt_mac_defaultDpi_x(); //qpaintdevice_mac.cpp
- return int(qt_mac_defaultDpi_x()); }
- case PdmDpiY:
- case PdmPhysicalDpiY: {
- Q_D(const QWidget);
- if (d->extra && d->extra->customDpiY)
- return d->extra->customDpiY;
- else if (d->parent)
- return static_cast<QWidget *>(d->parent)->metric(m);
- extern float qt_mac_defaultDpi_y(); //qpaintdevice_mac.cpp
- return int(qt_mac_defaultDpi_y()); }
- default: //leave this so the compiler complains when new ones are added
- qWarning("QWidget::metric: Unhandled parameter %d", m);
- return QPaintDevice::metric(m);
- }
- return 0;
-}
-
-void QWidgetPrivate::createSysExtra()
-{
- extra->imageMask = 0;
-}
-
-void QWidgetPrivate::deleteSysExtra()
-{
- if (extra->imageMask)
- CFRelease(extra->imageMask);
-}
-
-void QWidgetPrivate::createTLSysExtra()
-{
- extra->topextra->resizer = 0;
- extra->topextra->isSetGeometry = 0;
- extra->topextra->isMove = 0;
- extra->topextra->wattr = 0;
- extra->topextra->wclass = 0;
- extra->topextra->group = 0;
- extra->topextra->windowIcon = 0;
- extra->topextra->savedWindowAttributesFromMaximized = 0;
-}
-
-void QWidgetPrivate::deleteTLSysExtra()
-{
-}
-
-void QWidgetPrivate::updateFrameStrut()
-{
- Q_Q(QWidget);
-
- QWidgetPrivate *that = const_cast<QWidgetPrivate*>(this);
-
- that->data.fstrut_dirty = false;
- QTLWExtra *top = that->topData();
-
- // 1 Get the window frame
- OSWindowRef oswnd = qt_mac_window_for(q);
- NSRect frameW = [oswnd frame];
- // 2 Get the content frame - so now
- NSRect frameC = [oswnd contentRectForFrameRect:frameW];
- top->frameStrut.setCoords(frameC.origin.x - frameW.origin.x,
- (frameW.origin.y + frameW.size.height) - (frameC.origin.y + frameC.size.height),
- (frameW.origin.x + frameW.size.width) - (frameC.origin.x + frameC.size.width),
- frameC.origin.y - frameW.origin.y);
-}
-
-void QWidgetPrivate::registerDropSite(bool on)
-{
- Q_Q(QWidget);
- if (!q->testAttribute(Qt::WA_WState_Created))
- return;
- NSWindow *win = qt_mac_window_for(q);
- if (on) {
- if ([win isKindOfClass:[QT_MANGLE_NAMESPACE(QCocoaWindow) class]])
- [static_cast<QT_MANGLE_NAMESPACE(QCocoaWindow) *>(win) registerDragTypes];
- else if ([win isKindOfClass:[QT_MANGLE_NAMESPACE(QCocoaPanel) class]])
- [static_cast<QT_MANGLE_NAMESPACE(QCocoaPanel) *>(win) registerDragTypes];
- }
-}
-
-void QWidgetPrivate::registerTouchWindow(bool enable)
-{
- Q_UNUSED(enable);
-#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6
- if (QSysInfo::MacintoshVersion < QSysInfo::MV_10_6)
- return;
-
- Q_Q(QWidget);
- if (enable == touchEventsEnabled)
- return;
-
- QT_MANGLE_NAMESPACE(QCocoaView) *view = static_cast<QT_MANGLE_NAMESPACE(QCocoaView) *>(qt_mac_effectiveview_for(q));
- if (!view)
- return;
-
- if (enable) {
- ++view->alienTouchCount;
- if (view->alienTouchCount == 1) {
- touchEventsEnabled = true;
- [view setAcceptsTouchEvents:YES];
- }
- } else {
- --view->alienTouchCount;
- if (view->alienTouchCount == 0) {
- touchEventsEnabled = false;
- [view setAcceptsTouchEvents:NO];
- }
- }
-#endif
-}
-
-void QWidgetPrivate::setMask_sys(const QRegion &region)
-{
- Q_UNUSED(region);
- Q_Q(QWidget);
-
- if (!q->internalWinId())
- return;
-
- if (extra->mask.isEmpty()) {
- extra->maskBits = QImage();
- finishCocoaMaskSetup();
- } else {
- syncCocoaMask();
- }
-
- topLevelAt_cache = 0;
-}
-
-void QWidgetPrivate::setWindowOpacity_sys(qreal level)
-{
- Q_Q(QWidget);
-
- if (!q->isWindow())
- return;
-
- level = qBound(0.0, level, 1.0);
- topData()->opacity = (uchar)(level * 255);
- if (!q->testAttribute(Qt::WA_WState_Created))
- return;
-
- OSWindowRef oswindow = qt_mac_window_for(q);
- [oswindow setAlphaValue:level];
-}
-
-void QWidgetPrivate::syncCocoaMask()
-{
- Q_Q(QWidget);
- if (!q->testAttribute(Qt::WA_WState_Created) || !extra)
- return;
-
- if (extra->hasMask) {
- if(extra->maskBits.size() != q->size()) {
- extra->maskBits = QImage(q->size(), QImage::Format_Mono);
- }
- extra->maskBits.fill(QColor(Qt::color1).rgba());
- extra->maskBits.setNumColors(2);
- extra->maskBits.setColor(0, QColor(Qt::color0).rgba());
- extra->maskBits.setColor(1, QColor(Qt::color1).rgba());
- QPainter painter(&extra->maskBits);
- painter.setBrush(Qt::color1);
- painter.setPen(Qt::NoPen);
- painter.drawRects(extra->mask.rects());
- painter.end();
- finishCocoaMaskSetup();
- }
-}
-
-void QWidgetPrivate::finishCocoaMaskSetup()
-{
- Q_Q(QWidget);
-
- if (!q->testAttribute(Qt::WA_WState_Created) || !extra)
- return;
-
- // Technically this is too late to release, because the data behind the image
- // has already been released. But it's more tidy to do it here.
- // If you are seeing a crash, consider doing a CFRelease before changing extra->maskBits.
- if (extra->imageMask) {
- CFRelease(extra->imageMask);
- extra->imageMask = 0;
- }
-
- if (!extra->maskBits.isNull()) {
- QCFType<CGDataProviderRef> dataProvider = CGDataProviderCreateWithData(0,
- extra->maskBits.bits(),
- extra->maskBits.numBytes(),
- 0); // shouldn't need to release.
- CGFloat decode[2] = {1, 0};
- extra->imageMask = CGImageMaskCreate(extra->maskBits.width(), extra->maskBits.height(),
- 1, 1, extra->maskBits.bytesPerLine(), dataProvider,
- decode, false);
- }
- if (q->isWindow()) {
- NSWindow *window = qt_mac_window_for(q);
- [window setOpaque:(extra->imageMask == 0)];
- [window invalidateShadow];
- }
- macSetNeedsDisplay(QRegion());
-}
-
-struct QPaintEngineCleanupHandler
-{
- inline QPaintEngineCleanupHandler() : engine(0) {}
- inline ~QPaintEngineCleanupHandler() { delete engine; }
- QPaintEngine *engine;
-};
-
-Q_GLOBAL_STATIC(QPaintEngineCleanupHandler, engineHandler)
-
-QPaintEngine *QWidget::paintEngine() const
-{
- QPaintEngine *&pe = engineHandler()->engine;
- if (!pe)
- pe = new QCoreGraphicsPaintEngine();
- if (pe->isActive()) {
- QPaintEngine *engine = new QCoreGraphicsPaintEngine();
- engine->setAutoDestruct(true);
- return engine;
- }
- return pe;
-}
-
-void QWidgetPrivate::setModal_sys()
-{
- Q_Q(QWidget);
- if (!q->testAttribute(Qt::WA_WState_Created) || !q->isWindow())
- return;
- const QWidget * const windowParent = q->window()->parentWidget();
- const QWidget * const primaryWindow = windowParent ? windowParent->window() : 0;
- OSWindowRef windowRef = qt_mac_window_for(q);
-
- QMacCocoaAutoReleasePool pool;
- bool alreadySheet = [windowRef styleMask] & NSDocModalWindowMask;
-
- if (windowParent && q->windowModality() == Qt::WindowModal){
- // INVARIANT: Window should be window-modal (which implies a sheet).
- if (!alreadySheet) {
- // NB: the following call will call setModal_sys recursivly:
- recreateMacWindow();
- windowRef = qt_mac_window_for(q);
- }
- if ([windowRef isKindOfClass:[NSPanel class]]){
- // If the primary window of the sheet parent is a child of a modal dialog,
- // the sheet parent should not be modally shaddowed.
- // This goes for the sheet as well:
- OSWindowRef ref = primaryWindow ? qt_mac_window_for(primaryWindow) : 0;
- bool isDialog = ref ? [ref isKindOfClass:[NSPanel class]] : false;
- bool worksWhenModal = isDialog ? [static_cast<NSPanel *>(ref) worksWhenModal] : false;
- if (worksWhenModal)
- [static_cast<NSPanel *>(windowRef) setWorksWhenModal:YES];
- }
- } else {
- // INVARIANT: Window shold _not_ be window-modal (and as such, not a sheet).
- if (alreadySheet){
- // NB: the following call will call setModal_sys recursivly:
- recreateMacWindow();
- windowRef = qt_mac_window_for(q);
- }
- if (q->windowModality() == Qt::NonModal
- && primaryWindow && primaryWindow->windowModality() == Qt::ApplicationModal) {
- // INVARIANT: Our window has a parent that is application modal.
- // This means that q is supposed to be on top of this window and
- // not be modally shaddowed:
- if ([windowRef isKindOfClass:[NSPanel class]])
- [static_cast<NSPanel *>(windowRef) setWorksWhenModal:YES];
- }
- }
-
-}
-
-void QWidgetPrivate::macUpdateHideOnSuspend()
-{
- Q_Q(QWidget);
- if (!q->testAttribute(Qt::WA_WState_Created) || !q->isWindow() || q->windowType() != Qt::Tool)
- return;
- if(q->testAttribute(Qt::WA_MacAlwaysShowToolWindow))
- [qt_mac_window_for(q) setHidesOnDeactivate:NO];
- else
- [qt_mac_window_for(q) setHidesOnDeactivate:YES];
-}
-
-void QWidgetPrivate::macUpdateOpaqueSizeGrip()
-{
- Q_Q(QWidget);
-
- if (!q->testAttribute(Qt::WA_WState_Created) || !q->isWindow())
- return;
-
-}
-
-void QWidgetPrivate::macUpdateSizeAttribute()
-{
- Q_Q(QWidget);
- QEvent event(QEvent::MacSizeChange);
- QApplication::sendEvent(q, &event);
- for (int i = 0; i < children.size(); ++i) {
- QWidget *w = qobject_cast<QWidget *>(children.at(i));
- if (w && (!w->isWindow() || w->testAttribute(Qt::WA_WindowPropagation))
- && !q->testAttribute(Qt::WA_MacMiniSize) // no attribute set? inherit from parent
- && !w->testAttribute(Qt::WA_MacSmallSize)
- && !w->testAttribute(Qt::WA_MacNormalSize))
- w->d_func()->macUpdateSizeAttribute();
- }
- resolveFont();
-}
-
-void QWidgetPrivate::macUpdateIgnoreMouseEvents()
-{
-}
-
-void QWidgetPrivate::macUpdateMetalAttribute()
-{
- Q_Q(QWidget);
- bool realWindow = isRealWindow();
- if (!q->testAttribute(Qt::WA_WState_Created) || !realWindow)
- return;
-
- if (realWindow) {
- // Cocoa doesn't let us change the style mask once it's been changed
- // So, that means we need to recreate the window.
- OSWindowRef cocoaWindow = qt_mac_window_for(q);
- if ([cocoaWindow styleMask] & NSTexturedBackgroundWindowMask)
- return;
- recreateMacWindow();
- }
-}
-
-void QWidgetPrivate::setEnabled_helper_sys(bool enable)
-{
- Q_Q(QWidget);
- NSView *view = qt_mac_nativeview_for(q);
- if ([view isKindOfClass:[NSControl class]])
- [static_cast<NSControl *>(view) setEnabled:enable];
-}
-
-QT_END_NAMESPACE
diff --git a/src/widgets/statemachine/qbasickeyeventtransition.cpp b/src/widgets/statemachine/qbasickeyeventtransition.cpp
index fca11eb036..8119787f50 100644
--- a/src/widgets/statemachine/qbasickeyeventtransition.cpp
+++ b/src/widgets/statemachine/qbasickeyeventtransition.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/statemachine/qbasickeyeventtransition_p.h b/src/widgets/statemachine/qbasickeyeventtransition_p.h
index 379c151e60..cae270ba4a 100644
--- a/src/widgets/statemachine/qbasickeyeventtransition_p.h
+++ b/src/widgets/statemachine/qbasickeyeventtransition_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/statemachine/qbasicmouseeventtransition.cpp b/src/widgets/statemachine/qbasicmouseeventtransition.cpp
index c05b262b66..e0451e876f 100644
--- a/src/widgets/statemachine/qbasicmouseeventtransition.cpp
+++ b/src/widgets/statemachine/qbasicmouseeventtransition.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/statemachine/qbasicmouseeventtransition_p.h b/src/widgets/statemachine/qbasicmouseeventtransition_p.h
index 98a8f28ca8..c53ef9ce77 100644
--- a/src/widgets/statemachine/qbasicmouseeventtransition_p.h
+++ b/src/widgets/statemachine/qbasicmouseeventtransition_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/statemachine/qguistatemachine.cpp b/src/widgets/statemachine/qguistatemachine.cpp
index 928bbd5a53..465da1e2ba 100644
--- a/src/widgets/statemachine/qguistatemachine.cpp
+++ b/src/widgets/statemachine/qguistatemachine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -183,10 +183,6 @@ static QEvent *cloneEvent(QEvent *e)
return new QInputMethodEvent(*static_cast<QInputMethodEvent*>(e));
case QEvent::AccessibilityPrepare:
return new QEvent(*e);
-#ifndef QT_NO_TABLETEVENT
- case QEvent::TabletMove:
- return new QTabletEvent(*static_cast<QTabletEvent*>(e));
-#endif //QT_NO_TABLETEVENT
case QEvent::LocaleChange:
return new QEvent(*e);
case QEvent::LanguageChange:
@@ -196,8 +192,8 @@ static QEvent *cloneEvent(QEvent *e)
case QEvent::Style:
return new QEvent(*e);
#ifndef QT_NO_TABLETEVENT
+ case QEvent::TabletMove:
case QEvent::TabletPress:
- return new QTabletEvent(*static_cast<QTabletEvent*>(e));
case QEvent::TabletRelease:
return new QTabletEvent(*static_cast<QTabletEvent*>(e));
#endif //QT_NO_TABLETEVENT
diff --git a/src/widgets/statemachine/qkeyeventtransition.cpp b/src/widgets/statemachine/qkeyeventtransition.cpp
index 175d4924a9..6367174255 100644
--- a/src/widgets/statemachine/qkeyeventtransition.cpp
+++ b/src/widgets/statemachine/qkeyeventtransition.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/statemachine/qkeyeventtransition.h b/src/widgets/statemachine/qkeyeventtransition.h
index b22a4e0934..d6ceaa8703 100644
--- a/src/widgets/statemachine/qkeyeventtransition.h
+++ b/src/widgets/statemachine/qkeyeventtransition.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_STATEMACHINE
diff --git a/src/widgets/statemachine/qmouseeventtransition.cpp b/src/widgets/statemachine/qmouseeventtransition.cpp
index 60c2c85159..4a5553e058 100644
--- a/src/widgets/statemachine/qmouseeventtransition.cpp
+++ b/src/widgets/statemachine/qmouseeventtransition.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/statemachine/qmouseeventtransition.h b/src/widgets/statemachine/qmouseeventtransition.h
index bdd64c5f3f..6ba39c659f 100644
--- a/src/widgets/statemachine/qmouseeventtransition.h
+++ b/src/widgets/statemachine/qmouseeventtransition.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_STATEMACHINE
diff --git a/src/widgets/styles/qcdestyle.cpp b/src/widgets/styles/qcdestyle.cpp
index 518461c279..f7cf3b2fba 100644
--- a/src/widgets/styles/qcdestyle.cpp
+++ b/src/widgets/styles/qcdestyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qcdestyle.h b/src/widgets/styles/qcdestyle.h
index b5293d30f3..fa9ec099d5 100644
--- a/src/widgets/styles/qcdestyle.h
+++ b/src/widgets/styles/qcdestyle.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#if !defined(QT_NO_STYLE_CDE)
diff --git a/src/widgets/styles/qcleanlooksstyle.cpp b/src/widgets/styles/qcleanlooksstyle.cpp
index 42f9b38bd4..67b3c59b29 100644
--- a/src/widgets/styles/qcleanlooksstyle.cpp
+++ b/src/widgets/styles/qcleanlooksstyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qcleanlooksstyle.h b/src/widgets/styles/qcleanlooksstyle.h
index 94b3aa889c..cd37eadb1e 100644
--- a/src/widgets/styles/qcleanlooksstyle.h
+++ b/src/widgets/styles/qcleanlooksstyle.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#if !defined(QT_NO_STYLE_CLEANLOOKS)
diff --git a/src/widgets/styles/qcleanlooksstyle_p.h b/src/widgets/styles/qcleanlooksstyle_p.h
index d9968bb531..ad7e00ef81 100644
--- a/src/widgets/styles/qcleanlooksstyle_p.h
+++ b/src/widgets/styles/qcleanlooksstyle_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qcommonstyle.cpp b/src/widgets/styles/qcommonstyle.cpp
index c874770fdb..db783d14d4 100644
--- a/src/widgets/styles/qcommonstyle.cpp
+++ b/src/widgets/styles/qcommonstyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qcommonstyle.h b/src/widgets/styles/qcommonstyle.h
index e023c702da..6fe7411413 100644
--- a/src/widgets/styles/qcommonstyle.h
+++ b/src/widgets/styles/qcommonstyle.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,7 +47,6 @@
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QCommonStylePrivate;
diff --git a/src/widgets/styles/qcommonstyle_p.h b/src/widgets/styles/qcommonstyle_p.h
index 10a9cd875a..0c783324e2 100644
--- a/src/widgets/styles/qcommonstyle_p.h
+++ b/src/widgets/styles/qcommonstyle_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qcommonstylepixmaps_p.h b/src/widgets/styles/qcommonstylepixmaps_p.h
index 73c183d485..decfac637f 100644
--- a/src/widgets/styles/qcommonstylepixmaps_p.h
+++ b/src/widgets/styles/qcommonstylepixmaps_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qdrawutil.cpp b/src/widgets/styles/qdrawutil.cpp
index fd8a272851..15788e34f5 100644
--- a/src/widgets/styles/qdrawutil.cpp
+++ b/src/widgets/styles/qdrawutil.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qdrawutil.h b/src/widgets/styles/qdrawutil.h
index 74347b09c1..611c1fb8bd 100644
--- a/src/widgets/styles/qdrawutil.h
+++ b/src/widgets/styles/qdrawutil.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPainter;
class QPalette;
diff --git a/src/widgets/styles/qgtkpainter.cpp b/src/widgets/styles/qgtkpainter.cpp
index a9d1ed2281..3d8cb98135 100644
--- a/src/widgets/styles/qgtkpainter.cpp
+++ b/src/widgets/styles/qgtkpainter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qgtkpainter_p.h b/src/widgets/styles/qgtkpainter_p.h
index b0874d2315..ff512f2894 100644
--- a/src/widgets/styles/qgtkpainter_p.h
+++ b/src/widgets/styles/qgtkpainter_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qgtkstyle.cpp b/src/widgets/styles/qgtkstyle.cpp
index 30e1371354..87d335baad 100644
--- a/src/widgets/styles/qgtkstyle.cpp
+++ b/src/widgets/styles/qgtkstyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qgtkstyle.h b/src/widgets/styles/qgtkstyle.h
index 26665dcd51..38a6e15db2 100644
--- a/src/widgets/styles/qgtkstyle.h
+++ b/src/widgets/styles/qgtkstyle.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#if !defined(QT_NO_STYLE_GTK)
diff --git a/src/widgets/styles/qgtkstyle_p.cpp b/src/widgets/styles/qgtkstyle_p.cpp
index f3b41e0ba1..40ad9f2a95 100644
--- a/src/widgets/styles/qgtkstyle_p.cpp
+++ b/src/widgets/styles/qgtkstyle_p.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qgtkstyle_p.h b/src/widgets/styles/qgtkstyle_p.h
index 656a187ded..95988fa8b1 100644
--- a/src/widgets/styles/qgtkstyle_p.h
+++ b/src/widgets/styles/qgtkstyle_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qmacstyle.qdoc b/src/widgets/styles/qmacstyle.qdoc
index 97baf80e9d..d48a65c41f 100644
--- a/src/widgets/styles/qmacstyle.qdoc
+++ b/src/widgets/styles/qmacstyle.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qmacstyle_mac.h b/src/widgets/styles/qmacstyle_mac.h
index 7a3a4248b3..b42f0e36f2 100644
--- a/src/widgets/styles/qmacstyle_mac.h
+++ b/src/widgets/styles/qmacstyle_mac.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#if defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC)
diff --git a/src/widgets/styles/qmacstyle_mac.mm b/src/widgets/styles/qmacstyle_mac.mm
index ca9b5cf234..09cb9cc016 100644
--- a/src/widgets/styles/qmacstyle_mac.mm
+++ b/src/widgets/styles/qmacstyle_mac.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -44,6 +44,8 @@
.../doc/src/qstyles.qdoc.
*/
+#include <Cocoa/Cocoa.h>
+
#include "qmacstyle_mac.h"
#include "qmacstyle_mac_p.h"
#include "qmacstylepixmaps_mac_p.h"
@@ -2103,7 +2105,7 @@ void QMacStyle::unpolish(QWidget* w)
}
}
- if (QRubberBand *rubber = ::qobject_cast<QRubberBand*>(w)) {
+ if (QRubberBand *rubber = qobject_cast<QRubberBand*>(w)) {
rubber->setWindowOpacity(1.0);
rubber->setAttribute(Qt::WA_PaintOnScreen, true);
rubber->setAttribute(Qt::WA_NoSystemBackground, true);
@@ -3536,7 +3538,7 @@ void QMacStyle::drawControl(ControlElement ce, const QStyleOption *opt, QPainter
QCommonStyle::drawControl(ce, opt, p, w);
break;
case CE_PushButtonBevel:
- if (const QStyleOptionButton *btn = ::qstyleoption_cast<const QStyleOptionButton *>(opt)) {
+ if (const QStyleOptionButton *btn = qstyleoption_cast<const QStyleOptionButton *>(opt)) {
if (!(btn->state & (State_Raised | State_Sunken | State_On)))
break;
diff --git a/src/widgets/styles/qmacstyle_mac_p.h b/src/widgets/styles/qmacstyle_mac_p.h
index 1739a382f3..8f7edd51d5 100644
--- a/src/widgets/styles/qmacstyle_mac_p.h
+++ b/src/widgets/styles/qmacstyle_mac_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qmacstylepixmaps_mac_p.h b/src/widgets/styles/qmacstylepixmaps_mac_p.h
index 3f852a63f3..1a293d9f3c 100644
--- a/src/widgets/styles/qmacstylepixmaps_mac_p.h
+++ b/src/widgets/styles/qmacstylepixmaps_mac_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qmotifstyle.cpp b/src/widgets/styles/qmotifstyle.cpp
index fc697454c1..331b70f153 100644
--- a/src/widgets/styles/qmotifstyle.cpp
+++ b/src/widgets/styles/qmotifstyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -2254,25 +2254,6 @@ static const char * const qt_minimize_xpm[] = {
" ",
" "};
-#if 0 // ### not used???
-static const char * const qt_normalize_xpm[] = {
- "12 12 2 1",
- " s None c None",
- ". c black",
- " ",
- " ",
- " . ",
- " .. ",
- " ... ",
- " .... ",
- " ..... ",
- " ...... ",
- " ....... ",
- " ",
- " ",
- " "};
-#endif
-
static const char * const qt_normalizeup_xpm[] = {
"12 12 2 1",
" s None c None",
diff --git a/src/widgets/styles/qmotifstyle.h b/src/widgets/styles/qmotifstyle.h
index 0aa506d2ac..fa957f392a 100644
--- a/src/widgets/styles/qmotifstyle.h
+++ b/src/widgets/styles/qmotifstyle.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#if !defined(QT_NO_STYLE_MOTIF)
diff --git a/src/widgets/styles/qmotifstyle_p.h b/src/widgets/styles/qmotifstyle_p.h
index 83394059e8..76a6a1035d 100644
--- a/src/widgets/styles/qmotifstyle_p.h
+++ b/src/widgets/styles/qmotifstyle_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qplastiquestyle.cpp b/src/widgets/styles/qplastiquestyle.cpp
index 750d0765ef..79893f066d 100644
--- a/src/widgets/styles/qplastiquestyle.cpp
+++ b/src/widgets/styles/qplastiquestyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -3784,10 +3784,9 @@ void QPlastiqueStyle::drawComplexControl(ComplexControl control, const QStyleOpt
if (!QPixmapCache::find(handlePixmapName, cache)) {
cache = QPixmap(handle.size());
- cache.fill(Qt::white);
+ cache.fill(Qt::transparent);
QRect pixmapRect(0, 0, handle.width(), handle.height());
QPainter handlePainter(&cache);
- handlePainter.fillRect(pixmapRect, option->palette.background());
// draw handle
if (horizontal) {
diff --git a/src/widgets/styles/qplastiquestyle.h b/src/widgets/styles/qplastiquestyle.h
index 837e07a75f..3247f66811 100644
--- a/src/widgets/styles/qplastiquestyle.h
+++ b/src/widgets/styles/qplastiquestyle.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#if !defined(QT_NO_STYLE_PLASTIQUE)
diff --git a/src/widgets/styles/qproxystyle.cpp b/src/widgets/styles/qproxystyle.cpp
index 56e3dc56b4..5bcd83a6ea 100644
--- a/src/widgets/styles/qproxystyle.cpp
+++ b/src/widgets/styles/qproxystyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qproxystyle.h b/src/widgets/styles/qproxystyle.h
index e5d05eb3e5..87839e1278 100644
--- a/src/widgets/styles/qproxystyle.h
+++ b/src/widgets/styles/qproxystyle.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#if !defined(QT_NO_STYLE_PROXY)
diff --git a/src/widgets/styles/qproxystyle_p.h b/src/widgets/styles/qproxystyle_p.h
index 3dc960afcd..24504e3d3b 100644
--- a/src/widgets/styles/qproxystyle_p.h
+++ b/src/widgets/styles/qproxystyle_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qstyle.cpp b/src/widgets/styles/qstyle.cpp
index e4000bef19..3ff5aea0ca 100644
--- a/src/widgets/styles/qstyle.cpp
+++ b/src/widgets/styles/qstyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1594,7 +1594,7 @@ void QStyle::drawItemPixmap(QPainter *painter, const QRect &rect, int alignment,
\value RSIP_OnMouseClick Requests an input panel if the user clicks on the
widget.
- \sa QEvent::RequestSoftwareInputPanel, QInputContext
+ \sa QInputMethod
*/
/*!
diff --git a/src/widgets/styles/qstyle.h b/src/widgets/styles/qstyle.h
index fcc8412414..a8ec8c8c3e 100644
--- a/src/widgets/styles/qstyle.h
+++ b/src/widgets/styles/qstyle.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QAction;
class QDebug;
diff --git a/src/widgets/styles/qstyle_p.h b/src/widgets/styles/qstyle_p.h
index 3fd221938d..3da4c458d2 100644
--- a/src/widgets/styles/qstyle_p.h
+++ b/src/widgets/styles/qstyle_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qstylefactory.cpp b/src/widgets/styles/qstylefactory.cpp
index cc19a895d0..ef555fbdb1 100644
--- a/src/widgets/styles/qstylefactory.cpp
+++ b/src/widgets/styles/qstylefactory.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -69,9 +69,6 @@
#ifndef QT_NO_STYLE_WINDOWSMOBILE
#include "qwindowsmobilestyle.h"
#endif
-#ifndef QT_NO_STYLE_S60
-#include "qs60style.h"
-#endif
QT_BEGIN_NAMESPACE
@@ -158,11 +155,6 @@ QStyle *QStyleFactory::create(const QString& key)
ret = new QCDEStyle;
else
#endif
-#ifndef QT_NO_STYLE_S60
- if (style == QLatin1String("s60"))
- ret = new QS60Style;
- else
-#endif
#ifndef QT_NO_STYLE_PLASTIQUE
if (style == QLatin1String("plastique"))
ret = new QPlastiqueStyle;
@@ -242,10 +234,6 @@ QStringList QStyleFactory::keys()
if (!list.contains(QLatin1String("CDE")))
list << QLatin1String("CDE");
#endif
-#ifndef QT_NO_STYLE_S60
- if (!list.contains(QLatin1String("S60")))
- list << QLatin1String("S60");
-#endif
#ifndef QT_NO_STYLE_PLASTIQUE
if (!list.contains(QLatin1String("Plastique")))
list << QLatin1String("Plastique");
diff --git a/src/widgets/styles/qstylefactory.h b/src/widgets/styles/qstylefactory.h
index f98d37b26e..3551e62613 100644
--- a/src/widgets/styles/qstylefactory.h
+++ b/src/widgets/styles/qstylefactory.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QStyle;
diff --git a/src/widgets/styles/qstylehelper.cpp b/src/widgets/styles/qstylehelper.cpp
index 8f2d7364c1..818671f85f 100644
--- a/src/widgets/styles/qstylehelper.cpp
+++ b/src/widgets/styles/qstylehelper.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qstylehelper_p.h b/src/widgets/styles/qstylehelper_p.h
index a193e2ec78..a7bc64abcd 100644
--- a/src/widgets/styles/qstylehelper_p.h
+++ b/src/widgets/styles/qstylehelper_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qstyleoption.cpp b/src/widgets/styles/qstyleoption.cpp
index 0e4a1e98f8..63e7b8775e 100644
--- a/src/widgets/styles/qstyleoption.cpp
+++ b/src/widgets/styles/qstyleoption.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -110,12 +110,12 @@ QT_BEGIN_NAMESPACE
\value SO_Default QStyleOption
\value SO_DockWidget \l QStyleOptionDockWidget
\value SO_FocusRect \l QStyleOptionFocusRect
- \value SO_Frame \l QStyleOptionFrame \l QStyleOptionFrameV2
+ \value SO_Frame \l QStyleOptionFrame
\value SO_GraphicsItem \l QStyleOptionGraphicsItem
\value SO_GroupBox \l QStyleOptionGroupBox
\value SO_Header \l QStyleOptionHeader
\value SO_MenuItem \l QStyleOptionMenuItem
- \value SO_ProgressBar \l QStyleOptionProgressBar \l QStyleOptionProgressBarV2
+ \value SO_ProgressBar \l QStyleOptionProgressBar
\value SO_RubberBand \l QStyleOptionRubberBand
\value SO_SizeGrip \l QStyleOptionSizeGrip
\value SO_Slider \l QStyleOptionSlider
@@ -455,13 +455,11 @@ QStyleOptionFocusRect::QStyleOptionFocusRect(int version)
\inmodule QtWidgets
QStyleOptionFrame is used for drawing several built-in Qt widgets,
- including QFrame, QGroupBox, QLineEdit, and QMenu. Note that to
- describe the parameters necessary for drawing a frame in Qt 4.1 or
- above, you must use the QStyleOptionFrameV2 subclass.
+ including QFrame, QGroupBox, QLineEdit, and QMenu.
An instance of the QStyleOptionFrame class has
\l{QStyleOption::type} {type} SO_Frame and \l{QStyleOption::version}
- {version} 1.
+ {version} 3.
The type is used internally by QStyleOption, its subclasses, and
qstyleoption_cast() to determine the type of style option. In
@@ -471,13 +469,24 @@ QStyleOptionFocusRect::QStyleOptionFocusRect(int version)
without breaking compatibility. If you use qstyleoption_cast(),
you normally do not need to check it.
- If you create your own QStyle subclass, you should handle both
- QStyleOptionFrame and QStyleOptionFrameV2.
-
For an example demonstrating how style options can be used, see
the \l {widgets/styles}{Styles} example.
- \sa QStyleOptionFrameV2, QStyleOption
+ \sa QStyleOption
+*/
+
+/*!
+ \typedef QStyleOptionFrameV2
+ \relates QStyleOptionFrame
+
+ Synonym for QStyleOptionFrame.
+*/
+
+/*!
+ \typedef QStyleOptionFrameV3
+ \relates QStyleOptionFrame
+
+ Synonym for QStyleOptionFrame.
*/
/*!
@@ -486,7 +495,8 @@ QStyleOptionFocusRect::QStyleOptionFocusRect(int version)
*/
QStyleOptionFrame::QStyleOptionFrame()
- : QStyleOption(Version, SO_Frame), lineWidth(0), midLineWidth(0)
+ : QStyleOption(Version, SO_Frame), lineWidth(0), midLineWidth(0),
+ features(None), frameShape(QFrame::NoFrame)
{
}
@@ -494,7 +504,8 @@ QStyleOptionFrame::QStyleOptionFrame()
\internal
*/
QStyleOptionFrame::QStyleOptionFrame(int version)
- : QStyleOption(version, SO_Frame), lineWidth(0), midLineWidth(0)
+ : QStyleOption(version, SO_Frame), lineWidth(0), midLineWidth(0),
+ features(None), frameShape(QFrame::NoFrame)
{
}
@@ -526,7 +537,7 @@ QStyleOptionFrame::QStyleOptionFrame(int version)
This enum is used to hold information about the version of the style option, and
is defined for each QStyleOption subclass.
- \value Version 1
+ \value Version 3
The version is used by QStyleOption subclasses to implement
extensions without breaking compatibility. If you use
@@ -556,110 +567,7 @@ QStyleOptionFrame::QStyleOptionFrame(int version)
*/
/*!
- \class QStyleOptionFrameV2
- \brief The QStyleOptionFrameV2 class is used to describe the
- parameters necessary for drawing a frame in Qt 4.1 or above.
-
- \since 4.1
- \inmodule QtWidgets
-
- QStyleOptionFrameV2 inherits QStyleOptionFrame which is used for
- drawing several built-in Qt widgets, including QFrame, QGroupBox,
- QLineEdit, and QMenu.
-
- An instance of the QStyleOptionFrameV2 class has
- \l{QStyleOption::type} {type} SO_Frame and
- \l{QStyleOption::version} {version} 2. The type is used
- internally by QStyleOption, its subclasses, and
- qstyleoption_cast() to determine the type of style option. In
- general you do not need to worry about this unless you want to
- create your own QStyleOption subclass and your own styles. The
- version is used by QStyleOption subclasses to implement extensions
- without breaking compatibility. If you use qstyleoption_cast(),
- you normally do not need to check it.
-
- If you create your own QStyle subclass, you should handle both
- QStyleOptionFrame and QStyleOptionFrameV2. One way to achieve this
- is to use the QStyleOptionFrameV2 copy constructor. For example:
-
- \snippet doc/src/snippets/qstyleoption/main.cpp 1
-
- In the example above: If the \c frameOption's version is 1, \l
- FrameFeature is set to \l None for \c frameOptionV2. If \c
- frameOption's version is 2, the constructor will simply copy the
- \c frameOption's \l FrameFeature value.
-
- For an example demonstrating how style options can be used, see
- the \l {widgets/styles}{Styles} example.
-
- \sa QStyleOptionFrame, QStyleOption
-*/
-
-/*!
- Constructs a QStyleOptionFrameV2 object.
-*/
-QStyleOptionFrameV2::QStyleOptionFrameV2()
- : QStyleOptionFrame(Version), features(None)
-{
-}
-
-/*!
- \fn QStyleOptionFrameV2::QStyleOptionFrameV2(const QStyleOptionFrameV2 &other)
-
- Constructs a QStyleOptionFrameV2 copy of the \a other style option.
-*/
-
-/*!
- \internal
-*/
-QStyleOptionFrameV2::QStyleOptionFrameV2(int version)
- : QStyleOptionFrame(version), features(None)
-{
-}
-
-/*!
- Constructs a QStyleOptionFrameV2 copy of the \a other style option
- which can be either of the QStyleOptionFrameV2 or
- QStyleOptionFrame types.
-
- If the \a other style option's version is 1, the new style option's \l
- FrameFeature value is set to \l QStyleOptionFrameV2::None. If its
- version is 2, its \l FrameFeature value is simply copied to the
- new style option.
-
- \sa version
-*/
-QStyleOptionFrameV2::QStyleOptionFrameV2(const QStyleOptionFrame &other)
-{
- QStyleOptionFrame::operator=(other);
-
- const QStyleOptionFrameV2 *f2 = qstyleoption_cast<const QStyleOptionFrameV2 *>(&other);
- features = f2 ? f2->features : FrameFeatures(QStyleOptionFrameV2::None);
- version = Version;
-}
-
-/*!
- Assigns the \a other style option to this style option. The \a
- other style option can be either of the QStyleOptionFrameV2 or
- QStyleOptionFrame types.
-
- If the \a{other} style option's version is 1, this style option's
- \l FrameFeature value is set to \l QStyleOptionFrameV2::None. If
- its version is 2, its \l FrameFeature value is simply copied to
- this style option.
-*/
-QStyleOptionFrameV2 &QStyleOptionFrameV2::operator=(const QStyleOptionFrame &other)
-{
- QStyleOptionFrame::operator=(other);
-
- const QStyleOptionFrameV2 *f2 = qstyleoption_cast<const QStyleOptionFrameV2 *>(&other);
- features = f2 ? f2->features : FrameFeatures(QStyleOptionFrameV2::None);
- version = Version;
- return *this;
-}
-
-/*!
- \enum QStyleOptionFrameV2::FrameFeature
+ \enum QStyleOptionFrame::FrameFeature
This enum describes the different types of features a frame can have.
@@ -668,503 +576,20 @@ QStyleOptionFrameV2 &QStyleOptionFrameV2::operator=(const QStyleOptionFrame &oth
*/
/*!
- \variable QStyleOptionFrameV2::features
+ \variable QStyleOptionFrame::features
\brief a bitwise OR of the features that describe this frame.
\sa FrameFeature
*/
/*!
- \enum QStyleOptionFrameV2::StyleOptionVersion
-
- This enum is used to hold information about the version of the
- style option, and is defined for each QStyleOption subclass.
-
- \value Version 2
-
- The version is used by QStyleOption subclasses to implement
- extensions without breaking compatibility. If you use
- qstyleoption_cast(), you normally do not need to check it.
-
- \sa StyleOptionType
-*/
-
-/*!
- \class QStyleOptionFrameV3
- \brief The QStyleOptionFrameV3 class is used to describe the
- parameters necessary for drawing a frame in Qt 4.1 or above.
-
- \since 4.5
- \inmodule QtWidgets
-
- QStyleOptionFrameV3 inherits QStyleOptionFrameV2
-
- An instance of the QStyleOptionFrameV3 class has
- \l{QStyleOption::type} {type} SO_Frame and
- \l{QStyleOption::version} {version} 3. The type is used
- internally by QStyleOption, its subclasses, and
- qstyleoption_cast() to determine the type of style option. In
- general you do not need to worry about this unless you want to
- create your own QStyleOption subclass and your own styles. The
- version is used by QStyleOption subclasses to implement extensions
- without breaking compatibility. If you use qstyleoption_cast(),
- you normally do not need to check it.
-
- \sa QStyleOptionFrameV2, QStyleOption
-*/
-
-/*!
- Constructs a QStyleOptionFrameV3 object.
-*/
-QStyleOptionFrameV3::QStyleOptionFrameV3()
- : QStyleOptionFrameV2(Version), frameShape(QFrame::NoFrame), unused(0)
-{
-}
-
-/*!
- \fn QStyleOptionFrameV3::QStyleOptionFrameV3(const QStyleOptionFrameV3 &other)
-
- Constructs a QStyleOptionFrameV3 copy of the \a other style option.
-*/
-
-/*!
- \internal
-*/
-QStyleOptionFrameV3::QStyleOptionFrameV3(int version)
- : QStyleOptionFrameV2(version), frameShape(QFrame::NoFrame), unused(0)
-{
-}
-
-/*!
- Constructs a QStyleOptionFrameV3 copy of the \a other style option
- which can be either of the QStyleOptionFrameV3 or
- QStyleOptionFrame types.
-
- If the \a other style option's version is 1, the new style
- option's \l FrameFeature value is set to
- \l{QStyleOptionFrameV2::None}. If its version is 2 or lower,
- \l{QStyleOptionFrameV3::frameShape} value is QFrame::NoFrame
-
- \sa version
-*/
-QStyleOptionFrameV3::QStyleOptionFrameV3(const QStyleOptionFrame &other)
-{
- operator=(other);
-}
-
-/*!
- Assigns the \a other style option to this style option. The \a
- other style option can be either of the QStyleOptionFrameV3,
- QStyleOptionFrameV2 or QStyleOptionFrame types.
-
- If the \a other style option's version is 1, the new style
- option's \l FrameFeature value is set to
- \l{QStyleOptionFrameV2::None}. If its version is 2 or lower,
- \l{QStyleOptionFrameV3::frameShape} value is QFrame::NoFrame
-*/
-QStyleOptionFrameV3 &QStyleOptionFrameV3::operator=(const QStyleOptionFrame &other)
-{
- QStyleOptionFrameV2::operator=(other);
-
- const QStyleOptionFrameV3 *f3 = qstyleoption_cast<const QStyleOptionFrameV3 *>(&other);
- frameShape = f3 ? f3->frameShape : QFrame::NoFrame;
- version = Version;
- return *this;
-}
-
-
-/*!
- \variable QStyleOptionFrameV3::frameShape
+ \variable QStyleOptionFrame::frameShape
\brief This property holds the frame shape value of the frame.
\sa QFrame::frameShape
*/
/*!
- \enum QStyleOptionFrameV3::StyleOptionVersion
-
- This enum is used to hold information about the version of the style option, and
- is defined for each QStyleOption subclass.
-
- \value Version 3
-
- The version is used by QStyleOption subclasses to implement
- extensions without breaking compatibility. If you use
- qstyleoption_cast(), you normally do not need to check it.
-
- \sa StyleOptionType
-*/
-
-/*!
- \class QStyleOptionViewItemV2
- \brief The QStyleOptionViewItemV2 class is used to describe the
- parameters necessary for drawing a frame in Qt 4.2 or above.
- \since 4.2
- \inmodule QtWidgets
-
- QStyleOptionViewItemV2 inherits QStyleOptionViewItem.
-
- An instance of the QStyleOptionViewItemV2 class has
- \l{QStyleOption::type} {type} SO_ViewItem and
- \l{QStyleOption::version} {version} 2. The type is used internally
- by QStyleOption, its subclasses, and qstyleoption_cast() to
- determine the type of style option. In general you do not need to
- worry about this unless you want to create your own QStyleOption
- subclass and your own styles. The version is used by QStyleOption
- subclasses to implement extensions without breaking
- compatibility. If you use qstyleoption_cast(), you normally do not
- need to check it.
-
- See QStyleOptionFrameV2's detailed description for a discussion
- of how to handle "V2" classes.
-
- \sa QStyleOptionViewItem, QStyleOption
-*/
-
-/*!
- \enum QStyleOptionViewItemV2::StyleOptionVersion
-
- This enum is used to hold information about the version of the
- style option, and is defined for each QStyleOption subclass.
-
- \value Version 2
-
- The version is used by QStyleOption subclasses to implement
- extensions without breaking compatibility. If you use
- qstyleoption_cast(), you normally do not need to check it.
-
- \sa StyleOptionType
-*/
-
-/*!
- \variable QStyleOptionViewItemV2::features
- \brief a bitwise OR of the features that describe this view item
-
- \sa ViewItemFeature
-*/
-
-/*!
- Constructs a QStyleOptionViewItemV2 object.
-*/
-QStyleOptionViewItemV2::QStyleOptionViewItemV2()
- : QStyleOptionViewItem(Version), features(None)
-{
-}
-
-/*!
- \fn QStyleOptionViewItemV2::QStyleOptionViewItemV2(const QStyleOptionViewItemV2 &other)
-
- Constructs a copy of \a other.
-*/
-
-/*!
- Constructs a QStyleOptionViewItemV2 copy of the \a other style option
- which can be either of the QStyleOptionViewItemV2 or
- QStyleOptionViewItem types.
-
- If the \a other style option's version is 1, the new style option's \l
- ViewItemFeature value is set to \l QStyleOptionViewItemV2::None. If its
- version is 2, its \l ViewItemFeature value is simply copied to the
- new style option.
-
- \sa version
-*/
-QStyleOptionViewItemV2::QStyleOptionViewItemV2(const QStyleOptionViewItem &other)
- : QStyleOptionViewItem(Version)
-{
- (void)QStyleOptionViewItemV2::operator=(other);
-}
-
-/*!
- \internal
-*/
-QStyleOptionViewItemV2::QStyleOptionViewItemV2(int version)
- : QStyleOptionViewItem(version)
-{
-
-}
-
-/*!
- Assigns the \a other style option to this style option. The \a
- other style option can be either of the QStyleOptionViewItemV2 or
- QStyleOptionViewItem types.
-
- If the \a{other} style option's version is 1, this style option's
- \l ViewItemFeature value is set to \l QStyleOptionViewItemV2::None.
- If its version is 2, its \l ViewItemFeature value is simply copied
- to this style option.
-*/
-QStyleOptionViewItemV2 &QStyleOptionViewItemV2::operator=(const QStyleOptionViewItem &other)
-{
- QStyleOptionViewItem::operator=(other);
- const QStyleOptionViewItemV2 *v2 = qstyleoption_cast<const QStyleOptionViewItemV2 *>(&other);
- features = v2 ? v2->features : ViewItemFeatures(QStyleOptionViewItemV2::None);
- return *this;
-}
-
-/*!
- \enum QStyleOptionViewItemV2::ViewItemFeature
-
- This enum describes the different types of features an item can have.
-
- \value None Indicates a normal item.
- \value WrapText Indicates an item with wrapped text.
- \value Alternate Indicates that the item's background is rendered using alternateBase.
- \value HasCheckIndicator Indicates that the item has a check state indicator.
- \value HasDisplay Indicates that the item has a display role.
- \value HasDecoration Indicates that the item has a decoration role.
-*/
-
-
-
-/*!
- \class QStyleOptionViewItemV3
- \brief The QStyleOptionViewItemV3 class is used to describe the
- parameters necessary for drawing a frame in Qt 4.3 or above.
- \since 4.3
- \inmodule QtWidgets
-
- QStyleOptionViewItemV3 inherits QStyleOptionViewItem.
-
- An instance of the QStyleOptionViewItemV3 class has
- \l{QStyleOption::type} {type} SO_ViewItem and \l{QStyleOption::version}
- {version} 3. The type is used internally by QStyleOption, its subclasses,
- and qstyleoption_cast() to determine the type of style option. In general
- you do not need to worry about this unless you want to create your own
- QStyleOption subclass and your own styles. The version is used by
- QStyleOption subclasses to implement extensions without breaking
- compatibility. If you use qstyleoption_cast(), you normally do not need to
- check it.
-
- See QStyleOptionFrameV2's detailed description for a discussion
- of how to handle "V2" and other versioned classes.
-
- \sa QStyleOptionViewItem, QStyleOption
-*/
-
-/*!
- \enum QStyleOptionViewItemV3::StyleOptionVersion
-
- This enum is used to hold information about the version of the
- style option, and is defined for each QStyleOption subclass.
-
- \value Version 3
-
- The version is used by QStyleOption subclasses to implement
- extensions without breaking compatibility. If you use
- qstyleoption_cast(), you normally do not need to check it.
-
- \sa StyleOptionType
-*/
-
-/*!
- Constructs a QStyleOptionViewItemV3 object.
-*/
-QStyleOptionViewItemV3::QStyleOptionViewItemV3()
- : QStyleOptionViewItemV2(Version), widget(0)
-{
-}
-
-/*!
- Constructs a copy of \a other.
-*/
-QStyleOptionViewItemV3::QStyleOptionViewItemV3(const QStyleOptionViewItem &other)
- : QStyleOptionViewItemV2(Version), widget(0)
-{
- (void)QStyleOptionViewItemV3::operator=(other);
-}
-
-/*!
- \fn QStyleOptionViewItemV3::QStyleOptionViewItemV3(const QStyleOptionViewItemV3 &other)
-
- Constructs a copy of \a other.
-*/
-
-/*!
- Assigns the \a other style option to this style option. The \a
- other style option can be an instance of the QStyleOptionViewItemV2,
- QStyleOptionViewItemV3 or QStyleOptionViewItem types.
-*/
-QStyleOptionViewItemV3 &QStyleOptionViewItemV3::operator = (const QStyleOptionViewItem &other)
-{
- QStyleOptionViewItemV2::operator=(other);
- const QStyleOptionViewItemV3 *v3 = qstyleoption_cast<const QStyleOptionViewItemV3*>(&other);
- locale = v3 ? v3->locale : QLocale();
- widget = v3 ? v3->widget : 0;
- return *this;
-}
-
-/*!
- \internal
-*/
-QStyleOptionViewItemV3::QStyleOptionViewItemV3(int version)
- : QStyleOptionViewItemV2(version), widget(0)
-{
-}
-
-#ifndef QT_NO_ITEMVIEWS
-
-/*!
- \class QStyleOptionViewItemV4
- \brief The QStyleOptionViewItemV4 class is used to describe the
- parameters necessary for drawing a frame in Qt 4.4 or above.
- \since 4.4
- \inmodule QtWidgets
-
- QStyleOptionViewItemV4 inherits QStyleOptionViewItemV3.
-
- An instance of the QStyleOptionViewItemV4 class has
- \l{QStyleOption::type} {type} SO_ViewItem and
- \l{QStyleOption::version} {version} 4. The type is used internally
- by QStyleOption, its subclasses, and qstyleoption_cast() to
- determine the type of style option. In general you do not need to
- worry about this unless you want to create your own QStyleOption
- subclass and your own styles. The version is used by QStyleOption
- subclasses to implement extensions without breaking
- compatibility. If you use qstyleoption_cast(), you normally do not
- need to check it.
-
- See QStyleOptionViewItemV3's detailed description for a discussion
- of how to handle "V3" classes.
-
- \sa QStyleOptionViewItem, QStyleOption
-*/
-
-/*!
- \variable QStyleOptionViewItemV4::index
-
- The model index that is to be drawn.
-*/
-
-/*!
- \variable QStyleOptionViewItemV4::checkState
-
- If this view item is checkable, i.e.,
- ViewItemFeature::HasCheckIndicator is true, \c checkState is true
- if the item is checked; otherwise, it is false.
-
-*/
-
-/*!
- \variable QStyleOptionViewItemV4::icon
-
- The icon (if any) to be drawn in the view item.
-*/
-
-
-/*!
- \variable QStyleOptionViewItemV4::text
-
- The text (if any) to be drawn in the view item.
-*/
-
-/*!
- \variable QStyleOptionViewItemV4::backgroundBrush
-
- The QBrush that should be used to paint the view items
- background.
-*/
-
-/*!
- \variable QStyleOptionViewItemV4::viewItemPosition
-
- Gives the position of this view item relative to other items. See
- the \l{QStyleOptionViewItemV4::}{ViewItemPosition} enum for the
- details.
-*/
-
-/*!
- \enum QStyleOptionViewItemV4::StyleOptionVersion
-
- This enum is used to hold information about the version of the
- style option, and is defined for each QStyleOption subclass.
-
- \value Version 4
-
- The version is used by QStyleOption subclasses to implement
- extensions without breaking compatibility. If you use
- qstyleoption_cast(), you normally do not need to check it.
-
- \sa StyleOptionType
-*/
-
-/*!
- \enum QStyleOptionViewItemV4::ViewItemPosition
-
- This enum is used to represent the placement of the item on
- a row. This can be used to draw items differently depending
- on their placement, for example by putting rounded edges at
- the beginning and end, and straight edges in between.
-
- \value Invalid The ViewItemPosition is unknown and should be
- disregarded.
- \value Beginning The item appears at the beginning of the row.
- \value Middle The item appears in the middle of the row.
- \value End The item appears at the end of the row.
- \value OnlyOne The item is the only one on the row, and is
- therefore both at the beginning and the end.
-*/
-
-
-/*!
- Constructs a QStyleOptionViewItemV4 object.
-*/
-QStyleOptionViewItemV4::QStyleOptionViewItemV4()
-: QStyleOptionViewItemV3(Version), checkState(Qt::Unchecked), viewItemPosition(QStyleOptionViewItemV4::Invalid)
-{
-}
-
-/*!
- \fn QStyleOptionViewItemV4::QStyleOptionViewItemV4(const QStyleOptionViewItemV4 &other)
-
- Constructs a copy of \a other.
-*/
-
-/*!
- Constructs a QStyleOptionViewItemV4 copy of the \a other style option
- which can be either of the QStyleOptionViewItemV3 or
- QStyleOptionViewItem types.
-
- \sa version
-*/
-QStyleOptionViewItemV4::QStyleOptionViewItemV4(const QStyleOptionViewItem &other)
- : QStyleOptionViewItemV3(Version)
-{
- (void)QStyleOptionViewItemV4::operator=(other);
-}
-
-/*!
- Assigns the \a other style option to this style option. The \a
- other style option can be either of the QStyleOptionViewItemV3 or
- QStyleOptionViewItem types.
-*/
-QStyleOptionViewItemV4 &QStyleOptionViewItemV4::operator = (const QStyleOptionViewItem &other)
-{
- QStyleOptionViewItemV3::operator=(other);
- if (const QStyleOptionViewItemV4 *v4 = qstyleoption_cast<const QStyleOptionViewItemV4*>(&other)) {
- index = v4->index;
- checkState = v4->checkState;
- text = v4->text;
- viewItemPosition = v4->viewItemPosition;
- backgroundBrush = v4->backgroundBrush;
- icon = v4->icon;
- } else {
- viewItemPosition = QStyleOptionViewItemV4::Invalid;
- checkState = Qt::Unchecked;
- }
- return *this;
-}
-
-/*!
- \internal
-*/
-QStyleOptionViewItemV4::QStyleOptionViewItemV4(int version)
- : QStyleOptionViewItemV3(version)
-{
-}
-#endif // QT_NO_ITEMVIEWS
-
-/*!
\class QStyleOptionGroupBox
\brief The QStyleOptionGroupBox class describes the parameters for
drawing a group box.
@@ -1264,7 +689,7 @@ QStyleOptionViewItemV4::QStyleOptionViewItemV4(int version)
The frame is flat by default.
- \sa QStyleOptionFrameV2::FrameFeature
+ \sa QStyleOptionFrame::FrameFeature
*/
/*!
@@ -1281,7 +706,7 @@ QStyleOptionViewItemV4::QStyleOptionViewItemV4(int version)
variables to their default values.
*/
QStyleOptionGroupBox::QStyleOptionGroupBox()
- : QStyleOptionComplex(Version, Type), features(QStyleOptionFrameV2::None),
+ : QStyleOptionComplex(Version, Type), features(QStyleOptionFrame::None),
textAlignment(Qt::AlignLeft), lineWidth(0), midLineWidth(0)
{
}
@@ -1296,7 +721,7 @@ QStyleOptionGroupBox::QStyleOptionGroupBox()
\internal
*/
QStyleOptionGroupBox::QStyleOptionGroupBox(int version)
- : QStyleOptionComplex(version, Type), features(QStyleOptionFrameV2::None),
+ : QStyleOptionComplex(version, Type), features(QStyleOptionFrame::None),
textAlignment(Qt::AlignLeft), lineWidth(0), midLineWidth(0)
{
}
@@ -1808,13 +1233,11 @@ QStyleOptionToolBar::QStyleOptionToolBar(int version)
\inmodule QtWidgets
The QStyleOptionTab class is used for drawing several built-in Qt
- widgets including \l QTabBar and the panel for \l QTabWidget. Note
- that to describe the parameters necessary for drawing a frame in
- Qt 4.1 or above, you must use the QStyleOptionFrameV2 subclass.
+ widgets including \l QTabBar and the panel for \l QTabWidget.
- An instance of the QStyleOptiontabV2 class has
+ An instance of the QStyleOptionTab class has
\l{QStyleOption::type} {type} \l SO_Tab and
- \l{QStyleOption::version} {version} 1. The type is used internally
+ \l{QStyleOption::version} {version} 3. The type is used internally
by QStyleOption, its subclasses, and qstyleoption_cast() to
determine the type of style option. In general you do not need to
worry about this unless you want to create your own QStyleOption
@@ -1823,13 +1246,24 @@ QStyleOptionToolBar::QStyleOptionToolBar(int version)
compatibility. If you use qstyleoption_cast(), you normally do not
need to check it.
- If you create your own QStyle subclass, you should handle both
- QStyleOptionTab and QStyleOptionTabV2.
-
For an example demonstrating how style options can be used, see
the \l {widgets/styles}{Styles} example.
- \sa QStyleOptionTabV2, QStyleOption
+ \sa QStyleOption
+*/
+
+/*!
+ \typedef QStyleOptionTabV2
+ \relates QStyleOptionTab
+
+ Synonym for QStyleOptionTab.
+*/
+
+/*!
+ \typedef QStyleOptionTabV3
+ \relates QStyleOptionTab
+
+ Synonym for QStyleOptionTab.
*/
/*!
@@ -1842,7 +1276,8 @@ QStyleOptionTab::QStyleOptionTab()
shape(QTabBar::RoundedNorth),
row(0),
position(Beginning),
- selectedPosition(NotAdjacent), cornerWidgets(QStyleOptionTab::NoCornerWidgets)
+ selectedPosition(NotAdjacent), cornerWidgets(QStyleOptionTab::NoCornerWidgets),
+ documentMode(false)
{
}
@@ -1854,7 +1289,8 @@ QStyleOptionTab::QStyleOptionTab(int version)
shape(QTabBar::RoundedNorth),
row(0),
position(Beginning),
- selectedPosition(NotAdjacent), cornerWidgets(QStyleOptionTab::NoCornerWidgets)
+ selectedPosition(NotAdjacent), cornerWidgets(QStyleOptionTab::NoCornerWidgets),
+ documentMode(false)
{
}
@@ -1886,7 +1322,7 @@ QStyleOptionTab::QStyleOptionTab(int version)
This enum is used to hold information about the version of the style option, and
is defined for each QStyleOption subclass.
- \value Version 1
+ \value Version 3
The version is used by QStyleOption subclasses to implement
extensions without breaking compatibility. If you use
@@ -1990,60 +1426,8 @@ QStyleOptionTab::QStyleOptionTab(int version)
The default value is \l Beginning, i.e. the tab is the first tab
in the tab bar.
*/
-
-/*!
- \class QStyleOptionTabV2
- \brief The QStyleOptionTabV2 class is used to describe the
- parameters necessary for drawing a tabs in Qt 4.1 or above.
-
- \since 4.1
- \inmodule QtWidgets
-
- An instance of the QStyleOptionTabV2 class has
- \l{QStyleOption::type} {type} \l SO_Tab and
- \l{QStyleOption::version} {version} 2. The type is used internally
- by QStyleOption, its subclasses, and qstyleoption_cast() to
- determine the type of style option. In general you do not need to
- worry about this unless you want to create your own QStyleOption
- subclass and your own styles. The version is used by QStyleOption
- subclasses to implement extensions without breaking
- compatibility. If you use qstyleoption_cast(), you normally do not
- need to check it.
-
- If you create your own QStyle subclass, you should handle both
- QStyleOptionTab and QStyleOptionTabV2. One way to achieve this is
- to use the QStyleOptionTabV2 copy constructor. For example:
-
- \snippet doc/src/snippets/qstyleoption/main.cpp 3
-
- In the example above: If \c tabOption's version is 1, the extra
- member (\l iconSize) will be set to an invalid size for \c tabV2.
- If \c tabOption's version is 2, the constructor will simply copy
- the \c tab's iconSize.
-
- For an example demonstrating how style options can be used, see
- the \l {widgets/styles}{Styles} example.
-
- \sa QStyleOptionTab, QStyleOption
-*/
-
/*!
- \enum QStyleOptionTabV2::StyleOptionVersion
-
- This enum is used to hold information about the version of the style option, and
- is defined for each QStyleOption subclass.
-
- \value Version 2
-
- The version is used by QStyleOption subclasses to implement
- extensions without breaking compatibility. If you use
- qstyleoption_cast(), you normally do not need to check it.
-
- \sa StyleOptionType
-*/
-
-/*!
- \variable QStyleOptionTabV2::iconSize
+ \variable QStyleOptionTab::iconSize
\brief the size for the icons
The default value is QSize(-1, -1), i.e. an invalid size; use
@@ -2053,216 +1437,26 @@ QStyleOptionTab::QStyleOptionTab(int version)
*/
/*!
- Constructs a QStyleOptionTabV2.
-*/
-QStyleOptionTabV2::QStyleOptionTabV2()
- : QStyleOptionTab(Version)
-{
-}
-
-/*!
- \internal
-*/
-QStyleOptionTabV2::QStyleOptionTabV2(int version)
- : QStyleOptionTab(version)
-{
-}
-
-/*!
- \fn QStyleOptionTabV2::QStyleOptionTabV2(const QStyleOptionTabV2 &other)
-
- Constructs a copy of the \a other style option.
-*/
-
-/*!
- Constructs a QStyleOptionTabV2 copy of the \a other style option
- which can be either of the QStyleOptionTabV2 or QStyleOptionTab
- types.
-
- If the other style option's version is 1, the new style option's
- \c iconSize is set to an invalid value. If its version is 2, its
- \c iconSize value is simply copied to the new style option.
-*/
-QStyleOptionTabV2::QStyleOptionTabV2(const QStyleOptionTab &other)
- : QStyleOptionTab(Version)
-{
- if (const QStyleOptionTabV2 *tab = qstyleoption_cast<const QStyleOptionTabV2 *>(&other)) {
- *this = *tab;
- } else {
- *((QStyleOptionTab *)this) = other;
- version = Version;
- }
-}
-
-/*!
- Assigns the \a other style option to this QStyleOptionTabV2. The
- \a other style option can be either of the QStyleOptionTabV2 or
- QStyleOptionTab types.
-
- If the other style option's version is 1, this style option's \c
- iconSize is set to an invalid size. If its version is 2, its \c
- iconSize value is simply copied to this style option.
-*/
-QStyleOptionTabV2 &QStyleOptionTabV2::operator=(const QStyleOptionTab &other)
-{
- QStyleOptionTab::operator=(other);
-
- if (const QStyleOptionTabV2 *tab = qstyleoption_cast<const QStyleOptionTabV2 *>(&other))
- iconSize = tab->iconSize;
- else
- iconSize = QSize();
- return *this;
-}
-
-/*!
- \class QStyleOptionTabV3
- \brief The QStyleOptionTabV3 class is used to describe the
- parameters necessary for drawing a tabs in Qt 4.5 or above.
-
- \since 4.5
- \inmodule QtWidgets
-
- An instance of the QStyleOptionTabV3 class has
- \l{QStyleOption::type} {type} \l SO_Tab and
- \l{QStyleOption::version} {version} 3. The type is used internally
- by QStyleOption, its subclasses, and qstyleoption_cast() to
- determine the type of style option. In general you do not need to
- worry about this unless you want to create your own QStyleOption
- subclass and your own styles. The version is used by QStyleOption
- subclasses to implement extensions without breaking
- compatibility. If you use qstyleoption_cast(), you normally do not
- need to check it.
-
- If you create your own QStyle subclass, you should handle both
- QStyleOptionTab, QStyleOptionTabV2 and QStyleOptionTabV3.
- One way to achieve this is to use the QStyleOptionTabV3 copy
- constructor. For example:
-
- \snippet doc/src/snippets/qstyleoption/main.cpp 3
-
- In the example above: If \c tabOption's version is 1, the extra
- member (\l{QStyleOptionTabV2::iconSize}{iconSize}) will be set to
- an invalid size for \c tabV2. If \c tabOption's version is 2, the
- constructor will simply copy the \c tab's iconSize.
-
- For an example demonstrating how style options can be used, see
- the \l {widgets/styles}{Styles} example.
-
- \sa QStyleOptionTab, QStyleOption
-*/
-
-/*!
- \enum QStyleOptionTabV3::StyleOptionVersion
-
- This enum is used to hold information about the version of the style option, and
- is defined for each QStyleOption subclass.
-
- \value Version 3
-
- The version is used by QStyleOption subclasses to implement
- extensions without breaking compatibility. If you use
- qstyleoption_cast(), you normally do not need to check it.
-
- \sa StyleOptionType
-*/
-
-/*!
- \variable QStyleOptionTabV3::documentMode
+ \variable QStyleOptionTab::documentMode
\brief whether the tabbar is in document mode.
The default value is false;
*/
/*!
- \variable QStyleOptionTabV3::leftButtonSize
+ \variable QStyleOptionTab::leftButtonSize
\brief the size for the left widget on the tab.
The default value is QSize(-1, -1), i.e. an invalid size;
*/
/*!
- \variable QStyleOptionTabV3::rightButtonSize
+ \variable QStyleOptionTab::rightButtonSize
\brief the size for the right widget on the tab.
The default value is QSize(-1, -1), i.e. an invalid size;
*/
-/*!
- Constructs a QStyleOptionTabV3.
-*/
-
-QStyleOptionTabV3::QStyleOptionTabV3()
- : QStyleOptionTabV2(Version)
- , documentMode(false)
-{
-}
-
-/*!
- \internal
-*/
-QStyleOptionTabV3::QStyleOptionTabV3(int version)
- : QStyleOptionTabV2(version)
-{
-}
-
-/*!
- \fn QStyleOptionTabV3::QStyleOptionTabV3(const QStyleOptionTabV3 &other)
-
- Constructs a copy of the \a other style option.
-*/
-
-/*!
- \fn QStyleOptionTabV3::QStyleOptionTabV3(const QStyleOptionTabV2 &other)
-
- Constructs a copy of the \a other style option.
-*/
-
-/*!
- Constructs a QStyleOptionTabV3 copy of the \a other style option
- which can be either of the QStyleOptionTabV3, QStyleOptionTabV2
- or QStyleOptionTab types.
-
- If the other style option's version is 1 or 2, the new style option's
- \c leftButtonSize and \c rightButtonSize is set to an invalid value. If
- its version is 3, its \c leftButtonSize and \c rightButtonSize values
- are simply copied to the new style option.
-*/
-QStyleOptionTabV3::QStyleOptionTabV3(const QStyleOptionTab &other)
- : QStyleOptionTabV2(Version)
-{
- if (const QStyleOptionTabV3 *tab = qstyleoption_cast<const QStyleOptionTabV3 *>(&other)) {
- *this = *tab;
- } else {
- *((QStyleOptionTabV2 *)this) = other;
- version = Version;
- }
-}
-
-/*!
- Assigns the \a other style option to this QStyleOptionTabV3. The
- \a other style option can be either of the QStyleOptionTabV3,
- QStyleOptionTabV2 or QStyleOptionTab types.
-
- If the other style option's version is 1 or 2, the new style option's
- \c leftButtonSize and \c rightButtonSize is set to an invalid value. If
- its version is 3, its \c leftButtonSize and \c rightButtonSize values
- are simply copied to the new style option.
-*/
-QStyleOptionTabV3 &QStyleOptionTabV3::operator=(const QStyleOptionTab &other)
-{
- QStyleOptionTabV2::operator=(other);
-
- if (const QStyleOptionTabV3 *tab = qstyleoption_cast<const QStyleOptionTabV3 *>(&other)) {
- leftButtonSize = tab->leftButtonSize;
- rightButtonSize = tab->rightButtonSize;
- } else {
- leftButtonSize = QSize();
- rightButtonSize = QSize();
- documentMode = false;
- }
- return *this;
-}
-
#endif // QT_NO_TABBAR
/*!
@@ -2271,12 +1465,9 @@ QStyleOptionTabV3 &QStyleOptionTabV3::operator=(const QStyleOptionTab &other)
parameters necessary for drawing a progress bar.
\inmodule QtWidgets
-
- Since Qt 4.1, Qt uses the QStyleOptionProgressBarV2 subclass for
- drawing QProgressBar.
An instance of the QStyleOptionProgressBar class has type
- SO_ProgressBar and version 1.
+ SO_ProgressBar and version 2.
The type is used internally by QStyleOption, its subclasses, and
qstyleoption_cast() to determine the type of style option. In
@@ -2286,13 +1477,17 @@ QStyleOptionTabV3 &QStyleOptionTabV3::operator=(const QStyleOptionTab &other)
without breaking compatibility. If you use qstyleoption_cast(),
you normally do not need to check it.
- If you create your own QStyle subclass, you should handle both
- QStyleOptionProgressBar and QStyleOptionProgressBarV2.
-
For an example demonstrating how style options can be used, see
the \l {widgets/styles}{Styles} example.
- \sa QStyleOptionProgressBarV2, QStyleOption
+ \sa QStyleOption
+*/
+
+/*!
+ \typedef QStyleOptionProgressBarV2
+ \relates QStyleOptionProgressBar
+
+ Synonym for QStyleOptionProgressBar.
*/
/*!
@@ -2302,7 +1497,8 @@ QStyleOptionTabV3 &QStyleOptionTabV3::operator=(const QStyleOptionTab &other)
QStyleOptionProgressBar::QStyleOptionProgressBar()
: QStyleOption(QStyleOptionProgressBar::Version, SO_ProgressBar),
- minimum(0), maximum(0), progress(0), textAlignment(Qt::AlignLeft), textVisible(false)
+ minimum(0), maximum(0), progress(0), textAlignment(Qt::AlignLeft), textVisible(false),
+ orientation(Qt::Horizontal), invertedAppearance(false), bottomToTop(false)
{
}
@@ -2311,7 +1507,8 @@ QStyleOptionProgressBar::QStyleOptionProgressBar()
*/
QStyleOptionProgressBar::QStyleOptionProgressBar(int version)
: QStyleOption(version, SO_ProgressBar),
- minimum(0), maximum(0), progress(0), textAlignment(Qt::AlignLeft), textVisible(false)
+ minimum(0), maximum(0), progress(0), textAlignment(Qt::AlignLeft), textVisible(false),
+ orientation(Qt::Horizontal), invertedAppearance(false), bottomToTop(false)
{
}
@@ -2343,7 +1540,7 @@ QStyleOptionProgressBar::QStyleOptionProgressBar(int version)
This enum is used to hold information about the version of the style option, and
is defined for each QStyleOption subclass.
- \value Version 1
+ \value Version 2
The version is used by QStyleOption subclasses to implement
extensions without breaking compatibility. If you use
@@ -2414,118 +1611,7 @@ QStyleOptionProgressBar::QStyleOptionProgressBar(int version)
*/
/*!
- \class QStyleOptionProgressBarV2
- \brief The QStyleOptionProgressBarV2 class is used to describe the
- parameters necessary for drawing a progress bar in Qt 4.1 or above.
-
- \since 4.1
- \inmodule QtWidgets
-
- An instance of this class has \l{QStyleOption::type} {type}
- SO_ProgressBar and \l{QStyleOption::version} {version} 2.
-
- The type is used internally by QStyleOption, its subclasses, and
- qstyleoption_cast() to determine the type of style option. In
- general you do not need to worry about this unless you want to
- create your own QStyleOption subclass and your own styles. The
- version is used by QStyleOption subclasses to implement extensions
- without breaking compatibility. If you use qstyleoption_cast(),
- you normally do not need to check it.
-
- If you create your own QStyle subclass, you should handle both
- QStyleOptionProgressBar and QStyleOptionProgressBarV2. One way
- to achieve this is to use the QStyleOptionProgressBarV2 copy
- constructor. For example:
-
- \snippet doc/src/snippets/qstyleoption/main.cpp 2
-
- In the example above: If the \c progressBarOption's version is 1,
- the extra members (\l orientation, \l invertedAppearance, and \l
- bottomToTop) are set to default values for \c progressBarV2. If
- the \c progressBarOption's version is 2, the constructor will
- simply copy the extra members to progressBarV2.
-
- For an example demonstrating how style options can be used, see
- the \l {widgets/styles}{Styles} example.
-
- \sa QStyleOptionProgressBar, QStyleOption
-*/
-
-/*!
- Constructs a QStyleOptionProgressBarV2, initializing he members
- variables to their default values.
-*/
-
-QStyleOptionProgressBarV2::QStyleOptionProgressBarV2()
- : QStyleOptionProgressBar(2),
- orientation(Qt::Horizontal), invertedAppearance(false), bottomToTop(false)
-{
-}
-
-/*!
- \internal
-*/
-QStyleOptionProgressBarV2::QStyleOptionProgressBarV2(int version)
- : QStyleOptionProgressBar(version),
- orientation(Qt::Horizontal), invertedAppearance(false), bottomToTop(false)
-{
-}
-
-/*!
- Constructs a copy of the \a other style option which can be either
- of the QStyleOptionProgressBar and QStyleOptionProgressBarV2
- types.
-
- If the \a{other} style option's version is 1, the extra members (\l
- orientation, \l invertedAppearance, and \l bottomToTop) are set
- to default values for the new style option. If \a{other}'s version
- is 2, the extra members are simply copied.
-
- \sa version
-*/
-QStyleOptionProgressBarV2::QStyleOptionProgressBarV2(const QStyleOptionProgressBar &other)
- : QStyleOptionProgressBar(2), orientation(Qt::Horizontal), invertedAppearance(false), bottomToTop(false)
-{
- const QStyleOptionProgressBarV2 *pb2 = qstyleoption_cast<const QStyleOptionProgressBarV2 *>(&other);
- if (pb2)
- *this = *pb2;
- else
- *((QStyleOptionProgressBar *)this) = other;
-}
-
-/*!
- Constructs a copy of the \a other style option.
-*/
-QStyleOptionProgressBarV2::QStyleOptionProgressBarV2(const QStyleOptionProgressBarV2 &other)
- : QStyleOptionProgressBar(2), orientation(Qt::Horizontal), invertedAppearance(false), bottomToTop(false)
-{
- *this = other;
-}
-
-/*!
- Assigns the \a other style option to this style option. The \a
- other style option can be either of the QStyleOptionProgressBarV2
- or QStyleOptionProgressBar types.
-
- If the \a{other} style option's version is 1, the extra members
- (\l orientation, \l invertedAppearance, and \l bottomToTop) are
- set to default values for this style option. If \a{other}'s
- version is 2, the extra members are simply copied to this style
- option.
-*/
-QStyleOptionProgressBarV2 &QStyleOptionProgressBarV2::operator=(const QStyleOptionProgressBar &other)
-{
- QStyleOptionProgressBar::operator=(other);
-
- const QStyleOptionProgressBarV2 *pb2 = qstyleoption_cast<const QStyleOptionProgressBarV2 *>(&other);
- orientation = pb2 ? pb2->orientation : Qt::Horizontal;
- invertedAppearance = pb2 ? pb2->invertedAppearance : false;
- bottomToTop = pb2 ? pb2->bottomToTop : false;
- return *this;
-}
-
-/*!
- \variable QStyleOptionProgressBarV2::orientation
+ \variable QStyleOptionProgressBar::orientation
\brief the progress bar's orientation (horizontal or vertical);
the default orentation is Qt::Horizontal
@@ -2533,7 +1619,7 @@ QStyleOptionProgressBarV2 &QStyleOptionProgressBarV2::operator=(const QStyleOpti
*/
/*!
- \variable QStyleOptionProgressBarV2::invertedAppearance
+ \variable QStyleOptionProgressBar::invertedAppearance
\brief whether the progress bar's appearance is inverted
The default value is false.
@@ -2542,7 +1628,7 @@ QStyleOptionProgressBarV2 &QStyleOptionProgressBarV2::operator=(const QStyleOpti
*/
/*!
- \variable QStyleOptionProgressBarV2::bottomToTop
+ \variable QStyleOptionProgressBar::bottomToTop
\brief whether the text reads from bottom to top when the progress
bar is vertical
@@ -2552,38 +1638,6 @@ QStyleOptionProgressBarV2 &QStyleOptionProgressBarV2::operator=(const QStyleOpti
*/
/*!
- \enum QStyleOptionProgressBarV2::StyleOptionType
-
- This enum is used to hold information about the type of the style option, and
- is defined for each QStyleOption subclass.
-
- \value Type The type of style option provided (\l{SO_ProgressBar} for this class).
-
- The type is used internally by QStyleOption, its subclasses, and
- qstyleoption_cast() to determine the type of style option. In
- general you do not need to worry about this unless you want to
- create your own QStyleOption subclass and your own styles.
-
- \sa StyleOptionVersion
-*/
-
-/*!
- \enum QStyleOptionProgressBarV2::StyleOptionVersion
-
- This enum is used to hold information about the version of the style option, and
- is defined for each QStyleOption subclass.
-
- \value Version 2
-
- The version is used by QStyleOption subclasses to implement
- extensions without breaking compatibility. If you use
- qstyleoption_cast(), you normally do not need to check it.
-
- \sa StyleOptionType
-*/
-
-
-/*!
\class QStyleOptionMenuItem
\brief The QStyleOptionMenuItem class is used to describe the
parameter necessary for drawing a menu item.
@@ -3576,13 +2630,20 @@ QStyleOptionQ3DockWindow::QStyleOptionQ3DockWindow(int version)
*/
/*!
+ \typedef QStyleOptionDockWidgetV2
+ \relates QStyleOptionDockWidget
+
+ Synonym for QStyleOptionDockWidget.
+*/
+
+/*!
Constructs a QStyleOptionDockWidget, initializing the member
variables to their default values.
*/
QStyleOptionDockWidget::QStyleOptionDockWidget()
: QStyleOption(Version, SO_DockWidget), closable(false),
- movable(false), floatable(false)
+ movable(false), floatable(false), verticalTitleBar(false)
{
}
@@ -3591,34 +2652,7 @@ QStyleOptionDockWidget::QStyleOptionDockWidget()
*/
QStyleOptionDockWidget::QStyleOptionDockWidget(int version)
: QStyleOption(version, SO_DockWidget), closable(false),
- movable(false), floatable(false)
-{
-}
-
-QStyleOptionDockWidgetV2::QStyleOptionDockWidgetV2()
- : QStyleOptionDockWidget(Version), verticalTitleBar(false)
-{
-}
-
-QStyleOptionDockWidgetV2::QStyleOptionDockWidgetV2(
- const QStyleOptionDockWidget &other)
- : QStyleOptionDockWidget(Version)
-{
- (void)QStyleOptionDockWidgetV2::operator=(other);
-}
-
-QStyleOptionDockWidgetV2 &QStyleOptionDockWidgetV2::operator = (
- const QStyleOptionDockWidget &other)
-{
- QStyleOptionDockWidget::operator=(other);
- const QStyleOptionDockWidgetV2 *v2
- = qstyleoption_cast<const QStyleOptionDockWidgetV2*>(&other);
- verticalTitleBar = v2 ? v2->verticalTitleBar : false;
- return *this;
-}
-
-QStyleOptionDockWidgetV2::QStyleOptionDockWidgetV2(int version)
- : QStyleOptionDockWidget(version), verticalTitleBar(false)
+ movable(false), floatable(false), verticalTitleBar(false)
{
}
@@ -3650,7 +2684,7 @@ QStyleOptionDockWidgetV2::QStyleOptionDockWidgetV2(int version)
This enum is used to hold information about the version of the style option, and
is defined for each QStyleOption subclass.
- \value Version 1
+ \value Version 2
The version is used by QStyleOption subclasses to implement
extensions without breaking compatibility. If you use
@@ -3693,7 +2727,7 @@ QStyleOptionDockWidgetV2::QStyleOptionDockWidgetV2(int version)
parameters for drawing a tool button.
\inmodule QtWidgets
-
+
QStyleOptionToolButton contains all the information that QStyle
functions need to draw QToolButton.
@@ -3857,7 +2891,7 @@ QStyleOptionToolButton::QStyleOptionToolButton(int version)
parameter for drawing a combobox.
\inmodule QtWidgets
-
+
QStyleOptionButton contains all the information that QStyle
functions need to draw QComboBox.
@@ -3985,7 +3019,7 @@ QStyleOptionComboBox::QStyleOptionComboBox(int version)
parameters needed for drawing a tool box.
\inmodule QtWidgets
-
+
QStyleOptionToolBox contains all the information that QStyle
functions need to draw QToolBox.
@@ -4001,12 +3035,19 @@ QStyleOptionComboBox::QStyleOptionComboBox(int version)
*/
/*!
+ \typedef QStyleOptionToolBoxV2
+ \relates QStyleOptionToolBox
+
+ Synonym for QStyleOptionToolBox.
+*/
+
+/*!
Creates a QStyleOptionToolBox, initializing the members variables
to their default values.
*/
QStyleOptionToolBox::QStyleOptionToolBox()
- : QStyleOption(Version, SO_ToolBox)
+ : QStyleOption(Version, SO_ToolBox), position(Beginning), selectedPosition(NotAdjacent)
{
}
@@ -4014,7 +3055,7 @@ QStyleOptionToolBox::QStyleOptionToolBox()
\internal
*/
QStyleOptionToolBox::QStyleOptionToolBox(int version)
- : QStyleOption(version, SO_ToolBox)
+ : QStyleOption(version, SO_ToolBox), position(Beginning), selectedPosition(NotAdjacent)
{
}
@@ -4046,7 +3087,7 @@ QStyleOptionToolBox::QStyleOptionToolBox(int version)
This enum is used to hold information about the version of the style option, and
is defined for each QStyleOption subclass.
- \value Version 1
+ \value Version 2
The version is used by QStyleOption subclasses to implement
extensions without breaking compatibility. If you use
@@ -4071,104 +3112,7 @@ QStyleOptionToolBox::QStyleOptionToolBox(int version)
*/
/*!
- \class QStyleOptionToolBoxV2
- \brief The QStyleOptionToolBoxV2 class is used to describe the parameters necessary for drawing a frame in Qt 4.3 or above.
-
- \since 4.3
- \inmodule QtWidgets
-
- QStyleOptionToolBoxV2 inherits QStyleOptionToolBox which is used for
- drawing the tabs in a QToolBox.
-
- An instance of the QStyleOptionToolBoxV2 class has
- \l{QStyleOption::type} {type} SO_ToolBox and
- \l{QStyleOption::version} {version} 2. The type is used
- internally by QStyleOption, its subclasses, and
- qstyleoption_cast() to determine the type of style option. In
- general you do not need to worry about this unless you want to
- create your own QStyleOption subclass and your own styles. The
- version is used by QStyleOption subclasses to implement extensions
- without breaking compatibility. If you use qstyleoption_cast(),
- you normally do not need to check it.
-
- If you create your own QStyle subclass, you should handle both
- QStyleOptionToolBox and QStyleOptionToolBoxV2.
-
- \sa QStyleOptionToolBox, QStyleOption
-*/
-
-/*!
- Contsructs a QStyleOptionToolBoxV2 object.
-*/
-QStyleOptionToolBoxV2::QStyleOptionToolBoxV2()
- : QStyleOptionToolBox(Version), position(Beginning), selectedPosition(NotAdjacent)
-{
-}
-
-/*!
- \fn QStyleOptionToolBoxV2::QStyleOptionToolBoxV2(const QStyleOptionToolBoxV2 &other)
-
- Constructs a QStyleOptionToolBoxV2 copy of the \a other style option.
-*/
-
-/*!
- \internal
-*/
-QStyleOptionToolBoxV2::QStyleOptionToolBoxV2(int version)
- : QStyleOptionToolBox(version), position(Beginning), selectedPosition(NotAdjacent)
-{
-}
-
-/*!
- Constructs a QStyleOptionToolBoxV2 copy of the \a other style option
- which can be either of the QStyleOptionToolBoxV2 or
- QStyleOptionToolBox types.
-
- If the \a other style option's version is 1, the new style
- option's \l{QStyleOptionTab::position} {position} value is set to
- \l QStyleOptionToolBoxV2::Beginning and \l selectedPosition is set
- to \l QStyleOptionToolBoxV2::NotAdjacent. If its version is 2, the
- \l{QStyleOptionTab::position} {position} selectedPosition values
- are simply copied to the new style option.
-
- \sa version
-*/
-QStyleOptionToolBoxV2::QStyleOptionToolBoxV2(const QStyleOptionToolBox &other)
-{
- QStyleOptionToolBox::operator=(other);
-
- const QStyleOptionToolBoxV2 *f2 = qstyleoption_cast<const QStyleOptionToolBoxV2 *>(&other);
- position = f2 ? f2->position : Beginning;
- selectedPosition = f2 ? f2->selectedPosition : NotAdjacent;
- version = Version;
-}
-
-/*!
- Assigns the \a other style option to this style option. The \a
- other style option can be either of the QStyleOptionToolBoxV2 or
- QStyleOptionToolBox types.
-
- If the \a{other} style option's version is 1, this style option's
- \l{QStyleOptionTab::position} {position} and \l selectedPosition
- values are set to \l QStyleOptionToolBoxV2::Beginning and \l
- QStyleOptionToolBoxV2::NotAdjacent respectively. If its
- \l{QStyleOption::version} {version} is 2, these values are simply
- copied to this style option.
-*/
-QStyleOptionToolBoxV2 &QStyleOptionToolBoxV2::operator=(const QStyleOptionToolBox &other)
-{
- QStyleOptionToolBox::operator=(other);
-
- const QStyleOptionToolBoxV2 *f2 = qstyleoption_cast<const QStyleOptionToolBoxV2 *>(&other);
- position = f2 ? f2->position : Beginning;
- selectedPosition = f2 ? f2->selectedPosition : NotAdjacent;
- version = Version;
- return *this;
-}
-
-
-/*!
- \enum QStyleOptionToolBoxV2::SelectedPosition
+ \enum QStyleOptionToolBox::SelectedPosition
This enum describes the position of the selected tab. Some styles
need to draw a tab differently depending on whether or not it is
@@ -4182,15 +3126,7 @@ QStyleOptionToolBoxV2 &QStyleOptionToolBoxV2::operator=(const QStyleOptionToolBo
*/
/*!
- \enum QStyleOptionToolBoxV2::StyleOptionVersion
-
- This enum holds the version of this style option
-
- \value Version 2
-*/
-
-/*!
- \enum QStyleOptionToolBoxV2::TabPosition
+ \enum QStyleOptionToolBox::TabPosition
This enum describes tab positions relative to other tabs.
@@ -4202,7 +3138,7 @@ QStyleOptionToolBoxV2 &QStyleOptionToolBoxV2::operator=(const QStyleOptionToolBo
*/
/*!
- \variable QStyleOptionToolBoxV2::selectedPosition
+ \variable QStyleOptionToolBox::selectedPosition
\brief the position of the selected tab in relation to this tab
The default value is NotAdjacent, i.e. the tab is not adjacent to
@@ -4216,7 +3152,7 @@ QStyleOptionToolBoxV2 &QStyleOptionToolBoxV2::operator=(const QStyleOptionToolBo
parameters needed for drawing a rubber band.
\inmodule QtWidgets
-
+
QStyleOptionRubberBand contains all the information that
QStyle functions need to draw QRubberBand.
@@ -4307,7 +3243,7 @@ QStyleOptionRubberBand::QStyleOptionRubberBand(int version)
parameters for drawing a title bar.
\inmodule QtWidgets
-
+
QStyleOptionTitleBar contains all the information that QStyle
functions need to draw the title bar of a QMdiSubWindow.
@@ -4412,13 +3348,14 @@ QStyleOptionTitleBar::QStyleOptionTitleBar(int version)
\sa Qt::WindowFlags
*/
+#ifndef QT_NO_ITEMVIEWS
/*!
\class QStyleOptionViewItem
\brief The QStyleOptionViewItem class is used to describe the
parameters used to draw an item in a view widget.
\inmodule QtWidgets
-
+
QStyleOptionViewItem contains all the information that QStyle
functions need to draw the items for Qt's model/view classes.
@@ -4435,6 +3372,27 @@ QStyleOptionTitleBar::QStyleOptionTitleBar(int version)
*/
/*!
+ \typedef QStyleOptionViewItemV2
+ \relates QStyleOptionViewItem
+
+ Synonym for QStyleOptionViewItem.
+*/
+
+/*!
+ \typedef QStyleOptionViewItemV3
+ \relates QStyleOptionViewItem
+
+ Synonym for QStyleOptionViewItem.
+*/
+
+/*!
+ \typedef QStyleOptionViewItemV4
+ \relates QStyleOptionViewItem
+
+ Synonym for QStyleOptionViewItem.
+*/
+
+/*!
\enum QStyleOptionViewItem::Position
This enum describes the position of the item's decoration.
@@ -4479,7 +3437,8 @@ QStyleOptionViewItem::QStyleOptionViewItem()
: QStyleOption(Version, SO_ViewItem),
displayAlignment(Qt::AlignLeft), decorationAlignment(Qt::AlignLeft),
textElideMode(Qt::ElideMiddle), decorationPosition(Left),
- showDecorationSelected(false)
+ showDecorationSelected(false), features(None), widget(0),
+ checkState(Qt::Unchecked), viewItemPosition(QStyleOptionViewItem::Invalid)
{
}
@@ -4490,7 +3449,8 @@ QStyleOptionViewItem::QStyleOptionViewItem(int version)
: QStyleOption(version, SO_ViewItem),
displayAlignment(Qt::AlignLeft), decorationAlignment(Qt::AlignLeft),
textElideMode(Qt::ElideMiddle), decorationPosition(Left),
- showDecorationSelected(false)
+ showDecorationSelected(false), features(None), widget(0),
+ checkState(Qt::Unchecked), viewItemPosition(QStyleOptionViewItem::Invalid)
{
}
@@ -4522,7 +3482,7 @@ QStyleOptionViewItem::QStyleOptionViewItem(int version)
This enum is used to hold information about the version of the style option, and
is defined for each QStyleOption subclass.
- \value Version 1
+ \value Version 4
The version is used by QStyleOption subclasses to implement
extensions without breaking compatibility. If you use
@@ -4573,6 +3533,87 @@ QStyleOptionViewItem::QStyleOptionViewItem(int version)
*/
/*!
+ \variable QStyleOptionViewItem::features
+ \brief a bitwise OR of the features that describe this view item
+
+ \sa ViewItemFeature
+*/
+
+/*!
+ \enum QStyleOptionViewItem::ViewItemFeature
+
+ This enum describes the different types of features an item can have.
+
+ \value None Indicates a normal item.
+ \value WrapText Indicates an item with wrapped text.
+ \value Alternate Indicates that the item's background is rendered using alternateBase.
+ \value HasCheckIndicator Indicates that the item has a check state indicator.
+ \value HasDisplay Indicates that the item has a display role.
+ \value HasDecoration Indicates that the item has a decoration role.
+*/
+
+/*!
+ \variable QStyleOptionViewItem::index
+
+ The model index that is to be drawn.
+*/
+
+/*!
+ \variable QStyleOptionViewItem::checkState
+
+ If this view item is checkable, i.e.,
+ ViewItemFeature::HasCheckIndicator is true, \c checkState is true
+ if the item is checked; otherwise, it is false.
+
+*/
+
+/*!
+ \variable QStyleOptionViewItem::icon
+
+ The icon (if any) to be drawn in the view item.
+*/
+
+
+/*!
+ \variable QStyleOptionViewItem::text
+
+ The text (if any) to be drawn in the view item.
+*/
+
+/*!
+ \variable QStyleOptionViewItem::backgroundBrush
+
+ The QBrush that should be used to paint the view items
+ background.
+*/
+
+/*!
+ \variable QStyleOptionViewItem::viewItemPosition
+
+ Gives the position of this view item relative to other items. See
+ the \l{QStyleOptionViewItem::}{ViewItemPosition} enum for the
+ details.
+*/
+
+/*!
+ \enum QStyleOptionViewItem::ViewItemPosition
+
+ This enum is used to represent the placement of the item on
+ a row. This can be used to draw items differently depending
+ on their placement, for example by putting rounded edges at
+ the beginning and end, and straight edges in between.
+
+ \value Invalid The ViewItemPosition is unknown and should be
+ disregarded.
+ \value Beginning The item appears at the beginning of the row.
+ \value Middle The item appears in the middle of the row.
+ \value End The item appears at the end of the row.
+ \value OnlyOne The item is the only one on the row, and is
+ therefore both at the beginning and the end.
+*/
+
+#endif // QT_NO_ITEMVIEWS
+/*!
\fn T qstyleoption_cast<T>(const QStyleOption *option)
\relates QStyleOption
@@ -4601,7 +3642,7 @@ QStyleOptionViewItem::QStyleOptionViewItem(int version)
parameters for drawing the frame around a tab widget.
\inmodule QtWidgets
-
+
QStyleOptionTabWidgetFrame contains all the information that
QStyle functions need to draw the frame around QTabWidget.
@@ -4617,6 +3658,13 @@ QStyleOptionViewItem::QStyleOptionViewItem(int version)
*/
/*!
+ \typedef QStyleOptionTabWidgetFrameV2
+ \relates QStyleOptionTabWidgetFrame
+
+ Synonym for QStyleOptionTabWidgetFrame.
+*/
+
+/*!
Constructs a QStyleOptionTabWidgetFrame, initializing the members
variables to their default values.
*/
@@ -4661,7 +3709,7 @@ QStyleOptionTabWidgetFrame::QStyleOptionTabWidgetFrame(int version)
This enum is used to hold information about the version of the style option, and
is defined for each QStyleOption subclass.
- \value Version 1
+ \value Version 2
The version is used by QStyleOption subclasses to implement
extensions without breaking compatibility. If you use
@@ -4714,30 +3762,7 @@ QStyleOptionTabWidgetFrame::QStyleOptionTabWidgetFrame(int version)
/*!
-
- \class QStyleOptionTabWidgetFrameV2
- \brief The QStyleOptionTabWidgetFrameV2 class is used to describe the
- parameters for drawing the frame around a tab widget.
-
- \inmodule QtWidgets
-
- QStyleOptionTabWidgetFrameV2 contains all the information that
- QStyle functions need to draw the frame around QTabWidget.
-
- For performance reasons, the access to the member variables is
- direct (i.e., using the \c . or \c -> operator). This low-level feel
- makes the structures straightforward to use and emphasizes that
- these are simply parameters used by the style functions.
-
- For an example demonstrating how style options can be used, see
- the \l {widgets/styles}{Styles} example.
-
- \sa QStyleOption, QTabWidget
-*/
-
-
-/*!
- \variable QStyleOptionTabWidgetFrameV2::tabBarRect
+ \variable QStyleOptionTabWidgetFrame::tabBarRect
\brief the rectangle containing all the tabs
The default value is a null rectangle, i.e. a rectangle with both
@@ -4745,7 +3770,7 @@ QStyleOptionTabWidgetFrame::QStyleOptionTabWidgetFrame(int version)
*/
/*!
- \variable QStyleOptionTabWidgetFrameV2::selectedTabRect
+ \variable QStyleOptionTabWidgetFrame::selectedTabRect
\brief the rectangle containing the selected tab
This rectangle is contained within the tabBarRect. The default
@@ -4753,87 +3778,6 @@ QStyleOptionTabWidgetFrame::QStyleOptionTabWidgetFrame(int version)
and the height set to 0.
*/
-
-/*!
- Constructs a QStyleOptionTabWidgetFrameV2, initializing the members
- variables to their default values.
-*/
-
-QStyleOptionTabWidgetFrameV2::QStyleOptionTabWidgetFrameV2()
- : QStyleOptionTabWidgetFrame(Version)
-{
-}
-
-
-/*! \internal */
-QStyleOptionTabWidgetFrameV2::QStyleOptionTabWidgetFrameV2(int version)
- : QStyleOptionTabWidgetFrame(version)
-{
-}
-
-
-/*! \fn QStyleOptionTabWidgetFrameV2::QStyleOptionTabWidgetFrameV2(const QStyleOptionTabWidgetFrameV2 &other)
- Constructs a QStyleOptionTabWidgetFrameV2 copy of the \a other style option.
-
- If the \a other style option's version is 1, the new style option's \l
- selectedTabRect and tabBarRect will contain null rects
-
- \sa version
-*/
-
-/*!
- Constructs a QStyleOptionTabWidgetFrameV2 copy of the \a other style option.
-
- If the \a other style option's version is 1, the new style option's \l
- selectedTabRect and tabBarRect will contain null rects
-
- \sa version
-*/
-QStyleOptionTabWidgetFrameV2::QStyleOptionTabWidgetFrameV2(const QStyleOptionTabWidgetFrame &other)
-{
- QStyleOptionTabWidgetFrameV2::operator=(other);
-
-}
-
-
-/*!
- Assigns the \a other style option to this style option. The \a
- other style option can be either of the QStyleOptionFrameV2 or
- QStyleOptionFrame types.
-
- If the \a{other} style option's version is 1, this style option's
- QStyleOptionFrameV2::FrameFeature value is set to
- QStyleOptionFrameV2::None. If its version is 2, its
- \l{QStyleOptionFrameV2::}{FrameFeature} value is simply copied to
- this style option.
-*/
-QStyleOptionTabWidgetFrameV2 &QStyleOptionTabWidgetFrameV2::operator=(const QStyleOptionTabWidgetFrame &other)
-{
- QStyleOptionTabWidgetFrame::operator=(other);
- if (const QStyleOptionTabWidgetFrameV2 *f2 = qstyleoption_cast<const QStyleOptionTabWidgetFrameV2 *>(&other)) {
- selectedTabRect = f2->selectedTabRect;
- tabBarRect = f2->tabBarRect;
- }
- return *this;
-}
-
-
-/*!
- \enum QStyleOptionTabWidgetFrameV2::StyleOptionVersion
-
- This enum is used to hold information about the version of the style option, and
- is defined for each QStyleOption subclass.
-
- \value Version 2
-
- The version is used by QStyleOption subclasses to implement
- extensions without breaking compatibility. If you use
- qstyleoption_cast(), you normally do not need to check it.
-
- \sa StyleOptionType
-*/
-
-
#endif // QT_NO_TABWIDGET
#ifndef QT_NO_TABBAR
@@ -4845,7 +3789,7 @@ QStyleOptionTabWidgetFrameV2 &QStyleOptionTabWidgetFrameV2::operator=(const QSty
overlaps with.
\inmodule QtWidgets
-
+
QStyleOptionTabBarBase contains all the information that QStyle
functions need to draw the tab bar base. Note that this is only
drawn for a standalone QTabBar (one that isn't part of a
@@ -4863,17 +3807,26 @@ QStyleOptionTabWidgetFrameV2 &QStyleOptionTabWidgetFrameV2::operator=(const QSty
*/
/*!
+ \typedef QStyleOptionTabBarBaseV2
+ \relates QStyleOptionTabBarBase
+
+ Synonym for QStyleOptionTabBarBase.
+*/
+
+/*!
Construct a QStyleOptionTabBarBase, initializing the members
vaiables to their default values.
*/
QStyleOptionTabBarBase::QStyleOptionTabBarBase()
- : QStyleOption(Version, SO_TabBarBase), shape(QTabBar::RoundedNorth)
+ : QStyleOption(Version, SO_TabBarBase), shape(QTabBar::RoundedNorth),
+ documentMode(false)
{
}
/*! \internal */
QStyleOptionTabBarBase::QStyleOptionTabBarBase(int version)
- : QStyleOption(version, SO_TabBarBase), shape(QTabBar::RoundedNorth)
+ : QStyleOption(version, SO_TabBarBase), shape(QTabBar::RoundedNorth),
+ documentMode(false)
{
}
@@ -4905,7 +3858,7 @@ QStyleOptionTabBarBase::QStyleOptionTabBarBase(int version)
This enum is used to hold information about the version of the style option, and
is defined for each QStyleOption subclass.
- \value Version 1
+ \value Version 2
The version is used by QStyleOption subclasses to implement
extensions without breaking compatibility. If you use
@@ -4940,96 +3893,12 @@ QStyleOptionTabBarBase::QStyleOptionTabBarBase(int version)
/*!
- \class QStyleOptionTabBarBaseV2
- \brief The QStyleOptionTabBarBaseV2 class is used to describe
- the base of a tab bar, i.e. the part that the tab bar usually
- overlaps with.
- \since 4.5
- \inmodule QtWidgets
-
- QStyleOptionTabBarBase contains all the information that QStyle
- functions need to draw the tab bar base.
-
- For performance reasons, the access to the member variables is
- direct (i.e., using the \c . or \c -> operator). This low-level feel
- makes the structures straightforward to use and emphasizes that
- these are simply parameters used by the style functions.
-
- For an example demonstrating how style options can be used, see
- the \l {widgets/styles}{Styles} example.
-
- \sa QStyleOption, QTabBar::drawBase()
-*/
-
-/*!
- \enum QStyleOptionTabBarBaseV2::StyleOptionVersion
-
- This enum is used to hold information about the version of the style option, and
- is defined for each QStyleOption subclass.
-
- \value Version 2
-
- The version is used by QStyleOption subclasses to implement
- extensions without breaking compatibility. If you use
- qstyleoption_cast(), you normally do not need to check it.
-
- \sa StyleOptionType
-*/
-
-/*!
- \variable QStyleOptionTabBarBaseV2::documentMode
+ \variable QStyleOptionTabBarBase::documentMode
\brief whether the tabbar is in document mode.
The default value is false;
*/
-/*!
- Construct a QStyleOptionTabBarBaseV2, initializing the members
- vaiables to their default values.
-*/
-QStyleOptionTabBarBaseV2::QStyleOptionTabBarBaseV2()
- : QStyleOptionTabBarBase(Version)
- , documentMode(false)
-{
-}
-
-/*!
- \fn QStyleOptionTabBarBaseV2::QStyleOptionTabBarBaseV2(const QStyleOptionTabBarBaseV2 &other)
-
- Constructs a copy of \a other.
-*/
-
-/*!
- Constructs a copy of \a other.
-*/
-QStyleOptionTabBarBaseV2::QStyleOptionTabBarBaseV2(const QStyleOptionTabBarBase &other)
- : QStyleOptionTabBarBase(Version)
-{
- (void)QStyleOptionTabBarBaseV2::operator=(other);
-}
-
-/*!
- Constructs a QStyleOptionTabBarBaseV2 copy of the \a other style option
- which can be either of the QStyleOptionTabBarBaseV2, or QStyleOptionTabBarBase types.
-
- If the other style option's version is not 1, the new style option's
- \c documentMode is set to false. If its version is 2, its \c documentMode value
- is simply copied to the new style option.
-*/
-QStyleOptionTabBarBaseV2 &QStyleOptionTabBarBaseV2::operator = (const QStyleOptionTabBarBase &other)
-{
- QStyleOptionTabBarBase::operator=(other);
- const QStyleOptionTabBarBaseV2 *v2 = qstyleoption_cast<const QStyleOptionTabBarBaseV2*>(&other);
- documentMode = v2 ? v2->documentMode : false;
- return *this;
-}
-
-/*! \internal */
-QStyleOptionTabBarBaseV2::QStyleOptionTabBarBaseV2(int version)
- : QStyleOptionTabBarBase(version), documentMode(false)
-{
-}
-
#endif // QT_NO_TABBAR
#ifndef QT_NO_SIZEGRIP
diff --git a/src/widgets/styles/qstyleoption.h b/src/widgets/styles/qstyleoption.h
index 56203a6615..677a48ec20 100644
--- a/src/widgets/styles/qstyleoption.h
+++ b/src/widgets/styles/qstyleoption.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,7 +60,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QDebug;
@@ -119,64 +118,36 @@ class Q_WIDGETS_EXPORT QStyleOptionFrame : public QStyleOption
{
public:
enum StyleOptionType { Type = SO_Frame };
- enum StyleOptionVersion { Version = 1 };
+ enum StyleOptionVersion { Version = 3 };
int lineWidth;
int midLineWidth;
-
- QStyleOptionFrame();
- QStyleOptionFrame(const QStyleOptionFrame &other) : QStyleOption(Version, Type) { *this = other; }
-
-protected:
- QStyleOptionFrame(int version);
-};
-
-class Q_WIDGETS_EXPORT QStyleOptionFrameV2 : public QStyleOptionFrame
-{
-public:
- enum StyleOptionVersion { Version = 2 };
enum FrameFeature {
None = 0x00,
Flat = 0x01
};
Q_DECLARE_FLAGS(FrameFeatures, FrameFeature)
FrameFeatures features;
+ QFrame::Shape frameShape;
- QStyleOptionFrameV2();
- QStyleOptionFrameV2(const QStyleOptionFrameV2 &other) : QStyleOptionFrame(Version) { *this = other; }
- QStyleOptionFrameV2(const QStyleOptionFrame &other);
- QStyleOptionFrameV2 &operator=(const QStyleOptionFrame &other);
+ QStyleOptionFrame();
+ QStyleOptionFrame(const QStyleOptionFrame &other) : QStyleOption(Version, Type) { *this = other; }
protected:
- QStyleOptionFrameV2(int version);
+ QStyleOptionFrame(int version);
};
-Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionFrameV2::FrameFeatures)
-
-
-class Q_WIDGETS_EXPORT QStyleOptionFrameV3 : public QStyleOptionFrameV2
-{
-public:
- enum StyleOptionVersion { Version = 3 };
- QFrame::Shape frameShape : 4;
- uint unused : 28;
-
- QStyleOptionFrameV3();
- QStyleOptionFrameV3(const QStyleOptionFrameV3 &other) : QStyleOptionFrameV2(Version) { *this = other; }
- QStyleOptionFrameV3(const QStyleOptionFrame &other);
- QStyleOptionFrameV3 &operator=(const QStyleOptionFrame &other);
-
-protected:
- QStyleOptionFrameV3(int version);
-};
+Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionFrame::FrameFeatures)
+typedef QStyleOptionFrame QStyleOptionFrameV2;
+typedef QStyleOptionFrame QStyleOptionFrameV3;
#ifndef QT_NO_TABWIDGET
class Q_WIDGETS_EXPORT QStyleOptionTabWidgetFrame : public QStyleOption
{
public:
enum StyleOptionType { Type = SO_TabWidgetFrame };
- enum StyleOptionVersion { Version = 1 };
+ enum StyleOptionVersion { Version = 2 };
int lineWidth;
int midLineWidth;
@@ -184,6 +155,8 @@ public:
QSize tabBarSize;
QSize rightCornerWidgetSize;
QSize leftCornerWidgetSize;
+ QRect tabBarRect;
+ QRect selectedTabRect;
QStyleOptionTabWidgetFrame();
inline QStyleOptionTabWidgetFrame(const QStyleOptionTabWidgetFrame &other)
@@ -193,25 +166,8 @@ protected:
QStyleOptionTabWidgetFrame(int version);
};
-class Q_WIDGETS_EXPORT QStyleOptionTabWidgetFrameV2 : public QStyleOptionTabWidgetFrame
-{
-public:
- enum StyleOptionVersion { Version = 2 };
-
- QRect tabBarRect;
- QRect selectedTabRect;
-
- QStyleOptionTabWidgetFrameV2();
- QStyleOptionTabWidgetFrameV2(const QStyleOptionTabWidgetFrameV2 &other) :
- QStyleOptionTabWidgetFrame(Version) { *this = other; }
- QStyleOptionTabWidgetFrameV2(const QStyleOptionTabWidgetFrame &other);
- QStyleOptionTabWidgetFrameV2 &operator=(const QStyleOptionTabWidgetFrame &other);
-
-protected:
- QStyleOptionTabWidgetFrameV2(int version);
-};
-
-#endif
+typedef QStyleOptionTabWidgetFrame QStyleOptionTabWidgetFrameV2;
+#endif // QT_NO_TABWIDGET
#ifndef QT_NO_TABBAR
@@ -219,11 +175,12 @@ class Q_WIDGETS_EXPORT QStyleOptionTabBarBase : public QStyleOption
{
public:
enum StyleOptionType { Type = SO_TabBarBase };
- enum StyleOptionVersion { Version = 1 };
+ enum StyleOptionVersion { Version = 2 };
QTabBar::Shape shape;
QRect tabBarRect;
QRect selectedTabRect;
+ bool documentMode;
QStyleOptionTabBarBase();
QStyleOptionTabBarBase(const QStyleOptionTabBarBase &other) : QStyleOption(Version, Type) { *this = other; }
@@ -232,21 +189,8 @@ protected:
QStyleOptionTabBarBase(int version);
};
-class Q_WIDGETS_EXPORT QStyleOptionTabBarBaseV2 : public QStyleOptionTabBarBase
-{
-public:
- enum StyleOptionVersion { Version = 2 };
- bool documentMode;
- QStyleOptionTabBarBaseV2();
- QStyleOptionTabBarBaseV2(const QStyleOptionTabBarBaseV2 &other) : QStyleOptionTabBarBase(Version) { *this = other; }
- QStyleOptionTabBarBaseV2(const QStyleOptionTabBarBase &other);
- QStyleOptionTabBarBaseV2 &operator=(const QStyleOptionTabBarBase &other);
-
-protected:
- QStyleOptionTabBarBaseV2(int version);
-};
-
-#endif
+typedef QStyleOptionTabBarBase QStyleOptionTabBarBaseV2;
+#endif // QT_NO_TABBAR
class Q_WIDGETS_EXPORT QStyleOptionHeader : public QStyleOption
{
@@ -305,7 +249,7 @@ class Q_WIDGETS_EXPORT QStyleOptionTab : public QStyleOption
{
public:
enum StyleOptionType { Type = SO_Tab };
- enum StyleOptionVersion { Version = 1 };
+ enum StyleOptionVersion { Version = 3 };
enum TabPosition { Beginning, Middle, End, OnlyOneTab };
enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected };
@@ -320,6 +264,10 @@ public:
TabPosition position;
SelectedPosition selectedPosition;
CornerWidgets cornerWidgets;
+ QSize iconSize;
+ bool documentMode;
+ QSize leftButtonSize;
+ QSize rightButtonSize;
QStyleOptionTab();
QStyleOptionTab(const QStyleOptionTab &other) : QStyleOption(Version, Type) { *this = other; }
@@ -330,38 +278,9 @@ protected:
Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionTab::CornerWidgets)
-class Q_WIDGETS_EXPORT QStyleOptionTabV2 : public QStyleOptionTab
-{
-public:
- enum StyleOptionVersion { Version = 2 };
- QSize iconSize;
- QStyleOptionTabV2();
- QStyleOptionTabV2(const QStyleOptionTabV2 &other) : QStyleOptionTab(Version) { *this = other; }
- QStyleOptionTabV2(const QStyleOptionTab &other);
- QStyleOptionTabV2 &operator=(const QStyleOptionTab &other);
-
-protected:
- QStyleOptionTabV2(int version);
-};
-
-class Q_WIDGETS_EXPORT QStyleOptionTabV3 : public QStyleOptionTabV2
-{
-public:
- enum StyleOptionVersion { Version = 3 };
- bool documentMode;
- QSize leftButtonSize;
- QSize rightButtonSize;
- QStyleOptionTabV3();
- QStyleOptionTabV3(const QStyleOptionTabV3 &other) : QStyleOptionTabV2(Version) { *this = other; }
- QStyleOptionTabV3(const QStyleOptionTabV2 &other) : QStyleOptionTabV2(Version) { *this = other; }
- QStyleOptionTabV3(const QStyleOptionTab &other);
- QStyleOptionTabV3 &operator=(const QStyleOptionTab &other);
-
-protected:
- QStyleOptionTabV3(int version);
-};
-
-#endif
+typedef QStyleOptionTab QStyleOptionTabV2;
+typedef QStyleOptionTab QStyleOptionTabV3;
+#endif // QT_NO_TABBAR
#ifndef QT_NO_TOOLBAR
@@ -389,15 +308,13 @@ protected:
Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionToolBar::ToolBarFeatures)
-#endif
-
-
+#endif // QT_NO_TOOLBAR
class Q_WIDGETS_EXPORT QStyleOptionProgressBar : public QStyleOption
{
public:
enum StyleOptionType { Type = SO_ProgressBar };
- enum StyleOptionVersion { Version = 1 };
+ enum StyleOptionVersion { Version = 2 };
int minimum;
int maximum;
@@ -405,6 +322,9 @@ public:
QString text;
Qt::Alignment textAlignment;
bool textVisible;
+ Qt::Orientation orientation;
+ bool invertedAppearance;
+ bool bottomToTop;
QStyleOptionProgressBar();
QStyleOptionProgressBar(const QStyleOptionProgressBar &other) : QStyleOption(Version, Type) { *this = other; }
@@ -413,24 +333,7 @@ protected:
QStyleOptionProgressBar(int version);
};
-// Adds style info for vertical progress bars
-class Q_WIDGETS_EXPORT QStyleOptionProgressBarV2 : public QStyleOptionProgressBar
-{
-public:
- enum StyleOptionType { Type = SO_ProgressBar };
- enum StyleOptionVersion { Version = 2 };
- Qt::Orientation orientation;
- bool invertedAppearance;
- bool bottomToTop;
-
- QStyleOptionProgressBarV2();
- QStyleOptionProgressBarV2(const QStyleOptionProgressBar &other);
- QStyleOptionProgressBarV2(const QStyleOptionProgressBarV2 &other);
- QStyleOptionProgressBarV2 &operator=(const QStyleOptionProgressBar &other);
-
-protected:
- QStyleOptionProgressBarV2(int version);
-};
+typedef QStyleOptionProgressBar QStyleOptionProgressBarV2;
class Q_WIDGETS_EXPORT QStyleOptionMenuItem : public QStyleOption
{
@@ -505,12 +408,13 @@ class Q_WIDGETS_EXPORT QStyleOptionDockWidget : public QStyleOption
{
public:
enum StyleOptionType { Type = SO_DockWidget };
- enum StyleOptionVersion { Version = 1 };
+ enum StyleOptionVersion { Version = 2 };
QString title;
bool closable;
bool movable;
bool floatable;
+ bool verticalTitleBar;
QStyleOptionDockWidget();
QStyleOptionDockWidget(const QStyleOptionDockWidget &other) : QStyleOption(Version, Type) { *this = other; }
@@ -519,28 +423,15 @@ protected:
QStyleOptionDockWidget(int version);
};
-class Q_WIDGETS_EXPORT QStyleOptionDockWidgetV2 : public QStyleOptionDockWidget
-{
-public:
- enum StyleOptionVersion { Version = 2 };
-
- bool verticalTitleBar;
+typedef QStyleOptionDockWidget QStyleOptionDockWidgetV2;
- QStyleOptionDockWidgetV2();
- QStyleOptionDockWidgetV2(const QStyleOptionDockWidgetV2 &other)
- : QStyleOptionDockWidget(Version) { *this = other; }
- QStyleOptionDockWidgetV2(const QStyleOptionDockWidget &other);
- QStyleOptionDockWidgetV2 &operator = (const QStyleOptionDockWidget &other);
-
-protected:
- QStyleOptionDockWidgetV2(int version);
-};
+#ifndef QT_NO_ITEMVIEWS
class Q_WIDGETS_EXPORT QStyleOptionViewItem : public QStyleOption
{
public:
enum StyleOptionType { Type = SO_ViewItem };
- enum StyleOptionVersion { Version = 1 };
+ enum StyleOptionVersion { Version = 4 };
enum Position { Left, Right, Top, Bottom };
@@ -552,18 +443,6 @@ public:
QFont font;
bool showDecorationSelected;
- QStyleOptionViewItem();
- QStyleOptionViewItem(const QStyleOptionViewItem &other) : QStyleOption(Version, Type) { *this = other; }
-
-protected:
- QStyleOptionViewItem(int version);
-};
-
-class Q_WIDGETS_EXPORT QStyleOptionViewItemV2 : public QStyleOptionViewItem
-{
-public:
- enum StyleOptionVersion { Version = 2 };
-
enum ViewItemFeature {
None = 0x00,
WrapText = 0x01,
@@ -576,40 +455,9 @@ public:
ViewItemFeatures features;
- QStyleOptionViewItemV2();
- QStyleOptionViewItemV2(const QStyleOptionViewItemV2 &other) : QStyleOptionViewItem(Version) { *this = other; }
- QStyleOptionViewItemV2(const QStyleOptionViewItem &other);
- QStyleOptionViewItemV2 &operator=(const QStyleOptionViewItem &other);
-
-protected:
- QStyleOptionViewItemV2(int version);
-};
-
-Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionViewItemV2::ViewItemFeatures)
-
-class Q_WIDGETS_EXPORT QStyleOptionViewItemV3 : public QStyleOptionViewItemV2
-{
-public:
- enum StyleOptionVersion { Version = 3 };
-
QLocale locale;
const QWidget *widget;
- QStyleOptionViewItemV3();
- QStyleOptionViewItemV3(const QStyleOptionViewItemV3 &other)
- : QStyleOptionViewItemV2(Version) { *this = other; }
- QStyleOptionViewItemV3(const QStyleOptionViewItem &other);
- QStyleOptionViewItemV3 &operator = (const QStyleOptionViewItem &other);
-
-protected:
- QStyleOptionViewItemV3(int version);
-};
-
-#ifndef QT_NO_ITEMVIEWS
-class Q_WIDGETS_EXPORT QStyleOptionViewItemV4 : public QStyleOptionViewItemV3
-{
-public:
- enum StyleOptionVersion { Version = 4 };
enum ViewItemPosition { Invalid, Beginning, Middle, End, OnlyOne };
QModelIndex index;
@@ -619,52 +467,45 @@ public:
ViewItemPosition viewItemPosition;
QBrush backgroundBrush;
- QStyleOptionViewItemV4();
- QStyleOptionViewItemV4(const QStyleOptionViewItemV4 &other)
- : QStyleOptionViewItemV3(Version) { *this = other; }
- QStyleOptionViewItemV4(const QStyleOptionViewItem &other);
- QStyleOptionViewItemV4 &operator = (const QStyleOptionViewItem &other);
+ QStyleOptionViewItem();
+ QStyleOptionViewItem(const QStyleOptionViewItem &other) : QStyleOption(Version, Type) { *this = other; }
protected:
- QStyleOptionViewItemV4(int version);
+ QStyleOptionViewItem(int version);
};
-#endif
+
+Q_DECLARE_OPERATORS_FOR_FLAGS(QStyleOptionViewItem::ViewItemFeatures)
+
+typedef QStyleOptionViewItem QStyleOptionViewItemV2;
+typedef QStyleOptionViewItem QStyleOptionViewItemV3;
+typedef QStyleOptionViewItem QStyleOptionViewItemV4;
+
+#endif // QT_NO_ITEMVIEWS
class Q_WIDGETS_EXPORT QStyleOptionToolBox : public QStyleOption
{
public:
enum StyleOptionType { Type = SO_ToolBox };
- enum StyleOptionVersion { Version = 1 };
+ enum StyleOptionVersion { Version = 2 };
QString text;
QIcon icon;
- QStyleOptionToolBox();
- QStyleOptionToolBox(const QStyleOptionToolBox &other) : QStyleOption(Version, Type) { *this = other; }
-
-protected:
- QStyleOptionToolBox(int version);
-};
-
-class Q_WIDGETS_EXPORT QStyleOptionToolBoxV2 : public QStyleOptionToolBox
-{
-public:
- enum StyleOptionVersion { Version = 2 };
enum TabPosition { Beginning, Middle, End, OnlyOneTab };
enum SelectedPosition { NotAdjacent, NextIsSelected, PreviousIsSelected };
TabPosition position;
SelectedPosition selectedPosition;
- QStyleOptionToolBoxV2();
- QStyleOptionToolBoxV2(const QStyleOptionToolBoxV2 &other) : QStyleOptionToolBox(Version) { *this = other; }
- QStyleOptionToolBoxV2(const QStyleOptionToolBox &other);
- QStyleOptionToolBoxV2 &operator=(const QStyleOptionToolBox &other);
+ QStyleOptionToolBox();
+ QStyleOptionToolBox(const QStyleOptionToolBox &other) : QStyleOption(Version, Type) { *this = other; }
protected:
- QStyleOptionToolBoxV2(int version);
+ QStyleOptionToolBox(int version);
};
+typedef QStyleOptionToolBox QStyleOptionToolBoxV2;
+
#ifndef QT_NO_RUBBERBAND
class Q_WIDGETS_EXPORT QStyleOptionRubberBand : public QStyleOption
{
diff --git a/src/widgets/styles/qstylepainter.cpp b/src/widgets/styles/qstylepainter.cpp
index 9870f01dd0..b15b9d1a38 100644
--- a/src/widgets/styles/qstylepainter.cpp
+++ b/src/widgets/styles/qstylepainter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qstylepainter.h b/src/widgets/styles/qstylepainter.h
index 56c6684507..f30124aa25 100644
--- a/src/widgets/styles/qstylepainter.h
+++ b/src/widgets/styles/qstylepainter.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QStylePainter : public QPainter
{
diff --git a/src/widgets/styles/qstyleplugin.cpp b/src/widgets/styles/qstyleplugin.cpp
index 8a169d9797..74c29f39c8 100644
--- a/src/widgets/styles/qstyleplugin.cpp
+++ b/src/widgets/styles/qstyleplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qstyleplugin.h b/src/widgets/styles/qstyleplugin.h
index c9a35caaa4..883952eced 100644
--- a/src/widgets/styles/qstyleplugin.h
+++ b/src/widgets/styles/qstyleplugin.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QStyle;
@@ -58,7 +57,7 @@ struct Q_WIDGETS_EXPORT QStyleFactoryInterface : public QFactoryInterface
virtual QStyle *create(const QString &key) = 0;
};
-#define QStyleFactoryInterface_iid "com.trolltech.Qt.QStyleFactoryInterface"
+#define QStyleFactoryInterface_iid "org.qt-project.Qt.QStyleFactoryInterface"
Q_DECLARE_INTERFACE(QStyleFactoryInterface, QStyleFactoryInterface_iid)
diff --git a/src/widgets/styles/qstylesheetstyle.cpp b/src/widgets/styles/qstylesheetstyle.cpp
index b384ff7681..30c6ed5e74 100644
--- a/src/widgets/styles/qstylesheetstyle.cpp
+++ b/src/widgets/styles/qstylesheetstyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qstylesheetstyle_default.cpp b/src/widgets/styles/qstylesheetstyle_default.cpp
index 580232f326..f22a6d16b5 100644
--- a/src/widgets/styles/qstylesheetstyle_default.cpp
+++ b/src/widgets/styles/qstylesheetstyle_default.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -158,8 +158,7 @@ StyleSheet QStyleSheetStyle::getDefaultStyleSheet() const
// pixmap based style doesn't support any features
bool styleIsPixmapBased = baseStyle()->inherits("QMacStyle")
|| baseStyle()->inherits("QWindowsXPStyle")
- || baseStyle()->inherits("QGtkStyle")
- || baseStyle()->inherits("QS60Style");
+ || baseStyle()->inherits("QGtkStyle");
/*QLineEdit {
diff --git a/src/widgets/styles/qstylesheetstyle_p.h b/src/widgets/styles/qstylesheetstyle_p.h
index 2d89f784d4..42a29b82f2 100644
--- a/src/widgets/styles/qstylesheetstyle_p.h
+++ b/src/widgets/styles/qstylesheetstyle_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qwindowscestyle.cpp b/src/widgets/styles/qwindowscestyle.cpp
index fd3a391e54..72f7426268 100644
--- a/src/widgets/styles/qwindowscestyle.cpp
+++ b/src/widgets/styles/qwindowscestyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qwindowscestyle.h b/src/widgets/styles/qwindowscestyle.h
index dbb83a910e..70d2c3c7c2 100644
--- a/src/widgets/styles/qwindowscestyle.h
+++ b/src/widgets/styles/qwindowscestyle.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#if !defined(QT_NO_STYLE_WINDOWSCE)
diff --git a/src/widgets/styles/qwindowscestyle_p.h b/src/widgets/styles/qwindowscestyle_p.h
index 6b3b9a8bfe..505826ecf3 100644
--- a/src/widgets/styles/qwindowscestyle_p.h
+++ b/src/widgets/styles/qwindowscestyle_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qwindowsmobilestyle.cpp b/src/widgets/styles/qwindowsmobilestyle.cpp
index efba73fe80..284d42dacc 100644
--- a/src/widgets/styles/qwindowsmobilestyle.cpp
+++ b/src/widgets/styles/qwindowsmobilestyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qwindowsmobilestyle.h b/src/widgets/styles/qwindowsmobilestyle.h
index 65eb08707f..e80c8251a5 100644
--- a/src/widgets/styles/qwindowsmobilestyle.h
+++ b/src/widgets/styles/qwindowsmobilestyle.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#if !defined(QT_NO_STYLE_WINDOWSMOBILE)
diff --git a/src/widgets/styles/qwindowsmobilestyle_p.h b/src/widgets/styles/qwindowsmobilestyle_p.h
index 23b395e3a6..d536afe50e 100644
--- a/src/widgets/styles/qwindowsmobilestyle_p.h
+++ b/src/widgets/styles/qwindowsmobilestyle_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qwindowsstyle.cpp b/src/widgets/styles/qwindowsstyle.cpp
index 1029433fe6..295d46963e 100644
--- a/src/widgets/styles/qwindowsstyle.cpp
+++ b/src/widgets/styles/qwindowsstyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qwindowsstyle.h b/src/widgets/styles/qwindowsstyle.h
index 5392409882..3f0f99dee6 100644
--- a/src/widgets/styles/qwindowsstyle.h
+++ b/src/widgets/styles/qwindowsstyle.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#if !defined(QT_NO_STYLE_WINDOWS)
diff --git a/src/widgets/styles/qwindowsstyle_p.h b/src/widgets/styles/qwindowsstyle_p.h
index 9861172873..c1bcd28c2a 100644
--- a/src/widgets/styles/qwindowsstyle_p.h
+++ b/src/widgets/styles/qwindowsstyle_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qwindowsvistastyle.cpp b/src/widgets/styles/qwindowsvistastyle.cpp
index bbc07a5bd9..1aecb64acf 100644
--- a/src/widgets/styles/qwindowsvistastyle.cpp
+++ b/src/widgets/styles/qwindowsvistastyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qwindowsvistastyle.h b/src/widgets/styles/qwindowsvistastyle.h
index dec8f16aee..139a125a52 100644
--- a/src/widgets/styles/qwindowsvistastyle.h
+++ b/src/widgets/styles/qwindowsvistastyle.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#if !defined(QT_NO_STYLE_WINDOWSVISTA)
diff --git a/src/widgets/styles/qwindowsvistastyle_p.h b/src/widgets/styles/qwindowsvistastyle_p.h
index 8ed2ec421e..7205ad2d19 100644
--- a/src/widgets/styles/qwindowsvistastyle_p.h
+++ b/src/widgets/styles/qwindowsvistastyle_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/styles/qwindowsxpstyle.cpp b/src/widgets/styles/qwindowsxpstyle.cpp
index d8b33f3b0f..63d275a391 100644
--- a/src/widgets/styles/qwindowsxpstyle.cpp
+++ b/src/widgets/styles/qwindowsxpstyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -136,7 +136,24 @@ static const int windowsRightBorder = 12; // right border on windows
extern Q_WIDGETS_EXPORT HDC qt_win_display_dc();
extern QRegion qt_region_from_HRGN(HRGN rgn);
+static inline QBackingStore *backingStoreForWidget(const QWidget *widget)
+{
+ if (QBackingStore *backingStore = widget->backingStore())
+ return backingStore;
+ if (const QWidget *topLevel = widget->nativeParentWidget())
+ if (QBackingStore *topLevelBackingStore = topLevel->backingStore())
+ return topLevelBackingStore;
+ return 0;
+}
+static inline HDC hdcForWidgetBackingStore(const QWidget *widget)
+{
+ if (QBackingStore *backingStore = backingStoreForWidget(widget)) {
+ QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface();
+ return static_cast<HDC>(nativeInterface->nativeResourceForBackingStore(QByteArrayLiteral("getDC"), backingStore));
+ }
+ return 0;
+}
// Theme data helper ------------------------------------------------------------------------------
/* \internal
@@ -159,14 +176,14 @@ HTHEME XPThemeData::handle()
return 0;
if (!htheme && QWindowsXPStylePrivate::handleMap)
- htheme = QWindowsXPStylePrivate::handleMap->operator[](name);
+ htheme = QWindowsXPStylePrivate::handleMap->value(name);
if (!htheme) {
htheme = pOpenThemeData(QWindowsXPStylePrivate::winId(widget), (wchar_t*)name.utf16());
if (htheme) {
if (!QWindowsXPStylePrivate::handleMap)
- QWindowsXPStylePrivate::handleMap = new QMap<QString, HTHEME>;
- QWindowsXPStylePrivate::handleMap->operator[](name) = htheme;
+ QWindowsXPStylePrivate::handleMap = new QWindowsXPStylePrivate::ThemeHandleMap;
+ QWindowsXPStylePrivate::handleMap->insert(name, htheme);
}
}
@@ -197,11 +214,8 @@ HRGN XPThemeData::mask(QWidget *widget)
HRGN hrgn;
HDC dc = 0;
- if (widget) {
- QBackingStore *backingStore = widget->backingStore();
- QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface();
- dc = static_cast<HDC>(nativeInterface->nativeResourceForBackingStore("getDC", backingStore));
- }
+ if (widget)
+ dc = hdcForWidgetBackingStore(widget);
RECT nativeRect = toRECT(rect);
pGetThemeBackgroundRegion(handle(), dc, partId, stateId, &nativeRect, &hrgn);
return hrgn;
@@ -209,7 +223,6 @@ HRGN XPThemeData::mask(QWidget *widget)
// QWindowsXPStylePrivate -------------------------------------------------------------------------
// Static initializations
-QWidget *QWindowsXPStylePrivate::limboWidget = 0;
QPixmap *QWindowsXPStylePrivate::tabbody = 0;
QMap<QString,HTHEME> *QWindowsXPStylePrivate::handleMap = 0;
bool QWindowsXPStylePrivate::use_xp = false;
@@ -289,14 +302,7 @@ void QWindowsXPStylePrivate::cleanup(bool force)
use_xp = false;
cleanupHandleMap();
- if (limboWidget) {
- if (QApplication::closingDown())
- delete limboWidget;
- else
- limboWidget->deleteLater();
- }
delete tabbody;
- limboWidget = 0;
tabbody = 0;
}
@@ -307,11 +313,13 @@ void QWindowsXPStylePrivate::cleanup(bool force)
*/
void QWindowsXPStylePrivate::cleanupHandleMap()
{
+ typedef ThemeHandleMap::const_iterator ConstIterator;
+
if (!handleMap)
return;
- QMap<QString, HTHEME>::Iterator it;
- for (it = handleMap->begin(); it != handleMap->end(); ++it)
+ const ConstIterator cend = handleMap->constEnd();
+ for (ConstIterator it = handleMap->constBegin(); it != cend; ++it)
pCloseThemeData(it.value());
delete handleMap;
handleMap = 0;
@@ -325,20 +333,22 @@ void QWindowsXPStylePrivate::cleanupHandleMap()
*/
HWND QWindowsXPStylePrivate::winId(const QWidget *widget)
{
- if (widget && widget->internalWinId()) {
- QWidget *w = const_cast<QWidget *>(widget);
- return QApplicationPrivate::getHWNDForWidget(w);
- }
- if (!limboWidget) {
- limboWidget = new QWidget(0);
- limboWidget->createWinId();
- limboWidget->setObjectName(QLatin1String("xp_limbo_widget"));
- // We don't need this internal widget to appear in QApplication::topLevelWidgets()
- if (QWidgetPrivate::allWidgets)
- QWidgetPrivate::allWidgets->remove(limboWidget);
- }
+ if (widget)
+ if (const HWND hwnd = QApplicationPrivate::getHWNDForWidget(const_cast<QWidget *>(widget)))
+ return hwnd;
- return QApplicationPrivate::getHWNDForWidget(limboWidget);
+ const QWidgetList toplevels = QApplication::topLevelWidgets();
+ if (!toplevels.isEmpty())
+ if (const HWND topLevelHwnd = QApplicationPrivate::getHWNDForWidget(toplevels.front()))
+ return topLevelHwnd;
+
+ if (QDesktopWidget *desktop = qApp->desktop())
+ if (const HWND desktopHwnd = QApplicationPrivate::getHWNDForWidget(desktop))
+ return desktopHwnd;
+
+ Q_ASSERT(false);
+
+ return 0;
}
/*! \internal
@@ -686,25 +696,18 @@ void QWindowsXPStylePrivate::drawBackground(XPThemeData &themeData)
translucentToplevel = win->testAttribute(Qt::WA_TranslucentBackground);
}
- HDC dc = 0;
- if (themeData.widget) {
- QBackingStore *backingStore = themeData.widget->backingStore();
- QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface();
- dc = static_cast<HDC>(nativeInterface->nativeResourceForBackingStore("getDC", backingStore ));
- }
-
- bool useFallback = dc == 0
- || painter->opacity() != 1.0
- || themeData.rotate
- || complexXForm
- || themeData.mirrorVertically
- || (themeData.mirrorHorizontally && pDrawThemeBackgroundEx == 0)
- || translucentToplevel;
-
- if (!useFallback)
+ // Draw on backing store DC only for real widgets.
+ const bool useFallback = !themeData.widget || painter->device()->devType() != QInternal::Widget
+ || painter->opacity() != 1.0 || themeData.rotate
+ || complexXForm || themeData.mirrorVertically
+ || (themeData.mirrorHorizontally && pDrawThemeBackgroundEx == 0)
+ || translucentToplevel;
+ const HDC dc = useFallback ? HDC(0) : hdcForWidgetBackingStore(themeData.widget);
+ if (dc && !useFallback) {
drawBackgroundDirectly(themeData);
- else
+ } else {
drawBackgroundThruNativeBuffer(themeData);
+ }
painter->restore();
}
@@ -718,11 +721,8 @@ void QWindowsXPStylePrivate::drawBackgroundDirectly(XPThemeData &themeData)
{
QPainter *painter = themeData.painter;
HDC dc = 0;
- if (themeData.widget) {
- QBackingStore *backingStore = themeData.widget->backingStore();
- QPlatformNativeInterface *nativeInterface = QGuiApplication::platformNativeInterface();
- dc = static_cast<HDC>(nativeInterface->nativeResourceForBackingStore("getDC", backingStore));
- }
+ if (themeData.widget)
+ dc = hdcForWidgetBackingStore(themeData.widget);
QPoint redirectionDelta(int(painter->deviceMatrix().dx()),
int(painter->deviceMatrix().dy()));
diff --git a/src/widgets/styles/qwindowsxpstyle.h b/src/widgets/styles/qwindowsxpstyle.h
index 87bccc2271..6e0eb57688 100644
--- a/src/widgets/styles/qwindowsxpstyle.h
+++ b/src/widgets/styles/qwindowsxpstyle.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#if !defined(QT_NO_STYLE_WINDOWSXP)
diff --git a/src/widgets/styles/qwindowsxpstyle_p.h b/src/widgets/styles/qwindowsxpstyle_p.h
index 1fb89cb478..0e42bbfa39 100644
--- a/src/widgets/styles/qwindowsxpstyle_p.h
+++ b/src/widgets/styles/qwindowsxpstyle_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -286,6 +286,8 @@ class QWindowsXPStylePrivate : public QWindowsStylePrivate
{
Q_DECLARE_PUBLIC(QWindowsXPStyle)
public:
+ typedef QMap<QString, HTHEME> ThemeHandleMap;
+
QWindowsXPStylePrivate()
: QWindowsStylePrivate(), hasInitColors(false), bufferDC(0), bufferBitmap(0), nullBitmap(0),
bufferPixels(0), bufferW(0), bufferH(0)
@@ -326,7 +328,7 @@ public:
QRgb sliderTickColor;
bool hasInitColors;
- static QMap<QString,HTHEME> *handleMap;
+ static ThemeHandleMap *handleMap;
QIcon dockFloat, dockClose;
@@ -338,7 +340,6 @@ private:
static QBasicAtomicInt ref;
static bool use_xp;
- static QWidget *limboWidget;
static QPixmap *tabbody;
QHash<ThemeMapKey, ThemeMapData> alphaCache;
diff --git a/src/widgets/util/qcolormap.h b/src/widgets/util/qcolormap.h
index c0c3643985..3e7dc96222 100644
--- a/src/widgets/util/qcolormap.h
+++ b/src/widgets/util/qcolormap.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QColor;
class QColormapPrivate;
diff --git a/src/widgets/util/qcolormap.qdoc b/src/widgets/util/qcolormap.qdoc
index fd6da862ec..86e7162cc9 100644
--- a/src/widgets/util/qcolormap.qdoc
+++ b/src/widgets/util/qcolormap.qdoc
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -21,6 +20,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qcolormap_qpa.cpp b/src/widgets/util/qcolormap_qpa.cpp
index 284809af24..8c24a25b66 100644
--- a/src/widgets/util/qcolormap_qpa.cpp
+++ b/src/widgets/util/qcolormap_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qcompleter.cpp b/src/widgets/util/qcompleter.cpp
index aa38aba08e..503e5aa596 100644
--- a/src/widgets/util/qcompleter.cpp
+++ b/src/widgets/util/qcompleter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -494,7 +494,7 @@ QMatchData QCompletionEngine::filterHistory()
for (int i = 0; i < source->rowCount(); i++) {
QString str = source->index(i, c->column).data().toString();
if (str.startsWith(c->prefix, c->cs)
-#if (!defined(Q_OS_WIN) || defined(Q_OS_WINCE)) && !defined(Q_OS_SYMBIAN)
+#if !defined(Q_OS_WIN) || defined(Q_OS_WINCE)
&& ((!isFsModel && !isDirModel) || QDir::toNativeSeparators(str) != QDir::separator())
#endif
)
@@ -1036,7 +1036,7 @@ void QCompleter::setModel(QAbstractItemModel *model)
delete oldModel;
#ifndef QT_NO_DIRMODEL
if (qobject_cast<QDirModel *>(model)) {
-#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
setCaseSensitivity(Qt::CaseInsensitive);
#else
setCaseSensitivity(Qt::CaseSensitive);
@@ -1046,7 +1046,7 @@ void QCompleter::setModel(QAbstractItemModel *model)
#ifndef QT_NO_FILESYSTEMMODEL
QFileSystemModel *fsModel = qobject_cast<QFileSystemModel *>(model);
if (fsModel) {
-#if (defined(Q_OS_WIN) && !defined(Q_OS_WINCE)) || defined(Q_OS_SYMBIAN)
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
setCaseSensitivity(Qt::CaseInsensitive);
#else
setCaseSensitivity(Qt::CaseSensitive);
@@ -1725,7 +1725,7 @@ QString QCompleter::pathFromIndex(const QModelIndex& index) const
idx = parent.sibling(parent.row(), index.column());
} while (idx.isValid());
-#if (!defined(Q_OS_WIN) || defined(Q_OS_WINCE)) && !defined(Q_OS_SYMBIAN)
+#if !defined(Q_OS_WIN) || defined(Q_OS_WINCE)
if (list.count() == 1) // only the separator or some other text
return list[0];
list[0].clear() ; // the join below will provide the separator
@@ -1766,10 +1766,7 @@ QStringList QCompleter::splitPath(const QString& path) const
QString pathCopy = QDir::toNativeSeparators(path);
QString sep = QDir::separator();
-#if defined(Q_OS_SYMBIAN)
- if (pathCopy == QLatin1String("\\"))
- return QStringList(pathCopy);
-#elif defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
if (pathCopy == QLatin1String("\\") || pathCopy == QLatin1String("\\\\"))
return QStringList(pathCopy);
QString doubleSlash(QLatin1String("\\\\"));
@@ -1782,9 +1779,7 @@ QStringList QCompleter::splitPath(const QString& path) const
QRegExp re(QLatin1Char('[') + QRegExp::escape(sep) + QLatin1Char(']'));
QStringList parts = pathCopy.split(re);
-#if defined(Q_OS_SYMBIAN)
- // Do nothing
-#elif defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
+#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
if (!doubleSlash.isEmpty())
parts[0].prepend(doubleSlash);
#else
diff --git a/src/widgets/util/qcompleter.h b/src/widgets/util/qcompleter.h
index 68fe22f88f..c5420897f8 100644
--- a/src/widgets/util/qcompleter.h
+++ b/src/widgets/util/qcompleter.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_COMPLETER
diff --git a/src/widgets/util/qcompleter_p.h b/src/widgets/util/qcompleter_p.h
index 94287c1ebf..619b40d126 100644
--- a/src/widgets/util/qcompleter_p.h
+++ b/src/widgets/util/qcompleter_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qflickgesture.cpp b/src/widgets/util/qflickgesture.cpp
index 843a2fa95c..b8352c63b6 100644
--- a/src/widgets/util/qflickgesture.cpp
+++ b/src/widgets/util/qflickgesture.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qflickgesture_p.h b/src/widgets/util/qflickgesture_p.h
index 6a9630ede6..b806e9ac22 100644
--- a/src/widgets/util/qflickgesture_p.h
+++ b/src/widgets/util/qflickgesture_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qscroller.cpp b/src/widgets/util/qscroller.cpp
index fac6809ac6..4482134c7b 100644
--- a/src/widgets/util/qscroller.cpp
+++ b/src/widgets/util/qscroller.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -568,7 +568,7 @@ void QScroller::stop()
\note Please note that this value should be physically correct. The actual DPI settings
that Qt returns for the display may be reported wrongly on purpose by the underlying
- windowing system, for example on Mac OS X or Maemo 5.
+ windowing system, for example on Mac OS X.
*/
QPointF QScroller::pixelPerMeter() const
{
@@ -1018,16 +1018,7 @@ bool QScroller::handleInput(Input input, const QPointF &position, qint64 timesta
QPointF QScrollerPrivate::realDpi(int screen)
{
-# ifdef Q_WS_MAEMO_5
- Q_UNUSED(screen);
-
- // The DPI value is hardcoded to 96 on Maemo5:
- // https://projects.maemo.org/bugzilla/show_bug.cgi?id=152525
- // This value (260) is only correct for the N900 though, but
- // there's no way to get the real DPI at run time.
- return QPointF(260, 260);
-
-# elif defined(Q_WS_X11) && !defined(QT_NO_XRANDR)
+# if defined(Q_WS_X11) && !defined(QT_NO_XRANDR)
if (X11 && X11->use_xrandr && X11->ptrXRRSizes && X11->ptrXRRRootToScreen) {
int nsizes = 0;
// QDesktopWidget is based on Xinerama screens, which do not always
diff --git a/src/widgets/util/qscroller.h b/src/widgets/util/qscroller.h
index 01d45a908e..c345f740d2 100644
--- a/src/widgets/util/qscroller.h
+++ b/src/widgets/util/qscroller.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QWidget;
class QScrollerPrivate;
diff --git a/src/widgets/util/qscroller_mac.mm b/src/widgets/util/qscroller_mac.mm
index 495469a04b..cf166b7799 100644
--- a/src/widgets/util/qscroller_mac.mm
+++ b/src/widgets/util/qscroller_mac.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qscroller_p.h b/src/widgets/util/qscroller_p.h
index 3b9fa988fe..6463f03573 100644
--- a/src/widgets/util/qscroller_p.h
+++ b/src/widgets/util/qscroller_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qscrollerproperties.cpp b/src/widgets/util/qscrollerproperties.cpp
index 3a41aa7eb9..6a61e4dfd1 100644
--- a/src/widgets/util/qscrollerproperties.cpp
+++ b/src/widgets/util/qscrollerproperties.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qscrollerproperties.h b/src/widgets/util/qscrollerproperties.h
index e7bcdbebe3..76d301894e 100644
--- a/src/widgets/util/qscrollerproperties.h
+++ b/src/widgets/util/qscrollerproperties.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QScroller;
class QScrollerPrivate;
diff --git a/src/widgets/util/qscrollerproperties_p.h b/src/widgets/util/qscrollerproperties_p.h
index 8c51f7aa4b..a241ec54b1 100644
--- a/src/widgets/util/qscrollerproperties_p.h
+++ b/src/widgets/util/qscrollerproperties_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qsystemtrayicon.cpp b/src/widgets/util/qsystemtrayicon.cpp
index 5803c2fef4..321323733b 100644
--- a/src/widgets/util/qsystemtrayicon.cpp
+++ b/src/widgets/util/qsystemtrayicon.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qsystemtrayicon.h b/src/widgets/util/qsystemtrayicon.h
index 0f1e7d74ee..96f9a1d2f4 100644
--- a/src/widgets/util/qsystemtrayicon.h
+++ b/src/widgets/util/qsystemtrayicon.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QSystemTrayIconPrivate;
diff --git a/src/widgets/util/qsystemtrayicon_mac.mm b/src/widgets/util/qsystemtrayicon_mac.mm
index 278fa72a1a..59342cb8a4 100644
--- a/src/widgets/util/qsystemtrayicon_mac.mm
+++ b/src/widgets/util/qsystemtrayicon_mac.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qsystemtrayicon_p.h b/src/widgets/util/qsystemtrayicon_p.h
index 7b743021e0..cf7d794696 100644
--- a/src/widgets/util/qsystemtrayicon_p.h
+++ b/src/widgets/util/qsystemtrayicon_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qsystemtrayicon_qpa.cpp b/src/widgets/util/qsystemtrayicon_qpa.cpp
index ce0e067648..be1da708f5 100644
--- a/src/widgets/util/qsystemtrayicon_qpa.cpp
+++ b/src/widgets/util/qsystemtrayicon_qpa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qsystemtrayicon_win.cpp b/src/widgets/util/qsystemtrayicon_win.cpp
index 6045116da5..fdb308c3d6 100644
--- a/src/widgets/util/qsystemtrayicon_win.cpp
+++ b/src/widgets/util/qsystemtrayicon_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qsystemtrayicon_wince.cpp b/src/widgets/util/qsystemtrayicon_wince.cpp
index b1dbb8b85e..817c651fe1 100644
--- a/src/widgets/util/qsystemtrayicon_wince.cpp
+++ b/src/widgets/util/qsystemtrayicon_wince.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qsystemtrayicon_x11.cpp b/src/widgets/util/qsystemtrayicon_x11.cpp
index 3ac3755f84..c5071b339d 100644
--- a/src/widgets/util/qsystemtrayicon_x11.cpp
+++ b/src/widgets/util/qsystemtrayicon_x11.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qundogroup.cpp b/src/widgets/util/qundogroup.cpp
index fd063b7e9f..c08c824bdf 100644
--- a/src/widgets/util/qundogroup.cpp
+++ b/src/widgets/util/qundogroup.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qundogroup.h b/src/widgets/util/qundogroup.h
index fe06a678eb..3fb66d2d85 100644
--- a/src/widgets/util/qundogroup.h
+++ b/src/widgets/util/qundogroup.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ class QUndoGroupPrivate;
class QUndoStack;
class QAction;
-QT_MODULE(Gui)
#ifndef QT_NO_UNDOGROUP
diff --git a/src/widgets/util/qundostack.cpp b/src/widgets/util/qundostack.cpp
index 5f2ba870e0..7cd77678e6 100644
--- a/src/widgets/util/qundostack.cpp
+++ b/src/widgets/util/qundostack.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qundostack.h b/src/widgets/util/qundostack.h
index fc2c82ecf4..ceb997e6da 100644
--- a/src/widgets/util/qundostack.h
+++ b/src/widgets/util/qundostack.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QAction;
class QUndoCommandPrivate;
diff --git a/src/widgets/util/qundostack_p.h b/src/widgets/util/qundostack_p.h
index 31dff8452c..2b9735b7a7 100644
--- a/src/widgets/util/qundostack_p.h
+++ b/src/widgets/util/qundostack_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qundoview.cpp b/src/widgets/util/qundoview.cpp
index c498355f1f..4b09d5fc70 100644
--- a/src/widgets/util/qundoview.cpp
+++ b/src/widgets/util/qundoview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/util/qundoview.h b/src/widgets/util/qundoview.h
index ee944dd259..4e117297a4 100644
--- a/src/widgets/util/qundoview.h
+++ b/src/widgets/util/qundoview.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,7 +56,6 @@ class QUndoStack;
class QUndoGroup;
class QIcon;
-QT_MODULE(Gui)
class Q_WIDGETS_EXPORT QUndoView : public QListView
{
diff --git a/src/widgets/widgets/qabstractbutton.cpp b/src/widgets/widgets/qabstractbutton.cpp
index efe0ff3389..a398cc1567 100644
--- a/src/widgets/widgets/qabstractbutton.cpp
+++ b/src/widgets/widgets/qabstractbutton.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -503,7 +503,7 @@ void QAbstractButtonPrivate::refresh()
return;
q->update();
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(q, 0, QAccessible::StateChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::StateChanged, q, 0));
#endif
}
@@ -645,7 +645,7 @@ void QAbstractButton::setText(const QString &text)
update();
updateGeometry();
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::NameChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::NameChanged, this, 0));
#endif
}
diff --git a/src/widgets/widgets/qabstractbutton.h b/src/widgets/widgets/qabstractbutton.h
index 9b3aa5642a..37a37f6de4 100644
--- a/src/widgets/widgets/qabstractbutton.h
+++ b/src/widgets/widgets/qabstractbutton.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QButtonGroup;
class QAbstractButtonPrivate;
diff --git a/src/widgets/widgets/qabstractbutton_p.h b/src/widgets/widgets/qabstractbutton_p.h
index 9688d27773..8d55712772 100644
--- a/src/widgets/widgets/qabstractbutton_p.h
+++ b/src/widgets/widgets/qabstractbutton_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qabstractscrollarea.cpp b/src/widgets/widgets/qabstractscrollarea.cpp
index 655ed83069..03ec21680d 100644
--- a/src/widgets/widgets/qabstractscrollarea.cpp
+++ b/src/widgets/widgets/qabstractscrollarea.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -64,9 +64,9 @@
#include <private/qt_mac_p.h>
#include <private/qt_cocoa_helpers_mac_p.h>
#endif
-#ifdef Q_WS_WIN
+#ifdef Q_OS_WIN
# include <qlibrary.h>
-# include <windows.h>
+# include <qt_windows.h>
#endif
QT_BEGIN_NAMESPACE
@@ -306,11 +306,6 @@ void QAbstractScrollAreaPrivate::init()
viewport->grabGesture(Qt::PanGesture);
# endif
#endif
-#ifdef Q_WS_MAEMO_5
-# ifndef QT_NO_GESTURES
- // viewport->grabGesture(Qt::TouchFlickGesture);
-# endif
-#endif
}
#ifdef Q_WS_WIN
@@ -564,11 +559,6 @@ void QAbstractScrollArea::setViewport(QWidget *widget)
d->viewport->grabGesture(Qt::PanGesture);
#endif
#endif
-#ifdef Q_WS_MAEMO_5
-#ifndef QT_NO_GESTURES
-// d->viewport->grabGesture(Qt::TouchFlickGesture);
-#endif
-#endif
d->layoutChildren();
if (isVisible())
d->viewport->show();
diff --git a/src/widgets/widgets/qabstractscrollarea.h b/src/widgets/widgets/qabstractscrollarea.h
index fe602468f9..f155f52920 100644
--- a/src/widgets/widgets/qabstractscrollarea.h
+++ b/src/widgets/widgets/qabstractscrollarea.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_SCROLLAREA
diff --git a/src/widgets/widgets/qabstractscrollarea_p.h b/src/widgets/widgets/qabstractscrollarea_p.h
index 2fe7e4423a..25c91359ae 100644
--- a/src/widgets/widgets/qabstractscrollarea_p.h
+++ b/src/widgets/widgets/qabstractscrollarea_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qabstractslider.cpp b/src/widgets/widgets/qabstractslider.cpp
index d3dddde409..be193f64f0 100644
--- a/src/widgets/widgets/qabstractslider.cpp
+++ b/src/widgets/widgets/qabstractslider.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -538,7 +538,7 @@ void QAbstractSlider::setValue(int value)
emit sliderMoved((d->position = value));
}
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::ValueChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::ValueChanged, this, 0));
#endif
sliderChange(SliderValueChange);
emit valueChanged(value);
diff --git a/src/widgets/widgets/qabstractslider.h b/src/widgets/widgets/qabstractslider.h
index a19fc37451..dbcd14cb67 100644
--- a/src/widgets/widgets/qabstractslider.h
+++ b/src/widgets/widgets/qabstractslider.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QAbstractSliderPrivate;
diff --git a/src/widgets/widgets/qabstractslider_p.h b/src/widgets/widgets/qabstractslider_p.h
index a4589c5d18..d940a5da30 100644
--- a/src/widgets/widgets/qabstractslider_p.h
+++ b/src/widgets/widgets/qabstractslider_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qabstractspinbox.cpp b/src/widgets/widgets/qabstractspinbox.cpp
index 4f5a135842..331b4918bd 100644
--- a/src/widgets/widgets/qabstractspinbox.cpp
+++ b/src/widgets/widgets/qabstractspinbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -976,7 +976,7 @@ void QAbstractSpinBox::keyPressEvent(QKeyEvent *event)
}
}
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::ValueChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::ValueChanged, this, 0));
#endif
return;
}
@@ -1595,7 +1595,7 @@ void QAbstractSpinBoxPrivate::updateState(bool up, bool fromKeyboard /* = false
buttonState = (up ? Up : Down) | (fromKeyboard ? Keyboard : Mouse);
q->stepBy(up ? 1 : -1);
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(q, 0, QAccessible::ValueChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::ValueChanged, q, 0));
#endif
}
}
diff --git a/src/widgets/widgets/qabstractspinbox.h b/src/widgets/widgets/qabstractspinbox.h
index 8f963dce0d..891260c61c 100644
--- a/src/widgets/widgets/qabstractspinbox.h
+++ b/src/widgets/widgets/qabstractspinbox.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_SPINBOX
diff --git a/src/widgets/widgets/qabstractspinbox_p.h b/src/widgets/widgets/qabstractspinbox_p.h
index 67a09622a2..71e46d89b6 100644
--- a/src/widgets/widgets/qabstractspinbox_p.h
+++ b/src/widgets/widgets/qabstractspinbox_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qbuttongroup.cpp b/src/widgets/widgets/qbuttongroup.cpp
index 992c542674..381e32d96b 100644
--- a/src/widgets/widgets/qbuttongroup.cpp
+++ b/src/widgets/widgets/qbuttongroup.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qbuttongroup.h b/src/widgets/widgets/qbuttongroup.h
index 17c60e9609..e24ac8bbc3 100644
--- a/src/widgets/widgets/qbuttongroup.h
+++ b/src/widgets/widgets/qbuttongroup.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_BUTTONGROUP
diff --git a/src/widgets/widgets/qcalendartextnavigator_p.h b/src/widgets/widgets/qcalendartextnavigator_p.h
index 2ce5233cec..7e705a407a 100644
--- a/src/widgets/widgets/qcalendartextnavigator_p.h
+++ b/src/widgets/widgets/qcalendartextnavigator_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qcalendarwidget.cpp b/src/widgets/widgets/qcalendarwidget.cpp
index 3bd1e3ec4f..1541010646 100644
--- a/src/widgets/widgets/qcalendarwidget.cpp
+++ b/src/widgets/widgets/qcalendarwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qcalendarwidget.h b/src/widgets/widgets/qcalendarwidget.h
index 1ab519386e..ae78d84a93 100644
--- a/src/widgets/widgets/qcalendarwidget.h
+++ b/src/widgets/widgets/qcalendarwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_CALENDARWIDGET
diff --git a/src/widgets/widgets/qcheckbox.cpp b/src/widgets/widgets/qcheckbox.cpp
index 386bd2b169..3bf2e39ef1 100644
--- a/src/widgets/widgets/qcheckbox.cpp
+++ b/src/widgets/widgets/qcheckbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qcheckbox.h b/src/widgets/widgets/qcheckbox.h
index 37461f1f10..cef6f6d7cf 100644
--- a/src/widgets/widgets/qcheckbox.h
+++ b/src/widgets/widgets/qcheckbox.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QCheckBoxPrivate;
class QStyleOptionButton;
diff --git a/src/widgets/widgets/qcocoatoolbardelegate_mac.mm b/src/widgets/widgets/qcocoatoolbardelegate_mac.mm
index 1127d01b19..d290e854a0 100644
--- a/src/widgets/widgets/qcocoatoolbardelegate_mac.mm
+++ b/src/widgets/widgets/qcocoatoolbardelegate_mac.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -71,7 +71,7 @@ QT_FORWARD_DECLARE_CLASS(QCFString);
- (NSArray *)toolbarAllowedItemIdentifiers:(NSToolbar *)toolbar
{
Q_UNUSED(toolbar);
- return [NSArray arrayWithObject:@"com.trolltech.qt.nstoolbar-qtoolbar"];
+ return [NSArray arrayWithObject:@"org.qt-project.qt.nstoolbar-qtoolbar"];
}
- (NSArray *)toolbarDefaultItemIdentifiers:(NSToolbar *)toolbar
diff --git a/src/widgets/widgets/qcocoatoolbardelegate_mac_p.h b/src/widgets/widgets/qcocoatoolbardelegate_mac_p.h
index 56a4f4f062..787926fe5d 100644
--- a/src/widgets/widgets/qcocoatoolbardelegate_mac_p.h
+++ b/src/widgets/widgets/qcocoatoolbardelegate_mac_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qcombobox.cpp b/src/widgets/widgets/qcombobox.cpp
index 4cbd7eab7d..d6af8d6044 100644
--- a/src/widgets/widgets/qcombobox.cpp
+++ b/src/widgets/widgets/qcombobox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -74,9 +74,6 @@
#ifndef QT_NO_EFFECTS
# include <private/qeffects_p.h>
#endif
-#if defined(Q_WS_S60)
-#include "private/qt_s60_p.h"
-#endif
#ifndef QT_NO_ACCESSIBILITY
#include "qaccessible.h"
#endif
@@ -549,11 +546,9 @@ void QComboBoxPrivateContainer::setItemView(QAbstractItemView *itemView)
QStyleOptionComboBox opt = comboStyleOption();
const bool usePopup = combo->style()->styleHint(QStyle::SH_ComboBox_Popup, &opt, combo);
#ifndef QT_NO_SCROLLBAR
-#ifndef Q_WS_S60
if (usePopup)
view->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
#endif
-#endif
if (combo->style()->styleHint(QStyle::SH_ComboBox_ListMouseTracking, &opt, combo) ||
usePopup) {
view->setMouseTracking(true);
@@ -992,7 +987,7 @@ void QComboBoxPrivate::_q_dataChanged(const QModelIndex &topLeft, const QModelIn
q->update();
}
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(q, 0, QAccessible::NameChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::NameChanged, q, 0));
#endif
}
@@ -1248,7 +1243,7 @@ void QComboBoxPrivate::_q_emitCurrentIndexChanged(const QModelIndex &index)
emit q->currentIndexChanged(index.row());
emit q->currentIndexChanged(itemText(index));
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(q, 0, QAccessible::NameChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::NameChanged, q, 0));
#endif
}
@@ -2339,11 +2334,7 @@ void QComboBox::showPopup()
initStyleOption(&opt);
QRect listRect(style->subControlRect(QStyle::CC_ComboBox, &opt,
QStyle::SC_ComboBoxListBoxPopup, this));
-#ifndef Q_WS_S60
QRect screen = d->popupGeometry(QApplication::desktop()->screenNumber(this));
-#else
- QRect screen = qt_TRect2QRect(static_cast<CEikAppUi*>(S60->appUi())->ClientRect());
-#endif
QPoint below = mapToGlobal(listRect.bottomLeft());
int belowHeight = screen.bottom() - below.y();
@@ -2436,14 +2427,11 @@ void QComboBox::showPopup()
// Position horizontally.
listRect.moveLeft(above.x());
-#ifndef Q_WS_S60
// Position vertically so the curently selected item lines up
// with the combo box.
const QRect currentItemRect = view()->visualRect(view()->currentIndex());
const int offset = listRect.top() - currentItemRect.top();
listRect.moveTop(above.y() + offset - listRect.top());
-#endif
-
// Clamp the listRect height and vertical position so we don't expand outside the
// available screen geometry.This may override the vertical position, but it is more
@@ -2457,23 +2445,6 @@ void QComboBox::showPopup()
if (listRect.bottom() > screen.bottom())
listRect.moveBottom(screen.bottom());
}
-#ifdef Q_WS_S60
- if (screen.width() < screen.height()) {
- // in portait, menu should be positioned above softkeys
- listRect.moveBottom(screen.bottom());
- } else {
- TRect staConTopRect = TRect();
- AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EStaconTop, staConTopRect);
- listRect.setWidth(listRect.height());
- //by default popup is centered on screen in landscape
- listRect.moveCenter(screen.center());
- if (staConTopRect.IsEmpty() && AknLayoutUtils::CbaLocation() != AknLayoutUtils::EAknCbaLocationBottom) {
- // landscape without stacon, menu should be at the right
- (opt.direction == Qt::LeftToRight) ? listRect.setRight(screen.right()) :
- listRect.setLeft(screen.left());
- }
- }
-#endif
} else if (!boundToScreen || listRect.height() <= belowHeight) {
listRect.moveTopLeft(below);
} else if (listRect.height() <= aboveHeight) {
@@ -2487,7 +2458,7 @@ void QComboBox::showPopup()
}
if (qApp) {
- qApp->inputPanel()->reset();
+ qApp->inputMethod()->reset();
}
QScrollBar *sb = view()->horizontalScrollBar();
@@ -2612,7 +2583,7 @@ void QComboBox::clear()
Q_D(QComboBox);
d->model->removeRows(0, d->model->rowCount(d->root), d->root);
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::NameChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::NameChanged, this, 0));
#endif
}
@@ -2631,7 +2602,7 @@ void QComboBox::clearEditText()
if (d->lineEdit)
d->lineEdit->clear();
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::NameChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::NameChanged, this, 0));
#endif
}
@@ -2644,7 +2615,7 @@ void QComboBox::setEditText(const QString &text)
if (d->lineEdit)
d->lineEdit->setText(text);
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::NameChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::NameChanged, this, 0));
#endif
}
@@ -2692,39 +2663,6 @@ void QComboBox::changeEvent(QEvent *e)
d->updateLineEditGeometry();
d->setLayoutItemMargins(QStyle::SE_ComboBoxLayoutItem);
-#ifdef Q_WS_S60
- if (d->container) {
- QStyleOptionComboBox opt;
- initStyleOption(&opt);
-
- if (style()->styleHint(QStyle::SH_ComboBox_Popup, &opt, this)) {
- QRect screen = qt_TRect2QRect(static_cast<CEikAppUi*>(S60->appUi())->ClientRect());
-
- QRect listRect(style()->subControlRect(QStyle::CC_ComboBox, &opt,
- QStyle::SC_ComboBoxListBoxPopup, this));
- listRect.setHeight(qMin(screen.height(), screen.width()));
-
- if (screen.width() < screen.height()) {
- // in portait, menu should be positioned above softkeys
- listRect.moveBottom(screen.bottom());
- } else {
- TRect staConTopRect = TRect();
- AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EStaconTop, staConTopRect);
- listRect.setWidth(listRect.height());
- //by default popup is centered on screen in landscape
- listRect.moveCenter(screen.center());
- if (staConTopRect.IsEmpty() && AknLayoutUtils::CbaLocation() != AknLayoutUtils::EAknCbaLocationBottom) {
- // landscape without stacon, menu should be at the right
- (opt.direction == Qt::LeftToRight) ? listRect.setRight(screen.right()) :
- listRect.setLeft(screen.left());
- }
- }
-
- d->container->setGeometry(listRect);
- }
- }
-#endif
-
// ### need to update scrollers etc. as well here
break;
case QEvent::EnabledChange:
@@ -2753,10 +2691,6 @@ void QComboBox::changeEvent(QEvent *e)
void QComboBox::resizeEvent(QResizeEvent *)
{
Q_D(QComboBox);
-#ifdef Q_WS_S60
- if (d->viewContainer() && d->viewContainer()->isVisible())
- showPopup();
-#endif
d->updateLineEditGeometry();
}
diff --git a/src/widgets/widgets/qcombobox.h b/src/widgets/widgets/qcombobox.h
index 4a5050b945..1442cd983e 100644
--- a/src/widgets/widgets/qcombobox.h
+++ b/src/widgets/widgets/qcombobox.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_COMBOBOX
class QAbstractItemView;
diff --git a/src/widgets/widgets/qcombobox_p.h b/src/widgets/widgets/qcombobox_p.h
index a9d792f07d..68b52aeac2 100644
--- a/src/widgets/widgets/qcombobox_p.h
+++ b/src/widgets/widgets/qcombobox_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -200,9 +200,7 @@ protected:
menuOpt.menuItemType = QStyleOptionMenuItem::Scroller;
if (sliderAction == QAbstractSlider::SliderSingleStepAdd)
menuOpt.state |= QStyle::State_DownArrow;
-#ifndef Q_WS_S60
p.eraseRect(rect());
-#endif
style()->drawControl(QStyle::CE_MenuScroller, &menuOpt, &p);
}
@@ -272,9 +270,7 @@ protected:
const QStyleOptionViewItem &option,
const QModelIndex &index) const {
QStyleOptionMenuItem opt = getStyleOption(option, index);
-#ifndef Q_WS_S60
painter->fillRect(option.rect, opt.palette.background());
-#endif
mCombo->style()->drawControl(QStyle::CE_MenuItem, &opt, painter, mCombo);
}
QSize sizeHint(const QStyleOptionViewItem &option,
diff --git a/src/widgets/widgets/qcommandlinkbutton.cpp b/src/widgets/widgets/qcommandlinkbutton.cpp
index d61eeb6131..e392aaa1a5 100644
--- a/src/widgets/widgets/qcommandlinkbutton.cpp
+++ b/src/widgets/widgets/qcommandlinkbutton.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qcommandlinkbutton.h b/src/widgets/widgets/qcommandlinkbutton.h
index 726e0360d2..8bf2180046 100644
--- a/src/widgets/widgets/qcommandlinkbutton.h
+++ b/src/widgets/widgets/qcommandlinkbutton.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QCommandLinkButtonPrivate;
diff --git a/src/widgets/widgets/qdatetimeedit.cpp b/src/widgets/widgets/qdatetimeedit.cpp
index 871a394a80..5761c1299c 100644
--- a/src/widgets/widgets/qdatetimeedit.cpp
+++ b/src/widgets/widgets/qdatetimeedit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qdatetimeedit.h b/src/widgets/widgets/qdatetimeedit.h
index 77c76c483e..9a57175716 100644
--- a/src/widgets/widgets/qdatetimeedit.h
+++ b/src/widgets/widgets/qdatetimeedit.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,7 +50,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_DATETIMEEDIT
diff --git a/src/widgets/widgets/qdatetimeedit_p.h b/src/widgets/widgets/qdatetimeedit_p.h
index 0669c7c330..35f0f57f54 100644
--- a/src/widgets/widgets/qdatetimeedit_p.h
+++ b/src/widgets/widgets/qdatetimeedit_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qdial.cpp b/src/widgets/widgets/qdial.cpp
index 26cea362c2..566652b8f5 100644
--- a/src/widgets/widgets/qdial.cpp
+++ b/src/widgets/widgets/qdial.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qdial.h b/src/widgets/widgets/qdial.h
index 724028d129..411fbfa7ef 100644
--- a/src/widgets/widgets/qdial.h
+++ b/src/widgets/widgets/qdial.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_DIAL
diff --git a/src/widgets/widgets/qdialogbuttonbox.cpp b/src/widgets/widgets/qdialogbuttonbox.cpp
index e53bd55129..d1084168a9 100644
--- a/src/widgets/widgets/qdialogbuttonbox.cpp
+++ b/src/widgets/widgets/qdialogbuttonbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qdialogbuttonbox.h b/src/widgets/widgets/qdialogbuttonbox.h
index 2fca5a5791..a0591dcd71 100644
--- a/src/widgets/widgets/qdialogbuttonbox.h
+++ b/src/widgets/widgets/qdialogbuttonbox.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QAbstractButton;
class QPushButton;
diff --git a/src/widgets/widgets/qdockarealayout.cpp b/src/widgets/widgets/qdockarealayout.cpp
index 1acd93ed60..df083ccbfe 100644
--- a/src/widgets/widgets/qdockarealayout.cpp
+++ b/src/widgets/widgets/qdockarealayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qdockarealayout_p.h b/src/widgets/widgets/qdockarealayout_p.h
index 46ac966798..17078f3709 100644
--- a/src/widgets/widgets/qdockarealayout_p.h
+++ b/src/widgets/widgets/qdockarealayout_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qdockwidget.cpp b/src/widgets/widgets/qdockwidget.cpp
index 32a73c54ed..6da7605f4c 100644
--- a/src/widgets/widgets/qdockwidget.cpp
+++ b/src/widgets/widgets/qdockwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qdockwidget.h b/src/widgets/widgets/qdockwidget.h
index d6270e4a99..21872fa404 100644
--- a/src/widgets/widgets/qdockwidget.h
+++ b/src/widgets/widgets/qdockwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_DOCKWIDGET
diff --git a/src/widgets/widgets/qdockwidget_p.h b/src/widgets/widgets/qdockwidget_p.h
index 2bf50d8aa6..7b31e4e951 100644
--- a/src/widgets/widgets/qdockwidget_p.h
+++ b/src/widgets/widgets/qdockwidget_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qeffects.cpp b/src/widgets/widgets/qeffects.cpp
index ab04e2314f..486905658d 100644
--- a/src/widgets/widgets/qeffects.cpp
+++ b/src/widgets/widgets/qeffects.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qeffects_p.h b/src/widgets/widgets/qeffects_p.h
index e26810835e..5629672759 100644
--- a/src/widgets/widgets/qeffects_p.h
+++ b/src/widgets/widgets/qeffects_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qfocusframe.cpp b/src/widgets/widgets/qfocusframe.cpp
index 62dc8b64f2..2caa9a0b6f 100644
--- a/src/widgets/widgets/qfocusframe.cpp
+++ b/src/widgets/widgets/qfocusframe.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qfocusframe.h b/src/widgets/widgets/qfocusframe.h
index ed117ddd6c..d12cc42a53 100644
--- a/src/widgets/widgets/qfocusframe.h
+++ b/src/widgets/widgets/qfocusframe.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QFocusFramePrivate;
class QStyleOption;
diff --git a/src/widgets/widgets/qfontcombobox.cpp b/src/widgets/widgets/qfontcombobox.cpp
index 845f37ccf1..5a8e083e44 100644
--- a/src/widgets/widgets/qfontcombobox.cpp
+++ b/src/widgets/widgets/qfontcombobox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qfontcombobox.h b/src/widgets/widgets/qfontcombobox.h
index 33eec561af..5ed35df8a7 100644
--- a/src/widgets/widgets/qfontcombobox.h
+++ b/src/widgets/widgets/qfontcombobox.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QFontComboBoxPrivate;
diff --git a/src/widgets/widgets/qframe.cpp b/src/widgets/widgets/qframe.cpp
index d0de825467..cae4137803 100644
--- a/src/widgets/widgets/qframe.cpp
+++ b/src/widgets/widgets/qframe.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qframe.h b/src/widgets/widgets/qframe.h
index 51cd391185..4bb3a75e58 100644
--- a/src/widgets/widgets/qframe.h
+++ b/src/widgets/widgets/qframe.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QFramePrivate;
diff --git a/src/widgets/widgets/qframe_p.h b/src/widgets/widgets/qframe_p.h
index a74780fa60..8bb585f2ec 100644
--- a/src/widgets/widgets/qframe_p.h
+++ b/src/widgets/widgets/qframe_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qgroupbox.cpp b/src/widgets/widgets/qgroupbox.cpp
index 1bad9a5b56..17f3a9323a 100644
--- a/src/widgets/widgets/qgroupbox.cpp
+++ b/src/widgets/widgets/qgroupbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -249,7 +249,7 @@ void QGroupBox::setTitle(const QString &title)
update();
updateGeometry();
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::NameChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::NameChanged, this, 0));
#endif
}
diff --git a/src/widgets/widgets/qgroupbox.h b/src/widgets/widgets/qgroupbox.h
index 70bc4cde38..249f4262cf 100644
--- a/src/widgets/widgets/qgroupbox.h
+++ b/src/widgets/widgets/qgroupbox.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_GROUPBOX
diff --git a/src/widgets/widgets/qlabel.cpp b/src/widgets/widgets/qlabel.cpp
index 1503085661..d23fab4083 100644
--- a/src/widgets/widgets/qlabel.cpp
+++ b/src/widgets/widgets/qlabel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -316,7 +316,7 @@ void QLabel::setText(const QString &text)
#ifndef QT_NO_ACCESSIBILITY
if (accessibleName().isEmpty())
- QAccessible::updateAccessibility(this, 0, QAccessible::NameChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::NameChanged, this, 0));
#endif
}
diff --git a/src/widgets/widgets/qlabel.h b/src/widgets/widgets/qlabel.h
index 5d61cafab0..7da369b071 100644
--- a/src/widgets/widgets/qlabel.h
+++ b/src/widgets/widgets/qlabel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QLabelPrivate;
diff --git a/src/widgets/widgets/qlabel_p.h b/src/widgets/widgets/qlabel_p.h
index 8de0e301fd..c0cfc984f4 100644
--- a/src/widgets/widgets/qlabel_p.h
+++ b/src/widgets/widgets/qlabel_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qlcdnumber.cpp b/src/widgets/widgets/qlcdnumber.cpp
index 48836a52d7..71e08fdaeb 100644
--- a/src/widgets/widgets/qlcdnumber.cpp
+++ b/src/widgets/widgets/qlcdnumber.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -398,18 +398,6 @@ QLCDNumber::~QLCDNumber()
/*!
- \deprecated
- \property QLCDNumber::numDigits
- \brief the current number of digits displayed
- \sa digitCount
-*/
-
-void QLCDNumber::setNumDigits(int numDigits)
-{
- setDigitCount(numDigits);
-}
-
-/*!
\since 4.6
\property QLCDNumber::digitCount
\brief the current number of digits displayed
@@ -476,12 +464,6 @@ void QLCDNumber::setDigitCount(int numDigits)
}
}
-int QLCDNumber::numDigits() const
-{
- Q_D(const QLCDNumber);
- return d->ndigits;
-}
-
/*!
Returns the current number of digits.
*/
diff --git a/src/widgets/widgets/qlcdnumber.h b/src/widgets/widgets/qlcdnumber.h
index fcea53ef28..585c965282 100644
--- a/src/widgets/widgets/qlcdnumber.h
+++ b/src/widgets/widgets/qlcdnumber.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_LCDNUMBER
@@ -59,7 +58,7 @@ class Q_WIDGETS_EXPORT QLCDNumber : public QFrame // LCD number widget
Q_OBJECT
Q_ENUMS(Mode SegmentStyle)
Q_PROPERTY(bool smallDecimalPoint READ smallDecimalPoint WRITE setSmallDecimalPoint)
- Q_PROPERTY(int numDigits READ numDigits WRITE setNumDigits)
+ Q_PROPERTY(int numDigits READ digitCount WRITE setDigitCount)
Q_PROPERTY(int digitCount READ digitCount WRITE setDigitCount)
Q_PROPERTY(Mode mode READ mode WRITE setMode)
Q_PROPERTY(SegmentStyle segmentStyle READ segmentStyle WRITE setSegmentStyle)
@@ -79,10 +78,6 @@ public:
};
bool smallDecimalPoint() const;
-#ifdef QT_DEPRECATED
- QT_DEPRECATED int numDigits() const;
- QT_DEPRECATED void setNumDigits(int nDigits);
-#endif
int digitCount() const;
void setDigitCount(int nDigits);
diff --git a/src/widgets/widgets/qlineedit.cpp b/src/widgets/widgets/qlineedit.cpp
index 5714052059..77d6f5422a 100644
--- a/src/widgets/widgets/qlineedit.cpp
+++ b/src/widgets/widgets/qlineedit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1202,7 +1202,7 @@ void QLineEdit::insert(const QString &newText)
void QLineEdit::clear()
{
Q_D(QLineEdit);
- d->resetInputPanel();
+ d->resetInputMethod();
d->control->clear();
}
@@ -1215,7 +1215,7 @@ void QLineEdit::clear()
void QLineEdit::undo()
{
Q_D(QLineEdit);
- d->resetInputPanel();
+ d->resetInputMethod();
d->control->undo();
}
@@ -1226,7 +1226,7 @@ void QLineEdit::undo()
void QLineEdit::redo()
{
Q_D(QLineEdit);
- d->resetInputPanel();
+ d->resetInputMethod();
d->control->redo();
}
diff --git a/src/widgets/widgets/qlineedit.h b/src/widgets/widgets/qlineedit.h
index 2daa893b3b..6901ec8bdf 100644
--- a/src/widgets/widgets/qlineedit.h
+++ b/src/widgets/widgets/qlineedit.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_LINEEDIT
diff --git a/src/widgets/widgets/qlineedit_p.cpp b/src/widgets/widgets/qlineedit_p.cpp
index c54f60f62e..e3404a62de 100644
--- a/src/widgets/widgets/qlineedit_p.cpp
+++ b/src/widgets/widgets/qlineedit_p.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,7 +51,7 @@
#include "qaccessible.h"
#endif
#ifndef QT_NO_IM
-#include "qinputpanel.h"
+#include "qinputmethod.h"
#include "qlist.h"
#endif
@@ -133,7 +133,7 @@ void QLineEditPrivate::_q_editFocusChange(bool e)
void QLineEditPrivate::_q_selectionChanged()
{
Q_Q(QLineEdit);
- if (!control->text().isEmpty() && control->preeditAreaText().isEmpty()) {
+ if (control->preeditAreaText().isEmpty()) {
QStyleOptionFrameV2 opt;
q->initStyleOption(&opt);
bool showCursor = control->hasSelectedText() ?
@@ -143,6 +143,9 @@ void QLineEditPrivate::_q_selectionChanged()
}
emit q->selectionChanged();
+#ifndef QT_NO_ACCESSIBILITY
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::TextSelectionChanged, q, 0));
+#endif
}
void QLineEditPrivate::_q_updateNeeded(const QRect &rect)
@@ -239,17 +242,17 @@ void QLineEditPrivate::updatePasswordEchoEditing(bool editing)
q->setAttribute(Qt::WA_InputMethodEnabled, shouldEnableInputMethod());
}
-void QLineEditPrivate::resetInputPanel()
+void QLineEditPrivate::resetInputMethod()
{
Q_Q(QLineEdit);
if (q->hasFocus() && qApp) {
- qApp->inputPanel()->reset();
+ qApp->inputMethod()->reset();
}
}
/*!
This function is not intended as polymorphic usage. Just a shared code
- fragment that calls QInputPanel::invokeAction for this
+ fragment that calls QInputMethod::invokeAction for this
class.
*/
bool QLineEditPrivate::sendMouseEventToInputContext( QMouseEvent *e )
@@ -263,7 +266,7 @@ bool QLineEditPrivate::sendMouseEventToInputContext( QMouseEvent *e )
if (mousePos >= 0) {
if (e->type() == QEvent::MouseButtonRelease)
- qApp->inputPanel()->invokeAction(QInputPanel::Click, mousePos);
+ qApp->inputMethod()->invokeAction(QInputMethod::Click, mousePos);
return true;
}
diff --git a/src/widgets/widgets/qlineedit_p.h b/src/widgets/widgets/qlineedit_p.h
index 206e835a74..3b7a0d1b91 100644
--- a/src/widgets/widgets/qlineedit_p.h
+++ b/src/widgets/widgets/qlineedit_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -102,7 +102,7 @@ public:
void updatePasswordEchoEditing(bool);
- void resetInputPanel();
+ void resetInputMethod();
inline bool shouldEnableInputMethod() const
{
diff --git a/src/widgets/widgets/qmaccocoaviewcontainer_mac.h b/src/widgets/widgets/qmaccocoaviewcontainer_mac.h
index 8824fde912..88d823fc91 100644
--- a/src/widgets/widgets/qmaccocoaviewcontainer_mac.h
+++ b/src/widgets/widgets/qmaccocoaviewcontainer_mac.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QMacCocoaViewContainerPrivate;
diff --git a/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm b/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm
index 8facb4db61..1c8e6ba0e8 100644
--- a/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm
+++ b/src/widgets/widgets/qmaccocoaviewcontainer_mac.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qmacnativewidget_mac.h b/src/widgets/widgets/qmacnativewidget_mac.h
index 2b4d4fbdae..61127dcea4 100644
--- a/src/widgets/widgets/qmacnativewidget_mac.h
+++ b/src/widgets/widgets/qmacnativewidget_mac.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QMacNativeWidgetPrivate;
class Q_WIDGETS_EXPORT QMacNativeWidget : public QWidget
diff --git a/src/widgets/widgets/qmacnativewidget_mac.mm b/src/widgets/widgets/qmacnativewidget_mac.mm
index 925ef3d8a9..7974e93d88 100644
--- a/src/widgets/widgets/qmacnativewidget_mac.mm
+++ b/src/widgets/widgets/qmacnativewidget_mac.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qmainwindow.cpp b/src/widgets/widgets/qmainwindow.cpp
index ad1890a708..73ba0cc15e 100644
--- a/src/widgets/widgets/qmainwindow.cpp
+++ b/src/widgets/widgets/qmainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qmainwindow.h b/src/widgets/widgets/qmainwindow.h
index 43d269ef6f..d902f73aa0 100644
--- a/src/widgets/widgets/qmainwindow.h
+++ b/src/widgets/widgets/qmainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_MAINWINDOW
diff --git a/src/widgets/widgets/qmainwindowlayout.cpp b/src/widgets/widgets/qmainwindowlayout.cpp
index 32d893630f..c67881e652 100644
--- a/src/widgets/widgets/qmainwindowlayout.cpp
+++ b/src/widgets/widgets/qmainwindowlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qmainwindowlayout_mac.mm b/src/widgets/widgets/qmainwindowlayout_mac.mm
index b6fcca88fa..f90029c7b3 100644
--- a/src/widgets/widgets/qmainwindowlayout_mac.mm
+++ b/src/widgets/widgets/qmainwindowlayout_mac.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,10 +54,10 @@ QT_BEGIN_NAMESPACE
// namespace up the stuff
#define SS(x) #x
#define S0(x) SS(x)
-#define S "com.trolltech.qt-" S0(QT_NAMESPACE) ".qmainwindow.qtoolbarInHIToolbar"
-#define SToolbar "com.trolltech.qt-" S0(QT_NAMESPACE) ".hitoolbar-qtoolbar"
-#define SNSToolbar "com.trolltech.qt-" S0(QT_NAMESPACE) ".qtoolbarInNSToolbar"
-#define MacToolbar "com.trolltech.qt-" S0(QT_NAMESPACE) ".qmainwindow.mactoolbar"
+#define S "org.qt-project.qt-" S0(QT_NAMESPACE) ".qmainwindow.qtoolbarInHIToolbar"
+#define SToolbar "org.qt-project.qt-" S0(QT_NAMESPACE) ".hitoolbar-qtoolbar"
+#define SNSToolbar "org.qt-project.qt-" S0(QT_NAMESPACE) ".qtoolbarInNSToolbar"
+#define MacToolbar "org.qt-project.qt-" S0(QT_NAMESPACE) ".qmainwindow.mactoolbar"
static NSString *kQToolBarNSToolbarIdentifier = @SNSToolbar;
static CFStringRef kQMainWindowMacToolbarID = CFSTR(MacToolbar);
@@ -69,8 +69,8 @@ static CFStringRef kQMainWindowMacToolbarID = CFSTR(MacToolbar);
#undef MacToolbar
#else
-static NSString *kQToolBarNSToolbarIdentifier = @"com.trolltech.qt.qmainwindow.qtoolbarInNSToolbar";
-static CFStringRef kQMainWindowMacToolbarID = CFSTR("com.trolltech.qt.qmainwindow.mactoolbar");
+static NSString *kQToolBarNSToolbarIdentifier = @"org.qt-project.qt.qmainwindow.qtoolbarInNSToolbar";
+static CFStringRef kQMainWindowMacToolbarID = CFSTR("org.qt-project.qt.qmainwindow.mactoolbar");
#endif // QT_NAMESPACE
diff --git a/src/widgets/widgets/qmainwindowlayout_p.h b/src/widgets/widgets/qmainwindowlayout_p.h
index 34d94119ad..e8de9f18f1 100644
--- a/src/widgets/widgets/qmainwindowlayout_p.h
+++ b/src/widgets/widgets/qmainwindowlayout_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qmdiarea.cpp b/src/widgets/widgets/qmdiarea.cpp
index 021af9be0b..7d73a66c5c 100644
--- a/src/widgets/widgets/qmdiarea.cpp
+++ b/src/widgets/widgets/qmdiarea.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qmdiarea.h b/src/widgets/widgets/qmdiarea.h
index fbd07ad249..54cac67eff 100644
--- a/src/widgets/widgets/qmdiarea.h
+++ b/src/widgets/widgets/qmdiarea.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_MDIAREA
diff --git a/src/widgets/widgets/qmdiarea_p.h b/src/widgets/widgets/qmdiarea_p.h
index e80c6b5ecb..d94645c538 100644
--- a/src/widgets/widgets/qmdiarea_p.h
+++ b/src/widgets/widgets/qmdiarea_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qmdisubwindow.cpp b/src/widgets/widgets/qmdisubwindow.cpp
index f2190313e9..cca39a6502 100644
--- a/src/widgets/widgets/qmdisubwindow.cpp
+++ b/src/widgets/widgets/qmdisubwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qmdisubwindow.h b/src/widgets/widgets/qmdisubwindow.h
index 332619c3b4..1e68ca15a3 100644
--- a/src/widgets/widgets/qmdisubwindow.h
+++ b/src/widgets/widgets/qmdisubwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_MDIAREA
diff --git a/src/widgets/widgets/qmdisubwindow_p.h b/src/widgets/widgets/qmdisubwindow_p.h
index 83a91fb39b..1d1d01093a 100644
--- a/src/widgets/widgets/qmdisubwindow_p.h
+++ b/src/widgets/widgets/qmdisubwindow_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qmenu.cpp b/src/widgets/widgets/qmenu.cpp
index a255b840dc..1ad697c430 100644
--- a/src/widgets/widgets/qmenu.cpp
+++ b/src/widgets/widgets/qmenu.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -74,12 +74,6 @@
# include <private/qt_x11_p.h>
#endif
-#if defined(Q_OS_MAC) && !defined(QT_NO_EFFECTS)
-# include <private/qcore_mac_p.h>
-# include <private/qt_cocoa_helpers_mac_p.h>
-#endif
-
-
QT_BEGIN_NAMESPACE
QMenu *QMenuPrivate::mouseDown = 0;
@@ -1091,8 +1085,8 @@ void QMenuPrivate::activateAction(QAction *action, QAction::ActionEvent action_e
#ifndef QT_NO_ACCESSIBILITY
if (QAccessible::isActive()) {
int actionIndex = indexOf(action) + 1;
- QAccessible::updateAccessibility(q, actionIndex, QAccessible::Focus);
- QAccessible::updateAccessibility(q, actionIndex, QAccessible::Selection);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::Focus, q, actionIndex));
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::Selection, q, actionIndex));
}
#endif
action->showStatusText(topCausedWidget());
@@ -1977,7 +1971,7 @@ void QMenu::popup(const QPoint &p, QAction *atAction)
}
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::PopupMenuStart);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::PopupMenuStart, this ,0));
#endif
}
@@ -2123,7 +2117,7 @@ void QMenu::hideEvent(QHideEvent *)
d->eventLoop->exit();
d->setCurrentAction(0);
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::PopupMenuEnd);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::PopupMenuEnd, this, 0));
#endif
#ifndef QT_NO_MENUBAR
if (QMenuBar *mb = qobject_cast<QMenuBar*>(d->causedPopup.widget))
@@ -2899,16 +2893,6 @@ void QMenu::actionEvent(QActionEvent *e)
d->wce_menu->syncAction(e->action());
#endif
-#ifdef Q_WS_S60
- if (!d->symbian_menu)
- d->symbian_menu = new QMenuPrivate::QSymbianMenuPrivate;
- if (e->type() == QEvent::ActionAdded)
- d->symbian_menu->addAction(e->action(), d->symbian_menu->findAction(e->before()));
- else if (e->type() == QEvent::ActionRemoved)
- d->symbian_menu->removeAction(e->action());
- else if (e->type() == QEvent::ActionChanged)
- d->symbian_menu->syncAction(e->action());
-#endif
if (isVisible()) {
d->updateActionRects();
resize(sizeHint());
diff --git a/src/widgets/widgets/qmenu.h b/src/widgets/widgets/qmenu.h
index 645a15bdc8..fa0542b6c2 100644
--- a/src/widgets/widgets/qmenu.h
+++ b/src/widgets/widgets/qmenu.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,7 +56,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_MENU
diff --git a/src/widgets/widgets/qmenu_p.h b/src/widgets/widgets/qmenu_p.h
index a6e700b528..af236c1c8f 100644
--- a/src/widgets/widgets/qmenu_p.h
+++ b/src/widgets/widgets/qmenu_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,31 +55,16 @@
#include "QtWidgets/qmenubar.h"
#include "QtWidgets/qstyleoption.h"
-#ifdef Q_OS_MAC
-#include "QtWidgets/qmacdefines_mac.h"
-#endif
#include "QtCore/qdatetime.h"
#include "QtCore/qmap.h"
#include "QtCore/qhash.h"
#include "QtCore/qbasictimer.h"
#include "private/qwidget_p.h"
-
-#ifdef Q_WS_S60
-class CEikMenuPane;
-#define QT_SYMBIAN_FIRST_MENU_ITEM 32000
-#define QT_SYMBIAN_LAST_MENU_ITEM 41999 // 10000 items ought to be enough for anybody...
-#endif
QT_BEGIN_NAMESPACE
#ifndef QT_NO_MENU
-#ifdef Q_WS_S60
-void qt_symbian_next_menu_from_action(QWidget* actionContainer);
-void qt_symbian_show_toplevel(CEikMenuPane* menuPane);
-void qt_symbian_show_submenu(CEikMenuPane* menuPane, int id);
-#endif // Q_WS_S60
-
class QTornOffMenu;
class QEventLoop;
@@ -91,15 +76,6 @@ struct QWceMenuAction {
QWceMenuAction() : menuHandle(0), command(0) {}
};
#endif
-#ifdef Q_WS_S60
-struct QSymbianMenuAction {
- uint command;
- int parent;
- CEikMenuPane* menuPane;
- QPointer<QAction> action;
- QSymbianMenuAction() : command(0) {}
-};
-#endif
class QMenuPrivate : public QWidgetPrivate
{
@@ -118,9 +94,6 @@ public:
#if defined(Q_WS_WINCE) && !defined(QT_NO_MENUBAR)
,wce_menu(0)
#endif
-#ifdef Q_WS_S60
- ,symbian_menu(0)
-#endif
{ }
~QMenuPrivate()
{
@@ -129,10 +102,6 @@ public:
#if defined(Q_WS_WINCE) && !defined(QT_NO_MENUBAR)
delete wce_menu;
#endif
-#ifdef Q_WS_S60
- delete symbian_menu;
-#endif
-
}
void init();
@@ -284,28 +253,6 @@ public:
HMENU wceMenu();
QAction* wceCommands(uint command);
#endif
-#if defined(Q_WS_S60)
- struct QSymbianMenuPrivate {
- QList<QSymbianMenuAction*> actionItems;
- QSymbianMenuPrivate();
- ~QSymbianMenuPrivate();
- void addAction(QAction *, QSymbianMenuAction* =0);
- void addAction(QSymbianMenuAction *, QSymbianMenuAction* =0);
- void syncAction(QSymbianMenuAction *);
- inline void syncAction(QAction *a) { syncAction(findAction(a)); }
- void removeAction(QSymbianMenuAction *);
- void rebuild(bool reCreate = false);
- inline void removeAction(QAction *a) { removeAction(findAction(a)); }
- inline QSymbianMenuAction *findAction(QAction *a) {
- for(int i = 0; i < actionItems.size(); i++) {
- QSymbianMenuAction *act = actionItems[i];
- if(a == act->action)
- return act;
- }
- return 0;
- }
- } *symbian_menu;
-#endif
QPointer<QWidget> noReplayFor;
};
diff --git a/src/widgets/widgets/qmenu_wince.cpp b/src/widgets/widgets/qmenu_wince.cpp
index 26a9302efb..ae90d23b28 100644
--- a/src/widgets/widgets/qmenu_wince.cpp
+++ b/src/widgets/widgets/qmenu_wince.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qmenu_wince_resource_p.h b/src/widgets/widgets/qmenu_wince_resource_p.h
index b40a9526e5..589ccf8cfe 100644
--- a/src/widgets/widgets/qmenu_wince_resource_p.h
+++ b/src/widgets/widgets/qmenu_wince_resource_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qmenubar.cpp b/src/widgets/widgets/qmenubar.cpp
index 2908d4723e..f1269fde0f 100644
--- a/src/widgets/widgets/qmenubar.cpp
+++ b/src/widgets/widgets/qmenubar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -531,8 +531,8 @@ void QMenuBarPrivate::_q_actionHovered()
if (QAccessible::isActive()) {
int actionIndex = actions.indexOf(action);
++actionIndex;
- QAccessible::updateAccessibility(q, actionIndex, QAccessible::Focus);
- QAccessible::updateAccessibility(q, actionIndex, QAccessible::Selection);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::Focus, q, actionIndex));
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::Selection, q, actionIndex));
}
#endif //QT_NO_ACCESSIBILITY
}
@@ -788,10 +788,6 @@ QMenuBar::~QMenuBar()
if (qt_wince_is_mobile())
d->wceDestroyMenuBar();
#endif
-#ifdef Q_WS_S60
- Q_D(QMenuBar);
- d->symbianDestroyMenuBar();
-#endif
}
/*!
@@ -1043,7 +1039,7 @@ void QMenuBar::paintEvent(QPaintEvent *e)
*/
void QMenuBar::setVisible(bool visible)
{
-#if defined(Q_OS_MAC) || defined(Q_OS_WINCE) || defined(Q_WS_S60)
+#if defined(Q_OS_MAC) || defined(Q_OS_WINCE)
if (isNativeMenuBar()) {
if (!visible)
QWidget::setVisible(false);
@@ -1249,9 +1245,7 @@ void QMenuBar::actionEvent(QActionEvent *e)
if (d->platformMenuBar) {
QPlatformMenuBar *nativeMenuBar = d->platformMenuBar;
-#if defined(Q_WS_S60)
- QMenuBarPrivate::QSymbianMenuBarPrivate *nativeMenuBar = d->symbian_menubar;
-#elif defined(Q_WS_WINCE)
+#if defined(Q_WS_WINCE)
QMenuBarPrivate::QWceMenuBarPrivate *nativeMenuBar = d->wce_menubar;
#endif
if (!nativeMenuBar)
@@ -1348,38 +1342,6 @@ void QMenuBarPrivate::handleReparent()
if (qt_wince_is_mobile() && wce_menubar)
wce_menubar->rebuild();
#endif
-#ifdef Q_WS_S60
-
- // Construct symbian_menubar when this code path is entered first time
- // and when newParent != NULL
- if (!symbian_menubar)
- symbianCreateMenuBar(newParent);
-
- // Reparent and rebuild menubar when parent is changed
- if (symbian_menubar) {
- if (oldParent != newParent)
- reparentMenuBar(oldParent, newParent);
- q->hide();
- symbian_menubar->rebuild();
- }
-
-#ifdef QT_SOFTKEYS_ENABLED
- // Constuct menuBarAction when this code path is entered first time
- if (!menuBarAction) {
- if (newParent) {
- menuBarAction = QSoftKeyManager::createAction(QSoftKeyManager::MenuSoftKey, newParent);
- newParent->addAction(menuBarAction);
- }
- } else {
- // If reparenting i.e. we already have menuBarAction, remove it from old parent
- // and add for a new parent
- if (oldParent)
- oldParent->removeAction(menuBarAction);
- if (newParent)
- newParent->addAction(menuBarAction);
- }
-#endif // QT_SOFTKEYS_ENABLED
-#endif // Q_WS_S60
}
/*!
@@ -1564,7 +1526,7 @@ QRect QMenuBar::actionGeometry(QAction *act) const
QSize QMenuBar::minimumSizeHint() const
{
Q_D(const QMenuBar);
-#if defined(Q_OS_MAC) || defined(Q_WS_WINCE) || defined(Q_WS_S60)
+#if defined(Q_OS_MAC) || defined(Q_WS_WINCE)
const bool as_gui_menubar = !isNativeMenuBar();
#else
const bool as_gui_menubar = true;
@@ -1620,7 +1582,7 @@ QSize QMenuBar::minimumSizeHint() const
QSize QMenuBar::sizeHint() const
{
Q_D(const QMenuBar);
-#if defined(Q_OS_MAC) || defined(Q_WS_WINCE) || defined(Q_WS_S60)
+#if defined(Q_OS_MAC) || defined(Q_WS_WINCE)
const bool as_gui_menubar = !isNativeMenuBar();
#else
const bool as_gui_menubar = true;
@@ -1679,7 +1641,7 @@ QSize QMenuBar::sizeHint() const
int QMenuBar::heightForWidth(int) const
{
Q_D(const QMenuBar);
-#if defined(Q_OS_MAC) || defined(Q_WS_WINCE) || defined(Q_WS_S60)
+#if defined(Q_OS_MAC) || defined(Q_WS_WINCE)
const bool as_gui_menubar = !isNativeMenuBar();
#else
const bool as_gui_menubar = true;
@@ -1823,6 +1785,8 @@ QWidget *QMenuBar::cornerWidget(Qt::Corner corner) const
The default is to follow whether the Qt::AA_DontUseNativeMenuBar attribute
is set for the application. Explicitly settings this property overrides
the presence (or abscence) of the attribute.
+
+ \sa void-qt-mac-set-native-menubar-bool-enable
*/
void QMenuBar::setNativeMenuBar(bool nativeMenuBar)
@@ -1920,6 +1884,8 @@ QAction *QMenuBar::defaultAction() const
is triggered as a result of a mouse click; \a action is the action that
caused the signal to be emitted.
+ \note QMenuBar has to have ownership of the QMenu in order this signal to work.
+
Normally, you connect each menu action to a single slot using
QAction::triggered(), but sometimes you will want to connect
several items to a single slot (most often if the user selects
diff --git a/src/widgets/widgets/qmenubar.h b/src/widgets/widgets/qmenubar.h
index 84fb378064..b20682ef6c 100644
--- a/src/widgets/widgets/qmenubar.h
+++ b/src/widgets/widgets/qmenubar.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -43,16 +43,11 @@
#define QMENUBAR_H
#include <QtWidgets/qmenu.h>
-#ifdef Q_OS_MAC
-#include "QtWidgets/qmacdefines_mac.h"
-#endif
-
QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_MENUBAR
@@ -157,12 +152,6 @@ private:
friend class QMenu;
friend class QMenuPrivate;
friend class QWindowsStyle;
-
-#ifdef Q_OS_MAC
- friend class QApplicationPrivate;
- friend class QWidgetPrivate;
- friend bool qt_mac_activate_action(MenuRef, uint, QAction::ActionEvent, bool);
-#endif
};
#endif // QT_NO_MENUBAR
diff --git a/src/widgets/widgets/qmenubar_p.h b/src/widgets/widgets/qmenubar_p.h
index de1ab37a19..a15a1e432e 100644
--- a/src/widgets/widgets/qmenubar_p.h
+++ b/src/widgets/widgets/qmenubar_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -61,13 +61,6 @@
#include "qguifunctions_wince.h"
#endif
-#ifndef QT_NO_MENUBAR
-#ifdef Q_WS_S60
-class CCoeControl;
-class CEikMenuBar;
-#endif
-#endif
-
QT_BEGIN_NAMESPACE
#ifndef QT_NO_MENUBAR
@@ -83,10 +76,6 @@ public:
#ifdef Q_WS_WINCE
, wce_menubar(0), wceClassicMenu(false)
#endif
-#ifdef Q_WS_S60
- , symbian_menubar(0)
-#endif
-
{ }
~QMenuBarPrivate()
{
@@ -94,9 +83,6 @@ public:
#ifdef Q_WS_WINCE
delete wce_menubar;
#endif
-#ifdef Q_WS_S60
- delete symbian_menubar;
-#endif
}
void init();
@@ -203,35 +189,6 @@ public:
void wceRefresh();
bool wceEmitSignals(QList<QWceMenuAction*> actions, uint command);
#endif
-#ifdef Q_WS_S60
- void symbianCreateMenuBar(QWidget *);
- void symbianDestroyMenuBar();
- void reparentMenuBar(QWidget *oldParent, QWidget *newParent);
- struct QSymbianMenuBarPrivate {
- QList<QSymbianMenuAction*> actionItems;
- QMenuBarPrivate *d;
- QSymbianMenuBarPrivate(QMenuBarPrivate *menubar);
- ~QSymbianMenuBarPrivate();
- void addAction(QAction *, QSymbianMenuAction* =0);
- void addAction(QSymbianMenuAction *, QSymbianMenuAction* =0);
- void syncAction(QSymbianMenuAction *);
- inline void syncAction(QAction *a) { syncAction(findAction(a)); }
- void removeAction(QSymbianMenuAction *);
- void rebuild();
- inline void removeAction(QAction *a) { removeAction(findAction(a)); }
- inline QSymbianMenuAction *findAction(QAction *a) {
- for(int i = 0; i < actionItems.size(); i++) {
- QSymbianMenuAction *act = actionItems[i];
- if(a == act->action)
- return act;
- }
- return 0;
- }
- void insertNativeMenuItems(const QList<QAction*> &actions);
-
- } *symbian_menubar;
- static int symbianCommands(int command);
-#endif
#ifdef QT_SOFTKEYS_ENABLED
QAction *menuBarAction;
#endif
diff --git a/src/widgets/widgets/qplaintextedit.cpp b/src/widgets/widgets/qplaintextedit.cpp
index 9f92406a04..674a818052 100644
--- a/src/widgets/widgets/qplaintextedit.cpp
+++ b/src/widgets/widgets/qplaintextedit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qplaintextedit.h b/src/widgets/widgets/qplaintextedit.h
index 9860914b98..3d53aeb1d5 100644
--- a/src/widgets/widgets/qplaintextedit.h
+++ b/src/widgets/widgets/qplaintextedit.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -57,7 +57,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QStyleSheet;
class QTextDocument;
diff --git a/src/widgets/widgets/qplaintextedit_p.h b/src/widgets/widgets/qplaintextedit_p.h
index 8f880d9772..b825bff9fd 100644
--- a/src/widgets/widgets/qplaintextedit_p.h
+++ b/src/widgets/widgets/qplaintextedit_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qprogressbar.cpp b/src/widgets/widgets/qprogressbar.cpp
index e731b63c66..eabed2ee62 100644
--- a/src/widgets/widgets/qprogressbar.cpp
+++ b/src/widgets/widgets/qprogressbar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -314,7 +314,7 @@ void QProgressBar::setValue(int value)
d->value = value;
emit valueChanged(value);
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::ValueChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::ValueChanged, this, 0));
#endif
if (d->repaintRequired())
repaint();
diff --git a/src/widgets/widgets/qprogressbar.h b/src/widgets/widgets/qprogressbar.h
index cdb6d36dfd..fad1ee4e0b 100644
--- a/src/widgets/widgets/qprogressbar.h
+++ b/src/widgets/widgets/qprogressbar.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_PROGRESSBAR
diff --git a/src/widgets/widgets/qpushbutton.cpp b/src/widgets/widgets/qpushbutton.cpp
index ff477ec1d7..99252c43dc 100644
--- a/src/widgets/widgets/qpushbutton.cpp
+++ b/src/widgets/widgets/qpushbutton.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -376,7 +376,7 @@ void QPushButton::setDefault(bool enable)
}
update();
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(this, 0, QAccessible::StateChanged);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::StateChanged, this, 0));
#endif
}
diff --git a/src/widgets/widgets/qpushbutton.h b/src/widgets/widgets/qpushbutton.h
index 1dc0a19542..125a679d6d 100644
--- a/src/widgets/widgets/qpushbutton.h
+++ b/src/widgets/widgets/qpushbutton.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QPushButtonPrivate;
class QMenu;
diff --git a/src/widgets/widgets/qpushbutton_p.h b/src/widgets/widgets/qpushbutton_p.h
index d77b69a341..a35847a8dd 100644
--- a/src/widgets/widgets/qpushbutton_p.h
+++ b/src/widgets/widgets/qpushbutton_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qradiobutton.cpp b/src/widgets/widgets/qradiobutton.cpp
index 1cf321bd16..792550949b 100644
--- a/src/widgets/widgets/qradiobutton.cpp
+++ b/src/widgets/widgets/qradiobutton.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qradiobutton.h b/src/widgets/widgets/qradiobutton.h
index aa3458bf95..cb011bc92b 100644
--- a/src/widgets/widgets/qradiobutton.h
+++ b/src/widgets/widgets/qradiobutton.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QRadioButtonPrivate;
class QStyleOptionButton;
diff --git a/src/widgets/widgets/qrubberband.cpp b/src/widgets/widgets/qrubberband.cpp
index bb67b292af..0f95f0188a 100644
--- a/src/widgets/widgets/qrubberband.cpp
+++ b/src/widgets/widgets/qrubberband.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qrubberband.h b/src/widgets/widgets/qrubberband.h
index 05b35a772b..fc2d295c0e 100644
--- a/src/widgets/widgets/qrubberband.h
+++ b/src/widgets/widgets/qrubberband.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_RUBBERBAND
diff --git a/src/widgets/widgets/qscrollarea.cpp b/src/widgets/widgets/qscrollarea.cpp
index 9912b5e211..490dea0d2d 100644
--- a/src/widgets/widgets/qscrollarea.cpp
+++ b/src/widgets/widgets/qscrollarea.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qscrollarea.h b/src/widgets/widgets/qscrollarea.h
index 0dcd280894..8d94ffb995 100644
--- a/src/widgets/widgets/qscrollarea.h
+++ b/src/widgets/widgets/qscrollarea.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_SCROLLAREA
diff --git a/src/widgets/widgets/qscrollarea_p.h b/src/widgets/widgets/qscrollarea_p.h
index e36e99add2..12f208dff6 100644
--- a/src/widgets/widgets/qscrollarea_p.h
+++ b/src/widgets/widgets/qscrollarea_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qscrollbar.cpp b/src/widgets/widgets/qscrollbar.cpp
index 47a10de702..bca5517d8a 100644
--- a/src/widgets/widgets/qscrollbar.cpp
+++ b/src/widgets/widgets/qscrollbar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qscrollbar.h b/src/widgets/widgets/qscrollbar.h
index ac6146cc3f..1a30428edd 100644
--- a/src/widgets/widgets/qscrollbar.h
+++ b/src/widgets/widgets/qscrollbar.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_SCROLLBAR
diff --git a/src/widgets/widgets/qsizegrip.cpp b/src/widgets/widgets/qsizegrip.cpp
index 9f02c131ea..145bdf02d4 100644
--- a/src/widgets/widgets/qsizegrip.cpp
+++ b/src/widgets/widgets/qsizegrip.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,11 +52,6 @@
#include "qdebug.h"
#include <QDesktopWidget>
-#if defined(Q_WS_X11)
-#include <private/qt_x11_p.h>
-#elif defined (Q_WS_WIN)
-#include "qt_windows.h"
-#endif
#ifdef Q_WS_MAC
#include <private/qt_mac_p.h>
#endif
@@ -64,13 +59,23 @@
#include <private/qwidget_p.h>
#include <QtWidgets/qabstractscrollarea.h>
-#define SZ_SIZEBOTTOMRIGHT 0xf008
-#define SZ_SIZEBOTTOMLEFT 0xf007
-#define SZ_SIZETOPLEFT 0xf004
-#define SZ_SIZETOPRIGHT 0xf005
+#ifdef Q_OS_WIN
+# include <QtCore/qt_windows.h>
+# include "private/qapplication_p.h"
+#endif
QT_BEGIN_NAMESPACE
+#if defined (Q_OS_WIN)
+# define SZ_SIZEBOTTOMRIGHT 0xf008
+# define SZ_SIZEBOTTOMLEFT 0xf007
+# define SZ_SIZETOPLEFT 0xf004
+# define SZ_SIZETOPRIGHT 0xf005
+
+HMENU qt_getWindowsSystemMenu(const QWidget *w);
+
+#endif
+
static QWidget *qt_sizegrip_topLevelWidget(QWidget* w)
{
while (w && !w->isWindow() && w->windowType() != Qt::SubWindow)
@@ -317,7 +322,7 @@ void QSizeGrip::mousePressEvent(QMouseEvent * e)
return;
}
#endif // Q_WS_X11
-#ifdef Q_WS_WIN
+#ifdef Q_OS_WIN
if (tlw->isWindow() && !tlw->testAttribute(Qt::WA_DontShowOnScreen) && !qt_widget_private(tlw)->hasHeightForWidth()) {
uint orientation = 0;
if (d->atBottom())
@@ -326,10 +331,10 @@ void QSizeGrip::mousePressEvent(QMouseEvent * e)
orientation = d->atLeft() ? SZ_SIZETOPLEFT : SZ_SIZETOPRIGHT;
ReleaseCapture();
- PostMessage(tlw->winId(), WM_SYSCOMMAND, orientation, 0);
+ PostMessage(QApplicationPrivate::getHWNDForWidget(tlw), WM_SYSCOMMAND, orientation, 0);
return;
}
-#endif // Q_WS_WIN
+#endif // Q_OS_WIN
// Find available desktop/workspace geometry.
QRect availableGeometry;
@@ -411,12 +416,13 @@ void QSizeGrip::mouseMoveEvent(QMouseEvent * e)
&& !tlw->testAttribute(Qt::WA_DontShowOnScreen) && !qt_widget_private(tlw)->hasHeightForWidth())
return;
#endif
-#ifdef Q_WS_WIN
- if (tlw->isWindow() && GetSystemMenu(tlw->winId(), FALSE) != 0 && internalWinId()
- && !tlw->testAttribute(Qt::WA_DontShowOnScreen) && !qt_widget_private(tlw)->hasHeightForWidth()) {
- MSG msg;
- while(PeekMessage(&msg, winId(), WM_MOUSEMOVE, WM_MOUSEMOVE, PM_REMOVE));
- return;
+#ifdef Q_OS_WIN
+ if (tlw->isWindow() && qt_getWindowsSystemMenu(tlw) && !tlw->testAttribute(Qt::WA_DontShowOnScreen) && !qt_widget_private(tlw)->hasHeightForWidth()) {
+ if (const HWND hwnd = QApplicationPrivate::getHWNDForWidget(tlw)) {
+ MSG msg;
+ while (PeekMessage(&msg, hwnd, WM_MOUSEMOVE, WM_MOUSEMOVE, PM_REMOVE)) ;
+ return;
+ }
}
#endif
@@ -541,14 +547,6 @@ bool QSizeGrip::event(QEvent *event)
return QWidget::event(event);
}
-#ifdef Q_WS_WIN
-/*! \reimp */
-bool QSizeGrip::winEvent( MSG *m, long *result )
-{
- return QWidget::winEvent(m, result);
-}
-#endif
-
QT_END_NAMESPACE
#include "moc_qsizegrip.cpp"
diff --git a/src/widgets/widgets/qsizegrip.h b/src/widgets/widgets/qsizegrip.h
index acac950b44..bd8302e860 100644
--- a/src/widgets/widgets/qsizegrip.h
+++ b/src/widgets/widgets/qsizegrip.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_SIZEGRIP
class QSizeGripPrivate;
@@ -72,9 +71,6 @@ protected:
void hideEvent(QHideEvent *hideEvent);
bool eventFilter(QObject *, QEvent *);
bool event(QEvent *);
-#ifdef Q_WS_WIN
- bool winEvent(MSG *m, long *result);
-#endif
public:
diff --git a/src/widgets/widgets/qslider.cpp b/src/widgets/widgets/qslider.cpp
index 0f646fc19d..b05726c965 100644
--- a/src/widgets/widgets/qslider.cpp
+++ b/src/widgets/widgets/qslider.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qslider.h b/src/widgets/widgets/qslider.h
index a050f229fb..55d1b939ba 100644
--- a/src/widgets/widgets/qslider.h
+++ b/src/widgets/widgets/qslider.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_SLIDER
diff --git a/src/widgets/widgets/qspinbox.cpp b/src/widgets/widgets/qspinbox.cpp
index 89743740de..ee94368690 100644
--- a/src/widgets/widgets/qspinbox.cpp
+++ b/src/widgets/widgets/qspinbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -990,11 +990,11 @@ QVariant QSpinBoxPrivate::validateAndInterpret(QString &input, int &pos,
state = QValidator::Invalid; // special-case -0 will be interpreted as 0 and thus not be invalid with a range from 0-100
} else {
bool ok = false;
- num = locale.toInt(copy, &ok, 10);
+ num = locale.toInt(copy, &ok);
if (!ok && copy.contains(locale.groupSeparator()) && (max >= 1000 || min <= -1000)) {
QString copy2 = copy;
copy2.remove(locale.groupSeparator());
- num = locale.toInt(copy2, &ok, 10);
+ num = locale.toInt(copy2, &ok);
}
QSBDEBUG() << __FILE__ << __LINE__<< "num is set to" << num;
if (!ok) {
diff --git a/src/widgets/widgets/qspinbox.h b/src/widgets/widgets/qspinbox.h
index bfc91b1ecf..305013d4fa 100644
--- a/src/widgets/widgets/qspinbox.h
+++ b/src/widgets/widgets/qspinbox.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_SPINBOX
diff --git a/src/widgets/widgets/qsplashscreen.cpp b/src/widgets/widgets/qsplashscreen.cpp
index 4fb0f3fa76..5a7d6376ca 100644
--- a/src/widgets/widgets/qsplashscreen.cpp
+++ b/src/widgets/widgets/qsplashscreen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qsplashscreen.h b/src/widgets/widgets/qsplashscreen.h
index f58b78adcb..742ee989bb 100644
--- a/src/widgets/widgets/qsplashscreen.h
+++ b/src/widgets/widgets/qsplashscreen.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_SPLASHSCREEN
class QSplashScreenPrivate;
diff --git a/src/widgets/widgets/qsplitter.cpp b/src/widgets/widgets/qsplitter.cpp
index ca22e0718a..285099a4cb 100644
--- a/src/widgets/widgets/qsplitter.cpp
+++ b/src/widgets/widgets/qsplitter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qsplitter.h b/src/widgets/widgets/qsplitter.h
index ee62ab76f2..3d1b4e3d83 100644
--- a/src/widgets/widgets/qsplitter.h
+++ b/src/widgets/widgets/qsplitter.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_SPLITTER
diff --git a/src/widgets/widgets/qsplitter_p.h b/src/widgets/widgets/qsplitter_p.h
index a06b65c5d3..c9db6ef9af 100644
--- a/src/widgets/widgets/qsplitter_p.h
+++ b/src/widgets/widgets/qsplitter_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qstackedwidget.cpp b/src/widgets/widgets/qstackedwidget.cpp
index 5544f241a9..5a8a382a58 100644
--- a/src/widgets/widgets/qstackedwidget.cpp
+++ b/src/widgets/widgets/qstackedwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qstackedwidget.h b/src/widgets/widgets/qstackedwidget.h
index 8dc24dd56f..9233634746 100644
--- a/src/widgets/widgets/qstackedwidget.h
+++ b/src/widgets/widgets/qstackedwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_STACKEDWIDGET
diff --git a/src/widgets/widgets/qstatusbar.cpp b/src/widgets/widgets/qstatusbar.cpp
index 357c3c72d1..9f170626da 100644
--- a/src/widgets/widgets/qstatusbar.cpp
+++ b/src/widgets/widgets/qstatusbar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qstatusbar.h b/src/widgets/widgets/qstatusbar.h
index e24e9da150..b05bf627ad 100644
--- a/src/widgets/widgets/qstatusbar.h
+++ b/src/widgets/widgets/qstatusbar.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_STATUSBAR
diff --git a/src/widgets/widgets/qtabbar.cpp b/src/widgets/widgets/qtabbar.cpp
index c939c4aa7c..580aea10b9 100644
--- a/src/widgets/widgets/qtabbar.cpp
+++ b/src/widgets/widgets/qtabbar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -67,10 +67,6 @@
#include <private/qt_cocoa_helpers_mac_p.h>
#endif
-#ifndef QT_NO_STYLE_S60
-#include "qs60style.h"
-#endif
-
QT_BEGIN_NAMESPACE
@@ -495,9 +491,6 @@ void QTabBarPrivate::layoutTabs()
if (useScrollButtons && tabList.count() && last > available) {
int extra = extraWidth();
-#ifndef QT_NO_STYLE_S60
- QS60Style *s60Style = qobject_cast<QS60Style*>(QApplication::style());
-#endif
if (!vertTabs) {
Qt::LayoutDirection ld = q->layoutDirection();
QRect arrows = QStyle::visualRect(ld, q->rect(),
@@ -505,57 +498,25 @@ void QTabBarPrivate::layoutTabs()
int buttonOverlap = q->style()->pixelMetric(QStyle::PM_TabBar_ScrollButtonOverlap, 0, q);
if (ld == Qt::LeftToRight) {
-// In S60style, tab scroll buttons are layoutted separately, on the sides of the tabbar.
-#ifndef QT_NO_STYLE_S60
- if (s60Style) {
- rightB->setGeometry(arrows.left() + extra / 2, arrows.top(), extra / 2, arrows.height());
- leftB->setGeometry(0, arrows.top(), extra / 2, arrows.height());
- } else {
-#endif
leftB->setGeometry(arrows.left(), arrows.top(), extra/2, arrows.height());
rightB->setGeometry(arrows.right() - extra/2 + buttonOverlap, arrows.top(),
extra/2, arrows.height());
-#ifndef QT_NO_STYLE_S60
- }
-#endif
leftB->setArrowType(Qt::LeftArrow);
rightB->setArrowType(Qt::RightArrow);
} else {
-#ifndef QT_NO_STYLE_S60
- if (s60Style) {
- rightB->setGeometry(arrows.left() + extra / 2, arrows.top(), extra / 2, arrows.height());
- leftB->setGeometry(0, arrows.top(), extra / 2, arrows.height());
- } else {
-#endif
rightB->setGeometry(arrows.left(), arrows.top(), extra/2, arrows.height());
leftB->setGeometry(arrows.right() - extra/2 + buttonOverlap, arrows.top(),
extra/2, arrows.height());
-#ifndef QT_NO_STYLE_S60
- }
-#endif
rightB->setArrowType(Qt::LeftArrow);
leftB->setArrowType(Qt::RightArrow);
}
} else {
-#ifndef QT_NO_STYLE_S60
- if (s60Style) {
- QRect arrows = QRect(0, 0, size.width(), available );
- leftB->setGeometry(arrows.left(), arrows.top(), arrows.width(), extra / 2);
- leftB->setArrowType(Qt::UpArrow);
- rightB->setGeometry(arrows.left(), arrows.bottom() - extra / 2 + 1,
- arrows.width(), extra / 2);
- rightB->setArrowType(Qt::DownArrow);
- } else {
-#endif
QRect arrows = QRect(0, available - extra, size.width(), extra );
leftB->setGeometry(arrows.left(), arrows.top(), arrows.width(), extra/2);
leftB->setArrowType(Qt::UpArrow);
rightB->setGeometry(arrows.left(), arrows.bottom() - extra/2 + 1,
arrows.width(), extra/2);
rightB->setArrowType(Qt::DownArrow);
-#ifndef QT_NO_STYLE_S60
- }
-#endif
}
leftB->setEnabled(scrollOffset > 0);
rightB->setEnabled(last - scrollOffset >= available - extra);
@@ -1222,8 +1183,8 @@ void QTabBar::setCurrentIndex(int index)
d->layoutTab(index);
#ifndef QT_NO_ACCESSIBILITY
if (QAccessible::isActive()) {
- QAccessible::updateAccessibility(this, index + 1, QAccessible::Focus);
- QAccessible::updateAccessibility(this, index + 1, QAccessible::Selection);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::Focus, this, index + 1));
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::Selection, this, index + 1));
}
#endif
emit currentChanged(index);
diff --git a/src/widgets/widgets/qtabbar.h b/src/widgets/widgets/qtabbar.h
index cfe9a90b47..3a4b9198d3 100644
--- a/src/widgets/widgets/qtabbar.h
+++ b/src/widgets/widgets/qtabbar.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_TABBAR
diff --git a/src/widgets/widgets/qtabbar_p.h b/src/widgets/widgets/qtabbar_p.h
index 2060e169f2..c907b48eeb 100644
--- a/src/widgets/widgets/qtabbar_p.h
+++ b/src/widgets/widgets/qtabbar_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qtabwidget.cpp b/src/widgets/widgets/qtabwidget.cpp
index 636a68994a..66d31e72c7 100644
--- a/src/widgets/widgets/qtabwidget.cpp
+++ b/src/widgets/widgets/qtabwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qtabwidget.h b/src/widgets/widgets/qtabwidget.h
index 432870df25..1865ddf897 100644
--- a/src/widgets/widgets/qtabwidget.h
+++ b/src/widgets/widgets/qtabwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_TABWIDGET
diff --git a/src/widgets/widgets/qtextbrowser.cpp b/src/widgets/widgets/qtextbrowser.cpp
index dbda9e3b94..d9229c12e8 100644
--- a/src/widgets/widgets/qtextbrowser.cpp
+++ b/src/widgets/widgets/qtextbrowser.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qtextbrowser.h b/src/widgets/widgets/qtextbrowser.h
index ee977be23b..7ebcffa951 100644
--- a/src/widgets/widgets/qtextbrowser.h
+++ b/src/widgets/widgets/qtextbrowser.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_TEXTBROWSER
diff --git a/src/widgets/widgets/qtextedit.cpp b/src/widgets/widgets/qtextedit.cpp
index acd663eb8c..002d7860cd 100644
--- a/src/widgets/widgets/qtextedit.cpp
+++ b/src/widgets/widgets/qtextedit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qtextedit.h b/src/widgets/widgets/qtextedit.h
index b86c0e0999..3148c7a0cf 100644
--- a/src/widgets/widgets/qtextedit.h
+++ b/src/widgets/widgets/qtextedit.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,7 +55,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QStyleSheet;
class QTextDocument;
diff --git a/src/widgets/widgets/qtextedit_p.h b/src/widgets/widgets/qtextedit_p.h
index e7f172ec0f..ca74bc3737 100644
--- a/src/widgets/widgets/qtextedit_p.h
+++ b/src/widgets/widgets/qtextedit_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qtoolbar.cpp b/src/widgets/widgets/qtoolbar.cpp
index 6b1d414830..c9fe4f7cc2 100644
--- a/src/widgets/widgets/qtoolbar.cpp
+++ b/src/widgets/widgets/qtoolbar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qtoolbar.h b/src/widgets/widgets/qtoolbar.h
index 4f51cf045d..ac59d9803a 100644
--- a/src/widgets/widgets/qtoolbar.h
+++ b/src/widgets/widgets/qtoolbar.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_TOOLBAR
diff --git a/src/widgets/widgets/qtoolbar_p.h b/src/widgets/widgets/qtoolbar_p.h
index 14ec575dc5..4a5009575f 100644
--- a/src/widgets/widgets/qtoolbar_p.h
+++ b/src/widgets/widgets/qtoolbar_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qtoolbararealayout.cpp b/src/widgets/widgets/qtoolbararealayout.cpp
index 2650f7676e..789d1561c4 100644
--- a/src/widgets/widgets/qtoolbararealayout.cpp
+++ b/src/widgets/widgets/qtoolbararealayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qtoolbararealayout_p.h b/src/widgets/widgets/qtoolbararealayout_p.h
index b61b2c76c9..7502cc7e90 100644
--- a/src/widgets/widgets/qtoolbararealayout_p.h
+++ b/src/widgets/widgets/qtoolbararealayout_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qtoolbarextension.cpp b/src/widgets/widgets/qtoolbarextension.cpp
index 341bd9cbb3..44275e8b36 100644
--- a/src/widgets/widgets/qtoolbarextension.cpp
+++ b/src/widgets/widgets/qtoolbarextension.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qtoolbarextension_p.h b/src/widgets/widgets/qtoolbarextension_p.h
index a60584f755..6c9ea4d9a4 100644
--- a/src/widgets/widgets/qtoolbarextension_p.h
+++ b/src/widgets/widgets/qtoolbarextension_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qtoolbarlayout.cpp b/src/widgets/widgets/qtoolbarlayout.cpp
index 2e5aaa61f2..7255a6e538 100644
--- a/src/widgets/widgets/qtoolbarlayout.cpp
+++ b/src/widgets/widgets/qtoolbarlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qtoolbarlayout_p.h b/src/widgets/widgets/qtoolbarlayout_p.h
index 7c2a60d51a..248c13bfe1 100644
--- a/src/widgets/widgets/qtoolbarlayout_p.h
+++ b/src/widgets/widgets/qtoolbarlayout_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qtoolbarseparator.cpp b/src/widgets/widgets/qtoolbarseparator.cpp
index 4dd11679fa..39fbde78a3 100644
--- a/src/widgets/widgets/qtoolbarseparator.cpp
+++ b/src/widgets/widgets/qtoolbarseparator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qtoolbarseparator_p.h b/src/widgets/widgets/qtoolbarseparator_p.h
index 5807c9f0b8..4269cbb6d5 100644
--- a/src/widgets/widgets/qtoolbarseparator_p.h
+++ b/src/widgets/widgets/qtoolbarseparator_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qtoolbox.cpp b/src/widgets/widgets/qtoolbox.cpp
index 2bf0dc0d9d..69ff2ffd7e 100644
--- a/src/widgets/widgets/qtoolbox.cpp
+++ b/src/widgets/widgets/qtoolbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qtoolbox.h b/src/widgets/widgets/qtoolbox.h
index 8e7ac52646..5732668b8f 100644
--- a/src/widgets/widgets/qtoolbox.h
+++ b/src/widgets/widgets/qtoolbox.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,7 +49,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_TOOLBOX
diff --git a/src/widgets/widgets/qtoolbutton.cpp b/src/widgets/widgets/qtoolbutton.cpp
index 5b3a328dcc..015419a879 100644
--- a/src/widgets/widgets/qtoolbutton.cpp
+++ b/src/widgets/widgets/qtoolbutton.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qtoolbutton.h b/src/widgets/widgets/qtoolbutton.h
index c451e2cc13..0cfadf0e1c 100644
--- a/src/widgets/widgets/qtoolbutton.h
+++ b/src/widgets/widgets/qtoolbutton.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_TOOLBUTTON
diff --git a/src/widgets/widgets/qwidgetanimator.cpp b/src/widgets/widgets/qwidgetanimator.cpp
index de92a53257..086f0f0cb2 100644
--- a/src/widgets/widgets/qwidgetanimator.cpp
+++ b/src/widgets/widgets/qwidgetanimator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qwidgetanimator_p.h b/src/widgets/widgets/qwidgetanimator_p.h
index d6e7a86e7b..e2054401d6 100644
--- a/src/widgets/widgets/qwidgetanimator_p.h
+++ b/src/widgets/widgets/qwidgetanimator_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qwidgetlinecontrol.cpp b/src/widgets/widgets/qwidgetlinecontrol.cpp
index e52193e20c..2f5793bcba 100644
--- a/src/widgets/widgets/qwidgetlinecontrol.cpp
+++ b/src/widgets/widgets/qwidgetlinecontrol.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -206,7 +206,7 @@ void QWidgetLineControl::commitPreedit()
if (!composeMode())
return;
- qApp->inputPanel()->reset();
+ qApp->inputMethod()->reset();
if (!m_tentativeCommit.isEmpty()) {
internalInsert(m_tentativeCommit);
@@ -758,7 +758,7 @@ void QWidgetLineControl::internalSetText(const QString &txt, int pos, bool edite
#ifndef QT_NO_ACCESSIBILITY
if (changed)
- QAccessible::updateAccessibility(parent(), 0, QAccessible::TextUpdated);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::TextUpdated, parent(), 0));
#endif
}
@@ -1357,7 +1357,7 @@ void QWidgetLineControl::emitCursorPositionChanged()
m_lastCursorPos = m_cursor;
cursorPositionChanged(oldLast, m_cursor);
#ifndef QT_NO_ACCESSIBILITY
- QAccessible::updateAccessibility(parent(), 0, QAccessible::TextCaretMoved);
+ QAccessible::updateAccessibility(QAccessibleEvent(QAccessible::TextCaretMoved, parent(), 0));
#endif
}
}
diff --git a/src/widgets/widgets/qwidgetlinecontrol_p.h b/src/widgets/widgets/qwidgetlinecontrol_p.h
index d8f27a4003..1d955363e6 100644
--- a/src/widgets/widgets/qwidgetlinecontrol_p.h
+++ b/src/widgets/widgets/qwidgetlinecontrol_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -62,7 +62,7 @@
#include "QtWidgets/qstyleoption.h"
#include "QtCore/qpointer.h"
#include "QtGui/qclipboard.h"
-#include "QtGui/qinputpanel.h"
+#include "QtGui/qinputmethod.h"
#include "QtCore/qpoint.h"
#include "QtWidgets/qcompleter.h"
#include "QtCore/qthread.h"
@@ -79,7 +79,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class Q_WIDGETS_EXPORT QWidgetLineControl : public QObject
{
@@ -233,7 +232,7 @@ public:
void setText(const QString &txt)
{
if (composeMode())
- qApp->inputPanel()->reset();
+ qApp->inputMethod()->reset();
m_tentativeCommit.clear();
internalSetText(txt, -1, false);
}
@@ -319,7 +318,7 @@ public:
Qt::LayoutDirection layoutDirection() const {
if (m_layoutDirection == Qt::LayoutDirectionAuto) {
if (m_text.isEmpty())
- return qApp->inputPanel()->inputDirection();
+ return qApp->inputMethod()->inputDirection();
return m_text.isRightToLeft() ? Qt::RightToLeft : Qt::LeftToRight;
}
return m_layoutDirection;
diff --git a/src/widgets/widgets/qwidgetresizehandler.cpp b/src/widgets/widgets/qwidgetresizehandler.cpp
index 5881d2360d..aba0ca58c6 100644
--- a/src/widgets/widgets/qwidgetresizehandler.cpp
+++ b/src/widgets/widgets/qwidgetresizehandler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,9 +48,6 @@
#include "qcursor.h"
#include "qsizegrip.h"
#include "qevent.h"
-#if defined(Q_WS_WIN)
-#include "qt_windows.h"
-#endif
#include "qdebug.h"
#include "private/qlayoutengine_p.h"
diff --git a/src/widgets/widgets/qwidgetresizehandler_p.h b/src/widgets/widgets/qwidgetresizehandler_p.h
index 5a355611fd..e5f219904a 100644
--- a/src/widgets/widgets/qwidgetresizehandler_p.h
+++ b/src/widgets/widgets/qwidgetresizehandler_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qwidgettextcontrol.cpp b/src/widgets/widgets/qwidgettextcontrol.cpp
index 628848b0d7..96389b8333 100644
--- a/src/widgets/widgets/qwidgettextcontrol.cpp
+++ b/src/widgets/widgets/qwidgettextcontrol.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -75,7 +75,7 @@
#include <qvariant.h>
#include <qurl.h>
#include <qdesktopservices.h>
-#include <qinputpanel.h>
+#include <qinputmethod.h>
#include <qtooltip.h>
#include <qstyleoption.h>
#include <QtWidgets/qlineedit.h>
@@ -1689,7 +1689,7 @@ void QWidgetTextControlPrivate::mouseMoveEvent(QEvent *e, Qt::MouseButton button
_q_updateCurrentCharFormatAndSelection();
#ifndef QT_NO_IM
if (contextWidget)
- qApp->inputPanel()->update(Qt::ImQueryInput);
+ qApp->inputMethod()->update(Qt::ImQueryInput);
#endif //QT_NO_IM
} else {
//emit q->visibilityRequest(QRectF(mousePos, QSizeF(1, 1)));
@@ -1836,7 +1836,7 @@ bool QWidgetTextControlPrivate::sendMouseEventToInputContext(
if (cursorPos >= 0) {
if (e->type() == QEvent::MouseButtonRelease)
- qApp->inputPanel()->invokeAction(QInputPanel::Click, cursorPos);
+ qApp->inputMethod()->invokeAction(QInputMethod::Click, cursorPos);
e->setAccepted(true);
return true;
@@ -2755,7 +2755,7 @@ void QWidgetTextControlPrivate::commitPreedit()
return;
cursor.beginEditBlock();
- qApp->inputPanel()->reset();
+ qApp->inputMethod()->reset();
if (!tentativeCommit.isEmpty()) {
cursor.insertText(tentativeCommit);
diff --git a/src/widgets/widgets/qwidgettextcontrol_p.h b/src/widgets/widgets/qwidgettextcontrol_p.h
index 7425a7d878..f153267386 100644
--- a/src/widgets/widgets/qwidgettextcontrol_p.h
+++ b/src/widgets/widgets/qwidgettextcontrol_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -69,7 +69,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
class QStyleSheet;
class QTextDocument;
diff --git a/src/widgets/widgets/qwidgettextcontrol_p_p.h b/src/widgets/widgets/qwidgettextcontrol_p_p.h
index 7e49be7f7b..d0d940e521 100644
--- a/src/widgets/widgets/qwidgettextcontrol_p_p.h
+++ b/src/widgets/widgets/qwidgettextcontrol_p_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qworkspace.cpp b/src/widgets/widgets/qworkspace.cpp
index 7aaeeb7282..be3f7836d5 100644
--- a/src/widgets/widgets/qworkspace.cpp
+++ b/src/widgets/widgets/qworkspace.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/widgets/widgets/qworkspace.h b/src/widgets/widgets/qworkspace.h
index 66fa57f5a4..9c18f3fce0 100644
--- a/src/widgets/widgets/qworkspace.h
+++ b/src/widgets/widgets/qworkspace.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Gui)
#ifndef QT_NO_WORKSPACE
diff --git a/src/winmain/qtmain_win.cpp b/src/winmain/qtmain_win.cpp
index 439f5b859f..fc3828d4ac 100644
--- a/src/winmain/qtmain_win.cpp
+++ b/src/winmain/qtmain_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the Windows main function of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/xml/dom/qdom.cpp b/src/xml/dom/qdom.cpp
index 3b1e2a8bb7..c84b1f6319 100644
--- a/src/xml/dom/qdom.cpp
+++ b/src/xml/dom/qdom.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtXml module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -625,11 +625,6 @@ private:
bool cdata;
bool nsProcessing;
QXmlLocator *locator;
-
-#ifdef Q_OS_SYMBIAN
- // Workaround crash in elf2e32 under Wine.
- virtual void dummy() {}
-#endif
};
/**************************************************************
diff --git a/src/xml/dom/qdom.h b/src/xml/dom/qdom.h
index d2ff10469d..8b049b211b 100644
--- a/src/xml/dom/qdom.h
+++ b/src/xml/dom/qdom.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtXml module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Xml)
#ifndef QT_NO_DOM
diff --git a/src/xml/sax/qxml.cpp b/src/xml/sax/qxml.cpp
index bd13cca4ad..2a41ce3426 100644
--- a/src/xml/sax/qxml.cpp
+++ b/src/xml/sax/qxml.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtXml module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/src/xml/sax/qxml.h b/src/xml/sax/qxml.h
index 7e0ef10d86..86d0956290 100644
--- a/src/xml/sax/qxml.h
+++ b/src/xml/sax/qxml.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtXml module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Xml)
class QXmlNamespaceSupport;
class QXmlAttributes;
diff --git a/src/xml/xml.pro b/src/xml/xml.pro
index a764fa6094..e860250507 100644
--- a/src/xml/xml.pro
+++ b/src/xml/xml.pro
@@ -25,5 +25,3 @@ win32-borland {
include(dom/dom.pri)
include(sax/sax.pri)
-
-symbian:TARGET.UID3=0x2001B2E0
diff --git a/sync.profile b/sync.profile
index cabc8a3ab5..446f8f40fa 100644
--- a/sync.profile
+++ b/sync.profile
@@ -9,6 +9,7 @@
"QtNetwork" => "$basedir/src/network",
"QtTest" => "$basedir/src/testlib",
"QtDBus" => "$basedir/src/dbus",
+ "QtConcurrent" => "$basedir/src/concurrent",
"QtPlatformSupport" => "$basedir/src/platformsupport",
);
%moduleheaders = ( # restrict the module headers to those found in relative path
@@ -40,6 +41,7 @@
"qtxmlversion.h" => "QtXmlVersion",
"qtwidgetsversion.h" => "QtWidgetsVersion",
"qtprintsupportversion.h" => "QtPrintSupportVersion",
+ "qtconcurrentversion.h" => "QtConcurrentVersion",
"qtplatformsupportversion.h" => "QtPlatformSupportVersion",
);
%mastercontent = (
@@ -50,6 +52,7 @@
"network" => "#include <QtNetwork/QtNetwork>\n",
"opengl" => "#include <QtOpenGL/QtOpenGL>\n",
"xml" => "#include <QtXml/QtXml>\n",
+ "concurrent" => "#include <QtConcurrent/QtConcurrent>\n",
);
%modulepris = (
"QtCore" => "$basedir/src/modules/qt_core.pri",
@@ -62,6 +65,7 @@
"QtSql" => "$basedir/src/modules/qt_sql.pri",
"QtTest" => "$basedir/src/modules/qt_testlib.pri",
"QtXml" => "$basedir/src/modules/qt_xml.pri",
+ "QtConcurrent" => "$basedir/src/modules/qt_concurrent.pri",
"QtPlatformSupport" => "$basedir/src/modules/qt_platformsupport.pri",
);
%explicitheaders = (
diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro
index 05b6f84fa9..1796fa2db9 100644
--- a/tests/auto/auto.pro
+++ b/tests/auto/auto.pro
@@ -10,6 +10,7 @@ SUBDIRS += \
testlib \
tools \
xml \
+ concurrent \
other \
widgets \
@@ -20,5 +21,7 @@ cross_compile: SUBDIRS -= tools
# disable 'make check' on Mac OS X for the following subdirs for the time being
mac {
network.CONFIG += no_check_target
- widgets.CONFIG += no_check_target
}
+
+!contains(QT_CONFIG, concurrent): SUBDIRS -= concurrent
+
diff --git a/tests/auto/compilerwarnings/data/test_cpp.txt b/tests/auto/compilerwarnings/data/test_cpp.txt
index d51bc30aab..4558f7085b 100644
--- a/tests/auto/compilerwarnings/data/test_cpp.txt
+++ b/tests/auto/compilerwarnings/data/test_cpp.txt
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/concurrent/concurrent.pro b/tests/auto/concurrent/concurrent.pro
new file mode 100644
index 0000000000..15368aef64
--- /dev/null
+++ b/tests/auto/concurrent/concurrent.pro
@@ -0,0 +1,12 @@
+TEMPLATE=subdirs
+SUBDIRS=\
+ qfuture \
+ qfuturesynchronizer \
+ qfuturewatcher \
+ qtconcurrentfilter \
+ qtconcurrentiteratekernel \
+ qtconcurrentmap \
+ qtconcurrentresultstore \
+ qtconcurrentrun \
+ qtconcurrentthreadengine
+
diff --git a/tests/auto/corelib/concurrent/qfuture/.gitignore b/tests/auto/concurrent/qfuture/.gitignore
index 77c055c874..77c055c874 100644
--- a/tests/auto/corelib/concurrent/qfuture/.gitignore
+++ b/tests/auto/concurrent/qfuture/.gitignore
diff --git a/tests/auto/concurrent/qfuture/qfuture.pro b/tests/auto/concurrent/qfuture/qfuture.pro
new file mode 100644
index 0000000000..a4c706129d
--- /dev/null
+++ b/tests/auto/concurrent/qfuture/qfuture.pro
@@ -0,0 +1,5 @@
+CONFIG += testcase parallel_test
+TARGET = tst_qfuture
+QT = concurrent-private testlib concurrent
+SOURCES = tst_qfuture.cpp
+DEFINES += QT_STRICT_ITERATORS
diff --git a/tests/auto/concurrent/qfuture/tst_qfuture.cpp b/tests/auto/concurrent/qfuture/tst_qfuture.cpp
new file mode 100644
index 0000000000..3610f8f2d4
--- /dev/null
+++ b/tests/auto/concurrent/qfuture/tst_qfuture.cpp
@@ -0,0 +1,1438 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <QCoreApplication>
+#include <QDebug>
+
+#define QFUTURE_TEST
+
+#include <QtTest/QtTest>
+#include <qfuture.h>
+#include <qfuturewatcher.h>
+#include <qtconcurrentresultstore.h>
+#include <qtconcurrentexception.h>
+#include <private/qfutureinterface_p.h>
+
+using namespace QtConcurrent;
+
+// COM interface macro.
+#if defined(Q_OS_WIN) && defined(interface)
+# undef interface
+#endif
+
+class tst_QFuture: public QObject
+{
+ Q_OBJECT
+private slots:
+ void resultStore();
+ void future();
+ void futureInterface();
+ void refcounting();
+ void cancel();
+ void statePropagation();
+ void multipleResults();
+ void indexedResults();
+ void progress();
+ void progressText();
+ void resultsAfterFinished();
+ void resultsAsList();
+ void implicitConversions();
+ void iterators();
+ void pause();
+ void throttling();
+ void voidConversions();
+#ifndef QT_NO_EXCEPTIONS
+ void exceptions();
+ void nestedExceptions();
+#endif
+};
+
+void tst_QFuture::resultStore()
+{
+ int int0 = 0;
+ int int1 = 1;
+ int int2 = 2;
+
+ {
+ ResultStore<int> store;
+ QVERIFY(store.begin() == store.end());
+ QVERIFY(store.resultAt(0) == store.end());
+ QVERIFY(store.resultAt(1) == store.end());
+ }
+
+
+ {
+ ResultStoreBase store;
+ store.addResult(-1, &int0); // note to self: adding a pointer to the stack here is ok since
+ store.addResult(1, &int1); // ResultStoreBase does not take ownership, only ResultStore<> does.
+ ResultIteratorBase it = store.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QVERIFY(it != store.begin());
+ QVERIFY(it == store.end());
+ }
+
+ QVector<int> vec0 = QVector<int>() << 2 << 3;
+ QVector<int> vec1 = QVector<int>() << 4 << 5;
+
+ {
+ ResultStoreBase store;
+ store.addResults(-1, &vec0, 2, 2);
+ store.addResults(-1, &vec1, 2, 2);
+ ResultIteratorBase it = store.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 2);
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 3);
+
+ ++it;
+ QVERIFY(it == store.end());
+ }
+ {
+ ResultStoreBase store;
+ store.addResult(-1, &int0);
+ store.addResults(-1, &vec1, 2, 2);
+ store.addResult(-1, &int1);
+
+ ResultIteratorBase it = store.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 2);
+ QVERIFY(it != store.end());
+ ++it;
+ QCOMPARE(it.resultIndex(), 3);
+ QVERIFY(it != store.end());
+ ++it;
+ QVERIFY(it == store.end());
+
+ QCOMPARE(store.resultAt(0).resultIndex(), 0);
+ QCOMPARE(store.resultAt(1).resultIndex(), 1);
+ QCOMPARE(store.resultAt(2).resultIndex(), 2);
+ QCOMPARE(store.resultAt(3).resultIndex(), 3);
+ QCOMPARE(store.resultAt(4), store.end());
+ }
+ {
+ ResultStore<int> store;
+ store.addResult(-1, &int0);
+ store.addResults(-1, &vec0);
+ store.addResult(-1, &int1);
+
+ ResultIteratorBase it = store.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 2);
+ QVERIFY(it != store.end());
+ ++it;
+ QCOMPARE(it.resultIndex(), 3);
+ QVERIFY(it != store.end());
+ ++it;
+ QVERIFY(it == store.end());
+
+ QCOMPARE(store.resultAt(0).value(), int0);
+ QCOMPARE(store.resultAt(1).value(), vec0[0]);
+ QCOMPARE(store.resultAt(2).value(), vec0[1]);
+ QCOMPARE(store.resultAt(3).value(), int1);
+ }
+ {
+ ResultStore<int> store;
+ store.addResult(-1, &int0);
+ store.addResults(-1, &vec0);
+ store.addResult(200, &int1);
+
+ QCOMPARE(store.resultAt(0).value(), int0);
+ QCOMPARE(store.resultAt(1).value(), vec0[0]);
+ QCOMPARE(store.resultAt(2).value(), vec0[1]);
+ QCOMPARE(store.resultAt(200).value(), int1);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResult(1, &int1);
+ store.addResult(0, &int0);
+ store.addResult(-1, &int2);
+
+ QCOMPARE(store.resultAt(0).value(), int0);
+ QCOMPARE(store.resultAt(1).value(), int1);
+ QCOMPARE(store.resultAt(2).value(), int2);
+ }
+
+ {
+ ResultStore<int> store;
+ QCOMPARE(store.contains(0), false);
+ QCOMPARE(store.contains(1), false);
+ QCOMPARE(store.contains(INT_MAX), false);
+ }
+
+ {
+ // Test filter mode, where "gaps" in the result array aren't allowed.
+ ResultStore<int> store;
+ store.setFilterMode(true);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.contains(0), true);
+
+ store.addResult(2, &int2); // add result at index 2
+ QCOMPARE(store.contains(2), false); // but 1 is missing, so this 2 won't be reported yet.
+
+ store.addResult(1, &int1);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), true); // 2 should be visible now.
+
+ store.addResult(4, &int0);
+ store.addResult(5, &int0);
+ store.addResult(7, &int0);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(7), false);
+
+ store.addResult(3, &int0); // adding 3 makes 4 and 5 visible
+ QCOMPARE(store.contains(4), true);
+ QCOMPARE(store.contains(5), true);
+ QCOMPARE(store.contains(7), false);
+
+ store.addResult(6, &int0); // adding 6 makes 7 visible
+
+ QCOMPARE(store.contains(6), true);
+ QCOMPARE(store.contains(7), true);
+ QCOMPARE(store.contains(8), false);
+ }
+
+ {
+ // test canceled results
+ ResultStore<int> store;
+ store.setFilterMode(true);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.contains(0), true);
+
+ store.addResult(2, &int0);
+ QCOMPARE(store.contains(2), false);
+
+ store.addCanceledResult(1); // report no result at 1
+
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), true); // 2 gets renamed to 1
+ QCOMPARE(store.contains(2), false);
+
+ store.addResult(3, &int0);
+ QCOMPARE(store.contains(2), true); //3 gets renamed to 2
+
+ store.addResult(6, &int0);
+ store.addResult(7, &int0);
+ QCOMPARE(store.contains(3), false);
+
+ store.addCanceledResult(4);
+ store.addCanceledResult(5);
+
+ QCOMPARE(store.contains(3), true); //6 gets renamed to 3
+ QCOMPARE(store.contains(4), true); //7 gets renamed to 4
+
+ store.addResult(8, &int0);
+ QCOMPARE(store.contains(5), true); //8 gets renamed to 4
+
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+ }
+
+ {
+ // test addResult return value
+ ResultStore<int> store;
+ store.setFilterMode(true);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.count(), 1); // result 0 becomes available
+ QCOMPARE(store.contains(0), true);
+
+ store.addResult(2, &int0);
+ QCOMPARE(store.count(), 1);
+ QCOMPARE(store.contains(2), false);
+
+ store.addCanceledResult(1);
+ QCOMPARE(store.count(), 2); // result 2 is renamed to 1 and becomes available
+
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), false);
+
+ store.addResult(3, &int0);
+ QCOMPARE(store.count(), 3);
+ QCOMPARE(store.contains(2), true);
+
+ store.addResult(6, &int0);
+ QCOMPARE(store.count(), 3);
+ store.addResult(7, &int0);
+ QCOMPARE(store.count(), 3);
+ QCOMPARE(store.contains(3), false);
+
+ store.addCanceledResult(4);
+ store.addCanceledResult(5);
+ QCOMPARE(store.count(), 5); // 6 and 7 is renamed to 3 and 4 and becomes available
+
+ QCOMPARE(store.contains(3), true);
+ QCOMPARE(store.contains(4), true);
+
+ store.addResult(8, &int0);
+ QCOMPARE(store.contains(5), true);
+ QCOMPARE(store.count(), 6);
+
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+ }
+
+ {
+ // test resultCount in non-filtered mode. It should always be possible
+ // to iterate through the results 0 to resultCount.
+ ResultStore<int> store;
+ store.addResult(0, &int0);
+
+ QCOMPARE(store.count(), 1);
+
+ store.addResult(2, &int0);
+
+ QCOMPARE(store.count(), 1);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.count(), 3);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResult(2, &int0);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.count(), 3);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResults(2, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.count(), 4);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResults(2, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResults(0, &vec0);
+ QCOMPARE(store.count(), 4);
+ }
+ {
+ ResultStore<int> store;
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResults(0, &vec0);
+ QCOMPARE(store.count(), 2);
+
+ store.addResult(2, &int0);
+ QCOMPARE(store.count(), 5);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResults(0, &vec0);
+ QCOMPARE(store.count(), 2);
+
+ store.addCanceledResult(2);
+ QCOMPARE(store.count(), 4);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addCanceledResults(0, 3);
+ QCOMPARE(store.count(), 2);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addCanceledResults(0, 3);
+ QCOMPARE(store.count(), 2); // results at 3 and 4 become available at index 0, 1
+
+ store.addResult(5, &int0);
+ QCOMPARE(store.count(), 3);// result 5 becomes available at index 2
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResult(1, &int0);
+ store.addResult(3, &int0);
+ store.addResults(6, &vec0);
+ QCOMPARE(store.contains(0), false);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), false);
+ QCOMPARE(store.contains(3), true);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(6), true);
+ QCOMPARE(store.contains(7), true);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResult(1, &int0);
+ store.addResult(3, &int0);
+ store.addResults(6, &vec0);
+ QCOMPARE(store.contains(0), false);
+ QCOMPARE(store.contains(1), false);
+ QCOMPARE(store.contains(2), false);
+ QCOMPARE(store.contains(3), false);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+
+ store.addCanceledResult(0);
+ store.addCanceledResult(2);
+ store.addCanceledResults(4, 2);
+
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), true);
+ QCOMPARE(store.contains(3), true);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+ }
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addCanceledResult(0);
+ QCOMPARE(store.contains(0), false);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), false);
+ }
+}
+
+void tst_QFuture::future()
+{
+ // default constructors
+ QFuture<int> intFuture;
+ intFuture.waitForFinished();
+ QFuture<QString> stringFuture;
+ stringFuture.waitForFinished();
+ QFuture<void> voidFuture;
+ voidFuture.waitForFinished();
+ QFuture<void> defaultVoidFuture;
+ defaultVoidFuture.waitForFinished();
+
+ // copy constructor
+ QFuture<int> intFuture2(intFuture);
+ QFuture<void> voidFuture2(defaultVoidFuture);
+
+ // assigmnent operator
+ intFuture2 = QFuture<int>();
+ voidFuture2 = QFuture<void>();
+
+ // state
+ QCOMPARE(intFuture2.isStarted(), true);
+ QCOMPARE(intFuture2.isFinished(), true);
+}
+
+class IntResult : public QFutureInterface<int>
+{
+public:
+ QFuture<int> run()
+ {
+ this->reportStarted();
+ QFuture<int> future = QFuture<int>(this);
+
+ int res = 10;
+ reportFinished(&res);
+ return future;
+ }
+};
+
+int value = 10;
+
+class VoidResult : public QFutureInterfaceBase
+{
+public:
+ QFuture<void> run()
+ {
+ this->reportStarted();
+ QFuture<void> future = QFuture<void>(this);
+ reportFinished();
+ return future;
+ }
+};
+
+void tst_QFuture::futureInterface()
+{
+ {
+ QFuture<void> future;
+ {
+ QFutureInterface<void> i;
+ i.reportStarted();
+ future = i.future();
+ i.reportFinished();
+ }
+ }
+ {
+ QFuture<int> future;
+ {
+ QFutureInterface<int> i;
+ i.reportStarted();
+ i.reportResult(10);
+ future = i.future();
+ i.reportFinished();
+ }
+ QCOMPARE(future.resultAt(0), 10);
+ }
+
+ {
+ QFuture<int> intFuture;
+
+ QCOMPARE(intFuture.isStarted(), true);
+ QCOMPARE(intFuture.isFinished(), true);
+
+ IntResult result;
+
+ result.reportStarted();
+ intFuture = result.future();
+
+ QCOMPARE(intFuture.isStarted(), true);
+ QCOMPARE(intFuture.isFinished(), false);
+
+ result.reportFinished(&value);
+
+ QCOMPARE(intFuture.isStarted(), true);
+ QCOMPARE(intFuture.isFinished(), true);
+
+ int e = intFuture.result();
+
+ QCOMPARE(intFuture.isStarted(), true);
+ QCOMPARE(intFuture.isFinished(), true);
+ QCOMPARE(intFuture.isCanceled(), false);
+
+ QCOMPARE(e, value);
+ intFuture.waitForFinished();
+
+ IntResult intAlgo;
+ intFuture = intAlgo.run();
+ QFuture<int> intFuture2(intFuture);
+ QCOMPARE(intFuture.result(), value);
+ QCOMPARE(intFuture2.result(), value);
+ intFuture.waitForFinished();
+
+ VoidResult a;
+ a.run().waitForFinished();
+ }
+}
+
+template <typename T>
+void testRefCounting()
+{
+ QFutureInterface<T> interface;
+ QCOMPARE(interface.d->refCount.load(), 1);
+
+ {
+ interface.reportStarted();
+
+ QFuture<T> f = interface.future();
+ QCOMPARE(interface.d->refCount.load(), 2);
+
+ QFuture<T> f2(f);
+ QCOMPARE(interface.d->refCount.load(), 3);
+
+ QFuture<T> f3;
+ f3 = f2;
+ QCOMPARE(interface.d->refCount.load(), 4);
+
+ interface.reportFinished(0);
+ QCOMPARE(interface.d->refCount.load(), 4);
+ }
+
+ QCOMPARE(interface.d->refCount.load(), 1);
+}
+
+void tst_QFuture::refcounting()
+{
+ testRefCounting<int>();
+}
+
+void tst_QFuture::cancel()
+{
+ {
+ QFuture<void> f;
+ QFutureInterface<void> result;
+
+ result.reportStarted();
+ f = result.future();
+ QVERIFY(f.isCanceled() == false);
+ result.reportCanceled();
+ QVERIFY(f.isCanceled());
+ result.reportFinished();
+ QVERIFY(f.isCanceled());
+ f.waitForFinished();
+ QVERIFY(f.isCanceled());
+ }
+
+ // Cancel from the QFuture side and test if the result
+ // interface detects it.
+ {
+ QFutureInterface<void> result;
+
+ QFuture<void> f;
+ QVERIFY(f.isStarted() == true);
+
+ result.reportStarted();
+ f = result.future();
+
+ QVERIFY(f.isStarted() == true);
+
+ QVERIFY(result.isCanceled() == false);
+ f.cancel();
+
+ QVERIFY(result.isCanceled());
+
+ result.reportFinished();
+ }
+
+ // Test that finished futures can be canceled.
+ {
+ QFutureInterface<void> result;
+
+ QFuture<void> f;
+ QVERIFY(f.isStarted() == true);
+
+ result.reportStarted();
+ f = result.future();
+
+ QVERIFY(f.isStarted() == true);
+
+ result.reportFinished();
+
+ f.cancel();
+
+ QVERIFY(result.isCanceled());
+ QVERIFY(f.isCanceled());
+ }
+
+ // Results reported after canceled is called should not be propagated.
+ {
+
+ QFutureInterface<int> futureInterface;
+ futureInterface.reportStarted();
+ QFuture<int> f = futureInterface.future();
+
+ int result = 0;
+ futureInterface.reportResult(&result);
+ result = 1;
+ futureInterface.reportResult(&result);
+ f.cancel();
+ result = 2;
+ futureInterface.reportResult(&result);
+ result = 3;
+ futureInterface.reportResult(&result);
+ futureInterface.reportFinished();
+ QCOMPARE(f.results(), QList<int>());
+ }
+}
+
+void tst_QFuture::statePropagation()
+{
+ QFuture<void> f1;
+ QFuture<void> f2;
+
+ QCOMPARE(f1.isStarted(), true);
+
+ QFutureInterface<void> result;
+ result.reportStarted();
+ f1 = result.future();
+
+ f2 = f1;
+
+ QCOMPARE(f2.isStarted(), true);
+
+ result.reportCanceled();
+
+ QCOMPARE(f2.isStarted(), true);
+ QCOMPARE(f2.isCanceled(), true);
+
+ QFuture<void> f3 = f2;
+
+ QCOMPARE(f3.isStarted(), true);
+ QCOMPARE(f3.isCanceled(), true);
+
+ result.reportFinished();
+
+ QCOMPARE(f2.isStarted(), true);
+ QCOMPARE(f2.isCanceled(), true);
+
+ QCOMPARE(f3.isStarted(), true);
+ QCOMPARE(f3.isCanceled(), true);
+}
+
+/*
+ Tests that a QFuture can return multiple results.
+*/
+void tst_QFuture::multipleResults()
+{
+ IntResult a;
+ a.reportStarted();
+ QFuture<int> f = a.future();
+
+ QFuture<int> copy = f;
+ int result;
+
+ result = 1;
+ a.reportResult(&result);
+ QCOMPARE(f.resultAt(0), 1);
+
+ result = 2;
+ a.reportResult(&result);
+ QCOMPARE(f.resultAt(1), 2);
+
+ result = 3;
+ a.reportResult(&result);
+
+ result = 4;
+ a.reportFinished(&result);
+
+ QCOMPARE(f.results(), QList<int>() << 1 << 2 << 3 << 4);
+
+ // test foreach
+ QList<int> fasit = QList<int>() << 1 << 2 << 3 << 4;
+ {
+ QList<int> results;
+ foreach(int result, f)
+ results.append(result);
+ QCOMPARE(results, fasit);
+ }
+ {
+ QList<int> results;
+ foreach(int result, copy)
+ results.append(result);
+ QCOMPARE(results, fasit);
+ }
+}
+
+/*
+ Test out-of-order result reporting using indexes
+*/
+void tst_QFuture::indexedResults()
+{
+ {
+ QFutureInterface<QChar> Interface;
+ QFuture<QChar> f;
+ QVERIFY(f.isStarted() == true);
+
+ Interface.reportStarted();
+ f = Interface.future();
+
+ QVERIFY(f.isStarted() == true);
+
+ QChar result;
+
+ result = 'B';
+ Interface.reportResult(&result, 1);
+
+ QCOMPARE(f.resultAt(1), result);
+
+ result = 'A';
+ Interface.reportResult(&result, 0);
+ QCOMPARE(f.resultAt(0), result);
+
+ result = 'C';
+ Interface.reportResult(&result); // no index
+ QCOMPARE(f.resultAt(2), result);
+
+ Interface.reportFinished();
+
+ QCOMPARE(f.results(), QList<QChar>() << 'A' << 'B' << 'C');
+ }
+
+ {
+ // Test result reporting with a missing result in the middle
+ QFutureInterface<int> Interface;
+ Interface.reportStarted();
+ QFuture<int> f = Interface.future();
+ int result;
+
+ result = 0;
+ Interface.reportResult(&result, 0);
+ QVERIFY(f.isResultReadyAt(0));
+ QCOMPARE(f.resultAt(0), 0);
+
+ result = 3;
+ Interface.reportResult(&result, 3);
+ QVERIFY(f.isResultReadyAt(3));
+ QCOMPARE(f.resultAt(3), 3);
+
+ result = 2;
+ Interface.reportResult(&result, 2);
+ QVERIFY(f.isResultReadyAt(2));
+ QCOMPARE(f.resultAt(2), 2);
+
+ result = 4;
+ Interface.reportResult(&result); // no index
+ QVERIFY(f.isResultReadyAt(4));
+ QCOMPARE(f.resultAt(4), 4);
+
+ Interface.reportFinished();
+
+ QCOMPARE(f.results(), QList<int>() << 0 << 2 << 3 << 4);
+ }
+}
+
+void tst_QFuture::progress()
+{
+ QFutureInterface<QChar> result;
+ QFuture<QChar> f;
+
+ QCOMPARE (f.progressValue(), 0);
+
+ result.reportStarted();
+ f = result.future();
+
+ QCOMPARE (f.progressValue(), 0);
+
+ result.setProgressValue(50);
+
+ QCOMPARE (f.progressValue(), 50);
+
+ result.reportFinished();
+
+ QCOMPARE (f.progressValue(), 50);
+}
+
+void tst_QFuture::progressText()
+{
+ QFutureInterface<void> i;
+ i.reportStarted();
+ QFuture<void> f = i.future();
+
+ QCOMPARE(f.progressText(), QLatin1String(""));
+ i.setProgressValueAndText(1, QLatin1String("foo"));
+ QCOMPARE(f.progressText(), QLatin1String("foo"));
+ i.reportFinished();
+}
+
+/*
+ Test that results reported after finished are ignored.
+*/
+void tst_QFuture::resultsAfterFinished()
+{
+ {
+ IntResult a;
+ a.reportStarted();
+ QFuture<int> f = a.future();
+ int result;
+
+ QCOMPARE(f.resultCount(), 0);
+
+ result = 1;
+ a.reportResult(&result);
+ QCOMPARE(f.resultAt(0), 1);
+
+ a.reportFinished();
+
+ QCOMPARE(f.resultAt(0), 1);
+ QCOMPARE(f.resultCount(), 1);
+ result = 2;
+ a.reportResult(&result);
+ QCOMPARE(f.resultCount(), 1);
+ }
+ // cancel it
+ {
+ IntResult a;
+ a.reportStarted();
+ QFuture<int> f = a.future();
+ int result;
+
+ QCOMPARE(f.resultCount(), 0);
+
+ result = 1;
+ a.reportResult(&result);
+ QCOMPARE(f.resultAt(0), 1);
+ QCOMPARE(f.resultCount(), 1);
+
+ a.reportCanceled();
+
+ QCOMPARE(f.resultAt(0), 1);
+ QCOMPARE(f.resultCount(), 1);
+
+ result = 2;
+ a.reportResult(&result);
+ a.reportFinished();
+ }
+}
+
+void tst_QFuture::resultsAsList()
+{
+ IntResult a;
+ a.reportStarted();
+ QFuture<int> f = a.future();
+
+ int result;
+ result = 1;
+ a.reportResult(&result);
+ result = 2;
+ a.reportResult(&result);
+
+ a.reportFinished();
+
+ QList<int> results = f.results();
+ QCOMPARE(results, QList<int>() << 1 << 2);
+}
+
+/*
+ Test that QFuture<T> can be implicitly converted to T
+*/
+void tst_QFuture::implicitConversions()
+{
+ QFutureInterface<QString> iface;
+ iface.reportStarted();
+
+ QFuture<QString> f(&iface);
+
+ const QString input("FooBar 2000");
+ iface.reportFinished(&input);
+
+ const QString result = f;
+ QCOMPARE(result, input);
+ QCOMPARE(QString(f), input);
+ QCOMPARE(static_cast<QString>(f), input);
+}
+
+void tst_QFuture::iterators()
+{
+ {
+ QFutureInterface<int> e;
+ e.reportStarted();
+ QFuture<int> f = e.future();
+
+ int result;
+ result = 1;
+ e.reportResult(&result);
+ result = 2;
+ e.reportResult(&result);
+ result = 3;
+ e.reportResult(&result);
+ e.reportFinished();
+
+ QList<int> results;
+ QFutureIterator<int> i(f);
+ while (i.hasNext()) {
+ results.append(i.next());
+ }
+
+ QCOMPARE(results, f.results());
+
+ QFuture<int>::const_iterator i1 = f.begin(), i2 = i1 + 1;
+ QFuture<int>::const_iterator c1 = i1, c2 = c1 + 1;
+
+ QVERIFY(i1 == i1);
+ QVERIFY(i1 == c1);
+ QVERIFY(c1 == i1);
+ QVERIFY(c1 == c1);
+ QVERIFY(i2 == i2);
+ QVERIFY(i2 == c2);
+ QVERIFY(c2 == i2);
+ QVERIFY(c2 == c2);
+
+ QVERIFY(i1 != i2);
+ QVERIFY(i1 != c2);
+ QVERIFY(c1 != i2);
+ QVERIFY(c1 != c2);
+ QVERIFY(i2 != i1);
+ QVERIFY(i2 != c1);
+ QVERIFY(c2 != i1);
+ QVERIFY(c2 != c1);
+
+ int x1 = *i1;
+ Q_UNUSED(x1);
+ int x2 = *i2;
+ Q_UNUSED(x2);
+ int y1 = *c1;
+ Q_UNUSED(y1);
+ int y2 = *c2;
+ Q_UNUSED(y2);
+ }
+
+ {
+ QFutureInterface<QString> e;
+ e.reportStarted();
+ QFuture<QString> f = e.future();
+
+ e.reportResult(QString("one"));
+ e.reportResult(QString("two"));
+ e.reportResult(QString("three"));
+ e.reportFinished();
+
+ QList<QString> results;
+ QFutureIterator<QString> i(f);
+ while (i.hasNext()) {
+ results.append(i.next());
+ }
+
+ QCOMPARE(results, f.results());
+
+ QFuture<QString>::const_iterator i1 = f.begin(), i2 = i1 + 1;
+ QFuture<QString>::const_iterator c1 = i1, c2 = c1 + 1;
+
+ QVERIFY(i1 == i1);
+ QVERIFY(i1 == c1);
+ QVERIFY(c1 == i1);
+ QVERIFY(c1 == c1);
+ QVERIFY(i2 == i2);
+ QVERIFY(i2 == c2);
+ QVERIFY(c2 == i2);
+ QVERIFY(c2 == c2);
+
+ QVERIFY(i1 != i2);
+ QVERIFY(i1 != c2);
+ QVERIFY(c1 != i2);
+ QVERIFY(c1 != c2);
+ QVERIFY(i2 != i1);
+ QVERIFY(i2 != c1);
+ QVERIFY(c2 != i1);
+ QVERIFY(c2 != c1);
+
+ QString x1 = *i1;
+ QString x2 = *i2;
+ QString y1 = *c1;
+ QString y2 = *c2;
+
+ QCOMPARE(x1, y1);
+ QCOMPARE(x2, y2);
+
+ int i1Size = i1->size();
+ int i2Size = i2->size();
+ int c1Size = c1->size();
+ int c2Size = c2->size();
+
+ QCOMPARE(i1Size, c1Size);
+ QCOMPARE(i2Size, c2Size);
+ }
+
+ {
+ const int resultCount = 20;
+
+ QFutureInterface<int> e;
+ e.reportStarted();
+ QFuture<int> f = e.future();
+
+ for (int i = 0; i < resultCount; ++i) {
+ e.reportResult(i);
+ }
+
+ e.reportFinished();
+
+ {
+ QFutureIterator<int> it(f);
+ QFutureIterator<int> it2(it);
+ }
+
+ {
+ QFutureIterator<int> it(f);
+
+ for (int i = 0; i < resultCount - 1; ++i) {
+ QVERIFY(it.hasNext());
+ QCOMPARE(it.peekNext(), i);
+ QCOMPARE(it.next(), i);
+ }
+
+ QVERIFY(it.hasNext());
+ QCOMPARE(it.peekNext(), resultCount - 1);
+ QCOMPARE(it.next(), resultCount - 1);
+ QVERIFY(it.hasNext() == false);
+ }
+
+ {
+ QFutureIterator<int> it(f);
+ QVERIFY(it.hasNext());
+ it.toBack();
+ QVERIFY(it.hasNext() == false);
+ it.toFront();
+ QVERIFY(it.hasNext());
+ }
+ }
+}
+
+class SignalSlotObject : public QObject
+{
+Q_OBJECT
+public:
+ SignalSlotObject()
+ : finishedCalled(false),
+ canceledCalled(false),
+ rangeBegin(0),
+ rangeEnd(0) { }
+
+public slots:
+ void finished()
+ {
+ finishedCalled = true;
+ }
+
+ void canceled()
+ {
+ canceledCalled = true;
+ }
+
+ void resultReady(int index)
+ {
+ results.insert(index);
+ }
+
+ void progressRange(int begin, int end)
+ {
+ rangeBegin = begin;
+ rangeEnd = end;
+ }
+
+ void progress(int progress)
+ {
+ reportedProgress.insert(progress);
+ }
+public:
+ bool finishedCalled;
+ bool canceledCalled;
+ QSet<int> results;
+ int rangeBegin;
+ int rangeEnd;
+ QSet<int> reportedProgress;
+};
+
+void tst_QFuture::pause()
+{
+ QFutureInterface<void> Interface;
+
+ Interface.reportStarted();
+ QFuture<void> f = Interface.future();
+
+ QVERIFY(Interface.isPaused() == false);
+ f.pause();
+ QVERIFY(Interface.isPaused() == true);
+ f.resume();
+ QVERIFY(Interface.isPaused() == false);
+ f.togglePaused();
+ QVERIFY(Interface.isPaused() == true);
+ f.togglePaused();
+ QVERIFY(Interface.isPaused() == false);
+
+ Interface.reportFinished();
+}
+
+const int resultCount = 1000;
+
+class ResultObject : public QObject
+{
+Q_OBJECT
+public slots:
+ void resultReady(int)
+ {
+
+ }
+public:
+};
+
+// Test that that the isPaused() on future result interface returns true
+// if we report a lot of results that are not handled.
+void tst_QFuture::throttling()
+{
+ {
+ QFutureInterface<void> i;
+
+ i.reportStarted();
+ QFuture<void> f = i.future();
+
+ QVERIFY(i.isThrottled() == false);
+
+ i.setThrottled(true);
+ QVERIFY(i.isThrottled());
+
+ i.setThrottled(false);
+ QVERIFY(i.isThrottled() == false);
+
+ i.setThrottled(true);
+ QVERIFY(i.isThrottled());
+
+ i.reportFinished();
+ }
+}
+
+void tst_QFuture::voidConversions()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> intFuture(&iface);
+
+ int value = 10;
+ iface.reportFinished(&value);
+
+ QFuture<void> voidFuture(intFuture);
+ voidFuture = intFuture;
+
+ QVERIFY(voidFuture == intFuture);
+}
+
+
+#ifndef QT_NO_EXCEPTIONS
+
+QFuture<void> createExceptionFuture()
+{
+ QFutureInterface<void> i;
+ i.reportStarted();
+ QFuture<void> f = i.future();
+
+ Exception e;
+ i.reportException(e);
+ i.reportFinished();
+ return f;
+}
+
+QFuture<int> createExceptionResultFuture()
+{
+ QFutureInterface<int> i;
+ i.reportStarted();
+ QFuture<int> f = i.future();
+ int r = 0;
+ i.reportResult(r);
+
+ Exception e;
+ i.reportException(e);
+ i.reportFinished();
+ return f;
+}
+
+class DerivedException : public Exception
+{
+public:
+ void raise() const { throw *this; }
+ Exception *clone() const { return new DerivedException(*this); }
+};
+
+QFuture<void> createDerivedExceptionFuture()
+{
+ QFutureInterface<void> i;
+ i.reportStarted();
+ QFuture<void> f = i.future();
+
+ DerivedException e;
+ i.reportException(e);
+ i.reportFinished();
+ return f;
+}
+
+void tst_QFuture::exceptions()
+{
+ // test throwing from waitForFinished
+ {
+ QFuture<void> f = createExceptionFuture();
+ bool caught = false;
+ try {
+ f.waitForFinished();
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+ }
+
+ // test result()
+ {
+ QFuture<int> f = createExceptionResultFuture();
+ bool caught = false;
+ try {
+ f.result();
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+ }
+
+ // test result() and destroy
+ {
+ bool caught = false;
+ try {
+ createExceptionResultFuture().result();
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+ }
+
+ // test results()
+ {
+ QFuture<int> f = createExceptionResultFuture();
+ bool caught = false;
+ try {
+ f.results();
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+ }
+
+ // test foreach
+ {
+ QFuture<int> f = createExceptionResultFuture();
+ bool caught = false;
+ try {
+ foreach (int e, f.results()) {
+ Q_UNUSED(e);
+ QFAIL("did not get exception");
+ }
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+ }
+
+ // catch derived exceptions
+ {
+ bool caught = false;
+ try {
+ createDerivedExceptionFuture().waitForFinished();
+ } catch (Exception &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+ }
+
+ {
+ bool caught = false;
+ try {
+ createDerivedExceptionFuture().waitForFinished();
+ } catch (DerivedException &) {
+ caught = true;
+ }
+ QVERIFY(caught);
+ }
+}
+
+class MyClass
+{
+public:
+ ~MyClass()
+ {
+ QFuture<void> f = createExceptionFuture();
+ try {
+ f.waitForFinished();
+ } catch (Exception &) {
+ caught = true;
+ }
+ }
+ static bool caught;
+};
+
+bool MyClass::caught = false;
+
+// This is a regression test for QTBUG-18149. where QFuture did not throw
+// exceptions if called from destructors when the stack was already unwinding
+// due to an exception having been thrown.
+void tst_QFuture::nestedExceptions()
+{
+ try {
+ MyClass m;
+ Q_UNUSED(m);
+ throw 0;
+ } catch (int) {}
+
+ QVERIFY(MyClass::caught);
+}
+
+#endif // QT_NO_EXCEPTIONS
+
+QTEST_MAIN(tst_QFuture)
+#include "tst_qfuture.moc"
diff --git a/tests/auto/concurrent/qfuturesynchronizer/qfuturesynchronizer.pro b/tests/auto/concurrent/qfuturesynchronizer/qfuturesynchronizer.pro
new file mode 100644
index 0000000000..331a8e3c05
--- /dev/null
+++ b/tests/auto/concurrent/qfuturesynchronizer/qfuturesynchronizer.pro
@@ -0,0 +1,4 @@
+CONFIG += testcase parallel_test
+TARGET = tst_qfuturesynchronizer
+QT = core testlib concurrent
+SOURCES = tst_qfuturesynchronizer.cpp
diff --git a/tests/auto/concurrent/qfuturesynchronizer/tst_qfuturesynchronizer.cpp b/tests/auto/concurrent/qfuturesynchronizer/tst_qfuturesynchronizer.cpp
new file mode 100644
index 0000000000..012c90de18
--- /dev/null
+++ b/tests/auto/concurrent/qfuturesynchronizer/tst_qfuturesynchronizer.cpp
@@ -0,0 +1,158 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <QtTest>
+
+#include <QtConcurrent/qfuturesynchronizer.h>
+#include <QtConcurrent/qfuture.h>
+
+class tst_QFutureSynchronizer : public QObject
+{
+ Q_OBJECT
+
+
+private Q_SLOTS:
+ void construction();
+ void addFuture();
+ void cancelOnWait();
+ void clearFutures();
+ void futures();
+ void setFuture();
+ void waitForFinished();
+};
+
+
+void tst_QFutureSynchronizer::construction()
+{
+
+ QFuture<void> future;
+ QFutureSynchronizer<void> synchronizer;
+ QFutureSynchronizer<void> synchronizerWithFuture(future);
+
+ QCOMPARE(synchronizer.futures().size(), 0);
+ QCOMPARE(synchronizerWithFuture.futures().size(), 1);
+}
+
+void tst_QFutureSynchronizer::addFuture()
+{
+ QFutureSynchronizer<void> synchronizer;
+
+ synchronizer.addFuture(QFuture<void>());
+ QFuture<void> future;
+ synchronizer.addFuture(future);
+ synchronizer.addFuture(future);
+
+ QCOMPARE(synchronizer.futures().size(), 3);
+}
+
+void tst_QFutureSynchronizer::cancelOnWait()
+{
+ QFutureSynchronizer<void> synchronizer;
+ QVERIFY(!synchronizer.cancelOnWait());
+ synchronizer.setCancelOnWait(true);
+ QVERIFY(synchronizer.cancelOnWait());
+ synchronizer.setCancelOnWait(false);
+ QVERIFY(!synchronizer.cancelOnWait());
+ synchronizer.setCancelOnWait(true);
+ QVERIFY(synchronizer.cancelOnWait());
+}
+
+void tst_QFutureSynchronizer::clearFutures()
+{
+ QFutureSynchronizer<void> synchronizer;
+ synchronizer.clearFutures();
+ QVERIFY(synchronizer.futures().isEmpty());
+
+ synchronizer.addFuture(QFuture<void>());
+ QFuture<void> future;
+ synchronizer.addFuture(future);
+ synchronizer.addFuture(future);
+ synchronizer.clearFutures();
+ QVERIFY(synchronizer.futures().isEmpty());
+}
+
+void tst_QFutureSynchronizer::futures()
+{
+ QFutureSynchronizer<void> synchronizer;
+
+ QList<QFuture<void> > futures;
+ for (int i=0; i<100; i++) {
+ QFuture<void> future;
+ futures.append(future);
+ synchronizer.addFuture(future);
+ }
+
+ QCOMPARE(futures, synchronizer.futures());
+}
+
+void tst_QFutureSynchronizer::setFuture()
+{
+ QFutureSynchronizer<void> synchronizer;
+
+ for (int i=0; i<100; i++) {
+ synchronizer.addFuture(QFuture<void>());
+ }
+ QCOMPARE(synchronizer.futures().size(), 100);
+
+ QFuture<void> future;
+ synchronizer.setFuture(future);
+ QCOMPARE(synchronizer.futures().size(), 1);
+ QCOMPARE(synchronizer.futures().first(), future);
+}
+
+void tst_QFutureSynchronizer::waitForFinished()
+{
+ QFutureSynchronizer<void> synchronizer;
+
+ for (int i=0; i<100; i++) {
+ synchronizer.addFuture(QFuture<void>());
+ }
+ synchronizer.waitForFinished();
+ const QList<QFuture<void> > futures = synchronizer.futures();
+
+ for (int i=0; i<100; i++) {
+ QVERIFY(futures.at(i).isFinished());
+ }
+}
+
+QTEST_MAIN(tst_QFutureSynchronizer)
+
+#include "tst_qfuturesynchronizer.moc"
diff --git a/tests/auto/corelib/concurrent/qfuturewatcher/.gitignore b/tests/auto/concurrent/qfuturewatcher/.gitignore
index 1d778431c5..1d778431c5 100644
--- a/tests/auto/corelib/concurrent/qfuturewatcher/.gitignore
+++ b/tests/auto/concurrent/qfuturewatcher/.gitignore
diff --git a/tests/auto/concurrent/qfuturewatcher/qfuturewatcher.pro b/tests/auto/concurrent/qfuturewatcher/qfuturewatcher.pro
new file mode 100644
index 0000000000..3b8ebda4a4
--- /dev/null
+++ b/tests/auto/concurrent/qfuturewatcher/qfuturewatcher.pro
@@ -0,0 +1,4 @@
+CONFIG += testcase parallel_test
+TARGET = tst_qfuturewatcher
+QT = concurrent-private testlib concurrent
+SOURCES = tst_qfuturewatcher.cpp
diff --git a/tests/auto/concurrent/qfuturewatcher/tst_qfuturewatcher.cpp b/tests/auto/concurrent/qfuturewatcher/tst_qfuturewatcher.cpp
new file mode 100644
index 0000000000..fe3eb378d5
--- /dev/null
+++ b/tests/auto/concurrent/qfuturewatcher/tst_qfuturewatcher.cpp
@@ -0,0 +1,942 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <QCoreApplication>
+#include <QDebug>
+#include <QtTest/QtTest>
+
+#include <QtConcurrent>
+#include <private/qfutureinterface_p.h>
+
+using namespace QtConcurrent;
+
+#include <QtTest/QtTest>
+
+//#define PRINT
+
+class tst_QFutureWatcher: public QObject
+{
+ Q_OBJECT
+private slots:
+ void startFinish();
+ void progressValueChanged();
+ void canceled();
+ void resultAt();
+ void resultReadyAt();
+ void futureSignals();
+ void watchFinishedFuture();
+ void watchCanceledFuture();
+ void disconnectRunningFuture();
+ void tooMuchProgress();
+ void progressText();
+ void sharedFutureInterface();
+ void changeFuture();
+ void cancelEvents();
+ void pauseEvents();
+ void finishedState();
+ void throttling();
+ void incrementalMapResults();
+ void incrementalFilterResults();
+ void qfutureSynchronizer();
+ void warnRace();
+};
+
+void sleeper()
+{
+ QTest::qSleep(100);
+}
+
+void tst_QFutureWatcher::startFinish()
+{
+ QFutureWatcher<void> futureWatcher;
+
+ QSignalSpy startedSpy(&futureWatcher, SIGNAL(started()));
+ QSignalSpy finishedSpy(&futureWatcher, SIGNAL(finished()));
+
+ QVERIFY(startedSpy.isValid());
+ QVERIFY(finishedSpy.isValid());
+
+ futureWatcher.setFuture(QtConcurrent::run(sleeper));
+ QTest::qWait(10); // spin the event loop to deliver queued signals.
+ QCOMPARE(startedSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 0);
+ futureWatcher.future().waitForFinished();
+ QTest::qWait(10);
+ QCOMPARE(startedSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 1);
+}
+
+void mapSleeper(int &)
+{
+ QTest::qSleep(100);
+}
+
+QSet<int> progressValues;
+QSet<QString> progressTexts;
+QMutex mutex;
+class ProgressObject : public QObject
+{
+Q_OBJECT
+public slots:
+ void printProgress(int);
+ void printText(const QString &text);
+ void registerProgress(int);
+ void registerText(const QString &text);
+};
+
+void ProgressObject::printProgress(int progress)
+{
+ qDebug() << "thread" << QThread::currentThread() << "reports progress" << progress;
+}
+
+void ProgressObject::printText(const QString &text)
+{
+ qDebug() << "thread" << QThread::currentThread() << "reports progress text" << text;
+}
+
+void ProgressObject::registerProgress(int progress)
+{
+ QTest::qSleep(1);
+ progressValues.insert(progress);
+}
+
+void ProgressObject::registerText(const QString &text)
+{
+ QTest::qSleep(1);
+ progressTexts.insert(text);
+}
+
+
+QList<int> createList(int listSize)
+{
+ QList<int> list;
+ for (int i = 0; i < listSize; ++i) {
+ list.append(i);
+ }
+ return list;
+}
+
+void tst_QFutureWatcher::progressValueChanged()
+{
+#ifdef PRINT
+ qDebug() << "main thread" << QThread::currentThread();
+#endif
+
+ progressValues.clear();
+ const int listSize = 20;
+ QList<int> list = createList(listSize);
+
+ QFutureWatcher<void> futureWatcher;
+ ProgressObject progressObject;
+ QObject::connect(&futureWatcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+#ifdef PRINT
+ QObject::connect(&futureWatcher, SIGNAL(progressValueChanged(int)), &progressObject, SLOT(printProgress(int)), Qt::DirectConnection );
+#endif
+ QObject::connect(&futureWatcher, SIGNAL(progressValueChanged(int)), &progressObject, SLOT(registerProgress(int)));
+
+ futureWatcher.setFuture(QtConcurrent::map(list, mapSleeper));
+
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ futureWatcher.disconnect();
+ QVERIFY(progressValues.contains(0));
+ QVERIFY(progressValues.contains(listSize));
+}
+
+class CancelObject : public QObject
+{
+Q_OBJECT
+public:
+ bool wasCanceled;
+ CancelObject() : wasCanceled(false) {};
+public slots:
+ void cancel();
+};
+
+void CancelObject::cancel()
+{
+#ifdef PRINT
+ qDebug() << "thread" << QThread::currentThread() << "reports canceled";
+#endif
+ wasCanceled = true;
+}
+
+void tst_QFutureWatcher::canceled()
+{
+ const int listSize = 20;
+ QList<int> list = createList(listSize);
+
+ QFutureWatcher<void> futureWatcher;
+ QFuture<void> future;
+ CancelObject cancelObject;
+
+ QObject::connect(&futureWatcher, SIGNAL(canceled()), &cancelObject, SLOT(cancel()));
+ QObject::connect(&futureWatcher, SIGNAL(canceled()),
+ &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
+
+ future = QtConcurrent::map(list, mapSleeper);
+ futureWatcher.setFuture(future);
+ futureWatcher.cancel();
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QVERIFY(future.isCanceled());
+ QVERIFY(cancelObject.wasCanceled);
+ futureWatcher.disconnect();
+ future.waitForFinished();
+}
+
+class IntTask : public RunFunctionTask<int>
+{
+public:
+ void runFunctor()
+ {
+ result = 10;
+ }
+};
+
+void tst_QFutureWatcher::resultAt()
+{
+ QFutureWatcher<int> futureWatcher;
+ futureWatcher.setFuture((new IntTask())->start());
+ futureWatcher.waitForFinished();
+ QCOMPARE(futureWatcher.result(), 10);
+ QCOMPARE(futureWatcher.resultAt(0), 10);
+}
+
+void tst_QFutureWatcher::resultReadyAt()
+{
+ QFutureWatcher<int> futureWatcher;
+ QObject::connect(&futureWatcher, SIGNAL(resultReadyAt(int)), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
+
+ QFuture<int> future = (new IntTask())->start();
+ futureWatcher.setFuture(future);
+
+ QTestEventLoop::instance().enterLoop(1);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ // Setting the future again should give us another signal.
+ // (this is to prevent the race where the task associated
+ // with the future finishes before setFuture is called.)
+ futureWatcher.setFuture(QFuture<int>());
+ futureWatcher.setFuture(future);
+
+ QTestEventLoop::instance().enterLoop(1);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+}
+
+class SignalSlotObject : public QObject
+{
+Q_OBJECT
+
+signals:
+ void cancel();
+
+public slots:
+ void started()
+ {
+ qDebug() << "started called";
+ }
+
+ void finished()
+ {
+ qDebug() << "finished called";
+ }
+
+ void canceled()
+ {
+ qDebug() << "canceled called";
+ }
+
+#ifdef PRINT
+ void resultReadyAt(int index)
+ {
+ qDebug() << "result" << index << "ready";
+ }
+#else
+ void resultReadyAt(int) { }
+#endif
+ void progressValueChanged(int progress)
+ {
+ qDebug() << "progress" << progress;
+ }
+
+ void progressRangeChanged(int min, int max)
+ {
+ qDebug() << "progress range" << min << max;
+ }
+
+};
+
+void tst_QFutureWatcher::futureSignals()
+{
+ {
+ QFutureInterface<int> a;
+ QFutureWatcher<int> f;
+
+ SignalSlotObject object;
+#ifdef PRINT
+ connect(&f, SIGNAL(finished()), &object, SLOT(finished()));
+ connect(&f, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
+#endif
+ // must connect to resultReadyAt so that the watcher can detect the connection
+ // (QSignalSpy does not trigger it.)
+ connect(&f, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+ a.reportStarted();
+ f.setFuture(a.future());
+
+ QSignalSpy progressSpy(&f, SIGNAL(progressValueChanged(int)));
+ QVERIFY(progressSpy.isValid());
+ const int progress = 1;
+ a.setProgressValue(progress);
+ QTest::qWait(10);
+ QCOMPARE(progressSpy.count(), 2);
+ QCOMPARE(progressSpy.takeFirst().at(0).toInt(), 0);
+ QCOMPARE(progressSpy.takeFirst().at(0).toInt(), 1);
+
+ QSignalSpy finishedSpy(&f, SIGNAL(finished()));
+ QSignalSpy resultReadySpy(&f, SIGNAL(resultReadyAt(int)));
+
+ QVERIFY(finishedSpy.isValid());
+ QVERIFY(resultReadySpy.isValid());
+
+ const int result = 10;
+ a.reportResult(&result);
+ QTest::qWait(10);
+ QCOMPARE(resultReadySpy.count(), 1);
+ a.reportFinished(&result);
+ QTest::qWait(10);
+
+ QCOMPARE(resultReadySpy.count(), 2);
+ QCOMPARE(resultReadySpy.takeFirst().at(0).toInt(), 0); // check the index
+ QCOMPARE(resultReadySpy.takeFirst().at(0).toInt(), 1);
+
+ QCOMPARE(finishedSpy.count(), 1);
+ }
+}
+
+void tst_QFutureWatcher::watchFinishedFuture()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> f = iface.future();
+
+ int value = 100;
+ iface.reportFinished(&value);
+
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+#ifdef PRINT
+ connect(&watcher, SIGNAL(started()), &object, SLOT(started()));
+ connect(&watcher, SIGNAL(canceled()), &object, SLOT(canceled()));
+ connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
+ connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
+ connect(&watcher, SIGNAL(progressRangeChanged(int, int)), &object, SLOT(progressRangeChanged(int, int)));
+#endif
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+
+ QSignalSpy startedSpy(&watcher, SIGNAL(started()));
+ QSignalSpy finishedSpy(&watcher, SIGNAL(finished()));
+ QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
+ QSignalSpy canceledSpy(&watcher, SIGNAL(canceled()));
+
+ QVERIFY(startedSpy.isValid());
+ QVERIFY(finishedSpy.isValid());
+ QVERIFY(resultReadySpy.isValid());
+ QVERIFY(canceledSpy.isValid());
+
+ watcher.setFuture(f);
+ QTest::qWait(10);
+
+ QCOMPARE(startedSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 1);
+ QCOMPARE(resultReadySpy.count(), 1);
+ QCOMPARE(canceledSpy.count(), 0);
+}
+
+void tst_QFutureWatcher::watchCanceledFuture()
+{
+ QFuture<int> f;
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+#ifdef PRINT
+ connect(&watcher, SIGNAL(started()), &object, SLOT(started()));
+ connect(&watcher, SIGNAL(canceled()), &object, SLOT(canceled()));
+ connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
+ connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
+ connect(&watcher, SIGNAL(progressRangeChanged(int, int)), &object, SLOT(progressRangeChanged(int, int)));
+#endif
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+
+ QSignalSpy startedSpy(&watcher, SIGNAL(started()));
+ QSignalSpy finishedSpy(&watcher, SIGNAL(finished()));
+ QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
+ QSignalSpy canceledSpy(&watcher, SIGNAL(canceled()));
+
+ QVERIFY(startedSpy.isValid());
+ QVERIFY(finishedSpy.isValid());
+ QVERIFY(resultReadySpy.isValid());
+ QVERIFY(canceledSpy.isValid());
+
+ watcher.setFuture(f);
+ QTest::qWait(10);
+
+ QCOMPARE(startedSpy.count(), 1);
+ QCOMPARE(finishedSpy.count(), 1);
+ QCOMPARE(resultReadySpy.count(), 0);
+ QCOMPARE(canceledSpy.count(), 1);
+}
+
+void tst_QFutureWatcher::disconnectRunningFuture()
+{
+ QFutureInterface<int> a;
+ a.reportStarted();
+
+ QFuture<int> f = a.future();
+ QFutureWatcher<int> *watcher = new QFutureWatcher<int>();
+ watcher->setFuture(f);
+
+ SignalSlotObject object;
+ connect(watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+
+ QSignalSpy finishedSpy(watcher, SIGNAL(finished()));
+ QSignalSpy resultReadySpy(watcher, SIGNAL(resultReadyAt(int)));
+
+ QVERIFY(finishedSpy.isValid());
+ QVERIFY(resultReadySpy.isValid());
+
+ const int result = 10;
+ a.reportResult(&result);
+ QTest::qWait(10);
+ QCOMPARE(resultReadySpy.count(), 1);
+
+ delete watcher;
+
+ a.reportResult(&result);
+ QTest::qWait(10);
+ QCOMPARE(resultReadySpy.count(), 1);
+
+ a.reportFinished(&result);
+ QTest::qWait(10);
+ QCOMPARE(finishedSpy.count(), 0);
+}
+
+const int maxProgress = 100000;
+class ProgressEmitterTask : public RunFunctionTask<void>
+{
+public:
+ void runFunctor()
+ {
+ setProgressRange(0, maxProgress);
+ for (int p = 0; p <= maxProgress; ++p)
+ setProgressValue(p);
+ }
+};
+
+void tst_QFutureWatcher::tooMuchProgress()
+{
+ progressValues.clear();
+ ProgressObject o;
+
+ QFutureWatcher<void> f;
+ QObject::connect(&f, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+#ifdef PRINT
+ QObject::connect(&f, SIGNAL(progressValueChanged(int)), &o, SLOT(printProgress(int)));
+#endif
+ QObject::connect(&f, SIGNAL(progressValueChanged(int)), &o, SLOT(registerProgress(int)));
+ f.setFuture((new ProgressEmitterTask())->start());
+
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QVERIFY(progressValues.contains(maxProgress));
+}
+
+template <typename T>
+class ProgressTextTask : public RunFunctionTask<T>
+{
+public:
+ void runFunctor()
+ {
+ this->setProgressValueAndText(1, QLatin1String("Foo 1"));
+
+ while (this->isProgressUpdateNeeded() == false)
+ QTest::qSleep(1);
+ this->setProgressValueAndText(2, QLatin1String("Foo 2"));
+
+ while (this->isProgressUpdateNeeded() == false)
+ QTest::qSleep(1);
+ this->setProgressValueAndText(3, QLatin1String("Foo 3"));
+
+ while (this->isProgressUpdateNeeded() == false)
+ QTest::qSleep(1);
+ this->setProgressValueAndText(4, QLatin1String("Foo 4"));
+ }
+};
+
+void tst_QFutureWatcher::progressText()
+{
+ { // instantiate API for T=int and T=void.
+ ProgressTextTask<int> a;
+ ProgressTextTask<void> b;
+ }
+ {
+ progressValues.clear();
+ progressTexts.clear();
+ QFuture<int> f = ((new ProgressTextTask<int>())->start());
+ QFutureWatcher<int> watcher;
+ ProgressObject o;
+ QObject::connect(&watcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+#ifdef PRINT
+ QObject::connect(&watcher, SIGNAL(progressValueChanged(int)), &o, SLOT(printProgress(int)));
+ QObject::connect(&watcher, SIGNAL(progressTextChanged(const QString &)), &o, SLOT(printText(const QString &)));
+#endif
+ QObject::connect(&watcher, SIGNAL(progressValueChanged(int)), &o, SLOT(registerProgress(int)));
+ QObject::connect(&watcher, SIGNAL(progressTextChanged(const QString &)), &o, SLOT(registerText(const QString &)));
+
+ watcher.setFuture(f);
+ QTestEventLoop::instance().enterLoop(5);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+
+ QCOMPARE(f.progressText(), QLatin1String("Foo 4"));
+ QCOMPARE(f.progressValue(), 4);
+ QVERIFY(progressValues.contains(1));
+ QVERIFY(progressValues.contains(2));
+ QVERIFY(progressValues.contains(3));
+ QVERIFY(progressValues.contains(4));
+ QVERIFY(progressTexts.contains(QLatin1String("Foo 1")));
+ QVERIFY(progressTexts.contains(QLatin1String("Foo 2")));
+ QVERIFY(progressTexts.contains(QLatin1String("Foo 3")));
+ QVERIFY(progressTexts.contains(QLatin1String("Foo 4")));
+ }
+}
+
+template <typename T>
+void callInterface(T &obj)
+{
+ obj.progressValue();
+ obj.progressMinimum();
+ obj.progressMaximum();
+ obj.progressText();
+
+ obj.isStarted();
+ obj.isFinished();
+ obj.isRunning();
+ obj.isCanceled();
+ obj.isPaused();
+
+ obj.cancel();
+ obj.pause();
+ obj.resume();
+ obj.togglePaused();
+ obj.waitForFinished();
+
+ const T& objConst = obj;
+ objConst.progressValue();
+ objConst.progressMinimum();
+ objConst.progressMaximum();
+ objConst.progressText();
+
+ objConst.isStarted();
+ objConst.isFinished();
+ objConst.isRunning();
+ objConst.isCanceled();
+ objConst.isPaused();
+}
+
+template <typename T>
+void callInterface(const T &obj)
+{
+ obj.result();
+ obj.resultAt(0);
+}
+
+
+// QFutureWatcher and QFuture has a similar interface. Test
+// that the functions we want ot have in both are actually
+// there.
+void tst_QFutureWatcher::sharedFutureInterface()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> intFuture = iface.future();
+
+ int value = 0;
+ iface.reportFinished(&value);
+
+ QFuture<void> voidFuture;
+ QFutureWatcher<int> intWatcher;
+ intWatcher.setFuture(intFuture);
+ QFutureWatcher<void> voidWatcher;
+
+ callInterface(intFuture);
+ callInterface(voidFuture);
+ callInterface(intWatcher);
+ callInterface(voidWatcher);
+
+ callInterface(intFuture);
+ callInterface(intWatcher);
+}
+
+void tst_QFutureWatcher::changeFuture()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> a = iface.future();
+
+ int value = 0;
+ iface.reportFinished(&value);
+
+ QFuture<int> b;
+
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+ QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
+ QVERIFY(resultReadySpy.isValid());
+
+ watcher.setFuture(a); // Watch 'a' which will genere a resultReady event.
+ watcher.setFuture(b); // But oh no! we're switching to another future
+ QTest::qWait(10); // before the event gets delivered.
+
+ QCOMPARE(resultReadySpy.count(), 0);
+
+ watcher.setFuture(a);
+ watcher.setFuture(b);
+ watcher.setFuture(a); // setting it back gets us one event, not two.
+ QTest::qWait(10);
+
+ QCOMPARE(resultReadySpy.count(), 1);
+}
+
+// Test that events aren't delivered from canceled futures
+void tst_QFutureWatcher::cancelEvents()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> a = iface.future();
+
+ int value = 0;
+ iface.reportFinished(&value);
+
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+ QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
+ QVERIFY(resultReadySpy.isValid());
+
+ watcher.setFuture(a);
+ watcher.cancel();
+
+ QTest::qWait(10);
+
+ QCOMPARE(resultReadySpy.count(), 0);
+}
+
+// Tests that events from paused futures are saved and
+// delivered on resume.
+void tst_QFutureWatcher::pauseEvents()
+{
+ {
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> a = iface.future();
+
+ int value = 0;
+ iface.reportFinished(&value);
+
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+ QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
+ QVERIFY(resultReadySpy.isValid());
+
+ watcher.setFuture(a);
+ watcher.pause();
+
+ QTest::qWait(10);
+ QCOMPARE(resultReadySpy.count(), 0);
+
+ watcher.resume();
+ QTest::qWait(10);
+ QCOMPARE(resultReadySpy.count(), 1);
+ }
+ {
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+
+ QFuture<int> a = iface.future();
+
+ int value = 0;
+ iface.reportFinished(&value);
+
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+ QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
+ QVERIFY(resultReadySpy.isValid());
+
+ watcher.setFuture(a);
+ a.pause();
+
+ QFuture<int> b;
+ watcher.setFuture(b); // If we watch b instead, resuming a
+ a.resume(); // should give us no results.
+
+ QTest::qWait(10);
+ QCOMPARE(resultReadySpy.count(), 0);
+ }
+}
+
+// Test that the finished state for the watcher gets
+// set when the finished event is delivered.
+// This means it will lag the finished state for the future,
+// but makes it more useful.
+void tst_QFutureWatcher::finishedState()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+ QFuture<int> future = iface.future();
+ QFutureWatcher<int> watcher;
+
+ watcher.setFuture(future);
+ QTest::qWait(10);
+
+ iface.reportFinished();
+ QVERIFY(future.isFinished());
+ QVERIFY(watcher.isFinished() == false);
+
+ QTest::qWait(10);
+ QVERIFY(watcher.isFinished());
+}
+
+/*
+ Verify that throttling kicks in if you report a lot of results,
+ and that it clears when the result events are processed.
+*/
+void tst_QFutureWatcher::throttling()
+{
+ QFutureInterface<int> iface;
+ iface.reportStarted();
+ QFuture<int> future = iface.future();
+ QFutureWatcher<int> watcher;
+ watcher.setFuture(future);
+
+ QVERIFY(iface.isThrottled() == false);
+
+ for (int i = 0; i < 1000; ++i) {
+ int result = 0;
+ iface.reportResult(result);
+ }
+
+ QVERIFY(iface.isThrottled() == true);
+
+ QTest::qWait(100); // process events.
+
+ QVERIFY(iface.isThrottled() == false);
+
+ iface.reportFinished();
+}
+
+int mapper(const int &i)
+{
+ return i;
+}
+
+class ResultReadyTester : public QObject
+{
+Q_OBJECT
+public:
+ ResultReadyTester(QFutureWatcher<int> *watcher)
+ :m_watcher(watcher), filter(false), ok(true), count(0)
+ {
+
+ }
+public slots:
+ void resultReadyAt(int index)
+ {
+ ++count;
+ if (m_watcher->future().isResultReadyAt(index) == false)
+ ok = false;
+ if (!filter && m_watcher->future().resultAt(index) != index)
+ ok = false;
+ if (filter && m_watcher->future().resultAt(index) != index * 2 + 1)
+ ok = false;
+ }
+public:
+ QFutureWatcher<int> *m_watcher;
+ bool filter;
+ bool ok;
+ int count;
+};
+
+void tst_QFutureWatcher::incrementalMapResults()
+{
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+#ifdef PRINT
+ connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
+ connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+#endif
+
+ QObject::connect(&watcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ ResultReadyTester resultReadyTester(&watcher);
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &resultReadyTester, SLOT(resultReadyAt(int)));
+
+ const int count = 10000;
+ QList<int> ints;
+ for (int i = 0; i < count; ++i)
+ ints << i;
+
+ QFuture<int> future = QtConcurrent::mapped(ints, mapper);
+ watcher.setFuture(future);
+
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QCOMPARE(resultReadyTester.count, count);
+ QVERIFY(resultReadyTester.ok);
+ QVERIFY(watcher.isFinished());
+ future.waitForFinished();
+}
+
+bool filterer(int i)
+{
+ return (i % 2);
+}
+
+void tst_QFutureWatcher::incrementalFilterResults()
+{
+ QFutureWatcher<int> watcher;
+
+ SignalSlotObject object;
+#ifdef PRINT
+ connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
+ connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
+#endif
+
+ QObject::connect(&watcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+
+ ResultReadyTester resultReadyTester(&watcher);
+ resultReadyTester.filter = true;
+ connect(&watcher, SIGNAL(resultReadyAt(int)), &resultReadyTester, SLOT(resultReadyAt(int)));
+
+ const int count = 10000;
+ QList<int> ints;
+ for (int i = 0; i < count; ++i)
+ ints << i;
+
+ QFuture<int> future = QtConcurrent::filtered(ints, filterer);
+ watcher.setFuture(future);
+
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QCOMPARE(resultReadyTester.count, count / 2);
+ QVERIFY(resultReadyTester.ok);
+ QVERIFY(watcher.isFinished());
+ future.waitForFinished();
+}
+
+void tst_QFutureWatcher::qfutureSynchronizer()
+{
+ int taskCount = 1000;
+ QTime t;
+ t.start();
+
+ {
+ QFutureSynchronizer<void> sync;
+
+ sync.setCancelOnWait(true);
+ for (int i = 0; i < taskCount; ++i) {
+ sync.addFuture(run(sleeper));
+ }
+ }
+
+ // Test that we're not running each task.
+ QVERIFY(t.elapsed() < taskCount * 10);
+}
+
+class DummyObject : public QObject {
+ Q_OBJECT
+public slots:
+ void dummySlot() {}
+public:
+ static void function(QMutex *m)
+ {
+ QMutexLocker lock(m);
+ }
+};
+
+void tst_QFutureWatcher::warnRace()
+{
+#ifndef Q_OS_MAC //I don't know why it is not working on mac
+#ifndef QT_NO_DEBUG
+ QTest::ignoreMessage(QtWarningMsg, "QFutureWatcher::connect: connecting after calling setFuture() is likely to produce race");
+#endif
+#endif
+ QFutureWatcher<void> watcher;
+ DummyObject object;
+ QMutex mutex;
+ mutex.lock();
+
+ QFuture<void> future = QtConcurrent::run(DummyObject::function, &mutex);
+ watcher.setFuture(future);
+ QTRY_VERIFY(future.isStarted());
+ connect(&watcher, SIGNAL(finished()), &object, SLOT(dummySlot()));
+ mutex.unlock();
+ future.waitForFinished();
+}
+
+QTEST_MAIN(tst_QFutureWatcher)
+#include "tst_qfuturewatcher.moc"
diff --git a/tests/auto/corelib/concurrent/qtconcurrentfilter/.gitignore b/tests/auto/concurrent/qtconcurrentfilter/.gitignore
index f93d27e009..f93d27e009 100644
--- a/tests/auto/corelib/concurrent/qtconcurrentfilter/.gitignore
+++ b/tests/auto/concurrent/qtconcurrentfilter/.gitignore
diff --git a/tests/auto/concurrent/qtconcurrentfilter/qtconcurrentfilter.pro b/tests/auto/concurrent/qtconcurrentfilter/qtconcurrentfilter.pro
new file mode 100644
index 0000000000..eb0c054f6f
--- /dev/null
+++ b/tests/auto/concurrent/qtconcurrentfilter/qtconcurrentfilter.pro
@@ -0,0 +1,7 @@
+CONFIG += testcase parallel_test
+TARGET = tst_qtconcurrentfilter
+QT = core testlib concurrent
+SOURCES = tst_qtconcurrentfilter.cpp
+DEFINES += QT_STRICT_ITERATORS
+
+CONFIG += insignificant_test # See QTBUG-20688
diff --git a/tests/auto/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp b/tests/auto/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp
new file mode 100644
index 0000000000..971a6992ff
--- /dev/null
+++ b/tests/auto/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp
@@ -0,0 +1,1543 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <qtconcurrentfilter.h>
+#include <QCoreApplication>
+#include <QList>
+#include <QLinkedList>
+#include <QtTest/QtTest>
+
+#include "../qtconcurrentmap/functions.h"
+
+class tst_QtConcurrentFilter : public QObject
+{
+ Q_OBJECT
+
+private slots:
+#ifdef QT_NO_CONCURRENT_FILTER
+ void initTestCase();
+#else
+ void filter();
+ void filtered();
+ void filteredReduced();
+ void resultAt();
+ void incrementalResults();
+ void noDetach();
+#ifndef QT_NO_STL
+ void stlContainers();
+#endif
+#endif
+};
+
+#ifdef QT_NO_CONCURRENT_FILTER
+void tst_QtConcurrentFilter::initTestCase()
+{
+ QSKIP("This test is skipped for gcc 3.x");
+}
+
+#else
+
+void tst_QtConcurrentFilter::filter()
+{
+ // functor
+ {
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(list, KeepEvenIntegers()).waitForFinished();
+ QCOMPARE(list, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(list, KeepEvenIntegers());
+ QCOMPARE(list, QList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(linkedList, KeepEvenIntegers()).waitForFinished();
+ QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(linkedList, KeepEvenIntegers());
+ QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QVector<int> vector;
+ vector << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(vector, KeepEvenIntegers()).waitForFinished();
+ QCOMPARE(vector, QVector<int>() << 2 << 4);
+ }
+ {
+ QVector<int> vector;
+ vector << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(vector, KeepEvenIntegers());
+ QCOMPARE(vector, QVector<int>() << 2 << 4);
+ }
+
+
+ // function
+ {
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(list, keepEvenIntegers).waitForFinished();
+ QCOMPARE(list, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(list, keepEvenIntegers);
+ QCOMPARE(list, QList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(linkedList, keepEvenIntegers).waitForFinished();
+ QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(linkedList, keepEvenIntegers);
+ QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
+ }
+
+ // bound function
+ {
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(list, keepEvenIntegers).waitForFinished();
+ QCOMPARE(list, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(list, keepEvenIntegers);
+ QCOMPARE(list, QList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(linkedList, keepEvenIntegers).waitForFinished();
+ QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(linkedList, keepEvenIntegers);
+ QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
+ }
+
+ // member
+ {
+ QList<Number> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(list, &Number::isEven).waitForFinished();
+ QCOMPARE(list, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> list;
+ list << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(list, &Number::isEven);
+ QCOMPARE(list, QList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::filter(linkedList, &Number::isEven).waitForFinished();
+ QCOMPARE(linkedList, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QtConcurrent::blockingFilter(linkedList, &Number::isEven);
+ QCOMPARE(linkedList, QLinkedList<Number>() << 2 << 4);
+ }
+}
+
+void tst_QtConcurrentFilter::filtered()
+{
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+
+ // functor
+ {
+ QFuture<int> f = QtConcurrent::filtered(list, KeepEvenIntegers());
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(list.begin(), list.end(), KeepEvenIntegers());
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers());
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered(list, KeepEvenIntegers());
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.begin(),
+ list.end(),
+ KeepEvenIntegers());
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers());
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+
+ {
+ QVector<int> vector;
+ vector << 1 << 2 << 3 << 4;
+ QVector<int> vector2 = QtConcurrent::blockingFiltered(vector, KeepEvenIntegers());
+ QCOMPARE(vector2, QVector<int>() << 2 << 4);
+ }
+ {
+ QVector<int> vector;
+ vector << 1 << 2 << 3 << 4;
+ QFuture<int> f = QtConcurrent::filtered(vector, KeepEvenIntegers());
+ QCOMPARE(f.results(), QList<int>() << 2 << 4);
+ }
+
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, KeepEvenIntegers());
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QFuture<int> f = QtConcurrent::filtered(linkedList, KeepEvenIntegers());
+ QCOMPARE(f.results(), QList<int>() << 2 << 4);
+ }
+
+ // function
+ {
+ QFuture<int> f = QtConcurrent::filtered(list, keepEvenIntegers);
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(list.begin(), list.end(), keepEvenIntegers);
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers);
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered(list, keepEvenIntegers);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.begin(),
+ list.end(),
+ keepEvenIntegers);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+
+ // bound function
+ {
+ QFuture<int> f = QtConcurrent::filtered(list, keepEvenIntegers);
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(list.begin(), list.end(), keepEvenIntegers);
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers);
+ QList<int> list2 = f.results();
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered(list, keepEvenIntegers);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.begin(),
+ list.end(),
+ keepEvenIntegers);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+
+ // const member function
+ {
+ QList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QFuture<Number> f = QtConcurrent::filtered(integers, &Number::isEven);
+ QList<Number> list2 = f.results();
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QFuture<Number> f = QtConcurrent::filtered(integers.begin(),
+ integers.end(),
+ &Number::isEven);
+ QList<Number> list2 = f.results();
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QFuture<Number> f = QtConcurrent::filtered(integers.constBegin(),
+ integers.constEnd(),
+ &Number::isEven);
+ QList<Number> list2 = f.results();
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::blockingFiltered(integers, &Number::isEven);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::blockingFiltered<QList<Number> >(integers.begin(),
+ integers.end(),
+ &Number::isEven);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QList<Number> list2 =
+ QtConcurrent::blockingFiltered<QList<Number> >(integers.constBegin(),
+ integers.constEnd(),
+ &Number::isEven);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+
+ // same thing on linked lists
+
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+
+ // functor
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList, KeepEvenIntegers());
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers());
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers());
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, KeepEvenIntegers());
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers());
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers());
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+
+ // function
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList, keepEvenIntegers);
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers);
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers);
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, keepEvenIntegers);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+
+ // bound function
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList, keepEvenIntegers);
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers);
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QFuture<int> f = QtConcurrent::filtered(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers);
+ QList<int> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, keepEvenIntegers);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+
+ // const member function
+ {
+ QLinkedList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QFuture<Number> f = QtConcurrent::filtered(integers, &Number::isEven);
+ QList<Number> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QFuture<Number> f = QtConcurrent::filtered(integers.begin(),
+ integers.end(),
+ &Number::isEven);
+ QList<Number> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QFuture<Number> f = QtConcurrent::filtered(integers.constBegin(),
+ integers.constEnd(),
+ &Number::isEven);
+ QList<Number> linkedList2 = f.results();
+ QCOMPARE(linkedList2, QList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::blockingFiltered(integers, &Number::isEven);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<Number> >(integers.begin(),
+ integers.end(),
+ &Number::isEven);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> integers;
+ integers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 =
+ QtConcurrent::blockingFiltered<QLinkedList<Number> >(integers.constBegin(),
+ integers.constEnd(),
+ &Number::isEven);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+}
+
+void tst_QtConcurrentFilter::filteredReduced()
+{
+ QList<int> list;
+ list << 1 << 2 << 3 << 4;
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3 << 4;
+
+ // functor-functor
+ {
+ int sum = QtConcurrent::filteredReduced<int>(list, KeepEvenIntegers(), IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(list, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ QVector<int> vector;
+ vector << 1 << 2 << 3 << 4;
+ int sum = QtConcurrent::filteredReduced<int>(vector, KeepEvenIntegers(), IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+
+ {
+ int sum = QtConcurrent::filteredReduced<int>(list.begin(),
+ list.end(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(list, KeepEvenIntegers(), IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(list, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(list.begin(),
+ list.end(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+
+ // function-functor
+ {
+ int sum = QtConcurrent::filteredReduced<int>(list, keepEvenIntegers, IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(list, keepEvenIntegers, IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+
+ // functor-function
+ {
+ int sum = QtConcurrent::filteredReduced(list, KeepEvenIntegers(), intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(list.begin(),
+ list.end(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(list, KeepEvenIntegers(), intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(list.begin(),
+ list.end(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+
+ // function-function
+ {
+ int sum = QtConcurrent::filteredReduced(list, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(list, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+
+ // functor-member
+ {
+ QList<int> list2 = QtConcurrent::filteredReduced(list, KeepEvenIntegers(), &QList<int>::push_back, QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::filteredReduced(list.begin(),
+ list.end(),
+ KeepEvenIntegers(),
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::filteredReduced(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers(),
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFilteredReduced(list, KeepEvenIntegers(), &QList<int>::push_back, QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.begin(),
+ list.end(),
+ KeepEvenIntegers(),
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.constBegin(),
+ list.constEnd(),
+ KeepEvenIntegers(),
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+
+ // member-functor
+ {
+ int sum = QtConcurrent::filteredReduced<int>(numberList, &Number::isEven, NumberSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(QList<Number>(numberList),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(numberList.begin(),
+ numberList.end(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(numberList, &Number::isEven, NumberSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(QList<Number>(numberList),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(numberList.begin(),
+ numberList.end(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+
+ // member-member
+ {
+ QList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::filteredReduced(numbers,
+ &Number::isEven,
+ &QList<Number>::push_back, QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::filteredReduced(numbers.begin(),
+ numbers.end(),
+ &Number::isEven,
+ &QList<Number>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::filteredReduced(numbers.constBegin(),
+ numbers.constEnd(),
+ &Number::isEven,
+ &QList<Number>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::blockingFilteredReduced(numbers,
+ &Number::isEven,
+ &QList<Number>::push_back, QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::blockingFilteredReduced(numbers.begin(),
+ numbers.end(),
+ &Number::isEven,
+ &QList<Number>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+ {
+ QList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QList<Number> list2 = QtConcurrent::blockingFilteredReduced(numbers.constBegin(),
+ numbers.constEnd(),
+ &Number::isEven,
+ &QList<Number>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<Number>() << 2 << 4);
+ }
+
+ // function-member
+ {
+ QList<int> list2 = QtConcurrent::filteredReduced(list, keepEvenIntegers, &QList<int>::push_back, QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::filteredReduced(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::filteredReduced(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFilteredReduced(list, keepEvenIntegers, &QList<int>::push_back, QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.begin(),
+ list.end(),
+ keepEvenIntegers,
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+ {
+ QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.constBegin(),
+ list.constEnd(),
+ keepEvenIntegers,
+ &QList<int>::push_back,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 2 << 4);
+ }
+
+ // member-function
+ {
+ int sum = QtConcurrent::filteredReduced(numberList, &Number::isEven, numberSumReduce);
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced(QList<Number>(numberList),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(numberList.begin(),
+ numberList.end(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(numberList, &Number::isEven, numberSumReduce);
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced(QList<Number>(numberList),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(numberList.begin(),
+ numberList.end(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+
+ // same as above on linked lists
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3 << 4;
+ QLinkedList<Number> numberLinkedList;
+ numberLinkedList << 1 << 2 << 3 << 4;
+
+ // functor-functor
+ {
+ int sum = QtConcurrent::filteredReduced<int>(linkedList, KeepEvenIntegers(), IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(linkedList, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList, KeepEvenIntegers(), IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(linkedList, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers(),
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+
+ // function-functor
+ {
+ int sum = QtConcurrent::filteredReduced<int>(linkedList, keepEvenIntegers, IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList, keepEvenIntegers, IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ }
+
+ // functor-function
+ {
+ int sum = QtConcurrent::filteredReduced(linkedList, KeepEvenIntegers(), intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(linkedList, KeepEvenIntegers(), intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers(),
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+
+ // function-function
+ {
+ int sum = QtConcurrent::filteredReduced(linkedList, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(linkedList, keepEvenIntegers, intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ }
+
+ // functor-member
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList, KeepEvenIntegers(), &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers(),
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers(),
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList, KeepEvenIntegers(), &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
+ linkedList.end(),
+ KeepEvenIntegers(),
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ KeepEvenIntegers(),
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+
+ // member-functor
+ {
+ int sum = QtConcurrent::filteredReduced<int>(numberLinkedList, &Number::isEven, NumberSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced<int>(QLinkedList<Number>(numberLinkedList),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(numberLinkedList.begin(),
+ numberLinkedList.end(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced<int>(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(numberLinkedList, &Number::isEven, NumberSumReduce());
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced<int>(QLinkedList<Number>(numberLinkedList),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(numberLinkedList.begin(),
+ numberLinkedList.end(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced<int>(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::isEven,
+ NumberSumReduce());
+ QCOMPARE(sum, 6);
+ }
+
+ // member-member
+ {
+ QLinkedList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::filteredReduced(numbers,
+ &Number::isEven,
+ &QLinkedList<Number>::append, QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::filteredReduced(numbers.begin(),
+ numbers.end(),
+ &Number::isEven,
+ &QLinkedList<Number>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::filteredReduced(numbers.constBegin(),
+ numbers.constEnd(),
+ &Number::isEven,
+ &QLinkedList<Number>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::blockingFilteredReduced(numbers,
+ &Number::isEven,
+ &QLinkedList<Number>::append, QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::blockingFilteredReduced(numbers.begin(),
+ numbers.end(),
+ &Number::isEven,
+ &QLinkedList<Number>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+ {
+ QLinkedList<Number> numbers;
+ numbers << 1 << 2 << 3 << 4;
+ QLinkedList<Number> linkedList2 = QtConcurrent::blockingFilteredReduced(numbers.constBegin(),
+ numbers.constEnd(),
+ &Number::isEven,
+ &QLinkedList<Number>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
+ }
+
+ // function-member
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList, keepEvenIntegers, &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList, keepEvenIntegers, &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
+ linkedList.end(),
+ keepEvenIntegers,
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ keepEvenIntegers,
+ &QLinkedList<int>::append,
+ QtConcurrent::OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
+ }
+
+ // member-function
+ {
+ int sum = QtConcurrent::filteredReduced(numberLinkedList, &Number::isEven, numberSumReduce);
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::filteredReduced(QLinkedList<Number>(numberLinkedList),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(numberLinkedList.begin(),
+ numberLinkedList.end(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::filteredReduced(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(numberLinkedList, &Number::isEven, numberSumReduce);
+ QCOMPARE(sum, 6);
+
+ int sum2 = QtConcurrent::blockingFilteredReduced(QLinkedList<Number>(numberLinkedList),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum2, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(numberLinkedList.begin(),
+ numberLinkedList.end(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingFilteredReduced(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::isEven,
+ numberSumReduce);
+ QCOMPARE(sum, 6);
+ }
+
+ // ### the same as above, with an initial result value
+}
+
+bool filterfn(int i)
+{
+ return (i % 2);
+}
+
+void tst_QtConcurrentFilter::resultAt()
+{
+
+ QList<int> ints;
+ for (int i=0; i < 1000; ++i)
+ ints << i;
+
+ QFuture<int> future = QtConcurrent::filtered(ints, filterfn);
+ future.waitForFinished();
+
+
+ for (int i = 0; i < future.resultCount(); ++i) {
+ QCOMPARE(future.resultAt(i), ints.at(i * 2 + 1));
+ }
+
+}
+
+bool waitFilterfn(const int &i)
+{
+ QTest::qWait(1);
+ return (i % 2);
+}
+
+void tst_QtConcurrentFilter::incrementalResults()
+{
+ const int count = 200;
+ QList<int> ints;
+ for (int i=0; i < count; ++i)
+ ints << i;
+
+ QFuture<int> future = QtConcurrent::filtered(ints, waitFilterfn);
+
+ QList<int> results;
+
+ while (future.isFinished() == false) {
+ for (int i = 0; i < future.resultCount(); ++i) {
+ results += future.resultAt(i);
+ }
+ QTest::qWait(1);
+ }
+
+ QCOMPARE(future.isFinished(), true);
+ QCOMPARE(future.resultCount(), count / 2);
+ QCOMPARE(future.results().count(), count / 2);
+}
+
+void tst_QtConcurrentFilter::noDetach()
+{
+ {
+ QList<int> l = QList<int>() << 1;
+ QVERIFY(l.isDetached());
+
+ QList<int> ll = l;
+ QVERIFY(l.isDetached() == false);
+
+ QtConcurrent::filtered(l, waitFilterfn).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::blockingFiltered(l, waitFilterfn);
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::filteredReduced(l, waitFilterfn, intSumReduce).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::filter(l, waitFilterfn).waitForFinished();
+ QVERIFY(l.isDetached() == true);
+ QVERIFY(ll.isDetached() == true);
+ }
+ {
+ const QList<int> l = QList<int>() << 1;
+ QVERIFY(l.isDetached());
+
+ const QList<int> ll = l;
+ QVERIFY(l.isDetached() == false);
+
+ QtConcurrent::filtered(l, waitFilterfn).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::filteredReduced(l, waitFilterfn, intSumReduce).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+ }
+}
+
+#ifndef QT_NO_STL
+void tst_QtConcurrentFilter::stlContainers()
+{
+ std::vector<int> vector;
+ vector.push_back(1);
+ vector.push_back(2);
+
+ std::vector<int> vector2 = QtConcurrent::blockingFiltered(vector, waitFilterfn);
+ QCOMPARE(vector2.size(), (std::vector<int>::size_type)(1));
+ QCOMPARE(vector2[0], 1);
+
+ std::list<int> list;
+ list.push_back(1);
+ list.push_back(2);
+
+ std::list<int> list2 = QtConcurrent::blockingFiltered(list, waitFilterfn);
+ QCOMPARE(list2.size(), (std::list<int>::size_type)(1));
+ QCOMPARE(*list2.begin(), 1);
+
+ QtConcurrent::filtered(list, waitFilterfn).waitForFinished();
+ QtConcurrent::filtered(vector, waitFilterfn).waitForFinished();
+ QtConcurrent::filtered(vector.begin(), vector.end(), waitFilterfn).waitForFinished();
+
+ QtConcurrent::blockingFilter(list, waitFilterfn);
+ QCOMPARE(list2.size(), (std::list<int>::size_type)(1));
+ QCOMPARE(*list2.begin(), 1);
+}
+#endif
+
+#endif
+
+QTEST_MAIN(tst_QtConcurrentFilter)
+#include "tst_qtconcurrentfilter.moc"
diff --git a/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/.gitignore b/tests/auto/concurrent/qtconcurrentiteratekernel/.gitignore
index ac5dec4db6..ac5dec4db6 100644
--- a/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/.gitignore
+++ b/tests/auto/concurrent/qtconcurrentiteratekernel/.gitignore
diff --git a/tests/auto/concurrent/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro b/tests/auto/concurrent/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro
new file mode 100644
index 0000000000..4cfebc0e3d
--- /dev/null
+++ b/tests/auto/concurrent/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro
@@ -0,0 +1,4 @@
+CONFIG += testcase parallel_test
+TARGET = tst_qtconcurrentiteratekernel
+QT = core testlib concurrent
+SOURCES = tst_qtconcurrentiteratekernel.cpp
diff --git a/tests/auto/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp b/tests/auto/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp
new file mode 100644
index 0000000000..46562b5eb0
--- /dev/null
+++ b/tests/auto/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp
@@ -0,0 +1,310 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <QThread>
+
+struct TestIterator
+{
+ TestIterator(int i)
+ :i(i) { }
+
+ int operator-(const TestIterator &other)
+ {
+ return i - other.i;
+ }
+
+ TestIterator& operator++()
+ {
+ ++i;
+ return *this;
+ }
+
+ bool operator!=(const TestIterator &other) const
+ {
+ return i != other.i;
+ }
+
+ int i;
+};
+
+#include <qiterator.h>
+#ifndef QT_NO_STL
+namespace std {
+template <>
+struct iterator_traits<TestIterator>
+{
+ typedef random_access_iterator_tag iterator_category;
+};
+
+int distance(TestIterator &a, TestIterator &b)
+{
+ return b - a;
+}
+
+}
+#endif
+
+#include <qtconcurrentiteratekernel.h>
+#include <QtTest/QtTest>
+
+using namespace QtConcurrent;
+
+class tst_QtConcurrentIterateKernel: public QObject
+{
+ Q_OBJECT
+private slots:
+ // "for" iteration tests:
+ void instantiate();
+ void cancel();
+ void stresstest();
+ void noIterations();
+ void throttling();
+#ifndef QT_NO_STL
+ void blockSize();
+ void multipleResults();
+#endif
+};
+
+QAtomicInt iterations;
+class PrintFor : public IterateKernel<TestIterator, void>
+{
+public:
+ PrintFor(TestIterator begin, TestIterator end) : IterateKernel<TestIterator, void>(begin, end) { iterations.store(0); }
+ bool runIterations(TestIterator/*beginIterator*/, int begin, int end, void *)
+ {
+ iterations.fetchAndAddRelaxed(end - begin);
+#ifdef PRINT
+ qDebug() << QThread::currentThread() << "iteration" << begin << "to" << end << "(exclusive)";
+#endif
+ return false;
+ }
+ bool runIteration(TestIterator it, int index , void *result)
+ {
+ return runIterations(it, index, index + 1, result);
+ }
+
+};
+
+class SleepPrintFor : public IterateKernel<TestIterator, void>
+{
+public:
+ SleepPrintFor(TestIterator begin, TestIterator end) : IterateKernel<TestIterator, void>(begin, end) { iterations.store(0); }
+ inline bool runIterations(TestIterator/*beginIterator*/, int begin, int end, void *)
+ {
+ QTest::qSleep(200);
+ iterations.fetchAndAddRelaxed(end - begin);
+#ifdef PRINT
+ qDebug() << QThread::currentThread() << "iteration" << begin << "to" << end << "(exclusive)";
+#endif
+ return false;
+ }
+ bool runIteration(TestIterator it, int index , void *result)
+ {
+ return runIterations(it, index, index + 1, result);
+ }
+};
+
+
+void tst_QtConcurrentIterateKernel::instantiate()
+{
+ startThreadEngine(new PrintFor(0, 40)).startBlocking();
+ QCOMPARE(iterations.load(), 40);
+}
+
+void tst_QtConcurrentIterateKernel::cancel()
+{
+ {
+ QFuture<void> f = startThreadEngine(new SleepPrintFor(0, 40)).startAsynchronously();
+ f.cancel();
+ f.waitForFinished();
+ QVERIFY(f.isCanceled());
+ QVERIFY(iterations.load() <= QThread::idealThreadCount()); // the threads might run one iteration each before they are canceled.
+ }
+}
+
+QAtomicInt counter;
+class CountFor : public IterateKernel<TestIterator, void>
+{
+public:
+ CountFor(TestIterator begin, TestIterator end) : IterateKernel<TestIterator, void>(begin, end) { iterations.store(0); }
+ inline bool runIterations(TestIterator/*beginIterator*/, int begin, int end, void *)
+ {
+ counter.fetchAndAddRelaxed(end - begin);
+ return false;
+ }
+ bool runIteration(TestIterator it, int index , void *result)
+ {
+ return runIterations(it, index, index + 1, result);
+ }
+};
+
+void tst_QtConcurrentIterateKernel::stresstest()
+{
+ const int iterations = 1000;
+ const int times = 50;
+ for (int i = 0; i < times; ++i) {
+ counter.store(0);
+ CountFor f(0, iterations);
+ f.startBlocking();
+ QCOMPARE(counter.load(), iterations);
+ }
+}
+
+void tst_QtConcurrentIterateKernel::noIterations()
+{
+ const int times = 20000;
+ for (int i = 0; i < times; ++i)
+ startThreadEngine(new IterateKernel<TestIterator, void>(0, 0)).startBlocking();
+}
+
+QMutex threadsMutex;
+QSet<QThread *> threads;
+class ThrottleFor : public IterateKernel<TestIterator, void>
+{
+public:
+ // this class throttles between iterations 100 and 200,
+ // and then records how many threads that run between
+ // iterations 140 and 160.
+ ThrottleFor(TestIterator begin, TestIterator end) : IterateKernel<TestIterator, void>(begin, end) { iterations.store(0); throttling = false; }
+ inline bool runIterations(TestIterator/*beginIterator*/, int begin, int end, void *)
+ {
+ if (200 >= begin && 200 < end) {
+ throttling = false;
+ }
+
+ iterations.fetchAndAddRelaxed(end - begin);
+
+ QThread *thread = QThread::currentThread();
+
+ if (begin > 140 && end < 160) {
+ QMutexLocker locker(&threadsMutex);
+ threads.insert(thread);
+ }
+
+ if (100 >= begin && 100 < end) {
+ throttling = true;
+ }
+
+ QTest::qWait(1);
+
+ return false;
+ }
+ bool runIteration(TestIterator it, int index , void *result)
+ {
+ return runIterations(it, index, index + 1, result);
+ }
+
+ bool shouldThrottleThread()
+ {
+ const int load = iterations.load();
+ return (load > 100 && load < 200);
+ }
+ bool throttling;
+};
+
+void tst_QtConcurrentIterateKernel::throttling()
+{
+ const int totalIterations = 400;
+ iterations.store(0);
+
+ threads.clear();
+
+ ThrottleFor f(0, totalIterations);
+ f.startBlocking();
+
+ QCOMPARE(iterations.load(), totalIterations);
+
+
+ QCOMPARE(threads.count(), 1);
+}
+
+
+int peakBlockSize = 0;
+class BlockSizeRecorder : public IterateKernel<TestIterator, void>
+{
+public:
+ BlockSizeRecorder(TestIterator begin, TestIterator end) : IterateKernel<TestIterator, void>(begin, end) { }
+ inline bool runIterations(TestIterator, int begin, int end, void *)
+ {
+ peakBlockSize = qMax(peakBlockSize, end - begin);
+ return false;
+ }
+};
+
+// Missing stl iterators prevent correct block size calculation.
+#ifndef QT_NO_STL
+void tst_QtConcurrentIterateKernel::blockSize()
+{
+ const int expectedMinimumBlockSize = 1024 / QThread::idealThreadCount();
+ BlockSizeRecorder(0, 10000).startBlocking();
+ if (peakBlockSize < expectedMinimumBlockSize)
+ qDebug() << "block size" << peakBlockSize;
+ QVERIFY(peakBlockSize >= expectedMinimumBlockSize);
+}
+#endif
+
+class MultipleResultsFor : public IterateKernel<TestIterator, int>
+{
+public:
+ MultipleResultsFor(TestIterator begin, TestIterator end) : IterateKernel<TestIterator, int>(begin, end) { }
+ inline bool runIterations(TestIterator, int begin, int end, int *results)
+ {
+ for (int i = begin; i < end; ++i)
+ results[i - begin] = i;
+ return true;
+ }
+};
+
+// Missing stl iterators prevent correct summation.
+#ifndef QT_NO_STL
+void tst_QtConcurrentIterateKernel::multipleResults()
+{
+ QFuture<int> f = startThreadEngine(new MultipleResultsFor(0, 10)).startAsynchronously();
+ QCOMPARE(f.results().count() , 10);
+ QCOMPARE(f.resultAt(0), 0);
+ QCOMPARE(f.resultAt(5), 5);
+ QCOMPARE(f.resultAt(9), 9);
+ f.waitForFinished();
+}
+#endif
+
+QTEST_MAIN(tst_QtConcurrentIterateKernel)
+
+#include "tst_qtconcurrentiteratekernel.moc"
diff --git a/tests/auto/corelib/concurrent/qtconcurrentmap/.gitignore b/tests/auto/concurrent/qtconcurrentmap/.gitignore
index f1c563e979..f1c563e979 100644
--- a/tests/auto/corelib/concurrent/qtconcurrentmap/.gitignore
+++ b/tests/auto/concurrent/qtconcurrentmap/.gitignore
diff --git a/tests/auto/concurrent/qtconcurrentmap/functions.h b/tests/auto/concurrent/qtconcurrentmap/functions.h
new file mode 100644
index 0000000000..f5963db904
--- /dev/null
+++ b/tests/auto/concurrent/qtconcurrentmap/functions.h
@@ -0,0 +1,130 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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$
+**
+****************************************************************************/
+#ifndef FUNCTIONS_H
+#define FUNCTIONS_H
+
+bool keepEvenIntegers(const int &x)
+{
+ return (x & 1) == 0;
+}
+
+class KeepEvenIntegers
+{
+public:
+ bool operator()(const int &x)
+ {
+ return (x & 1) == 0;
+ }
+};
+
+class Number
+{
+ int n;
+
+public:
+ Number()
+ : n(0)
+ { }
+
+ Number(int n)
+ : n(n)
+ { }
+
+ void multiplyBy2()
+ {
+ n *= 2;
+ }
+
+ Number multipliedBy2() const
+ {
+ return n * 2;
+ }
+
+ bool isEven() const
+ {
+ return (n & 1) == 0;
+ }
+
+ int toInt() const
+ {
+ return n;
+ }
+
+ QString toString() const
+ {
+ return QString::number(n);
+ }
+
+ bool operator==(const Number &other) const
+ {
+ return n == other.n;
+ }
+};
+
+void intSumReduce(int &sum, int x)
+{
+ sum += x;
+}
+
+class IntSumReduce
+{
+public:
+ void operator()(int &sum, int x)
+ {
+ sum += x;
+ }
+};
+
+void numberSumReduce(int &sum, const Number &x)
+{
+ sum += x.toInt();
+}
+
+class NumberSumReduce
+{
+public:
+ void operator()(int &sum, const Number &x)
+ {
+ sum += x.toInt();
+ }
+};
+
+#endif
diff --git a/tests/auto/concurrent/qtconcurrentmap/qtconcurrentmap.pro b/tests/auto/concurrent/qtconcurrentmap/qtconcurrentmap.pro
new file mode 100644
index 0000000000..199e5ad4d6
--- /dev/null
+++ b/tests/auto/concurrent/qtconcurrentmap/qtconcurrentmap.pro
@@ -0,0 +1,5 @@
+CONFIG += testcase parallel_test
+TARGET = tst_qtconcurrentmap
+QT = core testlib concurrent
+SOURCES = tst_qtconcurrentmap.cpp
+DEFINES += QT_STRICT_ITERATORS
diff --git a/tests/auto/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp b/tests/auto/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp
new file mode 100644
index 0000000000..960511d87b
--- /dev/null
+++ b/tests/auto/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp
@@ -0,0 +1,2426 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <qtconcurrentmap.h>
+#include <qtconcurrentexception.h>
+
+#include <qdebug.h>
+#include <QThread>
+
+#include <QtTest/QtTest>
+
+#include "functions.h"
+
+Q_DECLARE_METATYPE(QVector<int>);
+Q_DECLARE_METATYPE(QVector<double>);
+Q_DECLARE_METATYPE(QVector<QString>);
+Q_DECLARE_METATYPE(QList<int>);
+Q_DECLARE_METATYPE(QList<double>);
+Q_DECLARE_METATYPE(QList<QString>);
+
+class tst_QtConcurrentMap: public QObject
+{
+ Q_OBJECT
+private slots:
+#ifdef QT_NO_CONCURRENT_MAP
+ void initTestCase()
+#else
+ void map();
+ void blocking_map();
+ void mapped();
+ void blocking_mapped();
+ void mappedReduced();
+ void blocking_mappedReduced();
+ void assignResult();
+ void functionOverloads();
+#ifndef QT_NO_EXCEPTIONS
+ void exceptions();
+#endif
+ void incrementalResults();
+ void noDetach();
+#ifndef QT_NO_STL
+ void stlContainers();
+#endif
+ void qFutureAssignmentLeak();
+ void stressTest();
+public slots:
+ void throttling();
+#endif
+};
+
+#ifdef QT_NO_CONCURRENT_FILTER
+void tst_QtConcurrentFilter::initTestCase()
+{
+ QSKIP("This test is skipped for gcc 3.x");
+}
+
+#else
+
+using namespace QtConcurrent;
+
+void multiplyBy2Immutable(int x)
+{
+ x *= 2;
+}
+
+class MultiplyBy2Immutable
+{
+public:
+ void operator()(int x)
+ {
+ x *= 2;
+ }
+};
+
+void multiplyBy2InPlace(int &x)
+{
+ x *= 2;
+}
+
+class MultiplyBy2InPlace
+{
+public:
+ void operator()(int &x)
+ {
+ x *= 2;
+ }
+};
+
+Q_DECLARE_METATYPE(QList<Number>);
+
+void tst_QtConcurrentMap::map()
+{
+ // functors take arguments by reference, modifying the sequence in place
+ {
+ QList<int> list;
+ list << 1 << 2 << 3;
+
+ // functor
+ QtConcurrent::map(list, MultiplyBy2InPlace()).waitForFinished();
+ QCOMPARE(list, QList<int>() << 2 << 4 << 6);
+ QtConcurrent::map(list.begin(), list.end(), MultiplyBy2InPlace()).waitForFinished();
+ QCOMPARE(list, QList<int>() << 4 << 8 << 12);
+
+ // function
+ QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QList<int>() << 8 << 16 << 24);
+ QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QList<int>() << 16 << 32 << 48);
+
+ // bound function
+ QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QList<int>() << 32 << 64 << 96);
+ QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QList<int>() << 64 << 128 << 192);
+
+ // member function
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QtConcurrent::map(numberList, &Number::multiplyBy2).waitForFinished();
+ QCOMPARE(numberList, QList<Number>() << 2 << 4 << 6);
+ QtConcurrent::map(numberList.begin(), numberList.end(), &Number::multiplyBy2).waitForFinished();
+ QCOMPARE(numberList, QList<Number>() << 4 << 8 << 12);
+
+#ifdef Q_COMPILER_LAMBDA
+ // lambda
+ QtConcurrent::map(list, [](int &x){x *= 2;}).waitForFinished();
+ QCOMPARE(list, QList<int>() << 128 << 256 << 384);
+ QtConcurrent::map(list.begin(), list.end(), [](int &x){x *= 2;}).waitForFinished();
+ QCOMPARE(list, QList<int>() << 256 << 512 << 768);
+#endif
+
+ }
+
+ // functors don't take arguments by reference, making these no-ops
+ {
+ QList<int> list;
+ list << 1 << 2 << 3;
+
+ // functor
+ QtConcurrent::map(list, MultiplyBy2Immutable()).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::map(list.begin(), list.end(), MultiplyBy2Immutable()).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ // function
+ QtConcurrent::map(list, multiplyBy2Immutable).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::map(list.begin(), list.end(), multiplyBy2Immutable).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ // bound function
+ QtConcurrent::map(list, multiplyBy2Immutable).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::map(list.begin(), list.end(), multiplyBy2Immutable).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+#ifdef Q_COMPILER_LAMBDA
+ // lambda
+ QtConcurrent::map(list, [](int x){x *= 2;}).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::map(list.begin(), list.end(), [](int x){x *= 2;}).waitForFinished();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+#endif
+ }
+
+ // Linked lists and forward iterators
+ {
+ QLinkedList<int> list;
+ list << 1 << 2 << 3;
+
+ // functor
+ QtConcurrent::map(list, MultiplyBy2InPlace()).waitForFinished();
+ QCOMPARE(list, QLinkedList<int>() << 2 << 4 << 6);
+ QtConcurrent::map(list.begin(), list.end(), MultiplyBy2InPlace()).waitForFinished();
+ QCOMPARE(list, QLinkedList<int>() << 4 << 8 << 12);
+
+ // function
+ QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QLinkedList<int>() << 8 << 16 << 24);
+ QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QLinkedList<int>() << 16 << 32 << 48);
+
+ // bound function
+ QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QLinkedList<int>() << 32 << 64 << 96);
+ QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
+ QCOMPARE(list, QLinkedList<int>() << 64 << 128 << 192);
+
+ // member function
+ QLinkedList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QtConcurrent::map(numberList, &Number::multiplyBy2).waitForFinished();
+ QCOMPARE(numberList, QLinkedList<Number>() << 2 << 4 << 6);
+ QtConcurrent::map(numberList.begin(), numberList.end(), &Number::multiplyBy2).waitForFinished();
+ QCOMPARE(numberList, QLinkedList<Number>() << 4 << 8 << 12);
+ }
+
+#if 0
+ // not allowed: map() with immutable sequences makes no sense
+ {
+ const QList<int> list = QList<int>() << 1 << 2 << 3;
+
+ QtConcurrent::map(list, MultiplyBy2Immutable());
+ QtConcurrent::map(list, multiplyBy2Immutable);
+ QtConcurrent::map(list, multiplyBy2Immutable);
+ }
+#endif
+
+#if 0
+ // not allowed: in place modification of a temp copy (since temp copy goes out of scope)
+ {
+ QList<int> list;
+ list << 1 << 2 << 3;
+
+ QtConcurrent::map(QList<int>(list), MultiplyBy2InPlace());
+ QtConcurrent::map(QList<int>(list), multiplyBy2);
+ QtConcurrent::map(QList<int>(list), multiplyBy2InPlace);
+
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QtConcurrent::map(QList<Number>(numberList), &Number::multiplyBy2);
+ }
+#endif
+
+#if 0
+ // not allowed: map() on a const list, where functors try to modify the items in the list
+ {
+ const QList<int> list = QList<int>() << 1 << 2 << 3;;
+
+ QtConcurrent::map(list, MultiplyBy2InPlace());
+ QtConcurrent::map(list, multiplyBy2InPlace);
+ QtConcurrent::map(list, multiplyBy2InPlace);
+
+ const QList<Number> numberList = QList<Number>() << 1 << 2 << 3;
+ QtConcurrent::map(numberList, &Number::multiplyBy2);
+ }
+#endif
+}
+
+void tst_QtConcurrentMap::blocking_map()
+{
+ // functors take arguments by reference, modifying the sequence in place
+ {
+ QList<int> list;
+ list << 1 << 2 << 3;
+
+ // functor
+ QtConcurrent::blockingMap(list, MultiplyBy2InPlace());
+ QCOMPARE(list, QList<int>() << 2 << 4 << 6);
+ QtConcurrent::blockingMap(list.begin(), list.end(), MultiplyBy2InPlace());
+ QCOMPARE(list, QList<int>() << 4 << 8 << 12);
+
+ // function
+ QtConcurrent::blockingMap(list, multiplyBy2InPlace);
+ QCOMPARE(list, QList<int>() << 8 << 16 << 24);
+ QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
+ QCOMPARE(list, QList<int>() << 16 << 32 << 48);
+
+ // bound function
+ QtConcurrent::blockingMap(list, multiplyBy2InPlace);
+ QCOMPARE(list, QList<int>() << 32 << 64 << 96);
+ QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
+ QCOMPARE(list, QList<int>() << 64 << 128 << 192);
+
+ // member function
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QtConcurrent::blockingMap(numberList, &Number::multiplyBy2);
+ QCOMPARE(numberList, QList<Number>() << 2 << 4 << 6);
+ QtConcurrent::blockingMap(numberList.begin(), numberList.end(), &Number::multiplyBy2);
+ QCOMPARE(numberList, QList<Number>() << 4 << 8 << 12);
+ }
+
+ // functors don't take arguments by reference, making these no-ops
+ {
+ QList<int> list;
+ list << 1 << 2 << 3;
+
+ // functor
+ QtConcurrent::blockingMap(list, MultiplyBy2Immutable());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::blockingMap(list.begin(), list.end(), MultiplyBy2Immutable());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ // function
+ QtConcurrent::blockingMap(list, multiplyBy2Immutable);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2Immutable);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ // bound function
+ QtConcurrent::blockingMap(list, multiplyBy2Immutable);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2Immutable);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ }
+
+ // Linked lists and forward iterators
+ {
+ QLinkedList<int> list;
+ list << 1 << 2 << 3;
+
+ // functor
+ QtConcurrent::blockingMap(list, MultiplyBy2InPlace());
+ QCOMPARE(list, QLinkedList<int>() << 2 << 4 << 6);
+ QtConcurrent::blockingMap(list.begin(), list.end(), MultiplyBy2InPlace());
+ QCOMPARE(list, QLinkedList<int>() << 4 << 8 << 12);
+
+ // function
+ QtConcurrent::blockingMap(list, multiplyBy2InPlace);
+ QCOMPARE(list, QLinkedList<int>() << 8 << 16 << 24);
+ QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
+ QCOMPARE(list, QLinkedList<int>() << 16 << 32 << 48);
+
+ // bound function
+ QtConcurrent::blockingMap(list, multiplyBy2InPlace);
+ QCOMPARE(list, QLinkedList<int>() << 32 << 64 << 96);
+ QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
+ QCOMPARE(list, QLinkedList<int>() << 64 << 128 << 192);
+
+ // member function
+ QLinkedList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QtConcurrent::blockingMap(numberList, &Number::multiplyBy2);
+ QCOMPARE(numberList, QLinkedList<Number>() << 2 << 4 << 6);
+ QtConcurrent::blockingMap(numberList.begin(), numberList.end(), &Number::multiplyBy2);
+ QCOMPARE(numberList, QLinkedList<Number>() << 4 << 8 << 12);
+ }
+
+#if 0
+ // not allowed: map() with immutable sequences makes no sense
+ {
+ const QList<int> list = QList<int>() << 1 << 2 << 3;
+
+ QtConcurrent::blockingMap(list, MultiplyBy2Immutable());
+ QtConcurrent::blockkng::map(list, multiplyBy2Immutable);
+ QtConcurrent::blockingMap(list, multiplyBy2Immutable);
+ }
+#endif
+
+#if 0
+ // not allowed: in place modification of a temp copy (since temp copy goes out of scope)
+ {
+ QList<int> list;
+ list << 1 << 2 << 3;
+
+ QtConcurrent::blockingMap(QList<int>(list), MultiplyBy2InPlace());
+ QtConcurrent::blockingMap(QList<int>(list), multiplyBy2);
+ QtConcurrent::blockingMap(QList<int>(list), multiplyBy2InPlace);
+
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QtConcurrent::blockingMap(QList<Number>(numberList), &Number::multiplyBy2);
+ }
+#endif
+
+#if 0
+ // not allowed: map() on a const list, where functors try to modify the items in the list
+ {
+ const QList<int> list = QList<int>() << 1 << 2 << 3;;
+
+ QtConcurrent::blockingMap(list, MultiplyBy2InPlace());
+ QtConcurrent::blockingMap(list, multiplyBy2InPlace);
+ QtConcurrent::blockingMap(list, multiplyBy2InPlace);
+
+ const QList<Number> numberList = QList<Number>() << 1 << 2 << 3;
+ QtConcurrent::blockingMap(numberList, &Number::multiplyBy2);
+ }
+#endif
+}
+
+int multiplyBy2(int x)
+{
+ int y = x * 2;
+ return y;
+}
+
+class MultiplyBy2
+{
+public:
+ typedef int result_type;
+
+ int operator()(int x) const
+ {
+ int y = x * 2;
+ return y;
+ }
+};
+
+double intToDouble(int x)
+{
+ return double(x);
+}
+
+class IntToDouble
+{
+public:
+ typedef double result_type;
+
+ double operator()(int x) const
+ {
+ return double(x);
+ }
+};
+
+int stringToInt(const QString &string)
+{
+ return string.toInt();
+}
+
+class StringToInt
+{
+public:
+ typedef int result_type;
+
+ int operator()(const QString &string) const
+ {
+ return string.toInt();
+ }
+};
+
+void tst_QtConcurrentMap::mapped()
+{
+ QList<int> list;
+ list << 1 << 2 << 3;
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3;
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QLinkedList<Number> numberLinkedList;
+ numberLinkedList << 1 << 2 << 3;
+
+ // functor
+ {
+ QList<int> list2 = QtConcurrent::mapped(list, MultiplyBy2()).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::mapped(list.constBegin(),
+ list.constEnd(),
+ MultiplyBy2()).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::mapped(QList<int>(list), MultiplyBy2()).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+ {
+ QList<int> list2 = QtConcurrent::mapped(linkedList, MultiplyBy2()).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::mapped(linkedList.constBegin(),
+ linkedList.constEnd(),
+ MultiplyBy2()).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 =
+ QtConcurrent::mapped(QLinkedList<int>(linkedList), MultiplyBy2()).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+
+ // function
+ {
+ QList<int> list2 = QtConcurrent::mapped(list, multiplyBy2).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::mapped(list.constBegin(),
+ list.constEnd(),
+ multiplyBy2).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::mapped(QList<int>(list), multiplyBy2).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+ {
+ QList<int> list2 = QtConcurrent::mapped(linkedList, multiplyBy2).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::mapped(linkedList.constBegin(),
+ linkedList.constEnd(),
+ multiplyBy2).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 =
+ QtConcurrent::mapped(QLinkedList<int>(linkedList), multiplyBy2).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+
+ // bound function
+ {
+ QList<int> list2 = QtConcurrent::mapped(list, multiplyBy2).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::mapped(list.constBegin(),
+ list.constEnd(),
+ multiplyBy2).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::mapped(QList<int>(list), multiplyBy2).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+ {
+ QList<int> list2 = QtConcurrent::mapped(linkedList, multiplyBy2).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::mapped(linkedList.constBegin(),
+ linkedList.constEnd(),
+ multiplyBy2)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList), multiplyBy2)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+
+ // const member function
+ {
+ QList<Number> numberList2 = QtConcurrent::mapped(numberList, &Number::multipliedBy2)
+ .results();
+ QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList2, QList<Number>() << 2 << 4 << 6);
+
+ QList<Number> numberList3 = QtConcurrent::mapped(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::multipliedBy2)
+ .results();
+ QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList3, QList<Number>() << 2 << 4 << 6);
+
+ QList<Number> numberList4 = QtConcurrent::mapped(QList<Number>(numberList),
+ &Number::multipliedBy2)
+ .results();
+ QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList4, QList<Number>() << 2 << 4 << 6);
+ }
+ {
+ QList<Number> numberList2 = QtConcurrent::mapped(numberLinkedList, &Number::multipliedBy2)
+ .results();
+ QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList2, QList<Number>() << 2 << 4 << 6);
+
+ QList<Number> numberList3 = QtConcurrent::mapped(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::multipliedBy2)
+ .results();
+ QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList3, QList<Number>() << 2 << 4 << 6);
+
+ QList<Number> numberList4 = QtConcurrent::mapped(QLinkedList<Number>(numberLinkedList),
+ &Number::multipliedBy2)
+ .results();
+ QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList4, QList<Number>() << 2 << 4 << 6);
+ }
+
+ // change the value_type, same container
+
+ // functor
+ {
+ QList<double> list2 = QtConcurrent::mapped(list, IntToDouble()).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::mapped(list.constBegin(),
+ list.constEnd(),
+ IntToDouble())
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list4 = QtConcurrent::mapped(QList<int>(list),
+ IntToDouble())
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+ {
+ QList<double> list2 = QtConcurrent::mapped(linkedList, IntToDouble()).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::mapped(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntToDouble())
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList),
+ IntToDouble())
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+
+ // function
+ {
+ QList<double> list2 = QtConcurrent::mapped(list, intToDouble).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::mapped(list.constBegin(),
+ list.constEnd(),
+ intToDouble)
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list4 = QtConcurrent::mapped(QList<int>(list), intToDouble).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+ {
+ QList<double> list2 = QtConcurrent::mapped(linkedList, intToDouble).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::mapped(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intToDouble)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList), intToDouble)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+
+ // bound function
+ {
+ QList<double> list2 = QtConcurrent::mapped(list, intToDouble).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::mapped(list.constBegin(),
+ list.constEnd(),
+ intToDouble)
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+
+ QList<double> list4 = QtConcurrent::mapped(QList<int>(list),
+ intToDouble)
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+ {
+ QList<double> list2 = QtConcurrent::mapped(linkedList, intToDouble).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::mapped(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intToDouble)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+
+ QList<double> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList),
+ intToDouble)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+
+ // const member function
+ {
+ QList<QString> list2 = QtConcurrent::mapped(numberList, &Number::toString).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<QString>() << "1" << "2" << "3");
+
+ QList<QString> list3 = QtConcurrent::mapped(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toString)
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<QString>() << "1" << "2" << "3");
+
+ QList<QString> list4 = QtConcurrent::mapped(QList<Number>(numberList), &Number::toString)
+ .results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<QString>() << "1" << "2" << "3");
+ }
+ {
+ QList<QString> list2 = QtConcurrent::mapped(numberLinkedList, &Number::toString).results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<QString>() << "1" << "2" << "3");
+
+ QList<QString> list3 = QtConcurrent::mapped(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toString)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<QString>() << "1" << "2" << "3");
+
+ QList<QString> list4 = QtConcurrent::mapped(QLinkedList<Number>(numberLinkedList),
+ &Number::toString)
+ .results();
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<QString>() << "1" << "2" << "3");
+ }
+
+ // change the value_type
+ {
+ QList<QString> strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::mapped(strings, StringToInt()).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
+ strings.constEnd(),
+ StringToInt())
+ .results();
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+ {
+ QList<QString> strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::mapped(strings, stringToInt).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
+ strings.constEnd(),
+ stringToInt).results();
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+
+ {
+ QList<int> numberList2 = QtConcurrent::mapped(numberList, &Number::toInt).results();
+ QCOMPARE(numberList2, QList<int>() << 1 << 2 << 3);
+
+ QList<int> numberList3 = QtConcurrent::mapped(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt)
+ .results();
+ QCOMPARE(numberList3, QList<int>() << 1 << 2 << 3);
+ }
+
+ // change the value_type from QStringList
+ {
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::mapped(strings, StringToInt()).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
+ strings.constEnd(),
+ StringToInt())
+ .results();
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+ {
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::mapped(strings, stringToInt).results();
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
+ strings.constEnd(),
+ stringToInt)
+ .results();
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+}
+
+void tst_QtConcurrentMap::blocking_mapped()
+{
+ QList<int> list;
+ list << 1 << 2 << 3;
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3;
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QLinkedList<Number> numberLinkedList;
+ numberLinkedList << 1 << 2 << 3;
+
+ // functor
+ {
+ QList<int> list2 = QtConcurrent::blockingMapped(list, MultiplyBy2());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::blockingMapped<QList<int> >(list.constBegin(),
+ list.constEnd(),
+ MultiplyBy2());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::blockingMapped(QList<int>(list), MultiplyBy2());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingMapped(linkedList, MultiplyBy2());
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4 << 6);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<int> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ MultiplyBy2());
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 2 << 4 << 6);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::blockingMapped(QLinkedList<int>(linkedList), MultiplyBy2());
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 2 << 4 << 6);
+ }
+
+ // function
+ {
+ QList<int> list2 = QtConcurrent::blockingMapped(list, multiplyBy2);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::blockingMapped<QList<int> >(list.constBegin(),
+ list.constEnd(),
+ multiplyBy2);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::blockingMapped(QList<int>(list), multiplyBy2);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingMapped(linkedList, multiplyBy2);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4 << 6);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<int> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ multiplyBy2);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 2 << 4 << 6);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::blockingMapped(QLinkedList<int>(linkedList), multiplyBy2);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 2 << 4 << 6);
+ }
+
+ // bound function
+ {
+ QList<int> list2 = QtConcurrent::blockingMapped(list, multiplyBy2);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list3 = QtConcurrent::blockingMapped<QList<int> >(list.constBegin(),
+ list.constEnd(),
+ multiplyBy2);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
+
+ QList<int> list4 = QtConcurrent::blockingMapped(QList<int>(list), multiplyBy2);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingMapped(linkedList, multiplyBy2);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4 << 6);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<int> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ multiplyBy2);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 2 << 4 << 6);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::blockingMapped(QLinkedList<int>(linkedList), multiplyBy2);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 2 << 4 << 6);
+ }
+
+ // const member function
+ {
+ QList<Number> numberList2 = QtConcurrent::blockingMapped(numberList, &Number::multipliedBy2);
+ QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList2, QList<Number>() << 2 << 4 << 6);
+
+ QList<Number> numberList3 = QtConcurrent::blockingMapped<QList<Number> >(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::multipliedBy2);
+ QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList3, QList<Number>() << 2 << 4 << 6);
+
+ QList<Number> numberList4 = QtConcurrent::blockingMapped(QList<Number>(numberList),
+ &Number::multipliedBy2);
+ QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberList4, QList<Number>() << 2 << 4 << 6);
+ }
+ {
+ QLinkedList<Number> numberLinkedList2 = QtConcurrent::blockingMapped(numberLinkedList, &Number::multipliedBy2);
+ QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberLinkedList2, QLinkedList<Number>() << 2 << 4 << 6);
+
+ QLinkedList<Number> numberLinkedList3 = QtConcurrent::blockingMapped<QLinkedList<Number> >(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::multipliedBy2);
+ QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberLinkedList3, QLinkedList<Number>() << 2 << 4 << 6);
+
+ QLinkedList<Number> numberLinkedList4 = QtConcurrent::blockingMapped(QLinkedList<Number>(numberLinkedList),
+ &Number::multipliedBy2);
+ QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
+ QCOMPARE(numberLinkedList4, QLinkedList<Number>() << 2 << 4 << 6);
+ }
+
+ // change the value_type, same container
+
+ // functor
+ {
+ QList<double> list2 = QtConcurrent::blockingMapped<QList<double> >(list, IntToDouble());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::blockingMapped<QList<double> >(list.constBegin(),
+ list.constEnd(),
+ IntToDouble());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list4 = QtConcurrent::blockingMapped<QList<double> >(QList<int>(list),
+ IntToDouble());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+ {
+ QLinkedList<double> linkedList2 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList, IntToDouble());
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+
+ QLinkedList<double> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntToDouble());
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+
+ QLinkedList<double> linkedList4 = QtConcurrent::blockingMapped<QLinkedList<double> >(QLinkedList<int>(linkedList),
+ IntToDouble());
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+ }
+
+ // function
+ {
+ QList<double> list2 = QtConcurrent::blockingMapped<QList<double> >(list, intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::blockingMapped<QList<double> >(list.constBegin(),
+ list.constEnd(),
+ intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list4 = QtConcurrent::blockingMapped<QList<double> >(QList<int>(list), intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+ {
+ QLinkedList<double> linkedList2 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList, intToDouble);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+
+ QLinkedList<double> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intToDouble);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+
+ QLinkedList<double> linkedList4 = QtConcurrent::blockingMapped<QLinkedList<double> >(QLinkedList<int>(linkedList), intToDouble);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+ }
+
+ // bound function
+ {
+ QList<double> list2 = QtConcurrent::blockingMapped<QList<double> >(list, intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
+
+ QList<double> list3 = QtConcurrent::blockingMapped<QList<double> >(list.constBegin(),
+ list.constEnd(),
+ intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
+
+
+ QList<double> list4 = QtConcurrent::blockingMapped<QList<double> >(QList<int>(list),
+ intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
+ }
+ {
+ QLinkedList<double> linkedList2 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList, intToDouble);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+
+ QLinkedList<double> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intToDouble);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+
+
+ QLinkedList<double> linkedList4 = QtConcurrent::blockingMapped<QLinkedList<double> >(QLinkedList<int>(linkedList),
+ intToDouble);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
+ }
+
+ // const member function
+ {
+ QList<QString> list2 =
+ QtConcurrent::blockingMapped<QList<QString> >(numberList, &Number::toString);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<QString>() << "1" << "2" << "3");
+
+ QList<QString> list3 = QtConcurrent::blockingMapped<QList<QString> >(numberList.constBegin(),
+ numberList.constEnd()
+ , &Number::toString);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<QString>() << "1" << "2" << "3");
+
+ QList<QString> list4 =
+ QtConcurrent::blockingMapped<QList<QString> >(QList<Number>(numberList), &Number::toString);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<QString>() << "1" << "2" << "3");
+ }
+ {
+ QLinkedList<QString> linkedList2 =
+ QtConcurrent::blockingMapped<QLinkedList<QString> >(numberLinkedList, &Number::toString);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<QString>() << "1" << "2" << "3");
+
+ QLinkedList<QString> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<QString> >(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd()
+ , &Number::toString);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<QString>() << "1" << "2" << "3");
+
+ QLinkedList<QString> linkedList4 =
+ QtConcurrent::blockingMapped<QLinkedList<QString> >(QLinkedList<Number>(numberLinkedList), &Number::toString);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<QString>() << "1" << "2" << "3");
+ }
+
+ // change the value_type
+ {
+ QList<QString> strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::blockingMapped(strings, StringToInt());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
+ strings.constEnd(),
+ StringToInt());
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+ {
+ QList<QString> strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::blockingMapped(strings, stringToInt);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
+ strings.constEnd(),
+ stringToInt);
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+
+ {
+ QList<int> numberList2 = QtConcurrent::blockingMapped(numberList, &Number::toInt);
+ QCOMPARE(numberList2, QList<int>() << 1 << 2 << 3);
+
+ QList<int> numberList3 = QtConcurrent::blockingMapped<QList<int> >(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt);
+ QCOMPARE(numberList3, QList<int>() << 1 << 2 << 3);
+ }
+
+ // change the value_type from QStringList
+ {
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::blockingMapped(strings, StringToInt());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
+ strings.constEnd(),
+ StringToInt());
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+ {
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QList<int> list = QtConcurrent::blockingMapped(strings, stringToInt);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
+ strings.constEnd(),
+ stringToInt);
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+ }
+
+ // functor
+ {
+ QVector<double> list2 = QtConcurrent::blockingMapped<QVector<double> >(list, IntToDouble());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QVector<double> list3 = QtConcurrent::blockingMapped<QVector<double> >(list.constBegin(),
+ list.constEnd(),
+ IntToDouble());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QVector<double> list4 = QtConcurrent::blockingMapped<QVector<double> >(QList<int>(list),
+ IntToDouble());
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(strings, StringToInt());
+ QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
+
+ QVector<int> list6 = QtConcurrent::blockingMapped<QVector<int> >(strings.constBegin(),
+ strings.constEnd(),
+ StringToInt());
+ QCOMPARE(list6, QVector<int>() << 1 << 2 << 3);
+
+ QVector<int> list7 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings),
+ StringToInt());
+ QCOMPARE(list7, QVector<int>() << 1 << 2 << 3);
+ }
+
+ // function
+ {
+ QVector<double> list2 = QtConcurrent::blockingMapped<QVector<double> >(list, intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QVector<double> list3 = QtConcurrent::blockingMapped<QVector<double> >(list.constBegin(),
+ list.constEnd(),
+ intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QVector<double> list4 = QtConcurrent::blockingMapped<QVector<double> >(QList<int>(list),
+ intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(strings, stringToInt);
+ QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
+
+ QVector<int> list6 = QtConcurrent::blockingMapped<QVector<int> >(strings.constBegin(),
+ strings.constEnd(),
+ stringToInt);
+ QCOMPARE(list6, QVector<int>() << 1 << 2 << 3);
+
+ QVector<int> list7 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings),
+ stringToInt);
+ QCOMPARE(list7, QVector<int>() << 1 << 2 << 3);
+ }
+
+ // bound function
+ {
+ QVector<double> list2 = QtConcurrent::blockingMapped<QVector<double> >(list, intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QVector<double> list3 = QtConcurrent::blockingMapped<QVector<double> >(QList<int>(list), intToDouble);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QVector<double>() << 1.0 << 2.0 << 3.0);
+
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QVector<int> list4 = QtConcurrent::blockingMapped<QVector<int> >(strings, stringToInt);
+ QCOMPARE(list4, QVector<int>() << 1 << 2 << 3);
+
+ QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings), stringToInt);
+ QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
+ }
+
+ // const member function
+ {
+ QVector<QString> list2 = QtConcurrent::blockingMapped<QVector<QString> >(numberList, &Number::toString);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QVector<QString>() << "1" << "2" << "3");
+
+ QVector<QString> list3 =
+ QtConcurrent::blockingMapped<QVector<QString> >(QList<Number>(numberList), &Number::toString);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QVector<QString>() << "1" << "2" << "3");
+
+ // not allowed: const member function where all arguments have default values
+#if 0
+ QStringList strings = QStringList() << "1" << "2" << "3";
+ QVector<int> list4 = QtConcurrent::blockingMapped<QVector<int> >(strings, &QString::toInt);
+ QCOMPARE(list4, QVector<int>() << 1 << 2 << 3);
+
+ QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings), &QString::toInt);
+ QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
+#endif
+ }
+}
+
+int intSquare(int x)
+{
+ return x * x;
+}
+
+class IntSquare
+{
+public:
+ typedef int result_type;
+
+ int operator()(int x)
+ {
+ return x * x;
+ }
+};
+
+void tst_QtConcurrentMap::mappedReduced()
+{
+ QList<int> list;
+ list << 1 << 2 << 3;
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3;
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QLinkedList<Number> numberLinkedList;
+ numberLinkedList << 1 << 2 << 3;
+
+ // test Q_DECLARE_OPERATORS_FOR_FLAGS
+ QtConcurrent::ReduceOptions opt = (QtConcurrent::UnorderedReduce | QtConcurrent::SequentialReduce);
+ QVERIFY(opt);
+
+ // functor-functor
+ {
+ int sum = QtConcurrent::mappedReduced<int>(list, IntSquare(), IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QList<int>(list), IntSquare(), IntSumReduce());
+ QCOMPARE(sum3, 14);
+
+ int sum4 = QtConcurrent::mappedReduced<int>(list, intSquare, intSumReduce);
+ QCOMPARE(sum4, 14);
+ int sum5 = QtConcurrent::mappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum5, 14);
+
+ int sum6 = QtConcurrent::mappedReduced<int>(QList<int>(list),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum6, 14);
+ }
+ {
+ int sum = QtConcurrent::mappedReduced<int>(linkedList, IntSquare(), IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntSquare(),
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(linkedList), IntSquare(), IntSumReduce());
+ QCOMPARE(sum3, 14);
+
+ int sum4 = QtConcurrent::mappedReduced<int>(linkedList, intSquare, intSumReduce);
+ QCOMPARE(sum4, 14);
+ int sum5 = QtConcurrent::mappedReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum5, 14);
+
+ int sum6 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(linkedList),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum6, 14);
+ }
+
+ // function-functor
+ {
+ int sum = QtConcurrent::mappedReduced<int>(list, intSquare, IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QList<int>(list), intSquare, IntSumReduce());
+ QCOMPARE(sum3, 14);
+ }
+ {
+ int sum = QtConcurrent::mappedReduced<int>(linkedList, intSquare, IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(linkedList), intSquare, IntSumReduce());
+ QCOMPARE(sum3, 14);
+ }
+
+ // functor-function
+ {
+ int sum = QtConcurrent::mappedReduced(list, IntSquare(), intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced(QList<int>(list), IntSquare(), intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+ {
+ int sum = QtConcurrent::mappedReduced(linkedList, IntSquare(), intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntSquare(),
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList), IntSquare(), intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+
+ // function-function
+ {
+ int sum = QtConcurrent::mappedReduced(list, intSquare, intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced(QList<int>(list), intSquare, intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+ {
+ int sum = QtConcurrent::mappedReduced(linkedList, intSquare, intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList), intSquare, intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+
+ // functor-member
+ {
+ QList<int> list2 = QtConcurrent::mappedReduced(list,
+ IntSquare(),
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list3 = QtConcurrent::mappedReduced(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list4 = QtConcurrent::mappedReduced(QList<int>(list),
+ IntSquare(),
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::mappedReduced(linkedList,
+ IntSquare(),
+ &QLinkedList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::mappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntSquare(),
+ &QLinkedList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList),
+ IntSquare(),
+ &QLinkedList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
+ }
+
+ // member-functor
+ {
+ int sum = QtConcurrent::mappedReduced<int>(numberList, &Number::toInt, IntSumReduce());
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::mappedReduced<int>(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QList<Number>(numberList),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum3, 6);
+ }
+ {
+ int sum = QtConcurrent::mappedReduced<int>(numberLinkedList, &Number::toInt, IntSumReduce());
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::mappedReduced<int>(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<Number>(numberLinkedList),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum3, 6);
+ }
+
+ // member-member
+ {
+ QList<int> list2 = QtConcurrent::mappedReduced(numberList,
+ &Number::toInt,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list3 = QtConcurrent::mappedReduced(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list3, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list4 = QtConcurrent::mappedReduced(QList<Number>(numberList),
+ &Number::toInt,
+ &QList<int>::push_back, OrderedReduce);
+ QCOMPARE(list4, QList<int>() << 1 << 2 << 3);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::mappedReduced(numberLinkedList,
+ &Number::toInt,
+ &QLinkedList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 2 << 3);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::mappedReduced(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toInt,
+ &QLinkedList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 2 << 3);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::mappedReduced(QLinkedList<Number>(numberLinkedList),
+ &Number::toInt,
+ &QLinkedList<int>::push_back, OrderedReduce);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 2 << 3);
+ }
+
+ // function-member
+ {
+ QList<int> list2 = QtConcurrent::mappedReduced(list,
+ intSquare,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list3 = QtConcurrent::mappedReduced(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list4 = QtConcurrent::mappedReduced(QList<int>(list),
+ intSquare,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::mappedReduced(linkedList,
+ intSquare,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::mappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList),
+ intSquare,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
+ }
+
+ // member-function
+ {
+ int sum = QtConcurrent::mappedReduced(numberList,
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::mappedReduced(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::mappedReduced(QList<Number>(numberList),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum3, 6);
+ }
+ {
+ int sum = QtConcurrent::mappedReduced(numberLinkedList,
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::mappedReduced(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::mappedReduced(QLinkedList<Number>(numberLinkedList),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum3, 6);
+ }
+
+ // linked lists
+ {
+
+ QLinkedList<int> list;
+ list << 1 << 2 << 3;
+
+ QLinkedList<Number> numberList;
+ numberList << 1 << 2 << 3;
+
+ int sum = QtConcurrent::mappedReduced<int>(list, IntSquare(), IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::mappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(list), IntSquare(), IntSumReduce());
+ QCOMPARE(sum3, 14);
+
+ int sum4 = QtConcurrent::mappedReduced<int>(list, intSquare, intSumReduce);
+ QCOMPARE(sum4, 14);
+ int sum5 = QtConcurrent::mappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum5, 14);
+
+ int sum6 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(list),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum6, 14);
+ }
+
+ // ### the same as above, with an initial result value
+}
+
+void tst_QtConcurrentMap::blocking_mappedReduced()
+{
+ QList<int> list;
+ list << 1 << 2 << 3;
+ QLinkedList<int> linkedList;
+ linkedList << 1 << 2 << 3;
+ QList<Number> numberList;
+ numberList << 1 << 2 << 3;
+ QLinkedList<Number> numberLinkedList;
+ numberLinkedList << 1 << 2 << 3;
+
+ // functor-functor
+ {
+ int sum = QtConcurrent::blockingMappedReduced<int>(list, IntSquare(), IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QList<int>(list), IntSquare(), IntSumReduce());
+ QCOMPARE(sum3, 14);
+
+ int sum4 = QtConcurrent::blockingMappedReduced<int>(list, intSquare, intSumReduce);
+ QCOMPARE(sum4, 14);
+ int sum5 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum5, 14);
+
+ int sum6 = QtConcurrent::blockingMappedReduced<int>(QList<int>(list),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum6, 14);
+ }
+ {
+ int sum = QtConcurrent::blockingMappedReduced<int>(linkedList, IntSquare(), IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntSquare(),
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(linkedList), IntSquare(), IntSumReduce());
+ QCOMPARE(sum3, 14);
+
+ int sum4 = QtConcurrent::blockingMappedReduced<int>(linkedList, intSquare, intSumReduce);
+ QCOMPARE(sum4, 14);
+ int sum5 = QtConcurrent::blockingMappedReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum5, 14);
+
+ int sum6 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(linkedList),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum6, 14);
+ }
+
+ // function-functor
+ {
+ int sum = QtConcurrent::blockingMappedReduced<int>(list, intSquare, IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QList<int>(list), intSquare, IntSumReduce());
+ QCOMPARE(sum3, 14);
+ }
+ {
+ int sum = QtConcurrent::blockingMappedReduced<int>(linkedList, intSquare, IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(linkedList), intSquare, IntSumReduce());
+ QCOMPARE(sum3, 14);
+ }
+
+ // functor-function
+ {
+ int sum = QtConcurrent::blockingMappedReduced(list, IntSquare(), intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced(QList<int>(list), IntSquare(), intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+ {
+ int sum = QtConcurrent::blockingMappedReduced(linkedList, IntSquare(), intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntSquare(),
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList), IntSquare(), intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+
+ // function-function
+ {
+ int sum = QtConcurrent::blockingMappedReduced(list, intSquare, intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced(QList<int>(list), intSquare, intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+ {
+ int sum = QtConcurrent::blockingMappedReduced(linkedList, intSquare, intSumReduce);
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList), intSquare, intSumReduce);
+ QCOMPARE(sum3, 14);
+ }
+
+ // functor-member
+ {
+ QList<int> list2 = QtConcurrent::blockingMappedReduced(list,
+ IntSquare(),
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list3 = QtConcurrent::blockingMappedReduced(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list4 = QtConcurrent::blockingMappedReduced(QList<int>(list),
+ IntSquare(),
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingMappedReduced(linkedList,
+ IntSquare(),
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ IntSquare(),
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList),
+ IntSquare(),
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
+ }
+
+ // member-functor
+ {
+ int sum = QtConcurrent::blockingMappedReduced<int>(numberList, &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QList<Number>(numberList),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum3, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingMappedReduced<int>(numberLinkedList, &Number::toInt, IntSumReduce());
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<Number>(numberLinkedList),
+ &Number::toInt,
+ IntSumReduce());
+ QCOMPARE(sum3, 6);
+ }
+
+ // member-member
+ {
+ QList<int> list2 = QtConcurrent::blockingMappedReduced(numberList,
+ &Number::toInt,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list3 = QtConcurrent::blockingMappedReduced(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list3, QList<int>() << 1 << 2 << 3);
+
+ QList<int> list4 = QtConcurrent::blockingMappedReduced(QList<Number>(numberList),
+ &Number::toInt,
+ &QList<int>::push_back, OrderedReduce);
+ QCOMPARE(list4, QList<int>() << 1 << 2 << 3);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingMappedReduced(numberLinkedList,
+ &Number::toInt,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 2 << 3);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::blockingMappedReduced(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toInt,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 2 << 3);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::blockingMappedReduced(QLinkedList<Number>(numberLinkedList),
+ &Number::toInt,
+ &QLinkedList<int>::append, OrderedReduce);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 2 << 3);
+ }
+
+ // function-member
+ {
+ QList<int> list2 = QtConcurrent::blockingMappedReduced(list,
+ intSquare,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list3 = QtConcurrent::blockingMappedReduced(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
+
+ QList<int> list4 = QtConcurrent::blockingMappedReduced(QList<int>(list),
+ intSquare,
+ &QList<int>::push_back,
+ OrderedReduce);
+ QCOMPARE(list, QList<int>() << 1 << 2 << 3);
+ QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
+ }
+ {
+ QLinkedList<int> linkedList2 = QtConcurrent::blockingMappedReduced(linkedList,
+ intSquare,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList3 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
+ linkedList.constEnd(),
+ intSquare,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
+
+ QLinkedList<int> linkedList4 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList),
+ intSquare,
+ &QLinkedList<int>::append,
+ OrderedReduce);
+ QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
+ QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
+ }
+
+ // member-function
+ {
+ int sum = QtConcurrent::blockingMappedReduced(numberList,
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::blockingMappedReduced(numberList.constBegin(),
+ numberList.constEnd(),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::blockingMappedReduced(QList<Number>(numberList),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum3, 6);
+ }
+ {
+ int sum = QtConcurrent::blockingMappedReduced(numberLinkedList,
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum, 6);
+ int sum2 = QtConcurrent::blockingMappedReduced(numberLinkedList.constBegin(),
+ numberLinkedList.constEnd(),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum2, 6);
+
+ int sum3 = QtConcurrent::blockingMappedReduced(QLinkedList<Number>(numberLinkedList),
+ &Number::toInt,
+ intSumReduce);
+ QCOMPARE(sum3, 6);
+ }
+
+ // linked lists
+ {
+
+ QLinkedList<int> list;
+ list << 1 << 2 << 3;
+
+ QLinkedList<Number> numberList;
+ numberList << 1 << 2 << 3;
+
+ int sum = QtConcurrent::blockingMappedReduced<int>(list, IntSquare(), IntSumReduce());
+ QCOMPARE(sum, 14);
+ int sum2 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ IntSquare(),
+ IntSumReduce());
+ QCOMPARE(sum2, 14);
+
+ int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(list), IntSquare(), IntSumReduce());
+ QCOMPARE(sum3, 14);
+
+ int sum4 = QtConcurrent::blockingMappedReduced<int>(list, intSquare, intSumReduce);
+ QCOMPARE(sum4, 14);
+ int sum5 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
+ list.constEnd(),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum5, 14);
+
+ int sum6 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(list),
+ intSquare,
+ intSumReduce);
+ QCOMPARE(sum6, 14);
+ }
+
+ // ### the same as above, with an initial result value
+}
+
+int sleeper(int val)
+{
+ QTest::qSleep(100);
+ return val;
+}
+
+void tst_QtConcurrentMap::assignResult()
+{
+ const QList<int> startList = QList<int>() << 0 << 1 << 2;
+ QList<int> list = QtConcurrent::blockingMapped(startList, sleeper);
+ QCOMPARE(list.at(0), 0);
+ QCOMPARE(list.at(1), 1);
+}
+
+int fnConst(const int &i)
+{
+ return i;
+}
+
+int fn(int &i)
+{
+ return i;
+}
+
+QString changeTypeConst(const int &)
+{
+ return QString();
+}
+
+QString changeType(int &)
+{
+ return QString();
+}
+
+int changeTypeQStringListConst(const QStringList &)
+{
+ return 0;
+}
+
+int changeTypeQStringList(QStringList &)
+{
+ return 0;
+}
+
+class MemFnTester
+{
+public:
+ MemFnTester() {}
+
+ MemFnTester fn()
+ {
+ return MemFnTester();
+ }
+
+ MemFnTester fnConst() const
+ {
+ return MemFnTester();
+ }
+
+ QString changeType()
+ {
+ return QString();
+ }
+
+ QString changeTypeConst() const
+ {
+ return QString();
+ }
+};
+
+Q_DECLARE_METATYPE(QVector<MemFnTester>);
+Q_DECLARE_METATYPE(QList<MemFnTester>);
+
+void tst_QtConcurrentMap::functionOverloads()
+{
+ QList<int> intList;
+ const QList<int> constIntList;
+ QList<MemFnTester> classList;
+ const QList<MemFnTester> constMemFnTesterList;
+
+ QtConcurrent::mapped(intList, fnConst);
+ QtConcurrent::mapped(constIntList, fnConst);
+ QtConcurrent::mapped(classList, &MemFnTester::fnConst);
+ QtConcurrent::mapped(constMemFnTesterList, &MemFnTester::fnConst);
+
+ QtConcurrent::blockingMapped<QVector<int> >(intList, fnConst);
+ QtConcurrent::blockingMapped<QVector<int> >(constIntList, fnConst);
+ QtConcurrent::blockingMapped<QVector<MemFnTester> >(classList, &MemFnTester::fnConst);
+ QtConcurrent::blockingMapped<QVector<MemFnTester> >(constMemFnTesterList, &MemFnTester::fnConst);
+
+ QtConcurrent::blockingMapped<QList<QString> >(intList, changeTypeConst);
+ QtConcurrent::blockingMapped<QList<QString> >(constIntList, changeTypeConst);
+ QtConcurrent::blockingMapped<QList<QString> >(classList, &MemFnTester::changeTypeConst);
+ QtConcurrent::blockingMapped<QList<QString> >(constMemFnTesterList, &MemFnTester::changeTypeConst);
+
+ QStringList stringList;
+ const QStringList constStringList;
+ // QtConcurrent::map(stringList, changeTypeQStringListConst);
+ // QtConcurrent::map(intList, changeTypeNonConst);
+ // QList<QString>(QtConcurrent::map(constStringList, changeTypeQStringList));
+ // QtConcurrent::map(classList, &MemFnTester::changeType);
+ // QtConcurrent::map(classList, &MemFnTester::changeTypeConst);
+ // QtConcurrent::map(constMemFnTesterList, &MemFnTester::changeTypeConst);
+}
+
+QAtomicInt currentInstanceCount;
+QAtomicInt peakInstanceCount;
+class InstanceCounter
+{
+public:
+ inline InstanceCounter()
+ { currentInstanceCount.fetchAndAddRelaxed(1); updatePeak(); }
+ inline ~InstanceCounter()
+ { currentInstanceCount.fetchAndAddRelaxed(-1);}
+ inline InstanceCounter(const InstanceCounter &)
+ { currentInstanceCount.fetchAndAddRelaxed(1); updatePeak(); }
+
+ void updatePeak()
+ {
+ forever {
+ const int localPeak = peakInstanceCount.load();
+ const int localCurrent = currentInstanceCount.load();
+ if (localCurrent <= localPeak)
+ break;
+ if (peakInstanceCount.testAndSetOrdered(localPeak, localCurrent))
+ break;
+ }
+ }
+};
+
+InstanceCounter slowMap(const InstanceCounter &in)
+{
+ QTest::qSleep(2);
+ return in;
+}
+
+InstanceCounter fastMap(const InstanceCounter &in)
+{
+ QTest::qSleep(rand() % 2 + 1);
+ return in;
+}
+
+void slowReduce(int &result, const InstanceCounter&)
+{
+ QTest::qSleep(rand() % 4 + 1);
+ ++result;
+}
+
+void fastReduce(int &result, const InstanceCounter&)
+{
+ ++result;
+}
+
+void tst_QtConcurrentMap::throttling()
+{
+ const int itemcount = 100;
+ const int allowedTemporaries = QThread::idealThreadCount() * 40;
+
+ {
+ currentInstanceCount.store(0);
+ peakInstanceCount.store(0);
+
+ QList<InstanceCounter> instances;
+ for (int i = 0; i < itemcount; ++i)
+ instances.append(InstanceCounter());
+
+ QCOMPARE(currentInstanceCount.load(), itemcount);
+
+ int results = QtConcurrent::blockingMappedReduced(instances, slowMap, fastReduce);
+ QCOMPARE(results, itemcount);
+ QCOMPARE(currentInstanceCount.load(), itemcount);
+ QVERIFY(peakInstanceCount.load() < itemcount + allowedTemporaries);
+ }
+
+ {
+ QCOMPARE(currentInstanceCount.load(), 0);
+ peakInstanceCount.store(0);
+
+ QList<InstanceCounter> instances;
+ for (int i = 0; i < itemcount; ++i)
+ instances.append(InstanceCounter());
+
+ QCOMPARE(currentInstanceCount.load(), itemcount);
+ int results = QtConcurrent::blockingMappedReduced(instances, fastMap, slowReduce);
+
+ QCOMPARE(results, itemcount);
+ QCOMPARE(currentInstanceCount.load(), itemcount);
+ QVERIFY(peakInstanceCount.load() < itemcount + allowedTemporaries);
+ }
+}
+
+#ifndef QT_NO_EXCEPTIONS
+void throwMapper(int &e)
+{
+ Q_UNUSED(e);
+ throw QtConcurrent::Exception();
+}
+
+void tst_QtConcurrentMap::exceptions()
+{
+ bool caught = false;
+ try {
+ QList<int> list = QList<int>() << 1 << 2 << 3;
+ QtConcurrent::map(list, throwMapper).waitForFinished();
+ } catch (const Exception &) {
+ caught = true;
+ }
+ if (!caught)
+ QFAIL("did not get exception");
+}
+#endif
+
+int mapper(const int &i)
+{
+ QTest::qWait(1);
+ return i;
+}
+
+void tst_QtConcurrentMap::incrementalResults()
+{
+ const int count = 200;
+ QList<int> ints;
+ for (int i=0; i < count; ++i)
+ ints << i;
+
+ QFuture<int> future = QtConcurrent::mapped(ints, mapper);
+
+ QList<int> results;
+
+ while (future.isFinished() == false) {
+ for (int i = 0; i < future.resultCount(); ++i) {
+ results += future.resultAt(i);
+ }
+
+ QTest::qWait(1);
+ }
+
+ QCOMPARE(future.isFinished(), true);
+ QCOMPARE(future.resultCount(), count);
+ QCOMPARE(future.results().count(), count);
+}
+
+/*
+ Test that mapped does not cause deep copies when holding
+ references to Qt containers.
+*/
+void tst_QtConcurrentMap::noDetach()
+{
+ {
+ QList<int> l = QList<int>() << 1;
+ QVERIFY(l.isDetached());
+
+ QList<int> ll = l;
+ QVERIFY(l.isDetached() == false);
+
+ QtConcurrent::mapped(l, mapper).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::mappedReduced(l, mapper, intSumReduce).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::map(l, multiplyBy2Immutable).waitForFinished();
+ QVERIFY(l.isDetached() == true);
+ QVERIFY(ll.isDetached() == true);
+ }
+ {
+ const QList<int> l = QList<int>() << 1;
+ QVERIFY(l.isDetached());
+
+ const QList<int> ll = l;
+ QVERIFY(l.isDetached() == false);
+
+ QtConcurrent::mapped(l, mapper).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+
+ QtConcurrent::mappedReduced(l, mapper, intSumReduce).waitForFinished();
+
+ QVERIFY(l.isDetached() == false);
+ QVERIFY(ll.isDetached() == false);
+ }
+
+}
+
+#ifndef QT_NO_STL
+void tst_QtConcurrentMap::stlContainers()
+{
+ std::vector<int> vector;
+ vector.push_back(1);
+ vector.push_back(2);
+
+ std::vector<int> vector2 = QtConcurrent::blockingMapped<std::vector<int> >(vector, mapper);
+ QCOMPARE(vector2.size(), (std::vector<int>::size_type)(2));
+
+ std::list<int> list;
+ list.push_back(1);
+ list.push_back(2);
+
+ std::list<int> list2 = QtConcurrent::blockingMapped<std::list<int> >(list, mapper);
+ QCOMPARE(list2.size(), (std::vector<int>::size_type)(2));
+
+ QtConcurrent::mapped(list, mapper).waitForFinished();
+
+ QtConcurrent::blockingMap(list, multiplyBy2Immutable);
+}
+#endif
+
+InstanceCounter ic_fn(const InstanceCounter & ic)
+{
+ return InstanceCounter(ic);
+};
+
+// Verify that held results are deleted when a future is
+// assigned over with operator ==
+void tst_QtConcurrentMap::qFutureAssignmentLeak()
+{
+ currentInstanceCount.store(0);
+ peakInstanceCount.store(0);
+ QFuture<InstanceCounter> future;
+ {
+ QList<InstanceCounter> list;
+ for (int i=0;i<1000;++i)
+ list += InstanceCounter();
+ future = QtConcurrent::mapped(list, ic_fn);
+ future.waitForFinished();
+
+ future = QtConcurrent::mapped(list, ic_fn);
+ future.waitForFinished();
+
+ future = QtConcurrent::mapped(list, ic_fn);
+ future.waitForFinished();
+ }
+
+ QCOMPARE(currentInstanceCount.load(), 1000);
+ future = QFuture<InstanceCounter>();
+ QCOMPARE(currentInstanceCount.load(), 0);
+}
+
+inline void increment(int &num)
+{
+ ++num;
+}
+
+inline int echo(const int &num)
+{
+ return num;
+}
+
+void add(int &result, const int &sum)
+{
+ result += sum;
+}
+
+void tst_QtConcurrentMap::stressTest()
+{
+ const int listSize = 1000;
+ const int sum = (listSize - 1) * (listSize / 2);
+ QList<int> list;
+
+
+ for (int i = 0; i < listSize; ++i) {
+ list.append(i);
+ }
+
+ for (int i =0 ; i < 100; ++i) {
+ QList<int> result = QtConcurrent::blockingMapped(list, echo);
+ for (int j = 0; j < listSize; ++j)
+ QCOMPARE(result.at(j), j);
+ }
+
+ for (int i = 0 ; i < 100; ++i) {
+ int result = QtConcurrent::blockingMappedReduced(list, echo, add);
+ QCOMPARE(result, sum);
+ }
+
+ for (int i = 0 ; i < 100; ++i) {
+ QtConcurrent::map(list, increment).waitForFinished();
+ for (int j = 0; j < listSize; ++j)
+ QCOMPARE(list.at(j), i + j + 1);
+ }
+}
+
+#endif
+
+QTEST_MAIN(tst_QtConcurrentMap)
+#include "tst_qtconcurrentmap.moc"
diff --git a/tests/auto/concurrent/qtconcurrentresultstore/qtconcurrentresultstore.pro b/tests/auto/concurrent/qtconcurrentresultstore/qtconcurrentresultstore.pro
new file mode 100644
index 0000000000..2c04f75025
--- /dev/null
+++ b/tests/auto/concurrent/qtconcurrentresultstore/qtconcurrentresultstore.pro
@@ -0,0 +1,5 @@
+CONFIG += testcase parallel_test
+TARGET = tst_qtconcurrentresultstore
+QT = core-private testlib concurrent
+SOURCES = tst_qtconcurrentresultstore.cpp
+DEFINES += QT_STRICT_ITERATORS
diff --git a/tests/auto/concurrent/qtconcurrentresultstore/tst_qtconcurrentresultstore.cpp b/tests/auto/concurrent/qtconcurrentresultstore/tst_qtconcurrentresultstore.cpp
new file mode 100644
index 0000000000..236d0b62e3
--- /dev/null
+++ b/tests/auto/concurrent/qtconcurrentresultstore/tst_qtconcurrentresultstore.cpp
@@ -0,0 +1,490 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <QtTest/QtTest>
+
+#include <qtconcurrentresultstore.h>
+
+using namespace QtConcurrent;
+
+class tst_QtConcurrentResultStore : public QObject
+{
+ Q_OBJECT
+public slots:
+ void init();
+private slots:
+ void construction();
+ void iterators();
+ void addResult();
+ void addResults();
+ void resultIndex();
+ void resultAt();
+ void contains();
+ void filterMode();
+ void addCanceledResult();
+ void count();
+private:
+ int int0;
+ int int1;
+ int int2;
+ QVector<int> vec0;
+ QVector<int> vec1;
+};
+
+void tst_QtConcurrentResultStore::init()
+{
+ int0 = 0;
+ int1 = 1;
+ int2 = 2;
+ vec0 = QVector<int>() << 2 << 3;
+ vec1 = QVector<int>() << 4 << 5;
+}
+
+void tst_QtConcurrentResultStore::construction()
+{
+ ResultStore<int> store;
+ QCOMPARE(store.count(), 0);
+}
+
+void tst_QtConcurrentResultStore::iterators()
+{
+ {
+ ResultStore<int> store;
+ QVERIFY(store.begin() == store.end());
+ QVERIFY(store.resultAt(0) == store.end());
+ QVERIFY(store.resultAt(1) == store.end());
+ }
+ {
+ ResultStoreBase storebase;
+ storebase.addResult(-1, &int0); // note to self: adding a pointer to the stack here is ok since
+ storebase.addResult(1, &int1); // ResultStoreBase does not take ownership, only ResultStore<> does.
+ ResultIteratorBase it = storebase.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == storebase.begin());
+ QVERIFY(it != storebase.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != storebase.begin());
+ QVERIFY(it != storebase.end());
+
+ ++it;
+ QVERIFY(it != storebase.begin());
+ QVERIFY(it == storebase.end());
+ }
+}
+
+void tst_QtConcurrentResultStore::addResult()
+{
+ {
+ // test addResult return value
+ ResultStore<int> store;
+ store.setFilterMode(true);
+
+ QCOMPARE(store.addResult(0, &int0), 0);
+ QCOMPARE(store.count(), 1); // result 0 becomes available
+ QCOMPARE(store.contains(0), true);
+
+ QCOMPARE(store.addResult(2, &int0), 2);
+ QCOMPARE(store.count(), 1);
+ QCOMPARE(store.contains(2), false);
+
+ QCOMPARE(store.addCanceledResult(1), 1);
+ QCOMPARE(store.count(), 2); // result 2 is renamed to 1 and becomes available
+
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), false);
+
+ QCOMPARE(store.addResult(3, &int0), 3);
+ QCOMPARE(store.count(), 3);
+ QCOMPARE(store.contains(2), true);
+
+ QCOMPARE(store.addResult(6, &int0), 6);
+ QCOMPARE(store.count(), 3);
+ QCOMPARE(store.addResult(7, &int0), 7);
+ QCOMPARE(store.count(), 3);
+ QCOMPARE(store.contains(3), false);
+
+ QCOMPARE(store.addCanceledResult(4), 4);
+ QCOMPARE(store.addCanceledResult(5), 5);
+ QCOMPARE(store.count(), 5); // 6 and 7 is renamed to 3 and 4 and becomes available
+
+ QCOMPARE(store.contains(3), true);
+ QCOMPARE(store.contains(4), true);
+
+ QCOMPARE(store.addResult(8, &int0), 8);
+ QCOMPARE(store.contains(5), true);
+ QCOMPARE(store.count(), 6);
+
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+ }
+}
+
+void tst_QtConcurrentResultStore::addResults()
+{
+
+ ResultStoreBase store;
+ store.addResults(-1, &vec0, 2, 2);
+ store.addResults(-1, &vec1, 2, 2);
+ ResultIteratorBase it = store.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 2);
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 3);
+
+ ++it;
+ QVERIFY(it == store.end());
+}
+
+void tst_QtConcurrentResultStore::resultIndex()
+{
+ ResultStore<int> store;
+ store.addResult(-1, &int0);
+ store.addResults(-1, &vec0);
+ store.addResult(-1, &int1);
+
+ ResultIteratorBase it = store.begin();
+ QCOMPARE(it.resultIndex(), 0);
+ QVERIFY(it == store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 1);
+ QVERIFY(it != store.begin());
+ QVERIFY(it != store.end());
+
+ ++it;
+ QCOMPARE(it.resultIndex(), 2);
+ QVERIFY(it != store.end());
+ ++it;
+ QCOMPARE(it.resultIndex(), 3);
+ QVERIFY(it != store.end());
+ ++it;
+ QVERIFY(it == store.end());
+
+ QCOMPARE(store.resultAt(0).value(), int0);
+ QCOMPARE(store.resultAt(1).value(), vec0[0]);
+ QCOMPARE(store.resultAt(2).value(), vec0[1]);
+ QCOMPARE(store.resultAt(3).value(), int1);
+}
+
+void tst_QtConcurrentResultStore::resultAt()
+{
+ {
+ ResultStore<int> store;
+ store.addResult(-1, &int0);
+ store.addResults(-1, &vec0);
+ store.addResult(200, &int1);
+
+ QCOMPARE(store.resultAt(0).value(), int0);
+ QCOMPARE(store.resultAt(1).value(), vec0[0]);
+ QCOMPARE(store.resultAt(2).value(), vec0[1]);
+ QCOMPARE(store.resultAt(200).value(), int1);
+ }
+ {
+ ResultStore<int> store;
+ store.addResult(1, &int1);
+ store.addResult(0, &int0);
+ store.addResult(-1, &int2);
+
+ QCOMPARE(store.resultAt(0).value(), int0);
+ QCOMPARE(store.resultAt(1).value(), int1);
+ QCOMPARE(store.resultAt(2).value(), int2);
+ }
+}
+
+void tst_QtConcurrentResultStore::contains()
+{
+ {
+ ResultStore<int> store;
+ QCOMPARE(store.contains(0), false);
+ QCOMPARE(store.contains(1), false);
+ QCOMPARE(store.contains(INT_MAX), false);
+ store.addResult(1, &int1);
+ QVERIFY(store.contains(int1));
+ store.addResult(0, &int0);
+ QVERIFY(store.contains(int0));
+ store.addResult(-1, &int2);
+ QVERIFY(store.contains(int2));
+ }
+ {
+ ResultStore<int> store;
+ store.addResult(1, &int0);
+ store.addResult(3, &int0);
+ store.addResults(6, &vec0);
+ QCOMPARE(store.contains(0), false);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), false);
+ QCOMPARE(store.contains(3), true);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(6), true);
+ QCOMPARE(store.contains(7), true);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResult(1, &int0);
+ store.addResult(3, &int0);
+ store.addResults(6, &vec0);
+ QCOMPARE(store.contains(0), false);
+ QCOMPARE(store.contains(1), false);
+ QCOMPARE(store.contains(2), false);
+ QCOMPARE(store.contains(3), false);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+
+ store.addCanceledResult(0);
+ store.addCanceledResult(2);
+ store.addCanceledResults(4, 2);
+
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), true);
+ QCOMPARE(store.contains(3), true);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+ }
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addCanceledResult(0);
+ QCOMPARE(store.contains(0), false);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), false);
+ }
+}
+
+void tst_QtConcurrentResultStore::filterMode()
+{
+ // Test filter mode, where "gaps" in the result array aren't allowed.
+ ResultStore<int> store;
+ QCOMPARE(store.filterMode(), false);
+ store.setFilterMode(true);
+ QVERIFY(store.filterMode());
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.contains(0), true);
+
+ store.addResult(2, &int2); // add result at index 2
+ QCOMPARE(store.contains(2), false); // but 1 is missing, so this 2 won't be reported yet.
+
+ store.addResult(1, &int1);
+ QCOMPARE(store.contains(1), true);
+ QCOMPARE(store.contains(2), true); // 2 should be visible now.
+
+ store.addResult(4, &int0);
+ store.addResult(5, &int0);
+ store.addResult(7, &int0);
+ QCOMPARE(store.contains(4), false);
+ QCOMPARE(store.contains(5), false);
+ QCOMPARE(store.contains(7), false);
+
+ store.addResult(3, &int0); // adding 3 makes 4 and 5 visible
+ QCOMPARE(store.contains(4), true);
+ QCOMPARE(store.contains(5), true);
+ QCOMPARE(store.contains(7), false);
+
+ store.addResult(6, &int0); // adding 6 makes 7 visible
+
+ QCOMPARE(store.contains(6), true);
+ QCOMPARE(store.contains(7), true);
+ QCOMPARE(store.contains(8), false);
+}
+
+void tst_QtConcurrentResultStore::addCanceledResult()
+{
+ // test canceled results
+ ResultStore<int> store;
+ store.setFilterMode(true);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.contains(0), true);
+
+ store.addResult(2, &int0);
+ QCOMPARE(store.contains(2), false);
+
+ store.addCanceledResult(1); // report no result at 1
+
+ QCOMPARE(store.contains(0), true);
+ QCOMPARE(store.contains(1), true); // 2 gets renamed to 1
+ QCOMPARE(store.contains(2), false);
+
+ store.addResult(3, &int0);
+ QCOMPARE(store.contains(2), true); //3 gets renamed to 2
+
+ store.addResult(6, &int0);
+ store.addResult(7, &int0);
+ QCOMPARE(store.contains(3), false);
+
+ store.addCanceledResult(4);
+ store.addCanceledResult(5);
+
+ QCOMPARE(store.contains(3), true); //6 gets renamed to 3
+ QCOMPARE(store.contains(4), true); //7 gets renamed to 4
+
+ store.addResult(8, &int0);
+ QCOMPARE(store.contains(5), true); //8 gets renamed to 4
+
+ QCOMPARE(store.contains(6), false);
+ QCOMPARE(store.contains(7), false);
+}
+
+void tst_QtConcurrentResultStore::count()
+{
+ {
+ // test resultCount in non-filtered mode. It should always be possible
+ // to iterate through the results 0 to resultCount.
+ ResultStore<int> store;
+ store.addResult(0, &int0);
+
+ QCOMPARE(store.count(), 1);
+
+ store.addResult(2, &int0);
+
+ QCOMPARE(store.count(), 1);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.count(), 3);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResult(2, &int0);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.count(), 3);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResults(2, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(1, &int0);
+ QCOMPARE(store.count(), 0);
+
+ store.addResult(0, &int0);
+ QCOMPARE(store.count(), 4);
+ }
+
+ {
+ ResultStore<int> store;
+ store.addResults(2, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResults(0, &vec0);
+ QCOMPARE(store.count(), 4);
+ }
+ {
+ ResultStore<int> store;
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResults(0, &vec0);
+ QCOMPARE(store.count(), 2);
+
+ store.addResult(2, &int0);
+ QCOMPARE(store.count(), 5);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addResults(0, &vec0);
+ QCOMPARE(store.count(), 2);
+
+ store.addCanceledResult(2);
+ QCOMPARE(store.count(), 4);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addCanceledResults(0, 3);
+ QCOMPARE(store.count(), 2);
+ }
+
+ {
+ ResultStore<int> store;
+ store.setFilterMode(true);
+ store.addResults(3, &vec1);
+ QCOMPARE(store.count(), 0);
+
+ store.addCanceledResults(0, 3);
+ QCOMPARE(store.count(), 2); // results at 3 and 4 become available at index 0, 1
+
+ store.addResult(5, &int0);
+ QCOMPARE(store.count(), 3);// result 5 becomes available at index 2
+ }
+}
+
+QTEST_MAIN(tst_QtConcurrentResultStore)
+#include "tst_qtconcurrentresultstore.moc"
diff --git a/tests/auto/corelib/concurrent/qtconcurrentrun/.gitignore b/tests/auto/concurrent/qtconcurrentrun/.gitignore
index d7a8334ec4..d7a8334ec4 100644
--- a/tests/auto/corelib/concurrent/qtconcurrentrun/.gitignore
+++ b/tests/auto/concurrent/qtconcurrentrun/.gitignore
diff --git a/tests/auto/concurrent/qtconcurrentrun/qtconcurrentrun.pro b/tests/auto/concurrent/qtconcurrentrun/qtconcurrentrun.pro
new file mode 100644
index 0000000000..03d77b33a2
--- /dev/null
+++ b/tests/auto/concurrent/qtconcurrentrun/qtconcurrentrun.pro
@@ -0,0 +1,4 @@
+CONFIG += testcase parallel_test
+TARGET = tst_qtconcurrentrun
+QT = core testlib concurrent
+SOURCES = tst_qtconcurrentrun.cpp
diff --git a/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp b/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp
new file mode 100644
index 0000000000..86e3433c12
--- /dev/null
+++ b/tests/auto/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp
@@ -0,0 +1,463 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <qtconcurrentrun.h>
+#include <qfuture.h>
+#include <QString>
+#include <QtTest/QtTest>
+
+using namespace QtConcurrent;
+
+class tst_QtConcurrentRun: public QObject
+{
+ Q_OBJECT
+private slots:
+ void runLightFunction();
+ void runHeavyFunction();
+ void returnValue();
+ void functionObject();
+ void memberFunctions();
+ void implicitConvertibleTypes();
+ void runWaitLoop();
+ void recursive();
+#ifndef QT_NO_EXCEPTIONS
+ void exceptions();
+#endif
+ void functor();
+ void lambda();
+};
+
+void light()
+{
+ qDebug("in function");
+ qDebug("done function");
+}
+
+void heavy()
+{
+ qDebug("in function");
+ QString str;
+ for (int i = 0; i < 1000000; ++i)
+ str.append("a");
+ qDebug("done function");
+}
+
+
+void tst_QtConcurrentRun::runLightFunction()
+{
+ qDebug("starting function");
+ QFuture<void> future = run(light);
+ qDebug("waiting");
+ future.waitForFinished();
+ qDebug("done");
+}
+
+void tst_QtConcurrentRun::runHeavyFunction()
+{
+ qDebug("starting function");
+ QFuture<void> future = run(heavy);
+ qDebug("waiting");
+ future.waitForFinished();
+ qDebug("done");
+}
+
+int returnInt0()
+{
+ return 10;
+}
+
+int returnInt1(int i)
+{
+ return i;
+}
+
+class A
+{
+public:
+ int member0() { return 10; }
+ int member1(int in) { return in; }
+
+ typedef int result_type;
+ int operator()() { return 10; }
+ int operator()(int in) { return in; }
+};
+
+class AConst
+{
+public:
+ int member0() const { return 10; }
+ int member1(int in) const { return in; }
+
+ typedef int result_type;
+ int operator()() const { return 10; }
+ int operator()(int in) const { return in; }
+};
+
+void tst_QtConcurrentRun::returnValue()
+{
+ QFuture<int> f;
+
+ f = run(returnInt0);
+ QCOMPARE(f.result(), 10);
+
+ A a;
+ f = run(&a, &A::member0);
+ QCOMPARE(f.result(), 10);
+
+ f = run(&a, &A::member1, 20);
+ QCOMPARE(f.result(), 20);
+
+ f = run(a, &A::member0);
+ QCOMPARE(f.result(), 10);
+
+ f = run(a, &A::member1, 20);
+ QCOMPARE(f.result(), 20);
+
+ f = run(a);
+ QCOMPARE(f.result(), 10);
+
+ f = run(&a);
+ QCOMPARE(f.result(), 10);
+
+ f = run(a, 20);
+ QCOMPARE(f.result(), 20);
+
+ f = run(&a, 20);
+ QCOMPARE(f.result(), 20);
+
+ const AConst aConst = AConst();
+ f = run(&aConst, &AConst::member0);
+ QCOMPARE(f.result(), 10);
+
+ f = run(&aConst, &AConst::member1, 20);
+ QCOMPARE(f.result(), 20);
+
+ f = run(aConst, &AConst::member0);
+ QCOMPARE(f.result(), 10);
+
+ f = run(aConst, &AConst::member1, 20);
+ QCOMPARE(f.result(), 20);
+
+ f = run(aConst);
+ QCOMPARE(f.result(), 10);
+
+ f = run(&aConst);
+ QCOMPARE(f.result(), 10);
+
+ f = run(aConst, 20);
+ QCOMPARE(f.result(), 20);
+
+ f = run(&aConst, 20);
+ QCOMPARE(f.result(), 20);
+}
+
+struct TestClass
+{
+ void foo() { }
+ typedef void result_type;
+ void operator()() { }
+ void operator()(int) { }
+ void fooInt(int){ };
+};
+
+struct TestConstClass
+{
+ void foo() const { }
+ typedef void result_type;
+ void operator()() const { }
+ void operator()(int) const { }
+ void fooInt(int) const { };
+};
+
+void tst_QtConcurrentRun::functionObject()
+{
+ QFuture<void> f;
+ TestClass c;
+
+ f = run(c);
+ f = run(&c);
+ f = run(c, 10);
+ f = run(&c, 10);
+
+ const TestConstClass cc = TestConstClass();
+ f = run(cc);
+ f = run(&cc);
+ f = run(cc, 10);
+ f = run(&cc, 10);
+}
+
+
+void tst_QtConcurrentRun::memberFunctions()
+{
+ TestClass c;
+
+ run(c, &TestClass::foo).waitForFinished();
+ run(&c, &TestClass::foo).waitForFinished();
+ run(c, &TestClass::fooInt, 10).waitForFinished();
+ run(&c, &TestClass::fooInt, 10).waitForFinished();
+
+ const TestConstClass cc = TestConstClass();
+ run(cc, &TestConstClass::foo).waitForFinished();
+ run(&cc, &TestConstClass::foo).waitForFinished();
+ run(cc, &TestConstClass::fooInt, 10).waitForFinished();
+ run(&cc, &TestConstClass::fooInt, 10).waitForFinished();
+}
+
+
+void doubleFunction(double)
+{
+
+}
+
+void stringConstRefFunction(const QString &)
+{
+
+}
+
+void stringRefFunction(QString &)
+{
+
+}
+
+void stringFunction(QString)
+{
+
+}
+
+void stringIntFunction(QString)
+{
+
+}
+
+
+void tst_QtConcurrentRun::implicitConvertibleTypes()
+{
+ double d;
+ run(doubleFunction, d).waitForFinished();
+ int i;
+ run(doubleFunction, d).waitForFinished();
+ run(doubleFunction, i).waitForFinished();
+ run(doubleFunction, 10).waitForFinished();
+ run(stringFunction, QLatin1String("Foo")).waitForFinished();
+ run(stringConstRefFunction, QLatin1String("Foo")).waitForFinished();
+ QString string;
+ run(stringRefFunction, string).waitForFinished();
+}
+
+void fn() { }
+
+void tst_QtConcurrentRun::runWaitLoop()
+{
+ for (int i = 0; i < 1000; ++i)
+ run(fn).waitForFinished();
+}
+
+QAtomicInt count;
+
+void recursiveRun(int level)
+{
+ count.ref();
+ if (--level > 0) {
+ QFuture<void> f1 = run(recursiveRun, level);
+ QFuture<void> f2 = run(recursiveRun, level);
+ f1.waitForFinished();
+ f2.waitForFinished();
+ }
+}
+
+int recursiveResult(int level)
+{
+ count.ref();
+ if (--level > 0) {
+ QFuture<int> f1 = run(recursiveResult, level);
+ QFuture<int> f2 = run(recursiveResult, level);
+ return f1.result() + f2.result();
+ }
+ return 1;
+}
+
+void tst_QtConcurrentRun::recursive()
+{
+ int levels = 15;
+
+ for (int i = 0; i < QThread::idealThreadCount(); ++i) {
+ count.store(0);
+ QThreadPool::globalInstance()->setMaxThreadCount(i);
+ recursiveRun(levels);
+ QCOMPARE(count.load(), (int)pow(2.0, levels) - 1);
+ }
+
+ for (int i = 0; i < QThread::idealThreadCount(); ++i) {
+ count.store(0);
+ QThreadPool::globalInstance()->setMaxThreadCount(i);
+ recursiveResult(levels);
+ QCOMPARE(count.load(), (int)pow(2.0, levels) - 1);
+ }
+}
+
+int e;
+void vfn0()
+{
+ ++e;
+}
+
+int fn0()
+{
+ return 1;
+}
+
+void vfn1(double)
+{
+ ++e;
+}
+
+int fn1(int)
+{
+ return 1;
+}
+
+void vfn2(double, int *)
+{
+ ++e;
+}
+
+int fn2(double, int *)
+{
+ return 1;
+}
+
+
+#ifndef QT_NO_EXCEPTIONS
+void throwFunction()
+{
+ throw QtConcurrent::Exception();
+}
+
+int throwFunctionReturn()
+{
+ throw QtConcurrent::Exception();
+ return 0;
+}
+
+void tst_QtConcurrentRun::exceptions()
+{
+ bool caught = false;
+ try {
+ QtConcurrent::run(throwFunction).waitForFinished();
+ } catch (Exception &e) {
+ caught = true;
+ }
+ if (!caught)
+ QFAIL("did not get exception");
+
+ caught = false;
+ try {
+ QtConcurrent::run(throwFunctionReturn).waitForFinished();
+ } catch (Exception &e) {
+ caught = true;
+ }
+ if (!caught)
+ QFAIL("did not get exception");
+}
+#endif
+
+struct Functor {
+ int operator()() { return 42; }
+ double operator()(double a, double b) { return a/b; }
+ int operator()(int a, int b) { return a/b; }
+ void operator()(int) { }
+ void operator()(int, int, int) { }
+ void operator()(int, int, int, int) { }
+ void operator()(int, int, int, int, int) { }
+ void operator()(int, int, int, int, int, int) { }
+};
+
+// This tests functor without result_type; decltype need to be supported by the compiler.
+void tst_QtConcurrentRun::functor()
+{
+#ifndef Q_COMPILER_DECLTYPE
+ QSKIP("Compiler does not support decltype");
+#else
+ Functor f;
+ {
+ QFuture<int> fut = QtConcurrent::run(f);
+ QCOMPARE(fut.result(), 42);
+ }
+ {
+ QFuture<double> fut = QtConcurrent::run(f, 8.5, 1.8);
+ QCOMPARE(fut.result(), (8.5/1.8));
+ }
+ {
+ QFuture<int> fut = QtConcurrent::run(f, 19, 3);
+ QCOMPARE(fut.result(), int(19/3));
+ }
+ {
+ QtConcurrent::run(f, 1).waitForFinished();
+ QtConcurrent::run(f, 1,2).waitForFinished();
+ QtConcurrent::run(f, 1,2,3).waitForFinished();
+ QtConcurrent::run(f, 1,2,3,4).waitForFinished();
+ QtConcurrent::run(f, 1,2,3,4,5).waitForFinished();
+ }
+#endif
+}
+
+void tst_QtConcurrentRun::lambda()
+{
+#ifndef Q_COMPILER_LAMBDA
+ QSKIP("Compiler does not support lambda");
+#else
+ QCOMPARE(QtConcurrent::run([](){ return 45; }).result(), 45);
+ QCOMPARE(QtConcurrent::run([](int a){ return a+15; }, 12).result(), 12+15);
+ QCOMPARE(QtConcurrent::run([](int a, double b){ return a + b; }, 12, 15).result(), double(12+15));
+ QCOMPARE(QtConcurrent::run([](int a , int, int, int, int b){ return a + b; }, 1, 2, 3, 4, 5).result(), 1 + 5);
+
+#ifdef Q_COMPILER_INITIALIZER_LISTS
+ {
+ QString str { "Hello World Foo" };
+ QFuture<QStringList> f1 = QtConcurrent::run([&](){ return str.split(' '); });
+ auto r = f1.result();
+ QCOMPARE(r, QStringList({"Hello", "World", "Foo"}));
+ }
+#endif
+#endif
+}
+
+QTEST_MAIN(tst_QtConcurrentRun)
+#include "tst_qtconcurrentrun.moc"
diff --git a/tests/auto/corelib/concurrent/qtconcurrentthreadengine/.gitignore b/tests/auto/concurrent/qtconcurrentthreadengine/.gitignore
index a2e2896246..a2e2896246 100644
--- a/tests/auto/corelib/concurrent/qtconcurrentthreadengine/.gitignore
+++ b/tests/auto/concurrent/qtconcurrentthreadengine/.gitignore
diff --git a/tests/auto/concurrent/qtconcurrentthreadengine/qtconcurrentthreadengine.pro b/tests/auto/concurrent/qtconcurrentthreadengine/qtconcurrentthreadengine.pro
new file mode 100644
index 0000000000..f6ddd33504
--- /dev/null
+++ b/tests/auto/concurrent/qtconcurrentthreadengine/qtconcurrentthreadengine.pro
@@ -0,0 +1,4 @@
+CONFIG += testcase parallel_test
+TARGET = tst_qtconcurrentthreadengine
+QT = core testlib concurrent
+SOURCES = tst_qtconcurrentthreadengine.cpp
diff --git a/tests/auto/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp b/tests/auto/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp
new file mode 100644
index 0000000000..9722887c7d
--- /dev/null
+++ b/tests/auto/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp
@@ -0,0 +1,520 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <qtconcurrentthreadengine.h>
+#include <qtconcurrentexception.h>
+#include <QThread>
+#include <QtTest/QtTest>
+
+using namespace QtConcurrent;
+
+class tst_QtConcurrentThreadEngine: public QObject
+{
+ Q_OBJECT
+private slots:
+ void runDirectly();
+ void result();
+ void runThroughStarter();
+ void cancel();
+ void throttle();
+ void threadCount();
+ void multipleResults();
+ void stresstest();
+ void cancelQueuedSlowUser();
+#ifndef QT_NO_EXCEPTIONS
+ void exceptions();
+#endif
+};
+
+
+class PrintUser : public ThreadEngine<void>
+{
+public:
+ ThreadFunctionResult threadFunction()
+ {
+ QTest::qSleep(50);
+ QTest::qSleep(100);
+ return ThreadFinished;
+ }
+};
+
+void tst_QtConcurrentThreadEngine::runDirectly()
+{
+ {
+ PrintUser engine;
+ engine.startSingleThreaded();
+ engine.startBlocking();
+ }
+ {
+ PrintUser *engine = new PrintUser();
+ QFuture<void> f = engine->startAsynchronously();
+ f.waitForFinished();
+ }
+}
+
+class StringResultUser : public ThreadEngine<QString>
+{
+public:
+ typedef QString ResultType;
+ StringResultUser()
+ : done(false) { }
+
+ bool shouldStartThread()
+ {
+ return !done;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ done = true;
+ return ThreadFinished;
+ }
+
+ QString *result()
+ {
+ foo = "Foo";
+ return &foo;
+ }
+ QString foo;
+ bool done;
+};
+
+void tst_QtConcurrentThreadEngine::result()
+{
+ StringResultUser engine;
+ QCOMPARE(*engine.startBlocking(), QString("Foo"));
+}
+
+class VoidResultUser : public ThreadEngine<void>
+{
+public:
+ bool shouldStartThread()
+ {
+ return !done;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ done = true;
+ return ThreadFinished;
+ }
+
+ void *result()
+ {
+ return 0;
+ }
+ bool done;
+};
+
+void tst_QtConcurrentThreadEngine::runThroughStarter()
+{
+ {
+ ThreadEngineStarter<QString> starter = startThreadEngine(new StringResultUser());
+ QFuture<QString> f = starter.startAsynchronously();
+ QCOMPARE(f.result(), QString("Foo"));
+ }
+
+ {
+ ThreadEngineStarter<QString> starter = startThreadEngine(new StringResultUser());
+ QString str = starter.startBlocking();
+ QCOMPARE(str, QString("Foo"));
+ }
+}
+
+class CancelUser : public ThreadEngine<void>
+{
+public:
+ void *result()
+ {
+ return 0;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ while (this->isCanceled() == false)
+ {
+ QTest::qSleep(10);
+ }
+ return ThreadFinished;
+ }
+};
+
+void tst_QtConcurrentThreadEngine::cancel()
+{
+ {
+ CancelUser *engine = new CancelUser();
+ QFuture<void> f = engine->startAsynchronously();
+ f.cancel();
+ f.waitForFinished();
+ }
+ {
+ CancelUser *engine = new CancelUser();
+ QFuture<void> f = engine->startAsynchronously();
+ QTest::qSleep(10);
+ f.cancel();
+ f.waitForFinished();
+ }
+}
+
+QAtomicInt count;
+class ThrottleAlwaysUser : public ThreadEngine<void>
+{
+public:
+ ThrottleAlwaysUser()
+ {
+ count.store(initialCount = 100);
+ finishing = false;
+ }
+
+ bool shouldStartThread()
+ {
+ return !finishing;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ forever {
+ const int local = count.load();
+ if (local == 0) {
+ finishing = true;
+ return ThreadFinished;
+ }
+
+ if (count.testAndSetOrdered(local, local - 1))
+ break;
+ }
+ return ThrottleThread;
+ }
+
+ bool finishing;
+ int initialCount;
+};
+
+// Test that a user task with a thread function that always
+// want to be throttled still completes. The thread engine
+// should make keep one thread running at all times.
+void tst_QtConcurrentThreadEngine::throttle()
+{
+ const int repeats = 10;
+ for (int i = 0; i < repeats; ++i) {
+ QFuture<void> f = (new ThrottleAlwaysUser())->startAsynchronously();
+ f.waitForFinished();
+ QCOMPARE(count.load(), 0);
+ }
+
+ for (int i = 0; i < repeats; ++i) {
+ ThrottleAlwaysUser t;
+ t.startBlocking();
+ QCOMPARE(count.load(), 0);
+ }
+}
+
+QSet<QThread *> threads;
+QMutex mutex;
+class ThreadCountUser : public ThreadEngine<void>
+{
+public:
+ ThreadCountUser(bool finishImmediately = false)
+ {
+ threads.clear();
+ finishing = finishImmediately;
+ }
+
+ bool shouldStartThread()
+ {
+ return !finishing;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ {
+ QMutexLocker lock(&mutex);
+ threads.insert(QThread::currentThread());
+ }
+ QTest::qSleep(10);
+ finishing = true;
+ return ThreadFinished;
+ }
+
+ bool finishing;
+};
+
+void tst_QtConcurrentThreadEngine::threadCount()
+{
+ QSKIP("QTBUG-23333: This test is unstable");
+
+ const int repeats = 10;
+ for (int i = 0; i < repeats; ++i) {
+ ThreadCountUser t;
+ t.startBlocking();
+ QCOMPARE(threads.count(), QThreadPool::globalInstance()->maxThreadCount() + 1); // +1 for the main thread.
+
+ (new ThreadCountUser())->startAsynchronously().waitForFinished();
+ QCOMPARE(threads.count(), QThreadPool::globalInstance()->maxThreadCount());
+ }
+
+ // Set the finish flag immediately, this should give us one thread only.
+ for (int i = 0; i < repeats; ++i) {
+ ThreadCountUser t(true /*finishImmediately*/);
+ t.startBlocking();
+ QCOMPARE(threads.count(), 1);
+
+ (new ThreadCountUser(true /*finishImmediately*/))->startAsynchronously().waitForFinished();
+ QCOMPARE(threads.count(), 1);
+ }
+}
+
+class MultipleResultsUser : public ThreadEngine<int>
+{
+public:
+ bool shouldStartThread()
+ {
+ return false;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ for (int i = 0; i < 10; ++i)
+ this->reportResult(&i);
+ return ThreadFinished;
+ }
+};
+
+
+void tst_QtConcurrentThreadEngine::multipleResults()
+{
+ MultipleResultsUser *engine = new MultipleResultsUser();
+ QFuture<int> f = engine->startAsynchronously();
+ QCOMPARE(f.results().count() , 10);
+ QCOMPARE(f.resultAt(0), 0);
+ QCOMPARE(f.resultAt(5), 5);
+ QCOMPARE(f.resultAt(9), 9);
+ f.waitForFinished();
+}
+
+
+class NoThreadsUser : public ThreadEngine<void>
+{
+public:
+ bool shouldStartThread()
+ {
+ return false;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ return ThreadFinished;
+ }
+
+ void *result()
+ {
+ return 0;
+ }
+};
+
+void tst_QtConcurrentThreadEngine::stresstest()
+{
+ const int times = 20000;
+
+ for (int i = 0; i < times; ++i) {
+ VoidResultUser *engine = new VoidResultUser();
+ engine->startAsynchronously().waitForFinished();
+ }
+
+ for (int i = 0; i < times; ++i) {
+ VoidResultUser *engine = new VoidResultUser();
+ engine->startAsynchronously();
+ }
+
+ for (int i = 0; i < times; ++i) {
+ VoidResultUser *engine = new VoidResultUser();
+ engine->startAsynchronously().waitForFinished();
+ }
+}
+
+const int sleepTime = 20;
+class SlowUser : public ThreadEngine<void>
+{
+public:
+ bool shouldStartThread() { return false; }
+ ThreadFunctionResult threadFunction() { QTest::qSleep(sleepTime); return ThreadFinished; }
+};
+
+void tst_QtConcurrentThreadEngine::cancelQueuedSlowUser()
+{
+ const int times = 100;
+
+ QTime t;
+ t.start();
+
+ {
+ QList<QFuture<void> > futures;
+ for (int i = 0; i < times; ++i) {
+ SlowUser *engine = new SlowUser();
+ futures.append(engine->startAsynchronously());
+ }
+
+ foreach(QFuture<void> future, futures)
+ future.cancel();
+ }
+
+ QVERIFY(t.elapsed() < (sleepTime * times) / 2);
+}
+
+#ifndef QT_NO_EXCEPTIONS
+
+class QtConcurrentExceptionThrower : public ThreadEngine<void>
+{
+public:
+ QtConcurrentExceptionThrower(QThread *blockThread = 0)
+ {
+ this->blockThread = blockThread;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ QTest::qSleep(50);
+ throw QtConcurrent::Exception();
+ return ThreadFinished;
+ }
+ QThread *blockThread;
+};
+
+class UnrelatedExceptionThrower : public ThreadEngine<void>
+{
+public:
+ UnrelatedExceptionThrower(QThread *blockThread = 0)
+ {
+ this->blockThread = blockThread;
+ }
+
+ ThreadFunctionResult threadFunction()
+ {
+ QTest::qSleep(50);
+ throw int();
+ return ThreadFinished;
+ }
+ QThread *blockThread;
+};
+
+void tst_QtConcurrentThreadEngine::exceptions()
+{
+ // Asynchronous mode:
+ {
+ bool caught = false;
+ try {
+ QtConcurrentExceptionThrower *e = new QtConcurrentExceptionThrower();
+ QFuture<void> f = e->startAsynchronously();
+ f.waitForFinished();
+ } catch (const Exception &) {
+ caught = true;
+ }
+ QVERIFY2(caught, "did not get exception");
+ }
+
+ // Blocking mode:
+ // test throwing the exception from a worker thread.
+ {
+ bool caught = false;
+ try {
+ QtConcurrentExceptionThrower e(QThread::currentThread());
+ e.startBlocking();
+ } catch (const Exception &) {
+ caught = true;
+ }
+ QVERIFY2(caught, "did not get exception");
+ }
+
+ // test throwing the exception from the main thread (different code path)
+ {
+ bool caught = false;
+ try {
+ QtConcurrentExceptionThrower e(0);
+ e.startBlocking();
+ } catch (const Exception &) {
+ caught = true;
+ }
+ QVERIFY2(caught, "did not get exception");
+ }
+
+ // Asynchronous mode:
+ {
+ bool caught = false;
+ try {
+ UnrelatedExceptionThrower *e = new UnrelatedExceptionThrower();
+ QFuture<void> f = e->startAsynchronously();
+ f.waitForFinished();
+ } catch (const QtConcurrent::UnhandledException &) {
+ caught = true;
+ }
+ QVERIFY2(caught, "did not get exception");
+ }
+
+ // Blocking mode:
+ // test throwing the exception from a worker thread.
+ {
+ bool caught = false;
+ try {
+ UnrelatedExceptionThrower e(QThread::currentThread());
+ e.startBlocking();
+ } catch (const QtConcurrent::UnhandledException &) {
+ caught = true;
+ }
+ QVERIFY2(caught, "did not get exception");
+ }
+
+ // test throwing the exception from the main thread (different code path)
+ {
+ bool caught = false;
+ try {
+ UnrelatedExceptionThrower e(0);
+ e.startBlocking();
+ } catch (const QtConcurrent::UnhandledException &) {
+ caught = true;
+ }
+ QVERIFY2(caught, "did not get exception");
+ }
+}
+
+#endif
+
+QTEST_MAIN(tst_QtConcurrentThreadEngine)
+
+#include "tst_qtconcurrentthreadengine.moc"
diff --git a/tests/auto/corelib/animation/qabstractanimation/tst_qabstractanimation.cpp b/tests/auto/corelib/animation/qabstractanimation/tst_qabstractanimation.cpp
index deea511a5f..5530eb8e07 100644
--- a/tests/auto/corelib/animation/qabstractanimation/tst_qabstractanimation.cpp
+++ b/tests/auto/corelib/animation/qabstractanimation/tst_qabstractanimation.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/animation/qanimationgroup/tst_qanimationgroup.cpp b/tests/auto/corelib/animation/qanimationgroup/tst_qanimationgroup.cpp
index 1502e5c8d2..3abd851c89 100644
--- a/tests/auto/corelib/animation/qanimationgroup/tst_qanimationgroup.cpp
+++ b/tests/auto/corelib/animation/qanimationgroup/tst_qanimationgroup.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/animation/qparallelanimationgroup/tst_qparallelanimationgroup.cpp b/tests/auto/corelib/animation/qparallelanimationgroup/tst_qparallelanimationgroup.cpp
index 755de9d0b8..2fdf1de9c8 100644
--- a/tests/auto/corelib/animation/qparallelanimationgroup/tst_qparallelanimationgroup.cpp
+++ b/tests/auto/corelib/animation/qparallelanimationgroup/tst_qparallelanimationgroup.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/animation/qpauseanimation/tst_qpauseanimation.cpp b/tests/auto/corelib/animation/qpauseanimation/tst_qpauseanimation.cpp
index 68ada06669..9b8b6b37e0 100644
--- a/tests/auto/corelib/animation/qpauseanimation/tst_qpauseanimation.cpp
+++ b/tests/auto/corelib/animation/qpauseanimation/tst_qpauseanimation.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/animation/qpropertyanimation/tst_qpropertyanimation.cpp b/tests/auto/corelib/animation/qpropertyanimation/tst_qpropertyanimation.cpp
index c8688c89f6..534dec8160 100644
--- a/tests/auto/corelib/animation/qpropertyanimation/tst_qpropertyanimation.cpp
+++ b/tests/auto/corelib/animation/qpropertyanimation/tst_qpropertyanimation.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp b/tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp
index 3751816dbc..63a4de5ac9 100644
--- a/tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp
+++ b/tests/auto/corelib/animation/qsequentialanimationgroup/tst_qsequentialanimationgroup.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/animation/qvariantanimation/tst_qvariantanimation.cpp b/tests/auto/corelib/animation/qvariantanimation/tst_qvariantanimation.cpp
index b7e1015a13..0c88c73d41 100644
--- a/tests/auto/corelib/animation/qvariantanimation/tst_qvariantanimation.cpp
+++ b/tests/auto/corelib/animation/qvariantanimation/tst_qvariantanimation.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/codecs/qtextcodec/echo/main.cpp b/tests/auto/corelib/codecs/qtextcodec/echo/main.cpp
index 934f9f904b..978a026e8d 100644
--- a/tests/auto/corelib/codecs/qtextcodec/echo/main.cpp
+++ b/tests/auto/corelib/codecs/qtextcodec/echo/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp b/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp
index b6dcd3ed63..7daed397d5 100644
--- a/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp
+++ b/tests/auto/corelib/codecs/qtextcodec/tst_qtextcodec.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,7 +47,6 @@
#include <qtextdocument.h>
#include <time.h>
#include <qprocess.h>
-#include <QtConcurrentMap>
#include <QThreadPool>
class tst_QTextCodec : public QObject
@@ -55,9 +54,7 @@ class tst_QTextCodec : public QObject
Q_OBJECT
private slots:
-#ifndef QT_NO_CONCURRENT
void threadSafety();
-#endif
void toUnicode_data();
void toUnicode();
@@ -1939,48 +1936,75 @@ void tst_QTextCodec::toLocal8Bit()
}
#endif
-static QByteArray loadAndConvert(const QByteArray &codecName)
+class LoadAndConvert: public QRunnable
{
- QTextCodec *c = QTextCodec::codecForName(codecName);
- if (!c) {
- qWarning() << "WARNING" << codecName << "not found?";
- return QByteArray();
+public:
+ LoadAndConvert(const QByteArray &source, QByteArray *destination)
+ : codecName(source), target(destination)
+ {}
+ QByteArray codecName;
+ QByteArray *target;
+ void run()
+ {
+ QTextCodec *c = QTextCodec::codecForName(codecName);
+ if (!c) {
+ qWarning() << "WARNING" << codecName << "not found?";
+ return;
+ }
+ QString str = QString::fromLatin1(codecName);
+ QByteArray b = c->fromUnicode(str);
+ c->toUnicode(b);
+ *target = codecName;
}
- QString str = QString::fromLatin1(codecName);
- QByteArray b = c->fromUnicode(str);
- c->toUnicode(b);
- return codecName;
-}
+};
-static int loadAndConvertMIB(int mib)
+class LoadAndConvertMIB: public QRunnable
{
- QTextCodec *c = QTextCodec::codecForMib(mib);
- if (!c) {
- qWarning() << "WARNING" << mib << "not found?";
- return 0;
+public:
+ LoadAndConvertMIB(int mib, int *target)
+ : mib(mib), target(target)
+ {}
+ int mib;
+ int *target;
+ void run()
+ {
+ QTextCodec *c = QTextCodec::codecForMib(mib);
+ if (!c) {
+ qWarning() << "WARNING" << mib << "not found?";
+ return;
+ }
+ QString str = QString::number(mib);
+ QByteArray b = c->fromUnicode(str);
+ c->toUnicode(b);
+ *target = mib;
}
- QString str = QString::number(mib);
- QByteArray b = c->fromUnicode(str);
- c->toUnicode(b);
- return mib;
-}
+};
-#ifndef QT_NO_CONCURRENT
void tst_QTextCodec::threadSafety()
{
QList<QByteArray> codecList = QTextCodec::availableCodecs();
QList<int> mibList = QTextCodec::availableMibs();
QThreadPool::globalInstance()->setMaxThreadCount(12);
- QFuture<QByteArray> res = QtConcurrent::mapped(codecList, loadAndConvert);
+ QVector<QByteArray> res;
+ res.resize(codecList.size());
+ for (int i = 0; i < codecList.size(); ++i) {
+ QThreadPool::globalInstance()->start(new LoadAndConvert(codecList.at(i), &res[i]));
+ }
- QFuture<int> res2 = QtConcurrent::mapped(mibList, loadAndConvertMIB);
+ QVector<int> res2;
+ res2.resize(mibList.size());
+ for (int i = 0; i < mibList.size(); ++i) {
+ QThreadPool::globalInstance()->start(new LoadAndConvertMIB(mibList.at(i), &res2[i]));
+ }
+
+ // wait for all threads to finish working
+ QThreadPool::globalInstance()->waitForDone();
- QCOMPARE(res.results(), codecList);
- QCOMPARE(res2.results(), mibList);
+ QCOMPARE(res.toList(), codecList);
+ QCOMPARE(res2.toList(), mibList);
}
-#endif
void tst_QTextCodec::invalidNames()
{
diff --git a/tests/auto/corelib/codecs/utf8/tst_utf8.cpp b/tests/auto/corelib/codecs/utf8/tst_utf8.cpp
index f6ff8b2208..69b91683d4 100644
--- a/tests/auto/corelib/codecs/utf8/tst_utf8.cpp
+++ b/tests/auto/corelib/codecs/utf8/tst_utf8.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/concurrent/concurrent.pro b/tests/auto/corelib/concurrent/concurrent.pro
deleted file mode 100644
index 6541b0ce42..0000000000
--- a/tests/auto/corelib/concurrent/concurrent.pro
+++ /dev/null
@@ -1,13 +0,0 @@
-TEMPLATE=subdirs
-SUBDIRS=\
- qfuture \
- qfuturesynchronizer \
- qfuturewatcher \
- qtconcurrentfilter \
- qtconcurrentiteratekernel \
- qtconcurrentmap \
- qtconcurrentresultstore \
- qtconcurrentrun \
- qtconcurrentthreadengine \
- qthreadpool
-
diff --git a/tests/auto/corelib/concurrent/qfuture/qfuture.pro b/tests/auto/corelib/concurrent/qfuture/qfuture.pro
deleted file mode 100644
index 517871ab5d..0000000000
--- a/tests/auto/corelib/concurrent/qfuture/qfuture.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-CONFIG += testcase parallel_test
-TARGET = tst_qfuture
-QT = core-private testlib
-SOURCES = tst_qfuture.cpp
-DEFINES += QT_STRICT_ITERATORS
diff --git a/tests/auto/corelib/concurrent/qfuture/tst_qfuture.cpp b/tests/auto/corelib/concurrent/qfuture/tst_qfuture.cpp
deleted file mode 100644
index 53694100ba..0000000000
--- a/tests/auto/corelib/concurrent/qfuture/tst_qfuture.cpp
+++ /dev/null
@@ -1,1438 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite 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 <QCoreApplication>
-#include <QDebug>
-
-#define QFUTURE_TEST
-
-#include <QtTest/QtTest>
-#include <qfuture.h>
-#include <qfuturewatcher.h>
-#include <qtconcurrentresultstore.h>
-#include <qtconcurrentexception.h>
-#include <private/qfutureinterface_p.h>
-
-using namespace QtConcurrent;
-
-// COM interface macro.
-#if defined(Q_OS_WIN) && defined(interface)
-# undef interface
-#endif
-
-class tst_QFuture: public QObject
-{
- Q_OBJECT
-private slots:
- void resultStore();
- void future();
- void futureInterface();
- void refcounting();
- void cancel();
- void statePropagation();
- void multipleResults();
- void indexedResults();
- void progress();
- void progressText();
- void resultsAfterFinished();
- void resultsAsList();
- void implicitConversions();
- void iterators();
- void pause();
- void throttling();
- void voidConversions();
-#ifndef QT_NO_EXCEPTIONS
- void exceptions();
- void nestedExceptions();
-#endif
-};
-
-void tst_QFuture::resultStore()
-{
- int int0 = 0;
- int int1 = 1;
- int int2 = 2;
-
- {
- ResultStore<int> store;
- QVERIFY(store.begin() == store.end());
- QVERIFY(store.resultAt(0) == store.end());
- QVERIFY(store.resultAt(1) == store.end());
- }
-
-
- {
- ResultStoreBase store;
- store.addResult(-1, &int0); // note to self: adding a pointer to the stack here is ok since
- store.addResult(1, &int1); // ResultStoreBase does not take ownership, only ResultStore<> does.
- ResultIteratorBase it = store.begin();
- QCOMPARE(it.resultIndex(), 0);
- QVERIFY(it == store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 1);
- QVERIFY(it != store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QVERIFY(it != store.begin());
- QVERIFY(it == store.end());
- }
-
- QVector<int> vec0 = QVector<int>() << 2 << 3;
- QVector<int> vec1 = QVector<int>() << 4 << 5;
-
- {
- ResultStoreBase store;
- store.addResults(-1, &vec0, 2, 2);
- store.addResults(-1, &vec1, 2, 2);
- ResultIteratorBase it = store.begin();
- QCOMPARE(it.resultIndex(), 0);
- QVERIFY(it == store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 1);
- QVERIFY(it != store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 2);
-
- ++it;
- QCOMPARE(it.resultIndex(), 3);
-
- ++it;
- QVERIFY(it == store.end());
- }
- {
- ResultStoreBase store;
- store.addResult(-1, &int0);
- store.addResults(-1, &vec1, 2, 2);
- store.addResult(-1, &int1);
-
- ResultIteratorBase it = store.begin();
- QCOMPARE(it.resultIndex(), 0);
- QVERIFY(it == store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 1);
- QVERIFY(it != store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 2);
- QVERIFY(it != store.end());
- ++it;
- QCOMPARE(it.resultIndex(), 3);
- QVERIFY(it != store.end());
- ++it;
- QVERIFY(it == store.end());
-
- QCOMPARE(store.resultAt(0).resultIndex(), 0);
- QCOMPARE(store.resultAt(1).resultIndex(), 1);
- QCOMPARE(store.resultAt(2).resultIndex(), 2);
- QCOMPARE(store.resultAt(3).resultIndex(), 3);
- QCOMPARE(store.resultAt(4), store.end());
- }
- {
- ResultStore<int> store;
- store.addResult(-1, &int0);
- store.addResults(-1, &vec0);
- store.addResult(-1, &int1);
-
- ResultIteratorBase it = store.begin();
- QCOMPARE(it.resultIndex(), 0);
- QVERIFY(it == store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 1);
- QVERIFY(it != store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 2);
- QVERIFY(it != store.end());
- ++it;
- QCOMPARE(it.resultIndex(), 3);
- QVERIFY(it != store.end());
- ++it;
- QVERIFY(it == store.end());
-
- QCOMPARE(store.resultAt(0).value(), int0);
- QCOMPARE(store.resultAt(1).value(), vec0[0]);
- QCOMPARE(store.resultAt(2).value(), vec0[1]);
- QCOMPARE(store.resultAt(3).value(), int1);
- }
- {
- ResultStore<int> store;
- store.addResult(-1, &int0);
- store.addResults(-1, &vec0);
- store.addResult(200, &int1);
-
- QCOMPARE(store.resultAt(0).value(), int0);
- QCOMPARE(store.resultAt(1).value(), vec0[0]);
- QCOMPARE(store.resultAt(2).value(), vec0[1]);
- QCOMPARE(store.resultAt(200).value(), int1);
- }
-
- {
- ResultStore<int> store;
- store.addResult(1, &int1);
- store.addResult(0, &int0);
- store.addResult(-1, &int2);
-
- QCOMPARE(store.resultAt(0).value(), int0);
- QCOMPARE(store.resultAt(1).value(), int1);
- QCOMPARE(store.resultAt(2).value(), int2);
- }
-
- {
- ResultStore<int> store;
- QCOMPARE(store.contains(0), false);
- QCOMPARE(store.contains(1), false);
- QCOMPARE(store.contains(INT_MAX), false);
- }
-
- {
- // Test filter mode, where "gaps" in the result array aren't allowed.
- ResultStore<int> store;
- store.setFilterMode(true);
-
- store.addResult(0, &int0);
- QCOMPARE(store.contains(0), true);
-
- store.addResult(2, &int2); // add result at index 2
- QCOMPARE(store.contains(2), false); // but 1 is missing, so this 2 won't be reported yet.
-
- store.addResult(1, &int1);
- QCOMPARE(store.contains(1), true);
- QCOMPARE(store.contains(2), true); // 2 should be visible now.
-
- store.addResult(4, &int0);
- store.addResult(5, &int0);
- store.addResult(7, &int0);
- QCOMPARE(store.contains(4), false);
- QCOMPARE(store.contains(5), false);
- QCOMPARE(store.contains(7), false);
-
- store.addResult(3, &int0); // adding 3 makes 4 and 5 visible
- QCOMPARE(store.contains(4), true);
- QCOMPARE(store.contains(5), true);
- QCOMPARE(store.contains(7), false);
-
- store.addResult(6, &int0); // adding 6 makes 7 visible
-
- QCOMPARE(store.contains(6), true);
- QCOMPARE(store.contains(7), true);
- QCOMPARE(store.contains(8), false);
- }
-
- {
- // test canceled results
- ResultStore<int> store;
- store.setFilterMode(true);
-
- store.addResult(0, &int0);
- QCOMPARE(store.contains(0), true);
-
- store.addResult(2, &int0);
- QCOMPARE(store.contains(2), false);
-
- store.addCanceledResult(1); // report no result at 1
-
- QCOMPARE(store.contains(0), true);
- QCOMPARE(store.contains(1), true); // 2 gets renamed to 1
- QCOMPARE(store.contains(2), false);
-
- store.addResult(3, &int0);
- QCOMPARE(store.contains(2), true); //3 gets renamed to 2
-
- store.addResult(6, &int0);
- store.addResult(7, &int0);
- QCOMPARE(store.contains(3), false);
-
- store.addCanceledResult(4);
- store.addCanceledResult(5);
-
- QCOMPARE(store.contains(3), true); //6 gets renamed to 3
- QCOMPARE(store.contains(4), true); //7 gets renamed to 4
-
- store.addResult(8, &int0);
- QCOMPARE(store.contains(5), true); //8 gets renamed to 4
-
- QCOMPARE(store.contains(6), false);
- QCOMPARE(store.contains(7), false);
- }
-
- {
- // test addResult return value
- ResultStore<int> store;
- store.setFilterMode(true);
-
- store.addResult(0, &int0);
- QCOMPARE(store.count(), 1); // result 0 becomes available
- QCOMPARE(store.contains(0), true);
-
- store.addResult(2, &int0);
- QCOMPARE(store.count(), 1);
- QCOMPARE(store.contains(2), false);
-
- store.addCanceledResult(1);
- QCOMPARE(store.count(), 2); // result 2 is renamed to 1 and becomes available
-
- QCOMPARE(store.contains(0), true);
- QCOMPARE(store.contains(1), true);
- QCOMPARE(store.contains(2), false);
-
- store.addResult(3, &int0);
- QCOMPARE(store.count(), 3);
- QCOMPARE(store.contains(2), true);
-
- store.addResult(6, &int0);
- QCOMPARE(store.count(), 3);
- store.addResult(7, &int0);
- QCOMPARE(store.count(), 3);
- QCOMPARE(store.contains(3), false);
-
- store.addCanceledResult(4);
- store.addCanceledResult(5);
- QCOMPARE(store.count(), 5); // 6 and 7 is renamed to 3 and 4 and becomes available
-
- QCOMPARE(store.contains(3), true);
- QCOMPARE(store.contains(4), true);
-
- store.addResult(8, &int0);
- QCOMPARE(store.contains(5), true);
- QCOMPARE(store.count(), 6);
-
- QCOMPARE(store.contains(6), false);
- QCOMPARE(store.contains(7), false);
- }
-
- {
- // test resultCount in non-filtered mode. It should always be possible
- // to iterate through the results 0 to resultCount.
- ResultStore<int> store;
- store.addResult(0, &int0);
-
- QCOMPARE(store.count(), 1);
-
- store.addResult(2, &int0);
-
- QCOMPARE(store.count(), 1);
-
- store.addResult(1, &int0);
- QCOMPARE(store.count(), 3);
- }
-
- {
- ResultStore<int> store;
- store.addResult(2, &int0);
- QCOMPARE(store.count(), 0);
-
- store.addResult(1, &int0);
- QCOMPARE(store.count(), 0);
-
- store.addResult(0, &int0);
- QCOMPARE(store.count(), 3);
- }
-
- {
- ResultStore<int> store;
- store.addResults(2, &vec1);
- QCOMPARE(store.count(), 0);
-
- store.addResult(1, &int0);
- QCOMPARE(store.count(), 0);
-
- store.addResult(0, &int0);
- QCOMPARE(store.count(), 4);
- }
-
- {
- ResultStore<int> store;
- store.addResults(2, &vec1);
- QCOMPARE(store.count(), 0);
-
- store.addResults(0, &vec0);
- QCOMPARE(store.count(), 4);
- }
- {
- ResultStore<int> store;
- store.addResults(3, &vec1);
- QCOMPARE(store.count(), 0);
-
- store.addResults(0, &vec0);
- QCOMPARE(store.count(), 2);
-
- store.addResult(2, &int0);
- QCOMPARE(store.count(), 5);
- }
-
- {
- ResultStore<int> store;
- store.setFilterMode(true);
- store.addResults(3, &vec1);
- QCOMPARE(store.count(), 0);
-
- store.addResults(0, &vec0);
- QCOMPARE(store.count(), 2);
-
- store.addCanceledResult(2);
- QCOMPARE(store.count(), 4);
- }
-
- {
- ResultStore<int> store;
- store.setFilterMode(true);
- store.addResults(3, &vec1);
- QCOMPARE(store.count(), 0);
-
- store.addCanceledResults(0, 3);
- QCOMPARE(store.count(), 2);
- }
-
- {
- ResultStore<int> store;
- store.setFilterMode(true);
- store.addResults(3, &vec1);
- QCOMPARE(store.count(), 0);
-
- store.addCanceledResults(0, 3);
- QCOMPARE(store.count(), 2); // results at 3 and 4 become available at index 0, 1
-
- store.addResult(5, &int0);
- QCOMPARE(store.count(), 3);// result 5 becomes available at index 2
- }
-
- {
- ResultStore<int> store;
- store.addResult(1, &int0);
- store.addResult(3, &int0);
- store.addResults(6, &vec0);
- QCOMPARE(store.contains(0), false);
- QCOMPARE(store.contains(1), true);
- QCOMPARE(store.contains(2), false);
- QCOMPARE(store.contains(3), true);
- QCOMPARE(store.contains(4), false);
- QCOMPARE(store.contains(5), false);
- QCOMPARE(store.contains(6), true);
- QCOMPARE(store.contains(7), true);
- }
-
- {
- ResultStore<int> store;
- store.setFilterMode(true);
- store.addResult(1, &int0);
- store.addResult(3, &int0);
- store.addResults(6, &vec0);
- QCOMPARE(store.contains(0), false);
- QCOMPARE(store.contains(1), false);
- QCOMPARE(store.contains(2), false);
- QCOMPARE(store.contains(3), false);
- QCOMPARE(store.contains(4), false);
- QCOMPARE(store.contains(5), false);
- QCOMPARE(store.contains(6), false);
- QCOMPARE(store.contains(7), false);
-
- store.addCanceledResult(0);
- store.addCanceledResult(2);
- store.addCanceledResults(4, 2);
-
- QCOMPARE(store.contains(0), true);
- QCOMPARE(store.contains(1), true);
- QCOMPARE(store.contains(2), true);
- QCOMPARE(store.contains(3), true);
- QCOMPARE(store.contains(4), false);
- QCOMPARE(store.contains(5), false);
- QCOMPARE(store.contains(6), false);
- QCOMPARE(store.contains(7), false);
- }
- {
- ResultStore<int> store;
- store.setFilterMode(true);
- store.addCanceledResult(0);
- QCOMPARE(store.contains(0), false);
-
- store.addResult(1, &int0);
- QCOMPARE(store.contains(0), true);
- QCOMPARE(store.contains(1), false);
- }
-}
-
-void tst_QFuture::future()
-{
- // default constructors
- QFuture<int> intFuture;
- intFuture.waitForFinished();
- QFuture<QString> stringFuture;
- stringFuture.waitForFinished();
- QFuture<void> voidFuture;
- voidFuture.waitForFinished();
- QFuture<void> defaultVoidFuture;
- defaultVoidFuture.waitForFinished();
-
- // copy constructor
- QFuture<int> intFuture2(intFuture);
- QFuture<void> voidFuture2(defaultVoidFuture);
-
- // assigmnent operator
- intFuture2 = QFuture<int>();
- voidFuture2 = QFuture<void>();
-
- // state
- QCOMPARE(intFuture2.isStarted(), true);
- QCOMPARE(intFuture2.isFinished(), true);
-}
-
-class IntResult : public QFutureInterface<int>
-{
-public:
- QFuture<int> run()
- {
- this->reportStarted();
- QFuture<int> future = QFuture<int>(this);
-
- int res = 10;
- reportFinished(&res);
- return future;
- }
-};
-
-int value = 10;
-
-class VoidResult : public QFutureInterfaceBase
-{
-public:
- QFuture<void> run()
- {
- this->reportStarted();
- QFuture<void> future = QFuture<void>(this);
- reportFinished();
- return future;
- }
-};
-
-void tst_QFuture::futureInterface()
-{
- {
- QFuture<void> future;
- {
- QFutureInterface<void> i;
- i.reportStarted();
- future = i.future();
- i.reportFinished();
- }
- }
- {
- QFuture<int> future;
- {
- QFutureInterface<int> i;
- i.reportStarted();
- i.reportResult(10);
- future = i.future();
- i.reportFinished();
- }
- QCOMPARE(future.resultAt(0), 10);
- }
-
- {
- QFuture<int> intFuture;
-
- QCOMPARE(intFuture.isStarted(), true);
- QCOMPARE(intFuture.isFinished(), true);
-
- IntResult result;
-
- result.reportStarted();
- intFuture = result.future();
-
- QCOMPARE(intFuture.isStarted(), true);
- QCOMPARE(intFuture.isFinished(), false);
-
- result.reportFinished(&value);
-
- QCOMPARE(intFuture.isStarted(), true);
- QCOMPARE(intFuture.isFinished(), true);
-
- int e = intFuture.result();
-
- QCOMPARE(intFuture.isStarted(), true);
- QCOMPARE(intFuture.isFinished(), true);
- QCOMPARE(intFuture.isCanceled(), false);
-
- QCOMPARE(e, value);
- intFuture.waitForFinished();
-
- IntResult intAlgo;
- intFuture = intAlgo.run();
- QFuture<int> intFuture2(intFuture);
- QCOMPARE(intFuture.result(), value);
- QCOMPARE(intFuture2.result(), value);
- intFuture.waitForFinished();
-
- VoidResult a;
- a.run().waitForFinished();
- }
-}
-
-template <typename T>
-void testRefCounting()
-{
- QFutureInterface<T> interface;
- QCOMPARE(interface.d->refCount.load(), 1);
-
- {
- interface.reportStarted();
-
- QFuture<T> f = interface.future();
- QCOMPARE(interface.d->refCount.load(), 2);
-
- QFuture<T> f2(f);
- QCOMPARE(interface.d->refCount.load(), 3);
-
- QFuture<T> f3;
- f3 = f2;
- QCOMPARE(interface.d->refCount.load(), 4);
-
- interface.reportFinished(0);
- QCOMPARE(interface.d->refCount.load(), 4);
- }
-
- QCOMPARE(interface.d->refCount.load(), 1);
-}
-
-void tst_QFuture::refcounting()
-{
- testRefCounting<int>();
-}
-
-void tst_QFuture::cancel()
-{
- {
- QFuture<void> f;
- QFutureInterface<void> result;
-
- result.reportStarted();
- f = result.future();
- QVERIFY(f.isCanceled() == false);
- result.reportCanceled();
- QVERIFY(f.isCanceled());
- result.reportFinished();
- QVERIFY(f.isCanceled());
- f.waitForFinished();
- QVERIFY(f.isCanceled());
- }
-
- // Cancel from the QFuture side and test if the result
- // interface detects it.
- {
- QFutureInterface<void> result;
-
- QFuture<void> f;
- QVERIFY(f.isStarted() == true);
-
- result.reportStarted();
- f = result.future();
-
- QVERIFY(f.isStarted() == true);
-
- QVERIFY(result.isCanceled() == false);
- f.cancel();
-
- QVERIFY(result.isCanceled());
-
- result.reportFinished();
- }
-
- // Test that finished futures can be canceled.
- {
- QFutureInterface<void> result;
-
- QFuture<void> f;
- QVERIFY(f.isStarted() == true);
-
- result.reportStarted();
- f = result.future();
-
- QVERIFY(f.isStarted() == true);
-
- result.reportFinished();
-
- f.cancel();
-
- QVERIFY(result.isCanceled());
- QVERIFY(f.isCanceled());
- }
-
- // Results reported after canceled is called should not be propagated.
- {
-
- QFutureInterface<int> futureInterface;
- futureInterface.reportStarted();
- QFuture<int> f = futureInterface.future();
-
- int result = 0;
- futureInterface.reportResult(&result);
- result = 1;
- futureInterface.reportResult(&result);
- f.cancel();
- result = 2;
- futureInterface.reportResult(&result);
- result = 3;
- futureInterface.reportResult(&result);
- futureInterface.reportFinished();
- QCOMPARE(f.results(), QList<int>());
- }
-}
-
-void tst_QFuture::statePropagation()
-{
- QFuture<void> f1;
- QFuture<void> f2;
-
- QCOMPARE(f1.isStarted(), true);
-
- QFutureInterface<void> result;
- result.reportStarted();
- f1 = result.future();
-
- f2 = f1;
-
- QCOMPARE(f2.isStarted(), true);
-
- result.reportCanceled();
-
- QCOMPARE(f2.isStarted(), true);
- QCOMPARE(f2.isCanceled(), true);
-
- QFuture<void> f3 = f2;
-
- QCOMPARE(f3.isStarted(), true);
- QCOMPARE(f3.isCanceled(), true);
-
- result.reportFinished();
-
- QCOMPARE(f2.isStarted(), true);
- QCOMPARE(f2.isCanceled(), true);
-
- QCOMPARE(f3.isStarted(), true);
- QCOMPARE(f3.isCanceled(), true);
-}
-
-/*
- Tests that a QFuture can return multiple results.
-*/
-void tst_QFuture::multipleResults()
-{
- IntResult a;
- a.reportStarted();
- QFuture<int> f = a.future();
-
- QFuture<int> copy = f;
- int result;
-
- result = 1;
- a.reportResult(&result);
- QCOMPARE(f.resultAt(0), 1);
-
- result = 2;
- a.reportResult(&result);
- QCOMPARE(f.resultAt(1), 2);
-
- result = 3;
- a.reportResult(&result);
-
- result = 4;
- a.reportFinished(&result);
-
- QCOMPARE(f.results(), QList<int>() << 1 << 2 << 3 << 4);
-
- // test foreach
- QList<int> fasit = QList<int>() << 1 << 2 << 3 << 4;
- {
- QList<int> results;
- foreach(int result, f)
- results.append(result);
- QCOMPARE(results, fasit);
- }
- {
- QList<int> results;
- foreach(int result, copy)
- results.append(result);
- QCOMPARE(results, fasit);
- }
-}
-
-/*
- Test out-of-order result reporting using indexes
-*/
-void tst_QFuture::indexedResults()
-{
- {
- QFutureInterface<QChar> Interface;
- QFuture<QChar> f;
- QVERIFY(f.isStarted() == true);
-
- Interface.reportStarted();
- f = Interface.future();
-
- QVERIFY(f.isStarted() == true);
-
- QChar result;
-
- result = 'B';
- Interface.reportResult(&result, 1);
-
- QCOMPARE(f.resultAt(1), result);
-
- result = 'A';
- Interface.reportResult(&result, 0);
- QCOMPARE(f.resultAt(0), result);
-
- result = 'C';
- Interface.reportResult(&result); // no index
- QCOMPARE(f.resultAt(2), result);
-
- Interface.reportFinished();
-
- QCOMPARE(f.results(), QList<QChar>() << 'A' << 'B' << 'C');
- }
-
- {
- // Test result reporting with a missing result in the middle
- QFutureInterface<int> Interface;
- Interface.reportStarted();
- QFuture<int> f = Interface.future();
- int result;
-
- result = 0;
- Interface.reportResult(&result, 0);
- QVERIFY(f.isResultReadyAt(0));
- QCOMPARE(f.resultAt(0), 0);
-
- result = 3;
- Interface.reportResult(&result, 3);
- QVERIFY(f.isResultReadyAt(3));
- QCOMPARE(f.resultAt(3), 3);
-
- result = 2;
- Interface.reportResult(&result, 2);
- QVERIFY(f.isResultReadyAt(2));
- QCOMPARE(f.resultAt(2), 2);
-
- result = 4;
- Interface.reportResult(&result); // no index
- QVERIFY(f.isResultReadyAt(4));
- QCOMPARE(f.resultAt(4), 4);
-
- Interface.reportFinished();
-
- QCOMPARE(f.results(), QList<int>() << 0 << 2 << 3 << 4);
- }
-}
-
-void tst_QFuture::progress()
-{
- QFutureInterface<QChar> result;
- QFuture<QChar> f;
-
- QCOMPARE (f.progressValue(), 0);
-
- result.reportStarted();
- f = result.future();
-
- QCOMPARE (f.progressValue(), 0);
-
- result.setProgressValue(50);
-
- QCOMPARE (f.progressValue(), 50);
-
- result.reportFinished();
-
- QCOMPARE (f.progressValue(), 50);
-}
-
-void tst_QFuture::progressText()
-{
- QFutureInterface<void> i;
- i.reportStarted();
- QFuture<void> f = i.future();
-
- QCOMPARE(f.progressText(), QLatin1String(""));
- i.setProgressValueAndText(1, QLatin1String("foo"));
- QCOMPARE(f.progressText(), QLatin1String("foo"));
- i.reportFinished();
-}
-
-/*
- Test that results reported after finished are ignored.
-*/
-void tst_QFuture::resultsAfterFinished()
-{
- {
- IntResult a;
- a.reportStarted();
- QFuture<int> f = a.future();
- int result;
-
- QCOMPARE(f.resultCount(), 0);
-
- result = 1;
- a.reportResult(&result);
- QCOMPARE(f.resultAt(0), 1);
-
- a.reportFinished();
-
- QCOMPARE(f.resultAt(0), 1);
- QCOMPARE(f.resultCount(), 1);
- result = 2;
- a.reportResult(&result);
- QCOMPARE(f.resultCount(), 1);
- }
- // cancel it
- {
- IntResult a;
- a.reportStarted();
- QFuture<int> f = a.future();
- int result;
-
- QCOMPARE(f.resultCount(), 0);
-
- result = 1;
- a.reportResult(&result);
- QCOMPARE(f.resultAt(0), 1);
- QCOMPARE(f.resultCount(), 1);
-
- a.reportCanceled();
-
- QCOMPARE(f.resultAt(0), 1);
- QCOMPARE(f.resultCount(), 1);
-
- result = 2;
- a.reportResult(&result);
- a.reportFinished();
- }
-}
-
-void tst_QFuture::resultsAsList()
-{
- IntResult a;
- a.reportStarted();
- QFuture<int> f = a.future();
-
- int result;
- result = 1;
- a.reportResult(&result);
- result = 2;
- a.reportResult(&result);
-
- a.reportFinished();
-
- QList<int> results = f.results();
- QCOMPARE(results, QList<int>() << 1 << 2);
-}
-
-/*
- Test that QFuture<T> can be implicitly converted to T
-*/
-void tst_QFuture::implicitConversions()
-{
- QFutureInterface<QString> iface;
- iface.reportStarted();
-
- QFuture<QString> f(&iface);
-
- const QString input("FooBar 2000");
- iface.reportFinished(&input);
-
- const QString result = f;
- QCOMPARE(result, input);
- QCOMPARE(QString(f), input);
- QCOMPARE(static_cast<QString>(f), input);
-}
-
-void tst_QFuture::iterators()
-{
- {
- QFutureInterface<int> e;
- e.reportStarted();
- QFuture<int> f = e.future();
-
- int result;
- result = 1;
- e.reportResult(&result);
- result = 2;
- e.reportResult(&result);
- result = 3;
- e.reportResult(&result);
- e.reportFinished();
-
- QList<int> results;
- QFutureIterator<int> i(f);
- while (i.hasNext()) {
- results.append(i.next());
- }
-
- QCOMPARE(results, f.results());
-
- QFuture<int>::const_iterator i1 = f.begin(), i2 = i1 + 1;
- QFuture<int>::const_iterator c1 = i1, c2 = c1 + 1;
-
- QVERIFY(i1 == i1);
- QVERIFY(i1 == c1);
- QVERIFY(c1 == i1);
- QVERIFY(c1 == c1);
- QVERIFY(i2 == i2);
- QVERIFY(i2 == c2);
- QVERIFY(c2 == i2);
- QVERIFY(c2 == c2);
-
- QVERIFY(i1 != i2);
- QVERIFY(i1 != c2);
- QVERIFY(c1 != i2);
- QVERIFY(c1 != c2);
- QVERIFY(i2 != i1);
- QVERIFY(i2 != c1);
- QVERIFY(c2 != i1);
- QVERIFY(c2 != c1);
-
- int x1 = *i1;
- Q_UNUSED(x1);
- int x2 = *i2;
- Q_UNUSED(x2);
- int y1 = *c1;
- Q_UNUSED(y1);
- int y2 = *c2;
- Q_UNUSED(y2);
- }
-
- {
- QFutureInterface<QString> e;
- e.reportStarted();
- QFuture<QString> f = e.future();
-
- e.reportResult(QString("one"));
- e.reportResult(QString("two"));
- e.reportResult(QString("three"));
- e.reportFinished();
-
- QList<QString> results;
- QFutureIterator<QString> i(f);
- while (i.hasNext()) {
- results.append(i.next());
- }
-
- QCOMPARE(results, f.results());
-
- QFuture<QString>::const_iterator i1 = f.begin(), i2 = i1 + 1;
- QFuture<QString>::const_iterator c1 = i1, c2 = c1 + 1;
-
- QVERIFY(i1 == i1);
- QVERIFY(i1 == c1);
- QVERIFY(c1 == i1);
- QVERIFY(c1 == c1);
- QVERIFY(i2 == i2);
- QVERIFY(i2 == c2);
- QVERIFY(c2 == i2);
- QVERIFY(c2 == c2);
-
- QVERIFY(i1 != i2);
- QVERIFY(i1 != c2);
- QVERIFY(c1 != i2);
- QVERIFY(c1 != c2);
- QVERIFY(i2 != i1);
- QVERIFY(i2 != c1);
- QVERIFY(c2 != i1);
- QVERIFY(c2 != c1);
-
- QString x1 = *i1;
- QString x2 = *i2;
- QString y1 = *c1;
- QString y2 = *c2;
-
- QCOMPARE(x1, y1);
- QCOMPARE(x2, y2);
-
- int i1Size = i1->size();
- int i2Size = i2->size();
- int c1Size = c1->size();
- int c2Size = c2->size();
-
- QCOMPARE(i1Size, c1Size);
- QCOMPARE(i2Size, c2Size);
- }
-
- {
- const int resultCount = 20;
-
- QFutureInterface<int> e;
- e.reportStarted();
- QFuture<int> f = e.future();
-
- for (int i = 0; i < resultCount; ++i) {
- e.reportResult(i);
- }
-
- e.reportFinished();
-
- {
- QFutureIterator<int> it(f);
- QFutureIterator<int> it2(it);
- }
-
- {
- QFutureIterator<int> it(f);
-
- for (int i = 0; i < resultCount - 1; ++i) {
- QVERIFY(it.hasNext());
- QCOMPARE(it.peekNext(), i);
- QCOMPARE(it.next(), i);
- }
-
- QVERIFY(it.hasNext());
- QCOMPARE(it.peekNext(), resultCount - 1);
- QCOMPARE(it.next(), resultCount - 1);
- QVERIFY(it.hasNext() == false);
- }
-
- {
- QFutureIterator<int> it(f);
- QVERIFY(it.hasNext());
- it.toBack();
- QVERIFY(it.hasNext() == false);
- it.toFront();
- QVERIFY(it.hasNext());
- }
- }
-}
-
-class SignalSlotObject : public QObject
-{
-Q_OBJECT
-public:
- SignalSlotObject()
- : finishedCalled(false),
- canceledCalled(false),
- rangeBegin(0),
- rangeEnd(0) { }
-
-public slots:
- void finished()
- {
- finishedCalled = true;
- }
-
- void canceled()
- {
- canceledCalled = true;
- }
-
- void resultReady(int index)
- {
- results.insert(index);
- }
-
- void progressRange(int begin, int end)
- {
- rangeBegin = begin;
- rangeEnd = end;
- }
-
- void progress(int progress)
- {
- reportedProgress.insert(progress);
- }
-public:
- bool finishedCalled;
- bool canceledCalled;
- QSet<int> results;
- int rangeBegin;
- int rangeEnd;
- QSet<int> reportedProgress;
-};
-
-void tst_QFuture::pause()
-{
- QFutureInterface<void> Interface;
-
- Interface.reportStarted();
- QFuture<void> f = Interface.future();
-
- QVERIFY(Interface.isPaused() == false);
- f.pause();
- QVERIFY(Interface.isPaused() == true);
- f.resume();
- QVERIFY(Interface.isPaused() == false);
- f.togglePaused();
- QVERIFY(Interface.isPaused() == true);
- f.togglePaused();
- QVERIFY(Interface.isPaused() == false);
-
- Interface.reportFinished();
-}
-
-const int resultCount = 1000;
-
-class ResultObject : public QObject
-{
-Q_OBJECT
-public slots:
- void resultReady(int)
- {
-
- }
-public:
-};
-
-// Test that that the isPaused() on future result interface returns true
-// if we report a lot of results that are not handled.
-void tst_QFuture::throttling()
-{
- {
- QFutureInterface<void> i;
-
- i.reportStarted();
- QFuture<void> f = i.future();
-
- QVERIFY(i.isThrottled() == false);
-
- i.setThrottled(true);
- QVERIFY(i.isThrottled());
-
- i.setThrottled(false);
- QVERIFY(i.isThrottled() == false);
-
- i.setThrottled(true);
- QVERIFY(i.isThrottled());
-
- i.reportFinished();
- }
-}
-
-void tst_QFuture::voidConversions()
-{
- QFutureInterface<int> iface;
- iface.reportStarted();
-
- QFuture<int> intFuture(&iface);
-
- int value = 10;
- iface.reportFinished(&value);
-
- QFuture<void> voidFuture(intFuture);
- voidFuture = intFuture;
-
- QVERIFY(voidFuture == intFuture);
-}
-
-
-#ifndef QT_NO_EXCEPTIONS
-
-QFuture<void> createExceptionFuture()
-{
- QFutureInterface<void> i;
- i.reportStarted();
- QFuture<void> f = i.future();
-
- Exception e;
- i.reportException(e);
- i.reportFinished();
- return f;
-}
-
-QFuture<int> createExceptionResultFuture()
-{
- QFutureInterface<int> i;
- i.reportStarted();
- QFuture<int> f = i.future();
- int r = 0;
- i.reportResult(r);
-
- Exception e;
- i.reportException(e);
- i.reportFinished();
- return f;
-}
-
-class DerivedException : public Exception
-{
-public:
- void raise() const { throw *this; }
- Exception *clone() const { return new DerivedException(*this); }
-};
-
-QFuture<void> createDerivedExceptionFuture()
-{
- QFutureInterface<void> i;
- i.reportStarted();
- QFuture<void> f = i.future();
-
- DerivedException e;
- i.reportException(e);
- i.reportFinished();
- return f;
-}
-
-void tst_QFuture::exceptions()
-{
- // test throwing from waitForFinished
- {
- QFuture<void> f = createExceptionFuture();
- bool caught = false;
- try {
- f.waitForFinished();
- } catch (Exception &) {
- caught = true;
- }
- QVERIFY(caught);
- }
-
- // test result()
- {
- QFuture<int> f = createExceptionResultFuture();
- bool caught = false;
- try {
- f.result();
- } catch (Exception &) {
- caught = true;
- }
- QVERIFY(caught);
- }
-
- // test result() and destroy
- {
- bool caught = false;
- try {
- createExceptionResultFuture().result();
- } catch (Exception &) {
- caught = true;
- }
- QVERIFY(caught);
- }
-
- // test results()
- {
- QFuture<int> f = createExceptionResultFuture();
- bool caught = false;
- try {
- f.results();
- } catch (Exception &) {
- caught = true;
- }
- QVERIFY(caught);
- }
-
- // test foreach
- {
- QFuture<int> f = createExceptionResultFuture();
- bool caught = false;
- try {
- foreach (int e, f.results()) {
- Q_UNUSED(e);
- QFAIL("did not get exception");
- }
- } catch (Exception &) {
- caught = true;
- }
- QVERIFY(caught);
- }
-
- // catch derived exceptions
- {
- bool caught = false;
- try {
- createDerivedExceptionFuture().waitForFinished();
- } catch (Exception &) {
- caught = true;
- }
- QVERIFY(caught);
- }
-
- {
- bool caught = false;
- try {
- createDerivedExceptionFuture().waitForFinished();
- } catch (DerivedException &) {
- caught = true;
- }
- QVERIFY(caught);
- }
-}
-
-class MyClass
-{
-public:
- ~MyClass()
- {
- QFuture<void> f = createExceptionFuture();
- try {
- f.waitForFinished();
- } catch (Exception &) {
- caught = true;
- }
- }
- static bool caught;
-};
-
-bool MyClass::caught = false;
-
-// This is a regression test for QTBUG-18149. where QFuture did not throw
-// exceptions if called from destructors when the stack was already unwinding
-// due to an exception having been thrown.
-void tst_QFuture::nestedExceptions()
-{
- try {
- MyClass m;
- Q_UNUSED(m);
- throw 0;
- } catch (int) {}
-
- QVERIFY(MyClass::caught);
-}
-
-#endif // QT_NO_EXCEPTIONS
-
-QTEST_MAIN(tst_QFuture)
-#include "tst_qfuture.moc"
diff --git a/tests/auto/corelib/concurrent/qfuturesynchronizer/qfuturesynchronizer.pro b/tests/auto/corelib/concurrent/qfuturesynchronizer/qfuturesynchronizer.pro
deleted file mode 100644
index b36560b4ba..0000000000
--- a/tests/auto/corelib/concurrent/qfuturesynchronizer/qfuturesynchronizer.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG += testcase parallel_test
-TARGET = tst_qfuturesynchronizer
-QT = core testlib
-SOURCES = tst_qfuturesynchronizer.cpp
diff --git a/tests/auto/corelib/concurrent/qfuturesynchronizer/tst_qfuturesynchronizer.cpp b/tests/auto/corelib/concurrent/qfuturesynchronizer/tst_qfuturesynchronizer.cpp
deleted file mode 100644
index a2145ca04f..0000000000
--- a/tests/auto/corelib/concurrent/qfuturesynchronizer/tst_qfuturesynchronizer.cpp
+++ /dev/null
@@ -1,158 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite 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 <QtTest>
-
-#include <QtCore/qfuturesynchronizer.h>
-#include <QtCore/qfuture.h>
-
-class tst_QFutureSynchronizer : public QObject
-{
- Q_OBJECT
-
-
-private Q_SLOTS:
- void construction();
- void addFuture();
- void cancelOnWait();
- void clearFutures();
- void futures();
- void setFuture();
- void waitForFinished();
-};
-
-
-void tst_QFutureSynchronizer::construction()
-{
-
- QFuture<void> future;
- QFutureSynchronizer<void> synchronizer;
- QFutureSynchronizer<void> synchronizerWithFuture(future);
-
- QCOMPARE(synchronizer.futures().size(), 0);
- QCOMPARE(synchronizerWithFuture.futures().size(), 1);
-}
-
-void tst_QFutureSynchronizer::addFuture()
-{
- QFutureSynchronizer<void> synchronizer;
-
- synchronizer.addFuture(QFuture<void>());
- QFuture<void> future;
- synchronizer.addFuture(future);
- synchronizer.addFuture(future);
-
- QCOMPARE(synchronizer.futures().size(), 3);
-}
-
-void tst_QFutureSynchronizer::cancelOnWait()
-{
- QFutureSynchronizer<void> synchronizer;
- QVERIFY(!synchronizer.cancelOnWait());
- synchronizer.setCancelOnWait(true);
- QVERIFY(synchronizer.cancelOnWait());
- synchronizer.setCancelOnWait(false);
- QVERIFY(!synchronizer.cancelOnWait());
- synchronizer.setCancelOnWait(true);
- QVERIFY(synchronizer.cancelOnWait());
-}
-
-void tst_QFutureSynchronizer::clearFutures()
-{
- QFutureSynchronizer<void> synchronizer;
- synchronizer.clearFutures();
- QVERIFY(synchronizer.futures().isEmpty());
-
- synchronizer.addFuture(QFuture<void>());
- QFuture<void> future;
- synchronizer.addFuture(future);
- synchronizer.addFuture(future);
- synchronizer.clearFutures();
- QVERIFY(synchronizer.futures().isEmpty());
-}
-
-void tst_QFutureSynchronizer::futures()
-{
- QFutureSynchronizer<void> synchronizer;
-
- QList<QFuture<void> > futures;
- for (int i=0; i<100; i++) {
- QFuture<void> future;
- futures.append(future);
- synchronizer.addFuture(future);
- }
-
- QCOMPARE(futures, synchronizer.futures());
-}
-
-void tst_QFutureSynchronizer::setFuture()
-{
- QFutureSynchronizer<void> synchronizer;
-
- for (int i=0; i<100; i++) {
- synchronizer.addFuture(QFuture<void>());
- }
- QCOMPARE(synchronizer.futures().size(), 100);
-
- QFuture<void> future;
- synchronizer.setFuture(future);
- QCOMPARE(synchronizer.futures().size(), 1);
- QCOMPARE(synchronizer.futures().first(), future);
-}
-
-void tst_QFutureSynchronizer::waitForFinished()
-{
- QFutureSynchronizer<void> synchronizer;
-
- for (int i=0; i<100; i++) {
- synchronizer.addFuture(QFuture<void>());
- }
- synchronizer.waitForFinished();
- const QList<QFuture<void> > futures = synchronizer.futures();
-
- for (int i=0; i<100; i++) {
- QVERIFY(futures.at(i).isFinished());
- }
-}
-
-QTEST_MAIN(tst_QFutureSynchronizer)
-
-#include "tst_qfuturesynchronizer.moc"
diff --git a/tests/auto/corelib/concurrent/qfuturewatcher/qfuturewatcher.pro b/tests/auto/corelib/concurrent/qfuturewatcher/qfuturewatcher.pro
deleted file mode 100644
index ae98fed3d9..0000000000
--- a/tests/auto/corelib/concurrent/qfuturewatcher/qfuturewatcher.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG += testcase parallel_test
-TARGET = tst_qfuturewatcher
-QT = core-private testlib
-SOURCES = tst_qfuturewatcher.cpp
diff --git a/tests/auto/corelib/concurrent/qfuturewatcher/tst_qfuturewatcher.cpp b/tests/auto/corelib/concurrent/qfuturewatcher/tst_qfuturewatcher.cpp
deleted file mode 100644
index 4fad31b5c9..0000000000
--- a/tests/auto/corelib/concurrent/qfuturewatcher/tst_qfuturewatcher.cpp
+++ /dev/null
@@ -1,945 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite 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 <QCoreApplication>
-#include <QDebug>
-#include <QtTest/QtTest>
-
-#include <qfuture.h>
-#include <qfuturewatcher.h>
-#include <qtconcurrentrun.h>
-#include <qtconcurrentmap.h>
-#include <private/qfutureinterface_p.h>
-
-using namespace QtConcurrent;
-
-#include <QtTest/QtTest>
-
-//#define PRINT
-
-class tst_QFutureWatcher: public QObject
-{
- Q_OBJECT
-private slots:
- void startFinish();
- void progressValueChanged();
- void canceled();
- void resultAt();
- void resultReadyAt();
- void futureSignals();
- void watchFinishedFuture();
- void watchCanceledFuture();
- void disconnectRunningFuture();
- void tooMuchProgress();
- void progressText();
- void sharedFutureInterface();
- void changeFuture();
- void cancelEvents();
- void pauseEvents();
- void finishedState();
- void throttling();
- void incrementalMapResults();
- void incrementalFilterResults();
- void qfutureSynchronizer();
- void warnRace();
-};
-
-void sleeper()
-{
- QTest::qSleep(100);
-}
-
-void tst_QFutureWatcher::startFinish()
-{
- QFutureWatcher<void> futureWatcher;
-
- QSignalSpy startedSpy(&futureWatcher, SIGNAL(started()));
- QSignalSpy finishedSpy(&futureWatcher, SIGNAL(finished()));
-
- QVERIFY(startedSpy.isValid());
- QVERIFY(finishedSpy.isValid());
-
- futureWatcher.setFuture(QtConcurrent::run(sleeper));
- QTest::qWait(10); // spin the event loop to deliver queued signals.
- QCOMPARE(startedSpy.count(), 1);
- QCOMPARE(finishedSpy.count(), 0);
- futureWatcher.future().waitForFinished();
- QTest::qWait(10);
- QCOMPARE(startedSpy.count(), 1);
- QCOMPARE(finishedSpy.count(), 1);
-}
-
-void mapSleeper(int &)
-{
- QTest::qSleep(100);
-}
-
-QSet<int> progressValues;
-QSet<QString> progressTexts;
-QMutex mutex;
-class ProgressObject : public QObject
-{
-Q_OBJECT
-public slots:
- void printProgress(int);
- void printText(const QString &text);
- void registerProgress(int);
- void registerText(const QString &text);
-};
-
-void ProgressObject::printProgress(int progress)
-{
- qDebug() << "thread" << QThread::currentThread() << "reports progress" << progress;
-}
-
-void ProgressObject::printText(const QString &text)
-{
- qDebug() << "thread" << QThread::currentThread() << "reports progress text" << text;
-}
-
-void ProgressObject::registerProgress(int progress)
-{
- QTest::qSleep(1);
- progressValues.insert(progress);
-}
-
-void ProgressObject::registerText(const QString &text)
-{
- QTest::qSleep(1);
- progressTexts.insert(text);
-}
-
-
-QList<int> createList(int listSize)
-{
- QList<int> list;
- for (int i = 0; i < listSize; ++i) {
- list.append(i);
- }
- return list;
-}
-
-void tst_QFutureWatcher::progressValueChanged()
-{
-#ifdef PRINT
- qDebug() << "main thread" << QThread::currentThread();
-#endif
-
- progressValues.clear();
- const int listSize = 20;
- QList<int> list = createList(listSize);
-
- QFutureWatcher<void> futureWatcher;
- ProgressObject progressObject;
- QObject::connect(&futureWatcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-#ifdef PRINT
- QObject::connect(&futureWatcher, SIGNAL(progressValueChanged(int)), &progressObject, SLOT(printProgress(int)), Qt::DirectConnection );
-#endif
- QObject::connect(&futureWatcher, SIGNAL(progressValueChanged(int)), &progressObject, SLOT(registerProgress(int)));
-
- futureWatcher.setFuture(QtConcurrent::map(list, mapSleeper));
-
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(!QTestEventLoop::instance().timeout());
- futureWatcher.disconnect();
- QVERIFY(progressValues.contains(0));
- QVERIFY(progressValues.contains(listSize));
-}
-
-class CancelObject : public QObject
-{
-Q_OBJECT
-public:
- bool wasCanceled;
- CancelObject() : wasCanceled(false) {};
-public slots:
- void cancel();
-};
-
-void CancelObject::cancel()
-{
-#ifdef PRINT
- qDebug() << "thread" << QThread::currentThread() << "reports canceled";
-#endif
- wasCanceled = true;
-}
-
-void tst_QFutureWatcher::canceled()
-{
- const int listSize = 20;
- QList<int> list = createList(listSize);
-
- QFutureWatcher<void> futureWatcher;
- QFuture<void> future;
- CancelObject cancelObject;
-
- QObject::connect(&futureWatcher, SIGNAL(canceled()), &cancelObject, SLOT(cancel()));
- QObject::connect(&futureWatcher, SIGNAL(canceled()),
- &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
-
- future = QtConcurrent::map(list, mapSleeper);
- futureWatcher.setFuture(future);
- futureWatcher.cancel();
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QVERIFY(future.isCanceled());
- QVERIFY(cancelObject.wasCanceled);
- futureWatcher.disconnect();
- future.waitForFinished();
-}
-
-class IntTask : public RunFunctionTask<int>
-{
-public:
- void runFunctor()
- {
- result = 10;
- }
-};
-
-void tst_QFutureWatcher::resultAt()
-{
- QFutureWatcher<int> futureWatcher;
- futureWatcher.setFuture((new IntTask())->start());
- futureWatcher.waitForFinished();
- QCOMPARE(futureWatcher.result(), 10);
- QCOMPARE(futureWatcher.resultAt(0), 10);
-}
-
-void tst_QFutureWatcher::resultReadyAt()
-{
- QFutureWatcher<int> futureWatcher;
- QObject::connect(&futureWatcher, SIGNAL(resultReadyAt(int)), &QTestEventLoop::instance(), SLOT(exitLoop()), Qt::QueuedConnection);
-
- QFuture<int> future = (new IntTask())->start();
- futureWatcher.setFuture(future);
-
- QTestEventLoop::instance().enterLoop(1);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- // Setting the future again should give us another signal.
- // (this is to prevent the race where the task associated
- // with the future finishes before setFuture is called.)
- futureWatcher.setFuture(QFuture<int>());
- futureWatcher.setFuture(future);
-
- QTestEventLoop::instance().enterLoop(1);
- QVERIFY(!QTestEventLoop::instance().timeout());
-}
-
-class SignalSlotObject : public QObject
-{
-Q_OBJECT
-
-signals:
- void cancel();
-
-public slots:
- void started()
- {
- qDebug() << "started called";
- }
-
- void finished()
- {
- qDebug() << "finished called";
- }
-
- void canceled()
- {
- qDebug() << "canceled called";
- }
-
-#ifdef PRINT
- void resultReadyAt(int index)
- {
- qDebug() << "result" << index << "ready";
- }
-#else
- void resultReadyAt(int) { }
-#endif
- void progressValueChanged(int progress)
- {
- qDebug() << "progress" << progress;
- }
-
- void progressRangeChanged(int min, int max)
- {
- qDebug() << "progress range" << min << max;
- }
-
-};
-
-void tst_QFutureWatcher::futureSignals()
-{
- {
- QFutureInterface<int> a;
- QFutureWatcher<int> f;
-
- SignalSlotObject object;
-#ifdef PRINT
- connect(&f, SIGNAL(finished()), &object, SLOT(finished()));
- connect(&f, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
-#endif
- // must connect to resultReadyAt so that the watcher can detect the connection
- // (QSignalSpy does not trigger it.)
- connect(&f, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
- a.reportStarted();
- f.setFuture(a.future());
-
- QSignalSpy progressSpy(&f, SIGNAL(progressValueChanged(int)));
- QVERIFY(progressSpy.isValid());
- const int progress = 1;
- a.setProgressValue(progress);
- QTest::qWait(10);
- QCOMPARE(progressSpy.count(), 2);
- QCOMPARE(progressSpy.takeFirst().at(0).toInt(), 0);
- QCOMPARE(progressSpy.takeFirst().at(0).toInt(), 1);
-
- QSignalSpy finishedSpy(&f, SIGNAL(finished()));
- QSignalSpy resultReadySpy(&f, SIGNAL(resultReadyAt(int)));
-
- QVERIFY(finishedSpy.isValid());
- QVERIFY(resultReadySpy.isValid());
-
- const int result = 10;
- a.reportResult(&result);
- QTest::qWait(10);
- QCOMPARE(resultReadySpy.count(), 1);
- a.reportFinished(&result);
- QTest::qWait(10);
-
- QCOMPARE(resultReadySpy.count(), 2);
- QCOMPARE(resultReadySpy.takeFirst().at(0).toInt(), 0); // check the index
- QCOMPARE(resultReadySpy.takeFirst().at(0).toInt(), 1);
-
- QCOMPARE(finishedSpy.count(), 1);
- }
-}
-
-void tst_QFutureWatcher::watchFinishedFuture()
-{
- QFutureInterface<int> iface;
- iface.reportStarted();
-
- QFuture<int> f = iface.future();
-
- int value = 100;
- iface.reportFinished(&value);
-
- QFutureWatcher<int> watcher;
-
- SignalSlotObject object;
-#ifdef PRINT
- connect(&watcher, SIGNAL(started()), &object, SLOT(started()));
- connect(&watcher, SIGNAL(canceled()), &object, SLOT(canceled()));
- connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
- connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
- connect(&watcher, SIGNAL(progressRangeChanged(int, int)), &object, SLOT(progressRangeChanged(int, int)));
-#endif
- connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
-
- QSignalSpy startedSpy(&watcher, SIGNAL(started()));
- QSignalSpy finishedSpy(&watcher, SIGNAL(finished()));
- QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
- QSignalSpy canceledSpy(&watcher, SIGNAL(canceled()));
-
- QVERIFY(startedSpy.isValid());
- QVERIFY(finishedSpy.isValid());
- QVERIFY(resultReadySpy.isValid());
- QVERIFY(canceledSpy.isValid());
-
- watcher.setFuture(f);
- QTest::qWait(10);
-
- QCOMPARE(startedSpy.count(), 1);
- QCOMPARE(finishedSpy.count(), 1);
- QCOMPARE(resultReadySpy.count(), 1);
- QCOMPARE(canceledSpy.count(), 0);
-}
-
-void tst_QFutureWatcher::watchCanceledFuture()
-{
- QFuture<int> f;
- QFutureWatcher<int> watcher;
-
- SignalSlotObject object;
-#ifdef PRINT
- connect(&watcher, SIGNAL(started()), &object, SLOT(started()));
- connect(&watcher, SIGNAL(canceled()), &object, SLOT(canceled()));
- connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
- connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
- connect(&watcher, SIGNAL(progressRangeChanged(int, int)), &object, SLOT(progressRangeChanged(int, int)));
-#endif
- connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
-
- QSignalSpy startedSpy(&watcher, SIGNAL(started()));
- QSignalSpy finishedSpy(&watcher, SIGNAL(finished()));
- QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
- QSignalSpy canceledSpy(&watcher, SIGNAL(canceled()));
-
- QVERIFY(startedSpy.isValid());
- QVERIFY(finishedSpy.isValid());
- QVERIFY(resultReadySpy.isValid());
- QVERIFY(canceledSpy.isValid());
-
- watcher.setFuture(f);
- QTest::qWait(10);
-
- QCOMPARE(startedSpy.count(), 1);
- QCOMPARE(finishedSpy.count(), 1);
- QCOMPARE(resultReadySpy.count(), 0);
- QCOMPARE(canceledSpy.count(), 1);
-}
-
-void tst_QFutureWatcher::disconnectRunningFuture()
-{
- QFutureInterface<int> a;
- a.reportStarted();
-
- QFuture<int> f = a.future();
- QFutureWatcher<int> *watcher = new QFutureWatcher<int>();
- watcher->setFuture(f);
-
- SignalSlotObject object;
- connect(watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
-
- QSignalSpy finishedSpy(watcher, SIGNAL(finished()));
- QSignalSpy resultReadySpy(watcher, SIGNAL(resultReadyAt(int)));
-
- QVERIFY(finishedSpy.isValid());
- QVERIFY(resultReadySpy.isValid());
-
- const int result = 10;
- a.reportResult(&result);
- QTest::qWait(10);
- QCOMPARE(resultReadySpy.count(), 1);
-
- delete watcher;
-
- a.reportResult(&result);
- QTest::qWait(10);
- QCOMPARE(resultReadySpy.count(), 1);
-
- a.reportFinished(&result);
- QTest::qWait(10);
- QCOMPARE(finishedSpy.count(), 0);
-}
-
-const int maxProgress = 100000;
-class ProgressEmitterTask : public RunFunctionTask<void>
-{
-public:
- void runFunctor()
- {
- setProgressRange(0, maxProgress);
- for (int p = 0; p <= maxProgress; ++p)
- setProgressValue(p);
- }
-};
-
-void tst_QFutureWatcher::tooMuchProgress()
-{
- progressValues.clear();
- ProgressObject o;
-
- QFutureWatcher<void> f;
- QObject::connect(&f, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-#ifdef PRINT
- QObject::connect(&f, SIGNAL(progressValueChanged(int)), &o, SLOT(printProgress(int)));
-#endif
- QObject::connect(&f, SIGNAL(progressValueChanged(int)), &o, SLOT(registerProgress(int)));
- f.setFuture((new ProgressEmitterTask())->start());
-
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QVERIFY(progressValues.contains(maxProgress));
-}
-
-template <typename T>
-class ProgressTextTask : public RunFunctionTask<T>
-{
-public:
- void runFunctor()
- {
- this->setProgressValueAndText(1, QLatin1String("Foo 1"));
-
- while (this->isProgressUpdateNeeded() == false)
- QTest::qSleep(1);
- this->setProgressValueAndText(2, QLatin1String("Foo 2"));
-
- while (this->isProgressUpdateNeeded() == false)
- QTest::qSleep(1);
- this->setProgressValueAndText(3, QLatin1String("Foo 3"));
-
- while (this->isProgressUpdateNeeded() == false)
- QTest::qSleep(1);
- this->setProgressValueAndText(4, QLatin1String("Foo 4"));
- }
-};
-
-void tst_QFutureWatcher::progressText()
-{
- { // instantiate API for T=int and T=void.
- ProgressTextTask<int> a;
- ProgressTextTask<void> b;
- }
- {
- progressValues.clear();
- progressTexts.clear();
- QFuture<int> f = ((new ProgressTextTask<int>())->start());
- QFutureWatcher<int> watcher;
- ProgressObject o;
- QObject::connect(&watcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-#ifdef PRINT
- QObject::connect(&watcher, SIGNAL(progressValueChanged(int)), &o, SLOT(printProgress(int)));
- QObject::connect(&watcher, SIGNAL(progressTextChanged(const QString &)), &o, SLOT(printText(const QString &)));
-#endif
- QObject::connect(&watcher, SIGNAL(progressValueChanged(int)), &o, SLOT(registerProgress(int)));
- QObject::connect(&watcher, SIGNAL(progressTextChanged(const QString &)), &o, SLOT(registerText(const QString &)));
-
- watcher.setFuture(f);
- QTestEventLoop::instance().enterLoop(5);
- QVERIFY(!QTestEventLoop::instance().timeout());
-
- QCOMPARE(f.progressText(), QLatin1String("Foo 4"));
- QCOMPARE(f.progressValue(), 4);
- QVERIFY(progressValues.contains(1));
- QVERIFY(progressValues.contains(2));
- QVERIFY(progressValues.contains(3));
- QVERIFY(progressValues.contains(4));
- QVERIFY(progressTexts.contains(QLatin1String("Foo 1")));
- QVERIFY(progressTexts.contains(QLatin1String("Foo 2")));
- QVERIFY(progressTexts.contains(QLatin1String("Foo 3")));
- QVERIFY(progressTexts.contains(QLatin1String("Foo 4")));
- }
-}
-
-template <typename T>
-void callInterface(T &obj)
-{
- obj.progressValue();
- obj.progressMinimum();
- obj.progressMaximum();
- obj.progressText();
-
- obj.isStarted();
- obj.isFinished();
- obj.isRunning();
- obj.isCanceled();
- obj.isPaused();
-
- obj.cancel();
- obj.pause();
- obj.resume();
- obj.togglePaused();
- obj.waitForFinished();
-
- const T& objConst = obj;
- objConst.progressValue();
- objConst.progressMinimum();
- objConst.progressMaximum();
- objConst.progressText();
-
- objConst.isStarted();
- objConst.isFinished();
- objConst.isRunning();
- objConst.isCanceled();
- objConst.isPaused();
-}
-
-template <typename T>
-void callInterface(const T &obj)
-{
- obj.result();
- obj.resultAt(0);
-}
-
-
-// QFutureWatcher and QFuture has a similar interface. Test
-// that the functions we want ot have in both are actually
-// there.
-void tst_QFutureWatcher::sharedFutureInterface()
-{
- QFutureInterface<int> iface;
- iface.reportStarted();
-
- QFuture<int> intFuture = iface.future();
-
- int value = 0;
- iface.reportFinished(&value);
-
- QFuture<void> voidFuture;
- QFutureWatcher<int> intWatcher;
- intWatcher.setFuture(intFuture);
- QFutureWatcher<void> voidWatcher;
-
- callInterface(intFuture);
- callInterface(voidFuture);
- callInterface(intWatcher);
- callInterface(voidWatcher);
-
- callInterface(intFuture);
- callInterface(intWatcher);
-}
-
-void tst_QFutureWatcher::changeFuture()
-{
- QFutureInterface<int> iface;
- iface.reportStarted();
-
- QFuture<int> a = iface.future();
-
- int value = 0;
- iface.reportFinished(&value);
-
- QFuture<int> b;
-
- QFutureWatcher<int> watcher;
-
- SignalSlotObject object;
- connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
- QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
- QVERIFY(resultReadySpy.isValid());
-
- watcher.setFuture(a); // Watch 'a' which will genere a resultReady event.
- watcher.setFuture(b); // But oh no! we're switching to another future
- QTest::qWait(10); // before the event gets delivered.
-
- QCOMPARE(resultReadySpy.count(), 0);
-
- watcher.setFuture(a);
- watcher.setFuture(b);
- watcher.setFuture(a); // setting it back gets us one event, not two.
- QTest::qWait(10);
-
- QCOMPARE(resultReadySpy.count(), 1);
-}
-
-// Test that events aren't delivered from canceled futures
-void tst_QFutureWatcher::cancelEvents()
-{
- QFutureInterface<int> iface;
- iface.reportStarted();
-
- QFuture<int> a = iface.future();
-
- int value = 0;
- iface.reportFinished(&value);
-
- QFutureWatcher<int> watcher;
-
- SignalSlotObject object;
- connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
- QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
- QVERIFY(resultReadySpy.isValid());
-
- watcher.setFuture(a);
- watcher.cancel();
-
- QTest::qWait(10);
-
- QCOMPARE(resultReadySpy.count(), 0);
-}
-
-// Tests that events from paused futures are saved and
-// delivered on resume.
-void tst_QFutureWatcher::pauseEvents()
-{
- {
- QFutureInterface<int> iface;
- iface.reportStarted();
-
- QFuture<int> a = iface.future();
-
- int value = 0;
- iface.reportFinished(&value);
-
- QFutureWatcher<int> watcher;
-
- SignalSlotObject object;
- connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
- QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
- QVERIFY(resultReadySpy.isValid());
-
- watcher.setFuture(a);
- watcher.pause();
-
- QTest::qWait(10);
- QCOMPARE(resultReadySpy.count(), 0);
-
- watcher.resume();
- QTest::qWait(10);
- QCOMPARE(resultReadySpy.count(), 1);
- }
- {
- QFutureInterface<int> iface;
- iface.reportStarted();
-
- QFuture<int> a = iface.future();
-
- int value = 0;
- iface.reportFinished(&value);
-
- QFutureWatcher<int> watcher;
-
- SignalSlotObject object;
- connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
- QSignalSpy resultReadySpy(&watcher, SIGNAL(resultReadyAt(int)));
- QVERIFY(resultReadySpy.isValid());
-
- watcher.setFuture(a);
- a.pause();
-
- QFuture<int> b;
- watcher.setFuture(b); // If we watch b instead, resuming a
- a.resume(); // should give us no results.
-
- QTest::qWait(10);
- QCOMPARE(resultReadySpy.count(), 0);
- }
-}
-
-// Test that the finished state for the watcher gets
-// set when the finished event is delivered.
-// This means it will lag the finished state for the future,
-// but makes it more useful.
-void tst_QFutureWatcher::finishedState()
-{
- QFutureInterface<int> iface;
- iface.reportStarted();
- QFuture<int> future = iface.future();
- QFutureWatcher<int> watcher;
-
- watcher.setFuture(future);
- QTest::qWait(10);
-
- iface.reportFinished();
- QVERIFY(future.isFinished());
- QVERIFY(watcher.isFinished() == false);
-
- QTest::qWait(10);
- QVERIFY(watcher.isFinished());
-}
-
-/*
- Verify that throttling kicks in if you report a lot of results,
- and that it clears when the result events are processed.
-*/
-void tst_QFutureWatcher::throttling()
-{
- QFutureInterface<int> iface;
- iface.reportStarted();
- QFuture<int> future = iface.future();
- QFutureWatcher<int> watcher;
- watcher.setFuture(future);
-
- QVERIFY(iface.isThrottled() == false);
-
- for (int i = 0; i < 1000; ++i) {
- int result = 0;
- iface.reportResult(result);
- }
-
- QVERIFY(iface.isThrottled() == true);
-
- QTest::qWait(100); // process events.
-
- QVERIFY(iface.isThrottled() == false);
-
- iface.reportFinished();
-}
-
-int mapper(const int &i)
-{
- return i;
-}
-
-class ResultReadyTester : public QObject
-{
-Q_OBJECT
-public:
- ResultReadyTester(QFutureWatcher<int> *watcher)
- :m_watcher(watcher), filter(false), ok(true), count(0)
- {
-
- }
-public slots:
- void resultReadyAt(int index)
- {
- ++count;
- if (m_watcher->future().isResultReadyAt(index) == false)
- ok = false;
- if (!filter && m_watcher->future().resultAt(index) != index)
- ok = false;
- if (filter && m_watcher->future().resultAt(index) != index * 2 + 1)
- ok = false;
- }
-public:
- QFutureWatcher<int> *m_watcher;
- bool filter;
- bool ok;
- int count;
-};
-
-void tst_QFutureWatcher::incrementalMapResults()
-{
- QFutureWatcher<int> watcher;
-
- SignalSlotObject object;
-#ifdef PRINT
- connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
- connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
- connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
-#endif
-
- QObject::connect(&watcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
- ResultReadyTester resultReadyTester(&watcher);
- connect(&watcher, SIGNAL(resultReadyAt(int)), &resultReadyTester, SLOT(resultReadyAt(int)));
-
- const int count = 10000;
- QList<int> ints;
- for (int i = 0; i < count; ++i)
- ints << i;
-
- QFuture<int> future = QtConcurrent::mapped(ints, mapper);
- watcher.setFuture(future);
-
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QCOMPARE(resultReadyTester.count, count);
- QVERIFY(resultReadyTester.ok);
- QVERIFY(watcher.isFinished());
- future.waitForFinished();
-}
-
-bool filterer(int i)
-{
- return (i % 2);
-}
-
-void tst_QFutureWatcher::incrementalFilterResults()
-{
- QFutureWatcher<int> watcher;
-
- SignalSlotObject object;
-#ifdef PRINT
- connect(&watcher, SIGNAL(finished()), &object, SLOT(finished()));
- connect(&watcher, SIGNAL(progressValueChanged(int)), &object, SLOT(progressValueChanged(int)));
- connect(&watcher, SIGNAL(resultReadyAt(int)), &object, SLOT(resultReadyAt(int)));
-#endif
-
- QObject::connect(&watcher, SIGNAL(finished()), &QTestEventLoop::instance(), SLOT(exitLoop()));
-
-
- ResultReadyTester resultReadyTester(&watcher);
- resultReadyTester.filter = true;
- connect(&watcher, SIGNAL(resultReadyAt(int)), &resultReadyTester, SLOT(resultReadyAt(int)));
-
- const int count = 10000;
- QList<int> ints;
- for (int i = 0; i < count; ++i)
- ints << i;
-
- QFuture<int> future = QtConcurrent::filtered(ints, filterer);
- watcher.setFuture(future);
-
- QTestEventLoop::instance().enterLoop(10);
- QVERIFY(!QTestEventLoop::instance().timeout());
- QCOMPARE(resultReadyTester.count, count / 2);
- QVERIFY(resultReadyTester.ok);
- QVERIFY(watcher.isFinished());
- future.waitForFinished();
-}
-
-void tst_QFutureWatcher::qfutureSynchronizer()
-{
- int taskCount = 1000;
- QTime t;
- t.start();
-
- {
- QFutureSynchronizer<void> sync;
-
- sync.setCancelOnWait(true);
- for (int i = 0; i < taskCount; ++i) {
- sync.addFuture(run(sleeper));
- }
- }
-
- // Test that we're not running each task.
- QVERIFY(t.elapsed() < taskCount * 10);
-}
-
-class DummyObject : public QObject {
- Q_OBJECT
-public slots:
- void dummySlot() {}
-public:
- static void function(QMutex *m)
- {
- QMutexLocker lock(m);
- }
-};
-
-void tst_QFutureWatcher::warnRace()
-{
-#ifndef Q_OS_MAC //I don't know why it is not working on mac
-#ifndef QT_NO_DEBUG
- QTest::ignoreMessage(QtWarningMsg, "QFutureWatcher::connect: connecting after calling setFuture() is likely to produce race");
-#endif
-#endif
- QFutureWatcher<void> watcher;
- DummyObject object;
- QMutex mutex;
- mutex.lock();
-
- QFuture<void> future = QtConcurrent::run(DummyObject::function, &mutex);
- watcher.setFuture(future);
- QTRY_VERIFY(future.isStarted());
- connect(&watcher, SIGNAL(finished()), &object, SLOT(dummySlot()));
- mutex.unlock();
- future.waitForFinished();
-}
-
-QTEST_MAIN(tst_QFutureWatcher)
-#include "tst_qfuturewatcher.moc"
diff --git a/tests/auto/corelib/concurrent/qtconcurrentfilter/qtconcurrentfilter.pro b/tests/auto/corelib/concurrent/qtconcurrentfilter/qtconcurrentfilter.pro
deleted file mode 100644
index f783455b2e..0000000000
--- a/tests/auto/corelib/concurrent/qtconcurrentfilter/qtconcurrentfilter.pro
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG += testcase parallel_test
-TARGET = tst_qtconcurrentfilter
-QT = core testlib
-SOURCES = tst_qtconcurrentfilter.cpp
-DEFINES += QT_STRICT_ITERATORS
-
-CONFIG += insignificant_test # See QTBUG-20688
diff --git a/tests/auto/corelib/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp b/tests/auto/corelib/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp
deleted file mode 100644
index 272d8514ef..0000000000
--- a/tests/auto/corelib/concurrent/qtconcurrentfilter/tst_qtconcurrentfilter.cpp
+++ /dev/null
@@ -1,1543 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite 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 <qtconcurrentfilter.h>
-#include <QCoreApplication>
-#include <QList>
-#include <QLinkedList>
-#include <QtTest/QtTest>
-
-#include "../qtconcurrentmap/functions.h"
-
-class tst_QtConcurrentFilter : public QObject
-{
- Q_OBJECT
-
-private slots:
-#ifdef QT_NO_CONCURRENT_FILTER
- void initTestCase();
-#else
- void filter();
- void filtered();
- void filteredReduced();
- void resultAt();
- void incrementalResults();
- void noDetach();
-#ifndef QT_NO_STL
- void stlContainers();
-#endif
-#endif
-};
-
-#ifdef QT_NO_CONCURRENT_FILTER
-void tst_QtConcurrentFilter::initTestCase()
-{
- QSKIP("This test is skipped for gcc 3.x");
-}
-
-#else
-
-void tst_QtConcurrentFilter::filter()
-{
- // functor
- {
- QList<int> list;
- list << 1 << 2 << 3 << 4;
- QtConcurrent::filter(list, KeepEvenIntegers()).waitForFinished();
- QCOMPARE(list, QList<int>() << 2 << 4);
- }
- {
- QList<int> list;
- list << 1 << 2 << 3 << 4;
- QtConcurrent::blockingFilter(list, KeepEvenIntegers());
- QCOMPARE(list, QList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QtConcurrent::filter(linkedList, KeepEvenIntegers()).waitForFinished();
- QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QtConcurrent::blockingFilter(linkedList, KeepEvenIntegers());
- QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
- }
- {
- QVector<int> vector;
- vector << 1 << 2 << 3 << 4;
- QtConcurrent::filter(vector, KeepEvenIntegers()).waitForFinished();
- QCOMPARE(vector, QVector<int>() << 2 << 4);
- }
- {
- QVector<int> vector;
- vector << 1 << 2 << 3 << 4;
- QtConcurrent::blockingFilter(vector, KeepEvenIntegers());
- QCOMPARE(vector, QVector<int>() << 2 << 4);
- }
-
-
- // function
- {
- QList<int> list;
- list << 1 << 2 << 3 << 4;
- QtConcurrent::filter(list, keepEvenIntegers).waitForFinished();
- QCOMPARE(list, QList<int>() << 2 << 4);
- }
- {
- QList<int> list;
- list << 1 << 2 << 3 << 4;
- QtConcurrent::blockingFilter(list, keepEvenIntegers);
- QCOMPARE(list, QList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QtConcurrent::filter(linkedList, keepEvenIntegers).waitForFinished();
- QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QtConcurrent::blockingFilter(linkedList, keepEvenIntegers);
- QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
- }
-
- // bound function
- {
- QList<int> list;
- list << 1 << 2 << 3 << 4;
- QtConcurrent::filter(list, keepEvenIntegers).waitForFinished();
- QCOMPARE(list, QList<int>() << 2 << 4);
- }
- {
- QList<int> list;
- list << 1 << 2 << 3 << 4;
- QtConcurrent::blockingFilter(list, keepEvenIntegers);
- QCOMPARE(list, QList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QtConcurrent::filter(linkedList, keepEvenIntegers).waitForFinished();
- QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QtConcurrent::blockingFilter(linkedList, keepEvenIntegers);
- QCOMPARE(linkedList, QLinkedList<int>() << 2 << 4);
- }
-
- // member
- {
- QList<Number> list;
- list << 1 << 2 << 3 << 4;
- QtConcurrent::filter(list, &Number::isEven).waitForFinished();
- QCOMPARE(list, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> list;
- list << 1 << 2 << 3 << 4;
- QtConcurrent::blockingFilter(list, &Number::isEven);
- QCOMPARE(list, QList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QtConcurrent::filter(linkedList, &Number::isEven).waitForFinished();
- QCOMPARE(linkedList, QLinkedList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QtConcurrent::blockingFilter(linkedList, &Number::isEven);
- QCOMPARE(linkedList, QLinkedList<Number>() << 2 << 4);
- }
-}
-
-void tst_QtConcurrentFilter::filtered()
-{
- QList<int> list;
- list << 1 << 2 << 3 << 4;
-
- // functor
- {
- QFuture<int> f = QtConcurrent::filtered(list, KeepEvenIntegers());
- QList<int> list2 = f.results();
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(list.begin(), list.end(), KeepEvenIntegers());
- QList<int> list2 = f.results();
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(list.constBegin(),
- list.constEnd(),
- KeepEvenIntegers());
- QList<int> list2 = f.results();
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFiltered(list, KeepEvenIntegers());
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.begin(),
- list.end(),
- KeepEvenIntegers());
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.constBegin(),
- list.constEnd(),
- KeepEvenIntegers());
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
-
- {
- QVector<int> vector;
- vector << 1 << 2 << 3 << 4;
- QVector<int> vector2 = QtConcurrent::blockingFiltered(vector, KeepEvenIntegers());
- QCOMPARE(vector2, QVector<int>() << 2 << 4);
- }
- {
- QVector<int> vector;
- vector << 1 << 2 << 3 << 4;
- QFuture<int> f = QtConcurrent::filtered(vector, KeepEvenIntegers());
- QCOMPARE(f.results(), QList<int>() << 2 << 4);
- }
-
- {
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, KeepEvenIntegers());
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QFuture<int> f = QtConcurrent::filtered(linkedList, KeepEvenIntegers());
- QCOMPARE(f.results(), QList<int>() << 2 << 4);
- }
-
- // function
- {
- QFuture<int> f = QtConcurrent::filtered(list, keepEvenIntegers);
- QList<int> list2 = f.results();
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(list.begin(), list.end(), keepEvenIntegers);
- QList<int> list2 = f.results();
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers);
- QList<int> list2 = f.results();
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFiltered(list, keepEvenIntegers);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.begin(),
- list.end(),
- keepEvenIntegers);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
-
- // bound function
- {
- QFuture<int> f = QtConcurrent::filtered(list, keepEvenIntegers);
- QList<int> list2 = f.results();
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(list.begin(), list.end(), keepEvenIntegers);
- QList<int> list2 = f.results();
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers);
- QList<int> list2 = f.results();
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFiltered(list, keepEvenIntegers);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.begin(),
- list.end(),
- keepEvenIntegers);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFiltered<QList<int> >(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
-
- // const member function
- {
- QList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QFuture<Number> f = QtConcurrent::filtered(integers, &Number::isEven);
- QList<Number> list2 = f.results();
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QFuture<Number> f = QtConcurrent::filtered(integers.begin(),
- integers.end(),
- &Number::isEven);
- QList<Number> list2 = f.results();
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QFuture<Number> f = QtConcurrent::filtered(integers.constBegin(),
- integers.constEnd(),
- &Number::isEven);
- QList<Number> list2 = f.results();
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QList<Number> list2 = QtConcurrent::blockingFiltered(integers, &Number::isEven);
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QList<Number> list2 = QtConcurrent::blockingFiltered<QList<Number> >(integers.begin(),
- integers.end(),
- &Number::isEven);
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QList<Number> list2 =
- QtConcurrent::blockingFiltered<QList<Number> >(integers.constBegin(),
- integers.constEnd(),
- &Number::isEven);
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
-
- // same thing on linked lists
-
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
-
- // functor
- {
- QFuture<int> f = QtConcurrent::filtered(linkedList, KeepEvenIntegers());
- QList<int> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(linkedList.begin(),
- linkedList.end(),
- KeepEvenIntegers());
- QList<int> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(linkedList.constBegin(),
- linkedList.constEnd(),
- KeepEvenIntegers());
- QList<int> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, KeepEvenIntegers());
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.begin(),
- linkedList.end(),
- KeepEvenIntegers());
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.constBegin(),
- linkedList.constEnd(),
- KeepEvenIntegers());
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
-
- // function
- {
- QFuture<int> f = QtConcurrent::filtered(linkedList, keepEvenIntegers);
- QList<int> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers);
- QList<int> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers);
- QList<int> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, keepEvenIntegers);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
-
- // bound function
- {
- QFuture<int> f = QtConcurrent::filtered(linkedList, keepEvenIntegers);
- QList<int> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers);
- QList<int> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<int>() << 2 << 4);
- }
- {
- QFuture<int> f = QtConcurrent::filtered(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers);
- QList<int> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered(linkedList, keepEvenIntegers);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<int> >(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
-
- // const member function
- {
- QLinkedList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QFuture<Number> f = QtConcurrent::filtered(integers, &Number::isEven);
- QList<Number> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QFuture<Number> f = QtConcurrent::filtered(integers.begin(),
- integers.end(),
- &Number::isEven);
- QList<Number> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QFuture<Number> f = QtConcurrent::filtered(integers.constBegin(),
- integers.constEnd(),
- &Number::isEven);
- QList<Number> linkedList2 = f.results();
- QCOMPARE(linkedList2, QList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QLinkedList<Number> linkedList2 = QtConcurrent::blockingFiltered(integers, &Number::isEven);
- QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QLinkedList<Number> linkedList2 = QtConcurrent::blockingFiltered<QLinkedList<Number> >(integers.begin(),
- integers.end(),
- &Number::isEven);
- QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> integers;
- integers << 1 << 2 << 3 << 4;
- QLinkedList<Number> linkedList2 =
- QtConcurrent::blockingFiltered<QLinkedList<Number> >(integers.constBegin(),
- integers.constEnd(),
- &Number::isEven);
- QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
- }
-}
-
-void tst_QtConcurrentFilter::filteredReduced()
-{
- QList<int> list;
- list << 1 << 2 << 3 << 4;
- QList<Number> numberList;
- numberList << 1 << 2 << 3 << 4;
-
- // functor-functor
- {
- int sum = QtConcurrent::filteredReduced<int>(list, KeepEvenIntegers(), IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced<int>(list, keepEvenIntegers, intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- QVector<int> vector;
- vector << 1 << 2 << 3 << 4;
- int sum = QtConcurrent::filteredReduced<int>(vector, KeepEvenIntegers(), IntSumReduce());
- QCOMPARE(sum, 6);
- }
-
- {
- int sum = QtConcurrent::filteredReduced<int>(list.begin(),
- list.end(),
- KeepEvenIntegers(),
- IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced<int>(list.begin(),
- list.end(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(list.constBegin(),
- list.constEnd(),
- KeepEvenIntegers(),
- IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced<int>(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(list, KeepEvenIntegers(), IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced<int>(list, keepEvenIntegers, intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(list.begin(),
- list.end(),
- KeepEvenIntegers(),
- IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced<int>(list.begin(),
- list.end(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(list.constBegin(),
- list.constEnd(),
- KeepEvenIntegers(),
- IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced<int>(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum2, 6);
- }
-
- // function-functor
- {
- int sum = QtConcurrent::filteredReduced<int>(list, keepEvenIntegers, IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(list.begin(),
- list.end(),
- keepEvenIntegers,
- IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers,
- IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(list, keepEvenIntegers, IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(list.begin(),
- list.end(),
- keepEvenIntegers,
- IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers,
- IntSumReduce());
- QCOMPARE(sum, 6);
- }
-
- // functor-function
- {
- int sum = QtConcurrent::filteredReduced(list, KeepEvenIntegers(), intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(list.begin(),
- list.end(),
- KeepEvenIntegers(),
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(list.constBegin(),
- list.constEnd(),
- KeepEvenIntegers(),
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(list, KeepEvenIntegers(), intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(list.begin(),
- list.end(),
- KeepEvenIntegers(),
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(list.constBegin(),
- list.constEnd(),
- KeepEvenIntegers(),
- intSumReduce);
- QCOMPARE(sum, 6);
- }
-
- // function-function
- {
- int sum = QtConcurrent::filteredReduced(list, keepEvenIntegers, intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(list.begin(),
- list.end(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(list, keepEvenIntegers, intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(list.begin(),
- list.end(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum, 6);
- }
-
- // functor-member
- {
- QList<int> list2 = QtConcurrent::filteredReduced(list, KeepEvenIntegers(), &QList<int>::push_back, QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::filteredReduced(list.begin(),
- list.end(),
- KeepEvenIntegers(),
- &QList<int>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::filteredReduced(list.constBegin(),
- list.constEnd(),
- KeepEvenIntegers(),
- &QList<int>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFilteredReduced(list, KeepEvenIntegers(), &QList<int>::push_back, QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.begin(),
- list.end(),
- KeepEvenIntegers(),
- &QList<int>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.constBegin(),
- list.constEnd(),
- KeepEvenIntegers(),
- &QList<int>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
-
- // member-functor
- {
- int sum = QtConcurrent::filteredReduced<int>(numberList, &Number::isEven, NumberSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced<int>(QList<Number>(numberList),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(numberList.begin(),
- numberList.end(),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(numberList.constBegin(),
- numberList.constEnd(),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(numberList, &Number::isEven, NumberSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced<int>(QList<Number>(numberList),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(numberList.begin(),
- numberList.end(),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(numberList.constBegin(),
- numberList.constEnd(),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum, 6);
- }
-
- // member-member
- {
- QList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QList<Number> list2 = QtConcurrent::filteredReduced(numbers,
- &Number::isEven,
- &QList<Number>::push_back, QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QList<Number> list2 = QtConcurrent::filteredReduced(numbers.begin(),
- numbers.end(),
- &Number::isEven,
- &QList<Number>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QList<Number> list2 = QtConcurrent::filteredReduced(numbers.constBegin(),
- numbers.constEnd(),
- &Number::isEven,
- &QList<Number>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QList<Number> list2 = QtConcurrent::blockingFilteredReduced(numbers,
- &Number::isEven,
- &QList<Number>::push_back, QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QList<Number> list2 = QtConcurrent::blockingFilteredReduced(numbers.begin(),
- numbers.end(),
- &Number::isEven,
- &QList<Number>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
- {
- QList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QList<Number> list2 = QtConcurrent::blockingFilteredReduced(numbers.constBegin(),
- numbers.constEnd(),
- &Number::isEven,
- &QList<Number>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<Number>() << 2 << 4);
- }
-
- // function-member
- {
- QList<int> list2 = QtConcurrent::filteredReduced(list, keepEvenIntegers, &QList<int>::push_back, QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::filteredReduced(list.begin(),
- list.end(),
- keepEvenIntegers,
- &QList<int>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::filteredReduced(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers,
- &QList<int>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFilteredReduced(list, keepEvenIntegers, &QList<int>::push_back, QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.begin(),
- list.end(),
- keepEvenIntegers,
- &QList<int>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
- {
- QList<int> list2 = QtConcurrent::blockingFilteredReduced(list.constBegin(),
- list.constEnd(),
- keepEvenIntegers,
- &QList<int>::push_back,
- QtConcurrent::OrderedReduce);
- QCOMPARE(list2, QList<int>() << 2 << 4);
- }
-
- // member-function
- {
- int sum = QtConcurrent::filteredReduced(numberList, &Number::isEven, numberSumReduce);
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced(QList<Number>(numberList),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(numberList.begin(),
- numberList.end(),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(numberList.constBegin(),
- numberList.constEnd(),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(numberList, &Number::isEven, numberSumReduce);
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced(QList<Number>(numberList),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(numberList.begin(),
- numberList.end(),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(numberList.constBegin(),
- numberList.constEnd(),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum, 6);
- }
-
- // same as above on linked lists
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3 << 4;
- QLinkedList<Number> numberLinkedList;
- numberLinkedList << 1 << 2 << 3 << 4;
-
- // functor-functor
- {
- int sum = QtConcurrent::filteredReduced<int>(linkedList, KeepEvenIntegers(), IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced<int>(linkedList, keepEvenIntegers, intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(linkedList.begin(),
- linkedList.end(),
- KeepEvenIntegers(),
- IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced<int>(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- KeepEvenIntegers(),
- IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList, KeepEvenIntegers(), IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced<int>(linkedList, keepEvenIntegers, intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.begin(),
- linkedList.end(),
- KeepEvenIntegers(),
- IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced<int>(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- KeepEvenIntegers(),
- IntSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum2, 6);
- }
-
- // function-functor
- {
- int sum = QtConcurrent::filteredReduced<int>(linkedList, keepEvenIntegers, IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers,
- IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers,
- IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList, keepEvenIntegers, IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers,
- IntSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers,
- IntSumReduce());
- QCOMPARE(sum, 6);
- }
-
- // functor-function
- {
- int sum = QtConcurrent::filteredReduced(linkedList, KeepEvenIntegers(), intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(linkedList.begin(),
- linkedList.end(),
- KeepEvenIntegers(),
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- KeepEvenIntegers(),
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(linkedList, KeepEvenIntegers(), intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
- linkedList.end(),
- KeepEvenIntegers(),
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- KeepEvenIntegers(),
- intSumReduce);
- QCOMPARE(sum, 6);
- }
-
- // function-function
- {
- int sum = QtConcurrent::filteredReduced(linkedList, keepEvenIntegers, intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(linkedList, keepEvenIntegers, intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers,
- intSumReduce);
- QCOMPARE(sum, 6);
- }
-
- // functor-member
- {
- QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList, KeepEvenIntegers(), &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.begin(),
- linkedList.end(),
- KeepEvenIntegers(),
- &QLinkedList<int>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- KeepEvenIntegers(),
- &QLinkedList<int>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList, KeepEvenIntegers(), &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
- linkedList.end(),
- KeepEvenIntegers(),
- &QLinkedList<int>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- KeepEvenIntegers(),
- &QLinkedList<int>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
-
- // member-functor
- {
- int sum = QtConcurrent::filteredReduced<int>(numberLinkedList, &Number::isEven, NumberSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced<int>(QLinkedList<Number>(numberLinkedList),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(numberLinkedList.begin(),
- numberLinkedList.end(),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced<int>(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(numberLinkedList, &Number::isEven, NumberSumReduce());
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced<int>(QLinkedList<Number>(numberLinkedList),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(numberLinkedList.begin(),
- numberLinkedList.end(),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced<int>(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::isEven,
- NumberSumReduce());
- QCOMPARE(sum, 6);
- }
-
- // member-member
- {
- QLinkedList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QLinkedList<Number> linkedList2 = QtConcurrent::filteredReduced(numbers,
- &Number::isEven,
- &QLinkedList<Number>::append, QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QLinkedList<Number> linkedList2 = QtConcurrent::filteredReduced(numbers.begin(),
- numbers.end(),
- &Number::isEven,
- &QLinkedList<Number>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QLinkedList<Number> linkedList2 = QtConcurrent::filteredReduced(numbers.constBegin(),
- numbers.constEnd(),
- &Number::isEven,
- &QLinkedList<Number>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QLinkedList<Number> linkedList2 = QtConcurrent::blockingFilteredReduced(numbers,
- &Number::isEven,
- &QLinkedList<Number>::append, QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QLinkedList<Number> linkedList2 = QtConcurrent::blockingFilteredReduced(numbers.begin(),
- numbers.end(),
- &Number::isEven,
- &QLinkedList<Number>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
- }
- {
- QLinkedList<Number> numbers;
- numbers << 1 << 2 << 3 << 4;
- QLinkedList<Number> linkedList2 = QtConcurrent::blockingFilteredReduced(numbers.constBegin(),
- numbers.constEnd(),
- &Number::isEven,
- &QLinkedList<Number>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<Number>() << 2 << 4);
- }
-
- // function-member
- {
- QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList, keepEvenIntegers, &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers,
- &QLinkedList<int>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::filteredReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers,
- &QLinkedList<int>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList, keepEvenIntegers, &QLinkedList<int>::append, QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.begin(),
- linkedList.end(),
- keepEvenIntegers,
- &QLinkedList<int>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingFilteredReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- keepEvenIntegers,
- &QLinkedList<int>::append,
- QtConcurrent::OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4);
- }
-
- // member-function
- {
- int sum = QtConcurrent::filteredReduced(numberLinkedList, &Number::isEven, numberSumReduce);
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::filteredReduced(QLinkedList<Number>(numberLinkedList),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(numberLinkedList.begin(),
- numberLinkedList.end(),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::filteredReduced(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(numberLinkedList, &Number::isEven, numberSumReduce);
- QCOMPARE(sum, 6);
-
- int sum2 = QtConcurrent::blockingFilteredReduced(QLinkedList<Number>(numberLinkedList),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum2, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(numberLinkedList.begin(),
- numberLinkedList.end(),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum, 6);
- }
- {
- int sum = QtConcurrent::blockingFilteredReduced(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::isEven,
- numberSumReduce);
- QCOMPARE(sum, 6);
- }
-
- // ### the same as above, with an initial result value
-}
-
-bool filterfn(int i)
-{
- return (i % 2);
-}
-
-void tst_QtConcurrentFilter::resultAt()
-{
-
- QList<int> ints;
- for (int i=0; i < 1000; ++i)
- ints << i;
-
- QFuture<int> future = QtConcurrent::filtered(ints, filterfn);
- future.waitForFinished();
-
-
- for (int i = 0; i < future.resultCount(); ++i) {
- QCOMPARE(future.resultAt(i), ints.at(i * 2 + 1));
- }
-
-}
-
-bool waitFilterfn(const int &i)
-{
- QTest::qWait(1);
- return (i % 2);
-}
-
-void tst_QtConcurrentFilter::incrementalResults()
-{
- const int count = 200;
- QList<int> ints;
- for (int i=0; i < count; ++i)
- ints << i;
-
- QFuture<int> future = QtConcurrent::filtered(ints, waitFilterfn);
-
- QList<int> results;
-
- while (future.isFinished() == false) {
- for (int i = 0; i < future.resultCount(); ++i) {
- results += future.resultAt(i);
- }
- QTest::qWait(1);
- }
-
- QCOMPARE(future.isFinished(), true);
- QCOMPARE(future.resultCount(), count / 2);
- QCOMPARE(future.results().count(), count / 2);
-}
-
-void tst_QtConcurrentFilter::noDetach()
-{
- {
- QList<int> l = QList<int>() << 1;
- QVERIFY(l.isDetached());
-
- QList<int> ll = l;
- QVERIFY(l.isDetached() == false);
-
- QtConcurrent::filtered(l, waitFilterfn).waitForFinished();
-
- QVERIFY(l.isDetached() == false);
- QVERIFY(ll.isDetached() == false);
-
- QtConcurrent::blockingFiltered(l, waitFilterfn);
-
- QVERIFY(l.isDetached() == false);
- QVERIFY(ll.isDetached() == false);
-
- QtConcurrent::filteredReduced(l, waitFilterfn, intSumReduce).waitForFinished();
-
- QVERIFY(l.isDetached() == false);
- QVERIFY(ll.isDetached() == false);
-
- QtConcurrent::filter(l, waitFilterfn).waitForFinished();
- QVERIFY(l.isDetached() == true);
- QVERIFY(ll.isDetached() == true);
- }
- {
- const QList<int> l = QList<int>() << 1;
- QVERIFY(l.isDetached());
-
- const QList<int> ll = l;
- QVERIFY(l.isDetached() == false);
-
- QtConcurrent::filtered(l, waitFilterfn).waitForFinished();
-
- QVERIFY(l.isDetached() == false);
- QVERIFY(ll.isDetached() == false);
-
- QtConcurrent::filteredReduced(l, waitFilterfn, intSumReduce).waitForFinished();
-
- QVERIFY(l.isDetached() == false);
- QVERIFY(ll.isDetached() == false);
- }
-}
-
-#ifndef QT_NO_STL
-void tst_QtConcurrentFilter::stlContainers()
-{
- std::vector<int> vector;
- vector.push_back(1);
- vector.push_back(2);
-
- std::vector<int> vector2 = QtConcurrent::blockingFiltered(vector, waitFilterfn);
- QCOMPARE(vector2.size(), (std::vector<int>::size_type)(1));
- QCOMPARE(vector2[0], 1);
-
- std::list<int> list;
- list.push_back(1);
- list.push_back(2);
-
- std::list<int> list2 = QtConcurrent::blockingFiltered(list, waitFilterfn);
- QCOMPARE(list2.size(), (std::list<int>::size_type)(1));
- QCOMPARE(*list2.begin(), 1);
-
- QtConcurrent::filtered(list, waitFilterfn).waitForFinished();
- QtConcurrent::filtered(vector, waitFilterfn).waitForFinished();
- QtConcurrent::filtered(vector.begin(), vector.end(), waitFilterfn).waitForFinished();
-
- QtConcurrent::blockingFilter(list, waitFilterfn);
- QCOMPARE(list2.size(), (std::list<int>::size_type)(1));
- QCOMPARE(*list2.begin(), 1);
-}
-#endif
-
-#endif
-
-QTEST_MAIN(tst_QtConcurrentFilter)
-#include "tst_qtconcurrentfilter.moc"
diff --git a/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro b/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro
deleted file mode 100644
index e876c86725..0000000000
--- a/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/qtconcurrentiteratekernel.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG += testcase parallel_test
-TARGET = tst_qtconcurrentiteratekernel
-QT = core testlib
-SOURCES = tst_qtconcurrentiteratekernel.cpp
diff --git a/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp b/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp
deleted file mode 100644
index 16f61513eb..0000000000
--- a/tests/auto/corelib/concurrent/qtconcurrentiteratekernel/tst_qtconcurrentiteratekernel.cpp
+++ /dev/null
@@ -1,310 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite 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 <QThread>
-
-struct TestIterator
-{
- TestIterator(int i)
- :i(i) { }
-
- int operator-(const TestIterator &other)
- {
- return i - other.i;
- }
-
- TestIterator& operator++()
- {
- ++i;
- return *this;
- }
-
- bool operator!=(const TestIterator &other) const
- {
- return i != other.i;
- }
-
- int i;
-};
-
-#include <qiterator.h>
-#ifndef QT_NO_STL
-namespace std {
-template <>
-struct iterator_traits<TestIterator>
-{
- typedef random_access_iterator_tag iterator_category;
-};
-
-int distance(TestIterator &a, TestIterator &b)
-{
- return b - a;
-}
-
-}
-#endif
-
-#include <qtconcurrentiteratekernel.h>
-#include <QtTest/QtTest>
-
-using namespace QtConcurrent;
-
-class tst_QtConcurrentIterateKernel: public QObject
-{
- Q_OBJECT
-private slots:
- // "for" iteration tests:
- void instantiate();
- void cancel();
- void stresstest();
- void noIterations();
- void throttling();
-#ifndef QT_NO_STL
- void blockSize();
- void multipleResults();
-#endif
-};
-
-QAtomicInt iterations;
-class PrintFor : public IterateKernel<TestIterator, void>
-{
-public:
- PrintFor(TestIterator begin, TestIterator end) : IterateKernel<TestIterator, void>(begin, end) { iterations.store(0); }
- bool runIterations(TestIterator/*beginIterator*/, int begin, int end, void *)
- {
- iterations.fetchAndAddRelaxed(end - begin);
-#ifdef PRINT
- qDebug() << QThread::currentThread() << "iteration" << begin << "to" << end << "(exclusive)";
-#endif
- return false;
- }
- bool runIteration(TestIterator it, int index , void *result)
- {
- return runIterations(it, index, index + 1, result);
- }
-
-};
-
-class SleepPrintFor : public IterateKernel<TestIterator, void>
-{
-public:
- SleepPrintFor(TestIterator begin, TestIterator end) : IterateKernel<TestIterator, void>(begin, end) { iterations.store(0); }
- inline bool runIterations(TestIterator/*beginIterator*/, int begin, int end, void *)
- {
- QTest::qSleep(200);
- iterations.fetchAndAddRelaxed(end - begin);
-#ifdef PRINT
- qDebug() << QThread::currentThread() << "iteration" << begin << "to" << end << "(exclusive)";
-#endif
- return false;
- }
- bool runIteration(TestIterator it, int index , void *result)
- {
- return runIterations(it, index, index + 1, result);
- }
-};
-
-
-void tst_QtConcurrentIterateKernel::instantiate()
-{
- startThreadEngine(new PrintFor(0, 40)).startBlocking();
- QCOMPARE(iterations.load(), 40);
-}
-
-void tst_QtConcurrentIterateKernel::cancel()
-{
- {
- QFuture<void> f = startThreadEngine(new SleepPrintFor(0, 40)).startAsynchronously();
- f.cancel();
- f.waitForFinished();
- QVERIFY(f.isCanceled());
- QVERIFY(iterations.load() <= QThread::idealThreadCount()); // the threads might run one iteration each before they are canceled.
- }
-}
-
-QAtomicInt counter;
-class CountFor : public IterateKernel<TestIterator, void>
-{
-public:
- CountFor(TestIterator begin, TestIterator end) : IterateKernel<TestIterator, void>(begin, end) { iterations.store(0); }
- inline bool runIterations(TestIterator/*beginIterator*/, int begin, int end, void *)
- {
- counter.fetchAndAddRelaxed(end - begin);
- return false;
- }
- bool runIteration(TestIterator it, int index , void *result)
- {
- return runIterations(it, index, index + 1, result);
- }
-};
-
-void tst_QtConcurrentIterateKernel::stresstest()
-{
- const int iterations = 1000;
- const int times = 50;
- for (int i = 0; i < times; ++i) {
- counter.store(0);
- CountFor f(0, iterations);
- f.startBlocking();
- QCOMPARE(counter.load(), iterations);
- }
-}
-
-void tst_QtConcurrentIterateKernel::noIterations()
-{
- const int times = 20000;
- for (int i = 0; i < times; ++i)
- startThreadEngine(new IterateKernel<TestIterator, void>(0, 0)).startBlocking();
-}
-
-QMutex threadsMutex;
-QSet<QThread *> threads;
-class ThrottleFor : public IterateKernel<TestIterator, void>
-{
-public:
- // this class throttles between iterations 100 and 200,
- // and then records how many threads that run between
- // iterations 140 and 160.
- ThrottleFor(TestIterator begin, TestIterator end) : IterateKernel<TestIterator, void>(begin, end) { iterations.store(0); throttling = false; }
- inline bool runIterations(TestIterator/*beginIterator*/, int begin, int end, void *)
- {
- if (200 >= begin && 200 < end) {
- throttling = false;
- }
-
- iterations.fetchAndAddRelaxed(end - begin);
-
- QThread *thread = QThread::currentThread();
-
- if (begin > 140 && end < 160) {
- QMutexLocker locker(&threadsMutex);
- threads.insert(thread);
- }
-
- if (100 >= begin && 100 < end) {
- throttling = true;
- }
-
- QTest::qWait(1);
-
- return false;
- }
- bool runIteration(TestIterator it, int index , void *result)
- {
- return runIterations(it, index, index + 1, result);
- }
-
- bool shouldThrottleThread()
- {
- const int load = iterations.load();
- return (load > 100 && load < 200);
- }
- bool throttling;
-};
-
-void tst_QtConcurrentIterateKernel::throttling()
-{
- const int totalIterations = 400;
- iterations.store(0);
-
- threads.clear();
-
- ThrottleFor f(0, totalIterations);
- f.startBlocking();
-
- QCOMPARE(iterations.load(), totalIterations);
-
-
- QCOMPARE(threads.count(), 1);
-}
-
-
-int peakBlockSize = 0;
-class BlockSizeRecorder : public IterateKernel<TestIterator, void>
-{
-public:
- BlockSizeRecorder(TestIterator begin, TestIterator end) : IterateKernel<TestIterator, void>(begin, end) { }
- inline bool runIterations(TestIterator, int begin, int end, void *)
- {
- peakBlockSize = qMax(peakBlockSize, end - begin);
- return false;
- }
-};
-
-// Missing stl iterators prevent correct block size calculation.
-#ifndef QT_NO_STL
-void tst_QtConcurrentIterateKernel::blockSize()
-{
- const int expectedMinimumBlockSize = 1024 / QThread::idealThreadCount();
- BlockSizeRecorder(0, 10000).startBlocking();
- if (peakBlockSize < expectedMinimumBlockSize)
- qDebug() << "block size" << peakBlockSize;
- QVERIFY(peakBlockSize >= expectedMinimumBlockSize);
-}
-#endif
-
-class MultipleResultsFor : public IterateKernel<TestIterator, int>
-{
-public:
- MultipleResultsFor(TestIterator begin, TestIterator end) : IterateKernel<TestIterator, int>(begin, end) { }
- inline bool runIterations(TestIterator, int begin, int end, int *results)
- {
- for (int i = begin; i < end; ++i)
- results[i - begin] = i;
- return true;
- }
-};
-
-// Missing stl iterators prevent correct summation.
-#ifndef QT_NO_STL
-void tst_QtConcurrentIterateKernel::multipleResults()
-{
- QFuture<int> f = startThreadEngine(new MultipleResultsFor(0, 10)).startAsynchronously();
- QCOMPARE(f.results().count() , 10);
- QCOMPARE(f.resultAt(0), 0);
- QCOMPARE(f.resultAt(5), 5);
- QCOMPARE(f.resultAt(9), 9);
- f.waitForFinished();
-}
-#endif
-
-QTEST_MAIN(tst_QtConcurrentIterateKernel)
-
-#include "tst_qtconcurrentiteratekernel.moc"
diff --git a/tests/auto/corelib/concurrent/qtconcurrentmap/functions.h b/tests/auto/corelib/concurrent/qtconcurrentmap/functions.h
deleted file mode 100644
index ebca462676..0000000000
--- a/tests/auto/corelib/concurrent/qtconcurrentmap/functions.h
+++ /dev/null
@@ -1,130 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite 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$
-**
-****************************************************************************/
-#ifndef FUNCTIONS_H
-#define FUNCTIONS_H
-
-bool keepEvenIntegers(const int &x)
-{
- return (x & 1) == 0;
-}
-
-class KeepEvenIntegers
-{
-public:
- bool operator()(const int &x)
- {
- return (x & 1) == 0;
- }
-};
-
-class Number
-{
- int n;
-
-public:
- Number()
- : n(0)
- { }
-
- Number(int n)
- : n(n)
- { }
-
- void multiplyBy2()
- {
- n *= 2;
- }
-
- Number multipliedBy2() const
- {
- return n * 2;
- }
-
- bool isEven() const
- {
- return (n & 1) == 0;
- }
-
- int toInt() const
- {
- return n;
- }
-
- QString toString() const
- {
- return QString::number(n);
- }
-
- bool operator==(const Number &other) const
- {
- return n == other.n;
- }
-};
-
-void intSumReduce(int &sum, int x)
-{
- sum += x;
-}
-
-class IntSumReduce
-{
-public:
- void operator()(int &sum, int x)
- {
- sum += x;
- }
-};
-
-void numberSumReduce(int &sum, const Number &x)
-{
- sum += x.toInt();
-}
-
-class NumberSumReduce
-{
-public:
- void operator()(int &sum, const Number &x)
- {
- sum += x.toInt();
- }
-};
-
-#endif
diff --git a/tests/auto/corelib/concurrent/qtconcurrentmap/qtconcurrentmap.pro b/tests/auto/corelib/concurrent/qtconcurrentmap/qtconcurrentmap.pro
deleted file mode 100644
index b4f5cbc565..0000000000
--- a/tests/auto/corelib/concurrent/qtconcurrentmap/qtconcurrentmap.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-CONFIG += testcase parallel_test
-TARGET = tst_qtconcurrentmap
-QT = core testlib
-SOURCES = tst_qtconcurrentmap.cpp
-DEFINES += QT_STRICT_ITERATORS
diff --git a/tests/auto/corelib/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp b/tests/auto/corelib/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp
deleted file mode 100644
index df74c028d3..0000000000
--- a/tests/auto/corelib/concurrent/qtconcurrentmap/tst_qtconcurrentmap.cpp
+++ /dev/null
@@ -1,2426 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite 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 <qtconcurrentmap.h>
-#include <qtconcurrentexception.h>
-
-#include <qdebug.h>
-#include <QThread>
-
-#include <QtTest/QtTest>
-
-#include "functions.h"
-
-Q_DECLARE_METATYPE(QVector<int>);
-Q_DECLARE_METATYPE(QVector<double>);
-Q_DECLARE_METATYPE(QVector<QString>);
-Q_DECLARE_METATYPE(QList<int>);
-Q_DECLARE_METATYPE(QList<double>);
-Q_DECLARE_METATYPE(QList<QString>);
-
-class tst_QtConcurrentMap: public QObject
-{
- Q_OBJECT
-private slots:
-#ifdef QT_NO_CONCURRENT_MAP
- void initTestCase()
-#else
- void map();
- void blocking_map();
- void mapped();
- void blocking_mapped();
- void mappedReduced();
- void blocking_mappedReduced();
- void assignResult();
- void functionOverloads();
-#ifndef QT_NO_EXCEPTIONS
- void exceptions();
-#endif
- void incrementalResults();
- void noDetach();
-#ifndef QT_NO_STL
- void stlContainers();
-#endif
- void qFutureAssignmentLeak();
- void stressTest();
-public slots:
- void throttling();
-#endif
-};
-
-#ifdef QT_NO_CONCURRENT_FILTER
-void tst_QtConcurrentFilter::initTestCase()
-{
- QSKIP("This test is skipped for gcc 3.x");
-}
-
-#else
-
-using namespace QtConcurrent;
-
-void multiplyBy2Immutable(int x)
-{
- x *= 2;
-}
-
-class MultiplyBy2Immutable
-{
-public:
- void operator()(int x)
- {
- x *= 2;
- }
-};
-
-void multiplyBy2InPlace(int &x)
-{
- x *= 2;
-}
-
-class MultiplyBy2InPlace
-{
-public:
- void operator()(int &x)
- {
- x *= 2;
- }
-};
-
-Q_DECLARE_METATYPE(QList<Number>);
-
-void tst_QtConcurrentMap::map()
-{
- // functors take arguments by reference, modifying the sequence in place
- {
- QList<int> list;
- list << 1 << 2 << 3;
-
- // functor
- QtConcurrent::map(list, MultiplyBy2InPlace()).waitForFinished();
- QCOMPARE(list, QList<int>() << 2 << 4 << 6);
- QtConcurrent::map(list.begin(), list.end(), MultiplyBy2InPlace()).waitForFinished();
- QCOMPARE(list, QList<int>() << 4 << 8 << 12);
-
- // function
- QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
- QCOMPARE(list, QList<int>() << 8 << 16 << 24);
- QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
- QCOMPARE(list, QList<int>() << 16 << 32 << 48);
-
- // bound function
- QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
- QCOMPARE(list, QList<int>() << 32 << 64 << 96);
- QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
- QCOMPARE(list, QList<int>() << 64 << 128 << 192);
-
- // member function
- QList<Number> numberList;
- numberList << 1 << 2 << 3;
- QtConcurrent::map(numberList, &Number::multiplyBy2).waitForFinished();
- QCOMPARE(numberList, QList<Number>() << 2 << 4 << 6);
- QtConcurrent::map(numberList.begin(), numberList.end(), &Number::multiplyBy2).waitForFinished();
- QCOMPARE(numberList, QList<Number>() << 4 << 8 << 12);
-
-#ifdef Q_COMPILER_LAMBDA
- // lambda
- QtConcurrent::map(list, [](int &x){x *= 2;}).waitForFinished();
- QCOMPARE(list, QList<int>() << 128 << 256 << 384);
- QtConcurrent::map(list.begin(), list.end(), [](int &x){x *= 2;}).waitForFinished();
- QCOMPARE(list, QList<int>() << 256 << 512 << 768);
-#endif
-
- }
-
- // functors don't take arguments by reference, making these no-ops
- {
- QList<int> list;
- list << 1 << 2 << 3;
-
- // functor
- QtConcurrent::map(list, MultiplyBy2Immutable()).waitForFinished();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QtConcurrent::map(list.begin(), list.end(), MultiplyBy2Immutable()).waitForFinished();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- // function
- QtConcurrent::map(list, multiplyBy2Immutable).waitForFinished();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QtConcurrent::map(list.begin(), list.end(), multiplyBy2Immutable).waitForFinished();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- // bound function
- QtConcurrent::map(list, multiplyBy2Immutable).waitForFinished();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QtConcurrent::map(list.begin(), list.end(), multiplyBy2Immutable).waitForFinished();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
-#ifdef Q_COMPILER_LAMBDA
- // lambda
- QtConcurrent::map(list, [](int x){x *= 2;}).waitForFinished();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QtConcurrent::map(list.begin(), list.end(), [](int x){x *= 2;}).waitForFinished();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-#endif
- }
-
- // Linked lists and forward iterators
- {
- QLinkedList<int> list;
- list << 1 << 2 << 3;
-
- // functor
- QtConcurrent::map(list, MultiplyBy2InPlace()).waitForFinished();
- QCOMPARE(list, QLinkedList<int>() << 2 << 4 << 6);
- QtConcurrent::map(list.begin(), list.end(), MultiplyBy2InPlace()).waitForFinished();
- QCOMPARE(list, QLinkedList<int>() << 4 << 8 << 12);
-
- // function
- QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
- QCOMPARE(list, QLinkedList<int>() << 8 << 16 << 24);
- QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
- QCOMPARE(list, QLinkedList<int>() << 16 << 32 << 48);
-
- // bound function
- QtConcurrent::map(list, multiplyBy2InPlace).waitForFinished();
- QCOMPARE(list, QLinkedList<int>() << 32 << 64 << 96);
- QtConcurrent::map(list.begin(), list.end(), multiplyBy2InPlace).waitForFinished();
- QCOMPARE(list, QLinkedList<int>() << 64 << 128 << 192);
-
- // member function
- QLinkedList<Number> numberList;
- numberList << 1 << 2 << 3;
- QtConcurrent::map(numberList, &Number::multiplyBy2).waitForFinished();
- QCOMPARE(numberList, QLinkedList<Number>() << 2 << 4 << 6);
- QtConcurrent::map(numberList.begin(), numberList.end(), &Number::multiplyBy2).waitForFinished();
- QCOMPARE(numberList, QLinkedList<Number>() << 4 << 8 << 12);
- }
-
-#if 0
- // not allowed: map() with immutable sequences makes no sense
- {
- const QList<int> list = QList<int>() << 1 << 2 << 3;
-
- QtConcurrent::map(list, MultiplyBy2Immutable());
- QtConcurrent::map(list, multiplyBy2Immutable);
- QtConcurrent::map(list, multiplyBy2Immutable);
- }
-#endif
-
-#if 0
- // not allowed: in place modification of a temp copy (since temp copy goes out of scope)
- {
- QList<int> list;
- list << 1 << 2 << 3;
-
- QtConcurrent::map(QList<int>(list), MultiplyBy2InPlace());
- QtConcurrent::map(QList<int>(list), multiplyBy2);
- QtConcurrent::map(QList<int>(list), multiplyBy2InPlace);
-
- QList<Number> numberList;
- numberList << 1 << 2 << 3;
- QtConcurrent::map(QList<Number>(numberList), &Number::multiplyBy2);
- }
-#endif
-
-#if 0
- // not allowed: map() on a const list, where functors try to modify the items in the list
- {
- const QList<int> list = QList<int>() << 1 << 2 << 3;;
-
- QtConcurrent::map(list, MultiplyBy2InPlace());
- QtConcurrent::map(list, multiplyBy2InPlace);
- QtConcurrent::map(list, multiplyBy2InPlace);
-
- const QList<Number> numberList = QList<Number>() << 1 << 2 << 3;
- QtConcurrent::map(numberList, &Number::multiplyBy2);
- }
-#endif
-}
-
-void tst_QtConcurrentMap::blocking_map()
-{
- // functors take arguments by reference, modifying the sequence in place
- {
- QList<int> list;
- list << 1 << 2 << 3;
-
- // functor
- QtConcurrent::blockingMap(list, MultiplyBy2InPlace());
- QCOMPARE(list, QList<int>() << 2 << 4 << 6);
- QtConcurrent::blockingMap(list.begin(), list.end(), MultiplyBy2InPlace());
- QCOMPARE(list, QList<int>() << 4 << 8 << 12);
-
- // function
- QtConcurrent::blockingMap(list, multiplyBy2InPlace);
- QCOMPARE(list, QList<int>() << 8 << 16 << 24);
- QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
- QCOMPARE(list, QList<int>() << 16 << 32 << 48);
-
- // bound function
- QtConcurrent::blockingMap(list, multiplyBy2InPlace);
- QCOMPARE(list, QList<int>() << 32 << 64 << 96);
- QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
- QCOMPARE(list, QList<int>() << 64 << 128 << 192);
-
- // member function
- QList<Number> numberList;
- numberList << 1 << 2 << 3;
- QtConcurrent::blockingMap(numberList, &Number::multiplyBy2);
- QCOMPARE(numberList, QList<Number>() << 2 << 4 << 6);
- QtConcurrent::blockingMap(numberList.begin(), numberList.end(), &Number::multiplyBy2);
- QCOMPARE(numberList, QList<Number>() << 4 << 8 << 12);
- }
-
- // functors don't take arguments by reference, making these no-ops
- {
- QList<int> list;
- list << 1 << 2 << 3;
-
- // functor
- QtConcurrent::blockingMap(list, MultiplyBy2Immutable());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QtConcurrent::blockingMap(list.begin(), list.end(), MultiplyBy2Immutable());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- // function
- QtConcurrent::blockingMap(list, multiplyBy2Immutable);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2Immutable);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- // bound function
- QtConcurrent::blockingMap(list, multiplyBy2Immutable);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2Immutable);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- }
-
- // Linked lists and forward iterators
- {
- QLinkedList<int> list;
- list << 1 << 2 << 3;
-
- // functor
- QtConcurrent::blockingMap(list, MultiplyBy2InPlace());
- QCOMPARE(list, QLinkedList<int>() << 2 << 4 << 6);
- QtConcurrent::blockingMap(list.begin(), list.end(), MultiplyBy2InPlace());
- QCOMPARE(list, QLinkedList<int>() << 4 << 8 << 12);
-
- // function
- QtConcurrent::blockingMap(list, multiplyBy2InPlace);
- QCOMPARE(list, QLinkedList<int>() << 8 << 16 << 24);
- QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
- QCOMPARE(list, QLinkedList<int>() << 16 << 32 << 48);
-
- // bound function
- QtConcurrent::blockingMap(list, multiplyBy2InPlace);
- QCOMPARE(list, QLinkedList<int>() << 32 << 64 << 96);
- QtConcurrent::blockingMap(list.begin(), list.end(), multiplyBy2InPlace);
- QCOMPARE(list, QLinkedList<int>() << 64 << 128 << 192);
-
- // member function
- QLinkedList<Number> numberList;
- numberList << 1 << 2 << 3;
- QtConcurrent::blockingMap(numberList, &Number::multiplyBy2);
- QCOMPARE(numberList, QLinkedList<Number>() << 2 << 4 << 6);
- QtConcurrent::blockingMap(numberList.begin(), numberList.end(), &Number::multiplyBy2);
- QCOMPARE(numberList, QLinkedList<Number>() << 4 << 8 << 12);
- }
-
-#if 0
- // not allowed: map() with immutable sequences makes no sense
- {
- const QList<int> list = QList<int>() << 1 << 2 << 3;
-
- QtConcurrent::blockingMap(list, MultiplyBy2Immutable());
- QtConcurrent::blockkng::map(list, multiplyBy2Immutable);
- QtConcurrent::blockingMap(list, multiplyBy2Immutable);
- }
-#endif
-
-#if 0
- // not allowed: in place modification of a temp copy (since temp copy goes out of scope)
- {
- QList<int> list;
- list << 1 << 2 << 3;
-
- QtConcurrent::blockingMap(QList<int>(list), MultiplyBy2InPlace());
- QtConcurrent::blockingMap(QList<int>(list), multiplyBy2);
- QtConcurrent::blockingMap(QList<int>(list), multiplyBy2InPlace);
-
- QList<Number> numberList;
- numberList << 1 << 2 << 3;
- QtConcurrent::blockingMap(QList<Number>(numberList), &Number::multiplyBy2);
- }
-#endif
-
-#if 0
- // not allowed: map() on a const list, where functors try to modify the items in the list
- {
- const QList<int> list = QList<int>() << 1 << 2 << 3;;
-
- QtConcurrent::blockingMap(list, MultiplyBy2InPlace());
- QtConcurrent::blockingMap(list, multiplyBy2InPlace);
- QtConcurrent::blockingMap(list, multiplyBy2InPlace);
-
- const QList<Number> numberList = QList<Number>() << 1 << 2 << 3;
- QtConcurrent::blockingMap(numberList, &Number::multiplyBy2);
- }
-#endif
-}
-
-int multiplyBy2(int x)
-{
- int y = x * 2;
- return y;
-}
-
-class MultiplyBy2
-{
-public:
- typedef int result_type;
-
- int operator()(int x) const
- {
- int y = x * 2;
- return y;
- }
-};
-
-double intToDouble(int x)
-{
- return double(x);
-}
-
-class IntToDouble
-{
-public:
- typedef double result_type;
-
- double operator()(int x) const
- {
- return double(x);
- }
-};
-
-int stringToInt(const QString &string)
-{
- return string.toInt();
-}
-
-class StringToInt
-{
-public:
- typedef int result_type;
-
- int operator()(const QString &string) const
- {
- return string.toInt();
- }
-};
-
-void tst_QtConcurrentMap::mapped()
-{
- QList<int> list;
- list << 1 << 2 << 3;
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3;
- QList<Number> numberList;
- numberList << 1 << 2 << 3;
- QLinkedList<Number> numberLinkedList;
- numberLinkedList << 1 << 2 << 3;
-
- // functor
- {
- QList<int> list2 = QtConcurrent::mapped(list, MultiplyBy2()).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
-
- QList<int> list3 = QtConcurrent::mapped(list.constBegin(),
- list.constEnd(),
- MultiplyBy2()).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
-
- QList<int> list4 = QtConcurrent::mapped(QList<int>(list), MultiplyBy2()).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
- }
- {
- QList<int> list2 = QtConcurrent::mapped(linkedList, MultiplyBy2()).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
-
- QList<int> list3 = QtConcurrent::mapped(linkedList.constBegin(),
- linkedList.constEnd(),
- MultiplyBy2()).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
-
- QList<int> list4 =
- QtConcurrent::mapped(QLinkedList<int>(linkedList), MultiplyBy2()).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
- }
-
- // function
- {
- QList<int> list2 = QtConcurrent::mapped(list, multiplyBy2).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
-
- QList<int> list3 = QtConcurrent::mapped(list.constBegin(),
- list.constEnd(),
- multiplyBy2).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
-
- QList<int> list4 = QtConcurrent::mapped(QList<int>(list), multiplyBy2).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
- }
- {
- QList<int> list2 = QtConcurrent::mapped(linkedList, multiplyBy2).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
-
- QList<int> list3 = QtConcurrent::mapped(linkedList.constBegin(),
- linkedList.constEnd(),
- multiplyBy2).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
-
- QList<int> list4 =
- QtConcurrent::mapped(QLinkedList<int>(linkedList), multiplyBy2).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
- }
-
- // bound function
- {
- QList<int> list2 = QtConcurrent::mapped(list, multiplyBy2).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
-
- QList<int> list3 = QtConcurrent::mapped(list.constBegin(),
- list.constEnd(),
- multiplyBy2).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
-
- QList<int> list4 = QtConcurrent::mapped(QList<int>(list), multiplyBy2).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
- }
- {
- QList<int> list2 = QtConcurrent::mapped(linkedList, multiplyBy2).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
-
- QList<int> list3 = QtConcurrent::mapped(linkedList.constBegin(),
- linkedList.constEnd(),
- multiplyBy2)
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
-
- QList<int> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList), multiplyBy2)
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
- }
-
- // const member function
- {
- QList<Number> numberList2 = QtConcurrent::mapped(numberList, &Number::multipliedBy2)
- .results();
- QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberList2, QList<Number>() << 2 << 4 << 6);
-
- QList<Number> numberList3 = QtConcurrent::mapped(numberList.constBegin(),
- numberList.constEnd(),
- &Number::multipliedBy2)
- .results();
- QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberList3, QList<Number>() << 2 << 4 << 6);
-
- QList<Number> numberList4 = QtConcurrent::mapped(QList<Number>(numberList),
- &Number::multipliedBy2)
- .results();
- QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberList4, QList<Number>() << 2 << 4 << 6);
- }
- {
- QList<Number> numberList2 = QtConcurrent::mapped(numberLinkedList, &Number::multipliedBy2)
- .results();
- QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberList2, QList<Number>() << 2 << 4 << 6);
-
- QList<Number> numberList3 = QtConcurrent::mapped(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::multipliedBy2)
- .results();
- QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberList3, QList<Number>() << 2 << 4 << 6);
-
- QList<Number> numberList4 = QtConcurrent::mapped(QLinkedList<Number>(numberLinkedList),
- &Number::multipliedBy2)
- .results();
- QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberList4, QList<Number>() << 2 << 4 << 6);
- }
-
- // change the value_type, same container
-
- // functor
- {
- QList<double> list2 = QtConcurrent::mapped(list, IntToDouble()).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list3 = QtConcurrent::mapped(list.constBegin(),
- list.constEnd(),
- IntToDouble())
- .results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list4 = QtConcurrent::mapped(QList<int>(list),
- IntToDouble())
- .results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
- }
- {
- QList<double> list2 = QtConcurrent::mapped(linkedList, IntToDouble()).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list3 = QtConcurrent::mapped(linkedList.constBegin(),
- linkedList.constEnd(),
- IntToDouble())
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList),
- IntToDouble())
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
- }
-
- // function
- {
- QList<double> list2 = QtConcurrent::mapped(list, intToDouble).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list3 = QtConcurrent::mapped(list.constBegin(),
- list.constEnd(),
- intToDouble)
- .results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list4 = QtConcurrent::mapped(QList<int>(list), intToDouble).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
- }
- {
- QList<double> list2 = QtConcurrent::mapped(linkedList, intToDouble).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list3 = QtConcurrent::mapped(linkedList.constBegin(),
- linkedList.constEnd(),
- intToDouble)
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList), intToDouble)
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
- }
-
- // bound function
- {
- QList<double> list2 = QtConcurrent::mapped(list, intToDouble).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list3 = QtConcurrent::mapped(list.constBegin(),
- list.constEnd(),
- intToDouble)
- .results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
-
-
- QList<double> list4 = QtConcurrent::mapped(QList<int>(list),
- intToDouble)
- .results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
- }
- {
- QList<double> list2 = QtConcurrent::mapped(linkedList, intToDouble).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list3 = QtConcurrent::mapped(linkedList.constBegin(),
- linkedList.constEnd(),
- intToDouble)
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
-
-
- QList<double> list4 = QtConcurrent::mapped(QLinkedList<int>(linkedList),
- intToDouble)
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
- }
-
- // const member function
- {
- QList<QString> list2 = QtConcurrent::mapped(numberList, &Number::toString).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<QString>() << "1" << "2" << "3");
-
- QList<QString> list3 = QtConcurrent::mapped(numberList.constBegin(),
- numberList.constEnd(),
- &Number::toString)
- .results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<QString>() << "1" << "2" << "3");
-
- QList<QString> list4 = QtConcurrent::mapped(QList<Number>(numberList), &Number::toString)
- .results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<QString>() << "1" << "2" << "3");
- }
- {
- QList<QString> list2 = QtConcurrent::mapped(numberLinkedList, &Number::toString).results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<QString>() << "1" << "2" << "3");
-
- QList<QString> list3 = QtConcurrent::mapped(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::toString)
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<QString>() << "1" << "2" << "3");
-
- QList<QString> list4 = QtConcurrent::mapped(QLinkedList<Number>(numberLinkedList),
- &Number::toString)
- .results();
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<QString>() << "1" << "2" << "3");
- }
-
- // change the value_type
- {
- QList<QString> strings = QStringList() << "1" << "2" << "3";
- QList<int> list = QtConcurrent::mapped(strings, StringToInt()).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
- strings.constEnd(),
- StringToInt())
- .results();
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
- }
- {
- QList<QString> strings = QStringList() << "1" << "2" << "3";
- QList<int> list = QtConcurrent::mapped(strings, stringToInt).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
- strings.constEnd(),
- stringToInt).results();
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
- }
-
- {
- QList<int> numberList2 = QtConcurrent::mapped(numberList, &Number::toInt).results();
- QCOMPARE(numberList2, QList<int>() << 1 << 2 << 3);
-
- QList<int> numberList3 = QtConcurrent::mapped(numberList.constBegin(),
- numberList.constEnd(),
- &Number::toInt)
- .results();
- QCOMPARE(numberList3, QList<int>() << 1 << 2 << 3);
- }
-
- // change the value_type from QStringList
- {
- QStringList strings = QStringList() << "1" << "2" << "3";
- QList<int> list = QtConcurrent::mapped(strings, StringToInt()).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
- strings.constEnd(),
- StringToInt())
- .results();
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
- }
- {
- QStringList strings = QStringList() << "1" << "2" << "3";
- QList<int> list = QtConcurrent::mapped(strings, stringToInt).results();
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- QList<int> list2 = QtConcurrent::mapped(strings.constBegin(),
- strings.constEnd(),
- stringToInt)
- .results();
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
- }
-}
-
-void tst_QtConcurrentMap::blocking_mapped()
-{
- QList<int> list;
- list << 1 << 2 << 3;
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3;
- QList<Number> numberList;
- numberList << 1 << 2 << 3;
- QLinkedList<Number> numberLinkedList;
- numberLinkedList << 1 << 2 << 3;
-
- // functor
- {
- QList<int> list2 = QtConcurrent::blockingMapped(list, MultiplyBy2());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
-
- QList<int> list3 = QtConcurrent::blockingMapped<QList<int> >(list.constBegin(),
- list.constEnd(),
- MultiplyBy2());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
-
- QList<int> list4 = QtConcurrent::blockingMapped(QList<int>(list), MultiplyBy2());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingMapped(linkedList, MultiplyBy2());
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4 << 6);
-
- QLinkedList<int> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<int> >(linkedList.constBegin(),
- linkedList.constEnd(),
- MultiplyBy2());
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<int>() << 2 << 4 << 6);
-
- QLinkedList<int> linkedList4 = QtConcurrent::blockingMapped(QLinkedList<int>(linkedList), MultiplyBy2());
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<int>() << 2 << 4 << 6);
- }
-
- // function
- {
- QList<int> list2 = QtConcurrent::blockingMapped(list, multiplyBy2);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
-
- QList<int> list3 = QtConcurrent::blockingMapped<QList<int> >(list.constBegin(),
- list.constEnd(),
- multiplyBy2);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
-
- QList<int> list4 = QtConcurrent::blockingMapped(QList<int>(list), multiplyBy2);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingMapped(linkedList, multiplyBy2);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4 << 6);
-
- QLinkedList<int> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<int> >(linkedList.constBegin(),
- linkedList.constEnd(),
- multiplyBy2);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<int>() << 2 << 4 << 6);
-
- QLinkedList<int> linkedList4 = QtConcurrent::blockingMapped(QLinkedList<int>(linkedList), multiplyBy2);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<int>() << 2 << 4 << 6);
- }
-
- // bound function
- {
- QList<int> list2 = QtConcurrent::blockingMapped(list, multiplyBy2);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 2 << 4 << 6);
-
- QList<int> list3 = QtConcurrent::blockingMapped<QList<int> >(list.constBegin(),
- list.constEnd(),
- multiplyBy2);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 2 << 4 << 6);
-
- QList<int> list4 = QtConcurrent::blockingMapped(QList<int>(list), multiplyBy2);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 2 << 4 << 6);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingMapped(linkedList, multiplyBy2);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<int>() << 2 << 4 << 6);
-
- QLinkedList<int> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<int> >(linkedList.constBegin(),
- linkedList.constEnd(),
- multiplyBy2);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<int>() << 2 << 4 << 6);
-
- QLinkedList<int> linkedList4 = QtConcurrent::blockingMapped(QLinkedList<int>(linkedList), multiplyBy2);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<int>() << 2 << 4 << 6);
- }
-
- // const member function
- {
- QList<Number> numberList2 = QtConcurrent::blockingMapped(numberList, &Number::multipliedBy2);
- QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberList2, QList<Number>() << 2 << 4 << 6);
-
- QList<Number> numberList3 = QtConcurrent::blockingMapped<QList<Number> >(numberList.constBegin(),
- numberList.constEnd(),
- &Number::multipliedBy2);
- QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberList3, QList<Number>() << 2 << 4 << 6);
-
- QList<Number> numberList4 = QtConcurrent::blockingMapped(QList<Number>(numberList),
- &Number::multipliedBy2);
- QCOMPARE(numberList, QList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberList4, QList<Number>() << 2 << 4 << 6);
- }
- {
- QLinkedList<Number> numberLinkedList2 = QtConcurrent::blockingMapped(numberLinkedList, &Number::multipliedBy2);
- QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberLinkedList2, QLinkedList<Number>() << 2 << 4 << 6);
-
- QLinkedList<Number> numberLinkedList3 = QtConcurrent::blockingMapped<QLinkedList<Number> >(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::multipliedBy2);
- QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberLinkedList3, QLinkedList<Number>() << 2 << 4 << 6);
-
- QLinkedList<Number> numberLinkedList4 = QtConcurrent::blockingMapped(QLinkedList<Number>(numberLinkedList),
- &Number::multipliedBy2);
- QCOMPARE(numberLinkedList, QLinkedList<Number>() << 1 << 2 << 3);
- QCOMPARE(numberLinkedList4, QLinkedList<Number>() << 2 << 4 << 6);
- }
-
- // change the value_type, same container
-
- // functor
- {
- QList<double> list2 = QtConcurrent::blockingMapped<QList<double> >(list, IntToDouble());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list3 = QtConcurrent::blockingMapped<QList<double> >(list.constBegin(),
- list.constEnd(),
- IntToDouble());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list4 = QtConcurrent::blockingMapped<QList<double> >(QList<int>(list),
- IntToDouble());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
- }
- {
- QLinkedList<double> linkedList2 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList, IntToDouble());
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
-
- QLinkedList<double> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList.constBegin(),
- linkedList.constEnd(),
- IntToDouble());
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
-
- QLinkedList<double> linkedList4 = QtConcurrent::blockingMapped<QLinkedList<double> >(QLinkedList<int>(linkedList),
- IntToDouble());
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
- }
-
- // function
- {
- QList<double> list2 = QtConcurrent::blockingMapped<QList<double> >(list, intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list3 = QtConcurrent::blockingMapped<QList<double> >(list.constBegin(),
- list.constEnd(),
- intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list4 = QtConcurrent::blockingMapped<QList<double> >(QList<int>(list), intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
- }
- {
- QLinkedList<double> linkedList2 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList, intToDouble);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
-
- QLinkedList<double> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList.constBegin(),
- linkedList.constEnd(),
- intToDouble);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
-
- QLinkedList<double> linkedList4 = QtConcurrent::blockingMapped<QLinkedList<double> >(QLinkedList<int>(linkedList), intToDouble);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
- }
-
- // bound function
- {
- QList<double> list2 = QtConcurrent::blockingMapped<QList<double> >(list, intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<double>() << 1.0 << 2.0 << 3.0);
-
- QList<double> list3 = QtConcurrent::blockingMapped<QList<double> >(list.constBegin(),
- list.constEnd(),
- intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<double>() << 1.0 << 2.0 << 3.0);
-
-
- QList<double> list4 = QtConcurrent::blockingMapped<QList<double> >(QList<int>(list),
- intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<double>() << 1.0 << 2.0 << 3.0);
- }
- {
- QLinkedList<double> linkedList2 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList, intToDouble);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
-
- QLinkedList<double> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<double> >(linkedList.constBegin(),
- linkedList.constEnd(),
- intToDouble);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
-
-
- QLinkedList<double> linkedList4 = QtConcurrent::blockingMapped<QLinkedList<double> >(QLinkedList<int>(linkedList),
- intToDouble);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<double>() << 1.0 << 2.0 << 3.0);
- }
-
- // const member function
- {
- QList<QString> list2 =
- QtConcurrent::blockingMapped<QList<QString> >(numberList, &Number::toString);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<QString>() << "1" << "2" << "3");
-
- QList<QString> list3 = QtConcurrent::blockingMapped<QList<QString> >(numberList.constBegin(),
- numberList.constEnd()
- , &Number::toString);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<QString>() << "1" << "2" << "3");
-
- QList<QString> list4 =
- QtConcurrent::blockingMapped<QList<QString> >(QList<Number>(numberList), &Number::toString);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<QString>() << "1" << "2" << "3");
- }
- {
- QLinkedList<QString> linkedList2 =
- QtConcurrent::blockingMapped<QLinkedList<QString> >(numberLinkedList, &Number::toString);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<QString>() << "1" << "2" << "3");
-
- QLinkedList<QString> linkedList3 = QtConcurrent::blockingMapped<QLinkedList<QString> >(numberLinkedList.constBegin(),
- numberLinkedList.constEnd()
- , &Number::toString);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<QString>() << "1" << "2" << "3");
-
- QLinkedList<QString> linkedList4 =
- QtConcurrent::blockingMapped<QLinkedList<QString> >(QLinkedList<Number>(numberLinkedList), &Number::toString);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<QString>() << "1" << "2" << "3");
- }
-
- // change the value_type
- {
- QList<QString> strings = QStringList() << "1" << "2" << "3";
- QList<int> list = QtConcurrent::blockingMapped(strings, StringToInt());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
- strings.constEnd(),
- StringToInt());
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
- }
- {
- QList<QString> strings = QStringList() << "1" << "2" << "3";
- QList<int> list = QtConcurrent::blockingMapped(strings, stringToInt);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
- strings.constEnd(),
- stringToInt);
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
- }
-
- {
- QList<int> numberList2 = QtConcurrent::blockingMapped(numberList, &Number::toInt);
- QCOMPARE(numberList2, QList<int>() << 1 << 2 << 3);
-
- QList<int> numberList3 = QtConcurrent::blockingMapped<QList<int> >(numberList.constBegin(),
- numberList.constEnd(),
- &Number::toInt);
- QCOMPARE(numberList3, QList<int>() << 1 << 2 << 3);
- }
-
- // change the value_type from QStringList
- {
- QStringList strings = QStringList() << "1" << "2" << "3";
- QList<int> list = QtConcurrent::blockingMapped(strings, StringToInt());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
- strings.constEnd(),
- StringToInt());
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
- }
- {
- QStringList strings = QStringList() << "1" << "2" << "3";
- QList<int> list = QtConcurrent::blockingMapped(strings, stringToInt);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
-
- QList<int> list2 = QtConcurrent::blockingMapped<QList<int> >(strings.constBegin(),
- strings.constEnd(),
- stringToInt);
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
- }
-
- // functor
- {
- QVector<double> list2 = QtConcurrent::blockingMapped<QVector<double> >(list, IntToDouble());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QVector<double>() << 1.0 << 2.0 << 3.0);
-
- QVector<double> list3 = QtConcurrent::blockingMapped<QVector<double> >(list.constBegin(),
- list.constEnd(),
- IntToDouble());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QVector<double>() << 1.0 << 2.0 << 3.0);
-
- QVector<double> list4 = QtConcurrent::blockingMapped<QVector<double> >(QList<int>(list),
- IntToDouble());
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QVector<double>() << 1.0 << 2.0 << 3.0);
-
- QStringList strings = QStringList() << "1" << "2" << "3";
- QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(strings, StringToInt());
- QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
-
- QVector<int> list6 = QtConcurrent::blockingMapped<QVector<int> >(strings.constBegin(),
- strings.constEnd(),
- StringToInt());
- QCOMPARE(list6, QVector<int>() << 1 << 2 << 3);
-
- QVector<int> list7 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings),
- StringToInt());
- QCOMPARE(list7, QVector<int>() << 1 << 2 << 3);
- }
-
- // function
- {
- QVector<double> list2 = QtConcurrent::blockingMapped<QVector<double> >(list, intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QVector<double>() << 1.0 << 2.0 << 3.0);
-
- QVector<double> list3 = QtConcurrent::blockingMapped<QVector<double> >(list.constBegin(),
- list.constEnd(),
- intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QVector<double>() << 1.0 << 2.0 << 3.0);
-
- QVector<double> list4 = QtConcurrent::blockingMapped<QVector<double> >(QList<int>(list),
- intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QVector<double>() << 1.0 << 2.0 << 3.0);
-
- QStringList strings = QStringList() << "1" << "2" << "3";
- QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(strings, stringToInt);
- QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
-
- QVector<int> list6 = QtConcurrent::blockingMapped<QVector<int> >(strings.constBegin(),
- strings.constEnd(),
- stringToInt);
- QCOMPARE(list6, QVector<int>() << 1 << 2 << 3);
-
- QVector<int> list7 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings),
- stringToInt);
- QCOMPARE(list7, QVector<int>() << 1 << 2 << 3);
- }
-
- // bound function
- {
- QVector<double> list2 = QtConcurrent::blockingMapped<QVector<double> >(list, intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QVector<double>() << 1.0 << 2.0 << 3.0);
-
- QVector<double> list3 = QtConcurrent::blockingMapped<QVector<double> >(QList<int>(list), intToDouble);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QVector<double>() << 1.0 << 2.0 << 3.0);
-
- QStringList strings = QStringList() << "1" << "2" << "3";
- QVector<int> list4 = QtConcurrent::blockingMapped<QVector<int> >(strings, stringToInt);
- QCOMPARE(list4, QVector<int>() << 1 << 2 << 3);
-
- QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings), stringToInt);
- QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
- }
-
- // const member function
- {
- QVector<QString> list2 = QtConcurrent::blockingMapped<QVector<QString> >(numberList, &Number::toString);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QVector<QString>() << "1" << "2" << "3");
-
- QVector<QString> list3 =
- QtConcurrent::blockingMapped<QVector<QString> >(QList<Number>(numberList), &Number::toString);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QVector<QString>() << "1" << "2" << "3");
-
- // not allowed: const member function where all arguments have default values
-#if 0
- QStringList strings = QStringList() << "1" << "2" << "3";
- QVector<int> list4 = QtConcurrent::blockingMapped<QVector<int> >(strings, &QString::toInt);
- QCOMPARE(list4, QVector<int>() << 1 << 2 << 3);
-
- QVector<int> list5 = QtConcurrent::blockingMapped<QVector<int> >(QStringList(strings), &QString::toInt);
- QCOMPARE(list5, QVector<int>() << 1 << 2 << 3);
-#endif
- }
-}
-
-int intSquare(int x)
-{
- return x * x;
-}
-
-class IntSquare
-{
-public:
- typedef int result_type;
-
- int operator()(int x)
- {
- return x * x;
- }
-};
-
-void tst_QtConcurrentMap::mappedReduced()
-{
- QList<int> list;
- list << 1 << 2 << 3;
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3;
- QList<Number> numberList;
- numberList << 1 << 2 << 3;
- QLinkedList<Number> numberLinkedList;
- numberLinkedList << 1 << 2 << 3;
-
- // test Q_DECLARE_OPERATORS_FOR_FLAGS
- QtConcurrent::ReduceOptions opt = (QtConcurrent::UnorderedReduce | QtConcurrent::SequentialReduce);
- QVERIFY(opt);
-
- // functor-functor
- {
- int sum = QtConcurrent::mappedReduced<int>(list, IntSquare(), IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::mappedReduced<int>(list.constBegin(),
- list.constEnd(),
- IntSquare(),
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::mappedReduced<int>(QList<int>(list), IntSquare(), IntSumReduce());
- QCOMPARE(sum3, 14);
-
- int sum4 = QtConcurrent::mappedReduced<int>(list, intSquare, intSumReduce);
- QCOMPARE(sum4, 14);
- int sum5 = QtConcurrent::mappedReduced<int>(list.constBegin(),
- list.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum5, 14);
-
- int sum6 = QtConcurrent::mappedReduced<int>(QList<int>(list),
- intSquare,
- intSumReduce);
- QCOMPARE(sum6, 14);
- }
- {
- int sum = QtConcurrent::mappedReduced<int>(linkedList, IntSquare(), IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::mappedReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- IntSquare(),
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(linkedList), IntSquare(), IntSumReduce());
- QCOMPARE(sum3, 14);
-
- int sum4 = QtConcurrent::mappedReduced<int>(linkedList, intSquare, intSumReduce);
- QCOMPARE(sum4, 14);
- int sum5 = QtConcurrent::mappedReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum5, 14);
-
- int sum6 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(linkedList),
- intSquare,
- intSumReduce);
- QCOMPARE(sum6, 14);
- }
-
- // function-functor
- {
- int sum = QtConcurrent::mappedReduced<int>(list, intSquare, IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::mappedReduced<int>(list.constBegin(),
- list.constEnd(),
- intSquare,
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::mappedReduced<int>(QList<int>(list), intSquare, IntSumReduce());
- QCOMPARE(sum3, 14);
- }
- {
- int sum = QtConcurrent::mappedReduced<int>(linkedList, intSquare, IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::mappedReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- intSquare,
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(linkedList), intSquare, IntSumReduce());
- QCOMPARE(sum3, 14);
- }
-
- // functor-function
- {
- int sum = QtConcurrent::mappedReduced(list, IntSquare(), intSumReduce);
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::mappedReduced(list.constBegin(),
- list.constEnd(),
- IntSquare(),
- intSumReduce);
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::mappedReduced(QList<int>(list), IntSquare(), intSumReduce);
- QCOMPARE(sum3, 14);
- }
- {
- int sum = QtConcurrent::mappedReduced(linkedList, IntSquare(), intSumReduce);
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::mappedReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- IntSquare(),
- intSumReduce);
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList), IntSquare(), intSumReduce);
- QCOMPARE(sum3, 14);
- }
-
- // function-function
- {
- int sum = QtConcurrent::mappedReduced(list, intSquare, intSumReduce);
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::mappedReduced(list.constBegin(),
- list.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::mappedReduced(QList<int>(list), intSquare, intSumReduce);
- QCOMPARE(sum3, 14);
- }
- {
- int sum = QtConcurrent::mappedReduced(linkedList, intSquare, intSumReduce);
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::mappedReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList), intSquare, intSumReduce);
- QCOMPARE(sum3, 14);
- }
-
- // functor-member
- {
- QList<int> list2 = QtConcurrent::mappedReduced(list,
- IntSquare(),
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
-
- QList<int> list3 = QtConcurrent::mappedReduced(list.constBegin(),
- list.constEnd(),
- IntSquare(),
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
-
- QList<int> list4 = QtConcurrent::mappedReduced(QList<int>(list),
- IntSquare(),
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::mappedReduced(linkedList,
- IntSquare(),
- &QLinkedList<int>::push_back,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
-
- QLinkedList<int> linkedList3 = QtConcurrent::mappedReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- IntSquare(),
- &QLinkedList<int>::push_back,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
-
- QLinkedList<int> linkedList4 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList),
- IntSquare(),
- &QLinkedList<int>::push_back,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
- }
-
- // member-functor
- {
- int sum = QtConcurrent::mappedReduced<int>(numberList, &Number::toInt, IntSumReduce());
- QCOMPARE(sum, 6);
- int sum2 = QtConcurrent::mappedReduced<int>(numberList.constBegin(),
- numberList.constEnd(),
- &Number::toInt,
- IntSumReduce());
- QCOMPARE(sum2, 6);
-
- int sum3 = QtConcurrent::mappedReduced<int>(QList<Number>(numberList),
- &Number::toInt,
- IntSumReduce());
- QCOMPARE(sum3, 6);
- }
- {
- int sum = QtConcurrent::mappedReduced<int>(numberLinkedList, &Number::toInt, IntSumReduce());
- QCOMPARE(sum, 6);
- int sum2 = QtConcurrent::mappedReduced<int>(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::toInt,
- IntSumReduce());
- QCOMPARE(sum2, 6);
-
- int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<Number>(numberLinkedList),
- &Number::toInt,
- IntSumReduce());
- QCOMPARE(sum3, 6);
- }
-
- // member-member
- {
- QList<int> list2 = QtConcurrent::mappedReduced(numberList,
- &Number::toInt,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
-
- QList<int> list3 = QtConcurrent::mappedReduced(numberList.constBegin(),
- numberList.constEnd(),
- &Number::toInt,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list3, QList<int>() << 1 << 2 << 3);
-
- QList<int> list4 = QtConcurrent::mappedReduced(QList<Number>(numberList),
- &Number::toInt,
- &QList<int>::push_back, OrderedReduce);
- QCOMPARE(list4, QList<int>() << 1 << 2 << 3);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::mappedReduced(numberLinkedList,
- &Number::toInt,
- &QLinkedList<int>::push_back,
- OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 2 << 3);
-
- QLinkedList<int> linkedList3 = QtConcurrent::mappedReduced(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::toInt,
- &QLinkedList<int>::push_back,
- OrderedReduce);
- QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 2 << 3);
-
- QLinkedList<int> linkedList4 = QtConcurrent::mappedReduced(QLinkedList<Number>(numberLinkedList),
- &Number::toInt,
- &QLinkedList<int>::push_back, OrderedReduce);
- QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 2 << 3);
- }
-
- // function-member
- {
- QList<int> list2 = QtConcurrent::mappedReduced(list,
- intSquare,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
-
- QList<int> list3 = QtConcurrent::mappedReduced(list.constBegin(),
- list.constEnd(),
- intSquare,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
-
- QList<int> list4 = QtConcurrent::mappedReduced(QList<int>(list),
- intSquare,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::mappedReduced(linkedList,
- intSquare,
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
-
- QLinkedList<int> linkedList3 = QtConcurrent::mappedReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- intSquare,
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
-
- QLinkedList<int> linkedList4 = QtConcurrent::mappedReduced(QLinkedList<int>(linkedList),
- intSquare,
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
- }
-
- // member-function
- {
- int sum = QtConcurrent::mappedReduced(numberList,
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum, 6);
- int sum2 = QtConcurrent::mappedReduced(numberList.constBegin(),
- numberList.constEnd(),
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum2, 6);
-
- int sum3 = QtConcurrent::mappedReduced(QList<Number>(numberList),
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum3, 6);
- }
- {
- int sum = QtConcurrent::mappedReduced(numberLinkedList,
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum, 6);
- int sum2 = QtConcurrent::mappedReduced(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum2, 6);
-
- int sum3 = QtConcurrent::mappedReduced(QLinkedList<Number>(numberLinkedList),
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum3, 6);
- }
-
- // linked lists
- {
-
- QLinkedList<int> list;
- list << 1 << 2 << 3;
-
- QLinkedList<Number> numberList;
- numberList << 1 << 2 << 3;
-
- int sum = QtConcurrent::mappedReduced<int>(list, IntSquare(), IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::mappedReduced<int>(list.constBegin(),
- list.constEnd(),
- IntSquare(),
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(list), IntSquare(), IntSumReduce());
- QCOMPARE(sum3, 14);
-
- int sum4 = QtConcurrent::mappedReduced<int>(list, intSquare, intSumReduce);
- QCOMPARE(sum4, 14);
- int sum5 = QtConcurrent::mappedReduced<int>(list.constBegin(),
- list.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum5, 14);
-
- int sum6 = QtConcurrent::mappedReduced<int>(QLinkedList<int>(list),
- intSquare,
- intSumReduce);
- QCOMPARE(sum6, 14);
- }
-
- // ### the same as above, with an initial result value
-}
-
-void tst_QtConcurrentMap::blocking_mappedReduced()
-{
- QList<int> list;
- list << 1 << 2 << 3;
- QLinkedList<int> linkedList;
- linkedList << 1 << 2 << 3;
- QList<Number> numberList;
- numberList << 1 << 2 << 3;
- QLinkedList<Number> numberLinkedList;
- numberLinkedList << 1 << 2 << 3;
-
- // functor-functor
- {
- int sum = QtConcurrent::blockingMappedReduced<int>(list, IntSquare(), IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
- list.constEnd(),
- IntSquare(),
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::blockingMappedReduced<int>(QList<int>(list), IntSquare(), IntSumReduce());
- QCOMPARE(sum3, 14);
-
- int sum4 = QtConcurrent::blockingMappedReduced<int>(list, intSquare, intSumReduce);
- QCOMPARE(sum4, 14);
- int sum5 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
- list.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum5, 14);
-
- int sum6 = QtConcurrent::blockingMappedReduced<int>(QList<int>(list),
- intSquare,
- intSumReduce);
- QCOMPARE(sum6, 14);
- }
- {
- int sum = QtConcurrent::blockingMappedReduced<int>(linkedList, IntSquare(), IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::blockingMappedReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- IntSquare(),
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(linkedList), IntSquare(), IntSumReduce());
- QCOMPARE(sum3, 14);
-
- int sum4 = QtConcurrent::blockingMappedReduced<int>(linkedList, intSquare, intSumReduce);
- QCOMPARE(sum4, 14);
- int sum5 = QtConcurrent::blockingMappedReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum5, 14);
-
- int sum6 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(linkedList),
- intSquare,
- intSumReduce);
- QCOMPARE(sum6, 14);
- }
-
- // function-functor
- {
- int sum = QtConcurrent::blockingMappedReduced<int>(list, intSquare, IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
- list.constEnd(),
- intSquare,
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::blockingMappedReduced<int>(QList<int>(list), intSquare, IntSumReduce());
- QCOMPARE(sum3, 14);
- }
- {
- int sum = QtConcurrent::blockingMappedReduced<int>(linkedList, intSquare, IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::blockingMappedReduced<int>(linkedList.constBegin(),
- linkedList.constEnd(),
- intSquare,
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(linkedList), intSquare, IntSumReduce());
- QCOMPARE(sum3, 14);
- }
-
- // functor-function
- {
- int sum = QtConcurrent::blockingMappedReduced(list, IntSquare(), intSumReduce);
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::blockingMappedReduced(list.constBegin(),
- list.constEnd(),
- IntSquare(),
- intSumReduce);
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::blockingMappedReduced(QList<int>(list), IntSquare(), intSumReduce);
- QCOMPARE(sum3, 14);
- }
- {
- int sum = QtConcurrent::blockingMappedReduced(linkedList, IntSquare(), intSumReduce);
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- IntSquare(),
- intSumReduce);
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList), IntSquare(), intSumReduce);
- QCOMPARE(sum3, 14);
- }
-
- // function-function
- {
- int sum = QtConcurrent::blockingMappedReduced(list, intSquare, intSumReduce);
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::blockingMappedReduced(list.constBegin(),
- list.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::blockingMappedReduced(QList<int>(list), intSquare, intSumReduce);
- QCOMPARE(sum3, 14);
- }
- {
- int sum = QtConcurrent::blockingMappedReduced(linkedList, intSquare, intSumReduce);
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList), intSquare, intSumReduce);
- QCOMPARE(sum3, 14);
- }
-
- // functor-member
- {
- QList<int> list2 = QtConcurrent::blockingMappedReduced(list,
- IntSquare(),
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
-
- QList<int> list3 = QtConcurrent::blockingMappedReduced(list.constBegin(),
- list.constEnd(),
- IntSquare(),
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
-
- QList<int> list4 = QtConcurrent::blockingMappedReduced(QList<int>(list),
- IntSquare(),
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingMappedReduced(linkedList,
- IntSquare(),
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
-
- QLinkedList<int> linkedList3 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- IntSquare(),
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
-
- QLinkedList<int> linkedList4 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList),
- IntSquare(),
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
- }
-
- // member-functor
- {
- int sum = QtConcurrent::blockingMappedReduced<int>(numberList, &Number::toInt,
- IntSumReduce());
- QCOMPARE(sum, 6);
- int sum2 = QtConcurrent::blockingMappedReduced<int>(numberList.constBegin(),
- numberList.constEnd(),
- &Number::toInt,
- IntSumReduce());
- QCOMPARE(sum2, 6);
-
- int sum3 = QtConcurrent::blockingMappedReduced<int>(QList<Number>(numberList),
- &Number::toInt,
- IntSumReduce());
- QCOMPARE(sum3, 6);
- }
- {
- int sum = QtConcurrent::blockingMappedReduced<int>(numberLinkedList, &Number::toInt, IntSumReduce());
- QCOMPARE(sum, 6);
- int sum2 = QtConcurrent::blockingMappedReduced<int>(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::toInt,
- IntSumReduce());
- QCOMPARE(sum2, 6);
-
- int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<Number>(numberLinkedList),
- &Number::toInt,
- IntSumReduce());
- QCOMPARE(sum3, 6);
- }
-
- // member-member
- {
- QList<int> list2 = QtConcurrent::blockingMappedReduced(numberList,
- &Number::toInt,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list2, QList<int>() << 1 << 2 << 3);
-
- QList<int> list3 = QtConcurrent::blockingMappedReduced(numberList.constBegin(),
- numberList.constEnd(),
- &Number::toInt,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list3, QList<int>() << 1 << 2 << 3);
-
- QList<int> list4 = QtConcurrent::blockingMappedReduced(QList<Number>(numberList),
- &Number::toInt,
- &QList<int>::push_back, OrderedReduce);
- QCOMPARE(list4, QList<int>() << 1 << 2 << 3);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingMappedReduced(numberLinkedList,
- &Number::toInt,
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 2 << 3);
-
- QLinkedList<int> linkedList3 = QtConcurrent::blockingMappedReduced(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::toInt,
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 2 << 3);
-
- QLinkedList<int> linkedList4 = QtConcurrent::blockingMappedReduced(QLinkedList<Number>(numberLinkedList),
- &Number::toInt,
- &QLinkedList<int>::append, OrderedReduce);
- QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 2 << 3);
- }
-
- // function-member
- {
- QList<int> list2 = QtConcurrent::blockingMappedReduced(list,
- intSquare,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list2, QList<int>() << 1 << 4 << 9);
-
- QList<int> list3 = QtConcurrent::blockingMappedReduced(list.constBegin(),
- list.constEnd(),
- intSquare,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list3, QList<int>() << 1 << 4 << 9);
-
- QList<int> list4 = QtConcurrent::blockingMappedReduced(QList<int>(list),
- intSquare,
- &QList<int>::push_back,
- OrderedReduce);
- QCOMPARE(list, QList<int>() << 1 << 2 << 3);
- QCOMPARE(list4, QList<int>() << 1 << 4 << 9);
- }
- {
- QLinkedList<int> linkedList2 = QtConcurrent::blockingMappedReduced(linkedList,
- intSquare,
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList2, QLinkedList<int>() << 1 << 4 << 9);
-
- QLinkedList<int> linkedList3 = QtConcurrent::blockingMappedReduced(linkedList.constBegin(),
- linkedList.constEnd(),
- intSquare,
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList3, QLinkedList<int>() << 1 << 4 << 9);
-
- QLinkedList<int> linkedList4 = QtConcurrent::blockingMappedReduced(QLinkedList<int>(linkedList),
- intSquare,
- &QLinkedList<int>::append,
- OrderedReduce);
- QCOMPARE(linkedList, QLinkedList<int>() << 1 << 2 << 3);
- QCOMPARE(linkedList4, QLinkedList<int>() << 1 << 4 << 9);
- }
-
- // member-function
- {
- int sum = QtConcurrent::blockingMappedReduced(numberList,
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum, 6);
- int sum2 = QtConcurrent::blockingMappedReduced(numberList.constBegin(),
- numberList.constEnd(),
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum2, 6);
-
- int sum3 = QtConcurrent::blockingMappedReduced(QList<Number>(numberList),
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum3, 6);
- }
- {
- int sum = QtConcurrent::blockingMappedReduced(numberLinkedList,
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum, 6);
- int sum2 = QtConcurrent::blockingMappedReduced(numberLinkedList.constBegin(),
- numberLinkedList.constEnd(),
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum2, 6);
-
- int sum3 = QtConcurrent::blockingMappedReduced(QLinkedList<Number>(numberLinkedList),
- &Number::toInt,
- intSumReduce);
- QCOMPARE(sum3, 6);
- }
-
- // linked lists
- {
-
- QLinkedList<int> list;
- list << 1 << 2 << 3;
-
- QLinkedList<Number> numberList;
- numberList << 1 << 2 << 3;
-
- int sum = QtConcurrent::blockingMappedReduced<int>(list, IntSquare(), IntSumReduce());
- QCOMPARE(sum, 14);
- int sum2 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
- list.constEnd(),
- IntSquare(),
- IntSumReduce());
- QCOMPARE(sum2, 14);
-
- int sum3 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(list), IntSquare(), IntSumReduce());
- QCOMPARE(sum3, 14);
-
- int sum4 = QtConcurrent::blockingMappedReduced<int>(list, intSquare, intSumReduce);
- QCOMPARE(sum4, 14);
- int sum5 = QtConcurrent::blockingMappedReduced<int>(list.constBegin(),
- list.constEnd(),
- intSquare,
- intSumReduce);
- QCOMPARE(sum5, 14);
-
- int sum6 = QtConcurrent::blockingMappedReduced<int>(QLinkedList<int>(list),
- intSquare,
- intSumReduce);
- QCOMPARE(sum6, 14);
- }
-
- // ### the same as above, with an initial result value
-}
-
-int sleeper(int val)
-{
- QTest::qSleep(100);
- return val;
-}
-
-void tst_QtConcurrentMap::assignResult()
-{
- const QList<int> startList = QList<int>() << 0 << 1 << 2;
- QList<int> list = QtConcurrent::blockingMapped(startList, sleeper);
- QCOMPARE(list.at(0), 0);
- QCOMPARE(list.at(1), 1);
-}
-
-int fnConst(const int &i)
-{
- return i;
-}
-
-int fn(int &i)
-{
- return i;
-}
-
-QString changeTypeConst(const int &)
-{
- return QString();
-}
-
-QString changeType(int &)
-{
- return QString();
-}
-
-int changeTypeQStringListConst(const QStringList &)
-{
- return 0;
-}
-
-int changeTypeQStringList(QStringList &)
-{
- return 0;
-}
-
-class MemFnTester
-{
-public:
- MemFnTester() {}
-
- MemFnTester fn()
- {
- return MemFnTester();
- }
-
- MemFnTester fnConst() const
- {
- return MemFnTester();
- }
-
- QString changeType()
- {
- return QString();
- }
-
- QString changeTypeConst() const
- {
- return QString();
- }
-};
-
-Q_DECLARE_METATYPE(QVector<MemFnTester>);
-Q_DECLARE_METATYPE(QList<MemFnTester>);
-
-void tst_QtConcurrentMap::functionOverloads()
-{
- QList<int> intList;
- const QList<int> constIntList;
- QList<MemFnTester> classList;
- const QList<MemFnTester> constMemFnTesterList;
-
- QtConcurrent::mapped(intList, fnConst);
- QtConcurrent::mapped(constIntList, fnConst);
- QtConcurrent::mapped(classList, &MemFnTester::fnConst);
- QtConcurrent::mapped(constMemFnTesterList, &MemFnTester::fnConst);
-
- QtConcurrent::blockingMapped<QVector<int> >(intList, fnConst);
- QtConcurrent::blockingMapped<QVector<int> >(constIntList, fnConst);
- QtConcurrent::blockingMapped<QVector<MemFnTester> >(classList, &MemFnTester::fnConst);
- QtConcurrent::blockingMapped<QVector<MemFnTester> >(constMemFnTesterList, &MemFnTester::fnConst);
-
- QtConcurrent::blockingMapped<QList<QString> >(intList, changeTypeConst);
- QtConcurrent::blockingMapped<QList<QString> >(constIntList, changeTypeConst);
- QtConcurrent::blockingMapped<QList<QString> >(classList, &MemFnTester::changeTypeConst);
- QtConcurrent::blockingMapped<QList<QString> >(constMemFnTesterList, &MemFnTester::changeTypeConst);
-
- QStringList stringList;
- const QStringList constStringList;
- // QtConcurrent::map(stringList, changeTypeQStringListConst);
- // QtConcurrent::map(intList, changeTypeNonConst);
- // QList<QString>(QtConcurrent::map(constStringList, changeTypeQStringList));
- // QtConcurrent::map(classList, &MemFnTester::changeType);
- // QtConcurrent::map(classList, &MemFnTester::changeTypeConst);
- // QtConcurrent::map(constMemFnTesterList, &MemFnTester::changeTypeConst);
-}
-
-QAtomicInt currentInstanceCount;
-QAtomicInt peakInstanceCount;
-class InstanceCounter
-{
-public:
- inline InstanceCounter()
- { currentInstanceCount.fetchAndAddRelaxed(1); updatePeak(); }
- inline ~InstanceCounter()
- { currentInstanceCount.fetchAndAddRelaxed(-1);}
- inline InstanceCounter(const InstanceCounter &)
- { currentInstanceCount.fetchAndAddRelaxed(1); updatePeak(); }
-
- void updatePeak()
- {
- forever {
- const int localPeak = peakInstanceCount.load();
- const int localCurrent = currentInstanceCount.load();
- if (localCurrent <= localPeak)
- break;
- if (peakInstanceCount.testAndSetOrdered(localPeak, localCurrent))
- break;
- }
- }
-};
-
-InstanceCounter slowMap(const InstanceCounter &in)
-{
- QTest::qSleep(2);
- return in;
-}
-
-InstanceCounter fastMap(const InstanceCounter &in)
-{
- QTest::qSleep(rand() % 2 + 1);
- return in;
-}
-
-void slowReduce(int &result, const InstanceCounter&)
-{
- QTest::qSleep(rand() % 4 + 1);
- ++result;
-}
-
-void fastReduce(int &result, const InstanceCounter&)
-{
- ++result;
-}
-
-void tst_QtConcurrentMap::throttling()
-{
- const int itemcount = 100;
- const int allowedTemporaries = QThread::idealThreadCount() * 40;
-
- {
- currentInstanceCount.store(0);
- peakInstanceCount.store(0);
-
- QList<InstanceCounter> instances;
- for (int i = 0; i < itemcount; ++i)
- instances.append(InstanceCounter());
-
- QCOMPARE(currentInstanceCount.load(), itemcount);
-
- int results = QtConcurrent::blockingMappedReduced(instances, slowMap, fastReduce);
- QCOMPARE(results, itemcount);
- QCOMPARE(currentInstanceCount.load(), itemcount);
- QVERIFY(peakInstanceCount.load() < itemcount + allowedTemporaries);
- }
-
- {
- QCOMPARE(currentInstanceCount.load(), 0);
- peakInstanceCount.store(0);
-
- QList<InstanceCounter> instances;
- for (int i = 0; i < itemcount; ++i)
- instances.append(InstanceCounter());
-
- QCOMPARE(currentInstanceCount.load(), itemcount);
- int results = QtConcurrent::blockingMappedReduced(instances, fastMap, slowReduce);
-
- QCOMPARE(results, itemcount);
- QCOMPARE(currentInstanceCount.load(), itemcount);
- QVERIFY(peakInstanceCount.load() < itemcount + allowedTemporaries);
- }
-}
-
-#ifndef QT_NO_EXCEPTIONS
-void throwMapper(int &e)
-{
- Q_UNUSED(e);
- throw QtConcurrent::Exception();
-}
-
-void tst_QtConcurrentMap::exceptions()
-{
- bool caught = false;
- try {
- QList<int> list = QList<int>() << 1 << 2 << 3;
- QtConcurrent::map(list, throwMapper).waitForFinished();
- } catch (const Exception &) {
- caught = true;
- }
- if (!caught)
- QFAIL("did not get exception");
-}
-#endif
-
-int mapper(const int &i)
-{
- QTest::qWait(1);
- return i;
-}
-
-void tst_QtConcurrentMap::incrementalResults()
-{
- const int count = 200;
- QList<int> ints;
- for (int i=0; i < count; ++i)
- ints << i;
-
- QFuture<int> future = QtConcurrent::mapped(ints, mapper);
-
- QList<int> results;
-
- while (future.isFinished() == false) {
- for (int i = 0; i < future.resultCount(); ++i) {
- results += future.resultAt(i);
- }
-
- QTest::qWait(1);
- }
-
- QCOMPARE(future.isFinished(), true);
- QCOMPARE(future.resultCount(), count);
- QCOMPARE(future.results().count(), count);
-}
-
-/*
- Test that mapped does not cause deep copies when holding
- references to Qt containers.
-*/
-void tst_QtConcurrentMap::noDetach()
-{
- {
- QList<int> l = QList<int>() << 1;
- QVERIFY(l.isDetached());
-
- QList<int> ll = l;
- QVERIFY(l.isDetached() == false);
-
- QtConcurrent::mapped(l, mapper).waitForFinished();
-
- QVERIFY(l.isDetached() == false);
- QVERIFY(ll.isDetached() == false);
-
- QtConcurrent::mappedReduced(l, mapper, intSumReduce).waitForFinished();
-
- QVERIFY(l.isDetached() == false);
- QVERIFY(ll.isDetached() == false);
-
- QtConcurrent::map(l, multiplyBy2Immutable).waitForFinished();
- QVERIFY(l.isDetached() == true);
- QVERIFY(ll.isDetached() == true);
- }
- {
- const QList<int> l = QList<int>() << 1;
- QVERIFY(l.isDetached());
-
- const QList<int> ll = l;
- QVERIFY(l.isDetached() == false);
-
- QtConcurrent::mapped(l, mapper).waitForFinished();
-
- QVERIFY(l.isDetached() == false);
- QVERIFY(ll.isDetached() == false);
-
- QtConcurrent::mappedReduced(l, mapper, intSumReduce).waitForFinished();
-
- QVERIFY(l.isDetached() == false);
- QVERIFY(ll.isDetached() == false);
- }
-
-}
-
-#ifndef QT_NO_STL
-void tst_QtConcurrentMap::stlContainers()
-{
- std::vector<int> vector;
- vector.push_back(1);
- vector.push_back(2);
-
- std::vector<int> vector2 = QtConcurrent::blockingMapped<std::vector<int> >(vector, mapper);
- QCOMPARE(vector2.size(), (std::vector<int>::size_type)(2));
-
- std::list<int> list;
- list.push_back(1);
- list.push_back(2);
-
- std::list<int> list2 = QtConcurrent::blockingMapped<std::list<int> >(list, mapper);
- QCOMPARE(list2.size(), (std::vector<int>::size_type)(2));
-
- QtConcurrent::mapped(list, mapper).waitForFinished();
-
- QtConcurrent::blockingMap(list, multiplyBy2Immutable);
-}
-#endif
-
-InstanceCounter ic_fn(const InstanceCounter & ic)
-{
- return InstanceCounter(ic);
-};
-
-// Verify that held results are deleted when a future is
-// assigned over with operator ==
-void tst_QtConcurrentMap::qFutureAssignmentLeak()
-{
- currentInstanceCount.store(0);
- peakInstanceCount.store(0);
- QFuture<InstanceCounter> future;
- {
- QList<InstanceCounter> list;
- for (int i=0;i<1000;++i)
- list += InstanceCounter();
- future = QtConcurrent::mapped(list, ic_fn);
- future.waitForFinished();
-
- future = QtConcurrent::mapped(list, ic_fn);
- future.waitForFinished();
-
- future = QtConcurrent::mapped(list, ic_fn);
- future.waitForFinished();
- }
-
- QCOMPARE(currentInstanceCount.load(), 1000);
- future = QFuture<InstanceCounter>();
- QCOMPARE(currentInstanceCount.load(), 0);
-}
-
-inline void increment(int &num)
-{
- ++num;
-}
-
-inline int echo(const int &num)
-{
- return num;
-}
-
-void add(int &result, const int &sum)
-{
- result += sum;
-}
-
-void tst_QtConcurrentMap::stressTest()
-{
- const int listSize = 1000;
- const int sum = (listSize - 1) * (listSize / 2);
- QList<int> list;
-
-
- for (int i = 0; i < listSize; ++i) {
- list.append(i);
- }
-
- for (int i =0 ; i < 100; ++i) {
- QList<int> result = QtConcurrent::blockingMapped(list, echo);
- for (int j = 0; j < listSize; ++j)
- QCOMPARE(result.at(j), j);
- }
-
- for (int i = 0 ; i < 100; ++i) {
- int result = QtConcurrent::blockingMappedReduced(list, echo, add);
- QCOMPARE(result, sum);
- }
-
- for (int i = 0 ; i < 100; ++i) {
- QtConcurrent::map(list, increment).waitForFinished();
- for (int j = 0; j < listSize; ++j)
- QCOMPARE(list.at(j), i + j + 1);
- }
-}
-
-#endif
-
-QTEST_MAIN(tst_QtConcurrentMap)
-#include "tst_qtconcurrentmap.moc"
diff --git a/tests/auto/corelib/concurrent/qtconcurrentresultstore/qtconcurrentresultstore.pro b/tests/auto/corelib/concurrent/qtconcurrentresultstore/qtconcurrentresultstore.pro
deleted file mode 100644
index e93fc587a7..0000000000
--- a/tests/auto/corelib/concurrent/qtconcurrentresultstore/qtconcurrentresultstore.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-CONFIG += testcase parallel_test
-TARGET = tst_qtconcurrentresultstore
-QT = core-private testlib
-SOURCES = tst_qtconcurrentresultstore.cpp
-DEFINES += QT_STRICT_ITERATORS
diff --git a/tests/auto/corelib/concurrent/qtconcurrentresultstore/tst_qtconcurrentresultstore.cpp b/tests/auto/corelib/concurrent/qtconcurrentresultstore/tst_qtconcurrentresultstore.cpp
deleted file mode 100644
index 980fc6c282..0000000000
--- a/tests/auto/corelib/concurrent/qtconcurrentresultstore/tst_qtconcurrentresultstore.cpp
+++ /dev/null
@@ -1,490 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite 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 <QtTest/QtTest>
-
-#include <qtconcurrentresultstore.h>
-
-using namespace QtConcurrent;
-
-class tst_QtConcurrentResultStore : public QObject
-{
- Q_OBJECT
-public slots:
- void init();
-private slots:
- void construction();
- void iterators();
- void addResult();
- void addResults();
- void resultIndex();
- void resultAt();
- void contains();
- void filterMode();
- void addCanceledResult();
- void count();
-private:
- int int0;
- int int1;
- int int2;
- QVector<int> vec0;
- QVector<int> vec1;
-};
-
-void tst_QtConcurrentResultStore::init()
-{
- int0 = 0;
- int1 = 1;
- int2 = 2;
- vec0 = QVector<int>() << 2 << 3;
- vec1 = QVector<int>() << 4 << 5;
-}
-
-void tst_QtConcurrentResultStore::construction()
-{
- ResultStore<int> store;
- QCOMPARE(store.count(), 0);
-}
-
-void tst_QtConcurrentResultStore::iterators()
-{
- {
- ResultStore<int> store;
- QVERIFY(store.begin() == store.end());
- QVERIFY(store.resultAt(0) == store.end());
- QVERIFY(store.resultAt(1) == store.end());
- }
- {
- ResultStoreBase storebase;
- storebase.addResult(-1, &int0); // note to self: adding a pointer to the stack here is ok since
- storebase.addResult(1, &int1); // ResultStoreBase does not take ownership, only ResultStore<> does.
- ResultIteratorBase it = storebase.begin();
- QCOMPARE(it.resultIndex(), 0);
- QVERIFY(it == storebase.begin());
- QVERIFY(it != storebase.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 1);
- QVERIFY(it != storebase.begin());
- QVERIFY(it != storebase.end());
-
- ++it;
- QVERIFY(it != storebase.begin());
- QVERIFY(it == storebase.end());
- }
-}
-
-void tst_QtConcurrentResultStore::addResult()
-{
- {
- // test addResult return value
- ResultStore<int> store;
- store.setFilterMode(true);
-
- QCOMPARE(store.addResult(0, &int0), 0);
- QCOMPARE(store.count(), 1); // result 0 becomes available
- QCOMPARE(store.contains(0), true);
-
- QCOMPARE(store.addResult(2, &int0), 2);
- QCOMPARE(store.count(), 1);
- QCOMPARE(store.contains(2), false);
-
- QCOMPARE(store.addCanceledResult(1), 1);
- QCOMPARE(store.count(), 2); // result 2 is renamed to 1 and becomes available
-
- QCOMPARE(store.contains(0), true);
- QCOMPARE(store.contains(1), true);
- QCOMPARE(store.contains(2), false);
-
- QCOMPARE(store.addResult(3, &int0), 3);
- QCOMPARE(store.count(), 3);
- QCOMPARE(store.contains(2), true);
-
- QCOMPARE(store.addResult(6, &int0), 6);
- QCOMPARE(store.count(), 3);
- QCOMPARE(store.addResult(7, &int0), 7);
- QCOMPARE(store.count(), 3);
- QCOMPARE(store.contains(3), false);
-
- QCOMPARE(store.addCanceledResult(4), 4);
- QCOMPARE(store.addCanceledResult(5), 5);
- QCOMPARE(store.count(), 5); // 6 and 7 is renamed to 3 and 4 and becomes available
-
- QCOMPARE(store.contains(3), true);
- QCOMPARE(store.contains(4), true);
-
- QCOMPARE(store.addResult(8, &int0), 8);
- QCOMPARE(store.contains(5), true);
- QCOMPARE(store.count(), 6);
-
- QCOMPARE(store.contains(6), false);
- QCOMPARE(store.contains(7), false);
- }
-}
-
-void tst_QtConcurrentResultStore::addResults()
-{
-
- ResultStoreBase store;
- store.addResults(-1, &vec0, 2, 2);
- store.addResults(-1, &vec1, 2, 2);
- ResultIteratorBase it = store.begin();
- QCOMPARE(it.resultIndex(), 0);
- QVERIFY(it == store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 1);
- QVERIFY(it != store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 2);
-
- ++it;
- QCOMPARE(it.resultIndex(), 3);
-
- ++it;
- QVERIFY(it == store.end());
-}
-
-void tst_QtConcurrentResultStore::resultIndex()
-{
- ResultStore<int> store;
- store.addResult(-1, &int0);
- store.addResults(-1, &vec0);
- store.addResult(-1, &int1);
-
- ResultIteratorBase it = store.begin();
- QCOMPARE(it.resultIndex(), 0);
- QVERIFY(it == store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 1);
- QVERIFY(it != store.begin());
- QVERIFY(it != store.end());
-
- ++it;
- QCOMPARE(it.resultIndex(), 2);
- QVERIFY(it != store.end());
- ++it;
- QCOMPARE(it.resultIndex(), 3);
- QVERIFY(it != store.end());
- ++it;
- QVERIFY(it == store.end());
-
- QCOMPARE(store.resultAt(0).value(), int0);
- QCOMPARE(store.resultAt(1).value(), vec0[0]);
- QCOMPARE(store.resultAt(2).value(), vec0[1]);
- QCOMPARE(store.resultAt(3).value(), int1);
-}
-
-void tst_QtConcurrentResultStore::resultAt()
-{
- {
- ResultStore<int> store;
- store.addResult(-1, &int0);
- store.addResults(-1, &vec0);
- store.addResult(200, &int1);
-
- QCOMPARE(store.resultAt(0).value(), int0);
- QCOMPARE(store.resultAt(1).value(), vec0[0]);
- QCOMPARE(store.resultAt(2).value(), vec0[1]);
- QCOMPARE(store.resultAt(200).value(), int1);
- }
- {
- ResultStore<int> store;
- store.addResult(1, &int1);
- store.addResult(0, &int0);
- store.addResult(-1, &int2);
-
- QCOMPARE(store.resultAt(0).value(), int0);
- QCOMPARE(store.resultAt(1).value(), int1);
- QCOMPARE(store.resultAt(2).value(), int2);
- }
-}
-
-void tst_QtConcurrentResultStore::contains()
-{
- {
- ResultStore<int> store;
- QCOMPARE(store.contains(0), false);
- QCOMPARE(store.contains(1), false);
- QCOMPARE(store.contains(INT_MAX), false);
- store.addResult(1, &int1);
- QVERIFY(store.contains(int1));
- store.addResult(0, &int0);
- QVERIFY(store.contains(int0));
- store.addResult(-1, &int2);
- QVERIFY(store.contains(int2));
- }
- {
- ResultStore<int> store;
- store.addResult(1, &int0);
- store.addResult(3, &int0);
- store.addResults(6, &vec0);
- QCOMPARE(store.contains(0), false);
- QCOMPARE(store.contains(1), true);
- QCOMPARE(store.contains(2), false);
- QCOMPARE(store.contains(3), true);
- QCOMPARE(store.contains(4), false);
- QCOMPARE(store.contains(5), false);
- QCOMPARE(store.contains(6), true);
- QCOMPARE(store.contains(7), true);
- }
-
- {
- ResultStore<int> store;
- store.setFilterMode(true);
- store.addResult(1, &int0);
- store.addResult(3, &int0);
- store.addResults(6, &vec0);
- QCOMPARE(store.contains(0), false);
- QCOMPARE(store.contains(1), false);
- QCOMPARE(store.contains(2), false);
- QCOMPARE(store.contains(3), false);
- QCOMPARE(store.contains(4), false);
- QCOMPARE(store.contains(5), false);
- QCOMPARE(store.contains(6), false);
- QCOMPARE(store.contains(7), false);
-
- store.addCanceledResult(0);
- store.addCanceledResult(2);
- store.addCanceledResults(4, 2);
-
- QCOMPARE(store.contains(0), true);
- QCOMPARE(store.contains(1), true);
- QCOMPARE(store.contains(2), true);
- QCOMPARE(store.contains(3), true);
- QCOMPARE(store.contains(4), false);
- QCOMPARE(store.contains(5), false);
- QCOMPARE(store.contains(6), false);
- QCOMPARE(store.contains(7), false);
- }
- {
- ResultStore<int> store;
- store.setFilterMode(true);
- store.addCanceledResult(0);
- QCOMPARE(store.contains(0), false);
-
- store.addResult(1, &int0);
- QCOMPARE(store.contains(0), true);
- QCOMPARE(store.contains(1), false);
- }
-}
-
-void tst_QtConcurrentResultStore::filterMode()
-{
- // Test filter mode, where "gaps" in the result array aren't allowed.
- ResultStore<int> store;
- QCOMPARE(store.filterMode(), false);
- store.setFilterMode(true);
- QVERIFY(store.filterMode());
-
- store.addResult(0, &int0);
- QCOMPARE(store.contains(0), true);
-
- store.addResult(2, &int2); // add result at index 2
- QCOMPARE(store.contains(2), false); // but 1 is missing, so this 2 won't be reported yet.
-
- store.addResult(1, &int1);
- QCOMPARE(store.contains(1), true);
- QCOMPARE(store.contains(2), true); // 2 should be visible now.
-
- store.addResult(4, &int0);
- store.addResult(5, &int0);
- store.addResult(7, &int0);
- QCOMPARE(store.contains(4), false);
- QCOMPARE(store.contains(5), false);
- QCOMPARE(store.contains(7), false);
-
- store.addResult(3, &int0); // adding 3 makes 4 and 5 visible
- QCOMPARE(store.contains(4), true);
- QCOMPARE(store.contains(5), true);
- QCOMPARE(store.contains(7), false);
-
- store.addResult(6, &int0); // adding 6 makes 7 visible
-
- QCOMPARE(store.contains(6), true);
- QCOMPARE(store.contains(7), true);
- QCOMPARE(store.contains(8), false);
-}
-
-void tst_QtConcurrentResultStore::addCanceledResult()
-{
- // test canceled results
- ResultStore<int> store;
- store.setFilterMode(true);
-
- store.addResult(0, &int0);
- QCOMPARE(store.contains(0), true);
-
- store.addResult(2, &int0);
- QCOMPARE(store.contains(2), false);
-
- store.addCanceledResult(1); // report no result at 1
-
- QCOMPARE(store.contains(0), true);
- QCOMPARE(store.contains(1), true); // 2 gets renamed to 1
- QCOMPARE(store.contains(2), false);
-
- store.addResult(3, &int0);
- QCOMPARE(store.contains(2), true); //3 gets renamed to 2
-
- store.addResult(6, &int0);
- store.addResult(7, &int0);
- QCOMPARE(store.contains(3), false);
-
- store.addCanceledResult(4);
- store.addCanceledResult(5);
-
- QCOMPARE(store.contains(3), true); //6 gets renamed to 3
- QCOMPARE(store.contains(4), true); //7 gets renamed to 4
-
- store.addResult(8, &int0);
- QCOMPARE(store.contains(5), true); //8 gets renamed to 4
-
- QCOMPARE(store.contains(6), false);
- QCOMPARE(store.contains(7), false);
-}
-
-void tst_QtConcurrentResultStore::count()
-{
- {
- // test resultCount in non-filtered mode. It should always be possible
- // to iterate through the results 0 to resultCount.
- ResultStore<int> store;
- store.addResult(0, &int0);
-
- QCOMPARE(store.count(), 1);
-
- store.addResult(2, &int0);
-
- QCOMPARE(store.count(), 1);
-
- store.addResult(1, &int0);
- QCOMPARE(store.count(), 3);
- }
-
- {
- ResultStore<int> store;
- store.addResult(2, &int0);
- QCOMPARE(store.count(), 0);
-
- store.addResult(1, &int0);
- QCOMPARE(store.count(), 0);
-
- store.addResult(0, &int0);
- QCOMPARE(store.count(), 3);
- }
-
- {
- ResultStore<int> store;
- store.addResults(2, &vec1);
- QCOMPARE(store.count(), 0);
-
- store.addResult(1, &int0);
- QCOMPARE(store.count(), 0);
-
- store.addResult(0, &int0);
- QCOMPARE(store.count(), 4);
- }
-
- {
- ResultStore<int> store;
- store.addResults(2, &vec1);
- QCOMPARE(store.count(), 0);
-
- store.addResults(0, &vec0);
- QCOMPARE(store.count(), 4);
- }
- {
- ResultStore<int> store;
- store.addResults(3, &vec1);
- QCOMPARE(store.count(), 0);
-
- store.addResults(0, &vec0);
- QCOMPARE(store.count(), 2);
-
- store.addResult(2, &int0);
- QCOMPARE(store.count(), 5);
- }
-
- {
- ResultStore<int> store;
- store.setFilterMode(true);
- store.addResults(3, &vec1);
- QCOMPARE(store.count(), 0);
-
- store.addResults(0, &vec0);
- QCOMPARE(store.count(), 2);
-
- store.addCanceledResult(2);
- QCOMPARE(store.count(), 4);
- }
-
- {
- ResultStore<int> store;
- store.setFilterMode(true);
- store.addResults(3, &vec1);
- QCOMPARE(store.count(), 0);
-
- store.addCanceledResults(0, 3);
- QCOMPARE(store.count(), 2);
- }
-
- {
- ResultStore<int> store;
- store.setFilterMode(true);
- store.addResults(3, &vec1);
- QCOMPARE(store.count(), 0);
-
- store.addCanceledResults(0, 3);
- QCOMPARE(store.count(), 2); // results at 3 and 4 become available at index 0, 1
-
- store.addResult(5, &int0);
- QCOMPARE(store.count(), 3);// result 5 becomes available at index 2
- }
-}
-
-QTEST_MAIN(tst_QtConcurrentResultStore)
-#include "tst_qtconcurrentresultstore.moc"
diff --git a/tests/auto/corelib/concurrent/qtconcurrentrun/qtconcurrentrun.pro b/tests/auto/corelib/concurrent/qtconcurrentrun/qtconcurrentrun.pro
deleted file mode 100644
index d4f130fecd..0000000000
--- a/tests/auto/corelib/concurrent/qtconcurrentrun/qtconcurrentrun.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG += testcase parallel_test
-TARGET = tst_qtconcurrentrun
-QT = core testlib
-SOURCES = tst_qtconcurrentrun.cpp
diff --git a/tests/auto/corelib/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp b/tests/auto/corelib/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp
deleted file mode 100644
index 96f705d00b..0000000000
--- a/tests/auto/corelib/concurrent/qtconcurrentrun/tst_qtconcurrentrun.cpp
+++ /dev/null
@@ -1,463 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite 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 <qtconcurrentrun.h>
-#include <qfuture.h>
-#include <QString>
-#include <QtTest/QtTest>
-
-using namespace QtConcurrent;
-
-class tst_QtConcurrentRun: public QObject
-{
- Q_OBJECT
-private slots:
- void runLightFunction();
- void runHeavyFunction();
- void returnValue();
- void functionObject();
- void memberFunctions();
- void implicitConvertibleTypes();
- void runWaitLoop();
- void recursive();
-#ifndef QT_NO_EXCEPTIONS
- void exceptions();
-#endif
- void functor();
- void lambda();
-};
-
-void light()
-{
- qDebug("in function");
- qDebug("done function");
-}
-
-void heavy()
-{
- qDebug("in function");
- QString str;
- for (int i = 0; i < 1000000; ++i)
- str.append("a");
- qDebug("done function");
-}
-
-
-void tst_QtConcurrentRun::runLightFunction()
-{
- qDebug("starting function");
- QFuture<void> future = run(light);
- qDebug("waiting");
- future.waitForFinished();
- qDebug("done");
-}
-
-void tst_QtConcurrentRun::runHeavyFunction()
-{
- qDebug("starting function");
- QFuture<void> future = run(heavy);
- qDebug("waiting");
- future.waitForFinished();
- qDebug("done");
-}
-
-int returnInt0()
-{
- return 10;
-}
-
-int returnInt1(int i)
-{
- return i;
-}
-
-class A
-{
-public:
- int member0() { return 10; }
- int member1(int in) { return in; }
-
- typedef int result_type;
- int operator()() { return 10; }
- int operator()(int in) { return in; }
-};
-
-class AConst
-{
-public:
- int member0() const { return 10; }
- int member1(int in) const { return in; }
-
- typedef int result_type;
- int operator()() const { return 10; }
- int operator()(int in) const { return in; }
-};
-
-void tst_QtConcurrentRun::returnValue()
-{
- QFuture<int> f;
-
- f = run(returnInt0);
- QCOMPARE(f.result(), 10);
-
- A a;
- f = run(&a, &A::member0);
- QCOMPARE(f.result(), 10);
-
- f = run(&a, &A::member1, 20);
- QCOMPARE(f.result(), 20);
-
- f = run(a, &A::member0);
- QCOMPARE(f.result(), 10);
-
- f = run(a, &A::member1, 20);
- QCOMPARE(f.result(), 20);
-
- f = run(a);
- QCOMPARE(f.result(), 10);
-
- f = run(&a);
- QCOMPARE(f.result(), 10);
-
- f = run(a, 20);
- QCOMPARE(f.result(), 20);
-
- f = run(&a, 20);
- QCOMPARE(f.result(), 20);
-
- const AConst aConst = AConst();
- f = run(&aConst, &AConst::member0);
- QCOMPARE(f.result(), 10);
-
- f = run(&aConst, &AConst::member1, 20);
- QCOMPARE(f.result(), 20);
-
- f = run(aConst, &AConst::member0);
- QCOMPARE(f.result(), 10);
-
- f = run(aConst, &AConst::member1, 20);
- QCOMPARE(f.result(), 20);
-
- f = run(aConst);
- QCOMPARE(f.result(), 10);
-
- f = run(&aConst);
- QCOMPARE(f.result(), 10);
-
- f = run(aConst, 20);
- QCOMPARE(f.result(), 20);
-
- f = run(&aConst, 20);
- QCOMPARE(f.result(), 20);
-}
-
-struct TestClass
-{
- void foo() { }
- typedef void result_type;
- void operator()() { }
- void operator()(int) { }
- void fooInt(int){ };
-};
-
-struct TestConstClass
-{
- void foo() const { }
- typedef void result_type;
- void operator()() const { }
- void operator()(int) const { }
- void fooInt(int) const { };
-};
-
-void tst_QtConcurrentRun::functionObject()
-{
- QFuture<void> f;
- TestClass c;
-
- f = run(c);
- f = run(&c);
- f = run(c, 10);
- f = run(&c, 10);
-
- const TestConstClass cc = TestConstClass();
- f = run(cc);
- f = run(&cc);
- f = run(cc, 10);
- f = run(&cc, 10);
-}
-
-
-void tst_QtConcurrentRun::memberFunctions()
-{
- TestClass c;
-
- run(c, &TestClass::foo).waitForFinished();
- run(&c, &TestClass::foo).waitForFinished();
- run(c, &TestClass::fooInt, 10).waitForFinished();
- run(&c, &TestClass::fooInt, 10).waitForFinished();
-
- const TestConstClass cc = TestConstClass();
- run(cc, &TestConstClass::foo).waitForFinished();
- run(&cc, &TestConstClass::foo).waitForFinished();
- run(cc, &TestConstClass::fooInt, 10).waitForFinished();
- run(&cc, &TestConstClass::fooInt, 10).waitForFinished();
-}
-
-
-void doubleFunction(double)
-{
-
-}
-
-void stringConstRefFunction(const QString &)
-{
-
-}
-
-void stringRefFunction(QString &)
-{
-
-}
-
-void stringFunction(QString)
-{
-
-}
-
-void stringIntFunction(QString)
-{
-
-}
-
-
-void tst_QtConcurrentRun::implicitConvertibleTypes()
-{
- double d;
- run(doubleFunction, d).waitForFinished();
- int i;
- run(doubleFunction, d).waitForFinished();
- run(doubleFunction, i).waitForFinished();
- run(doubleFunction, 10).waitForFinished();
- run(stringFunction, QLatin1String("Foo")).waitForFinished();
- run(stringConstRefFunction, QLatin1String("Foo")).waitForFinished();
- QString string;
- run(stringRefFunction, string).waitForFinished();
-}
-
-void fn() { }
-
-void tst_QtConcurrentRun::runWaitLoop()
-{
- for (int i = 0; i < 1000; ++i)
- run(fn).waitForFinished();
-}
-
-QAtomicInt count;
-
-void recursiveRun(int level)
-{
- count.ref();
- if (--level > 0) {
- QFuture<void> f1 = run(recursiveRun, level);
- QFuture<void> f2 = run(recursiveRun, level);
- f1.waitForFinished();
- f2.waitForFinished();
- }
-}
-
-int recursiveResult(int level)
-{
- count.ref();
- if (--level > 0) {
- QFuture<int> f1 = run(recursiveResult, level);
- QFuture<int> f2 = run(recursiveResult, level);
- return f1.result() + f2.result();
- }
- return 1;
-}
-
-void tst_QtConcurrentRun::recursive()
-{
- int levels = 15;
-
- for (int i = 0; i < QThread::idealThreadCount(); ++i) {
- count.store(0);
- QThreadPool::globalInstance()->setMaxThreadCount(i);
- recursiveRun(levels);
- QCOMPARE(count.load(), (int)pow(2.0, levels) - 1);
- }
-
- for (int i = 0; i < QThread::idealThreadCount(); ++i) {
- count.store(0);
- QThreadPool::globalInstance()->setMaxThreadCount(i);
- recursiveResult(levels);
- QCOMPARE(count.load(), (int)pow(2.0, levels) - 1);
- }
-}
-
-int e;
-void vfn0()
-{
- ++e;
-}
-
-int fn0()
-{
- return 1;
-}
-
-void vfn1(double)
-{
- ++e;
-}
-
-int fn1(int)
-{
- return 1;
-}
-
-void vfn2(double, int *)
-{
- ++e;
-}
-
-int fn2(double, int *)
-{
- return 1;
-}
-
-
-#ifndef QT_NO_EXCEPTIONS
-void throwFunction()
-{
- throw QtConcurrent::Exception();
-}
-
-int throwFunctionReturn()
-{
- throw QtConcurrent::Exception();
- return 0;
-}
-
-void tst_QtConcurrentRun::exceptions()
-{
- bool caught = false;
- try {
- QtConcurrent::run(throwFunction).waitForFinished();
- } catch (Exception &e) {
- caught = true;
- }
- if (!caught)
- QFAIL("did not get exception");
-
- caught = false;
- try {
- QtConcurrent::run(throwFunctionReturn).waitForFinished();
- } catch (Exception &e) {
- caught = true;
- }
- if (!caught)
- QFAIL("did not get exception");
-}
-#endif
-
-struct Functor {
- int operator()() { return 42; }
- double operator()(double a, double b) { return a/b; }
- int operator()(int a, int b) { return a/b; }
- void operator()(int) { }
- void operator()(int, int, int) { }
- void operator()(int, int, int, int) { }
- void operator()(int, int, int, int, int) { }
- void operator()(int, int, int, int, int, int) { }
-};
-
-// This tests functor without result_type; decltype need to be supported by the compiler.
-void tst_QtConcurrentRun::functor()
-{
-#ifndef Q_COMPILER_DECLTYPE
- QSKIP("Compiler does not support decltype");
-#else
- Functor f;
- {
- QFuture<int> fut = QtConcurrent::run(f);
- QCOMPARE(fut.result(), 42);
- }
- {
- QFuture<double> fut = QtConcurrent::run(f, 8.5, 1.8);
- QCOMPARE(fut.result(), (8.5/1.8));
- }
- {
- QFuture<int> fut = QtConcurrent::run(f, 19, 3);
- QCOMPARE(fut.result(), int(19/3));
- }
- {
- QtConcurrent::run(f, 1).waitForFinished();
- QtConcurrent::run(f, 1,2).waitForFinished();
- QtConcurrent::run(f, 1,2,3).waitForFinished();
- QtConcurrent::run(f, 1,2,3,4).waitForFinished();
- QtConcurrent::run(f, 1,2,3,4,5).waitForFinished();
- }
-#endif
-}
-
-void tst_QtConcurrentRun::lambda()
-{
-#ifndef Q_COMPILER_LAMBDA
- QSKIP("Compiler does not support lambda");
-#else
- QCOMPARE(QtConcurrent::run([](){ return 45; }).result(), 45);
- QCOMPARE(QtConcurrent::run([](int a){ return a+15; }, 12).result(), 12+15);
- QCOMPARE(QtConcurrent::run([](int a, double b){ return a + b; }, 12, 15).result(), double(12+15));
- QCOMPARE(QtConcurrent::run([](int a , int, int, int, int b){ return a + b; }, 1, 2, 3, 4, 5).result(), 1 + 5);
-
-#ifdef Q_COMPILER_INITIALIZER_LISTS
- {
- QString str { "Hello World Foo" };
- QFuture<QStringList> f1 = QtConcurrent::run([&](){ return str.split(' '); });
- auto r = f1.result();
- QCOMPARE(r, QStringList({"Hello", "World", "Foo"}));
- }
-#endif
-#endif
-}
-
-QTEST_MAIN(tst_QtConcurrentRun)
-#include "tst_qtconcurrentrun.moc"
diff --git a/tests/auto/corelib/concurrent/qtconcurrentthreadengine/qtconcurrentthreadengine.pro b/tests/auto/corelib/concurrent/qtconcurrentthreadengine/qtconcurrentthreadengine.pro
deleted file mode 100644
index 536ccc3ea5..0000000000
--- a/tests/auto/corelib/concurrent/qtconcurrentthreadengine/qtconcurrentthreadengine.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG += testcase parallel_test
-TARGET = tst_qtconcurrentthreadengine
-QT = core testlib
-SOURCES = tst_qtconcurrentthreadengine.cpp
diff --git a/tests/auto/corelib/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp b/tests/auto/corelib/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp
deleted file mode 100644
index 858faa6eab..0000000000
--- a/tests/auto/corelib/concurrent/qtconcurrentthreadengine/tst_qtconcurrentthreadengine.cpp
+++ /dev/null
@@ -1,520 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite 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 <qtconcurrentthreadengine.h>
-#include <qtconcurrentexception.h>
-#include <QThread>
-#include <QtTest/QtTest>
-
-using namespace QtConcurrent;
-
-class tst_QtConcurrentThreadEngine: public QObject
-{
- Q_OBJECT
-private slots:
- void runDirectly();
- void result();
- void runThroughStarter();
- void cancel();
- void throttle();
- void threadCount();
- void multipleResults();
- void stresstest();
- void cancelQueuedSlowUser();
-#ifndef QT_NO_EXCEPTIONS
- void exceptions();
-#endif
-};
-
-
-class PrintUser : public ThreadEngine<void>
-{
-public:
- ThreadFunctionResult threadFunction()
- {
- QTest::qSleep(50);
- QTest::qSleep(100);
- return ThreadFinished;
- }
-};
-
-void tst_QtConcurrentThreadEngine::runDirectly()
-{
- {
- PrintUser engine;
- engine.startSingleThreaded();
- engine.startBlocking();
- }
- {
- PrintUser *engine = new PrintUser();
- QFuture<void> f = engine->startAsynchronously();
- f.waitForFinished();
- }
-}
-
-class StringResultUser : public ThreadEngine<QString>
-{
-public:
- typedef QString ResultType;
- StringResultUser()
- : done(false) { }
-
- bool shouldStartThread()
- {
- return !done;
- }
-
- ThreadFunctionResult threadFunction()
- {
- done = true;
- return ThreadFinished;
- }
-
- QString *result()
- {
- foo = "Foo";
- return &foo;
- }
- QString foo;
- bool done;
-};
-
-void tst_QtConcurrentThreadEngine::result()
-{
- StringResultUser engine;
- QCOMPARE(*engine.startBlocking(), QString("Foo"));
-}
-
-class VoidResultUser : public ThreadEngine<void>
-{
-public:
- bool shouldStartThread()
- {
- return !done;
- }
-
- ThreadFunctionResult threadFunction()
- {
- done = true;
- return ThreadFinished;
- }
-
- void *result()
- {
- return 0;
- }
- bool done;
-};
-
-void tst_QtConcurrentThreadEngine::runThroughStarter()
-{
- {
- ThreadEngineStarter<QString> starter = startThreadEngine(new StringResultUser());
- QFuture<QString> f = starter.startAsynchronously();
- QCOMPARE(f.result(), QString("Foo"));
- }
-
- {
- ThreadEngineStarter<QString> starter = startThreadEngine(new StringResultUser());
- QString str = starter.startBlocking();
- QCOMPARE(str, QString("Foo"));
- }
-}
-
-class CancelUser : public ThreadEngine<void>
-{
-public:
- void *result()
- {
- return 0;
- }
-
- ThreadFunctionResult threadFunction()
- {
- while (this->isCanceled() == false)
- {
- QTest::qSleep(10);
- }
- return ThreadFinished;
- }
-};
-
-void tst_QtConcurrentThreadEngine::cancel()
-{
- {
- CancelUser *engine = new CancelUser();
- QFuture<void> f = engine->startAsynchronously();
- f.cancel();
- f.waitForFinished();
- }
- {
- CancelUser *engine = new CancelUser();
- QFuture<void> f = engine->startAsynchronously();
- QTest::qSleep(10);
- f.cancel();
- f.waitForFinished();
- }
-}
-
-QAtomicInt count;
-class ThrottleAlwaysUser : public ThreadEngine<void>
-{
-public:
- ThrottleAlwaysUser()
- {
- count.store(initialCount = 100);
- finishing = false;
- }
-
- bool shouldStartThread()
- {
- return !finishing;
- }
-
- ThreadFunctionResult threadFunction()
- {
- forever {
- const int local = count.load();
- if (local == 0) {
- finishing = true;
- return ThreadFinished;
- }
-
- if (count.testAndSetOrdered(local, local - 1))
- break;
- }
- return ThrottleThread;
- }
-
- bool finishing;
- int initialCount;
-};
-
-// Test that a user task with a thread function that always
-// want to be throttled still completes. The thread engine
-// should make keep one thread running at all times.
-void tst_QtConcurrentThreadEngine::throttle()
-{
- const int repeats = 10;
- for (int i = 0; i < repeats; ++i) {
- QFuture<void> f = (new ThrottleAlwaysUser())->startAsynchronously();
- f.waitForFinished();
- QCOMPARE(count.load(), 0);
- }
-
- for (int i = 0; i < repeats; ++i) {
- ThrottleAlwaysUser t;
- t.startBlocking();
- QCOMPARE(count.load(), 0);
- }
-}
-
-QSet<QThread *> threads;
-QMutex mutex;
-class ThreadCountUser : public ThreadEngine<void>
-{
-public:
- ThreadCountUser(bool finishImmediately = false)
- {
- threads.clear();
- finishing = finishImmediately;
- }
-
- bool shouldStartThread()
- {
- return !finishing;
- }
-
- ThreadFunctionResult threadFunction()
- {
- {
- QMutexLocker lock(&mutex);
- threads.insert(QThread::currentThread());
- }
- QTest::qSleep(10);
- finishing = true;
- return ThreadFinished;
- }
-
- bool finishing;
-};
-
-void tst_QtConcurrentThreadEngine::threadCount()
-{
- QSKIP("QTBUG-23333: This test is unstable");
-
- const int repeats = 10;
- for (int i = 0; i < repeats; ++i) {
- ThreadCountUser t;
- t.startBlocking();
- QCOMPARE(threads.count(), QThreadPool::globalInstance()->maxThreadCount() + 1); // +1 for the main thread.
-
- (new ThreadCountUser())->startAsynchronously().waitForFinished();
- QCOMPARE(threads.count(), QThreadPool::globalInstance()->maxThreadCount());
- }
-
- // Set the finish flag immediately, this should give us one thread only.
- for (int i = 0; i < repeats; ++i) {
- ThreadCountUser t(true /*finishImmediately*/);
- t.startBlocking();
- QCOMPARE(threads.count(), 1);
-
- (new ThreadCountUser(true /*finishImmediately*/))->startAsynchronously().waitForFinished();
- QCOMPARE(threads.count(), 1);
- }
-}
-
-class MultipleResultsUser : public ThreadEngine<int>
-{
-public:
- bool shouldStartThread()
- {
- return false;
- }
-
- ThreadFunctionResult threadFunction()
- {
- for (int i = 0; i < 10; ++i)
- this->reportResult(&i);
- return ThreadFinished;
- }
-};
-
-
-void tst_QtConcurrentThreadEngine::multipleResults()
-{
- MultipleResultsUser *engine = new MultipleResultsUser();
- QFuture<int> f = engine->startAsynchronously();
- QCOMPARE(f.results().count() , 10);
- QCOMPARE(f.resultAt(0), 0);
- QCOMPARE(f.resultAt(5), 5);
- QCOMPARE(f.resultAt(9), 9);
- f.waitForFinished();
-}
-
-
-class NoThreadsUser : public ThreadEngine<void>
-{
-public:
- bool shouldStartThread()
- {
- return false;
- }
-
- ThreadFunctionResult threadFunction()
- {
- return ThreadFinished;
- }
-
- void *result()
- {
- return 0;
- }
-};
-
-void tst_QtConcurrentThreadEngine::stresstest()
-{
- const int times = 20000;
-
- for (int i = 0; i < times; ++i) {
- VoidResultUser *engine = new VoidResultUser();
- engine->startAsynchronously().waitForFinished();
- }
-
- for (int i = 0; i < times; ++i) {
- VoidResultUser *engine = new VoidResultUser();
- engine->startAsynchronously();
- }
-
- for (int i = 0; i < times; ++i) {
- VoidResultUser *engine = new VoidResultUser();
- engine->startAsynchronously().waitForFinished();
- }
-}
-
-const int sleepTime = 20;
-class SlowUser : public ThreadEngine<void>
-{
-public:
- bool shouldStartThread() { return false; }
- ThreadFunctionResult threadFunction() { QTest::qSleep(sleepTime); return ThreadFinished; }
-};
-
-void tst_QtConcurrentThreadEngine::cancelQueuedSlowUser()
-{
- const int times = 100;
-
- QTime t;
- t.start();
-
- {
- QList<QFuture<void> > futures;
- for (int i = 0; i < times; ++i) {
- SlowUser *engine = new SlowUser();
- futures.append(engine->startAsynchronously());
- }
-
- foreach(QFuture<void> future, futures)
- future.cancel();
- }
-
- QVERIFY(t.elapsed() < (sleepTime * times) / 2);
-}
-
-#ifndef QT_NO_EXCEPTIONS
-
-class QtConcurrentExceptionThrower : public ThreadEngine<void>
-{
-public:
- QtConcurrentExceptionThrower(QThread *blockThread = 0)
- {
- this->blockThread = blockThread;
- }
-
- ThreadFunctionResult threadFunction()
- {
- QTest::qSleep(50);
- throw QtConcurrent::Exception();
- return ThreadFinished;
- }
- QThread *blockThread;
-};
-
-class UnrelatedExceptionThrower : public ThreadEngine<void>
-{
-public:
- UnrelatedExceptionThrower(QThread *blockThread = 0)
- {
- this->blockThread = blockThread;
- }
-
- ThreadFunctionResult threadFunction()
- {
- QTest::qSleep(50);
- throw int();
- return ThreadFinished;
- }
- QThread *blockThread;
-};
-
-void tst_QtConcurrentThreadEngine::exceptions()
-{
- // Asynchronous mode:
- {
- bool caught = false;
- try {
- QtConcurrentExceptionThrower *e = new QtConcurrentExceptionThrower();
- QFuture<void> f = e->startAsynchronously();
- f.waitForFinished();
- } catch (const Exception &) {
- caught = true;
- }
- QVERIFY2(caught, "did not get exception");
- }
-
- // Blocking mode:
- // test throwing the exception from a worker thread.
- {
- bool caught = false;
- try {
- QtConcurrentExceptionThrower e(QThread::currentThread());
- e.startBlocking();
- } catch (const Exception &) {
- caught = true;
- }
- QVERIFY2(caught, "did not get exception");
- }
-
- // test throwing the exception from the main thread (different code path)
- {
- bool caught = false;
- try {
- QtConcurrentExceptionThrower e(0);
- e.startBlocking();
- } catch (const Exception &) {
- caught = true;
- }
- QVERIFY2(caught, "did not get exception");
- }
-
- // Asynchronous mode:
- {
- bool caught = false;
- try {
- UnrelatedExceptionThrower *e = new UnrelatedExceptionThrower();
- QFuture<void> f = e->startAsynchronously();
- f.waitForFinished();
- } catch (const QtConcurrent::UnhandledException &) {
- caught = true;
- }
- QVERIFY2(caught, "did not get exception");
- }
-
- // Blocking mode:
- // test throwing the exception from a worker thread.
- {
- bool caught = false;
- try {
- UnrelatedExceptionThrower e(QThread::currentThread());
- e.startBlocking();
- } catch (const QtConcurrent::UnhandledException &) {
- caught = true;
- }
- QVERIFY2(caught, "did not get exception");
- }
-
- // test throwing the exception from the main thread (different code path)
- {
- bool caught = false;
- try {
- UnrelatedExceptionThrower e(0);
- e.startBlocking();
- } catch (const QtConcurrent::UnhandledException &) {
- caught = true;
- }
- QVERIFY2(caught, "did not get exception");
- }
-}
-
-#endif
-
-QTEST_MAIN(tst_QtConcurrentThreadEngine)
-
-#include "tst_qtconcurrentthreadengine.moc"
diff --git a/tests/auto/corelib/concurrent/qthreadpool/tst_qthreadpool.cpp b/tests/auto/corelib/concurrent/qthreadpool/tst_qthreadpool.cpp
deleted file mode 100644
index e08ed2b3fc..0000000000
--- a/tests/auto/corelib/concurrent/qthreadpool/tst_qthreadpool.cpp
+++ /dev/null
@@ -1,849 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite 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 <QtTest/QtTest>
-#include <qdatetime.h>
-#include <qthreadpool.h>
-#include <qstring.h>
-#include <qmutex.h>
-
-typedef void (*FunctionPointer)();
-
-class FunctionPointerTask : public QRunnable
-{
-public:
- FunctionPointerTask(FunctionPointer function)
- :function(function) {}
- void run() { function(); }
-private:
- FunctionPointer function;
-};
-
-QRunnable *createTask(FunctionPointer pointer)
-{
- return new FunctionPointerTask(pointer);
-}
-
-class tst_QThreadPool : public QObject
-{
- Q_OBJECT
-private slots:
- void runFunction();
- void createThreadRunFunction();
- void runMultiple();
- void waitcomplete();
- void runTask();
- void singleton();
- void destruction();
- void threadRecycling();
- void expiryTimeout();
-#ifndef QT_NO_EXCEPTIONS
- void exceptions();
-#endif
- void setMaxThreadCount_data();
- void setMaxThreadCount();
- void setMaxThreadCountStartsAndStopsThreads();
- void reserveThread_data();
- void reserveThread();
- void releaseThread_data();
- void releaseThread();
- void start();
- void tryStart();
- void tryStartPeakThreadCount();
- void tryStartCount();
- void waitForDone();
- void waitForDoneTimeout();
- void destroyingWaitsForTasksToFinish();
- void stressTest();
-};
-
-int testFunctionCount;
-
-void sleepTestFunction()
-{
- QTest::qSleep(1000);
- ++testFunctionCount;
-}
-
-void emptyFunct()
-{
-
-}
-
-void noSleepTestFunction()
-{
- ++testFunctionCount;
-}
-
-void sleepTestFunctionMutex()
-{
- static QMutex testMutex;
- QTest::qSleep(1000);
- testMutex.lock();
- ++testFunctionCount;
- testMutex.unlock();
-}
-
-void noSleepTestFunctionMutex()
-{
- static QMutex testMutex;
- testMutex.lock();
- ++testFunctionCount;
- testMutex.unlock();
-}
-
-void tst_QThreadPool::runFunction()
-{
- {
- QThreadPool manager;
- testFunctionCount = 0;
- manager.start(createTask(noSleepTestFunction));
- }
- QCOMPARE(testFunctionCount, 1);
-}
-
-void tst_QThreadPool::createThreadRunFunction()
-{
- {
- QThreadPool manager;
- testFunctionCount = 0;
- manager.start(createTask(noSleepTestFunction));
- }
-
- QCOMPARE(testFunctionCount, 1);
-}
-
-void tst_QThreadPool::runMultiple()
-{
- const int runs = 10;
-
- {
- QThreadPool manager;
- testFunctionCount = 0;
- for (int i = 0; i < runs; ++i) {
- manager.start(createTask(sleepTestFunctionMutex));
- }
- }
- QCOMPARE(testFunctionCount, runs);
-
- {
- QThreadPool manager;
- testFunctionCount = 0;
- for (int i = 0; i < runs; ++i) {
- manager.start(createTask(noSleepTestFunctionMutex));
- }
- }
- QCOMPARE(testFunctionCount, runs);
-
- {
- QThreadPool manager;
- for (int i = 0; i < 500; ++i)
- manager.start(createTask(emptyFunct));
- }
-}
-
-void tst_QThreadPool::waitcomplete()
-{
- testFunctionCount = 0;
- const int runs = 500;
- for (int i = 0; i < 500; ++i) {
- QThreadPool pool;
- pool.start(createTask(noSleepTestFunction));
- }
- QCOMPARE(testFunctionCount, runs);
-}
-
-volatile bool ran;
-class TestTask : public QRunnable
-{
-public:
- void run()
- {
- ran = true;
- }
-};
-
-void tst_QThreadPool::runTask()
-{
- QThreadPool manager;
- ran = false;
- manager.start(new TestTask());
- QTRY_VERIFY(ran);
-}
-
-/*
- Test running via QThreadPool::globalInstance()
-*/
-void tst_QThreadPool::singleton()
-{
- ran = false;
- QThreadPool::globalInstance()->start(new TestTask());
- QTRY_VERIFY(ran);
-}
-
-int *value = 0;
-class IntAccessor : public QRunnable
-{
-public:
- void run()
- {
- for (int i = 0; i < 100; ++i) {
- ++(*value);
- QTest::qSleep(1);
- }
- }
-};
-
-/*
- Test that the ThreadManager destructor waits until
- all threads have completed.
-*/
-void tst_QThreadPool::destruction()
-{
- value = new int;
- QThreadPool *threadManager = new QThreadPool();
- threadManager->start(new IntAccessor());
- threadManager->start(new IntAccessor());
- delete threadManager;
- delete value;
- value = 0;
-}
-
-QSemaphore threadRecyclingSemaphore;
-QThread *recycledThread = 0;
-
-class ThreadRecorderTask : public QRunnable
-{
-public:
- void run()
- {
- recycledThread = QThread::currentThread();
- threadRecyclingSemaphore.release();
- }
-};
-
-/*
- Test that the thread pool really reuses threads.
-*/
-void tst_QThreadPool::threadRecycling()
-{
- QThreadPool threadPool;
-
- threadPool.start(new ThreadRecorderTask());
- threadRecyclingSemaphore.acquire();
- QThread *thread1 = recycledThread;
-
- QTest::qSleep(100);
-
- threadPool.start(new ThreadRecorderTask());
- threadRecyclingSemaphore.acquire();
- QThread *thread2 = recycledThread;
- QCOMPARE(thread1, thread2);
-
- QTest::qSleep(100);
-
- threadPool.start(new ThreadRecorderTask());
- threadRecyclingSemaphore.acquire();
- QThread *thread3 = recycledThread;
- QCOMPARE(thread2, thread3);
-}
-
-class ExpiryTimeoutTask : public QRunnable
-{
-public:
- QThread *thread;
- int runCount;
- QSemaphore semaphore;
-
- ExpiryTimeoutTask()
- : thread(0), runCount(0)
- {
- setAutoDelete(false);
- }
-
- void run()
- {
- thread = QThread::currentThread();
- ++runCount;
- semaphore.release();
- }
-};
-
-void tst_QThreadPool::expiryTimeout()
-{
- ExpiryTimeoutTask task;
-
- QThreadPool threadPool;
- threadPool.setMaxThreadCount(1);
-
- int expiryTimeout = threadPool.expiryTimeout();
- threadPool.setExpiryTimeout(1000);
- QCOMPARE(threadPool.expiryTimeout(), 1000);
-
- // run the task
- threadPool.start(&task);
- QVERIFY(task.semaphore.tryAcquire(1, 10000));
- QCOMPARE(task.runCount, 1);
- QVERIFY(!task.thread->wait(100));
- // thread should expire
- QThread *firstThread = task.thread;
- QVERIFY(task.thread->wait(10000));
-
- // run task again, thread should be restarted
- threadPool.start(&task);
- QVERIFY(task.semaphore.tryAcquire(1, 10000));
- QCOMPARE(task.runCount, 2);
- QVERIFY(!task.thread->wait(100));
- // thread should expire again
- QVERIFY(task.thread->wait(10000));
-
- // thread pool should have reused the expired thread (instead of
- // starting a new one)
- QCOMPARE(firstThread, task.thread);
-
- threadPool.setExpiryTimeout(expiryTimeout);
- QCOMPARE(threadPool.expiryTimeout(), expiryTimeout);
-}
-
-#ifndef QT_NO_EXCEPTIONS
-class ExceptionTask : public QRunnable
-{
-public:
- void run()
- {
- throw new int;
- }
-};
-
-void tst_QThreadPool::exceptions()
-{
- ExceptionTask task;
- {
- QThreadPool threadPool;
-// Uncomment this for a nice crash.
-// threadPool.start(&task);
- }
-}
-#endif
-
-void tst_QThreadPool::setMaxThreadCount_data()
-{
- QTest::addColumn<int>("limit");
-
- QTest::newRow("") << 1;
- QTest::newRow("") << -1;
- QTest::newRow("") << 2;
- QTest::newRow("") << -2;
- QTest::newRow("") << 4;
- QTest::newRow("") << -4;
- QTest::newRow("") << 0;
- QTest::newRow("") << 12345;
- QTest::newRow("") << -6789;
- QTest::newRow("") << 42;
- QTest::newRow("") << -666;
-}
-
-void tst_QThreadPool::setMaxThreadCount()
-{
- QFETCH(int, limit);
- QThreadPool *threadPool = QThreadPool::globalInstance();
- int savedLimit = threadPool->maxThreadCount();
-
- // maxThreadCount() should always return the previous argument to
- // setMaxThreadCount(), regardless of input
- threadPool->setMaxThreadCount(limit);
- QCOMPARE(threadPool->maxThreadCount(), limit);
-
- // the value returned from maxThreadCount() should always be valid input for setMaxThreadCount()
- threadPool->setMaxThreadCount(savedLimit);
- QCOMPARE(threadPool->maxThreadCount(), savedLimit);
-
- // setting the limit on children should have no effect on the parent
- {
- QThreadPool threadPool2(threadPool);
- savedLimit = threadPool2.maxThreadCount();
-
- // maxThreadCount() should always return the previous argument to
- // setMaxThreadCount(), regardless of input
- threadPool2.setMaxThreadCount(limit);
- QCOMPARE(threadPool2.maxThreadCount(), limit);
-
- // the value returned from maxThreadCount() should always be valid input for setMaxThreadCount()
- threadPool2.setMaxThreadCount(savedLimit);
- QCOMPARE(threadPool2.maxThreadCount(), savedLimit);
- }
-}
-
-void tst_QThreadPool::setMaxThreadCountStartsAndStopsThreads()
-{
- class WaitingTask : public QRunnable
- {
- public:
- QSemaphore waitForStarted, waitToFinish;
-
- WaitingTask() { setAutoDelete(false); }
-
- void run()
- {
- waitForStarted.release();
- waitToFinish.acquire();
- }
- };
-
- QThreadPool threadPool;
- threadPool.setMaxThreadCount(1);
-
- WaitingTask *task = new WaitingTask;
- threadPool.start(task);
- QVERIFY(task->waitForStarted.tryAcquire(1, 1000));
-
- // thread limit is 1, cannot start more tasks
- threadPool.start(task);
- QVERIFY(!task->waitForStarted.tryAcquire(1, 1000));
-
- // increasing the limit by 1 should start the task immediately
- threadPool.setMaxThreadCount(2);
- QVERIFY(task->waitForStarted.tryAcquire(1, 1000));
-
- // ... but we still cannot start more tasks
- threadPool.start(task);
- QVERIFY(!task->waitForStarted.tryAcquire(1, 1000));
-
- // increasing the limit should be able to start more than one at a time
- threadPool.start(task);
- threadPool.setMaxThreadCount(4);
- QVERIFY(task->waitForStarted.tryAcquire(2, 1000));
-
- // ... but we still cannot start more tasks
- threadPool.start(task);
- threadPool.start(task);
- QVERIFY(!task->waitForStarted.tryAcquire(2, 1000));
-
- // decreasing the thread limit should cause the active thread count to go down
- threadPool.setMaxThreadCount(2);
- QCOMPARE(threadPool.activeThreadCount(), 4);
- task->waitToFinish.release(2);
- QTest::qWait(1000);
- QCOMPARE(threadPool.activeThreadCount(), 2);
-
- // ... and we still cannot start more tasks
- threadPool.start(task);
- threadPool.start(task);
- QVERIFY(!task->waitForStarted.tryAcquire(2, 1000));
-
- // start all remaining tasks
- threadPool.start(task);
- threadPool.start(task);
- threadPool.start(task);
- threadPool.start(task);
- threadPool.setMaxThreadCount(8);
- QVERIFY(task->waitForStarted.tryAcquire(6, 1000));
-
- task->waitToFinish.release(10);
-// delete task;
-}
-
-void tst_QThreadPool::reserveThread_data()
-{
- setMaxThreadCount_data();
-}
-
-void tst_QThreadPool::reserveThread()
-{
- QFETCH(int, limit);
- QThreadPool *threadpool = QThreadPool::globalInstance();
- int savedLimit = threadpool->maxThreadCount();
- threadpool->setMaxThreadCount(limit);
-
- // reserve up to the limit
- for (int i = 0; i < limit; ++i)
- threadpool->reserveThread();
-
- // reserveThread() should always reserve a thread, regardless of
- // how many have been previously reserved
- threadpool->reserveThread();
- QCOMPARE(threadpool->activeThreadCount(), (limit > 0 ? limit : 0) + 1);
- threadpool->reserveThread();
- QCOMPARE(threadpool->activeThreadCount(), (limit > 0 ? limit : 0) + 2);
-
- // cleanup
- threadpool->releaseThread();
- threadpool->releaseThread();
- for (int i = 0; i < limit; ++i)
- threadpool->releaseThread();
-
- // reserving threads in children should not effect the parent
- {
- QThreadPool threadpool2(threadpool);
- threadpool2.setMaxThreadCount(limit);
-
- // reserve up to the limit
- for (int i = 0; i < limit; ++i)
- threadpool2.reserveThread();
-
- // reserveThread() should always reserve a thread, regardless
- // of how many have been previously reserved
- threadpool2.reserveThread();
- QCOMPARE(threadpool2.activeThreadCount(), (limit > 0 ? limit : 0) + 1);
- threadpool2.reserveThread();
- QCOMPARE(threadpool2.activeThreadCount(), (limit > 0 ? limit : 0) + 2);
-
- threadpool->reserveThread();
- QCOMPARE(threadpool->activeThreadCount(), 1);
- threadpool->reserveThread();
- QCOMPARE(threadpool->activeThreadCount(), 2);
-
- // cleanup
- threadpool2.releaseThread();
- threadpool2.releaseThread();
- threadpool->releaseThread();
- threadpool->releaseThread();
- while (threadpool2.activeThreadCount() > 0)
- threadpool2.releaseThread();
- }
-
- // reset limit on global QThreadPool
- threadpool->setMaxThreadCount(savedLimit);
-}
-
-void tst_QThreadPool::releaseThread_data()
-{
- setMaxThreadCount_data();
-}
-
-void tst_QThreadPool::releaseThread()
-{
- QFETCH(int, limit);
- QThreadPool *threadpool = QThreadPool::globalInstance();
- int savedLimit = threadpool->maxThreadCount();
- threadpool->setMaxThreadCount(limit);
-
- // reserve up to the limit
- for (int i = 0; i < limit; ++i)
- threadpool->reserveThread();
-
- // release should decrease the number of reserved threads
- int reserved = threadpool->activeThreadCount();
- while (reserved-- > 0) {
- threadpool->releaseThread();
- QCOMPARE(threadpool->activeThreadCount(), reserved);
- }
- QCOMPARE(threadpool->activeThreadCount(), 0);
-
- // releaseThread() can release more than have been reserved
- threadpool->releaseThread();
- QCOMPARE(threadpool->activeThreadCount(), -1);
- threadpool->reserveThread();
- QCOMPARE(threadpool->activeThreadCount(), 0);
-
- // releasing threads in children should not effect the parent
- {
- QThreadPool threadpool2(threadpool);
- threadpool2.setMaxThreadCount(limit);
-
- // reserve up to the limit
- for (int i = 0; i < limit; ++i)
- threadpool2.reserveThread();
-
- // release should decrease the number of reserved threads
- int reserved = threadpool2.activeThreadCount();
- while (reserved-- > 0) {
- threadpool2.releaseThread();
- QCOMPARE(threadpool2.activeThreadCount(), reserved);
- QCOMPARE(threadpool->activeThreadCount(), 0);
- }
- QCOMPARE(threadpool2.activeThreadCount(), 0);
- QCOMPARE(threadpool->activeThreadCount(), 0);
-
- // releaseThread() can release more than have been reserved
- threadpool2.releaseThread();
- QCOMPARE(threadpool2.activeThreadCount(), -1);
- QCOMPARE(threadpool->activeThreadCount(), 0);
- threadpool2.reserveThread();
- QCOMPARE(threadpool2.activeThreadCount(), 0);
- QCOMPARE(threadpool->activeThreadCount(), 0);
- }
-
- // reset limit on global QThreadPool
- threadpool->setMaxThreadCount(savedLimit);
-}
-
-QAtomicInt count;
-class CountingRunnable : public QRunnable
-{
- public: void run()
- {
- count.ref();
- }
-};
-
-void tst_QThreadPool::start()
-{
- const int runs = 1000;
- count.store(0);
- {
- QThreadPool threadPool;
- for (int i = 0; i< runs; ++i) {
- threadPool.start(new CountingRunnable());
- }
- }
- QCOMPARE(count.load(), runs);
-}
-
-void tst_QThreadPool::tryStart()
-{
- class WaitingTask : public QRunnable
- {
- public:
- QSemaphore semaphore;
-
- WaitingTask() { setAutoDelete(false); }
-
- void run()
- {
- semaphore.acquire();
- count.ref();
- }
- };
-
- count.store(0);
-
- WaitingTask task;
- QThreadPool threadPool;
- for (int i = 0; i < threadPool.maxThreadCount(); ++i) {
- threadPool.start(&task);
- }
- QVERIFY(!threadPool.tryStart(&task));
- task.semaphore.release(threadPool.maxThreadCount());
- threadPool.waitForDone();
- QCOMPARE(count.load(), threadPool.maxThreadCount());
-}
-
-QMutex mutex;
-int activeThreads = 0;
-int peakActiveThreads = 0;
-void tst_QThreadPool::tryStartPeakThreadCount()
-{
- class CounterTask : public QRunnable
- {
- public:
- CounterTask() { setAutoDelete(false); }
-
- void run()
- {
- {
- QMutexLocker lock(&mutex);
- ++activeThreads;
- peakActiveThreads = qMax(peakActiveThreads, activeThreads);
- }
-
- QTest::qWait(100);
- {
- QMutexLocker lock(&mutex);
- --activeThreads;
- }
- }
- };
-
- CounterTask task;
- QThreadPool threadPool;
-
- for (int i = 0; i < 20; ++i) {
- if (threadPool.tryStart(&task) == false)
- QTest::qWait(10);
- }
- QCOMPARE(peakActiveThreads, QThread::idealThreadCount());
-
- for (int i = 0; i < 20; ++i) {
- if (threadPool.tryStart(&task) == false)
- QTest::qWait(10);
- }
- QCOMPARE(peakActiveThreads, QThread::idealThreadCount());
-}
-
-void tst_QThreadPool::tryStartCount()
-{
- class SleeperTask : public QRunnable
- {
- public:
- SleeperTask() { setAutoDelete(false); }
-
- void run()
- {
- QTest::qWait(50);
- }
- };
-
- SleeperTask task;
- QThreadPool threadPool;
- const int runs = 5;
-
- for (int i = 0; i < runs; ++i) {
- int count = 0;
- while (threadPool.tryStart(&task))
- ++count;
- QCOMPARE(count, QThread::idealThreadCount());
-
- QTest::qWait(100);
- }
-}
-
-void tst_QThreadPool::waitForDone()
-{
- QTime total, pass;
- total.start();
-
- QThreadPool threadPool;
- while (total.elapsed() < 10000) {
- int runs;
- count.store(runs = 0);
- pass.restart();
- while (pass.elapsed() < 100) {
- threadPool.start(new CountingRunnable());
- ++runs;
- }
- threadPool.waitForDone();
- QCOMPARE(count.load(), runs);
-
- count.store(runs = 0);
- pass.restart();
- while (pass.elapsed() < 100) {
- threadPool.start(new CountingRunnable());
- threadPool.start(new CountingRunnable());
- runs += 2;
- }
- threadPool.waitForDone();
- QCOMPARE(count.load(), runs);
- }
-}
-
-void tst_QThreadPool::waitForDoneTimeout()
-{
- class BlockedTask : public QRunnable
- {
- public:
- QMutex mutex;
- BlockedTask() { setAutoDelete(false); }
-
- void run()
- {
- mutex.lock();
- mutex.unlock();
- QTest::qSleep(50);
- }
- };
-
- QThreadPool threadPool;
-
- BlockedTask *task = new BlockedTask;
- task->mutex.lock();
- threadPool.start(task);
- QVERIFY(!threadPool.waitForDone(100));
- task->mutex.unlock();
- QVERIFY(threadPool.waitForDone(400));
-}
-
-void tst_QThreadPool::destroyingWaitsForTasksToFinish()
-{
- QTime total, pass;
- total.start();
-
- while (total.elapsed() < 10000) {
- int runs;
- count.store(runs = 0);
- {
- QThreadPool threadPool;
- pass.restart();
- while (pass.elapsed() < 100) {
- threadPool.start(new CountingRunnable());
- ++runs;
- }
- }
- QCOMPARE(count.load(), runs);
-
- count.store(runs = 0);
- {
- QThreadPool threadPool;
- pass.restart();
- while (pass.elapsed() < 100) {
- threadPool.start(new CountingRunnable());
- threadPool.start(new CountingRunnable());
- runs += 2;
- }
- }
- QCOMPARE(count.load(), runs);
- }
-}
-
-void tst_QThreadPool::stressTest()
-{
- class Task : public QRunnable
- {
- QSemaphore semaphore;
- public:
- Task() { setAutoDelete(false); }
-
- void start()
- {
- QThreadPool::globalInstance()->start(this);
- }
-
- void wait()
- {
- semaphore.acquire();
- }
-
- void run()
- {
- semaphore.release();
- }
- };
-
- QTime total;
- total.start();
- while (total.elapsed() < 30000) {
- Task t;
- t.start();
- t.wait();
- }
-}
-
-QTEST_MAIN(tst_QThreadPool);
-#include "tst_qthreadpool.moc"
diff --git a/tests/auto/corelib/corelib.pro b/tests/auto/corelib/corelib.pro
index 84eb3f284c..4f284ac21e 100644
--- a/tests/auto/corelib/corelib.pro
+++ b/tests/auto/corelib/corelib.pro
@@ -2,10 +2,10 @@ TEMPLATE=subdirs
SUBDIRS=\
animation \
codecs \
- concurrent \
global \
io \
itemmodels \
+ json \
kernel \
plugin \
statemachine \
@@ -13,4 +13,3 @@ SUBDIRS=\
tools \
xml
-!contains(QT_CONFIG, concurrent): SUBDIRS -= concurrent
diff --git a/tests/auto/corelib/global/global.pro b/tests/auto/corelib/global/global.pro
index e9b547be68..a6c638f530 100644
--- a/tests/auto/corelib/global/global.pro
+++ b/tests/auto/corelib/global/global.pro
@@ -5,4 +5,5 @@ SUBDIRS=\
qgetputenv \
qglobal \
qnumeric \
- qrand
+ qrand \
+ qmessagehandler
diff --git a/tests/auto/corelib/global/q_func_info/tst_q_func_info.cpp b/tests/auto/corelib/global/q_func_info/tst_q_func_info.cpp
index 35a74f154d..ec021c5bb1 100644
--- a/tests/auto/corelib/global/q_func_info/tst_q_func_info.cpp
+++ b/tests/auto/corelib/global/q_func_info/tst_q_func_info.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/global/qflags/tst_qflags.cpp b/tests/auto/corelib/global/qflags/tst_qflags.cpp
index d80f401071..d466d7b8d8 100644
--- a/tests/auto/corelib/global/qflags/tst_qflags.cpp
+++ b/tests/auto/corelib/global/qflags/tst_qflags.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/global/qgetputenv/tst_qgetputenv.cpp b/tests/auto/corelib/global/qgetputenv/tst_qgetputenv.cpp
index 41fb311837..e074aeb3e9 100644
--- a/tests/auto/corelib/global/qgetputenv/tst_qgetputenv.cpp
+++ b/tests/auto/corelib/global/qgetputenv/tst_qgetputenv.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/global/qglobal/tst_qglobal.cpp b/tests/auto/corelib/global/qglobal/tst_qglobal.cpp
index 23b9c6bbab..8fedaf427a 100644
--- a/tests/auto/corelib/global/qglobal/tst_qglobal.cpp
+++ b/tests/auto/corelib/global/qglobal/tst_qglobal.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/global/qmessagehandler/qmessagehandler.pro b/tests/auto/corelib/global/qmessagehandler/qmessagehandler.pro
new file mode 100644
index 0000000000..8bdba4bfc4
--- /dev/null
+++ b/tests/auto/corelib/global/qmessagehandler/qmessagehandler.pro
@@ -0,0 +1,4 @@
+CONFIG += testcase parallel_test
+TARGET = tst_qmessagehandler
+QT = core testlib
+SOURCES = tst_qmessagehandler.cpp
diff --git a/tests/auto/corelib/global/qmessagehandler/tst_qmessagehandler.cpp b/tests/auto/corelib/global/qmessagehandler/tst_qmessagehandler.cpp
new file mode 100644
index 0000000000..39bd0986a5
--- /dev/null
+++ b/tests/auto/corelib/global/qmessagehandler/tst_qmessagehandler.cpp
@@ -0,0 +1,147 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <qdebug.h>
+#include <QtTest/QtTest>
+
+#include <qglobal.h>
+
+class tst_qmessagehandler : public QObject
+{
+ Q_OBJECT
+private slots:
+ void cleanup();
+
+ void defaultHandler();
+ void installMessageHandler();
+ void installMsgHandler();
+ void installBothHandler();
+};
+
+static QtMsgType s_type;
+const char *s_file;
+int s_line;
+const char *s_function;
+static QString s_message;
+
+void customMessageHandler(QtMsgType type, const QMessageLogContext &context, const char *msg)
+{
+ s_type = type;
+ s_file = context.file;
+ s_line = context.line;
+ s_function = context.function;
+ s_message = QString::fromLocal8Bit(msg);
+}
+
+void customMsgHandler(QtMsgType type, const char *msg)
+{
+ s_type = type;
+ s_file = 0;
+ s_line = 0;
+ s_function = 0;
+ s_message = QString::fromLocal8Bit(msg);
+}
+
+void tst_qmessagehandler::cleanup()
+{
+ qInstallMsgHandler(0);
+ qInstallMessageHandler(0);
+ s_type = QtFatalMsg;
+ s_file = 0;
+ s_line = 0;
+ s_function = 0;
+}
+
+void tst_qmessagehandler::defaultHandler()
+{
+ // check that the default works
+ QTest::ignoreMessage(QtDebugMsg, "defaultHandler");
+ qDebug("defaultHandler");
+}
+
+void tst_qmessagehandler::installMessageHandler()
+{
+ QMessageHandler oldHandler = qInstallMessageHandler(customMessageHandler);
+
+ qDebug("installMessageHandler"); int line = __LINE__;
+
+ QCOMPARE(s_type, QtDebugMsg);
+ QCOMPARE(s_message, QString::fromLocal8Bit("installMessageHandler"));
+ QCOMPARE(s_file, __FILE__);
+ QCOMPARE(s_function, Q_FUNC_INFO);
+ QCOMPARE(s_line, line);
+
+ QMessageHandler myHandler = qInstallMessageHandler(oldHandler);
+ QCOMPARE((void*)myHandler, (void*)customMessageHandler);
+}
+
+void tst_qmessagehandler::installMsgHandler()
+{
+ QtMsgHandler oldHandler = qInstallMsgHandler(customMsgHandler);
+
+ qDebug("installMsgHandler");
+
+ QCOMPARE(s_type, QtDebugMsg);
+ QCOMPARE(s_message, QString::fromLocal8Bit("installMsgHandler"));
+ QCOMPARE(s_file, (const char*)0);
+ QCOMPARE(s_function, (const char*)0);
+ QCOMPARE(s_line, 0);
+
+ QtMsgHandler myHandler = qInstallMsgHandler(oldHandler);
+ QCOMPARE((void*)myHandler, (void*)customMsgHandler);
+}
+
+void tst_qmessagehandler::installBothHandler()
+{
+ qInstallMessageHandler(customMessageHandler);
+ qInstallMsgHandler(customMsgHandler);
+
+ qDebug("installBothHandler"); int line = __LINE__;
+
+ QCOMPARE(s_type, QtDebugMsg);
+ QCOMPARE(s_message, QString::fromLocal8Bit("installBothHandler"));
+ QCOMPARE(s_file, __FILE__);
+ QCOMPARE(s_function, Q_FUNC_INFO);
+ QCOMPARE(s_line, line);
+}
+
+QTEST_MAIN(tst_qmessagehandler)
+#include "tst_qmessagehandler.moc"
diff --git a/tests/auto/corelib/global/qnumeric/tst_qnumeric.cpp b/tests/auto/corelib/global/qnumeric/tst_qnumeric.cpp
index f73884fe02..064724e888 100644
--- a/tests/auto/corelib/global/qnumeric/tst_qnumeric.cpp
+++ b/tests/auto/corelib/global/qnumeric/tst_qnumeric.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/global/qrand/tst_qrand.cpp b/tests/auto/corelib/global/qrand/tst_qrand.cpp
index 71f14e28e2..85618d94c2 100644
--- a/tests/auto/corelib/global/qrand/tst_qrand.cpp
+++ b/tests/auto/corelib/global/qrand/tst_qrand.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/io.pro b/tests/auto/corelib/io/io.pro
index ae0b4968b8..095aa7a77d 100644
--- a/tests/auto/corelib/io/io.pro
+++ b/tests/auto/corelib/io/io.pro
@@ -22,6 +22,12 @@ SUBDIRS=\
qtemporaryfile \
qtextstream \
qurl \
+ qwinoverlappedionotifier \
+
+!win32|wince* {
+ SUBDIRS -=\
+ qwinoverlappedionotifier
+}
!contains(QT_CONFIG, private_tests): SUBDIRS -= \
qfileinfo
diff --git a/tests/auto/corelib/io/largefile/tst_largefile.cpp b/tests/auto/corelib/io/largefile/tst_largefile.cpp
index ba2eced60a..e72960833f 100644
--- a/tests/auto/corelib/io/largefile/tst_largefile.cpp
+++ b/tests/auto/corelib/io/largefile/tst_largefile.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp b/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp
index 1bffd63d1b..776ad4d0a7 100644
--- a/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp
+++ b/tests/auto/corelib/io/qabstractfileengine/tst_qabstractfileengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the FOO module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,10 +47,13 @@
#include <QtCore/QSharedPointer>
#include <QtCore/QScopedPointer>
#include <QtCore/QHash>
+#include <QtCore/QDir>
+#include <QtCore/QDirIterator>
#include <QtTest/QTest>
#include <QtCore/QDebug>
+#include "../../../../shared/filesystem.h"
class tst_QAbstractFileEngine
: public QObject
@@ -65,6 +68,8 @@ private slots:
void fileIO_data();
void fileIO();
+ void mounting_data();
+ void mounting();
private:
QStringList filesForRemoval;
};
@@ -74,7 +79,7 @@ class ReferenceFileEngine
{
public:
ReferenceFileEngine(const QString &fileName)
- : fileName_(fileName)
+ : fileName_(QDir::cleanPath(fileName))
, position_(-1)
, openForRead_(false)
, openForWrite_(false)
@@ -491,6 +496,60 @@ private:
mutable QSharedPointer<File> openFile_;
};
+class MountingFileEngine : public QFSFileEngine
+{
+public:
+ class Iterator : public QAbstractFileEngineIterator
+ {
+ public:
+ Iterator(QDir::Filters filters, const QStringList &filterNames)
+ : QAbstractFileEngineIterator(filters, filterNames)
+ {
+ names.append("foo");
+ names.append("bar");
+ index = -1;
+ }
+ QString currentFileName() const
+ {
+ return names.at(index);
+ }
+ bool hasNext() const
+ {
+ return index < names.size() - 1;
+ }
+ QString next()
+ {
+ if (!hasNext())
+ return QString();
+ ++index;
+ return currentFilePath();
+ }
+ QStringList names;
+ int index;
+ };
+ MountingFileEngine(QString fileName)
+ : QFSFileEngine(fileName)
+ {
+ }
+ Iterator *beginEntryList(QDir::Filters filters, const QStringList &filterNames)
+ {
+ return new Iterator(filters, filterNames);
+ }
+ FileFlags fileFlags(FileFlags type) const
+ {
+ if (fileName(DefaultName).endsWith(".tar")) {
+ FileFlags ret = QFSFileEngine::fileFlags(type);
+ //make this file in file system appear to be a directory
+ ret &= ~FileType;
+ ret |= DirectoryType;
+ return ret;
+ } else {
+ //file inside the archive
+ return ExistsFlag | FileType;
+ }
+ }
+};
+
QMutex ReferenceFileEngine::fileSystemMutex;
QHash<uint, QString> ReferenceFileEngine::fileSystemUsers, ReferenceFileEngine::fileSystemGroups;
QHash<QString, QSharedPointer<ReferenceFileEngine::File> > ReferenceFileEngine::fileSystem;
@@ -500,6 +559,8 @@ class FileEngineHandler
{
QAbstractFileEngine *create(const QString &fileName) const
{
+ if (fileName.endsWith(".tar") || fileName.contains(".tar/"))
+ return new MountingFileEngine(fileName);
if (fileName.startsWith("QFSFileEngine:"))
return new QFSFileEngine(fileName.mid(14));
if (fileName.startsWith("reference-file-engine:"))
@@ -803,6 +864,36 @@ void tst_QAbstractFileEngine::fileIO()
//
}
+void tst_QAbstractFileEngine::mounting_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::newRow("native") << "test.tar";
+ QTest::newRow("Forced QFSFileEngine") << "QFSFileEngine:test.tar";
+}
+
+void tst_QAbstractFileEngine::mounting()
+{
+ FileSystem fs;
+ QVERIFY(fs.createFile("test.tar"));
+ FileEngineHandler handler;
+
+ QFETCH(QString, fileName);
+
+ QVERIFY(QFileInfo(fileName).isDir());
+ QDir dir(fileName);
+ QCOMPARE(dir.entryList(), (QStringList() << "bar" << "foo"));
+ QDir dir2;
+ bool found = false;
+ foreach (QFileInfo info, dir2.entryInfoList()) {
+ if (info.fileName() == QLatin1String("test.tar")) {
+ QVERIFY(!found);
+ found = true;
+ QVERIFY(info.isDir());
+ }
+ }
+ QVERIFY(found);
+}
+
QTEST_APPLESS_MAIN(tst_QAbstractFileEngine)
#include "tst_qabstractfileengine.moc"
diff --git a/tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp b/tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp
index e2890d7891..bf62621bbc 100644
--- a/tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp
+++ b/tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp b/tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp
index d17bab3bc1..eb227625a7 100644
--- a/tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp
+++ b/tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -65,11 +65,6 @@ private slots:
void stream_bool_data();
void stream_bool();
- void stream_QBool_data();
- void stream_QBool();
-
- void stream_QBool_in_4_0();
-
void stream_QBitArray_data();
void stream_QBitArray();
@@ -193,7 +188,6 @@ private slots:
private:
void writebool(QDataStream *s);
- void writeQBool(QDataStream *s);
void writeQBitArray(QDataStream *s);
void writeQBrush(QDataStream *s);
void writeQColor(QDataStream *s);
@@ -221,7 +215,6 @@ private:
void writeQEasingCurve(QDataStream *s);
void readbool(QDataStream *s);
- void readQBool(QDataStream *s);
void readQBitArray(QDataStream *s);
void readQBrush(QDataStream *s);
void readQColor(QDataStream *s);
@@ -262,7 +255,8 @@ static int NColorRoles[] = {
QPalette::ToolTipText + 1, // Qt_4_4
QPalette::ToolTipText + 1, // Qt_4_5
QPalette::ToolTipText + 1, // Qt_4_6
- 0 // add the correct value for Qt_4_7 here later
+ QPalette::ToolTipText + 1, // Qt_5_0
+ 0 // add the correct value for Qt_5_1 here later
};
// Testing get/set functions
@@ -292,6 +286,7 @@ void tst_QDataStream::getSetCheck()
void tst_QDataStream::cleanupTestCase()
{
QFile::remove(QLatin1String("qdatastream.out"));
+ QFile::remove(QLatin1String("datastream.tmp"));
}
static int dataIndex(const QString &tag)
@@ -797,57 +792,6 @@ void tst_QDataStream::readbool(QDataStream *s)
// ************************************
-static QBool QBoolData(int index)
-{
- switch (index) {
- case 0: return QBool(true);
- case 1: return QBool(false);
- case 2: return QBool(bool(2));
- case 3: return QBool(bool(-1));
- case 4: return QBool(bool(127));
- }
-
- return QBool(false);
-}
-
-void tst_QDataStream::stream_QBool_data()
-{
- stream_data(5);
-}
-
-void tst_QDataStream::stream_QBool()
-{
- STREAM_IMPL(QBool);
-}
-
-void tst_QDataStream::writeQBool(QDataStream *s)
-{
- QBool d1 = QBoolData(dataIndex(QTest::currentDataTag()));
- *s << d1;
-}
-
-void tst_QDataStream::readQBool(QDataStream *s)
-{
- QBool expected = QBoolData(dataIndex(QTest::currentDataTag()));
-
- bool d1 = true;
- *s >> d1;
- QVERIFY(d1 == expected);
-}
-
-void tst_QDataStream::stream_QBool_in_4_0()
-{
- QByteArray byteArray;
- QDataStream out(&byteArray, QIODevice::WriteOnly);
-
- QString str("ABC");
- out << str.contains('A') << str.contains('Z');
-
- QCOMPARE(byteArray.size(), 2);
-}
-
-// ************************************
-
static void QBitArrayData(QBitArray *b, int index)
{
QString filler = "";
diff --git a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
index 535807bfc3..12f7e28a1d 100644
--- a/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
+++ b/tests/auto/corelib/io/qdebug/tst_qdebug.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -51,9 +51,10 @@ private slots:
void assignment() const;
void warningWithoutDebug() const;
void criticalWithoutDebug() const;
- void debugWithQBool() const;
+ void debugWithBool() const;
void veryLongWarningMessage() const;
void qDebugQStringRef() const;
+ void qDebugQLatin1String() const;
void defaultMessagehandler() const;
};
@@ -74,11 +75,17 @@ void tst_QDebug::assignment() const
static QtMsgType s_msgType;
static QByteArray s_msg;
+static QByteArray s_file;
+static int s_line;
+static QByteArray s_function;
-static void myMessageHandler(QtMsgType type, const char *msg)
+static void myMessageHandler(QtMsgType type, const QMessageLogContext &context, const char *msg)
{
s_msg = msg;
s_msgType = type;
+ s_file = context.file;
+ s_line = context.line;
+ s_function = context.function;
}
// Helper class to ensure that the testlib message handler gets
@@ -87,17 +94,17 @@ static void myMessageHandler(QtMsgType type, const char *msg)
class MessageHandlerSetter
{
public:
- MessageHandlerSetter(QtMsgHandler newMsgHandler)
- : oldMsgHandler(qInstallMsgHandler(newMsgHandler))
+ MessageHandlerSetter(QMessageHandler newMessageHandler)
+ : oldMessageHandler(qInstallMessageHandler(newMessageHandler))
{ }
~MessageHandlerSetter()
{
- qInstallMsgHandler(oldMsgHandler);
+ qInstallMessageHandler(oldMessageHandler);
}
private:
- QtMsgHandler oldMsgHandler;
+ QMessageHandler oldMessageHandler;
};
/*! \internal
@@ -107,8 +114,12 @@ void tst_QDebug::warningWithoutDebug() const
{
MessageHandlerSetter mhs(myMessageHandler);
{ qWarning() << "A qWarning() message"; }
+ QString file = __FILE__; int line = __LINE__ - 1; QString function = Q_FUNC_INFO;
QCOMPARE(s_msgType, QtWarningMsg);
QCOMPARE(QString::fromLatin1(s_msg.data()), QString::fromLatin1("A qWarning() message "));
+ QCOMPARE(QString::fromLatin1(s_file), file);
+ QCOMPARE(s_line, line);
+ QCOMPARE(QString::fromLatin1(s_function), function);
}
/*! \internal
@@ -118,16 +129,24 @@ void tst_QDebug::criticalWithoutDebug() const
{
MessageHandlerSetter mhs(myMessageHandler);
{ qCritical() << "A qCritical() message"; }
+ QString file = __FILE__; int line = __LINE__ - 1; QString function = Q_FUNC_INFO;
QCOMPARE(s_msgType, QtCriticalMsg);
QCOMPARE(QString::fromLatin1(s_msg), QString::fromLatin1("A qCritical() message "));
+ QCOMPARE(QString::fromLatin1(s_file), file);
+ QCOMPARE(s_line, line);
+ QCOMPARE(QString::fromLatin1(s_function), function);
}
-void tst_QDebug::debugWithQBool() const
+void tst_QDebug::debugWithBool() const
{
MessageHandlerSetter mhs(myMessageHandler);
- { qDebug() << QBool(false) << QBool(true); }
+ { qDebug() << false << true; }
+ QString file = __FILE__; int line = __LINE__ - 1; QString function = Q_FUNC_INFO;
QCOMPARE(s_msgType, QtDebugMsg);
QCOMPARE(QString::fromLatin1(s_msg), QString::fromLatin1("false true "));
+ QCOMPARE(QString::fromLatin1(s_file), file);
+ QCOMPARE(s_line, line);
+ QCOMPARE(QString::fromLatin1(s_function), function);
}
void tst_QDebug::veryLongWarningMessage() const
@@ -140,8 +159,12 @@ void tst_QDebug::veryLongWarningMessage() const
test.append(part);
qWarning("Test output:\n%s\nend", qPrintable(test));
}
+ QString file = __FILE__; int line = __LINE__ - 2; QString function = Q_FUNC_INFO;
QCOMPARE(s_msgType, QtWarningMsg);
QCOMPARE(QString::fromLatin1(s_msg), QString::fromLatin1("Test output:\n")+test+QString::fromLatin1("\nend"));
+ QCOMPARE(QString::fromLatin1(s_file), file);
+ QCOMPARE(s_line, line);
+ QCOMPARE(QString::fromLatin1(s_function), function);
}
void tst_QDebug::qDebugQStringRef() const
@@ -153,8 +176,12 @@ void tst_QDebug::qDebugQStringRef() const
MessageHandlerSetter mhs(myMessageHandler);
{ qDebug() << inRef; }
+ QString file = __FILE__; int line = __LINE__ - 1; QString function = Q_FUNC_INFO;
QCOMPARE(s_msgType, QtDebugMsg);
QCOMPARE(QString::fromLatin1(s_msg), QString::fromLatin1("\"input\" "));
+ QCOMPARE(QString::fromLatin1(s_file), file);
+ QCOMPARE(s_line, line);
+ QCOMPARE(QString::fromLatin1(s_function), function);
}
/* Use a null QStringRef. */
@@ -163,19 +190,35 @@ void tst_QDebug::qDebugQStringRef() const
MessageHandlerSetter mhs(myMessageHandler);
{ qDebug() << inRef; }
+ QString file = __FILE__; int line = __LINE__ - 1; QString function = Q_FUNC_INFO;
QCOMPARE(s_msgType, QtDebugMsg);
QCOMPARE(QString::fromLatin1(s_msg), QString::fromLatin1("\"\" "));
+ QCOMPARE(QString::fromLatin1(s_file), file);
+ QCOMPARE(s_line, line);
+ QCOMPARE(QString::fromLatin1(s_function), function);
}
}
+void tst_QDebug::qDebugQLatin1String() const
+{
+ MessageHandlerSetter mhs(myMessageHandler);
+ { qDebug() << QLatin1String("foo") << QLatin1String("") << QLatin1String("barbaz", 3); }
+ QString file = __FILE__; int line = __LINE__ - 1; QString function = Q_FUNC_INFO;
+ QCOMPARE(s_msgType, QtDebugMsg);
+ QCOMPARE(QString::fromLatin1(s_msg), QString::fromLatin1("\"foo\" \"\" \"bar\" "));
+ QCOMPARE(QString::fromLatin1(s_file), file);
+ QCOMPARE(s_line, line);
+ QCOMPARE(QString::fromLatin1(s_function), function);
+}
+
void tst_QDebug::defaultMessagehandler() const
{
MessageHandlerSetter mhs(0);
- QtMsgHandler defaultMessageHandler1 = qInstallMsgHandler(0);
- QtMsgHandler defaultMessageHandler2 = qInstallMsgHandler(myMessageHandler);
+ QMessageHandler defaultMessageHandler1 = qInstallMessageHandler(0);
+ QMessageHandler defaultMessageHandler2 = qInstallMessageHandler(myMessageHandler);
bool same = (*defaultMessageHandler1 == *defaultMessageHandler2);
QVERIFY(same);
- QtMsgHandler messageHandler = qInstallMsgHandler(0);
+ QMessageHandler messageHandler = qInstallMessageHandler(0);
same = (*messageHandler == *myMessageHandler);
QVERIFY(same);
}
diff --git a/tests/auto/corelib/io/qdir/testdir/dir/qrc_qdir.cpp b/tests/auto/corelib/io/qdir/testdir/dir/qrc_qdir.cpp
index 01cbc13d40..4d3d8e6f45 100644
--- a/tests/auto/corelib/io/qdir/testdir/dir/qrc_qdir.cpp
+++ b/tests/auto/corelib/io/qdir/testdir/dir/qrc_qdir.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qdir/testdir/dir/tst_qdir.cpp b/tests/auto/corelib/io/qdir/testdir/dir/tst_qdir.cpp
index 01cbc13d40..4d3d8e6f45 100644
--- a/tests/auto/corelib/io/qdir/testdir/dir/tst_qdir.cpp
+++ b/tests/auto/corelib/io/qdir/testdir/dir/tst_qdir.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qdir/tst_qdir.cpp b/tests/auto/corelib/io/qdir/tst_qdir.cpp
index 1f4e05d0cd..f1c9015092 100644
--- a/tests/auto/corelib/io/qdir/tst_qdir.cpp
+++ b/tests/auto/corelib/io/qdir/tst_qdir.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1848,8 +1848,6 @@ void tst_QDir::equalityOperator_data()
//need a path in the root directory that is unlikely to be a symbolic link.
#if defined (Q_OS_WIN)
QString pathinroot("c:/windows/..");
-#elif defined (Q_OS_SYMBIAN)
- QString pathinroot("c:/data/..");
#else
QString pathinroot("/sbin/..");
#endif
diff --git a/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp b/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp
index 3b3b2b5a04..ad61db51d6 100644
--- a/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp
+++ b/tests/auto/corelib/io/qdiriterator/tst_qdiriterator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qfile/stdinprocess/main.cpp b/tests/auto/corelib/io/qfile/stdinprocess/main.cpp
index 14cb28af6b..6698440b70 100644
--- a/tests/auto/corelib/io/qfile/stdinprocess/main.cpp
+++ b/tests/auto/corelib/io/qfile/stdinprocess/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qfile/test/test.pro b/tests/auto/corelib/io/qfile/test/test.pro
index 2f1e50010c..2611ff39bd 100644
--- a/tests/auto/corelib/io/qfile/test/test.pro
+++ b/tests/auto/corelib/io/qfile/test/test.pro
@@ -9,13 +9,6 @@ TESTDATA += ../dosfile.txt ../noendofline.txt ../testfile.txt \
../Makefile ../forCopying.txt ../forRenaming.txt \
../resources/file1.ext1
-win32 {
- CONFIG(debug, debug|release) {
- TARGET = ../../debug/tst_qfile
- } else {
- TARGET = ../../release/tst_qfile
- }
- LIBS+=-lole32 -luuid
-}
+win32: LIBS+=-lole32 -luuid
mac*:CONFIG+=insignificant_test
diff --git a/tests/auto/corelib/io/qfile/tst_qfile.cpp b/tests/auto/corelib/io/qfile/tst_qfile.cpp
index 0549fe32f0..00e45354ba 100644
--- a/tests/auto/corelib/io/qfile/tst_qfile.cpp
+++ b/tests/auto/corelib/io/qfile/tst_qfile.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -343,9 +343,9 @@ void tst_QFile::cleanup()
void tst_QFile::initTestCase()
{
- // chdir to testdata directory and use relative paths.
- QString testdata_dir = QFileInfo(QFINDTESTDATA("testfile.txt")).absolutePath();
- QVERIFY2(QDir::setCurrent(testdata_dir), qPrintable("Could not chdir to " + testdata_dir));
+ QString workingDir = QFileInfo(QFINDTESTDATA("stdinprocess")).absolutePath();
+ QVERIFY2(!workingDir.isEmpty(), qPrintable("Could not find working directory!"));
+ QVERIFY2(QDir::setCurrent(workingDir), qPrintable("Could not chdir to " + workingDir));
QFile::remove("noreadfile");
@@ -832,7 +832,7 @@ void tst_QFile::readAllStdin()
QByteArray lotsOfData(1024, '@'); // 10 megs
QProcess process;
- process.start(QFINDTESTDATA("stdinprocess/stdinprocess")+" all");
+ process.start("stdinprocess/stdinprocess all");
QVERIFY( process.waitForStarted() );
for (int i = 0; i < 5; ++i) {
QTest::qWait(1000);
@@ -867,7 +867,7 @@ void tst_QFile::readLineStdin()
for (int i = 0; i < 2; ++i) {
QProcess process;
- process.start((QFINDTESTDATA("stdinprocess/stdinprocess")+QString(" line %1").arg(i)), QIODevice::Text | QIODevice::ReadWrite);
+ process.start((QString("stdinprocess/stdinprocess line %1").arg(i)), QIODevice::Text | QIODevice::ReadWrite);
for (int i = 0; i < 5; ++i) {
QTest::qWait(1000);
process.write(lotsOfData);
@@ -901,7 +901,7 @@ void tst_QFile::readLineStdin_lineByLine()
#else
for (int i = 0; i < 2; ++i) {
QProcess process;
- process.start(QFINDTESTDATA("stdinprocess/stdinprocess")+ QString(" line %1").arg(i), QIODevice::Text | QIODevice::ReadWrite);
+ process.start(QString("stdinprocess/stdinprocess line %1").arg(i), QIODevice::Text | QIODevice::ReadWrite);
QVERIFY(process.waitForStarted());
for (int j = 0; j < 3; ++j) {
diff --git a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
index 5764cee66d..7b80152b62 100644
--- a/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
+++ b/tests/auto/corelib/io/qfileinfo/tst_qfileinfo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1028,6 +1028,19 @@ void tst_QFileInfo::fileTimes()
//In Vista the last-access timestamp is not updated when the file is accessed/touched (by default).
//To enable this the HKLM\SYSTEM\CurrentControlSet\Control\FileSystem\NtfsDisableLastAccessUpdate
//is set to 0, in the test machine.
+#ifdef Q_OS_WIN
+ HKEY key;
+ if (ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SYSTEM\\CurrentControlSet\\Control\\FileSystem",
+ 0, KEY_READ, &key)) {
+ DWORD disabledAccessTimes = 0;
+ DWORD size = sizeof(DWORD);
+ LONG error = RegQueryValueEx(key, L"NtfsDisableLastAccessUpdate"
+ , NULL, NULL, (LPBYTE)&disabledAccessTimes, &size);
+ if (ERROR_SUCCESS == error && disabledAccessTimes)
+ QEXPECT_FAIL("", "File access times are disabled in windows registry (this is the default setting)", Continue);
+ RegCloseKey(key);
+ }
+#endif
#ifdef Q_OS_WINCE
QEXPECT_FAIL("simple", "WinCE only stores date of access data, not the time", Continue);
#endif
@@ -1362,7 +1375,7 @@ void tst_QFileInfo::ntfsJunctionPointsAndSymlinks_data()
QString junction = "junction_pwd";
FileSystem::createNtfsJunction(target, junction);
QFileInfo targetInfo(target);
- QTest::newRow("junction_pwd") << junction << true << targetInfo.absoluteFilePath() << targetInfo.canonicalFilePath();
+ QTest::newRow("junction_pwd") << junction << false << QString() << QString();
QFileInfo fileInJunction(targetInfo.absoluteFilePath().append("/file"));
QFile file(fileInJunction.absoluteFilePath());
@@ -1375,7 +1388,7 @@ void tst_QFileInfo::ntfsJunctionPointsAndSymlinks_data()
junction = "junction_root";
FileSystem::createNtfsJunction(target, junction);
targetInfo.setFile(target);
- QTest::newRow("junction_root") << junction << true << targetInfo.absoluteFilePath() << targetInfo.canonicalFilePath();
+ QTest::newRow("junction_root") << junction << false << QString() << QString();
//Mountpoint
typedef BOOLEAN (WINAPI *PtrGetVolumeNameForVolumeMountPointW)(LPCWSTR, LPWSTR, DWORD);
@@ -1390,7 +1403,7 @@ void tst_QFileInfo::ntfsJunctionPointsAndSymlinks_data()
junction = "mountpoint";
rootVolume.replace("\\\\?\\","\\??\\");
FileSystem::createNtfsJunction(rootVolume, junction);
- QTest::newRow("mountpoint") << junction << true << QDir::fromNativeSeparators(rootPath) << QDir::rootPath();
+ QTest::newRow("mountpoint") << junction << false << QString() << QString();
}
}
@@ -1403,8 +1416,10 @@ void tst_QFileInfo::ntfsJunctionPointsAndSymlinks()
QFileInfo fi(path);
QCOMPARE(fi.isSymLink(), isSymLink);
- QCOMPARE(fi.symLinkTarget(), linkTarget);
- QCOMPARE(fi.canonicalFilePath(), canonicalFilePath);
+ if (isSymLink) {
+ QCOMPARE(fi.symLinkTarget(), linkTarget);
+ QCOMPARE(fi.canonicalFilePath(), canonicalFilePath);
+ }
}
void tst_QFileInfo::brokenShortcut()
@@ -1632,6 +1647,12 @@ BOOL IsUserAdmin()
}
#endif
+#if defined(Q_OS_WIN)
+QT_BEGIN_NAMESPACE
+extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
+QT_END_NAMESPACE
+#endif
+
void tst_QFileInfo::owner()
{
QString userName;
@@ -1672,7 +1693,6 @@ void tst_QFileInfo::owner()
NetApiBufferFree(pBuf);
}
}
- extern Q_CORE_EXPORT int qt_ntfs_permission_lookup;
qt_ntfs_permission_lookup = 1;
#endif
if (userName.isEmpty())
diff --git a/tests/auto/corelib/io/qfilesystementry/tst_qfilesystementry.cpp b/tests/auto/corelib/io/qfilesystementry/tst_qfilesystementry.cpp
index cc75801638..fe2e30a95c 100644
--- a/tests/auto/corelib/io/qfilesystementry/tst_qfilesystementry.cpp
+++ b/tests/auto/corelib/io/qfilesystementry/tst_qfilesystementry.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp b/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
index 05b2539182..5e5a99f937 100644
--- a/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
+++ b/tests/auto/corelib/io/qfilesystemwatcher/tst_qfilesystemwatcher.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp b/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp
index b1c02a6c02..07a1fff993 100644
--- a/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp
+++ b/tests/auto/corelib/io/qiodevice/tst_qiodevice.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qnodebug/tst_qnodebug.cpp b/tests/auto/corelib/io/qnodebug/tst_qnodebug.cpp
index bca4d55037..0eea94f5d9 100644
--- a/tests/auto/corelib/io/qnodebug/tst_qnodebug.cpp
+++ b/tests/auto/corelib/io/qnodebug/tst_qnodebug.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/fileWriterProcess/main.cpp b/tests/auto/corelib/io/qprocess/fileWriterProcess/main.cpp
index 5851ffe3da..5edb5489f7 100644
--- a/tests/auto/corelib/io/qprocess/fileWriterProcess/main.cpp
+++ b/tests/auto/corelib/io/qprocess/fileWriterProcess/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testDetached/main.cpp b/tests/auto/corelib/io/qprocess/testDetached/main.cpp
index bcf237f488..c1231d3c71 100644
--- a/tests/auto/corelib/io/qprocess/testDetached/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testDetached/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testExitCodes/main.cpp b/tests/auto/corelib/io/qprocess/testExitCodes/main.cpp
index 1475b3354d..ad8e69cad9 100644
--- a/tests/auto/corelib/io/qprocess/testExitCodes/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testExitCodes/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testGuiProcess/main.cpp b/tests/auto/corelib/io/qprocess/testGuiProcess/main.cpp
index c9e5d2e6a5..e4fba49090 100644
--- a/tests/auto/corelib/io/qprocess/testGuiProcess/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testGuiProcess/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testProcessCrash/main.cpp b/tests/auto/corelib/io/qprocess/testProcessCrash/main.cpp
index b7c0511d77..cb675b7369 100644
--- a/tests/auto/corelib/io/qprocess/testProcessCrash/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessCrash/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/main.cpp b/tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/main.cpp
index 97d9208e19..cf33f22bc6 100644
--- a/tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessDeadWhileReading/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testProcessEOF/main.cpp b/tests/auto/corelib/io/qprocess/testProcessEOF/main.cpp
index bf3d190630..ad1ebfc5f2 100644
--- a/tests/auto/corelib/io/qprocess/testProcessEOF/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessEOF/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testProcessEcho/main.cpp b/tests/auto/corelib/io/qprocess/testProcessEcho/main.cpp
index 0c915918e4..872ed4fad4 100644
--- a/tests/auto/corelib/io/qprocess/testProcessEcho/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessEcho/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testProcessEcho2/main.cpp b/tests/auto/corelib/io/qprocess/testProcessEcho2/main.cpp
index 8f3bd70a3a..0578f4794f 100644
--- a/tests/auto/corelib/io/qprocess/testProcessEcho2/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessEcho2/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testProcessEcho3/main.cpp b/tests/auto/corelib/io/qprocess/testProcessEcho3/main.cpp
index c5eb4df307..bfcc48832e 100644
--- a/tests/auto/corelib/io/qprocess/testProcessEcho3/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessEcho3/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp b/tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp
index 877b3c6175..a8a17b6951 100644
--- a/tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessEchoGui/main_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testProcessEnvironment/main.cpp b/tests/auto/corelib/io/qprocess/testProcessEnvironment/main.cpp
index 146b61af0e..eab1ebac17 100644
--- a/tests/auto/corelib/io/qprocess/testProcessEnvironment/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessEnvironment/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testProcessLoopback/main.cpp b/tests/auto/corelib/io/qprocess/testProcessLoopback/main.cpp
index 78973f9f12..8b886ba5de 100644
--- a/tests/auto/corelib/io/qprocess/testProcessLoopback/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessLoopback/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testProcessNormal/main.cpp b/tests/auto/corelib/io/qprocess/testProcessNormal/main.cpp
index 4fc8ea197c..b8b85730a8 100644
--- a/tests/auto/corelib/io/qprocess/testProcessNormal/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessNormal/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testProcessOutput/main.cpp b/tests/auto/corelib/io/qprocess/testProcessOutput/main.cpp
index 5284607e9f..fa2b60d542 100644
--- a/tests/auto/corelib/io/qprocess/testProcessOutput/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessOutput/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/main.cpp b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/main.cpp
index 57fb68e841..d76e3054a3 100644
--- a/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testProcessSpacesArgs/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testSetWorkingDirectory/main.cpp b/tests/auto/corelib/io/qprocess/testSetWorkingDirectory/main.cpp
index 6ce8892354..72af4df489 100644
--- a/tests/auto/corelib/io/qprocess/testSetWorkingDirectory/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testSetWorkingDirectory/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testSoftExit/main_unix.cpp b/tests/auto/corelib/io/qprocess/testSoftExit/main_unix.cpp
index fa368489d6..ef02de269f 100644
--- a/tests/auto/corelib/io/qprocess/testSoftExit/main_unix.cpp
+++ b/tests/auto/corelib/io/qprocess/testSoftExit/main_unix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testSoftExit/main_win.cpp b/tests/auto/corelib/io/qprocess/testSoftExit/main_win.cpp
index 87ba12c008..e37fba6099 100644
--- a/tests/auto/corelib/io/qprocess/testSoftExit/main_win.cpp
+++ b/tests/auto/corelib/io/qprocess/testSoftExit/main_win.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/testSpaceInName/main.cpp b/tests/auto/corelib/io/qprocess/testSpaceInName/main.cpp
index d42b8ed083..75862c682e 100644
--- a/tests/auto/corelib/io/qprocess/testSpaceInName/main.cpp
+++ b/tests/auto/corelib/io/qprocess/testSpaceInName/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp
index e16e00de91..c3c4607119 100644
--- a/tests/auto/corelib/io/qprocess/tst_qprocess.cpp
+++ b/tests/auto/corelib/io/qprocess/tst_qprocess.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1000,9 +1000,21 @@ public:
}
}
+ void writeAfterStart(const char *buf, int count)
+ {
+ dataToWrite = QByteArray(buf, count);
+ }
+
+ void start(const QString &program)
+ {
+ QProcess::start(program);
+ writePendingData();
+ }
+
public slots:
void terminateSlot()
{
+ writePendingData(); // In cases 3 and 4 we haven't written the data yet.
if (killing || (n == 4 && state() != Running)) {
// Don't try to kill the process before it is running - that can
// be hazardous, as the actual child process might not be running
@@ -1025,8 +1037,18 @@ public slots:
}
private:
+ void writePendingData()
+ {
+ if (!dataToWrite.isEmpty()) {
+ write(dataToWrite);
+ dataToWrite.clear();
+ }
+ }
+
+private:
int n;
bool killing;
+ QByteArray dataToWrite;
};
//-----------------------------------------------------------------------------
@@ -1049,11 +1071,10 @@ void tst_QProcess::softExitInSlots()
for (int i = 0; i < 5; ++i) {
SoftExitProcess proc(i);
+ proc.writeAfterStart("OLEBOLE", 8); // include the \0
proc.start(appName);
- proc.write("OLEBOLE", 8); // include the \0
- QTestEventLoop::instance().enterLoop(10);
+ QTRY_VERIFY(proc.waitedForFinished);
QCOMPARE(proc.state(), QProcess::NotRunning);
- QVERIFY(proc.waitedForFinished);
}
}
diff --git a/tests/auto/corelib/io/qprocessenvironment/tst_qprocessenvironment.cpp b/tests/auto/corelib/io/qprocessenvironment/tst_qprocessenvironment.cpp
index 50579f0712..15eb7d3c48 100644
--- a/tests/auto/corelib/io/qprocessenvironment/tst_qprocessenvironment.cpp
+++ b/tests/auto/corelib/io/qprocessenvironment/tst_qprocessenvironment.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qresourceengine/tst_qresourceengine.cpp b/tests/auto/corelib/io/qresourceengine/tst_qresourceengine.cpp
index 539f49fa97..fa72083dcc 100644
--- a/tests/auto/corelib/io/qresourceengine/tst_qresourceengine.cpp
+++ b/tests/auto/corelib/io/qresourceengine/tst_qresourceengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
index 87f5b37e14..0d6443c5ac 100644
--- a/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
+++ b/tests/auto/corelib/io/qsettings/tst_qsettings.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp b/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp
index 1820d66496..1e288e2418 100644
--- a/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp
+++ b/tests/auto/corelib/io/qstandardpaths/tst_qstandardpaths.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -142,6 +142,7 @@ void tst_qstandardpaths::testLocateAll()
setCustomLocations();
const QStringList allFiles = QStandardPaths::locateAll(QStandardPaths::ConfigLocation, "qstandardpaths.pro");
+ QVERIFY2(allFiles.count() > 0, "qstandardpaths.pro not found in config locations!");
QCOMPARE(allFiles.first(), QString(m_thisDir + QString::fromLatin1("/qstandardpaths.pro")));
#endif
}
diff --git a/tests/auto/corelib/io/qtemporarydir/tst_qtemporarydir.cpp b/tests/auto/corelib/io/qtemporarydir/tst_qtemporarydir.cpp
index 86aa071410..46d2fa2bde 100644
--- a/tests/auto/corelib/io/qtemporarydir/tst_qtemporarydir.cpp
+++ b/tests/auto/corelib/io/qtemporarydir/tst_qtemporarydir.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -228,6 +228,9 @@ void tst_QTemporaryDir::autoRemove()
void tst_QTemporaryDir::nonWritableCurrentDir()
{
#ifdef Q_OS_UNIX
+ if (::geteuid() == 0)
+ QSKIP("not valid running this test as root");
+
struct ChdirOnReturn
{
ChdirOnReturn(const QString& d) : dir(d) {}
diff --git a/tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp b/tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp
index 4c2e3f211b..cda29fdf0b 100644
--- a/tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp
+++ b/tests/auto/corelib/io/qtemporaryfile/tst_qtemporaryfile.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -256,6 +256,9 @@ void tst_QTemporaryFile::autoRemove()
void tst_QTemporaryFile::nonWritableCurrentDir()
{
#ifdef Q_OS_UNIX
+ if (::geteuid() == 0)
+ QSKIP("not valid running this test as root");
+
struct ChdirOnReturn
{
ChdirOnReturn(const QString& d) : dir(d) {}
diff --git a/tests/auto/corelib/io/qtextstream/readAllStdinProcess/main.cpp b/tests/auto/corelib/io/qtextstream/readAllStdinProcess/main.cpp
index a33b6759b4..282ec22013 100644
--- a/tests/auto/corelib/io/qtextstream/readAllStdinProcess/main.cpp
+++ b/tests/auto/corelib/io/qtextstream/readAllStdinProcess/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qtextstream/readLineStdinProcess/main.cpp b/tests/auto/corelib/io/qtextstream/readLineStdinProcess/main.cpp
index e561fc886f..174a8368fe 100644
--- a/tests/auto/corelib/io/qtextstream/readLineStdinProcess/main.cpp
+++ b/tests/auto/corelib/io/qtextstream/readLineStdinProcess/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qtextstream/stdinProcess/main.cpp b/tests/auto/corelib/io/qtextstream/stdinProcess/main.cpp
index 7fcfd6d53b..dfdd431040 100644
--- a/tests/auto/corelib/io/qtextstream/stdinProcess/main.cpp
+++ b/tests/auto/corelib/io/qtextstream/stdinProcess/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp b/tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp
index 6b6ac013bd..01aecc2a21 100644
--- a/tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp
+++ b/tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -170,6 +170,7 @@ private slots:
// text write operators
void string_write_operator_ToDevice_data();
void string_write_operator_ToDevice();
+ void latin1String_write_operator_ToDevice();
// other
void skipWhiteSpace_data();
@@ -2384,6 +2385,20 @@ void tst_QTextStream::string_write_operator_ToDevice()
}
}
+void tst_QTextStream::latin1String_write_operator_ToDevice()
+{
+ QBuffer buf;
+ buf.open(QBuffer::WriteOnly);
+ QTextStream stream(&buf);
+ stream.setCodec(QTextCodec::codecForName("ISO-8859-1"));
+ stream.setAutoDetectUnicode(true);
+
+ stream << QLatin1String("No explicit length");
+ stream << QLatin1String("Explicit length - ignore this part", 15);
+ stream.flush();
+ QCOMPARE(buf.buffer().constData(), "No explicit lengthExplicit length");
+}
+
// ------------------------------------------------------------------------------
void tst_QTextStream::useCase1()
{
diff --git a/tests/auto/corelib/io/qurl/idna-test.c b/tests/auto/corelib/io/qurl/idna-test.c
index 40538dfb65..3aabaad03f 100644
--- a/tests/auto/corelib/io/qurl/idna-test.c
+++ b/tests/auto/corelib/io/qurl/idna-test.c
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/io/qurl/tst_qurl.cpp b/tests/auto/corelib/io/qurl/tst_qurl.cpp
index f0b6429089..611847852f 100644
--- a/tests/auto/corelib/io/qurl/tst_qurl.cpp
+++ b/tests/auto/corelib/io/qurl/tst_qurl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -81,6 +81,8 @@ private slots:
void effectiveTLDs();
void getSetCheck();
void constructing();
+ void hashInPath();
+ void unc();
void assignment();
void comparison();
void copying();
@@ -134,6 +136,7 @@ private slots:
void toPercentEncoding();
void isRelative_data();
void isRelative();
+ void setQueryItems();
void queryItems();
void hasQuery_data();
void hasQuery();
@@ -242,35 +245,6 @@ void tst_QUrl::constructing()
QCOMPARE(url.port(), -1);
QCOMPARE(url.toString(), QString());
- QList<QPair<QString, QString> > query;
- query += qMakePair(QString("type"), QString("login"));
- query += qMakePair(QString("name"), QString("åge nissemannsen"));
- query += qMakePair(QString("ole&du"), QString("anne+jørgen=sant"));
- query += qMakePair(QString("prosent"), QString("%"));
- url.setQueryItems(query);
- QVERIFY(!url.isEmpty());
-
- QCOMPARE(url.encodedQuery().constData(),
- QByteArray("type=login&name=%C3%A5ge%20nissemannsen&ole%26du="
- "anne+j%C3%B8rgen%3Dsant&prosent=%25").constData());
-
- url.setQueryDelimiters('>', '/');
- url.setQueryItems(query);
-
- QCOMPARE(url.encodedQuery(),
- QByteArray("type>login/name>%C3%A5ge%20nissemannsen/ole&du>"
- "anne+j%C3%B8rgen=sant/prosent>%25"));
-
- url.setFragment(QString::fromLatin1("top"));
- QCOMPARE(url.fragment(), QString::fromLatin1("top"));
-
- url.setScheme("http");
- url.setHost("qt.nokia.com");
-
- QCOMPARE(url.toString(),
- QString::fromLatin1("http://qt.nokia.com?type>login/name>åge nissemannsen"
- "/ole&du>anne+jørgen=sant/prosent>%#top"));
-
QUrl justHost("qt.nokia.com");
QVERIFY(!justHost.isEmpty());
QVERIFY(justHost.host().isEmpty());
@@ -279,16 +253,22 @@ void tst_QUrl::constructing()
QUrl hostWithSlashes("//qt.nokia.com");
QVERIFY(hostWithSlashes.path().isEmpty());
QCOMPARE(hostWithSlashes.host(), QString::fromLatin1("qt.nokia.com"));
+}
-
+void tst_QUrl::hashInPath()
+{
QUrl withHashInPath;
withHashInPath.setPath(QString::fromLatin1("hi#mum.txt"));
QCOMPARE(withHashInPath.path(), QString::fromLatin1("hi#mum.txt"));
QCOMPARE(withHashInPath.toEncoded(), QByteArray("hi%23mum.txt"));
+ QCOMPARE(withHashInPath.toString(), QString("hi%23mum.txt"));
+
QUrl fromHashInPath = QUrl::fromEncoded(withHashInPath.toEncoded());
QVERIFY(withHashInPath == fromHashInPath);
+}
-
+void tst_QUrl::unc()
+{
QUrl buildUNC;
buildUNC.setScheme(QString::fromLatin1("file"));
buildUNC.setHost(QString::fromLatin1("somehost"));
@@ -375,7 +355,7 @@ void tst_QUrl::setUrl()
{
QUrl url("hTTp://www.foo.bar:80");
QVERIFY(url.isValid());
- QCOMPARE(url.scheme(), QString::fromLatin1("hTTp"));
+ QCOMPARE(url.scheme(), QString::fromLatin1("http"));
QCOMPARE(url.path(), QString());
QVERIFY(url.encodedQuery().isEmpty());
QVERIFY(url.userInfo().isEmpty());
@@ -385,7 +365,7 @@ void tst_QUrl::setUrl()
QCOMPARE(url.port(), 80);
QUrl url2("//www1.foo.bar");
- QCOMPARE(url.resolved(url2).toString(), QString::fromLatin1("hTTp://www1.foo.bar"));
+ QCOMPARE(url.resolved(url2).toString(), QString::fromLatin1("http://www1.foo.bar"));
}
{
@@ -544,13 +524,11 @@ void tst_QUrl::setUrl()
}
{
- QUrl notPretty;
- notPretty.setEncodedUrl("http://ferret.lmh.ox.ac.uk/%7Ekdecvs/");
+ QUrl notPretty("http://ferret.lmh.ox.ac.uk/%7Ekdecvs/");
QVERIFY(notPretty.isValid());
QCOMPARE(notPretty.toString(), QString::fromLatin1("http://ferret.lmh.ox.ac.uk/~kdecvs/"));
- QUrl notPretty2;
- notPretty2.setEncodedUrl("file:/home/test/directory%20with%20spaces");
+ QUrl notPretty2("file:/home/test/directory%20with%20spaces");
QVERIFY(notPretty2.isValid());
QCOMPARE(notPretty2.toString(), QString::fromLatin1("file:///home/test/directory with spaces"));
@@ -564,7 +542,7 @@ void tst_QUrl::setUrl()
QCOMPARE(url15581.toEncoded().constData(), QByteArray("http://alain.knaff.linux.lu/bug-reports/kde/spaces%20in%20url.html").constData());
QUrl url15582("http://alain.knaff.linux.lu/bug-reports/kde/percentage%in%url.html");
- QCOMPARE(url15582.toString(), QString::fromLatin1("http://alain.knaff.linux.lu/bug-reports/kde/percentage%in%url.html"));
+ QCOMPARE(url15582.toString(), QString::fromLatin1("http://alain.knaff.linux.lu/bug-reports/kde/percentage%25in%25url.html"));
QCOMPARE(url15582.toEncoded(), QByteArray("http://alain.knaff.linux.lu/bug-reports/kde/percentage%25in%25url.html"));
}
@@ -577,8 +555,7 @@ void tst_QUrl::setUrl()
charles.setPath("/home/charles/foo%20moo");
QCOMPARE(charles.path(), QString::fromLatin1("/home/charles/foo%20moo"));
- QUrl charles2;
- charles2.setEncodedUrl("file:/home/charles/foo%20moo");
+ QUrl charles2("file:/home/charles/foo%20moo");
QCOMPARE(charles2.path(), QString::fromLatin1("/home/charles/foo moo"));
}
@@ -642,8 +619,7 @@ void tst_QUrl::setUrl()
}
{
- QUrl url;
- url.setEncodedUrl("data:text/javascript,d5%20%3D%20'five\\u0027s'%3B");
+ QUrl url("data:text/javascript,d5%20%3D%20'five\\u0027s'%3B");
QVERIFY(url.isValid());
QCOMPARE(url.scheme(), QString("data"));
QCOMPARE(url.host(), QString());
@@ -665,11 +641,11 @@ void tst_QUrl::i18n_data()
QTest::addColumn<QString>("input");
QTest::addColumn<QByteArray>("punyOutput");
- QTest::newRow("øl") << QString::fromLatin1("http://ole:passord@www.øl.no/index.html?ole=æsemann&ilder gud=hei#top")
- << QByteArray("http://ole:passord@www.xn--l-4ga.no/index.html?ole=%C3%A6semann&ilder%20gud=hei#top");
- QTest::newRow("räksmörgås") << QString::fromLatin1("http://www.räksmörgås.no/")
+ QTest::newRow("øl") << QString::fromUtf8("http://ole:passord@www.øl.no/index.html?ole=æsemann&ilder gud=hei#top")
+ << QByteArray("http://ole:passord@www.xn--l-4ga.no/index.html?ole=%C3%A6semann&ilder%20gud=hei#top");
+ QTest::newRow("räksmörgås") << QString::fromUtf8("http://www.räksmörgås.no/")
<< QByteArray("http://www.xn--rksmrgs-5wao1o.no/");
- QTest::newRow("bühler") << QString::fromLatin1("http://www.bühler.no/")
+ QTest::newRow("bühler") << QString::fromUtf8("http://www.bühler.no/")
<< QByteArray("http://www.xn--bhler-kva.no/");
QTest::newRow("non-latin1")
<< QString::fromUtf8("http://www.\316\261\316\270\316\256\316\275\316\261.info")
@@ -1338,7 +1314,7 @@ void tst_QUrl::compat_decode_data()
QTest::newRow("HTTPUrl") << QByteArray("http://qt.nokia.com") << QString("http://qt.nokia.com");
QTest::newRow("HTTPUrlEncoded") << QByteArray("http://qt%20nokia%20com") << QString("http://qt nokia com");
QTest::newRow("EmptyString") << QByteArray("") << QString("");
- QTest::newRow("Task27166") << QByteArray("Fran%C3%A7aise") << QString("Française");
+ QTest::newRow("Task27166") << QByteArray("Fran%C3%A7aise") << QString::fromUtf8("Française");
}
void tst_QUrl::compat_decode()
@@ -1360,7 +1336,7 @@ void tst_QUrl::compat_encode_data()
QTest::newRow("HTTPUrl") << QString("http://qt.nokia.com") << QByteArray("http%3A//qt.nokia.com");
QTest::newRow("HTTPUrlEncoded") << QString("http://qt nokia com") << QByteArray("http%3A//qt%20nokia%20com");
QTest::newRow("EmptyString") << QString("") << QByteArray("");
- QTest::newRow("Task27166") << QString::fromLatin1("Française") << QByteArray("Fran%C3%A7aise");
+ QTest::newRow("Task27166") << QString::fromUtf8("Française") << QByteArray("Fran%C3%A7aise");
}
void tst_QUrl::compat_encode()
@@ -1393,7 +1369,7 @@ void tst_QUrl::percentEncoding_data()
QTest::addColumn<QByteArray>("encoded");
QTest::newRow("test_01") << QString::fromLatin1("sdfsdf") << QByteArray("sdfsdf");
- QTest::newRow("test_02") << QString::fromLatin1("æss") << QByteArray("%C3%A6ss");
+ QTest::newRow("test_02") << QString::fromUtf8("æss") << QByteArray("%C3%A6ss");
// not unreserved or reserved
QTest::newRow("test_03") << QString::fromLatin1("{}") << QByteArray("%7B%7D");
}
@@ -1407,6 +1383,7 @@ void tst_QUrl::percentEncoding()
QVERIFY(QUrl::fromEncoded(QUrl(original).toEncoded()) == QUrl(original));
QCOMPARE(QUrl::fromEncoded(QUrl(original).toEncoded()).toString(), original);
QVERIFY(QUrl::fromEncoded(encoded) == QUrl(original));
+ QCOMPARE(QUrl(QUrl(original).toString()).toString(), original);
}
void tst_QUrl::toPercentEncoding_data()
@@ -1460,15 +1437,15 @@ void tst_QUrl::swap()
void tst_QUrl::symmetry()
{
- QUrl url(QString::fromLatin1("http://www.räksmörgås.se/pub?a=b&a=dø&a=f#vræl"));
+ QUrl url(QString::fromUtf8("http://www.räksmörgås.se/pub?a=b&a=dø&a=f#vræl"));
QCOMPARE(url.scheme(), QString::fromLatin1("http"));
- QCOMPARE(url.host(), QString::fromLatin1("www.räksmörgås.se"));
+ QCOMPARE(url.host(), QString::fromUtf8("www.räksmörgås.se"));
QCOMPARE(url.path(), QString::fromLatin1("/pub"));
// this will be encoded ...
QCOMPARE(url.encodedQuery().constData(), QString::fromLatin1("a=b&a=d%C3%B8&a=f").toLatin1().constData());
// unencoded
- QCOMPARE(url.allQueryItemValues("a").join("").toLatin1().constData(), "bdøf");
- QCOMPARE(url.fragment(), QString::fromLatin1("vræl"));
+ QCOMPARE(url.allQueryItemValues("a").join(""), QString::fromUtf8("bdøf"));
+ QCOMPARE(url.fragment(), QString::fromUtf8("vræl"));
QUrl onlyHost("//qt.nokia.com");
QCOMPARE(onlyHost.toString(), QString::fromLatin1("//qt.nokia.com"));
@@ -1480,14 +1457,16 @@ void tst_QUrl::symmetry()
QByteArray b = urlPreviewList.toEncoded();
QCOMPARE(b.constData(), "http://desktop:33326/upnp/%7B32f525a6-6f31-426e-91ca-01c2e6c2c57e%7D");
QCOMPARE(QUrl::fromEncoded(b).toString(), urlString);
-
- }{
+ QCOMPARE(QUrl(b).toString(), urlString);
+ }
+ {
QString urlString = QString::fromLatin1("http://desktop:53423/deviceDescription?uuid={7977c17b-00bf-4af9-894e-fed28573c3a9}");
QUrl urlPreviewList(urlString);
QCOMPARE(urlPreviewList.toString(), urlString);
QByteArray b = urlPreviewList.toEncoded();
QCOMPARE(b.constData(), "http://desktop:53423/deviceDescription?uuid=%7B7977c17b-00bf-4af9-894e-fed28573c3a9%7D");
QCOMPARE(QUrl::fromEncoded(b).toString(), urlString);
+ QCOMPARE(QUrl(b).toString(), urlString);
}
}
@@ -1567,9 +1546,9 @@ void tst_QUrl::punycode_data()
QTest::addColumn<QString>("original");
QTest::addColumn<QByteArray>("encoded");
- QTest::newRow("øl") << QString::fromLatin1("øl") << QByteArray("xn--l-4ga");
- QTest::newRow("Bühler") << QString::fromLatin1("Bühler") << QByteArray("xn--Bhler-kva");
- QTest::newRow("räksmörgås") << QString::fromLatin1("räksmörgås") << QByteArray("xn--rksmrgs-5wao1o");
+ QTest::newRow("øl") << QString::fromUtf8("øl") << QByteArray("xn--l-4ga");
+ QTest::newRow("Bühler") << QString::fromUtf8("Bühler") << QByteArray("xn--Bhler-kva");
+ QTest::newRow("räksmörgås") << QString::fromUtf8("räksmörgås") << QByteArray("xn--rksmrgs-5wao1o");
}
void tst_QUrl::punycode()
@@ -1608,6 +1587,43 @@ void tst_QUrl::isRelative()
QCOMPARE(QUrl(url).isRelative(), trueFalse);
}
+void tst_QUrl::setQueryItems()
+{
+ QUrl url;
+
+ QList<QPair<QString, QString> > query;
+ query += qMakePair(QString("type"), QString("login"));
+ query += qMakePair(QString("name"), QString::fromUtf8("Ã¥ge nissemannsen"));
+ query += qMakePair(QString("ole&du"), QString::fromUtf8("anne+jørgen=sant"));
+ query += qMakePair(QString("prosent"), QString("%"));
+ url.setQueryItems(query);
+ QVERIFY(!url.isEmpty());
+
+ QCOMPARE(url.encodedQuery().constData(),
+ QByteArray("type=login&name=%C3%A5ge%20nissemannsen&ole%26du="
+ "anne+j%C3%B8rgen%3Dsant&prosent=%25").constData());
+
+ url.setQueryDelimiters('>', '/');
+ url.setQueryItems(query);
+
+ QCOMPARE(url.encodedQuery(),
+ QByteArray("type>login/name>%C3%A5ge%20nissemannsen/ole&du>"
+ "anne+j%C3%B8rgen=sant/prosent>%25"));
+
+ url.setFragment(QString::fromLatin1("top"));
+ QCOMPARE(url.fragment(), QString::fromLatin1("top"));
+
+ url.setScheme("http");
+ url.setHost("qt.nokia.com");
+
+ QCOMPARE(url.toEncoded().constData(),
+ "http://qt.nokia.com?type>login/name>%C3%A5ge%20nissemannsen/ole&du>"
+ "anne+j%C3%B8rgen=sant/prosent>%25#top");
+ QCOMPARE(url.toString(),
+ QString::fromUtf8("http://qt.nokia.com?type>login/name>Ã¥ge nissemannsen"
+ "/ole&du>anne+jørgen=sant/prosent>%25#top"));
+}
+
void tst_QUrl::queryItems()
{
QUrl url;
@@ -1844,8 +1860,7 @@ void tst_QUrl::tolerantParser()
QCOMPARE(url.path(), QString("/path with spaces.html"));
QCOMPARE(url.toEncoded(), QByteArray("http://www.example.com/path%20with%20spaces.html"));
url.setUrl("http://www.example.com/path%20with spaces.html", QUrl::StrictMode);
- QVERIFY(url.isValid());
- QCOMPARE(url.toEncoded(), QByteArray("http://www.example.com/path%2520with%20spaces.html"));
+ QVERIFY(!url.isValid());
}
{
QUrl url = QUrl::fromEncoded("http://www.example.com/path%20with spaces.html");
@@ -1940,7 +1955,7 @@ void tst_QUrl::correctEncodedMistakes_data()
{
QTest::addColumn<QByteArray>("encodedUrl");
QTest::addColumn<bool>("result");
- QTest::addColumn<QString>("toString");
+ QTest::addColumn<QString>("toDecoded");
QTest::addColumn<QByteArray>("toEncoded");
QTest::newRow("%") << QByteArray("%") << true << QString("%") << QByteArray("%25");
@@ -1957,13 +1972,14 @@ void tst_QUrl::correctEncodedMistakes()
{
QFETCH(QByteArray, encodedUrl);
QFETCH(bool, result);
- QFETCH(QString, toString);
+ QFETCH(QString, toDecoded);
QFETCH(QByteArray, toEncoded);
QUrl url = QUrl::fromEncoded(encodedUrl);
QCOMPARE(url.isValid(), result);
if (url.isValid()) {
- QCOMPARE(url.toString(), toString);
+ Q_UNUSED(toDecoded); // no full-decoding available at the moment
+ QCOMPARE(url.toString(), QString::fromLatin1(toEncoded));
QCOMPARE(url.toEncoded(), toEncoded);
}
}
@@ -1972,7 +1988,7 @@ void tst_QUrl::correctDecodedMistakes_data()
{
QTest::addColumn<QString>("decodedUrl");
QTest::addColumn<bool>("result");
- QTest::addColumn<QString>("toString");
+ QTest::addColumn<QString>("toDecoded");
QTest::addColumn<QByteArray>("toEncoded");
QTest::newRow("%") << QString("%") << true << QString("%") << QByteArray("%25");
@@ -1982,20 +1998,21 @@ void tst_QUrl::correctDecodedMistakes_data()
QTest::newRow("13%!!") << QString("13%!!") << true << QString("13%!!") << QByteArray("13%25!!");
QTest::newRow("13%a") << QString("13%a") << true << QString("13%a") << QByteArray("13%25a");
QTest::newRow("13%az") << QString("13%az") << true << QString("13%az") << QByteArray("13%25az");
- QTest::newRow("13%25") << QString("13%25") << true << QString("13%25") << QByteArray("13%2525");
+ QTest::newRow("13%25") << QString("13%25") << true << QString("13%25") << QByteArray("13%25");
}
void tst_QUrl::correctDecodedMistakes()
{
QFETCH(QString, decodedUrl);
QFETCH(bool, result);
- QFETCH(QString, toString);
+ QFETCH(QString, toDecoded);
QFETCH(QByteArray, toEncoded);
QUrl url(decodedUrl);
QCOMPARE(url.isValid(), result);
if (url.isValid()) {
- QCOMPARE(url.toString(), toString);
+ Q_UNUSED(toDecoded); // no full-decoding available at the moment
+ QCOMPARE(url.toString(), QString::fromLatin1(toEncoded));
QCOMPARE(url.toEncoded(), toEncoded);
}
}
@@ -2695,7 +2712,7 @@ void tst_QUrl::tldRestrictions()
{
QFETCH(QString, tld);
- // www.brød.tld
+ // www.brød.tld
QByteArray ascii = "www.xn--brd-1na." + tld.toLatin1();
QString unicode = QLatin1String("www.br\370d.") + tld;
QString encoded = QUrl::fromAce(ascii);
diff --git a/tests/auto/corelib/io/qwinoverlappedionotifier/qwinoverlappedionotifier.pro b/tests/auto/corelib/io/qwinoverlappedionotifier/qwinoverlappedionotifier.pro
new file mode 100644
index 0000000000..0b5bf9fd5c
--- /dev/null
+++ b/tests/auto/corelib/io/qwinoverlappedionotifier/qwinoverlappedionotifier.pro
@@ -0,0 +1,4 @@
+CONFIG += testcase parallel_test
+TARGET = tst_qwinoverlappedionotifier
+QT = core-private testlib
+SOURCES = tst_qwinoverlappedionotifier.cpp
diff --git a/tests/auto/corelib/io/qwinoverlappedionotifier/tst_qwinoverlappedionotifier.cpp b/tests/auto/corelib/io/qwinoverlappedionotifier/tst_qwinoverlappedionotifier.cpp
new file mode 100644
index 0000000000..6190b62bbf
--- /dev/null
+++ b/tests/auto/corelib/io/qwinoverlappedionotifier/tst_qwinoverlappedionotifier.cpp
@@ -0,0 +1,212 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <QtTest/QtTest>
+#include <private/qwinoverlappedionotifier_p.h>
+#include <qbytearray.h>
+
+class tst_QWinOverlappedIoNotifier : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void initTestCase();
+ void readFile_data();
+ void readFile();
+ void waitForNotified_data();
+ void waitForNotified();
+ void brokenPipe();
+
+private:
+ QFileInfo sourceFileInfo;
+ DWORD notifiedBytesRead;
+ DWORD notifiedErrorCode;
+};
+
+class NotifierSink : public QObject
+{
+ Q_OBJECT
+public:
+ NotifierSink(QWinOverlappedIoNotifier *notifier)
+ : QObject(notifier),
+ notifications(0),
+ notifiedBytesRead(0),
+ notifiedErrorCode(ERROR_SUCCESS)
+ {
+ connect(notifier, &QWinOverlappedIoNotifier::notified, this, &NotifierSink::notified);
+ }
+
+protected slots:
+ void notified(DWORD bytesRead, DWORD errorCode)
+ {
+ notifications++;
+ notifiedBytesRead = bytesRead;
+ notifiedErrorCode = errorCode;
+ emit notificationReceived();
+ }
+
+signals:
+ void notificationReceived();
+
+public:
+ int notifications;
+ DWORD notifiedBytesRead;
+ DWORD notifiedErrorCode;
+};
+
+void tst_QWinOverlappedIoNotifier::initTestCase()
+{
+ sourceFileInfo.setFile(QFINDTESTDATA("tst_qwinoverlappedionotifier.cpp"));
+ QVERIFY2(sourceFileInfo.exists(), "File tst_qwinoverlappedionotifier.cpp not found.");
+}
+
+void tst_QWinOverlappedIoNotifier::readFile_data()
+{
+ QTest::addColumn<QString>("fileName");
+ QTest::addColumn<int>("readBufferSize");
+ QTest::addColumn<DWORD>("expectedBytesRead");
+
+ QString sourceFileName = QDir::toNativeSeparators(sourceFileInfo.absoluteFilePath());
+ int sourceFileSize = sourceFileInfo.size();
+
+ QTest::newRow("read file, less than available")
+ << sourceFileName << sourceFileSize / 2 << DWORD(sourceFileSize / 2);
+ QTest::newRow("read file, more than available")
+ << sourceFileName << sourceFileSize * 2 << DWORD(sourceFileSize);
+}
+
+void tst_QWinOverlappedIoNotifier::readFile()
+{
+ QFETCH(QString, fileName);
+ QFETCH(int, readBufferSize);
+ QFETCH(DWORD, expectedBytesRead);
+
+ QWinOverlappedIoNotifier notifier;
+ NotifierSink sink(&notifier);
+ connect(&sink, &NotifierSink::notificationReceived, &QTestEventLoop::instance(), &QTestEventLoop::exitLoop);
+
+ HANDLE hFile = CreateFile(reinterpret_cast<const wchar_t*>(fileName.utf16()),
+ GENERIC_READ, FILE_SHARE_READ,
+ NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
+ notifier.setHandle(hFile);
+ notifier.setEnabled(true);
+
+ OVERLAPPED overlapped = {0};
+ QByteArray buffer(readBufferSize, 0);
+ BOOL readSuccess = ReadFile(hFile, buffer.data(), buffer.size(), NULL, &overlapped);
+ QVERIFY(readSuccess || GetLastError() == ERROR_IO_PENDING);
+
+ QTestEventLoop::instance().enterLoop(3);
+ CloseHandle(hFile);
+ QCOMPARE(sink.notifications, 1);
+ QCOMPARE(sink.notifiedBytesRead, expectedBytesRead);
+ QCOMPARE(sink.notifiedErrorCode, DWORD(ERROR_SUCCESS));
+}
+
+void tst_QWinOverlappedIoNotifier::waitForNotified_data()
+{
+ readFile_data();
+}
+
+void tst_QWinOverlappedIoNotifier::waitForNotified()
+{
+ QFETCH(QString, fileName);
+ QFETCH(int, readBufferSize);
+ QFETCH(DWORD, expectedBytesRead);
+
+ QWinOverlappedIoNotifier notifier;
+ NotifierSink sink(&notifier);
+ HANDLE hFile = CreateFile(reinterpret_cast<const wchar_t*>(fileName.utf16()),
+ GENERIC_READ, FILE_SHARE_READ,
+ NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, NULL);
+ QCOMPARE(notifier.waitForNotified(0), false);
+ notifier.setHandle(hFile);
+ notifier.setEnabled(true);
+ QCOMPARE(notifier.waitForNotified(100), false);
+
+ OVERLAPPED overlapped = {0};
+ QByteArray buffer(readBufferSize, 0);
+ BOOL readSuccess = ReadFile(hFile, buffer.data(), buffer.size(), NULL, &overlapped);
+ QVERIFY(readSuccess || GetLastError() == ERROR_IO_PENDING);
+
+ QCOMPARE(notifier.waitForNotified(3000), true);
+ CloseHandle(hFile);
+ QCOMPARE(sink.notifications, 1);
+ QCOMPARE(sink.notifiedBytesRead, expectedBytesRead);
+ QCOMPARE(sink.notifiedErrorCode, DWORD(ERROR_SUCCESS));
+ QCOMPARE(notifier.waitForNotified(100), false);
+}
+
+void tst_QWinOverlappedIoNotifier::brokenPipe()
+{
+ QWinOverlappedIoNotifier notifier;
+ NotifierSink sink(&notifier);
+ connect(&sink, &NotifierSink::notificationReceived, &QTestEventLoop::instance(), &QTestEventLoop::exitLoop);
+
+ wchar_t pipeName[] = L"\\\\.\\pipe\\tst_QWinOverlappedIoNotifier_brokenPipe";
+ HANDLE hPipe = CreateNamedPipe(pipeName,
+ PIPE_ACCESS_DUPLEX,
+ PIPE_TYPE_BYTE | PIPE_NOWAIT | PIPE_REJECT_REMOTE_CLIENTS,
+ 1, 0, 0, 0, NULL);
+ QVERIFY(hPipe != INVALID_HANDLE_VALUE);
+ HANDLE hReadEnd = CreateFile(pipeName, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
+ QVERIFY(hReadEnd != INVALID_HANDLE_VALUE);
+ notifier.setHandle(hReadEnd);
+ notifier.setEnabled(true);
+
+ OVERLAPPED overlapped = {0};
+ QByteArray buffer(1024, 0);
+ BOOL readSuccess = ReadFile(hReadEnd, buffer.data(), buffer.size(), NULL, &overlapped);
+ QVERIFY(readSuccess || GetLastError() == ERROR_IO_PENDING);
+
+ // close the write end of the pipe
+ CloseHandle(hPipe);
+
+ QTestEventLoop::instance().enterLoop(3);
+ CloseHandle(hReadEnd);
+ QCOMPARE(sink.notifications, 1);
+ QCOMPARE(sink.notifiedBytesRead, DWORD(0));
+ QCOMPARE(sink.notifiedErrorCode, DWORD(ERROR_BROKEN_PIPE));
+}
+
+QTEST_MAIN(tst_QWinOverlappedIoNotifier)
+
+#include "tst_qwinoverlappedionotifier.moc"
diff --git a/tests/auto/corelib/itemmodels/qabstractitemmodel/qabstractitemmodel.pro b/tests/auto/corelib/itemmodels/qabstractitemmodel/qabstractitemmodel.pro
index acf74737a8..9e59251379 100644
--- a/tests/auto/corelib/itemmodels/qabstractitemmodel/qabstractitemmodel.pro
+++ b/tests/auto/corelib/itemmodels/qabstractitemmodel/qabstractitemmodel.pro
@@ -1,6 +1,6 @@
CONFIG += testcase
TARGET = tst_qabstractitemmodel
-QT += widgets testlib
+QT += testlib
mtdir = ../../../other/modeltest
INCLUDEPATH += $$PWD/$${mtdir}
diff --git a/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp b/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp
index af1e492a8b..2ca5df477b 100644
--- a/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp
+++ b/tests/auto/corelib/itemmodels/qabstractitemmodel/tst_qabstractitemmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -72,6 +72,7 @@ private slots:
void match();
void dropMimeData_data();
void dropMimeData();
+ void canDropMimeData();
void changePersistentIndex();
void movePersistentIndex();
@@ -79,6 +80,8 @@ private slots:
void insertColumns();
void removeRows();
void removeColumns();
+ void moveRows();
+ void moveColumns();
void reset();
@@ -142,8 +145,15 @@ public:
void setPersistent(const QModelIndex &from, const QModelIndex &to);
bool removeRows ( int row, int count, const QModelIndex & parent = QModelIndex() );
bool removeColumns( int column, int count, const QModelIndex & parent = QModelIndex());
+ bool moveRows (const QModelIndex &sourceParent, int sourceRow, int count,
+ const QModelIndex &destinationParent, int destinationChild);
+ bool moveColumns(const QModelIndex &sourceParent, int sourceColumn, int count,
+ const QModelIndex &destinationParent, int destinationChild);
void reset();
+ bool canDropMimeData(const QMimeData *data, Qt::DropAction action,
+ int row, int column, const QModelIndex &parent) const;
+
int cCount, rCount;
mutable bool wrongIndex;
QVector<QVector<QString> > table;
@@ -246,11 +256,88 @@ bool QtTestModel::removeColumns(int column, int count, const QModelIndex & paren
return true;
}
+bool QtTestModel::moveRows(const QModelIndex &sourceParent, int src, int cnt,
+ const QModelIndex &destinationParent, int dst)
+{
+ if (!QAbstractItemModel::beginMoveRows(sourceParent, src, src + cnt - 1,
+ destinationParent, dst))
+ return false;
+
+ QVector<QString> buf;
+ if (dst < src) {
+ for (int i = 0; i < cnt; ++i) {
+ buf.swap(table[src + i]);
+ table.remove(src + 1);
+ table.insert(dst, buf);
+ }
+ } else if (src < dst) {
+ for (int i = 0; i < cnt; ++i) {
+ buf.swap(table[src]);
+ table.remove(src);
+ table.insert(dst + i, buf);
+ }
+ }
+
+ rCount = table.count();
+
+ QAbstractItemModel::endMoveRows();
+ return true;
+}
+
+bool QtTestModel::moveColumns(const QModelIndex &sourceParent, int src, int cnt,
+ const QModelIndex &destinationParent, int dst)
+{
+ if (!QAbstractItemModel::beginMoveColumns(sourceParent, src, src + cnt - 1,
+ destinationParent, dst))
+ return false;
+
+ for (int r = 0; r < rCount; ++r) {
+ QString buf;
+ if (dst < src) {
+ for (int i = 0; i < cnt; ++i) {
+ buf = table[r][src + i];
+ table[r].remove(src + 1);
+ table[r].insert(dst, buf);
+ }
+ } else if (src < dst) {
+ for (int i = 0; i < cnt; ++i) {
+ buf = table[r][src];
+ table[r].remove(src);
+ table[r].insert(dst + i, buf);
+ }
+ }
+ }
+
+ cCount = table.at(0).count();
+
+ QAbstractItemModel::endMoveColumns();
+ return true;
+}
+
void QtTestModel::reset()
{
QAbstractItemModel::reset();
}
+bool QtTestModel::canDropMimeData(const QMimeData *data, Qt::DropAction action,
+ int row, int column, const QModelIndex &parent) const
+{
+ Q_UNUSED(data);
+ Q_UNUSED(action);
+
+ // For testing purposes, we impose some arbitrary rules on what may be dropped.
+ if (!parent.isValid() && row < 0 && column < 0) {
+ // a drop in emtpy space in the view is allowed.
+ // For example, in a filesystem view, a file may be dropped into empty space
+ // if it represents a writable directory.
+ return true;
+ }
+
+ // We then arbitrarily decide to only allow drops on odd rows.
+ // A filesystem view/model might be able to drop onto (writable) directories.
+ return row % 2 == 0;
+}
+
/**
* The source Model *must* be initialized before the _data function, since the _data function uses QModelIndexes to reference the items in the tables.
* Therefore, we must initialize it globally.
@@ -691,6 +778,15 @@ void tst_QAbstractItemModel::dropMimeData()
}
}
+void tst_QAbstractItemModel::canDropMimeData()
+{
+ QtTestModel model(3, 3);
+
+ QVERIFY(model.canDropMimeData(0, Qt::CopyAction, -1, -1, QModelIndex()));
+ QVERIFY(model.canDropMimeData(0, Qt::CopyAction, 0, 0, QModelIndex()));
+ QVERIFY(!model.canDropMimeData(0, Qt::CopyAction, 1, 0, QModelIndex()));
+}
+
void tst_QAbstractItemModel::changePersistentIndex()
{
QtTestModel model(3, 3);
@@ -781,6 +877,36 @@ void tst_QAbstractItemModel::insertColumns()
QCOMPARE(columnsInsertedSpy.count(), 1);
}
+void tst_QAbstractItemModel::moveRows()
+{
+ QtTestModel model(10, 10);
+
+ QSignalSpy rowsAboutToBeMovedSpy(&model, SIGNAL(rowsAboutToBeMoved(const QModelIndex &, int , int, const QModelIndex &, int)));
+ QSignalSpy rowsMovedSpy(&model, SIGNAL(rowsMoved(const QModelIndex &, int , int, const QModelIndex &, int)));
+
+ QVERIFY(rowsAboutToBeMovedSpy.isValid());
+ QVERIFY(rowsMovedSpy.isValid());
+
+ QCOMPARE(model.moveRows(QModelIndex(), 6, 4, QModelIndex(), 1), true);
+ QCOMPARE(rowsAboutToBeMovedSpy.count(), 1);
+ QCOMPARE(rowsMovedSpy.count(), 1);
+}
+
+void tst_QAbstractItemModel::moveColumns()
+{
+ QtTestModel model(10, 10);
+
+ QSignalSpy columnsAboutToBeMovedSpy(&model, SIGNAL(columnsAboutToBeMoved(const QModelIndex &, int , int, const QModelIndex &, int)));
+ QSignalSpy columnsMovedSpy(&model, SIGNAL(columnsMoved(const QModelIndex &, int , int, const QModelIndex &, int)));
+
+ QVERIFY(columnsAboutToBeMovedSpy.isValid());
+ QVERIFY(columnsMovedSpy.isValid());
+
+ QCOMPARE(model.moveColumns(QModelIndex(), 6, 4, QModelIndex(), 1), true);
+ QCOMPARE(columnsAboutToBeMovedSpy.count(), 1);
+ QCOMPARE(columnsMovedSpy.count(), 1);
+}
+
void tst_QAbstractItemModel::reset()
{
QtTestModel model(10, 10);
@@ -1669,6 +1795,19 @@ private:
};
+class ModelWithCustomRole : public QStringListModel
+{
+ Q_OBJECT
+public:
+ ModelWithCustomRole(QObject *parent = 0)
+ : QStringListModel(parent)
+ {
+ QHash<int, QByteArray> roleNames_ = roleNames();
+ roleNames_.insert(Qt::UserRole + 1, "custom");
+ setRoleNames(roleNames_);
+ }
+};
+
ListenerObject::ListenerObject(QAbstractProxyModel *parent)
: QObject(parent), m_model(parent)
{
@@ -1722,7 +1861,7 @@ void tst_QAbstractItemModel::testReset()
nullProxy->setSourceModel(m_model);
// Makes sure the model and proxy are in a consistent state. before and after reset.
- new ListenerObject(nullProxy);
+ ListenerObject *listener = new ListenerObject(nullProxy);
ModelResetCommandFixed *resetCommand = new ModelResetCommandFixed(m_model, this);
@@ -1741,6 +1880,28 @@ void tst_QAbstractItemModel::testReset()
QVERIFY(m_model->rowCount() == 9);
QModelIndex destIndex = m_model->index(4, 0);
QVERIFY(m_model->rowCount(destIndex) == 11);
+
+ // Delete it because its slots test things which are not true after this point.
+ delete listener;
+
+ QSignalSpy proxyBeforeResetSpy(nullProxy, SIGNAL(modelAboutToBeReset()));
+ QSignalSpy proxyAfterResetSpy(nullProxy, SIGNAL(modelReset()));
+
+ // Before setting it, it does not have custom roles.
+ QCOMPARE(nullProxy->roleNames().value(Qt::UserRole + 1), QByteArray());
+
+ nullProxy->setSourceModel(new ModelWithCustomRole(this));
+ QVERIFY(proxyBeforeResetSpy.size() == 1);
+ QVERIFY(proxyAfterResetSpy.size() == 1);
+
+ QCOMPARE(nullProxy->roleNames().value(Qt::UserRole + 1), QByteArray("custom"));
+
+ nullProxy->setSourceModel(m_model);
+ QVERIFY(proxyBeforeResetSpy.size() == 2);
+ QVERIFY(proxyAfterResetSpy.size() == 2);
+
+ // After being reset the proxy must be queried again.
+ QCOMPARE(nullProxy->roleNames().value(Qt::UserRole + 1), QByteArray());
}
class CustomRoleModel : public QStringListModel
diff --git a/tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp b/tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp
index 088ad0afdc..6d61f3f832 100644
--- a/tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp
+++ b/tests/auto/corelib/itemmodels/qabstractproxymodel/tst_qabstractproxymodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/itemmodels/qidentityproxymodel/tst_qidentityproxymodel.cpp b/tests/auto/corelib/itemmodels/qidentityproxymodel/tst_qidentityproxymodel.cpp
index fc11fbf763..567bb58752 100644
--- a/tests/auto/corelib/itemmodels/qidentityproxymodel/tst_qidentityproxymodel.cpp
+++ b/tests/auto/corelib/itemmodels/qidentityproxymodel/tst_qidentityproxymodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/itemmodels/qitemmodel/modelstotest.cpp b/tests/auto/corelib/itemmodels/qitemmodel/modelstotest.cpp
index 20985b69a6..99b9bb92f3 100644
--- a/tests/auto/corelib/itemmodels/qitemmodel/modelstotest.cpp
+++ b/tests/auto/corelib/itemmodels/qitemmodel/modelstotest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/itemmodels/qitemmodel/tst_qitemmodel.cpp b/tests/auto/corelib/itemmodels/qitemmodel/tst_qitemmodel.cpp
index 6d673ae00f..cbe7da11ad 100644
--- a/tests/auto/corelib/itemmodels/qitemmodel/tst_qitemmodel.cpp
+++ b/tests/auto/corelib/itemmodels/qitemmodel/tst_qitemmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/itemmodels/qitemselectionmodel/tst_qitemselectionmodel.cpp b/tests/auto/corelib/itemmodels/qitemselectionmodel/tst_qitemselectionmodel.cpp
index 552b3d6eab..94a81b981e 100644
--- a/tests/auto/corelib/itemmodels/qitemselectionmodel/tst_qitemselectionmodel.cpp
+++ b/tests/auto/corelib/itemmodels/qitemselectionmodel/tst_qitemselectionmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp b/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
index 559a806ef3..b31b64d974 100644
--- a/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
+++ b/tests/auto/corelib/itemmodels/qsortfilterproxymodel/tst_qsortfilterproxymodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/itemmodels/qstringlistmodel/qmodellistener.h b/tests/auto/corelib/itemmodels/qstringlistmodel/qmodellistener.h
index 1de3018228..900b3152ae 100644
--- a/tests/auto/corelib/itemmodels/qstringlistmodel/qmodellistener.h
+++ b/tests/auto/corelib/itemmodels/qstringlistmodel/qmodellistener.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/itemmodels/qstringlistmodel/tst_qstringlistmodel.cpp b/tests/auto/corelib/itemmodels/qstringlistmodel/tst_qstringlistmodel.cpp
index 6c7c87c940..6345678b2f 100644
--- a/tests/auto/corelib/itemmodels/qstringlistmodel/tst_qstringlistmodel.cpp
+++ b/tests/auto/corelib/itemmodels/qstringlistmodel/tst_qstringlistmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/json/json.pro b/tests/auto/corelib/json/json.pro
new file mode 100644
index 0000000000..5158b7337a
--- /dev/null
+++ b/tests/auto/corelib/json/json.pro
@@ -0,0 +1,8 @@
+TARGET = tst_qtjson
+QT = core testlib
+CONFIG -= app_bundle
+CONFIG += testcase
+
+DEFINES += SRCDIR=\\\"$$PWD/\\\"
+
+SOURCES += tst_qtjson.cpp
diff --git a/tests/auto/corelib/json/test.bjson b/tests/auto/corelib/json/test.bjson
new file mode 100644
index 0000000000..aa412eec67
--- /dev/null
+++ b/tests/auto/corelib/json/test.bjson
Binary files differ
diff --git a/tests/auto/corelib/json/test.json b/tests/auto/corelib/json/test.json
new file mode 100644
index 0000000000..7c935fffc8
--- /dev/null
+++ b/tests/auto/corelib/json/test.json
@@ -0,0 +1,66 @@
+[
+ "JSON Test Pattern pass1",
+ {"object with 1 member":["array with 1 element"]},
+ {},
+ [],
+ -42,
+ true,
+ false,
+ null,
+ {
+ "integer": 1234567890,
+ "real": -9876.543210,
+ "e": 0.123456789e-12,
+ "E": 1.234567890E+34,
+ "": 23456789012E66,
+ "zero": 0,
+ "one": 1,
+ "space": " ",
+ "quote": "\"",
+ "backslash": "\\",
+ "controls": "\b\f\n\r\t",
+ "slash": "/ & \/",
+ "alpha": "abcdefghijklmnopqrstuvwxyz",
+ "ALPHA": "ABCDEFGHIJKLMNOPQRSTUVWXYZ",
+ "digit": "0123456789",
+ "0123456789": "digit",
+ "special": "`1~!@#$%^&*()_+-={\':[,]}|;.</>?",
+ "hex": "\u0123\u4567\u89AB\uCDEF\uabcd\uef4A",
+ "true": true,
+ "false": false,
+ "null": null,
+ "array":[ ],
+ "object":{ },
+ "address": "50 St. James Street",
+ "url": "http://www.JSON.org/",
+ "comment": "// /* <!-- --",
+ "# -- --> */": " ",
+ " s p a c e d " :[1,2 , 3
+
+,
+
+4 , 5 , 6 ,7 ],"compact":[1,2,3,4,5,6,7],
+ "jsontext": "{\"object with 1 member\":[\"array with 1 element\"]}",
+ "quotes": "&#34; \u0022 %22 0x22 034 &#x22;",
+ "\/\"\uCAFE\uBABE\uAB98\uFCDE\ubcda\uef4A\b\f\n\r\t`1~!@#$%^&*()_+-=[]{}|;:\',./<>?" : "A key can be any string"
+ },
+ 0.5 ,98.6
+,
+99.44
+,
+
+1066,
+1e1,
+0.1e1,
+1e-1,
+1e00,
+2e+00,
+2e-00,
+"rosebud",
+{"foo": "bar"},
+{"classification":{"relevancyScore":1000,"searchUrl":{"value":"http://www.bizrate.com/iphone-cases/index__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"}},"products":{"priceSet":{"minPrice":{"value":"$0.01","integral":1},"maxPrice":{"value":"$4,833.99","integral":483399}},"product":[{"type":"PRODUCT","title":"Silicone case for iPhone 3G/ 3GS","description":"Elite Horizontal Leather Pouch for Apple iPhone 3G/3Gs - Premium quality horizontal case for your Apple iPhone 3G/3Gs. This pouch is ideal for the style conscious on the go. This great looking case is made from high-quality leather with classic black...","manufacturer":"Apple","url":{"value":"http://www.bizrate.com/silicone-case-for-iphone-3g-3gs--pid1968262863/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=1968262863","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=1968262863","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=1968262863","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=1968262863","xsize":400,"ysize":400}]},"relevancy":310711221747712.000000,"priceSet":{"minPrice":{"value":"$1.56","integral":156},"maxPrice":{"value":"$29.99","integral":2999},"stores":14},"id":1968262863,"categoryId":8515},{"type":"PRODUCT","title":"Nonslip Checkered Silicone Skin Soft Case for iPhone 4 4G","description":"Specification:Product Name Silicone Skin Case Model for Apple iPhone 4 Color Black Material Soft Silicone Skin Weight 26g Package 1 x Case for Apple iPhone 4 Description:This is a non-OEM product.Accessory Only, Phone is not included.","manufacturer":"H&B","url":{"value":"http://www.bizrate.com/nonslip-checkered-silicone-skin-soft-case-for-iphone-4-4g--pid2534935499/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2534935499","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2534935499","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2534935499","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2534935499","xsize":400,"ysize":400}]},"relevancy":175580930637824.000000,"priceSet":{"minPrice":{"value":"$0.45","integral":45},"maxPrice":{"value":"$194.95","integral":19495},"stores":34},"id":2534935499,"categoryId":8515},{"type":"PRODUCT","title":"Plastic Case for iPhone 4 - Black","description":"Description:Detachable Windmill Type Matte Hard Plastic Case Cover for iPhone 4 (Black / Magenta)Customised your iPhone with this wonderful Plastic Case which is a accessory for your iPhone 4 which is made of high quality and durable plastic, protect","manufacturer":"Griffin","url":{"value":"http://www.bizrate.com/plastic-case-for-iphone-4-black--pid2305624670/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2305624670","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2305624670","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2305624670","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2305624670","xsize":400,"ysize":400}]},"relevancy":132488642953216.000000,"priceSet":{"minPrice":{"value":"$0.99","integral":99},"maxPrice":{"value":"$303.68","integral":30368},"stores":33},"id":2305624670,"categoryId":8515},{"type":"PRODUCT","title":"Protective Silicone Case for iPhone 4","description":"Made of high quality PVC material Protects your iPhone 4 from any scratch and dirt Easy to install and remove, no any tool needed Cut-out design allows user can access all keypad / button and slot without having to remove the case","manufacturer":"Griffin","url":{"value":"http://www.bizrate.com/protective-silicone-case-for-iphone-4--pid2120981405/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2120981405","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2120981405","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2120981405","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2120981405","xsize":400,"ysize":400}]},"relevancy":108614681362432.000000,"priceSet":{"minPrice":{"value":"$1.70","integral":170},"maxPrice":{"value":"$99.99","integral":9999},"stores":11},"id":2120981405,"categoryId":8515},{"type":"PRODUCT","title":"Iphone® 4 Aerosport Case","description":"Do more than just protect your iPhone 4 with this case bundle from rooCASE. This 3 in 1 bundle include a snap-on case, screen protector and a Nike+ sensor shoe pouch that can be use on most running shoes. Color: Purple Design: Love Provides protection...","manufacturer":"Luxmo","url":{"value":"http://www.bizrate.com/iphone-4-aerosport-case--pid2203798762/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2203798762","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2203798762","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2203798762","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2203798762","xsize":400,"ysize":400}]},"relevancy":96203484168192.000000,"priceSet":{"minPrice":{"value":"$2.49","integral":249},"maxPrice":{"value":"$79.95","integral":7995},"stores":16},"id":2203798762,"categoryId":8515},{"type":"PRODUCT","title":"Case Reflect For Iphone 3G","description":"NCAA iPhone 3G faceplate features the schools primary logo silk screened on the front of the case.","manufacturer":"Griffin","url":{"value":"http://www.bizrate.com/case-reflect-for-iphone-3g--pid1114627445/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=1114627445","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=1114627445","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=1114627445","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=1114627445","xsize":400,"ysize":400}]},"relevancy":84727583211520.000000,"priceSet":{"minPrice":{"value":"$0.69","integral":69},"maxPrice":{"value":"$75.52","integral":7552},"stores":59},"id":1114627445,"categoryId":8515},{"type":"PRODUCT","title":"Infuse Protector Case for iPhone 4 Black","description":"Protect and personalize your iPhone 4 with this front and back image design Protector Case. Form-fitting front and back hard plastic covers Protects your cell phone without adding a lot of bulk Smooth glossy finish Snaps on to the front edges, sides...","manufacturer":"Luxmo","url":{"value":"http://www.bizrate.com/infuse-protector-case-for-iphone-4-black--pid2557462717/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2557462717","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2557462717","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2557462717","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2557462717","xsize":400,"ysize":400}]},"relevancy":80831066406912.000000,"priceSet":{"minPrice":{"value":"$0.59","integral":59},"maxPrice":{"value":"$79.00","integral":7900},"stores":24},"id":2557462717,"categoryId":8515},{"type":"PRODUCT","title":"Dragonfly iPhone 4 Kream Case - Black","description":"DF-0030219 - White, Kream Case for iPhone 4 by Dragon-Fly","url":{"value":"http://www.bizrate.com/dragonfly-iphone-4-kream-case-black--pid2442061740/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2442061740","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2442061740","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2442061740","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2442061740","xsize":400,"ysize":400}]},"relevancy":70900229603328.000000,"priceSet":{"minPrice":{"value":"$1.05","integral":105},"maxPrice":{"value":"$94.49","integral":9449},"stores":30},"id":2442061740,"categoryId":8515},{"type":"PRODUCT","title":"Apple iPhone 3G/3GS Silicone Case (Black)","description":"Snap on Apple iPhone 3G 3GS Synthetic Leather Hardshell Case! Premium Qualtiy Synthetic Leather cover provides style, comfort, and protection to your iPhone 3G & 3GS. It also adds a sophisticated elegance and cool to your fashion. The case allows Quick...","manufacturer":"Luxmo","url":{"value":"http://www.bizrate.com/apple-iphone-3g3gs-silicone-case-black--pid2004746863/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2004746863","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2004746863","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2004746863","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2004746863","xsize":400,"ysize":400}]},"relevancy":65194915004416.000000,"priceSet":{"minPrice":{"value":"$0.01","integral":1},"maxPrice":{"value":"$414.99","integral":41499},"stores":39},"id":2004746863,"categoryId":8515},{"type":"PRODUCT","title":"Otterbox iPhone 4 Defender Case - Black","description":"Your iPhone 4 has become a big part of your life. With FaceTime video, retina display, multitasking, HD video recording and more - you've got a lot to lose. You won't find a tougher case than the OtterBox Defender Series for iPhone 4. This three-layer...","manufacturer":"Universal","url":{"value":"http://www.bizrate.com/otterbox-iphone-4-defender-case-black--pid2584611575/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2584611575","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2584611575","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2584611575","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2584611575","xsize":400,"ysize":400}]},"relevancy":61515478597632.000000,"priceSet":{"minPrice":{"value":"$3.28","integral":328},"maxPrice":{"value":"$110.65","integral":11065},"stores":25},"id":2584611575,"categoryId":8515}],"includedResults":10,"totalResults":2000}},
+{"classification":{"relevancyScore":1000,"searchUrl":{"value":"http://www.bizrate.com/iphone-cases/index__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"}},"products":{"priceSet":{"minPrice":{"value":"$0.01","integral":1},"maxPrice":{"value":"$4,833.99","integral":483399}},"product":[{"type":"PRODUCT","title":"Silicone case for iPhone 3G/ 3GS","description":"Elite Horizontal Leather Pouch for Apple iPhone 3G/3Gs - Premium quality horizontal case for your Apple iPhone 3G/3Gs. This pouch is ideal for the style conscious on the go. This great looking case is made from high-quality leather with classic black...","manufacturer":"Apple","url":{"value":"http://www.bizrate.com/silicone-case-for-iphone-3g-3gs--pid1968262863/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=1968262863","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=1968262863","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=1968262863","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=1968262863","xsize":400,"ysize":400}]},"relevancy":310711221747712.000000,"priceSet":{"minPrice":{"value":"$1.56","integral":156},"maxPrice":{"value":"$29.99","integral":2999},"stores":14},"id":1968262863,"categoryId":8515},{"type":"PRODUCT","title":"Nonslip Checkered Silicone Skin Soft Case for iPhone 4 4G","description":"Specification:Product Name Silicone Skin Case Model for Apple iPhone 4 Color Black Material Soft Silicone Skin Weight 26g Package 1 x Case for Apple iPhone 4 Description:This is a non-OEM product.Accessory Only, Phone is not included.","manufacturer":"H&B","url":{"value":"http://www.bizrate.com/nonslip-checkered-silicone-skin-soft-case-for-iphone-4-4g--pid2534935499/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2534935499","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2534935499","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2534935499","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2534935499","xsize":400,"ysize":400}]},"relevancy":175580930637824.000000,"priceSet":{"minPrice":{"value":"$0.45","integral":45},"maxPrice":{"value":"$194.95","integral":19495},"stores":34},"id":2534935499,"categoryId":8515},{"type":"PRODUCT","title":"Plastic Case for iPhone 4 - Black","description":"Description:Detachable Windmill Type Matte Hard Plastic Case Cover for iPhone 4 (Black / Magenta)Customised your iPhone with this wonderful Plastic Case which is a accessory for your iPhone 4 which is made of high quality and durable plastic, protect","manufacturer":"Griffin","url":{"value":"http://www.bizrate.com/plastic-case-for-iphone-4-black--pid2305624670/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2305624670","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2305624670","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2305624670","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2305624670","xsize":400,"ysize":400}]},"relevancy":132488642953216.000000,"priceSet":{"minPrice":{"value":"$0.99","integral":99},"maxPrice":{"value":"$303.68","integral":30368},"stores":33},"id":2305624670,"categoryId":8515},{"type":"PRODUCT","title":"Protective Silicone Case for iPhone 4","description":"Made of high quality PVC material Protects your iPhone 4 from any scratch and dirt Easy to install and remove, no any tool needed Cut-out design allows user can access all keypad / button and slot without having to remove the case","manufacturer":"Griffin","url":{"value":"http://www.bizrate.com/protective-silicone-case-for-iphone-4--pid2120981405/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2120981405","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2120981405","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2120981405","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2120981405","xsize":400,"ysize":400}]},"relevancy":108614681362432.000000,"priceSet":{"minPrice":{"value":"$1.70","integral":170},"maxPrice":{"value":"$99.99","integral":9999},"stores":11},"id":2120981405,"categoryId":8515},{"type":"PRODUCT","title":"Iphone® 4 Aerosport Case","description":"Do more than just protect your iPhone 4 with this case bundle from rooCASE. This 3 in 1 bundle include a snap-on case, screen protector and a Nike+ sensor shoe pouch that can be use on most running shoes. Color: Purple Design: Love Provides protection...","manufacturer":"Luxmo","url":{"value":"http://www.bizrate.com/iphone-4-aerosport-case--pid2203798762/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2203798762","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2203798762","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2203798762","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2203798762","xsize":400,"ysize":400}]},"relevancy":96203484168192.000000,"priceSet":{"minPrice":{"value":"$2.49","integral":249},"maxPrice":{"value":"$79.95","integral":7995},"stores":16},"id":2203798762,"categoryId":8515},{"type":"PRODUCT","title":"Case Reflect For Iphone 3G","description":"NCAA iPhone 3G faceplate features the schools primary logo silk screened on the front of the case.","manufacturer":"Griffin","url":{"value":"http://www.bizrate.com/case-reflect-for-iphone-3g--pid1114627445/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=1114627445","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=1114627445","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=1114627445","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=1114627445","xsize":400,"ysize":400}]},"relevancy":84727583211520.000000,"priceSet":{"minPrice":{"value":"$0.69","integral":69},"maxPrice":{"value":"$75.52","integral":7552},"stores":59},"id":1114627445,"categoryId":8515},{"type":"PRODUCT","title":"Infuse Protector Case for iPhone 4 Black","description":"Protect and personalize your iPhone 4 with this front and back image design Protector Case. Form-fitting front and back hard plastic covers Protects your cell phone without adding a lot of bulk Smooth glossy finish Snaps on to the front edges, sides...","manufacturer":"Luxmo","url":{"value":"http://www.bizrate.com/infuse-protector-case-for-iphone-4-black--pid2557462717/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2557462717","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2557462717","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2557462717","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2557462717","xsize":400,"ysize":400}]},"relevancy":80831066406912.000000,"priceSet":{"minPrice":{"value":"$0.59","integral":59},"maxPrice":{"value":"$79.00","integral":7900},"stores":24},"id":2557462717,"categoryId":8515},{"type":"PRODUCT","title":"Dragonfly iPhone 4 Kream Case - Black","description":"DF-0030219 - White, Kream Case for iPhone 4 by Dragon-Fly","url":{"value":"http://www.bizrate.com/dragonfly-iphone-4-kream-case-black--pid2442061740/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2442061740","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2442061740","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2442061740","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2442061740","xsize":400,"ysize":400}]},"relevancy":70900229603328.000000,"priceSet":{"minPrice":{"value":"$1.05","integral":105},"maxPrice":{"value":"$94.49","integral":9449},"stores":30},"id":2442061740,"categoryId":8515},{"type":"PRODUCT","title":"Apple iPhone 3G/3GS Silicone Case (Black)","description":"Snap on Apple iPhone 3G 3GS Synthetic Leather Hardshell Case! Premium Qualtiy Synthetic Leather cover provides style, comfort, and protection to your iPhone 3G & 3GS. It also adds a sophisticated elegance and cool to your fashion. The case allows Quick...","manufacturer":"Luxmo","url":{"value":"http://www.bizrate.com/apple-iphone-3g3gs-silicone-case-black--pid2004746863/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2004746863","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2004746863","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2004746863","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2004746863","xsize":400,"ysize":400}]},"relevancy":65194915004416.000000,"priceSet":{"minPrice":{"value":"$0.01","integral":1},"maxPrice":{"value":"$414.99","integral":41499},"stores":39},"id":2004746863,"categoryId":8515},{"type":"PRODUCT","title":"Otterbox iPhone 4 Defender Case - Black","description":"Your iPhone 4 has become a big part of your life. With FaceTime video, retina display, multitasking, HD video recording and more - you've got a lot to lose. You won't find a tougher case than the OtterBox Defender Series for iPhone 4. This three-layer...","manufacturer":"Universal","url":{"value":"http://www.bizrate.com/otterbox-iphone-4-defender-case-black--pid2584611575/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2584611575","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2584611575","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2584611575","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2584611575","xsize":400,"ysize":400}]},"relevancy":61515478597632.000000,"priceSet":{"minPrice":{"value":"$3.28","integral":328},"maxPrice":{"value":"$110.65","integral":11065},"stores":25},"id":2584611575,"categoryId":8515}],"includedResults":10,"totalResults":2000}},
+{"classification":{"relevancyScore":1000,"searchUrl":{"value":"http://www.bizrate.com/iphone-cases/index__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"}},"products":{"priceSet":{"minPrice":{"value":"$0.01","integral":1},"maxPrice":{"value":"$4,833.99","integral":483399}},"product":[{"type":"PRODUCT","title":"Silicone case for iPhone 3G/ 3GS","description":"Elite Horizontal Leather Pouch for Apple iPhone 3G/3Gs - Premium quality horizontal case for your Apple iPhone 3G/3Gs. This pouch is ideal for the style conscious on the go. This great looking case is made from high-quality leather with classic black...","manufacturer":"Apple","url":{"value":"http://www.bizrate.com/silicone-case-for-iphone-3g-3gs--pid1968262863/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=1968262863","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=1968262863","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=1968262863","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=1968262863","xsize":400,"ysize":400}]},"relevancy":310711221747712.000000,"priceSet":{"minPrice":{"value":"$1.56","integral":156},"maxPrice":{"value":"$29.99","integral":2999},"stores":14},"id":1968262863,"categoryId":8515},{"type":"PRODUCT","title":"Nonslip Checkered Silicone Skin Soft Case for iPhone 4 4G","description":"Specification:Product Name Silicone Skin Case Model for Apple iPhone 4 Color Black Material Soft Silicone Skin Weight 26g Package 1 x Case for Apple iPhone 4 Description:This is a non-OEM product.Accessory Only, Phone is not included.","manufacturer":"H&B","url":{"value":"http://www.bizrate.com/nonslip-checkered-silicone-skin-soft-case-for-iphone-4-4g--pid2534935499/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2534935499","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2534935499","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2534935499","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2534935499","xsize":400,"ysize":400}]},"relevancy":175580930637824.000000,"priceSet":{"minPrice":{"value":"$0.45","integral":45},"maxPrice":{"value":"$194.95","integral":19495},"stores":34},"id":2534935499,"categoryId":8515},{"type":"PRODUCT","title":"Plastic Case for iPhone 4 - Black","description":"Description:Detachable Windmill Type Matte Hard Plastic Case Cover for iPhone 4 (Black / Magenta)Customised your iPhone with this wonderful Plastic Case which is a accessory for your iPhone 4 which is made of high quality and durable plastic, protect","manufacturer":"Griffin","url":{"value":"http://www.bizrate.com/plastic-case-for-iphone-4-black--pid2305624670/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2305624670","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2305624670","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2305624670","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2305624670","xsize":400,"ysize":400}]},"relevancy":132488642953216.000000,"priceSet":{"minPrice":{"value":"$0.99","integral":99},"maxPrice":{"value":"$303.68","integral":30368},"stores":33},"id":2305624670,"categoryId":8515},{"type":"PRODUCT","title":"Protective Silicone Case for iPhone 4","description":"Made of high quality PVC material Protects your iPhone 4 from any scratch and dirt Easy to install and remove, no any tool needed Cut-out design allows user can access all keypad / button and slot without having to remove the case","manufacturer":"Griffin","url":{"value":"http://www.bizrate.com/protective-silicone-case-for-iphone-4--pid2120981405/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2120981405","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2120981405","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2120981405","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2120981405","xsize":400,"ysize":400}]},"relevancy":108614681362432.000000,"priceSet":{"minPrice":{"value":"$1.70","integral":170},"maxPrice":{"value":"$99.99","integral":9999},"stores":11},"id":2120981405,"categoryId":8515},{"type":"PRODUCT","title":"Iphone® 4 Aerosport Case","description":"Do more than just protect your iPhone 4 with this case bundle from rooCASE. This 3 in 1 bundle include a snap-on case, screen protector and a Nike+ sensor shoe pouch that can be use on most running shoes. Color: Purple Design: Love Provides protection...","manufacturer":"Luxmo","url":{"value":"http://www.bizrate.com/iphone-4-aerosport-case--pid2203798762/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2203798762","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2203798762","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2203798762","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2203798762","xsize":400,"ysize":400}]},"relevancy":96203484168192.000000,"priceSet":{"minPrice":{"value":"$2.49","integral":249},"maxPrice":{"value":"$79.95","integral":7995},"stores":16},"id":2203798762,"categoryId":8515},{"type":"PRODUCT","title":"Case Reflect For Iphone 3G","description":"NCAA iPhone 3G faceplate features the schools primary logo silk screened on the front of the case.","manufacturer":"Griffin","url":{"value":"http://www.bizrate.com/case-reflect-for-iphone-3g--pid1114627445/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=1114627445","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=1114627445","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=1114627445","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=1114627445","xsize":400,"ysize":400}]},"relevancy":84727583211520.000000,"priceSet":{"minPrice":{"value":"$0.69","integral":69},"maxPrice":{"value":"$75.52","integral":7552},"stores":59},"id":1114627445,"categoryId":8515},{"type":"PRODUCT","title":"Infuse Protector Case for iPhone 4 Black","description":"Protect and personalize your iPhone 4 with this front and back image design Protector Case. Form-fitting front and back hard plastic covers Protects your cell phone without adding a lot of bulk Smooth glossy finish Snaps on to the front edges, sides...","manufacturer":"Luxmo","url":{"value":"http://www.bizrate.com/infuse-protector-case-for-iphone-4-black--pid2557462717/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2557462717","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2557462717","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2557462717","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2557462717","xsize":400,"ysize":400}]},"relevancy":80831066406912.000000,"priceSet":{"minPrice":{"value":"$0.59","integral":59},"maxPrice":{"value":"$79.00","integral":7900},"stores":24},"id":2557462717,"categoryId":8515},{"type":"PRODUCT","title":"Dragonfly iPhone 4 Kream Case - Black","description":"DF-0030219 - White, Kream Case for iPhone 4 by Dragon-Fly","url":{"value":"http://www.bizrate.com/dragonfly-iphone-4-kream-case-black--pid2442061740/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2442061740","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2442061740","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2442061740","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2442061740","xsize":400,"ysize":400}]},"relevancy":70900229603328.000000,"priceSet":{"minPrice":{"value":"$1.05","integral":105},"maxPrice":{"value":"$94.49","integral":9449},"stores":30},"id":2442061740,"categoryId":8515},{"type":"PRODUCT","title":"Apple iPhone 3G/3GS Silicone Case (Black)","description":"Snap on Apple iPhone 3G 3GS Synthetic Leather Hardshell Case! Premium Qualtiy Synthetic Leather cover provides style, comfort, and protection to your iPhone 3G & 3GS. It also adds a sophisticated elegance and cool to your fashion. The case allows Quick...","manufacturer":"Luxmo","url":{"value":"http://www.bizrate.com/apple-iphone-3g3gs-silicone-case-black--pid2004746863/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2004746863","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2004746863","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2004746863","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2004746863","xsize":400,"ysize":400}]},"relevancy":65194915004416.000000,"priceSet":{"minPrice":{"value":"$0.01","integral":1},"maxPrice":{"value":"$414.99","integral":41499},"stores":39},"id":2004746863,"categoryId":8515},{"type":"PRODUCT","title":"Otterbox iPhone 4 Defender Case - Black","description":"Your iPhone 4 has become a big part of your life. With FaceTime video, retina display, multitasking, HD video recording and more - you've got a lot to lose. You won't find a tougher case than the OtterBox Defender Series for iPhone 4. This three-layer...","manufacturer":"Universal","url":{"value":"http://www.bizrate.com/otterbox-iphone-4-defender-case-black--pid2584611575/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2584611575","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2584611575","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2584611575","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2584611575","xsize":400,"ysize":400}]},"relevancy":61515478597632.000000,"priceSet":{"minPrice":{"value":"$3.28","integral":328},"maxPrice":{"value":"$110.65","integral":11065},"stores":25},"id":2584611575,"categoryId":8515}],"includedResults":10,"totalResults":2000}},
+{"classification":{"relevancyScore":1000,"searchUrl":{"value":"http://www.bizrate.com/iphone-cases/index__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"}},"products":{"priceSet":{"minPrice":{"value":"$0.01","integral":1},"maxPrice":{"value":"$4,833.99","integral":483399}},"product":[{"type":"PRODUCT","title":"Silicone case for iPhone 3G/ 3GS","description":"Elite Horizontal Leather Pouch for Apple iPhone 3G/3Gs - Premium quality horizontal case for your Apple iPhone 3G/3Gs. This pouch is ideal for the style conscious on the go. This great looking case is made from high-quality leather with classic black...","manufacturer":"Apple","url":{"value":"http://www.bizrate.com/silicone-case-for-iphone-3g-3gs--pid1968262863/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=1968262863","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=1968262863","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=1968262863","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=1968262863","xsize":400,"ysize":400}]},"relevancy":310711221747712.000000,"priceSet":{"minPrice":{"value":"$1.56","integral":156},"maxPrice":{"value":"$29.99","integral":2999},"stores":14},"id":1968262863,"categoryId":8515},{"type":"PRODUCT","title":"Nonslip Checkered Silicone Skin Soft Case for iPhone 4 4G","description":"Specification:Product Name Silicone Skin Case Model for Apple iPhone 4 Color Black Material Soft Silicone Skin Weight 26g Package 1 x Case for Apple iPhone 4 Description:This is a non-OEM product.Accessory Only, Phone is not included.","manufacturer":"H&B","url":{"value":"http://www.bizrate.com/nonslip-checkered-silicone-skin-soft-case-for-iphone-4-4g--pid2534935499/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2534935499","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2534935499","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2534935499","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2534935499","xsize":400,"ysize":400}]},"relevancy":175580930637824.000000,"priceSet":{"minPrice":{"value":"$0.45","integral":45},"maxPrice":{"value":"$194.95","integral":19495},"stores":34},"id":2534935499,"categoryId":8515},{"type":"PRODUCT","title":"Plastic Case for iPhone 4 - Black","description":"Description:Detachable Windmill Type Matte Hard Plastic Case Cover for iPhone 4 (Black / Magenta)Customised your iPhone with this wonderful Plastic Case which is a accessory for your iPhone 4 which is made of high quality and durable plastic, protect","manufacturer":"Griffin","url":{"value":"http://www.bizrate.com/plastic-case-for-iphone-4-black--pid2305624670/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2305624670","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2305624670","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2305624670","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2305624670","xsize":400,"ysize":400}]},"relevancy":132488642953216.000000,"priceSet":{"minPrice":{"value":"$0.99","integral":99},"maxPrice":{"value":"$303.68","integral":30368},"stores":33},"id":2305624670,"categoryId":8515},{"type":"PRODUCT","title":"Protective Silicone Case for iPhone 4","description":"Made of high quality PVC material Protects your iPhone 4 from any scratch and dirt Easy to install and remove, no any tool needed Cut-out design allows user can access all keypad / button and slot without having to remove the case","manufacturer":"Griffin","url":{"value":"http://www.bizrate.com/protective-silicone-case-for-iphone-4--pid2120981405/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2120981405","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2120981405","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2120981405","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2120981405","xsize":400,"ysize":400}]},"relevancy":108614681362432.000000,"priceSet":{"minPrice":{"value":"$1.70","integral":170},"maxPrice":{"value":"$99.99","integral":9999},"stores":11},"id":2120981405,"categoryId":8515},{"type":"PRODUCT","title":"Iphone® 4 Aerosport Case","description":"Do more than just protect your iPhone 4 with this case bundle from rooCASE. This 3 in 1 bundle include a snap-on case, screen protector and a Nike+ sensor shoe pouch that can be use on most running shoes. Color: Purple Design: Love Provides protection...","manufacturer":"Luxmo","url":{"value":"http://www.bizrate.com/iphone-4-aerosport-case--pid2203798762/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2203798762","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2203798762","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2203798762","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2203798762","xsize":400,"ysize":400}]},"relevancy":96203484168192.000000,"priceSet":{"minPrice":{"value":"$2.49","integral":249},"maxPrice":{"value":"$79.95","integral":7995},"stores":16},"id":2203798762,"categoryId":8515},{"type":"PRODUCT","title":"Case Reflect For Iphone 3G","description":"NCAA iPhone 3G faceplate features the schools primary logo silk screened on the front of the case.","manufacturer":"Griffin","url":{"value":"http://www.bizrate.com/case-reflect-for-iphone-3g--pid1114627445/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=1114627445","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=1114627445","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=1114627445","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=1114627445","xsize":400,"ysize":400}]},"relevancy":84727583211520.000000,"priceSet":{"minPrice":{"value":"$0.69","integral":69},"maxPrice":{"value":"$75.52","integral":7552},"stores":59},"id":1114627445,"categoryId":8515},{"type":"PRODUCT","title":"Infuse Protector Case for iPhone 4 Black","description":"Protect and personalize your iPhone 4 with this front and back image design Protector Case. Form-fitting front and back hard plastic covers Protects your cell phone without adding a lot of bulk Smooth glossy finish Snaps on to the front edges, sides...","manufacturer":"Luxmo","url":{"value":"http://www.bizrate.com/infuse-protector-case-for-iphone-4-black--pid2557462717/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2557462717","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2557462717","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2557462717","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2557462717","xsize":400,"ysize":400}]},"relevancy":80831066406912.000000,"priceSet":{"minPrice":{"value":"$0.59","integral":59},"maxPrice":{"value":"$79.00","integral":7900},"stores":24},"id":2557462717,"categoryId":8515},{"type":"PRODUCT","title":"Dragonfly iPhone 4 Kream Case - Black","description":"DF-0030219 - White, Kream Case for iPhone 4 by Dragon-Fly","url":{"value":"http://www.bizrate.com/dragonfly-iphone-4-kream-case-black--pid2442061740/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2442061740","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2442061740","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2442061740","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2442061740","xsize":400,"ysize":400}]},"relevancy":70900229603328.000000,"priceSet":{"minPrice":{"value":"$1.05","integral":105},"maxPrice":{"value":"$94.49","integral":9449},"stores":30},"id":2442061740,"categoryId":8515},{"type":"PRODUCT","title":"Apple iPhone 3G/3GS Silicone Case (Black)","description":"Snap on Apple iPhone 3G 3GS Synthetic Leather Hardshell Case! Premium Qualtiy Synthetic Leather cover provides style, comfort, and protection to your iPhone 3G & 3GS. It also adds a sophisticated elegance and cool to your fashion. The case allows Quick...","manufacturer":"Luxmo","url":{"value":"http://www.bizrate.com/apple-iphone-3g3gs-silicone-case-black--pid2004746863/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2004746863","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2004746863","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2004746863","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2004746863","xsize":400,"ysize":400}]},"relevancy":65194915004416.000000,"priceSet":{"minPrice":{"value":"$0.01","integral":1},"maxPrice":{"value":"$414.99","integral":41499},"stores":39},"id":2004746863,"categoryId":8515},{"type":"PRODUCT","title":"Otterbox iPhone 4 Defender Case - Black","description":"Your iPhone 4 has become a big part of your life. With FaceTime video, retina display, multitasking, HD video recording and more - you've got a lot to lose. You won't find a tougher case than the OtterBox Defender Series for iPhone 4. This three-layer...","manufacturer":"Universal","url":{"value":"http://www.bizrate.com/otterbox-iphone-4-defender-case-black--pid2584611575/compareprices__rf--af1__af_assettype_id--10__af_creative_id--6__af_id--50085__af_placement_id--1.html"},"images":{"image":[{"value":"http://image10.bizrate-images.com/resize?sq=60&uid=2584611575","xsize":60,"ysize":60},{"value":"http://image10.bizrate-images.com/resize?sq=100&uid=2584611575","xsize":100,"ysize":100},{"value":"http://image10.bizrate-images.com/resize?sq=160&uid=2584611575","xsize":160,"ysize":160},{"value":"http://image10.bizrate-images.com/resize?sq=400&uid=2584611575","xsize":400,"ysize":400}]},"relevancy":61515478597632.000000,"priceSet":{"minPrice":{"value":"$3.28","integral":328},"maxPrice":{"value":"$110.65","integral":11065},"stores":25},"id":2584611575,"categoryId":8515}],"includedResults":10,"totalResults":2000}}
+]
+
diff --git a/tests/auto/corelib/json/test2.json b/tests/auto/corelib/json/test2.json
new file mode 100644
index 0000000000..303f879b62
--- /dev/null
+++ b/tests/auto/corelib/json/test2.json
@@ -0,0 +1 @@
+{ "foo": ["ab"] }
diff --git a/tests/auto/corelib/json/test3.json b/tests/auto/corelib/json/test3.json
new file mode 100644
index 0000000000..48cb29a47f
--- /dev/null
+++ b/tests/auto/corelib/json/test3.json
@@ -0,0 +1,15 @@
+{
+ "firstName": "John",
+ "lastName" : "Smith",
+ "age" : 25,
+ "address" : {
+ "streetAddress": "21 2nd Street",
+ "city" : "New York",
+ "state" : "NY",
+ "postalCode" : "10021"
+ },
+ "phoneNumber": [
+ { "type" : "home", "number": "212 555-1234" },
+ { "type" : "fax", "number": "646 555-4567" }
+ ]
+}
diff --git a/tests/auto/corelib/json/tst_qtjson.cpp b/tests/auto/corelib/json/tst_qtjson.cpp
new file mode 100644
index 0000000000..e35f645ef6
--- /dev/null
+++ b/tests/auto/corelib/json/tst_qtjson.cpp
@@ -0,0 +1,1589 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <QtTest>
+#include "qjsonarray.h"
+#include "qjsonobject.h"
+#include "qjsonvalue.h"
+#include "qjsondocument.h"
+
+class TestQtJson: public QObject
+{
+ Q_OBJECT
+public:
+ TestQtJson(QObject *parent = 0);
+
+private Q_SLOTS:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+ void testValueSimple();
+ void testNumbers();
+
+ void testObjectSimple();
+ void testObjectSmallKeys();
+ void testArraySimple();
+ void testValueObject();
+ void testValueArray();
+ void testObjectNested();
+ void testArrayNested();
+ void testArrayNestedEmpty();
+ void testObjectNestedEmpty();
+
+ void testValueRef();
+ void testObjectIteration();
+ void testArrayIteration();
+
+ void testObjectFind();
+
+ void testDocument();
+
+ void nullValues();
+ void nullArrays();
+ void nullObject();
+
+ void keySorting();
+
+ void undefinedValues();
+
+ void fromVariantMap();
+ void toVariantMap();
+ void toVariantList();
+
+ void toJson();
+ void fromJson();
+ void fromBinary();
+ void toAndFromBinary_data();
+ void toAndFromBinary();
+ void parseNumbers();
+ void parseStrings();
+ void parseDuplicateKeys();
+ void testParser();
+
+ void compactArray();
+ void compactObject();
+
+ void validation();
+
+ void assignToDocument();
+
+ void testDuplicateKeys();
+ void testCompaction();
+ void testDebugStream();
+ void testCompactionError();
+};
+
+TestQtJson::TestQtJson(QObject *parent) : QObject(parent)
+{
+}
+
+void TestQtJson::initTestCase()
+{
+}
+
+void TestQtJson::cleanupTestCase()
+{
+}
+
+void TestQtJson::init()
+{
+}
+
+void TestQtJson::cleanup()
+{
+}
+
+void TestQtJson::testValueSimple()
+{
+ QJsonValue value(true);
+ QCOMPARE(value.type(), QJsonValue::Bool);
+ QCOMPARE(value.toDouble(), 0.);
+ QCOMPARE(value.toString(), QString());
+ QCOMPARE(value.toBool(), true);
+ QCOMPARE(value.toObject(), QJsonObject());
+ QCOMPARE(value.toArray(), QJsonArray());
+
+ value = 999.;
+ QCOMPARE(value.type(), QJsonValue::Double);
+ QCOMPARE(value.toDouble(), 999.);
+ QCOMPARE(value.toString(), QString());
+ QCOMPARE(value.toBool(), false);
+ QCOMPARE(value.toObject(), QJsonObject());
+ QCOMPARE(value.toArray(), QJsonArray());
+
+ value = QLatin1String("test");
+ QCOMPARE(value.toDouble(), 0.);
+ QCOMPARE(value.toString(), QLatin1String("test"));
+ QCOMPARE(value.toBool(), false);
+ QCOMPARE(value.toObject(), QJsonObject());
+ QCOMPARE(value.toArray(), QJsonArray());
+
+ value = true;
+ QCOMPARE(value.toDouble(), 0.);
+ QCOMPARE(value.toString(), QString());
+ QCOMPARE(value.toBool(), true);
+ QCOMPARE(value.toObject(), QJsonObject());
+ QCOMPARE(value.toArray(), QJsonArray());
+
+ value = 999.;
+ QCOMPARE(value.toDouble(), 999.);
+ QCOMPARE(value.toString(), QString());
+ QCOMPARE(value.toBool(), false);
+ QCOMPARE(value.toObject(), QJsonObject());
+ QCOMPARE(value.toArray(), QJsonArray());
+
+}
+
+void TestQtJson::testNumbers()
+{
+ {
+ int numbers[] = {
+ 0,
+ -1,
+ 1,
+ (1<<26),
+ (1<<27),
+ (1<<28),
+ -(1<<26),
+ -(1<<27),
+ -(1<<28),
+ (1<<26) - 1,
+ (1<<27) - 1,
+ (1<<28) - 1,
+ -((1<<26) - 1),
+ -((1<<27) - 1),
+ -((1<<28) - 1)
+ };
+ int n = sizeof(numbers)/sizeof(int);
+
+ QJsonArray array;
+ for (int i = 0; i < n; ++i)
+ array.append((double)numbers[i]);
+ for (int i = 0; i < array.size(); ++i) {
+ QCOMPARE(array.at(i).type(), QJsonValue::Double);
+ QCOMPARE(array.at(i).toDouble(), (double)numbers[i]);
+ }
+ }
+
+ {
+ double numbers[] = {
+ 0,
+ -1,
+ 1,
+ (1<<26),
+ (1<<27),
+ (1<<28),
+ -(1<<26),
+ -(1<<27),
+ -(1<<28),
+ (1<<26) - 1,
+ (1<<27) - 1,
+ (1<<28) - 1,
+ -((1<<26) - 1),
+ -((1<<27) - 1),
+ -((1<<28) - 1),
+ 1.1,
+ 0.1,
+ -0.1,
+ -1.1,
+ 1e200,
+ -1e200
+ };
+ int n = sizeof(numbers)/sizeof(double);
+
+ QJsonArray array;
+ for (int i = 0; i < n; ++i)
+ array.append(numbers[i]);
+ for (int i = 0; i < array.size(); ++i) {
+ QCOMPARE(array.at(i).type(), QJsonValue::Double);
+ QCOMPARE(array.at(i).toDouble(), numbers[i]);
+ }
+ }
+
+}
+
+void TestQtJson::testObjectSimple()
+{
+ QJsonObject object;
+ object.insert("number", 999.);
+ QCOMPARE(object.value("number").type(), QJsonValue::Double);
+ QCOMPARE(object.value("number").toDouble(), 999.);
+ object.insert("string", QString::fromLatin1("test"));
+ QCOMPARE(object.value("string").type(), QJsonValue::String);
+ QCOMPARE(object.value("string").toString(), QString("test"));
+ object.insert("boolean", true);
+ QCOMPARE(object.value("boolean").toBool(), true);
+
+ QStringList keys = object.keys();
+ QVERIFY2(keys.contains("number"), "key number not found");
+ QVERIFY2(keys.contains("string"), "key string not found");
+ QVERIFY2(keys.contains("boolean"), "key boolean not found");
+
+ // if we put a JsonValue into the JsonObject and retreive
+ // it, it should be identical.
+ QJsonValue value(QLatin1String("foo"));
+ object.insert("value", value);
+ QCOMPARE(object.value("value"), value);
+
+ int size = object.size();
+ object.remove("boolean");
+ QCOMPARE(object.size(), size - 1);
+ QVERIFY2(!object.contains("boolean"), "key boolean should have been removed");
+
+ QJsonValue taken = object.take("value");
+// QCOMPARE(taken, value);
+ QVERIFY2(!object.contains("value"), "key value should have been removed");
+
+ QString before = object.value("string").toString();
+ object.insert("string", QString::fromLatin1("foo"));
+ QVERIFY2(object.value("string").toString() != before, "value should have been updated");
+}
+
+void TestQtJson::testObjectSmallKeys()
+{
+ QJsonObject data1;
+ data1.insert(QStringLiteral("1"), 123);
+ QVERIFY(data1.contains(QStringLiteral("1")));
+ QCOMPARE(data1.value(QStringLiteral("1")).toDouble(), (double)123);
+ data1.insert(QStringLiteral("12"), 133);
+ QCOMPARE(data1.value(QStringLiteral("12")).toDouble(), (double)133);
+ QVERIFY(data1.contains(QStringLiteral("12")));
+ data1.insert(QStringLiteral("123"), 323);
+ QCOMPARE(data1.value(QStringLiteral("12")).toDouble(), (double)133);
+ QVERIFY(data1.contains(QStringLiteral("123")));
+ QCOMPARE(data1.value(QStringLiteral("123")).type(), QJsonValue::Double);
+ QCOMPARE(data1.value(QStringLiteral("123")).toDouble(), (double)323);
+}
+
+void TestQtJson::testArraySimple()
+{
+ QJsonArray array;
+ array.append(999.);
+ array.append(QString::fromLatin1("test"));
+ array.append(true);
+
+ QJsonValue val = array.at(0);
+ QCOMPARE(array.at(0).toDouble(), 999.);
+ QCOMPARE(array.at(1).toString(), QString("test"));
+ QCOMPARE(array.at(2).toBool(), true);
+ QCOMPARE(array.size(), 3);
+
+ // if we put a JsonValue into the JsonArray and retreive
+ // it, it should be identical.
+ QJsonValue value(QLatin1String("foo"));
+ array.append(value);
+ QCOMPARE(array.at(3), value);
+
+ int size = array.size();
+ array.removeAt(2);
+ --size;
+ QCOMPARE(array.size(), size);
+
+ QJsonValue taken = array.takeAt(0);
+ --size;
+ QCOMPARE(taken.toDouble(), 999.);
+ QCOMPARE(array.size(), size);
+
+ // check whether null values work
+ array.append(QJsonValue());
+ ++size;
+ QCOMPARE(array.size(), size);
+ QCOMPARE(array.last().type(), QJsonValue::Null);
+ QCOMPARE(array.last(), QJsonValue());
+
+ QCOMPARE(array.first().type(), QJsonValue::String);
+ QCOMPARE(array.first(), QJsonValue(QLatin1String("test")));
+
+ array.prepend(false);
+ QCOMPARE(array.first().type(), QJsonValue::Bool);
+ QCOMPARE(array.first(), QJsonValue(false));
+
+ QCOMPARE(array.at(-1), QJsonValue(QJsonValue::Undefined));
+ QCOMPARE(array.at(array.size()), QJsonValue(QJsonValue::Undefined));
+
+ array.replace(0, -555.);
+ QCOMPARE(array.first().type(), QJsonValue::Double);
+ QCOMPARE(array.first(), QJsonValue(-555.));
+ QCOMPARE(array.at(1).type(), QJsonValue::String);
+ QCOMPARE(array.at(1), QJsonValue(QLatin1String("test")));
+}
+
+void TestQtJson::testValueObject()
+{
+ QJsonObject object;
+ object.insert("number", 999.);
+ object.insert("string", QLatin1String("test"));
+ object.insert("boolean", true);
+
+ QJsonValue value(object);
+
+ // if we don't modify the original JsonObject, toObject()
+ // on the JsonValue should return the same object (non-detached).
+ QCOMPARE(value.toObject(), object);
+
+ // if we modify the original object, it should detach
+ object.insert("test", QJsonValue(QLatin1String("test")));
+ QVERIFY2(value.toObject() != object, "object should have detached");
+}
+
+void TestQtJson::testValueArray()
+{
+ QJsonArray array;
+ array.append(999.);
+ array.append(QLatin1String("test"));
+ array.append(true);
+
+ QJsonValue value(array);
+
+ // if we don't modify the original JsonArray, toArray()
+ // on the JsonValue should return the same object (non-detached).
+ QCOMPARE(value.toArray(), array);
+
+ // if we modify the original array, it should detach
+ array.append(QLatin1String("test"));
+ QVERIFY2(value.toArray() != array, "array should have detached");
+}
+
+void TestQtJson::testObjectNested()
+{
+ QJsonObject inner, outer;
+ inner.insert("number", 999.);
+ outer.insert("nested", inner);
+
+ // if we don't modify the original JsonObject, value()
+ // should return the same object (non-detached).
+ QJsonObject value = outer.value("nested").toObject();
+ QCOMPARE(value, inner);
+ QCOMPARE(value.value("number").toDouble(), 999.);
+
+ // if we modify the original object, it should detach and not
+ // affect the nested object
+ inner.insert("number", 555.);
+ value = outer.value("nested").toObject();
+ QVERIFY2(inner.value("number").toDouble() != value.value("number").toDouble(),
+ "object should have detached");
+
+ // array in object
+ QJsonArray array;
+ array.append(123.);
+ array.append(456.);
+ outer.insert("array", array);
+ QCOMPARE(outer.value("array").toArray(), array);
+ QCOMPARE(outer.value("array").toArray().at(1).toDouble(), 456.);
+
+ // two deep objects
+ QJsonObject twoDeep;
+ twoDeep.insert("boolean", true);
+ inner.insert("nested", twoDeep);
+ outer.insert("nested", inner);
+ QCOMPARE(outer.value("nested").toObject().value("nested").toObject(), twoDeep);
+ QCOMPARE(outer.value("nested").toObject().value("nested").toObject().value("boolean").toBool(),
+ true);
+}
+
+void TestQtJson::testArrayNested()
+{
+ QJsonArray inner, outer;
+ inner.append(999.);
+ outer.append(inner);
+
+ // if we don't modify the original JsonArray, value()
+ // should return the same array (non-detached).
+ QJsonArray value = outer.at(0).toArray();
+ QCOMPARE(value, inner);
+ QCOMPARE(value.at(0).toDouble(), 999.);
+
+ // if we modify the original array, it should detach and not
+ // affect the nested array
+ inner.append(555.);
+ value = outer.at(0).toArray();
+ QVERIFY2(inner.size() != value.size(), "array should have detached");
+
+ // objects in arrays
+ QJsonObject object;
+ object.insert("boolean", true);
+ outer.append(object);
+ QCOMPARE(outer.last().toObject(), object);
+ QCOMPARE(outer.last().toObject().value("boolean").toBool(), true);
+
+ // two deep arrays
+ QJsonArray twoDeep;
+ twoDeep.append(QJsonValue(QString::fromLatin1("nested")));
+ inner.append(twoDeep);
+ outer.append(inner);
+ QCOMPARE(outer.last().toArray().last().toArray(), twoDeep);
+ QCOMPARE(outer.last().toArray().last().toArray().at(0).toString(), QString("nested"));
+}
+
+void TestQtJson::testArrayNestedEmpty()
+{
+ QJsonObject object;
+ QJsonArray inner;
+ object.insert("inner", inner);
+ QJsonValue val = object.value("inner");
+ QJsonArray value = object.value("inner").toArray();
+ QCOMPARE(value.size(), 0);
+ QCOMPARE(value, inner);
+ QCOMPARE(value.size(), 0);
+ object.insert("count", 0.);
+ QCOMPARE(object.value("inner").toArray().size(), 0);
+ QVERIFY(object.value("inner").toArray().isEmpty());
+ QJsonDocument(object).toBinaryData();
+ QCOMPARE(object.value("inner").toArray().size(), 0);
+}
+
+void TestQtJson::testObjectNestedEmpty()
+{
+ QJsonObject object;
+ QJsonObject inner;
+ QJsonObject inner2;
+ object.insert("inner", inner);
+ object.insert("inner2", inner2);
+ QJsonObject value = object.value("inner").toObject();
+ QCOMPARE(value.size(), 0);
+ QCOMPARE(value, inner);
+ QCOMPARE(value.size(), 0);
+ object.insert("count", 0.);
+ QCOMPARE(object.value("inner").toObject().size(), 0);
+ QCOMPARE(object.value("inner").type(), QJsonValue::Object);
+ QJsonDocument(object).toBinaryData();
+ QVERIFY(object.value("inner").toObject().isEmpty());
+ QVERIFY(object.value("inner2").toObject().isEmpty());
+ QJsonDocument doc = QJsonDocument::fromBinaryData(QJsonDocument(object).toBinaryData());
+ QVERIFY(!doc.isNull());
+ QJsonObject reconstituted(doc.object());
+ QCOMPARE(reconstituted.value("inner").toObject().size(), 0);
+ QCOMPARE(reconstituted.value("inner").type(), QJsonValue::Object);
+ QCOMPARE(reconstituted.value("inner2").type(), QJsonValue::Object);
+}
+
+void TestQtJson::testValueRef()
+{
+ QJsonArray array;
+ array.append(1.);
+ array.append(2.);
+ array.append(3.);
+ array[1] = false;
+
+ QCOMPARE(array.size(), 3);
+ QCOMPARE(array.at(0).toDouble(), 1.);
+ QCOMPARE(array.at(2).toDouble(), 3.);
+ QCOMPARE(array.at(1).type(), QJsonValue::Bool);
+ QCOMPARE(array.at(1).toBool(), false);
+
+ QJsonObject object;
+ object[QLatin1String("key")] = true;
+ QCOMPARE(object.size(), 1);
+ object.insert(QLatin1String("null"), QJsonValue());
+ QCOMPARE(object.value(QLatin1String("null")), QJsonValue());
+ object[QLatin1String("null")] = 100.;
+ QCOMPARE(object.value(QLatin1String("null")).type(), QJsonValue::Double);
+ QJsonValue val = object[QLatin1String("null")];
+ QCOMPARE(val.toDouble(), 100.);
+ QCOMPARE(object.size(), 2);
+}
+
+void TestQtJson::testObjectIteration()
+{
+ QJsonObject object;
+ for (int i = 0; i < 10; ++i)
+ object[QString::number(i)] = (double)i;
+
+ QCOMPARE(object.size(), 10);
+
+ for (QJsonObject::iterator it = object.begin(); it != object.end(); ++it) {
+ QJsonValue value = it.value();
+ QCOMPARE((double)it.key().toInt(), value.toDouble());
+ }
+
+ {
+ QJsonObject object2 = object;
+ QVERIFY(object == object2);
+
+ QJsonValue val = *object2.begin();
+ object2.erase(object2.begin());
+ QCOMPARE(object.size(), 10);
+ QCOMPARE(object2.size(), 9);
+
+ for (QJsonObject::const_iterator it = object2.constBegin(); it != object2.constEnd(); ++it) {
+ QJsonValue value = it.value();
+ QVERIFY(it.value() != val);
+ QCOMPARE((double)it.key().toInt(), value.toDouble());
+ }
+ }
+
+ {
+ QJsonObject::Iterator it = object.begin();
+ it += 5;
+ QCOMPARE(QJsonValue(it.value()).toDouble(), 5.);
+ it -= 3;
+ QCOMPARE(QJsonValue(it.value()).toDouble(), 2.);
+ QJsonObject::Iterator it2 = it + 5;
+ QCOMPARE(QJsonValue(it2.value()).toDouble(), 7.);
+ it2 = it - 1;
+ QCOMPARE(QJsonValue(it2.value()).toDouble(), 1.);
+ }
+
+ {
+ QJsonObject::ConstIterator it = object.constBegin();
+ it += 5;
+ QCOMPARE(QJsonValue(it.value()).toDouble(), 5.);
+ it -= 3;
+ QCOMPARE(QJsonValue(it.value()).toDouble(), 2.);
+ QJsonObject::ConstIterator it2 = it + 5;
+ QCOMPARE(QJsonValue(it2.value()).toDouble(), 7.);
+ it2 = it - 1;
+ QCOMPARE(QJsonValue(it2.value()).toDouble(), 1.);
+ }
+
+ QJsonObject::Iterator it = object.begin();
+ while (!object.isEmpty())
+ it = object.erase(it);
+ QCOMPARE(object.size() , 0);
+ QVERIFY(it == object.end());
+}
+
+void TestQtJson::testArrayIteration()
+{
+ QJsonArray array;
+ for (int i = 0; i < 10; ++i)
+ array.append(i);
+
+ QCOMPARE(array.size(), 10);
+
+ int i = 0;
+ for (QJsonArray::iterator it = array.begin(); it != array.end(); ++it, ++i) {
+ QJsonValue value = (*it);
+ QCOMPARE((double)i, value.toDouble());
+ }
+
+ {
+ QJsonArray array2 = array;
+ QVERIFY(array == array2);
+
+ QJsonValue val = *array2.begin();
+ array2.erase(array2.begin());
+ QCOMPARE(array.size(), 10);
+ QCOMPARE(array2.size(), 9);
+
+ i = 1;
+ for (QJsonArray::const_iterator it = array2.constBegin(); it != array2.constEnd(); ++it, ++i) {
+ QJsonValue value = (*it);
+ QCOMPARE((double)i, value.toDouble());
+ }
+ }
+
+ {
+ QJsonArray::Iterator it = array.begin();
+ it += 5;
+ QCOMPARE(QJsonValue((*it)).toDouble(), 5.);
+ it -= 3;
+ QCOMPARE(QJsonValue((*it)).toDouble(), 2.);
+ QJsonArray::Iterator it2 = it + 5;
+ QCOMPARE(QJsonValue(*it2).toDouble(), 7.);
+ it2 = it - 1;
+ QCOMPARE(QJsonValue(*it2).toDouble(), 1.);
+ }
+
+ {
+ QJsonArray::ConstIterator it = array.constBegin();
+ it += 5;
+ QCOMPARE(QJsonValue((*it)).toDouble(), 5.);
+ it -= 3;
+ QCOMPARE(QJsonValue((*it)).toDouble(), 2.);
+ QJsonArray::ConstIterator it2 = it + 5;
+ QCOMPARE(QJsonValue(*it2).toDouble(), 7.);
+ it2 = it - 1;
+ QCOMPARE(QJsonValue(*it2).toDouble(), 1.);
+ }
+
+ QJsonArray::Iterator it = array.begin();
+ while (!array.isEmpty())
+ it = array.erase(it);
+ QCOMPARE(array.size() , 0);
+ QVERIFY(it == array.end());
+}
+
+void TestQtJson::testObjectFind()
+{
+ QJsonObject object;
+ for (int i = 0; i < 10; ++i)
+ object[QString::number(i)] = i;
+
+ QCOMPARE(object.size(), 10);
+
+ QJsonObject::iterator it = object.find(QLatin1String("1"));
+ QCOMPARE((*it).toDouble(), 1.);
+ it = object.find(QLatin1String("11"));
+ QVERIFY((*it).type() == QJsonValue::Undefined);
+ QVERIFY(it == object.end());
+
+ QJsonObject::const_iterator cit = object.constFind(QLatin1String("1"));
+ QCOMPARE((*cit).toDouble(), 1.);
+ cit = object.constFind(QLatin1String("11"));
+ QVERIFY((*it).type() == QJsonValue::Undefined);
+ QVERIFY(it == object.end());
+}
+
+void TestQtJson::testDocument()
+{
+ QJsonDocument doc;
+ QCOMPARE(doc.isEmpty(), true);
+ QCOMPARE(doc.isArray(), false);
+ QCOMPARE(doc.isObject(), false);
+
+ QJsonObject object;
+ doc.setObject(object);
+ QCOMPARE(doc.isEmpty(), false);
+ QCOMPARE(doc.isArray(), false);
+ QCOMPARE(doc.isObject(), true);
+
+ object.insert(QLatin1String("Key"), QLatin1String("Value"));
+ doc.setObject(object);
+ QCOMPARE(doc.isEmpty(), false);
+ QCOMPARE(doc.isArray(), false);
+ QCOMPARE(doc.isObject(), true);
+ QVERIFY(doc.object() == object);
+ QVERIFY(doc.array() == QJsonArray());
+
+ doc = QJsonDocument();
+ QCOMPARE(doc.isEmpty(), true);
+ QCOMPARE(doc.isArray(), false);
+ QCOMPARE(doc.isObject(), false);
+
+ QJsonArray array;
+ doc.setArray(array);
+ QCOMPARE(doc.isEmpty(), false);
+ QCOMPARE(doc.isArray(), true);
+ QCOMPARE(doc.isObject(), false);
+
+ array.append(QLatin1String("Value"));
+ doc.setArray(array);
+ QCOMPARE(doc.isEmpty(), false);
+ QCOMPARE(doc.isArray(), true);
+ QCOMPARE(doc.isObject(), false);
+ QVERIFY(doc.array() == array);
+ QVERIFY(doc.object() == QJsonObject());
+
+ QJsonObject outer;
+ outer.insert(QLatin1String("outerKey"), 22);
+ QJsonObject inner;
+ inner.insert(QLatin1String("innerKey"), 42);
+ outer.insert(QLatin1String("innter"), inner);
+ QJsonArray innerArray;
+ innerArray.append(23);
+ outer.insert(QLatin1String("innterArray"), innerArray);
+
+ QJsonDocument doc2(outer.value(QLatin1String("innter")).toObject());
+ QVERIFY(doc2.object().contains(QLatin1String("innerKey")));
+ QCOMPARE(doc2.object().value(QLatin1String("innerKey")), QJsonValue(42));
+
+ QJsonDocument doc3;
+ doc3.setObject(outer.value(QLatin1String("innter")).toObject());
+ QCOMPARE(doc3.isArray(), false);
+ QCOMPARE(doc3.isObject(), true);
+ QVERIFY(doc3.object().contains(QLatin1String("innerKey")));
+ QCOMPARE(doc3.object().value(QLatin1String("innerKey")), QJsonValue(42));
+
+ QJsonDocument doc4(outer.value(QLatin1String("innterArray")).toArray());
+ QCOMPARE(doc4.isArray(), true);
+ QCOMPARE(doc4.isObject(), false);
+ QCOMPARE(doc4.array().size(), 1);
+ QCOMPARE(doc4.array().at(0), QJsonValue(23));
+
+ QJsonDocument doc5;
+ doc5.setArray(outer.value(QLatin1String("innterArray")).toArray());
+ QCOMPARE(doc5.isArray(), true);
+ QCOMPARE(doc5.isObject(), false);
+ QCOMPARE(doc5.array().size(), 1);
+ QCOMPARE(doc5.array().at(0), QJsonValue(23));
+}
+
+void TestQtJson::nullValues()
+{
+ QJsonArray array;
+ array.append(QJsonValue());
+
+ QCOMPARE(array.size(), 1);
+ QCOMPARE(array.at(0), QJsonValue());
+
+ QJsonObject object;
+ object.insert(QString("key"), QJsonValue());
+ QCOMPARE(object.contains("key"), true);
+ QCOMPARE(object.size(), 1);
+ QCOMPARE(object.value("key"), QJsonValue());
+}
+
+void TestQtJson::nullArrays()
+{
+ QJsonArray nullArray;
+ QJsonArray nonNull;
+ nonNull.append(QLatin1String("bar"));
+
+ QCOMPARE(nullArray, QJsonArray());
+ QVERIFY(nullArray != nonNull);
+ QVERIFY(nonNull != nullArray);
+
+ QCOMPARE(nullArray.size(), 0);
+ QCOMPARE(nullArray.takeAt(0), QJsonValue(QJsonValue::Undefined));
+ QCOMPARE(nullArray.first(), QJsonValue(QJsonValue::Undefined));
+ QCOMPARE(nullArray.last(), QJsonValue(QJsonValue::Undefined));
+ nullArray.removeAt(0);
+ nullArray.removeAt(-1);
+
+ nullArray.append(QString("bar"));
+ nullArray.removeAt(0);
+
+ QCOMPARE(nullArray.size(), 0);
+ QCOMPARE(nullArray.takeAt(0), QJsonValue(QJsonValue::Undefined));
+ QCOMPARE(nullArray.first(), QJsonValue(QJsonValue::Undefined));
+ QCOMPARE(nullArray.last(), QJsonValue(QJsonValue::Undefined));
+ nullArray.removeAt(0);
+ nullArray.removeAt(-1);
+}
+
+void TestQtJson::nullObject()
+{
+ QJsonObject nullObject;
+ QJsonObject nonNull;
+ nonNull.insert(QLatin1String("foo"), QLatin1String("bar"));
+
+ QCOMPARE(nullObject, QJsonObject());
+ QVERIFY(nullObject != nonNull);
+ QVERIFY(nonNull != nullObject);
+
+ QCOMPARE(nullObject.size(), 0);
+ QCOMPARE(nullObject.keys(), QStringList());
+ nullObject.remove("foo");
+ QCOMPARE(nullObject, QJsonObject());
+ QCOMPARE(nullObject.take("foo"), QJsonValue(QJsonValue::Undefined));
+ QCOMPARE(nullObject.contains("foo"), false);
+
+ nullObject.insert("foo", QString("bar"));
+ nullObject.remove("foo");
+
+ QCOMPARE(nullObject.size(), 0);
+ QCOMPARE(nullObject.keys(), QStringList());
+ nullObject.remove("foo");
+ QCOMPARE(nullObject, QJsonObject());
+ QCOMPARE(nullObject.take("foo"), QJsonValue(QJsonValue::Undefined));
+ QCOMPARE(nullObject.contains("foo"), false);
+}
+
+void TestQtJson::keySorting()
+{
+ const char *json = "{ \"B\": true, \"A\": false }";
+ QJsonDocument doc = QJsonDocument::fromJson(json);
+
+ QCOMPARE(doc.isObject(), true);
+
+ QJsonObject o = doc.object();
+ QCOMPARE(o.size(), 2);
+ QJsonObject::const_iterator it = o.constBegin();
+ QCOMPARE(it.key(), QLatin1String("A"));
+ ++it;
+ QCOMPARE(it.key(), QLatin1String("B"));
+}
+
+void TestQtJson::undefinedValues()
+{
+ QJsonObject object;
+ object.insert("Key", QJsonValue(QJsonValue::Undefined));
+ QCOMPARE(object.size(), 0);
+
+ object.insert("Key", QLatin1String("Value"));
+ QCOMPARE(object.size(), 1);
+ QCOMPARE(object.value("Key").type(), QJsonValue::String);
+ QCOMPARE(object.value("foo").type(), QJsonValue::Undefined);
+ object.insert("Key", QJsonValue(QJsonValue::Undefined));
+ QCOMPARE(object.size(), 0);
+ QCOMPARE(object.value("Key").type(), QJsonValue::Undefined);
+
+ QJsonArray array;
+ array.append(QJsonValue(QJsonValue::Undefined));
+ QCOMPARE(array.size(), 1);
+ QCOMPARE(array.at(0).type(), QJsonValue::Null);
+
+ QCOMPARE(array.at(1).type(), QJsonValue::Undefined);
+ QCOMPARE(array.at(-1).type(), QJsonValue::Undefined);
+}
+
+
+void TestQtJson::fromVariantMap()
+{
+ QVariantMap map;
+ map.insert(QLatin1String("key1"), QLatin1String("value1"));
+ map.insert(QLatin1String("key2"), QLatin1String("value2"));
+ QJsonObject object = QJsonObject::fromVariantMap(map);
+ QCOMPARE(object.size(), 2);
+ QCOMPARE(object.value(QLatin1String("key1")), QJsonValue(QLatin1String("value1")));
+ QCOMPARE(object.value(QLatin1String("key2")), QJsonValue(QLatin1String("value2")));
+
+ QVariantList list;
+ list.append(true);
+ list.append(QVariant());
+ list.append(999.);
+ list.append(QLatin1String("foo"));
+ map.insert("list", list);
+ object = QJsonObject::fromVariantMap(map);
+ QCOMPARE(object.size(), 3);
+ QCOMPARE(object.value(QLatin1String("key1")), QJsonValue(QLatin1String("value1")));
+ QCOMPARE(object.value(QLatin1String("key2")), QJsonValue(QLatin1String("value2")));
+ QCOMPARE(object.value(QLatin1String("list")).type(), QJsonValue::Array);
+ QJsonArray array = object.value(QLatin1String("list")).toArray();
+ QCOMPARE(array.size(), 4);
+ QCOMPARE(array.at(0).type(), QJsonValue::Bool);
+ QCOMPARE(array.at(0).toBool(), true);
+ QCOMPARE(array.at(1).type(), QJsonValue::Null);
+ QCOMPARE(array.at(2).type(), QJsonValue::Double);
+ QCOMPARE(array.at(2).toDouble(), 999.);
+ QCOMPARE(array.at(3).type(), QJsonValue::String);
+ QCOMPARE(array.at(3).toString(), QLatin1String("foo"));
+}
+
+void TestQtJson::toVariantMap()
+{
+ QJsonObject object;
+ QVariantMap map = object.toVariantMap();
+ QVERIFY(map.isEmpty());
+
+ object.insert("Key", QString("Value"));
+ object.insert("null", QJsonValue());
+ QJsonArray array;
+ array.append(true);
+ array.append(999.);
+ array.append(QLatin1String("string"));
+ array.append(QJsonValue());
+ object.insert("Array", array);
+
+ map = object.toVariantMap();
+
+ QCOMPARE(map.size(), 3);
+ QCOMPARE(map.value("Key"), QVariant(QString("Value")));
+ QCOMPARE(map.value("null"), QVariant());
+ QCOMPARE(map.value("Array").type(), QVariant::List);
+ QVariantList list = map.value("Array").toList();
+ QCOMPARE(list.size(), 4);
+ QCOMPARE(list.at(0), QVariant(true));
+ QCOMPARE(list.at(1), QVariant(999.));
+ QCOMPARE(list.at(2), QVariant(QLatin1String("string")));
+ QCOMPARE(list.at(3), QVariant());
+}
+
+void TestQtJson::toVariantList()
+{
+ QJsonArray array;
+ QVariantList list = array.toVariantList();
+ QVERIFY(list.isEmpty());
+
+ array.append(QString("Value"));
+ array.append(QJsonValue());
+ QJsonArray inner;
+ inner.append(true);
+ inner.append(999.);
+ inner.append(QLatin1String("string"));
+ inner.append(QJsonValue());
+ array.append(inner);
+
+ list = array.toVariantList();
+
+ QCOMPARE(list.size(), 3);
+ QCOMPARE(list[0], QVariant(QString("Value")));
+ QCOMPARE(list[1], QVariant());
+ QCOMPARE(list[2].type(), QVariant::List);
+ QVariantList vlist = list[2].toList();
+ QCOMPARE(vlist.size(), 4);
+ QCOMPARE(vlist.at(0), QVariant(true));
+ QCOMPARE(vlist.at(1), QVariant(999.));
+ QCOMPARE(vlist.at(2), QVariant(QLatin1String("string")));
+ QCOMPARE(vlist.at(3), QVariant());
+}
+
+void TestQtJson::toJson()
+{
+ QJsonObject object;
+ object.insert("\\Key\n", QString("Value"));
+ object.insert("null", QJsonValue());
+ QJsonArray array;
+ array.append(true);
+ array.append(999.);
+ array.append(QLatin1String("string"));
+ array.append(QJsonValue());
+ array.append(QLatin1String("\\\a\n\r\b\tabcABC\""));
+ object.insert("Array", array);
+
+ QByteArray json = QJsonDocument(object).toJson();
+
+ QByteArray expected =
+ "{\n"
+ " \"Array\": [\n"
+ " true,\n"
+ " 999,\n"
+ " \"string\",\n"
+ " null,\n"
+ " \"\\\\\\u0007\\n\\r\\b\\tabcABC\\\"\"\n"
+ " ],\n"
+ " \"\\\\Key\\n\": \"Value\",\n"
+ " \"null\": null\n"
+ "}\n";
+ QCOMPARE(json, expected);
+
+ QJsonDocument doc;
+ doc.setObject(object);
+ json = doc.toJson();
+ QCOMPARE(json, expected);
+
+ doc.setArray(array);
+ json = doc.toJson();
+ expected =
+ "[\n"
+ " true,\n"
+ " 999,\n"
+ " \"string\",\n"
+ " null,\n"
+ " \"\\\\\\u0007\\n\\r\\b\\tabcABC\\\"\"\n"
+ "]\n";
+ QCOMPARE(json, expected);
+}
+
+void TestQtJson::fromJson()
+{
+ {
+ QByteArray json = "[\n true\n]\n";
+ QJsonDocument doc = QJsonDocument::fromJson(json);
+ QVERIFY(!doc.isEmpty());
+ QCOMPARE(doc.isArray(), true);
+ QCOMPARE(doc.isObject(), false);
+ QJsonArray array = doc.array();
+ QCOMPARE(array.size(), 1);
+ QCOMPARE(array.at(0).type(), QJsonValue::Bool);
+ QCOMPARE(array.at(0).toBool(), true);
+ QCOMPARE(doc.toJson(), json);
+ }
+ {
+ QByteArray json = "[]";
+ QJsonDocument doc = QJsonDocument::fromJson(json);
+ QVERIFY(!doc.isEmpty());
+ QCOMPARE(doc.isArray(), true);
+ QCOMPARE(doc.isObject(), false);
+ QJsonArray array = doc.array();
+ QCOMPARE(array.size(), 0);
+ }
+ {
+ QByteArray json = "{}";
+ QJsonDocument doc = QJsonDocument::fromJson(json);
+ QVERIFY(!doc.isEmpty());
+ QCOMPARE(doc.isArray(), false);
+ QCOMPARE(doc.isObject(), true);
+ QJsonObject object = doc.object();
+ QCOMPARE(object.size(), 0);
+ }
+ {
+ QByteArray json = "{\n \"Key\": true\n}\n";
+ QJsonDocument doc = QJsonDocument::fromJson(json);
+ QVERIFY(!doc.isEmpty());
+ QCOMPARE(doc.isArray(), false);
+ QCOMPARE(doc.isObject(), true);
+ QJsonObject object = doc.object();
+ QCOMPARE(object.size(), 1);
+ QCOMPARE(object.value("Key"), QJsonValue(true));
+ QCOMPARE(doc.toJson(), json);
+ }
+ {
+ QByteArray json = "[ null, true, false, \"Foo\", 1, [], {} ]";
+ QJsonDocument doc = QJsonDocument::fromJson(json);
+ QVERIFY(!doc.isEmpty());
+ QCOMPARE(doc.isArray(), true);
+ QCOMPARE(doc.isObject(), false);
+ QJsonArray array = doc.array();
+ QCOMPARE(array.size(), 7);
+ QCOMPARE(array.at(0).type(), QJsonValue::Null);
+ QCOMPARE(array.at(1).type(), QJsonValue::Bool);
+ QCOMPARE(array.at(1).toBool(), true);
+ QCOMPARE(array.at(2).type(), QJsonValue::Bool);
+ QCOMPARE(array.at(2).toBool(), false);
+ QCOMPARE(array.at(3).type(), QJsonValue::String);
+ QCOMPARE(array.at(3).toString(), QLatin1String("Foo"));
+ QCOMPARE(array.at(4).type(), QJsonValue::Double);
+ QCOMPARE(array.at(4).toDouble(), 1.);
+ QCOMPARE(array.at(5).type(), QJsonValue::Array);
+ QCOMPARE(array.at(5).toArray().size(), 0);
+ QCOMPARE(array.at(6).type(), QJsonValue::Object);
+ QCOMPARE(array.at(6).toObject().size(), 0);
+ }
+ {
+ QByteArray json = "{ \"0\": null, \"1\": true, \"2\": false, \"3\": \"Foo\", \"4\": 1, \"5\": [], \"6\": {} }";
+ QJsonDocument doc = QJsonDocument::fromJson(json);
+ QVERIFY(!doc.isEmpty());
+ QCOMPARE(doc.isArray(), false);
+ QCOMPARE(doc.isObject(), true);
+ QJsonObject object = doc.object();
+ QCOMPARE(object.size(), 7);
+ QCOMPARE(object.value("0").type(), QJsonValue::Null);
+ QCOMPARE(object.value("1").type(), QJsonValue::Bool);
+ QCOMPARE(object.value("1").toBool(), true);
+ QCOMPARE(object.value("2").type(), QJsonValue::Bool);
+ QCOMPARE(object.value("2").toBool(), false);
+ QCOMPARE(object.value("3").type(), QJsonValue::String);
+ QCOMPARE(object.value("3").toString(), QLatin1String("Foo"));
+ QCOMPARE(object.value("4").type(), QJsonValue::Double);
+ QCOMPARE(object.value("4").toDouble(), 1.);
+ QCOMPARE(object.value("5").type(), QJsonValue::Array);
+ QCOMPARE(object.value("5").toArray().size(), 0);
+ QCOMPARE(object.value("6").type(), QJsonValue::Object);
+ QCOMPARE(object.value("6").toObject().size(), 0);
+ }
+}
+
+void TestQtJson::fromBinary()
+{
+ QFile file(QLatin1String(SRCDIR "test.json"));
+ file.open(QFile::ReadOnly);
+ QByteArray testJson = file.readAll();
+
+ QJsonDocument doc = QJsonDocument::fromJson(testJson);
+ QJsonDocument outdoc = QJsonDocument::fromBinaryData(doc.toBinaryData());
+ QVERIFY(!outdoc.isNull());
+ QVERIFY(doc == outdoc);
+
+ QFile bfile(QLatin1String(SRCDIR "test.bjson"));
+ bfile.open(QFile::ReadOnly);
+ QByteArray binary = bfile.readAll();
+
+ QJsonDocument bdoc = QJsonDocument::fromBinaryData(binary);
+ QVERIFY(!bdoc.isNull());
+ QVERIFY(doc.toVariant() == bdoc.toVariant());
+ QVERIFY(doc == bdoc);
+}
+
+void TestQtJson::toAndFromBinary_data()
+{
+ QTest::addColumn<QString>("filename");
+ QTest::newRow("test.json") << QString::fromLatin1(SRCDIR "test.json");
+ QTest::newRow("test2.json") << QString::fromLatin1(SRCDIR "test2.json");
+}
+
+void TestQtJson::toAndFromBinary()
+{
+ QFETCH(QString, filename);
+ QFile file(filename);
+ QVERIFY(file.open(QFile::ReadOnly));
+ QByteArray data = file.readAll();
+
+ QJsonDocument doc = QJsonDocument::fromJson(data);
+ QVERIFY(!doc.isNull());
+ QJsonDocument outdoc = QJsonDocument::fromBinaryData(doc.toBinaryData());
+ QVERIFY(!outdoc.isNull());
+ QVERIFY(doc == outdoc);
+}
+
+void TestQtJson::parseNumbers()
+{
+ {
+ // test number parsing
+ struct Numbers {
+ const char *str;
+ int n;
+ };
+ Numbers numbers [] = {
+ { "0", 0 },
+ { "1", 1 },
+ { "10", 10 },
+ { "-1", -1 },
+ { "100000", 100000 },
+ { "-999", -999 }
+ };
+ int size = sizeof(numbers)/sizeof(Numbers);
+ for (int i = 0; i < size; ++i) {
+ QByteArray json = "[ ";
+ json += numbers[i].str;
+ json += " ]";
+ QJsonDocument doc = QJsonDocument::fromJson(json);
+ QVERIFY(!doc.isEmpty());
+ QCOMPARE(doc.isArray(), true);
+ QCOMPARE(doc.isObject(), false);
+ QJsonArray array = doc.array();
+ QCOMPARE(array.size(), 1);
+ QJsonValue val = array.at(0);
+ QCOMPARE(val.type(), QJsonValue::Double);
+ QCOMPARE(val.toDouble(), (double)numbers[i].n);
+ }
+ }
+ {
+ // test number parsing
+ struct Numbers {
+ const char *str;
+ double n;
+ };
+ Numbers numbers [] = {
+ { "0", 0 },
+ { "1", 1 },
+ { "10", 10 },
+ { "-1", -1 },
+ { "100000", 100000 },
+ { "-999", -999 },
+ { "1.1", 1.1 },
+ { "1e10", 1e10 },
+ { "-1.1", -1.1 },
+ { "-1e10", -1e10 },
+ { "-1E10", -1e10 },
+ { "1.1e10", 1.1e10 },
+ { "1.1e308", 1.1e308 },
+ { "-1.1e308", -1.1e308 },
+ { "1.1e-308", 1.1e-308 },
+ { "-1.1e-308", -1.1e-308 },
+ { "1.1e+308", 1.1e+308 },
+ { "-1.1e+308", -1.1e+308 },
+ { "1.e+308", 1.e+308 },
+ { "-1.e+308", -1.e+308 }
+ };
+ int size = sizeof(numbers)/sizeof(Numbers);
+ for (int i = 0; i < size; ++i) {
+ QByteArray json = "[ ";
+ json += numbers[i].str;
+ json += " ]";
+ QJsonDocument doc = QJsonDocument::fromJson(json);
+ QVERIFY(!doc.isEmpty());
+ QCOMPARE(doc.isArray(), true);
+ QCOMPARE(doc.isObject(), false);
+ QJsonArray array = doc.array();
+ QCOMPARE(array.size(), 1);
+ QJsonValue val = array.at(0);
+ QCOMPARE(val.type(), QJsonValue::Double);
+ QCOMPARE(val.toDouble(), numbers[i].n);
+ }
+ }
+}
+
+void TestQtJson::parseStrings()
+{
+ const char *strings [] =
+ {
+ "Foo",
+ "abc\\\"abc",
+ "abc\\\\abc",
+ "abc\\babc",
+ "abc\\fabc",
+ "abc\\nabc",
+ "abc\\rabc",
+ "abc\\tabc",
+ "abc\\u0019abc",
+ "abcЂabc",
+ };
+ int size = sizeof(strings)/sizeof(const char *);
+
+ for (int i = 0; i < size; ++i) {
+ QByteArray json = "[\n \"";
+ json += strings[i];
+ json += "\"\n]\n";
+ QJsonDocument doc = QJsonDocument::fromJson(json);
+ QVERIFY(!doc.isEmpty());
+ QCOMPARE(doc.isArray(), true);
+ QCOMPARE(doc.isObject(), false);
+ QJsonArray array = doc.array();
+ QCOMPARE(array.size(), 1);
+ QJsonValue val = array.at(0);
+ QCOMPARE(val.type(), QJsonValue::String);
+
+ QCOMPARE(doc.toJson(), json);
+ }
+
+ struct Pairs {
+ const char *in;
+ const char *out;
+ };
+ Pairs pairs [] = {
+ { "abc\\/abc", "abc/abc" },
+ { "abc\\u0402abc", "abcЂabc" },
+ { "abc\\u0065abc", "abceabc" }
+ };
+ size = sizeof(pairs)/sizeof(Pairs);
+
+ for (int i = 0; i < size; ++i) {
+ QByteArray json = "[\n \"";
+ json += pairs[i].in;
+ json += "\"\n]\n";
+ QByteArray out = "[\n \"";
+ out += pairs[i].out;
+ out += "\"\n]\n";
+ QJsonDocument doc = QJsonDocument::fromJson(json);
+ QVERIFY(!doc.isEmpty());
+ QCOMPARE(doc.isArray(), true);
+ QCOMPARE(doc.isObject(), false);
+ QJsonArray array = doc.array();
+ QCOMPARE(array.size(), 1);
+ QJsonValue val = array.at(0);
+ QCOMPARE(val.type(), QJsonValue::String);
+
+ QCOMPARE(doc.toJson(), out);
+ }
+
+}
+
+void TestQtJson::parseDuplicateKeys()
+{
+ const char *json = "{ \"B\": true, \"A\": null, \"B\": false }";
+
+ QJsonDocument doc = QJsonDocument::fromJson(json);
+ QCOMPARE(doc.isObject(), true);
+
+ QJsonObject o = doc.object();
+ QCOMPARE(o.size(), 2);
+ QJsonObject::const_iterator it = o.constBegin();
+ QCOMPARE(it.key(), QLatin1String("A"));
+ QCOMPARE(it.value(), QJsonValue());
+ ++it;
+ QCOMPARE(it.key(), QLatin1String("B"));
+ QCOMPARE(it.value(), QJsonValue(false));
+}
+
+void TestQtJson::testParser()
+{
+ QFile file(QLatin1String(SRCDIR "test.json"));
+ file.open(QFile::ReadOnly);
+ QByteArray testJson = file.readAll();
+
+ QJsonDocument doc = QJsonDocument::fromJson(testJson);
+ QVERIFY(!doc.isEmpty());
+}
+
+void TestQtJson::compactArray()
+{
+ QJsonArray array;
+ array.append(QLatin1String("First Entry"));
+ array.append(QLatin1String("Second Entry"));
+ array.append(QLatin1String("Third Entry"));
+ QJsonDocument doc(array);
+ int s = doc.toBinaryData().size();
+ array.removeAt(1);
+ doc.setArray(array);
+ QVERIFY(s > doc.toBinaryData().size());
+ s = doc.toBinaryData().size();
+ QCOMPARE(doc.toJson(),
+ QByteArray("[\n"
+ " \"First Entry\",\n"
+ " \"Third Entry\"\n"
+ "]\n"));
+
+ array.removeAt(0);
+ doc.setArray(array);
+ QVERIFY(s > doc.toBinaryData().size());
+ s = doc.toBinaryData().size();
+ QCOMPARE(doc.toJson(),
+ QByteArray("[\n"
+ " \"Third Entry\"\n"
+ "]\n"));
+
+ array.removeAt(0);
+ doc.setArray(array);
+ QVERIFY(s > doc.toBinaryData().size());
+ s = doc.toBinaryData().size();
+ QCOMPARE(doc.toJson(),
+ QByteArray("[\n"
+ "]\n"));
+
+}
+
+void TestQtJson::compactObject()
+{
+ QJsonObject object;
+ object.insert(QLatin1String("Key1"), QLatin1String("First Entry"));
+ object.insert(QLatin1String("Key2"), QLatin1String("Second Entry"));
+ object.insert(QLatin1String("Key3"), QLatin1String("Third Entry"));
+ QJsonDocument doc(object);
+ int s = doc.toBinaryData().size();
+ object.remove(QLatin1String("Key2"));
+ doc.setObject(object);
+ QVERIFY(s > doc.toBinaryData().size());
+ s = doc.toBinaryData().size();
+ QCOMPARE(doc.toJson(),
+ QByteArray("{\n"
+ " \"Key1\": \"First Entry\",\n"
+ " \"Key3\": \"Third Entry\"\n"
+ "}\n"));
+
+ object.remove(QLatin1String("Key1"));
+ doc.setObject(object);
+ QVERIFY(s > doc.toBinaryData().size());
+ s = doc.toBinaryData().size();
+ QCOMPARE(doc.toJson(),
+ QByteArray("{\n"
+ " \"Key3\": \"Third Entry\"\n"
+ "}\n"));
+
+ object.remove(QLatin1String("Key3"));
+ doc.setObject(object);
+ QVERIFY(s > doc.toBinaryData().size());
+ s = doc.toBinaryData().size();
+ QCOMPARE(doc.toJson(),
+ QByteArray("{\n"
+ "}\n"));
+
+}
+
+void TestQtJson::validation()
+{
+ // this basically tests that we don't crash on corrupt data
+ QFile file(QLatin1String(SRCDIR "test.json"));
+ QVERIFY(file.open(QFile::ReadOnly));
+ QByteArray testJson = file.readAll();
+ QVERIFY(!testJson.isEmpty());
+
+ QJsonDocument doc = QJsonDocument::fromJson(testJson);
+ QVERIFY(!doc.isNull());
+
+ QByteArray binary = doc.toBinaryData();
+
+ // only test the first 1000 bytes. Testing the full file takes too long
+ for (int i = 0; i < 1000; ++i) {
+ QByteArray corrupted = binary;
+ corrupted[i] = 0xff;
+ QJsonDocument doc = QJsonDocument::fromBinaryData(corrupted);
+ if (doc.isNull())
+ continue;
+ QByteArray json = doc.toJson();
+ }
+
+
+ QFile file2(QLatin1String(SRCDIR "test3.json"));
+ file2.open(QFile::ReadOnly);
+ testJson = file2.readAll();
+ QVERIFY(!testJson.isEmpty());
+
+ doc = QJsonDocument::fromJson(testJson);
+ QVERIFY(!doc.isNull());
+
+ binary = doc.toBinaryData();
+
+ for (int i = 0; i < binary.size(); ++i) {
+ QByteArray corrupted = binary;
+ corrupted[i] = 0xff;
+ QJsonDocument doc = QJsonDocument::fromBinaryData(corrupted);
+ if (doc.isNull())
+ continue;
+ QByteArray json = doc.toJson();
+
+ corrupted = binary;
+ corrupted[i] = 0x00;
+ doc = QJsonDocument::fromBinaryData(corrupted);
+ if (doc.isNull())
+ continue;
+ json = doc.toJson();
+ }
+}
+
+void TestQtJson::assignToDocument()
+{
+ {
+ const char *json = "{ \"inner\": { \"key\": true } }";
+ QJsonDocument doc = QJsonDocument::fromJson(json);
+
+ QJsonObject o = doc.object();
+ QJsonValue inner = o.value("inner");
+
+ QJsonDocument innerDoc(inner.toObject());
+
+ QVERIFY(innerDoc != doc);
+ QVERIFY(innerDoc.object() == inner.toObject());
+ }
+ {
+ const char *json = "[ [ true ] ]";
+ QJsonDocument doc = QJsonDocument::fromJson(json);
+
+ QJsonArray a = doc.array();
+ QJsonValue inner = a.at(0);
+
+ QJsonDocument innerDoc(inner.toArray());
+
+ QVERIFY(innerDoc != doc);
+ QVERIFY(innerDoc.array() == inner.toArray());
+ }
+}
+
+
+void TestQtJson::testDuplicateKeys()
+{
+ QJsonObject obj;
+ obj.insert(QLatin1String("foo"), QLatin1String("bar"));
+ obj.insert(QLatin1String("foo"), QLatin1String("zap"));
+ QCOMPARE(obj.size(), 1);
+ QCOMPARE(obj.value(QLatin1String("foo")).toString(), QLatin1String("zap"));
+}
+
+void TestQtJson::testCompaction()
+{
+ // modify object enough times to trigger compactionCounter
+ // and make sure the data is still valid
+ QJsonObject obj;
+ for (int i = 0; i < 33; ++i) {
+ obj.remove(QLatin1String("foo"));
+ obj.insert(QLatin1String("foo"), QLatin1String("bar"));
+ }
+ QCOMPARE(obj.size(), 1);
+ QCOMPARE(obj.value(QLatin1String("foo")).toString(), QLatin1String("bar"));
+
+ QJsonDocument doc = QJsonDocument::fromBinaryData(QJsonDocument(obj).toBinaryData());
+ QVERIFY(!doc.isNull());
+ QVERIFY(!doc.isEmpty());
+ QCOMPARE(doc.isArray(), false);
+ QCOMPARE(doc.isObject(), true);
+ QVERIFY(doc.object() == obj);
+}
+
+void TestQtJson::testDebugStream()
+{
+ {
+ // QJsonObject
+
+ QJsonObject object;
+ QTest::ignoreMessage(QtDebugMsg, "QJsonObject() ");
+ qDebug() << object;
+
+ object.insert(QLatin1String("foo"), QLatin1String("bar"));
+ QTest::ignoreMessage(QtDebugMsg, "QJsonObject({\"foo\": \"bar\"}) ");
+ qDebug() << object;
+ }
+
+ {
+ // QJsonArray
+
+ QJsonArray array;
+ QTest::ignoreMessage(QtDebugMsg, "QJsonArray() ");
+ qDebug() << array;
+
+ array.append(1);
+ array.append(QLatin1String("foo"));
+ QTest::ignoreMessage(QtDebugMsg, "QJsonArray([1,\"foo\"]) ");
+ qDebug() << array;
+ }
+
+ {
+ // QJsonDocument
+
+ QJsonDocument doc;
+ QTest::ignoreMessage(QtDebugMsg, "QJsonDocument() ");
+ qDebug() << doc;
+
+ QJsonObject object;
+ object.insert(QLatin1String("foo"), QLatin1String("bar"));
+ doc.setObject(object);
+ QTest::ignoreMessage(QtDebugMsg, "QJsonDocument({\"foo\": \"bar\"}) ");
+ qDebug() << doc;
+
+ QJsonArray array;
+ array.append(1);
+ array.append(QLatin1String("foo"));
+ QTest::ignoreMessage(QtDebugMsg, "QJsonDocument([1,\"foo\"]) ");
+ doc.setArray(array);
+ qDebug() << doc;
+ }
+
+ {
+ // QJsonValue
+
+ QJsonValue value;
+
+ QTest::ignoreMessage(QtDebugMsg, "QJsonValue(null) ");
+ qDebug() << value;
+
+ value = QJsonValue(true); // bool
+ QTest::ignoreMessage(QtDebugMsg, "QJsonValue(bool, true) ");
+ qDebug() << value;
+
+ value = QJsonValue((double)4.2); // double
+ QTest::ignoreMessage(QtDebugMsg, "QJsonValue(double, 4.2) ");
+ qDebug() << value;
+
+ value = QJsonValue((int)42); // int
+ QTest::ignoreMessage(QtDebugMsg, "QJsonValue(double, 42) ");
+ qDebug() << value;
+
+ value = QJsonValue(QLatin1String("foo")); // string
+ QTest::ignoreMessage(QtDebugMsg, "QJsonValue(string, \"foo\") ");
+ qDebug() << value;
+
+ QJsonArray array;
+ array.append(1);
+ array.append(QLatin1String("foo"));
+ value = QJsonValue(array); // array
+ QTest::ignoreMessage(QtDebugMsg, "QJsonValue(array, QJsonArray([1,\"foo\"]) ) ");
+ qDebug() << value;
+
+ QJsonObject object;
+ object.insert(QLatin1String("foo"), QLatin1String("bar"));
+ value = QJsonValue(object); // object
+ QTest::ignoreMessage(QtDebugMsg, "QJsonValue(object, QJsonObject({\"foo\": \"bar\"}) ) ");
+ qDebug() << value;
+ }
+}
+
+void TestQtJson::testCompactionError()
+{
+ QJsonObject schemaObject;
+ schemaObject.insert("_Type", QLatin1String("_SchemaType"));
+ schemaObject.insert("name", QLatin1String("Address"));
+ schemaObject.insert("schema", QJsonObject());
+ {
+ QJsonObject content(schemaObject);
+ QJsonDocument doc(content);
+ QVERIFY(!doc.isNull());
+ QByteArray hash = QCryptographicHash::hash(doc.toBinaryData(), QCryptographicHash::Md5).toHex();
+ schemaObject.insert("_Version", QString::fromLatin1(hash.constData(), hash.size()));
+ }
+
+ QJsonObject schema;
+ schema.insert("streetNumber", schema.value("number").toObject());
+ schemaObject.insert("schema", schema);
+ {
+ QJsonObject content(schemaObject);
+ content.remove("_Uuid");
+ content.remove("_Version");
+ QJsonDocument doc(content);
+ QVERIFY(!doc.isNull());
+ QByteArray hash = QCryptographicHash::hash(doc.toBinaryData(), QCryptographicHash::Md5).toHex();
+ schemaObject.insert("_Version", QString::fromLatin1(hash.constData(), hash.size()));
+ }
+}
+
+QTEST_MAIN(TestQtJson)
+#include "tst_qtjson.moc"
diff --git a/tests/auto/corelib/kernel/qcoreapplication/qcoreapplication.pro b/tests/auto/corelib/kernel/qcoreapplication/qcoreapplication.pro
index f9a38c2f14..14df20c986 100644
--- a/tests/auto/corelib/kernel/qcoreapplication/qcoreapplication.pro
+++ b/tests/auto/corelib/kernel/qcoreapplication/qcoreapplication.pro
@@ -1,4 +1,4 @@
CONFIG += testcase parallel_test
TARGET = tst_qcoreapplication
-QT = core testlib
+QT = core testlib core-private
SOURCES = tst_qcoreapplication.cpp
diff --git a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
index 5c2ebc8948..97c9757107 100644
--- a/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
+++ b/tests/auto/corelib/kernel/qcoreapplication/tst_qcoreapplication.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,14 +34,18 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
-
#include <QtCore/QtCore>
#include <QtTest/QtTest>
+#include <private/qcoreapplication_p.h>
+#include <private/qeventloop_p.h>
+#include <private/qthread_p.h>
+
class tst_QCoreApplication: public QObject
{
Q_OBJECT
@@ -63,6 +66,7 @@ private slots:
void execAfterExit();
void eventLoopExecAfterExit();
void customEventDispatcher();
+ void testQuitLock();
};
class EventSpy : public QObject
@@ -127,7 +131,7 @@ void tst_QCoreApplication::argc()
char *argv[] = { "tst_qcoreapplication" };
QCoreApplication app(argc, argv);
QCOMPARE(argc, 1);
- QCOMPARE(app.argc(), 1);
+ QCOMPARE(app.arguments().count(), 1);
}
{
@@ -135,7 +139,7 @@ void tst_QCoreApplication::argc()
char *argv[] = { "tst_qcoreapplication", "arg1", "arg2", "arg3" };
QCoreApplication app(argc, argv);
QCOMPARE(argc, 4);
- QCOMPARE(app.argc(), 4);
+ QCOMPARE(app.arguments().count(), 4);
}
{
@@ -143,7 +147,7 @@ void tst_QCoreApplication::argc()
char **argv = 0;
QCoreApplication app(argc, argv);
QCOMPARE(argc, 0);
- QCOMPARE(app.argc(), 0);
+ QCOMPARE(app.arguments().count(), 0);
}
{
@@ -151,7 +155,7 @@ void tst_QCoreApplication::argc()
char *argv[] = { "tst_qcoreapplication", "-qmljsdebugger=port:3768,block" };
QCoreApplication app(argc, argv);
QCOMPARE(argc, 1);
- QCOMPARE(app.argc(), 1);
+ QCOMPARE(app.arguments().count(), 1);
}
}
@@ -640,5 +644,113 @@ void tst_QCoreApplication::customEventDispatcher()
QVERIFY(weak_ed.isNull());
}
+class JobObject : public QObject
+{
+ Q_OBJECT
+public:
+
+ explicit JobObject(QEventLoop *loop, QObject *parent = 0)
+ : QObject(parent), locker(loop)
+ {
+ QTimer::singleShot(1000, this, SLOT(timeout()));
+ }
+
+ explicit JobObject(QObject *parent = 0)
+ : QObject(parent)
+ {
+ QTimer::singleShot(1000, this, SLOT(timeout()));
+ }
+
+public slots:
+ void startSecondaryJob()
+ {
+ new JobObject();
+ }
+
+private slots:
+ void timeout()
+ {
+ emit done();
+ deleteLater();
+ }
+
+signals:
+ void done();
+
+private:
+ QEventLoopLocker locker;
+};
+
+class QuitTester : public QObject
+{
+ Q_OBJECT
+public:
+ QuitTester(QObject *parent = 0)
+ : QObject(parent)
+ {
+ QTimer::singleShot(0, this, SLOT(doTest()));
+ }
+
+private slots:
+ void doTest()
+ {
+ QCoreApplicationPrivate *privateClass = static_cast<QCoreApplicationPrivate*>(QObjectPrivate::get(qApp));
+
+ {
+ QCOMPARE(privateClass->quitLockRef.load(), 0);
+ // Test with a lock active so that the refcount doesn't drop to zero during these tests, causing a quit.
+ // (until we exit the scope)
+ QEventLoopLocker locker;
+
+ QCOMPARE(privateClass->quitLockRef.load(), 1);
+
+ JobObject *job1 = new JobObject(this);
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ delete job1;
+
+ QCOMPARE(privateClass->quitLockRef.load(), 1);
+
+ job1 = new JobObject(this);
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ JobObject *job2 = new JobObject(this);
+
+ QCOMPARE(privateClass->quitLockRef.load(), 3);
+
+ delete job1;
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ JobObject *job3 = new JobObject(job2);
+
+ QCOMPARE(privateClass->quitLockRef.load(), 3);
+
+ JobObject *job4 = new JobObject(job2);
+
+ QCOMPARE(privateClass->quitLockRef.load(), 4);
+
+ delete job2;
+
+ QCOMPARE(privateClass->quitLockRef.load(), 1);
+
+ }
+ QCOMPARE(privateClass->quitLockRef.load(), 0);
+ }
+};
+
+void tst_QCoreApplication::testQuitLock()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QCoreApplication app(argc, argv);
+
+ QuitTester tester;
+ app.exec();
+}
+
+
QTEST_APPLESS_MAIN(tst_QCoreApplication)
#include "tst_qcoreapplication.moc"
diff --git a/tests/auto/corelib/kernel/qeventloop/qeventloop.pro b/tests/auto/corelib/kernel/qeventloop/qeventloop.pro
index d21a7d64f6..adfc810788 100644
--- a/tests/auto/corelib/kernel/qeventloop/qeventloop.pro
+++ b/tests/auto/corelib/kernel/qeventloop/qeventloop.pro
@@ -1,6 +1,6 @@
CONFIG += testcase
TARGET = tst_qeventloop
-QT = core network testlib
+QT = core network testlib core-private
SOURCES = tst_qeventloop.cpp
win32:!wince*:LIBS += -luser32
diff --git a/tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp b/tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp
index 49e3fec33e..e2144134d9 100644
--- a/tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp
+++ b/tests/auto/corelib/kernel/qeventloop/tst_qeventloop.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -45,6 +45,7 @@
#include <qcoreapplication.h>
#include <qcoreevent.h>
#include <qeventloop.h>
+#include <private/qeventloop_p.h>
#include <qmutex.h>
#include <qthread.h>
#include <qtimer.h>
@@ -194,6 +195,8 @@ private slots:
// keep this test last:
void nestedLoops();
+ void testQuitLock();
+
protected:
void customEvent(QEvent *e);
};
@@ -640,6 +643,85 @@ void tst_QEventLoop::deliverInDefinedOrder()
}
+class JobObject : public QObject
+{
+ Q_OBJECT
+public:
+
+ explicit JobObject(QEventLoop *loop, QObject *parent = 0)
+ : QObject(parent), loop(loop), locker(loop)
+ {
+ }
+
+ explicit JobObject(QObject *parent = 0)
+ : QObject(parent)
+ {
+ }
+
+public slots:
+ void start(int timeout = 200)
+ {
+ QTimer::singleShot(timeout, this, SLOT(timeout()));
+ }
+
+private slots:
+ void timeout()
+ {
+ emit done();
+ deleteLater();
+ }
+
+signals:
+ void done();
+
+private:
+ QEventLoop *loop;
+ QEventLoopLocker locker;
+};
+
+void tst_QEventLoop::testQuitLock()
+{
+ QEventLoop eventLoop;
+
+ QTimer timer;
+ timer.setInterval(100);
+ QSignalSpy timerSpy(&timer, SIGNAL(timeout()));
+ timer.start();
+
+ QEventLoopPrivate* privateClass = static_cast<QEventLoopPrivate*>(QObjectPrivate::get(&eventLoop));
+
+ QCOMPARE(privateClass->quitLockRef.load(), 0);
+
+ JobObject *job1 = new JobObject(&eventLoop, this);
+ job1->start(500);
+
+ QCOMPARE(privateClass->quitLockRef.load(), 1);
+
+ eventLoop.exec();
+
+ QCOMPARE(privateClass->quitLockRef.load(), 0);
+
+ // The job takes long enough that the timer times out several times.
+ QVERIFY(timerSpy.count() > 3);
+ timerSpy.clear();
+
+ job1 = new JobObject(&eventLoop, this);
+ job1->start(200);
+
+ JobObject *previousJob = job1;
+ for (int i = 0; i < 9; ++i) {
+ JobObject *subJob = new JobObject(&eventLoop, this);
+ connect(previousJob, SIGNAL(done()), subJob, SLOT(start()));
+ previousJob = subJob;
+ }
+
+ eventLoop.exec();
+
+ qDebug() << timerSpy.count();
+ // The timer times out more if it has more subjobs to do.
+ // We run 10 jobs in sequence here of about 200ms each.
+ QVERIFY(timerSpy.count() > 17);
+}
QTEST_MAIN(tst_QEventLoop)
#include "tst_qeventloop.moc"
diff --git a/tests/auto/corelib/kernel/qmath/tst_qmath.cpp b/tests/auto/corelib/kernel/qmath/tst_qmath.cpp
index fab95564d2..bd5339a259 100644
--- a/tests/auto/corelib/kernel/qmath/tst_qmath.cpp
+++ b/tests/auto/corelib/kernel/qmath/tst_qmath.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp b/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp
index 0fe82f6277..68ff8e4bb6 100644
--- a/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp
+++ b/tests/auto/corelib/kernel/qmetaobject/tst_qmetaobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp b/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp
index fb7122aec4..def1b74ea4 100644
--- a/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp
+++ b/tests/auto/corelib/kernel/qmetaobjectbuilder/tst_qmetaobjectbuilder.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,7 +47,6 @@ class tst_QMetaObjectBuilder : public QObject
{
Q_OBJECT
private slots:
- void mocVersionCheck();
void create();
void className();
void superClass();
@@ -57,6 +56,7 @@ private slots:
void signal();
void constructor();
void property();
+ void variantProperty();
void notifySignal();
void enumerator();
void classInfo();
@@ -66,6 +66,14 @@ private slots:
void serialize();
void removeNotifySignal();
+ void usage_signal();
+ void usage_property();
+ void usage_slot();
+ void usage_method();
+ void usage_constructor();
+ void usage_connect();
+ void usage_templateConnect();
+
private:
static bool checkForSideEffects
(const QMetaObjectBuilder& builder,
@@ -129,18 +137,6 @@ signals:
void propChanged(const QString&);
};
-void tst_QMetaObjectBuilder::mocVersionCheck()
-{
- // This test will fail when the moc version number is changed.
- // It is intended as a reminder to also update QMetaObjectBuilder
- // whenenver moc changes. Once QMetaObjectBuilder has been
- // updated, this test can be changed to check for the next version.
- int version = int(QObject::staticMetaObject.d.data[0]);
- QVERIFY(version == 4 || version == 5 || version == 6);
- version = int(staticMetaObject.d.data[0]);
- QVERIFY(version == 4 || version == 5 || version == 6);
-}
-
void tst_QMetaObjectBuilder::create()
{
QMetaObjectBuilder builder;
@@ -727,6 +723,20 @@ void tst_QMetaObjectBuilder::property()
QCOMPARE(builder.method(0).signature(), QByteArray("propChanged(QString)"));
}
+void tst_QMetaObjectBuilder::variantProperty()
+{
+ QMetaObjectBuilder builder;
+ builder.addProperty("variant", "const QVariant &");
+ QMetaObject *meta = builder.toMetaObject();
+
+ QMetaProperty prop = meta->property(meta->propertyOffset());
+ QCOMPARE(QMetaType::Type(prop.type()), QMetaType::QVariant);
+ QCOMPARE(QMetaType::Type(prop.userType()), QMetaType::QVariant);
+ QCOMPARE(QByteArray(prop.typeName()), QByteArray("QVariant"));
+
+ qFree(meta);
+}
+
void tst_QMetaObjectBuilder::notifySignal()
{
QMetaObjectBuilder builder;
@@ -1259,6 +1269,353 @@ bool tst_QMetaObjectBuilder::sameMetaObject
return true;
}
+
+// This class is used to test that the meta-object generated by QMOB can be
+// used by a real object.
+// The class manually implements the functions normally generated by moc, and
+// creates the corresponding meta-object using QMOB. The autotests check that
+// this object can be used by QObject/QMetaObject functionality (property
+// access, signals & slots, constructing instances, ...).
+
+class TestObject : public QObject
+{
+ // Manually expanded from Q_OBJECT macro
+public:
+ Q_OBJECT_CHECK
+ virtual const QMetaObject *metaObject() const;
+ virtual void *qt_metacast(const char *);
+ virtual int qt_metacall(QMetaObject::Call, int, void **);
+private:
+ Q_DECL_HIDDEN static const QMetaObjectExtraData staticMetaObjectExtraData;
+ Q_DECL_HIDDEN static void qt_static_metacall(QObject *, QMetaObject::Call, int, void **);
+
+ //Q_PROPERTY(int intProp READ intProp WRITE setIntProp NOTIFY intPropChanged)
+public:
+ TestObject(QObject *parent = 0); // Q_INVOKABLE
+ ~TestObject();
+
+ // Property accessors
+ int intProp() const;
+ void setIntProp(int v);
+
+ void emitIntPropChanged();
+
+ int voidSlotIntArgument() const;
+
+// Q_INVOKABLE
+ QVariantList listInvokableQRealQString(qreal, const QString &);
+
+//public Q_SLOTS:
+ void voidSlotInt(int);
+
+//Q_SIGNALS:
+ void intPropChanged(int);
+
+private:
+ static QMetaObject *buildMetaObject();
+
+ QMetaObject *m_metaObject;
+ int m_intProp;
+ int m_voidSlotIntArg;
+};
+
+const QMetaObjectExtraData TestObject::staticMetaObjectExtraData = {
+ 0, qt_static_metacall
+};
+
+TestObject::TestObject(QObject *parent)
+ : QObject(parent), m_metaObject(buildMetaObject()),
+ m_intProp(-1), m_voidSlotIntArg(-1)
+{
+}
+
+TestObject::~TestObject()
+{
+ qFree(m_metaObject);
+}
+
+QMetaObject *TestObject::buildMetaObject()
+{
+ QMetaObjectBuilder builder;
+ // NOTE: If you change the meta-object, remember to adapt qt_metacall and
+ // friends below accordingly.
+
+ builder.setClassName("TestObject");
+
+ builder.setStaticMetacallFunction(qt_static_metacall);
+
+ QMetaMethodBuilder intPropChanged = builder.addSignal("intPropChanged(int)");
+ intPropChanged.setParameterNames(QList<QByteArray>() << "newIntPropValue");
+
+ QMetaPropertyBuilder prop = builder.addProperty("intProp", "int");
+ prop.setNotifySignal(intPropChanged);
+
+ QMetaMethodBuilder voidSlotInt = builder.addSlot("voidSlotInt(int)");
+ voidSlotInt.setParameterNames(QList<QByteArray>() << "slotIntArg");
+
+ QMetaMethodBuilder listInvokableQRealQString = builder.addMethod("listInvokableQRealQString(qreal,QString)");
+ listInvokableQRealQString.setReturnType("QVariantList");
+ listInvokableQRealQString.setParameterNames(QList<QByteArray>() << "qrealArg" << "qstringArg");
+
+ builder.addConstructor("TestObject(QObject*)");
+ builder.addConstructor("TestObject()");
+
+ return builder.toMetaObject();
+}
+
+int TestObject::intProp() const
+{
+ return m_intProp;
+}
+
+void TestObject::setIntProp(int value)
+{
+ if (m_intProp != value) {
+ m_intProp = value;
+ emit intPropChanged(value);
+ }
+}
+
+void TestObject::emitIntPropChanged()
+{
+ emit intPropChanged(m_intProp);
+}
+
+QVariantList TestObject::listInvokableQRealQString(qreal r, const QString &s)
+{
+ return QVariantList() << r << s;
+}
+
+void TestObject::voidSlotInt(int value)
+{
+ m_voidSlotIntArg = value;
+}
+
+int TestObject::voidSlotIntArgument() const
+{
+ return m_voidSlotIntArg;
+}
+
+void TestObject::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
+{
+ if (_c == QMetaObject::CreateInstance) {
+ switch (_id) {
+ case 0: { TestObject *_r = new TestObject((*reinterpret_cast< QObject*(*)>(_a[1])));
+ if (_a[0]) *reinterpret_cast<QObject**>(_a[0]) = _r; } break;
+ case 1: { TestObject *_r = new TestObject();
+ if (_a[0]) *reinterpret_cast<QObject**>(_a[0]) = _r; } break;
+ default: {
+ QMetaMethod ctor = _o->metaObject()->constructor(_id);
+ qFatal("You forgot to add a case for CreateInstance %s", ctor.signature());
+ }
+ }
+ } else if (_c == QMetaObject::InvokeMetaMethod) {
+ Q_ASSERT(_o->metaObject()->cast(_o));
+ TestObject *_t = static_cast<TestObject *>(_o);
+ switch (_id) {
+ case 0: _t->intPropChanged((*reinterpret_cast< int(*)>(_a[1]))); break;
+ case 1: _t->voidSlotInt((*reinterpret_cast< int(*)>(_a[1]))); break;
+ case 2: *reinterpret_cast<QVariantList(*)>(_a[0]) = _t->listInvokableQRealQString(*reinterpret_cast<qreal(*)>(_a[1]), *reinterpret_cast<QString(*)>(_a[2])); break;
+ default: {
+ QMetaMethod method = _o->metaObject()->method(_o->metaObject()->methodOffset() + _id);
+ qFatal("You forgot to add a case for InvokeMetaMethod %s", method.signature());
+ }
+ }
+ } else if (_c == QMetaObject::IndexOfMethod) {
+ // This code is currently unreachable because it's only used by the
+ // template-based versions of connect() and disconnect(), which don't
+ // work with dynamically generated meta-objects (see test).
+ int *result = reinterpret_cast<int *>(_a[0]);
+ void **func = reinterpret_cast<void **>(_a[1]);
+ {
+ typedef void (TestObject::*_t)(int );
+ if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&TestObject::intPropChanged)) {
+ *result = 0;
+ }
+ }
+ {
+ typedef void (TestObject::*_t)(int );
+ if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&TestObject::voidSlotInt)) {
+ *result = 1;
+ }
+ }
+ {
+ typedef QVariantList (TestObject::*_t)(qreal, const QString &);
+ if (*reinterpret_cast<_t *>(func) == static_cast<_t>(&TestObject::listInvokableQRealQString)) {
+ *result = 2;
+ }
+ }
+ qFatal("You forgot to add one or more IndexOfMethod cases");
+ }
+}
+
+const QMetaObject *TestObject::metaObject() const
+{
+ return m_metaObject;
+}
+
+void *TestObject::qt_metacast(const char *_clname)
+{
+ if (!_clname) return 0;
+ if (!strcmp(_clname, "TestObject"))
+ return static_cast<void*>(const_cast< TestObject*>(this));
+ return QObject::qt_metacast(_clname);
+}
+
+int TestObject::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
+{
+ _id = QObject::qt_metacall(_c, _id, _a);
+ if (_id < 0)
+ return _id;
+ int ownMethodCount = m_metaObject->methodCount() - m_metaObject->methodOffset();
+ int ownPropertyCount = m_metaObject->propertyCount() - m_metaObject->propertyOffset();
+ if (_c == QMetaObject::InvokeMetaMethod) {
+ if (_id < ownMethodCount)
+ qt_static_metacall(this, _c, _id, _a);
+ _id -= ownMethodCount;
+ }
+#ifndef QT_NO_PROPERTIES
+ else if (_c == QMetaObject::ReadProperty) {
+ void *_v = _a[0];
+ switch (_id) {
+ case 0: *reinterpret_cast< int*>(_v) = intProp(); break;
+ default: if (_id < ownPropertyCount) {
+ QMetaProperty prop = m_metaObject->property(m_metaObject->propertyOffset() + _id);
+ qFatal("You forgot to add a case for ReadProperty %s", prop.name());
+ }
+ }
+ _id -= ownPropertyCount;
+ } else if (_c == QMetaObject::WriteProperty) {
+ void *_v = _a[0];
+ switch (_id) {
+ case 0: setIntProp(*reinterpret_cast< int*>(_v)); break;
+ default: if (_id < ownPropertyCount) {
+ QMetaProperty prop = m_metaObject->property(m_metaObject->propertyOffset() + _id);
+ qFatal("You forgot to add a case for WriteProperty %s", prop.name());
+ }
+ }
+ _id -= ownPropertyCount;
+ } else if (_c == QMetaObject::ResetProperty) {
+ _id -= ownPropertyCount;
+ } else if (_c == QMetaObject::QueryPropertyDesignable) {
+ _id -= ownPropertyCount;
+ } else if (_c == QMetaObject::QueryPropertyScriptable) {
+ _id -= ownPropertyCount;
+ } else if (_c == QMetaObject::QueryPropertyStored) {
+ _id -= ownPropertyCount;
+ } else if (_c == QMetaObject::QueryPropertyEditable) {
+ _id -= ownPropertyCount;
+ } else if (_c == QMetaObject::QueryPropertyUser) {
+ _id -= ownPropertyCount;
+ }
+#endif // QT_NO_PROPERTIES
+ return _id;
+}
+
+// SIGNAL 0
+void TestObject::intPropChanged(int _t1)
+{
+ void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
+ QMetaObject::activate(this, m_metaObject, 0, _a);
+}
+
+
+void tst_QMetaObjectBuilder::usage_signal()
+{
+ QScopedPointer<TestObject> testObject(new TestObject);
+
+ QSignalSpy propChangedSpy(testObject.data(), SIGNAL(intPropChanged(int)));
+ testObject->emitIntPropChanged();
+ QCOMPARE(propChangedSpy.count(), 1);
+ QCOMPARE(propChangedSpy.at(0).count(), 1);
+ QCOMPARE(propChangedSpy.at(0).at(0).toInt(), testObject->intProp());
+}
+
+void tst_QMetaObjectBuilder::usage_property()
+{
+ QScopedPointer<TestObject> testObject(new TestObject);
+
+ QVariant prop = testObject->property("intProp");
+ QCOMPARE(prop.type(), QVariant::Int);
+ QCOMPARE(prop.toInt(), testObject->intProp());
+
+ QSignalSpy propChangedSpy(testObject.data(), SIGNAL(intPropChanged(int)));
+ QVERIFY(testObject->intProp() != 123);
+ testObject->setProperty("intProp", 123);
+ QCOMPARE(propChangedSpy.count(), 1);
+ prop = testObject->property("intProp");
+ QCOMPARE(prop.type(), QVariant::Int);
+ QCOMPARE(prop.toInt(), 123);
+}
+
+void tst_QMetaObjectBuilder::usage_slot()
+{
+ QScopedPointer<TestObject> testObject(new TestObject);
+
+ int index = testObject->metaObject()->indexOfMethod("voidSlotInt(int)");
+ QVERIFY(index != -1);
+ QMetaMethod voidSlotInt = testObject->metaObject()->method(index);
+
+ QVERIFY(testObject->voidSlotIntArgument() == -1);
+ QVERIFY(voidSlotInt.invoke(testObject.data(), Q_ARG(int, 123)));
+ QCOMPARE(testObject->voidSlotIntArgument(), 123);
+}
+
+void tst_QMetaObjectBuilder::usage_method()
+{
+ QScopedPointer<TestObject> testObject(new TestObject);
+
+ int index = testObject->metaObject()->indexOfMethod("listInvokableQRealQString(qreal,QString)");
+ QVERIFY(index != -1);
+ QMetaMethod listInvokableQRealQString = testObject->metaObject()->method(index);
+ QVariantList list;
+ QVERIFY(listInvokableQRealQString.invoke(testObject.data(), Q_RETURN_ARG(QVariantList, list),
+ Q_ARG(qreal, 123.0), Q_ARG(QString, "ciao")));
+ QCOMPARE(list.size(), 2);
+ QCOMPARE(list.at(0).type(), QVariant::Type(QMetaType::QReal));
+ QCOMPARE(list.at(0).toDouble(), double(123));
+ QCOMPARE(list.at(1).type(), QVariant::String);
+ QCOMPARE(list.at(1).toString(), QString::fromLatin1("ciao"));
+}
+
+void tst_QMetaObjectBuilder::usage_constructor()
+{
+ QScopedPointer<TestObject> testObject(new TestObject);
+
+ QCOMPARE(testObject->metaObject()->constructorCount(), 2);
+ QScopedPointer<QObject> testInstance(testObject->metaObject()->newInstance());
+ QVERIFY(testInstance != 0);
+ QScopedPointer<QObject> testInstance2(testObject->metaObject()->newInstance(Q_ARG(QObject*, testInstance.data())));
+ QVERIFY(testInstance2 != 0);
+ QCOMPARE(testInstance2->parent(), testInstance.data());
+}
+
+void tst_QMetaObjectBuilder::usage_connect()
+{
+ QScopedPointer<TestObject> testObject(new TestObject);
+
+ QVERIFY(QObject::connect(testObject.data(), SIGNAL(intPropChanged(int)),
+ testObject.data(), SLOT(voidSlotInt(int))));
+
+ QVERIFY(testObject->voidSlotIntArgument() == -1);
+ testObject->setProperty("intProp", 123);
+ QCOMPARE(testObject->voidSlotIntArgument(), 123);
+
+ QVERIFY(QObject::disconnect(testObject.data(), SIGNAL(intPropChanged(int)),
+ testObject.data(), SLOT(voidSlotInt(int))));
+}
+
+void tst_QMetaObjectBuilder::usage_templateConnect()
+{
+ QScopedPointer<TestObject> testObject(new TestObject);
+
+ QTest::ignoreMessage(QtWarningMsg, "QObject::connect: signal not found in QObject");
+ QMetaObject::Connection con = QObject::connect(testObject.data(), &TestObject::intPropChanged,
+ testObject.data(), &TestObject::voidSlotInt);
+ QEXPECT_FAIL("", "template-based connect() fails because meta-object is deduced at compile-time", Abort);
+ QVERIFY(con);
+}
+
QTEST_MAIN(tst_QMetaObjectBuilder)
#include "tst_qmetaobjectbuilder.moc"
diff --git a/tests/auto/corelib/kernel/qmetaproperty/tst_qmetaproperty.cpp b/tests/auto/corelib/kernel/qmetaproperty/tst_qmetaproperty.cpp
index e225371a7f..3e1d4f1603 100644
--- a/tests/auto/corelib/kernel/qmetaproperty/tst_qmetaproperty.cpp
+++ b/tests/auto/corelib/kernel/qmetaproperty/tst_qmetaproperty.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
index d5aa369a92..be13b39e7e 100644
--- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
+++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -89,6 +89,7 @@ private slots:
void isRegistered();
void unregisterType();
void registerStreamBuiltin();
+ void automaticTemplateRegistration();
};
struct Foo { int i; };
@@ -570,15 +571,12 @@ FOR_EACH_CORE_METATYPE(RETURN_CREATE_COPY_FUNCTION)
TypeTestFunctionGetter::get(type)();
}
-template<typename T> struct SafeSizeOf { enum {Size = sizeof(T)}; };
-template<> struct SafeSizeOf<void> { enum {Size = 0}; };
-
void tst_QMetaType::sizeOf_data()
{
QTest::addColumn<QMetaType::Type>("type");
QTest::addColumn<int>("size");
#define ADD_METATYPE_TEST_ROW(MetaTypeName, MetaTypeId, RealType) \
- QTest::newRow(#RealType) << QMetaType::MetaTypeName << int(SafeSizeOf<RealType>::Size);
+ QTest::newRow(#RealType) << QMetaType::MetaTypeName << int(QTypeInfo<RealType>::sizeOf);
FOR_EACH_CORE_METATYPE(ADD_METATYPE_TEST_ROW)
#undef ADD_METATYPE_TEST_ROW
}
@@ -596,21 +594,50 @@ Q_DECLARE_TYPEINFO(CustomMovable, Q_MOVABLE_TYPE);
QT_END_NAMESPACE
Q_DECLARE_METATYPE(CustomMovable);
+class CustomObject : public QObject
+{
+ Q_OBJECT
+public:
+ CustomObject(QObject *parent = 0)
+ : QObject(parent)
+ {
+
+ }
+};
+Q_DECLARE_METATYPE(CustomObject*);
+
+struct SecondBase {};
+
+class CustomMultiInheritanceObject : public QObject, SecondBase
+{
+ Q_OBJECT
+public:
+ CustomMultiInheritanceObject(QObject *parent = 0)
+ : QObject(parent)
+ {
+
+ }
+};
+Q_DECLARE_METATYPE(CustomMultiInheritanceObject*);
+
void tst_QMetaType::flags_data()
{
QTest::addColumn<int>("type");
QTest::addColumn<bool>("isMovable");
QTest::addColumn<bool>("isComplex");
+ QTest::addColumn<bool>("isPointerToQObject");
#define ADD_METATYPE_TEST_ROW(MetaTypeName, MetaTypeId, RealType) \
- QTest::newRow(#RealType) << MetaTypeId << bool(!QTypeInfo<RealType>::isStatic) << bool(QTypeInfo<RealType>::isComplex);
+ QTest::newRow(#RealType) << MetaTypeId << bool(!QTypeInfo<RealType>::isStatic) << bool(QTypeInfo<RealType>::isComplex) << bool(QtPrivate::IsPointerToTypeDerivedFromQObject<RealType>::Value);
QT_FOR_EACH_STATIC_CORE_CLASS(ADD_METATYPE_TEST_ROW)
QT_FOR_EACH_STATIC_PRIMITIVE_POINTER(ADD_METATYPE_TEST_ROW)
QT_FOR_EACH_STATIC_CORE_POINTER(ADD_METATYPE_TEST_ROW)
#undef ADD_METATYPE_TEST_ROW
- QTest::newRow("TestSpace::Foo") << ::qMetaTypeId<TestSpace::Foo>() << false << true;
- QTest::newRow("Whity<double>") << ::qMetaTypeId<Whity<double> >() << false << true;
- QTest::newRow("CustomMovable") << ::qMetaTypeId<CustomMovable>() << true << true;
+ QTest::newRow("TestSpace::Foo") << ::qMetaTypeId<TestSpace::Foo>() << false << true << false;
+ QTest::newRow("Whity<double>") << ::qMetaTypeId<Whity<double> >() << false << true << false;
+ QTest::newRow("CustomMovable") << ::qMetaTypeId<CustomMovable>() << true << true << false;
+ QTest::newRow("CustomObject*") << ::qMetaTypeId<CustomObject*>() << true << false << true;
+ QTest::newRow("CustomMultiInheritanceObject*") << ::qMetaTypeId<CustomMultiInheritanceObject*>() << true << false << true;
}
void tst_QMetaType::flags()
@@ -618,10 +645,12 @@ void tst_QMetaType::flags()
QFETCH(int, type);
QFETCH(bool, isMovable);
QFETCH(bool, isComplex);
+ QFETCH(bool, isPointerToQObject);
QCOMPARE(bool(QMetaType::typeFlags(type) & QMetaType::NeedsConstruction), isComplex);
QCOMPARE(bool(QMetaType::typeFlags(type) & QMetaType::NeedsDestruction), isComplex);
QCOMPARE(bool(QMetaType::typeFlags(type) & QMetaType::MovableType), isMovable);
+ QCOMPARE(bool(QMetaType::typeFlags(type) & QMetaType::PointerToQObject), isPointerToQObject);
}
void tst_QMetaType::construct_data()
@@ -857,5 +886,63 @@ void tst_QMetaType::registerStreamBuiltin()
qRegisterMetaTypeStreamOperators<QVariant>("QVariant");
}
+Q_DECLARE_METATYPE(QSharedPointer<QObject>)
+
+void tst_QMetaType::automaticTemplateRegistration()
+{
+ {
+ QList<int> intList;
+ intList << 42;
+ QVERIFY(QVariant::fromValue(intList).value<QList<int> >().first() == 42);
+ QVector<QList<int> > vectorList;
+ vectorList << intList;
+ QVERIFY(QVariant::fromValue(vectorList).value<QVector<QList<int> > >().first().first() == 42);
+ }
+
+ {
+ QList<QByteArray> bytearrayList;
+ bytearrayList << QByteArray("foo");
+ QVERIFY(QVariant::fromValue(bytearrayList).value<QList<QByteArray> >().first() == QByteArray("foo"));
+ QVector<QList<QByteArray> > vectorList;
+ vectorList << bytearrayList;
+ QVERIFY(QVariant::fromValue(vectorList).value<QVector<QList<QByteArray> > >().first().first() == QByteArray("foo"));
+ }
+
+ QCOMPARE(::qMetaTypeId<QVariantList>(), (int)QMetaType::QVariantList);
+ QCOMPARE(::qMetaTypeId<QList<QVariant> >(), (int)QMetaType::QVariantList);
+
+ {
+ QList<QVariant> variantList;
+ variantList << 42;
+ QVERIFY(QVariant::fromValue(variantList).value<QList<QVariant> >().first() == 42);
+ QVector<QList<QVariant> > vectorList;
+ vectorList << variantList;
+ QVERIFY(QVariant::fromValue(vectorList).value<QVector<QList<QVariant> > >().first().first() == 42);
+ }
+
+ {
+ QList<QSharedPointer<QObject> > sharedPointerList;
+ QObject *testObject = new QObject;
+ sharedPointerList << QSharedPointer<QObject>(testObject);
+ QVERIFY(QVariant::fromValue(sharedPointerList).value<QList<QSharedPointer<QObject> > >().first() == testObject);
+ QVector<QList<QSharedPointer<QObject> > > vectorList;
+ vectorList << sharedPointerList;
+ QVERIFY(QVariant::fromValue(vectorList).value<QVector<QList<QSharedPointer<QObject> > > >().first().first() == testObject);
+ }
+}
+
+// Compile-time test, it should be possible to register function pointer types
+class Undefined;
+
+typedef Undefined (*UndefinedFunction0)();
+typedef Undefined (*UndefinedFunction1)(Undefined);
+typedef Undefined (*UndefinedFunction2)(Undefined, Undefined);
+typedef Undefined (*UndefinedFunction3)(Undefined, Undefined, Undefined);
+
+Q_DECLARE_METATYPE(UndefinedFunction0);
+Q_DECLARE_METATYPE(UndefinedFunction1);
+Q_DECLARE_METATYPE(UndefinedFunction2);
+Q_DECLARE_METATYPE(UndefinedFunction3);
+
QTEST_MAIN(tst_QMetaType)
#include "tst_qmetatype.moc"
diff --git a/tests/auto/corelib/kernel/qmimedata/tst_qmimedata.cpp b/tests/auto/corelib/kernel/qmimedata/tst_qmimedata.cpp
index f55701b3ec..09f17602b3 100644
--- a/tests/auto/corelib/kernel/qmimedata/tst_qmimedata.cpp
+++ b/tests/auto/corelib/kernel/qmimedata/tst_qmimedata.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/kernel/qobject/moc_oldnormalizeobject.cpp b/tests/auto/corelib/kernel/qobject/moc_oldnormalizeobject.cpp
index b4069eba6c..2d180b88ea 100644
--- a/tests/auto/corelib/kernel/qobject/moc_oldnormalizeobject.cpp
+++ b/tests/auto/corelib/kernel/qobject/moc_oldnormalizeobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/kernel/qobject/oldnormalizeobject.h b/tests/auto/corelib/kernel/qobject/oldnormalizeobject.h
index efd1df2f5a..f73027707a 100644
--- a/tests/auto/corelib/kernel/qobject/oldnormalizeobject.h
+++ b/tests/auto/corelib/kernel/qobject/oldnormalizeobject.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/kernel/qobject/signalbug/signalbug.cpp b/tests/auto/corelib/kernel/qobject/signalbug/signalbug.cpp
index 86e8869a33..a1fd6e7534 100644
--- a/tests/auto/corelib/kernel/qobject/signalbug/signalbug.cpp
+++ b/tests/auto/corelib/kernel/qobject/signalbug/signalbug.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/kernel/qobject/signalbug/signalbug.h b/tests/auto/corelib/kernel/qobject/signalbug/signalbug.h
index bba612c998..661485885e 100644
--- a/tests/auto/corelib/kernel/qobject/signalbug/signalbug.h
+++ b/tests/auto/corelib/kernel/qobject/signalbug/signalbug.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
index f3bba08544..7f95f68075 100644
--- a/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
+++ b/tests/auto/corelib/kernel/qobject/tst_qobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -75,6 +75,7 @@ private slots:
void findChildren();
void connectDisconnectNotify_data();
void connectDisconnectNotify();
+ void connectNotifyPtr();
void emitInDefinedOrder();
void customTypes();
void streamCustomTypes();
@@ -134,6 +135,7 @@ private slots:
void returnValue();
void returnValue2_data();
void returnValue2();
+ void connectVirtualSlots();
};
class SenderObject : public QObject
@@ -848,6 +850,19 @@ void tst_QObject::connectDisconnectNotify()
delete r;
}
+void tst_QObject::connectNotifyPtr()
+{
+ NotifyObject *s = new NotifyObject;
+ NotifyObject *r = new NotifyObject;
+
+ connect( (SenderObject*)s, &SenderObject::signal1, (ReceiverObject*)r, &ReceiverObject::slot1 );
+ QCOMPARE( s->org_signal, s->nw_signal );
+ QCOMPARE( s->org_signal.toLatin1(), QMetaObject::normalizedSignature(SIGNAL(signal1())));
+
+ delete s;
+ delete r;
+}
+
class SequenceObject : public ReceiverObject
{
Q_OBJECT
@@ -1670,7 +1685,7 @@ void tst_QObject::property()
const int idx = mo->indexOfProperty("variant");
QVERIFY(idx != -1);
- QVERIFY(mo->property(idx).type() == QVariant::LastType);
+ QCOMPARE(QMetaType::Type(mo->property(idx).type()), QMetaType::QVariant);
QCOMPARE(object.property("variant"), QVariant());
QVariant variant1(42);
QVariant variant2("string");
@@ -3363,7 +3378,7 @@ void tst_QObject::deleteQObjectWhenDeletingEvent()
};
QObject o;
- QGuiApplication::postEvent(&o, new MyEvent);
+ QCoreApplication::postEvent(&o, new MyEvent);
QCoreApplication::removePostedEvents(&o); // here you would get a deadlock
}
@@ -4128,11 +4143,17 @@ void tst_QObject::pointerConnect()
r1->reset();
r2->reset();
ReceiverObject::sequence = 0;
+ QTimer timer;
QVERIFY( connect( s, &SenderObject::signal1 , r1, &ReceiverObject::slot1 ) );
QVERIFY( connect( s, &SenderObject::signal1 , r2, &ReceiverObject::slot1 ) );
QVERIFY( connect( s, &SenderObject::signal1 , r1, &ReceiverObject::slot3 ) );
QVERIFY( connect( s, &SenderObject::signal3 , r1, &ReceiverObject::slot3 ) );
+#if defined(Q_CC_GNU) && defined(Q_OS_UNIX)
+ QEXPECT_FAIL("", "Test may fail due to failing comparison of pointers to member functions caused by problems with -reduce-relocations on this platform.", Continue);
+#endif
+ QVERIFY2( connect( &timer, &QTimer::timeout, r1, &ReceiverObject::deleteLater ),
+ "Signal connection failed most likely due to failing comparison of pointers to member functions caused by problems with -reduce-relocations on this platform.");
s->emitSignal1();
s->emitSignal2();
@@ -5150,6 +5171,52 @@ void tst_QObject::returnValue2()
}
}
+class VirtualSlotsObjectBase : public QObject {
+ Q_OBJECT
+public slots:
+ virtual void slot1() {
+ base_counter1++;
+ }
+public:
+ VirtualSlotsObjectBase() : base_counter1(0) {}
+ int base_counter1;
+signals:
+ void signal1();
+};
+
+class VirtualSlotsObject : public VirtualSlotsObjectBase {
+ Q_OBJECT
+public slots:
+ virtual void slot1() {
+ derived_counter1++;
+ }
+public:
+ VirtualSlotsObject() : derived_counter1(0) {}
+ int derived_counter1;
+};
+
+void tst_QObject::connectVirtualSlots()
+{
+ VirtualSlotsObject obj;
+ QVERIFY( QObject::connect(&obj, &VirtualSlotsObjectBase::signal1, &obj, &VirtualSlotsObjectBase::slot1, Qt::UniqueConnection));
+ QVERIFY(!QObject::connect(&obj, &VirtualSlotsObjectBase::signal1, &obj, &VirtualSlotsObjectBase::slot1, Qt::UniqueConnection));
+
+ emit obj.signal1();
+ QCOMPARE(obj.base_counter1, 0);
+ QCOMPARE(obj.derived_counter1, 1);
+
+ QVERIFY(QObject::disconnect(&obj, &VirtualSlotsObjectBase::signal1, &obj, &VirtualSlotsObjectBase::slot1));
+ QVERIFY(!QObject::disconnect(&obj, &VirtualSlotsObjectBase::signal1, &obj, &VirtualSlotsObjectBase::slot1));
+
+ emit obj.signal1();
+ QCOMPARE(obj.base_counter1, 0);
+ QCOMPARE(obj.derived_counter1, 1);
+
+ /* the C++ standard say the comparison between pointer to virtual member function is unspecified
+ QVERIFY( QObject::connect(&obj, &VirtualSlotsObjectBase::signal1, &obj, &VirtualSlotsObjectBase::slot1, Qt::UniqueConnection));
+ QVERIFY(!QObject::connect(&obj, &VirtualSlotsObjectBase::signal1, &obj, &VirtualSlotsObject::slot1, Qt::UniqueConnection));
+ */
+}
QTEST_MAIN(tst_QObject)
#include "tst_qobject.moc"
diff --git a/tests/auto/corelib/kernel/qobject/tst_qobject.pro b/tests/auto/corelib/kernel/qobject/tst_qobject.pro
index e13852629c..d74f2bcb0f 100644
--- a/tests/auto/corelib/kernel/qobject/tst_qobject.pro
+++ b/tests/auto/corelib/kernel/qobject/tst_qobject.pro
@@ -1,6 +1,6 @@
-CONFIG += testcase
+CONFIG += testcase console
TARGET = tst_qobject
-QT = core-private network gui testlib
+QT = core-private network testlib
SOURCES = tst_qobject.cpp
# this is here for a reason, moc_oldnormalizedobject.cpp is not auto-generated, it was generated by
diff --git a/tests/auto/corelib/kernel/qpointer/tst_qpointer.cpp b/tests/auto/corelib/kernel/qpointer/tst_qpointer.cpp
index df4c5f99cb..9eac2b78be 100644
--- a/tests/auto/corelib/kernel/qpointer/tst_qpointer.cpp
+++ b/tests/auto/corelib/kernel/qpointer/tst_qpointer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/kernel/qsignalmapper/tst_qsignalmapper.cpp b/tests/auto/corelib/kernel/qsignalmapper/tst_qsignalmapper.cpp
index 4b9c37a5e0..b1fdf51c20 100644
--- a/tests/auto/corelib/kernel/qsignalmapper/tst_qsignalmapper.cpp
+++ b/tests/auto/corelib/kernel/qsignalmapper/tst_qsignalmapper.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/kernel/qsocketnotifier/tst_qsocketnotifier.cpp b/tests/auto/corelib/kernel/qsocketnotifier/tst_qsocketnotifier.cpp
index 180e7d532b..e3bfe3bc6d 100644
--- a/tests/auto/corelib/kernel/qsocketnotifier/tst_qsocketnotifier.cpp
+++ b/tests/auto/corelib/kernel/qsocketnotifier/tst_qsocketnotifier.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp b/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp
index 098d8a8825..e8dade9387 100644
--- a/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp
+++ b/tests/auto/corelib/kernel/qtimer/tst_qtimer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp b/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp
index a7ccc45642..033d10001f 100644
--- a/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp
+++ b/tests/auto/corelib/kernel/qtranslator/tst_qtranslator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/kernel/qvariant/qvariant.pro b/tests/auto/corelib/kernel/qvariant/qvariant.pro
index 93877a1059..48229ee140 100644
--- a/tests/auto/corelib/kernel/qvariant/qvariant.pro
+++ b/tests/auto/corelib/kernel/qvariant/qvariant.pro
@@ -2,5 +2,6 @@ CONFIG += testcase
TARGET = tst_qvariant
QT += widgets network testlib
SOURCES = tst_qvariant.cpp
+RESOURCES += qvariant.qrc
mac: CONFIG += insignificant_test # QTBUG-QTBUG-22747
diff --git a/tests/auto/corelib/kernel/qvariant/qvariant.qrc b/tests/auto/corelib/kernel/qvariant/qvariant.qrc
new file mode 100644
index 0000000000..e6f7bdac80
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/qvariant.qrc
@@ -0,0 +1,6 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+ <file>stream/qt4.9/</file>
+ <file>stream/qt5.0/</file>
+</qresource>
+</RCC>
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/bool.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/bool.bin
new file mode 100644
index 0000000000..7929cb4129
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/bool.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/char.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/char.bin
new file mode 100644
index 0000000000..3c15cb7850
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/char.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/double.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/double.bin
new file mode 100644
index 0000000000..ac9ed179f2
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/double.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/float.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/float.bin
new file mode 100644
index 0000000000..540c010dc9
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/float.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/int.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/int.bin
new file mode 100644
index 0000000000..6b47a9aeb4
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/int.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/long.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/long.bin
new file mode 100644
index 0000000000..66891d5ed8
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/long.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbitarray.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbitarray.bin
new file mode 100644
index 0000000000..e534174651
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbitarray.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbitmap.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbitmap.bin
new file mode 100644
index 0000000000..13f4dc374d
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbitmap.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbrush.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbrush.bin
new file mode 100644
index 0000000000..60ea8a2b08
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbrush.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbytearray.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbytearray.bin
new file mode 100644
index 0000000000..19897811d0
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qbytearray.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qchar.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qchar.bin
new file mode 100644
index 0000000000..f4ef9df794
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qchar.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qcolor.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qcolor.bin
new file mode 100644
index 0000000000..ba1c332e14
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qcolor.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qcursor.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qcursor.bin
new file mode 100644
index 0000000000..545fa96a1f
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qcursor.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qdate.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qdate.bin
new file mode 100644
index 0000000000..d3281b1336
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qdate.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qdatetime.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qdatetime.bin
new file mode 100644
index 0000000000..664eb736a7
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qdatetime.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qeasingcurve.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qeasingcurve.bin
new file mode 100644
index 0000000000..b9b9ea633b
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qeasingcurve.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qfont.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qfont.bin
new file mode 100644
index 0000000000..76bc5d932f
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qfont.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qicon.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qicon.bin
new file mode 100644
index 0000000000..2f8713244c
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qicon.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qimage.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qimage.bin
new file mode 100644
index 0000000000..0ab1cbf6fa
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qimage.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qkeysequence.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qkeysequence.bin
new file mode 100644
index 0000000000..03db168e93
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qkeysequence.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qline.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qline.bin
new file mode 100644
index 0000000000..f1f5cde63c
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qline.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlinef.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlinef.bin
new file mode 100644
index 0000000000..4b1c2f05fb
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlinef.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlocale.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlocale.bin
new file mode 100644
index 0000000000..44d9d1c993
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlocale.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlonglong.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlonglong.bin
new file mode 100644
index 0000000000..f1c297a91d
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qlonglong.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qmatrix.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qmatrix.bin
new file mode 100644
index 0000000000..fc88e2564a
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qmatrix.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qmatrix4x4.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qmatrix4x4.bin
new file mode 100644
index 0000000000..3a8b664a69
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qmatrix4x4.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpalette.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpalette.bin
new file mode 100644
index 0000000000..1ad94631bd
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpalette.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpen.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpen.bin
new file mode 100644
index 0000000000..1eff5c83ad
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpen.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpixmap.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpixmap.bin
new file mode 100644
index 0000000000..ce9cb8c434
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpixmap.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpoint.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpoint.bin
new file mode 100644
index 0000000000..ca66b1ec4c
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpoint.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpointf.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpointf.bin
new file mode 100644
index 0000000000..7aebb46299
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpointf.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpolygon.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpolygon.bin
new file mode 100644
index 0000000000..fbdab8fffc
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qpolygon.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qquaternion.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qquaternion.bin
new file mode 100644
index 0000000000..01ee6dcdbc
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qquaternion.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qrect.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qrect.bin
new file mode 100644
index 0000000000..70730db7e1
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qrect.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qrectf.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qrectf.bin
new file mode 100644
index 0000000000..2f8dac670b
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qrectf.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qregexp.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qregexp.bin
new file mode 100644
index 0000000000..db8518e064
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qregexp.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qregion.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qregion.bin
new file mode 100644
index 0000000000..27eec8c4d5
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qregion.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsize.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsize.bin
new file mode 100644
index 0000000000..fec8c62c16
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsize.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsizef.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsizef.bin
new file mode 100644
index 0000000000..210976a005
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsizef.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsizepolicy.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsizepolicy.bin
new file mode 100644
index 0000000000..00f1b2906e
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qsizepolicy.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qstring.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qstring.bin
new file mode 100644
index 0000000000..f44d7cbbc0
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qstring.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qstringlist.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qstringlist.bin
new file mode 100644
index 0000000000..34e6f73ab5
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qstringlist.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtextformat.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtextformat.bin
new file mode 100644
index 0000000000..91382db9c4
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtextformat.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtextlength.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtextlength.bin
new file mode 100644
index 0000000000..945dfc0ba9
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtextlength.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtime.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtime.bin
new file mode 100644
index 0000000000..31f63fd1fb
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtime.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtransform.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtransform.bin
new file mode 100644
index 0000000000..53c4db55f2
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qtransform.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qulonglong.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qulonglong.bin
new file mode 100644
index 0000000000..e321e7d77d
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qulonglong.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qurl.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qurl.bin
new file mode 100644
index 0000000000..4e444b7cc0
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qurl.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariant.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariant.bin
new file mode 100644
index 0000000000..7d5c5303b8
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariant.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvarianthash.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvarianthash.bin
new file mode 100644
index 0000000000..e2ffb002af
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvarianthash.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariantlist.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariantlist.bin
new file mode 100644
index 0000000000..cf95d44875
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariantlist.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariantmap.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariantmap.bin
new file mode 100644
index 0000000000..6b0b1fb27d
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvariantmap.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector2d.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector2d.bin
new file mode 100644
index 0000000000..a219ab66dd
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector2d.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector3d.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector3d.bin
new file mode 100644
index 0000000000..4444fb6236
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector3d.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector4d.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector4d.bin
new file mode 100644
index 0000000000..46bcc26f13
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/qvector4d.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/short.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/short.bin
new file mode 100644
index 0000000000..124776f9d7
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/short.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/uchar.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/uchar.bin
new file mode 100644
index 0000000000..1dea2c16c0
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/uchar.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/uint.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/uint.bin
new file mode 100644
index 0000000000..086e080224
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/uint.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/ulong.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/ulong.bin
new file mode 100644
index 0000000000..92dfdaad6c
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/ulong.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/ushort.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/ushort.bin
new file mode 100644
index 0000000000..d386a76f1a
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/ushort.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt4.9/void.bin b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/void.bin
new file mode 100644
index 0000000000..7337dc7cfb
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt4.9/void.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/bool.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/bool.bin
new file mode 100644
index 0000000000..7929cb4129
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/bool.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/char.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/char.bin
new file mode 100644
index 0000000000..4422f29a62
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/char.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/double.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/double.bin
new file mode 100644
index 0000000000..ac9ed179f2
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/double.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/float.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/float.bin
new file mode 100644
index 0000000000..fc7cca7d07
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/float.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/int.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/int.bin
new file mode 100644
index 0000000000..6b47a9aeb4
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/int.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/long.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/long.bin
new file mode 100644
index 0000000000..5a1ed0d740
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/long.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitarray.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitarray.bin
new file mode 100644
index 0000000000..e534174651
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitarray.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitmap.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitmap.bin
new file mode 100644
index 0000000000..511e260744
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbitmap.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbrush.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbrush.bin
new file mode 100644
index 0000000000..60ea8a2b08
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbrush.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbytearray.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbytearray.bin
new file mode 100644
index 0000000000..19897811d0
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qbytearray.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qchar.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qchar.bin
new file mode 100644
index 0000000000..f4ef9df794
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qchar.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcolor.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcolor.bin
new file mode 100644
index 0000000000..ba1c332e14
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcolor.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcursor.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcursor.bin
new file mode 100644
index 0000000000..a7be10e143
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qcursor.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdate.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdate.bin
new file mode 100644
index 0000000000..d3281b1336
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdate.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdatetime.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdatetime.bin
new file mode 100644
index 0000000000..664eb736a7
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qdatetime.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qeasingcurve.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qeasingcurve.bin
new file mode 100644
index 0000000000..5cf664eb27
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qeasingcurve.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qfont.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qfont.bin
new file mode 100644
index 0000000000..e8aa03af9b
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qfont.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qicon.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qicon.bin
new file mode 100644
index 0000000000..bf3ca9ed4b
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qicon.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qimage.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qimage.bin
new file mode 100644
index 0000000000..03665c1edc
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qimage.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qkeysequence.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qkeysequence.bin
new file mode 100644
index 0000000000..7f7447a821
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qkeysequence.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qline.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qline.bin
new file mode 100644
index 0000000000..f1f5cde63c
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qline.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlinef.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlinef.bin
new file mode 100644
index 0000000000..4b1c2f05fb
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlinef.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlocale.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlocale.bin
new file mode 100644
index 0000000000..44d9d1c993
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlocale.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlonglong.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlonglong.bin
new file mode 100644
index 0000000000..f1c297a91d
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qlonglong.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix.bin
new file mode 100644
index 0000000000..93434b42c9
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix4x4.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix4x4.bin
new file mode 100644
index 0000000000..8d3f9b81e8
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qmatrix4x4.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpalette.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpalette.bin
new file mode 100644
index 0000000000..503c1a4664
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpalette.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpen.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpen.bin
new file mode 100644
index 0000000000..edafc2d185
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpen.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpixmap.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpixmap.bin
new file mode 100644
index 0000000000..ce9cb8c434
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpixmap.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpoint.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpoint.bin
new file mode 100644
index 0000000000..ca66b1ec4c
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpoint.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpointf.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpointf.bin
new file mode 100644
index 0000000000..7aebb46299
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpointf.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygon.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygon.bin
new file mode 100644
index 0000000000..8d3275df41
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygon.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygonf.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygonf.bin
new file mode 100644
index 0000000000..3e85997f2d
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qpolygonf.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qquaternion.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qquaternion.bin
new file mode 100644
index 0000000000..c498f8fd08
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qquaternion.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qrect.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qrect.bin
new file mode 100644
index 0000000000..70730db7e1
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qrect.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qrectf.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qrectf.bin
new file mode 100644
index 0000000000..2f8dac670b
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qrectf.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregexp.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregexp.bin
new file mode 100644
index 0000000000..db8518e064
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregexp.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregion.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregion.bin
new file mode 100644
index 0000000000..ecf01a8b31
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qregion.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsize.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsize.bin
new file mode 100644
index 0000000000..fec8c62c16
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsize.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsizef.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsizef.bin
new file mode 100644
index 0000000000..210976a005
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsizef.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsizepolicy.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsizepolicy.bin
new file mode 100644
index 0000000000..cfdf49b4c2
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qsizepolicy.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qstring.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qstring.bin
new file mode 100644
index 0000000000..f44d7cbbc0
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qstring.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qstringlist.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qstringlist.bin
new file mode 100644
index 0000000000..34e6f73ab5
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qstringlist.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextformat.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextformat.bin
new file mode 100644
index 0000000000..432068d921
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextformat.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextlength.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextlength.bin
new file mode 100644
index 0000000000..3b209f1be2
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtextlength.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtime.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtime.bin
new file mode 100644
index 0000000000..31f63fd1fb
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtime.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtransform.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtransform.bin
new file mode 100644
index 0000000000..52cddb5e93
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qtransform.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qulonglong.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qulonglong.bin
new file mode 100644
index 0000000000..e321e7d77d
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qulonglong.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qurl.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qurl.bin
new file mode 100644
index 0000000000..4e444b7cc0
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qurl.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/quuid.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/quuid.bin
new file mode 100644
index 0000000000..a8d57c6acd
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/quuid.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariant.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariant.bin
new file mode 100644
index 0000000000..1c8bc45769
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariant.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvarianthash.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvarianthash.bin
new file mode 100644
index 0000000000..e2ffb002af
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvarianthash.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariantlist.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariantlist.bin
new file mode 100644
index 0000000000..cf95d44875
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariantlist.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariantmap.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariantmap.bin
new file mode 100644
index 0000000000..6b0b1fb27d
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvariantmap.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector2d.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector2d.bin
new file mode 100644
index 0000000000..2bc3aeb18d
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector2d.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector3d.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector3d.bin
new file mode 100644
index 0000000000..b035f7f074
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector3d.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector4d.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector4d.bin
new file mode 100644
index 0000000000..a804c5e655
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/qvector4d.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/short.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/short.bin
new file mode 100644
index 0000000000..e7ae61f176
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/short.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/uchar.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/uchar.bin
new file mode 100644
index 0000000000..426f97426f
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/uchar.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/uint.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/uint.bin
new file mode 100644
index 0000000000..086e080224
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/uint.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/ulong.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/ulong.bin
new file mode 100644
index 0000000000..399a9ea220
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/ulong.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/ushort.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/ushort.bin
new file mode 100644
index 0000000000..25cb14e173
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/ushort.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/stream/qt5.0/void.bin b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/void.bin
new file mode 100644
index 0000000000..7337dc7cfb
--- /dev/null
+++ b/tests/auto/corelib/kernel/qvariant/stream/qt5.0/void.bin
Binary files differ
diff --git a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
index c2d4f0a240..2bf554dd78 100644
--- a/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
+++ b/tests/auto/corelib/kernel/qvariant/tst_qvariant.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -262,6 +262,19 @@ private slots:
void forwardDeclare();
void debugStream_data();
void debugStream();
+
+ void loadQt4Stream_data();
+ void loadQt4Stream();
+ void saveQt4Stream_data();
+ void saveQt4Stream();
+ void loadQt5Stream_data();
+ void loadQt5Stream();
+ void saveQt5Stream_data();
+ void saveQt5Stream();
+private:
+ void dataStream_data(QDataStream::Version version);
+ void loadQVariantFromDataStream(QDataStream::Version version);
+ void saveQVariantFromDataStream(QDataStream::Version version);
};
Q_DECLARE_METATYPE(QDate)
@@ -1906,7 +1919,7 @@ void tst_QVariant::typeName_data()
QTest::newRow("39") << int(QVariant::RectF) << QByteArray("QRectF");
QTest::newRow("40") << int(QVariant::PointF) << QByteArray("QPointF");
QTest::newRow("41") << int(QVariant::RegExp) << QByteArray("QRegExp");
- QTest::newRow("42") << int(QVariant::UserType) << QByteArray("UserType");
+ QTest::newRow("42") << int(QVariant::UserType) << QByteArray();
QTest::newRow("43") << int(QVariant::Matrix) << QByteArray("QMatrix");
QTest::newRow("44") << int(QVariant::Transform) << QByteArray("QTransform");
QTest::newRow("45") << int(QVariant::Hash) << QByteArray("QVariantHash");
@@ -1948,7 +1961,14 @@ void tst_QVariant::typeToName()
QVERIFY( QVariant::nameToType( 0 ) == QVariant::Invalid );
QVERIFY( QVariant::nameToType( "" ) == QVariant::Invalid );
QVERIFY( QVariant::nameToType( "foo" ) == QVariant::Invalid );
- QCOMPARE(QVariant::nameToType("QIconSet"), QVariant::Icon);
+
+ QCOMPARE(QVariant::nameToType("UserType"), QVariant::Invalid);
+
+ // We don't support these old (Qt3) types anymore.
+ QCOMPARE(QVariant::nameToType("QIconSet"), QVariant::Invalid);
+ QCOMPARE(QVariant::nameToType("Q3CString"), QVariant::Invalid);
+ QCOMPARE(QVariant::nameToType("Q_LLONG"), QVariant::Invalid);
+ QCOMPARE(QVariant::nameToType("Q_ULLONG"), QVariant::Invalid);
}
void tst_QVariant::streamInvalidVariant()
@@ -2003,13 +2023,6 @@ Q_DECLARE_METATYPE(MyType*)
void tst_QVariant::userType()
{
{
- QVariant userVariant(QVariant::UserType);
-
- QVERIFY(userVariant.isValid());
- QVERIFY(userVariant.isNull());
- }
-
- {
MyType data(1, "eins");
MyType data2(2, "zwei");
@@ -3248,6 +3261,34 @@ void tst_QVariant::moreCustomTypes()
PLAY_WITH_VARIANT(d, false, QString(), 0, false);
}
QCOMPARE(MyMovable::count, 0);
+
+ {
+ QList<QList<int> > data;
+ PLAY_WITH_VARIANT(data, false, QString(), 0, false);
+ data << (QList<int>() << 42);
+ PLAY_WITH_VARIANT(data, false, QString(), 0, false);
+ }
+
+ {
+ QList<QVector<int> > data;
+ PLAY_WITH_VARIANT(data, false, QString(), 0, false);
+ data << (QVector<int>() << 42);
+ PLAY_WITH_VARIANT(data, false, QString(), 0, false);
+ }
+
+ {
+ QList<QSet<int> > data;
+ PLAY_WITH_VARIANT(data, false, QString(), 0, false);
+ data << (QSet<int>() << 42);
+ PLAY_WITH_VARIANT(data, false, QString(), 0, false);
+ }
+
+ {
+ QList<QLinkedList<int> > data;
+ PLAY_WITH_VARIANT(data, false, QString(), 0, false);
+ data << (QLinkedList<int>() << 42);
+ PLAY_WITH_VARIANT(data, false, QString(), 0, false);
+ }
}
void tst_QVariant::movabilityTest()
@@ -3324,6 +3365,11 @@ void tst_QVariant::colorInteger()
}
class Forward;
+QT_BEGIN_NAMESPACE namespace QtPrivate {
+template <> struct IsPointerToTypeDerivedFromQObject<Forward*> {
+ enum { Value = false };
+};
+} QT_END_NAMESPACE
Q_DECLARE_METATYPE(Forward*);
void tst_QVariant::forwardDeclare()
@@ -3333,6 +3379,123 @@ void tst_QVariant::forwardDeclare()
QCOMPARE(qvariant_cast<Forward*>(v), f);
}
+void tst_QVariant::loadQt5Stream_data()
+{
+ dataStream_data(QDataStream::Qt_5_0);
+}
+
+void tst_QVariant::loadQt5Stream()
+{
+ loadQVariantFromDataStream(QDataStream::Qt_5_0);
+}
+
+void tst_QVariant::saveQt5Stream_data()
+{
+ dataStream_data(QDataStream::Qt_5_0);
+}
+
+void tst_QVariant::saveQt5Stream()
+{
+ saveQVariantFromDataStream(QDataStream::Qt_5_0);
+}
+
+void tst_QVariant::loadQt4Stream_data()
+{
+ dataStream_data(QDataStream::Qt_4_9);
+}
+
+void tst_QVariant::loadQt4Stream()
+{
+ loadQVariantFromDataStream(QDataStream::Qt_4_9);
+}
+
+void tst_QVariant::saveQt4Stream_data()
+{
+ dataStream_data(QDataStream::Qt_4_9);
+}
+
+void tst_QVariant::saveQt4Stream()
+{
+ saveQVariantFromDataStream(QDataStream::Qt_4_9);
+}
+
+void tst_QVariant::dataStream_data(QDataStream::Version version)
+{
+ QTest::addColumn<QString>("fileName");
+
+ QString path;
+ switch (version) {
+ case QDataStream::Qt_4_9:
+ path = QString::fromLatin1("qt4.9");
+ break;
+ case QDataStream::Qt_5_0:
+ path = QString::fromLatin1("qt5.0");
+ break;
+ default:
+ Q_UNIMPLEMENTED();
+ }
+
+ path = path.prepend(":/stream/").append("/");
+ QDir dir(path);
+ uint i = 0;
+ foreach (const QFileInfo &fileInfo, dir.entryInfoList(QStringList() << "*.bin")) {
+ QTest::newRow((path + fileInfo.fileName()).toLatin1()) << fileInfo.filePath();
+ i += 1;
+ }
+ QVERIFY(i > 10);
+}
+
+void tst_QVariant::loadQVariantFromDataStream(QDataStream::Version version)
+{
+ QFETCH(QString, fileName);
+
+ QFile file(fileName);
+ QVERIFY(file.open(QIODevice::ReadOnly));
+
+ QDataStream stream(&file);
+ stream.setVersion(version);
+
+ QString typeName;
+ QVariant loadedVariant;
+ stream >> typeName >> loadedVariant;
+
+ const int id = QMetaType::type(typeName.toLatin1());
+ QVariant constructedVariant(static_cast<QVariant::Type>(id));
+ QCOMPARE(constructedVariant.userType(), id);
+ QCOMPARE(QMetaType::typeName(loadedVariant.userType()), typeName.toLatin1().constData());
+ QCOMPARE(loadedVariant.userType(), constructedVariant.userType());
+}
+
+void tst_QVariant::saveQVariantFromDataStream(QDataStream::Version version)
+{
+ QFETCH(QString, fileName);
+
+ QFile file(fileName);
+ QVERIFY(file.open(QIODevice::ReadOnly));
+ QDataStream dataFileStream(&file);
+
+ QString typeName;
+ dataFileStream >> typeName;
+ QByteArray data = file.readAll();
+ const int id = QMetaType::type(typeName.toLatin1());
+
+ QBuffer buffer;
+ buffer.open(QIODevice::ReadWrite);
+ QDataStream stream(&buffer);
+ stream.setVersion(version);
+
+ QVariant constructedVariant(static_cast<QVariant::Type>(id));
+ QCOMPARE(constructedVariant.userType(), id);
+ stream << constructedVariant;
+
+ // We are testing QVariant there is no point in testing full array.
+ QCOMPARE(buffer.data().left(5), data.left(5));
+
+ buffer.seek(0);
+ QVariant recunstructedVariant;
+ stream >> recunstructedVariant;
+ QCOMPARE(recunstructedVariant.userType(), constructedVariant.userType());
+}
class MessageHandler {
public:
@@ -3392,6 +3555,5 @@ void tst_QVariant::debugStream()
QVERIFY(msgHandler.testPassed());
}
-
QTEST_MAIN(tst_QVariant)
#include "tst_qvariant.moc"
diff --git a/tests/auto/corelib/kernel/qwineventnotifier/tst_qwineventnotifier.cpp b/tests/auto/corelib/kernel/qwineventnotifier/tst_qwineventnotifier.cpp
index cd87bed601..0d3c4e0f88 100644
--- a/tests/auto/corelib/kernel/qwineventnotifier/tst_qwineventnotifier.cpp
+++ b/tests/auto/corelib/kernel/qwineventnotifier/tst_qwineventnotifier.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/plugin/qlibrary/lib/mylib.c b/tests/auto/corelib/plugin/qlibrary/lib/mylib.c
index 04a59f210c..8e32bb47af 100644
--- a/tests/auto/corelib/plugin/qlibrary/lib/mylib.c
+++ b/tests/auto/corelib/plugin/qlibrary/lib/mylib.c
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/plugin/qlibrary/lib2/mylib.c b/tests/auto/corelib/plugin/qlibrary/lib2/mylib.c
index 525f3e3aab..e68832cabc 100644
--- a/tests/auto/corelib/plugin/qlibrary/lib2/mylib.c
+++ b/tests/auto/corelib/plugin/qlibrary/lib2/mylib.c
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/plugin/qlibrary/tst_qlibrary.cpp b/tests/auto/corelib/plugin/qlibrary/tst_qlibrary.cpp
index 75f854667e..cff98de54f 100644
--- a/tests/auto/corelib/plugin/qlibrary/tst_qlibrary.cpp
+++ b/tests/auto/corelib/plugin/qlibrary/tst_qlibrary.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -103,8 +103,8 @@
static QString sys_qualifiedLibraryName(const QString &fileName)
{
- QString currDir = QDir::currentPath();
- return currDir + "/" + PREFIX + fileName + SUFFIX;
+ QString appDir = QCoreApplication::applicationDirPath();
+ return appDir + "/" + PREFIX + fileName + SUFFIX;
}
QT_FORWARD_DECLARE_CLASS(QLibrary)
@@ -170,8 +170,8 @@ void tst_QLibrary::version()
QFETCH( int, resultversion );
#if !defined(Q_OS_AIX) && !defined(Q_OS_WIN)
- QString currDir = QDir::currentPath();
- QLibrary library( currDir + QLatin1Char('/') + lib, loadversion );
+ QString appDir = QCoreApplication::applicationDirPath();
+ QLibrary library( appDir + QLatin1Char('/') + lib, loadversion );
QVERIFY2(library.load(), qPrintable(library.errorString()));
VersionFunction fnVersion = (VersionFunction)library.resolve("mylibversion");
@@ -190,24 +190,24 @@ void tst_QLibrary::load_data()
QTest::addColumn<QString>("lib");
QTest::addColumn<bool>("result");
- QString currDir = QDir::currentPath();
+ QString appDir = QCoreApplication::applicationDirPath();
- QTest::newRow( "ok00" ) << currDir + "/mylib" << true;
- QTest::newRow( "notexist" ) << currDir + "/nolib" << false;
- QTest::newRow( "badlibrary" ) << currDir + "/qlibrary.pro" << false;
+ QTest::newRow( "ok00" ) << appDir + "/mylib" << true;
+ QTest::newRow( "notexist" ) << appDir + "/nolib" << false;
+ QTest::newRow( "badlibrary" ) << appDir + "/qlibrary.pro" << false;
#ifdef Q_OS_MAC
- QTest::newRow("ok (libmylib ver. 1)") << currDir + "/libmylib" <<true;
+ QTest::newRow("ok (libmylib ver. 1)") << appDir + "/libmylib" <<true;
#endif
# if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
- QTest::newRow( "ok01 (with suffix)" ) << currDir + "/mylib.dll" << true;
- QTest::newRow( "ok02 (with non-standard suffix)" ) << currDir + "/mylib.dl2" << true;
- QTest::newRow( "ok03 (with many dots)" ) << currDir + "/system.qt.test.mylib.dll" << true;
+ QTest::newRow( "ok01 (with suffix)" ) << appDir + "/mylib.dll" << true;
+ QTest::newRow( "ok02 (with non-standard suffix)" ) << appDir + "/mylib.dl2" << true;
+ QTest::newRow( "ok03 (with many dots)" ) << appDir + "/system.qt.test.mylib.dll" << true;
# elif defined Q_OS_UNIX
- QTest::newRow( "ok01 (with suffix)" ) << currDir + "/libmylib" SUFFIX << true;
- QTest::newRow( "ok02 (with non-standard suffix)" ) << currDir + "/libmylib.so2" << true;
- QTest::newRow( "ok03 (with many dots)" ) << currDir + "/system.qt.test.mylib.so" << true;
+ QTest::newRow( "ok01 (with suffix)" ) << appDir + "/libmylib" SUFFIX << true;
+ QTest::newRow( "ok02 (with non-standard suffix)" ) << appDir + "/libmylib.so2" << true;
+ QTest::newRow( "ok03 (with many dots)" ) << appDir + "/system.qt.test.mylib.so" << true;
# endif // Q_OS_UNIX
}
@@ -231,14 +231,14 @@ void tst_QLibrary::unload_data()
QTest::addColumn<QString>("lib");
QTest::addColumn<bool>("result");
- QString currDir = QDir::currentPath();
+ QString appDir = QCoreApplication::applicationDirPath();
- QTest::newRow( "mylib" ) << currDir + "/mylib" << true;
+ QTest::newRow( "mylib" ) << appDir + "/mylib" << true;
#ifdef Q_OS_MAC
if (QSysInfo::MacintoshVersion <= QSysInfo::MV_10_3)
QEXPECT_FAIL("mylib", "dlcompat cannot unload libraries", Continue);
#endif
- QTest::newRow( "ok01" ) << currDir + "/nolib" << false;
+ QTest::newRow( "ok01" ) << appDir + "/nolib" << false;
}
void tst_QLibrary::unload()
@@ -272,11 +272,11 @@ void tst_QLibrary::resolve_data()
QTest::addColumn<QString>("symbol");
QTest::addColumn<bool>("goodPointer");
- QString currDir = QDir::currentPath();
+ QString appDir = QCoreApplication::applicationDirPath();
- QTest::newRow( "ok00" ) << currDir + "/mylib" << QString("mylibversion") << true;
- QTest::newRow( "bad00" ) << currDir + "/mylib" << QString("nosym") << false;
- QTest::newRow( "bad01" ) << currDir + "/nolib" << QString("nosym") << false;
+ QTest::newRow( "ok00" ) << appDir + "/mylib" << QString("mylibversion") << true;
+ QTest::newRow( "bad00" ) << appDir + "/mylib" << QString("nosym") << false;
+ QTest::newRow( "bad01" ) << appDir + "/nolib" << QString("nosym") << false;
}
void tst_QLibrary::resolve()
@@ -353,16 +353,16 @@ void tst_QLibrary::errorString_data()
QTest::addColumn<bool>("success");
QTest::addColumn<QString>("errorString");
- QString currDir = QDir::currentPath();
+ QString appDir = QCoreApplication::applicationDirPath();
QTest::newRow("bad load()") << (int)Load << QString("nosuchlib") << false << QString("Cannot load library nosuchlib: .*");
QTest::newRow("call errorString() on QLibrary with no d-pointer (crashtest)") << (int)(Load | DontSetFileName) << QString() << false << QString("Unknown error");
#ifdef Q_OS_WINCE
- QTest::newRow("bad resolve") << (int)Resolve << currDir + "/mylib" << false << QString("Cannot resolve symbol \"nosuchsymbol\" in .*: .*");
+ QTest::newRow("bad resolve") << (int)Resolve << appDir + "/mylib" << false << QString("Cannot resolve symbol \"nosuchsymbol\" in .*: .*");
#else
- QTest::newRow("bad resolve") << (int)Resolve << currDir + "/mylib" << false << QString("Cannot resolve symbol \"nosuchsymbol\" in \\S+: .*");
+ QTest::newRow("bad resolve") << (int)Resolve << appDir + "/mylib" << false << QString("Cannot resolve symbol \"nosuchsymbol\" in \\S+: .*");
#endif
- QTest::newRow("good resolve") << (int)Resolve << currDir + "/mylib" << true << QString("Unknown error");
+ QTest::newRow("good resolve") << (int)Resolve << appDir + "/mylib" << true << QString("Unknown error");
#ifdef Q_OS_WIN
QTest::newRow("bad load() with .dll suffix") << (int)Load << QString("nosuchlib.dll") << false << QString("Cannot load library nosuchlib.dll: The specified module could not be found.");
@@ -431,17 +431,17 @@ void tst_QLibrary::loadHints_data()
}
#endif
- QString currDir = QDir::currentPath();
+ QString appDir = QCoreApplication::applicationDirPath();
lh |= QLibrary::ResolveAllSymbolsHint;
# if defined(Q_OS_WIN32) || defined(Q_OS_WINCE)
- QTest::newRow( "ok01 (with suffix)" ) << currDir + "/mylib.dll" << int(lh) << true;
- QTest::newRow( "ok02 (with non-standard suffix)" ) << currDir + "/mylib.dl2" << int(lh) << true;
- QTest::newRow( "ok03 (with many dots)" ) << currDir + "/system.qt.test.mylib.dll" << int(lh) << true;
+ QTest::newRow( "ok01 (with suffix)" ) << appDir + "/mylib.dll" << int(lh) << true;
+ QTest::newRow( "ok02 (with non-standard suffix)" ) << appDir + "/mylib.dl2" << int(lh) << true;
+ QTest::newRow( "ok03 (with many dots)" ) << appDir + "/system.qt.test.mylib.dll" << int(lh) << true;
# elif defined Q_OS_UNIX
- QTest::newRow( "ok01 (with suffix)" ) << currDir + "/libmylib" SUFFIX << int(lh) << true;
- QTest::newRow( "ok02 (with non-standard suffix)" ) << currDir + "/libmylib.so2" << int(lh) << true;
- QTest::newRow( "ok03 (with many dots)" ) << currDir + "/system.qt.test.mylib.so" << int(lh) << true;
+ QTest::newRow( "ok01 (with suffix)" ) << appDir + "/libmylib" SUFFIX << int(lh) << true;
+ QTest::newRow( "ok02 (with non-standard suffix)" ) << appDir + "/libmylib.so2" << int(lh) << true;
+ QTest::newRow( "ok03 (with many dots)" ) << appDir + "/system.qt.test.mylib.so" << int(lh) << true;
# endif // Q_OS_UNIX
}
@@ -504,7 +504,7 @@ void tst_QLibrary::fileName()
void tst_QLibrary::multipleInstancesForOneLibrary()
{
- QString lib = QDir::currentPath() + "/mylib";
+ QString lib = QCoreApplication::applicationDirPath() + "/mylib";
{
QLibrary lib1(lib);
diff --git a/tests/auto/corelib/plugin/qplugin/debugplugin/main.cpp b/tests/auto/corelib/plugin/qplugin/debugplugin/main.cpp
index 3dc5ec377c..057db69174 100644
--- a/tests/auto/corelib/plugin/qplugin/debugplugin/main.cpp
+++ b/tests/auto/corelib/plugin/qplugin/debugplugin/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/plugin/qplugin/releaseplugin/main.cpp b/tests/auto/corelib/plugin/qplugin/releaseplugin/main.cpp
index 99f3c8f452..9542695112 100644
--- a/tests/auto/corelib/plugin/qplugin/releaseplugin/main.cpp
+++ b/tests/auto/corelib/plugin/qplugin/releaseplugin/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp b/tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp
index 63c1100c5c..e6a83cf3d7 100644
--- a/tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp
+++ b/tests/auto/corelib/plugin/qplugin/tst_qplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.cpp b/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.cpp
index 353b5e0158..4b2057087a 100644
--- a/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.cpp
+++ b/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.h b/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.h
index e4a9b376b2..6658a5be8d 100644
--- a/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.h
+++ b/tests/auto/corelib/plugin/qpluginloader/almostplugin/almostplugin.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/plugin/qpluginloader/lib/mylib.c b/tests/auto/corelib/plugin/qpluginloader/lib/mylib.c
index c87ec5b66d..043e857fc0 100644
--- a/tests/auto/corelib/plugin/qpluginloader/lib/mylib.c
+++ b/tests/auto/corelib/plugin/qpluginloader/lib/mylib.c
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/plugin/qpluginloader/theplugin/plugininterface.h b/tests/auto/corelib/plugin/qpluginloader/theplugin/plugininterface.h
index 92b7a1b4dc..a568dd118d 100644
--- a/tests/auto/corelib/plugin/qpluginloader/theplugin/plugininterface.h
+++ b/tests/auto/corelib/plugin/qpluginloader/theplugin/plugininterface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.cpp b/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.cpp
index 660dbd2b90..b064901a4d 100644
--- a/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.cpp
+++ b/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.h b/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.h
index e1ded8f07b..b769aa6eed 100644
--- a/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.h
+++ b/tests/auto/corelib/plugin/qpluginloader/theplugin/theplugin.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp b/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp
index bf046524d7..b79479ace8 100644
--- a/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp
+++ b/tests/auto/corelib/plugin/qpluginloader/tst_qpluginloader.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/plugin/quuid/testProcessUniqueness/main.cpp b/tests/auto/corelib/plugin/quuid/testProcessUniqueness/main.cpp
index 072d722cff..3012c532db 100644
--- a/tests/auto/corelib/plugin/quuid/testProcessUniqueness/main.cpp
+++ b/tests/auto/corelib/plugin/quuid/testProcessUniqueness/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/plugin/quuid/tst_quuid.cpp b/tests/auto/corelib/plugin/quuid/tst_quuid.cpp
index 789659cd04..ea88e4832e 100644
--- a/tests/auto/corelib/plugin/quuid/tst_quuid.cpp
+++ b/tests/auto/corelib/plugin/quuid/tst_quuid.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/statemachine/qstate/tst_qstate.cpp b/tests/auto/corelib/statemachine/qstate/tst_qstate.cpp
index 7ca7fc5120..841a111070 100644
--- a/tests/auto/corelib/statemachine/qstate/tst_qstate.cpp
+++ b/tests/auto/corelib/statemachine/qstate/tst_qstate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp b/tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp
index 2183016c32..6a06a3fb5b 100644
--- a/tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp
+++ b/tests/auto/corelib/statemachine/qstatemachine/tst_qstatemachine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp b/tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp
index f7969eb55e..a6d38ca078 100644
--- a/tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp
+++ b/tests/auto/corelib/thread/qatomicint/tst_qatomicint.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/thread/qatomicpointer/tst_qatomicpointer.cpp b/tests/auto/corelib/thread/qatomicpointer/tst_qatomicpointer.cpp
index ac83601414..a8f7e037d0 100644
--- a/tests/auto/corelib/thread/qatomicpointer/tst_qatomicpointer.cpp
+++ b/tests/auto/corelib/thread/qatomicpointer/tst_qatomicpointer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/thread/qmutex/tst_qmutex.cpp b/tests/auto/corelib/thread/qmutex/tst_qmutex.cpp
index 6669a5c4b4..72670ab33f 100644
--- a/tests/auto/corelib/thread/qmutex/tst_qmutex.cpp
+++ b/tests/auto/corelib/thread/qmutex/tst_qmutex.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/thread/qmutexlocker/tst_qmutexlocker.cpp b/tests/auto/corelib/thread/qmutexlocker/tst_qmutexlocker.cpp
index e92dddca95..33ea2bedb4 100644
--- a/tests/auto/corelib/thread/qmutexlocker/tst_qmutexlocker.cpp
+++ b/tests/auto/corelib/thread/qmutexlocker/tst_qmutexlocker.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/thread/qreadlocker/tst_qreadlocker.cpp b/tests/auto/corelib/thread/qreadlocker/tst_qreadlocker.cpp
index 4ba28f60ef..58819dad4b 100644
--- a/tests/auto/corelib/thread/qreadlocker/tst_qreadlocker.cpp
+++ b/tests/auto/corelib/thread/qreadlocker/tst_qreadlocker.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/thread/qreadwritelock/tst_qreadwritelock.cpp b/tests/auto/corelib/thread/qreadwritelock/tst_qreadwritelock.cpp
index 418ae02add..2fcce773bc 100644
--- a/tests/auto/corelib/thread/qreadwritelock/tst_qreadwritelock.cpp
+++ b/tests/auto/corelib/thread/qreadwritelock/tst_qreadwritelock.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/thread/qsemaphore/tst_qsemaphore.cpp b/tests/auto/corelib/thread/qsemaphore/tst_qsemaphore.cpp
index 2901e8f6c9..1d54c8e036 100644
--- a/tests/auto/corelib/thread/qsemaphore/tst_qsemaphore.cpp
+++ b/tests/auto/corelib/thread/qsemaphore/tst_qsemaphore.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/thread/qthread/tst_qthread.cpp b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
index 1afd913fe9..25e1a0587c 100644
--- a/tests/auto/corelib/thread/qthread/tst_qthread.cpp
+++ b/tests/auto/corelib/thread/qthread/tst_qthread.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/thread/qthreadonce/qthreadonce.cpp b/tests/auto/corelib/thread/qthreadonce/qthreadonce.cpp
index c37823436a..6d63a4b6ea 100644
--- a/tests/auto/corelib/thread/qthreadonce/qthreadonce.cpp
+++ b/tests/auto/corelib/thread/qthreadonce/qthreadonce.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/thread/qthreadonce/qthreadonce.h b/tests/auto/corelib/thread/qthreadonce/qthreadonce.h
index 3c5a42e814..6fc937efa9 100644
--- a/tests/auto/corelib/thread/qthreadonce/qthreadonce.h
+++ b/tests/auto/corelib/thread/qthreadonce/qthreadonce.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@
QT_BEGIN_HEADER
-QT_MODULE(Core)
#ifndef QT_NO_THREAD
diff --git a/tests/auto/corelib/thread/qthreadonce/tst_qthreadonce.cpp b/tests/auto/corelib/thread/qthreadonce/tst_qthreadonce.cpp
index 81f57215cc..8d4ee73d7f 100644
--- a/tests/auto/corelib/thread/qthreadonce/tst_qthreadonce.cpp
+++ b/tests/auto/corelib/thread/qthreadonce/tst_qthreadonce.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/concurrent/qthreadpool/.gitignore b/tests/auto/corelib/thread/qthreadpool/.gitignore
index 16105821a2..16105821a2 100644
--- a/tests/auto/corelib/concurrent/qthreadpool/.gitignore
+++ b/tests/auto/corelib/thread/qthreadpool/.gitignore
diff --git a/tests/auto/corelib/concurrent/qthreadpool/qthreadpool.pro b/tests/auto/corelib/thread/qthreadpool/qthreadpool.pro
index 4d81218f24..4d81218f24 100644
--- a/tests/auto/corelib/concurrent/qthreadpool/qthreadpool.pro
+++ b/tests/auto/corelib/thread/qthreadpool/qthreadpool.pro
diff --git a/tests/auto/corelib/thread/qthreadpool/tst_qthreadpool.cpp b/tests/auto/corelib/thread/qthreadpool/tst_qthreadpool.cpp
new file mode 100644
index 0000000000..1dd0410f41
--- /dev/null
+++ b/tests/auto/corelib/thread/qthreadpool/tst_qthreadpool.cpp
@@ -0,0 +1,849 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <QtTest/QtTest>
+#include <qdatetime.h>
+#include <qthreadpool.h>
+#include <qstring.h>
+#include <qmutex.h>
+
+typedef void (*FunctionPointer)();
+
+class FunctionPointerTask : public QRunnable
+{
+public:
+ FunctionPointerTask(FunctionPointer function)
+ :function(function) {}
+ void run() { function(); }
+private:
+ FunctionPointer function;
+};
+
+QRunnable *createTask(FunctionPointer pointer)
+{
+ return new FunctionPointerTask(pointer);
+}
+
+class tst_QThreadPool : public QObject
+{
+ Q_OBJECT
+private slots:
+ void runFunction();
+ void createThreadRunFunction();
+ void runMultiple();
+ void waitcomplete();
+ void runTask();
+ void singleton();
+ void destruction();
+ void threadRecycling();
+ void expiryTimeout();
+#ifndef QT_NO_EXCEPTIONS
+ void exceptions();
+#endif
+ void setMaxThreadCount_data();
+ void setMaxThreadCount();
+ void setMaxThreadCountStartsAndStopsThreads();
+ void reserveThread_data();
+ void reserveThread();
+ void releaseThread_data();
+ void releaseThread();
+ void start();
+ void tryStart();
+ void tryStartPeakThreadCount();
+ void tryStartCount();
+ void waitForDone();
+ void waitForDoneTimeout();
+ void destroyingWaitsForTasksToFinish();
+ void stressTest();
+};
+
+int testFunctionCount;
+
+void sleepTestFunction()
+{
+ QTest::qSleep(1000);
+ ++testFunctionCount;
+}
+
+void emptyFunct()
+{
+
+}
+
+void noSleepTestFunction()
+{
+ ++testFunctionCount;
+}
+
+void sleepTestFunctionMutex()
+{
+ static QMutex testMutex;
+ QTest::qSleep(1000);
+ testMutex.lock();
+ ++testFunctionCount;
+ testMutex.unlock();
+}
+
+void noSleepTestFunctionMutex()
+{
+ static QMutex testMutex;
+ testMutex.lock();
+ ++testFunctionCount;
+ testMutex.unlock();
+}
+
+void tst_QThreadPool::runFunction()
+{
+ {
+ QThreadPool manager;
+ testFunctionCount = 0;
+ manager.start(createTask(noSleepTestFunction));
+ }
+ QCOMPARE(testFunctionCount, 1);
+}
+
+void tst_QThreadPool::createThreadRunFunction()
+{
+ {
+ QThreadPool manager;
+ testFunctionCount = 0;
+ manager.start(createTask(noSleepTestFunction));
+ }
+
+ QCOMPARE(testFunctionCount, 1);
+}
+
+void tst_QThreadPool::runMultiple()
+{
+ const int runs = 10;
+
+ {
+ QThreadPool manager;
+ testFunctionCount = 0;
+ for (int i = 0; i < runs; ++i) {
+ manager.start(createTask(sleepTestFunctionMutex));
+ }
+ }
+ QCOMPARE(testFunctionCount, runs);
+
+ {
+ QThreadPool manager;
+ testFunctionCount = 0;
+ for (int i = 0; i < runs; ++i) {
+ manager.start(createTask(noSleepTestFunctionMutex));
+ }
+ }
+ QCOMPARE(testFunctionCount, runs);
+
+ {
+ QThreadPool manager;
+ for (int i = 0; i < 500; ++i)
+ manager.start(createTask(emptyFunct));
+ }
+}
+
+void tst_QThreadPool::waitcomplete()
+{
+ testFunctionCount = 0;
+ const int runs = 500;
+ for (int i = 0; i < 500; ++i) {
+ QThreadPool pool;
+ pool.start(createTask(noSleepTestFunction));
+ }
+ QCOMPARE(testFunctionCount, runs);
+}
+
+volatile bool ran;
+class TestTask : public QRunnable
+{
+public:
+ void run()
+ {
+ ran = true;
+ }
+};
+
+void tst_QThreadPool::runTask()
+{
+ QThreadPool manager;
+ ran = false;
+ manager.start(new TestTask());
+ QTRY_VERIFY(ran);
+}
+
+/*
+ Test running via QThreadPool::globalInstance()
+*/
+void tst_QThreadPool::singleton()
+{
+ ran = false;
+ QThreadPool::globalInstance()->start(new TestTask());
+ QTRY_VERIFY(ran);
+}
+
+int *value = 0;
+class IntAccessor : public QRunnable
+{
+public:
+ void run()
+ {
+ for (int i = 0; i < 100; ++i) {
+ ++(*value);
+ QTest::qSleep(1);
+ }
+ }
+};
+
+/*
+ Test that the ThreadManager destructor waits until
+ all threads have completed.
+*/
+void tst_QThreadPool::destruction()
+{
+ value = new int;
+ QThreadPool *threadManager = new QThreadPool();
+ threadManager->start(new IntAccessor());
+ threadManager->start(new IntAccessor());
+ delete threadManager;
+ delete value;
+ value = 0;
+}
+
+QSemaphore threadRecyclingSemaphore;
+QThread *recycledThread = 0;
+
+class ThreadRecorderTask : public QRunnable
+{
+public:
+ void run()
+ {
+ recycledThread = QThread::currentThread();
+ threadRecyclingSemaphore.release();
+ }
+};
+
+/*
+ Test that the thread pool really reuses threads.
+*/
+void tst_QThreadPool::threadRecycling()
+{
+ QThreadPool threadPool;
+
+ threadPool.start(new ThreadRecorderTask());
+ threadRecyclingSemaphore.acquire();
+ QThread *thread1 = recycledThread;
+
+ QTest::qSleep(100);
+
+ threadPool.start(new ThreadRecorderTask());
+ threadRecyclingSemaphore.acquire();
+ QThread *thread2 = recycledThread;
+ QCOMPARE(thread1, thread2);
+
+ QTest::qSleep(100);
+
+ threadPool.start(new ThreadRecorderTask());
+ threadRecyclingSemaphore.acquire();
+ QThread *thread3 = recycledThread;
+ QCOMPARE(thread2, thread3);
+}
+
+class ExpiryTimeoutTask : public QRunnable
+{
+public:
+ QThread *thread;
+ int runCount;
+ QSemaphore semaphore;
+
+ ExpiryTimeoutTask()
+ : thread(0), runCount(0)
+ {
+ setAutoDelete(false);
+ }
+
+ void run()
+ {
+ thread = QThread::currentThread();
+ ++runCount;
+ semaphore.release();
+ }
+};
+
+void tst_QThreadPool::expiryTimeout()
+{
+ ExpiryTimeoutTask task;
+
+ QThreadPool threadPool;
+ threadPool.setMaxThreadCount(1);
+
+ int expiryTimeout = threadPool.expiryTimeout();
+ threadPool.setExpiryTimeout(1000);
+ QCOMPARE(threadPool.expiryTimeout(), 1000);
+
+ // run the task
+ threadPool.start(&task);
+ QVERIFY(task.semaphore.tryAcquire(1, 10000));
+ QCOMPARE(task.runCount, 1);
+ QVERIFY(!task.thread->wait(100));
+ // thread should expire
+ QThread *firstThread = task.thread;
+ QVERIFY(task.thread->wait(10000));
+
+ // run task again, thread should be restarted
+ threadPool.start(&task);
+ QVERIFY(task.semaphore.tryAcquire(1, 10000));
+ QCOMPARE(task.runCount, 2);
+ QVERIFY(!task.thread->wait(100));
+ // thread should expire again
+ QVERIFY(task.thread->wait(10000));
+
+ // thread pool should have reused the expired thread (instead of
+ // starting a new one)
+ QCOMPARE(firstThread, task.thread);
+
+ threadPool.setExpiryTimeout(expiryTimeout);
+ QCOMPARE(threadPool.expiryTimeout(), expiryTimeout);
+}
+
+#ifndef QT_NO_EXCEPTIONS
+class ExceptionTask : public QRunnable
+{
+public:
+ void run()
+ {
+ throw new int;
+ }
+};
+
+void tst_QThreadPool::exceptions()
+{
+ ExceptionTask task;
+ {
+ QThreadPool threadPool;
+// Uncomment this for a nice crash.
+// threadPool.start(&task);
+ }
+}
+#endif
+
+void tst_QThreadPool::setMaxThreadCount_data()
+{
+ QTest::addColumn<int>("limit");
+
+ QTest::newRow("") << 1;
+ QTest::newRow("") << -1;
+ QTest::newRow("") << 2;
+ QTest::newRow("") << -2;
+ QTest::newRow("") << 4;
+ QTest::newRow("") << -4;
+ QTest::newRow("") << 0;
+ QTest::newRow("") << 12345;
+ QTest::newRow("") << -6789;
+ QTest::newRow("") << 42;
+ QTest::newRow("") << -666;
+}
+
+void tst_QThreadPool::setMaxThreadCount()
+{
+ QFETCH(int, limit);
+ QThreadPool *threadPool = QThreadPool::globalInstance();
+ int savedLimit = threadPool->maxThreadCount();
+
+ // maxThreadCount() should always return the previous argument to
+ // setMaxThreadCount(), regardless of input
+ threadPool->setMaxThreadCount(limit);
+ QCOMPARE(threadPool->maxThreadCount(), limit);
+
+ // the value returned from maxThreadCount() should always be valid input for setMaxThreadCount()
+ threadPool->setMaxThreadCount(savedLimit);
+ QCOMPARE(threadPool->maxThreadCount(), savedLimit);
+
+ // setting the limit on children should have no effect on the parent
+ {
+ QThreadPool threadPool2(threadPool);
+ savedLimit = threadPool2.maxThreadCount();
+
+ // maxThreadCount() should always return the previous argument to
+ // setMaxThreadCount(), regardless of input
+ threadPool2.setMaxThreadCount(limit);
+ QCOMPARE(threadPool2.maxThreadCount(), limit);
+
+ // the value returned from maxThreadCount() should always be valid input for setMaxThreadCount()
+ threadPool2.setMaxThreadCount(savedLimit);
+ QCOMPARE(threadPool2.maxThreadCount(), savedLimit);
+ }
+}
+
+void tst_QThreadPool::setMaxThreadCountStartsAndStopsThreads()
+{
+ class WaitingTask : public QRunnable
+ {
+ public:
+ QSemaphore waitForStarted, waitToFinish;
+
+ WaitingTask() { setAutoDelete(false); }
+
+ void run()
+ {
+ waitForStarted.release();
+ waitToFinish.acquire();
+ }
+ };
+
+ QThreadPool threadPool;
+ threadPool.setMaxThreadCount(1);
+
+ WaitingTask *task = new WaitingTask;
+ threadPool.start(task);
+ QVERIFY(task->waitForStarted.tryAcquire(1, 1000));
+
+ // thread limit is 1, cannot start more tasks
+ threadPool.start(task);
+ QVERIFY(!task->waitForStarted.tryAcquire(1, 1000));
+
+ // increasing the limit by 1 should start the task immediately
+ threadPool.setMaxThreadCount(2);
+ QVERIFY(task->waitForStarted.tryAcquire(1, 1000));
+
+ // ... but we still cannot start more tasks
+ threadPool.start(task);
+ QVERIFY(!task->waitForStarted.tryAcquire(1, 1000));
+
+ // increasing the limit should be able to start more than one at a time
+ threadPool.start(task);
+ threadPool.setMaxThreadCount(4);
+ QVERIFY(task->waitForStarted.tryAcquire(2, 1000));
+
+ // ... but we still cannot start more tasks
+ threadPool.start(task);
+ threadPool.start(task);
+ QVERIFY(!task->waitForStarted.tryAcquire(2, 1000));
+
+ // decreasing the thread limit should cause the active thread count to go down
+ threadPool.setMaxThreadCount(2);
+ QCOMPARE(threadPool.activeThreadCount(), 4);
+ task->waitToFinish.release(2);
+ QTest::qWait(1000);
+ QCOMPARE(threadPool.activeThreadCount(), 2);
+
+ // ... and we still cannot start more tasks
+ threadPool.start(task);
+ threadPool.start(task);
+ QVERIFY(!task->waitForStarted.tryAcquire(2, 1000));
+
+ // start all remaining tasks
+ threadPool.start(task);
+ threadPool.start(task);
+ threadPool.start(task);
+ threadPool.start(task);
+ threadPool.setMaxThreadCount(8);
+ QVERIFY(task->waitForStarted.tryAcquire(6, 1000));
+
+ task->waitToFinish.release(10);
+// delete task;
+}
+
+void tst_QThreadPool::reserveThread_data()
+{
+ setMaxThreadCount_data();
+}
+
+void tst_QThreadPool::reserveThread()
+{
+ QFETCH(int, limit);
+ QThreadPool *threadpool = QThreadPool::globalInstance();
+ int savedLimit = threadpool->maxThreadCount();
+ threadpool->setMaxThreadCount(limit);
+
+ // reserve up to the limit
+ for (int i = 0; i < limit; ++i)
+ threadpool->reserveThread();
+
+ // reserveThread() should always reserve a thread, regardless of
+ // how many have been previously reserved
+ threadpool->reserveThread();
+ QCOMPARE(threadpool->activeThreadCount(), (limit > 0 ? limit : 0) + 1);
+ threadpool->reserveThread();
+ QCOMPARE(threadpool->activeThreadCount(), (limit > 0 ? limit : 0) + 2);
+
+ // cleanup
+ threadpool->releaseThread();
+ threadpool->releaseThread();
+ for (int i = 0; i < limit; ++i)
+ threadpool->releaseThread();
+
+ // reserving threads in children should not effect the parent
+ {
+ QThreadPool threadpool2(threadpool);
+ threadpool2.setMaxThreadCount(limit);
+
+ // reserve up to the limit
+ for (int i = 0; i < limit; ++i)
+ threadpool2.reserveThread();
+
+ // reserveThread() should always reserve a thread, regardless
+ // of how many have been previously reserved
+ threadpool2.reserveThread();
+ QCOMPARE(threadpool2.activeThreadCount(), (limit > 0 ? limit : 0) + 1);
+ threadpool2.reserveThread();
+ QCOMPARE(threadpool2.activeThreadCount(), (limit > 0 ? limit : 0) + 2);
+
+ threadpool->reserveThread();
+ QCOMPARE(threadpool->activeThreadCount(), 1);
+ threadpool->reserveThread();
+ QCOMPARE(threadpool->activeThreadCount(), 2);
+
+ // cleanup
+ threadpool2.releaseThread();
+ threadpool2.releaseThread();
+ threadpool->releaseThread();
+ threadpool->releaseThread();
+ while (threadpool2.activeThreadCount() > 0)
+ threadpool2.releaseThread();
+ }
+
+ // reset limit on global QThreadPool
+ threadpool->setMaxThreadCount(savedLimit);
+}
+
+void tst_QThreadPool::releaseThread_data()
+{
+ setMaxThreadCount_data();
+}
+
+void tst_QThreadPool::releaseThread()
+{
+ QFETCH(int, limit);
+ QThreadPool *threadpool = QThreadPool::globalInstance();
+ int savedLimit = threadpool->maxThreadCount();
+ threadpool->setMaxThreadCount(limit);
+
+ // reserve up to the limit
+ for (int i = 0; i < limit; ++i)
+ threadpool->reserveThread();
+
+ // release should decrease the number of reserved threads
+ int reserved = threadpool->activeThreadCount();
+ while (reserved-- > 0) {
+ threadpool->releaseThread();
+ QCOMPARE(threadpool->activeThreadCount(), reserved);
+ }
+ QCOMPARE(threadpool->activeThreadCount(), 0);
+
+ // releaseThread() can release more than have been reserved
+ threadpool->releaseThread();
+ QCOMPARE(threadpool->activeThreadCount(), -1);
+ threadpool->reserveThread();
+ QCOMPARE(threadpool->activeThreadCount(), 0);
+
+ // releasing threads in children should not effect the parent
+ {
+ QThreadPool threadpool2(threadpool);
+ threadpool2.setMaxThreadCount(limit);
+
+ // reserve up to the limit
+ for (int i = 0; i < limit; ++i)
+ threadpool2.reserveThread();
+
+ // release should decrease the number of reserved threads
+ int reserved = threadpool2.activeThreadCount();
+ while (reserved-- > 0) {
+ threadpool2.releaseThread();
+ QCOMPARE(threadpool2.activeThreadCount(), reserved);
+ QCOMPARE(threadpool->activeThreadCount(), 0);
+ }
+ QCOMPARE(threadpool2.activeThreadCount(), 0);
+ QCOMPARE(threadpool->activeThreadCount(), 0);
+
+ // releaseThread() can release more than have been reserved
+ threadpool2.releaseThread();
+ QCOMPARE(threadpool2.activeThreadCount(), -1);
+ QCOMPARE(threadpool->activeThreadCount(), 0);
+ threadpool2.reserveThread();
+ QCOMPARE(threadpool2.activeThreadCount(), 0);
+ QCOMPARE(threadpool->activeThreadCount(), 0);
+ }
+
+ // reset limit on global QThreadPool
+ threadpool->setMaxThreadCount(savedLimit);
+}
+
+QAtomicInt count;
+class CountingRunnable : public QRunnable
+{
+ public: void run()
+ {
+ count.ref();
+ }
+};
+
+void tst_QThreadPool::start()
+{
+ const int runs = 1000;
+ count.store(0);
+ {
+ QThreadPool threadPool;
+ for (int i = 0; i< runs; ++i) {
+ threadPool.start(new CountingRunnable());
+ }
+ }
+ QCOMPARE(count.load(), runs);
+}
+
+void tst_QThreadPool::tryStart()
+{
+ class WaitingTask : public QRunnable
+ {
+ public:
+ QSemaphore semaphore;
+
+ WaitingTask() { setAutoDelete(false); }
+
+ void run()
+ {
+ semaphore.acquire();
+ count.ref();
+ }
+ };
+
+ count.store(0);
+
+ WaitingTask task;
+ QThreadPool threadPool;
+ for (int i = 0; i < threadPool.maxThreadCount(); ++i) {
+ threadPool.start(&task);
+ }
+ QVERIFY(!threadPool.tryStart(&task));
+ task.semaphore.release(threadPool.maxThreadCount());
+ threadPool.waitForDone();
+ QCOMPARE(count.load(), threadPool.maxThreadCount());
+}
+
+QMutex mutex;
+int activeThreads = 0;
+int peakActiveThreads = 0;
+void tst_QThreadPool::tryStartPeakThreadCount()
+{
+ class CounterTask : public QRunnable
+ {
+ public:
+ CounterTask() { setAutoDelete(false); }
+
+ void run()
+ {
+ {
+ QMutexLocker lock(&mutex);
+ ++activeThreads;
+ peakActiveThreads = qMax(peakActiveThreads, activeThreads);
+ }
+
+ QTest::qWait(100);
+ {
+ QMutexLocker lock(&mutex);
+ --activeThreads;
+ }
+ }
+ };
+
+ CounterTask task;
+ QThreadPool threadPool;
+
+ for (int i = 0; i < 20; ++i) {
+ if (threadPool.tryStart(&task) == false)
+ QTest::qWait(10);
+ }
+ QCOMPARE(peakActiveThreads, QThread::idealThreadCount());
+
+ for (int i = 0; i < 20; ++i) {
+ if (threadPool.tryStart(&task) == false)
+ QTest::qWait(10);
+ }
+ QCOMPARE(peakActiveThreads, QThread::idealThreadCount());
+}
+
+void tst_QThreadPool::tryStartCount()
+{
+ class SleeperTask : public QRunnable
+ {
+ public:
+ SleeperTask() { setAutoDelete(false); }
+
+ void run()
+ {
+ QTest::qWait(50);
+ }
+ };
+
+ SleeperTask task;
+ QThreadPool threadPool;
+ const int runs = 5;
+
+ for (int i = 0; i < runs; ++i) {
+ int count = 0;
+ while (threadPool.tryStart(&task))
+ ++count;
+ QCOMPARE(count, QThread::idealThreadCount());
+
+ QTest::qWait(100);
+ }
+}
+
+void tst_QThreadPool::waitForDone()
+{
+ QTime total, pass;
+ total.start();
+
+ QThreadPool threadPool;
+ while (total.elapsed() < 10000) {
+ int runs;
+ count.store(runs = 0);
+ pass.restart();
+ while (pass.elapsed() < 100) {
+ threadPool.start(new CountingRunnable());
+ ++runs;
+ }
+ threadPool.waitForDone();
+ QCOMPARE(count.load(), runs);
+
+ count.store(runs = 0);
+ pass.restart();
+ while (pass.elapsed() < 100) {
+ threadPool.start(new CountingRunnable());
+ threadPool.start(new CountingRunnable());
+ runs += 2;
+ }
+ threadPool.waitForDone();
+ QCOMPARE(count.load(), runs);
+ }
+}
+
+void tst_QThreadPool::waitForDoneTimeout()
+{
+ class BlockedTask : public QRunnable
+ {
+ public:
+ QMutex mutex;
+ BlockedTask() { setAutoDelete(false); }
+
+ void run()
+ {
+ mutex.lock();
+ mutex.unlock();
+ QTest::qSleep(50);
+ }
+ };
+
+ QThreadPool threadPool;
+
+ BlockedTask *task = new BlockedTask;
+ task->mutex.lock();
+ threadPool.start(task);
+ QVERIFY(!threadPool.waitForDone(100));
+ task->mutex.unlock();
+ QVERIFY(threadPool.waitForDone(400));
+}
+
+void tst_QThreadPool::destroyingWaitsForTasksToFinish()
+{
+ QTime total, pass;
+ total.start();
+
+ while (total.elapsed() < 10000) {
+ int runs;
+ count.store(runs = 0);
+ {
+ QThreadPool threadPool;
+ pass.restart();
+ while (pass.elapsed() < 100) {
+ threadPool.start(new CountingRunnable());
+ ++runs;
+ }
+ }
+ QCOMPARE(count.load(), runs);
+
+ count.store(runs = 0);
+ {
+ QThreadPool threadPool;
+ pass.restart();
+ while (pass.elapsed() < 100) {
+ threadPool.start(new CountingRunnable());
+ threadPool.start(new CountingRunnable());
+ runs += 2;
+ }
+ }
+ QCOMPARE(count.load(), runs);
+ }
+}
+
+void tst_QThreadPool::stressTest()
+{
+ class Task : public QRunnable
+ {
+ QSemaphore semaphore;
+ public:
+ Task() { setAutoDelete(false); }
+
+ void start()
+ {
+ QThreadPool::globalInstance()->start(this);
+ }
+
+ void wait()
+ {
+ semaphore.acquire();
+ }
+
+ void run()
+ {
+ semaphore.release();
+ }
+ };
+
+ QTime total;
+ total.start();
+ while (total.elapsed() < 30000) {
+ Task t;
+ t.start();
+ t.wait();
+ }
+}
+
+QTEST_MAIN(tst_QThreadPool);
+#include "tst_qthreadpool.moc"
diff --git a/tests/auto/corelib/thread/qthreadstorage/crashOnExit.cpp b/tests/auto/corelib/thread/qthreadstorage/crashOnExit.cpp
index 4c5fcf916a..388c233d84 100644
--- a/tests/auto/corelib/thread/qthreadstorage/crashOnExit.cpp
+++ b/tests/auto/corelib/thread/qthreadstorage/crashOnExit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp b/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
index c74b85154f..fff361ea2a 100644
--- a/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
+++ b/tests/auto/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/thread/qwaitcondition/tst_qwaitcondition.cpp b/tests/auto/corelib/thread/qwaitcondition/tst_qwaitcondition.cpp
index 6bb562e146..578f867032 100644
--- a/tests/auto/corelib/thread/qwaitcondition/tst_qwaitcondition.cpp
+++ b/tests/auto/corelib/thread/qwaitcondition/tst_qwaitcondition.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/thread/qwritelocker/tst_qwritelocker.cpp b/tests/auto/corelib/thread/qwritelocker/tst_qwritelocker.cpp
index f975351e32..7481b9d9f1 100644
--- a/tests/auto/corelib/thread/qwritelocker/tst_qwritelocker.cpp
+++ b/tests/auto/corelib/thread/qwritelocker/tst_qwritelocker.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/thread/thread.pro b/tests/auto/corelib/thread/thread.pro
index a137748b75..12a284c7c7 100644
--- a/tests/auto/corelib/thread/thread.pro
+++ b/tests/auto/corelib/thread/thread.pro
@@ -9,6 +9,7 @@ SUBDIRS=\
qsemaphore \
qthread \
qthreadonce \
+ qthreadpool \
qthreadstorage \
qwaitcondition \
qwritelocker
diff --git a/tests/auto/corelib/tools/qalgorithms/tst_qalgorithms.cpp b/tests/auto/corelib/tools/qalgorithms/tst_qalgorithms.cpp
index 5735c4043b..1d7cb1e903 100644
--- a/tests/auto/corelib/tools/qalgorithms/tst_qalgorithms.cpp
+++ b/tests/auto/corelib/tools/qalgorithms/tst_qalgorithms.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -105,29 +105,24 @@ QVector<DataType> generateData(QString dataSetType, const int length)
{
QVector<DataType> container;
if (dataSetType == "Random") {
- for(int i=0; i < length; ++i)
+ for (int i = 0; i < length; ++i)
container.append(rand());
- }
- else if (dataSetType == "Ascending") {
- for (int i=0; i < length; ++i)
+ } else if (dataSetType == "Ascending") {
+ for (int i = 0; i < length; ++i)
container.append(i);
- }
- else if (dataSetType == "Descending") {
- for (int i=0; i < length; ++i)
+ } else if (dataSetType == "Descending") {
+ for (int i = 0; i < length; ++i)
container.append(length - i);
- }
- else if (dataSetType == "Equal") {
- for (int i=0; i < length; ++i)
+ } else if (dataSetType == "Equal") {
+ for (int i = 0; i < length; ++i)
container.append(43);
- }
- else if (dataSetType == "Duplicates") {
- for (int i=0; i < length; ++i)
+ } else if (dataSetType == "Duplicates") {
+ for (int i = 0; i < length; ++i)
container.append(i % 10);
- }
- else if (dataSetType == "Almost Sorted") {
- for (int i=0; i < length; ++i)
+ } else if (dataSetType == "Almost Sorted") {
+ for (int i = 0; i < length; ++i)
container.append(i);
- for(int i = 0; i<= length / 10; ++i) {
+ for (int i = 0; i <= length / 10; ++i) {
const int iswap = i * 9;
DataType tmp = container.at(iswap);
container[iswap] = container.at(iswap + 1);
diff --git a/tests/auto/corelib/tools/qbitarray/tst_qbitarray.cpp b/tests/auto/corelib/tools/qbitarray/tst_qbitarray.cpp
index 9ee006827f..588506534a 100644
--- a/tests/auto/corelib/tools/qbitarray/tst_qbitarray.cpp
+++ b/tests/auto/corelib/tools/qbitarray/tst_qbitarray.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp b/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp
index 5b660ecd3f..585d6afa44 100644
--- a/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp
+++ b/tests/auto/corelib/tools/qbytearray/tst_qbytearray.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -130,7 +130,8 @@ private slots:
void byteRefDetaching() const;
void reserve();
-
+ void movablity_data();
+ void movablity();
void literals();
};
@@ -1497,6 +1498,85 @@ void tst_QByteArray::reserve()
nil2.reserve(0);
}
+void tst_QByteArray::movablity_data()
+{
+ QTest::addColumn<QByteArray>("array");
+
+ QTest::newRow("0x00000000") << QByteArray("\x00\x00\x00\x00", 4);
+ QTest::newRow("0x000000ff") << QByteArray("\x00\x00\x00\xff", 4);
+ QTest::newRow("0xffffffff") << QByteArray("\xff\xff\xff\xff", 4);
+ QTest::newRow("empty") << QByteArray("");
+ QTest::newRow("null") << QByteArray();
+ QTest::newRow("sss") << QByteArray(3, 's');
+}
+
+void tst_QByteArray::movablity()
+{
+ QFETCH(QByteArray, array);
+
+ QVERIFY(!QTypeInfo<QByteArray>::isStatic);
+
+ const int size = array.size();
+ const bool isEmpty = array.isEmpty();
+ const bool isNull = array.isNull();
+ const int capacity = array.capacity();
+
+ QByteArray memSpace;
+
+ // we need only memory space not the instance
+ memSpace.~QByteArray();
+ // move array -> memSpace
+ memcpy(&memSpace, &array, sizeof(QByteArray));
+ // reconstruct empty QByteArray
+ new (&array) QByteArray;
+
+ QCOMPARE(memSpace.size(), size);
+ QCOMPARE(memSpace.isEmpty(), isEmpty);
+ QCOMPARE(memSpace.isNull(), isNull);
+ QCOMPARE(memSpace.capacity(), capacity);
+
+ // try to not crash
+ memSpace.toLower();
+ memSpace.toUpper();
+ memSpace.prepend('a');
+ memSpace.append("b", 1);
+ memSpace.squeeze();
+ memSpace.reserve(array.size() + 16);
+
+ QByteArray copy(memSpace);
+
+ // reinitialize base values
+ const int newSize = size + 2;
+ const bool newIsEmpty = false;
+ const bool newIsNull = false;
+ const int newCapacity = 16;
+
+ // move back memSpace -> array
+ array.~QByteArray();
+ memcpy(&array, &memSpace, sizeof(QByteArray));
+ // reconstruct empty QByteArray
+ new (&memSpace) QByteArray;
+
+ QCOMPARE(array.size(), newSize);
+ QCOMPARE(array.isEmpty(), newIsEmpty);
+ QCOMPARE(array.isNull(), newIsNull);
+ QCOMPARE(array.capacity(), newCapacity);
+ QVERIFY(array.startsWith("a"));
+ QVERIFY(array.endsWith("b"));
+
+ QCOMPARE(copy.size(), newSize);
+ QCOMPARE(copy.isEmpty(), newIsEmpty);
+ QCOMPARE(copy.isNull(), newIsNull);
+ QCOMPARE(copy.capacity(), newCapacity);
+ QVERIFY(copy.startsWith("a"));
+ QVERIFY(copy.endsWith("b"));
+
+ // try to not crash
+ array.squeeze();
+ array.reserve(array.size() + 3);
+ QVERIFY(true);
+}
+
void tst_QByteArray::literals()
{
#if defined(Q_COMPILER_LAMBDA) || defined(Q_CC_GNU)
diff --git a/tests/auto/corelib/tools/qbytearraymatcher/tst_qbytearraymatcher.cpp b/tests/auto/corelib/tools/qbytearraymatcher/tst_qbytearraymatcher.cpp
index 8bc827ef7f..d0ba1fadc9 100644
--- a/tests/auto/corelib/tools/qbytearraymatcher/tst_qbytearraymatcher.cpp
+++ b/tests/auto/corelib/tools/qbytearraymatcher/tst_qbytearraymatcher.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qcache/tst_qcache.cpp b/tests/auto/corelib/tools/qcache/tst_qcache.cpp
index 88b56612af..8129f1510c 100644
--- a/tests/auto/corelib/tools/qcache/tst_qcache.cpp
+++ b/tests/auto/corelib/tools/qcache/tst_qcache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qchar/tst_qchar.cpp b/tests/auto/corelib/tools/qchar/tst_qchar.cpp
index c5fdeeb54a..1732f628ea 100644
--- a/tests/auto/corelib/tools/qchar/tst_qchar.cpp
+++ b/tests/auto/corelib/tools/qchar/tst_qchar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qcontiguouscache/tst_qcontiguouscache.cpp b/tests/auto/corelib/tools/qcontiguouscache/tst_qcontiguouscache.cpp
index ad464dc40a..37fe346684 100644
--- a/tests/auto/corelib/tools/qcontiguouscache/tst_qcontiguouscache.cpp
+++ b/tests/auto/corelib/tools/qcontiguouscache/tst_qcontiguouscache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp b/tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp
index 14b41e178d..3a257c2f11 100644
--- a/tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp
+++ b/tests/auto/corelib/tools/qcryptographichash/tst_qcryptographichash.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qdate/tst_qdate.cpp b/tests/auto/corelib/tools/qdate/tst_qdate.cpp
index 7bb6de8c9f..4921a7e734 100644
--- a/tests/auto/corelib/tools/qdate/tst_qdate.cpp
+++ b/tests/auto/corelib/tools/qdate/tst_qdate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,20 +48,32 @@ class tst_QDate : public QObject
Q_OBJECT
private slots:
void toString();
+ void isNull_data();
+ void isNull();
void isValid_data();
void isValid();
void julianDay_data();
void julianDay();
+ void dayOfWeek_data();
+ void dayOfWeek();
+ void dayOfYear_data();
+ void dayOfYear();
+ void daysInMonth_data();
+ void daysInMonth();
+ void daysInYear();
+ void getDate();
void weekNumber_invalid_data();
void weekNumber_invalid();
void weekNumber_data();
void weekNumber();
+ void julianDaysLimits();
void addDays_data();
void addDays();
void addMonths_data();
void addMonths();
void addYears_data();
void addYears();
+ void daysTo();
void operator_eq_eq();
void operator_not_eq();
void operator_lt();
@@ -92,66 +104,92 @@ private slots:
Q_DECLARE_METATYPE(QDate)
+void tst_QDate::isNull_data()
+{
+ QTest::addColumn<qint64>("jd");
+ QTest::addColumn<bool>("null");
+
+ qint64 minJd = std::numeric_limits<qint64>::min() / 2;
+ qint64 maxJd = std::numeric_limits<qint64>::max() / 2;
+
+ QTest::newRow("qint64 min") << std::numeric_limits<qint64>::min() << true;
+ QTest::newRow("minJd - 1") << minJd - 1 << true;
+ QTest::newRow("minJd") << minJd << false;
+ QTest::newRow("minJd + 1") << minJd + 1 << false;
+ QTest::newRow("maxJd - 1") << maxJd - 1 << false;
+ QTest::newRow("maxJd") << maxJd << false;
+ QTest::newRow("maxJd + 1") << maxJd + 1 << true;
+ QTest::newRow("qint64 max") << std::numeric_limits<qint64>::max() << true;
+}
+
+void tst_QDate::isNull()
+{
+ QFETCH(qint64, jd);
+
+ QDate d = QDate::fromJulianDay(jd);
+ QTEST(d.isNull(), "null");
+}
+
void tst_QDate::isValid_data()
{
+ qint64 nullJd = std::numeric_limits<qint64>::min();
+
QTest::addColumn<int>("year");
QTest::addColumn<int>("month");
QTest::addColumn<int>("day");
- QTest::addColumn<uint>("jd");
+ QTest::addColumn<qint64>("jd");
QTest::addColumn<bool>("valid");
- QTest::newRow("0-0-0") << 0 << 0 << 0 << 0U << false;
- QTest::newRow("month 0") << 2000 << 0 << 1 << 0U << false;
- QTest::newRow("day 0") << 2000 << 1 << 0 << 0U << false;
+ QTest::newRow("0-0-0") << 0 << 0 << 0 << nullJd << false;
+ QTest::newRow("month 0") << 2000 << 0 << 1 << nullJd << false;
+ QTest::newRow("day 0") << 2000 << 1 << 0 << nullJd << false;
- QTest::newRow("month 13") << 2000 << 13 << 1 << 0U << false;
+ QTest::newRow("month 13") << 2000 << 13 << 1 << nullJd << false;
// test leap years
- QTest::newRow("non-leap") << 2006 << 2 << 29 << 0U << false;
- QTest::newRow("normal leap") << 2004 << 2 << 29 << 2453065U << true;
- QTest::newRow("century leap") << 1900 << 2 << 29 << 0U << false;
- QTest::newRow("century leap") << 2100 << 2 << 29 << 0U << false;
- QTest::newRow("400-years leap") << 2000 << 2 << 29 << 2451604U << true;
- QTest::newRow("400-years leap 2") << 2400 << 2 << 29 << 2597701U << true;
- QTest::newRow("400-years leap 3") << 1600 << 2 << 29 << 2305507U << true;
- QTest::newRow("year 0") << 0 << 2 << 27 << 0U << false;
+ QTest::newRow("non-leap") << 2006 << 2 << 29 << nullJd << false;
+ QTest::newRow("normal leap") << 2004 << 2 << 29 << qint64(2453065) << true;
+ QTest::newRow("century leap") << 1900 << 2 << 29 << nullJd << false;
+ QTest::newRow("century leap") << 2100 << 2 << 29 << nullJd << false;
+ QTest::newRow("400-years leap") << 2000 << 2 << 29 << qint64(2451604) << true;
+ QTest::newRow("400-years leap 2") << 2400 << 2 << 29 << qint64(2597701) << true;
+ QTest::newRow("400-years leap 3") << 1600 << 2 << 29 << qint64(2305507) << true;
+ QTest::newRow("year 0") << 0 << 2 << 27 << nullJd << false;
// test the number of days in months:
- QTest::newRow("jan") << 2000 << 1 << 31 << 2451575U << true;
- QTest::newRow("feb") << 2000 << 2 << 29 << 2451604U << true; // same data as 400-years leap
- QTest::newRow("mar") << 2000 << 3 << 31 << 2451635U << true;
- QTest::newRow("apr") << 2000 << 4 << 30 << 2451665U << true;
- QTest::newRow("may") << 2000 << 5 << 31 << 2451696U << true;
- QTest::newRow("jun") << 2000 << 6 << 30 << 2451726U << true;
- QTest::newRow("jul") << 2000 << 7 << 31 << 2451757U << true;
- QTest::newRow("aug") << 2000 << 8 << 31 << 2451788U << true;
- QTest::newRow("sep") << 2000 << 9 << 30 << 2451818U << true;
- QTest::newRow("oct") << 2000 << 10 << 31 << 2451849U << true;
- QTest::newRow("nov") << 2000 << 11 << 30 << 2451879U << true;
- QTest::newRow("dec") << 2000 << 12 << 31 << 2451910U << true;
+ QTest::newRow("jan") << 2000 << 1 << 31 << qint64(2451575) << true;
+ QTest::newRow("feb") << 2000 << 2 << 29 << qint64(2451604) << true; // same data as 400-years leap
+ QTest::newRow("mar") << 2000 << 3 << 31 << qint64(2451635) << true;
+ QTest::newRow("apr") << 2000 << 4 << 30 << qint64(2451665) << true;
+ QTest::newRow("may") << 2000 << 5 << 31 << qint64(2451696) << true;
+ QTest::newRow("jun") << 2000 << 6 << 30 << qint64(2451726) << true;
+ QTest::newRow("jul") << 2000 << 7 << 31 << qint64(2451757) << true;
+ QTest::newRow("aug") << 2000 << 8 << 31 << qint64(2451788) << true;
+ QTest::newRow("sep") << 2000 << 9 << 30 << qint64(2451818) << true;
+ QTest::newRow("oct") << 2000 << 10 << 31 << qint64(2451849) << true;
+ QTest::newRow("nov") << 2000 << 11 << 30 << qint64(2451879) << true;
+ QTest::newRow("dec") << 2000 << 12 << 31 << qint64(2451910) << true;
// and invalid dates:
- QTest::newRow("ijan") << 2000 << 1 << 32 << 0U << false;
- QTest::newRow("ifeb") << 2000 << 2 << 30 << 0U << false;
- QTest::newRow("imar") << 2000 << 3 << 32 << 0U << false;
- QTest::newRow("iapr") << 2000 << 4 << 31 << 0U << false;
- QTest::newRow("imay") << 2000 << 5 << 32 << 0U << false;
- QTest::newRow("ijun") << 2000 << 6 << 31 << 0U << false;
- QTest::newRow("ijul") << 2000 << 7 << 32 << 0U << false;
- QTest::newRow("iaug") << 2000 << 8 << 32 << 0U << false;
- QTest::newRow("isep") << 2000 << 9 << 31 << 0U << false;
- QTest::newRow("ioct") << 2000 << 10 << 32 << 0U << false;
- QTest::newRow("inov") << 2000 << 11 << 31 << 0U << false;
- QTest::newRow("idec") << 2000 << 12 << 32 << 0U << false;
+ QTest::newRow("ijan") << 2000 << 1 << 32 << nullJd << false;
+ QTest::newRow("ifeb") << 2000 << 2 << 30 << nullJd << false;
+ QTest::newRow("imar") << 2000 << 3 << 32 << nullJd << false;
+ QTest::newRow("iapr") << 2000 << 4 << 31 << nullJd << false;
+ QTest::newRow("imay") << 2000 << 5 << 32 << nullJd << false;
+ QTest::newRow("ijun") << 2000 << 6 << 31 << nullJd << false;
+ QTest::newRow("ijul") << 2000 << 7 << 32 << nullJd << false;
+ QTest::newRow("iaug") << 2000 << 8 << 32 << nullJd << false;
+ QTest::newRow("isep") << 2000 << 9 << 31 << nullJd << false;
+ QTest::newRow("ioct") << 2000 << 10 << 32 << nullJd << false;
+ QTest::newRow("inov") << 2000 << 11 << 31 << nullJd << false;
+ QTest::newRow("idec") << 2000 << 12 << 32 << nullJd << false;
// the beginning of the Julian Day calendar:
- QTest::newRow("jd negative1") << -4714 << 1 << 1 << 0U << false;
- QTest::newRow("jd negative2") << -4713 << 1 << 1 << 0U << false;
- QTest::newRow("jd negative3") << -4713 << 1 << 2 << 1U << true;
- QTest::newRow("jd negative4") << -4713 << 1 << 3 << 2U << true;
- QTest::newRow("jd 0") << -4713 << 1 << 1 << 0U << false;
- QTest::newRow("jd 1") << -4713 << 1 << 2 << 1U << true;
- QTest::newRow("imminent overflow") << 11754508 << 12 << 13 << 4294967295U << true;
+ QTest::newRow("jd earliest formula") << -4800 << 1 << 1 << qint64( -31738) << true;
+ QTest::newRow("jd -1") << -4714 << 11 << 23 << qint64( -1) << true;
+ QTest::newRow("jd 0") << -4714 << 11 << 24 << qint64( 0) << true;
+ QTest::newRow("jd 1") << -4714 << 11 << 25 << qint64( 1) << true;
+ QTest::newRow("jd latest formula") << 1400000 << 12 << 31 << qint64(513060925) << true;
}
void tst_QDate::isValid()
@@ -159,12 +197,25 @@ void tst_QDate::isValid()
QFETCH(int, year);
QFETCH(int, month);
QFETCH(int, day);
+ QFETCH(qint64, jd);
+ QFETCH(bool, valid);
- QTEST(QDate::isValid(year, month, day), "valid");
+ QCOMPARE(QDate::isValid(year, month, day), valid);
QDate d;
d.setDate(year, month, day);
- QTEST(d.isValid(), "valid");
+ QCOMPARE(d.isValid(), valid);
+ QCOMPARE(d.toJulianDay(), jd);
+
+ if (valid) {
+ QCOMPARE(d.year(), year);
+ QCOMPARE(d.month(), month);
+ QCOMPARE(d.day(), day);
+ } else {
+ QCOMPARE(d.year(), 0);
+ QCOMPARE(d.month(), 0);
+ QCOMPARE(d.day(), 0);
+ }
}
void tst_QDate::julianDay_data()
@@ -177,15 +228,15 @@ void tst_QDate::julianDay()
QFETCH(int, year);
QFETCH(int, month);
QFETCH(int, day);
- QFETCH(uint, jd);
+ QFETCH(qint64, jd);
{
QDate d;
d.setDate(year, month, day);
- QCOMPARE(uint(d.toJulianDay()), jd);
+ QCOMPARE(d.toJulianDay(), jd);
}
- if (jd) {
+ if (jd != std::numeric_limits<qint64>::min()) {
QDate d = QDate::fromJulianDay(jd);
QCOMPARE(d.year(), year);
QCOMPARE(d.month(), month);
@@ -193,6 +244,137 @@ void tst_QDate::julianDay()
}
}
+void tst_QDate::dayOfWeek_data()
+{
+ QTest::addColumn<int>("year");
+ QTest::addColumn<int>("month");
+ QTest::addColumn<int>("day");
+ QTest::addColumn<int>("dayOfWeek");
+
+ QTest::newRow("data0") << 0 << 0 << 0 << 0;
+ QTest::newRow("data1") << 2000 << 1 << 3 << 1;
+ QTest::newRow("data2") << 2000 << 1 << 4 << 2;
+ QTest::newRow("data3") << 2000 << 1 << 5 << 3;
+ QTest::newRow("data4") << 2000 << 1 << 6 << 4;
+ QTest::newRow("data5") << 2000 << 1 << 7 << 5;
+ QTest::newRow("data6") << 2000 << 1 << 8 << 6;
+ QTest::newRow("data7") << 2000 << 1 << 9 << 7;
+ QTest::newRow("data8") << -4800 << 1 << 1 << 1;
+ QTest::newRow("data9") << -4800 << 1 << 2 << 2;
+ QTest::newRow("data10") << -4800 << 1 << 3 << 3;
+ QTest::newRow("data12") << -4800 << 1 << 4 << 4;
+ QTest::newRow("data12") << -4800 << 1 << 5 << 5;
+ QTest::newRow("data13") << -4800 << 1 << 6 << 6;
+ QTest::newRow("data14") << -4800 << 1 << 7 << 7;
+ QTest::newRow("data15") << -4800 << 1 << 8 << 1;
+}
+
+void tst_QDate::dayOfWeek()
+{
+ QFETCH(int, year);
+ QFETCH(int, month);
+ QFETCH(int, day);
+ QFETCH(int, dayOfWeek);
+
+ QDate dt(year, month, day);
+ QCOMPARE(dt.dayOfWeek(), dayOfWeek);
+}
+
+void tst_QDate::dayOfYear_data()
+{
+ QTest::addColumn<int>("year");
+ QTest::addColumn<int>("month");
+ QTest::addColumn<int>("day");
+ QTest::addColumn<int>("dayOfYear");
+
+ QTest::newRow("data0") << 0 << 0 << 0 << 0;
+ QTest::newRow("data1") << 2000 << 1 << 1 << 1;
+ QTest::newRow("data2") << 2000 << 1 << 2 << 2;
+ QTest::newRow("data3") << 2000 << 1 << 3 << 3;
+ QTest::newRow("data4") << 2000 << 12 << 31 << 366;
+ QTest::newRow("data5") << 2001 << 12 << 31 << 365;
+ QTest::newRow("data6") << 1815 << 1 << 1 << 1;
+ QTest::newRow("data7") << 1815 << 12 << 31 << 365;
+ QTest::newRow("data8") << 1500 << 1 << 1 << 1;
+ QTest::newRow("data9") << 1500 << 12 << 31 << 365;
+ QTest::newRow("data10") << -1500 << 1 << 1 << 1;
+ QTest::newRow("data11") << -1500 << 12 << 31 << 365;
+ QTest::newRow("data12") << -4800 << 1 << 1 << 1;
+ QTest::newRow("data13") << -4800 << 12 << 31 << 365;
+}
+
+void tst_QDate::dayOfYear()
+{
+ QFETCH(int, year);
+ QFETCH(int, month);
+ QFETCH(int, day);
+ QFETCH(int, dayOfYear);
+
+ QDate dt(year, month, day);
+ QCOMPARE(dt.dayOfYear(), dayOfYear);
+}
+
+void tst_QDate::daysInMonth_data()
+{
+ QTest::addColumn<int>("year");
+ QTest::addColumn<int>("month");
+ QTest::addColumn<int>("day");
+ QTest::addColumn<int>("daysInMonth");
+
+ QTest::newRow("data0") << 0 << 0 << 0 << 0;
+ QTest::newRow("data1") << 2000 << 1 << 1 << 31;
+ QTest::newRow("data2") << 2000 << 2 << 1 << 29;
+ QTest::newRow("data3") << 2000 << 3 << 1 << 31;
+ QTest::newRow("data4") << 2000 << 4 << 1 << 30;
+ QTest::newRow("data5") << 2000 << 5 << 1 << 31;
+ QTest::newRow("data6") << 2000 << 6 << 1 << 30;
+ QTest::newRow("data7") << 2000 << 7 << 1 << 31;
+ QTest::newRow("data8") << 2000 << 8 << 1 << 31;
+ QTest::newRow("data9") << 2000 << 9 << 1 << 30;
+ QTest::newRow("data10") << 2000 << 10 << 1 << 31;
+ QTest::newRow("data11") << 2000 << 11 << 1 << 30;
+ QTest::newRow("data12") << 2000 << 12 << 1 << 31;
+ QTest::newRow("data13") << 2001 << 2 << 1 << 28;
+}
+
+void tst_QDate::daysInMonth()
+{
+ QFETCH(int, year);
+ QFETCH(int, month);
+ QFETCH(int, day);
+ QFETCH(int, daysInMonth);
+
+ QDate dt(year, month, day);
+ QCOMPARE(dt.daysInMonth(), daysInMonth);
+}
+
+void tst_QDate::daysInYear()
+{
+ QDate dt(2000, 1, 1);
+ QCOMPARE(dt.daysInYear(), 366);
+ dt.setDate(2001, 1, 1);
+ QCOMPARE(dt.daysInYear(), 365);
+ dt.setDate(4, 1, 1);
+ QCOMPARE(dt.daysInYear(), 366);
+ dt.setDate(5, 1, 1);
+ QCOMPARE(dt.daysInYear(), 365);
+}
+
+void tst_QDate::getDate()
+{
+ int y, m, d;
+ QDate dt(2000, 1, 1);
+ dt.getDate(&y, &m, &d);
+ QCOMPARE(y, 2000);
+ QCOMPARE(m, 1);
+ QCOMPARE(d, 1);
+ dt.setDate(0, 0, 0);
+ dt.getDate(&y, &m, &d);
+ QCOMPARE(y, 0);
+ QCOMPARE(m, 0);
+ QCOMPARE(d, 0);
+}
+
void tst_QDate::weekNumber_data()
{
QTest::addColumn<int>("expectedWeekNum");
@@ -244,6 +426,68 @@ void tst_QDate::weekNumber_invalid()
QCOMPARE( dt.weekNumber( &yearNumber ), 0 );
}
+void tst_QDate::julianDaysLimits()
+{
+ qint64 min = std::numeric_limits<qint64>::min();
+ qint64 max = std::numeric_limits<qint64>::max();
+ qint64 minJd = std::numeric_limits<qint64>::min() / 2;
+ qint64 maxJd = std::numeric_limits<qint64>::max() / 2;
+
+ QDate maxDate = QDate::fromJulianDay(maxJd);
+ QDate minDate = QDate::fromJulianDay(minJd);
+ QDate zeroDate = QDate::fromJulianDay(0);
+
+ QDate dt = QDate::fromJulianDay(min);
+ QCOMPARE(dt.isValid(), false);
+ dt = QDate::fromJulianDay(minJd - 1);
+ QCOMPARE(dt.isValid(), false);
+ dt = QDate::fromJulianDay(minJd);
+ QCOMPARE(dt.isValid(), true);
+ dt = QDate::fromJulianDay(minJd + 1);
+ QCOMPARE(dt.isValid(), true);
+ dt = QDate::fromJulianDay(maxJd - 1);
+ QCOMPARE(dt.isValid(), true);
+ dt = QDate::fromJulianDay(maxJd);
+ QCOMPARE(dt.isValid(), true);
+ dt = QDate::fromJulianDay(maxJd + 1);
+ QCOMPARE(dt.isValid(), false);
+ dt = QDate::fromJulianDay(max);
+ QCOMPARE(dt.isValid(), false);
+
+ dt = maxDate.addDays(1);
+ QCOMPARE(dt.isValid(), false);
+ dt = maxDate.addDays(0);
+ QCOMPARE(dt.isValid(), true);
+ dt = maxDate.addDays(-1);
+ QCOMPARE(dt.isValid(), true);
+ dt = maxDate.addDays(max);
+ QCOMPARE(dt.isValid(), false);
+ dt = maxDate.addDays(min);
+ QCOMPARE(dt.isValid(), false);
+
+ dt = minDate.addDays(-1);
+ QCOMPARE(dt.isValid(), false);
+ dt = minDate.addDays(0);
+ QCOMPARE(dt.isValid(), true);
+ dt = minDate.addDays(1);
+ QCOMPARE(dt.isValid(), true);
+ dt = minDate.addDays(min);
+ QCOMPARE(dt.isValid(), false);
+ dt = minDate.addDays(max);
+ QCOMPARE(dt.isValid(), true);
+
+ dt = zeroDate.addDays(-1);
+ QCOMPARE(dt.isValid(), true);
+ dt = zeroDate.addDays(0);
+ QCOMPARE(dt.isValid(), true);
+ dt = zeroDate.addDays(1);
+ QCOMPARE(dt.isValid(), true);
+ dt = zeroDate.addDays(min);
+ QCOMPARE(dt.isValid(), false);
+ dt = zeroDate.addDays(max);
+ QCOMPARE(dt.isValid(), false);
+}
+
void tst_QDate::addDays()
{
QFETCH( int, year );
@@ -286,9 +530,8 @@ void tst_QDate::addDays_data()
QTest::newRow( "data10" ) << 2000 << 2 << 28 << -1 << 2000 << 2 << 27;
QTest::newRow( "data11" ) << 2001 << 2 << 28 << -30 << 2001 << 1 << 29;
- QDate invalid;
- QTest::newRow( "data12" ) << -4713 << 1 << 2 << -2
- << invalid.year() << invalid.month() << invalid.day();
+ QTest::newRow( "data12" ) << -4713 << 1 << 2 << -2 << -4714 << 12 << 31;
+ QTest::newRow( "data13" ) << -4713 << 1 << 2 << 2 << -4713 << 1 << 4;
}
void tst_QDate::addMonths()
@@ -341,14 +584,6 @@ void tst_QDate::addMonths_data()
QTest::newRow( "data15" ) << 1 << 1 << 1 << -12 << -1 << 1 << 1;
QTest::newRow( "data16" ) << -1 << 12 << 1 << 1 << 1 << 1 << 1;
QTest::newRow( "data17" ) << -1 << 1 << 1 << 12 << 1 << 1 << 1;
-
- // Gregorian/Julian switchover
- QTest::newRow( "data18" ) << 1582 << 9 << 4 << 1 << 1582 << 10 << 4;
- QTest::newRow( "data19" ) << 1582 << 9 << 10 << 1 << 1582 << 10 << 15;
- QTest::newRow( "data20" ) << 1582 << 9 << 20 << 1 << 1582 << 10 << 20;
- QTest::newRow( "data21" ) << 1582 << 11 << 4 << -1 << 1582 << 10 << 4;
- QTest::newRow( "data22" ) << 1582 << 11 << 10 << -1 << 1582 << 10 << 4;
- QTest::newRow( "data23" ) << 1582 << 11 << 20 << -1 << 1582 << 10 << 20;
}
void tst_QDate::addYears()
@@ -402,6 +637,35 @@ void tst_QDate::addYears_data()
QTest::newRow( "data19" ) << -2000 << 1 << 1 << 2001 << 2 << 1 << 1;
}
+void tst_QDate::daysTo()
+{
+ qint64 minJd = std::numeric_limits<qint64>::min() / 2;
+ qint64 maxJd = std::numeric_limits<qint64>::max() / 2;
+
+ QDate dt1(2000, 1, 1);
+ QDate dt2(2000, 1, 5);
+ QCOMPARE(dt1.daysTo(dt2), (qint64) 4);
+ QCOMPARE(dt2.daysTo(dt1), (qint64) -4);
+
+ dt1.setDate(0, 0, 0);
+ QCOMPARE(dt1.daysTo(dt2), (qint64) 0);
+ dt1.setDate(2000, 1, 1);
+ dt2.setDate(0, 0, 0);
+ QCOMPARE(dt1.daysTo(dt2), (qint64) 0);
+
+
+ QDate maxDate = QDate::fromJulianDay(maxJd);
+ QDate minDate = QDate::fromJulianDay(minJd);
+ QDate zeroDate = QDate::fromJulianDay(0);
+
+ QCOMPARE(maxDate.daysTo(minDate), minJd - maxJd);
+ QCOMPARE(minDate.daysTo(maxDate), maxJd - minJd);
+ QCOMPARE(maxDate.daysTo(zeroDate), -maxJd);
+ QCOMPARE(zeroDate.daysTo(maxDate), maxJd);
+ QCOMPARE(minDate.daysTo(zeroDate), -minJd);
+ QCOMPARE(zeroDate.daysTo(minDate), minJd);
+}
+
void tst_QDate::operator_eq_eq()
{
QDate d1(2000,1,2);
@@ -636,6 +900,8 @@ void tst_QDate::toString_format()
void tst_QDate::isLeapYear()
{
+ QVERIFY(QDate::isLeapYear(-4801));
+ QVERIFY(!QDate::isLeapYear(-4800));
QVERIFY(QDate::isLeapYear(-4445));
QVERIFY(!QDate::isLeapYear(-4444));
QVERIFY(!QDate::isLeapYear(-6));
@@ -651,10 +917,10 @@ void tst_QDate::isLeapYear()
QVERIFY(QDate::isLeapYear(4));
QVERIFY(!QDate::isLeapYear(7));
QVERIFY(QDate::isLeapYear(8));
- QVERIFY(QDate::isLeapYear(100));
+ QVERIFY(!QDate::isLeapYear(100));
QVERIFY(QDate::isLeapYear(400));
- QVERIFY(QDate::isLeapYear(700));
- QVERIFY(QDate::isLeapYear(1500));
+ QVERIFY(!QDate::isLeapYear(700));
+ QVERIFY(!QDate::isLeapYear(1500));
QVERIFY(QDate::isLeapYear(1600));
QVERIFY(!QDate::isLeapYear(1700));
QVERIFY(!QDate::isLeapYear(1800));
@@ -703,6 +969,7 @@ void tst_QDate::yearsZeroToNinetyNine()
QVERIFY(QDate::isValid(1, 2, 3));
QVERIFY(QDate::isValid(-1, 2, 3));
+#if QT_DEPRECATED_SINCE(5,0)
{
QDate dt;
dt.setYMD(1, 2, 3);
@@ -710,6 +977,7 @@ void tst_QDate::yearsZeroToNinetyNine()
QCOMPARE(dt.month(), 2);
QCOMPARE(dt.day(), 3);
}
+#endif
{
QDate dt;
@@ -777,6 +1045,8 @@ void tst_QDate::roundtripGermanLocale() const
void tst_QDate::shortDayName() const
{
+ QCOMPARE(QDate::shortDayName(0), QString());
+
if (QLocale::system().language() == QLocale::C) {
QCOMPARE(QDate::shortDayName(1), QLatin1String("Mon"));
QCOMPARE(QDate::shortDayName(7), QLatin1String("Sun"));
@@ -790,6 +1060,8 @@ void tst_QDate::shortDayName() const
void tst_QDate::standaloneShortDayName() const
{
+ QCOMPARE(QDate::shortDayName(0, QDate::StandaloneFormat), QString());
+
if (QLocale::system().language() == QLocale::C) {
QCOMPARE(QDate::shortDayName(1, QDate::StandaloneFormat), QLatin1String("Mon"));
QCOMPARE(QDate::shortDayName(7, QDate::StandaloneFormat), QLatin1String("Sun"));
@@ -803,6 +1075,8 @@ void tst_QDate::standaloneShortDayName() const
void tst_QDate::longDayName() const
{
+ QCOMPARE(QDate::longDayName(0), QString());
+
if (QLocale::system().language() == QLocale::C) {
QCOMPARE(QDate::longDayName(1), QLatin1String("Monday"));
QCOMPARE(QDate::longDayName(7), QLatin1String("Sunday"));
@@ -816,6 +1090,8 @@ void tst_QDate::longDayName() const
void tst_QDate::standaloneLongDayName() const
{
+ QCOMPARE(QDate::longDayName(0, QDate::StandaloneFormat), QString());
+
if (QLocale::system().language() == QLocale::C) {
QCOMPARE(QDate::longDayName(1, QDate::StandaloneFormat), QLatin1String("Monday"));
QCOMPARE(QDate::longDayName(7, QDate::StandaloneFormat), QLatin1String("Sunday"));
@@ -829,6 +1105,8 @@ void tst_QDate::standaloneLongDayName() const
void tst_QDate::shortMonthName() const
{
+ QCOMPARE(QDate::shortMonthName(0), QString());
+
if (QLocale::system().language() == QLocale::C) {
QCOMPARE(QDate::shortMonthName(1), QLatin1String("Jan"));
QCOMPARE(QDate::shortMonthName(8), QLatin1String("Aug"));
@@ -842,6 +1120,8 @@ void tst_QDate::shortMonthName() const
void tst_QDate::standaloneShortMonthName() const
{
+ QCOMPARE(QDate::shortMonthName(0, QDate::StandaloneFormat), QString());
+
if (QLocale::system().language() == QLocale::C) {
QCOMPARE(QDate::shortMonthName(1, QDate::StandaloneFormat), QLatin1String("Jan"));
QCOMPARE(QDate::shortMonthName(8, QDate::StandaloneFormat), QLatin1String("Aug"));
@@ -855,6 +1135,8 @@ void tst_QDate::standaloneShortMonthName() const
void tst_QDate::longMonthName() const
{
+ QCOMPARE(QDate::longMonthName(0), QString());
+
if (QLocale::system().language() == QLocale::C) {
QCOMPARE(QDate::longMonthName(1), QLatin1String("January"));
QCOMPARE(QDate::longMonthName(8), QLatin1String("August"));
@@ -868,6 +1150,8 @@ void tst_QDate::longMonthName() const
void tst_QDate::standaloneLongMonthName() const
{
+ QCOMPARE(QDate::longMonthName(0, QDate::StandaloneFormat), QString());
+
if (QLocale::system().language() == QLocale::C) {
QCOMPARE(QDate::longMonthName(1, QDate::StandaloneFormat), QLatin1String("January"));
QCOMPARE(QDate::longMonthName(8, QDate::StandaloneFormat), QLatin1String("August"));
@@ -885,28 +1169,44 @@ void tst_QDate::roundtrip() const
// year(), month(), day(), julianDayFromDate(), and getDateFromJulianDay()
// to ensure they are internally consistent (but doesn't guarantee correct)
- // Test Julian round trip in both BC and AD
+ // Test Julian round trip around JD 0 and current low end of valid range
QDate testDate;
- QDate loopDate = QDate::fromJulianDay(1684899); // 1 Jan 100 BC
- while ( loopDate.toJulianDay() <= 1757948 ) { // 31 Dec 100 AD
- testDate.setDate( loopDate.year(), loopDate.month(), loopDate.day() );
- QCOMPARE( loopDate.toJulianDay(), testDate.toJulianDay() );
+ QDate loopDate = QDate::fromJulianDay(-31738); // 1 Jan 4800 BC
+ while (loopDate.toJulianDay() <= 5150) { // 31 Dec 4700 BC
+ testDate.setDate(loopDate.year(), loopDate.month(), loopDate.day());
+ QCOMPARE(loopDate.toJulianDay(), testDate.toJulianDay());
loopDate = loopDate.addDays(1);
}
- // Test Julian and Gregorian round trip during changeover period
- loopDate = QDate::fromJulianDay(2298153); // 1 Jan 1580 AD
- while ( loopDate.toJulianDay() <= 2300334 ) { // 31 Dec 1585 AD
- testDate.setDate( loopDate.year(), loopDate.month(), loopDate.day() );
- QCOMPARE( loopDate.toJulianDay(), testDate.toJulianDay() );
+ // Test Julian round trip in both BC and AD
+ loopDate = QDate::fromJulianDay(1684901); // 1 Jan 100 BC
+ while (loopDate.toJulianDay() <= 1757949) { // 31 Dec 100 AD
+ testDate.setDate(loopDate.year(), loopDate.month(), loopDate.day());
+ QCOMPARE(loopDate.toJulianDay(), testDate.toJulianDay());
loopDate = loopDate.addDays(1);
}
// Test Gregorian round trip during current useful period
loopDate = QDate::fromJulianDay(2378497); // 1 Jan 1900 AD
- while ( loopDate.toJulianDay() <= 2488433 ) { // 31 Dec 2100 AD
- testDate.setDate( loopDate.year(), loopDate.month(), loopDate.day() );
- QCOMPARE( loopDate.toJulianDay(), testDate.toJulianDay() );
+ while (loopDate.toJulianDay() <= 2488433) { // 31 Dec 2100 AD
+ testDate.setDate(loopDate.year(), loopDate.month(), loopDate.day());
+ QCOMPARE(loopDate.toJulianDay(), testDate.toJulianDay());
+ loopDate = loopDate.addDays(1);
+ }
+
+ // Test Gregorian round trip at top end of widget/format range
+ loopDate = QDate::fromJulianDay(5336961); // 1 Jan 9900 AD
+ while (loopDate.toJulianDay() <= 5373484) { // 31 Dec 9999 AD
+ testDate.setDate(loopDate.year(), loopDate.month(), loopDate.day());
+ QCOMPARE(loopDate.toJulianDay(), testDate.toJulianDay());
+ loopDate = loopDate.addDays(1);
+ }
+
+ // Test Gregorian round trip at top end of conversion range
+ loopDate = QDate::fromJulianDay(513024036); // 1 Jan 1399900 AD
+ while (loopDate.toJulianDay() <= 513060925) { // 31 Dec 1400000 AD
+ testDate.setDate(loopDate.year(), loopDate.month(), loopDate.day());
+ QCOMPARE(loopDate.toJulianDay(), testDate.toJulianDay());
loopDate = loopDate.addDays(1);
}
}
diff --git a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
index 4ef508e92b..af8deefa4c 100644
--- a/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
+++ b/tests/auto/corelib/tools/qdatetime/tst_qdatetime.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -726,14 +726,6 @@ void tst_QDateTime::addSecs_data()
QTest::newRow("toPositive") << QDateTime(QDate(-1, 12, 31), QTime(23, 59, 59), Qt::UTC)
<< 1
<< QDateTime(QDate(1, 1, 1), QTime(0, 0, 0), Qt::UTC);
-
- // Gregorian/Julian switchover
- QTest::newRow("toGregorian") << QDateTime(QDate(1582, 10, 4), QTime(23, 59, 59))
- << 1
- << QDateTime(QDate(1582, 10, 15), QTime(0, 0, 0));
- QTest::newRow("toJulian") << QDateTime(QDate(1582, 10, 15), QTime(0, 0, 0))
- << -1
- << QDateTime(QDate(1582, 10, 4), QTime(23, 59, 59));
}
void tst_QDateTime::addSecs()
@@ -883,22 +875,22 @@ void tst_QDateTime::daysTo()
QDateTime dt2(QDate(1760, 2, 2), QTime());
QDateTime dt3(QDate(1760, 3, 2), QTime());
- QCOMPARE(dt1.daysTo(dt2), 31);
+ QCOMPARE(dt1.daysTo(dt2), (qint64) 31);
QCOMPARE(dt1.addDays(31), dt2);
- QCOMPARE(dt2.daysTo(dt3), 29);
+ QCOMPARE(dt2.daysTo(dt3), (qint64) 29);
QCOMPARE(dt2.addDays(29), dt3);
- QCOMPARE(dt1.daysTo(dt3), 60);
+ QCOMPARE(dt1.daysTo(dt3), (qint64) 60);
QCOMPARE(dt1.addDays(60), dt3);
- QCOMPARE(dt2.daysTo(dt1), -31);
+ QCOMPARE(dt2.daysTo(dt1), (qint64) -31);
QCOMPARE(dt2.addDays(-31), dt1);
- QCOMPARE(dt3.daysTo(dt2), -29);
+ QCOMPARE(dt3.daysTo(dt2), (qint64) -29);
QCOMPARE(dt3.addDays(-29), dt2);
- QCOMPARE(dt3.daysTo(dt1), -60);
+ QCOMPARE(dt3.daysTo(dt1), (qint64) -60);
QCOMPARE(dt3.addDays(-60), dt1);
}
diff --git a/tests/auto/corelib/tools/qeasingcurve/tst_qeasingcurve.cpp b/tests/auto/corelib/tools/qeasingcurve/tst_qeasingcurve.cpp
index a4a96c6df7..0a006ab5b4 100644
--- a/tests/auto/corelib/tools/qeasingcurve/tst_qeasingcurve.cpp
+++ b/tests/auto/corelib/tools/qeasingcurve/tst_qeasingcurve.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qelapsedtimer/tst_qelapsedtimer.cpp b/tests/auto/corelib/tools/qelapsedtimer/tst_qelapsedtimer.cpp
index 0e2f61ab98..7f28e8dc0c 100644
--- a/tests/auto/corelib/tools/qelapsedtimer/tst_qelapsedtimer.cpp
+++ b/tests/auto/corelib/tools/qelapsedtimer/tst_qelapsedtimer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qexplicitlyshareddatapointer/tst_qexplicitlyshareddatapointer.cpp b/tests/auto/corelib/tools/qexplicitlyshareddatapointer/tst_qexplicitlyshareddatapointer.cpp
index a031bf811d..e0e74efdd0 100644
--- a/tests/auto/corelib/tools/qexplicitlyshareddatapointer/tst_qexplicitlyshareddatapointer.cpp
+++ b/tests/auto/corelib/tools/qexplicitlyshareddatapointer/tst_qexplicitlyshareddatapointer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qfreelist/tst_qfreelist.cpp b/tests/auto/corelib/tools/qfreelist/tst_qfreelist.cpp
index a713fd4ca7..86696ab0c9 100644
--- a/tests/auto/corelib/tools/qfreelist/tst_qfreelist.cpp
+++ b/tests/auto/corelib/tools/qfreelist/tst_qfreelist.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qhash/tst_qhash.cpp b/tests/auto/corelib/tools/qhash/tst_qhash.cpp
index 6c941179d6..3b5d15dbfc 100644
--- a/tests/auto/corelib/tools/qhash/tst_qhash.cpp
+++ b/tests/auto/corelib/tools/qhash/tst_qhash.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qline/tst_qline.cpp b/tests/auto/corelib/tools/qline/tst_qline.cpp
index 0c4df63884..28ed8d3e22 100644
--- a/tests/auto/corelib/tools/qline/tst_qline.cpp
+++ b/tests/auto/corelib/tools/qline/tst_qline.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qlist/tst_qlist.cpp b/tests/auto/corelib/tools/qlist/tst_qlist.cpp
index c1b71de2b7..fbb821c730 100644
--- a/tests/auto/corelib/tools/qlist/tst_qlist.cpp
+++ b/tests/auto/corelib/tools/qlist/tst_qlist.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.cpp b/tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.cpp
index 2b6280fd2b..508833b5d0 100644
--- a/tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.cpp
+++ b/tests/auto/corelib/tools/qlocale/syslocaleapp/syslocaleapp.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
index a670cac03c..5544c0fd71 100644
--- a/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
+++ b/tests/auto/corelib/tools/qlocale/tst_qlocale.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -123,9 +123,6 @@ private slots:
void monthName();
void standaloneMonthName();
- // QSystemLocale tests
- void queryDateTime();
-
void ampm();
void currency();
void quoteString();
@@ -1778,43 +1775,6 @@ a(QLatin1String("0.0000000000000000000000000000000000000000000000000000000000000
QVERIFY(!ok);
}
-class SystemLocale : public QSystemLocale
-{
-public:
- virtual QVariant query(QueryType type, QVariant in) const
- {
- switch (type) {
- case DateTimeFormatLong: return QLatin1String("dddd ddd dd d MMMM MMM MM M yyyy hh:mm:ss.zzz");
- case DateTimeFormatShort: return QLatin1String("d M yy h:m");
- case DateTimeToStringLong:
- case DateTimeToStringShort:
- return in.toDateTime().toString(type == DateTimeToStringShort
- ? QLatin1String("dMyyhm")
- : QLatin1String("ddMMyyyyhhmmsszzz"));
- default:
- break;
- }
- return QSystemLocale::query(type, in);
- }
-};
-
-
-
-void tst_QLocale::queryDateTime()
-{
- SystemLocale loc;
- QCOMPARE(QLocale::system().dateTimeFormat(QLocale::LongFormat),
- loc.query(QSystemLocale::DateTimeFormatLong, QVariant()).toString());
- QCOMPARE(QLocale::system().dateTimeFormat(QLocale::ShortFormat),
- loc.query(QSystemLocale::DateTimeFormatShort, QVariant()).toString());
- QCOMPARE(QLocale::system().toString(QDateTime(QDate(1974, 12, 1), QTime(1, 2, 3, 4)), QLocale::ShortFormat),
- QString("1127412"));
- QCOMPARE(QLocale::system().toString(QDateTime(QDate(1974, 12, 1), QTime(1, 2, 3, 4)), QLocale::NarrowFormat),
- QLocale::system().toString(QDateTime(QDate(1974, 12, 1), QTime(1, 2, 3, 4)), QLocale::ShortFormat));
- QCOMPARE(QLocale::system().toString(QDateTime(QDate(1974, 12, 1), QTime(1, 2, 3, 4)), QLocale::LongFormat),
- QString("01121974010203004"));
-}
-
void tst_QLocale::ampm()
{
QLocale c(QLocale::C);
diff --git a/tests/auto/corelib/tools/qmap/tst_qmap.cpp b/tests/auto/corelib/tools/qmap/tst_qmap.cpp
index c48bcfb4b3..79b0a931cb 100644
--- a/tests/auto/corelib/tools/qmap/tst_qmap.cpp
+++ b/tests/auto/corelib/tools/qmap/tst_qmap.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qmargins/tst_qmargins.cpp b/tests/auto/corelib/tools/qmargins/tst_qmargins.cpp
index bdaf98cbf2..de3c0269e1 100644
--- a/tests/auto/corelib/tools/qmargins/tst_qmargins.cpp
+++ b/tests/auto/corelib/tools/qmargins/tst_qmargins.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qpoint/tst_qpoint.cpp b/tests/auto/corelib/tools/qpoint/tst_qpoint.cpp
index acdfd20488..aaeb6bd9f5 100644
--- a/tests/auto/corelib/tools/qpoint/tst_qpoint.cpp
+++ b/tests/auto/corelib/tools/qpoint/tst_qpoint.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qqueue/tst_qqueue.cpp b/tests/auto/corelib/tools/qqueue/tst_qqueue.cpp
index 5282d2964b..eb800e57bc 100644
--- a/tests/auto/corelib/tools/qqueue/tst_qqueue.cpp
+++ b/tests/auto/corelib/tools/qqueue/tst_qqueue.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qrect/tst_qrect.cpp b/tests/auto/corelib/tools/qrect/tst_qrect.cpp
index c2a9d05af6..f9d0f0f291 100644
--- a/tests/auto/corelib/tools/qrect/tst_qrect.cpp
+++ b/tests/auto/corelib/tools/qrect/tst_qrect.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qregexp/tst_qregexp.cpp b/tests/auto/corelib/tools/qregexp/tst_qregexp.cpp
index 836c02dfca..0148e933e4 100644
--- a/tests/auto/corelib/tools/qregexp/tst_qregexp.cpp
+++ b/tests/auto/corelib/tools/qregexp/tst_qregexp.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -829,6 +829,8 @@ void tst_QRegExp::testEscapingWildcard_data(){
QTest::newRow("? Escaped") << "\\?O;" << "?O;" << true;
QTest::newRow("[] not escaped") << "[lL]" << "l" << true;
+ QTest::newRow("[] escaped") << "\\[\\]" << "[]" << true;
+
QTest::newRow("case [[]") << "[[abc]" << "[" << true;
QTest::newRow("case []abc] match ]") << "[]abc]" << "]" << true;
QTest::newRow("case []abc] match a") << "[]abc]" << "a" << true;
@@ -844,7 +846,7 @@ void tst_QRegExp::testEscapingWildcard_data(){
QTest::newRow("a true '\\' in input") << "\\Qt;" << "\\Qt;" << true;
QTest::newRow("two true '\\' in input") << "\\\\Qt;" << "\\\\Qt;" << true;
- QTest::newRow("a '\\' at the end") << "\\\\Qt;" << "\\\\Qt;" << true;
+ QTest::newRow("a '\\' at the end") << "\\\\Qt;\\" << "\\\\Qt;\\" << true;
}
void tst_QRegExp::testEscapingWildcard(){
@@ -1309,7 +1311,7 @@ void tst_QRegExp::posAndCapConsistency()
QFETCH( QString, cap2 );
QRegExp re(reStr);
- QCOMPARE(re.numCaptures(), 2);
+ QCOMPARE(re.captureCount(), 2);
QCOMPARE(re.capturedTexts().size(), 3);
QCOMPARE(re.indexIn(text), matchIndex);
diff --git a/tests/auto/corelib/tools/qringbuffer/tst_qringbuffer.cpp b/tests/auto/corelib/tools/qringbuffer/tst_qringbuffer.cpp
index 67de98b867..d94d35afaf 100644
--- a/tests/auto/corelib/tools/qringbuffer/tst_qringbuffer.cpp
+++ b/tests/auto/corelib/tools/qringbuffer/tst_qringbuffer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qscopedpointer/tst_qscopedpointer.cpp b/tests/auto/corelib/tools/qscopedpointer/tst_qscopedpointer.cpp
index 22f6cb7d32..45ccaa671d 100644
--- a/tests/auto/corelib/tools/qscopedpointer/tst_qscopedpointer.cpp
+++ b/tests/auto/corelib/tools/qscopedpointer/tst_qscopedpointer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qscopedvaluerollback/tst_qscopedvaluerollback.cpp b/tests/auto/corelib/tools/qscopedvaluerollback/tst_qscopedvaluerollback.cpp
index c0e036e232..b070b105da 100644
--- a/tests/auto/corelib/tools/qscopedvaluerollback/tst_qscopedvaluerollback.cpp
+++ b/tests/auto/corelib/tools/qscopedvaluerollback/tst_qscopedvaluerollback.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qset/tst_qset.cpp b/tests/auto/corelib/tools/qset/tst_qset.cpp
index 4c0ecce5ec..d7d8c99071 100644
--- a/tests/auto/corelib/tools/qset/tst_qset.cpp
+++ b/tests/auto/corelib/tools/qset/tst_qset.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qsharedpointer/externaltests.cpp b/tests/auto/corelib/tools/qsharedpointer/externaltests.cpp
index c7ffe8cb7b..fb946d9ca1 100644
--- a/tests/auto/corelib/tools/qsharedpointer/externaltests.cpp
+++ b/tests/auto/corelib/tools/qsharedpointer/externaltests.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,6 +52,7 @@
#include <QtCore/QDirIterator>
#include <QtCore/QDateTime>
#include <QtCore/QDebug>
+#include <QtCore/QLibraryInfo>
#ifndef DEFAULT_MAKESPEC
# error DEFAULT_MAKESPEC not defined
@@ -464,7 +465,11 @@ namespace QTest {
"SOURCES += project.cpp\n"
"QT -= core gui\n"
"INCLUDEPATH += . ");
- projectFile.write(QFile::encodeName(QDir::currentPath()));
+
+ QString workingDir = QDir::currentPath();
+ if (extraProgramSources.count() > 0)
+ workingDir = QFileInfo(extraProgramSources.first()).absolutePath();
+ projectFile.write(QFile::encodeName(workingDir));
#ifndef QT_NO_DEBUG
projectFile.write("\nCONFIG += debug\n");
@@ -565,7 +570,17 @@ namespace QTest {
<< makespec()
<< QLatin1String("project.pro");
qmake.setWorkingDirectory(temporaryDirPath);
- qmake.start(QLatin1String("qmake"), args);
+
+ QString cmd = QLibraryInfo::location(QLibraryInfo::BinariesPath) + "/qmake";
+#ifdef Q_OS_WIN
+ cmd.append(".exe");
+#endif
+ if (!QFile::exists(cmd)) {
+ cmd = "qmake";
+ qWarning("qmake from build not found, fallback to PATH's qmake");
+ }
+
+ qmake.start(cmd, args);
std_out += "### --- stdout from qmake --- ###\n";
std_err += "### --- stderr from qmake --- ###\n";
diff --git a/tests/auto/corelib/tools/qsharedpointer/externaltests.h b/tests/auto/corelib/tools/qsharedpointer/externaltests.h
index 6903433b70..96edbd8a2b 100644
--- a/tests/auto/corelib/tools/qsharedpointer/externaltests.h
+++ b/tests/auto/corelib/tools/qsharedpointer/externaltests.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qsharedpointer/forwarddeclaration.cpp b/tests/auto/corelib/tools/qsharedpointer/forwarddeclaration.cpp
index b5d59de037..6fb01c6aa2 100644
--- a/tests/auto/corelib/tools/qsharedpointer/forwarddeclaration.cpp
+++ b/tests/auto/corelib/tools/qsharedpointer/forwarddeclaration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qsharedpointer/forwarddeclared.cpp b/tests/auto/corelib/tools/qsharedpointer/forwarddeclared.cpp
index 17812216c0..b10b7e53ba 100644
--- a/tests/auto/corelib/tools/qsharedpointer/forwarddeclared.cpp
+++ b/tests/auto/corelib/tools/qsharedpointer/forwarddeclared.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qsharedpointer/forwarddeclared.h b/tests/auto/corelib/tools/qsharedpointer/forwarddeclared.h
index cebbe94ef1..23f6dbf24c 100644
--- a/tests/auto/corelib/tools/qsharedpointer/forwarddeclared.h
+++ b/tests/auto/corelib/tools/qsharedpointer/forwarddeclared.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp b/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp
index 35b63deb4c..2bae52a622 100644
--- a/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp
+++ b/tests/auto/corelib/tools/qsharedpointer/tst_qsharedpointer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qsharedpointer/wrapper.cpp b/tests/auto/corelib/tools/qsharedpointer/wrapper.cpp
index 889493ddb4..9123853696 100644
--- a/tests/auto/corelib/tools/qsharedpointer/wrapper.cpp
+++ b/tests/auto/corelib/tools/qsharedpointer/wrapper.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qsharedpointer/wrapper.h b/tests/auto/corelib/tools/qsharedpointer/wrapper.h
index 66202a5a31..98b9a804c4 100644
--- a/tests/auto/corelib/tools/qsharedpointer/wrapper.h
+++ b/tests/auto/corelib/tools/qsharedpointer/wrapper.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qsize/tst_qsize.cpp b/tests/auto/corelib/tools/qsize/tst_qsize.cpp
index bc40e2aa64..be8a374a49 100644
--- a/tests/auto/corelib/tools/qsize/tst_qsize.cpp
+++ b/tests/auto/corelib/tools/qsize/tst_qsize.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qsizef/tst_qsizef.cpp b/tests/auto/corelib/tools/qsizef/tst_qsizef.cpp
index c74f4c3754..a098abe5b0 100644
--- a/tests/auto/corelib/tools/qsizef/tst_qsizef.cpp
+++ b/tests/auto/corelib/tools/qsizef/tst_qsizef.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qstl/tst_qstl.cpp b/tests/auto/corelib/tools/qstl/tst_qstl.cpp
index f9e3549a4d..6fff2b7d6b 100644
--- a/tests/auto/corelib/tools/qstl/tst_qstl.cpp
+++ b/tests/auto/corelib/tools/qstl/tst_qstl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qstring/double_data.h b/tests/auto/corelib/tools/qstring/double_data.h
index 8ffb981675..dc392723d3 100644
--- a/tests/auto/corelib/tools/qstring/double_data.h
+++ b/tests/auto/corelib/tools/qstring/double_data.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qstring/tst_qstring.cpp b/tests/auto/corelib/tools/qstring/tst_qstring.cpp
index 622d494a06..37d80afd34 100644
--- a/tests/auto/corelib/tools/qstring/tst_qstring.cpp
+++ b/tests/auto/corelib/tools/qstring/tst_qstring.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -220,6 +220,11 @@ private slots:
void reserve();
void toHtmlEscaped_data();
void toHtmlEscaped();
+
+ void operatorGreaterWithQLatin1String();
+ void compareQLatin1Strings();
+ void fromQLatin1StringWithLength();
+ void assignQLatin1String();
};
typedef QList<int> IntList;
@@ -1417,6 +1422,10 @@ void tst_QString::mid()
QCOMPARE(a.mid(3,3),(QString)"DEF");
QCOMPARE(a.mid(0,0),(QString)"");
+ QVERIFY(!a.mid(15,0).isNull());
+ QVERIFY(a.mid(15,0).isEmpty());
+ QVERIFY(!a.mid(15,1).isNull());
+ QVERIFY(a.mid(15,1).isEmpty());
QVERIFY(a.mid(9999).isNull());
QVERIFY(a.mid(9999,1).isNull());
@@ -1439,6 +1448,10 @@ void tst_QString::midRef()
QCOMPARE(a.midRef(3,3).toString(),(QString)"DEF");
QCOMPARE(a.midRef(0,0).toString(),(QString)"");
+ QVERIFY(!a.midRef(15,0).toString().isNull());
+ QVERIFY(a.midRef(15,0).toString().isEmpty());
+ QVERIFY(!a.midRef(15,1).toString().isNull());
+ QVERIFY(a.midRef(15,1).toString().isEmpty());
QVERIFY(a.midRef(9999).toString().isEmpty());
QVERIFY(a.midRef(9999,1).toString().isEmpty());
@@ -3976,107 +3989,83 @@ void tst_QString::operator_smaller()
void tst_QString::integer_conversion_data()
{
- QTest::addColumn<QString>("locale_name");
QTest::addColumn<QString>("num_str");
QTest::addColumn<int>("base");
QTest::addColumn<bool>("good");
QTest::addColumn<qlonglong>("num");
- QTest::newRow("C empty 0") << QString("C") << QString("") << 0 << false << (qlonglong)0;
- QTest::newRow("C empty 8") << QString("C") << QString("") << 8 << false << (qlonglong)0;
- QTest::newRow("C empty 10") << QString("C") << QString("") << 10 << false << (qlonglong)0;
- QTest::newRow("C empty 16") << QString("C") << QString("") << 16 << false << (qlonglong)0;
-
- QTest::newRow("C null 0") << QString("C") << QString() << 0 << false << (qlonglong)0;
- QTest::newRow("C null 8") << QString("C") << QString() << 8 << false << (qlonglong)0;
- QTest::newRow("C null 10") << QString("C") << QString() << 10 << false << (qlonglong)0;
- QTest::newRow("C null 16") << QString("C") << QString() << 16 << false << (qlonglong)0;
-
- QTest::newRow("C -0xf 0") << QString("C") << QString(" -0xf") << 0 << true << (qlonglong)-15;
- QTest::newRow("C -0xf 0") << QString("C") << QString("-0xf ") << 0 << true << (qlonglong)-15;
- QTest::newRow("C \t0xf\t 0") << QString("C") << QString("\t0xf\t") << 0 << true << (qlonglong)15;
- QTest::newRow("C -010 0") << QString("C") << QString(" -010") << 0 << true << (qlonglong)-8;
- QTest::newRow("C 010 0") << QString("C") << QString("010 ") << 0 << true << (qlonglong)8;
- QTest::newRow("C \t-010\t 0") << QString("C") << QString("\t-010\t") << 0 << true << (qlonglong)-8;
- QTest::newRow("C 123 10") << QString("C") << QString(" 123") << 10 << true << (qlonglong)123;
- QTest::newRow("C 123 10") << QString("C") << QString("123 ") << 10 << true << (qlonglong)123;
- QTest::newRow("C \t123\t 10") << QString("C") << QString("\t123\t") << 10 << true << (qlonglong)123;
- QTest::newRow("C -0xf 16") << QString("C") << QString(" -0xf") << 16 << true << (qlonglong)-15;
- QTest::newRow("C -0xf 16") << QString("C") << QString("-0xf ") << 16 << true << (qlonglong)-15;
- QTest::newRow("C \t0xf\t 16") << QString("C") << QString("\t0xf\t") << 16 << true << (qlonglong)15;
-
- QTest::newRow("C -0 0") << QString("C") << QString("-0") << 0 << true << (qlonglong)0;
- QTest::newRow("C -0 8") << QString("C") << QString("-0") << 8 << true << (qlonglong)0;
- QTest::newRow("C -0 10") << QString("C") << QString("-0") << 10 << true << (qlonglong)0;
- QTest::newRow("C -0 16") << QString("C") << QString("-0") << 16 << true << (qlonglong)0;
-
- QTest::newRow("C 1.234 10") << QString("C") << QString("1.234") << 10 << false << (qlonglong)0;
- QTest::newRow("C 1,234 10") << QString("C") << QString("1,234") << 10 << false << (qlonglong)0;
- QTest::newRow("de_DE 1.234 10") << QString("de_DE") << QString("1.234") << 10 << false << (qlonglong)0;
- QTest::newRow("de_DE 1,234 10") << QString("de_DE") << QString("1,234") << 10 << false << (qlonglong)0;
-
- QTest::newRow("C 0x 0") << QString("C") << QString("0x") << 0 << false << (qlonglong)0;
- QTest::newRow("C 0x 16") << QString("C") << QString("0x") << 16 << false << (qlonglong)0;
-
- QTest::newRow("C 10 0") << QString("C") << QString("10") << 0 << true << (qlonglong)10;
- QTest::newRow("C 010 0") << QString("C") << QString("010") << 0 << true << (qlonglong)8;
- QTest::newRow("C 0x10 0") << QString("C") << QString("0x10") << 0 << true << (qlonglong)16;
- QTest::newRow("C 10 8") << QString("C") << QString("10") << 8 << true << (qlonglong)8;
- QTest::newRow("C 010 8") << QString("C") << QString("010") << 8 << true << (qlonglong)8;
- QTest::newRow("C 0x10 8") << QString("C") << QString("0x10") << 8 << false << (qlonglong)0;
- QTest::newRow("C 10 10") << QString("C") << QString("10") << 10 << true << (qlonglong)10;
- QTest::newRow("C 010 10") << QString("C") << QString("010") << 10 << true << (qlonglong)10;
- QTest::newRow("C 0x10 10") << QString("C") << QString("0x10") << 10 << false << (qlonglong)0;
- QTest::newRow("C 10 16") << QString("C") << QString("10") << 16 << true << (qlonglong)16;
- QTest::newRow("C 010 16") << QString("C") << QString("010") << 16 << true << (qlonglong)16;
- QTest::newRow("C 0x10 16") << QString("C") << QString("0x10") << 16 << true << (qlonglong)16;
-
- QTest::newRow("de_DE 10 0") << QString("de_DE") << QString("10") << 0 << true << (qlonglong)10;
- QTest::newRow("de_DE 010 0") << QString("de_DE") << QString("010") << 0 << true << (qlonglong)8;
- QTest::newRow("de_DE 0x10 0") << QString("de_DE") << QString("0x10") << 0 << true << (qlonglong)16;
- QTest::newRow("de_DE 10 8") << QString("de_DE") << QString("10") << 8 << true << (qlonglong)8;
- QTest::newRow("de_DE 010 8") << QString("de_DE") << QString("010") << 8 << true << (qlonglong)8;
- QTest::newRow("de_DE 0x10 8") << QString("de_DE") << QString("0x10") << 8 << false << (qlonglong)0;
- QTest::newRow("de_DE 10 10") << QString("de_DE") << QString("10") << 10 << true << (qlonglong)10;
- QTest::newRow("de_DE 010 10") << QString("de_DE") << QString("010") << 10 << true << (qlonglong)10;
- QTest::newRow("de_DE 0x10 10") << QString("de_DE") << QString("0x10") << 10 << false << (qlonglong)0;
- QTest::newRow("de_DE 10 16") << QString("de_DE") << QString("10") << 16 << true << (qlonglong)16;
- QTest::newRow("de_DE 010 16") << QString("de_DE") << QString("010") << 16 << true << (qlonglong)16;
- QTest::newRow("de_DE 0x10 16") << QString("de_DE") << QString("0x10") << 16 << true << (qlonglong)16;
-
- QTest::newRow("C -10 0") << QString("C") << QString("-10") << 0 << true << (qlonglong)-10;
- QTest::newRow("C -010 0") << QString("C") << QString("-010") << 0 << true << (qlonglong)-8;
- QTest::newRow("C -0x10 0") << QString("C") << QString("-0x10") << 0 << true << (qlonglong)-16;
- QTest::newRow("C -10 8") << QString("C") << QString("-10") << 8 << true << (qlonglong)-8;
- QTest::newRow("C -010 8") << QString("C") << QString("-010") << 8 << true << (qlonglong)-8;
- QTest::newRow("C -0x10 8") << QString("C") << QString("-0x10") << 8 << false << (qlonglong)0;
- QTest::newRow("C -10 10") << QString("C") << QString("-10") << 10 << true << (qlonglong)-10;
- QTest::newRow("C -010 10") << QString("C") << QString("-010") << 10 << true << (qlonglong)-10;
- QTest::newRow("C -0x10 10") << QString("C") << QString("-0x10") << 10 << false << (qlonglong)0;
- QTest::newRow("C -10 16") << QString("C") << QString("-10") << 16 << true << (qlonglong)-16;
- QTest::newRow("C -010 16") << QString("C") << QString("-010") << 16 << true << (qlonglong)-16;
- QTest::newRow("C -0x10 16") << QString("C") << QString("-0x10") << 16 << true << (qlonglong)-16;
+ QTest::newRow("C empty 0") << QString("") << 0 << false << (qlonglong)0;
+ QTest::newRow("C empty 8") << QString("") << 8 << false << (qlonglong)0;
+ QTest::newRow("C empty 10") << QString("") << 10 << false << (qlonglong)0;
+ QTest::newRow("C empty 16") << QString("") << 16 << false << (qlonglong)0;
+
+ QTest::newRow("C null 0") << QString() << 0 << false << (qlonglong)0;
+ QTest::newRow("C null 8") << QString() << 8 << false << (qlonglong)0;
+ QTest::newRow("C null 10") << QString() << 10 << false << (qlonglong)0;
+ QTest::newRow("C null 16") << QString() << 16 << false << (qlonglong)0;
+
+ QTest::newRow("C -0xf 0") << QString(" -0xf") << 0 << true << (qlonglong)-15;
+ QTest::newRow("C -0xf 0") << QString("-0xf ") << 0 << true << (qlonglong)-15;
+ QTest::newRow("C \t0xf\t 0") << QString("\t0xf\t") << 0 << true << (qlonglong)15;
+ QTest::newRow("C -010 0") << QString(" -010") << 0 << true << (qlonglong)-8;
+ QTest::newRow("C 010 0") << QString("010 ") << 0 << true << (qlonglong)8;
+ QTest::newRow("C \t-010\t 0") << QString("\t-010\t") << 0 << true << (qlonglong)-8;
+ QTest::newRow("C 123 10") << QString(" 123") << 10 << true << (qlonglong)123;
+ QTest::newRow("C 123 10") << QString("123 ") << 10 << true << (qlonglong)123;
+ QTest::newRow("C \t123\t 10") << QString("\t123\t") << 10 << true << (qlonglong)123;
+ QTest::newRow("C -0xf 16") << QString(" -0xf") << 16 << true << (qlonglong)-15;
+ QTest::newRow("C -0xf 16") << QString("-0xf ") << 16 << true << (qlonglong)-15;
+ QTest::newRow("C \t0xf\t 16") << QString("\t0xf\t") << 16 << true << (qlonglong)15;
+
+ QTest::newRow("C -0 0") << QString("-0") << 0 << true << (qlonglong)0;
+ QTest::newRow("C -0 8") << QString("-0") << 8 << true << (qlonglong)0;
+ QTest::newRow("C -0 10") << QString("-0") << 10 << true << (qlonglong)0;
+ QTest::newRow("C -0 16") << QString("-0") << 16 << true << (qlonglong)0;
+
+ QTest::newRow("C 1.234 10") << QString("1.234") << 10 << false << (qlonglong)0;
+ QTest::newRow("C 1,234 10") << QString("1,234") << 10 << false << (qlonglong)0;
+
+ QTest::newRow("C 0x 0") << QString("0x") << 0 << false << (qlonglong)0;
+ QTest::newRow("C 0x 16") << QString("0x") << 16 << false << (qlonglong)0;
+
+ QTest::newRow("C 10 0") << QString("10") << 0 << true << (qlonglong)10;
+ QTest::newRow("C 010 0") << QString("010") << 0 << true << (qlonglong)8;
+ QTest::newRow("C 0x10 0") << QString("0x10") << 0 << true << (qlonglong)16;
+ QTest::newRow("C 10 8") << QString("10") << 8 << true << (qlonglong)8;
+ QTest::newRow("C 010 8") << QString("010") << 8 << true << (qlonglong)8;
+ QTest::newRow("C 0x10 8") << QString("0x10") << 8 << false << (qlonglong)0;
+ QTest::newRow("C 10 10") << QString("10") << 10 << true << (qlonglong)10;
+ QTest::newRow("C 010 10") << QString("010") << 10 << true << (qlonglong)10;
+ QTest::newRow("C 0x10 10") << QString("0x10") << 10 << false << (qlonglong)0;
+ QTest::newRow("C 10 16") << QString("10") << 16 << true << (qlonglong)16;
+ QTest::newRow("C 010 16") << QString("010") << 16 << true << (qlonglong)16;
+ QTest::newRow("C 0x10 16") << QString("0x10") << 16 << true << (qlonglong)16;
+
+ QTest::newRow("C -10 0") << QString("-10") << 0 << true << (qlonglong)-10;
+ QTest::newRow("C -010 0") << QString("-010") << 0 << true << (qlonglong)-8;
+ QTest::newRow("C -0x10 0") << QString("-0x10") << 0 << true << (qlonglong)-16;
+ QTest::newRow("C -10 8") << QString("-10") << 8 << true << (qlonglong)-8;
+ QTest::newRow("C -010 8") << QString("-010") << 8 << true << (qlonglong)-8;
+ QTest::newRow("C -0x10 8") << QString("-0x10") << 8 << false << (qlonglong)0;
+ QTest::newRow("C -10 10") << QString("-10") << 10 << true << (qlonglong)-10;
+ QTest::newRow("C -010 10") << QString("-010") << 10 << true << (qlonglong)-10;
+ QTest::newRow("C -0x10 10") << QString("-0x10") << 10 << false << (qlonglong)0;
+ QTest::newRow("C -10 16") << QString("-10") << 16 << true << (qlonglong)-16;
+ QTest::newRow("C -010 16") << QString("-010") << 16 << true << (qlonglong)-16;
+ QTest::newRow("C -0x10 16") << QString("-0x10") << 16 << true << (qlonglong)-16;
// Let's try some Arabic
const quint16 arabic_str[] = { 0x0661, 0x0662, 0x0663, 0x0664, 0x0000 }; // "1234"
- QTest::newRow("ar_SA 1234 0") << QString("ar_SA") << QString::fromUtf16(arabic_str) << 0 << true << (qlonglong)1234;
- QTest::newRow("ar_SA 1234 8") << QString("ar_SA") << QString::fromUtf16(arabic_str) << 8 << true << (qlonglong)668;
- QTest::newRow("ar_SA 1234 10") << QString("ar_SA") << QString::fromUtf16(arabic_str) << 10 << true << (qlonglong)1234;
- QTest::newRow("ar_SA 1234 16") << QString("ar_SA") << QString::fromUtf16(arabic_str) << 16 << true << (qlonglong)4660;
+ QTest::newRow("ar_SA 1234 0") << QString::fromUtf16(arabic_str) << 0 << false << (qlonglong)0;
}
void tst_QString::integer_conversion()
{
- QFETCH(QString, locale_name);
QFETCH(QString, num_str);
QFETCH(int, base);
QFETCH(bool, good);
QFETCH(qlonglong, num);
-
- QLocale::setDefault(locale_name);
- QCOMPARE(QLocale().name(), locale_name);
-
bool ok;
qlonglong d = num_str.toLongLong(&ok, base);
QCOMPARE(ok, good);
@@ -4084,100 +4073,65 @@ void tst_QString::integer_conversion()
if (ok) {
QCOMPARE(d, num);
}
-
- QLocale::setDefault(QLocale::C);
}
void tst_QString::double_conversion_data()
{
- QTest::addColumn<QString>("locale_name");
QTest::addColumn<QString>("num_str");
QTest::addColumn<bool>("good");
QTest::addColumn<double>("num");
// The good...
- QTest::newRow("C 1") << QString("C") << QString("1") << true << 1.0;
- QTest::newRow("C 1.0") << QString("C") << QString("1.0") << true << 1.0;
- QTest::newRow("C 1.234") << QString("C") << QString("1.234") << true << 1.234;
- QTest::newRow("C 1.234e-10") << QString("C") << QString("1.234e-10") << true << 1.234e-10;
- QTest::newRow("C 1.234E10") << QString("C") << QString("1.234E10") << true << 1.234e10;
- QTest::newRow("C 1e10") << QString("C") << QString("1e10") << true << 1.0e10;
+ QTest::newRow("C 1") << QString("1") << true << 1.0;
+ QTest::newRow("C 1.0") << QString("1.0") << true << 1.0;
+ QTest::newRow("C 1.234") << QString("1.234") << true << 1.234;
+ QTest::newRow("C 1.234e-10") << QString("1.234e-10") << true << 1.234e-10;
+ QTest::newRow("C 1.234E10") << QString("1.234E10") << true << 1.234e10;
+ QTest::newRow("C 1e10") << QString("1e10") << true << 1.0e10;
// The bad...
- QTest::newRow("C empty") << QString("C") << QString("") << false << 0.0;
- QTest::newRow("C null") << QString("C") << QString() << false << 0.0;
- QTest::newRow("C .") << QString("C") << QString(".") << false << 0.0;
- QTest::newRow("C 1e") << QString("C") << QString("1e") << false << 0.0;
- QTest::newRow("C 1,") << QString("C") << QString("1,") << false << 0.0;
- QTest::newRow("C 1,0") << QString("C") << QString("1,0") << false << 0.0;
- QTest::newRow("C 1,000") << QString("C") << QString("1,000") << false << 0.0;
- QTest::newRow("C 1e1.0") << QString("C") << QString("1e1.0") << false << 0.0;
- QTest::newRow("C 1e+") << QString("C") << QString("1e+") << false << 0.0;
- QTest::newRow("C 1e-") << QString("C") << QString("1e-") << false << 0.0;
+ QTest::newRow("C empty") << QString("") << false << 0.0;
+ QTest::newRow("C null") << QString() << false << 0.0;
+ QTest::newRow("C .") << QString(".") << false << 0.0;
+ QTest::newRow("C 1e") << QString("1e") << false << 0.0;
+ QTest::newRow("C 1,") << QString("1,") << false << 0.0;
+ QTest::newRow("C 1,0") << QString("1,0") << false << 0.0;
+ QTest::newRow("C 1,000") << QString("1,000") << false << 0.0;
+ QTest::newRow("C 1e1.0") << QString("1e1.0") << false << 0.0;
+ QTest::newRow("C 1e+") << QString("1e+") << false << 0.0;
+ QTest::newRow("C 1e-") << QString("1e-") << false << 0.0;
+ QTest::newRow("de_DE 1,0") << QString("1,0") << false << 0.0;
+ QTest::newRow("de_DE 1,234") << QString("1,234") << false << 0.0;
+ QTest::newRow("de_DE 1,234e-10") << QString("1,234e-10") << false << 0.0;
+ QTest::newRow("de_DE 1,234E10") << QString("1,234E10") << false << 0.0;
// And the ugly...
- QTest::newRow("C .1") << QString("C") << QString(".1") << true << 0.1;
- QTest::newRow("C -.1") << QString("C") << QString("-.1") << true << -0.1;
- QTest::newRow("C 1.") << QString("C") << QString("1.") << true << 1.0;
- QTest::newRow("C 1.E10") << QString("C") << QString("1.E10") << true << 1.0e10;
- QTest::newRow("C 1e+10") << QString("C") << QString("1e+10") << true << 1.0e+10;
-
- QTest::newRow("de_DE 1") << QString("de_DE") << QString("1") << true << 1.0;
- QTest::newRow("de_DE 1.0") << QString("de_DE") << QString("1.0") << true << 1.0;
- QTest::newRow("de_DE 1.234") << QString("de_DE") << QString("1.234") << true << 1.234;
- QTest::newRow("de_DE 1.234e-10") << QString("de_DE") << QString("1.234e-10") << true << 1.234e-10;
- QTest::newRow("de_DE 1.234E10") << QString("de_DE") << QString("1.234E10") << true << 1.234e10;
- QTest::newRow("de_DE 1e10") << QString("de_DE") << QString("1e10") << true << 1.0e10;
- QTest::newRow("de_DE .1") << QString("de_DE") << QString(".1") << true << 0.1;
- QTest::newRow("de_DE -.1") << QString("de_DE") << QString("-.1") << true << -0.1;
- QTest::newRow("de_DE 1.") << QString("de_DE") << QString("1.") << true << 1.0;
- QTest::newRow("de_DE 1.E10") << QString("de_DE") << QString("1.E10") << true << 1.0e10;
- QTest::newRow("de_DE 1e+10") << QString("de_DE") << QString("1e+10") << true << 1.0e+10;
-
- QTest::newRow("de_DE 1,0") << QString("de_DE") << QString("1,0") << true << 1.0;
- QTest::newRow("de_DE 1,234") << QString("de_DE") << QString("1,234") << true << 1.234;
- QTest::newRow("de_DE 1,234e-10") << QString("de_DE") << QString("1,234e-10") << true << 1.234e-10;
- QTest::newRow("de_DE 1,234E10") << QString("de_DE") << QString("1,234E10") << true << 1.234e10;
- QTest::newRow("de_DE ,1") << QString("de_DE") << QString(",1") << true << 0.1;
- QTest::newRow("de_DE -,1") << QString("de_DE") << QString("-,1") << true << -0.1;
- QTest::newRow("de_DE 1,") << QString("de_DE") << QString("1,") << true << 1.0;
- QTest::newRow("de_DE 1,E10") << QString("de_DE") << QString("1,E10") << true << 1.0e10;
-
- QTest::newRow("de_DE empty") << QString("de_DE") << QString("") << false << 0.0;
- QTest::newRow("de_DE null") << QString("de_DE") << QString() << false << 0.0;
- QTest::newRow("de_DE .") << QString("de_DE") << QString(".") << false << 0.0;
- QTest::newRow("de_DE 1e") << QString("de_DE") << QString("1e") << false << 0.0;
- QTest::newRow("de_DE 1e1.0") << QString("de_DE") << QString("1e1.0") << false << 0.0;
- QTest::newRow("de_DE 1e+") << QString("de_DE") << QString("1e+") << false << 0.0;
- QTest::newRow("de_DE 1e-") << QString("de_DE") << QString("1e-") << false << 0.0;
-
- QTest::newRow("C 1") << QString("C") << QString(" 1") << true << 1.0;
- QTest::newRow("C 1 ") << QString("C") << QString("1 ") << true << 1.0;
- QTest::newRow("de_DE 1") << QString("de_DE") << QString(" 1") << true << 1.0;
- QTest::newRow("de_DE 1 ") << QString("de_DE") << QString("1 ") << true << 1.0;
+ QTest::newRow("C .1") << QString(".1") << true << 0.1;
+ QTest::newRow("C -.1") << QString("-.1") << true << -0.1;
+ QTest::newRow("C 1.") << QString("1.") << true << 1.0;
+ QTest::newRow("C 1.E10") << QString("1.E10") << true << 1.0e10;
+ QTest::newRow("C 1e+10") << QString("1e+10") << true << 1.0e+10;
+ QTest::newRow("C 1") << QString(" 1") << true << 1.0;
+ QTest::newRow("C 1 ") << QString("1 ") << true << 1.0;
// Let's try some Arabic
const quint16 arabic_str[] = { 0x0660, 0x066B, 0x0661, 0x0662,
0x0663, 0x0664, 0x0065, 0x0662,
0x0000 }; // "0.1234e2"
- QTest::newRow("ar_SA") << QString("ar_SA") << QString::fromUtf16(arabic_str) << true << 0.1234e2;
+ QTest::newRow("ar_SA") << QString::fromUtf16(arabic_str) << false << 0.0;
}
void tst_QString::double_conversion()
{
#define MY_DOUBLE_EPSILON (2.22045e-16)
- QFETCH(QString, locale_name);
QFETCH(QString, num_str);
QFETCH(bool, good);
QFETCH(double, num);
- QLocale::setDefault(locale_name);
- QCOMPARE(QLocale().name(), locale_name);
-
bool ok;
double d = num_str.toDouble(&ok);
QCOMPARE(ok, good);
@@ -4188,8 +4142,6 @@ void tst_QString::double_conversion()
diff = -diff;
QVERIFY(diff <= MY_DOUBLE_EPSILON);
}
-
- QLocale::setDefault(QLocale::C);
}
#ifndef Q_MOC_RUN
@@ -4788,6 +4740,13 @@ void tst_QString::compare()
QCOMPARE(sign(QString::compare(s1, QLatin1String(s2.toLatin1()), Qt::CaseInsensitive)), cir);
QCOMPARE(sign(QStringRef::compare(r1, QLatin1String(s2.toLatin1()))), csr);
QCOMPARE(sign(QStringRef::compare(r1, QLatin1String(s2.toLatin1()), Qt::CaseInsensitive)), cir);
+ QByteArray l1 = s2.toLatin1();
+ l1 += "x";
+ QLatin1String l1str(l1.constData(), l1.size() - 1);
+ QCOMPARE(sign(QString::compare(s1, l1str)), csr);
+ QCOMPARE(sign(QString::compare(s1, l1str, Qt::CaseInsensitive)), cir);
+ QCOMPARE(sign(QStringRef::compare(r1, l1str)), csr);
+ QCOMPARE(sign(QStringRef::compare(r1, l1str, Qt::CaseInsensitive)), cir);
}
if (isLatin(s1)) {
@@ -5167,6 +5126,128 @@ void tst_QString::toHtmlEscaped()
QCOMPARE(original.toHtmlEscaped(), expected);
}
+void tst_QString::operatorGreaterWithQLatin1String()
+{
+ QLatin1String latin1foo("fooZZ", 3);
+ QString stringfoo = QString::fromLatin1("foo");
+ QVERIFY(stringfoo >= latin1foo);
+ QVERIFY(!(stringfoo > latin1foo));
+ QVERIFY(stringfoo <= latin1foo);
+ QVERIFY(!(stringfoo < latin1foo));
+}
+
+void tst_QString::compareQLatin1Strings()
+{
+ QLatin1String abc("abc");
+ QLatin1String abcd("abcd");
+ QLatin1String cba("cba");
+ QLatin1String de("de");
+
+ QVERIFY(abc == abc);
+ QVERIFY(!(abc == cba));
+ QVERIFY(!(cba == abc));
+ QVERIFY(!(abc == abcd));
+ QVERIFY(!(abcd == abc));
+
+ QVERIFY(abc != cba);
+ QVERIFY(!(abc != abc));
+ QVERIFY(cba != abc);
+ QVERIFY(abc != abcd);
+ QVERIFY(abcd != abc);
+
+ QVERIFY(abc < abcd);
+ QVERIFY(abc < cba);
+ QVERIFY(abc < de);
+ QVERIFY(abcd < cba);
+ QVERIFY(!(abc < abc));
+ QVERIFY(!(abcd < abc));
+ QVERIFY(!(de < cba));
+
+ QVERIFY(abcd > abc);
+ QVERIFY(cba > abc);
+ QVERIFY(de > abc);
+ QVERIFY(!(abc > abc));
+ QVERIFY(!(abc > abcd));
+ QVERIFY(!(abcd > cba));
+
+ QVERIFY(abc <= abc);
+ QVERIFY(abc <= abcd);
+ QVERIFY(abc <= cba);
+ QVERIFY(abc <= de);
+ QVERIFY(!(abcd <= abc));
+ QVERIFY(!(cba <= abc));
+ QVERIFY(!(cba <= abcd));
+ QVERIFY(!(de <= abc));
+
+ QVERIFY(abc >= abc);
+ QVERIFY(abcd >= abc);
+ QVERIFY(!(abc >= abcd));
+ QVERIFY(cba >= abc);
+ QVERIFY(!(abc >= cba));
+ QVERIFY(de >= abc);
+ QVERIFY(!(abc >= de));
+
+ QLatin1String subfoo("fooZZ", 3);
+ QLatin1String foo("foo");
+ QVERIFY(subfoo == foo);
+ QVERIFY(foo == subfoo);
+ QVERIFY(!(subfoo != foo));
+ QVERIFY(!(foo != subfoo));
+ QVERIFY(!(foo < subfoo));
+ QVERIFY(!(subfoo < foo));
+ QVERIFY(foo >= subfoo);
+ QVERIFY(subfoo >= foo);
+ QVERIFY(!(foo > subfoo));
+ QVERIFY(!(subfoo > foo));
+ QVERIFY(foo <= subfoo);
+ QVERIFY(subfoo <= foo);
+
+ QLatin1String subabc("abcZZ", 3);
+ QLatin1String subab("abcZZ", 2);
+ QVERIFY(subabc != subab);
+ QVERIFY(subab != subabc);
+ QVERIFY(!(subabc == subab));
+ QVERIFY(!(subab == subabc));
+ QVERIFY(subab < subabc);
+ QVERIFY(!(subabc < subab));
+ QVERIFY(subabc > subab);
+ QVERIFY(!(subab > subabc));
+ QVERIFY(subab <= subabc);
+ QVERIFY(!(subabc <= subab));
+ QVERIFY(subabc >= subab);
+ QVERIFY(!(subab >= subabc));
+}
+
+void tst_QString::fromQLatin1StringWithLength()
+{
+ QLatin1String latin1foo("foobar", 3);
+ QString foo(latin1foo);
+ QCOMPARE(foo.size(), latin1foo.size());
+ QCOMPARE(foo, QString::fromLatin1("foo"));
+}
+
+void tst_QString::assignQLatin1String()
+{
+ QString empty = QLatin1String("");
+ QVERIFY(empty.isEmpty());
+ QVERIFY(!empty.isNull());
+
+ QString null = QLatin1String(0);
+ QVERIFY(null.isEmpty());
+ QVERIFY(null.isNull());
+
+ QLatin1String latin1foo("foo");
+ QString foo = latin1foo;
+ QCOMPARE(foo.size(), latin1foo.size());
+ QCOMPARE(foo, QString::fromLatin1("foo"));
+
+ QLatin1String latin1subfoo("foobar", 3);
+ foo = latin1subfoo;
+ QCOMPARE(foo.size(), latin1subfoo.size());
+ QCOMPARE(foo, QString::fromLatin1("foo"));
+
+}
+
QTEST_APPLESS_MAIN(tst_QString)
#include "tst_qstring.moc"
diff --git a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/stringbuilder.cpp b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/stringbuilder.cpp
index 283e707c1b..95e24b22fb 100644
--- a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/stringbuilder.cpp
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/stringbuilder.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/tst_qstringbuilder1.cpp b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/tst_qstringbuilder1.cpp
index fd92aafadd..4201fc3f5c 100644
--- a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/tst_qstringbuilder1.cpp
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder1/tst_qstringbuilder1.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/tst_qstringbuilder2.cpp b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/tst_qstringbuilder2.cpp
index 6bdb607431..0e8e081c46 100644
--- a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/tst_qstringbuilder2.cpp
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder2/tst_qstringbuilder2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/tst_qstringbuilder3.cpp b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/tst_qstringbuilder3.cpp
index 915c0d23ad..09d7f38125 100644
--- a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/tst_qstringbuilder3.cpp
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder3/tst_qstringbuilder3.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/tst_qstringbuilder4.cpp b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/tst_qstringbuilder4.cpp
index c9837a0489..91bb07039a 100644
--- a/tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/tst_qstringbuilder4.cpp
+++ b/tests/auto/corelib/tools/qstringbuilder/qstringbuilder4/tst_qstringbuilder4.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qstringlist/tst_qstringlist.cpp b/tests/auto/corelib/tools/qstringlist/tst_qstringlist.cpp
index 54ca9dd3a7..e3eb1a21ac 100644
--- a/tests/auto/corelib/tools/qstringlist/tst_qstringlist.cpp
+++ b/tests/auto/corelib/tools/qstringlist/tst_qstringlist.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qstringmatcher/tst_qstringmatcher.cpp b/tests/auto/corelib/tools/qstringmatcher/tst_qstringmatcher.cpp
index 10906902ff..ebbad86c81 100644
--- a/tests/auto/corelib/tools/qstringmatcher/tst_qstringmatcher.cpp
+++ b/tests/auto/corelib/tools/qstringmatcher/tst_qstringmatcher.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qstringref/tst_qstringref.cpp b/tests/auto/corelib/tools/qstringref/tst_qstringref.cpp
index c0dc253167..77d2101320 100644
--- a/tests/auto/corelib/tools/qstringref/tst_qstringref.cpp
+++ b/tests/auto/corelib/tools/qstringref/tst_qstringref.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qtextboundaryfinder/tst_qtextboundaryfinder.cpp b/tests/auto/corelib/tools/qtextboundaryfinder/tst_qtextboundaryfinder.cpp
index 100ddfcb12..89dd01ac3a 100644
--- a/tests/auto/corelib/tools/qtextboundaryfinder/tst_qtextboundaryfinder.cpp
+++ b/tests/auto/corelib/tools/qtextboundaryfinder/tst_qtextboundaryfinder.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qtime/tst_qtime.cpp b/tests/auto/corelib/tools/qtime/tst_qtime.cpp
index bc03e74b41..d8f72dffdb 100644
--- a/tests/auto/corelib/tools/qtime/tst_qtime.cpp
+++ b/tests/auto/corelib/tools/qtime/tst_qtime.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -242,6 +242,7 @@ void tst_QTime::hour_data()
QTest::newRow( "data2" ) << 1 << 2 << 3 << 4;
QTest::newRow( "data3" ) << 2 << 12 << 13 << 65;
QTest::newRow( "data4" ) << 23 << 59 << 59 << 999;
+ QTest::newRow( "data5" ) << -1 << -1 << -1 << -1;
}
void tst_QTime::hour()
@@ -271,6 +272,7 @@ void tst_QTime::setHMS_data()
QTest::newRow( "data4" ) << 23 << 0 << 0;
QTest::newRow( "data5" ) << 23 << 59 << 0;
QTest::newRow( "data6" ) << 23 << 59 << 59;
+ QTest::newRow( "data7" ) << -1 << -1 << -1;
}
void tst_QTime::setHMS()
@@ -296,6 +298,9 @@ void tst_QTime::secsTo_data()
QTest::newRow( "data1" ) << QTime(0,0,0) << QTime(0,1,0) << 60;
QTest::newRow( "data2" ) << QTime(0,0,0) << QTime(0,10,0) << 600;
QTest::newRow( "data3" ) << QTime(0,0,0) << QTime(23,59,59) << 86399;
+ QTest::newRow( "data4" ) << QTime(-1, -1, -1) << QTime(0, 0, 0) << 0;
+ QTest::newRow( "data5" ) << QTime(0, 0, 0) << QTime(-1, -1, -1) << 0;
+ QTest::newRow( "data6" ) << QTime(-1, -1, -1) << QTime(-1, -1, -1) << 0;
}
void tst_QTime::secsTo()
@@ -317,6 +322,9 @@ void tst_QTime::msecsTo_data()
QTest::newRow( "data1" ) << QTime(0,0,0,0) << QTime(0,0,1,0) << 1000;
QTest::newRow( "data2" ) << QTime(0,0,0,0) << QTime(0,0,10,0) << 10000;
QTest::newRow( "data3" ) << QTime(0,0,0,0) << QTime(23,59,59,0) << 86399000;
+ QTest::newRow( "data4" ) << QTime(-1, -1, -1, -1) << QTime(0, 0, 0, 0) << 0;
+ QTest::newRow( "data5" ) << QTime(0, 0, 0, 0) << QTime(-1, -1, -1, -1) << 0;
+ QTest::newRow( "data6" ) << QTime(-1, -1, -1, -1) << QTime(-1, -1, -1, -1) << 0;
}
void tst_QTime::msecsTo()
diff --git a/tests/auto/corelib/tools/qtimeline/tst_qtimeline.cpp b/tests/auto/corelib/tools/qtimeline/tst_qtimeline.cpp
index db08bc5724..f05497d7a2 100644
--- a/tests/auto/corelib/tools/qtimeline/tst_qtimeline.cpp
+++ b/tests/auto/corelib/tools/qtimeline/tst_qtimeline.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp b/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp
index cc2bbe2f1f..8361150d1c 100644
--- a/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp
+++ b/tests/auto/corelib/tools/qvarlengtharray/tst_qvarlengtharray.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/tools/qvector/tst_qvector.cpp b/tests/auto/corelib/tools/qvector/tst_qvector.cpp
index bed2e25d31..67ca547736 100644
--- a/tests/auto/corelib/tools/qvector/tst_qvector.cpp
+++ b/tests/auto/corelib/tools/qvector/tst_qvector.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/xml/qxmlstream/qc14n.h b/tests/auto/corelib/xml/qxmlstream/qc14n.h
index ed7bd3b323..a45a61eaa7 100644
--- a/tests/auto/corelib/xml/qxmlstream/qc14n.h
+++ b/tests/auto/corelib/xml/qxmlstream/qc14n.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/corelib/xml/qxmlstream/setupSuite.sh b/tests/auto/corelib/xml/qxmlstream/setupSuite.sh
index ca85fa2884..f52a6b4ead 100755
--- a/tests/auto/corelib/xml/qxmlstream/setupSuite.sh
+++ b/tests/auto/corelib/xml/qxmlstream/setupSuite.sh
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is the build configuration utility of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
diff --git a/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp b/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp
index 8d3ddfa096..0ce0da06aa 100644
--- a/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp
+++ b/tests/auto/corelib/xml/qxmlstream/tst_qxmlstream.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -532,6 +532,7 @@ public:
private slots:
void initTestCase();
+ void cleanupTestCase();
void reportFailures() const;
void reportFailures_data();
void checkBaseline() const;
@@ -589,6 +590,11 @@ void tst_QXmlStream::initTestCase()
QVERIFY(reader.parse(&source, false));
}
+void tst_QXmlStream::cleanupTestCase()
+{
+ QFile::remove(QLatin1String("test.xml"));
+}
+
void tst_QXmlStream::reportFailures() const
{
QFETCH(bool, isError);
diff --git a/tests/auto/dbus/qdbusabstractadaptor/myobject.h b/tests/auto/dbus/qdbusabstractadaptor/myobject.h
index a5dc47376d..04c8186137 100644
--- a/tests/auto/dbus/qdbusabstractadaptor/myobject.h
+++ b/tests/auto/dbus/qdbusabstractadaptor/myobject.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp b/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp
index ed027ae70c..d5d5f2c431 100644
--- a/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp
+++ b/tests/auto/dbus/qdbusabstractadaptor/qmyserver/qmyserver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp b/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp
index cc55a942c5..c14d77eec3 100644
--- a/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp
+++ b/tests/auto/dbus/qdbusabstractadaptor/tst_qdbusabstractadaptor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusabstractinterface/interface.cpp b/tests/auto/dbus/qdbusabstractinterface/interface.cpp
index 14a9db543c..564bd15938 100644
--- a/tests/auto/dbus/qdbusabstractinterface/interface.cpp
+++ b/tests/auto/dbus/qdbusabstractinterface/interface.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusabstractinterface/interface.h b/tests/auto/dbus/qdbusabstractinterface/interface.h
index 1c1b1bdcb1..2bd99fa11a 100644
--- a/tests/auto/dbus/qdbusabstractinterface/interface.h
+++ b/tests/auto/dbus/qdbusabstractinterface/interface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusabstractinterface/pinger.cpp b/tests/auto/dbus/qdbusabstractinterface/pinger.cpp
index 1bd767c8fc..93d4732f74 100644
--- a/tests/auto/dbus/qdbusabstractinterface/pinger.cpp
+++ b/tests/auto/dbus/qdbusabstractinterface/pinger.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusabstractinterface/pinger.h b/tests/auto/dbus/qdbusabstractinterface/pinger.h
index e1acd41021..eb05d7535a 100644
--- a/tests/auto/dbus/qdbusabstractinterface/pinger.h
+++ b/tests/auto/dbus/qdbusabstractinterface/pinger.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtDBus module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp b/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp
index 489bd4afdb..87c6bad7fc 100644
--- a/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp
+++ b/tests/auto/dbus/qdbusabstractinterface/qpinger/qpinger.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp b/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp
index 84d2051f29..28dfd0b63f 100644
--- a/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp
+++ b/tests/auto/dbus/qdbusabstractinterface/tst_qdbusabstractinterface.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
index f6b9edcff1..e1d128dac7 100644
--- a/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
+++ b/tests/auto/dbus/qdbusconnection/tst_qdbusconnection.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusconnection_no_bus/tst_qdbusconnection_no_bus.cpp b/tests/auto/dbus/qdbusconnection_no_bus/tst_qdbusconnection_no_bus.cpp
index a678ddd269..de08fc8390 100644
--- a/tests/auto/dbus/qdbusconnection_no_bus/tst_qdbusconnection_no_bus.cpp
+++ b/tests/auto/dbus/qdbusconnection_no_bus/tst_qdbusconnection_no_bus.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbuscontext/tst_qdbuscontext.cpp b/tests/auto/dbus/qdbuscontext/tst_qdbuscontext.cpp
index de29f08ef8..bc06f8e377 100644
--- a/tests/auto/dbus/qdbuscontext/tst_qdbuscontext.cpp
+++ b/tests/auto/dbus/qdbuscontext/tst_qdbuscontext.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusinterface/myobject.h b/tests/auto/dbus/qdbusinterface/myobject.h
index 68f5137a4b..94e7b3d4c5 100644
--- a/tests/auto/dbus/qdbusinterface/myobject.h
+++ b/tests/auto/dbus/qdbusinterface/myobject.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp b/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp
index cfd183c91e..1815a6ef79 100644
--- a/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp
+++ b/tests/auto/dbus/qdbusinterface/qmyserver/qmyserver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp
index dc8363db42..c866c9d155 100644
--- a/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp
+++ b/tests/auto/dbus/qdbusinterface/tst_qdbusinterface.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -46,7 +46,7 @@
#include <QtTest/QtTest>
#include <QtCore/qvariant.h>
#include <QtDBus/QtDBus>
-
+#include <qdebug.h>
#include "../qdbusmarshall/common.h"
#include "myobject.h"
diff --git a/tests/auto/dbus/qdbuslocalcalls/tst_qdbuslocalcalls.cpp b/tests/auto/dbus/qdbuslocalcalls/tst_qdbuslocalcalls.cpp
index 3d33e92f1f..871ae6948d 100644
--- a/tests/auto/dbus/qdbuslocalcalls/tst_qdbuslocalcalls.cpp
+++ b/tests/auto/dbus/qdbuslocalcalls/tst_qdbuslocalcalls.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusmarshall/common.h b/tests/auto/dbus/qdbusmarshall/common.h
index f41cacc953..d49f4eff30 100644
--- a/tests/auto/dbus/qdbusmarshall/common.h
+++ b/tests/auto/dbus/qdbusmarshall/common.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusmarshall/qpong/qpong.cpp b/tests/auto/dbus/qdbusmarshall/qpong/qpong.cpp
index 1d64e45be5..39779c1fd9 100644
--- a/tests/auto/dbus/qdbusmarshall/qpong/qpong.cpp
+++ b/tests/auto/dbus/qdbusmarshall/qpong/qpong.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp b/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp
index b302be85ad..e8f5b255ab 100644
--- a/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp
+++ b/tests/auto/dbus/qdbusmarshall/tst_qdbusmarshall.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusmetaobject/tst_qdbusmetaobject.cpp b/tests/auto/dbus/qdbusmetaobject/tst_qdbusmetaobject.cpp
index 8de6ad1ce5..ed4ed4c6a2 100644
--- a/tests/auto/dbus/qdbusmetaobject/tst_qdbusmetaobject.cpp
+++ b/tests/auto/dbus/qdbusmetaobject/tst_qdbusmetaobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusmetatype/tst_qdbusmetatype.cpp b/tests/auto/dbus/qdbusmetatype/tst_qdbusmetatype.cpp
index 9055fdeaac..9ab05b8ead 100644
--- a/tests/auto/dbus/qdbusmetatype/tst_qdbusmetatype.cpp
+++ b/tests/auto/dbus/qdbusmetatype/tst_qdbusmetatype.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbuspendingcall/tst_qdbuspendingcall.cpp b/tests/auto/dbus/qdbuspendingcall/tst_qdbuspendingcall.cpp
index 447532b427..60a8061ae4 100644
--- a/tests/auto/dbus/qdbuspendingcall/tst_qdbuspendingcall.cpp
+++ b/tests/auto/dbus/qdbuspendingcall/tst_qdbuspendingcall.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbuspendingreply/tst_qdbuspendingreply.cpp b/tests/auto/dbus/qdbuspendingreply/tst_qdbuspendingreply.cpp
index 347c164eda..5836945484 100644
--- a/tests/auto/dbus/qdbuspendingreply/tst_qdbuspendingreply.cpp
+++ b/tests/auto/dbus/qdbuspendingreply/tst_qdbuspendingreply.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusreply/tst_qdbusreply.cpp b/tests/auto/dbus/qdbusreply/tst_qdbusreply.cpp
index ffa7275c6a..b6026f215b 100644
--- a/tests/auto/dbus/qdbusreply/tst_qdbusreply.cpp
+++ b/tests/auto/dbus/qdbusreply/tst_qdbusreply.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusservicewatcher/tst_qdbusservicewatcher.cpp b/tests/auto/dbus/qdbusservicewatcher/tst_qdbusservicewatcher.cpp
index a07d21c4c6..d25b76d80c 100644
--- a/tests/auto/dbus/qdbusservicewatcher/tst_qdbusservicewatcher.cpp
+++ b/tests/auto/dbus/qdbusservicewatcher/tst_qdbusservicewatcher.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusthreading/tst_qdbusthreading.cpp b/tests/auto/dbus/qdbusthreading/tst_qdbusthreading.cpp
index 4f88f223d3..b560a89144 100644
--- a/tests/auto/dbus/qdbusthreading/tst_qdbusthreading.cpp
+++ b/tests/auto/dbus/qdbusthreading/tst_qdbusthreading.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbustype/tst_qdbustype.cpp b/tests/auto/dbus/qdbustype/tst_qdbustype.cpp
index 453ff629b8..9771586827 100644
--- a/tests/auto/dbus/qdbustype/tst_qdbustype.cpp
+++ b/tests/auto/dbus/qdbustype/tst_qdbustype.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the FOO module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/dbus/qdbusxmlparser/tst_qdbusxmlparser.cpp b/tests/auto/dbus/qdbusxmlparser/tst_qdbusxmlparser.cpp
index 42a3fd19cc..7eb31ffb41 100644
--- a/tests/auto/dbus/qdbusxmlparser/tst_qdbusxmlparser.cpp
+++ b/tests/auto/dbus/qdbusxmlparser/tst_qdbusxmlparser.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -61,9 +61,6 @@ private slots:
void parsingWithDoctype_data();
void parsingWithDoctype();
- void objectWithContent_data();
- void objectWithContent();
-
void methods_data();
void methods();
void signals__data();
@@ -77,40 +74,49 @@ void tst_QDBusXmlParser::parsing_data()
QTest::addColumn<QString>("xmlData");
QTest::addColumn<int>("interfaceCount");
QTest::addColumn<int>("objectCount");
+ QTest::addColumn<int>("annotationCount");
- QTest::newRow("null") << QString() << 0 << 0;
- QTest::newRow("empty") << QString("") << 0 << 0;
+ QTest::newRow("null") << QString() << 0 << 0 << 0;
+ QTest::newRow("empty") << QString("") << 0 << 0 << 0;
- QTest::newRow("junk") << "<junk/>" << 0 << 0;
+ QTest::newRow("junk") << "<junk/>" << 0 << 0 << 0;
QTest::newRow("interface-inside-junk") << "<junk><interface name=\"iface.iface1\" /></junk>"
- << 0 << 0;
+ << 0 << 0 << 0;
QTest::newRow("object-inside-junk") << "<junk><node name=\"obj1\" /></junk>"
- << 0 << 0;
+ << 0 << 0 << 0;
- QTest::newRow("zero-interfaces") << "<node/>" << 0 << 0;
- QTest::newRow("one-interface") << "<node><interface name=\"iface.iface1\" /></node>" << 1 << 0;
+ QTest::newRow("zero-interfaces") << "<node/>" << 0 << 0 << 0;
+ QTest::newRow("one-interface") << "<node><interface name=\"iface.iface1\" /></node>" << 1 << 0 << 0;
QTest::newRow("two-interfaces") << "<node><interface name=\"iface.iface1\" />"
- "<interface name=\"iface.iface2\"></node>"
- << 2 << 0;
+ "<interface name=\"iface.iface2\" /></node>"
+ << 2 << 0 << 0;
- QTest::newRow("one-object") << "<node><node name=\"obj1\"/></node>" << 0 << 1;
- QTest::newRow("two-objects") << "<node><node name=\"obj1\"/><node name=\"obj2\"></node>" << 0 << 2;
+ QTest::newRow("one-object") << "<node><node name=\"obj1\"/></node>" << 0 << 1 << 0;
+ QTest::newRow("two-objects") << "<node><node name=\"obj1\"/><node name=\"obj2\"/></node>" << 0 << 2 << 0;
- QTest::newRow("i1o1") << "<node><interface name=\"iface.iface1\"><node name=\"obj1\"></node>" << 1 << 1;
+ QTest::newRow("i1o1") << "<node><interface name=\"iface.iface1\"/><node name=\"obj1\"/></node>" << 1 << 1 << 0;
+ QTest::newRow("one-interface-annotated") << "<node><interface name=\"iface.iface1\">"
+ "<annotation name=\"foo.testing\" value=\"nothing to see here\" />"
+ "</interface></node>" << 1 << 0 << 1;
+ QTest::newRow("one-interface-docnamespace") << "<?xml version=\"1.0\" xmlns:doc=\"foo\" ?><node>"
+ "<interface name=\"iface.iface1\"><doc:something />"
+ "</interface></node>" << 1 << 0 << 0;
}
void tst_QDBusXmlParser::parsing_common(const QString &xmlData)
{
- QDBusIntrospection::ObjectTree obj =
- QDBusIntrospection::parseObjectTree(xmlData, "local.testing", "/");
+ QDBusIntrospection::Object obj =
+ QDBusIntrospection::parseObject(xmlData, "local.testing", "/");
QFETCH(int, interfaceCount);
QFETCH(int, objectCount);
+ QFETCH(int, annotationCount);
QCOMPARE(obj.interfaces.count(), interfaceCount);
QCOMPARE(obj.childObjects.count(), objectCount);
+ QCOMPARE(QDBusIntrospection::parseInterface(xmlData).annotations.count(), annotationCount);
// also verify the naming
int i = 0;
@@ -140,92 +146,14 @@ void tst_QDBusXmlParser::parsingWithDoctype()
"\"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd\">\n";
QFETCH(QString, xmlData);
- parsing_common(docType + xmlData);
-}
-
-void tst_QDBusXmlParser::objectWithContent_data()
-{
- QTest::addColumn<QString>("xmlData");
- QTest::addColumn<QString>("probedObject");
- QTest::addColumn<int>("interfaceCount");
- QTest::addColumn<int>("objectCount");
-
- QTest::newRow("zero") << "<node><node name=\"obj\"/></node>" << "obj" << 0 << 0;
-
- QString xmlData = "<node><node name=\"obj\">"
- "<interface name=\"iface.iface1\" />"
- "</node></node>";
- QTest::newRow("one-interface") << xmlData << "obj" << 1 << 0;
- QTest::newRow("one-interface2") << xmlData << "obj2" << 0 << 0;
-
- xmlData = "<node><node name=\"obj\">"
- "<interface name=\"iface.iface1\" />"
- "<interface name=\"iface.iface2\" />"
- "</node></node>";
- QTest::newRow("two-interfaces") << xmlData << "obj" << 2 << 0;
- QTest::newRow("two-interfaces2") << xmlData << "obj2" << 0 << 0;
-
- xmlData = "<node><node name=\"obj\">"
- "<interface name=\"iface.iface1\" />"
- "<interface name=\"iface.iface2\" />"
- "</node><node name=\"obj2\">"
- "<interface name=\"iface.iface1\" />"
- "</node></node>";
- QTest::newRow("two-nodes-two-interfaces") << xmlData << "obj" << 2 << 0;
- QTest::newRow("two-nodes-one-interface") << xmlData << "obj2" << 1 << 0;
-
- xmlData = "<node><node name=\"obj\">"
- "<node name=\"obj1\" />"
- "</node></node>";
- QTest::newRow("one-object") << xmlData << "obj" << 0 << 1;
- QTest::newRow("one-object2") << xmlData << "obj2" << 0 << 0;
-
- xmlData = "<node><node name=\"obj\">"
- "<node name=\"obj1\" />"
- "<node name=\"obj2\" />"
- "</node></node>";
- QTest::newRow("two-objects") << xmlData << "obj" << 0 << 2;
- QTest::newRow("two-objects2") << xmlData << "obj2" << 0 << 0;
-
- xmlData = "<node><node name=\"obj\">"
- "<node name=\"obj1\" />"
- "<node name=\"obj2\" />"
- "</node><node name=\"obj2\">"
- "<node name=\"obj1\" />"
- "</node></node>";
- QTest::newRow("two-nodes-two-objects") << xmlData << "obj" << 0 << 2;
- QTest::newRow("two-nodes-one-object") << xmlData << "obj2" << 0 << 1;
-}
-
-void tst_QDBusXmlParser::objectWithContent()
-{
- QFETCH(QString, xmlData);
- QFETCH(QString, probedObject);
-
- QDBusIntrospection::ObjectTree tree =
- QDBusIntrospection::parseObjectTree(xmlData, "local.testing", "/");
-
- const ObjectMap &om = tree.childObjectData;
-
- if (om.contains(probedObject)) {
- const QSharedDataPointer<QDBusIntrospection::ObjectTree>& obj = om.value(probedObject);
- QVERIFY(obj != 0);
-
- QFETCH(int, interfaceCount);
- QFETCH(int, objectCount);
-
- QCOMPARE(obj->interfaces.count(), interfaceCount);
- QCOMPARE(obj->childObjects.count(), objectCount);
-
- // verify the object names
- int i = 0;
- foreach (QString name, obj->interfaces)
- QCOMPARE(name, QString("iface.iface%1").arg(++i));
-
- i = 0;
- foreach (QString name, obj->childObjects)
- QCOMPARE(name, QString("obj%1").arg(++i));
+ QString toParse;
+ if (xmlData.startsWith(QLatin1String("<?xml"))) {
+ int split = xmlData.indexOf(QLatin1Char('>')) + 1;
+ toParse = xmlData.left(split) + docType + xmlData.mid(split);
+ } else {
+ toParse = docType + xmlData;
}
+ parsing_common(toParse);
}
void tst_QDBusXmlParser::methods_data()
@@ -261,7 +189,7 @@ void tst_QDBusXmlParser::methods_data()
QTest::newRow("method-with-annotation") <<
"<method name=\"Foo\"/>"
"<method name=\"Bar\"/>"
- "<method name=\"Baz\"><annotation name=\"foo.testing\" value=\"nothing to see here\"></method>"
+ "<method name=\"Baz\"><annotation name=\"foo.testing\" value=\"nothing to see here\" /></method>"
<< map;
// arguments
@@ -428,7 +356,7 @@ void tst_QDBusXmlParser::signals__data()
QTest::newRow("signal-with-annotation") <<
"<signal name=\"Foo\"/>"
"<signal name=\"Bar\"/>"
- "<signal name=\"Baz\"><annotation name=\"foo.testing\" value=\"nothing to see here\"></signal>"
+ "<signal name=\"Baz\"><annotation name=\"foo.testing\" value=\"nothing to see here\" /></signal>"
<< map;
// one out argument
@@ -563,6 +491,7 @@ void tst_QDBusXmlParser::properties_data()
"<property name=\"baz\" type=\"as\" access=\"write\">"
"<annotation name=\"foo.annotation\" value=\"Hello, World\" />"
"<annotation name=\"foo.annotation2\" value=\"Goodbye, World\" />"
+ "</property>"
"<property name=\"foo\" type=\"s\" access=\"readwrite\"/>" << map;
// and now change the order
@@ -570,6 +499,7 @@ void tst_QDBusXmlParser::properties_data()
"<property name=\"baz\" type=\"as\" access=\"write\">"
"<annotation name=\"foo.annotation2\" value=\"Goodbye, World\" />"
"<annotation name=\"foo.annotation\" value=\"Hello, World\" />"
+ "</property>"
"<property name=\"bar\" type=\"i\" access=\"read\"/>"
"<property name=\"foo\" type=\"s\" access=\"readwrite\"/>" << map;
}
diff --git a/tests/auto/gui/image/qicoimageformat/qicoimageformat.pro b/tests/auto/gui/image/qicoimageformat/qicoimageformat.pro
index 0ad195f629..fc25d7567a 100644
--- a/tests/auto/gui/image/qicoimageformat/qicoimageformat.pro
+++ b/tests/auto/gui/image/qicoimageformat/qicoimageformat.pro
@@ -4,16 +4,12 @@ SOURCES+= tst_qicoimageformat.cpp
QT += testlib
wince*: {
- DEFINES += SRCDIR=\\\".\\\"
- addFiles.files = icons
- addFiles.path = .
CONFIG(debug, debug|release):{
addPlugins.files = $$QT_BUILD_TREE/plugins/imageformats/qico4d.dll
} else {
addPlugins.files = $$QT_BUILD_TREE/plugins/imageformats/qico4.dll
}
addPlugins.path = imageformats
- DEPLOYMENT += addFiles addPlugins
-} else {
- DEFINES += SRCDIR=\\\"$$PWD\\\"
+ DEPLOYMENT += addPlugins
}
+TESTDATA += icons/*
diff --git a/tests/auto/gui/image/qicoimageformat/tst_qicoimageformat.cpp b/tests/auto/gui/image/qicoimageformat/tst_qicoimageformat.cpp
index 40cd9b848a..25c6c81b2a 100644
--- a/tests/auto/gui/image/qicoimageformat/tst_qicoimageformat.cpp
+++ b/tests/auto/gui/image/qicoimageformat/tst_qicoimageformat.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -80,8 +80,6 @@ private:
tst_QIcoImageFormat::tst_QIcoImageFormat()
{
- m_IconPath = QLatin1String(SRCDIR) + "/icons";
- qDebug() << m_IconPath;
}
tst_QIcoImageFormat::~tst_QIcoImageFormat()
@@ -101,7 +99,9 @@ void tst_QIcoImageFormat::cleanup()
void tst_QIcoImageFormat::initTestCase()
{
-
+ m_IconPath = QFINDTESTDATA("icons");
+ if (m_IconPath.isEmpty())
+ QFAIL("Cannot find icons directory containing testdata!");
}
void tst_QIcoImageFormat::cleanupTestCase()
diff --git a/tests/auto/gui/image/qicon/qicon.pro b/tests/auto/gui/image/qicon/qicon.pro
index 34fc5b7716..c44c080ced 100644
--- a/tests/auto/gui/image/qicon/qicon.pro
+++ b/tests/auto/gui/image/qicon/qicon.pro
@@ -7,15 +7,6 @@ RESOURCES = tst_qicon.qrc
wince* {
QT += xml svg
- addFiles.files += $$_PRO_FILE_PWD_/*.png
- addFiles.files += $$_PRO_FILE_PWD_/*.svg
- addFiles.files += $$_PRO_FILE_PWD_/*.svgz
- addFiles.files += $$_PRO_FILE_PWD_/tst_qicon.cpp
- addFiles.path = .
- DEPLOYMENT += addFiles
-
DEPLOYMENT_PLUGIN += qsvg
- DEFINES += SRCDIR=\\\".\\\"
-} else {
- DEFINES += SRCDIR=\\\"$$PWD\\\"
}
+TESTDATA += icons/* *.png *.svg *.svgz
diff --git a/tests/auto/gui/image/qicon/tst_qicon.cpp b/tests/auto/gui/image/qicon/tst_qicon.cpp
index 55b0c81529..7d455f1010 100644
--- a/tests/auto/gui/image/qicon/tst_qicon.cpp
+++ b/tests/auto/gui/image/qicon/tst_qicon.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,9 +54,6 @@ public:
tst_QIcon();
private slots:
- void init();
- void cleanup();
-
void actualSize_data(); // test with 1 pixmap
void actualSize();
void actualSize2_data(); // test with 2 pixmaps with different aspect ratio
@@ -77,13 +74,10 @@ private slots:
void task184901_badCache();
void task223279_inconsistentAddFile();
- void task239461_custom_iconengine_crash();
private:
bool haveImageFormat(QByteArray const&);
- QString oldCurrentDir;
-
const static QIcon staticIcon;
};
@@ -91,22 +85,6 @@ private:
// But we do not officially support this. See QTBUG-8666
const QIcon tst_QIcon::staticIcon = QIcon::fromTheme("edit-find");
-void tst_QIcon::init()
-{
- QString srcdir(QLatin1String(SRCDIR));
- if (!srcdir.isEmpty()) {
- oldCurrentDir = QDir::current().absolutePath();
- QDir::setCurrent(srcdir);
- }
-}
-
-void tst_QIcon::cleanup()
-{
- if (!oldCurrentDir.isEmpty()) {
- QDir::setCurrent(oldCurrentDir);
- }
-}
-
bool tst_QIcon::haveImageFormat(QByteArray const& desiredFormat)
{
return QImageReader::supportedImageFormats().contains(desiredFormat);
@@ -136,7 +114,7 @@ void tst_QIcon::actualSize_data()
QTest::newRow("resource9") << ":/rect.png" << QSize( 15, 50) << QSize( 15, 30);
QTest::newRow("resource10") << ":/rect.png" << QSize( 25, 50) << QSize( 20, 40);
- const QString prefix = QLatin1String(SRCDIR) + QLatin1String("/");
+ const QString prefix = QFileInfo(QFINDTESTDATA("icons")).absolutePath() + "/";
QTest::newRow("external0") << prefix + "image.png" << QSize(128, 128) << QSize(128, 128);
QTest::newRow("external1") << prefix + "image.png" << QSize( 64, 64) << QSize( 64, 64);
QTest::newRow("external2") << prefix + "image.png" << QSize( 32, 64) << QSize( 32, 32);
@@ -191,7 +169,7 @@ void tst_QIcon::actualSize2_data()
void tst_QIcon::actualSize2()
{
QIcon icon;
- const QString prefix = QLatin1String(SRCDIR) + QLatin1String("/");
+ const QString prefix = QFileInfo(QFINDTESTDATA("icons")).absolutePath() + "/";
icon.addPixmap(QPixmap(prefix + "image.png"));
icon.addPixmap(QPixmap(prefix + "rect.png"));
@@ -209,7 +187,7 @@ void tst_QIcon::svgActualSize()
QSKIP("SVG support is not available");
}
- const QString prefix = QLatin1String(SRCDIR) + QLatin1String("/");
+ const QString prefix = QFileInfo(QFINDTESTDATA("icons")).absolutePath() + "/";
QIcon icon(prefix + "rect.svg");
QCOMPARE(icon.actualSize(QSize(16, 16)), QSize(16, 2));
QCOMPARE(icon.pixmap(QSize(16, 16)).size(), QSize(16, 2));
@@ -252,7 +230,7 @@ void tst_QIcon::isNull() {
QVERIFY(!iconNoFileSuffix.isNull());
QVERIFY(!iconNoFileSuffix.actualSize(QSize(32, 32)).isValid());
- const QString prefix = QLatin1String(SRCDIR) + QLatin1String("/");
+ const QString prefix = QFileInfo(QFINDTESTDATA("icons")).absolutePath() + "/";
// test string constructor with existing file but unsupported format
QIcon iconUnsupportedFormat = QIcon(prefix + "tst_qicon.cpp");
QVERIFY(!iconUnsupportedFormat.isNull());
@@ -406,7 +384,7 @@ void tst_QIcon::detach()
img.fill(0xffff0000);
QIcon icon1(QPixmap::fromImage(img));
QIcon icon2 = icon1;
- icon2.addFile("image.png", QSize(64, 64));
+ icon2.addFile(QFINDTESTDATA("image.png"), QSize(64, 64));
QImage img1 = icon1.pixmap(64, 64).toImage();
QImage img2 = icon2.pixmap(64, 64).toImage();
@@ -648,7 +626,7 @@ static inline bool operator<(const QSize &lhs, const QSize &rhs)
void tst_QIcon::task184901_badCache()
{
- QPixmap pm("image.png");
+ QPixmap pm(QFINDTESTDATA("image.png"));
QIcon icon(pm);
//the disabled icon must have an effect (grayed)
@@ -743,32 +721,5 @@ void tst_QIcon::task223279_inconsistentAddFile()
}
-// During detach, v2 engines are cloned, while v1 engines are only
-// passed on, so v1 engines need to be referenced counted. This test
-// verifies that the engine is destroyed once and only once.
-
-class IconEngine : public QIconEngine
-{
-public:
- ~IconEngine() { destructorCalled++; }
- virtual void paint(QPainter *, const QRect &, QIcon::Mode, QIcon::State) { }
- static int destructorCalled;
-};
-int IconEngine::destructorCalled = 0;
-
-void tst_QIcon::task239461_custom_iconengine_crash()
-{
- QIconEngine *engine = new IconEngine();
- {
- QIcon icon(engine);
- QIcon icon2 = icon;
-
- QPixmap pixmap(32, 32);
- icon.addPixmap(pixmap);
- }
- QCOMPARE(IconEngine::destructorCalled, 1);
-}
-
-
QTEST_MAIN(tst_QIcon)
#include "tst_qicon.moc"
diff --git a/tests/auto/gui/image/qimage/images/image.tif b/tests/auto/gui/image/qimage/images/image.tif
deleted file mode 100644
index ee0637cf25..0000000000
--- a/tests/auto/gui/image/qimage/images/image.tif
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimage/qimage.pro b/tests/auto/gui/image/qimage/qimage.pro
index afa279f340..d9252f036f 100644
--- a/tests/auto/gui/image/qimage/qimage.pro
+++ b/tests/auto/gui/image/qimage/qimage.pro
@@ -4,11 +4,4 @@ SOURCES += tst_qimage.cpp
QT += core-private gui-private testlib
-wince*: {
- addImages.files = images/*
- addImages.path = images
- DEPLOYMENT += addImages
- DEFINES += SRCDIR=\\\".\\\"
-} else {
- DEFINES += SRCDIR=\\\"$$PWD\\\"
-}
+TESTDATA += images/*
diff --git a/tests/auto/gui/image/qimage/tst_qimage.cpp b/tests/auto/gui/image/qimage/tst_qimage.cpp
index 479acea3fd..cda887d8e1 100644
--- a/tests/auto/gui/image/qimage/tst_qimage.cpp
+++ b/tests/auto/gui/image/qimage/tst_qimage.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -144,6 +144,8 @@ private slots:
void deepCopyWhenPaintingActive();
void scaled_QTBUG19157();
+
+ void cleanupFunctions();
};
tst_QImage::tst_QImage()
@@ -261,7 +263,10 @@ void tst_QImage::formatHandlersInput_data()
{
QTest::addColumn<QString>("testFormat");
QTest::addColumn<QString>("testFile");
- const QString prefix = QLatin1String(SRCDIR) + "/images/";
+
+ const QString prefix = QFINDTESTDATA("images/");
+ if (prefix.isEmpty())
+ QFAIL("can not find images directory!");
// add a new line here when a file is added
QTest::newRow("ICO") << "ICO" << prefix + "image.ico";
@@ -274,9 +279,6 @@ void tst_QImage::formatHandlersInput_data()
QTest::newRow("PPM") << "PPM" << prefix + "image.ppm";
QTest::newRow("XBM") << "XBM" << prefix + "image.xbm";
QTest::newRow("XPM") << "XPM" << prefix + "image.xpm";
-#if defined QTEST_HAVE_TIFF
- QTest::newRow("TIFF") << "TIFF" << prefix + "image.tif";
-#endif
}
void tst_QImage::formatHandlersInput()
@@ -1997,5 +1999,40 @@ void tst_QImage::scaled_QTBUG19157()
QVERIFY(!foo.isNull());
}
+static void cleanupFunction(void* info)
+{
+ bool *called = static_cast<bool*>(info);
+ *called = true;
+}
+
+void tst_QImage::cleanupFunctions()
+{
+ QImage bufferImage(64, 64, QImage::Format_ARGB32);
+ bufferImage.fill(0);
+
+ bool called;
+
+ {
+ called = false;
+ {
+ QImage image(bufferImage.bits(), bufferImage.width(), bufferImage.height(), bufferImage.format(), cleanupFunction, &called);
+ }
+ QVERIFY(called);
+ }
+
+ {
+ called = false;
+ QImage *copy = 0;
+ {
+ QImage image(bufferImage.bits(), bufferImage.width(), bufferImage.height(), bufferImage.format(), cleanupFunction, &called);
+ copy = new QImage(image);
+ }
+ QVERIFY(!called);
+ delete copy;
+ QVERIFY(called);
+ }
+
+}
+
QTEST_MAIN(tst_QImage)
#include "tst_qimage.moc"
diff --git a/tests/auto/gui/image/qimageiohandler/tst_qimageiohandler.cpp b/tests/auto/gui/image/qimageiohandler/tst_qimageiohandler.cpp
index acf4e4f4ea..b17ca9c622 100644
--- a/tests/auto/gui/image/qimageiohandler/tst_qimageiohandler.cpp
+++ b/tests/auto/gui/image/qimageiohandler/tst_qimageiohandler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/image/qimagereader/images/ball.mng b/tests/auto/gui/image/qimagereader/images/ball.mng
deleted file mode 100644
index 81544780fd..0000000000
--- a/tests/auto/gui/image/qimagereader/images/ball.mng
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/corrupt-data.tif b/tests/auto/gui/image/qimagereader/images/corrupt-data.tif
deleted file mode 100644
index d63c688b27..0000000000
--- a/tests/auto/gui/image/qimagereader/images/corrupt-data.tif
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/corrupt.mng b/tests/auto/gui/image/qimagereader/images/corrupt.mng
deleted file mode 100644
index 17fd43a5ca..0000000000
--- a/tests/auto/gui/image/qimagereader/images/corrupt.mng
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/fire.mng b/tests/auto/gui/image/qimagereader/images/fire.mng
deleted file mode 100644
index c6695c8369..0000000000
--- a/tests/auto/gui/image/qimagereader/images/fire.mng
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/grayscale-ref.tif b/tests/auto/gui/image/qimagereader/images/grayscale-ref.tif
deleted file mode 100644
index 960531ea86..0000000000
--- a/tests/auto/gui/image/qimagereader/images/grayscale-ref.tif
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/grayscale.tif b/tests/auto/gui/image/qimagereader/images/grayscale.tif
deleted file mode 100644
index 5f4e11429d..0000000000
--- a/tests/auto/gui/image/qimagereader/images/grayscale.tif
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/image_100dpi.tif b/tests/auto/gui/image/qimagereader/images/image_100dpi.tif
deleted file mode 100644
index fcf3cd89aa..0000000000
--- a/tests/auto/gui/image/qimagereader/images/image_100dpi.tif
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/rgba_adobedeflate_littleendian.tif b/tests/auto/gui/image/qimagereader/images/rgba_adobedeflate_littleendian.tif
deleted file mode 100644
index 78868b0d48..0000000000
--- a/tests/auto/gui/image/qimagereader/images/rgba_adobedeflate_littleendian.tif
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/rgba_lzw_littleendian.tif b/tests/auto/gui/image/qimagereader/images/rgba_lzw_littleendian.tif
deleted file mode 100644
index 107eab74e7..0000000000
--- a/tests/auto/gui/image/qimagereader/images/rgba_lzw_littleendian.tif
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/rgba_nocompression_bigendian.tif b/tests/auto/gui/image/qimagereader/images/rgba_nocompression_bigendian.tif
deleted file mode 100644
index c314bae4c0..0000000000
--- a/tests/auto/gui/image/qimagereader/images/rgba_nocompression_bigendian.tif
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/rgba_nocompression_littleendian.tif b/tests/auto/gui/image/qimagereader/images/rgba_nocompression_littleendian.tif
deleted file mode 100644
index 4f820f6649..0000000000
--- a/tests/auto/gui/image/qimagereader/images/rgba_nocompression_littleendian.tif
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/rgba_packbits_littleendian.tif b/tests/auto/gui/image/qimagereader/images/rgba_packbits_littleendian.tif
deleted file mode 100644
index ddeec38fbc..0000000000
--- a/tests/auto/gui/image/qimagereader/images/rgba_packbits_littleendian.tif
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/rgba_zipdeflate_littleendian.tif b/tests/auto/gui/image/qimagereader/images/rgba_zipdeflate_littleendian.tif
deleted file mode 100644
index 50a3024246..0000000000
--- a/tests/auto/gui/image/qimagereader/images/rgba_zipdeflate_littleendian.tif
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_1.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_1.tiff
deleted file mode 100644
index 3fcb8a9aca..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_1.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_2.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_2.tiff
deleted file mode 100644
index 6f3e9d5297..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_2.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_3.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_3.tiff
deleted file mode 100644
index aab9cf2596..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_3.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_4.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_4.tiff
deleted file mode 100644
index aad96ffc6c..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_4.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_5.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_5.tiff
deleted file mode 100644
index 05d23dcb86..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_5.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_6.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_6.tiff
deleted file mode 100644
index 9ffe7fcaa4..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_6.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_7.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_7.tiff
deleted file mode 100644
index eeeb01937e..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_7.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_8.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_8.tiff
deleted file mode 100644
index 87cf2fd774..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/indexed_orientation_8.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_1.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_1.tiff
deleted file mode 100644
index 3b589b2232..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_1.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_2.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_2.tiff
deleted file mode 100644
index 9a662239db..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_2.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_3.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_3.tiff
deleted file mode 100644
index eed242388c..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_3.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_4.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_4.tiff
deleted file mode 100644
index 055480e0ca..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_4.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_5.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_5.tiff
deleted file mode 100644
index b4d0974ec8..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_5.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_6.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_6.tiff
deleted file mode 100644
index 3b1e02af56..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_6.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_7.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_7.tiff
deleted file mode 100644
index b752c745c3..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_7.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_8.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_8.tiff
deleted file mode 100644
index e228d05659..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/mono_orientation_8.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/original_indexed.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/original_indexed.tiff
deleted file mode 100644
index 7507e526a5..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/original_indexed.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/original_mono.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/original_mono.tiff
deleted file mode 100644
index 8ff9db80f5..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/original_mono.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/original_rgb.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/original_rgb.tiff
deleted file mode 100644
index 321ea3ebf5..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/original_rgb.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_1.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_1.tiff
deleted file mode 100644
index 2756a82fbb..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_1.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_2.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_2.tiff
deleted file mode 100644
index ae9af0999d..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_2.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_3.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_3.tiff
deleted file mode 100644
index a2f432526b..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_3.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_4.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_4.tiff
deleted file mode 100644
index f35bfc4c9c..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_4.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_5.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_5.tiff
deleted file mode 100644
index 70e5478065..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_5.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_6.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_6.tiff
deleted file mode 100644
index b2635fe14f..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_6.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_7.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_7.tiff
deleted file mode 100644
index 1fb0cd9df6..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_7.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_8.tiff b/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_8.tiff
deleted file mode 100644
index 666b1b4c55..0000000000
--- a/tests/auto/gui/image/qimagereader/images/tiff_oriented/rgb_orientation_8.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagereader/qimagereader.qrc b/tests/auto/gui/image/qimagereader/qimagereader.qrc
index 2c70652389..3ff41d393b 100644
--- a/tests/auto/gui/image/qimagereader/qimagereader.qrc
+++ b/tests/auto/gui/image/qimagereader/qimagereader.qrc
@@ -6,7 +6,6 @@
<file>images/YCbCr_cmyk.png</file>
<file>images/YCbCr_rgb.jpg</file>
<file>images/away.png</file>
- <file>images/ball.mng</file>
<file>images/bat1.gif</file>
<file>images/bat2.gif</file>
<file>images/beavis.jpg</file>
@@ -18,19 +17,16 @@
<file>images/corrupt.bmp</file>
<file>images/corrupt.gif</file>
<file>images/corrupt.jpg</file>
- <file>images/corrupt.mng</file>
<file>images/corrupt.png</file>
<file>images/corrupt.xbm</file>
<file>images/crash-signed-char.bmp</file>
<file>images/earth.gif</file>
- <file>images/fire.mng</file>
<file>images/font.bmp</file>
<file>images/gnus.xbm</file>
<file>images/image.pbm</file>
<file>images/image.pgm</file>
<file>images/image.png</file>
<file>images/image.ppm</file>
- <file>images/image_100dpi.tif</file>
<file>images/kollada.png</file>
<file>images/marble.xpm</file>
<file>images/namedcolors.xpm</file>
diff --git a/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp b/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp
index 7504ab3466..8a18bee83f 100644
--- a/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp
+++ b/tests/auto/gui/image/qimagereader/tst_qimagereader.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -121,12 +121,6 @@ private slots:
void readFromResources_data();
void readFromResources();
- void dotsPerMeter_data();
- void dotsPerMeter();
-
- void physicalDpi_data();
- void physicalDpi();
-
void sizeBeforeRead_data();
void sizeBeforeRead();
@@ -148,15 +142,6 @@ private slots:
void supportsOption_data();
void supportsOption();
- void tiffCompression_data();
- void tiffCompression();
- void tiffEndianness();
-
- void tiffOrientation_data();
- void tiffOrientation();
-
- void tiffGrayscale();
-
void autoDetectImageFormat();
void fileNameProbing();
@@ -256,9 +241,6 @@ void tst_QImageReader::readImage_data()
QTest::newRow("GIF: earth") << QString("earth.gif") << true << QByteArray("gif");
QTest::newRow("GIF: trolltech") << QString("trolltech.gif") << true << QByteArray("gif");
- QTest::newRow("MNG: ball") << QString("ball.mng") << true << QByteArray("mng");
- QTest::newRow("MNG: fire") << QString("fire.mng") << true << QByteArray("mng");
-
QTest::newRow("SVG: rect") << QString("rect.svg") << true << QByteArray("svg");
QTest::newRow("SVGZ: rect") << QString("rect.svgz") << true << QByteArray("svgz");
}
@@ -374,9 +356,6 @@ void tst_QImageReader::setScaledSize_data()
QTest::newRow("GIF: earth") << "earth" << QSize(200, 200) << QByteArray("gif");
QTest::newRow("GIF: trolltech") << "trolltech" << QSize(200, 200) << QByteArray("gif");
- QTest::newRow("MNG: ball") << "ball" << QSize(200, 200) << QByteArray("mng");
- QTest::newRow("MNG: fire") << "fire" << QSize(200, 200) << QByteArray("mng");
-
QTest::newRow("SVG: rect") << "rect" << QSize(200, 200) << QByteArray("svg");
QTest::newRow("SVGZ: rect") << "rect" << QSize(200, 200) << QByteArray("svgz");
}
@@ -441,9 +420,6 @@ void tst_QImageReader::setClipRect_data()
QTest::newRow("GIF: earth") << "earth" << QRect(0, 0, 50, 50) << QByteArray("gif");
QTest::newRow("GIF: trolltech") << "trolltech" << QRect(0, 0, 50, 50) << QByteArray("gif");
- QTest::newRow("MNG: ball") << "ball" << QRect(0, 0, 50, 50) << QByteArray("mng");
- QTest::newRow("MNG: fire") << "fire" << QRect(0, 0, 50, 50) << QByteArray("mng");
-
QTest::newRow("SVG: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svg");
QTest::newRow("SVGZ: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svgz");
}
@@ -489,9 +465,6 @@ void tst_QImageReader::setScaledClipRect_data()
QTest::newRow("GIF: earth") << "earth" << QRect(0, 0, 50, 50) << QByteArray("gif");
QTest::newRow("GIF: trolltech") << "trolltech" << QRect(0, 0, 50, 50) << QByteArray("gif");
- QTest::newRow("MNG: ball") << "ball" << QRect(0, 0, 50, 50) << QByteArray("mng");
- QTest::newRow("MNG: fire") << "fire" << QRect(0, 0, 50, 50) << QByteArray("mng");
-
QTest::newRow("SVG: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svg");
QTest::newRow("SVGZ: rect") << "rect" << QRect(0, 0, 50, 50) << QByteArray("svgz");
}
@@ -545,8 +518,6 @@ void tst_QImageReader::imageFormat_data()
QTest::newRow("bmp-4") << QString("test32v5.bmp") << QByteArray("bmp") << QImage::Format_RGB32;
QTest::newRow("png") << QString("kollada.png") << QByteArray("png") << QImage::Format_ARGB32;
QTest::newRow("png-2") << QString("YCbCr_cmyk.png") << QByteArray("png") << QImage::Format_RGB32;
- QTest::newRow("mng-1") << QString("ball.mng") << QByteArray("mng") << QImage::Format_Invalid;
- QTest::newRow("mng-2") << QString("fire.mng") << QByteArray("mng") << QImage::Format_Invalid;
QTest::newRow("svg") << QString("rect.svg") << QByteArray("svg") << QImage::Format_ARGB32_Premultiplied;
QTest::newRow("svgz") << QString("rect.svgz") << QByteArray("svgz") << QImage::Format_ARGB32_Premultiplied;
}
@@ -625,9 +596,6 @@ void tst_QImageReader::setBackgroundColor_data()
QTest::newRow("GIF: earth") << QString("earth.gif") << QColor(Qt::cyan);
QTest::newRow("GIF: trolltech") << QString("trolltech.gif") << QColor(Qt::magenta);
- QTest::newRow("MNG: ball") << QString("ball.mng") << QColor(Qt::yellow);
- QTest::newRow("MNG: fire") << QString("fire.mng") << QColor(Qt::gray);
-
QTest::newRow("SVG: rect") << QString("rect.svg") << QColor(Qt::darkGreen);
QTest::newRow("SVGZ: rect") << QString("rect.svgz") << QColor(Qt::darkGreen);
}
@@ -664,9 +632,6 @@ void tst_QImageReader::supportsAnimation_data()
QTest::newRow("GIF: earth") << QString("earth.gif") << true;
QTest::newRow("GIF: trolltech") << QString("trolltech.gif") << true;
- QTest::newRow("MNG: ball") << QString("ball.mng") << true;
- QTest::newRow("MNG: fire") << QString("fire.mng") << true;
-
QTest::newRow("SVG: rect") << QString("rect.svg") << false;
QTest::newRow("SVGZ: rect") << QString("rect.svgz") << false;
}
@@ -693,10 +658,6 @@ void tst_QImageReader::sizeBeforeRead()
QImageReader reader(prefix + fileName);
QVERIFY(reader.canRead());
- if (format == "mng") {
- QCOMPARE(reader.size(), QSize());
- return;
- }
QSize size = reader.size();
QVERIFY(reader.canRead());
@@ -1043,9 +1004,6 @@ void tst_QImageReader::readFromDevice_data()
QTest::newRow("bmp-4") << QString("test32v5.bmp") << QByteArray("bmp");
QTest::newRow("png") << QString("kollada.png") << QByteArray("png");
- QTest::newRow("mng-1") << QString("ball.mng") << QByteArray("mng");
- QTest::newRow("mng-2") << QString("fire.mng") << QByteArray("mng");
-
QTest::newRow("svg") << QString("rect.svg") << QByteArray("svg");
QTest::newRow("svgz") << QString("rect.svgz") << QByteArray("svgz");
#if defined QTEST_HAVE_TGA
@@ -1165,7 +1123,7 @@ void tst_QImageReader::readFromFileAfterJunk()
if (format == "ppm" || format == "pbm" || format == "pgm" || format == "svg" || format == "svgz")
iterations = 1;
- if (format == "mng" || !QImageWriter::supportedImageFormats().contains(format)) {
+ if (!QImageWriter::supportedImageFormats().contains(format)) {
for (int i = 0; i < iterations; ++i) {
junkFile.write("deadbeef", 9);
QCOMPARE(junkFile.write(imageData), qint64(imageData.size()));
@@ -1321,15 +1279,6 @@ void tst_QImageReader::readFromResources_data()
QTest::newRow("qtbug13653-no_eoi.jpg") << QString("qtbug13653-no_eoi.jpg")
<< QByteArray("jpg") << QSize(240, 180)
<< QString("");
- QTest::newRow("corrupt.mng") << QString("corrupt.mng")
- << QByteArray("mng") << QSize(0, 0)
- << QString("MNG error 901: Application signalled I/O error; chunk IHDR; subcode 0:0");
- QTest::newRow("fire.mng") << QString("fire.mng")
- << QByteArray("mng") << QSize(30, 60)
- << QString("");
- QTest::newRow("ball.mng") << QString("ball.mng")
- << QByteArray("mng") << QSize(32, 32)
- << QString("");
QTest::newRow("rect.svg") << QString("rect.svg")
<< QByteArray("svg") << QSize(105, 137)
<< QString("");
@@ -1497,9 +1446,6 @@ void tst_QImageReader::readCorruptImage_data()
<< QString("JPEG datastream contains no image")
<< QByteArray("jpeg");
QTest::newRow("corrupt gif") << QString("corrupt.gif") << true << QString("") << QByteArray("gif");
- QTest::newRow("corrupt mng") << QString("corrupt.mng") << true
- << QString("MNG error 901: Application signalled I/O error; chunk IHDR; subcode 0:0")
- << QByteArray("mng");
QTest::newRow("corrupt png") << QString("corrupt.png") << true << QString("") << QByteArray("png");
QTest::newRow("corrupt bmp") << QString("corrupt.bmp") << true << QString("") << QByteArray("bmp");
QTest::newRow("corrupt xpm (colors)") << QString("corrupt-colors.xpm") << true
@@ -1509,7 +1455,6 @@ void tst_QImageReader::readCorruptImage_data()
<< QString("QImage: XPM pixels missing on image line 3")
<< QByteArray("xpm");
QTest::newRow("corrupt xbm") << QString("corrupt.xbm") << false << QString("") << QByteArray("xbm");
- QTest::newRow("corrupt tiff") << QString("corrupt-data.tif") << true << QString("") << QByteArray("tiff");
QTest::newRow("corrupt svg") << QString("corrupt.svg") << true << QString("") << QByteArray("svg");
QTest::newRow("corrupt svgz") << QString("corrupt.svgz") << true << QString("") << QByteArray("svgz");
}
@@ -1578,148 +1523,6 @@ void tst_QImageReader::supportsOption()
QVERIFY(!reader.supportsOption(option));
}
-void tst_QImageReader::tiffCompression_data()
-{
- QTest::addColumn<QString>("uncompressedFile");
- QTest::addColumn<QString>("compressedFile");
-
- QTest::newRow("TIFF: adobedeflate") << "rgba_nocompression_littleendian.tif"
- << "rgba_adobedeflate_littleendian.tif";
- QTest::newRow("TIFF: lzw") << "rgba_nocompression_littleendian.tif"
- << "rgba_lzw_littleendian.tif";
- QTest::newRow("TIFF: packbits") << "rgba_nocompression_littleendian.tif"
- << "rgba_packbits_littleendian.tif";
- QTest::newRow("TIFF: zipdeflate") << "rgba_nocompression_littleendian.tif"
- << "rgba_zipdeflate_littleendian.tif";
-}
-
-void tst_QImageReader::tiffCompression()
-{
- QFETCH(QString, uncompressedFile);
- QFETCH(QString, compressedFile);
-
- SKIP_IF_UNSUPPORTED("tiff");
-
- QImage uncompressedImage(prefix + uncompressedFile);
- QImage compressedImage(prefix + compressedFile);
-
- QCOMPARE(uncompressedImage, compressedImage);
-}
-
-void tst_QImageReader::tiffEndianness()
-{
- SKIP_IF_UNSUPPORTED("tiff");
-
- QImage littleEndian(prefix + "rgba_nocompression_littleendian.tif");
- QImage bigEndian(prefix + "rgba_nocompression_bigendian.tif");
-
- QCOMPARE(littleEndian, bigEndian);
-}
-
-void tst_QImageReader::tiffOrientation_data()
-{
- QTest::addColumn<QString>("expected");
- QTest::addColumn<QString>("oriented");
- QTest::newRow("Indexed TIFF, orientation1") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_1.tiff";
- QTest::newRow("Indexed TIFF, orientation2") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_2.tiff";
- QTest::newRow("Indexed TIFF, orientation3") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_3.tiff";
- QTest::newRow("Indexed TIFF, orientation4") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_4.tiff";
- QTest::newRow("Indexed TIFF, orientation5") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_5.tiff";
- QTest::newRow("Indexed TIFF, orientation6") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_6.tiff";
- QTest::newRow("Indexed TIFF, orientation7") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_7.tiff";
- QTest::newRow("Indexed TIFF, orientation8") << "tiff_oriented/original_indexed.tiff" << "tiff_oriented/indexed_orientation_8.tiff";
-
- QTest::newRow("Mono TIFF, orientation1") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_1.tiff";
- QTest::newRow("Mono TIFF, orientation2") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_2.tiff";
- QTest::newRow("Mono TIFF, orientation3") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_3.tiff";
- QTest::newRow("Mono TIFF, orientation4") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_4.tiff";
- QTest::newRow("Mono TIFF, orientation5") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_5.tiff";
- QTest::newRow("Mono TIFF, orientation6") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_6.tiff";
- QTest::newRow("Mono TIFF, orientation7") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_7.tiff";
- QTest::newRow("Mono TIFF, orientation8") << "tiff_oriented/original_mono.tiff" << "tiff_oriented/mono_orientation_8.tiff";
-
- QTest::newRow("RGB TIFF, orientation1") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_1.tiff";
- QTest::newRow("RGB TIFF, orientation2") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_2.tiff";
- QTest::newRow("RGB TIFF, orientation3") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_3.tiff";
- QTest::newRow("RGB TIFF, orientation4") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_4.tiff";
- QTest::newRow("RGB TIFF, orientation5") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_5.tiff";
- QTest::newRow("RGB TIFF, orientation6") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_6.tiff";
- QTest::newRow("RGB TIFF, orientation7") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_7.tiff";
- QTest::newRow("RGB TIFF, orientation8") << "tiff_oriented/original_rgb.tiff" << "tiff_oriented/rgb_orientation_8.tiff";
-}
-
-void tst_QImageReader::tiffOrientation()
-{
- QFETCH(QString, expected);
- QFETCH(QString, oriented);
-
- SKIP_IF_UNSUPPORTED("tiff");
-
- QImage expectedImage(prefix + expected);
- QImage orientedImage(prefix + oriented);
- QCOMPARE(expectedImage, orientedImage);
-}
-
-void tst_QImageReader::tiffGrayscale()
-{
- SKIP_IF_UNSUPPORTED("tiff");
-
- QImage actualImage(prefix + "grayscale.tif");
- QImage expectedImage(prefix + "grayscale-ref.tif");
-
- QCOMPARE(expectedImage, actualImage.convertToFormat(expectedImage.format()));
-}
-
-void tst_QImageReader::dotsPerMeter_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<int>("expectedDotsPerMeterX");
- QTest::addColumn<int>("expectedDotsPerMeterY");
- QTest::addColumn<QByteArray>("format");
- QTest::newRow("TIFF: 72 dpi") << ("rgba_nocompression_littleendian.tif") << qRound(72 * (100 / 2.54)) << qRound(72 * (100 / 2.54)) << QByteArray("tiff");
- QTest::newRow("TIFF: 100 dpi") << ("image_100dpi.tif") << qRound(100 * (100 / 2.54)) << qRound(100 * (100 / 2.54)) << QByteArray("tiff");
-}
-
-void tst_QImageReader::dotsPerMeter()
-{
- QFETCH(QString, fileName);
- QFETCH(int, expectedDotsPerMeterX);
- QFETCH(int, expectedDotsPerMeterY);
- QFETCH(QByteArray, format);
-
- SKIP_IF_UNSUPPORTED(format);
-
- QImage image(prefix + fileName);
-
- QCOMPARE(image.dotsPerMeterX(), expectedDotsPerMeterX);
- QCOMPARE(image.dotsPerMeterY(), expectedDotsPerMeterY);
-}
-
-void tst_QImageReader::physicalDpi_data()
-{
- QTest::addColumn<QString>("fileName");
- QTest::addColumn<int>("expectedPhysicalDpiX");
- QTest::addColumn<int>("expectedPhysicalDpiY");
- QTest::addColumn<QByteArray>("format");
- QTest::newRow("TIFF: 72 dpi") << "rgba_nocompression_littleendian.tif" << 72 << 72 << QByteArray("tiff");
- QTest::newRow("TIFF: 100 dpi") << "image_100dpi.tif" << 100 << 100 << QByteArray("tiff");
-}
-
-void tst_QImageReader::physicalDpi()
-{
- QFETCH(QString, fileName);
- QFETCH(int, expectedPhysicalDpiX);
- QFETCH(int, expectedPhysicalDpiY);
- QFETCH(QByteArray, format);
-
- SKIP_IF_UNSUPPORTED(format);
-
- QImage image(prefix + fileName);
-
- QCOMPARE(image.physicalDpiX(), expectedPhysicalDpiX);
- QCOMPARE(image.physicalDpiY(), expectedPhysicalDpiY);
-}
-
void tst_QImageReader::autoDetectImageFormat()
{
// Assume PNG is supported :-)
@@ -1860,10 +1663,6 @@ void tst_QImageReader::testIgnoresFormatAndExtension_data()
QTest::newRow("beavis.jpg") << "beavis" << "jpg" << "jpeg";
- QTest::newRow("fire.mng") << "fire" << "mng" << "mng";
-
- QTest::newRow("image_100dpi.tif") << "image_100dpi" << "tif" << "tiff";
-
QTest::newRow("rect.svg") << "rect" << "svg" << "svg";
QTest::newRow("rect.svgz") << "rect" << "svgz" << "svgz";
}
diff --git a/tests/auto/gui/image/qimagewriter/images/teapot.tiff b/tests/auto/gui/image/qimagewriter/images/teapot.tiff
deleted file mode 100644
index 20845c6e32..0000000000
--- a/tests/auto/gui/image/qimagewriter/images/teapot.tiff
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qimagewriter/qimagewriter.pro b/tests/auto/gui/image/qimagewriter/qimagewriter.pro
index 10c950cf0a..b6c80b8d62 100644
--- a/tests/auto/gui/image/qimagewriter/qimagewriter.pro
+++ b/tests/auto/gui/image/qimagewriter/qimagewriter.pro
@@ -3,15 +3,7 @@ TARGET = tst_qimagewriter
QT += widgets testlib
SOURCES += tst_qimagewriter.cpp
MOC_DIR=tmp
-!contains(QT_CONFIG, no-tiff):DEFINES += QTEST_HAVE_TIFF
win32-msvc:QMAKE_CXXFLAGS -= -Zm200
win32-msvc:QMAKE_CXXFLAGS += -Zm800
-wince*: {
- addFiles.files = images\\*.*
- addFiles.path = images
- DEPLOYMENT += addFiles
- DEFINES += SRCDIR=\\\".\\\"
-} else {
- DEFINES += SRCDIR=\\\"$$PWD\\\"
-}
+TESTDATA += images/*
diff --git a/tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp b/tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp
index 9acf210eeb..8473597dac 100644
--- a/tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp
+++ b/tests/auto/gui/image/qimagewriter/tst_qimagewriter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -71,6 +71,7 @@ public:
public slots:
void init();
+ void initTestCase();
void cleanup();
private slots:
@@ -81,13 +82,6 @@ private slots:
void writeImage2();
void supportedFormats();
- void readWriteNonDestructive_data();
- void readWriteNonDestructive();
-
-#if defined QTEST_HAVE_TIFF
- void largeTiff();
-#endif
-
void writeToInvalidDevice();
void supportsOption_data();
@@ -96,13 +90,16 @@ private slots:
void saveWithNoFormat_data();
void saveWithNoFormat();
- void resolution_data();
- void resolution();
-
void saveToTemporaryFile();
+private:
+ QString prefix;
};
-static const QLatin1String prefix(SRCDIR "/images/");
+// helper to skip an autotest when the given image format is not supported
+#define SKIP_IF_UNSUPPORTED(format) do { \
+ if (!QByteArray(format).isEmpty() && !QImageReader::supportedImageFormats().contains(format)) \
+ QSKIP("\"" + QByteArray(format) + "\" images are not supported"); \
+} while (0)
static void initializePadding(QImage *image)
{
@@ -115,6 +112,13 @@ static void initializePadding(QImage *image)
}
}
+void tst_QImageWriter::initTestCase()
+{
+ prefix = QFINDTESTDATA("images/");
+ if (prefix.isEmpty())
+ QFAIL("Can't find images directory!");
+}
+
// Testing get/set functions
void tst_QImageWriter::getSetCheck()
{
@@ -194,9 +198,6 @@ void tst_QImageWriter::writeImage_data()
QTest::newRow("PBM: ship63") << QString("ship63.pbm") << true << QByteArray("pbm");
QTest::newRow("XBM: gnus") << QString("gnus.xbm") << false << QByteArray("xbm");
QTest::newRow("JPEG: beavis") << QString("beavis.jpg") << true << QByteArray("jpeg");
-#if defined QTEST_HAVE_TIFF
- QTest::newRow("TIFF: teapot") << QString("teapot.tiff") << false << QByteArray("tiff");
-#endif
}
void tst_QImageWriter::writeImage()
@@ -205,6 +206,8 @@ void tst_QImageWriter::writeImage()
QFETCH(bool, lossy);
QFETCH(QByteArray, format);
+ SKIP_IF_UNSUPPORTED(format);
+
QImage image;
{
QImageReader reader(prefix + fileName);
@@ -217,15 +220,22 @@ void tst_QImageWriter::writeImage()
}
{
- // Shouldn't be able to write to read-only file
- QFile sourceFile(prefix + "gen-" + fileName);
- QFile::Permissions permissions = sourceFile.permissions();
- QVERIFY(sourceFile.setPermissions(QFile::ReadOwner | QFile::ReadUser | QFile::ReadGroup | QFile::ReadOther));
+ bool skip = false;
+#if defined(Q_OS_UNIX)
+ if (::geteuid() == 0)
+ skip = true;
+#endif
+ if (!skip) {
+ // Shouldn't be able to write to read-only file
+ QFile sourceFile(prefix + "gen-" + fileName);
+ QFile::Permissions permissions = sourceFile.permissions();
+ QVERIFY(sourceFile.setPermissions(QFile::ReadOwner | QFile::ReadUser | QFile::ReadGroup | QFile::ReadOther));
- QImageWriter writer(prefix + "gen-" + fileName, format);
- QVERIFY(!writer.write(image));
+ QImageWriter writer(prefix + "gen-" + fileName, format);
+ QVERIFY(!writer.write(image));
- QVERIFY(sourceFile.setPermissions(permissions));
+ QVERIFY(sourceFile.setPermissions(permissions));
+ }
}
QImage image2;
@@ -268,41 +278,6 @@ void tst_QImageWriter::writeImage2_data()
}
}
-#if defined QTEST_HAVE_TIFF
-void tst_QImageWriter::largeTiff()
-{
-#if !defined(Q_OS_WINCE)
- QImage img(4096, 2048, QImage::Format_ARGB32);
-
- QPainter p(&img);
- img.fill(0x0);
- p.fillRect(0, 0, 4096, 2048, QBrush(Qt::CrossPattern));
- p.end();
-
- QByteArray array;
- QBuffer writeBuffer(&array);
- writeBuffer.open(QIODevice::WriteOnly);
-
- QImageWriter writer(&writeBuffer, "tiff");
- QVERIFY(writer.write(img));
-
- writeBuffer.close();
-
- QBuffer readBuffer(&array);
- readBuffer.open(QIODevice::ReadOnly);
-
- QImageReader reader(&readBuffer, "tiff");
-
- QImage img2 = reader.read();
- QVERIFY(!img2.isNull());
-
- QCOMPARE(img, img2);
-#else
- QWARN("not tested on WinCE");
-#endif
-}
-#endif
-
/*
Workaround for the equality operator for indexed formats
(which fails if the colortables are different).
@@ -377,39 +352,6 @@ void tst_QImageWriter::supportedFormats()
QCOMPARE(formatSet.size(), formats.size());
}
-void tst_QImageWriter::readWriteNonDestructive_data()
-{
- QTest::addColumn<QImage::Format>("format");
- QTest::addColumn<QImage::Format>("expectedFormat");
- QTest::addColumn<bool>("grayscale");
- QTest::newRow("tiff mono") << QImage::Format_Mono << QImage::Format_Mono << false;
- QTest::newRow("tiff indexed") << QImage::Format_Indexed8 << QImage::Format_Indexed8 << false;
- QTest::newRow("tiff rgb32") << QImage::Format_ARGB32 << QImage::Format_ARGB32 << false;
- QTest::newRow("tiff grayscale") << QImage::Format_Indexed8 << QImage::Format_Indexed8 << true;
-}
-
-void tst_QImageWriter::readWriteNonDestructive()
-{
- QFETCH(QImage::Format, format);
- QFETCH(QImage::Format, expectedFormat);
- QFETCH(bool, grayscale);
- QImage image = QImage(prefix + "colorful.bmp").convertToFormat(format);
-
- if (grayscale) {
- QVector<QRgb> colors;
- for (int i = 0; i < 256; ++i)
- colors << qRgb(i, i, i);
- image.setColorTable(colors);
- }
-
- QVERIFY(image.save(prefix + "gen-readWriteNonDestructive.tiff"));
-
- QImage image2 = QImage(prefix + "gen-readWriteNonDestructive.tiff");
- QImage::Format readFormat = image2.format();
- QCOMPARE(readFormat, expectedFormat);
- QCOMPARE(image, image2);
-}
-
void tst_QImageWriter::writeToInvalidDevice()
{
QLatin1String fileName("/these/directories/do/not/exist/001.png");
@@ -449,15 +391,12 @@ void tst_QImageWriter::supportsOption_data()
<< QImageIOHandler::Description
<< QImageIOHandler::Quality
<< QImageIOHandler::Size);
-#if defined QTEST_HAVE_TIFF
- QTest::newRow("tiff") << QString("gen-black.tiff")
- << (QIntList() << QImageIOHandler::Size
- << QImageIOHandler::CompressionRatio);
-#endif
}
void tst_QImageWriter::supportsOption()
{
+ SKIP_IF_UNSUPPORTED(QTest::currentDataTag());
+
QFETCH(QString, fileName);
QFETCH(QIntList, options);
@@ -500,9 +439,6 @@ void tst_QImageWriter::saveWithNoFormat_data()
QTest::newRow("png") << prefix + QString("gen-out.png") << QByteArray("png") << QImageWriter::ImageWriterError(0);
QTest::newRow("ppm") << prefix + QString("gen-out.ppm") << QByteArray("ppm") << QImageWriter::ImageWriterError(0);
QTest::newRow("pbm") << prefix + QString("gen-out.pbm") << QByteArray("pbm") << QImageWriter::ImageWriterError(0);
-#if defined QTEST_HAVE_TIFF
- QTest::newRow("tiff") << prefix + QString("gen-out.tiff") << QByteArray("tiff") << QImageWriter::ImageWriterError(0);
-#endif
}
void tst_QImageWriter::saveWithNoFormat()
@@ -511,6 +447,8 @@ void tst_QImageWriter::saveWithNoFormat()
QFETCH(QByteArray, format);
QFETCH(QImageWriter::ImageWriterError, error);
+ SKIP_IF_UNSUPPORTED(format);
+
QImage niceImage(64, 64, QImage::Format_ARGB32);
qMemSet(niceImage.bits(), 0, niceImage.byteCount());
@@ -532,39 +470,6 @@ void tst_QImageWriter::saveWithNoFormat()
QVERIFY2(!outImage.isNull(), qPrintable(reader.errorString()));
}
-void tst_QImageWriter::resolution_data()
-{
- QTest::addColumn<QString>("filename");
- QTest::addColumn<int>("expectedDotsPerMeterX");
- QTest::addColumn<int>("expectedDotsPerMeterY");
-#if defined QTEST_HAVE_TIFF
- QTest::newRow("TIFF: 100 dpi") << ("image_100dpi.tif") << qRound(100 * (100 / 2.54)) << qRound(100 * (100 / 2.54));
- QTest::newRow("TIFF: 50 dpi") << ("image_50dpi.tif") << qRound(50 * (100 / 2.54)) << qRound(50 * (100 / 2.54));
- QTest::newRow("TIFF: 300 dot per meter") << ("image_300dpm.tif") << 300 << 300;
-#endif
-}
-
-void tst_QImageWriter::resolution()
-{
- QFETCH(QString, filename);
- QFETCH(int, expectedDotsPerMeterX);
- QFETCH(int, expectedDotsPerMeterY);
-
- QImage image(prefix + QLatin1String("colorful.bmp"));
- image.setDotsPerMeterX(expectedDotsPerMeterX);
- image.setDotsPerMeterY(expectedDotsPerMeterY);
- const QString generatedFilepath = prefix + "gen-" + filename;
- {
- QImageWriter writer(generatedFilepath);
- QVERIFY(writer.write(image));
- }
- QImageReader reader(generatedFilepath);
- const QImage generatedImage = reader.read();
-
- QCOMPARE(expectedDotsPerMeterX, generatedImage.dotsPerMeterX());
- QCOMPARE(expectedDotsPerMeterY, generatedImage.dotsPerMeterY());
-}
-
void tst_QImageWriter::saveToTemporaryFile()
{
QImage image(prefix + "kollada.png");
diff --git a/tests/auto/gui/image/qmovie/animations/dutch.mng b/tests/auto/gui/image/qmovie/animations/dutch.mng
deleted file mode 100644
index 4917fdee7a..0000000000
--- a/tests/auto/gui/image/qmovie/animations/dutch.mng
+++ /dev/null
Binary files differ
diff --git a/tests/auto/gui/image/qmovie/qmovie.pro b/tests/auto/gui/image/qmovie/qmovie.pro
index 5da0b80670..b2891a482f 100644
--- a/tests/auto/gui/image/qmovie/qmovie.pro
+++ b/tests/auto/gui/image/qmovie/qmovie.pro
@@ -6,7 +6,6 @@ MOC_DIR=tmp
!contains(QT_CONFIG, no-gif):DEFINES += QTEST_HAVE_GIF
!contains(QT_CONFIG, no-jpeg):DEFINES += QTEST_HAVE_JPEG
-!contains(QT_CONFIG, no-mng):DEFINES += QTEST_HAVE_MNG
RESOURCES += resources.qrc
TESTDATA += animations/*
diff --git a/tests/auto/gui/image/qmovie/tst_qmovie.cpp b/tests/auto/gui/image/qmovie/tst_qmovie.cpp
index d0c5e91f57..1a66141ea1 100644
--- a/tests/auto/gui/image/qmovie/tst_qmovie.cpp
+++ b/tests/auto/gui/image/qmovie/tst_qmovie.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -137,10 +137,6 @@ void tst_QMovie::playMovie_data()
{
QTest::addColumn<QString>("fileName");
QTest::addColumn<int>("frameCount");
-#if defined(QTEST_HAVE_MNG) && !defined(Q_OS_WINCE)
- // Qt/WinCE runs out of memory for this one...
- QTest::newRow("home") << QString("animations/dutch.mng") << 10;
-#endif
#ifdef QTEST_HAVE_GIF
QTest::newRow("comicsecard") << QString("animations/comicsecard.gif") << 5;
QTest::newRow("trolltech") << QString("animations/trolltech.gif") << 34;
@@ -191,7 +187,7 @@ void tst_QMovie::jumpToFrame_data()
void tst_QMovie::jumpToFrame()
{
QFETCH(QString, fileName);
- QMovie movie(fileName);
+ QMovie movie(QFINDTESTDATA(fileName));
movie.start();
movie.stop();
QVERIFY(movie.jumpToFrame(-1) == false);
diff --git a/tests/auto/gui/image/qpicture/tst_qpicture.cpp b/tests/auto/gui/image/qpicture/tst_qpicture.cpp
index d4dc254dcb..8c2db9bed7 100644
--- a/tests/auto/gui/image/qpicture/tst_qpicture.cpp
+++ b/tests/auto/gui/image/qpicture/tst_qpicture.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/image/qpixmap/qpixmap.pro b/tests/auto/gui/image/qpixmap/qpixmap.pro
index fc09164c46..15098770c6 100644
--- a/tests/auto/gui/image/qpixmap/qpixmap.pro
+++ b/tests/auto/gui/image/qpixmap/qpixmap.pro
@@ -4,25 +4,9 @@ TARGET = tst_qpixmap
QT += core-private gui-private widgets widgets-private testlib
SOURCES += tst_qpixmap.cpp
-wince* {
- task31722_0.files = convertFromImage/task31722_0/*.png
- task31722_0.path = convertFromImage/task31722_0
-
- task31722_1.files = convertFromImage/task31722_1/*.png
- task31722_1.path = convertFromImage/task31722_1
-
- icons.files = convertFromToHICON/*
- icons.path = convertFromToHICON
-
- loadFromData.files = loadFromData/*
- loadFromData.path = loadFromData
-
- DEPLOYMENT += task31722_0 task31722_1 icons loadFromData
- DEFINES += SRCDIR=\\\".\\\"
- DEPLOYMENT_PLUGIN += qico
-} else {
- DEFINES += SRCDIR=\\\"$$PWD\\\"
+!wince* {
win32:LIBS += -lgdi32 -luser32
}
RESOURCES += qpixmap.qrc
+TESTDATA += convertFromImage/* convertFromToHICON/* loadFromData/* images/*
diff --git a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
index 7ae680dbdb..527dcce916 100644
--- a/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
+++ b/tests/auto/gui/image/qpixmap/tst_qpixmap.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -79,6 +79,7 @@ public:
public slots:
void init();
void cleanup();
+ void cleanupTestCase();
private slots:
void swap();
@@ -215,6 +216,11 @@ void tst_QPixmap::cleanup()
{
}
+void tst_QPixmap::cleanupTestCase()
+{
+ QFile::remove(QLatin1String("temp_image.png"));
+}
+
void tst_QPixmap::swap()
{
QPixmap p1( 16, 16 ), p2( 32, 32 );
@@ -300,7 +306,7 @@ void tst_QPixmap::convertFromImage_data()
{
QTest::addColumn<QImage>("img1");
QTest::addColumn<QImage>("img2");
- const QString prefix = QLatin1String(SRCDIR) + "/convertFromImage";
+ const QString prefix = QFINDTESTDATA("convertFromImage");
{
QImage img1;
@@ -853,12 +859,14 @@ void tst_QPixmap::convertFromImageDetach()
#if defined(Q_OS_WIN)
+QT_BEGIN_NAMESPACE
Q_GUI_EXPORT HBITMAP qt_createIconMask(const QBitmap &bitmap);
Q_GUI_EXPORT HBITMAP qt_pixmapToWinHBITMAP(const QPixmap &p, int hbitmapFormat = 0);
Q_GUI_EXPORT QPixmap qt_pixmapFromWinHBITMAP(HBITMAP bitmap, int hbitmapFormat = 0);
Q_GUI_EXPORT HICON qt_pixmapToWinHICON(const QPixmap &p);
Q_GUI_EXPORT QImage qt_imageFromWinHBITMAP(HDC hdc, HBITMAP bitmap, int w, int h);
Q_GUI_EXPORT QPixmap qt_pixmapFromWinHICON(HICON icon);
+QT_END_NAMESPACE
void tst_QPixmap::toWinHBITMAP_data()
{
@@ -994,7 +1002,7 @@ void tst_QPixmap::toWinHICON_data()
QTest::addColumn<int>("width");
QTest::addColumn<int>("height");
- const QString prefix = QLatin1String(SRCDIR) + "/convertFromToHICON";
+ const QString prefix = QFINDTESTDATA("convertFromToHICON");
QTest::newRow("32bpp_16x16") << prefix + QLatin1String("/icon_32bpp") << 16 << 16;
QTest::newRow("32bpp_32x32") << prefix + QLatin1String("/icon_32bpp") << 32 << 32;
@@ -1290,7 +1298,7 @@ void tst_QPixmap::loadFromDataImage_data()
{
QTest::addColumn<QString>("imagePath");
- const QString prefix = QLatin1String(SRCDIR) + "/loadFromData";
+ const QString prefix = QFINDTESTDATA("loadFromData");
QTest::newRow("designer_argb32.png") << prefix + "/designer_argb32.png";
// When no extension is provided we try all extensions that has been registered by image providers
@@ -1324,7 +1332,7 @@ void tst_QPixmap::fromImageReader_data()
{
QTest::addColumn<QString>("imagePath");
- const QString prefix = QLatin1String(SRCDIR) + "/loadFromData";
+ const QString prefix = QFINDTESTDATA("loadFromData");
QTest::newRow("designer_argb32.png") << prefix + "/designer_argb32.png";
QTest::newRow("designer_indexed8_no_alpha.png") << prefix + "/designer_indexed8_no_alpha.png";
@@ -1362,7 +1370,7 @@ void tst_QPixmap::fromImageReaderAnimatedGif()
{
QFETCH(QString, imagePath);
- const QString prefix = QLatin1String(SRCDIR) + "/loadFromData";
+ const QString prefix = QFINDTESTDATA("loadFromData");
const QString path = prefix + imagePath;
QImageReader referenceReader(path);
diff --git a/tests/auto/gui/image/qpixmapcache/tst_qpixmapcache.cpp b/tests/auto/gui/image/qpixmapcache/tst_qpixmapcache.cpp
index c79e42f908..0127e2cc83 100644
--- a/tests/auto/gui/image/qpixmapcache/tst_qpixmapcache.cpp
+++ b/tests/auto/gui/image/qpixmapcache/tst_qpixmapcache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/image/qpixmapfilter/tst_qpixmapfilter.cpp b/tests/auto/gui/image/qpixmapfilter/tst_qpixmapfilter.cpp
index 91ba2332d1..c9b2e054da 100644
--- a/tests/auto/gui/image/qpixmapfilter/tst_qpixmapfilter.cpp
+++ b/tests/auto/gui/image/qpixmapfilter/tst_qpixmapfilter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/image/qvolatileimage/tst_qvolatileimage.cpp b/tests/auto/gui/image/qvolatileimage/tst_qvolatileimage.cpp
index 158ccc5770..f203cfec0f 100644
--- a/tests/auto/gui/image/qvolatileimage/tst_qvolatileimage.cpp
+++ b/tests/auto/gui/image/qvolatileimage/tst_qvolatileimage.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/kernel/kernel.pro b/tests/auto/gui/kernel/kernel.pro
index e473463828..1adae128cf 100644
--- a/tests/auto/gui/kernel/kernel.pro
+++ b/tests/auto/gui/kernel/kernel.pro
@@ -6,7 +6,7 @@ SUBDIRS=\
qfileopenevent \
qguimetatype \
qguivariant \
- qinputpanel \
+ qinputmethod \
qkeysequence \
qmouseevent \
qmouseevent_modal \
@@ -15,3 +15,4 @@ SUBDIRS=\
qshortcut \
qtouchevent \
qwindow \
+ qguiapplication \
diff --git a/tests/auto/gui/kernel/qclipboard/copier/main.cpp b/tests/auto/gui/kernel/qclipboard/copier/main.cpp
index 7e3efa03ba..bbce35a15d 100644
--- a/tests/auto/gui/kernel/qclipboard/copier/main.cpp
+++ b/tests/auto/gui/kernel/qclipboard/copier/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/kernel/qclipboard/paster/main.cpp b/tests/auto/gui/kernel/qclipboard/paster/main.cpp
index 3ca4886f0b..473ea8bd42 100644
--- a/tests/auto/gui/kernel/qclipboard/paster/main.cpp
+++ b/tests/auto/gui/kernel/qclipboard/paster/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/kernel/qclipboard/qclipboard.pro b/tests/auto/gui/kernel/qclipboard/qclipboard.pro
index 692ca5dd3f..d97c58dea0 100644
--- a/tests/auto/gui/kernel/qclipboard/qclipboard.pro
+++ b/tests/auto/gui/kernel/qclipboard/qclipboard.pro
@@ -1,4 +1,4 @@
TEMPLATE = subdirs
-SUBDIRS = test copier paster
-
-
+SUBDIRS = copier paster
+test.depends += $$SUBDIRS
+SUBDIRS += test
diff --git a/tests/auto/gui/kernel/qclipboard/test/test.pro b/tests/auto/gui/kernel/qclipboard/test/test.pro
index 1c92fa4107..4be6769592 100644
--- a/tests/auto/gui/kernel/qclipboard/test/test.pro
+++ b/tests/auto/gui/kernel/qclipboard/test/test.pro
@@ -12,12 +12,11 @@ win32 {
}
wince* {
- copier.files = ../copier/copier.exe
- copier.path = copier
- paster.files = ../paster/paster.exe
- paster.path = paster
-
- DEPLOYMENT += copier paster rsc reg_resource
+ DEPLOYMENT += rsc reg_resource
}
mac: CONFIG += insignificant_test # QTBUG-23057
+
+load(testcase) # for target.path and installTestHelperApp()
+installTestHelperApp("../copier/copier",copier,copier)
+installTestHelperApp("../paster/paster",paster,paster)
diff --git a/tests/auto/gui/kernel/qclipboard/tst_qclipboard.cpp b/tests/auto/gui/kernel/qclipboard/tst_qclipboard.cpp
index fcba0958e7..e1b0535e2f 100644
--- a/tests/auto/gui/kernel/qclipboard/tst_qclipboard.cpp
+++ b/tests/auto/gui/kernel/qclipboard/tst_qclipboard.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -46,7 +46,7 @@
#include <QtCore/QDir>
#include <QtGui/QGuiApplication>
#include <QtGui/QClipboard>
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
#include <Carbon/Carbon.h>
#endif
@@ -74,7 +74,7 @@ void tst_QClipboard::init()
bool tst_QClipboard::nativeClipboardWorking()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
PasteboardRef pasteboard;
OSStatus status = PasteboardCreate(0, &pasteboard);
if (status == noErr)
@@ -295,7 +295,7 @@ void tst_QClipboard::setMimeData()
QCOMPARE(spySelection.count(), 1);
QCOMPARE(spyData.count(), 1);
QCOMPARE(spyFindBuffer.count(), 0);
-#elif defined(Q_WS_MAC)
+#elif defined(Q_OS_MAC)
QCOMPARE(spySelection.count(), 0);
QCOMPARE(spyData.count(), 1);
QCOMPARE(spyFindBuffer.count(), 1);
@@ -328,7 +328,7 @@ void tst_QClipboard::setMimeData()
QCOMPARE(spySelection.count(), 1);
QCOMPARE(spyData.count(), 1);
QCOMPARE(spyFindBuffer.count(), 0);
-#elif defined(Q_WS_MAC)
+#elif defined(Q_OS_MAC)
QCOMPARE(spySelection.count(), 0);
QCOMPARE(spyData.count(), 1);
QCOMPARE(spyFindBuffer.count(), 1);
diff --git a/tests/auto/gui/kernel/qdrag/tst_qdrag.cpp b/tests/auto/gui/kernel/qdrag/tst_qdrag.cpp
index 47ff1b05f1..ae9cd55b7c 100644
--- a/tests/auto/gui/kernel/qdrag/tst_qdrag.cpp
+++ b/tests/auto/gui/kernel/qdrag/tst_qdrag.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/kernel/qevent/tst_qevent.cpp b/tests/auto/gui/kernel/qevent/tst_qevent.cpp
index f0771330f7..1d60ff2609 100644
--- a/tests/auto/gui/kernel/qevent/tst_qevent.cpp
+++ b/tests/auto/gui/kernel/qevent/tst_qevent.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/kernel/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.cpp b/tests/auto/gui/kernel/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.cpp
index 0c0bff551b..9d138f6a2e 100644
--- a/tests/auto/gui/kernel/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.cpp
+++ b/tests/auto/gui/kernel/qfileopenevent/qfileopeneventexternal/qfileopeneventexternal.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/kernel/qfileopenevent/test/tst_qfileopenevent.cpp b/tests/auto/gui/kernel/qfileopenevent/test/tst_qfileopenevent.cpp
index 207356fe84..770b729761 100644
--- a/tests/auto/gui/kernel/qfileopenevent/test/tst_qfileopenevent.cpp
+++ b/tests/auto/gui/kernel/qfileopenevent/test/tst_qfileopenevent.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/kernel/qguiapplication/qguiapplication.pro b/tests/auto/gui/kernel/qguiapplication/qguiapplication.pro
new file mode 100644
index 0000000000..fffa097d73
--- /dev/null
+++ b/tests/auto/gui/kernel/qguiapplication/qguiapplication.pro
@@ -0,0 +1,4 @@
+CONFIG += testcase
+TARGET = tst_qguiapplication
+QT += core gui testlib
+SOURCES = tst_qguiapplication.cpp
diff --git a/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp b/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp
new file mode 100644
index 0000000000..2fd875b7f4
--- /dev/null
+++ b/tests/auto/gui/kernel/qguiapplication/tst_qguiapplication.cpp
@@ -0,0 +1,156 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <QtTest/QtTest>
+#include <QtGui/QGuiApplication>
+#include <QtGui/QWindow>
+#include <QDebug>
+
+class tst_QGuiApplication: public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void focusObject();
+ void allWindows();
+ void topLevelWindows();
+};
+
+class DummyWindow : public QWindow
+{
+public:
+ DummyWindow() : m_focusObject(0) {}
+
+ virtual QObject *focusObject() const
+ {
+ return m_focusObject;
+ }
+
+ void setFocusObject(QObject *object)
+ {
+ m_focusObject = object;
+ emit focusObjectChanged(object);
+ }
+
+ QObject *m_focusObject;
+};
+
+
+void tst_QGuiApplication::focusObject()
+{
+ int argc = 0;
+ QGuiApplication app(argc, 0);
+
+ QObject obj1, obj2, obj3;
+ DummyWindow window1;
+ DummyWindow window2;
+ window1.show();
+
+ QSignalSpy spy(&app, SIGNAL(focusObjectChanged(QObject *)));
+
+
+ // verify active window focus propagates to qguiapplication
+ QTest::qWaitForWindowShown(&window1);
+ window1.requestActivateWindow();
+ QTRY_COMPARE(app.focusWindow(), &window1);
+
+ window1.setFocusObject(&obj1);
+ QCOMPARE(app.focusObject(), &obj1);
+ QCOMPARE(spy.count(), 1);
+
+ spy.clear();
+ window1.setFocusObject(&obj2);
+ QCOMPARE(app.focusObject(), &obj2);
+ QCOMPARE(spy.count(), 1);
+
+ spy.clear();
+ window2.setFocusObject(&obj3);
+ QCOMPARE(app.focusObject(), &obj2); // not yet changed
+ window2.show();
+ QTest::qWaitForWindowShown(&window2);
+ QTRY_COMPARE(app.focusWindow(), &window2);
+ QCOMPARE(app.focusObject(), &obj3);
+ QCOMPARE(spy.count(), 1);
+
+ // focus change on unfocused window does not show
+ spy.clear();
+ window1.setFocusObject(&obj1);
+ QCOMPARE(spy.count(), 0);
+ QCOMPARE(app.focusObject(), &obj3);
+}
+
+void tst_QGuiApplication::allWindows()
+{
+ int argc = 0;
+ QGuiApplication app(argc, 0);
+ QWindow *window1 = new QWindow;
+ QWindow *window2 = new QWindow(window1);
+ QVERIFY(app.allWindows().contains(window1));
+ QVERIFY(app.allWindows().contains(window2));
+ QCOMPARE(app.allWindows().count(), 2);
+ delete window1;
+ window1 = 0;
+ window2 = 0;
+ QVERIFY(!app.allWindows().contains(window2));
+ QVERIFY(!app.allWindows().contains(window1));
+ QCOMPARE(app.allWindows().count(), 0);
+}
+
+void tst_QGuiApplication::topLevelWindows()
+{
+ int argc = 0;
+ QGuiApplication app(argc, 0);
+ QWindow *window1 = new QWindow;
+ QWindow *window2 = new QWindow(window1);
+ QVERIFY(app.topLevelWindows().contains(window1));
+ QVERIFY(!app.topLevelWindows().contains(window2));
+ QCOMPARE(app.topLevelWindows().count(), 1);
+ delete window1;
+ window1 = 0;
+ window2 = 0;
+ QVERIFY(!app.topLevelWindows().contains(window2));
+ QVERIFY(!app.topLevelWindows().contains(window1));
+ QCOMPARE(app.topLevelWindows().count(), 0);
+}
+
+QTEST_APPLESS_MAIN(tst_QGuiApplication)
+#include "tst_qguiapplication.moc"
diff --git a/tests/auto/gui/kernel/qguimetatype/tst_qguimetatype.cpp b/tests/auto/gui/kernel/qguimetatype/tst_qguimetatype.cpp
index d0f12ea945..0514eafa2d 100644
--- a/tests/auto/gui/kernel/qguimetatype/tst_qguimetatype.cpp
+++ b/tests/auto/gui/kernel/qguimetatype/tst_qguimetatype.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/kernel/qguivariant/tst_qguivariant.cpp b/tests/auto/gui/kernel/qguivariant/tst_qguivariant.cpp
index 56a1fb0d8f..90984eb9f9 100644
--- a/tests/auto/gui/kernel/qguivariant/tst_qguivariant.cpp
+++ b/tests/auto/gui/kernel/qguivariant/tst_qguivariant.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/kernel/qinputmethod/qinputmethod.pro b/tests/auto/gui/kernel/qinputmethod/qinputmethod.pro
new file mode 100644
index 0000000000..015cc782eb
--- /dev/null
+++ b/tests/auto/gui/kernel/qinputmethod/qinputmethod.pro
@@ -0,0 +1,4 @@
+CONFIG += testcase
+TARGET = tst_qinputmethod
+SOURCES += tst_qinputmethod.cpp
+QT += core-private gui-private testlib
diff --git a/tests/auto/gui/kernel/qinputmethod/tst_qinputmethod.cpp b/tests/auto/gui/kernel/qinputmethod/tst_qinputmethod.cpp
new file mode 100644
index 0000000000..c10d954489
--- /dev/null
+++ b/tests/auto/gui/kernel/qinputmethod/tst_qinputmethod.cpp
@@ -0,0 +1,342 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <QtTest/QtTest>
+
+#include <private/qguiapplication_p.h>
+#include <private/qinputmethod_p.h>
+#include <qplatforminputcontext_qpa.h>
+
+class PlatformInputContext : public QPlatformInputContext
+{
+public:
+ PlatformInputContext() :
+ m_animating(false),
+ m_visible(false),
+ m_updateCallCount(0),
+ m_resetCallCount(0),
+ m_commitCallCount(0),
+ m_localeCallCount(0),
+ m_inputDirectionCallCount(0),
+ m_lastQueries(Qt::ImhNone),
+ m_action(QInputMethod::Click),
+ m_cursorPosition(0),
+ m_lastEventType(QEvent::None)
+ {}
+
+ virtual QRectF keyboardRect() const { return m_keyboardRect; }
+ virtual bool isAnimating() const { return m_animating; }
+ virtual void reset() { m_resetCallCount++; }
+ virtual void commit() { m_commitCallCount++; }
+
+ virtual void update(Qt::InputMethodQueries queries)
+ {
+ m_updateCallCount++;
+ m_lastQueries = queries;
+ }
+ virtual void invokeAction(QInputMethod::Action action, int cursorPosition)
+ {
+ m_action = action;
+ m_cursorPosition = cursorPosition;
+ }
+ virtual bool filterEvent(const QEvent *event)
+ {
+ m_lastEventType = event->type(); return false;
+ }
+ virtual void showInputPanel()
+ {
+ m_visible = true;
+ }
+ virtual void hideInputPanel()
+ {
+ m_visible = false;
+ }
+ virtual bool isInputPanelVisible() const
+ {
+ return m_visible;
+ }
+ virtual QLocale locale() const
+ {
+ m_localeCallCount++;
+ return QLocale::c();
+ }
+ virtual Qt::LayoutDirection inputDirection() const
+ {
+ m_inputDirectionCallCount++;
+ return Qt::LeftToRight;
+ }
+
+ bool m_animating;
+ bool m_visible;
+ int m_updateCallCount;
+ int m_resetCallCount;
+ int m_commitCallCount;
+ mutable int m_localeCallCount;
+ mutable int m_inputDirectionCallCount;
+ Qt::InputMethodQueries m_lastQueries;
+ QInputMethod::Action m_action;
+ int m_cursorPosition;
+ int m_lastEventType;
+ QRectF m_keyboardRect;
+};
+
+class InputItem : public QObject
+{
+ Q_OBJECT
+public:
+ bool event(QEvent *event)
+ {
+ if (event->type() == QEvent::InputMethodQuery) {
+ QInputMethodQueryEvent *query = static_cast<QInputMethodQueryEvent *>(event);
+ if (query->queries() & Qt::ImCursorRectangle)
+ query->setValue(Qt::ImCursorRectangle, QRectF(1, 2, 3, 4));
+ if (query->queries() & Qt::ImPreferredLanguage)
+ query->setValue(Qt::ImPreferredLanguage, QString("English"));
+ m_lastQueries = query->queries();
+ query->accept();
+ return true;
+ }
+ return false;
+ }
+ Qt::InputMethodQueries m_lastQueries;
+};
+
+class tst_qinputmethod : public QObject
+{
+ Q_OBJECT
+public:
+ tst_qinputmethod() {}
+ virtual ~tst_qinputmethod() {}
+private slots:
+ void initTestCase();
+ void visible();
+ void animating();
+ void keyboarRectangle();
+ void inputItem();
+ void inputItemTransform();
+ void cursorRectangle();
+ void invokeAction();
+ void reset();
+ void commit();
+ void update();
+ void query();
+ void inputDirection();
+private:
+ InputItem m_inputItem;
+ PlatformInputContext m_platformInputContext;
+};
+
+void tst_qinputmethod::initTestCase()
+{
+ QInputMethodPrivate *inputMethodPrivate = QInputMethodPrivate::get(qApp->inputMethod());
+ inputMethodPrivate->testContext = &m_platformInputContext;
+}
+
+void tst_qinputmethod::visible()
+{
+ QCOMPARE(qApp->inputMethod()->visible(), false);
+ qApp->inputMethod()->show();
+ QCOMPARE(qApp->inputMethod()->visible(), true);
+
+ qApp->inputMethod()->hide();
+ QCOMPARE(qApp->inputMethod()->visible(), false);
+
+ qApp->inputMethod()->setVisible(true);
+ QCOMPARE(qApp->inputMethod()->visible(), true);
+
+ qApp->inputMethod()->setVisible(false);
+ QCOMPARE(qApp->inputMethod()->visible(), false);
+}
+
+void tst_qinputmethod::animating()
+{
+ QCOMPARE(qApp->inputMethod()->isAnimating(), false);
+
+ m_platformInputContext.m_animating = true;
+ QCOMPARE(qApp->inputMethod()->isAnimating(), true);
+
+ m_platformInputContext.m_animating = false;
+ QCOMPARE(qApp->inputMethod()->isAnimating(), false);
+
+ QSignalSpy spy(qApp->inputMethod(), SIGNAL(animatingChanged()));
+ m_platformInputContext.emitAnimatingChanged();
+ QCOMPARE(spy.count(), 1);
+}
+
+void tst_qinputmethod::keyboarRectangle()
+{
+ QCOMPARE(qApp->inputMethod()->keyboardRectangle(), QRectF());
+
+ m_platformInputContext.m_keyboardRect = QRectF(10, 20, 30, 40);
+ QCOMPARE(qApp->inputMethod()->keyboardRectangle(), QRectF(10, 20, 30, 40));
+
+ QSignalSpy spy(qApp->inputMethod(), SIGNAL(keyboardRectangleChanged()));
+ m_platformInputContext.emitKeyboardRectChanged();
+ QCOMPARE(spy.count(), 1);
+}
+
+void tst_qinputmethod::inputItem()
+{
+ QVERIFY(!qApp->inputMethod()->inputItem());
+ QSignalSpy spy(qApp->inputMethod(), SIGNAL(inputItemChanged()));
+
+ qApp->inputMethod()->setInputItem(&m_inputItem);
+
+ QCOMPARE(qApp->inputMethod()->inputItem(), &m_inputItem);
+ QCOMPARE(spy.count(), 1);
+
+ // reset
+ qApp->inputMethod()->setInputItem(0);
+}
+
+void tst_qinputmethod::inputItemTransform()
+{
+ QCOMPARE(qApp->inputMethod()->inputItemTransform(), QTransform());
+ QSignalSpy spy(qApp->inputMethod(), SIGNAL(cursorRectangleChanged()));
+
+ QTransform transform;
+ transform.translate(10, 10);
+ transform.scale(2, 2);
+ transform.shear(2, 2);
+ qApp->inputMethod()->setInputItemTransform(transform);
+
+ QCOMPARE(qApp->inputMethod()->inputItemTransform(), transform);
+ QCOMPARE(spy.count(), 1);
+
+ // reset
+ qApp->inputMethod()->setInputItemTransform(QTransform());
+}
+
+void tst_qinputmethod::cursorRectangle()
+{
+ QCOMPARE(qApp->inputMethod()->cursorRectangle(), QRectF());
+
+ QTransform transform;
+ transform.translate(10, 10);
+ transform.scale(2, 2);
+ transform.shear(2, 2);
+ qApp->inputMethod()->setInputItemTransform(transform);
+ qApp->inputMethod()->setInputItem(&m_inputItem);
+
+ QCOMPARE(qApp->inputMethod()->cursorRectangle(), transform.mapRect(QRectF(1, 2, 3, 4)));
+
+ // reset
+ qApp->inputMethod()->setInputItem(0);
+ qApp->inputMethod()->setInputItemTransform(QTransform());
+}
+
+void tst_qinputmethod::invokeAction()
+{
+ QCOMPARE(m_platformInputContext.m_action, QInputMethod::Click);
+ QCOMPARE(m_platformInputContext.m_cursorPosition, 0);
+
+ qApp->inputMethod()->invokeAction(QInputMethod::ContextMenu, 5);
+ QCOMPARE(m_platformInputContext.m_action, QInputMethod::ContextMenu);
+ QCOMPARE(m_platformInputContext.m_cursorPosition, 5);
+}
+
+void tst_qinputmethod::reset()
+{
+ QCOMPARE(m_platformInputContext.m_resetCallCount, 0);
+
+ qApp->inputMethod()->reset();
+ QCOMPARE(m_platformInputContext.m_resetCallCount, 1);
+
+ qApp->inputMethod()->reset();
+ QCOMPARE(m_platformInputContext.m_resetCallCount, 2);
+}
+
+void tst_qinputmethod::commit()
+{
+ QCOMPARE(m_platformInputContext.m_commitCallCount, 0);
+
+ qApp->inputMethod()->commit();
+ QCOMPARE(m_platformInputContext.m_commitCallCount, 1);
+
+ qApp->inputMethod()->commit();
+ QCOMPARE(m_platformInputContext.m_commitCallCount, 2);
+}
+
+void tst_qinputmethod::update()
+{
+ qApp->inputMethod()->setInputItem(&m_inputItem);
+ QCOMPARE(m_platformInputContext.m_updateCallCount, 0);
+ QCOMPARE(int(m_platformInputContext.m_lastQueries), int(Qt::ImhNone));
+
+ qApp->inputMethod()->update(Qt::ImQueryInput);
+ QCOMPARE(m_platformInputContext.m_updateCallCount, 1);
+ QCOMPARE(int(m_platformInputContext.m_lastQueries), int(Qt::ImQueryInput));
+
+ qApp->inputMethod()->update(Qt::ImQueryAll);
+ QCOMPARE(m_platformInputContext.m_updateCallCount, 2);
+ QCOMPARE(int(m_platformInputContext.m_lastQueries), int(Qt::ImQueryAll));
+
+ QCOMPARE(qApp->inputMethod()->keyboardRectangle(), QRectF(10, 20, 30, 40));
+
+ // reset
+ qApp->inputMethod()->setInputItem(0);
+}
+
+void tst_qinputmethod::query()
+{
+ QInputMethodQueryEvent query(Qt::InputMethodQueries(Qt::ImPreferredLanguage | Qt::ImCursorRectangle));
+ QGuiApplication::sendEvent(&m_inputItem, &query);
+
+ QString language = query.value(Qt::ImPreferredLanguage).toString();
+ QCOMPARE(language, QString("English"));
+
+ QRect cursorRectangle = query.value(Qt::ImCursorRectangle).toRect();
+ QCOMPARE(cursorRectangle, QRect(1,2,3,4));
+}
+
+void tst_qinputmethod::inputDirection()
+{
+ QCOMPARE(m_platformInputContext.m_inputDirectionCallCount, 0);
+ qApp->inputMethod()->inputDirection();
+ QCOMPARE(m_platformInputContext.m_inputDirectionCallCount, 1);
+
+ QCOMPARE(m_platformInputContext.m_localeCallCount, 0);
+ qApp->inputMethod()->locale();
+ QCOMPARE(m_platformInputContext.m_localeCallCount, 1);
+}
+
+QTEST_MAIN(tst_qinputmethod)
+#include "tst_qinputmethod.moc"
diff --git a/tests/auto/gui/kernel/qinputpanel/qinputpanel.pro b/tests/auto/gui/kernel/qinputpanel/qinputpanel.pro
deleted file mode 100644
index 5e3f4b1504..0000000000
--- a/tests/auto/gui/kernel/qinputpanel/qinputpanel.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG += testcase
-TARGET = tst_qinputpanel
-SOURCES += tst_qinputpanel.cpp
-QT += core-private gui-private testlib
diff --git a/tests/auto/gui/kernel/qinputpanel/tst_qinputpanel.cpp b/tests/auto/gui/kernel/qinputpanel/tst_qinputpanel.cpp
deleted file mode 100644
index b46899a84d..0000000000
--- a/tests/auto/gui/kernel/qinputpanel/tst_qinputpanel.cpp
+++ /dev/null
@@ -1,342 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite 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 <QtTest/QtTest>
-
-#include <private/qguiapplication_p.h>
-#include <private/qinputpanel_p.h>
-#include <qplatforminputcontext_qpa.h>
-
-class PlatformInputContext : public QPlatformInputContext
-{
-public:
- PlatformInputContext() :
- m_animating(false),
- m_visible(false),
- m_updateCallCount(0),
- m_resetCallCount(0),
- m_commitCallCount(0),
- m_localeCallCount(0),
- m_inputDirectionCallCount(0),
- m_lastQueries(Qt::ImhNone),
- m_action(QInputPanel::Click),
- m_cursorPosition(0),
- m_lastEventType(QEvent::None)
- {}
-
- virtual QRectF keyboardRect() const { return m_keyboardRect; }
- virtual bool isAnimating() const { return m_animating; }
- virtual void reset() { m_resetCallCount++; }
- virtual void commit() { m_commitCallCount++; }
-
- virtual void update(Qt::InputMethodQueries queries)
- {
- m_updateCallCount++;
- m_lastQueries = queries;
- }
- virtual void invokeAction(QInputPanel::Action action, int cursorPosition)
- {
- m_action = action;
- m_cursorPosition = cursorPosition;
- }
- virtual bool filterEvent(const QEvent *event)
- {
- m_lastEventType = event->type(); return false;
- }
- virtual void showInputPanel()
- {
- m_visible = true;
- }
- virtual void hideInputPanel()
- {
- m_visible = false;
- }
- virtual bool isInputPanelVisible() const
- {
- return m_visible;
- }
- virtual QLocale locale() const
- {
- m_localeCallCount++;
- return QLocale::c();
- }
- virtual Qt::LayoutDirection inputDirection() const
- {
- m_inputDirectionCallCount++;
- return Qt::LeftToRight;
- }
-
- bool m_animating;
- bool m_visible;
- int m_updateCallCount;
- int m_resetCallCount;
- int m_commitCallCount;
- mutable int m_localeCallCount;
- mutable int m_inputDirectionCallCount;
- Qt::InputMethodQueries m_lastQueries;
- QInputPanel::Action m_action;
- int m_cursorPosition;
- int m_lastEventType;
- QRectF m_keyboardRect;
-};
-
-class InputItem : public QObject
-{
- Q_OBJECT
-public:
- bool event(QEvent *event)
- {
- if (event->type() == QEvent::InputMethodQuery) {
- QInputMethodQueryEvent *query = static_cast<QInputMethodQueryEvent *>(event);
- if (query->queries() & Qt::ImCursorRectangle)
- query->setValue(Qt::ImCursorRectangle, QRectF(1, 2, 3, 4));
- if (query->queries() & Qt::ImPreferredLanguage)
- query->setValue(Qt::ImPreferredLanguage, QString("English"));
- m_lastQueries = query->queries();
- query->accept();
- return true;
- }
- return false;
- }
- Qt::InputMethodQueries m_lastQueries;
-};
-
-class tst_qinputpanel : public QObject
-{
- Q_OBJECT
-public:
- tst_qinputpanel() {}
- virtual ~tst_qinputpanel() {}
-private slots:
- void initTestCase();
- void visible();
- void animating();
- void keyboarRectangle();
- void inputItem();
- void inputItemTransform();
- void cursorRectangle();
- void invokeAction();
- void reset();
- void commit();
- void update();
- void query();
- void inputDirection();
-private:
- InputItem m_inputItem;
- PlatformInputContext m_platformInputContext;
-};
-
-void tst_qinputpanel::initTestCase()
-{
- QInputPanelPrivate *inputPanelPrivate = QInputPanelPrivate::get(qApp->inputPanel());
- inputPanelPrivate->testContext = &m_platformInputContext;
-}
-
-void tst_qinputpanel::visible()
-{
- QCOMPARE(qApp->inputPanel()->visible(), false);
- qApp->inputPanel()->show();
- QCOMPARE(qApp->inputPanel()->visible(), true);
-
- qApp->inputPanel()->hide();
- QCOMPARE(qApp->inputPanel()->visible(), false);
-
- qApp->inputPanel()->setVisible(true);
- QCOMPARE(qApp->inputPanel()->visible(), true);
-
- qApp->inputPanel()->setVisible(false);
- QCOMPARE(qApp->inputPanel()->visible(), false);
-}
-
-void tst_qinputpanel::animating()
-{
- QCOMPARE(qApp->inputPanel()->isAnimating(), false);
-
- m_platformInputContext.m_animating = true;
- QCOMPARE(qApp->inputPanel()->isAnimating(), true);
-
- m_platformInputContext.m_animating = false;
- QCOMPARE(qApp->inputPanel()->isAnimating(), false);
-
- QSignalSpy spy(qApp->inputPanel(), SIGNAL(animatingChanged()));
- m_platformInputContext.emitAnimatingChanged();
- QCOMPARE(spy.count(), 1);
-}
-
-void tst_qinputpanel::keyboarRectangle()
-{
- QCOMPARE(qApp->inputPanel()->keyboardRectangle(), QRectF());
-
- m_platformInputContext.m_keyboardRect = QRectF(10, 20, 30, 40);
- QCOMPARE(qApp->inputPanel()->keyboardRectangle(), QRectF(10, 20, 30, 40));
-
- QSignalSpy spy(qApp->inputPanel(), SIGNAL(keyboardRectangleChanged()));
- m_platformInputContext.emitKeyboardRectChanged();
- QCOMPARE(spy.count(), 1);
-}
-
-void tst_qinputpanel::inputItem()
-{
- QVERIFY(!qApp->inputPanel()->inputItem());
- QSignalSpy spy(qApp->inputPanel(), SIGNAL(inputItemChanged()));
-
- qApp->inputPanel()->setInputItem(&m_inputItem);
-
- QCOMPARE(qApp->inputPanel()->inputItem(), &m_inputItem);
- QCOMPARE(spy.count(), 1);
-
- // reset
- qApp->inputPanel()->setInputItem(0);
-}
-
-void tst_qinputpanel::inputItemTransform()
-{
- QCOMPARE(qApp->inputPanel()->inputItemTransform(), QTransform());
- QSignalSpy spy(qApp->inputPanel(), SIGNAL(cursorRectangleChanged()));
-
- QTransform transform;
- transform.translate(10, 10);
- transform.scale(2, 2);
- transform.shear(2, 2);
- qApp->inputPanel()->setInputItemTransform(transform);
-
- QCOMPARE(qApp->inputPanel()->inputItemTransform(), transform);
- QCOMPARE(spy.count(), 1);
-
- // reset
- qApp->inputPanel()->setInputItemTransform(QTransform());
-}
-
-void tst_qinputpanel::cursorRectangle()
-{
- QCOMPARE(qApp->inputPanel()->cursorRectangle(), QRectF());
-
- QTransform transform;
- transform.translate(10, 10);
- transform.scale(2, 2);
- transform.shear(2, 2);
- qApp->inputPanel()->setInputItemTransform(transform);
- qApp->inputPanel()->setInputItem(&m_inputItem);
-
- QCOMPARE(qApp->inputPanel()->cursorRectangle(), transform.mapRect(QRectF(1, 2, 3, 4)));
-
- // reset
- qApp->inputPanel()->setInputItem(0);
- qApp->inputPanel()->setInputItemTransform(QTransform());
-}
-
-void tst_qinputpanel::invokeAction()
-{
- QCOMPARE(m_platformInputContext.m_action, QInputPanel::Click);
- QCOMPARE(m_platformInputContext.m_cursorPosition, 0);
-
- qApp->inputPanel()->invokeAction(QInputPanel::ContextMenu, 5);
- QCOMPARE(m_platformInputContext.m_action, QInputPanel::ContextMenu);
- QCOMPARE(m_platformInputContext.m_cursorPosition, 5);
-}
-
-void tst_qinputpanel::reset()
-{
- QCOMPARE(m_platformInputContext.m_resetCallCount, 0);
-
- qApp->inputPanel()->reset();
- QCOMPARE(m_platformInputContext.m_resetCallCount, 1);
-
- qApp->inputPanel()->reset();
- QCOMPARE(m_platformInputContext.m_resetCallCount, 2);
-}
-
-void tst_qinputpanel::commit()
-{
- QCOMPARE(m_platformInputContext.m_commitCallCount, 0);
-
- qApp->inputPanel()->commit();
- QCOMPARE(m_platformInputContext.m_commitCallCount, 1);
-
- qApp->inputPanel()->commit();
- QCOMPARE(m_platformInputContext.m_commitCallCount, 2);
-}
-
-void tst_qinputpanel::update()
-{
- qApp->inputPanel()->setInputItem(&m_inputItem);
- QCOMPARE(m_platformInputContext.m_updateCallCount, 0);
- QCOMPARE(int(m_platformInputContext.m_lastQueries), int(Qt::ImhNone));
-
- qApp->inputPanel()->update(Qt::ImQueryInput);
- QCOMPARE(m_platformInputContext.m_updateCallCount, 1);
- QCOMPARE(int(m_platformInputContext.m_lastQueries), int(Qt::ImQueryInput));
-
- qApp->inputPanel()->update(Qt::ImQueryAll);
- QCOMPARE(m_platformInputContext.m_updateCallCount, 2);
- QCOMPARE(int(m_platformInputContext.m_lastQueries), int(Qt::ImQueryAll));
-
- QCOMPARE(qApp->inputPanel()->keyboardRectangle(), QRectF(10, 20, 30, 40));
-
- // reset
- qApp->inputPanel()->setInputItem(0);
-}
-
-void tst_qinputpanel::query()
-{
- QInputMethodQueryEvent query(Qt::InputMethodQueries(Qt::ImPreferredLanguage | Qt::ImCursorRectangle));
- QGuiApplication::sendEvent(&m_inputItem, &query);
-
- QString language = query.value(Qt::ImPreferredLanguage).toString();
- QCOMPARE(language, QString("English"));
-
- QRect cursorRectangle = query.value(Qt::ImCursorRectangle).toRect();
- QCOMPARE(cursorRectangle, QRect(1,2,3,4));
-}
-
-void tst_qinputpanel::inputDirection()
-{
- QCOMPARE(m_platformInputContext.m_inputDirectionCallCount, 0);
- qApp->inputPanel()->inputDirection();
- QCOMPARE(m_platformInputContext.m_inputDirectionCallCount, 1);
-
- QCOMPARE(m_platformInputContext.m_localeCallCount, 0);
- qApp->inputPanel()->locale();
- QCOMPARE(m_platformInputContext.m_localeCallCount, 1);
-}
-
-QTEST_MAIN(tst_qinputpanel)
-#include "tst_qinputpanel.moc"
diff --git a/tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp b/tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp
index fcc30a7afe..eed7977c82 100644
--- a/tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp
+++ b/tests/auto/gui/kernel/qkeysequence/tst_qkeysequence.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -47,7 +47,7 @@
#include <QTranslator>
#include <QLibraryInfo>
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
#include <Carbon/Carbon.h>
struct MacSpecialKey {
int key;
@@ -144,7 +144,7 @@ private slots:
private:
QTranslator *ourTranslator;
QTranslator *qtTranslator;
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
static const QString MacCtrl;
static const QString MacMeta;
static const QString MacAlt;
@@ -154,7 +154,7 @@ private:
};
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
const QString tst_QKeySequence::MacCtrl = QString(QChar(0x2318));
const QString tst_QKeySequence::MacMeta = QString(QChar(0x2303));
const QString tst_QKeySequence::MacAlt = QString(QChar(0x2325));
@@ -195,7 +195,7 @@ void tst_QKeySequence::operatorQString_data()
QTest::newRow( "No modifier" ) << 0 << int(Qt::Key_Aring | Qt::UNICODE_ACCEL) << QString( "\x0c5" );
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
QTest::newRow( "Ctrl+Left" ) << int(Qt::CTRL) << int(Qt::Key_Left) << QString( "Ctrl+Left" );
QTest::newRow( "Ctrl+," ) << int(Qt::CTRL) << int(Qt::Key_Comma) << QString( "Ctrl+," );
QTest::newRow( "Alt+Left" ) << int(Qt::ALT) << int(Qt::Key_Left) << QString( "Alt+Left" );
@@ -339,7 +339,7 @@ void tst_QKeySequence::standardKeys_data()
QTest::newRow("zoomOut") << (int)QKeySequence::ZoomOut<< QString("CTRL+-");
QTest::newRow("whatsthis") << (int)QKeySequence::WhatsThis<< QString("SHIFT+F1");
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_MAC)
QTest::newRow("help") << (int)QKeySequence::HelpContents<< QString("Ctrl+?");
QTest::newRow("nextChild") << (int)QKeySequence::NextChild << QString("CTRL+}");
QTest::newRow("previousChild") << (int)QKeySequence::PreviousChild << QString("CTRL+{");
@@ -371,7 +371,7 @@ void tst_QKeySequence::keyBindings()
{
QList<QKeySequence> bindings = QKeySequence::keyBindings(QKeySequence::Copy);
QList<QKeySequence> expected;
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_MAC)
expected << QKeySequence("CTRL+C");
#elif defined Q_WS_X11
expected << QKeySequence("CTRL+C") << QKeySequence("F16") << QKeySequence("CTRL+INSERT");
@@ -402,7 +402,7 @@ void tst_QKeySequence::mnemonic_data()
void tst_QKeySequence::mnemonic()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QSKIP("mnemonics are not used on Mac OS X");
#endif
QFETCH(QString, string);
@@ -429,7 +429,7 @@ void tst_QKeySequence::toString_data()
QTest::addColumn<QString>("platformString");
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
QTest::newRow("Ctrl+Left") << QString("Ctrl+Left") << QString("Ctrl+Left") << QString("Ctrl+Left");
QTest::newRow("Alt+Left") << QString("Alt+Left") << QString("Alt+Left") << QString("Alt+Left");
QTest::newRow("Alt+Shift+Left") << QString("Alt+Shift+Left") << QString("Alt+Shift+Left") << QString("Alt+Shift+Left");
@@ -529,17 +529,46 @@ void tst_QKeySequence::parseString_data()
QTest::addColumn<QString>("strSequence");
QTest::addColumn<QKeySequence>("keycode");
+ // Valid
QTest::newRow("A") << "A" << QKeySequence(Qt::Key_A);
QTest::newRow("a") << "a" << QKeySequence(Qt::Key_A);
QTest::newRow("Ctrl+Left") << "Ctrl+Left" << QKeySequence(Qt::CTRL + Qt::Key_Left);
- QTest::newRow("Ctrl++") << "Ctrl++" << QKeySequence(Qt::CTRL + Qt::Key_Plus);
+ QTest::newRow("CTRL+LEFT") << "CTRL+LEFT" << QKeySequence(Qt::CTRL + Qt::Key_Left);
QTest::newRow("Meta+A") << "Meta+a" << QKeySequence(Qt::META + Qt::Key_A);
+ QTest::newRow("mEtA+A") << "mEtA+a" << QKeySequence(Qt::META + Qt::Key_A);
+ QTest::newRow("Ctrl++") << "Ctrl++" << QKeySequence(Qt::CTRL + Qt::Key_Plus);
+
+ // Invalid modifiers
QTest::newRow("Win+A") << "Win+a" << QKeySequence(Qt::Key_unknown);
- QTest::newRow("4+3=2") << "4+3=2" << QKeySequence(Qt::Key_unknown);
QTest::newRow("Super+Meta+A") << "Super+Meta+A" << QKeySequence(Qt::Key_unknown);
+
+ // Invalid Keys
QTest::newRow("Meta+Trolls") << "Meta+Trolls" << QKeySequence(Qt::Key_unknown);
+ QTest::newRow("Meta+Period") << "Meta+Period" << QKeySequence(Qt::Key_unknown);
+ QTest::newRow("Meta+Ypsilon") << "Meta+Ypsilon" << QKeySequence(Qt::Key_unknown);
+
+ // Garbage
+ QTest::newRow("4+3=2") << "4+3=2" << QKeySequence(Qt::Key_unknown);
QTest::newRow("Alabama") << "Alabama" << QKeySequence(Qt::Key_unknown);
QTest::newRow("Simon+G") << "Simon+G" << QKeySequence(Qt::Key_unknown);
+ QTest::newRow("Shift+++2") << "Shift+++2" << QKeySequence(Qt::Key_unknown);
+
+ // Wrong order
+ QTest::newRow("A+Meta") << "a+Meta" << QKeySequence(Qt::Key_unknown);
+ QTest::newRow("Meta+++Shift") << "Meta+++Shift" << QKeySequence(Qt::Key_unknown);
+ QTest::newRow("Meta+a+Shift") << "Meta+a+Shift" << QKeySequence(Qt::Key_unknown);
+
+ // Only Modifiers - currently not supported
+ //QTest::newRow("Meta+Shift") << "Meta+Shift" << QKeySequence(Qt::META + Qt::SHIFT);
+ //QTest::newRow("Ctrl") << "Ctrl" << QKeySequence(Qt::CTRL);
+ //QTest::newRow("Shift") << "Shift" << QKeySequence(Qt::SHIFT);
+
+ // Only Keys
+ QTest::newRow("a") << "a" << QKeySequence(Qt::Key_A);
+ QTest::newRow("A") << "A" << QKeySequence(Qt::Key_A);
+
+ // Incomplete
+ QTest::newRow("Meta+Shift+") << "Meta+Shift+" << QKeySequence(Qt::Key_unknown);
}
void tst_QKeySequence::parseString()
@@ -608,7 +637,7 @@ void tst_QKeySequence::translated()
{
QFETCH(QString, transKey);
QFETCH(QString, compKey);
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QSKIP("No need to translate modifiers on Mac OS X");
#elif defined(Q_OS_WINCE)
QSKIP("No need to translate modifiers on WinCE");
diff --git a/tests/auto/gui/kernel/qmouseevent/tst_qmouseevent.cpp b/tests/auto/gui/kernel/qmouseevent/tst_qmouseevent.cpp
index aca3ffc9cb..d8f1f0640e 100644
--- a/tests/auto/gui/kernel/qmouseevent/tst_qmouseevent.cpp
+++ b/tests/auto/gui/kernel/qmouseevent/tst_qmouseevent.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/kernel/qmouseevent_modal/tst_qmouseevent_modal.cpp b/tests/auto/gui/kernel/qmouseevent_modal/tst_qmouseevent_modal.cpp
index ce006eaa99..d2627fe378 100644
--- a/tests/auto/gui/kernel/qmouseevent_modal/tst_qmouseevent_modal.cpp
+++ b/tests/auto/gui/kernel/qmouseevent_modal/tst_qmouseevent_modal.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/kernel/qpalette/tst_qpalette.cpp b/tests/auto/gui/kernel/qpalette/tst_qpalette.cpp
index 5474c4097d..cc46831965 100644
--- a/tests/auto/gui/kernel/qpalette/tst_qpalette.cpp
+++ b/tests/auto/gui/kernel/qpalette/tst_qpalette.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/kernel/qscreen/tst_qscreen.cpp b/tests/auto/gui/kernel/qscreen/tst_qscreen.cpp
index ab798a7351..475b6ca2a8 100644
--- a/tests/auto/gui/kernel/qscreen/tst_qscreen.cpp
+++ b/tests/auto/gui/kernel/qscreen/tst_qscreen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -90,6 +90,11 @@ void tst_QScreen::angleBetween_data()
<< uint(Qt::InvertedLandscapeOrientation)
<< uint(Qt::LandscapeOrientation)
<< 180;
+
+ QTest::newRow("Landscape Primary")
+ << uint(Qt::LandscapeOrientation)
+ << uint(Qt::PrimaryOrientation)
+ << QGuiApplication::primaryScreen()->angleBetween(Qt::LandscapeOrientation, QGuiApplication::primaryScreen()->primaryOrientation());
}
void tst_QScreen::angleBetween()
@@ -101,8 +106,8 @@ void tst_QScreen::angleBetween()
Qt::ScreenOrientation a = Qt::ScreenOrientation(oa);
Qt::ScreenOrientation b = Qt::ScreenOrientation(ob);
- QCOMPARE(QScreen::angleBetween(a, b), expected);
- QCOMPARE(QScreen::angleBetween(b, a), (360 - expected) % 360);
+ QCOMPARE(QGuiApplication::primaryScreen()->angleBetween(a, b), expected);
+ QCOMPARE(QGuiApplication::primaryScreen()->angleBetween(b, a), (360 - expected) % 360);
}
void tst_QScreen::transformBetween_data()
@@ -149,6 +154,12 @@ void tst_QScreen::transformBetween_data()
<< uint(Qt::LandscapeOrientation)
<< rect
<< QTransform(-1, 0, 0, -1, rect.width(), rect.height());
+
+ QTest::newRow("Landscape Primary")
+ << uint(Qt::LandscapeOrientation)
+ << uint(Qt::PrimaryOrientation)
+ << rect
+ << QGuiApplication::primaryScreen()->transformBetween(Qt::LandscapeOrientation, QGuiApplication::primaryScreen()->primaryOrientation(), rect);
}
void tst_QScreen::transformBetween()
@@ -161,7 +172,7 @@ void tst_QScreen::transformBetween()
Qt::ScreenOrientation a = Qt::ScreenOrientation(oa);
Qt::ScreenOrientation b = Qt::ScreenOrientation(ob);
- QCOMPARE(QScreen::transformBetween(a, b, rect), expected);
+ QCOMPARE(QGuiApplication::primaryScreen()->transformBetween(a, b, rect), expected);
}
void tst_QScreen::orientationChange()
@@ -169,10 +180,10 @@ void tst_QScreen::orientationChange()
QScreen *screen = QGuiApplication::primaryScreen();
QWindowSystemInterface::handleScreenOrientationChange(screen, Qt::LandscapeOrientation);
- QTRY_COMPARE(screen->currentOrientation(), Qt::LandscapeOrientation);
+ QTRY_COMPARE(screen->orientation(), Qt::LandscapeOrientation);
QWindowSystemInterface::handleScreenOrientationChange(screen, Qt::PortraitOrientation);
- QTRY_COMPARE(screen->currentOrientation(), Qt::PortraitOrientation);
+ QTRY_COMPARE(screen->orientation(), Qt::PortraitOrientation);
}
#include <tst_qscreen.moc>
diff --git a/tests/auto/gui/kernel/qshortcut/tst_qshortcut.cpp b/tests/auto/gui/kernel/qshortcut/tst_qshortcut.cpp
index 228b73414e..97c749e5ba 100644
--- a/tests/auto/gui/kernel/qshortcut/tst_qshortcut.cpp
+++ b/tests/auto/gui/kernel/qshortcut/tst_qshortcut.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp b/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp
index 95e644987f..391600dd57 100644
--- a/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp
+++ b/tests/auto/gui/kernel/qtouchevent/tst_qtouchevent.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the $MODULE$ of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp
index 77fffef13a..d7c153dca1 100644
--- a/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp
+++ b/tests/auto/gui/kernel/qwindow/tst_qwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -57,6 +57,8 @@ private slots:
void touchToMouseTranslation();
void mouseToTouchTranslation();
void mouseToTouchLoop();
+ void orientation();
+ void close();
void initTestCase()
{
touchDevice = new QTouchDevice;
@@ -246,10 +248,12 @@ public:
keyReleaseCode = event->key();
}
void mousePressEvent(QMouseEvent *event) {
- if (ignoreMouse)
+ if (ignoreMouse) {
event->ignore();
- else
+ } else {
mousePressButton = event->button();
+ mousePressScreenPos = event->screenPos();
+ }
}
void mouseReleaseEvent(QMouseEvent *event) {
if (ignoreMouse)
@@ -257,6 +261,14 @@ public:
else
mouseReleaseButton = event->button();
}
+ void mouseMoveEvent(QMouseEvent *event) {
+ if (ignoreMouse) {
+ event->ignore();
+ } else {
+ mouseMoveButton = event->button();
+ mouseMoveScreenPos = event->screenPos();
+ }
+ }
void touchEvent(QTouchEvent *event) {
if (ignoreTouch) {
event->ignore();
@@ -285,7 +297,8 @@ public:
}
int keyPressCode, keyReleaseCode;
- int mousePressButton, mouseReleaseButton;
+ int mousePressButton, mouseReleaseButton, mouseMoveButton;
+ QPointF mousePressScreenPos, mouseMoveScreenPos;
int touchPressedCount, touchReleasedCount;
bool ignoreMouse, ignoreTouch;
@@ -339,12 +352,25 @@ void tst_QWindow::touchToMouseTranslation()
QList<QWindowSystemInterface::TouchPoint> points;
QWindowSystemInterface::TouchPoint tp1, tp2;
+ const QRectF pressArea(101, 102, 4, 4);
+ const QRectF moveArea(105, 108, 4, 4);
tp1.id = 1;
tp1.state = Qt::TouchPointPressed;
+ tp1.area = pressArea;
tp2.id = 2;
tp2.state = Qt::TouchPointPressed;
points << tp1 << tp2;
QWindowSystemInterface::handleTouchEvent(&window, touchDevice, points);
+ // Now an update but with changed list order. The mouse event should still
+ // be generated from the point with id 1.
+ tp1.id = 2;
+ tp1.state = Qt::TouchPointStationary;
+ tp2.id = 1;
+ tp2.state = Qt::TouchPointMoved;
+ tp2.area = moveArea;
+ points.clear();
+ points << tp1 << tp2;
+ QWindowSystemInterface::handleTouchEvent(&window, touchDevice, points);
points[0].state = Qt::TouchPointReleased;
points[1].state = Qt::TouchPointReleased;
QWindowSystemInterface::handleTouchEvent(&window, touchDevice, points);
@@ -352,6 +378,8 @@ void tst_QWindow::touchToMouseTranslation()
QTRY_COMPARE(window.mousePressButton, int(Qt::LeftButton));
QTRY_COMPARE(window.mouseReleaseButton, int(Qt::LeftButton));
+ QTRY_COMPARE(window.mousePressScreenPos, pressArea.center());
+ QTRY_COMPARE(window.mouseMoveScreenPos, moveArea.center());
window.mousePressButton = 0;
window.mouseReleaseButton = 0;
@@ -455,5 +483,41 @@ void tst_QWindow::mouseToTouchLoop()
qApp->setAttribute(Qt::AA_SynthesizeMouseForUnhandledTouchEvents, false);
}
+void tst_QWindow::orientation()
+{
+ QWindow window;
+ window.setGeometry(80, 80, 40, 40);
+ window.create();
+
+ window.reportContentOrientationChange(Qt::PortraitOrientation);
+ QCOMPARE(window.contentOrientation(), Qt::PortraitOrientation);
+
+ window.reportContentOrientationChange(Qt::PrimaryOrientation);
+ QCOMPARE(window.contentOrientation(), Qt::PrimaryOrientation);
+
+ QVERIFY(!window.requestWindowOrientation(Qt::LandscapeOrientation) || window.windowOrientation() == Qt::LandscapeOrientation);
+ QVERIFY(!window.requestWindowOrientation(Qt::PortraitOrientation) || window.windowOrientation() == Qt::PortraitOrientation);
+ QVERIFY(!window.requestWindowOrientation(Qt::PrimaryOrientation) || window.windowOrientation() == Qt::PrimaryOrientation);
+
+ QSignalSpy spy(&window, SIGNAL(contentOrientationChanged(Qt::ScreenOrientation)));
+ window.reportContentOrientationChange(Qt::LandscapeOrientation);
+ QCOMPARE(spy.count(), 1);
+}
+
+void tst_QWindow::close()
+{
+ QWindow a;
+ QWindow b;
+ QWindow c(&a);
+
+ a.show();
+ b.show();
+
+ // we can not close a non top level window
+ QVERIFY(!c.close());
+ QVERIFY(a.close());
+ QVERIFY(b.close());
+}
+
#include <tst_qwindow.moc>
QTEST_MAIN(tst_QWindow);
diff --git a/tests/auto/gui/math3d/qmatrixnxn/tst_qmatrixnxn.cpp b/tests/auto/gui/math3d/qmatrixnxn/tst_qmatrixnxn.cpp
index 2c006b224e..698470ac60 100644
--- a/tests/auto/gui/math3d/qmatrixnxn/tst_qmatrixnxn.cpp
+++ b/tests/auto/gui/math3d/qmatrixnxn/tst_qmatrixnxn.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/math3d/qquaternion/tst_qquaternion.cpp b/tests/auto/gui/math3d/qquaternion/tst_qquaternion.cpp
index 77bd22a676..1690afcac4 100644
--- a/tests/auto/gui/math3d/qquaternion/tst_qquaternion.cpp
+++ b/tests/auto/gui/math3d/qquaternion/tst_qquaternion.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/math3d/qvectornd/tst_qvectornd.cpp b/tests/auto/gui/math3d/qvectornd/tst_qvectornd.cpp
index 1ebad41466..067773074e 100644
--- a/tests/auto/gui/math3d/qvectornd/tst_qvectornd.cpp
+++ b/tests/auto/gui/math3d/qvectornd/tst_qvectornd.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/painting/qbrush/tst_qbrush.cpp b/tests/auto/gui/painting/qbrush/tst_qbrush.cpp
index e84cbb5c19..0ff90f69c3 100644
--- a/tests/auto/gui/painting/qbrush/tst_qbrush.cpp
+++ b/tests/auto/gui/painting/qbrush/tst_qbrush.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/painting/qcolor/tst_qcolor.cpp b/tests/auto/gui/painting/qcolor/tst_qcolor.cpp
index 00a393562a..94e74a52e6 100644
--- a/tests/auto/gui/painting/qcolor/tst_qcolor.cpp
+++ b/tests/auto/gui/painting/qcolor/tst_qcolor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/painting/qpaintengine/tst_qpaintengine.cpp b/tests/auto/gui/painting/qpaintengine/tst_qpaintengine.cpp
index 07ec8458af..9e30a85655 100644
--- a/tests/auto/gui/painting/qpaintengine/tst_qpaintengine.cpp
+++ b/tests/auto/gui/painting/qpaintengine/tst_qpaintengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/painting/qpainter/qpainter.pro b/tests/auto/gui/painting/qpainter/qpainter.pro
index 716d70c7f5..0209043d20 100644
--- a/tests/auto/gui/painting/qpainter/qpainter.pro
+++ b/tests/auto/gui/painting/qpainter/qpainter.pro
@@ -4,13 +4,7 @@ TARGET = tst_qpainter
QT += widgets widgets-private printsupport testlib
SOURCES += tst_qpainter.cpp
-wince* {
- addFiles.files = drawEllipse drawLine_rop_bitmap drawPixmap_rop drawPixmap_rop_bitmap task217400.png
- addFiles.path = .
- DEPLOYMENT += addFiles
- DEFINES += SRCDIR=\\\".\\\"
-} else {
- DEFINES += SRCDIR=\\\"$$PWD\\\"
-}
-
mac*:CONFIG+=insignificant_test
+
+TESTDATA += drawEllipse/* drawLine_rop_bitmap/* drawPixmap_rop/* drawPixmap_rop_bitmap/* \
+ task217400.png
diff --git a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
index d6511d4475..553e36a884 100644
--- a/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
+++ b/tests/auto/gui/painting/qpainter/tst_qpainter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -89,6 +89,7 @@ public:
public slots:
void init();
void cleanup();
+ void cleanupTestCase();
private slots:
void getSetCheck();
void drawPixmap_comp_data();
@@ -364,6 +365,13 @@ void tst_QPainter::cleanup()
{
}
+void tst_QPainter::cleanupTestCase()
+{
+ QFile::remove(QLatin1String("dest.png"));
+ QFile::remove(QLatin1String("expected.png"));
+ QFile::remove(QLatin1String("foo.png"));
+}
+
static const char* const maskSource_data[] = {
"16 13 6 1",
". c None",
@@ -453,7 +461,7 @@ QRgb qt_compose_alpha(QRgb source, QRgb dest)
*/
void tst_QPainter::drawPixmap_comp()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QSKIP("Mac has other ideas about alpha composition");
#endif
QFETCH(uint, dest);
@@ -1363,7 +1371,7 @@ void tst_QPainter::drawRoundRect()
QFETCH(QRect, rect);
QFETCH(bool, usePen);
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
if (QTest::currentDataTag() == QByteArray("rect(6, 12, 3, 14) with pen") ||
QTest::currentDataTag() == QByteArray("rect(6, 17, 3, 25) with pen") ||
QTest::currentDataTag() == QByteArray("rect(10, 6, 10, 3) with pen") ||
@@ -3108,7 +3116,7 @@ void tst_QPainter::drawImage_task217400()
{
QFETCH(QImage::Format, format);
- const QImage src = QImage(QString(SRCDIR) + "/task217400.png")
+ const QImage src = QImage(QFINDTESTDATA("task217400.png"))
.convertToFormat(format);
QVERIFY(!src.isNull());
diff --git a/tests/auto/gui/painting/qpainter/utils/createImages/main.cpp b/tests/auto/gui/painting/qpainter/utils/createImages/main.cpp
index 4603d9d613..14b1ddbf04 100644
--- a/tests/auto/gui/painting/qpainter/utils/createImages/main.cpp
+++ b/tests/auto/gui/painting/qpainter/utils/createImages/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/painting/qpainterpath/tst_qpainterpath.cpp b/tests/auto/gui/painting/qpainterpath/tst_qpainterpath.cpp
index 5d48113aa8..bcd009dfb4 100644
--- a/tests/auto/gui/painting/qpainterpath/tst_qpainterpath.cpp
+++ b/tests/auto/gui/painting/qpainterpath/tst_qpainterpath.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -54,7 +54,8 @@ class tst_QPainterPath : public QObject
Q_OBJECT
public:
-
+public slots:
+ void cleanupTestCase();
private slots:
void getSetCheck();
void swap();
@@ -115,6 +116,11 @@ private slots:
void lineWithinBounds();
};
+void tst_QPainterPath::cleanupTestCase()
+{
+ QFile::remove(QLatin1String("data"));
+}
+
// Testing get/set functions
void tst_QPainterPath::getSetCheck()
{
diff --git a/tests/auto/gui/painting/qpainterpathstroker/tst_qpainterpathstroker.cpp b/tests/auto/gui/painting/qpainterpathstroker/tst_qpainterpathstroker.cpp
index 371a142cc3..0b19615069 100644
--- a/tests/auto/gui/painting/qpainterpathstroker/tst_qpainterpathstroker.cpp
+++ b/tests/auto/gui/painting/qpainterpathstroker/tst_qpainterpathstroker.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/painting/qpathclipper/pathcompare.h b/tests/auto/gui/painting/qpathclipper/pathcompare.h
index bb4c00222a..0ac33a7940 100644
--- a/tests/auto/gui/painting/qpathclipper/pathcompare.h
+++ b/tests/auto/gui/painting/qpathclipper/pathcompare.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/painting/qpathclipper/paths.cpp b/tests/auto/gui/painting/qpathclipper/paths.cpp
index f4e63a200f..853548ac36 100644
--- a/tests/auto/gui/painting/qpathclipper/paths.cpp
+++ b/tests/auto/gui/painting/qpathclipper/paths.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/painting/qpathclipper/paths.h b/tests/auto/gui/painting/qpathclipper/paths.h
index e270574304..60b32c64d7 100644
--- a/tests/auto/gui/painting/qpathclipper/paths.h
+++ b/tests/auto/gui/painting/qpathclipper/paths.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/painting/qpathclipper/tst_qpathclipper.cpp b/tests/auto/gui/painting/qpathclipper/tst_qpathclipper.cpp
index 1e6bb20614..5c5ab53bf2 100644
--- a/tests/auto/gui/painting/qpathclipper/tst_qpathclipper.cpp
+++ b/tests/auto/gui/painting/qpathclipper/tst_qpathclipper.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/painting/qpen/tst_qpen.cpp b/tests/auto/gui/painting/qpen/tst_qpen.cpp
index 3da7294e9a..c3411bd981 100644
--- a/tests/auto/gui/painting/qpen/tst_qpen.cpp
+++ b/tests/auto/gui/painting/qpen/tst_qpen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/painting/qpolygon/tst_qpolygon.cpp b/tests/auto/gui/painting/qpolygon/tst_qpolygon.cpp
index 46a8f80f23..5e5f661a09 100644
--- a/tests/auto/gui/painting/qpolygon/tst_qpolygon.cpp
+++ b/tests/auto/gui/painting/qpolygon/tst_qpolygon.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/painting/qprinter/tst_qprinter.cpp b/tests/auto/gui/painting/qprinter/tst_qprinter.cpp
index dd33030d7e..3460ad702b 100644
--- a/tests/auto/gui/painting/qprinter/tst_qprinter.cpp
+++ b/tests/auto/gui/painting/qprinter/tst_qprinter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,6 +60,23 @@ Q_DECLARE_METATYPE(QRect)
QT_FORWARD_DECLARE_CLASS(QPrinter)
+// Helper class to make sure temp files are cleaned up after test complete
+class TempFileCleanup
+{
+public:
+ TempFileCleanup(const QString &file)
+ : m_file(file)
+ {
+ }
+
+ ~TempFileCleanup()
+ {
+ QFile::remove(m_file);
+ }
+private:
+ QString m_file;
+};
+
class tst_QPrinter : public QObject
{
Q_OBJECT
@@ -288,6 +305,7 @@ void tst_QPrinter::testPageRectAndPaperRect()
QPrinter printer(QPrinter::HighResolution);
printer.setOrientation(QPrinter::Orientation(orientation));
printer.setOutputFileName("silly");
+ TempFileCleanup tmpFile("silly");
QRect pageRect = doPaperRect ? printer.paperRect() : printer.pageRect();
float inchesX = float(pageRect.width()) / float(printer.resolution());
@@ -376,6 +394,7 @@ void tst_QPrinter::testMargins()
if (painter)
delete painter;
+ QFile::remove("silly");
}
void tst_QPrinter::testNonExistentPrinter()
@@ -505,6 +524,7 @@ void tst_QPrinter::outputFormatFromSuffix()
QPrinter p;
QVERIFY(p.outputFormat() == QPrinter::NativeFormat);
p.setOutputFileName("test.pdf");
+ TempFileCleanup tmpFile("test.pdf");
QVERIFY(p.outputFormat() == QPrinter::PdfFormat);
p.setOutputFileName(QString());
QVERIFY(p.outputFormat() == QPrinter::NativeFormat);
@@ -865,6 +885,7 @@ void tst_QPrinter::errorReporting()
QCOMPARE(painter.begin(&p), false); // it should check the output file is writable
#endif
p.setOutputFileName("test.pdf");
+ TempFileCleanup tmpFile("test.pdf");
QCOMPARE(painter.begin(&p), true); // it should check the output
QCOMPARE(p.isValid(), true);
painter.end();
@@ -891,6 +912,7 @@ void tst_QPrinter::printDialogCompleter()
{
QPrintDialog dialog;
dialog.printer()->setOutputFileName("file.pdf");
+ TempFileCleanup tmpFile("file.pdf");
dialog.setEnabledOptions(QAbstractPrintDialog::PrintToFile);
dialog.show();
@@ -917,6 +939,9 @@ static void printPage(QPainter *painter)
void tst_QPrinter::taskQTBUG4497_reusePrinterOnDifferentFiles()
{
+ TempFileCleanup tmpFile1("out1.ps");
+ TempFileCleanup tmpFile2("out2.ps");
+
QPrinter printer;
{
@@ -978,6 +1003,7 @@ void tst_QPrinter::testPdfTitle()
painter.begin(&printer);
painter.end();
}
+ TempFileCleanup tmpFile("file.pdf");
QFile file("file.pdf");
QVERIFY(file.open(QIODevice::ReadOnly));
// The we expect the title to appear in the PDF as:
diff --git a/tests/auto/gui/painting/qprinterinfo/tst_qprinterinfo.cpp b/tests/auto/gui/painting/qprinterinfo/tst_qprinterinfo.cpp
index 6ffdc63e6c..d312469449 100644
--- a/tests/auto/gui/painting/qprinterinfo/tst_qprinterinfo.cpp
+++ b/tests/auto/gui/painting/qprinterinfo/tst_qprinterinfo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -90,7 +90,7 @@ void tst_QPrinterInfo::macFixNameFormat(QString *printerName)
{
// Modify the format of the printer name to match Qt, lpstat returns
// foo___domain_no, Qt returns foo @ domain.no
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
printerName->replace(QLatin1String("___"), QLatin1String(" @ "));
printerName->replace(QLatin1String("_"), QLatin1String("."));
#else
diff --git a/tests/auto/gui/painting/qregion/tst_qregion.cpp b/tests/auto/gui/painting/qregion/tst_qregion.cpp
index c9ad8e00ab..863690fd78 100644
--- a/tests/auto/gui/painting/qregion/tst_qregion.cpp
+++ b/tests/auto/gui/painting/qregion/tst_qregion.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/painting/qtransform/tst_qtransform.cpp b/tests/auto/gui/painting/qtransform/tst_qtransform.cpp
index b4e1b8ffb8..c04948899c 100644
--- a/tests/auto/gui/painting/qtransform/tst_qtransform.cpp
+++ b/tests/auto/gui/painting/qtransform/tst_qtransform.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/painting/qwmatrix/tst_qwmatrix.cpp b/tests/auto/gui/painting/qwmatrix/tst_qwmatrix.cpp
index 725c374708..f4cf586da1 100644
--- a/tests/auto/gui/painting/qwmatrix/tst_qwmatrix.cpp
+++ b/tests/auto/gui/painting/qwmatrix/tst_qwmatrix.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/qopengl/tst_qopengl.cpp b/tests/auto/gui/qopengl/tst_qopengl.cpp
index 357b7359e4..e8374b0cae 100644
--- a/tests/auto/gui/qopengl/tst_qopengl.cpp
+++ b/tests/auto/gui/qopengl/tst_qopengl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -130,6 +130,7 @@ struct SharedResource : public QOpenGLSharedResource
void tst_QOpenGL::sharedResourceCleanup()
{
QWindow window;
+ window.setSurfaceType(QWindow::OpenGLSurface);
window.setGeometry(0, 0, 10, 10);
window.create();
@@ -152,6 +153,7 @@ void tst_QOpenGL::sharedResourceCleanup()
QOpenGLContext *ctx2 = new QOpenGLContext;
ctx2->setShareContext(ctx);
ctx2->create();
+
delete ctx;
resource->free();
@@ -191,6 +193,7 @@ void tst_QOpenGL::sharedResourceCleanup()
void tst_QOpenGL::multiGroupSharedResourceCleanup()
{
QWindow window;
+ window.setSurfaceType(QWindow::OpenGLSurface);
window.setGeometry(0, 0, 10, 10);
window.create();
@@ -212,6 +215,7 @@ void tst_QOpenGL::multiGroupSharedResourceCleanup()
void tst_QOpenGL::multiGroupSharedResourceCleanupCustom()
{
QWindow window;
+ window.setSurfaceType(QWindow::OpenGLSurface);
window.setGeometry(0, 0, 10, 10);
window.create();
@@ -348,6 +352,7 @@ void qt_opengl_check_test_pattern(const QImage& img)
void tst_QOpenGL::fboSimpleRendering()
{
QWindow window;
+ window.setSurfaceType(QWindow::OpenGLSurface);
window.setGeometry(0, 0, 10, 10);
window.create();
QOpenGLContext ctx;
@@ -391,6 +396,7 @@ void tst_QOpenGL::fboRendering()
#endif
QWindow window;
+ window.setSurfaceType(QWindow::OpenGLSurface);
window.setGeometry(0, 0, 10, 10);
window.create();
QOpenGLContext ctx;
@@ -430,6 +436,7 @@ void tst_QOpenGL::fboRendering()
void tst_QOpenGL::fboHandleNulledAfterContextDestroyed()
{
QWindow window;
+ window.setSurfaceType(QWindow::OpenGLSurface);
window.setGeometry(0, 0, 10, 10);
window.create();
@@ -459,6 +466,7 @@ void tst_QOpenGL::openGLPaintDevice()
#endif
QWindow window;
+ window.setSurfaceType(QWindow::OpenGLSurface);
window.setGeometry(0, 0, 128, 128);
window.create();
@@ -506,6 +514,7 @@ void tst_QOpenGL::openGLPaintDevice()
void tst_QOpenGL::aboutToBeDestroyed()
{
QWindow window;
+ window.setSurfaceType(QWindow::OpenGLSurface);
window.setGeometry(0, 0, 128, 128);
window.create();
diff --git a/tests/auto/gui/text/qabstracttextdocumentlayout/tst_qabstracttextdocumentlayout.cpp b/tests/auto/gui/text/qabstracttextdocumentlayout/tst_qabstracttextdocumentlayout.cpp
index d6fff734c0..c609b4a1ed 100644
--- a/tests/auto/gui/text/qabstracttextdocumentlayout/tst_qabstracttextdocumentlayout.cpp
+++ b/tests/auto/gui/text/qabstracttextdocumentlayout/tst_qabstracttextdocumentlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp b/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp
index 4f1deec996..7eda35efb8 100644
--- a/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp
+++ b/tests/auto/gui/text/qcssparser/tst_qcssparser.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/text/qfont/tst_qfont.cpp b/tests/auto/gui/text/qfont/tst_qfont.cpp
index c3d41a27bf..ead4c8e71a 100644
--- a/tests/auto/gui/text/qfont/tst_qfont.cpp
+++ b/tests/auto/gui/text/qfont/tst_qfont.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -613,7 +613,7 @@ void tst_QFont::lastResortFont()
void tst_QFont::styleName()
{
-#if !defined(Q_WS_MAC)
+#if !defined(Q_OS_MAC)
QSKIP("Only tested on Mac");
#else
QFont font("Helvetica Neue");
diff --git a/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp b/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp
index e7bbfbceff..7a1cc53c57 100644
--- a/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp
+++ b/tests/auto/gui/text/qfontdatabase/tst_qfontdatabase.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -63,7 +63,7 @@ private slots:
void fixedPitch_data();
void fixedPitch();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
void trickyFonts_data();
void trickyFonts();
#endif
@@ -132,7 +132,7 @@ void tst_QFontDatabase::fixedPitch_data()
QTest::newRow( "Andale Mono" ) << QString( "Andale Mono" ) << true;
QTest::newRow( "Courier" ) << QString( "Courier" ) << true;
QTest::newRow( "Courier New" ) << QString( "Courier New" ) << true;
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
QTest::newRow( "Script" ) << QString( "Script" ) << false;
QTest::newRow( "Lucida Console" ) << QString( "Lucida Console" ) << true;
QTest::newRow( "DejaVu Sans" ) << QString( "DejaVu Sans" ) << false;
@@ -162,7 +162,7 @@ void tst_QFontDatabase::fixedPitch()
QCOMPARE(fi.fixedPitch(), fixedPitch);
}
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
void tst_QFontDatabase::trickyFonts_data()
{
QTest::addColumn<QString>("font");
@@ -247,7 +247,7 @@ void tst_QFontDatabase::addAppFont()
#endif
QCOMPARE(fontDbChangedSpy.count(), 1);
// addApplicationFont is supported on Mac, don't skip the test if it breaks.
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
if (id == -1)
QSKIP("Skip the test since app fonts are not supported on this system");
#endif
diff --git a/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp b/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp
index bc858bf38a..0b5486dd5a 100644
--- a/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp
+++ b/tests/auto/gui/text/qfontmetrics/tst_qfontmetrics.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/text/qglyphrun/tst_qglyphrun.cpp b/tests/auto/gui/text/qglyphrun/tst_qglyphrun.cpp
index a4e5c63e6d..8ef030ae60 100644
--- a/tests/auto/gui/text/qglyphrun/tst_qglyphrun.cpp
+++ b/tests/auto/gui/text/qglyphrun/tst_qglyphrun.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/text/qrawfont/tst_qrawfont.cpp b/tests/auto/gui/text/qrawfont/tst_qrawfont.cpp
index a0cda39c27..99e53f3261 100644
--- a/tests/auto/gui/text/qrawfont/tst_qrawfont.cpp
+++ b/tests/auto/gui/text/qrawfont/tst_qrawfont.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -98,9 +98,7 @@ private slots:
void rawFontSetPixelSize_data();
void rawFontSetPixelSize();
-#if defined(Q_WS_X11) || defined(Q_WS_MAC)
void multipleRawFontsFromData();
-#endif
private:
QString testFont;
QString testFontBoldItalic;
@@ -867,7 +865,6 @@ void tst_QRawFont::rawFontSetPixelSize()
QCOMPARE(rawFont.pixelSize(), 24.0);
}
-#if defined(Q_WS_X11) || defined(Q_WS_MAC)
void tst_QRawFont::multipleRawFontsFromData()
{
QFile file(testFont);
@@ -884,7 +881,6 @@ void tst_QRawFont::multipleRawFontsFromData()
QVERIFY(testFont.familyName() != (testFontBoldItalic.familyName())
|| testFont.styleName() != (testFontBoldItalic.styleName()));
}
-#endif
#endif // QT_NO_RAWFONT
diff --git a/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp b/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp
index b0a66eab07..66145f2dcf 100644
--- a/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp
+++ b/tests/auto/gui/text/qstatictext/tst_qstatictext.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp b/tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp
index 0358b5d471..5774be6830 100644
--- a/tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp
+++ b/tests/auto/gui/text/qsyntaxhighlighter/tst_qsyntaxhighlighter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/text/qtextblock/tst_qtextblock.cpp b/tests/auto/gui/text/qtextblock/tst_qtextblock.cpp
index 9489a2e90e..74ec9db6de 100644
--- a/tests/auto/gui/text/qtextblock/tst_qtextblock.cpp
+++ b/tests/auto/gui/text/qtextblock/tst_qtextblock.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/text/qtextcursor/tst_qtextcursor.cpp b/tests/auto/gui/text/qtextcursor/tst_qtextcursor.cpp
index 09b9a06a1d..bff014e424 100644
--- a/tests/auto/gui/text/qtextcursor/tst_qtextcursor.cpp
+++ b/tests/auto/gui/text/qtextcursor/tst_qtextcursor.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,6 +50,7 @@
#include <qabstracttextdocumentlayout.h>
#include <qtextlayout.h>
#include <qtextcursor.h>
+#include <qtextobject.h>
#include <qdebug.h>
QT_FORWARD_DECLARE_CLASS(QTextDocument)
@@ -152,6 +153,8 @@ private slots:
void cursorPositionWithBlockUndoAndRedo2();
void cursorPositionWithBlockUndoAndRedo3();
+ void joinNonEmptyRemovedBlockUserState();
+
private:
int blockCount();
@@ -1976,5 +1979,20 @@ void tst_QTextCursor::cursorPositionWithBlockUndoAndRedo3()
QCOMPARE(cursor.position(), cursorPositionBefore);
}
+void tst_QTextCursor::joinNonEmptyRemovedBlockUserState()
+{
+ cursor.insertText("Hello");
+ cursor.insertBlock();
+ cursor.insertText("World");
+ cursor.block().setUserState(10);
+
+ cursor.movePosition(QTextCursor::EndOfBlock);
+ cursor.movePosition(QTextCursor::PreviousBlock, QTextCursor::KeepAnchor);
+ cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
+ cursor.removeSelectedText();
+
+ QCOMPARE(cursor.block().userState(), 10);
+}
+
QTEST_MAIN(tst_QTextCursor)
#include "tst_qtextcursor.moc"
diff --git a/tests/auto/gui/text/qtextdocument/common.h b/tests/auto/gui/text/qtextdocument/common.h
index 081c71ea13..0841d7cd6a 100644
--- a/tests/auto/gui/text/qtextdocument/common.h
+++ b/tests/auto/gui/text/qtextdocument/common.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp
index a84024ceab..c2ae853a92 100644
--- a/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp
+++ b/tests/auto/gui/text/qtextdocument/tst_qtextdocument.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -76,6 +76,7 @@ public:
public slots:
void init();
void cleanup();
+ void cleanupTestCase();
private slots:
void getSetCheck();
void isEmpty();
@@ -231,7 +232,6 @@ tst_QTextDocument::tst_QTextDocument()
tst_QTextDocument::~tst_QTextDocument()
{
- QFile::remove(QLatin1String("foo.png"));
}
void tst_QTextDocument::init()
@@ -258,6 +258,11 @@ void tst_QTextDocument::cleanup()
doc = 0;
}
+void tst_QTextDocument::cleanupTestCase()
+{
+ QFile::remove(QLatin1String("foo.png"));
+}
+
void tst_QTextDocument::isEmpty()
{
QVERIFY(doc->isEmpty());
diff --git a/tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp b/tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp
index 63a67a0c10..33293400c2 100644
--- a/tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp
+++ b/tests/auto/gui/text/qtextdocumentfragment/tst_qtextdocumentfragment.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/text/qtextdocumentlayout/tst_qtextdocumentlayout.cpp b/tests/auto/gui/text/qtextdocumentlayout/tst_qtextdocumentlayout.cpp
index 91da86d3d1..20b72ffa1b 100644
--- a/tests/auto/gui/text/qtextdocumentlayout/tst_qtextdocumentlayout.cpp
+++ b/tests/auto/gui/text/qtextdocumentlayout/tst_qtextdocumentlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,6 +60,7 @@ public:
public slots:
void init();
void cleanup();
+ void cleanupTestCase();
private slots:
void defaultPageSizeHandling();
@@ -85,6 +86,14 @@ void tst_QTextDocumentLayout::cleanup()
doc = 0;
}
+void tst_QTextDocumentLayout::cleanupTestCase()
+{
+ if (qgetenv("QTEST_KEEP_IMAGEDATA").toInt() == 0) {
+ QFile::remove(QLatin1String("expected.png"));
+ QFile::remove(QLatin1String("img.png"));
+ }
+}
+
void tst_QTextDocumentLayout::defaultPageSizeHandling()
{
QAbstractTextDocumentLayout *layout = doc->documentLayout();
diff --git a/tests/auto/gui/text/qtextformat/tst_qtextformat.cpp b/tests/auto/gui/text/qtextformat/tst_qtextformat.cpp
index 166b5d7c82..84539b86cc 100644
--- a/tests/auto/gui/text/qtextformat/tst_qtextformat.cpp
+++ b/tests/auto/gui/text/qtextformat/tst_qtextformat.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp
index e816b04153..e7435743e5 100644
--- a/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp
+++ b/tests/auto/gui/text/qtextlayout/tst_qtextlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -300,7 +300,7 @@ void tst_QTextLayout::simpleBoundingRect()
void tst_QTextLayout::threeLineBoundingRect()
{
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_MAC)
QSKIP("QTestFontEngine on the mac does not support logclusters at the moment");
#endif
/* stricter check. break text into three lines */
@@ -419,7 +419,7 @@ void tst_QTextLayout::forcedBreaks()
void tst_QTextLayout::breakAny()
{
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_MAC)
QSKIP("QTestFontEngine on the mac does not support logclusters at the moment");
#endif
QString text = "ABCD";
@@ -461,7 +461,7 @@ void tst_QTextLayout::breakAny()
void tst_QTextLayout::noWrap()
{
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_MAC)
QSKIP("QTestFontEngine on the mac does not support logclusters at the moment");
#endif
QString text = "AB CD";
@@ -605,7 +605,7 @@ void tst_QTextLayout::charWordStopOnLineSeparator()
void tst_QTextLayout::xToCursorAtEndOfLine()
{
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_MAC)
QSKIP("QTestFontEngine on the mac does not support logclusters at the moment");
#endif
QString text = "FirstLine SecondLine";
@@ -667,7 +667,7 @@ void tst_QTextLayout::charStopForSurrogatePairs()
void tst_QTextLayout::tabStops()
{
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_MAC)
QSKIP("QTestFontEngine on the mac does not support logclusters at the moment");
#endif
QString txt("Hello there\tworld");
@@ -1461,7 +1461,7 @@ void tst_QTextLayout::textWidthWithLineSeparator()
void tst_QTextLayout::cursorInLigatureWithMultipleLines()
{
-#if !defined(Q_WS_MAC)
+#if !defined(Q_OS_MAC)
QSKIP("This test can only be run on Mac");
#endif
QTextLayout layout("first line finish", QFont("Times", 20));
@@ -1477,7 +1477,7 @@ void tst_QTextLayout::cursorInLigatureWithMultipleLines()
void tst_QTextLayout::xToCursorForLigatures()
{
-#if !defined(Q_WS_MAC)
+#if !defined(Q_OS_MAC)
QSKIP("This test can only be run on Mac");
#endif
QTextLayout layout("fi", QFont("Times", 20));
@@ -1501,7 +1501,7 @@ void tst_QTextLayout::xToCursorForLigatures()
void tst_QTextLayout::cursorInNonStopChars()
{
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_MAC)
QSKIP("This test can not be run on Mac");
#endif
QTextLayout layout(QString::fromUtf8("\xE0\xA4\xA4\xE0\xA5\x8D\xE0\xA4\xA8"));
diff --git a/tests/auto/gui/text/qtextlist/tst_qtextlist.cpp b/tests/auto/gui/text/qtextlist/tst_qtextlist.cpp
index 810c416875..79d3d8454b 100644
--- a/tests/auto/gui/text/qtextlist/tst_qtextlist.cpp
+++ b/tests/auto/gui/text/qtextlist/tst_qtextlist.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/text/qtextobject/tst_qtextobject.cpp b/tests/auto/gui/text/qtextobject/tst_qtextobject.cpp
index b621763cea..7b6f155d7a 100644
--- a/tests/auto/gui/text/qtextobject/tst_qtextobject.cpp
+++ b/tests/auto/gui/text/qtextobject/tst_qtextobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/text/qtextodfwriter/tst_qtextodfwriter.cpp b/tests/auto/gui/text/qtextodfwriter/tst_qtextodfwriter.cpp
index 49d86a2c4b..67be46dff4 100644
--- a/tests/auto/gui/text/qtextodfwriter/tst_qtextodfwriter.cpp
+++ b/tests/auto/gui/text/qtextodfwriter/tst_qtextodfwriter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/text/qtextpiecetable/tst_qtextpiecetable.cpp b/tests/auto/gui/text/qtextpiecetable/tst_qtextpiecetable.cpp
index b74bc3daf8..6fb376c72e 100644
--- a/tests/auto/gui/text/qtextpiecetable/tst_qtextpiecetable.cpp
+++ b/tests/auto/gui/text/qtextpiecetable/tst_qtextpiecetable.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/text/qtextscriptengine/generate/main.cpp b/tests/auto/gui/text/qtextscriptengine/generate/main.cpp
index 5bb13232ca..974a15450a 100644
--- a/tests/auto/gui/text/qtextscriptengine/generate/main.cpp
+++ b/tests/auto/gui/text/qtextscriptengine/generate/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp b/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp
index 638f13aea2..cf02d1af50 100644
--- a/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp
+++ b/tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,7 +56,7 @@
-#if defined(Q_WS_X11) || defined(Q_WS_MAC)
+#if defined(Q_WS_X11) || defined(Q_OS_MAC)
#define private public
#include <private/qtextengine_p.h>
#include <qtextlayout.h>
@@ -103,6 +103,8 @@ private slots:
void mirroredChars_data();
void mirroredChars();
+ void thaiIsolatedSaraAm();
+
private:
bool haveTestFonts;
};
@@ -1161,7 +1163,7 @@ void tst_QTextScriptEngine::controlInSyllable_qtbug14204()
void tst_QTextScriptEngine::combiningMarks_qtbug15675()
{
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_MAC)
QString s;
s.append(QChar(0x0061));
s.append(QChar(0x0062));
@@ -1211,7 +1213,7 @@ void tst_QTextScriptEngine::mirroredChars_data()
void tst_QTextScriptEngine::mirroredChars()
{
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_MAC)
QSKIP("Not supported on Mac");
#endif
QFETCH(int, hintingPreference);
@@ -1256,5 +1258,27 @@ void tst_QTextScriptEngine::mirroredChars()
}
}
+void tst_QTextScriptEngine::thaiIsolatedSaraAm()
+{
+ if (QFontDatabase().families(QFontDatabase::Any).contains("Waree")) {
+ QString s;
+ s.append(QChar(0x0e33));
+
+ QTextLayout layout(s, QFont("Waree"));
+ layout.beginLayout();
+ layout.createLine();
+ layout.endLayout();
+
+ QTextEngine *e = layout.engine();
+ e->itemize();
+ e->shape(0);
+ QCOMPARE(e->layoutData->items[0].num_glyphs, ushort(3));
+
+ unsigned short *logClusters = e->layoutData->logClustersPtr;
+ QCOMPARE(logClusters[0], ushort(0));
+ } else
+ QSKIP("Cannot find Waree.");
+}
+
QTEST_MAIN(tst_QTextScriptEngine)
#include "tst_qtextscriptengine.moc"
diff --git a/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp b/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp
index b4ecdf1f39..137b44a39a 100644
--- a/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp
+++ b/tests/auto/gui/text/qtexttable/tst_qtexttable.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/text/qzip/tst_qzip.cpp b/tests/auto/gui/text/qzip/tst_qzip.cpp
index d68cb2e2dc..eef517d15a 100644
--- a/tests/auto/gui/text/qzip/tst_qzip.cpp
+++ b/tests/auto/gui/text/qzip/tst_qzip.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/gui/util/qdesktopservices/tst_qdesktopservices.cpp b/tests/auto/gui/util/qdesktopservices/tst_qdesktopservices.cpp
index cfaafb37f4..ad45d00520 100644
--- a/tests/auto/gui/util/qdesktopservices/tst_qdesktopservices.cpp
+++ b/tests/auto/gui/util/qdesktopservices/tst_qdesktopservices.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network-settings.h b/tests/auto/network-settings.h
index bd3539c797..f2c12bc092 100644
--- a/tests/auto/network-settings.h
+++ b/tests/auto/network-settings.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/access/qabstractnetworkcache/tst_qabstractnetworkcache.cpp b/tests/auto/network/access/qabstractnetworkcache/tst_qabstractnetworkcache.cpp
index 94de4704fb..788abc349a 100644
--- a/tests/auto/network/access/qabstractnetworkcache/tst_qabstractnetworkcache.cpp
+++ b/tests/auto/network/access/qabstractnetworkcache/tst_qabstractnetworkcache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/access/qftp/tst_qftp.cpp b/tests/auto/network/access/qftp/tst_qftp.cpp
index 35abd68415..fb898c4b89 100644
--- a/tests/auto/network/access/qftp/tst_qftp.cpp
+++ b/tests/auto/network/access/qftp/tst_qftp.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp b/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
index aa8617740b..94346f726d 100644
--- a/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
+++ b/tests/auto/network/access/qhttpnetworkconnection/tst_qhttpnetworkconnection.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/access/qhttpnetworkreply/tst_qhttpnetworkreply.cpp b/tests/auto/network/access/qhttpnetworkreply/tst_qhttpnetworkreply.cpp
index fa215a5422..8eff61bc52 100644
--- a/tests/auto/network/access/qhttpnetworkreply/tst_qhttpnetworkreply.cpp
+++ b/tests/auto/network/access/qhttpnetworkreply/tst_qhttpnetworkreply.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/access/qnetworkaccessmanager/tst_qnetworkaccessmanager.cpp b/tests/auto/network/access/qnetworkaccessmanager/tst_qnetworkaccessmanager.cpp
index 9fda95821e..0b90456ed3 100644
--- a/tests/auto/network/access/qnetworkaccessmanager/tst_qnetworkaccessmanager.cpp
+++ b/tests/auto/network/access/qnetworkaccessmanager/tst_qnetworkaccessmanager.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/access/qnetworkcachemetadata/tst_qnetworkcachemetadata.cpp b/tests/auto/network/access/qnetworkcachemetadata/tst_qnetworkcachemetadata.cpp
index b272c0b282..cf9093ae8f 100644
--- a/tests/auto/network/access/qnetworkcachemetadata/tst_qnetworkcachemetadata.cpp
+++ b/tests/auto/network/access/qnetworkcachemetadata/tst_qnetworkcachemetadata.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/access/qnetworkcookie/tst_qnetworkcookie.cpp b/tests/auto/network/access/qnetworkcookie/tst_qnetworkcookie.cpp
index abf8e726d2..7c27973b56 100644
--- a/tests/auto/network/access/qnetworkcookie/tst_qnetworkcookie.cpp
+++ b/tests/auto/network/access/qnetworkcookie/tst_qnetworkcookie.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp b/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
index 6ef08131a5..73d0a4a650 100644
--- a/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
+++ b/tests/auto/network/access/qnetworkcookiejar/tst_qnetworkcookiejar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp b/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
index dbd5e64627..533108e76b 100644
--- a/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
+++ b/tests/auto/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -186,6 +186,9 @@ void tst_QNetworkDiskCache::initTestCase()
// It is only called once.
void tst_QNetworkDiskCache::cleanupTestCase()
{
+ QDir workingDir("foo");
+ if (workingDir.exists())
+ workingDir.removeRecursively();
}
// This will be called before each test function is executed.
diff --git a/tests/auto/network/access/qnetworkreply/echo/main.cpp b/tests/auto/network/access/qnetworkreply/echo/main.cpp
index 5162842081..8e6811d2ff 100644
--- a/tests/auto/network/access/qnetworkreply/echo/main.cpp
+++ b/tests/auto/network/access/qnetworkreply/echo/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
index 9d3c8a7f2f..959250acb4 100644
--- a/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/access/qnetworkrequest/tst_qnetworkrequest.cpp b/tests/auto/network/access/qnetworkrequest/tst_qnetworkrequest.cpp
index e106230dc4..928dc48125 100644
--- a/tests/auto/network/access/qnetworkrequest/tst_qnetworkrequest.cpp
+++ b/tests/auto/network/access/qnetworkrequest/tst_qnetworkrequest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/bearer/qbearertestcommon.h b/tests/auto/network/bearer/qbearertestcommon.h
index 6279dbb1ef..f716573b6b 100644
--- a/tests/auto/network/bearer/qbearertestcommon.h
+++ b/tests/auto/network/bearer/qbearertestcommon.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/bearer/qnetworkconfiguration/tst_qnetworkconfiguration.cpp b/tests/auto/network/bearer/qnetworkconfiguration/tst_qnetworkconfiguration.cpp
index 2a05f6132a..a8b7db4231 100644
--- a/tests/auto/network/bearer/qnetworkconfiguration/tst_qnetworkconfiguration.cpp
+++ b/tests/auto/network/bearer/qnetworkconfiguration/tst_qnetworkconfiguration.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/bearer/qnetworkconfigurationmanager/tst_qnetworkconfigurationmanager.cpp b/tests/auto/network/bearer/qnetworkconfigurationmanager/tst_qnetworkconfigurationmanager.cpp
index c801534a50..0874dbf5c0 100644
--- a/tests/auto/network/bearer/qnetworkconfigurationmanager/tst_qnetworkconfigurationmanager.cpp
+++ b/tests/auto/network/bearer/qnetworkconfigurationmanager/tst_qnetworkconfigurationmanager.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/bearer/qnetworksession/lackey/main.cpp b/tests/auto/network/bearer/qnetworksession/lackey/main.cpp
index 1182454fda..c454ba3c80 100644
--- a/tests/auto/network/bearer/qnetworksession/lackey/main.cpp
+++ b/tests/auto/network/bearer/qnetworksession/lackey/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp b/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp
index 26bdec5c9b..a51b4e5632 100644
--- a/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp
+++ b/tests/auto/network/bearer/qnetworksession/test/tst_qnetworksession.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -273,17 +273,17 @@ void tst_QNetworkSession::sessionProperties()
<< QLatin1String("WiMAX");
if (!configuration.isValid()) {
- QVERIFY(configuration.bearerName().isEmpty());
+ QVERIFY(configuration.bearerTypeName().isEmpty());
} else {
switch (configuration.type())
{
case QNetworkConfiguration::ServiceNetwork:
case QNetworkConfiguration::UserChoice:
default:
- QVERIFY(configuration.bearerName().isEmpty());
+ QVERIFY(configuration.bearerTypeName().isEmpty());
break;
case QNetworkConfiguration::InternetAccessPoint:
- QVERIFY(validBearerNames.contains(configuration.bearerName()));
+ QVERIFY(validBearerNames.contains(configuration.bearerTypeName()));
break;
}
}
@@ -1016,15 +1016,15 @@ QNetworkConfiguration suitableConfiguration(QString bearerType, QNetworkConfigur
discoveredConfigs.removeOne(config);
} else if ((config.type() == QNetworkConfiguration::InternetAccessPoint) &&
bearerType == "cellular") { // 'cellular' bearertype is for convenience
- if (config.bearerName() != "2G" &&
- config.bearerName() != "CDMA2000" &&
- config.bearerName() != "WCDMA" &&
- config.bearerName() != "HSPA") {
+ if (config.bearerTypeName() != "2G" &&
+ config.bearerTypeName() != "CDMA2000" &&
+ config.bearerTypeName() != "WCDMA" &&
+ config.bearerTypeName() != "HSPA") {
// qDebug() << "Dumping config because bearer mismatches (cellular): " << config.name();
discoveredConfigs.removeOne(config);
}
} else if ((config.type() == QNetworkConfiguration::InternetAccessPoint) &&
- bearerType != config.bearerName()) {
+ bearerType != config.bearerTypeName()) {
// qDebug() << "Dumping config because bearer mismatches (WLAN): " << config.name();
discoveredConfigs.removeOne(config);
}
diff --git a/tests/auto/network/kernel/kernel.pro b/tests/auto/network/kernel/kernel.pro
index d1c901d529..32ba8b41b7 100644
--- a/tests/auto/network/kernel/kernel.pro
+++ b/tests/auto/network/kernel/kernel.pro
@@ -1,5 +1,7 @@
TEMPLATE=subdirs
SUBDIRS=\
+ qdnslookup \
+ qdnslookup_appless \
qhostinfo \
# qnetworkproxyfactory \ # Uses a hardcoded proxy configuration
qauthenticator \
diff --git a/tests/auto/network/kernel/qauthenticator/tst_qauthenticator.cpp b/tests/auto/network/kernel/qauthenticator/tst_qauthenticator.cpp
index 38aa684ec9..9c1b8c32f6 100644
--- a/tests/auto/network/kernel/qauthenticator/tst_qauthenticator.cpp
+++ b/tests/auto/network/kernel/qauthenticator/tst_qauthenticator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the FOO module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/kernel/qdnslookup/qdnslookup.pro b/tests/auto/network/kernel/qdnslookup/qdnslookup.pro
new file mode 100644
index 0000000000..f14ffd003e
--- /dev/null
+++ b/tests/auto/network/kernel/qdnslookup/qdnslookup.pro
@@ -0,0 +1,7 @@
+CONFIG += testcase
+
+TARGET = tst_qdnslookup
+
+SOURCES += tst_qdnslookup.cpp
+
+QT = core network testlib
diff --git a/tests/auto/network/kernel/qdnslookup/tst_qdnslookup.cpp b/tests/auto/network/kernel/qdnslookup/tst_qdnslookup.cpp
new file mode 100644
index 0000000000..3baca3c50b
--- /dev/null
+++ b/tests/auto/network/kernel/qdnslookup/tst_qdnslookup.cpp
@@ -0,0 +1,274 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Jeremy Lainé <jeremy.laine@m4x.org>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <QtTest/QtTest>
+#include <QtNetwork/QDnsLookup>
+#include <QtNetwork/QHostAddress>
+
+static bool waitForDone(QDnsLookup *lookup)
+{
+ if (lookup->isFinished())
+ return true;
+
+ QObject::connect(lookup, SIGNAL(finished()),
+ &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ return !QTestEventLoop::instance().timeout();
+}
+
+class tst_QDnsLookup: public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void lookup_data();
+ void lookup();
+ void lookupReuse();
+ void lookupAbortRetry();
+};
+
+void tst_QDnsLookup::lookup_data()
+{
+ QTest::addColumn<int>("type");
+ QTest::addColumn<QString>("domain");
+ QTest::addColumn<int>("error");
+ QTest::addColumn<QString>("cname");
+ QTest::addColumn<QString>("host");
+ QTest::addColumn<QString>("mx");
+ QTest::addColumn<QString>("ns");
+ QTest::addColumn<QString>("ptr");
+ QTest::addColumn<QString>("srv");
+ QTest::addColumn<QByteArray>("txt");
+
+ QTest::newRow("a-empty") << int(QDnsLookup::A) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << ""<< "" << QByteArray();
+ QTest::newRow("a-notfound") << int(QDnsLookup::A) << "invalid." << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << QByteArray();
+ QTest::newRow("a-idn") << int(QDnsLookup::A) << QString::fromUtf8("alqualondë.troll.no") << int(QDnsLookup::NoError) << "alqualonde.troll.no" << "10.3.3.55" << "" << "" << "" << "" << QByteArray();
+ QTest::newRow("a-single") << int(QDnsLookup::A) << "lupinella.troll.no" << int(QDnsLookup::NoError) << "" << "10.3.4.6" << "" << "" << "" << "" << QByteArray();
+ QTest::newRow("a-multi") << int(QDnsLookup::A) << "multi.dev.troll.no" << int(QDnsLookup::NoError) << "" << "1.2.3.4 1.2.3.5 10.3.3.31" << "" << "" << "" << "" << QByteArray();
+
+ QTest::newRow("aaaa-empty") << int(QDnsLookup::AAAA) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << QByteArray();
+ QTest::newRow("aaaa-notfound") << int(QDnsLookup::AAAA) << "invalid." << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << QByteArray();
+ QTest::newRow("aaaa-single") << int(QDnsLookup::AAAA) << "dns6-test-dev.troll.no" << int(QDnsLookup::NoError) << "" << "2001:470:1f01:115::10" << "" << "" << "" << "" << QByteArray();
+ QTest::newRow("aaaa-multi") << int(QDnsLookup::AAAA) << "multi-dns6-test-dev.troll.no" << int(QDnsLookup::NoError) << "" << "2001:470:1f01:115::11 2001:470:1f01:115::12" << "" << "" << "" << "" << QByteArray();
+
+ QTest::newRow("any-empty") << int(QDnsLookup::ANY) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << QByteArray();
+ QTest::newRow("any-notfound") << int(QDnsLookup::ANY) << "invalid." << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << QByteArray();
+ QTest::newRow("any-ascii") << int(QDnsLookup::ANY) << "fluke.troll.no" << int(QDnsLookup::NoError) << "" << "10.3.3.31" << "" << "" << "" << "" << QByteArray();
+
+ QTest::newRow("mx-empty") << int(QDnsLookup::MX) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << QByteArray();
+ QTest::newRow("mx-notfound") << int(QDnsLookup::MX) << "invalid." << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << QByteArray();
+ QTest::newRow("mx-ascii") << int(QDnsLookup::MX) << "troll.no" << int(QDnsLookup::NoError) << "" << "" << "10 smtp.trolltech.com" << "" << "" << "" << QByteArray();
+ // FIXME: we need an IDN MX record in the troll.no domain
+ QTest::newRow("mx-idn") << int(QDnsLookup::MX) << QString::fromUtf8("råkat.se") << int(QDnsLookup::NoError) << "" << "" << "10 mail.cdr.se" << "" << "" << "" << QByteArray();
+
+ QTest::newRow("ns-empty") << int(QDnsLookup::NS) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << QByteArray();
+ QTest::newRow("ns-notfound") << int(QDnsLookup::NS) << "invalid." << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << QByteArray();
+ QTest::newRow("ns-ascii") << int(QDnsLookup::NS) << "troll.no" << int(QDnsLookup::NoError) << "" << "" << "" << "ns-0.trolltech.net ns-1.trolltech.net ns-i.trolltech.net" << "" << "" << QByteArray();
+
+ QTest::newRow("ptr-empty") << int(QDnsLookup::PTR) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << QByteArray();
+ QTest::newRow("ptr-notfound") << int(QDnsLookup::PTR) << "invalid." << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << QByteArray();
+ // FIXME: we need PTR records in the troll.no domain
+ QTest::newRow("ptr-ascii") << int(QDnsLookup::PTR) << "168.52.238.87.in-addr.arpa" << int(QDnsLookup::NoError) << "" << "" << "" << "" << "gitorious.org" << "" << QByteArray();
+
+ QTest::newRow("srv-empty") << int(QDnsLookup::SRV) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << QByteArray();
+ QTest::newRow("srv-notfound") << int(QDnsLookup::SRV) << "invalid." << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << QByteArray();
+ // FIXME: we need SRV records in the troll.no domain
+ QTest::newRow("srv-idn") << int(QDnsLookup::SRV) << QString::fromUtf8("_xmpp-client._tcp.råkat.se") << int(QDnsLookup::NoError) << "" << "" << "" << "" << "" << "5 0 5224 jabber.cdr.se" << QByteArray();
+
+ QTest::newRow("txt-empty") << int(QDnsLookup::TXT) << "" << int(QDnsLookup::InvalidRequestError) << "" << "" << "" << "" << "" << "" << QByteArray();
+ QTest::newRow("txt-notfound") << int(QDnsLookup::TXT) << "invalid." << int(QDnsLookup::NotFoundError) << "" << "" << "" << "" << "" << "" << QByteArray();
+ // FIXME: we need TXT records in the troll.no domain
+ QTest::newRow("txt-ascii") << int(QDnsLookup::TXT) << "gmail.com" << int(QDnsLookup::NoError) << "" << "" << "" << "" << "" << "" << QByteArray("v=spf1 redirect=_spf.google.com");
+}
+
+void tst_QDnsLookup::lookup()
+{
+ QFETCH(int, type);
+ QFETCH(QString, domain);
+ QFETCH(int, error);
+ QFETCH(QString, cname);
+ QFETCH(QString, host);
+ QFETCH(QString, mx);
+ QFETCH(QString, ns);
+ QFETCH(QString, ptr);
+ QFETCH(QString, srv);
+ QFETCH(QByteArray, txt);
+
+ QDnsLookup lookup;
+ lookup.setType(static_cast<QDnsLookup::Type>(type));
+ lookup.setName(domain);
+ lookup.lookup();
+ QVERIFY(waitForDone(&lookup));
+ QVERIFY(lookup.isFinished());
+ QCOMPARE(int(lookup.error()), error);
+ if (error == QDnsLookup::NoError)
+ QVERIFY(lookup.errorString().isEmpty());
+ QCOMPARE(int(lookup.type()), type);
+ QCOMPARE(lookup.name(), domain);
+
+ // canonical names
+ if (!cname.isEmpty()) {
+ QVERIFY(!lookup.canonicalNameRecords().isEmpty());
+ const QDnsDomainNameRecord cnameRecord = lookup.canonicalNameRecords().first();
+ QCOMPARE(cnameRecord.name(), domain);
+ QCOMPARE(cnameRecord.value(), cname);
+ } else {
+ QVERIFY(lookup.canonicalNameRecords().isEmpty());
+ }
+
+ // host addresses
+ const QString hostName = cname.isEmpty() ? domain : cname;
+ QStringList addresses;
+ foreach (const QDnsHostAddressRecord &record, lookup.hostAddressRecords()) {
+ QCOMPARE(record.name(), hostName);
+ addresses << record.value().toString().toLower();
+ }
+ addresses.sort();
+ QCOMPARE(addresses.join(" "), host);
+
+ // mail exchanges
+ QStringList mailExchanges;
+ foreach (const QDnsMailExchangeRecord &record, lookup.mailExchangeRecords()) {
+ QCOMPARE(record.name(), domain);
+ mailExchanges << QString("%1 %2").arg(QString::number(record.preference()), record.exchange());
+ }
+ QCOMPARE(mailExchanges.join(" "), mx);
+
+ // name servers
+ QStringList nameServers;
+ foreach (const QDnsDomainNameRecord &record, lookup.nameServerRecords()) {
+ QCOMPARE(record.name(), domain);
+ nameServers << record.value();
+ }
+ nameServers.sort();
+ QCOMPARE(nameServers.join(" "), ns);
+
+ // pointers
+ if (!ptr.isEmpty()) {
+ QVERIFY(!lookup.pointerRecords().isEmpty());
+ const QDnsDomainNameRecord ptrRecord = lookup.pointerRecords().first();
+ QCOMPARE(ptrRecord.name(), domain);
+ QCOMPARE(ptrRecord.value(), ptr);
+ } else {
+ QVERIFY(lookup.pointerRecords().isEmpty());
+ }
+
+ // services
+ QStringList services;
+ foreach (const QDnsServiceRecord &record, lookup.serviceRecords()) {
+ QCOMPARE(record.name(), domain);
+ services << QString("%1 %2 %3 %4").arg(
+ QString::number(record.priority()),
+ QString::number(record.weight()),
+ QString::number(record.port()),
+ record.target());
+ }
+ QCOMPARE(services.join(" "), srv);
+
+ // text
+ if (!txt.isEmpty()) {
+ QVERIFY(!lookup.textRecords().isEmpty());
+ const QDnsTextRecord firstRecord = lookup.textRecords().first();
+ QCOMPARE(firstRecord.name(), domain);
+ QCOMPARE(firstRecord.values().size(), 1);
+ QCOMPARE(firstRecord.values().first(), txt);
+ } else {
+ QVERIFY(lookup.textRecords().isEmpty());
+ }
+}
+
+void tst_QDnsLookup::lookupReuse()
+{
+ QDnsLookup lookup;
+
+ // first lookup
+ lookup.setType(QDnsLookup::A);
+ lookup.setName("lupinella.troll.no");
+ lookup.lookup();
+ QVERIFY(waitForDone(&lookup));
+ QVERIFY(lookup.isFinished());
+ QCOMPARE(int(lookup.error()), int(QDnsLookup::NoError));
+ QVERIFY(!lookup.hostAddressRecords().isEmpty());
+ QCOMPARE(lookup.hostAddressRecords().first().name(), QString("lupinella.troll.no"));
+ QCOMPARE(lookup.hostAddressRecords().first().value(), QHostAddress("10.3.4.6"));
+
+ // second lookup
+ lookup.setType(QDnsLookup::AAAA);
+ lookup.setName("dns6-test-dev.troll.no");
+ lookup.lookup();
+ QVERIFY(waitForDone(&lookup));
+ QVERIFY(lookup.isFinished());
+ QCOMPARE(int(lookup.error()), int(QDnsLookup::NoError));
+ QVERIFY(!lookup.hostAddressRecords().isEmpty());
+ QCOMPARE(lookup.hostAddressRecords().first().name(), QString("dns6-test-dev.troll.no"));
+ QCOMPARE(lookup.hostAddressRecords().first().value(), QHostAddress("2001:470:1f01:115::10"));
+}
+
+
+void tst_QDnsLookup::lookupAbortRetry()
+{
+ QDnsLookup lookup;
+
+ // try and abort the lookup
+ lookup.setType(QDnsLookup::A);
+ lookup.setName("lupinella.troll.no");
+ lookup.lookup();
+ lookup.abort();
+ QVERIFY(waitForDone(&lookup));
+ QVERIFY(lookup.isFinished());
+ QCOMPARE(int(lookup.error()), int(QDnsLookup::OperationCancelledError));
+ QVERIFY(lookup.hostAddressRecords().isEmpty());
+
+ // retry a different lookup
+ lookup.setType(QDnsLookup::AAAA);
+ lookup.setName("dns6-test-dev.troll.no");
+ lookup.lookup();
+ QVERIFY(waitForDone(&lookup));
+ QVERIFY(lookup.isFinished());
+ QCOMPARE(int(lookup.error()), int(QDnsLookup::NoError));
+ QVERIFY(!lookup.hostAddressRecords().isEmpty());
+ QCOMPARE(lookup.hostAddressRecords().first().name(), QString("dns6-test-dev.troll.no"));
+ QCOMPARE(lookup.hostAddressRecords().first().value(), QHostAddress("2001:470:1f01:115::10"));
+}
+
+QTEST_MAIN(tst_QDnsLookup)
+#include "tst_qdnslookup.moc"
diff --git a/tests/auto/network/kernel/qdnslookup_appless/qdnslookup_appless.pro b/tests/auto/network/kernel/qdnslookup_appless/qdnslookup_appless.pro
new file mode 100644
index 0000000000..25d76b5739
--- /dev/null
+++ b/tests/auto/network/kernel/qdnslookup_appless/qdnslookup_appless.pro
@@ -0,0 +1,7 @@
+CONFIG += testcase
+
+TARGET = tst_qdnslookup_appless
+
+SOURCES += tst_qdnslookup_appless.cpp
+
+QT = core network testlib
diff --git a/tests/auto/network/kernel/qdnslookup_appless/tst_qdnslookup_appless.cpp b/tests/auto/network/kernel/qdnslookup_appless/tst_qdnslookup_appless.cpp
new file mode 100644
index 0000000000..a183cfdc8a
--- /dev/null
+++ b/tests/auto/network/kernel/qdnslookup_appless/tst_qdnslookup_appless.cpp
@@ -0,0 +1,92 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Jeremy Lainé <jeremy.laine@m4x.org>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <QtCore/QCoreApplication>
+#include <QtNetwork/QDnsLookup>
+#include <QtTest/QtTest>
+
+class tst_QDnsLookup_Appless : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void noApplication();
+ void recreateApplication();
+ void destroyApplicationDuringLookup();
+};
+
+void tst_QDnsLookup_Appless::noApplication()
+{
+ QTest::ignoreMessage(QtWarningMsg, "QDnsLookup requires a QCoreApplication");
+ QDnsLookup dns(QDnsLookup::A, "troll.no");
+ dns.lookup();
+}
+
+void tst_QDnsLookup_Appless::recreateApplication()
+{
+ int argc = 0;
+ char **argv = 0;
+ for (int i = 0; i < 10; ++i) {
+ QCoreApplication app(argc, argv);
+ QDnsLookup dns(QDnsLookup::A, "lupinella.troll.no");
+ dns.lookup();
+ if (!dns.isFinished()) {
+ QObject::connect(&dns, SIGNAL(finished()),
+ &QTestEventLoop::instance(), SLOT(exitLoop()));
+ QTestEventLoop::instance().enterLoop(10);
+ }
+ QVERIFY(dns.isFinished());
+ }
+}
+
+void tst_QDnsLookup_Appless::destroyApplicationDuringLookup()
+{
+ int argc = 0;
+ char **argv = 0;
+ for (int i = 0; i < 10; ++i) {
+ QCoreApplication app(argc, argv);
+ QDnsLookup dns(QDnsLookup::A, "lupinella.troll.no");
+ dns.lookup();
+ }
+}
+
+QTEST_APPLESS_MAIN(tst_QDnsLookup_Appless)
+#include "tst_qdnslookup_appless.moc"
diff --git a/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp b/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp
index 7869ab76fe..d74e1b1e89 100644
--- a/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp
+++ b/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,6 +48,9 @@
#include <qhash.h>
#include <qbytearray.h>
#include <qdatastream.h>
+#ifdef Q_OS_WIN
+# include <qt_windows.h>
+#endif
class tst_QHostAddress : public QObject
{
diff --git a/tests/auto/network/kernel/qhostinfo/qhostinfo.pro b/tests/auto/network/kernel/qhostinfo/qhostinfo.pro
index aceedc1ee4..4ca59b5b70 100644
--- a/tests/auto/network/kernel/qhostinfo/qhostinfo.pro
+++ b/tests/auto/network/kernel/qhostinfo/qhostinfo.pro
@@ -10,3 +10,5 @@ wince*: {
} else {
win32:LIBS += -lws2_32
}
+
+linux-*:CONFIG+=insignificant_test # QTBUG-23837 - test is unstable
diff --git a/tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp b/tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp
index 6c89819094..fbcaa2ca53 100644
--- a/tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp
+++ b/tests/auto/network/kernel/qhostinfo/tst_qhostinfo.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/kernel/qnetworkaddressentry/tst_qnetworkaddressentry.cpp b/tests/auto/network/kernel/qnetworkaddressentry/tst_qnetworkaddressentry.cpp
index cc46427653..ab8e12c3d9 100644
--- a/tests/auto/network/kernel/qnetworkaddressentry/tst_qnetworkaddressentry.cpp
+++ b/tests/auto/network/kernel/qnetworkaddressentry/tst_qnetworkaddressentry.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/kernel/qnetworkinterface/tst_qnetworkinterface.cpp b/tests/auto/network/kernel/qnetworkinterface/tst_qnetworkinterface.cpp
index 9a82be67a7..299a11a06d 100644
--- a/tests/auto/network/kernel/qnetworkinterface/tst_qnetworkinterface.cpp
+++ b/tests/auto/network/kernel/qnetworkinterface/tst_qnetworkinterface.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/kernel/qnetworkproxy/tst_qnetworkproxy.cpp b/tests/auto/network/kernel/qnetworkproxy/tst_qnetworkproxy.cpp
index 70a6eaa9df..7832840268 100644
--- a/tests/auto/network/kernel/qnetworkproxy/tst_qnetworkproxy.cpp
+++ b/tests/auto/network/kernel/qnetworkproxy/tst_qnetworkproxy.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/kernel/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp b/tests/auto/network/kernel/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp
index 088a5361ab..8a1a391b51 100644
--- a/tests/auto/network/kernel/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp
+++ b/tests/auto/network/kernel/qnetworkproxyfactory/tst_qnetworkproxyfactory.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp b/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp
index d315e1e76b..ffcc9cfc97 100644
--- a/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp
+++ b/tests/auto/network/socket/platformsocketengine/tst_platformsocketengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/socket/qabstractsocket/tst_qabstractsocket.cpp b/tests/auto/network/socket/qabstractsocket/tst_qabstractsocket.cpp
index f39a9c66bf..d143b0dbd0 100644
--- a/tests/auto/network/socket/qabstractsocket/tst_qabstractsocket.cpp
+++ b/tests/auto/network/socket/qabstractsocket/tst_qabstractsocket.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/socket/qhttpsocketengine/tst_qhttpsocketengine.cpp b/tests/auto/network/socket/qhttpsocketengine/tst_qhttpsocketengine.cpp
index b411dd2651..9b8391d6be 100644
--- a/tests/auto/network/socket/qhttpsocketengine/tst_qhttpsocketengine.cpp
+++ b/tests/auto/network/socket/qhttpsocketengine/tst_qhttpsocketengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -212,7 +212,7 @@ void tst_QHttpSocketEngine::errorTest_data()
QTest::newRow("garbage2") << QString() << 0 << QString()
<< "This is not HTTP"
- << int(QAbstractSocket::ProxyConnectionClosedError);
+ << int(QAbstractSocket::ProxyProtocolError);
QTest::newRow("garbage3") << QString() << 0 << QString()
<< ""
diff --git a/tests/auto/network/socket/qlocalsocket/example/client/main.cpp b/tests/auto/network/socket/qlocalsocket/example/client/main.cpp
index 86b6b34cf3..17c5ba666e 100644
--- a/tests/auto/network/socket/qlocalsocket/example/client/main.cpp
+++ b/tests/auto/network/socket/qlocalsocket/example/client/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/socket/qlocalsocket/example/server/main.cpp b/tests/auto/network/socket/qlocalsocket/example/server/main.cpp
index 06c8b8501f..d066e4ef51 100644
--- a/tests/auto/network/socket/qlocalsocket/example/server/main.cpp
+++ b/tests/auto/network/socket/qlocalsocket/example/server/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/socket/qlocalsocket/lackey/main.cpp b/tests/auto/network/socket/qlocalsocket/lackey/main.cpp
index 014a6eb2f8..b899ecd2c4 100644
--- a/tests/auto/network/socket/qlocalsocket/lackey/main.cpp
+++ b/tests/auto/network/socket/qlocalsocket/lackey/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp b/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp
index 87cfaeed6c..221ef602a1 100644
--- a/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp
+++ b/tests/auto/network/socket/qlocalsocket/tst_qlocalsocket.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp b/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp
index df677875e6..0c0690babe 100644
--- a/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp
+++ b/tests/auto/network/socket/qsocks5socketengine/tst_qsocks5socketengine.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/socket/qtcpserver/crashingServer/main.cpp b/tests/auto/network/socket/qtcpserver/crashingServer/main.cpp
index f2e813497b..cf7ade6cd2 100644
--- a/tests/auto/network/socket/qtcpserver/crashingServer/main.cpp
+++ b/tests/auto/network/socket/qtcpserver/crashingServer/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp
index 0f4e60e258..941e0b2142 100644
--- a/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp
+++ b/tests/auto/network/socket/qtcpserver/tst_qtcpserver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/socket/qtcpsocket/stressTest/Test.cpp b/tests/auto/network/socket/qtcpsocket/stressTest/Test.cpp
index a112966b41..12b515a115 100644
--- a/tests/auto/network/socket/qtcpsocket/stressTest/Test.cpp
+++ b/tests/auto/network/socket/qtcpsocket/stressTest/Test.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/socket/qtcpsocket/stressTest/Test.h b/tests/auto/network/socket/qtcpsocket/stressTest/Test.h
index 3adcbe4e5c..76981a15ad 100644
--- a/tests/auto/network/socket/qtcpsocket/stressTest/Test.h
+++ b/tests/auto/network/socket/qtcpsocket/stressTest/Test.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/socket/qtcpsocket/stressTest/main.cpp b/tests/auto/network/socket/qtcpsocket/stressTest/main.cpp
index 57194a4948..f5ada2b925 100644
--- a/tests/auto/network/socket/qtcpsocket/stressTest/main.cpp
+++ b/tests/auto/network/socket/qtcpsocket/stressTest/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
index c9c7054960..829ddd2054 100644
--- a/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
+++ b/tests/auto/network/socket/qtcpsocket/tst_qtcpsocket.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/socket/qudpsocket/clientserver/main.cpp b/tests/auto/network/socket/qudpsocket/clientserver/main.cpp
index a88c0f1335..83cd81762b 100644
--- a/tests/auto/network/socket/qudpsocket/clientserver/main.cpp
+++ b/tests/auto/network/socket/qudpsocket/clientserver/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp b/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp
index fb23483451..3dabe6741a 100644
--- a/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp
+++ b/tests/auto/network/socket/qudpsocket/tst_qudpsocket.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/socket/qudpsocket/udpServer/main.cpp b/tests/auto/network/socket/qudpsocket/udpServer/main.cpp
index 90ddcf1748..d212e55a0c 100644
--- a/tests/auto/network/socket/qudpsocket/udpServer/main.cpp
+++ b/tests/auto/network/socket/qudpsocket/udpServer/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/ssl/qsslcertificate/certificates/gencertificates.sh b/tests/auto/network/ssl/qsslcertificate/certificates/gencertificates.sh
index 915bf796b1..3570471d73 100755
--- a/tests/auto/network/ssl/qsslcertificate/certificates/gencertificates.sh
+++ b/tests/auto/network/ssl/qsslcertificate/certificates/gencertificates.sh
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is the build configuration utility of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
diff --git a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
index a2fab2b479..8003ad1932 100644
--- a/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
+++ b/tests/auto/network/ssl/qsslcertificate/tst_qsslcertificate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -862,11 +862,11 @@ void tst_QSslCertificate::toText()
// Openssl's cert dump method changed slightly between 0.9.8 and 1.0.0 versions, so we want it to match any output
QFile fOld(SRCDIR "more-certificates/cert-large-expiration-date.txt.0.9.8");
- QVERIFY(fOld.open(QIODevice::ReadOnly));
+ QVERIFY(fOld.open(QIODevice::ReadOnly | QFile::Text));
QByteArray txtOld = fOld.readAll();
QFile fNew(SRCDIR "more-certificates/cert-large-expiration-date.txt.1.0.0");
- QVERIFY(fNew.open(QIODevice::ReadOnly));
+ QVERIFY(fNew.open(QIODevice::ReadOnly | QFile::Text));
QByteArray txtNew = fNew.readAll();
QVERIFY(txtOld == cert.toText() || txtNew == cert.toText());
}
diff --git a/tests/auto/network/ssl/qsslcipher/tst_qsslcipher.cpp b/tests/auto/network/ssl/qsslcipher/tst_qsslcipher.cpp
index 89b735aed3..25d5f00e95 100644
--- a/tests/auto/network/ssl/qsslcipher/tst_qsslcipher.cpp
+++ b/tests/auto/network/ssl/qsslcipher/tst_qsslcipher.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp b/tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp
index 481d73650b..e57c5fa7f4 100644
--- a/tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp
+++ b/tests/auto/network/ssl/qsslerror/tst_qsslerror.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/ssl/qsslkey/keys/genkeys.sh b/tests/auto/network/ssl/qsslkey/keys/genkeys.sh
index 087a3a64b9..e82dc57e28 100755
--- a/tests/auto/network/ssl/qsslkey/keys/genkeys.sh
+++ b/tests/auto/network/ssl/qsslkey/keys/genkeys.sh
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is the build configuration utility of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
diff --git a/tests/auto/network/ssl/qsslkey/qsslkey.pro b/tests/auto/network/ssl/qsslkey/qsslkey.pro
index d882362290..4af35487cd 100644
--- a/tests/auto/network/ssl/qsslkey/qsslkey.pro
+++ b/tests/auto/network/ssl/qsslkey/qsslkey.pro
@@ -25,5 +25,4 @@ wince* {
DEFINES += SRCDIR=\\\".\\\"
} else {
DEFINES+= SRCDIR=\\\"$$PWD\\\"
- TARGET.CAPABILITY = NetworkServices
}
diff --git a/tests/auto/network/ssl/qsslkey/tst_qsslkey.cpp b/tests/auto/network/ssl/qsslkey/tst_qsslkey.cpp
index cf1489c76c..f59f0bb5a9 100644
--- a/tests/auto/network/ssl/qsslkey/tst_qsslkey.cpp
+++ b/tests/auto/network/ssl/qsslkey/tst_qsslkey.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/ssl/qsslsocket/qsslsocket.pro b/tests/auto/network/ssl/qsslsocket/qsslsocket.pro
index 2739a7eb25..a8763d69af 100644
--- a/tests/auto/network/ssl/qsslsocket/qsslsocket.pro
+++ b/tests/auto/network/ssl/qsslsocket/qsslsocket.pro
@@ -17,7 +17,6 @@ win32 {
# OpenSSL support
contains(QT_CONFIG, openssl) | contains(QT_CONFIG, openssl-linked) {
- include($$QT_SOURCE_TREE/config.tests/unix/openssl/openssl.pri)
# Add optional SSL libs
LIBS += $$OPENSSL_LIBS
}
diff --git a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
index 96aea6a4e5..83060e27e4 100644
--- a/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
+++ b/tests/auto/network/ssl/qsslsocket/tst_qsslsocket.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -192,10 +192,12 @@ private slots:
void readFromClosedSocket();
void writeBigChunk();
void blacklistedCertificates();
- void setEmptyDefaultConfiguration();
void versionAccessors();
void sslOptions();
void encryptWithoutConnecting();
+ void resume_data();
+ void resume();
+ void setEmptyDefaultConfiguration(); // this test should be last
static void exitLoop()
{
@@ -1320,8 +1322,8 @@ void tst_QSslSocket::wildcard()
QVERIFY2(socket->waitForEncrypted(3000), qPrintable(socket->errorString()));
QSslCertificate certificate = socket->peerCertificate();
- QCOMPARE(certificate.subjectInfo(QSslCertificate::CommonName), QString(QtNetworkSettings::serverLocalName() + ".*." + QtNetworkSettings::serverDomainName()));
- QCOMPARE(certificate.issuerInfo(QSslCertificate::CommonName), QtNetworkSettings::serverName());
+ QVERIFY(certificate.subjectInfo(QSslCertificate::CommonName).contains(QString(QtNetworkSettings::serverLocalName() + ".*." + QtNetworkSettings::serverDomainName())));
+ QVERIFY(certificate.issuerInfo(QSslCertificate::CommonName).contains(QtNetworkSettings::serverName()));
socket->close();
}
@@ -2058,22 +2060,6 @@ void tst_QSslSocket::blacklistedCertificates()
QCOMPARE(sslErrors.at(0).error(), QSslError::CertificateBlacklisted);
}
-void tst_QSslSocket::setEmptyDefaultConfiguration()
-{
- // used to produce a crash in QSslConfigurationPrivate::deepCopyDefaultConfiguration, QTBUG-13265
-
- if (!QSslSocket::supportsSsl())
- return;
-
- QSslConfiguration emptyConf;
- QSslConfiguration::setDefaultConfiguration(emptyConf);
-
- QSslSocketPtr socket = newSocket();
- connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
- socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
- QVERIFY2(!socket->waitForEncrypted(4000), qPrintable(socket->errorString()));
-}
-
void tst_QSslSocket::versionAccessors()
{
if (!QSslSocket::supportsSsl())
@@ -2141,7 +2127,97 @@ void tst_QSslSocket::encryptWithoutConnecting()
sock.startClientEncryption();
}
+void tst_QSslSocket::resume_data()
+{
+ QTest::addColumn<bool>("ignoreErrorsAfterPause");
+ QTest::addColumn<QList<QSslError> >("errorsToIgnore");
+ QTest::addColumn<bool>("expectSuccess");
+
+ QList<QSslError> errorsList;
+ QTest::newRow("DoNotIgnoreErrors") << false << QList<QSslError>() << false;
+ QTest::newRow("ignoreAllErrors") << true << QList<QSslError>() << true;
+
+ QList<QSslCertificate> certs = QSslCertificate::fromPath(QLatin1String(SRCDIR "certs/qt-test-server-cacert.pem"));
+ QSslError rightError(QSslError::SelfSignedCertificate, certs.at(0));
+ QSslError wrongError(QSslError::SelfSignedCertificate);
+ errorsList.append(wrongError);
+ QTest::newRow("ignoreSpecificErrors-Wrong") << true << errorsList << false;
+ errorsList.clear();
+ errorsList.append(rightError);
+ QTest::newRow("ignoreSpecificErrors-Right") << true << errorsList << true;
+}
+
+void tst_QSslSocket::resume()
+{
+ // make sure the server certificate is not in the list of accepted certificates,
+ // we want to trigger the sslErrors signal
+ QSslSocket::setDefaultCaCertificates(QSslSocket::systemCaCertificates());
+
+ QFETCH(bool, ignoreErrorsAfterPause);
+ QFETCH(QList<QSslError>, errorsToIgnore);
+ QFETCH(bool, expectSuccess);
+
+ QSslSocket socket;
+ socket.setPauseMode(QAbstractSocket::PauseOnNotify);
+
+ QSignalSpy sslErrorSpy(&socket, SIGNAL(sslErrors(QList<QSslError>)));
+ QSignalSpy encryptedSpy(&socket, SIGNAL(encrypted()));
+ QSignalSpy errorSpy(&socket, SIGNAL(error(QAbstractSocket::SocketError)));
+
+ connect(&socket, SIGNAL(sslErrors(QList<QSslError>)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ connect(&socket, SIGNAL(encrypted()), &QTestEventLoop::instance(), SLOT(exitLoop()));
+ connect(&socket, SIGNAL(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)),
+ this, SLOT(proxyAuthenticationRequired(QNetworkProxy,QAuthenticator*)));
+ connect(&socket, SIGNAL(error(QAbstractSocket::SocketError)), &QTestEventLoop::instance(), SLOT(exitLoop()));
+
+ socket.connectToHostEncrypted(QtNetworkSettings::serverName(), 993);
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout());
+ QCOMPARE(sslErrorSpy.count(), 1);
+ QCOMPARE(errorSpy.count(), 0);
+ QCOMPARE(encryptedSpy.count(), 0);
+ QVERIFY(!socket.isEncrypted());
+ if (ignoreErrorsAfterPause) {
+ if (errorsToIgnore.empty())
+ socket.ignoreSslErrors();
+ else
+ socket.ignoreSslErrors(errorsToIgnore);
+ }
+ socket.resume();
+ QTestEventLoop::instance().enterLoop(10);
+ QVERIFY(!QTestEventLoop::instance().timeout()); // quit by encrypted() or error() signal
+ if (expectSuccess) {
+ QCOMPARE(encryptedSpy.count(), 1);
+ QVERIFY(socket.isEncrypted());
+ QCOMPARE(errorSpy.count(), 0);
+ socket.disconnectFromHost();
+ QVERIFY(socket.waitForDisconnected(10000));
+ } else {
+ QCOMPARE(encryptedSpy.count(), 0);
+ QVERIFY(!socket.isEncrypted());
+ QCOMPARE(errorSpy.count(), 1);
+ QCOMPARE(socket.error(), QAbstractSocket::SslHandshakeFailedError);
+ }
+}
+
+void tst_QSslSocket::setEmptyDefaultConfiguration() // this test should be last, as it has some side effects
+{
+ // used to produce a crash in QSslConfigurationPrivate::deepCopyDefaultConfiguration, QTBUG-13265
+
+ if (!QSslSocket::supportsSsl())
+ return;
+
+ QSslConfiguration emptyConf;
+ QSslConfiguration::setDefaultConfiguration(emptyConf);
+
+ QSslSocketPtr socket = newSocket();
+ connect(socket, SIGNAL(sslErrors(const QList<QSslError> &)), this, SLOT(ignoreErrorSlot()));
+ socket->connectToHostEncrypted(QtNetworkSettings::serverName(), 443);
+ QVERIFY2(!socket->waitForEncrypted(4000), qPrintable(socket->errorString()));
+}
+
#endif // QT_NO_OPENSSL
QTEST_MAIN(tst_QSslSocket)
+
#include "tst_qsslsocket.moc"
diff --git a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/tst_qsslsocket_onDemandCertificates_member.cpp b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/tst_qsslsocket_onDemandCertificates_member.cpp
index d331658fc8..bc0e04a1f2 100644
--- a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/tst_qsslsocket_onDemandCertificates_member.cpp
+++ b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_member/tst_qsslsocket_onDemandCertificates_member.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/tst_qsslsocket_onDemandCertificates_static.cpp b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/tst_qsslsocket_onDemandCertificates_static.cpp
index 4c76a44ac1..dd01733fbe 100644
--- a/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/tst_qsslsocket_onDemandCertificates_static.cpp
+++ b/tests/auto/network/ssl/qsslsocket_onDemandCertificates_static/tst_qsslsocket_onDemandCertificates_static.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/opengl/qgl/tst_qgl.cpp b/tests/auto/opengl/qgl/tst_qgl.cpp
index 0b8952f9ab..f741fb9248 100644
--- a/tests/auto/opengl/qgl/tst_qgl.cpp
+++ b/tests/auto/opengl/qgl/tst_qgl.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/opengl/qglbuffer/tst_qglbuffer.cpp b/tests/auto/opengl/qglbuffer/tst_qglbuffer.cpp
index 865a31bfce..67194d2080 100644
--- a/tests/auto/opengl/qglbuffer/tst_qglbuffer.cpp
+++ b/tests/auto/opengl/qglbuffer/tst_qglbuffer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/opengl/qglfunctions/tst_qglfunctions.cpp b/tests/auto/opengl/qglfunctions/tst_qglfunctions.cpp
index 3ad39f754a..ba1cb1649f 100644
--- a/tests/auto/opengl/qglfunctions/tst_qglfunctions.cpp
+++ b/tests/auto/opengl/qglfunctions/tst_qglfunctions.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/opengl/qglthreads/tst_qglthreads.cpp b/tests/auto/opengl/qglthreads/tst_qglthreads.cpp
index 97718d136a..aa5547908c 100644
--- a/tests/auto/opengl/qglthreads/tst_qglthreads.cpp
+++ b/tests/auto/opengl/qglthreads/tst_qglthreads.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/opengl/qglthreads/tst_qglthreads.h b/tests/auto/opengl/qglthreads/tst_qglthreads.h
index 54ada3bcce..20f4b67663 100644
--- a/tests/auto/opengl/qglthreads/tst_qglthreads.h
+++ b/tests/auto/opengl/qglthreads/tst_qglthreads.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/atwrapper/atWrapper.cpp b/tests/auto/other/atwrapper/atWrapper.cpp
index 5dc0cd599b..1c04023529 100644
--- a/tests/auto/other/atwrapper/atWrapper.cpp
+++ b/tests/auto/other/atwrapper/atWrapper.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/atwrapper/atWrapper.h b/tests/auto/other/atwrapper/atWrapper.h
index 48fe202267..d5df692917 100644
--- a/tests/auto/other/atwrapper/atWrapper.h
+++ b/tests/auto/other/atwrapper/atWrapper.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/atwrapper/atWrapperAutotest.cpp b/tests/auto/other/atwrapper/atWrapperAutotest.cpp
index 2ff3327349..01dfc0a177 100644
--- a/tests/auto/other/atwrapper/atWrapperAutotest.cpp
+++ b/tests/auto/other/atwrapper/atWrapperAutotest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/baselineexample/tst_baselineexample.cpp b/tests/auto/other/baselineexample/tst_baselineexample.cpp
index 7253082974..be4d815244 100644
--- a/tests/auto/other/baselineexample/tst_baselineexample.cpp
+++ b/tests/auto/other/baselineexample/tst_baselineexample.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/collections/tst_collections.cpp b/tests/auto/other/collections/tst_collections.cpp
index 3c55897b46..9bfed15fc4 100644
--- a/tests/auto/other/collections/tst_collections.cpp
+++ b/tests/auto/other/collections/tst_collections.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1310,8 +1310,8 @@ void tst_Collections::byteArray()
QVERIFY(hello.mid(0, hello.size()+1) == hello);
QVERIFY(hello.mid(hello.size()-0) == "");
-
- QVERIFY(hello.mid(hello.size()-0).isNull()); // weird but valid 3.x semantics
+ QVERIFY(hello.mid(hello.size()-0).isEmpty());
+ QVERIFY(!hello.mid(hello.size()-0).isNull());
QVERIFY(hello.mid(hello.size()-1) == "o");
QVERIFY(hello.mid(hello.size()-2) == "lo");
QVERIFY(hello.mid(hello.size()-200) == "hello");
@@ -2030,8 +2030,8 @@ void tst_Collections::qstring()
QVERIFY(hello.mid(0, hello.size()+1) == hello);
QVERIFY(hello.mid(hello.size()-0) == "");
-
- QVERIFY(hello.mid(hello.size()-0).isNull());
+ QVERIFY(hello.mid(hello.size()-0).isEmpty());
+ QVERIFY(!hello.mid(hello.size()-0).isNull());
QVERIFY(hello.mid(hello.size()-1) == "o");
QVERIFY(hello.mid(hello.size()-2) == "lo");
QVERIFY(hello.mid(hello.size()-200) == "hello");
diff --git a/tests/auto/other/compiler/baseclass.cpp b/tests/auto/other/compiler/baseclass.cpp
index 5eea58d1dc..541ccfcf9e 100644
--- a/tests/auto/other/compiler/baseclass.cpp
+++ b/tests/auto/other/compiler/baseclass.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/compiler/baseclass.h b/tests/auto/other/compiler/baseclass.h
index 1cfa1079a4..b6bc60c46e 100644
--- a/tests/auto/other/compiler/baseclass.h
+++ b/tests/auto/other/compiler/baseclass.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/compiler/derivedclass.cpp b/tests/auto/other/compiler/derivedclass.cpp
index e43e2f9b5b..9d2cbe74da 100644
--- a/tests/auto/other/compiler/derivedclass.cpp
+++ b/tests/auto/other/compiler/derivedclass.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/compiler/derivedclass.h b/tests/auto/other/compiler/derivedclass.h
index 47227a95b5..5456bd726e 100644
--- a/tests/auto/other/compiler/derivedclass.h
+++ b/tests/auto/other/compiler/derivedclass.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/compiler/tst_compiler.cpp b/tests/auto/other/compiler/tst_compiler.cpp
index db57af63bb..43e3788098 100644
--- a/tests/auto/other/compiler/tst_compiler.cpp
+++ b/tests/auto/other/compiler/tst_compiler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/exceptionsafety/tst_exceptionsafety.cpp b/tests/auto/other/exceptionsafety/tst_exceptionsafety.cpp
index 309f6b7d78..b7fcfe8953 100644
--- a/tests/auto/other/exceptionsafety/tst_exceptionsafety.cpp
+++ b/tests/auto/other/exceptionsafety/tst_exceptionsafety.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/exceptionsafety_objects/oomsimulator.h b/tests/auto/other/exceptionsafety_objects/oomsimulator.h
index 0727723d47..a6d046a52c 100644
--- a/tests/auto/other/exceptionsafety_objects/oomsimulator.h
+++ b/tests/auto/other/exceptionsafety_objects/oomsimulator.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/exceptionsafety_objects/tst_exceptionsafety_objects.cpp b/tests/auto/other/exceptionsafety_objects/tst_exceptionsafety_objects.cpp
index 7e569fe7f7..71a70384fc 100644
--- a/tests/auto/other/exceptionsafety_objects/tst_exceptionsafety_objects.cpp
+++ b/tests/auto/other/exceptionsafety_objects/tst_exceptionsafety_objects.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/gestures/tst_gestures.cpp b/tests/auto/other/gestures/tst_gestures.cpp
index daa1893807..01e26b6608 100644
--- a/tests/auto/other/gestures/tst_gestures.cpp
+++ b/tests/auto/other/gestures/tst_gestures.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/headersclean/tst_headersclean.cpp b/tests/auto/other/headersclean/tst_headersclean.cpp
index 807f97af69..41992b8d2a 100644
--- a/tests/auto/other/headersclean/tst_headersclean.cpp
+++ b/tests/auto/other/headersclean/tst_headersclean.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/lancelot/paintcommands.cpp b/tests/auto/other/lancelot/paintcommands.cpp
index 08c6918eb6..d810e6e41a 100644
--- a/tests/auto/other/lancelot/paintcommands.cpp
+++ b/tests/auto/other/lancelot/paintcommands.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/lancelot/paintcommands.h b/tests/auto/other/lancelot/paintcommands.h
index b22ab58b32..f11031a3b5 100644
--- a/tests/auto/other/lancelot/paintcommands.h
+++ b/tests/auto/other/lancelot/paintcommands.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/lancelot/tst_lancelot.cpp b/tests/auto/other/lancelot/tst_lancelot.cpp
index 50688ffa17..05623f9f5c 100644
--- a/tests/auto/other/lancelot/tst_lancelot.cpp
+++ b/tests/auto/other/lancelot/tst_lancelot.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/languagechange/tst_languagechange.cpp b/tests/auto/other/languagechange/tst_languagechange.cpp
index 12b35795fe..b4bd766df7 100644
--- a/tests/auto/other/languagechange/tst_languagechange.cpp
+++ b/tests/auto/other/languagechange/tst_languagechange.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/macgui/guitest.cpp b/tests/auto/other/macgui/guitest.cpp
index 6ab5a64a97..5578363fe9 100644
--- a/tests/auto/other/macgui/guitest.cpp
+++ b/tests/auto/other/macgui/guitest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,7 @@
#include <QtTest/QtTest>
#ifdef Q_OS_MAC
-# include <private/qt_mac_p.h>
+# include <ApplicationServices/ApplicationServices.h>
#endif
diff --git a/tests/auto/other/macgui/guitest.h b/tests/auto/other/macgui/guitest.h
index 39a63b0443..3a5382ebe7 100644
--- a/tests/auto/other/macgui/guitest.h
+++ b/tests/auto/other/macgui/guitest.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/macgui/tst_macgui.cpp b/tests/auto/other/macgui/tst_macgui.cpp
index 8f66d54a2c..e1fddabf9f 100644
--- a/tests/auto/other/macgui/tst_macgui.cpp
+++ b/tests/auto/other/macgui/tst_macgui.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/macnativeevents/expectedeventlist.cpp b/tests/auto/other/macnativeevents/expectedeventlist.cpp
index 9067a38ec6..de92611ce4 100644
--- a/tests/auto/other/macnativeevents/expectedeventlist.cpp
+++ b/tests/auto/other/macnativeevents/expectedeventlist.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/macnativeevents/expectedeventlist.h b/tests/auto/other/macnativeevents/expectedeventlist.h
index fb4c18d493..39191778c1 100644
--- a/tests/auto/other/macnativeevents/expectedeventlist.h
+++ b/tests/auto/other/macnativeevents/expectedeventlist.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/macnativeevents/nativeeventlist.cpp b/tests/auto/other/macnativeevents/nativeeventlist.cpp
index 781c3f5374..d6e786fc91 100644
--- a/tests/auto/other/macnativeevents/nativeeventlist.cpp
+++ b/tests/auto/other/macnativeevents/nativeeventlist.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/macnativeevents/nativeeventlist.h b/tests/auto/other/macnativeevents/nativeeventlist.h
index f6493e56da..c4e0474a86 100644
--- a/tests/auto/other/macnativeevents/nativeeventlist.h
+++ b/tests/auto/other/macnativeevents/nativeeventlist.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/macnativeevents/qnativeevents.cpp b/tests/auto/other/macnativeevents/qnativeevents.cpp
index 79667adcd0..5d31ba78fa 100644
--- a/tests/auto/other/macnativeevents/qnativeevents.cpp
+++ b/tests/auto/other/macnativeevents/qnativeevents.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/macnativeevents/qnativeevents.h b/tests/auto/other/macnativeevents/qnativeevents.h
index 3a3e4f1590..b5b4dc0832 100644
--- a/tests/auto/other/macnativeevents/qnativeevents.h
+++ b/tests/auto/other/macnativeevents/qnativeevents.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/macnativeevents/qnativeevents_mac.cpp b/tests/auto/other/macnativeevents/qnativeevents_mac.cpp
index 35028f9cf7..b635bccd17 100644
--- a/tests/auto/other/macnativeevents/qnativeevents_mac.cpp
+++ b/tests/auto/other/macnativeevents/qnativeevents_mac.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/macnativeevents/tst_macnativeevents.cpp b/tests/auto/other/macnativeevents/tst_macnativeevents.cpp
index c5131e19fc..9ab1499c47 100644
--- a/tests/auto/other/macnativeevents/tst_macnativeevents.cpp
+++ b/tests/auto/other/macnativeevents/tst_macnativeevents.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/macplist/app/main.cpp b/tests/auto/other/macplist/app/main.cpp
index c28c372f08..51c82c88aa 100644
--- a/tests/auto/other/macplist/app/main.cpp
+++ b/tests/auto/other/macplist/app/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/macplist/tst_macplist.cpp b/tests/auto/other/macplist/tst_macplist.cpp
index f2b47c1d99..c527da8522 100644
--- a/tests/auto/other/macplist/tst_macplist.cpp
+++ b/tests/auto/other/macplist/tst_macplist.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/modeltest/dynamictreemodel.cpp b/tests/auto/other/modeltest/dynamictreemodel.cpp
index 5ab37ab112..325fc19db2 100644
--- a/tests/auto/other/modeltest/dynamictreemodel.cpp
+++ b/tests/auto/other/modeltest/dynamictreemodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Stephen Kelly <steveire@gmail.com>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/modeltest/dynamictreemodel.h b/tests/auto/other/modeltest/dynamictreemodel.h
index 6f52d78588..04f7f19b1b 100644
--- a/tests/auto/other/modeltest/dynamictreemodel.h
+++ b/tests/auto/other/modeltest/dynamictreemodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2009 Stephen Kelly <steveire@gmail.com>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/modeltest/modeltest.cpp b/tests/auto/other/modeltest/modeltest.cpp
index 118b4a8e1f..876b6a1365 100644
--- a/tests/auto/other/modeltest/modeltest.cpp
+++ b/tests/auto/other/modeltest/modeltest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/modeltest/modeltest.h b/tests/auto/other/modeltest/modeltest.h
index f70aebabde..1b254a4009 100644
--- a/tests/auto/other/modeltest/modeltest.h
+++ b/tests/auto/other/modeltest/modeltest.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/modeltest/tst_modeltest.cpp b/tests/auto/other/modeltest/tst_modeltest.cpp
index fa9b98acb6..33eb4115e6 100644
--- a/tests/auto/other/modeltest/tst_modeltest.cpp
+++ b/tests/auto/other/modeltest/tst_modeltest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/networkselftest/tst_networkselftest.cpp b/tests/auto/other/networkselftest/tst_networkselftest.cpp
index 3129fd965d..c1a3cd17d2 100644
--- a/tests/auto/other/networkselftest/tst_networkselftest.cpp
+++ b/tests/auto/other/networkselftest/tst_networkselftest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/other.pro b/tests/auto/other/other.pro
index f0c9b11493..69fe00dc19 100644
--- a/tests/auto/other/other.pro
+++ b/tests/auto/other/other.pro
@@ -17,7 +17,6 @@ SUBDIRS=\
networkselftest \
qaccessibility \
qcomplextext \
- qdirectpainter \
qfocusevent \
qmultiscreen \
qnetworkaccessmanager_and_qprogressdialog \
diff --git a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
index 90ab5b4c67..eca5814b8e 100644
--- a/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
+++ b/tests/auto/other/qaccessibility/tst_qaccessibility.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -233,7 +233,6 @@ private slots:
void statesStructTest();
void navigateHierarchy();
void sliderTest();
- void navigateCovered();
void textAttributes();
void hideShowTest();
@@ -515,112 +514,6 @@ void tst_QAccessibility::sliderTest()
QTestAccessibility::clearEvents();
}
-void tst_QAccessibility::navigateCovered()
-{
- {
- QWidget *w = new QWidget(0);
- w->setObjectName(QString("Harry"));
- QWidget *w1 = new QWidget(w);
- w1->setObjectName(QString("1"));
- QWidget *w2 = new QWidget(w);
- w2->setObjectName(QString("2"));
- w->show();
-#if defined(Q_OS_UNIX)
- QCoreApplication::processEvents();
- QTest::qWait(100);
-#endif
-
- w->setFixedSize(6, 6);
- w1->setFixedSize(5, 5);
- w2->setFixedSize(5, 5);
- w2->move(0, 0);
- w1->raise();
-
- QAccessibleInterface *iface1 = QAccessible::queryAccessibleInterface(w1);
- QVERIFY(iface1 != 0);
- QVERIFY(iface1->isValid());
- QAccessibleInterface *iface2 = QAccessible::queryAccessibleInterface(w2);
- QVERIFY(iface2 != 0);
- QVERIFY(iface2->isValid());
- QAccessibleInterface *iface3 = 0;
-
- QCOMPARE(iface1->navigate(QAccessible::Covers, -42, &iface3), -1);
- QVERIFY(iface3 == 0);
- QCOMPARE(iface1->navigate(QAccessible::Covers, 0, &iface3), -1);
- QVERIFY(iface3 == 0);
- QCOMPARE(iface1->navigate(QAccessible::Covers, 2, &iface3), -1);
- QVERIFY(iface3 == 0);
-
- for (int loop = 0; loop < 2; ++loop) {
- for (int x = 0; x < w->width(); ++x) {
- for (int y = 0; y < w->height(); ++y) {
- w1->move(x, y);
- if (w1->geometry().intersects(w2->geometry())) {
- QVERIFY(iface1->relationTo(iface2) & QAccessible::Covers);
- QVERIFY(iface2->relationTo(iface1) & QAccessible::Covered);
- QCOMPARE(iface1->navigate(QAccessible::Covered, 1, &iface3), 0);
- QVERIFY(iface3 != 0);
- QVERIFY(iface3->isValid());
- QCOMPARE(iface3->object(), iface2->object());
- delete iface3; iface3 = 0;
- QCOMPARE(iface2->navigate(QAccessible::Covers, 1, &iface3), 0);
- QVERIFY(iface3 != 0);
- QVERIFY(iface3->isValid());
- QCOMPARE(iface3->object(), iface1->object());
- delete iface3; iface3 = 0;
- } else {
- QVERIFY(!(iface1->relationTo(iface2) & QAccessible::Covers));
- QVERIFY(!(iface2->relationTo(iface1) & QAccessible::Covered));
- QCOMPARE(iface1->navigate(QAccessible::Covered, 1, &iface3), -1);
- QVERIFY(iface3 == 0);
- QCOMPARE(iface1->navigate(QAccessible::Covers, 1, &iface3), -1);
- QVERIFY(iface3 == 0);
- QCOMPARE(iface2->navigate(QAccessible::Covered, 1, &iface3), -1);
- QVERIFY(iface3 == 0);
- QCOMPARE(iface2->navigate(QAccessible::Covers, 1, &iface3), -1);
- QVERIFY(iface3 == 0);
- }
- }
- }
- if (!loop) {
- // switch children for second loop
- w2->raise();
- QAccessibleInterface *temp = iface1;
- iface1 = iface2;
- iface2 = temp;
- }
- }
- delete iface1; iface1 = 0;
- delete iface2; iface2 = 0;
- iface1 = QAccessible::queryAccessibleInterface(w1);
- QVERIFY(iface1 != 0);
- QVERIFY(iface1->isValid());
- iface2 = QAccessible::queryAccessibleInterface(w2);
- QVERIFY(iface2 != 0);
- QVERIFY(iface2->isValid());
-
- w1->move(0,0);
- w2->move(0,0);
- w1->raise();
- QVERIFY(iface1->relationTo(iface2) & QAccessible::Covers);
- QVERIFY(iface2->relationTo(iface1) & QAccessible::Covered);
- QVERIFY(!iface1->state().invisible);
- w1->hide();
- QVERIFY(iface1->state().invisible);
- QVERIFY(!(iface1->relationTo(iface2) & QAccessible::Covers));
- QVERIFY(!(iface2->relationTo(iface1) & QAccessible::Covered));
- QCOMPARE(iface2->navigate(QAccessible::Covered, 1, &iface3), -1);
- QVERIFY(iface3 == 0);
- QCOMPARE(iface1->navigate(QAccessible::Covers, 1, &iface3), -1);
- QVERIFY(iface3 == 0);
-
- delete iface1; iface1 = 0;
- delete iface2; iface2 = 0;
- delete w;
- }
- QTestAccessibility::clearEvents();
-}
-
void tst_QAccessibility::navigateHierarchy()
{
{
@@ -1366,7 +1259,7 @@ void tst_QAccessibility::menuTest()
QCOMPARE(iSeparator->role(), QAccessible::Separator);
QCOMPARE(iHelp->role(), QAccessible::MenuItem);
QCOMPARE(iAction->role(), QAccessible::MenuItem);
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
#ifdef Q_OS_WINCE
if (!IsValidCEPlatform())
QSKIP("Tests do not work on Mobile platforms due to native menus");
@@ -2794,7 +2687,7 @@ void tst_QAccessibility::accelerators()
label->setText(tr("Q &&A"));
QCOMPARE(accLineEdit->text(QAccessible::Accelerator), QString());
-#if !defined(QT_NO_DEBUG) && !defined(Q_WS_MAC)
+#if !defined(QT_NO_DEBUG) && !defined(Q_OS_MAC)
QTest::ignoreMessage(QtWarningMsg, "QKeySequence::mnemonic: \"Q &A&B\" contains multiple occurrences of '&'");
#endif
label->setText(tr("Q &A&B"));
diff --git a/tests/auto/other/qcomplextext/bidireorderstring.h b/tests/auto/other/qcomplextext/bidireorderstring.h
index 32f0c81e69..4289c868e5 100644
--- a/tests/auto/other/qcomplextext/bidireorderstring.h
+++ b/tests/auto/other/qcomplextext/bidireorderstring.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qcomplextext/tst_qcomplextext.cpp b/tests/auto/other/qcomplextext/tst_qcomplextext.cpp
index c741a76a7e..6b418d7c46 100644
--- a/tests/auto/other/qcomplextext/tst_qcomplextext.cpp
+++ b/tests/auto/other/qcomplextext/tst_qcomplextext.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -42,7 +42,7 @@
// Horrible hack, but this get this out of the way for now
// Carlos Duclos, 2007-12-11
-#if !defined(Q_WS_MAC)
+#if !defined(Q_OS_MAC)
#include <QtTest/QtTest>
#include <QtGui/QtGui>
@@ -286,5 +286,5 @@ void tst_QComplexText::bidiCursor_PDF()
QTEST_MAIN(tst_QComplexText)
#include "tst_qcomplextext.moc"
-#endif // Q_WS_MAC
+#endif // Q_OS_MAC
diff --git a/tests/auto/other/qdirectpainter/.gitignore b/tests/auto/other/qdirectpainter/.gitignore
deleted file mode 100644
index 615dfa8ddc..0000000000
--- a/tests/auto/other/qdirectpainter/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-tst_qdirectpainter
-runDirectPainter/runDirectPainter
diff --git a/tests/auto/other/qdirectpainter/qdirectpainter.pro b/tests/auto/other/qdirectpainter/qdirectpainter.pro
deleted file mode 100644
index e86b3427eb..0000000000
--- a/tests/auto/other/qdirectpainter/qdirectpainter.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-TEMPLATE = subdirs
-SUBDIRS = test runDirectPainter
-
-requires(embedded)
-
diff --git a/tests/auto/other/qdirectpainter/runDirectPainter/main.cpp b/tests/auto/other/qdirectpainter/runDirectPainter/main.cpp
deleted file mode 100644
index 475cb9c035..0000000000
--- a/tests/auto/other/qdirectpainter/runDirectPainter/main.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite 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 <QApplication>
-#include <QCopChannel>
-#include <QDirectPainter>
-#include <QImage>
-#include <QScreen>
-#include <QPainter>
-
-int main(int argc, char** argv)
-{
-#ifdef Q_WS_QWS
- QApplication app(argc, argv);
- QDirectPainter dp;
- QImage screenImage(dp.frameBuffer(), dp.screenWidth(), dp.screenHeight(),
- dp.linestep(), QScreen::instance()->pixelFormat());
- QPainter p;
-
- QStringList args = app.arguments();
-
- dp.setRegion(QRect(args.at(1).toInt(),
- args.at(2).toInt(),
- args.at(3).toInt(),
- args.at(4).toInt()));
-
- for (;;) {
- dp.startPainting();
- p.begin(&screenImage);
- p.setPen(Qt::NoPen);
- p.setBrush(Qt::blue);
- p.drawRects(dp.allocatedRegion().rects());
- p.end();
- dp.endPainting(dp.allocatedRegion());
- app.processEvents();
- }
-#else
- Q_UNUSED(argc);
- Q_UNUSED(argv);
-#endif
-
- return 0;
-}
-
diff --git a/tests/auto/other/qdirectpainter/runDirectPainter/runDirectPainter.pro b/tests/auto/other/qdirectpainter/runDirectPainter/runDirectPainter.pro
deleted file mode 100644
index 5b70dc6b7b..0000000000
--- a/tests/auto/other/qdirectpainter/runDirectPainter/runDirectPainter.pro
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG += testcase
-QT += testlib
-SOURCES = main.cpp
-TARGET = runDirectPainter
-
-requires(embedded)
-
diff --git a/tests/auto/other/qdirectpainter/test/test.pro b/tests/auto/other/qdirectpainter/test/test.pro
deleted file mode 100644
index 1f6813670d..0000000000
--- a/tests/auto/other/qdirectpainter/test/test.pro
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG += testcase
-QT += widgets testlib
-SOURCES += ../tst_qdirectpainter.cpp
-TARGET = ../tst_qdirectpainter
-
-requires(embedded)
-
diff --git a/tests/auto/other/qdirectpainter/tst_qdirectpainter.cpp b/tests/auto/other/qdirectpainter/tst_qdirectpainter.cpp
deleted file mode 100644
index 352dd96dd9..0000000000
--- a/tests/auto/other/qdirectpainter/tst_qdirectpainter.cpp
+++ /dev/null
@@ -1,242 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite 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 <QtTest/QtTest>
-
-#include <qwindowsystem_qws.h>
-#include <qpainter.h>
-#include <qdesktopwidget.h>
-#include <qdirectpainter_qws.h>
-#include <private/qwindowsurface_qws_p.h>
-#include <private/qdrawhelper_p.h>
-
-class tst_QDirectPainter : public QObject
-{
- Q_OBJECT
-
-public:
- tst_QDirectPainter() {}
- ~tst_QDirectPainter() {}
-
-private slots:
- void initTestCase();
- void setGeometry_data();
- void setGeometry();
-#ifndef QT_NO_PROCESS
- void regionSynchronization();
-#endif
- void reservedSynchronous();
-
-private:
- QWSWindow* getWindow(int windId);
- QColor bgColor;
-};
-
-class ColorPainter : public QDirectPainter
-{
-public:
- ColorPainter(SurfaceFlag flag = NonReserved,
- const QColor &color = QColor(Qt::red))
- : QDirectPainter(0, flag), c(color) {}
-
- QColor color() { return c; }
-
-protected:
- void regionChanged(const QRegion &region) {
- QScreen::instance()->solidFill(c, region);
- }
-
-private:
- QColor c;
- QRegion r;
-};
-
-Q_DECLARE_METATYPE(QDirectPainter::SurfaceFlag)
-
-void tst_QDirectPainter::initTestCase()
-{
- bgColor = QColor(Qt::green);
-
- QWSServer *server = QWSServer::instance();
- server->setBackground(bgColor);
-}
-
-QWSWindow* tst_QDirectPainter::getWindow(int winId)
-{
- QWSServer *server = QWSServer::instance();
- foreach (QWSWindow *w, server->clientWindows()) {
- if (w->winId() == winId)
- return w;
- }
- return 0;
-}
-
-class ColorWidget : public QWidget
-{
-public:
- ColorWidget(QWidget *parent = 0, const QColor &c = QColor(Qt::red))
- : QWidget(parent, Qt::FramelessWindowHint), color(c)
- {
- QPalette opaquePalette = palette();
- opaquePalette.setColor(backgroundRole(), color);
- setPalette(opaquePalette);
- setAutoFillBackground(true);
- }
-
- void paintEvent(QPaintEvent *e) {
- r += e->region();
- }
-
- void reset() {
- r = QRegion();
- }
-
- QColor color;
- QRegion r;
-};
-
-#define VERIFY_COLOR(rect, color) { \
- const QPixmap pixmap = QPixmap::grabWindow(QDesktopWidget().winId(), \
- rect.left(), rect.top(), \
- rect.width(), rect.height()); \
- QCOMPARE(pixmap.size(), rect.size()); \
- QPixmap expectedPixmap(pixmap); /* ensure equal formats */ \
- expectedPixmap.fill(color); \
- QCOMPARE(pixmap, expectedPixmap); \
-}
-
-void tst_QDirectPainter::setGeometry_data()
-{
- QTest::addColumn<QDirectPainter::SurfaceFlag>("flag");
-
- QTest::newRow("NonReserved") << QDirectPainter::NonReserved;
- QTest::newRow("Reserved") << QDirectPainter::Reserved;
- QTest::newRow("ReservedSynchronous") << QDirectPainter::ReservedSynchronous;
-}
-
-void tst_QDirectPainter::setGeometry()
-{
- QFETCH(QDirectPainter::SurfaceFlag, flag);
-
- const QRect rect(100, 100, 100, 100);
- {
- ColorPainter w(flag);
-
- w.setGeometry(rect);
- QApplication::processEvents();
- QCOMPARE(w.geometry(), rect);
- VERIFY_COLOR(rect, w.color());
- }
- QApplication::processEvents();
- VERIFY_COLOR(rect, bgColor);
-}
-
-#ifndef QT_NO_PROCESS
-void tst_QDirectPainter::regionSynchronization()
-{
- QRect dpRect(10, 10, 50, 50);
-
- // Start the direct painter in a different process
- QProcess proc;
- QStringList args;
- args << QString::number(dpRect.x())
- << QString::number(dpRect.y())
- << QString::number(dpRect.width())
- << QString::number(dpRect.height());
-
- proc.start("runDirectPainter/runDirectPainter", args);
- QVERIFY(proc.waitForStarted(5 * 1000));
- QTest::qWait(1000);
- QApplication::processEvents();
- VERIFY_COLOR(dpRect, Qt::blue); // blue hardcoded in runDirectPainter
-
- QTime t;
- t.start();
- static int i = 0;
- while (t.elapsed() < 10 * 1000) {
- QApplication::processEvents();
-
- ColorWidget w;
- w.setGeometry(10, 10, 50, 50);
- const QRect wRect = dpRect.translated(10, 0);
- w.setGeometry(wRect);
- w.show();
-
- QApplication::processEvents();
- QApplication::processEvents(); //glib event loop workaround
- VERIFY_COLOR(wRect, w.color);
- ++i;
- }
- QVERIFY(i > 100); // sanity check
-
- proc.kill();
-}
-#endif
-
-class MyObject : public QObject
-{
-public:
- MyObject(QObject *p = 0) : QObject(p), lastEvent(0) {}
-
- bool event(QEvent *e) {
- lastEvent = e;
- return true;
- }
-
- QEvent *lastEvent;
-};
-
-void tst_QDirectPainter::reservedSynchronous()
-{
- MyObject o;
- QCoreApplication::postEvent(&o, new QEvent(QEvent::None));
- QDirectPainter p(0, QDirectPainter::ReservedSynchronous);
- p.setRegion(QRect(5, 5, 50, 50));
-
- // The event loop should not have been executed
- QVERIFY(o.lastEvent == 0);
- QCOMPARE(p.allocatedRegion(), QRegion(QRect(5, 5, 50, 50)));
-}
-
-QTEST_MAIN(tst_QDirectPainter)
-
-#include "tst_qdirectpainter.moc"
diff --git a/tests/auto/other/qfocusevent/tst_qfocusevent.cpp b/tests/auto/other/qfocusevent/tst_qfocusevent.cpp
index 9f82a72f65..946003fc72 100644
--- a/tests/auto/other/qfocusevent/tst_qfocusevent.cpp
+++ b/tests/auto/other/qfocusevent/tst_qfocusevent.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -136,7 +136,7 @@ void tst_QFocusEvent::initTestCase()
testFocusWidget->resize( 200,100 );
testFocusWidget->show();
// Applications don't get focus when launched from the command line on Mac.
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
testFocusWidget->raise();
#endif
}
@@ -279,7 +279,7 @@ void tst_QFocusEvent::checkReason_Popup()
QVERIFY( !childFocusWidgetTwo->focusOutEventRecieved );
}
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QT_BEGIN_NAMESPACE
extern void qt_set_sequence_auto_mnemonic(bool);
QT_END_NAMESPACE
@@ -288,7 +288,7 @@ QT_END_NAMESPACE
void tst_QFocusEvent::checkReason_Shortcut()
{
initWidget();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
qt_set_sequence_auto_mnemonic(true);
#endif
QLabel* label = new QLabel( "&Test", testFocusWidget );
@@ -318,7 +318,7 @@ void tst_QFocusEvent::checkReason_Shortcut()
label->hide();
QVERIFY( childFocusWidgetTwo->hasFocus() );
QVERIFY( !childFocusWidgetOne->hasFocus() );
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
qt_set_sequence_auto_mnemonic(false);
#endif
}
diff --git a/tests/auto/other/qmultiscreen/tst_qmultiscreen.cpp b/tests/auto/other/qmultiscreen/tst_qmultiscreen.cpp
index e6f2432e64..9beb0666eb 100644
--- a/tests/auto/other/qmultiscreen/tst_qmultiscreen.cpp
+++ b/tests/auto/other/qmultiscreen/tst_qmultiscreen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qnetworkaccessmanager_and_qprogressdialog/tst_qnetworkaccessmanager_and_qprogressdialog.cpp b/tests/auto/other/qnetworkaccessmanager_and_qprogressdialog/tst_qnetworkaccessmanager_and_qprogressdialog.cpp
index 6cf4147091..e6cf2b3d1f 100644
--- a/tests/auto/other/qnetworkaccessmanager_and_qprogressdialog/tst_qnetworkaccessmanager_and_qprogressdialog.cpp
+++ b/tests/auto/other/qnetworkaccessmanager_and_qprogressdialog/tst_qnetworkaccessmanager_and_qprogressdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qobjectperformance/tst_qobjectperformance.cpp b/tests/auto/other/qobjectperformance/tst_qobjectperformance.cpp
index 2533cfb55b..c1144739ed 100644
--- a/tests/auto/other/qobjectperformance/tst_qobjectperformance.cpp
+++ b/tests/auto/other/qobjectperformance/tst_qobjectperformance.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qobjectrace/tst_qobjectrace.cpp b/tests/auto/other/qobjectrace/tst_qobjectrace.cpp
index 41e3001415..5cec1db564 100644
--- a/tests/auto/other/qobjectrace/tst_qobjectrace.cpp
+++ b/tests/auto/other/qobjectrace/tst_qobjectrace.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qsharedpointer_and_qwidget/tst_qsharedpointer_and_qwidget.cpp b/tests/auto/other/qsharedpointer_and_qwidget/tst_qsharedpointer_and_qwidget.cpp
index 3cda8ed1ee..6540ab596b 100644
--- a/tests/auto/other/qsharedpointer_and_qwidget/tst_qsharedpointer_and_qwidget.cpp
+++ b/tests/auto/other/qsharedpointer_and_qwidget/tst_qsharedpointer_and_qwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qtokenautomaton/generateTokenizers.sh b/tests/auto/other/qtokenautomaton/generateTokenizers.sh
index 0a67a1dca0..bca523acfc 100755
--- a/tests/auto/other/qtokenautomaton/generateTokenizers.sh
+++ b/tests/auto/other/qtokenautomaton/generateTokenizers.sh
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is the build configuration utility of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
diff --git a/tests/auto/other/qtokenautomaton/tokenizers/basic/basic.cpp b/tests/auto/other/qtokenautomaton/tokenizers/basic/basic.cpp
index 89e22719d1..52da03f9b0 100644
--- a/tests/auto/other/qtokenautomaton/tokenizers/basic/basic.cpp
+++ b/tests/auto/other/qtokenautomaton/tokenizers/basic/basic.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qtokenautomaton/tokenizers/basic/basic.h b/tests/auto/other/qtokenautomaton/tokenizers/basic/basic.h
index 8ff67a5b23..54595062af 100644
--- a/tests/auto/other/qtokenautomaton/tokenizers/basic/basic.h
+++ b/tests/auto/other/qtokenautomaton/tokenizers/basic/basic.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.cpp b/tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.cpp
index 5eab3d972a..46823dca97 100644
--- a/tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.cpp
+++ b/tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.h b/tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.h
index 147619604c..82e3b3ed2c 100644
--- a/tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.h
+++ b/tests/auto/other/qtokenautomaton/tokenizers/basicNamespace/basicNamespace.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.cpp b/tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.cpp
index ba7cdfac91..78a3da06ab 100644
--- a/tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.cpp
+++ b/tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.h b/tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.h
index ec3631e272..453a5bc168 100644
--- a/tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.h
+++ b/tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.xml b/tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.xml
index c6f37a218b..40b237817a 100644
--- a/tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.xml
+++ b/tests/auto/other/qtokenautomaton/tokenizers/boilerplate/boilerplate.xml
@@ -24,8 +24,7 @@
<prolog>/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -58,6 +57,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.cpp b/tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.cpp
index 38f7ca90a3..a86631cb98 100644
--- a/tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.cpp
+++ b/tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.h b/tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.h
index 086a9a0ce4..9f0e0d6ab9 100644
--- a/tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.h
+++ b/tests/auto/other/qtokenautomaton/tokenizers/noNamespace/noNamespace.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.cpp b/tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.cpp
index a62eab1da7..1b2e3ce181 100644
--- a/tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.cpp
+++ b/tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.h b/tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.h
index f551b46f47..807400c60a 100644
--- a/tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.h
+++ b/tests/auto/other/qtokenautomaton/tokenizers/noToString/noToString.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.cpp b/tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.cpp
index fdff637450..7434affc9b 100644
--- a/tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.cpp
+++ b/tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.h b/tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.h
index 627da4b93a..473dbc0a0c 100644
--- a/tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.h
+++ b/tests/auto/other/qtokenautomaton/tokenizers/withNamespace/withNamespace.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/qtokenautomaton/tst_qtokenautomaton.cpp b/tests/auto/other/qtokenautomaton/tst_qtokenautomaton.cpp
index 789d2f6491..894e59856c 100644
--- a/tests/auto/other/qtokenautomaton/tst_qtokenautomaton.cpp
+++ b/tests/auto/other/qtokenautomaton/tst_qtokenautomaton.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/windowsmobile/test/ddhelper.cpp b/tests/auto/other/windowsmobile/test/ddhelper.cpp
index 7a8c9ea94e..976a0e4e8a 100644
--- a/tests/auto/other/windowsmobile/test/ddhelper.cpp
+++ b/tests/auto/other/windowsmobile/test/ddhelper.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/windowsmobile/test/ddhelper.h b/tests/auto/other/windowsmobile/test/ddhelper.h
index de3f79afca..9c5b77c2f8 100644
--- a/tests/auto/other/windowsmobile/test/ddhelper.h
+++ b/tests/auto/other/windowsmobile/test/ddhelper.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/windowsmobile/test/tst_windowsmobile.cpp b/tests/auto/other/windowsmobile/test/tst_windowsmobile.cpp
index b211f3e6e2..f201e67ba9 100644
--- a/tests/auto/other/windowsmobile/test/tst_windowsmobile.cpp
+++ b/tests/auto/other/windowsmobile/test/tst_windowsmobile.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/other/windowsmobile/testQMenuBar/main.cpp b/tests/auto/other/windowsmobile/testQMenuBar/main.cpp
index 2c39605f54..f41059b8b0 100644
--- a/tests/auto/other/windowsmobile/testQMenuBar/main.cpp
+++ b/tests/auto/other/windowsmobile/testQMenuBar/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/platformquirks.h b/tests/auto/platformquirks.h
index 35ef232aa3..136e084270 100644
--- a/tests/auto/platformquirks.h
+++ b/tests/auto/platformquirks.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/sql/kernel/qsql/tst_qsql.cpp b/tests/auto/sql/kernel/qsql/tst_qsql.cpp
index 21459a0080..b02093adae 100644
--- a/tests/auto/sql/kernel/qsql/tst_qsql.cpp
+++ b/tests/auto/sql/kernel/qsql/tst_qsql.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_databases.h b/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
index 767744a8a9..c435c22334 100644
--- a/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
+++ b/tests/auto/sql/kernel/qsqldatabase/tst_databases.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
index b018c7428b..7acbf816f1 100644
--- a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
+++ b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -965,7 +965,7 @@ void tst_QSqlDatabase::recordSQLite()
FieldDef("integer", QVariant::Int, QVariant(13)),
FieldDef("int", QVariant::Int, QVariant(12)),
- FieldDef("real", QVariant::String, QVariant(1.234567890123456)),
+ FieldDef("real", QVariant::Double, QVariant(1.234567890123456)),
FieldDef()
};
diff --git a/tests/auto/sql/kernel/qsqldriver/tst_qsqldriver.cpp b/tests/auto/sql/kernel/qsqldriver/tst_qsqldriver.cpp
index 410389e53a..68a347ebdb 100644
--- a/tests/auto/sql/kernel/qsqldriver/tst_qsqldriver.cpp
+++ b/tests/auto/sql/kernel/qsqldriver/tst_qsqldriver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/sql/kernel/qsqlerror/tst_qsqlerror.cpp b/tests/auto/sql/kernel/qsqlerror/tst_qsqlerror.cpp
index 5a2b4b3f57..687be419b5 100644
--- a/tests/auto/sql/kernel/qsqlerror/tst_qsqlerror.cpp
+++ b/tests/auto/sql/kernel/qsqlerror/tst_qsqlerror.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/sql/kernel/qsqlfield/tst_qsqlfield.cpp b/tests/auto/sql/kernel/qsqlfield/tst_qsqlfield.cpp
index 75fb6e19ce..5a37cc4cdd 100644
--- a/tests/auto/sql/kernel/qsqlfield/tst_qsqlfield.cpp
+++ b/tests/auto/sql/kernel/qsqlfield/tst_qsqlfield.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
index 76090fd947..b22e876c3c 100644
--- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
+++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -219,6 +219,9 @@ private slots:
void sqlite_constraint_data() { generic_data("QSQLITE"); }
void sqlite_constraint();
+ void sqlite_real_data() { generic_data("QSQLITE"); }
+ void sqlite_real();
+
private:
// returns all database connections
void generic_data(const QString &engine=QString());
@@ -3309,5 +3312,32 @@ void tst_QSqlQuery::sqlite_constraint()
QCOMPARE(q.lastError().databaseText(), QLatin1String("Raised Abort successfully"));
}
+void tst_QSqlQuery::sqlite_real()
+{
+ QFETCH(QString, dbName);
+ QSqlDatabase db = QSqlDatabase::database(dbName);
+ CHECK_DATABASE(db);
+ const QString tableName(qTableName("sqliterealtype", __FILE__));
+ tst_Databases::safeDropTable( db, tableName );
+
+ QSqlQuery q(db);
+ QVERIFY_SQL(q, exec("CREATE TABLE " + tableName + " (id INTEGER, realVal REAL)"));
+ QVERIFY_SQL(q, exec("INSERT INTO " + tableName + " (id, realVal) VALUES (1, 2.3)"));
+ QVERIFY_SQL(q, exec("SELECT realVal FROM " + tableName));
+ QVERIFY(q.next());
+ QCOMPARE(q.value(0).toDouble(), 2.3);
+ QCOMPARE(q.record().field(0).type(), QVariant::Double);
+
+ q.prepare("INSERT INTO " + tableName + " (id, realVal) VALUES (?, ?)");
+ QVariant var((double)5.6);
+ q.addBindValue(4);
+ q.addBindValue(var);
+ QVERIFY_SQL(q, exec());
+
+ QVERIFY_SQL(q, exec("SELECT realVal FROM " + tableName + " WHERE ID=4"));
+ QVERIFY(q.next());
+ QCOMPARE(q.value(0).toDouble(), 5.6);
+}
+
QTEST_MAIN( tst_QSqlQuery )
#include "tst_qsqlquery.moc"
diff --git a/tests/auto/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp b/tests/auto/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp
index 8dd130a543..28b6b0f859 100644
--- a/tests/auto/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp
+++ b/tests/auto/sql/kernel/qsqlrecord/tst_qsqlrecord.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/sql/kernel/qsqlthread/tst_qsqlthread.cpp b/tests/auto/sql/kernel/qsqlthread/tst_qsqlthread.cpp
index db92696084..66f6cd2999 100644
--- a/tests/auto/sql/kernel/qsqlthread/tst_qsqlthread.cpp
+++ b/tests/auto/sql/kernel/qsqlthread/tst_qsqlthread.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp b/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp
index 333b599c08..33793c013d 100644
--- a/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp
+++ b/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
index 0414ee235f..45b9c26824 100644
--- a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
+++ b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp b/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
index 067dd0f7b8..c8b5513a29 100644
--- a/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
+++ b/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/test.pl b/tests/auto/test.pl
index 8a9c54c7a2..3e1af479af 100755
--- a/tests/auto/test.pl
+++ b/tests/auto/test.pl
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is part of the test suite of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
diff --git a/tests/auto/testlib/qsignalspy/tst_qsignalspy.cpp b/tests/auto/testlib/qsignalspy/tst_qsignalspy.cpp
index 0499c2e38b..e17fd6ac2e 100644
--- a/tests/auto/testlib/qsignalspy/tst_qsignalspy.cpp
+++ b/tests/auto/testlib/qsignalspy/tst_qsignalspy.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/alive/qtestalive.cpp b/tests/auto/testlib/selftests/alive/qtestalive.cpp
index 5220142456..c2e597ac18 100644
--- a/tests/auto/testlib/selftests/alive/qtestalive.cpp
+++ b/tests/auto/testlib/selftests/alive/qtestalive.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/alive/tst_alive.cpp b/tests/auto/testlib/selftests/alive/tst_alive.cpp
index 112ef493b7..12f4a418cb 100644
--- a/tests/auto/testlib/selftests/alive/tst_alive.cpp
+++ b/tests/auto/testlib/selftests/alive/tst_alive.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/assert/tst_assert.cpp b/tests/auto/testlib/selftests/assert/tst_assert.cpp
index c2ec453317..e68b077b69 100644
--- a/tests/auto/testlib/selftests/assert/tst_assert.cpp
+++ b/tests/auto/testlib/selftests/assert/tst_assert.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/badxml/tst_badxml.cpp b/tests/auto/testlib/selftests/badxml/tst_badxml.cpp
index 0d10504020..1c9a0d9493 100644
--- a/tests/auto/testlib/selftests/badxml/tst_badxml.cpp
+++ b/tests/auto/testlib/selftests/badxml/tst_badxml.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/benchlibcallgrind/tst_benchlibcallgrind.cpp b/tests/auto/testlib/selftests/benchlibcallgrind/tst_benchlibcallgrind.cpp
index 7a7a190e7d..2b2d18082f 100644
--- a/tests/auto/testlib/selftests/benchlibcallgrind/tst_benchlibcallgrind.cpp
+++ b/tests/auto/testlib/selftests/benchlibcallgrind/tst_benchlibcallgrind.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/benchlibeventcounter/tst_benchlibeventcounter.cpp b/tests/auto/testlib/selftests/benchlibeventcounter/tst_benchlibeventcounter.cpp
index 8a9a7e3f3a..bcd703b5d1 100644
--- a/tests/auto/testlib/selftests/benchlibeventcounter/tst_benchlibeventcounter.cpp
+++ b/tests/auto/testlib/selftests/benchlibeventcounter/tst_benchlibeventcounter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/benchliboptions/tst_benchliboptions.cpp b/tests/auto/testlib/selftests/benchliboptions/tst_benchliboptions.cpp
index 2431a1df78..cb1f7feead 100644
--- a/tests/auto/testlib/selftests/benchliboptions/tst_benchliboptions.cpp
+++ b/tests/auto/testlib/selftests/benchliboptions/tst_benchliboptions.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/benchlibtickcounter/tst_benchlibtickcounter.cpp b/tests/auto/testlib/selftests/benchlibtickcounter/tst_benchlibtickcounter.cpp
index 38a7029262..c716cb28f3 100644
--- a/tests/auto/testlib/selftests/benchlibtickcounter/tst_benchlibtickcounter.cpp
+++ b/tests/auto/testlib/selftests/benchlibtickcounter/tst_benchlibtickcounter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/benchlibwalltime/tst_benchlibwalltime.cpp b/tests/auto/testlib/selftests/benchlibwalltime/tst_benchlibwalltime.cpp
index c079983e6c..b287ffecd8 100644
--- a/tests/auto/testlib/selftests/benchlibwalltime/tst_benchlibwalltime.cpp
+++ b/tests/auto/testlib/selftests/benchlibwalltime/tst_benchlibwalltime.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp b/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp
index 72d3ac9665..b99fb902b1 100644
--- a/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp
+++ b/tests/auto/testlib/selftests/cmptest/tst_cmptest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/commandlinedata/tst_commandlinedata.cpp b/tests/auto/testlib/selftests/commandlinedata/tst_commandlinedata.cpp
index d6d3db886b..5bcae25ab8 100644
--- a/tests/auto/testlib/selftests/commandlinedata/tst_commandlinedata.cpp
+++ b/tests/auto/testlib/selftests/commandlinedata/tst_commandlinedata.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/counting/counting.pro b/tests/auto/testlib/selftests/counting/counting.pro
new file mode 100644
index 0000000000..8aa2fe5753
--- /dev/null
+++ b/tests/auto/testlib/selftests/counting/counting.pro
@@ -0,0 +1,7 @@
+SOURCES += tst_counting.cpp
+QT = core testlib
+
+mac:CONFIG -= app_bundle
+CONFIG -= debug_and_release_target
+
+TARGET = counting
diff --git a/tests/auto/testlib/selftests/counting/tst_counting.cpp b/tests/auto/testlib/selftests/counting/tst_counting.cpp
new file mode 100644
index 0000000000..6758b533bb
--- /dev/null
+++ b/tests/auto/testlib/selftests/counting/tst_counting.cpp
@@ -0,0 +1,216 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <QtCore/QCoreApplication>
+#include <QtTest/QtTest>
+
+class tst_Counting : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void testPassPass_data();
+ void testPassPass();
+
+ void testPassSkip_data();
+ void testPassSkip();
+
+ void testPassFail_data();
+ void testPassFail();
+
+ void testSkipPass_data();
+ void testSkipPass();
+
+ void testSkipSkip_data();
+ void testSkipSkip();
+
+ void testSkipFail_data();
+ void testSkipFail();
+
+ void testFailPass_data();
+ void testFailPass();
+
+ void testFailSkip_data();
+ void testFailSkip();
+
+ void testFailFail_data();
+ void testFailFail();
+
+private:
+ void helper();
+};
+
+enum TestResult
+{
+ Pass,
+ Fail,
+ Skip
+};
+
+Q_DECLARE_METATYPE(TestResult);
+
+void tst_Counting::helper()
+{
+ QFETCH(TestResult, result);
+
+ switch (result) {
+ case Pass:
+ QVERIFY(true);
+ break;
+ case Fail:
+ QVERIFY(false);
+ break;
+ case Skip:
+ QSKIP("Skipping");
+ break;
+ }
+}
+
+void tst_Counting::testPassPass_data()
+{
+ QTest::addColumn<TestResult>("result");
+ QTest::newRow("row 1") << Pass;
+ QTest::newRow("row 2") << Pass;
+}
+
+void tst_Counting::testPassPass()
+{
+ helper();
+}
+
+void tst_Counting::testPassSkip_data()
+{
+ QTest::addColumn<TestResult>("result");
+ QTest::newRow("row 1") << Pass;
+ QTest::newRow("row 2") << Skip;
+}
+
+void tst_Counting::testPassSkip()
+{
+ helper();
+}
+
+void tst_Counting::testPassFail_data()
+{
+ QTest::addColumn<TestResult>("result");
+ QTest::newRow("row 1") << Pass;
+ QTest::newRow("row 2") << Fail;
+}
+
+void tst_Counting::testPassFail()
+{
+ helper();
+}
+
+void tst_Counting::testSkipPass_data()
+{
+ QTest::addColumn<TestResult>("result");
+ QTest::newRow("row 1") << Skip;
+ QTest::newRow("row 2") << Pass;
+}
+
+void tst_Counting::testSkipPass()
+{
+ helper();
+}
+
+void tst_Counting::testSkipSkip_data()
+{
+ QTest::addColumn<TestResult>("result");
+ QTest::newRow("row 1") << Skip;
+ QTest::newRow("row 2") << Skip;
+}
+
+void tst_Counting::testSkipSkip()
+{
+ helper();
+}
+
+void tst_Counting::testSkipFail_data()
+{
+ QTest::addColumn<TestResult>("result");
+ QTest::newRow("row 1") << Skip;
+ QTest::newRow("row 2") << Fail;
+}
+
+void tst_Counting::testSkipFail()
+{
+ helper();
+}
+
+void tst_Counting::testFailPass_data()
+{
+ QTest::addColumn<TestResult>("result");
+ QTest::newRow("row 1") << Fail;
+ QTest::newRow("row 2") << Pass;
+}
+
+void tst_Counting::testFailPass()
+{
+ helper();
+}
+
+void tst_Counting::testFailSkip_data()
+{
+ QTest::addColumn<TestResult>("result");
+ QTest::newRow("row 1") << Fail;
+ QTest::newRow("row 2") << Skip;
+}
+
+void tst_Counting::testFailSkip()
+{
+ helper();
+}
+
+void tst_Counting::testFailFail_data()
+{
+ QTest::addColumn<TestResult>("result");
+ QTest::newRow("row 1") << Fail;
+ QTest::newRow("row 2") << Fail;
+}
+
+void tst_Counting::testFailFail()
+{
+ helper();
+}
+
+QTEST_MAIN(tst_Counting)
+#include "tst_counting.moc"
diff --git a/tests/auto/testlib/selftests/crashes/tst_crashes.cpp b/tests/auto/testlib/selftests/crashes/tst_crashes.cpp
index 35a55a367a..b6298f5e63 100644
--- a/tests/auto/testlib/selftests/crashes/tst_crashes.cpp
+++ b/tests/auto/testlib/selftests/crashes/tst_crashes.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/datatable/tst_datatable.cpp b/tests/auto/testlib/selftests/datatable/tst_datatable.cpp
index de2495ce65..cc68733faa 100644
--- a/tests/auto/testlib/selftests/datatable/tst_datatable.cpp
+++ b/tests/auto/testlib/selftests/datatable/tst_datatable.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/datetime/tst_datetime.cpp b/tests/auto/testlib/selftests/datetime/tst_datetime.cpp
index ee6baacd5b..60ebbfc104 100644
--- a/tests/auto/testlib/selftests/datetime/tst_datetime.cpp
+++ b/tests/auto/testlib/selftests/datetime/tst_datetime.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/differentexec/tst_differentexec.cpp b/tests/auto/testlib/selftests/differentexec/tst_differentexec.cpp
index 3a9e0eddf4..91b14e5051 100644
--- a/tests/auto/testlib/selftests/differentexec/tst_differentexec.cpp
+++ b/tests/auto/testlib/selftests/differentexec/tst_differentexec.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/exceptionthrow/tst_exceptionthrow.cpp b/tests/auto/testlib/selftests/exceptionthrow/tst_exceptionthrow.cpp
index 34dae53d0f..333f03e591 100644
--- a/tests/auto/testlib/selftests/exceptionthrow/tst_exceptionthrow.cpp
+++ b/tests/auto/testlib/selftests/exceptionthrow/tst_exceptionthrow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/expected_counting.lightxml b/tests/auto/testlib/selftests/expected_counting.lightxml
new file mode 100644
index 0000000000..f16abef128
--- /dev/null
+++ b/tests/auto/testlib/selftests/expected_counting.lightxml
@@ -0,0 +1,78 @@
+<Environment>
+ <QtVersion>@INSERT_QT_VERSION_HERE@</QtVersion>
+ <QTestVersion>@INSERT_QT_VERSION_HERE@</QTestVersion>
+</Environment>
+<TestFunction name="initTestCase">
+<Incident type="pass" file="" line="0" />
+</TestFunction>
+<TestFunction name="testPassPass">
+<Incident type="pass" file="" line="0" />
+</TestFunction>
+<TestFunction name="testPassSkip">
+<Message type="skip" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="102">
+ <DataTag><![CDATA[row 2]]></DataTag>
+ <Description><![CDATA[Skipping]]></Description>
+</Message>
+</TestFunction>
+<TestFunction name="testPassFail">
+<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="99">
+ <DataTag><![CDATA[row 2]]></DataTag>
+ <Description><![CDATA['false' returned FALSE. ()]]></Description>
+</Incident>
+</TestFunction>
+<TestFunction name="testSkipPass">
+<Message type="skip" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="102">
+ <DataTag><![CDATA[row 1]]></DataTag>
+ <Description><![CDATA[Skipping]]></Description>
+</Message>
+<Incident type="pass" file="" line="0" />
+</TestFunction>
+<TestFunction name="testSkipSkip">
+<Message type="skip" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="102">
+ <DataTag><![CDATA[row 1]]></DataTag>
+ <Description><![CDATA[Skipping]]></Description>
+</Message>
+<Message type="skip" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="102">
+ <DataTag><![CDATA[row 2]]></DataTag>
+ <Description><![CDATA[Skipping]]></Description>
+</Message>
+</TestFunction>
+<TestFunction name="testSkipFail">
+<Message type="skip" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="102">
+ <DataTag><![CDATA[row 1]]></DataTag>
+ <Description><![CDATA[Skipping]]></Description>
+</Message>
+<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="99">
+ <DataTag><![CDATA[row 2]]></DataTag>
+ <Description><![CDATA['false' returned FALSE. ()]]></Description>
+</Incident>
+</TestFunction>
+<TestFunction name="testFailPass">
+<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="99">
+ <DataTag><![CDATA[row 1]]></DataTag>
+ <Description><![CDATA['false' returned FALSE. ()]]></Description>
+</Incident>
+</TestFunction>
+<TestFunction name="testFailSkip">
+<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="99">
+ <DataTag><![CDATA[row 1]]></DataTag>
+ <Description><![CDATA['false' returned FALSE. ()]]></Description>
+</Incident>
+<Message type="skip" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="102">
+ <DataTag><![CDATA[row 2]]></DataTag>
+ <Description><![CDATA[Skipping]]></Description>
+</Message>
+</TestFunction>
+<TestFunction name="testFailFail">
+<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="99">
+ <DataTag><![CDATA[row 1]]></DataTag>
+ <Description><![CDATA['false' returned FALSE. ()]]></Description>
+</Incident>
+<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="99">
+ <DataTag><![CDATA[row 2]]></DataTag>
+ <Description><![CDATA['false' returned FALSE. ()]]></Description>
+</Incident>
+</TestFunction>
+<TestFunction name="cleanupTestCase">
+<Incident type="pass" file="" line="0" />
+</TestFunction>
diff --git a/tests/auto/testlib/selftests/expected_counting.txt b/tests/auto/testlib/selftests/expected_counting.txt
new file mode 100644
index 0000000000..adf80012c7
--- /dev/null
+++ b/tests/auto/testlib/selftests/expected_counting.txt
@@ -0,0 +1,32 @@
+********* Start testing of tst_Counting *********
+Config: Using QTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
+PASS : tst_Counting::initTestCase()
+PASS : tst_Counting::testPassPass()
+SKIP : tst_Counting::testPassSkip(row 2) Skipping
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp(102)]
+FAIL! : tst_Counting::testPassFail(row 2) 'false' returned FALSE. ()
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp(99)]
+SKIP : tst_Counting::testSkipPass(row 1) Skipping
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp(102)]
+PASS : tst_Counting::testSkipPass()
+SKIP : tst_Counting::testSkipSkip(row 1) Skipping
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp(102)]
+SKIP : tst_Counting::testSkipSkip(row 2) Skipping
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp(102)]
+SKIP : tst_Counting::testSkipFail(row 1) Skipping
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp(102)]
+FAIL! : tst_Counting::testSkipFail(row 2) 'false' returned FALSE. ()
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp(99)]
+FAIL! : tst_Counting::testFailPass(row 1) 'false' returned FALSE. ()
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp(99)]
+FAIL! : tst_Counting::testFailSkip(row 1) 'false' returned FALSE. ()
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp(99)]
+SKIP : tst_Counting::testFailSkip(row 2) Skipping
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp(102)]
+FAIL! : tst_Counting::testFailFail(row 1) 'false' returned FALSE. ()
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp(99)]
+FAIL! : tst_Counting::testFailFail(row 2) 'false' returned FALSE. ()
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp(99)]
+PASS : tst_Counting::cleanupTestCase()
+Totals: 4 passed, 6 failed, 6 skipped
+********* Finished testing of tst_Counting *********
diff --git a/tests/auto/testlib/selftests/expected_counting.xml b/tests/auto/testlib/selftests/expected_counting.xml
new file mode 100644
index 0000000000..f5982d7052
--- /dev/null
+++ b/tests/auto/testlib/selftests/expected_counting.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<TestCase name="tst_Counting">
+<Environment>
+ <QtVersion>@INSERT_QT_VERSION_HERE@</QtVersion>
+ <QTestVersion>@INSERT_QT_VERSION_HERE@</QTestVersion>
+</Environment>
+<TestFunction name="initTestCase">
+<Incident type="pass" file="" line="0" />
+</TestFunction>
+<TestFunction name="testPassPass">
+<Incident type="pass" file="" line="0" />
+</TestFunction>
+<TestFunction name="testPassSkip">
+<Message type="skip" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="102">
+ <DataTag><![CDATA[row 2]]></DataTag>
+ <Description><![CDATA[Skipping]]></Description>
+</Message>
+</TestFunction>
+<TestFunction name="testPassFail">
+<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="99">
+ <DataTag><![CDATA[row 2]]></DataTag>
+ <Description><![CDATA['false' returned FALSE. ()]]></Description>
+</Incident>
+</TestFunction>
+<TestFunction name="testSkipPass">
+<Message type="skip" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="102">
+ <DataTag><![CDATA[row 1]]></DataTag>
+ <Description><![CDATA[Skipping]]></Description>
+</Message>
+<Incident type="pass" file="" line="0" />
+</TestFunction>
+<TestFunction name="testSkipSkip">
+<Message type="skip" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="102">
+ <DataTag><![CDATA[row 1]]></DataTag>
+ <Description><![CDATA[Skipping]]></Description>
+</Message>
+<Message type="skip" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="102">
+ <DataTag><![CDATA[row 2]]></DataTag>
+ <Description><![CDATA[Skipping]]></Description>
+</Message>
+</TestFunction>
+<TestFunction name="testSkipFail">
+<Message type="skip" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="102">
+ <DataTag><![CDATA[row 1]]></DataTag>
+ <Description><![CDATA[Skipping]]></Description>
+</Message>
+<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="99">
+ <DataTag><![CDATA[row 2]]></DataTag>
+ <Description><![CDATA['false' returned FALSE. ()]]></Description>
+</Incident>
+</TestFunction>
+<TestFunction name="testFailPass">
+<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="99">
+ <DataTag><![CDATA[row 1]]></DataTag>
+ <Description><![CDATA['false' returned FALSE. ()]]></Description>
+</Incident>
+</TestFunction>
+<TestFunction name="testFailSkip">
+<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="99">
+ <DataTag><![CDATA[row 1]]></DataTag>
+ <Description><![CDATA['false' returned FALSE. ()]]></Description>
+</Incident>
+<Message type="skip" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="102">
+ <DataTag><![CDATA[row 2]]></DataTag>
+ <Description><![CDATA[Skipping]]></Description>
+</Message>
+</TestFunction>
+<TestFunction name="testFailFail">
+<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="99">
+ <DataTag><![CDATA[row 1]]></DataTag>
+ <Description><![CDATA['false' returned FALSE. ()]]></Description>
+</Incident>
+<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/counting/tst_counting.cpp" line="99">
+ <DataTag><![CDATA[row 2]]></DataTag>
+ <Description><![CDATA['false' returned FALSE. ()]]></Description>
+</Incident>
+</TestFunction>
+<TestFunction name="cleanupTestCase">
+<Incident type="pass" file="" line="0" />
+</TestFunction>
+</TestCase>
diff --git a/tests/auto/testlib/selftests/expected_counting.xunitxml b/tests/auto/testlib/selftests/expected_counting.xunitxml
new file mode 100644
index 0000000000..c19a1612cb
--- /dev/null
+++ b/tests/auto/testlib/selftests/expected_counting.xunitxml
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<testsuite errors="6" failures="6" tests="11" name="tst_Counting">
+ <properties>
+ <property value="@INSERT_QT_VERSION_HERE@" name="QTestVersion"/>
+ <property value="@INSERT_QT_VERSION_HERE@" name="QtVersion"/>
+ </properties>
+ <testcase result="pass" name="initTestCase"/>
+ <testcase result="pass" name="testPassPass"/>
+ <testcase name="testPassSkip">
+ <!-- tag="row 2" message="Skipping" type="skip" -->
+ </testcase>
+ <testcase result="fail" name="testPassFail">
+ <failure tag="row 2" message="&apos;false&apos; returned FALSE. ()" result="fail"/>
+ </testcase>
+ <testcase result="pass" name="testSkipPass">
+ <!-- tag="row 1" message="Skipping" type="skip" -->
+ </testcase>
+ <testcase name="testSkipSkip">
+ <!-- tag="row 1" message="Skipping" type="skip" -->
+ <!-- tag="row 2" message="Skipping" type="skip" -->
+ </testcase>
+ <testcase result="fail" name="testSkipFail">
+ <!-- tag="row 1" message="Skipping" type="skip" -->
+ <failure tag="row 2" message="&apos;false&apos; returned FALSE. ()" result="fail"/>
+ </testcase>
+ <testcase result="fail" name="testFailPass">
+ <failure tag="row 1" message="&apos;false&apos; returned FALSE. ()" result="fail"/>
+ </testcase>
+ <testcase result="fail" name="testFailSkip">
+ <failure tag="row 1" message="&apos;false&apos; returned FALSE. ()" result="fail"/>
+ <!-- tag="row 2" message="Skipping" type="skip" -->
+ </testcase>
+ <testcase result="fail" name="testFailFail">
+ <failure tag="row 1" message="&apos;false&apos; returned FALSE. ()" result="fail"/>
+ <failure tag="row 2" message="&apos;false&apos; returned FALSE. ()" result="fail"/>
+ </testcase>
+ <testcase result="pass" name="cleanupTestCase"/>
+ <system-err>
+<![CDATA[Skipping]]>
+<![CDATA[Skipping]]>
+<![CDATA[Skipping]]>
+<![CDATA[Skipping]]>
+<![CDATA[Skipping]]>
+<![CDATA[Skipping]]>
+ </system-err>
+</testsuite>
diff --git a/tests/auto/testlib/selftests/expected_expectfail.lightxml b/tests/auto/testlib/selftests/expected_expectfail.lightxml
index 79e5827caa..02e4dde7d8 100644
--- a/tests/auto/testlib/selftests/expected_expectfail.lightxml
+++ b/tests/auto/testlib/selftests/expected_expectfail.lightxml
@@ -5,11 +5,11 @@
<TestFunction name="initTestCase">
<Incident type="pass" file="" line="0" />
</TestFunction>
-<TestFunction name="expectAndContinue">
+<TestFunction name="xfailAndContinue">
<Message type="qdebug" file="" line="0">
<Description><![CDATA[begin]]></Description>
</Message>
-<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="70">
+<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="72">
<Description><![CDATA[This should xfail]]></Description>
</Incident>
<Message type="qdebug" file="" line="0">
@@ -17,59 +17,65 @@
</Message>
<Incident type="pass" file="" line="0" />
</TestFunction>
-<TestFunction name="expectAndAbort">
+<TestFunction name="xfailAndAbort">
<Message type="qdebug" file="" line="0">
<Description><![CDATA[begin]]></Description>
</Message>
-<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="78">
+<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="80">
<Description><![CDATA[This should xfail]]></Description>
</Incident>
<Incident type="pass" file="" line="0" />
</TestFunction>
-<TestFunction name="expectTwice">
-<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="87">
+<TestFunction name="xfailTwice">
+<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="90">
<Description><![CDATA[Already expecting a fail]]></Description>
</Incident>
</TestFunction>
<TestFunction name="xfailWithQString">
-<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="97">
+<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="99">
<Description><![CDATA[A string]]></Description>
</Incident>
-<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="102">
+<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="104">
<Description><![CDATA[Bug 5 (The message)]]></Description>
</Incident>
<Incident type="pass" file="" line="0" />
</TestFunction>
-<TestFunction name="xpass">
-<Incident type="xpass" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="108">
- <Description><![CDATA['true' returned FALSE. ()]]></Description>
-</Incident>
-</TestFunction>
-<TestFunction name="dataDrivenTest">
-<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="141">
+<TestFunction name="xfailDataDriven">
+<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="133">
<DataTag><![CDATA[Abort]]></DataTag>
<Description><![CDATA[This test should xfail]]></Description>
</Incident>
-<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="141">
+<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="133">
<DataTag><![CDATA[Continue]]></DataTag>
<Description><![CDATA[This test should xfail]]></Description>
</Incident>
<Incident type="pass" file="" line="0" />
</TestFunction>
-<TestFunction name="expectOnWrongRow">
+<TestFunction name="xfailOnWrongRow">
<Incident type="pass" file="" line="0" />
</TestFunction>
-<TestFunction name="expectOnAnyRow">
-<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="176">
+<TestFunction name="xfailOnAnyRow">
+<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="168">
<DataTag><![CDATA[first row]]></DataTag>
<Description><![CDATA[This test should xfail]]></Description>
</Incident>
-<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="176">
+<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="168">
<DataTag><![CDATA[second row]]></DataTag>
<Description><![CDATA[This test should xfail]]></Description>
</Incident>
<Incident type="pass" file="" line="0" />
</TestFunction>
+<TestFunction name="xpass">
+<Incident type="xpass" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="174">
+ <Description><![CDATA['true' returned FALSE. ()]]></Description>
+</Incident>
+</TestFunction>
+<TestFunction name="xpassDataDriven">
+<Incident type="xpass" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="196">
+ <DataTag><![CDATA[XPass]]></DataTag>
+ <Description><![CDATA['true' returned FALSE. ()]]></Description>
+</Incident>
+</TestFunction>
<TestFunction name="cleanupTestCase">
<Incident type="pass" file="" line="0" />
</TestFunction>
diff --git a/tests/auto/testlib/selftests/expected_expectfail.txt b/tests/auto/testlib/selftests/expected_expectfail.txt
index b31245151d..1b98b6b561 100644
--- a/tests/auto/testlib/selftests/expected_expectfail.txt
+++ b/tests/auto/testlib/selftests/expected_expectfail.txt
@@ -1,35 +1,37 @@
********* Start testing of tst_ExpectFail *********
Config: Using QTest library @INSERT_QT_VERSION_HERE@, Qt @INSERT_QT_VERSION_HERE@
PASS : tst_ExpectFail::initTestCase()
-QDEBUG : tst_ExpectFail::expectAndContinue() begin
-XFAIL : tst_ExpectFail::expectAndContinue() This should xfail
- Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(70)]
-QDEBUG : tst_ExpectFail::expectAndContinue() after
-PASS : tst_ExpectFail::expectAndContinue()
-QDEBUG : tst_ExpectFail::expectAndAbort() begin
-XFAIL : tst_ExpectFail::expectAndAbort() This should xfail
- Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(78)]
-PASS : tst_ExpectFail::expectAndAbort()
-FAIL! : tst_ExpectFail::expectTwice() Already expecting a fail
- Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(87)]
+QDEBUG : tst_ExpectFail::xfailAndContinue() begin
+XFAIL : tst_ExpectFail::xfailAndContinue() This should xfail
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(72)]
+QDEBUG : tst_ExpectFail::xfailAndContinue() after
+PASS : tst_ExpectFail::xfailAndContinue()
+QDEBUG : tst_ExpectFail::xfailAndAbort() begin
+XFAIL : tst_ExpectFail::xfailAndAbort() This should xfail
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(80)]
+PASS : tst_ExpectFail::xfailAndAbort()
+FAIL! : tst_ExpectFail::xfailTwice() Already expecting a fail
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(90)]
XFAIL : tst_ExpectFail::xfailWithQString() A string
- Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(97)]
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(99)]
XFAIL : tst_ExpectFail::xfailWithQString() Bug 5 (The message)
- Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(102)]
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(104)]
PASS : tst_ExpectFail::xfailWithQString()
+XFAIL : tst_ExpectFail::xfailDataDriven(Abort) This test should xfail
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(133)]
+XFAIL : tst_ExpectFail::xfailDataDriven(Continue) This test should xfail
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(133)]
+PASS : tst_ExpectFail::xfailDataDriven()
+PASS : tst_ExpectFail::xfailOnWrongRow()
+XFAIL : tst_ExpectFail::xfailOnAnyRow(first row) This test should xfail
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(168)]
+XFAIL : tst_ExpectFail::xfailOnAnyRow(second row) This test should xfail
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(168)]
+PASS : tst_ExpectFail::xfailOnAnyRow()
XPASS : tst_ExpectFail::xpass() 'true' returned FALSE. ()
- Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(108)]
-XFAIL : tst_ExpectFail::dataDrivenTest(Abort) This test should xfail
- Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(141)]
-XFAIL : tst_ExpectFail::dataDrivenTest(Continue) This test should xfail
- Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(141)]
-PASS : tst_ExpectFail::dataDrivenTest()
-PASS : tst_ExpectFail::expectOnWrongRow()
-XFAIL : tst_ExpectFail::expectOnAnyRow(first row) This test should xfail
- Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(176)]
-XFAIL : tst_ExpectFail::expectOnAnyRow(second row) This test should xfail
- Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(176)]
-PASS : tst_ExpectFail::expectOnAnyRow()
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(172)]
+XPASS : tst_ExpectFail::xpassDataDriven(XPass) 'true' returned FALSE. ()
+ Loc: [/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp(196)]
PASS : tst_ExpectFail::cleanupTestCase()
-Totals: 8 passed, 2 failed, 0 skipped
+Totals: 8 passed, 3 failed, 0 skipped
********* Finished testing of tst_ExpectFail *********
diff --git a/tests/auto/testlib/selftests/expected_expectfail.xml b/tests/auto/testlib/selftests/expected_expectfail.xml
index 676a030b3f..74b11fb0e5 100644
--- a/tests/auto/testlib/selftests/expected_expectfail.xml
+++ b/tests/auto/testlib/selftests/expected_expectfail.xml
@@ -7,11 +7,11 @@
<TestFunction name="initTestCase">
<Incident type="pass" file="" line="0" />
</TestFunction>
-<TestFunction name="expectAndContinue">
+<TestFunction name="xfailAndContinue">
<Message type="qdebug" file="" line="0">
<Description><![CDATA[begin]]></Description>
</Message>
-<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="70">
+<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="72">
<Description><![CDATA[This should xfail]]></Description>
</Incident>
<Message type="qdebug" file="" line="0">
@@ -19,59 +19,65 @@
</Message>
<Incident type="pass" file="" line="0" />
</TestFunction>
-<TestFunction name="expectAndAbort">
+<TestFunction name="xfailAndAbort">
<Message type="qdebug" file="" line="0">
<Description><![CDATA[begin]]></Description>
</Message>
-<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="78">
+<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="80">
<Description><![CDATA[This should xfail]]></Description>
</Incident>
<Incident type="pass" file="" line="0" />
</TestFunction>
-<TestFunction name="expectTwice">
-<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="87">
+<TestFunction name="xfailTwice">
+<Incident type="fail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="90">
<Description><![CDATA[Already expecting a fail]]></Description>
</Incident>
</TestFunction>
<TestFunction name="xfailWithQString">
-<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="97">
+<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="99">
<Description><![CDATA[A string]]></Description>
</Incident>
-<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="102">
+<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="104">
<Description><![CDATA[Bug 5 (The message)]]></Description>
</Incident>
<Incident type="pass" file="" line="0" />
</TestFunction>
-<TestFunction name="xpass">
-<Incident type="xpass" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="108">
- <Description><![CDATA['true' returned FALSE. ()]]></Description>
-</Incident>
-</TestFunction>
-<TestFunction name="dataDrivenTest">
-<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="141">
+<TestFunction name="xfailDataDriven">
+<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="133">
<DataTag><![CDATA[Abort]]></DataTag>
<Description><![CDATA[This test should xfail]]></Description>
</Incident>
-<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="141">
+<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="133">
<DataTag><![CDATA[Continue]]></DataTag>
<Description><![CDATA[This test should xfail]]></Description>
</Incident>
<Incident type="pass" file="" line="0" />
</TestFunction>
-<TestFunction name="expectOnWrongRow">
+<TestFunction name="xfailOnWrongRow">
<Incident type="pass" file="" line="0" />
</TestFunction>
-<TestFunction name="expectOnAnyRow">
-<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="176">
+<TestFunction name="xfailOnAnyRow">
+<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="168">
<DataTag><![CDATA[first row]]></DataTag>
<Description><![CDATA[This test should xfail]]></Description>
</Incident>
-<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="176">
+<Incident type="xfail" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="168">
<DataTag><![CDATA[second row]]></DataTag>
<Description><![CDATA[This test should xfail]]></Description>
</Incident>
<Incident type="pass" file="" line="0" />
</TestFunction>
+<TestFunction name="xpass">
+<Incident type="xpass" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="174">
+ <Description><![CDATA['true' returned FALSE. ()]]></Description>
+</Incident>
+</TestFunction>
+<TestFunction name="xpassDataDriven">
+<Incident type="xpass" file="/home/user/dev/qt5/qtbase/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp" line="196">
+ <DataTag><![CDATA[XPass]]></DataTag>
+ <Description><![CDATA['true' returned FALSE. ()]]></Description>
+</Incident>
+</TestFunction>
<TestFunction name="cleanupTestCase">
<Incident type="pass" file="" line="0" />
</TestFunction>
diff --git a/tests/auto/testlib/selftests/expected_expectfail.xunitxml b/tests/auto/testlib/selftests/expected_expectfail.xunitxml
index 328bb6433b..017e4501c1 100644
--- a/tests/auto/testlib/selftests/expected_expectfail.xunitxml
+++ b/tests/auto/testlib/selftests/expected_expectfail.xunitxml
@@ -1,38 +1,41 @@
<?xml version="1.0" encoding="UTF-8" ?>
-<testsuite errors="11" failures="2" tests="10" name="tst_ExpectFail">
+<testsuite errors="11" failures="3" tests="11" name="tst_ExpectFail">
<properties>
- <property value="@INSERT_QT_VERSION_HERE@" name="QTestVersion"/>
- <property value="@INSERT_QT_VERSION_HERE@" name="QtVersion"/>
+ <property value="5.0.0" name="QTestVersion"/>
+ <property value="5.0.0" name="QtVersion"/>
</properties>
<testcase result="pass" name="initTestCase"/>
- <testcase result="xfail" name="expectAndContinue">
+ <testcase result="xfail" name="xfailAndContinue">
<!-- message="begin" type="qdebug" -->
<!-- message="This should xfail" type="info" -->
<!-- message="after" type="qdebug" -->
</testcase>
- <testcase result="xfail" name="expectAndAbort">
+ <testcase result="xfail" name="xfailAndAbort">
<!-- message="begin" type="qdebug" -->
<!-- message="This should xfail" type="info" -->
</testcase>
- <testcase result="fail" name="expectTwice">
+ <testcase result="fail" name="xfailTwice">
<failure message="Already expecting a fail" result="fail"/>
</testcase>
<testcase result="xfail" name="xfailWithQString">
<!-- message="A string" type="info" -->
<!-- message="Bug 5 (The message)" type="info" -->
</testcase>
- <testcase result="xpass" name="xpass">
- <failure message="&apos;true&apos; returned FALSE. ()" result="xpass"/>
- </testcase>
- <testcase result="xfail" name="dataDrivenTest">
+ <testcase result="xfail" name="xfailDataDriven">
<!-- tag="Abort" message="This test should xfail" type="info" -->
<!-- tag="Continue" message="This test should xfail" type="info" -->
</testcase>
- <testcase result="pass" name="expectOnWrongRow"/>
- <testcase result="xfail" name="expectOnAnyRow">
+ <testcase result="pass" name="xfailOnWrongRow"/>
+ <testcase result="xfail" name="xfailOnAnyRow">
<!-- tag="first row" message="This test should xfail" type="info" -->
<!-- tag="second row" message="This test should xfail" type="info" -->
</testcase>
+ <testcase result="xpass" name="xpass">
+ <failure message="&apos;true&apos; returned FALSE. ()" result="xpass"/>
+ </testcase>
+ <testcase result="xpass" name="xpassDataDriven">
+ <failure tag="XPass" message="&apos;true&apos; returned FALSE. ()" result="xpass"/>
+ </testcase>
<testcase result="pass" name="cleanupTestCase"/>
<system-err>
<![CDATA[begin]]>
diff --git a/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp b/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp
index 79325a3bfc..3a000ba182 100644
--- a/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp
+++ b/tests/auto/testlib/selftests/expectfail/tst_expectfail.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -50,20 +50,22 @@ class tst_ExpectFail: public QObject
Q_OBJECT
private slots:
- void expectAndContinue() const;
- void expectAndAbort() const;
- void expectTwice() const;
+ void xfailAndContinue() const;
+ void xfailAndAbort() const;
+ void xfailTwice() const;
void xfailWithQString() const;
+ void xfailDataDriven_data() const;
+ void xfailDataDriven() const;
+ void xfailOnWrongRow_data() const;
+ void xfailOnWrongRow() const;
+ void xfailOnAnyRow_data() const;
+ void xfailOnAnyRow() const;
void xpass() const;
- void dataDrivenTest_data() const;
- void dataDrivenTest() const;
- void expectOnWrongRow_data() const;
- void expectOnWrongRow() const;
- void expectOnAnyRow_data() const;
- void expectOnAnyRow() const;
+ void xpassDataDriven_data() const;
+ void xpassDataDriven() const;
};
-void tst_ExpectFail::expectAndContinue() const
+void tst_ExpectFail::xfailAndContinue() const
{
qDebug("begin");
QEXPECT_FAIL("", "This should xfail", Continue);
@@ -71,7 +73,7 @@ void tst_ExpectFail::expectAndContinue() const
qDebug("after");
}
-void tst_ExpectFail::expectAndAbort() const
+void tst_ExpectFail::xfailAndAbort() const
{
qDebug("begin");
QEXPECT_FAIL("", "This should xfail", Abort);
@@ -81,7 +83,7 @@ void tst_ExpectFail::expectAndAbort() const
QVERIFY2(false, "This should not be reached");
}
-void tst_ExpectFail::expectTwice() const
+void tst_ExpectFail::xfailTwice() const
{
QEXPECT_FAIL("", "Calling QEXPECT_FAIL once is fine", Abort);
QEXPECT_FAIL("", "Calling QEXPECT_FAIL when already expecting a failure is "
@@ -102,17 +104,7 @@ void tst_ExpectFail::xfailWithQString() const
QVERIFY(false);
}
-void tst_ExpectFail::xpass() const
-{
- QEXPECT_FAIL("", "This test should xpass", Abort);
- QVERIFY(true);
-
- // If we get here the test did not correctly abort on the previous
- // unexpected pass.
- QVERIFY2(false, "This should not be reached");
-}
-
-void tst_ExpectFail::dataDrivenTest_data() const
+void tst_ExpectFail::xfailDataDriven_data() const
{
QTest::addColumn<bool>("shouldPass");
QTest::addColumn<QTest::TestFailMode>("failMode");
@@ -123,7 +115,7 @@ void tst_ExpectFail::dataDrivenTest_data() const
QTest::newRow("Continue") << false << QTest::Continue;
}
-void tst_ExpectFail::dataDrivenTest() const
+void tst_ExpectFail::xfailDataDriven() const
{
QFETCH(bool, shouldPass);
QFETCH(QTest::TestFailMode, failMode);
@@ -146,21 +138,21 @@ void tst_ExpectFail::dataDrivenTest() const
QCOMPARE(failMode, QTest::Continue);
}
-void tst_ExpectFail::expectOnWrongRow_data() const
+void tst_ExpectFail::xfailOnWrongRow_data() const
{
QTest::addColumn<int>("dummy");
QTest::newRow("right row") << 0;
}
-void tst_ExpectFail::expectOnWrongRow() const
+void tst_ExpectFail::xfailOnWrongRow() const
{
// QEXPECT_FAIL for a row that is not the current row should be ignored.
QEXPECT_FAIL("wrong row", "This xfail should be ignored", Abort);
QVERIFY(true);
}
-void tst_ExpectFail::expectOnAnyRow_data() const
+void tst_ExpectFail::xfailOnAnyRow_data() const
{
QTest::addColumn<int>("dummy");
@@ -168,7 +160,7 @@ void tst_ExpectFail::expectOnAnyRow_data() const
QTest::newRow("second row") << 1;
}
-void tst_ExpectFail::expectOnAnyRow() const
+void tst_ExpectFail::xfailOnAnyRow() const
{
// In a data-driven test, passing an empty first parameter to QEXPECT_FAIL
// should mean that the failure is expected for all data rows.
@@ -176,5 +168,36 @@ void tst_ExpectFail::expectOnAnyRow() const
QVERIFY(false);
}
+void tst_ExpectFail::xpass() const
+{
+ QEXPECT_FAIL("", "This test should xpass", Abort);
+ QVERIFY(true);
+
+ // If we get here the test did not correctly abort on the previous
+ // unexpected pass.
+ QVERIFY2(false, "This should not be reached");
+}
+
+void tst_ExpectFail::xpassDataDriven_data() const
+{
+ QTest::addColumn<bool>("shouldXPass");
+
+ QTest::newRow("XPass") << true;
+ QTest::newRow("Pass") << false;
+}
+
+void tst_ExpectFail::xpassDataDriven() const
+{
+ QFETCH(bool, shouldXPass);
+
+ if (shouldXPass)
+ QEXPECT_FAIL(QTest::currentDataTag(), "This test should xpass", Abort);
+
+ QVERIFY(true);
+
+ // We should only get here if the test wasn't supposed to xpass.
+ QVERIFY2(!shouldXPass, "Test failed to terminate on XPASS");
+}
+
QTEST_MAIN(tst_ExpectFail)
#include "tst_expectfail.moc"
diff --git a/tests/auto/testlib/selftests/failinit/tst_failinit.cpp b/tests/auto/testlib/selftests/failinit/tst_failinit.cpp
index 8f217f1d0a..e366572c13 100644
--- a/tests/auto/testlib/selftests/failinit/tst_failinit.cpp
+++ b/tests/auto/testlib/selftests/failinit/tst_failinit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/failinitdata/tst_failinitdata.cpp b/tests/auto/testlib/selftests/failinitdata/tst_failinitdata.cpp
index b14242f129..97dc3f8e64 100644
--- a/tests/auto/testlib/selftests/failinitdata/tst_failinitdata.cpp
+++ b/tests/auto/testlib/selftests/failinitdata/tst_failinitdata.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/fetchbogus/tst_fetchbogus.cpp b/tests/auto/testlib/selftests/fetchbogus/tst_fetchbogus.cpp
index f6f4f0de99..d0c958c240 100644
--- a/tests/auto/testlib/selftests/fetchbogus/tst_fetchbogus.cpp
+++ b/tests/auto/testlib/selftests/fetchbogus/tst_fetchbogus.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/findtestdata/findtestdata.cpp b/tests/auto/testlib/selftests/findtestdata/findtestdata.cpp
index 09b8634334..c2e073d2ca 100644
--- a/tests/auto/testlib/selftests/findtestdata/findtestdata.cpp
+++ b/tests/auto/testlib/selftests/findtestdata/findtestdata.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -134,11 +134,17 @@ void FindTestData::paths()
// __FILE__ may be absolute or relative path; test both.
// absolute:
+#if defined(Q_OS_WIN)
+ QCOMPARE(QTest::qFindTestData(TESTFILE, qPrintable(app_path + "/fakesrc/fakefile.cpp"), __LINE__).toLower(), testfile_path3.toLower());
+#else
QCOMPARE(QTest::qFindTestData(TESTFILE, qPrintable(app_path + "/fakesrc/fakefile.cpp"), __LINE__), testfile_path3);
-
+#endif
// relative: (pretend that we were compiled within fakebuild directory, pointing at files in ../fakesrc)
+#if defined(Q_OS_WIN)
+ QCOMPARE(QTest::qFindTestData(TESTFILE, "../fakesrc/fakefile.cpp", __LINE__, qPrintable(app_path + "/fakebuild")).toLower(), testfile_path3.toLower());
+#else
QCOMPARE(QTest::qFindTestData(TESTFILE, "../fakesrc/fakefile.cpp", __LINE__, qPrintable(app_path + "/fakebuild")), testfile_path3);
-
+#endif
QVERIFY(QFile(testfile_path3).remove());
// Note, this is expected to generate a warning.
diff --git a/tests/auto/testlib/selftests/float/tst_float.cpp b/tests/auto/testlib/selftests/float/tst_float.cpp
index 47fb253cd0..9b7865ed25 100644
--- a/tests/auto/testlib/selftests/float/tst_float.cpp
+++ b/tests/auto/testlib/selftests/float/tst_float.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/globaldata/tst_globaldata.cpp b/tests/auto/testlib/selftests/globaldata/tst_globaldata.cpp
index 5a7ffd328f..c30396d28b 100644
--- a/tests/auto/testlib/selftests/globaldata/tst_globaldata.cpp
+++ b/tests/auto/testlib/selftests/globaldata/tst_globaldata.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/longstring/tst_longstring.cpp b/tests/auto/testlib/selftests/longstring/tst_longstring.cpp
index d42e760483..4fa76c3f57 100644
--- a/tests/auto/testlib/selftests/longstring/tst_longstring.cpp
+++ b/tests/auto/testlib/selftests/longstring/tst_longstring.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/maxwarnings/maxwarnings.cpp b/tests/auto/testlib/selftests/maxwarnings/maxwarnings.cpp
index fdfe00fc42..207914ebfb 100644
--- a/tests/auto/testlib/selftests/maxwarnings/maxwarnings.cpp
+++ b/tests/auto/testlib/selftests/maxwarnings/maxwarnings.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/multiexec/tst_multiexec.cpp b/tests/auto/testlib/selftests/multiexec/tst_multiexec.cpp
index d6a5e32f05..ce61142bf7 100644
--- a/tests/auto/testlib/selftests/multiexec/tst_multiexec.cpp
+++ b/tests/auto/testlib/selftests/multiexec/tst_multiexec.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/printdatatags/tst_printdatatags.cpp b/tests/auto/testlib/selftests/printdatatags/tst_printdatatags.cpp
index 4fdd33268a..c8b4f6d0fa 100644
--- a/tests/auto/testlib/selftests/printdatatags/tst_printdatatags.cpp
+++ b/tests/auto/testlib/selftests/printdatatags/tst_printdatatags.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/printdatatagswithglobaltags/tst_printdatatagswithglobaltags.cpp b/tests/auto/testlib/selftests/printdatatagswithglobaltags/tst_printdatatagswithglobaltags.cpp
index 23dbfa1ee4..dad7a41c6c 100644
--- a/tests/auto/testlib/selftests/printdatatagswithglobaltags/tst_printdatatagswithglobaltags.cpp
+++ b/tests/auto/testlib/selftests/printdatatagswithglobaltags/tst_printdatatagswithglobaltags.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/qexecstringlist/tst_qexecstringlist.cpp b/tests/auto/testlib/selftests/qexecstringlist/tst_qexecstringlist.cpp
index 5df7e1e1d5..7ce1fcfdf2 100644
--- a/tests/auto/testlib/selftests/qexecstringlist/tst_qexecstringlist.cpp
+++ b/tests/auto/testlib/selftests/qexecstringlist/tst_qexecstringlist.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/selftests.pri b/tests/auto/testlib/selftests/selftests.pri
index f506c8c08c..95664c3793 100644
--- a/tests/auto/testlib/selftests/selftests.pri
+++ b/tests/auto/testlib/selftests/selftests.pri
@@ -4,4 +4,4 @@ SUBPROGRAMS = subtest warnings maxwarnings cmptest globaldata skip \
exceptionthrow qexecstringlist datatable commandlinedata\
benchlibwalltime benchlibcallgrind benchlibeventcounter benchlibtickcounter \
benchliboptions xunit badxml longstring float printdatatags \
- printdatatagswithglobaltags findtestdata
+ printdatatagswithglobaltags findtestdata counting
diff --git a/tests/auto/testlib/selftests/selftests.qrc b/tests/auto/testlib/selftests/selftests.qrc
index fb303af2b5..d10aa56ceb 100644
--- a/tests/auto/testlib/selftests/selftests.qrc
+++ b/tests/auto/testlib/selftests/selftests.qrc
@@ -37,6 +37,10 @@
<file>expected_commandlinedata.txt</file>
<file>expected_commandlinedata.xml</file>
<file>expected_commandlinedata.xunitxml</file>
+ <file>expected_counting.lightxml</file>
+ <file>expected_counting.txt</file>
+ <file>expected_counting.xml</file>
+ <file>expected_counting.xunitxml</file>
<file>expected_crashes.lightxml</file>
<file>expected_crashes.xml</file>
<file>expected_crashes.xunitxml</file>
diff --git a/tests/auto/testlib/selftests/singleskip/tst_singleskip.cpp b/tests/auto/testlib/selftests/singleskip/tst_singleskip.cpp
index d36b9b52f9..a95cc2f8a6 100644
--- a/tests/auto/testlib/selftests/singleskip/tst_singleskip.cpp
+++ b/tests/auto/testlib/selftests/singleskip/tst_singleskip.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/skip/tst_skip.cpp b/tests/auto/testlib/selftests/skip/tst_skip.cpp
index 76e9059f87..e7879c2e91 100644
--- a/tests/auto/testlib/selftests/skip/tst_skip.cpp
+++ b/tests/auto/testlib/selftests/skip/tst_skip.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/skipinit/tst_skipinit.cpp b/tests/auto/testlib/selftests/skipinit/tst_skipinit.cpp
index 052dabb343..c7e0c00a06 100644
--- a/tests/auto/testlib/selftests/skipinit/tst_skipinit.cpp
+++ b/tests/auto/testlib/selftests/skipinit/tst_skipinit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/skipinitdata/tst_skipinitdata.cpp b/tests/auto/testlib/selftests/skipinitdata/tst_skipinitdata.cpp
index 96c9eb6aff..cd7b472221 100644
--- a/tests/auto/testlib/selftests/skipinitdata/tst_skipinitdata.cpp
+++ b/tests/auto/testlib/selftests/skipinitdata/tst_skipinitdata.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/sleep/tst_sleep.cpp b/tests/auto/testlib/selftests/sleep/tst_sleep.cpp
index 349ecb1d1c..3bebca5e9a 100644
--- a/tests/auto/testlib/selftests/sleep/tst_sleep.cpp
+++ b/tests/auto/testlib/selftests/sleep/tst_sleep.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/strcmp/tst_strcmp.cpp b/tests/auto/testlib/selftests/strcmp/tst_strcmp.cpp
index 2cd69a5873..20bfc2228a 100644
--- a/tests/auto/testlib/selftests/strcmp/tst_strcmp.cpp
+++ b/tests/auto/testlib/selftests/strcmp/tst_strcmp.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/subtest/tst_subtest.cpp b/tests/auto/testlib/selftests/subtest/tst_subtest.cpp
index 385d43ab8d..5e54105a88 100644
--- a/tests/auto/testlib/selftests/subtest/tst_subtest.cpp
+++ b/tests/auto/testlib/selftests/subtest/tst_subtest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/tst_selftests.cpp b/tests/auto/testlib/selftests/tst_selftests.cpp
index 04696a1387..aaa58e092c 100644
--- a/tests/auto/testlib/selftests/tst_selftests.cpp
+++ b/tests/auto/testlib/selftests/tst_selftests.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -327,6 +327,7 @@ void tst_Selftests::runSubTest_data()
<< "benchliboptions"
<< "cmptest"
<< "commandlinedata"
+ << "counting"
<< "crashes"
<< "datatable"
<< "datetime"
diff --git a/tests/auto/testlib/selftests/warnings/tst_warnings.cpp b/tests/auto/testlib/selftests/warnings/tst_warnings.cpp
index 30fe15d354..933d0cc6ce 100644
--- a/tests/auto/testlib/selftests/warnings/tst_warnings.cpp
+++ b/tests/auto/testlib/selftests/warnings/tst_warnings.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/testlib/selftests/xunit/tst_xunit.cpp b/tests/auto/testlib/selftests/xunit/tst_xunit.cpp
index 4193387bc1..a69725639e 100644
--- a/tests/auto/testlib/selftests/xunit/tst_xunit.cpp
+++ b/tests/auto/testlib/selftests/xunit/tst_xunit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/Test.framework/Headers/testinterface.h b/tests/auto/tools/moc/Test.framework/Headers/testinterface.h
index d9f9a2b0f5..690a8c5503 100644
--- a/tests/auto/tools/moc/Test.framework/Headers/testinterface.h
+++ b/tests/auto/tools/moc/Test.framework/Headers/testinterface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/assign-namespace.h b/tests/auto/tools/moc/assign-namespace.h
index c73724918c..716bfbc9fe 100644
--- a/tests/auto/tools/moc/assign-namespace.h
+++ b/tests/auto/tools/moc/assign-namespace.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/backslash-newlines.h b/tests/auto/tools/moc/backslash-newlines.h
index e7edf4664b..4ba6883e15 100644
--- a/tests/auto/tools/moc/backslash-newlines.h
+++ b/tests/auto/tools/moc/backslash-newlines.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/c-comments.h b/tests/auto/tools/moc/c-comments.h
index fc58191e86..bc60747c4b 100644
--- a/tests/auto/tools/moc/c-comments.h
+++ b/tests/auto/tools/moc/c-comments.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/cstyle-enums.h b/tests/auto/tools/moc/cstyle-enums.h
index 21a883eb58..473f012928 100644
--- a/tests/auto/tools/moc/cstyle-enums.h
+++ b/tests/auto/tools/moc/cstyle-enums.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/cxx11-enums.h b/tests/auto/tools/moc/cxx11-enums.h
index ef98b6acfa..d3d06c398e 100644
--- a/tests/auto/tools/moc/cxx11-enums.h
+++ b/tests/auto/tools/moc/cxx11-enums.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Olivier Goffart.
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/dir-in-include-path.h b/tests/auto/tools/moc/dir-in-include-path.h
index cb530e20d9..d8b9b44794 100644
--- a/tests/auto/tools/moc/dir-in-include-path.h
+++ b/tests/auto/tools/moc/dir-in-include-path.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/error-on-wrong-notify.h b/tests/auto/tools/moc/error-on-wrong-notify.h
index 2f8de785a0..e7babfd9cb 100644
--- a/tests/auto/tools/moc/error-on-wrong-notify.h
+++ b/tests/auto/tools/moc/error-on-wrong-notify.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/escapes-in-string-literals.h b/tests/auto/tools/moc/escapes-in-string-literals.h
index 71e9759f36..033dca34eb 100644
--- a/tests/auto/tools/moc/escapes-in-string-literals.h
+++ b/tests/auto/tools/moc/escapes-in-string-literals.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/extraqualification.h b/tests/auto/tools/moc/extraqualification.h
index a54ed1770e..3cacf66381 100644
--- a/tests/auto/tools/moc/extraqualification.h
+++ b/tests/auto/tools/moc/extraqualification.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/forgotten-qinterface.h b/tests/auto/tools/moc/forgotten-qinterface.h
index 3be4422bdc..994d0378a7 100644
--- a/tests/auto/tools/moc/forgotten-qinterface.h
+++ b/tests/auto/tools/moc/forgotten-qinterface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/gadgetwithnoenums.h b/tests/auto/tools/moc/gadgetwithnoenums.h
index 1ef0eeece9..560f95835a 100644
--- a/tests/auto/tools/moc/gadgetwithnoenums.h
+++ b/tests/auto/tools/moc/gadgetwithnoenums.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/interface-from-framework.h b/tests/auto/tools/moc/interface-from-framework.h
index e78b6ec51a..3b8c901cca 100644
--- a/tests/auto/tools/moc/interface-from-framework.h
+++ b/tests/auto/tools/moc/interface-from-framework.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/macro-on-cmdline.h b/tests/auto/tools/moc/macro-on-cmdline.h
index 78ca4778cc..0d14f02027 100644
--- a/tests/auto/tools/moc/macro-on-cmdline.h
+++ b/tests/auto/tools/moc/macro-on-cmdline.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/namespaced-flags.h b/tests/auto/tools/moc/namespaced-flags.h
index 86b9891028..b8e09cce1c 100644
--- a/tests/auto/tools/moc/namespaced-flags.h
+++ b/tests/auto/tools/moc/namespaced-flags.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/no-keywords.h b/tests/auto/tools/moc/no-keywords.h
index 4f15aa2ad0..3f3b06dd46 100644
--- a/tests/auto/tools/moc/no-keywords.h
+++ b/tests/auto/tools/moc/no-keywords.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/oldstyle-casts.h b/tests/auto/tools/moc/oldstyle-casts.h
index f26aeb5629..e6d5ddb1ff 100644
--- a/tests/auto/tools/moc/oldstyle-casts.h
+++ b/tests/auto/tools/moc/oldstyle-casts.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/os9-newlines.h b/tests/auto/tools/moc/os9-newlines.h
index a2bf57fbb4..3d16ae3b91 100644
--- a/tests/auto/tools/moc/os9-newlines.h
+++ b/tests/auto/tools/moc/os9-newlines.h
@@ -1 +1 @@
-/**************************************************************************** ** ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). ** All rights reserved. ** Contact: Nokia Corporation (qt-info@nokia.com) ** ** This file is part of the test suite 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 <QObject> class Os9Newlines : public QObject { Q_OBJECT public Q_SLOTS: inline void testSlot() {} }; \ No newline at end of file
+/**************************************************************************** ** ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). ** Contact: http://www.qt-project.org/ ** ** This file is part of the test suite 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 <QObject> class Os9Newlines : public QObject { Q_OBJECT public Q_SLOTS: inline void testSlot() {} }; \ No newline at end of file
diff --git a/tests/auto/tools/moc/parse-boost.h b/tests/auto/tools/moc/parse-boost.h
index f475cb8778..181fbb5180 100644
--- a/tests/auto/tools/moc/parse-boost.h
+++ b/tests/auto/tools/moc/parse-boost.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/pure-virtual-signals.h b/tests/auto/tools/moc/pure-virtual-signals.h
index 4009de1e86..cd67413a5f 100644
--- a/tests/auto/tools/moc/pure-virtual-signals.h
+++ b/tests/auto/tools/moc/pure-virtual-signals.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/qinvokable.h b/tests/auto/tools/moc/qinvokable.h
index 17f1610ebe..0c1ec80b7f 100644
--- a/tests/auto/tools/moc/qinvokable.h
+++ b/tests/auto/tools/moc/qinvokable.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/qprivateslots.h b/tests/auto/tools/moc/qprivateslots.h
index 25c2ce2ba6..cf3a14df08 100644
--- a/tests/auto/tools/moc/qprivateslots.h
+++ b/tests/auto/tools/moc/qprivateslots.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/single_function_keyword.h b/tests/auto/tools/moc/single_function_keyword.h
index 62b91e2b38..2ba0a3a581 100644
--- a/tests/auto/tools/moc/single_function_keyword.h
+++ b/tests/auto/tools/moc/single_function_keyword.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/slots-with-void-template.h b/tests/auto/tools/moc/slots-with-void-template.h
index d182e752d9..081b03eb4a 100644
--- a/tests/auto/tools/moc/slots-with-void-template.h
+++ b/tests/auto/tools/moc/slots-with-void-template.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/task189996.h b/tests/auto/tools/moc/task189996.h
index 1f07266d18..abe5f2e21a 100644
--- a/tests/auto/tools/moc/task189996.h
+++ b/tests/auto/tools/moc/task189996.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/task192552.h b/tests/auto/tools/moc/task192552.h
index 843c19f11d..72be7549bf 100644
--- a/tests/auto/tools/moc/task192552.h
+++ b/tests/auto/tools/moc/task192552.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/task234909.h b/tests/auto/tools/moc/task234909.h
index ead7ce7791..a2c9598f1a 100644
--- a/tests/auto/tools/moc/task234909.h
+++ b/tests/auto/tools/moc/task234909.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/task240368.h b/tests/auto/tools/moc/task240368.h
index c019a5457d..95023af9d8 100644
--- a/tests/auto/tools/moc/task240368.h
+++ b/tests/auto/tools/moc/task240368.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/task87883.h b/tests/auto/tools/moc/task87883.h
index 3079809020..372c4c922c 100644
--- a/tests/auto/tools/moc/task87883.h
+++ b/tests/auto/tools/moc/task87883.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/template-gtgt.h b/tests/auto/tools/moc/template-gtgt.h
index 601c706c14..984fee5054 100644
--- a/tests/auto/tools/moc/template-gtgt.h
+++ b/tests/auto/tools/moc/template-gtgt.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/testproject/Plugin/Plugin.h b/tests/auto/tools/moc/testproject/Plugin/Plugin.h
index 90ed8e9be1..9da3fe018f 100644
--- a/tests/auto/tools/moc/testproject/Plugin/Plugin.h
+++ b/tests/auto/tools/moc/testproject/Plugin/Plugin.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/trigraphs.h b/tests/auto/tools/moc/trigraphs.h
index 9a76c933b1..e8cd6ff78a 100644
--- a/tests/auto/tools/moc/trigraphs.h
+++ b/tests/auto/tools/moc/trigraphs.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/tst_moc.cpp b/tests/auto/tools/moc/tst_moc.cpp
index bce1ad8d00..7c47d60e81 100644
--- a/tests/auto/tools/moc/tst_moc.cpp
+++ b/tests/auto/tools/moc/tst_moc.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/using-namespaces.h b/tests/auto/tools/moc/using-namespaces.h
index 52d15e7541..46595504e1 100644
--- a/tests/auto/tools/moc/using-namespaces.h
+++ b/tests/auto/tools/moc/using-namespaces.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/warn-on-multiple-qobject-subclasses.h b/tests/auto/tools/moc/warn-on-multiple-qobject-subclasses.h
index ae4ca10960..1d124419c1 100644
--- a/tests/auto/tools/moc/warn-on-multiple-qobject-subclasses.h
+++ b/tests/auto/tools/moc/warn-on-multiple-qobject-subclasses.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/warn-on-property-without-read.h b/tests/auto/tools/moc/warn-on-property-without-read.h
index c631b9da52..830c0761f2 100644
--- a/tests/auto/tools/moc/warn-on-property-without-read.h
+++ b/tests/auto/tools/moc/warn-on-property-without-read.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/moc/win-newlines.h b/tests/auto/tools/moc/win-newlines.h
index 0dd7366bbc..15b80b364b 100644
--- a/tests/auto/tools/moc/win-newlines.h
+++ b/tests/auto/tools/moc/win-newlines.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testcompiler.cpp b/tests/auto/tools/qmake/testcompiler.cpp
index 098c8c6d7c..d2cb9f2435 100644
--- a/tests/auto/tools/qmake/testcompiler.cpp
+++ b/tests/auto/tools/qmake/testcompiler.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testcompiler.h b/tests/auto/tools/qmake/testcompiler.h
index 7e8d7ecbe6..116e424551 100644
--- a/tests/auto/tools/qmake/testcompiler.h
+++ b/tests/auto/tools/qmake/testcompiler.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/findDeps/main.cpp b/tests/auto/tools/qmake/testdata/findDeps/main.cpp
index ab39567517..80514011a2 100644
--- a/tests/auto/tools/qmake/testdata/findDeps/main.cpp
+++ b/tests/auto/tools/qmake/testdata/findDeps/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/findDeps/object1.h b/tests/auto/tools/qmake/testdata/findDeps/object1.h
index a2a9bc3978..f448fdffa0 100644
--- a/tests/auto/tools/qmake/testdata/findDeps/object1.h
+++ b/tests/auto/tools/qmake/testdata/findDeps/object1.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/findDeps/object2.h b/tests/auto/tools/qmake/testdata/findDeps/object2.h
index d055694a48..5837110e9a 100644
--- a/tests/auto/tools/qmake/testdata/findDeps/object2.h
+++ b/tests/auto/tools/qmake/testdata/findDeps/object2.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/findDeps/object3.h b/tests/auto/tools/qmake/testdata/findDeps/object3.h
index d3e6ae685e..8f82fdbc9f 100644
--- a/tests/auto/tools/qmake/testdata/findDeps/object3.h
+++ b/tests/auto/tools/qmake/testdata/findDeps/object3.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/findDeps/object4.h b/tests/auto/tools/qmake/testdata/findDeps/object4.h
index 8ef8458b50..7fd421ed43 100644
--- a/tests/auto/tools/qmake/testdata/findDeps/object4.h
+++ b/tests/auto/tools/qmake/testdata/findDeps/object4.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/findDeps/object5.h b/tests/auto/tools/qmake/testdata/findDeps/object5.h
index 508ac33832..97a806ca02 100644
--- a/tests/auto/tools/qmake/testdata/findDeps/object5.h
+++ b/tests/auto/tools/qmake/testdata/findDeps/object5.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/findDeps/object6.h b/tests/auto/tools/qmake/testdata/findDeps/object6.h
index 460f2ba6cd..bdad2e0c05 100644
--- a/tests/auto/tools/qmake/testdata/findDeps/object6.h
+++ b/tests/auto/tools/qmake/testdata/findDeps/object6.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/findDeps/object7.h b/tests/auto/tools/qmake/testdata/findDeps/object7.h
index 19837add87..f78f0c8a24 100644
--- a/tests/auto/tools/qmake/testdata/findDeps/object7.h
+++ b/tests/auto/tools/qmake/testdata/findDeps/object7.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/findDeps/object8.h b/tests/auto/tools/qmake/testdata/findDeps/object8.h
index 025e656a39..80ab50d867 100644
--- a/tests/auto/tools/qmake/testdata/findDeps/object8.h
+++ b/tests/auto/tools/qmake/testdata/findDeps/object8.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/findDeps/object9.h b/tests/auto/tools/qmake/testdata/findDeps/object9.h
index 8b8c84478b..c9c2375159 100644
--- a/tests/auto/tools/qmake/testdata/findDeps/object9.h
+++ b/tests/auto/tools/qmake/testdata/findDeps/object9.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/findMocs/main.cpp b/tests/auto/tools/qmake/testdata/findMocs/main.cpp
index ed2faacfba..53bdd037da 100644
--- a/tests/auto/tools/qmake/testdata/findMocs/main.cpp
+++ b/tests/auto/tools/qmake/testdata/findMocs/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/findMocs/object1.h b/tests/auto/tools/qmake/testdata/findMocs/object1.h
index 1b3f3b6cba..d56484b34f 100644
--- a/tests/auto/tools/qmake/testdata/findMocs/object1.h
+++ b/tests/auto/tools/qmake/testdata/findMocs/object1.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/findMocs/object2.h b/tests/auto/tools/qmake/testdata/findMocs/object2.h
index a95a971d98..5a36dce672 100644
--- a/tests/auto/tools/qmake/testdata/findMocs/object2.h
+++ b/tests/auto/tools/qmake/testdata/findMocs/object2.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/findMocs/object3.h b/tests/auto/tools/qmake/testdata/findMocs/object3.h
index c347385688..2fb0921976 100644
--- a/tests/auto/tools/qmake/testdata/findMocs/object3.h
+++ b/tests/auto/tools/qmake/testdata/findMocs/object3.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/findMocs/object4.h b/tests/auto/tools/qmake/testdata/findMocs/object4.h
index 67814ee6eb..d1a41d20d9 100644
--- a/tests/auto/tools/qmake/testdata/findMocs/object4.h
+++ b/tests/auto/tools/qmake/testdata/findMocs/object4.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/findMocs/object5.h b/tests/auto/tools/qmake/testdata/findMocs/object5.h
index a17eaab6f4..5e70d75fc9 100644
--- a/tests/auto/tools/qmake/testdata/findMocs/object5.h
+++ b/tests/auto/tools/qmake/testdata/findMocs/object5.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/findMocs/object6.h b/tests/auto/tools/qmake/testdata/findMocs/object6.h
index 41b1d9635f..4fa2450c01 100644
--- a/tests/auto/tools/qmake/testdata/findMocs/object6.h
+++ b/tests/auto/tools/qmake/testdata/findMocs/object6.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/findMocs/object7.h b/tests/auto/tools/qmake/testdata/findMocs/object7.h
index a09faed78a..c60479a644 100644
--- a/tests/auto/tools/qmake/testdata/findMocs/object7.h
+++ b/tests/auto/tools/qmake/testdata/findMocs/object7.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/functions/1.cpp b/tests/auto/tools/qmake/testdata/functions/1.cpp
index b7ac2c493e..7dd482ea7d 100644
--- a/tests/auto/tools/qmake/testdata/functions/1.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/1.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/functions/2.cpp b/tests/auto/tools/qmake/testdata/functions/2.cpp
index b7ac2c493e..7dd482ea7d 100644
--- a/tests/auto/tools/qmake/testdata/functions/2.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/functions/one/1.cpp b/tests/auto/tools/qmake/testdata/functions/one/1.cpp
index b7ac2c493e..7dd482ea7d 100644
--- a/tests/auto/tools/qmake/testdata/functions/one/1.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/one/1.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/functions/one/2.cpp b/tests/auto/tools/qmake/testdata/functions/one/2.cpp
index b7ac2c493e..7dd482ea7d 100644
--- a/tests/auto/tools/qmake/testdata/functions/one/2.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/one/2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/functions/three/wildcard21.cpp b/tests/auto/tools/qmake/testdata/functions/three/wildcard21.cpp
index b7ac2c493e..7dd482ea7d 100644
--- a/tests/auto/tools/qmake/testdata/functions/three/wildcard21.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/three/wildcard21.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/functions/three/wildcard22.cpp b/tests/auto/tools/qmake/testdata/functions/three/wildcard22.cpp
index b7ac2c493e..7dd482ea7d 100644
--- a/tests/auto/tools/qmake/testdata/functions/three/wildcard22.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/three/wildcard22.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/functions/two/1.cpp b/tests/auto/tools/qmake/testdata/functions/two/1.cpp
index b7ac2c493e..7dd482ea7d 100644
--- a/tests/auto/tools/qmake/testdata/functions/two/1.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/two/1.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/functions/two/2.cpp b/tests/auto/tools/qmake/testdata/functions/two/2.cpp
index b7ac2c493e..7dd482ea7d 100644
--- a/tests/auto/tools/qmake/testdata/functions/two/2.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/two/2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/functions/wildcard21.cpp b/tests/auto/tools/qmake/testdata/functions/wildcard21.cpp
index b7ac2c493e..7dd482ea7d 100644
--- a/tests/auto/tools/qmake/testdata/functions/wildcard21.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/wildcard21.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/functions/wildcard22.cpp b/tests/auto/tools/qmake/testdata/functions/wildcard22.cpp
index b7ac2c493e..7dd482ea7d 100644
--- a/tests/auto/tools/qmake/testdata/functions/wildcard22.cpp
+++ b/tests/auto/tools/qmake/testdata/functions/wildcard22.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/include_dir/main.cpp b/tests/auto/tools/qmake/testdata/include_dir/main.cpp
index f88dbac4fc..fb5697e8a1 100644
--- a/tests/auto/tools/qmake/testdata/include_dir/main.cpp
+++ b/tests/auto/tools/qmake/testdata/include_dir/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/include_dir/test_file.cpp b/tests/auto/tools/qmake/testdata/include_dir/test_file.cpp
index 5c7dcc4825..07ffc4c26a 100644
--- a/tests/auto/tools/qmake/testdata/include_dir/test_file.cpp
+++ b/tests/auto/tools/qmake/testdata/include_dir/test_file.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/include_dir/test_file.h b/tests/auto/tools/qmake/testdata/include_dir/test_file.h
index cf8236084d..48aa026029 100644
--- a/tests/auto/tools/qmake/testdata/include_dir/test_file.h
+++ b/tests/auto/tools/qmake/testdata/include_dir/test_file.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/include_function/main.cpp b/tests/auto/tools/qmake/testdata/include_function/main.cpp
index 980b3b2eef..dda7abd714 100644
--- a/tests/auto/tools/qmake/testdata/include_function/main.cpp
+++ b/tests/auto/tools/qmake/testdata/include_function/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/install_depends/main.cpp b/tests/auto/tools/qmake/testdata/install_depends/main.cpp
index 253be88814..1d0fd02b09 100644
--- a/tests/auto/tools/qmake/testdata/install_depends/main.cpp
+++ b/tests/auto/tools/qmake/testdata/install_depends/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/install_depends/test_file.cpp b/tests/auto/tools/qmake/testdata/install_depends/test_file.cpp
index 14b431f00d..ace80a987e 100644
--- a/tests/auto/tools/qmake/testdata/install_depends/test_file.cpp
+++ b/tests/auto/tools/qmake/testdata/install_depends/test_file.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/install_depends/test_file.h b/tests/auto/tools/qmake/testdata/install_depends/test_file.h
index a00d395580..22690eefde 100644
--- a/tests/auto/tools/qmake/testdata/install_depends/test_file.h
+++ b/tests/auto/tools/qmake/testdata/install_depends/test_file.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/one_space/main.cpp b/tests/auto/tools/qmake/testdata/one_space/main.cpp
index d75a55df27..ef46cd28b7 100644
--- a/tests/auto/tools/qmake/testdata/one_space/main.cpp
+++ b/tests/auto/tools/qmake/testdata/one_space/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/quotedfilenames/main.cpp b/tests/auto/tools/qmake/testdata/quotedfilenames/main.cpp
index 5a64aad773..46b96dd0a6 100644
--- a/tests/auto/tools/qmake/testdata/quotedfilenames/main.cpp
+++ b/tests/auto/tools/qmake/testdata/quotedfilenames/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/shadow_files/main.cpp b/tests/auto/tools/qmake/testdata/shadow_files/main.cpp
index 253be88814..1d0fd02b09 100644
--- a/tests/auto/tools/qmake/testdata/shadow_files/main.cpp
+++ b/tests/auto/tools/qmake/testdata/shadow_files/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/shadow_files/test_file.cpp b/tests/auto/tools/qmake/testdata/shadow_files/test_file.cpp
index 14b431f00d..ace80a987e 100644
--- a/tests/auto/tools/qmake/testdata/shadow_files/test_file.cpp
+++ b/tests/auto/tools/qmake/testdata/shadow_files/test_file.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/shadow_files/test_file.h b/tests/auto/tools/qmake/testdata/shadow_files/test_file.h
index a00d395580..22690eefde 100644
--- a/tests/auto/tools/qmake/testdata/shadow_files/test_file.h
+++ b/tests/auto/tools/qmake/testdata/shadow_files/test_file.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/simple_app/main.cpp b/tests/auto/tools/qmake/testdata/simple_app/main.cpp
index ef011a10b0..789b3b9549 100644
--- a/tests/auto/tools/qmake/testdata/simple_app/main.cpp
+++ b/tests/auto/tools/qmake/testdata/simple_app/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/simple_app/test_file.cpp b/tests/auto/tools/qmake/testdata/simple_app/test_file.cpp
index 14b431f00d..ace80a987e 100644
--- a/tests/auto/tools/qmake/testdata/simple_app/test_file.cpp
+++ b/tests/auto/tools/qmake/testdata/simple_app/test_file.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/simple_app/test_file.h b/tests/auto/tools/qmake/testdata/simple_app/test_file.h
index a00d395580..22690eefde 100644
--- a/tests/auto/tools/qmake/testdata/simple_app/test_file.h
+++ b/tests/auto/tools/qmake/testdata/simple_app/test_file.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/simple_dll/simple.cpp b/tests/auto/tools/qmake/testdata/simple_dll/simple.cpp
index a0a8911644..d797bae34a 100644
--- a/tests/auto/tools/qmake/testdata/simple_dll/simple.cpp
+++ b/tests/auto/tools/qmake/testdata/simple_dll/simple.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/simple_dll/simple.h b/tests/auto/tools/qmake/testdata/simple_dll/simple.h
index 351b568923..5bebb42584 100644
--- a/tests/auto/tools/qmake/testdata/simple_dll/simple.h
+++ b/tests/auto/tools/qmake/testdata/simple_dll/simple.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/simple_lib/simple.cpp b/tests/auto/tools/qmake/testdata/simple_lib/simple.cpp
index a0a8911644..d797bae34a 100644
--- a/tests/auto/tools/qmake/testdata/simple_lib/simple.cpp
+++ b/tests/auto/tools/qmake/testdata/simple_lib/simple.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/simple_lib/simple.h b/tests/auto/tools/qmake/testdata/simple_lib/simple.h
index ce9311e0a1..feaf8ec0b3 100644
--- a/tests/auto/tools/qmake/testdata/simple_lib/simple.h
+++ b/tests/auto/tools/qmake/testdata/simple_lib/simple.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/subdir_via_pro_file_extra_target/simple/main.cpp b/tests/auto/tools/qmake/testdata/subdir_via_pro_file_extra_target/simple/main.cpp
index 76e559325e..58b2b7cb43 100644
--- a/tests/auto/tools/qmake/testdata/subdir_via_pro_file_extra_target/simple/main.cpp
+++ b/tests/auto/tools/qmake/testdata/subdir_via_pro_file_extra_target/simple/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/subdirs/simple_app/main.cpp b/tests/auto/tools/qmake/testdata/subdirs/simple_app/main.cpp
index ef011a10b0..789b3b9549 100644
--- a/tests/auto/tools/qmake/testdata/subdirs/simple_app/main.cpp
+++ b/tests/auto/tools/qmake/testdata/subdirs/simple_app/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/subdirs/simple_app/test_file.cpp b/tests/auto/tools/qmake/testdata/subdirs/simple_app/test_file.cpp
index 14b431f00d..ace80a987e 100644
--- a/tests/auto/tools/qmake/testdata/subdirs/simple_app/test_file.cpp
+++ b/tests/auto/tools/qmake/testdata/subdirs/simple_app/test_file.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/subdirs/simple_app/test_file.h b/tests/auto/tools/qmake/testdata/subdirs/simple_app/test_file.h
index a00d395580..22690eefde 100644
--- a/tests/auto/tools/qmake/testdata/subdirs/simple_app/test_file.h
+++ b/tests/auto/tools/qmake/testdata/subdirs/simple_app/test_file.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple.cpp b/tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple.cpp
index a0a8911644..d797bae34a 100644
--- a/tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple.cpp
+++ b/tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple.h b/tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple.h
index 351b568923..5bebb42584 100644
--- a/tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple.h
+++ b/tests/auto/tools/qmake/testdata/subdirs/simple_dll/simple.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/qmake/tst_qmake.cpp b/tests/auto/tools/qmake/tst_qmake.cpp
index 03f7720c22..fcebd6b821 100644
--- a/tests/auto/tools/qmake/tst_qmake.cpp
+++ b/tests/auto/tools/qmake/tst_qmake.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/rcc/tst_rcc.cpp b/tests/auto/tools/rcc/tst_rcc.cpp
index 963ec75d75..0124b580a8 100644
--- a/tests/auto/tools/rcc/tst_rcc.cpp
+++ b/tests/auto/tools/rcc/tst_rcc.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/tools/uic/baseline/batchtranslation.ui b/tests/auto/tools/uic/baseline/batchtranslation.ui
index e3103cb358..c883087dba 100644
--- a/tests/auto/tools/uic/baseline/batchtranslation.ui
+++ b/tests/auto/tools/uic/baseline/batchtranslation.ui
@@ -3,8 +3,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -37,6 +36,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/batchtranslation.ui.h b/tests/auto/tools/uic/baseline/batchtranslation.ui.h
index a2f65b58a9..302dbc2cb4 100644
--- a/tests/auto/tools/uic/baseline/batchtranslation.ui.h
+++ b/tests/auto/tools/uic/baseline/batchtranslation.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/config.ui b/tests/auto/tools/uic/baseline/config.ui
index e509a5dcc9..4718ed152a 100644
--- a/tests/auto/tools/uic/baseline/config.ui
+++ b/tests/auto/tools/uic/baseline/config.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/config.ui.h b/tests/auto/tools/uic/baseline/config.ui.h
index cfaf7b7846..5606978f09 100644
--- a/tests/auto/tools/uic/baseline/config.ui.h
+++ b/tests/auto/tools/uic/baseline/config.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/finddialog.ui b/tests/auto/tools/uic/baseline/finddialog.ui
index b2d3c4097d..8789f4c2fa 100644
--- a/tests/auto/tools/uic/baseline/finddialog.ui
+++ b/tests/auto/tools/uic/baseline/finddialog.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/finddialog.ui.h b/tests/auto/tools/uic/baseline/finddialog.ui.h
index 3f544c999d..12f5514d41 100644
--- a/tests/auto/tools/uic/baseline/finddialog.ui.h
+++ b/tests/auto/tools/uic/baseline/finddialog.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/formwindowsettings.ui b/tests/auto/tools/uic/baseline/formwindowsettings.ui
index bca70a7fe1..1b2e6e2cdf 100644
--- a/tests/auto/tools/uic/baseline/formwindowsettings.ui
+++ b/tests/auto/tools/uic/baseline/formwindowsettings.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/formwindowsettings.ui.h b/tests/auto/tools/uic/baseline/formwindowsettings.ui.h
index 9e9edc08a6..ffc1e1ad39 100644
--- a/tests/auto/tools/uic/baseline/formwindowsettings.ui.h
+++ b/tests/auto/tools/uic/baseline/formwindowsettings.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/helpdialog.ui b/tests/auto/tools/uic/baseline/helpdialog.ui
index 7da10cd4f7..d9338ba5a7 100644
--- a/tests/auto/tools/uic/baseline/helpdialog.ui
+++ b/tests/auto/tools/uic/baseline/helpdialog.ui
@@ -3,8 +3,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -37,6 +36,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/helpdialog.ui.h b/tests/auto/tools/uic/baseline/helpdialog.ui.h
index fa7bbe3810..b16632fe00 100644
--- a/tests/auto/tools/uic/baseline/helpdialog.ui.h
+++ b/tests/auto/tools/uic/baseline/helpdialog.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/listwidgeteditor.ui b/tests/auto/tools/uic/baseline/listwidgeteditor.ui
index 0a38d8f65f..67eaaca287 100644
--- a/tests/auto/tools/uic/baseline/listwidgeteditor.ui
+++ b/tests/auto/tools/uic/baseline/listwidgeteditor.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/listwidgeteditor.ui.h b/tests/auto/tools/uic/baseline/listwidgeteditor.ui.h
index a95f2cb860..1cca34b1fa 100644
--- a/tests/auto/tools/uic/baseline/listwidgeteditor.ui.h
+++ b/tests/auto/tools/uic/baseline/listwidgeteditor.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/newactiondialog.ui b/tests/auto/tools/uic/baseline/newactiondialog.ui
index ef326fe63e..dc692af0eb 100644
--- a/tests/auto/tools/uic/baseline/newactiondialog.ui
+++ b/tests/auto/tools/uic/baseline/newactiondialog.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/newactiondialog.ui.h b/tests/auto/tools/uic/baseline/newactiondialog.ui.h
index d409ccb786..b69e1581f9 100644
--- a/tests/auto/tools/uic/baseline/newactiondialog.ui.h
+++ b/tests/auto/tools/uic/baseline/newactiondialog.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/newform.ui b/tests/auto/tools/uic/baseline/newform.ui
index d83aef26a2..bd559e9f6e 100644
--- a/tests/auto/tools/uic/baseline/newform.ui
+++ b/tests/auto/tools/uic/baseline/newform.ui
@@ -3,8 +3,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -37,6 +36,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/newform.ui.h b/tests/auto/tools/uic/baseline/newform.ui.h
index b744dd6869..e985c3bf26 100644
--- a/tests/auto/tools/uic/baseline/newform.ui.h
+++ b/tests/auto/tools/uic/baseline/newform.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/orderdialog.ui b/tests/auto/tools/uic/baseline/orderdialog.ui
index e95ac2906f..e35c029896 100644
--- a/tests/auto/tools/uic/baseline/orderdialog.ui
+++ b/tests/auto/tools/uic/baseline/orderdialog.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/orderdialog.ui.h b/tests/auto/tools/uic/baseline/orderdialog.ui.h
index 16fa98b6de..017222da50 100644
--- a/tests/auto/tools/uic/baseline/orderdialog.ui.h
+++ b/tests/auto/tools/uic/baseline/orderdialog.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/paletteeditor.ui b/tests/auto/tools/uic/baseline/paletteeditor.ui
index 62b728267b..3498136d6e 100644
--- a/tests/auto/tools/uic/baseline/paletteeditor.ui
+++ b/tests/auto/tools/uic/baseline/paletteeditor.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/paletteeditor.ui.h b/tests/auto/tools/uic/baseline/paletteeditor.ui.h
index 808295ddf6..de57468b9d 100644
--- a/tests/auto/tools/uic/baseline/paletteeditor.ui.h
+++ b/tests/auto/tools/uic/baseline/paletteeditor.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/phrasebookbox.ui b/tests/auto/tools/uic/baseline/phrasebookbox.ui
index 95e92e4311..33989348e5 100644
--- a/tests/auto/tools/uic/baseline/phrasebookbox.ui
+++ b/tests/auto/tools/uic/baseline/phrasebookbox.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/phrasebookbox.ui.h b/tests/auto/tools/uic/baseline/phrasebookbox.ui.h
index 2b1c6222c1..ad7f916f56 100644
--- a/tests/auto/tools/uic/baseline/phrasebookbox.ui.h
+++ b/tests/auto/tools/uic/baseline/phrasebookbox.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/plugindialog.ui b/tests/auto/tools/uic/baseline/plugindialog.ui
index 924d506c2d..a4ea305188 100644
--- a/tests/auto/tools/uic/baseline/plugindialog.ui
+++ b/tests/auto/tools/uic/baseline/plugindialog.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/plugindialog.ui.h b/tests/auto/tools/uic/baseline/plugindialog.ui.h
index bbde5ab416..24453cb47c 100644
--- a/tests/auto/tools/uic/baseline/plugindialog.ui.h
+++ b/tests/auto/tools/uic/baseline/plugindialog.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/previewwidget.ui b/tests/auto/tools/uic/baseline/previewwidget.ui
index 00bcfbe66c..7a238a37a0 100644
--- a/tests/auto/tools/uic/baseline/previewwidget.ui
+++ b/tests/auto/tools/uic/baseline/previewwidget.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/previewwidget.ui.h b/tests/auto/tools/uic/baseline/previewwidget.ui.h
index 84eba31b17..9fd79688f2 100644
--- a/tests/auto/tools/uic/baseline/previewwidget.ui.h
+++ b/tests/auto/tools/uic/baseline/previewwidget.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/qfiledialog.ui b/tests/auto/tools/uic/baseline/qfiledialog.ui
index 7994f104ac..3118fbdaec 100644
--- a/tests/auto/tools/uic/baseline/qfiledialog.ui
+++ b/tests/auto/tools/uic/baseline/qfiledialog.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/qfiledialog.ui.h b/tests/auto/tools/uic/baseline/qfiledialog.ui.h
index 75b03ed518..62030018cb 100644
--- a/tests/auto/tools/uic/baseline/qfiledialog.ui.h
+++ b/tests/auto/tools/uic/baseline/qfiledialog.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/qtgradientdialog.ui b/tests/auto/tools/uic/baseline/qtgradientdialog.ui
index 045806eb31..41217ab0c5 100644
--- a/tests/auto/tools/uic/baseline/qtgradientdialog.ui
+++ b/tests/auto/tools/uic/baseline/qtgradientdialog.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/qtgradientdialog.ui.h b/tests/auto/tools/uic/baseline/qtgradientdialog.ui.h
index f9721bad0a..d9c27a769e 100644
--- a/tests/auto/tools/uic/baseline/qtgradientdialog.ui.h
+++ b/tests/auto/tools/uic/baseline/qtgradientdialog.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/qtgradienteditor.ui b/tests/auto/tools/uic/baseline/qtgradienteditor.ui
index 4754bc5899..60e9d29d9f 100644
--- a/tests/auto/tools/uic/baseline/qtgradienteditor.ui
+++ b/tests/auto/tools/uic/baseline/qtgradienteditor.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/qtgradienteditor.ui.h b/tests/auto/tools/uic/baseline/qtgradienteditor.ui.h
index ca9de7f2a8..c344d006b5 100644
--- a/tests/auto/tools/uic/baseline/qtgradienteditor.ui.h
+++ b/tests/auto/tools/uic/baseline/qtgradienteditor.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/qtgradientviewdialog.ui b/tests/auto/tools/uic/baseline/qtgradientviewdialog.ui
index 4b02db52de..8574135201 100644
--- a/tests/auto/tools/uic/baseline/qtgradientviewdialog.ui
+++ b/tests/auto/tools/uic/baseline/qtgradientviewdialog.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/qtgradientviewdialog.ui.h b/tests/auto/tools/uic/baseline/qtgradientviewdialog.ui.h
index 61c814964a..d93dfd605c 100644
--- a/tests/auto/tools/uic/baseline/qtgradientviewdialog.ui.h
+++ b/tests/auto/tools/uic/baseline/qtgradientviewdialog.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/saveformastemplate.ui b/tests/auto/tools/uic/baseline/saveformastemplate.ui
index 40ee76fbba..1d4cc2ecb4 100644
--- a/tests/auto/tools/uic/baseline/saveformastemplate.ui
+++ b/tests/auto/tools/uic/baseline/saveformastemplate.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/saveformastemplate.ui.h b/tests/auto/tools/uic/baseline/saveformastemplate.ui.h
index bf04e7b22c..32597cd6ff 100644
--- a/tests/auto/tools/uic/baseline/saveformastemplate.ui.h
+++ b/tests/auto/tools/uic/baseline/saveformastemplate.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/statistics.ui b/tests/auto/tools/uic/baseline/statistics.ui
index 359c6f7612..57ba6577f3 100644
--- a/tests/auto/tools/uic/baseline/statistics.ui
+++ b/tests/auto/tools/uic/baseline/statistics.ui
@@ -3,8 +3,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -37,6 +36,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/statistics.ui.h b/tests/auto/tools/uic/baseline/statistics.ui.h
index 76aadcce6d..b6e14b5dda 100644
--- a/tests/auto/tools/uic/baseline/statistics.ui.h
+++ b/tests/auto/tools/uic/baseline/statistics.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/stringlisteditor.ui b/tests/auto/tools/uic/baseline/stringlisteditor.ui
index c6223a5f83..929aae0e52 100644
--- a/tests/auto/tools/uic/baseline/stringlisteditor.ui
+++ b/tests/auto/tools/uic/baseline/stringlisteditor.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/stringlisteditor.ui.h b/tests/auto/tools/uic/baseline/stringlisteditor.ui.h
index 163e9a8613..7624eaec58 100644
--- a/tests/auto/tools/uic/baseline/stringlisteditor.ui.h
+++ b/tests/auto/tools/uic/baseline/stringlisteditor.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/tabbedbrowser.ui b/tests/auto/tools/uic/baseline/tabbedbrowser.ui
index 5b28dd85a4..7164fb7271 100644
--- a/tests/auto/tools/uic/baseline/tabbedbrowser.ui
+++ b/tests/auto/tools/uic/baseline/tabbedbrowser.ui
@@ -3,8 +3,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -37,6 +36,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/tabbedbrowser.ui.h b/tests/auto/tools/uic/baseline/tabbedbrowser.ui.h
index 00b6c9cdd6..424871f688 100644
--- a/tests/auto/tools/uic/baseline/tabbedbrowser.ui.h
+++ b/tests/auto/tools/uic/baseline/tabbedbrowser.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/tablewidgeteditor.ui b/tests/auto/tools/uic/baseline/tablewidgeteditor.ui
index 558e7e89ee..e088a41eba 100644
--- a/tests/auto/tools/uic/baseline/tablewidgeteditor.ui
+++ b/tests/auto/tools/uic/baseline/tablewidgeteditor.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/tablewidgeteditor.ui.h b/tests/auto/tools/uic/baseline/tablewidgeteditor.ui.h
index 3d69f59938..da5357d1fd 100644
--- a/tests/auto/tools/uic/baseline/tablewidgeteditor.ui.h
+++ b/tests/auto/tools/uic/baseline/tablewidgeteditor.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/translatedialog.ui b/tests/auto/tools/uic/baseline/translatedialog.ui
index 57a0a7a039..9377d1c434 100644
--- a/tests/auto/tools/uic/baseline/translatedialog.ui
+++ b/tests/auto/tools/uic/baseline/translatedialog.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/translatedialog.ui.h b/tests/auto/tools/uic/baseline/translatedialog.ui.h
index 3f66587f65..8ff12becc9 100644
--- a/tests/auto/tools/uic/baseline/translatedialog.ui.h
+++ b/tests/auto/tools/uic/baseline/translatedialog.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/treewidgeteditor.ui b/tests/auto/tools/uic/baseline/treewidgeteditor.ui
index 6fdcc54625..56b17f5b4a 100644
--- a/tests/auto/tools/uic/baseline/treewidgeteditor.ui
+++ b/tests/auto/tools/uic/baseline/treewidgeteditor.ui
@@ -2,8 +2,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/treewidgeteditor.ui.h b/tests/auto/tools/uic/baseline/treewidgeteditor.ui.h
index 2aa95b8f0a..843737fe59 100644
--- a/tests/auto/tools/uic/baseline/treewidgeteditor.ui.h
+++ b/tests/auto/tools/uic/baseline/treewidgeteditor.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/baseline/trpreviewtool.ui b/tests/auto/tools/uic/baseline/trpreviewtool.ui
index 520442b348..472d9d6332 100644
--- a/tests/auto/tools/uic/baseline/trpreviewtool.ui
+++ b/tests/auto/tools/uic/baseline/trpreviewtool.ui
@@ -3,8 +3,7 @@
<comment>*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -37,6 +36,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************</comment>
diff --git a/tests/auto/tools/uic/baseline/trpreviewtool.ui.h b/tests/auto/tools/uic/baseline/trpreviewtool.ui.h
index 196a820c55..a26ff1c828 100644
--- a/tests/auto/tools/uic/baseline/trpreviewtool.ui.h
+++ b/tests/auto/tools/uic/baseline/trpreviewtool.ui.h
@@ -2,8 +2,7 @@
*********************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the autotests of the Qt Toolkit.
**
@@ -36,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
*********************************************************************
diff --git a/tests/auto/tools/uic/tst_uic.cpp b/tests/auto/tools/uic/tst_uic.cpp
index d298078487..0ea22968db 100644
--- a/tests/auto/tools/uic/tst_uic.cpp
+++ b/tests/auto/tools/uic/tst_uic.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp b/tests/auto/widgets/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp
index c3ede37e7f..b7c113ce42 100644
--- a/tests/auto/widgets/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp
+++ b/tests/auto/widgets/dialogs/qabstractprintdialog/tst_qabstractprintdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/dialogs/qcolordialog/tst_qcolordialog.cpp b/tests/auto/widgets/dialogs/qcolordialog/tst_qcolordialog.cpp
index f972bb3054..31fab971a0 100644
--- a/tests/auto/widgets/dialogs/qcolordialog/tst_qcolordialog.cpp
+++ b/tests/auto/widgets/dialogs/qcolordialog/tst_qcolordialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,7 @@ public:
tst_QColorDialog();
virtual ~tst_QColorDialog();
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
public slots:
void postKeyReturn();
private slots:
@@ -125,7 +125,7 @@ void tst_QColorDialog::cleanup()
{
}
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
//copied from QFontDialogTest
void tst_QColorDialog::postKeyReturn() {
QWidgetList list = QApplication::topLevelWidgets();
diff --git a/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp b/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp
index 2a17cb4efc..b332fb40f8 100644
--- a/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp
+++ b/tests/auto/widgets/dialogs/qdialog/tst_qdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -440,7 +440,7 @@ public slots:
void tst_QDialog::throwInExec()
{
-#if defined(Q_WS_MAC) || (defined(Q_WS_WINCE) && defined(_ARM_))
+#if defined(Q_OS_MAC) || (defined(Q_WS_WINCE) && defined(_ARM_))
QSKIP("Throwing exceptions in exec() is not supported on this platform.");
#endif
#if defined(Q_OS_LINUX)
diff --git a/tests/auto/widgets/dialogs/qerrormessage/tst_qerrormessage.cpp b/tests/auto/widgets/dialogs/qerrormessage/tst_qerrormessage.cpp
index cdf53c361e..3df4514b37 100644
--- a/tests/auto/widgets/dialogs/qerrormessage/tst_qerrormessage.cpp
+++ b/tests/auto/widgets/dialogs/qerrormessage/tst_qerrormessage.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp b/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp
index c2d21c2cf1..14c2be5bd8 100644
--- a/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp
+++ b/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -329,8 +329,8 @@ void tst_QFiledialog::filterSelectedSignal()
filterChoices << "Image files (*.png *.xpm *.jpg)"
<< "Text files (*.txt)"
<< "Any files (*.*)";
- fd.setFilters(filterChoices);
- QCOMPARE(fd.filters(), filterChoices);
+ fd.setNameFilters(filterChoices);
+ QCOMPARE(fd.nameFilters(), filterChoices);
QComboBox *filters = qFindChild<QComboBox*>(&fd, "fileTypeCombo");
QVERIFY(filters);
@@ -354,7 +354,7 @@ void tst_QFiledialog::args()
#ifndef Q_OS_WIN
QCOMPARE(fd.directory(), QDir(directory));
#endif
- QCOMPARE(fd.filters(), QStringList(filter));
+ QCOMPARE(fd.nameFilters(), QStringList(filter));
}
void tst_QFiledialog::directory()
@@ -648,7 +648,7 @@ void tst_QFiledialog::filters()
QSignalSpy spyDirectoryEntered(&fd, SIGNAL(directoryEntered(const QString &)));
QSignalSpy spyFilesSelected(&fd, SIGNAL(filesSelected(const QStringList &)));
QSignalSpy spyFilterSelected(&fd, SIGNAL(filterSelected(const QString &)));
- QCOMPARE(fd.filters(), QStringList("All Files (*)"));
+ QCOMPARE(fd.nameFilters(), QStringList("All Files (*)"));
// effects
QList<QComboBox*> views = qFindChildren<QComboBox*>(&fd, "fileTypeCombo");
@@ -659,14 +659,14 @@ void tst_QFiledialog::filters()
filters << "Image files (*.png *.xpm *.jpg)"
<< "Text files (*.txt)"
<< "Any files (*.*)";
- fd.setFilters(filters);
+ fd.setNameFilters(filters);
QCOMPARE(views.at(0)->isVisible(), false);
fd.show();
fd.setAcceptMode(QFileDialog::AcceptSave);
QCOMPARE(views.at(0)->isVisible(), true);
- QCOMPARE(fd.filters(), filters);
- fd.setFilter("Image files (*.png *.xpm *.jpg);;Text files (*.txt);;Any files (*.*)");
- QCOMPARE(fd.filters(), filters);
+ QCOMPARE(fd.nameFilters(), filters);
+ fd.setNameFilter("Image files (*.png *.xpm *.jpg);;Text files (*.txt);;Any files (*.*)");
+ QCOMPARE(fd.nameFilters(), filters);
QCOMPARE(spyCurrentChanged.count(), 0);
QCOMPARE(spyDirectoryEntered.count(), 0);
QCOMPARE(spyFilesSelected.count(), 0);
@@ -682,38 +682,38 @@ void tst_QFiledialog::filters()
QStringList expected;
expected << "C++ Source Files(*.cpp)";
expected << "Any(*.*)";
- fd2.setFilter("C++ Source Files(*.cpp);;Any(*.*)");
- QCOMPARE(expected, fd2.filters());
- fd2.setFilter("C++ Source Files(*.cpp) ;;Any(*.*)");
- QCOMPARE(expected, fd2.filters());
- fd2.setFilter("C++ Source Files(*.cpp);; Any(*.*)");
- QCOMPARE(expected, fd2.filters());
- fd2.setFilter(" C++ Source Files(*.cpp);; Any(*.*)");
- QCOMPARE(expected, fd2.filters());
- fd2.setFilter("C++ Source Files(*.cpp) ;; Any(*.*)");
- QCOMPARE(expected, fd2.filters());
+ fd2.setNameFilter("C++ Source Files(*.cpp);;Any(*.*)");
+ QCOMPARE(expected, fd2.nameFilters());
+ fd2.setNameFilter("C++ Source Files(*.cpp) ;;Any(*.*)");
+ QCOMPARE(expected, fd2.nameFilters());
+ fd2.setNameFilter("C++ Source Files(*.cpp);; Any(*.*)");
+ QCOMPARE(expected, fd2.nameFilters());
+ fd2.setNameFilter(" C++ Source Files(*.cpp);; Any(*.*)");
+ QCOMPARE(expected, fd2.nameFilters());
+ fd2.setNameFilter("C++ Source Files(*.cpp) ;; Any(*.*)");
+ QCOMPARE(expected, fd2.nameFilters());
}
void tst_QFiledialog::selectFilter()
{
QNonNativeFileDialog fd;
QSignalSpy spyFilterSelected(&fd, SIGNAL(filterSelected(const QString &)));
- QCOMPARE(fd.selectedFilter(), QString("All Files (*)"));
+ QCOMPARE(fd.selectedNameFilter(), QString("All Files (*)"));
QStringList filters;
filters << "Image files (*.png *.xpm *.jpg)"
<< "Text files (*.txt)"
<< "Any files (*.*)";
- fd.setFilters(filters);
- QCOMPARE(fd.selectedFilter(), filters.at(0));
- fd.selectFilter(filters.at(1));
- QCOMPARE(fd.selectedFilter(), filters.at(1));
- fd.selectFilter(filters.at(2));
- QCOMPARE(fd.selectedFilter(), filters.at(2));
-
- fd.selectFilter("bob");
- QCOMPARE(fd.selectedFilter(), filters.at(2));
- fd.selectFilter("");
- QCOMPARE(fd.selectedFilter(), filters.at(2));
+ fd.setNameFilters(filters);
+ QCOMPARE(fd.selectedNameFilter(), filters.at(0));
+ fd.selectNameFilter(filters.at(1));
+ QCOMPARE(fd.selectedNameFilter(), filters.at(1));
+ fd.selectNameFilter(filters.at(2));
+ QCOMPARE(fd.selectedNameFilter(), filters.at(2));
+
+ fd.selectNameFilter("bob");
+ QCOMPARE(fd.selectedNameFilter(), filters.at(2));
+ fd.selectNameFilter("");
+ QCOMPARE(fd.selectedNameFilter(), filters.at(2));
QCOMPARE(spyFilterSelected.count(), 0);
}
@@ -909,8 +909,8 @@ void tst_QFiledialog::selectFiles()
QVERIFY(listView);
for (int i = 0; i < list.count(); ++i) {
fd.selectFile(fd.directory().path() + "/" + list.at(i));
-#if defined(Q_WS_MAC) || defined(Q_WS_WIN)
- QEXPECT_FAIL("", "This test does not work on Mac or Windows", Abort);
+#if defined(Q_WS_WIN)
+ QEXPECT_FAIL("", "This test does not work on Windows", Abort);
#endif
QTRY_VERIFY(!listView->selectionModel()->selectedRows().isEmpty());
toSelect.append(listView->selectionModel()->selectedRows().last());
@@ -1004,8 +1004,8 @@ void tst_QFiledialog::proxymodel()
void tst_QFiledialog::setNameFilter()
{
QNonNativeFileDialog fd;
- fd.setFilter(QString());
- fd.setFilters(QStringList());
+ fd.setNameFilter(QString());
+ fd.setNameFilters(QStringList());
}
void tst_QFiledialog::focus()
@@ -1223,13 +1223,16 @@ void tst_QFiledialog::clearLineEdit()
list->setEditFocus(true);
#endif
QTest::keyClick(list, Qt::Key_Down);
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
QTest::keyClick(list, Qt::Key_Return);
#else
QTest::keyClick(list, Qt::Key_O, Qt::ControlModifier);
#endif
QTest::qWait(2000);
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("", "QTBUG-23703", Abort);
+#endif
QVERIFY(fd.directory().absolutePath() != QDir::home().absolutePath());
QVERIFY(!lineEdit->text().isEmpty());
@@ -1240,7 +1243,7 @@ void tst_QFiledialog::clearLineEdit()
QTest::qWait(1000);
QTest::keyClick(list, Qt::Key_Down);
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
QTest::keyClick(list, Qt::Key_Return);
#else
QTest::keyClick(list, Qt::Key_O, Qt::ControlModifier);
diff --git a/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp b/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp
index 3ea66c5729..472469e797 100644
--- a/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp
+++ b/tests/auto/widgets/dialogs/qfiledialog2/tst_qfiledialog2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -266,7 +266,7 @@ void tst_QFileDialog2::showNameFilterDetails()
filterChoices << "Image files (*.png *.xpm *.jpg)"
<< "Text files (*.txt)"
<< "Any files (*.*)";
- fd.setFilters(filterChoices);
+ fd.setNameFilters(filterChoices);
fd.setNameFilterDetailsVisible(false);
QCOMPARE(filters->itemText(0), QString("Image files"));
@@ -515,6 +515,9 @@ void tst_QFileDialog2::task227930_correctNavigationKeyboardBehavior()
QTest::keyClick(list, Qt::Key_Down);
QTest::keyClick(list, Qt::Key_Return);
QTest::qWait(200);
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("", "This test currently fails on Mac OS X, see QTBUG-23602", Continue);
+#endif
QCOMPARE(fd.isVisible(), true);
QTest::qWait(200);
file.close();
diff --git a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
index dbd1cfa016..ea4eed54d2 100644
--- a/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
+++ b/tests/auto/widgets/dialogs/qfilesystemmodel/tst_qfilesystemmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp b/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp
index d97d32698c..f5c3e08217 100644
--- a/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp
+++ b/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -102,7 +102,6 @@ void tst_QFontDialog::cleanup()
void tst_QFontDialog::postKeyReturn() {
-#ifndef Q_WS_MAC
QWidgetList list = QApplication::topLevelWidgets();
for (int i=0; i<list.count(); ++i) {
QFontDialog *dialog = qobject_cast<QFontDialog*>(list[i]);
@@ -111,10 +110,6 @@ void tst_QFontDialog::postKeyReturn() {
return;
}
}
-#else
- extern void click_cocoa_button();
- click_cocoa_button();
-#endif
}
void tst_QFontDialog::defaultOkButton()
diff --git a/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog_mac_helpers.mm b/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog_mac_helpers.mm
index d10c789aec..1b5cdc382c 100644
--- a/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog_mac_helpers.mm
+++ b/tests/auto/widgets/dialogs/qfontdialog/tst_qfontdialog_mac_helpers.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/dialogs/qinputdialog/tst_qinputdialog.cpp b/tests/auto/widgets/dialogs/qinputdialog/tst_qinputdialog.cpp
index 0a62ac3099..a38c2d070d 100644
--- a/tests/auto/widgets/dialogs/qinputdialog/tst_qinputdialog.cpp
+++ b/tests/auto/widgets/dialogs/qinputdialog/tst_qinputdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -55,14 +55,14 @@ class tst_QInputDialog : public QObject
QWidget *parent;
QDialog::DialogCode doneCode;
void (*testFunc)(QInputDialog *);
- static void testFuncGetInteger(QInputDialog *dialog);
+ static void testFuncGetInt(QInputDialog *dialog);
static void testFuncGetDouble(QInputDialog *dialog);
static void testFuncGetText(QInputDialog *dialog);
static void testFuncGetItem(QInputDialog *dialog);
void timerEvent(QTimerEvent *event);
private slots:
- void getInteger_data();
- void getInteger();
+ void getInt_data();
+ void getInt();
void getDouble_data();
void getDouble();
void task255502getDouble();
@@ -222,7 +222,7 @@ void testGetItem(QInputDialog *dialog)
QVERIFY(okButton->isEnabled());
}
-void tst_QInputDialog::testFuncGetInteger(QInputDialog *dialog)
+void tst_QInputDialog::testFuncGetInt(QInputDialog *dialog)
{
testGetNumeric<QSpinBox, int>(dialog);
}
@@ -252,29 +252,29 @@ void tst_QInputDialog::timerEvent(QTimerEvent *event)
dialog->done(doneCode); // cause static function call to return
}
-void tst_QInputDialog::getInteger_data()
+void tst_QInputDialog::getInt_data()
{
QTest::addColumn<int>("min");
QTest::addColumn<int>("max");
- QTest::newRow("getInteger() - -") << -20 << -10;
- QTest::newRow("getInteger() - 0") << -20 << 0;
- QTest::newRow("getInteger() - +") << -20 << 20;
- QTest::newRow("getInteger() 0 +") << 0 << 20;
- QTest::newRow("getInteger() + +") << 10 << 20;
+ QTest::newRow("getInt() - -") << -20 << -10;
+ QTest::newRow("getInt() - 0") << -20 << 0;
+ QTest::newRow("getInt() - +") << -20 << 20;
+ QTest::newRow("getInt() 0 +") << 0 << 20;
+ QTest::newRow("getInt() + +") << 10 << 20;
}
-void tst_QInputDialog::getInteger()
+void tst_QInputDialog::getInt()
{
QFETCH(int, min);
QFETCH(int, max);
QVERIFY(min < max);
parent = new QWidget;
doneCode = QDialog::Accepted;
- testFunc = &tst_QInputDialog::testFuncGetInteger;
+ testFunc = &tst_QInputDialog::testFuncGetInt;
startTimer(0);
bool ok = false;
const int value = min + (max - min) / 2;
- const int result = QInputDialog::getInteger(parent, "", "", value, min, max, 1, &ok);
+ const int result = QInputDialog::getInt(parent, "", "", value, min, max, 1, &ok);
QVERIFY(ok);
QCOMPARE(result, value);
delete parent;
diff --git a/tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp b/tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp
index b41a41124b..9e965ff235 100644
--- a/tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp
+++ b/tests/auto/widgets/dialogs/qmessagebox/tst_qmessagebox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,7 @@
#include <QApplication>
#include <QPushButton>
#include <QDialogButtonBox>
-#if defined(Q_WS_MAC) && !defined(QT_NO_STYLE_MAC)
+#if defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC)
#include <QMacStyle>
#endif
#if !defined(QT_NO_STYLE_CLEANLOOKS)
@@ -141,8 +141,6 @@ private:
tst_QMessageBox::tst_QMessageBox() : keyToSend(-1)
{
- int argc = qApp->argc();
- QT_REQUIRE_VERSION(argc, qApp->argv(), "4.6.2")
}
int tst_QMessageBox::exec(QMessageBox *msgBox, int key)
@@ -363,7 +361,7 @@ void tst_QMessageBox::statics()
void tst_QMessageBox::shortcut()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QSKIP("shortcuts are not used on MAC OS X");
#endif
QMessageBox msgBox;
@@ -380,7 +378,7 @@ void tst_QMessageBox::about()
QMessageBox::about(0, "Caption", "This is an auto test");
// On Mac, about and aboutQt are not modal, so we need to
// explicitly run the event loop
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTRY_COMPARE(keyToSend, -1);
#else
QCOMPARE(keyToSend, -1);
@@ -393,7 +391,7 @@ void tst_QMessageBox::about()
#endif
sendKeySoon();
QMessageBox::aboutQt(0, "Caption");
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTRY_COMPARE(keyToSend, -1);
#else
QCOMPARE(keyToSend, -1);
@@ -409,7 +407,7 @@ void tst_QMessageBox::staticSourceCompat()
sendKeySoon();
ret = QMessageBox::information(0, "title", "text", QMessageBox::Yes, QMessageBox::No);
int expectedButton = int(QMessageBox::Yes);
-#if defined(Q_WS_MAC) && !defined(QT_NO_STYLE_MAC)
+#if defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC)
if (qobject_cast<QMacStyle *>(qApp->style()))
expectedButton = int(QMessageBox::No);
#elif !defined(QT_NO_STYLE_CLEANLOOKS)
@@ -481,7 +479,7 @@ void tst_QMessageBox::instanceSourceCompat()
QCOMPARE(exec(&mb, Qt::Key_Enter), int(QMessageBox::Yes));
QCOMPARE(exec(&mb, Qt::Key_Escape), int(QMessageBox::Cancel));
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
// mnemonics are not used on Mac OS X
QCOMPARE(exec(&mb, Qt::ALT + Qt::Key_R), 0);
QCOMPARE(exec(&mb, Qt::ALT + Qt::Key_Z), 1);
diff --git a/tests/auto/widgets/dialogs/qprogressdialog/tst_qprogressdialog.cpp b/tests/auto/widgets/dialogs/qprogressdialog/tst_qprogressdialog.cpp
index 281a028835..8da5973d91 100644
--- a/tests/auto/widgets/dialogs/qprogressdialog/tst_qprogressdialog.cpp
+++ b/tests/auto/widgets/dialogs/qprogressdialog/tst_qprogressdialog.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/dialogs/qsidebar/tst_qsidebar.cpp b/tests/auto/widgets/dialogs/qsidebar/tst_qsidebar.cpp
index 77a7baaf94..05cf571973 100644
--- a/tests/auto/widgets/dialogs/qsidebar/tst_qsidebar.cpp
+++ b/tests/auto/widgets/dialogs/qsidebar/tst_qsidebar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
index c00d42bacd..872c13216f 100644
--- a/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
+++ b/tests/auto/widgets/dialogs/qwizard/tst_qwizard.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -441,11 +441,14 @@ void tst_QWizard::setPixmap()
QVERIFY(wizard.pixmap(QWizard::BannerPixmap).isNull());
QVERIFY(wizard.pixmap(QWizard::LogoPixmap).isNull());
QVERIFY(wizard.pixmap(QWizard::WatermarkPixmap).isNull());
-#ifdef Q_WS_MAC
- if (QSysInfo::MacintoshVersion > QSysInfo::MV_10_3)
+#ifdef Q_OS_MAC
+ if (QSysInfo::MacintoshVersion > QSysInfo::MV_10_3) {
+ QEXPECT_FAIL("", "QTBUG-23701", Continue);
QVERIFY(wizard.pixmap(QWizard::BackgroundPixmap).isNull() == false);
- else // fall through since the image doesn't exist on a 10.3 system.
+ } else {
+ // fall through since the image doesn't exist on a 10.3 system.
QVERIFY(page->pixmap(QWizard::BackgroundPixmap).isNull());
+ }
#else
QVERIFY(wizard.pixmap(QWizard::BackgroundPixmap).isNull());
#endif
@@ -453,11 +456,14 @@ void tst_QWizard::setPixmap()
QVERIFY(page->pixmap(QWizard::BannerPixmap).isNull());
QVERIFY(page->pixmap(QWizard::LogoPixmap).isNull());
QVERIFY(page->pixmap(QWizard::WatermarkPixmap).isNull());
-#ifdef Q_WS_MAC
- if (QSysInfo::MacintoshVersion > QSysInfo::MV_10_3)
+#ifdef Q_OS_MAC
+ if (QSysInfo::MacintoshVersion > QSysInfo::MV_10_3) {
+ QEXPECT_FAIL("", "QTBUG-23701", Continue);
QVERIFY(wizard.pixmap(QWizard::BackgroundPixmap).isNull() == false);
- else // fall through since the image doesn't exist on a 10.3 system.
+ } else {
+ // fall through since the image doesn't exist on a 10.3 system.
QVERIFY(page->pixmap(QWizard::BackgroundPixmap).isNull());
+ }
#else
QVERIFY(page->pixmap(QWizard::BackgroundPixmap).isNull());
#endif
diff --git a/tests/auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp b/tests/auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp
index 3ebc4dc5cb..a888a9f984 100644
--- a/tests/auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp
+++ b/tests/auto/widgets/effects/qgraphicseffect/tst_qgraphicseffect.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp b/tests/auto/widgets/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
index 54b9355777..555908c68c 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1091,7 +1091,7 @@ void tst_QGraphicsAnchorLayout::setSpacing()
p->show();
QApplication::processEvents();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::qWait(200);
#endif
diff --git a/tests/auto/widgets/graphicsview/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp b/tests/auto/widgets/graphicsview/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp
index 0fd19c417f..3a8e109d80 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsanchorlayout1/tst_qgraphicsanchorlayout1.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -559,10 +559,9 @@ void tst_QGraphicsAnchorLayout1::testSpecialCases()
{
// One widget, setLayout before defining layouts
{
-#ifdef QT_DEBUG
- QTest::ignoreMessage(QtWarningMsg, "QGraphicsLayout::addChildLayoutItem: QGraphicsWidget \"\""
- " in wrong parent; moved to correct parent");
-#endif
+ if (QLibraryInfo::isDebugBuild())
+ QTest::ignoreMessage(QtWarningMsg, "QGraphicsLayout::addChildLayoutItem: QGraphicsWidget \"\""
+ " in wrong parent; moved to correct parent");
QGraphicsWidget *widget = new QGraphicsWidget;
TheAnchorLayout *layout = new TheAnchorLayout();
widget->setLayout(layout);
@@ -581,10 +580,9 @@ void tst_QGraphicsAnchorLayout1::testSpecialCases()
// One widget, layout inside layout, layout inside layout inside layout
{
-#ifdef QT_DEBUG
- QTest::ignoreMessage(QtWarningMsg, "QGraphicsLayout::addChildLayoutItem: QGraphicsWidget \"\""
- " in wrong parent; moved to correct parent");
-#endif
+ if (QLibraryInfo::isDebugBuild())
+ QTest::ignoreMessage(QtWarningMsg, "QGraphicsLayout::addChildLayoutItem: QGraphicsWidget \"\""
+ " in wrong parent; moved to correct parent");
QGraphicsWidget *widget = new QGraphicsWidget;
TheAnchorLayout *layout = new TheAnchorLayout();
widget->setLayout(layout);
diff --git a/tests/auto/widgets/graphicsview/qgraphicseffectsource/tst_qgraphicseffectsource.cpp b/tests/auto/widgets/graphicsview/qgraphicseffectsource/tst_qgraphicseffectsource.cpp
index 6b90404255..18bec1da89 100644
--- a/tests/auto/widgets/graphicsview/qgraphicseffectsource/tst_qgraphicseffectsource.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicseffectsource/tst_qgraphicseffectsource.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp b/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
index 42e0caa6a6..bbe7062507 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsgridlayout/tst_qgraphicsgridlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -501,7 +501,7 @@ void tst_QGraphicsGridLayout::alignment_data()
// public Qt::Alignment alignment(QGraphicsLayoutItem* item) const
void tst_QGraphicsGridLayout::alignment()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QSKIP("Resizing a QGraphicsWidget to effectiveSizeHint(Qt::MaximumSize) is currently not supported on mac");
#endif
QFETCH(bool, hasHeightForWidth);
@@ -575,7 +575,7 @@ void tst_QGraphicsGridLayout::columnAlignment_data()
// public Qt::Alignment columnAlignment(int column) const
void tst_QGraphicsGridLayout::columnAlignment()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QSKIP("Resizing a QGraphicsWidget to effectiveSizeHint(Qt::MaximumSize) is currently not supported on mac");
#endif
QFETCH(bool, hasHeightForWidth);
diff --git a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
index 28ee69a36c..5c99e48388 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -81,7 +81,7 @@ Q_DECLARE_METATYPE(QRectF)
#define Q_CHECK_PAINTEVENTS
#endif
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_MAC)
// On mac (cocoa) we always get full update.
// So check that the expected region is contained inside the actual
#define COMPARE_REGIONS(ACTUAL, EXPECTED) QVERIFY((EXPECTED).subtracted(ACTUAL).isEmpty())
@@ -1069,6 +1069,9 @@ void tst_QGraphicsItem::toolTip()
foundTipLabel = true;
}
QVERIFY(foundView);
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("", "QTBUG-23707", Continue);
+#endif
QVERIFY(foundTipLabel);
}
@@ -4240,14 +4243,14 @@ void tst_QGraphicsItem::textControlGetterSetter()
{
QGraphicsTextItem *item = new QGraphicsTextItem;
QVERIFY(item->textControl()->parent() == item);
- QPointer<QTextControl> control = item->textControl();
+ QPointer<QWidgetTextControl> control = item->textControl();
delete item;
QVERIFY(!control);
item = new QGraphicsTextItem;
- QPointer<QTextControl> oldControl = control;
- control = new QTextControl;
+ QPointer<QWidgetTextControl> oldControl = control;
+ control = new QWidgetTextControl;
item->setTextControl(control);
QVERIFY(item->textControl() == control);
@@ -4266,7 +4269,7 @@ void tst_QGraphicsItem::textControlGetterSetter()
// test that on setting a control the item size
// is adjusted
oldControl = control;
- control = new QTextControl;
+ control = new QWidgetTextControl;
control->setPlainText("foo!");
item->setTextControl(control);
QCOMPARE(item->boundingRect().size(), control->document()->documentLayout()->documentSize());
@@ -6092,7 +6095,7 @@ void tst_QGraphicsItem::untransformable()
// Painting with the DiagCrossPattern is really slow on Mac
// when zoomed out. (The test times out). Task to fix is 155567.
-#if !defined(Q_WS_MAC) || 1
+#if !defined(Q_OS_MAC) || 1
view.setBackgroundBrush(QBrush(Qt::black, Qt::DiagCrossPattern));
#endif
@@ -8117,7 +8120,7 @@ void tst_QGraphicsItem::sorting()
_paintedItems.clear();
view.viewport()->repaint();
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_MAC)
// There's no difference between repaint and update on the Mac,
// so we have to process events here to make sure we get the event.
QTest::qWait(100);
@@ -8152,7 +8155,7 @@ void tst_QGraphicsItem::itemHasNoContents()
_paintedItems.clear();
view.viewport()->repaint();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
// There's no difference between update() and repaint() on the Mac,
// so we have to process events here to make sure we get the event.
QTest::qWait(10);
diff --git a/tests/auto/widgets/graphicsview/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp b/tests/auto/widgets/graphicsview/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp
index 0344755480..ff0db3c9dc 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsitemanimation/tst_qgraphicsitemanimation.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/graphicsview/qgraphicslayout/tst_qgraphicslayout.cpp b/tests/auto/widgets/graphicsview/qgraphicslayout/tst_qgraphicslayout.cpp
index d640ce7bea..fdf4eada4d 100644
--- a/tests/auto/widgets/graphicsview/qgraphicslayout/tst_qgraphicslayout.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicslayout/tst_qgraphicslayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/graphicsview/qgraphicslayoutitem/tst_qgraphicslayoutitem.cpp b/tests/auto/widgets/graphicsview/qgraphicslayoutitem/tst_qgraphicslayoutitem.cpp
index bdcb3c8ad9..acb9155ca8 100644
--- a/tests/auto/widgets/graphicsview/qgraphicslayoutitem/tst_qgraphicslayoutitem.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicslayoutitem/tst_qgraphicslayoutitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp b/tests/auto/widgets/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp
index c708ae7e27..c30701e0f9 100644
--- a/tests/auto/widgets/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/graphicsview/qgraphicsobject/tst_qgraphicsobject.cpp b/tests/auto/widgets/graphicsview/qgraphicsobject/tst_qgraphicsobject.cpp
index 40581f28e9..2fb499f799 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsobject/tst_qgraphicsobject.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsobject/tst_qgraphicsobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/graphicsview/qgraphicspixmapitem/tst_qgraphicspixmapitem.cpp b/tests/auto/widgets/graphicsview/qgraphicspixmapitem/tst_qgraphicspixmapitem.cpp
index a76b5dfd56..691b46f3cb 100644
--- a/tests/auto/widgets/graphicsview/qgraphicspixmapitem/tst_qgraphicspixmapitem.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicspixmapitem/tst_qgraphicspixmapitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/graphicsview/qgraphicspolygonitem/tst_qgraphicspolygonitem.cpp b/tests/auto/widgets/graphicsview/qgraphicspolygonitem/tst_qgraphicspolygonitem.cpp
index 36e45fcddd..f1f5b6328a 100644
--- a/tests/auto/widgets/graphicsview/qgraphicspolygonitem/tst_qgraphicspolygonitem.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicspolygonitem/tst_qgraphicspolygonitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp b/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
index 4cd32a9186..3ccc533086 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsproxywidget/tst_qgraphicsproxywidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -45,7 +45,7 @@
#include <QtWidgets>
#include <private/qgraphicsproxywidget_p.h>
#include <private/qlayoutengine_p.h> // qSmartMin functions...
-#if defined(Q_WS_MAC) && !defined(QT_NO_STYLE_MAC)
+#if defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC)
#include <QMacStyle>
#endif
#ifdef Q_WS_X11
@@ -2640,6 +2640,9 @@ void tst_QGraphicsProxyWidget::tooltip_basic()
foundTipLabel = true;
}
QVERIFY(foundView);
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("", "QTBUG-23707", Continue);
+#endif
QVERIFY(foundTipLabel);
}
}
@@ -2724,7 +2727,7 @@ void tst_QGraphicsProxyWidget::childPos()
QVERIFY(proxyChild);
QVERIFY(proxyChild->isVisible());
qreal expectedXPosition = 0.0;
-#if defined(Q_WS_MAC) && !defined(QT_NO_STYLE_MAC)
+#if defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC)
// The Mac style wants the popup to show up at QPoint(4 - 11, 1).
// See QMacStyle::subControlRect SC_ComboBoxListBoxPopup.
if (qobject_cast<QMacStyle *>(QApplication::style()))
@@ -3377,6 +3380,9 @@ void tst_QGraphicsProxyWidget::updateAndDelete()
proxy->update();
proxy->hide();
QTRY_COMPARE(view.npaints, 1);
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("", "QTBUG-23700", Continue);
+#endif
QCOMPARE(view.paintEventRegion, expectedRegion);
proxy->show();
diff --git a/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
index f1afb9ff69..f103d3d529 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -52,7 +52,7 @@
#include <math.h>
#include "../../../gui/painting/qpathclipper/pathcompare.h"
#include "../../shared/platforminputcontext.h"
-#include <private/qinputpanel_p.h>
+#include <private/qinputmethod_p.h>
#if defined(Q_OS_WIN) && !defined(Q_OS_WINCE)
#include <windows.h>
@@ -295,8 +295,8 @@ void tst_QGraphicsScene::initTestCase()
void tst_QGraphicsScene::cleanup()
{
// ensure not even skipped tests with custom input context leave it dangling
- QInputPanelPrivate *inputPanelPrivate = QInputPanelPrivate::get(qApp->inputPanel());
- inputPanelPrivate->testContext = 0;
+ QInputMethodPrivate *inputMethodPrivate = QInputMethodPrivate::get(qApp->inputMethod());
+ inputMethodPrivate->testContext = 0;
}
void tst_QGraphicsScene::construction()
@@ -3766,8 +3766,8 @@ public:
void tst_QGraphicsScene::inputMethod()
{
PlatformInputContext inputContext;
- QInputPanelPrivate *inputPanelPrivate = QInputPanelPrivate::get(qApp->inputPanel());
- inputPanelPrivate->testContext = &inputContext;
+ QInputMethodPrivate *inputMethodPrivate = QInputMethodPrivate::get(qApp->inputMethod());
+ inputMethodPrivate->testContext = &inputContext;
QFETCH(int, flags);
QFETCH(bool, callFocusItem);
diff --git a/tests/auto/widgets/graphicsview/qgraphicssceneindex/tst_qgraphicssceneindex.cpp b/tests/auto/widgets/graphicsview/qgraphicssceneindex/tst_qgraphicssceneindex.cpp
index a318141d07..dca93ae1a5 100644
--- a/tests/auto/widgets/graphicsview/qgraphicssceneindex/tst_qgraphicssceneindex.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicssceneindex/tst_qgraphicssceneindex.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/graphicsview/qgraphicstransform/tst_qgraphicstransform.cpp b/tests/auto/widgets/graphicsview/qgraphicstransform/tst_qgraphicstransform.cpp
index 156adec6a7..5820598034 100644
--- a/tests/auto/widgets/graphicsview/qgraphicstransform/tst_qgraphicstransform.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicstransform/tst_qgraphicstransform.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
index 9066ded329..7681b3c787 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -72,7 +72,7 @@
#include <private/qgraphicsview_p.h>
#include "../../../platformquirks.h"
#include "../../shared/platforminputcontext.h"
-#include <private/qinputpanel_p.h>
+#include <private/qinputmethod_p.h>
Q_DECLARE_METATYPE(QList<int>)
Q_DECLARE_METATYPE(QList<QRectF>)
@@ -83,7 +83,7 @@ Q_DECLARE_METATYPE(QPolygonF)
Q_DECLARE_METATYPE(QRectF)
Q_DECLARE_METATYPE(Qt::ScrollBarPolicy)
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
//On mac we get full update. So check that the expected region is contained inside the actual
#define COMPARE_REGIONS(ACTUAL, EXPECTED) QVERIFY((EXPECTED).subtracted(ACTUAL).isEmpty())
#else
@@ -264,8 +264,8 @@ void tst_QGraphicsView::initTestCase()
void tst_QGraphicsView::cleanup()
{
// ensure not even skipped tests with custom input context leave it dangling
- QInputPanelPrivate *inputPanelPrivate = QInputPanelPrivate::get(qApp->inputPanel());
- inputPanelPrivate->testContext = 0;
+ QInputMethodPrivate *inputMethodPrivate = QInputMethodPrivate::get(qApp->inputMethod());
+ inputMethodPrivate->testContext = 0;
}
void tst_QGraphicsView::construction()
@@ -2515,7 +2515,7 @@ void tst_QGraphicsView::optimizationFlags_dontSavePainterState()
view.setOptimizationFlags(QGraphicsView::DontSavePainterState);
view.viewport()->repaint();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
// Repaint on Mac OS X actually does require spinning the event loop.
QTest::qWait(100);
#endif
@@ -3361,9 +3361,6 @@ void tst_QGraphicsView::moveItemWhileScrolling()
int a = adjustForAntialiasing ? 2 : 1;
expectedRegion += QRect(40, 50, 10, 10).adjusted(-a, -a, a, a);
expectedRegion += QRect(40, 60, 10, 10).adjusted(-a, -a, a, a);
-#ifdef Q_OS_MAC
- QEXPECT_FAIL("", "This will fail with Cocoa because paint events are not send in the order expected by graphicsview", Continue);
-#endif
COMPARE_REGIONS(view.lastPaintedRegion, expectedRegion);
}
@@ -4112,8 +4109,8 @@ void tst_QGraphicsView::inputMethodSensitivity()
void tst_QGraphicsView::inputContextReset()
{
PlatformInputContext inputContext;
- QInputPanelPrivate *inputPanelPrivate = QInputPanelPrivate::get(qApp->inputPanel());
- inputPanelPrivate->testContext = &inputContext;
+ QInputMethodPrivate *inputMethodPrivate = QInputMethodPrivate::get(qApp->inputMethod());
+ inputMethodPrivate->testContext = &inputContext;
QGraphicsScene scene;
QGraphicsView view(&scene);
@@ -4319,7 +4316,9 @@ void tst_QGraphicsView::task259503_scrollingArtifacts()
{
// qDebug() << event->region();
// qDebug() << updateRegion;
+#ifndef Q_OS_MAC
QEXPECT_FAIL("", "The event region doesn't include the original item position region. See QTBUG-4416", Continue);
+#endif
QCOMPARE(event->region(), updateRegion);
}
}
diff --git a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview_2.cpp b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview_2.cpp
index 7f056e6700..0218c6713f 100644
--- a/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview_2.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicsview/tst_qgraphicsview_2.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/graphicsview/qgraphicswidget/qgraphicswidget.pro b/tests/auto/widgets/graphicsview/qgraphicswidget/qgraphicswidget.pro
index af9ff4d42c..ca796647c1 100644
--- a/tests/auto/widgets/graphicsview/qgraphicswidget/qgraphicswidget.pro
+++ b/tests/auto/widgets/graphicsview/qgraphicswidget/qgraphicswidget.pro
@@ -8,4 +8,3 @@ SOURCES += tst_qgraphicswidget.cpp
# QTBUG-23616 - unstable test
linux-*:system(". /etc/lsb-release && [ $DISTRIB_CODENAME = oneiric ]"):CONFIG += insignificant_test
-mac*:CONFIG+=insignificant_test
diff --git a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
index 89cd63f482..0607d2ab30 100644
--- a/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/auto/widgets/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1157,7 +1157,7 @@ void tst_QGraphicsWidget::initStyleOption()
bool hasFocus = option.state & QStyle::State_HasFocus;
QCOMPARE(hasFocus, focus);
bool isUnderMouse = option.state & QStyle::State_MouseOver;
-#ifndef Q_OS_WINCE
+#if !defined(Q_OS_WINCE) && !defined(Q_OS_MAC)
QEXPECT_FAIL("all", "QTBUG-22457", Abort);
QCOMPARE(isUnderMouse, underMouse);
#endif
@@ -1806,6 +1806,9 @@ void tst_QGraphicsWidget::updateFocusChainWhenChildDie()
QVERIFY(w);
QTest::mouseMove(view.viewport());
QTest::mouseClick(view.viewport(), Qt::LeftButton, 0);
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("", "QTBUG-23699", Continue);
+#endif
QTRY_COMPARE(qApp->activeWindow(), static_cast<QWidget *>(&view));
QTRY_COMPARE(scene.focusItem(), static_cast<QGraphicsItem *>(w));
}
@@ -3192,7 +3195,9 @@ void tst_QGraphicsWidget::initialShow2()
view.show();
QTest::qWaitForWindowShown(&view);
+#ifndef Q_OS_MAC
QEXPECT_FAIL("", "QTBUG-20778", Abort);
+#endif
QTRY_COMPARE(widget->repaints, expectedRepaintCount);
}
diff --git a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
index 764838fc96..be7c58f20b 100644
--- a/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
+++ b/tests/auto/widgets/itemviews/qabstractitemview/tst_qabstractitemview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -224,16 +224,29 @@ private slots:
void ctrlRubberbandSelection();
void QTBUG6407_extendedSelection();
void QTBUG6753_selectOnSelection();
+ void testDelegateDestroyEditor();
};
class MyAbstractItemDelegate : public QAbstractItemDelegate
{
public:
- MyAbstractItemDelegate() : QAbstractItemDelegate() {};
+ MyAbstractItemDelegate() : QAbstractItemDelegate() { calledVirtualDtor = false; }
void paint(QPainter *, const QStyleOptionViewItem &, const QModelIndex &) const {}
QSize sizeHint(const QStyleOptionViewItem &, const QModelIndex &) const { return QSize(); }
- QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &,
- const QModelIndex &) const { return new QWidget(parent); }
+ QWidget *createEditor(QWidget *parent, const QStyleOptionViewItem &, const QModelIndex &) const
+ {
+ openedEditor = new QWidget(parent);
+ return openedEditor;
+ }
+ void destroyEditor(QWidget *editor, const QModelIndex &index) const
+ {
+ calledVirtualDtor = true;
+ // QAbstractItemDelegate::destroyEditor(editor,index);
+ editor->deleteLater();
+ }
+
+ mutable bool calledVirtualDtor;
+ mutable QWidget *openedEditor;
};
// Testing get/set functions
@@ -1497,5 +1510,18 @@ void tst_QAbstractItemView::QTBUG6753_selectOnSelection()
QCOMPARE(table.selectedItems().first(), table.item(item.row(), item.column()));
}
+void tst_QAbstractItemView::testDelegateDestroyEditor()
+{
+ QTableWidget table(5, 5);
+ MyAbstractItemDelegate delegate;
+ table.setItemDelegate(&delegate);
+ table.edit(table.model()->index(1, 1));
+ TestView *tv = reinterpret_cast<TestView*>(&table);
+ QVERIFY(!delegate.calledVirtualDtor);
+ tv->tst_closeEditor(delegate.openedEditor, QAbstractItemDelegate::NoHint);
+ QVERIFY(delegate.calledVirtualDtor);
+}
+
+
QTEST_MAIN(tst_QAbstractItemView)
#include "tst_qabstractitemview.moc"
diff --git a/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp b/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp
index abf7929a94..74e4ca627f 100644
--- a/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp
+++ b/tests/auto/widgets/itemviews/qcolumnview/tst_qcolumnview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -537,6 +537,9 @@ void tst_QColumnView::moveCursor()
idx = idx.sibling(idx.row() + 1, idx.column());
view.setCurrentIndex(idx);
mc = view.MoveCursor(action, Qt::NoModifier);
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("", "QTBUG-23697", Continue);
+#endif
QCOMPARE(mc, idx.sibling(idx.row() + 1, idx.column()));
}
diff --git a/tests/auto/widgets/itemviews/qdatawidgetmapper/tst_qdatawidgetmapper.cpp b/tests/auto/widgets/itemviews/qdatawidgetmapper/tst_qdatawidgetmapper.cpp
index 4ad8de1d3d..6d869cd3f0 100644
--- a/tests/auto/widgets/itemviews/qdatawidgetmapper/tst_qdatawidgetmapper.cpp
+++ b/tests/auto/widgets/itemviews/qdatawidgetmapper/tst_qdatawidgetmapper.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp b/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp
index ef183ed91c..04069a2011 100644
--- a/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp
+++ b/tests/auto/widgets/itemviews/qdirmodel/tst_qdirmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/itemviews/qfileiconprovider/tst_qfileiconprovider.cpp b/tests/auto/widgets/itemviews/qfileiconprovider/tst_qfileiconprovider.cpp
index 286a352304..f01b3679b4 100644
--- a/tests/auto/widgets/itemviews/qfileiconprovider/tst_qfileiconprovider.cpp
+++ b/tests/auto/widgets/itemviews/qfileiconprovider/tst_qfileiconprovider.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
index f1a7b4588e..75a72a754f 100644
--- a/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
+++ b/tests/auto/widgets/itemviews/qheaderview/tst_qheaderview.cpp
@@ -1,8 +1,8 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Copyright (C) 2012 Thorbjørn Lund Martsum - tmartsum[at]gmail.com
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +35,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -74,6 +75,26 @@ public:
friend class tst_QHeaderView;
};
+class XResetModel : public QStandardItemModel
+{
+ virtual bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex())
+ {
+ blockSignals(true);
+ bool r = QStandardItemModel::removeRows(row, count, parent);
+ blockSignals(false);
+ emit reset();
+ return r;
+ }
+ virtual bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex())
+ {
+ blockSignals(true);
+ bool r = QStandardItemModel::insertRows(row, count, parent);
+ blockSignals(false);
+ emit reset();
+ return r;
+ }
+};
+
class tst_QHeaderView : public QObject
{
Q_OBJECT
@@ -172,6 +193,7 @@ private slots:
void removeSection();
void preserveHiddenSectionWidth();
void invisibleStretchLastSection();
+ void noSectionsWithNegativeSize();
void emptySectionSpan();
void task236450_hidden_data();
@@ -181,13 +203,42 @@ private slots:
void QTBUG7833_sectionClicked();
void QTBUG8650_crashOnInsertSections();
void QTBUG12268_hiddenMovedSectionSorting();
+ void QTBUG14242_hideSectionAutoSize();
void initialSortOrderRole();
+ void logicalIndexAtTest_data() { setupTestData(); }
+ void visualIndexAtTest_data() { setupTestData(); }
+ void hideShowTest_data() { setupTestData(); }
+ void swapSectionsTest_data() { setupTestData(); }
+ void moveSectionTest_data() { setupTestData(); }
+ void defaultSizeTest_data() { setupTestData(); }
+ void removeTest_data() { setupTestData(true); }
+ void insertTest_data() { setupTestData(true); }
+ void mixedTests_data() { setupTestData(true); }
+ void resizeToContentTest_data() { setupTestData(); }
+ void logicalIndexAtTest();
+ void visualIndexAtTest();
+ void hideShowTest();
+ void swapSectionsTest();
+ void moveSectionTest();
+ void defaultSizeTest();
+ void removeTest();
+ void insertTest();
+ void mixedTests();
+ void resizeToContentTest();
+
protected:
+ void setupTestData(bool use_reset_model = false);
+ void additionalInit();
+ void calculateAndCheck(int cppline, const int precalced_comparedata[]);
+
QWidget *topLevel;
QHeaderView *view;
QStandardItemModel *model;
+ QTableView *m_tableview;
+ bool m_using_reset_model;
+ QElapsedTimer timer;
};
class QtTestModel: public QAbstractTableModel
@@ -327,10 +378,12 @@ void tst_QHeaderView::initTestCase()
#ifdef Q_OS_WINCE //disable magic for WindowsCE
qApp->setAutoMaximizeThreshold(-1);
#endif
+ m_tableview = new QTableView();
}
void tst_QHeaderView::cleanupTestCase()
{
+ delete m_tableview;
}
void tst_QHeaderView::init()
@@ -370,7 +423,9 @@ void tst_QHeaderView::init()
void tst_QHeaderView::cleanup()
{
- delete view;
+ m_tableview->setUpdatesEnabled(true);
+ if (view && view->parent() != m_tableview)
+ delete view;
view = 0;
delete model;
model = 0;
@@ -1852,6 +1907,15 @@ void tst_QHeaderView::invisibleStretchLastSection()
QCOMPARE(view.sectionSize(count - 1), view.defaultSectionSize() * 2);
}
+void tst_QHeaderView::noSectionsWithNegativeSize()
+{
+ QStandardItemModel m(4, 4);
+ QHeaderView h(Qt::Horizontal);
+ h.setModel(&m);
+ h.resizeSection(1, -5);
+ QVERIFY(h.sectionSize(1) >= 0); // Sections with negative sizes not well defined.
+}
+
void tst_QHeaderView::emptySectionSpan()
{
QHeaderViewPrivate::SectionSpan span;
@@ -2054,7 +2118,7 @@ void tst_QHeaderView::QTBUG8650_crashOnInsertSections()
void tst_QHeaderView::QTBUG12268_hiddenMovedSectionSorting()
{
- QTableView view;
+ QTableView view; // ### this test fails on QTableView &view = *m_tableview; !? + shadowing view member
QStandardItemModel *model = new QStandardItemModel(4,3, &view);
for (int i = 0; i< model->rowCount(); ++i)
for (int j = 0; j< model->columnCount(); ++j)
@@ -2072,9 +2136,29 @@ void tst_QHeaderView::QTBUG12268_hiddenMovedSectionSorting()
QCOMPARE(view.horizontalHeader()->hiddenSectionCount(), 1);
}
+void tst_QHeaderView::QTBUG14242_hideSectionAutoSize()
+{
+ QTableView qtv;
+ QStandardItemModel amodel(4, 4);
+ qtv.setModel(&amodel);
+ QHeaderView *hv = qtv.verticalHeader();
+ hv->setDefaultSectionSize(25);
+ hv->setResizeMode(QHeaderView::ResizeToContents);
+ qtv.show();
+
+ hv->hideSection(0);
+ int afterlength = hv->length();
+
+ int calced_length = 0;
+ for (int u = 0; u < hv->count(); ++u)
+ calced_length += hv->sectionSize(u);
+
+ QVERIFY(calced_length == afterlength);
+}
+
void tst_QHeaderView::initialSortOrderRole()
{
- QTableView view;
+ QTableView view; // ### Shadowing member view (of type QHeaderView)
QStandardItemModel *model = new QStandardItemModel(4, 3, &view);
for (int i = 0; i< model->rowCount(); ++i)
for (int j = 0; j< model->columnCount(); ++j)
@@ -2107,5 +2191,450 @@ void tst_QHeaderView::initialSortOrderRole()
QCOMPARE(view.horizontalHeader()->sortIndicatorOrder(), Qt::AscendingOrder);
}
+const bool block_some_signals = true; // The test should also work with this set to false
+const int rowcount = 500;
+const int colcount = 10;
+
+QString istr(int n, bool comma = true)
+{
+ QString s;
+ s.setNum(n);
+ if (comma)
+ s += ", ";
+ return s;
+}
+
+void tst_QHeaderView::calculateAndCheck(int cppline, const int precalced_comparedata[])
+{
+ qint64 endtimer = timer.elapsed();
+ const bool silentmode = true;
+ if (!silentmode)
+ qDebug().nospace() << "(Time:" << endtimer << ")";
+
+ QString sline;
+ sline.setNum(cppline - 1);
+
+ const int p1 = 3133777; // just a prime (maybe not that random ;) )
+ const int p2 = 135928393; // just a random large prime - a bit less than signed 32-bit
+
+ int sum_visual = 0;
+ int sum_logical = 0;
+ int sum_size = 0;
+ int sum_hidden_size = 0;
+ int sum_lookup_visual = 0;
+ int sum_lookup_logical = 0;
+
+ int chk_visual = 1;
+ int chk_logical = 1;
+ int chk_sizes = 1;
+ int chk_hidden_size = 1;
+ int chk_lookup_visual = 1;
+ int chk_lookup_logical = 1;
+
+ int header_lenght = 0;
+ int lastindex = view->count() - 1;
+
+ // calculate information based on index
+ for (int i = 0; i <= lastindex; ++i) {
+ int visual = view->visualIndex(i);
+ int logical = view->logicalIndex(i);
+ int ssize = view->sectionSize(i);
+
+ sum_visual += visual;
+ sum_logical += logical;
+ sum_size += ssize;
+
+ if (visual >= 0) {
+ chk_visual %= p2;
+ chk_visual *= (visual + 1) * (i + 1) * p1;
+ }
+
+ if (logical >= 0) {
+ chk_logical %= p2;
+ chk_logical *= (logical + 1) * (i + 1 + (logical != i) ) * p1;
+ }
+
+ if (ssize >= 0) {
+ chk_sizes %= p2;
+ chk_sizes *= ( (ssize + 2) * (i + 1) * p1);
+ }
+
+ if (view->isSectionHidden(i)) {
+ view->showSection(i);
+ int hiddensize = view->sectionSize(i);
+ sum_hidden_size += hiddensize;
+ chk_hidden_size %= p2;
+ chk_hidden_size += ( (hiddensize + 1) * (i + 1) * p1);
+ // (hiddensize + 1) in the above to differ between hidden and size 0
+ // Though it can be changed (why isn't sections with size 0 hidden?)
+
+ view->hideSection(i);
+ }
+ }
+
+ // lookup indexes by pixel position
+ const int max_lookup_count = 500;
+ int lookup_to = view->height() + 1;
+ if (lookup_to > max_lookup_count)
+ lookup_to = max_lookup_count; // We limit this lookup - not to spend years when testing.
+ // Notice that lookupTest also has its own extra test
+ for (int u = 0; u < max_lookup_count; ++u) {
+ int visu = view->visualIndexAt(u);
+ int logi = view->logicalIndexAt(u);
+ sum_lookup_visual += logi;
+ sum_lookup_logical += visu;
+ chk_lookup_visual %= p2;
+ chk_lookup_visual *= ( (u + 1) * p1 * (visu + 2));
+ chk_lookup_logical %= p2;
+ chk_lookup_logical *= ( (u + 1) * p1 * (logi + 2));
+ }
+ header_lenght = view->length();
+
+ // visual and logical indexes.
+ int sum_to_last_index = (lastindex * (lastindex + 1)) / 2; // == 0 + 1 + 2 + 3 + ... + lastindex
+
+ const bool write_calced_data = false; // Do not write calculated output (unless the test fails)
+ if (write_calced_data) {
+ qDebug().nospace() << "(" << cppline - 1 << ")" // << " const int precalced[] = "
+ << " {" << chk_visual << ", " << chk_logical << ", " << chk_sizes << ", " << chk_hidden_size
+ << ", " << chk_lookup_visual << ", " << chk_lookup_logical << ", " << header_lenght << "};";
+ }
+
+ const bool sanity_checks = true;
+ if (sanity_checks) {
+ QString msg = QString("sanity problem at ") + sline;
+ char *verifytext = QTest::toString(msg);
+
+ QVERIFY2(m_tableview->model()->rowCount() == view->count() , verifytext);
+ QVERIFY2(view->visualIndex(lastindex + 1) <= 0, verifytext); // there is no such index in model
+ QVERIFY2(view->logicalIndex(lastindex + 1) <= 0, verifytext); // there is no such index in model.
+ QVERIFY2(view->logicalIndex(lastindex + 1) <= 0, verifytext); // there is no such index in model.
+ QVERIFY2(lastindex < 0 || view->visualIndex(0) >= 0, verifytext); // no rows or legal index
+ QVERIFY2(lastindex < 0 || view->logicalIndex(0) >= 0, verifytext); // no rows or legal index
+ QVERIFY2(lastindex < 0 || view->visualIndex(lastindex) >= 0, verifytext); // no rows or legal index
+ QVERIFY2(lastindex < 0 || view->logicalIndex(lastindex) >= 0, verifytext); // no rows or legal index
+ QVERIFY2(view->visualIndexAt(-1) == -1, verifytext);
+ QVERIFY2(view->logicalIndexAt(-1) == -1, verifytext);
+ QVERIFY2(view->visualIndexAt(view->length()) == -1, verifytext);
+ QVERIFY2(view->logicalIndexAt(view->length()) == -1, verifytext);
+ QVERIFY2(sum_visual == sum_logical, verifytext);
+ QVERIFY2(sum_to_last_index == sum_logical, verifytext);
+ }
+
+ // Semantic test
+ const bool check_semantics = true; // Otherwise there is no 'real' test
+ if (!check_semantics)
+ return;
+
+ const int *x = precalced_comparedata;
+
+ QString msg = "semantic problem at " + QString(__FILE__) + " (" + sline + ")";
+ msg += "\nThe *expected* result was : {" + istr(x[0]) + istr(x[1]) + istr(x[2]) + istr(x[3])
+ + istr(x[4]) + istr(x[5]) + istr(x[6], false) + "}";
+ msg += "\nThe calculated result was : {";
+ msg += istr(chk_visual) + istr(chk_logical) + istr(chk_sizes) + istr(chk_hidden_size)
+ + istr(chk_lookup_visual) + istr(chk_lookup_logical) + istr(header_lenght, false) + "};";
+
+ char *verifytext = QTest::toString(msg);
+
+ QVERIFY2(chk_visual == x[0], verifytext);
+ QVERIFY2(chk_logical == x[1], verifytext);
+ QVERIFY2(chk_sizes == x[2], verifytext);
+ QVERIFY2(chk_hidden_size == x[3], verifytext);
+ QVERIFY2(chk_lookup_visual == x[4], verifytext); // Here the semantic can change. See final note (*).
+ QVERIFY2(chk_lookup_logical == x[5], verifytext); // Here the semantic can change. See final note (*).
+ QVERIFY2(header_lenght == x[6], verifytext);
+}
+
+void tst_QHeaderView::setupTestData(bool also_use_reset_model)
+{
+ QTest::addColumn<bool>("updates_enabled");
+ QTest::addColumn<bool>("special_prepare");
+ QTest::addColumn<bool>("reset_model");
+
+ if (also_use_reset_model) {
+ QTest::newRow("no_updates+normal") << false << false << true;
+ QTest::newRow("hasupdates+normal") << true << false << true;
+ QTest::newRow("no_updates+special") << false << true << true;
+ QTest::newRow("no_updates+special") << true << true << true;
+ }
+
+ QTest::newRow("no_updates+normal") << false << false << false;
+ QTest::newRow("hasupdates+normal") << true << false << false;
+ QTest::newRow("no_updates+special") << false << true << false;
+ QTest::newRow("no_updates+special") << true << true << false;
+}
+
+void tst_QHeaderView::additionalInit()
+{
+ m_tableview->setVerticalHeader(view);
+
+ QFETCH(bool, updates_enabled);
+ QFETCH(bool, special_prepare);
+ QFETCH(bool, reset_model);
+
+ m_using_reset_model = reset_model;
+
+ if (m_using_reset_model) {
+ XResetModel *m = new XResetModel();
+ m_tableview->setModel(m);
+ delete model;
+ model = m;
+ } else {
+ m_tableview->setModel(model);
+ }
+
+ const int default_section_size = 25;
+ view->setDefaultSectionSize(default_section_size); // Important - otherwise there will be semantic changes
+
+ model->clear();
+
+ if (special_prepare) {
+
+ for (int u = 0; u <= rowcount; ++u) // ensures fragmented spans in e.g Qt 4.7
+ model->setRowCount(u);
+
+ model->setColumnCount(colcount);
+ view->swapSections(0, rowcount - 1);
+ view->swapSections(0, rowcount - 1); // No real change - setup visual and log-indexes
+ view->hideSection(rowcount - 1);
+ view->showSection(rowcount - 1); // No real change - (maybe init hidden vector)
+ } else {
+ model->setColumnCount(colcount);
+ model->setRowCount(rowcount);
+ }
+
+ QString s;
+ for (int i = 0; i < model->rowCount(); ++i) {
+ model->setData(model->index(i, 0), QVariant(i));
+ s.setNum(i);
+ s += ".";
+ s += 'a' + (i % 25);
+ model->setData(model->index(i, 1), QVariant(s));
+ }
+ m_tableview->setUpdatesEnabled(updates_enabled);
+ view->blockSignals(block_some_signals);
+ timer.start();
+}
+
+void tst_QHeaderView::logicalIndexAtTest()
+{
+ additionalInit();
+
+ view->swapSections(4, 9); // Make sure that visual and logical Indexes are not just the same.
+
+ int check1 = 0;
+ int check2 = 0;
+ for (int u = 0; u < model->rowCount(); ++u) {
+ view->resizeSection(u, 10 + u % 30);
+ int v = view->visualIndexAt(u * 29);
+ view->visualIndexAt(u * 29);
+ check1 += v;
+ check2 += u * v;
+ }
+ view->resizeSection(0, 0); // Make sure that we have a 0 size section - before the result set
+ view->setSectionHidden(6, true); // Make sure we have a real hidden section before result set
+
+ //qDebug() << "logicalIndexAtTest" << check1 << check2;
+ const int precalced_check1 = 106327;
+ const int precalced_check2 = 29856418;
+ QVERIFY(precalced_check1 == check1); // Here the semantic can change. See final note (*)
+ QVERIFY(precalced_check2 == check2); // Here the semantic can change. See final note (*)
+
+ const int precalced_results[] = { 1145298384, -1710423344, -650981936, 372919464, 2139446944, 854793816, 12124 };
+ calculateAndCheck(__LINE__, precalced_results);
+}
+
+void tst_QHeaderView::visualIndexAtTest()
+{
+ additionalInit();
+
+ view->swapSections(4, 9); // Make sure that visual and logical Indexes are not just the same.
+ int check1 = 0;
+ int check2 = 0;
+
+ for (int u = 0; u < model->rowCount(); ++u) {
+ view->resizeSection(u, 3 + u % 17);
+ int v = view->visualIndexAt(u * 29);
+ check1 += v;
+ check2 += u * v;
+ }
+
+ view->resizeSection(1, 0); // Make sure that we have a 0 size section - before the result set
+ view->setSectionHidden(5, true); // Make sure we have a real hidden section before result set
+
+ //qDebug() << "visualIndexAtTest" << check1 << check2;
+ const int precalced_check1 = 72665;
+ const int precalced_check2 = 14015890;
+ QVERIFY(precalced_check1 == check1); // Here the semantic can change. See final note (*)
+ QVERIFY(precalced_check2 == check2); // Here the semantic can change. See final note (*)
+
+ const int precalced_results[] = { 1145298384, -1710423344, -1457520212, 169223959, 726651072, -2105938696, 5453 };
+ calculateAndCheck(__LINE__, precalced_results);
+}
+
+void tst_QHeaderView::hideShowTest()
+{
+ additionalInit();
+
+ for (int u = model->rowCount(); u >= 0; --u)
+ if (u % 8 != 0)
+ view->hideSection(u);
+
+ for (int u = model->rowCount(); u >= 0; --u)
+ if (u % 3 == 0)
+ view->showSection(u);
+
+ view->setSectionHidden(model->rowCount(), true); // invalid hide (should be ignored)
+ view->setSectionHidden(-1, true); // invalid hide (should be ignored)
+
+ const int precalced_results[] = { -1523279360, -1523279360, -1321506816, 2105322423, 1879611280, 1879611280, 5225 };
+ calculateAndCheck(__LINE__, precalced_results);
+}
+
+void tst_QHeaderView::swapSectionsTest()
+{
+ additionalInit();
+
+ for (int u = 0; u < rowcount / 2; ++u)
+ view->swapSections(u, rowcount - u - 1);
+
+ for (int u = 0; u < rowcount; u += 2)
+ view->swapSections(u, u + 1);
+
+ view->swapSections(0, model->rowCount()); // invalid swapsection (should be ignored)
+
+ const int precalced_results[] = { -1536450048, -1774641430, -1347156568, 1, 1719705216, -240077576, 12500 };
+ calculateAndCheck(__LINE__, precalced_results);
+}
+
+void tst_QHeaderView::moveSectionTest()
+{
+ additionalInit();
+
+ for (int u = 1; u < 5; ++u)
+ view->moveSection(u, model->rowCount() - u);
+
+ view->moveSection(2, model->rowCount() / 2);
+ view->moveSection(0, 10);
+ view->moveSection(0, model->rowCount() - 10);
+
+ view->moveSection(0, model->rowCount()); // invalid move (should be ignored)
+
+ const int precalced_results[] = { 645125952, 577086896, -1347156568, 1, 1719705216, 709383416, 12500 };
+ calculateAndCheck(__LINE__, precalced_results);
+}
+
+void tst_QHeaderView::defaultSizeTest()
+{
+ additionalInit();
+
+ view->hideSection(rowcount / 2);
+ int restore_to = view->defaultSectionSize();
+ view->setDefaultSectionSize(restore_to + 5);
+
+ const int precalced_results[] = { -1523279360, -1523279360, -1739688320, -1023807777, 997629696, 997629696, 14970 };
+ calculateAndCheck(__LINE__, precalced_results);
+
+ view->setDefaultSectionSize(restore_to);
+}
+
+void tst_QHeaderView::removeTest()
+{
+ additionalInit();
+
+ view->swapSections(0, 5);
+ model->removeRows(0, 1); // remove one row
+ model->removeRows(4, 10);
+ model->setRowCount(model->rowCount() / 2 - 1);
+
+ if (m_using_reset_model) {
+ const int precalced_results[] = { 1741224292, -135269187, -569519837, 1, 1719705216, -1184395000, 6075 };
+ calculateAndCheck(__LINE__, precalced_results);
+ } else {
+ const int precalced_results[] = { 289162397, 289162397, -569519837, 1, 1719705216, 1719705216, 6075 };
+ calculateAndCheck(__LINE__, precalced_results);
+ }
+}
+
+void tst_QHeaderView::insertTest()
+{
+ additionalInit();
+
+ view->swapSections(0, model->rowCount() - 1);
+ model->insertRows(0, 1); // insert one row
+ model->insertRows(4, 10);
+ model->setRowCount(model->rowCount() * 2 - 1);
+
+ if (m_using_reset_model) {
+ const int precalced_results[] = { 2040508069, -1280266538, -150350734, 1, 1719705216, 1331312784, 25525 };
+ calculateAndCheck(__LINE__, precalced_results);
+ } else {
+ const int precalced_results[] = { -1909447021, 339092083, -150350734, 1, 1719705216, -969712728, 25525 };
+ calculateAndCheck(__LINE__, precalced_results);
+ }
+}
+
+void tst_QHeaderView::mixedTests()
+{
+ additionalInit();
+
+ model->setRowCount(model->rowCount() + 10);
+
+ for (int u = 0; u < model->rowCount(); u += 2)
+ view->swapSections(u, u + 1);
+
+ view->moveSection(0, 5);
+
+ for (int u = model->rowCount(); u >= 0; --u) {
+ if (u % 5 != 0)
+ view->hideSection(u);
+ if (u % 3 != 0)
+ view->showSection(u);
+ }
+
+ model->insertRows(3, 7);
+ model->removeRows(8, 3);
+ model->setRowCount(model->rowCount() - 10);
+
+ if (m_using_reset_model) {
+ const int precalced_results[] = { 898296472, 337096378, -543340640, 1, 703951756, 250831536, 9250 };
+ calculateAndCheck(__LINE__, precalced_results);
+ } else {
+ const int precalced_results[] = { 1911338224, 1693514365, -613398968, -1912534953, 1582159424, -1851079000, 9300 };
+ calculateAndCheck(__LINE__, precalced_results);
+ }
+}
+
+void tst_QHeaderView::resizeToContentTest()
+{
+ additionalInit();
+
+ QModelIndex idx = model->index(2, 2);
+ model->setData(idx, QVariant("A normal string"));
+
+ idx = model->index(1, 3);
+ model->setData(idx, QVariant("A normal longer string to test resize"));
+
+ QHeaderView *hh = m_tableview->horizontalHeader();
+ hh->resizeSections(QHeaderView::ResizeToContents);
+ QVERIFY(hh->sectionSize(3) > hh->sectionSize(2));
+
+ for (int u = 0; u < 10; ++u)
+ view->resizeSection(u, 1);
+
+ view->resizeSections(QHeaderView::ResizeToContents);
+ QVERIFY(view->sectionSize(1) > 1);
+ QVERIFY(view->sectionSize(2) > 1);
+
+ view->setDefaultSectionSize(25); // To make sure our precalced data are correct. We do not know font height etc.
+
+ const int precalced_results[] = { -1523279360, -1523279360, -1347156568, 1, 1719705216, 1719705216, 12500 };
+ calculateAndCheck(__LINE__, precalced_results);
+}
+
+// (*) Currently qheaderview position lookup acts a bit strange. It can return sections with size 0.
+// This could be changed in the future.
+
QTEST_MAIN(tst_QHeaderView)
#include "tst_qheaderview.moc"
diff --git a/tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp b/tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp
index 30bf867249..2b52f5f234 100644
--- a/tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp
+++ b/tests/auto/widgets/itemviews/qitemdelegate/tst_qitemdelegate.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1033,6 +1033,9 @@ void tst_QItemDelegate::editorEvent()
QStyleOptionViewItem option;
option.rect = rect;
option.state |= QStyle::State_Enabled;
+ // mimic QStyledItemDelegate::initStyleOption logic
+ option.features |= QStyleOptionViewItem::HasCheckIndicator | QStyleOptionViewItem::HasDisplay;
+ option.checkState = Qt::CheckState(checkState);
const int checkMargin = qApp->style()->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, 0) + 1;
QPoint pos = inCheck ? qApp->style()->subElementRect(QStyle::SE_ViewItemCheckIndicator, &option, 0).center() + QPoint(checkMargin, 0) : QPoint(200,200);
@@ -1181,6 +1184,9 @@ void tst_QItemDelegate::QTBUG4435_keepSelectionOnCheck()
QTest::qWaitForWindowShown(&view);
QStyleOptionViewItem option;
option.rect = view.visualRect(model.index(0, 0));
+ // mimic QStyledItemDelegate::initStyleOption logic
+ option.features = QStyleOptionViewItem::HasDisplay | QStyleOptionViewItem::HasCheckIndicator;
+ option.checkState = Qt::CheckState(model.index(0, 0).data(Qt::CheckStateRole).toInt());
const int checkMargin = qApp->style()->pixelMetric(QStyle::PM_FocusFrameHMargin, 0, 0) + 1;
QPoint pos = qApp->style()->subElementRect(QStyle::SE_ViewItemCheckIndicator, &option, 0).center()
+ QPoint(checkMargin, 0);
diff --git a/tests/auto/widgets/itemviews/qitemeditorfactory/tst_qitemeditorfactory.cpp b/tests/auto/widgets/itemviews/qitemeditorfactory/tst_qitemeditorfactory.cpp
index 3945e65f80..3d5201494e 100644
--- a/tests/auto/widgets/itemviews/qitemeditorfactory/tst_qitemeditorfactory.cpp
+++ b/tests/auto/widgets/itemviews/qitemeditorfactory/tst_qitemeditorfactory.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/itemviews/qitemview/tst_qitemview.cpp b/tests/auto/widgets/itemviews/qitemview/tst_qitemview.cpp
index 7f8337a5d8..04b32d1e56 100644
--- a/tests/auto/widgets/itemviews/qitemview/tst_qitemview.cpp
+++ b/tests/auto/widgets/itemviews/qitemview/tst_qitemview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/itemviews/qitemview/viewstotest.cpp b/tests/auto/widgets/itemviews/qitemview/viewstotest.cpp
index 15f1a4d02f..33993de125 100644
--- a/tests/auto/widgets/itemviews/qitemview/viewstotest.cpp
+++ b/tests/auto/widgets/itemviews/qitemview/viewstotest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp b/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp
index e56a8e1008..523516a4b4 100644
--- a/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp
+++ b/tests/auto/widgets/itemviews/qlistview/tst_qlistview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp b/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp
index 8849b3ae6d..35e13e2f0a 100644
--- a/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp
+++ b/tests/auto/widgets/itemviews/qlistwidget/tst_qlistwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -122,7 +122,7 @@ private slots:
void changeDataWithSorting();
void itemData();
void itemWidget();
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
void fastScroll();
#endif
void insertUnchanged();
@@ -1489,7 +1489,7 @@ void tst_QListWidget::itemWidget()
QCOMPARE(list.itemWidget(item), static_cast<QWidget*>(0));
}
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
class MyListWidget : public QListWidget
{
public:
@@ -1537,7 +1537,7 @@ void tst_QListWidget::fastScroll()
// only one item should be repainted, the rest should be scrolled in memory
QCOMPARE(widget.painted.boundingRect().size(), itemSize);
}
-#endif // Q_WS_MAC
+#endif // Q_OS_MAC
void tst_QListWidget::insertUnchanged()
{
diff --git a/tests/auto/widgets/itemviews/qstandarditem/tst_qstandarditem.cpp b/tests/auto/widgets/itemviews/qstandarditem/tst_qstandarditem.cpp
index a0e485a8c3..8ababf0ac4 100644
--- a/tests/auto/widgets/itemviews/qstandarditem/tst_qstandarditem.cpp
+++ b/tests/auto/widgets/itemviews/qstandarditem/tst_qstandarditem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/itemviews/qstandarditemmodel/tst_qstandarditemmodel.cpp b/tests/auto/widgets/itemviews/qstandarditemmodel/tst_qstandarditemmodel.cpp
index 78ac43f79a..1c661f9060 100644
--- a/tests/auto/widgets/itemviews/qstandarditemmodel/tst_qstandarditemmodel.cpp
+++ b/tests/auto/widgets/itemviews/qstandarditemmodel/tst_qstandarditemmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -134,6 +134,8 @@ private slots:
void treeDragAndDrop();
void removeRowsAndColumns();
+ void itemRoleNames();
+
private:
QAbstractItemModel *m_model;
QPersistentModelIndex persistent;
@@ -1658,6 +1660,24 @@ void tst_QStandardItemModel::removeRowsAndColumns()
VERIFY_MODEL
}
+void tst_QStandardItemModel::itemRoleNames()
+{
+ QVector<QString> row_list = QString("1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20").split(',').toVector();
+ QVector<QString> col_list = row_list;
+ QStandardItemModel model;
+ for (int c = 0; c < col_list.count(); c++)
+ for (int r = 0; r < row_list.count(); r++)
+ model.setItem(r, c, new QStandardItem(row_list[r] + "x" + col_list[c]));
+ VERIFY_MODEL
+
+ QHash<int, QByteArray> newRoleNames;
+ newRoleNames.insert(Qt::DisplayRole, "Name");
+ newRoleNames.insert(Qt::DecorationRole, "Avatar");
+ model.setItemRoleNames(newRoleNames);
+ QCOMPARE(model.roleNames(), newRoleNames);
+ VERIFY_MODEL
+}
+
QTEST_MAIN(tst_QStandardItemModel)
#include "tst_qstandarditemmodel.moc"
diff --git a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp
index 74917fbf9a..586c2efd8f 100644
--- a/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp
+++ b/tests/auto/widgets/itemviews/qtableview/tst_qtableview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
index 5e2658a47f..fe1d15a84d 100644
--- a/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
+++ b/tests/auto/widgets/itemviews/qtablewidget/tst_qtablewidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
index 5d0ef9d09b..e1f175ad1b 100644
--- a/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
+++ b/tests/auto/widgets/itemviews/qtreeview/tst_qtreeview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -841,6 +841,9 @@ void tst_QTreeView::editTriggers()
}
// Check if we got an editor
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("EditKeyPressed 4", "QTBUG-23696", Continue);
+#endif
QTRY_COMPARE(qFindChild<QLineEdit *>(&view, QString()) != 0, editorOpened);
}
diff --git a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp
index 14f1f8736d..07e0e4f999 100644
--- a/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp
+++ b/tests/auto/widgets/itemviews/qtreewidget/tst_qtreewidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1838,7 +1838,7 @@ void tst_QTreeWidget::setData()
item->setBackground(j, backgroundColor);
QCOMPARE(itemChangedSpy.count(), 0);
- QColor textColor((i == i) ? Qt::green : Qt::cyan);
+ QColor textColor((i == 1) ? Qt::green : Qt::cyan);
item->setTextColor(j, textColor);
QCOMPARE(item->textColor(j), textColor);
QCOMPARE(itemChangedSpy.count(), 1);
@@ -2978,6 +2978,10 @@ void tst_QTreeWidget::task191552_rtl()
QStyleOptionViewItem opt;
opt.initFrom(&tw);
opt.rect = tw.visualItemRect(item);
+ // mimic QStyledItemDelegate::initStyleOption logic
+ opt.features = QStyleOptionViewItem::HasDisplay | QStyleOptionViewItem::HasCheckIndicator;
+ opt.checkState = Qt::Checked;
+ opt.widget = &tw;
const QRect checkRect = tw.style()->subElementRect(QStyle::SE_ViewItemCheckIndicator, &opt, &tw);
QTest::mouseClick(tw.viewport(), Qt::LeftButton, Qt::NoModifier, checkRect.center());
QTest::qWait(200);
diff --git a/tests/auto/widgets/itemviews/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp b/tests/auto/widgets/itemviews/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp
index b747586548..0e518b3e16 100644
--- a/tests/auto/widgets/itemviews/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp
+++ b/tests/auto/widgets/itemviews/qtreewidgetitemiterator/tst_qtreewidgetitemiterator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/kernel/kernel.pro b/tests/auto/widgets/kernel/kernel.pro
index a68a9c2748..850863c112 100644
--- a/tests/auto/widgets/kernel/kernel.pro
+++ b/tests/auto/widgets/kernel/kernel.pro
@@ -15,3 +15,5 @@ SUBDIRS=\
qwidgetaction \
SUBDIRS -= qsound
+
+mac: qwidget.CONFIG += no_check_target # crashes, see QTBUG-23695
diff --git a/tests/auto/widgets/kernel/qaction/tst_qaction.cpp b/tests/auto/widgets/kernel/qaction/tst_qaction.cpp
index d00828e8b0..47aad21074 100644
--- a/tests/auto/widgets/kernel/qaction/tst_qaction.cpp
+++ b/tests/auto/widgets/kernel/qaction/tst_qaction.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/kernel/qactiongroup/tst_qactiongroup.cpp b/tests/auto/widgets/kernel/qactiongroup/tst_qactiongroup.cpp
index 3946423dec..ae8e785d12 100644
--- a/tests/auto/widgets/kernel/qactiongroup/tst_qactiongroup.cpp
+++ b/tests/auto/widgets/kernel/qactiongroup/tst_qactiongroup.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/kernel/qapplication/desktopsettingsaware/desktopsettingsaware.pro b/tests/auto/widgets/kernel/qapplication/desktopsettingsaware/desktopsettingsaware.pro
index 3aa363d796..3b229e31cb 100644
--- a/tests/auto/widgets/kernel/qapplication/desktopsettingsaware/desktopsettingsaware.pro
+++ b/tests/auto/widgets/kernel/qapplication/desktopsettingsaware/desktopsettingsaware.pro
@@ -13,6 +13,3 @@ SOURCES += main.cpp
CONFIG += qt warn_on create_prl link_prl
CONFIG -= app_bundle
-# This app is testdata for tst_qapplication
-target.path = $$[QT_INSTALL_TESTS]/tst_qapplication/$$TARGET
-INSTALLS += target
diff --git a/tests/auto/widgets/kernel/qapplication/desktopsettingsaware/main.cpp b/tests/auto/widgets/kernel/qapplication/desktopsettingsaware/main.cpp
index 154e9262a3..aaa418cb81 100644
--- a/tests/auto/widgets/kernel/qapplication/desktopsettingsaware/main.cpp
+++ b/tests/auto/widgets/kernel/qapplication/desktopsettingsaware/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/kernel/qapplication/modal/base.cpp b/tests/auto/widgets/kernel/qapplication/modal/base.cpp
index c8e6c63c99..5408df146b 100644
--- a/tests/auto/widgets/kernel/qapplication/modal/base.cpp
+++ b/tests/auto/widgets/kernel/qapplication/modal/base.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/kernel/qapplication/modal/base.h b/tests/auto/widgets/kernel/qapplication/modal/base.h
index af520b916f..640040abff 100644
--- a/tests/auto/widgets/kernel/qapplication/modal/base.h
+++ b/tests/auto/widgets/kernel/qapplication/modal/base.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/kernel/qapplication/modal/main.cpp b/tests/auto/widgets/kernel/qapplication/modal/main.cpp
index 70cc8545d2..8a1ca3721a 100644
--- a/tests/auto/widgets/kernel/qapplication/modal/main.cpp
+++ b/tests/auto/widgets/kernel/qapplication/modal/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/kernel/qapplication/modal/modal.pro b/tests/auto/widgets/kernel/qapplication/modal/modal.pro
index b13165bcda..d9489928ba 100644
--- a/tests/auto/widgets/kernel/qapplication/modal/modal.pro
+++ b/tests/auto/widgets/kernel/qapplication/modal/modal.pro
@@ -8,6 +8,3 @@ DESTDIR = ./
CONFIG -= app_bundle
HEADERS += base.h
-# This app is testdata for tst_qapplication
-target.path = $$[QT_INSTALL_TESTS]/tst_qapplication/$$TARGET
-INSTALLS += target
diff --git a/tests/auto/widgets/kernel/qapplication/qapplication.pro b/tests/auto/widgets/kernel/qapplication/qapplication.pro
index becc6c6f4b..5f369bf61a 100644
--- a/tests/auto/widgets/kernel/qapplication/qapplication.pro
+++ b/tests/auto/widgets/kernel/qapplication/qapplication.pro
@@ -1,7 +1,7 @@
TEMPLATE = subdirs
-SUBDIRS = test \
- desktopsettingsaware \
- modal \
- wincmdline
+SUBDIRS = desktopsettingsaware modal
+win32:!wince*:SUBDIRS += wincmdline
+test.depends += $$SUBDIRS
+SUBDIRS += test
diff --git a/tests/auto/widgets/kernel/qapplication/test/test.pro b/tests/auto/widgets/kernel/qapplication/test/test.pro
index db9d59bdf6..9f6db3cd3e 100644
--- a/tests/auto/widgets/kernel/qapplication/test/test.pro
+++ b/tests/auto/widgets/kernel/qapplication/test/test.pro
@@ -6,14 +6,6 @@ QT += core-private gui-private
SOURCES += ../tst_qapplication.cpp
TARGET = ../tst_qapplication
-wince* {
- additional.files = ../desktopsettingsaware/desktopsettingsaware.exe
- additional.path = desktopsettingsaware
- someTest.files = test.pro
- someTest.path = test
- DEPLOYMENT += additional deploy someTest
-}
-
win32 {
CONFIG(debug, debug|release) {
TARGET = ../../debug/tst_qapplication
@@ -23,3 +15,13 @@ win32 {
}
mac*:CONFIG+=insignificant_test
+
+TESTDATA = ../test/test.pro ../tmp/README
+
+SUBPROGRAMS = desktopsettingsaware modal
+win32: !wince*: SUBPROGRAMS += wincmdline
+
+load(testcase) # for target.path and installTestHelperApp()
+for(file, SUBPROGRAMS): installTestHelperApp("../$${file}/$${file}",$${file},$${file})
+
+
diff --git a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
index 4cf15879cc..d9f4081ed3 100644
--- a/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
+++ b/tests/auto/widgets/kernel/qapplication/tst_qapplication.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -49,13 +49,13 @@
#include <QtCore/QFileInfo>
#include <QtCore/QDir>
#include <QtCore/QProcess>
+#include <QtCore/private/qeventloop_p.h>
#include <QtGui/QFontDatabase>
#include <QtGui/QClipboard>
#include <QtWidgets/QApplication>
#include <QtWidgets/QMessageBox>
-#include <QtWidgets/QInputContext>
#include <QtWidgets/QStyleFactory>
#include <QtWidgets/QHBoxLayout>
#include <QtWidgets/QPushButton>
@@ -138,6 +138,16 @@ private slots:
void qtbug_12673();
+ void testQuitLockRef();
+ void testQuitLock1();
+ void testQuitLock2();
+ void testQuitLock3();
+ void testQuitLock4();
+ void testQuitLock5();
+ void testQuitLock6();
+ void testQuitLock7();
+ void testQuitLock8();
+
void globalStaticObjectDestruction(); // run this last
};
@@ -189,7 +199,6 @@ public:
dialog.show();
dialog.close();
- hide();
event->ignore();
}
};
@@ -516,6 +525,7 @@ void tst_QApplication::lastWindowClosed()
QPointer<CloseWidget>widget = new CloseWidget;
QVERIFY(widget->testAttribute(Qt::WA_QuitOnClose));
+ widget->show();
QObject::connect(&app, SIGNAL(lastWindowClosed()), widget, SLOT(deleteLater()));
app.exec();
QVERIFY(!widget);
@@ -815,7 +825,7 @@ void tst_QApplication::libraryPaths()
{
{
#ifndef Q_OS_WINCE
- QString testDir = QDir::current().canonicalPath() + "/test";
+ QString testDir = QFileInfo(QFINDTESTDATA("test/test.pro")).absolutePath();
#else
// On Windows CE we need QApplication object to have valid
// current Path. Therefore we need to identify it ourselves
@@ -861,7 +871,7 @@ void tst_QApplication::libraryPaths()
"\nexpected:\n - " + expected.join("\n - ")));
// setting the library paths overrides everything
- QString testDir = QDir::currentPath() + "/test";
+ QString testDir = QFileInfo(QFINDTESTDATA("test/test.pro")).absolutePath();
QApplication::setLibraryPaths(QStringList() << testDir);
QVERIFY2(isPathListIncluded(QApplication::libraryPaths(), (QStringList() << testDir)),
qPrintable("actual:\n - " + QApplication::libraryPaths().join("\n - ") +
@@ -884,8 +894,8 @@ void tst_QApplication::libraryPaths()
qDebug() << "After adding plugins path:" << QApplication::libraryPaths();
#endif
QCOMPARE(QApplication::libraryPaths().count(), count);
-
- QApplication::addLibraryPath(QDir::currentPath() + "/test");
+ QString testDir = QFileInfo(QFINDTESTDATA("test/test.pro")).absolutePath();
+ QApplication::addLibraryPath(testDir);
QCOMPARE(QApplication::libraryPaths().count(), count + 1);
// creating QApplication adds the applicationDirPath to the libraryPath
@@ -1258,51 +1268,12 @@ public slots:
{
QApplication::processEvents();
}
- void processEventsWithDeferredDeletion()
- {
- QApplication::processEvents(QEventLoop::DeferredDeletion);
- }
void sendPostedEventsWithDeferredDelete()
{
QApplication::sendPostedEvents(0, QEvent::DeferredDelete);
}
- void deleteLaterAndProcessEvents1()
- {
- QEventLoop eventLoop;
-
- QPointer<QObject> p = this;
- deleteLater();
-
- // trying to delete this object in a deeper eventloop just won't work
- QMetaObject::invokeMethod(this,
- "processEventsOnly",
- Qt::QueuedConnection);
- QMetaObject::invokeMethod(&eventLoop, "quit", Qt::QueuedConnection);
- eventLoop.exec();
- QVERIFY(p);
- QMetaObject::invokeMethod(this,
- "processEventsWithDeferredDeletion",
- Qt::QueuedConnection);
- QMetaObject::invokeMethod(&eventLoop, "quit", Qt::QueuedConnection);
- eventLoop.exec();
- QVERIFY(p);
- QMetaObject::invokeMethod(this,
- "sendPostedEventsWithDeferredDelete",
- Qt::QueuedConnection);
- QMetaObject::invokeMethod(&eventLoop, "quit", Qt::QueuedConnection);
- eventLoop.exec();
- QVERIFY(p);
-
- // trying to delete it from this eventloop still doesn't work
- QApplication::processEvents();
- QVERIFY(p);
-
- // however, it *will* work with this magic incantation
- QApplication::processEvents(QEventLoop::DeferredDeletion);
- QVERIFY(!p);
- }
- void deleteLaterAndProcessEvents2()
+ void deleteLaterAndProcessEvents()
{
QEventLoop eventLoop;
@@ -1317,12 +1288,6 @@ public slots:
eventLoop.exec();
QVERIFY(p);
QMetaObject::invokeMethod(this,
- "processEventsWithDeferredDeletion",
- Qt::QueuedConnection);
- QMetaObject::invokeMethod(&eventLoop, "quit", Qt::QueuedConnection);
- eventLoop.exec();
- QVERIFY(p);
- QMetaObject::invokeMethod(this,
"sendPostedEventsWithDeferredDelete",
Qt::QueuedConnection);
QMetaObject::invokeMethod(&eventLoop, "quit", Qt::QueuedConnection);
@@ -1355,16 +1320,7 @@ void tst_QApplication::testDeleteLaterProcessEvents()
QApplication app(argc, 0, QApplication::GuiServer);
// If you call processEvents() with an event dispatcher present, but
// outside any event loops, deferred deletes are not processed unless
- // QEventLoop::DeferredDeletion is passed.
- object = new QObject;
- p = object;
- object->deleteLater();
- app.processEvents();
- QVERIFY(p);
- app.processEvents(QEventLoop::ProcessEventsFlag(0x10)); // 0x10 == QEventLoop::DeferredDeletion
- QVERIFY(!p);
-
- // sendPostedEvents(0, DeferredDelete); also works
+ // sendPostedEvents(0, DeferredDelete) is called.
object = new QObject;
p = object;
object->deleteLater();
@@ -1423,22 +1379,7 @@ void tst_QApplication::testDeleteLaterProcessEvents()
EventLoopNester *nester = new EventLoopNester();
p = nester;
QTimer::singleShot(3000, &loop, SLOT(quit()));
- QTimer::singleShot(0, nester, SLOT(deleteLaterAndProcessEvents1()));
-
- loop.exec();
- QVERIFY(!p);
- }
-
- {
- // when the event loop that calls deleteLater() also calls
- // processEvents() immediately afterwards, the object should
- // not die until the parent loop continues
- QApplication app(argc, 0, QApplication::GuiServer);
- QEventLoop loop;
- EventLoopNester *nester = new EventLoopNester();
- p = nester;
- QTimer::singleShot(3000, &loop, SLOT(quit()));
- QTimer::singleShot(0, nester, SLOT(deleteLaterAndProcessEvents2()));
+ QTimer::singleShot(0, nester, SLOT(deleteLaterAndProcessEvents()));
loop.exec();
QVERIFY(!p);
@@ -1575,7 +1516,7 @@ void tst_QApplication::focusChanged()
QTestMouseEvent click(QTest::MouseClick, Qt::LeftButton, 0, QPoint(5, 5), 0);
bool tabAllControls = true;
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
// Mac has two modes, one where you tab to everything, one where you can
// only tab to input controls, here's what we get. Determine which ones we
// should get.
@@ -2117,6 +2058,509 @@ void tst_QApplication::qtbug_12673()
QCOMPARE(testProcess.exitStatus(), QProcess::NormalExit);
}
+class JobObject : public QObject
+{
+ Q_OBJECT
+public:
+ JobObject(int milliseconds, QObject *parent = 0)
+ : QObject(parent)
+ {
+ QTimer::singleShot(milliseconds, this, SLOT(timeout()));
+ }
+
+ JobObject(QObject *parent = 0)
+ : QObject(parent)
+ {
+ QTimer::singleShot(1000, this, SLOT(timeout()));
+ }
+
+private slots:
+ void timeout()
+ {
+ emit done();
+ deleteLater();
+ }
+
+signals:
+ void done();
+
+private:
+ QEventLoopLocker locker;
+};
+
+class QuitLockRefTester : public QObject
+{
+ Q_OBJECT
+public:
+ QuitLockRefTester(QObject *parent = 0)
+ : QObject(parent)
+ {
+ QTimer::singleShot(0, this, SLOT(doTest()));
+ }
+
+private slots:
+ void doTest()
+ {
+ QApplicationPrivate *privateClass = static_cast<QApplicationPrivate*>(QObjectPrivate::get(qApp));
+
+ {
+ QDialog *win1 = new QDialog;
+
+ // Test with a lock active so that the refcount doesn't drop to zero during these tests, causing a quit.
+ // (until we exit the scope)
+ QEventLoopLocker locker;
+
+ QCOMPARE(privateClass->quitLockRef.load(), 1);
+
+ win1->show();
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ QDialog *win2 = new QDialog;
+
+ win2->show();
+
+ QCOMPARE(privateClass->quitLockRef.load(), 3);
+
+ delete win1;
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ delete win2;
+
+ QCOMPARE(privateClass->quitLockRef.load(), 1);
+
+ win1 = new QDialog;
+
+ win1->show();
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ JobObject *job1 = new JobObject(this);
+
+ QCOMPARE(privateClass->quitLockRef.load(), 3);
+
+ delete win1;
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ delete job1;
+
+ QCOMPARE(privateClass->quitLockRef.load(), 1);
+
+ QWidget *w1 = new QWidget;
+
+ w1->show();
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ QWidget *w2 = new QMainWindow;
+
+ w2->show();
+
+ QCOMPARE(privateClass->quitLockRef.load(), 3);
+
+ QWidget *w3 = new QWidget(0, Qt::Dialog);
+
+ w3->show();
+
+ QCOMPARE(privateClass->quitLockRef.load(), 4);
+
+ delete w3;
+
+ QCOMPARE(privateClass->quitLockRef.load(), 3);
+
+ delete w2;
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ QWidget *subWidget1 = new QWidget(w1, Qt::Window);
+
+ // Even though We create a new widget and show it,
+ // the ref count does not go up because it is a child of
+ // w1, which is the top-level, and what we are actually
+ // refcounting.
+ subWidget1->show();
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ // When we use setParent(0) and re-show, the
+ // ref count does increase:
+ QCOMPARE(subWidget1->isVisible(), true);
+ subWidget1->setParent(0);
+ QCOMPARE(subWidget1->isVisible(), false);
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ subWidget1->show();
+ QCOMPARE(subWidget1->isVisible(), true);
+ QCOMPARE(privateClass->quitLockRef.load(), 3);
+
+ subWidget1->setParent(w1);
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ QWidget *subWidget2 = new QWidget(w1);
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ subWidget2->show();
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ delete subWidget2;
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ QWidget *subWidget3 = new QWidget(w1);
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ subWidget3->show();
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ subWidget3->hide();
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ delete subWidget3;
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ QWidget *subWidget4 = new QWidget(subWidget1);
+ QWidget *subWidget5 = new QWidget(subWidget1);
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ QWidget *subWidget6 = new QWidget(subWidget4, Qt::Window);
+
+ subWidget6->show();
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ delete w1;
+
+ QCOMPARE(privateClass->quitLockRef.load(), 1);
+
+ w1 = new QWidget;
+ w2 = new QWidget;
+ w3 = new QWidget;
+
+ QHBoxLayout *layout = new QHBoxLayout(w1);
+
+ layout->addWidget(w2);
+ layout->addWidget(w3);
+
+ QCOMPARE(privateClass->quitLockRef.load(), 1);
+
+ w1->show();
+
+ QCOMPARE(privateClass->quitLockRef.load(), 2);
+
+ w1->hide();
+ QCOMPARE(privateClass->quitLockRef.load(), 1);
+
+ delete w1;
+
+ }
+ QCOMPARE(privateClass->quitLockRef.load(), 0);
+ }
+};
+
+void tst_QApplication::testQuitLockRef()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qapplication" };
+ QApplication app(argc, argv);
+
+ QuitLockRefTester tester;
+
+ app.exec();
+}
+
+void tst_QApplication::testQuitLock1()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QApplication app(argc, argv);
+
+ QWidget *w = new QWidget;
+
+ w->show();
+
+ QMetaObject::invokeMethod(w, "close", Qt::QueuedConnection);
+
+ app.exec();
+
+ // No hang = pass.
+}
+
+void tst_QApplication::testQuitLock2()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QApplication app(argc, argv);
+
+ QWidget *w1 = new QWidget;
+
+ w1->show();
+
+ QWidget *w2 = new QWidget;
+
+ w2->show();
+
+ QMetaObject::invokeMethod(w1, "deleteLater", Qt::QueuedConnection);
+ QMetaObject::invokeMethod(w2, "hide", Qt::QueuedConnection);
+
+ app.exec();
+
+ // No hang = pass.
+}
+
+class Result : public QObject
+{
+ Q_OBJECT
+public:
+ Result(QObject *parent = 0)
+ : QObject(parent), m_passes(false)
+ {
+
+ }
+
+ bool result() const
+ {
+ return m_passes;
+ }
+
+public slots:
+
+ void setPasses()
+ {
+ setResult(true);
+ }
+
+ void setFails()
+ {
+ setResult(false);
+ }
+
+ void setResult(bool result)
+ {
+ m_passes = result;
+ }
+
+private:
+ bool m_passes;
+};
+
+void tst_QApplication::testQuitLock3()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QApplication app(argc, argv);
+
+ Result *result = new Result(&app);
+
+ JobObject *job = new JobObject(&app);
+
+ QObject::connect(job, SIGNAL(done()), result, SLOT(setPasses()));
+
+ app.exec();
+
+ QVERIFY(result->result());
+}
+
+void tst_QApplication::testQuitLock4()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QApplication app(argc, argv);
+
+ QWidget *w = new QWidget;
+
+ w->show();
+
+ Result *result = new Result(&app);
+ JobObject *job = new JobObject(1000, &app);
+
+ QTimer::singleShot(500, w, SLOT(deleteLater()));
+
+ QObject::connect(w, SIGNAL(destroyed()), result, SLOT(setFails()));
+ QObject::connect(job, SIGNAL(done()), result, SLOT(setPasses()));
+
+ app.exec();
+
+ QVERIFY(result->result());
+}
+
+class JobBeforeWindowRunner : public QObject
+{
+ Q_OBJECT
+public:
+ JobBeforeWindowRunner(QObject *parent = 0)
+ : QObject(parent), m_result(new Result(this))
+ {
+
+ }
+
+ void start()
+ {
+ JobObject *job = new JobObject(this);
+ connect(job, SIGNAL(done()), m_result, SLOT(setFails()));
+ connect(job, SIGNAL(destroyed()), SLOT(showWindowDelayed()), Qt::QueuedConnection);
+ }
+
+ bool result() const { return m_result->result(); }
+
+private slots:
+ void showWindowDelayed()
+ {
+ qApp->setQuitLockEnabled(true);
+ QTimer::singleShot(500, this, SLOT(showWindow()));
+ }
+
+ void showWindow()
+ {
+ QWidget *w = new QWidget;
+ w->show();
+ w->deleteLater();
+ connect(w, SIGNAL(destroyed()), m_result, SLOT(setPasses()));
+ }
+
+private:
+ Result * const m_result;
+};
+
+void tst_QApplication::testQuitLock5()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QApplication app(argc, argv);
+ app.setQuitLockEnabled(false);
+ // Run a job before showing a window, and only enable the refcounting
+ // after doing so.
+ // Although the job brings the refcount to zero, the app does not exit
+ // until setQuitLockEnabled is called and the feature re-enabled.
+
+ JobBeforeWindowRunner *eventRunner = new JobBeforeWindowRunner(&app);
+
+ eventRunner->start();
+
+ app.exec();
+
+ QVERIFY(eventRunner->result());
+}
+
+class JobDuringWindowRunner : public QObject
+{
+ Q_OBJECT
+public:
+ JobDuringWindowRunner(QObject *parent = 0)
+ : QObject(parent), m_result(new Result(this))
+ {
+
+ }
+
+ void start()
+ {
+ JobObject *job = new JobObject(this);
+
+ QWidget *w = new QWidget;
+ w->show();
+ w->deleteLater();
+
+ QObject::connect(w, SIGNAL(destroyed()), m_result, SLOT(setFails()));
+ QObject::connect(job, SIGNAL(done()), m_result, SLOT(setPasses()));
+ }
+
+ bool result() const { return m_result->result(); }
+
+private:
+ Result * const m_result;
+};
+
+void tst_QApplication::testQuitLock6()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QApplication app(argc, argv);
+
+ // A job runs, and while it is running, a window is shown and closed,
+ // then the job ends, which causes the quit.
+
+ JobDuringWindowRunner *eventRunner = new JobDuringWindowRunner(&app);
+
+ eventRunner->start();
+
+ app.exec();
+
+ QVERIFY(eventRunner->result());
+}
+class JobWindowJobWindowRunner : public QObject
+{
+ Q_OBJECT
+public:
+ JobWindowJobWindowRunner(QObject *parent = 0)
+ : QObject(parent), m_result(new Result(this))
+ {
+
+ }
+
+ void start()
+ {
+ JobObject *job = new JobObject(500, this);
+
+ QWidget *w = new QWidget;
+ w->show();
+ QTimer::singleShot(1000, w, SLOT(deleteLater()));
+
+ QObject::connect(w, SIGNAL(destroyed()), m_result, SLOT(setPasses()));
+ QObject::connect(job, SIGNAL(done()), m_result, SLOT(setFails()));
+ }
+
+ bool result() const { return m_result->result(); }
+private:
+ Result * const m_result;
+};
+
+void tst_QApplication::testQuitLock7()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QApplication app(argc, argv);
+
+ // A job runs, and while it is running, a window is shown
+ // then the job ends, then the window is closed, which causes the quit.
+
+ JobWindowJobWindowRunner *eventRunner = new JobWindowJobWindowRunner(&app);
+
+ eventRunner->start();
+
+ app.exec();
+
+ QVERIFY(eventRunner->result());
+}
+
+void tst_QApplication::testQuitLock8()
+{
+ int argc = 1;
+ char *argv[] = { "tst_qcoreapplication" };
+ QApplication app(argc, argv);
+
+ QMainWindow *mw1 = new QMainWindow;
+ mw1->show();
+ QMainWindow *mw2 = new QMainWindow;
+ mw2->show();
+
+ QMetaObject::invokeMethod(mw1, "close", Qt::QueuedConnection);
+ QMetaObject::invokeMethod(mw2, "close", Qt::QueuedConnection);
+
+ app.exec();
+
+ // No hang = pass
+}
+
+
/*
This test is meant to ensure that certain objects (public & commonly used)
can safely be used in a Q_GLOBAL_STATIC such that their destructors are
diff --git a/tests/auto/widgets/kernel/qapplication/wincmdline/main.cpp b/tests/auto/widgets/kernel/qapplication/wincmdline/main.cpp
index fc1f37047e..2e416a731b 100644
--- a/tests/auto/widgets/kernel/qapplication/wincmdline/main.cpp
+++ b/tests/auto/widgets/kernel/qapplication/wincmdline/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/kernel/qapplication/wincmdline/wincmdline.pro b/tests/auto/widgets/kernel/qapplication/wincmdline/wincmdline.pro
index 9abeb1cc83..8498d8b31d 100644
--- a/tests/auto/widgets/kernel/qapplication/wincmdline/wincmdline.pro
+++ b/tests/auto/widgets/kernel/qapplication/wincmdline/wincmdline.pro
@@ -5,6 +5,3 @@ QT += widgets
SOURCES += main.cpp
DESTDIR = ./
-# This app is testdata for tst_qapplication
-target.path = $$[QT_INSTALL_TESTS]/tst_qapplication/$$TARGET
-INSTALLS += target
diff --git a/tests/auto/widgets/kernel/qboxlayout/tst_qboxlayout.cpp b/tests/auto/widgets/kernel/qboxlayout/tst_qboxlayout.cpp
index 9da67183bc..bdcc46d72a 100644
--- a/tests/auto/widgets/kernel/qboxlayout/tst_qboxlayout.cpp
+++ b/tests/auto/widgets/kernel/qboxlayout/tst_qboxlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/kernel/qdesktopwidget/tst_qdesktopwidget.cpp b/tests/auto/widgets/kernel/qdesktopwidget/tst_qdesktopwidget.cpp
index 5595e03252..64aa571f19 100644
--- a/tests/auto/widgets/kernel/qdesktopwidget/tst_qdesktopwidget.cpp
+++ b/tests/auto/widgets/kernel/qdesktopwidget/tst_qdesktopwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp b/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp
index 4b4c843115..fc47e09d4f 100644
--- a/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp
+++ b/tests/auto/widgets/kernel/qformlayout/tst_qformlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp b/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp
index 9df387b18b..c8e5591f8b 100644
--- a/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp
+++ b/tests/auto/widgets/kernel/qgridlayout/tst_qgridlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp b/tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp
index c0a8d9680b..764d777cea 100644
--- a/tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp
+++ b/tests/auto/widgets/kernel/qlayout/tst_qlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,8 +56,8 @@
#include <QRadioButton>
#include <private/qlayoutengine_p.h>
-#ifdef Q_WS_MAC
-# include <QtGui/QMacStyle>
+#ifdef Q_OS_MAC
+# include <QtWidgets/QMacStyle>
#endif
class tst_QLayout : public QObject
@@ -273,7 +273,7 @@ public:
void tst_QLayout::layoutItemRect()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
if (qobject_cast<QMacStyle*>(QApplication::style())) {
QWidget *window = new QWidget;
QRadioButton *radio = new QRadioButton(window);
diff --git a/tests/auto/widgets/kernel/qstackedlayout/tst_qstackedlayout.cpp b/tests/auto/widgets/kernel/qstackedlayout/tst_qstackedlayout.cpp
index 7939f12c0d..9c3be62a3a 100644
--- a/tests/auto/widgets/kernel/qstackedlayout/tst_qstackedlayout.cpp
+++ b/tests/auto/widgets/kernel/qstackedlayout/tst_qstackedlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/kernel/qtooltip/tst_qtooltip.cpp b/tests/auto/widgets/kernel/qtooltip/tst_qtooltip.cpp
index d8b0666880..b47ef659be 100644
--- a/tests/auto/widgets/kernel/qtooltip/tst_qtooltip.cpp
+++ b/tests/auto/widgets/kernel/qtooltip/tst_qtooltip.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -90,7 +90,7 @@ void tst_QToolTip::task183679_data()
{
QTest::addColumn<Qt::Key>("key");
QTest::addColumn<bool>("visible");
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
const bool visibleAfterNonModifier = false;
#else
const bool visibleAfterNonModifier = true;
@@ -116,6 +116,9 @@ void tst_QToolTip::task183679()
widget.showDelayedToolTip(100);
QTest::qWait(300);
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("", "QTBUG-23707", Continue);
+#endif
QTRY_VERIFY(QToolTip::isVisible());
QTest::keyPress(&widget, key);
@@ -125,6 +128,12 @@ void tst_QToolTip::task183679()
// auto-close timeout (currently 10000 msecs)
QTest::qWait(1500);
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("Shift", "QTBUG-23707", Continue);
+ QEXPECT_FAIL("Control", "QTBUG-23707", Continue);
+ QEXPECT_FAIL("Alt", "QTBUG-23707", Continue);
+ QEXPECT_FAIL("Meta", "QTBUG-23707", Continue);
+#endif
QCOMPARE(QToolTip::isVisible(), visible);
}
diff --git a/tests/auto/widgets/kernel/qwidget/qwidget.pro b/tests/auto/widgets/kernel/qwidget/qwidget.pro
index 33b95d7d2b..23fd2459bf 100644
--- a/tests/auto/widgets/kernel/qwidget/qwidget.pro
+++ b/tests/auto/widgets/kernel/qwidget/qwidget.pro
@@ -11,9 +11,8 @@ aix-g++*:QMAKE_CXXFLAGS+=-fpermissive
CONFIG += x11inc
mac {
-# ### fixme
-# LIBS += -framework Security -framework AppKit -framework Carbon
-# OBJECTIVE_SOURCES += tst_qwidget_mac_helpers.mm
+ LIBS += -framework Security -framework AppKit -framework Carbon
+ OBJECTIVE_SOURCES += tst_qwidget_mac_helpers.mm
}
x11 {
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
index 16bb5d345b..caf0f1f80d 100644
--- a/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
+++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -56,7 +56,6 @@
#include <qstyle.h>
#include <qwidget.h>
#include <qwindowsstyle.h>
-#include <qinputcontext.h>
#include <qdesktopwidget.h>
#include <private/qwidget_p.h>
#include <private/qapplication_p.h>
@@ -77,10 +76,7 @@
# include <qscreen_qws.h>
#endif
-// I *MUST* have QtTest afterwards or this test won't work with newer headers
-#if defined(Q_WS_MAC)
-# include <private/qt_mac_p.h>
-#undef verify
+#if defined(Q_OS_MAC)
#include "tst_qwidget_mac_helpers.h" // Abstract the ObjC stuff out so not everyone must run an ObjC++ compile.
#endif
@@ -140,7 +136,7 @@ bool qt_wince_is_smartphone() {
}
#endif
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
#include <Security/AuthSession.h>
bool macHasAccessToWindowsServer()
{
@@ -225,8 +221,7 @@ private slots:
#endif
void widgetAt();
-#ifdef Q_WS_MAC
- void retainHIView();
+#ifdef Q_OS_MAC
void sheetOpacity();
void setMask();
#endif
@@ -257,7 +252,7 @@ private slots:
void update();
void isOpaque();
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
void scroll();
#endif
@@ -342,10 +337,8 @@ private slots:
#ifndef Q_OS_IRIX
void doubleRepaint();
#endif
-#ifndef Q_WS_MAC
void resizeInPaintEvent();
void opaqueChildren();
-#endif
void setMaskInResizeEvent();
void moveInResizeEvent();
@@ -412,7 +405,7 @@ private slots:
void taskQTBUG_7532_tabOrderWithFocusProxy();
void movedAndResizedAttributes();
void childAt();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
void childAt_unifiedToolBar();
void taskQTBUG_11373();
#endif
@@ -2238,12 +2231,12 @@ void tst_QWidget::showMinimizedKeepsFocus()
qApp->setActiveWindow(&window);
QTest::qWaitForWindowShown(&window);
QTest::qWait(30);
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
if (!macHasAccessToWindowsServer())
QEXPECT_FAIL("", "When not having WindowServer access, we lose focus.", Continue);
#endif
QTRY_COMPARE(window.focusWidget(), firstchild);
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
if (!macHasAccessToWindowsServer())
QEXPECT_FAIL("", "When not having WindowServer access, we lose focus.", Continue);
#endif
@@ -2629,7 +2622,7 @@ public:
void tst_QWidget::lostUpdatesOnHide()
{
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
UpdateWidget widget;
widget.setAttribute(Qt::WA_DontShowOnScreen);
widget.show();
@@ -2853,7 +2846,7 @@ void tst_QWidget::stackUnder()
foreach (UpdateWidget *child, allChildren) {
int expectedPaintEvents = child == child4 ? 1 : 0;
-#if defined(Q_WS_WIN) || defined(Q_WS_MAC)
+#if defined(Q_WS_WIN) || defined(Q_OS_MAC)
if (expectedPaintEvents == 1 && child->numPaintEvents == 2)
QEXPECT_FAIL(0, "Mac and Windows issues double repaints for Z-Order change", Continue);
#endif
@@ -2892,7 +2885,7 @@ void tst_QWidget::stackUnder()
#ifdef Q_OS_WINCE
qApp->processEvents();
#endif
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
QEXPECT_FAIL(0, "See QTBUG-493", Continue);
#endif
QCOMPARE(child->numPaintEvents, 0);
@@ -3464,99 +3457,7 @@ void tst_QWidget::testDeletionInEventHandlers()
delete w;
}
-#ifdef Q_WS_MAC
-
-/*
- Test that retaining and releasing the HIView returned by QWidget::winId()
- works even if the widget itself is deleted.
-*/
-void tst_QWidget::retainHIView()
-{
- // Single window
- {
- const WidgetViewPair window = createAndRetain();
- delete window.first;
- QVERIFY(testAndRelease(window.second));
- }
-
- // Child widget
- {
- const WidgetViewPair parent = createAndRetain();
- const WidgetViewPair child = createAndRetain(parent.first);
-
- delete parent.first;
- QVERIFY(testAndRelease(parent.second));
- QVERIFY(testAndRelease(child.second));
- }
-
- // Multiple children
- {
- const WidgetViewPair parent = createAndRetain();
- const WidgetViewPair child1 = createAndRetain(parent.first);
- const WidgetViewPair child2 = createAndRetain(parent.first);
-
- delete parent.first;
- QVERIFY(testAndRelease(parent.second));
- QVERIFY(testAndRelease(child1.second));
- QVERIFY(testAndRelease(child2.second));
- }
-
- // Grandchild widget
- {
- const WidgetViewPair parent = createAndRetain();
- const WidgetViewPair child = createAndRetain(parent.first);
- const WidgetViewPair grandchild = createAndRetain(child.first);
-
- delete parent.first;
- QVERIFY(testAndRelease(parent.second));
- QVERIFY(testAndRelease(child.second));
- QVERIFY(testAndRelease(grandchild.second));
- }
-
- // Reparent child widget
- {
- const WidgetViewPair parent1 = createAndRetain();
- const WidgetViewPair parent2 = createAndRetain();
- const WidgetViewPair child = createAndRetain(parent1.first);
-
- child.first->setParent(parent2.first);
-
- delete parent1.first;
- QVERIFY(testAndRelease(parent1.second));
- delete parent2.first;
- QVERIFY(testAndRelease(parent2.second));
- QVERIFY(testAndRelease(child.second));
- }
-
- // Reparent window
- {
- const WidgetViewPair window1 = createAndRetain();
- const WidgetViewPair window2 = createAndRetain();
- const WidgetViewPair child1 = createAndRetain(window1.first);
- const WidgetViewPair child2 = createAndRetain(window2.first);
-
- window2.first->setParent(window1.first);
-
- delete window2.first;
- QVERIFY(testAndRelease(window2.second));
- QVERIFY(testAndRelease(child2.second));
- delete window1.first;
- QVERIFY(testAndRelease(window1.second));
- QVERIFY(testAndRelease(child1.second));
- }
-
- // Delete child widget
- {
- const WidgetViewPair parent = createAndRetain();
- const WidgetViewPair child = createAndRetain(parent.first);
-
- delete child.first;
- QVERIFY(testAndRelease(child.second));
- delete parent.first;
- QVERIFY(testAndRelease(parent.second));
- }
-}
-
+#ifdef Q_OS_MAC
void tst_QWidget::sheetOpacity()
{
QWidget tmpWindow;
@@ -3744,7 +3645,7 @@ void tst_QWidget::optimizedResizeMove()
void tst_QWidget::optimizedResize_topLevel()
{
-#if defined(Q_WS_MAC) || defined(Q_WS_QWS)
+#if defined(Q_OS_MAC) || defined(Q_WS_QWS)
QSKIP("We do not yet have static contents support for *top-levels* on this platform");
#endif
@@ -4362,7 +4263,7 @@ static inline bool isOpaque(QWidget *widget)
void tst_QWidget::isOpaque()
{
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
QWidget w;
QVERIFY(::isOpaque(&w));
@@ -4434,7 +4335,7 @@ void tst_QWidget::isOpaque()
#endif
}
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
/*
Test that scrolling of a widget invalidates the correct regions
*/
@@ -4821,7 +4722,7 @@ void tst_QWidget::windowMoveResize()
widget.move(r.topLeft());
widget.resize(r.size());
QApplication::processEvents();
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_MAC)
if (r.width() == 0 && r.height() > 0) {
widget.move(r.topLeft());
widget.resize(r.size());
@@ -4890,7 +4791,7 @@ void tst_QWidget::windowMoveResize()
widget.move(r.topLeft());
widget.resize(r.size());
QApplication::processEvents();
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_MAC)
if (r.width() == 0 && r.height() > 0) {
widget.move(r.topLeft());
widget.resize(r.size());
@@ -5019,7 +4920,7 @@ void tst_QWidget::moveChild()
QTRY_COMPARE(pos, child.pos());
QCOMPARE(parent.r, QRegion(oldGeometry) - child.geometry());
-#if !defined(Q_WS_MAC)
+#if !defined(Q_OS_MAC)
// should be scrolled in backingstore
QCOMPARE(child.r, QRegion());
#endif
@@ -6657,7 +6558,7 @@ void tst_QWidget::render_systemClip()
// rrrrrrrrrr
// ...
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
for (int i = 0; i < image.height(); ++i) {
for (int j = 0; j < image.width(); ++j) {
if (i < 50 && j < i)
@@ -7620,11 +7521,6 @@ void tst_QWidget::updateGeometry()
void tst_QWidget::sendUpdateRequestImmediately()
{
-#ifdef Q_WS_MAC
- if (!QApplicationPrivate::graphicsSystem())
- QSKIP("We only send update requests on the Mac when passing -graphicssystem");
-#endif
-
UpdateWidget updateWidget;
updateWidget.show();
#ifdef Q_WS_X11
@@ -7646,7 +7542,7 @@ void tst_QWidget::sendUpdateRequestImmediately()
#ifndef Q_OS_IRIX
void tst_QWidget::doubleRepaint()
{
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_MAC)
if (!macHasAccessToWindowsServer())
QSKIP("Not having window server access causes the wrong number of repaints to be issues");
#endif
@@ -7677,8 +7573,6 @@ void tst_QWidget::doubleRepaint()
}
#endif
-#ifndef Q_WS_MAC
-// This test only makes sense on the Mac when passing -graphicssystem.
void tst_QWidget::resizeInPaintEvent()
{
QWidget window;
@@ -7742,7 +7636,6 @@ void tst_QWidget::opaqueChildren()
greatGrandChild.setAutoFillBackground(false);
QCOMPARE(qt_widget_private(&grandChild)->getOpaqueChildren(), QRegion());
}
-#endif
class MaskSetWidget : public QWidget
@@ -8344,7 +8237,7 @@ void tst_QWidget::setClearAndResizeMask()
QTRY_COMPARE(child.mask(), childMask);
QTest::qWait(50);
// and ensure that the child widget doesn't get any update.
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
// Mac always issues a full update when calling setMask, and we cannot force it to not do so.
if (child.internalWinId())
QCOMPARE(child.numPaintEvents, 1);
@@ -8367,7 +8260,7 @@ void tst_QWidget::setClearAndResizeMask()
// and ensure that that the child widget gets an update for the area outside the old mask.
QTRY_COMPARE(child.numPaintEvents, 1);
outsideOldMask = child.rect();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
// Mac always issues a full update when calling setMask, and we cannot force it to not do so.
if (!child.internalWinId())
#endif
@@ -8382,7 +8275,7 @@ void tst_QWidget::setClearAndResizeMask()
// Mask child widget with a mask that is bigger than the rect
child.setMask(QRegion(0, 0, 1000, 1000));
QTest::qWait(100);
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
// Mac always issues a full update when calling setMask, and we cannot force it to not do so.
if (child.internalWinId())
QTRY_COMPARE(child.numPaintEvents, 1);
@@ -8395,7 +8288,7 @@ void tst_QWidget::setClearAndResizeMask()
// ...and the same applies when clearing the mask.
child.clearMask();
QTest::qWait(100);
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
// Mac always issues a full update when calling setMask, and we cannot force it to not do so.
if (child.internalWinId())
QTRY_VERIFY(child.numPaintEvents > 0);
@@ -8425,7 +8318,7 @@ void tst_QWidget::setClearAndResizeMask()
QTimer::singleShot(100, &resizeChild, SLOT(shrinkMask()));
QTest::qWait(200);
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
// Mac always issues a full update when calling setMask, and we cannot force it to not do so.
if (child.internalWinId())
QTRY_COMPARE(resizeChild.paintedRegion, resizeChild.mask());
@@ -8437,7 +8330,7 @@ void tst_QWidget::setClearAndResizeMask()
const QRegion oldMask = resizeChild.mask();
QTimer::singleShot(0, &resizeChild, SLOT(enlargeMask()));
QTest::qWait(100);
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
// Mac always issues a full update when calling setMask, and we cannot force it to not do so.
if (child.internalWinId())
QTRY_COMPARE(resizeChild.paintedRegion, resizeChild.mask());
@@ -8994,15 +8887,13 @@ void tst_QWidget::rectOutsideCoordinatesLimit_task144779()
void tst_QWidget::inputFocus_task257832()
{
QLineEdit *widget = new QLineEdit;
- QInputContext *context = widget->inputContext();
- if (!context)
- QSKIP("No input context");
widget->setFocus();
widget->winId(); // make sure, widget has been created
- context->setFocusWidget(widget);
- QCOMPARE(context->focusWidget(), static_cast<QWidget*>(widget));
+ widget->show();
+ QTRY_VERIFY(widget->hasFocus());
+ QCOMPARE(qApp->inputMethod()->inputItem(), static_cast<QWidget*>(widget));
widget->setReadOnly(true);
- QVERIFY(!context->focusWidget());
+ QVERIFY(!qApp->inputMethod()->inputItem());
delete widget;
}
@@ -9137,24 +9028,13 @@ void tst_QWidget::focusProxyAndInputMethods()
// and that the input method gets the focus proxy passed
// as the focus widget instead of the child widget.
// otherwise input method queries go to the wrong widget
- QInputContext *inputContext = qApp->inputContext();
- if (inputContext) {
- QCOMPARE(inputContext->focusWidget(), toplevel);
+ QCOMPARE(qApp->inputPanel()->inputItem(), toplevel);
- child->setAttribute(Qt::WA_InputMethodEnabled, false);
- QVERIFY(!inputContext->focusWidget());
+ toplevel->setAttribute(Qt::WA_InputMethodEnabled, false);
+ QVERIFY(!qApp->inputPanel()->inputItem());
- child->setAttribute(Qt::WA_InputMethodEnabled, true);
- QCOMPARE(inputContext->focusWidget(), toplevel);
-
- child->setEnabled(false);
- QVERIFY(!inputContext->focusWidget());
-
- child->setEnabled(true);
- QCOMPARE(inputContext->focusWidget(), toplevel);
- } else {
- qDebug() << "No input context set, skipping QInputContext::focusWidget() test";
- }
+ toplevel->setAttribute(Qt::WA_InputMethodEnabled, true);
+ QCOMPARE(qApp->inputPanel()->inputItem(), toplevel);
delete toplevel;
}
@@ -9321,7 +9201,7 @@ void tst_QWidget::childAt()
QCOMPARE(parent.childAt(120, 120), grandChild);
}
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
void tst_QWidget::childAt_unifiedToolBar()
{
QLabel *label = new QLabel(QLatin1String("foo"));
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget_mac_helpers.h b/tests/auto/widgets/kernel/qwidget/tst_qwidget_mac_helpers.h
index 5d07ebd381..0343185b21 100644
--- a/tests/auto/widgets/kernel/qwidget/tst_qwidget_mac_helpers.h
+++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget_mac_helpers.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,18 +34,15 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QtCore/QString>
#include <QtCore/QPair>
-#include <QtGui/QWidget>
+#include <QtWidgets/QWidget>
#pragma once // Yeah, it's deprecated in general, but it's standard practive for Mac OS X.
QString nativeWindowTitle(QWidget *widget, Qt::WindowState state);
bool nativeWindowModified(QWidget *widget);
-
-typedef QPair<QWidget *, WId> WidgetViewPair;
-bool testAndRelease(const WId);
-WidgetViewPair createAndRetain(QWidget * const parent = 0);
diff --git a/tests/auto/widgets/kernel/qwidget/tst_qwidget_mac_helpers.mm b/tests/auto/widgets/kernel/qwidget/tst_qwidget_mac_helpers.mm
index 404a3e989f..50cad19bde 100644
--- a/tests/auto/widgets/kernel/qwidget/tst_qwidget_mac_helpers.mm
+++ b/tests/auto/widgets/kernel/qwidget/tst_qwidget_mac_helpers.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the documentation of the Qt Toolkit.
**
@@ -35,49 +34,37 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
+// some versions of CALayer.h use 'slots' as an identifier
+#define QT_NO_KEYWORDS
+
#include "tst_qwidget_mac_helpers.h"
-#include <private/qt_mac_p.h>
-#include <private/qt_cocoa_helpers_mac_p.h>
+#include <QApplication>
+#include <QPlatformNativeInterface>
+#include <private/qcore_mac_p.h>
+#include <Cocoa/Cocoa.h>
QString nativeWindowTitle(QWidget *window, Qt::WindowState state)
{
- OSWindowRef windowRef = qt_mac_window_for(window);
+ QWindow *qwindow = window->windowHandle();
+ NSWindow *nswindow = (NSWindow *) qApp->platformNativeInterface()->nativeResourceForWindow("nswindow", qwindow);
QCFString macTitle;
if (state == Qt::WindowMinimized) {
- macTitle = reinterpret_cast<CFStringRef>([[windowRef miniwindowTitle] retain]);
+ macTitle = reinterpret_cast<CFStringRef>([[nswindow miniwindowTitle] retain]);
} else {
- macTitle = reinterpret_cast<CFStringRef>([[windowRef title] retain]);
+ macTitle = reinterpret_cast<CFStringRef>([[nswindow title] retain]);
}
return macTitle;
}
bool nativeWindowModified(QWidget *widget)
{
- return [qt_mac_window_for(widget) isDocumentEdited];
-}
-
-bool testAndRelease(const WId view)
-{
- if ([id(view) retainCount] != 2)
- return false;
- [id(view) release];
- [id(view) release];
- return true;
+ QWindow *qwindow = widget->windowHandle();
+ NSWindow *nswindow = (NSWindow *) qApp->platformNativeInterface()->nativeResourceForWindow("nswindow", qwindow);
+ return [nswindow isDocumentEdited];
}
-
-WidgetViewPair createAndRetain(QWidget * const parent)
-{
- QWidget * const widget = new QWidget(parent);
- const WId view = widget->winId();
- // Retain twice so we can safely call retainCount even if the retain count
- // is off by one because of a double release.
- [id(view) retain];
- [id(view) retain];
- return qMakePair(widget, view);
-}
-
diff --git a/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp b/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
index b6f62379a6..78d9d36bc9 100644
--- a/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
+++ b/tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -198,7 +198,7 @@ void tst_QWidget_window::tst_windowFilePathAndwindowTitle_data()
QTest::newRow("always set title, not appName") << true << true << validPath << QString() << windowTitle << windowTitle << windowTitle;
QString platString =
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
fileNameOnly;
#else
fileAndApp;
@@ -233,12 +233,19 @@ void tst_QWidget_window::tst_windowFilePathAndwindowTitle()
widget.setWindowTitle(indyWindowTitle);
}
widget.setWindowFilePath(filePath);
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("never Set Title, yes AppName", "QTBUG-23682", Continue);
+ QEXPECT_FAIL("set title after only, yes AppName", "QTBUG-23682", Continue);
+#endif
QCOMPARE(finalTitleBefore, widget.windowTitle());
QCOMPARE(widget.windowFilePath(), filePath);
if (setWindowTitleAfter) {
widget.setWindowTitle(indyWindowTitle);
}
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("never Set Title, yes AppName", "QTBUG-23682", Continue);
+#endif
QCOMPARE(finalTitleAfter, widget.windowTitle());
QCOMPARE(widget.windowFilePath(), filePath);
}
diff --git a/tests/auto/widgets/kernel/qwidgetaction/tst_qwidgetaction.cpp b/tests/auto/widgets/kernel/qwidgetaction/tst_qwidgetaction.cpp
index 7e2d3e3b9a..03e4fd9a0a 100644
--- a/tests/auto/widgets/kernel/qwidgetaction/tst_qwidgetaction.cpp
+++ b/tests/auto/widgets/kernel/qwidgetaction/tst_qwidgetaction.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -368,7 +368,7 @@ void tst_QWidgetAction::popup()
{
QMenu menu;
menu.addAction(&action);
- QTimer::singleShot(0, &menu, SLOT(close()));
+ QTimer::singleShot(100, &menu, SLOT(close()));
menu.exec();
}
diff --git a/tests/auto/widgets/shared/platforminputcontext.h b/tests/auto/widgets/shared/platforminputcontext.h
index a8b9a8c547..759123a4a6 100644
--- a/tests/auto/widgets/shared/platforminputcontext.h
+++ b/tests/auto/widgets/shared/platforminputcontext.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/styles/qmacstyle/tst_qmacstyle.cpp b/tests/auto/widgets/styles/qmacstyle/tst_qmacstyle.cpp
index 551fc6612a..f732dfa18d 100644
--- a/tests/auto/widgets/styles/qmacstyle/tst_qmacstyle.cpp
+++ b/tests/auto/widgets/styles/qmacstyle/tst_qmacstyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/styles/qstyle/tst_qstyle.cpp b/tests/auto/widgets/styles/qstyle/tst_qstyle.cpp
index 1483189cd0..b96d3f7095 100644
--- a/tests/auto/widgets/styles/qstyle/tst_qstyle.cpp
+++ b/tests/auto/widgets/styles/qstyle/tst_qstyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -75,7 +75,7 @@
#include <QCleanlooksStyle>
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
#include <QMacStyle>
#endif
@@ -561,7 +561,7 @@ qDebug("TEST PAINTING");
void tst_QStyle::testMacStyle()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QMacStyle mstyle;
QVERIFY(testAllFunctions(&mstyle));
#endif
diff --git a/tests/auto/widgets/styles/qstyleoption/tst_qstyleoption.cpp b/tests/auto/widgets/styles/qstyleoption/tst_qstyleoption.cpp
index f1fac918bb..9ede072eb3 100644
--- a/tests/auto/widgets/styles/qstyleoption/tst_qstyleoption.cpp
+++ b/tests/auto/widgets/styles/qstyleoption/tst_qstyleoption.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp b/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp
index cf0e773905..2dc985439d 100644
--- a/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp
+++ b/tests/auto/widgets/styles/qstylesheetstyle/tst_qstylesheetstyle.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -781,6 +781,10 @@ void tst_QStyleSheetStyle::focusColors()
+ " did not contain background color #e8ff66, using style "
+ QString::fromLatin1(qApp->style()->metaObject()->className()))
.toLocal8Bit().constData());
+#ifdef Q_OS_MAC
+ if (widget == widgets.first())
+ QEXPECT_FAIL("", "Failure only for first widget, the QPushButton, see QTBUG-23686", Continue);
+#endif
QVERIFY2(testForColors(image, QColor(0xff, 0x00, 0x84)),
(QString::fromLatin1(widget->metaObject()->className())
+ " did not contain text color #ff0084, using style "
@@ -832,14 +836,23 @@ void tst_QStyleSheetStyle::hoverColors()
QTest::mouseMove ( widget, QPoint(6,6));
QTest::qWait(60);
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("", "Numerous failures related to Qt::WA_UnderMouse, see QTBUGT-23685", Continue);
+#endif
QVERIFY(widget->testAttribute(Qt::WA_UnderMouse));
QImage image(frame.width(), frame.height(), QImage::Format_ARGB32);
frame.render(&image);
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("", "Numerous failures related to Qt::WA_UnderMouse, see QTBUGT-23685", Continue);
+#endif
QVERIFY2(testForColors(image, QColor(0xe8, 0xff, 0x66)),
(QString::fromLatin1(widget->metaObject()->className())
+ " did not contain background color #e8ff66").toLocal8Bit().constData());
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("", "Numerous failures related to Qt::WA_UnderMouse, see QTBUGT-23685", Continue);
+#endif
QVERIFY2(testForColors(image, QColor(0xff, 0x00, 0x84)),
(QString::fromLatin1(widget->metaObject()->className())
+ " did not contain text color #ff0084").toLocal8Bit().constData());
@@ -1027,7 +1040,13 @@ void tst_QStyleSheetStyle::minmaxSizes()
QVERIFY(qAbs(page3->minimumSize().height() - 250 - 2) <= 2);
QTabBar *bar = qFindChild<QTabBar*>(&tabWidget);
QVERIFY(bar);
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("", "QTBUG-23686", Continue);
+#endif
QVERIFY(qAbs(bar->tabRect(index1).width() - 100 - 2) <= 2);
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("", "QTBUG-23686", Continue);
+#endif
QVERIFY(qAbs(bar->tabRect(index3).width() - 130 - 2) <= 2);
}
diff --git a/tests/auto/widgets/util/qcompleter/tst_qcompleter.cpp b/tests/auto/widgets/util/qcompleter/tst_qcompleter.cpp
index 024e4ffa14..228ff40ee5 100644
--- a/tests/auto/widgets/util/qcompleter/tst_qcompleter.cpp
+++ b/tests/auto/widgets/util/qcompleter/tst_qcompleter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/util/qscroller/tst_qscroller.cpp b/tests/auto/widgets/util/qscroller/tst_qscroller.cpp
index 8bf82e588e..1eabbdf43f 100644
--- a/tests/auto/widgets/util/qscroller/tst_qscroller.cpp
+++ b/tests/auto/widgets/util/qscroller/tst_qscroller.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the $MODULE$ of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/util/qsystemtrayicon/tst_qsystemtrayicon.cpp b/tests/auto/widgets/util/qsystemtrayicon/tst_qsystemtrayicon.cpp
index 846f282528..cfafa9ea47 100644
--- a/tests/auto/widgets/util/qsystemtrayicon/tst_qsystemtrayicon.cpp
+++ b/tests/auto/widgets/util/qsystemtrayicon/tst_qsystemtrayicon.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/util/qundogroup/tst_qundogroup.cpp b/tests/auto/widgets/util/qundogroup/tst_qundogroup.cpp
index a88b0168f2..2a8bb7aa0e 100644
--- a/tests/auto/widgets/util/qundogroup/tst_qundogroup.cpp
+++ b/tests/auto/widgets/util/qundogroup/tst_qundogroup.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/util/qundostack/tst_qundostack.cpp b/tests/auto/widgets/util/qundostack/tst_qundostack.cpp
index eb8ebfe21a..81b2ff022c 100644
--- a/tests/auto/widgets/util/qundostack/tst_qundostack.cpp
+++ b/tests/auto/widgets/util/qundostack/tst_qundostack.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/util/util.pro b/tests/auto/widgets/util/util.pro
index b7fe35ce4c..33f2845001 100644
--- a/tests/auto/widgets/util/util.pro
+++ b/tests/auto/widgets/util/util.pro
@@ -5,7 +5,3 @@ SUBDIRS=\
qsystemtrayicon \
qundogroup \
qundostack \
-
-symbian:SUBDIRS -= \
- qsystemtrayicon \
-
diff --git a/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp b/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp
index 1eb1a5abd3..5695834e61 100644
--- a/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp
+++ b/tests/auto/widgets/widgets/qabstractbutton/tst_qabstractbutton.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -125,7 +125,7 @@ public:
opt.palette = palette();
opt.state = QStyle::State_None;
style()->drawPrimitive(QStyle::PE_FrameFocusRect, &opt, &p, this);
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
p.setPen(Qt::red);
p.drawRect(r);
#endif
@@ -361,17 +361,17 @@ void tst_QAbstractButton::setText()
QCOMPARE( testWidget->text(), QString("simple") );
testWidget->setText("&ampersand");
QCOMPARE( testWidget->text(), QString("&ampersand") );
-#ifndef Q_WS_MAC // no mneonics on Mac.
+#ifndef Q_OS_MAC // no mneonics on Mac.
QCOMPARE( testWidget->shortcut(), QKeySequence("ALT+A"));
#endif
testWidget->setText("te&st");
QCOMPARE( testWidget->text(), QString("te&st") );
-#ifndef Q_WS_MAC // no mneonics on Mac.
+#ifndef Q_OS_MAC // no mneonics on Mac.
QCOMPARE( testWidget->shortcut(), QKeySequence("ALT+S"));
#endif
testWidget->setText("foo");
QCOMPARE( testWidget->text(), QString("foo") );
-#ifndef Q_WS_MAC // no mneonics on Mac.
+#ifndef Q_OS_MAC // no mneonics on Mac.
QCOMPARE( testWidget->shortcut(), QKeySequence());
#endif
}
diff --git a/tests/auto/widgets/widgets/qabstractscrollarea/tst_qabstractscrollarea.cpp b/tests/auto/widgets/widgets/qabstractscrollarea/tst_qabstractscrollarea.cpp
index c64c16bf85..353a6f84e6 100644
--- a/tests/auto/widgets/widgets/qabstractscrollarea/tst_qabstractscrollarea.cpp
+++ b/tests/auto/widgets/widgets/qabstractscrollarea/tst_qabstractscrollarea.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp b/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp
index 32e0fbfc5e..6ed5d59db0 100644
--- a/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp
+++ b/tests/auto/widgets/widgets/qabstractslider/tst_qabstractslider.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -732,7 +732,7 @@ void tst_QAbstractSlider::wheelEvent_data()
<< 1 // delta
<< int(Qt::Vertical) // orientation of slider
<< int(Qt::Vertical) // orientation of wheel
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
<< 1 // expected position after
#else
// We don't restrict scrolling to pageStep on Mac
@@ -750,7 +750,7 @@ void tst_QAbstractSlider::wheelEvent_data()
<< 1 // delta
<< int(Qt::Horizontal) // orientation of slider
<< int(Qt::Vertical) // orientation of wheel
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
<< 1 // expected position after
#else
// We don't restrict scrolling to pageStep on Mac
@@ -769,7 +769,7 @@ void tst_QAbstractSlider::wheelEvent_data()
<< 1 // delta
<< int(Qt::Horizontal) // orientation of slider
<< int(Qt::Vertical) // orientation of wheel
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
<< 1 // expected position after
#else
// We don't restrict scrolling to pageStep on Mac
@@ -868,6 +868,11 @@ void tst_QAbstractSlider::wheelEvent()
QWheelEvent event(slider->rect().bottomRight() + distanceFromBottomRight, WHEEL_DELTA * deltaMultiple,
Qt::NoButton, k, orientation);
QVERIFY(applicationInstance->sendEvent(slider,&event));
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("Normal data page", "QTBUG-23679", Continue);
+ QEXPECT_FAIL("Different orientation", "QTBUG-23679", Continue);
+ QEXPECT_FAIL("Different orientation2", "QTBUG-23679", Continue);
+#endif
QCOMPARE(slider->sliderPosition(),expectedSliderPosition);
slider->setSliderPosition(initialSliderPosition);
@@ -877,6 +882,11 @@ void tst_QAbstractSlider::wheelEvent()
QSignalSpy spy1(slider, SIGNAL(actionTriggered(int)));
QSignalSpy spy2(slider, SIGNAL(valueChanged(int)));
QVERIFY(applicationInstance->sendEvent(slider,&event));
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("Normal data page", "QTBUG-23679", Continue);
+ QEXPECT_FAIL("Different orientation", "QTBUG-23679", Continue);
+ QEXPECT_FAIL("Different orientation2", "QTBUG-23679", Continue);
+#endif
QCOMPARE(slider->sliderPosition(),expectedSliderPosition);
int expectedSignalCount = (initialSliderPosition == expectedSliderPosition) ? 0 : 1;
QCOMPARE(spy1.count(), expectedSignalCount);
@@ -972,8 +982,14 @@ void tst_QAbstractSlider::sliderPressedReleased()
QStyle::SubControl(subControl), slider);
QTest::mousePress(slider, Qt::LeftButton, 0, QPoint(rect.center().x() + 2, rect.center().y() + 2));
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("scrollbar on the groove", "QTBUG-23679", Continue);
+#endif
QCOMPARE(spy1.count(), expectedCount);
QTest::mouseRelease(slider, Qt::LeftButton, 0, rect.center());
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("scrollbar on the groove", "QTBUG-23679", Continue);
+#endif
QCOMPARE(spy2.count(), expectedCount);
delete slider;
diff --git a/tests/auto/widgets/widgets/qabstractspinbox/tst_qabstractspinbox.cpp b/tests/auto/widgets/widgets/qabstractspinbox/tst_qabstractspinbox.cpp
index 964fd27320..f77891ed7f 100644
--- a/tests/auto/widgets/widgets/qabstractspinbox/tst_qabstractspinbox.cpp
+++ b/tests/auto/widgets/widgets/qabstractspinbox/tst_qabstractspinbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qbuttongroup/tst_qbuttongroup.cpp b/tests/auto/widgets/widgets/qbuttongroup/tst_qbuttongroup.cpp
index a554216300..c77358faf8 100644
--- a/tests/auto/widgets/widgets/qbuttongroup/tst_qbuttongroup.cpp
+++ b/tests/auto/widgets/widgets/qbuttongroup/tst_qbuttongroup.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,7 @@
#include <qpushbutton.h>
#include <qlineedit.h>
#include <qtoolbutton.h>
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
#include <qsettings.h>
#endif
diff --git a/tests/auto/widgets/widgets/qcalendarwidget/tst_qcalendarwidget.cpp b/tests/auto/widgets/widgets/qcalendarwidget/tst_qcalendarwidget.cpp
index 468497f7ae..4f95f80525 100644
--- a/tests/auto/widgets/widgets/qcalendarwidget/tst_qcalendarwidget.cpp
+++ b/tests/auto/widgets/widgets/qcalendarwidget/tst_qcalendarwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp b/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp
index 858586a20a..78eaa3ffb1 100644
--- a/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp
+++ b/tests/auto/widgets/widgets/qcheckbox/tst_qcheckbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
index 95fee1f6c8..80285ded78 100644
--- a/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
+++ b/tests/auto/widgets/widgets/qcombobox/tst_qcombobox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -58,7 +58,7 @@
#include <qtablewidget.h>
#include <qscrollbar.h>
#include <qboxlayout.h>
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
#include <qmacstyle_mac.h>
#elif defined Q_WS_X11
#include <private/qt_x11_p.h>
@@ -455,7 +455,7 @@ void tst_QComboBox::setEditable()
void tst_QComboBox::setPalette()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
if (qobject_cast<QMacStyle *>(testWidget->style())) {
QSKIP("This test doesn't make sense for pixmap-based styles");
}
@@ -907,6 +907,9 @@ void tst_QComboBox::hide()
QTRY_VERIFY(testWidget->view()->isVisible());
testWidget->hidePopup();
//allow combobox effect to complete
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("", "QTBUG-23678", Continue);
+#endif
QTRY_VERIFY(!testWidget->view()->isVisible());
testWidget->hide();
QVERIFY(!testWidget->isVisible());
diff --git a/tests/auto/widgets/widgets/qcommandlinkbutton/tst_qcommandlinkbutton.cpp b/tests/auto/widgets/widgets/qcommandlinkbutton/tst_qcommandlinkbutton.cpp
index 1a594138df..b18e095a93 100644
--- a/tests/auto/widgets/widgets/qcommandlinkbutton/tst_qcommandlinkbutton.cpp
+++ b/tests/auto/widgets/widgets/qcommandlinkbutton/tst_qcommandlinkbutton.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qdatetimeedit/qdatetimeedit.pro b/tests/auto/widgets/widgets/qdatetimeedit/qdatetimeedit.pro
index fd579a14cd..41c90b499a 100644
--- a/tests/auto/widgets/widgets/qdatetimeedit/qdatetimeedit.pro
+++ b/tests/auto/widgets/widgets/qdatetimeedit/qdatetimeedit.pro
@@ -4,6 +4,4 @@ QT += widgets testlib
SOURCES += tst_qdatetimeedit.cpp
wincewm50smart-msvc2005: DEFINES += WINCE_NO_MODIFIER_KEYS
-
-
-
+mac:CONFIG += insignificant_test # numerous failures, see QTBUG-23674
diff --git a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp
index 6514ed589c..e66909e9eb 100644
--- a/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp
+++ b/tests/auto/widgets/widgets/qdatetimeedit/tst_qdatetimeedit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -780,7 +780,7 @@ void tst_QDateTimeEdit::selectAndScrollWithKeys()
testWidget->setDate(QDate(2004, 05, 11));
testWidget->setDisplayFormat("dd/MM/yyyy");
testWidget->show();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_Home);
@@ -819,7 +819,7 @@ void tst_QDateTimeEdit::selectAndScrollWithKeys()
QCOMPARE(testWidget->lineEdit()->selectedText(), QString("2004"));
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_End);
@@ -846,7 +846,7 @@ void tst_QDateTimeEdit::selectAndScrollWithKeys()
QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11/05/2004"));
QTest::keyClick(testWidget, Qt::Key_Left, Qt::ShiftModifier);
QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11/05/2004"));
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_Home);
@@ -862,7 +862,7 @@ void tst_QDateTimeEdit::selectAndScrollWithKeys()
QCOMPARE(testWidget->currentSection(), QDateTimeEdit::DaySection);
QCOMPARE(testWidget->lineEdit()->selectedText(), QString("11"));
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_Home);
@@ -882,7 +882,7 @@ void tst_QDateTimeEdit::backspaceKey()
testWidget->setDate(QDate(2004, 05, 11));
testWidget->setDisplayFormat("d/MM/yyyy");
testWidget->show();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_End);
@@ -896,7 +896,7 @@ void tst_QDateTimeEdit::backspaceKey()
for (int i=0;i<3;i++)
QTest::keyClick(testWidget, Qt::Key_Left);
QCOMPARE(testWidget->text(), QString("11/05/2004"));
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_End);
@@ -911,7 +911,7 @@ void tst_QDateTimeEdit::backspaceKey()
QTest::keyClick(testWidget, Qt::Key_Backspace);
QCOMPARE(testWidget->text(), QString("11/0/2004"));
testWidget->interpretText();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_End);
@@ -945,7 +945,7 @@ void tst_QDateTimeEdit::deleteKey()
qApp->setActiveWindow(testWidget);
testWidget->setDate(QDate(2004, 05, 11));
testWidget->setDisplayFormat("d/MM/yyyy");
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_Home);
@@ -1019,21 +1019,21 @@ void tst_QDateTimeEdit::enterKey()
testWidget->setDisplayFormat("prefix d/MM/yyyy 'suffix'");
testWidget->lineEdit()->setFocus();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_Home);
#endif
QTest::keyClick(testWidget, Qt::Key_Enter);
QVERIFY(!testWidget->lineEdit()->hasSelectedText());
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_End);
#endif
QTest::keyClick(testWidget, Qt::Key_Enter);
QVERIFY(!testWidget->lineEdit()->hasSelectedText());
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_Home);
@@ -1096,7 +1096,7 @@ void tst_QDateTimeEdit::specialValueText()
QCOMPARE(testWidget->date(), QDate(2000, 1, 1));
QCOMPARE(testWidget->text(), QString("fOo"));
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_End);
@@ -1107,7 +1107,7 @@ void tst_QDateTimeEdit::specialValueText()
QTest::keyClick(testWidget, Qt::Key_Down);
QCOMPARE(testWidget->text(), QString("fOo"));
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_End);
@@ -2538,7 +2538,7 @@ void tst_QDateTimeEdit::newCase()
testWidget->setDisplayFormat("MMMM'a'MbMMMcMM");
testWidget->setDate(QDate(2005, 6, 1));
QCOMPARE(testWidget->text(), QString("Junea6bJunc06"));
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_Home);
@@ -2546,7 +2546,7 @@ void tst_QDateTimeEdit::newCase()
QTest::keyClick(testWidget, Qt::Key_Up);
QCOMPARE(testWidget->text(), QString("Julya7bJulc07"));
QCOMPARE(testWidget->lineEdit()->selectedText(), QString("July"));
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_Home);
@@ -2619,7 +2619,7 @@ void tst_QDateTimeEdit::cursorPos()
//l.exec();
QTest::keyClick(testWidget, Qt::Key_Y);
QCOMPARE(testWidget->lineEdit()->cursorPosition(), 11);
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_Home);
@@ -2649,7 +2649,7 @@ void tst_QDateTimeEdit::newCase5()
testWidget->setDateTime(QDateTime(QDate(2005, 10, 7), QTime(17, 44, 13, 100)));
testWidget->show();
QCOMPARE(testWidget->lineEdit()->displayText(), QString("2005-10-07 17:44:13 100 ms"));
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_End);
@@ -2672,7 +2672,7 @@ void tst_QDateTimeEdit::newCase6()
testWidget->setDate(QDate(2005, 10, 7));
testWidget->show();
QCOMPARE(testWidget->lineEdit()->displayText(), QString("7-2005-10-07"));
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_Home);
@@ -2745,7 +2745,7 @@ void tst_QDateTimeEdit::setCurrentSection()
QCOMPARE(setCurrentSections.size(), expectedCursorPositions.size());
testWidget->setDisplayFormat(format);
testWidget->setDateTime(dateTime);
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_Home);
@@ -2765,7 +2765,7 @@ void tst_QDateTimeEdit::setSelectedSection()
testWidget->setDisplayFormat("mm.ss.zzz('ms') m");
testWidget->setTime(QTime(0, 0, 9));
testWidget->show();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Left, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_Home);
@@ -2882,7 +2882,7 @@ void tst_QDateTimeEdit::reverseTest()
testWidget->setDisplayFormat("dd/MM/yyyy");
testWidget->setDate(QDate(2001, 3, 30));
QCOMPARE(testWidget->lineEdit()->displayText(), QString("2001/03/30"));
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_End);
@@ -3033,7 +3033,7 @@ void tst_QDateTimeEdit::ddMMMMyyyy()
testWidget->setCurrentSection(QDateTimeEdit::YearSection);
QTest::keyClick(testWidget, Qt::Key_Enter);
QCOMPARE(testWidget->lineEdit()->selectedText(), QString("2000"));
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(testWidget, Qt::Key_Right, Qt::ControlModifier);
#else
QTest::keyClick(testWidget, Qt::Key_End);
@@ -3322,7 +3322,7 @@ void tst_QDateTimeEdit::potentialYYValueBug()
edit.setDate(edit.minimumDate());
edit.lineEdit()->setFocus();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(&edit, Qt::Key_Right, Qt::ControlModifier);
#else
QTest::keyClick(&edit, Qt::Key_End);
@@ -3337,7 +3337,7 @@ void tst_QDateTimeEdit::textSectionAtEnd()
edit.setDisplayFormat("MMMM");
edit.setDate(QDate(2000, 1, 1));
edit.lineEdit()->setFocus();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(&edit, Qt::Key_Right, Qt::ControlModifier);
#else
QTest::keyClick(&edit, Qt::Key_End);
@@ -3363,7 +3363,7 @@ void tst_QDateTimeEdit::keypadAutoAdvance()
EditorDateEdit edit;
edit.setDate(QDate(2000, 2, 1));
edit.setDisplayFormat("dd/MM");
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(&edit, Qt::Key_Left, Qt::ControlModifier);
#else
QTest::keyClick(&edit, Qt::Key_Home);
diff --git a/tests/auto/widgets/widgets/qdial/tst_qdial.cpp b/tests/auto/widgets/widgets/qdial/tst_qdial.cpp
index 1479ee768d..4c83d5777b 100644
--- a/tests/auto/widgets/widgets/qdial/tst_qdial.cpp
+++ b/tests/auto/widgets/widgets/qdial/tst_qdial.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp b/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp
index 6a2517e0bb..03af773c2e 100644
--- a/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp
+++ b/tests/auto/widgets/widgets/qdialogbuttonbox/tst_qdialogbuttonbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp b/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp
index ce86ea3dfc..43c0022c25 100644
--- a/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp
+++ b/tests/auto/widgets/widgets/qdockwidget/tst_qdockwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qdoublespinbox/tst_qdoublespinbox.cpp b/tests/auto/widgets/widgets/qdoublespinbox/tst_qdoublespinbox.cpp
index 51e91b40bd..f140e631f2 100644
--- a/tests/auto/widgets/widgets/qdoublespinbox/tst_qdoublespinbox.cpp
+++ b/tests/auto/widgets/widgets/qdoublespinbox/tst_qdoublespinbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -268,7 +268,7 @@ void tst_QDoubleSpinBox::setTracking_data()
QTestEventList keys;
QStringList texts1;
QStringList texts2;
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
keys.addKeyClick(Qt::Key_Right, Qt::ControlModifier);
#else
keys.addKeyClick(Qt::Key_End);
@@ -343,7 +343,7 @@ void tst_QDoubleSpinBox::setWrapping_data()
keys.clear();
values.clear();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
keys.addKeyClick(Qt::Key_Right, Qt::ControlModifier);
#else
keys.addKeyClick(Qt::Key_End);
@@ -358,7 +358,7 @@ void tst_QDoubleSpinBox::setWrapping_data()
keys.clear();
values.clear();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
keys.addKeyClick(Qt::Key_Left, Qt::ControlModifier);
#else
keys.addKeyClick(Qt::Key_Home);
@@ -625,7 +625,7 @@ void tst_QDoubleSpinBox::setDecimals()
QCOMPARE(spin.text(), expected);
if (spin.decimals() > 0) {
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(&spin, Qt::Key_Right, Qt::ControlModifier);
#else
QTest::keyClick(&spin, Qt::Key_End);
@@ -830,13 +830,13 @@ void tst_QDoubleSpinBox::removeAll()
spin.setValue(0.2);
spin.setDecimals(1);
spin.show();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(&spin, Qt::Key_Left, Qt::ControlModifier);
#else
QTest::keyClick(&spin, Qt::Key_Home);
#endif
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(&spin, Qt::Key_Right, Qt::ControlModifier|Qt::ShiftModifier);
#else
QTest::keyClick(&spin, Qt::Key_End, Qt::ShiftModifier);
@@ -883,7 +883,7 @@ void tst_QDoubleSpinBox::germanTest()
DoubleSpinBox spin;
spin.show();
spin.setValue(2.12);
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(&spin, Qt::Key_Right, Qt::ControlModifier);
#else
QTest::keyClick(&spin, Qt::Key_End);
@@ -901,7 +901,7 @@ void tst_QDoubleSpinBox::doubleDot()
spin.setValue(2.12);
QTest::keyClick(&spin, Qt::Key_Backspace);
QCOMPARE(spin.text(), QString("2.12"));
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(&spin, Qt::Key_Left, Qt::ControlModifier);
#else
QTest::keyClick(&spin, Qt::Key_Home);
diff --git a/tests/auto/widgets/widgets/qdoublevalidator/tst_qdoublevalidator.cpp b/tests/auto/widgets/widgets/qdoublevalidator/tst_qdoublevalidator.cpp
index 77f3b15184..deb8a3bb6f 100644
--- a/tests/auto/widgets/widgets/qdoublevalidator/tst_qdoublevalidator.cpp
+++ b/tests/auto/widgets/widgets/qdoublevalidator/tst_qdoublevalidator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -76,7 +76,7 @@ void tst_QDoubleValidator::validateThouSep_data()
QTest::newRow("1.000de") << "de" << QString("1.000") << ACC;
QTest::newRow(".C") << "C" << QString(".") << ITM;
- QTest::newRow(".de") << "de" << QString(".") << ITM;
+ QTest::newRow(".de") << "de" << QString(".") << INV;
QTest::newRow(",C") << "C" << QString(",") << INV;
QTest::newRow(",de") << "de" << QString(",") << ITM;
}
@@ -173,7 +173,7 @@ void tst_QDoubleValidator::validate_data()
QTest::newRow("data_de8") << "de" << -100.0 << 100.0 << 1 << QString("-100") << ACC << ACC;
QTest::newRow("data_de9") << "de" << -100.0 << -10.0 << 1 << QString("10") << ITM << ITM;
QTest::newRow("data_de10") << "de" << 0.3 << 0.5 << 5 << QString("0,34567") << ACC << ACC;
- QTest::newRow("data_de11") << "de" << -0.3 << -0.5 << 5 << QString("-0,345678") << ITM << INV;
+ QTest::newRow("data_de11") << "de" << -0.3 << -0.5 << 5 << QString("-0,345678") << INV << INV;
QTest::newRow("data_de12") << "de" << -0.32 << 0.32 << 1 << QString("0") << ACC << ACC;
QTest::newRow("data_de13") << "de" << 0.0 << 100.0 << 1 << QString("3456a") << INV << INV;
QTest::newRow("data_de14") << "de" << -100.0 << 100.0 << 1 << QString("-3456a") << INV << INV;
@@ -216,12 +216,9 @@ void tst_QDoubleValidator::validate_data()
arabicNum += QChar(1636);
QTest::newRow("arabic") << "ar" << 0.0 << 20.0 << 2 << arabicNum << ACC << ACC;
- QTest::newRow("data_QTBUG_14935-1") << "de" << 0.0 << 1.0 << 5 << QString("0.31") << ACC << ACC;
- QTest::newRow("data_QTBUG_14935-2") << "de" << 0.0 << 1000000.0 << 5 << QString("3.123") << ACC << ACC;
- QTest::newRow("data_QTBUG_14935-3") << "de" << 0.0 << 1000000.0 << 5 << QString("123,345.678") << ACC << ACC;
-
- QTest::newRow("data_de_problem-1") << "de" << 0.0 << 10.0 << 0 << QString("1.0") << ITM << ITM;
- QTest::newRow("data_de_problem-2") << "de" << 0.0 << 10.0 << 0 << QString("0.1") << INV << INV;
+ // Confim no fallback to C locale
+ QTest::newRow("data_C1") << "de" << 0.0 << 1000.0 << 2 << QString("1.000,00") << ACC << ACC;
+ QTest::newRow("data_C2") << "de" << 0.0 << 1000.0 << 2 << QString("1,000.00") << INV << INV;
}
void tst_QDoubleValidator::validate()
@@ -234,9 +231,6 @@ void tst_QDoubleValidator::validate()
QFETCH(QValidator::State, scientific_state);
QFETCH(QValidator::State, standard_state);
- QEXPECT_FAIL("data_de_problem-1", "To be fixed. See QTBUG-15210.", Abort);
- QEXPECT_FAIL("data_de_problem-2", "To be fixed. See QTBUG-15210.", Abort);
-
QLocale::setDefault(QLocale(localeName));
QDoubleValidator dv(minimum, maximum, decimals, 0);
@@ -247,25 +241,31 @@ void tst_QDoubleValidator::validate()
}
void tst_QDoubleValidator::notifySignals()
{
+ QLocale::setDefault(QLocale("C"));
+
QDoubleValidator dv(0.1, 0.9, 10, 0);
QSignalSpy topSpy(&dv, SIGNAL(topChanged(double)));
QSignalSpy bottomSpy(&dv, SIGNAL(bottomChanged(double)));
QSignalSpy decSpy(&dv, SIGNAL(decimalsChanged(int)));
+ QSignalSpy changedSpy(&dv, SIGNAL(changed()));
qRegisterMetaType<QDoubleValidator::Notation>("QDoubleValidator::Notation");
QSignalSpy notSpy(&dv, SIGNAL(notationChanged(QDoubleValidator::Notation)));
dv.setTop(0.8);
QCOMPARE(topSpy.count(), 1);
+ QCOMPARE(changedSpy.count(), 1);
QVERIFY(dv.top() == 0.8);
dv.setBottom(0.2);
QCOMPARE(bottomSpy.count(), 1);
+ QCOMPARE(changedSpy.count(), 2);
QVERIFY(dv.bottom() == 0.2);
dv.setRange(0.2, 0.7);
QCOMPARE(topSpy.count(), 2);
QCOMPARE(bottomSpy.count(), 1);
QCOMPARE(decSpy.count(), 1);
+ QCOMPARE(changedSpy.count(), 3);
QVERIFY(dv.bottom() == 0.2);
QVERIFY(dv.top() == 0.7);
QVERIFY(dv.decimals() == 0.);
@@ -273,6 +273,7 @@ void tst_QDoubleValidator::notifySignals()
dv.setRange(0.3, 0.7);
QCOMPARE(topSpy.count(), 2);
QCOMPARE(bottomSpy.count(), 2);
+ QCOMPARE(changedSpy.count(), 4);
QVERIFY(dv.bottom() == 0.3);
QVERIFY(dv.top() == 0.7);
QVERIFY(dv.decimals() == 0.);
@@ -280,12 +281,14 @@ void tst_QDoubleValidator::notifySignals()
dv.setRange(0.4, 0.6);
QCOMPARE(topSpy.count(), 3);
QCOMPARE(bottomSpy.count(), 3);
+ QCOMPARE(changedSpy.count(), 5);
QVERIFY(dv.bottom() == 0.4);
QVERIFY(dv.top() == 0.6);
QVERIFY(dv.decimals() == 0.);
dv.setDecimals(10);
QCOMPARE(decSpy.count(), 2);
+ QCOMPARE(changedSpy.count(), 6);
QVERIFY(dv.decimals() == 10.);
@@ -293,13 +296,31 @@ void tst_QDoubleValidator::notifySignals()
QCOMPARE(topSpy.count(), 3);
QCOMPARE(bottomSpy.count(), 3);
QCOMPARE(decSpy.count(), 3);
+ QCOMPARE(changedSpy.count(), 7);
QVERIFY(dv.bottom() == 0.4);
QVERIFY(dv.top() == 0.6);
QVERIFY(dv.decimals() == 100.);
dv.setNotation(QDoubleValidator::StandardNotation);
QCOMPARE(notSpy.count(), 1);
+ QCOMPARE(changedSpy.count(), 8);
QVERIFY(dv.notation() == QDoubleValidator::StandardNotation);
+
+ dv.setRange(dv.bottom(), dv.top(), dv.decimals());
+ QCOMPARE(topSpy.count(), 3);
+ QCOMPARE(bottomSpy.count(), 3);
+ QCOMPARE(decSpy.count(), 3);
+ QCOMPARE(changedSpy.count(), 8);
+
+ dv.setNotation(dv.notation());
+ QCOMPARE(notSpy.count(), 1);
+ QCOMPARE(changedSpy.count(), 8);
+
+ dv.setLocale(QLocale("C"));
+ QCOMPARE(changedSpy.count(), 8);
+
+ dv.setLocale(QLocale("en"));
+ QCOMPARE(changedSpy.count(), 9);
}
void tst_QDoubleValidator::validateIntEquiv_data()
diff --git a/tests/auto/widgets/widgets/qfocusframe/tst_qfocusframe.cpp b/tests/auto/widgets/widgets/qfocusframe/tst_qfocusframe.cpp
index 920e5401c4..ccedb63d1a 100644
--- a/tests/auto/widgets/widgets/qfocusframe/tst_qfocusframe.cpp
+++ b/tests/auto/widgets/widgets/qfocusframe/tst_qfocusframe.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp b/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp
index b80f50bc67..e773607164 100644
--- a/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp
+++ b/tests/auto/widgets/widgets/qfontcombobox/tst_qfontcombobox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp b/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp
index bd919d2c4a..730992da77 100644
--- a/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp
+++ b/tests/auto/widgets/widgets/qgroupbox/tst_qgroupbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qintvalidator/tst_qintvalidator.cpp b/tests/auto/widgets/widgets/qintvalidator/tst_qintvalidator.cpp
index bff3f59c50..6aec414ae6 100644
--- a/tests/auto/widgets/widgets/qintvalidator/tst_qintvalidator.cpp
+++ b/tests/auto/widgets/widgets/qintvalidator/tst_qintvalidator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -214,6 +214,12 @@ void tst_QIntValidator::validateFrench()
QCOMPARE(validator.validate(s, i), QValidator::Intermediate);
validator.fixup(s);
QCOMPARE(s, validator.locale().toString(1000));
+
+ // Confim no fallback to C locale
+ s = QLatin1String("1,000");
+ QCOMPARE(validator.validate(s, i), QValidator::Invalid);
+ validator.setLocale(QLocale::C);
+ QCOMPARE(validator.validate(s, i), QValidator::Acceptable);
}
void tst_QIntValidator::validate()
@@ -231,33 +237,53 @@ void tst_QIntValidator::validate()
void tst_QIntValidator::notifySignals()
{
+ QLocale::setDefault(QLocale("C"));
+
QIntValidator iv(0, 10, 0);
QSignalSpy topSpy(&iv, SIGNAL(topChanged(int)));
QSignalSpy bottomSpy(&iv, SIGNAL(bottomChanged(int)));
+ QSignalSpy changedSpy(&iv, SIGNAL(changed()));
+
iv.setTop(9);
QCOMPARE(topSpy.count(), 1);
+ QCOMPARE(changedSpy.count(), 1);
QVERIFY(iv.top() == 9);
iv.setBottom(1);
QCOMPARE(bottomSpy.count(), 1);
+ QCOMPARE(changedSpy.count(), 2);
QVERIFY(iv.bottom() == 1);
iv.setRange(1, 8);
QCOMPARE(topSpy.count(), 2);
QCOMPARE(bottomSpy.count(), 1);
+ QCOMPARE(changedSpy.count(), 3);
QVERIFY(iv.top() == 8);
QVERIFY(iv.bottom() == 1);
iv.setRange(2, 8);
QCOMPARE(topSpy.count(), 2);
QCOMPARE(bottomSpy.count(), 2);
+ QCOMPARE(changedSpy.count(), 4);
QVERIFY(iv.top() == 8);
QVERIFY(iv.bottom() == 2);
iv.setRange(3, 7);
QCOMPARE(topSpy.count(), 3);
QCOMPARE(bottomSpy.count(), 3);
+ QCOMPARE(changedSpy.count(), 5);
QVERIFY(iv.top() == 7);
QVERIFY(iv.bottom() == 3);
+
+ iv.setRange(3, 7);
+ QCOMPARE(topSpy.count(), 3);
+ QCOMPARE(bottomSpy.count(), 3);
+ QCOMPARE(changedSpy.count(), 5);
+
+ iv.setLocale(QLocale("C"));
+ QCOMPARE(changedSpy.count(), 5);
+
+ iv.setLocale(QLocale("en"));
+ QCOMPARE(changedSpy.count(), 6);
}
QTEST_MAIN(tst_QIntValidator)
diff --git a/tests/auto/widgets/widgets/qlabel/qlabel.pro b/tests/auto/widgets/widgets/qlabel/qlabel.pro
index 3aacb60224..6a5757fb5c 100644
--- a/tests/auto/widgets/widgets/qlabel/qlabel.pro
+++ b/tests/auto/widgets/widgets/qlabel/qlabel.pro
@@ -5,12 +5,5 @@ QT += widgets widgets-private testlib
QT += core-private gui-private
SOURCES += tst_qlabel.cpp
-wince*::DEFINES += SRCDIR=\\\"\\\"
-else:DEFINES += SRCDIR=\\\"$$PWD/\\\"
-wince* {
- addFiles.files = *.png \
- testdata
- addFiles.path = .
- DEPLOYMENT += addFiles
-}
+TESTDATA += testdata/* *.png
diff --git a/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp b/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp
index f4775cae30..6d6b9384b9 100644
--- a/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp
+++ b/tests/auto/widgets/widgets/qlabel/tst_qlabel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -407,12 +407,12 @@ void tst_QLabel::task226479_movieResize()
QMovie *movie = new QMovie( &label );
label.setMovie(movie);
QTest::qWaitForWindowShown(&label);
- movie->setFileName(SRCDIR "red.png");
+ movie->setFileName(QFINDTESTDATA("red.png"));
movie->start();
QTest::qWait(50);
movie->stop();
label.paintedRegion = QRegion();
- movie->setFileName(SRCDIR "green.png");
+ movie->setFileName(QFINDTESTDATA("green.png"));
movie->start();
QTest::qWait(50);
diff --git a/tests/auto/widgets/widgets/qlcdnumber/tst_qlcdnumber.cpp b/tests/auto/widgets/widgets/qlcdnumber/tst_qlcdnumber.cpp
index 5ce4ac3dba..455c8d19e4 100644
--- a/tests/auto/widgets/widgets/qlcdnumber/tst_qlcdnumber.cpp
+++ b/tests/auto/widgets/widgets/qlcdnumber/tst_qlcdnumber.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
index 1fabc45cac..b004efd07c 100644
--- a/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
+++ b/tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -53,7 +53,7 @@
#include "qclipboard.h"
#endif
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
#include <Carbon/Carbon.h> // For the random function.
#include <cstdlib> // For the random function.
#endif
@@ -273,6 +273,7 @@ private slots:
void bidiLogicalMovement();
void selectAndCursorPosition();
+ void inputMethod();
void inputMethodSelection();
void inputMethodTentativeCommit();
@@ -1407,7 +1408,7 @@ void tst_QLineEdit::undo_keypressevents()
#ifndef QT_NO_CLIPBOARD
static bool nativeClipboardWorking()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
PasteboardRef pasteboard;
OSStatus status = PasteboardCreate(0, &pasteboard);
if (status == noErr)
@@ -1810,7 +1811,7 @@ void tst_QLineEdit::isReadOnly()
static void figureOutProperKey(Qt::Key &key, Qt::KeyboardModifiers &pressState)
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
static bool tst_lineedit_randomized = false;
// Mac has 3 different ways of accomplishing this (same for moving to the back)
// So I guess we should just randomly do this for now. Which may get people mad, but if
@@ -2014,14 +2015,14 @@ void tst_QLineEdit::cursorPositionChanged_data()
keys.addKeyClick(Qt::Key_Home);
keys.addKeyClick(Qt::Key_Right, Qt::ControlModifier);
QTest::newRow("abc efg<home><ctrl-right>") << keys
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
<< 0 << 4;
#else
<< 6 << 7;
#endif
keys.clear();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
keys.addKeyClick(Qt::Key_A);
keys.addKeyClick(Qt::Key_B);
keys.addKeyClick(Qt::Key_C);
@@ -2044,13 +2045,13 @@ void tst_QLineEdit::cursorPositionChanged_data()
keys.addKeyClick(Qt::Key_F);
keys.addKeyClick(Qt::Key_Left, Qt::ControlModifier);
QTest::newRow("abc efg<ctrl-left>") << keys << 7
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
<< 4;
#else
<< 0;
#endif
keys.clear();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
keys.addKeyClick(Qt::Key_A);
keys.addKeyClick(Qt::Key_B);
keys.addKeyClick(Qt::Key_C);
@@ -2792,7 +2793,7 @@ void tst_QLineEdit::setSelection()
#ifndef QT_NO_CLIPBOARD
void tst_QLineEdit::cut()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
{
PasteboardRef pasteboard;
OSStatus status = PasteboardCreate(0, &pasteboard);
@@ -3122,7 +3123,7 @@ void tst_QLineEdit::inlineCompletion()
QCOMPARE(testWidget->selectedText(), QString("tem1"));
Qt::KeyboardModifiers keyboardModifiers = Qt::ControlModifier;
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
keyboardModifiers |= Qt::AltModifier;
#endif
QTest::keyClick(testWidget, Qt::Key_Down, keyboardModifiers);
@@ -3805,6 +3806,18 @@ void tst_QLineEdit::selectAndCursorPosition()
QCOMPARE(testWidget->cursorPosition(), 0);
}
+void tst_QLineEdit::inputMethod()
+{
+ // widget accepts input
+ QInputMethodQueryEvent queryEvent(Qt::ImEnabled);
+ QApplication::sendEvent(testWidget, &queryEvent);
+ QCOMPARE(queryEvent.value(Qt::ImEnabled).toBool(), true);
+
+ testWidget->setEnabled(false);
+ QApplication::sendEvent(testWidget, &queryEvent);
+ QCOMPARE(queryEvent.value(Qt::ImEnabled).toBool(), false);
+}
+
void tst_QLineEdit::inputMethodSelection()
{
testWidget->setText("Lorem ipsum dolor sit amet, consectetur adipiscing elit.");
diff --git a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp
index c9c627dffa..33b7ade715 100644
--- a/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp
+++ b/tests/auto/widgets/widgets/qmainwindow/tst_qmainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp b/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp
index 6a6d29cb9a..82632a018c 100644
--- a/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp
+++ b/tests/auto/widgets/widgets/qmdiarea/tst_qmdiarea.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -101,7 +101,7 @@ static bool tabBetweenSubWindowsIn(QMdiArea *mdiArea, int tabCount = -1, bool re
Qt::KeyboardModifiers modifiers = reverse ? Qt::ShiftModifier : Qt::NoModifier;
Qt::Key key;
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
key = Qt::Key_Meta;
modifiers |= Qt::MetaModifier;
#else
@@ -194,7 +194,7 @@ static bool verifyArrangement(QMdiArea *mdiArea, Arrangement arrangement, const
QStyleOptionTitleBar options;
options.initFrom(firstSubWindow);
int titleBarHeight = firstSubWindow->style()->pixelMetric(QStyle::PM_TitleBarHeight, &options);
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
// ### Remove this after the mac style has been fixed
if (qobject_cast<QMacStyle *>(firstSubWindow->style()))
titleBarHeight -= 4;
@@ -444,7 +444,7 @@ void tst_QMdiArea::subWindowActivated()
}
}
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
#include <Security/AuthSession.h>
bool macHasAccessToWindowsServer()
{
@@ -519,7 +519,7 @@ void tst_QMdiArea::subWindowActivated2()
mdiArea.showMinimized();
#ifdef Q_WS_X11
qt_x11_wait_for_window_manager(&mdiArea);
-#elif defined (Q_WS_MAC)
+#elif defined (Q_OS_MAC)
if (!macHasAccessToWindowsServer())
QEXPECT_FAIL("", "showMinimized doesn't really minimize if you don't have access to the server", Abort);
#endif
@@ -657,7 +657,7 @@ void tst_QMdiArea::changeWindowTitle()
#else
widget->setWindowState(Qt::WindowMaximized);
#endif
-#if !defined(Q_WS_MAC) && !defined(Q_OS_WINCE)
+#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE)
QTRY_COMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc).arg(wc) );
#endif
@@ -667,7 +667,7 @@ void tst_QMdiArea::changeWindowTitle()
qApp->processEvents();
QTest::qWaitForWindowShown(mw);
-#if !defined(Q_WS_MAC) && !defined(Q_OS_WINCE)
+#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE)
QTRY_COMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc).arg(wc) );
#endif
@@ -685,7 +685,7 @@ void tst_QMdiArea::changeWindowTitle()
widget->setWindowState(Qt::WindowMaximized);
#endif
qApp->processEvents();
-#if !defined(Q_WS_MAC) && !defined(Q_OS_WINCE)
+#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE)
QTRY_COMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc).arg(wc) );
widget->setWindowTitle( wc2 );
QCOMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc).arg(wc2) );
@@ -703,7 +703,7 @@ void tst_QMdiArea::changeWindowTitle()
#endif
qApp->processEvents();
-#if !defined(Q_WS_MAC) && !defined(Q_OS_WINCE)
+#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE)
QCOMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc2).arg(wc2) );
#endif
#ifdef USE_SHOW
@@ -712,7 +712,7 @@ void tst_QMdiArea::changeWindowTitle()
widget->setWindowState(Qt::WindowNoState);
#endif
qApp->processEvents();
-#if defined(Q_WS_MAC) || defined(Q_OS_WINCE)
+#if defined(Q_OS_MAC) || defined(Q_OS_WINCE)
QCOMPARE(mw->windowTitle(), mwc);
#else
QCOMPARE( mw->windowTitle(), mwc2 );
@@ -724,7 +724,7 @@ void tst_QMdiArea::changeWindowTitle()
widget->setWindowState(Qt::WindowMaximized);
#endif
qApp->processEvents();
-#if !defined(Q_WS_MAC) && !defined(Q_OS_WINCE)
+#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE)
QCOMPARE( mw->windowTitle(), QString::fromLatin1("%1 - [%2]").arg(mwc2).arg(wc2) );
#endif
@@ -773,7 +773,7 @@ void tst_QMdiArea::changeModified()
QCOMPARE( mw->isWindowModified(), false);
QCOMPARE( widget->isWindowModified(), true);
widget->setWindowState(Qt::WindowMaximized);
-#if !defined(Q_WS_MAC) && !defined(Q_OS_WINCE)
+#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE)
QCOMPARE( mw->isWindowModified(), true);
#endif
QCOMPARE( widget->isWindowModified(), true);
@@ -783,7 +783,7 @@ void tst_QMdiArea::changeModified()
QCOMPARE( widget->isWindowModified(), true);
widget->setWindowState(Qt::WindowMaximized);
-#if !defined(Q_WS_MAC) && !defined(Q_OS_WINCE)
+#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE)
QCOMPARE( mw->isWindowModified(), true);
#endif
QCOMPARE( widget->isWindowModified(), true);
@@ -793,7 +793,7 @@ void tst_QMdiArea::changeModified()
QCOMPARE( widget->isWindowModified(), false);
widget->setWindowModified(true);
-#if !defined(Q_WS_MAC) && !defined(Q_OS_WINCE)
+#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE)
QCOMPARE( mw->isWindowModified(), true);
#endif
QCOMPARE( widget->isWindowModified(), true);
@@ -1029,7 +1029,7 @@ void tst_QMdiArea::activeSubWindow()
qApp->setActiveWindow(&mainWindow);
QCOMPARE(mdiArea->activeSubWindow(), subWindow);
-#if !defined(Q_WS_MAC) && !defined(Q_WS_WIN)
+#if !defined(Q_OS_MAC) && !defined(Q_WS_WIN)
qApp->setActiveWindow(0);
QVERIFY(!mdiArea->activeSubWindow());
#endif
@@ -1114,7 +1114,7 @@ void tst_QMdiArea::currentSubWindow()
QVERIFY(mdiArea.activeSubWindow());
QVERIFY(mdiArea.currentSubWindow());
-#if !defined(Q_WS_MAC) && !defined(Q_WS_WIN)
+#if !defined(Q_OS_MAC) && !defined(Q_WS_WIN)
qApp->setActiveWindow(0);
QVERIFY(!mdiArea.activeSubWindow());
QVERIFY(mdiArea.currentSubWindow());
@@ -2042,7 +2042,7 @@ void tst_QMdiArea::delayedPlacement()
void tst_QMdiArea::iconGeometryInMenuBar()
{
-#if !defined (Q_WS_MAC) && !defined(Q_OS_WINCE)
+#if !defined (Q_OS_MAC) && !defined(Q_OS_WINCE)
QMainWindow mainWindow;
QMenuBar *menuBar = mainWindow.menuBar();
QMdiArea *mdiArea = new QMdiArea;
diff --git a/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp b/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp
index b66ffabfcd..53e0a5494a 100644
--- a/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp
+++ b/tests/auto/widgets/widgets/qmdisubwindow/tst_qmdisubwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -59,7 +59,7 @@
#include <QStyleOptionTitleBar>
#include <QPushButton>
#include <QSizeGrip>
-#if defined(Q_WS_MAC) && !defined(QT_NO_STYLE_MAC)
+#if defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC)
#include <QMacStyle>
#endif
@@ -189,7 +189,7 @@ private slots:
void setWindowTitle();
void resizeEvents_data();
void resizeEvents();
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_MAC)
void defaultSizeGrip();
#endif
void hideAndShow();
@@ -197,7 +197,7 @@ private slots:
void explicitlyHiddenWidget();
void resizeTimer();
void fixedMinMaxSize();
-#if !defined (Q_WS_MAC) && !defined (Q_OS_WINCE)
+#if !defined (Q_OS_MAC) && !defined (Q_OS_WINCE)
void replaceMenuBarWhileMaximized();
void closeOnDoubleClick();
#endif
@@ -374,7 +374,7 @@ void tst_QMdiSubWindow::mainWindowSupport()
qApp->setActiveWindow(&mainWindow);
// QMainWindow's window title is empty
-#if !defined(Q_WS_MAC) && !defined(Q_OS_WINCE)
+#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE)
{
QCOMPARE(mainWindow.windowTitle(), QString());
QMdiSubWindow *window = workspace->addSubWindow(new QPushButton(QLatin1String("Test")));
@@ -426,7 +426,7 @@ void tst_QMdiSubWindow::mainWindowSupport()
window->showMaximized();
qApp->processEvents();
QVERIFY(window->isMaximized());
-#if !defined(Q_WS_MAC) && !defined(Q_OS_WINCE)
+#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE)
QVERIFY(window->maximizedButtonsWidget());
QCOMPARE(window->maximizedButtonsWidget(), mainWindow.menuBar()->cornerWidget(Qt::TopRightCorner));
QVERIFY(window->maximizedSystemMenuIconWidget());
@@ -448,13 +448,13 @@ void tst_QMdiSubWindow::mainWindowSupport()
QVERIFY(!nestedWindow->maximizedButtonsWidget());
QVERIFY(!nestedWindow->maximizedSystemMenuIconWidget());
-#if !defined(Q_WS_MAC) && !defined(Q_OS_WINCE)
+#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE)
QCOMPARE(mainWindow.windowTitle(), QString::fromLatin1("%1 - [%2]")
.arg(originalWindowTitle, window->widget()->windowTitle()));
#endif
}
-#if defined(Q_WS_MAC) || defined(Q_OS_WINCE)
+#if defined(Q_OS_MAC) || defined(Q_OS_WINCE)
return;
#endif
@@ -605,7 +605,7 @@ void tst_QMdiSubWindow::showShaded()
int offset = window->style()->pixelMetric(QStyle::PM_MDIFrameWidth) / 2;
QPoint mousePosition(window->width() - qMax(offset, 2), window->height() - qMax(offset, 2));
QWidget *mouseReceiver = 0;
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
if (qobject_cast<QMacStyle*>(window->style()))
mouseReceiver = qFindChild<QSizeGrip *>(window);
else
@@ -789,7 +789,7 @@ void tst_QMdiSubWindow::setOpaqueResizeAndMove()
QStyleOptionTitleBar options;
options.initFrom(window);
int height = window->style()->pixelMetric(QStyle::PM_TitleBarHeight, &options);
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_MAC)
// ### Remove this after mac style has been fixed
height -= 4;
#endif
@@ -1039,7 +1039,7 @@ void tst_QMdiSubWindow::setSystemMenu()
systemMenu->hide();
QVERIFY(!qApp->activePopupWidget());
-#if !defined (Q_WS_MAC) && !defined (Q_OS_WINCE)
+#if !defined (Q_OS_MAC) && !defined (Q_OS_WINCE)
// System menu in menu bar.
subWindow->showMaximized();
QVERIFY(subWindow->isMaximized());
@@ -1072,7 +1072,7 @@ void tst_QMdiSubWindow::setSystemMenu()
systemMenu->hide();
QVERIFY(!qApp->activePopupWidget());
-#if !defined (Q_WS_MAC) && !defined (Q_OS_WINCE)
+#if !defined (Q_OS_MAC) && !defined (Q_OS_WINCE)
// System menu in menu bar in reverse mode.
subWindow->showMaximized();
QVERIFY(subWindow->isMaximized());
@@ -1422,7 +1422,7 @@ void tst_QMdiSubWindow::resizeEvents()
QCOMPARE(widgetResizeEventSpy.count(), expectedWidgetResizeEvents);
}
-#if defined(Q_WS_MAC)
+#if defined(Q_OS_MAC)
void tst_QMdiSubWindow::defaultSizeGrip()
{
if (!qApp->style()->inherits("QMacStyle"))
@@ -1463,7 +1463,7 @@ void tst_QMdiSubWindow::hideAndShow()
QVERIFY(!menuBar->cornerWidget(Qt::TopRightCorner));
QMdiSubWindow *subWindow = mdiArea->addSubWindow(new QTextEdit);
subWindow->showMaximized();
-#if !defined (Q_WS_MAC) && !defined (Q_OS_WINCE)
+#if !defined (Q_OS_MAC) && !defined (Q_OS_WINCE)
QVERIFY(menuBar->cornerWidget(Qt::TopRightCorner));
QCOMPARE(menuBar->cornerWidget(Qt::TopRightCorner), subWindow->maximizedButtonsWidget());
#endif
@@ -1478,7 +1478,7 @@ void tst_QMdiSubWindow::hideAndShow()
// Show QMdiArea.
tabWidget->setCurrentIndex(0);
-#if !defined (Q_WS_MAC) && !defined (Q_OS_WINCE)
+#if !defined (Q_OS_MAC) && !defined (Q_OS_WINCE)
QVERIFY(menuBar->cornerWidget(Qt::TopRightCorner));
QVERIFY(subWindow->maximizedButtonsWidget());
QVERIFY(subWindow->maximizedSystemMenuIconWidget());
@@ -1500,7 +1500,7 @@ void tst_QMdiSubWindow::hideAndShow()
QVERIFY(subWindow);
QCOMPARE(mdiArea->activeSubWindow(), subWindow);
-#if !defined (Q_WS_MAC) && !defined (Q_OS_WINCE)
+#if !defined (Q_OS_MAC) && !defined (Q_OS_WINCE)
QVERIFY(menuBar->cornerWidget(Qt::TopRightCorner));
QVERIFY(subWindow->maximizedButtonsWidget());
QVERIFY(subWindow->maximizedSystemMenuIconWidget());
@@ -1515,7 +1515,7 @@ void tst_QMdiSubWindow::hideAndShow()
QCOMPARE(window->size(), window->sizeHint());
subWindow->showMaximized();
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
QCOMPARE(menuBar->cornerWidget(Qt::TopRightCorner), subWindow->maximizedButtonsWidget());
#endif
@@ -1525,7 +1525,7 @@ void tst_QMdiSubWindow::hideAndShow()
QVERIFY(!menuBar->cornerWidget(Qt::TopRightCorner));
subWindow->show();
-#if !defined (Q_WS_MAC) && !defined (Q_OS_WINCE)
+#if !defined (Q_OS_MAC) && !defined (Q_OS_WINCE)
QVERIFY(subWindow->maximizedButtonsWidget());
QVERIFY(subWindow->maximizedSystemMenuIconWidget());
QCOMPARE(menuBar->cornerWidget(Qt::TopRightCorner), subWindow->maximizedButtonsWidget());
@@ -1539,7 +1539,7 @@ void tst_QMdiSubWindow::hideAndShow()
// Show QMainWindow.
mainWindow.show();
-#if !defined (Q_WS_MAC) && !defined (Q_OS_WINCE)
+#if !defined (Q_OS_MAC) && !defined (Q_OS_WINCE)
QVERIFY(subWindow->maximizedButtonsWidget());
QVERIFY(subWindow->maximizedSystemMenuIconWidget());
QCOMPARE(menuBar->cornerWidget(Qt::TopRightCorner), subWindow->maximizedButtonsWidget());
@@ -1686,7 +1686,7 @@ void tst_QMdiSubWindow::fixedMinMaxSize()
QStyleOptionTitleBar options;
options.initFrom(subWindow);
int minimizedHeight = subWindow->style()->pixelMetric(QStyle::PM_TitleBarHeight, &options);
-#if defined(Q_WS_MAC) && !defined(QT_NO_STYLE_MAC)
+#if defined(Q_OS_MAC) && !defined(QT_NO_STYLE_MAC)
// ### Remove this after mac style has been fixed
if (qobject_cast<QMacStyle *>(subWindow->style()))
minimizedHeight -= 4;
@@ -1720,7 +1720,7 @@ void tst_QMdiSubWindow::fixedMinMaxSize()
QCOMPARE(subWindow->size(), minimumSize);
}
-#if !defined( Q_WS_MAC) && !defined( Q_OS_WINCE)
+#if !defined( Q_OS_MAC) && !defined( Q_OS_WINCE)
void tst_QMdiSubWindow::replaceMenuBarWhileMaximized()
{
@@ -1894,7 +1894,7 @@ void tst_QMdiSubWindow::mdiArea()
void tst_QMdiSubWindow::task_182852()
{
-#if !defined(Q_WS_MAC) && !defined(Q_OS_WINCE)
+#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE)
QMdiArea *workspace = new QMdiArea;
QMainWindow mainWindow;
diff --git a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
index 924c134736..4fffd74491 100644
--- a/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
+++ b/tests/auto/widgets/widgets/qmenu/tst_qmenu.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -352,8 +352,13 @@ void tst_QMenu::keyboardNavigation()
QTest::keyClick(lastMenu, key, modifiers);
if (expected_activated) {
+#ifdef Q_OS_MAC
+ QEXPECT_FAIL("shortcut0", "Shortcut navication fails, see QTBUG-23684", Continue);
+#endif
QCOMPARE(activated, builtins[expected_action]);
+#ifndef Q_OS_MAC
QEXPECT_FAIL("shortcut0", "QTBUG-22449: QMenu doesn't remove highlight if a menu item is activated by a shortcut", Abort);
+#endif
QCOMPARE(menus[expected_menu]->activeAction(), (QAction *)0);
} else {
QCOMPARE(menus[expected_menu]->activeAction(), builtins[expected_action]);
@@ -365,7 +370,7 @@ void tst_QMenu::keyboardNavigation()
QCOMPARE(highlighted, (QAction *)0);
}
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QT_BEGIN_NAMESPACE
extern bool qt_tab_all_widgets; // from qapplication.cpp
QT_END_NAMESPACE
@@ -378,7 +383,7 @@ void tst_QMenu::focus()
menu.addAction("Two");
menu.addAction("Three");
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
if (!qt_tab_all_widgets)
QSKIP("Computer is currently set up to NOT tab to all widgets,"
" this test assumes you can tab to all widgets");
@@ -418,7 +423,7 @@ void tst_QMenu::overrideMenuAction()
// On Mac and Windows CE, we need to create native key events to test menu
// action activation, so skip this part of the test.
-#if !defined(Q_WS_MAC) && !defined(Q_OS_WINCE)
+#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE)
QAction *aQuit = new QAction("Quit", &w);
aQuit->setShortcut(QKeySequence("Ctrl+X"));
m->addAction(aQuit);
@@ -557,7 +562,9 @@ void tst_QMenu::tearOff()
QTest::mouseClick(menu, Qt::LeftButton, 0, QPoint(3, 3), 10);
QTest::qWait(100);
+#ifndef Q_OS_MAC
QEXPECT_FAIL("", "QTBUG-22565", Abort);
+#endif
QVERIFY(menu->isTearOffMenuVisible());
QPointer<QMenu> torn = 0;
foreach (QWidget *w, QApplication::allWidgets()) {
@@ -935,6 +942,10 @@ private:
void tst_QMenu::QTBUG_10735_crashWithDialog()
{
+#ifdef Q_OS_MAC
+ QSKIP("Test currently hangs on Mac OS X, see QTBUG-23677");
+#endif
+
MyMenu menu;
QTimer::singleShot(1000, &menu, SLOT(activateLastAction()));
diff --git a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
index 05ab9d014a..9989e5e7aa 100644
--- a/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
+++ b/tests/auto/widgets/widgets/qmenubar/tst_qmenubar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -330,7 +330,7 @@ void tst_QMenuBar::onActivated( QAction* action )
void tst_QMenuBar::accel()
{
-#if defined(Q_WS_MAC) || defined(Q_OS_WINCE_WM)
+#if defined(Q_OS_MAC) || defined(Q_OS_WINCE_WM)
QSKIP("On Mac/WinCE, native key events are needed to test menu action activation");
#endif
@@ -348,7 +348,7 @@ void tst_QMenuBar::accel()
void tst_QMenuBar::activatedCount()
{
-#if defined(Q_WS_MAC) || defined(Q_OS_WINCE_WM)
+#if defined(Q_OS_MAC) || defined(Q_OS_WINCE_WM)
QSKIP("On Mac/WinCE, native key events are needed to test menu action activation");
#endif
// create a popup menu with menu items set the accelerators later...
@@ -562,7 +562,7 @@ void tst_QMenuBar::insertItem_QString_QObject()
void tst_QMenuBar::check_accelKeys()
{
-#if defined(Q_WS_MAC) || defined(Q_OS_WINCE_WM)
+#if defined(Q_OS_MAC) || defined(Q_OS_WINCE_WM)
QSKIP("On Mac/WinCE, native key events are needed to test menu action activation");
#endif
initComplexMenubar();
@@ -631,7 +631,7 @@ void tst_QMenuBar::check_accelKeys()
void tst_QMenuBar::check_cursorKeys1()
{
-#if defined(Q_WS_MAC) || defined(Q_OS_WINCE_WM)
+#if defined(Q_OS_MAC) || defined(Q_OS_WINCE_WM)
QSKIP("Qt/Mac,WinCE does not use the native popups/menubar");
#endif
@@ -662,7 +662,7 @@ void tst_QMenuBar::check_cursorKeys1()
void tst_QMenuBar::check_cursorKeys2()
{
-#if defined(Q_WS_MAC) || defined(Q_OS_WINCE_WM)
+#if defined(Q_OS_MAC) || defined(Q_OS_WINCE_WM)
QSKIP("Qt/Mac,WinCE does not use the native popups/menubar");
#endif
@@ -692,7 +692,7 @@ void tst_QMenuBar::check_cursorKeys2()
*/
void tst_QMenuBar::check_cursorKeys3()
{
-#if defined(Q_WS_MAC) || defined(Q_OS_WINCE_WM)
+#if defined(Q_OS_MAC) || defined(Q_OS_WINCE_WM)
QSKIP("Qt/Mac,WinCE does not use the native popups/menubar");
#endif
@@ -796,7 +796,7 @@ void tst_QMenuBar::check_endKey()
void tst_QMenuBar::check_escKey()
{
-#if defined(Q_WS_MAC) || defined(Q_OS_WINCE_WM)
+#if defined(Q_OS_MAC) || defined(Q_OS_WINCE_WM)
QSKIP("Qt/Mac,WinCE does not use the native popups/menubar");
#endif
@@ -939,7 +939,7 @@ void tst_QMenuBar::check_escKey()
void
tst_QMenuBar::allowActiveAndDisabled()
{
-#if !defined(Q_WS_MAC) && !defined(Q_OS_WINCE_WM)
+#if !defined(Q_OS_MAC) && !defined(Q_OS_WINCE_WM)
mb->hide();
mb->clear();
@@ -977,7 +977,7 @@ tst_QMenuBar::allowActiveAndDisabled()
QCOMPARE(mb->activeAction()->text(), fileMenu.title());
mb->hide();
-#endif //Q_WS_MAC
+#endif //Q_OS_MAC
}
void tst_QMenuBar::check_altPress()
@@ -999,7 +999,7 @@ void tst_QMenuBar::check_altPress()
void tst_QMenuBar::check_shortcutPress()
{
-#if defined(Q_WS_MAC) || defined(Q_OS_WINCE_WM)
+#if defined(Q_OS_MAC) || defined(Q_OS_WINCE_WM)
QSKIP("Qt/Mac,WinCE does not use the native popups/menubar");
#endif
@@ -1020,7 +1020,7 @@ void tst_QMenuBar::check_shortcutPress()
void tst_QMenuBar::check_menuPosition()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QSKIP("Qt/Mac does not use the native popups/menubar");
#endif
#ifdef Q_OS_WINCE_WM
@@ -1234,7 +1234,7 @@ void tst_QMenuBar::menubarSizeHint()
void tst_QMenuBar::taskQTBUG4965_escapeEaten()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QSKIP("On Mac, do not test the menubar with escape key");
#endif
QMenuBar menubar;
diff --git a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
index bfd7050df1..1b483512e3 100644
--- a/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
+++ b/tests/auto/widgets/widgets/qplaintextedit/tst_qplaintextedit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -66,7 +66,7 @@ Q_DECLARE_METATYPE(pairListType);
Q_DECLARE_METATYPE(keyPairType);
Q_DECLARE_METATYPE(QList<bool>);
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
#include <Carbon/Carbon.h>
#endif
@@ -161,7 +161,7 @@ private:
bool tst_QPlainTextEdit::nativeClipboardWorking()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
PasteboardRef pasteboard;
OSStatus status = PasteboardCreate(0, &pasteboard);
if (status == noErr)
@@ -286,14 +286,14 @@ void tst_QPlainTextEdit::createSelection()
{
QTest::keyClicks(ed, "Hello World");
/* go to start */
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
QTest::keyClick(ed, Qt::Key_Home, Qt::ControlModifier);
#else
QTest::keyClick(ed, Qt::Key_Home);
#endif
QCOMPARE(ed->textCursor().position(), 0);
/* select until end of text */
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
QTest::keyClick(ed, Qt::Key_End, Qt::ControlModifier | Qt::ShiftModifier);
#else
QTest::keyClick(ed, Qt::Key_End, Qt::ShiftModifier);
@@ -1008,7 +1008,7 @@ void tst_QPlainTextEdit::copyAvailable()
QFETCH(QList<bool>, copyAvailable);
QFETCH(QString, function);
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QSKIP("QTBUG-22283: copyAvailable has never passed on Mac");
#endif
ed->clear();
diff --git a/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp b/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp
index 97ccf60d27..89f2508a05 100644
--- a/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp
+++ b/tests/auto/widgets/widgets/qprogressbar/tst_qprogressbar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -176,7 +176,7 @@ void tst_QProgressBar::format()
bar.setFormat("%v of %m (%p%)");
qApp->processEvents();
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
// Animated scroll bars get paint events all the time
#ifdef Q_OS_WIN
if (QSysInfo::WindowsVersion < QSysInfo::WV_VISTA)
diff --git a/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp b/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp
index 2f290cb4f1..1c06197d11 100644
--- a/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp
+++ b/tests/auto/widgets/widgets/qpushbutton/tst_qpushbutton.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -599,6 +599,11 @@ void tst_QPushButton::sizeHint()
{
QFETCH(QString, stylename);
+#ifdef Q_OS_MAC
+ if (stylename == "mac")
+ QSKIP("QStyleFactory cannot create the Mac style, see QTBUG-23680");
+#endif
+
QStyle *style = QStyleFactory::create(stylename);
if (!style)
QFAIL(qPrintable(QString::fromLatin1("Cannot create style: %1").arg(stylename)));
diff --git a/tests/auto/widgets/widgets/qradiobutton/tst_qradiobutton.cpp b/tests/auto/widgets/widgets/qradiobutton/tst_qradiobutton.cpp
index 19a5b62277..a45b22c134 100644
--- a/tests/auto/widgets/widgets/qradiobutton/tst_qradiobutton.cpp
+++ b/tests/auto/widgets/widgets/qradiobutton/tst_qradiobutton.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qregexpvalidator/tst_qregexpvalidator.cpp b/tests/auto/widgets/widgets/qregexpvalidator/tst_qregexpvalidator.cpp
index 2bc04d74c0..fca8acd920 100644
--- a/tests/auto/widgets/widgets/qregexpvalidator/tst_qregexpvalidator.cpp
+++ b/tests/auto/widgets/widgets/qregexpvalidator/tst_qregexpvalidator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -113,11 +113,13 @@ void tst_QRegExpValidator::validate()
QRegExpValidator rv( 0 );
QSignalSpy spy(&rv, SIGNAL(regExpChanged(const QRegExp&)));
+ QSignalSpy changedSpy(&rv, SIGNAL(changed()));
rv.setRegExp( QRegExp( rx ) );
int dummy;
QCOMPARE( (int)rv.validate( value, dummy ), state );
QCOMPARE(spy.count(), 1);
+ QCOMPARE(changedSpy.count(), 1);
}
QTEST_MAIN(tst_QRegExpValidator)
diff --git a/tests/auto/widgets/widgets/qscrollarea/tst_qscrollarea.cpp b/tests/auto/widgets/widgets/qscrollarea/tst_qscrollarea.cpp
index dbf8c9052e..c56b39296e 100644
--- a/tests/auto/widgets/widgets/qscrollarea/tst_qscrollarea.cpp
+++ b/tests/auto/widgets/widgets/qscrollarea/tst_qscrollarea.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp b/tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp
index 65b46c1c0c..688daf1f8a 100644
--- a/tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp
+++ b/tests/auto/widgets/widgets/qscrollbar/tst_qscrollbar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -136,7 +136,7 @@ void tst_QScrollBar::task_209492()
QApplication::sendEvent(verticalScrollBar, &mouseReleaseEvent);
// Check that the action was triggered once.
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QEXPECT_FAIL("", "Fix does does not work on Mac due to paint architechure differences.", Abort);
#endif
QCOMPARE(scrollArea.scrollCount, 1);
diff --git a/tests/auto/widgets/widgets/qsizegrip/qsizegrip.pro b/tests/auto/widgets/widgets/qsizegrip/qsizegrip.pro
index 995fb15af4..98cf169730 100644
--- a/tests/auto/widgets/widgets/qsizegrip/qsizegrip.pro
+++ b/tests/auto/widgets/widgets/qsizegrip/qsizegrip.pro
@@ -4,4 +4,4 @@ INCLUDEPATH += .
QT += widgets testlib
SOURCES += tst_qsizegrip.cpp
-
+mac: CONFIG += insignificant_test # failures on mac, QTBUG-23681
diff --git a/tests/auto/widgets/widgets/qsizegrip/tst_qsizegrip.cpp b/tests/auto/widgets/widgets/qsizegrip/tst_qsizegrip.cpp
index 5e37e21949..4c5df04188 100644
--- a/tests/auto/widgets/widgets/qsizegrip/tst_qsizegrip.cpp
+++ b/tests/auto/widgets/widgets/qsizegrip/tst_qsizegrip.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -137,7 +137,7 @@ void tst_QSizeGrip::hideAndShowOnWindowStateChange()
QVERIFY(sizeGrip->isVisible());
widget->showMaximized();
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
QVERIFY(!sizeGrip->isVisible());
#else
QVERIFY(sizeGrip->isVisible());
diff --git a/tests/auto/widgets/widgets/qslider/tst_qslider.cpp b/tests/auto/widgets/widgets/qslider/tst_qslider.cpp
index 09cc51c113..adc34fb21c 100644
--- a/tests/auto/widgets/widgets/qslider/tst_qslider.cpp
+++ b/tests/auto/widgets/widgets/qslider/tst_qslider.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp b/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp
index cc01642fc1..c3d982388d 100644
--- a/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp
+++ b/tests/auto/widgets/widgets/qspinbox/tst_qspinbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -378,7 +378,7 @@ void tst_QSpinBox::setTracking_data()
QStringList texts1;
QStringList texts2;
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
keys.addKeyClick(Qt::Key_Right, Qt::ControlModifier);
#else
keys.addKeyClick(Qt::Key_End);
@@ -824,13 +824,13 @@ void tst_QSpinBox::removeAll()
spin.setSuffix("bar");
spin.setValue(2);
spin.show();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(&spin, Qt::Key_Left, Qt::ControlModifier);
#else
QTest::keyClick(&spin, Qt::Key_Home);
#endif
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(&spin, Qt::Key_Right, Qt::ControlModifier|Qt::ShiftModifier);
#else
QTest::keyClick(&spin, Qt::Key_End, Qt::ShiftModifier);
@@ -845,7 +845,7 @@ void tst_QSpinBox::startWithDash()
{
SpinBox spin(0);
spin.show();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QTest::keyClick(&spin, Qt::Key_Left, Qt::ControlModifier);
#else
QTest::keyClick(&spin, Qt::Key_Home);
diff --git a/tests/auto/widgets/widgets/qsplitter/qsplitter.pro b/tests/auto/widgets/widgets/qsplitter/qsplitter.pro
index 79015269ef..8ae745ea9d 100644
--- a/tests/auto/widgets/widgets/qsplitter/qsplitter.pro
+++ b/tests/auto/widgets/widgets/qsplitter/qsplitter.pro
@@ -3,11 +3,4 @@ TARGET = tst_qsplitter
QT += widgets testlib
SOURCES += tst_qsplitter.cpp
-wince* {
- addFiles.files = extradata.txt setSizes3.dat
- addFiles.path = .
- DEPLOYMENT += addFiles
- DEFINES += SRCDIR=\\\"./\\\"
-} else {
- DEFINES += SRCDIR=\\\"$$PWD/\\\"
-}
+TESTDATA += extradata.txt setSizes3.dat
diff --git a/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp b/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp
index 2af62ceea0..048f1441a2 100644
--- a/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp
+++ b/tests/auto/widgets/widgets/qsplitter/tst_qsplitter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -198,7 +198,7 @@ void tst_QSplitter::setSizes_data()
QTest::addColumn<IntList>("collapsibleStates");
QTest::addColumn<bool>("childrenCollapse");
- QFile file(SRCDIR "setSizes3.dat");
+ QFile file(QFINDTESTDATA("setSizes3.dat"));
if (!file.open(QIODevice::ReadOnly)) {
qDebug() << "Can't open file, reason:" << file.errorString();
return;
diff --git a/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp b/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp
index 94ac78e038..6c967b48d0 100644
--- a/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp
+++ b/tests/auto/widgets/widgets/qstackedwidget/tst_qstackedwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp b/tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp
index 86f97d18d3..081e817727 100644
--- a/tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp
+++ b/tests/auto/widgets/widgets/qstatusbar/tst_qstatusbar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -261,7 +261,7 @@ void tst_QStatusBar::QTBUG4334_hiddenOnMaximizedWindow()
main.setStatusBar(&statusbar);
main.showMaximized();
QTest::qWaitForWindowShown(&main);
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
QVERIFY(!statusbar.findChild<QSizeGrip*>()->isVisible());
#endif
main.showNormal();
diff --git a/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp b/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp
index 2bea17f56f..0757dd9ba4 100644
--- a/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp
+++ b/tests/auto/widgets/widgets/qtabbar/tst_qtabbar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp b/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp
index a4d2739186..ed644ea033 100644
--- a/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp
+++ b/tests/auto/widgets/widgets/qtabwidget/tst_qtabwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -579,7 +579,7 @@ void tst_QTabWidget::paintEventCount()
4;
#elif defined(Q_WS_WIN)
2;
-#elif defined(Q_WS_MAC)
+#elif defined(Q_OS_MAC)
5;
#else
2;
diff --git a/tests/auto/widgets/widgets/qtextbrowser.html b/tests/auto/widgets/widgets/qtextbrowser/qtextbrowser.html
index 95593cc925..95593cc925 100644
--- a/tests/auto/widgets/widgets/qtextbrowser.html
+++ b/tests/auto/widgets/widgets/qtextbrowser/qtextbrowser.html
diff --git a/tests/auto/widgets/widgets/qtextbrowser/qtextbrowser.pro b/tests/auto/widgets/widgets/qtextbrowser/qtextbrowser.pro
index 24185b1136..5416c1c71f 100644
--- a/tests/auto/widgets/widgets/qtextbrowser/qtextbrowser.pro
+++ b/tests/auto/widgets/widgets/qtextbrowser/qtextbrowser.pro
@@ -1,14 +1,7 @@
CONFIG += testcase
TARGET = tst_qtextbrowser
SOURCES += tst_qtextbrowser.cpp
-DEFINES += SRCDIR=\\\"$$PWD\\\"
QT += widgets testlib
-wince* {
- addFiles.files = *.html
- addFiles.path = .
- addDir.files = subdir/*
- addDir.path = subdir
- DEPLOYMENT += addFiles addDir
-}
+TESTDATA += *.html subdir/*
diff --git a/tests/auto/widgets/widgets/qtextbrowser/tst_qtextbrowser.cpp b/tests/auto/widgets/widgets/qtextbrowser/tst_qtextbrowser.cpp
index 6370c1ce51..c78989ebcb 100644
--- a/tests/auto/widgets/widgets/qtextbrowser/tst_qtextbrowser.cpp
+++ b/tests/auto/widgets/widgets/qtextbrowser/tst_qtextbrowser.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -120,11 +120,13 @@ tst_QTextBrowser::tst_QTextBrowser()
tst_QTextBrowser::~tst_QTextBrowser()
{
}
+
void tst_QTextBrowser::init()
{
-#if !defined(Q_OS_IRIX) && !defined(Q_OS_WINCE)
- QDir::setCurrent(SRCDIR);
-#endif
+ QString prefix = QFileInfo(QFINDTESTDATA("subdir")).absolutePath();
+ QVERIFY2(!prefix.isEmpty(), "Test data directory not found");
+ QDir::setCurrent(prefix);
+
browser = new TestBrowser;
browser->show();
}
@@ -252,18 +254,18 @@ void tst_QTextBrowser::relativeLinks()
qRegisterMetaType<QUrl>("QUrl");
QSignalSpy sourceChangedSpy(browser, SIGNAL(sourceChanged(const QUrl &)));
- browser->setSource(QUrl("../qtextbrowser.html"));
+ browser->setSource(QUrl("subdir/../qtextbrowser.html"));
QVERIFY(!browser->document()->isEmpty());
QVERIFY(sourceChangedSpy.count() == 1);
- QCOMPARE(sourceChangedSpy.takeFirst()[0].toUrl(), QUrl("../qtextbrowser.html"));
- browser->setSource(QUrl("qtextbrowser/subdir/index.html"));
+ QCOMPARE(sourceChangedSpy.takeFirst()[0].toUrl(), QUrl("subdir/../qtextbrowser.html"));
+ browser->setSource(QUrl("subdir/index.html"));
QVERIFY(!browser->document()->isEmpty());
QVERIFY(sourceChangedSpy.count() == 1);
- QCOMPARE(sourceChangedSpy.takeFirst()[0].toUrl(), QUrl("qtextbrowser/subdir/index.html"));
- browser->setSource(QUrl("../anchor.html"));
+ QCOMPARE(sourceChangedSpy.takeFirst()[0].toUrl(), QUrl("subdir/index.html"));
+ browser->setSource(QUrl("anchor.html"));
QVERIFY(!browser->document()->isEmpty());
QVERIFY(sourceChangedSpy.count() == 1);
- QCOMPARE(sourceChangedSpy.takeFirst()[0].toUrl(), QUrl("../anchor.html"));
+ QCOMPARE(sourceChangedSpy.takeFirst()[0].toUrl(), QUrl("anchor.html"));
browser->setSource(QUrl("subdir/index.html"));
QVERIFY(!browser->document()->isEmpty());
QVERIFY(sourceChangedSpy.count() == 1);
@@ -274,10 +276,10 @@ void tst_QTextBrowser::relativeLinks()
QVERIFY(!browser->document()->isEmpty());
QVERIFY(sourceChangedSpy.count() == 1);
QCOMPARE(sourceChangedSpy.takeFirst()[0].toUrl(), QUrl("file:anchor.html"));
- browser->setSource(QUrl("../qtextbrowser.html"));
+ browser->setSource(QUrl("subdir/../qtextbrowser.html"));
QVERIFY(!browser->document()->isEmpty());
QVERIFY(sourceChangedSpy.count() == 1);
- QCOMPARE(sourceChangedSpy.takeFirst()[0].toUrl(), QUrl("../qtextbrowser.html"));
+ QCOMPARE(sourceChangedSpy.takeFirst()[0].toUrl(), QUrl("subdir/../qtextbrowser.html"));
}
void tst_QTextBrowser::anchors()
diff --git a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
index a350f4d862..47eb3a59a3 100644
--- a/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
+++ b/tests/auto/widgets/widgets/qtextedit/tst_qtextedit.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -70,13 +70,13 @@ Q_DECLARE_METATYPE(keyPairType);
Q_DECLARE_METATYPE(QList<bool>);
Q_DECLARE_METATYPE(QList<int>);
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
#include <Carbon/Carbon.h>
#endif
bool nativeClipboardWorking()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
PasteboardRef pasteboard;
OSStatus status = PasteboardCreate(0, &pasteboard);
if (status == noErr)
@@ -215,7 +215,7 @@ private:
bool tst_QTextEdit::nativeClipboardWorking()
{
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
PasteboardRef pasteboard;
OSStatus status = PasteboardCreate(0, &pasteboard);
if (status == noErr)
@@ -475,14 +475,14 @@ void tst_QTextEdit::createSelection()
{
QTest::keyClicks(ed, "Hello World");
/* go to start */
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
QTest::keyClick(ed, Qt::Key_Home, Qt::ControlModifier);
#else
QTest::keyClick(ed, Qt::Key_Home);
#endif
QCOMPARE(ed->textCursor().position(), 0);
/* select until end of text */
-#ifndef Q_WS_MAC
+#ifndef Q_OS_MAC
QTest::keyClick(ed, Qt::Key_End, Qt::ControlModifier | Qt::ShiftModifier);
#else
QTest::keyClick(ed, Qt::Key_End, Qt::ShiftModifier);
@@ -1355,7 +1355,7 @@ void tst_QTextEdit::copyAvailable()
QFETCH(QList<bool>, copyAvailable);
QFETCH(QString, function);
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QSKIP("QTBUG-22283: copyAvailable has never passed on Mac");
#endif
ed->clear();
@@ -2407,11 +2407,16 @@ void tst_QTextEdit::inputMethodQuery()
ed->setText(text);
ed->selectAll();
- QInputMethodQueryEvent event(Qt::ImQueryInput);
+ QInputMethodQueryEvent event(Qt::ImQueryInput | Qt::ImEnabled);
QGuiApplication::sendEvent(ed, &event);
int anchor = event.value(Qt::ImAnchorPosition).toInt();
int position = event.value(Qt::ImCursorPosition).toInt();
QCOMPARE(qAbs(position - anchor), text.length());
+ QCOMPARE(event.value(Qt::ImEnabled).toBool(), true);
+
+ ed->setEnabled(false);
+ QGuiApplication::sendEvent(ed, &event);
+ QCOMPARE(event.value(Qt::ImEnabled).toBool(), false);
}
QTEST_MAIN(tst_QTextEdit)
diff --git a/tests/auto/widgets/widgets/qtoolbar/tst_qtoolbar.cpp b/tests/auto/widgets/widgets/qtoolbar/tst_qtoolbar.cpp
index e029f66cf2..f4fb6a9bcd 100644
--- a/tests/auto/widgets/widgets/qtoolbar/tst_qtoolbar.cpp
+++ b/tests/auto/widgets/widgets/qtoolbar/tst_qtoolbar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -1018,10 +1018,15 @@ void tst_QToolBar::widgetAction()
delete a;
}
+#ifdef Q_OS_MAC
+QT_BEGIN_NAMESPACE
+extern void qt_set_sequence_auto_mnemonic(bool b);
+QT_END_NAMESPACE
+#endif
+
void tst_QToolBar::accel()
{
-#ifdef Q_WS_MAC
- extern void qt_set_sequence_auto_mnemonic(bool b);
+#ifdef Q_OS_MAC
qt_set_sequence_auto_mnemonic(true);
#endif
QMainWindow mw;
@@ -1040,7 +1045,7 @@ void tst_QToolBar::accel()
QTest::qWait(300);
QTRY_COMPARE(spy.count(), 1);
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
qt_set_sequence_auto_mnemonic(false);
#endif
}
diff --git a/tests/auto/widgets/widgets/qtoolbox/tst_qtoolbox.cpp b/tests/auto/widgets/widgets/qtoolbox/tst_qtoolbox.cpp
index 10d476f662..6fcb38fe50 100644
--- a/tests/auto/widgets/widgets/qtoolbox/tst_qtoolbox.cpp
+++ b/tests/auto/widgets/widgets/qtoolbox/tst_qtoolbox.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp b/tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp
index 8eef254837..48b68d1795 100644
--- a/tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp
+++ b/tests/auto/widgets/widgets/qtoolbutton/tst_qtoolbutton.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/widgets/widgets/qworkspace/tst_qworkspace.cpp b/tests/auto/widgets/widgets/qworkspace/tst_qworkspace.cpp
index 8410a183cb..582f56da17 100644
--- a/tests/auto/widgets/widgets/qworkspace/tst_qworkspace.cpp
+++ b/tests/auto/widgets/widgets/qworkspace/tst_qworkspace.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -230,7 +230,7 @@ void tst_QWorkspace::windowActivated()
workspace->addWindow(widget);
widget->showMaximized();
qApp->sendPostedEvents();
-#ifdef Q_WS_MAC
+#ifdef Q_OS_MAC
QEXPECT_FAIL("", "This test has never passed on Mac. QWorkspace is obsoleted -> won't fix", Abort);
#endif
QCOMPARE(spy.count(), 0);
diff --git a/tests/auto/xml/dom/qdom/qdom.pro b/tests/auto/xml/dom/qdom/qdom.pro
index 11f5f66152..db19a8ba89 100644
--- a/tests/auto/xml/dom/qdom/qdom.pro
+++ b/tests/auto/xml/dom/qdom/qdom.pro
@@ -6,15 +6,8 @@ QT = core xml testlib
QT -= gui
wince* {
- addFiles.files = testdata doubleNamespaces.xml umlaut.xml
- addFiles.path = .
- DEPLOYMENT += addFiles
-
wince*|qt_not_deployed {
DEPLOYMENT_PLUGIN += qcncodecs qjpcodecs qkrcodecs qtwcodecs
}
- DEFINES += SRCDIR=\\\"\\\"
-}
-else {
- DEFINES += SRCDIR=\\\"$$PWD/\\\"
}
+TESTDATA += testdata/* doubleNamespaces.xml umlaut.xml
diff --git a/tests/auto/xml/dom/qdom/tst_qdom.cpp b/tests/auto/xml/dom/qdom/tst_qdom.cpp
index b5dc2e6081..f9570f7631 100644
--- a/tests/auto/xml/dom/qdom/tst_qdom.cpp
+++ b/tests/auto/xml/dom/qdom/tst_qdom.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -290,18 +290,20 @@ void tst_QDom::setContent()
void tst_QDom::toString_01_data()
{
QTest::addColumn<QString>("fileName");
+ const QString prefix = QFINDTESTDATA("testdata/toString_01");
+ if (prefix.isEmpty())
+ QFAIL("Cannot find testdata directory!");
+ QTest::newRow( "01" ) << QString(prefix + "/doc01.xml");
+ QTest::newRow( "02" ) << QString(prefix + "/doc02.xml");
+ QTest::newRow( "03" ) << QString(prefix + "/doc03.xml");
+ QTest::newRow( "04" ) << QString(prefix + "/doc04.xml");
+ QTest::newRow( "05" ) << QString(prefix + "/doc05.xml");
- QTest::newRow( "01" ) << QString(SRCDIR "testdata/toString_01/doc01.xml");
- QTest::newRow( "02" ) << QString(SRCDIR "testdata/toString_01/doc02.xml");
- QTest::newRow( "03" ) << QString(SRCDIR "testdata/toString_01/doc03.xml");
- QTest::newRow( "04" ) << QString(SRCDIR "testdata/toString_01/doc04.xml");
- QTest::newRow( "05" ) << QString(SRCDIR "testdata/toString_01/doc05.xml");
-
- QTest::newRow( "euc-jp" ) << QString(SRCDIR "testdata/toString_01/doc_euc-jp.xml");
- QTest::newRow( "iso-2022-jp" ) << QString(SRCDIR "testdata/toString_01/doc_iso-2022-jp.xml");
- QTest::newRow( "little-endian" ) << QString(SRCDIR "testdata/toString_01/doc_little-endian.xml");
- QTest::newRow( "utf-16" ) << QString(SRCDIR "testdata/toString_01/doc_utf-16.xml");
- QTest::newRow( "utf-8" ) << QString(SRCDIR "testdata/toString_01/doc_utf-8.xml");
+ QTest::newRow( "euc-jp" ) << QString(prefix + "/doc_euc-jp.xml");
+ QTest::newRow( "iso-2022-jp" ) << QString(prefix + "/doc_iso-2022-jp.xml");
+ QTest::newRow( "little-endian" ) << QString(prefix + "/doc_little-endian.xml");
+ QTest::newRow( "utf-16" ) << QString(prefix + "/doc_utf-16.xml");
+ QTest::newRow( "utf-8" ) << QString(prefix + "/doc_utf-8.xml");
}
@@ -471,7 +473,10 @@ void tst_QDom::save()
void tst_QDom::initTestCase()
{
- QFile file(SRCDIR "testdata/excludedCodecs.txt");
+ QString testFile = QFINDTESTDATA("testdata/excludedCodecs.txt");
+ if (testFile.isEmpty())
+ QFAIL("Cannot find testdata/excludedCodecs.txt");
+ QFile file(testFile);
QVERIFY(file.open(QIODevice::ReadOnly|QIODevice::Text));
QByteArray codecName;
@@ -546,19 +551,21 @@ void tst_QDom::saveWithSerialization() const
void tst_QDom::saveWithSerialization_data() const
{
QTest::addColumn<QString>("fileName");
-
- QTest::newRow("doc01.xml") << QString(SRCDIR "testdata/toString_01/doc01.xml");
- QTest::newRow("doc01.xml") << QString(SRCDIR "testdata/toString_01/doc01.xml");
- QTest::newRow("doc02.xml") << QString(SRCDIR "testdata/toString_01/doc02.xml");
- QTest::newRow("doc03.xml") << QString(SRCDIR "testdata/toString_01/doc03.xml");
- QTest::newRow("doc04.xml") << QString(SRCDIR "testdata/toString_01/doc04.xml");
- QTest::newRow("doc05.xml") << QString(SRCDIR "testdata/toString_01/doc05.xml");
-
- QTest::newRow("doc_euc-jp.xml") << QString(SRCDIR "testdata/toString_01/doc_euc-jp.xml");
- QTest::newRow("doc_iso-2022-jp.xml") << QString(SRCDIR "testdata/toString_01/doc_iso-2022-jp.xml");
- QTest::newRow("doc_little-endian.xml") << QString(SRCDIR "testdata/toString_01/doc_little-endian.xml");
- QTest::newRow("doc_utf-16.xml") << QString(SRCDIR "testdata/toString_01/doc_utf-16.xml");
- QTest::newRow("doc_utf-8.xml") << QString(SRCDIR "testdata/toString_01/doc_utf-8.xml");
+ const QString prefix = QFINDTESTDATA("testdata/toString_01");
+ if (prefix.isEmpty())
+ QFAIL("Cannot find testdata!");
+ QTest::newRow("doc01.xml") << QString(prefix + "/doc01.xml");
+ QTest::newRow("doc01.xml") << QString(prefix + "/doc01.xml");
+ QTest::newRow("doc02.xml") << QString(prefix + "/doc02.xml");
+ QTest::newRow("doc03.xml") << QString(prefix + "/doc03.xml");
+ QTest::newRow("doc04.xml") << QString(prefix + "/doc04.xml");
+ QTest::newRow("doc05.xml") << QString(prefix + "/doc05.xml");
+
+ QTest::newRow("doc_euc-jp.xml") << QString(prefix + "/doc_euc-jp.xml");
+ QTest::newRow("doc_iso-2022-jp.xml") << QString(prefix + "/doc_iso-2022-jp.xml");
+ QTest::newRow("doc_little-endian.xml") << QString(prefix + "/doc_little-endian.xml");
+ QTest::newRow("doc_utf-16.xml") << QString(prefix + "/doc_utf-16.xml");
+ QTest::newRow("doc_utf-8.xml") << QString(prefix + "/doc_utf-8.xml");
}
void tst_QDom::cloneNode_data()
@@ -1775,7 +1782,10 @@ void tst_QDom::doubleNamespaceDeclarations() const
{
QDomDocument doc;
- QFile file(SRCDIR "doubleNamespaces.xml" );
+ QString testFile = QFINDTESTDATA("doubleNamespaces.xml");
+ if (testFile.isEmpty())
+ QFAIL("Cannot find test file doubleNamespaces.xml!");
+ QFile file(testFile);
QVERIFY(file.open(QIODevice::ReadOnly));
QXmlSimpleReader reader;
diff --git a/tests/auto/xml/sax/qxml/qxml.pro b/tests/auto/xml/sax/qxml/qxml.pro
index 4f2e427d14..e0b48ad9f5 100644
--- a/tests/auto/xml/sax/qxml/qxml.pro
+++ b/tests/auto/xml/sax/qxml/qxml.pro
@@ -4,8 +4,4 @@ TARGET = tst_qxml
SOURCES += tst_qxml.cpp
QT = core xml testlib
-wince* {
- addFiles.files = 0x010D.xml
- addFiles.path = .
- DEPLOYMENT += addFiles
-}
+TESTDATA += 0x010D.xml
diff --git a/tests/auto/xml/sax/qxml/tst_qxml.cpp b/tests/auto/xml/sax/qxml/tst_qxml.cpp
index afe219c635..01a4d2c003 100644
--- a/tests/auto/xml/sax/qxml/tst_qxml.cpp
+++ b/tests/auto/xml/sax/qxml/tst_qxml.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -196,7 +196,10 @@ void tst_QXml::interpretedAs0D() const
QChar(0x010D) +
QLatin1String("reated-by=\"an attr value\"/>"));
- QFile f("0x010D.xml");
+ QString testFile = QFINDTESTDATA("0x010D.xml");
+ if (testFile.isEmpty())
+ QFAIL("Cannot find test file 0x010D.xml!");
+ QFile f(testFile);
QVERIFY(f.open(QIODevice::ReadOnly));
QXmlInputSource data(&f);
diff --git a/tests/auto/xml/sax/qxmlinputsource/tst_qxmlinputsource.cpp b/tests/auto/xml/sax/qxmlinputsource/tst_qxmlinputsource.cpp
index 5bc3a09fc5..f93d979169 100644
--- a/tests/auto/xml/sax/qxmlinputsource/tst_qxmlinputsource.cpp
+++ b/tests/auto/xml/sax/qxmlinputsource/tst_qxmlinputsource.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/xml/sax/qxmlsimplereader/generate_ref_files.sh b/tests/auto/xml/sax/qxmlsimplereader/generate_ref_files.sh
index b9895f8598..edcb07f034 100755
--- a/tests/auto/xml/sax/qxmlsimplereader/generate_ref_files.sh
+++ b/tests/auto/xml/sax/qxmlsimplereader/generate_ref_files.sh
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is the build configuration utility of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
diff --git a/tests/auto/xml/sax/qxmlsimplereader/parser/main.cpp b/tests/auto/xml/sax/qxmlsimplereader/parser/main.cpp
index 840f237875..44eacefc2d 100644
--- a/tests/auto/xml/sax/qxmlsimplereader/parser/main.cpp
+++ b/tests/auto/xml/sax/qxmlsimplereader/parser/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/xml/sax/qxmlsimplereader/parser/parser.cpp b/tests/auto/xml/sax/qxmlsimplereader/parser/parser.cpp
index 0089951d30..06a23c8654 100644
--- a/tests/auto/xml/sax/qxmlsimplereader/parser/parser.cpp
+++ b/tests/auto/xml/sax/qxmlsimplereader/parser/parser.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/xml/sax/qxmlsimplereader/parser/parser.h b/tests/auto/xml/sax/qxmlsimplereader/parser/parser.h
index e91ec53d5a..58a08e1403 100644
--- a/tests/auto/xml/sax/qxmlsimplereader/parser/parser.h
+++ b/tests/auto/xml/sax/qxmlsimplereader/parser/parser.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/auto/xml/sax/qxmlsimplereader/qxmlsimplereader.pro b/tests/auto/xml/sax/qxmlsimplereader/qxmlsimplereader.pro
index ae924ca35f..cec33ded18 100644
--- a/tests/auto/xml/sax/qxmlsimplereader/qxmlsimplereader.pro
+++ b/tests/auto/xml/sax/qxmlsimplereader/qxmlsimplereader.pro
@@ -12,8 +12,4 @@ CONFIG += no_batch
QT += network xml testlib
QT -= gui
-wince* {
- addFiles.files = encodings parser xmldocs
- addFiles.path = .
- DEPLOYMENT += addFiles
-}
+TESTDATA += encodings/* xmldocs/*
diff --git a/tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp b/tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp
index 1478ae7e23..7088fa3ac8 100644
--- a/tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp
+++ b/tests/auto/xml/sax/qxmlsimplereader/tst_qxmlsimplereader.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -141,7 +141,7 @@ class tst_QXmlSimpleReader : public QObject
~tst_QXmlSimpleReader();
private slots:
-
+ void initTestCase();
void testGoodXmlFile();
void testGoodXmlFile_data();
void testBadXmlFile();
@@ -164,6 +164,7 @@ class tst_QXmlSimpleReader : public QObject
private:
static QDomDocument fromByteArray(const QString &title, const QByteArray &ba, bool *ok);
XmlServer *server;
+ QString prefix;
};
tst_QXmlSimpleReader::tst_QXmlSimpleReader()
@@ -210,6 +211,14 @@ public:
};
+void tst_QXmlSimpleReader::initTestCase()
+{
+ prefix = QFileInfo(QFINDTESTDATA("xmldocs")).absolutePath();
+ if (prefix.isEmpty())
+ QFAIL("Cannot find xmldocs testdata!");
+ QDir::setCurrent(prefix);
+}
+
void tst_QXmlSimpleReader::idsInParseException1()
{
MyErrorHandler handler;
diff --git a/tests/baselineserver/shared/baselineprotocol.cpp b/tests/baselineserver/shared/baselineprotocol.cpp
index e9adfae691..0a74ed6614 100644
--- a/tests/baselineserver/shared/baselineprotocol.cpp
+++ b/tests/baselineserver/shared/baselineprotocol.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/baselineserver/shared/baselineprotocol.h b/tests/baselineserver/shared/baselineprotocol.h
index cd40a1241b..e1037c836c 100644
--- a/tests/baselineserver/shared/baselineprotocol.h
+++ b/tests/baselineserver/shared/baselineprotocol.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/baselineserver/shared/lookup3.cpp b/tests/baselineserver/shared/lookup3.cpp
index 4db5b3c622..da66182fa8 100644
--- a/tests/baselineserver/shared/lookup3.cpp
+++ b/tests/baselineserver/shared/lookup3.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/baselineserver/shared/qbaselinetest.cpp b/tests/baselineserver/shared/qbaselinetest.cpp
index 6e2491054c..a7af0abf5d 100644
--- a/tests/baselineserver/shared/qbaselinetest.cpp
+++ b/tests/baselineserver/shared/qbaselinetest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/baselineserver/shared/qbaselinetest.h b/tests/baselineserver/shared/qbaselinetest.h
index 84d40477b1..2efb06f913 100644
--- a/tests/baselineserver/shared/qbaselinetest.h
+++ b/tests/baselineserver/shared/qbaselinetest.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/baselineserver/src/baselineserver.cpp b/tests/baselineserver/src/baselineserver.cpp
index 7adc335fb2..e3b6b4aa8f 100644
--- a/tests/baselineserver/src/baselineserver.cpp
+++ b/tests/baselineserver/src/baselineserver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/baselineserver/src/baselineserver.h b/tests/baselineserver/src/baselineserver.h
index a6065cc099..0a202421ce 100644
--- a/tests/baselineserver/src/baselineserver.h
+++ b/tests/baselineserver/src/baselineserver.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/baselineserver/src/main.cpp b/tests/baselineserver/src/main.cpp
index 685e853575..f3a19f7fa8 100644
--- a/tests/baselineserver/src/main.cpp
+++ b/tests/baselineserver/src/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/baselineserver/src/report.cpp b/tests/baselineserver/src/report.cpp
index a726149d6a..d013941756 100644
--- a/tests/baselineserver/src/report.cpp
+++ b/tests/baselineserver/src/report.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/baselineserver/src/report.h b/tests/baselineserver/src/report.h
index b4488f1489..f8a869b594 100644
--- a/tests/baselineserver/src/report.h
+++ b/tests/baselineserver/src/report.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/codecs/qtextcodec/main.cpp b/tests/benchmarks/corelib/codecs/qtextcodec/main.cpp
index 1499eccd50..f75848556c 100644
--- a/tests/benchmarks/corelib/codecs/qtextcodec/main.cpp
+++ b/tests/benchmarks/corelib/codecs/qtextcodec/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/corelib.pro b/tests/benchmarks/corelib/corelib.pro
index a2efe91a61..da5247cc42 100644
--- a/tests/benchmarks/corelib/corelib.pro
+++ b/tests/benchmarks/corelib/corelib.pro
@@ -1,6 +1,7 @@
TEMPLATE = subdirs
SUBDIRS = \
io \
+ json \
kernel \
thread \
tools \
@@ -14,4 +15,4 @@ TRUSTED_BENCHMARKS += \
thread/qthreadstorage \
io/qdir/tree
-include(../trusted-benchmarks.pri) \ No newline at end of file
+include(../trusted-benchmarks.pri)
diff --git a/tests/benchmarks/corelib/io/qdir/10000/bench_qdir_10000.cpp b/tests/benchmarks/corelib/io/qdir/10000/bench_qdir_10000.cpp
index 8f11dc792e..2de98eff0b 100644
--- a/tests/benchmarks/corelib/io/qdir/10000/bench_qdir_10000.cpp
+++ b/tests/benchmarks/corelib/io/qdir/10000/bench_qdir_10000.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/io/qdir/tree/bench_qdir_tree.cpp b/tests/benchmarks/corelib/io/qdir/tree/bench_qdir_tree.cpp
index 9d7d60ebe0..e93182d73c 100644
--- a/tests/benchmarks/corelib/io/qdir/tree/bench_qdir_tree.cpp
+++ b/tests/benchmarks/corelib/io/qdir/tree/bench_qdir_tree.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/io/qdiriterator/main.cpp b/tests/benchmarks/corelib/io/qdiriterator/main.cpp
index 4e4b9cbf0b..758f390ec3 100644
--- a/tests/benchmarks/corelib/io/qdiriterator/main.cpp
+++ b/tests/benchmarks/corelib/io/qdiriterator/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.cpp b/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.cpp
index 584eb32021..7b22f50d3c 100644
--- a/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.cpp
+++ b/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.h b/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.h
index bef8115287..1322c5d1c6 100644
--- a/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.h
+++ b/tests/benchmarks/corelib/io/qdiriterator/qfilesystemiterator.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -48,7 +48,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
class QFileSystemIteratorPrivate;
class //Q_CORE_EXPORT
diff --git a/tests/benchmarks/corelib/io/qfile/main.cpp b/tests/benchmarks/corelib/io/qfile/main.cpp
index d291e3f412..92edd43060 100644
--- a/tests/benchmarks/corelib/io/qfile/main.cpp
+++ b/tests/benchmarks/corelib/io/qfile/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/io/qfileinfo/main.cpp b/tests/benchmarks/corelib/io/qfileinfo/main.cpp
index 479737a353..58a843f663 100644
--- a/tests/benchmarks/corelib/io/qfileinfo/main.cpp
+++ b/tests/benchmarks/corelib/io/qfileinfo/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/io/qiodevice/main.cpp b/tests/benchmarks/corelib/io/qiodevice/main.cpp
index e4244a71ef..a1a008b937 100644
--- a/tests/benchmarks/corelib/io/qiodevice/main.cpp
+++ b/tests/benchmarks/corelib/io/qiodevice/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/io/qtemporaryfile/main.cpp b/tests/benchmarks/corelib/io/qtemporaryfile/main.cpp
index c0f16068d7..0bbe223912 100644
--- a/tests/benchmarks/corelib/io/qtemporaryfile/main.cpp
+++ b/tests/benchmarks/corelib/io/qtemporaryfile/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/io/qurl/main.cpp b/tests/benchmarks/corelib/io/qurl/main.cpp
index c92c841cc8..dc236e7120 100644
--- a/tests/benchmarks/corelib/io/qurl/main.cpp
+++ b/tests/benchmarks/corelib/io/qurl/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/json/json.pro b/tests/benchmarks/corelib/json/json.pro
new file mode 100644
index 0000000000..1694d61d94
--- /dev/null
+++ b/tests/benchmarks/corelib/json/json.pro
@@ -0,0 +1,5 @@
+TARGET = tst_bench_qtbinaryjson
+QT = core testlib
+CONFIG -= app_bundle
+
+SOURCES += tst_bench_qtbinaryjson.cpp
diff --git a/tests/benchmarks/corelib/json/numbers.json b/tests/benchmarks/corelib/json/numbers.json
new file mode 100644
index 0000000000..469156a78a
--- /dev/null
+++ b/tests/benchmarks/corelib/json/numbers.json
@@ -0,0 +1,19 @@
+[
+ {
+ "integer": 1234567890,
+ "real": -9876.543210,
+ "e": 0.123456789e-12,
+ "E": 1.234567890E+34,
+ "": 23456789012E66,
+ "zero": 0,
+ "one": 1
+ },
+ [
+ -1234567890,
+ -1234567890,
+ -1234567890,
+ 1234567890,
+ 1234567890,
+ 1234567890
+ ]
+]
diff --git a/tests/benchmarks/corelib/json/tst_bench_qtbinaryjson.cpp b/tests/benchmarks/corelib/json/tst_bench_qtbinaryjson.cpp
new file mode 100644
index 0000000000..8f3e2cc8c6
--- /dev/null
+++ b/tests/benchmarks/corelib/json/tst_bench_qtbinaryjson.cpp
@@ -0,0 +1,126 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <QtTest>
+#include <qjsondocument.h>
+#include <qjsonobject.h>
+
+class BenchmarkQtBinaryJson: public QObject
+{
+ Q_OBJECT
+public:
+ BenchmarkQtBinaryJson(QObject *parent = 0);
+
+private Q_SLOTS:
+ void initTestCase();
+ void cleanupTestCase();
+ void init();
+ void cleanup();
+
+ void parseNumbers();
+ void parseJson();
+ void parseJsonToVariant();
+};
+
+BenchmarkQtBinaryJson::BenchmarkQtBinaryJson(QObject *parent) : QObject(parent)
+{
+
+}
+
+void BenchmarkQtBinaryJson::initTestCase()
+{
+
+}
+
+void BenchmarkQtBinaryJson::cleanupTestCase()
+{
+
+}
+
+void BenchmarkQtBinaryJson::init()
+{
+
+}
+
+void BenchmarkQtBinaryJson::cleanup()
+{
+
+}
+
+void BenchmarkQtBinaryJson::parseNumbers()
+{
+ QFile file(QLatin1String("numbers.json"));
+ file.open(QFile::ReadOnly);
+ QByteArray testJson = file.readAll();
+
+ QBENCHMARK {
+ QJsonDocument doc = QJsonDocument::fromJson(testJson);
+ QJsonObject object = doc.object();
+ }
+}
+
+void BenchmarkQtBinaryJson::parseJson()
+{
+ QFile file(QLatin1String("../../../auto/corelib/json/test.json"));
+ file.open(QFile::ReadOnly);
+ QByteArray testJson = file.readAll();
+
+ QBENCHMARK {
+ QJsonDocument doc = QJsonDocument::fromJson(testJson);
+ QJsonObject object = doc.object();
+ }
+}
+
+void BenchmarkQtBinaryJson::parseJsonToVariant()
+{
+ QFile file(QLatin1String("../../../auto/corelib/json/test.json"));
+ file.open(QFile::ReadOnly);
+ QByteArray testJson = file.readAll();
+
+ QBENCHMARK {
+ QJsonDocument doc = QJsonDocument::fromJson(testJson);
+ QVariant v = doc.toVariant();
+ }
+}
+
+QTEST_MAIN(BenchmarkQtBinaryJson)
+#include "tst_bench_qtbinaryjson.moc"
+
diff --git a/tests/benchmarks/corelib/kernel/events/main.cpp b/tests/benchmarks/corelib/kernel/events/main.cpp
index 09f37616be..24fc6ab2b1 100644
--- a/tests/benchmarks/corelib/kernel/events/main.cpp
+++ b/tests/benchmarks/corelib/kernel/events/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/kernel/qcoreapplication/main.cpp b/tests/benchmarks/corelib/kernel/qcoreapplication/main.cpp
index e1e4e2cc9a..7e0dba2149 100644
--- a/tests/benchmarks/corelib/kernel/qcoreapplication/main.cpp
+++ b/tests/benchmarks/corelib/kernel/qcoreapplication/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Robin Burchell <robin+qt@viroteck.net>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/kernel/qmetaobject/main.cpp b/tests/benchmarks/corelib/kernel/qmetaobject/main.cpp
index 8b68f032ea..ab26158f9a 100644
--- a/tests/benchmarks/corelib/kernel/qmetaobject/main.cpp
+++ b/tests/benchmarks/corelib/kernel/qmetaobject/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/benchmarks/corelib/kernel/qmetatype/tst_qmetatype.cpp
index cee747316f..14895863e4 100644
--- a/tests/benchmarks/corelib/kernel/qmetatype/tst_qmetatype.cpp
+++ b/tests/benchmarks/corelib/kernel/qmetatype/tst_qmetatype.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -242,8 +242,6 @@ void tst_QMetaType::constructCoreType_data()
QTest::addColumn<int>("typeId");
for (int i = 0; i <= QMetaType::LastCoreType; ++i)
QTest::newRow(QMetaType::typeName(i)) << i;
- for (int i = QMetaType::FirstCoreExtType; i <= QMetaType::LastCoreExtType; ++i)
- QTest::newRow(QMetaType::typeName(i)) << i;
// GUI types are tested in tst_QGuiMetaType.
}
diff --git a/tests/benchmarks/corelib/kernel/qobject/main.cpp b/tests/benchmarks/corelib/kernel/qobject/main.cpp
index 905b21fca0..a5a26c1b2a 100644
--- a/tests/benchmarks/corelib/kernel/qobject/main.cpp
+++ b/tests/benchmarks/corelib/kernel/qobject/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/kernel/qobject/object.cpp b/tests/benchmarks/corelib/kernel/qobject/object.cpp
index 0b036d0139..cdaa6b3bd2 100644
--- a/tests/benchmarks/corelib/kernel/qobject/object.cpp
+++ b/tests/benchmarks/corelib/kernel/qobject/object.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/kernel/qobject/object.h b/tests/benchmarks/corelib/kernel/qobject/object.h
index c3cd23d6be..f52c7cf854 100644
--- a/tests/benchmarks/corelib/kernel/qobject/object.h
+++ b/tests/benchmarks/corelib/kernel/qobject/object.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/kernel/qtimer_vs_qmetaobject/tst_qtimer_vs_qmetaobject.cpp b/tests/benchmarks/corelib/kernel/qtimer_vs_qmetaobject/tst_qtimer_vs_qmetaobject.cpp
index 151e78e5ce..6232831e1f 100644
--- a/tests/benchmarks/corelib/kernel/qtimer_vs_qmetaobject/tst_qtimer_vs_qmetaobject.cpp
+++ b/tests/benchmarks/corelib/kernel/qtimer_vs_qmetaobject/tst_qtimer_vs_qmetaobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/kernel/qvariant/tst_qvariant.cpp b/tests/benchmarks/corelib/kernel/qvariant/tst_qvariant.cpp
index 00e2684066..0c4af17376 100644
--- a/tests/benchmarks/corelib/kernel/qvariant/tst_qvariant.cpp
+++ b/tests/benchmarks/corelib/kernel/qvariant/tst_qvariant.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -307,8 +307,6 @@ void tst_qvariant::createCoreType_data()
QTest::addColumn<int>("typeId");
for (int i = 0; i <= QMetaType::LastCoreType; ++i)
QTest::newRow(QMetaType::typeName(i)) << i;
- for (int i = QMetaType::FirstCoreExtType; i <= QMetaType::LastCoreExtType; ++i)
- QTest::newRow(QMetaType::typeName(i)) << i;
}
// Tests how fast a Qt core type can be default-constructed by a
diff --git a/tests/benchmarks/corelib/plugin/quuid/tst_quuid.cpp b/tests/benchmarks/corelib/plugin/quuid/tst_quuid.cpp
index 9e33655d18..68b739cc13 100644
--- a/tests/benchmarks/corelib/plugin/quuid/tst_quuid.cpp
+++ b/tests/benchmarks/corelib/plugin/quuid/tst_quuid.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/thread/qmutex/tst_qmutex.cpp b/tests/benchmarks/corelib/thread/qmutex/tst_qmutex.cpp
index 9310a3dec8..12420e25a1 100644
--- a/tests/benchmarks/corelib/thread/qmutex/tst_qmutex.cpp
+++ b/tests/benchmarks/corelib/thread/qmutex/tst_qmutex.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -44,26 +44,7 @@
#include <math.h>
-#ifdef Q_OS_SYMBIAN
-# include <e32std.h>
-typedef RMutex NativeMutexType;
-void NativeMutexInitialize(NativeMutexType *mutex)
-{
- mutex->CreateLocal();
-}
-void NativeMutexDestroy(NativeMutexType *mutex)
-{
- mutex->Close();
-}
-void NativeMutexLock(NativeMutexType *mutex)
-{
- mutex->Wait();
-}
-void NativeMutexUnlock(NativeMutexType *mutex)
-{
- mutex->Signal();
-}
-#elif defined(Q_OS_UNIX)
+#if defined(Q_OS_UNIX)
# include <pthread.h>
# include <errno.h>
typedef pthread_mutex_t NativeMutexType;
diff --git a/tests/benchmarks/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp b/tests/benchmarks/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
index 6372b7a830..67946602ba 100644
--- a/tests/benchmarks/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
+++ b/tests/benchmarks/corelib/thread/qthreadstorage/tst_qthreadstorage.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/thread/qwaitcondition/tst_qwaitcondition.cpp b/tests/benchmarks/corelib/thread/qwaitcondition/tst_qwaitcondition.cpp
index 729b14067e..00d74ef9e7 100644
--- a/tests/benchmarks/corelib/thread/qwaitcondition/tst_qwaitcondition.cpp
+++ b/tests/benchmarks/corelib/thread/qwaitcondition/tst_qwaitcondition.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/tools/containers-associative/main.cpp b/tests/benchmarks/corelib/tools/containers-associative/main.cpp
index 3e9dfe3568..7f2e7b68ca 100644
--- a/tests/benchmarks/corelib/tools/containers-associative/main.cpp
+++ b/tests/benchmarks/corelib/tools/containers-associative/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/tools/containers-sequential/main.cpp b/tests/benchmarks/corelib/tools/containers-sequential/main.cpp
index ae05a164a2..ee13a63a57 100644
--- a/tests/benchmarks/corelib/tools/containers-sequential/main.cpp
+++ b/tests/benchmarks/corelib/tools/containers-sequential/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/tools/qalgorithms/.gitignore b/tests/benchmarks/corelib/tools/qalgorithms/.gitignore
new file mode 100644
index 0000000000..379c13eb9b
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qalgorithms/.gitignore
@@ -0,0 +1 @@
+tst_qalgorithms
diff --git a/tests/benchmarks/corelib/tools/qalgorithms/qalgorithms.pro b/tests/benchmarks/corelib/tools/qalgorithms/qalgorithms.pro
new file mode 100644
index 0000000000..00b63f9863
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qalgorithms/qalgorithms.pro
@@ -0,0 +1,3 @@
+TARGET = tst_qalgorithms
+QT = core testlib
+SOURCES = tst_qalgorithms.cpp
diff --git a/tests/benchmarks/corelib/tools/qalgorithms/tst_qalgorithms.cpp b/tests/benchmarks/corelib/tools/qalgorithms/tst_qalgorithms.cpp
new file mode 100644
index 0000000000..d36f8e101c
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qalgorithms/tst_qalgorithms.cpp
@@ -0,0 +1,141 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Copyright (C) 2012 Robin Burchell <robin+qt@viroteck.net>
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <QtTest/QtTest>
+
+#include <iostream>
+#include <iomanip>
+#include <sstream>
+#include <algorithm>
+#include <qalgorithms.h>
+#include <QStringList>
+#include <QString>
+#include <QVector>
+
+using namespace std;
+
+class tst_QAlgorithms : public QObject
+{
+ Q_OBJECT
+private slots:
+ void stableSort_data();
+ void stableSort();
+
+ void sort_data();
+ void sort();
+};
+
+template <typename DataType>
+QVector<DataType> generateData(QString dataSetType, const int length)
+{
+ QVector<DataType> container;
+ if (dataSetType == "Random") {
+ for (int i = 0; i < length; ++i)
+ container.append(rand());
+ } else if (dataSetType == "Ascending") {
+ for (int i = 0; i < length; ++i)
+ container.append(i);
+ } else if (dataSetType == "Descending") {
+ for (int i = 0; i < length; ++i)
+ container.append(length - i);
+ } else if (dataSetType == "Equal") {
+ for (int i = 0; i < length; ++i)
+ container.append(43);
+ } else if (dataSetType == "Duplicates") {
+ for (int i = 0; i < length; ++i)
+ container.append(i % 10);
+ } else if (dataSetType == "Almost Sorted") {
+ for (int i = 0; i < length; ++i)
+ container.append(i);
+ for (int i = 0; i<= length / 10; ++i) {
+ const int iswap = i * 9;
+ DataType tmp = container.at(iswap);
+ container[iswap] = container.at(iswap + 1);
+ container[iswap + 1] = tmp;
+ }
+ }
+
+ return container;
+}
+
+Q_DECLARE_METATYPE(QVector<int>)
+
+void tst_QAlgorithms::stableSort_data()
+{
+ const int dataSize = 5000;
+ QTest::addColumn<QVector<int> >("unsorted");
+ QTest::newRow("Equal") << (generateData<int>("Equal", dataSize));
+ QTest::newRow("Ascending") << (generateData<int>("Ascending", dataSize));
+ QTest::newRow("Descending") << (generateData<int>("Descending", dataSize));
+ QTest::newRow("Duplicates") << (generateData<int>("Duplicates", dataSize));
+ QTest::newRow("Almost Sorted") << (generateData<int>("Almost Sorted", dataSize));
+}
+
+void tst_QAlgorithms::stableSort()
+{
+ QFETCH(QVector<int>, unsorted);
+
+ QBENCHMARK {
+ QVector<int> sorted = unsorted;
+ qStableSort(sorted.begin(), sorted.end());
+ }
+}
+
+void tst_QAlgorithms::sort_data()
+{
+ stableSort_data();
+}
+
+void tst_QAlgorithms::sort()
+{
+ QFETCH(QVector<int>, unsorted);
+
+ QBENCHMARK {
+ QVector<int> sorted = unsorted;
+ qSort(sorted.begin(), sorted.end());
+ }
+}
+
+
+QTEST_MAIN(tst_QAlgorithms)
+#include "tst_qalgorithms.moc"
+
diff --git a/tests/benchmarks/corelib/tools/qbytearray/main.cpp b/tests/benchmarks/corelib/tools/qbytearray/main.cpp
index 61a7855884..72e07ad445 100644
--- a/tests/benchmarks/corelib/tools/qbytearray/main.cpp
+++ b/tests/benchmarks/corelib/tools/qbytearray/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/tools/qchar/main.cpp b/tests/benchmarks/corelib/tools/qchar/main.cpp
index 3abf7584bb..80456453c9 100644
--- a/tests/benchmarks/corelib/tools/qchar/main.cpp
+++ b/tests/benchmarks/corelib/tools/qchar/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/tools/qcontiguouscache/main.cpp b/tests/benchmarks/corelib/tools/qcontiguouscache/main.cpp
index b6b064e012..db0c9f39b2 100644
--- a/tests/benchmarks/corelib/tools/qcontiguouscache/main.cpp
+++ b/tests/benchmarks/corelib/tools/qcontiguouscache/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/tools/qhash/main.cpp b/tests/benchmarks/corelib/tools/qhash/main.cpp
new file mode 100644
index 0000000000..6f3228d0eb
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qhash/main.cpp
@@ -0,0 +1,128 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 "main.h"
+
+#include <QFile>
+#include <QHash>
+#include <QString>
+#include <QStringList>
+
+#include <QTest>
+
+
+class tst_QHash : public QObject
+{
+ Q_OBJECT
+
+private slots:
+ void qhash_qt4_data() { data(); }
+ void qhash_qt4();
+ void qhash_faster_data() { data(); }
+ void qhash_faster();
+ void javaString_data() { data(); }
+ void javaString();
+
+private:
+ void data();
+};
+
+///////////////////// QHash /////////////////////
+
+void tst_QHash::data()
+{
+ QFile smallPathsData("paths_small_data.txt");
+ smallPathsData.open(QIODevice::ReadOnly);
+
+ QTest::addColumn<QStringList>("items");
+ QTest::newRow("paths-small")
+ << QString::fromLatin1(smallPathsData.readAll()).split(QLatin1Char('\n'));
+}
+
+void tst_QHash::qhash_qt4()
+{
+ QFETCH(QStringList, items);
+ QStringList realitems = items; // for copy/paste ease between benchmarks
+ QHash<QString, int> hash;
+
+ QBENCHMARK {
+ for (int i = 0, n = realitems.size(); i != n; ++i) {
+ hash[realitems.at(i)] = i;
+ }
+ }
+}
+
+void tst_QHash::qhash_faster()
+{
+ QFETCH(QStringList, items);
+ QHash<String, int> hash;
+
+ QList<String> realitems;
+ foreach (const QString &s, items)
+ realitems.append(s);
+
+ QBENCHMARK {
+ for (int i = 0, n = realitems.size(); i != n; ++i) {
+ hash[realitems.at(i)] = i;
+ }
+ }
+}
+
+void tst_QHash::javaString()
+{
+ QFETCH(QStringList, items);
+ QHash<JavaString, int> hash;
+
+ QList<JavaString> realitems;
+ foreach (const QString &s, items)
+ realitems.append(s);
+
+ QBENCHMARK {
+ for (int i = 0, n = realitems.size(); i != n; ++i) {
+ hash[realitems.at(i)] = i;
+ }
+ }
+}
+
+
+QTEST_MAIN(tst_QHash)
+
+#include "main.moc"
diff --git a/tests/benchmarks/corelib/tools/qhash/main.h b/tests/benchmarks/corelib/tools/qhash/main.h
new file mode 100644
index 0000000000..c4cf94e190
--- /dev/null
+++ b/tests/benchmarks/corelib/tools/qhash/main.h
@@ -0,0 +1,64 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtTest 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 <QString>
+
+struct String : QString
+{
+ String() {}
+ String(const QString &s) : QString(s) {}
+};
+
+QT_BEGIN_NAMESPACE
+uint qHash(const String &);
+QT_END_NAMESPACE
+
+
+struct JavaString : QString
+{
+ JavaString() {}
+ JavaString(const QString &s) : QString(s) {}
+};
+
+QT_BEGIN_NAMESPACE
+uint qHash(const JavaString &);
+QT_END_NAMESPACE
+
diff --git a/tests/benchmarks/corelib/tools/qhash/outofline.cpp b/tests/benchmarks/corelib/tools/qhash/outofline.cpp
index 11a5f9e733..162c604a35 100644
--- a/tests/benchmarks/corelib/tools/qhash/outofline.cpp
+++ b/tests/benchmarks/corelib/tools/qhash/outofline.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,11 +34,12 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
-#include "qhash_string.h"
+#include "main.h"
static void doHash(const unsigned short *p, uint &h)
{
@@ -87,4 +87,28 @@ uint qHash(const String &str)
return h;
}
+// The Java's hashing algorithm for strings is a variation of D. J. Bernstein
+// hashing algorithm appeared here http://cr.yp.to/cdb/cdb.txt
+// and informally known as DJB33XX - DJB's 33 Times Xor.
+// Java uses DJB31XA, that is, 31 Times Add.
+// The original algorithm was a loop around "(h << 5) + h ^ c",
+// which is indeed "h * 33 ^ c"; it was then changed to
+// "(h << 5) - h ^ c", so "h * 31 ^ c", and the XOR changed to a sum:
+// "(h << 5) - h + c", which can save some assembly instructions.
+// Still, we can avoid writing the multiplication as "(h << 5) - h"
+// -- the compiler will turn it into a shift and an addition anyway
+// (for instance, gcc 4.4 does that even at -O0).
+uint qHash(const JavaString &str)
+{
+ const unsigned short *p = (unsigned short *)str.constData();
+ const int len = str.size();
+
+ uint h = 0;
+
+ for (int i = 0; i < len; ++i)
+ h = 31 * h + p[i];
+
+ return h;
+}
+
QT_END_NAMESPACE
diff --git a/tests/benchmarks/corelib/tools/qhash/data.txt b/tests/benchmarks/corelib/tools/qhash/paths_small_data.txt
index d5acd28820..d5acd28820 100644
--- a/tests/benchmarks/corelib/tools/qhash/data.txt
+++ b/tests/benchmarks/corelib/tools/qhash/paths_small_data.txt
diff --git a/tests/benchmarks/corelib/tools/qhash/qhash.pro b/tests/benchmarks/corelib/tools/qhash/qhash.pro
index 51d3e7f253..40f661c116 100644
--- a/tests/benchmarks/corelib/tools/qhash/qhash.pro
+++ b/tests/benchmarks/corelib/tools/qhash/qhash.pro
@@ -1,5 +1,5 @@
TARGET = tst_hash
QT = core testlib
INCLUDEPATH += .
-SOURCES += qhash_string.cpp outofline.cpp
+SOURCES += main.cpp outofline.cpp
CONFIG += release
diff --git a/tests/benchmarks/corelib/tools/qhash/qhash_string.cpp b/tests/benchmarks/corelib/tools/qhash/qhash_string.cpp
deleted file mode 100644
index 874a0c543a..0000000000
--- a/tests/benchmarks/corelib/tools/qhash/qhash_string.cpp
+++ /dev/null
@@ -1,131 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the test suite 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$
-**
-****************************************************************************/
-
-/*
-
-////////////////////////////////////////////////////////////////////
-
-This benchmark serves as reality check on the idea that hashing the complete
-string is a good idea.
-
- Executive summary: It is not a good idea.
-
-////////////////////////////////////////////////////////////////////
-
-********* Start testing of tst_QHash *********
-Config: Using QTest library 5.0.0, Qt 5.0.0
-PASS : tst_QHash::initTestCase()
-RESULT : tst_QHash::qhash_qt4():
- 0.041 msecs per iteration (total: 85, iterations: 2048)
-PASS : tst_QHash::qhash_qt4()
-RESULT : tst_QHash::qhash_faster():
- 0.0122 msecs per iteration (total: 100, iterations: 8192)
-PASS : tst_QHash::qhash_faster()
-PASS : tst_QHash::cleanupTestCase()
-Totals: 4 passed, 0 failed, 0 skipped
-
-////////////////////////////////////////////////////////////////////
-
-*/
-
-#include "qhash_string.h"
-
-#include <QFile>
-#include <QHash>
-#include <QString>
-#include <QStringList>
-
-#include <QTest>
-
-
-class tst_QHash : public QObject
-{
- Q_OBJECT
-
-private slots:
- void qhash_qt4();
- void qhash_faster();
-
-private:
- QString data();
-};
-
-const int N = 1000000;
-extern double s;
-
-///////////////////// QHash /////////////////////
-
-QString tst_QHash::data()
-{
- QFile file("data.txt");
- file.open(QIODevice::ReadOnly);
- return QString::fromLatin1(file.readAll());
-}
-
-void tst_QHash::qhash_qt4()
-{
- QStringList items = data().split(QLatin1Char('\n'));
- QHash<QString, int> hash;
-
- QBENCHMARK {
- for (int i = 0, n = items.size(); i != n; ++i) {
- hash[items.at(i)] = i;
- }
- }
-}
-
-void tst_QHash::qhash_faster()
-{
- QList<String> items;
- foreach (const QString &s, data().split(QLatin1Char('\n')))
- items.append(s);
- QHash<String, int> hash;
-
- QBENCHMARK {
- for (int i = 0, n = items.size(); i != n; ++i) {
- hash[items.at(i)] = i;
- }
- }
-}
-
-QTEST_MAIN(tst_QHash)
-
-#include "qhash_string.moc"
diff --git a/tests/benchmarks/corelib/tools/qhash/qhash_string.h b/tests/benchmarks/corelib/tools/qhash/qhash_string.h
deleted file mode 100644
index 94f142914b..0000000000
--- a/tests/benchmarks/corelib/tools/qhash/qhash_string.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the QtTest 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 <QString>
-
-struct String : QString
-{
- String() {}
- String(const QString &s) : QString(s) {}
-};
-
-QT_BEGIN_NAMESPACE
-uint qHash(const String &);
-QT_END_NAMESPACE
diff --git a/tests/benchmarks/corelib/tools/qlist/main.cpp b/tests/benchmarks/corelib/tools/qlist/main.cpp
index d3380b188c..b5fcfea3e6 100644
--- a/tests/benchmarks/corelib/tools/qlist/main.cpp
+++ b/tests/benchmarks/corelib/tools/qlist/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/tools/qrect/main.cpp b/tests/benchmarks/corelib/tools/qrect/main.cpp
index 59174e4f08..ba81c7bb92 100644
--- a/tests/benchmarks/corelib/tools/qrect/main.cpp
+++ b/tests/benchmarks/corelib/tools/qrect/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/tools/qregexp/main.cpp b/tests/benchmarks/corelib/tools/qregexp/main.cpp
index 32e8e72577..d26731edba 100644
--- a/tests/benchmarks/corelib/tools/qregexp/main.cpp
+++ b/tests/benchmarks/corelib/tools/qregexp/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/tools/qstring/data.h b/tests/benchmarks/corelib/tools/qstring/data.h
index 925ce3663a..bf39284cb4 100644
--- a/tests/benchmarks/corelib/tools/qstring/data.h
+++ b/tests/benchmarks/corelib/tools/qstring/data.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/tools/qstring/generatelist.pl b/tests/benchmarks/corelib/tools/qstring/generatelist.pl
index 1f10b638b2..0cb67fc737 100644
--- a/tests/benchmarks/corelib/tools/qstring/generatelist.pl
+++ b/tests/benchmarks/corelib/tools/qstring/generatelist.pl
@@ -1,7 +1,6 @@
#!/usr/bin/perl
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is part of the QtCore module of the Qt Toolkit.
##
@@ -34,6 +33,7 @@
##
##
##
+##
## $QT_END_LICENSE$
#
# Parses a file (passed as argument) that contains a dump of pairs of
diff --git a/tests/benchmarks/corelib/tools/qstring/generatelist_char.pl b/tests/benchmarks/corelib/tools/qstring/generatelist_char.pl
index ad6595ab5c..9d980f9ed4 100644
--- a/tests/benchmarks/corelib/tools/qstring/generatelist_char.pl
+++ b/tests/benchmarks/corelib/tools/qstring/generatelist_char.pl
@@ -1,8 +1,7 @@
#!/usr/bin/perl
# -*- mode: utf-8; tabs: nil -*-
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is part of the QtCore module of the Qt Toolkit.
##
@@ -35,6 +34,7 @@
##
##
##
+##
## $QT_END_LICENSE$
#
# Parses a file (passed as argument) that contains a dump of pairs of
diff --git a/tests/benchmarks/corelib/tools/qstring/main.cpp b/tests/benchmarks/corelib/tools/qstring/main.cpp
index ab23fa5f9b..9d5c43c290 100644
--- a/tests/benchmarks/corelib/tools/qstring/main.cpp
+++ b/tests/benchmarks/corelib/tools/qstring/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/tools/qstringbuilder/main.cpp b/tests/benchmarks/corelib/tools/qstringbuilder/main.cpp
index b1ec5dace8..cd82ca746f 100644
--- a/tests/benchmarks/corelib/tools/qstringbuilder/main.cpp
+++ b/tests/benchmarks/corelib/tools/qstringbuilder/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/tools/qstringlist/main.cpp b/tests/benchmarks/corelib/tools/qstringlist/main.cpp
index 696f0fc6da..48bf7f1fc5 100644
--- a/tests/benchmarks/corelib/tools/qstringlist/main.cpp
+++ b/tests/benchmarks/corelib/tools/qstringlist/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/tools/qvector/main.cpp b/tests/benchmarks/corelib/tools/qvector/main.cpp
index 38c1f4ac46..ee50935832 100644
--- a/tests/benchmarks/corelib/tools/qvector/main.cpp
+++ b/tests/benchmarks/corelib/tools/qvector/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/tools/qvector/outofline.cpp b/tests/benchmarks/corelib/tools/qvector/outofline.cpp
index a30a7e786a..bf929780a5 100644
--- a/tests/benchmarks/corelib/tools/qvector/outofline.cpp
+++ b/tests/benchmarks/corelib/tools/qvector/outofline.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtTest module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/corelib/tools/qvector/qrawvector.h b/tests/benchmarks/corelib/tools/qvector/qrawvector.h
index 3bd75164d5..159dfbf8dc 100644
--- a/tests/benchmarks/corelib/tools/qvector/qrawvector.h
+++ b/tests/benchmarks/corelib/tools/qvector/qrawvector.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -60,7 +60,6 @@ QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
-QT_MODULE(Core)
diff --git a/tests/benchmarks/corelib/tools/tools.pro b/tests/benchmarks/corelib/tools/tools.pro
index d5bf8301f9..ea9059e759 100644
--- a/tests/benchmarks/corelib/tools/tools.pro
+++ b/tests/benchmarks/corelib/tools/tools.pro
@@ -10,6 +10,7 @@ SUBDIRS = \
qstring \
qstringbuilder \
qstringlist \
- qvector
+ qvector \
+ qalgorithms
!*g++*: SUBDIRS -= qstring
diff --git a/tests/benchmarks/dbus/qdbusperformance/server/server.cpp b/tests/benchmarks/dbus/qdbusperformance/server/server.cpp
index d3c6f1f5ac..765852cfca 100644
--- a/tests/benchmarks/dbus/qdbusperformance/server/server.cpp
+++ b/tests/benchmarks/dbus/qdbusperformance/server/server.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/dbus/qdbusperformance/serverobject.h b/tests/benchmarks/dbus/qdbusperformance/serverobject.h
index dd4d9f4735..bc173aa762 100644
--- a/tests/benchmarks/dbus/qdbusperformance/serverobject.h
+++ b/tests/benchmarks/dbus/qdbusperformance/serverobject.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/dbus/qdbusperformance/tst_qdbusperformance.cpp b/tests/benchmarks/dbus/qdbusperformance/tst_qdbusperformance.cpp
index 116268835a..bd7f09d660 100644
--- a/tests/benchmarks/dbus/qdbusperformance/tst_qdbusperformance.cpp
+++ b/tests/benchmarks/dbus/qdbusperformance/tst_qdbusperformance.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/dbus/qdbustype/main.cpp b/tests/benchmarks/dbus/qdbustype/main.cpp
index 476bdc81c7..0e0ce358bb 100644
--- a/tests/benchmarks/dbus/qdbustype/main.cpp
+++ b/tests/benchmarks/dbus/qdbustype/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the FOO module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/animation/qanimation/dummyanimation.cpp b/tests/benchmarks/gui/animation/qanimation/dummyanimation.cpp
index f7d085f759..5313e85a8a 100644
--- a/tests/benchmarks/gui/animation/qanimation/dummyanimation.cpp
+++ b/tests/benchmarks/gui/animation/qanimation/dummyanimation.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/animation/qanimation/dummyanimation.h b/tests/benchmarks/gui/animation/qanimation/dummyanimation.h
index caccebffc2..471fe97632 100644
--- a/tests/benchmarks/gui/animation/qanimation/dummyanimation.h
+++ b/tests/benchmarks/gui/animation/qanimation/dummyanimation.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/animation/qanimation/dummyobject.cpp b/tests/benchmarks/gui/animation/qanimation/dummyobject.cpp
index c0c163214b..299701faaa 100644
--- a/tests/benchmarks/gui/animation/qanimation/dummyobject.cpp
+++ b/tests/benchmarks/gui/animation/qanimation/dummyobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtGui module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/animation/qanimation/dummyobject.h b/tests/benchmarks/gui/animation/qanimation/dummyobject.h
index 0da4aa60e1..85803efe60 100644
--- a/tests/benchmarks/gui/animation/qanimation/dummyobject.h
+++ b/tests/benchmarks/gui/animation/qanimation/dummyobject.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/animation/qanimation/main.cpp b/tests/benchmarks/gui/animation/qanimation/main.cpp
index 2ca58bd66b..51a861f828 100644
--- a/tests/benchmarks/gui/animation/qanimation/main.cpp
+++ b/tests/benchmarks/gui/animation/qanimation/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/animation/qanimation/rectanimation.cpp b/tests/benchmarks/gui/animation/qanimation/rectanimation.cpp
index aa64b19ca0..00d288352b 100644
--- a/tests/benchmarks/gui/animation/qanimation/rectanimation.cpp
+++ b/tests/benchmarks/gui/animation/qanimation/rectanimation.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/animation/qanimation/rectanimation.h b/tests/benchmarks/gui/animation/qanimation/rectanimation.h
index d8b20d5e6e..ee420ce828 100644
--- a/tests/benchmarks/gui/animation/qanimation/rectanimation.h
+++ b/tests/benchmarks/gui/animation/qanimation/rectanimation.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/main.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/main.cpp
index 8565e1bff1..a7e8256fa1 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/main.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemcontainer.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemcontainer.cpp
index 864d2889c2..d632c693d8 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemcontainer.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemcontainer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemcontainer.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemcontainer.h
index f12bf84cbc..17e4444afb 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemcontainer.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemcontainer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemview.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemview.cpp
index 82e7954145..af1d2aa8ea 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemview.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemview.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemview.h
index 97c2bd88e4..83bbd40f44 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemview.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractitemview.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.cpp
index b88ccb53f7..c27d15582a 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.h
index 97269badf1..9c3282dc6a 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractscrollarea.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractviewitem.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractviewitem.cpp
index 993a533b38..ab55460428 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractviewitem.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractviewitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractviewitem.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractviewitem.h
index c1628845f5..0efe59b95c 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractviewitem.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/abstractviewitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.cpp
index ec3f4c0093..9cffd3e12c 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.h
index c9b154313a..ddb98e431a 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/backgrounditem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.cpp
index 34737266b3..a5c9f257b8 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.h
index cb4b1853c1..367359f8e7 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/button.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.cpp
index 622cb22d5a..86c5ce2850 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.h
index cbfc63937b..508fb45479 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/commandline.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.cpp
index 60bebefcf2..48ee70a719 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.h
index 75e75235bc..76951267f1 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/dummydatagen.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.cpp
index cfa8ff63a8..9f2ef25ed3 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.h
index d26641a4c3..a956e7bcf4 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/gvbwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.cpp
index 53a745ba6a..0bb3be9ef5 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.h
index 818b480849..f240a56cbe 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/iconitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.cpp
index 6f3417e7c8..06008fd84b 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.h
index 87ce134267..e99aea9f07 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglist.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglistview.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglistview.cpp
index 96c1e8cb47..9ccbd13910 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglistview.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglistview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglistview.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglistview.h
index 119633b557..652b6f7f8c 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglistview.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/itemrecyclinglistview.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.cpp
index 8f6a42dbca..9ecf2cee19 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.h
index d203085cf7..802442ac88 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/label.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitem.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitem.cpp
index baeafaf6f3..1e3ba60192 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitem.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitem.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitem.h
index 9bd6157710..20563a3548 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitem.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.cpp
index b94097b21c..484eca2329 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.h
index cee8f67870..4668084d0f 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcache.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcontainer.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcontainer.cpp
index c7a088a730..becc3c4a9c 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcontainer.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcontainer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcontainer.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcontainer.h
index 6e9aab4417..9af8343bbc 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcontainer.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listitemcontainer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listmodel.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listmodel.cpp
index aead236e84..b365d35b5e 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listmodel.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listmodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listmodel.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listmodel.h
index cd0a7a5228..b950fabb16 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listmodel.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listmodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listwidget.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listwidget.cpp
index 9d6bcc98d1..45b49b6517 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listwidget.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listwidget.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listwidget.h
index 0e6593d6f3..f16eaf83cb 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listwidget.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/listwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.cpp
index d8f3445d36..87abc0aa0f 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.h
index 17a3505b8e..2c7bd333a5 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/mainview.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.cpp
index 7757bcc616..a277508b94 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.h
index ea95a079cd..92510658f9 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/menu.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/recycledlistitem.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/recycledlistitem.cpp
index 9ee649438f..2b8dd0862a 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/recycledlistitem.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/recycledlistitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/recycledlistitem.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/recycledlistitem.h
index a70eb19303..d17f5bb887 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/recycledlistitem.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/recycledlistitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/resourcemoninterface.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/resourcemoninterface.h
index 04ab2fe229..a2fc445049 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/resourcemoninterface.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/resourcemoninterface.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.cpp
index 54236325d1..57aae1c156 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.h
index 7d05f858f3..d9d1f1afe3 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scrollbar.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller.cpp
index c45a880a8e..3ab387ee8f 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller.h
index fb7162265d..3640f160bc 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller_p.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller_p.h
index bfb83757b0..9ab027f205 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller_p.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/scroller_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/settings.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/settings.cpp
index ba153180e6..d40b8bb3c1 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/settings.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/settings.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/settings.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/settings.h
index 0635231cb5..9000353010 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/settings.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/settings.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelist.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelist.cpp
index be8c9d22ea..f634f98dab 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelist.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelist.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelist.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelist.h
index 9a84407aed..6bf857e32c 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelist.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelist.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.cpp
index 1dba139fd2..7f8576cb1a 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.h
index 5c7367991a..53b8d76f0d 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/simplelistview.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/theme.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/theme.cpp
index 76fd265986..25ba0d5ec0 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/theme.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/theme.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/theme.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/theme.h
index 1b9e6e047c..2b9c5080bc 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/theme.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/theme.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.cpp
index 4cdd7f0123..1ebdf2e0bb 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.h
index 86e2f1b0e8..c98f90da55 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/themeevent.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.cpp
index 09ff5d1394..d3840ba1bc 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.h
index c9ab96fbe8..a24b2291f0 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/topbar.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.cpp b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.cpp
index cfff4903fd..4d790088cd 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.cpp
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.h
index 9fad826363..a109bf4513 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview_p.h b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview_p.h
index 1a3a1613c1..c5a1c849f0 100644
--- a/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview_p.h
+++ b/tests/benchmarks/gui/graphicsview/functional/GraphicsViewBenchmark/widgets/webview_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
index 5f826a0141..b1aab58a7f 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsanchorlayout/tst_qgraphicsanchorlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
index f0cdbe29c5..2304147e80 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsitem/tst_qgraphicsitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicslayout/tst_qgraphicslayout.cpp b/tests/benchmarks/gui/graphicsview/qgraphicslayout/tst_qgraphicslayout.cpp
index 83ab96e5c3..eb24a2ccce 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicslayout/tst_qgraphicslayout.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicslayout/tst_qgraphicslayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp
index b52336dcd6..b590fbd5f3 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicslinearlayout/tst_qgraphicslinearlayout.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
index e713ecf03f..3881737a2f 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsscene/tst_qgraphicsscene.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.cpp
index f82b66f4fa..00d2b01908 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.h b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.h
index 49fccb42e5..b13f4a11e1 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.h
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/chip.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/main.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/main.cpp
index 04aaa8b54b..ed8b487657 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/main.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.cpp
index f755976d55..f69d76473a 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.h b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.h
index 7042cb5bb3..8134d69204 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.h
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.cpp
index 7ea4ffbe00..f35a3ffbb9 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.h b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.h
index 9e22a98c32..26f6555b67 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.h
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/chipTest/view.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/main.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/main.cpp
index d02b034834..00f4e6855e 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/main.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/moveItems/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/main.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/main.cpp
index 0b2e87fcaf..efb7f3fce3 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/main.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/benchapps/scrolltest/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.cpp
index 71e69fed9f..a585d7e38b 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.h b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.h
index 3ef2ef546f..ef3550e8d7 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.h
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chip.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.cpp
index f106cbe4e3..cae21fcfac 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h
index debb78ffbf..bac2d46bc8 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/chiptester/chiptester.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp b/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
index dd1d7a3934..cc549f835d 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicsview/tst_qgraphicsview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp b/tests/benchmarks/gui/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
index 08e7c88a76..f9e0cb6399 100644
--- a/tests/benchmarks/gui/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
+++ b/tests/benchmarks/gui/graphicsview/qgraphicswidget/tst_qgraphicswidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/image/blendbench/main.cpp b/tests/benchmarks/gui/image/blendbench/main.cpp
index 24cfba9012..82d7d4bd62 100644
--- a/tests/benchmarks/gui/image/blendbench/main.cpp
+++ b/tests/benchmarks/gui/image/blendbench/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/image/qimageconversion/qimageconversion.pro b/tests/benchmarks/gui/image/qimageconversion/qimageconversion.pro
index 7b3ba93737..904ffa13d0 100644
--- a/tests/benchmarks/gui/image/qimageconversion/qimageconversion.pro
+++ b/tests/benchmarks/gui/image/qimageconversion/qimageconversion.pro
@@ -5,5 +5,3 @@ SOURCES += tst_qimageconversion.cpp
!contains(QT_CONFIG, no-gif):DEFINES += QTEST_HAVE_GIF
!contains(QT_CONFIG, no-jpeg):DEFINES += QTEST_HAVE_JPEG
-!contains(QT_CONFIG, no-mng):DEFINES += QTEST_HAVE_MNG
-!contains(QT_CONFIG, no-tiff):DEFINES += QTEST_HAVE_TIFF
diff --git a/tests/benchmarks/gui/image/qimageconversion/tst_qimageconversion.cpp b/tests/benchmarks/gui/image/qimageconversion/tst_qimageconversion.cpp
index 7be221a5ec..b9bd786e2b 100644
--- a/tests/benchmarks/gui/image/qimageconversion/tst_qimageconversion.cpp
+++ b/tests/benchmarks/gui/image/qimageconversion/tst_qimageconversion.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/image/qimagereader/images/ball.mng b/tests/benchmarks/gui/image/qimagereader/images/ball.mng
deleted file mode 100644
index 81544780fd..0000000000
--- a/tests/benchmarks/gui/image/qimagereader/images/ball.mng
+++ /dev/null
Binary files differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/corrupt-data.tif b/tests/benchmarks/gui/image/qimagereader/images/corrupt-data.tif
deleted file mode 100644
index d63c688b27..0000000000
--- a/tests/benchmarks/gui/image/qimagereader/images/corrupt-data.tif
+++ /dev/null
Binary files differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/corrupt.mng b/tests/benchmarks/gui/image/qimagereader/images/corrupt.mng
deleted file mode 100644
index 17fd43a5ca..0000000000
--- a/tests/benchmarks/gui/image/qimagereader/images/corrupt.mng
+++ /dev/null
Binary files differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/fire.mng b/tests/benchmarks/gui/image/qimagereader/images/fire.mng
deleted file mode 100644
index c6695c8369..0000000000
--- a/tests/benchmarks/gui/image/qimagereader/images/fire.mng
+++ /dev/null
Binary files differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/rgba_adobedeflate_littleendian.tif b/tests/benchmarks/gui/image/qimagereader/images/rgba_adobedeflate_littleendian.tif
deleted file mode 100644
index 78868b0d48..0000000000
--- a/tests/benchmarks/gui/image/qimagereader/images/rgba_adobedeflate_littleendian.tif
+++ /dev/null
Binary files differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/rgba_lzw_littleendian.tif b/tests/benchmarks/gui/image/qimagereader/images/rgba_lzw_littleendian.tif
deleted file mode 100644
index 107eab74e7..0000000000
--- a/tests/benchmarks/gui/image/qimagereader/images/rgba_lzw_littleendian.tif
+++ /dev/null
Binary files differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/rgba_nocompression_bigendian.tif b/tests/benchmarks/gui/image/qimagereader/images/rgba_nocompression_bigendian.tif
deleted file mode 100644
index c314bae4c0..0000000000
--- a/tests/benchmarks/gui/image/qimagereader/images/rgba_nocompression_bigendian.tif
+++ /dev/null
Binary files differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/rgba_nocompression_littleendian.tif b/tests/benchmarks/gui/image/qimagereader/images/rgba_nocompression_littleendian.tif
deleted file mode 100644
index 4f820f6649..0000000000
--- a/tests/benchmarks/gui/image/qimagereader/images/rgba_nocompression_littleendian.tif
+++ /dev/null
Binary files differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/rgba_packbits_littleendian.tif b/tests/benchmarks/gui/image/qimagereader/images/rgba_packbits_littleendian.tif
deleted file mode 100644
index ddeec38fbc..0000000000
--- a/tests/benchmarks/gui/image/qimagereader/images/rgba_packbits_littleendian.tif
+++ /dev/null
Binary files differ
diff --git a/tests/benchmarks/gui/image/qimagereader/images/rgba_zipdeflate_littleendian.tif b/tests/benchmarks/gui/image/qimagereader/images/rgba_zipdeflate_littleendian.tif
deleted file mode 100644
index 50a3024246..0000000000
--- a/tests/benchmarks/gui/image/qimagereader/images/rgba_zipdeflate_littleendian.tif
+++ /dev/null
Binary files differ
diff --git a/tests/benchmarks/gui/image/qimagereader/qimagereader.pro b/tests/benchmarks/gui/image/qimagereader/qimagereader.pro
index 311ffad009..cc2c8e0701 100644
--- a/tests/benchmarks/gui/image/qimagereader/qimagereader.pro
+++ b/tests/benchmarks/gui/image/qimagereader/qimagereader.pro
@@ -7,8 +7,6 @@ SOURCES += tst_qimagereader.cpp
!contains(QT_CONFIG, no-gif):DEFINES += QTEST_HAVE_GIF
!contains(QT_CONFIG, no-jpeg):DEFINES += QTEST_HAVE_JPEG
-!contains(QT_CONFIG, no-mng):DEFINES += QTEST_HAVE_MNG
-!contains(QT_CONFIG, no-tiff):DEFINES += QTEST_HAVE_TIFF
QT += network
wince*: {
diff --git a/tests/benchmarks/gui/image/qimagereader/tst_qimagereader.cpp b/tests/benchmarks/gui/image/qimagereader/tst_qimagereader.cpp
index 363e7df5ac..ca81b1f079 100644
--- a/tests/benchmarks/gui/image/qimagereader/tst_qimagereader.cpp
+++ b/tests/benchmarks/gui/image/qimagereader/tst_qimagereader.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -117,10 +117,6 @@ tst_QImageReader::tst_QImageReader()
images << QPair<QString, QByteArray>(QLatin1String("earth.gif"), QByteArray("gif"));
images << QPair<QString, QByteArray>(QLatin1String("trolltech.gif"), QByteArray("gif"));
#endif
-#if defined QTEST_HAVE_MNG
- images << QPair<QString, QByteArray>(QLatin1String("ball.mng"), QByteArray("mng"));
- images << QPair<QString, QByteArray>(QLatin1String("fire.mng"), QByteArray("mng"));
-#endif
}
tst_QImageReader::~tst_QImageReader()
diff --git a/tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp b/tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp
index 110bcbbca4..41afffe556 100644
--- a/tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp
+++ b/tests/benchmarks/gui/image/qpixmap/tst_qpixmap.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/image/qpixmapcache/tst_qpixmapcache.cpp b/tests/benchmarks/gui/image/qpixmapcache/tst_qpixmapcache.cpp
index fa169cb0b1..3658579d00 100644
--- a/tests/benchmarks/gui/image/qpixmapcache/tst_qpixmapcache.cpp
+++ b/tests/benchmarks/gui/image/qpixmapcache/tst_qpixmapcache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/itemviews/itemviews.pro b/tests/benchmarks/gui/itemviews/itemviews.pro
index be0ee558dc..a23cdf7b97 100644
--- a/tests/benchmarks/gui/itemviews/itemviews.pro
+++ b/tests/benchmarks/gui/itemviews/itemviews.pro
@@ -1,3 +1,4 @@
TEMPLATE = subdirs
SUBDIRS = \
- qtableview
+ qtableview \
+ qheaderview
diff --git a/tests/benchmarks/gui/itemviews/qheaderview/qheaderview.pro b/tests/benchmarks/gui/itemviews/qheaderview/qheaderview.pro
new file mode 100644
index 0000000000..12cb5d5f03
--- /dev/null
+++ b/tests/benchmarks/gui/itemviews/qheaderview/qheaderview.pro
@@ -0,0 +1,7 @@
+QT += widgets testlib
+
+TEMPLATE = app
+TARGET = bench_qheaderview
+
+SOURCES += qheaderviewbench.cpp
+
diff --git a/tests/benchmarks/gui/itemviews/qheaderview/qheaderviewbench.cpp b/tests/benchmarks/gui/itemviews/qheaderview/qheaderviewbench.cpp
new file mode 100644
index 0000000000..ec3f076d67
--- /dev/null
+++ b/tests/benchmarks/gui/itemviews/qheaderview/qheaderviewbench.cpp
@@ -0,0 +1,264 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Thorbjørn Lund Martsum - tmartsum[at]gmail.com
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <QtTest/QtTest>
+#include <QtWidgets/QtWidgets>
+
+class BenchQHeaderView : public QObject
+{
+ Q_OBJECT
+public:
+ BenchQHeaderView() : QObject() {m_tv = 0; m_hv = 0; m_model = 0;}
+
+protected:
+ QTableView *m_tv;
+ QHeaderView *m_hv;
+ QStandardItemModel *m_model;
+ QStandardItemModel m_normalmodel;
+ QElapsedTimer t;
+ bool m_worst_case;
+ void setupTestData();
+
+ bool m_blockSomeSignals;
+ bool m_updatesEnabled;
+ int m_rowcount;
+ int m_colcount;
+
+
+private slots:
+ void init();
+ void cleanupTestCase();
+ void initTestCase();
+ void cleanup();
+ void visualIndexAtSpecial_data() {setupTestData();}
+ void visualIndexAt_data() {setupTestData();}
+ void hideShowBench_data() {setupTestData();}
+ void swapSectionsBench_data() {setupTestData();}
+ void moveSectionBench_data() {setupTestData();}
+ void defaultSizeBench_data() {setupTestData();}
+ void removeBench_data() {setupTestData();}
+ void insertBench_data() {setupTestData();}
+ void truncBench_data() {setupTestData();}
+
+ void visualIndexAtSpecial();
+ void visualIndexAt();
+ void hideShowBench();
+ void swapSectionsBench();
+ void moveSectionBench();
+ void defaultSizeBench();
+ void removeBench();
+ void insertBench();
+ void truncBench();
+};
+
+void BenchQHeaderView::setupTestData()
+{
+ QTest::addColumn<bool>("worst_case");
+ QTest::newRow("Less relevant best case") << false;
+ QTest::newRow("__* More important worst case *__") << true;
+}
+
+void BenchQHeaderView::initTestCase()
+{
+ m_tv = new QTableView();
+ m_hv = m_tv->verticalHeader();
+ m_model = &m_normalmodel;
+ m_tv->setModel(m_model);
+ m_tv->show();
+}
+
+void BenchQHeaderView::cleanupTestCase()
+{
+ delete m_tv;
+ m_tv = 0;
+ m_hv = 0;
+}
+
+void BenchQHeaderView::init()
+{
+ QFETCH(bool, worst_case);
+
+ m_blockSomeSignals = true;
+ m_updatesEnabled = false;
+ m_rowcount = 2500;
+ m_colcount = 10;
+
+ m_worst_case = worst_case;
+ m_model->clear();
+ if (worst_case) {
+ for (int u = 0; u <= m_rowcount; ++u) // ensures fragment in Qt 4.x
+ m_model->setRowCount(u);
+ m_model->setColumnCount(m_colcount);
+ m_hv->swapSections(0, m_rowcount - 1);
+ m_hv->hideSection(m_rowcount / 2);
+ } else {
+ m_model->setColumnCount(m_colcount);
+ m_model->setRowCount(m_rowcount);
+ }
+
+ QString s;
+ for (int i = 0; i < m_model->rowCount(); ++i) {
+ m_model->setData(m_model->index(i, 0), QVariant(i));
+ s.setNum(i);
+ s += ".";
+ s += 'a' + (i % 25);
+ m_model->setData(m_model->index(i, 1), QVariant(s));
+ }
+ m_tv->setUpdatesEnabled(m_updatesEnabled);
+ m_hv->blockSignals(m_blockSomeSignals);
+
+ const int default_section_size = 25;
+ m_hv->setDefaultSectionSize(default_section_size);
+}
+
+void BenchQHeaderView::cleanup()
+{
+ m_tv->setUpdatesEnabled(true);
+ m_hv->blockSignals(false);
+}
+
+void BenchQHeaderView::visualIndexAtSpecial()
+{
+ int lookup_pos = m_hv->length() - 50;
+ int testnum = 0;
+
+ QBENCHMARK {
+ ++testnum;
+ m_hv->resizeSection(0, testnum % 47);
+ m_hv->visualIndexAt(lookup_pos);
+ }
+}
+
+void BenchQHeaderView::visualIndexAt()
+{
+ const int center_pos = m_hv->length() / 2;
+ const int maxpos = m_hv->length() - 1;
+
+ QBENCHMARK {
+ m_hv->visualIndexAt(0);
+ m_hv->visualIndexAt(center_pos);
+ m_hv->visualIndexAt(maxpos);
+ }
+}
+
+void BenchQHeaderView::hideShowBench()
+{
+ int n = 0;
+ bool hide_set = true;
+
+ QBENCHMARK {
+ m_hv->setSectionHidden(n, hide_set);
+ if (n >= m_hv->count()) {
+ n = -1;
+ hide_set = !hide_set;
+ }
+ ++n;
+ }
+}
+
+void BenchQHeaderView::swapSectionsBench()
+{
+ int n = 0;
+ QBENCHMARK {
+ m_hv->swapSections(n, n + 1);
+ if (++n >= m_hv->count())
+ n = 0;
+ }
+}
+
+void BenchQHeaderView::moveSectionBench()
+{
+ QBENCHMARK {
+ m_hv->moveSection(0, m_hv->count() - 2);
+ }
+}
+
+void BenchQHeaderView::defaultSizeBench()
+{
+ int n = 1;
+ QBENCHMARK {
+ m_hv->setDefaultSectionSize(n);
+ ++n;
+ }
+}
+
+void BenchQHeaderView::removeBench()
+{
+ QBENCHMARK {
+ m_model->removeRows(0, 1);
+ if (m_hv->count() == 0) { // setup a new hard model
+ m_model->setRowCount(m_rowcount);
+ if (m_worst_case) {
+ m_hv->swapSections(0, m_rowcount - 1);
+ m_hv->hideSection(m_rowcount / 2);
+ }
+ }
+ }
+}
+
+void BenchQHeaderView::insertBench()
+{
+ QBENCHMARK {
+ m_model->insertRows(1, 1);
+ if (m_hv->count() == 10000000) { // setup a new hard model
+ m_model->setRowCount(m_rowcount);
+ if (m_worst_case) {
+ m_hv->swapSections(0, m_rowcount - 1);
+ m_hv->hideSection(m_rowcount / 2);
+ }
+ }
+ }
+}
+
+void BenchQHeaderView::truncBench()
+{
+ QBENCHMARK {
+ m_model->setRowCount(1);
+ m_model->setRowCount(m_rowcount);
+ if (m_worst_case) {
+ m_hv->swapSections(0, m_rowcount - 1);
+ m_hv->hideSection(m_rowcount / 2);
+ }
+ }
+}
+
+QTEST_MAIN(BenchQHeaderView)
+#include "qheaderviewbench.moc"
diff --git a/tests/benchmarks/gui/itemviews/qtableview/tst_qtableview.cpp b/tests/benchmarks/gui/itemviews/qtableview/tst_qtableview.cpp
index 1b8d1f2327..2956d3773d 100644
--- a/tests/benchmarks/gui/itemviews/qtableview/tst_qtableview.cpp
+++ b/tests/benchmarks/gui/itemviews/qtableview/tst_qtableview.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/kernel/qapplication/main.cpp b/tests/benchmarks/gui/kernel/qapplication/main.cpp
index 6df3c5ac23..1960bdc41f 100644
--- a/tests/benchmarks/gui/kernel/qapplication/main.cpp
+++ b/tests/benchmarks/gui/kernel/qapplication/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/kernel/qguimetatype/tst_qguimetatype.cpp b/tests/benchmarks/gui/kernel/qguimetatype/tst_qguimetatype.cpp
index 2d5164eda9..398bfb0e35 100644
--- a/tests/benchmarks/gui/kernel/qguimetatype/tst_qguimetatype.cpp
+++ b/tests/benchmarks/gui/kernel/qguimetatype/tst_qguimetatype.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/kernel/qguivariant/tst_qguivariant.cpp b/tests/benchmarks/gui/kernel/qguivariant/tst_qguivariant.cpp
index 64e481ab7d..029c4300c0 100644
--- a/tests/benchmarks/gui/kernel/qguivariant/tst_qguivariant.cpp
+++ b/tests/benchmarks/gui/kernel/qguivariant/tst_qguivariant.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp b/tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp
index 8bd0cb8a03..7f65cdbd80 100644
--- a/tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp
+++ b/tests/benchmarks/gui/kernel/qwidget/tst_qwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/math3d/qmatrix4x4/tst_qmatrix4x4.cpp b/tests/benchmarks/gui/math3d/qmatrix4x4/tst_qmatrix4x4.cpp
index 6173870c10..9d12d1b055 100644
--- a/tests/benchmarks/gui/math3d/qmatrix4x4/tst_qmatrix4x4.cpp
+++ b/tests/benchmarks/gui/math3d/qmatrix4x4/tst_qmatrix4x4.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtOpenGL module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/math3d/qquaternion/tst_qquaternion.cpp b/tests/benchmarks/gui/math3d/qquaternion/tst_qquaternion.cpp
index b691b99455..6ab473e1b4 100644
--- a/tests/benchmarks/gui/math3d/qquaternion/tst_qquaternion.cpp
+++ b/tests/benchmarks/gui/math3d/qquaternion/tst_qquaternion.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/painting/qpainter/tst_qpainter.cpp b/tests/benchmarks/gui/painting/qpainter/tst_qpainter.cpp
index c659fa5af1..e5f09b9c04 100644
--- a/tests/benchmarks/gui/painting/qpainter/tst_qpainter.cpp
+++ b/tests/benchmarks/gui/painting/qpainter/tst_qpainter.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/painting/qregion/main.cpp b/tests/benchmarks/gui/painting/qregion/main.cpp
index 2a92387aa9..f444a4c6ad 100644
--- a/tests/benchmarks/gui/painting/qregion/main.cpp
+++ b/tests/benchmarks/gui/painting/qregion/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/painting/qtbench/benchmarktests.h b/tests/benchmarks/gui/painting/qtbench/benchmarktests.h
index 53cac3d7b6..e751c89bbf 100644
--- a/tests/benchmarks/gui/painting/qtbench/benchmarktests.h
+++ b/tests/benchmarks/gui/painting/qtbench/benchmarktests.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the FOO module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/painting/qtbench/tst_qtbench.cpp b/tests/benchmarks/gui/painting/qtbench/tst_qtbench.cpp
index c58e53f267..519e77bf1d 100644
--- a/tests/benchmarks/gui/painting/qtbench/tst_qtbench.cpp
+++ b/tests/benchmarks/gui/painting/qtbench/tst_qtbench.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/painting/qtracebench/tst_qtracebench.cpp b/tests/benchmarks/gui/painting/qtracebench/tst_qtracebench.cpp
index 3d29482970..72e2248850 100644
--- a/tests/benchmarks/gui/painting/qtracebench/tst_qtracebench.cpp
+++ b/tests/benchmarks/gui/painting/qtracebench/tst_qtracebench.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/painting/qtransform/tst_qtransform.cpp b/tests/benchmarks/gui/painting/qtransform/tst_qtransform.cpp
index 1ad44cca7a..4eea3ad5cb 100644
--- a/tests/benchmarks/gui/painting/qtransform/tst_qtransform.cpp
+++ b/tests/benchmarks/gui/painting/qtransform/tst_qtransform.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp b/tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp
index 3f10459615..fcddf5ed90 100644
--- a/tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp
+++ b/tests/benchmarks/gui/styles/qstylesheetstyle/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/text/qfontmetrics/main.cpp b/tests/benchmarks/gui/text/qfontmetrics/main.cpp
index ab1d2944a0..2d42f0d068 100644
--- a/tests/benchmarks/gui/text/qfontmetrics/main.cpp
+++ b/tests/benchmarks/gui/text/qfontmetrics/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/gui/text/qtext/main.cpp b/tests/benchmarks/gui/text/qtext/main.cpp
index 753021419d..d4acfce821 100644
--- a/tests/benchmarks/gui/text/qtext/main.cpp
+++ b/tests/benchmarks/gui/text/qtext/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -44,7 +44,6 @@
#include <QTextDocumentWriter>
#include <QTextLayout>
#include <QTextCursor>
-#include <private/qtextcontrol_p.h>
#include <qmath.h>
#include <QFile>
#include <QPainter>
@@ -73,7 +72,6 @@ private slots:
void odfWriting_text();
void odfWriting_images();
- void constructControl();
void constructDocument();
void newLineReplacement();
@@ -90,10 +88,6 @@ private slots:
void paintDocToPixmap();
void paintDocToPixmap_painterFill();
- void control();
- void paintControlToPixmap();
- void paintControlToPixmap_painterFill();
-
private:
QSize setupTextLayout(QTextLayout *layout, bool wrap = true, int wrapWidth = 100);
@@ -255,17 +249,6 @@ QSize tst_QText::setupTextLayout(QTextLayout *layout, bool wrap, int wrapWidth)
return QSize(qCeil(widthUsed), height);
}
-void tst_QText::constructControl()
-{
- QTextControl *control = new QTextControl;
- delete control;
-
- QBENCHMARK {
- QTextControl *control = new QTextControl;
- delete control;
- }
-}
-
void tst_QText::constructDocument()
{
QTextDocument *doc = new QTextDocument;
@@ -441,52 +424,6 @@ void tst_QText::paintDocToPixmap_painterFill()
}
}
-void tst_QText::control()
-{
- QTextControl *control = new QTextControl(m_shortLorem);
- Q_UNUSED(control);
-
- QBENCHMARK {
- QTextControl *control = new QTextControl;
- QTextDocument *doc = control->document();
- doc->setHtml(m_shortLorem);
- }
-}
-
-void tst_QText::paintControlToPixmap()
-{
- QTextControl *control = new QTextControl;
- QTextDocument *doc = control->document();
- doc->setHtml(m_shortLorem);
- doc->setTextWidth(300);
- QSize size = doc->size().toSize();
-
- QBENCHMARK {
- QPixmap img(size);
- img.fill(Qt::transparent);
- QPainter p(&img);
- control->drawContents(&p, QRectF(QPointF(0, 0), QSizeF(size)));
- }
-}
-
-void tst_QText::paintControlToPixmap_painterFill()
-{
- QTextControl *control = new QTextControl;
- QTextDocument *doc = control->document();
- doc->setHtml(m_shortLorem);
- doc->setTextWidth(300);
- QSize size = doc->size().toSize();
-
- QBENCHMARK {
- QPixmap img(size);
- QPainter p(&img);
- p.setCompositionMode(QPainter::CompositionMode_Source);
- p.fillRect(0, 0, img.width(), img.height(), Qt::transparent);
- p.setCompositionMode(QPainter::CompositionMode_SourceOver);
- control->drawContents(&p, QRectF(QPointF(0, 0), QSizeF(size)));
- }
-}
-
QTEST_MAIN(tst_QText)
#include "main.moc"
diff --git a/tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/main.cpp b/tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/main.cpp
index 96b959ed70..7e15e6e87a 100644
--- a/tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/main.cpp
+++ b/tests/benchmarks/network/access/qfile_vs_qnetworkaccessmanager/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp b/tests/benchmarks/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
index a6b5082f39..d1077934ac 100644
--- a/tests/benchmarks/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
+++ b/tests/benchmarks/network/access/qnetworkdiskcache/tst_qnetworkdiskcache.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp b/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp
index 81f9c1a3e8..e48172da89 100644
--- a/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp
+++ b/tests/benchmarks/network/access/qnetworkreply/tst_qnetworkreply.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/network/kernel/qhostinfo/main.cpp b/tests/benchmarks/network/kernel/qhostinfo/main.cpp
index bcab4e3894..23b45f27e9 100644
--- a/tests/benchmarks/network/kernel/qhostinfo/main.cpp
+++ b/tests/benchmarks/network/kernel/qhostinfo/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp b/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp
index 7157a6c690..ea923a7fd0 100644
--- a/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp
+++ b/tests/benchmarks/network/socket/qtcpserver/tst_qtcpserver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/network/ssl/qsslsocket/tst_qsslsocket.cpp b/tests/benchmarks/network/ssl/qsslsocket/tst_qsslsocket.cpp
index 3210a109c4..124999d125 100644
--- a/tests/benchmarks/network/ssl/qsslsocket/tst_qsslsocket.cpp
+++ b/tests/benchmarks/network/ssl/qsslsocket/tst_qsslsocket.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/opengl/main.cpp b/tests/benchmarks/opengl/main.cpp
index 9be7f17146..b92027ed7b 100644
--- a/tests/benchmarks/opengl/main.cpp
+++ b/tests/benchmarks/opengl/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/plugins/imageformats/jpeg/jpeg.cpp b/tests/benchmarks/plugins/imageformats/jpeg/jpeg.cpp
index d8b8fbc865..a3644efd53 100644
--- a/tests/benchmarks/plugins/imageformats/jpeg/jpeg.cpp
+++ b/tests/benchmarks/plugins/imageformats/jpeg/jpeg.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/benchmarks/sql/kernel/qsqlquery/main.cpp b/tests/benchmarks/sql/kernel/qsqlquery/main.cpp
index b3ed0fa058..9ed78cbeea 100644
--- a/tests/benchmarks/sql/kernel/qsqlquery/main.cpp
+++ b/tests/benchmarks/sql/kernel/qsqlquery/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/bearerex/bearerex.cpp b/tests/manual/bearerex/bearerex.cpp
index fd75c30438..190be6f6b4 100644
--- a/tests/manual/bearerex/bearerex.cpp
+++ b/tests/manual/bearerex/bearerex.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/bearerex/bearerex.h b/tests/manual/bearerex/bearerex.h
index 045d310f4a..7ab0177128 100644
--- a/tests/manual/bearerex/bearerex.h
+++ b/tests/manual/bearerex/bearerex.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/bearerex/datatransferer.cpp b/tests/manual/bearerex/datatransferer.cpp
index 5184bccde9..1380607632 100644
--- a/tests/manual/bearerex/datatransferer.cpp
+++ b/tests/manual/bearerex/datatransferer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/bearerex/datatransferer.h b/tests/manual/bearerex/datatransferer.h
index ddbd89be2a..e657b20b38 100644
--- a/tests/manual/bearerex/datatransferer.h
+++ b/tests/manual/bearerex/datatransferer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/bearerex/main.cpp b/tests/manual/bearerex/main.cpp
index e9bf03395f..f5eb612e3d 100644
--- a/tests/manual/bearerex/main.cpp
+++ b/tests/manual/bearerex/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/bearerex/xqlistwidget.cpp b/tests/manual/bearerex/xqlistwidget.cpp
index b236c41bc6..637f27cfdb 100644
--- a/tests/manual/bearerex/xqlistwidget.cpp
+++ b/tests/manual/bearerex/xqlistwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/bearerex/xqlistwidget.h b/tests/manual/bearerex/xqlistwidget.h
index 1715bec3ec..118943c9b1 100644
--- a/tests/manual/bearerex/xqlistwidget.h
+++ b/tests/manual/bearerex/xqlistwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/cmake/fail4/myobject.cpp b/tests/manual/cmake/fail4/myobject.cpp
index 251239cde0..292a76e569 100644
--- a/tests/manual/cmake/fail4/myobject.cpp
+++ b/tests/manual/cmake/fail4/myobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/cmake/fail4/myobject.h b/tests/manual/cmake/fail4/myobject.h
index e2e908d32c..cd8765d03f 100644
--- a/tests/manual/cmake/fail4/myobject.h
+++ b/tests/manual/cmake/fail4/myobject.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/cmake/fail5/myobject.cpp b/tests/manual/cmake/fail5/myobject.cpp
index 251239cde0..292a76e569 100644
--- a/tests/manual/cmake/fail5/myobject.cpp
+++ b/tests/manual/cmake/fail5/myobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/cmake/fail5/myobject.h b/tests/manual/cmake/fail5/myobject.h
index e2e908d32c..cd8765d03f 100644
--- a/tests/manual/cmake/fail5/myobject.h
+++ b/tests/manual/cmake/fail5/myobject.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/cmake/pass(needsquoting)6/mywidget.cpp b/tests/manual/cmake/pass(needsquoting)6/mywidget.cpp
index 75804f9b3c..d1b2669980 100644
--- a/tests/manual/cmake/pass(needsquoting)6/mywidget.cpp
+++ b/tests/manual/cmake/pass(needsquoting)6/mywidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/cmake/pass(needsquoting)6/mywidget.h b/tests/manual/cmake/pass(needsquoting)6/mywidget.h
index 0f59d3835e..11968e6454 100644
--- a/tests/manual/cmake/pass(needsquoting)6/mywidget.h
+++ b/tests/manual/cmake/pass(needsquoting)6/mywidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/cmake/pass1/three.cpp b/tests/manual/cmake/pass1/three.cpp
index 41ba30b0ab..63bcbff480 100644
--- a/tests/manual/cmake/pass1/three.cpp
+++ b/tests/manual/cmake/pass1/three.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/cmake/pass1/two.cpp b/tests/manual/cmake/pass1/two.cpp
index 6f7d9bf17b..24fcd5dba4 100644
--- a/tests/manual/cmake/pass1/two.cpp
+++ b/tests/manual/cmake/pass1/two.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/cmake/pass2/myobject.cpp b/tests/manual/cmake/pass2/myobject.cpp
index 0f3d8b5b50..a237b00c50 100644
--- a/tests/manual/cmake/pass2/myobject.cpp
+++ b/tests/manual/cmake/pass2/myobject.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/cmake/pass2/myobject.h b/tests/manual/cmake/pass2/myobject.h
index e2e908d32c..cd8765d03f 100644
--- a/tests/manual/cmake/pass2/myobject.h
+++ b/tests/manual/cmake/pass2/myobject.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/cmake/pass3/mywidget.cpp b/tests/manual/cmake/pass3/mywidget.cpp
index 75804f9b3c..d1b2669980 100644
--- a/tests/manual/cmake/pass3/mywidget.cpp
+++ b/tests/manual/cmake/pass3/mywidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/cmake/pass3/mywidget.h b/tests/manual/cmake/pass3/mywidget.h
index 0f59d3835e..11968e6454 100644
--- a/tests/manual/cmake/pass3/mywidget.h
+++ b/tests/manual/cmake/pass3/mywidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Stephen Kelly <stephen.kelly@kdab.com>
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/cocoa/qt_on_cocoa/main.mm b/tests/manual/cocoa/qt_on_cocoa/main.mm
index 18b5c78993..9471412601 100644
--- a/tests/manual/cocoa/qt_on_cocoa/main.mm
+++ b/tests/manual/cocoa/qt_on_cocoa/main.mm
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/cocoa/qt_on_cocoa/window.cpp b/tests/manual/cocoa/qt_on_cocoa/window.cpp
index 5d24ceb51f..d68e08a9f8 100644
--- a/tests/manual/cocoa/qt_on_cocoa/window.cpp
+++ b/tests/manual/cocoa/qt_on_cocoa/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/cocoa/qt_on_cocoa/window.h b/tests/manual/cocoa/qt_on_cocoa/window.h
index 2fa2784427..6ba725ae13 100644
--- a/tests/manual/cocoa/qt_on_cocoa/window.h
+++ b/tests/manual/cocoa/qt_on_cocoa/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/gestures/graphicsview/gestures.cpp b/tests/manual/gestures/graphicsview/gestures.cpp
index 4dde0f5cb7..73db6c1787 100644
--- a/tests/manual/gestures/graphicsview/gestures.cpp
+++ b/tests/manual/gestures/graphicsview/gestures.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/gestures/graphicsview/gestures.h b/tests/manual/gestures/graphicsview/gestures.h
index 8104da640d..269f72712a 100644
--- a/tests/manual/gestures/graphicsview/gestures.h
+++ b/tests/manual/gestures/graphicsview/gestures.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/gestures/graphicsview/imageitem.cpp b/tests/manual/gestures/graphicsview/imageitem.cpp
index 03e9946cf4..6e3aa001a0 100644
--- a/tests/manual/gestures/graphicsview/imageitem.cpp
+++ b/tests/manual/gestures/graphicsview/imageitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/gestures/graphicsview/imageitem.h b/tests/manual/gestures/graphicsview/imageitem.h
index d789a3e914..67cd7df07b 100644
--- a/tests/manual/gestures/graphicsview/imageitem.h
+++ b/tests/manual/gestures/graphicsview/imageitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/gestures/graphicsview/main.cpp b/tests/manual/gestures/graphicsview/main.cpp
index f46d7139d8..ddda06ea22 100644
--- a/tests/manual/gestures/graphicsview/main.cpp
+++ b/tests/manual/gestures/graphicsview/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/gestures/graphicsview/mousepangesturerecognizer.cpp b/tests/manual/gestures/graphicsview/mousepangesturerecognizer.cpp
index 778ba78a10..0430d27c26 100644
--- a/tests/manual/gestures/graphicsview/mousepangesturerecognizer.cpp
+++ b/tests/manual/gestures/graphicsview/mousepangesturerecognizer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/gestures/graphicsview/mousepangesturerecognizer.h b/tests/manual/gestures/graphicsview/mousepangesturerecognizer.h
index 0e2684a285..720f0fe997 100644
--- a/tests/manual/gestures/graphicsview/mousepangesturerecognizer.h
+++ b/tests/manual/gestures/graphicsview/mousepangesturerecognizer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/gestures/scrollarea/main.cpp b/tests/manual/gestures/scrollarea/main.cpp
index ec5176600e..d77ce8e373 100644
--- a/tests/manual/gestures/scrollarea/main.cpp
+++ b/tests/manual/gestures/scrollarea/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/gestures/scrollarea/mousepangesturerecognizer.cpp b/tests/manual/gestures/scrollarea/mousepangesturerecognizer.cpp
index 8231fe0e74..c8c01325f6 100644
--- a/tests/manual/gestures/scrollarea/mousepangesturerecognizer.cpp
+++ b/tests/manual/gestures/scrollarea/mousepangesturerecognizer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/gestures/scrollarea/mousepangesturerecognizer.h b/tests/manual/gestures/scrollarea/mousepangesturerecognizer.h
index 0e2684a285..720f0fe997 100644
--- a/tests/manual/gestures/scrollarea/mousepangesturerecognizer.h
+++ b/tests/manual/gestures/scrollarea/mousepangesturerecognizer.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/inputmethodhints/inputmethodhints.cpp b/tests/manual/inputmethodhints/inputmethodhints.cpp
index 1754a3cd26..6206877e44 100644
--- a/tests/manual/inputmethodhints/inputmethodhints.cpp
+++ b/tests/manual/inputmethodhints/inputmethodhints.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/inputmethodhints/inputmethodhints.h b/tests/manual/inputmethodhints/inputmethodhints.h
index 6e2d934204..4746c9a11a 100644
--- a/tests/manual/inputmethodhints/inputmethodhints.h
+++ b/tests/manual/inputmethodhints/inputmethodhints.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/inputmethodhints/main.cpp b/tests/manual/inputmethodhints/main.cpp
index a276cde1f2..af3286df73 100644
--- a/tests/manual/inputmethodhints/main.cpp
+++ b/tests/manual/inputmethodhints/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/keypadnavigation/main.cpp b/tests/manual/keypadnavigation/main.cpp
index 2edc67a426..4f7224d135 100644
--- a/tests/manual/keypadnavigation/main.cpp
+++ b/tests/manual/keypadnavigation/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/lance/interactivewidget.cpp b/tests/manual/lance/interactivewidget.cpp
index fb480b1d0b..55e60a8946 100644
--- a/tests/manual/lance/interactivewidget.cpp
+++ b/tests/manual/lance/interactivewidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/lance/interactivewidget.h b/tests/manual/lance/interactivewidget.h
index ac46a0ec36..e9e584512e 100644
--- a/tests/manual/lance/interactivewidget.h
+++ b/tests/manual/lance/interactivewidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/lance/main.cpp b/tests/manual/lance/main.cpp
index 7ff8b1cf36..c33cb49be9 100644
--- a/tests/manual/lance/main.cpp
+++ b/tests/manual/lance/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/lance/widgets.h b/tests/manual/lance/widgets.h
index 28ed34f653..d8a67a7554 100644
--- a/tests/manual/lance/widgets.h
+++ b/tests/manual/lance/widgets.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/mkspecs/test.sh b/tests/manual/mkspecs/test.sh
index d384df2098..12182e3cc9 100755
--- a/tests/manual/mkspecs/test.sh
+++ b/tests/manual/mkspecs/test.sh
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is part of the manual tests of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
diff --git a/tests/manual/network_remote_stresstest/tst_network_remote_stresstest.cpp b/tests/manual/network_remote_stresstest/tst_network_remote_stresstest.cpp
index 06e211738e..c2981c6df8 100644
--- a/tests/manual/network_remote_stresstest/tst_network_remote_stresstest.cpp
+++ b/tests/manual/network_remote_stresstest/tst_network_remote_stresstest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/network_stresstest/minihttpserver.cpp b/tests/manual/network_stresstest/minihttpserver.cpp
index d024fe0f06..e3473a3141 100644
--- a/tests/manual/network_stresstest/minihttpserver.cpp
+++ b/tests/manual/network_stresstest/minihttpserver.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the FOO module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/network_stresstest/minihttpserver.h b/tests/manual/network_stresstest/minihttpserver.h
index a622159ce6..3df3f5982e 100644
--- a/tests/manual/network_stresstest/minihttpserver.h
+++ b/tests/manual/network_stresstest/minihttpserver.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the FOO module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/network_stresstest/tst_network_stresstest.cpp b/tests/manual/network_stresstest/tst_network_stresstest.cpp
index debae981ab..0f2673e23c 100644
--- a/tests/manual/network_stresstest/tst_network_stresstest.cpp
+++ b/tests/manual/network_stresstest/tst_network_stresstest.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qcursor/allcursors/main.cpp b/tests/manual/qcursor/allcursors/main.cpp
index 1b0d9a55bd..8872481e88 100644
--- a/tests/manual/qcursor/allcursors/main.cpp
+++ b/tests/manual/qcursor/allcursors/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qcursor/allcursors/mainwindow.cpp b/tests/manual/qcursor/allcursors/mainwindow.cpp
index 8807f6f1d0..cf1dd0b62e 100644
--- a/tests/manual/qcursor/allcursors/mainwindow.cpp
+++ b/tests/manual/qcursor/allcursors/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qcursor/allcursors/mainwindow.h b/tests/manual/qcursor/allcursors/mainwindow.h
index d9dc3bcb78..938f744862 100644
--- a/tests/manual/qcursor/allcursors/mainwindow.h
+++ b/tests/manual/qcursor/allcursors/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qcursor/grab_override/main.cpp b/tests/manual/qcursor/grab_override/main.cpp
index 1b0d9a55bd..8872481e88 100644
--- a/tests/manual/qcursor/grab_override/main.cpp
+++ b/tests/manual/qcursor/grab_override/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qcursor/grab_override/mainwindow.cpp b/tests/manual/qcursor/grab_override/mainwindow.cpp
index d6c671a642..49c908627c 100644
--- a/tests/manual/qcursor/grab_override/mainwindow.cpp
+++ b/tests/manual/qcursor/grab_override/mainwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qcursor/grab_override/mainwindow.h b/tests/manual/qcursor/grab_override/mainwindow.h
index e5a2042bb0..c231e9583d 100644
--- a/tests/manual/qcursor/grab_override/mainwindow.h
+++ b/tests/manual/qcursor/grab_override/mainwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qdesktopwidget/main.cpp b/tests/manual/qdesktopwidget/main.cpp
index 4982bd8321..d693d6b67d 100644
--- a/tests/manual/qdesktopwidget/main.cpp
+++ b/tests/manual/qdesktopwidget/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qgraphicsitemgroup/customitem.cpp b/tests/manual/qgraphicsitemgroup/customitem.cpp
index 2fb14d638a..6f3f1e0522 100644
--- a/tests/manual/qgraphicsitemgroup/customitem.cpp
+++ b/tests/manual/qgraphicsitemgroup/customitem.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qgraphicsitemgroup/customitem.h b/tests/manual/qgraphicsitemgroup/customitem.h
index c8416cf952..ec5f9d2022 100644
--- a/tests/manual/qgraphicsitemgroup/customitem.h
+++ b/tests/manual/qgraphicsitemgroup/customitem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qgraphicsitemgroup/main.cpp b/tests/manual/qgraphicsitemgroup/main.cpp
index c3310637b9..d60941da3a 100644
--- a/tests/manual/qgraphicsitemgroup/main.cpp
+++ b/tests/manual/qgraphicsitemgroup/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qgraphicsitemgroup/widget.cpp b/tests/manual/qgraphicsitemgroup/widget.cpp
index 1ff9e41c6a..5cfec8d2c4 100644
--- a/tests/manual/qgraphicsitemgroup/widget.cpp
+++ b/tests/manual/qgraphicsitemgroup/widget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qgraphicsitemgroup/widget.h b/tests/manual/qgraphicsitemgroup/widget.h
index 4e0489722f..8b4ba0a1b9 100644
--- a/tests/manual/qgraphicsitemgroup/widget.h
+++ b/tests/manual/qgraphicsitemgroup/widget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qgraphicslayout/flicker/main.cpp b/tests/manual/qgraphicslayout/flicker/main.cpp
index db9e53e302..e71915c22f 100644
--- a/tests/manual/qgraphicslayout/flicker/main.cpp
+++ b/tests/manual/qgraphicslayout/flicker/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qgraphicslayout/flicker/window.cpp b/tests/manual/qgraphicslayout/flicker/window.cpp
index 01a1182013..5b1e9412a4 100644
--- a/tests/manual/qgraphicslayout/flicker/window.cpp
+++ b/tests/manual/qgraphicslayout/flicker/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qgraphicslayout/flicker/window.h b/tests/manual/qgraphicslayout/flicker/window.h
index 872a7469d8..4930381641 100644
--- a/tests/manual/qgraphicslayout/flicker/window.h
+++ b/tests/manual/qgraphicslayout/flicker/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qhttpnetworkconnection/main.cpp b/tests/manual/qhttpnetworkconnection/main.cpp
index 9998577997..2d861530d3 100644
--- a/tests/manual/qhttpnetworkconnection/main.cpp
+++ b/tests/manual/qhttpnetworkconnection/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qimagereader/main.cpp b/tests/manual/qimagereader/main.cpp
index bc1772bbcc..44cdc6ad36 100644
--- a/tests/manual/qimagereader/main.cpp
+++ b/tests/manual/qimagereader/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qlocale/calendar.cpp b/tests/manual/qlocale/calendar.cpp
index 8fadf68ea7..e23af4fa49 100644
--- a/tests/manual/qlocale/calendar.cpp
+++ b/tests/manual/qlocale/calendar.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qlocale/calendar.h b/tests/manual/qlocale/calendar.h
index b03102f68d..bf0d5efac3 100644
--- a/tests/manual/qlocale/calendar.h
+++ b/tests/manual/qlocale/calendar.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qlocale/currency.cpp b/tests/manual/qlocale/currency.cpp
index f5d69de6c2..12d1ebe60b 100644
--- a/tests/manual/qlocale/currency.cpp
+++ b/tests/manual/qlocale/currency.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qlocale/currency.h b/tests/manual/qlocale/currency.h
index fbee336da1..1d3d536578 100644
--- a/tests/manual/qlocale/currency.h
+++ b/tests/manual/qlocale/currency.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qlocale/dateformats.cpp b/tests/manual/qlocale/dateformats.cpp
index e23a2b8e52..e9291e0195 100644
--- a/tests/manual/qlocale/dateformats.cpp
+++ b/tests/manual/qlocale/dateformats.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qlocale/dateformats.h b/tests/manual/qlocale/dateformats.h
index 67b2ed4a02..78ef62343a 100644
--- a/tests/manual/qlocale/dateformats.h
+++ b/tests/manual/qlocale/dateformats.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qlocale/info.cpp b/tests/manual/qlocale/info.cpp
index 2df46a22e3..5f8f20dc6e 100644
--- a/tests/manual/qlocale/info.cpp
+++ b/tests/manual/qlocale/info.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qlocale/info.h b/tests/manual/qlocale/info.h
index 1fd2b753df..6cd7818feb 100644
--- a/tests/manual/qlocale/info.h
+++ b/tests/manual/qlocale/info.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qlocale/languages.cpp b/tests/manual/qlocale/languages.cpp
index 189e6976b1..1d8122e7b0 100644
--- a/tests/manual/qlocale/languages.cpp
+++ b/tests/manual/qlocale/languages.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qlocale/languages.h b/tests/manual/qlocale/languages.h
index b365b7e4e3..6723e0ffa7 100644
--- a/tests/manual/qlocale/languages.h
+++ b/tests/manual/qlocale/languages.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qlocale/main.cpp b/tests/manual/qlocale/main.cpp
index e37113fdc2..337dbb6ad3 100644
--- a/tests/manual/qlocale/main.cpp
+++ b/tests/manual/qlocale/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qlocale/miscellaneous.cpp b/tests/manual/qlocale/miscellaneous.cpp
index fdf4d27f8e..ba1b1ef027 100644
--- a/tests/manual/qlocale/miscellaneous.cpp
+++ b/tests/manual/qlocale/miscellaneous.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qlocale/miscellaneous.h b/tests/manual/qlocale/miscellaneous.h
index 42e4e4f982..2548f0d8f4 100644
--- a/tests/manual/qlocale/miscellaneous.h
+++ b/tests/manual/qlocale/miscellaneous.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qlocale/numberformats.cpp b/tests/manual/qlocale/numberformats.cpp
index 99664f7e73..7807b3878e 100644
--- a/tests/manual/qlocale/numberformats.cpp
+++ b/tests/manual/qlocale/numberformats.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qlocale/numberformats.h b/tests/manual/qlocale/numberformats.h
index 79dcac0dc9..8243d1177c 100644
--- a/tests/manual/qlocale/numberformats.h
+++ b/tests/manual/qlocale/numberformats.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qlocale/window.cpp b/tests/manual/qlocale/window.cpp
index bb6aea3114..96f6295881 100644
--- a/tests/manual/qlocale/window.cpp
+++ b/tests/manual/qlocale/window.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qlocale/window.h b/tests/manual/qlocale/window.h
index 402cdd6259..1b2825aa5c 100644
--- a/tests/manual/qlocale/window.h
+++ b/tests/manual/qlocale/window.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -34,6 +33,7 @@
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qnetworkaccessmanager/qget/qget.cpp b/tests/manual/qnetworkaccessmanager/qget/qget.cpp
index 4e1bc4a71a..86b05f8afe 100644
--- a/tests/manual/qnetworkaccessmanager/qget/qget.cpp
+++ b/tests/manual/qnetworkaccessmanager/qget/qget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qnetworkaccessmanager/qget/qget.h b/tests/manual/qnetworkaccessmanager/qget/qget.h
index f66e3cd923..c8ab9e3a44 100644
--- a/tests/manual/qnetworkaccessmanager/qget/qget.h
+++ b/tests/manual/qnetworkaccessmanager/qget/qget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qnetworkaccessmanager/qget/qget.pro b/tests/manual/qnetworkaccessmanager/qget/qget.pro
index 80af8a556f..341f772b51 100644
--- a/tests/manual/qnetworkaccessmanager/qget/qget.pro
+++ b/tests/manual/qnetworkaccessmanager/qget/qget.pro
@@ -5,6 +5,3 @@ CONFIG += console
# Input
SOURCES += qget.cpp
HEADERS += qget.h
-
-symbian: TARGET.CAPABILITY += ReadUserData NetworkServices
-
diff --git a/tests/manual/qnetworkreply/main.cpp b/tests/manual/qnetworkreply/main.cpp
index bade33712e..69bc0ef5be 100644
--- a/tests/manual/qnetworkreply/main.cpp
+++ b/tests/manual/qnetworkreply/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qssloptions/main.cpp b/tests/manual/qssloptions/main.cpp
index 0b7b6b57bc..37c86601ec 100644
--- a/tests/manual/qssloptions/main.cpp
+++ b/tests/manual/qssloptions/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qtabletevent/device_information/main.cpp b/tests/manual/qtabletevent/device_information/main.cpp
index a8f42ab0a7..b4eea7875b 100644
--- a/tests/manual/qtabletevent/device_information/main.cpp
+++ b/tests/manual/qtabletevent/device_information/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qtabletevent/device_information/tabletwidget.cpp b/tests/manual/qtabletevent/device_information/tabletwidget.cpp
index 33b9fb9b0a..d12da6c886 100644
--- a/tests/manual/qtabletevent/device_information/tabletwidget.cpp
+++ b/tests/manual/qtabletevent/device_information/tabletwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qtabletevent/device_information/tabletwidget.h b/tests/manual/qtabletevent/device_information/tabletwidget.h
index e1a9860f28..2c01ca3356 100644
--- a/tests/manual/qtabletevent/device_information/tabletwidget.h
+++ b/tests/manual/qtabletevent/device_information/tabletwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qtabletevent/event_compression/main.cpp b/tests/manual/qtabletevent/event_compression/main.cpp
index d05f5cc55e..b7dd617d5d 100644
--- a/tests/manual/qtabletevent/event_compression/main.cpp
+++ b/tests/manual/qtabletevent/event_compression/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qtabletevent/event_compression/mousestatwidget.cpp b/tests/manual/qtabletevent/event_compression/mousestatwidget.cpp
index d43bc50820..4d55afadb0 100644
--- a/tests/manual/qtabletevent/event_compression/mousestatwidget.cpp
+++ b/tests/manual/qtabletevent/event_compression/mousestatwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qtabletevent/event_compression/mousestatwidget.h b/tests/manual/qtabletevent/event_compression/mousestatwidget.h
index 1a71ca44a4..c43fe86413 100644
--- a/tests/manual/qtabletevent/event_compression/mousestatwidget.h
+++ b/tests/manual/qtabletevent/event_compression/mousestatwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qtabletevent/regular_widgets/main.cpp b/tests/manual/qtabletevent/regular_widgets/main.cpp
index 1ecef826ee..fda7872ec9 100644
--- a/tests/manual/qtabletevent/regular_widgets/main.cpp
+++ b/tests/manual/qtabletevent/regular_widgets/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the FOO module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qtbug-8933/main.cpp b/tests/manual/qtbug-8933/main.cpp
index c3310637b9..d60941da3a 100644
--- a/tests/manual/qtbug-8933/main.cpp
+++ b/tests/manual/qtbug-8933/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qtbug-8933/widget.cpp b/tests/manual/qtbug-8933/widget.cpp
index 6a87857f91..a77875c344 100644
--- a/tests/manual/qtbug-8933/widget.cpp
+++ b/tests/manual/qtbug-8933/widget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qtbug-8933/widget.h b/tests/manual/qtbug-8933/widget.h
index 949cd2d11b..59b036bd44 100644
--- a/tests/manual/qtbug-8933/widget.h
+++ b/tests/manual/qtbug-8933/widget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qtouchevent/main.cpp b/tests/manual/qtouchevent/main.cpp
index 6d5fbca6a6..206413bfa2 100644
--- a/tests/manual/qtouchevent/main.cpp
+++ b/tests/manual/qtouchevent/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qtouchevent/touchwidget.cpp b/tests/manual/qtouchevent/touchwidget.cpp
index c26ab50f14..7e9afb9dbe 100644
--- a/tests/manual/qtouchevent/touchwidget.cpp
+++ b/tests/manual/qtouchevent/touchwidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qtouchevent/touchwidget.h b/tests/manual/qtouchevent/touchwidget.h
index 61ad0f9a68..46f512cbd9 100644
--- a/tests/manual/qtouchevent/touchwidget.h
+++ b/tests/manual/qtouchevent/touchwidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/qwidget_zorder/main.cpp b/tests/manual/qwidget_zorder/main.cpp
index 11e94bada3..dadc089ce4 100644
--- a/tests/manual/qwidget_zorder/main.cpp
+++ b/tests/manual/qwidget_zorder/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite module of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/repaint/mainwindow/main.cpp b/tests/manual/repaint/mainwindow/main.cpp
index 5f1020aec6..c6f0ac646f 100644
--- a/tests/manual/repaint/mainwindow/main.cpp
+++ b/tests/manual/repaint/mainwindow/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/repaint/scrollarea/main.cpp b/tests/manual/repaint/scrollarea/main.cpp
index e16866c4d6..63fb755510 100644
--- a/tests/manual/repaint/scrollarea/main.cpp
+++ b/tests/manual/repaint/scrollarea/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/repaint/shared/shared.h b/tests/manual/repaint/shared/shared.h
index 6cac04ee39..861d4178aa 100644
--- a/tests/manual/repaint/shared/shared.h
+++ b/tests/manual/repaint/shared/shared.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/repaint/splitter/main.cpp b/tests/manual/repaint/splitter/main.cpp
index a5c329ed82..2c4ca1d4f3 100644
--- a/tests/manual/repaint/splitter/main.cpp
+++ b/tests/manual/repaint/splitter/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/repaint/tableview/main.cpp b/tests/manual/repaint/tableview/main.cpp
index 25ccf5364e..dc25858681 100644
--- a/tests/manual/repaint/tableview/main.cpp
+++ b/tests/manual/repaint/tableview/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/repaint/task141091/main.cpp b/tests/manual/repaint/task141091/main.cpp
index ac30142ef4..b2f639d411 100644
--- a/tests/manual/repaint/task141091/main.cpp
+++ b/tests/manual/repaint/task141091/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/repaint/toplevel/main.cpp b/tests/manual/repaint/toplevel/main.cpp
index b5409a2fec..cd43fa699c 100644
--- a/tests/manual/repaint/toplevel/main.cpp
+++ b/tests/manual/repaint/toplevel/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/repaint/widget/main.cpp b/tests/manual/repaint/widget/main.cpp
index 1564bd2909..64b9cc8a18 100644
--- a/tests/manual/repaint/widget/main.cpp
+++ b/tests/manual/repaint/widget/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/socketengine/main.cpp b/tests/manual/socketengine/main.cpp
index c81e323df5..48893f062d 100644
--- a/tests/manual/socketengine/main.cpp
+++ b/tests/manual/socketengine/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/textrendering/glyphshaping/main.cpp b/tests/manual/textrendering/glyphshaping/main.cpp
index e3d061dd85..c41301f3fc 100644
--- a/tests/manual/textrendering/glyphshaping/main.cpp
+++ b/tests/manual/textrendering/glyphshaping/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/textrendering/textperformance/main.cpp b/tests/manual/textrendering/textperformance/main.cpp
index e4907e5ee1..c6a0c73849 100644
--- a/tests/manual/textrendering/textperformance/main.cpp
+++ b/tests/manual/textrendering/textperformance/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/widgets/itemviews/delegate/example.cpp b/tests/manual/widgets/itemviews/delegate/example.cpp
new file mode 100644
index 0000000000..20cff2663a
--- /dev/null
+++ b/tests/manual/widgets/itemviews/delegate/example.cpp
@@ -0,0 +1,86 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Thorbjørn Lund Martsum - tmartsum[at]gmail.com
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the test suite 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 <QtWidgets/QtWidgets>
+
+class ExampleEditor : public QLineEdit
+{
+public:
+ ExampleEditor(QWidget *parent = 0):QLineEdit(parent) { qDebug() << "ctor"; }
+ ~ExampleEditor() { QApplication::instance()->quit(); }
+};
+
+class ExampleDelegate : public QItemDelegate
+{
+public:
+ ExampleDelegate():QItemDelegate() { m_editor = new ExampleEditor(0); }
+protected:
+ QWidget* createEditor(QWidget *p, const QStyleOptionViewItem &o, const QModelIndex &) const
+ {
+ m_editor->setParent(p);
+ m_editor->setGeometry(o.rect);
+ return m_editor;
+ }
+ void destroyEditor(QWidget *editor, const QModelIndex &) const
+ {
+ editor->setParent(0);
+ qDebug() << "intercepted destroy :)";
+ }
+
+ // Avoid setting data - and therefore show that the editor keeps its state.
+ void setEditorData(QWidget*, const QModelIndex &) const { }
+
+ ~ExampleDelegate() { delete m_editor; }
+ mutable ExampleEditor *m_editor;
+};
+
+int main(int argc, char *argv[])
+{
+ QApplication app(argc, argv);
+ QTableView tv;
+ QStandardItemModel m;
+ m.setRowCount(4);
+ m.setColumnCount(2);
+ tv.setModel(&m);
+ tv.show();
+ tv.setItemDelegate(new ExampleDelegate());
+ app.exec();
+}
diff --git a/tests/manual/widgets/itemviews/delegate/example.pro b/tests/manual/widgets/itemviews/delegate/example.pro
new file mode 100644
index 0000000000..e9f2189272
--- /dev/null
+++ b/tests/manual/widgets/itemviews/delegate/example.pro
@@ -0,0 +1,2 @@
+TEMPLATE = app
+SOURCES=example.cpp
diff --git a/tests/manual/windowflags/controllerwindow.cpp b/tests/manual/windowflags/controllerwindow.cpp
index f22ec5ec87..69535b2856 100644
--- a/tests/manual/windowflags/controllerwindow.cpp
+++ b/tests/manual/windowflags/controllerwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/windowflags/controllerwindow.h b/tests/manual/windowflags/controllerwindow.h
index 84c39c9d2b..02827cffd8 100644
--- a/tests/manual/windowflags/controllerwindow.h
+++ b/tests/manual/windowflags/controllerwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/windowflags/main.cpp b/tests/manual/windowflags/main.cpp
index 18d212b88c..09d5534a59 100644
--- a/tests/manual/windowflags/main.cpp
+++ b/tests/manual/windowflags/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/windowflags/previewwindow.cpp b/tests/manual/windowflags/previewwindow.cpp
index a3e6b49546..601cc50efa 100644
--- a/tests/manual/windowflags/previewwindow.cpp
+++ b/tests/manual/windowflags/previewwindow.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/manual/windowflags/previewwindow.h b/tests/manual/windowflags/previewwindow.h
index 91e68ea6b5..42189016e1 100644
--- a/tests/manual/windowflags/previewwindow.h
+++ b/tests/manual/windowflags/previewwindow.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the examples of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tests/shared/filesystem.h b/tests/shared/filesystem.h
index 8832574b54..c681dcfa05 100644
--- a/tests/shared/filesystem.h
+++ b/tests/shared/filesystem.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tools/configure/configure.pro b/tools/configure/configure.pro
index edc1a26f88..d39d9b45cc 100644
--- a/tools/configure/configure.pro
+++ b/tools/configure/configure.pro
@@ -127,6 +127,8 @@ SOURCES = main.cpp configureapp.cpp environment.cpp tools.cpp \
$$QT_SOURCE_TREE/src/corelib/global/qmalloc.cpp \
$$QT_SOURCE_TREE/src/corelib/xml/qxmlstream.cpp \
$$QT_SOURCE_TREE/src/corelib/xml/qxmlutils.cpp \
+ $$QT_SOURCE_TREE/src/corelib/plugin/quuid.cpp \
+ $$QT_SOURCE_TREE/src/corelib/tools/qcryptographichash.cpp \
$$QT_SOURCE_TREE/tools/shared/windows/registry.cpp
DEFINES += COMMERCIAL_VERSION
diff --git a/tools/configure/configure_pch.h b/tools/configure/configure_pch.h
index 8badb40de6..6f601c7c29 100644
--- a/tools/configure/configure_pch.h
+++ b/tools/configure/configure_pch.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tools/configure/configureapp.cpp b/tools/configure/configureapp.cpp
index 56b08d4b37..fc82fe0702 100644
--- a/tools/configure/configureapp.cpp
+++ b/tools/configure/configureapp.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -188,7 +188,7 @@ Configure::Configure(int& argc, char** argv)
if (syncqt_bat.open(QFile::WriteOnly)) {
QTextStream stream(&syncqt_bat);
stream << "@echo off" << endl
- << "call " << fixSeparators(sourcePath) << fixSeparators("/bin/syncqt.bat -outdir \"") << fixSeparators(buildPath) << "\" \"" << fixSeparators(sourcePath) << "\"" << endl;
+ << "call " << fixSeparators(sourcePath) << fixSeparators("/bin/syncqt.bat -qtdir \"") << fixSeparators(buildPath) << "\" %*" << endl;
syncqt_bat.close();
}
}
@@ -244,19 +244,11 @@ Configure::Configure(int& argc, char** argv)
dictionary[ "CE_CRT" ] = "no";
dictionary[ "CETEST" ] = "auto";
dictionary[ "CE_SIGNATURE" ] = "no";
- dictionary[ "SCRIPT" ] = "auto";
- dictionary[ "SCRIPTTOOLS" ] = "auto";
- dictionary[ "XMLPATTERNS" ] = "auto";
- dictionary[ "PHONON" ] = "auto";
dictionary[ "PHONON_BACKEND" ] = "yes";
- dictionary[ "MULTIMEDIA" ] = "yes";
dictionary[ "AUDIO_BACKEND" ] = "auto";
dictionary[ "WMSDK" ] = "auto";
dictionary[ "DIRECTSHOW" ] = "no";
- dictionary[ "WEBKIT" ] = "auto";
- dictionary[ "V8" ] = "yes";
dictionary[ "V8SNAPSHOT" ] = "auto";
- dictionary[ "DECLARATIVE" ] = "auto";
dictionary[ "DECLARATIVE_DEBUG" ]= "yes";
dictionary[ "PLUGIN_MANIFESTS" ] = "yes";
dictionary[ "DIRECTWRITE" ] = "no";
@@ -305,15 +297,13 @@ Configure::Configure(int& argc, char** argv)
dictionary[ "ZLIB" ] = "auto";
+ dictionary[ "PCRE" ] = "auto";
+
dictionary[ "GIF" ] = "auto";
- dictionary[ "TIFF" ] = "auto";
dictionary[ "JPEG" ] = "auto";
dictionary[ "PNG" ] = "auto";
- dictionary[ "MNG" ] = "auto";
- dictionary[ "LIBTIFF" ] = "auto";
dictionary[ "LIBJPEG" ] = "auto";
dictionary[ "LIBPNG" ] = "auto";
- dictionary[ "LIBMNG" ] = "auto";
dictionary[ "FREETYPE" ] = "yes";
dictionary[ "ACCESSIBILITY" ] = "yes";
@@ -410,7 +400,7 @@ void Configure::parseCmdLine()
{
int argCount = configCmdLine.size();
int i = 0;
- const QStringList imageFormats = QStringList() << "gif" << "png" << "mng" << "jpeg" << "tiff";
+ const QStringList imageFormats = QStringList() << "gif" << "png" << "jpeg";
#if !defined(EVAL)
if (argCount < 1) // skip rest if no arguments
@@ -547,19 +537,16 @@ void Configure::parseCmdLine()
dictionary[ "ZLIB" ] = "system";
}
+ else if (configCmdLine.at(i) == "-qt-pcre") {
+ dictionary[ "PCRE" ] = "qt";
+ } else if (configCmdLine.at(i) == "-system-pcre") {
+ dictionary[ "PCRE" ] = "system";
+ }
+
// Image formats --------------------------------------------
else if (configCmdLine.at(i) == "-no-gif")
dictionary[ "GIF" ] = "no";
- else if (configCmdLine.at(i) == "-no-libtiff") {
- dictionary[ "TIFF"] = "no";
- dictionary[ "LIBTIFF" ] = "no";
- } else if (configCmdLine.at(i) == "-qt-libtiff") {
- dictionary[ "LIBTIFF" ] = "qt";
- } else if (configCmdLine.at(i) == "-system-libtiff") {
- dictionary[ "LIBTIFF" ] = "system";
- }
-
else if (configCmdLine.at(i) == "-no-libjpeg") {
dictionary[ "JPEG" ] = "no";
dictionary[ "LIBJPEG" ] = "no";
@@ -578,15 +565,6 @@ void Configure::parseCmdLine()
dictionary[ "LIBPNG" ] = "system";
}
- else if (configCmdLine.at(i) == "-no-libmng") {
- dictionary[ "MNG" ] = "no";
- dictionary[ "LIBMNG" ] = "no";
- } else if (configCmdLine.at(i) == "-qt-libmng") {
- dictionary[ "LIBMNG" ] = "qt";
- } else if (configCmdLine.at(i) == "-system-libmng") {
- dictionary[ "LIBMNG" ] = "system";
- }
-
// Text Rendering --------------------------------------------
else if (configCmdLine.at(i) == "-no-freetype")
dictionary[ "FREETYPE" ] = "no";
@@ -882,50 +860,16 @@ void Configure::parseCmdLine()
dictionary[ "DBUS" ] = "yes";
} else if (configCmdLine.at(i) == "-dbus-linked") {
dictionary[ "DBUS" ] = "linked";
- } else if (configCmdLine.at(i) == "-no-script") {
- dictionary[ "SCRIPT" ] = "no";
- } else if (configCmdLine.at(i) == "-script") {
- dictionary[ "SCRIPT" ] = "yes";
- } else if (configCmdLine.at(i) == "-no-scripttools") {
- dictionary[ "SCRIPTTOOLS" ] = "no";
- } else if (configCmdLine.at(i) == "-scripttools") {
- dictionary[ "SCRIPTTOOLS" ] = "yes";
- } else if (configCmdLine.at(i) == "-no-xmlpatterns") {
- dictionary[ "XMLPATTERNS" ] = "no";
- } else if (configCmdLine.at(i) == "-xmlpatterns") {
- dictionary[ "XMLPATTERNS" ] = "yes";
- } else if (configCmdLine.at(i) == "-no-multimedia") {
- dictionary[ "MULTIMEDIA" ] = "no";
- } else if (configCmdLine.at(i) == "-multimedia") {
- dictionary[ "MULTIMEDIA" ] = "yes";
} else if (configCmdLine.at(i) == "-audio-backend") {
dictionary[ "AUDIO_BACKEND" ] = "yes";
} else if (configCmdLine.at(i) == "-no-audio-backend") {
dictionary[ "AUDIO_BACKEND" ] = "no";
- } else if (configCmdLine.at(i) == "-no-phonon") {
- dictionary[ "PHONON" ] = "no";
- } else if (configCmdLine.at(i) == "-phonon") {
- dictionary[ "PHONON" ] = "yes";
} else if (configCmdLine.at(i) == "-no-phonon-backend") {
dictionary[ "PHONON_BACKEND" ] = "no";
} else if (configCmdLine.at(i) == "-phonon-backend") {
dictionary[ "PHONON_BACKEND" ] = "yes";
} else if (configCmdLine.at(i) == "-phonon-wince-ds9") {
dictionary[ "DIRECTSHOW" ] = "yes";
- } else if (configCmdLine.at(i) == "-no-webkit") {
- dictionary[ "WEBKIT" ] = "no";
- } else if (configCmdLine.at(i) == "-webkit") {
- dictionary[ "WEBKIT" ] = "yes";
- } else if (configCmdLine.at(i) == "-webkit-debug") {
- dictionary[ "WEBKIT" ] = "debug";
- } else if (configCmdLine.at(i) == "-no-v8") {
- dictionary[ "V8" ] = "no";
- } else if (configCmdLine.at(i) == "-v8") {
- dictionary[ "V8" ] = "yes";
- } else if (configCmdLine.at(i) == "-no-declarative") {
- dictionary[ "DECLARATIVE" ] = "no";
- } else if (configCmdLine.at(i) == "-declarative") {
- dictionary[ "DECLARATIVE" ] = "yes";
} else if (configCmdLine.at(i) == "-no-declarative-debug") {
dictionary[ "DECLARATIVE_DEBUG" ] = "no";
} else if (configCmdLine.at(i) == "-declarative-debug") {
@@ -1442,8 +1386,6 @@ void Configure::applySpecSpecifics()
dictionary[ "MMX" ] = "no";
dictionary[ "IWMMXT" ] = "no";
dictionary[ "CE_CRT" ] = "yes";
- dictionary[ "WEBKIT" ] = "no";
- dictionary[ "PHONON" ] = "yes";
dictionary[ "DIRECTSHOW" ] = "no";
// We only apply MMX/IWMMXT for mkspecs we know they work
if (dictionary[ "XQMAKESPEC" ].startsWith("wincewm")) {
@@ -1519,10 +1461,6 @@ bool Configure::displayHelp()
{
if (dictionary[ "HELP" ] == "yes") {
desc("Usage: configure\n"
-// desc("Usage: configure [-prefix dir] [-bindir <dir>] [-libdir <dir>]\n"
-// "[-docdir <dir>] [-headerdir <dir>] [-plugindir <dir>]\n"
-// "[-importdir <dir>] [-datadir <dir>] [-translationdir <dir>]\n"
-// "[-examplesdir <dir>]\n"
"[-release] [-debug] [-debug-and-release] [-shared] [-static]\n"
"[-no-fast] [-fast] [-no-exceptions] [-exceptions]\n"
"[-no-accessibility] [-accessibility] [-no-rtti] [-rtti]\n"
@@ -1533,11 +1471,10 @@ bool Configure::displayHelp()
"[-no-qmake] [-qmake] [-dont-process] [-process]\n"
"[-no-style-<style>] [-qt-style-<style>] [-redo]\n"
"[-saveconfig <config>] [-loadconfig <config>]\n"
- "[-qt-zlib] [-system-zlib] [-no-gif] [-no-libpng]\n"
- "[-qt-libpng] [-system-libpng] [-no-libtiff] [-qt-libtiff]\n"
- "[-system-libtiff] [-no-libjpeg] [-qt-libjpeg] [-system-libjpeg]\n"
- "[-no-libmng] [-qt-libmng] [-system-libmng] [-mmx]\n"
- "[-no-mmx] [-3dnow] [-no-3dnow] [-sse] [-no-sse] [-sse2] [-no-sse2]\n"
+ "[-qt-zlib] [-system-zlib] [-qt-pcre] [-system-pcre] [-no-gif]\n"
+ "[-no-libpng] [-qt-libpng] [-system-libpng]\n"
+ "[-no-libjpeg] [-qt-libjpeg] [-system-libjpeg]\n"
+ "[-mmx] [-no-mmx] [-3dnow] [-no-3dnow] [-sse] [-no-sse] [-sse2] [-no-sse2]\n"
"[-no-iwmmxt] [-iwmmxt] [-openssl] [-openssl-linked]\n"
"[-no-openssl] [-no-dbus] [-dbus] [-dbus-linked] [-platform <spec>]\n"
"[-qtnamespace <namespace>] [-qtlibinfix <infix>] [-no-phonon]\n"
@@ -1550,24 +1487,6 @@ bool Configure::displayHelp()
desc("Installation options:\n\n");
#if !defined(EVAL)
-/*
- desc(" These are optional, but you may specify install directories.\n\n", 0, 1);
-
- desc( "-prefix dir", "This will install everything relative to dir\n(default $QT_INSTALL_PREFIX)\n");
-
- desc(" You may use these to separate different parts of the install:\n\n", 0, 1);
-
- desc( "-bindir <dir>", "Executables will be installed to dir\n(default PREFIX/bin)");
- desc( "-libdir <dir>", "Libraries will be installed to dir\n(default PREFIX/lib)");
- desc( "-docdir <dir>", "Documentation will be installed to dir\n(default PREFIX/doc)");
- desc( "-headerdir <dir>", "Headers will be installed to dir\n(default PREFIX/include)");
- desc( "-plugindir <dir>", "Plugins will be installed to dir\n(default PREFIX/plugins)");
- desc( "-importdir <dir>", "Imports for QML will be installed to dir\n(default PREFIX/imports)");
- desc( "-datadir <dir>", "Data used by Qt programs will be installed to dir\n(default PREFIX)");
- desc( "-translationdir <dir>","Translations of Qt programs will be installed to dir\n(default PREFIX/translations)\n");
- desc( "-examplesdir <dir>", "Examples will be installed to dir\n(default PREFIX/examples)");
-*/
-
desc("Configure options:\n\n");
desc(" The defaults (*) are usually acceptable. A plus (+) denotes a default value"
@@ -1655,20 +1574,15 @@ bool Configure::displayHelp()
desc("ZLIB", "qt", "-qt-zlib", "Use the zlib bundled with Qt.");
desc("ZLIB", "system", "-system-zlib", "Use zlib from the operating system.\nSee http://www.gzip.org/zlib\n");
+ desc("PCRE", "qt", "-qt-pcre", "Use the PCRE library bundled with Qt.");
+ desc("PCRE", "qt", "-system-pcre", "Use the PCRE library from the operating system.\nSee http://pcre.org/\n");
+
desc("GIF", "no", "-no-gif", "Do not compile GIF reading support.");
desc("LIBPNG", "no", "-no-libpng", "Do not compile PNG support.");
desc("LIBPNG", "qt", "-qt-libpng", "Use the libpng bundled with Qt.");
desc("LIBPNG", "system","-system-libpng", "Use libpng from the operating system.\nSee http://www.libpng.org/pub/png\n");
- desc("LIBMNG", "no", "-no-libmng", "Do not compile MNG support.");
- desc("LIBMNG", "qt", "-qt-libmng", "Use the libmng bundled with Qt.");
- desc("LIBMNG", "system","-system-libmng", "Use libmng from the operating system.\nSee See http://www.libmng.com\n");
-
- desc("LIBTIFF", "no", "-no-libtiff", "Do not compile TIFF support.");
- desc("LIBTIFF", "qt", "-qt-libtiff", "Use the libtiff bundled with Qt.");
- desc("LIBTIFF", "system","-system-libtiff", "Use libtiff from the operating system.\nSee http://www.libtiff.org\n");
-
desc("LIBJPEG", "no", "-no-libjpeg", "Do not compile JPEG support.");
desc("LIBJPEG", "qt", "-qt-libjpeg", "Use the libjpeg bundled with Qt.");
desc("LIBJPEG", "system","-system-libjpeg", "Use libjpeg from the operating system.\nSee http://www.ijg.org\n");
@@ -1714,25 +1628,10 @@ bool Configure::displayHelp()
desc("DBUS", "no", "-no-dbus", "Do not compile in D-Bus support");
desc("DBUS", "yes", "-dbus", "Compile in D-Bus support and load libdbus-1 dynamically");
desc("DBUS", "linked", "-dbus-linked", "Compile in D-Bus support and link to libdbus-1");
- desc("PHONON", "no", "-no-phonon", "Do not compile in the Phonon module");
- desc("PHONON", "yes", "-phonon", "Compile the Phonon module (Phonon is built if a decent C++ compiler is used.)");
desc("PHONON_BACKEND","no", "-no-phonon-backend","Do not compile the platform-specific Phonon backend-plugin");
desc("PHONON_BACKEND","yes","-phonon-backend", "Compile in the platform-specific Phonon backend-plugin");
- desc("MULTIMEDIA", "no", "-no-multimedia", "Do not compile the multimedia module");
- desc("MULTIMEDIA", "yes","-multimedia", "Compile in multimedia module");
desc("AUDIO_BACKEND", "no","-no-audio-backend", "Do not compile in the platform audio backend into QtMultimedia");
desc("AUDIO_BACKEND", "yes","-audio-backend", "Compile in the platform audio backend into QtMultimedia");
- desc("WEBKIT", "no", "-no-webkit", "Do not compile in the WebKit module");
- desc("WEBKIT", "yes", "-webkit", "Compile in the WebKit module (WebKit is built if a decent C++ compiler is used.)");
- desc("WEBKIT", "debug", "-webkit-debug", "Compile in the WebKit module with debug symbols.");
- desc("SCRIPT", "no", "-no-script", "Do not build the QtScript module.");
- desc("SCRIPT", "yes", "-script", "Build the QtScript module.");
- desc("SCRIPTTOOLS", "no", "-no-scripttools", "Do not build the QtScriptTools module.");
- desc("SCRIPTTOOLS", "yes", "-scripttools", "Build the QtScriptTools module.");
- desc("V8", "no", "-no-v8", "Do not build the V8 module.");
- desc("V8", "yes", "-v8", "Build the V8 module.");
- desc("DECLARATIVE", "no", "-no-declarative", "Do not build the declarative module");
- desc("DECLARATIVE", "yes", "-declarative", "Build the declarative module");
desc("DECLARATIVE_DEBUG", "no", "-no-declarative-debug", "Do not build the declarative debugging support");
desc("DECLARATIVE_DEBUG", "yes", "-declarative-debug", "Build the declarative debugging support");
desc("DIRECTWRITE", "no", "-no-directwrite", "Do not build support for DirectWrite font rendering");
@@ -1873,10 +1772,9 @@ QString Configure::defaultTo(const QString &option)
{
// We prefer using the system version of the 3rd party libs
if (option == "ZLIB"
+ || option == "PCRE"
|| option == "LIBJPEG"
- || option == "LIBPNG"
- || option == "LIBMNG"
- || option == "LIBTIFF")
+ || option == "LIBPNG")
return "system";
// PNG is always built-in, never a plugin
@@ -1897,8 +1795,6 @@ QString Configure::defaultTo(const QString &option)
|| option == "SQL_SQLITE2"
|| option == "SQL_IBASE"
|| option == "JPEG"
- || option == "MNG"
- || option == "TIFF"
|| option == "GIF")
return "plugin";
}
@@ -1931,14 +1827,13 @@ bool Configure::checkAvailability(const QString &part)
else if (part == "ZLIB")
available = findFile("zlib.h");
+ else if (part == "PCRE")
+ available = findFile("pcre.h");
+
else if (part == "LIBJPEG")
available = findFile("jpeglib.h");
else if (part == "LIBPNG")
available = findFile("png.h");
- else if (part == "LIBMNG")
- available = findFile("libmng.h");
- else if (part == "LIBTIFF")
- available = findFile("tiffio.h");
else if (part == "SQL_MYSQL")
available = findFile("mysql.h") && findFile("libmySQL.lib");
else if (part == "SQL_ODBC")
@@ -1998,8 +1893,6 @@ bool Configure::checkAvailability(const QString &part)
}
else if (part == "INCREDIBUILD_XGE")
available = findFile("BuildConsole.exe") && findFile("xgConsole.exe");
- else if (part == "XMLPATTERNS")
- available = dictionary.value("EXCEPTIONS") == "yes";
else if (part == "PHONON") {
available = findFile("vmr9.h") && findFile("dshow.h") && findFile("dmo.h") && findFile("dmodshow.h")
&& (findFile("strmiids.lib") || findFile("libstrmiids.a"))
@@ -2020,17 +1913,8 @@ bool Configure::checkAvailability(const QString &part)
}
} else if (part == "WMSDK") {
available = findFile("wmsdk.h");
- } else if (part == "MULTIMEDIA" || part == "SCRIPT" || part == "SCRIPTTOOLS" || part == "V8" || part == "DECLARATIVE") {
- available = true;
} else if (part == "V8SNAPSHOT") {
available = true;
- } else if (part == "WEBKIT") {
- available = (dictionary.value("QMAKESPEC") == "win32-msvc2005") || (dictionary.value("QMAKESPEC") == "win32-msvc2008") || (dictionary.value("QMAKESPEC") == "win32-msvc2010") || (dictionary.value("QMAKESPEC") == "win32-g++");
- if (dictionary[ "SHARED" ] == "no") {
- cout << endl << "WARNING: Using static linking will disable the WebKit module." << endl
- << endl;
- available = false;
- }
} else if (part == "AUDIO_BACKEND") {
available = true;
} else if (part == "DIRECTWRITE") {
@@ -2055,6 +1939,10 @@ void Configure::autoDetection()
if (dictionary["ZLIB"] == "auto")
dictionary["ZLIB"] = checkAvailability("ZLIB") ? defaultTo("ZLIB") : "qt";
+ // PCRE detection
+ if (dictionary["PCRE"] == "auto")
+ dictionary["PCRE"] = checkAvailability("PCRE") ? defaultTo("PCRE") : "qt";
+
// Image format detection
if (dictionary["GIF"] == "auto")
dictionary["GIF"] = defaultTo("GIF");
@@ -2062,18 +1950,10 @@ void Configure::autoDetection()
dictionary["JPEG"] = defaultTo("JPEG");
if (dictionary["PNG"] == "auto")
dictionary["PNG"] = defaultTo("PNG");
- if (dictionary["MNG"] == "auto")
- dictionary["MNG"] = defaultTo("MNG");
- if (dictionary["TIFF"] == "auto")
- dictionary["TIFF"] = dictionary["ZLIB"] == "no" ? "no" : defaultTo("TIFF");
if (dictionary["LIBJPEG"] == "auto")
dictionary["LIBJPEG"] = checkAvailability("LIBJPEG") ? defaultTo("LIBJPEG") : "qt";
if (dictionary["LIBPNG"] == "auto")
dictionary["LIBPNG"] = checkAvailability("LIBPNG") ? defaultTo("LIBPNG") : "qt";
- if (dictionary["LIBMNG"] == "auto")
- dictionary["LIBMNG"] = checkAvailability("LIBMNG") ? defaultTo("LIBMNG") : "qt";
- if (dictionary["LIBTIFF"] == "auto")
- dictionary["LIBTIFF"] = checkAvailability("LIBTIFF") ? defaultTo("LIBTIFF") : "qt";
// SQL detection (not on by default)
if (dictionary["SQL_MYSQL"] == "auto")
@@ -2111,22 +1991,8 @@ void Configure::autoDetection()
dictionary["OPENSSL"] = checkAvailability("OPENSSL") ? "yes" : "no";
if (dictionary["DBUS"] == "auto")
dictionary["DBUS"] = checkAvailability("DBUS") ? "yes" : "no";
- if (dictionary["SCRIPT"] == "auto")
- dictionary["SCRIPT"] = checkAvailability("SCRIPT") ? "yes" : "no";
- if (dictionary["SCRIPTTOOLS"] == "auto")
- dictionary["SCRIPTTOOLS"] = dictionary["SCRIPT"] == "yes" ? "yes" : "no";
- if (dictionary["XMLPATTERNS"] == "auto")
- dictionary["XMLPATTERNS"] = checkAvailability("XMLPATTERNS") ? "yes" : "no";
- if (dictionary["PHONON"] == "auto")
- dictionary["PHONON"] = checkAvailability("PHONON") ? "yes" : "no";
- if (dictionary["WEBKIT"] == "auto")
- dictionary["WEBKIT"] = checkAvailability("WEBKIT") ? "yes" : "no";
- if (dictionary["V8"] == "auto")
- dictionary["V8"] = checkAvailability("V8") ? "yes" : "no";
if (dictionary["V8SNAPSHOT"] == "auto")
dictionary["V8SNAPSHOT"] = (dictionary["V8"] == "yes") && checkAvailability("V8SNAPSHOT") ? "yes" : "no";
- if (dictionary["DECLARATIVE"] == "auto")
- dictionary["DECLARATIVE"] = dictionary["V8"] == "yes" ? "yes" : "no";
if (dictionary["DECLARATIVE_DEBUG"] == "auto")
dictionary["DECLARATIVE_DEBUG"] = dictionary["DECLARATIVE"] == "yes" ? "yes" : "no";
if (dictionary["AUDIO_BACKEND"] == "auto")
@@ -2184,16 +2050,6 @@ bool Configure::verifyConfiguration()
if (!(l.contains(dictionary["ARM_FPU_TYPE"])))
cout << QString("WARNING: Using unsupported fpu flag: %1").arg(dictionary["ARM_FPU_TYPE"]) << endl;
}
- if (dictionary["DECLARATIVE"] == "yes" && dictionary["V8"] == "no") {
- cout << "WARNING: To be able to compile QtDeclarative we need to also compile the" << endl
- << "V8 module. If you continue, we will turn on the V8 module." << endl
- << "(Press any key to continue..)";
- if (_getch() == 3) // _Any_ keypress w/no echo(eat <Enter> for stdout)
- exit(0); // Exit cleanly for Ctrl+C
-
- dictionary["SCRIPT"] = "yes";
- }
-
if (dictionary["DIRECTWRITE"] == "yes" && !checkAvailability("DIRECTWRITE")) {
cout << "WARNING: To be able to compile the DirectWrite font engine you will" << endl
<< "need the Microsoft DirectWrite and Microsoft Direct2D development" << endl
@@ -2217,10 +2073,8 @@ bool Configure::verifyConfiguration()
Things that do not affect the Qt API/ABI:
system-jpeg no-jpeg jpeg
- system-mng no-mng mng
system-png no-png png
system-zlib no-zlib zlib
- system-tiff no-tiff tiff
no-gif gif
dll staticlib
@@ -2276,19 +2130,16 @@ void Configure::generateOutputVars()
else if (dictionary[ "ZLIB" ] == "system")
qtConfig += "system-zlib";
+ // PCRE ---------------------------------------------------------
+ if (dictionary[ "PCRE" ] == "qt")
+ qmakeConfig += "pcre";
+
// Image formates -----------------------------------------------
if (dictionary[ "GIF" ] == "no")
qtConfig += "no-gif";
else if (dictionary[ "GIF" ] == "yes")
qtConfig += "gif";
- if (dictionary[ "TIFF" ] == "no")
- qtConfig += "no-tiff";
- else if (dictionary[ "TIFF" ] == "yes")
- qtConfig += "tiff";
- if (dictionary[ "LIBTIFF" ] == "system")
- qtConfig += "system-tiff";
-
if (dictionary[ "JPEG" ] == "no")
qtConfig += "no-jpeg";
else if (dictionary[ "JPEG" ] == "yes")
@@ -2303,13 +2154,6 @@ void Configure::generateOutputVars()
if (dictionary[ "LIBPNG" ] == "system")
qtConfig += "system-png";
- if (dictionary[ "MNG" ] == "no")
- qtConfig += "no-mng";
- else if (dictionary[ "MNG" ] == "yes")
- qtConfig += "mng";
- if (dictionary[ "LIBMNG" ] == "system")
- qtConfig += "system-mng";
-
// Text rendering --------------------------------------------------
if (dictionary[ "FREETYPE" ] == "yes")
qtConfig += "freetype";
@@ -2401,6 +2245,9 @@ void Configure::generateOutputVars()
qmakeConfig += dictionary[ "BUILD" ];
dictionary[ "QMAKE_OUTDIR" ] = dictionary[ "BUILD" ];
+ if (dictionary["MSVC_MP"] == "yes")
+ qmakeConfig += "msvc_mp";
+
if (dictionary[ "SHARED" ] == "yes") {
QString version = dictionary[ "VERSION" ];
if (!version.isEmpty()) {
@@ -2439,6 +2286,7 @@ void Configure::generateOutputVars()
qtConfig += "egl";
}
+ // ### Vestige
if (dictionary["DIRECTSHOW"] == "yes")
qtConfig += "directshow";
@@ -2455,52 +2303,13 @@ void Configure::generateOutputVars()
if (dictionary[ "CETEST" ] == "yes")
qtConfig += "cetest";
-// No longer needed after modularization
-// if (dictionary[ "SCRIPT" ] == "yes")
-// qtConfig += "script";
-
-// No longer needed after modularization
-// if (dictionary[ "SCRIPTTOOLS" ] == "yes") {
-// if (dictionary[ "SCRIPT" ] == "no") {
-// cout << "QtScriptTools was requested, but it can't be built due to QtScript being "
-// "disabled." << endl;
-// dictionary[ "DONE" ] = "error";
-// }
-// qtConfig += "scripttools";
-// }
-
-// No longer needed after modularization
-// if (dictionary[ "XMLPATTERNS" ] == "yes")
-// qtConfig += "xmlpatterns";
-
- if (dictionary["PHONON"] == "yes") {
- // No longer needed after modularization
- //qtConfig += "phonon";
- if (dictionary["PHONON_BACKEND"] == "yes")
- qtConfig += "phonon-backend";
- }
-
- if (dictionary["MULTIMEDIA"] == "yes") {
- // No longer needed after modularization
- //qtConfig += "multimedia";
- if (dictionary["AUDIO_BACKEND"] == "yes")
- qtConfig += "audio-backend";
- }
-
- if (dictionary["WEBKIT"] != "no") {
- if (dictionary["WEBKIT"] == "debug")
- qtConfig += "webkit-debug";
- }
-
-// No longer needed after modularization
-// if (dictionary["DECLARATIVE"] == "yes") {
-// if (dictionary[ "V8" ] == "no") {
-// cout << "QtDeclarative was requested, but it can't be built due to V8 being "
-// "disabled." << endl;
-// dictionary[ "DONE" ] = "error";
-// }
-// qtConfig += "declarative";
-// }
+ // ### Vestige
+ if (dictionary["PHONON_BACKEND"] == "yes")
+ qtConfig += "phonon-backend";
+
+ // ### Vestige
+ if (dictionary["AUDIO_BACKEND"] == "yes")
+ qtConfig += "audio-backend";
if (dictionary["DIRECTWRITE"] == "yes")
qtConfig += "directwrite";
@@ -2508,14 +2317,12 @@ void Configure::generateOutputVars()
if (dictionary[ "NATIVE_GESTURES" ] == "yes")
qtConfig += "native-gestures";
- // We currently have no switch for QtSvg, so add it unconditionally.
- qtConfig += "svg";
+ // We currently have no switch for QtConcurrent, so add it unconditionally.
+ qtConfig += "concurrent";
- if (dictionary[ "V8" ] == "yes") {
- qtConfig += "v8";
- if (dictionary[ "V8SNAPSHOT" ] == "yes")
- qtConfig += "v8snapshot";
- }
+ // ### Vestige
+ if (dictionary[ "V8SNAPSHOT" ] == "yes")
+ qtConfig += "v8snapshot";
// Add config levels --------------------------------------------
QStringList possible_configs = QStringList()
@@ -2646,7 +2453,7 @@ void Configure::generateCachefile()
for (QStringList::Iterator var = qmakeVars.begin(); var != qmakeVars.end(); ++var) {
cacheStream << (*var) << endl;
}
- cacheStream << "CONFIG += " << qmakeConfig.join(" ") << " incremental msvc_mp depend_includepath no_private_qt_headers_warning QTDIR_build" << endl;
+ cacheStream << "CONFIG += " << qmakeConfig.join(" ") << " incremental depend_includepath no_private_qt_headers_warning QTDIR_build" << endl;
cacheStream.flush();
cacheFile.close();
@@ -2742,8 +2549,6 @@ void Configure::generateCachefile()
if (dictionary[ "LTCG" ] == "yes")
configStream << " ltcg";
- if (dictionary[ "MSVC_MP" ] == "yes")
- configStream << " msvc_mp";
if (dictionary[ "STL" ] == "yes")
configStream << " stl";
if (dictionary[ "EXCEPTIONS" ] == "yes")
@@ -2903,9 +2708,7 @@ void Configure::generateConfigfiles()
if (dictionary["GIF"] == "yes") qconfigList += "QT_BUILTIN_GIF_READER=1";
if (dictionary["PNG"] != "yes") qconfigList += "QT_NO_IMAGEFORMAT_PNG";
- if (dictionary["MNG"] != "yes") qconfigList += "QT_NO_IMAGEFORMAT_MNG";
if (dictionary["JPEG"] != "yes") qconfigList += "QT_NO_IMAGEFORMAT_JPEG";
- if (dictionary["TIFF"] != "yes") qconfigList += "QT_NO_IMAGEFORMAT_TIFF";
if (dictionary["ZLIB"] == "no") {
qconfigList += "QT_NO_ZLIB";
qconfigList += "QT_NO_COMPRESS";
@@ -2921,15 +2724,7 @@ void Configure::generateConfigfiles()
}
if (dictionary["OPENSSL"] == "linked") qconfigList += "QT_LINKED_OPENSSL";
if (dictionary["DBUS"] == "no") qconfigList += "QT_NO_DBUS";
- if (dictionary["WEBKIT"] == "no") qconfigList += "QT_NO_WEBKIT";
- if (dictionary["V8"] == "no") qconfigList += "QT_NO_V8";
- if (dictionary["DECLARATIVE"] == "no") qconfigList += "QT_NO_DECLARATIVE";
if (dictionary["DECLARATIVE_DEBUG"] == "no") qconfigList += "QDECLARATIVE_NO_DEBUG_PROTOCOL";
- if (dictionary["PHONON"] == "no") qconfigList += "QT_NO_PHONON";
- if (dictionary["MULTIMEDIA"] == "no") qconfigList += "QT_NO_MULTIMEDIA";
- if (dictionary["XMLPATTERNS"] == "no") qconfigList += "QT_NO_XMLPATTERNS";
- if (dictionary["SCRIPT"] == "no") qconfigList += "QT_NO_SCRIPT";
- if (dictionary["SCRIPTTOOLS"] == "no") qconfigList += "QT_NO_SCRIPTTOOLS";
if (dictionary["FREETYPE"] == "no") qconfigList += "QT_NO_FREETYPE";
if (dictionary["NATIVE_GESTURES"] == "no") qconfigList += "QT_NO_NATIVE_GESTURES";
@@ -3190,33 +2985,14 @@ void Configure::displayConfig()
cout << "OpenVG support.............." << dictionary[ "OPENVG" ] << endl;
cout << "OpenSSL support............." << dictionary[ "OPENSSL" ] << endl;
cout << "QtDBus support.............." << dictionary[ "DBUS" ] << endl;
- cout << "QtXmlPatterns support......." << dictionary[ "XMLPATTERNS" ] << endl;
- cout << "Phonon support.............." << dictionary[ "PHONON" ] << endl;
- cout << "QtMultimedia support........" << dictionary[ "MULTIMEDIA" ] << endl;
- {
- QString webkit = dictionary[ "WEBKIT" ];
- if (webkit == "debug")
- webkit = "yes (debug)";
- cout << "WebKit support.............." << webkit << endl;
- }
- {
- QString declarative = dictionary[ "DECLARATIVE" ];
- cout << "Declarative support........." << declarative << endl;
- if (declarative == "yes")
- cout << "Declarative debugging......." << dictionary[ "DECLARATIVE_DEBUG" ] << endl;
- }
- cout << "V8 support.................." << dictionary[ "V8" ] << endl;
- cout << "QtScript support............" << dictionary[ "SCRIPT" ] << endl;
- cout << "QtScriptTools support......." << dictionary[ "SCRIPTTOOLS" ] << endl;
+ cout << "Declarative debugging......." << dictionary[ "DECLARATIVE_DEBUG" ] << endl;
cout << "DirectWrite support........." << dictionary[ "DIRECTWRITE" ] << endl << endl;
cout << "Third Party Libraries:" << endl;
cout << " ZLIB support............" << dictionary[ "ZLIB" ] << endl;
cout << " GIF support............." << dictionary[ "GIF" ] << endl;
- cout << " TIFF support............" << dictionary[ "TIFF" ] << endl;
cout << " JPEG support............" << dictionary[ "JPEG" ] << endl;
cout << " PNG support............." << dictionary[ "PNG" ] << endl;
- cout << " MNG support............." << dictionary[ "MNG" ] << endl;
cout << " FreeType support........" << dictionary[ "FREETYPE" ] << endl << endl;
cout << "Styles:" << endl;
@@ -3261,9 +3037,6 @@ void Configure::displayConfig()
cout << "Signature..................." << dictionary[ "CE_SIGNATURE"] << endl << endl;
}
- if (dictionary["ASSISTANT_WEBKIT"] == "yes")
- cout << "Using WebKit as html rendering engine in Qt Assistant." << endl;
-
if (checkAvailability("INCREDIBUILD_XGE"))
cout << "Using IncrediBuild XGE......" << dictionary["INCREDIBUILD_XGE"] << endl;
if (!qmakeDefines.isEmpty()) {
@@ -3319,6 +3092,7 @@ void Configure::generateHeaders()
cout << "Running syncqt..." << endl;
QStringList args;
args += buildPath + "/bin/syncqt.bat";
+ args += sourcePath;
QStringList env;
env += QString("QTDIR=" + sourcePath);
env += QString("PATH=" + buildPath + "/bin/;" + qgetenv("PATH"));
@@ -3349,8 +3123,8 @@ void Configure::buildQmake()
if (out.open(QFile::WriteOnly | QFile::Text)) {
QTextStream stream(&out);
stream << "#AutoGenerated by configure.exe" << endl
- << "BUILD_PATH = " << QDir::convertSeparators(buildPath) << endl
- << "SOURCE_PATH = " << QDir::convertSeparators(sourcePath) << endl;
+ << "BUILD_PATH = " << QDir::toNativeSeparators(buildPath) << endl
+ << "SOURCE_PATH = " << QDir::toNativeSeparators(sourcePath) << endl;
stream << "QMAKESPEC = " << dictionary["QMAKESPEC"] << endl
<< "QT_VERSION = " << dictionary["VERSION"] << endl;
diff --git a/tools/configure/configureapp.h b/tools/configure/configureapp.h
index b489bd9daf..c3838fb139 100644
--- a/tools/configure/configureapp.h
+++ b/tools/configure/configureapp.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tools/configure/environment.cpp b/tools/configure/environment.cpp
index faf1dd3b2d..5e0fa00c6c 100644
--- a/tools/configure/environment.cpp
+++ b/tools/configure/environment.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tools/configure/environment.h b/tools/configure/environment.h
index 4284678f32..e5f52b47b6 100644
--- a/tools/configure/environment.h
+++ b/tools/configure/environment.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tools/configure/main.cpp b/tools/configure/main.cpp
index a53a676782..51abd7aa82 100644
--- a/tools/configure/main.cpp
+++ b/tools/configure/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tools/configure/tools.cpp b/tools/configure/tools.cpp
index 8533eb40ee..b3b21d8349 100644
--- a/tools/configure/tools.cpp
+++ b/tools/configure/tools.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tools/configure/tools.h b/tools/configure/tools.h
index c4debdc6ef..e882953733 100644
--- a/tools/configure/tools.h
+++ b/tools/configure/tools.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the tools applications of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tools/shared/windows/registry.cpp b/tools/shared/windows/registry.cpp
index 6398999a7f..a286ce1ab4 100644
--- a/tools/shared/windows/registry.cpp
+++ b/tools/shared/windows/registry.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/tools/shared/windows/registry_p.h b/tools/shared/windows/registry_p.h
index 1104b1cc78..bee979834b 100644
--- a/tools/shared/windows/registry_p.h
+++ b/tools/shared/windows/registry_p.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the qmake application of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/accessibilityinspector/accessibilityinspector.cpp b/util/accessibilityinspector/accessibilityinspector.cpp
index 4f157bbdb1..0b17de8770 100644
--- a/util/accessibilityinspector/accessibilityinspector.cpp
+++ b/util/accessibilityinspector/accessibilityinspector.cpp
@@ -1,43 +1,43 @@
/****************************************************************************
- **
- ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications 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$
- **
- ****************************************************************************/
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the tools applications 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 "accessibilityinspector.h"
diff --git a/util/accessibilityinspector/accessibilityinspector.h b/util/accessibilityinspector/accessibilityinspector.h
index 4174ace278..7ba6a39e15 100644
--- a/util/accessibilityinspector/accessibilityinspector.h
+++ b/util/accessibilityinspector/accessibilityinspector.h
@@ -1,43 +1,43 @@
/****************************************************************************
- **
- ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications 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$
- **
- ****************************************************************************/
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the tools applications 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$
+**
+****************************************************************************/
#ifndef ACCESSIBILITYINSPECTOR_H
#define ACCESSIBILITYINSPECTOR_H
diff --git a/util/accessibilityinspector/accessibilityinspector.pri b/util/accessibilityinspector/accessibilityinspector.pri
index dc1f15062a..be0a09ccf6 100644
--- a/util/accessibilityinspector/accessibilityinspector.pri
+++ b/util/accessibilityinspector/accessibilityinspector.pri
@@ -4,11 +4,6 @@ INCLUDEPATH += $$PWD
# DEFINES += ACCESSIBILITYINSPECTOR_NO_UITOOLS
# CONFIG += uitools
-mac {
- # for text-to-speach
- LIBS += -framework AppKit
-}
-
HEADERS += \
$$PWD/screenreader.h \
$$PWD/optionswidget.h \
@@ -20,6 +15,5 @@ SOURCES += \
$$PWD/screenreader.cpp \
$$PWD/accessibilityinspector.cpp
-OBJECTIVE_SOURCES += $$PWD/screenreader_mac.mm
diff --git a/util/accessibilityinspector/accessibilityscenemanager.cpp b/util/accessibilityinspector/accessibilityscenemanager.cpp
index 0772468bfc..2fcb95688a 100644
--- a/util/accessibilityinspector/accessibilityscenemanager.cpp
+++ b/util/accessibilityinspector/accessibilityscenemanager.cpp
@@ -1,43 +1,43 @@
/****************************************************************************
- **
- ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications 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$
- **
- ****************************************************************************/
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the tools applications 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 "accessibilityscenemanager.h"
@@ -116,9 +116,8 @@ void AccessibilitySceneManager::handleUpdate(QObject *object, QAccessible::Event
updateItem(item, interface);
for (int i = 0; i < interface->childCount(); ++i) {
- QAccessibleInterface *child = 0;
- int ret = interface->navigate(QAccessible::Child, i + 1, &child);
- if (ret == 0 && child) {
+ QAccessibleInterface *child = interface->child(i);
+ if (child) {
updateItem(m_graphicsItems.value(child->object()), child);
delete child;
}
@@ -143,8 +142,8 @@ void AccessibilitySceneManager::handleUpdate(QObject *object, QAccessible::Event
qDebug() << "ObjectCreated ScrollingStart" << object;
QAccessibleInterface *child = 0;
for (int i = 0; i < interface->childCount(); ++i) {
- int ret = interface->navigate(QAccessible::Child, i + 1, &child);
- if (ret == 0 && child) {
+ QAccessibleInterface *child = interface->child(i);
+ if (child) {
m_animatedObjects.insert(child->object());
delete child;
}
@@ -243,7 +242,7 @@ void AccessibilitySceneManager::updateItemFlags(QGraphicsRectItem *item, QAccess
}
if (m_optionsWidget->hideOffscreenItems()) {
- if (interface->state() & QAccessible::Offscreen) {
+ if (interface->state().offscreen) {
shouldShow = false;
}
}
@@ -398,7 +397,7 @@ void AccessibilitySceneManager::addGraphicsItems(AccessibilitySceneManager::Tree
else
graphicsItem->setBrush(QColor(Qt::white));
- if (item.state & QAccessible::Invisible) {
+ if (item.state.offscreen) {
QPen linePen;
linePen.setStyle(Qt::DashLine);
graphicsItem->setPen(linePen);
@@ -470,7 +469,7 @@ bool AccessibilitySceneManager::isHidden(QAccessibleInterface *interface)
QAccessibleInterface *current = interface;
while (current) {
- if (current->state() & QAccessible::Invisible) {
+ if (current->state().invisible) {
return true;
}
diff --git a/util/accessibilityinspector/accessibilityscenemanager.h b/util/accessibilityinspector/accessibilityscenemanager.h
index e3e37f2f76..669ff9fe43 100644
--- a/util/accessibilityinspector/accessibilityscenemanager.h
+++ b/util/accessibilityinspector/accessibilityscenemanager.h
@@ -1,43 +1,43 @@
/****************************************************************************
- **
- ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications 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$
- **
- ****************************************************************************/
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the tools applications 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$
+**
+****************************************************************************/
#ifndef ACCESSIBILITYSCENEMANAGER_H
#define ACCESSIBILITYSCENEMANAGER_H
diff --git a/util/accessibilityinspector/main.cpp b/util/accessibilityinspector/main.cpp
index e95aa37ba7..dc2bd0d719 100644
--- a/util/accessibilityinspector/main.cpp
+++ b/util/accessibilityinspector/main.cpp
@@ -1,43 +1,43 @@
/****************************************************************************
- **
- ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications 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$
- **
- ****************************************************************************/
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the tools applications 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 <QtGui>
#include <QtDeclarative/QtDeclarative>
diff --git a/util/accessibilityinspector/optionswidget.cpp b/util/accessibilityinspector/optionswidget.cpp
index 2c6dd6635a..e6d0cc2714 100644
--- a/util/accessibilityinspector/optionswidget.cpp
+++ b/util/accessibilityinspector/optionswidget.cpp
@@ -1,43 +1,43 @@
/****************************************************************************
- **
- ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications 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$
- **
- ****************************************************************************/
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the tools applications 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 "optionswidget.h"
diff --git a/util/accessibilityinspector/optionswidget.h b/util/accessibilityinspector/optionswidget.h
index efbe949414..04828f82b2 100644
--- a/util/accessibilityinspector/optionswidget.h
+++ b/util/accessibilityinspector/optionswidget.h
@@ -1,43 +1,43 @@
/****************************************************************************
- **
- ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications 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$
- **
- ****************************************************************************/
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the tools applications 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$
+**
+****************************************************************************/
#ifndef OPTIONSWIDGET_H
#define OPTIONSWIDGET_H
diff --git a/util/accessibilityinspector/screenreader.cpp b/util/accessibilityinspector/screenreader.cpp
index 7593948b63..c1b1c98f22 100644
--- a/util/accessibilityinspector/screenreader.cpp
+++ b/util/accessibilityinspector/screenreader.cpp
@@ -1,53 +1,49 @@
/****************************************************************************
- **
- ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications 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$
- **
- ****************************************************************************/
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the tools applications 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 "screenreader.h"
#include "optionswidget.h"
#include "accessibilityscenemanager.h"
#include <QtGui>
-#ifdef Q_OS_MAC
-#include <private/qt_mac_p.h>
-#endif
-
ScreenReader::ScreenReader(QObject *parent) :
QObject(parent)
{
@@ -128,12 +124,6 @@ void ScreenReader::activate()
}
}
-#ifdef Q_OS_MAC
-
- // screenreader.mm
-
-#else
-
void ScreenReader::speak(const QString &text, const QString &/*voice*/)
{
QFile f("festivalspeachhack");
@@ -145,5 +135,4 @@ void ScreenReader::speak(const QString &text, const QString &/*voice*/)
process->start("/usr/bin/festival", QStringList() << "--tts" << "festivalspeachhack");
}
-#endif
diff --git a/util/accessibilityinspector/screenreader.h b/util/accessibilityinspector/screenreader.h
index 6b2f354239..a014b20c2d 100644
--- a/util/accessibilityinspector/screenreader.h
+++ b/util/accessibilityinspector/screenreader.h
@@ -1,43 +1,43 @@
/****************************************************************************
- **
- ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications 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$
- **
- ****************************************************************************/
+**
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the tools applications 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$
+**
+****************************************************************************/
#ifndef SCREENREADER_H
@@ -50,8 +50,8 @@
/*
A Simple screen reader for touch-based user interfaces.
- Requires a text-to-speach backend. Currently implemented on
- Mac OS X and using festival on unix.
+ Requires a text-to-speach backend. Currently implemented
+ using festival on unix.
*/
class OptionsWidget;
class ScreenReader : public QObject
diff --git a/util/accessibilityinspector/screenreader_mac.mm b/util/accessibilityinspector/screenreader_mac.mm
deleted file mode 100644
index 59fc868420..0000000000
--- a/util/accessibilityinspector/screenreader_mac.mm
+++ /dev/null
@@ -1,60 +0,0 @@
-/****************************************************************************
- **
- ** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
- ** All rights reserved.
- ** Contact: Nokia Corporation (qt-info@nokia.com)
- **
- ** This file is part of the tools applications 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 "screenreader.h"
-#include <QtCore>
-#include <private/qt_mac_p.h>
-
-void ScreenReader::speak(const QString &text, const QString &voice)
-{
- QString voiceBase = "com.apple.speech.synthesis.voice.";
- if (voice.isEmpty())
- voiceBase += "Vici";
- else
- voiceBase += voice;
-
- CFStringRef cfVoice = QCFString::toCFStringRef(voiceBase);
- NSSpeechSynthesizer *synth = [[NSSpeechSynthesizer alloc] initWithVoice:(NSString *)cfVoice];
- CFStringRef cfText = QCFString::toCFStringRef(text);
- [synth startSpeakingString: (NSString *)cfText];
- CFRelease(cfText);
- CFRelease(cfVoice);
-}
diff --git a/util/corelib/qurl-generateTLDs/main.cpp b/util/corelib/qurl-generateTLDs/main.cpp
index 01f0d700f2..b003ff0428 100644
--- a/util/corelib/qurl-generateTLDs/main.cpp
+++ b/util/corelib/qurl-generateTLDs/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/lexgen/configfile.cpp b/util/lexgen/configfile.cpp
index 623b5f73d9..e172585653 100644
--- a/util/lexgen/configfile.cpp
+++ b/util/lexgen/configfile.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/lexgen/configfile.h b/util/lexgen/configfile.h
index ca614c2eef..1d9dad74a0 100644
--- a/util/lexgen/configfile.h
+++ b/util/lexgen/configfile.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/lexgen/generator.cpp b/util/lexgen/generator.cpp
index 36e9febd82..8329479ebb 100644
--- a/util/lexgen/generator.cpp
+++ b/util/lexgen/generator.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/lexgen/generator.h b/util/lexgen/generator.h
index a41a0f080c..9bd19ef017 100644
--- a/util/lexgen/generator.h
+++ b/util/lexgen/generator.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/lexgen/global.h b/util/lexgen/global.h
index a853538692..63091281d8 100644
--- a/util/lexgen/global.h
+++ b/util/lexgen/global.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/lexgen/main.cpp b/util/lexgen/main.cpp
index eb2920241b..9f9e392eaf 100644
--- a/util/lexgen/main.cpp
+++ b/util/lexgen/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/lexgen/nfa.cpp b/util/lexgen/nfa.cpp
index d64a540abc..36d21c208f 100644
--- a/util/lexgen/nfa.cpp
+++ b/util/lexgen/nfa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/lexgen/nfa.h b/util/lexgen/nfa.h
index 43ec5d1061..3321f363d5 100644
--- a/util/lexgen/nfa.h
+++ b/util/lexgen/nfa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/lexgen/re2nfa.cpp b/util/lexgen/re2nfa.cpp
index c09e4de030..f070bc1389 100644
--- a/util/lexgen/re2nfa.cpp
+++ b/util/lexgen/re2nfa.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/lexgen/re2nfa.h b/util/lexgen/re2nfa.h
index 5af6e0751a..bad2244ffe 100644
--- a/util/lexgen/re2nfa.h
+++ b/util/lexgen/re2nfa.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/lexgen/tests/tst_lexgen.cpp b/util/lexgen/tests/tst_lexgen.cpp
index 1f50fd1f08..4a4c5ad227 100644
--- a/util/lexgen/tests/tst_lexgen.cpp
+++ b/util/lexgen/tests/tst_lexgen.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/lexgen/tokenizer.cpp b/util/lexgen/tokenizer.cpp
index 2848a7de8d..7901f0a372 100644
--- a/util/lexgen/tokenizer.cpp
+++ b/util/lexgen/tokenizer.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/local_database/cldr2qlocalexml.py b/util/local_database/cldr2qlocalexml.py
index d046fb5dfa..3c45db206b 100755
--- a/util/local_database/cldr2qlocalexml.py
+++ b/util/local_database/cldr2qlocalexml.py
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is part of the test suite of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
diff --git a/util/local_database/dateconverter.py b/util/local_database/dateconverter.py
index 9ca0b3deee..1a6ce5719e 100755
--- a/util/local_database/dateconverter.py
+++ b/util/local_database/dateconverter.py
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is part of the test suite of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
diff --git a/util/local_database/enumdata.py b/util/local_database/enumdata.py
index b6027ac996..412c133319 100644
--- a/util/local_database/enumdata.py
+++ b/util/local_database/enumdata.py
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is part of the test suite of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
diff --git a/util/local_database/qlocalexml2cpp.py b/util/local_database/qlocalexml2cpp.py
index 38cdc7663e..89f79c984e 100755
--- a/util/local_database/qlocalexml2cpp.py
+++ b/util/local_database/qlocalexml2cpp.py
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is part of the test suite of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
diff --git a/util/local_database/testlocales/localemodel.cpp b/util/local_database/testlocales/localemodel.cpp
index 902729b794..ac3441dfff 100644
--- a/util/local_database/testlocales/localemodel.cpp
+++ b/util/local_database/testlocales/localemodel.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/local_database/testlocales/localemodel.h b/util/local_database/testlocales/localemodel.h
index fafea8164f..f52921b8d1 100644
--- a/util/local_database/testlocales/localemodel.h
+++ b/util/local_database/testlocales/localemodel.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/local_database/testlocales/localewidget.cpp b/util/local_database/testlocales/localewidget.cpp
index 43b0c22f8d..05392b9719 100644
--- a/util/local_database/testlocales/localewidget.cpp
+++ b/util/local_database/testlocales/localewidget.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/local_database/testlocales/localewidget.h b/util/local_database/testlocales/localewidget.h
index 5c31f49e1d..b5bbf9d8eb 100644
--- a/util/local_database/testlocales/localewidget.h
+++ b/util/local_database/testlocales/localewidget.h
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/local_database/testlocales/main.cpp b/util/local_database/testlocales/main.cpp
index f5ba360256..b79fbea00d 100644
--- a/util/local_database/testlocales/main.cpp
+++ b/util/local_database/testlocales/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/local_database/xpathlite.py b/util/local_database/xpathlite.py
index 68acf83d28..81d3e27676 100644
--- a/util/local_database/xpathlite.py
+++ b/util/local_database/xpathlite.py
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is part of the test suite of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
diff --git a/util/plugintest/main.cpp b/util/plugintest/main.cpp
index 9f440694e6..7174d1962f 100644
--- a/util/plugintest/main.cpp
+++ b/util/plugintest/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/s60pixelmetrics/bld.inf b/util/s60pixelmetrics/bld.inf
deleted file mode 100644
index 0bccc8aa2d..0000000000
--- a/util/s60pixelmetrics/bld.inf
+++ /dev/null
@@ -1,45 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the utility applications 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$
-**
-****************************************************************************/
-
-PRJ_MMPFILES
-pm_mapper.mmp
-
-// End of File
diff --git a/util/s60pixelmetrics/pixel_metrics.cpp b/util/s60pixelmetrics/pixel_metrics.cpp
deleted file mode 100644
index 22c04d1ed9..0000000000
--- a/util/s60pixelmetrics/pixel_metrics.cpp
+++ /dev/null
@@ -1,1255 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the utility applications 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 "pixel_metrics.h"
-
-#include <AknLayout2ScalableDef.h>
-#include <AknLayoutScalable_Avkon.cdl.h>
-#include <AknLayoutScalable_Apps.cdl.h>
-#include <AknUtils.h>
-
-// Version number for dynamic calculations. These are to be exported to static data,
-// so that we can keep dynamic and static values inline.
-// Please adjust version data if correcting dynamic PM calculations.
-const TInt KPMMajorVersion = 1;
-const TInt KPMMinorVersion = 19;
-
-TPixelMetricsVersion PixelMetrics::Version()
- {
- TPixelMetricsVersion version;
- version.majorVersion = KPMMajorVersion;
- version.minorVersion = KPMMinorVersion;
- return version;
- }
-
-TInt PixelMetrics::PixelMetricValue(QStyle::PixelMetric metric)
- {
- TInt value = -909;
- // Main pane
- TRect mainPaneRect;
- AknLayoutUtils::LayoutMetricsRect(
- AknLayoutUtils::EMainPane,
- mainPaneRect );
- // Screen
- TRect screenRect;
- AknLayoutUtils::LayoutMetricsRect(
- AknLayoutUtils::EApplicationWindow,
- screenRect );
- // Navi pane
- TRect naviPaneRect;
- AknLayoutUtils::LayoutMetricsRect(
- AknLayoutUtils::ENaviPane,
- naviPaneRect );
-
- TAknLayoutRect appWindow;
- appWindow.LayoutRect( screenRect, AknLayoutScalable_Avkon::application_window(0) );
-
- TInt variety = 0;
- TBool landscape = EFalse;
- if ( screenRect.iBr.iX > screenRect.iBr.iY )
- {
- // in landscape another variety is used
- landscape = ETrue;
- }
- switch (metric)
- {
- case QStyle::PM_DockWidgetHandleExtent:
- // what's this??? Not in S60
- break;
- case QStyle::PM_CheckListControllerSize:
- case QStyle::PM_CheckListButtonSize:
- {
- // hierarchical menu - checkbox / radiobutton
- // Area (width/height) of the checkbox/radio button in a Q3CheckListItem.
- TAknLayoutRect listScrollPane;
- listScrollPane.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::listscroll_gen_pane(0));
- TAknLayoutRect listGenPane;
- listGenPane.LayoutRect( listScrollPane.Rect(), AknLayoutScalable_Avkon::list_gen_pane(0));
- TAknLayoutRect listHierarchyPane;
- listHierarchyPane.LayoutRect( listGenPane.Rect(), AknLayoutScalable_Avkon::list_single_graphic_hl_pane(0));
-
- TAknLayoutRect listHierarchyControllerPane;
- listHierarchyPane.LayoutRect( listHierarchyPane.Rect(), AknLayoutScalable_Avkon::list_single_graphic_hl_pane_g3(0));
- TAknLayoutRect listHierarchyPropertyPane;
- listHierarchyPropertyPane.LayoutRect( listHierarchyPane.Rect(), AknLayoutScalable_Avkon::list_single_graphic_hl_pane_g2(0));
-
- if (metric==QStyle::PM_CheckListControllerSize)value = Max( listHierarchyPane.Rect().Width(), listHierarchyPane.Rect().Width());
- else value = Max( listHierarchyPropertyPane.Rect().Width(), listHierarchyPropertyPane.Rect().Width());
- }
- break;
- case QStyle::PM_DialogButtonsSeparator: //Distance between buttons in a dialog buttons widget.
- case QStyle::PM_DialogButtonsButtonWidth: // Minimum width of a button in a dialog buttons widget.
- case QStyle::PM_DialogButtonsButtonHeight:// Minimum height of a button in a dialog buttons widget.
- {
- TAknLayoutRect appWindow;
- appWindow.LayoutRect( screenRect, AknLayoutScalable_Avkon::application_window(0) );
- variety = 0;
- if ( landscape )
- {
- variety = 2;
- }
- TAknLayoutRect areaBottomRect;
- areaBottomRect.LayoutRect( appWindow.Rect(), AknLayoutScalable_Avkon::area_bottom_pane(variety) );
-
- TAknLayoutRect controlPaneRect;
- controlPaneRect.LayoutRect( areaBottomRect.Rect(), AknLayoutScalable_Avkon::control_pane() );
- TAknLayoutText controlPaneLSKText;
- TAknLayoutText controlPaneRSKText;
- TAknLayoutText controlPaneMSKText;
- variety = 0;
- if (AknLayoutUtils::MSKEnabled())
- {
- variety = 3;
- controlPaneMSKText.LayoutText( controlPaneRect.Rect(), AknLayoutScalable_Avkon::control_pane_t3(variety)); //MSK text area
- }
- controlPaneLSKText.LayoutText( controlPaneRect.Rect(), AknLayoutScalable_Avkon::control_pane_t1(variety)); //LSK text area
- controlPaneRSKText.LayoutText( controlPaneRect.Rect(), AknLayoutScalable_Avkon::control_pane_t2(variety)); //RSK text area
-
- /*
- *
- ==================================================================================
- | A | LSK_rect | B | MSK_rect | C | RSK_rect | D |
- ==================================================================================
- where A is left padding (between control pane and LSK rect)
- B is mid-left padding (between LSK and MSK rects)
- C is mid-right padding (between MSK and RSK rects)
- D is right padding (between RSK and control pane)
-
- ==> Since all these can be separate, lets take Max of {A..D} for PM value
- */
-
- TInt itemSpacingA = 0;
- TInt itemSpacingB = 0;
- TInt itemSpacingC = 0;
- TInt itemSpacingMax = 0;
- if ( !AknLayoutUtils::MSKEnabled() )
- {
- itemSpacingA = controlPaneRect.Rect().iBr.iX - controlPaneRSKText.TextRect().iBr.iX;
- itemSpacingB = controlPaneLSKText.TextRect().iTl.iX - controlPaneRect.Rect().iTl.iX;
- if (!landscape)
- {
- // use mid-gap only in portrait
- itemSpacingC = controlPaneRSKText.TextRect().iTl.iX - controlPaneLSKText.TextRect().iBr.iX;
- }
- itemSpacingMax = Max(itemSpacingA, Max( itemSpacingB, itemSpacingC));
- // no itemspacing4 if no MSK
- }
- else
- {
- TInt itemSpacingD = 0;
- itemSpacingA = controlPaneRect.Rect().iBr.iX - controlPaneRSKText.TextRect().iBr.iX;
- itemSpacingB = controlPaneLSKText.TextRect().iTl.iX - controlPaneRect.Rect().iTl.iX;
- if ( !(AknLayoutUtils::PenEnabled() || landscape) ) // no MSK in touch, nor in landscape
- {
- itemSpacingC = controlPaneRSKText.TextRect().iTl.iX - controlPaneMSKText.TextRect().iBr.iX;
- itemSpacingD = controlPaneMSKText.TextRect().iTl.iX - controlPaneLSKText.TextRect().iBr.iX;
- }
- itemSpacingMax = Max(itemSpacingA, Max( itemSpacingB, Max( itemSpacingC, itemSpacingD )));
- }
- if (metric==QStyle::PM_DialogButtonsSeparator) value = itemSpacingMax;
- else if (metric==QStyle::PM_DialogButtonsButtonWidth)
- {
- value = Max( controlPaneLSKText.TextRect().Width(), controlPaneRSKText.TextRect().Width());
- if (AknLayoutUtils::MSKEnabled())
- {
- value = Max(value, controlPaneMSKText.TextRect().Width());
- }
- }
- else if (metric==QStyle::PM_DialogButtonsButtonHeight)
- {
- value = Max( controlPaneLSKText.TextRect().Height(), controlPaneRSKText.TextRect().Height());
- if (AknLayoutUtils::MSKEnabled())
- {
- value = Max(value, controlPaneMSKText.TextRect().Height());
- }
- }
- }
- break;
- case QStyle::PM_DockWidgetTitleMargin: // not in S60, lets use the same margin as in button
- case QStyle::PM_DockWidgetTitleBarButtonMargin: // not in S60, lets use the same margin as in button
- case QStyle::PM_ButtonMargin:
- {
- TRect myRect(TSize( 80, 20)); // this arbitrary size - user can set it - button border does not seem to have any scalability in it
- TAknLayoutRect buttonRect;
- TAknLayoutRect buttonBordersRect;
- TAknLayoutText buttonText;
-
- buttonRect.LayoutRect( myRect, AknLayoutScalable_Avkon::eswt_ctrl_button_pane());
- buttonBordersRect.LayoutRect( buttonRect.Rect(), AknLayoutScalable_Avkon::common_borders_pane_copy2(0)); //with text
- buttonText.LayoutText( buttonRect.Rect(), AknLayoutScalable_Avkon::control_button_pane_t1() );
-
- // Its better to use left-right margins, since font deployment can create funny top / bottom margins
- TInt leftMargin = buttonText.TextRect().iTl.iX - buttonBordersRect.Rect().iTl.iX;
- TInt rightMargin = buttonBordersRect.Rect().iBr.iX - buttonText.TextRect().iBr.iX;
- value = (TInt) ((leftMargin+rightMargin)/2);
- }
- break;
- case QStyle::PM_ButtonDefaultIndicator:
- {
- // no default button indicators in S60
- value = 0;
- }
- break;
- case QStyle::PM_MdiSubWindowFrameWidth:
- case QStyle::PM_ComboBoxFrameWidth:
- case QStyle::PM_SpinBoxFrameWidth:
- value = 0;
- break;
- case QStyle::PM_ToolBarFrameWidth:
- case QStyle::PM_DefaultFrameWidth:
- {
- TAknLayoutRect highLightPaneRect;
- TAknLayoutRect centerPaneRect;
- TRect rectParent( mainPaneRect );
- highLightPaneRect.LayoutRect( rectParent, AknLayoutScalable_Avkon::toolbar_button_pane(0).LayoutLine());
- centerPaneRect.LayoutRect(rectParent, AknLayoutScalable_Avkon::toolbar_button_pane_g1().LayoutLine());
-
- value = highLightPaneRect.Rect().iBr.iX - centerPaneRect.Rect().iBr.iX;
- }
- break;
- case QStyle::PM_RadioButtonLabelSpacing:
- {
- /*
- *
- ===================================================================================
- | A | iconLayoutRect |B| itemText | C |
- ===================================================================================
- mirrored:
- ===================================================================================
- | C | itemText |B| iconLayoutRect | A |
- ===================================================================================
- where A is left padding
- B is gap between icon and text
- C is right padding
- */
-
- TRect rectParent( mainPaneRect );
- TAknLayoutRect layoutRect;
- layoutRect.LayoutRect( rectParent,AknLayoutScalable_Avkon::list_choice_list_pane(1).LayoutLine() ); // w/ scrollbar
- TAknLayoutText itemText;
- itemText.LayoutText( layoutRect.Rect(), AknLayoutScalable_Avkon::list_single_choice_list_pane_t1(1) );
- TAknLayoutRect iconLayoutRect;
- iconLayoutRect.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Avkon::list_single_choice_list_pane_g1().LayoutLine() );
-
- if ( !AknLayoutUtils::LayoutMirrored() )
- {
- value = itemText.TextRect().iTl.iX - iconLayoutRect.Rect().iBr.iX;
- }
- else
- {
- value = iconLayoutRect.Rect().iTl.iX - itemText.TextRect().iBr.iX;
- }
- }
-
- break;
- case QStyle::PM_CheckBoxLabelSpacing:
- {
- /*
- *
- ===================================================================================
- | A | iconLayoutRect |B| itemText | C |
- ===================================================================================
- mirrored:
- ===================================================================================
- | C | itemText |B| iconLayoutRect | A |
- ===================================================================================
- where A is left padding
- B is gap between icon and text
- C is right padding
- */
-
- TRect rectParent( mainPaneRect );
- TAknLayoutRect layoutRect;
- layoutRect.LayoutRect( rectParent, AknLayoutScalable_Avkon::listscroll_gen_pane(0).LayoutLine() );
-
- TAknLayoutRect layoutRect2;
- layoutRect2.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Avkon::list_gen_pane(0).LayoutLine() );
- TAknLayoutRect layoutRect3;
- layoutRect3.LayoutRect( layoutRect2.Rect(), AknLayoutScalable_Avkon::list_single_graphic_pane(0).LayoutLine() );
-
- TAknLayoutText itemText;
- itemText.LayoutText( layoutRect3.Rect(), AknLayoutScalable_Avkon::list_single_graphic_pane_t1(0) );
- TAknLayoutRect iconLayoutRect;
- iconLayoutRect.LayoutRect( layoutRect3.Rect(), AknLayoutScalable_Avkon::list_single_graphic_pane_g1(0).LayoutLine() );
-
- if ( !AknLayoutUtils::LayoutMirrored() )
- {
- value = itemText.TextRect().iTl.iX - iconLayoutRect.Rect().iBr.iX;
- }
- else
- {
- value = iconLayoutRect.Rect().iTl.iX - itemText.TextRect().iBr.iX;
- }
- }
- break;
- case QStyle::PM_ToolTipLabelFrameWidth:
- {
- /*
- *
- |===================================================================================|
- | info popup note B |
- | ============================================================================== |
- | A | hintText | D|
- | ============================================================================== |
- | C |
- |===================================================================================|
- where A is left padding
- B is top padding
- C is bottom padding
- D is right padding
- we'll provide the average of top and bottom padding as PM_ToolTipLabelFrameWidth
- */
-
- // Set pop-up to contain only one line of text
- TInt index = 0;
- if ( landscape )
- {
- // in landscape another variety is used
- index += 5;
- }
- // Get parameter and table limits for popup preview text window
- TAknLayoutScalableParameterLimits limits =
- AknLayoutScalable_Avkon::popup_preview_text_window_ParamLimits();
-
- TAknLayoutScalableTableLimits tableLimits =
- AknLayoutScalable_Avkon::popup_preview_text_window_t_Limits();
-
- TInt windowVariety = Min( Max( index, limits.FirstVariety() ), limits.LastVariety() );
-
- TAknLayoutScalableParameterLimits tParamLimits =
- AknLayoutScalable_Avkon:: popup_preview_text_window_t_ParamLimits(
- tableLimits.FirstIndex() );
-
- TInt lineVariety = Min( Max( index, tParamLimits.FirstVariety() ), tParamLimits.LastVariety() );
-
- TAknWindowLineLayout lineLayout = AknLayoutScalable_Avkon::popup_preview_text_window(windowVariety).LayoutLine();
-
- // rect for the whole info popup
- TAknLayoutRect layoutRect;
- layoutRect.LayoutRect(screenRect, lineLayout);
- TRect rectPopupWindow = layoutRect.Rect();
-
- TAknTextComponentLayout popupTextLayout =
- AknLayoutScalable_Avkon::popup_preview_text_window_t(
- tableLimits.FirstIndex(), lineVariety );
-
- // rect for the whole the text inside the popup
- TAknLayoutText layoutText;
- layoutText.LayoutText( rectPopupWindow, popupTextLayout );
-
- // Each margin has different value in S60 - let's take average of top & bottom
- TInt topMargin = layoutText.TextRect().iTl.iY - layoutRect.Rect().iTl.iY;
- TInt bottomMargin = layoutRect.Rect().iBr.iY - layoutText.TextRect().iBr.iY;
- TInt averageMargin = (TInt)(topMargin+bottomMargin)/2;
- value = averageMargin;
- }
- break;
- case QStyle::PM_ListViewIconSize:
- {
- // todo: there are lots and lots of views with different sized icons - which one to use?
- // todo: this is probably not a good default icon size, as this fetches A column icon size
- // todo: preferably use settings item with graphic instead
- TAknLayoutRect iconRect;
- iconRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::list_double_graphic_pane_g1_cp2(0).LayoutLine());
- //icon areas are usually squares - lets take bigger of two dimensions
- value = Max( iconRect.Rect().Width(), iconRect.Rect().Height() );
- }
- break;
-
- case QStyle::PM_LargeIconSize: // lets use AS icon as a base for large icon
- case QStyle::PM_IconViewIconSize:
- {
- // Lets assume that we'd take these from grid (3x4) layout
- TAknLayoutRect appPaneRect;
- TAknLayoutRect gridAppRect;
- TAknLayoutRect cellAppRect;
- TInt varietyGrid = 2; //Let's use the 3x4 grid as a base.
- TInt varietyCell = 1; //Let's use the 3x4 grid as a base.
- if ( landscape )
- {
- varietyGrid = 3;
- varietyCell = 2;
- }
- appPaneRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::listscroll_app_pane(1).LayoutLine()); //3x4 grid
- gridAppRect.LayoutRect( appPaneRect.Rect(), AknLayoutScalable_Avkon::grid_app_pane(varietyGrid).LayoutLine());
- cellAppRect.LayoutRect( gridAppRect.Rect(), AknLayoutScalable_Avkon::cell_app_pane(varietyCell, 0, 0).LayoutLine());
- TAknLayoutRect cellGraphRect;
- TAknWindowComponentLayout appIcon = AknLayoutScalable_Avkon::cell_app_pane_g1(0); // no mark, no highlight
- cellGraphRect.LayoutRect( gridAppRect.Rect(), appIcon);
- //icon areas are usually squares - if not, lets take larger
- value = Max( cellGraphRect.Rect().Width(), cellGraphRect.Rect().Height());
- }
- break;
- case QStyle::PM_TabBarIconSize:
- {
- TAknLayoutRect naviNaviRect;
- naviNaviRect.LayoutRect( naviPaneRect, AknLayoutScalable_Avkon::navi_navi_tabs_pane().LayoutLine()); // two tabs
- TAknLayoutRect tabRect;
- tabRect.LayoutRect( naviNaviRect.Rect(), AknLayoutScalable_Avkon::navi_tabs_3_pane().LayoutLine()); //active tab on left
- TAknLayoutRect activeTabRect;
- activeTabRect.LayoutRect( tabRect.Rect(), AknLayoutScalable_Avkon::tabs_3_active_pane(0).LayoutLine()); //active tab
- TAknLayoutRect activeTabGraphicRect;
-
- activeTabGraphicRect.LayoutRect( activeTabRect.Rect(), AknLayoutScalable_Avkon::tabs_3_active_pane_g1().LayoutLine()); //active tab graphic
- value = Min(activeTabGraphicRect.Rect().Width(), activeTabGraphicRect.Rect().Height());
- }
- break;
- case QStyle::PM_MessageBoxIconSize:
- {
- TAknLayoutRect noteRect;
- noteRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::popup_note_image_window(0).LayoutLine()); //note with image
- TAknLayoutRect noteImageRect;
- noteImageRect.LayoutRect( noteRect.Rect(), AknLayoutScalable_Avkon::popup_note_image_window_g2(2).LayoutLine()); //note with image
- value = noteImageRect.Rect().Width();
- }
- break;
- case QStyle::PM_TextCursorWidth:
- {
- TAknLayoutRect miscGraphicsRect;
- miscGraphicsRect.LayoutRect( screenRect, AknLayoutScalable_Avkon::misc_graphics());
- miscGraphicsRect.LayoutRect( miscGraphicsRect.Rect(), AknLayoutScalable_Avkon::misc_graphics());
- TAknLayoutRect textsGraphicsRect;
- textsGraphicsRect.LayoutRect( miscGraphicsRect.Rect(), AknLayoutScalable_Avkon::texts_graphics());
- TAknLayoutRect cursorGraphicsRect;
- cursorGraphicsRect.LayoutRect( textsGraphicsRect.Rect(), AknLayoutScalable_Avkon::cursor_graphics_pane());
- TAknLayoutRect cursorPrimaryRect;
- cursorPrimaryRect.LayoutRect( cursorGraphicsRect.Rect(), AknLayoutScalable_Avkon::cursor_primary_pane());
- TAknLayoutRect cursorRect;
- cursorRect.LayoutRect( cursorPrimaryRect.Rect(), AknLayoutScalable_Avkon::cursor_digital_pane_g1());
- value = cursorRect.Rect().Width();
- }
- break;
- case QStyle::PM_SliderLength:
- {
- TAknLayoutRect settingRect;
- settingRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::listscroll_set_pane() );
- TAknLayoutRect settingContentRect;
- settingContentRect.LayoutRect( settingRect.Rect(), AknLayoutScalable_Avkon::set_content_pane() );
- TAknLayoutRect sliderRect;
- sliderRect.LayoutRect( settingContentRect.Rect(), AknLayoutScalable_Avkon::setting_slider_graphic_pane() );
- TAknLayoutRect sliderSettingRect;
- sliderSettingRect.LayoutRect( sliderRect.Rect(), AknLayoutScalable_Avkon::slider_set_pane_cp() );
- TAknLayoutRect sliderGraph2Rect;
- sliderGraph2Rect.LayoutRect( sliderSettingRect.Rect(), AknLayoutScalable_Avkon::slider_set_pane_g6() );
- value = sliderGraph2Rect.Rect().Width();
- }
- break;
- case QStyle::PM_SliderThickness:
- {
- TAknLayoutRect settingRect;
- settingRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::listscroll_set_pane() );
- TAknLayoutRect settingContentRect;
- settingContentRect.LayoutRect( settingRect.Rect(), AknLayoutScalable_Avkon::set_content_pane() );
- TAknLayoutRect sliderRect;
- sliderRect.LayoutRect( settingContentRect.Rect(), AknLayoutScalable_Avkon::setting_slider_graphic_pane() );
- TAknLayoutRect sliderSettingRect;
- sliderSettingRect.LayoutRect( sliderRect.Rect(), AknLayoutScalable_Avkon::slider_set_pane_cp() );
- TAknLayoutRect sliderGraph2Rect;
- sliderGraph2Rect.LayoutRect( sliderSettingRect.Rect(), AknLayoutScalable_Avkon::slider_set_pane_g6() );
- //todo: make a proper calculation for tick marks
- value = (TInt)(sliderGraph2Rect.Rect().Height()*1.5); // add assumed tickmark height
- }
- break;
- case QStyle::PM_SliderTickmarkOffset:
- {
- TAknLayoutRect settingRect;
- settingRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::listscroll_set_pane() );
- TAknLayoutRect settingContentRect;
- settingContentRect.LayoutRect( settingRect.Rect(), AknLayoutScalable_Avkon::set_content_pane() );
- TAknLayoutRect sliderRect;
- sliderRect.LayoutRect( settingContentRect.Rect(), AknLayoutScalable_Avkon::setting_slider_graphic_pane() );
- TAknLayoutRect sliderSettingRect;
- sliderSettingRect.LayoutRect( sliderRect.Rect(), AknLayoutScalable_Avkon::slider_set_pane_cp() );
- TAknLayoutRect sliderGraph2Rect;
- sliderGraph2Rect.LayoutRect( sliderSettingRect.Rect(), AknLayoutScalable_Avkon::slider_set_pane_g6() );
- //todo: make a proper calculation for tick marks
- value = (TInt)(sliderGraph2Rect.Rect().Height()*0.5); // no tickmarks in S60, lets assume they are half the size of slider indicator
- }
- break;
- case QStyle::PM_SliderControlThickness:
- {
- TAknLayoutRect settingRect;
- settingRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::listscroll_set_pane() );
- TAknLayoutRect settingContentRect;
- settingContentRect.LayoutRect( settingRect.Rect(), AknLayoutScalable_Avkon::set_content_pane() );
- TAknLayoutRect sliderRect;
- sliderRect.LayoutRect( settingContentRect.Rect(), AknLayoutScalable_Avkon::setting_slider_graphic_pane() );
- TAknLayoutRect sliderSettingRect;
- sliderSettingRect.LayoutRect( sliderRect.Rect(), AknLayoutScalable_Avkon::slider_set_pane_cp() );
- TAknLayoutRect sliderGraph2Rect;
- sliderGraph2Rect.LayoutRect( sliderSettingRect.Rect(), AknLayoutScalable_Avkon::slider_set_pane_g6() );
- value = sliderGraph2Rect.Rect().Height();
- }
- break;
- case QStyle::PM_SliderSpaceAvailable:
- {
- TAknLayoutRect settingRect;
- settingRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::listscroll_set_pane() );
- TAknLayoutRect settingContentRect;
- settingContentRect.LayoutRect( settingRect.Rect(), AknLayoutScalable_Avkon::set_content_pane() );
- TAknLayoutRect sliderRect;
- sliderRect.LayoutRect( settingContentRect.Rect(), AknLayoutScalable_Avkon::setting_slider_graphic_pane() );
- TAknLayoutRect sliderSettingRect;
- sliderSettingRect.LayoutRect( sliderRect.Rect(), AknLayoutScalable_Avkon::slider_set_pane_cp() );
- value = sliderSettingRect.Rect().Width();
- }
- break;
- case QStyle::PM_MenuBarItemSpacing:
- {
- TAknLayoutRect appWindow;
- appWindow.LayoutRect( screenRect, AknLayoutScalable_Avkon::application_window(0) );
-
- variety = 0;
- if ( landscape )
- {
- variety = 2;
- }
- TAknLayoutRect areaBottomRect;
- areaBottomRect.LayoutRect( appWindow.Rect(), AknLayoutScalable_Avkon::area_bottom_pane(variety) );
-
- TAknLayoutRect controlPaneRect;
- controlPaneRect.LayoutRect( areaBottomRect.Rect(), AknLayoutScalable_Avkon::control_pane() );
- TAknLayoutText controlPaneLSKText;
- TAknLayoutText controlPaneRSKText;
- TAknLayoutText controlPaneMSKText;
- variety = 0;
- if (AknLayoutUtils::MSKEnabled())
- {
- variety = 3;
- controlPaneMSKText.LayoutText( controlPaneRect.Rect(), AknLayoutScalable_Avkon::control_pane_t3(variety)); //MSK text area
- }
- controlPaneLSKText.LayoutText( controlPaneRect.Rect(), AknLayoutScalable_Avkon::control_pane_t1(variety)); //LSK text area
- controlPaneRSKText.LayoutText( controlPaneRect.Rect(), AknLayoutScalable_Avkon::control_pane_t2(variety)); //RSK text area
-
- /*
- *
- ==================================================================================
- | A | LSK_rect | B | MSK_rect | C | RSK_rect | D |
- ==================================================================================
- where A is left padding (between control pane and LSK rect)
- B is mid-left padding (between LSK and MSK rects)
- C is mid-right padding (between MSK and RSK rects)
- D is right padding (between RSK and control pane)
-
- ==> Since all these can be separate, lets take Max of {A..D} for PM value
- */
-
- TInt itemSpacing1 = 0;
- TInt itemSpacing2 = 0;
- TInt itemSpacing3 = 0;
- TInt itemSpacing4 = 0;
- TInt itemSpacingMax = 0;
- if ( !AknLayoutUtils::MSKEnabled() )
- {
- itemSpacing1 = controlPaneRect.Rect().iBr.iX - controlPaneRSKText.TextRect().iBr.iX;
- itemSpacing2 = controlPaneLSKText.TextRect().iTl.iX - controlPaneRect.Rect().iTl.iX;
- if ( !landscape )
- {
- // use mid gap only in portrait
- itemSpacing3 = controlPaneRSKText.TextRect().iTl.iX - controlPaneLSKText.TextRect().iBr.iX;
- }
- itemSpacingMax = Max(itemSpacing1, Max( itemSpacing2, itemSpacing3));
- // no itemspacing4 if no MSK
- }
- else
- {
- itemSpacing1 = controlPaneRect.Rect().iBr.iX - controlPaneRSKText.TextRect().iBr.iX;
- itemSpacing2 = controlPaneLSKText.TextRect().iTl.iX - controlPaneRect.Rect().iTl.iX;
- if ( !(AknLayoutUtils::PenEnabled() || landscape) ) // no MSK in touch, nor in landscape
- {
- itemSpacing3 = controlPaneRSKText.TextRect().iTl.iX - controlPaneMSKText.TextRect().iBr.iX;
- itemSpacing4 = controlPaneMSKText.TextRect().iTl.iX - controlPaneLSKText.TextRect().iBr.iX;
- }
- itemSpacingMax = Max(itemSpacing1, Max( itemSpacing2, Max( itemSpacing3, itemSpacing4 )));
- }
- value = itemSpacingMax;
- }
- break;
- case QStyle::PM_MenuBarHMargin:
- {
- TAknLayoutRect appWindow;
- appWindow.LayoutRect( screenRect, AknLayoutScalable_Avkon::application_window(0) );
-
- variety = 0;
- if ( landscape )
- {
- variety = 6;
- }
- TAknLayoutRect areaBottomRect;
- areaBottomRect.LayoutRect( appWindow.Rect(), AknLayoutScalable_Avkon::area_bottom_pane(variety) );
-
- // variety 7 if thin status pane, 1 if no status pane, 3 if small status pane and with main pane, 4 otherwise (idle has bunch of own varieties)
- TAknLayoutRect controlPaneRect;
- controlPaneRect.LayoutRect( areaBottomRect.Rect(), AknLayoutScalable_Avkon::control_pane() );
- value = areaBottomRect.Rect().Height() - controlPaneRect.Rect().Height();
- }
- break;
- case QStyle::PM_MenuBarVMargin:
- {
- TAknLayoutRect appWindow;
- appWindow.LayoutRect( screenRect, AknLayoutScalable_Avkon::application_window(0) );
-
- variety = 0;
- if ( landscape )
- {
- variety = 6;
- }
- TAknLayoutText controlPaneLSKText;
- TAknLayoutRect areaBottomRect;
- areaBottomRect.LayoutRect( appWindow.Rect(), AknLayoutScalable_Avkon::area_bottom_pane(variety) );
- // variety 7 if thin status pane, 1 if no status pane, 3 if small status pane and with main pane, 4 otherwise (idle has bunch of own varieties)
- TAknLayoutRect controlPaneRect;
- controlPaneRect.LayoutRect( areaBottomRect.Rect(), AknLayoutScalable_Avkon::control_pane() );
-
- variety = 0;
- if (AknLayoutUtils::MSKEnabled())
- {
- variety = 3;
- }
- controlPaneLSKText.LayoutText( controlPaneRect.Rect(), AknLayoutScalable_Avkon::control_pane_t1(variety)); //LSK text area
-
- value = controlPaneRect.Rect().Height() - controlPaneLSKText.TextRect().Height();
- }
- break;
- case QStyle::PM_ToolBarItemSpacing:
- {
- TAknLayoutRect popupToolBarWindow;
- variety = 4;
- popupToolBarWindow.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::popup_toolbar_window(variety) );
- TAknLayoutRect gridToolBarRect;
- gridToolBarRect.LayoutRect( popupToolBarWindow.Rect(), AknLayoutScalable_Avkon::grid_toobar_pane() );
- TAknLayoutRect cellToolBarRect1;
- TAknLayoutRect cellToolBarRect2;
- cellToolBarRect1.LayoutRect( gridToolBarRect.Rect(), AknLayoutScalable_Avkon::cell_toolbar_pane(0).LayoutLine() ); //first item
- cellToolBarRect2.LayoutRect( gridToolBarRect.Rect(), AknLayoutScalable_Avkon::cell_toolbar_pane(1).LayoutLine() ); //second item
- value = cellToolBarRect1.Rect().iBr.iX - cellToolBarRect2.Rect().iTl.iX;
- }
- break;
- case QStyle::PM_ToolBarItemMargin:
- {
- variety = 4;
- TAknLayoutRect popupToolBarWindow;
- popupToolBarWindow.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::popup_toolbar_window(variety) );
- TAknLayoutRect gridToolBarRect;
- gridToolBarRect.LayoutRect( popupToolBarWindow.Rect(), AknLayoutScalable_Avkon::grid_toobar_pane() );
- TAknLayoutRect cellToolBarRect1;
- cellToolBarRect1.LayoutRect( gridToolBarRect.Rect(), AknLayoutScalable_Avkon::cell_toolbar_pane(0).LayoutLine() ); //first item
- value = gridToolBarRect.Rect().iTl.iX - cellToolBarRect1.Rect().iTl.iX;
- }
- break;
- case QStyle::PM_LayoutLeftMargin: // there really isn't a default layoutting on s60, but lets use AppShell icon deployment as base
- case QStyle::PM_LayoutRightMargin:
- case QStyle::PM_LayoutTopMargin:
- case QStyle::PM_LayoutBottomMargin:
- case QStyle::PM_LayoutHorizontalSpacing:
- case QStyle::PM_LayoutVerticalSpacing:
- {
- //since spacing and margins should be globally same, lets use same easy component as base - such as find popup
- TAknLayoutRect popup_find_windowRect;
- TAknLayoutRect bg_popup_window_pane_cp12Rect;
- TAknLayoutRect find_popup_paneRect;
- popup_find_windowRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::popup_find_window(0).LayoutLine());
- bg_popup_window_pane_cp12Rect.LayoutRect( popup_find_windowRect.Rect(), AknLayoutScalable_Avkon::bg_popup_window_pane_cp12().LayoutLine());
- find_popup_paneRect.LayoutRect( bg_popup_window_pane_cp12Rect.Rect(), AknLayoutScalable_Avkon::find_popup_pane().LayoutLine());
-
- const TBool mirrored = AknLayoutUtils::LayoutMirrored();
- if ((metric==QStyle::PM_LayoutVerticalSpacing && !mirrored) || metric==QStyle::PM_LayoutLeftMargin)
- {
- if (mirrored)
- {
- value = find_popup_paneRect.Rect().iTl.iX - bg_popup_window_pane_cp12Rect.Rect().iTl.iX;
- }
- else
- {
- value = find_popup_paneRect.Rect().iTl.iX - bg_popup_window_pane_cp12Rect.Rect().iTl.iX;
- }
- }
- else if (metric==QStyle::PM_LayoutRightMargin || (metric==QStyle::PM_LayoutVerticalSpacing && mirrored))
- {
- if (mirrored)
- {
- value = bg_popup_window_pane_cp12Rect.Rect().iBr.iX - find_popup_paneRect.Rect().iBr.iX;
- }
- else
- {
- value = bg_popup_window_pane_cp12Rect.Rect().iBr.iX - find_popup_paneRect.Rect().iBr.iX;
- }
- }
- else if (metric==QStyle::PM_LayoutTopMargin || metric==QStyle::PM_LayoutHorizontalSpacing)
- {
- value = find_popup_paneRect.Rect().iTl.iY - bg_popup_window_pane_cp12Rect.Rect().iTl.iY;
- }
- else if (metric==QStyle::PM_LayoutBottomMargin)
- {
- value = bg_popup_window_pane_cp12Rect.Rect().iBr.iY - find_popup_paneRect.Rect().iBr.iY;
- }
- }
- break;
- case QStyle::PM_MaximumDragDistance:
- {
- value = -1; //disable - not in S60
- }
- break;
- case QStyle::PM_SplitterWidth:
- case QStyle::PM_ScrollBarExtent:
- {
- TAknLayoutRect miscGraphicsRect;
- miscGraphicsRect.LayoutRect( screenRect, AknLayoutScalable_Avkon::misc_graphics());
- miscGraphicsRect.LayoutRect( miscGraphicsRect.Rect(), AknLayoutScalable_Avkon::misc_graphics());
- TAknLayoutRect textsGraphicsRect;
- textsGraphicsRect.LayoutRect( miscGraphicsRect.Rect(), AknLayoutScalable_Avkon::texts_graphics());
- TAknLayoutRect editorScrollRect;
- editorScrollRect.LayoutRect( textsGraphicsRect.Rect(), AknLayoutScalable_Avkon::editor_scroll_pane());
- TAknLayoutRect scrollPaneRect;
- scrollPaneRect.LayoutRect( editorScrollRect.Rect(), AknLayoutScalable_Avkon::scroll_pane_cp13());
- value = scrollPaneRect.Rect().Width(); // width of editor's scroll bar
- }
- break;
- case QStyle::PM_ScrollBarSliderMin:
- {
- TAknLayoutRect listScrollPane;
- listScrollPane.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::listscroll_gen_pane(0));
- TAknLayoutRect scrollPane;
- scrollPane.LayoutRect( listScrollPane.Rect(), AknLayoutScalable_Avkon::scroll_pane());
- TAknLayoutRect scrollHandlePane;
- scrollHandlePane.LayoutRect( scrollPane.Rect(), AknLayoutScalable_Avkon::scroll_handle_pane());
- TAknLayoutRect aidMinSizePane;
- aidMinSizePane.LayoutRect( scrollHandlePane.Rect(), AknLayoutScalable_Avkon::aid_size_min_handle()); // this gives min width size for horizontal scroll bar - same can be used for vertical height minimum
- value = aidMinSizePane.Rect().Height();
- }
- break;
- case QStyle::PM_MenuBarPanelWidth:
- {
- TAknLayoutRect appWindow;
- appWindow.LayoutRect( screenRect, AknLayoutScalable_Avkon::application_window(0) );
-
- variety = 0;
- if ( landscape )
- {
- variety = 2;
- }
- TAknLayoutRect areaBottomRect;
- areaBottomRect.LayoutRect( appWindow.Rect(), AknLayoutScalable_Avkon::area_bottom_pane(variety) );
-
- // todo: prt: variety 7 if thin status pane, 1 if no status pane, 3 if small status pane and with main pane, 4 otherwise (idle has bunch of own varieties)
- // todo: lsc: variety 6 if thin status pane
- // todo: should stacon be considered?
- TAknLayoutRect controlPaneRect;
- controlPaneRect.LayoutRect( areaBottomRect.Rect(), AknLayoutScalable_Avkon::control_pane() );
- value = areaBottomRect.Rect().Height() - controlPaneRect.Rect().Height(); //usually zero
- }
- break;
- case QStyle::PM_ProgressBarChunkWidth:
- {
- // This is either deduced or skinned (for Java) in S60
- // Layout data does not know it. It would require parameters from the
- // actual progress dialog to be able to calc this (max. value and increment)
- // So we need to set up some values - lets take one tenth of progress dialog area:
- TAknLayoutRect appWindow;
- appWindow.LayoutRect( screenRect, AknLayoutScalable_Avkon::application_window(variety) );
- if (landscape)
- {
- variety = 6;
- }
- TAknLayoutRect popupWaitWindowRect;
- popupWaitWindowRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::popup_note_wait_window(variety) );
- TAknLayoutRect waitbarPaneRect;
- waitbarPaneRect.LayoutRect( popupWaitWindowRect.Rect(), AknLayoutScalable_Avkon::wait_bar_pane(0) );
- TAknLayoutRect waitAnimRect;
- waitAnimRect.LayoutRect( waitbarPaneRect.Rect(), AknLayoutScalable_Avkon::wait_anim_pane() );
- value = (TInt) (waitAnimRect.Rect().Width() / 10);
- }
- break;
- case QStyle::PM_TabBarTabOverlap:
- case QStyle::PM_TabBarTabHSpace:
- case QStyle::PM_TabBarTabVSpace:
- case QStyle::PM_TabBarBaseHeight:
- case QStyle::PM_TabBarBaseOverlap:
- case QStyle::PM_TabBarScrollButtonWidth:
- case QStyle::PM_TabBarTabShiftHorizontal:
- case QStyle::PM_TabBarTabShiftVertical:
- value = PixelMetricTabValue(metric, appWindow.Rect(), landscape);
- break;
- case QStyle::PM_MenuPanelWidth:
- case QStyle::PM_MenuHMargin:
- case QStyle::PM_MenuVMargin:
- value = PixelMetricMenuValue(metric, mainPaneRect);
- break;
- case QStyle::PM_ButtonIconSize:
- {
- //lets use voice recorder icons as a base
- //Unfortunately S60 graphics don't separate button bevel graphics from the actual icon.
- //Se we have no means to query the margin from bevel border to "central icon" border.
- //So, we need to make a estimate...
-
- TAknLayoutRect vRMainRect;
- vRMainRect.LayoutRect( mainPaneRect, AknLayoutScalable_Apps::main_vorec_pane() );
-
- TAknLayoutRect vRButtonGridRect;
- vRButtonGridRect.LayoutRect( vRMainRect.Rect(), AknLayoutScalable_Apps::grid_vorec_pane() );
-
- TAknLayoutRect vRButtonCellRect;
- vRButtonCellRect.LayoutRect( vRButtonGridRect.Rect(), AknLayoutScalable_Apps::cell_vorec_pane(0) );
-
- TAknLayoutRect vRButtonCellGraphicsRect;
- vRButtonCellGraphicsRect.LayoutRect( vRButtonCellRect.Rect(), AknLayoutScalable_Apps::cell_vorec_pane_g1() );
-
- // 0.32 is the estimate how much the icon occupies of the button bevel area
- value = vRButtonCellGraphicsRect.Rect().Width() * 0.32;
- }
- break;
- case QStyle::PM_SmallIconSize:
- {
- // lets use AI2 icon as a base
- TAknLayoutRect idlePaneRect;
- idlePaneRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::main_idle_act2_pane() );
- TAknLayoutRect idleDataRect;
- idleDataRect.LayoutRect( idlePaneRect.Rect(), AknLayoutScalable_Avkon::popup_ai2_data_window(1) );
- TAknLayoutRect ai2GridRect;
- ai2GridRect.LayoutRect( idleDataRect.Rect(), AknLayoutScalable_Avkon::grid_ai2_button_pane() );
- TAknLayoutRect ai2MpRect;
- ai2MpRect.LayoutRect( ai2GridRect.Rect(), AknLayoutScalable_Avkon::ai2_mp_button_pane() );
- TAknLayoutRect ai2CellPaneRect;
- ai2CellPaneRect.LayoutRect( ai2MpRect.Rect(), AknLayoutScalable_Avkon::cell_ai2_button_pane(1).LayoutLine() );
- TAknLayoutRect ai2CellButtonRect;
- ai2CellButtonRect.LayoutRect( ai2CellPaneRect.Rect(), AknLayoutScalable_Avkon::cell_ai2_button_pane_g1());
- value = Min( ai2CellButtonRect.Rect().Width(), ai2CellButtonRect.Rect().Height());
- }
- break;
- case QStyle::PM_FocusFrameHMargin:
- case QStyle::PM_FocusFrameVMargin:
- {
- TAknLayoutRect listScrollPane;
- listScrollPane.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::listscroll_gen_pane(0));
- TAknLayoutRect listGenPane;
- listGenPane.LayoutRect(listScrollPane.Rect(), AknLayoutScalable_Avkon::list_gen_pane(0));
- TAknLayoutRect listSinglePane;
- listSinglePane.LayoutRect(listGenPane.Rect(), AknLayoutScalable_Avkon::list_single_pane(0));
- TAknLayoutText listSinglePaneText;
- listSinglePaneText.LayoutText(listSinglePane.Rect(), AknLayoutScalable_Avkon::list_single_pane_t1(0));
- TAknLayoutRect highlightRect;
- highlightRect.LayoutRect(listSinglePane.Rect(), AknLayoutScalable_Avkon::list_highlight_pane_cp1().LayoutLine());
-
- // The difference of center piece from border tell the frame width.
- if ( value == QStyle::PM_FocusFrameHMargin)
- {
- //use topleft for horizontal as S60 uses different values for right and left borders
- value = listSinglePaneText.TextRect().iTl.iX - highlightRect.Rect().iTl.iX;
- }
- else
- {
- value = highlightRect.Rect().iBr.iY - listSinglePaneText.TextRect().iBr.iY;
- }
- }
- break;
- case QStyle::PM_ToolBarIconSize:
- {
- TAknLayoutRect popupToolBarWindow;
- variety = 4;
- popupToolBarWindow.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::popup_toolbar_window(variety) );
- TAknLayoutRect gridToolBarRect;
- gridToolBarRect.LayoutRect( popupToolBarWindow.Rect(), AknLayoutScalable_Avkon::grid_toobar_pane() );
- TAknLayoutRect cellToolBarRect1;
- TAknLayoutRect cellToolBarRect2;
- cellToolBarRect1.LayoutRect( gridToolBarRect.Rect(), AknLayoutScalable_Avkon::cell_toolbar_pane(0).LayoutLine() ); //first item
- value = Min( cellToolBarRect1.Rect().Height(), cellToolBarRect1.Rect().Width() );
- }
- break;
-
- case QStyle::PM_TitleBarHeight: // use titlepane height
- {
- TAknLayoutRect statusPaneRect;
- TAknLayoutRect titlePane;
- TAknLayoutRect areaTopRect;
- if (landscape)
- {
- if ( AknLayoutUtils::PenEnabled() )
- {
- // Top area - 0 is for classic landscape (used in touch landscape as well)
- areaTopRect.LayoutRect( appWindow.Rect(), AknLayoutScalable_Avkon::area_top_pane(2) );
- // Status pane - 0 softkeys on right
- statusPaneRect.LayoutRect( areaTopRect.Rect(), AknLayoutScalable_Avkon::stacon_top_pane() );
- }
- else
- {
- // Top area - 2 is for classic landscape.
- areaTopRect.LayoutRect( appWindow.Rect(), AknLayoutScalable_Avkon::area_bottom_pane(2) );
- // Stacon top pane (default ok)
- statusPaneRect.LayoutRect( areaTopRect.Rect(), AknLayoutScalable_Avkon::stacon_bottom_pane() );
- }
- titlePane.LayoutRect( areaTopRect.Rect(), AknLayoutScalable_Avkon::title_pane_stacon(0) ); //softkeys on right
- }
- else
- {
- // Top area - 0 is for classic portrait
- areaTopRect.LayoutRect( appWindow.Rect(), AknLayoutScalable_Avkon::area_top_pane(0) );
- // Status pane - 0 is for classic portrait
- statusPaneRect.LayoutRect( areaTopRect.Rect(), AknLayoutScalable_Avkon::status_pane(0) );
- titlePane.LayoutRect( statusPaneRect.Rect(), AknLayoutScalable_Avkon::title_pane(0) );
- }
- value = titlePane.Rect().Height();
- }
- break;
- case QStyle::PM_IndicatorWidth:
- case QStyle::PM_IndicatorHeight:
- {
- TRect rectParent( mainPaneRect );
-
- TAknLayoutRect layoutRect;
- layoutRect.LayoutRect( rectParent,AknLayoutScalable_Avkon::set_content_pane().LayoutLine() );
- TAknLayoutRect layoutRect2;
- layoutRect2.LayoutRect( layoutRect.Rect(),AknLayoutScalable_Avkon::list_set_graphic_pane(0).LayoutLine() );
-
- TAknLayoutRect iconLayoutRect;
- iconLayoutRect.LayoutRect( layoutRect2.Rect(), AknLayoutScalable_Avkon::list_set_graphic_pane_g1(0).LayoutLine() );
- if (metric==QStyle::PM_IndicatorWidth)
- {
- value = iconLayoutRect.Rect().Width();
- }
- else
- {
- value = iconLayoutRect.Rect().Height();
- }
- }
- break;
- case QStyle::PM_ExclusiveIndicatorHeight:
- case QStyle::PM_ExclusiveIndicatorWidth:
- {
- TRect rectParent( mainPaneRect );
- TAknLayoutRect layoutRect;
- layoutRect.LayoutRect( rectParent,AknLayoutScalable_Avkon::list_choice_list_pane(1).LayoutLine() ); // w/ scrollbar
- TAknLayoutText itemText;
- itemText.LayoutText( layoutRect.Rect(), AknLayoutScalable_Avkon::list_single_choice_list_pane_t1(1) );
- TAknLayoutRect iconLayoutRect;
- iconLayoutRect.LayoutRect( layoutRect.Rect(), AknLayoutScalable_Avkon::list_single_choice_list_pane_g1().LayoutLine() );
-
- if (metric==QStyle::PM_ExclusiveIndicatorHeight)
- {
- value = iconLayoutRect.Rect().Height();
- }
- else
- {
- value = iconLayoutRect.Rect().Width();
- }
- }
- break;
-
- // These are obsolete.
- case QStyle::PM_DefaultTopLevelMargin:
- case QStyle::PM_DefaultChildMargin:
- case QStyle::PM_DefaultLayoutSpacing:
- break;
-
- case QStyle::PM_Custom_FrameCornerWidth:
- {
- TAknLayoutRect inputFocusRect;
- inputFocusRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::input_focus_pane(0));
- TAknLayoutRect inputFocusInnerRect;
- inputFocusInnerRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::input_focus_pane_g1());
-
- value = inputFocusRect.Rect().iBr.iX - inputFocusInnerRect.Rect().iBr.iX;
- value+= 2; //visually better value for generic cases
- }
- break;
- case QStyle::PM_Custom_FrameCornerHeight:
- {
- TAknLayoutRect inputFocusRect;
- inputFocusRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::input_focus_pane(0));
- TAknLayoutRect inputFocusInnerRect;
- inputFocusInnerRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::input_focus_pane_g1());
- value = inputFocusRect.Rect().iBr.iY - inputFocusInnerRect.Rect().iBr.iY;
- value+= 2; //visually better value for generic cases
- }
- break;
- case QStyle::PM_Custom_BoldLineWidth:
- value = 3;
- break;
- case QStyle::PM_Custom_ThinLineWidth:
- value = 1;
- break;
- case QStyle::PM_Custom_MessageBoxHeight:
- {
- TAknLayoutRect popupRect;
- popupRect.LayoutRect(mainPaneRect, AknLayoutScalable_Avkon::popup_window_general(0));
- value = popupRect.Rect().Height();
- }
- break;
- case QStyle::PM_ButtonShiftHorizontal:
- case QStyle::PM_ButtonShiftVertical:
- value = 0;
- break;
-
- case QStyle::PM_ToolBarExtensionExtent:
- value = PixelMetricTabValue(QStyle::PM_TabBarScrollButtonWidth, appWindow.Rect(), landscape);
- break;
-
- case QStyle::PM_MenuScrollerHeight:
- {
- TRect rectParent( mainPaneRect );
- TAknLayoutRect listWidthScrollBarsRect;
- listWidthScrollBarsRect.LayoutRect( rectParent, AknLayoutScalable_Avkon::listscroll_gen_pane(0).LayoutLine() );
-
- TAknLayoutRect listWidgetRect;
- listWidgetRect.LayoutRect( listWidthScrollBarsRect.Rect(), AknLayoutScalable_Avkon::list_gen_pane(0).LayoutLine() );
- TAknLayoutRect singleLineListWidgetRect;
- singleLineListWidgetRect.LayoutRect( listWidgetRect.Rect(), AknLayoutScalable_Avkon::list_single_pane(0).LayoutLine() );
-
- TAknLayoutRect listHighlightRect;
- listHighlightRect.LayoutRect( singleLineListWidgetRect.Rect(), AknLayoutScalable_Avkon::list_highlight_pane_cp1(0).LayoutLine() );
-
- value = listHighlightRect.Rect().Height();
- }
- break;
-
-// todo: re-check if these really are not available in s60
- case QStyle::PM_MenuDesktopFrameWidth: // not needed in S60 - dislocates Menu both horizontally and vertically
- case QStyle::PM_HeaderMarkSize: // The size of the sort indicator in a header. Not in S60
- case QStyle::PM_SpinBoxSliderHeight: // The height of the optional spin box slider. Not in S60
- case QStyle::PM_HeaderMargin: // not in S60
- case QStyle::PM_MenuTearoffHeight: // not in S60
- case QStyle::PM_DockWidgetFrameWidth: // not in S60
- case QStyle::PM_DockWidgetSeparatorExtent: // not in S60
- case QStyle::PM_MdiSubWindowMinimizedWidth: //no such thing in S60
- case QStyle::PM_HeaderGripMargin: // not in S60
- case QStyle::PM_ToolBarSeparatorExtent: // not in S60
- case QStyle::PM_ToolBarHandleExtent: // not in s60
- case QStyle::PM_MenuButtonIndicator: // none???
- case QStyle::PM_TabBar_ScrollButtonOverlap: // not used in S60 - tab arrows are on left and right side of tab group - not together
- case QStyle::PM_SizeGripSize: // use default
- case QStyle::PM_TabCloseIndicatorWidth:
- case QStyle::PM_TabCloseIndicatorHeight:
- case QStyle::PM_ScrollView_ScrollBarSpacing:
- case QStyle::PM_SubMenuOverlap:
- default:
- break;
- }
- return value;
- }
-
-TInt PixelMetrics::PixelMetricTabValue(QStyle::PixelMetric tabMetric, TRect appWindow, TBool landscape)
- {
- TInt tabValue = 0;
- // common ones
- TAknLayoutRect mainAreaRect;
- TAknLayoutRect rightIndicationRect;
- TAknLayoutRect leftIndicationRect;
- TAknLayoutRect activeTabRect;
- TAknLayoutText activeTabTextRect;
- TAknLayoutRect passiveTabRect;
- TAknLayoutText passiveTabTextRect;
- TAknLayoutRect tabsPaneRect;
- if ( landscape )
- {
- TAknLayoutRect statusPaneRect;
- TAknLayoutRect areaTopRect;
- if ( AknLayoutUtils::PenEnabled() )
- {
- // Top area - 0 is for classic landscape (used in touch landscape as well)
- areaTopRect.LayoutRect( appWindow, AknLayoutScalable_Avkon::area_top_pane(2) );
- // Status pane - 0 softkeys on right
- statusPaneRect.LayoutRect( areaTopRect.Rect(), AknLayoutScalable_Avkon::stacon_top_pane() );
- }
- else
- {
- // Top area - 2 is for classic landscape.
- areaTopRect.LayoutRect( appWindow, AknLayoutScalable_Avkon::area_bottom_pane(2) );
- // Stacon top pane (default ok)
- statusPaneRect.LayoutRect( areaTopRect.Rect(), AknLayoutScalable_Avkon::stacon_bottom_pane() );
- }
- // main pane for landscape
- mainAreaRect.LayoutRect( appWindow, AknLayoutScalable_Avkon::main_pane(4) );
-
- // navi pane
- TAknLayoutRect naviPaneRect;
- naviPaneRect.LayoutRect( statusPaneRect.Rect(), AknLayoutScalable_Avkon::navi_pane_stacon(0) ); // softkeys on right
- // navi-navi pane
- tabsPaneRect.LayoutRect( naviPaneRect.Rect(), AknLayoutScalable_Avkon::navi_navi_pane_stacon(0) ); // softkeys on right
- // Passive tab item - lets use layout where active is on left side of passive
- passiveTabRect.LayoutRect( tabsPaneRect.Rect(), AknLayoutScalable_Avkon::tabs_3_passive_pane(0) );
- // Active tab item
- activeTabRect.LayoutRect( tabsPaneRect.Rect(), AknLayoutScalable_Avkon::tabs_3_active_pane(0) );
- // Left indication
- leftIndicationRect.LayoutRect( tabsPaneRect.Rect(), AknLayoutScalable_Avkon::navi_navi_pane_g1(0) );
- // Right indication
- rightIndicationRect.LayoutRect( tabsPaneRect.Rect(), AknLayoutScalable_Avkon::navi_navi_pane_g2(0) );
- // active tab text rect
- activeTabTextRect.LayoutText( activeTabRect.Rect(), AknLayoutScalable_Avkon::tabs_3_active_pane_t1(1) );
- // passive tab text rect
- passiveTabTextRect.LayoutText( passiveTabRect.Rect(), AknLayoutScalable_Avkon::tabs_3_passive_pane_t1(1) );
- }
- else
- {
- // main pane for portait
- mainAreaRect.LayoutRect( appWindow, AknLayoutScalable_Avkon::main_pane(3) );
- // Top area - 0 is for classic portrait
- TAknLayoutRect areaTopRect;
- areaTopRect.LayoutRect( appWindow, AknLayoutScalable_Avkon::area_top_pane(0) );
- // Status pane - 0 is for classic portrait
- TAknLayoutRect statusPaneRect;
- statusPaneRect.LayoutRect( areaTopRect.Rect(), AknLayoutScalable_Avkon::status_pane(0) );
-
- // Navi pane
- TAknLayoutRect naviPaneRect;
- naviPaneRect.LayoutRect( statusPaneRect.Rect(), AknLayoutScalable_Avkon::navi_pane(0) );
- // Navi-navi pane for tabs (0)
- TAknLayoutRect navi2PaneRect;
- navi2PaneRect.LayoutRect( naviPaneRect.Rect(), AknLayoutScalable_Avkon::navi_navi_pane() );
- // Short tab pane
- tabsPaneRect.LayoutRect( navi2PaneRect.Rect(), AknLayoutScalable_Avkon::navi_navi_tabs_pane() );
- // Tab pane for 2 items
- TAknLayoutRect tab2PaneRect;
- tab2PaneRect.LayoutRect( tabsPaneRect.Rect(), AknLayoutScalable_Avkon::navi_tabs_3_pane() );
- // Passive tab item - lets use layout where active is on left side of passive
- passiveTabRect.LayoutRect( tab2PaneRect.Rect(), AknLayoutScalable_Avkon::tabs_3_passive_pane(0) );
- // Active tab item
- activeTabRect.LayoutRect( tab2PaneRect.Rect(), AknLayoutScalable_Avkon::tabs_3_active_pane(0) );
- // Left indication
- leftIndicationRect.LayoutRect( tabsPaneRect.Rect(), AknLayoutScalable_Avkon::navi_navi_pane_g1(0) );
- // Right indication
- rightIndicationRect.LayoutRect( tabsPaneRect.Rect(), AknLayoutScalable_Avkon::navi_navi_pane_g2(0) );
- // active tab text rect
- activeTabTextRect.LayoutText( activeTabRect.Rect(), AknLayoutScalable_Avkon::tabs_3_active_pane_t1(0) );
- // passive tab text rect
- passiveTabTextRect.LayoutText( passiveTabRect.Rect(), AknLayoutScalable_Avkon::tabs_3_passive_pane_t1(0) );
- }
-
- // active tab on left, passive on rightside
- TInt tabOverlap = activeTabRect.Rect().iBr.iX - passiveTabRect.Rect().iTl.iX;
- TInt tabHSpace = (TInt) ((activeTabTextRect.TextRect().iTl.iX - activeTabRect.Rect().iTl.iX + activeTabRect.Rect().iBr.iX - activeTabTextRect.TextRect().iBr.iX)/2);
- TInt tabVSpace = (TInt) ((activeTabTextRect.TextRect().iTl.iY - activeTabRect.Rect().iTl.iY + activeTabRect.Rect().iBr.iY - activeTabTextRect.TextRect().iBr.iY)/2);
- TInt tabBaseHeight = 0;
- if ( landscape && !AknLayoutUtils::PenEnabled())
- {
- // In landscape tab is below mainpane
- tabBaseHeight = mainAreaRect.Rect().iBr.iY - tabsPaneRect.Rect().iTl.iY;
- }
- else
- {
- // In portrait (and in landscape touch) tab is above mainpane
- tabBaseHeight = tabsPaneRect.Rect().iBr.iY - mainAreaRect.Rect().iTl.iY;
- }
- TInt tabBaseOverlap = 0;
- if ( landscape && !AknLayoutUtils::PenEnabled())
- {
- // In landscape tab is below mainpane
- tabBaseOverlap = Max( 0, mainAreaRect.Rect().iBr.iY - tabsPaneRect.Rect().iTl.iY);
- }
- else
- {
- // In portrait tab is above mainpane
- tabBaseOverlap = Max( 0, mainAreaRect.Rect().iTl.iY - tabsPaneRect.Rect().iBr.iY);
- }
- TInt tabButtonWidth = Max(leftIndicationRect.Rect().Width(), rightIndicationRect.Rect().Width());
- TInt tabVShift = Max( Abs(activeTabTextRect.TextRect().iBr.iY - passiveTabTextRect.TextRect().iBr.iY), Abs(activeTabTextRect.TextRect().iTl.iY - passiveTabTextRect.TextRect().iTl.iY) );
- TInt tabHShift = Max( Abs(activeTabTextRect.TextRect().iBr.iX - passiveTabTextRect.TextRect().iBr.iX), Abs(activeTabTextRect.TextRect().iTl.iX - passiveTabTextRect.TextRect().iTl.iX) );
- tabHShift -= (passiveTabRect.Rect().Width() - tabOverlap); // remove tab change and add overlapping area
-
- switch( tabMetric )
- {
- case QStyle::PM_TabBarTabOverlap:
- tabValue = tabOverlap;
- break;
- case QStyle::PM_TabBarTabHSpace:
- tabValue = tabHSpace;
- break;
- case QStyle::PM_TabBarTabVSpace:
- tabValue = tabVSpace;
- break;
- case QStyle::PM_TabBarBaseHeight:
- tabValue = tabBaseHeight;
- break;
- case QStyle::PM_TabBarBaseOverlap:
- tabValue = tabBaseOverlap;
- break;
- case QStyle::PM_TabBarScrollButtonWidth:
- // Since in Qt the scroll indicator is shown within a button, we need to add button margins to this value
- {
- tabValue = tabButtonWidth + 2*PixelMetricValue(QStyle::PM_ButtonMargin);
- }
- break;
- case QStyle::PM_TabBarTabShiftHorizontal:
- tabValue = tabHShift;
- break;
- case QStyle::PM_TabBarTabShiftVertical:
- tabValue = tabVShift;
- break;
- default:
- break;
- }
- return tabValue;
- }
-
-TInt PixelMetrics::PixelMetricMenuValue(QStyle::PixelMetric tabMetric, TRect mainPaneRect )
- {
- TInt menuValue = 0;
- TAknLayoutRect popupMenuRect;
- popupMenuRect.LayoutRect( mainPaneRect, AknLayoutScalable_Avkon::popup_menu_window(0) );
- TAknLayoutRect listScrollPaneRect;
- listScrollPaneRect.LayoutRect( popupMenuRect.Rect(), AknLayoutScalable_Avkon::listscroll_menu_pane(0) );
- TAknLayoutRect listMenuPaneRect;
- listMenuPaneRect.LayoutRect( listScrollPaneRect.Rect(), AknLayoutScalable_Avkon::list_menu_pane(0) );
- TAknLayoutRect listMenuRow1Rect;
- listMenuRow1Rect.LayoutRect( listScrollPaneRect.Rect(), AknLayoutScalable_Avkon::list_single_pane_cp2(0));
-
- switch (tabMetric)
- {
- case QStyle::PM_MenuPanelWidth:
- menuValue = listMenuPaneRect.Rect().iTl.iX - listScrollPaneRect.Rect().iTl.iX;
- if ( AknLayoutUtils::LayoutMirrored() )
- {
- menuValue = listScrollPaneRect.Rect().iBr.iX - listMenuPaneRect.Rect().iBr.iX;
- }
- break;
- case QStyle::PM_MenuHMargin:
- menuValue = listMenuRow1Rect.Rect().iTl.iX - popupMenuRect.Rect().iTl.iX;
- if ( AknLayoutUtils::LayoutMirrored() )
- {
- menuValue = popupMenuRect.Rect().iBr.iX - listMenuRow1Rect.Rect().iBr.iX;
- }
- break;
- case QStyle::PM_MenuVMargin:
- menuValue = listMenuRow1Rect.Rect().iTl.iY - popupMenuRect.Rect().iTl.iY;
- break;
- default:
- break;
- }
- return menuValue;
- }
diff --git a/util/s60pixelmetrics/pixel_metrics.h b/util/s60pixelmetrics/pixel_metrics.h
deleted file mode 100644
index 0137e4f403..0000000000
--- a/util/s60pixelmetrics/pixel_metrics.h
+++ /dev/null
@@ -1,218 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the utility applications 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$
-**
-****************************************************************************/
-
-#ifndef PIXELMETRICS_H
-#define PIXELMETRICS_H
-
-#include <e32base.h>
-#define S60_Rnd_Env
-
-#ifdef S60_Rnd_Env
-#pragma message ("Building in supported environment")
-
-const TInt KUnknownBase = -5000;
-
-NONSHARABLE_CLASS( QStyle )
- {
- public:
- enum PixelMetric {
- PM_ButtonMargin,
- PM_ButtonDefaultIndicator,
- PM_MenuButtonIndicator,
- PM_ButtonShiftHorizontal,
- PM_ButtonShiftVertical,
-
- PM_DefaultFrameWidth,
- PM_SpinBoxFrameWidth,
- PM_ComboBoxFrameWidth,
-
- PM_MaximumDragDistance,
-
- PM_ScrollBarExtent,
- PM_ScrollBarSliderMin,
-
- PM_SliderThickness, // total slider thickness
- PM_SliderControlThickness, // thickness of the business part
- PM_SliderLength, // total length of slider
- PM_SliderTickmarkOffset, //
- PM_SliderSpaceAvailable, // available space for slider to move
-
- PM_DockWidgetSeparatorExtent,
- PM_DockWidgetHandleExtent,
- PM_DockWidgetFrameWidth,
-
- PM_TabBarTabOverlap,
- PM_TabBarTabHSpace,
- PM_TabBarTabVSpace,
- PM_TabBarBaseHeight,
- PM_TabBarBaseOverlap,
-
- PM_ProgressBarChunkWidth,
-
- PM_SplitterWidth,
- PM_TitleBarHeight,
-
- PM_MenuScrollerHeight,
- PM_MenuHMargin,
- PM_MenuVMargin,
- PM_MenuPanelWidth,
- PM_MenuTearoffHeight,
- PM_MenuDesktopFrameWidth,
-
- PM_MenuBarPanelWidth,
- PM_MenuBarItemSpacing,
- PM_MenuBarVMargin,
- PM_MenuBarHMargin,
-
- PM_IndicatorWidth,
- PM_IndicatorHeight,
- PM_ExclusiveIndicatorWidth,
- PM_ExclusiveIndicatorHeight,
- PM_CheckListButtonSize,
- PM_CheckListControllerSize,
-
- PM_DialogButtonsSeparator,
- PM_DialogButtonsButtonWidth,
- PM_DialogButtonsButtonHeight,
-
- PM_MdiSubWindowFrameWidth,
- PM_MDIFrameWidth = PM_MdiSubWindowFrameWidth, //obsolete
- PM_MdiSubWindowMinimizedWidth,
- PM_MDIMinimizedWidth = PM_MdiSubWindowMinimizedWidth, //obsolete
-
- PM_HeaderMargin,
- PM_HeaderMarkSize,
- PM_HeaderGripMargin,
- PM_TabBarTabShiftHorizontal,
- PM_TabBarTabShiftVertical,
- PM_TabBarScrollButtonWidth,
-
- PM_ToolBarFrameWidth,
- PM_ToolBarHandleExtent,
- PM_ToolBarItemSpacing,
- PM_ToolBarItemMargin,
- PM_ToolBarSeparatorExtent,
- PM_ToolBarExtensionExtent,
-
- PM_SpinBoxSliderHeight,
-
- PM_DefaultTopLevelMargin,
- PM_DefaultChildMargin,
- PM_DefaultLayoutSpacing,
-
- PM_ToolBarIconSize,
- PM_ListViewIconSize,
- PM_IconViewIconSize,
- PM_SmallIconSize,
- PM_LargeIconSize,
-
- PM_FocusFrameVMargin,
- PM_FocusFrameHMargin,
-
- PM_ToolTipLabelFrameWidth,
- PM_CheckBoxLabelSpacing,
- PM_TabBarIconSize,
- PM_SizeGripSize,
- PM_DockWidgetTitleMargin,
- PM_MessageBoxIconSize,
- PM_ButtonIconSize,
-
- PM_DockWidgetTitleBarButtonMargin,
-
- PM_RadioButtonLabelSpacing,
- PM_LayoutLeftMargin,
- PM_LayoutTopMargin,
- PM_LayoutRightMargin,
- PM_LayoutBottomMargin,
- PM_LayoutHorizontalSpacing,
- PM_LayoutVerticalSpacing,
- PM_TabBar_ScrollButtonOverlap,
-
- PM_TextCursorWidth,
-
- PM_TabCloseIndicatorWidth,
- PM_TabCloseIndicatorHeight,
-
- PM_ScrollView_ScrollBarSpacing,
- PM_SubMenuOverlap,
-
- // do not add any values below/greater than this
- PM_CustomBase = 0xf0000000,
-
- // The following are custom values needed to draw the S60Style according scalable UIs.
- // Width of 9-part frame-corner
- PM_Custom_FrameCornerWidth,
- // Height of 9-part frame corner
- PM_Custom_FrameCornerHeight,
- // Bold line width
- PM_Custom_BoldLineWidth,
- // Thin line width
- PM_Custom_ThinLineWidth,
- // Height of a popup info messagebox
- PM_Custom_MessageBoxHeight
- };
-
- };
-#else
-#pragma message ("Building in non-supported environment, this probably fails")
-#endif
-
-
-// Pixel metrics version information.
-class TPixelMetricsVersion
- {
- public:
- TInt majorVersion;
- TInt minorVersion;
- };
-
-NONSHARABLE_CLASS(PixelMetrics)
-{
- public:
- static TPixelMetricsVersion Version();
- static TInt PixelMetricValue(QStyle::PixelMetric);
-
- private:
- static TInt PixelMetricMenuValue( QStyle::PixelMetric menuValue, TRect mainPaneRect );
- static TInt PixelMetricTabValue( QStyle::PixelMetric tabValue, TRect appWindow, TBool landscape );
-};
-
-#endif // PIXELMETRICS_H
diff --git a/util/s60pixelmetrics/pm_mapper.hrh b/util/s60pixelmetrics/pm_mapper.hrh
deleted file mode 100644
index eebc245b08..0000000000
--- a/util/s60pixelmetrics/pm_mapper.hrh
+++ /dev/null
@@ -1,66 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the utility applications 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$
-**
-****************************************************************************/
-
-#ifndef PMMAPPER_HRH
-#define PMMAPPER_HRH
-
-// DATA TYPES
-
-// View IDs.
-enum
- {
- EPMMapperViewId = 1 // Base view.
- };
-
-// Menu items (commands)
-enum
- {
- ECmdStartCalculations = 8500,
- ECmdSwitchOrientation,
- ECmdStatus,
- ECmdSwitchOutput,
- ECmdCreateHeaderFile
- };
-
-#endif // PMMAPPER_HRH
-
-
-// End of File
diff --git a/util/s60pixelmetrics/pm_mapper.mmp b/util/s60pixelmetrics/pm_mapper.mmp
deleted file mode 100644
index 1ef31cdaf2..0000000000
--- a/util/s60pixelmetrics/pm_mapper.mmp
+++ /dev/null
@@ -1,91 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the utility applications 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 <data_caging_paths.hrh>
-#include <platform_paths.hrh>
-
-TARGET pm_mapper.exe
-TARGETTYPE exe
-UID 0x100039CE 0x2002121F
-
-CAPABILITY CAP_APPLICATION
-VENDORID VID_DEFAULT
-
-SOURCEPATH .
-SOURCE pm_mapperview.cpp
-SOURCE pm_mapperapp.cpp
-SOURCE pixel_metrics.cpp
-
-START RESOURCE pm_mapper.rss
-HEADER
-TARGETPATH APP_RESOURCE_DIR
-END
-
-START RESOURCE pm_mapper_reg.rss
-TARGETPATH \private\10003a3f\apps
-END
-
-APP_LAYER_SYSTEMINCLUDE
-USERINCLUDE .
-
-LIBRARY eikcoctl.lib
-LIBRARY avkon.lib
-LIBRARY euser.lib
-LIBRARY apparc.lib
-LIBRARY cone.lib
-LIBRARY eikcore.lib
-LIBRARY bafl.lib
-LIBRARY eikctl.lib
-LIBRARY apgrfx.lib
-LIBRARY aknnotify.lib
-LIBRARY ws32.lib
-LIBRARY commonengine.lib
-LIBRARY fbscli.lib
-LIBRARY eikdlg.lib
-LIBRARY aknskins.lib
-LIBRARY gdi.lib
-LIBRARY CentralRepository.lib
-LIBRARY efsrv.lib
-LIBRARY cdlengine.lib
-LIBRARY AknLayout2.lib
-LIBRARY AknLayout2Scalable.lib
-
-// End of File
diff --git a/util/s60pixelmetrics/pm_mapper.pkg b/util/s60pixelmetrics/pm_mapper.pkg
deleted file mode 100644
index 97a689ed70..0000000000
--- a/util/s60pixelmetrics/pm_mapper.pkg
+++ /dev/null
@@ -1,32 +0,0 @@
-; ==============================================================================
-; Name : PMMapper.pkg
-; Part of : Pixel Metrics Mapper
-; Description : Package file for pixel metrics mapper
-; SIS creation.
-; Version :
-;
-; Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-; This material, including documentation and any related
-; computer programs, is protected by copyright controlled by
-; Nokia Corporation. All rights are reserved. Copying,
-; including reproducing, storing, adapting or translating, any
-; or all of this material requires the prior written consent of
-; Nokia Corporation. This material also contains confidential
-; information which may not be disclosed to others without the
-; prior written consent of Nokia Corporation.
-; ==============================================================================
-
-
-;Header
-#{"PMMapper"},(0x2002121F),1,0,0
-
-;Localised Vendor name
-%{"Nokia Test EN"}
-
-;Unique Vendor name
-:"Vendor"
-
-;Files to install
-"\Epoc32\release\armv5\urel\pm_mapper.exe" -"!:\sys\bin\pm_mapper.exe"
-"\epoc32\data\z\private\10003a3f\apps\pm_mapper_reg.rsc" -"!:\private\10003a3f\import\apps\pm_mapper_reg.rsc"
-"\epoc32\data\Z\Resource\Apps\pm_mapper.RSC" -"!:\resource\apps\pm_mapper.rsc"
diff --git a/util/s60pixelmetrics/pm_mapper.rss b/util/s60pixelmetrics/pm_mapper.rss
deleted file mode 100644
index 4ee8935933..0000000000
--- a/util/s60pixelmetrics/pm_mapper.rss
+++ /dev/null
@@ -1,160 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the utility applications 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$
-**
-****************************************************************************/
-
-
-// RESOURCE IDENTIFIER
-NAME TATR
-
-
-// INCLUDES
-#include <eikon.rh>
-#include <avkon.rh>
-#include <avkon.mbg>
-#include <avkon.rsg>
-#include <avkon.hrh>
-#include <uikon.hrh>
-#include <avkonIcons.hrh>
-#include <data_caging_paths_strings.hrh>
-#include <appinfo.rh>
-
-#include "pm_mapper.hrh"
-
-
-// RESOURCE DEFINITIONS
-
-// -----------------------------------------------------------------------------
-//
-// RSS_SIGNATURE
-//
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE RSS_SIGNATURE { }
-
-
-// -----------------------------------------------------------------------------
-//
-// TBUF
-//
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE TBUF { buf = "pm_mapper"; }
-
-
-// -----------------------------------------------------------------------------
-//
-// EIK_APP_INFO
-//
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE EIK_APP_INFO
- {
- }
-
-// -----------------------------------------------------------------------------
-//
-// r_pmmapper_localisable_app_info
-// Captions for this application.
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE LOCALISABLE_APP_INFO r_pmmapper_localisable_app_info
- {
- short_caption = "pm_mapper";
- caption_and_icon =
- CAPTION_AND_ICON_INFO
- {
- caption = "PixelMetricsMapper";
- };
- }
-
-// -----------------------------------------------------------------------------
-//
-// r_pmmapper_view
-//
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE AVKON_VIEW r_pmmapper_view
- {
- menubar = r_pmmapper_view_menu;
- cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// r_pmmapper_view_menu
-//
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE MENU_BAR r_pmmapper_view_menu
- {
- titles=
- {
- MENU_TITLE { txt = "A"; menu_pane = r_pmmapper_system_menu; }
- };
- }
-
-// -----------------------------------------------------------------------------
-//
-// r_pmmapper_system_menu
-//
-//
-// -----------------------------------------------------------------------------
-//
-RESOURCE MENU_PANE r_pmmapper_system_menu
- {
- items =
- {
- MENU_ITEM { command = ECmdStartCalculations; txt = "Start calculations"; },
- MENU_ITEM { command = ECmdSwitchOrientation; txt = "Switch orientation"; },
- MENU_ITEM { command = ECmdStatus; txt = "Status"; },
- MENU_ITEM { command = ECmdSwitchOutput; txt = "Switch output (file/screen)"; },
- MENU_ITEM { command = ECmdCreateHeaderFile; txt = "Create header file"; }
- };
- }
-
-
-// End of File
diff --git a/util/s60pixelmetrics/pm_mapper_reg.rss b/util/s60pixelmetrics/pm_mapper_reg.rss
deleted file mode 100644
index 7e9784cbf9..0000000000
--- a/util/s60pixelmetrics/pm_mapper_reg.rss
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the utility applications 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 <appinfo.rh>
-#include <pm_mapper.rsg>
-#include <data_caging_paths_strings.hrh>
-
-UID2 KUidAppRegistrationResourceFile
-UID3 0x2002121F // application UID
-
-RESOURCE APP_REGISTRATION_INFO
- {
- app_file = "pm_mapper";
- localisable_resource_file =
- APP_RESOURCE_DIR"\\pm_mapper";
- localisable_resource_id = R_PMMAPPER_LOCALISABLE_APP_INFO;
- }
-
-// End of File
diff --git a/util/s60pixelmetrics/pm_mapperapp.cpp b/util/s60pixelmetrics/pm_mapperapp.cpp
deleted file mode 100644
index 7b8a4bd0b6..0000000000
--- a/util/s60pixelmetrics/pm_mapperapp.cpp
+++ /dev/null
@@ -1,959 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the utility applications 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 FILES
-
-#include <avkon.rsg>
-#include <avkon.hrh>
-#include "pm_mapper.hrh"
-#include "pm_mapperapp.h"
-#include "pm_mapperview.h"
-#include <pm_mapper.rsg>
-
-#include <BldVariant.hrh>
-
-#include <w32std.h>
-#include <apgwgnam.h>
-#include <eikstart.h>
-#include <eikenv.h>
-#include <f32file.h>
-
-#include <avkon.hrh>
-#include <aknenv.h>
-
-#include <aknnotedialog.h>
-#include <stringloader.h>
-#include <coneresloader.h>
-#include <aknglobalnote.h>
-
-#include <CentralRepository.h>
-
-#include <Aknsutils.h>
-#include <AknUtils.h>
-#include "pixel_metrics.h"
-
-#include <avkon.mbg>
-
-#include <AknLayoutConfig.h>
-#include <aknsgcc.h>
-
-typedef TBuf<2048> TMySmallBuffer;
-typedef TBuf<8192> TMyBigBuffer;
-
-_LIT(KLayoutSourceFileAndPath, "\\private\\2002121f\\pm_layout.cpp");
-_LIT(KPixelMetricsDataFiles, "\\private\\2002121f\\*.txt");
-_LIT(KOpenBrace, "{");
-_LIT(KComma, ",");
-_LIT(KColon, ":");
-_LIT(KTab, "\t");
-_LIT(KEndBraceWithCommaAndCRLF, "},\n");
-_LIT(KCRLF, "\n");
-
-// Number of header lines in layout data.
-const TInt KHeaderValues = 4;
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// C++ constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CPixelMetricsMapperAppUi::CPixelMetricsMapperAppUi() : iFileOutputOn(EFalse)
- {
- }
-
-// -----------------------------------------------------------------------------
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CPixelMetricsMapperAppUi::~CPixelMetricsMapperAppUi()
- {
- }
-
-// -----------------------------------------------------------------------------
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CPixelMetricsMapperAppUi::ConstructL()
- {
- BaseConstructL();
-
- CEikonEnv& eikEnv = *CEikonEnv::Static();
-
- eikEnv.WsSession().ComputeMode(
- RWsSession::EPriorityControlDisabled );
- RThread().SetProcessPriority( EPriorityHigh );
-
- CPixelMetricsMapperView* view = new( ELeave ) CPixelMetricsMapperView;
- CleanupStack::PushL( view );
- view->ConstructL();
- CleanupStack::Pop(); // view
- AddViewL(view); // transfer ownership to CAknViewAppUi
- iView = view;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CPixelMetricsMapperAppUi::HandleKeyEventL(
- const TKeyEvent& /*aKeyEvent*/,
- TEventCode /*aType*/ )
- {
- return EKeyWasNotConsumed;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CPixelMetricsMapperAppUi::HandleCommandL( TInt aCommand )
- {
- switch ( aCommand )
- {
- case EAknSoftkeyExit:
- case EEikCmdExit:
- Exit();
- break;
- case ECmdSwitchOutput:
- {
- HBufC* buffer = HBufC::NewLC( 100 );
- TPtr bufferPtr = buffer->Des();
- TBool last = ETrue;
- bufferPtr.Append(_L("Output switched to "));
- iFileOutputOn = !iFileOutputOn;
- if (iFileOutputOn)
- bufferPtr.Append(_L("file."));
- else
- bufferPtr.Append(_L("screen."));
- ShowL( *buffer, last );
- CleanupStack::PopAndDestroy( buffer );
- }
- break;
- case ECmdStatus:
- {
- ClearL();
-
- // layout
- HBufC* buffer = HBufC::NewLC( 100 );
- TPtr bufferPtr = buffer->Des();
- TBool last = ETrue;
-
- // Orientation
- bufferPtr.Append(_L("Orientation: "));
- bufferPtr.AppendNum((TInt)iAvkonAppUi->Orientation());
- ShowL( *buffer, last );
- bufferPtr.Zero();
-
- // Output
- bufferPtr.Append(_L("Output: "));
- if (iFileOutputOn) bufferPtr.Append(_L("File"));
- else bufferPtr.Append(_L("Screen"));
- ShowL( *buffer, last );
- bufferPtr.Zero();
-
- CAknLayoutConfig::TScreenMode localAppScreenMode = CAknSgcClient::ScreenMode();
- TInt hashValue = localAppScreenMode.ScreenStyleHash();
- TPixelsTwipsAndRotation pixels = CAknSgcClient::PixelsAndRotation();
- TSize pixelSize = pixels.iPixelSize;
-
- bufferPtr.Append(_L("LayoutName: "));
-
- if ( (pixelSize.iWidth == 320 || pixelSize.iWidth == 240 )&&
- (pixelSize.iHeight == 320 || pixelSize.iHeight == 240 ))
- {
- if (hashValue==0x996F7AA7)
- bufferPtr.Append(_L("QVGA2"));
- else
- bufferPtr.Append(_L("QVGA1"));
- }
- else if ((pixelSize.iWidth == 640 || pixelSize.iWidth == 360 )&&
- (pixelSize.iHeight == 360 || pixelSize.iHeight == 640 ))
- {
- bufferPtr.Append(_L("nHD"));
- }
- else if ((pixelSize.iWidth == 640 || pixelSize.iWidth == 480 )&&
- (pixelSize.iHeight == 480 || pixelSize.iHeight == 640 ))
- {
- bufferPtr.Append(_L("VGA"));
- }
- else if ((pixelSize.iWidth == 352 || pixelSize.iWidth == 800 )&&
- (pixelSize.iHeight == 800 || pixelSize.iHeight == 352 ))
- {
- bufferPtr.Append(_L("E90"));
- }
- else if ((pixelSize.iWidth == 320 || pixelSize.iWidth == 480 ||
- pixelSize.iWidth == 240 || pixelSize.iWidth == 640 )&&
- (pixelSize.iHeight == 320 || pixelSize.iHeight == 480 ||
- pixelSize.iHeight == 240 || pixelSize.iHeight == 640))
- {
- bufferPtr.Append(_L("HVGA"));
- }
- else if ((pixelSize.iWidth == 480 || pixelSize.iWidth == 854 ||
- pixelSize.iWidth == 848 || pixelSize.iWidth == 800 )&&
- (pixelSize.iHeight == 800 || pixelSize.iHeight == 480 ||
- pixelSize.iHeight == 848 || pixelSize.iHeight == 854))
- {
- bufferPtr.Append(_L("WVGA"));
- }
- else
- {
- bufferPtr.Append(_L("Unknown"));
- }
-
- ShowL( *buffer, last );
- bufferPtr.Zero();
- CleanupStack::PopAndDestroy( buffer );
- }
- break;
- case ECmdSwitchOrientation:
- {
- ClearL();
- HBufC* buffer = HBufC::NewLC( 100 );
- TPtr bufferPtr = buffer->Des();
- TBool last = ETrue;
-
- #ifndef __SERIES60_31__
- if (!iAvkonAppUi->OrientationCanBeChanged())
- {
- bufferPtr.Append(_L("Orientation cannot be changed."));
- ShowL( *buffer, last );
- bufferPtr.Zero();
- CleanupStack::PopAndDestroy( buffer );
- break;
- }
- #endif //__SERIES60_31__
-
- if ( iAvkonAppUi->Orientation() == CAknAppUiBase::EAppUiOrientationPortrait)
- {
- iAvkonAppUi->SetOrientationL(CAknAppUiBase::EAppUiOrientationLandscape);
- }
- else if (iAvkonAppUi->Orientation() == CAknAppUiBase::EAppUiOrientationLandscape)
- {
- iAvkonAppUi->SetOrientationL(CAknAppUiBase::EAppUiOrientationPortrait);
- }
- else
- {
- // unspecified
- iAvkonAppUi->SetOrientationL(CAknAppUiBase::EAppUiOrientationLandscape);
- }
- bufferPtr.Append(_L("Orientation changed."));
- ShowL( *buffer, last );
- bufferPtr.Zero();
- CleanupStack::PopAndDestroy( buffer );
- break;
- }
- case ECmdStartCalculations:
- {
- ClearL();
- // Get known values
- TInt index = 0;
- TBool last = EFalse;
- if (iFileOutputOn)
- {
- TRect screenRect;
- AknLayoutUtils::LayoutMetricsRect(
- AknLayoutUtils::EApplicationWindow,
- screenRect );
-
- // Add screen dimensions
- TInt height = screenRect.Height();
- TInt width = screenRect.Width();
- TBuf16<32> tgt;
- // HEIGHT
- tgt.Append(_L("height: \t"));
- tgt.AppendNum(height, EDecimal); // put max height into text file
- ShowL( tgt, last );
- tgt.Zero();
- // WIDTH
- tgt.Append(_L("width: \t"));
- tgt.AppendNum(width, EDecimal); // put max width into text file
- ShowL( tgt, last );
- tgt.Zero();
- // VERSION
- TPixelMetricsVersion version = PixelMetrics::Version();
- tgt.Append(_L("major_version: \t"));
- tgt.AppendNum(version.majorVersion, EDecimal); // put major version into text file
- ShowL( tgt, last );
- tgt.Zero();
- tgt.Append(_L("minor_version: \t"));
- tgt.AppendNum(version.minorVersion, EDecimal); // put minor version into text file
- ShowL( tgt, last );
- tgt.Zero();
- }
-
- TInt myValue = KErrNotFound;
- for (;;)
- {
- if (index==QStyle::PM_Custom_MessageBoxHeight)
- {
- last = ETrue;
- }
- myValue = PixelMetrics::PixelMetricValue(static_cast<QStyle::PixelMetric>(index));
- ShowSingleValueL( index, myValue, last );
-
- if (last) break;
- // if last before custom values, "jump" to custom base
- if (index==QStyle::PM_SubMenuOverlap) index = QStyle::PM_CustomBase;
- index++;
- }
- }
- break;
- case ECmdCreateHeaderFile:
- CreateHeaderFileL();
- break;
- default:
- break;
- }
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CPixelMetricsMapperAppUi::ShowL( const TDesC& aText, TBool& aLast, const TBool& aFileOutput )
- {
- _LIT( KTestPrefix, "\t" );
-
- HBufC* buffer = HBufC::NewLC( aText.Length() + KTestPrefix().Length() );
- TPtr ptr = buffer->Des();
- ptr.Append( KTestPrefix );
- ptr.Append( aText );
- iView->ShowL( *buffer, aLast, aFileOutput );
- CleanupStack::PopAndDestroy( buffer );
- }
-
-void CPixelMetricsMapperAppUi::ShowSingleValueL(TInt& aPixelMetric, TInt& aValue, TBool& aLast )
- {
- HBufC* buffer = HBufC::NewLC( 100 );
- TPtr bufferPtr = buffer->Des();
-
- switch (aPixelMetric)
- {
- case QStyle::PM_DockWidgetTitleMargin:
- bufferPtr.Append(_L("DockTitleMargin: "));
- break;
- case QStyle::PM_DockWidgetTitleBarButtonMargin:
- bufferPtr.Append(_L("DockTitleBtnMargin: "));
- break;
- case QStyle::PM_ButtonMargin:
- bufferPtr.Append(_L("ButtonMargin: "));
- break;
- case QStyle::PM_ButtonDefaultIndicator:
- bufferPtr.Append(_L("ButtonDefaultIndicator: "));
- break;
- case QStyle::PM_MdiSubWindowFrameWidth:
- bufferPtr.Append(_L("MdiSubWndFrameW: "));
- break;
- case QStyle::PM_ComboBoxFrameWidth:
- bufferPtr.Append(_L("ComboBoxFrameWidth: "));
- break;
- case QStyle::PM_SpinBoxFrameWidth:
- bufferPtr.Append(_L("SpinBoxFrameWidth: "));
- break;
- case QStyle::PM_DefaultFrameWidth:
- bufferPtr.Append(_L("DefaultFrameWidth: "));
- break;
- case QStyle::PM_RadioButtonLabelSpacing:
- bufferPtr.Append(_L("RadioButtonLabelSpc: "));
- break;
- case QStyle::PM_CheckBoxLabelSpacing:
- bufferPtr.Append(_L("CheckBoxLabelSpacing: "));
- break;
- case QStyle::PM_ToolTipLabelFrameWidth:
- bufferPtr.Append(_L("ToolTipLabelFrameW: "));
- break;
- case QStyle::PM_ListViewIconSize:
- bufferPtr.Append(_L("ListViewIconSize: "));
- break;
- case QStyle::PM_LargeIconSize:
- bufferPtr.Append(_L("LargeIconSize: "));
- break;
- case QStyle::PM_IconViewIconSize:
- bufferPtr.Append(_L("IconViewIconSize: "));
- break;
- case QStyle::PM_TabBarIconSize:
- bufferPtr.Append(_L("TabBarIconSize: "));
- break;
- case QStyle::PM_MessageBoxIconSize:
- bufferPtr.Append(_L("MessageBoxIconSize: "));
- break;
- case QStyle::PM_ButtonIconSize:
- bufferPtr.Append(_L("ButtonIconSize: "));
- break;
- case QStyle::PM_TextCursorWidth:
- bufferPtr.Append(_L("TextCursorWidth: "));
- break;
- case QStyle::PM_SliderLength:
- bufferPtr.Append(_L("SliderLength: "));
- break;
- case QStyle::PM_SliderThickness:
- bufferPtr.Append(_L("SliderThickness: "));
- break;
- case QStyle::PM_SliderTickmarkOffset:
- bufferPtr.Append(_L("SliderTickmarkOffset: "));
- break;
- case QStyle::PM_SliderControlThickness:
- bufferPtr.Append(_L("SliderCntrlThickness: "));
- break;
- case QStyle::PM_SliderSpaceAvailable:
- bufferPtr.Append(_L("SliderSpaceAvailable: "));
- break;
- case QStyle::PM_MenuBarItemSpacing:
- bufferPtr.Append(_L("MenuBarItemSpacing: "));
- break;
- case QStyle::PM_MenuBarHMargin:
- bufferPtr.Append(_L("MenuBarHMargin: "));
- break;
- case QStyle::PM_MenuBarVMargin:
- bufferPtr.Append(_L("MenuBarVMargin: "));
- break;
- case QStyle::PM_ToolBarItemSpacing:
- bufferPtr.Append(_L("ToolBarItemSpacing: "));
- break;
- case QStyle::PM_ToolBarFrameWidth:
- bufferPtr.Append(_L("ToolBarFrameWidth: "));
- break;
- case QStyle::PM_ToolBarItemMargin:
- bufferPtr.Append(_L("ToolBarItemMargin: "));
- break;
- case QStyle::PM_LayoutLeftMargin:
- bufferPtr.Append(_L("LayoutLeftMargin: "));
- break;
- case QStyle::PM_LayoutRightMargin:
- bufferPtr.Append(_L("LayoutRightMargin: "));
- break;
- case QStyle::PM_LayoutTopMargin:
- bufferPtr.Append(_L("LayoutTopMargin: "));
- break;
- case QStyle::PM_LayoutBottomMargin:
- bufferPtr.Append(_L("LayoutBottomMargin: "));
- break;
- case QStyle::PM_LayoutHorizontalSpacing:
- bufferPtr.Append(_L("LayoutHSpacing: "));
- break;
- case QStyle::PM_LayoutVerticalSpacing:
- bufferPtr.Append(_L("LayoutVSpacing: "));
- break;
- case QStyle::PM_MaximumDragDistance:
- bufferPtr.Append(_L("MaxDragDistance: "));
- break;
- case QStyle::PM_ScrollBarExtent:
- bufferPtr.Append(_L("ScrollBarExtent: "));
- break;
- case QStyle::PM_ScrollBarSliderMin:
- bufferPtr.Append(_L("ScrollBarSliderMin: "));
- break;
- case QStyle::PM_MenuBarPanelWidth:
- bufferPtr.Append(_L("MenuBarPanelWidth: "));
- break;
- case QStyle::PM_ProgressBarChunkWidth:
- bufferPtr.Append(_L("ProgBarChunkWidth: "));
- break;
- case QStyle::PM_TabBarTabOverlap:
- bufferPtr.Append(_L("TabBarTabOverlap: "));
- break;
- case QStyle::PM_TabBarTabHSpace:
- bufferPtr.Append(_L("TabBarTabHSpace: "));
- break;
- case QStyle::PM_TabBarTabVSpace:
- bufferPtr.Append(_L("TabBarTabVSpace: "));
- break;
- case QStyle::PM_TabBarBaseHeight:
- bufferPtr.Append(_L("TabBarBaseHeight: "));
- break;
- case QStyle::PM_TabBarBaseOverlap:
- bufferPtr.Append(_L("TabBarBaseOverlap: "));
- break;
- case QStyle::PM_TabBarScrollButtonWidth:
- bufferPtr.Append(_L("TabBarScrollBtnWidth: "));
- break;
- case QStyle::PM_TabBarTabShiftHorizontal:
- bufferPtr.Append(_L("TabBarTabShiftH: "));
- break;
- case QStyle::PM_TabBarTabShiftVertical:
- bufferPtr.Append(_L("TabBarTabShiftV: "));
- break;
- case QStyle::PM_MenuPanelWidth:
- bufferPtr.Append(_L("MenuPanelWidth: "));
- break;
- case QStyle::PM_MenuHMargin:
- bufferPtr.Append(_L("MenuHMargin: "));
- break;
- case QStyle::PM_MenuVMargin:
- bufferPtr.Append(_L("MenuVMargin: "));
- break;
- case QStyle::PM_MenuDesktopFrameWidth:
- bufferPtr.Append(_L("MenuFrameWidth: "));
- break;
- case QStyle::PM_SmallIconSize:
- bufferPtr.Append(_L("SmallIconSize: "));
- break;
- case QStyle::PM_FocusFrameHMargin:
- bufferPtr.Append(_L("FocusFrameHMargin: "));
- break;
- case QStyle::PM_FocusFrameVMargin:
- bufferPtr.Append(_L("FocusFrameVMargin: "));
- break;
- case QStyle::PM_ToolBarIconSize:
- bufferPtr.Append(_L("ToolBarIconSize: "));
- break;
- case QStyle::PM_TitleBarHeight: // use titlepane height
- bufferPtr.Append(_L("TitleBarHeight: "));
- break;
- case QStyle::PM_IndicatorWidth:
- bufferPtr.Append(_L("IndicatorWidth: "));
- break;
- case QStyle::PM_IndicatorHeight:
- bufferPtr.Append(_L("IndicatorHeight: "));
- break;
- case QStyle::PM_ExclusiveIndicatorHeight:
- bufferPtr.Append(_L("ExclusiveIndHeight: "));
- break;
- case QStyle::PM_ExclusiveIndicatorWidth:
- bufferPtr.Append(_L("ExclusiveIndWidth: "));
- break;
- case QStyle::PM_HeaderMargin: // not in S60
- bufferPtr.Append(_L("HeaderMargin: "));
- break;
- case QStyle::PM_MenuScrollerHeight: // not in S60
- bufferPtr.Append(_L("MenuScrollerHeight: "));
- break;
- case QStyle::PM_MenuTearoffHeight: // not in S60
- bufferPtr.Append(_L("MenuTearoffHeight: "));
- break;
- case QStyle::PM_DockWidgetFrameWidth: // not in S60
- bufferPtr.Append(_L("DockFrameWidth: "));
- break;
- case QStyle::PM_DockWidgetSeparatorExtent: // not in S60
- bufferPtr.Append(_L("DockSepExtent: "));
- break;
- case QStyle::PM_MdiSubWindowMinimizedWidth: //no such thing in S60
- bufferPtr.Append(_L("MdiSubWndMinWidth: "));
- break;
- case QStyle::PM_HeaderGripMargin: // not in S60
- bufferPtr.Append(_L("HeaderGripMargin: "));
- break;
- case QStyle::PM_SplitterWidth: // not in S60
- bufferPtr.Append(_L("SplitterWidth: "));
- break;
- case QStyle::PM_ToolBarExtensionExtent: // not in S60
- bufferPtr.Append(_L("ToolBarExtExtent: "));
- break;
- case QStyle::PM_ToolBarSeparatorExtent: // not in S60
- bufferPtr.Append(_L("ToolBarSepExtent: "));
- break;
- case QStyle::PM_ToolBarHandleExtent: // not in s60
- bufferPtr.Append(_L("ToolBarHandleExtent: "));
- break;
- case QStyle::PM_MenuButtonIndicator: // none???
- bufferPtr.Append(_L("MenuButtonIndicator: "));
- break;
- case QStyle::PM_ButtonShiftHorizontal: //none in 3.x
- bufferPtr.Append(_L("ButtonShiftHorizontal: "));
- break;
- case QStyle::PM_ButtonShiftVertical: // none in 3.x
- bufferPtr.Append(_L("ButtonShiftVertical: "));
- break;
- case QStyle::PM_TabBar_ScrollButtonOverlap: // not used in S60 - tab arrows are on left and right side of tab group - not together
- bufferPtr.Append(_L("TabScrollBtnOverlap: "));
- break;
- case QStyle::PM_SizeGripSize: // use default
- bufferPtr.Append(_L("SizeGripSize: "));
- break;
- case QStyle::PM_DockWidgetHandleExtent:
- bufferPtr.Append(_L("DockWdgtHandleExt: "));
- break;
- case QStyle::PM_CheckListButtonSize:
- bufferPtr.Append(_L("CheckListButtonSize: "));
- break;
- case QStyle::PM_CheckListControllerSize:
- bufferPtr.Append(_L("CheckListCntlerSize: "));
- break;
- case QStyle::PM_DialogButtonsSeparator:
- bufferPtr.Append(_L("DialogBtnSeparator: "));
- break;
- case QStyle::PM_DialogButtonsButtonWidth:
- bufferPtr.Append(_L("DialogBtnWidth: "));
- break;
- case QStyle::PM_DialogButtonsButtonHeight:
- bufferPtr.Append(_L("DialogBtnHeight: "));
- break;
- case QStyle::PM_HeaderMarkSize:
- bufferPtr.Append(_L("HeaderMarkSize: "));
- break;
- case QStyle::PM_SpinBoxSliderHeight:
- bufferPtr.Append(_L("SpinBoxSliderHeight: "));
- break;
- case QStyle::PM_DefaultTopLevelMargin:
- bufferPtr.Append(_L("DefaultTopLvlMrg: "));
- break;
- case QStyle::PM_DefaultChildMargin:
- bufferPtr.Append(_L("DefaultChildMrg: "));
- break;
- case QStyle::PM_DefaultLayoutSpacing:
- bufferPtr.Append(_L("DefaultlayoutSpc: "));
- break;
- case QStyle::PM_TabCloseIndicatorWidth:
- bufferPtr.Append(_L("TabCloseIndWidth: "));
- break;
- case QStyle::PM_TabCloseIndicatorHeight:
- bufferPtr.Append(_L("TabCloseIndHeight: "));
- break;
- case QStyle::PM_ScrollView_ScrollBarSpacing:
- bufferPtr.Append(_L("ScrollViewBarSpc: "));
- break;
- case QStyle::PM_SubMenuOverlap:
- bufferPtr.Append(_L("SubMenuOverlap: "));
- break;
- case QStyle::PM_Custom_FrameCornerHeight:
- bufferPtr.Append(_L("C_FrCornerHeight: "));
- break;
- case QStyle::PM_Custom_FrameCornerWidth:
- bufferPtr.Append(_L("C_FrCornerWidth: "));
- break;
- case QStyle::PM_Custom_ThinLineWidth:
- bufferPtr.Append(_L("C_ThinLineWidth: "));
- break;
- case QStyle::PM_Custom_BoldLineWidth:
- bufferPtr.Append(_L("C_BoldLineWidth: "));
- break;
- case QStyle::PM_Custom_MessageBoxHeight:
- bufferPtr.Append(_L("C_MsgBoxHeight: "));
- break;
- default:
- bufferPtr.Append(_L("Default: "));
- break;
- }
-
- if (iFileOutputOn)
- {
- bufferPtr.Append('\t');
- }
- bufferPtr.AppendNum(aValue);
- bufferPtr.Append(_L(" "));
- ShowL( *buffer, aLast, iFileOutputOn );
- CleanupStack::PopAndDestroy( buffer );
- }
-
-void CPixelMetricsMapperAppUi::ClearL()
- {
- iView->ClearL();
- }
-
-void CPixelMetricsMapperAppUi::CreateHeaderFileL() const
- {
- // Open/create resulting file.
- RFile file;
- HBufC* layoutFile = HBufC::NewLC( KMaxFileName );
- *layoutFile = KLayoutSourceFileAndPath;
- TFileName fileName = *layoutFile;
- CleanupStack::PopAndDestroy(layoutFile);
- RFs& fs = CEikonEnv::Static()->FsSession();
- TInt error = file.Open(fs,fileName, EFileWrite|EFileShareAny|EFileStreamText );
- if (error==KErrNotFound)
- {
- file.Create(fs,fileName, EFileWrite|EFileShareAny|EFileStreamText);
- }
- CleanupClosePushL( file );
- file.SetSize( 0 );
-
- // Make all writes as from textfile.
- TFileText textFile;
- textFile.Set( file );
- textFile.Seek( ESeekStart );
-
- // Take all layout files from private folder.
- CDir* dirList;
- User::LeaveIfError(fs.GetDir(
- KPixelMetricsDataFiles,
- KEntryAttMaskSupported,
- ESortByName,
- dirList));
-
- TMySmallBuffer bufferLayoutHdr;
- TMyBigBuffer bufferPMData;
- TInt fileCount = dirList->Count();
- for (TInt i=0;i<fileCount;i++)
- {
- // open sourcefile
- RFile sourceFile;
- TFileName layoutFile = (*dirList)[i].iName;
- User::LeaveIfError( sourceFile.Open(
- fs,layoutFile, EFileRead|EFileShareAny|EFileStreamText ));
- CleanupClosePushL( sourceFile );
-
- // Make all reads as from textfile.
- TFileText textSourceFile;
- textSourceFile.Set( sourceFile );
- TFileName layoutName = CreateLayoutNameL( textSourceFile );
-
- // rewind - just in case.
- textSourceFile.Seek( ESeekStart );
- TFileName oneline;
- bufferLayoutHdr.Append(KOpenBrace);
- bufferPMData.Append(KOpenBrace);
- TInt loop = 0;
- FOREVER
- {
- if( textSourceFile.Read(oneline) != KErrNone )
- {
- break;
- }
- // Add commas for all but first line
- if (loop != 0)
- {
- if ( loop <= KHeaderValues-1)
- {
- bufferLayoutHdr.Append(KComma);
- }
- else
- {
- if (loop != KHeaderValues)
- {
- bufferPMData.Append(KComma);
- }
- }
- if (loop==KHeaderValues)
- {
- bufferLayoutHdr.Append(_L(",QLatin1String(\""));
- bufferLayoutHdr.Append(layoutName);
- bufferLayoutHdr.Append(_L("\")"));
- }
- }
- // Remove pixel metrics name and ":"
- oneline = oneline.Mid(oneline.Find(KColon)+1);
- // Remove tab
- oneline = oneline.Mid(oneline.Find(KTab)+1);
- // remove crap from the end of line
- TLex lex(oneline);
- TInt nextValue = -666;
- User::LeaveIfError( lex.Val(nextValue) );
- if ( loop <= KHeaderValues-1)
- {
- bufferLayoutHdr.AppendNum(nextValue);
- }
- else
- {
- if (nextValue == -909)
- bufferPMData.Append(_L("ECommonStyleValue"));
- else
- bufferPMData.AppendNum(nextValue);
- }
- oneline.Zero();
- loop++;
- }
- file.Flush();
- bufferLayoutHdr.Append(KEndBraceWithCommaAndCRLF);
- bufferPMData.Append(KEndBraceWithCommaAndCRLF);
- CleanupStack::PopAndDestroy(); //sourceFile
- }
-
- if (fileCount > 0)
- {
- bufferLayoutHdr = bufferLayoutHdr.Left(bufferLayoutHdr.Length()-2);
- bufferPMData = bufferPMData.Left(bufferPMData.Length()-2);
- textFile.Write(bufferLayoutHdr);
- textFile.Write(KCRLF);
- textFile.Write(bufferPMData);
- }
- delete dirList;
-
- CleanupStack::PopAndDestroy(); //file
- }
-
-TFileName CPixelMetricsMapperAppUi::CreateLayoutNameL(TFileText& aFileHandle) const
-{
- aFileHandle.Seek(ESeekStart);
- // Layout data is deployed like this:
- // first line - height
- // second line - width
- TFileName lines;
- TFileName layoutName;
-
- TInt height = -666;
- TInt width = -666;
- // Collect name information.
- for (TInt i=0; i<6; i++)
- {
- User::LeaveIfError(aFileHandle.Read(lines));
- // Remove pixel metrics name and ":"
- lines = lines.Mid(lines.Find(KColon)+1);
- // Remove tab
- lines = lines.Mid(lines.Find(KTab)+1);
- TLex myLexer(lines);
- TInt error = KErrNone;
- if (i==0) //height is first
- {
- error = myLexer.Val(height);
- }
- if (i==1) //width is second
- {
- error = myLexer.Val(width);
- }
- User::LeaveIfError(error);
- }
-
- // Interpret results and write name to buffer.
- if ( (width == 240 && height == 320) ||
- (width == 320 && height == 240))
- {
- layoutName.Append(_L("QVGA "));
- }
- else if ( (width == 360 && height == 640) ||
- (width == 640 && height == 360))
- {
- layoutName.Append(_L("NHD "));
- }
- else if ( (width == 480 && height == 640) ||
- (width == 640 && height == 480))
- {
- layoutName.Append(_L("VGA "));
- }
- else if ( (width == 800 && height == 352) ||
- (width == 352 && height == 800))
- {
- layoutName.Append(_L("E90 "));
- }
- else if ( (width == 800 && height == 480) ||
- (width == 480 && height == 800) ||
- (width == 848 && height == 480) ||
- (width == 480 && height == 848) ||
- (width == 854 && height == 480) ||
- (width == 480 && height == 854))
- {
- layoutName.Append(_L("WVGA "));
- }
- else if ( (width == 480 && height == 320) ||
- (width == 320 && height == 480) ||
- (width == 640 && height == 240) ||
- (width == 240 && height == 640))
- {
- layoutName.Append(_L("HVGA "));
- }
- else
- {
- layoutName.Append(_L("Unknown "));
- layoutName.AppendNum(height);
- layoutName.Append(_L("x"));
- layoutName.AppendNum(width);
- }
- if (width > height)
- {
- layoutName.Append(_L("Landscape"));
- }
- else
- {
- layoutName.Append(_L("Portrait"));
- }
- return layoutName;
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CEikAppUi* CPixelMetricsMapperDocument::CreateAppUiL()
- {
- return( new ( ELeave ) CPixelMetricsMapperAppUi );
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CPixelMetricsMapperDocument::ConstructL()
- {
- }
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TUid CPixelMetricsMapperApplication::AppDllUid() const
- {
- return KUidPMMapperApplication;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-CApaDocument* CPixelMetricsMapperApplication::CreateDocumentL()
- {
- CPixelMetricsMapperDocument* document =
- new( ELeave ) CPixelMetricsMapperDocument( *this );
- CleanupStack::PushL( document );
- document->ConstructL();
- CleanupStack::Pop();
- return( document );
- }
-
-// ========================== OTHER EXPORTED FUNCTIONS =========================
-// ---------------------------------------------------------
-// NewApplication implements
-//
-// Creates an instance of application.
-//
-// Returns: an instance of CVtUiApp
-// ---------------------------------------------------------
-//
-LOCAL_C CApaApplication* NewApplication()
- {
- return new CPixelMetricsMapperApplication;
- }
-
-// ---------------------------------------------------------
-// E32Main implements
-//
-// It is called when executable is started.
-//
-// Returns: error code.
-// ---------------------------------------------------------
-//
-GLDEF_C TInt E32Main()
- {
- return EikStart::RunApplication( NewApplication );
- }
-
-// End of File
diff --git a/util/s60pixelmetrics/pm_mapperapp.h b/util/s60pixelmetrics/pm_mapperapp.h
deleted file mode 100644
index 0f17d67d38..0000000000
--- a/util/s60pixelmetrics/pm_mapperapp.h
+++ /dev/null
@@ -1,190 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the utility applications 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$
-**
-****************************************************************************/
-
-#ifndef PMMAPPERAPP_H
-#define PMMAPPERAPP_H
-
-// INCLUDES
-#include <eikapp.h>
-#include <eikdoc.h>
-#include <e32std.h>
-#include <aknViewAppUi.h>
-
-// CONSTANTS
-const TUid KUidPMMapperApplication = { 0x2002121F };
-
-
-// FORWARD DECLARATIONS
-class CPixelMetricsMapperView;
-class MAknsSkinInstance;
-
-// CLASS DECLARATION
-/**
-* CPixelMetricsMapperDocument
-*/
-class CPixelMetricsMapperDocument : public CEikDocument
- {
- public: // Constructors and destructor
-
- /**
- * Symbian 2nd phase constructor.
- */
- void ConstructL();
-
- /**
- * Constructor.
- */
- CPixelMetricsMapperDocument( CEikApplication& aApp )
- : CEikDocument( aApp ) {}
-
- /**
- * Destructor.
- */
- ~CPixelMetricsMapperDocument(){}
-
- public: // Functions from base classes
-
- /**
- * From CEikDocument.
- */
- CFileStore* OpenFileL(
- TBool /*aDoOpen*/,
- const TDesC& /*aFilename*/,
- RFs& /*aFs*/ )
- {
- return NULL;
- }
-
- private: // Functions from base classes
-
- /**
- * From CEikDocument.
- */
- CEikAppUi* CreateAppUiL();
- };
-
-/**
-* CPixelMetricsMapperAppUi
-*/
-class CPixelMetricsMapperAppUi : public CAknViewAppUi
- {
- public: // Constructors and destructor
-
- /**
- * Constructor.
- */
- CPixelMetricsMapperAppUi();
-
- /**
- * Symbian 2nd phase constructor.
- */
- void ConstructL();
-
- /**
- * Destructor.
- */
- ~CPixelMetricsMapperAppUi();
-
- private: // Functions from base classes
-
- /**
- * From CEikAppUi.
- */
- void HandleCommandL(TInt aCommand);
-
- /**
- * From CEikAppUi.
- */
- virtual TKeyResponse HandleKeyEventL(
- const TKeyEvent& aKeyEvent,
- TEventCode aType );
-
- private:
-
- /**
- * Shows text given.
- */
- void ShowL( const TDesC& aText, TBool& aLast, const TBool& aFileOutput = EFalse );
- void ShowSingleValueL(TInt& aPixelMetric, TInt& aValue, TBool& aLast);
- void ClearL();
- void CreateHeaderFileL() const;
-
- TFileName CreateLayoutNameL(TFileText& aFileHandle) const;
-
- private: // Data
-
- // Test view.
- CPixelMetricsMapperView* iView;
-
- CEikDialog* iDialog;
-
- TBool iFileOutputOn;
- TBool iMode;
-
- CFbsBitmap* icon;
- CFbsBitmap* iconMask;
-
- };
-
-
-/**
-* CPixelMetricsMapperApplication
-*/
-class CPixelMetricsMapperApplication : public CEikApplication
- {
- private: // Functions from base classes
-
- /**
- * From CApaApplication.
- */
- CApaDocument* CreateDocumentL();
-
- /**
- * From CApaApplication.
- */
- TUid AppDllUid() const;
- };
-
-
-#endif // PMMAPPERAPP_H
-
-
-// End of File
diff --git a/util/s60pixelmetrics/pm_mapperview.cpp b/util/s60pixelmetrics/pm_mapperview.cpp
deleted file mode 100644
index 5d805fb5bc..0000000000
--- a/util/s60pixelmetrics/pm_mapperview.cpp
+++ /dev/null
@@ -1,375 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the utility applications 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 FILES
-
-#include <eiklabel.h>
-#include <avkon.rsg>
-#include <aknviewappui.h>
-#include <aknconsts.h>
-
-#include "pm_mapper.hrh"
-#include <pm_mapper.rsg>
-#include "pm_mapperView.h"
-#include "pm_mapperApp.h"
-
-#include <aknlists.h>
-#include <avkon.hrh>
-#include <AknUtils.h>
-
-// -----------------------------------------------------------------------------
-// C++ constructor can NOT contain any code, that
-// might leave.
-// -----------------------------------------------------------------------------
-//
-CPixelMetricsMapperViewContainer::CPixelMetricsMapperViewContainer(): iCount( 1 )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CPixelMetricsMapperViewContainer::ConstructL( const TRect& aRect )
- {
- CreateWindowL();
- SetCanDrawOutsideRect();
-
- iTexts = new( ELeave ) CDesCArrayFlat( 10 );
- iTexts->AppendL( _L( "\tStarted." ) );
-
- iListbox = new( ELeave ) CAknSingleStyleListBox;
- iListbox->SetContainerWindowL( *this );
- iListbox->ConstructL( this, EAknListBoxViewerFlags );
-
- iListbox->Model()->SetItemTextArray( iTexts );
- iListbox->SetRect( TRect( aRect.Size() ) );
-
- iListbox->CreateScrollBarFrameL( ETrue );
- iListbox->ScrollBarFrame()->SetScrollBarVisibilityL(
- CEikScrollBarFrame::EOn,
- CEikScrollBarFrame::EOn );
-
- SetRect( aRect );
- iListbox->ActivateL();
- ActivateL();
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CPixelMetricsMapperViewContainer::ShowL( const TDesC& aString, TBool& aLast, const TBool& aFileOutput )
- {
- MDesCArray* itemList = iListbox->Model()->ItemTextArray();
- CDesCArray* itemArray = ( CDesCArray* ) itemList;
-
- itemArray->AppendL( aString );
-
- iListbox->HandleItemAdditionL();
- iListbox->SetCurrentItemIndex( iCount );
- iCount++;
- if ( aLast )
- {
- if (aFileOutput)
- {
- RFile file;
- RFs& fs = CEikonEnv::Static()->FsSession();
- TFileName fileName =_L("Layout_");
-
- TRect screenRect;
- AknLayoutUtils::LayoutMetricsRect(
- AknLayoutUtils::EApplicationWindow,
- screenRect );
-
- // Add screen dimensions
- TInt height = screenRect.Height();
- TInt width = screenRect.Width();
- fileName.AppendNum(height);
- fileName.Append('_');
- fileName.AppendNum(width);
-
- fileName.Append(_L(".txt"));
-
- TInt err=file.Open(fs,fileName,EFileStreamText|EFileWrite|EFileShareAny);
- if (err==KErrNotFound) // file does not exist - create it
- err=file.Create(fs,fileName,EFileStreamText|EFileWrite|EFileShareAny);
- else
- file.SetSize(0); //sweep the file
- TFileText textFile;
- textFile.Set(file);
- err = textFile.Seek(ESeekStart);
- if (err) User::InfoPrint(_L("File corrupted"));
-
- // Finally loop through all the entries:
- TInt idx = 0;
- for(;idx!=itemList->MdcaCount();idx++)
- {
- err = textFile.Write(itemList->MdcaPoint(idx));
- if (err) User::InfoPrint(_L("File corrupted"));
- }
- file.Close();
- }
- DrawNow();
- }
- }
-
-void CPixelMetricsMapperViewContainer::ClearL()
- {
- MDesCArray* itemList = iListbox->Model()->ItemTextArray();
- CDesCArray* itemArray = ( CDesCArray* ) itemList;
-
- itemArray->Reset();
-
- iListbox->HandleItemAdditionL();
- iCount = 0;
- DrawNow();
- }
-
-
-// -----------------------------------------------------------------------------
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CPixelMetricsMapperViewContainer::~CPixelMetricsMapperViewContainer()
- {
- delete iListbox;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CPixelMetricsMapperViewContainer::SizeChanged()
- {
- CCoeControl::SizeChanged();
- if ( iListbox )
- {
- iListbox->SetRect( Rect() );
- }
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TInt CPixelMetricsMapperViewContainer::CountComponentControls() const
- {
- return 1;
- }
-
-
-// -----------------------------------------------------------------------------
-// CTestAppViewContainer::ComponentControl
-//
-//
-// -----------------------------------------------------------------------------
-//
-CCoeControl* CPixelMetricsMapperViewContainer::ComponentControl(
- TInt /*aIndex*/ ) const
- {
- return iListbox;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CPixelMetricsMapperViewContainer::Draw( const TRect& /*aRect*/ ) const
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CPixelMetricsMapperViewContainer::HandleControlEventL(
- CCoeControl* /*aControl*/,
- TCoeEvent /*aEventType*/ )
- {
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TKeyResponse CPixelMetricsMapperViewContainer::OfferKeyEventL(
- const TKeyEvent& aKeyEvent,
- TEventCode aType )
- {
- if (aKeyEvent.iCode == EKeyUpArrow ||
- aKeyEvent.iCode == EKeyDownArrow )
- {
- return iListbox->OfferKeyEventL( aKeyEvent, aType );
- }
- return EKeyWasNotConsumed;
- }
-
-void CPixelMetricsMapperViewContainer::HandleResourceChange(TInt aType)
- {
- CCoeControl::HandleResourceChange( aType );
- if ( aType == KEikDynamicLayoutVariantSwitch )
- {
- TRect mainPaneRect;
- AknLayoutUtils::LayoutMetricsRect(
- AknLayoutUtils::EMainPane,
- mainPaneRect );
- SetRect( mainPaneRect );
-
- }
- if (iListbox)
- iListbox->HandleResourceChange(aType);
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CPixelMetricsMapperView::ShowL( const TDesC& aString, TBool& aLast, const TBool& aFileOutput )
- {
- iView->ShowL( aString, aLast, aFileOutput );
- }
-
-void CPixelMetricsMapperView::ClearL()
- {
- iView->ClearL();
- }
-
-
-// -----------------------------------------------------------------------------
-// Symbian 2nd phase constructor can leave.
-// -----------------------------------------------------------------------------
-//
-void CPixelMetricsMapperView::ConstructL()
- {
- BaseConstructL( R_PMMAPPER_VIEW );
- }
-
-
-// -----------------------------------------------------------------------------
-// Destructor.
-// -----------------------------------------------------------------------------
-//
-CPixelMetricsMapperView::~CPixelMetricsMapperView()
- {
- if ( iView )
- {
- AppUi()->RemoveFromViewStack( *this, iView );
- }
- delete iView;
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-TUid CPixelMetricsMapperView::Id() const
- {
- return TUid::Uid( EPMMapperViewId );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CPixelMetricsMapperView::HandleCommandL( TInt aCommand )
- {
- AppUi()->HandleCommandL( aCommand );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CPixelMetricsMapperView::HandleStatusPaneSizeChange()
- {
- if ( iView )
- {
- TRect cr = ClientRect();
- iView->SetRect( cr );
- }
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CPixelMetricsMapperView::DoActivateL(
- const TVwsViewId& /*aPrevViewId*/,
- TUid /*aCustomMessageId*/,
- const TDesC8& /*aCustomMessage*/ )
- {
- iView = new( ELeave ) CPixelMetricsMapperViewContainer;
-
- TRect cr = ClientRect();
- iView->ConstructL( cr );
- AppUi()->AddToViewStackL( *this, iView );
- }
-
-
-// -----------------------------------------------------------------------------
-//
-// -----------------------------------------------------------------------------
-//
-void CPixelMetricsMapperView::DoDeactivate()
- {
- if (iView)
- {
- AppUi()->RemoveFromViewStack( *this, iView );
- }
- delete iView;
- iView = NULL;
- }
-
-
-// End of File
diff --git a/util/s60pixelmetrics/pm_mapperview.h b/util/s60pixelmetrics/pm_mapperview.h
deleted file mode 100644
index b0ebb2bd15..0000000000
--- a/util/s60pixelmetrics/pm_mapperview.h
+++ /dev/null
@@ -1,228 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the utility applications 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$
-**
-****************************************************************************/
-
-#ifndef PMMAPPERVIEW_H
-#define PMMAPPERVIEW_H
-
-
-// INCLUDES
-#include <aknview.h>
-#include <EIKLBO.H>
-
-// CONSTANTS
-// FORWARD DECLARATIONS
-class CAknSingleStyleListBox;
-class CAknSettingStyleListBox;
-
-// CLASS DECLARATION
-
-/**
-* CPixelMetricsMapperViewContainer
-*
-*/
-class CPixelMetricsMapperViewContainer
-: public CCoeControl,
- public MCoeControlObserver
- {
- public: // Constructors and destructor
-
- /**
- * C++ constructor.
- */
- CPixelMetricsMapperViewContainer();
-
- /**
- * Symbian 2nd phase constructor.
- *
- * @param aRect Rectangle.
- */
- void ConstructL( const TRect& aRect );
-
- /**
- * Destructor.
- */
- ~CPixelMetricsMapperViewContainer();
-
-
- public: // New functions
-
- /**
- * Show the given string.
- *
- * @param aString The string to be shown.
- */
- void ShowL( const TDesC& aString, TBool& aLast, const TBool& aFileOutput = EFalse );
-
- void ClearL();
-
-
- public: // Functions from base classes
-
- /**
- * From CCoeControl.
- */
- TKeyResponse OfferKeyEventL(
- const TKeyEvent& aKeyEvent,
- TEventCode aType );
-
-
- void HandleResourceChange(TInt aType);
-
-
- private: // Functions from base classes
-
- /**
- * From CCoeControl.
- */
- void SizeChanged();
-
- /**
- * From CCoeControl.
- */
- TInt CountComponentControls() const;
-
- /**
- * From CCoeControl.
- */
- CCoeControl* ComponentControl( TInt aIndex ) const;
-
- /**
- * From CCoeControl.
- */
- void Draw( const TRect& aRect ) const;
-
-
- private: // Functions from base classes
-
- /**
- * From MCoeControlObserver.
- */
- void HandleControlEventL(
- CCoeControl* aControl,
- TCoeEvent aEventType );
-
-
- private: // Data
-
- // Texts.
- CDesCArray* iTexts;
-
- // Count.
- TInt iCount;
-
- // Listbox.
- CAknSingleStyleListBox* iListbox;
-
- };
-
-
-
-/**
-* CPixelMetricsMapperView
-*
-*
-* @since 1.0
-*/
-class CPixelMetricsMapperView : public CAknView
- {
- public: // Constructors and destructor
-
- /**
- * Symbian 2nd phase constructor.
- */
- void ConstructL();
-
- /**
- * Destructor.
- */
- ~CPixelMetricsMapperView();
-
-
- public: // Functions from base classes
-
- /**
- * From CAknView.
- */
- TUid Id() const;
-
- /**
- * From CAknView.
- */
- void HandleCommandL( TInt aCommand );
-
- /**
- * From CAknView.
- */
- void HandleStatusPaneSizeChange();
-
- /**
- * From CAknView.
- */
- void ShowL( const TDesC& aString, TBool& aLast, const TBool& aFileOutput =EFalse );
- void ClearL();
-
-
- private: // from CAknView
-
- /**
- * From CAknView.
- */
- void DoActivateL(
- const TVwsViewId& aPrevViewId,
- TUid aCustomMessageId,
- const TDesC8& aCustomMessage );
-
- /**
- * From CAknView.
- */
- void DoDeactivate();
-
-
- private: // Data
-
- // The view container.
- CPixelMetricsMapperViewContainer* iView;
-
- };
-
-#endif // PMMAPPERVIEW_H
-
-// End of File
diff --git a/util/s60theme/README b/util/s60theme/README
deleted file mode 100644
index da4e81a6a9..0000000000
--- a/util/s60theme/README
+++ /dev/null
@@ -1,31 +0,0 @@
-'s60theme' is a commandline tool which converts Carbide.ui themes into
-an intermediate binary format that can be read by the simulated
-QS60Style. So, for example Designer (standalone or in Carbide) will
-be able to display a realistic S60 Ui.
-
-The intermediate binary format consists of hashes of QPictures and
-QColors, streamed to a QByteArray and compressed. QS60Style could not load
-the Carbide.ui theme directly because SVG handling is unfortunately
-not part of QtGui, and would require a dependency on the QtSvg module.
-
-Also, 's60theme' uses QWebkit to parse the SVG graphics (inspired by
-Ariya's 'WebKit-based SVG rasterizer' labs post). QtSvg had some issues
-with the SVGs that come with Carbide.ui.
-
-Usage examples:
-> s60theme "com.nokia.tools.theme.s60.50_3.4.0.0\config\model" Default.blob
- (Reads the default 's60.50' theme and saves it as 'Default.blob')
-
-> s60theme "Eclipse\Examples\Haze\Haze.tdf" Haze.blob
- (Reads the Haze theme and saves it as 'Haze.blob')
-
-To use the blob in a Qt application, get an instance of a QS60Style and call
- style->loadS60ThemeFromBlob("Theme.blob");
-
-The simulated QS60Style will, in its constructor by default, try to load a
-":/s60Stylethemes/Default.blob". If your application has that a resource with
-exactly that filename, it will be used by default.
-'Default.blob' is not included in the current Qt source package. But it can
-easily be created with 's60theme' and a fresh install of Carbide.ui
-
-Visit http://www.forum.nokia.com for details about Carbide.ui
diff --git a/util/s60theme/main.cpp b/util/s60theme/main.cpp
deleted file mode 100644
index 702b36731b..0000000000
--- a/util/s60theme/main.cpp
+++ /dev/null
@@ -1,110 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the tools applications 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 <QtGui>
-#include "s60themeconvert.h"
-
-<<<<<<< HEAD
-int help()
-=======
-#ifndef QT_NO_ACCESSIBILITY
-
-#include "qaccessible.h"
-
-QT_BEGIN_NAMESPACE
-
-/*!
- \class QAccessiblePlugin
- \brief The QAccessiblePlugin class provides an abstract base for
- accessibility plugins.
-
- \ingroup plugins
- \ingroup accessibility
- \inmodule QtWidgets
-
- Writing an accessibility plugin is achieved by subclassing this
- base class, reimplementing the pure virtual functions keys() and
- create(), and exporting the class with the Q_EXPORT_PLUGIN2()
- macro.
-
- \sa QAccessibleBridgePlugin, {How to Create Qt Plugins}
-*/
-
-/*!
- Constructs an accessibility plugin with the given \a parent. This
- is invoked automatically by the Q_EXPORT_PLUGIN2() macro.
-*/
-QAccessiblePlugin::QAccessiblePlugin(QObject *parent)
- : QObject(parent)
->>>>>>> Move the documentation for the classes to their modules.
-{
- qDebug() << "Usage: s60theme [modeldir|theme.tdf] output.blob";
- qDebug() << "";
- qDebug() << "Options:";
- qDebug() << " modeldir: Theme 'model' directory in Carbide.ui tree";
- qDebug() << " theme.tdf: Theme .tdf file";
- qDebug() << " output.blob: Theme blob output filename";
- qDebug() << "";
- qDebug() << "s60theme takes an S60 theme from Carbide.ui and converts";
- qDebug() << "it into a compact, binary format, that can be directly loaded by";
- qDebug() << "the QtS60Style.";
- qDebug() << "";
- qDebug() << "Visit http://www.forum.nokia.com for details about Carbide.ui";
- return 1;
-}
-
-int main(int argc, char *argv[])
-{
- if (argc != 3)
- return help();
-
- QApplication app(argc, argv);
-
- const QString input = QString::fromLatin1(argv[1]);
- const QFileInfo inputInfo(input);
- const QString output = QString::fromLatin1(argv[2]);
- if (inputInfo.isDir())
- return S60ThemeConvert::convertDefaultThemeToBlob(input, output) ? 0 : 1;
- else if (inputInfo.suffix().compare(QString::fromLatin1("tdf"), Qt::CaseInsensitive) == 0)
- return S60ThemeConvert::convertTdfToBlob(input, output) ? 0 : 1;
-
- return help();
-}
diff --git a/util/s60theme/s60theme.pro b/util/s60theme/s60theme.pro
deleted file mode 100644
index 83c0cf2357..0000000000
--- a/util/s60theme/s60theme.pro
+++ /dev/null
@@ -1,12 +0,0 @@
-SOURCES += \
- s60themeconvert.cpp \
- main.cpp
-
-HEADERS += \
- s60themeconvert.h
-
-QT += \
- webkit
-
-CONFIG += \
- console
diff --git a/util/s60theme/s60themeconvert.cpp b/util/s60theme/s60themeconvert.cpp
deleted file mode 100644
index b7c103696f..0000000000
--- a/util/s60theme/s60themeconvert.cpp
+++ /dev/null
@@ -1,312 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the tools applications 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 "s60themeconvert.h"
-
-#include <QtGui>
-#include <QtWebKit>
-
-static const int pictureSize = 256;
-static const char* const msgPartNotInTdf = " Warning: The .tdf file does not have a part for ";
-static const char* const msgSvgNotFound = " Fatal: Could not find part .svg ";
-
-void dumpPartPictures(const QHash<QString, QPicture> &partPictures) {
- foreach (const QString &partKey, partPictures.keys()) {
- QPicture partPicture = partPictures.value(partKey);
- qDebug() << partKey << partPicture.boundingRect();
- QImage image(partPicture.boundingRect().size(), QImage::Format_ARGB32);
- image.fill(Qt::transparent);
- QPainter p(&image);
- partPicture.play(&p);
- image.save(partKey + QString::fromLatin1(".png"));
- }
-}
-
-void dumpColors(const QHash<QPair<QString, int>, QColor> &colors) {
- foreach (const QColor &color, colors.values()) {
- const QPair<QString, int> key = colors.key(color);
- qDebug() << key << color;
- }
-}
-
-class WebKitSVGRenderer : public QWebView
-{
- Q_OBJECT
-
-public:
- WebKitSVGRenderer(QWidget *parent = 0);
- QPicture svgToQPicture(const QString &svgFileName);
-
-private slots:
- void loadFinishedSlot(bool ok);
-
-private:
- QEventLoop m_loop;
- QPicture m_result;
-};
-
-WebKitSVGRenderer::WebKitSVGRenderer(QWidget *parent)
- : QWebView(parent)
-{
-
- connect(this, SIGNAL(loadFinished(bool)), SLOT(loadFinishedSlot(bool)));
- setFixedSize(pictureSize, pictureSize);
- QPalette pal = palette();
- pal.setColor(QPalette::Base, Qt::transparent);
- setPalette(pal);
-}
-
-QPicture WebKitSVGRenderer::svgToQPicture(const QString &svgFileName)
-{
- load(QUrl::fromLocalFile(svgFileName));
- m_loop.exec();
- return m_result;
-}
-
-void WebKitSVGRenderer::loadFinishedSlot(bool ok)
-{
- // crude error-checking
- if (!ok)
- qDebug() << "Failed loading " << qPrintable(url().toString());
-
- page()->mainFrame()->evaluateJavaScript(QString::fromLatin1(
- "document.rootElement.preserveAspectRatio.baseVal.align = SVGPreserveAspectRatio.SVG_PRESERVEASPECTRATIO_NONE;"
- "document.rootElement.style.width = '100%';"
- "document.rootElement.style.height = '100%';"
- "document.rootElement.width.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE, 100);"
- "document.rootElement.height.baseVal.newValueSpecifiedUnits(SVGLength.SVG_LENGTHTYPE_PERCENTAGE, 100);"
- ));
-
- m_result = QPicture(); // "Clear"
- QPainter p(&m_result);
- page()->mainFrame()->render(&p);
- p.end();
- m_result.setBoundingRect(QRect(0, 0, pictureSize, pictureSize));
-
- m_loop.exit();
-}
-
-QPair<QString, int> colorIdPair(const QString &colorID)
-{
- QPair<QString, int> result;
- QString idText = colorID;
- idText.remove(QRegExp(QString::fromLatin1("[0-9]")));
- if (QS60Style::colorListKeys().contains(idText)) {
- QString idNumber = colorID;
- idNumber.remove(QRegExp(QString::fromLatin1("[a-zA-Z]")));
- result.first = idText;
- result.second = idNumber.toInt();
- }
- return result;
-}
-
-bool parseTdfFile(const QString &tdfFile,
- QHash<QString, QString> &partSvgs,
- QHash<QPair<QString, int>, QColor> &colors)
-{
- QFile file(tdfFile);
- if (!file.open(QIODevice::ReadOnly))
- return false;
-
- const QLatin1String elementKey("element");
- const QLatin1String partKey("part");
- const QLatin1String elementIdKey("id");
- const QLatin1String layerKey("layer");
- const QLatin1String layerFileNameKey("filename");
- const QLatin1String layerColourrgbKey("colourrgb");
- const QString annoyingPrefix = QString::fromLatin1("S60_2_6%");
-
- QXmlStreamReader reader(&file);
- QString partId;
- QPair<QString, int> colorId;
- // Somebody with a sense of aesthetics may implement proper XML parsing, here.
- while (!reader.atEnd()) {
- const QXmlStreamReader::TokenType token = reader.readNext();
- switch (token) {
- case QXmlStreamReader::StartElement:
- if (reader.name() == elementKey || reader.name() == partKey) {
- QString id = reader.attributes().value(elementIdKey).toString();
- if (QS60Style::partKeys().contains(id))
- partId = id;
- else if (!id.isEmpty() && id.at(id.length()-1).isDigit())
- colorId = colorIdPair(id);
- else if (QS60Style::partKeys().contains(id.mid(annoyingPrefix.length())))
- partId = id.mid(annoyingPrefix.length());
- } else if(reader.name() == layerKey) {
- if (!partId.isEmpty()) {
- const QString svgFile = reader.attributes().value(layerFileNameKey).toString();
- partSvgs.insert(partId, svgFile);
- partId.clear();
- } else if (!colorId.first.isEmpty()) {
- const QColor colorValue(reader.attributes().value(layerColourrgbKey).toString().toInt(NULL, 16));
- colors.insert(colorId, colorValue);
- colorId.first.clear();
- }
- }
- break;
- case QXmlStreamReader::EndElement:
- if (reader.tokenString() == elementKey || reader.name() == partKey)
- partId.clear();
- break;
- default:
- break;
- }
- }
- return true;
-}
-
-bool loadThemeFromTdf(const QString &tdfFile,
- QHash<QString, QPicture> &partPictures,
- QHash<QPair<QString, int>, QColor> &colors)
-{
- QHash<QString, QString> parsedPartSvgs;
- QHash<QString, QPicture> parsedPartPictures;
- QHash<QPair<QString, int>, QColor> parsedColors;
- bool success = parseTdfFile(tdfFile, parsedPartSvgs, parsedColors);
- if (!success)
- return false;
- const QString tdfBasePath = QFileInfo(tdfFile).absolutePath();
- WebKitSVGRenderer renderer;
- foreach (const QString &partKey, QS60Style::partKeys()) {
- qDebug() << partKey;
- QString tdfFullName;
- if (parsedPartSvgs.contains(partKey)) {
- tdfFullName = tdfBasePath + QDir::separator() + parsedPartSvgs.value(partKey);
- } else {
- qWarning() << msgPartNotInTdf << partKey;
- tdfFullName = tdfBasePath + QDir::separator() + partKey + QLatin1String(".svg");
- }
- if (!QFile(tdfFullName).exists()) {
- qWarning() << msgSvgNotFound << QDir::toNativeSeparators(tdfFullName);
- return false;
- }
- const QPicture partPicture = renderer.svgToQPicture(tdfFullName);
- parsedPartPictures.insert(partKey, partPicture);
- }
-// dumpPartPictures(parsedPartPictures);
-// dumpColors(colors);
- partPictures = parsedPartPictures;
- colors = parsedColors;
- return true;
-}
-
-bool S60ThemeConvert::convertTdfToBlob(const QString &themeTdf, const QString &themeBlob)
-{
- QHash<QString, QPicture> partPictures;
- QHash<QPair<QString, int>, QColor> colors;
-
- if (!::loadThemeFromTdf(themeTdf, partPictures, colors))
- return false;
-
- QS60Style style;
- style.setS60Theme(partPictures, colors);
- return style.saveS60ThemeToBlob(themeBlob);
-}
-
-bool parseDesignFile(const QString &designFile,
- QHash<QPair<QString, int>, QColor> &colors)
-{
- const QLatin1String elementKey("element");
- const QLatin1String elementIdKey("id");
- const QLatin1String colorKey("defaultcolour_rgb");
- QFile file(designFile);
- if (!file.open(QIODevice::ReadOnly))
- return false;
- QXmlStreamReader reader(&file);
- QPair<QString, int> colorId;
- // Somebody with a sense of aesthetics may implement proper XML parsing, here.
- while (!reader.atEnd()) {
- const QXmlStreamReader::TokenType token = reader.readNext();
- switch (token) {
- case QXmlStreamReader::StartElement:
- if (reader.name() == elementKey) {
- const QString colorString = reader.attributes().value(colorKey).toString();
- if (!colorString.isEmpty()) {
- const QString colorId = reader.attributes().value(elementIdKey).toString();
- colors.insert(colorIdPair(colorId), colorString.toInt(NULL, 16));
- }
- }
- default:
- break;
- }
- }
- return true;
-}
-
-bool loadDefaultTheme(const QString &themePath,
- QHash<QString, QPicture> &partPictures,
- QHash<QPair<QString, int>, QColor> &colors)
-{
- const QDir dir(themePath);
- if (!dir.exists())
- return false;
-
- if (!parseDesignFile(themePath + QDir::separator() + QString::fromLatin1("defaultdesign.xml"), colors))
- return false;
-
- WebKitSVGRenderer renderer;
- foreach (const QString &partKey, QS60Style::partKeys()) {
- const QString partFileName = partKey + QLatin1String(".svg");
- const QString partFile(dir.absolutePath() + QDir::separator() + partFileName);
- if (!QFile::exists(partFile)) {
- qWarning() << msgSvgNotFound << partFileName;
- return false;
- }
- const QPicture partPicture = renderer.svgToQPicture(partFile);
- partPictures.insert(partKey, partPicture);
- }
- return true;
-}
-
-bool S60ThemeConvert::convertDefaultThemeToBlob(const QString &themePath, const QString &themeBlob)
-{
- QHash<QString, QPicture> partPictures;
- QHash<QPair<QString, int>, QColor> colors;
-
- if (!::loadDefaultTheme(themePath, partPictures, colors))
- return false;
-
- QS60Style style;
- style.setS60Theme(partPictures, colors);
- return style.saveS60ThemeToBlob(themeBlob);
-}
-
-#include "s60themeconvert.moc"
diff --git a/util/s60theme/s60themeconvert.h b/util/s60theme/s60themeconvert.h
deleted file mode 100644
index 8f855c1efd..0000000000
--- a/util/s60theme/s60themeconvert.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
-**
-** This file is part of the tools applications 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$
-**
-****************************************************************************/
-
-#ifndef S60THEMECONVERT_H
-#define S60THEMECONVERT_H
-
-#include <QString>
-
-class S60ThemeConvert
-{
-public:
- static bool convertTdfToBlob(const QString &themeTdf, const QString &themeBlob);
- static bool convertDefaultThemeToBlob(const QString &themePath, const QString &themeBlob);
-};
-
-#endif // S60THEMECONVERT_H
diff --git a/util/scripts/make_qfeatures_dot_h b/util/scripts/make_qfeatures_dot_h
index e15590b76a..97c7779ac4 100755
--- a/util/scripts/make_qfeatures_dot_h
+++ b/util/scripts/make_qfeatures_dot_h
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is part of the test suite of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
@@ -133,8 +133,7 @@ print OUT
'/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the QtCore module of the Qt Toolkit.
**
@@ -167,6 +166,7 @@ print OUT
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/unicode/codecs/big5/main.cpp b/util/unicode/codecs/big5/main.cpp
index 49b7ffb275..499019a30c 100644
--- a/util/unicode/codecs/big5/main.cpp
+++ b/util/unicode/codecs/big5/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
diff --git a/util/unicode/main.cpp b/util/unicode/main.cpp
index 58a65aa53a..8ba992f72b 100644
--- a/util/unicode/main.cpp
+++ b/util/unicode/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -2644,8 +2644,7 @@ int main(int, char **)
"/****************************************************************************\n"
"**\n"
"** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).\n"
- "** All rights reserved.\n"
- "** Contact: Nokia Corporation (qt-info@nokia.com)\n"
+ "** Contact: http://www.qt-project.org/\n"
"**\n"
"** This file is part of the QtCore module of the Qt Toolkit.\n"
"**\n"
@@ -2678,6 +2677,7 @@ int main(int, char **)
"**\n"
"**\n"
"**\n"
+ "**\n"
"** $QT_END_LICENSE$\n"
"**\n"
"****************************************************************************/\n\n";
diff --git a/util/unicode/writingSystems.sh b/util/unicode/writingSystems.sh
index c4af431bb3..22ec30336f 100755
--- a/util/unicode/writingSystems.sh
+++ b/util/unicode/writingSystems.sh
@@ -2,8 +2,7 @@
#############################################################################
##
## Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-## All rights reserved.
-## Contact: Nokia Corporation (qt-info@nokia.com)
+## Contact: http://www.qt-project.org/
##
## This file is the build configuration utility of the Qt Toolkit.
##
@@ -36,6 +35,7 @@
##
##
##
+##
## $QT_END_LICENSE$
##
#############################################################################
diff --git a/util/xkbdatagen/main.cpp b/util/xkbdatagen/main.cpp
index 1371378534..9919345d95 100644
--- a/util/xkbdatagen/main.cpp
+++ b/util/xkbdatagen/main.cpp
@@ -1,8 +1,7 @@
/****************************************************************************
**
** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Contact: http://www.qt-project.org/
**
** This file is part of the utils of the Qt Toolkit.
**
@@ -35,6 +34,7 @@
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
@@ -417,8 +417,7 @@ int main(int argc, char **argv)
printf("/****************************************************************************\n"
"**\n"
"** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).\n"
- "** All rights reserved.\n"
- "** Contact: Nokia Corporation (qt-info@nokia.com)\n"
+ "** Contact: http://www.qt-project.org/\n"
"**\n"
"** This file is part of the QtGui module of the Qt Toolkit.\n"
"**\n"
@@ -451,6 +450,7 @@ int main(int argc, char **argv)
"**\n"
"**\n"
"**\n"
+ "**\n"
"** $QT_END_LICENSE$\n"
"**\n"
"****************************************************************************/\n"